overwatch-api-server
Version:
An Unoffical Overwatch HTTP API
15 lines • 59 kB
JavaScript
"use strict";function cov_1rkhlf6byj(){var path="C:\\Users\\Alf\\Source\\overwatch-api\\api\\src\\parser\\stats.js";var hash="1a2de1d08c367e5b355b50187a0144f64456543f";var global=new Function("return this")();var gcv="__coverage__";var coverageData={path:"C:\\Users\\Alf\\Source\\overwatch-api\\api\\src\\parser\\stats.js",statementMap:{"0":{start:{line:3,column:0},end:{line:5,column:3}},"1":{start:{line:6,column:0},end:{line:6,column:30}},"2":{start:{line:8,column:13},end:{line:8,column:53}},"3":{start:{line:10,column:15},end:{line:10,column:57}},"4":{start:{line:12,column:13},end:{line:12,column:31}},"5":{start:{line:14,column:39},end:{line:14,column:95}},"6":{start:{line:16,column:18},end:{line:16,column:19}},"7":{start:{line:19,column:12},end:{line:19,column:75}},"8":{start:{line:20,column:16},end:{line:23,column:3}},"9":{start:{line:24,column:2},end:{line:24,column:66}},"10":{start:{line:29,column:10},end:{line:29,column:51}},"11":{start:{line:32,column:16},end:{line:32,column:57}},"12":{start:{line:34,column:2},end:{line:36,column:3}},"13":{start:{line:35,column:4},end:{line:35,column:52}},"14":{start:{line:38,column:15},end:{line:43,column:3}},"15":{start:{line:44,column:14},end:{line:44,column:16}},"16":{start:{line:46,column:26},end:{line:64,column:3}},"17":{start:{line:66,column:2},end:{line:68,column:4}},"18":{start:{line:69,column:2},end:{line:80,column:5}},"19":{start:{line:70,column:23},end:{line:70,column:165}},"20":{start:{line:71,column:20},end:{line:71,column:22}},"21":{start:{line:72,column:4},end:{line:78,column:7}},"22":{start:{line:73,column:17},end:{line:73,column:19}},"23":{start:{line:74,column:6},end:{line:74,column:68}},"24":{start:{line:75,column:6},end:{line:75,column:72}},"25":{start:{line:76,column:6},end:{line:76,column:72}},"26":{start:{line:77,column:6},end:{line:77,column:27}},"27":{start:{line:79,column:4},end:{line:79,column:52}},"28":{start:{line:82,column:2},end:{line:82,column:42}},"29":{start:{line:83,column:2},end:{line:94,column:5}},"30":{start:{line:84,column:23},end:{line:84,column:169}},"31":{start:{line:85,column:20},end:{line:85,column:22}},"32":{start:{line:86,column:4},end:{line:92,column:7}},"33":{start:{line:87,column:17},end:{line:87,column:19}},"34":{start:{line:88,column:6},end:{line:88,column:68}},"35":{start:{line:89,column:6},end:{line:89,column:72}},"36":{start:{line:90,column:6},end:{line:90,column:72}},"37":{start:{line:91,column:6},end:{line:91,column:27}},"38":{start:{line:93,column:4},end:{line:93,column:54}},"39":{start:{line:98,column:23},end:{line:98,column:104}},"40":{start:{line:100,column:2},end:{line:114,column:5}},"41":{start:{line:101,column:14},end:{line:101,column:150}},"42":{start:{line:102,column:19},end:{line:102,column:21}},"43":{start:{line:103,column:4},end:{line:108,column:7}},"44":{start:{line:104,column:17},end:{line:104,column:19}},"45":{start:{line:105,column:6},end:{line:105,column:48}},"46":{start:{line:106,column:6},end:{line:106,column:49}},"47":{start:{line:107,column:6},end:{line:107,column:26}},"48":{start:{line:109,column:4},end:{line:109,column:48}},"49":{start:{line:110,column:4},end:{line:112,column:6}},"50":{start:{line:113,column:4},end:{line:113,column:40}},"51":{start:{line:116,column:2},end:{line:128,column:5}},"52":{start:{line:117,column:14},end:{line:117,column:152}},"53":{start:{line:118,column:19},end:{line:118,column:21}},"54":{start:{line:119,column:4},end:{line:124,column:7}},"55":{start:{line:120,column:17},end:{line:120,column:19}},"56":{start:{line:121,column:6},end:{line:121,column:48}},"57":{start:{line:122,column:6},end:{line:122,column:49}},"58":{start:{line:123,column:6},end:{line:123,column:26}},"59":{start:{line:125,column:4},end:{line:125,column:48}},"60":{start:{line:126,column:4},end:{line:126,column:36}},"61":{start:{line:127,column:4},end:{line:127,column:42}},"62":{start:{line:129,column:2},end:{line:132,column:5}},"63":{start:{line:137,column:18},end:{line:137,column:35}},"64":{start:{line:138,column:14},end:{line:138,column:29}},"65":{start:{line:139,column:15},end:{line:139,column:31}},"66":{start:{line:140,column:13},end:{line:146,column:3}},"67":{start:{line:147,column:2},end:{line:147,column:30}},"68":{start:{line:151,column:2},end:{line:161,column:5}},"69":{start:{line:156,column:4},end:{line:158,column:5}},"70":{start:{line:157,column:6},end:{line:157,column:27}},"71":{start:{line:160,column:4},end:{line:160,column:45}}},fnMap:{"0":{name:"_interopRequireDefault",decl:{start:{line:14,column:9},end:{line:14,column:31}},loc:{start:{line:14,column:37},end:{line:14,column:97}},line:14},"1":{name:"getHTML",decl:{start:{line:18,column:9},end:{line:18,column:16}},loc:{start:{line:18,column:50},end:{line:25,column:1}},line:18},"2":{name:"parseHTML",decl:{start:{line:28,column:9},end:{line:28,column:18}},loc:{start:{line:28,column:38},end:{line:133,column:1}},line:28},"3":{name:"(anonymous_3)",decl:{start:{line:69,column:51},end:{line:69,column:52}},loc:{start:{line:69,column:64},end:{line:80,column:3}},line:69},"4":{name:"(anonymous_4)",decl:{start:{line:72,column:22},end:{line:72,column:23}},loc:{start:{line:72,column:39},end:{line:78,column:5}},line:72},"5":{name:"(anonymous_5)",decl:{start:{line:83,column:53},end:{line:83,column:54}},loc:{start:{line:83,column:66},end:{line:94,column:3}},line:83},"6":{name:"(anonymous_6)",decl:{start:{line:86,column:22},end:{line:86,column:23}},loc:{start:{line:86,column:39},end:{line:92,column:5}},line:86},"7":{name:"(anonymous_7)",decl:{start:{line:100,column:25},end:{line:100,column:26}},loc:{start:{line:100,column:41},end:{line:114,column:3}},line:100},"8":{name:"(anonymous_8)",decl:{start:{line:103,column:13},end:{line:103,column:14}},loc:{start:{line:103,column:30},end:{line:108,column:5}},line:103},"9":{name:"(anonymous_9)",decl:{start:{line:116,column:25},end:{line:116,column:26}},loc:{start:{line:116,column:41},end:{line:128,column:3}},line:116},"10":{name:"(anonymous_10)",decl:{start:{line:119,column:13},end:{line:119,column:14}},loc:{start:{line:119,column:30},end:{line:124,column:5}},line:119},"11":{name:"transform",decl:{start:{line:136,column:9},end:{line:136,column:18}},loc:{start:{line:136,column:38},end:{line:148,column:1}},line:136},"12":{name:"_default",decl:{start:{line:150,column:9},end:{line:150,column:17}},loc:{start:{line:150,column:51},end:{line:162,column:1}},line:150},"13":{name:"(anonymous_13)",decl:{start:{line:155,column:5},end:{line:155,column:6}},loc:{start:{line:155,column:29},end:{line:161,column:3}},line:155}},branchMap:{"0":{loc:{start:{line:14,column:46},end:{line:14,column:94}},type:"cond-expr",locations:[{start:{line:14,column:70},end:{line:14,column:73}},{start:{line:14,column:76},end:{line:14,column:94}}],line:14},"1":{loc:{start:{line:14,column:46},end:{line:14,column:67}},type:"binary-expr",locations:[{start:{line:14,column:46},end:{line:14,column:49}},{start:{line:14,column:53},end:{line:14,column:67}}],line:14},"2":{loc:{start:{line:34,column:2},end:{line:36,column:3}},type:"if",locations:[{start:{line:34,column:2},end:{line:36,column:3}},{start:{line:34,column:2},end:{line:36,column:3}}],line:34},"3":{loc:{start:{line:156,column:4},end:{line:158,column:5}},type:"if",locations:[{start:{line:156,column:4},end:{line:158,column:5}},{start:{line:156,column:4},end:{line:158,column:5}}],line:156}},s:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0},f:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},b:{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0]},inputSourceMap:{version:3,sources:["stats.js"],names:["MAX_RETRIES","getHTML","platform","region","tag","callback","url","options","uri","encodeURI","encoding","parseHTML","results","$","cheerio","load","isFound","text","Error","parsed","user","portrait","attr","permission","endorsementImage","stats","topHeroCategories","quickplay","competitive","Object","keys","forEach","k","topHeroesEls","find","topHeroes","each","i","el","stat","hero","img","push","statCategories","item","els","closest","statsArr","title","value","replace","toLowerCase","transform","json","username","endorsement","async","auto","apply","err"],mappings:"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",sourceRoot:"C:\\Users\\Alf\\Source\\overwatch-api\\api\\src\\parser\\",sourcesContent:["import async from 'async';\nimport cheerio from 'cheerio';\nimport { retryRequest } from './utils';\n\nconst MAX_RETRIES = 3;\n\n// Get HTML from playoverwatch career page.\nfunction getHTML(platform, region, tag, callback) {\n const url = `https://overwatch.blizzard.com/en-us/career/${tag}/`\n\n const options = {\n uri: encodeURI(url),\n encoding: 'utf8'\n }\n return retryRequest(options, MAX_RETRIES, callback);\n}\n\n// Begin html parsing.\nfunction parseHTML(results, callback) {\n const $ = cheerio.load(results.getHTML);\n\n // Check if profile exists.\n const isFound = $('.heading').text() !== 'Page Not Found';\n if (!isFound) {\n return callback(new Error('Profile not found'));\n }\n\n const parsed = {\n user: $('.Profile-player--name').text(),\n portrait: $('.Profile-player--portrait').attr('src'),\n permission: $('.Profile-private---msg').text(),\n endorsementImage: $('.Profile-playerSummary--endorsement').attr('src'),\n }\n\n const stats = {};\n\n // Top Heroes.\n const topHeroCategories = {\n quickplay: {\n 'played': '0x0860000000000021',\n 'games_won': '0x0860000000000039',\n 'weapon_accuracy': '0x086000000000002F',\n 'eliminations_per_life': '0x08600000000003D2',\n 'multikill_best': '0x0860000000000346',\n 'objective_kills_average': '0x086000000000039C',\n },\n competitive: {\n 'played': '0x0860000000000021',\n 'games_won': '0x0860000000000039',\n 'win_rate': '0x08600000000003D1',\n 'weapon_accuracy': '0x086000000000002F',\n 'eliminations_per_life': '0x08600000000003D2',\n 'multikill_best': '0x0860000000000346',\n 'objective_kills_average': '0x086000000000039C',\n }\n };\n\n // Quickplay.\n stats['top_heroes'] = { quickplay: {} };\n Object.keys(topHeroCategories.quickplay).forEach((k) => {\n const topHeroesEls = $(`.Profile-heroSummary--view.quickPlay-view [data-category-id=\"${topHeroCategories.quickplay[k]}\"]`)\n .find('.Profile-progressBar');\n let topHeroes = [];\n topHeroesEls.each(function(i, el) {\n const stat = {};\n stat.hero = $(this).find('.Profile-progressBar-title').text();\n stat.img = $(this).find('.Profile-progressBar--icon').attr('src');\n stat[k] = $(this).find('.Profile-progressBar-description').text();\n topHeroes.push(stat);\n });\n stats['top_heroes']['quickplay'][k] = topHeroes;\n });\n\n // Competitive.\n stats['top_heroes']['competitive'] = {};\n Object.keys(topHeroCategories.competitive).forEach((k) => {\n const topHeroesEls = $(`.Profile-heroSummary--view.competitive-view [data-category-id=\"${topHeroCategories.competitive[k]}\"]`)\n .find('.Profile-progressBar');\n let topHeroes = [];\n topHeroesEls.each(function(i, el) {\n const stat = {};\n stat.hero = $(this).find('.Profile-progressBar-title').text();\n stat.img = $(this).find('.Profile-progressBar--icon').attr('src');\n stat[k] = $(this).find('.Profile-progressBar-description').text();\n topHeroes.push(stat);\n });\n stats['top_heroes']['competitive'][k] = topHeroes;\n });\n\n //\n // Career Stats\n //\n const statCategories = [\n 'Combat',\n 'Match Awards',\n 'Assists',\n 'Average',\n 'Miscellaneous',\n 'Best',\n 'Game'\n ];\n\n // Quickplay Stats.\n statCategories.forEach(function(item) {\n const els = $(`.stats.quickPlay-view .option-0 .category .content .header p:contains(\"${item}\")`).closest('.content').find('.stat-item');\n let statsArr = [];\n els.each(function(i, el) {\n let stat = {};\n stat.title = $(this).find('.name').text();\n stat.value = $(this).find('.value').text();\n statsArr.push(stat);\n });\n item = item.replace(' ', '_').toLowerCase();\n stats[item] = { quickplay: [] };\n stats[item]['quickplay'] = statsArr;\n });\n\n // Competitive Stats.\n statCategories.forEach(function(item) {\n const els = $(`.stats.competitive-view .option-0 .category .content .header p:contains(\"${item}\")`).closest('.content').find('.stat-item');\n let statsArr = [];\n els.each(function(i, el) {\n let stat = {};\n stat.title = $(this).find('.name').text();\n stat.value = $(this).find('.value').text();\n statsArr.push(stat);\n });\n item = item.replace(' ', '_').toLowerCase();\n stats[item]['competitive'] = [];\n stats[item]['competitive'] = statsArr;\n });\n\n return callback(null, { stats, parsed });\n}\n\n// Transform the data into a json object we can serve.\nfunction transform(results, callback) {\n const { parseHTML } = results;\n const { stats, parsed } = parseHTML;\n\n const json = {\n username: parsed.user,\n portrait: parsed.portrait,\n endorsement: parsed.endorsementImage,\n private: parsed.permission === 'Private Profile',\n stats: stats\n }\n\n return callback(null, json);\n}\n\nexport default function(platform, region, tag, callback) {\n async.auto({\n getHTML: async.apply(getHTML, platform, region, tag),\n parseHTML: ['getHTML', async.apply(parseHTML)],\n transform: ['getHTML', 'parseHTML', async.apply(transform)],\n }, function(err, results) {\n if (err) {\n return callback(err);\n }\n return callback(null, results.transform);\n });\n}"]},_coverageSchema:"1a1c01bbd47fc00a2c39e90264f33305004495a9",hash:"1a2de1d08c367e5b355b50187a0144f64456543f"};var coverage=global[gcv]||(global[gcv]={});if(!coverage[path]||coverage[path].hash!==hash){coverage[path]=coverageData;}var actualCoverage=coverage[path];{// @ts-ignore
cov_1rkhlf6byj=function(){return actualCoverage;};}return actualCoverage;}cov_1rkhlf6byj();cov_1rkhlf6byj().s[0]++;Object.defineProperty(exports,"__esModule",{value:true});cov_1rkhlf6byj().s[1]++;exports["default"]=_default;var _async=(cov_1rkhlf6byj().s[2]++,_interopRequireDefault(require("async")));var _cheerio=(cov_1rkhlf6byj().s[3]++,_interopRequireDefault(require("cheerio")));var _utils=(cov_1rkhlf6byj().s[4]++,require("./utils"));function _interopRequireDefault(obj){cov_1rkhlf6byj().f[0]++;cov_1rkhlf6byj().s[5]++;return(cov_1rkhlf6byj().b[1][0]++,obj)&&(cov_1rkhlf6byj().b[1][1]++,obj.__esModule)?(cov_1rkhlf6byj().b[0][0]++,obj):(cov_1rkhlf6byj().b[0][1]++,{"default":obj});}var MAX_RETRIES=(cov_1rkhlf6byj().s[6]++,3);// Get HTML from playoverwatch career page.
function getHTML(platform,region,tag,callback){cov_1rkhlf6byj().f[1]++;var url=(cov_1rkhlf6byj().s[7]++,"https://overwatch.blizzard.com/en-us/career/".concat(tag,"/"));var options=(cov_1rkhlf6byj().s[8]++,{uri:encodeURI(url),encoding:'utf8'});cov_1rkhlf6byj().s[9]++;return(0,_utils.retryRequest)(options,MAX_RETRIES,callback);}// Begin html parsing.
function parseHTML(results,callback){cov_1rkhlf6byj().f[2]++;var $=(cov_1rkhlf6byj().s[10]++,_cheerio["default"].load(results.getHTML));// Check if profile exists.
var isFound=(cov_1rkhlf6byj().s[11]++,$('.heading').text()!=='Page Not Found');cov_1rkhlf6byj().s[12]++;if(!isFound){cov_1rkhlf6byj().b[2][0]++;cov_1rkhlf6byj().s[13]++;return callback(new Error('Profile not found'));}else{cov_1rkhlf6byj().b[2][1]++;}var parsed=(cov_1rkhlf6byj().s[14]++,{user:$('.Profile-player--name').text(),portrait:$('.Profile-player--portrait').attr('src'),permission:$('.Profile-private---msg').text(),endorsementImage:$('.Profile-playerSummary--endorsement').attr('src')});var stats=(cov_1rkhlf6byj().s[15]++,{});// Top Heroes.
var topHeroCategories=(cov_1rkhlf6byj().s[16]++,{quickplay:{'played':'0x0860000000000021','games_won':'0x0860000000000039','weapon_accuracy':'0x086000000000002F','eliminations_per_life':'0x08600000000003D2','multikill_best':'0x0860000000000346','objective_kills_average':'0x086000000000039C'},competitive:{'played':'0x0860000000000021','games_won':'0x0860000000000039','win_rate':'0x08600000000003D1','weapon_accuracy':'0x086000000000002F','eliminations_per_life':'0x08600000000003D2','multikill_best':'0x0860000000000346','objective_kills_average':'0x086000000000039C'}});// Quickplay.
cov_1rkhlf6byj().s[17]++;stats['top_heroes']={quickplay:{}};cov_1rkhlf6byj().s[18]++;Object.keys(topHeroCategories.quickplay).forEach(function(k){cov_1rkhlf6byj().f[3]++;var topHeroesEls=(cov_1rkhlf6byj().s[19]++,$(".Profile-heroSummary--view.quickPlay-view [data-category-id=\"".concat(topHeroCategories.quickplay[k],"\"]")).find('.Profile-progressBar'));var topHeroes=(cov_1rkhlf6byj().s[20]++,[]);cov_1rkhlf6byj().s[21]++;topHeroesEls.each(function(i,el){cov_1rkhlf6byj().f[4]++;var stat=(cov_1rkhlf6byj().s[22]++,{});cov_1rkhlf6byj().s[23]++;stat.hero=$(this).find('.Profile-progressBar-title').text();cov_1rkhlf6byj().s[24]++;stat.img=$(this).find('.Profile-progressBar--icon').attr('src');cov_1rkhlf6byj().s[25]++;stat[k]=$(this).find('.Profile-progressBar-description').text();cov_1rkhlf6byj().s[26]++;topHeroes.push(stat);});cov_1rkhlf6byj().s[27]++;stats['top_heroes']['quickplay'][k]=topHeroes;});// Competitive.
cov_1rkhlf6byj().s[28]++;stats['top_heroes']['competitive']={};cov_1rkhlf6byj().s[29]++;Object.keys(topHeroCategories.competitive).forEach(function(k){cov_1rkhlf6byj().f[5]++;var topHeroesEls=(cov_1rkhlf6byj().s[30]++,$(".Profile-heroSummary--view.competitive-view [data-category-id=\"".concat(topHeroCategories.competitive[k],"\"]")).find('.Profile-progressBar'));var topHeroes=(cov_1rkhlf6byj().s[31]++,[]);cov_1rkhlf6byj().s[32]++;topHeroesEls.each(function(i,el){cov_1rkhlf6byj().f[6]++;var stat=(cov_1rkhlf6byj().s[33]++,{});cov_1rkhlf6byj().s[34]++;stat.hero=$(this).find('.Profile-progressBar-title').text();cov_1rkhlf6byj().s[35]++;stat.img=$(this).find('.Profile-progressBar--icon').attr('src');cov_1rkhlf6byj().s[36]++;stat[k]=$(this).find('.Profile-progressBar-description').text();cov_1rkhlf6byj().s[37]++;topHeroes.push(stat);});cov_1rkhlf6byj().s[38]++;stats['top_heroes']['competitive'][k]=topHeroes;});//
// Career Stats
//
var statCategories=(cov_1rkhlf6byj().s[39]++,['Combat','Match Awards','Assists','Average','Miscellaneous','Best','Game']);// Quickplay Stats.
cov_1rkhlf6byj().s[40]++;statCategories.forEach(function(item){cov_1rkhlf6byj().f[7]++;var els=(cov_1rkhlf6byj().s[41]++,$(".stats.quickPlay-view .option-0 .category .content .header p:contains(\"".concat(item,"\")")).closest('.content').find('.stat-item'));var statsArr=(cov_1rkhlf6byj().s[42]++,[]);cov_1rkhlf6byj().s[43]++;els.each(function(i,el){cov_1rkhlf6byj().f[8]++;var stat=(cov_1rkhlf6byj().s[44]++,{});cov_1rkhlf6byj().s[45]++;stat.title=$(this).find('.name').text();cov_1rkhlf6byj().s[46]++;stat.value=$(this).find('.value').text();cov_1rkhlf6byj().s[47]++;statsArr.push(stat);});cov_1rkhlf6byj().s[48]++;item=item.replace(' ','_').toLowerCase();cov_1rkhlf6byj().s[49]++;stats[item]={quickplay:[]};cov_1rkhlf6byj().s[50]++;stats[item]['quickplay']=statsArr;});// Competitive Stats.
cov_1rkhlf6byj().s[51]++;statCategories.forEach(function(item){cov_1rkhlf6byj().f[9]++;var els=(cov_1rkhlf6byj().s[52]++,$(".stats.competitive-view .option-0 .category .content .header p:contains(\"".concat(item,"\")")).closest('.content').find('.stat-item'));var statsArr=(cov_1rkhlf6byj().s[53]++,[]);cov_1rkhlf6byj().s[54]++;els.each(function(i,el){cov_1rkhlf6byj().f[10]++;var stat=(cov_1rkhlf6byj().s[55]++,{});cov_1rkhlf6byj().s[56]++;stat.title=$(this).find('.name').text();cov_1rkhlf6byj().s[57]++;stat.value=$(this).find('.value').text();cov_1rkhlf6byj().s[58]++;statsArr.push(stat);});cov_1rkhlf6byj().s[59]++;item=item.replace(' ','_').toLowerCase();cov_1rkhlf6byj().s[60]++;stats[item]['competitive']=[];cov_1rkhlf6byj().s[61]++;stats[item]['competitive']=statsArr;});cov_1rkhlf6byj().s[62]++;return callback(null,{stats:stats,parsed:parsed});}// Transform the data into a json object we can serve.
function transform(results,callback){cov_1rkhlf6byj().f[11]++;var parseHTML=(cov_1rkhlf6byj().s[63]++,results.parseHTML);var stats=(cov_1rkhlf6byj().s[64]++,parseHTML.stats),parsed=(cov_1rkhlf6byj().s[65]++,parseHTML.parsed);var json=(cov_1rkhlf6byj().s[66]++,{username:parsed.user,portrait:parsed.portrait,endorsement:parsed.endorsementImage,"private":parsed.permission==='Private Profile',stats:stats});cov_1rkhlf6byj().s[67]++;return callback(null,json);}function _default(platform,region,tag,callback){cov_1rkhlf6byj().f[12]++;cov_1rkhlf6byj().s[68]++;_async["default"].auto({getHTML:_async["default"].apply(getHTML,platform,region,tag),parseHTML:['getHTML',_async["default"].apply(parseHTML)],transform:['getHTML','parseHTML',_async["default"].apply(transform)]},function(err,results){cov_1rkhlf6byj().f[13]++;cov_1rkhlf6byj().s[69]++;if(err){cov_1rkhlf6byj().b[3][0]++;cov_1rkhlf6byj().s[70]++;return callback(err);}else{cov_1rkhlf6byj().b[3][1]++;}cov_1rkhlf6byj().s[71]++;return callback(null,results.transform);});}//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0YXRzLmpzIl0sIm5hbWVzIjpbIk1BWF9SRVRSSUVTIiwiZ2V0SFRNTCIsInBsYXRmb3JtIiwicmVnaW9uIiwidGFnIiwiY2FsbGJhY2siLCJ1cmwiLCJvcHRpb25zIiwidXJpIiwiZW5jb2RlVVJJIiwiZW5jb2RpbmciLCJwYXJzZUhUTUwiLCJyZXN1bHRzIiwiJCIsImNoZWVyaW8iLCJsb2FkIiwiaXNGb3VuZCIsInRleHQiLCJFcnJvciIsInBhcnNlZCIsInVzZXIiLCJwb3J0cmFpdCIsImF0dHIiLCJwZXJtaXNzaW9uIiwiZW5kb3JzZW1lbnRJbWFnZSIsInN0YXRzIiwidG9wSGVyb0NhdGVnb3JpZXMiLCJxdWlja3BsYXkiLCJjb21wZXRpdGl2ZSIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiayIsInRvcEhlcm9lc0VscyIsImZpbmQiLCJ0b3BIZXJvZXMiLCJlYWNoIiwiaSIsImVsIiwic3RhdCIsImhlcm8iLCJpbWciLCJwdXNoIiwic3RhdENhdGVnb3JpZXMiLCJpdGVtIiwiZWxzIiwiY2xvc2VzdCIsInN0YXRzQXJyIiwidGl0bGUiLCJ2YWx1ZSIsInJlcGxhY2UiLCJ0b0xvd2VyQ2FzZSIsInRyYW5zZm9ybSIsImpzb24iLCJ1c2VybmFtZSIsImVuZG9yc2VtZW50IiwiYXN5bmMiLCJhdXRvIiwiYXBwbHkiLCJlcnIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7OztBQUVBLElBQU1BLFdBQVcsR0FBRyxDQUFwQixDLENBRUE7O0FBQ0EsU0FBU0MsT0FBVCxDQUFpQkMsUUFBakIsRUFBMkJDLE1BQTNCLEVBQW1DQyxHQUFuQyxFQUF3Q0MsUUFBeEMsRUFBa0Q7QUFDaEQsTUFBTUMsR0FBRyx5REFBa0RGLEdBQWxELE1BQVQ7QUFFQSxNQUFNRyxPQUFPLEdBQUc7QUFDZEMsSUFBQUEsR0FBRyxFQUFFQyxTQUFTLENBQUNILEdBQUQsQ0FEQTtBQUVkSSxJQUFBQSxRQUFRLEVBQUU7QUFGSSxHQUFoQjtBQUlBLFNB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c2VyXFwiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXN5bmMgZnJvbSAnYXN5bmMnO1xuaW1wb3J0IGNoZWVyaW8gZnJvbSAnY2hlZXJpbyc7XG5pbXBvcnQgeyByZXRyeVJlcXVlc3QgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgTUFYX1JFVFJJRVMgPSAzO1xuXG4vLyBHZXQgSFRNTCBmcm9tIHBsYXlvdmVyd2F0Y2ggY2FyZWVyIHBhZ2UuXG5mdW5jdGlvbiBnZXRIVE1MKHBsYXRmb3JtLCByZWdpb24sIHRhZywgY2FsbGJhY2spIHtcbiAgY29uc3QgdXJsID0gYGh0dHBzOi8vb3ZlcndhdGNoLmJsaXp6YXJkLmNvbS9lbi11cy9jYXJlZXIvJHt0YWd9L2BcblxuICBjb25zdCBvcHRpb25zID0ge1xuICAgIHVyaTogZW5jb2RlVVJJKHVybCksXG4gICAgZW5jb2Rpbmc6ICd1dGY4J1xuICB9XG4gIHJldHVybiByZXRyeVJlcXVlc3Qob3B0aW9ucywgTUFYX1JFVFJJRVMsIGNhbGxiYWNrKTtcbn1cblxuLy8gQmVnaW4gaHRtbCBwYXJzaW5nLlxuZnVuY3Rpb24gcGFyc2VIVE1MKHJlc3VsdHMsIGNhbGxiYWNrKSB7XG4gIGNvbnN0ICQgPSBjaGVlcmlvLmxvYWQocmVzdWx0cy5nZXRIVE1MKTtcblxuICAvLyBDaGVjayBpZiBwcm9maWxlIGV4aXN0cy5cbiAgY29uc3QgaXNGb3VuZCA9ICQoJy5oZWFkaW5nJykudGV4dCgpICE9PSAnUGFnZSBOb3QgRm91bmQnO1xuICBpZiAoIWlzRm91bmQpIHtcbiAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdQcm9maWxlIG5vdCBmb3VuZCcpKTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZCA9IHtcbiAgICB1c2VyOiAkKCcuUHJvZmlsZS1wbGF5ZXItLW5hbWUnKS50ZXh0KCksXG4gICAgcG9ydHJhaXQ6ICQoJy5Qcm9maWxlLXBsYXllci0tcG9ydHJhaXQnKS5hdHRyKCdzcmMnKSxcbiAgICBwZXJtaXNzaW9uOiAkKCcuUHJvZmlsZS1wcml2YXRlLS0tbXNnJykudGV4dCgpLFxuICAgIGVuZG9yc2VtZW50SW1hZ2U6ICQoJy5Qcm9maWxlLXBsYXllclN1bW1hcnktLWVuZG9yc2VtZW50JykuYXR0cignc3JjJyksXG4gIH1cblxuICBjb25zdCBzdGF0cyA9IHt9O1xuXG4gIC8vIFRvcCBIZXJvZXMuXG4gIGNvbnN0IHRvcEhlcm9DYXRlZ29yaWVzID0ge1xuICAgIHF1aWNrcGxheToge1xuICAgICAgJ3BsYXllZCc6ICcweDA4NjAwMDAwMDAwMDAwMjEnLFxuICAgICAgJ2dhbWVzX3dvbic6ICcweDA4NjAwMDAwMDAwMDAwMzknLFxuICAgICAgJ3dlYXBvbl9hY2N1cmFjeSc6ICcweDA4NjAwMDAwMDAwMDAwMkYnLFxuICAgICAgJ2VsaW1pbmF0aW9uc19wZXJfbGlmZSc6ICcweDA4NjAwMDAwMDAwMDAzRDInLFxuICAgICAgJ211bHRpa2lsbF9iZXN0JzogJzB4MDg2MDAwMDAwMDAwMDM0NicsXG4gICAgICAnb2JqZWN0aXZlX2tpbGxzX2F2ZXJhZ2UnOiAnMHgwODYwMDAwMDAwMDAwMzlDJyxcbiAgICB9LFxuICAgIGNvbXBldGl0aXZlOiB7XG4gICAgICAncGxheWVkJzogJzB4MDg2MDAwMDAwMDAwMDAyMScsXG4gICAgICAnZ2FtZXNfd29uJzogJzB4MDg2MDAwMDAwMDAwMDAzOScsXG4gICAgICAnd2luX3JhdGUnOiAnMHgwODYwMDAwMDAwMDAwM0QxJyxcbiAgICAgICd3ZWFwb25fYWNjdXJhY3knOiAnMHgwODYwMDAwMDAwMDAwMDJGJyxcbiAgICAgICdlbGltaW5hdGlvbnNfcGVyX2xpZmUnOiAnMHgwODYwMDAwMDAwMDAwM0QyJyxcbiAgICAgICdtdWx0aWtpbGxfYmVzdCc6ICcweDA4NjAwMDAwMDAwMDAzNDYnLFxuICAgICAgJ29iamVjdGl2ZV9raWxsc19hdmVyYWdlJzogJzB4MDg2MDAwMDAwMDAwMDM5QycsXG4gICAgfVxuICB9O1xuXG4gIC8vIFF1aWNrcGxheS5cbiAgc3RhdHNbJ3RvcF9oZXJvZXMnXSA9IHsgcXVpY2twbGF5OiB7fSB9O1xuICBPYmplY3Qua2V5cyh0b3BIZXJvQ2F0ZWdvcmllcy5xdWlja3BsYXkpLmZvckVhY2goKGspID0+IHtcbiAgICBjb25zdCB0b3BIZXJvZXNFbHMgPSAkKGAuUHJvZmlsZS1oZXJvU3VtbWFyeS0tdmlldy5xdWlja1BsYXktdmlldyBbZGF0YS1jYXRlZ29yeS1pZD1cIiR7dG9wSGVyb0NhdGVnb3JpZXMucXVpY2twbGF5W2tdfVwiXWApXG4gICAgICAuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXInKTtcbiAgICBsZXQgdG9wSGVyb2VzID0gW107XG4gICAgdG9wSGVyb2VzRWxzLmVhY2goZnVuY3Rpb24oaSwgZWwpIHtcbiAgICAgIGNvbnN0IHN0YXQgPSB7fTtcbiAgICAgIHN0YXQuaGVybyA9ICQodGhpcykuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXItdGl0bGUnKS50ZXh0KCk7XG4gICAgICBzdGF0LmltZyA9ICQodGhpcykuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXItLWljb24nKS5hdHRyKCdzcmMnKTtcbiAgICAgIHN0YXRba10gPSAkKHRoaXMpLmZpbmQoJy5Qcm9maWxlLXByb2dyZXNzQmFyLWRlc2NyaXB0aW9uJykudGV4dCgpO1xuICAgICAgdG9wSGVyb2VzLnB1c2goc3RhdCk7XG4gICAgfSk7XG4gICAgc3RhdHNbJ3RvcF9oZXJvZXMnXVsncXVpY2twbGF5J11ba10gPSB0b3BIZXJvZXM7XG4gIH0pO1xuXG4gIC8vIENvbXBldGl0aXZlLlxuICBzdGF0c1sndG9wX2hlcm9lcyddWydjb21wZXRpdGl2ZSddID0ge307XG4gIE9iamVjdC5rZXlzKHRvcEhlcm9DYXRlZ29yaWVzLmNvbXBldGl0aXZlKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgY29uc3QgdG9wSGVyb2VzRWxzID0gJChgLlByb2ZpbGUtaGVyb1N1bW1hcnktLXZpZXcuY29tcGV0aXRpdmUtdmlldyBbZGF0YS1jYXRlZ29yeS1pZD1cIiR7dG9wSGVyb0NhdGVnb3JpZXMuY29tcGV0aXRpdmVba119XCJdYClcbiAgICAgIC5maW5kKCcuUHJvZmlsZS1wcm9ncmVzc0JhcicpO1xuICAgIGxldCB0b3BIZXJvZXMgPSBbXTtcbiAgICB0b3BIZXJvZXNFbHMuZWFjaChmdW5jdGlvbihpLCBlbCkge1xuICAgICAgY29uc3Qgc3RhdCA9IHt9O1xuICAgICAgc3RhdC5oZXJvID0gJCh0aGlzKS5maW5kKCcuUHJvZmlsZS1wcm9ncmVzc0Jhci10aXRsZScpLnRleHQoKTtcbiAgICAgIHN0YXQuaW1nID0gJCh0aGlzKS5maW5kKCcuUHJvZmlsZS1wcm9ncmVzc0Jhci0taWNvbicpLmF0dHIoJ3NyYycpO1xuICAgICAgc3RhdFtrXSA9ICQodGhpcykuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXItZGVzY3JpcHRpb24nKS50ZXh0KCk7XG4gICAgICB0b3BIZXJvZXMucHVzaChzdGF0KTtcbiAgICB9KTtcbiAgICBzdGF0c1sndG9wX2hlcm9lcyddWydjb21wZXRpdGl2ZSddW2tdID0gdG9wSGVyb2VzO1xuICB9KTtcblxuICAvL1xuICAvLyBDYXJlZXIgU3RhdHNcbiAgLy9cbiAgY29uc3Qgc3RhdENhdGVnb3JpZXMgPSBbXG4gICAgJ0NvbWJhdCcsXG4gICAgJ01hdGNoIEF3YXJkcycsXG4gICAgJ0Fzc2lzdHMnLFxuICAgICdBdmVyYWdlJyxcbiAgICAnTWlzY2VsbGFuZW91cycsXG4gICAgJ0Jlc3QnLFxuICAgICdHYW1lJ1xuICBdO1xuXG4gIC8vIFF1aWNrcGxheSBTdGF0cy5cbiAgc3RhdENhdGVnb3JpZXMuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgY29uc3QgZWxzID0gJChgLnN0YXRzLnF1aWNrUGxheS12aWV3IC5vcHRpb24tMCAuY2F0ZWdvcnkgLmNvbnRlbnQgLmhlYWRlciBwOmNvbnRhaW5zKFwiJHtpdGVtfVwiKWApLmNsb3Nlc3QoJy5jb250ZW50JykuZmluZCgnLnN0YXQtaXRlbScpO1xuICAgIGxldCBzdGF0c0FyciA9IFtdO1xuICAgIGVscy5lYWNoKGZ1bmN0aW9uKGksIGVsKSB7XG4gICAgICBsZXQgc3RhdCA9IHt9O1xuICAgICAgc3RhdC50aXRsZSA9ICQodGhpcykuZmluZCgnLm5hbWUnKS50ZXh0KCk7XG4gICAgICBzdGF0LnZhbHVlID0gJCh0aGlzKS5maW5kKCcudmFsdWUnKS50ZXh0KCk7XG4gICAgICBzdGF0c0Fyci5wdXNoKHN0YXQpO1xuICAgIH0pO1xuICAgIGl0ZW0gPSBpdGVtLnJlcGxhY2UoJyAnLCAnXycpLnRvTG93ZXJDYXNlKCk7XG4gICAgc3RhdHNbaXRlbV0gPSB7IHF1aWNrcGxheTogW10gfTtcbiAgICBzdGF0c1tpdGVtXVsncXVpY2twbGF5J10gPSBzdGF0c0FycjtcbiAgfSk7XG5cbiAgLy8gQ29tcGV0aXRpdmUgU3RhdHMuXG4gIHN0YXRDYXRlZ29yaWVzLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgIGNvbnN0IGVscyA9ICQoYC5zdGF0cy5jb21wZXRpdGl2ZS12aWV3IC5vcHRpb24tMCAuY2F0ZWdvcnkgLmNvbnRlbnQgLmhlYWRlciBwOmNvbnRhaW5zKFwiJHtpdGVtfVwiKWApLmNsb3Nlc3QoJy5jb250ZW50JykuZmluZCgnLnN0YXQtaXRlbScpO1xuICAgIGxldCBzdGF0c0FyciA9IFtdO1xuICAgIGVscy5lYWNoKGZ1bmN0aW9uKGksIGVsKSB7XG4gICAgICBsZXQgc3RhdCA9IHt9O1xuICAgICAgc3RhdC50aXRsZSA9ICQodGhpcykuZmluZCgnLm5hbWUnKS50ZXh0KCk7XG4gICAgICBzdGF0LnZhbHVlID0gJCh0aGlzKS5maW5kKCcudmFsdWUnKS50ZXh0KCk7XG4gICAgICBzdGF0c0Fyci5wdXNoKHN0YXQpO1xuICAgIH0pO1xuICAgIGl0ZW0gPSBpdGVtLnJlcGxhY2UoJyAnLCAnXycpLnRvTG93ZXJDYXNlKCk7XG4gICAgc3RhdHNbaXRlbV1bJ2NvbXBldGl0aXZlJ10gPSBbXTtcbiAgICBzdGF0c1tpdGVtXVsnY29tcGV0aXRpdmUnXSA9IHN0YXRzQXJyO1xuICB9KTtcblxuICByZXR1cm4gY2FsbGJhY2sobnVsbCwgeyBzdGF0cywgcGFyc2VkIH0pO1xufVxuXG4vLyBUcmFuc2Zvcm0gdGhlIGRhdGEgaW50byBhIGpzb24gb2JqZWN0IHdlIGNhbiBzZXJ2ZS5cbmZ1bmN0aW9uIHRyYW5zZm9ybShyZXN1bHRzLCBjYWxsYmFjaykge1xuICBjb25zdCB7IHBhcnNlSFRNTCB9ID0gcmVzdWx0cztcbiAgY29uc3QgeyBzdGF0cywgcGFyc2VkIH0gPSBwYXJzZUhUTUw7XG5cbiAgY29uc3QganNvbiA9IHtcbiAgICB1c2VybmFtZTogcGFyc2VkLnVzZXIsXG4gICAgcG9ydHJhaXQ6IHBhcnNlZC5wb3J0cmFpdCxcbiAgICBlbmRvcnNlbWVudDogcGFyc2VkLmVuZG9yc2VtZW50SW1hZ2UsXG4gICAgcHJpdmF0ZTogcGFyc2VkLnBlcm1pc3Npb24gPT09ICdQcml2YXRlIFByb2ZpbGUnLFxuICAgIHN0YXRzOiBzdGF0c1xuICB9XG5cbiAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGpzb24pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwbGF0Zm9ybSwgcmVnaW9uLCB0YWcsIGNhbGxiYWNrKSB7XG4gIGFzeW5jLmF1dG8oe1xuICAgIGdldEhUTUw6IGFzeW5jLmFwcGx5KGdldEhUTUwsIHBsYXRmb3JtLCByZWdpb24sIHRhZyksXG4gICAgcGFyc2VIVE1MOiBbJ2dldEhUTUwnLCBhc3luYy5hcHBseShwYXJzZUhUTUwpXSxcbiAgICB0cmFuc2Zvcm06IFsnZ2V0SFRNTCcsICdwYXJzZUhUTUwnLCBhc3luYy5hcHBseSh0cmFuc2Zvcm0pXSxcbiAgfSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgfVxuICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByZXN1bHRzLnRyYW5zZm9ybSk7XG4gIH0pO1xufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0YXRzLmpzIl0sIm5hbWVzIjpbIk1BWF9SRVRSSUVTIiwidXJsIiwib3B0aW9ucyIsInVyaSIsImVuY29kZVVSSSIsImVuY29kaW5nIiwiJCIsImNoZWVyaW8iLCJyZXN1bHRzIiwiaXNGb3VuZCIsImNhbGxiYWNrIiwicGFyc2VkIiwidXNlciIsInBvcnRyYWl0IiwicGVybWlzc2lvbiIsImVuZG9yc2VtZW50SW1hZ2UiLCJzdGF0cyIsInRvcEhlcm9DYXRlZ29yaWVzIiwicXVpY2twbGF5IiwiY29tcGV0aXRpdmUiLCJPYmplY3QiLCJ0b3BIZXJvZXNFbHMiLCJ0b3BIZXJvZXMiLCJzdGF0Iiwic3RhdENhdGVnb3JpZXMiLCJlbHMiLCJzdGF0c0FyciIsIml0ZW0iLCJwYXJzZUhUTUwiLCJqc29uIiwidXNlcm5hbWUiLCJlbmRvcnNlbWVudCIsImFzeW5jIiwiZ2V0SFRNTCIsInRyYW5zZm9ybSJdLCJtYXBwaW5ncyI6IjQ1bUJBSU1BO2dPQUpOLEdBQUEsQ0FBQSxNQUFBLDBCQUFBLHNCQUFBLENBQUEsT0FBQSxDQUFBLE9BQUEsQ0FBQSxDQUFBLENBQUEsQ0FDQSxHQUFBLENBQUEsUUFBQSwwQkFBQSxzQkFBQSxDQUFBLE9BQUEsQ0FBQSxTQUFBLENBQUEsQ0FBQSxDQUFBLENBQ0EsR0FBQSxDQUFBLE1BQUEsMEJBQUEsT0FBQSxDQUFBLFNBQUEsQ0FBQSxDQUFBLEMsd1BBRUEsR0FBTUEsQ0FBQUEsV0FBVywwQkFBakIsQ0FBaUIsQ0FBakIsQ0FFQTtBQUNBLFFBQUEsQ0FBQSxPQUFBLENBQUEsUUFBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsUUFBQSxDQUFrRCx5QkFDaEQsR0FBTUMsQ0FBQUEsR0FBRywwQkFBQSwrQ0FBQSxNQUFBLENBQUEsR0FBQSxDQUFULEdBQVMsQ0FBQSxDQUFULENBRUEsR0FBTUMsQ0FBQUEsT0FBTywwQkFBRyxDQUNkQyxHQUFHLENBQUVDLFNBQVMsQ0FEQSxHQUNBLENBREEsQ0FFZEMsUUFBUSxDQUFFLE1BRkks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Q0FBQUEsSUFBQUEsQ0FBVyxDQUNUQyxPQUFPLENBQUVELE1BQUFBLENBQUFBLFNBQUFBLENBQUFBLENBQUFBLEtBQUFBLENBQUFBLE9BQUFBLENBQUFBLFFBQUFBLENBQUFBLE1BQUFBLENBREEsR0FDQUEsQ0FEQSxDQUVUSixTQUFTLENBQUUsQ0FBQSxTQUFBLENBQVlJLE1BQUFBLENBQUFBLFNBQUFBLENBQUFBLENBQUFBLEtBQUFBLENBRmQsU0FFY0EsQ0FBWixDQUZGLENBR1RFLFNBQVMsQ0FBRSxDQUFBLFNBQUEsQ0FBQSxXQUFBLENBQXlCRixNQUFBQSxDQUFBQSxTQUFBQSxDQUFBQSxDQUFBQSxLQUFBQSxDQUF6QixTQUF5QkEsQ0FBekIsQ0FIRixDQUFYQSxDQUlHLFNBQUEsR0FBQSxDQUFBLE9BQUEsQ0FBdUIsbURBQ3hCLEdBQUEsR0FBQSxDQUFTLHFEQUNQLE1BQU90QixDQUFBQSxRQUFRLENBQWYsR0FBZSxDQUFmLENBQ0QsQ0FGRCxpQ0FEd0IseUJBSXhCLE1BQU9BLENBQUFBLFFBQVEsQ0FBQSxJQUFBLENBQU9GLE9BQU8sQ0FBN0IsU0FBZSxDQUFmLENBUkZ3QixDQUFBQSxFQVVELEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXN5bmMgZnJvbSAnYXN5bmMnO1xuaW1wb3J0IGNoZWVyaW8gZnJvbSAnY2hlZXJpbyc7XG5pbXBvcnQgeyByZXRyeVJlcXVlc3QgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgTUFYX1JFVFJJRVMgPSAzO1xuXG4vLyBHZXQgSFRNTCBmcm9tIHBsYXlvdmVyd2F0Y2ggY2FyZWVyIHBhZ2UuXG5mdW5jdGlvbiBnZXRIVE1MKHBsYXRmb3JtLCByZWdpb24sIHRhZywgY2FsbGJhY2spIHtcbiAgY29uc3QgdXJsID0gYGh0dHBzOi8vb3ZlcndhdGNoLmJsaXp6YXJkLmNvbS9lbi11cy9jYXJlZXIvJHt0YWd9L2BcblxuICBjb25zdCBvcHRpb25zID0ge1xuICAgIHVyaTogZW5jb2RlVVJJKHVybCksXG4gICAgZW5jb2Rpbmc6ICd1dGY4J1xuICB9XG4gIHJldHVybiByZXRyeVJlcXVlc3Qob3B0aW9ucywgTUFYX1JFVFJJRVMsIGNhbGxiYWNrKTtcbn1cblxuLy8gQmVnaW4gaHRtbCBwYXJzaW5nLlxuZnVuY3Rpb24gcGFyc2VIVE1MKHJlc3VsdHMsIGNhbGxiYWNrKSB7XG4gIGNvbnN0ICQgPSBjaGVlcmlvLmxvYWQocmVzdWx0cy5nZXRIVE1MKTtcblxuICAvLyBDaGVjayBpZiBwcm9maWxlIGV4aXN0cy5cbiAgY29uc3QgaXNGb3VuZCA9ICQoJy5oZWFkaW5nJykudGV4dCgpICE9PSAnUGFnZSBOb3QgRm91bmQnO1xuICBpZiAoIWlzRm91bmQpIHtcbiAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdQcm9maWxlIG5vdCBmb3VuZCcpKTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZCA9IHtcbiAgICB1c2VyOiAkKCcuUHJvZmlsZS1wbGF5ZXItLW5hbWUnKS50ZXh0KCksXG4gICAgcG9ydHJhaXQ6ICQoJy5Qcm9maWxlLXBsYXllci0tcG9ydHJhaXQnKS5hdHRyKCdzcmMnKSxcbiAgICBwZXJtaXNzaW9uOiAkKCcuUHJvZmlsZS1wcml2YXRlLS0tbXNnJykudGV4dCgpLFxuICAgIGVuZG9yc2VtZW50SW1hZ2U6ICQoJy5Qcm9maWxlLXBsYXllclN1bW1hcnktLWVuZG9yc2VtZW50JykuYXR0cignc3JjJyksXG4gIH1cblxuICBjb25zdCBzdGF0cyA9IHt9O1xuXG4gIC8vIFRvcCBIZXJvZXMuXG4gIGNvbnN0IHRvcEhlcm9DYXRlZ29yaWVzID0ge1xuICAgIHF1aWNrcGxheToge1xuICAgICAgJ3BsYXllZCc6ICcweDA4NjAwMDAwMDAwMDAwMjEnLFxuICAgICAgJ2dhbWVzX3dvbic6ICcweDA4NjAwMDAwMDAwMDAwMzknLFxuICAgICAgJ3dlYXBvbl9hY2N1cmFjeSc6ICcweDA4NjAwMDAwMDAwMDAwMkYnLFxuICAgICAgJ2VsaW1pbmF0aW9uc19wZXJfbGlmZSc6ICcweDA4NjAwMDAwMDAwMDAzRDInLFxuICAgICAgJ211bHRpa2lsbF9iZXN0JzogJzB4MDg2MDAwMDAwMDAwMDM0NicsXG4gICAgICAnb2JqZWN0aXZlX2tpbGxzX2F2ZXJhZ2UnOiAnMHgwODYwMDAwMDAwMDAwMzlDJyxcbiAgICB9LFxuICAgIGNvbXBldGl0aXZlOiB7XG4gICAgICAncGxheWVkJzogJzB4MDg2MDAwMDAwMDAwMDAyMScsXG4gICAgICAnZ2FtZXNfd29uJzogJzB4MDg2MDAwMDAwMDAwMDAzOScsXG4gICAgICAnd2luX3JhdGUnOiAnMHgwODYwMDAwMDAwMDAwM0QxJyxcbiAgICAgICd3ZWFwb25fYWNjdXJhY3knOiAnMHgwODYwMDAwMDAwMDAwMDJGJyxcbiAgICAgICdlbGltaW5hdGlvbnNfcGVyX2xpZmUnOiAnMHgwODYwMDAwMDAwMDAwM0QyJyxcbiAgICAgICdtdWx0aWtpbGxfYmVzdCc6ICcweDA4NjAwMDAwMDAwMDAzNDYnLFxuICAgICAgJ29iamVjdGl2ZV9raWxsc19hdmVyYWdlJzogJzB4MDg2MDAwMDAwMDAwMDM5QycsXG4gICAgfVxuICB9O1xuXG4gIC8vIFF1aWNrcGxheS5cbiAgc3RhdHNbJ3RvcF9oZXJvZXMnXSA9IHsgcXVpY2twbGF5OiB7fSB9O1xuICBPYmplY3Qua2V5cyh0b3BIZXJvQ2F0ZWdvcmllcy5xdWlja3BsYXkpLmZvckVhY2goKGspID0+IHtcbiAgICBjb25zdCB0b3BIZXJvZXNFbHMgPSAkKGAuUHJvZmlsZS1oZXJvU3VtbWFyeS0tdmlldy5xdWlja1BsYXktdmlldyBbZGF0YS1jYXRlZ29yeS1pZD1cIiR7dG9wSGVyb0NhdGVnb3JpZXMucXVpY2twbGF5W2tdfVwiXWApXG4gICAgICAuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXInKTtcbiAgICBsZXQgdG9wSGVyb2VzID0gW107XG4gICAgdG9wSGVyb2VzRWxzLmVhY2goZnVuY3Rpb24oaSwgZWwpIHtcbiAgICAgIGNvbnN0IHN0YXQgPSB7fTtcbiAgICAgIHN0YXQuaGVybyA9ICQodGhpcykuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXItdGl0bGUnKS50ZXh0KCk7XG4gICAgICBzdGF0LmltZyA9ICQodGhpcykuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXItLWljb24nKS5hdHRyKCdzcmMnKTtcbiAgICAgIHN0YXRba10gPSAkKHRoaXMpLmZpbmQoJy5Qcm9maWxlLXByb2dyZXNzQmFyLWRlc2NyaXB0aW9uJykudGV4dCgpO1xuICAgICAgdG9wSGVyb2VzLnB1c2goc3RhdCk7XG4gICAgfSk7XG4gICAgc3RhdHNbJ3RvcF9oZXJvZXMnXVsncXVpY2twbGF5J11ba10gPSB0b3BIZXJvZXM7XG4gIH0pO1xuXG4gIC8vIENvbXBldGl0aXZlLlxuICBzdGF0c1sndG9wX2hlcm9lcyddWydjb21wZXRpdGl2ZSddID0ge307XG4gIE9iamVjdC5rZXlzKHRvcEhlcm9DYXRlZ29yaWVzLmNvbXBldGl0aXZlKS5mb3JFYWNoKChrKSA9PiB7XG4gICAgY29uc3QgdG9wSGVyb2VzRWxzID0gJChgLlByb2ZpbGUtaGVyb1N1bW1hcnktLXZpZXcuY29tcGV0aXRpdmUtdmlldyBbZGF0YS1jYXRlZ29yeS1pZD1cIiR7dG9wSGVyb0NhdGVnb3JpZXMuY29tcGV0aXRpdmVba119XCJdYClcbiAgICAgIC5maW5kKCcuUHJvZmlsZS1wcm9ncmVzc0JhcicpO1xuICAgIGxldCB0b3BIZXJvZXMgPSBbXTtcbiAgICB0b3BIZXJvZXNFbHMuZWFjaChmdW5jdGlvbihpLCBlbCkge1xuICAgICAgY29uc3Qgc3RhdCA9IHt9O1xuICAgICAgc3RhdC5oZXJvID0gJCh0aGlzKS5maW5kKCcuUHJvZmlsZS1wcm9ncmVzc0Jhci10aXRsZScpLnRleHQoKTtcbiAgICAgIHN0YXQuaW1nID0gJCh0aGlzKS5maW5kKCcuUHJvZmlsZS1wcm9ncmVzc0Jhci0taWNvbicpLmF0dHIoJ3NyYycpO1xuICAgICAgc3RhdFtrXSA9ICQodGhpcykuZmluZCgnLlByb2ZpbGUtcHJvZ3Jlc3NCYXItZGVzY3JpcHRpb24nKS50ZXh0KCk7XG4gICAgICB0b3BIZXJvZXMucHVzaChzdGF0KTtcbiAgICB9KTtcbiAgICBzdGF0c1sndG9wX2hlcm9lcyddWydjb21wZXRpdGl2ZSddW2tdID0gdG9wSGVyb2VzO1xuICB9KTtcblxuICAvL1xuICAvLyBDYXJlZXIgU3RhdHNcbiAgLy9cbiAgY29uc3Qgc3RhdENhdGVnb3JpZXMgPSBbXG4gICAgJ0NvbWJhdCcsXG4gICAgJ01hdGNoIEF3YXJkcycsXG4gICAgJ0Fzc2lzdHMnLFxuICAgICdBdmVyYWdlJyxcbiAgICAnTWlzY2VsbGFuZW91cycsXG4gICAgJ0Jlc3QnLFxuICAgICdHYW1lJ1xuICBdO1xuXG4gIC8vIFF1aWNrcGxheSBTdGF0cy5cbiAgc3RhdENhdGVnb3JpZXMuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgY29uc3QgZWxzID0gJChgLnN0YXRzLnF1aWNrUGxheS12aWV3IC5vcHRpb24tMCAuY2F0ZWdvcnkgLmNvbnRlbnQgLmhlYWRlciBwOmNvbnRhaW5zKFwiJHtpdGVtfVwiKWApLmNsb3Nlc3QoJy5jb250ZW50JykuZmluZCgnLnN0YXQtaXRlbScpO1xuICAgIGxldCBzdGF0c0FyciA9IFtdO1xuICAgIGVscy5lYWNoKGZ1bmN0aW9uKGksIGVsKSB7XG4gICAgICBsZXQgc3RhdCA9IHt9O1xuICAgICAgc3RhdC50aXRsZSA9ICQodGhpcykuZmluZCgnLm5hbWUnKS50ZXh0KCk7XG4gICAgICBzdGF0LnZhbHVlID0gJCh0aGlzKS5maW5kKCcudmFsdWUnKS50ZXh0KCk7XG4gICAgICBzdGF0c0Fyci5wdXNoKHN0YXQpO1xuICAgIH0pO1xuICAgIGl0ZW0gPSBpdGVtLnJlcGxhY2UoJyAnLCAnXycpLnRvTG93ZXJDYXNlKCk7XG4gICAgc3RhdHNbaXRlbV0gPSB7IHF1aWNrcGxheTogW10gfTtcbiAgICBzdGF0c1tpdGVtXVsncXVpY2twbGF5J10gPSBzdGF0c0FycjtcbiAgfSk7XG5cbiAgLy8gQ29tcGV0aXRpdmUgU3RhdHMuXG4gIHN0YXRDYXRlZ29yaWVzLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgIGNvbnN0IGVscyA9ICQoYC5zdGF0cy5jb21wZXRpdGl2ZS12aWV3IC5vcHRpb24tMCAuY2F0ZWdvcnkgLmNvbnRlbnQgLmhlYWRlciBwOmNvbnRhaW5zKFwiJHtpdGVtfVwiKWApLmNsb3Nlc3QoJy5jb250ZW50JykuZmluZCgnLnN0YXQtaXRlbScpO1xuICAgIGxldCBzdGF0c0FyciA9IFtdO1xuICAgIGVscy5lYWNoKGZ1bmN0aW9uKGksIGVsKSB7XG4gICAgICBsZXQgc3RhdCA9IHt9O1xuICAgICAgc3RhdC50aXRsZSA9ICQodGhpcykuZmluZCgnLm5hbWUnKS50ZXh0KCk7XG4gICAgICBzdGF0LnZhbHVlID0gJCh0aGlzKS5maW5kKCcudmFsdWUnKS50ZXh0KCk7XG4gICAgICBzdGF0c0Fyci5wdXNoKHN0YXQpO1xuICAgIH0pO1xuICAgIGl0ZW0gPSBpdGVtLnJlcGxhY2UoJyAnLCAnXycpLnRvTG93ZXJDYXNlKCk7XG4gICAgc3RhdHNbaXRlbV1bJ2NvbXBldGl0aXZlJ10gPSBbXTtcbiAgICBzdGF0c1tpdGVtXVsnY29tcGV0aXRpdmUnXSA9IHN0YXRzQXJyO1xuICB9KTtcblxuICByZXR1cm4gY2FsbGJhY2sobnVsbCwgeyBzdGF0cywgcGFyc2VkIH0pO1xufVxuXG4vLyBUcmFuc2Zvcm0gdGhlIGRhdGEgaW50byBhIGpzb24gb2JqZWN0IHdlIGNhbiBzZXJ2ZS5cbmZ1bmN0aW9uIHRyYW5zZm9ybShyZXN1bHRzLCBjYWxsYmFjaykge1xuICBjb25zdCB7IHBhcnNlSFRNTCB9ID0gcmVzdWx0cztcbiAgY29uc3QgeyBzdGF0cywgcGFyc2VkIH0gPSBwYXJzZUhUTUw7XG5cbiAgY29uc3QganNvbiA9IHtcbiAgICB1c2VybmFtZTogcGFyc2VkLnVzZXIsXG4gICAgcG9ydHJhaXQ6IHBhcnNlZC5wb3J0cmFpdCxcbiAgICBlbmRvcnNlbWVudDogcGFyc2VkLmVuZG9yc2VtZW50SW1hZ2UsXG4gICAgcHJpdmF0ZTogcGFyc2VkLnBlcm1pc3Npb24gPT09ICdQcml2YXRlIFByb2ZpbGUnLFxuICAgIHN0YXRzOiBzdGF0c1xuICB9XG5cbiAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGpzb24pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihwbGF0Zm9ybSwgcmVnaW9uLCB0YWcsIGNhbGxiYWNrKSB7XG4gIGFzeW5jLmF1dG8oe1xuICAgIGdldEhUTUw6IGFzeW5jLmFwcGx5KGdldEhUTUwsIHBsYXRmb3JtLCByZWdpb24sIHRhZyksXG4gICAgcGFyc2VIVE1MOiBbJ2dldEhUTUwnLCBhc3luYy5hcHBseShwYXJzZUhUTUwpXSxcbiAgICB0cmFuc2Zvcm06IFsnZ2V0SFRNTCcsICdwYXJzZUhUTUwnLCBhc3luYy5hcHBseSh0cmFuc2Zvcm0pXSxcbiAgfSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgfVxuICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByZXN1bHRzLnRyYW5zZm9ybSk7XG4gIH0pO1xufSJdLCJzb3VyY2VSb290IjoiQzpcXFVzZXJzXFxBbGZcXFNvdXJjZVxcb3ZlcndhdGNoLWFwaVxcYXBpXFxzcmNcXHBhcnNlclxcIn0=