{"version":3,"file":"pro-dashboard-page.C2HOmmp_.js","sources":["../../../src/components/ui/icons/home-icon.svg","../../../src/components/ui/icons/location-icon.svg","../../../src/components/ui/icons/calculator-icon.svg","../../../src/components/ui/icons/profile-icon.tsx","../../../src/modules/pro/dashboard/pro-dashboard-model.ts","../../../src/modules/pro/dashboard/pro-dashboard-page.tsx"],"sourcesContent":["export default {\"src\":\"__ASTRO_ASSET_IMAGE__BDWHkcdS__\",\"width\":24,\"height\":25,\"format\":\"svg\"}","export default {\"src\":\"__ASTRO_ASSET_IMAGE__BQegGd3y__\",\"width\":24,\"height\":25,\"format\":\"svg\"}","export default {\"src\":\"__ASTRO_ASSET_IMAGE__DYvNntgR__\",\"width\":24,\"height\":25,\"format\":\"svg\"}","export default function ProfileIcon() {\n return (\n \n \n \n \n\n );\n}\n","import { runQuery } from '@lib/graphql'\nimport { getSfcPrimaryCookie } from '@lib/session'\nimport * as Sentry from '@sentry/astro'\n\nexport type ProDashboardArticle = {\n title: string\n snippet: string\n thumbnail_image_url: string\n thumbnail_for_homepage: string\n url: string\n}\n\nexport type UserConfiguration = {\n proDashboardConfig?: ProDashboardConfig\n}\n\nexport type ProDashboardConfig = {\n favorite_tools?: string[]\n}\n\nexport const updateProDashboardConfig = async (config: ProDashboardConfig): Promise => {\n const token = getSfcPrimaryCookie()\n\n const query = `\n mutation {\n update_user_configuration(\n sfc_token: \"${token}\",\n pro_dashboard_config: ${JSON.stringify(JSON.stringify(config))}\n ) {\n pro_dashboard_config\n }\n }\n `\n\n const data: any = await runQuery(query)\n try {\n if (data.user_configuration?.pro_dashboard_config) {\n return JSON.parse(data.user_configuration.pro_dashboard_config)\n }\n } catch (error) {\n Sentry.captureException(error)\n }\n\n return {}\n}\n","import HomeIcon from '@components/ui/icons/home-icon.svg'\nimport LocationIcon from '@components/ui/icons/location-icon.svg'\nimport CalculatorIcon from '@components/ui/icons/calculator-icon.svg'\nimport ProfileIcon from '@components/ui/icons/profile-icon'\nimport FullWidthContainer from '@components/layout/full-width-container'\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@components/ui/tabs'\nimport { useEffect, useState, type ReactElement } from 'react'\nimport { CarouselItem } from '@components/ui/carousel'\nimport { CarouselContent } from '@components/ui/carousel'\nimport { Carousel } from '@components/ui/carousel'\nimport { TOOLS, FEATURED_ON_PRO_DASHBOARD_TOOLS, type Tool } from '@modules/tools/tools-model'\nimport { ToolCard } from '@modules/tools/tool-card'\nimport { LinkButton } from '@components/ui/link-button'\nimport { ChevronRightIcon } from 'lucide-react'\nimport { Separator } from '@components/ui/separator'\nimport { Link } from '@components/ui/link'\nimport {\n type ProDashboardArticle,\n type ProDashboardConfig,\n updateProDashboardConfig\n} from './pro-dashboard-model'\nimport { USMap } from '@components/us-map/us-map'\nimport { getStateFromIp } from '@lib/us-states'\nimport { CommonDialogs } from '@components/layout/common-dialogs'\n\nconst ProDashboardPage = ({\n recentArticles,\n isLoggedIn,\n proDashboardConfig\n}: {\n recentArticles: ProDashboardArticle[]\n isLoggedIn: boolean\n proDashboardConfig: ProDashboardConfig\n}) => {\n const [selectedTab, setSelectedTab] = useState(() => {\n const hash = typeof window !== 'undefined' && window.location.hash.replace('#', '')\n return hash || 'home'\n })\n\n const [favoriteTools, setFavoriteTools] = useState(() => {\n return proDashboardConfig?.favorite_tools ?? []\n })\n\n const getFeaturedTools = (): Tool[] => {\n if (favoriteTools.length > 0) {\n return TOOLS.filter((tool) => favoriteTools.includes(tool.id))\n }\n return FEATURED_ON_PRO_DASHBOARD_TOOLS\n }\n\n const [featuredTools, setFeaturedTools] = useState(() => {\n return getFeaturedTools()\n })\n\n const [mobileFeaturedTools] = useState(() => {\n return featuredTools.concat(\n TOOLS.filter((tool) => !featuredTools.find((t) => t.id === tool.id))\n )\n })\n\n const updateFeaturedTools = () => {\n setFeaturedTools(getFeaturedTools())\n }\n\n const handleTabChange = (tabValue: string) => {\n if (tabValue === 'my-account') {\n window.location.href = '/manage_account'\n } else {\n setSelectedTab(tabValue)\n updateFeaturedTools()\n\n if (typeof window !== 'undefined') {\n if (tabValue === 'home') {\n window.history.replaceState(null, '', `#`)\n } else {\n window.history.replaceState(null, '', `#${tabValue}`)\n }\n }\n }\n }\n\n const handleFavoriteClick = (toolId: string) => {\n const newFavoriteTools = favoriteTools.includes(toolId)\n ? favoriteTools.filter((id) => id !== toolId)\n : [...favoriteTools, toolId]\n\n setFavoriteTools(newFavoriteTools)\n\n updateProDashboardConfig({ favorite_tools: newFavoriteTools })\n\n setFeaturedTools(() => {\n // On the home we keep the current tools visible.\n if (selectedTab === 'home') {\n return featuredTools.map((tool) => {\n if (tool.id === toolId) {\n return { ...tool, isFavorite: !tool.isFavorite }\n }\n return tool\n })\n } else {\n return TOOLS.filter((tool) => favoriteTools.includes(tool.id))\n }\n })\n }\n\n return (\n \n \n \n Pro Dashboard\n \n \n 529 by State Map →\n \n \n {isLoggedIn && (\n <>\n \n \n My Account →\n \n \n >\n )}\n \n \n \n \n handleTabChange(value)}\n >\n \n }\n />\n }\n />\n }\n />\n {isLoggedIn && (\n }\n />\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nconst PlanMetricsItem = ({ title, url }: { title: string; url: string }) => {\n return (\n \n \n {title}\n \n \n )\n}\n\nconst ProDashboardHomeTab = ({\n featuredTools,\n recentArticles,\n handleTabChange,\n handleFavoriteClick,\n favoriteTools,\n isLoggedIn\n}: {\n featuredTools: Tool[]\n recentArticles: ProDashboardArticle[]\n handleTabChange: (tab: string) => void\n handleFavoriteClick: (toolId: string) => void\n favoriteTools: string[]\n isLoggedIn: boolean\n}) => {\n return (\n \n \n \n TOOLS AND CALCULATORS\n \n \n {featuredTools.map((tool, index) => (\n 0 && !favoriteTools.includes(tool.id)}\n />\n ))}\n \n \n \n \n {featuredTools.map((tool, index) => (\n \n \n \n ))}\n \n \n \n handleTabChange('tools-and-calculators')}\n variant=\"outline\"\n className=\"hidden small-desktop:flex tablet:max-w-[260px]\"\n >\n Show all tools \n \n \n \n \n \n \n 01.\n \n 529 Plan Metrics\n \n Access these key 529 plan data insights available only through Saving For\n College\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n />\n \n {recentArticles.map((article, index) => (\n \n ))}\n {\n window.location.href = '/articles'\n }}\n >\n Show more \n \n \n }\n />\n \n \n \n )\n}\n\nconst ProDashboardStateMapTab = () => {\n const [userStateId, setUserStateId] = useState(undefined)\n\n useEffect(() => {\n const fetchState = async () => {\n const stateFromIp = await getStateFromIp()\n setUserStateId(() => stateFromIp?.id)\n }\n\n fetchState()\n }, [])\n\n return (\n \n \n \n )\n}\n\nconst ProDashboardToolsTab = ({\n handleFavoriteClick,\n favoriteTools,\n isLoggedIn\n}: {\n handleFavoriteClick: (toolId: string) => void\n favoriteTools: string[]\n isLoggedIn: boolean\n}) => {\n return (\n \n \n {TOOLS.map((tool, index) => (\n \n ))}\n \n \n )\n}\n\nconst ProDashboardTabsTrigger = ({\n value,\n text,\n icon\n}: {\n value: string\n text: string\n icon: ReactElement\n}) => {\n return (\n \n {icon}\n {text}\n \n )\n}\n\nconst PlanDataItem = ({\n number,\n title,\n description,\n link,\n isLast\n}: {\n number: string\n title: string\n description: string\n link: string\n isLast: boolean\n}) => {\n return (\n \n \n {number}\n \n {title}\n {description}\n \n \n \n \n \n {!isLast && (\n \n )}\n \n )\n}\n\nconst ArticleItem = ({\n article,\n isFirst,\n isLast\n}: {\n article: ProDashboardArticle\n isFirst: boolean\n isLast: boolean\n}) => {\n return (\n \n \n {isFirst && (\n \n )}\n \n {article.title}\n {article.snippet}\n Read more →\n \n \n \n {!isLast && (\n \n )}\n \n )\n}\n\nconst ProDashboardSectionCard = ({\n title,\n content\n}: {\n title: string\n content: React.ReactNode\n}) => {\n return (\n \n {title}\n {content}\n \n )\n}\n\nconst ToolCardWithFavorite = ({\n tool,\n handleFavoriteClick,\n isFavorite,\n isLoggedIn,\n markAsDeleted = false\n}: {\n tool: Tool\n handleFavoriteClick: (toolId: string) => void\n isFavorite: boolean\n isLoggedIn: boolean\n markAsDeleted?: boolean\n}) => {\n return (\n \n )\n}\n\nexport default ProDashboardPage\n"],"names":["HomeIcon","LocationIcon","CalculatorIcon","ProfileIcon","jsxs","jsx","updateProDashboardConfig","config","query","getSfcPrimaryCookie","data","runQuery","error","Sentry.captureException","ProDashboardPage","recentArticles","isLoggedIn","proDashboardConfig","selectedTab","setSelectedTab","useState","favoriteTools","setFavoriteTools","getFeaturedTools","TOOLS","tool","FEATURED_ON_PRO_DASHBOARD_TOOLS","featuredTools","setFeaturedTools","mobileFeaturedTools","t","updateFeaturedTools","handleTabChange","tabValue","handleFavoriteClick","toolId","newFavoriteTools","id","FullWidthContainer","Link","Separator","Fragment","ProDashboardHomeTab","Tabs","value","TabsList","ProDashboardTabsTrigger","TabsContent","ProDashboardStateMapTab","ProDashboardToolsTab","PlanMetricsItem","title","url","index","ToolCardWithFavorite","Carousel","CarouselContent","CarouselItem","LinkButton","ChevronRightIcon","ProDashboardSectionCard","PlanDataItem","article","ArticleItem","CommonDialogs","userStateId","setUserStateId","useEffect","stateFromIp","getStateFromIp","USMap","text","icon","TabsTrigger","number","description","link","isLast","isFirst","content","isFavorite","markAsDeleted","ToolCard"],"mappings":"02EAAA,MAAAA,EAAe,CAAC,IAAM,4EAAkC,MAAQ,GAAG,OAAS,GAAG,OAAS,KAAK,ECA7FC,EAAe,CAAC,IAAM,gFAAkC,MAAQ,GAAG,OAAS,GAAG,OAAS,KAAK,ECA7FC,EAAe,CAAC,IAAM,kFAAkC,MAAQ,GAAG,OAAS,GAAG,OAAS,KAAK,ECA7F,SAAwBC,GAAc,CAE9B,OAAAC,EAAA,KAAC,MAAI,CAAA,MAAM,KAAK,OAAO,KAAK,QAAQ,YAAY,KAAK,OAAO,MAAM,6BAC9D,SAAA,CAACC,EAAAA,IAAA,OAAA,CAAK,EAAE,kHAAkH,OAAO,eAAe,YAAY,IAAI,cAAc,QAAQ,eAAe,OAAQ,CAAA,EAC7MA,EAAAA,IAAC,OAAK,CAAA,EAAE,+JAA+J,OAAO,eAAe,YAAY,IAAI,cAAc,QAAQ,eAAe,OAAQ,CAAA,CAC9P,CAAA,CAAA,CAGR,CCYa,MAAAC,EAA2B,MAAOC,GAA4D,CAGzG,MAAMC,EAAQ;AAAA;AAAA;AAAA,sBAFAC,GAKW;AAAA,gCACK,KAAK,UAAU,KAAK,UAAUF,CAAM,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAO9DG,EAAY,MAAMC,EAASH,CAAK,EAClC,GAAA,CACE,GAAAE,EAAK,oBAAoB,qBAC3B,OAAO,KAAK,MAAMA,EAAK,mBAAmB,oBAAoB,QAEzDE,EAAO,CACdC,EAAwBD,CAAK,CAC/B,CAEA,MAAO,EACT,ECnBME,GAAmB,CAAC,CACxB,eAAAC,EACA,WAAAC,EACA,mBAAAC,CACF,IAIM,CACJ,KAAM,CAACC,EAAaC,CAAc,EAAIC,WAAS,IAChC,OAAO,OAAW,KAAe,OAAO,SAAS,KAAK,QAAQ,IAAK,EAAE,GACnE,MAChB,EAEK,CAACC,EAAeC,CAAgB,EAAIF,WAAmB,IACpDH,GAAoB,gBAAkB,EAC9C,EAEKM,EAAmB,IACnBF,EAAc,OAAS,EAClBG,EAAM,OAAQC,GAASJ,EAAc,SAASI,EAAK,EAAE,CAAC,EAExDC,EAGH,CAACC,EAAeC,CAAgB,EAAIR,WAAiB,IAClDG,EAAiB,CACzB,EAEK,CAACM,CAAmB,EAAIT,EAAAA,SAAiB,IACtCO,EAAc,OACnBH,EAAM,OAAQC,GAAS,CAACE,EAAc,KAAMG,GAAMA,EAAE,KAAOL,EAAK,EAAE,CAAC,CAAA,CAEtE,EAEKM,EAAsB,IAAM,CAChCH,EAAiBL,GAAkB,CAAA,EAG/BS,EAAmBC,GAAqB,CACxCA,IAAa,aACf,OAAO,SAAS,KAAO,mBAEvBd,EAAec,CAAQ,EACHF,IAEhB,OAAO,OAAW,MAChBE,IAAa,OACf,OAAO,QAAQ,aAAa,KAAM,GAAI,GAAG,EAEzC,OAAO,QAAQ,aAAa,KAAM,GAAI,IAAIA,CAAQ,EAAE,GAG1D,EAGIC,EAAuBC,GAAmB,CAC9C,MAAMC,EAAmBf,EAAc,SAASc,CAAM,EAClDd,EAAc,OAAQgB,GAAOA,IAAOF,CAAM,EAC1C,CAAC,GAAGd,EAAec,CAAM,EAE7Bb,EAAiBc,CAAgB,EAER9B,EAAA,CAAE,eAAgB8B,CAAA,CAAkB,EAE7DR,EAAiB,IAEXV,IAAgB,OACXS,EAAc,IAAKF,GACpBA,EAAK,KAAOU,EACP,CAAE,GAAGV,EAAM,WAAY,CAACA,EAAK,UAAW,EAE1CA,CACR,EAEMD,EAAM,OAAQC,GAASJ,EAAc,SAASI,EAAK,EAAE,CAAC,CAEhE,CAAA,EAGH,OACGpB,EAAA,IAAA,MAAA,CAAI,UAAU,mDACb,gBAACiC,EACC,CAAA,SAAA,CAAClC,EAAAA,KAAA,MAAA,CAAI,UAAU,qCACb,SAAA,CAACC,EAAA,IAAA,KAAA,CAAG,UAAU,oCAAoC,SAAa,gBAAA,EAC/DD,EAAA,KAACmC,EAAA,CACC,KAAK,oBACL,QAAQ,OACR,UAAU,+DAEV,SAAA,CAAAlC,EAAA,IAAC,MAAI,CAAA,IAAKJ,EAAa,IAAK,IAAI,mBAAmB,EAAE,oBAAA,CAAA,CAEvD,QACCuC,EAAU,CAAA,YAAa,EAAG,MAAM,cAAc,UAAU,YAAY,EACpExB,GAEGZ,EAAA,KAAAqC,WAAA,CAAA,SAAA,CAAArC,EAAA,KAACmC,EAAA,CACC,KAAK,kBACL,QAAQ,OACR,UAAU,yEAEV,SAAA,CAAAlC,EAAA,IAACF,EAAY,EAAA,EAAE,cAAA,CAAA,CAEjB,QACCqC,EAAU,CAAA,YAAa,EAAG,MAAM,cAAc,UAAU,YAAY,CAAA,EACvE,EAEFnC,EAAAA,IAAC,MAAI,CAAA,UAAU,YACb,SAAAA,EAAA,IAACqC,EAAA,CACC,cAAeb,EACf,eAAAd,EACA,gBAAAiB,EACA,oBAAAE,EACA,cAAAb,EACA,WAAAL,CAAA,CAAA,EAEJ,CAAA,EACF,EACAZ,EAAA,KAACuC,EAAA,CACC,aAAa,OACb,UAAU,uCACV,MAAOzB,EACP,cAAgB0B,GAAUZ,EAAgBY,CAAK,EAE/C,SAAA,CAAAxC,OAACyC,GAAS,UAAW,eAAe7B,EAAa,cAAgB,aAAa,GAC5E,SAAA,CAAAX,EAAA,IAACyC,EAAA,CACC,MAAM,OACN,KAAK,gBACL,KAAOzC,EAAAA,IAAA,MAAA,CAAI,IAAKL,EAAS,IAAK,IAAI,OAAO,CAAA,CAC3C,EACAK,EAAA,IAACyC,EAAA,CACC,MAAM,mBACN,KAAK,mBACL,KAAOzC,EAAAA,IAAA,MAAA,CAAI,IAAKJ,EAAa,IAAK,IAAI,mBAAmB,CAAA,CAC3D,EACAI,EAAA,IAACyC,EAAA,CACC,MAAM,wBACN,KAAK,wBACL,KAAOzC,EAAAA,IAAA,MAAA,CAAI,IAAKH,EAAe,IAAK,IAAI,wBAAwB,CAAA,CAClE,EACCc,GACCX,EAAA,IAACyC,EAAA,CACC,MAAM,aACN,KAAK,aACL,WAAO3C,EAAY,EAAA,CAAA,CACrB,CAAA,EAEJ,EACAE,EAAAA,IAAC0C,EAAY,CAAA,MAAM,OACjB,SAAA1C,EAAA,IAACqC,EAAA,CACC,cAAAf,EACA,eAAAZ,EACA,gBAAAiB,EACA,oBAAAE,EACA,cAAAb,EACA,WAAAL,CAAA,CAAA,EAEJ,QACC+B,EAAY,CAAA,MAAM,mBACjB,SAAA1C,MAAC2C,GAAwB,CAAA,EAC3B,EACA3C,EAAAA,IAAC0C,EAAY,CAAA,MAAM,wBACjB,SAAA1C,EAAA,IAAC4C,EAAA,CACC,oBAAAf,EACA,cAAAb,EACA,WAAAL,CAAA,CAAA,EAEJ,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CACF,CAAA,CAEJ,EAEMkC,EAAkB,CAAC,CAAE,MAAAC,EAAO,IAAAC,KAE9B/C,EAAAA,IAAC,KACC,CAAA,SAAAA,EAAAA,IAACkC,EAAK,CAAA,QAAQ,SAAS,KAAMa,EAAK,UAAU,oBACzC,SAAAD,CAAA,CACH,CACF,CAAA,EAIET,EAAsB,CAAC,CAC3B,cAAAf,EACA,eAAAZ,EACA,gBAAAiB,EACA,oBAAAE,EACA,cAAAb,EACA,WAAAL,CACF,IASIZ,EAAA,KAAC,MAAI,CAAA,UAAU,0BACb,SAAA,CAACA,EAAAA,KAAA,UAAA,CAAQ,UAAU,gBACjB,SAAA,CAACC,EAAA,IAAA,KAAA,CAAG,UAAU,+DAA+D,SAE7E,wBAAA,EACAA,EAAAA,IAAC,OAAI,UAAU,4FACZ,WAAc,IAAI,CAACoB,EAAM4B,IACxBhD,EAAA,IAACiD,EAAA,CAEC,KAAA7B,EACA,oBAAAS,EACA,WAAYb,EAAc,SAASI,EAAK,EAAE,EAC1C,WAAAT,EACA,cAAeK,EAAc,OAAS,GAAK,CAACA,EAAc,SAASI,EAAK,EAAE,CAAA,EALrE4B,CAOR,CAAA,EACH,EACChD,MAAA,MAAA,CAAI,UAAU,oDACb,eAACkD,EAAS,CAAA,UAAU,oBAClB,SAAAlD,EAAA,IAACmD,EACE,CAAA,SAAA7B,EAAc,IAAI,CAACF,EAAM4B,IACxBhD,EAAA,IAACoD,EAAA,CAEC,UAAW,uBAAuBJ,IAAU1B,EAAc,OAAS,EAAI,YAAc,EAAE,GAEvF,SAAAtB,EAAA,IAACiD,EAAA,CACC,KAAA7B,EACA,oBAAAS,EACA,WAAYb,EAAc,SAASI,EAAK,EAAE,EAC1C,WAAAT,CAAA,CACF,CAAA,EARKqC,CAAA,CAUR,CACH,CAAA,CACF,CAAA,EACF,EACAjD,EAAA,KAACsD,EAAA,CACC,KAAK,yBACL,QAAS,IAAM1B,EAAgB,uBAAuB,EACtD,QAAQ,UACR,UAAU,iDACX,SAAA,CAAA,wBACiB2B,EAAiB,EAAA,CAAA,CAAA,CACnC,CAAA,EACF,EACAvD,EAAAA,KAAC,MAAI,CAAA,UAAU,mGACb,SAAA,CAAAC,EAAA,IAACuD,EAAA,CACC,MAAM,gBACN,QACExD,EAAA,KAAC,MAAI,CAAA,UAAU,2BACb,SAAA,CAACA,EAAAA,KAAA,MAAA,CAAI,UAAU,gBACb,SAAA,CAACA,EAAAA,KAAA,MAAA,CAAI,UAAU,4BACb,SAAA,CAACC,EAAA,IAAA,IAAA,CAAE,UAAU,0DAA0D,SAAG,MAAA,EAC1ED,EAAAA,KAAC,MAAI,CAAA,UAAU,iCACb,SAAA,CAACC,EAAA,IAAA,IAAA,CAAE,UAAU,+BAA+B,SAAgB,mBAAA,EAC3DA,EAAA,IAAA,IAAA,CAAE,UAAU,oBAAoB,SAGjC,oFAAA,EACAD,EAAAA,KAAC,KAAG,CAAA,UAAU,sBACZ,SAAA,CAAAC,EAAA,IAAC6C,EAAgB,CAAA,MAAM,mBAAmB,IAAI,oBAAoB,EAClE7C,EAAA,IAAC6C,EAAA,CACC,MAAM,2BACN,IAAI,2BAAA,CACN,EACC7C,EAAA,IAAA6C,EAAA,CAAgB,MAAM,mBAAmB,IAAI,8BAA8B,EAC3E7C,EAAA,IAAA6C,EAAA,CAAgB,MAAM,YAAY,IAAI,iBAAiB,CAAA,EAC1D,CAAA,EACF,CAAA,EACF,EACA7C,EAAA,IAACmC,EAAA,CACC,YAAa,EACb,MAAM,uCACN,UAAU,WAAA,CACZ,CAAA,EACF,EACAnC,EAAA,IAACwD,EAAA,CACC,OAAO,MACP,MAAM,8BACN,YAAY,gIACZ,KAAK,gCACL,OAAQ,EAAA,CACV,EACAxD,EAAA,IAACwD,EAAA,CACC,OAAO,MACP,MAAM,yBACN,YAAY,kGACZ,KAAK,qBACL,OAAQ,EAAA,CACV,EACAxD,EAAA,IAACwD,EAAA,CACC,OAAO,MACP,MAAM,oBACN,YAAY,2IACZ,KAAK,gCACL,OAAQ,EAAA,CACV,CAAA,EACF,CAAA,CAEJ,EACAxD,EAAA,IAACuD,EAAA,CACC,MAAM,kBACN,QACExD,EAAA,KAAC,MAAI,CAAA,UAAU,oDACZ,SAAA,CAAeW,EAAA,IAAI,CAAC+C,EAAST,IAC5BhD,EAAA,IAAC0D,EAAA,CAEC,QAAAD,EACA,QAAST,IAAU,EACnB,OAAQA,IAAUtC,EAAe,OAAS,CAAA,EAHrCsC,CAAA,CAKR,EACDjD,EAAA,KAACsD,EAAA,CACC,KAAK,YACL,QAAQ,UACR,UAAU,4CACV,QAAS,IAAM,CACb,OAAO,SAAS,KAAO,WACzB,EACD,SAAA,CAAA,mBACYC,EAAiB,EAAA,CAAA,CAAA,CAC9B,CAAA,EACF,CAAA,CAEJ,CAAA,EACF,QACCK,EAAc,EAAA,CACjB,CAAA,CAAA,EAIEhB,EAA0B,IAAM,CACpC,KAAM,CAACiB,EAAaC,CAAc,EAAI9C,EAAAA,SAA6B,MAAS,EAE5E+C,OAAAA,EAAAA,UAAU,IAAM,EACK,SAAY,CACvB,MAAAC,EAAc,MAAMC,IACXH,EAAA,IAAME,GAAa,EAAE,CAAA,IAIxC,EAAG,CAAE,CAAA,EAGH/D,EAAA,IAAC,OAAI,UAAU,YACb,eAACiE,EAAM,CAAA,YAAAL,EAA0B,WAAW,eAAgB,CAAA,CAC9D,CAAA,CAEJ,EAEMhB,EAAuB,CAAC,CAC5B,oBAAAf,EACA,cAAAb,EACA,WAAAL,CACF,IAMKX,EAAAA,IAAA,MAAA,CAAI,UAAU,YACb,SAACA,EAAAA,IAAA,MAAA,CAAI,UAAU,6DACZ,SAAMmB,EAAA,IAAI,CAACC,EAAM4B,IAChBhD,EAAA,IAACiD,EAAA,CAEC,KAAA7B,EACA,oBAAAS,EACA,WAAYb,EAAc,SAASI,EAAK,EAAE,EAC1C,WAAAT,CAAA,EAJKqC,CAAA,CAMR,EACH,CACF,CAAA,EAIEP,EAA0B,CAAC,CAC/B,MAAAF,EACA,KAAA2B,EACA,KAAAC,CACF,IAMKpE,EAAAA,KAAAqE,EAAA,CAAY,MAAA7B,EAAc,UAAU,mDACnC,SAAA,CAACvC,EAAA,IAAA,MAAA,CAAI,UAAU,gBAAiB,SAAKmE,EAAA,EACpCnE,EAAA,IAAA,OAAA,CAAK,UAAU,yBAA0B,SAAKkE,EAAA,CACjD,CAAA,CAAA,EAIEV,EAAe,CAAC,CACpB,OAAAa,EACA,MAAAvB,EACA,YAAAwB,EACA,KAAAC,EACA,OAAAC,CACF,IAQIzE,EAAA,KAAC,MAAI,CAAA,UAAU,gBACb,SAAA,CAAAA,OAACmC,GAAK,QAAQ,QAAQ,UAAU,4BAA4B,KAAMqC,EAChE,SAAA,CAACvE,EAAA,IAAA,IAAA,CAAE,UAAU,0DAA2D,SAAOqE,EAAA,EAC/EtE,EAAAA,KAAC,MAAI,CAAA,UAAU,iCACb,SAAA,CAACC,EAAA,IAAA,IAAA,CAAE,UAAU,+BAAgC,SAAM8C,EAAA,EAClD9C,EAAA,IAAA,IAAA,CAAE,UAAU,oBAAqB,SAAYsE,EAAA,CAAA,EAChD,QACC,MAAI,CAAA,UAAU,gBACb,SAAAtE,MAACsD,GAAiB,CAAA,EACpB,CAAA,EACF,EACC,CAACkB,GACAxE,EAAA,IAACmC,EAAA,CACC,YAAa,EACb,MAAM,uCACN,UAAU,WAAA,CACZ,CAEJ,CAAA,CAAA,EAIEuB,EAAc,CAAC,CACnB,QAAAD,EACA,QAAAgB,EACA,OAAAD,CACF,IAMIzE,EAAA,KAAC,MAAI,CAAA,UAAU,gBACb,SAAA,CAAAA,EAAA,KAACmC,EAAA,CACC,QAAQ,QACR,UAAU,6EACV,KAAMuB,EAAQ,IAEb,SAAA,CACCgB,GAAAzE,EAAA,IAAC,MAAA,CACC,IAAKyD,EAAQ,uBACb,IAAKA,EAAQ,MACb,UAAU,kDAAA,CACZ,EAEF1D,EAAAA,KAAC,MAAI,CAAA,UAAU,gBACb,SAAA,CAAAC,EAAA,IAAC,IAAE,CAAA,UAAU,+BAAgC,SAAAyD,EAAQ,MAAM,EAC1DzD,EAAA,IAAA,IAAA,CAAE,UAAU,2CAA4C,WAAQ,QAAQ,EACxEA,EAAA,IAAA,MAAA,CAAI,UAAU,uCAAuC,SAAW,cAAA,CAAA,EACnE,EACAA,EAAA,IAAC,MAAA,CACC,IAAKyD,EAAQ,uBACb,IAAKA,EAAQ,MACb,UAAU,2EACV,MAAO,IACP,OAAQ,EAAA,CACV,CAAA,CAAA,CACF,EACC,CAACe,GACAxE,EAAA,IAACmC,EAAA,CACC,YAAa,EACb,MAAM,uCACN,UAAU,mCAAA,CACZ,CAEJ,CAAA,CAAA,EAIEoB,EAA0B,CAAC,CAC/B,MAAAT,EACA,QAAA4B,CACF,IAKI3E,EAAA,KAAC,MAAI,CAAA,UAAU,+JACb,SAAA,CAACC,EAAA,IAAA,KAAA,CAAG,UAAU,iDAAkD,SAAM8C,EAAA,EACrE4B,CACH,CAAA,CAAA,EAIEzB,EAAuB,CAAC,CAC5B,KAAA7B,EACA,oBAAAS,EACA,WAAA8C,EACA,WAAAhE,EACA,cAAAiE,EAAgB,EAClB,IAQI5E,EAAA,IAAC6E,EAAA,CACC,KAAAzD,EACA,WAAW,QACX,aAAcT,EACd,gBAAiBkB,EACjB,WAAA8C,EACA,UAAWC,EAAgB,aAAe,EAAA,CAAA"}
01.
529 Plan Metrics
\n Access these key 529 plan data insights available only through Saving For\n College\n
{number}
{title}
{description}
{article.title}
{article.snippet}