@urmzd/github-insights 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/.gitattributes +28 -0
  2. package/.github/dependabot.yml +6 -0
  3. package/.github/pull_request_template.md +14 -0
  4. package/.github/workflows/ci.yml +93 -0
  5. package/.github/workflows/release.yml +59 -0
  6. package/.nvmrc +1 -0
  7. package/.pre-commit-config.yaml +5 -0
  8. package/AGENTS.md +69 -0
  9. package/CHANGELOG.md +260 -0
  10. package/CONTRIBUTING.md +87 -0
  11. package/LICENSE +190 -0
  12. package/README.md +188 -0
  13. package/action.yml +45 -0
  14. package/biome.json +40 -0
  15. package/examples/classic/README.md +9 -0
  16. package/examples/classic/index.svg +14 -0
  17. package/examples/classic/metrics-calendar.svg +14 -0
  18. package/examples/classic/metrics-complexity.svg +14 -0
  19. package/examples/classic/metrics-contributions.svg +14 -0
  20. package/examples/classic/metrics-expertise.svg +14 -0
  21. package/examples/classic/metrics-languages.svg +14 -0
  22. package/examples/classic/metrics-pulse.svg +14 -0
  23. package/examples/ecosystem/README.md +59 -0
  24. package/examples/ecosystem/index.svg +14 -0
  25. package/examples/ecosystem/metrics-calendar.svg +14 -0
  26. package/examples/ecosystem/metrics-complexity.svg +14 -0
  27. package/examples/ecosystem/metrics-contributions.svg +14 -0
  28. package/examples/ecosystem/metrics-expertise.svg +14 -0
  29. package/examples/ecosystem/metrics-languages.svg +14 -0
  30. package/examples/ecosystem/metrics-pulse.svg +14 -0
  31. package/examples/minimal/README.md +9 -0
  32. package/examples/minimal/index.svg +14 -0
  33. package/examples/minimal/metrics-calendar.svg +14 -0
  34. package/examples/minimal/metrics-complexity.svg +14 -0
  35. package/examples/minimal/metrics-contributions.svg +14 -0
  36. package/examples/minimal/metrics-expertise.svg +14 -0
  37. package/examples/minimal/metrics-languages.svg +14 -0
  38. package/examples/minimal/metrics-pulse.svg +14 -0
  39. package/examples/modern/README.md +111 -0
  40. package/examples/modern/index.svg +14 -0
  41. package/examples/modern/metrics-calendar.svg +14 -0
  42. package/examples/modern/metrics-complexity.svg +14 -0
  43. package/examples/modern/metrics-contributions.svg +14 -0
  44. package/examples/modern/metrics-expertise.svg +14 -0
  45. package/examples/modern/metrics-languages.svg +14 -0
  46. package/examples/modern/metrics-pulse.svg +14 -0
  47. package/llms.txt +24 -0
  48. package/metrics/index.svg +14 -0
  49. package/metrics/metrics-calendar.svg +14 -0
  50. package/metrics/metrics-complexity.svg +14 -0
  51. package/metrics/metrics-contributions.svg +14 -0
  52. package/metrics/metrics-domains.svg +14 -0
  53. package/metrics/metrics-expertise.svg +14 -0
  54. package/metrics/metrics-languages.svg +14 -0
  55. package/metrics/metrics-pulse.svg +14 -0
  56. package/metrics/metrics-tech-stack.svg +14 -0
  57. package/package.json +35 -0
  58. package/skills/github-insights/SKILL.md +237 -0
  59. package/sr.yaml +16 -0
  60. package/src/__fixtures__/repos.ts +84 -0
  61. package/src/api.ts +729 -0
  62. package/src/components/bar-chart.test.tsx +38 -0
  63. package/src/components/bar-chart.tsx +54 -0
  64. package/src/components/contribution-calendar.test.tsx +44 -0
  65. package/src/components/contribution-calendar.tsx +94 -0
  66. package/src/components/contribution-cards.test.tsx +36 -0
  67. package/src/components/contribution-cards.tsx +58 -0
  68. package/src/components/donut-chart.test.tsx +36 -0
  69. package/src/components/donut-chart.tsx +102 -0
  70. package/src/components/full-svg.test.tsx +54 -0
  71. package/src/components/full-svg.tsx +59 -0
  72. package/src/components/project-cards.test.tsx +46 -0
  73. package/src/components/project-cards.tsx +66 -0
  74. package/src/components/section.test.tsx +69 -0
  75. package/src/components/section.tsx +79 -0
  76. package/src/components/stat-cards.test.tsx +32 -0
  77. package/src/components/stat-cards.tsx +57 -0
  78. package/src/components/style-defs.test.tsx +26 -0
  79. package/src/components/style-defs.tsx +27 -0
  80. package/src/components/tech-highlights.test.tsx +63 -0
  81. package/src/components/tech-highlights.tsx +109 -0
  82. package/src/config.test.ts +127 -0
  83. package/src/config.ts +103 -0
  84. package/src/index.ts +363 -0
  85. package/src/jsx-factory.test.tsx +86 -0
  86. package/src/jsx-factory.ts +46 -0
  87. package/src/jsx.d.ts +6 -0
  88. package/src/metrics.test.ts +669 -0
  89. package/src/metrics.ts +365 -0
  90. package/src/parsers.test.ts +247 -0
  91. package/src/parsers.ts +146 -0
  92. package/src/readme.test.ts +189 -0
  93. package/src/readme.ts +70 -0
  94. package/src/svg-utils.test.ts +66 -0
  95. package/src/svg-utils.ts +33 -0
  96. package/src/templates.test.ts +412 -0
  97. package/src/templates.ts +296 -0
  98. package/src/theme.ts +33 -0
  99. package/src/types.ts +235 -0
  100. package/teasr.toml +14 -0
  101. package/tsconfig.json +21 -0
  102. package/vitest.config.ts +12 -0
