Merge feature/catalog-generator (AR-5): committed Katalog-Generator (gen:catalog) + frozen colorVarietySeed.backend.json + Drift-Guard
Frontend-only (Generator .mts + Seed-Artefakte + catalog-drift test). Gate: vitest 109/109. Backend-Artefakt (70 Eintraege, GEN-4/4b-final) = Quelle fuer die Backend-ColorVariety-Re-Seed-Migration (Pam) vor dem WIPE+REIMPORT. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -40,6 +40,25 @@ npm run build
|
|||||||
npm run preview
|
npm run preview
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Farbschlag-Katalog (AR-5)
|
||||||
|
|
||||||
|
Der Katalog lebt in `src/genetics/catalog.ts` (Single Source of Truth).
|
||||||
|
Nach jeder Änderung dort den Generator laufen lassen:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run gen:catalog
|
||||||
|
```
|
||||||
|
|
||||||
|
Erzeugt zwei Artefakte und committet beide:
|
||||||
|
|
||||||
|
| Datei | Notation | Verwendung |
|
||||||
|
|---|---|---|
|
||||||
|
| `src/genetics/colorVarietySeed.generated.json` | Klammer (`e[f]`, `c[chm]`) | UI-Dropdowns, Frontend-Suche |
|
||||||
|
| `src/genetics/colorVarietySeed.backend.json` | Frozen symbols (`ef`, `cchm`) | EF-Seed-Migrationen (Pam, DATA-Lane) |
|
||||||
|
|
||||||
|
Der vitest-Drift-Guard (`catalog-drift.test.ts`) schlägt fehl, wenn
|
||||||
|
`generated.json` nach einer Katalog-Änderung nicht aktualisiert wurde.
|
||||||
|
|
||||||
## E2E-Tests (QA-1, Playwright)
|
## E2E-Tests (QA-1, Playwright)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -56,4 +75,4 @@ npx playwright test --project=phone # nur Smartphone-Viewport (390px)
|
|||||||
überspringen sich selbst; die übrigen legen eigene Datensätze an.
|
überspringen sich selbst; die übrigen legen eigene Datensätze an.
|
||||||
- Beide Viewports (Smartphone 390px, Laptop 1280px) laufen für jede Spec;
|
- Beide Viewports (Smartphone 390px, Laptop 1280px) laufen für jede Spec;
|
||||||
alle Assertions prüfen die deutschen Oberflächentexte direkt aus
|
alle Assertions prüfen die deutschen Oberflächentexte direkt aus
|
||||||
`src/strings/de.ts`.
|
`src/strings/de.ts`.
|
||||||
|
|||||||
49
gerbil-manager-web/gen-seed.mts
Normal file
49
gerbil-manager-web/gen-seed.mts
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
/**
|
||||||
|
* Katalog-Generator — AR-5
|
||||||
|
*
|
||||||
|
* Erzeugt zwei Artefakte aus catalog.ts (Single Source of Truth):
|
||||||
|
*
|
||||||
|
* colorVarietySeed.generated.json — Display-Notation (Klammer: e[f]/c[chm]/c[h])
|
||||||
|
* → Quelle für UI-Dropdowns, Frontend-Suche.
|
||||||
|
*
|
||||||
|
* colorVarietySeed.backend.json — Frozen internal symbols (ef/cchm/ch)
|
||||||
|
* → Quelle für künftige EF-Seed-Migrationen (Pam).
|
||||||
|
* NICHT in Bracket-Notation ändern — Backend-Parser
|
||||||
|
* erwartet frozen symbols (CR-11-Matcher-Guardrail).
|
||||||
|
*
|
||||||
|
* Ausführen nach jeder Änderung an catalog.ts:
|
||||||
|
* npm run gen:catalog
|
||||||
|
*
|
||||||
|
* Der vitest-Drift-Guard (catalog-drift.test.ts) schlägt fehl, wenn
|
||||||
|
* generated.json veraltet ist — Fehler macht den fehlenden Generator-Lauf sichtbar.
|
||||||
|
*/
|
||||||
|
import { BASE_COLORS, CATALOG, representativeGenotype } from './src/genetics/catalog.ts'
|
||||||
|
import { LOCUS_ORDER } from './src/genetics/loci.ts'
|
||||||
|
import type { Genotype } from './src/genetics/genotype.ts'
|
||||||
|
import { writeFileSync } from 'fs'
|
||||||
|
|
||||||
|
/** Internal (frozen) display string — concatenates canonical allele symbols without bracket mapping. */
|
||||||
|
function toInternalString(g: Genotype): string {
|
||||||
|
return LOCUS_ORDER.filter(
|
||||||
|
(locus) => locus !== 'Sls' || !(g.Sls[0] === 'sl' && g.Sls[1] === 'sl'),
|
||||||
|
)
|
||||||
|
.map((locus) => (g[locus][0] + g[locus][1]).replace(/\?/g, '-'))
|
||||||
|
.join(' ')
|
||||||
|
}
|
||||||
|
|
||||||
|
// ── Display artefact (bracket notation) ─────────────────────────────────────
|
||||||
|
const displayPath = './src/genetics/colorVarietySeed.generated.json'
|
||||||
|
writeFileSync(displayPath, JSON.stringify(CATALOG, null, 2) + '\n')
|
||||||
|
console.log(`[gen:catalog] display → ${displayPath} (${CATALOG.length} rows)`)
|
||||||
|
|
||||||
|
// ── Backend artefact (frozen internal symbols) ───────────────────────────────
|
||||||
|
const backendSeed = BASE_COLORS.map((entry, i) => ({
|
||||||
|
name: entry.name,
|
||||||
|
...(entry.english !== undefined ? { english: entry.english } : {}),
|
||||||
|
canonicalGenotype: toInternalString(representativeGenotype(entry)),
|
||||||
|
sortOrder: i,
|
||||||
|
...(entry.image !== undefined ? { image: entry.image } : {}),
|
||||||
|
}))
|
||||||
|
const backendPath = './src/genetics/colorVarietySeed.backend.json'
|
||||||
|
writeFileSync(backendPath, JSON.stringify(backendSeed, null, 2) + '\n')
|
||||||
|
console.log(`[gen:catalog] backend → ${backendPath} (${backendSeed.length} rows)`)
|
||||||
@@ -10,7 +10,8 @@
|
|||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"test": "vitest run",
|
"test": "vitest run",
|
||||||
"test:watch": "vitest",
|
"test:watch": "vitest",
|
||||||
"e2e": "playwright test"
|
"e2e": "playwright test",
|
||||||
|
"gen:catalog": "npx tsx gen-seed.mts"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jszip": "^3.10.1",
|
"jszip": "^3.10.1",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/**
|
||||||
|
* AR-5 Drift-Guard: colorVarietySeed.generated.json muss mit dem Live-Output
|
||||||
|
* aus catalog.ts übereinstimmen.
|
||||||
|
*
|
||||||
|
* Schlägt dieser Test fehl, wurde catalog.ts verändert ohne danach
|
||||||
|
* `npm run gen:catalog` auszuführen. Fix: `npm run gen:catalog` laufen lassen
|
||||||
|
* und die geänderten JSON-Dateien committen.
|
||||||
|
*/
|
||||||
|
import { readFileSync } from 'fs'
|
||||||
|
import { fileURLToPath } from 'url'
|
||||||
|
import { dirname, join } from 'path'
|
||||||
|
import { describe, it, expect } from 'vitest'
|
||||||
|
import { CATALOG } from '../catalog'
|
||||||
|
|
||||||
|
const __dir = dirname(fileURLToPath(import.meta.url))
|
||||||
|
|
||||||
|
describe('AR-5 Catalog drift-guard', () => {
|
||||||
|
it('colorVarietySeed.generated.json stimmt mit catalog.ts überein (sonst: npm run gen:catalog)', () => {
|
||||||
|
const jsonPath = join(__dir, '..', 'colorVarietySeed.generated.json')
|
||||||
|
const committed = JSON.parse(readFileSync(jsonPath, 'utf-8'))
|
||||||
|
// CATALOG is readonly — deep equality against the plain parsed array is sufficient.
|
||||||
|
expect(committed).toEqual(Array.from(CATALOG))
|
||||||
|
})
|
||||||
|
})
|
||||||
426
gerbil-manager-web/src/genetics/colorVarietySeed.backend.json
Normal file
426
gerbil-manager-web/src/genetics/colorVarietySeed.backend.json
Normal file
@@ -0,0 +1,426 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"name": "Pink Eyed White (PEW)",
|
||||||
|
"english": "Pink Eyed White",
|
||||||
|
"canonicalGenotype": "AA chch DD EE GG pp spsp rere",
|
||||||
|
"sortOrder": 0,
|
||||||
|
"image": "rotaugen-weiss-pew-d-sep-e-sep.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Hermelin",
|
||||||
|
"english": "Dark Tailed White",
|
||||||
|
"canonicalGenotype": "aa chch DD EE GG PP spsp rere",
|
||||||
|
"sortOrder": 1,
|
||||||
|
"image": "hermelin.jpeg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Himalaya",
|
||||||
|
"english": "Himalayan",
|
||||||
|
"canonicalGenotype": "AA chch DD EE GG PP spsp rere",
|
||||||
|
"sortOrder": 2,
|
||||||
|
"image": "himalaya.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Zobel",
|
||||||
|
"english": "Sable",
|
||||||
|
"canonicalGenotype": "aa cchmcchm DD EE gg PP spsp rere",
|
||||||
|
"sortOrder": 3,
|
||||||
|
"image": "zobel.jpeg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Rotaugenschimmel",
|
||||||
|
"english": "Red-Eyed Roan",
|
||||||
|
"canonicalGenotype": "AA CC DD efef GG pp spsp rere",
|
||||||
|
"sortOrder": 4,
|
||||||
|
"image": "rotaugen-schimmel.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Agouti",
|
||||||
|
"english": "Golden Agouti",
|
||||||
|
"canonicalGenotype": "AA CC DD EE GG PP spsp rere",
|
||||||
|
"sortOrder": 5,
|
||||||
|
"image": "agouti-mit-erklaerung-der-genloci.JPG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Schwarz",
|
||||||
|
"english": "Black",
|
||||||
|
"canonicalGenotype": "aa CC DD EE GG PP spsp rere",
|
||||||
|
"sortOrder": 6,
|
||||||
|
"image": "schwarz.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Silberagouti",
|
||||||
|
"english": "Grey Agouti",
|
||||||
|
"canonicalGenotype": "AA CC DD EE gg PP spsp rere",
|
||||||
|
"sortOrder": 7,
|
||||||
|
"image": "silberagouti.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Anthrazit",
|
||||||
|
"english": "Slate",
|
||||||
|
"canonicalGenotype": "aa CC DD EE gg PP spsp rere",
|
||||||
|
"sortOrder": 8,
|
||||||
|
"image": "anthrazit.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Algierfuchs",
|
||||||
|
"english": "Dark-Eyed Honey",
|
||||||
|
"canonicalGenotype": "AA CC DD ee GG PP spsp rere",
|
||||||
|
"sortOrder": 9,
|
||||||
|
"image": "algierfuchs.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Blau",
|
||||||
|
"english": "Blue",
|
||||||
|
"canonicalGenotype": "aa CC dd EE GG PP spsp rere",
|
||||||
|
"sortOrder": 10,
|
||||||
|
"image": "blau-schwarz-dd.JPG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Gold",
|
||||||
|
"english": "Argente Golden",
|
||||||
|
"canonicalGenotype": "AA CC DD EE GG pp spsp rere",
|
||||||
|
"sortOrder": 11,
|
||||||
|
"image": "gold.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Platin",
|
||||||
|
"english": "Lilac",
|
||||||
|
"canonicalGenotype": "aa CC DD EE GG pp spsp rere",
|
||||||
|
"sortOrder": 12,
|
||||||
|
"image": "platin.JPG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Goldfuchs",
|
||||||
|
"english": "Yellow Fox",
|
||||||
|
"canonicalGenotype": "AA CC DD ee GG pp spsp rere",
|
||||||
|
"sortOrder": 13,
|
||||||
|
"image": "goldfuchs.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Rotfuchs",
|
||||||
|
"english": "Argente Nutmeg",
|
||||||
|
"canonicalGenotype": "aa CC DD ee GG pp spsp rere",
|
||||||
|
"sortOrder": 14,
|
||||||
|
"image": "rotfuchs.JPG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Gold",
|
||||||
|
"english": "dd Argente Golden",
|
||||||
|
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
||||||
|
"sortOrder": 15,
|
||||||
|
"image": "gold-dd.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Platin",
|
||||||
|
"english": "dd Lilac",
|
||||||
|
"canonicalGenotype": "aa CC dd EE GG pp spsp rere",
|
||||||
|
"sortOrder": 16,
|
||||||
|
"image": "platin-dd.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Altweiss (REW)",
|
||||||
|
"canonicalGenotype": "aa CC DD EE gg pp spsp rere",
|
||||||
|
"sortOrder": 17,
|
||||||
|
"image": "altweiss-rew.jpeg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Apricot (Blassfuchs)",
|
||||||
|
"canonicalGenotype": "AA CC DD ee gg pp spsp rere",
|
||||||
|
"sortOrder": 18,
|
||||||
|
"image": "apricot-blassfuchs.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Blaufuchs",
|
||||||
|
"canonicalGenotype": "aa CC DD ee gg PP spsp rere",
|
||||||
|
"sortOrder": 19,
|
||||||
|
"image": "blaufuchs.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "C-Separator",
|
||||||
|
"canonicalGenotype": "aa CC DD ee gg pp spsp rere",
|
||||||
|
"sortOrder": 20,
|
||||||
|
"image": "c-separator.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Elfenbein",
|
||||||
|
"canonicalGenotype": "AA CC DD EE gg pp spsp rere",
|
||||||
|
"sortOrder": 21,
|
||||||
|
"image": "elfenbein.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Kohlfuchs",
|
||||||
|
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
||||||
|
"sortOrder": 22,
|
||||||
|
"image": "kohlfuchs.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Polarfuchs",
|
||||||
|
"canonicalGenotype": "AA CC DD ee gg PP spsp rere",
|
||||||
|
"sortOrder": 23,
|
||||||
|
"image": "polarfuchs.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Saphir",
|
||||||
|
"canonicalGenotype": "aa CC DD EE GG pp spsp rere",
|
||||||
|
"sortOrder": 24,
|
||||||
|
"image": "saphir.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Orangeschimmel",
|
||||||
|
"canonicalGenotype": "AA CC DD efef GG PP spsp rere",
|
||||||
|
"sortOrder": 25,
|
||||||
|
"image": "schimmel-orangeschimmel.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Topas",
|
||||||
|
"canonicalGenotype": "AA CC DD EE GG pp spsp rere",
|
||||||
|
"sortOrder": 26,
|
||||||
|
"image": "topas.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Platin-Hell",
|
||||||
|
"canonicalGenotype": "aa CC DD EE GG pp spsp rere",
|
||||||
|
"sortOrder": 27,
|
||||||
|
"image": "platin-hell.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Agouti",
|
||||||
|
"canonicalGenotype": "AA CC dd EE GG PP spsp rere",
|
||||||
|
"sortOrder": 28,
|
||||||
|
"image": "agouti-dd.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Silberagouti",
|
||||||
|
"canonicalGenotype": "AA CC dd EE gg PP spsp rere",
|
||||||
|
"sortOrder": 29,
|
||||||
|
"image": "silberagouti-dd.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Kohlfuchs",
|
||||||
|
"canonicalGenotype": "aa CC dd ee GG PP spsp rere",
|
||||||
|
"sortOrder": 30,
|
||||||
|
"image": "kohlfuchs-dd.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Anthrazit",
|
||||||
|
"canonicalGenotype": "aa CC dd EE gg PP spsp rere",
|
||||||
|
"sortOrder": 31,
|
||||||
|
"image": "anthrazit-dd.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Algierfuchs",
|
||||||
|
"canonicalGenotype": "AA CC dd ee GG PP spsp rere",
|
||||||
|
"sortOrder": 32
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Goldfuchs",
|
||||||
|
"canonicalGenotype": "AA CC dd ee GG pp spsp rere",
|
||||||
|
"sortOrder": 33
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Rotfuchs",
|
||||||
|
"canonicalGenotype": "aa CC dd ee GG pp spsp rere",
|
||||||
|
"sortOrder": 34
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Polarfuchs",
|
||||||
|
"canonicalGenotype": "AA CC dd ee gg PP spsp rere",
|
||||||
|
"sortOrder": 35
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Silberschimmel",
|
||||||
|
"canonicalGenotype": "AA CC DD efef gg PP spsp rere",
|
||||||
|
"sortOrder": 36,
|
||||||
|
"image": "silberschimmel.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Polarfuchsschimmel",
|
||||||
|
"canonicalGenotype": "AA CC DD efef gg PP spsp rere",
|
||||||
|
"sortOrder": 37,
|
||||||
|
"image": "polarfuchsschimmel.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Algierfuchsschimmel",
|
||||||
|
"canonicalGenotype": "AA CC DD efef GG PP spsp rere",
|
||||||
|
"sortOrder": 38,
|
||||||
|
"image": "algierfuchsschimmel.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Kohlfuchsschimmel",
|
||||||
|
"canonicalGenotype": "aa CC DD efef GG PP spsp rere",
|
||||||
|
"sortOrder": 39,
|
||||||
|
"image": "kohlfuchsschimmel.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Blaufuchsschimmel",
|
||||||
|
"canonicalGenotype": "aa CC DD efef gg PP spsp rere",
|
||||||
|
"sortOrder": 40,
|
||||||
|
"image": "blaufuchsschimmel.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Kohlfuchs, hell",
|
||||||
|
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
||||||
|
"sortOrder": 41,
|
||||||
|
"image": "kohlfuchs-hell.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Goldfuchs, hell",
|
||||||
|
"canonicalGenotype": "AA CC DD ee GG pp spsp rere",
|
||||||
|
"sortOrder": 42,
|
||||||
|
"image": "goldfuchs-hell.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Goldfuchsschimmel",
|
||||||
|
"canonicalGenotype": "AA CC DD efef GG pp spsp rere",
|
||||||
|
"sortOrder": 43,
|
||||||
|
"image": "goldfuchsschimmel.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Gold-Hell",
|
||||||
|
"canonicalGenotype": "AA CC DD EE GG pp spsp rere",
|
||||||
|
"sortOrder": 44,
|
||||||
|
"image": "gold-hell.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Blaufuchs, hell",
|
||||||
|
"canonicalGenotype": "aa CC DD ee gg PP spsp rere",
|
||||||
|
"sortOrder": 45,
|
||||||
|
"image": "blaufuchs-hell.jpeg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Rotfuchsschimmel",
|
||||||
|
"canonicalGenotype": "aa CC DD efef GG pp spsp rere",
|
||||||
|
"sortOrder": 46,
|
||||||
|
"image": "rotfuchsschimmel.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Polarfuchs, hell",
|
||||||
|
"canonicalGenotype": "AA CC DD ee gg PP spsp rere",
|
||||||
|
"sortOrder": 47,
|
||||||
|
"image": "polarfuchs-hell.jpeg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Kohlfuchsschimmel, hell",
|
||||||
|
"canonicalGenotype": "aa CC DD efef GG PP spsp rere",
|
||||||
|
"sortOrder": 48,
|
||||||
|
"image": "kohlfuchsschimmel-hell.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Rotfuchs, hell",
|
||||||
|
"canonicalGenotype": "aa CC DD ee GG pp spsp rere",
|
||||||
|
"sortOrder": 49,
|
||||||
|
"image": "rotfuchs-hell.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Kohlfuchs-Hell",
|
||||||
|
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
||||||
|
"sortOrder": 50,
|
||||||
|
"image": "kohlfuchs-hell-2.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Algierfuchs, hell",
|
||||||
|
"canonicalGenotype": "AA CC DD ee GG PP spsp rere",
|
||||||
|
"sortOrder": 51,
|
||||||
|
"image": "algierfuchs-hell.JPG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Topas",
|
||||||
|
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
||||||
|
"sortOrder": 52,
|
||||||
|
"image": "topas-dd.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Blaufuchs",
|
||||||
|
"canonicalGenotype": "aa CC dd ee gg pp spsp rere",
|
||||||
|
"sortOrder": 53,
|
||||||
|
"image": "blaufuchs-dd.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Marder",
|
||||||
|
"canonicalGenotype": "aa cchmcchm DD EE GG PP spsp rere",
|
||||||
|
"sortOrder": 54,
|
||||||
|
"image": "marder.JPG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Siam",
|
||||||
|
"canonicalGenotype": "aa cchmch DD EE GG PP spsp rere",
|
||||||
|
"sortOrder": 55,
|
||||||
|
"image": "siam-marder-hell.JPG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Zobel-Hell",
|
||||||
|
"canonicalGenotype": "aa cchmch DD EE gg PP spsp rere",
|
||||||
|
"sortOrder": 56,
|
||||||
|
"image": "zobel-hell.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CP-Agouti",
|
||||||
|
"canonicalGenotype": "AA cchmcchm DD EE GG PP spsp rere",
|
||||||
|
"sortOrder": 57,
|
||||||
|
"image": "agouti-cp.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CP-Agouti-Hell",
|
||||||
|
"canonicalGenotype": "AA cchmch DD EE GG PP spsp rere",
|
||||||
|
"sortOrder": 58
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CP-Silberagouti",
|
||||||
|
"canonicalGenotype": "AA cchmcchm DD EE gg PP spsp rere",
|
||||||
|
"sortOrder": 59,
|
||||||
|
"image": "silberagouti-cp.JPG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CP-Silberagouti-Hell",
|
||||||
|
"canonicalGenotype": "AA cchmch DD EE gg PP spsp rere",
|
||||||
|
"sortOrder": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CP-Algierfuchs",
|
||||||
|
"canonicalGenotype": "AA cchmcchm DD ee GG PP spsp rere",
|
||||||
|
"sortOrder": 61,
|
||||||
|
"image": "algierfuchs-cp.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CP-Algierfuchs-Hell",
|
||||||
|
"canonicalGenotype": "AA cchmch DD ee GG PP spsp rere",
|
||||||
|
"sortOrder": 62
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CP-Polarfuchs",
|
||||||
|
"canonicalGenotype": "AA cchmcchm DD ee gg PP spsp rere",
|
||||||
|
"sortOrder": 63,
|
||||||
|
"image": "polarfuchs-cp.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CP-Polarfuchs-Hell",
|
||||||
|
"canonicalGenotype": "AA cchmch DD ee gg PP spsp rere",
|
||||||
|
"sortOrder": 64
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CP-Fuchs",
|
||||||
|
"canonicalGenotype": "AA cchmcchm dd ee GG PP spsp rere",
|
||||||
|
"sortOrder": 65
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CP-Fuchs-Hell",
|
||||||
|
"canonicalGenotype": "AA cchmch dd ee GG PP spsp rere",
|
||||||
|
"sortOrder": 66
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CP-Blaufuchs",
|
||||||
|
"canonicalGenotype": "AA cchmcchm dd ee gg PP spsp rere",
|
||||||
|
"sortOrder": 67
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CP-Orangeschimmel",
|
||||||
|
"canonicalGenotype": "AA cchmcchm DD efef GG PP spsp rere",
|
||||||
|
"sortOrder": 68
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CP-Orangeschimmel-Hell",
|
||||||
|
"canonicalGenotype": "AA cchmch DD efef GG PP spsp rere",
|
||||||
|
"sortOrder": 69
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -105,14 +105,14 @@
|
|||||||
"image": "rotfuchs.JPG"
|
"image": "rotfuchs.JPG"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "dd Gold",
|
"name": "Dilute Gold",
|
||||||
"english": "dd Argente Golden",
|
"english": "dd Argente Golden",
|
||||||
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
||||||
"sortOrder": 15,
|
"sortOrder": 15,
|
||||||
"image": "gold-dd.jpg"
|
"image": "gold-dd.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "dd Platin",
|
"name": "Dilute Platin",
|
||||||
"english": "dd Lilac",
|
"english": "dd Lilac",
|
||||||
"canonicalGenotype": "aa CC dd EE GG pp spsp rere",
|
"canonicalGenotype": "aa CC dd EE GG pp spsp rere",
|
||||||
"sortOrder": 16,
|
"sortOrder": 16,
|
||||||
@@ -185,222 +185,242 @@
|
|||||||
"image": "platin-hell.jpg"
|
"image": "platin-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Agouti dd",
|
"name": "Dilute Agouti",
|
||||||
"canonicalGenotype": "AA CC dd EE GG PP spsp rere",
|
"canonicalGenotype": "AA CC dd EE GG PP spsp rere",
|
||||||
"sortOrder": 28,
|
"sortOrder": 28,
|
||||||
"image": "agouti-dd.jpg"
|
"image": "agouti-dd.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Silberagouti dd",
|
"name": "Dilute Silberagouti",
|
||||||
"canonicalGenotype": "AA CC dd EE gg PP spsp rere",
|
"canonicalGenotype": "AA CC dd EE gg PP spsp rere",
|
||||||
"sortOrder": 29,
|
"sortOrder": 29,
|
||||||
"image": "silberagouti-dd.jpg"
|
"image": "silberagouti-dd.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Kohlfuchs dd",
|
"name": "Dilute Kohlfuchs",
|
||||||
"canonicalGenotype": "aa CC dd ee GG PP spsp rere",
|
"canonicalGenotype": "aa CC dd ee GG PP spsp rere",
|
||||||
"sortOrder": 30,
|
"sortOrder": 30,
|
||||||
"image": "kohlfuchs-dd.jpg"
|
"image": "kohlfuchs-dd.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Anthrazit dd",
|
"name": "Dilute Anthrazit",
|
||||||
"canonicalGenotype": "aa CC dd EE gg PP spsp rere",
|
"canonicalGenotype": "aa CC dd EE gg PP spsp rere",
|
||||||
"sortOrder": 31,
|
"sortOrder": 31,
|
||||||
"image": "anthrazit-dd.jpg"
|
"image": "anthrazit-dd.jpg"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Algierfuchs",
|
||||||
|
"canonicalGenotype": "AA CC dd ee GG PP spsp rere",
|
||||||
|
"sortOrder": 32
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Goldfuchs",
|
||||||
|
"canonicalGenotype": "AA CC dd ee GG pp spsp rere",
|
||||||
|
"sortOrder": 33
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Rotfuchs",
|
||||||
|
"canonicalGenotype": "aa CC dd ee GG pp spsp rere",
|
||||||
|
"sortOrder": 34
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Dilute Polarfuchs",
|
||||||
|
"canonicalGenotype": "AA CC dd ee gg PP spsp rere",
|
||||||
|
"sortOrder": 35
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Silberschimmel",
|
"name": "Silberschimmel",
|
||||||
"canonicalGenotype": "AA CC DD e[f]e[f] gg PP spsp rere",
|
"canonicalGenotype": "AA CC DD e[f]e[f] gg PP spsp rere",
|
||||||
"sortOrder": 32,
|
"sortOrder": 36,
|
||||||
"image": "silberschimmel.jpg"
|
"image": "silberschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Polarfuchsschimmel",
|
"name": "Polarfuchsschimmel",
|
||||||
"canonicalGenotype": "AA CC DD e[f]e[f] gg PP spsp rere",
|
"canonicalGenotype": "AA CC DD e[f]e[f] gg PP spsp rere",
|
||||||
"sortOrder": 33,
|
"sortOrder": 37,
|
||||||
"image": "polarfuchsschimmel.jpg"
|
"image": "polarfuchsschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Algierfuchsschimmel",
|
"name": "Algierfuchsschimmel",
|
||||||
"canonicalGenotype": "AA CC DD e[f]e[f] GG PP spsp rere",
|
"canonicalGenotype": "AA CC DD e[f]e[f] GG PP spsp rere",
|
||||||
"sortOrder": 34,
|
"sortOrder": 38,
|
||||||
"image": "algierfuchsschimmel.jpg"
|
"image": "algierfuchsschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Kohlfuchsschimmel",
|
"name": "Kohlfuchsschimmel",
|
||||||
"canonicalGenotype": "aa CC DD e[f]e[f] GG PP spsp rere",
|
"canonicalGenotype": "aa CC DD e[f]e[f] GG PP spsp rere",
|
||||||
"sortOrder": 35,
|
"sortOrder": 39,
|
||||||
"image": "kohlfuchsschimmel.jpg"
|
"image": "kohlfuchsschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blaufuchsschimmel",
|
"name": "Blaufuchsschimmel",
|
||||||
"canonicalGenotype": "aa CC DD e[f]e[f] gg PP spsp rere",
|
"canonicalGenotype": "aa CC DD e[f]e[f] gg PP spsp rere",
|
||||||
"sortOrder": 36,
|
"sortOrder": 40,
|
||||||
"image": "blaufuchsschimmel.jpg"
|
"image": "blaufuchsschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Kohlfuchs, hell",
|
"name": "Kohlfuchs, hell",
|
||||||
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
||||||
"sortOrder": 37,
|
"sortOrder": 41,
|
||||||
"image": "kohlfuchs-hell.jpg"
|
"image": "kohlfuchs-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Goldfuchs, hell",
|
"name": "Goldfuchs, hell",
|
||||||
"canonicalGenotype": "AA CC DD ee GG pp spsp rere",
|
"canonicalGenotype": "AA CC DD ee GG pp spsp rere",
|
||||||
"sortOrder": 38,
|
"sortOrder": 42,
|
||||||
"image": "goldfuchs-hell.jpg"
|
"image": "goldfuchs-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Goldfuchsschimmel",
|
"name": "Goldfuchsschimmel",
|
||||||
"canonicalGenotype": "AA CC DD e[f]e[f] GG pp spsp rere",
|
"canonicalGenotype": "AA CC DD e[f]e[f] GG pp spsp rere",
|
||||||
"sortOrder": 39,
|
"sortOrder": 43,
|
||||||
"image": "goldfuchsschimmel.jpg"
|
"image": "goldfuchsschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Gold-Hell",
|
"name": "Gold-Hell",
|
||||||
"canonicalGenotype": "AA CC DD EE GG pp spsp rere",
|
"canonicalGenotype": "AA CC DD EE GG pp spsp rere",
|
||||||
"sortOrder": 40,
|
"sortOrder": 44,
|
||||||
"image": "gold-hell.jpg"
|
"image": "gold-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blaufuchs, hell",
|
"name": "Blaufuchs, hell",
|
||||||
"canonicalGenotype": "aa CC DD ee gg PP spsp rere",
|
"canonicalGenotype": "aa CC DD ee gg PP spsp rere",
|
||||||
"sortOrder": 41,
|
"sortOrder": 45,
|
||||||
"image": "blaufuchs-hell.jpeg"
|
"image": "blaufuchs-hell.jpeg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Rotfuchsschimmel",
|
"name": "Rotfuchsschimmel",
|
||||||
"canonicalGenotype": "aa CC DD e[f]e[f] GG pp spsp rere",
|
"canonicalGenotype": "aa CC DD e[f]e[f] GG pp spsp rere",
|
||||||
"sortOrder": 42,
|
"sortOrder": 46,
|
||||||
"image": "rotfuchsschimmel.jpg"
|
"image": "rotfuchsschimmel.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Polarfuchs, hell",
|
"name": "Polarfuchs, hell",
|
||||||
"canonicalGenotype": "AA CC DD ee gg PP spsp rere",
|
"canonicalGenotype": "AA CC DD ee gg PP spsp rere",
|
||||||
"sortOrder": 43,
|
"sortOrder": 47,
|
||||||
"image": "polarfuchs-hell.jpeg"
|
"image": "polarfuchs-hell.jpeg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Kohlfuchsschimmel, hell",
|
"name": "Kohlfuchsschimmel, hell",
|
||||||
"canonicalGenotype": "aa CC DD e[f]e[f] GG PP spsp rere",
|
"canonicalGenotype": "aa CC DD e[f]e[f] GG PP spsp rere",
|
||||||
"sortOrder": 44,
|
"sortOrder": 48,
|
||||||
"image": "kohlfuchsschimmel-hell.jpg"
|
"image": "kohlfuchsschimmel-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Rotfuchs, hell",
|
"name": "Rotfuchs, hell",
|
||||||
"canonicalGenotype": "aa CC DD ee GG pp spsp rere",
|
"canonicalGenotype": "aa CC DD ee GG pp spsp rere",
|
||||||
"sortOrder": 45,
|
"sortOrder": 49,
|
||||||
"image": "rotfuchs-hell.jpg"
|
"image": "rotfuchs-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Kohlfuchs-Hell",
|
"name": "Kohlfuchs-Hell",
|
||||||
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
"canonicalGenotype": "aa CC DD ee GG PP spsp rere",
|
||||||
"sortOrder": 46,
|
"sortOrder": 50,
|
||||||
"image": "kohlfuchs-hell-2.jpg"
|
"image": "kohlfuchs-hell-2.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Algierfuchs, hell",
|
"name": "Algierfuchs, hell",
|
||||||
"canonicalGenotype": "AA CC DD ee GG PP spsp rere",
|
"canonicalGenotype": "AA CC DD ee GG PP spsp rere",
|
||||||
"sortOrder": 47,
|
"sortOrder": 51,
|
||||||
"image": "algierfuchs-hell.JPG"
|
"image": "algierfuchs-hell.JPG"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Topas dd",
|
"name": "Dilute Topas",
|
||||||
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
"canonicalGenotype": "AA CC dd EE GG pp spsp rere",
|
||||||
"sortOrder": 48,
|
"sortOrder": 52,
|
||||||
"image": "topas-dd.jpg"
|
"image": "topas-dd.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Blaufuchs dd",
|
"name": "Dilute Blaufuchs",
|
||||||
"canonicalGenotype": "aa CC dd ee gg pp spsp rere",
|
"canonicalGenotype": "aa CC dd ee gg pp spsp rere",
|
||||||
"sortOrder": 49,
|
"sortOrder": 53,
|
||||||
"image": "blaufuchs-dd.jpg"
|
"image": "blaufuchs-dd.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Marder",
|
"name": "Marder",
|
||||||
"canonicalGenotype": "aa c[chm]c[chm] DD EE GG PP spsp rere",
|
"canonicalGenotype": "aa c[chm]c[chm] DD EE GG PP spsp rere",
|
||||||
"sortOrder": 50,
|
"sortOrder": 54,
|
||||||
"image": "marder.JPG"
|
"image": "marder.JPG"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Siam",
|
"name": "Siam",
|
||||||
"canonicalGenotype": "aa c[chm]c[h] DD EE GG PP spsp rere",
|
"canonicalGenotype": "aa c[chm]c[h] DD EE GG PP spsp rere",
|
||||||
"sortOrder": 51,
|
"sortOrder": 55,
|
||||||
"image": "siam-marder-hell.JPG"
|
"image": "siam-marder-hell.JPG"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Zobel-Hell",
|
"name": "Zobel-Hell",
|
||||||
"canonicalGenotype": "aa c[chm]c[h] DD EE gg PP spsp rere",
|
"canonicalGenotype": "aa c[chm]c[h] DD EE gg PP spsp rere",
|
||||||
"sortOrder": 52,
|
"sortOrder": 56,
|
||||||
"image": "zobel-hell.jpg"
|
"image": "zobel-hell.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Agouti",
|
"name": "CP-Agouti",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] DD EE GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] DD EE GG PP spsp rere",
|
||||||
"sortOrder": 53,
|
"sortOrder": 57,
|
||||||
"image": "agouti-cp.jpg"
|
"image": "agouti-cp.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Agouti-Hell",
|
"name": "CP-Agouti-Hell",
|
||||||
"canonicalGenotype": "AA c[chm]c[h] DD EE GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[h] DD EE GG PP spsp rere",
|
||||||
"sortOrder": 54
|
"sortOrder": 58
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Silberagouti",
|
"name": "CP-Silberagouti",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] DD EE gg PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] DD EE gg PP spsp rere",
|
||||||
"sortOrder": 55,
|
"sortOrder": 59,
|
||||||
"image": "silberagouti-cp.JPG"
|
"image": "silberagouti-cp.JPG"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Silberagouti-Hell",
|
"name": "CP-Silberagouti-Hell",
|
||||||
"canonicalGenotype": "AA c[chm]c[h] DD EE gg PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[h] DD EE gg PP spsp rere",
|
||||||
"sortOrder": 56
|
"sortOrder": 60
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Algierfuchs",
|
"name": "CP-Algierfuchs",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] DD ee GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] DD ee GG PP spsp rere",
|
||||||
"sortOrder": 57,
|
"sortOrder": 61,
|
||||||
"image": "algierfuchs-cp.jpg"
|
"image": "algierfuchs-cp.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Algierfuchs-Hell",
|
"name": "CP-Algierfuchs-Hell",
|
||||||
"canonicalGenotype": "AA c[chm]c[h] DD ee GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[h] DD ee GG PP spsp rere",
|
||||||
"sortOrder": 58
|
"sortOrder": 62
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Polarfuchs",
|
"name": "CP-Polarfuchs",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] DD ee gg PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] DD ee gg PP spsp rere",
|
||||||
"sortOrder": 59,
|
"sortOrder": 63,
|
||||||
"image": "polarfuchs-cp.jpg"
|
"image": "polarfuchs-cp.jpg"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Polarfuchs-Hell",
|
"name": "CP-Polarfuchs-Hell",
|
||||||
"canonicalGenotype": "AA c[chm]c[h] DD ee gg PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[h] DD ee gg PP spsp rere",
|
||||||
"sortOrder": 60
|
"sortOrder": 64
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Fuchs",
|
"name": "CP-Fuchs",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] dd ee GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] dd ee GG PP spsp rere",
|
||||||
"sortOrder": 61
|
"sortOrder": 65
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Fuchs-Hell",
|
"name": "CP-Fuchs-Hell",
|
||||||
"canonicalGenotype": "AA c[chm]c[h] dd ee GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[h] dd ee GG PP spsp rere",
|
||||||
"sortOrder": 62
|
"sortOrder": 66
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Blaufuchs",
|
"name": "CP-Blaufuchs",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] dd ee gg PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] dd ee gg PP spsp rere",
|
||||||
"sortOrder": 63
|
"sortOrder": 67
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Orangeschimmel",
|
"name": "CP-Orangeschimmel",
|
||||||
"canonicalGenotype": "AA c[chm]c[chm] DD e[f]e[f] GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[chm] DD e[f]e[f] GG PP spsp rere",
|
||||||
"sortOrder": 64
|
"sortOrder": 68
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CP-Orangeschimmel-Hell",
|
"name": "CP-Orangeschimmel-Hell",
|
||||||
"canonicalGenotype": "AA c[chm]c[h] DD e[f]e[f] GG PP spsp rere",
|
"canonicalGenotype": "AA c[chm]c[h] DD e[f]e[f] GG PP spsp rere",
|
||||||
"sortOrder": 65
|
"sortOrder": 69
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user