{"version":3,"sources":["newslistbefore.js"],"sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 21);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */,\n/* 1 */,\n/* 2 */,\n/* 3 */,\n/* 4 */\n/***/ (function(module, exports) {\n\njQuery.noConflict();\r\n; (function ($) {\r\n var StockHK = {\r\n init: function () {\r\n StockHK.videoPlay();\r\n },\r\n videoPlay: function () {\r\n if ($(\".roll\").length > 0) {\r\n $(\".rollimglist li\").each(function () {\r\n $(this).addClass(\"rollimg\");\r\n var thisindex = $(this).index();\r\n $(this).attr(\"nowpo\", thisindex);\r\n if (thisindex > 2) {\r\n $(this).addClass(\"ldsn\");\r\n }\r\n else {\r\n $(this).addClass(\"l\" + (thisindex + 1));\r\n }\r\n });\r\n $(\".rollimg:not(:eq(1))\").css(\"opacity\", \"0.2\");\r\n function rollimgto(i) {\r\n $(\".rollimgtxt\").remove();\r\n $(\".rollimglist a img\").unwrap(); // 删除a标签\r\n var rollimgpo = [{ \"left\": 10, \"top\": 19, \"zindex\": 9, \"width\": 164, \"height\": 92, \"opacity\": 0.2 }, { \"left\": 45, \"top\": 12, \"zindex\": 10, \"width\": 191, \"height\": 107, \"opacity\": 1 }, { \"left\": 106, \"top\": 19, \"zindex\": 9, \"width\": 164, \"height\": 92, \"opacity\": 0.2 }];\r\n var rollimglenght = $(\".rollimg\").length;\r\n $(\".rollimg\").each(function () {\r\n var qindex = parseInt($(this).attr(\"nowpo\")); //目前位置\r\n var toindex = (qindex + i + rollimglenght) % rollimglenght; //目标位置\r\n var thisimg = $(this).children(\"img\"); //下面的图片\r\n $(this).attr(\"nowpo\", toindex);\r\n if (toindex > 2) {\r\n $(this).css(\"display\", \"none\");\r\n }\r\n else {\r\n $(this).css(\"display\", \"block\");\r\n $(this).animate({\r\n left: rollimgpo[toindex].left,\r\n top: rollimgpo[toindex].top,\r\n opacity: rollimgpo[toindex].opacity\r\n }, 300, function () {\r\n $(this).css(\"z-index\", rollimgpo[toindex].zindex);\r\n if (toindex == 1) {\r\n thisimg.after('
' + thisimg.attr('alt') + '
');\r\n $(this).wrapInner(\"\");\r\n }\r\n });\r\n thisimg.animate({\r\n width: rollimgpo[toindex].width,\r\n height: rollimgpo[toindex].height\r\n }, 300);\r\n }\r\n });\r\n }\r\n $(\".rollimg\").eq(1).append('
' + $(\".rollimg\").eq(1).children(\"img\").attr('alt') + '
');\r\n $(\".rollimg\").eq(1).wrapInner('');\r\n $(\".rollimg\").click(function () {\r\n var qcindex = parseInt($(this).attr(\"nowpo\"));\r\n if (qcindex == 0) {\r\n rollimgto(1);\r\n }\r\n else if (qcindex == 2) {\r\n rollimgto(-1);\r\n }\r\n });\r\n var timeroll;\r\n timeroll = setInterval(function () {\r\n rollimgto(-1);\r\n }, 5000);\r\n\r\n $(\".roll\").mouseenter(function () {\r\n clearInterval(timeroll);\r\n });\r\n $(\".roll\").mouseleave(function () {\r\n timeroll = setInterval(function () {\r\n rollimgto(-1);\r\n }, 5000);\r\n });\r\n }\r\n }\r\n }\r\n StockHK.init();\r\n})(jQuery);\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n// 港股行情\r\n(function () {\r\n var _gghq = document.getElementById(\"Gghq1\");\r\n if (!!_gghq) {\r\n // 指数\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/stock/get?secid=100.HSI&fields=f43,f48,f59,f152,f57,f58,f107,f169,f170&fltt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: 'cb',\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data) {\r\n var zdfInfo = getZDFInfo(json.data.f170);\r\n\r\n var html = '
  • ' + json.data.f58 + '
  • ' + json.data.f43 + '
  • ' + zdfInfo._data + '
  • ' + getGSHNum(json.data.f48, \"\" , 2) + '
  • ';\r\n \r\n jQuery(\"#GgHszs\").append(html);\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n // 比价\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/clist/get?pn=1&pz=3&po=1&np=1&fltt=2&invt=2&fid=f3&fs=b:MK0101&fields=f1,f2,f3,f4,f12,f13,f14,f152,f185,f186,f187,f188,f189,f191,f192,f193&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: 'cb',\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data && json.data.diff) {\r\n var html = '';\r\n for (var i = 0; i < 3; i++) {\r\n var zdfInfoA = getZDFInfo(json.data.diff[i].f187);//A股涨跌幅判断\r\n var zdfInfoG = getZDFInfo(json.data.diff[i].f4);//港股涨跌额判断\r\n var yjbInfo = getZDFInfo(json.data.diff[i].f188);//溢价比\r\n html += '';\r\n }\r\n jQuery(\"#Ggbj\").append(html);\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n // 资金\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/kamt/get?fields1=f1,f2,f3,f4&fields2=f51,f52&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: 'cb',\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data) {\r\n //hk2sh沪股通\r\n var hgtLR = getGSHNum(parseFloat(json.data.hk2sh.dayNetAmtIn) * 10000, \"\", 2);\r\n jQuery(\"#hgtInflow\").html(hgtLR);\r\n var hgtInfo = getZDFInfo(json.data.hk2sh.dayNetAmtIn);\r\n if (hgtInfo._class != \"\") {\r\n jQuery(\"#hgtInflow\").addClass(hgtInfo._class);\r\n if (hgtInfo._class == \"green\") {\r\n jQuery(\"#hgtInflow\").before(\"资金净流出\");\r\n jQuery(\"#hgtInflow\").html(hgtLR.replace(\"-\", \"\"));\r\n } else {\r\n jQuery(\"#hgtInflow\").before(\"资金净流入\");\r\n }\r\n } else {\r\n jQuery(\"#hgtInflow\").before(\"资金净流入\");\r\n }\r\n jQuery(\".hgtstatus\").html(getHSGTStatus(json.data.hk2sh.status));\r\n if (json.data.hk2sh.status == 4) {\r\n jQuery(\"#hgtInflow\").parent().html(\"-\");\r\n }\r\n\r\n //sh2hk港股通(沪)\r\n var ggthLR = getGSHNum(parseFloat(json.data.sh2hk.dayNetAmtIn) * 10000, \"\", 2);\r\n jQuery(\"#ggthInflow\").html(ggthLR);\r\n var ggthInfo = getZDFInfo(json.data.sh2hk.dayNetAmtIn);\r\n if (ggthInfo._class != \"\") {\r\n jQuery(\"#ggthInflow\").addClass(ggthInfo._class);\r\n if (ggthInfo._class == \"green\") {\r\n jQuery(\"#ggthInflow\").before(\"资金净流出\");\r\n jQuery(\"#ggthInflow\").html(ggthLR.replace(\"-\", \"\"));\r\n } else {\r\n jQuery(\"#ggthInflow\").before(\"资金净流入\");\r\n }\r\n } else {\r\n jQuery(\"#ggthInflow\").before(\"资金净流入\");\r\n }\r\n jQuery(\".ggthstatus\").html(getHSGTStatus(json.data.sh2hk.status));\r\n if (json.data.sh2hk.status == 4) {\r\n jQuery(\"#ggthInflow\").parent().html(\"-\");\r\n }\r\n\r\n //hk2sz深股通\r\n var sgtLR = getGSHNum(parseFloat(json.data.hk2sz.dayNetAmtIn) * 10000, \"\", 2);\r\n jQuery(\"#sgtInflow\").html(sgtLR);\r\n var sgtInfo = getZDFInfo(json.data.hk2sz.dayNetAmtIn);\r\n if (sgtInfo._class != \"\") {\r\n jQuery(\"#sgtInflow\").addClass(sgtInfo._class);\r\n if (sgtInfo._class == \"green\") {\r\n jQuery(\"#sgtInflow\").before(\"资金净流出\");\r\n jQuery(\"#sgtInflow\").html(sgtLR.replace(\"-\", \"\"));\r\n } else {\r\n jQuery(\"#sgtInflow\").before(\"资金净流入\");\r\n }\r\n } else {\r\n jQuery(\"#sgtInflow\").before(\"资金净流入\");\r\n }\r\n jQuery(\".sgtstatus\").html(getHSGTStatus(json.data.hk2sz.status));\r\n if (json.data.hk2sz.status == 4) {\r\n jQuery(\"#sgtInflow\").parent().html(\"-\");\r\n }\r\n\r\n //sz2hk港股通(深)\r\n var ggtsLR = getGSHNum(parseFloat(json.data.sz2hk.dayNetAmtIn) * 10000, \"\", 2);\r\n jQuery(\"#ggtsInflow\").html(ggtsLR);\r\n var ggtsInfo = getZDFInfo(json.data.sz2hk.dayNetAmtIn);\r\n if (ggtsInfo._class != \"\") {\r\n jQuery(\"#ggtsInflow\").addClass(ggtsInfo._class);\r\n if (ggtsInfo._class == \"green\") {\r\n jQuery(\"#ggtsInflow\").before(\"资金净流出\");\r\n jQuery(\"#ggtsInflow\").html(ggtsLR.replace(\"-\", \"\"));\r\n } else {\r\n jQuery(\"#ggtsInflow\").before(\"资金净流入\");\r\n }\r\n } else {\r\n jQuery(\"#ggtsInflow\").before(\"资金净流入\");\r\n }\r\n jQuery(\".ggtsstatus\").html(getHSGTStatus(json.data.sz2hk.status));\r\n if (json.data.sz2hk.status == 4) {\r\n jQuery(\"#ggtsInflow\").parent().html(\"-\");\r\n }\r\n }\r\n } catch (error) {\r\n return false;\r\n } \r\n }\r\n });\r\n }\r\n function getHSGTStatus(_hsgtstatus) {\r\n switch (_hsgtstatus) {\r\n case 1:\r\n return \"有额度\";\r\n case 2:\r\n return \"无额度\";\r\n case 3:\r\n return \"收盘\";\r\n case 4:\r\n return \"休市\";\r\n default:\r\n return \"-\";\r\n }\r\n }\r\n function getZDFInfo(str) {\r\n if (str === \"\" || str == \"-\") {\r\n return { _class: \"\", _data: \"-\" };\r\n } else {\r\n var dZdf = parseFloat(str);\r\n if (dZdf > 0) {\r\n return { _class: \"red\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else if (dZdf < 0) {\r\n return { _class: \"green\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else {\r\n return { _class: \"\", _data: dZdf.toFixed(2) + \"%\" };\r\n }\r\n }\r\n }\r\n function getGSHNum(str, fix, num) {\r\n if (str === \"\" || str == \"-\") {\r\n return \"-\";\r\n } else {\r\n var result;\r\n var intStr = Math.abs(parseInt(str));\r\n if (intStr.toString().length > 12) {\r\n result = (parseFloat(str) / 1000000000000).toFixed(num) + '万亿' + fix;\r\n } else if (intStr.toString().length > 8) {\r\n result = (parseFloat(str) / 100000000).toFixed(num) + '亿' + fix;\r\n } else if (intStr.toString().length > 4) {\r\n result = (parseFloat(str) / 10000).toFixed(num) + '万' + fix;\r\n } else {\r\n if (parseFloat(str) === parseInt(str)) {\r\n result = parseFloat(str) + fix;\r\n } else {\r\n result = parseFloat(str).toFixed(num) + fix;\r\n }\r\n }\r\n return result;\r\n }\r\n }\r\n})(jQuery);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n// 黄金行情\r\n(function () {\r\n var _hjhq = document.getElementById(\"Hjhq1\");\r\n if (!!_hjhq) {\r\n // 国际\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/ulist.np/get?secids=101.GC00Y,101.SI00Y&fields=f1,f2,f3,f4,f12,f13,f14&fltt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data && json.data.diff) {\r\n for (var i = 0; i < 2; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n var html = '';\r\n jQuery(\"#Hjgj\").append(html);\r\n }\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n // 国内\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/ulist.np/get?secids=113.aum,113.agm&fields=f1,f2,f3,f4,f12,f13,f14&fltt=2&invt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data && json.data.diff) {\r\n for (var i = 0; i < 2; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n var html = '';\r\n jQuery(\"#Hjgn\").append(html);\r\n }\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n function getZDFInfo(str) {\r\n if (str === \"\" || str == \"-\") {\r\n return { _class: \"\", _data: \"-\" };\r\n } else {\r\n var dZdf = parseFloat(str);\r\n if (dZdf > 0) {\r\n return { _class: \"red\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else if (dZdf < 0) {\r\n return { _class: \"green\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else {\r\n return { _class: \"\", _data: dZdf.toFixed(2) + \"%\" };\r\n }\r\n }\r\n }\r\n }\r\n}());\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\n(function () { //EM_Hqzx_1\r\n\r\n $ = function (s) {\r\n return (typeof (s) == \"string\") ? document.getElementById(s) : s;\r\n }\r\n if (typeof $ == \"undefined\") { $ = function (a) { return document.getElementById(a) } }\r\n if (typeof $C == \"undefined\") { $C = function (a) { return document.createElement(a) } }\r\n Function.prototype.Bind = function () {\r\n var d = this,\r\n b = arguments[0],\r\n a = new Array();\r\n for (var c = 1; c < arguments.length; c++) {\r\n a.push(arguments[c]);\r\n }\r\n return function () {\r\n return d.apply(b, a);\r\n }\r\n };\r\n\r\n window.amineWidth = function (obj, num) {\r\n obj.style.width = num + \"px\";\r\n };\r\n var tabsItemId,\r\n tabsState = false;\r\n var MutualTab = function () {\r\n this.init.apply(this, arguments);\r\n };\r\n MutualTab.prototype = {\r\n init: function (tabs, targets, type, callbackObjArr, subTargets) {\r\n this.tabs = [];\r\n\r\n var tempTabs = tabs.childNodes;\r\n for (var i = 0; i < tempTabs.length; i++) {\r\n if (tempTabs[i].nodeType == 1 && tempTabs[i].nodeName.toLowerCase() != 'dd') {\r\n this.tabs.push(tempTabs[i]);\r\n }\r\n }\r\n\r\n if (targets) {\r\n this.targets = [];\r\n var tempTargets = targets.childNodes;\r\n for (var j = 0; j < tempTargets.length; j++) {\r\n if (tempTargets[j].nodeType == 1) {\r\n this.targets.push(tempTargets[j]);\r\n }\r\n }\r\n this.activeTab = this.tabs[0];\r\n this.activeTarget = this.targets[0];\r\n }\r\n if (!targets && !subTargets) this.activeTab = this.tabs[0];\r\n if (subTargets) this.activeTab = null;//this.tabs[0];\r\n if (type != \"mouseover\") {\r\n for (var k = 0; k < this.tabs.length; k++) {\r\n this.tabs[k].onclick = this.showTab.Bind(this, k, callbackObjArr ? callbackObjArr[k] : null);\r\n }\r\n } else {\r\n tabsItemId = 0;\r\n for (var k = 0; k < this.tabs.length; k++) {\r\n this.tabs[k].onmouseout = this._hide.Bind(this, k);\r\n this.tabs[k].onmouseover = this._over.Bind(this, k, callbackObjArr ? callbackObjArr[k] : null);\r\n }\r\n }\r\n \r\n },\r\n showTab: function (_index, callback) {\r\n this.tabIndex = _index;\r\n if (this.tabs[_index] == this.activeTab) return;\r\n\r\n if (this.activeTab) this.activeTab.className = \"\";\r\n \r\n this.activeTab = this.tabs[_index];\r\n this.activeTab.className = \"at\";\r\n \r\n if (this.targets) {\r\n if (this.activeTarget) {\r\n this.activeTarget.style.display = \"none\";\r\n }\r\n this.activeTarget = this.targets[_index];\r\n this.activeTarget.style.display = \"\";\r\n \r\n }\r\n if (callback) {\r\n this.activeCallback = callback;\r\n callback();\r\n }\r\n\r\n },\r\n _over: function (obj, _index, callback) {\r\n tabsState = true;\r\n this._timeout = window.setTimeout(this.showTab.Bind(this, obj, _index, callback), 150);\r\n },\r\n _hide: function () {\r\n if (this._timeout) {\r\n window.clearTimeout(this._timeout);\r\n }\r\n }\r\n };\r\n //window.MutualTab = MutualTab;\r\n var hqData = {\r\n CSI: {//沪深\r\n id: \"CSI\",\r\n set: [\r\n ['0000011', '沪A', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=1.000001', 'http://quote.eastmoney.com/zs000001.html', '
  • 涨幅
  • 量比
  • 换手
  • 市盈
  • '],\r\n ['3990012', '深A', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=0.399001', 'http://quote.eastmoney.com/zs399001.html', '
  • 涨幅
  • 量比
  • 换手
  • 市盈
  • '],\r\n ['3990062', '创业板', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=0.399006', 'http://quote.eastmoney.com/zs399006.html', '
  • 涨幅
  • 量比
  • 换手
  • 市盈
  • '],\r\n ['0003001', '300', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=1.000300', 'http://quote.eastmoney.com/zs000300.html', '
  • 涨幅
  • 量比
  • 换手
  • 市盈
  • '],\r\n ['3000592', '东方财富', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=0.300059', 'http://quote.eastmoney.com/sz300059.html', '
  • F10
  • 公告
  • 研报
  • 股吧
  • ']\r\n ]\r\n },\r\n HK: {//香港\r\n id: \"HK\",\r\n set: [\r\n ['1100005', '恒生', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=100.HSI', 'http://quote.eastmoney.com/hk/zs110000.html', '
  • 涨幅
  • 成交
  • 比价
  • '],\r\n ['1100305', '红筹', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=124.HSCCI', 'http://quote.eastmoney.com/hk/zs110030.html', '
  • 涨幅
  • 成交
  • 比价
  • '],\r\n ['1100105', '国企', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=100.HSCEI', 'http://quote.eastmoney.com/hk/zs110010.html', '
  • 涨幅
  • 成交
  • 比价
  • '],\r\n ['1100505', '创业板', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=125.SPHKG', 'http://quote.eastmoney.com/hk/zs110050.html', '
  • 涨幅
  • 成交
  • 比价
  • ']\r\n ]\r\n },\r\n OCCIDENT: {//欧美\r\n id: \"OCCIDENT\",\r\n set: [\r\n ['INDU7', '道琼斯', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=100.DJIA', 'http://quote.eastmoney.com/gb/zsindu.html', '
  • 排行
  • 概念
  • 科技
  • '],\r\n ['CCMP7', '纳斯达克', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=100.NDX', 'http://quote.eastmoney.com/gb/zsCCMP.html', '
  • 排行
  • 概念
  • 科技
  • '],\r\n ['UKX7', '英国FT', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=100.FTSE', 'http://quote.eastmoney.com/gb/zsUKX.html', '
  • 排行
  • 概念
  • 科技
  • ']\r\n ]\r\n },\r\n FUND: {//基金\r\n id: \"FUND\",\r\n set: [\r\n ['0000111', '沪基', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=1.000011', 'http://quote.eastmoney.com/zs000011.html', '
  • 封基
  • 开基
  • ETF
  • LOF
  • '],\r\n ['3991032', '深基', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=0.399103', 'http://quote.eastmoney.com/zs399103.html', '
  • 封基
  • 开基
  • ETF
  • LOF
  • ']\r\n ]\r\n },\r\n FUTURES: {//期货\r\n id: \"FUTURES\",\r\n set: [\r\n ['IFDYLX1', '股指期货', '//delaywebquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=220.IFM0', 'http://quote.eastmoney.com/unify/r/220.IFM0', '
  • 期指
  • 内盘
  • 外盘
  • '],\r\n ['TFGZDJ1', '国债期货', '//delaywebquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=220.TFS0', 'http://quote.eastmoney.com/unify/r/220.TFS0', '
  • 期指
  • 内盘
  • 外盘
  • '],\r\n ['CONC0', '美原油', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=102.CL00Y', 'http://quote.eastmoney.com/unify/r/102.CL00Y', '
  • 期指
  • 内盘
  • 外盘
  • '],\r\n ['GLNC0', '美黄金', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=101.GC00Y', 'http://quote.eastmoney.com/unify/r/101.GC00Y', '
  • 期指
  • 内盘
  • 外盘
  • ']\r\n ]\r\n },\r\n FOREX: {//外汇\r\n id: \"FOREX\",\r\n set: [\r\n ['DINI0', '美元', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=100.UDI', 'http://quote.eastmoney.com/unify/r/100.UDI', '
  • 利率
  • 兑换
  • 日历
  • '],\r\n ['EURUSD0', '欧元', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=119.EURUSD', 'http://quote.eastmoney.com/forex/EURUSD.html', '
  • 利率
  • 兑换
  • 日历
  • '],\r\n ['GBPUSD0', '英镑', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=119.GBPUSD', 'http://quote.eastmoney.com/forex/GBPUSD.html', '
  • 利率
  • 兑换
  • 日历
  • '],\r\n ['USDJPY0', '日元', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=119.USDJPY', 'http://quote.eastmoney.com/forex/USDJPY.html', '
  • 利率
  • 兑换
  • 日历
  • '],\r\n ['USDCNY0', '人民币', '//webquotepic.eastmoney.com/GetPic.aspx?imageType=RSINDEX&nid=133.USDCNH', 'http://quote.eastmoney.com/unify/r/133.USDCNH', '
  • 利率
  • 兑换
  • 日历
  • ']\r\n ]\r\n }\r\n };\r\n\r\n var StockIndex = {\r\n tabObjs: [],\r\n\r\n tabsItemId:0, //二级标签页导航索引值\r\n tabsIndex: 0, //一级标签页导航索引值\r\n tabshqDataId: \"\", //hqData数据中对应的属性id\r\n\r\n imgFqc: 120000,\r\n activeImg: 0,\r\n apply: function (tabId, contentId, refBtn) {\r\n if (window[\"_IFCode\"]) {\r\n hqData[\"FUTURES\"].set[0][0] = window[\"_IFCode\"];\r\n hqData[\"FUTURES\"].set[0][2] = 'http://hqgnqhpic.eastmoney.com/EM_Futures2010PictureProducter/Picture/' + _IFCode + '1RSIndex.png';\r\n hqData[\"FUTURES\"].set[0][3] = 'http://quote.eastmoney.com/gzqh/' + _IFCode + '.html';\r\n }\r\n if (window[\"_TFCode\"]) {\r\n hqData[\"FUTURES\"].set[1][0] = window[\"_TFCode\"];\r\n hqData[\"FUTURES\"].set[1][2] = 'http://hqgnqhpic.eastmoney.com/EM_Futures2010PictureProducter/Index.aspx?imagetype=RSIndex&ID=' + _TFCode + '1';\r\n hqData[\"FUTURES\"].set[1][3] = 'http://quote.eastmoney.com/gzqh/' + _TFCode + '.html';\r\n }\r\n this._tabsElement = $(tabId);\r\n this._contentElement = $(contentId);\r\n if (refBtn) this._refreshElement = $(refBtn);\r\n this._initContent();\r\n this._tabCtrl = new MutualTab(this._tabsElement, this._contentElement, \"mouseover\", this.tabObjs, true);\r\n this.tabsSelect();\r\n this._start(this.tabsIndex,this.tabshqDataId);\r\n },\r\n _initContent: function () {//初始化主体结构\r\n var tabs = this._tabsElement;\r\n var tabContent = this._contentElement;\r\n var tempTabs = tabs.childNodes;\r\n var setArr = null, showStyle = '', innerContent = '', _active = '';\r\n for (var i = 0; i < tempTabs.length; i++) {\r\n if (tempTabs[i].nodeType == 1) {\r\n this.tabObjs.push(this.show.Bind(this, hqData[tempTabs[i].id]));\r\n innerContent += '
    ';\r\n if (showStyle == '') showStyle = ' style=\"display:none;\"';\r\n\r\n setArr = hqData[tempTabs[i].id].set;\r\n innerContent += '
    ';\r\n for (var j in setArr) {\r\n _active = '';\r\n if (j == 0) _active = ' class=\"at\"';\r\n if (setArr[j][1] != undefined) {\r\n innerContent += '' + setArr[j][1] + '';\r\n }\r\n if (j < setArr.length - 1) innerContent += '
    |
    ';\r\n }\r\n\r\n innerContent += '
    ';\r\n innerContent += '
    ';\r\n innerContent += '';\r\n innerContent += '
    ';\r\n }\r\n }\r\n tabContent.innerHTML = innerContent;\r\n },\r\n tabsSelect:function(){\r\n var input = $(\"hqzx_tabId\"), // 获取页面中隐藏标签的元素\r\n tabs = this._tabsElement.childNodes,\r\n tabsArr = [],\r\n tabsDicArr = [],\r\n i,\r\n tabId = input.getAttribute(\"data-hqzx-id1\"),\r\n tabItemIdName = input.getAttribute(\"data-hqzx-id2\");\r\n var tabsDictionary = [ //标签页各级导航对应字典\r\n { //沪深CSI\r\n id:\"hqzx_CSI\",\r\n itemNavId:[\"CSI_hA\", \"CSI_sA\", \"CSI_300\", \"CSI_cyb\", \"CSI_em\"]\r\n }, \r\n { //香港HK\r\n id: \"hqzx_HK\",\r\n itemNavId: [\"HK_hs\", \"HK_hc\", \"HK_gj\", \"HK_cyb\"]\r\n }, \r\n { //欧美OCCIDENT\r\n id: \"hqzx_OCCIDENT\",\r\n itemNavId: [\"OCCIDENT_dqs\", \"OCCIDENT_nsdk\", \"OCCIDENT_UAFT\"]\r\n }, \r\n { //基金FUND\r\n id:\"hqzx_FUND\",\r\n itemNavId: [\"FUND_hj\", \"FUND_sj\"]\r\n }, \r\n { //期货FUTURES\r\n id:\"hqzx_FUTURES\",\r\n itemNavId: [\"FUTURES_guzqh\", \"FUTURES_guozqh\", \"FUTURES_myy\", \"FUTURES_mhj\"]\r\n }, \r\n { //外汇FOREX\r\n id: \"hqzx_FOREX\",\r\n itemNavId: [\"FOREX_dollar\", \"FOREX_Euro\", \"FOREX_pound\", \"FOREX_yen\", \"FOREX_RMB\"]\r\n } \r\n ];\r\n if (!tabId) {\r\n this.tabsIndex = 0;\r\n this.tabsItemId = 0;\r\n this.tabshqDataId = hqData.CSI;\r\n } else {\r\n for (i = 0; i < tabsDictionary.length; i++) {\r\n if (tabId == tabsDictionary[i].id) {\r\n this.tabsIndex = i;\r\n this.tabshqDataId = hqData[tabsDictionary[i].id.slice(5)];\r\n tabsDicArr = tabsDictionary[i].itemNavId;\r\n break;\r\n } else {\r\n this.tabsIndex = 0;\r\n this.tabsItemId = 0;\r\n this.tabshqDataId = hqData.CSI;\r\n }\r\n }\r\n }\r\n\r\n if (!tabItemIdName) {\r\n this.tabsItemId = 0;\r\n } else if (tabsDicArr) {\r\n for (i = 0; i < tabsDicArr.length; i++) {\r\n if (tabItemIdName == tabsDicArr[i]) {\r\n this.tabsItemId = i;\r\n break;\r\n } else {\r\n this.tabsItemId = 0;\r\n }\r\n }\r\n }\r\n \r\n for (i = 0; i < tabs.length; i++) {\r\n if (tabs[i].nodeType == 1) {\r\n tabsArr.push(hqData[tabs[i].id]);\r\n }\r\n }\r\n var tabsItemNav = $(\"hq_\" + tabsArr[this.tabsIndex].id).getElementsByTagName(\"dt\"),\r\n len = tabsItemNav.length;\r\n for (i = 0; i < len; i++) {\r\n tabsItemNav[i].className = \"\";\r\n }\r\n tabsItemNav[this.tabsItemId].className = \"at\";\r\n\r\n },\r\n _start: function (i, hqDataId) {\r\n this._tabCtrl.showTab(i, this.show.Bind(this, hqDataId));\r\n },\r\n show: function (aData) {\r\n this._sMarket = aData.id;\r\n this._oSetNow = aData.set;\r\n var _imgCallback = [];\r\n var _hqcodeNow = [];\r\n\r\n for (var i = 0; i < this._oSetNow.length; i++) {\r\n _imgCallback.push(this._loadImg.Bind(this, i));\r\n _hqcodeNow.push(this._oSetNow[i][0]);\r\n }\r\n if (!hqData[this._sMarket]._containersNow) {\r\n hqData[this._sMarket]._containersNow = [];\r\n var _tmpchilds = $(\"hq_\" + aData.id).firstChild.childNodes;\r\n var _tmpFirst = null;\r\n for (var i = 0; i < _tmpchilds.length; i++) {\r\n if (_tmpchilds[i].nodeType == 1) {\r\n _tmpFirst = _tmpchilds[i].firstChild;\r\n hqData[this._sMarket]._containersNow.push(_tmpFirst.nodeType == 1 ? _tmpFirst : _tmpFirst.nextSibling);\r\n }\r\n }\r\n }\r\n if (!aData.hasscroll) {\r\n aData.hasscroll = new MutualTab($(\"hq_\" + aData.id).firstChild, null, \"mouseover\", _imgCallback, true);\r\n //console.log(aData.hasscroll.getIndex());\r\n if (tabsState) {\r\n this.tabsItemId = tabsItemId;\r\n }\r\n aData.hasscroll.showTab(this.tabsItemId, this._loadImg.Bind(this));\r\n }\r\n },\r\n _loadImg: function (sID) {//加载并开启自刷新图片\r\n sID = !sID ? 0 : sID;\r\n //console.log(sID);\r\n if (!hqData[this._sMarket].activeImg) {\r\n hqData[this._sMarket].activeImg = 0;\r\n }\r\n //滑动时回调,传sID进来,若图已初始化,则不强行读取,由更新线程更新\r\n if (sID != undefined) {\r\n hqData[this._sMarket].activeImg = sID;\r\n //if(this._oSetNow[hqData[this._sMarket].activeImg].imgLoaded) return;\r\n }\r\n if (this._refreshElement) {\r\n //if(sID != undefined)\r\n this._refreshElement.onclick = this._loadImg.Bind(this, sID);\r\n //else\r\n //\tthis._refreshElement.onclick = this._loadImg.Bind(this, 0);\r\n }\r\n\r\n if (this._imgtimeout) {\r\n window.clearTimeout(this._imgtimeout);\r\n }\r\n this._imgtimeout = window.setTimeout(this._loadImg.Bind(this, sID), this.imgFqc);\r\n\r\n $(\"hq_\" + this._sMarket).lastChild.innerHTML = this._oSetNow[!sID ? 0 : sID][4];\r\n\r\n var _index = hqData[this._sMarket].activeImg;\r\n\r\n if (this._oSetNow[_index][2] != \"\") {\r\n this._fillImg(this._oSetNow[_index], _index)\r\n }\r\n\r\n //表明已初始化\r\n if (!this._oSetNow[_index].imgLoaded) {\r\n this._oSetNow[_index].imgLoaded = true;\r\n }\r\n },\r\n _fillImg: function (aSet, index) {//加载图片\r\n var _container = $(\"hq_\" + hqData[this._sMarket].id).firstChild.nextSibling;\r\n var _img = new Image();\r\n _img.src = [aSet[2], aSet[2].indexOf('?') >= 0 ? '&' : \"?\", 'r=' + (new Date()).getTime()].join(\"\");\r\n if (_img.onreadystatechange) {\r\n _img.onreadystatechange = this.insertBc.Bind(this, _container, _img, aSet[3]);\r\n } else {\r\n _img.onload = this.insertBc.Bind(this, _container, _img, aSet[3]);\r\n }\r\n },\r\n insertBc: function (_container, _img, _haslink) {//像目标容器填充图片\r\n if (_img.onreadystatechange) {\r\n if (_img.readyState != 'loaded' && _img.readyState != 'complete') return;\r\n }\r\n _container.innerHTML = \"\";\r\n if (_haslink != \"\") {\r\n var _link = $C(\"A\");\r\n _link.target = \"_blank\";\r\n _link.className = \"piclink\";\r\n _link.href = _haslink;\r\n _link.setAttribute(\"hideFocus\", true);\r\n _link.appendChild(_img);\r\n _container.appendChild(_link);\r\n } else {\r\n _container.appendChild(_img);\r\n }\r\n _img.height = 123;\r\n _img.width = 220;\r\n }\r\n };\r\n //window.StockIndex = StockIndex;\r\n \r\n/*\r\n var zjlxData = {\r\n CF_CSI: {//沪深\r\n id: \"CF_CSI\",\r\n set: ['http://data.eastmoney.com/zjlx/dpzjlx.html', '//cmsjs.eastmoney.com/data/zjlximg/zjlx_ls_min.png']\r\n },\r\n CF_SHA: {//沪市\r\n id: \"CF_SHA\",\r\n set: ['http://data.eastmoney.com/zjlx/zs000001.html', '//cmsjs.eastmoney.com/data/zjlximg/zjlx_sha_min.png']\r\n },\r\n CF_SZA: {//深市\r\n id: \"CF_SZA\",\r\n set: ['http://data.eastmoney.com/zjlx/zs399001.html', '//cmsjs.eastmoney.com/data/zjlximg/zjlx_sza_min.png']\r\n },\r\n CF_CYB: {//创业板\r\n id: \"CF_CYB\",\r\n set: ['http://data.eastmoney.com/zjlx/zs399006.html', '//cmsjs.eastmoney.com/data/zjlximg/zjlx_cyb_min.png']\r\n },\r\n CF_SHB: {//沪B\r\n id: \"CF_SHB\",\r\n set: ['http://data.eastmoney.com/zjlx/zs000003.html', '//cmsjs.eastmoney.com/data/zjlximg/zjlx_shb_min.png']\r\n },\r\n CF_SZB: {//深B\r\n id: \"CF_SZB\",\r\n set: ['http://data.eastmoney.com/zjlx/zs399003.html', '//cmsjs.eastmoney.com/data/zjlximg/zjlx_szb_min.png']\r\n }\r\n };\r\n var CapitalFlows = {//资金流向\r\n tabObjs: [],\r\n imgFqc: 180000,\r\n activeImg: 0,\r\n apply: function (tabId, contentId, refBtn) {\r\n this._tabsElement = $(tabId);\r\n this._contentElement = $(contentId);\r\n if (refBtn) this._refreshElement = $(refBtn);\r\n this._initContent();\r\n this._tabCtrl = new MutualTab(this._tabsElement, this._contentElement, \"mouseover\", this.tabObjs, true);\r\n this._start();\r\n },\r\n _initContent: function () {//初始化主体结构\r\n var tabs = this._tabsElement;\r\n var tabContent = this._contentElement;\r\n var tempTabs = tabs.childNodes;\r\n\r\n var showStyle = '', innerContent = '';\r\n for (var i = 0; i < tempTabs.length; i++) {\r\n if (tempTabs[i].nodeType == 1) {\r\n this.tabObjs.push(this.show.Bind(this, zjlxData[tempTabs[i].id]));\r\n\r\n innerContent += '
    ';\r\n if (showStyle == '') showStyle = ' style=\"display:none;\"';\r\n innerContent += '';\r\n innerContent += '';\r\n innerContent += '
    ';\r\n }\r\n }\r\n tabContent.innerHTML = innerContent;\r\n },\r\n _start: function () {\r\n this._tabCtrl.showTab(0, this.show.Bind(this, zjlxData.CF_CSI));\r\n },\r\n show: function (aData) {\r\n this._sMarket = aData.id;\r\n this._oSetNow = aData.set;\r\n var _imgCallback = [];\r\n\r\n this._loadImg();\r\n //$(\"zjlx_\" + aData.id).lastChild.innerHTML = this._oSetNow[2];\r\n },\r\n _loadImg: function (sID) {//加载并开启自刷新图片\r\n if (this._refreshElement) {\r\n if (sID != undefined)\r\n this._refreshElement.onclick = this._loadImg.Bind(this, sID);\r\n else\r\n this._refreshElement.onclick = this._loadImg.Bind(this, 0);\r\n }\r\n\r\n if (this._imgtimeout) {\r\n window.clearTimeout(this._imgtimeout);\r\n }\r\n this._imgtimeout = window.setTimeout(this._loadImg.Bind(this), this.imgFqc);\r\n\r\n if (this._oSetNow[1] != \"\") {\r\n this._fillImg(this._oSetNow, sID)\r\n }\r\n },\r\n _fillImg: function (aSet, index) {\r\n var _container = $(\"zjlx_\" + this._sMarket).firstChild;\r\n var _img = new Image();\r\n _img.src = [aSet[1], aSet[1].indexOf('?') >= 0 ? '&' : \"?\", 'r=' + (new Date()).getTime()].join(\"\");\r\n if (_img.onreadystatechange) {\r\n _img.onreadystatechange = this.insertBc.Bind(this, _container, _img, aSet[0]);\r\n } else {\r\n _img.onload = this.insertBc.Bind(this, _container, _img, aSet[0]);\r\n }\r\n },\r\n insertBc: function (_container, _img, _haslink) {\r\n if (_img.onreadystatechange) {\r\n if (_img.readyState != 'loaded' && _img.readyState != 'complete') return;\r\n }\r\n _container.innerHTML = \"\";\r\n if (_haslink != \"\") {\r\n var _link = _container;\r\n _link.target = \"_blank\";\r\n _link.className = \"piclink\";\r\n _link.href = _haslink;\r\n _link.appendChild(_img);\r\n //_container.appendChild(_link);\r\n } else {\r\n _container.appendChild(_img);\r\n }\r\n\r\n //if(_haslink != \"\") {\r\n // var _link = $C(\"A\");\r\n // _link.target = \"_blank\";\r\n // _link.href = _haslink;\r\n // _link.setAttribute(\"hideFocus\",true);\r\n // _link.appendChild(_img);\r\n // _container.appendChild(_link);\r\n // } else {\r\n // _container.appendChild(_img);\r\n // }\r\n\r\n _img.height = 123;\r\n _img.width = 220;\r\n }\r\n };\r\n window.CapitalFlows = CapitalFlows;\r\n*/\r\n\r\n if (document.getElementById(\"hqzx\")) {\r\n StockIndex.apply('stockTabs', 'stockContent', 'refbtn_stock');\r\n }\r\n})();\r\n\r\n\r\n\r\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n//沪深股市\r\n(function () {\r\n var _hsgs = document.getElementById(\"Hsgs1\");\r\n if (!!_hsgs) {\r\n // 指数\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/ulist.np/get?secids=1.000001,0.399001&fields=f1,f2,f3,f4,f12,f13,f14,f104,f105,f106&fltt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data && json.data.diff) {\r\n var _html = '';\r\n for (var i = 0; i < 2; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n var shsz = \"上证\";\r\n var shszLinkUp = \"http://quote.eastmoney.com/center/list.html#10_0_0_u?sortType=C&sortRule=-1\";\r\n var shszLinkDown = \"http://quote.eastmoney.com/center/list.html#10_0_0_d?sortType=C&sortRule=1\";\r\n if (i == 1) {\r\n shsz = \"深证\";\r\n shszLinkUp = \"http://quote.eastmoney.com/center/list.html#20_0_0_u?sortType=C&sortRule=-1\";\r\n shszLinkDown = \"http://quote.eastmoney.com/center/list.html#20_0_0_d?sortType=C&sortRule=1\";\r\n }\r\n _html += '';\r\n }\r\n jQuery('#pointR').html(_html);\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n // 个股\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/clist/get?pn=1&pz=3&po=1&np=1&fltt=2&invt=2&fid=f62&fs=m:0+t:6,m:0+t:13,m:0+t:80,m:1+t:2&fields=f1,f2,f3,f8,f12,f13,f14,f152,f62&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data && json.data.diff) {\r\n var _html = '';\r\n for (var i = 0; i < 3; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n var zjlInfo = getZDFInfo(json.data.diff[i].f62);\r\n var cjl = \"-\";\r\n if (zjlInfo._class != \"\") {\r\n cjl = (parseFloat(json.data.diff[i].f62) / 10000).toFixed(0) + '万';\r\n }\r\n _html += '';\r\n }\r\n jQuery('#hsgsPStock').append(_html);\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n },\r\n error: function () {\r\n return false;\r\n }\r\n });\r\n\r\n function gshNum(str, strlength) {\r\n if (str === \"\" || str == \"-\") {\r\n return \"-\";\r\n } else {\r\n var dZdf = parseFloat(str);\r\n return dZdf.toFixed(strlength);\r\n }\r\n }\r\n\r\n function getZDFInfo(str) {\r\n if (str === \"\" || str == \"-\") {\r\n return { _class: \"\", _data: \"-\" };\r\n } else {\r\n var dZdf = parseFloat(str);\r\n if (dZdf > 0) {\r\n return { _class: \"red\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else if (dZdf < 0) {\r\n return { _class: \"green\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else {\r\n return { _class: \"\", _data: dZdf.toFixed(2) + \"%\" };\r\n }\r\n }\r\n }\r\n\r\n }\r\n})(jQuery);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n// 期权行情\r\n(function () {\r\n var _qqhq = document.getElementById(\"Qqhq1\");\r\n if (!!_qqhq) {\r\n // 标的\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/stock/get?secid=1.510050&fields=f43,f59,f152,f57,f58,f107,f169,f170&fltt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data) {\r\n var zdfInfo = getZDFInfo(json.data.f170);\r\n var _html = '
  • ' + json.data.f58 + '
  • ' + gshNum(json.data.f43, 3) + '
  • ' + gshNum(json.data.f169,3) + '
  • ' + zdfInfo._data + '
  • ';\r\n jQuery(\"#Qqbd\").append(_html);\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n // 认购\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/clist/get?pn=1&pz=2&po=1&np=1&fltt=2&invt=2&fid=f6&fs=m:10+t:173&fields=f1,f2,f3,f4,f5,f12,f13,f14&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n var _html = '';\r\n for (var i = 0; i < 2; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n _html += '';\r\n }\r\n jQuery(\"#Qqrengou\").append(_html);\r\n }\r\n });\r\n\r\n // 认沽\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/clist/get?pn=1&pz=2&po=1&np=1&fltt=2&invt=2&fid=f6&fs=m:10+t:174&fields=f1,f2,f3,f4,f5,f12,f13,f14&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n var _html = '';\r\n for (var i = 0; i < 2; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n _html += '';\r\n }\r\n jQuery(\"#Qqrengu\").append(_html);\r\n }\r\n });\r\n\r\n function gshNum(str,strlength) {\r\n if (str === \"\" || str == \"-\") {\r\n return \"-\";\r\n } else {\r\n var dZdf = parseFloat(str);\r\n return dZdf.toFixed(strlength);\r\n }\r\n }\r\n\r\n function getZDFInfo(str) {\r\n if (str === \"\" || str == \"-\") {\r\n return { _class: \"\", _data: \"-\" };\r\n } else {\r\n var dZdf = parseFloat(str);\r\n if (dZdf > 0) {\r\n return { _class: \"red\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else if (dZdf < 0) {\r\n return { _class: \"green\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else {\r\n return { _class: \"\", _data: dZdf.toFixed(2) + \"%\" };\r\n }\r\n }\r\n }\r\n\r\n }\r\n})(jQuery);\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\n// 全球主要指数\r\n(function () {\r\n var _zyzs = document.getElementById(\"Qqzyzs1\");\r\n if (!!_zyzs) {\r\n // 指数\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/ulist.np/get?secids=1.000001,100.HSI,100.DJIA,100.N225,100.FTSE,101.GC00Y,102.CL00Y,100.UDI&fields=f1,f2,f3,f4,f12,f13,f14&fltt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n var _html = '';\r\n for (var i = 0; i < 8; i++) {\r\n var zdfInfo = getZDFInfo(json.data.diff[i].f3);\r\n _html += '';\r\n }\r\n jQuery(\"#QqzyzsCon\").append(_html);\r\n\r\n }\r\n });\r\n\r\n function gshNum(str, strlength) {\r\n if (str === \"\" || str == \"-\") {\r\n return \"-\";\r\n } else {\r\n var dZdf = parseFloat(str);\r\n return dZdf.toFixed(strlength);\r\n }\r\n }\r\n\r\n function getZDFInfo(str) {\r\n if (str === \"\" || str == \"-\") {\r\n return { _class: \"\", _data: \"-\" };\r\n } else {\r\n var dZdf = parseFloat(str);\r\n if (dZdf > 0) {\r\n return { _class: \"red\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else if (dZdf < 0) {\r\n return { _class: \"green\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else {\r\n return { _class: \"\", _data: dZdf.toFixed(2) + \"%\" };\r\n }\r\n }\r\n }\r\n\r\n }\r\n})(jQuery);\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n(function () {\r\n if (jQuery(\"#StockCode_bar\").length > 0) {\r\n window.newsuggest = new suggest2017({\r\n inputid: 'StockCode_bar',\r\n offset: { left: 0, top: 0 },\r\n shownewtips: true,\r\n newtipsoffset: { left: 0, top: 0 }\r\n });\r\n }\r\n}());\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n(function () {\r\n if (jQuery(\"#StockCode_bar_sm_content\").length > 0) {\r\n window.newsuggest = new suggest2017({\r\n inputid: 'StockCode_bar_sm_content',\r\n offset: { left: -107, top: 0 },\r\n shownewtips: true,\r\n newtipsoffset: { left: -5, top: -4 }\r\n });\r\n }\r\n\r\n if (jQuery(\"#StockCode_bar_sm_list\").length > 0) {\r\n window.newsuggest = new suggest2017({\r\n inputid: 'StockCode_bar_sm_list',\r\n offset: { left: -107, top: 0 },\r\n shownewtips: false,\r\n newtipsoffset: { left: 0, top: 0 }\r\n });\r\n }\r\n \r\n}());\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n// 外汇行情\r\n(function () {\r\n var _whhq = document.getElementById(\"Whhq1\");\r\n if(!!_whhq){\r\n // 指数\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/stock/get?secid=100.UDI&fields=f43,f59,f152,f57,f58,f107,f169,f170&fltt=2&invt=2&ut=13697a1cc677c8bfa9a496437bfef419\",\r\n dataType: \"jsonp\",\r\n jsonp: \"cb\",\r\n success: function (json) {\r\n try {\r\n if (json && json.rc == 0 && json.data) {\r\n var zdfInfo = getZDFInfo(json.data.f170);\r\n var _html = '
  • ' + json.data.f58 + '
  • ' + gshNum(json.data.f43, json.data.f59) + '
  • ' + gshNum(json.data.f169, json.data.f59) + '
  • ' + zdfInfo._data + '
  • ';\r\n jQuery(\"#Whzs\").html(_html);\r\n }\r\n } catch (error) {\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n function gshNum(str, strlength) {\r\n if (str === \"\" || str == \"-\") {\r\n return \"-\";\r\n } else {\r\n var dZdf = parseFloat(str);\r\n return dZdf.toFixed(strlength);\r\n }\r\n }\r\n\r\n function getZDFInfo(str) {\r\n if (str === \"\" || str == \"-\") {\r\n return { _class: \"\", _data: \"-\" };\r\n } else {\r\n var dZdf = parseFloat(str);\r\n if (dZdf > 0) {\r\n return { _class: \"red\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else if (dZdf < 0) {\r\n return { _class: \"green\", _data: dZdf.toFixed(2) + \"%\" };\r\n } else {\r\n return { _class: \"\", _data: dZdf.toFixed(2) + \"%\" };\r\n }\r\n }\r\n }\r\n }\r\n})(jQuery);\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n(function () {\r\n var len = 4; // 记录条数\r\n\r\n // 获取cookie\r\n this.GetCookie = function (name) {\r\n var dc = document.cookie;\r\n var prefix = name + \"=\";\r\n var begin = dc.indexOf(\"; \" + prefix);\r\n if (begin == -1) {\r\n begin = dc.indexOf(prefix);\r\n if (begin != 0) { return null };\r\n }\r\n else {\r\n begin += 2;\r\n }\r\n var end = document.cookie.indexOf(\";\", begin);\r\n if (end == -1) {\r\n end = dc.length;\r\n }\r\n return unescape(dc.substring(begin + prefix.length, end));\r\n };\r\n\r\n var def = [\"a-sh-600000-浦发银行\", \"a-sz-300017-网宿科技\", \"a-sh-600020-中原高速\", \"a-sh-600005-武钢股份\"];\r\n\r\n this.mb = { \"a\": \"http://quote.eastmoney.com/[#MARKET#][#CODE#].html\", \"b\": \"http://guba.eastmoney.com/topic,[#CODE#].html\", \"c\": \"http://fund.eastmoney.com/[#CODE#].html\", \"d\": \"http://quote.eastmoney.com/hk/[#CODE#].html\", \"e\": \"http://quote.eastmoney.com/gzqh/[#CODE#].html\", \"f\": \"http://quote.eastmoney.com/zs[#CODE#].html\", \"g\": \"http://quote.eastmoney.com/qihuo/[#CODE#].html\", \"h\": \"http://quote.eastmoney.com/hk/[#CODE#].html\", \"i\": \"http://quote.eastmoney.com/hk/zs[#CODE#].html\", \"j\": \"http://quote.eastmoney.com/us/[#CODE#].html\", \"k\": \"http://quote.eastmoney.com/forex/[#CODE#].html\", \"l\": \"http://quote.eastmoney.com/[#MARKET#][#CODE#].html\", \"m\": \"http://quote.eastmoney.com/gb/zs[#CODE#].html\", \"n\": \"http://quote.eastmoney.com/gjqh/[#CODE#].html\", \"o\": \"http://quote.eastmoney.com/qiquan/[#CODE#]_[#MARKET#].html\", \"p\": \"http://quote.eastmoney.com/3ban/[#MARKET#][#CODE#].html\" };\r\n if (this.GetCookie(\"em_hq_fls\") == \"new\") {\r\n this.mb.a = \"http://quote.eastmoney.com/flash/[#MARKET#][#CODE#].html\";\r\n }\r\n //[类型(a:行情,b:股吧,c:基金,d:港股,e:股指期货,f:大盘指数,g:期货,h:港股,i:港股指数,j:美股,k:外汇,l:债券,m:全球指数,n:国际期货,o:期权,p:3板),市场(没有为0),代码,名称]\r\n this.len = len;\r\n this.addlen = 0;\r\n this.ret = [];\r\n\r\n this.init = function () {\r\n this.ReadInfo();\r\n };\r\n this.ReadInfo = function () {\r\n try {\r\n var Str = \"
    最近访问股:
    \";\r\n if (document.getElementById(\"Zjfw1\")) {\r\n document.getElementById(\"Zjfw1\").innerHTML = Str;\r\n }\r\n } catch (e) {\r\n\r\n }\r\n }\r\n this.init();\r\n})(jQuery);\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\n\r\n//美元兑指定货币缓存\r\nvar ExRate = {\r\n USD: 1, //美元\r\n EUR: 0, //欧元\r\n GBP: 0, //英镑\r\n AUD: 0, //澳元\r\n JPY: 0, //日元\r\n CHF: 0, //瑞郎\r\n CAD: 0, //加元\r\n HKD: 0, //港币\r\n CNY: 0 //人民币 \r\n};\r\n\r\n/*\r\n\tf\t- 原货币\r\n\tt\t- 兑换货币\r\n\tfn\t- 回调函数\r\n*/\r\nfunction getExRate(f, t, fn) {\r\n var i = 0;\r\n var update = function (r, b) {\r\n i++;\r\n if (i > 3) return false;\r\n var mod = r + \"USD\";\r\n if (b == null || b == false) {\r\n b = false;\r\n mod = \"USD\" + r;\r\n } else {\r\n b = true;\r\n mod = r + \"USD\";\r\n }\r\n jQuery.ajax({\r\n type: \"GET\",\r\n url: \"//push2.eastmoney.com/api/qt/stock/get?fltt=2&fields=f43,f57,f58,f107&secid=133.\" + mod + \"&ut=fa5fd1943c7b386f172d6893dbfba10b&cb=?\",\r\n dataType: \"jsonp\",\r\n success: function (json) {\r\n try {\r\n var val = json.data.f43;\r\n if (typeof val != \"undefined\" && !isNaN(val) && val != 0) {\r\n val = (b == false) ? val : parseFloat(1 / val);\r\n eval(\"ExRate.\" + r + \" =\" + val);\r\n cal();\r\n } else {\r\n if (b == null || b == false) {\r\n update(r, true);\r\n } else {\r\n cal(false);\r\n }\r\n }\r\n } catch (e) { }\r\n }\r\n });\r\n }\r\n var cal = function (state) {\r\n if (state != null) { //没有取到汇率\r\n obj.value = \"...\";\r\n return false;\r\n }\r\n var rate1 = eval(\"ExRate.\" + f);\r\n var rate2 = eval(\"ExRate.\" + t);\r\n var rate = 1;\r\n if (isNaN(rate1) || rate1 == 0) {\r\n update(f);\r\n } else if (isNaN(rate2) || rate2 == 0) {\r\n update(t);\r\n } else {\r\n rate = parseFloat(rate2) / parseFloat(rate1);\r\n fn(rate);\r\n }\r\n };\r\n cal();\r\n}\r\n\r\nfunction glodconv(obj1, obj2, t) {\r\n var val = obj1.value;\r\n obj2.value = \"\";\r\n if (val == null || val == \"\") {\r\n alert(\"请输入需要换算的金额!\");\r\n return false;\r\n } else if (isNaN(val)) {\r\n alert(\"换算的金额必须是数字!\");\r\n return false;\r\n } else if (val < 0) {\r\n alert(\"金额必须大于等于0!\");\r\n return false;\r\n }\r\n var fn = function (x) {\r\n obj2.value = val * x;\r\n }\r\n if (t == 0) {\r\n getExRate(\"USD\", \"CNH\", function (r) {\r\n obj2.value = (val * r / 31.1035).toFixed(2);\r\n });\r\n } else {\r\n getExRate(\"CNH\", \"USD\", function (r) {\r\n obj2.value = (val * r * 31.1035).toFixed(2);\r\n\r\n });\r\n }\r\n}\r\n\r\njQuery(\".gold_calc1\").on(\"click\",function(){\r\n glodconv(document.getElementById(\"usprice_1\"),document.getElementById(\"cnprice_1\"),0);\r\n});\r\n\r\njQuery(\".gold_calc2\").on(\"click\",function(){\r\n glodconv(document.getElementById(\"cnprice_2\"),document.getElementById(\"usprice_2\"),1);\r\n});\n\n/***/ }),\n/* 16 */,\n/* 17 */,\n/* 18 */,\n/* 19 */,\n/* 20 */,\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(8);//沪深股市\r\n__webpack_require__(13);//外汇行情\r\n__webpack_require__(6);//黄金行情\r\n__webpack_require__(9);//期权行情\r\n__webpack_require__(10);//全球主要指数\r\n__webpack_require__(7);//行情中心\r\n__webpack_require__(11);//小搜索框\r\n__webpack_require__(12);//大搜索框\r\n__webpack_require__(14);//最近访问股\r\n__webpack_require__(5);//港股行情\r\n__webpack_require__(4);//财经视频\r\n__webpack_require__(15);//黄金计算器\r\n\r\n\r\nfunction getElementsByClassName(fatherId, tagName, cName) {\r\n var node = fatherId && document.getElementById(fatherId) || document;\r\n tagName = tagName || \"*\";\r\n cName = cName.split(\" \");\r\n var classNameLength = cName.length;\r\n var len = null;\r\n var i = null;\r\n for (i = 0, len = classNameLength; i < len; i++) {\r\n //创建匹配类名的正则\r\n cName[i] = new RegExp(\"(^|\\\\s)\" + cName[i].replace(/\\-/g, \"\\\\-\") + \"(\\\\s|$)\");\r\n }\r\n var elements = node.getElementsByTagName(tagName);\r\n var result = [];\r\n var n = 0;\r\n for (i = 0, len = elements.length; i < len; i++) {\r\n var element = elements[i];\r\n while (cName[n++].test(element.className)) { //优化循环\r\n if (n === classNameLength) {\r\n result[result.length] = element;\r\n break;\r\n }\r\n }\r\n n = 0;\r\n }\r\n return result;\r\n}\r\n\r\nfunction newsListMouseover() {\r\n var parentElement = document.getElementById(\"newsListContent\"),\r\n lis = parentElement.getElementsByTagName(\"li\"),\r\n len = lis.length,\r\n i;\r\n len = lis.length;\r\n //每个li 的鼠标移入事件\r\n for (i = 0; i < len; i++) {\r\n lis[i].onmouseover = function () {\r\n this.style.backgroundColor = \"#f7f7f7\";\r\n };\r\n lis[i].onmouseout = function () {\r\n this.style.backgroundColor = \"\";\r\n };\r\n }\r\n}\r\n\r\nfunction initPaging(totleCount){\r\n console.log(totleCount);\r\n if (totleCount > 1000) {\r\n totleCount = 1000;\r\n }\r\n var totlePage = parseInt(totleCount / __PageSize);\r\n if (totleCount % __PageSize != 0) {\r\n totlePage++;\r\n }\r\n console.log(\"totlePage\",totlePage);\r\n var pagesLinks = \"\";\r\n if (__PageIndex != 1) {\r\n // pagesLinks += \"上一页\";\r\n pagesLinks += \"上一页\";\r\n }\r\n else {\r\n pagesLinks += \"上一页\";\r\n }\r\n var startPage = 1;\r\n var endPage = totlePage;\r\n if (endPage > 5) {\r\n if (__PageIndex > 3) {\r\n startPage = __PageIndex - 2;\r\n endPage = __PageIndex + 2;\r\n }\r\n else {\r\n endPage = 5;\r\n }\r\n if (endPage > totlePage) {\r\n startPage = totlePage - 4;\r\n endPage = totlePage;\r\n }\r\n }\r\n if (startPage > 1) {\r\n // pagesLinks += \"1\";\r\n pagesLinks += \"1\";\r\n if(startPage > 2){\r\n pagesLinks += \"...\";\r\n }\r\n }\r\n for (var i = startPage; i <= endPage; i++) {\r\n if (__PageIndex == i) {\r\n pagesLinks += \"\" + i + \"\";\r\n }\r\n else {\r\n // pagesLinks += \"\" + i + \"\";\r\n pagesLinks += \"\" + i + \"\";\r\n }\r\n }\r\n if (endPage < totlePage) {\r\n if(endPage < totlePage - 1){\r\n pagesLinks += \"...\";\r\n }\r\n // pagesLinks += \"\" + totlePage + \"\";\r\n pagesLinks += \"\" + totlePage + \"\";\r\n\r\n }\r\n if (__PageIndex < totlePage) {\r\n // pagesLinks += \"下一页\";\r\n pagesLinks += \"下一页\";\r\n }\r\n else {\r\n pagesLinks += \"下一页\";\r\n }\r\n\r\n jQuery(\"#pagerNoDiv\").html(pagesLinks);\r\n\r\n}\r\n\r\nfunction convertToNewsListDate(_date) {\r\n var reg =/(\\d{4})\\-(\\d{2})\\-(\\d{2}) (\\d{2}:\\d{2})/;\r\n // console.log(_date,_date.match(reg));\r\n // console.log(_date,_date.replace(reg,\"$1年$2月$3日 $4\"));\r\n if(_date.length > 16){\r\n _date = _date.substr(0, 16).replace(reg,\"$1年$2月$3日 $4\");\r\n }\r\n return _date;\r\n}\r\n\r\nfunction initColumnList(_json){\r\n var _html = \"\";\r\n if(_json && _json.data && _json.data.list){\r\n for (var i = 0; i < _json.data.list.length; i++) {\r\n var item = _json.data.list[i];\r\n\r\n var charsize = 100;\r\n var style = \"text text-no-img\";\r\n\r\n var _url = \"https://finance.eastmoney.com/a/\"+item.code+\".html\";\r\n if(item.np_dst == \"CFH\"){\r\n _url = \"http://caifuhao.eastmoney.com/news/\"+item.code;\r\n }\r\n _html += '
  • '\r\n if(item.image && item.image != \"\"){\r\n _html += '
    ';\r\n _html += '';\r\n _html += '';\r\n _html += '';\r\n _html += '
    ';\r\n charsize = 80;\r\n style = \"text\";\r\n }\r\n\r\n var _des_all = (item.summary && item.summary != \"\") ? item.summary : \"\";\r\n var _des = _des_all;\r\n if(_des.length > charsize){\r\n _des = _des.substr(0,charsize) + \"...\";\r\n }\r\n\r\n _html += '
    ';\r\n _html += '

    ';\r\n _html += '' + item.title + '';\r\n _html += '

    ';\r\n _html += '

    '+_des+'

    ';\r\n _html += '

    '+convertToNewsListDate(item.showTime)+'

    ';\r\n _html += '
    ';\r\n _html += '
  • ';\r\n }\r\n\r\n initPaging(_json.data.totle_hits);\r\n }\r\n\r\n jQuery(\"#newsListContent\").html(_html);\r\n \r\n newsListMouseover();\r\n}\r\n\r\nfunction initSCColumnList(_json){\r\n var _html = \"\";\r\n if(_json && _json.data && _json.data.list){\r\n for (var i = 0; i < _json.data.list.length; i++) {\r\n var item = _json.data.list[i];\r\n\r\n var _url = \"https://finance.eastmoney.com/a/\"+item.code+\".html\";\r\n if(item.np_dst == \"CFH\"){\r\n _url = \"http://caifuhao.eastmoney.com/news/\"+item.code;\r\n }\r\n if(i % 10 == 0){\r\n _html += '
  • ';\r\n } else if(i % 10 == 9){\r\n _html += '
  • ';\r\n }else{\r\n _html += '
  • ';\r\n }\r\n _html += '';\r\n _html += ''+item.title+'';\r\n _html += ''+convertToNewsListDate(item.showTime)+'';\r\n _html += '';\r\n _html += '
  • ';\r\n \r\n }\r\n\r\n initPaging(_json.data.totle_hits);\r\n }\r\n\r\n jQuery(\"#newsListContent\").html(_html);\r\n \r\n newsListMouseover();\r\n}\r\n\r\nfunction getQueryString(name) {\r\n var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')\r\n var r = window.location.search.substr(1).match(reg)\r\n if (r != null) return unescape(r[2])\r\n return null;\r\n }\r\nwindow.initNewsList = function (){\r\n window.scrollTo( 0, 0 );\r\n if(__PageIndex < 1 || __PageIndex > 50){\r\n __PageIndex = 1;\r\n }\r\n var _URL = \"https://np-listapi.eastmoney.com/comm/web/getNewsByColumns?client=web&biz=web_news_col&column=#id#&order=1&needInteractData=0&page_index=#pageindex#&page_size=#pagesize#&req_trace=#guid#&fields=code,showTime,title,mediaName,summary,image,url,uniqueUrl,Np_dst&types=1,20&callback=?\";\r\n if(__Type === \"2\"){\r\n _URL = \"https://np-listapi.eastmoney.com/comm/web/getNewsByScColumns?client=web&biz=web_news_sccol&scColumns=#id#&order=1&page_index=#pageindex#&page_size=#pagesize#&req_trace=#guid#&fields=code,showTime,title,mediaName,summary,realSort,image,url,uniqueUrl,Np_dst&types=1,20&callback=?\";\r\n }\r\n\r\n\r\n if(getQueryString(\"env\") == \"uat\"){\r\n _URL = _URL.replace(\"//np-listapi.eastmoney.com\",\"//np-listapi-uat.eastmoney.com\");\r\n }\r\n\r\n _URL = _URL.replace(\"#id#\",__ColumnId);\r\n _URL = _URL.replace(\"#pageindex#\",__PageIndex);\r\n _URL = _URL.replace(\"#pagesize#\",__PageSize);\r\n _URL = _URL.replace(\"#guid#\",(new Date()).getTime());\r\n\r\n console.log(_URL);\r\n\r\n jQuery.ajax({\r\n url: _URL,\r\n dataType: 'jsonp',\r\n success: function(_json){\r\n console.log(_json);\r\n if(__Type === \"1\"){\r\n initColumnList(_json);\r\n }else{\r\n initSCColumnList(_json);\r\n }\r\n }\r\n });\r\n}\r\n\r\njQuery(document).ready(function(){ \r\n try {\r\n initNewsList();\r\n } catch (error) {\r\n \r\n }\r\n});\r\n \r\n\n\n/***/ })\n/******/ ]);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgYTdhZWJiOWZhNjhmYjMzY2RkMjgiLCJ3ZWJwYWNrOi8vLy4vanMvbW9kdWxlcy9saXN0L0VNX0Nqc3BfMS5qcyIsIndlYnBhY2s6Ly8vLi9qcy9tb2R1bGVzL2xpc3QvRU1fR2docV8xLmpzIiwid2VicGFjazovLy8uL2pzL21vZHVsZXMvbGlzdC9FTV9IamhxXzEuanMiLCJ3ZWJwYWNrOi8vLy4vanMvbW9kdWxlcy9saXN0L0VNX0hxenhfMS5qcyIsIndlYnBhY2s6Ly8vLi9qcy9tb2R1bGVzL2xpc3QvRU1fSHNnc18xLmpzIiwid2VicGFjazovLy8uL2pzL21vZHVsZXMvbGlzdC9FTV9RcWhxXzEuanMiLCJ3ZWJwYWNrOi8vLy4vanMvbW9kdWxlcy9saXN0L0VNX1Fxenl6c18xLmpzIiwid2VicGFjazovLy8uL2pzL21vZHVsZXMvbGlzdC9FTV9TZWFyY2hfbGcuanMiLCJ3ZWJwYWNrOi8vLy4vanMvbW9kdWxlcy9saXN0L0VNX1NlYXJjaF9zbS5qcyIsIndlYnBhY2s6Ly8vLi9qcy9tb2R1bGVzL2xpc3QvRU1fV2hocV8xLmpzIiwid2VicGFjazovLy8uL2pzL21vZHVsZXMvbGlzdC9FTV9aamZ3XzEuanMiLCJ3ZWJwYWNrOi8vLy4vanMvbW9kdWxlcy9saXN0L2dvbGRfY2FsYy5qcyIsIndlYnBhY2s6Ly8vLi9qcy9uZXdzbGlzdGJlZm9yZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBLDJDQUEyQyxjQUFjOztRQUV6RDtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBLEtBQUs7UUFDTDtRQUNBOztRQUVBO1FBQ0E7UUFD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QUVBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1Qiw0QkFBNEI7QUFDbkQ7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsNEJBQTRCO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBLGtDO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQSxDQUFDIiwiZmlsZSI6Im5ld3NsaXN0YmVmb3JlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gaWRlbnRpdHkgZnVuY3Rpb24gZm9yIGNhbGxpbmcgaGFybW9ueSBpbXBvcnRzIHdpdGggdGhlIGNvcnJlY3QgY29udGV4dFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5pID0gZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHtcbiBcdFx0XHRcdGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuIFx0XHRcdFx0Z2V0OiBnZXR0ZXJcbiBcdFx0XHR9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAyMSk7XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gd2VicGFjay9ib290c3RyYXAgYTdhZWJiOWZhNjhmYjMzY2RkMjgiLCLvu79qUXVlcnkubm9Db25mbGljdCgpO1xyXG47IChmdW5jdGlvbiAoJCkge1xyXG4gICAgdmFyIFN0b2NrSEsgPSB7XHJcbiAgICAgICAgaW5pdDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBTdG9ja0hLLnZpZGVvUGxheSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdmlkZW9QbGF5OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICgkKFwiLnJvbGxcIikubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgJChcIi5yb2xsaW1nbGlzdCBsaVwiKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKFwicm9sbGltZ1wiKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdGhpc2luZGV4ID0gJCh0aGlzKS5pbmRleCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cihcIm5vd3BvXCIsIHRoaXNpbmRleCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNpbmRleCA+IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhcImxkc25cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKFwibFwiICsgKHRoaXNpbmRleCArIDEpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICQoXCIucm9sbGltZzpub3QoOmVxKDEpKVwiKS5jc3MoXCJvcGFjaXR5XCIsIFwiMC4yXCIpO1xyXG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gcm9sbGltZ3RvKGkpIHtcclxuICAgICAgICAgICAgICAgICAgICAkKFwiLnJvbGxpbWd0eHRcIikucmVtb3ZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgJChcIi5yb2xsaW1nbGlzdCBhIGltZ1wiKS51bndyYXAoKTsgICAvLyDliKDpmaRh5qCH562+XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvbGxpbWdwbyA9IFt7IFwibGVmdFwiOiAxMCwgXCJ0b3BcIjogMTksIFwiemluZGV4XCI6IDksIFwid2lkdGhcIjogMTY0LCBcImhlaWdodFwiOiA5MiwgXCJvcGFjaXR5XCI6IDAuMiB9LCB7IFwibGVmdFwiOiA0NSwgXCJ0b3BcIjogMTIsIFwiemluZGV4XCI6IDEwLCBcIndpZHRoXCI6IDE5MSwgXCJoZWlnaHRcIjogMTA3LCBcIm9wYWNpdHlcIjogMSB9LCB7IFwibGVmdFwiOiAxMDYsIFwidG9wXCI6IDE5LCBcInppbmRleFwiOiA5LCBcIndpZHRoXCI6IDE2NCwgXCJoZWlnaHRcIjogOTIsIFwib3BhY2l0eVwiOiAwLjIgfV07XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvbGxpbWdsZW5naHQgPSAkKFwiLnJvbGxpbWdcIikubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgICAgICQoXCIucm9sbGltZ1wiKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHFpbmRleCA9IHBhcnNlSW50KCQodGhpcykuYXR0cihcIm5vd3BvXCIpKTsgLy/nm67liY3kvY3nva5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRvaW5kZXggPSAocWluZGV4ICsgaSArIHJvbGxpbWdsZW5naHQpICUgcm9sbGltZ2xlbmdodDsgLy/nm67moIfkvY3nva5cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRoaXNpbWcgPSAkKHRoaXMpLmNoaWxkcmVuKFwiaW1nXCIpOyAvL+S4i+mdoueahOWbvueJh1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoXCJub3dwb1wiLCB0b2luZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvaW5kZXggPiAyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmNzcyhcImRpc3BsYXlcIiwgXCJub25lXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jc3MoXCJkaXNwbGF5XCIsIFwiYmxvY2tcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmFuaW1hdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHJvbGxpbWdwb1t0b2luZGV4XS5sZWZ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogcm9sbGltZ3BvW3RvaW5kZXhdLnRvcCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiByb2xsaW1ncG9bdG9pbmRleF0ub3BhY2l0eVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMzAwLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jc3MoXCJ6LWluZGV4XCIsIHJvbGxpbWdwb1t0b2luZGV4XS56aW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2luZGV4ID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc2ltZy5hZnRlcignPGRpdiBjbGFzcz1cInJvbGxpbWd0eHRcIj4nICsgdGhpc2ltZy5hdHRyKCdhbHQnKSArICc8L2Rpdj4nKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS53cmFwSW5uZXIoXCI8YSBocmVmPSdcIiArIHRoaXNpbWcuYXR0cignaWxpbmsnKSArIFwiJyB0YXJnZXQ9J19ibGFuayc+PC9hPlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNpbWcuYW5pbWF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHJvbGxpbWdwb1t0b2luZGV4XS53aWR0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHJvbGxpbWdwb1t0b2luZGV4XS5oZWlnaHRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDMwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICQoXCIucm9sbGltZ1wiKS5lcSgxKS5hcHBlbmQoJzxkaXYgY2xhc3M9XCJyb2xsaW1ndHh0XCI+JyArICQoXCIucm9sbGltZ1wiKS5lcSgxKS5jaGlsZHJlbihcImltZ1wiKS5hdHRyKCdhbHQnKSArICc8L2Rpdj4nKTtcclxuICAgICAgICAgICAgICAgICQoXCIucm9sbGltZ1wiKS5lcSgxKS53cmFwSW5uZXIoJzxhIGhyZWY9XCInICsgJChcIi5yb2xsaW1nXCIpLmVxKDEpLmNoaWxkcmVuKFwiaW1nXCIpLmF0dHIoJ2lsaW5rJykgKyAnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+PC9hPicpO1xyXG4gICAgICAgICAgICAgICAgJChcIi5yb2xsaW1nXCIpLmNsaWNrKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcWNpbmRleCA9IHBhcnNlSW50KCQodGhpcykuYXR0cihcIm5vd3BvXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocWNpbmRleCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGxpbWd0bygxKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocWNpbmRleCA9PSAyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGxpbWd0bygtMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGltZXJvbGw7XHJcbiAgICAgICAgICAgICAgICB0aW1lcm9sbCA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICByb2xsaW1ndG8oLTEpO1xyXG4gICAgICAgICAgICAgICAgfSwgNTAwMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgJChcIi5yb2xsXCIpLm1vdXNlZW50ZXIoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXJvbGwpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAkKFwiLnJvbGxcIikubW91c2VsZWF2ZShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGltZXJvbGwgPSBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGxpbWd0bygtMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgNTAwMCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIFN0b2NrSEsuaW5pdCgpO1xyXG59KShqUXVlcnkpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vanMvbW9kdWxlcy9saXN0L0VNX0Nqc3BfMS5qc1xuLy8gbW9kdWxlIGlkID0gNFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCLvu78vLyDmuK/ogqHooYzmg4VcclxuKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBfZ2docSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiR2docTFcIik7XHJcbiAgICBpZiAoISFfZ2docSkge1xyXG4gICAgICAgIC8vIOaMh+aVsFxyXG4gICAgICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcclxuICAgICAgICAgICAgdXJsOiBcIi8vcHVzaDIuZWFzdG1vbmV5LmNvbS9hcGkvcXQvc3RvY2svZ2V0P3NlY2lkPTEwMC5IU0kmZmllbGRzPWY0MyxmNDgsZjU5LGYxNTIsZjU3LGY1OCxmMTA3LGYxNjksZjE3MCZmbHR0PTImaW52dD0yJnV0PTEzNjk3YTFjYzY3N2M4YmZhOWE0OTY0MzdiZmVmNDE5XCIsXHJcbiAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25wXCIsXHJcbiAgICAgICAgICAgIGpzb25wOiAnY2InLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoanNvbikge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoanNvbiAmJiBqc29uLnJjID09IDAgJiYganNvbi5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB6ZGZJbmZvID0gZ2V0WkRGSW5mbyhqc29uLmRhdGEuZjE3MCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9ICc8bGk+PGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VuaWZ5L3IvJyArIGpzb24uZGF0YS5mMTA3ICsgJy4nICsganNvbi5kYXRhLmY1NyArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsganNvbi5kYXRhLmY1OCArICc8L2E+PC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIGpzb24uZGF0YS5mNDMgKyAnPC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnIHRoaXJkXCI+JyArIHpkZkluZm8uX2RhdGEgKyAnPC9saT48bGk+JyArIGdldEdTSE51bShqc29uLmRhdGEuZjQ4LCBcIlwiICwgMikgKyAnPC9saT4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI0dnSHN6c1wiKS5hcHBlbmQoaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8g5q+U5Lu3XHJcbiAgICAgICAgalF1ZXJ5LmFqYXgoe1xyXG4gICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICB1cmw6IFwiLy9wdXNoMi5lYXN0bW9uZXkuY29tL2FwaS9xdC9jbGlzdC9nZXQ/cG49MSZwej0zJnBvPTEmbnA9MSZmbHR0PTImaW52dD0yJmZpZD1mMyZmcz1iOk1LMDEwMSZmaWVsZHM9ZjEsZjIsZjMsZjQsZjEyLGYxMyxmMTQsZjE1MixmMTg1LGYxODYsZjE4NyxmMTg4LGYxODksZjE5MSxmMTkyLGYxOTMmdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTlcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnA6ICdjYicsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChqc29uKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChqc29uICYmIGpzb24ucmMgPT0gMCAmJiBqc29uLmRhdGEgJiYganNvbi5kYXRhLmRpZmYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB6ZGZJbmZvQSA9IGdldFpERkluZm8oanNvbi5kYXRhLmRpZmZbaV0uZjE4Nyk7Ly9B6IKh5rao6LeM5bmF5Yik5patXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgemRmSW5mb0cgPSBnZXRaREZJbmZvKGpzb24uZGF0YS5kaWZmW2ldLmY0KTsvL+a4r+iCoea2qOi3jOmineWIpOaWrVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHlqYkluZm8gPSBnZXRaREZJbmZvKGpzb24uZGF0YS5kaWZmW2ldLmYxODgpOy8v5rqi5Lu35q+UXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9ICc8dWw+PGxpIGNsYXNzPVwiZmlyc3RcIj48YSBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8nICsganNvbi5kYXRhLmRpZmZbaV0uZjEzICsgJy4nICsganNvbi5kYXRhLmRpZmZbaV0uZjEyICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiPicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTkzICsgJzwvYT48L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvQS5fY2xhc3MgKyAnXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmYxODYgKyAnPC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mb0cuX2NsYXNzICsgJ1wiPicgKyBqc29uLmRhdGEuZGlmZltpXS5mMiArICc8L2xpPjxsaT4nICsganNvbi5kYXRhLmRpZmZbaV0uZjE4OSArICc8L2xpPjxsaSBjbGFzcz1cIicgKyB5amJJbmZvLl9jbGFzcyArICdcIj4nICsgeWpiSW5mby5fZGF0YSArICc8L2xpPjwvdWw+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjR2dialwiKS5hcHBlbmQoaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8g6LWE6YeRXHJcbiAgICAgICAgalF1ZXJ5LmFqYXgoe1xyXG4gICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICB1cmw6IFwiLy9wdXNoMi5lYXN0bW9uZXkuY29tL2FwaS9xdC9rYW10L2dldD9maWVsZHMxPWYxLGYyLGYzLGY0JmZpZWxkczI9ZjUxLGY1MiZ1dD0xMzY5N2ExY2M2NzdjOGJmYTlhNDk2NDM3YmZlZjQxOVwiLFxyXG4gICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxyXG4gICAgICAgICAgICBqc29ucDogJ2NiJyxcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24gJiYganNvbi5yYyA9PSAwICYmIGpzb24uZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2hrMnNo5rKq6IKh6YCaXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZ3RMUiA9IGdldEdTSE51bShwYXJzZUZsb2F0KGpzb24uZGF0YS5oazJzaC5kYXlOZXRBbXRJbikgKiAxMDAwMCwgXCJcIiwgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNoZ3RJbmZsb3dcIikuaHRtbChoZ3RMUik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoZ3RJbmZvID0gZ2V0WkRGSW5mbyhqc29uLmRhdGEuaGsyc2guZGF5TmV0QW10SW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGd0SW5mby5fY2xhc3MgIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI2hndEluZmxvd1wiKS5hZGRDbGFzcyhoZ3RJbmZvLl9jbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGd0SW5mby5fY2xhc3MgPT0gXCJncmVlblwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI2hndEluZmxvd1wiKS5iZWZvcmUoXCI8c3Bhbj7otYTph5Hlh4DmtYHlh7o8L3NwYW4+XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNoZ3RJbmZsb3dcIikuaHRtbChoZ3RMUi5yZXBsYWNlKFwiLVwiLCBcIlwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNoZ3RJbmZsb3dcIikuYmVmb3JlKFwiPHNwYW4+6LWE6YeR5YeA5rWB5YWlPC9zcGFuPlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNoZ3RJbmZsb3dcIikuYmVmb3JlKFwiPHNwYW4+6LWE6YeR5YeA5rWB5YWlPC9zcGFuPlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIuaGd0c3RhdHVzXCIpLmh0bWwoZ2V0SFNHVFN0YXR1cyhqc29uLmRhdGEuaGsyc2guc3RhdHVzKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc29uLmRhdGEuaGsyc2guc3RhdHVzID09IDQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNoZ3RJbmZsb3dcIikucGFyZW50KCkuaHRtbChcIi1cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vc2gyaGvmuK/ogqHpgJoo5rKqKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ2d0aExSID0gZ2V0R1NITnVtKHBhcnNlRmxvYXQoanNvbi5kYXRhLnNoMmhrLmRheU5ldEFtdEluKSAqIDEwMDAwLCBcIlwiLCAyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI2dndGhJbmZsb3dcIikuaHRtbChnZ3RoTFIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ2d0aEluZm8gPSBnZXRaREZJbmZvKGpzb24uZGF0YS5zaDJoay5kYXlOZXRBbXRJbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZ3RoSW5mby5fY2xhc3MgIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI2dndGhJbmZsb3dcIikuYWRkQ2xhc3MoZ2d0aEluZm8uX2NsYXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZ3RoSW5mby5fY2xhc3MgPT0gXCJncmVlblwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI2dndGhJbmZsb3dcIikuYmVmb3JlKFwiPHNwYW4+6LWE6YeR5YeA5rWB5Ye6PC9zcGFuPlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjZ2d0aEluZmxvd1wiKS5odG1sKGdndGhMUi5yZXBsYWNlKFwiLVwiLCBcIlwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNnZ3RoSW5mbG93XCIpLmJlZm9yZShcIjxzcGFuPui1hOmHkeWHgOa1geWFpTwvc3Bhbj5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjZ2d0aEluZmxvd1wiKS5iZWZvcmUoXCI8c3Bhbj7otYTph5Hlh4DmtYHlhaU8L3NwYW4+XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIi5nZ3Roc3RhdHVzXCIpLmh0bWwoZ2V0SFNHVFN0YXR1cyhqc29uLmRhdGEuc2gyaGsuc3RhdHVzKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc29uLmRhdGEuc2gyaGsuc3RhdHVzID09IDQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNnZ3RoSW5mbG93XCIpLnBhcmVudCgpLmh0bWwoXCItXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2hrMnN65rex6IKh6YCaXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZ3RMUiA9IGdldEdTSE51bShwYXJzZUZsb2F0KGpzb24uZGF0YS5oazJzei5kYXlOZXRBbXRJbikgKiAxMDAwMCwgXCJcIiwgMik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNzZ3RJbmZsb3dcIikuaHRtbChzZ3RMUik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZ3RJbmZvID0gZ2V0WkRGSW5mbyhqc29uLmRhdGEuaGsyc3ouZGF5TmV0QW10SW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2d0SW5mby5fY2xhc3MgIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI3NndEluZmxvd1wiKS5hZGRDbGFzcyhzZ3RJbmZvLl9jbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2d0SW5mby5fY2xhc3MgPT0gXCJncmVlblwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI3NndEluZmxvd1wiKS5iZWZvcmUoXCI8c3Bhbj7otYTph5Hlh4DmtYHlh7o8L3NwYW4+XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNzZ3RJbmZsb3dcIikuaHRtbChzZ3RMUi5yZXBsYWNlKFwiLVwiLCBcIlwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNzZ3RJbmZsb3dcIikuYmVmb3JlKFwiPHNwYW4+6LWE6YeR5YeA5rWB5YWlPC9zcGFuPlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNzZ3RJbmZsb3dcIikuYmVmb3JlKFwiPHNwYW4+6LWE6YeR5YeA5rWB5YWlPC9zcGFuPlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIuc2d0c3RhdHVzXCIpLmh0bWwoZ2V0SFNHVFN0YXR1cyhqc29uLmRhdGEuaGsyc3ouc3RhdHVzKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc29uLmRhdGEuaGsyc3ouc3RhdHVzID09IDQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNzZ3RJbmZsb3dcIikucGFyZW50KCkuaHRtbChcIi1cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vc3oyaGvmuK/ogqHpgJoo5rexKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ2d0c0xSID0gZ2V0R1NITnVtKHBhcnNlRmxvYXQoanNvbi5kYXRhLnN6MmhrLmRheU5ldEFtdEluKSAqIDEwMDAwLCBcIlwiLCAyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI2dndHNJbmZsb3dcIikuaHRtbChnZ3RzTFIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ2d0c0luZm8gPSBnZXRaREZJbmZvKGpzb24uZGF0YS5zejJoay5kYXlOZXRBbXRJbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZ3RzSW5mby5fY2xhc3MgIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI2dndHNJbmZsb3dcIikuYWRkQ2xhc3MoZ2d0c0luZm8uX2NsYXNzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZ3RzSW5mby5fY2xhc3MgPT0gXCJncmVlblwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI2dndHNJbmZsb3dcIikuYmVmb3JlKFwiPHNwYW4+6LWE6YeR5YeA5rWB5Ye6PC9zcGFuPlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjZ2d0c0luZmxvd1wiKS5odG1sKGdndHNMUi5yZXBsYWNlKFwiLVwiLCBcIlwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNnZ3RzSW5mbG93XCIpLmJlZm9yZShcIjxzcGFuPui1hOmHkeWHgOa1geWFpTwvc3Bhbj5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjZ2d0c0luZmxvd1wiKS5iZWZvcmUoXCI8c3Bhbj7otYTph5Hlh4DmtYHlhaU8L3NwYW4+XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIi5nZ3Rzc3RhdHVzXCIpLmh0bWwoZ2V0SFNHVFN0YXR1cyhqc29uLmRhdGEuc3oyaGsuc3RhdHVzKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc29uLmRhdGEuc3oyaGsuc3RhdHVzID09IDQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNnZ3RzSW5mbG93XCIpLnBhcmVudCgpLmh0bWwoXCItXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnZXRIU0dUU3RhdHVzKF9oc2d0c3RhdHVzKSB7XHJcbiAgICAgICAgc3dpdGNoIChfaHNndHN0YXR1cykge1xyXG4gICAgICAgICAgICBjYXNlIDE6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLmnInpop3luqZcIjtcclxuICAgICAgICAgICAgY2FzZSAyOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwi5peg6aKd5bqmXCI7XHJcbiAgICAgICAgICAgIGNhc2UgMzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIuaUtuebmFwiO1xyXG4gICAgICAgICAgICBjYXNlIDQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gXCLkvJHluIJcIjtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBcIi1cIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnZXRaREZJbmZvKHN0cikge1xyXG4gICAgICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09IFwiLVwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJcIiwgX2RhdGE6IFwiLVwiIH07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFyIGRaZGYgPSBwYXJzZUZsb2F0KHN0cik7XHJcbiAgICAgICAgICAgIGlmIChkWmRmID4gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgX2NsYXNzOiBcInJlZFwiLCBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCIgfTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChkWmRmIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgX2NsYXNzOiBcImdyZWVuXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgX2NsYXNzOiBcIlwiLCBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCIgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIGdldEdTSE51bShzdHIsIGZpeCwgbnVtKSB7XHJcbiAgICAgICAgaWYgKHN0ciA9PT0gXCJcIiB8fCBzdHIgPT0gXCItXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiLVwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHQ7XHJcbiAgICAgICAgICAgIHZhciBpbnRTdHIgPSBNYXRoLmFicyhwYXJzZUludChzdHIpKTtcclxuICAgICAgICAgICAgaWYgKGludFN0ci50b1N0cmluZygpLmxlbmd0aCA+IDEyKSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAocGFyc2VGbG9hdChzdHIpIC8gMTAwMDAwMDAwMDAwMCkudG9GaXhlZChudW0pICsgJ+S4h+S6vycgKyBmaXg7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW50U3RyLnRvU3RyaW5nKCkubGVuZ3RoID4gOCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gKHBhcnNlRmxvYXQoc3RyKSAvIDEwMDAwMDAwMCkudG9GaXhlZChudW0pICsgJ+S6vycgKyBmaXg7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW50U3RyLnRvU3RyaW5nKCkubGVuZ3RoID4gNCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gKHBhcnNlRmxvYXQoc3RyKSAvIDEwMDAwKS50b0ZpeGVkKG51bSkgKyAn5LiHJyArIGZpeDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChwYXJzZUZsb2F0KHN0cikgPT09IHBhcnNlSW50KHN0cikpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBwYXJzZUZsb2F0KHN0cikgKyBmaXg7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlRmxvYXQoc3RyKS50b0ZpeGVkKG51bSkgKyBmaXg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0pKGpRdWVyeSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9tb2R1bGVzL2xpc3QvRU1fR2docV8xLmpzXG4vLyBtb2R1bGUgaWQgPSA1XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIu+7vy8vIOm7hOmHkeihjOaDhVxyXG4oZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIF9oamhxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJIamhxMVwiKTtcclxuICAgIGlmICghIV9oamhxKSB7XHJcbiAgICAgICAgLy8g5Zu96ZmFXHJcbiAgICAgICAgalF1ZXJ5LmFqYXgoe1xyXG4gICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICB1cmw6IFwiLy9wdXNoMi5lYXN0bW9uZXkuY29tL2FwaS9xdC91bGlzdC5ucC9nZXQ/c2VjaWRzPTEwMS5HQzAwWSwxMDEuU0kwMFkmZmllbGRzPWYxLGYyLGYzLGY0LGYxMixmMTMsZjE0JmZsdHQ9MiZpbnZ0PTImdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTlcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnA6IFwiY2JcIixcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24gJiYganNvbi5yYyA9PSAwICYmIGpzb24uZGF0YSAmJiBqc29uLmRhdGEuZGlmZikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHpkZkluZm8gPSBnZXRaREZJbmZvKGpzb24uZGF0YS5kaWZmW2ldLmYzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBodG1sID0gJzx1bD48bGkgY2xhc3M9XCJmaXJzdFwiPjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLycgKyBqc29uLmRhdGEuZGlmZltpXS5mMTMgKyAnLicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTIgKyAnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMiArICc8L2E+PC9saT48bGkgY2xhc3M9XCJzZWNvbmRcIj48YSBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8nICsganNvbi5kYXRhLmRpZmZbaV0uZjEzICsgJy4nICsganNvbi5kYXRhLmRpZmZbaV0uZjEyICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiPicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTQgKyAnPC9hPjwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyBqc29uLmRhdGEuZGlmZltpXS5mMiArICc8L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjQgKyAnPC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIHpkZkluZm8uX2RhdGEgKyAnPC9saT48L3VsPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjSGpnalwiKS5hcHBlbmQoaHRtbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyDlm73lhoVcclxuICAgICAgICBqUXVlcnkuYWpheCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgIHVybDogXCIvL3B1c2gyLmVhc3Rtb25leS5jb20vYXBpL3F0L3VsaXN0Lm5wL2dldD9zZWNpZHM9MTEzLmF1bSwxMTMuYWdtJmZpZWxkcz1mMSxmMixmMyxmNCxmMTIsZjEzLGYxNCZmbHR0PTImaW52dD0yJmludnQ9MiZ1dD0xMzY5N2ExY2M2NzdjOGJmYTlhNDk2NDM3YmZlZjQxOVwiLFxyXG4gICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxyXG4gICAgICAgICAgICBqc29ucDogXCJjYlwiLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoanNvbikge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoanNvbiAmJiBqc29uLnJjID09IDAgJiYganNvbi5kYXRhICYmIGpzb24uZGF0YS5kaWZmKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgemRmSW5mbyA9IGdldFpERkluZm8oanNvbi5kYXRhLmRpZmZbaV0uZjMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGh0bWwgPSAnPHVsPjxsaSBjbGFzcz1cImZpcnN0XCI+PGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VuaWZ5L3IvJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMyArICcuJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMiArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjEyLnRvVXBwZXJDYXNlKCkgKyAnPC9hPjwvbGk+PGxpIGNsYXNzPVwic2Vjb25kXCI+PGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VuaWZ5L3IvJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMyArICcuJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMiArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjE0ICsgJzwvYT48L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjIgKyAnPC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmY0ICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyB6ZGZJbmZvLl9kYXRhICsgJzwvbGk+PC91bD4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KFwiI0hqZ25cIikuYXBwZW5kKGh0bWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgZnVuY3Rpb24gZ2V0WkRGSW5mbyhzdHIpIHtcclxuICAgICAgICAgICAgaWYgKHN0ciA9PT0gXCJcIiB8fCBzdHIgPT0gXCItXCIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJcIiwgX2RhdGE6IFwiLVwiIH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZFpkZiA9IHBhcnNlRmxvYXQoc3RyKTtcclxuICAgICAgICAgICAgICAgIGlmIChkWmRmID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJyZWRcIiwgX2RhdGE6IGRaZGYudG9GaXhlZCgyKSArIFwiJVwiIH07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRaZGYgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgX2NsYXNzOiBcImdyZWVuXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwiXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KCkpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vanMvbW9kdWxlcy9saXN0L0VNX0hqaHFfMS5qc1xuLy8gbW9kdWxlIGlkID0gNlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCLvu78oZnVuY3Rpb24gKCkgeyAgICAgIC8vRU1fSHF6eF8xXHJcblxyXG4gICAgJCA9IGZ1bmN0aW9uIChzKSB7XHJcbiAgICAgICAgcmV0dXJuICh0eXBlb2YgKHMpID09IFwic3RyaW5nXCIpID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocykgOiBzO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiAkID09IFwidW5kZWZpbmVkXCIpIHsgJCA9IGZ1bmN0aW9uIChhKSB7IHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChhKSB9IH1cclxuICAgIGlmICh0eXBlb2YgJEMgPT0gXCJ1bmRlZmluZWRcIikgeyAkQyA9IGZ1bmN0aW9uIChhKSB7IHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGEpIH0gfVxyXG4gICAgRnVuY3Rpb24ucHJvdG90eXBlLkJpbmQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGQgPSB0aGlzLFxyXG4gICAgICAgICAgICBiID0gYXJndW1lbnRzWzBdLFxyXG4gICAgICAgICAgICBhID0gbmV3IEFycmF5KCk7XHJcbiAgICAgICAgZm9yICh2YXIgYyA9IDE7IGMgPCBhcmd1bWVudHMubGVuZ3RoOyBjKyspIHtcclxuICAgICAgICAgICAgYS5wdXNoKGFyZ3VtZW50c1tjXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkLmFwcGx5KGIsIGEpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgd2luZG93LmFtaW5lV2lkdGggPSBmdW5jdGlvbiAob2JqLCBudW0pIHtcclxuICAgICAgICBvYmouc3R5bGUud2lkdGggPSBudW0gKyBcInB4XCI7XHJcbiAgICB9O1xyXG4gICAgdmFyIHRhYnNJdGVtSWQsXHJcbiAgICAgICAgdGFic1N0YXRlID0gZmFsc2U7XHJcbiAgICB2YXIgTXV0dWFsVGFiID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMuaW5pdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG4gICAgfTtcclxuICAgIE11dHVhbFRhYi5wcm90b3R5cGUgPSB7XHJcbiAgICAgICAgaW5pdDogZnVuY3Rpb24gKHRhYnMsIHRhcmdldHMsIHR5cGUsIGNhbGxiYWNrT2JqQXJyLCBzdWJUYXJnZXRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFicyA9IFtdO1xyXG5cclxuICAgICAgICAgICAgdmFyIHRlbXBUYWJzID0gdGFicy5jaGlsZE5vZGVzO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRlbXBUYWJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGVtcFRhYnNbaV0ubm9kZVR5cGUgPT0gMSAmJiB0ZW1wVGFic1tpXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9ICdkZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnMucHVzaCh0ZW1wVGFic1tpXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmICh0YXJnZXRzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhcmdldHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHZhciB0ZW1wVGFyZ2V0cyA9IHRhcmdldHMuY2hpbGROb2RlcztcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGVtcFRhcmdldHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGVtcFRhcmdldHNbal0ubm9kZVR5cGUgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhcmdldHMucHVzaCh0ZW1wVGFyZ2V0c1tqXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUYWIgPSB0aGlzLnRhYnNbMF07XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRhcmdldCA9IHRoaXMudGFyZ2V0c1swXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXRhcmdldHMgJiYgIXN1YlRhcmdldHMpIHRoaXMuYWN0aXZlVGFiID0gdGhpcy50YWJzWzBdO1xyXG4gICAgICAgICAgICBpZiAoc3ViVGFyZ2V0cykgdGhpcy5hY3RpdmVUYWIgPSBudWxsOy8vdGhpcy50YWJzWzBdO1xyXG4gICAgICAgICAgICBpZiAodHlwZSAhPSBcIm1vdXNlb3ZlclwiKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IHRoaXMudGFicy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFic1trXS5vbmNsaWNrID0gdGhpcy5zaG93VGFiLkJpbmQodGhpcywgaywgY2FsbGJhY2tPYmpBcnIgPyBjYWxsYmFja09iakFycltrXSA6IG51bGwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGFic0l0ZW1JZCA9IDA7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IHRoaXMudGFicy5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFic1trXS5vbm1vdXNlb3V0ID0gdGhpcy5faGlkZS5CaW5kKHRoaXMsIGspO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFic1trXS5vbm1vdXNlb3ZlciA9IHRoaXMuX292ZXIuQmluZCh0aGlzLCBrLCBjYWxsYmFja09iakFyciA/IGNhbGxiYWNrT2JqQXJyW2tdIDogbnVsbCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfSxcclxuICAgICAgICBzaG93VGFiOiBmdW5jdGlvbiAoX2luZGV4LCBjYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnRhYkluZGV4ID0gX2luZGV4O1xyXG4gICAgICAgICAgICBpZiAodGhpcy50YWJzW19pbmRleF0gPT0gdGhpcy5hY3RpdmVUYWIpIHJldHVybjtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRhYikgdGhpcy5hY3RpdmVUYWIuY2xhc3NOYW1lID0gXCJcIjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiID0gdGhpcy50YWJzW19pbmRleF07XHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiLmNsYXNzTmFtZSA9IFwiYXRcIjtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRhcmdldHMpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRhcmdldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFyZ2V0LnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFyZ2V0ID0gdGhpcy50YXJnZXRzW19pbmRleF07XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZVRhcmdldC5zdHlsZS5kaXNwbGF5ID0gXCJcIjtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVDYWxsYmFjayA9IGNhbGxiYWNrO1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9LFxyXG4gICAgICAgIF9vdmVyOiBmdW5jdGlvbiAob2JqLCBfaW5kZXgsIGNhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgIHRhYnNTdGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX3RpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCh0aGlzLnNob3dUYWIuQmluZCh0aGlzLCBvYmosIF9pbmRleCwgY2FsbGJhY2spLCAxNTApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgX2hpZGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3RpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgLy93aW5kb3cuTXV0dWFsVGFiID0gTXV0dWFsVGFiO1xyXG4gICAgdmFyIGhxRGF0YSA9IHtcclxuICAgICAgICBDU0k6IHsvL+ayqua3sVxyXG4gICAgICAgICAgICBpZDogXCJDU0lcIixcclxuICAgICAgICAgICAgc2V0OiBbXHJcbiAgICAgICAgICAgICAgICBbJzAwMDAwMTEnLCAn5rKqQScsICcvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTEuMDAwMDAxJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3pzMDAwMDAxLmh0bWwnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzEwXCI+5rao5bmFPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzEwP3NvcnRUeXBlPUgmYW1wO3NvcnRSdWxlPS0xXCI+6YeP5q+UPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzEwP3NvcnRUeXBlPUomYW1wO3NvcnRSdWxlPS0xXCI+5o2i5omLPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzEwP3NvcnRUeXBlPUkmYW1wO3NvcnRSdWxlPS0xXCI+5biC55uIPC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJzM5OTAwMTInLCAn5rexQScsICcvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTAuMzk5MDAxJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3pzMzk5MDAxLmh0bWwnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzIwXCI+5rao5bmFPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzIwP3NvcnRUeXBlPUgmYW1wO3NvcnRSdWxlPS0xXCI+6YeP5q+UPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzIwP3NvcnRUeXBlPUomYW1wO3NvcnRSdWxlPS0xXCI+5o2i5omLPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzIwP3NvcnRUeXBlPUkmYW1wO3NvcnRSdWxlPS0xXCI+5biC55uIPC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJzM5OTAwNjInLCAn5Yib5Lia5p2/JywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MC4zOTkwMDYnLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20venMzOTkwMDYuaHRtbCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjdcIj7mtqjluYU8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjc/c29ydFR5cGU9SCZhbXA7c29ydFJ1bGU9LTFcIj7ph4/mr5Q8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjc/c29ydFR5cGU9SiZhbXA7c29ydFJ1bGU9LTFcIj7mjaLmiYs8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjc/c29ydFR5cGU9SSZhbXA7c29ydFJ1bGU9LTFcIj7luILnm4g8L2E+PC9saT4nXSxcclxuICAgICAgICAgICAgICAgIFsnMDAwMzAwMScsICczMDAnLCAnLy93ZWJxdW90ZXBpYy5lYXN0bW9uZXkuY29tL0dldFBpYy5hc3B4P2ltYWdlVHlwZT1SU0lOREVYJm5pZD0xLjAwMDMwMCcsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS96czAwMDMwMC5odG1sJywgJzxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyODAwMzUwMF8wXzJcIj7mtqjluYU8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjgwMDM1MDBfMF8yP3NvcnRUeXBlPUgmYW1wO3NvcnRSdWxlPS0xXCI+6YeP5q+UPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI4MDAzNTAwXzBfMj9zb3J0VHlwZT1KJmFtcDtzb3J0UnVsZT0tMVwiPuaNouaJizwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyODAwMzUwMF8wXzI/c29ydFR5cGU9SSZhbXA7c29ydFJ1bGU9LTFcIj7luILnm4g8L2E+PC9saT4nXSxcclxuICAgICAgICAgICAgICAgIFsnMzAwMDU5MicsICfkuJzmlrnotKLlr4wnLCAnLy93ZWJxdW90ZXBpYy5lYXN0bW9uZXkuY29tL0dldFBpYy5hc3B4P2ltYWdlVHlwZT1SU0lOREVYJm5pZD0wLjMwMDA1OScsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9zejMwMDA1OS5odG1sJywgJzxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9lbXdlYi5zZWN1cml0aWVzLmVhc3Rtb25leS5jb20vcGNfaHNmMTAvcGFnZXMvaW5kZXguaHRtbD90eXBlPXdlYiZjb2RlPVNaMzAwMDU5JmNvbG9yPWIjL2NwYmRcIj5GMTA8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9kYXRhLmVhc3Rtb25leS5jb20vbm90aWNlLzMwMDA1OS5odG1sXCI+5YWs5ZGKPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL3JlcG9ydC8zMDAwNTkuaHRtbFwiPueglOaKpTwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2d1YmEuZWFzdG1vbmV5LmNvbS9saXN0LDMwMDA1OS5odG1sXCI+6IKh5ZCnPC9hPjwvbGk+J11cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgSEs6IHsvL+mmmea4r1xyXG4gICAgICAgICAgICBpZDogXCJIS1wiLFxyXG4gICAgICAgICAgICBzZXQ6IFtcclxuICAgICAgICAgICAgICAgIFsnMTEwMDAwNScsICfmgZLnlJ8nLCAnLy93ZWJxdW90ZXBpYy5lYXN0bW9uZXkuY29tL0dldFBpYy5hc3B4P2ltYWdlVHlwZT1SU0lOREVYJm5pZD0xMDAuSFNJJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2hrL3pzMTEwMDAwLmh0bWwnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzUwXzFcIj7mtqjluYU8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjNTBfMT9zb3J0VHlwZT1GJnNvcnRSdWxlPS0xXCI+5oiQ5LqkPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sI2FoXzFcIj7mr5Tku7c8L2E+PC9saT4nXSxcclxuICAgICAgICAgICAgICAgIFsnMTEwMDMwNScsICfnuqLnrbknLCAnLy93ZWJxdW90ZXBpYy5lYXN0bW9uZXkuY29tL0dldFBpYy5hc3B4P2ltYWdlVHlwZT1SU0lOREVYJm5pZD0xMjQuSFNDQ0knLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vaGsvenMxMTAwMzAuaHRtbCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjhIU0NDSV8xXCI+5rao5bmFPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI4SFNDQ0lfMT9zb3J0VHlwZT1GJnNvcnRSdWxlPS0xXCI+5oiQ5LqkPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sI2FoXzFcIj7mr5Tku7c8L2E+PC9saT4nXSxcclxuICAgICAgICAgICAgICAgIFsnMTEwMDEwNScsICflm73kvIEnLCAnLy93ZWJxdW90ZXBpYy5lYXN0bW9uZXkuY29tL0dldFBpYy5hc3B4P2ltYWdlVHlwZT1SU0lOREVYJm5pZD0xMDAuSFNDRUknLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vaGsvenMxMTAwMTAuaHRtbCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjhIU0NFSV8xXCI+5rao5bmFPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI4SFNDRUlfMT9zb3J0VHlwZT1GJnNvcnRSdWxlPS0xXCI+5oiQ5LqkPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sI2FoXzFcIj7mr5Tku7c8L2E+PC9saT4nXSxcclxuICAgICAgICAgICAgICAgIFsnMTEwMDUwNScsICfliJvkuJrmnb8nLCAnLy93ZWJxdW90ZXBpYy5lYXN0bW9uZXkuY29tL0dldFBpYy5hc3B4P2ltYWdlVHlwZT1SU0lOREVYJm5pZD0xMjUuU1BIS0cnLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vaGsvenMxMTAwNTAuaHRtbCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjhHRU1fMVwiPua2qOW5hTwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyOEdFTV8xP3NvcnRUeXBlPUYmc29ydFJ1bGU9LTFcIj7miJDkuqQ8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjYWhfMVwiPuavlOS7tzwvYT48L2xpPiddXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIE9DQ0lERU5UOiB7Ly/mrKfnvo5cclxuICAgICAgICAgICAgaWQ6IFwiT0NDSURFTlRcIixcclxuICAgICAgICAgICAgc2V0OiBbXHJcbiAgICAgICAgICAgICAgICBbJ0lORFU3JywgJ+mBk+eQvOaWrycsICcvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTEwMC5ESklBJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2diL3pzaW5kdS5odG1sJywgJzxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCM3MF8yXCI+5o6S6KGMPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI4Q0hJTkFfMlwiPuamguW/tTwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyODZfMlwiPuenkeaKgDwvYT48L2xpPiddLFxyXG4gICAgICAgICAgICAgICAgWydDQ01QNycsICfnurPmlq/ovr7lhYsnLCAnLy93ZWJxdW90ZXBpYy5lYXN0bW9uZXkuY29tL0dldFBpYy5hc3B4P2ltYWdlVHlwZT1SU0lOREVYJm5pZD0xMDAuTkRYJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2diL3pzQ0NNUC5odG1sJywgJzxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCM3MF8yXCI+5o6S6KGMPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI4Q0hJTkFfMlwiPuamguW/tTwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyODZfMlwiPuenkeaKgDwvYT48L2xpPiddLFxyXG4gICAgICAgICAgICAgICAgWydVS1g3JywgJ+iLseWbvUZUJywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MTAwLkZUU0UnLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vZ2IvenNVS1guaHRtbCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjNzBfMlwiPuaOkuihjDwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyOENISU5BXzJcIj7mpoLlv7U8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjg2XzJcIj7np5HmioA8L2E+PC9saT4nXVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfSxcclxuICAgICAgICBGVU5EOiB7Ly/ln7rph5FcclxuICAgICAgICAgICAgaWQ6IFwiRlVORFwiLFxyXG4gICAgICAgICAgICBzZXQ6IFtcclxuICAgICAgICAgICAgICAgIFsnMDAwMDExMScsICfmsqrln7onLCAnLy93ZWJxdW90ZXBpYy5lYXN0bW9uZXkuY29tL0dldFBpYy5hc3B4P2ltYWdlVHlwZT1SU0lOREVYJm5pZD0xLjAwMDAxMScsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS96czAwMDAxMS5odG1sJywgJzxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyODUwMDJfNFwiPuWwgeWfujwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2Z1bmRsaXN0Lmh0bWwjMyxfNFwiPuW8gOWfujwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyODUwMDEzXzRcIj5FVEY8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjg1MDAxNF80XCI+TE9GPC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJzM5OTEwMzInLCAn5rex5Z+6JywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MC4zOTkxMDMnLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20venMzOTkxMDMuaHRtbCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjg1MDAyXzRcIj7lsIHln7o8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9mdW5kbGlzdC5odG1sIzMsXzRcIj7lvIDln7o8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjg1MDAxM180XCI+RVRGPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzI4NTAwMTRfNFwiPkxPRjwvYT48L2xpPiddXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIEZVVFVSRVM6IHsvL+acn+i0p1xyXG4gICAgICAgICAgICBpZDogXCJGVVRVUkVTXCIsXHJcbiAgICAgICAgICAgIHNldDogW1xyXG4gICAgICAgICAgICAgICAgWydJRkRZTFgxJywgJ+iCoeaMh+acn+i0pycsICcvL2RlbGF5d2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MjIwLklGTTAnLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8yMjAuSUZNMCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMTJfNV8zXCI+5pyf5oyHPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvZnV0dXJlbGlzdC5odG1sIzExXzVfMFwiPuWGheebmDwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCNnanFoXzVcIj7lpJbnm5g8L2E+PC9saT4nXSxcclxuICAgICAgICAgICAgICAgIFsnVEZHWkRKMScsICflm73lgLrmnJ/otKcnLCAnLy9kZWxheXdlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTIyMC5URlMwJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VuaWZ5L3IvMjIwLlRGUzAnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzEyXzVfM1wiPuacn+aMhzwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2Z1dHVyZWxpc3QuaHRtbCMxMV81XzBcIj7lhoXnm5g8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjZ2pxaF81XCI+5aSW55uYPC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJ0NPTkMwJywgJ+e+juWOn+ayuScsICcvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTEwMi5DTDAwWScsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLzEwMi5DTDAwWScsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMTJfNV8zXCI+5pyf5oyHPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvZnV0dXJlbGlzdC5odG1sIzExXzVfMFwiPuWGheebmDwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCNnanFoXzVcIj7lpJbnm5g8L2E+PC9saT4nXSxcclxuICAgICAgICAgICAgICAgIFsnR0xOQzAnLCAn576O6buE6YeRJywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MTAxLkdDMDBZJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VuaWZ5L3IvMTAxLkdDMDBZJywgJzxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMxMl81XzNcIj7mnJ/mjIc8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9mdXR1cmVsaXN0Lmh0bWwjMTFfNV8wXCI+5YaF55uYPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sI2dqcWhfNVwiPuWkluebmDwvYT48L2xpPiddXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9LFxyXG4gICAgICAgIEZPUkVYOiB7Ly/lpJbmsYdcclxuICAgICAgICAgICAgaWQ6IFwiRk9SRVhcIixcclxuICAgICAgICAgICAgc2V0OiBbXHJcbiAgICAgICAgICAgICAgICBbJ0RJTkkwJywgJ+e+juWFgycsICcvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTEwMC5VREknLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8xMDAuVURJJywgJzxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2ZvcmV4LmVhc3Rtb25leS5jb20vQmFua1JhdGUuaHRtbFwiPuWIqeeOhzwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2RhdGEuZWFzdG1vbmV5LmNvbS9tb25leS9jYWxjL0ZvcmV4RXhjaGFuZ2UuaHRtbFwiPuWFkeaNojwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2ZvcmV4LmVhc3Rtb25leS5jb20vRkMuaHRtbFwiPuaXpeWOhjwvYT48L2xpPiddLFxyXG4gICAgICAgICAgICAgICAgWydFVVJVU0QwJywgJ+asp+WFgycsICcvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTExOS5FVVJVU0QnLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vZm9yZXgvRVVSVVNELmh0bWwnLCAnPGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZm9yZXguZWFzdG1vbmV5LmNvbS9CYW5rUmF0ZS5odG1sXCI+5Yip546HPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL21vbmV5L2NhbGMvRm9yZXhFeGNoYW5nZS5odG1sXCI+5YWR5o2iPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZm9yZXguZWFzdG1vbmV5LmNvbS9GQy5odG1sXCI+5pel5Y6GPC9hPjwvbGk+J10sXHJcbiAgICAgICAgICAgICAgICBbJ0dCUFVTRDAnLCAn6Iux6ZWRJywgJy8vd2VicXVvdGVwaWMuZWFzdG1vbmV5LmNvbS9HZXRQaWMuYXNweD9pbWFnZVR5cGU9UlNJTkRFWCZuaWQ9MTE5LkdCUFVTRCcsICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9mb3JleC9HQlBVU0QuaHRtbCcsICc8bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9mb3JleC5lYXN0bW9uZXkuY29tL0JhbmtSYXRlLmh0bWxcIj7liKnnjoc8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9kYXRhLmVhc3Rtb25leS5jb20vbW9uZXkvY2FsYy9Gb3JleEV4Y2hhbmdlLmh0bWxcIj7lhZHmjaI8L2E+PC9saT48bGk+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9mb3JleC5lYXN0bW9uZXkuY29tL0ZDLmh0bWxcIj7ml6XljoY8L2E+PC9saT4nXSxcclxuICAgICAgICAgICAgICAgIFsnVVNESlBZMCcsICfml6XlhYMnLCAnLy93ZWJxdW90ZXBpYy5lYXN0bW9uZXkuY29tL0dldFBpYy5hc3B4P2ltYWdlVHlwZT1SU0lOREVYJm5pZD0xMTkuVVNESlBZJywgJ2h0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2ZvcmV4L1VTREpQWS5odG1sJywgJzxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2ZvcmV4LmVhc3Rtb25leS5jb20vQmFua1JhdGUuaHRtbFwiPuWIqeeOhzwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2RhdGEuZWFzdG1vbmV5LmNvbS9tb25leS9jYWxjL0ZvcmV4RXhjaGFuZ2UuaHRtbFwiPuWFkeaNojwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2ZvcmV4LmVhc3Rtb25leS5jb20vRkMuaHRtbFwiPuaXpeWOhjwvYT48L2xpPiddLFxyXG4gICAgICAgICAgICAgICAgWydVU0RDTlkwJywgJ+S6uuawkeW4gScsICcvL3dlYnF1b3RlcGljLmVhc3Rtb25leS5jb20vR2V0UGljLmFzcHg/aW1hZ2VUeXBlPVJTSU5ERVgmbmlkPTEzMy5VU0RDTkgnLCAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8xMzMuVVNEQ05IJywgJzxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2ZvcmV4LmVhc3Rtb25leS5jb20vQmFua1JhdGUuaHRtbFwiPuWIqeeOhzwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2RhdGEuZWFzdG1vbmV5LmNvbS9tb25leS9jYWxjL0ZvcmV4RXhjaGFuZ2UuaHRtbFwiPuWFkeaNojwvYT48L2xpPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2ZvcmV4LmVhc3Rtb25leS5jb20vRkMuaHRtbFwiPuaXpeWOhjwvYT48L2xpPiddXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHZhciBTdG9ja0luZGV4ID0ge1xyXG4gICAgICAgIHRhYk9ianM6IFtdLFxyXG5cclxuICAgICAgICB0YWJzSXRlbUlkOjAsICAgICAgICAgICAvL+S6jOe6p+agh+etvumhteWvvOiIque0ouW8leWAvFxyXG4gICAgICAgIHRhYnNJbmRleDogMCwgICAgICAgICAgIC8v5LiA57qn5qCH562+6aG15a+86Iiq57Si5byV5YC8XHJcbiAgICAgICAgdGFic2hxRGF0YUlkOiBcIlwiLCAgICAgICAvL2hxRGF0YeaVsOaNruS4reWvueW6lOeahOWxnuaAp2lkXHJcblxyXG4gICAgICAgIGltZ0ZxYzogMTIwMDAwLFxyXG4gICAgICAgIGFjdGl2ZUltZzogMCxcclxuICAgICAgICBhcHBseTogZnVuY3Rpb24gKHRhYklkLCBjb250ZW50SWQsIHJlZkJ0bikge1xyXG4gICAgICAgICAgICBpZiAod2luZG93W1wiX0lGQ29kZVwiXSkge1xyXG4gICAgICAgICAgICAgICAgaHFEYXRhW1wiRlVUVVJFU1wiXS5zZXRbMF1bMF0gPSB3aW5kb3dbXCJfSUZDb2RlXCJdO1xyXG4gICAgICAgICAgICAgICAgaHFEYXRhW1wiRlVUVVJFU1wiXS5zZXRbMF1bMl0gPSAnaHR0cDovL2hxZ25xaHBpYy5lYXN0bW9uZXkuY29tL0VNX0Z1dHVyZXMyMDEwUGljdHVyZVByb2R1Y3Rlci9QaWN0dXJlLycgKyBfSUZDb2RlICsgJzFSU0luZGV4LnBuZyc7XHJcbiAgICAgICAgICAgICAgICBocURhdGFbXCJGVVRVUkVTXCJdLnNldFswXVszXSA9ICdodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9nenFoLycgKyBfSUZDb2RlICsgJy5odG1sJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAod2luZG93W1wiX1RGQ29kZVwiXSkge1xyXG4gICAgICAgICAgICAgICAgaHFEYXRhW1wiRlVUVVJFU1wiXS5zZXRbMV1bMF0gPSB3aW5kb3dbXCJfVEZDb2RlXCJdO1xyXG4gICAgICAgICAgICAgICAgaHFEYXRhW1wiRlVUVVJFU1wiXS5zZXRbMV1bMl0gPSAnaHR0cDovL2hxZ25xaHBpYy5lYXN0bW9uZXkuY29tL0VNX0Z1dHVyZXMyMDEwUGljdHVyZVByb2R1Y3Rlci9JbmRleC5hc3B4P2ltYWdldHlwZT1SU0luZGV4JklEPScgKyBfVEZDb2RlICsgJzEnO1xyXG4gICAgICAgICAgICAgICAgaHFEYXRhW1wiRlVUVVJFU1wiXS5zZXRbMV1bM10gPSAnaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vZ3pxaC8nICsgX1RGQ29kZSArICcuaHRtbCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5fdGFic0VsZW1lbnQgPSAkKHRhYklkKTtcclxuICAgICAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQgPSAkKGNvbnRlbnRJZCk7XHJcbiAgICAgICAgICAgIGlmIChyZWZCdG4pIHRoaXMuX3JlZnJlc2hFbGVtZW50ID0gJChyZWZCdG4pO1xyXG4gICAgICAgICAgICB0aGlzLl9pbml0Q29udGVudCgpO1xyXG4gICAgICAgICAgICB0aGlzLl90YWJDdHJsID0gbmV3IE11dHVhbFRhYih0aGlzLl90YWJzRWxlbWVudCwgdGhpcy5fY29udGVudEVsZW1lbnQsIFwibW91c2VvdmVyXCIsIHRoaXMudGFiT2JqcywgdHJ1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMudGFic1NlbGVjdCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9zdGFydCh0aGlzLnRhYnNJbmRleCx0aGlzLnRhYnNocURhdGFJZCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBfaW5pdENvbnRlbnQ6IGZ1bmN0aW9uICgpIHsvL+WIneWni+WMluS4u+S9k+e7k+aehFxyXG4gICAgICAgICAgICB2YXIgdGFicyA9IHRoaXMuX3RhYnNFbGVtZW50O1xyXG4gICAgICAgICAgICB2YXIgdGFiQ29udGVudCA9IHRoaXMuX2NvbnRlbnRFbGVtZW50O1xyXG4gICAgICAgICAgICB2YXIgdGVtcFRhYnMgPSB0YWJzLmNoaWxkTm9kZXM7XHJcbiAgICAgICAgICAgIHZhciBzZXRBcnIgPSBudWxsLCBzaG93U3R5bGUgPSAnJywgaW5uZXJDb250ZW50ID0gJycsIF9hY3RpdmUgPSAnJztcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZW1wVGFicy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRlbXBUYWJzW2ldLm5vZGVUeXBlID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYk9ianMucHVzaCh0aGlzLnNob3cuQmluZCh0aGlzLCBocURhdGFbdGVtcFRhYnNbaV0uaWRdKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJDb250ZW50ICs9ICc8ZGl2IGlkPVwiaHFfJyArIHRlbXBUYWJzW2ldLmlkICsgJ1wiJyArIHNob3dTdHlsZSArICc+JztcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvd1N0eWxlID09ICcnKSBzaG93U3R5bGUgPSAnIHN0eWxlPVwiZGlzcGxheTpub25lO1wiJztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0QXJyID0gaHFEYXRhW3RlbXBUYWJzW2ldLmlkXS5zZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJDb250ZW50ICs9ICc8ZGwgY2xhc3M9XCJzYy1jb250LXRhYnNcIj4nO1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogaW4gc2V0QXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hY3RpdmUgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPT0gMCkgX2FjdGl2ZSA9ICcgY2xhc3M9XCJhdFwiJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldEFycltqXVsxXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyQ29udGVudCArPSAnPGR0JyArIF9hY3RpdmUgKyAnPjxzcGFuPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCInICsgc2V0QXJyW2pdWzNdICsgJ1wiPicgKyBzZXRBcnJbal1bMV0gKyAnPC9hPjwvc3Bhbj48L2R0Pic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPCBzZXRBcnIubGVuZ3RoIC0gMSkgaW5uZXJDb250ZW50ICs9ICc8ZGQ+fDwvZGQ+JztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlubmVyQ29udGVudCArPSAnPC9kbD4nO1xyXG4gICAgICAgICAgICAgICAgICAgIGlubmVyQ29udGVudCArPSAnPGRpdiBjbGFzcz1cInNjLWNvbnQtaW1nXCI+PC9kaXY+JztcclxuICAgICAgICAgICAgICAgICAgICBpbm5lckNvbnRlbnQgKz0gJzx1bCBjbGFzcz1cInNjLWNvbnQtaW1nbGlua1wiPjwvdWw+JztcclxuICAgICAgICAgICAgICAgICAgICBpbm5lckNvbnRlbnQgKz0gJzwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGFiQ29udGVudC5pbm5lckhUTUwgPSBpbm5lckNvbnRlbnQ7XHJcbiAgICAgICAgfSxcclxuICAgICAgICB0YWJzU2VsZWN0OmZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIHZhciBpbnB1dCA9ICQoXCJocXp4X3RhYklkXCIpLCAgICAgICAgLy8gIOiOt+WPlumhtemdouS4remakOiXj+agh+etvueahOWFg+e0oFxyXG4gICAgICAgICAgICAgICAgdGFicyA9IHRoaXMuX3RhYnNFbGVtZW50LmNoaWxkTm9kZXMsXHJcbiAgICAgICAgICAgICAgICB0YWJzQXJyID0gW10sXHJcbiAgICAgICAgICAgICAgICB0YWJzRGljQXJyID0gW10sXHJcbiAgICAgICAgICAgICAgICBpLFxyXG4gICAgICAgICAgICAgICAgdGFiSWQgPSBpbnB1dC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWhxengtaWQxXCIpLFxyXG4gICAgICAgICAgICAgICAgdGFiSXRlbUlkTmFtZSA9IGlucHV0LmdldEF0dHJpYnV0ZShcImRhdGEtaHF6eC1pZDJcIik7XHJcbiAgICAgICAgICAgIHZhciB0YWJzRGljdGlvbmFyeSA9IFsgICAgICAgICAgLy/moIfnrb7pobXlkITnuqflr7zoiKrlr7nlupTlrZflhbhcclxuICAgICAgICAgICAgICAgIHsgICAvL+ayqua3sUNTSVxyXG4gICAgICAgICAgICAgICAgICAgIGlkOlwiaHF6eF9DU0lcIixcclxuICAgICAgICAgICAgICAgICAgICBpdGVtTmF2SWQ6W1wiQ1NJX2hBXCIsIFwiQ1NJX3NBXCIsIFwiQ1NJXzMwMFwiLCBcIkNTSV9jeWJcIiwgXCJDU0lfZW1cIl1cclxuICAgICAgICAgICAgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgeyAgIC8v6aaZ5rivSEtcclxuICAgICAgICAgICAgICAgICAgICBpZDogXCJocXp4X0hLXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbU5hdklkOiBbXCJIS19oc1wiLCBcIkhLX2hjXCIsIFwiSEtfZ2pcIiwgXCJIS19jeWJcIl1cclxuICAgICAgICAgICAgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHsgICAvL+asp+e+jk9DQ0lERU5UXHJcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFwiaHF6eF9PQ0NJREVOVFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1OYXZJZDogW1wiT0NDSURFTlRfZHFzXCIsIFwiT0NDSURFTlRfbnNka1wiLCBcIk9DQ0lERU5UX1VBRlRcIl1cclxuICAgICAgICAgICAgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgeyAgIC8v5Z+66YeRRlVORFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOlwiaHF6eF9GVU5EXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbU5hdklkOiBbXCJGVU5EX2hqXCIsIFwiRlVORF9zalwiXVxyXG4gICAgICAgICAgICAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgeyAgIC8v5pyf6LSnRlVUVVJFU1xyXG4gICAgICAgICAgICAgICAgICAgIGlkOlwiaHF6eF9GVVRVUkVTXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbU5hdklkOiBbXCJGVVRVUkVTX2d1enFoXCIsIFwiRlVUVVJFU19ndW96cWhcIiwgXCJGVVRVUkVTX215eVwiLCBcIkZVVFVSRVNfbWhqXCJdXHJcbiAgICAgICAgICAgICAgICB9LCAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB7ICAgLy/lpJbmsYdGT1JFWFxyXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcImhxenhfRk9SRVhcIixcclxuICAgICAgICAgICAgICAgICAgICBpdGVtTmF2SWQ6IFtcIkZPUkVYX2RvbGxhclwiLCBcIkZPUkVYX0V1cm9cIiwgXCJGT1JFWF9wb3VuZFwiLCBcIkZPUkVYX3llblwiLCBcIkZPUkVYX1JNQlwiXVxyXG4gICAgICAgICAgICAgICAgfSAgICAgICAgXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIGlmICghdGFiSWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFic0luZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFic0l0ZW1JZCA9IDA7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYnNocURhdGFJZCA9IGhxRGF0YS5DU0k7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGFic0RpY3Rpb25hcnkubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGFiSWQgPT0gdGFic0RpY3Rpb25hcnlbaV0uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzSW5kZXggPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNocURhdGFJZCA9IGhxRGF0YVt0YWJzRGljdGlvbmFyeVtpXS5pZC5zbGljZSg1KV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYnNEaWNBcnIgPSB0YWJzRGljdGlvbmFyeVtpXS5pdGVtTmF2SWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFic0luZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzSXRlbUlkID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJzaHFEYXRhSWQgPSBocURhdGEuQ1NJO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCF0YWJJdGVtSWROYW1lKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYnNJdGVtSWQgPSAwO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRhYnNEaWNBcnIpIHtcclxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0YWJzRGljQXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhYkl0ZW1JZE5hbWUgPT0gdGFic0RpY0FycltpXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNJdGVtSWQgPSBpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNJdGVtSWQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRhYnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGlmICh0YWJzW2ldLm5vZGVUeXBlID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0YWJzQXJyLnB1c2goaHFEYXRhW3RhYnNbaV0uaWRdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgdGFic0l0ZW1OYXYgPSAkKFwiaHFfXCIgKyB0YWJzQXJyW3RoaXMudGFic0luZGV4XS5pZCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJkdFwiKSxcclxuICAgICAgICAgICAgICAgIGxlbiA9IHRhYnNJdGVtTmF2Lmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICB0YWJzSXRlbU5hdltpXS5jbGFzc05hbWUgPSBcIlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRhYnNJdGVtTmF2W3RoaXMudGFic0l0ZW1JZF0uY2xhc3NOYW1lID0gXCJhdFwiO1xyXG5cclxuICAgICAgICB9LFxyXG4gICAgICAgIF9zdGFydDogZnVuY3Rpb24gKGksIGhxRGF0YUlkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RhYkN0cmwuc2hvd1RhYihpLCB0aGlzLnNob3cuQmluZCh0aGlzLCBocURhdGFJZCkpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2hvdzogZnVuY3Rpb24gKGFEYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NNYXJrZXQgPSBhRGF0YS5pZDtcclxuICAgICAgICAgICAgdGhpcy5fb1NldE5vdyA9IGFEYXRhLnNldDtcclxuICAgICAgICAgICAgdmFyIF9pbWdDYWxsYmFjayA9IFtdO1xyXG4gICAgICAgICAgICB2YXIgX2hxY29kZU5vdyA9IFtdO1xyXG5cclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9vU2V0Tm93Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBfaW1nQ2FsbGJhY2sucHVzaCh0aGlzLl9sb2FkSW1nLkJpbmQodGhpcywgaSkpO1xyXG4gICAgICAgICAgICAgICAgX2hxY29kZU5vdy5wdXNoKHRoaXMuX29TZXROb3dbaV1bMF0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghaHFEYXRhW3RoaXMuX3NNYXJrZXRdLl9jb250YWluZXJzTm93KSB7XHJcbiAgICAgICAgICAgICAgICBocURhdGFbdGhpcy5fc01hcmtldF0uX2NvbnRhaW5lcnNOb3cgPSBbXTtcclxuICAgICAgICAgICAgICAgIHZhciBfdG1wY2hpbGRzID0gJChcImhxX1wiICsgYURhdGEuaWQpLmZpcnN0Q2hpbGQuY2hpbGROb2RlcztcclxuICAgICAgICAgICAgICAgIHZhciBfdG1wRmlyc3QgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfdG1wY2hpbGRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKF90bXBjaGlsZHNbaV0ubm9kZVR5cGUgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBfdG1wRmlyc3QgPSBfdG1wY2hpbGRzW2ldLmZpcnN0Q2hpbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhxRGF0YVt0aGlzLl9zTWFya2V0XS5fY29udGFpbmVyc05vdy5wdXNoKF90bXBGaXJzdC5ub2RlVHlwZSA9PSAxID8gX3RtcEZpcnN0IDogX3RtcEZpcnN0Lm5leHRTaWJsaW5nKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFhRGF0YS5oYXNzY3JvbGwpIHtcclxuICAgICAgICAgICAgICAgIGFEYXRhLmhhc3Njcm9sbCA9IG5ldyBNdXR1YWxUYWIoJChcImhxX1wiICsgYURhdGEuaWQpLmZpcnN0Q2hpbGQsIG51bGwsIFwibW91c2VvdmVyXCIsIF9pbWdDYWxsYmFjaywgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKGFEYXRhLmhhc3Njcm9sbC5nZXRJbmRleCgpKTtcclxuICAgICAgICAgICAgICAgIGlmICh0YWJzU3RhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYnNJdGVtSWQgPSB0YWJzSXRlbUlkO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYURhdGEuaGFzc2Nyb2xsLnNob3dUYWIodGhpcy50YWJzSXRlbUlkLCB0aGlzLl9sb2FkSW1nLkJpbmQodGhpcykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBfbG9hZEltZzogZnVuY3Rpb24gKHNJRCkgey8v5Yqg6L295bm25byA5ZCv6Ieq5Yi35paw5Zu+54mHXHJcbiAgICAgICAgICAgIHNJRCA9ICFzSUQgPyAwIDogc0lEO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKHNJRCk7XHJcbiAgICAgICAgICAgIGlmICghaHFEYXRhW3RoaXMuX3NNYXJrZXRdLmFjdGl2ZUltZykge1xyXG4gICAgICAgICAgICAgICAgaHFEYXRhW3RoaXMuX3NNYXJrZXRdLmFjdGl2ZUltZyA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy/mu5Hliqjml7blm57osIPvvIzkvKBzSUTov5vmnaXvvIzoi6Xlm77lt7LliJ3lp4vljJbvvIzliJnkuI3lvLrooYzor7vlj5bvvIznlLHmm7TmlrDnur/nqIvmm7TmlrBcclxuICAgICAgICAgICAgaWYgKHNJRCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGhxRGF0YVt0aGlzLl9zTWFya2V0XS5hY3RpdmVJbWcgPSBzSUQ7XHJcbiAgICAgICAgICAgICAgICAvL2lmKHRoaXMuX29TZXROb3dbaHFEYXRhW3RoaXMuX3NNYXJrZXRdLmFjdGl2ZUltZ10uaW1nTG9hZGVkKSByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRoaXMuX3JlZnJlc2hFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAvL2lmKHNJRCAhPSB1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWZyZXNoRWxlbWVudC5vbmNsaWNrID0gdGhpcy5fbG9hZEltZy5CaW5kKHRoaXMsIHNJRCk7XHJcbiAgICAgICAgICAgICAgICAvL2Vsc2VcclxuICAgICAgICAgICAgICAgIC8vXHR0aGlzLl9yZWZyZXNoRWxlbWVudC5vbmNsaWNrID0gdGhpcy5fbG9hZEltZy5CaW5kKHRoaXMsIDApO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5faW1ndGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9pbWd0aW1lb3V0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLl9pbWd0aW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQodGhpcy5fbG9hZEltZy5CaW5kKHRoaXMsIHNJRCksIHRoaXMuaW1nRnFjKTtcclxuXHJcbiAgICAgICAgICAgICQoXCJocV9cIiArIHRoaXMuX3NNYXJrZXQpLmxhc3RDaGlsZC5pbm5lckhUTUwgPSB0aGlzLl9vU2V0Tm93WyFzSUQgPyAwIDogc0lEXVs0XTtcclxuXHJcbiAgICAgICAgICAgIHZhciBfaW5kZXggPSBocURhdGFbdGhpcy5fc01hcmtldF0uYWN0aXZlSW1nO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX29TZXROb3dbX2luZGV4XVsyXSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9maWxsSW1nKHRoaXMuX29TZXROb3dbX2luZGV4XSwgX2luZGV4KVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL+ihqOaYjuW3suWIneWni+WMllxyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX29TZXROb3dbX2luZGV4XS5pbWdMb2FkZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX29TZXROb3dbX2luZGV4XS5pbWdMb2FkZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBfZmlsbEltZzogZnVuY3Rpb24gKGFTZXQsIGluZGV4KSB7Ly/liqDovb3lm77niYdcclxuICAgICAgICAgICAgdmFyIF9jb250YWluZXIgPSAkKFwiaHFfXCIgKyBocURhdGFbdGhpcy5fc01hcmtldF0uaWQpLmZpcnN0Q2hpbGQubmV4dFNpYmxpbmc7XHJcbiAgICAgICAgICAgIHZhciBfaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICAgICAgICAgIF9pbWcuc3JjID0gW2FTZXRbMl0sIGFTZXRbMl0uaW5kZXhPZignPycpID49IDAgPyAnJicgOiBcIj9cIiwgJ3I9JyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCldLmpvaW4oXCJcIik7XHJcbiAgICAgICAgICAgIGlmIChfaW1nLm9ucmVhZHlzdGF0ZWNoYW5nZSkge1xyXG4gICAgICAgICAgICAgICAgX2ltZy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSB0aGlzLmluc2VydEJjLkJpbmQodGhpcywgX2NvbnRhaW5lciwgX2ltZywgYVNldFszXSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBfaW1nLm9ubG9hZCA9IHRoaXMuaW5zZXJ0QmMuQmluZCh0aGlzLCBfY29udGFpbmVyLCBfaW1nLCBhU2V0WzNdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaW5zZXJ0QmM6IGZ1bmN0aW9uIChfY29udGFpbmVyLCBfaW1nLCBfaGFzbGluaykgey8v5YOP55uu5qCH5a655Zmo5aGr5YWF5Zu+54mHXHJcbiAgICAgICAgICAgIGlmIChfaW1nLm9ucmVhZHlzdGF0ZWNoYW5nZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKF9pbWcucmVhZHlTdGF0ZSAhPSAnbG9hZGVkJyAmJiBfaW1nLnJlYWR5U3RhdGUgIT0gJ2NvbXBsZXRlJykgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9jb250YWluZXIuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICAgICAgaWYgKF9oYXNsaW5rICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgIHZhciBfbGluayA9ICRDKFwiQVwiKTtcclxuICAgICAgICAgICAgICAgIF9saW5rLnRhcmdldCA9IFwiX2JsYW5rXCI7XHJcbiAgICAgICAgICAgICAgICBfbGluay5jbGFzc05hbWUgPSBcInBpY2xpbmtcIjtcclxuICAgICAgICAgICAgICAgIF9saW5rLmhyZWYgPSBfaGFzbGluaztcclxuICAgICAgICAgICAgICAgIF9saW5rLnNldEF0dHJpYnV0ZShcImhpZGVGb2N1c1wiLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIF9saW5rLmFwcGVuZENoaWxkKF9pbWcpO1xyXG4gICAgICAgICAgICAgICAgX2NvbnRhaW5lci5hcHBlbmRDaGlsZChfbGluayk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBfY29udGFpbmVyLmFwcGVuZENoaWxkKF9pbWcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9pbWcuaGVpZ2h0ID0gMTIzO1xyXG4gICAgICAgICAgICBfaW1nLndpZHRoID0gMjIwO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICAvL3dpbmRvdy5TdG9ja0luZGV4ID0gU3RvY2tJbmRleDtcclxuICAgIFxyXG4vKlxyXG4gICAgdmFyIHpqbHhEYXRhID0ge1xyXG4gICAgICAgIENGX0NTSTogey8v5rKq5rexXHJcbiAgICAgICAgICAgIGlkOiBcIkNGX0NTSVwiLFxyXG4gICAgICAgICAgICBzZXQ6IFsnaHR0cDovL2RhdGEuZWFzdG1vbmV5LmNvbS96amx4L2RwempseC5odG1sJywgJy8vY21zanMuZWFzdG1vbmV5LmNvbS9kYXRhL3pqbHhpbWcvempseF9sc19taW4ucG5nJ11cclxuICAgICAgICB9LFxyXG4gICAgICAgIENGX1NIQTogey8v5rKq5biCXHJcbiAgICAgICAgICAgIGlkOiBcIkNGX1NIQVwiLFxyXG4gICAgICAgICAgICBzZXQ6IFsnaHR0cDovL2RhdGEuZWFzdG1vbmV5LmNvbS96amx4L3pzMDAwMDAxLmh0bWwnLCAnLy9jbXNqcy5lYXN0bW9uZXkuY29tL2RhdGEvempseGltZy96amx4X3NoYV9taW4ucG5nJ11cclxuICAgICAgICB9LFxyXG4gICAgICAgIENGX1NaQTogey8v5rex5biCXHJcbiAgICAgICAgICAgIGlkOiBcIkNGX1NaQVwiLFxyXG4gICAgICAgICAgICBzZXQ6IFsnaHR0cDovL2RhdGEuZWFzdG1vbmV5LmNvbS96amx4L3pzMzk5MDAxLmh0bWwnLCAnLy9jbXNqcy5lYXN0bW9uZXkuY29tL2RhdGEvempseGltZy96amx4X3N6YV9taW4ucG5nJ11cclxuICAgICAgICB9LFxyXG4gICAgICAgIENGX0NZQjogey8v5Yib5Lia5p2/XHJcbiAgICAgICAgICAgIGlkOiBcIkNGX0NZQlwiLFxyXG4gICAgICAgICAgICBzZXQ6IFsnaHR0cDovL2RhdGEuZWFzdG1vbmV5LmNvbS96amx4L3pzMzk5MDA2Lmh0bWwnLCAnLy9jbXNqcy5lYXN0bW9uZXkuY29tL2RhdGEvempseGltZy96amx4X2N5Yl9taW4ucG5nJ11cclxuICAgICAgICB9LFxyXG4gICAgICAgIENGX1NIQjogey8v5rKqQlxyXG4gICAgICAgICAgICBpZDogXCJDRl9TSEJcIixcclxuICAgICAgICAgICAgc2V0OiBbJ2h0dHA6Ly9kYXRhLmVhc3Rtb25leS5jb20vempseC96czAwMDAwMy5odG1sJywgJy8vY21zanMuZWFzdG1vbmV5LmNvbS9kYXRhL3pqbHhpbWcvempseF9zaGJfbWluLnBuZyddXHJcbiAgICAgICAgfSxcclxuICAgICAgICBDRl9TWkI6IHsvL+a3sUJcclxuICAgICAgICAgICAgaWQ6IFwiQ0ZfU1pCXCIsXHJcbiAgICAgICAgICAgIHNldDogWydodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL3pqbHgvenMzOTkwMDMuaHRtbCcsICcvL2Ntc2pzLmVhc3Rtb25leS5jb20vZGF0YS96amx4aW1nL3pqbHhfc3piX21pbi5wbmcnXVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB2YXIgQ2FwaXRhbEZsb3dzID0gey8v6LWE6YeR5rWB5ZCRXHJcbiAgICAgICAgdGFiT2JqczogW10sXHJcbiAgICAgICAgaW1nRnFjOiAxODAwMDAsXHJcbiAgICAgICAgYWN0aXZlSW1nOiAwLFxyXG4gICAgICAgIGFwcGx5OiBmdW5jdGlvbiAodGFiSWQsIGNvbnRlbnRJZCwgcmVmQnRuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RhYnNFbGVtZW50ID0gJCh0YWJJZCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50ID0gJChjb250ZW50SWQpO1xyXG4gICAgICAgICAgICBpZiAocmVmQnRuKSB0aGlzLl9yZWZyZXNoRWxlbWVudCA9ICQocmVmQnRuKTtcclxuICAgICAgICAgICAgdGhpcy5faW5pdENvbnRlbnQoKTtcclxuICAgICAgICAgICAgdGhpcy5fdGFiQ3RybCA9IG5ldyBNdXR1YWxUYWIodGhpcy5fdGFic0VsZW1lbnQsIHRoaXMuX2NvbnRlbnRFbGVtZW50LCBcIm1vdXNlb3ZlclwiLCB0aGlzLnRhYk9ianMsIHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLl9zdGFydCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgX2luaXRDb250ZW50OiBmdW5jdGlvbiAoKSB7Ly/liJ3lp4vljJbkuLvkvZPnu5PmnoRcclxuICAgICAgICAgICAgdmFyIHRhYnMgPSB0aGlzLl90YWJzRWxlbWVudDtcclxuICAgICAgICAgICAgdmFyIHRhYkNvbnRlbnQgPSB0aGlzLl9jb250ZW50RWxlbWVudDtcclxuICAgICAgICAgICAgdmFyIHRlbXBUYWJzID0gdGFicy5jaGlsZE5vZGVzO1xyXG5cclxuICAgICAgICAgICAgdmFyIHNob3dTdHlsZSA9ICcnLCBpbm5lckNvbnRlbnQgPSAnJztcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZW1wVGFicy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRlbXBUYWJzW2ldLm5vZGVUeXBlID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYk9ianMucHVzaCh0aGlzLnNob3cuQmluZCh0aGlzLCB6amx4RGF0YVt0ZW1wVGFic1tpXS5pZF0pKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJDb250ZW50ICs9ICc8ZGl2IGNsYXNzPVwic2MtY29udC1pbWcgcDEwMjBcIiBpZD1cInpqbHhfJyArIHRlbXBUYWJzW2ldLmlkICsgJ1wiJyArIHNob3dTdHlsZSArICc+JztcclxuICAgICAgICAgICAgICAgICAgICBpZiAoc2hvd1N0eWxlID09ICcnKSBzaG93U3R5bGUgPSAnIHN0eWxlPVwiZGlzcGxheTpub25lO1wiJztcclxuICAgICAgICAgICAgICAgICAgICBpbm5lckNvbnRlbnQgKz0gJzxhIGhpZGVmb2N1cz1cInRydWVcIj48L2E+JztcclxuICAgICAgICAgICAgICAgICAgICBpbm5lckNvbnRlbnQgKz0gJzx1bCBjbGFzcz1cInNjLWNvbnQtaW1nbGlua1wiPjxsaT48YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2RhdGEuZWFzdG1vbmV5LmNvbS96amx4L2RldGFpbC5odG1sXCI+5o6S6KGMPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL3pqbHgvbGlzdC5odG1sXCI+5Li75YqbPC9hPjwvbGk+PGxpPjxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vZGF0YS5lYXN0bW9uZXkuY29tL2JremovamxyLmh0bWxcIj7nm5HmtYs8L2E+PC9saT48L3VsPic7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5uZXJDb250ZW50ICs9ICc8L2Rpdj4nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRhYkNvbnRlbnQuaW5uZXJIVE1MID0gaW5uZXJDb250ZW50O1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgX3N0YXJ0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RhYkN0cmwuc2hvd1RhYigwLCB0aGlzLnNob3cuQmluZCh0aGlzLCB6amx4RGF0YS5DRl9DU0kpKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIHNob3c6IGZ1bmN0aW9uIChhRGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLl9zTWFya2V0ID0gYURhdGEuaWQ7XHJcbiAgICAgICAgICAgIHRoaXMuX29TZXROb3cgPSBhRGF0YS5zZXQ7XHJcbiAgICAgICAgICAgIHZhciBfaW1nQ2FsbGJhY2sgPSBbXTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2xvYWRJbWcoKTtcclxuICAgICAgICAgICAgLy8kKFwiempseF9cIiArIGFEYXRhLmlkKS5sYXN0Q2hpbGQuaW5uZXJIVE1MID0gdGhpcy5fb1NldE5vd1syXTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIF9sb2FkSW1nOiBmdW5jdGlvbiAoc0lEKSB7Ly/liqDovb3lubblvIDlkK/oh6rliLfmlrDlm77niYdcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3JlZnJlc2hFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc0lEICE9IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZWZyZXNoRWxlbWVudC5vbmNsaWNrID0gdGhpcy5fbG9hZEltZy5CaW5kKHRoaXMsIHNJRCk7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaEVsZW1lbnQub25jbGljayA9IHRoaXMuX2xvYWRJbWcuQmluZCh0aGlzLCAwKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX2ltZ3RpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5faW1ndGltZW91dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5faW1ndGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KHRoaXMuX2xvYWRJbWcuQmluZCh0aGlzKSwgdGhpcy5pbWdGcWMpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX29TZXROb3dbMV0gIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsbEltZyh0aGlzLl9vU2V0Tm93LCBzSUQpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIF9maWxsSW1nOiBmdW5jdGlvbiAoYVNldCwgaW5kZXgpIHtcclxuICAgICAgICAgICAgdmFyIF9jb250YWluZXIgPSAkKFwiempseF9cIiArIHRoaXMuX3NNYXJrZXQpLmZpcnN0Q2hpbGQ7XHJcbiAgICAgICAgICAgIHZhciBfaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICAgICAgICAgIF9pbWcuc3JjID0gW2FTZXRbMV0sIGFTZXRbMV0uaW5kZXhPZignPycpID49IDAgPyAnJicgOiBcIj9cIiwgJ3I9JyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCldLmpvaW4oXCJcIik7XHJcbiAgICAgICAgICAgIGlmIChfaW1nLm9ucmVhZHlzdGF0ZWNoYW5nZSkge1xyXG4gICAgICAgICAgICAgICAgX2ltZy5vbnJlYWR5c3RhdGVjaGFuZ2UgPSB0aGlzLmluc2VydEJjLkJpbmQodGhpcywgX2NvbnRhaW5lciwgX2ltZywgYVNldFswXSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBfaW1nLm9ubG9hZCA9IHRoaXMuaW5zZXJ0QmMuQmluZCh0aGlzLCBfY29udGFpbmVyLCBfaW1nLCBhU2V0WzBdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgaW5zZXJ0QmM6IGZ1bmN0aW9uIChfY29udGFpbmVyLCBfaW1nLCBfaGFzbGluaykge1xyXG4gICAgICAgICAgICBpZiAoX2ltZy5vbnJlYWR5c3RhdGVjaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgIGlmIChfaW1nLnJlYWR5U3RhdGUgIT0gJ2xvYWRlZCcgJiYgX2ltZy5yZWFkeVN0YXRlICE9ICdjb21wbGV0ZScpIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBfY29udGFpbmVyLmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICAgICAgICAgIGlmIChfaGFzbGluayAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgX2xpbmsgPSBfY29udGFpbmVyO1xyXG4gICAgICAgICAgICAgICAgX2xpbmsudGFyZ2V0ID0gXCJfYmxhbmtcIjtcclxuICAgICAgICAgICAgICAgIF9saW5rLmNsYXNzTmFtZSA9IFwicGljbGlua1wiO1xyXG4gICAgICAgICAgICAgICAgX2xpbmsuaHJlZiA9IF9oYXNsaW5rO1xyXG4gICAgICAgICAgICAgICAgX2xpbmsuYXBwZW5kQ2hpbGQoX2ltZyk7XHJcbiAgICAgICAgICAgICAgICAvL19jb250YWluZXIuYXBwZW5kQ2hpbGQoX2xpbmspO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgX2NvbnRhaW5lci5hcHBlbmRDaGlsZChfaW1nKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9pZihfaGFzbGluayAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgIC8vIHZhciBfbGluayA9ICRDKFwiQVwiKTtcclxuICAgICAgICAgICAgLy8gX2xpbmsudGFyZ2V0ID0gXCJfYmxhbmtcIjtcclxuICAgICAgICAgICAgLy8gX2xpbmsuaHJlZiA9IF9oYXNsaW5rO1xyXG4gICAgICAgICAgICAvLyBfbGluay5zZXRBdHRyaWJ1dGUoXCJoaWRlRm9jdXNcIix0cnVlKTtcclxuICAgICAgICAgICAgLy8gX2xpbmsuYXBwZW5kQ2hpbGQoX2ltZyk7XHJcbiAgICAgICAgICAgIC8vIF9jb250YWluZXIuYXBwZW5kQ2hpbGQoX2xpbmspO1xyXG4gICAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBfY29udGFpbmVyLmFwcGVuZENoaWxkKF9pbWcpO1xyXG4gICAgICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgICAgICBfaW1nLmhlaWdodCA9IDEyMztcclxuICAgICAgICAgICAgX2ltZy53aWR0aCA9IDIyMDtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgd2luZG93LkNhcGl0YWxGbG93cyA9IENhcGl0YWxGbG93cztcclxuKi9cclxuXHJcbiAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJocXp4XCIpKSB7XHJcbiAgICAgICAgU3RvY2tJbmRleC5hcHBseSgnc3RvY2tUYWJzJywgJ3N0b2NrQ29udGVudCcsICdyZWZidG5fc3RvY2snKTtcclxuICAgIH1cclxufSkoKTtcclxuXHJcblxyXG5cclxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9tb2R1bGVzL2xpc3QvRU1fSHF6eF8xLmpzXG4vLyBtb2R1bGUgaWQgPSA3XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIu+7vy8v5rKq5rex6IKh5biCXHJcbihmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgX2hzZ3MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIkhzZ3MxXCIpO1xyXG4gICAgaWYgKCEhX2hzZ3MpIHtcclxuICAgICAgICAvLyDmjIfmlbBcclxuICAgICAgICBqUXVlcnkuYWpheCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgIHVybDogXCIvL3B1c2gyLmVhc3Rtb25leS5jb20vYXBpL3F0L3VsaXN0Lm5wL2dldD9zZWNpZHM9MS4wMDAwMDEsMC4zOTkwMDEmZmllbGRzPWYxLGYyLGYzLGY0LGYxMixmMTMsZjE0LGYxMDQsZjEwNSxmMTA2JmZsdHQ9MiZpbnZ0PTImdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTlcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnA6IFwiY2JcIixcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24gJiYganNvbi5yYyA9PSAwICYmIGpzb24uZGF0YSAmJiBqc29uLmRhdGEuZGlmZikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2h0bWwgPSAnJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB6ZGZJbmZvID0gZ2V0WkRGSW5mbyhqc29uLmRhdGEuZGlmZltpXS5mMyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hzeiA9IFwi5LiK6K+BXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hzekxpbmtVcCA9IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMxMF8wXzBfdT9zb3J0VHlwZT1DJnNvcnRSdWxlPS0xXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hzekxpbmtEb3duID0gXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9jZW50ZXIvbGlzdC5odG1sIzEwXzBfMF9kP3NvcnRUeXBlPUMmc29ydFJ1bGU9MVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoc3ogPSBcIua3seivgVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoc3pMaW5rVXAgPSBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2NlbnRlci9saXN0Lmh0bWwjMjBfMF8wX3U/c29ydFR5cGU9QyZzb3J0UnVsZT0tMVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoc3pMaW5rRG93biA9IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vY2VudGVyL2xpc3QuaHRtbCMyMF8wXzBfZD9zb3J0VHlwZT1DJnNvcnRSdWxlPTFcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICc8dWw+PGxpIGNsYXNzPVwiZmlyc3RcIj48YSBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8nICsganNvbi5kYXRhLmRpZmZbaV0uZjEzICsgJy4nICsganNvbi5kYXRhLmRpZmZbaV0uZjEyICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiPicgKyBzaHN6ICsgJzwvYT48L2xpPjxsaSBjbGFzcz1cInNlY29uZCAnICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIGdzaE51bShqc29uLmRhdGEuZGlmZltpXS5mMiwganNvbi5kYXRhLmRpZmZbaV0uZjEpICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyB6ZGZJbmZvLl9kYXRhICsgJzwvbGk+PGxpPua2qDxhIGhyZWY9XCInICsgc2hzekxpbmtVcCArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIiBjbGFzcz1cInpzLXVwXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMDQgKyAnPC9hPjwvbGk+PGxpPuW5sycgKyBqc29uLmRhdGEuZGlmZltpXS5mMTA2ICsgJzwvbGk+PGxpPui3jDxhIGhyZWY9XCInICsgc2hzekxpbmtEb3duICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwienMtZG93blwiPicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTA1ICsgJzwvYT48L2xpPjwvdWw+JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNwb2ludFInKS5odG1sKF9odG1sKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyDkuKrogqFcclxuICAgICAgICBqUXVlcnkuYWpheCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgIHVybDogXCIvL3B1c2gyLmVhc3Rtb25leS5jb20vYXBpL3F0L2NsaXN0L2dldD9wbj0xJnB6PTMmcG89MSZucD0xJmZsdHQ9MiZpbnZ0PTImZmlkPWY2MiZmcz1tOjArdDo2LG06MCt0OjEzLG06MCt0OjgwLG06MSt0OjImZmllbGRzPWYxLGYyLGYzLGY4LGYxMixmMTMsZjE0LGYxNTIsZjYyJnV0PTEzNjk3YTFjYzY3N2M4YmZhOWE0OTY0MzdiZmVmNDE5XCIsXHJcbiAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25wXCIsXHJcbiAgICAgICAgICAgIGpzb25wOiBcImNiXCIsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChqc29uKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChqc29uICYmIGpzb24ucmMgPT0gMCAmJiBqc29uLmRhdGEgJiYganNvbi5kYXRhLmRpZmYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9odG1sID0gJyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgemRmSW5mbyA9IGdldFpERkluZm8oanNvbi5kYXRhLmRpZmZbaV0uZjMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHpqbEluZm8gPSBnZXRaREZJbmZvKGpzb24uZGF0YS5kaWZmW2ldLmY2Mik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2psID0gXCItXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoempsSW5mby5fY2xhc3MgIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNqbCA9IChwYXJzZUZsb2F0KGpzb24uZGF0YS5kaWZmW2ldLmY2MikgLyAxMDAwMCkudG9GaXhlZCgwKSArICfkuIcnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2h0bWwgKz0gJzx1bD48bGkgY2xhc3M9XCJmaXJzdFwiPjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLycgKyBqc29uLmRhdGEuZGlmZltpXS5mMTMgKyAnLicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTIgKyAnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmYxNCArICc8L2E+PC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIGdzaE51bShqc29uLmRhdGEuZGlmZltpXS5mMiwganNvbi5kYXRhLmRpZmZbaV0uZjEpICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyB6ZGZJbmZvLl9kYXRhICsgJzwvbGk+PGxpPicgKyBnZXRaREZJbmZvKGpzb24uZGF0YS5kaWZmW2ldLmY4KS5fZGF0YSArICc8L2xpPjxsaSBjbGFzcz1cIicgKyB6amxJbmZvLl9jbGFzcyArICdcIj4nICsgY2psICsgJzwvbGk+PC91bD4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI2hzZ3NQU3RvY2snKS5hcHBlbmQoX2h0bWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGdzaE51bShzdHIsIHN0cmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpZiAoc3RyID09PSBcIlwiIHx8IHN0ciA9PSBcIi1cIikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiLVwiO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRaZGYgPSBwYXJzZUZsb2F0KHN0cik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZFpkZi50b0ZpeGVkKHN0cmxlbmd0aCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGdldFpERkluZm8oc3RyKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09IFwiLVwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwiXCIsIF9kYXRhOiBcIi1cIiB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRaZGYgPSBwYXJzZUZsb2F0KHN0cik7XHJcbiAgICAgICAgICAgICAgICBpZiAoZFpkZiA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwicmVkXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkWmRmIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJncmVlblwiLCBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCIgfTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgX2NsYXNzOiBcIlwiLCBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCIgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbn0pKGpRdWVyeSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9tb2R1bGVzL2xpc3QvRU1fSHNnc18xLmpzXG4vLyBtb2R1bGUgaWQgPSA4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIu+7vy8vIOacn+adg+ihjOaDhVxyXG4oZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIF9xcWhxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJRcWhxMVwiKTtcclxuICAgIGlmICghIV9xcWhxKSB7XHJcbiAgICAgICAgLy8g5qCH55qEXHJcbiAgICAgICAgalF1ZXJ5LmFqYXgoe1xyXG4gICAgICAgICAgICB0eXBlOiBcIkdFVFwiLFxyXG4gICAgICAgICAgICB1cmw6IFwiLy9wdXNoMi5lYXN0bW9uZXkuY29tL2FwaS9xdC9zdG9jay9nZXQ/c2VjaWQ9MS41MTAwNTAmZmllbGRzPWY0MyxmNTksZjE1MixmNTcsZjU4LGYxMDcsZjE2OSxmMTcwJmZsdHQ9MiZpbnZ0PTImdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTlcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnA6IFwiY2JcIixcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb24gJiYganNvbi5yYyA9PSAwICYmIGpzb24uZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgemRmSW5mbyA9IGdldFpERkluZm8oanNvbi5kYXRhLmYxNzApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2h0bWwgPSAnPGxpIGNsYXNzPVwiZmlyc3RcIj48YSBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8nICsganNvbi5kYXRhLmYxMDcgKyAnLicgKyBqc29uLmRhdGEuZjU3ICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiPicgKyBqc29uLmRhdGEuZjU4ICsgJzwvYT48L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsgZ3NoTnVtKGpzb24uZGF0YS5mNDMsIDMpICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyBnc2hOdW0oanNvbi5kYXRhLmYxNjksMykgKyAnPC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIHpkZkluZm8uX2RhdGEgKyAnPC9saT4nO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoXCIjUXFiZFwiKS5hcHBlbmQoX2h0bWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIC8vIOiupOi0rVxyXG4gICAgICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICAgICAgdHlwZTogXCJHRVRcIixcclxuICAgICAgICAgICAgdXJsOiBcIi8vcHVzaDIuZWFzdG1vbmV5LmNvbS9hcGkvcXQvY2xpc3QvZ2V0P3BuPTEmcHo9MiZwbz0xJm5wPTEmZmx0dD0yJmludnQ9MiZmaWQ9ZjYmZnM9bToxMCt0OjE3MyZmaWVsZHM9ZjEsZjIsZjMsZjQsZjUsZjEyLGYxMyxmMTQmdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTlcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnA6IFwiY2JcIixcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcclxuICAgICAgICAgICAgICAgIHZhciBfaHRtbCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgemRmSW5mbyA9IGdldFpERkluZm8oanNvbi5kYXRhLmRpZmZbaV0uZjMpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICc8dWw+PGxpIGNsYXNzPVwiZmlyc3RcIj48YSBocmVmPVwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vdW5pZnkvci8nICsganNvbi5kYXRhLmRpZmZbaV0uZjEzICsgJy4nICsganNvbi5kYXRhLmRpZmZbaV0uZjEyICsgJ1wiIHRhcmdldD1cIl9ibGFua1wiPicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTQgKyAnPC9hPjwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyBqc29uLmRhdGEuZGlmZltpXS5mMiArICc8L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjQgKyAnPC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIHpkZkluZm8uX2RhdGEgKyAnPC9saT48L3VsPic7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoXCIjUXFyZW5nb3VcIikuYXBwZW5kKF9odG1sKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyDorqTmsr1cclxuICAgICAgICBqUXVlcnkuYWpheCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgIHVybDogXCIvL3B1c2gyLmVhc3Rtb25leS5jb20vYXBpL3F0L2NsaXN0L2dldD9wbj0xJnB6PTImcG89MSZucD0xJmZsdHQ9MiZpbnZ0PTImZmlkPWY2JmZzPW06MTArdDoxNzQmZmllbGRzPWYxLGYyLGYzLGY0LGY1LGYxMixmMTMsZjE0JnV0PTEzNjk3YTFjYzY3N2M4YmZhOWE0OTY0MzdiZmVmNDE5XCIsXHJcbiAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25wXCIsXHJcbiAgICAgICAgICAgIGpzb25wOiBcImNiXCIsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChqc29uKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgX2h0bWwgPSAnJztcclxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHpkZkluZm8gPSBnZXRaREZJbmZvKGpzb24uZGF0YS5kaWZmW2ldLmYzKTtcclxuICAgICAgICAgICAgICAgICAgICBfaHRtbCArPSAnPHVsPjxsaSBjbGFzcz1cImZpcnN0XCI+PGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VuaWZ5L3IvJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMyArICcuJyArIGpzb24uZGF0YS5kaWZmW2ldLmYxMiArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjE0ICsgJzwvYT48L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsganNvbi5kYXRhLmRpZmZbaV0uZjIgKyAnPC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmY0ICsgJzwvbGk+PGxpIGNsYXNzPVwiJyArIHpkZkluZm8uX2NsYXNzICsgJ1wiPicgKyB6ZGZJbmZvLl9kYXRhICsgJzwvbGk+PC91bD4nO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgalF1ZXJ5KFwiI1FxcmVuZ3VcIikuYXBwZW5kKF9odG1sKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBmdW5jdGlvbiBnc2hOdW0oc3RyLHN0cmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpZiAoc3RyID09PSBcIlwiIHx8IHN0ciA9PSBcIi1cIikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiLVwiO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRaZGYgPSBwYXJzZUZsb2F0KHN0cik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZFpkZi50b0ZpeGVkKHN0cmxlbmd0aCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGdldFpERkluZm8oc3RyKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09IFwiLVwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwiXCIsIF9kYXRhOiBcIi1cIiB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRaZGYgPSBwYXJzZUZsb2F0KHN0cik7XHJcbiAgICAgICAgICAgICAgICBpZiAoZFpkZiA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwicmVkXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkWmRmIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJncmVlblwiLCBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCIgfTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgX2NsYXNzOiBcIlwiLCBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCIgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbn0pKGpRdWVyeSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9tb2R1bGVzL2xpc3QvRU1fUXFocV8xLmpzXG4vLyBtb2R1bGUgaWQgPSA5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIu+7vy8vIOWFqOeQg+S4u+imgeaMh+aVsFxyXG4oZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIF96eXpzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJRcXp5enMxXCIpO1xyXG4gICAgaWYgKCEhX3p5enMpIHtcclxuICAgICAgICAvLyDmjIfmlbBcclxuICAgICAgICBqUXVlcnkuYWpheCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgIHVybDogXCIvL3B1c2gyLmVhc3Rtb25leS5jb20vYXBpL3F0L3VsaXN0Lm5wL2dldD9zZWNpZHM9MS4wMDAwMDEsMTAwLkhTSSwxMDAuREpJQSwxMDAuTjIyNSwxMDAuRlRTRSwxMDEuR0MwMFksMTAyLkNMMDBZLDEwMC5VREkmZmllbGRzPWYxLGYyLGYzLGY0LGYxMixmMTMsZjE0JmZsdHQ9MiZpbnZ0PTImdXQ9MTM2OTdhMWNjNjc3YzhiZmE5YTQ5NjQzN2JmZWY0MTlcIixcclxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvbnBcIixcclxuICAgICAgICAgICAganNvbnA6IFwiY2JcIixcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcclxuICAgICAgICAgICAgICAgIHZhciBfaHRtbCA9ICcnO1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA4OyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgemRmSW5mbyA9IGdldFpERkluZm8oanNvbi5kYXRhLmRpZmZbaV0uZjMpO1xyXG4gICAgICAgICAgICAgICAgICAgIF9odG1sICs9ICc8dWw+PGxpIGNsYXNzPVwibmFtZVwiPjxhIGhyZWY9XCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91bmlmeS9yLycgKyBqc29uLmRhdGEuZGlmZltpXS5mMTMgKyAnLicgKyBqc29uLmRhdGEuZGlmZltpXS5mMTIgKyAnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JyArIGpzb24uZGF0YS5kaWZmW2ldLmYxNCArICc8L2E+PC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnIHp4alwiPicgKyBnc2hOdW0oanNvbi5kYXRhLmRpZmZbaV0uZjIsIGpzb24uZGF0YS5kaWZmW2ldLmYxKSArICc8L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsgZ3NoTnVtKGpzb24uZGF0YS5kaWZmW2ldLmY0LCBqc29uLmRhdGEuZGlmZltpXS5mMSkgKyAnPC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIHpkZkluZm8uX2RhdGEgKyAnPC9saT48L3VsPic7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBqUXVlcnkoXCIjUXF6eXpzQ29uXCIpLmFwcGVuZChfaHRtbCk7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGdzaE51bShzdHIsIHN0cmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpZiAoc3RyID09PSBcIlwiIHx8IHN0ciA9PSBcIi1cIikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiLVwiO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRaZGYgPSBwYXJzZUZsb2F0KHN0cik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZFpkZi50b0ZpeGVkKHN0cmxlbmd0aCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGdldFpERkluZm8oc3RyKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09IFwiLVwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwiXCIsIF9kYXRhOiBcIi1cIiB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRaZGYgPSBwYXJzZUZsb2F0KHN0cik7XHJcbiAgICAgICAgICAgICAgICBpZiAoZFpkZiA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwicmVkXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkWmRmIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJncmVlblwiLCBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCIgfTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgX2NsYXNzOiBcIlwiLCBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCIgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcbn0pKGpRdWVyeSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9tb2R1bGVzL2xpc3QvRU1fUXF6eXpzXzEuanNcbi8vIG1vZHVsZSBpZCA9IDEwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIu+7vyhmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAoalF1ZXJ5KFwiI1N0b2NrQ29kZV9iYXJcIikubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHdpbmRvdy5uZXdzdWdnZXN0ID0gbmV3IHN1Z2dlc3QyMDE3KHtcclxuICAgICAgICAgICAgaW5wdXRpZDogJ1N0b2NrQ29kZV9iYXInLFxyXG4gICAgICAgICAgICBvZmZzZXQ6IHsgbGVmdDogMCwgdG9wOiAwIH0sXHJcbiAgICAgICAgICAgIHNob3duZXd0aXBzOiB0cnVlLFxyXG4gICAgICAgICAgICBuZXd0aXBzb2Zmc2V0OiB7IGxlZnQ6IDAsIHRvcDogMCB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn0oKSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9tb2R1bGVzL2xpc3QvRU1fU2VhcmNoX2xnLmpzXG4vLyBtb2R1bGUgaWQgPSAxMVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCLvu78oZnVuY3Rpb24gKCkge1xyXG4gICAgaWYgKGpRdWVyeShcIiNTdG9ja0NvZGVfYmFyX3NtX2NvbnRlbnRcIikubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHdpbmRvdy5uZXdzdWdnZXN0ID0gbmV3IHN1Z2dlc3QyMDE3KHtcclxuICAgICAgICAgICAgaW5wdXRpZDogJ1N0b2NrQ29kZV9iYXJfc21fY29udGVudCcsXHJcbiAgICAgICAgICAgIG9mZnNldDogeyBsZWZ0OiAtMTA3LCB0b3A6IDAgfSxcclxuICAgICAgICAgICAgc2hvd25ld3RpcHM6IHRydWUsXHJcbiAgICAgICAgICAgIG5ld3RpcHNvZmZzZXQ6IHsgbGVmdDogLTUsIHRvcDogLTQgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChqUXVlcnkoXCIjU3RvY2tDb2RlX2Jhcl9zbV9saXN0XCIpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB3aW5kb3cubmV3c3VnZ2VzdCA9IG5ldyBzdWdnZXN0MjAxNyh7XHJcbiAgICAgICAgICAgIGlucHV0aWQ6ICdTdG9ja0NvZGVfYmFyX3NtX2xpc3QnLFxyXG4gICAgICAgICAgICBvZmZzZXQ6IHsgbGVmdDogLTEwNywgdG9wOiAwIH0sXHJcbiAgICAgICAgICAgIHNob3duZXd0aXBzOiBmYWxzZSxcclxuICAgICAgICAgICAgbmV3dGlwc29mZnNldDogeyBsZWZ0OiAwLCB0b3A6IDAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgXHJcbn0oKSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9tb2R1bGVzL2xpc3QvRU1fU2VhcmNoX3NtLmpzXG4vLyBtb2R1bGUgaWQgPSAxMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCLvu78vLyDlpJbmsYfooYzmg4VcclxuKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBfd2hocSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiV2hocTFcIik7XHJcbiAgICBpZighIV93aGhxKXtcclxuICAgICAgICAvLyDmjIfmlbBcclxuICAgICAgICBqUXVlcnkuYWpheCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgIHVybDogXCIvL3B1c2gyLmVhc3Rtb25leS5jb20vYXBpL3F0L3N0b2NrL2dldD9zZWNpZD0xMDAuVURJJmZpZWxkcz1mNDMsZjU5LGYxNTIsZjU3LGY1OCxmMTA3LGYxNjksZjE3MCZmbHR0PTImaW52dD0yJnV0PTEzNjk3YTFjYzY3N2M4YmZhOWE0OTY0MzdiZmVmNDE5XCIsXHJcbiAgICAgICAgICAgIGRhdGFUeXBlOiBcImpzb25wXCIsXHJcbiAgICAgICAgICAgIGpzb25wOiBcImNiXCIsXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChqc29uKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChqc29uICYmIGpzb24ucmMgPT0gMCAmJiBqc29uLmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHpkZkluZm8gPSBnZXRaREZJbmZvKGpzb24uZGF0YS5mMTcwKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9odG1sID0gJzxsaSBjbGFzcz1cImZpcnN0XCI+PGEgaHJlZj1cImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL3VuaWZ5L3IvJyArIGpzb24uZGF0YS5mMTA3ICsgJy4nICsganNvbi5kYXRhLmY1NyArICdcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nICsganNvbi5kYXRhLmY1OCArICc8L2E+PC9saT48bGkgY2xhc3M9XCInICsgemRmSW5mby5fY2xhc3MgKyAnXCI+JyArIGdzaE51bShqc29uLmRhdGEuZjQzLCBqc29uLmRhdGEuZjU5KSArICc8L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsgZ3NoTnVtKGpzb24uZGF0YS5mMTY5LCBqc29uLmRhdGEuZjU5KSArICc8L2xpPjxsaSBjbGFzcz1cIicgKyB6ZGZJbmZvLl9jbGFzcyArICdcIj4nICsgemRmSW5mby5fZGF0YSArICc8L2xpPic7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShcIiNXaHpzXCIpLmh0bWwoX2h0bWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGdzaE51bShzdHIsIHN0cmxlbmd0aCkge1xyXG4gICAgICAgICAgICBpZiAoc3RyID09PSBcIlwiIHx8IHN0ciA9PSBcIi1cIikge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiLVwiO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRaZGYgPSBwYXJzZUZsb2F0KHN0cik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZFpkZi50b0ZpeGVkKHN0cmxlbmd0aCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZ1bmN0aW9uIGdldFpERkluZm8oc3RyKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHIgPT09IFwiXCIgfHwgc3RyID09IFwiLVwiKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwiXCIsIF9kYXRhOiBcIi1cIiB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRaZGYgPSBwYXJzZUZsb2F0KHN0cik7XHJcbiAgICAgICAgICAgICAgICBpZiAoZFpkZiA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBfY2xhc3M6IFwicmVkXCIsIF9kYXRhOiBkWmRmLnRvRml4ZWQoMikgKyBcIiVcIiB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkWmRmIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IF9jbGFzczogXCJncmVlblwiLCBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCIgfTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgX2NsYXNzOiBcIlwiLCBfZGF0YTogZFpkZi50b0ZpeGVkKDIpICsgXCIlXCIgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSkoalF1ZXJ5KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2pzL21vZHVsZXMvbGlzdC9FTV9XaGhxXzEuanNcbi8vIG1vZHVsZSBpZCA9IDEzXG4vLyBtb2R1bGUgY2h1bmtzID0gMCIsIu+7vyhmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgbGVuID0gNDsgICAgLy8g6K6w5b2V5p2h5pWwXHJcblxyXG4gICAgLy8g6I635Y+WY29va2llXHJcbiAgICB0aGlzLkdldENvb2tpZSA9IGZ1bmN0aW9uIChuYW1lKSB7XHJcbiAgICAgICAgdmFyIGRjID0gZG9jdW1lbnQuY29va2llO1xyXG4gICAgICAgIHZhciBwcmVmaXggPSBuYW1lICsgXCI9XCI7XHJcbiAgICAgICAgdmFyIGJlZ2luID0gZGMuaW5kZXhPZihcIjsgXCIgKyBwcmVmaXgpO1xyXG4gICAgICAgIGlmIChiZWdpbiA9PSAtMSkge1xyXG4gICAgICAgICAgICBiZWdpbiA9IGRjLmluZGV4T2YocHJlZml4KTtcclxuICAgICAgICAgICAgaWYgKGJlZ2luICE9IDApIHsgcmV0dXJuIG51bGwgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGJlZ2luICs9IDI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBlbmQgPSBkb2N1bWVudC5jb29raWUuaW5kZXhPZihcIjtcIiwgYmVnaW4pO1xyXG4gICAgICAgIGlmIChlbmQgPT0gLTEpIHtcclxuICAgICAgICAgICAgZW5kID0gZGMubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5lc2NhcGUoZGMuc3Vic3RyaW5nKGJlZ2luICsgcHJlZml4Lmxlbmd0aCwgZW5kKSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHZhciBkZWYgPSBbXCJhLXNoLTYwMDAwMC3mtablj5Hpk7booYxcIiwgXCJhLXN6LTMwMDAxNy3nvZHlrr/np5HmioBcIiwgXCJhLXNoLTYwMDAyMC3kuK3ljp/pq5jpgJ9cIiwgXCJhLXNoLTYwMDAwNS3mrabpkqLogqHku71cIl07XHJcblxyXG4gICAgdGhpcy5tYiA9IHsgXCJhXCI6IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vWyNNQVJLRVQjXVsjQ09ERSNdLmh0bWxcIiwgXCJiXCI6IFwiaHR0cDovL2d1YmEuZWFzdG1vbmV5LmNvbS90b3BpYyxbI0NPREUjXS5odG1sXCIsIFwiY1wiOiBcImh0dHA6Ly9mdW5kLmVhc3Rtb25leS5jb20vWyNDT0RFI10uaHRtbFwiLCBcImRcIjogXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9oay9bI0NPREUjXS5odG1sXCIsIFwiZVwiOiBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2d6cWgvWyNDT0RFI10uaHRtbFwiLCBcImZcIjogXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS96c1sjQ09ERSNdLmh0bWxcIiwgXCJnXCI6IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vcWlodW8vWyNDT0RFI10uaHRtbFwiLCBcImhcIjogXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9oay9bI0NPREUjXS5odG1sXCIsIFwiaVwiOiBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2hrL3pzWyNDT0RFI10uaHRtbFwiLCBcImpcIjogXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS91cy9bI0NPREUjXS5odG1sXCIsIFwia1wiOiBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2ZvcmV4L1sjQ09ERSNdLmh0bWxcIiwgXCJsXCI6IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vWyNNQVJLRVQjXVsjQ09ERSNdLmh0bWxcIiwgXCJtXCI6IFwiaHR0cDovL3F1b3RlLmVhc3Rtb25leS5jb20vZ2IvenNbI0NPREUjXS5odG1sXCIsIFwiblwiOiBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2dqcWgvWyNDT0RFI10uaHRtbFwiLCBcIm9cIjogXCJodHRwOi8vcXVvdGUuZWFzdG1vbmV5LmNvbS9xaXF1YW4vWyNDT0RFI11fWyNNQVJLRVQjXS5odG1sXCIsIFwicFwiOiBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tLzNiYW4vWyNNQVJLRVQjXVsjQ09ERSNdLmh0bWxcIiB9O1xyXG4gICAgaWYgKHRoaXMuR2V0Q29va2llKFwiZW1faHFfZmxzXCIpID09IFwibmV3XCIpIHtcclxuICAgICAgICB0aGlzLm1iLmEgPSBcImh0dHA6Ly9xdW90ZS5lYXN0bW9uZXkuY29tL2ZsYXNoL1sjTUFSS0VUI11bI0NPREUjXS5odG1sXCI7XHJcbiAgICB9XHJcbiAgICAvL1vnsbvlnosoYTrooYzmg4UsYjrogqHlkKcsYzrln7rph5EsZDrmuK/ogqEsZTrogqHmjIfmnJ/otKcsZjrlpKfnm5jmjIfmlbAsZzrmnJ/otKcsaDrmuK/ogqEsaTrmuK/ogqHmjIfmlbAsajrnvo7ogqEsazrlpJbmsYcsbDrlgLrliLgsbTrlhajnkIPmjIfmlbAsbjrlm73pmYXmnJ/otKcsbzrmnJ/mnYMscDoz5p2/KSzluILlnLoo5rKh5pyJ5Li6MCks5Luj56CBLOWQjeensF1cclxuICAgIHRoaXMubGVuID0gbGVuO1xyXG4gICAgdGhpcy5hZGRsZW4gPSAwO1xyXG4gICAgdGhpcy5yZXQgPSBbXTtcclxuXHJcbiAgICB0aGlzLmluaXQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5SZWFkSW5mbygpO1xyXG4gICAgfTtcclxuICAgIHRoaXMuUmVhZEluZm8gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdmFyIFN0ciA9IFwiPGRpdiBjbGFzcz1cXFwidGl0bGVcXFwiPuacgOi/keiuv+mXruiCoe+8mjwvZGl2Pjx1bD5cIjtcclxuICAgICAgICAgICAgdmFyIHNob3dsaXN0ID0gbmV3IEFycmF5KCk7XHJcbiAgICAgICAgICAgIHZhciBfY2t2ID0gdGhpcy5HZXRDb29raWUoXCJIQUxpc3RcIik7XHJcbiAgICAgICAgICAgIHZhciBja3Y7XHJcbiAgICAgICAgICAgIGlmIChfY2t2ICE9IFwiXCIgJiYgX2NrdiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgY2t2ID0gX2Nrdi5zcGxpdCgnLCcpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNrdi5sZW5ndGggPCBsZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZGxlbiA9IGxlbiAtIGNrdi5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBja3YubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaSA+PSBsZW4pIHsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICB2YXIgX3RtY24gPSBja3ZbaV07IHNob3dsaXN0LnB1c2goY2t2W2ldKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdG1jbiA9IF90bWNuLnNwbGl0KCctJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRtY24ubGVuZ3RoID09IDQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRwID0gdG1jblswXTsgdmFyIG1rID0gdG1jblsxXTsgdmFyIGNkID0gdG1jblsyXTsgdmFyIG5tID0gdG1jblszXTsgdmFyIGxrID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9sayA9IGV2YWwoXCJ0aGlzLm1iLlwiICsgdHApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGsgPSBfbGsucmVwbGFjZShcIlsjTUFSS0VUI11cIiwgbWspLnJlcGxhY2UoXCJbI0NPREUjXVwiLCBjZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFN0ciArPSBcIjxsaT48YSBocmVmPVxcXCJcIiArIGxrICsgXCJcXFwiIHRhcmdldD1cXFwiX2JsYW5rXFxcIj5cIiArIG5tICsgXCI8L2E+PC9saT5cIjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXQucHVzaChtayArIFwiLVwiICsgY2QgKyBcIi1cIiArIG5tKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3dsaXN0LnRvU3RyaW5nKCkuaW5kZXhPZihkZWZbaV0pID09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0bWNuID0gZGVmW2ldLnNwbGl0KCctJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bWNuLmxlbmd0aCA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHAgPSB0bWNuWzBdOyB2YXIgbWsgPSB0bWNuWzFdOyB2YXIgY2QgPSB0bWNuWzJdOyB2YXIgbm0gPSB0bWNuWzNdOyB2YXIgbGsgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9sayA9IGV2YWwoXCJ0aGlzLm1iLlwiICsgdHApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxrID0gX2xrLnJlcGxhY2UoXCJbI01BUktFVCNdXCIsIG1rKS5yZXBsYWNlKFwiWyNDT0RFI11cIiwgY2QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyICs9IFwiPGxpPjxhIGhyZWY9XFxcIlwiICsgbGsgKyBcIlxcXCIgdGFyZ2V0PVxcXCJfYmxhbmtcXFwiPlwiICsgbm0gKyBcIjwvYT48L2xpPlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXQucHVzaChtayArIFwiLVwiICsgY2QgKyBcIi1cIiArIG5tKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBTdHIgKz0gXCI8L3VsPlwiO1xyXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJaamZ3MVwiKSkge1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJaamZ3MVwiKS5pbm5lckhUTUwgPSBTdHI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuaW5pdCgpO1xyXG59KShqUXVlcnkpO1xuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vanMvbW9kdWxlcy9saXN0L0VNX1pqZndfMS5qc1xuLy8gbW9kdWxlIGlkID0gMTRcbi8vIG1vZHVsZSBjaHVua3MgPSAwIiwiXHJcbi8v576O5YWD5YWR5oyH5a6a6LSn5biB57yT5a2YXHJcbnZhciBFeFJhdGUgPSB7XHJcbiAgICBVU0Q6IDEsICAvL+e+juWFg1xyXG4gICAgRVVSOiAwLCAgLy/mrKflhYNcclxuICAgIEdCUDogMCwgIC8v6Iux6ZWRXHJcbiAgICBBVUQ6IDAsICAvL+a+s+WFg1xyXG4gICAgSlBZOiAwLCAgLy/ml6XlhYNcclxuICAgIENIRjogMCwgIC8v55Ge6YOOXHJcbiAgICBDQUQ6IDAsICAvL+WKoOWFg1xyXG4gICAgSEtEOiAwLCAgLy/muK/luIFcclxuICAgIENOWTogMCAgIC8v5Lq65rCR5biBICBcclxufTtcclxuXHJcbi8qXHJcblx0Zlx0LSDljp/otKfluIFcclxuXHR0XHQtIOWFkeaNoui0p+W4gVxyXG5cdGZuXHQtIOWbnuiwg+WHveaVsFxyXG4qL1xyXG5mdW5jdGlvbiBnZXRFeFJhdGUoZiwgdCwgZm4pIHtcclxuICAgIHZhciBpID0gMDtcclxuICAgIHZhciB1cGRhdGUgPSBmdW5jdGlvbiAociwgYikge1xyXG4gICAgICAgIGkrKztcclxuICAgICAgICBpZiAoaSA+IDMpIHJldHVybiBmYWxzZTtcclxuICAgICAgICB2YXIgbW9kID0gciArIFwiVVNEXCI7XHJcbiAgICAgICAgaWYgKGIgPT0gbnVsbCB8fCBiID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIGIgPSBmYWxzZTtcclxuICAgICAgICAgICAgbW9kID0gXCJVU0RcIiArIHI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYiA9IHRydWU7XHJcbiAgICAgICAgICAgIG1vZCA9IHIgKyBcIlVTRFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBqUXVlcnkuYWpheCh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwiR0VUXCIsXHJcbiAgICAgICAgICAgIHVybDogXCIvL3B1c2gyLmVhc3Rtb25leS5jb20vYXBpL3F0L3N0b2NrL2dldD9mbHR0PTImZmllbGRzPWY0MyxmNTcsZjU4LGYxMDcmc2VjaWQ9MTMzLlwiICsgbW9kICsgXCImdXQ9ZmE1ZmQxOTQzYzdiMzg2ZjE3MmQ2ODkzZGJmYmExMGImY2I9P1wiLFxyXG4gICAgICAgICAgICBkYXRhVHlwZTogXCJqc29ucFwiLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoanNvbikge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0ganNvbi5kYXRhLmY0MztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbCAhPSBcInVuZGVmaW5lZFwiICYmICFpc05hTih2YWwpICYmIHZhbCAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IChiID09IGZhbHNlKSA/IHZhbCA6IHBhcnNlRmxvYXQoMSAvIHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoXCJFeFJhdGUuXCIgKyByICsgXCIgPVwiICsgdmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIgPT0gbnVsbCB8fCBiID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUociwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeyB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIHZhciBjYWwgPSBmdW5jdGlvbiAoc3RhdGUpIHtcclxuICAgICAgICBpZiAoc3RhdGUgIT0gbnVsbCkgeyAvL+ayoeacieWPluWIsOaxh+eOh1xyXG4gICAgICAgICAgICBvYmoudmFsdWUgPSBcIi4uLlwiO1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciByYXRlMSA9IGV2YWwoXCJFeFJhdGUuXCIgKyBmKTtcclxuICAgICAgICB2YXIgcmF0ZTIgPSBldmFsKFwiRXhSYXRlLlwiICsgdCk7XHJcbiAgICAgICAgdmFyIHJhdGUgPSAxO1xyXG4gICAgICAgIGlmIChpc05hTihyYXRlMSkgfHwgcmF0ZTEgPT0gMCkge1xyXG4gICAgICAgICAgICB1cGRhdGUoZik7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc05hTihyYXRlMikgfHwgcmF0ZTIgPT0gMCkge1xyXG4gICAgICAgICAgICB1cGRhdGUodCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmF0ZSA9IHBhcnNlRmxvYXQocmF0ZTIpIC8gcGFyc2VGbG9hdChyYXRlMSk7XHJcbiAgICAgICAgICAgIGZuKHJhdGUpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBjYWwoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2xvZGNvbnYob2JqMSwgb2JqMiwgdCkge1xyXG4gICAgdmFyIHZhbCA9IG9iajEudmFsdWU7XHJcbiAgICBvYmoyLnZhbHVlID0gXCJcIjtcclxuICAgIGlmICh2YWwgPT0gbnVsbCB8fCB2YWwgPT0gXCJcIikge1xyXG4gICAgICAgIGFsZXJ0KFwi6K+36L6T5YWl6ZyA6KaB5o2i566X55qE6YeR6aKd77yBXCIpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAoaXNOYU4odmFsKSkge1xyXG4gICAgICAgIGFsZXJ0KFwi5o2i566X55qE6YeR6aKd5b+F6aG75piv5pWw5a2X77yBXCIpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAodmFsIDwgMCkge1xyXG4gICAgICAgIGFsZXJ0KFwi6YeR6aKd5b+F6aG75aSn5LqO562J5LqOMO+8gVwiKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICB2YXIgZm4gPSBmdW5jdGlvbiAoeCkge1xyXG4gICAgICAgIG9iajIudmFsdWUgPSB2YWwgKiB4O1xyXG4gICAgfVxyXG4gICAgaWYgKHQgPT0gMCkge1xyXG4gICAgICAgIGdldEV4UmF0ZShcIlVTRFwiLCBcIkNOSFwiLCBmdW5jdGlvbiAocikge1xyXG4gICAgICAgICAgICBvYmoyLnZhbHVlID0gKHZhbCAqIHIgLyAzMS4xMDM1KS50b0ZpeGVkKDIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBnZXRFeFJhdGUoXCJDTkhcIiwgXCJVU0RcIiwgZnVuY3Rpb24gKHIpIHtcclxuICAgICAgICAgICAgb2JqMi52YWx1ZSA9ICh2YWwgKiByICogMzEuMTAzNSkudG9GaXhlZCgyKTtcclxuXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmpRdWVyeShcIi5nb2xkX2NhbGMxXCIpLm9uKFwiY2xpY2tcIixmdW5jdGlvbigpe1xyXG4gICAgZ2xvZGNvbnYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ1c3ByaWNlXzFcIiksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjbnByaWNlXzFcIiksMCk7XHJcbn0pO1xyXG5cclxualF1ZXJ5KFwiLmdvbGRfY2FsYzJcIikub24oXCJjbGlja1wiLGZ1bmN0aW9uKCl7XHJcbiAgICBnbG9kY29udihkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNucHJpY2VfMlwiKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInVzcHJpY2VfMlwiKSwxKTtcclxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9tb2R1bGVzL2xpc3QvZ29sZF9jYWxjLmpzXG4vLyBtb2R1bGUgaWQgPSAxNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiLCJyZXF1aXJlKCcuLi9qcy9tb2R1bGVzL2xpc3QvRU1fSHNnc18xJyk7Ly/msqrmt7HogqHluIJcclxucmVxdWlyZSgnLi4vanMvbW9kdWxlcy9saXN0L0VNX1doaHFfMScpOy8v5aSW5rGH6KGM5oOFXHJcbnJlcXVpcmUoJy4uL2pzL21vZHVsZXMvbGlzdC9FTV9IamhxXzEnKTsvL+m7hOmHkeihjOaDhVxyXG5yZXF1aXJlKCcuLi9qcy9tb2R1bGVzL2xpc3QvRU1fUXFocV8xJyk7Ly/mnJ/mnYPooYzmg4VcclxucmVxdWlyZSgnLi4vanMvbW9kdWxlcy9saXN0L0VNX1Fxenl6c18xJyk7Ly/lhajnkIPkuLvopoHmjIfmlbBcclxucmVxdWlyZSgnLi4vanMvbW9kdWxlcy9saXN0L0VNX0hxenhfMScpOy8v6KGM5oOF5Lit5b+DXHJcbnJlcXVpcmUoJy4uL2pzL21vZHVsZXMvbGlzdC9FTV9TZWFyY2hfbGcnKTsvL+Wwj+aQnOe0ouahhlxyXG5yZXF1aXJlKCcuLi9qcy9tb2R1bGVzL2xpc3QvRU1fU2VhcmNoX3NtJyk7Ly/lpKfmkJzntKLmoYZcclxucmVxdWlyZSgnLi4vanMvbW9kdWxlcy9saXN0L0VNX1pqZndfMScpOy8v5pyA6L+R6K6/6Zeu6IKhXHJcbnJlcXVpcmUoJy4uL2pzL21vZHVsZXMvbGlzdC9FTV9HZ2hxXzEnKTsvL+a4r+iCoeihjOaDhVxyXG5yZXF1aXJlKCcuLi9qcy9tb2R1bGVzL2xpc3QvRU1fQ2pzcF8xJyk7Ly/otKLnu4/op4bpopFcclxucmVxdWlyZSgnLi4vanMvbW9kdWxlcy9saXN0L2dvbGRfY2FsYycpOy8v6buE6YeR6K6h566X5ZmoXHJcblxyXG5cclxuZnVuY3Rpb24gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShmYXRoZXJJZCwgdGFnTmFtZSwgY05hbWUpIHtcclxuICAgIHZhciBub2RlID0gZmF0aGVySWQgJiYgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZmF0aGVySWQpIHx8IGRvY3VtZW50O1xyXG4gICAgdGFnTmFtZSA9IHRhZ05hbWUgfHwgXCIqXCI7XHJcbiAgICBjTmFtZSA9IGNOYW1lLnNwbGl0KFwiIFwiKTtcclxuICAgIHZhciBjbGFzc05hbWVMZW5ndGggPSBjTmFtZS5sZW5ndGg7XHJcbiAgICB2YXIgbGVuID0gbnVsbDtcclxuICAgIHZhciBpID0gbnVsbDtcclxuICAgIGZvciAoaSA9IDAsIGxlbiA9IGNsYXNzTmFtZUxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgLy/liJvlu7rljLnphY3nsbvlkI3nmoTmraPliJlcclxuICAgICAgICBjTmFtZVtpXSA9IG5ldyBSZWdFeHAoXCIoXnxcXFxccylcIiArIGNOYW1lW2ldLnJlcGxhY2UoL1xcLS9nLCBcIlxcXFwtXCIpICsgXCIoXFxcXHN8JClcIik7XHJcbiAgICB9XHJcbiAgICB2YXIgZWxlbWVudHMgPSBub2RlLmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ05hbWUpO1xyXG4gICAgdmFyIHJlc3VsdCA9IFtdO1xyXG4gICAgdmFyIG4gPSAwO1xyXG4gICAgZm9yIChpID0gMCwgbGVuID0gZWxlbWVudHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICB2YXIgZWxlbWVudCA9IGVsZW1lbnRzW2ldO1xyXG4gICAgICAgIHdoaWxlIChjTmFtZVtuKytdLnRlc3QoZWxlbWVudC5jbGFzc05hbWUpKSB7ICAgIC8v5LyY5YyW5b6q546vXHJcbiAgICAgICAgICAgIGlmIChuID09PSBjbGFzc05hbWVMZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IGVsZW1lbnQ7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBuID0gMDtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG5ld3NMaXN0TW91c2VvdmVyKCkge1xyXG4gICAgdmFyIHBhcmVudEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcIm5ld3NMaXN0Q29udGVudFwiKSxcclxuICAgICAgICBsaXMgPSBwYXJlbnRFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwibGlcIiksXHJcbiAgICAgICAgbGVuID0gbGlzLmxlbmd0aCxcclxuICAgICAgICBpO1xyXG4gICAgbGVuID0gbGlzLmxlbmd0aDtcclxuICAgIC8v5q+P5LiqbGkg55qE6byg5qCH56e75YWl5LqL5Lu2XHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICBsaXNbaV0ub25tb3VzZW92ZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gXCIjZjdmN2Y3XCI7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBsaXNbaV0ub25tb3VzZW91dCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgdGhpcy5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIlwiO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGluaXRQYWdpbmcodG90bGVDb3VudCl7XHJcbiAgICBjb25zb2xlLmxvZyh0b3RsZUNvdW50KTtcclxuICAgIGlmICh0b3RsZUNvdW50ID4gMTAwMCkge1xyXG4gICAgICAgIHRvdGxlQ291bnQgPSAxMDAwO1xyXG4gICAgfVxyXG4gICAgdmFyIHRvdGxlUGFnZSA9IHBhcnNlSW50KHRvdGxlQ291bnQgLyBfX1BhZ2VTaXplKTtcclxuICAgIGlmICh0b3RsZUNvdW50ICUgX19QYWdlU2l6ZSAhPSAwKSB7XHJcbiAgICAgICAgdG90bGVQYWdlKys7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhcInRvdGxlUGFnZVwiLHRvdGxlUGFnZSk7XHJcbiAgICB2YXIgcGFnZXNMaW5rcyA9IFwiXCI7XHJcbiAgICBpZiAoX19QYWdlSW5kZXggIT0gMSkge1xyXG4gICAgICAgIC8vIHBhZ2VzTGlua3MgKz0gXCI8YSBvbmNsaWNrPVxcXCJqYXZhc2NyaXB0Ol9fUGFnZUluZGV4ID0gX19QYWdlSW5kZXggLSAxO2luaXROZXdzTGlzdCgpO1xcXCIgY2xhc3M9XFxcInByZXZcXFwiIHN0eWxlPVxcXCJjdXJzb3I6IHBvaW50ZXI7XFxcIj7kuIrkuIDpobU8L2E+XCI7XHJcbiAgICAgICAgcGFnZXNMaW5rcyArPSBcIjxhIGhyZWY9XFxcIlwiK19fRW5Db2RlICtcIl9cIisoX19QYWdlSW5kZXggLSAxKStcIi5odG1sXFxcIiB0YXJnZXQ9XFxcIl9zZWxmXFxcIiBjbGFzcz1cXFwicHJldlxcXCIgc3R5bGU9XFxcImN1cnNvcjogcG9pbnRlcjtcXFwiPuS4iuS4gOmhtTwvYT5cIjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHBhZ2VzTGlua3MgKz0gXCI8YSBjbGFzcz1cXFwicGFnZS1wcmV2IHVuY2xpY2tcXFwiPuS4iuS4gOmhtTwvYT5cIjtcclxuICAgIH1cclxuICAgIHZhciBzdGFydFBhZ2UgPSAxO1xyXG4gICAgdmFyIGVuZFBhZ2UgPSB0b3RsZVBhZ2U7XHJcbiAgICBpZiAoZW5kUGFnZSA+IDUpIHtcclxuICAgICAgICBpZiAoX19QYWdlSW5kZXggPiAzKSB7XHJcbiAgICAgICAgICAgIHN0YXJ0UGFnZSA9IF9fUGFnZUluZGV4IC0gMjtcclxuICAgICAgICAgICAgZW5kUGFnZSA9IF9fUGFnZUluZGV4ICsgMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVuZFBhZ2UgPSA1O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZW5kUGFnZSA+IHRvdGxlUGFnZSkge1xyXG4gICAgICAgICAgICBzdGFydFBhZ2UgPSB0b3RsZVBhZ2UgLSA0O1xyXG4gICAgICAgICAgICBlbmRQYWdlID0gdG90bGVQYWdlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChzdGFydFBhZ2UgPiAxKSB7XHJcbiAgICAgICAgLy8gcGFnZXNMaW5rcyArPSBcIjxhIG9uY2xpY2s9XFxcImphdmFzY3JpcHQ6X19QYWdlSW5kZXggPSAxO2luaXROZXdzTGlzdCgpO1xcXCIgc3R5bGU9XFxcImN1cnNvcjogcG9pbnRlcjtcXFwiPjE8L2E+XCI7XHJcbiAgICAgICAgcGFnZXNMaW5rcyArPSBcIjxhIGhyZWY9XFxcIlwiK19fRW5Db2RlK1wiLmh0bWxcXFwiIHRhcmdldD1cXFwiX3NlbGZcXFwiIHN0eWxlPVxcXCJjdXJzb3I6IHBvaW50ZXI7XFxcIj4xPC9hPlwiO1xyXG4gICAgICAgIGlmKHN0YXJ0UGFnZSA+IDIpe1xyXG4gICAgICAgICAgICBwYWdlc0xpbmtzICs9IFwiPHNwYW4+Li4uPC9zcGFuPlwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGZvciAodmFyIGkgPSBzdGFydFBhZ2U7IGkgPD0gZW5kUGFnZTsgaSsrKSB7XHJcbiAgICAgICAgaWYgKF9fUGFnZUluZGV4ID09IGkpIHtcclxuICAgICAgICAgICAgcGFnZXNMaW5rcyArPSBcIjxhIGNsYXNzPVxcXCJvblxcXCI+XCIgKyBpICsgXCI8L2E+XCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBwYWdlc0xpbmtzICs9IFwiPGEgb25jbGljaz1cXFwiamF2YXNjcmlwdDpfX1BhZ2VJbmRleCA9IFwiICsgaSArIFwiO2luaXROZXdzTGlzdCgpO1xcXCIgc3R5bGU9XFxcImN1cnNvcjogcG9pbnRlcjtcXFwiPlwiICsgaSArIFwiPC9hPlwiO1xyXG4gICAgICAgICAgICBwYWdlc0xpbmtzICs9IFwiPGEgaHJlZj1cXFwiXCIrX19FbkNvZGUgK1wiX1wiK2krXCIuaHRtbFxcXCIgdGFyZ2V0PVxcXCJfc2VsZlxcXCIgc3R5bGU9XFxcImN1cnNvcjogcG9pbnRlcjtcXFwiPlwiICsgaSArIFwiPC9hPlwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChlbmRQYWdlIDwgdG90bGVQYWdlKSB7XHJcbiAgICAgICAgaWYoZW5kUGFnZSA8IHRvdGxlUGFnZSAtIDEpe1xyXG4gICAgICAgICAgICBwYWdlc0xpbmtzICs9IFwiPHNwYW4+Li4uPC9zcGFuPlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBwYWdlc0xpbmtzICs9IFwiPGEgb25jbGljaz1cXFwiamF2YXNjcmlwdDpfX1BhZ2VJbmRleCA9IFwiICsgdG90bGVQYWdlICsgXCI7aW5pdE5ld3NMaXN0KCk7XFxcIiBzdHlsZT1cXFwiY3Vyc29yOiBwb2ludGVyO1xcXCI+XCIgKyB0b3RsZVBhZ2UgKyBcIjwvYT5cIjtcclxuICAgICAgICBwYWdlc0xpbmtzICs9IFwiPGEgaHJlZj1cXFwiXCIrX19FbkNvZGUgK1wiX1wiK3RvdGxlUGFnZStcIi5odG1sXFxcIiB0YXJnZXQ9XFxcIl9zZWxmXFxcIiBzdHlsZT1cXFwiY3Vyc29yOiBwb2ludGVyO1xcXCI+XCIgKyB0b3RsZVBhZ2UgKyBcIjwvYT5cIjtcclxuXHJcbiAgICB9XHJcbiAgICBpZiAoX19QYWdlSW5kZXggPCB0b3RsZVBhZ2UpIHtcclxuICAgICAgICAvLyBwYWdlc0xpbmtzICs9IFwiPGEgb25jbGljaz1cXFwiamF2YXNjcmlwdDpfX1BhZ2VJbmRleCA9IF9fUGFnZUluZGV4ICsgMTtpbml0TmV3c0xpc3QoKTtcXFwiIGNsYXNzPVxcXCJuZXh0XFxcIiBzdHlsZT1cXFwiY3Vyc29yOiBwb2ludGVyO1xcXCI+5LiL5LiA6aG1PC9hPlwiO1xyXG4gICAgICAgIHBhZ2VzTGlua3MgKz0gXCI8YSBocmVmPVxcXCJcIitfX0VuQ29kZSArXCJfXCIrKF9fUGFnZUluZGV4ICsgMSkrXCIuaHRtbFxcXCIgdGFyZ2V0PVxcXCJfc2VsZlxcXCIgY2xhc3M9XFxcIm5leHRcXFwiIHN0eWxlPVxcXCJjdXJzb3I6IHBvaW50ZXI7XFxcIj7kuIvkuIDpobU8L2E+XCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBwYWdlc0xpbmtzICs9IFwiPGEgY2xhc3M9XFxcIm5leHQgdW5jbGlja1xcXCI+5LiL5LiA6aG1PC9hPlwiO1xyXG4gICAgfVxyXG5cclxuICAgIGpRdWVyeShcIiNwYWdlck5vRGl2XCIpLmh0bWwocGFnZXNMaW5rcyk7XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBjb252ZXJ0VG9OZXdzTGlzdERhdGUoX2RhdGUpIHtcclxuICAgIHZhciByZWcgPS8oXFxkezR9KVxcLShcXGR7Mn0pXFwtKFxcZHsyfSkgKFxcZHsyfTpcXGR7Mn0pLztcclxuICAgIC8vIGNvbnNvbGUubG9nKF9kYXRlLF9kYXRlLm1hdGNoKHJlZykpO1xyXG4gICAgLy8gY29uc29sZS5sb2coX2RhdGUsX2RhdGUucmVwbGFjZShyZWcsXCIkMeW5tCQy5pyIJDPml6UgJDRcIikpO1xyXG4gICAgaWYoX2RhdGUubGVuZ3RoID4gMTYpe1xyXG4gICAgICAgIF9kYXRlID0gX2RhdGUuc3Vic3RyKDAsIDE2KS5yZXBsYWNlKHJlZyxcIiQx5bm0JDLmnIgkM+aXpSAkNFwiKTtcclxuICAgIH1cclxuICAgIHJldHVybiBfZGF0ZTtcclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdENvbHVtbkxpc3QoX2pzb24pe1xyXG4gICAgdmFyIF9odG1sID0gXCJcIjtcclxuICAgIGlmKF9qc29uICYmIF9qc29uLmRhdGEgJiYgX2pzb24uZGF0YS5saXN0KXtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9qc29uLmRhdGEubGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgaXRlbSA9IF9qc29uLmRhdGEubGlzdFtpXTtcclxuXHJcbiAgICAgICAgICAgIHZhciBjaGFyc2l6ZSA9IDEwMDtcclxuICAgICAgICAgICAgdmFyIHN0eWxlID0gXCJ0ZXh0IHRleHQtbm8taW1nXCI7XHJcblxyXG4gICAgICAgICAgICB2YXIgX3VybCA9IFwiaHR0cHM6Ly9maW5hbmNlLmVhc3Rtb25leS5jb20vYS9cIitpdGVtLmNvZGUrXCIuaHRtbFwiO1xyXG4gICAgICAgICAgICBpZihpdGVtLm5wX2RzdCA9PSBcIkNGSFwiKXtcclxuICAgICAgICAgICAgICAgIF91cmwgPSBcImh0dHA6Ly9jYWlmdWhhby5lYXN0bW9uZXkuY29tL25ld3MvXCIraXRlbS5jb2RlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9odG1sICs9ICc8bGkgaWQ9XCJuZXdzVHInK2krJ1wiPidcclxuICAgICAgICAgICAgaWYoaXRlbS5pbWFnZSAmJiBpdGVtLmltYWdlICE9IFwiXCIpe1xyXG4gICAgICAgICAgICAgICAgX2h0bWwgKz0gJzxkaXYgY2xhc3M9XCJpbWFnZVwiPic7XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cIicrX3VybCsnXCI+JztcclxuICAgICAgICAgICAgICAgIF9odG1sICs9ICc8aW1nIHNyYz1cIicraXRlbS5pbWFnZSsnXCIgLz4nO1xyXG4gICAgICAgICAgICAgICAgX2h0bWwgKz0gJzwvYT4nO1xyXG4gICAgICAgICAgICAgICAgX2h0bWwgKz0gJzwvZGl2Pic7XHJcbiAgICAgICAgICAgICAgICBjaGFyc2l6ZSA9IDgwO1xyXG4gICAgICAgICAgICAgICAgc3R5bGUgPSBcInRleHRcIjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIF9kZXNfYWxsID0gKGl0ZW0uc3VtbWFyeSAmJiBpdGVtLnN1bW1hcnkgIT0gXCJcIikgPyBpdGVtLnN1bW1hcnkgOiBcIlwiO1xyXG4gICAgICAgICAgICB2YXIgX2RlcyA9IF9kZXNfYWxsO1xyXG4gICAgICAgICAgICBpZihfZGVzLmxlbmd0aCA+IGNoYXJzaXplKXtcclxuICAgICAgICAgICAgICAgIF9kZXMgPSBfZGVzLnN1YnN0cigwLGNoYXJzaXplKSArIFwiLi4uXCI7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIF9odG1sICs9ICc8ZGl2IGNsYXNzPVwiJytzdHlsZSsnXCI+JztcclxuICAgICAgICAgICAgX2h0bWwgKz0gJzxwIGNsYXNzPVwidGl0bGVcIj4nO1xyXG4gICAgICAgICAgICBfaHRtbCArPSAnPGEgaHJlZj1cIicrX3VybCsnXCIgdGFyZ2V0PVwiX2JsYW5rXCI+JyArIGl0ZW0udGl0bGUgKyAnPC9hPic7XHJcbiAgICAgICAgICAgIF9odG1sICs9ICc8L3A+JztcclxuICAgICAgICAgICAgX2h0bWwgKz0gJzxwIGNsYXNzPVwiaW5mb1wiIHRpdGxlPVwiJytfZGVzX2FsbCsnXCI+JytfZGVzKyc8L3A+JztcclxuICAgICAgICAgICAgX2h0bWwgKz0gJzxwIGNsYXNzPVwidGltZVwiPicrY29udmVydFRvTmV3c0xpc3REYXRlKGl0ZW0uc2hvd1RpbWUpKyc8L3A+JztcclxuICAgICAgICAgICAgX2h0bWwgKz0gJzwvZGl2Pic7XHJcbiAgICAgICAgICAgIF9odG1sICs9ICc8L2xpPic7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpbml0UGFnaW5nKF9qc29uLmRhdGEudG90bGVfaGl0cyk7XHJcbiAgICB9XHJcblxyXG4gICAgalF1ZXJ5KFwiI25ld3NMaXN0Q29udGVudFwiKS5odG1sKF9odG1sKTtcclxuICAgIFxyXG4gICAgbmV3c0xpc3RNb3VzZW92ZXIoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaW5pdFNDQ29sdW1uTGlzdChfanNvbil7XHJcbiAgICB2YXIgX2h0bWwgPSBcIlwiO1xyXG4gICAgaWYoX2pzb24gJiYgX2pzb24uZGF0YSAmJiBfanNvbi5kYXRhLmxpc3Qpe1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2pzb24uZGF0YS5saXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBpdGVtID0gX2pzb24uZGF0YS5saXN0W2ldO1xyXG5cclxuICAgICAgICAgICAgdmFyIF91cmwgPSBcImh0dHBzOi8vZmluYW5jZS5lYXN0bW9uZXkuY29tL2EvXCIraXRlbS5jb2RlK1wiLmh0bWxcIjtcclxuICAgICAgICAgICAgaWYoaXRlbS5ucF9kc3QgPT0gXCJDRkhcIil7XHJcbiAgICAgICAgICAgICAgICBfdXJsID0gXCJodHRwOi8vY2FpZnVoYW8uZWFzdG1vbmV5LmNvbS9uZXdzL1wiK2l0ZW0uY29kZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihpICUgMTAgPT0gMCl7XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnPGxpIGNsYXNzPVwibGlzdC10d28gbGlzdC10b3BcIj4nO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYoaSAlIDEwID09IDkpe1xyXG4gICAgICAgICAgICAgICAgX2h0bWwgKz0gJzxsaSBjbGFzcz1cImxpc3QtdHdvIGxpc3QtbGluZS0xXCI+JztcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBfaHRtbCArPSAnPGxpIGNsYXNzPVwibGlzdC10d29cIj4nO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF9odG1sICs9ICc8YSBocmVmPVwiJytfdXJsKydcIiB0YXJnZXQ9XCJfYmxhbmtcIj4nO1xyXG4gICAgICAgICAgICBfaHRtbCArPSAnPHNwYW4gY2xhc3M9XCJsaXN0LWNvbnRlbnRcIj4nK2l0ZW0udGl0bGUrJzwvc3Bhbj4nO1xyXG4gICAgICAgICAgICBfaHRtbCArPSAnPHNwYW4gY2xhc3M9XCJsaXN0LXRpbWVcIj4nK2NvbnZlcnRUb05ld3NMaXN0RGF0ZShpdGVtLnNob3dUaW1lKSsnPC9zcGFuPic7XHJcbiAgICAgICAgICAgIF9odG1sICs9ICc8L2E+JztcclxuICAgICAgICAgICAgX2h0bWwgKz0gJzwvbGk+JztcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpbml0UGFnaW5nKF9qc29uLmRhdGEudG90bGVfaGl0cyk7XHJcbiAgICB9XHJcblxyXG4gICAgalF1ZXJ5KFwiI25ld3NMaXN0Q29udGVudFwiKS5odG1sKF9odG1sKTtcclxuICAgIFxyXG4gICAgbmV3c0xpc3RNb3VzZW92ZXIoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0UXVlcnlTdHJpbmcobmFtZSkge1xyXG4gICAgdmFyIHJlZyA9IG5ldyBSZWdFeHAoJyhefCYpJyArIG5hbWUgKyAnPShbXiZdKikoJnwkKScsICdpJylcclxuICAgIHZhciByID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHIoMSkubWF0Y2gocmVnKVxyXG4gICAgaWYgKHIgIT0gbnVsbCkgcmV0dXJuIHVuZXNjYXBlKHJbMl0pXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbndpbmRvdy5pbml0TmV3c0xpc3QgPSBmdW5jdGlvbiAoKXtcclxuICAgIHdpbmRvdy5zY3JvbGxUbyggMCwgMCApO1xyXG4gICAgaWYoX19QYWdlSW5kZXggPCAxIHx8IF9fUGFnZUluZGV4ID4gNTApe1xyXG4gICAgICAgIF9fUGFnZUluZGV4ID0gMTtcclxuICAgIH1cclxuICAgIHZhciBfVVJMID0gXCJodHRwczovL25wLWxpc3RhcGkuZWFzdG1vbmV5LmNvbS9jb21tL3dlYi9nZXROZXdzQnlDb2x1bW5zP2NsaWVudD13ZWImYml6PXdlYl9uZXdzX2NvbCZjb2x1bW49I2lkIyZvcmRlcj0xJm5lZWRJbnRlcmFjdERhdGE9MCZwYWdlX2luZGV4PSNwYWdlaW5kZXgjJnBhZ2Vfc2l6ZT0jcGFnZXNpemUjJnJlcV90cmFjZT0jZ3VpZCMmZmllbGRzPWNvZGUsc2hvd1RpbWUsdGl0bGUsbWVkaWFOYW1lLHN1bW1hcnksaW1hZ2UsdXJsLHVuaXF1ZVVybCxOcF9kc3QmdHlwZXM9MSwyMCZjYWxsYmFjaz0/XCI7XHJcbiAgICBpZihfX1R5cGUgPT09IFwiMlwiKXtcclxuICAgICAgICBfVVJMID0gXCJodHRwczovL25wLWxpc3RhcGkuZWFzdG1vbmV5LmNvbS9jb21tL3dlYi9nZXROZXdzQnlTY0NvbHVtbnM/Y2xpZW50PXdlYiZiaXo9d2ViX25ld3Nfc2Njb2wmc2NDb2x1bW5zPSNpZCMmb3JkZXI9MSZwYWdlX2luZGV4PSNwYWdlaW5kZXgjJnBhZ2Vfc2l6ZT0jcGFnZXNpemUjJnJlcV90cmFjZT0jZ3VpZCMmZmllbGRzPWNvZGUsc2hvd1RpbWUsdGl0bGUsbWVkaWFOYW1lLHN1bW1hcnkscmVhbFNvcnQsaW1hZ2UsdXJsLHVuaXF1ZVVybCxOcF9kc3QmdHlwZXM9MSwyMCZjYWxsYmFjaz0/XCI7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlmKGdldFF1ZXJ5U3RyaW5nKFwiZW52XCIpID09IFwidWF0XCIpe1xyXG4gICAgICAgIF9VUkwgPSBfVVJMLnJlcGxhY2UoXCIvL25wLWxpc3RhcGkuZWFzdG1vbmV5LmNvbVwiLFwiLy9ucC1saXN0YXBpLXVhdC5lYXN0bW9uZXkuY29tXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIF9VUkwgPSBfVVJMLnJlcGxhY2UoXCIjaWQjXCIsX19Db2x1bW5JZCk7XHJcbiAgICBfVVJMID0gX1VSTC5yZXBsYWNlKFwiI3BhZ2VpbmRleCNcIixfX1BhZ2VJbmRleCk7XHJcbiAgICBfVVJMID0gX1VSTC5yZXBsYWNlKFwiI3BhZ2VzaXplI1wiLF9fUGFnZVNpemUpO1xyXG4gICAgX1VSTCA9IF9VUkwucmVwbGFjZShcIiNndWlkI1wiLChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKF9VUkwpO1xyXG5cclxuICAgIGpRdWVyeS5hamF4KHtcclxuICAgICAgICB1cmw6IF9VUkwsXHJcbiAgICAgICAgZGF0YVR5cGU6ICdqc29ucCcsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oX2pzb24pe1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhfanNvbik7XHJcbiAgICAgICAgICAgIGlmKF9fVHlwZSA9PT0gXCIxXCIpe1xyXG4gICAgICAgICAgICAgICAgaW5pdENvbHVtbkxpc3QoX2pzb24pO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIGluaXRTQ0NvbHVtbkxpc3QoX2pzb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuXHJcbmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsgXHJcbiAgICB0cnkge1xyXG4gICAgICAgIGluaXROZXdzTGlzdCgpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBcclxuICAgIH1cclxufSk7XHJcbiAgICBcclxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9qcy9uZXdzbGlzdGJlZm9yZS5qc1xuLy8gbW9kdWxlIGlkID0gMjFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ=="],"names":["modules","installedModules","__webpack_require__","moduleId","exports","module","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","$","StockHK","jQuery","noConflict","init","videoPlay","rollimgto","remove","unwrap","rollimgpo","left","top","zindex","width","height","opacity","rollimglenght","length","each","toindex","parseInt","this","attr","thisimg","children","css","animate","after","wrapInner","timeroll","addClass","thisindex","index","eq","append","click","qcindex","setInterval","mouseenter","clearInterval","mouseleave","getHSGTStatus","_hsgtstatus","getZDFInfo","str","_class","_data","dZdf","parseFloat","toFixed","getGSHNum","fix","num","intStr","Math","abs","result","toString","document","getElementById","ajax","type","url","dataType","jsonp","success","json","zdfInfo","html","rc","data","f170","f107","f57","f58","f43","f48","error","diff","zdfInfoA","f187","zdfInfoG","f4","yjbInfo","f188","f13","f12","f193","f186","f2","f189","hgtLR","hgtInfo","ggthLR","ggthInfo","sgtLR","sgtInfo","ggtsLR","ggtsInfo","hk2sh","dayNetAmtIn","before","replace","status","parent","sh2hk","hk2sz","sz2hk","f3","f14","toUpperCase","a","$C","createElement","Function","Bind","b","arguments","Array","push","apply","tabsItemId","tabsState","window","amineWidth","obj","style","MutualTab","tabs","targets","callbackObjArr","subTargets","tempTabs","childNodes","nodeType","nodeName","toLowerCase","tempTargets","j","activeTab","activeTarget","k","onclick","showTab","onmouseout","_hide","onmouseover","_over","_index","callback","tabIndex","className","display","activeCallback","_timeout","setTimeout","clearTimeout","hqData","CSI","id","set","HK","OCCIDENT","FUND","FUTURES","FOREX","StockIndex","tabObjs","tabsIndex","tabshqDataId","imgFqc","activeImg","tabId","contentId","refBtn","_IFCode","_TFCode","_tabsElement","_contentElement","_refreshElement","_initContent","_tabCtrl","tabsSelect","_start","setArr","tabContent","showStyle","innerContent","_active","show","undefined","innerHTML","input","tabsArr","tabsDicArr","getAttribute","tabItemIdName","tabsDictionary","itemNavId","slice","tabsItemNav","getElementsByTagName","len","hqDataId","aData","_sMarket","_oSetNow","_imgCallback","_hqcodeNow","_loadImg","_containersNow","_tmpFirst","_tmpchilds","firstChild","nextSibling","hasscroll","sID","_imgtimeout","lastChild","_fillImg","imgLoaded","aSet","_container","_img","Image","src","indexOf","Date","getTime","join","onreadystatechange","insertBc","onload","_haslink","_link","readyState","target","href","setAttribute","appendChild","gshNum","strlength","_html","shsz","shszLinkUp","shszLinkDown","f1","f104","f106","f105","zjlInfo","f62","cjl","f8","f169","newsuggest","suggest2017","inputid","offset","shownewtips","newtipsoffset","f59","GetCookie","dc","cookie","prefix","begin","end","unescape","substring","def","mb","e","f","g","h","addlen","ret","ReadInfo","Str","showlist","_ckv","ckv","split","_tmcn","tmcn","tp","mk","cd","nm","lk","_lk","eval","ExRate","USD","EUR","GBP","AUD","JPY","CHF","CAD","HKD","CNY","getExRate","t","fn","update","r","mod","val","isNaN","cal","state","rate1","rate2","rate","glodconv","obj1","obj2","alert","on","newsListMouseover","lis","backgroundColor","initPaging","totleCount","totlePage","__PageSize","pagesLinks","__PageIndex","__EnCode","startPage","endPage","convertToNewsListDate","_date","substr","initNewsList","scrollTo","reg","_URL","__Type","RegExp","location","search","match","__ColumnId","_json","list","item","charsize","_url","code","np_dst","image","_des_all","summary","_des","title","showTime","totle_hits","ready"],"mappings":"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"}