Label every group with an English name and fix the hover treatment
#2
by lvwerra HF Staff - opened
This view is limited to 50 files because it contains too many changes. See the raw diff here.
- FEATURE_BACKLOG.md +2 -0
- README.md +5 -1
- app.css +7 -7
- atlas.css +9 -4
- data/common_names.json +0 -0
- data/icons.json +0 -0
- data/icons/00508809-a509-4330-9e3d-9d3b54248667.svg +58 -0
- data/icons/0192754b-c8ab-43c0-a475-1a2ad0cfd202.svg +40 -0
- data/icons/01a21193-6599-463c-a5f0-75b6fe03189d.svg +104 -0
- data/icons/02974d7f-f93c-4c59-b847-3b080368c168.svg +33 -0
- data/icons/030163a0-eddc-4bf3-aac2-5e7594124820.svg +480 -0
- data/icons/03d2b502-f7d4-40a9-8be8-b31210286be8.svg +177 -0
- data/icons/0416cb50-2c82-42ac-bd17-ef1b6800ef65.svg +264 -0
- data/icons/04f4fb98-4dbc-424e-81ac-85226becd06b.svg +40 -0
- data/icons/065734f1-db68-4925-81fb-5d44c363b60d.svg +177 -0
- data/icons/07778806-5dcf-4524-9d93-8ead16a51bf9.svg +1098 -0
- data/icons/077c76df-f224-4eb1-9c92-6049fc8f8b3e.svg +294 -0
- data/icons/07a8ddc3-6440-4ca8-80e6-ccdaa988a968.svg +44 -0
- data/icons/0950aa57-4538-4fa1-b1f5-c4634f1c695c.svg +490 -0
- data/icons/0953dd54-b97b-4cfd-8944-bb3f45f93466.svg +25 -0
- data/icons/0a61962f-7d02-435c-aca0-d2fd0b757fc3.svg +48 -0
- data/icons/0be250dd-b56a-4ff5-97cc-ec6430e4ea5c.svg +232 -0
- data/icons/0be4e244-8322-444e-a75c-8503c16e10d7.svg +73 -0
- data/icons/0c391d43-30a5-4077-bdcb-fbb80f5d13e6.svg +36 -0
- data/icons/0cd6cc9f-683c-470e-a4a6-3b68beb826fa.svg +421 -0
- data/icons/0d386ce5-28e2-407c-b985-c1aac350bd1a.svg +86 -0
- data/icons/0ec7e6e6-e115-450a-b346-c40685ed3b1a.svg +82 -0
- data/icons/0fde2bb6-0472-4273-bf46-2d6073fa8fbc.svg +101 -0
- data/icons/12b88747-2892-454a-a882-c9c7e5f2c715.svg +274 -0
- data/icons/131051a0-9053-4295-a90a-380a00170784.svg +85 -0
- data/icons/13a4d650-bf9c-46ca-a4d1-b3ed8c8dab41.svg +26 -0
- data/icons/13c1c9de-bc85-47b8-9411-f9aaf35a908c.svg +106 -0
- data/icons/140c1df2-7f74-4f4d-8deb-9138aa956be5.svg +478 -0
- data/icons/14269801-89fe-405c-a425-2286c54ee60d.svg +69 -0
- data/icons/165900f9-969b-4ffa-b2cf-2a0a099b34a4.svg +117 -0
- data/icons/16735c42-c7d7-4394-a2c5-9493129cdf1c.svg +243 -0
- data/icons/1701c916-c68a-4807-8666-c4b8b4bc6656.svg +76 -0
- data/icons/17172a50-685f-4f39-a0d1-c0495e33a2d0.svg +135 -0
- data/icons/1776342b-d628-48f2-a292-3e8479ff95b4.svg +243 -0
- data/icons/179a2862-cb58-4a14-abc6-8fdf73c23364.svg +33 -0
- data/icons/17a3052d-8762-4aa4-9773-6718fec220ee.svg +0 -0
- data/icons/181e0252-d904-4e44-b53d-8b119a4c4e20.svg +205 -0
- data/icons/18af6753-2f5b-49d2-a28d-4cc1b7deaf6f.svg +84 -0
- data/icons/196f946f-f29f-4ca3-bdb2-5a8c5a036fd4.svg +103 -0
- data/icons/198fab1c-ac89-40c1-8243-8615c4133d80.svg +34 -0
- data/icons/199829d3-183a-4eb3-a35a-a8705d28cb56.svg +34 -0
- data/icons/19f1fc0c-aab8-4482-aad4-092987e59748.svg +84 -0
- data/icons/19ff2bcf-7b7a-4d38-b3af-118aa3b4ae48.svg +152 -0
- data/icons/1b0ba0bb-def6-4f6a-afc7-370208ddf4c9.svg +70 -0
- data/icons/1b5ad11e-b5a6-4efd-8a21-d035714d9239.svg +137 -0
FEATURE_BACKLOG.md
CHANGED
|
@@ -54,7 +54,9 @@ Desired behavior:
|
|
| 54 |
Decisions and dependencies for implementation:
|
| 55 |
|
| 56 |
- Implemented: eukaryotic tree with bounded subtrees and exact, expandable “Other lineages” aggregates; NCBI taxonomy with source checksums and dates; merged IDs resolved. Unresolved taxonomy is excluded from the eukaryotic view.
|
|
|
|
| 57 |
- Remaining: connect the taxonomy inventory to accession-level annotation results and distinguish partial/complete base coverage.
|
|
|
|
| 58 |
|
| 59 |
## F003 — Comparison with RefSeq annotations
|
| 60 |
|
|
|
|
| 54 |
Decisions and dependencies for implementation:
|
| 55 |
|
| 56 |
- Implemented: eukaryotic tree with bounded subtrees and exact, expandable “Other lineages” aggregates; NCBI taxonomy with source checksums and dates; merged IDs resolved. Unresolved taxonomy is excluded from the eukaryotic view.
|
| 57 |
+
- Implemented: English names beside every scientific name, from NCBI Taxonomy common names plus a curated gloss table (`refresh_common_names.py`).
|
| 58 |
- Remaining: connect the taxonomy inventory to accession-level annotation results and distinguish partial/complete base coverage.
|
| 59 |
+
- Implemented: clade silhouettes from PhyloPic, filtered to CC0/Public Domain Mark/CC BY at build time (`refresh_icons.py`), with every CC BY artist credited in the interface.
|
| 60 |
|
| 61 |
## F003 — Comparison with RefSeq annotations
|
| 62 |
|
README.md
CHANGED
|
@@ -17,7 +17,7 @@ Future features and open design decisions are tracked in the [feature backlog](F
|
|
| 17 |
|
| 18 |
## GenBank taxonomy
|
| 19 |
|
| 20 |
-
The landing page opens with an interactive **tree of eukaryotic life**, using NCBI's current GenBank assembly summary and taxonomy. It is drawn as a Sankey diagram: each group is a bar split into annotated (green) and not-annotated (gray) assemblies, and flows carry both parts from a group into its lineages. Counts and percentages appear beside the groups, with details on hover. The default **Genome Atlas** tab contains the tree and its lineage controls. A separate **Database** tab holds accession search, segment visualization, and downloads, using the full published-file snapshot. RefSeq exploration can be added beneath the tree. The two equal-width navigation options span the top of the page.
|
| 21 |
|
| 22 |
The viewer is restricted to **Eukaryota (NCBI taxid 2759) and its descendants**, including search, breadcrumbs, and parent navigation. The model predicts eukaryotic annotations; bacteria, archaea, and viruses are outside this display. The current eukaryotic snapshot contains **70,395 assemblies**, of which **17,561 (24.9%)** have published annotations. The underlying SQLite snapshot retains the full NCBI inventory for refresh/provenance, while the interface uses only the eukaryotic subtree and its denominators. Assemblies with unresolved taxonomy cannot be assigned to that subtree and are excluded.
|
| 23 |
|
|
@@ -25,6 +25,10 @@ The inventory accepts `GCA_` accessions with `version_status=latest`. Each assem
|
|
| 25 |
|
| 26 |
Click a group to expand its direct lineages into a new column on the right; every ancestor column stays visible, so the full path from Eukaryota is always on screen. Clicking a group in an earlier column replaces the columns after it. Use breadcrumbs, “Collapse last group”, or shortcuts to go back. Nodes support Enter/Space keyboard navigation. The opening view expands the actual animal/fungal ancestor, Opisthokonta. Each column shows six direct lineages, an expandable remainder, and the selected lineage if it falls outside the top six. Bar and flow heights follow assembly counts within a column; every column is rescaled to the full height. “Other lineages” is an explicitly labeled display aggregate, not an invented clade; its counts sum the remaining siblings. Repeated expansion reaches all siblings without truncating them. Scientific-name/taxon-ID search also reaches individual taxa. Column spacing does not encode time. The view scrolls horizontally, and jumps to the newest column after each expansion.
|
| 27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
The graphic uses server-rendered SVG/HTML with scoped styles in `atlas.css` and delegated click/keyboard handlers in `atlas.js`; no external graphics library or image assets are required. Include these files when deploying.
|
| 29 |
|
| 30 |
The annotation workspace shares the atlas palette and typography through `style.py` and `app.css`: warm panels, serif section headings, green controls, and matching tables, downloads, and disclosures. CDS plots use a solid green positive strand and a dashed warm-brown negative strand; binary labels use green. The fixed light palette stays consistent with the landing graphic under either OS color preference. Include both style files when deploying; Gradio 6 receives the theme and stylesheet in `launch()`.
|
|
|
|
| 17 |
|
| 18 |
## GenBank taxonomy
|
| 19 |
|
| 20 |
+
The landing page opens with an interactive **tree of eukaryotic life**, using NCBI's current GenBank assembly summary and taxonomy. It is drawn as a Sankey diagram: each group is a bar split into annotated (green) and not-annotated (gray) assemblies, and flows carry both parts from a group into its lineages. Counts and percentages appear beside the groups, with details on hover. Each group is labelled with its scientific name and, where one exists, a plain-English name underneath, so the Latin backbone of the tree (Opisthokonta, Eumetazoa, Ecdysozoa) stays readable without prior knowledge. The default **Genome Atlas** tab contains the tree and its lineage controls. A separate **Database** tab holds accession search, segment visualization, and downloads, using the full published-file snapshot. RefSeq exploration can be added beneath the tree. The two equal-width navigation options span the top of the page.
|
| 21 |
|
| 22 |
The viewer is restricted to **Eukaryota (NCBI taxid 2759) and its descendants**, including search, breadcrumbs, and parent navigation. The model predicts eukaryotic annotations; bacteria, archaea, and viruses are outside this display. The current eukaryotic snapshot contains **70,395 assemblies**, of which **17,561 (24.9%)** have published annotations. The underlying SQLite snapshot retains the full NCBI inventory for refresh/provenance, while the interface uses only the eukaryotic subtree and its denominators. Assemblies with unresolved taxonomy cannot be assigned to that subtree and are excluded.
|
| 23 |
|
|
|
|
| 25 |
|
| 26 |
Click a group to expand its direct lineages into a new column on the right; every ancestor column stays visible, so the full path from Eukaryota is always on screen. Clicking a group in an earlier column replaces the columns after it. Use breadcrumbs, “Collapse last group”, or shortcuts to go back. Nodes support Enter/Space keyboard navigation. The opening view expands the actual animal/fungal ancestor, Opisthokonta. Each column shows six direct lineages, an expandable remainder, and the selected lineage if it falls outside the top six. Bar and flow heights follow assembly counts within a column; every column is rescaled to the full height. “Other lineages” is an explicitly labeled display aggregate, not an invented clade; its counts sum the remaining siblings. Repeated expansion reaches all siblings without truncating them. Scientific-name/taxon-ID search also reaches individual taxa. Column spacing does not encode time. The view scrolls horizontally, and jumps to the newest column after each expansion.
|
| 27 |
|
| 28 |
+
English names come from `data/common_names.json`, built by `refresh_common_names.py` from NCBI Taxonomy's `genbank common name` and `common name` entries (about 9,200 taxa) plus a curated table of roughly 190 short glosses for the large unranked clades NCBI leaves unnamed. Glosses are plain-language summaries of the living members of a clade, not formal synonyms; the scientific name stays the primary label and a gloss that merely repeats it is dropped at build time. Rebuild it with `python refresh_common_names.py` once `.cache/coverage/taxdump.tar.gz` is present; the build fails if a curated taxid no longer matches its scientific name in the snapshot.
|
| 29 |
+
|
| 30 |
+
Each group also carries a clade silhouette from [PhyloPic](https://www.phylopic.org), fetched by `refresh_icons.py` into `data/icons/` with the map and credits in `data/icons.json`. The fetcher resolves each taxon's NCBI ID to a PhyloPic node and prefers that node's representative image, falling back to a clade search only when the representative one is not free to use. Both searches exclude NonCommercial and ShareAlike images: NC is unsettled for a Space run by a company, and SA would reach into the repository as soon as an icon were adapted. What ships is CC0, Public Domain Mark and CC BY, stored byte-for-byte as PhyloPic serves it, with every CC BY artist credited in the "Silhouette credits" panel. Icons are fetched for groups with at least 100 assemblies; smaller groups borrow their nearest illustrated ancestor at render time. Gradio serves them as static files through `gr.set_static_paths`, so each is cached once by the browser instead of riding along in every re-render.
|
| 31 |
+
|
| 32 |
The graphic uses server-rendered SVG/HTML with scoped styles in `atlas.css` and delegated click/keyboard handlers in `atlas.js`; no external graphics library or image assets are required. Include these files when deploying.
|
| 33 |
|
| 34 |
The annotation workspace shares the atlas palette and typography through `style.py` and `app.css`: warm panels, serif section headings, green controls, and matching tables, downloads, and disclosures. CDS plots use a solid green positive strand and a dashed warm-brown negative strand; binary labels use green. The fixed light palette stays consistent with the landing graphic under either OS color preference. Include both style files when deploying; Gradio 6 receives the theme and stylesheet in `launch()`.
|
app.css
CHANGED
|
@@ -39,11 +39,11 @@
|
|
| 39 |
/* Full-width navigation: one equal segment for each view. */
|
| 40 |
.gradio-container { width:100%!important; min-width:0!important; box-sizing:border-box; }
|
| 41 |
#atlas-navigation { border:0; background:transparent; min-width:0; max-width:100%; }
|
| 42 |
-
#atlas-navigation > .tab-wrapper { width:100%; height:auto!important; min-height:
|
| 43 |
-
#atlas-navigation > .tab-wrapper > .tab-container { display:
|
| 44 |
-
#atlas-navigation > .tab-wrapper > .tab-container > button { display:flex!important; align-items:center; justify-content:
|
| 45 |
-
#atlas-navigation > .tab-wrapper > .tab-container > button:hover { background:
|
| 46 |
-
#atlas-navigation > .tab-wrapper > .tab-container > button[aria-selected="true"] { background:#
|
| 47 |
#atlas-navigation > .tab-wrapper::before, #atlas-navigation > .tab-wrapper::after,
|
| 48 |
#atlas-navigation > .tab-wrapper > .tab-container::before, #atlas-navigation > .tab-wrapper > .tab-container::after,
|
| 49 |
#atlas-navigation > .tab-wrapper > .tab-container > button::before, #atlas-navigation > .tab-wrapper > .tab-container > button::after { content:none!important; display:none!important; }
|
|
@@ -54,6 +54,6 @@
|
|
| 54 |
.database-heading h1 { color:#173c30; font:400 clamp(32px,5vw,48px)/1.1 Georgia,'Times New Roman',serif; letter-spacing:-1px; margin:0 0 12px; }
|
| 55 |
.database-heading p { color:#647467; font:14px/1.6 Arial,Helvetica,sans-serif; margin:0; }
|
| 56 |
@media(max-width:700px) {
|
| 57 |
-
#atlas-navigation > .tab-wrapper > .tab-container { gap:
|
| 58 |
-
#atlas-navigation > .tab-wrapper > .tab-container > button { font-size:
|
| 59 |
}
|
|
|
|
| 39 |
/* Full-width navigation: one equal segment for each view. */
|
| 40 |
.gradio-container { width:100%!important; min-width:0!important; box-sizing:border-box; }
|
| 41 |
#atlas-navigation { border:0; background:transparent; min-width:0; max-width:100%; }
|
| 42 |
+
#atlas-navigation > .tab-wrapper { width:100%; height:auto!important; min-height:0; border:0!important; box-shadow:none!important; margin:0 0 18px; padding:0; }
|
| 43 |
+
#atlas-navigation > .tab-wrapper > .tab-container { display:flex!important; justify-content:flex-start; gap:26px; width:100%!important; height:auto!important; box-sizing:border-box; border:0!important; border-bottom:1px solid #dbe3d3!important; border-radius:0; padding:0; margin:0; background:transparent; box-shadow:none!important; }
|
| 44 |
+
#atlas-navigation > .tab-wrapper > .tab-container > button { display:inline-flex!important; align-items:center; justify-content:flex-start; width:auto; min-width:0; min-height:0; height:auto!important; box-sizing:border-box; padding:0 2px 11px; margin:0!important; border:0!important; border-bottom:2px solid transparent!important; border-radius:0; box-shadow:none!important; background:transparent; color:#6c7d6a; font:600 14px/1.4 Arial,Helvetica,sans-serif; white-space:nowrap; text-align:left; text-decoration:none!important; transition:color .15s; }
|
| 45 |
+
#atlas-navigation > .tab-wrapper > .tab-container > button:hover { background:transparent; color:#173c30; }
|
| 46 |
+
#atlas-navigation > .tab-wrapper > .tab-container > button[aria-selected="true"] { background:transparent; color:#173c30; border-bottom-color:#245d45!important; }
|
| 47 |
#atlas-navigation > .tab-wrapper::before, #atlas-navigation > .tab-wrapper::after,
|
| 48 |
#atlas-navigation > .tab-wrapper > .tab-container::before, #atlas-navigation > .tab-wrapper > .tab-container::after,
|
| 49 |
#atlas-navigation > .tab-wrapper > .tab-container > button::before, #atlas-navigation > .tab-wrapper > .tab-container > button::after { content:none!important; display:none!important; }
|
|
|
|
| 54 |
.database-heading h1 { color:#173c30; font:400 clamp(32px,5vw,48px)/1.1 Georgia,'Times New Roman',serif; letter-spacing:-1px; margin:0 0 12px; }
|
| 55 |
.database-heading p { color:#647467; font:14px/1.6 Arial,Helvetica,sans-serif; margin:0; }
|
| 56 |
@media(max-width:700px) {
|
| 57 |
+
#atlas-navigation > .tab-wrapper > .tab-container { gap:18px; }
|
| 58 |
+
#atlas-navigation > .tab-wrapper > .tab-container > button { font-size:13px; padding:0 1px 9px; }
|
| 59 |
}
|
atlas.css
CHANGED
|
@@ -31,17 +31,22 @@
|
|
| 31 |
.bar-outline { fill:none; stroke:#f7f8f0; stroke-width:1; }
|
| 32 |
.tree-node { cursor:pointer; }
|
| 33 |
.tree-node.is-direct { cursor:default; }
|
| 34 |
-
.tree-hit { fill:transparent;
|
| 35 |
-
.tree-node:hover .tree-hit,.tree-node:focus .tree-hit { fill:#e5ecdd99; }
|
| 36 |
.tree-node:focus { outline:none; }
|
| 37 |
.tree-node:focus .bar-outline { stroke:#173c30; stroke-width:2; }
|
| 38 |
.tree-node.is-selected .bar-outline { stroke:#173c30; stroke-width:1.5; }
|
| 39 |
.tree-node.is-sibling { opacity:.62; transition:opacity .15s; }
|
| 40 |
.tree-node.is-sibling:hover,.tree-node.is-sibling:focus { opacity:1; }
|
| 41 |
-
.tree-
|
| 42 |
-
.tree-
|
|
|
|
|
|
|
|
|
|
| 43 |
.tree-node.is-selected .tree-label { font-weight:700; fill:#173c30; }
|
|
|
|
| 44 |
.tree-count { font:11px Arial,Helvetica,sans-serif; fill:#697966; }
|
|
|
|
|
|
|
| 45 |
.atlas-footer { display:flex; align-items:center; flex-wrap:wrap; gap:15px; justify-content:space-between; border-top:1px solid #dde4d5; padding-top:14px; color:#6c7a66; font-size:11px; line-height:1.6; }
|
| 46 |
.atlas-legend { display:flex; gap:7px; align-items:center; }
|
| 47 |
.atlas-swatch { width:10px; height:10px; border-radius:2px; }
|
|
|
|
| 31 |
.bar-outline { fill:none; stroke:#f7f8f0; stroke-width:1; }
|
| 32 |
.tree-node { cursor:pointer; }
|
| 33 |
.tree-node.is-direct { cursor:default; }
|
| 34 |
+
.tree-hit { fill:transparent; }
|
|
|
|
| 35 |
.tree-node:focus { outline:none; }
|
| 36 |
.tree-node:focus .bar-outline { stroke:#173c30; stroke-width:2; }
|
| 37 |
.tree-node.is-selected .bar-outline { stroke:#173c30; stroke-width:1.5; }
|
| 38 |
.tree-node.is-sibling { opacity:.62; transition:opacity .15s; }
|
| 39 |
.tree-node.is-sibling:hover,.tree-node.is-sibling:focus { opacity:1; }
|
| 40 |
+
.tree-icon { opacity:.62; transition:opacity .15s; }
|
| 41 |
+
.tree-node.is-selected .tree-icon { opacity:.85; }
|
| 42 |
+
.tree-node:not(.is-direct):hover .tree-icon { opacity:.9; }
|
| 43 |
+
.tree-label,.tree-english,.tree-count { paint-order:stroke; stroke:#f7f8f0; stroke-width:4px; stroke-linejoin:round; }
|
| 44 |
+
.tree-label { font:600 13px Arial,Helvetica,sans-serif; fill:#254735; transition:fill .15s; }
|
| 45 |
.tree-node.is-selected .tree-label { font-weight:700; fill:#173c30; }
|
| 46 |
+
.tree-english { font:italic 11.5px Georgia,'Times New Roman',serif; fill:#5d7a66; }
|
| 47 |
.tree-count { font:11px Arial,Helvetica,sans-serif; fill:#697966; }
|
| 48 |
+
.tree-node:not(.is-direct):hover .tree-label,.tree-node:focus .tree-label { fill:#0f2e22; }
|
| 49 |
+
.tree-node:not(.is-direct):hover .bar-outline { stroke:#287557; stroke-width:2; }
|
| 50 |
.atlas-footer { display:flex; align-items:center; flex-wrap:wrap; gap:15px; justify-content:space-between; border-top:1px solid #dde4d5; padding-top:14px; color:#6c7a66; font-size:11px; line-height:1.6; }
|
| 51 |
.atlas-legend { display:flex; gap:7px; align-items:center; }
|
| 52 |
.atlas-swatch { width:10px; height:10px; border-radius:2px; }
|
data/common_names.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
data/icons.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
data/icons/00508809-a509-4330-9e3d-9d3b54248667.svg
ADDED
|
|
data/icons/0192754b-c8ab-43c0-a475-1a2ad0cfd202.svg
ADDED
|
|
data/icons/01a21193-6599-463c-a5f0-75b6fe03189d.svg
ADDED
|
|
data/icons/02974d7f-f93c-4c59-b847-3b080368c168.svg
ADDED
|
|
data/icons/030163a0-eddc-4bf3-aac2-5e7594124820.svg
ADDED
|
|
data/icons/03d2b502-f7d4-40a9-8be8-b31210286be8.svg
ADDED
|
|
data/icons/0416cb50-2c82-42ac-bd17-ef1b6800ef65.svg
ADDED
|
|
data/icons/04f4fb98-4dbc-424e-81ac-85226becd06b.svg
ADDED
|
|
data/icons/065734f1-db68-4925-81fb-5d44c363b60d.svg
ADDED
|
|
data/icons/07778806-5dcf-4524-9d93-8ead16a51bf9.svg
ADDED
|
|
data/icons/077c76df-f224-4eb1-9c92-6049fc8f8b3e.svg
ADDED
|
|
data/icons/07a8ddc3-6440-4ca8-80e6-ccdaa988a968.svg
ADDED
|
|
data/icons/0950aa57-4538-4fa1-b1f5-c4634f1c695c.svg
ADDED
|
|
data/icons/0953dd54-b97b-4cfd-8944-bb3f45f93466.svg
ADDED
|
|
data/icons/0a61962f-7d02-435c-aca0-d2fd0b757fc3.svg
ADDED
|
|
data/icons/0be250dd-b56a-4ff5-97cc-ec6430e4ea5c.svg
ADDED
|
|
data/icons/0be4e244-8322-444e-a75c-8503c16e10d7.svg
ADDED
|
|
data/icons/0c391d43-30a5-4077-bdcb-fbb80f5d13e6.svg
ADDED
|
|
data/icons/0cd6cc9f-683c-470e-a4a6-3b68beb826fa.svg
ADDED
|
|
data/icons/0d386ce5-28e2-407c-b985-c1aac350bd1a.svg
ADDED
|
|
data/icons/0ec7e6e6-e115-450a-b346-c40685ed3b1a.svg
ADDED
|
|
data/icons/0fde2bb6-0472-4273-bf46-2d6073fa8fbc.svg
ADDED
|
|
data/icons/12b88747-2892-454a-a882-c9c7e5f2c715.svg
ADDED
|
|
data/icons/131051a0-9053-4295-a90a-380a00170784.svg
ADDED
|
|
data/icons/13a4d650-bf9c-46ca-a4d1-b3ed8c8dab41.svg
ADDED
|
|
data/icons/13c1c9de-bc85-47b8-9411-f9aaf35a908c.svg
ADDED
|
|
data/icons/140c1df2-7f74-4f4d-8deb-9138aa956be5.svg
ADDED
|
|
data/icons/14269801-89fe-405c-a425-2286c54ee60d.svg
ADDED
|
|
data/icons/165900f9-969b-4ffa-b2cf-2a0a099b34a4.svg
ADDED
|
|
data/icons/16735c42-c7d7-4394-a2c5-9493129cdf1c.svg
ADDED
|
|
data/icons/1701c916-c68a-4807-8666-c4b8b4bc6656.svg
ADDED
|
|
data/icons/17172a50-685f-4f39-a0d1-c0495e33a2d0.svg
ADDED
|
|
data/icons/1776342b-d628-48f2-a292-3e8479ff95b4.svg
ADDED
|
|
data/icons/179a2862-cb58-4a14-abc6-8fdf73c23364.svg
ADDED
|
|
data/icons/17a3052d-8762-4aa4-9773-6718fec220ee.svg
ADDED
|
|
data/icons/181e0252-d904-4e44-b53d-8b119a4c4e20.svg
ADDED
|
|
data/icons/18af6753-2f5b-49d2-a28d-4cc1b7deaf6f.svg
ADDED
|
|
data/icons/196f946f-f29f-4ca3-bdb2-5a8c5a036fd4.svg
ADDED
|
|
data/icons/198fab1c-ac89-40c1-8243-8615c4133d80.svg
ADDED
|
|
data/icons/199829d3-183a-4eb3-a35a-a8705d28cb56.svg
ADDED
|
|
data/icons/19f1fc0c-aab8-4482-aad4-092987e59748.svg
ADDED
|
|
data/icons/19ff2bcf-7b7a-4d38-b3af-118aa3b4ae48.svg
ADDED
|
|
data/icons/1b0ba0bb-def6-4f6a-afc7-370208ddf4c9.svg
ADDED
|
|
data/icons/1b5ad11e-b5a6-4efd-8a21-d035714d9239.svg
ADDED
|
|