six-degrees 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +3 -3
- package/.next/standalone/.next/prerender-manifest.json +14 -14
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +20 -19
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +20 -19
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +16 -15
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/admin-delete/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/admin-update/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/bridges/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/bulk-import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/company-scores/legacy/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/company-scores/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/connections/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/export/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/import/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/restart/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/reveal/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/data/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/delete-cluster/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/ingest/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/network/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/notifications/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/outreach/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/queue/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/scraper/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/settings/sector-preview/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/settings/sector-suggestions/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/setup-profile/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/social/crm/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/social/messages/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/social/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/unlock/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/update/route.js +1 -1
- package/.next/standalone/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/update-images/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/users/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/avatars/[file]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/import/page.js +1 -1
- package/.next/standalone/.next/server/app/import/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/import/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/import.html +1 -1
- package/.next/standalone/.next/server/app/import.rsc +24 -23
- package/.next/standalone/.next/server/app/import.segments/_full.segment.rsc +24 -23
- package/.next/standalone/.next/server/app/import.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/import.segments/import/__PAGE__.segment.rsc +18 -17
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +22 -21
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +18 -17
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +22 -21
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/launch/page.js +1 -1
- package/.next/standalone/.next/server/app/launch/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/launch/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/launch.html +2 -2
- package/.next/standalone/.next/server/app/launch.rsc +24 -23
- package/.next/standalone/.next/server/app/launch.segments/_full.segment.rsc +24 -23
- package/.next/standalone/.next/server/app/launch.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/launch.segments/launch/__PAGE__.segment.rsc +18 -17
- package/.next/standalone/.next/server/app/page.js +1 -1
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/paths/page.js +1 -1
- package/.next/standalone/.next/server/app/paths/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/paths/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/paths.html +1 -1
- package/.next/standalone/.next/server/app/paths.rsc +24 -23
- package/.next/standalone/.next/server/app/paths.segments/_full.segment.rsc +24 -23
- package/.next/standalone/.next/server/app/paths.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/paths.segments/paths/__PAGE__.segment.rsc +18 -17
- package/.next/standalone/.next/server/app/profile/page.js +1 -1
- package/.next/standalone/.next/server/app/profile/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/profile/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/profile.html +1 -1
- package/.next/standalone/.next/server/app/profile.rsc +24 -23
- package/.next/standalone/.next/server/app/profile.segments/_full.segment.rsc +24 -23
- package/.next/standalone/.next/server/app/profile.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/profile.segments/profile/__PAGE__.segment.rsc +18 -17
- package/.next/standalone/.next/server/app/queue/page.js +1 -1
- package/.next/standalone/.next/server/app/queue/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/queue/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/queue.html +1 -1
- package/.next/standalone/.next/server/app/queue.rsc +24 -23
- package/.next/standalone/.next/server/app/queue.segments/_full.segment.rsc +24 -23
- package/.next/standalone/.next/server/app/queue.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/queue.segments/queue/__PAGE__.segment.rsc +18 -17
- package/.next/standalone/.next/server/app/scores/page.js +1 -1
- package/.next/standalone/.next/server/app/scores/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/scores/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/scores.html +1 -1
- package/.next/standalone/.next/server/app/scores.rsc +24 -23
- package/.next/standalone/.next/server/app/scores.segments/_full.segment.rsc +24 -23
- package/.next/standalone/.next/server/app/scores.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/scores.segments/scores/__PAGE__.segment.rsc +18 -17
- package/.next/standalone/.next/server/app/settings/page.js +1 -1
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings.html +1 -1
- package/.next/standalone/.next/server/app/settings.rsc +24 -23
- package/.next/standalone/.next/server/app/settings.segments/_full.segment.rsc +24 -23
- package/.next/standalone/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +18 -17
- package/.next/standalone/.next/server/app/setup/page.js +1 -1
- package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/setup.html +1 -1
- package/.next/standalone/.next/server/app/setup.rsc +24 -23
- package/.next/standalone/.next/server/app/setup.segments/_full.segment.rsc +24 -23
- package/.next/standalone/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +18 -17
- package/.next/standalone/.next/server/app/social/page.js +1 -1
- package/.next/standalone/.next/server/app/social/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/social/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/social.html +1 -1
- package/.next/standalone/.next/server/app/social.rsc +24 -23
- package/.next/standalone/.next/server/app/social.segments/_full.segment.rsc +24 -23
- package/.next/standalone/.next/server/app/social.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/social.segments/social/__PAGE__.segment.rsc +18 -17
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-rnla2._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00la_y0._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05_3-22._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07t47cm._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cj5jqc._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e0fei3._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljnyho._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o5-tcg._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qrnous._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t3v1a1._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0um1uey._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0wmexuc._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0xu34sz._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__133knx1._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__13dx4sd._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__14ou7j5._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__15-17hl._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__15wc9e-._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__16iu0hv._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__18bcnu4._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__19b7mig._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1bbcwub._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1eris29._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1gjo_cq._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1kbl21f._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1qcm08_._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1rphsdk._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1tir0vc._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1w25q0m._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__20rwfdw._.js +2 -2
- package/.next/standalone/.next/server/chunks/_1_fynia._.js +7 -7
- package/.next/standalone/.next/server/chunks/_1itd1o_._.js +2 -2
- package/.next/standalone/.next/server/chunks/lib_0851sk0._.js +5 -5
- package/.next/standalone/.next/server/chunks/lib_1q7p2ro._.js +5 -5
- package/.next/standalone/.next/server/chunks/lib_1r6l86l._.js +5 -5
- package/.next/standalone/.next/server/chunks/lib_db-client_15le7cw.js +9 -9
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08oxiqh._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_03l7vge._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_08g31gm._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0gk_ofx._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0nwsf93._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0vho1lb._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0jdkqgi._.js → _1-658fq._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_1bc46kz._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_1f_n00p._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_1fm1ih_._.js +9 -0
- package/.next/standalone/.next/server/chunks/ssr/_1k2nmbw._.js +9 -0
- package/.next/standalone/.next/server/chunks/ssr/_2105jz8._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_141w189._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_components_0t908t-._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/app_components_0uuff77._.js +13 -0
- package/.next/standalone/.next/server/chunks/ssr/app_components_1j3q-h5._.js +13 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0gtv9jb._.js → app_components_CompanyScores_1g0mytz.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_components_settings_SectorPicker_1c-29qw.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_import_page_1fmu6_l.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_page_1fazqbf.js +14 -12
- package/.next/standalone/.next/server/chunks/ssr/app_paths_page_1ol90m7.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_profile_page_0u3-l5y.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_queue_page_0c6znd6.js +6 -6
- package/.next/standalone/.next/server/chunks/ssr/app_settings_page_1f8mjj_.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_setup_page_1-282zx.js +4 -4
- package/.next/standalone/.next/server/chunks/ssr/app_social_page_0h7zxda.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{lib_0i8v-s3._.js → lib_1c4ieuw._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/lib_galaxy-lab_108_lu-.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/.next/server/middleware-manifest.json +5 -5
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/02pq76u7y4v9-.js +22 -0
- package/.next/standalone/.next/static/chunks/0cmq0exd4d0h9.js +1 -0
- package/.next/{static/chunks/2wgz9ietkqqe6.js → standalone/.next/static/chunks/0i02yxppzds1o.js} +1 -1
- package/.next/standalone/.next/static/chunks/0m_p4k-q2qh--.js +1 -0
- package/.next/standalone/.next/static/chunks/0oyslj62jkubd.js +1 -0
- package/.next/standalone/.next/static/chunks/{1x_ysly42-teq.css → 0vo-l8hxneba6.css} +1 -1
- package/.next/{static/chunks/3sowbvbaj1s6n.js → standalone/.next/static/chunks/0ws7zy0w57ufi.js} +1 -1
- package/.next/standalone/.next/static/chunks/0yh8z2tbrc5i_.js +1 -0
- package/.next/standalone/.next/static/chunks/172e10mi-tpo_.js +34 -0
- package/.next/standalone/.next/static/chunks/1ei5vbe2uw6fl.js +1 -0
- package/.next/standalone/.next/static/chunks/1f7_pl_wq7lh3.js +11 -0
- package/.next/standalone/.next/static/chunks/1jzbe7zdx9vbj.js +2 -0
- package/.next/standalone/.next/static/chunks/1m3017gp790pw.js +45 -0
- package/.next/standalone/.next/static/chunks/1t20e8u0st7ep.js +1 -0
- package/.next/standalone/.next/static/chunks/2-ch9rm27eril.js +11 -0
- package/.next/standalone/.next/static/chunks/2ldv-v3s9yaif.js +1 -0
- package/.next/standalone/.next/static/chunks/3bp284gjf7dyq.js +1 -0
- package/.next/standalone/.next/static/chunks/3k1f6clbn3gj3.js +7 -0
- package/.next/standalone/.next/static/chunks/3l4t8je6iguzc.js +1 -0
- package/.next/standalone/.next/static/chunks/{0muwt9bykzr-1.js → 3tplzuc9jk-tl.js} +1 -1
- package/.next/standalone/.next/static/chunks/42m0bqr8pbovz.js +11 -0
- package/.next/standalone/CHANGELOG.md +61 -0
- package/.next/standalone/README.md +22 -8
- package/.next/standalone/app/api/scraper/route.js +40 -3
- package/.next/standalone/app/api/update/route.js +12 -6
- package/.next/standalone/app/components/AppHeader.js +257 -0
- package/.next/standalone/app/components/Avatar.js +2 -1
- package/.next/standalone/app/components/ChainView.js +12 -12
- package/.next/standalone/app/components/FilterPanel.js +20 -12
- package/.next/standalone/app/components/ForceGraph.js +163 -25
- package/.next/standalone/app/components/GalaxyLab.js +43 -12
- package/.next/standalone/app/components/GridView.js +4 -4
- package/.next/standalone/app/components/LinkedInLimits.js +2 -1
- package/.next/standalone/app/components/ListView.js +3 -3
- package/.next/standalone/app/components/NoteDetail.js +2 -1
- package/.next/standalone/app/components/OnboardingGate.js +2 -2
- package/.next/standalone/app/components/OutlinkQuest.js +2 -1
- package/.next/standalone/app/components/PathsAnalyzer.js +3 -2
- package/.next/standalone/app/components/PeopleMap.js +2 -1
- package/.next/standalone/app/components/RingsView.js +3 -3
- package/.next/standalone/app/components/ScanTrail.js +85 -0
- package/.next/standalone/app/components/SeparationView.js +100 -77
- package/.next/standalone/app/components/Sidebar.js +4 -4
- package/.next/standalone/app/components/TheirCircle.js +2 -1
- package/.next/standalone/app/components/ThemeLoader.js +9 -0
- package/.next/standalone/app/components/UpdatePanel.js +20 -2
- package/.next/standalone/app/components/settings/AppearanceSection.js +226 -0
- package/.next/standalone/app/components/settings/NetworkHealthSection.js +2 -1
- package/.next/standalone/app/components/ui.js +2 -1
- package/.next/standalone/app/globals.css +70 -2
- package/.next/standalone/app/import/page.js +3 -3
- package/.next/standalone/app/layout.js +11 -2
- package/.next/standalone/app/page.js +69 -215
- package/.next/standalone/app/paths/page.js +8 -21
- package/.next/standalone/app/profile/page.js +11 -10
- package/.next/standalone/app/queue/page.js +8 -21
- package/.next/standalone/app/scores/page.js +1 -1
- package/.next/standalone/app/settings/page.js +7 -3
- package/.next/standalone/app/setup/page.js +83 -88
- package/.next/standalone/app/social/Crm.js +2 -1
- package/.next/standalone/app/social/SocialHub.js +2 -2
- package/.next/standalone/app/social/page.js +1 -1
- package/.next/standalone/lib/data-import.js +1 -0
- package/.next/standalone/lib/galaxy-export.js +2 -1
- package/.next/standalone/lib/galaxy-lab.js +24 -8
- package/.next/standalone/lib/level.js +51 -0
- package/.next/standalone/lib/release.js +13 -7
- package/.next/standalone/lib/scanner-python.js +38 -8
- package/.next/standalone/lib/scraper-client.js +2 -1
- package/.next/standalone/lib/separation.js +4 -2
- package/.next/standalone/lib/theme-store.js +61 -0
- package/.next/standalone/lib/themes.js +186 -0
- package/.next/standalone/lib/tiers.js +2 -8
- package/.next/standalone/package-lock.json +2 -2
- package/.next/standalone/package.json +4 -4
- package/.next/standalone/scripts/build-desktop.mjs +325 -0
- package/.next/standalone/scripts/build-site.mjs +85 -15
- package/.next/standalone/scripts/gen-test-network.mjs +93 -0
- package/.next/standalone/scripts/next.mjs +20 -0
- package/.next/standalone/scripts/readme_buttons.py +3 -0
- package/.next/standalone/scripts/requirements.txt +18 -1
- package/.next/standalone/scripts/site-news.mjs +54 -9
- package/.next/standalone/scripts/smoke-desktop.mjs +177 -0
- package/.next/standalone/scripts/windows/six-degrees.iss +100 -0
- package/.next/static/chunks/02pq76u7y4v9-.js +22 -0
- package/.next/static/chunks/0cmq0exd4d0h9.js +1 -0
- package/.next/{standalone/.next/static/chunks/2wgz9ietkqqe6.js → static/chunks/0i02yxppzds1o.js} +1 -1
- package/.next/static/chunks/0m_p4k-q2qh--.js +1 -0
- package/.next/static/chunks/0oyslj62jkubd.js +1 -0
- package/.next/static/chunks/{1x_ysly42-teq.css → 0vo-l8hxneba6.css} +1 -1
- package/.next/{standalone/.next/static/chunks/3sowbvbaj1s6n.js → static/chunks/0ws7zy0w57ufi.js} +1 -1
- package/.next/static/chunks/0yh8z2tbrc5i_.js +1 -0
- package/.next/static/chunks/172e10mi-tpo_.js +34 -0
- package/.next/static/chunks/1ei5vbe2uw6fl.js +1 -0
- package/.next/static/chunks/1f7_pl_wq7lh3.js +11 -0
- package/.next/static/chunks/1jzbe7zdx9vbj.js +2 -0
- package/.next/static/chunks/1m3017gp790pw.js +45 -0
- package/.next/static/chunks/1t20e8u0st7ep.js +1 -0
- package/.next/static/chunks/2-ch9rm27eril.js +11 -0
- package/.next/static/chunks/2ldv-v3s9yaif.js +1 -0
- package/.next/static/chunks/3bp284gjf7dyq.js +1 -0
- package/.next/static/chunks/3k1f6clbn3gj3.js +7 -0
- package/.next/static/chunks/3l4t8je6iguzc.js +1 -0
- package/.next/static/chunks/{0muwt9bykzr-1.js → 3tplzuc9jk-tl.js} +1 -1
- package/.next/static/chunks/42m0bqr8pbovz.js +11 -0
- package/CHANGELOG.md +61 -0
- package/README.md +22 -8
- package/lib/data-import.js +1 -0
- package/lib/galaxy-export.js +2 -1
- package/lib/galaxy-lab.js +24 -8
- package/lib/level.js +51 -0
- package/lib/release.js +13 -7
- package/lib/scanner-python.js +38 -8
- package/lib/scraper-client.js +2 -1
- package/lib/separation.js +4 -2
- package/lib/theme-store.js +61 -0
- package/lib/themes.js +186 -0
- package/lib/tiers.js +2 -8
- package/package.json +4 -4
- package/scripts/requirements.txt +18 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ljcioj._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16hs8kw._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_01kacen._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0xi-fbs._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0xmwmfv._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_1-b9hj7._.js +0 -9
- package/.next/standalone/.next/server/chunks/ssr/_112ewem._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_16ab63q._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_1fxm0-s._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_1ra1d3r._.js +0 -9
- package/.next/standalone/.next/server/chunks/ssr/app_components_ui_0pdmz2z.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/lib_13rapwj._.js +0 -3
- package/.next/standalone/.next/static/chunks/03bziijw5srol.js +0 -1
- package/.next/standalone/.next/static/chunks/0bgq8wmopl_ig.js +0 -7
- package/.next/standalone/.next/static/chunks/0ezus6p2eb-vg.js +0 -1
- package/.next/standalone/.next/static/chunks/0g_fy2034bp0x.js +0 -34
- package/.next/standalone/.next/static/chunks/0q5dru4q6gxl5.js +0 -22
- package/.next/standalone/.next/static/chunks/0w-byiwb2zax8.js +0 -2
- package/.next/standalone/.next/static/chunks/1g7jcovdejc9-.js +0 -1
- package/.next/standalone/.next/static/chunks/1i51yylxdzht1.js +0 -1
- package/.next/standalone/.next/static/chunks/1zf8swaasjf1e.js +0 -43
- package/.next/standalone/.next/static/chunks/2dwtoszeq91us.js +0 -1
- package/.next/standalone/.next/static/chunks/2rqtpccruavf2.js +0 -1
- package/.next/standalone/.next/static/chunks/30x3oq_st7a5r.js +0 -1
- package/.next/standalone/.next/static/chunks/355ryio1b7sm1.js +0 -1
- package/.next/standalone/.next/static/chunks/3ap5hgma7n0o7.js +0 -1
- package/.next/standalone/.next/static/chunks/3fci6qi39-1n5.js +0 -1
- package/.next/static/chunks/03bziijw5srol.js +0 -1
- package/.next/static/chunks/0bgq8wmopl_ig.js +0 -7
- package/.next/static/chunks/0ezus6p2eb-vg.js +0 -1
- package/.next/static/chunks/0g_fy2034bp0x.js +0 -34
- package/.next/static/chunks/0q5dru4q6gxl5.js +0 -22
- package/.next/static/chunks/0w-byiwb2zax8.js +0 -2
- package/.next/static/chunks/1g7jcovdejc9-.js +0 -1
- package/.next/static/chunks/1i51yylxdzht1.js +0 -1
- package/.next/static/chunks/1zf8swaasjf1e.js +0 -43
- package/.next/static/chunks/2dwtoszeq91us.js +0 -1
- package/.next/static/chunks/2rqtpccruavf2.js +0 -1
- package/.next/static/chunks/30x3oq_st7a5r.js +0 -1
- package/.next/static/chunks/355ryio1b7sm1.js +0 -1
- package/.next/static/chunks/3ap5hgma7n0o7.js +0 -1
- package/.next/static/chunks/3fci6qi39-1n5.js +0 -1
- /package/.next/standalone/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_ssgManifest.js +0 -0
- /package/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_buildManifest.js +0 -0
- /package/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{I-cj79yE2IZ8taX2dZGp3 → dQUvvVSXqbkEFC3-CNcwT}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,68074,e=>{"use strict";var t=e.i(43476),n=e.i(71645),o=e.i(7837),i=e.i(65084),r=e.i(22016);let s={S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},l={background:"rgba(255,255,255,0.03)",border:"1px solid rgba(255,255,255,0.08)",borderRadius:16,padding:24},a={minHeight:"100vh",background:"#0a0a1a",color:"#fff",padding:"56px 24px",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',display:"flex",justifyContent:"center"},d={background:"rgba(255,255,255,0.07)",padding:"2px 6px",borderRadius:5,fontSize:13,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},c={display:"block",textAlign:"center",padding:"15px 20px",borderRadius:12,background:"linear-gradient(135deg,#FFD700,#9B59B6)",color:"#0a0a1a",fontWeight:800,fontSize:15,textDecoration:"none"};e.s(["default",0,function(){let[e,h]=(0,n.useState)(!1),[g,p]=(0,n.useState)(""),[f,u]=(0,n.useState)(null),[x,y]=(0,n.useState)(!1),m=(0,n.useRef)(null);function b(e){if(!e)return;let t=new FileReader;t.onload=e=>(function(e){y(!0),p("");try{let{connections:t,skipped:n}=(0,o.parseConnectionsCsv)(e);if(!(0,o.saveCsvNetwork)(t)){p("That network is too large to hold in this window. LinkedIn allows up to 30,000 connections and this app holds that many, so please report it with your connection count: github.com/blakeb056/six-degrees/issues"),y(!1);return}(0,i.setUser)(o.CSV_USER.id,o.CSV_USER.name);let r={};t.forEach(e=>{r[e.tier]=(r[e.tier]||0)+1}),u({count:t.length,skipped:n,tiers:r})}catch(e){p(e instanceof o.ConnectionsCsvError?e.message:"Could not read that file. Make sure it is Connections.csv from your LinkedIn export.")}y(!1)})(String(e.target.result||"")),t.onerror=()=>p("Could not read that file."),t.readAsText(e)}return f?(0,t.jsx)("div",{style:a,children:(0,t.jsxs)("div",{style:{maxWidth:560,width:"100%"},children:[(0,t.jsx)("div",{style:{fontSize:13,color:"#2ecc71",fontWeight:700,letterSpacing:2,marginBottom:10},children:"IMPORTED"}),(0,t.jsxs)("h1",{style:{fontSize:38,fontWeight:800,margin:"0 0 8px"},children:[f.count.toLocaleString()," connections mapped"]}),(0,t.jsxs)("p",{style:{color:"rgba(255,255,255,0.45)",margin:"0 0 28px",lineHeight:1.6},children:["Scored on seniority and company, sorted into tiers.",f.skipped>0&&` ${f.skipped} row${1===f.skipped?"":"s"} skipped (blank or duplicate).`]}),(0,t.jsxs)("div",{style:{...l,marginBottom:20},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#666",letterSpacing:2,marginBottom:14},children:"YOUR TIERS"}),["S","A","B","C","D"].map(e=>{let n=f.tiers[e]||0,o=f.count?n/f.count*100:0;return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,marginBottom:8},children:[(0,t.jsx)("span",{style:{width:16,color:s[e],fontWeight:800},children:e}),(0,t.jsx)("div",{style:{flex:1,height:8,borderRadius:4,background:"rgba(255,255,255,0.05)",overflow:"hidden"},children:(0,t.jsx)("div",{style:{width:`${o}%`,height:"100%",background:s[e],borderRadius:4}})}),(0,t.jsx)("span",{style:{width:46,textAlign:"right",color:"rgba(255,255,255,0.6)",fontSize:13},children:n})]},e)})]}),(0,t.jsx)(r.default,{href:"/",style:c,children:"See your galaxy →"}),(0,t.jsx)("p",{style:{color:"#555",fontSize:12,marginTop:18,lineHeight:1.6},children:"Nothing was uploaded or saved: this lives only in this window (or browser tab), and closing it clears it."})]})}):(0,t.jsx)("div",{style:a,children:(0,t.jsxs)("div",{style:{maxWidth:620,width:"100%"},children:[(0,t.jsxs)("h1",{style:{fontSize:40,fontWeight:800,margin:"0 0 10px",letterSpacing:-1},children:["Map ",(0,t.jsx)("span",{style:{background:"linear-gradient(135deg,#FFD700,#9B59B6,#3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"your"})," network"]}),(0,t.jsxs)("p",{style:{color:"rgba(255,255,255,0.45)",margin:"0 0 30px",lineHeight:1.6,fontSize:16},children:["Drop LinkedIn’s official ",(0,t.jsx)("code",{style:d,children:"Connections.csv"})," below. It is read in your browser, scored, and drawn as a galaxy — no account, no upload, nothing stored."]}),(0,t.jsxs)("div",{onDragOver:e=>{e.preventDefault(),h(!0)},onDragLeave:()=>h(!1),onDrop:e=>{e.preventDefault(),h(!1),b(e.dataTransfer.files?.[0])},onClick:()=>m.current?.click(),style:{...l,padding:"48px 24px",textAlign:"center",cursor:"pointer",marginBottom:16,borderStyle:"dashed",borderColor:e?"#FFD700":"rgba(255,255,255,0.12)",background:e?"rgba(255,215,0,0.05)":l.background,transition:"all 0.15s ease"},children:[(0,t.jsx)("div",{style:{fontSize:32,marginBottom:10},children:"📄"}),(0,t.jsx)("div",{style:{fontWeight:700,fontSize:17,marginBottom:6},children:x?"Reading…":"Drop Connections.csv here"}),(0,t.jsx)("div",{style:{color:"#666",fontSize:13},children:"or click to choose the file"}),(0,t.jsx)("input",{ref:m,type:"file",accept:".csv,text/csv",style:{display:"none"},onChange:e=>b(e.target.files?.[0])})]}),g&&(0,t.jsx)("div",{style:{background:"rgba(255,59,59,0.08)",border:"1px solid rgba(255,59,59,0.25)",borderRadius:12,padding:16,color:"#ff8080",fontSize:14,lineHeight:1.6,marginBottom:16},children:g}),(0,t.jsxs)("div",{style:{...l,marginBottom:16},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#666",letterSpacing:2,marginBottom:14},children:"HOW TO GET THE FILE"}),(0,t.jsxs)("ol",{style:{margin:0,paddingLeft:20,color:"rgba(255,255,255,0.6)",fontSize:14,lineHeight:2},children:[(0,t.jsxs)("li",{children:["LinkedIn → ",(0,t.jsx)("strong",{style:{color:"#fff"},children:"Settings & Privacy → Data privacy → Get a copy of your data"})]}),(0,t.jsxs)("li",{children:["Pick ",(0,t.jsx)("strong",{style:{color:"#fff"},children:"Connections"})," and request the archive"]}),(0,t.jsx)("li",{children:"LinkedIn emails a download link, usually within ~10 minutes"}),(0,t.jsxs)("li",{children:["Unzip it and drop ",(0,t.jsx)("code",{style:d,children:"Connections.csv"})," above"]})]})]}),(0,t.jsxs)("div",{style:{...l,marginBottom:16},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#2ecc71",letterSpacing:2,marginBottom:10},children:"PRIVATE BY DESIGN"}),(0,t.jsxs)("p",{style:{margin:0,color:"rgba(255,255,255,0.55)",fontSize:14,lineHeight:1.7},children:["Your file never leaves this browser. It is parsed locally, held for this tab only, and never written to any database. The ",(0,t.jsx)("strong",{style:{color:"#fff"},children:"Email Address column is ignored entirely"}),"."]})]}),(0,t.jsxs)("div",{style:{...l,borderColor:"rgba(255,215,0,0.15)"},children:[(0,t.jsx)("div",{style:{fontSize:11,fontWeight:700,color:"#FFD700",letterSpacing:2,marginBottom:10},children:"HONEST CAVEAT"}),(0,t.jsxs)("p",{style:{margin:"0 0 12px",color:"rgba(255,255,255,0.55)",fontSize:14,lineHeight:1.7},children:["LinkedIn’s export contains no profile photos, so everyone renders as initials on a tier-colored circle. It also only covers people you are ",(0,t.jsx)("em",{children:"already"})," connected to — so ",(0,t.jsx)("strong",{style:{color:"#fff"},children:"Degrees"})," and the ",(0,t.jsx)("strong",{style:{color:"#fff"},children:"Outlink queue"})," stay empty, because those map the people you haven’t met yet."]}),(0,t.jsxs)("p",{style:{margin:0,color:"#666",fontSize:13,lineHeight:1.7},children:["Want those? Run the local scanner — it captures 2nd-degree circles and real photos."," ",(0,t.jsx)(r.default,{href:"/setup",style:{color:"#3498DB",textDecoration:"none"},children:"See setup →"})]})]}),(0,t.jsx)("div",{style:{textAlign:"center",marginTop:26},children:(0,t.jsx)(r.default,{href:"/",style:{color:"#555",fontSize:13,textDecoration:"none"},children:"← Back"})})]})})}])}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,5445,e=>{"use strict";var t=e.i(43476),n=e.i(71645),o=e.i(22016),r=e.i(2776),s=e.i(8819);function i(){let[e,o]=(0,n.useState)(null);return((0,n.useEffect)(()=>{fetch("/api/update").then(e=>e.json()).then(o).catch(()=>{})},[]),e)?e.installed?(0,t.jsx)(d,{local:e}):(0,t.jsx)(l,{local:e}):null}async function a(e){let t=await fetch("/api/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),n=await t.json().catch(()=>({}));return{ok:t.ok,d:n}}function l({local:e}){let[o,r]=(0,n.useState)(null),[i,c]=(0,n.useState)(null),[d,h]=(0,n.useState)(null),[u,p]=(0,n.useState)(null);async function g(e){c(e),h(null);try{let{ok:t,d:n}=await a({action:e});if(!t){h(n.error||"Something went wrong."),n.dirty&&r({dirty:n.dirty});return}"check"===e?r(n):(p(n),r(null))}catch(e){h(e.message)}finally{c(null)}}return(0,n.useEffect)(()=>{"updates"===new URLSearchParams(window.location.search).get("check")&&(document.getElementById("updates")?.scrollIntoView({block:"center"}),g("check"),window.history.replaceState(null,"",window.location.pathname))},[]),(0,t.jsxs)(s.Section,{id:"updates",title:"Updates",children:[u?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.Body,{children:["Updated to ",(0,t.jsx)(s.Mono,{children:u.sha})," — “",u.subject,"”."]}),(0,t.jsx)(s.Body,{style:{color:u.needsRestart?"#FFD700":void 0},children:u.needsRestart?"Stop the app in your terminal and start it again — this update changed how it starts.":"The page will pick up most changes on its own. Restart the app if anything looks odd."})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.Body,{children:["You are on ",(0,t.jsx)(s.Mono,{children:e.sha})," — “",e.subject,"”."]}),o&&0===o.behind&&(0,t.jsx)(s.Status,{tone:"ok",children:"You’re up to date."}),o&&o.behind>0&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.Body,{style:{color:"#00ff88"},children:[o.behind," update",1===o.behind?"":"s"," available."]}),(0,t.jsx)("pre",{style:f,children:o.commits.join("\n")})]}),o?.dirty?.length>0&&(0,t.jsxs)(s.Body,{children:["Changed files here:"," ",(0,t.jsx)(s.Mono,{children:o.dirty.join(", ")}),". Commit or discard them first — this will not throw away your work."]}),(0,t.jsxs)(y,{children:[(0,t.jsx)(s.Btn,{onClick:()=>g("check"),disabled:!!i,children:"check"===i?"Checking…":"Check for updates"}),o?.behind>0&&(0,t.jsx)(s.Btn,{onClick:()=>g("pull"),disabled:!!i,primary:!0,children:"pull"===i?"Updating…":`Install ${o.behind} update${1===o.behind?"":"s"}`})]})]}),d&&(0,t.jsx)(s.Body,{style:{color:"#ff7676"},children:d}),(0,t.jsxs)(s.Body,{style:{fontSize:12,color:"#667",marginTop:12},children:["Nothing is checked automatically and nothing about you is sent — this runs the same ",(0,t.jsx)(s.Mono,{children:"git fetch"})," and ",(0,t.jsx)(s.Mono,{children:"git pull"})," you would type yourself."]})]})}let c=["checking","downloading","verifying","preparing","restarting"];function d({local:e}){let o="mac-app"===e.kind,[r,i]=(0,n.useState)(!1),[l,m]=(0,n.useState)(null),[x,b]=(0,n.useState)(null),[w,j]=(0,n.useState)(!1),[k,S]=(0,n.useState)(null),[v,T]=(0,n.useState)(e.job||null),[C,B]=(0,n.useState)(!1),[$,I]=(0,n.useState)(null),[D,E]=(0,n.useState)(null),[R,L]=(0,n.useState)(void 0),[F,A]=(0,n.useState)(0),[z,N]=(0,n.useState)(!1),O=!!(v&&c.includes(v.phase)),W=O&&("restarting"===v.phase||F>0);async function M(){i(!0),m(null),b(null),I(null),E(null),L(void 0),T(e=>e&&c.includes(e.phase)?e:null);try{let{ok:e,d:t}=await a({action:"check-release"});e?(m(t),S(new Date)):b(t.error||"Could not check.")}catch(e){b(e.message)}finally{i(!1)}}async function P(){B(!0),I(null),E(null),L(void 0),A(0),N(!1);try{let{ok:e,d:t}=await a({action:"install-release"});t.job&&T(t.job),!e&&(I(t.error||"The update could not start."),E(t.refusal||null),"fallback"in t&&L(t.fallback))}catch(e){I(e.message)}finally{B(!1)}}async function Y(){try{let{d:e}=await a({action:"cancel-install"});e.job&&T(e.job)}catch{}}async function U(){try{await navigator.clipboard.writeText(e.command),j(!0),setTimeout(()=>j(!1),1600)}catch{b("Could not copy — select the line and copy it by hand.")}}(0,n.useEffect)(()=>{"#updates"===window.location.hash&&document.getElementById("updates")?.scrollIntoView({block:"start"}),"updates"!==new URLSearchParams(window.location.search).get("check")||(window.history.replaceState(null,"",window.location.pathname),e.job&&c.includes(e.job.phase)||(document.getElementById("updates")?.scrollIntoView({block:"center"}),M().then(()=>document.getElementById("updates")?.scrollIntoView({block:"end",behavior:"smooth"}))))},[e.job]),(0,n.useEffect)(()=>{if(!O)return;let e=!0,t=setTimeout(async()=>{try{if(W){let t=await fetch("/api/update",{cache:"no-store"}),n=await t.json();if(!e)return;if(!n.job||n.job.id!==v.id)return void window.location.reload();A(0),T(n.job)}else{let{ok:t,d:n}=await a({action:"update-status"});e&&t&&n.job&&T(n.job)}}catch{e&&A(e=>e+1)}},W?1500:600);return()=>{e=!1,clearTimeout(t)}},[v,F,O,W]),(0,n.useEffect)(()=>{if(!W)return;let e=setTimeout(()=>N(!0),6e4);return()=>clearTimeout(e)},[W]);let V=v?.phase==="failed",H=o&&l?.install?.possible,_=V&&"stale-check"===v.code||"not-checked"===D,K=void 0!==R?R:l?.fallback,G=l?.newer&&(!o||K)&&(!H||V||$||e.lastUpdate?.tone==="bad"),J=function({mac:e,kind:t,canInstall:n,fallback:o}){if(!e)return"source"===t?"A copy built from the source code updates by fetching the code and building it again, which it can't do while it runs. Stop it (Ctrl-C), then run this in the six-degrees folder. Your network stays where it is.":"This copy runs inside the terminal that started it, so it can't replace itself while it runs. Stop it first (Ctrl-C), then run this to start the newest version. Your network stays where it is.";if(!o)return null;let r=o.dataDir?` It opens the new version on the usual data folder, not on ${o.dataDir}: to use that one, quit it and open it again with --data-dir, as you opened this one.`:"";return"replace"===o.mode?`${n?"Or paste this into Terminal.":"Paste this into Terminal instead."} It closes this app, puts the new version in its place and opens it. Your network stays where it is.${r}`:`${n?"Or copy":"Copy"} this line, quit Six Degrees, then paste it into Terminal. It installs the new version at ${o.installsTo}, not where this copy is, and opens it: use that one from then on. Your network stays where it is.${r}`}({mac:o,kind:e.kind,canInstall:H,fallback:K});return(0,t.jsxs)(s.Section,{id:"updates",title:"Updates",children:[e.lastUpdate&&!O&&(0,t.jsx)(p,{report:e.lastUpdate}),(0,t.jsxs)(s.Body,{children:["You have version ",(0,t.jsx)(s.Mono,{children:e.version}),"."]}),O?(0,t.jsx)(u,{job:v,restarting:W,slow:z,onCancel:Y}):(0,t.jsxs)(t.Fragment,{children:[V&&(0,t.jsxs)(s.Status,{tone:"bad",children:[(0,t.jsx)("strong",{children:"The update didn’t finish."})," ",v.error," Nothing was changed."]}),v?.phase==="cancelled"&&(0,t.jsx)(s.Status,{children:"Cancelled. Nothing was changed."}),$&&(0,t.jsx)(s.Status,{tone:"bad",children:$}),l&&!l.latest&&(0,t.jsx)(s.Status,{children:"No release has been published yet."}),l?.latest&&!l.newer&&(0,t.jsxs)(s.Status,{tone:"ok",children:["You’re up to date: ",l.latest.version," is the newest version.",k&&(0,t.jsxs)("span",{style:{color:"#8b9a9a"},children:[" Checked at ",k.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"}),"."]})]}),l?.newer&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.Body,{style:{color:"#00ff88"},children:["Version ",l.latest.version," is available."]}),H&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.Body,{children:["It downloads ",l.install.size?`about ${h(l.install.size)} MB`:"the new version"," from GitHub, checks it, then closes, replaces itself and reopens. Your network isn’t touched, and a backup of it is made first."]}),(0,t.jsxs)(y,{children:[_?(0,t.jsx)(s.Btn,{onClick:M,disabled:r,primary:!0,children:r?"Checking…":"Check again"}):(0,t.jsx)(s.Btn,{onClick:P,disabled:C,primary:!0,children:C?"Starting…":V||$?"Try again":"Install and restart"}),(0,t.jsx)(g,{url:l.latest.url})]})]}),o&&!H&&l.install?.reason&&(0,t.jsx)(s.Body,{children:l.install.reason}),G&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.Body,{children:J}),e.testReleases?(0,t.jsx)("pre",{style:f,children:"Not shown in test mode: it would install the real release from GitHub into Applications."}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("pre",{style:f,children:e.command}),(0,t.jsxs)(y,{children:[(0,t.jsx)(s.Btn,{onClick:U,primary:!H,children:w?"Copied":"Copy"}),!H&&(0,t.jsx)(g,{url:l.latest.url})]})]})]}),!H&&!G&&(0,t.jsx)(y,{children:(0,t.jsx)(g,{url:l.latest.url})})]}),!l?.newer&&(0,t.jsx)(y,{children:(0,t.jsx)(s.Btn,{onClick:M,disabled:r,children:r?"Checking…":l?"Check again":"Check for updates"})})]}),x&&(0,t.jsx)(s.Body,{style:{color:"#ff7676"},children:x}),(0,t.jsxs)(s.Body,{style:{fontSize:12,color:"#667",marginTop:12},children:["Nothing is checked automatically. The button asks GitHub for the newest version number, and nothing about you is sent.",o&&" Only a second click, Install and restart, downloads the new version."]}),e.testReleases&&(0,t.jsxs)(s.Body,{style:{fontSize:12,color:"#FFD700",marginTop:6},children:["Test mode: releases are read from ",(0,t.jsx)(s.Mono,{children:e.testReleases})," on this computer, not from GitHub."]})]})}let h=e=>Math.max(1,Math.round(e/1e6));function u({job:e,restarting:n,slow:o,onCancel:r}){let i=e.total?Math.min(100,Math.round(e.received/e.total*100)):null,a=n?"Restarting… Six Degrees closes and opens again in a moment.":"checking"===e.phase?"Asking GitHub for the newest version…":"downloading"===e.phase?`Downloading ${e.version}…${null!==i?` ${i}% (${h(e.received)} of ${h(e.total)} MB)`:""}`:"verifying"===e.phase?"Checking the download…":"Preparing the new version…";return(0,t.jsxs)("div",{role:"status","aria-live":"polite",style:{marginTop:12},children:[(0,t.jsx)(s.Body,{style:{color:"#e8e8ee"},children:a}),"downloading"===e.phase&&null!==i&&(0,t.jsx)("div",{role:"progressbar","aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":i,"aria-label":"Download",style:{height:6,borderRadius:3,background:"rgba(255,255,255,0.08)",marginTop:10,overflow:"hidden",maxWidth:420},children:(0,t.jsx)("div",{style:{width:`${i}%`,height:"100%",background:"linear-gradient(90deg, #9B59B6, #3498DB)",transition:"width 0.4s ease"}})}),o&&(0,t.jsx)(s.Body,{children:"This is taking longer than it should. If Six Degrees doesn’t open again by itself, open it from your Applications folder."}),!n&&(0,t.jsx)(y,{children:(0,t.jsx)(s.Btn,{onClick:r,children:"Cancel"})})]})}function p({report:e}){let n=new Date(e.at).toLocaleString([],{dateStyle:"medium",timeStyle:"short"});return(0,t.jsxs)(s.Status,{tone:"ok"===e.tone?"ok":"bad",children:[e.text," ",(0,t.jsxs)("span",{style:{color:"#8b9a9a"},children:["(",n,")"]}),"ok"===e.tone&&e.previous&&(0,t.jsxs)("span",{style:{display:"block",fontSize:12.5,color:"#8b9a9a",marginTop:4},children:["A copy of the version you had is kept in ",(0,t.jsx)(s.Mono,{children:e.previous})," until the next update. To go back to it, open that file and drag the app it gives you into your Applications folder."]})]})}function g({url:e}){return e?(0,t.jsx)("a",{href:e,target:"_blank",rel:"noreferrer",style:{color:"#3498DB",fontSize:13.5},children:"What changed →"}):null}function y({children:e}){return(0,t.jsx)("div",{style:{display:"flex",gap:10,marginTop:12,flexWrap:"wrap",alignItems:"center"},children:e})}let f={background:"rgba(0,0,0,0.45)",border:s.LINE,borderRadius:8,padding:12,margin:"8px 0 0",fontSize:12,lineHeight:1.7,color:"#b9c6c6",fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",maxHeight:180,overflow:"auto"};function m(e){if(!e)return"0 KB";if(e<1048576)return`${Math.max(1,Math.round(e/1024))} KB`;let t=e/1048576;return`${t<10?t.toFixed(1):Math.round(t)} MB`}let x=e=>Number(e||0).toLocaleString("en-US"),b=(e,t,n=`${t}s`)=>`${x(e)} ${1===Number(e)?t:n}`;function w(e,t=!0){if(!e)return null;let n=new Date(e);return Number.isNaN(n.getTime())?null:n.toLocaleString(void 0,t?{dateStyle:"medium",timeStyle:"short"}:{dateStyle:"medium"})}let j={auto:"before a new version",import:"before an import",manual:"made by hand"};async function k(e,t){let n=await e.json().catch(()=>({}));if(!e.ok)throw Object.assign(Error(n.error||t),{data:n});return n}let S={display:"flex",gap:10,marginTop:12,flexWrap:"wrap",alignItems:"center"},v={fontSize:12,color:"#667",marginTop:10},T={fontSize:14,fontWeight:650,margin:"26px 0 4px",color:"#e8e8ee"},C={display:"flex",gap:8,alignItems:"flex-start",marginTop:12,fontSize:13,color:"#c8d0d0",lineHeight:1.5,cursor:"pointer"};function B({label:e,children:n}){return(0,t.jsxs)("div",{style:{display:"flex",gap:12,justifyContent:"space-between",padding:"7px 0",borderTop:s.LINE,fontSize:13.5},children:[(0,t.jsx)("span",{style:{color:"#8b9a9a"},children:e}),(0,t.jsx)("span",{style:{color:"#e8e8ee",textAlign:"right"},children:n})]})}function $(){return(0,t.jsx)("a",{href:"https://github.com/blakeb056/six-degrees#undo-an-import",target:"_blank",rel:"noreferrer",style:{color:"inherit",textDecoration:"underline"},children:"Undo an import"})}function I(){let[e,o]=(0,n.useState)(null),[r,i]=(0,n.useState)(null),[a,l]=(0,n.useState)(null),[c,d]=(0,n.useState)(null),[h,u]=(0,n.useState)(null),[p,g]=(0,n.useState)(null),[y,f]=(0,n.useState)(!0),[I,D]=(0,n.useState)(!0),[E,R]=(0,n.useState)(null),[L,F]=(0,n.useState)(!1),[A,z]=(0,n.useState)(!1),N=(0,n.useRef)(null),O=(0,n.useRef)(!1),W=(0,n.useCallback)(()=>fetch("/api/data",{cache:"no-store"}).then(e=>k(e,"The data folder could not be read.")).then(e=>{let t=Date.parse(e.lastImport?.appliedAt||"");o({...e,importIsRecent:Number.isFinite(t)&&Date.now()-t<864e5}),i(null)}).catch(e=>i(e.message)),[]);async function M(){d(null);try{await navigator.clipboard.writeText(e.dataDir),d({tone:"ok",text:"Copied the folder’s path."})}catch{d({tone:"bad",text:"This window can’t copy. Select the path above and copy it instead."})}}async function P(){l("reveal"),d(null);try{await k(await fetch("/api/data/reveal",{method:"POST"}),"The folder could not be opened."),d({tone:"ok",text:"darwin"===e.platform?"Opened in Finder.":"Opened in your file browser."})}catch(e){d({tone:"bad",text:e.message})}finally{l(null)}}async function Y(){l("export"),u(null);try{let e,t=await fetch("/api/data/export",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({photos:y,social:I})});t.ok||await k(t,"The copy could not be made.");let n=await t.blob(),o=/filename="([^"]+)"/.exec(t.headers.get("content-disposition")||"")?.[1]||"Six Degrees backup.sixdegrees",r=URL.createObjectURL(n),s=document.createElement("a");s.href=r,s.download=o,s.style.position="fixed",s.style.left="-9999px",document.body.appendChild(s),s.click(),s.remove(),setTimeout(()=>URL.revokeObjectURL(r),6e4);let i=[(e=Number(t.headers.get("x-six-degrees-people")),b(e,"person","people"))];i.push(y?b(Number(t.headers.get("x-six-degrees-photos")),"photo"):"no photos"),u({tone:"ok",text:`Made “${o}” (${m(n.size)}: ${i.join(", ")}). Look for it in your Downloads folder, or wherever you chose to save it.`})}catch(e){u({tone:"bad",text:e.message})}finally{l(null)}}async function U(){if(E){l("import"),g(null);try{let t={"Content-Type":"application/octet-stream","X-Six-Degrees-Size":String(E.size)};e.people>0&&(t["X-Six-Degrees-Replace"]=String(e.people)),await k(await fetch("/api/data/import",{method:"POST",headers:t,body:E}),"The file could not be imported."),R(null),F(!1),N.current&&(N.current.value=""),await W()}catch(e){e.data?.needsConfirm&&(F(!1),await W()),g({tone:"bad",text:e.message})}finally{l(null)}}}async function V(){l("cancel"),g(null);try{await k(await fetch("/api/data/import",{method:"DELETE"}),"The import could not be cancelled."),await W(),g({tone:"ok",text:"Cancelled. The network here stays as it is."})}catch(e){g({tone:"bad",text:e.message})}finally{l(null)}}async function H(){l("restart"),g(null);try{await k(await fetch("/api/data/restart",{method:"POST"}),"Six Degrees could not restart."),z(!0);let e=e=>new Promise(t=>setTimeout(t,e)),t=Date.now()+9e4;for(await e(2500);Date.now()<t;){try{if((await fetch("/api/data",{cache:"no-store"})).ok)return void window.location.reload()}catch{}await e(1e3)}z(!1),g({tone:"bad",text:"Six Degrees didn’t come back. Quit it and open it again: the import finishes as it starts."})}catch(e){g({tone:"bad",text:e.message})}finally{l(null)}}if((0,n.useEffect)(()=>{W()},[W]),(0,n.useEffect)(()=>{e&&!O.current&&(O.current=!0,"#data"===window.location.hash&&document.getElementById("data")?.scrollIntoView({block:"start"}))},[e]),!e)return(0,t.jsx)(s.Section,{id:"data",title:"Your data",children:r?(0,t.jsx)(s.Status,{tone:"bad",children:r}):(0,t.jsx)(s.Body,{children:"Loading…"})});let _=e.pending,K=e.photosInCopy||e.photos,G=e.backups||[],J=G.reduce((e,t)=>e+(t.bytes||0),0),q=!!(E&&E.size>e.maxImportBytes),X=e.people>0,Q=e.lastImport;return(0,t.jsxs)(s.Section,{id:"data",title:"Your data",intro:"Everything Six Degrees knows about your network is in one folder on this computer.",children:[(0,t.jsx)(s.Body,{children:(0,t.jsx)(s.Mono,{children:e.dataDir})}),(0,t.jsxs)("div",{style:S,children:[(0,t.jsx)(s.Btn,{onClick:M,children:"Copy the path"}),(0,t.jsx)(s.Btn,{onClick:P,disabled:"reveal"===a,children:"reveal"===a?"Opening…":"darwin"===e.platform?"Show in Finder":"Open the folder"})]}),c&&(0,t.jsx)(s.Status,{tone:c.tone,children:c.text}),(0,t.jsxs)("div",{style:{marginTop:16,borderBottom:s.LINE},children:[(0,t.jsxs)(B,{label:"Your network",children:[b(e.people,"person","people")," · ",m(e.databaseBytes)]}),(0,t.jsx)(B,{label:"Profile photos",children:e.photos.count?`${x(e.photos.count)} \xb7 ${m(e.photos.bytes)}`:"none saved yet"}),(0,t.jsx)(B,{label:"Backups",children:G.length?`${b(G.length,"copy","copies")} \xb7 ${m(J)}`:"none yet"}),(0,t.jsx)(B,{label:"LinkedIn sign-in for scanning",children:e.linkedinSignIn?"kept here, never put in a copy":"not signed in on this computer"})]}),G.length>0&&(0,t.jsxs)("details",{style:{marginTop:10,fontSize:13,color:"#8b9a9a"},children:[(0,t.jsx)("summary",{style:{cursor:"pointer"},children:"The backups"}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto auto",gap:"6px 14px",marginTop:8},children:G.map(e=>(0,t.jsxs)("div",{style:{display:"contents"},children:[(0,t.jsxs)("span",{style:{wordBreak:"break-all",color:"#c8d0d0"},children:[e.name,e.folder?"/":"",(0,t.jsxs)("span",{style:{color:"#667"},children:[" · ",e.folder?"its photos and files":j[e.kind]||e.kind]})]}),(0,t.jsx)("span",{children:w(e.modifiedAt)}),(0,t.jsx)("span",{style:{textAlign:"right"},children:m(e.bytes)})]},e.name))})]}),(0,t.jsx)(s.Body,{style:v,children:"Backups are copies of your network from before a new version or an import. The newest five from new versions are kept; copies from before an import stay until you delete them."}),(0,t.jsx)(s.Body,{style:v,children:"The folder can’t be moved from here. A database that a sync service (iCloud Drive, Dropbox) copies while it’s open can be damaged, and this folder also holds your LinkedIn sign-in, which should never be synced. To use your network on another computer, save a copy below and import it there."}),(0,t.jsx)("h3",{style:T,children:"Move your network to another computer"}),(0,t.jsx)(s.Body,{children:"Save a copy here, then on the new computer install Six Degrees, open Settings → Your data and import the copy. Sign in to LinkedIn again there before you scan: your sign-in never goes into a copy."}),(0,t.jsxs)("label",{style:C,children:[(0,t.jsx)("input",{type:"checkbox",checked:y,onChange:e=>f(e.target.checked),style:{marginTop:3}}),(0,t.jsxs)("span",{children:["Include profile photos",K.count?` (${x(K.count)}, ${m(K.bytes)})`:"",". They can’t be downloaded again without a new scan."]})]}),(0,t.jsxs)("label",{style:C,children:[(0,t.jsx)("input",{type:"checkbox",checked:I,onChange:e=>D(e.target.checked),style:{marginTop:3}}),(0,t.jsx)("span",{children:"Include the Social tab: its findings, your CRM notes, stages and follow-ups, and any messages you keep there."})]}),(0,t.jsxs)("div",{style:S,children:[(0,t.jsx)(s.Btn,{primary:!0,onClick:Y,disabled:!!a||A||0===e.people,children:"export"===a?"Saving…":"Save a copy of my network"}),0===e.people&&(0,t.jsx)("span",{style:{fontSize:13,color:"#8b9a9a"},children:"There’s no network here to save yet."})]}),h&&(0,t.jsx)(s.Status,{tone:h.tone,children:h.text}),(0,t.jsx)(s.Body,{style:v,children:"The copy holds the names, headlines and photos of the people in your network. Keep it private: don’t post it or share it, and delete it once it has been imported. A network opened from a LinkedIn CSV lives only in its browser tab, so it isn’t in the copy; import the CSV again on the new computer. With the Social tab included, the copy also holds your CRM notes and any messages you keep, so it’s as private as your inbox."}),(0,t.jsx)("h3",{style:T,children:"Bring in a network from another computer"}),_?(0,t.jsxs)(s.Status,{children:[(0,t.jsx)("div",{style:{fontWeight:650},children:"An import is waiting to finish."}),(0,t.jsxs)("div",{children:["The network in the copy",_.exportedAt?` saved ${w(_.exportedAt,!1)}`:""," ","(",b(_.people,"person","people"),_.photos?`, ${b(_.photos,"photo")}`:"",_.fromVersion?`, from Six Degrees ${_.fromVersion}`:"",")",_.replacedPeople>0?` replaces the ${b(_.replacedPeople,"person","people")} here the next time Six Degrees starts. A copy of what’s here now is kept in backups first, so the import can be undone.`:" becomes the network here the next time Six Degrees starts."," ","Your LinkedIn search budget and any pause on scanning are kept."]}),_.error&&(0,t.jsxs)("div",{style:{color:"#ff7676",marginTop:6},children:["The last try stopped: ",_.error.replace(/\.$/,""),". It tries again the next time Six Degrees starts."]}),A?(0,t.jsx)("div",{style:{marginTop:8},children:"Restarting… this page comes back in a few seconds."}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{style:{marginTop:8},children:e.restart.how}),e.restart.command&&(0,t.jsx)("div",{style:{marginTop:6},children:(0,t.jsx)(s.Mono,{children:e.restart.command})}),(0,t.jsxs)("div",{style:S,children:[e.restart.canRestart&&(0,t.jsx)(s.Btn,{primary:!0,onClick:H,disabled:!!a,children:"restart"===a?"Restarting…":"Restart now"}),!_.started&&(0,t.jsx)(s.Btn,{onClick:V,disabled:!!a,children:"cancel"===a?"Cancelling…":"Cancel the import"})]})]})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.Body,{children:"Pick the copy you saved on the other computer (a .sixdegrees file). It replaces the network here; the two networks are never merged. Your LinkedIn search budget and any pause on scanning are kept, with the other computer’s searches added."}),(0,t.jsx)("input",{ref:N,type:"file",accept:".sixdegrees",onChange:function(e){g(null),F(!1),R(e.target.files?.[0]||null)},style:{display:"none"}}),(0,t.jsxs)("div",{style:S,children:[(0,t.jsx)(s.Btn,{onClick:()=>N.current?.click(),disabled:!!a,children:"Choose a file…"}),E&&(0,t.jsxs)("span",{style:{fontSize:13,color:"#c8d0d0",wordBreak:"break-all"},children:[E.name," · ",m(E.size)]})]}),q&&(0,t.jsxs)(s.Status,{tone:"bad",children:["That file is ",m(E.size),". This copy can import files up to ",m(e.maxImportBytes),"."]}),E&&X&&!q&&(0,t.jsxs)("label",{style:C,children:[(0,t.jsx)("input",{type:"checkbox",checked:L,onChange:e=>F(e.target.checked),style:{marginTop:3}}),(0,t.jsxs)("span",{children:["Replace the ",b(e.people,"person","people")," in this copy’s network with the network in this file. A copy of what’s here is kept in backups first. Your search budget and any pause on scanning are kept too."]})]}),(0,t.jsx)("div",{style:S,children:(0,t.jsx)(s.Btn,{primary:!0,onClick:U,disabled:!E||q||X&&!L||!!a,children:"import"===a?"Checking the file…":"Import"})})]}),p&&(0,t.jsx)(s.Status,{tone:p.tone,children:p.text}),Q&&!_&&(e.importIsRecent?(0,t.jsxs)(s.Status,{tone:"ok",children:["Imported ",w(Q.appliedAt),": ",b(Q.people,"person","people"),Q.exportedAt?` from the copy saved ${w(Q.exportedAt,!1)}`:"",".",Q.keptDatabase&&(0,t.jsxs)(t.Fragment,{children:[" ","What was here before is kept in ",(0,t.jsx)(s.Mono,{children:Q.keptDatabase}),Q.keptFiles?", with its photos and files beside it":"",".",Q.keptAsIs&&" It couldn’t be read, so it was kept exactly as it was."," ","To go back to it, see ",(0,t.jsx)($,{}),"."]})]}):(0,t.jsxs)(s.Body,{style:v,children:["Last import: ",w(Q.appliedAt)," (",b(Q.people,"person","people"),").",Q.keptDatabase&&(0,t.jsxs)(t.Fragment,{children:[" What was here before is kept in ",(0,t.jsx)(s.Mono,{children:Q.keptDatabase})," (",(0,t.jsx)($,{}),")."]})]}))]})}var D=e.i(98197),E=e.i(44944),R=e.i(77170),L=e.i(69083),F=e.i(90179),A=e.i(5258),z=e.i(7837),N=e.i(56899);let O={lean:"Lean",strong:"Strong"},W=["wheel","touchstart","keydown","pointerdown"],M={1:"1st",2:"2nd",3:"3rd"},P=(e,t,n=`${t}s`)=>`${e.toLocaleString()} ${1===e?t:n}`,Y=R.DIRECTORY.filter(e=>"function"===e.kind).map(e=>e.label);function U(e,t,n){let[o,r]=n?["moved","moved"]:["moves","move"];if(!e&&!t)return n?"No one changed tier.":"No one changes tier.";let s=e=>1===e?o:r;return e&&t?`${P(e,"person","people")} ${s(e)} up a tier and ${t.toLocaleString()} ${s(t)} down.`:e?`${P(e,"person","people")} ${s(e)} up a tier.`:`${P(t,"person","people")} ${s(t)} down a tier.`}function V({onSaved:e}={}){let[o,r]=(0,n.useState)(null),[i,a]=(0,n.useState)(null),[l,c]=(0,n.useState)(null),[d,h]=(0,n.useState)(!1),[u,p]=(0,n.useState)(null),[g,y]=(0,n.useState)(null),[f,m]=(0,n.useState)({loading:!0}),[x]=(0,n.useState)(()=>(0,z.csvNetworkSource)()),b=(0,n.useRef)(null),w=(0,n.useRef)(0),j=(0,n.useRef)(!1);function k(e){a(e),p(null),clearTimeout(b.current);let t=++w.current;if((0,E.sameFocus)(e,o))return void c(null);let n=(0,E.focusFingerprint)(e);c({key:n,loading:!0}),b.current=setTimeout(async()=>{try{let o=await fetch("/api/settings/sector-preview",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sectorFocus:e})}),r=await o.json();if(t!==w.current)return;c(o.ok?{key:n,...r}:{key:n,error:r.error||"Could not work out what would change."})}catch{t===w.current&&c({key:n,error:"Could not reach the app to work out what would change."})}},250)}async function S(){var t,n;let o;h(!0),p(null),clearTimeout(b.current),w.current++;let s=await (0,N.saveSettings)({sectorFocus:i});(h(!1),s.settings&&(r(s.settings.sectorFocus),a(s.settings.sectorFocus),c(null)),s.error)?p({tone:"bad",text:s.error}):(p({tone:"ok",text:(t=s.settings.sectorFocus,n=s.effects?.sectorFocus,o=t.sectors.length?`Saved: ${t.sectors.map(e=>(0,L.sectorByKey)(e).label).join(" · ")} (${O[t.strength].toLowerCase()}).`:"Saved: no sector.",n?n.scored?`${o} Rescored your network (${P(n.people??n.scored,"person","people")}). ${U(n.up,n.down,!0)}`:`${o} There's no scanned network yet; it will apply when you scan.`:o)}),e?.())}(0,n.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load your sector.")))).then(t=>{if(e)return;let n=t.settings?.sectorFocus||{sectors:[],strength:"lean"};r(n),a(n)}).catch(t=>{e||y(t.message)}),fetch("/api/settings/sector-suggestions").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load suggestions.")))).then(t=>{e||m({scored:t.scored,list:t.suggestions||[]})}).catch(t=>{e||m({error:t.message})}),()=>{e=!0,clearTimeout(b.current)}},[]),(0,n.useEffect)(()=>{if(j.current||!i&&!g)return;j.current=!0;let e=document.getElementById("sector");if("#sector"!==window.location.hash||!e)return;let t=()=>e.scrollIntoView({block:"start"});t();let n=new ResizeObserver(t);n.observe(document.body);let o=()=>{for(let e of(n.disconnect(),clearTimeout(r),W))window.removeEventListener(e,o,!0)},r=setTimeout(o,2e3);for(let e of W)window.addEventListener(e,o,{capture:!0,passive:!0});return o},[i,g]);let v=i&&o&&!(0,E.sameFocus)(i,o);return(0,t.jsxs)(s.Section,{id:"sector",title:"Your sector",intro:"Pick up to three sectors you work in. Companies in them count for more when your network is scored, so the people there rank higher.",children:[g&&(0,t.jsx)(s.Status,{tone:"bad",children:g}),!i&&!g&&(0,t.jsx)(s.Body,{children:"Loading…"}),i&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(D.default,{sectors:i.sectors,onChange:e=>k({...i,sectors:e}),disabled:d,suggest:f}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:8,marginTop:14},children:[(0,t.jsx)("span",{style:{fontSize:13,color:"#8b9a9a"},children:"How much:"}),Object.keys(F.SECTOR_BONUS).map(e=>(0,t.jsxs)("button",{type:"button","aria-pressed":i.strength===e,disabled:d,onClick:()=>k({...i,strength:e}),style:{padding:"5px 12px",borderRadius:7,fontSize:12.5,fontWeight:600,cursor:"pointer",color:i.strength===e?"#fff":"#8b9a9a",background:i.strength===e?"rgba(52,152,219,0.25)":"transparent",border:s.LINE},children:[O[e]," · +",F.SECTOR_BONUS[e]]},e))]}),(0,t.jsx)(s.Body,{style:{fontSize:12.5},children:"Each company in your sectors gets +1 (lean) or +2 (strong) on its score out of 10, never above 10. A company in more than one of your picks still gets it once."}),(0,t.jsx)(H,{preview:v?l:null,draft:i}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:14},children:[(0,t.jsx)(s.Btn,{primary:!0,onClick:S,disabled:!v||d,children:d?"Saving and rescoring…":"Save"}),v&&!d&&(0,t.jsx)(s.Btn,{onClick:()=>k(o),children:"Cancel"}),!v&&i.sectors.length>0&&!d&&(0,t.jsx)(s.Btn,{onClick:()=>k({...i,sectors:[]}),children:"Turn off"})]}),u&&(0,t.jsx)(s.Status,{tone:u.tone,children:u.text}),(0,t.jsxs)("ul",{style:{margin:"16px 0 0",paddingLeft:18,fontSize:12.5,color:"#778",lineHeight:1.7},children:[(0,t.jsx)("li",{children:"Tiers rank how reachable someone is through your network, not the people themselves."}),(0,t.jsxs)("li",{children:["A company score you set on ",(0,t.jsx)("a",{href:"#companies",style:{color:"#3498DB"},children:"Company scores"}),", below, always wins. Your sector never changes it."]}),(0,t.jsx)("li",{children:"If you scan highest tier first, people in your sectors come up sooner. Scanning newest first, the default, doesn’t go by tier."}),(0,t.jsx)("li",{children:"An industry includes its sectors. It counts a company in any of its sectors (Healthcare & Biotech counts a practice that is only in Dental), and a company whose industry the app’s list of well-known companies or the company’s own name gives (Meridian Health). Not one known only from its people’s job titles: a recruiter at Acme Widgets doesn’t make Acme a consulting firm."}),(0,t.jsx)("li",{children:"A narrower sector counts a company when its name says so (Smith Family Dental), it’s a well-known company in that sector, or at least half of the people you know there say so in their headlines (dentist, DDS, orthodontist). The words are a fixed list that comes with the app, the same on every computer. Nothing is sent anywhere."}),(0,t.jsxs)("li",{children:["Some sectors are work every kind of company has: ",Y.length>1?`${Y.slice(0,-1).join(", ")} and ${Y.at(-1)}`:Y.join(""),". For those a job title doesn’t count, since a recruiter at Acme Widgets doesn’t make it a recruiting firm. The company’s name does (Acme Staffing, Smith CPA), and so does a kind of firm in a headline (staffing agency, law firm, SaaS)."]}),x&&(0,t.jsxs)("li",{style:{color:"#FFD700"},children:["sample"===x?"The sample network":"The CSV import"," open in this window isn’t changed by this, and isn’t counted in the suggestions. Your sector applies to networks you’ve scanned."]})]})]})]})}function H({preview:e,draft:n}){if(!e||e.key!==(0,E.focusFingerprint)(n))return null;let o={marginTop:12,padding:"10px 14px",borderRadius:8,fontSize:13,lineHeight:1.6,border:s.LINE,background:"rgba(255,255,255,0.03)",color:"#cfd8d8"};if(e.loading)return(0,t.jsx)("div",{style:o,"aria-live":"polite",children:"Working out what would change…"});if(e.error)return(0,t.jsx)(s.Status,{tone:"bad",children:e.error});if(!e.scored)return(0,t.jsx)("div",{style:o,"aria-live":"polite",children:"There’s no scanned network yet, so nothing changes now. Your choice applies once you scan."});let r=(e,t)=>`${P(e,"company","companies")} ${1===e?"scores":"score"} ${t}`,i=[e.companiesUp&&r(e.companiesUp,"higher"),e.companiesDown&&r(e.companiesDown,"lower")].filter(Boolean).join(" and ");return(0,t.jsxs)("div",{style:o,"aria-live":"polite",children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("b",{style:{color:"#fff"},children:"If you save:"})," ",i?`${i}.`:"No company changes score."," ",U(e.up,e.down,!1)]}),e.examples?.length>0&&(0,t.jsx)("div",{style:{marginTop:6,display:"flex",flexWrap:"wrap",gap:"4px 12px",fontSize:12.5},children:e.examples.map((e,n)=>(0,t.jsxs)("span",{title:e.company||void 0,children:[e.name,e.degree?(0,t.jsxs)("span",{style:{color:"#667"},children:[" (",M[e.degree]||`${e.degree}th`,")"]}):null," ",(0,t.jsx)("b",{style:{color:A.TIER_COLORS_CLASSIC[e.from]||"#889"},children:e.from||"–"})," → ",(0,t.jsx)("b",{style:{color:A.TIER_COLORS_CLASSIC[e.to]||"#889"},children:e.to})]},n))}),e.companyExamples?.length>0&&(0,t.jsx)("div",{style:{marginTop:4,fontSize:12,color:"#8b9a9a"},children:e.companyExamples.slice(0,3).map(e=>`${e.name} ${e.from} → ${e.to}`).join(" · ")})]})}let _=e=>`${Math.round(100*e)}%`,[K,G,J]=F.CURVE.map(([,e])=>e),q=[{key:"curve",label:"On your network's curve",note:`Your top ${_(K)} are S, the next ${_(G-K)} A and the next ${_(J-G)} B, so any network has a top, even one full of companies the app doesn't know. It only lifts: nobody drops a tier because their network is strong, and nobody under ${F.CURVE_FLOOR} is lifted into S or A.`},{key:"fixed",label:"On the fixed scale",note:"The same lines for everyone: S from 7.5, A from 5.5, B from 4, C from 2.5. Easy to compare from one network to another, but a network outside well-known companies has almost nobody in S or A."}];function X({onSaved:e}={}){let[o,r]=(0,n.useState)(null),[i,a]=(0,n.useState)(!1),[l,c]=(0,n.useState)(null),[d,h]=(0,n.useState)(null),[u]=(0,n.useState)(()=>(0,z.csvNetworkSource)());async function p(t){if(i||t===o)return;a(!0),c(null);let{settings:n,effects:s,error:l}=await (0,N.saveSettings)({tierScale:t});if(n&&r(n.tierScale),l)c({tone:"bad",text:l});else{let t,n=s?.tierScale;c({tone:"ok",text:n?`Saved. ${t=n.moved,`${t.toLocaleString()} ${1===t?"person":"people"}`} changed tier.`:"Saved."}),e?.()}a(!1)}return(0,n.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load how tiers are graded.")))).then(t=>{e||r(t.settings?.tierScale||"curve")}).catch(t=>{e||h(t.message)}),()=>{e=!0}},[]),(0,t.jsxs)(s.Section,{id:"tiers",title:"Tiers",intro:"How the S to D rings are drawn. A tier says where someone sits in your network, not what they're worth.",children:[d&&(0,t.jsx)(s.Status,{tone:"bad",children:d}),o&&(0,t.jsx)("div",{role:"radiogroup","aria-label":"How tiers are graded",style:{display:"grid",gap:8},children:q.map(e=>{let n=o===e.key;return(0,t.jsxs)("button",{type:"button",role:"radio","aria-checked":n,disabled:i,onClick:()=>p(e.key),style:{textAlign:"left",padding:"12px 14px",borderRadius:8,cursor:i?"wait":n?"default":"pointer",color:"#fff",background:n?"rgba(155,89,182,0.14)":"rgba(255,255,255,0.03)",border:n?"1px solid rgba(155,89,182,0.6)":s.LINE},children:[(0,t.jsxs)("div",{style:{fontSize:14,fontWeight:650},children:[n?"● ":"○ ",e.label,"curve"===e.key?" (recommended)":""]}),(0,t.jsx)(s.Body,{style:{marginTop:4},children:e.note})]},e.key)})}),u&&(0,t.jsxs)(s.Body,{style:{color:"#FFD700",marginTop:10},children:["sample"===u?"The sample network open in this window keeps its own tiers (they’re the same either way).":"The CSV import open in this window is always graded on its own curve."," ","This applies to networks you’ve scanned."]}),l&&(0,t.jsx)(s.Status,{tone:l.tone,children:l.text})]})}let Q=["csuite","owner","vp","director","manager","senior","ic","unknown","intern","student"],Z=Object.freeze({points:Object.freeze({}),roles:Object.freeze([])});function ee(e=Z){let t=Object.keys(e.points||{}).sort().map(t=>`${t}=${e.points[t]}`).join(","),n=(e.roles||[]).map(e=>`${e.text}=${e.points}`).sort().join(",");return t||n?`${t}|${n}`:"none"}let et=[{key:"default",label:"As the app ranks them",ranking:Z,note:"C-suite and founders first, then VPs, directors, managers."},{key:"founders",label:"Founders first",note:"Owners and entrepreneurs count like CEOs, and anyone who says founder counts as much: for meeting founders, or selling to them.",ranking:{points:{owner:10},roles:[{text:"founder",points:10},{text:"co-founder",points:10}]}},{key:"investors",label:"Investors",note:"Anyone who invests for a living rises to the top: for raising money.",ranking:{points:{},roles:["investor","venture","angel","general partner","managing partner","principal at","vc"].map(e=>({text:e,points:10}))}},{key:"role",label:"A role I’m looking for",note:"For outbound or hiring: add the role below, and everyone in it rises, whatever their level.",ranking:null}],en=[10,9.5,9,8.5,8,7.5,7,6.5,6,5.5,5,4.5,4,3,2,1,0],eo={padding:"5px 8px",borderRadius:6,fontSize:12.5,cursor:"pointer",border:s.LINE,background:"rgba(0,0,0,0.3)",color:"#fff"};function er({onSaved:e}={}){let[o,r]=(0,n.useState)(null),[i,a]=(0,n.useState)(null),[l,c]=(0,n.useState)(""),[d,h]=(0,n.useState)(10),[u,p]=(0,n.useState)(!1),[g,y]=(0,n.useState)(null),[f,m]=(0,n.useState)(null),x=(0,n.useRef)(null);if((0,n.useEffect)(()=>{let e=!1;return fetch("/api/settings").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load your title ranking.")))).then(t=>{if(!e){let e=t.settings?.titleRanking||Z;r(e),a(e)}}).catch(t=>{e||m(t.message)}),()=>{e=!0}},[]),!i)return f?(0,t.jsx)(s.Status,{tone:"bad",children:f}):null;let b=(e,t)=>{let n={...i.points};t===F.LEVELS[e].points?delete n[e]:n[e]=t,a({...i,points:n}),y(null)},w=et.find(e=>e.ranking&&ee(e.ranking)===ee(i))?.key??null,j=ee(i)!==ee(o);async function k(){p(!0),y(null);let{settings:t,effects:n,error:o}=await (0,N.saveSettings)({titleRanking:i});if(t&&(r(t.titleRanking),a(t.titleRanking)),o)y({tone:"bad",text:o});else{let t,o=n?.titleRanking;y({tone:"ok",text:o?`Saved. ${t=o.moved,`${t.toLocaleString()} ${1===t?"person":"people"}`} changed tier.`:"Saved."}),e?.()}p(!1)}return(0,t.jsxs)(s.Section,{id:"titles",title:"Titles",intro:"How much each kind of title counts towards someone's power, out of 10. Change it if you value some people more than the app does: founders, investors, or a role you're looking for.",children:[(0,t.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginBottom:6},children:et.map(e=>(0,t.jsx)("button",{type:"button",onClick:()=>{y(null),e.ranking?a({points:{...e.ranking.points},roles:[...e.ranking.roles]}):x.current?.focus()},"aria-pressed":w===e.key,title:e.note,style:{padding:"6px 12px",borderRadius:16,fontSize:12.5,fontWeight:650,cursor:"pointer",border:w===e.key?"1px solid rgba(155,89,182,0.7)":s.LINE,background:w===e.key?"rgba(155,89,182,0.16)":"rgba(255,255,255,0.03)",color:w===e.key?"#fff":"#bbb"},children:e.label},e.key))}),(0,t.jsx)(s.Body,{style:{marginBottom:14},children:et.find(e=>e.key===w)?.note||"Your own ranking. Higher points rank higher; the company someone works at still weighs it."}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"1fr auto auto",gap:"6px 12px",alignItems:"center",maxWidth:520},children:Q.map(e=>{let n=i.points?.[e]!=null;return[(0,t.jsx)("div",{style:{fontSize:13,color:n?"#fff":"#ccc",fontWeight:n?700:500},children:F.LEVELS[e].label},`${e}-l`),(0,t.jsx)("select",{"aria-label":`Points for ${F.LEVELS[e].label}`,value:i.points?.[e]??F.LEVELS[e].points,onChange:t=>b(e,Number(t.target.value)),style:{...eo,borderColor:n?"rgba(155,89,182,0.7)":void 0},children:en.map(e=>(0,t.jsx)("option",{value:e,children:e},e))},`${e}-s`),(0,t.jsx)("div",{style:{fontSize:11,color:"#667",minWidth:70},children:n?(0,t.jsxs)("button",{type:"button",onClick:()=>b(e,F.LEVELS[e].points),style:{background:"none",border:"none",color:"#9b9bd0",cursor:"pointer",fontSize:11,padding:0},children:["back to ",F.LEVELS[e].points]}):"as it comes"},`${e}-d`)]})}),(0,t.jsx)("div",{style:{marginTop:18,fontSize:13.5,fontWeight:700,color:"#eee"},children:"Roles you’re looking for"}),(0,t.jsx)(s.Body,{style:{margin:"4px 0 10px"},children:"Anyone whose title has these words counts what you give them, whatever their level: for outbound to one role, or hiring for it. “Account executive” at 10 puts every account executive you can reach near the top."}),(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),(()=>{let e=l.trim().toLowerCase().replace(/\s+/g," ");if(e.length<2)return;let t=[...i.roles.filter(t=>t.text!==e),{text:e,points:d}];a({...i,roles:t.slice(-20)}),c(""),y(null)})()},style:{display:"flex",gap:8,flexWrap:"wrap",alignItems:"center"},children:[(0,t.jsx)("input",{ref:x,value:l,onChange:e=>c(e.target.value),placeholder:"e.g. head of growth, recruiter, founder",maxLength:60,style:{flex:"1 1 220px",padding:"7px 10px",borderRadius:6,fontSize:13,border:s.LINE,background:"rgba(0,0,0,0.3)",color:"#fff"}}),(0,t.jsx)("select",{"aria-label":"Points for this role",value:d,onChange:e=>h(Number(e.target.value)),style:eo,children:en.map(e=>(0,t.jsx)("option",{value:e,children:e},e))}),(0,t.jsx)(s.Btn,{type:"submit",disabled:l.trim().length<2||i.roles.length>=20,children:"Add"})]}),i.roles.length>0&&(0,t.jsx)("div",{style:{display:"flex",gap:6,flexWrap:"wrap",marginTop:10},children:i.roles.map(e=>(0,t.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:6,padding:"4px 6px 4px 11px",borderRadius:14,fontSize:12.5,border:"1px solid rgba(155,89,182,0.5)",background:"rgba(155,89,182,0.12)",color:"#eee"},children:[e.text," ",(0,t.jsx)("b",{style:{color:"#d2b4ff"},children:e.points}),(0,t.jsx)("button",{type:"button",onClick:()=>{var t;return t=e.text,void(a({...i,roles:i.roles.filter(e=>e.text!==t)}),y(null))},"aria-label":`Remove ${e.text}`,style:{background:"none",border:"none",color:"#aaa",cursor:"pointer",fontSize:13},children:"✕"})]},e.text))}),(0,t.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"center",marginTop:16},children:[(0,t.jsx)(s.Btn,{primary:!0,onClick:k,disabled:!j||u,children:u?"Rescoring…":"Save and rescore"}),j&&(0,t.jsx)("span",{style:{fontSize:12,color:"#999"},children:"Not saved yet. Saving rescores everyone."})]}),g&&(0,t.jsx)(s.Status,{tone:g.tone,children:g.text})]})}var es=e.i(94657),ei=e.i(64745);let ea={"mac-app":"the Mac app",npm:"the npm package (npx six-degrees)",source:"a copy built from the source code",git:"a git checkout of the source code"};function el(){let[e,r]=(0,n.useState)(null),[a,l]=(0,n.useState)(null),[c,d]=(0,n.useState)(0),h=()=>d(e=>e+1);if((0,n.useEffect)(()=>{fetch("/api/settings").then(e=>e.json().then(t=>e.ok?t:Promise.reject(Error(t.error||"Could not load settings.")))).then(r).catch(e=>l(e.message))},[]),ei.IS_DEMO)return(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"rgba(255,255,255,0.7)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:12,textAlign:"center",padding:24,fontFamily:s.FONT},children:[(0,t.jsx)("h2",{style:{margin:0,fontSize:20,fontWeight:700,color:"#fff"},children:"Not part of the demo"}),(0,t.jsx)("p",{style:{margin:0,fontSize:13},children:"The public demo includes the Network Circle and Degrees views only."}),(0,t.jsx)(o.default,{href:"/",style:{fontSize:12,color:"rgba(255,255,255,0.5)",textDecoration:"none"},children:"← Back to the network"})]});let u=e?.about;return(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"#fff",fontFamily:s.FONT},children:[(0,t.jsxs)("header",{style:{padding:"16px 24px",borderBottom:s.LINE,display:"flex",alignItems:"center",gap:16},children:[(0,t.jsx)(o.default,{href:"/",style:{display:"flex",alignItems:"center",gap:6,color:"#888",textDecoration:"none",fontSize:13,fontWeight:600,padding:"6px 14px",borderRadius:6,background:"rgba(255,255,255,0.06)",border:s.LINE},children:"← Back to Map"}),(0,t.jsx)("h1",{style:{fontSize:22,fontWeight:700,margin:0,background:"linear-gradient(135deg, #FFD700, #9B59B6, #3498DB)",WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent"},children:"Settings"})]}),(0,t.jsxs)("main",{style:{maxWidth:980,margin:"0 auto",padding:"8px 24px 64px"},children:[a&&(0,t.jsx)(s.Body,{style:{color:"#ff7676",marginTop:16},children:a}),(0,t.jsx)(i,{}),(0,t.jsxs)(s.Section,{id:"scoring",title:"Scores",children:[(0,t.jsxs)(s.Body,{children:["How someone’s power score is worked out, and the four things you can change about it:"," ",(0,t.jsx)("a",{href:"#sector",style:{color:"#3498DB",textDecoration:"none",fontWeight:600},children:"your field"}),","," ",(0,t.jsx)("a",{href:"#tiers",style:{color:"#3498DB",textDecoration:"none",fontWeight:600},children:"how tiers are graded"}),","," ",(0,t.jsx)("a",{href:"#titles",style:{color:"#3498DB",textDecoration:"none",fontWeight:600},children:"how titles rank"})," and"," ",(0,t.jsx)("a",{href:"#companies",style:{color:"#3498DB",textDecoration:"none",fontWeight:600},children:"any company’s score"}),". A change here rescores everyone. How your network holds together is in"," ",(0,t.jsx)(o.default,{href:"/profile?view=insights",style:{color:"#3498DB",textDecoration:"none",fontWeight:600},children:"Profile → Insights"}),"."]}),(0,t.jsx)(V,{onSaved:h}),(0,t.jsx)(X,{onSaved:h}),(0,t.jsx)(er,{onSaved:h}),(0,t.jsx)("div",{id:"companies",style:{marginTop:28},children:(0,t.jsx)(es.default,{version:c})})]}),(0,t.jsx)(I,{}),(0,t.jsx)(s.Section,{id:"about",title:"About this copy",children:u?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(s.Body,{children:["Version ",(0,t.jsx)(s.Mono,{children:u.version}),", running as ",ea[u.kind]||u.kind,"."]}),(0,t.jsxs)(s.Body,{children:["Your network is kept in ",(0,t.jsx)(s.Mono,{children:u.dataDir}),u.customDataDir?" (a folder you chose).":".","mac-app"===u.kind&&" Help → Show the Data Folder opens it."]}),(0,t.jsx)(s.Body,{style:{fontSize:12,color:"#667",marginTop:10},children:"Settings are saved with your network, on this computer. Nothing here is sent anywhere."})]}):!a&&(0,t.jsx)(s.Body,{children:"Loading…"})})]})]})}e.s(["default",0,function(){return(0,t.jsx)(r.default,{children:(0,t.jsx)(el,{})})}],5445)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,40643,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(18566),a=e.i(22016),o=e.i(40996),l=e.i(68792),u=e.i(99883);let i={full:"Scanning your network",refresh:"Checking for new connections",bridge:"Scanning a circle",resume:"Carrying on with a circle","resume-all":"Carrying on with circles","auto-bridge":"Auto-Bridge","auto-bridge-retry":"Auto-Bridge",rescrape:"Re-scanning a circle",login:"Signing in to LinkedIn",setup:"Setting up the scanner",company:"Scanning a company",photos:"Saving photos",messages:"Reading your messages list","messages-full":"Reading your whole messages history"};e.s(["default",0,function(){let e,s,[c,d]=(0,r.useState)(()=>(0,o.scannerNow)()),[f,p]=(0,r.useState)(!1),[h,g]=(0,r.useState)(!1),[y,m]=(0,r.useState)(!1),b=(0,r.useSyncExternalStore)(l.watchAllDay,l.allDayNow,()=>!1),v=(0,r.useSyncExternalStore)(u.watchActivities,u.activitiesNow,u.noActivities),x=(0,r.useSyncExternalStore)(u.watchNotchTabs,u.notchTabsNow,u.noNotchTabs);(0,r.useEffect)(()=>(0,o.watchScanner)(()=>{let e=(0,o.scannerNow)();d(e),e.running||p(!1)}),[]);let S=(0,n.usePathname)(),[_,j]=(0,r.useState)(null),[P,w]=(0,r.useState)(null);(0,r.useEffect)(()=>{let e=null,t=null,r=0,n=()=>{r=0;let n=document.querySelector("header");n!==e&&(t?.disconnect(),t=null,(e=n)&&(t=new ResizeObserver(a)).observe(e));let o=e?Math.round(e.getBoundingClientRect().bottom):null;j(e=>e===o?e:o);let l=document.getElementById("main-tabs")?.getBoundingClientRect(),u=l&&l.width?Math.round(l.left+l.width/2):null;w(e=>e===u?e:u)},a=()=>{r||(r=requestAnimationFrame(n))};a();let o=new MutationObserver(a);return o.observe(document.body,{childList:!0,subtree:!0}),window.addEventListener("resize",a),()=>{cancelAnimationFrame(r),t?.disconnect(),o.disconnect(),window.removeEventListener("resize",a)}},[S]);let O=!!c?.running,C=v[v.length-1]||null,E=O||C||b,R=!!(E||x);if((0,r.useEffect)(()=>((0,u.setNotchShown)(R),()=>(0,u.setNotchShown)(!1)),[R]),!E&&!x)return null;let N=c?.progress,T=N?.kind==="batch"&&N.total?`${N.current||N.done||0} of ${N.total}`:N?.kind==="walk"&&N.total?`${(N.done||0).toLocaleString()} of ${N.total.toLocaleString()}`:N?.kind==="saving"?"saving":null,A=N?.total?Math.min(1,(N.current||N.done||0)/N.total):C?.progress??null,k=c?.budget,M=O?[...c.log||[]].reverse().find(e=>e&&e.trim())?.trim():null,D=h||y,F=O?"#00ff88":C?"warn"===C.tone?"#FFD700":"#3498DB":"#556",L=O?i[c.action]||"Scanning":C?C.label:"Auto scan",I=O?T:C?C.detail:null,B=null!=P?`clamp(170px, ${P}px, calc(100vw - 170px))`:"50%";return(0,t.jsxs)("div",{onMouseLeave:()=>g(!1),style:{position:"fixed",left:B,top:_??"var(--scan-bar-top, 94px)",transform:"translateX(-50%)",zIndex:60,maxWidth:"calc(100vw - 16px)",padding:D&&E?"4px 6px 10px":"4px 6px 5px",borderRadius:"0 0 14px 14px",border:`1px solid ${O?"rgba(0,255,136,0.25)":"rgba(255,255,255,0.1)"}`,borderTop:"none",background:"rgba(8,10,22,0.96)",color:"#cfd8d8",fontSize:12,opacity:x||O||C||D?1:.55,boxShadow:O?"0 6px 20px rgba(0,0,0,0.35)":"none",transition:"padding 0.18s ease, opacity 0.18s ease"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:4,overflowX:"auto"},children:[x&&(0,t.jsx)("div",{role:"tablist","aria-label":"View",style:{display:"flex",gap:2},children:x.items.map(e=>{let r=e.key===x.current;return(0,t.jsxs)("button",{role:"tab","aria-selected":r,title:e.title,onClick:()=>x.onPick(e.key),style:{display:"flex",alignItems:"center",gap:6,padding:"5px 11px",borderRadius:8,border:"none",cursor:"pointer",whiteSpace:"nowrap",fontSize:12,fontWeight:600,background:r?"rgba(52,152,219,0.22)":"transparent",color:r?"#cfe6f7":"#8b9aa8"},children:[e.icon&&(0,t.jsx)("span",{"aria-hidden":"true",children:e.icon}),e.label]},e.key)})}),x&&E&&(0,t.jsx)("span",{"aria-hidden":"true",style:{width:1,alignSelf:"stretch",margin:"3px 4px",background:"rgba(255,255,255,0.12)"}}),E&&(0,t.jsxs)("button",{onMouseEnter:()=>g(!0),onClick:()=>m(e=>!e),"aria-expanded":D,title:D?"Close":"Open",style:{display:"flex",alignItems:"center",gap:8,background:"none",border:"none",color:"inherit",font:"inherit",cursor:"pointer",padding:"5px 8px",whiteSpace:"nowrap"},children:[(0,t.jsx)("span",{className:O?"notch-pulse":void 0,style:{width:7,height:7,borderRadius:"50%",background:F,flexShrink:0}}),(0,t.jsxs)("span",{role:"status","aria-live":"polite",style:{display:"flex",alignItems:"center",gap:8},children:[(0,t.jsx)("b",{style:{color:O||C?"#fff":"#b8c4c4",fontWeight:600},children:L}),I&&(0,t.jsx)("span",{style:{color:"#8b9a9a"},children:I})]}),!O&&!C&&D&&(0,t.jsx)("span",{style:{color:"#8b9a9a"},children:"ready · press Auto scan beside Scan to start"})]})]}),E&&null!=A&&(0,t.jsx)("div",{style:{height:2,margin:"3px 6px 0",borderRadius:2,background:"rgba(255,255,255,0.08)",overflow:"hidden"},children:(0,t.jsx)("div",{style:{width:`${Math.round(100*A)}%`,height:"100%",background:O?"#00ff88":"#3498DB",transition:"width 0.4s ease"}})}),D&&O&&(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,margin:"8px 8px 0",flexWrap:"wrap"},children:[c.target?.name&&(0,t.jsx)("span",{children:c.target.name}),k&&(0,t.jsxs)("span",{style:{color:(e=k.searches,(s=k.cap)?e/s>=.9?"#ff6b6b":e/s>=.6?"#FFD700":"#00ff88":"#8b9a9a")},title:"Searches on your LinkedIn account in the last 24 hours, and your daily budget",children:[k.searches,k.cap?` of ${k.cap}`:""," searches today"]}),M&&(0,t.jsx)("span",{style:{color:"#667",maxWidth:280,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:M,children:M}),(0,t.jsx)(a.default,{href:"/setup",style:{color:"#3498DB",textDecoration:"none"},children:"Details"}),(0,t.jsx)("button",{onClick:async()=>{p(!0);try{await (0,o.stopScrape)()}catch{p(!1)}},disabled:f,title:"Stops after saving what's been read; Resume on the Scan page carries on from the same page",style:{padding:"3px 10px",borderRadius:8,fontSize:12,cursor:f?"default":"pointer",background:"rgba(255,107,107,0.12)",color:"#ff9b9b",border:"1px solid rgba(255,107,107,0.35)"},children:f?"Stopping…":"Stop"})]}),D&&!O&&C?.detail&&(0,t.jsx)("div",{style:{margin:"6px 8px 0",color:"#8b9a9a"},children:C.detail})]})}])},87915,e=>{"use strict";var t=e.i(71645),r=e.i(40996),n=e.i(64745);let a=!1;e.s(["default",0,function(){return(0,t.useEffect)(()=>{if(n.IS_DEMO||a)return;let e=()=>{};return fetch("/api/social").then(e=>e.json()).then(({social:t})=>{if(!t?.autoSync||a)return;let n=t.liveAt?Date.parse(t.liveAt):0,o=new Date().getHours();Date.now()-n<864e5||o<9||o>=19||(e=(0,r.watchScanner)(()=>{let t=(0,r.scannerNow)();t.known&&!a&&(a=!0,e(),t.running||(0,r.beginScrape)("messages").catch(()=>{}))}))}).catch(()=>{}),()=>e()},[]),null}])},37711,e=>{"use strict";var t=e.i(43476),r=e.i(71645);e.s(["default",0,function(){let[e,n]=(0,r.useState)(null);return((0,r.useEffect)(()=>{let e=!0;return fetch("/api/update").then(e=>e.json()).then(t=>{e&&t?.restartNeeded&&n(t)}).catch(()=>{}),()=>{e=!1}},[]),e)?(0,t.jsxs)("div",{role:"status",style:{position:"fixed",left:0,right:0,bottom:0,zIndex:9999,background:"linear-gradient(90deg, #FFD700, #FF6B35)",color:"#1a1200",padding:"9px 16px",fontSize:13,fontWeight:600,lineHeight:1.5,display:"flex",alignItems:"center",justifyContent:"center",gap:10,flexWrap:"wrap",textAlign:"center"},children:[(0,t.jsxs)("span",{children:["You have newer code on disk (",e.sha,") than this server is running (",e.bootSha,"). Restart it to see the changes — ",(0,t.jsx)("code",{style:{background:"rgba(0,0,0,0.16)",padding:"1px 6px",borderRadius:4},children:"Ctrl-C"})," in the terminal, then ",(0,t.jsx)("code",{style:{background:"rgba(0,0,0,0.16)",padding:"1px 6px",borderRadius:4},children:"npm run dev"}),"."]}),(0,t.jsx)("button",{onClick:()=>n(null),style:{border:"none",background:"rgba(0,0,0,0.18)",color:"#1a1200",borderRadius:6,padding:"3px 10px",fontWeight:700,cursor:"pointer"},children:"Dismiss"})]}):null}])},15812,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(65084),a=e.i(64745),o=e.i(7837);let l=(0,r.createContext)({userId:null,userName:null,userProfile:null,ready:!1});e.s(["default",0,function({children:e}){let[u,i]=(0,r.useState)(null),[s,c]=(0,r.useState)(null),[d,f]=(0,r.useState)(null),[p,h]=(0,r.useState)(!1);return(0,r.useEffect)(()=>{if(a.IS_DEMO){i(a.DEMO_USER.id),c(a.DEMO_USER.name),f({name:a.DEMO_USER.name,headline:a.DEMO_USER.headline,role:"",company:"",industry:"",sectors:[],goals:[],linkedin_url:""}),h(!0);return}if((0,o.hasCsvNetwork)()){i(o.CSV_USER.id),c(o.CSV_USER.name),f({name:o.CSV_USER.name,headline:"Imported from your LinkedIn CSV",role:"",company:"",industry:"",sectors:[],goals:[],linkedin_url:""}),h(!0);return}fetch("/api/users?me=1").then(e=>e.json()).then(e=>{let t=e.user;if(!t)throw Error("no profile");(0,n.setUser)(t.id,t.name),i(t.id),c(t.name),f({name:t.name,headline:t.headline||"",role:t.role||"",company:t.company||"",industry:t.industry||"",sectors:t.sectors||[],goals:t.goals||[],linkedin_url:t.linkedin_url||""})}).catch(()=>{(0,n.hasUser)()&&(i((0,n.getUserId)()),c((0,n.getUserName)()))}).finally(()=>h(!0))},[]),(0,t.jsx)(l.Provider,{value:{userId:u,userName:s,userProfile:d,ready:p,login:(e,t)=>{(0,n.setUser)(e,t),i(e),c(t),fetch(`/api/users?id=${e}`).then(e=>e.json()).then(e=>{e.user&&f({name:e.user.name,headline:e.user.headline||"",role:e.user.role||"",company:e.user.company||"",industry:e.user.industry||"",sectors:e.user.sectors||[],goals:e.user.goals||[],linkedin_url:e.user.linkedin_url||""})}).catch(()=>{})}},children:e})},"useUser",0,function(){return(0,r.useContext)(l)}])},64745,e=>{"use strict";var t=e.i(47167),r=e.i(7837);let n="true"===t.default.env.NEXT_PUBLIC_DEMO_MODE,a=null;async function o(){if(a)return a;let e=await fetch("/demo-data.json",{cache:"no-cache"});if(!e.ok)throw Error("demo-data.json not found — run: node scripts/gen-synthetic.mjs");let t=await e.json();return a={degree1:t.degree1||[],degree2:t.degree2||[]}}async function l(){let e=await o();return(0,r.saveSessionNetwork)({degree1:e.degree1,degree2:e.degree2,source:"sample"}),{degree1:e.degree1.length,degree2:e.degree2.length}}e.s(["DEMO_USER",0,{id:"synthetic-demo-user",name:"You",headline:"Sample network"},"IS_DEMO",0,n,"loadDemoNetwork",0,o,"loadSampleIntoSession",0,l])},68792,e=>{"use strict";var t=e.i(40996);let r=(e,t)=>{try{let r=localStorage.getItem(e);return null===r?t:JSON.parse(r)}catch{return t}};e.s(["allDayNow",0,function(){try{return"true"===localStorage.getItem("six-degrees-experimental-auto")}catch{return!1}},"startAutoScan",0,function(){let e=r("six-degrees-bridge-order","newest");return(0,t.beginScrape)("auto-bridge",{experimental:!0,maxBridges:10,order:e,tiers:"score"===e?["S","A"]:[],maxPages:r("six-degrees-bridge-pages-v2",100),deeper:r("six-degrees-bridge-finish",!0)})},"watchAllDay",0,function(e){return window.addEventListener("storage",e),window.addEventListener("six-degrees:experimental",e),()=>{window.removeEventListener("storage",e),window.removeEventListener("six-degrees:experimental",e)}}])},99883,e=>{"use strict";let t=new Set,r=[],n=[],a=new Set,o=null,l=new Set,u=!1;e.s(["activitiesNow",0,()=>r,"noActivities",0,()=>n,"noNotch",0,()=>!1,"noNotchTabs",0,()=>null,"notchShownNow",0,()=>u,"notchTabsNow",0,()=>o,"setNotchShown",0,function(e){!!e!==u&&(u=!!e,l.forEach(e=>e()))},"setNotchTabs",0,function(e){o=e&&Array.isArray(e.items)&&e.items.length>1?e:null,a.forEach(e=>e())},"showActivity",0,function(e){return e?.id?(r=[...r.filter(t=>t.id!==e.id),e],t.forEach(e=>e()),()=>{var n;return n=e.id,void(r.some(e=>e.id===n)&&(r=r.filter(e=>e.id!==n),t.forEach(e=>e())))}):()=>{}},"watchActivities",0,function(e){return t.add(e),()=>t.delete(e)},"watchNotchShown",0,function(e){return l.add(e),()=>l.delete(e)},"watchNotchTabs",0,function(e){return a.add(e),()=>a.delete(e)}])},40996,e=>{"use strict";async function t(){let e=await fetch("/api/scraper");if(!e.ok)throw Error("Could not reach the app.");return e.json()}Symbol.for("six-degrees.scan-state");let r="six-degrees-hide-chrome";function n(e,t={},a=function(e="u">typeof localStorage?localStorage:null){try{return!0===JSON.parse(e?.getItem(r)||"false")}catch{return!1}}()){return{action:e,...t,...a?{headless:!0}:{}}}async function a(e,t,r={}){let o=await fetch("/api/scraper",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n(e,{...t?{name:t}:{},...r}))}),l=await o.json().catch(()=>({}));if(!o.ok)throw Error(l.error||"Could not start the scanner.");return l}async function o(e){let t=await fetch(`/api/scraper?resume=${encodeURIComponent(e)}`);return t.ok?(await t.json()).resume??null:null}let l=Object.freeze({skips:[],read:[]});async function u(){try{let e=await fetch("/api/scraper?reach=1");if(!e.ok)return l;let t=await e.json();return{skips:Array.isArray(t.skips)?t.skips:[],read:Array.isArray(t.read)?t.read:[]}}catch{return l}}async function i(e){let t=await fetch(`/api/scraper?person=${encodeURIComponent(e)}`);return t.ok?t.json():{person:null}}async function s(){await fetch("/api/scraper",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"cancel"})})}let c=Object.freeze({known:!1,running:!1,pending:!1,action:null,target:null,startedAt:null,progress:null,log:[],finished:[]}),d=new Set,f=c,p=JSON.stringify(f),h=null,g=null,y=0,m=!1,b=new Set;function v(e){let t=JSON.stringify(e);if(t!==p)for(let r of(p=t,f=Object.freeze(e),[...d]))r()}async function x(){(!("u">typeof document&&document.hidden)||f.running)&&await function(){if(g&&g.epoch===y)return g.promise;let e=y,t=fetch("/api/scraper?job=1").then(e=>e.ok?e.json():null).then(t=>{e===y&&function(e){if(!e||"object"!=typeof e)return;let t=!0===e.running;t&&null!=e.startedAt&&b.add(e.startedAt);let r=(Array.isArray(e.recent)?e.recent:[]).filter(e=>b.has(e.startedAt)).map(r=>({...r,log:!t&&r.startedAt===e.startedAt&&Array.isArray(e.log)?e.log:[]}));v({known:!0,running:t||m,pending:m&&!t,action:t?e.action??null:m?f.action:null,target:t?e.target??null:m?f.target:null,startedAt:t?e.startedAt??null:null,progress:t?e.progress??null:null,budget:t?e.budget??null:null,log:t&&Array.isArray(e.log)?e.log:[],finished:r})}(t)}).catch(()=>{}).finally(()=>{g?.promise===t&&(g=null)});return g={epoch:e,promise:t},t}(),clearTimeout(h),h=d.size?setTimeout(x,f.running?1500:5e3):null}function S(e){return d.add(e),1===d.size&&x(),()=>{d.delete(e),d.size||(clearTimeout(h),h=null)}}async function _(e,{name:t,id:r,onLog:n,...o}={}){let l;y++,m=!0,v({...f,known:!0,running:!0,pending:!0,action:e,target:t||r?{id:r??null,name:t??null}:null,startedAt:null,progress:null,log:[]});try{l=await a(e,t,{...r?{id:r}:{},...o})}catch(e){throw m=!1,y++,f.pending&&v({...f,running:!1,pending:!1,action:null,target:null,log:[]}),x(),e}m=!1,y++;let u=l?.startedAt??null;null!=u&&b.add(u);let i=new Promise(e=>{let t=S(()=>{f.running&&f.startedAt===u&&n?.(f.log);let r=null==u?f.running?null:{exitCode:null,failure:null,log:[]}:f.finished.find(e=>e.startedAt===u);r&&(t(),r.log.length&&n?.(r.log),e(r))});x()});return{startedAt:u,ended:i}}function j(e){return!!e?.target&&["bridge","rescrape","resume"].includes(e.action)}e.s(["HIDE_CHROME_KEY",0,r,"NO_SCAN_NOTES",0,l,"SCANNER_UNKNOWN",0,c,"beginScrape",0,_,"busyReason",0,function(e=f){if(!e?.running)return null;let t=e.target?.name;switch(e.action){case"bridge":case"rescrape":case"resume":return t?`${t}’s circle is being scanned`:"A circle is being scanned";case"company":return t?`${t} is being scanned`:"A company is being scanned";case"auto-bridge":case"auto-bridge-retry":case"resume-all":return"Your bridges are being mapped, one by one";case"full":case"refresh":return"Your own connections are being scanned";default:switch(e.action){case"install":return"The scanner's packages are being installed";case"setup":return"The scanner is being set up";case"login":return"The LinkedIn sign-in window is open";case"photos":return"Profile photos are being saved";default:return"A scan is running"}}},"isCircleScan",0,j,"loadScanNotes",0,u,"notReadyMessage",0,function(e){if(!e)return"Could not reach the app.";let t=e.checks||{};return t.scriptsFound?t.dependencies?t.chrome?null:"Google Chrome is not installed.":t.python||t.download?"The scanner is not set up yet — open Scan to set it up.":"No Python 3.10 to 3.14 is installed on this machine.":"The scanner files are missing from this install."},"pickedPerson",0,i,"resumePoint",0,o,"runScrape",0,function(e,t={}){return _(e,t).then(e=>e.ended)},"scanRequest",0,n,"scannerNow",0,function(){return f},"scansCircleOf",0,function(e,t){if(!j(e)||!t)return!1;let{id:r,name:n}=e.target;return r&&t.id?r===t.id:!!n&&n===t.name},"scraperStatus",0,t,"stopScrape",0,s,"watchScanner",0,S],40996)},22016,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var n={default:function(){return m},useLinkStatus:function(){return v}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(90809),l=e.r(43476),u=o._(e.r(71645)),i=e.r(95057),s=e.r(8372),c=e.r(18581),d=e.r(18967),f=e.r(5550),p=e.r(88540),h=e.r(91949),g=e.r(73668),y=e.r(9396);function m(t){var r;let n,a,o,[m,v]=(0,u.useOptimistic)(h.IDLE_LINK_STATUS),x=(0,u.useRef)(null),{href:S,as:_,children:j,prefetch:P=null,passHref:w,replace:O,shallow:C,scroll:E,onClick:R,onMouseEnter:N,onTouchStart:T,legacyBehavior:A=!1,onNavigate:k,transitionTypes:M,ref:D,unstable_dynamicOnHover:F,...L}=t;n=j,A&&("string"==typeof n||"number"==typeof n)&&(n=(0,l.jsx)("a",{children:n}));let I=u.default.useContext(s.AppRouterContext),B=!1!==P,U=!1===P?"none":!0===P?"full":"auto",$="none"!==U?"auto"===U?y.FetchStrategy.PPR:y.FetchStrategy.Full:y.FetchStrategy.PPR,z="string"==typeof(r=_||S)?r:(0,i.formatUrl)(r);if(A){if(n?.$$typeof===Symbol.for("react.lazy"))throw Object.defineProperty(Error("`<Link legacyBehavior>` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's `<a>` tag."),"__NEXT_ERROR_CODE",{value:"E863",enumerable:!1,configurable:!0});a=u.default.Children.only(n)}let H=A?a&&"object"==typeof a&&a.ref:D,V,K=u.default.useCallback(e=>(null!==I&&(x.current=(0,h.mountLinkInstance)(e,z,I,$,B,v,V)),()=>{x.current&&((0,h.unmountLinkForCurrentNavigation)(x.current),x.current=null),(0,h.unmountPrefetchableInstance)(e)}),[B,z,I,$,v,V]),W={ref:(0,c.useMergedRef)(K,H),onClick(t){A||"function"!=typeof R||R(t),A&&a.props&&"function"==typeof a.props.onClick&&a.props.onClick(t),!I||t.defaultPrevented||function(t,r,n,a,o,l,i,s="none"){if("u">typeof window){let c,{nodeName:d}=t.currentTarget;if("A"===d.toUpperCase()&&((c=t.currentTarget.getAttribute("target"))&&"_self"!==c||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey||t.nativeEvent&&2===t.nativeEvent.which)||t.currentTarget.hasAttribute("download"))return;if(!(0,g.isLocalURL)(r)){a&&(t.preventDefault(),location.replace(r));return}if(t.preventDefault(),l){let e=!1;if(l({preventDefault:()=>{e=!0}}),e)return}let{dispatchNavigateAction:f}=e.r(99781);u.default.startTransition(()=>{f(r,a?"replace":"push",!1===o?p.ScrollBehavior.NoScroll:p.ScrollBehavior.Default,n.current,i,s)})}}(t,z,x,O,E,k,M,U)},onMouseEnter(e){A||"function"!=typeof N||N(e),A&&a.props&&"function"==typeof a.props.onMouseEnter&&a.props.onMouseEnter(e),I&&B&&(0,h.onNavigationIntent)(e.currentTarget,!0===F)},onTouchStart:function(e){A||"function"!=typeof T||T(e),A&&a.props&&"function"==typeof a.props.onTouchStart&&a.props.onTouchStart(e),I&&B&&(0,h.onNavigationIntent)(e.currentTarget,!0===F)}};return(0,d.isAbsoluteUrl)(z)?W.href=z:A&&!w&&("a"!==a.type||"href"in a.props)||(W.href=(0,f.addBasePath)(z)),o=A?u.default.cloneElement(a,W):(0,l.jsx)("a",{...L,...W,children:n}),(0,l.jsx)(b.Provider,{value:m,children:o})}let b=(0,u.createContext)(h.IDLE_LINK_STATUS),v=()=>(0,u.useContext)(b);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},28298,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useRouterBFCache",{enumerable:!0,get:function(){return a}});let n=e.r(71645);function a(e,t,r){let[a,o]=(0,n.useState)(()=>({tree:e,cacheNode:t,stateKey:r,next:null}));if(a.tree===e)return a;let l={tree:e,cacheNode:t,stateKey:r,next:null},u=1,i=a,s=l;for(;null!==i&&u<1;){if(i.stateKey===r){s.next=i.next;break}{u++;let e={tree:i.tree,cacheNode:i.cacheNode,stateKey:i.stateKey,next:null};s.next=e,s=e}i=i.next}return o(l),l}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},47257,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientPageRoot",{enumerable:!0,get:function(){return s}});let n=e.r(43476),a=e.r(8372),o=e.r(71645),l=e.r(33906),u=e.r(61994),i=e.r(15783);function s({Component:e,serverProvidedParams:t}){let r,c;if(null!==t)r=t.searchParams,c=t.params;else{let e=(0,o.use)(a.LayoutRouterContext);c=null!==e?e.parentParams:{},r=(0,l.urlSearchParamsToParsedUrlQuery)((0,o.use)(u.SearchParamsContext))}let d=(0,i.createClientSearchParams)(r),f=(0,i.createClientParams)(c);return(0,n.jsx)(e,{params:f,searchParams:d})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},92825,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ClientSegmentRoot",{enumerable:!0,get:function(){return u}});let n=e.r(43476),a=e.r(8372),o=e.r(71645),l=e.r(15783);function u({Component:e,slots:t,serverProvidedParams:r}){let i;if(null!==r)i=r.params;else{let e=(0,o.use)(a.LayoutRouterContext);i=null!==e?e.parentParams:{}}let s=(0,l.createClientParams)(i);return(0,n.jsx)(e,{...t,params:s})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},68017,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"HTTPAccessFallbackBoundary",{enumerable:!0,get:function(){return c}});let n=e.r(90809),a=e.r(43476),o=n._(e.r(71645)),l=e.r(90373),u=e.r(54394),i=e.r(8372);class s extends o.default.Component{constructor(e){super(e),this.state={triggeredStatus:void 0,previousPathname:e.pathname}}componentDidCatch(){}static getDerivedStateFromError(e){if((0,u.isHTTPAccessFallbackError)(e))return{triggeredStatus:(0,u.getAccessFallbackHTTPStatus)(e)};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.triggeredStatus?{triggeredStatus:void 0,previousPathname:e.pathname}:{triggeredStatus:t.triggeredStatus,previousPathname:e.pathname}}render(){let{notFound:e,forbidden:t,unauthorized:r,children:n}=this.props,{triggeredStatus:o}=this.state,l={[u.HTTPAccessErrorStatus.NOT_FOUND]:e,[u.HTTPAccessErrorStatus.FORBIDDEN]:t,[u.HTTPAccessErrorStatus.UNAUTHORIZED]:r};if(o){let i=o===u.HTTPAccessErrorStatus.NOT_FOUND&&e,s=o===u.HTTPAccessErrorStatus.FORBIDDEN&&t,c=o===u.HTTPAccessErrorStatus.UNAUTHORIZED&&r;return i||s||c?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("meta",{name:"robots",content:"noindex"}),!1,l[o]]}):n}return n}}function c({notFound:e,forbidden:t,unauthorized:r,children:n}){let u=(0,l.useUntrackedPathname)(),d=(0,o.useContext)(i.MissingSlotContext);return e||t||r?(0,a.jsx)(s,{pathname:u,notFound:e,forbidden:t,unauthorized:r,missingSlots:d,children:n}):(0,a.jsx)(a.Fragment,{children:n})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},22976,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={InstantValidationBoundaryContext:function(){return o},PlaceValidationBoundaryBelowThisLevel:function(){return l},RenderValidationBoundaryAtThisLevel:function(){return u},SlotMarker:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=null,l=null,u=null,i=null;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},77694,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={InstantValidationBoundaryContext:function(){return o.InstantValidationBoundaryContext},PlaceValidationBoundaryBelowThisLevel:function(){return o.PlaceValidationBoundaryBelowThisLevel},RenderValidationBoundaryAtThisLevel:function(){return o.RenderValidationBoundaryAtThisLevel},SlotMarker:function(){return o.SlotMarker}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(22976);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},39756,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var n={LoadingBoundaryProvider:function(){return w},default:function(){return C}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(55682),l=e.r(90809),u=e.r(43476),i=l._(e.r(71645)),s=o._(e.r(74080)),c=e.r(8372),d=e.r(1244),f=e.r(72383),p=e.r(91915),h=e.r(58442),g=e.r(68017);e.r(77694);let y=e.r(70725),m=e.r(28298);e.r(74180);let b=e.r(61994),v=e.r(33906),x=e.r(95871);s.default.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function S(e,t,r){let n=e.getClientRects();if(0===n.length)return 0;let a=1/0;for(let e=0;e<n.length;e++){let t=n[e];t.top<a&&(a=t.top)}return a>=r()&&a<=t?1:2}i.default.Component;let _=function(e){let t=i.default.useRef(null);return(0,i.useLayoutEffect)(()=>{let{focusAndScrollRef:r,cacheNode:n}=e,a=r.forceScroll?r.scrollRef:n.scrollRef;if(null===a||!a.current)return;let o=null,l=r.hashFragment;if(l){var u;if(null===(o="top"===(u=l)?document.body:document.getElementById(u)??document.getElementsByName(u)[0]??null)){a.current=!1,r.onlyHashChange=!1,r.hashFragment=null;return}}else o=t.current;if(null===o)return;let i=!1;(0,p.disableSmoothScrollDuringRouteTransition)(()=>{let e=document.documentElement,t=null,r=null,n=null,u=()=>{var r,a;let o,l;return null===n&&(r=e,a=t,n=!Number.isFinite(l=Number.parseFloat(o=getComputedStyle(r).scrollPaddingTop))||l<0?0:o.endsWith("px")?l:o.endsWith("%")?l/100*a:0),n};(l||(t=e.clientHeight,0!==(r=S(o,t,u))))&&((i=!0,a.current=!1,l)?o.scrollIntoView():1!==r&&(e.scrollTop=0,2===S(o,t,u)&&o.scrollIntoView()))},{dontForceLayout:!0,onlyHashChange:r.onlyHashChange}),i&&(r.onlyHashChange=!1,r.hashFragment=null)},void 0),(0,u.jsx)(i.Fragment,{ref:t,children:e.children})};function j({children:e,cacheNode:t}){let r=(0,i.useContext)(c.GlobalLayoutRouterContext);if(!r)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});return(0,u.jsx)(_,{focusAndScrollRef:r.focusAndScrollRef,cacheNode:t,children:e})}function P({tree:e,segmentPath:t,debugNameContext:r,cacheNode:n,params:a,url:o,isActive:l}){let s,f=(0,i.useContext)(c.GlobalLayoutRouterContext);if((0,i.useContext)(b.NavigationPromisesContext),!f)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});let p=null!==n?n:(0,i.use)(d.unresolvedThenable),h=null!==p.prefetchRsc?p.prefetchRsc:p.rsc,g=(0,i.useDeferredValue)(p.rsc,h);if((0,x.isDeferredRsc)(g)){let e=(0,i.use)(g);null===e&&(0,i.use)(d.unresolvedThenable),s=e}else null===g&&(0,i.use)(d.unresolvedThenable),s=g;let y=s;return(0,u.jsx)(c.LayoutRouterContext.Provider,{value:{parentTree:e,parentCacheNode:p,parentSegmentPath:t,parentParams:a,parentLoadingData:null,debugNameContext:r,url:o,isActive:l},children:y})}function w({loading:e,children:t}){let r=(0,i.use)(c.LayoutRouterContext);return null===r?t:(0,u.jsx)(c.LayoutRouterContext.Provider,{value:{parentTree:r.parentTree,parentCacheNode:r.parentCacheNode,parentSegmentPath:r.parentSegmentPath,parentParams:r.parentParams,parentLoadingData:e,debugNameContext:r.debugNameContext,url:r.url,isActive:r.isActive},children:t})}function O({name:e,loading:t,children:r}){if(null!==t){let n=t[0],a=t[1],o=t[2];return(0,u.jsx)(i.Suspense,{name:e,fallback:(0,u.jsxs)(u.Fragment,{children:[a,o,n]}),children:r})}return(0,u.jsx)(u.Fragment,{children:r})}function C({parallelRouterKey:e,error:t,errorStyles:r,errorScripts:n,templateStyles:a,templateScripts:o,template:l,notFound:s,forbidden:p,unauthorized:b,segmentViewBoundaries:x}){let S=(0,i.useContext)(c.LayoutRouterContext);if(!S)throw Object.defineProperty(Error("invariant expected layout router to be mounted"),"__NEXT_ERROR_CODE",{value:"E56",enumerable:!1,configurable:!0});let{parentTree:_,parentCacheNode:w,parentSegmentPath:E,parentParams:R,parentLoadingData:N,url:T,isActive:A,debugNameContext:k}=S,M=_[0],D=null===E?[e]:E.concat([M,e]),F=_[1][e],L=w.slots;(void 0===F||null===L)&&(0,i.use)(d.unresolvedThenable);let I=F[0],B=L[e]??null,U=(0,y.createRouterCacheKey)(I,!0),$=(0,m.useRouterBFCache)(F,B,U),z=[];do{let e=$.tree,i=$.cacheNode,d=$.stateKey,y=e[0],m=R;if(Array.isArray(y)){let e=y[0],t=y[1],r=y[2],n=(0,v.getParamValueFromCacheKey)(t,r);null!==n&&(m={...R,[e]:n})}let x=function(e){if("/"===e)return"/";if("string"==typeof e)if("(__SLOT__)"===e)return;else return e+"/";return e[1]+"/"}(y),S=x??k,_=void 0===x?void 0:k,w=(0,u.jsxs)(j,{cacheNode:i,children:[(0,u.jsx)(f.ErrorBoundary,{errorComponent:t,errorStyles:r,errorScripts:n,children:(0,u.jsx)(O,{name:_,loading:N,children:(0,u.jsx)(g.HTTPAccessFallbackBoundary,{notFound:s,forbidden:p,unauthorized:b,children:(0,u.jsxs)(h.RedirectBoundary,{children:[(0,u.jsx)(P,{url:T,tree:e,params:m,cacheNode:i,segmentPath:D,debugNameContext:S,isActive:A&&d===U}),null]})})})}),null]}),C=(0,u.jsxs)(c.TemplateContext.Provider,{value:w,children:[a,o,l]},d);z.push(C),$=$.next}while(null!==$)return z}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},37457,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return u}});let n=e.r(90809),a=e.r(43476),o=n._(e.r(71645)),l=e.r(8372);function u(){let e=(0,o.useContext)(l.TemplateContext);return(0,a.jsx)(a.Fragment,{children:e})}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},6831,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},97689,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(6831).createRenderParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},93504,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return a}});let n=new WeakMap;function a(e){let t=n.get(e);if(t)return t;let r=Promise.resolve(e);return n.set(e,r),r}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},66996,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return n}});let n=e.r(93504).createRenderSearchParamsFromClient;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},15783,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={createClientParams:function(){return o.createRenderParamsFromClient},createClientSearchParams:function(){return l.createRenderSearchParamsFromClient}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(97689),l=e.r(66996);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18581,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"useMergedRef",{enumerable:!0,get:function(){return a}});let n=e.r(71645);function a(e,t){let r=(0,n.useRef)(null),a=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=a.current;t&&(a.current=null,t())}else e&&(r.current=o(e,n)),t&&(a.current=o(t,n))},[e,t])}function o(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},18967,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return m},MiddlewareNotFoundError:function(){return S},MissingStaticPage:function(){return x},NormalizeError:function(){return b},PageNotFoundError:function(){return v},SP:function(){return g},ST:function(){return y},WEB_VITALS:function(){return o},execOnce:function(){return l},getDisplayName:function(){return d},getLocationOrigin:function(){return s},getURL:function(){return c},isAbsoluteUrl:function(){return i},isResSent:function(){return f},loadGetInitialProps:function(){return h},normalizeRepeatedSlashes:function(){return p},stringifyError:function(){return _}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=["CLS","FCP","FID","INP","LCP","TTFB"];function l(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let u=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,i=e=>{let t=e.charCodeAt(0);return!!(t>=65&&t<=90||t>=97&&t<=122)&&u.test(e)};function s(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=s();return e.substring(t.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function p(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function h(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await h(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return n}let g="u">typeof performance,y=g&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class m extends Error{}class b extends Error{}class v extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class x extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class S extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function _(e){return JSON.stringify({message:e.message,stack:e.stack})}},27201,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"IconMark",{enumerable:!0,get:function(){return a}});let n=e.r(43476),a=()=>"u">typeof window?null:(0,n.jsx)("meta",{name:"«nxt-icon»"})},91915,(e,t,r)=>{"use strict";function n(e,t={}){if(t.onlyHashChange)return void e();let r=document.documentElement;if("smooth"!==r.dataset.scrollBehavior)return void e();let a=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=a}e.i(47167),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"disableSmoothScrollDuringRouteTransition",{enumerable:!0,get:function(){return n}})},73668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isLocalURL",{enumerable:!0,get:function(){return o}});let n=e.r(18967),a=e.r(52817);function o(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,a.hasBasePath)(r.pathname)}catch(e){return!1}}},98183,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return i},searchParamsToUrlQuery:function(){return o},urlQueryToSearchParams:function(){return u}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});function o(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function l(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function u(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,l(e));else t.set(r,l(n));return t}function i(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},95057,(e,t,r)=>{"use strict";e.i(47167),Object.defineProperty(r,"__esModule",{value:!0});var n={formatUrl:function(){return u},formatWithValidation:function(){return s},urlObjectKeys:function(){return i}};for(var a in n)Object.defineProperty(r,a,{enumerable:!0,get:n[a]});let o=e.r(90809)._(e.r(98183)),l=/https?|ftp|gopher|file/;function u(e){let{auth:t,hostname:r}=e,n=e.protocol||"",a=e.pathname||"",u=e.hash||"",i=e.query||"",s=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?s=t+e.host:r&&(s=t+(~r.indexOf(":")?`[${r}]`:r),e.port&&(s+=":"+e.port)),i&&"object"==typeof i&&(i=String(o.urlQueryToSearchParams(i)));let c=e.search||i&&`?${i}`||"";return n&&!n.endsWith(":")&&(n+=":"),e.slashes||(!n||l.test(n))&&!1!==s?(s="//"+(s||""),a&&"/"!==a[0]&&(a="/"+a)):s||(s=""),u&&"#"!==u[0]&&(u="#"+u),c&&"?"!==c[0]&&(c="?"+c),a=a.replace(/[?#]/g,encodeURIComponent),c=c.replace("#","%23"),`${n}${s}${a}${c}${u}`}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function s(e){return u(e)}},18566,(e,t,r)=>{t.exports=e.r(76562)}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,26005,e=>{"use strict";var t=e.i(43476),n=e.i(22016),r=e.i(64745);let o=[{key:"network",label:"Network Circle",short:"Circle",on:{background:"#fff",color:"#000"},off:{background:"transparent",color:"#888"}},{key:"degrees",label:"Degrees",on:{background:"linear-gradient(135deg, #FFD700, #FF6B35)",color:"#000"},off:{background:"rgba(255,255,255,0.12)",color:"#fff"}},{key:"separation",label:"Separation",on:{background:"linear-gradient(135deg, #00E5FF, #FFD700 55%, #FF7043)",color:"#000"},off:{background:"rgba(255,255,255,0.12)",color:"#fff"}}],i=[{key:"paths",href:"/paths",label:"Paths",color:"#00ff88",on:"linear-gradient(135deg, #00ff88, #3498DB)",demo:!0},{key:"outlink",href:"/queue",label:"Outlink",color:"#FF6B35",on:"linear-gradient(135deg, #FF6B35, #FFD700)",own:!0},{key:"scan",href:"/setup",label:"Scan",color:"#666",on:"linear-gradient(135deg, #00ff88, #1abc9c)",own:!0}];e.s(["default",0,function({active:e,isMobile:a=!1,csvMode:l=!1,onMode:s,children:c,after:u}){let d={padding:a?"6px 10px":"8px 16px",borderRadius:6,border:"none",fontSize:a?11:13,fontWeight:600,textDecoration:"none"};return(0,t.jsxs)("div",{id:"main-tabs",style:{display:"flex",gap:a?2:4,background:"rgba(255,255,255,0.08)",borderRadius:8,padding:a?2:3,flexWrap:a?"wrap":"nowrap"},children:[o.map(r=>{let o={...d,cursor:"pointer",...e===r.key?r.on:r.off},i=a&&r.short?r.short:r.label;return s?(0,t.jsx)("button",{type:"button",onClick:()=>s(r.key),style:o,children:i},r.key):(0,t.jsx)(n.default,{href:`/?mode=${r.key}`,style:{...o,display:"flex",alignItems:"center"},children:i},r.key)}),c,i.filter(e=>!r.IS_DEMO&&(!e.own||!l)).map(r=>{let o=e===r.key;return(0,t.jsxs)(n.default,{href:r.href,title:r.title,"aria-current":o?"page":void 0,style:{...d,display:"flex",alignItems:"center",gap:4,background:o?r.on:"rgba(255,255,255,0.06)",color:o?"#000":r.color},children:[r.label,r.badge&&(0,t.jsx)("span",{style:{fontSize:9,opacity:.7,marginLeft:2},children:r.badge})]},r.key)}),u]})}])},2776,e=>{"use strict";var t=e.i(43476),n=e.i(15812);e.s(["default",0,function({children:e}){let{userId:r,ready:o}=(0,n.useUser)();return o&&r?e:(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#0a0a1a",color:"#fff",padding:24,textAlign:"center",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:o?(0,t.jsxs)("div",{style:{maxWidth:420},children:[(0,t.jsx)("div",{style:{fontSize:18,fontWeight:700,marginBottom:8},children:"Can’t reach Six Degrees’ local server"}),(0,t.jsx)("div",{style:{color:"#888",fontSize:14,lineHeight:1.6},children:"The page loaded but the app behind it is not answering. If you started it from a terminal, check that window for an error, then reload this page."})]}):(0,t.jsx)("div",{style:{fontSize:18,fontWeight:600},children:"Loading…"})})}])},8819,e=>{"use strict";var t=e.i(43476);let n="1px solid rgba(255,255,255,0.1)";function r({children:e,style:n}){return(0,t.jsx)("div",{style:{fontSize:13.5,color:"#8b9a9a",lineHeight:1.6,marginTop:4,...n},children:e})}e.s(["Body",0,r,"Btn",0,function({children:e,onClick:r,disabled:o,primary:i,tone:a,type:l="button"}){return(0,t.jsx)("button",{type:l,onClick:r,disabled:o,style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:650,color:o?"#667":"#fff",border:n,background:o?"rgba(255,255,255,0.05)":"bad"===a?"rgba(255,80,80,0.15)":i?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(255,255,255,0.08)",cursor:o?"not-allowed":"pointer"},children:e})},"FONT",0,'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',"LINE",0,n,"Mono",0,function({children:e}){return(0,t.jsx)("code",{style:{background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4,wordBreak:"break-all"},children:e})},"Section",0,function({id:e,title:o,intro:i,children:a}){return(0,t.jsxs)("section",{id:e,style:{padding:"24px 0",borderBottom:n,scrollMarginTop:16},children:[(0,t.jsx)("h2",{style:{fontSize:16,fontWeight:650,margin:"0 0 6px"},children:o}),i&&(0,t.jsx)(r,{style:{marginTop:0,marginBottom:12},children:i}),a]})},"Status",0,function({children:e,tone:n}){return(0,t.jsxs)("div",{role:"status",style:{marginTop:10,padding:"10px 14px",borderRadius:8,fontSize:13.5,lineHeight:1.6,color:"ok"===n?"#00ff88":"bad"===n?"#ff7676":"#e8e8ee",background:"ok"===n?"rgba(0,255,136,0.08)":"bad"===n?"rgba(255,80,80,0.08)":"rgba(255,255,255,0.05)",border:`1px solid ${"ok"===n?"rgba(0,255,136,0.3)":"bad"===n?"rgba(255,80,80,0.3)":"rgba(255,255,255,0.12)"}`},children:["ok"===n&&"✓ ",e]})}])},89154,e=>{"use strict";var t=e.i(90179);function n(e){let n=(0,t.readTitle)(e);return{key:n.key,label:n.label,level:n.level}}function r(e){return(0,t.currentCompany)(e)}let o=[{key:"defense",label:"Government, Defense & Aerospace",color:"#7f8c8d",words:/\b(government|federal|state of|county|city of|defen[cs]e|army|navy|air force|marine corps|military|dod|nasa|aerospace|lockheed|northrop|boeing|raytheon|l3harris|leidos|blue origin|spacex|public sector)\b/i},{key:"finance",label:"Finance & Investing",color:"#2ecc71",words:/\b(bank|banking|capital|ventures?|vc|investments?|investor|fund|private equity|growth equity|asset management|wealth|trading|trader|hedge|crypto|blockchain|web3|defi|fintech|stripe|coinbase|blackrock|robinhood|goldman|morgan stanley|jpmorgan|chase|bny|mellon|wells fargo|citi|citigroup|capital one|fidelity|vanguard|schwab|visa|mastercard|amex|american express|paypal|insurance|accounting|cpa|financial)\b/i},{key:"health",label:"Healthcare & Biotech",color:"#e74c3c",words:/\b(health|healthcare|medical|medicine|hospital|clinic|pharma|pharmaceutical|biotech|nurse|nursing|physician|doctor|dental|therapy|therapist|wellness)\b/i},{key:"education",label:"Education",color:"#f1c40f",words:/\b(university|college|school|education|student|professor|teacher|academy|phd|faculty|alumni)\b/i},{key:"media",label:"Marketing & Media",color:"#e67e22",words:/\b(marketing|brand|branding|advertising|agency|media|content|social media|creative|creator|influencer|pr|public relations|communications|tiktok|pinterest|youtube|growth marketing)\b/i},{key:"entertainment",label:"Entertainment & Gaming",color:"#9b59b6",words:/\b(entertainment|film|movie|music|records|gaming|games?|esports|studio|studios|netflix|disney|spotify|hollywood|theater|theatre|sports)\b/i},{key:"tech",label:"Tech, Software & AI",color:"#3498db",words:/\b(software|saas|engineer|engineering|developer|tech|technology|technologies|ai|artificial intelligence|machine learning|ml|data|cloud|cyber|security|devops|product manager|google|microsoft|apple|meta|amazon|nvidia|openai|anthropic|palantir|salesforce|oracle|ibm|intel|app|apps|startup|platform|labs?)\b/i},{key:"consulting",label:"Consulting, Legal & Services",color:"#1abc9c",words:/\b(consulting|consultant|consultancy|deloitte|accenture|mckinsey|kpmg|pwc|ey|bain|bcg|legal|law|lawyer|attorney|paralegal|recruiting|recruiter|staffing|talent)\b/i},{key:"realestate",label:"Real Estate & Construction",color:"#d35400",words:/\b(real estate|realtor|realty|property|properties|construction|architecture|architect|mortgage|homes|housing|builders?)\b/i},{key:"consumer",label:"Retail, Consumer & Hospitality",color:"#ff79c6",words:/\b(retail|e-?commerce|shopify|consumer|cpg|fashion|apparel|beauty|cosmetics|food|beverage|restaurant|hospitality|hotel|travel|tourism|coca-cola|nike|store|shop)\b/i},{key:"industry",label:"Manufacturing, Energy & Logistics",color:"#95a5a6",words:/\b(manufacturing|energy|oil|gas|solar|utilities|automotive|tesla|siemens|ge|general electric|honeywell|3m|logistics|supply chain|shipping|freight|fedex|ups|industrial|mining|chemicals?)\b/i},{key:"nonprofit",label:"Nonprofit & Community",color:"#bdc3c7",words:/\b(nonprofit|non-profit|foundation|charity|ngo|church|ministry|volunteer)\b/i}],i={key:"unknown",label:"Unclear",color:"#555c66"},a=Object.fromEntries([...o,i].map(e=>[e.key,e])),l=e=>a[e]||i;function s(e,t){for(let n of[e,t]){if(!n)continue;let e=o.find(e=>e.words.test(n));if(e)return e}return i}let c=(e,t)=>s(e,t).key,u=e=>n(e).level>=4;e.s(["INDUSTRIES",0,o,"UNKNOWN_INDUSTRY",0,i,"buildCompanyIndex",0,function(e=[]){let n=new Map,r=e=>(n.has(e)||n.set(e,(0,t.rolesWithCompanies)(e)),n.get(e)),{industries:o}=(0,t.networkCompanies)(e,{industryOf:c,rolesOf:r}),i=new Map;for(let t of e){let e=t.profile_url||`id:${t.id}`,n=i.get(e);(!n||(t.degree||9)<(n.degree||9))&&i.set(e,t)}let a=new Map;for(let e of i.values()){let t=r(e).find(e=>!e.former)?.company;if(!t)continue;let n=a.get(t);n||(n={name:t,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0},a.set(t,n)),n.people.push(e),1===e.degree?n.d1++:2===e.degree?n.d2++:n.d3++,"S"===e.tier&&n.S++,"A"===e.tier&&n.A++,u(e.headline)&&n.senior++}for(let e of a.values())e.industry=l(o.get(e.name));return a},"companyLinks",0,function(e=[],t=[]){let n=new Map;for(let t of e){let e=r(t);e&&n.set(t.id,e)}let o=new Map;for(let e of t){let t=n.get(e.source_connection_id),i=r(e);if(!t||!i||t===i)continue;let[a,l]=t<i?[t,i]:[i,t],s=`${a}\u0000${l}`,c=o.get(s);c||(c={a:a,b:l,weight:0,via:new Set},o.set(s,c)),c.weight++,c.via.add(e.source_connection_id)}return[...o.values()]},"companyOf",0,r,"getSeniority",0,n,"industryByKey",0,l,"industryOf",0,s,"isSenior",0,u,"waysInto",0,function(e,t=[],n=[]){let o=t.filter(t=>r(t)===e),i=new Map;for(let t of n)r(t)===e&&i.set(t.source_connection_id,(i.get(t.source_connection_id)||0)+1);let a=new Map(t.map(e=>[e.id,e]));return{direct:o,bridges:[...i.entries()].map(([e,t])=>({bridge:a.get(e),n:t})).filter(e=>e.bridge).sort((e,t)=>t.n-e.n||(Number(t.bridge.power_score)||0)-(Number(e.bridge.power_score)||0))}}])},48235,51798,e=>{"use strict";let t={fast:{label:"Fast",pagePause:20,chunkCooldown:60,profileGap:60},medium:{label:"Medium",pagePause:45,chunkCooldown:180,profileGap:90},slow:{label:"Slow",pagePause:90,chunkCooldown:300,profileGap:120}},n=e=>t[e]||t.fast;function r(e,t){let r=n(e),o=Math.max(0,Math.floor(Number(t)||0));return o*(6+r.pagePause)+Math.floor(o/10)*r.chunkCooldown}e.s(["PACES",0,t,"PACE_NAMES",0,["slow","medium","fast"],"durationText",0,function(e){if(!(e>=60))return"under a minute";let t=Math.round(e/60);if(t<60)return`about ${t} min`;let n=Math.floor(t/60),r=t%60;return`about ${n} h${r?` ${r} min`:""}`},"paceOf",0,n,"paceSeconds",0,r,"searchesPerHour",0,function(e){let t=n(e);return Math.round(3600/(6+t.pagePause+t.chunkCooldown/10))}],51798);var o=e.i(7214);function i(e,t){return e?t.scanned.has(e.id)||e.profile_url&&t.read?.has((0,o.keyFor)(e))?"scanned":e.profile_url&&t.hidden.has((0,o.keyFor)(e))?"hidden":"todo":"todo"}function a(e,t){if(!e||1!==e.degree||null==e.unlocked_from_bridge_id)return null;let n=i(e,t);return"todo"===n?"ready":n}e.s(["circleScanCost",0,function(e=100,t="fast"){let n=Math.max(1,Math.min(100,Math.round(e)||100)),o=t&&"fast"!==t?Math.max(5,Math.round(r(t,n)/60)):n>=100?55:Math.max(5,Math.round(.55*n));return{profileViews:1,searches:n,minutes:o}},"circleState",0,i,"reachIndex",0,function(e=[],t=[],n={}){let r=new Set;for(let e of t||[])e?.source_connection_id!=null&&r.add(e.source_connection_id);let i=new Set;for(let e of n?.skips||[])e?.profileUrl&&i.add((0,o.keyFor)({profile_url:e.profileUrl}));let a=new Set;for(let e of n?.read||[])e&&a.add((0,o.keyFor)({profile_url:e}));let l=new Map;for(let[e,t]of Object.entries(n?.lists||{}))e&&t&&l.set((0,o.keyFor)({profile_url:e}),t);let s=new Map;for(let t of e||[]){let e=t?.unlocked_from_bridge_id;if(null==e||1!==t.degree)continue;let n=s.get(e);n||s.set(e,n=[]),n.push(t)}return{scanned:r,read:a,hidden:i,reachedFrom:s,lists:l}},"reachState",0,a,"readyByCircle",0,function(e){let t=new Map;for(let[n,r]of e.reachedFrom){let o=r.filter(t=>"ready"===a(t,e)).length;o&&t.set(n,o)}return t},"readyToScan",0,function(e,t){return(e||[]).filter(e=>"ready"===a(e,t)).sort(o.compareBridges)},"scanBars",0,function(e,t){let n=i(e,t),r=e?.profile_url?t.lists?.get((0,o.keyFor)(e)):null;return"hidden"===n?null:r?r.more?r.total?Math.max(1,Math.min(4,Math.round(5*Math.min(1,10*r.pages/r.total)))):2:5:"scanned"===n?2:null}],48235)},69083,e=>{"use strict";var t=e.i(89154);let n=new Map(t.INDUSTRIES.map(e=>[e.key,e.color])),r=new Map([...t.INDUSTRIES.map(e=>[e.key,Object.freeze({key:e.key,label:e.label,color:e.color,group:e.key,kind:"industry"})]),...Object.entries({software:["Software & SaaS","tech","function"],"ai-data":["AI & Data","tech","function"],cybersecurity:["Cybersecurity","tech","function"],telecom:["Telecom","tech","industry"],fintech:["Fintech & Payments","finance","industry"],banking:["Banking & Lending","finance","industry"],"vc-pe":["Venture Capital & Private Equity","finance","industry"],wealth:["Wealth & Asset Management","finance","industry"],insurance:["Insurance","finance","industry"],accounting:["Accounting & Tax","finance","function"],crypto:["Crypto & Web3","finance","industry"],hospitals:["Hospitals & Clinics","health","industry"],dental:["Dental","health","industry"],"pharma-biotech":["Pharma & Biotech","health","industry"],"medical-devices":["Medical Devices","health","industry"],"mental-health":["Mental Health","health","industry"],"fitness-wellness":["Fitness & Wellness","health","industry"],veterinary:["Veterinary & Animal Care","health","industry"],k12:["K-12 Education","education","industry"],"higher-ed":["Higher Education","education","industry"],"marketing-advertising":["Marketing & Advertising","media","function"],"pr-comms":["PR & Communications","media","function"],"media-publishing":["Media & Publishing","media","industry"],"creator-economy":["Creator Economy","media","industry"],"film-tv-music":["Film, TV & Music","entertainment","industry"],"gaming-esports":["Gaming & Esports","entertainment","industry"],sports:["Sports","entertainment","industry"],"ecommerce-retail":["E-commerce & Retail","consumer","industry"],"consumer-goods":["Consumer Goods","consumer","industry"],restaurants:["Restaurants & Food Service","consumer","industry"],"hospitality-travel":["Hospitality & Travel","consumer","industry"],"beauty-personal-care":["Beauty & Personal Care","consumer","industry"],logistics:["Logistics & Supply Chain","industry","industry"],manufacturing:["Manufacturing","industry","industry"],energy:["Energy & Utilities","industry","industry"],automotive:["Automotive","industry","industry"],agriculture:["Agriculture & Farming","industry","industry"],"aerospace-defense":["Aerospace & Defense","defense","industry"],military:["Military","defense","industry"],government:["Government & Public Sector","defense","industry"],legal:["Legal","consulting","function"],"management-consulting":["Management Consulting","consulting","function"],"hr-recruiting":["HR & Recruiting","consulting","function"],"security-services":["Security Services","consulting","function"],"real-estate":["Real Estate","realestate","industry"],"construction-trades":["Construction & Trades","realestate","industry"],charities:["Nonprofits & Charities","nonprofit","industry"],"social-work":["Social Work & Human Services","nonprofit","industry"],faith:["Faith & Ministry","nonprofit","industry"]}).map(([e,[r,o,i]])=>[e,Object.freeze({key:e,label:r,color:n.get(o)||t.UNKNOWN_INDUSTRY.color,group:o,kind:i})])]);e.s(["sectorByKey",0,function(e){return r.get(e)||{key:e,label:t.UNKNOWN_INDUSTRY.label,color:t.UNKNOWN_INDUSTRY.color,group:null,kind:null}}])},7214,36774,e=>{"use strict";let t=/^[A-Za-z0-9_-]+\.(webp|jpg|jpeg|png)$/,n="/avatars/";function r(e){return"string"==typeof e&&e.startsWith(n)&&t.test(e.slice(n.length))?e:null}e.s(["localPhoto",0,r],36774);let o={S:0,A:1,B:2,C:3,D:4};function i(e){let t=parseFloat(e?.power_score);return Number.isFinite(t)?t:0}function a(e){return Math.round(10*i(e))/10}function l(e){return String(e?.profile_url||"").split(/[?#]/)[0].replace(/\/+$/,"")||`id:${e?.id}`}let s=(e,t)=>String(e??"").localeCompare(String(t??""),void 0,{numeric:!0});function c(e,t){return(o[e.tier]??9)-(o[t.tier]??9)||i(t)-i(e)||String(e.name||"").localeCompare(String(t.name||""))||s(e.id,t.id)}function u(e,t){return e.bridge&&t.bridge?c(e.bridge,t.bridge):e.bridge?-1:t.bridge?1:s(e.id,t.id)}function d(e,t){return t.score-e.score||t.waysIn-e.waysIn||u(e.routes[0]||g,t.routes[0]||g)||String(e.person.name||"").localeCompare(String(t.person.name||""))||(e.key<t.key?-1:+(e.key>t.key))}let g={id:null,bridge:null};function f(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return t.length<2?t[0]||"":`${t[0]} ${t[t.length-1].charAt(0)}.`}function y(e,t){let n=String(e||"");return t<=1?n?"…":"":n.length>t?`${n.slice(0,t-1)}…`:n}e.s(["TIERS",0,["S","A","B","C","D"],"compareBridges",0,c,"comparePower",0,d,"convergeLayout",0,function(e,t=800,n=!1,{cards:r=!1,mutuals:o=0}={}){let i=r?46:n?40:34,a=Math.round(t*(n?.44:.36)),l=Math.round(t*(n?.8:r?.6:.62)),s=[],c=null;for(let t of e?.routes||[])t.bridge?s.push({id:t.id,bridge:t.bridge,unresolved:!1,count:1}):c?c.count++:s.push(c={id:null,bridge:null,unresolved:!0,count:1});let u=Math.max(0,Math.floor(Number(o)||0)-(e?.waysIn||0)),d=Math.min(60,u),g=r?12:11,p=r?220:n?96:120,h=Math.max(1,Math.floor(p/g)+1),m=Math.ceil(d/h),b=d?40+m*g:0,k=Math.max(0,s.length-1)*i+b,w=Math.max(n?190:r?250:220,32+k+48),v=w/2,x=v-k/2,S=Math.max(4,Math.floor((a-10-42)/6)),M=s.map((e,t)=>{let n=e.unresolved?`can't be named (${e.count})`:e.bridge.name||"";return{...e,x:a,y:x+t*i,r:6,primary:0===t&&!e.unresolved,label:n.length<=S?n:y(e.unresolved?n:f(n),S)}}),I={x:l,y:v,r:17*!r,rings:r?[]:[32,50,70].filter(e=>e<=v-4)},C=M.map(t=>({key:e?.key,bridgeId:t.id,primary:t.primary,unresolved:t.unresolved,tier:t.bridge?.tier??null,x1:t.x,y1:t.y,x2:I.x,y2:I.y})),_={x:20,y:v,r:14},F=M.map(e=>({id:e.id,x1:_.x,y1:_.y,x2:e.x,y2:e.y})),B=e?[{key:e.key,p:e,x:I.x,y:I.y,r:I.r,rings:I.rings,big:!0,label:""}]:[],A=x+Math.max(0,s.length-1)*i+40,N=r?a-236+8:a-p,T=Array.from({length:d},(e,t)=>({x:N+t%h*g,y:A+Math.floor(t/h)*g})),D=e?.waysIn?e.waysIn/(e.waysIn+u):1;return{width:t,height:w,you:_,target:I,people:B,bridges:M,links:C,spokes:F,ghosts:T,unscanned:u,ghostLabel:d?{x:N,y:A-13}:null,drawn:D}},"keyFor",0,l,"mapCount",0,function(e,t=10){let n=Math.max(0,Math.min(100,Number(e)||0));return n<=50?t:Math.max(1,Math.round(t*(100-n)/50))},"mostMutuals",0,function(e=[],t=()=>0,n=7){return[...e].sort((e,n)=>Math.max(t(n)||0,n.waysIn)-Math.max(t(e)||0,e.waysIn)||n.waysIn-e.waysIn||d(e,n)).slice(0,n)},"routeIndex",0,function(e=[]){let t=new Map;for(let n of e||[]){let e=l(n),r=t.get(e);r||(r=new Set,t.set(e,r)),r.add(n.source_connection_id??null)}return t},"routesFor",0,function(e,t,n){return e?[...t?.get(l(e))??(null!=e.source_connection_id?new Set([e.source_connection_id]):new Set)].map(e=>({id:e,bridge:n?.get(e)??null})).sort(u):[]},"score",0,i,"score1",0,a,"separationPeople",0,function(e=[],t=[]){let n=new Map;for(let e of t||[])n.set(e.id,e);let o=new Map,i=new Map;for(let t of e||[]){let e=l(t);i.set(t.id,e);let n=o.get(e);n?function(e,t){let n=a(e)-a(t);if(n)return n>0;let o=!!r(e.profile_image_url);return!!r(t.profile_image_url)!==o?o:0>s(e.id,t.id)}(t,n.person)&&(n.person=t):(n={key:e,person:t,rowIds:[],routeIds:new Set},o.set(e,n)),n.rowIds.push(t.id),n.routeIds.add(t.source_connection_id??null)}let c={people:o.size,byTier:{S:0,A:0,B:0,C:0,D:0},multi:0,bridges:0,unresolvedIds:0,peopleOnlyUnresolved:0,onlyUnresolvedVia:0},g=new Set,f=new Set,y=new Set,p=[];for(let e of o.values()){let t=[...e.routeIds].map(e=>({id:e,bridge:n.get(e)??null}));t.sort(u);let r=t.filter(e=>e.bridge);for(let e of t)(e.bridge?g:f).add(e.id);if(!r.length)for(let e of(c.peopleOnlyUnresolved++,t))y.add(e.id);let{person:o}=e,i=o.tier;void 0!==c.byTier[i]&&c.byTier[i]++,t.length>1&&c.multi++,p.push({key:e.key,person:o,score:a(o),tier:i,routes:t,waysIn:t.length,rowIds:e.rowIds,haystack:[o.name,o.headline,o.company,o.role,...r.map(e=>e.bridge.name)].filter(Boolean).join("\n").toLowerCase(),rank:0,tied:!1})}return c.bridges=g.size,c.unresolvedIds=f.size,c.onlyUnresolvedVia=y.size,p.sort(d),function(e){for(let t=0;t<e.length;t++){let n=e[t],r=e[t-1],o=r&&r.score===n.score&&r.waysIn===n.waysIn;n.rank=o?r.rank:t+1,o&&(n.tied=!0,r.tied=!0)}}(p),{people:p,rowToKey:i,summary:c}},"shortName",0,f,"summitLayout",0,function(e=[],t=800,n=!1,{cards:r=!1}={}){let o=r?50:n?36:26,i=Math.round(.42*t),a=Math.round(.58*t),l=e.map((e,n)=>{var i;return{key:e.key,p:e,x:a,y:16+n*o,r:r?0:(i=e.waysIn)>=4?8.5:3===i?7:2===i?5.5:4,label:y(`#${e.rank}${e.tied?"=":""} ${e.person.name||""}`,Math.floor((t-a-60)/6.2))}}),s=new Map,u="\0unresolved";for(let e of l)for(let t of e.p.routes){let n=t.bridge?t.id:u,r=s.get(n);r||(r={id:t.bridge?t.id:null,bridge:t.bridge,unresolved:!t.bridge,ys:[],count:0},s.set(n,r)),r.count++,r.ys.push(e.y)}let d=[...s.values()].map(e=>({...e,bary:e.ys.reduce((e,t)=>e+t,0)/e.ys.length}));d.sort((e,t)=>e.bary-t.bary||e.unresolved-t.unresolved||(e.bridge&&t.bridge?c(e.bridge,t.bridge):0));let g=l.length?l[l.length-1].y:16,p=function(e=[],t=18,n=0){let r=[];e.forEach((e,n)=>{for(r.push({sum:e-n*t,count:1});r.length>1&&r[r.length-2].sum/r[r.length-2].count>r[r.length-1].sum/r[r.length-1].count;){let e=r.pop();r[r.length-1].sum+=e.sum,r[r.length-1].count+=e.count}});let o=r.flatMap(e=>Array(e.count).fill(e.sum/e.count)).map((e,n)=>e+n*t),i=o.length&&o[0]<n?n-o[0]:0;return o.map(e=>e+i)}(d.map(e=>e.bary),r?36:18,16),h=Math.max(4,Math.floor((i-10-42)/6));d.forEach((e,t)=>{if(e.x=i,e.y=p[t],e.r=5,e.unresolved)e.label=y(`can't be named (${e.count})`,h);else{let t=e.bridge.name||"";e.label=t.length<=h?t:y(f(t),h)}delete e.ys});let m=new Map(d.map(e=>[e.unresolved?u:e.id,e]));for(let e of d)e.onlyFor=0,e.bestFor=0;for(let e of l){let t=e.p.routes[0],n=t?m.get(t.bridge?t.id:u):null;n&&n.bestFor++,1===e.p.waysIn&&n&&n.onlyFor++}let b=[];for(let e of l){let t=new Set;e.p.routes.forEach((n,r)=>{let o=n.bridge?n.id:u;if(t.has(o))return;t.add(o);let i=m.get(o);b.push({key:e.key,bridgeId:i.id,primary:0===r&&!i.unresolved,unresolved:i.unresolved,tier:i.bridge?.tier??null,x1:i.x,y1:i.y,x2:e.x,y2:e.y})})}let k=Math.max(g,d.length?d[d.length-1].y:0),w=l.length?Math.ceil(k+16):0,v={x:20,y:l.length?(16+Math.max(g,k))/2:16,r:14},x=d.map(e=>({id:e.id,x1:v.x,y1:v.y,x2:e.x,y2:e.y}));return{width:t,height:w,you:v,people:l,bridges:d,links:b,spokes:x}}],7214)},5258,e=>{"use strict";e.s(["TIER_COLORS_CLASSIC",0,{S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},"TIER_ORDER",0,["S","A","B","C","D"],"initialsFor",0,function(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return 0===t.length?"?":(t[0].charAt(0)+(t.length>1?t[t.length-1].charAt(0):"")).toUpperCase()}])}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,26005,e=>{"use strict";var t=e.i(43476),n=e.i(22016),r=e.i(64745);let o=[{key:"network",label:"Network Circle",short:"Circle",on:{background:"#fff",color:"#000"},off:{background:"transparent",color:"#888"}},{key:"degrees",label:"Degrees",on:{background:"linear-gradient(135deg, #FFD700, #FF6B35)",color:"#000"},off:{background:"rgba(255,255,255,0.12)",color:"#fff"}},{key:"separation",label:"Separation",on:{background:"linear-gradient(135deg, #00E5FF, #FFD700 55%, #FF7043)",color:"#000"},off:{background:"rgba(255,255,255,0.12)",color:"#fff"}}],l=[{key:"paths",href:"/paths",label:"Paths",color:"#00ff88",on:"linear-gradient(135deg, #00ff88, #3498DB)",demo:!0},{key:"outlink",href:"/queue",label:"Outlink",color:"#FF6B35",on:"linear-gradient(135deg, #FF6B35, #FFD700)",own:!0},{key:"scan",href:"/setup",label:"Scan",color:"#666",on:"linear-gradient(135deg, #00ff88, #1abc9c)",own:!0}];e.s(["default",0,function({active:e,isMobile:i=!1,csvMode:a=!1,onMode:s,children:u,after:c}){let d={padding:i?"6px 10px":"8px 16px",borderRadius:6,border:"none",fontSize:i?11:13,fontWeight:600,textDecoration:"none"};return(0,t.jsxs)("div",{id:"main-tabs",style:{display:"flex",gap:i?2:4,background:"rgba(255,255,255,0.08)",borderRadius:8,padding:i?2:3,flexWrap:i?"wrap":"nowrap"},children:[o.map(r=>{let o={...d,cursor:"pointer",...e===r.key?r.on:r.off},l=i&&r.short?r.short:r.label;return s?(0,t.jsx)("button",{type:"button",onClick:()=>s(r.key),style:o,children:l},r.key):(0,t.jsx)(n.default,{href:`/?mode=${r.key}`,style:{...o,display:"flex",alignItems:"center"},children:l},r.key)}),u,l.filter(e=>!r.IS_DEMO&&(!e.own||!a)).map(r=>{let o=e===r.key;return(0,t.jsxs)(n.default,{href:r.href,title:r.title,"aria-current":o?"page":void 0,style:{...d,display:"flex",alignItems:"center",gap:4,background:o?r.on:"rgba(255,255,255,0.06)",color:o?"#000":r.color},children:[r.label,r.badge&&(0,t.jsx)("span",{style:{fontSize:9,opacity:.7,marginLeft:2},children:r.badge})]},r.key)}),c]})}])},2776,e=>{"use strict";var t=e.i(43476),n=e.i(15812);e.s(["default",0,function({children:e}){let{userId:r,ready:o}=(0,n.useUser)();return o&&r?e:(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#0a0a1a",color:"#fff",padding:24,textAlign:"center",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:o?(0,t.jsxs)("div",{style:{maxWidth:420},children:[(0,t.jsx)("div",{style:{fontSize:18,fontWeight:700,marginBottom:8},children:"Can’t reach Six Degrees’ local server"}),(0,t.jsx)("div",{style:{color:"#888",fontSize:14,lineHeight:1.6},children:"The page loaded but the app behind it is not answering. If you started it from a terminal, check that window for an error, then reload this page."})]}):(0,t.jsx)("div",{style:{fontSize:18,fontWeight:600},children:"Loading…"})})}])},28867,86106,e=>{"use strict";var t=e.i(71645),n=e.i(7214);let r=Object.freeze({known:!1,sent:new Set,mine:new Map,version:0}),o=new Set,l=r,i=null,a=new Map;function s(e=l.sent,t=l.known){for(let n of(l=Object.freeze({known:t,sent:e,mine:new Map(a),version:l.version+1}),[...o]))n()}function u(e){return o.add(e),i||l.known||(i=fetch("/api/outreach").then(e=>e.ok?e.json():null).then(e=>{e&&s(new Set((e.pending||[]).map(n.keyFor)),!0)}).catch(()=>{}).finally(()=>{i=null})),()=>o.delete(e)}function c(){return l}async function d(e){let t=await fetch("/api/outreach",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),n=await t.json().catch(()=>({}));if(!t.ok)throw Error(n.error||"Could not save that.");return n}async function f(e,{bridgeId:t}={}){let r=(0,n.keyFor)(e),o=a.has(r)?a.get(r):void 0;a.set(r,!0),s();try{return await d({action:"mark-sent",connectionId:e.id,profileUrl:e.profile_url,bridgeId:t})}catch(e){throw void 0===o?a.delete(r):a.set(r,o),s(),e}}async function p(e){let t=(0,n.keyFor)(e),r=a.has(t)?a.get(t):void 0;a.set(t,!1),s();try{return await d({action:"undo",connectionId:e.id,profileUrl:e.profile_url})}catch(e){throw void 0===r?a.delete(t):a.set(t,r),s(),e}}e.s(["REQUESTS_UNKNOWN",0,r,"hasRequest",0,function(e,t=l){if(!e)return!1;let r=(0,n.keyFor)(e);return t.mine.has(r)?t.mine.get(r):t.known?t.sent.has(r):"pending"===e.unlock_status||"sent"===e.outreach_status},"markRequested",0,f,"requestCount",0,function(e=l){let t=new Set(e.known?e.sent:[]);for(let[n,r]of e.mine)r?t.add(n):t.delete(n);return t.size},"requestsNow",0,c,"undoRequest",0,p,"watchRequests",0,u],86106),e.s(["default",0,function(){return(0,t.useSyncExternalStore)(u,c,()=>r)}],28867)},64666,e=>{"use strict";var t=e.i(7214);function n(e=[],r=[]){let o=new Set((r||[]).map(t.keyFor)),l=new Map;for(let n of e||[]){let e=n?.source_connection_id;if(null==e)continue;let r=(0,t.keyFor)(n);if(o.has(r))continue;let i=l.get(r);i||l.set(r,i=new Set),i.add(e)}let i=new Map;for(let e of l.values())for(let t of e){let n=i.get(t)||{reach:0,only:0,total:0};n.reach+=1/e.size,n.total+=1,1===e.size&&(n.only+=1),i.set(t,n)}return i}e.s(["bridgeOverlap",0,function(e=[],r=[]){let o=n(e,r),l=new Set((r||[]).map(t.keyFor)),i=new Map;for(let n of e||[]){let e=n?.source_connection_id;if(null==e)continue;let r=(0,t.keyFor)(n);if(l.has(r))continue;let o=i.get(r);o||i.set(r,o=new Set),o.add(e)}let a=new Map;for(let e of i.values()){if(e.size<2)continue;let t=[...e];for(let e=0;e<t.length;e++)for(let n=e+1;n<t.length;n++){let r=t[e]<t[n]?`${t[e]}|${t[n]}`:`${t[n]}|${t[e]}`;a.set(r,(a.get(r)||0)+1)}}let s=new Map;for(let[e,t]of a){let[n,r]=e.split("|"),l=o.get(n).total+o.get(r).total-t,i=l?t/l:0;for(let[e,o]of[[n,r],[r,n]]){let n=s.get(e);(!n||i>n.share)&&s.set(e,{with:o,share:i,shared:t})}}return s},"exclusiveReach",0,n,"redundancy",0,function(e=[],t=[]){let r=n(e,t),o=0,l=0;for(let e of r.values())o+=e.reach,l+=e.only;return o?1-l/o:0}])},89154,e=>{"use strict";var t=e.i(90179);function n(e){let n=(0,t.readTitle)(e);return{key:n.key,label:n.label,level:n.level}}function r(e){return(0,t.currentCompany)(e)}let o=[{key:"defense",label:"Government, Defense & Aerospace",color:"#7f8c8d",words:/\b(government|federal|state of|county|city of|defen[cs]e|army|navy|air force|marine corps|military|dod|nasa|aerospace|lockheed|northrop|boeing|raytheon|l3harris|leidos|blue origin|spacex|public sector)\b/i},{key:"finance",label:"Finance & Investing",color:"#2ecc71",words:/\b(bank|banking|capital|ventures?|vc|investments?|investor|fund|private equity|growth equity|asset management|wealth|trading|trader|hedge|crypto|blockchain|web3|defi|fintech|stripe|coinbase|blackrock|robinhood|goldman|morgan stanley|jpmorgan|chase|bny|mellon|wells fargo|citi|citigroup|capital one|fidelity|vanguard|schwab|visa|mastercard|amex|american express|paypal|insurance|accounting|cpa|financial)\b/i},{key:"health",label:"Healthcare & Biotech",color:"#e74c3c",words:/\b(health|healthcare|medical|medicine|hospital|clinic|pharma|pharmaceutical|biotech|nurse|nursing|physician|doctor|dental|therapy|therapist|wellness)\b/i},{key:"education",label:"Education",color:"#f1c40f",words:/\b(university|college|school|education|student|professor|teacher|academy|phd|faculty|alumni)\b/i},{key:"media",label:"Marketing & Media",color:"#e67e22",words:/\b(marketing|brand|branding|advertising|agency|media|content|social media|creative|creator|influencer|pr|public relations|communications|tiktok|pinterest|youtube|growth marketing)\b/i},{key:"entertainment",label:"Entertainment & Gaming",color:"#9b59b6",words:/\b(entertainment|film|movie|music|records|gaming|games?|esports|studio|studios|netflix|disney|spotify|hollywood|theater|theatre|sports)\b/i},{key:"tech",label:"Tech, Software & AI",color:"#3498db",words:/\b(software|saas|engineer|engineering|developer|tech|technology|technologies|ai|artificial intelligence|machine learning|ml|data|cloud|cyber|security|devops|product manager|google|microsoft|apple|meta|amazon|nvidia|openai|anthropic|palantir|salesforce|oracle|ibm|intel|app|apps|startup|platform|labs?)\b/i},{key:"consulting",label:"Consulting, Legal & Services",color:"#1abc9c",words:/\b(consulting|consultant|consultancy|deloitte|accenture|mckinsey|kpmg|pwc|ey|bain|bcg|legal|law|lawyer|attorney|paralegal|recruiting|recruiter|staffing|talent)\b/i},{key:"realestate",label:"Real Estate & Construction",color:"#d35400",words:/\b(real estate|realtor|realty|property|properties|construction|architecture|architect|mortgage|homes|housing|builders?)\b/i},{key:"consumer",label:"Retail, Consumer & Hospitality",color:"#ff79c6",words:/\b(retail|e-?commerce|shopify|consumer|cpg|fashion|apparel|beauty|cosmetics|food|beverage|restaurant|hospitality|hotel|travel|tourism|coca-cola|nike|store|shop)\b/i},{key:"industry",label:"Manufacturing, Energy & Logistics",color:"#95a5a6",words:/\b(manufacturing|energy|oil|gas|solar|utilities|automotive|tesla|siemens|ge|general electric|honeywell|3m|logistics|supply chain|shipping|freight|fedex|ups|industrial|mining|chemicals?)\b/i},{key:"nonprofit",label:"Nonprofit & Community",color:"#bdc3c7",words:/\b(nonprofit|non-profit|foundation|charity|ngo|church|ministry|volunteer)\b/i}],l={key:"unknown",label:"Unclear",color:"#555c66"},i=Object.fromEntries([...o,l].map(e=>[e.key,e])),a=e=>i[e]||l;function s(e,t){for(let n of[e,t]){if(!n)continue;let e=o.find(e=>e.words.test(n));if(e)return e}return l}let u=(e,t)=>s(e,t).key,c=e=>n(e).level>=4;e.s(["INDUSTRIES",0,o,"UNKNOWN_INDUSTRY",0,l,"buildCompanyIndex",0,function(e=[]){let n=new Map,r=e=>(n.has(e)||n.set(e,(0,t.rolesWithCompanies)(e)),n.get(e)),{industries:o}=(0,t.networkCompanies)(e,{industryOf:u,rolesOf:r}),l=new Map;for(let t of e){let e=t.profile_url||`id:${t.id}`,n=l.get(e);(!n||(t.degree||9)<(n.degree||9))&&l.set(e,t)}let i=new Map;for(let e of l.values()){let t=r(e).find(e=>!e.former)?.company;if(!t)continue;let n=i.get(t);n||(n={name:t,people:[],d1:0,d2:0,d3:0,S:0,A:0,senior:0},i.set(t,n)),n.people.push(e),1===e.degree?n.d1++:2===e.degree?n.d2++:n.d3++,"S"===e.tier&&n.S++,"A"===e.tier&&n.A++,c(e.headline)&&n.senior++}for(let e of i.values())e.industry=a(o.get(e.name));return i},"companyLinks",0,function(e=[],t=[]){let n=new Map;for(let t of e){let e=r(t);e&&n.set(t.id,e)}let o=new Map;for(let e of t){let t=n.get(e.source_connection_id),l=r(e);if(!t||!l||t===l)continue;let[i,a]=t<l?[t,l]:[l,t],s=`${i}\u0000${a}`,u=o.get(s);u||(u={a:i,b:a,weight:0,via:new Set},o.set(s,u)),u.weight++,u.via.add(e.source_connection_id)}return[...o.values()]},"companyOf",0,r,"getSeniority",0,n,"industryByKey",0,a,"industryOf",0,s,"isSenior",0,c,"waysInto",0,function(e,t=[],n=[]){let o=t.filter(t=>r(t)===e),l=new Map;for(let t of n)r(t)===e&&l.set(t.source_connection_id,(l.get(t.source_connection_id)||0)+1);let i=new Map(t.map(e=>[e.id,e]));return{direct:o,bridges:[...l.entries()].map(([e,t])=>({bridge:i.get(e),n:t})).filter(e=>e.bridge).sort((e,t)=>t.n-e.n||(Number(t.bridge.power_score)||0)-(Number(e.bridge.power_score)||0))}}])},39160,84278,e=>{"use strict";var t=e.i(7214),n=e.i(7837);function r(e){let t=String(e||"").trim();if(!t)return null;let n=t.match(/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})(?::(\d{2}))?(?:\s*UTC)?$/);if(n)return Date.UTC(+n[1],n[2]-1,+n[3],+n[4],+n[5],+(n[6]||0));if(n=t.match(/^(\d{1,2})\/(\d{1,2})\/(\d{2,4}),?\s+(\d{1,2}):(\d{2})\s*(AM|PM)?$/i)){let e=100>+n[3]?2e3+ +n[3]:+n[3],t=n[4]%12;return"PM"===(n[6]||"").toUpperCase()&&(t+=12),Date.UTC(e,n[1]-1,+n[2],t,+n[5])}if(n=t.match(/^([A-Za-z]{3,9})\s+(\d{4})$/)){let e=Date.parse(`1 ${n[1]} ${n[2]} UTC`);return Number.isNaN(e)?null:e}let r=Date.parse(/\d{4}$/.test(t)?`${t} UTC`:t);return Number.isNaN(r)?null:r}let o=e=>(0,t.keyFor)({profile_url:e});function l(e=[]){let t=new Map;for(let n of e){let e=o(n["sender profile url"]),r=n["conversation id"];r&&e&&(t.has(e)||t.set(e,new Set),t.get(e).add(r))}let n=null;for(let[e,r]of t)(!n||r.size>t.get(n).size)&&(n=e);return n}let i=e=>{let t=f(e);return t?`name:${t}`:null},a=/sponsored/i,s=/in\s?mail/i,u=/linkedin\.com\/(company|showcase|school)\//i,c=e=>/^(yes|true|1)$/i.test(String(e||"").trim());function d(e,t){if(!e||!e.total)return"never";let n=t-e.last;return n<=2592e6||e.recent>=3?"warm":n<=31536e6?"cool":"dormant"}let f=e=>String(e||"").split(",")[0].normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9 ]+/g," ").replace(/\s+/g," ").trim();e.s(["buildConversations",0,function(e=[],{keepText:t=!1}={}){let n=l(e),d=new Map;for(let t of e)n&&o(t["sender profile url"])===n&&t.from&&d.set(t.from,(d.get(t.from)||0)+1);let p=f([...d].sort((e,t)=>t[1]-e[1])[0]?.[0]||""),m=e=>!!e&&(e===n||!!p&&e===`name:${p}`),g={},h=new Map,y=0,b=0;for(let n of e){let e=n["conversation id"],l=r(n.date);if(!e||null==l){b+=1;continue}if(c(n["is message draft"])){y+=1;continue}let d=o(n["sender profile url"])||i(n.from);d&&n.from&&!g[d]&&(g[d]=String(n.from).trim());let f=String(n["recipient profile urls"]||"").split(/[,;\s]+/).filter(Boolean).map(o),p=String(n.to||"").split(",").map(e=>e.trim()).filter(Boolean),w=f.length?f:p.map(i).filter(Boolean);f.length&&f.length===p.length&&f.forEach((e,t)=>{g[e]||(g[e]=p[t])}),f.length||p.forEach(e=>{let t=i(e);t&&!g[t]&&(g[t]=e)}),h.has(e)||h.set(e,{id:e,title:"",everyone:new Set,messages:[],kind:null,folder:"",newest:-1/0});let k=h.get(e);d&&k.everyone.add(d),w.forEach(e=>k.everyone.add(e)),k.kind=k.kind||function(e){let t=String(e.folder||""),n=String(e["conversation title"]||"");return a.test(t)||a.test(n)||u.test(String(e["sender profile url"]||""))?"sponsored":s.test(t)||s.test(n)?"inmail":null}(n),l>=k.newest&&(k.newest=l,k.folder=String(n.folder||"").trim().toLowerCase().slice(0,30));let v={t:l,fromMe:m(d)};t&&(v.text=[n.subject,n.content].map(e=>String(e||"").trim()).filter(Boolean).join("\n\n"),!k.title&&n["conversation title"]&&(k.title=String(n["conversation title"]).trim())),k.messages.push(v)}let w=[];for(let e of h.values()){let n=[...e.everyone].filter(e=>e&&!m(e)).sort();e.messages.sort((e,t)=>e.t-t.t);let r={id:e.id,people:n,group:n.length>1,kind:e.kind,folder:e.folder,messages:e.messages};t&&(r.title=e.title),w.push(r)}for(let e of Object.keys(g))m(e)&&delete g[e];return{self:n,conversations:w,names:g,drafts:y,skipped:b}},"buildInvitations",0,function(e=[],{keepText:t=!1}={}){let n=[];for(let l of e){let e=String(l.direction||"").toUpperCase();if("INCOMING"!==e&&"OUTGOING"!==e)continue;let a="INCOMING"===e?"in":"out",s=String(("in"===a?l.from:l.to)||"").trim(),u=o("in"===a?l.inviterprofileurl:l.inviteeprofileurl),c=(u&&/\/in\//.test(u)?u:null)||i(s);if(!c)continue;let d=r(l["sent at"]),f={id:`${a}|${c}|${d??""}`,dir:a,key:c,name:s.slice(0,120),t:d};t&&String(l.message||"").trim()&&(f.note=String(l.message).trim().slice(0,2e3)),n.push(f)}return n.sort((e,t)=>(t.t||0)-(e.t||0))},"careerChapters",0,function(e=[],t=[],n=Date.now()){let l=e.map(e=>({company:e["company name"]||"",title:e.title||"",from:r(e["started on"]),to:r(e["finished on"])})).filter(e=>e.company&&null!=e.from).sort((e,t)=>e.from-t.from),i=t.map(e=>({url:o(e.url||e.profile_url),t:r(e["connected on"]||e.connected_on)})).filter(e=>null!=e.t);return l.map(e=>{let t=e.to??n,r=i.filter(n=>n.t>=e.from&&n.t<t);return{...e,to:e.to,made:r.length,people:r.map(e=>e.url)}})},"conversationSummary",0,function(e){let t=e.messages[e.messages.length-1];return{id:e.id,people:e.people,group:e.group,kind:e.kind||null,folder:e.folder||"",last:t?t.t:null,lastFromThem:t?!t.fromMe:null,count:e.messages.length,mine:e.messages.filter(e=>e.fromMe).length}},"invitationSplit",0,function(e=[]){let t=0,n=0;for(let r of e){let e=String(r.direction||"").toUpperCase();"INCOMING"===e?t+=1:"OUTGOING"===e&&(n+=1)}return{incoming:t,outgoing:n,total:t+n}},"messageStats",0,function(e=[]){let t=l(e),n=new Map;for(let t of e){let e=o(t["sender profile url"]),l=t["conversation id"];if(!l||!e)continue;let i=String(t["recipient profile urls"]||"").split(/[,;\s]+/).filter(Boolean).map(o),a=r(t.date);if(null==a)continue;n.has(l)||n.set(l,{people:new Set,msgs:[]});let s=n.get(l);s.people.add(e),i.forEach(e=>s.people.add(e)),s.msgs.push({from:e,t:a})}let i=0,a=new Map;for(let e of n.values()){let n=[...e.people].filter(e=>e!==t);if(1!==n.length||!e.people.has(t))continue;let r=n[0],o=a.get(r)||{last:0,lastFromThem:!1,total:0,times:[]};for(let n of e.msgs)o.total+=1,o.times.push(n.t),n.t>=o.last&&(o.last=n.t,o.lastFromThem=n.from!==t),n.t>i&&(i=n.t);a.set(r,o)}for(let e of a.values())e.recent=e.times.filter(e=>e>i-7776e6).length,delete e.times;return{self:t,asOf:i||null,people:a}},"nameKey",0,f,"postingEffect",0,function(e=[],t=[]){let n=e.map(e=>({t:r(e.date),link:e.sharelink||e["share link"]||""})).filter(e=>null!=e.t).sort((e,t)=>e.t-t.t),o=t.map(e=>r(e["connected on"]||e.connected_on)).filter(e=>null!=e).sort((e,t)=>e-t);if(!o.length)return{posts:[],usualWeek:0,afterPosts:0};let l=Math.max(6048e5,o[o.length-1]-o[0]),i=o.length/l*6048e5,a=n.map(e=>({...e,week:o.filter(t=>t>=e.t&&t<e.t+6048e5).length})),s=a.length?a.reduce((e,t)=>e+t.week,0)/a.length:0;return{posts:a,usualWeek:i,afterPosts:s}},"readTable",0,function(e,t){let r=(0,n.parseCsv)(String(e||"")),o=r.findIndex(e=>e.some(e=>e.trim().toLowerCase()===t.toLowerCase()));if(o<0)return[];let l=r[o].map(e=>e.trim().toLowerCase());return r.slice(o+1).filter(e=>e.some(e=>e.trim())).map(e=>Object.fromEntries(l.map((t,n)=>[t,(e[n]??"").trim()])))},"warmthOf",0,d],84278);let p="six-degrees-galaxy-lab",m="six-degrees-galaxy-layouts",g=Object.freeze({on:!0,gravity:0,rings:1,push:15,pull:1,distance:1,dotSize:1,lines:1,sizeBy:"power",names:"key",branch:!1,colourBy:"tier",speed:15,loop:!1,labels:!0,v:2}),h=["gravity","rings","push","pull","distance","dotSize","lines","sizeBy","names","branch","colourBy","speed","loop"],y=Object.freeze({gravity:.25,rings:0,push:25,pull:2.5,distance:.35,sizeBy:"reach"}),b=Object.freeze({gravity:0,rings:3,push:6,pull:4,distance:.22,sizeBy:"power"}),w=new Set,k=null;function v(){return k||(k=function(){try{let e=JSON.parse(localStorage.getItem(p)||"null");if(!e||"object"!=typeof e)return g;return{...g,...e,...e.v===g.v?{}:{branch:!1},v:g.v,on:!0}}catch{return g}}()),k}function S(e){k=null===e?{...g,labels:v().labels}:{...v(),...e,on:!0};try{localStorage.setItem(p,JSON.stringify(k))}catch{}w.forEach(e=>e())}let M=null,x=new Set;function F(){if(!M){try{M=JSON.parse(localStorage.getItem(m)||"[]")}catch{M=[]}Array.isArray(M)||(M=[])}return M}function C(e){M=e;try{localStorage.setItem(m,JSON.stringify(e))}catch{}x.forEach(e=>e())}let I=new Set,_={at:null,playing:!1,min:null,max:null,of:0,find:"",fly:0,found:0,social:void 0},N=null;function O(e){let t={..._,...e};Object.keys(e).every(e=>Object.is(t[e],_[e]))||(_=t,I.forEach(e=>e()))}function B(){cancelAnimationFrame(N),N=null,O({playing:!1})}let j=null;function E(e){let n=new Map;for(let[r,o]of Object.entries(e?.people||{}))n.set((0,t.keyFor)({profile_url:r}),{...o});for(let[r,o]of Object.entries(e?.live||{})){let e=(0,t.keyFor)({profile_url:r}),l=n.get(e)||{total:0,recent:0};o.last&&(!l.last||o.last>l.last)&&(l.last=o.last,"boolean"==typeof o.lastFromThem&&(l.lastFromThem=o.lastFromThem)),l.unread=o.unread,l.total=Math.max(l.total||0,1),n.set(e,l)}let r=Math.max(e?.asOf||0,e?.liveAt&&Date.parse(e.liveAt)||0);for(let e of n.values())(e.last||0)>r&&(r=e.last);return{merged:n,asOf:r,chapters:e?.chapters||[],posts:e?.posts?.posts||[]}}let A={1:"#4FC3F7",2:"#BA68C8",3:"#FFB74D"},T=["#FF6B6B","#4ECDC4","#FFD93D","#A29BFE","#00B894","#FD79A8","#74B9FF","#E17055"],$={warm:"#FF7043",cool:"#4FC3F7",dormant:"#8D6E63",never:"#546E7A"},D="#4a5568",U=["#2b1b6b","#6a1b9a","#c2185b","#f4511e","#ffb300","#fff3b0"];function z(e){let t=Math.max(0,Math.min(1,Number(e)||0))*(U.length-1),n=Math.min(U.length-2,Math.floor(t)),r=t-n,o=U[n],l=U[n+1];return`#${[1,3,5].map(e=>Math.round(parseInt(o.slice(e,e+2),16)*(1-r)+parseInt(l.slice(e,e+2),16)*r).toString(16).padStart(2,"0")).join("")}`}function L(e=[],t=()=>0){let n=[...new Set(e.map(t))].sort((e,t)=>e-t),r=new Map(n.map((e,t)=>[e,n.length>1?t/(n.length-1):1]));return e=>r.get(t(e))??0}let R=e=>String(e||"").trim().toLowerCase();e.s(["CLUSTERS",0,y,"LAB_DEFAULTS",0,g,"ORBIT",0,b,"applyLayout",0,function(e){let t=F().find(t=>t.name===e);t&&S(Object.fromEntries(h.filter(e=>e in t.settings).map(e=>[e,t.settings[e]])))},"bornTimes",0,function(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Map,o=(e,l=0)=>{if(r.has(e.id))return r.get(e.id);let i=-1/0,a=t.get(e.id);if(1===e.degree||null==a||l>6){let t=e.connected_date?Date.parse(e.connected_date):NaN;i=Number.isNaN(t)?-1/0:t}return null!=a&&n.has(a)&&l<=6&&(i=Math.max(i,o(n.get(a),l+1))),r.set(e.id,i),i};return e.map(e=>o(e))},"chapterAt",0,function(e,t){let n=null;for(let r of e?.chapters||[])Number.isFinite(r.from)&&r.from<=t&&(!n||r.from>n.from)&&(n=r);return n&&(!Number.isFinite(n.to)||n.to>t)?n:null},"clockNow",0,()=>_,"colourScheme",0,function(e,n,r,o){if("degree"===e)return{of:e=>A[Math.min(e.degree||1,3)],legend:[["1st",A[1]],["2nd",A[2]],["3rd+",A[3]]]};if("company"===e){let e=new Map;for(let t of n){let n=R(t.company);if(!n)continue;let r=e.get(n)||{name:String(t.company).trim(),n:0};r.n+=1,e.set(n,r)}let t=[...e.entries()].filter(([,e])=>e.n>1).sort((e,t)=>t[1].n-e[1].n).slice(0,T.length),r=new Map(t.map(([e],t)=>[e,T[t]]));return{of:e=>r.get(R(e.company))||D,legend:[...t.map(([,e],t)=>[e.name,T[t]]),["Other",D]]}}if("heat"===e){let e=function(e=[]){return L(e,t.score)}(n);return{of:t=>z(e(t)),heat:e,legend:[["Cold",z(.1)],["Warm",z(.45)],["Hot",z(.75)],["Hottest",z(1)]]}}return"warmth"===e&&o?{of:e=>1===(e.degree||1)?$[d(o.merged.get((0,t.keyFor)(e)),o.asOf)]:"#2d3748",legend:[["Warm",$.warm],["Cool",$.cool],["Dormant",$.dormant],["Never messaged",$.never]]}:{of:e=>r[e.tier]||"#666",legend:Object.entries(r)}},"effectiveLab",0,e=>e.on?e:e.labels===g.labels?g:{...g,labels:e.labels},"findMatches",0,function(e,t){let n=String(t||"").trim().toLowerCase();if(n.length<2)return null;let r=new Set;for(let t of e)[t.name,t.company,t.role,t.headline].some(e=>e&&String(e).toLowerCase().includes(n))&&r.add(t.id);return r},"forgetLayout",0,function(e){C(F().filter(t=>t.name!==e))},"heatBy",0,L,"heatColour",0,z,"labNow",0,v,"layoutOf",0,function(e){let t=t=>Object.entries(t).every(([t,n])=>e[t]===n);return["gravity","rings","push","pull","distance"].every(t=>e[t]===g[t])?"rings":t(y)?"clusters":t(b)?"orbit":null},"layoutsNow",0,F,"loadSocial",0,function(){return j||(j=fetch("/api/social").then(e=>e.ok?e.json():{}).then(e=>{O({social:e.social?E(e.social):null})}).catch(()=>O({social:null}))),j},"mergeSocial",0,E,"milestones",0,function(e){let t=[];for(let n of e?.chapters||[])Number.isFinite(n.from)&&t.push({t:n.from,kind:"job",label:n.company});for(let n of e?.posts||[])Number.isFinite(n.t)&&t.push({t:n.t,kind:"post",label:"You posted"});return t.sort((e,t)=>e.t-t.t)},"pause",0,B,"play",0,function e(){if(null==_.min||null==_.max||_.max<=_.min)return;let t=_.max-_.min,n=1e3*Math.max(1,Number(v().speed)||15),r=null==_.at||_.at>=_.max?_.min:_.at,o=performance.now()-(r-_.min)/t*n;O({at:r,playing:!0});let l=r=>{let i=Math.min(_.max,_.min+(r-o)/n*t);if(O({at:i}),i>=_.max){N=null,O({playing:!1}),v().loop&&setTimeout(()=>{N||_.at!==_.max||(O({at:_.min}),e())},1200);return}N=requestAnimationFrame(l)};cancelAnimationFrame(N),N=requestAnimationFrame(l)},"reachCounts",0,function(e,t){let n=new Map(e.map(e=>[e.id,0]));for(let r of e){let e=t.get(r.id);for(let r=0;null!=e&&r<7;r++)n.set(e,(n.get(e)||0)+1),e=t.get(e)}return n},"saveLayout",0,function(e){let t=String(e||"").trim().slice(0,40);if(!t)return;let n=v(),r=Object.fromEntries(h.map(e=>[e,n[e]]));C([...F().filter(e=>e.name!==t),{name:t,settings:r}])},"setClock",0,O,"setLab",0,S,"stopReplay",0,function(){B(),O({at:null})},"watchClock",0,function(e){return I.add(e),()=>I.delete(e)},"watchLab",0,function(e){w.add(e);let t=t=>{t.key===p&&(k=null,e())};return window.addEventListener("storage",t),()=>{w.delete(e),window.removeEventListener("storage",t)}},"watchLayouts",0,function(e){return x.add(e),()=>x.delete(e)}],39160)},19821,e=>{"use strict";async function t(e){let t=e?`/api/network?userId=${encodeURIComponent(e)}`:"/api/network",n=await fetch(t);if(!n.ok)throw Error(`Failed to load network (${n.status})`);let r=await n.json();return{degree1:r.degree1||[],degree2:r.degree2||[],degree3:r.degree3||[],ties:Number(r.ties)||0}}e.s(["loadNetwork",0,t])},48235,51798,e=>{"use strict";let t={fast:{label:"Fast",pagePause:20,chunkCooldown:60,profileGap:60},medium:{label:"Medium",pagePause:45,chunkCooldown:180,profileGap:90},slow:{label:"Slow",pagePause:90,chunkCooldown:300,profileGap:120}},n=e=>t[e]||t.fast;function r(e,t){let r=n(e),o=Math.max(0,Math.floor(Number(t)||0));return o*(6+r.pagePause)+Math.floor(o/10)*r.chunkCooldown}e.s(["PACES",0,t,"PACE_NAMES",0,["slow","medium","fast"],"durationText",0,function(e){if(!(e>=60))return"under a minute";let t=Math.round(e/60);if(t<60)return`about ${t} min`;let n=Math.floor(t/60),r=t%60;return`about ${n} h${r?` ${r} min`:""}`},"paceOf",0,n,"paceSeconds",0,r,"searchesPerHour",0,function(e){let t=n(e);return Math.round(3600/(6+t.pagePause+t.chunkCooldown/10))}],51798);var o=e.i(7214);function l(e,t){return e?t.scanned.has(e.id)||e.profile_url&&t.read?.has((0,o.keyFor)(e))?"scanned":e.profile_url&&t.hidden.has((0,o.keyFor)(e))?"hidden":"todo":"todo"}function i(e,t){if(!e||1!==e.degree||null==e.unlocked_from_bridge_id)return null;let n=l(e,t);return"todo"===n?"ready":n}e.s(["circleScanCost",0,function(e=100,t="fast"){let n=Math.max(1,Math.min(100,Math.round(e)||100)),o=t&&"fast"!==t?Math.max(5,Math.round(r(t,n)/60)):n>=100?55:Math.max(5,Math.round(.55*n));return{profileViews:1,searches:n,minutes:o}},"circleState",0,l,"reachIndex",0,function(e=[],t=[],n={}){let r=new Set;for(let e of t||[])e?.source_connection_id!=null&&r.add(e.source_connection_id);let l=new Set;for(let e of n?.skips||[])e?.profileUrl&&l.add((0,o.keyFor)({profile_url:e.profileUrl}));let i=new Set;for(let e of n?.read||[])e&&i.add((0,o.keyFor)({profile_url:e}));let a=new Map;for(let[e,t]of Object.entries(n?.lists||{}))e&&t&&a.set((0,o.keyFor)({profile_url:e}),t);let s=new Map;for(let t of e||[]){let e=t?.unlocked_from_bridge_id;if(null==e||1!==t.degree)continue;let n=s.get(e);n||s.set(e,n=[]),n.push(t)}return{scanned:r,read:i,hidden:l,reachedFrom:s,lists:a}},"reachState",0,i,"readyByCircle",0,function(e){let t=new Map;for(let[n,r]of e.reachedFrom){let o=r.filter(t=>"ready"===i(t,e)).length;o&&t.set(n,o)}return t},"readyToScan",0,function(e,t){return(e||[]).filter(e=>"ready"===i(e,t)).sort(o.compareBridges)},"scanBars",0,function(e,t){let n=l(e,t),r=e?.profile_url?t.lists?.get((0,o.keyFor)(e)):null;return"hidden"===n?null:r?r.more?r.total?Math.max(1,Math.min(4,Math.round(5*Math.min(1,10*r.pages/r.total)))):2:5:"scanned"===n?2:null}],48235)},7214,36774,e=>{"use strict";let t=/^[A-Za-z0-9_-]+\.(webp|jpg|jpeg|png)$/,n="/avatars/";function r(e){return"string"==typeof e&&e.startsWith(n)&&t.test(e.slice(n.length))?e:null}e.s(["localPhoto",0,r],36774);let o={S:0,A:1,B:2,C:3,D:4};function l(e){let t=parseFloat(e?.power_score);return Number.isFinite(t)?t:0}function i(e){return Math.round(10*l(e))/10}function a(e){return String(e?.profile_url||"").split(/[?#]/)[0].replace(/\/+$/,"")||`id:${e?.id}`}let s=(e,t)=>String(e??"").localeCompare(String(t??""),void 0,{numeric:!0});function u(e,t){return(o[e.tier]??9)-(o[t.tier]??9)||l(t)-l(e)||String(e.name||"").localeCompare(String(t.name||""))||s(e.id,t.id)}function c(e,t){return e.bridge&&t.bridge?u(e.bridge,t.bridge):e.bridge?-1:t.bridge?1:s(e.id,t.id)}function d(e,t){return t.score-e.score||t.waysIn-e.waysIn||c(e.routes[0]||f,t.routes[0]||f)||String(e.person.name||"").localeCompare(String(t.person.name||""))||(e.key<t.key?-1:+(e.key>t.key))}let f={id:null,bridge:null};function p(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return t.length<2?t[0]||"":`${t[0]} ${t[t.length-1].charAt(0)}.`}function m(e,t){let n=String(e||"");return t<=1?n?"…":"":n.length>t?`${n.slice(0,t-1)}…`:n}e.s(["TIERS",0,["S","A","B","C","D"],"compareBridges",0,u,"comparePower",0,d,"convergeLayout",0,function(e,t=800,n=!1,{cards:r=!1,mutuals:o=0}={}){let l=r?46:n?40:34,i=Math.round(t*(n?.44:.36)),a=Math.round(t*(n?.8:r?.6:.62)),s=[],u=null;for(let t of e?.routes||[])t.bridge?s.push({id:t.id,bridge:t.bridge,unresolved:!1,count:1}):u?u.count++:s.push(u={id:null,bridge:null,unresolved:!0,count:1});let c=Math.max(0,Math.floor(Number(o)||0)-(e?.waysIn||0)),d=Math.min(60,c),f=r?12:11,g=r?220:n?96:120,h=Math.max(1,Math.floor(g/f)+1),y=Math.ceil(d/h),b=d?40+y*f:0,w=Math.max(0,s.length-1)*l+b,k=Math.max(n?190:r?250:220,32+w+48),v=k/2,S=v-w/2,M=Math.max(4,Math.floor((i-10-42)/6)),x=s.map((e,t)=>{let n=e.unresolved?`can't be named (${e.count})`:e.bridge.name||"";return{...e,x:i,y:S+t*l,r:6,primary:0===t&&!e.unresolved,label:n.length<=M?n:m(e.unresolved?n:p(n),M)}}),F={x:a,y:v,r:17*!r,rings:r?[]:[32,50,70].filter(e=>e<=v-4)},C=x.map(t=>({key:e?.key,bridgeId:t.id,primary:t.primary,unresolved:t.unresolved,tier:t.bridge?.tier??null,x1:t.x,y1:t.y,x2:F.x,y2:F.y})),I={x:20,y:v,r:14},_=x.map(e=>({id:e.id,x1:I.x,y1:I.y,x2:e.x,y2:e.y})),N=e?[{key:e.key,p:e,x:F.x,y:F.y,r:F.r,rings:F.rings,big:!0,label:""}]:[],O=S+Math.max(0,s.length-1)*l+40,B=r?i-236+8:i-g,j=Array.from({length:d},(e,t)=>({x:B+t%h*f,y:O+Math.floor(t/h)*f})),E=e?.waysIn?e.waysIn/(e.waysIn+c):1;return{width:t,height:k,you:I,target:F,people:N,bridges:x,links:C,spokes:_,ghosts:j,unscanned:c,ghostLabel:d?{x:B,y:O-13}:null,drawn:E}},"keyFor",0,a,"mapCount",0,function(e,t=10){let n=Math.max(0,Math.min(100,Number(e)||0));return n<=50?t:Math.max(1,Math.round(t*(100-n)/50))},"mostMutuals",0,function(e=[],t=()=>0,n=7){return[...e].sort((e,n)=>Math.max(t(n)||0,n.waysIn)-Math.max(t(e)||0,e.waysIn)||n.waysIn-e.waysIn||d(e,n)).slice(0,n)},"routeIndex",0,function(e=[]){let t=new Map;for(let n of e||[]){let e=a(n),r=t.get(e);r||(r=new Set,t.set(e,r)),r.add(n.source_connection_id??null)}return t},"routesFor",0,function(e,t,n){return e?[...t?.get(a(e))??(null!=e.source_connection_id?new Set([e.source_connection_id]):new Set)].map(e=>({id:e,bridge:n?.get(e)??null})).sort(c):[]},"score",0,l,"score1",0,i,"separationPeople",0,function(e=[],t=[]){let n=new Map;for(let e of t||[])n.set(e.id,e);let o=new Map,l=new Map;for(let t of e||[]){let e=a(t);l.set(t.id,e);let n=o.get(e);n?function(e,t){let n=i(e)-i(t);if(n)return n>0;let o=!!r(e.profile_image_url);return!!r(t.profile_image_url)!==o?o:0>s(e.id,t.id)}(t,n.person)&&(n.person=t):(n={key:e,person:t,rowIds:[],routeIds:new Set},o.set(e,n)),n.rowIds.push(t.id),n.routeIds.add(t.source_connection_id??null)}let u={people:o.size,byTier:{S:0,A:0,B:0,C:0,D:0},multi:0,bridges:0,unresolvedIds:0,peopleOnlyUnresolved:0,onlyUnresolvedVia:0},f=new Set,p=new Set,m=new Set,g=[];for(let e of o.values()){let t=[...e.routeIds].map(e=>({id:e,bridge:n.get(e)??null}));t.sort(c);let r=t.filter(e=>e.bridge);for(let e of t)(e.bridge?f:p).add(e.id);if(!r.length)for(let e of(u.peopleOnlyUnresolved++,t))m.add(e.id);let{person:o}=e,l=o.tier;void 0!==u.byTier[l]&&u.byTier[l]++,t.length>1&&u.multi++,g.push({key:e.key,person:o,score:i(o),tier:l,routes:t,waysIn:t.length,rowIds:e.rowIds,haystack:[o.name,o.headline,o.company,o.role,...r.map(e=>e.bridge.name)].filter(Boolean).join("\n").toLowerCase(),rank:0,tied:!1})}return u.bridges=f.size,u.unresolvedIds=p.size,u.onlyUnresolvedVia=m.size,g.sort(d),function(e){for(let t=0;t<e.length;t++){let n=e[t],r=e[t-1],o=r&&r.score===n.score&&r.waysIn===n.waysIn;n.rank=o?r.rank:t+1,o&&(n.tied=!0,r.tied=!0)}}(g),{people:g,rowToKey:l,summary:u}},"shortName",0,p,"summitLayout",0,function(e=[],t=800,n=!1,{cards:r=!1}={}){let o=r?50:n?36:26,l=Math.round(.42*t),i=Math.round(.58*t),a=e.map((e,n)=>{var l;return{key:e.key,p:e,x:i,y:16+n*o,r:r?0:(l=e.waysIn)>=4?8.5:3===l?7:2===l?5.5:4,label:m(`#${e.rank}${e.tied?"=":""} ${e.person.name||""}`,Math.floor((t-i-60)/6.2))}}),s=new Map,c="\0unresolved";for(let e of a)for(let t of e.p.routes){let n=t.bridge?t.id:c,r=s.get(n);r||(r={id:t.bridge?t.id:null,bridge:t.bridge,unresolved:!t.bridge,ys:[],count:0},s.set(n,r)),r.count++,r.ys.push(e.y)}let d=[...s.values()].map(e=>({...e,bary:e.ys.reduce((e,t)=>e+t,0)/e.ys.length}));d.sort((e,t)=>e.bary-t.bary||e.unresolved-t.unresolved||(e.bridge&&t.bridge?u(e.bridge,t.bridge):0));let f=a.length?a[a.length-1].y:16,g=function(e=[],t=18,n=0){let r=[];e.forEach((e,n)=>{for(r.push({sum:e-n*t,count:1});r.length>1&&r[r.length-2].sum/r[r.length-2].count>r[r.length-1].sum/r[r.length-1].count;){let e=r.pop();r[r.length-1].sum+=e.sum,r[r.length-1].count+=e.count}});let o=r.flatMap(e=>Array(e.count).fill(e.sum/e.count)).map((e,n)=>e+n*t),l=o.length&&o[0]<n?n-o[0]:0;return o.map(e=>e+l)}(d.map(e=>e.bary),r?36:18,16),h=Math.max(4,Math.floor((l-10-42)/6));d.forEach((e,t)=>{if(e.x=l,e.y=g[t],e.r=5,e.unresolved)e.label=m(`can't be named (${e.count})`,h);else{let t=e.bridge.name||"";e.label=t.length<=h?t:m(p(t),h)}delete e.ys});let y=new Map(d.map(e=>[e.unresolved?c:e.id,e]));for(let e of d)e.onlyFor=0,e.bestFor=0;for(let e of a){let t=e.p.routes[0],n=t?y.get(t.bridge?t.id:c):null;n&&n.bestFor++,1===e.p.waysIn&&n&&n.onlyFor++}let b=[];for(let e of a){let t=new Set;e.p.routes.forEach((n,r)=>{let o=n.bridge?n.id:c;if(t.has(o))return;t.add(o);let l=y.get(o);b.push({key:e.key,bridgeId:l.id,primary:0===r&&!l.unresolved,unresolved:l.unresolved,tier:l.bridge?.tier??null,x1:l.x,y1:l.y,x2:e.x,y2:e.y})})}let w=Math.max(f,d.length?d[d.length-1].y:0),k=a.length?Math.ceil(w+16):0,v={x:20,y:a.length?(16+Math.max(f,w))/2:16,r:14},S=d.map(e=>({id:e.id,x1:v.x,y1:v.y,x2:e.x,y2:e.y}));return{width:t,height:k,you:v,people:a,bridges:d,links:b,spokes:S}}],7214)},5258,e=>{"use strict";e.s(["TIER_COLORS_CLASSIC",0,{S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},"TIER_ORDER",0,["S","A","B","C","D"],"initialsFor",0,function(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return 0===t.length?"?":(t[0].charAt(0)+(t.length>1?t[t.length-1].charAt(0):"")).toUpperCase()}])}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,60451,e=>{"use strict";var t=e.i(43476),i=e.i(71645),s=e.i(22016),a=e.i(18566);e.s(["default",0,function(){let e=(0,a.useRouter)();return(0,i.useEffect)(()=>{e.replace("/queue?view=messages")},[e]),(0,t.jsxs)("div",{style:{minHeight:"100vh",background:"#0a0a1a",color:"#aab",display:"flex",alignItems:"center",justifyContent:"center",fontSize:13},children:["Social is part of ",(0,t.jsx)(s.default,{href:"/queue?view=messages",style:{color:"#FF6B35",marginLeft:4},children:"Outlink"})," now."]})}])}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,26005,e=>{"use strict";var t=e.i(43476),n=e.i(22016),r=e.i(64745);let o=[{key:"network",label:"Network Circle",short:"Circle",on:{background:"#fff",color:"#000"},off:{background:"transparent",color:"#888"}},{key:"degrees",label:"Degrees",on:{background:"linear-gradient(135deg, #FFD700, #FF6B35)",color:"#000"},off:{background:"rgba(255,255,255,0.12)",color:"#fff"}},{key:"separation",label:"Separation",on:{background:"linear-gradient(135deg, #00E5FF, #FFD700 55%, #FF7043)",color:"#000"},off:{background:"rgba(255,255,255,0.12)",color:"#fff"}}],l=[{key:"paths",href:"/paths",label:"Paths",color:"#00ff88",on:"linear-gradient(135deg, #00ff88, #3498DB)",demo:!0},{key:"outlink",href:"/queue",label:"Outlink",color:"#FF6B35",on:"linear-gradient(135deg, #FF6B35, #FFD700)",own:!0},{key:"scan",href:"/setup",label:"Scan",color:"#666",on:"linear-gradient(135deg, #00ff88, #1abc9c)",own:!0}];e.s(["default",0,function({active:e,isMobile:i=!1,csvMode:a=!1,onMode:s,children:u,after:d}){let f={padding:i?"6px 10px":"8px 16px",borderRadius:6,border:"none",fontSize:i?11:13,fontWeight:600,textDecoration:"none"};return(0,t.jsxs)("div",{id:"main-tabs",style:{display:"flex",gap:i?2:4,background:"rgba(255,255,255,0.08)",borderRadius:8,padding:i?2:3,flexWrap:i?"wrap":"nowrap"},children:[o.map(r=>{let o={...f,cursor:"pointer",...e===r.key?r.on:r.off},l=i&&r.short?r.short:r.label;return s?(0,t.jsx)("button",{type:"button",onClick:()=>s(r.key),style:o,children:l},r.key):(0,t.jsx)(n.default,{href:`/?mode=${r.key}`,style:{...o,display:"flex",alignItems:"center"},children:l},r.key)}),u,l.filter(e=>!r.IS_DEMO&&(!e.own||!a)).map(r=>{let o=e===r.key;return(0,t.jsxs)(n.default,{href:r.href,title:r.title,"aria-current":o?"page":void 0,style:{...f,display:"flex",alignItems:"center",gap:4,background:o?r.on:"rgba(255,255,255,0.06)",color:o?"#000":r.color},children:[r.label,r.badge&&(0,t.jsx)("span",{style:{fontSize:9,opacity:.7,marginLeft:2},children:r.badge})]},r.key)}),d]})}])},2776,e=>{"use strict";var t=e.i(43476),n=e.i(15812);e.s(["default",0,function({children:e}){let{userId:r,ready:o}=(0,n.useUser)();return o&&r?e:(0,t.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",background:"#0a0a1a",color:"#fff",padding:24,textAlign:"center",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif'},children:o?(0,t.jsxs)("div",{style:{maxWidth:420},children:[(0,t.jsx)("div",{style:{fontSize:18,fontWeight:700,marginBottom:8},children:"Can’t reach Six Degrees’ local server"}),(0,t.jsx)("div",{style:{color:"#888",fontSize:14,lineHeight:1.6},children:"The page loaded but the app behind it is not answering. If you started it from a terminal, check that window for an error, then reload this page."})]}):(0,t.jsx)("div",{style:{fontSize:18,fontWeight:600},children:"Loading…"})})}])},8819,e=>{"use strict";var t=e.i(43476);let n="1px solid rgba(255,255,255,0.1)";function r({children:e,style:n}){return(0,t.jsx)("div",{style:{fontSize:13.5,color:"#8b9a9a",lineHeight:1.6,marginTop:4,...n},children:e})}e.s(["Body",0,r,"Btn",0,function({children:e,onClick:r,disabled:o,primary:l,tone:i,type:a="button"}){return(0,t.jsx)("button",{type:a,onClick:r,disabled:o,style:{padding:"9px 18px",borderRadius:7,fontSize:13.5,fontWeight:650,color:o?"#667":"#fff",border:n,background:o?"rgba(255,255,255,0.05)":"bad"===i?"rgba(255,80,80,0.15)":l?"linear-gradient(135deg, #9B59B6, #3498DB)":"rgba(255,255,255,0.08)",cursor:o?"not-allowed":"pointer"},children:e})},"FONT",0,'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',"LINE",0,n,"Mono",0,function({children:e}){return(0,t.jsx)("code",{style:{background:"rgba(255,255,255,0.08)",padding:"1px 5px",borderRadius:4,wordBreak:"break-all"},children:e})},"Section",0,function({id:e,title:o,intro:l,children:i}){return(0,t.jsxs)("section",{id:e,style:{padding:"24px 0",borderBottom:n,scrollMarginTop:16},children:[(0,t.jsx)("h2",{style:{fontSize:16,fontWeight:650,margin:"0 0 6px"},children:o}),l&&(0,t.jsx)(r,{style:{marginTop:0,marginBottom:12},children:l}),i]})},"Status",0,function({children:e,tone:n}){return(0,t.jsxs)("div",{role:"status",style:{marginTop:10,padding:"10px 14px",borderRadius:8,fontSize:13.5,lineHeight:1.6,color:"ok"===n?"#00ff88":"bad"===n?"#ff7676":"#e8e8ee",background:"ok"===n?"rgba(0,255,136,0.08)":"bad"===n?"rgba(255,80,80,0.08)":"rgba(255,255,255,0.05)",border:`1px solid ${"ok"===n?"rgba(0,255,136,0.3)":"bad"===n?"rgba(255,80,80,0.3)":"rgba(255,255,255,0.12)"}`},children:["ok"===n&&"✓ ",e]})}])},28867,86106,e=>{"use strict";var t=e.i(71645),n=e.i(7214);let r=Object.freeze({known:!1,sent:new Set,mine:new Map,version:0}),o=new Set,l=r,i=null,a=new Map;function s(e=l.sent,t=l.known){for(let n of(l=Object.freeze({known:t,sent:e,mine:new Map(a),version:l.version+1}),[...o]))n()}function u(e){return o.add(e),i||l.known||(i=fetch("/api/outreach").then(e=>e.ok?e.json():null).then(e=>{e&&s(new Set((e.pending||[]).map(n.keyFor)),!0)}).catch(()=>{}).finally(()=>{i=null})),()=>o.delete(e)}function d(){return l}async function f(e){let t=await fetch("/api/outreach",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),n=await t.json().catch(()=>({}));if(!t.ok)throw Error(n.error||"Could not save that.");return n}async function c(e,{bridgeId:t}={}){let r=(0,n.keyFor)(e),o=a.has(r)?a.get(r):void 0;a.set(r,!0),s();try{return await f({action:"mark-sent",connectionId:e.id,profileUrl:e.profile_url,bridgeId:t})}catch(e){throw void 0===o?a.delete(r):a.set(r,o),s(),e}}async function p(e){let t=(0,n.keyFor)(e),r=a.has(t)?a.get(t):void 0;a.set(t,!1),s();try{return await f({action:"undo",connectionId:e.id,profileUrl:e.profile_url})}catch(e){throw void 0===r?a.delete(t):a.set(t,r),s(),e}}e.s(["REQUESTS_UNKNOWN",0,r,"hasRequest",0,function(e,t=l){if(!e)return!1;let r=(0,n.keyFor)(e);return t.mine.has(r)?t.mine.get(r):t.known?t.sent.has(r):"pending"===e.unlock_status||"sent"===e.outreach_status},"markRequested",0,c,"requestCount",0,function(e=l){let t=new Set(e.known?e.sent:[]);for(let[n,r]of e.mine)r?t.add(n):t.delete(n);return t.size},"requestsNow",0,d,"undoRequest",0,p,"watchRequests",0,u],86106),e.s(["default",0,function(){return(0,t.useSyncExternalStore)(u,d,()=>r)}],28867)},39160,84278,e=>{"use strict";var t=e.i(7214),n=e.i(7837);function r(e){let t=String(e||"").trim();if(!t)return null;let n=t.match(/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})(?::(\d{2}))?(?:\s*UTC)?$/);if(n)return Date.UTC(+n[1],n[2]-1,+n[3],+n[4],+n[5],+(n[6]||0));if(n=t.match(/^(\d{1,2})\/(\d{1,2})\/(\d{2,4}),?\s+(\d{1,2}):(\d{2})\s*(AM|PM)?$/i)){let e=100>+n[3]?2e3+ +n[3]:+n[3],t=n[4]%12;return"PM"===(n[6]||"").toUpperCase()&&(t+=12),Date.UTC(e,n[1]-1,+n[2],t,+n[5])}if(n=t.match(/^([A-Za-z]{3,9})\s+(\d{4})$/)){let e=Date.parse(`1 ${n[1]} ${n[2]} UTC`);return Number.isNaN(e)?null:e}let r=Date.parse(/\d{4}$/.test(t)?`${t} UTC`:t);return Number.isNaN(r)?null:r}let o=e=>(0,t.keyFor)({profile_url:e});function l(e=[]){let t=new Map;for(let n of e){let e=o(n["sender profile url"]),r=n["conversation id"];r&&e&&(t.has(e)||t.set(e,new Set),t.get(e).add(r))}let n=null;for(let[e,r]of t)(!n||r.size>t.get(n).size)&&(n=e);return n}let i=e=>{let t=c(e);return t?`name:${t}`:null},a=/sponsored/i,s=/in\s?mail/i,u=/linkedin\.com\/(company|showcase|school)\//i,d=e=>/^(yes|true|1)$/i.test(String(e||"").trim());function f(e,t){if(!e||!e.total)return"never";let n=t-e.last;return n<=2592e6||e.recent>=3?"warm":n<=31536e6?"cool":"dormant"}let c=e=>String(e||"").split(",")[0].normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/[^a-z0-9 ]+/g," ").replace(/\s+/g," ").trim();e.s(["buildConversations",0,function(e=[],{keepText:t=!1}={}){let n=l(e),f=new Map;for(let t of e)n&&o(t["sender profile url"])===n&&t.from&&f.set(t.from,(f.get(t.from)||0)+1);let p=c([...f].sort((e,t)=>t[1]-e[1])[0]?.[0]||""),g=e=>!!e&&(e===n||!!p&&e===`name:${p}`),m={},h=new Map,y=0,b=0;for(let n of e){let e=n["conversation id"],l=r(n.date);if(!e||null==l){b+=1;continue}if(d(n["is message draft"])){y+=1;continue}let f=o(n["sender profile url"])||i(n.from);f&&n.from&&!m[f]&&(m[f]=String(n.from).trim());let c=String(n["recipient profile urls"]||"").split(/[,;\s]+/).filter(Boolean).map(o),p=String(n.to||"").split(",").map(e=>e.trim()).filter(Boolean),w=c.length?c:p.map(i).filter(Boolean);c.length&&c.length===p.length&&c.forEach((e,t)=>{m[e]||(m[e]=p[t])}),c.length||p.forEach(e=>{let t=i(e);t&&!m[t]&&(m[t]=e)}),h.has(e)||h.set(e,{id:e,title:"",everyone:new Set,messages:[],kind:null,folder:"",newest:-1/0});let k=h.get(e);f&&k.everyone.add(f),w.forEach(e=>k.everyone.add(e)),k.kind=k.kind||function(e){let t=String(e.folder||""),n=String(e["conversation title"]||"");return a.test(t)||a.test(n)||u.test(String(e["sender profile url"]||""))?"sponsored":s.test(t)||s.test(n)?"inmail":null}(n),l>=k.newest&&(k.newest=l,k.folder=String(n.folder||"").trim().toLowerCase().slice(0,30));let S={t:l,fromMe:g(f)};t&&(S.text=[n.subject,n.content].map(e=>String(e||"").trim()).filter(Boolean).join("\n\n"),!k.title&&n["conversation title"]&&(k.title=String(n["conversation title"]).trim())),k.messages.push(S)}let w=[];for(let e of h.values()){let n=[...e.everyone].filter(e=>e&&!g(e)).sort();e.messages.sort((e,t)=>e.t-t.t);let r={id:e.id,people:n,group:n.length>1,kind:e.kind,folder:e.folder,messages:e.messages};t&&(r.title=e.title),w.push(r)}for(let e of Object.keys(m))g(e)&&delete m[e];return{self:n,conversations:w,names:m,drafts:y,skipped:b}},"buildInvitations",0,function(e=[],{keepText:t=!1}={}){let n=[];for(let l of e){let e=String(l.direction||"").toUpperCase();if("INCOMING"!==e&&"OUTGOING"!==e)continue;let a="INCOMING"===e?"in":"out",s=String(("in"===a?l.from:l.to)||"").trim(),u=o("in"===a?l.inviterprofileurl:l.inviteeprofileurl),d=(u&&/\/in\//.test(u)?u:null)||i(s);if(!d)continue;let f=r(l["sent at"]),c={id:`${a}|${d}|${f??""}`,dir:a,key:d,name:s.slice(0,120),t:f};t&&String(l.message||"").trim()&&(c.note=String(l.message).trim().slice(0,2e3)),n.push(c)}return n.sort((e,t)=>(t.t||0)-(e.t||0))},"careerChapters",0,function(e=[],t=[],n=Date.now()){let l=e.map(e=>({company:e["company name"]||"",title:e.title||"",from:r(e["started on"]),to:r(e["finished on"])})).filter(e=>e.company&&null!=e.from).sort((e,t)=>e.from-t.from),i=t.map(e=>({url:o(e.url||e.profile_url),t:r(e["connected on"]||e.connected_on)})).filter(e=>null!=e.t);return l.map(e=>{let t=e.to??n,r=i.filter(n=>n.t>=e.from&&n.t<t);return{...e,to:e.to,made:r.length,people:r.map(e=>e.url)}})},"conversationSummary",0,function(e){let t=e.messages[e.messages.length-1];return{id:e.id,people:e.people,group:e.group,kind:e.kind||null,folder:e.folder||"",last:t?t.t:null,lastFromThem:t?!t.fromMe:null,count:e.messages.length,mine:e.messages.filter(e=>e.fromMe).length}},"invitationSplit",0,function(e=[]){let t=0,n=0;for(let r of e){let e=String(r.direction||"").toUpperCase();"INCOMING"===e?t+=1:"OUTGOING"===e&&(n+=1)}return{incoming:t,outgoing:n,total:t+n}},"messageStats",0,function(e=[]){let t=l(e),n=new Map;for(let t of e){let e=o(t["sender profile url"]),l=t["conversation id"];if(!l||!e)continue;let i=String(t["recipient profile urls"]||"").split(/[,;\s]+/).filter(Boolean).map(o),a=r(t.date);if(null==a)continue;n.has(l)||n.set(l,{people:new Set,msgs:[]});let s=n.get(l);s.people.add(e),i.forEach(e=>s.people.add(e)),s.msgs.push({from:e,t:a})}let i=0,a=new Map;for(let e of n.values()){let n=[...e.people].filter(e=>e!==t);if(1!==n.length||!e.people.has(t))continue;let r=n[0],o=a.get(r)||{last:0,lastFromThem:!1,total:0,times:[]};for(let n of e.msgs)o.total+=1,o.times.push(n.t),n.t>=o.last&&(o.last=n.t,o.lastFromThem=n.from!==t),n.t>i&&(i=n.t);a.set(r,o)}for(let e of a.values())e.recent=e.times.filter(e=>e>i-7776e6).length,delete e.times;return{self:t,asOf:i||null,people:a}},"nameKey",0,c,"postingEffect",0,function(e=[],t=[]){let n=e.map(e=>({t:r(e.date),link:e.sharelink||e["share link"]||""})).filter(e=>null!=e.t).sort((e,t)=>e.t-t.t),o=t.map(e=>r(e["connected on"]||e.connected_on)).filter(e=>null!=e).sort((e,t)=>e-t);if(!o.length)return{posts:[],usualWeek:0,afterPosts:0};let l=Math.max(6048e5,o[o.length-1]-o[0]),i=o.length/l*6048e5,a=n.map(e=>({...e,week:o.filter(t=>t>=e.t&&t<e.t+6048e5).length})),s=a.length?a.reduce((e,t)=>e+t.week,0)/a.length:0;return{posts:a,usualWeek:i,afterPosts:s}},"readTable",0,function(e,t){let r=(0,n.parseCsv)(String(e||"")),o=r.findIndex(e=>e.some(e=>e.trim().toLowerCase()===t.toLowerCase()));if(o<0)return[];let l=r[o].map(e=>e.trim().toLowerCase());return r.slice(o+1).filter(e=>e.some(e=>e.trim())).map(e=>Object.fromEntries(l.map((t,n)=>[t,(e[n]??"").trim()])))},"warmthOf",0,f],84278);let p="six-degrees-galaxy-lab",g="six-degrees-galaxy-layouts",m=Object.freeze({on:!0,gravity:0,rings:1,push:15,pull:1,distance:1,dotSize:1,lines:1,sizeBy:"power",names:"key",branch:!1,colourBy:"tier",speed:15,loop:!1,labels:!0,v:2}),h=["gravity","rings","push","pull","distance","dotSize","lines","sizeBy","names","branch","colourBy","speed","loop"],y=Object.freeze({gravity:.25,rings:0,push:25,pull:2.5,distance:.35,sizeBy:"reach"}),b=Object.freeze({gravity:0,rings:3,push:6,pull:4,distance:.22,sizeBy:"power"}),w=new Set,k=null;function S(){return k||(k=function(){try{let e=JSON.parse(localStorage.getItem(p)||"null");if(!e||"object"!=typeof e)return m;return{...m,...e,...e.v===m.v?{}:{branch:!1},v:m.v,on:!0}}catch{return m}}()),k}function x(e){k=null===e?{...m,labels:S().labels}:{...S(),...e,on:!0};try{localStorage.setItem(p,JSON.stringify(k))}catch{}w.forEach(e=>e())}let v=null,M=new Set;function F(){if(!v){try{v=JSON.parse(localStorage.getItem(g)||"[]")}catch{v=[]}Array.isArray(v)||(v=[])}return v}function C(e){v=e;try{localStorage.setItem(g,JSON.stringify(e))}catch{}M.forEach(e=>e())}let I=new Set,B={at:null,playing:!1,min:null,max:null,of:0,find:"",fly:0,found:0,social:void 0},N=null;function _(e){let t={...B,...e};Object.keys(e).every(e=>Object.is(t[e],B[e]))||(B=t,I.forEach(e=>e()))}function j(){cancelAnimationFrame(N),N=null,_({playing:!1})}let O=null;function T(e){let n=new Map;for(let[r,o]of Object.entries(e?.people||{}))n.set((0,t.keyFor)({profile_url:r}),{...o});for(let[r,o]of Object.entries(e?.live||{})){let e=(0,t.keyFor)({profile_url:r}),l=n.get(e)||{total:0,recent:0};o.last&&(!l.last||o.last>l.last)&&(l.last=o.last,"boolean"==typeof o.lastFromThem&&(l.lastFromThem=o.lastFromThem)),l.unread=o.unread,l.total=Math.max(l.total||0,1),n.set(e,l)}let r=Math.max(e?.asOf||0,e?.liveAt&&Date.parse(e.liveAt)||0);for(let e of n.values())(e.last||0)>r&&(r=e.last);return{merged:n,asOf:r,chapters:e?.chapters||[],posts:e?.posts?.posts||[]}}let E={1:"#4FC3F7",2:"#BA68C8",3:"#FFB74D"},A=["#FF6B6B","#4ECDC4","#FFD93D","#A29BFE","#00B894","#FD79A8","#74B9FF","#E17055"],D={warm:"#FF7043",cool:"#4FC3F7",dormant:"#8D6E63",never:"#546E7A"},$="#4a5568",z=["#2b1b6b","#6a1b9a","#c2185b","#f4511e","#ffb300","#fff3b0"];function L(e){let t=Math.max(0,Math.min(1,Number(e)||0))*(z.length-1),n=Math.min(z.length-2,Math.floor(t)),r=t-n,o=z[n],l=z[n+1];return`#${[1,3,5].map(e=>Math.round(parseInt(o.slice(e,e+2),16)*(1-r)+parseInt(l.slice(e,e+2),16)*r).toString(16).padStart(2,"0")).join("")}`}function U(e=[],t=()=>0){let n=[...new Set(e.map(t))].sort((e,t)=>e-t),r=new Map(n.map((e,t)=>[e,n.length>1?t/(n.length-1):1]));return e=>r.get(t(e))??0}let R=e=>String(e||"").trim().toLowerCase();e.s(["CLUSTERS",0,y,"LAB_DEFAULTS",0,m,"ORBIT",0,b,"applyLayout",0,function(e){let t=F().find(t=>t.name===e);t&&x(Object.fromEntries(h.filter(e=>e in t.settings).map(e=>[e,t.settings[e]])))},"bornTimes",0,function(e,t){let n=new Map(e.map(e=>[e.id,e])),r=new Map,o=(e,l=0)=>{if(r.has(e.id))return r.get(e.id);let i=-1/0,a=t.get(e.id);if(1===e.degree||null==a||l>6){let t=e.connected_date?Date.parse(e.connected_date):NaN;i=Number.isNaN(t)?-1/0:t}return null!=a&&n.has(a)&&l<=6&&(i=Math.max(i,o(n.get(a),l+1))),r.set(e.id,i),i};return e.map(e=>o(e))},"chapterAt",0,function(e,t){let n=null;for(let r of e?.chapters||[])Number.isFinite(r.from)&&r.from<=t&&(!n||r.from>n.from)&&(n=r);return n&&(!Number.isFinite(n.to)||n.to>t)?n:null},"clockNow",0,()=>B,"colourScheme",0,function(e,n,r,o){if("degree"===e)return{of:e=>E[Math.min(e.degree||1,3)],legend:[["1st",E[1]],["2nd",E[2]],["3rd+",E[3]]]};if("company"===e){let e=new Map;for(let t of n){let n=R(t.company);if(!n)continue;let r=e.get(n)||{name:String(t.company).trim(),n:0};r.n+=1,e.set(n,r)}let t=[...e.entries()].filter(([,e])=>e.n>1).sort((e,t)=>t[1].n-e[1].n).slice(0,A.length),r=new Map(t.map(([e],t)=>[e,A[t]]));return{of:e=>r.get(R(e.company))||$,legend:[...t.map(([,e],t)=>[e.name,A[t]]),["Other",$]]}}if("heat"===e){let e=function(e=[]){return U(e,t.score)}(n);return{of:t=>L(e(t)),heat:e,legend:[["Cold",L(.1)],["Warm",L(.45)],["Hot",L(.75)],["Hottest",L(1)]]}}return"warmth"===e&&o?{of:e=>1===(e.degree||1)?D[f(o.merged.get((0,t.keyFor)(e)),o.asOf)]:"#2d3748",legend:[["Warm",D.warm],["Cool",D.cool],["Dormant",D.dormant],["Never messaged",D.never]]}:{of:e=>r[e.tier]||"#666",legend:Object.entries(r)}},"effectiveLab",0,e=>e.on?e:e.labels===m.labels?m:{...m,labels:e.labels},"findMatches",0,function(e,t){let n=String(t||"").trim().toLowerCase();if(n.length<2)return null;let r=new Set;for(let t of e)[t.name,t.company,t.role,t.headline].some(e=>e&&String(e).toLowerCase().includes(n))&&r.add(t.id);return r},"forgetLayout",0,function(e){C(F().filter(t=>t.name!==e))},"heatBy",0,U,"heatColour",0,L,"labNow",0,S,"layoutOf",0,function(e){let t=t=>Object.entries(t).every(([t,n])=>e[t]===n);return["gravity","rings","push","pull","distance"].every(t=>e[t]===m[t])?"rings":t(y)?"clusters":t(b)?"orbit":null},"layoutsNow",0,F,"loadSocial",0,function(){return O||(O=fetch("/api/social").then(e=>e.ok?e.json():{}).then(e=>{_({social:e.social?T(e.social):null})}).catch(()=>_({social:null}))),O},"mergeSocial",0,T,"milestones",0,function(e){let t=[];for(let n of e?.chapters||[])Number.isFinite(n.from)&&t.push({t:n.from,kind:"job",label:n.company});for(let n of e?.posts||[])Number.isFinite(n.t)&&t.push({t:n.t,kind:"post",label:"You posted"});return t.sort((e,t)=>e.t-t.t)},"pause",0,j,"play",0,function e(){if(null==B.min||null==B.max||B.max<=B.min)return;let t=B.max-B.min,n=1e3*Math.max(1,Number(S().speed)||15),r=null==B.at||B.at>=B.max?B.min:B.at,o=performance.now()-(r-B.min)/t*n;_({at:r,playing:!0});let l=r=>{let i=Math.min(B.max,B.min+(r-o)/n*t);if(_({at:i}),i>=B.max){N=null,_({playing:!1}),S().loop&&setTimeout(()=>{N||B.at!==B.max||(_({at:B.min}),e())},1200);return}N=requestAnimationFrame(l)};cancelAnimationFrame(N),N=requestAnimationFrame(l)},"reachCounts",0,function(e,t){let n=new Map(e.map(e=>[e.id,0]));for(let r of e){let e=t.get(r.id);for(let r=0;null!=e&&r<7;r++)n.set(e,(n.get(e)||0)+1),e=t.get(e)}return n},"saveLayout",0,function(e){let t=String(e||"").trim().slice(0,40);if(!t)return;let n=S(),r=Object.fromEntries(h.map(e=>[e,n[e]]));C([...F().filter(e=>e.name!==t),{name:t,settings:r}])},"setClock",0,_,"setLab",0,x,"stopReplay",0,function(){j(),_({at:null})},"watchClock",0,function(e){return I.add(e),()=>I.delete(e)},"watchLab",0,function(e){w.add(e);let t=t=>{t.key===p&&(k=null,e())};return window.addEventListener("storage",t),()=>{w.delete(e),window.removeEventListener("storage",t)}},"watchLayouts",0,function(e){return M.add(e),()=>M.delete(e)}],39160)},19821,e=>{"use strict";async function t(e){let t=e?`/api/network?userId=${encodeURIComponent(e)}`:"/api/network",n=await fetch(t);if(!n.ok)throw Error(`Failed to load network (${n.status})`);let r=await n.json();return{degree1:r.degree1||[],degree2:r.degree2||[],degree3:r.degree3||[],ties:Number(r.ties)||0}}e.s(["loadNetwork",0,t])},48235,51798,e=>{"use strict";let t={fast:{label:"Fast",pagePause:20,chunkCooldown:60,profileGap:60},medium:{label:"Medium",pagePause:45,chunkCooldown:180,profileGap:90},slow:{label:"Slow",pagePause:90,chunkCooldown:300,profileGap:120}},n=e=>t[e]||t.fast;function r(e,t){let r=n(e),o=Math.max(0,Math.floor(Number(t)||0));return o*(6+r.pagePause)+Math.floor(o/10)*r.chunkCooldown}e.s(["PACES",0,t,"PACE_NAMES",0,["slow","medium","fast"],"durationText",0,function(e){if(!(e>=60))return"under a minute";let t=Math.round(e/60);if(t<60)return`about ${t} min`;let n=Math.floor(t/60),r=t%60;return`about ${n} h${r?` ${r} min`:""}`},"paceOf",0,n,"paceSeconds",0,r,"searchesPerHour",0,function(e){let t=n(e);return Math.round(3600/(6+t.pagePause+t.chunkCooldown/10))}],51798);var o=e.i(7214);function l(e,t){return e?t.scanned.has(e.id)||e.profile_url&&t.read?.has((0,o.keyFor)(e))?"scanned":e.profile_url&&t.hidden.has((0,o.keyFor)(e))?"hidden":"todo":"todo"}function i(e,t){if(!e||1!==e.degree||null==e.unlocked_from_bridge_id)return null;let n=l(e,t);return"todo"===n?"ready":n}e.s(["circleScanCost",0,function(e=100,t="fast"){let n=Math.max(1,Math.min(100,Math.round(e)||100)),o=t&&"fast"!==t?Math.max(5,Math.round(r(t,n)/60)):n>=100?55:Math.max(5,Math.round(.55*n));return{profileViews:1,searches:n,minutes:o}},"circleState",0,l,"reachIndex",0,function(e=[],t=[],n={}){let r=new Set;for(let e of t||[])e?.source_connection_id!=null&&r.add(e.source_connection_id);let l=new Set;for(let e of n?.skips||[])e?.profileUrl&&l.add((0,o.keyFor)({profile_url:e.profileUrl}));let i=new Set;for(let e of n?.read||[])e&&i.add((0,o.keyFor)({profile_url:e}));let a=new Map;for(let[e,t]of Object.entries(n?.lists||{}))e&&t&&a.set((0,o.keyFor)({profile_url:e}),t);let s=new Map;for(let t of e||[]){let e=t?.unlocked_from_bridge_id;if(null==e||1!==t.degree)continue;let n=s.get(e);n||s.set(e,n=[]),n.push(t)}return{scanned:r,read:i,hidden:l,reachedFrom:s,lists:a}},"reachState",0,i,"readyByCircle",0,function(e){let t=new Map;for(let[n,r]of e.reachedFrom){let o=r.filter(t=>"ready"===i(t,e)).length;o&&t.set(n,o)}return t},"readyToScan",0,function(e,t){return(e||[]).filter(e=>"ready"===i(e,t)).sort(o.compareBridges)},"scanBars",0,function(e,t){let n=l(e,t),r=e?.profile_url?t.lists?.get((0,o.keyFor)(e)):null;return"hidden"===n?null:r?r.more?r.total?Math.max(1,Math.min(4,Math.round(5*Math.min(1,10*r.pages/r.total)))):2:5:"scanned"===n?2:null}],48235)},7214,36774,e=>{"use strict";let t=/^[A-Za-z0-9_-]+\.(webp|jpg|jpeg|png)$/,n="/avatars/";function r(e){return"string"==typeof e&&e.startsWith(n)&&t.test(e.slice(n.length))?e:null}e.s(["localPhoto",0,r],36774);let o={S:0,A:1,B:2,C:3,D:4};function l(e){let t=parseFloat(e?.power_score);return Number.isFinite(t)?t:0}function i(e){return Math.round(10*l(e))/10}function a(e){return String(e?.profile_url||"").split(/[?#]/)[0].replace(/\/+$/,"")||`id:${e?.id}`}let s=(e,t)=>String(e??"").localeCompare(String(t??""),void 0,{numeric:!0});function u(e,t){return(o[e.tier]??9)-(o[t.tier]??9)||l(t)-l(e)||String(e.name||"").localeCompare(String(t.name||""))||s(e.id,t.id)}function d(e,t){return e.bridge&&t.bridge?u(e.bridge,t.bridge):e.bridge?-1:t.bridge?1:s(e.id,t.id)}function f(e,t){return t.score-e.score||t.waysIn-e.waysIn||d(e.routes[0]||c,t.routes[0]||c)||String(e.person.name||"").localeCompare(String(t.person.name||""))||(e.key<t.key?-1:+(e.key>t.key))}let c={id:null,bridge:null};function p(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return t.length<2?t[0]||"":`${t[0]} ${t[t.length-1].charAt(0)}.`}function g(e,t){let n=String(e||"");return t<=1?n?"…":"":n.length>t?`${n.slice(0,t-1)}…`:n}e.s(["TIERS",0,["S","A","B","C","D"],"compareBridges",0,u,"comparePower",0,f,"convergeLayout",0,function(e,t=800,n=!1,{cards:r=!1,mutuals:o=0}={}){let l=r?46:n?40:34,i=Math.round(t*(n?.44:.36)),a=Math.round(t*(n?.8:r?.6:.62)),s=[],u=null;for(let t of e?.routes||[])t.bridge?s.push({id:t.id,bridge:t.bridge,unresolved:!1,count:1}):u?u.count++:s.push(u={id:null,bridge:null,unresolved:!0,count:1});let d=Math.max(0,Math.floor(Number(o)||0)-(e?.waysIn||0)),f=Math.min(60,d),c=r?12:11,m=r?220:n?96:120,h=Math.max(1,Math.floor(m/c)+1),y=Math.ceil(f/h),b=f?40+y*c:0,w=Math.max(0,s.length-1)*l+b,k=Math.max(n?190:r?250:220,32+w+48),S=k/2,x=S-w/2,v=Math.max(4,Math.floor((i-10-42)/6)),M=s.map((e,t)=>{let n=e.unresolved?`can't be named (${e.count})`:e.bridge.name||"";return{...e,x:i,y:x+t*l,r:6,primary:0===t&&!e.unresolved,label:n.length<=v?n:g(e.unresolved?n:p(n),v)}}),F={x:a,y:S,r:17*!r,rings:r?[]:[32,50,70].filter(e=>e<=S-4)},C=M.map(t=>({key:e?.key,bridgeId:t.id,primary:t.primary,unresolved:t.unresolved,tier:t.bridge?.tier??null,x1:t.x,y1:t.y,x2:F.x,y2:F.y})),I={x:20,y:S,r:14},B=M.map(e=>({id:e.id,x1:I.x,y1:I.y,x2:e.x,y2:e.y})),N=e?[{key:e.key,p:e,x:F.x,y:F.y,r:F.r,rings:F.rings,big:!0,label:""}]:[],_=x+Math.max(0,s.length-1)*l+40,j=r?i-236+8:i-m,O=Array.from({length:f},(e,t)=>({x:j+t%h*c,y:_+Math.floor(t/h)*c})),T=e?.waysIn?e.waysIn/(e.waysIn+d):1;return{width:t,height:k,you:I,target:F,people:N,bridges:M,links:C,spokes:B,ghosts:O,unscanned:d,ghostLabel:f?{x:j,y:_-13}:null,drawn:T}},"keyFor",0,a,"mapCount",0,function(e,t=10){let n=Math.max(0,Math.min(100,Number(e)||0));return n<=50?t:Math.max(1,Math.round(t*(100-n)/50))},"mostMutuals",0,function(e=[],t=()=>0,n=7){return[...e].sort((e,n)=>Math.max(t(n)||0,n.waysIn)-Math.max(t(e)||0,e.waysIn)||n.waysIn-e.waysIn||f(e,n)).slice(0,n)},"routeIndex",0,function(e=[]){let t=new Map;for(let n of e||[]){let e=a(n),r=t.get(e);r||(r=new Set,t.set(e,r)),r.add(n.source_connection_id??null)}return t},"routesFor",0,function(e,t,n){return e?[...t?.get(a(e))??(null!=e.source_connection_id?new Set([e.source_connection_id]):new Set)].map(e=>({id:e,bridge:n?.get(e)??null})).sort(d):[]},"score",0,l,"score1",0,i,"separationPeople",0,function(e=[],t=[]){let n=new Map;for(let e of t||[])n.set(e.id,e);let o=new Map,l=new Map;for(let t of e||[]){let e=a(t);l.set(t.id,e);let n=o.get(e);n?function(e,t){let n=i(e)-i(t);if(n)return n>0;let o=!!r(e.profile_image_url);return!!r(t.profile_image_url)!==o?o:0>s(e.id,t.id)}(t,n.person)&&(n.person=t):(n={key:e,person:t,rowIds:[],routeIds:new Set},o.set(e,n)),n.rowIds.push(t.id),n.routeIds.add(t.source_connection_id??null)}let u={people:o.size,byTier:{S:0,A:0,B:0,C:0,D:0},multi:0,bridges:0,unresolvedIds:0,peopleOnlyUnresolved:0,onlyUnresolvedVia:0},c=new Set,p=new Set,g=new Set,m=[];for(let e of o.values()){let t=[...e.routeIds].map(e=>({id:e,bridge:n.get(e)??null}));t.sort(d);let r=t.filter(e=>e.bridge);for(let e of t)(e.bridge?c:p).add(e.id);if(!r.length)for(let e of(u.peopleOnlyUnresolved++,t))g.add(e.id);let{person:o}=e,l=o.tier;void 0!==u.byTier[l]&&u.byTier[l]++,t.length>1&&u.multi++,m.push({key:e.key,person:o,score:i(o),tier:l,routes:t,waysIn:t.length,rowIds:e.rowIds,haystack:[o.name,o.headline,o.company,o.role,...r.map(e=>e.bridge.name)].filter(Boolean).join("\n").toLowerCase(),rank:0,tied:!1})}return u.bridges=c.size,u.unresolvedIds=p.size,u.onlyUnresolvedVia=g.size,m.sort(f),function(e){for(let t=0;t<e.length;t++){let n=e[t],r=e[t-1],o=r&&r.score===n.score&&r.waysIn===n.waysIn;n.rank=o?r.rank:t+1,o&&(n.tied=!0,r.tied=!0)}}(m),{people:m,rowToKey:l,summary:u}},"shortName",0,p,"summitLayout",0,function(e=[],t=800,n=!1,{cards:r=!1}={}){let o=r?50:n?36:26,l=Math.round(.42*t),i=Math.round(.58*t),a=e.map((e,n)=>{var l;return{key:e.key,p:e,x:i,y:16+n*o,r:r?0:(l=e.waysIn)>=4?8.5:3===l?7:2===l?5.5:4,label:g(`#${e.rank}${e.tied?"=":""} ${e.person.name||""}`,Math.floor((t-i-60)/6.2))}}),s=new Map,d="\0unresolved";for(let e of a)for(let t of e.p.routes){let n=t.bridge?t.id:d,r=s.get(n);r||(r={id:t.bridge?t.id:null,bridge:t.bridge,unresolved:!t.bridge,ys:[],count:0},s.set(n,r)),r.count++,r.ys.push(e.y)}let f=[...s.values()].map(e=>({...e,bary:e.ys.reduce((e,t)=>e+t,0)/e.ys.length}));f.sort((e,t)=>e.bary-t.bary||e.unresolved-t.unresolved||(e.bridge&&t.bridge?u(e.bridge,t.bridge):0));let c=a.length?a[a.length-1].y:16,m=function(e=[],t=18,n=0){let r=[];e.forEach((e,n)=>{for(r.push({sum:e-n*t,count:1});r.length>1&&r[r.length-2].sum/r[r.length-2].count>r[r.length-1].sum/r[r.length-1].count;){let e=r.pop();r[r.length-1].sum+=e.sum,r[r.length-1].count+=e.count}});let o=r.flatMap(e=>Array(e.count).fill(e.sum/e.count)).map((e,n)=>e+n*t),l=o.length&&o[0]<n?n-o[0]:0;return o.map(e=>e+l)}(f.map(e=>e.bary),r?36:18,16),h=Math.max(4,Math.floor((l-10-42)/6));f.forEach((e,t)=>{if(e.x=l,e.y=m[t],e.r=5,e.unresolved)e.label=g(`can't be named (${e.count})`,h);else{let t=e.bridge.name||"";e.label=t.length<=h?t:g(p(t),h)}delete e.ys});let y=new Map(f.map(e=>[e.unresolved?d:e.id,e]));for(let e of f)e.onlyFor=0,e.bestFor=0;for(let e of a){let t=e.p.routes[0],n=t?y.get(t.bridge?t.id:d):null;n&&n.bestFor++,1===e.p.waysIn&&n&&n.onlyFor++}let b=[];for(let e of a){let t=new Set;e.p.routes.forEach((n,r)=>{let o=n.bridge?n.id:d;if(t.has(o))return;t.add(o);let l=y.get(o);b.push({key:e.key,bridgeId:l.id,primary:0===r&&!l.unresolved,unresolved:l.unresolved,tier:l.bridge?.tier??null,x1:l.x,y1:l.y,x2:e.x,y2:e.y})})}let w=Math.max(c,f.length?f[f.length-1].y:0),k=a.length?Math.ceil(w+16):0,S={x:20,y:a.length?(16+Math.max(c,w))/2:16,r:14},x=f.map(e=>({id:e.id,x1:S.x,y1:S.y,x2:e.x,y2:e.y}));return{width:t,height:k,you:S,people:a,bridges:f,links:b,spokes:x}}],7214)},5258,e=>{"use strict";e.s(["TIER_COLORS_CLASSIC",0,{S:"#FFD700",A:"#9B59B6",B:"#3498DB",C:"#95A5A6",D:"#BDC3C7"},"TIER_ORDER",0,["S","A","B","C","D"],"initialsFor",0,function(e){let t=String(e||"").trim().split(/\s+/).filter(Boolean);return 0===t.length?"?":(t[0].charAt(0)+(t.length>1?t[t.length-1].charAt(0):"")).toUpperCase()}])}]);
|