1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[637],{91395:function(e,n,a){(window.__NEXT_P=window.__NEXT_P||[]).push(["/data-cleaning",function(){return a(25712)}])},54119:function(e,n,a){"use strict";a.d(n,{Z:function(){return E}});var t=a(85893),i=a(67294),s=a(98396),r=a(87357),o=a(65582),g=a(51233),m=a(15861),l=a(41796);function p(e){let{title:n,leftNavAction:a}=e;return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(r.Z,{component:"header",sx:{backdropFilter:"blur(6px)",backgroundColor:e=>(0,l.Fq)(e.palette.background.default,.8),position:"fixed",left:{lg:"".concat(280,"px")},top:0,width:{xs:"100%",lg:"calc(100% - ".concat(280,"px)")},zIndex:e=>e.zIndex.appBar},children:(0,t.jsx)(o.Z,{children:(0,t.jsxs)(g.Z,{alignItems:"center",direction:"row",justifyContent:"flex-start",spacing:2,sx:{minHeight:64},children:[a,n&&(0,t.jsx)(m.Z,{variant:"h6",children:n})]})})})})}var c=a(9008),u=a.n(c);function d(){return(0,t.jsxs)(u(),{children:[(0,t.jsx)("title",{children:"Steam Insight"}),(0,t.jsx)("meta",{name:"description",content:"Generated by create next app"}),(0,t.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),(0,t.jsx)("link",{rel:"icon",href:"/favicon.ico"})]})}var _=a(41664),h=a.n(_),y=a(11163),f=a(77533),x=a(83321),I=a(93946),j=a(53219),v=a(44149),C=a(77488),b=a(80607),D=a(64537),k=a(2525);let w=[{id:"data-insight",title:"Data Insight",icon:(0,t.jsx)(j.Z,{children:(0,t.jsx)(C,{})}),href:"/"},{id:"background",title:"Background",icon:(0,t.jsx)(j.Z,{children:(0,t.jsx)(b,{})}),href:"/background"},{id:"data-cleaning",title:"Data Cleaning",icon:(0,t.jsx)(j.Z,{children:(0,t.jsx)(D,{})}),href:"/data-cleaning"},{id:"comphrehensive",title:"Comprehensive",icon:(0,t.jsx)(j.Z,{children:(0,t.jsx)(k,{})}),href:"/comprehensive"}];function T(e){let{open:n,onClose:a}=e,i=(0,s.Z)(e=>e.breakpoints.up("lg"));return(0,t.jsx)(t.Fragment,{children:(0,t.jsx)(f.ZP,{anchor:"left",onClose:a,open:n,PaperProps:{sx:{backgroundColor:"neutral.800",color:"common.white",width:280}},sx:{zIndex:e=>e.zIndex.appBar+100},variant:i?"permanent":"temporary",children:(0,t.jsx)(S,{})})})}function S(){return(0,t.jsxs)(r.Z,{children:[(0,t.jsx)(r.Z,{sx:{height:"".concat(64,"px"),display:"flex",alignItems:"center",justifyContent:"flex-start",px:2},children:(0,t.jsx)(m.Z,{variant:"h6",children:"Steam Insight"})}),(0,t.jsx)(B,{})]})}function N(e){let{active:n,href:a,icon:i,disabled:s,title:o}=e;return(0,t.jsx)(r.Z,{component:"li",children:(0,t.jsxs)(x.Z,{component:h(),href:a,sx:{alignItems:"center",borderRadius:1,display:"flex",justifyContent:"flex-start",pl:"16px",pr:"16px",py:"6px",textAlign:"left",width:"100%",...n&&{backgroundColor:"rgba(255, 255, 255, 0.04)"},"&:hover":{backgroundColor:"rgba(255, 255, 255, 0.04)"}},variant:"text",disabled:s,children:[i&&(0,t.jsx)(r.Z,{component:"span",sx:{alignItems:"center",color:"neutral.400",display:"inline-flex",justifyContent:"center",mr:2,...n&&{color:"primary.main"}},children:i}),(0,t.jsx)(r.Z,{component:"span",sx:{color:"neutral.400",flexGrow:1,fontFamily:e=>e.typography.fontFamily,fontSize:14,fontWeight:600,lineHeight:"24px",whiteSpace:"nowrap",...n&&{color:"common.white"},...s&&{color:"neutral.500"}},children:o})]})})}function B(){let{pathname:e}=(0,y.useRouter)();return(0,t.jsx)(g.Z,{component:"ul",spacing:.5,sx:{listStyle:"none",p:0,m:0},children:w.map(n=>(0,t.jsx)(N,{title:n.title,href:n.href,icon:n.icon,active:e===n.href,disabled:n.disabled},n.title))})}function M(e){let{onClick:n}=e;return(0,t.jsx)(I.Z,{onClick:n,children:(0,t.jsx)(j.Z,{fontSize:"small",children:(0,t.jsx)(v.Z,{})})})}function q(e){let{children:n}=e;return(0,t.jsx)(r.Z,{component:"div",className:"markdown-body",id:"markdown-body",children:n})}function E(e){let{headerProps:n,markdown:a}=e,[g,m]=i.useState(!1),l=(0,s.Z)(e=>e.breakpoints.up("lg")),c=()=>{m(!1)},u=()=>{m(!0)},_=i.useCallback(()=>l?null:(0,t.jsx)(M,{onClick:u}),[l]);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(p,{...n,leftNavAction:(0,t.jsx)(_,{})}),(0,t.jsx)(d,{}),(0,t.jsx)(T,{open:g,onClose:c}),(0,t.jsx)(r.Z,{sx:{backgroundColor:e=>e.palette.background.default,paddingTop:"".concat(64,"px"),paddingBottom:"".concat(64,"px"),ml:{lg:"".concat(280,"px")},width:{lg:"calc(100% - ".concat(280,"px)")}},children:(0,t.jsx)(o.Z,{sx:{minHeight:"calc(100vh - ".concat(128,"px)")},children:a?(0,t.jsx)(q,{children:e.children}):(0,t.jsx)(t.Fragment,{children:e.children})})})]})}a(78510)},25712:function(e,n,a){"use strict";a.r(n);var t=a(85893),i=a(11151),s=a(54119);let r=e=>{let{children:n}=e;return(0,t.jsx)(s.Z,{headerProps:{title:"Data Cleaning"},markdown:!0,children:n})};function o(e){let n=Object.assign({h2:"h2",pre:"pre",code:"code",p:"p"},(0,i.ah)(),e.components);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h2,{children:"[Main Table] [Entity] games"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"from sqlalchemy import create_engine, String, Column, Integer, \\\n DateTime, Numeric, TEXT, Boolean, BigInteger, select, func\nfrom sqlalchemy.orm import declarative_base, sessionmaker\nimport os\nimport json\nimport time\nfrom datetime import datetime\n\nengine = create_engine('mysql://root:@127.0.0.1:4000/test')\nBase = declarative_base()\n\nclass Games(Base):\n __tablename__ = \"games\"\n\n app_id = Column(Integer, primary_key=True)\n name = Column(String(256))\n release_date = Column(DateTime)\n estimated_owners = Column(String(256))\n peak_ccu = Column(Integer)\n required_age = Column(Integer)\n price = Column(Numeric)\n dlc_count = Column(Integer)\n short_description = Column(TEXT)\n supported_languages = Column(String(4096))\n full_audio_languages = Column(String(4096))\n reviews = Column(TEXT)\n header_image = Column(String(1024))\n website = Column(String(1024))\n support_url = Column(String(1024))\n support_email = Column(String(1024))\n windows = Column(Boolean)\n mac = Column(Boolean)\n linux = Column(Boolean)\n metacritic_score = Column(Integer)\n metacritic_url = Column(String(1024))\n user_score = Column(Integer)\n positive = Column(Integer)\n negative = Column(Integer)\n score_rank = Column(BigInteger)\n achievements = Column(Integer)\n recommendations = Column(Integer)\n notes = Column(TEXT)\n average_playtime_forever = Column(Integer)\n average_playtime_two_weeks = Column(Integer)\n median_playtime_forever = Column(Integer)\n median_playtime_two_weeks = Column(Integer)\n developers = Column(String(1024))\n publishers = Column(String(1024))\n categories = Column(String(1024))\n genres = Column(String(1024))\n tags = Column(String(1024))\n screenshots = Column(TEXT)\n movies = Column(TEXT)\n\nBase.metadata.create_all(engine)\nSession = sessionmaker(bind=engine)\nwith Session() as session:\n dataset = {}\n if os.path.exists('games.json'):\n with open('games.json', 'r', encoding='utf-8') as fin:\n text = fin.read()\n if len(text) > 0:\n dataset = json.loads(text)\n\n for app in dataset:\n appID = app # AppID, unique identifier for each app (string).\n game = dataset[app]\n\n name = game['name'] # Game name (string).\n try:\n releaseDateTime = time.strptime(game['release_date'], '%b %d, %Y')\n except ValueError:\n try:\n releaseDateTime = time.strptime(game['release_date'], '%b %Y')\n except ValueError:\n releaseDateTime = time.strptime(game['release_date'], '%Y-%m-%d')\n\n releaseDate = f'{releaseDateTime.tm_year}-{releaseDateTime.tm_mon}-{releaseDateTime.tm_mday}'\n estimatedOwners = game['estimated_owners'] # Estimated owners (string, e.g.: \"0 - 20000\").\n peakCCU = game['peak_ccu'] # Number of concurrent users, yesterday (int).\n required_age = game['required_age'] # Age required to play, 0 if it is for all audiences (int).\n price = game['price'] # Price in USD, 0.0 if its free (float).\n dlcCount = game['dlc_count'] # Number of DLCs, 0 if you have none (int).\n shortDesc = game['short_description'] # Brief description of the game,\n languages = json.dumps(game['supp
1orted_languages']) # Comma-separated enumeration of supporting languages.\n fullAudioLanguages = json.dumps(game['full_audio_languages'])\n reviews = game['reviews']\n headerImage = game['header_image'] # Header image URL in the store (string).\n website = game['website'] # Game website (string).\n supportWeb = game['support_url'] # Game support URL (string).\n supportEmail = game['support_email'] # Game support email (string).\n supportWindows = game['windows'] # Does it support Windows? (bool).\n supportMac = game['mac'] # Does it support Mac? (bool).\n supportLinux = game['linux'] # Does it support Linux? (bool).\n metacriticScore = game['metacritic_score'] # Metacritic score, 0 if it has none (int).\n metacriticURL = game['metacritic_url'] # Metacritic review URL (string).\n userScore = game['user_score'] # Users score, 0 if it has none (int).\n positive = game['positive'] # Positive votes (int).\n negative = game['negative'] # Negative votes (int).\n scoreRank = None\n if game['score_rank'] != \"\": scoreRank = game['score_rank']\n achievements = game['achievements'] # Number of achievements, 0 if it has none (int).\n recommens = game['recommendations'] # User recommendations, 0 if it has none (int).\n notes = game['notes'] # Extra information about the game content (string).\n averagePlaytime = game['average_playtime_forever'] # Average playtime since March 2009, in minutes (int).\n averageplaytime2W = game['average_playtime_2weeks'] # Average playtime in the last two weeks, in minutes (int).\n medianPlaytime = game['median_playtime_forever'] # Median playtime since March 2009, in minutes (int).\n medianPlaytime2W = game['median_playtime_2weeks'] # Median playtime in the last two weeks, in minutes (int).\n developers = json.dumps(game['developers'])\n publishers = json.dumps(game['publishers'])\n categories = json.dumps(game['categories'])\n genres = json.dumps(game['genres'])\n screenshots = json.dumps(game['screenshots'])\n movies = json.dumps(game['movies'])\n tags = json.dumps(game['tags'])\n\n session.add(Games(\n app_id=appID,\n name=name,\n release_date=releaseDate,\n estimated_owners=estimatedOwners,\n peak_ccu=peakCCU,\n required_age=required_age,\n price=price,\n dlc_count=dlcCount,\n short_description=shortDesc,\n supported_languages=languages,\n full_audio_languages=fullAudioLanguages,\n reviews=reviews,\n header_image=headerImage,\n website=website,\n support_url=supportWeb,\n support_email=supportEmail,\n windows=supportWindows,\n mac=supportMac,\n linux=supportLinux,\n metacritic_score=metacriticScore,\n metacritic_url=metacriticURL,\n user_score=userScore,\n positive=positive,\n negative=negative,\n score_rank=scoreRank,\n achievements=achievements,\n recommendations=recommens,\n notes=notes,\n average_playtime_forever=averagePlaytime,\n average_playtime_two_weeks=averageplaytime2W,\n median_playtime_forever=medianPlaytime,\n median_playtime_two_weeks=medianPlaytime2W,\n developers=developers,\n publishers=publishers,\n categories=categories,\n genres=genres,\n screenshots=screenshots,\n movies=movies,\n tags=tags\n ))\n\n session.commit()\n"})}),"\n",(0,t.jsx)(n.h2,{children:"[Entity] company / [Relation] developer / [Relation] publisher"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"from sqlalchemy import create_engine, String, Column, Integer, \\\n DateTime, Numeric, TEXT, Boolean, BigInteger, select, func\nfrom sqlalchemy.orm import declarative_base, sessionmaker\nimport os\nimport json\n\nengine = create_engine('mysql://root:@127.0.0.1:4000/test')\nBase = declarative_base()\n\nclass Company(Base):\n __tablename__ = \"company\"\n\n company_id = Column(Integer, primary_key=True)\n company_name = Column(String(256))\n\nclass Developer(Base):\n __tablename__ = \"developer\"\n\n app_id = Column(Integer, primary_key=True)\n company_id = Column(Integer, primary_key=True)\n\nclass Publisher(Base):\n __tablename__ = \"publisher\"\n\n app_id = Column(Integer, primary_key=True)\n company_id = Column(Integer, primary_key=True)\n\nBase.metadata.create_all(engine)\nSession = sessionmaker(bind=engine)\n\ndef add_company_and_return_id(session, company_map, company_name):\n if company_map.get(company_name) is None:\n company_id = session.query(func.max(Company.company_id)).scalar()\n if company_id is None:\n company_id = 0\n company_id += 1\n company = Company(company_id=company_id, company_name=company_name)\n company_map[company_name] = company_id\n session.add(company)\n session.commit()\n return company_map.get(company_name)\n\nwith Session() as session:\n dataset = {}\n if os.path.exists('games.json'):\n with open('games.json', 'r', encoding='utf-8') as fin:\n text = fin.read()\n if len(text) > 0:\n dataset = json.loads(text)\n index = 0\n companyMap = {}\n\n for app in dataset:\n appID = app\n game = dataset[app]\n developers = game['developers']\n publishers = game['publishers']\n\n if developers is not None:\n devSet = {}\n for developer in developers:\n company_id = add_company_and_return_id(session, companyMap, developer)\n if devSet.get(f\"{appID}/{company_id}\") is not None:\n continue\n developer = Developer(app_id=appID, company_id=company_id)\n session.add(developer)\n devSet[f\"{developer.app_id}/{developer.company_id}\"] = True\n\n if publishers is not None:\n pubSet = {}\n for publisher in publishers:\n company_id = add_company_and_return_id(session, companyMap, publisher)\n if pubSet.get(f\"{appID}/{company_id}\") is not None:\n continue\n publisher = Publisher(app_id=appID, company_id=company_id)\n session.add(publisher)\n pubSet[f\"{publisher.app_id}/{publisher.company_id}\"] = True\n\n session.commit()\n index += 1\n if index % 100 == 0:\n print(f'[{index}/68223] {game[\"name\"]}')\n\n"})}),"\n",(0,t.jsx)(n.h2,{children:"[Entity] language / [Relation] supported_language / [Relation] all_audio_language"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"from sqlalchemy import create_engine, String, Column, Integer, \\\n DateTime, Numeric, TEXT, Boolean, BigInteger, select, func\nfrom sqlalchemy.orm import declarative_base, sessionmaker\nimport os\nimport json\n\nengine = create_engine('mysql://root:@127.0.0.1:4000/test')\nBase = declarative_base()\n\nclass Language(Base):\n __tablename__ = \"language\"\n\n language_id = Column(Integer, primary_key=True)\n language_name = Column(String(256))\n\nclass SupportedLanguage(Base):\n __tablename__ = \"supported_language\"\n\n app_id = Column(Integer, primary_key=True)\n language_id = Column(Integer, primary_key=True)\n\nclass AllAudioLanguage(Base):\n __tablename__ = \"all_audio_language\"\n\n app_id = Column(Integer, primary_key=True)\n language_id = Column(Integer, primary_key=True)\n\nBase.metadata.create_all(engine)\nSession = sessionmaker(bind=engine)\n\nwith Session() as session:\n dataset = {}\n if os.path.exists('games.json'):\n with open('games.json', 'r', encoding='utf-8') as fin:\n text = fin.read()\n if len(text) > 0:\n dataset = json.loads(text)\n\n index = 0\n languageMap = {}\n\n for app in dataset:\n appID = app\n game = dataset[app]\n languages = game['supp
1orted_languages']\n fullAudioLanguages = game['full_audio_languages']\n\n if languages is not None:\n for language in languages:\n languageName = language\n if languageMap.get(languageName) is None:\n languageID = session.query(func.max(Language.language_id)).scalar()\n if languageID is None:\n languageID = 0\n languageID += 1\n language = Language(language_id=languageID, language_name=languageName)\n session.add(language)\n languageMap[languageName] = languageID\n\n supportedLanguage = SupportedLanguage(app_id=appID, language_id=languageMap.get(languageName))\n session.add(supportedLanguage)\n\n if fullAudioLanguages is not None:\n for language in fullAudioLanguages:\n languageName = language\n if languageMap.get(languageName) is None:\n languageID = session.query(func.max(Language.language_id)).scalar()\n if languageID is None:\n languageID = 0\n languageID += 1\n language = Language(language_id=languageID, language_name=languageName)\n session.add(language)\n languageMap[languageName] = languageID\n\n allAudioLanguage = AllAudioLanguage(app_id=appID, language_id=languageMap.get(languageName))\n session.add(allAudioLanguage)\n\n session.commit()\n index += 1\n print(f'[{index}/68223] {game[\"name\"]}')\n\n"})}),"\n",(0,t.jsx)(n.h2,{children:"[Entity] category / [Relation] game_category"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"from sqlalchemy import create_engine, String, Column, Integer, \\\n DateTime, Numeric, TEXT, Boolean, BigInteger, select, func\nfrom sqlalchemy.orm import declarative_base, sessionmaker\nimport os\nimport json\n\nengine = create_engine('mysql://root:@127.0.0.1:4000/test')\nBase = declarative_base()\n\nclass Category(Base):\n __tablename__ = \"category\"\n\n category_id = Column(Integer, primary_key=True)\n category_name = Column(String(256))\n\nclass GameCategory(Base):\n __tablename__ = \"game_category\"\n\n app_id = Column(Integer, primary_key=True)\n category_id = Column(Integer, primary_key=True)\n\nBase.metadata.create_all(engine)\nSession = sessionmaker(bind=engine)\n\nwith Session() as session:\n dataset = {}\n if os.path.exists('games.json'):\n with open('games.json', 'r', encoding='utf-8') as fin:\n text = fin.read()\n if len(text) > 0:\n dataset = json.loads(text)\n index = 0\n categoryMap = {}\n\n for app in dataset:\n appID = app\n game = dataset[app]\n categories = game['categories']\n catSet = {}\n\n for category in categories:\n categoryID = categoryMap.get(category)\n if categoryID is None:\n categoryID = len(categoryMap) + 1\n categoryMap[category] = categoryID\n session.add(Category(category_id=categoryID, category_name=category))\n if catSet.get(f\"{appID}/{categoryID}\") is not None:\n continue\n\n session.add(GameCategory(app_id=appID, category_id=categoryID))\n catSet[f\"{appID}/{categoryID}\"] = True\n\n session.commit()\n\n index += 1\n if index % 100 == 0:\n print(f'[{index}/68223]')\n"})}),"\n",(0,t.jsx)(n.h2,{children:"[Entity] genre / [Relation] game_genre"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"from sqlalchemy import create_engine, String, Column, Integer, \\\n DateTime, Numeric, TEXT, Boolean, BigInteger, select, func\nfrom sqlalchemy.orm import declarative_base, sessionmaker\nimport os\nimport json\n\nengine = create_engine('mysql://root:@127.0.0.1:4000/test')\nBase = declarative_base()\n\nclass Genre(Base):\n __tablename__ = \"genre\"\n\n genre_id = Column(Integer, primary_key=True)\n genre_name = Column(String(256))\n\nclass GameGenre(Base):\n __tablename__ = \"game_genre\"\n\n app_id = Column(Integer, primary_key=True)\n genre_id = Column(Integer, primary_key=True)\n\nBase.metadata.create_all(engine)\nSession = sessionmaker(bind=engine)\n\nwith Session() as session:\n dataset = {}\n if os.path.exists('games.json'):\n with open('games.json', 'r', encoding='utf-8') as fin:\n text = fin.read()\n if len(text) > 0:\n dataset = json.loads(text)\n index = 0\n genreMap = {}\n\n for app in dataset:\n appID = app\n game = dataset[app]\n genres = game['genres']\n for genre in genres:\n genreID = genreMap.get(genre)\n if genreID is None:\n genreID = len(genreMap) + 1\n genreMap[genre] = genreID\n session.add(Genre(genre_id=genreID, genre_name=genre))\n session.add(GameGenre(app_id=appID, genre_id=genreID))\n session.commit()\n\n index += 1\n if index % 100 == 0:\n print(f'[{index}/68223]')\n\n"})}),"\n",(0,t.jsx)(n.h2,{children:"[Entity] tag / [Relation] game_tag"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-python",children:"from sqlalchemy import create_engine, String, Column, Integer, \\\n DateTime, Numeric, TEXT, Boolean, BigInteger, select, func\nfrom sqlalchemy.orm import declarative_base, sessionmaker\nimport os\nimport json\n\nengine = create_engine('mysql://root:@127.0.0.1:4000/test')\nBase = declarative_base()\n\nclass Tag(Base):\n __tablename__ = \"tag\"\n\n tag_id = Column(Integer, primary_key=True)\n tag_name = Column(String(256))\n\nclass GameTag(Base):\n __tablename__ = \"game_tag\"\n\n app_id = Column(Integer, primary_key=True)\n tag_id = Column(Integer, primary_key=True)\n agree_num = Column(Integer)\n\nBase.metadata.create_all(engine)\nSession = sessionmaker(bind=engine)\n\nwith Session() as session:\n dataset = {}\n if os.path.exists('games.json'):\n with open('games.json', 'r', encoding='utf-8') as fin:\n text = fin.read()\n if len(text) > 0:\n dataset = json.loads(text)\n index = 0\n tagMap = {}\n\n for app in dataset:\n appID = app\n game = dataset[app]\n tags = game['tags']\n\n for tag in tags:\n tagID = tagMap.get(tag)\n if tagID is None:\n tagID = len(tagMap) + 1\n tagMap[tag]
1= tagID\n session.add(Tag(tag_id=tagID, tag_name=tag))\n\n session.add(GameTag(app_id=appID, tag_id=tagID, agree_num=tags[tag]))\n\n session.commit()\n\n index += 1\n if index % 100 == 0:\n print(f'[{index}/68223]')\n"})}),"\n",(0,t.jsx)(n.h2,{children:"Remove the redundant columns from the main table"}),"\n",(0,t.jsx)(n.p,{children:"That's optional."})]})}n.default=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,t.jsx)(r,Object.assign({},e,{children:(0,t.jsx)(o,e)}))}},11151:function(e,n,a){"use strict";a.d(n,{ah:function(){return s}});var t=a(67294);let i=t.createContext({});function s(e){let n=t.useContext(i);return t.useMemo(()=>"function"==typeof e?e(n):{...n,...e},[n,e])}}},function(e){e.O(0,[159,774,888,179],function(){return e(e.s=91395)}),_N_E=e.O()}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.