@@ -0,0 +1,14 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="1759" viewBox="0 0 808 1759"><defs><style>
2
+ .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; }
3
+ .t-h { font-size: 13px; fill: #c9d1d9; letter-spacing: 1.5px; font-weight: 600; }
4
+ .t-sub { font-size: 11px; fill: #6e7681; }
5
+ .t-label { font-size: 12px; fill: #8b949e; }
6
+ .t-value { font-size: 11px; fill: #6e7681; }
7
+ .t-subhdr { font-size: 11px; fill: #8b949e; letter-spacing: 1px; font-weight: 600; }
8
+ .t-stat-label { font-size: 10px; fill: #8b949e; font-weight: 600; }
9
+ .t-stat-value { font-size: 22px; font-weight: 700; }
10
+ .t-card-title { font-size: 12px; fill: #58a6ff; font-weight: 700; }
11
+ .t-card-detail { font-size: 11px; fill: #8b949e; }
12
+ .t-pill { font-size: 11px; font-weight: 600; }
13
+ .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
+ </style></defs><rect width="808" height="1759" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">AT A GLANCE</text><text x="24" y="56" class="t t-sub">Contribution activity over the past year</text><rect x="24" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="38" cy="82" r="4" fill="#58a6ff"/><text x="48" y="86" class="t t-stat-label">COMMITS</text><text x="94" y="118" fill="#58a6ff" class="t t-stat-value" text-anchor="middle">1,049</text><rect x="179" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="193" cy="82" r="4" fill="#3fb950"/><text x="203" y="86" class="t t-stat-label">PRS</text><text x="249" y="118" fill="#3fb950" class="t t-stat-value" text-anchor="middle">3</text><rect x="334" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="348" cy="82" r="4" fill="#d29922"/><text x="358" y="86" class="t t-stat-label">REVIEWS</text><text x="404" y="118" fill="#d29922" class="t t-stat-value" text-anchor="middle">5</text><rect x="489" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="503" cy="82" r="4" fill="#bc8cff"/><text x="513" y="86" class="t t-stat-label">REPOS</text><text x="559" y="118" fill="#bc8cff" class="t t-stat-value" text-anchor="middle">24</text><text x="24" y="184" class="t t-h">LANGUAGES</text><text x="24" y="200" class="t t-sub">By bytes of code across all public repos</text><circle cx="114" cy="300" r="70" fill="none" stroke="#00ADD8" stroke-width="28" stroke-dasharray="124.03007796372502 315.792893538846" stroke-dashoffset="0" transform="rotate(-90 114 300)" opacity="0.85"/><circle cx="114" cy="300" r="70" fill="none" stroke="#dea584" stroke-width="28" stroke-dasharray="109.07609693263761 330.7468745699334" stroke-dashoffset="-124.03007796372502" transform="rotate(-90 114 300)" opacity="0.85"/><circle cx="114" cy="300" r="70" fill="none" stroke="#3178c6" stroke-width="28" stroke-dasharray="103.35839830310418 336.4645731994668" stroke-dashoffset="-233.10617489636263" transform="rotate(-90 114 300)" opacity="0.85"/><circle cx="114" cy="300" r="70" fill="none" stroke="#3D6117" stroke-width="28" stroke-dasharray="20.231856689118267 419.59111481345275" stroke-dashoffset="-336.4645731994668" transform="rotate(-90 114 300)" opacity="0.85"/><circle cx="114" cy="300" r="70" fill="none" stroke="#3572A5" stroke-width="28" stroke-dasharray="17.15309588860027 422.66987561397076" stroke-dashoffset="-356.6964298885851" transform="rotate(-90 114 300)" opacity="0.85"/><circle cx="114" cy="300" r="70" fill="none" stroke="#89e051" stroke-width="28" stroke-dasharray="16.713272917097697 423.1096985854733" stroke-dashoffset="-373.84952577718536" transform="rotate(-90 114 300)" opacity="0.85"/><circle cx="114" cy="300" r="70" fill="none" stroke="#a52a22" stroke-width="28" stroke-dasharray="7.916813487046279 431.90615801552474" stroke-dashoffset="-390.56279869428306" transform="rotate(-90 114 300)" opacity="0.85"/><circle cx="114" cy="300" r="70" fill="none" stroke="#b07219" stroke-width="28" stroke-dasharray="6.597344572538565 433.22562693003243" stroke-dashoffset="-398.47961218132934" transform="rotate(-90 114 300)" opacity="0.85"/><circle cx="114" cy="300" r="70" fill="none" stroke="#000080" stroke-width="28" stroke-dasharray="6.157521601035993 433.66544990153506" stroke-dashoffset="-405.07695675386793" transform="rotate(-90 114 300)" opacity="0.85"/><circle cx="114" cy="300" r="70" fill="none" stroke="#e34c26" stroke-width="28" stroke-dasharray="5.717698629533424 434.1052728730376" stroke-dashoffset="-411.2344783549039" transform="rotate(-90 114 300)" opacity="0.85"/><text x="114" y="305" class="t" fill="#c9d1d9" font-size="14" font-weight="700" text-anchor="middle">10</text><text x="114" y="320" class="t" fill="#6e7681" font-size="10" text-anchor="middle">languages</text><rect x="244" y="220" width="12" height="12" rx="2" fill="#00ADD8" opacity="0.85"/><text x="264" y="230" class="t t-label">Go</text><text x="444" y="230" class="t t-value" text-anchor="end">28.2%</text><rect x="244" y="244" width="12" height="12" rx="2" fill="#dea584" opacity="0.85"/><text x="264" y="254" class="t t-label">Rust</text><text x="444" y="254" class="t t-value" text-anchor="end">24.8%</text><rect x="244" y="268" width="12" height="12" rx="2" fill="#3178c6" opacity="0.85"/><text x="264" y="278" class="t t-label">TypeScript</text><text x="444" y="278" class="t t-value" text-anchor="end">23.5%</text><rect x="244" y="292" width="12" height="12" rx="2" fill="#3D6117" opacity="0.85"/><text x="264" y="302" class="t t-label">TeX</text><text x="444" y="302" class="t t-value" text-anchor="end">4.6%</text><rect x="244" y="316" width="12" height="12" rx="2" fill="#3572A5" opacity="0.85"/><text x="264" y="326" class="t t-label">Python</text><text x="444" y="326" class="t t-value" text-anchor="end">3.9%</text><rect x="244" y="340" width="12" height="12" rx="2" fill="#89e051" opacity="0.85"/><text x="264" y="350" class="t t-label">Shell</text><text x="444" y="350" class="t t-value" text-anchor="end">3.8%</text><rect x="244" y="364" width="12" height="12" rx="2" fill="#a52a22" opacity="0.85"/><text x="264" y="374" class="t t-label">Jinja</text><text x="444" y="374" class="t t-value" text-anchor="end">1.8%</text><rect x="244" y="388" width="12" height="12" rx="2" fill="#b07219" opacity="0.85"/><text x="264" y="398" class="t t-label">Java</text><text x="444" y="398" class="t t-value" text-anchor="end">1.5%</text><rect x="244" y="412" width="12" height="12" rx="2" fill="#000080" opacity="0.85"/><text x="264" y="422" class="t t-label">Lua</text><text x="444" y="422" class="t t-value" text-anchor="end">1.4%</text><rect x="244" y="436" width="12" height="12" rx="2" fill="#e34c26" opacity="0.85"/><text x="264" y="446" class="t t-label">HTML</text><text x="444" y="446" class="t t-value" text-anchor="end">1.3%</text><text x="24" y="516" class="t t-h">EXPERTISE</text><text x="24" y="532" class="t t-sub">Curated from dependencies, topics, and languages via AI analysis</text><text x="24" y="556" class="t t-subhdr">SYSTEMS PROGRAMMING &amp; CLI TOOLS</text><rect x="24" y="568" width="700" height="18" rx="4" fill="#58a6ff" fill-opacity="0.15"/><rect x="24" y="568" width="665" height="18" rx="4" fill="#58a6ff" fill-opacity="0.85"/><text x="734" y="581" class="t t-value">95%</text><text x="24" y="602" class="t t-card-detail">Go · Rust · Wails · Chezmoi · Nix</text><text x="24" y="630" class="t t-subhdr">MACHINE LEARNING &amp; AI</text><rect x="24" y="642" width="700" height="18" rx="4" fill="#3fb950" fill-opacity="0.15"/><rect x="24" y="642" width="630" height="18" rx="4" fill="#3fb950" fill-opacity="0.85"/><text x="734" y="655" class="t t-value">90%</text><text x="24" y="676" class="t t-card-detail">PyTorch · TensorFlow · Keras · Transformers · CNNs</text><text x="24" y="704" class="t t-subhdr">WEB DEVELOPMENT &amp; STATIC SITES</text><rect x="24" y="716" width="700" height="18" rx="4" fill="#d29922" fill-opacity="0.15"/><rect x="24" y="716" width="595" height="18" rx="4" fill="#d29922" fill-opacity="0.85"/><text x="734" y="729" class="t t-value">85%</text><text x="24" y="750" class="t t-card-detail">Astro · React · TypeScript · Tailwind CSS · MDX</text><text x="24" y="778" class="t t-subhdr">DEVOPS &amp; CI/CD AUTOMATION</text><rect x="24" y="790" width="700" height="18" rx="4" fill="#f85149" fill-opacity="0.15"/><rect x="24" y="790" width="560" height="18" rx="4" fill="#f85149" fill-opacity="0.85"/><text x="734" y="803" class="t t-value">80%</text><text x="24" y="824" class="t t-card-detail">GitHub Actions · Docker · Semantic Release · CI/CD · Embed-src</text><text x="24" y="852" class="t t-subhdr">KNOWLEDGE GRAPHS &amp; RETRIEVAL-AUGMENTED GENERATION</text><rect x="24" y="864" width="700" height="18" rx="4" fill="#bc8cff" fill-opacity="0.15"/><rect x="24" y="864" width="525" height="18" rx="4" fill="#bc8cff" fill-opacity="0.85"/><text x="734" y="877" class="t t-value">75%</text><text x="24" y="898" class="t t-card-detail">SurrealDB · Vector Search · RAG · kgdk · ragdk</text><text x="24" y="926" class="t t-subhdr">DESKTOP &amp; CROSS-PLATFORM APPS</text><rect x="24" y="938" width="700" height="18" rx="4" fill="#39d2c0" fill-opacity="0.15"/><rect x="24" y="938" width="489.99999999999994" height="18" rx="4" fill="#39d2c0" fill-opacity="0.85"/><text x="734" y="951" class="t t-value">70%</text><text x="24" y="972" class="t t-card-detail">JavaFX · Wails · React · Go · Rust</text><text x="24" y="1032" class="t t-h">SIGNATURE PROJECTS</text><text x="24" y="1048" class="t t-sub">Top projects by technical complexity</text><rect x="24" y="1058" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="1058" width="4" height="52" rx="2" fill="#58a6ff"/><text x="40" y="1076" class="t t-card-title">resume-generator</text><text x="768" y="1076" class="t t-value" text-anchor="end">★ 10</text><text x="40" y="1092" class="t t-card-detail">A data-driven CLI tool that converts YAML/JSON/TOML resume data into polished PDFs, DOCX,…</text><rect x="24" y="1120" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="1120" width="4" height="52" rx="2" fill="#3fb950"/><text x="40" y="1138" class="t t-card-title">lepus-classifier</text><text x="768" y="1138" class="t t-value" text-anchor="end">★ 2</text><text x="40" y="1154" class="t t-card-detail">A CNN research project exploring optimal image classification architectures for small dat…</text><rect x="24" y="1182" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="1182" width="4" height="52" rx="2" fill="#d29922"/><text x="40" y="1200" class="t t-card-title">linear-gp</text><text x="768" y="1200" class="t t-value" text-anchor="end">★ 2</text><text x="40" y="1216" class="t t-card-detail">A production-grade Rust framework for Linear Genetic Programming research, featuring modu…</text><rect x="24" y="1244" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="1244" width="4" height="52" rx="2" fill="#f85149"/><text x="40" y="1262" class="t t-card-title">homai</text><text x="768" y="1262" class="t t-value" text-anchor="end">★ 0</text><text x="40" y="1278" class="t t-card-detail">Local-first, privacy-focused smart home control system. Manage Zigbee devices through a R…</text><rect x="24" y="1306" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="1306" width="4" height="52" rx="2" fill="#bc8cff"/><text x="40" y="1324" class="t t-card-title">urmzd.com</text><text x="768" y="1324" class="t t-value" text-anchor="end">★ 0</text><text x="40" y="1340" class="t t-card-detail">Personal website and blog built with Astro, TypeScript, and MDX—featuring fast static sit…</text><text x="24" y="1404" class="t t-h">CONTRIBUTION CALENDAR</text><text x="24" y="1420" class="t t-sub">1,155 contributions in the last year</text><text x="54" y="1441" class="t t-value">Mar</text><text x="93" y="1441" class="t t-value">Apr</text><text x="145" y="1441" class="t t-value">May</text><text x="210" y="1441" class="t t-value">Jun</text><text x="262" y="1441" class="t t-value">Jul</text><text x="314" y="1441" class="t t-value">Aug</text><text x="379" y="1441" class="t t-value">Sep</text><text x="431" y="1441" class="t t-value">Oct</text><text x="483" y="1441" class="t t-value">Nov</text><text x="548" y="1441" class="t t-value">Dec</text><text x="600" y="1441" class="t t-value">Jan</text><text x="665" y="1441" class="t t-value">Feb</text><text x="717" y="1441" class="t t-value">Mar</text><text x="24" y="1469" class="t t-value">Mon</text><text x="24" y="1495" class="t t-value">Wed</text><text x="24" y="1521" class="t t-value">Fri</text><rect x="54" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="54" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="54" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="54" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="54" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="54" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="54" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="158" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="158" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="158" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="158" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="158" y="1498" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="158" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="158" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="171" y="1446" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="171" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="171" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="171" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="171" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="171" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="171" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="1524" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="249" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="249" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="249" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="249" y="1485" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="249" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="249" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="249" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="262" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="262" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="262" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="262" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="262" y="1498" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="262" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="262" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="301" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="301" y="1459" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="301" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="301" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="301" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="301" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="301" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="379" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="379" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="379" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="379" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="379" y="1498" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="379" y="1511" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="379" y="1524" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="392" y="1446" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="392" y="1459" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="392" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="392" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="392" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="392" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="392" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="1524" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="470" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="470" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="470" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="470" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="470" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="470" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="470" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="483" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="483" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="483" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="483" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="483" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="483" y="1511" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="483" y="1524" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="496" y="1446" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="496" y="1459" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="496" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="496" y="1485" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="496" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="496" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="496" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="522" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="522" y="1459" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="522" y="1472" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="522" y="1485" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="522" y="1498" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="522" y="1511" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="522" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="535" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="535" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="535" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="535" y="1485" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="535" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="535" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="535" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="548" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="548" y="1459" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="548" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="548" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="548" y="1498" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="548" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="548" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="561" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="561" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="561" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="561" y="1485" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="561" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="561" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="561" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="1472" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="600" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="600" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="600" y="1472" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="600" y="1485" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="600" y="1498" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="600" y="1511" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="600" y="1524" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="613" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="613" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="613" y="1472" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="613" y="1485" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="613" y="1498" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="613" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="613" y="1524" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="626" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="626" y="1459" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="626" y="1472" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="626" y="1485" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="626" y="1498" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="626" y="1511" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="626" y="1524" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="639" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="639" y="1459" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="639" y="1472" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="639" y="1485" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="639" y="1498" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="639" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="639" y="1524" width="11" height="11" rx="2" fill="#216e39"/><rect x="652" y="1446" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="652" y="1459" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="652" y="1472" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="652" y="1485" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="652" y="1498" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="652" y="1511" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="652" y="1524" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="665" y="1446" width="11" height="11" rx="2" fill="#216e39"/><rect x="665" y="1459" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="665" y="1472" width="11" height="11" rx="2" fill="#40c463"/><rect x="665" y="1485" width="11" height="11" rx="2" fill="#216e39"/><rect x="665" y="1498" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="665" y="1511" width="11" height="11" rx="2" fill="#40c463"/><rect x="665" y="1524" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="678" y="1446" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="678" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="678" y="1472" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="678" y="1485" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="678" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="678" y="1511" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="678" y="1524" width="11" height="11" rx="2" fill="#40c463"/><rect x="691" y="1446" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="691" y="1459" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="691" y="1472" width="11" height="11" rx="2" fill="#30a14e"/><rect x="691" y="1485" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="691" y="1498" width="11" height="11" rx="2" fill="#40c463"/><rect x="691" y="1511" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="691" y="1524" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="704" y="1446" width="11" height="11" rx="2" fill="#40c463"/><rect x="704" y="1459" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="704" y="1472" width="11" height="11" rx="2" fill="#30a14e"/><rect x="704" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="704" y="1498" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="704" y="1511" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="704" y="1524" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="717" y="1446" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="717" y="1459" width="11" height="11" rx="2" fill="#40c463"/><rect x="717" y="1472" width="11" height="11" rx="2" fill="#40c463"/><rect x="717" y="1485" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="717" y="1498" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="717" y="1511" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="717" y="1524" width="11" height="11" rx="2" fill="#216e39"/><rect x="730" y="1446" width="11" height="11" rx="2" fill="#40c463"/><rect x="730" y="1459" width="11" height="11" rx="2" fill="#ebedf0"/><text x="24" y="1583" class="t t-h">OPEN SOURCE CONTRIBUTIONS</text><text x="24" y="1599" class="t t-sub">External repositories contributed to (all time)</text><rect x="24" y="1609" width="760" height="44" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="1609" width="4" height="44" rx="2" fill="#58a6ff"/><text x="40" y="1627" class="t t-card-title">MathisWellmann/gym-rs</text><text x="40" y="1643" class="t t-card-detail">★ 126 · Rust</text><rect x="24" y="1661" width="760" height="44" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="1661" width="4" height="44" rx="2" fill="#3fb950"/><text x="40" y="1679" class="t t-card-title">getzep/graphiti</text><text x="40" y="1695" class="t t-card-detail">★ 23,772 · Python</text></svg>
@@ -0,0 +1,14 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="197" viewBox="0 0 808 197"><defs><style>
2
+ .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; }
3
+ .t-h { font-size: 13px; fill: #c9d1d9; letter-spacing: 1.5px; font-weight: 600; }
4
+ .t-sub { font-size: 11px; fill: #6e7681; }
5
+ .t-label { font-size: 12px; fill: #8b949e; }
6
+ .t-value { font-size: 11px; fill: #6e7681; }
7
+ .t-subhdr { font-size: 11px; fill: #8b949e; letter-spacing: 1px; font-weight: 600; }
8
+ .t-stat-label { font-size: 10px; fill: #8b949e; font-weight: 600; }
9
+ .t-stat-value { font-size: 22px; font-weight: 700; }
10
+ .t-card-title { font-size: 12px; fill: #58a6ff; font-weight: 700; }
11
+ .t-card-detail { font-size: 11px; fill: #8b949e; }
12
+ .t-pill { font-size: 11px; font-weight: 600; }
13
+ .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
+ </style></defs><rect width="808" height="197" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">CONTRIBUTION CALENDAR</text><text x="24" y="56" class="t t-sub">1,155 contributions in the last year</text><text x="54" y="77" class="t t-value">Mar</text><text x="93" y="77" class="t t-value">Apr</text><text x="145" y="77" class="t t-value">May</text><text x="210" y="77" class="t t-value">Jun</text><text x="262" y="77" class="t t-value">Jul</text><text x="314" y="77" class="t t-value">Aug</text><text x="379" y="77" class="t t-value">Sep</text><text x="431" y="77" class="t t-value">Oct</text><text x="483" y="77" class="t t-value">Nov</text><text x="548" y="77" class="t t-value">Dec</text><text x="600" y="77" class="t t-value">Jan</text><text x="665" y="77" class="t t-value">Feb</text><text x="717" y="77" class="t t-value">Mar</text><text x="24" y="105" class="t t-value">Mon</text><text x="24" y="131" class="t t-value">Wed</text><text x="24" y="157" class="t t-value">Fri</text><rect x="54" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="54" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="54" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="54" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="54" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="54" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="54" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="67" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="80" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="93" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="106" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="119" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="132" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="145" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="158" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="158" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="158" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="158" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="158" y="134" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="158" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="158" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="171" y="82" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="171" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="171" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="171" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="171" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="171" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="171" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="184" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="197" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="210" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="223" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="236" y="160" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="249" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="249" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="249" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="249" y="121" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="249" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="249" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="249" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="262" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="262" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="262" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="262" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="262" y="134" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="262" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="262" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="275" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="288" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="301" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="301" y="95" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="301" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="301" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="301" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="301" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="301" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="314" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="327" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="340" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="353" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="366" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="379" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="379" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="379" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="379" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="379" y="134" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="379" y="147" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="379" y="160" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="392" y="82" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="392" y="95" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="392" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="392" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="392" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="392" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="392" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="405" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="418" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="431" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="444" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="457" y="160" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="470" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="470" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="470" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="470" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="470" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="470" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="470" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="483" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="483" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="483" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="483" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="483" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="483" y="147" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="483" y="160" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="496" y="82" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="496" y="95" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="496" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="496" y="121" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="496" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="496" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="496" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="509" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="522" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="522" y="95" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="522" y="108" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="522" y="121" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="522" y="134" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="522" y="147" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="522" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="535" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="535" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="535" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="535" y="121" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="535" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="535" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="535" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="548" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="548" y="95" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="548" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="548" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="548" y="134" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="548" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="548" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="561" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="561" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="561" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="561" y="121" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="561" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="561" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="561" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="574" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="108" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="587" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="600" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="600" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="600" y="108" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="600" y="121" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="600" y="134" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="600" y="147" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="600" y="160" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="613" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="613" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="613" y="108" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="613" y="121" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="613" y="134" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="613" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="613" y="160" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="626" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="626" y="95" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="626" y="108" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="626" y="121" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="626" y="134" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="626" y="147" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="626" y="160" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="639" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="639" y="95" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="639" y="108" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="639" y="121" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="639" y="134" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="639" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="639" y="160" width="11" height="11" rx="2" fill="#216e39"/><rect x="652" y="82" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="652" y="95" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="652" y="108" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="652" y="121" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="652" y="134" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="652" y="147" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="652" y="160" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="665" y="82" width="11" height="11" rx="2" fill="#216e39"/><rect x="665" y="95" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="665" y="108" width="11" height="11" rx="2" fill="#40c463"/><rect x="665" y="121" width="11" height="11" rx="2" fill="#216e39"/><rect x="665" y="134" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="665" y="147" width="11" height="11" rx="2" fill="#40c463"/><rect x="665" y="160" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="678" y="82" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="678" y="95" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="678" y="108" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="678" y="121" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="678" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="678" y="147" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="678" y="160" width="11" height="11" rx="2" fill="#40c463"/><rect x="691" y="82" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="691" y="95" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="691" y="108" width="11" height="11" rx="2" fill="#30a14e"/><rect x="691" y="121" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="691" y="134" width="11" height="11" rx="2" fill="#40c463"/><rect x="691" y="147" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="691" y="160" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="704" y="82" width="11" height="11" rx="2" fill="#40c463"/><rect x="704" y="95" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="704" y="108" width="11" height="11" rx="2" fill="#30a14e"/><rect x="704" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="704" y="134" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="704" y="147" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="704" y="160" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="717" y="82" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="717" y="95" width="11" height="11" rx="2" fill="#40c463"/><rect x="717" y="108" width="11" height="11" rx="2" fill="#40c463"/><rect x="717" y="121" width="11" height="11" rx="2" fill="#ebedf0"/><rect x="717" y="134" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="717" y="147" width="11" height="11" rx="2" fill="#9be9a8"/><rect x="717" y="160" width="11" height="11" rx="2" fill="#216e39"/><rect x="730" y="82" width="11" height="11" rx="2" fill="#40c463"/><rect x="730" y="95" width="11" height="11" rx="2" fill="#ebedf0"/></svg>
@@ -0,0 +1,14 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="390" viewBox="0 0 808 390"><defs><style>
2
+ .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; }
3
+ .t-h { font-size: 13px; fill: #c9d1d9; letter-spacing: 1.5px; font-weight: 600; }
4
+ .t-sub { font-size: 11px; fill: #6e7681; }
5
+ .t-label { font-size: 12px; fill: #8b949e; }
6
+ .t-value { font-size: 11px; fill: #6e7681; }
7
+ .t-subhdr { font-size: 11px; fill: #8b949e; letter-spacing: 1px; font-weight: 600; }
8
+ .t-stat-label { font-size: 10px; fill: #8b949e; font-weight: 600; }
9
+ .t-stat-value { font-size: 22px; font-weight: 700; }
10
+ .t-card-title { font-size: 12px; fill: #58a6ff; font-weight: 700; }
11
+ .t-card-detail { font-size: 11px; fill: #8b949e; }
12
+ .t-pill { font-size: 11px; font-weight: 600; }
13
+ .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
+ </style></defs><rect width="808" height="390" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">SIGNATURE PROJECTS</text><text x="24" y="56" class="t t-sub">Top projects by technical complexity</text><rect x="24" y="66" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="66" width="4" height="52" rx="2" fill="#58a6ff"/><text x="40" y="84" class="t t-card-title">resume-generator</text><text x="768" y="84" class="t t-value" text-anchor="end">★ 10</text><text x="40" y="100" class="t t-card-detail">A data-driven CLI tool that converts YAML/JSON/TOML resume data into polished PDFs, DOCX,…</text><rect x="24" y="128" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="128" width="4" height="52" rx="2" fill="#3fb950"/><text x="40" y="146" class="t t-card-title">lepus-classifier</text><text x="768" y="146" class="t t-value" text-anchor="end">★ 2</text><text x="40" y="162" class="t t-card-detail">A CNN research project exploring optimal image classification architectures for small dat…</text><rect x="24" y="190" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="190" width="4" height="52" rx="2" fill="#d29922"/><text x="40" y="208" class="t t-card-title">linear-gp</text><text x="768" y="208" class="t t-value" text-anchor="end">★ 2</text><text x="40" y="224" class="t t-card-detail">A production-grade Rust framework for Linear Genetic Programming research, featuring modu…</text><rect x="24" y="252" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="252" width="4" height="52" rx="2" fill="#f85149"/><text x="40" y="270" class="t t-card-title">homai</text><text x="768" y="270" class="t t-value" text-anchor="end">★ 0</text><text x="40" y="286" class="t t-card-detail">Local-first, privacy-focused smart home control system. Manage Zigbee devices through a R…</text><rect x="24" y="314" width="760" height="52" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="314" width="4" height="52" rx="2" fill="#bc8cff"/><text x="40" y="332" class="t t-card-title">urmzd.com</text><text x="768" y="332" class="t t-value" text-anchor="end">★ 0</text><text x="40" y="348" class="t t-card-detail">Personal website and blog built with Astro, TypeScript, and MDX—featuring fast static sit…</text></svg>
@@ -0,0 +1,14 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="186" viewBox="0 0 808 186"><defs><style>
2
+ .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; }
3
+ .t-h { font-size: 13px; fill: #c9d1d9; letter-spacing: 1.5px; font-weight: 600; }
4
+ .t-sub { font-size: 11px; fill: #6e7681; }
5
+ .t-label { font-size: 12px; fill: #8b949e; }
6
+ .t-value { font-size: 11px; fill: #6e7681; }
7
+ .t-subhdr { font-size: 11px; fill: #8b949e; letter-spacing: 1px; font-weight: 600; }
8
+ .t-stat-label { font-size: 10px; fill: #8b949e; font-weight: 600; }
9
+ .t-stat-value { font-size: 22px; font-weight: 700; }
10
+ .t-card-title { font-size: 12px; fill: #58a6ff; font-weight: 700; }
11
+ .t-card-detail { font-size: 11px; fill: #8b949e; }
12
+ .t-pill { font-size: 11px; font-weight: 600; }
13
+ .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
+ </style></defs><rect width="808" height="186" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">OPEN SOURCE CONTRIBUTIONS</text><text x="24" y="56" class="t t-sub">External repositories contributed to (all time)</text><rect x="24" y="66" width="760" height="44" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="66" width="4" height="44" rx="2" fill="#58a6ff"/><text x="40" y="84" class="t t-card-title">MathisWellmann/gym-rs</text><text x="40" y="100" class="t t-card-detail">★ 126 · Rust</text><rect x="24" y="118" width="760" height="44" rx="6" fill="#161b22" stroke="#30363d" stroke-width="1"/><rect x="24" y="118" width="4" height="44" rx="2" fill="#3fb950"/><text x="40" y="136" class="t t-card-title">getzep/graphiti</text><text x="40" y="152" class="t t-card-detail">★ 23,772 · Python</text></svg>
@@ -0,0 +1,14 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="152" viewBox="0 0 808 152"><defs><style>
2
+ .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; }
3
+ .t-h { font-size: 13px; fill: #c9d1d9; letter-spacing: 1.5px; font-weight: 600; }
4
+ .t-sub { font-size: 11px; fill: #6e7681; }
5
+ .t-label { font-size: 12px; fill: #8b949e; }
6
+ .t-value { font-size: 11px; fill: #6e7681; }
7
+ .t-subhdr { font-size: 11px; fill: #8b949e; letter-spacing: 1px; font-weight: 600; }
8
+ .t-stat-label { font-size: 10px; fill: #8b949e; font-weight: 600; }
9
+ .t-stat-value { font-size: 22px; font-weight: 700; }
10
+ .t-card-title { font-size: 12px; fill: #58a6ff; font-weight: 700; }
11
+ .t-card-detail { font-size: 11px; fill: #8b949e; }
12
+ .t-pill { font-size: 11px; font-weight: 600; }
13
+ .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
+ </style></defs><rect width="808" height="152" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">WORK DOMAINS</text><text x="24" y="56" class="t t-sub">Extracted from project READMEs via AI analysis</text><rect x="24" y="66" width="98" height="36" rx="18" fill="#58a6ff" fill-opacity="0.15" stroke="#58a6ff" stroke-opacity="0.4" stroke-width="1"/><text x="73" y="88.66666666666667" fill="#58a6ff" font-size="14" class="t t-pill" text-anchor="middle">CLI Tools</text><rect x="132" y="66" width="105" height="36" rx="18" fill="#3fb950" fill-opacity="0.15" stroke="#3fb950" stroke-opacity="0.4" stroke-width="1"/><text x="184.5" y="88.66666666666667" fill="#3fb950" font-size="14" class="t t-pill" text-anchor="middle">Automation</text><rect x="247" y="66" width="143" height="32" rx="16" fill="#d29922" fill-opacity="0.15" stroke="#d29922" stroke-opacity="0.4" stroke-width="1"/><text x="318.5" y="86.33333333333333" fill="#d29922" font-size="13" class="t t-pill" text-anchor="middle">Machine Learning</text><rect x="400" y="66" width="77" height="28" rx="14" fill="#f85149" fill-opacity="0.15" stroke="#f85149" stroke-opacity="0.4" stroke-width="1"/><text x="438.5" y="83.66666666666667" fill="#f85149" font-size="11" class="t t-pill" text-anchor="middle">Game Dev</text><rect x="487" y="66" width="65" height="28" rx="14" fill="#bc8cff" fill-opacity="0.15" stroke="#bc8cff" stroke-opacity="0.4" stroke-width="1"/><text x="519.5" y="83.66666666666667" fill="#bc8cff" font-size="11" class="t t-pill" text-anchor="middle">DevOps</text><rect x="562" y="66" width="77" height="28" rx="14" fill="#39d2c0" fill-opacity="0.15" stroke="#39d2c0" stroke-opacity="0.4" stroke-width="1"/><text x="600.5" y="83.66666666666667" fill="#39d2c0" font-size="11" class="t t-pill" text-anchor="middle">Web Apps</text><rect x="649" y="66" width="88" height="24" rx="12" fill="#db61a2" fill-opacity="0.15" stroke="#db61a2" stroke-opacity="0.4" stroke-width="1"/><text x="693" y="81" fill="#db61a2" font-size="9" class="t t-pill" text-anchor="middle">Desktop Apps</text><rect x="24" y="100" width="103" height="24" rx="12" fill="#79c0ff" fill-opacity="0.15" stroke="#79c0ff" stroke-opacity="0.4" stroke-width="1"/><text x="75.5" y="115" fill="#79c0ff" font-size="9" class="t t-pill" text-anchor="middle">Computer Vision</text><rect x="137" y="100" width="88" height="24" rx="12" fill="#58a6ff" fill-opacity="0.15" stroke="#58a6ff" stroke-opacity="0.4" stroke-width="1"/><text x="181" y="115" fill="#58a6ff" font-size="9" class="t t-pill" text-anchor="middle">Data Science</text><rect x="235" y="100" width="103" height="24" rx="12" fill="#3fb950" fill-opacity="0.15" stroke="#3fb950" stroke-opacity="0.4" stroke-width="1"/><text x="286.5" y="115" fill="#3fb950" font-size="9" class="t t-pill" text-anchor="middle">API Development</text><rect x="348" y="100" width="108" height="24" rx="12" fill="#d29922" fill-opacity="0.15" stroke="#d29922" stroke-opacity="0.4" stroke-width="1"/><text x="402" y="115" fill="#d29922" font-size="9" class="t t-pill" text-anchor="middle">Personal Website</text><rect x="466" y="100" width="73" height="24" rx="12" fill="#f85149" fill-opacity="0.15" stroke="#f85149" stroke-opacity="0.4" stroke-width="1"/><text x="502.5" y="115" fill="#f85149" font-size="9" class="t t-pill" text-anchor="middle">Education</text><rect x="549" y="100" width="43" height="24" rx="12" fill="#bc8cff" fill-opacity="0.15" stroke="#bc8cff" stroke-opacity="0.4" stroke-width="1"/><text x="570.5" y="115" fill="#bc8cff" font-size="9" class="t t-pill" text-anchor="middle">IoT</text><rect x="602" y="100" width="68" height="24" rx="12" fill="#39d2c0" fill-opacity="0.15" stroke="#39d2c0" stroke-opacity="0.4" stroke-width="1"/><text x="636" y="115" fill="#39d2c0" font-size="9" class="t t-pill" text-anchor="middle">Research</text><rect x="680" y="100" width="83" height="24" rx="12" fill="#db61a2" fill-opacity="0.15" stroke="#db61a2" stroke-opacity="0.4" stroke-width="1"/><text x="721.5" y="115" fill="#db61a2" font-size="9" class="t t-pill" text-anchor="middle">Mobile Apps</text></svg>
@@ -0,0 +1,14 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="534" viewBox="0 0 808 534"><defs><style>
2
+ .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; }
3
+ .t-h { font-size: 13px; fill: #c9d1d9; letter-spacing: 1.5px; font-weight: 600; }
4
+ .t-sub { font-size: 11px; fill: #6e7681; }
5
+ .t-label { font-size: 12px; fill: #8b949e; }
6
+ .t-value { font-size: 11px; fill: #6e7681; }
7
+ .t-subhdr { font-size: 11px; fill: #8b949e; letter-spacing: 1px; font-weight: 600; }
8
+ .t-stat-label { font-size: 10px; fill: #8b949e; font-weight: 600; }
9
+ .t-stat-value { font-size: 22px; font-weight: 700; }
10
+ .t-card-title { font-size: 12px; fill: #58a6ff; font-weight: 700; }
11
+ .t-card-detail { font-size: 11px; fill: #8b949e; }
12
+ .t-pill { font-size: 11px; font-weight: 600; }
13
+ .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
+ </style></defs><rect width="808" height="534" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">EXPERTISE</text><text x="24" y="56" class="t t-sub">Curated from dependencies, topics, and languages via AI analysis</text><text x="24" y="80" class="t t-subhdr">SYSTEMS PROGRAMMING &amp; CLI TOOLS</text><rect x="24" y="92" width="700" height="18" rx="4" fill="#58a6ff" fill-opacity="0.15"/><rect x="24" y="92" width="665" height="18" rx="4" fill="#58a6ff" fill-opacity="0.85"/><text x="734" y="105" class="t t-value">95%</text><text x="24" y="126" class="t t-card-detail">Go · Rust · Wails · Chezmoi · Nix</text><text x="24" y="154" class="t t-subhdr">MACHINE LEARNING &amp; AI</text><rect x="24" y="166" width="700" height="18" rx="4" fill="#3fb950" fill-opacity="0.15"/><rect x="24" y="166" width="630" height="18" rx="4" fill="#3fb950" fill-opacity="0.85"/><text x="734" y="179" class="t t-value">90%</text><text x="24" y="200" class="t t-card-detail">PyTorch · TensorFlow · Keras · Transformers · CNNs</text><text x="24" y="228" class="t t-subhdr">WEB DEVELOPMENT &amp; STATIC SITES</text><rect x="24" y="240" width="700" height="18" rx="4" fill="#d29922" fill-opacity="0.15"/><rect x="24" y="240" width="595" height="18" rx="4" fill="#d29922" fill-opacity="0.85"/><text x="734" y="253" class="t t-value">85%</text><text x="24" y="274" class="t t-card-detail">Astro · React · TypeScript · Tailwind CSS · MDX</text><text x="24" y="302" class="t t-subhdr">DEVOPS &amp; CI/CD AUTOMATION</text><rect x="24" y="314" width="700" height="18" rx="4" fill="#f85149" fill-opacity="0.15"/><rect x="24" y="314" width="560" height="18" rx="4" fill="#f85149" fill-opacity="0.85"/><text x="734" y="327" class="t t-value">80%</text><text x="24" y="348" class="t t-card-detail">GitHub Actions · Docker · Semantic Release · CI/CD · Embed-src</text><text x="24" y="376" class="t t-subhdr">KNOWLEDGE GRAPHS &amp; RETRIEVAL-AUGMENTED GENERATION</text><rect x="24" y="388" width="700" height="18" rx="4" fill="#bc8cff" fill-opacity="0.15"/><rect x="24" y="388" width="525" height="18" rx="4" fill="#bc8cff" fill-opacity="0.85"/><text x="734" y="401" class="t t-value">75%</text><text x="24" y="422" class="t t-card-detail">SurrealDB · Vector Search · RAG · kgdk · ragdk</text><text x="24" y="450" class="t t-subhdr">DESKTOP &amp; CROSS-PLATFORM APPS</text><rect x="24" y="462" width="700" height="18" rx="4" fill="#39d2c0" fill-opacity="0.15"/><rect x="24" y="462" width="489.99999999999994" height="18" rx="4" fill="#39d2c0" fill-opacity="0.85"/><text x="734" y="475" class="t t-value">70%</text><text x="24" y="496" class="t t-card-detail">JavaFX · Wails · React · Go · Rust</text></svg>
@@ -0,0 +1,14 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="350" viewBox="0 0 808 350"><defs><style>
2
+ .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; }
3
+ .t-h { font-size: 13px; fill: #c9d1d9; letter-spacing: 1.5px; font-weight: 600; }
4
+ .t-sub { font-size: 11px; fill: #6e7681; }
5
+ .t-label { font-size: 12px; fill: #8b949e; }
6
+ .t-value { font-size: 11px; fill: #6e7681; }
7
+ .t-subhdr { font-size: 11px; fill: #8b949e; letter-spacing: 1px; font-weight: 600; }
8
+ .t-stat-label { font-size: 10px; fill: #8b949e; font-weight: 600; }
9
+ .t-stat-value { font-size: 22px; font-weight: 700; }
10
+ .t-card-title { font-size: 12px; fill: #58a6ff; font-weight: 700; }
11
+ .t-card-detail { font-size: 11px; fill: #8b949e; }
12
+ .t-pill { font-size: 11px; font-weight: 600; }
13
+ .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
+ </style></defs><rect width="808" height="350" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">LANGUAGES</text><text x="24" y="56" class="t t-sub">By bytes of code across all public repos</text><circle cx="114" cy="156" r="70" fill="none" stroke="#00ADD8" stroke-width="28" stroke-dasharray="124.03007796372502 315.792893538846" stroke-dashoffset="0" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#dea584" stroke-width="28" stroke-dasharray="109.07609693263761 330.7468745699334" stroke-dashoffset="-124.03007796372502" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#3178c6" stroke-width="28" stroke-dasharray="103.35839830310418 336.4645731994668" stroke-dashoffset="-233.10617489636263" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#3D6117" stroke-width="28" stroke-dasharray="20.231856689118267 419.59111481345275" stroke-dashoffset="-336.4645731994668" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#3572A5" stroke-width="28" stroke-dasharray="17.15309588860027 422.66987561397076" stroke-dashoffset="-356.6964298885851" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#89e051" stroke-width="28" stroke-dasharray="16.713272917097697 423.1096985854733" stroke-dashoffset="-373.84952577718536" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#a52a22" stroke-width="28" stroke-dasharray="7.916813487046279 431.90615801552474" stroke-dashoffset="-390.56279869428306" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#b07219" stroke-width="28" stroke-dasharray="6.597344572538565 433.22562693003243" stroke-dashoffset="-398.47961218132934" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#000080" stroke-width="28" stroke-dasharray="6.157521601035993 433.66544990153506" stroke-dashoffset="-405.07695675386793" transform="rotate(-90 114 156)" opacity="0.85"/><circle cx="114" cy="156" r="70" fill="none" stroke="#e34c26" stroke-width="28" stroke-dasharray="5.717698629533424 434.1052728730376" stroke-dashoffset="-411.2344783549039" transform="rotate(-90 114 156)" opacity="0.85"/><text x="114" y="161" class="t" fill="#c9d1d9" font-size="14" font-weight="700" text-anchor="middle">10</text><text x="114" y="176" class="t" fill="#6e7681" font-size="10" text-anchor="middle">languages</text><rect x="244" y="76" width="12" height="12" rx="2" fill="#00ADD8" opacity="0.85"/><text x="264" y="86" class="t t-label">Go</text><text x="444" y="86" class="t t-value" text-anchor="end">28.2%</text><rect x="244" y="100" width="12" height="12" rx="2" fill="#dea584" opacity="0.85"/><text x="264" y="110" class="t t-label">Rust</text><text x="444" y="110" class="t t-value" text-anchor="end">24.8%</text><rect x="244" y="124" width="12" height="12" rx="2" fill="#3178c6" opacity="0.85"/><text x="264" y="134" class="t t-label">TypeScript</text><text x="444" y="134" class="t t-value" text-anchor="end">23.5%</text><rect x="244" y="148" width="12" height="12" rx="2" fill="#3D6117" opacity="0.85"/><text x="264" y="158" class="t t-label">TeX</text><text x="444" y="158" class="t t-value" text-anchor="end">4.6%</text><rect x="244" y="172" width="12" height="12" rx="2" fill="#3572A5" opacity="0.85"/><text x="264" y="182" class="t t-label">Python</text><text x="444" y="182" class="t t-value" text-anchor="end">3.9%</text><rect x="244" y="196" width="12" height="12" rx="2" fill="#89e051" opacity="0.85"/><text x="264" y="206" class="t t-label">Shell</text><text x="444" y="206" class="t t-value" text-anchor="end">3.8%</text><rect x="244" y="220" width="12" height="12" rx="2" fill="#a52a22" opacity="0.85"/><text x="264" y="230" class="t t-label">Jinja</text><text x="444" y="230" class="t t-value" text-anchor="end">1.8%</text><rect x="244" y="244" width="12" height="12" rx="2" fill="#b07219" opacity="0.85"/><text x="264" y="254" class="t t-label">Java</text><text x="444" y="254" class="t t-value" text-anchor="end">1.5%</text><rect x="244" y="268" width="12" height="12" rx="2" fill="#000080" opacity="0.85"/><text x="264" y="278" class="t t-label">Lua</text><text x="444" y="278" class="t t-value" text-anchor="end">1.4%</text><rect x="244" y="292" width="12" height="12" rx="2" fill="#e34c26" opacity="0.85"/><text x="264" y="302" class="t t-label">HTML</text><text x="444" y="302" class="t t-value" text-anchor="end">1.3%</text></svg>
@@ -0,0 +1,14 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="162" viewBox="0 0 808 162"><defs><style>
2
+ .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; }
3
+ .t-h { font-size: 13px; fill: #c9d1d9; letter-spacing: 1.5px; font-weight: 600; }
4
+ .t-sub { font-size: 11px; fill: #6e7681; }
5
+ .t-label { font-size: 12px; fill: #8b949e; }
6
+ .t-value { font-size: 11px; fill: #6e7681; }
7
+ .t-subhdr { font-size: 11px; fill: #8b949e; letter-spacing: 1px; font-weight: 600; }
8
+ .t-stat-label { font-size: 10px; fill: #8b949e; font-weight: 600; }
9
+ .t-stat-value { font-size: 22px; font-weight: 700; }
10
+ .t-card-title { font-size: 12px; fill: #58a6ff; font-weight: 700; }
11
+ .t-card-detail { font-size: 11px; fill: #8b949e; }
12
+ .t-pill { font-size: 11px; font-weight: 600; }
13
+ .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
+ </style></defs><rect width="808" height="162" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">AT A GLANCE</text><text x="24" y="56" class="t t-sub">Contribution activity over the past year</text><rect x="24" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="38" cy="82" r="4" fill="#58a6ff"/><text x="48" y="86" class="t t-stat-label">COMMITS</text><text x="94" y="118" fill="#58a6ff" class="t t-stat-value" text-anchor="middle">1,049</text><rect x="179" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="193" cy="82" r="4" fill="#3fb950"/><text x="203" y="86" class="t t-stat-label">PRS</text><text x="249" y="118" fill="#3fb950" class="t t-stat-value" text-anchor="middle">3</text><rect x="334" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="348" cy="82" r="4" fill="#d29922"/><text x="358" y="86" class="t t-stat-label">REVIEWS</text><text x="404" y="118" fill="#d29922" class="t t-stat-value" text-anchor="middle">5</text><rect x="489" y="66" width="140" height="72" rx="8" fill="#161b22" stroke="#30363d" stroke-width="1"/><circle cx="503" cy="82" r="4" fill="#bc8cff"/><text x="513" y="86" class="t t-stat-label">REPOS</text><text x="559" y="118" fill="#bc8cff" class="t t-stat-value" text-anchor="middle">24</text></svg>
@@ -0,0 +1,14 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="808" height="600" viewBox="0 0 808 600"><defs><style>
2
+ .t { font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif; }
3
+ .t-h { font-size: 13px; fill: #c9d1d9; letter-spacing: 1.5px; font-weight: 600; }
4
+ .t-sub { font-size: 11px; fill: #6e7681; }
5
+ .t-label { font-size: 12px; fill: #8b949e; }
6
+ .t-value { font-size: 11px; fill: #6e7681; }
7
+ .t-subhdr { font-size: 11px; fill: #8b949e; letter-spacing: 1px; font-weight: 600; }
8
+ .t-stat-label { font-size: 10px; fill: #8b949e; font-weight: 600; }
9
+ .t-stat-value { font-size: 22px; font-weight: 700; }
10
+ .t-card-title { font-size: 12px; fill: #58a6ff; font-weight: 700; }
11
+ .t-card-detail { font-size: 11px; fill: #8b949e; }
12
+ .t-pill { font-size: 11px; font-weight: 600; }
13
+ .t-bullet { font-size: 12px; fill: #c9d1d9; }
14
+ </style></defs><rect width="808" height="600" rx="12" fill="#0d1117"/><text x="24" y="40" class="t t-h">TECH STACK</text><text x="24" y="56" class="t t-sub">Detected from topics and dependency manifests</text><text x="24" y="77" class="t t-subhdr">WEB FRAMEWORKS</text><text x="24" y="100" class="t t-label">astro</text><rect x="174" y="88" width="500" height="18" rx="3" fill="#58a6ff" opacity="0.85"/><text x="682" y="100" class="t t-value">1</text><g transform="translate(695, 88) scale(0.7)"><path d="M8 16c3.314 0 6-2 6-5.5 0-1.44-.714-2.89-1.166-3.778C12.024 5.143 10.9 3.5 8 0 5.1 3.5 3.976 5.143 3.166 6.722 2.714 7.61 2 9.06 2 10.5 2 14 4.686 16 8 16m0-1c-2.21 0-4-1.343-4-3.5 0-.93.258-1.695.672-2.528C5.2 7.865 6.1 6.5 8 4c1.9 2.5 2.8 3.865 3.328 4.972.414.833.672 1.598.672 2.528 0 2.157-1.79 3.5-4 3.5" fill="#f0883e"/></g><text x="24" y="128" class="t t-label">react</text><rect x="174" y="116" width="500" height="18" rx="3" fill="#3fb950" opacity="0.85"/><text x="682" y="128" class="t t-value">1</text><g transform="translate(695, 116) scale(0.7)"><path d="M8 16c3.314 0 6-2 6-5.5 0-1.44-.714-2.89-1.166-3.778C12.024 5.143 10.9 3.5 8 0 5.1 3.5 3.976 5.143 3.166 6.722 2.714 7.61 2 9.06 2 10.5 2 14 4.686 16 8 16m0-1c-2.21 0-4-1.343-4-3.5 0-.93.258-1.695.672-2.528C5.2 7.865 6.1 6.5 8 4c1.9 2.5 2.8 3.865 3.328 4.972.414.833.672 1.598.672 2.528 0 2.157-1.79 3.5-4 3.5" fill="#f0883e"/></g><text x="24" y="156" class="t t-label">fiber</text><rect x="174" y="144" width="500" height="18" rx="3" fill="#d29922" opacity="0.85"/><text x="682" y="156" class="t t-value">1</text><text x="24" y="184" class="t t-label">react-dom</text><rect x="174" y="172" width="500" height="18" rx="3" fill="#f85149" opacity="0.85"/><text x="682" y="184" class="t t-value">1</text><text x="24" y="212" class="t t-label">gin</text><rect x="174" y="200" width="500" height="18" rx="3" fill="#bc8cff" opacity="0.85"/><text x="682" y="212" class="t t-value">1</text><line x1="24" y1="242" x2="784" y2="242" stroke="#30363d" stroke-opacity="0.6" stroke-width="1"/><text x="24" y="265" class="t t-subhdr">ML &amp; AI</text><text x="24" y="288" class="t t-label">scikit-learn</text><rect x="174" y="276" width="500" height="18" rx="3" fill="#58a6ff" opacity="0.85"/><text x="682" y="288" class="t t-value">2</text><text x="24" y="316" class="t t-label">pytorch</text><rect x="174" y="304" width="250" height="18" rx="3" fill="#3fb950" opacity="0.85"/><text x="432" y="316" class="t t-value">1</text><text x="24" y="344" class="t t-label">keras</text><rect x="174" y="332" width="250" height="18" rx="3" fill="#d29922" opacity="0.85"/><text x="432" y="344" class="t t-value">1</text><text x="24" y="372" class="t t-label">sklearn</text><rect x="174" y="360" width="250" height="18" rx="3" fill="#f85149" opacity="0.85"/><text x="432" y="372" class="t t-value">1</text><text x="24" y="400" class="t t-label">tensorflow</text><rect x="174" y="388" width="250" height="18" rx="3" fill="#bc8cff" opacity="0.85"/><text x="432" y="400" class="t t-value">1</text><line x1="24" y1="430" x2="784" y2="430" stroke="#30363d" stroke-opacity="0.6" stroke-width="1"/><text x="24" y="453" class="t t-subhdr">DATABASES</text><text x="24" y="476" class="t t-label">SQLAlchemy</text><rect x="174" y="464" width="500" height="18" rx="3" fill="#58a6ff" opacity="0.85"/><text x="682" y="476" class="t t-value">1</text><line x1="24" y1="506" x2="784" y2="506" stroke="#30363d" stroke-opacity="0.6" stroke-width="1"/><text x="24" y="529" class="t t-subhdr">CLOUD &amp; INFRASTRUCTURE</text><text x="24" y="552" class="t t-label">docker</text><rect x="174" y="540" width="500" height="18" rx="3" fill="#58a6ff" opacity="0.85"/><text x="682" y="552" class="t t-value">2</text><g transform="translate(695, 540) scale(0.7)"><path d="M8 16c3.314 0 6-2 6-5.5 0-1.44-.714-2.89-1.166-3.778C12.024 5.143 10.9 3.5 8 0 5.1 3.5 3.976 5.143 3.166 6.722 2.714 7.61 2 9.06 2 10.5 2 14 4.686 16 8 16m0-1c-2.21 0-4-1.343-4-3.5 0-.93.258-1.695.672-2.528C5.2 7.865 6.1 6.5 8 4c1.9 2.5 2.8 3.865 3.328 4.972.414.833.672 1.598.672 2.528 0 2.157-1.79 3.5-4 3.5" fill="#f0883e"/></g></svg>
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "dependencies": {
3
+ "@actions/core": "^1.10.1",
4
+ "@actions/exec": "^1.1.1",
5
+ "@actions/github": "^6.0.0",
6
+ "smol-toml": "^1.6.0",
7
+ "yaml": "^2.8.2"
8
+ },
9
+ "devDependencies": {
10
+ "@biomejs/biome": "^2.3.14",
11
+ "@types/node": "^24.0.0",
12
+ "@vercel/ncc": "^0.38.0",
13
+ "tsx": "^4.0.0",
14
+ "typescript": "^5.5.0",
15
+ "vitest": "^2.0.0"
16
+ },
17
+ "license": "Apache-2.0",
18
+ "name": "@urmzd/github-insights",
19
+ "scripts": {
20
+ "build": "ncc build src/index.ts -o dist --source-map --license licenses.txt",
21
+ "ci": "npm run fmt && npm run lint && npm run typecheck && npm run test && npm run build",
22
+ "fmt": "biome format src/",
23
+ "fmt:fix": "biome check --fix src/",
24
+ "generate": "GITHUB_TOKEN=$(gh auth token) GITHUB_REPOSITORY_OWNER=$(gh api user --jq .login) tsx src/index.ts",
25
+ "lint": "biome check src/",
26
+ "test": "vitest run",
27
+ "typecheck": "tsc --noEmit"
28
+ },
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "https://github.com/urmzd/github-insights.git"
32
+ },
33
+ "type": "module",
34
+ "version": "2.0.0"
35
+ }