{"version":3,"sources":["../src/core/constants.ts","../src/core/correspondence-model.ts","../src/core/types.ts","../src/core/systems/kaabalah.ts","../src/core/systems/hermetic-qabalah.ts","../src/core/systems/lurianic-kabbalah.ts","../src/core/systems/registry.ts","../src/core/systems/module-manager.ts","../src/core/tree-of-life.ts","../src/core/factory.ts"],"names":["KaabalahTypes","LetterTypes","WesternAstrologyTypes","TarotTypes","TantraTypes","NumerologyTypes","MiscTypes","planet","BRIDGES","LOADERS","SYSTEM","UNLOADERS","loadColors","loadMusicalNotes","loadWesternAstrology","unloadColors","unloadMusicalNotes","unloadWesternAstrology","linkColorsAndSounds","id"],"mappings":"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AAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,WAAW;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,aAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,sBAAsB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAA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","sourcesContent":["import { KaabalahTypes, LetterTypes, NodeData, NodeId, TarotTypes } from \"./types\";\n\n\ninterface HermeticQabalahSphereData {\n  /**\n   * In Atziluth\n   */\n  divineName: string;\n  /**\n   * In Briah\n   */\n  archangelicName: string;\n  /**\n   * In Yetzirah\n   */\n  angelicName: string;\n  /**\n   * In Assiah\n   */\n  mundaneName: string;\n}\n\nexport type SphereData = {\n  hebrewSpelling: string;\n  englishName: string;\n  // TODO: add magical images\n  magicalImage?: string;\n} & Partial<HermeticQabalahSphereData>;\n\nexport type PathData = {\n  meaning?: string;\n  from: NodeId<KaabalahTypes.SPHERE>;\n  to: NodeId<KaabalahTypes.SPHERE>;\n};\n\nexport type WorldData = {\n  englishName: string;\n};\n\nexport type HebrewLetterData = {\n  type: \"mother\" | \"double\" | \"simple\";\n  gematriaValue: number;\n  gematriaValueWhenEnding?: number;\n  symbol: string;\n  hieroglyph: string;\n  yvritMeaning: string;\n  character: string;\n  characterWhenEnding?: string;\n};\n\nexport type LatinLetterData = {\n  isVowel: boolean;\n};\n\nexport type ColorData = {\n  colorDescription: string;\n  colorNames: string[];\n  colorHexCodes: string[];\n};\n\nexport type MusicalNoteData = {\n  note: string;\n  noteDescription: string;\n  // 9 octaves\n  frequencies?: [string, string, string, string, string, string, string, string, string];\n};\n\nexport type TarotArkAnnuData = {\n  type: \"major\" | \"minor\" | \"court\";\n  suit?: (typeof TAROT_SUITS)[keyof typeof TAROT_SUITS];\n  aliases?: readonly string[];\n  keywords?: readonly string[];\n  descriptiveData?: Partial<Record<keyof typeof TAROT_DECKS, {\n    name?: string;\n    meaning?: string;\n    reversedMeaning?: string;\n    keywords?: string[];\n  }>>;\n};\n\nexport const FOUR_WORLDS = {\n  ATZILUTH: \"Atziluth\",\n  BRIAH: \"Briah\",\n  YETZIRAH: \"Yetzirah\",\n  ASSIAH: \"Assiah\",\n} as const;\n\nexport const FOUR_WORLDS_DATA: Record<keyof typeof FOUR_WORLDS, NodeData<KaabalahTypes.WORLD>> = {\n  ATZILUTH: { englishName: \"World of Emanation\" },\n  BRIAH: { englishName: \"World of Creation\" },\n  YETZIRAH: { englishName: \"World of Formation\" },\n  ASSIAH: { englishName: \"World of Action\" },\n} as const;\n\nexport const SPHERES = {\n  KETHER: \"Kether\",\n  CHOKHMAH: \"Chokhmah\",\n  BINAH: \"Binah\",\n  DAATH: \"Daath\",\n  CHESED: \"Chesed\",\n  GEBURAH: \"Geburah\",\n  TIPHARETH: \"Tiphareth\",\n  NETZACH: \"Netzach\",\n  HOD: \"Hod\",\n  YESOD: \"Yesod\",\n  MALKUTH: \"Malkuth\",\n} as const;\n\nexport const SPHERES_DATA: Record<keyof typeof SPHERES, NodeData<KaabalahTypes.SPHERE>> = {\n  KETHER: { hebrewSpelling: \"כתר\", englishName: \"Crown\" },\n  CHOKHMAH: { hebrewSpelling: \"חכמה\", englishName: \"Wisdom\" },\n  BINAH: { hebrewSpelling: \"בינה\", englishName: \"Understanding\" },\n  CHESED: { hebrewSpelling: \"חסד\", englishName: \"Mercy\" },\n  GEBURAH: { hebrewSpelling: \"גבורה\", englishName: \"Severity\" },\n  TIPHARETH: { hebrewSpelling: \"תפארת\", englishName: \"Beauty\" },\n  NETZACH: { hebrewSpelling: \"נצח\", englishName: \"Victory\" },\n  HOD: { hebrewSpelling: \"הוד\", englishName: \"Splendor\" },\n  YESOD: { hebrewSpelling: \"יסוד\", englishName: \"Foundation\" },\n  MALKUTH: { hebrewSpelling: \"מלכות\", englishName: \"Kingdom\" },\n  DAATH: { hebrewSpelling: \"דעת\", englishName: \"Knowledge\" },\n};\n\nexport const PLANETS = {\n  EARTH: \"Earth\",\n  MOON: \"Moon\",\n  SUN: \"Sun\",\n  MERCURY: \"Mercury\",\n  VENUS: \"Venus\",\n  MARS: \"Mars\",\n  JUPITER: \"Jupiter\",\n  SATURN: \"Saturn\",\n  URANUS: \"Uranus\",\n  NEPTUNE: \"Neptune\",\n  PLUTO: \"Pluto\",\n} as const;\n\nexport const MODALITIES = {\n  CARDINAL: \"Cardinal\",\n  FIXED: \"Fixed\",\n  MUTABLE: \"Mutable\",\n} as const;\n\nexport const WESTERN_ZODIAC_SIGNS = {\n  ARIES: \"Aries\",\n  TAURUS: \"Taurus\",\n  GEMINI: \"Gemini\",\n  CANCER: \"Cancer\",\n  LEO: \"Leo\",\n  VIRGO: \"Virgo\",\n  LIBRA: \"Libra\",\n  SCORPIO: \"Scorpio\",\n  SAGITTARIUS: \"Sagittarius\",\n  CAPRICORN: \"Capricorn\",\n  AQUARIUS: \"Aquarius\",\n  PISCES: \"Pisces\",\n} as const;\n\nexport const WESTERN_ELEMENTS = {\n  FIRE: \"Fire\",\n  AIR: \"Air\",\n  WATER: \"Water\",\n  EARTH: \"Earth\",\n  ETHER: \"Ether\",\n} as const;\n\nexport const WESTERN_HOUSES = {\n  ASCENDANT: \"ascendant\",\n  SECOND_HOUSE: \"second house\",\n  THIRD_HOUSE: \"third house\",\n  IMUM_COELI: \"imum coeli\",\n  FIFTH_HOUSE: \"fifth house\",\n  SIXTH_HOUSE: \"sixth house\",\n  DESCENDANT: \"descendant\",\n  EIGHTH_HOUSE: \"eighth house\",\n  NINTH_HOUSE: \"ninth house\",\n  MEDIUM_COELI: \"medium coeli\",\n  ELEVENTH_HOUSE: \"eleventh house\",\n  TWELFTH_HOUSE: \"twelfth house\",\n} as const;\n\nexport const WESTERN_ASPECTS = {\n  CONJUNCTION: \"conjunction\",\n  DUODECILE: \"duodecile\",\n  OCTILE: \"octile\",\n  SEXTILE: \"sextile\",\n  SQUARE: \"square\",\n  TRINE: \"trine\",\n  TRIOCTILE: \"trioctile\",\n  QUINCUNX: \"quincunx\",\n  OPPOSITION: \"opposition\",\n} as const;\n\nexport const MELKITZEDEKI_PATHS = {\n  KETHER_CHOKHMAH: 1,\n  KETHER_BINAH: 2,\n  KETHER_TIPHARETH: 3,\n  CHOKHMAH_BINAH: 4,\n  CHOKHMAH_TIPHARETH: 5,\n  CHOKHMAH_CHESED: 6,\n  BINAH_TIPHARETH: 7,\n  BINAH_GEBURAH: 8,\n  CHESED_GEBURAH: 9,\n  CHESED_TIPHARETH: 10,\n  CHESED_NETZACH: 11,\n  GEBURAH_TIPHARETH: 12,\n  GEBURAH_HOD: 13,\n  TIPHARETH_NETZACH: 14,\n  TIPHARETH_YESOD: 15,\n  TIPHARETH_HOD: 16,\n  NETZACH_HOD: 17,\n  NETZACH_YESOD: 18,\n  NETZACH_MALKUTH: 19,\n  HOD_YESOD: 20,\n  HOD_MALKUTH: 21,\n  YESOD_MALKUTH: 22,\n} as const;\n\nexport const LURIANIC_PATHS = {\n  KETHER_CHOKHMAH: 1,\n  KETHER_BINAH: 2,\n  KETHER_TIPHARETH: 3,\n  CHOKHMAH_BINAH: 4,\n  CHOKHMAH_GEBURAH: 5,\n  CHOKHMAH_TIPHARETH: 6,\n  CHOKHMAH_CHESED: 7,\n  BINAH_CHESED: 8,\n  BINAH_TIPHARETH: 9,\n  BINAH_GEBURAH: 10,\n  CHESED_GEBURAH: 11,\n  CHESED_TIPHARETH: 12,\n  CHESED_NETZACH: 13,\n  GEBURAH_TIPHARETH: 14,\n  GEBURAH_HOD: 15,\n  TIPHARETH_NETZACH: 16,\n  TIPHARETH_YESOD: 17,\n  TIPHARETH_HOD: 18,\n  NETZACH_HOD: 19,\n  NETZACH_YESOD: 20,\n  HOD_YESOD: 21,\n  YESOD_MALKUTH: 22,\n} as const;\n\nexport const LATIN_LETTERS = {\n  A: \"A\",\n  B: \"B\",\n  C: \"C\",\n  D: \"D\",\n  E: \"E\",\n  F: \"F\",\n  G: \"G\",\n  H: \"H\",\n  I: \"I\",\n  J: \"J\",\n  K: \"K\",\n  L: \"L\",\n  M: \"M\",\n  N: \"N\",\n  O: \"O\",\n  P: \"P\",\n  Q: \"Q\",\n  R: \"R\",\n  S: \"S\",\n  T: \"T\",\n  U: \"U\",\n  V: \"V\",\n  W: \"W\",\n  X: \"X\",\n  Y: \"Y\",\n  Z: \"Z\",\n  PH: \"Ph\",\n  TS: \"Ts\",\n  TZ: \"Tz\",\n  TH: \"Th\",\n  CH: \"Ch\",\n  SH: \"Sh\",\n  KH: \"Kh\",\n  Ç: \"Ç\",\n  Ã: \"Ã\",\n} as const;\n\nexport const LATIN_LETTERS_DATA: Record<\n  keyof typeof LATIN_LETTERS,\n  NodeData<LetterTypes.LATIN_LETTER>\n> = {\n  A: { isVowel: true },\n  B: { isVowel: false },\n  C: { isVowel: false },\n  D: { isVowel: false },\n  E: { isVowel: true },\n  F: { isVowel: false },\n  G: { isVowel: false },\n  H: { isVowel: false },\n  I: { isVowel: true },\n  J: { isVowel: false },\n  K: { isVowel: false },\n  L: { isVowel: false },\n  M: { isVowel: false },\n  N: { isVowel: false },\n  O: { isVowel: true },\n  P: { isVowel: false },\n  Q: { isVowel: false },\n  R: { isVowel: false },\n  S: { isVowel: false },\n  T: { isVowel: false },\n  U: { isVowel: true },\n  V: { isVowel: false },\n  W: { isVowel: true },\n  X: { isVowel: false },\n  Y: { isVowel: true },\n  Z: { isVowel: false },\n  PH: { isVowel: false },\n  TS: { isVowel: false },\n  TZ: { isVowel: false },\n  TH: { isVowel: false },\n  CH: { isVowel: false },\n  SH: { isVowel: false },\n  KH: { isVowel: false },\n  Ç: { isVowel: false },\n  Ã: { isVowel: true },\n};\n\nexport const HEBREW_LETTERS = {\n  ALEPH: \"Aleph\",\n  BETH: \"Beth\",\n  GIMEL: \"Gimel\",\n  DALET: \"Dalet\",\n  HE: \"He\",\n  VAV: \"Vav\",\n  ZAYIN: \"Zayin\",\n  HET: \"Het\",\n  TET: \"Tet\",\n  YOD: \"Yod\",\n  KAPH: \"Kaph\",\n  LAMED: \"Lamed\",\n  MEM: \"Mem\",\n  NUN: \"Nun\",\n  SAMEKH: \"Samekh\",\n  AYIN: \"Ayin\",\n  PE: \"Pe\",\n  TSADI: \"Tsadi\",\n  QOPH: \"Qoph\",\n  RESH: \"Resh\",\n  SHIN: \"Shin\",\n  TAV: \"Tav\",\n} as const;\n\nexport const HEBREW_LETTERS_DATA: Record<\n  keyof typeof HEBREW_LETTERS,\n  NodeData<LetterTypes.HEBREW_LETTER>\n> = {\n  ALEPH: {\n    gematriaValue: 1,\n    type: \"mother\",\n    symbol: \"Man\",\n    hieroglyph: \"Unity, central point, abstract principle\",\n    yvritMeaning: \"Universal man and the human gender\",\n    character: \"א\",\n  },\n  BETH: {\n    gematriaValue: 2,\n    type: \"double\",\n    symbol: \"Mouth\",\n    hieroglyph: \"Woman's duality\",\n    yvritMeaning: \"Man's mouth, habitation, interior\",\n    character: \"ב\",\n  },\n  GIMEL: {\n    gematriaValue: 3,\n    type: \"double\",\n    symbol: \"Grasping hand\",\n    hieroglyph: \"Expansion and growth\",\n    yvritMeaning: \"Man's throat, channel\",\n    character: \"ג\",\n  },\n  DALET: {\n    gematriaValue: 4,\n    type: \"double\",\n    symbol: \"Breast\",\n    hieroglyph: \"Universal quaternary, source of physical existence\",\n    yvritMeaning: \"Abundance and nourishment\",\n    character: \"ד\",\n  },\n  HE: {\n    gematriaValue: 5,\n    type: \"simple\",\n    symbol: \"Breath\",\n    hieroglyph:\n      \"Universal life, men's breath, the breath, everything that animates and vivifies\",\n    yvritMeaning: \"Window\",\n    character: \"ה\",\n  },\n  VAV: {\n    gematriaValue: 6,\n    type: \"simple\",\n    symbol: \"Eye, ear\",\n    hieroglyph: \"A point connection that separates being and non-being\",\n    yvritMeaning: \"Construction nail\",\n    character: \"ו\",\n  },\n  ZAYIN: {\n    gematriaValue: 7,\n    type: \"simple\",\n    symbol: \"Arrow\",\n    hieroglyph: \"Goal, objective to achieve\",\n    yvritMeaning: \"Dart, sword\",\n    character: \"ז\",\n  },\n  HET: {\n    gematriaValue: 8,\n    type: \"simple\",\n    symbol: \"Field\",\n    hieroglyph: \"Elemental existence\",\n    yvritMeaning: \"Fence\",\n    character: \"ח\",\n  },\n  TET: {\n    gematriaValue: 9,\n    type: \"simple\",\n    symbol: \"A house covering\",\n    hieroglyph: \"Men's shelter, roof, shield, protection, resistance\",\n    yvritMeaning: \"Serpent\",\n    character: \"ט\",\n  },\n  YOD: {\n    gematriaValue: 10,\n    type: \"simple\",\n    symbol: \"Index finger\",\n    hieroglyph: \"Potential manifestation, eternal worship\",\n    yvritMeaning: \"Hand, index finger\",\n    character: \"י\",\n  },\n  KAPH: {\n    gematriaValue: 20,\n    type: \"double\",\n    gematriaValueWhenEnding: 500,\n    symbol: \"Closing hand\",\n    hieroglyph: \"Reflective and fleeting life\",\n    yvritMeaning: \"Palm closing in the act of grasping something\",\n    character: \"כ\",\n    characterWhenEnding: \"ך\",\n  },\n  LAMED: {\n    gematriaValue: 30,\n    type: \"simple\",\n    symbol: \"Extending arm\",\n    hieroglyph: \"Extension, elevation\",\n    yvritMeaning: \"Sting rod, human arm representing extension, elevation\",\n    character: \"ל\",\n  },\n  MEM: {\n    gematriaValue: 40,\n    type: \"mother\",\n    gematriaValueWhenEnding: 600,\n    symbol: \"Woman\",\n    hieroglyph:\n      \"External passive action, all formative and plastic principle when starting a word, collectiveness when ending one\",\n    yvritMeaning: \"Waters, woman, mother, man's companion\",\n    character: \"מ\",\n    characterWhenEnding: \"ם\",\n  },\n  NUN: {\n    gematriaValue: 50,\n    type: \"simple\",\n    gematriaValueWhenEnding: 700,\n    symbol: \"Fruit\",\n    hieroglyph: \"Novelty, youth, grace, beauty\",\n    yvritMeaning: \"Fish\",\n    character: \"נ\",\n    characterWhenEnding: \"ן\",\n  },\n  SAMEKH: {\n    gematriaValue: 60,\n    type: \"simple\",\n    symbol: \"Serpent\",\n    hieroglyph: \"Cyclical circular movement\",\n    yvritMeaning: \"Support, brace, crutch\",\n    character: \"ס\",\n  },\n  AYIN: {\n    gematriaValue: 70,\n    type: \"simple\",\n    symbol: \"Binding\",\n    hieroglyph: \"Material side of things, emptiness, nothingness, all evil\",\n    yvritMeaning: \"Eye\",\n    character: \"ע\",\n  },\n  PE: {\n    gematriaValue: 80,\n    type: \"double\",\n    gematriaValueWhenEnding: 800,\n    symbol: \"Mouth, tongue\",\n    hieroglyph: \"Power of the verb, spoken word\",\n    yvritMeaning: \"Mouth releasing\",\n    character: \"פ\",\n    characterWhenEnding: \"ף\",\n  },\n  TSADI: {\n    gematriaValue: 90,\n    type: \"simple\",\n    gematriaValueWhenEnding: 900,\n    symbol: \"Roof\",\n    hieroglyph: \"Fixed thought upon a purpose\",\n    yvritMeaning: \"Fishhook\",\n    character: \"צ\",\n    characterWhenEnding: \"ץ\",\n  },\n  QOPH: {\n    gematriaValue: 100,\n    type: \"simple\",\n    symbol: \"Axe\",\n    hieroglyph: \"Repressive pressure\",\n    yvritMeaning: \"Back of the head\",\n    character: \"ק\",\n  },\n  RESH: {\n    gematriaValue: 200,\n    type: \"double\",\n    symbol: \"Head\",\n    hieroglyph:\n      \"Feeling, wanting, thinking, movement, reflection, origin, repetition\",\n    yvritMeaning: \"Illuminated head\",\n    character: \"ר\",\n  },\n  SHIN: {\n    gematriaValue: 300,\n    type: \"mother\",\n    symbol: \"Crown\",\n    hieroglyph: \"Relative duration, existence\",\n    yvritMeaning: \"Part of the bow from which the arrow is released\",\n    character: \"ש\",\n  },\n  TAV: {\n    gematriaValue: 400,\n    type: \"double\",\n    symbol: \"Thorax\",\n    hieroglyph:\n      \"Universal soul, reciprocity, protection, perfection, abundance\",\n    yvritMeaning: \"Ankh Cross\",\n    character: \"ת\",\n  },\n};\n\nexport const TAROT_SUITS = {\n  WANDS: \"Wands\",\n  CUPS: \"Cups\",\n  SWORDS: \"Swords\",\n  PENTACLES: \"Pentacles\",\n} as const;\n\nexport const TAROT_ARKANNUS = {\n  THE_MAGICIAN: \"The Magician\",\n  THE_HIGH_PRIESTESS: \"The High Priestess\",\n  THE_EMPRESS: \"The Empress\",\n  THE_EMPEROR: \"The Emperor\",\n  THE_HIEROPHANT: \"The Hierophant\",\n  THE_LOVER: \"The Lover\",\n  THE_CHARIOT: \"The Chariot\",\n  JUSTICE: \"Justice\",\n  THE_HERMIT: \"The Hermit\",\n  THE_WHEEL_OF_FORTUNE: \"The Wheel of Fortune\",\n  STRENGTH: \"Strength\",\n  THE_HANGED_MAN: \"The Hanged Man\",\n  DEATH: \"Death\",\n  TEMPERANCE: \"Temperance\",\n  THE_DEVIL: \"The Devil\",\n  THE_TOWER: \"The Tower\",\n  THE_STAR: \"The Star\",\n  THE_MOON: \"The Moon\",\n  THE_SUN: \"The Sun\",\n  JUDGMENT: \"Judgment\",\n  THE_FOOL: \"The Fool\",\n  THE_WORLD: \"The World\",\n  KING_OF_WANDS: \"King of Wands\",\n  QUEEN_OF_WANDS: \"Queen of Wands\",\n  KNIGHT_OF_WANDS: \"Knight of Wands\",\n  PAGE_OF_WANDS: \"Page of Wands\",\n  TEN_OF_WANDS: \"Ten of Wands\",\n  NINE_OF_WANDS: \"Nine of Wands\",\n  EIGHT_OF_WANDS: \"Eight of Wands\",\n  SEVEN_OF_WANDS: \"Seven of Wands\",\n  SIX_OF_WANDS: \"Six of Wands\",\n  FIVE_OF_WANDS: \"Five of Wands\",\n  FOUR_OF_WANDS: \"Four of Wands\",\n  THREE_OF_WANDS: \"Three of Wands\",\n  TWO_OF_WANDS: \"Two of Wands\",\n  ACE_OF_WANDS: \"Ace of Wands\",\n  KING_OF_CUPS: \"King of Cups\",\n  QUEEN_OF_CUPS: \"Queen of Cups\",\n  KNIGHT_OF_CUPS: \"Knight of Cups\",\n  PAGE_OF_CUPS: \"Page of Cups\",\n  TEN_OF_CUPS: \"Ten of Cups\",\n  NINE_OF_CUPS: \"Nine of Cups\",\n  EIGHT_OF_CUPS: \"Eight of Cups\",\n  SEVEN_OF_CUPS: \"Seven of Cups\",\n  SIX_OF_CUPS: \"Six of Cups\",\n  FIVE_OF_CUPS: \"Five of Cups\",\n  FOUR_OF_CUPS: \"Four of Cups\",\n  THREE_OF_CUPS: \"Three of Cups\",\n  TWO_OF_CUPS: \"Two of Cups\",\n  ACE_OF_CUPS: \"Ace of Cups\",\n  KING_OF_SWORDS: \"King of Swords\",\n  QUEEN_OF_SWORDS: \"Queen of Swords\",\n  KNIGHT_OF_SWORDS: \"Knight of Swords\",\n  PAGE_OF_SWORDS: \"Page of Swords\",\n  TEN_OF_SWORDS: \"Ten of Swords\",\n  NINE_OF_SWORDS: \"Nine of Swords\",\n  EIGHT_OF_SWORDS: \"Eight of Swords\",\n  SEVEN_OF_SWORDS: \"Seven of Swords\",\n  SIX_OF_SWORDS: \"Six of Swords\",\n  FIVE_OF_SWORDS: \"Five of Swords\",\n  FOUR_OF_SWORDS: \"Four of Swords\",\n  THREE_OF_SWORDS: \"Three of Swords\",\n  TWO_OF_SWORDS: \"Two of Swords\",\n  ACE_OF_SWORDS: \"Ace of Swords\",\n  KING_OF_PENTACLES: \"King of Pentacles\",\n  QUEEN_OF_PENTACLES: \"Queen of Pentacles\",\n  KNIGHT_OF_PENTACLES: \"Knight of Pentacles\",\n  PAGE_OF_PENTACLES: \"Page of Pentacles\",\n  TEN_OF_PENTACLES: \"Ten of Pentacles\",\n  NINE_OF_PENTACLES: \"Nine of Pentacles\",\n  EIGHT_OF_PENTACLES: \"Eight of Pentacles\",\n  SEVEN_OF_PENTACLES: \"Seven of Pentacles\",\n  SIX_OF_PENTACLES: \"Six of Pentacles\",\n  FIVE_OF_PENTACLES: \"Five of Pentacles\",\n  FOUR_OF_PENTACLES: \"Four of Pentacles\",\n  THREE_OF_PENTACLES: \"Three of Pentacles\",\n  TWO_OF_PENTACLES: \"Two of Pentacles\",\n  ACE_OF_PENTACLES: \"Ace of Pentacles\",\n} as const;\n\nexport const TAROT_DECKS = {\n  PAPUS_KAABALISTIC: \"Papus Kaabalistic\",\n  PAPUS_DIVINATORY: \"Papus Divinatory\",\n  KIER_EGYPTIAN: \"Kier Egyptian\",\n} as const;\n\nconst TAROT_MAJOR_ARKANNUS_ALIASES = {\n  THE_MAGICIAN: [\"O Mago\"],\n  THE_HIGH_PRIESTESS: [\"A Sacerdotisa\", \"Papisa\"],\n  THE_EMPRESS: [\"A Imperatriz\"],\n  THE_EMPEROR: [\"O Imperador\"],\n  THE_HIEROPHANT: [\"O Hierofante\", \"Papa\"],\n  THE_LOVER: [\"Os Enamorados\", \"The Lovers\"],\n  THE_CHARIOT: [\"O Carro\", \"Merkaabah\"],\n  JUSTICE: [\"A Justiça\"],\n  THE_HERMIT: [\"O Eremita\"],\n  THE_WHEEL_OF_FORTUNE: [\"A Roda da Fortuna\"],\n  STRENGTH: [\"A Força\"],\n  THE_HANGED_MAN: [\"O Enforcado\", \"Sacro Ofício\"],\n  DEATH: [\"A Morte\"],\n  TEMPERANCE: [\"A Temperança\"],\n  THE_DEVIL: [\"O Diabo\"],\n  THE_TOWER: [\"A Torre\", \"The House of God\"],\n  THE_STAR: [\"A Estrela\"],\n  THE_MOON: [\"A Lua\"],\n  THE_SUN: [\"O Sol\"],\n  JUDGMENT: [\"O Julgamento\", \"Judgement\"],\n  THE_FOOL: [\"O Louco\"],\n  THE_WORLD: [\"O Mundo\"],\n} as const;\n\nconst TAROT_MAJOR_ARKANNUS_KEYWORDS = {\n  THE_MAGICIAN: [\n    \"co-creation\",\n    \"molecular waves\",\n    \"first act of will\",\n    \"Hermes\",\n    \"knowledge\",\n    \"will\",\n  ],\n  THE_HIGH_PRIESTESS: [\n    \"veiled feminine principle\",\n    \"intuition\",\n    \"Isis\",\n    \"mysteries\",\n    \"feminine principle\",\n    \"memory rewriting\",\n    \"history rewriting\",\n  ],\n  THE_EMPRESS: [\n    \"manifestation\",\n    \"fecundity\",\n    \"adaptation\",\n    \"generative power\",\n    \"fertility\",\n    \"nurturing\",\n    \"creative manifestation\",\n  ],\n  THE_EMPEROR: [\n    \"dominion of will\",\n    \"four elements\",\n    \"authority\",\n    \"territory marking\",\n    \"divine authority\",\n    \"sovereignty\",\n    \"sacred fire\",\n  ],\n  THE_HIEROPHANT: [\n    \"ritualization\",\n    \"fifth essences\",\n    \"spiritual communion\",\n    \"ritual science\",\n    \"magnetism\",\n    \"bridge between worlds\",\n    \"Agnus Dei\",\n  ],\n  THE_LOVER: [\n    \"sexual alchemy\",\n    \"ascension of energy\",\n    \"union of opposites\",\n    \"choice\",\n    \"balance of Eva and Lilith\",\n    \"sacred sexuality\",\n    \"decision\",\n  ],\n  THE_CHARIOT: [\n    \"mastery of duality\",\n    \"chariot of consciousness\",\n    \"solar energy\",\n    \"willpower\",\n    \"transmutation\",\n    \"interdimensional vehicles\",\n    \"Merkabah\",\n  ],\n  JUSTICE: [\n    \"cosmic law\",\n    \"mercy and severity\",\n    \"impartial divine judgment\",\n    \"divine balance\",\n    \"karma enforcement\",\n    \"Uriel\",\n  ],\n  THE_HERMIT: [\n    \"solitary quest\",\n    \"self-knowledge\",\n    \"inner illumination\",\n    \"inner light\",\n    \"wisdom\",\n    \"disciplined introspection\",\n    \"Lamp of Hermes\",\n  ],\n  THE_WHEEL_OF_FORTUNE: [\n    \"cycle of reincarnation\",\n    \"evolution\",\n    \"108 existences\",\n    \"metempsychosis\",\n    \"destiny\",\n    \"karma\",\n    \"turning wheel of souls\",\n  ],\n  STRENGTH: [\n    \"subtle persuasion\",\n    \"mastery of instinct\",\n    \"spiritual force\",\n    \"control of raw power\",\n    \"kindness\",\n    \"lion taming\",\n  ],\n  THE_HANGED_MAN: [\n    \"sacrifice\",\n    \"transmutation\",\n    \"voluntary suspension\",\n    \"surrender\",\n    \"apostolate\",\n    \"sacred duty\",\n    \"death of ego\",\n    \"Christ on cross\",\n  ],\n  DEATH: [\n    \"transformation\",\n    \"immortality\",\n    \"dissolution of the personality\",\n    \"resurrection\",\n    \"sickle of Anubis\",\n    \"cycle change\",\n  ],\n  TEMPERANCE: [\n    \"alchemical transmutation\",\n    \"elixir of long life\",\n    \"balance\",\n    \"harmony\",\n    \"blending of opposites\",\n    \"alchemist's work\",\n    \"divine balance\",\n  ],\n  THE_DEVIL: [\n    \"involution\",\n    \"materiality\",\n    \"shadow self\",\n    \"transmutation\",\n    \"testing\",\n    \"shadow work\",\n    \"sexual force\",\n    \"Pan\",\n  ],\n  THE_TOWER: [\n    \"destruction of false foundations\",\n    \"karmic correction\",\n    \"cosmic justice\",\n    \"collapse of illusions\",\n    \"divine lightning\",\n    \"Babel confusion\",\n  ],\n  THE_STAR: [\n    \"hope\",\n    \"inner light\",\n    \"guiding the path\",\n    \"innocence recovered\",\n    \"faith\",\n    \"renewal\",\n    \"Venusian initiation\",\n    \"cosmic seeding\",\n    \"divine hope\",\n  ],\n  THE_MOON: [\n    \"illusion\",\n    \"confusion\",\n    \"subconscious waters\",\n    \"deception\",\n    \"dreams\",\n    \"psychic dangers\",\n    \"Hecate\",\n  ],\n  THE_SUN: [\n    \"philosophical gold\",\n    \"enlightenment\",\n    \"victory\",\n    \"child-like innocence reborn\",\n    \"divine truth\",\n    \"triumph\",\n    \"golden philosophical stone\",\n    \"soulmate\",\n    \"Apollo\",\n  ],\n  JUDGMENT: [\n    \"resurrection\",\n    \"retrospectives\",\n    \"karmic accounting\",\n    \"second birth of consciousness\",\n    \"rebirth\",\n    \"awakening\",\n    \"trumpet call\",\n    \"transformation of ages\",\n  ],\n  THE_FOOL: [\n    \"chaos\",\n    \"bridges of knowledge\",\n    \"fall before ascension\",\n    \"divinity\",\n    \"wandering\",\n    \"innocence before knowledge\",\n    \"dark night of soul\",\n  ],\n  THE_WORLD: [\n    \"completion\",\n    \"mastery of all four elements\",\n    \"Hermaphroditic unity\",\n    \"perfection\",\n    \"wholeness\",\n    \"Ouroboros\",\n    \"Isis unveiled\",\n    \"Great Work\",\n  ],\n} as const;\n\nexport const TAROT_ARKANNUS_DATA: Record<\n  keyof typeof TAROT_ARKANNUS,\n  NodeData<TarotTypes.TAROT_ARK_ANNU>\n> = {\n  THE_MAGICIAN: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_MAGICIAN,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_MAGICIAN,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Magician\",\n        meaning: \"Abracadabra, the power to create reality through voice\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Magician\",\n        meaning: \"Male inquirer.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Magician\",\n      },\n    },\n  },\n  THE_HIGH_PRIESTESS: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_HIGH_PRIESTESS,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_HIGH_PRIESTESS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The High Priestess\",\n        meaning:\n          \"Intuition, the power to rewrite your book of life improving your life every instant\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The High Priestess\",\n        meaning: \"Female inquirer.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Priestess\",\n      },\n    },\n  },\n  THE_EMPRESS: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_EMPRESS,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_EMPRESS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Empress\",\n        meaning: \"Adaptation, the power to geometrize through emotions\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Empress\",\n        meaning: \"Action. Initiative.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Empress\",\n      },\n    },\n  },\n  THE_EMPEROR: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_EMPEROR,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_EMPEROR,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Emperor\",\n        meaning:\n          \"Authority, the power to mark your territory with the sacred fire\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Emperor\",\n        meaning: \"Will.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Emperor\",\n      },\n    },\n  },\n  THE_HIEROPHANT: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_HIEROPHANT,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_HIEROPHANT,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Hierophant\",\n        meaning:\n          \"Magnetism, the power to ritualize life and circulate the quintessence\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Hierophant\",\n        meaning: \"Inspiration.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Hierarch\",\n      },\n    },\n  },\n  THE_LOVER: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_LOVER,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_LOVER,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Lover\",\n        meaning:\n          \"Dichotomy, stay on the middle path by being neither a victim nor a villain\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Lover\",\n        meaning: \"Love.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Indecision\",\n      },\n    },\n  },\n  THE_CHARIOT: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_CHARIOT,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_CHARIOT,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Chariot\",\n        meaning:\n          \"Merkaabah, take control and build your merkaabah (mind vehicle)\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Chariot\",\n        meaning: \"Triumph. Providential protection.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Triumph\",\n      },\n    },\n  },\n  JUSTICE: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.JUSTICE,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.JUSTICE,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Justice\",\n        meaning: \"Justice, be just with yourself to be just with others\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Justice\",\n        meaning: \"Justice.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Justice\",\n      },\n    },\n  },\n  THE_HERMIT: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_HERMIT,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_HERMIT,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Hermit\",\n        meaning: \"Introspection, seek within, retreat\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Hermit\",\n        meaning: \"Prudence.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Hermit\",\n      },\n    },\n  },\n  THE_WHEEL_OF_FORTUNE: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_WHEEL_OF_FORTUNE,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_WHEEL_OF_FORTUNE,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Wheel of Fortune\",\n        meaning:\n          \"Loops, extroversion, break the great wheel and ascend, seek externally\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Wheel of Fortune\",\n        meaning: \"Fortune. Destiny.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Retribution\",\n      },\n    },\n  },\n  STRENGTH: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.STRENGTH,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.STRENGTH,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Strength\",\n        meaning: \"The strength of your subconscious, unity brings strength\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Strength\",\n        meaning: \"Strength. Fortitude.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Persuasion\",\n      },\n    },\n  },\n  THE_HANGED_MAN: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_HANGED_MAN,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_HANGED_MAN,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Hanged Man\",\n        meaning: \"Make valid sacrifices, adopt a new perspective\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Hanged Man\",\n        meaning: \"Trials. Sacrifice.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Apostolate\",\n      },\n    },\n  },\n  DEATH: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.DEATH,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.DEATH,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Death\",\n        meaning: \"Death, renovation, kill that which kills your soul\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Death\",\n        meaning: \"Death.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Immortality\",\n      },\n    },\n  },\n  TEMPERANCE: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.TEMPERANCE,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.TEMPERANCE,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Temperance\",\n        meaning: \"Balance, harmonize differences\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Temperance\",\n        meaning: \"Temperance. Economy.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Temperance\",\n      },\n    },\n  },\n  THE_DEVIL: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_DEVIL,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_DEVIL,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Devil\",\n        meaning:\n          \"Indecision between vice and virtue, transmute weakness and passions into strengths\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Devil\",\n        meaning: \"Immense force. Illness.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Passion\",\n      },\n    },\n  },\n  THE_TOWER: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_TOWER,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_TOWER,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The House of God\",\n        meaning:\n          \"Separation, destruction, separate from what's harmful and connect with what's helpful, make room for the new\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The House of God\",\n        meaning: \"Ruin. Deception.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Fragility\",\n      },\n    },\n  },\n  THE_STAR: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_STAR,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_STAR,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Star\",\n        meaning:\n          \"Fecundation, ecology, ecstasy, hope, renew yourself to maintain health, act according to your spiritual purpose\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Star\",\n        meaning: \"Hope.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Hope\",\n      },\n    },\n  },\n  THE_MOON: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_MOON,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_MOON,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Moon\",\n        meaning:\n          \"Hidden enemies, be vigilant, recognize where you're self sabotaging\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Moon\",\n        meaning: \"Hidden enemies. Danger.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Twilight\",\n      },\n    },\n  },\n  THE_SUN: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_SUN,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_SUN,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Sun\",\n        meaning:\n          \"Be conscious of your alchemical band, transmute money into knowledge and vice versa\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Sun\",\n        meaning: \"Material happiness. Lucky marriage.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Inspiration\",\n      },\n    },\n  },\n  JUDGMENT: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.JUDGMENT,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.JUDGMENT,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Judgement\",\n        meaning: \"Make retrospectives and learn from mistakes and successes\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Judgement\",\n        meaning: \"Change of position.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Resurrection\",\n      },\n    },\n  },\n  THE_FOOL: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_FOOL,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_FOOL,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The Fool\",\n        meaning: \"Stop walking in circles, create connections of knowledge\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The Fool\",\n        meaning: \"Inconsiderate actions. Madness.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Return\",\n      },\n    },\n  },\n  THE_WORLD: {\n    type: \"major\",\n    aliases: TAROT_MAJOR_ARKANNUS_ALIASES.THE_WORLD,\n    keywords: TAROT_MAJOR_ARKANNUS_KEYWORDS.THE_WORLD,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"The World\",\n        meaning: \"Win the world, start acting on the world of causes\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"The World\",\n        meaning: \"Assured success.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Transmutation\",\n      },\n    },\n  },\n  KING_OF_WANDS: {\n    type: \"court\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"King of Wands\",\n        meaning: \"Get's the best out of every one, Idealism, Magnanimity\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"King of Wands\",\n        meaning:\n          \"A dark man, a friend. He generally represents a married man, the father of a family.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Laborer\",\n      },\n    },\n  },\n  QUEEN_OF_WANDS: {\n    type: \"court\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Queen of Wands\",\n        meaning:\n          \"Hold the line while the king goes to work, Preserve what was conquered\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Queen of Wands\",\n        meaning:\n          \"A dark woman, a friend. Represents a serious woman, a very good counsellor, often the mother of a family.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Weaver\",\n      },\n    },\n  },\n  KNIGHT_OF_WANDS: {\n    type: \"court\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Knight of Wands\",\n        meaning: \"Dreams that become reality\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Knight of Wands\",\n        meaning: \"A dark young man, a friend.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Argonaut\",\n      },\n    },\n  },\n  PAGE_OF_WANDS: {\n    type: \"court\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Page of Wands\",\n        meaning: \"Don't rush, the precipitations are the doors to failure\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Page of Wands\",\n        meaning:\n          \"A dark child, a friend. Also represents a message from a near relation.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Prodigy\",\n      },\n    },\n  },\n  ACE_OF_WANDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Ace of Wands\",\n        meaning: \"Ignite the flames of ideals, Trust in your inner divinity\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Ace of Wands\",\n        meaning: \"Commencement of an enterprise.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Initiation\",\n      },\n    },\n  },\n  TWO_OF_WANDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Two of Wands\",\n        meaning: \"Formulate a strategy to use your own talents\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Two of Wands\",\n        meaning:\n          \"Opposition to the commencement of the enterprise. The enterprise is commenced when an unexpected obstacle suddenly prevents its execution.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Desolation\",\n      },\n    },\n  },\n  THREE_OF_WANDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Three of Wands\",\n        meaning: \"Keep going despite losing something apparently important\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Three of Wands\",\n        meaning:\n          \"Realization of the commencement of the enterprise. The basis of the work is now definitely established, and the undertaking can be fearlessly continued.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Innovation\",\n      },\n    },\n  },\n  FOUR_OF_WANDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Four of Wands\",\n        meaning: \"Work in teams\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Four of Wands\",\n        meaning:\n          \"Obstacles to the enterprise.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Alliance\",\n      },\n    },\n  },\n  FIVE_OF_WANDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Five of Wands\",\n        meaning: \"Strengthen the root chakra, overcome internal fears\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Five of Wands\",\n        meaning: \"Opposition to the obstacles. Victory after surmounting them.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Magnificence\",\n      },\n    },\n  },\n  SIX_OF_WANDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Six of Wands\",\n        meaning: \"External victory, internal lack of internal self realization\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Six of Wands\",\n        meaning:\n          \"Realization of the opposition. At last the obstacles succeed. Failure of the enterprise in the midst of its execution.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Impediment\",\n      },\n    },\n  },\n  SEVEN_OF_WANDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Seven of Wands\",\n        meaning: \"Face competitors in an ethical and loyal way\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Seven of Wands\",\n        meaning: \"Certain success to the enterprise.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Exchange\",\n      },\n    },\n  },\n  EIGHT_OF_WANDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Eight of Wands\",\n        meaning: \"Travel to the center of peace and intelligence\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Eight of Wands\",\n        meaning:\n          \"Opposition to its success. The enterprise will only partially succeed.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Domesticity\",\n      },\n    },\n  },\n  NINE_OF_WANDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Nine of Wands\",\n        meaning: \"Obstacle that precedes total victory, gather hidden forces\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Nine of Wands\",\n        meaning: \"Realization of success. Success is continued.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Uncertainty\",\n      },\n    },\n  },\n  TEN_OF_WANDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.WANDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Ten of Wands\",\n        meaning: \"Get out of apathy, create a new tree of life using the Lightning Path\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Ten of Wands\",\n        meaning: \"Uncertainty in the management of the enterprise.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Unexpected\",\n      },\n    },\n  },\n  KING_OF_CUPS: {\n    type: \"court\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"King of Cups\",\n        meaning: \"Stop hurting yourself (related to The Lover), heals everyone and forgets about yourself, balm for your own wound\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"King of Cups\",\n        meaning:\n          \"A fair man, a friend. This card also represents a barrister, judge, or ecclesiastic. It symbolizes a bachelor.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Art and Science\",\n      },\n    },\n  },\n  QUEEN_OF_CUPS: {\n    type: \"court\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Queen of Cups\",\n        meaning: \"Work with subtlety, positive challenges\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Queen of Cups\",\n        meaning: \"A fair woman, a friend. The woman loved. The mistress.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Duplicity\",\n      },\n    },\n  },\n  KNIGHT_OF_CUPS: {\n    type: \"court\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Knight of Cups\",\n        meaning: \"Alternative healing\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Knight of Cups\",\n        meaning:\n          \"A young fair man, a friend. The young man loved. The lover.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Testimony\",\n      },\n    },\n  },\n  PAGE_OF_CUPS: {\n    type: \"court\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Page of Cups\",\n        meaning: \"Increase of self-esteem, emotional courage\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Page of Cups\",\n        meaning: \"A fair child. A messenger. Birth.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Premonition\",\n      },\n    },\n  },\n  ACE_OF_CUPS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Ace of Cups\",\n        meaning: \"Renewal or new affection, alternative treatment for health\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Ace of Cups\",\n        meaning: \"Commencement of a love affair.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Attraction\",\n      },\n    },\n  },\n  TWO_OF_CUPS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Two of Cups\",\n        meaning: \"Do not poison yourself or the other person\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Two of Cups\",\n        meaning:\n          \"Opposition to this commencement. Unimportant obstacles raised by one of the lovers.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Versatility\",\n      },\n    },\n  },\n  THREE_OF_CUPS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Three of Cups\",\n        meaning: \"Harmony between instinct and emotion, Be discreet\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Three of Cups\",\n        meaning: \"Realization of this commencement. The love is mutual.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Consummation\",\n      },\n    },\n  },\n  FOUR_OF_CUPS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Four of Cups\",\n        meaning: \"Abundance in emotional life, do not listen to slander\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Four of Cups\",\n        meaning:\n          \"Serious obstacles to the love. They arise from other persons, not from the lovers.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Conjecture\",\n      },\n    },\n  },\n  FIVE_OF_CUPS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Five of Cups\",\n        meaning: \"Do not break your spiritual commitment (your purpose)\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Five of Cups\",\n        meaning:\n          \"Opposition to the obstacles. Victory over the obstacles after a struggle.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Patrimony\",\n      },\n    },\n  },\n  SIX_OF_CUPS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Six of Cups\",\n        meaning: \"Do not have self-pity\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Six of Cups\",\n        meaning:\n          \"The obstacles triumph. Love destroyed in the midst of happiness. Widowhood.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Regeneration\",\n      },\n    },\n  },\n  SEVEN_OF_CUPS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Seven of Cups\",\n        meaning: \"Gestations, related to The Star\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Seven of Cups\",\n        meaning: \"Success assured to the lovers.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Expressiveness\",\n      },\n    },\n  },\n  EIGHT_OF_CUPS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Eight of Cups\",\n        meaning: \"Reflect on your emotional life after 18 hours\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Eight of Cups\",\n        meaning: \"Partial failure of love. Love only partially succeeds.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Delusion\",\n      },\n    },\n  },\n  NINE_OF_CUPS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Nine of Cups\",\n        meaning: \"Reconciliations and forgiveness\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Nine of Cups\",\n        meaning: \"Motherhood.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Preeminence\",\n      },\n    },\n  },\n  TEN_OF_CUPS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.CUPS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Ten of Cups\",\n        meaning: \"Marriage of the spirit with the soul, Alchemical Weddings\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Ten of Cups\",\n        meaning: \"Uncertainty in the management of the love affair.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Dissension\",\n      },\n    },\n  },\n  KING_OF_SWORDS: {\n    type: \"court\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"King of Swords\",\n        meaning: \"Actions of victorious strategies\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"King of Swords\",\n        meaning:\n          \"A dark, bad man. He is a soldier, a powerful enemy, who must be distrusted.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Advice\",\n      },\n    },\n  },\n  QUEEN_OF_SWORDS: {\n    type: \"court\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Queen of Swords\",\n        meaning: \"Supremacy of the feminine, related to Justice\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Queen of Swords\",\n        meaning:\n          \"A dark wicked woman. The card also indicates her actions, gossip and calumnies.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Premeditation\",\n      },\n    },\n  },\n  KNIGHT_OF_SWORDS: {\n    type: \"court\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Knight of Swords\",\n        meaning: \"Joint victorious actions\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Knight of Swords\",\n        meaning: \"A young, dark man, an enemy. He is also a spy.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Hostility\",\n      },\n    },\n  },\n  PAGE_OF_SWORDS: {\n    type: \"court\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Page of Swords\",\n        meaning: \"Follow your intuition\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Page of Swords\",\n        meaning: \"A child, an enemy. Bad news. Delay.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Examination\",\n      },\n    },\n  },\n  ACE_OF_SWORDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Ace of Swords\",\n        meaning: \"Conflicts before victory\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Ace of Swords\",\n        meaning: \"Commencement of enmity.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Vehemence\",\n      },\n    },\n  },\n  TWO_OF_SWORDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Two of Swords\",\n        meaning: \"Traumas and conflicts to overcome\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Two of Swords\",\n        meaning: \"Opposition to this commencement. The enmity does not last.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Communion\",\n      },\n    },\n  },\n  THREE_OF_SWORDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Three of Swords\",\n        meaning: \"Death of yang, Fire, tendencies to depression\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Three of Swords\",\n        meaning: \"Realization of the enmity. Hatred.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Proscription\",\n      },\n    },\n  },\n  FOUR_OF_SWORDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Four of Swords\",\n        meaning: \"Reflection, related to The Hermit\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Four of Swords\",\n        meaning: \"Opposition to the hatred. Success against the enemy.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Solitude\",\n      },\n    },\n  },\n  FIVE_OF_SWORDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Five of Swords\",\n        meaning: \"Healthy self-challenge, Self-demands\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Five of Swords\",\n        meaning:\n          \"Opposition to this opposition. The enemy triumphs at the moment one fancies the victory is secured.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Evolution\",\n      },\n    },\n  },\n  SIX_OF_SWORDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Six of Swords\",\n        meaning: \"External daily strategies, Future perspectives\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Six of Swords\",\n        meaning:\n          \"Equilibrium of the opposition. The enemy is rendered powerless at last.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Revelation\",\n      },\n    },\n  },\n  SEVEN_OF_SWORDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Seven of Swords\",\n        meaning: \"Internal nocturnal strategies, related to The Hermit\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Seven of Swords\",\n        meaning: \"Success assured to the enemy.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Meditation\",\n      },\n    },\n  },\n  EIGHT_OF_SWORDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Eight of Swords\",\n        meaning: \"Appeal to superior forces, Internal and external conflicts\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Eight of Swords\",\n        meaning:\n          \"Partial opposition to this success. The enemy only partially triumphs.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Rivalry\",\n      },\n    },\n  },\n  NINE_OF_SWORDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Nine of Swords\",\n        meaning: \"The problems being imagined will never happen\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Nine of Swords\",\n        meaning: \"Certain duration of the hatred.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Pilgrimage\",\n      },\n    },\n  },\n  TEN_OF_SWORDS: {\n    type: \"minor\",\n    suit: TAROT_SUITS.SWORDS,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Ten of Swords\",\n        meaning: \"Death and rebirth, related to Death and The Tower\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Ten of Swords\",\n        meaning: \"Uncertainty in the enmity.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Contrition\",\n      },\n    },\n  },\n  KING_OF_PENTACLES: {\n    type: \"court\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"King of Pentacles\",\n        meaning: \"Turns everything into gold\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"King of Pentacles\",\n        meaning: \"A fair man, inimical or indifferent.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Apprenticeship\",\n      },\n    },\n  },\n  QUEEN_OF_PENTACLES: {\n    type: \"court\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Queen of Pentacles\",\n        meaning: \"Act with diplomacy\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Queen of Pentacles\",\n        meaning: \"A fair woman, indifferent, or inimical.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Perplexity\",\n      },\n    },\n  },\n  KNIGHT_OF_PENTACLES: {\n    type: \"court\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Knight of Pentacles\",\n        meaning: \"Invest into new things\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Knight of Pentacles\",\n        meaning: \"A young, fair man. A stranger. An arrival.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Veneration\",\n      },\n    },\n  },\n  PAGE_OF_PENTACLES: {\n    type: \"court\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Page of Pentacles\",\n        meaning: \"Prudence in the material life\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Page of Pentacles\",\n        meaning: \"A fair child. A messenger. A letter.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Speculation\",\n      },\n    },\n  },\n  ACE_OF_PENTACLES: {\n    type: \"minor\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Ace of Pentacles\",\n        meaning: \"Rebirth through a single material goal, Form clear material goals\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Ace of Pentacles\",\n        meaning: \"Commencement of fortune. Inheritance. Gifts. Economy.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Rebirth\",\n      },\n    },\n  },\n  TWO_OF_PENTACLES: {\n    type: \"minor\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Two of Pentacles\",\n        meaning: \"Light forming shadows, Duality asking for synthesis in the trinity, Don't put all the eggs in the same basket\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Two of Pentacles\",\n        meaning:\n          \"Opposition to this commencement. Difficulty in well establishing the first landmarks of good fortune.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Confusion\",\n      },\n    },\n  },\n  THREE_OF_PENTACLES: {\n    type: \"minor\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Three of Pentacles\",\n        meaning: \"Light forming sound, Establish balance through the trinity becoming a great dispenser, Verbalize what should be done, Do not settle for the first results\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Three of Pentacles\",\n        meaning: \"Realization of this commencement of fortune. A small sum.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Provider\",\n      },\n    },\n  },\n  FOUR_OF_PENTACLES: {\n    type: \"minor\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Four of Pentacles\",\n        meaning: \"Avoid avarice / greed\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Four of Pentacles\",\n        meaning: \"Opposition of fortune. Loss of money.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Generosity\",\n      },\n    },\n  },\n  FIVE_OF_PENTACLES: {\n    type: \"minor\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Five of Pentacles\",\n        meaning: \"Only order will bring progress, Do not kick the barn without having something concrete in front of you\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Five of Pentacles\",\n        meaning:\n          \"Opposition to this opposition. A success coming which will balance the low.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Offering\",\n      },\n    },\n  },\n  SIX_OF_PENTACLES: {\n    type: \"minor\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Six of Pentacles\",\n        meaning: \"Act with prudence\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Six of Pentacles\",\n        meaning: \"Realization of the opposition. Ruin.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Love and Desire\",\n      },\n    },\n  },\n  SEVEN_OF_PENTACLES: {\n    type: \"minor\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Seven of Pentacles\",\n        meaning: \"Don't boast about your proposal or project\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Seven of Pentacles\",\n        meaning: \"Success assured. A large fortune.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Purification\",\n      },\n    },\n  },\n  EIGHT_OF_PENTACLES: {\n    type: \"minor\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Eight of Pentacles\",\n        meaning: \"Keep doing what you always did\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Eight of Pentacles\",\n        meaning:\n          \"Partial success. Great loss of money at the moment apparently of definitely securing the fortune.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Avarice\",\n      },\n    },\n  },\n  NINE_OF_PENTACLES: {\n    type: \"minor\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Nine of Pentacles\",\n        meaning: \"Work with what you like and earn something with it\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Nine of Pentacles\",\n        meaning: \"Equilibrium of equilibrium. A durable fortune.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"Cooperation\",\n      },\n    },\n  },\n  TEN_OF_PENTACLES: {\n    type: \"minor\",\n    suit: TAROT_SUITS.PENTACLES,\n    descriptiveData: {\n      PAPUS_KAABALISTIC: {\n        name: \"Ten of Pentacles\",\n        meaning: \"Prosperity, Prosperous inheritance\",\n      },\n      PAPUS_DIVINATORY: {\n        name: \"Ten of Pentacles\",\n        meaning: \"Uncertainty in the fortune. Great success and great reverses.\",\n      },\n      KIER_EGYPTIAN: {\n        name: \"The Unforeseen\",\n      },\n    },\n  },\n};\n\nexport const MUSICAL_NOTES = {\n  DO: \"DO\",\n  DO_SHARP: \"DO_SHARP\",\n  RE: \"RE\",\n  RE_SHARP: \"RE_SHARP\",\n  MI: \"MI\",\n  FA: \"FA\",\n  FA_SHARP: \"FA_SHARP\",\n  SOL: \"SOL\",\n  SOL_SHARP: \"SOL_SHARP\",\n  LA: \"LA\",\n  LA_SHARP: \"LA_SHARP\",\n  SI: \"SI\",\n} as const;\n\nexport const MUSICAL_NOTES_DATA: Record<keyof typeof MUSICAL_NOTES, MusicalNoteData> = {\n  DO: {\n    note: \"C\",\n    noteDescription: \"C (Do)\",\n    frequencies: [\n      \"16.35 Hz\", \"32.70 Hz\", \"65.41 Hz\", \"130.81 Hz\", \"261.63 Hz\", \"523.25 Hz\", \"1046.50 Hz\", \"2093.00 Hz\", \"4186.01 Hz\"\n    ],\n  },\n  DO_SHARP: {\n    note: \"C#/Db\",\n    noteDescription: \"C♯/D♭ (Do♯/Re♭)\",\n    frequencies: [\n      \"17.32 Hz\", \"34.65 Hz\", \"69.30 Hz\", \"138.59 Hz\", \"277.18 Hz\", \"554.37 Hz\", \"1108.73 Hz\", \"2217.46 Hz\", \"4434.92 Hz\"\n    ],\n  },\n  RE: {\n    note: \"D\",\n    noteDescription: \"D (Re)\",\n    frequencies: [\n      \"18.35 Hz\", \"36.71 Hz\", \"73.42 Hz\", \"146.83 Hz\", \"293.66 Hz\", \"587.33 Hz\", \"1174.66 Hz\", \"2349.32 Hz\", \"4698.63 Hz\"\n    ],\n  },\n  RE_SHARP: {\n    note: \"D#/Eb\",\n    noteDescription: \"D♯/E♭ (Re♯/Mi♭)\",\n    frequencies: [\n      \"19.45 Hz\", \"38.89 Hz\", \"77.78 Hz\", \"155.56 Hz\", \"311.13 Hz\", \"622.25 Hz\", \"1244.51 Hz\", \"2489.02 Hz\", \"4978.03 Hz\"\n    ],\n  },\n  MI: {\n    note: \"E\",\n    noteDescription: \"E (Mi)\",\n    frequencies: [\n      \"20.60 Hz\", \"41.20 Hz\", \"82.41 Hz\", \"164.81 Hz\", \"329.63 Hz\", \"659.25 Hz\", \"1318.51 Hz\", \"2637.02 Hz\", \"5274.04 Hz\"\n    ],\n  },\n  FA: {\n    note: \"F\",\n    noteDescription: \"F (Fa)\",\n    frequencies: [\n      \"21.83 Hz\", \"43.65 Hz\", \"87.31 Hz\", \"174.61 Hz\", \"349.23 Hz\", \"698.46 Hz\", \"1396.91 Hz\", \"2793.83 Hz\", \"5587.65 Hz\"\n    ],\n  },\n  FA_SHARP: {\n    note: \"F#/Gb\",\n    noteDescription: \"F♯/G♭ (Fa♯/Sol♭)\",\n    frequencies: [\n      \"23.12 Hz\", \"46.25 Hz\", \"92.50 Hz\", \"185.00 Hz\", \"369.99 Hz\", \"739.99 Hz\", \"1479.98 Hz\", \"2959.96 Hz\", \"5919.91 Hz\"\n    ],\n  },\n  SOL: {\n    note: \"G\",\n    noteDescription: \"G (Sol)\",\n    frequencies: [\n      \"24.50 Hz\", \"49.00 Hz\", \"98.00 Hz\", \"196.00 Hz\", \"392.00 Hz\", \"783.99 Hz\", \"1567.98 Hz\", \"3135.96 Hz\", \"6271.93 Hz\"\n    ],\n  },\n  SOL_SHARP: {\n    note: \"G#/Ab\",\n    noteDescription: \"G♯/A♭ (Sol♯/La♭)\",\n    frequencies: [\n      \"25.96 Hz\", \"51.91 Hz\", \"103.83 Hz\", \"207.65 Hz\", \"415.30 Hz\", \"830.61 Hz\", \"1661.22 Hz\", \"3322.44 Hz\", \"6644.88 Hz\"\n    ],\n  },\n  LA: {\n    note: \"A\",\n    noteDescription: \"A (La)\",\n    frequencies: [\n      \"27.50 Hz\", \"55.00 Hz\", \"110.00 Hz\", \"220.00 Hz\", \"440.00 Hz\", \"880.00 Hz\", \"1760.00 Hz\", \"3520.00 Hz\", \"7040.00 Hz\"\n    ],\n  },\n  LA_SHARP: {\n    note: \"A#/Bb\",\n    noteDescription: \"A♯/B♭ (La♯/Si♭)\",\n    frequencies: [\n      \"29.14 Hz\", \"58.27 Hz\", \"116.54 Hz\", \"233.08 Hz\", \"466.16 Hz\", \"932.33 Hz\", \"1864.66 Hz\", \"3729.31 Hz\", \"7458.62 Hz\"\n    ],\n  },\n  SI: {\n    note: \"B\",\n    noteDescription: \"B (Si)\",\n    frequencies: [\n      \"30.87 Hz\", \"61.74 Hz\", \"123.47 Hz\", \"246.94 Hz\", \"493.88 Hz\", \"987.77 Hz\", \"1975.53 Hz\", \"3951.07 Hz\", \"7902.13 Hz\"\n    ],\n  },\n};\n\nexport const COLORS = {\n  RED: \"RED\", \n  ORANGE: \"ORANGE\", \n  YELLOW: \"YELLOW\", \n  CHARTREUSE_GREEN: \"CHARTREUSE_GREEN\",\n  GREEN: \"GREEN\",\n  SPRING_GREEN: \"SPRING_GREEN\",\n  CYAN: \"CYAN\",\n  AZURE: \"AZURE\",\n  BLUE: \"BLUE\",\n  VIOLET: \"VIOLET\",\n  MAGENTA: \"MAGENTA\",\n  ROSE: \"ROSE\",\n} as const;\n\nexport const COLORS_DATA: Record<keyof typeof COLORS, ColorData> = {\n  RED: {\n    colorDescription: \"Red\",\n    colorNames: [\"Red\"],\n    colorHexCodes: [\"#FF0000\"],\n  },\n  ORANGE: {\n    colorDescription: \"Orange\",\n    colorNames: [\"Orange\"],\n    colorHexCodes: [\"#FF8000\"],\n  },\n  YELLOW: {\n    colorDescription: \"Yellow\",\n    colorNames: [\"Yellow\"],\n    colorHexCodes: [\"#FFFF00\"],\n  },\n  CHARTREUSE_GREEN: {\n    colorDescription: \"Chartreuse Green\",\n    colorNames: [\"Chartreuse Green\"],\n    colorHexCodes: [\"#80FF00\"],\n  },\n  GREEN: {\n    colorDescription: \"Green\",\n    colorNames: [\"Green\"],\n    colorHexCodes: [\"#00FF00\"],\n  },\n  SPRING_GREEN: {\n    colorDescription: \"Spring Green\",\n    colorNames: [\"Spring Green\"],\n    colorHexCodes: [\"#00FF80\"],\n  },\n  CYAN: {\n    colorDescription: \"Cyan\",\n    colorNames: [\"Cyan\"],\n    colorHexCodes: [\"#00FFFF\"],\n  },\n  AZURE: {\n    colorDescription: \"Azure\",\n    colorNames: [\"Azure\"],\n    colorHexCodes: [\"#0080FF\"],\n  },\n  BLUE: {\n    colorDescription: \"Blue\",\n    colorNames: [\"Blue\"],\n    colorHexCodes: [\"#0000FF\"],\n  },\n  VIOLET: {\n    colorDescription: \"Violet\",\n    colorNames: [\"Violet\"],\n    colorHexCodes: [\"#8000FF\"],\n  },\n  MAGENTA: {\n    colorDescription: \"Magenta\",\n    colorNames: [\"Magenta\"],\n    colorHexCodes: [\"#FF00FF\"],\n  },\n  ROSE: {\n    colorDescription: \"Rose\",\n    colorNames: [\"Rose\"],\n    colorHexCodes: [\"#FF0080\"],\n  },\n};\n","import type { PartKey, SystemKey } from \"./systems/registry\";\nimport type { Node, NodeId, NodeType } from \"./types\";\n\nexport type CorrespondenceSource =\n  | {\n      kind: \"manual\";\n    }\n  | {\n      kind: \"system\";\n      system: SystemKey;\n    }\n  | {\n      kind: \"part\";\n      system: SystemKey;\n      part: PartKey;\n    }\n  | {\n      kind: \"bridge\";\n      system: SystemKey;\n      bridgeId: string;\n      parts: PartKey[];\n    }\n  | {\n      kind: \"overlay\";\n      overlayId: string;\n      label?: string;\n    };\n\nexport interface CorrespondenceMetadata {\n  kind?: string;\n  label?: string;\n  tags?: string[];\n  attributes?: Record<string, unknown>;\n}\n\nexport interface CorrespondenceEdge {\n  id: string;\n  left: NodeId<NodeType>;\n  right: NodeId<NodeType>;\n  metadata?: CorrespondenceMetadata;\n  sources: readonly CorrespondenceSource[];\n}\n\nexport type TreeNoteTarget =\n  | {\n      kind: \"node\";\n      nodeId: NodeId<NodeType>;\n    }\n  | {\n      kind: \"correspondence\";\n      left: NodeId<NodeType>;\n      right: NodeId<NodeType>;\n    };\n\nexport interface TreeNote {\n  id: string;\n  text: string;\n  kind?: string;\n  target: TreeNoteTarget;\n  metadata?: Record<string, unknown>;\n}\n\nexport type TreeOverlayCorrespondence =\n  | {\n      op: \"add\";\n      left: NodeId<NodeType>;\n      right: NodeId<NodeType>;\n      metadata?: CorrespondenceMetadata;\n    }\n  | {\n      op: \"remove\";\n      left: NodeId<NodeType>;\n      right: NodeId<NodeType>;\n    }\n  | {\n      op: \"annotate\";\n      left: NodeId<NodeType>;\n      right: NodeId<NodeType>;\n      metadata?: CorrespondenceMetadata;\n    };\n\nexport interface TreeOverlay {\n  id: string;\n  name?: string;\n  version?: string;\n  nodes?: Node<NodeType>[];\n  correspondences?: TreeOverlayCorrespondence[];\n  notes?: TreeNote[];\n}\n\nexport interface TreeWorkspaceDescriptor {\n  id?: string;\n  name?: string;\n  version?: string;\n  system?: SystemKey;\n  parts?: readonly string[];\n  cacheKey?: string;\n}\n\nexport interface CorrespondenceStep {\n  from: NodeId<NodeType>;\n  to: NodeId<NodeType>;\n  edge: CorrespondenceEdge;\n}\n\nexport interface CorrespondenceMatch<T extends NodeType = NodeType> {\n  node: Node<T>;\n  distance: number;\n  path: readonly CorrespondenceStep[];\n}\n\nexport type CorrespondenceMap = Partial<{\n  [K in NodeType]: CorrespondenceMatch<K>[];\n}>;\n\nexport function makeCorrespondenceId(\n  left: NodeId<NodeType>,\n  right: NodeId<NodeType>\n) {\n  return [left, right].sort().join(\"<->\");\n}\n","import {\n  ColorData,\n  HebrewLetterData,\n  LatinLetterData,\n  MusicalNoteData,\n  PathData,\n  SphereData,\n  TarotArkAnnuData,\n  WorldData\n} from \"./constants\";\n\nexport enum KaabalahTypes {\n  SPHERE = \"sphere\",\n  PATH = \"path\",\n  WORLD = \"world\",\n}\n\nexport enum LetterTypes {\n  HEBREW_LETTER = \"hebrewLetter\",\n  LATIN_LETTER = \"latinLetter\",\n  SANSKRIT_LETTER = \"sanskritLetter\",\n  VATTAN_LETTER = \"vattanLetter\",\n}\n\nexport enum WesternAstrologyTypes {\n  PLANET = \"planet\",\n  WESTERN_ZODIAC_SIGN = \"westernZodiacSign\",\n  WESTERN_ELEMENT = \"westernElement\",\n  HOUSE = \"house\",\n  ASPECT = \"aspect\",\n  MODALITIES = \"modalities\",\n}\n\nexport enum TarotTypes {\n  TAROT_ARK_ANNU = \"tarotArkAnnu\",\n  TAROT_SUIT = \"tarotSuit\",\n}\n\nexport enum TantraTypes {\n  CHAKRA = \"chakra\",\n  SUBTLE_BODY = \"subtleBody\",\n}\n\nexport enum NumerologyTypes {\n  NUMBER = \"number\",\n}\n\nexport enum MiscTypes {\n  COLOR = \"color\",\n  MUSICAL_NOTE = \"musicalNote\",\n  UNCATEGORIZED = \"uncategorized\",\n}\n\nexport type NodeType =\n  | (typeof KaabalahTypes)[keyof typeof KaabalahTypes]\n  | (typeof LetterTypes)[keyof typeof LetterTypes]\n  | (typeof NumerologyTypes)[keyof typeof NumerologyTypes]\n  | (typeof MiscTypes)[keyof typeof MiscTypes]\n  | (typeof TarotTypes)[keyof typeof TarotTypes]\n  | (typeof TantraTypes)[keyof typeof TantraTypes]\n  | (typeof WesternAstrologyTypes)[keyof typeof WesternAstrologyTypes];\n\ntype Branded<T, B> = T & { readonly __brand: B };\nexport type NodeId<T extends NodeType> = Branded<`${T}:${string}`, T>;\n\nexport const id = <T extends NodeType>(\n  type: T,\n  value: string | number\n): NodeId<T> => `${type}:${value}` as NodeId<T>;\n\nexport const parseId = <T extends NodeType>(nodeId: NodeId<T>): string => {\n  const parsedId = nodeId.split(\":\");\n\n  if (parsedId.length !== 2) {\n    throw new Error(`Invalid node id: ${nodeId}`);\n  }\n\n  return parsedId[1];\n};\n\ninterface DataMap {\n  sphere: SphereData;\n  path: PathData;\n  world: WorldData;\n  hebrewLetter: HebrewLetterData;\n  latinLetter: LatinLetterData;\n  color: ColorData;\n  musicalNote: MusicalNoteData;\n  tarotArkAnnu: TarotArkAnnuData;\n}\n\nexport type NodeData<T extends NodeType> = T extends keyof DataMap\n  ? DataMap[T]\n  : never;\n\nexport interface Node<T extends NodeType> {\n  id: NodeId<T>;\n  type: T;\n  data?: NodeData<T>;\n  name?: string;\n}\n\nexport class BaseNode<T extends NodeType> implements Node<T> {\n  id: NodeId<T>;\n  type: T;\n  data?: NodeData<T>;\n  _name?: string;\n\n  constructor({\n    id: idValue,\n    type,\n    data,\n    name,\n  }: Omit<Node<T>, \"id\"> & { id: string | number }) {\n    this.id = id(type, idValue) as NodeId<T>;\n    this.type = type;\n    this.data = data;\n    this._name = name;\n  }\n\n  get name(): string {\n    return this._name ?? parseId(this.id);\n  }\n}\n","import {\n  COLORS,\n  COLORS_DATA,\n  FOUR_WORLDS,\n  FOUR_WORLDS_DATA,\n  HEBREW_LETTERS,\n  HEBREW_LETTERS_DATA,\n  LATIN_LETTERS,\n  LATIN_LETTERS_DATA,\n  MELKITZEDEKI_PATHS,\n  MODALITIES,\n  MUSICAL_NOTES,\n  MUSICAL_NOTES_DATA,\n  PLANETS,\n  SPHERES,\n  SPHERES_DATA,\n  TAROT_ARKANNUS,\n  TAROT_ARKANNUS_DATA,\n  TAROT_SUITS,\n  TarotArkAnnuData,\n  WESTERN_ASPECTS,\n  WESTERN_ELEMENTS,\n  WESTERN_HOUSES,\n  WESTERN_ZODIAC_SIGNS\n} from \"../constants\";\nimport { TreeOfLife } from \"../tree-of-life\";\nimport {\n  BaseNode,\n  id,\n  KaabalahTypes,\n  LetterTypes,\n  MiscTypes,\n  NodeData,\n  NodeId,\n  NodeType,\n  TarotTypes,\n  WesternAstrologyTypes,\n} from \"../types\";\nimport { Bridge, Loader, Unloader } from \"./registry\";\n\nexport const SYSTEM = \"kaabalah\" as const;\n\n/**\n * Loads the Melkitzedki Order Kaabalah system into the tree of life\n */\nexport const loadKaabalah: Loader = (tree: TreeOfLife) => {\n  const spheres = [\n    { sphere: SPHERES.KETHER, data: SPHERES_DATA.KETHER, relatedNumber: 1 },\n    { sphere: SPHERES.CHOKHMAH, data: SPHERES_DATA.CHOKHMAH, relatedNumber: 2 },\n    { sphere: SPHERES.BINAH, data: SPHERES_DATA.BINAH, relatedNumber: 3 },\n    { sphere: SPHERES.DAATH, data: SPHERES_DATA.DAATH, relatedNumber: 11 },\n    { sphere: SPHERES.CHESED, data: SPHERES_DATA.CHESED, relatedNumber: 4 },\n    { sphere: SPHERES.GEBURAH, data: SPHERES_DATA.GEBURAH, relatedNumber: 5 },\n    {\n      sphere: SPHERES.TIPHARETH,\n      data: SPHERES_DATA.TIPHARETH,\n      relatedNumber: 6,\n    },\n    { sphere: SPHERES.NETZACH, data: SPHERES_DATA.NETZACH, relatedNumber: 7 },\n    { sphere: SPHERES.HOD, data: SPHERES_DATA.HOD, relatedNumber: 8 },\n    { sphere: SPHERES.YESOD, data: SPHERES_DATA.YESOD, relatedNumber: 9 },\n    { sphere: SPHERES.MALKUTH, data: SPHERES_DATA.MALKUTH, relatedNumber: 10 },\n  ];\n\n  const sphereIds: Record<string, NodeId<KaabalahTypes.SPHERE>> = {};\n  for (const sphere of spheres) {\n    sphereIds[sphere.sphere] = tree.addSphere(sphere);\n  }\n\n  const worldsWithElements: {\n    id: string;\n    data: NodeData<KaabalahTypes.WORLD>;\n    element: string;\n  }[] = [\n    {\n      id: FOUR_WORLDS.ATZILUTH,\n      data: FOUR_WORLDS_DATA.ATZILUTH,\n      element: WESTERN_ELEMENTS.FIRE,\n    },\n    {\n      id: FOUR_WORLDS.BRIAH,\n      data: FOUR_WORLDS_DATA.BRIAH,\n      element: WESTERN_ELEMENTS.WATER,\n    },\n    {\n      id: FOUR_WORLDS.YETZIRAH,\n      data: FOUR_WORLDS_DATA.YETZIRAH,\n      element: WESTERN_ELEMENTS.AIR,\n    },\n    {\n      id: FOUR_WORLDS.ASSIAH,\n      data: FOUR_WORLDS_DATA.ASSIAH,\n      element: WESTERN_ELEMENTS.EARTH,\n    },\n  ];\n  for (const world of worldsWithElements) {\n    const worldId = tree.upsertNode(\n      new BaseNode({\n        id: world.id,\n        type: KaabalahTypes.WORLD,\n        data: world.data,\n      })\n    );\n\n    const elementId = tree.upsertNode(\n      new BaseNode({\n        id: world.element,\n        type: WesternAstrologyTypes.WESTERN_ELEMENT,\n      })\n    );\n\n    tree.link(worldId, elementId);\n  }\n\n  const paths = [\n    {\n      leftSphere: sphereIds[SPHERES.KETHER],\n      rightSphere: sphereIds[SPHERES.CHOKHMAH],\n      relatedNumber: MELKITZEDEKI_PATHS.KETHER_CHOKHMAH,\n      data: {\n        meaning: \"Crown's wisdom\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.A,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.A,\n        },\n        {\n          letter: HEBREW_LETTERS.ALEPH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.ALEPH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.KETHER],\n      rightSphere: sphereIds[SPHERES.BINAH],\n      relatedNumber: MELKITZEDEKI_PATHS.KETHER_BINAH,\n      data: {\n        meaning: \"Transparency's intelligence\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.B,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.B,\n        },\n        {\n          letter: HEBREW_LETTERS.BETH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.BETH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.KETHER],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: MELKITZEDEKI_PATHS.KETHER_TIPHARETH,\n      data: {\n        meaning: \"Great Ark Tekton (architect)\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.G,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.G,\n        },\n        {\n          letter: HEBREW_LETTERS.GIMEL,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.GIMEL,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHOKHMAH],\n      rightSphere: sphereIds[SPHERES.BINAH],\n      relatedNumber: MELKITZEDEKI_PATHS.CHOKHMAH_BINAH,\n      data: {\n        meaning: \"Light's wisdom that becomes sound\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.D,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.D,\n        },\n        {\n          letter: HEBREW_LETTERS.DALET,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.DALET,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHOKHMAH],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: MELKITZEDEKI_PATHS.CHOKHMAH_TIPHARETH,\n      data: {\n        meaning: \"Light reaching equilibrium\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.E,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.E,\n        },\n        {\n          letter: LATIN_LETTERS.Ã,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Ã,\n        },\n        {\n          letter: HEBREW_LETTERS.HE,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.HE,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHOKHMAH],\n      rightSphere: sphereIds[SPHERES.CHESED],\n      relatedNumber: MELKITZEDEKI_PATHS.CHOKHMAH_CHESED,\n      data: {\n        meaning: \"Expansive light\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.V,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.V,\n        },\n        {\n          letter: LATIN_LETTERS.U,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.U,\n        },\n        {\n          letter: LATIN_LETTERS.W,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.W,\n        },\n        {\n          letter: LATIN_LETTERS.O,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.O,\n        },\n        {\n          letter: HEBREW_LETTERS.VAV,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.VAV,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.BINAH],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: MELKITZEDEKI_PATHS.BINAH_TIPHARETH,\n      data: {\n        meaning: \"Vibration that balances\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.Z,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Z,\n        },\n        {\n          letter: HEBREW_LETTERS.ZAYIN,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.ZAYIN,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.BINAH],\n      rightSphere: sphereIds[SPHERES.GEBURAH],\n      relatedNumber: MELKITZEDEKI_PATHS.BINAH_GEBURAH,\n      data: {\n        meaning: \"Vibration that becomes dual\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.H,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.H,\n        },\n        {\n          letter: HEBREW_LETTERS.HET,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.HET,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHESED],\n      rightSphere: sphereIds[SPHERES.GEBURAH],\n      relatedNumber: MELKITZEDEKI_PATHS.CHESED_GEBURAH,\n      data: {\n        meaning: \"Expansion towards duality\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.T,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.T,\n        },\n        {\n          letter: HEBREW_LETTERS.TET,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.TET,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHESED],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: MELKITZEDEKI_PATHS.CHESED_TIPHARETH,\n      data: {\n        meaning: \"Expansion of equilibrium\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.I,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.I,\n        },\n        {\n          letter: LATIN_LETTERS.Y,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Y,\n        },\n        {\n          letter: LATIN_LETTERS.J,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.J,\n        },\n        {\n          letter: HEBREW_LETTERS.YOD,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.YOD,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHESED],\n      rightSphere: sphereIds[SPHERES.NETZACH],\n      relatedNumber: MELKITZEDEKI_PATHS.CHESED_NETZACH,\n      data: {\n        meaning: \"Expansion of victory\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.C,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.C,\n        },\n        {\n          letter: HEBREW_LETTERS.KAPH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.KAPH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.GEBURAH],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: MELKITZEDEKI_PATHS.GEBURAH_TIPHARETH,\n      data: {\n        meaning: \"Harmonizing duality\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.L,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.L,\n        },\n        {\n          letter: HEBREW_LETTERS.LAMED,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.LAMED,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.GEBURAH],\n      rightSphere: sphereIds[SPHERES.HOD],\n      relatedNumber: MELKITZEDEKI_PATHS.GEBURAH_HOD,\n      data: {\n        meaning: \"Duality from above with duality from below\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.M,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.M,\n        },\n        {\n          letter: HEBREW_LETTERS.MEM,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.MEM,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.TIPHARETH],\n      rightSphere: sphereIds[SPHERES.NETZACH],\n      relatedNumber: MELKITZEDEKI_PATHS.TIPHARETH_NETZACH,\n      data: {\n        meaning: \"Illumination of victory\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.N,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.N,\n        },\n        {\n          letter: HEBREW_LETTERS.NUN,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.NUN,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.TIPHARETH],\n      rightSphere: sphereIds[SPHERES.YESOD],\n      relatedNumber: MELKITZEDEKI_PATHS.TIPHARETH_YESOD,\n      data: {\n        meaning: \"Illumination of foundations (secrets)\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.S,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.S,\n        },\n        {\n          letter: LATIN_LETTERS.Ç,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Ç,\n        },\n        {\n          letter: HEBREW_LETTERS.SAMEKH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.SAMEKH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.TIPHARETH],\n      rightSphere: sphereIds[SPHERES.HOD],\n      relatedNumber: MELKITZEDEKI_PATHS.TIPHARETH_HOD,\n      data: {\n        meaning: \"Illumination of reasons\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.O,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.O,\n        },\n        {\n          letter: HEBREW_LETTERS.AYIN,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.AYIN,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.NETZACH],\n      rightSphere: sphereIds[SPHERES.HOD],\n      relatedNumber: MELKITZEDEKI_PATHS.NETZACH_HOD,\n      data: {\n        meaning: \"Reason of emotions\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.P,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.P,\n        },\n        {\n          letter: LATIN_LETTERS.F,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.F,\n        },\n        {\n          letter: LATIN_LETTERS.PH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.PH,\n        },\n        {\n          letter: HEBREW_LETTERS.PE,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.PE,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.NETZACH],\n      rightSphere: sphereIds[SPHERES.YESOD],\n      relatedNumber: MELKITZEDEKI_PATHS.NETZACH_YESOD,\n      data: {\n        meaning: \"Victory of inner emptiness\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.TS,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.TS,\n        },\n        {\n          letter: LATIN_LETTERS.TZ,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.TZ,\n        },\n        {\n          letter: HEBREW_LETTERS.TSADI,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.TSADI,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.NETZACH],\n      rightSphere: sphereIds[SPHERES.MALKUTH],\n      relatedNumber: MELKITZEDEKI_PATHS.NETZACH_MALKUTH,\n      data: {\n        meaning: \"Victory over matter\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.K,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.K,\n        },\n        {\n          letter: LATIN_LETTERS.Q,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Q,\n        },\n        {\n          letter: LATIN_LETTERS.KH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.KH,\n        },\n        {\n          letter: HEBREW_LETTERS.QOPH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.QOPH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.HOD],\n      rightSphere: sphereIds[SPHERES.YESOD],\n      relatedNumber: MELKITZEDEKI_PATHS.HOD_YESOD,\n      data: {\n        meaning: \"Reason of foundations\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.R,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.R,\n        },\n        {\n          letter: HEBREW_LETTERS.RESH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.RESH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.HOD],\n      rightSphere: sphereIds[SPHERES.MALKUTH],\n      relatedNumber: MELKITZEDEKI_PATHS.HOD_MALKUTH,\n      data: {\n        meaning: \"Reason conquering the world\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.CH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.CH,\n        },\n        {\n          letter: LATIN_LETTERS.SH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.SH,\n        },\n        {\n          letter: LATIN_LETTERS.X,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.X,\n        },\n        {\n          letter: HEBREW_LETTERS.SHIN,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.SHIN,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.YESOD],\n      rightSphere: sphereIds[SPHERES.MALKUTH],\n      relatedNumber: MELKITZEDEKI_PATHS.YESOD_MALKUTH,\n      data: {\n        meaning: \"Filling the inner emptiness of the world\",\n      },\n      letters: [\n        {\n          letter: LATIN_LETTERS.TH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.TH,\n        },\n        {\n          letter: HEBREW_LETTERS.TAV,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.TAV,\n        },\n      ],\n    },\n  ];\n\n  for (const path of paths) {\n    const pathId = tree.addPath({\n      leftSphere: path.leftSphere,\n      rightSphere: path.rightSphere,\n      relatedNumber: path.relatedNumber,\n      data: path.data,\n    });\n\n    tree.addLetters({\n      path: pathId,\n      letters: path.letters,\n    });\n  }\n\n  return tree;\n};\n\nexport const unloadKaabalah: Unloader = (tree: TreeOfLife) => {\n  const spheres = Object.values(SPHERES);\n  for (let i = 0; i < spheres.length; i++) {\n    tree.removeNode(id(KaabalahTypes.SPHERE, spheres[i]));\n  }\n\n  const paths = Object.values(MELKITZEDEKI_PATHS);\n  for (let i = 0; i < paths.length; i++) {\n    tree.removeNode(id(KaabalahTypes.PATH, paths[i]));\n  }\n};\n\nexport const loadColors: Loader = (tree: TreeOfLife) => {\n  const colors = Object.values(COLORS);\n  for (let i = 0; i < colors.length; i++) {\n    tree.upsertNode(\n      new BaseNode({\n        id: colors[i],\n        type: MiscTypes.COLOR,\n        data: COLORS_DATA[colors[i]],\n      })\n    );\n  }\n\n  const spheresWithColors = [\n    {\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.KETHER),\n      color: \"crystal\",\n      colorData: {\n        colorDescription:\n          \"Transparent, clear, crystal-like. All the colors mixed, on their purest, most saint form\",\n        colorNames: [\"transparent\"],\n        colorHexCodes: [\"#cccccc\"],\n      },\n    },\n    {\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.CHOKHMAH),\n      color: \"iridescent\",\n      colorData: {\n        colorDescription:\n          \"All the colors, in a iridescent manner. Can also be represented by all the other sphere colors in a pizza-like pattern, starting with Tiphereth on top, and going clockwise following the spheres on the right and left columns.\",\n        colorNames: [\n          \"iridescent\",\n          \"yellow\",\n          \"blue\",\n          \"green\",\n          \"purple\",\n          \"orange\",\n          \"red\",\n        ],\n        colorHexCodes: [\n          \"#EDBBE7\",\n          \"#FFF50F\",\n          \"#0000FF\",\n          \"#14FF00\",\n          \"#8F00FF\",\n          \"#FFA800\",\n          \"#FF0000\",\n        ],\n      },\n    },\n    {\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.BINAH),\n      color: \"black\",\n      colorData: {\n        colorDescription: \"All the colors mixed, on their lowest vibration.\",\n        colorNames: [\"black\"],\n        colorHexCodes: [\"#000000\"],\n      },\n    },\n    {\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.DAATH),\n      color: \"white\",\n      colorData: {\n        colorDescription:\n          \"All the colors mixed, on their highest vibration. Can also be represented by an yin-yang pattern.\",\n        colorNames: [\"white\"],\n        colorHexCodes: [\"#FFFFFF\"],\n      },\n    },\n    {\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.CHESED),\n      color: COLORS.BLUE,\n      colorData: COLORS_DATA.BLUE,\n    },\n    {\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.GEBURAH),\n      color: COLORS.RED,\n      colorData: COLORS_DATA.RED,\n    },\n    {\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.TIPHARETH),\n      color: COLORS.YELLOW,\n      colorData: COLORS_DATA.YELLOW,\n    },\n    {\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.NETZACH),\n      color: COLORS.GREEN,\n      colorData: COLORS_DATA.GREEN,\n    },\n    {\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.HOD),\n      color: COLORS.ORANGE,\n      colorData: COLORS_DATA.ORANGE,\n    },\n    {\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.YESOD),\n      color: \"purple\",\n      colorData: {\n        colorDescription: \"Purple\",\n        colorNames: [\"purple\"],\n        colorHexCodes: [\"#8F00FF\"],\n      },\n    },\n    {\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.MALKUTH),\n      color: \"malkuth\",\n      colorData: {\n        colorDescription:\n          \"Made up of the colors of earth, which is created from the 4 elements. Brown can be used to represent it, but, usually it is represented in a pizza-like pattern, starting with Yellow on top, and going clockwise with Green, Brown and Red, all with slightly less saturation.\",\n        colorNames: [\n          \"unsaturated yellow\",\n          \"unsaturated green\",\n          \"unsaturated brown\",\n          \"unsaturated red\",\n        ],\n        colorHexCodes: [\"#FFF659\", \"#70FF6E\", \"#422E29\", \"#FF5454\"],\n      },\n    },\n  ];\n\n  for (const sphereWithColor of spheresWithColors) {\n    const colorId = tree.upsertNode(\n      new BaseNode({\n        id: sphereWithColor.color,\n        type: MiscTypes.COLOR,\n        data: sphereWithColor.colorData,\n      })\n    );\n\n    tree.link(sphereWithColor.sphere, colorId);\n  }\n\n  const pathsWithColors = [\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.KETHER_CHOKHMAH),\n      color: \"gold\",\n      colorData: {\n        colorDescription: \"Gold\",\n        colorNames: [\"gold\"],\n        colorHexCodes: [\"#D4AF37\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.KETHER_BINAH),\n      color: \"warm-gold\",\n      colorData: {\n        colorDescription: \"Warm gold\",\n        colorNames: [\"warm gold\"],\n        colorHexCodes: [\"#E8C848\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.KETHER_TIPHARETH),\n      color: \"blue-grey\",\n      colorData: {\n        colorDescription: \"Blue-grey\",\n        colorNames: [\"blue-grey\"],\n        colorHexCodes: [\"#8098B0\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHOKHMAH_BINAH),\n      color: \"salmon-pink\",\n      colorData: {\n        colorDescription: \"Salmon pink\",\n        colorNames: [\"salmon pink\"],\n        colorHexCodes: [\"#E06080\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHOKHMAH_TIPHARETH),\n      color: \"warm-salmon\",\n      colorData: {\n        colorDescription: \"Warm salmon\",\n        colorNames: [\"warm salmon\"],\n        colorHexCodes: [\"#E87050\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHOKHMAH_CHESED),\n      color: \"periwinkle-blue\",\n      colorData: {\n        colorDescription: \"Periwinkle blue\",\n        colorNames: [\"periwinkle blue\"],\n        colorHexCodes: [\"#7088C0\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.BINAH_TIPHARETH),\n      color: \"peach-orange\",\n      colorData: {\n        colorDescription: \"Peach orange\",\n        colorNames: [\"peach orange\"],\n        colorHexCodes: [\"#E8A850\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.BINAH_GEBURAH),\n      color: \"dark-red\",\n      colorData: {\n        colorDescription: \"Dark red\",\n        colorNames: [\"dark red\"],\n        colorHexCodes: [\"#C82030\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHESED_GEBURAH),\n      color: \"olive-green\",\n      colorData: {\n        colorDescription: \"Olive green\",\n        colorNames: [\"olive green\"],\n        colorHexCodes: [\"#A8B840\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHESED_TIPHARETH),\n      color: \"sage\",\n      colorData: {\n        colorDescription: \"Sage\",\n        colorNames: [\"sage\"],\n        colorHexCodes: [\"#B6BD9A\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHESED_NETZACH),\n      color: \"blue\",\n      colorData: {\n        colorDescription: \"Blue\",\n        colorNames: [\"blue\"],\n        colorHexCodes: [\"#5080C0\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.GEBURAH_TIPHARETH),\n      color: \"emerald-green\",\n      colorData: {\n        colorDescription: \"Emerald green\",\n        colorNames: [\"emerald green\"],\n        colorHexCodes: [\"#48A860\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.GEBURAH_HOD),\n      color: \"lavender\",\n      colorData: {\n        colorDescription: \"Lavender\",\n        colorNames: [\"lavender\"],\n        colorHexCodes: [\"#8878B8\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.TIPHARETH_NETZACH),\n      color: \"teal-green-netzach\",\n      colorData: {\n        colorDescription: \"Teal green\",\n        colorNames: [\"teal green\"],\n        colorHexCodes: [\"#28A880\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.TIPHARETH_YESOD),\n      color: \"purple-yesod-path\",\n      colorData: {\n        colorDescription: \"Purple\",\n        colorNames: [\"purple\"],\n        colorHexCodes: [\"#8050A8\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.TIPHARETH_HOD),\n      color: \"magenta-pink\",\n      colorData: {\n        colorDescription: \"Magenta pink\",\n        colorNames: [\"magenta pink\"],\n        colorHexCodes: [\"#C850A0\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.NETZACH_HOD),\n      color: \"rose\",\n      colorData: {\n        colorDescription: \"Rose\",\n        colorNames: [\"Rose\"],\n        colorHexCodes: [\"#D06088\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.NETZACH_YESOD),\n      color: \"violet\",\n      colorData: {\n        colorDescription: \"Violet\",\n        colorNames: [\"violet\"],\n        colorHexCodes: [\"#8848C0\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.NETZACH_MALKUTH),\n      color: \"salmon\",\n      colorData: {\n        colorDescription: \"Salmon\",\n        colorNames: [\"salmon\"],\n        colorHexCodes: [\"#D86858\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.HOD_YESOD),\n      color: \"orange\",\n      colorData: {\n        colorDescription: \"Orange\",\n        colorNames: [\"orange\"],\n        colorHexCodes: [\"#E89040\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.HOD_MALKUTH),\n      color: \"rose-pink\",\n      colorData: {\n        colorDescription: \"Rose pink\",\n        colorNames: [\"rose pink\"],\n        colorHexCodes: [\"#D06080\"],\n      },\n    },\n    {\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.YESOD_MALKUTH),\n      color: \"teal-green-malkuth\",\n      colorData: {\n        colorDescription: \"Teal green\",\n        colorNames: [\"teal green\"],\n        colorHexCodes: [\"#30B898\"],\n      },\n    },\n  ];\n\n  for (const pathWithColor of pathsWithColors) {\n    const colorId = tree.upsertNode(\n      new BaseNode({\n        id: pathWithColor.color,\n        type: MiscTypes.COLOR,\n        data: pathWithColor.colorData,\n      })\n    );\n\n    tree.link(pathWithColor.path, colorId);\n  }\n\n  return tree;\n};\n\nexport const unloadColors: Unloader = (tree: TreeOfLife) => {\n  const colors = Object.values(COLORS);\n  for (let i = 0; i < colors.length; i++) {\n    tree.removeNode(id(MiscTypes.COLOR, colors[i]));\n  }\n\n  const sphereColors = Object.values(SPHERES).flatMap((sphere) =>\n    tree\n      .related(id(KaabalahTypes.SPHERE, sphere), MiscTypes.COLOR)\n      .map((color) => color.id)\n  );\n  for (let i = 0; i < sphereColors.length; i++) {\n    tree.removeNode(sphereColors[i]);\n  }\n\n  const pathColors = Object.values(MELKITZEDEKI_PATHS).flatMap((path) =>\n    tree\n      .related(id(KaabalahTypes.PATH, path), MiscTypes.COLOR)\n      .map((color) => color.id)\n  );\n  for (let i = 0; i < pathColors.length; i++) {\n    tree.removeNode(pathColors[i]);\n  }\n};\n\nexport const loadMusicalNotes: Loader = (tree: TreeOfLife) => {\n  const musicalNotes = Object.values(MUSICAL_NOTES);\n\n  const musicalNotesIds: Record<string, NodeId<MiscTypes.MUSICAL_NOTE>> = {};\n  for (let i = 0; i < musicalNotes.length; i++) {\n    const musicalNoteId = tree.upsertNode(\n      new BaseNode({\n        id: musicalNotes[i],\n        type: MiscTypes.MUSICAL_NOTE,\n        data: MUSICAL_NOTES_DATA[musicalNotes[i]],\n      })\n    );\n    musicalNotesIds[musicalNotes[i]] = musicalNoteId;\n  }\n\n  const firstIntervalId = tree.upsertNode(\n    new BaseNode({\n      id: \"1st interval\",\n      type: MiscTypes.MUSICAL_NOTE,\n      data: {\n        note: \"Interval\",\n        noteDescription: \"An interval\",\n      },\n    })\n  );\n  const theThingCreatedId = tree.upsertNode(\n    new BaseNode({\n      id: \"The thing created\",\n      type: MiscTypes.MUSICAL_NOTE,\n      data: {\n        note: \"The thing created\",\n        noteDescription: \"The thing created\",\n      },\n    })\n  );\n  const secondIntervalId = tree.upsertNode(\n    new BaseNode({\n      id: \"2nd interval\",\n      type: MiscTypes.MUSICAL_NOTE,\n      data: {\n        note: \"Interval\",\n        noteDescription: \"An interval\",\n      },\n    })\n  );\n\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.KETHER),\n    musicalNotesIds[MUSICAL_NOTES.DO]\n  );\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.CHOKHMAH),\n    musicalNotesIds[MUSICAL_NOTES.RE]\n  );\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.BINAH),\n    musicalNotesIds[MUSICAL_NOTES.MI]\n  );\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.DAATH), firstIntervalId);\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.CHESED),\n    musicalNotesIds[MUSICAL_NOTES.FA]\n  );\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.GEBURAH),\n    musicalNotesIds[MUSICAL_NOTES.SOL]\n  );\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.TIPHARETH), theThingCreatedId);\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.NETZACH),\n    musicalNotesIds[MUSICAL_NOTES.SI]\n  );\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.YESOD), secondIntervalId);\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.MALKUTH),\n    musicalNotesIds[MUSICAL_NOTES.DO]\n  );\n\n  return tree;\n};\n\nexport const unloadMusicalNotes: Unloader = (tree: TreeOfLife) => {\n  const notes = Object.values(SPHERES).flatMap((sphere) =>\n    tree\n      .related(id(KaabalahTypes.SPHERE, sphere), MiscTypes.MUSICAL_NOTE)\n      .map((note) => note.id)\n  );\n  for (let i = 0; i < notes.length; i++) {\n    tree.removeNode(notes[i]);\n  }\n};\n\nconst linkColorsAndSounds = (tree: TreeOfLife) => {\n  if (\n    !tree.loadedParts.includes(\"colors\") ||\n    !tree.loadedParts.includes(\"music\")\n  ) {\n    throw new Error(\"Both parts must be loaded for a bridge to happen\");\n  }\n\n  const noteColors: {\n    note: NodeId<MiscTypes.MUSICAL_NOTE>;\n    color: NodeId<MiscTypes.COLOR>;\n  }[] = [\n    {\n      note: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.DO),\n      color: id(MiscTypes.COLOR, COLORS.GREEN),\n    },\n    {\n      note: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.DO_SHARP),\n      color: id(MiscTypes.COLOR, COLORS.SPRING_GREEN),\n    },\n    {\n      note: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.RE),\n      color: id(MiscTypes.COLOR, COLORS.CYAN),\n    },\n    {\n      note: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.RE_SHARP),\n      color: id(MiscTypes.COLOR, COLORS.AZURE),\n    },\n    {\n      note: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.MI),\n      color: id(MiscTypes.COLOR, COLORS.BLUE),\n    },\n    {\n      note: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.FA),\n      color: id(MiscTypes.COLOR, COLORS.VIOLET),\n    },\n    {\n      note: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.FA_SHARP),\n      color: id(MiscTypes.COLOR, COLORS.MAGENTA),\n    },\n    {\n      note: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.SOL),\n      color: id(MiscTypes.COLOR, COLORS.ROSE),\n    },\n    {\n      note: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.SOL_SHARP),\n      color: id(MiscTypes.COLOR, COLORS.RED),\n    },\n    {\n      note: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.LA),\n      color: id(MiscTypes.COLOR, COLORS.ORANGE),\n    },\n    {\n      note: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.LA_SHARP),\n      color: id(MiscTypes.COLOR, COLORS.YELLOW),\n    },\n    {\n      note: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.SI),\n      color: id(MiscTypes.COLOR, COLORS.CHARTREUSE_GREEN),\n    },\n  ];\n\n  for (const { note, color } of noteColors) {\n    tree.link(note, color);\n  }\n\n  return tree;\n};\n\nconst linkSoundsAndWesternAstrology = (tree: TreeOfLife) => {\n  if (\n    !tree.loadedParts.includes(\"westernAstrology\") ||\n    !tree.loadedParts.includes(\"music\")\n  ) {\n    throw new Error(\n      \"At least one of the parts must be loaded for a bridge to happen\"\n    );\n  }\n\n  const astrologySignsSounds: {\n    sign: NodeId<WesternAstrologyTypes.WESTERN_ZODIAC_SIGN>;\n    sound: NodeId<MiscTypes.MUSICAL_NOTE>;\n  }[] = [\n    {\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.VIRGO\n      ),\n      sound: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.DO),\n    },\n    {\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.LIBRA\n      ),\n      sound: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.DO_SHARP),\n    },\n    {\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.SCORPIO\n      ),\n      sound: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.RE),\n    },\n    {\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.SAGITTARIUS\n      ),\n      sound: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.RE_SHARP),\n    },\n    {\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.CAPRICORN\n      ),\n      sound: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.MI),\n    },\n    {\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.AQUARIUS\n      ),\n      sound: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.FA),\n    },\n    {\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.PISCES\n      ),\n      sound: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.FA_SHARP),\n    },\n    {\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.ARIES\n      ),\n      sound: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.SOL),\n    },\n    {\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.TAURUS\n      ),\n      sound: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.SOL_SHARP),\n    },\n    {\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.GEMINI\n      ),\n      sound: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.LA),\n    },\n    {\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.CANCER\n      ),\n      sound: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.LA_SHARP),\n    },\n    {\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.LEO\n      ),\n      sound: id(MiscTypes.MUSICAL_NOTE, MUSICAL_NOTES.SI),\n    },\n  ];\n\n  for (const { sign, sound } of astrologySignsSounds) {\n    tree.link(sign, sound);\n  }\n\n  return tree;\n};\n\nconst linkColorsAndWesternAstrology = (tree: TreeOfLife) => {\n  if (\n    !tree.loadedParts.includes(\"colors\") ||\n    !tree.loadedParts.includes(\"westernAstrology\")\n  ) {\n    throw new Error(\"Both parts must be loaded for a bridge to happen\");\n  }\n\n  const astrologySignsColors: {\n    color: NodeId<MiscTypes.COLOR>;\n    sign: NodeId<WesternAstrologyTypes.WESTERN_ZODIAC_SIGN>;\n  }[] = [\n    {\n      color: id(MiscTypes.COLOR, COLORS.RED),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.TAURUS\n      ),\n    },\n    {\n      color: id(MiscTypes.COLOR, COLORS.ORANGE),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.GEMINI\n      ),\n    },\n    {\n      color: id(MiscTypes.COLOR, COLORS.YELLOW),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.CANCER\n      ),\n    },\n    {\n      color: id(MiscTypes.COLOR, COLORS.CHARTREUSE_GREEN),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.LEO\n      ),\n    },\n    {\n      color: id(MiscTypes.COLOR, COLORS.GREEN),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.VIRGO\n      ),\n    },\n    {\n      color: id(MiscTypes.COLOR, COLORS.SPRING_GREEN),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.LIBRA\n      ),\n    },\n    {\n      color: id(MiscTypes.COLOR, COLORS.CYAN),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.SCORPIO\n      ),\n    },\n    {\n      color: id(MiscTypes.COLOR, COLORS.AZURE),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.SAGITTARIUS\n      ),\n    },\n    {\n      color: id(MiscTypes.COLOR, COLORS.BLUE),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.CAPRICORN\n      ),\n    },\n    {\n      color: id(MiscTypes.COLOR, COLORS.VIOLET),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.AQUARIUS\n      ),\n    },\n    {\n      color: id(MiscTypes.COLOR, COLORS.MAGENTA),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.PISCES\n      ),\n    },\n    {\n      color: id(MiscTypes.COLOR, COLORS.ROSE),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.ARIES\n      ),\n    },\n  ];\n\n  for (const { color, sign } of astrologySignsColors) {\n    tree.link(color, sign);\n  }\n\n  return tree;\n};\n\nconst linkTarotAndWesternAstrology = (tree: TreeOfLife) => {\n  if (\n    !tree.loadedParts.includes(\"tarot\") ||\n    !tree.loadedParts.includes(\"westernAstrology\")\n  ) {\n    throw new Error(\"Both parts must be loaded for a bridge to happen\");\n  }\n\n  const courtCardsSigns: {\n    courtCard: NodeId<TarotTypes.TAROT_ARK_ANNU>;\n    sign: NodeId<WesternAstrologyTypes.WESTERN_ZODIAC_SIGN>;\n  }[] = [\n    {\n      courtCard: id(TarotTypes.TAROT_ARK_ANNU, TAROT_ARKANNUS.KING_OF_WANDS),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.ARIES\n      ),\n    },\n    {\n      courtCard: id(TarotTypes.TAROT_ARK_ANNU, TAROT_ARKANNUS.QUEEN_OF_WANDS),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.LEO\n      ),\n    },\n    {\n      courtCard: id(TarotTypes.TAROT_ARK_ANNU, TAROT_ARKANNUS.KNIGHT_OF_WANDS),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.SAGITTARIUS\n      ),\n    },\n    {\n      courtCard: id(TarotTypes.TAROT_ARK_ANNU, TAROT_ARKANNUS.KING_OF_CUPS),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.CANCER\n      ),\n    },\n    {\n      courtCard: id(TarotTypes.TAROT_ARK_ANNU, TAROT_ARKANNUS.QUEEN_OF_CUPS),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.SCORPIO\n      ),\n    },\n    {\n      courtCard: id(TarotTypes.TAROT_ARK_ANNU, TAROT_ARKANNUS.KNIGHT_OF_CUPS),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.PISCES\n      ),\n    },\n    {\n      courtCard: id(TarotTypes.TAROT_ARK_ANNU, TAROT_ARKANNUS.KING_OF_SWORDS),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.LIBRA\n      ),\n    },\n    {\n      courtCard: id(TarotTypes.TAROT_ARK_ANNU, TAROT_ARKANNUS.QUEEN_OF_SWORDS),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.AQUARIUS\n      ),\n    },\n    {\n      courtCard: id(TarotTypes.TAROT_ARK_ANNU, TAROT_ARKANNUS.KNIGHT_OF_SWORDS),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.GEMINI\n      ),\n    },\n    {\n      courtCard: id(TarotTypes.TAROT_ARK_ANNU, TAROT_ARKANNUS.KING_OF_PENTACLES),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.CAPRICORN\n      ),\n    },\n    {\n      courtCard: id(TarotTypes.TAROT_ARK_ANNU, TAROT_ARKANNUS.QUEEN_OF_PENTACLES),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.TAURUS\n      ),\n    },\n    {\n      courtCard: id(TarotTypes.TAROT_ARK_ANNU, TAROT_ARKANNUS.KNIGHT_OF_PENTACLES),\n      sign: id(\n        WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n        WESTERN_ZODIAC_SIGNS.VIRGO\n      ),\n    },\n  ];\n\n  for (const { courtCard, sign } of courtCardsSigns) {\n    tree.link(courtCard, sign);\n  }\n\n  return tree;\n};\n\nexport const loadWesternAstrology: Loader = (tree: TreeOfLife) => {\n  const planets = Object.values(PLANETS);\n  const planetsIds: Record<string, NodeId<WesternAstrologyTypes.PLANET>> = {};\n  for (const planet of planets) {\n    const planetId = tree.upsertNode(\n      new BaseNode({\n        id: planet,\n        type: WesternAstrologyTypes.PLANET,\n      })\n    );\n    planetsIds[planet] = planetId;\n  }\n\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.KETHER),\n    planetsIds[PLANETS.NEPTUNE]\n  );\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.CHOKHMAH),\n    planetsIds[PLANETS.URANUS]\n  );\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.BINAH),\n    planetsIds[PLANETS.SATURN]\n  );\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.DAATH), planetsIds[PLANETS.PLUTO]);\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.CHESED),\n    planetsIds[PLANETS.JUPITER]\n  );\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.GEBURAH),\n    planetsIds[PLANETS.MARS]\n  );\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.TIPHARETH),\n    planetsIds[PLANETS.SUN]\n  );\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.NETZACH),\n    planetsIds[PLANETS.VENUS]\n  );\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.HOD), planetsIds[PLANETS.MERCURY]);\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.YESOD), planetsIds[PLANETS.MOON]);\n\n  const elements = Object.values(WESTERN_ELEMENTS);\n  const elementIds: Record<string, NodeId<WesternAstrologyTypes.WESTERN_ELEMENT>> = {};\n  for (const element of elements) {\n    const elementId = tree.upsertNode(\n      new BaseNode({\n        id: element,\n        type: WesternAstrologyTypes.WESTERN_ELEMENT,\n      })\n    );\n    elementIds[element] = elementId;\n  }\n\n  tree.link(\n    id(KaabalahTypes.SPHERE, SPHERES.MALKUTH),\n    planetsIds[PLANETS.EARTH]\n  );\n  tree.link(planetsIds[PLANETS.EARTH], elementIds[WESTERN_ELEMENTS.EARTH]);\n  tree.link(elementIds[WESTERN_ELEMENTS.EARTH], id(KaabalahTypes.SPHERE, SPHERES.MALKUTH));\n\n  tree.link(id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.KETHER_CHOKHMAH), elementIds[WESTERN_ELEMENTS.AIR]);\n  tree.link(\n    id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.KETHER_BINAH),\n    planetsIds[PLANETS.MOON]\n  );\n  tree.link(\n    id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.KETHER_TIPHARETH),\n    planetsIds[PLANETS.VENUS]\n  );\n  tree.link(\n    id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHOKHMAH_BINAH),\n    planetsIds[PLANETS.JUPITER]\n  );\n\n  const houses = Object.values(WESTERN_HOUSES);\n  const houseIds: Record<string, NodeId<WesternAstrologyTypes.HOUSE>> = {};\n  for (let i = 0; i < houses.length; i++) {\n    const house = houses[i];\n    const relatedNumber = i + 1;\n    const houseId = tree.upsertNode(\n      new BaseNode({\n        id: house,\n        type: WesternAstrologyTypes.HOUSE,\n      })\n    );\n    tree.addNumber({ number: relatedNumber, nodeId: houseId });\n\n    houseIds[house] = houseId;\n  }\n\n  const modalities = Object.values(MODALITIES);\n  const modalityIds: Record<string, NodeId<WesternAstrologyTypes.MODALITIES>> = {};\n  for (const modality of modalities) {\n    const modalityId = tree.upsertNode(\n      new BaseNode({\n        id: modality,\n        type: WesternAstrologyTypes.MODALITIES,\n      })\n    );\n    modalityIds[modality] = modalityId;\n  }\n\n  tree.addWesternAstrologySign({\n    spheres: [\n      id(KaabalahTypes.SPHERE, SPHERES.GEBURAH),\n    ],\n    path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHOKHMAH_TIPHARETH),\n    house: houseIds[WESTERN_HOUSES.ASCENDANT],\n    planets: [\n      planetsIds[PLANETS.MARS],\n    ],\n    sign: WESTERN_ZODIAC_SIGNS.ARIES,\n    element: elementIds[WESTERN_ELEMENTS.FIRE],\n    modality: modalityIds[MODALITIES.CARDINAL],\n    relatedNumber: 1,\n  });\n  tree.addWesternAstrologySign({\n    spheres: [\n      id(KaabalahTypes.SPHERE, SPHERES.NETZACH),\n    ],\n    path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHOKHMAH_CHESED),\n    house: houseIds[WESTERN_HOUSES.SECOND_HOUSE],\n    planets: [\n      planetsIds[PLANETS.VENUS],\n    ],\n    sign: WESTERN_ZODIAC_SIGNS.TAURUS,\n    element: elementIds[WESTERN_ELEMENTS.EARTH],\n    modality: modalityIds[MODALITIES.FIXED],\n    relatedNumber: 2,\n  });\n  tree.addWesternAstrologySign({\n    spheres: [\n      id(KaabalahTypes.SPHERE, SPHERES.HOD),\n    ],\n    path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.BINAH_TIPHARETH),\n    house: houseIds[WESTERN_HOUSES.THIRD_HOUSE],\n    planets: [\n      planetsIds[PLANETS.MERCURY],\n    ],\n    sign: WESTERN_ZODIAC_SIGNS.GEMINI,\n    element: elementIds[WESTERN_ELEMENTS.AIR],\n    modality: modalityIds[MODALITIES.MUTABLE],\n    relatedNumber: 3,\n  });\n  tree.addWesternAstrologySign({\n    spheres: [\n      id(KaabalahTypes.SPHERE, SPHERES.YESOD),\n    ],\n    path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.BINAH_GEBURAH),\n    house: houseIds[WESTERN_HOUSES.IMUM_COELI],\n    planets: [\n      planetsIds[PLANETS.MOON],\n    ],\n    sign: WESTERN_ZODIAC_SIGNS.CANCER,\n    element: elementIds[WESTERN_ELEMENTS.WATER],\n    modality: modalityIds[MODALITIES.FIXED],\n    relatedNumber: 4,\n  });\n  tree.addWesternAstrologySign({\n    spheres: [\n      id(KaabalahTypes.SPHERE, SPHERES.TIPHARETH),\n    ],\n    path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHESED_GEBURAH),\n    house: houseIds[WESTERN_HOUSES.FIFTH_HOUSE],\n    planets: [\n      planetsIds[PLANETS.SUN],\n    ],\n    sign: WESTERN_ZODIAC_SIGNS.LEO,\n    element: elementIds[WESTERN_ELEMENTS.FIRE],\n    modality: modalityIds[MODALITIES.FIXED],\n    relatedNumber: 5,\n  });\n  tree.addWesternAstrologySign({\n    spheres: [\n      id(KaabalahTypes.SPHERE, SPHERES.MALKUTH),\n    ],\n    path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHESED_TIPHARETH),\n    house: houseIds[WESTERN_HOUSES.SIXTH_HOUSE],\n    planets: [\n      planetsIds[PLANETS.MERCURY],\n    ],\n    sign: WESTERN_ZODIAC_SIGNS.VIRGO,\n    element: elementIds[WESTERN_ELEMENTS.EARTH],\n    modality: modalityIds[MODALITIES.MUTABLE],\n    relatedNumber: 6,\n  });\n  tree.link(\n    id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHESED_NETZACH),\n    planetsIds[PLANETS.MARS]\n  );\n  tree.addWesternAstrologySign({\n    spheres: [\n      id(KaabalahTypes.SPHERE, SPHERES.TIPHARETH),\n      id(KaabalahTypes.SPHERE, SPHERES.NETZACH),\n    ],\n    path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.GEBURAH_TIPHARETH),\n    house: houseIds[WESTERN_HOUSES.DESCENDANT],\n    planets: [\n      planetsIds[PLANETS.SUN],\n      planetsIds[PLANETS.VENUS],\n    ],\n    sign: WESTERN_ZODIAC_SIGNS.LIBRA,\n    element: elementIds[WESTERN_ELEMENTS.AIR],\n    modality: modalityIds[MODALITIES.CARDINAL],\n    relatedNumber: 7,\n  });\n\n  tree.link(id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.GEBURAH_HOD), elementIds[WESTERN_ELEMENTS.WATER]);\n\n  tree.addWesternAstrologySign({\n    spheres: [\n      id(KaabalahTypes.SPHERE, SPHERES.DAATH),\n    ],\n    path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.TIPHARETH_NETZACH),\n    house: houseIds[WESTERN_HOUSES.EIGHTH_HOUSE],\n    planets: [\n      planetsIds[PLANETS.MARS],\n      planetsIds[PLANETS.PLUTO],\n    ],\n    sign: WESTERN_ZODIAC_SIGNS.SCORPIO,\n    element: elementIds[WESTERN_ELEMENTS.WATER],\n    modality: modalityIds[MODALITIES.FIXED],\n    relatedNumber: 8,\n  });\n  tree.addWesternAstrologySign({\n    spheres: [\n      id(KaabalahTypes.SPHERE, SPHERES.CHESED),\n    ],\n    path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.TIPHARETH_YESOD),\n    house: houseIds[WESTERN_HOUSES.NINTH_HOUSE],\n    planets: [\n      planetsIds[PLANETS.JUPITER],\n    ],\n    sign: WESTERN_ZODIAC_SIGNS.SAGITTARIUS,\n    element: elementIds[WESTERN_ELEMENTS.FIRE],\n    modality: modalityIds[MODALITIES.MUTABLE],\n    relatedNumber: 9,\n  });\n  tree.addWesternAstrologySign({\n    spheres: [\n      id(KaabalahTypes.SPHERE, SPHERES.BINAH),\n    ],\n    path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.TIPHARETH_HOD),\n    house: houseIds[WESTERN_HOUSES.MEDIUM_COELI],\n    planets: [\n      planetsIds[PLANETS.SATURN],\n    ],\n    sign: WESTERN_ZODIAC_SIGNS.CAPRICORN,\n    element: elementIds[WESTERN_ELEMENTS.EARTH],\n    modality: modalityIds[MODALITIES.CARDINAL],\n    relatedNumber: 10,\n  });\n  tree.link(\n    id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.NETZACH_HOD),\n    planetsIds[PLANETS.MERCURY]\n  );\n  tree.addWesternAstrologySign({\n    spheres: [\n      id(KaabalahTypes.SPHERE, SPHERES.CHOKHMAH),\n    ],\n    path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.NETZACH_YESOD),\n    house: houseIds[WESTERN_HOUSES.ELEVENTH_HOUSE],\n    planets: [\n      planetsIds[PLANETS.SATURN],\n      planetsIds[PLANETS.URANUS],\n    ],\n    sign: WESTERN_ZODIAC_SIGNS.AQUARIUS,\n    element: elementIds[WESTERN_ELEMENTS.AIR],\n    modality: modalityIds[MODALITIES.FIXED],\n    relatedNumber: 11,\n  });\n  tree.addWesternAstrologySign({\n    spheres: [\n      id(KaabalahTypes.SPHERE, SPHERES.KETHER),\n    ],\n    path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.NETZACH_MALKUTH),\n    house: houseIds[WESTERN_HOUSES.TWELFTH_HOUSE],\n    planets: [\n      planetsIds[PLANETS.JUPITER],\n      planetsIds[PLANETS.NEPTUNE],\n    ],\n    sign: WESTERN_ZODIAC_SIGNS.PISCES,\n    element: elementIds[WESTERN_ELEMENTS.WATER],\n    modality: modalityIds[MODALITIES.MUTABLE],\n    relatedNumber: 12,\n  });\n  tree.link(\n    id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.HOD_YESOD),\n    planetsIds[PLANETS.SATURN]\n  );\n  tree.link(id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.HOD_MALKUTH), elementIds[WESTERN_ELEMENTS.FIRE]);\n  tree.link(\n    id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.YESOD_MALKUTH),\n    planetsIds[PLANETS.SUN]\n  );\n\n  const aspects = Object.values(WESTERN_ASPECTS);\n  const aspectIds: Record<string, NodeId<WesternAstrologyTypes.ASPECT>> = {};\n  for (const aspect of aspects) {\n    const aspectId = tree.upsertNode(\n      new BaseNode({\n        id: aspect,\n        type: WesternAstrologyTypes.ASPECT,\n      })\n    );\n    aspectIds[aspect] = aspectId;\n  }\n\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.KETHER), aspectIds[WESTERN_ASPECTS.CONJUNCTION]);\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.CHOKHMAH), aspectIds[WESTERN_ASPECTS.DUODECILE]);\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.BINAH), aspectIds[WESTERN_ASPECTS.OCTILE]);\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.CHESED), aspectIds[WESTERN_ASPECTS.SEXTILE]);\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.GEBURAH), aspectIds[WESTERN_ASPECTS.SQUARE]);\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.NETZACH), aspectIds[WESTERN_ASPECTS.TRINE]);\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.HOD), aspectIds[WESTERN_ASPECTS.TRIOCTILE]);\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.YESOD), aspectIds[WESTERN_ASPECTS.QUINCUNX]);\n  tree.link(id(KaabalahTypes.SPHERE, SPHERES.MALKUTH), aspectIds[WESTERN_ASPECTS.OPPOSITION]);\n\n  return tree;\n};\n\nexport const unloadWesternAstrology: Unloader = (tree: TreeOfLife) => {\n  const planets = Object.values(SPHERES).flatMap((planet) =>\n    tree\n      .related(id(KaabalahTypes.SPHERE, planet), WesternAstrologyTypes.PLANET)\n      .map((planet) => planet.id)\n  );\n  for (let i = 0; i < planets.length; i++) {\n    tree.removeNode(planets[i]);\n  }\n\n  const elements: NodeId<NodeType>[] = [];\n  const zodiacSigns: NodeId<NodeType>[] = [];\n\n  for (const path of Object.values(MELKITZEDEKI_PATHS)) {\n    elements.push(\n      ...tree\n        .related(\n          id(KaabalahTypes.PATH, path),\n          WesternAstrologyTypes.WESTERN_ELEMENT\n        )\n        .map((element) => element.id)\n    );\n    zodiacSigns.push(\n      ...tree\n        .related(\n          id(KaabalahTypes.PATH, path),\n          WesternAstrologyTypes.WESTERN_ZODIAC_SIGN\n        )\n        .map((sign) => sign.id)\n    );\n  }\n\n  for (let i = 0; i < elements.length; i++) {\n    tree.removeNode(elements[i]);\n  }\n\n  for (let i = 0; i < zodiacSigns.length; i++) {\n    tree.removeNode(zodiacSigns[i]);\n  }\n};\n\nexport const loadTarot: Loader = (tree: TreeOfLife) => {\n  const majorArkAnnus: {\n    id: string;\n    data: TarotArkAnnuData;\n    relatedNumber: number;\n    path: NodeId<KaabalahTypes.PATH>;\n  }[] = [\n    {\n      id: TAROT_ARKANNUS.THE_MAGICIAN,\n      data: TAROT_ARKANNUS_DATA.THE_MAGICIAN,\n      relatedNumber: 1,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.KETHER_CHOKHMAH),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_HIGH_PRIESTESS,\n      data: TAROT_ARKANNUS_DATA.THE_HIGH_PRIESTESS,\n      relatedNumber: 2,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.KETHER_BINAH),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_EMPRESS,\n      data: TAROT_ARKANNUS_DATA.THE_EMPRESS,\n      relatedNumber: 3,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.KETHER_TIPHARETH),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_EMPEROR,\n      data: TAROT_ARKANNUS_DATA.THE_EMPEROR,\n      relatedNumber: 4,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHOKHMAH_BINAH),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_HIEROPHANT,\n      data: TAROT_ARKANNUS_DATA.THE_HIEROPHANT,\n      relatedNumber: 5,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHOKHMAH_TIPHARETH),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_LOVER,\n      data: TAROT_ARKANNUS_DATA.THE_LOVER,\n      relatedNumber: 6,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHOKHMAH_CHESED),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_CHARIOT,\n      data: TAROT_ARKANNUS_DATA.THE_CHARIOT,\n      relatedNumber: 7,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.BINAH_TIPHARETH),\n    },\n    {\n      id: TAROT_ARKANNUS.JUSTICE,\n      data: TAROT_ARKANNUS_DATA.JUSTICE,\n      relatedNumber: 8,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.BINAH_GEBURAH),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_HERMIT,\n      data: TAROT_ARKANNUS_DATA.THE_HERMIT,\n      relatedNumber: 9,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHESED_GEBURAH),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_WHEEL_OF_FORTUNE,\n      data: TAROT_ARKANNUS_DATA.THE_WHEEL_OF_FORTUNE,\n      relatedNumber: 10,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHESED_TIPHARETH),\n    },\n    {\n      id: TAROT_ARKANNUS.STRENGTH,\n      data: TAROT_ARKANNUS_DATA.STRENGTH,\n      relatedNumber: 11,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.CHESED_NETZACH),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_HANGED_MAN,\n      data: TAROT_ARKANNUS_DATA.THE_HANGED_MAN,\n      relatedNumber: 12,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.GEBURAH_TIPHARETH),\n    },\n    {\n      id: TAROT_ARKANNUS.DEATH,\n      data: TAROT_ARKANNUS_DATA.DEATH,\n      relatedNumber: 13,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.GEBURAH_HOD),\n    },\n    {\n      id: TAROT_ARKANNUS.TEMPERANCE,\n      data: TAROT_ARKANNUS_DATA.TEMPERANCE,\n      relatedNumber: 14,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.TIPHARETH_NETZACH),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_DEVIL,\n      data: TAROT_ARKANNUS_DATA.THE_DEVIL,\n      relatedNumber: 15,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.TIPHARETH_YESOD),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_TOWER,\n      data: TAROT_ARKANNUS_DATA.THE_TOWER,\n      relatedNumber: 16,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.TIPHARETH_HOD),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_STAR,\n      data: TAROT_ARKANNUS_DATA.THE_STAR,\n      relatedNumber: 17,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.NETZACH_HOD),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_MOON,\n      data: TAROT_ARKANNUS_DATA.THE_MOON,\n      relatedNumber: 18,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.NETZACH_YESOD),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_SUN,\n      data: TAROT_ARKANNUS_DATA.THE_SUN,\n      relatedNumber: 19,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.NETZACH_MALKUTH),\n    },\n    {\n      id: TAROT_ARKANNUS.JUDGMENT,\n      data: TAROT_ARKANNUS_DATA.JUDGMENT,\n      relatedNumber: 20,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.HOD_YESOD),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_FOOL,\n      data: TAROT_ARKANNUS_DATA.THE_FOOL,\n      relatedNumber: 21,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.HOD_MALKUTH),\n    },\n    {\n      id: TAROT_ARKANNUS.THE_WORLD,\n      data: TAROT_ARKANNUS_DATA.THE_WORLD,\n      relatedNumber: 22,\n      path: id(KaabalahTypes.PATH, MELKITZEDEKI_PATHS.YESOD_MALKUTH),\n    },\n  ];\n  const majorArkAnnusIds: Record<\n    string,\n    NodeId<TarotTypes.TAROT_ARK_ANNU>\n  > = {};\n  for (let i = 0; i < majorArkAnnus.length; i++) {\n    const arkAnnu = majorArkAnnus[i];\n    majorArkAnnusIds[arkAnnu.id] = tree.addTarotArkAnnu({\n      node: arkAnnu.path,\n      tarotArkAnnu: arkAnnu.id,\n      data: arkAnnu.data,\n      relatedNumber: arkAnnu.relatedNumber,\n    });\n  }\n\n  const westernElements: {\n    id: string;\n    arkAnnu: NodeId<TarotTypes.TAROT_ARK_ANNU>;\n  }[] = [\n    {\n      id: WESTERN_ELEMENTS.EARTH,\n      arkAnnu: majorArkAnnusIds[TAROT_ARKANNUS.THE_MAGICIAN],\n    },\n    {\n      id: WESTERN_ELEMENTS.AIR,\n      arkAnnu: majorArkAnnusIds[TAROT_ARKANNUS.THE_HIGH_PRIESTESS],\n    },\n    {\n      id: WESTERN_ELEMENTS.WATER,\n      arkAnnu: majorArkAnnusIds[TAROT_ARKANNUS.THE_EMPRESS],\n    },\n    {\n      id: WESTERN_ELEMENTS.FIRE,\n      arkAnnu: majorArkAnnusIds[TAROT_ARKANNUS.THE_EMPEROR],\n    },\n    {\n      id: WESTERN_ELEMENTS.ETHER,\n      arkAnnu: majorArkAnnusIds[TAROT_ARKANNUS.THE_HIEROPHANT],\n    },\n  ];\n  const westernElementsIds: Record<\n    string,\n    NodeId<WesternAstrologyTypes.WESTERN_ELEMENT>\n  > = {};\n  for (const element of westernElements) {\n    const elementId = tree.upsertNode(\n      new BaseNode({\n        id: element.id,\n        type: WesternAstrologyTypes.WESTERN_ELEMENT,\n      })\n    );\n\n    westernElementsIds[element.id] = elementId;\n  }\n\n  const suits: {\n    id: string;\n    element: NodeId<WesternAstrologyTypes.WESTERN_ELEMENT>;\n  }[] = [\n    {\n      id: TAROT_SUITS.WANDS,\n      element: westernElementsIds[WESTERN_ELEMENTS.FIRE],\n    },\n    {\n      id: TAROT_SUITS.CUPS,\n      element: westernElementsIds[WESTERN_ELEMENTS.WATER],\n    },\n    {\n      id: TAROT_SUITS.SWORDS,\n      element: westernElementsIds[WESTERN_ELEMENTS.AIR],\n    },\n    {\n      id: TAROT_SUITS.PENTACLES,\n      element: westernElementsIds[WESTERN_ELEMENTS.EARTH],\n    },\n  ];\n  const suitsIds: Record<string, NodeId<TarotTypes.TAROT_SUIT>> = {};\n  for (const suit of suits) {\n    const suitId = tree.upsertNode(\n      new BaseNode({\n        id: suit.id,\n        type: TarotTypes.TAROT_SUIT,\n      })\n    );\n\n    suitsIds[suit.id] = suitId;\n\n    tree.link(suitId, suit.element);\n  }\n\n  const courtArkAnnus: {\n    id: string;\n    data: TarotArkAnnuData;\n    relatedNumber: number;\n    suit: NodeId<TarotTypes.TAROT_SUIT>;\n  }[] = [\n    {\n      id: TAROT_ARKANNUS.KING_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.KING_OF_WANDS,\n      relatedNumber: 23,\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.QUEEN_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.QUEEN_OF_WANDS,\n      relatedNumber: 24,\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.KNIGHT_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.KNIGHT_OF_WANDS,\n      relatedNumber: 25,\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.PAGE_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.PAGE_OF_WANDS,\n      relatedNumber: 26,\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.KING_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.KING_OF_CUPS,\n      relatedNumber: 37,\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.QUEEN_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.QUEEN_OF_CUPS,\n      relatedNumber: 38,\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.KNIGHT_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.KNIGHT_OF_CUPS,\n      relatedNumber: 39,\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.PAGE_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.PAGE_OF_CUPS,\n      relatedNumber: 40,\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.KING_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.KING_OF_SWORDS,\n      relatedNumber: 51,\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.QUEEN_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.QUEEN_OF_SWORDS,\n      relatedNumber: 52,\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.KNIGHT_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.KNIGHT_OF_SWORDS,\n      relatedNumber: 53,\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.PAGE_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.PAGE_OF_SWORDS,\n      relatedNumber: 54,\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.KING_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.KING_OF_PENTACLES,\n      relatedNumber: 65,\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n    {\n      id: TAROT_ARKANNUS.QUEEN_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.QUEEN_OF_PENTACLES,\n      relatedNumber: 66,\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n    {\n      id: TAROT_ARKANNUS.KNIGHT_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.KNIGHT_OF_PENTACLES,\n      relatedNumber: 67,\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n    {\n      id: TAROT_ARKANNUS.PAGE_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.PAGE_OF_PENTACLES,\n      relatedNumber: 68,\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n  ];\n  for (const courtArkAnnu of courtArkAnnus) {\n    tree.addTarotArkAnnu({\n      node: id(KaabalahTypes.SPHERE, SPHERES.DAATH),\n      tarotArkAnnu: courtArkAnnu.id,\n      data: courtArkAnnu.data,\n      relatedNumber: courtArkAnnu.relatedNumber,\n      suit: courtArkAnnu.suit,\n    });\n  }\n\n  const minorArkAnnus: {\n    id: string;\n    data: TarotArkAnnuData;\n    relatedNumber: number;\n    sphere: NodeId<KaabalahTypes.SPHERE>;\n    suit: NodeId<TarotTypes.TAROT_SUIT>;\n  }[] = [\n    {\n      id: TAROT_ARKANNUS.TEN_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.TEN_OF_WANDS,\n      relatedNumber: 27,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.MALKUTH),\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.NINE_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.NINE_OF_WANDS,\n      relatedNumber: 28,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.YESOD),\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.EIGHT_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.EIGHT_OF_WANDS,\n      relatedNumber: 29,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.HOD),\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.SEVEN_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.SEVEN_OF_WANDS,\n      relatedNumber: 30,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.NETZACH),\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.SIX_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.SIX_OF_WANDS,\n      relatedNumber: 31,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.TIPHARETH),\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.FIVE_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.FIVE_OF_WANDS,\n      relatedNumber: 32,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.GEBURAH),\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.FOUR_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.FOUR_OF_WANDS,\n      relatedNumber: 33,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.CHESED),\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.THREE_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.THREE_OF_WANDS,\n      relatedNumber: 34,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.BINAH),\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.TWO_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.TWO_OF_WANDS,\n      relatedNumber: 35,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.CHOKHMAH),\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.ACE_OF_WANDS,\n      data: TAROT_ARKANNUS_DATA.ACE_OF_WANDS,\n      relatedNumber: 36,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.KETHER),\n      suit: suitsIds[TAROT_SUITS.WANDS],\n    },\n    {\n      id: TAROT_ARKANNUS.TEN_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.TEN_OF_CUPS,\n      relatedNumber: 41,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.MALKUTH),\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.NINE_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.NINE_OF_CUPS,\n      relatedNumber: 42,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.YESOD),\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.EIGHT_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.EIGHT_OF_CUPS,\n      relatedNumber: 43,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.HOD),\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.SEVEN_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.SEVEN_OF_CUPS,\n      relatedNumber: 44,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.NETZACH),\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.SIX_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.SIX_OF_CUPS,\n      relatedNumber: 45,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.TIPHARETH),\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.FIVE_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.FIVE_OF_CUPS,\n      relatedNumber: 46,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.GEBURAH),\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.FOUR_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.FOUR_OF_CUPS,\n      relatedNumber: 47,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.CHESED),\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.THREE_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.THREE_OF_CUPS,\n      relatedNumber: 48,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.BINAH),\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.TWO_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.TWO_OF_CUPS,\n      relatedNumber: 49,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.CHOKHMAH),\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.ACE_OF_CUPS,\n      data: TAROT_ARKANNUS_DATA.ACE_OF_CUPS,\n      relatedNumber: 50,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.KETHER),\n      suit: suitsIds[TAROT_SUITS.CUPS],\n    },\n    {\n      id: TAROT_ARKANNUS.TEN_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.TEN_OF_SWORDS,\n      relatedNumber: 55,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.MALKUTH),\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.NINE_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.NINE_OF_SWORDS,\n      relatedNumber: 56,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.YESOD),\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.EIGHT_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.EIGHT_OF_SWORDS,\n      relatedNumber: 57,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.HOD),\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.SEVEN_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.SEVEN_OF_SWORDS,\n      relatedNumber: 58,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.NETZACH),\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.SIX_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.SIX_OF_SWORDS,\n      relatedNumber: 59,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.TIPHARETH),\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.FIVE_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.FIVE_OF_SWORDS,\n      relatedNumber: 60,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.GEBURAH),\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.FOUR_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.FOUR_OF_SWORDS,\n      relatedNumber: 61,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.CHESED),\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.THREE_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.THREE_OF_SWORDS,\n      relatedNumber: 62,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.BINAH),\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.TWO_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.TWO_OF_SWORDS,\n      relatedNumber: 63,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.CHOKHMAH),\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.ACE_OF_SWORDS,\n      data: TAROT_ARKANNUS_DATA.ACE_OF_SWORDS,\n      relatedNumber: 64,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.KETHER),\n      suit: suitsIds[TAROT_SUITS.SWORDS],\n    },\n    {\n      id: TAROT_ARKANNUS.TEN_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.TEN_OF_PENTACLES,\n      relatedNumber: 69,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.MALKUTH),\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n    {\n      id: TAROT_ARKANNUS.NINE_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.NINE_OF_PENTACLES,\n      relatedNumber: 70,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.YESOD),\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n    {\n      id: TAROT_ARKANNUS.EIGHT_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.EIGHT_OF_PENTACLES,\n      relatedNumber: 71,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.HOD),\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n    {\n      id: TAROT_ARKANNUS.SEVEN_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.SEVEN_OF_PENTACLES,\n      relatedNumber: 72,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.NETZACH),\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n    {\n      id: TAROT_ARKANNUS.SIX_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.SIX_OF_PENTACLES,\n      relatedNumber: 73,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.TIPHARETH),\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n    {\n      id: TAROT_ARKANNUS.FIVE_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.FIVE_OF_PENTACLES,\n      relatedNumber: 74,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.GEBURAH),\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n    {\n      id: TAROT_ARKANNUS.FOUR_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.FOUR_OF_PENTACLES,\n      relatedNumber: 75,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.CHESED),\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n    {\n      id: TAROT_ARKANNUS.THREE_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.THREE_OF_PENTACLES,\n      relatedNumber: 76,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.BINAH),\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n    {\n      id: TAROT_ARKANNUS.TWO_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.TWO_OF_PENTACLES,\n      relatedNumber: 77,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.CHOKHMAH),\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n    {\n      id: TAROT_ARKANNUS.ACE_OF_PENTACLES,\n      data: TAROT_ARKANNUS_DATA.ACE_OF_PENTACLES,\n      relatedNumber: 78,\n      sphere: id(KaabalahTypes.SPHERE, SPHERES.KETHER),\n      suit: suitsIds[TAROT_SUITS.PENTACLES],\n    },\n  ];\n  for (const minorArkAnnu of minorArkAnnus) {\n    tree.addTarotArkAnnu({\n      node: minorArkAnnu.sphere,\n      tarotArkAnnu: minorArkAnnu.id,\n      data: minorArkAnnu.data,\n      relatedNumber: minorArkAnnu.relatedNumber,\n      suit: minorArkAnnu.suit,\n    });\n  }\n\n  return tree;\n};\n\nexport const unloadTarot: Unloader = (tree: TreeOfLife) => {\n  const suits = Object.values(WESTERN_ELEMENTS).flatMap((element) =>\n    tree\n      .related(\n        id(WesternAstrologyTypes.WESTERN_ELEMENT, element),\n        TarotTypes.TAROT_SUIT\n      )\n      .map((suit) => suit.id)\n  );\n  for (let i = 0; i < suits.length; i++) {\n    tree.removeNode(suits[i]);\n  }\n\n  const majorArkAnnus = Object.values(MELKITZEDEKI_PATHS).flatMap((path) =>\n    tree\n      .related(id(KaabalahTypes.PATH, path), TarotTypes.TAROT_ARK_ANNU)\n      .map((arkannus) => arkannus.id)\n  );\n  for (let i = 0; i < majorArkAnnus.length; i++) {\n    tree.removeNode(majorArkAnnus[i]);\n  }\n\n  const minorArkAnnus = Object.values(SPHERES).flatMap((sphere) =>\n    tree\n      .related(id(KaabalahTypes.SPHERE, sphere), TarotTypes.TAROT_ARK_ANNU)\n      .map((arkannus) => arkannus.id)\n  );\n  for (let i = 0; i < minorArkAnnus.length; i++) {\n    tree.removeNode(minorArkAnnus[i]);\n  }\n\n  return tree;\n};\n\nexport const LOADERS = {\n  base: loadKaabalah,\n  colors: loadColors,\n  music: loadMusicalNotes,\n  westernAstrology: loadWesternAstrology,\n  tarot: loadTarot,\n} satisfies Record<string, Loader>;\n\nexport const UNLOADERS = {\n  base: unloadKaabalah,\n  colors: unloadColors,\n  music: unloadMusicalNotes,\n  westernAstrology: unloadWesternAstrology,\n  tarot: unloadTarot,\n} satisfies Record<keyof typeof LOADERS, Unloader>;\n\nexport const BRIDGES: Bridge[] = [\n  {\n    id: \"kaabalah-color-music\",\n    needs: [\"colors\", \"music\"],\n    run: (t) => linkColorsAndSounds(t),\n  },\n  {\n    id: \"kaabalah-color-westernAstrology\",\n    needs: [\"colors\", \"westernAstrology\"],\n    run: (t) => linkColorsAndWesternAstrology(t),\n  },\n  {\n    id: \"kaabalah-music-westernAstrology\",\n    needs: [\"music\", \"westernAstrology\"],\n    run: (t) => linkSoundsAndWesternAstrology(t),\n  },\n  {\n    id: \"kaabalah-tarot-westernAstrology\",\n    needs: [\"tarot\", \"westernAstrology\"],\n    run: (t) => linkTarotAndWesternAstrology(t),\n  },\n];\n","import {\n  COLORS,\n  COLORS_DATA,\n  FOUR_WORLDS,\n  FOUR_WORLDS_DATA,\n  HEBREW_LETTERS,\n  HEBREW_LETTERS_DATA,\n  LATIN_LETTERS,\n  LATIN_LETTERS_DATA,\n  MELKITZEDEKI_PATHS,\n  MUSICAL_NOTES,\n  MUSICAL_NOTES_DATA,\n  PLANETS,\n  SPHERES,\n  SPHERES_DATA,\n  WESTERN_ELEMENTS,\n} from \"../constants\";\nimport { TreeOfLife } from \"../tree-of-life\";\nimport {\n  BaseNode,\n  id,\n  KaabalahTypes,\n  LetterTypes,\n  MiscTypes,\n  NodeData,\n  NodeId,\n  WesternAstrologyTypes,\n} from \"../types\";\nimport { Bridge, Loader, Unloader } from \"./registry\";\n\nexport const SYSTEM = \"hermetic-qabalah\" as const;\n\n/**\n * Loads the Hermetic Qabalah system into the tree of life\n */\nexport function loadHermeticQabalah(tree: TreeOfLife) {\n  const spheres = [\n    {\n      sphere: SPHERES.KETHER,\n      data: {\n        ...SPHERES_DATA.KETHER,\n        divineName: \"Eheieh\",\n        archangelicName: \"Metraton\",\n        angelicName: \"Chayouth Ha-Qadesh\",\n        mundaneName: \"Rashith Ha-Gilgalim\",\n      },\n      relatedNumber: 1,\n    },\n    {\n      sphere: SPHERES.CHOKHMAH,\n      data: {\n        ...SPHERES_DATA.CHOKHMAH,\n        divineName: \"Yahve El Yah\",\n        archangelicName: \"Raziel\",\n        angelicName: \"Auphanim\",\n        mundaneName: \"Mazloth\",\n      },\n      relatedNumber: 2,\n    },\n    {\n      sphere: SPHERES.BINAH,\n      data: {\n        ...SPHERES_DATA.BINAH,\n        divineName: \"Yahve Elohim\",\n        archangelicName: \"Tzaphqiel\",\n        angelicName: \"Aralim\",\n        mundaneName: \"Shabbathai\",\n      },\n      relatedNumber: 3,\n    },\n    { sphere: SPHERES.DAATH, data: SPHERES_DATA.DAATH, relatedNumber: 11 },\n    {\n      sphere: SPHERES.CHESED,\n      data: {\n        ...SPHERES_DATA.CHESED,\n        divineName: \"El\",\n        archangelicName: \"Tzadqiel\",\n        angelicName: \"Chasmalim\",\n        mundaneName: \"Tzedeq\",\n      },\n      relatedNumber: 4,\n    },\n    {\n      sphere: SPHERES.GEBURAH,\n      data: {\n        ...SPHERES_DATA.GEBURAH,\n        divineName: \"Elohim Gibor\",\n        archangelicName: \"Kamael\",\n        angelicName: \"Seraphim\",\n        mundaneName: \"Madim\",\n      },\n      relatedNumber: 5,\n    },\n    {\n      sphere: SPHERES.TIPHARETH,\n      data: {\n        ...SPHERES_DATA.TIPHARETH,\n        divineName: \"Yahve Eloah Ve-Daath\",\n        archangelicName: \"Raphael\",\n        angelicName: \"Melekim\",\n        mundaneName: \"Shemesh\",\n      },\n      relatedNumber: 6,\n    },\n    {\n      sphere: SPHERES.NETZACH,\n      data: {\n        ...SPHERES_DATA.NETZACH,\n        divineName: \"Yahve Tzabaoth\",\n        archangelicName: \"Haniel\",\n        angelicName: \"Elohim\",\n        mundaneName: \"Nogah\",\n      },\n      relatedNumber: 7,\n    },\n    {\n      sphere: SPHERES.HOD,\n      data: {\n        ...SPHERES_DATA.HOD,\n        divineName: \"Elohim Tzabaoth\",\n        archangelicName: \"Mikael\",\n        angelicName: \"Beni Elohim\",\n        mundaneName: \"Kokab\",\n      },\n      relatedNumber: 8,\n    },\n    {\n      sphere: SPHERES.YESOD,\n      data: {\n        ...SPHERES_DATA.YESOD,\n        divineName: \"Shadai El Chai\",\n        archangelicName: \"Gabriel\",\n        angelicName: \"Kerubim\",\n        mundaneName: \"Levanah\",\n      },\n      relatedNumber: 9,\n    },\n    {\n      sphere: SPHERES.MALKUTH,\n      data: {\n        ...SPHERES_DATA.MALKUTH,\n        divineName: \"Adonai Malek\",\n        archangelicName: \"Sandalphon\",\n        angelicName: \"Ashim\",\n        mundaneName: \"Olam Yesodot\",\n      },\n      relatedNumber: 10,\n    },\n  ];\n\n  const sphereIds: Record<string, NodeId<KaabalahTypes.SPHERE>> = {};\n  for (const sphere of spheres) {\n    sphereIds[sphere.sphere] = tree.addSphere(sphere);\n  }\n\n  const worldsWithElements: {\n    id: string;\n    data: NodeData<KaabalahTypes.WORLD>;\n    element: string;\n  }[] = [\n    {\n      id: FOUR_WORLDS.ATZILUTH,\n      data: FOUR_WORLDS_DATA.ATZILUTH,\n      element: WESTERN_ELEMENTS.FIRE,\n    },\n    {\n      id: FOUR_WORLDS.BRIAH,\n      data: FOUR_WORLDS_DATA.BRIAH,\n      element: WESTERN_ELEMENTS.WATER,\n    },\n    {\n      id: FOUR_WORLDS.YETZIRAH,\n      data: FOUR_WORLDS_DATA.YETZIRAH,\n      element: WESTERN_ELEMENTS.AIR,\n    },\n    {\n      id: FOUR_WORLDS.ASSIAH,\n      data: FOUR_WORLDS_DATA.ASSIAH,\n      element: WESTERN_ELEMENTS.EARTH,\n    },\n  ];\n  for (const world of worldsWithElements) {\n    const worldId = tree.upsertNode(\n      new BaseNode({\n        id: world.id,\n        type: KaabalahTypes.WORLD,\n        data: world.data,\n      })\n    );\n\n    const elementId = tree.upsertNode(\n      new BaseNode({\n        id: world.element,\n        type: WesternAstrologyTypes.WESTERN_ELEMENT,\n      })\n    );\n\n    tree.link(worldId, elementId);\n  }\n\n  const paths = [\n    {\n      leftSphere: sphereIds[SPHERES.KETHER],\n      rightSphere: sphereIds[SPHERES.CHOKHMAH],\n      relatedNumber: MELKITZEDEKI_PATHS.KETHER_CHOKHMAH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.A,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.A,\n        },\n        {\n          letter: HEBREW_LETTERS.ALEPH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.ALEPH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.KETHER],\n      rightSphere: sphereIds[SPHERES.BINAH],\n      relatedNumber: MELKITZEDEKI_PATHS.KETHER_BINAH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.B,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.B,\n        },\n        {\n          letter: HEBREW_LETTERS.BETH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.BETH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.KETHER],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: MELKITZEDEKI_PATHS.KETHER_TIPHARETH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.G,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.G,\n        },\n        {\n          letter: HEBREW_LETTERS.GIMEL,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.GIMEL,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHOKHMAH],\n      rightSphere: sphereIds[SPHERES.BINAH],\n      relatedNumber: MELKITZEDEKI_PATHS.CHOKHMAH_BINAH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.D,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.D,\n        },\n        {\n          letter: HEBREW_LETTERS.DALET,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.DALET,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHOKHMAH],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: MELKITZEDEKI_PATHS.CHOKHMAH_TIPHARETH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.E,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.E,\n        },\n        {\n          letter: LATIN_LETTERS.Ã,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Ã,\n        },\n        {\n          letter: HEBREW_LETTERS.HE,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.HE,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHOKHMAH],\n      rightSphere: sphereIds[SPHERES.CHESED],\n      relatedNumber: MELKITZEDEKI_PATHS.CHOKHMAH_CHESED,\n      letters: [\n        {\n          letter: LATIN_LETTERS.V,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.V,\n        },\n        {\n          letter: LATIN_LETTERS.U,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.U,\n        },\n        {\n          letter: LATIN_LETTERS.W,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.W,\n        },\n        {\n          letter: LATIN_LETTERS.O,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.O,\n        },\n        {\n          letter: HEBREW_LETTERS.VAV,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.VAV,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.BINAH],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: MELKITZEDEKI_PATHS.BINAH_TIPHARETH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.Z,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Z,\n        },\n        {\n          letter: HEBREW_LETTERS.ZAYIN,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.ZAYIN,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.BINAH],\n      rightSphere: sphereIds[SPHERES.GEBURAH],\n      relatedNumber: MELKITZEDEKI_PATHS.BINAH_GEBURAH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.H,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.H,\n        },\n        {\n          letter: HEBREW_LETTERS.HET,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.HET,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHESED],\n      rightSphere: sphereIds[SPHERES.GEBURAH],\n      relatedNumber: MELKITZEDEKI_PATHS.CHESED_GEBURAH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.T,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.T,\n        },\n        {\n          letter: HEBREW_LETTERS.TET,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.TET,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHESED],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: MELKITZEDEKI_PATHS.CHESED_TIPHARETH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.I,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.I,\n        },\n        {\n          letter: LATIN_LETTERS.Y,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Y,\n        },\n        {\n          letter: LATIN_LETTERS.J,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.J,\n        },\n        {\n          letter: HEBREW_LETTERS.YOD,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.YOD,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHESED],\n      rightSphere: sphereIds[SPHERES.NETZACH],\n      relatedNumber: MELKITZEDEKI_PATHS.CHESED_NETZACH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.C,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.C,\n        },\n        {\n          letter: HEBREW_LETTERS.KAPH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.KAPH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.GEBURAH],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: MELKITZEDEKI_PATHS.GEBURAH_TIPHARETH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.L,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.L,\n        },\n        {\n          letter: HEBREW_LETTERS.LAMED,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.LAMED,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.GEBURAH],\n      rightSphere: sphereIds[SPHERES.HOD],\n      relatedNumber: MELKITZEDEKI_PATHS.GEBURAH_HOD,\n      letters: [\n        {\n          letter: LATIN_LETTERS.M,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.M,\n        },\n        {\n          letter: HEBREW_LETTERS.MEM,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.MEM,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.TIPHARETH],\n      rightSphere: sphereIds[SPHERES.NETZACH],\n      relatedNumber: MELKITZEDEKI_PATHS.TIPHARETH_NETZACH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.N,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.N,\n        },\n        {\n          letter: HEBREW_LETTERS.NUN,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.NUN,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.TIPHARETH],\n      rightSphere: sphereIds[SPHERES.YESOD],\n      relatedNumber: MELKITZEDEKI_PATHS.TIPHARETH_YESOD,\n      letters: [\n        {\n          letter: LATIN_LETTERS.S,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.S,\n        },\n        {\n          letter: LATIN_LETTERS.Ç,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Ç,\n        },\n        {\n          letter: HEBREW_LETTERS.SAMEKH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.SAMEKH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.TIPHARETH],\n      rightSphere: sphereIds[SPHERES.HOD],\n      relatedNumber: MELKITZEDEKI_PATHS.TIPHARETH_HOD,\n      letters: [\n        {\n          letter: LATIN_LETTERS.O,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.O,\n        },\n        {\n          letter: HEBREW_LETTERS.AYIN,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.AYIN,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.NETZACH],\n      rightSphere: sphereIds[SPHERES.HOD],\n      relatedNumber: MELKITZEDEKI_PATHS.NETZACH_HOD,\n      letters: [\n        {\n          letter: LATIN_LETTERS.P,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.P,\n        },\n        {\n          letter: LATIN_LETTERS.F,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.F,\n        },\n        {\n          letter: LATIN_LETTERS.PH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.PH,\n        },\n        {\n          letter: HEBREW_LETTERS.PE,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.PE,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.NETZACH],\n      rightSphere: sphereIds[SPHERES.YESOD],\n      relatedNumber: MELKITZEDEKI_PATHS.NETZACH_YESOD,\n      letters: [\n        {\n          letter: LATIN_LETTERS.TS,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.TS,\n        },\n        {\n          letter: LATIN_LETTERS.TZ,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.TZ,\n        },\n        {\n          letter: HEBREW_LETTERS.TSADI,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.TSADI,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.NETZACH],\n      rightSphere: sphereIds[SPHERES.MALKUTH],\n      relatedNumber: MELKITZEDEKI_PATHS.NETZACH_MALKUTH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.K,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.K,\n        },\n        {\n          letter: LATIN_LETTERS.Q,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Q,\n        },\n        {\n          letter: LATIN_LETTERS.KH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.KH,\n        },\n        {\n          letter: HEBREW_LETTERS.QOPH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.QOPH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.HOD],\n      rightSphere: sphereIds[SPHERES.YESOD],\n      relatedNumber: MELKITZEDEKI_PATHS.HOD_YESOD,\n      letters: [\n        {\n          letter: LATIN_LETTERS.R,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.R,\n        },\n        {\n          letter: HEBREW_LETTERS.RESH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.RESH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.HOD],\n      rightSphere: sphereIds[SPHERES.MALKUTH],\n      relatedNumber: MELKITZEDEKI_PATHS.HOD_MALKUTH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.CH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.CH,\n        },\n        {\n          letter: LATIN_LETTERS.SH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.SH,\n        },\n        {\n          letter: LATIN_LETTERS.X,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.X,\n        },\n        {\n          letter: HEBREW_LETTERS.SHIN,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.SHIN,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.YESOD],\n      rightSphere: sphereIds[SPHERES.MALKUTH],\n      relatedNumber: MELKITZEDEKI_PATHS.YESOD_MALKUTH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.TH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.TH,\n        },\n        {\n          letter: HEBREW_LETTERS.TAV,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.TAV,\n        },\n      ],\n    },\n  ];\n\n  for (const path of paths) {\n    const pathId = tree.addPath({\n      leftSphere: path.leftSphere,\n      rightSphere: path.rightSphere,\n      relatedNumber: path.relatedNumber,\n    });\n\n    tree.addLetters({\n      path: pathId,\n      letters: path.letters,\n    });\n  }\n\n  return tree;\n}\n\nexport function unloadHermeticQabalah(tree: TreeOfLife) {\n  const spheres = Object.values(SPHERES);\n  for (let i = 0; i < spheres.length; i++) {\n    tree.removeNode(id(KaabalahTypes.SPHERE, spheres[i]));\n  }\n\n  const paths = Object.values(MELKITZEDEKI_PATHS);\n  for (let i = 0; i < paths.length; i++) {\n    tree.removeNode(id(KaabalahTypes.PATH, paths[i]));\n  }\n}\n\nexport function loadColors(tree: TreeOfLife) {\n  const sphereColors: {\n    sphere: string;\n    worldColors: {\n      world: string;\n      color: { id: string; data: NodeData<MiscTypes.COLOR> };\n    }[];\n  }[] = [\n    {\n      sphere: SPHERES.KETHER,\n      worldColors: [\n        {\n          world: FOUR_WORLDS.ATZILUTH,\n          color: {\n            id: \"splendor\",\n            data: {\n              colorDescription: \"Splendor\",\n              colorNames: [\"transparent\"],\n              colorHexCodes: [\"#ffffff\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.BRIAH,\n          color: {\n            id: \"white-splendor\",\n            data: {\n              colorDescription: \"White splendor, pure\",\n              colorNames: [\"white\"],\n              colorHexCodes: [\"#ffffff\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.YETZIRAH,\n          color: {\n            id: \"white-splendor\",\n            data: {\n              colorDescription: \"White splendor, pure\",\n              colorNames: [\"white\"],\n              colorHexCodes: [\"#ffffff\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.ASSIAH,\n          color: {\n            id: \"white-speckled-gold\",\n            data: {\n              colorDescription: \"White speckled with gold\",\n              colorNames: [\"white\", \"gold\"],\n              colorHexCodes: [\"#ffffff\", \"#FFD700\"],\n            },\n          },\n        },\n      ],\n    },\n    {\n      sphere: SPHERES.CHOKHMAH,\n      worldColors: [\n        {\n          world: FOUR_WORLDS.ATZILUTH,\n          color: {\n            id: \"blue\",\n            data: {\n              colorDescription: \"Smooth blue, pure\",\n              colorNames: COLORS_DATA.BLUE.colorNames,\n              colorHexCodes: COLORS_DATA.BLUE.colorHexCodes,\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.BRIAH,\n          color: {\n            id: \"grey\",\n            data: {\n              colorDescription: \"Grey\",\n              colorNames: [\"grey\"],\n              colorHexCodes: [\"#808080\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.YETZIRAH,\n          color: {\n            id: \"grey-iridescent\",\n            data: {\n              colorDescription: \"Pearl grey iridescent\",\n              colorNames: [\"grey\", \"iridescent\"],\n              colorHexCodes: [\"#808080\", \"#EDBBE7\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.ASSIAH,\n          color: {\n            id: \"white-speckled-red-blue-yellow\",\n            data: {\n              colorDescription: \"White speckled with red, blue and yellow\",\n              colorNames: [\n                \"white\",\n                ...COLORS_DATA.RED.colorNames,\n                ...COLORS_DATA.BLUE.colorNames,\n                ...COLORS_DATA.YELLOW.colorNames,\n              ],\n              colorHexCodes: [\n                \"#FFFFFF\",\n                ...COLORS_DATA.RED.colorHexCodes,\n                ...COLORS_DATA.BLUE.colorHexCodes,\n                ...COLORS_DATA.YELLOW.colorHexCodes,\n              ],\n            },\n          },\n        },\n      ],\n    },\n    {\n      sphere: SPHERES.BINAH,\n      worldColors: [\n        {\n          world: FOUR_WORLDS.ATZILUTH,\n          color: {\n            id: \"crimson\",\n            data: {\n              colorDescription: \"Crimson\",\n              colorNames: [\"crimson\"],\n              colorHexCodes: [\"#DC143C\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.BRIAH,\n          color: {\n            id: \"black\",\n            data: {\n              colorDescription: \"Black\",\n              colorNames: [\"black\"],\n              colorHexCodes: [\"#000000\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.YETZIRAH,\n          color: {\n            id: \"dark-brown\",\n            data: {\n              colorDescription: \"Dark brown\",\n              colorNames: [\"dark-brown\"],\n              colorHexCodes: [\"#422E29\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.ASSIAH,\n          color: {\n            id: \"grey-speckled-pink\",\n            data: {\n              colorDescription: \"Grey speckled with pink\",\n              colorNames: [\"grey\", \"pink\"],\n              colorHexCodes: [\"#808080\", \"#FFC0CB\"],\n            },\n          },\n        },\n      ],\n    },\n    {\n      sphere: SPHERES.DAATH,\n      worldColors: [\n        {\n          world: FOUR_WORLDS.ATZILUTH,\n          color: {\n            id: \"lavender\",\n            data: {\n              colorDescription: \"Lavender\",\n              colorNames: [\"lavender\"],\n              colorHexCodes: [\"#E6E6FA\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.BRIAH,\n          color: {\n            id: \"dark-grey\",\n            data: {\n              colorDescription: \"Dark grey\",\n              colorNames: [\"dark-grey\"],\n              colorHexCodes: [\"#808080\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.YETZIRAH,\n          color: {\n            id: \"pure-violet\",\n            data: {\n              colorDescription: \"Pure violet\",\n              colorNames: [\"violet\"],\n              colorHexCodes: [\"#8F00FF\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.ASSIAH,\n          color: {\n            id: \"grey-speckled-gold\",\n            data: {\n              colorDescription: \"Grey speckled with gold\",\n              colorNames: [\"grey\", \"gold\"],\n              colorHexCodes: [\"#808080\", \"#FFD700\"],\n            },\n          },\n        },\n      ],\n    },\n    {\n      sphere: SPHERES.CHESED,\n      worldColors: [\n        {\n          world: FOUR_WORLDS.ATZILUTH,\n          color: {\n            id: \"intense-violet\",\n            data: {\n              colorDescription: \"Intense violet\",\n              colorNames: [\"intense-violet\"],\n              colorHexCodes: [\"#9400D3\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.BRIAH,\n          color: {\n            id: \"blue\",\n            data: {\n              colorDescription: \"Blue\",\n              colorNames: [\"blue\"],\n              colorHexCodes: [\"#0000FF\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.YETZIRAH,\n          color: {\n            id: \"intense-purple\",\n            data: {\n              colorDescription: \"Intense purple\",\n              colorNames: [\"intense-purple\"],\n              colorHexCodes: [\"#800080\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.ASSIAH,\n          color: {\n            id: \"intense-blue-speckled-yellow\",\n            data: {\n              colorDescription: \"Intense blue speckled with yellow\",\n              colorNames: [\"intense-blue\", ...COLORS_DATA.YELLOW.colorNames],\n              colorHexCodes: [\"#0000FF\", ...COLORS_DATA.YELLOW.colorHexCodes],\n            },\n          },\n        },\n      ],\n    },\n    {\n      sphere: SPHERES.GEBURAH,\n      worldColors: [\n        {\n          world: FOUR_WORLDS.ATZILUTH,\n          color: { id: COLORS.ORANGE, data: COLORS_DATA.ORANGE },\n        },\n        {\n          world: FOUR_WORLDS.BRIAH,\n          color: {\n            id: \"scarlet-red\",\n            data: {\n              colorDescription: \"Scarlet red\",\n              colorNames: [\"scarlet-red\"],\n              colorHexCodes: [\"#FF2400\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.YETZIRAH,\n          color: {\n            id: \"bright-scarlet\",\n            data: {\n              colorDescription: \"Bright scarlet\",\n              colorNames: [\"bright-scarlet\"],\n              colorHexCodes: [\"#FF2400\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.ASSIAH,\n          color: {\n            id: \"red-speckled-black\",\n            data: {\n              colorDescription: \"Red speckled with black\",\n              colorNames: [...COLORS_DATA.RED.colorNames, \"black\"],\n              colorHexCodes: [...COLORS_DATA.RED.colorHexCodes, \"#000000\"],\n            },\n          },\n        },\n      ],\n    },\n    {\n      sphere: SPHERES.TIPHARETH,\n      worldColors: [\n        {\n          world: FOUR_WORLDS.ATZILUTH,\n          color: {\n            id: \"gold-yellow\",\n            data: {\n              colorDescription: \"Gold yellow\",\n              colorNames: [\"gold-yellow\"],\n              colorHexCodes: [\"#FFD700\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.BRIAH,\n          color: {\n            id: \"rose-pink\",\n            data: {\n              colorDescription: \"Rose pink\",\n              colorNames: [\"rose-pink\"],\n              colorHexCodes: [\"#FFC0CB\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.YETZIRAH,\n          color: {\n            id: \"salmon-pink-reddish-carmine-amber-brown-mixed\",\n            data: {\n              colorDescription:\n                \"Salmon pink, reddish carmine, amber, brown, mixed\",\n              colorNames: [\n                \"salmon-pink\",\n                \"reddish-carmine\",\n                \"amber\",\n                \"brown\",\n                \"mixed\",\n              ],\n              colorHexCodes: [\"#FF9999\", \"#960018\", \"#996515\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.ASSIAH,\n          color: {\n            id: \"gold-speckled-green\",\n            data: {\n              colorDescription: \"Gold speckled with green\",\n              colorNames: [\"gold\", \"green\"],\n              colorHexCodes: [\"#FFD700\", \"#BDB76B\"],\n            },\n          },\n        },\n      ],\n    },\n    {\n      sphere: SPHERES.NETZACH,\n      worldColors: [\n        {\n          world: FOUR_WORLDS.ATZILUTH,\n          color: {\n            id: \"amber\",\n            data: {\n              colorDescription: \"Amber\",\n              colorNames: [\"amber\"],\n              colorHexCodes: [\"#FFBF00\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.BRIAH,\n          color: {\n            id: \"emerald-green\",\n            data: {\n              colorDescription: \"Emerald green\",\n              colorNames: [\"emerald-green\"],\n              colorHexCodes: [\"#50C878\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.YETZIRAH,\n          color: {\n            id: \"bright-yellowish-green\",\n            data: {\n              colorDescription: \"Bright yellowish green\",\n              colorNames: [\"bright-yellowish-green\"],\n              colorHexCodes: [\"#98FB98\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.ASSIAH,\n          color: {\n            id: \"olive-green-speckled-gold\",\n            data: {\n              colorDescription: \"Olive green speckled with gold\",\n              colorNames: [\"olive-green\", \"gold\"],\n              colorHexCodes: [\"#BAB86C\", \"#FFD700\"],\n            },\n          },\n        },\n      ],\n    },\n    {\n      sphere: SPHERES.HOD,\n      worldColors: [\n        {\n          world: FOUR_WORLDS.ATZILUTH,\n          color: {\n            id: \"violet-purple\",\n            data: {\n              colorDescription: \"Violet-purple\",\n              colorNames: [\"violet-purple\"],\n              colorHexCodes: [\"#9B30FF\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.BRIAH,\n          color: {\n            id: \"orange\",\n            data: {\n              colorDescription: \"Orange\",\n              colorNames: [\"orange\"],\n              colorHexCodes: [\"#FFA500\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.YETZIRAH,\n          color: {\n            id: \"red-purple\",\n            data: {\n              colorDescription: \"Red-purple\",\n              colorNames: [\"red-purple\"],\n              colorHexCodes: [\"#C71585\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.ASSIAH,\n          color: {\n            id: \"yellowish-black-speckled-with-white\",\n            data: {\n              colorDescription: \"Yellowish black speckled with white\",\n              colorNames: [\"yellowish-black-speckled-with-white\"],\n              colorHexCodes: [\"#2B2B1B\", \"#FFFFFF\"],\n            },\n          },\n        },\n      ],\n    },\n    {\n      sphere: SPHERES.YESOD,\n      worldColors: [\n        {\n          world: FOUR_WORLDS.ATZILUTH,\n          color: {\n            id: \"indigo\",\n            data: {\n              colorDescription: \"Indigo\",\n              colorNames: [\"indigo\"],\n              colorHexCodes: [\"#4B0082\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.BRIAH,\n          color: { id: COLORS.VIOLET, data: COLORS_DATA.VIOLET },\n        },\n        {\n          world: FOUR_WORLDS.YETZIRAH,\n          color: {\n            id: \"purple\",\n            data: {\n              colorDescription: \"Purple\",\n              colorNames: [\"purple\"],\n              colorHexCodes: [\"#800080\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.ASSIAH,\n          color: {\n            id: \"citrine-speckled-blue\",\n            data: {\n              colorDescription: \"Citrine speckled with blue\",\n              colorNames: [\"citrine-speckled-blue\"],\n              colorHexCodes: [\"#E4D00A\", \"#1E90FF\"],\n            },\n          },\n        },\n      ],\n    },\n    {\n      sphere: SPHERES.MALKUTH,\n      worldColors: [\n        {\n          world: FOUR_WORLDS.ATZILUTH,\n          color: { id: COLORS.YELLOW, data: COLORS_DATA.YELLOW },\n        },\n        {\n          world: FOUR_WORLDS.BRIAH,\n          color: {\n            id: \"brown\",\n            data: {\n              colorDescription:\n                \"Made up of the colors of earth, which is created from the 4 elements. Brown can be used to represent it, but, usually it is represented in a pizza-like pattern, starting with Olive on top, and going clockwise with Yellow, Black and Red, all with slightly less saturation.\",\n              colorNames: [\"brown\", \"olive\", \"yellow\", \"black\", \"red\"],\n              colorHexCodes: [\n                \"#422E29\",\n                \"#BAB86C\",\n                \"#FFF659\",\n                \"#000000\",\n                \"#FF5454\",\n              ],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.YETZIRAH,\n          color: {\n            id: \"olive-green\",\n            data: {\n              colorDescription: \"Olive green\",\n              colorNames: [\"olive-green\"],\n              colorHexCodes: [\"#BAB86C\"],\n            },\n          },\n        },\n        {\n          world: FOUR_WORLDS.ASSIAH,\n          color: {\n            id: \"black\",\n            data: {\n              colorDescription: \"Black\",\n              colorNames: [\"black\"],\n              colorHexCodes: [\"#000000\"],\n            },\n          },\n        },\n      ],\n    },\n  ];\n\n  for (const sphereColor of sphereColors) {\n    const sphereId = id(KaabalahTypes.SPHERE, sphereColor.sphere);\n    for (const worldColor of sphereColor.worldColors) {\n      const colorId = tree.upsertNode(\n        new BaseNode({\n          id: id(MiscTypes.COLOR, worldColor.color.id),\n          type: MiscTypes.COLOR,\n          data: worldColor.color.data,\n        })\n      );\n\n      tree.link(sphereId, colorId);\n      tree.link(colorId, id(KaabalahTypes.WORLD, worldColor.world));\n    }\n  }\n\n  // todo: add path colors (Israel Regardie's The Golden Dawn, Crowley's 777)\n\n  return tree;\n}\n\nexport function unloadColors(tree: TreeOfLife) {\n  const sphereColors = Object.values(SPHERES).flatMap((sphere) =>\n    tree\n      .related(id(KaabalahTypes.SPHERE, sphere), MiscTypes.COLOR)\n      .map((color) => color.id)\n  );\n  for (let i = 0; i < sphereColors.length; i++) {\n    tree.removeNode(sphereColors[i]);\n  }\n}\n\nexport function loadMusicalNotes(tree: TreeOfLife) {\n  const musicalNotes: {\n    sphere: string;\n    note: string;\n    noteData: NodeData<MiscTypes.MUSICAL_NOTE>;\n  }[] = [\n    {\n      sphere: SPHERES.KETHER,\n      note: \"The Sound of the Spheres\",\n      noteData: {\n        note: \"The Sound of the Spheres\",\n        noteDescription: \"The sound of the spheres\",\n      },\n    },\n    {\n      sphere: SPHERES.CHOKHMAH,\n      note: \"Mantras\",\n      noteData: {\n        note: \"Mantra\",\n        noteDescription: \"All sounds considered devotional mantras\",\n      },\n    },\n    {\n      sphere: SPHERES.BINAH,\n      note: MUSICAL_NOTES.SI,\n      noteData: MUSICAL_NOTES_DATA.SI,\n    },\n    {\n      sphere: SPHERES.CHESED,\n      note: MUSICAL_NOTES.LA,\n      noteData: MUSICAL_NOTES_DATA.LA,\n    },\n    {\n      sphere: SPHERES.GEBURAH,\n      note: \"Do-treble\",\n      noteData: {\n        note: \"Do\",\n        noteDescription: \"C (Do), in the treble clef\",\n      },\n    },\n    {\n      sphere: SPHERES.TIPHARETH,\n      note: \"Sol-treble\",\n      noteData: {\n        note: \"Sol\",\n        noteDescription: \"G (Sol), in the treble clef\",\n      },\n    },\n    {\n      sphere: SPHERES.NETZACH,\n      note: MUSICAL_NOTES.DO,\n      noteData: MUSICAL_NOTES_DATA.DO,\n    },\n    {\n      sphere: SPHERES.HOD,\n      note: MUSICAL_NOTES.MI,\n      noteData: MUSICAL_NOTES_DATA.MI,\n    },\n    {\n      sphere: SPHERES.YESOD,\n      note: MUSICAL_NOTES.MI,\n      noteData: MUSICAL_NOTES_DATA.MI,\n    },\n    {\n      sphere: SPHERES.MALKUTH,\n      note: MUSICAL_NOTES.FA,\n      noteData: MUSICAL_NOTES_DATA.FA,\n    },\n  ];\n\n  for (const musicalNote of musicalNotes) {\n    const sphereId = id(KaabalahTypes.SPHERE, musicalNote.sphere);\n    const noteId = tree.upsertNode(\n      new BaseNode({\n        id: id(MiscTypes.MUSICAL_NOTE, musicalNote.note),\n        type: MiscTypes.MUSICAL_NOTE,\n        data: musicalNote.noteData,\n      })\n    );\n\n    tree.link(sphereId, noteId);\n  }\n\n  return tree;\n}\n\nexport function unloadMusicalNotes(tree: TreeOfLife) {\n  const sphereNotes = Object.values(SPHERES).flatMap((sphere) =>\n    tree\n      .related(id(KaabalahTypes.SPHERE, sphere), MiscTypes.MUSICAL_NOTE)\n      .map((color) => color.id)\n  );\n  for (let i = 0; i < sphereNotes.length; i++) {\n    tree.removeNode(sphereNotes[i]);\n  }\n}\n\nconst linkColorsAndSounds = (t: TreeOfLife) => {\n  // TODO: implement\n  return t;\n};\n\nexport const loadWesternAstrology: Loader = (tree: TreeOfLife) => {\n  const planets: { sphere: string; planet: string }[] = [\n    { sphere: SPHERES.KETHER, planet: PLANETS.NEPTUNE },\n    { sphere: SPHERES.CHOKHMAH, planet: PLANETS.URANUS },\n    { sphere: SPHERES.BINAH, planet: PLANETS.SATURN },\n    { sphere: SPHERES.DAATH, planet: PLANETS.PLUTO },\n    { sphere: SPHERES.CHESED, planet: PLANETS.JUPITER },\n    { sphere: SPHERES.GEBURAH, planet: PLANETS.MARS },\n    { sphere: SPHERES.TIPHARETH, planet: PLANETS.SUN },\n    { sphere: SPHERES.NETZACH, planet: PLANETS.VENUS },\n    { sphere: SPHERES.HOD, planet: PLANETS.MERCURY },\n    { sphere: SPHERES.YESOD, planet: PLANETS.MOON },\n    { sphere: SPHERES.MALKUTH, planet: PLANETS.EARTH },\n  ];\n\n  for (const planet of planets) {\n    const sphereId = id(KaabalahTypes.SPHERE, planet.sphere);\n    const planetId = tree.upsertNode(\n      new BaseNode({\n        id: id(WesternAstrologyTypes.PLANET, planet.planet),\n        type: WesternAstrologyTypes.PLANET,\n      })\n    );\n\n    tree.link(sphereId, planetId);\n  }\n\n  return tree;\n};\n\nexport const unloadWesternAstrology: Unloader = (tree: TreeOfLife) => {\n  const planets = Object.values(SPHERES).flatMap((sphere) =>\n    tree\n      .related(id(KaabalahTypes.SPHERE, sphere), WesternAstrologyTypes.PLANET)\n      .map((planet) => planet.id)\n  );\n  for (let i = 0; i < planets.length; i++) {\n    tree.removeNode(planets[i]);\n  }\n};\n\nexport const LOADERS = {\n  base: loadHermeticQabalah,\n  colors: loadColors,\n  music: loadMusicalNotes,\n  westernAstrology: loadWesternAstrology,\n} satisfies Record<string, Loader>;\n\nexport const UNLOADERS = {\n  base: unloadHermeticQabalah,\n  colors: unloadColors,\n  music: unloadMusicalNotes,\n  westernAstrology: unloadWesternAstrology,\n} satisfies Record<keyof typeof LOADERS, Unloader>;\n\nexport const BRIDGES: Bridge[] = [\n  {\n    id: \"hermetic-qabalah-color-music\",\n    needs: [\"colors\", \"music\"],\n    run: (t) => linkColorsAndSounds(t),\n  },\n];\n","import {\n  FOUR_WORLDS,\n  FOUR_WORLDS_DATA,\n  HEBREW_LETTERS,\n  HEBREW_LETTERS_DATA,\n  LATIN_LETTERS,\n  LATIN_LETTERS_DATA,\n  LURIANIC_PATHS,\n  SPHERES,\n  SPHERES_DATA,\n  WESTERN_ELEMENTS,\n} from \"../constants\";\nimport { TreeOfLife } from \"../tree-of-life\";\nimport {\n  BaseNode,\n  KaabalahTypes,\n  LetterTypes,\n  NodeData,\n  NodeId,\n  WesternAstrologyTypes,\n  id,\n} from \"../types\";\nimport { Bridge, Loader, Unloader } from \"./registry\";\n\nexport const SYSTEM = \"lurianic-kabbalah\" as const;\n\n/**\n * Loads the Lurianic Kabbalah system into the tree of life\n */\nexport function loadLurianicKabbalah(tree: TreeOfLife) {\n  const spheres = [\n    { sphere: SPHERES.KETHER, data: SPHERES_DATA.KETHER, relatedNumber: 1 },\n    { sphere: SPHERES.CHOKHMAH, data: SPHERES_DATA.CHOKHMAH, relatedNumber: 2 },\n    { sphere: SPHERES.BINAH, data: SPHERES_DATA.BINAH, relatedNumber: 3 },\n    { sphere: SPHERES.CHESED, data: SPHERES_DATA.CHESED, relatedNumber: 4 },\n    { sphere: SPHERES.GEBURAH, data: SPHERES_DATA.GEBURAH, relatedNumber: 5 },\n    {\n      sphere: SPHERES.TIPHARETH,\n      data: SPHERES_DATA.TIPHARETH,\n      relatedNumber: 6,\n    },\n    { sphere: SPHERES.NETZACH, data: SPHERES_DATA.NETZACH, relatedNumber: 7 },\n    { sphere: SPHERES.HOD, data: SPHERES_DATA.HOD, relatedNumber: 8 },\n    { sphere: SPHERES.YESOD, data: SPHERES_DATA.YESOD, relatedNumber: 9 },\n    { sphere: SPHERES.MALKUTH, data: SPHERES_DATA.MALKUTH, relatedNumber: 10 },\n  ];\n\n  const sphereIds: Record<string, NodeId<KaabalahTypes.SPHERE>> = {};\n  for (const sphere of spheres) {\n    sphereIds[sphere.sphere] = tree.addSphere(sphere);\n  }\n\n  const worldsWithElements: {\n    id: string;\n    data: NodeData<KaabalahTypes.WORLD>;\n    element: string;\n  }[] = [\n    {\n      id: FOUR_WORLDS.ATZILUTH,\n      data: FOUR_WORLDS_DATA.ATZILUTH,\n      element: WESTERN_ELEMENTS.FIRE,\n    },\n    {\n      id: FOUR_WORLDS.BRIAH,\n      data: FOUR_WORLDS_DATA.BRIAH,\n      element: WESTERN_ELEMENTS.WATER,\n    },\n    {\n      id: FOUR_WORLDS.YETZIRAH,\n      data: FOUR_WORLDS_DATA.YETZIRAH,\n      element: WESTERN_ELEMENTS.AIR,\n    },\n    {\n      id: FOUR_WORLDS.ASSIAH,\n      data: FOUR_WORLDS_DATA.ASSIAH,\n      element: WESTERN_ELEMENTS.EARTH,\n    },\n  ];\n  for (const world of worldsWithElements) {\n    const worldId = tree.upsertNode(\n      new BaseNode({\n        id: world.id,\n        type: KaabalahTypes.WORLD,\n        data: world.data,\n      })\n    );\n\n    const elementId = tree.upsertNode(\n      new BaseNode({\n        id: world.element,\n        type: WesternAstrologyTypes.WESTERN_ELEMENT,\n      })\n    );\n\n    tree.link(worldId, elementId);\n  }\n\n  const paths = [\n    {\n      leftSphere: sphereIds[SPHERES.KETHER],\n      rightSphere: sphereIds[SPHERES.CHOKHMAH],\n      relatedNumber: LURIANIC_PATHS.KETHER_CHOKHMAH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.E,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.E,\n        },\n        {\n          letter: HEBREW_LETTERS.HE,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.HE,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.KETHER],\n      rightSphere: sphereIds[SPHERES.BINAH],\n      relatedNumber: LURIANIC_PATHS.KETHER_BINAH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.V,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.V,\n        },\n        {\n          letter: LATIN_LETTERS.U,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.U,\n        },\n        {\n          letter: LATIN_LETTERS.W,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.W,\n        },\n        {\n          letter: LATIN_LETTERS.O,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.O,\n        },\n        {\n          letter: HEBREW_LETTERS.VAV,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.VAV,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.KETHER],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: LURIANIC_PATHS.KETHER_TIPHARETH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.D,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.D,\n        },\n        {\n          letter: HEBREW_LETTERS.DALET,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.DALET,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHOKHMAH],\n      rightSphere: sphereIds[SPHERES.BINAH],\n      relatedNumber: LURIANIC_PATHS.CHOKHMAH_BINAH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.CH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.CH,\n        },\n        {\n          letter: LATIN_LETTERS.SH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.SH,\n        },\n        {\n          letter: LATIN_LETTERS.X,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.X,\n        },\n        {\n          letter: HEBREW_LETTERS.SHIN,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.SHIN,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHOKHMAH],\n      rightSphere: sphereIds[SPHERES.CHESED],\n      relatedNumber: LURIANIC_PATHS.CHOKHMAH_CHESED,\n      letters: [\n        {\n          letter: LATIN_LETTERS.Z,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Z,\n        },\n        {\n          letter: HEBREW_LETTERS.ZAYIN,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.ZAYIN,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHOKHMAH],\n      rightSphere: sphereIds[SPHERES.GEBURAH],\n      relatedNumber: LURIANIC_PATHS.CHOKHMAH_GEBURAH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.T,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.T,\n        },\n        {\n          letter: HEBREW_LETTERS.TET,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.TET,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHOKHMAH],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: LURIANIC_PATHS.CHOKHMAH_TIPHARETH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.B,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.B,\n        },\n        {\n          letter: HEBREW_LETTERS.BETH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.BETH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.BINAH],\n      rightSphere: sphereIds[SPHERES.CHESED],\n      relatedNumber: LURIANIC_PATHS.BINAH_CHESED,\n      letters: [\n        {\n          letter: LATIN_LETTERS.H,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.H,\n        },\n        {\n          letter: HEBREW_LETTERS.HET,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.HET,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.BINAH],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: LURIANIC_PATHS.BINAH_TIPHARETH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.I,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.I,\n        },\n        {\n          letter: LATIN_LETTERS.J,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.J,\n        },\n        {\n          letter: LATIN_LETTERS.Y,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Y,\n        },\n        {\n          letter: HEBREW_LETTERS.YOD,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.YOD,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.BINAH],\n      rightSphere: sphereIds[SPHERES.GEBURAH],\n      relatedNumber: LURIANIC_PATHS.BINAH_GEBURAH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.G,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.G,\n        },\n        {\n          letter: HEBREW_LETTERS.GIMEL,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.GIMEL,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHESED],\n      rightSphere: sphereIds[SPHERES.GEBURAH],\n      relatedNumber: LURIANIC_PATHS.CHESED_GEBURAH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.A,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.A,\n        },\n        {\n          letter: HEBREW_LETTERS.ALEPH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.ALEPH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHESED],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: LURIANIC_PATHS.CHESED_TIPHARETH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.L,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.L,\n        },\n        {\n          letter: HEBREW_LETTERS.LAMED,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.LAMED,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.CHESED],\n      rightSphere: sphereIds[SPHERES.NETZACH],\n      relatedNumber: LURIANIC_PATHS.CHESED_NETZACH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.C,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.C,\n        },\n        {\n          letter: HEBREW_LETTERS.KAPH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.KAPH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.GEBURAH],\n      rightSphere: sphereIds[SPHERES.TIPHARETH],\n      relatedNumber: LURIANIC_PATHS.GEBURAH_TIPHARETH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.N,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.N,\n        },\n        {\n          letter: HEBREW_LETTERS.NUN,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.NUN,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.GEBURAH],\n      rightSphere: sphereIds[SPHERES.HOD],\n      relatedNumber: LURIANIC_PATHS.GEBURAH_HOD,\n      letters: [\n        {\n          letter: LATIN_LETTERS.P,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.P,\n        },\n        {\n          letter: LATIN_LETTERS.F,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.F,\n        },\n        {\n          letter: LATIN_LETTERS.PH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.PH,\n        },\n        {\n          letter: HEBREW_LETTERS.PE,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.PE,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.TIPHARETH],\n      rightSphere: sphereIds[SPHERES.NETZACH],\n      relatedNumber: LURIANIC_PATHS.TIPHARETH_NETZACH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.S,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.S,\n        },\n        {\n          letter: LATIN_LETTERS.Ç,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Ç,\n        },\n        {\n          letter: HEBREW_LETTERS.SAMEKH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.SAMEKH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.TIPHARETH],\n      rightSphere: sphereIds[SPHERES.YESOD],\n      relatedNumber: LURIANIC_PATHS.TIPHARETH_YESOD,\n      letters: [\n        {\n          letter: LATIN_LETTERS.R,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.R,\n        },\n        {\n          letter: HEBREW_LETTERS.RESH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.RESH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.TIPHARETH],\n      rightSphere: sphereIds[SPHERES.HOD],\n      relatedNumber: LURIANIC_PATHS.TIPHARETH_HOD,\n      letters: [\n        {\n          letter: LATIN_LETTERS.O,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.O,\n        },\n        {\n          letter: HEBREW_LETTERS.AYIN,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.AYIN,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.NETZACH],\n      rightSphere: sphereIds[SPHERES.HOD],\n      relatedNumber: LURIANIC_PATHS.NETZACH_HOD,\n      letters: [\n        {\n          letter: LATIN_LETTERS.M,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.M,\n        },\n        {\n          letter: HEBREW_LETTERS.MEM,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.MEM,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.NETZACH],\n      rightSphere: sphereIds[SPHERES.YESOD],\n      relatedNumber: LURIANIC_PATHS.NETZACH_YESOD,\n      letters: [\n        {\n          letter: LATIN_LETTERS.TS,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.TS,\n        },\n        {\n          letter: LATIN_LETTERS.TZ,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.TZ,\n        },\n        {\n          letter: HEBREW_LETTERS.TSADI,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.TSADI,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.HOD],\n      rightSphere: sphereIds[SPHERES.YESOD],\n      relatedNumber: LURIANIC_PATHS.HOD_YESOD,\n      letters: [\n        {\n          letter: LATIN_LETTERS.K,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.K,\n        },\n        {\n          letter: LATIN_LETTERS.Q,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.Q,\n        },\n        {\n          letter: LATIN_LETTERS.KH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.KH,\n        },\n        {\n          letter: HEBREW_LETTERS.QOPH,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.QOPH,\n        },\n      ],\n    },\n    {\n      leftSphere: sphereIds[SPHERES.YESOD],\n      rightSphere: sphereIds[SPHERES.MALKUTH],\n      relatedNumber: LURIANIC_PATHS.YESOD_MALKUTH,\n      letters: [\n        {\n          letter: LATIN_LETTERS.TH,\n          type: LetterTypes.LATIN_LETTER,\n          data: LATIN_LETTERS_DATA.TH,\n        },\n        {\n          letter: HEBREW_LETTERS.TAV,\n          type: LetterTypes.HEBREW_LETTER,\n          data: HEBREW_LETTERS_DATA.TAV,\n        },\n      ],\n    },\n  ];\n\n  for (const path of paths) {\n    const pathId = tree.addPath({\n      leftSphere: path.leftSphere,\n      rightSphere: path.rightSphere,\n      relatedNumber: path.relatedNumber,\n    });\n\n    tree.addLetters({\n      path: pathId,\n      letters: path.letters,\n    });\n  }\n\n  return tree;\n}\n\nexport function unloadLurianicKabbalah(tree: TreeOfLife) {\n  const spheres = Object.values(SPHERES);\n  for (let i = 0; i < spheres.length; i++) {\n    tree.removeNode(id(KaabalahTypes.SPHERE, spheres[i]));\n  }\n\n  const paths = Object.values(LURIANIC_PATHS);\n  for (let i = 0; i < paths.length; i++) {\n    tree.removeNode(id(KaabalahTypes.PATH, paths[i]));\n  }\n}\n\nexport const LOADERS = {\n  base: loadLurianicKabbalah,\n} satisfies Record<string, Loader>;\n\nexport const UNLOADERS = {\n  base: unloadLurianicKabbalah,\n} satisfies Record<keyof typeof LOADERS, Unloader>;\n\nexport const BRIDGES: Bridge[] = [];\n","import { TreeOfLife } from \"../tree-of-life\";\nimport * as hermeticQabalah from \"./hermetic-qabalah\";\nimport * as kaabalah from \"./kaabalah\";\nimport * as lurianicKabbalah from \"./lurianic-kabbalah\";\n\nexport type System = {\n  SYSTEM: \"kaabalah\" | \"hermetic-qabalah\" | \"lurianic-kabbalah\";\n  LOADERS: Record<string, Loader>;\n  UNLOADERS: Record<string, Unloader>;\n  BRIDGES: Bridge[];\n};\n\nexport const SYSTEMS: System[] = [kaabalah, hermeticQabalah, lurianicKabbalah];\n\nexport type SystemKey = (typeof SYSTEMS)[number][\"SYSTEM\"];\nexport type PartKey =\n  | keyof typeof kaabalah.LOADERS\n  | keyof typeof hermeticQabalah.LOADERS\n  | keyof typeof lurianicKabbalah.LOADERS;\n\nexport type Loader = (t: TreeOfLife) => TreeOfLife;\nexport type Unloader = (t: TreeOfLife) => void;\nexport type Bridge = {\n  id: string;\n  needs: PartKey[];\n  run: (t: TreeOfLife) => void;\n};\n","import { SYSTEMS } from \"./registry\";\n\nimport { TreeOfLife } from \"../tree-of-life\";\nimport { SystemKey } from \"./registry\";\n\nimport { PartKey } from \"./registry\";\n\nexport class ModuleManager {\n  private activeSystem: SystemKey | null = null;\n  private loadedParts = new Set<PartKey>();\n  private bridgedParts = new Set<string>();\n\n  constructor(private t: TreeOfLife) {}\n\n  /**\n   * Loads the base of a system (switching if necessary)\n   * @param systemKey - the key of the system to load\n   */\n  loadSystem(systemKey: SystemKey) {\n    if (this.activeSystem === systemKey) {\n      return;\n    }\n\n    if (this.activeSystem) {\n      this.unloadSystem();\n    }\n\n    const loadedSystem = SYSTEMS.find((s) => s.SYSTEM === systemKey);\n    if (!loadedSystem) {\n      throw new Error(`System ${systemKey} not found`);\n    }\n\n    this.t.runWithMutationSource(\n      {\n        kind: \"system\",\n        system: systemKey,\n      },\n      () => loadedSystem.LOADERS.base(this.t)\n    );\n\n    this.activeSystem = systemKey;\n\n    this.loadedParts.clear();\n    this.loadedParts.add(\"base\");\n  }\n\n  /**\n   * Loads an optional part (colors, music, etc)\n   * @param partKey - the key of the part to load\n   */\n  loadPart(partKey: PartKey) {\n    if (!this.activeSystem) {\n      throw new Error(\"load a system first\");\n    }\n\n    const system = SYSTEMS.find((s) => s.SYSTEM === this.activeSystem);\n    if (!system) {\n      throw new Error(`System ${this.activeSystem} not found`);\n    }\n\n    if (this.loadedParts.has(partKey)) {\n      return;\n    }\n\n    this.t.runWithMutationSource(\n      {\n        kind: \"part\",\n        system: this.activeSystem,\n        part: partKey,\n      },\n      () => system.LOADERS[partKey](this.t)\n    );\n    this.loadedParts.add(partKey);\n\n    const possiblePartBridges = system.BRIDGES.filter(\n      (b) =>\n        b.needs.includes(partKey) &&\n        !this.bridgedParts.has(b.id) &&\n        b.needs.every((n) => this.loadedParts.has(n))\n    );\n\n    for (const bridge of possiblePartBridges) {\n      this.t.runWithMutationSource(\n        {\n          kind: \"bridge\",\n          system: this.activeSystem,\n          bridgeId: bridge.id,\n          parts: [...bridge.needs],\n        },\n        () => bridge.run(this.t)\n      );\n      this.bridgedParts.add(bridge.id);\n    }\n  }\n\n  /**\n   * Unloads the active system and all its parts\n   */\n  unloadSystem() {\n    if (!this.activeSystem) {\n      return;\n    }\n\n    const system = SYSTEMS.find((s) => s.SYSTEM === this.activeSystem);\n    if (!system) {\n      throw new Error(`System ${this.activeSystem} not found`);\n    }\n\n    // unload parts in reverse order so dependants go first\n    const reversedParts = [...this.loadedParts].reverse();\n\n    for (const part of reversedParts) {\n      system.UNLOADERS[part](this.t);\n    }\n\n    this.activeSystem = null;\n    this.loadedParts.clear();\n    this.bridgedParts.clear();\n  }\n\n  /**\n   * Runs a bridge (that connects two parts) if it is not already run and all its needs are loaded\n   * @param bridgeKey - the key of the bridge to run\n   */\n  runBridge(bridgeKey: string) {\n    const system = SYSTEMS.find((s) => s.SYSTEM === this.activeSystem);\n    if (!system) {\n      throw new Error(`System ${this.activeSystem} not found`);\n    }\n\n    const bridge = system.BRIDGES.find((b) => b.id === bridgeKey);\n    if (!bridge) {\n      throw new Error(`Bridge ${bridgeKey} not found`);\n    }\n\n    if (\n      !this.bridgedParts.has(bridge.id) &&\n      bridge.needs.every((n) => this.loadedParts.has(n))\n    ) {\n      this.t.runWithMutationSource(\n        {\n          kind: \"bridge\",\n          system: this.activeSystem,\n          bridgeId: bridge.id,\n          parts: [...bridge.needs],\n        },\n        () => bridge.run(this.t)\n      );\n      this.bridgedParts.add(bridge.id);\n    }\n  }\n\n  listAvailableParts() {\n    if (!this.activeSystem) {\n      throw new Error(\"No system loaded\");\n    }\n\n    const installedSystem = SYSTEMS.find((s) => s.SYSTEM === this.activeSystem);\n    if (!installedSystem) {\n      throw new Error(`System ${this.activeSystem} not found`);\n    }\n\n    return Object.keys(installedSystem.LOADERS).filter((p) => p !== \"base\");\n  }\n\n  listAvailableBridges() {\n    if (!this.activeSystem) {\n      throw new Error(\"No system loaded\");\n    }\n\n    const installedSystem = SYSTEMS.find((s) => s.SYSTEM === this.activeSystem);\n    if (!installedSystem) {\n      throw new Error(`System ${this.activeSystem} not found`);\n    }\n\n    return installedSystem.BRIDGES;\n  }\n\n  listLoadedParts() {\n    return [...this.loadedParts];\n  }\n\n  listBridgedParts() {\n    return [...this.bridgedParts];\n  }\n\n  getActiveSystem() {\n    return this.activeSystem;\n  }\n}\n","import { PartKey } from \"./systems/registry\";\n\nimport {\n  CorrespondenceEdge,\n  CorrespondenceMetadata,\n  CorrespondenceSource,\n  makeCorrespondenceId,\n} from \"./correspondence-model\";\nimport { ModuleManager } from \"./systems/module-manager\";\nimport { SystemKey } from \"./systems/registry\";\nimport {\n  BaseNode,\n  KaabalahTypes,\n  LetterTypes,\n  Node,\n  NodeData,\n  NodeId,\n  NodeType,\n  NumerologyTypes,\n  TarotTypes,\n  WesternAstrologyTypes,\n} from \"./types\";\n\nfunction mergeCorrespondenceMetadata(\n  current?: CorrespondenceMetadata,\n  next?: CorrespondenceMetadata\n) {\n  if (!current) {\n    return next ? { ...next } : undefined;\n  }\n\n  if (!next) {\n    return { ...current };\n  }\n\n  return {\n    ...current,\n    ...next,\n    tags: [...new Set([...(current.tags ?? []), ...(next.tags ?? [])])],\n    attributes: {\n      ...(current.attributes ?? {}),\n      ...(next.attributes ?? {}),\n    },\n  };\n}\n\nfunction mergeCorrespondenceSources(\n  current: readonly CorrespondenceSource[],\n  next: CorrespondenceSource\n) {\n  const seen = new Set<string>();\n  const merged: CorrespondenceSource[] = [];\n\n  for (const source of [...current, next]) {\n    const key = JSON.stringify(source);\n\n    if (seen.has(key)) {\n      continue;\n    }\n\n    seen.add(key);\n    merged.push({\n      ...source,\n      ...(source.kind === \"bridge\" ? { parts: [...source.parts] } : {}),\n    } as CorrespondenceSource);\n  }\n\n  return merged;\n}\n\n/**\n * TreeOfLife represents a graph structure for mapping Kaabalah, Tarot, Astrology and other\n * esoteric correspondences. It can be used to create multiple independent instances\n * for different use cases or to isolate different sets of correspondences.\n */\nexport class TreeOfLife {\n  private nodes = new Map<NodeId<NodeType>, Node<NodeType>>();\n  private adjacent = new Map<NodeId<NodeType>, Set<NodeId<NodeType>>>();\n  private edges = new Map<string, CorrespondenceEdge>();\n  private mutationSources: CorrespondenceSource[] = [{ kind: \"manual\" }];\n\n  private modules = new ModuleManager(this);\n\n  private getCurrentMutationSource() {\n    return this.mutationSources[this.mutationSources.length - 1] ?? {\n      kind: \"manual\",\n    };\n  }\n\n  runWithMutationSource<T>(source: CorrespondenceSource, fn: () => T) {\n    this.mutationSources.push(source);\n\n    try {\n      return fn();\n    } finally {\n      this.mutationSources.pop();\n    }\n  }\n\n  /**\n   * Loads the tree of life system to be used\n   * @param systemKey - the key of the system to load\n   */\n  loadSystem(systemKey: SystemKey) {\n    this.modules.loadSystem(systemKey);\n  }\n\n  /**\n   * Loads a part of a system into the tree of life\n   * @param partKey - the key of the part to load\n   */\n  loadPart(partKey: PartKey) {\n    this.modules.loadPart(partKey);\n  }\n\n  /**\n   * Unloads the tree of life system and all its parts\n   */\n  unloadSystem() {\n    this.modules.unloadSystem();\n  }\n\n  public get activeSystem(): SystemKey | null {\n    return this.modules.getActiveSystem();\n  }\n\n  public get availableParts() {\n    return this.modules.listAvailableParts();\n  }\n\n  public get loadedParts() {\n    return this.modules.listLoadedParts();\n  }\n\n  public get availableBridges() {\n    return this.modules.listAvailableBridges();\n  }\n\n  public get bridgedParts() {\n    return this.modules.listBridgedParts();\n  }\n\n  /**\n   * Upserts a node to the tree\n   * @param node - the node to upsert\n   * @returns the id of the added node\n   */\n  upsertNode<T extends NodeType>(node: Node<T>) {\n    if (this.nodes.has(node.id)) {\n      const existingNode = this.nodes.get(node.id)!;\n\n      if (existingNode.type !== node.type) {\n        throw new Error(\n          \"node with existing id but different type already exists\"\n        );\n      }\n\n      const updatedData = { ...existingNode.data, ...node.data } as NodeData<T>;\n\n      this.nodes.set(node.id, { ...existingNode, data: updatedData });\n\n      return node.id;\n    }\n\n    this.nodes.set(node.id, node);\n\n    return node.id;\n  }\n\n  getNode<T extends NodeType>(id: NodeId<T>): Node<T> | undefined {\n    return this.nodes.get(id) as Node<T> | undefined;\n  }\n\n  getNodes() {\n    return [...this.nodes.values()];\n  }\n\n  getEdge(left: NodeId<NodeType>, right: NodeId<NodeType>) {\n    return this.edges.get(makeCorrespondenceId(left, right));\n  }\n\n  getEdges(nodeId?: NodeId<NodeType>) {\n    if (!nodeId) {\n      return [...this.edges.values()];\n    }\n\n    return [...(this.adjacent.get(nodeId) ?? [])]\n      .map((relatedNodeId) => this.getEdge(nodeId, relatedNodeId))\n      .filter((edge): edge is CorrespondenceEdge => Boolean(edge));\n  }\n\n  /**\n   * Links two nodes bi-directionally\n   * @param firstNode - the id of the first node\n   * @param secondNode - the id of the second node\n   */\n  link(\n    firstNode: NodeId<NodeType>,\n    secondNode: NodeId<NodeType>,\n    options: {\n      metadata?: CorrespondenceMetadata;\n      source?: CorrespondenceSource;\n    } = {}\n  ) {\n    if (!this.nodes.has(firstNode) || !this.nodes.has(secondNode)) {\n      throw new Error(\"unknown node id\");\n    }\n\n    if (firstNode === secondNode) {\n      return;\n    }\n\n    const edgeId = makeCorrespondenceId(firstNode, secondNode);\n    const source = options.source ?? this.getCurrentMutationSource();\n    const existingEdge = this.edges.get(edgeId);\n\n    const put = (leftNode: NodeId<NodeType>, rightNode: NodeId<NodeType>) => {\n      const set = this.adjacent.get(leftNode) ?? new Set<NodeId<NodeType>>();\n      set.add(rightNode);\n      this.adjacent.set(leftNode, set);\n    };\n\n    if (existingEdge) {\n      this.edges.set(edgeId, {\n        ...existingEdge,\n        metadata: mergeCorrespondenceMetadata(\n          existingEdge.metadata,\n          options.metadata\n        ),\n        sources: mergeCorrespondenceSources(existingEdge.sources, source),\n      });\n      put(firstNode, secondNode);\n      put(secondNode, firstNode);\n\n      return;\n    }\n\n    put(firstNode, secondNode);\n    put(secondNode, firstNode);\n\n    this.edges.set(edgeId, {\n      id: edgeId,\n      left: firstNode,\n      right: secondNode,\n      metadata: mergeCorrespondenceMetadata(undefined, options.metadata),\n      sources: mergeCorrespondenceSources([], source),\n    });\n  }\n\n  /**\n   * Gets the current node and all its direct relations, or, when filtered by node type, only the direct relations of that type.\n   * @param id - the id of the node to get the relations for\n   * @param nodeType - the node type to filter the relations by\n   * @returns the current node and all its direct relations\n   */\n  related<T extends NodeType, U extends NodeType>(\n    id: NodeId<T>,\n    nodeType?: U\n  ): Node<U>[] {\n    if (!this.nodes.has(id)) {\n      return [];\n    }\n\n    const relations = this.adjacent.get(id);\n\n    if (!relations) {\n      return [];\n    }\n\n    const relatedNodes = [...relations].map(\n      (i) => this.nodes.get(i)! as Node<U>\n    );\n\n    return nodeType\n      ? relatedNodes.filter((n) => n.type === nodeType)\n      : relatedNodes;\n  }\n\n  /**\n   * Sugar for `related(id, type)[0]`\n   * @param id - the id of the node to get the related node for\n   * @param type - the type of the node to get the related node for\n   * @returns the related node\n   */\n  relatedFirst<T extends NodeType, U extends NodeType>(\n    id: NodeId<T>,\n    type: U\n  ): Node<U> | undefined {\n    const related = this.related(id, type);\n\n    return related?.[0];\n  }\n\n  /**\n   * Gets all the types of nodes that are directly connected to the given node\n   * @param id - the id of the node to get related types for\n   * @returns array of node types that are directly connected\n   */\n  relatedTypes<T extends NodeType>(id: NodeId<T>): T[] {\n    if (!this.nodes.has(id)) {\n      return [];\n    }\n\n    return [\n      ...new Set(\n        [...(this.adjacent.get(id) ?? new Set<NodeId<NodeType>>()).values()].map(\n          (nodeId) => this.nodes.get(nodeId)!.type as T\n        )\n      ),\n    ];\n  }\n\n  /**\n   * BFS up to depth k, optional type filter for the result set\n   * @param id - the id of the node to get the extended relations for\n   * @param depth - the depth of the walk\n   * @param type - the type of the nodes to filter the result set by\n   * @returns the current node and all its extended relations\n   */\n  walk<T extends NodeType, U extends NodeType>(\n    id: NodeId<T>,\n    depth = 1,\n    type?: U\n  ): Node<U>[] {\n    const visitedNodes = new Set<NodeId<NodeType>>([id]);\n    const foundNodes: Node<NodeType>[] = [];\n\n    // [nodeId, depth]\n    let queue: [NodeId<NodeType>, number][] = [[id, 0]];\n\n    while (queue.length > 0) {\n      const [current, currentDepth] = queue.shift()!;\n\n      if (currentDepth >= depth) {\n        continue;\n      }\n\n      const neighbors = this.adjacent.get(current) ?? new Set<NodeId<T>>();\n      for (const neighbor of neighbors) {\n        if (visitedNodes.has(neighbor)) {\n          continue;\n        }\n\n        visitedNodes.add(neighbor);\n        queue.push([neighbor, currentDepth + 1]);\n        foundNodes.push(this.nodes.get(neighbor)!);\n      }\n    }\n\n    return type\n      ? (foundNodes.filter((n) => n.type === type) as Node<U>[])\n      : (foundNodes as Node<U>[]);\n  }\n\n  /**\n   * Removes a node and all its relations from the graph, cleaning up adjacency sets.\n   * @param id - the id of the node to remove\n   */\n  removeNode(id: NodeId<NodeType>) {\n    if (!this.nodes.has(id)) return;\n\n    const neighbors = this.adjacent.get(id);\n    if (neighbors) {\n      for (const neighbor of neighbors) {\n        this.edges.delete(makeCorrespondenceId(id, neighbor));\n\n        const set = this.adjacent.get(neighbor);\n\n        if (!set) {\n          continue;\n        }\n\n        set.delete(id);\n        if (set.size === 0) {\n          this.adjacent.delete(neighbor);\n        }\n      }\n    }\n\n    this.adjacent.delete(id);\n    this.nodes.delete(id);\n  }\n\n  addNumber({ number, nodeId }: { number: number; nodeId?: NodeId<NodeType> }) {\n    const numberId = this.upsertNode(\n      new BaseNode({\n        id: number,\n        type: NumerologyTypes.NUMBER,\n      })\n    );\n\n    if (nodeId) {\n      this.link(nodeId, numberId);\n    }\n\n    return numberId;\n  }\n\n  /**\n   * Adds a sphere (sephirah) to the tree with its Hebrew and English names\n   * @param sphere - the identifier for the sphere\n   * @param data - the sphere's Hebrew and English names\n   * @returns the sphere's id\n   */\n  addSphere({\n    sphere,\n    data,\n    relatedNumber,\n  }: {\n    sphere: string;\n    data: NodeData<KaabalahTypes.SPHERE>;\n    relatedNumber: number;\n  }) {\n    const sphereId = this.upsertNode(\n      new BaseNode({\n        id: sphere,\n        type: KaabalahTypes.SPHERE,\n        data,\n      })\n    );\n\n    this.addNumber({ number: relatedNumber, nodeId: sphereId });\n\n    return sphereId;\n  }\n\n  /**\n   * Adds a path between two spheres with its associated number\n   * @param leftSphere - the id of the first sphere\n   * @param rightSphere - the id of the second sphere\n   * @param relatedNumber - the number associated with this path\n   * @returns the path's id\n   */\n  addPath({\n    leftSphere,\n    rightSphere,\n    relatedNumber,\n    data,\n  }: {\n    leftSphere: NodeId<KaabalahTypes.SPHERE>;\n    rightSphere: NodeId<KaabalahTypes.SPHERE>;\n    relatedNumber: number;\n    data?: Omit<NodeData<KaabalahTypes.PATH>, \"from\" | \"to\">;\n  }) {\n    const pathId = this.upsertNode(\n      new BaseNode({\n        id: relatedNumber,\n        type: KaabalahTypes.PATH,\n        data: {\n          ...(data ?? {}),\n          from: leftSphere,\n          to: rightSphere,\n        },\n      })\n    );\n\n    // If we count the spheres too (10 of them), we'll have an index up to 32\n    const numberOfSpheres = 10;\n    const pathNumber = relatedNumber + numberOfSpheres;\n\n    this.link(leftSphere, pathId);\n    this.link(rightSphere, pathId);\n\n    this.addNumber({ number: relatedNumber, nodeId: pathId });\n    this.addNumber({ number: pathNumber, nodeId: pathId });\n\n    return pathId;\n  }\n\n  addLetters({\n    path,\n    letters,\n  }: {\n    path: NodeId<KaabalahTypes.PATH>;\n    letters: { letter: string; type: NodeType; data?: NodeData<NodeType> }[];\n  }) {\n    for (const letter of letters) {\n      const letterId = this.upsertNode(\n        new BaseNode({\n          id: letter.letter,\n          type: letter.type,\n          data: letter.data,\n        })\n      );\n\n      this.link(path, letterId);\n\n      if (letter.type === LetterTypes.HEBREW_LETTER) {\n        const data = letter.data as NodeData<LetterTypes.HEBREW_LETTER>;\n\n        if (!data) {\n          continue;\n        }\n\n        this.addNumber({ number: data.gematriaValue, nodeId: letterId });\n\n        if (data.gematriaValueWhenEnding) {\n          this.addNumber({\n            number: data.gematriaValueWhenEnding,\n            nodeId: letterId,\n          });\n        }\n      }\n    }\n  }\n\n  addWesternAstrologySign({\n    spheres,\n    path,\n    house,\n    planets,\n    element,\n    modality,\n    sign,\n    relatedNumber,\n  }: {\n    spheres: NodeId<KaabalahTypes.SPHERE>[];\n    path: NodeId<KaabalahTypes.PATH>;\n    house: NodeId<WesternAstrologyTypes.HOUSE>;\n    planets: NodeId<WesternAstrologyTypes.PLANET>[];\n    element: NodeId<WesternAstrologyTypes.WESTERN_ELEMENT>;\n    modality: NodeId<WesternAstrologyTypes.MODALITIES>;\n    sign: string;\n    relatedNumber: number;\n  }) {\n    const signId = this.upsertNode(\n      new BaseNode({\n        id: sign,\n        type: WesternAstrologyTypes.WESTERN_ZODIAC_SIGN,\n      })\n    );\n\n    for (const sphere of spheres) {\n      this.link(sphere, signId);\n    }\n\n    this.link(path, signId);\n\n    this.link(house, signId);\n\n    for (const planet of planets) {\n      this.link(planet, signId);\n    }\n\n    this.addNumber({ number: relatedNumber, nodeId: signId });\n\n    this.link(element, signId);\n    this.link(modality, signId);\n\n    return signId;\n  }\n\n  addTarotArkAnnu({\n    node,\n    tarotArkAnnu,\n    data,\n    relatedNumber,\n    suit,\n  }: {\n    node: NodeId<NodeType>;\n    tarotArkAnnu: string;\n    data: NodeData<TarotTypes.TAROT_ARK_ANNU>;\n    relatedNumber: number;\n    suit?: string;\n  }) {\n    const tarotArkAnnuId = this.upsertNode(\n      new BaseNode({\n        id: tarotArkAnnu,\n        type: TarotTypes.TAROT_ARK_ANNU,\n        data,\n      })\n    );\n\n    this.link(node, tarotArkAnnuId);\n\n    this.addNumber({ number: relatedNumber, nodeId: tarotArkAnnuId });\n\n    if (suit) {\n      const suitValue = suit.includes(\":\") ? suit.split(\":\").pop()! : suit;\n      const suitId = this.upsertNode(\n        new BaseNode({\n          id: suitValue,\n          type: TarotTypes.TAROT_SUIT,\n        })\n      );\n\n      this.link(tarotArkAnnuId, suitId);\n    }\n\n    return tarotArkAnnuId;\n  }\n}\n","import { PartKey, SystemKey } from \"./systems/registry\";\nimport { TreeOfLife } from \"./tree-of-life\";\n\nexport interface TreeOptions {\n  system: SystemKey;\n  parts?: Exclude<PartKey, \"base\">[];\n}\n\n/**\n * Creates a new Tree of Life instance with optional system loaders\n * @param opts Configuration options for which systems to load\n * @returns A new TreeOfLife instance with the requested systems loaded\n */\nexport function createTree(\n  opts: TreeOptions = {\n    system: \"kaabalah\",\n    parts: [],\n  }\n) {\n  const tree = new TreeOfLife();\n\n  tree.loadSystem(opts.system);\n\n  for (const part of opts.parts || []) {\n    tree.loadPart(part);\n  }\n\n  return tree;\n}\n"]}