{"remainingRequest":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\eslint-loader\\index.js??ref--13-0!D:\\jenkins\\workspace\\ljzc-fvue\\src\\store\\menu.js","dependencies":[{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\src\\store\\menu.js","mtime":1702626338012},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\babel.config.js","mtime":1701311296006},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\ljzc-fvue\\node_modules\\eslint-loader\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9sanpjLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIjsKaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2xqemMtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2xqemMtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMi5qcyI7CnZhciBfZXhjbHVkZWQgPSBbImNoaWxkcmVuIiwgImFsaWFzIl07CmltcG9ydCAicmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmpzb24uc3RyaW5naWZ5LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5qb2luLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zb3J0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qcyI7CmltcG9ydCBwb3J0YWwgZnJvbSAnQC9hcGkvcG9ydGFsLmpzJzsKaW1wb3J0IHByb2Nlc3MgZnJvbSAnQC9hcGkvcHJvY2Vzcy5qcyc7CnZhciBzdGF0ZSA9IHsKICBhbGw6IFtdLAogIC8v6I+c5Y2V5pWw5o2uCiAgcmVzaWR1YWw6IGZhbHNlLAogIC8v5omL5Yqo5L+u5pS55LqG6I+c5Y2V55qE5qCH6K6wCiAgc3RhdGVtZW50OiBbXSwKICAvL+aKpeihqOS4reW/g+iPnOWNlQogIHBhZ2luYXRpb246IHt9LAogIC8v5YiG6aG15Y+C5pWwCiAgcm93czogW10sCiAgLy/mlrDpl7vliqjmgIHliJfooajmlbDmja4KICBub3RpY2U6IFtdLAogIC8v5Y+R5paH5YWs5ZGK5YiX6KGo5pWw5o2uCiAgdG90YWw6IDAsCiAgLy/liJfooajmlbDmja7mgLvmnaHmlbAKICBmaWxlc0RhdGE6IHt9LAogIC8v5paw6Ze75YWs5ZGK6K+m5oOFCiAgbWVldGluZzogW10sCiAgLy/kvJrorq7liJfooagKICBtZW51TWFwczoge30sCiAgLy/liqjmgIHoj5zljZXmlbDmja4KICBjdXJyZW50TWVudToge30sCiAgLy/lvZPliY3kuIDnuqfoj5zljZUKICBjb2x1bW5BbGlhc0FyeTogW10sCiAgLy/lvZPliY3opoHor7fmsYLmoI/nm67mlbDmja7nmoTliKvlkI3mlbDnu4QKICBjb2x1bW5RdWVyeU1lcmdpbmc6IG51bGwsCiAgLy/ojrflj5bmoI/nm67mlbDmja7nmoTor7fmsYLlkIjlubbmoIforrDlj5jph48KICBjb2x1bW5EYXRhOiB7fSwKICAvL+WQhOagj+ebrueahOaVsOaNrgogIGNvbHVtbkRhdGFMb2FkZWRBbGlhc2VzOiBudWxsLAogIHN5c01lbnVzOiBbXSwKICAvL+ezu+e7n+WQjuWPsOiPnOWNlQogIGZyb250TWVudXM6IFtdLAogIC8v5YmN5Y+w6I+c5Y2VCiAgcm9sZU1lbnVzOiBbXSAvLyDop5LoibLoj5zljZUKfTsKdmFyIGdldHRlcnMgPSB7CiAgZ2V0Q29sdW1uRGF0YVdpdGhBbGlhczogZnVuY3Rpb24gZ2V0Q29sdW1uRGF0YVdpdGhBbGlhcyhzdGF0ZSkgewogICAgcmV0dXJuIGZ1bmN0aW9uIChhbGlhcykgewogICAgICByZXR1cm4gc3RhdGUuY29sdW1uRGF0YVthbGlhc107CiAgICB9OwogIH0sCiAgaGFzQ29sdW1uRGF0YVdpdGhBbGlhczogZnVuY3Rpb24gaGFzQ29sdW1uRGF0YVdpdGhBbGlhcyhzdGF0ZSkgewogICAgcmV0dXJuIGZ1bmN0aW9uIChhbGlhcykgewogICAgICByZXR1cm4gc3RhdGUuY29sdW1uRGF0YS5oYXNPd25Qcm9wZXJ0eShhbGlhcyk7CiAgICB9OwogIH0sCiAgZnJvbnRNZW51czogZnVuY3Rpb24gZnJvbnRNZW51cyhzdGF0ZSkgewogICAgcmV0dXJuIHN0YXRlLmZyb250TWVudXM7CiAgfSwKICBzeXNNZW51czogZnVuY3Rpb24gc3lzTWVudXMoc3RhdGUpIHsKICAgIHJldHVybiBzdGF0ZS5zeXNNZW51czsKICB9LAogIHJvbGVNZW51OiBmdW5jdGlvbiByb2xlTWVudShzdGF0ZSkgewogICAgcmV0dXJuIHN0YXRlLnJvbGVNZW51OwogIH0KfTsKdmFyIGFjdGlvbnMgPSB7CiAgYWN0aW9uc1JvbGVNZW51OiBmdW5jdGlvbiBhY3Rpb25zUm9sZU1lbnUoX3JlZiwgcm9sZUNvZGVzKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZi5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZi5zdGF0ZTsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIC8vIOinkuiJsuiPnOWNleavj+asoemDveivt+axguaOpeWPo++8jOS4jeWBmue8k+WtmAogICAgICBwb3J0YWwuZ2V0Um9sZU1lbnVzKHJvbGVDb2RlcykudGhlbihmdW5jdGlvbiAoZGF0YSkgewogICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2N1cnJlbnRSb2xlTWVudXMnLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7CiAgICAgICAgY29tbWl0KCdtdXRhdGlvblJvbGVNZW51cycsIGRhdGEpOwogICAgICAgIHJlc29sdmUoZGF0YSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICBhY3Rpb25TeXNNZW51czogZnVuY3Rpb24gYWN0aW9uU3lzTWVudXMoX3JlZjIpIHsKICAgIHZhciBjb21taXQgPSBfcmVmMi5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjIuc3RhdGU7CiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICBpZiAoc3RhdGUubWVudXMgJiYgc3RhdGUubWVudXMubGVuZ3RoID49IDEpIHsKICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9IGVsc2UgaWYgKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbnRTeXNNZW51cycpKSB7CiAgICAgICAgdmFyIG1lbnVzID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY3VycmVudFN5c01lbnVzJyk7CiAgICAgICAgY29tbWl0KCdtdXRhdGlvblN5c01lbnVzJywgSlNPTi5wYXJzZShtZW51cykpOwogICAgICAgIHJlc29sdmUoSlNPTi5wYXJzZShtZW51cykpOwogICAgICAgIHJldHVybjsKICAgICAgfSBlbHNlIHsKICAgICAgICBwb3J0YWwuZ2V0U3lzTWVudXMoKS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjdXJyZW50U3lzTWVudXMnLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7CiAgICAgICAgICBjb21taXQoJ211dGF0aW9uU3lzTWVudXMnLCBkYXRhKTsKICAgICAgICAgIHJlc29sdmUoZGF0YSk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0pOwogIH0sCiAgYWN0aW9uRnJvbnRNZW51czogZnVuY3Rpb24gYWN0aW9uRnJvbnRNZW51cyhfcmVmMykgewogICAgdmFyIGNvbW1pdCA9IF9yZWYzLmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMy5zdGF0ZTsKICAgIC8vIOmAkuW9kuihpeWFheWFqOi3r+eUsei3r+W+hOaWueazlQogICAgdmFyIHByb2Nlc3NSb3V0aW5nID0gZnVuY3Rpb24gcHJvY2Vzc1JvdXRpbmcodHJlZURhdGEpIHsKICAgICAgdmFyIHJvdXRlclBhdGggPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICcnOwogICAgICByZXR1cm4gdHJlZURhdGEubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgdmFyIGNoaWxkcmVuID0gW107CiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5jaGlsZHJlbikgJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGgpIHsKICAgICAgICAgIGNoaWxkcmVuID0gcHJvY2Vzc1JvdXRpbmcoaXRlbS5jaGlsZHJlbiwgcm91dGVyUGF0aCArICIvIi5jb25jYXQoaXRlbS5hbGlhcykpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpdGVtKSwge30sIHsKICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZHJlbiwKICAgICAgICAgIHJvdXRlclBhdGg6IHJvdXRlclBhdGggKyAiLyIuY29uY2F0KGl0ZW0uYWxpYXMpCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfTsKICAgIHJldHVybiBuZXcgUHJvbWlzZSggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHsKICAgICAgdmFyIF9yZWY0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKHJlc29sdmUpIHsKICAgICAgICB2YXIgbWVudXMsIG1lbnU7CiAgICAgICAgcmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWYgKCEoc3RhdGUuZnJvbnRNZW51cyAmJiBzdGF0ZS5mcm9udE1lbnVzLmxlbmd0aCA+PSAxKSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmVzb2x2ZShzdGF0ZS5mcm9udE1lbnVzKTsKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTk7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBpZiAoIXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbnRGcm9udE1lbnVzJykpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBtZW51cyA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY3VycmVudEZyb250TWVudXMnKSk7CiAgICAgICAgICAgICAgY29tbWl0KCdtdXRhdGlvbkZyb250TWVudXMnLCBtZW51cyk7CiAgICAgICAgICAgICAgcmVzb2x2ZShtZW51cyk7CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDE5OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMjsKICAgICAgICAgICAgICByZXR1cm4gcG9ydGFsLmdldEZyb250TWVudXMoKTsKICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICBfY29udGV4dC50MCA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgaWYgKF9jb250ZXh0LnQwKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQudDAgPSBbXTsKICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICBtZW51ID0gX2NvbnRleHQudDAubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBpdGVtLmNoaWxkcmVuLAogICAgICAgICAgICAgICAgICBhbGlhcyA9IGl0ZW0uYWxpYXMsCiAgICAgICAgICAgICAgICAgIGkgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoaXRlbSwgX2V4Y2x1ZGVkKTsKICAgICAgICAgICAgICAgIHZhciByb3V0ZXJQYXRoID0gIi8iLmNvbmNhdChhbGlhcyA9PT0gJ25vcm1hbCcgPyAncGxhdExheW91dCcgOiBhbGlhcyk7CiAgICAgICAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBpKSwge30sIHsKICAgICAgICAgICAgICAgICAgYWxpYXM6IGFsaWFzLAogICAgICAgICAgICAgICAgICByb3V0ZXJQYXRoOiByb3V0ZXJQYXRoLAogICAgICAgICAgICAgICAgICBjaGlsZHJlbjogcHJvY2Vzc1JvdXRpbmcoY2hpbGRyZW4sIHJvdXRlclBhdGgpCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdjdXJyZW50RnJvbnRNZW51cycsIEpTT04uc3RyaW5naWZ5KG1lbnUpKTsKICAgICAgICAgICAgICBjb21taXQoJ211dGF0aW9uRnJvbnRNZW51cycsIG1lbnUpOwogICAgICAgICAgICAgIHJlc29sdmUobWVudSk7CiAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlKTsKICAgICAgfSkpOwogICAgICByZXR1cm4gZnVuY3Rpb24gKF94KSB7CiAgICAgICAgcmV0dXJuIF9yZWY0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgIH07CiAgICB9KCkpOwogIH0sCiAgLy8g5p+l6K+i6Z2Z5oCB6LWE5rqQ55uu5b2VCiAgZ2V0U3RhdGljTWVudXM6IGZ1bmN0aW9uIGdldFN0YXRpY01lbnVzKF9yZWY1KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjUuY29tbWl0OwogICAgcG9ydGFsLmdldE1lbnVzKGZ1bmN0aW9uIChtZW51cykgewogICAgICBjb21taXQoJ2FwcGVuZE1lbnVzJywgbWVudXMpOwogICAgfSk7CiAgfSwKICAvLyDmn6Xor6LmtYHnqIvkuK3lv4PkuIvnmoTotYTmupDnm67lvZUKICBnZXRTeW5jTWVudXM6IGZ1bmN0aW9uIGdldFN5bmNNZW51cyhfcmVmNiwgaXNMZWFkZXIpIHsKICAgIHZhciBjb21taXQgPSBfcmVmNi5jb21taXQ7CiAgICBwb3J0YWwuZ2V0U3ViTWVudXMoJ2Zyb250X21lbnUnLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgcHJvY2Vzcy5nZXRTZWNyZXRhcnlCeVVzZXJJZChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgdmFyIGlzTGVhZGVyID0gZmFsc2U7CiAgICAgICAgaWYgKHJlcyAmJiByZXMubGVuZ3RoID09IDApIHsKICAgICAgICAgIC8v5rKh5pyJ6aKG5a+8CiAgICAgICAgICBpc0xlYWRlciA9IHRydWU7CiAgICAgICAgfQogICAgICAgIHJlc3BvbnNlLmlzTGVhZGVyID0gaXNMZWFkZXI7CiAgICAgICAgY29tbWl0KCdzZXRTeW5jTWVudXMnLCByZXNwb25zZSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+iOt+WPlua1geeoi+S4reW/g+S4i+eahOi1hOa6kOebruW9lQogIGdldERlZmF1bHRNZW51czogZnVuY3Rpb24gZ2V0RGVmYXVsdE1lbnVzKF9yZWY3KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjcuY29tbWl0OwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcG9ydGFsLmdldFN1Yk1lbnVzKCdmcm9udF9tZW51JywgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgcHJvY2Vzcy5nZXRTZWNyZXRhcnlCeVVzZXJJZChmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgICB2YXIgaXNMZWFkZXIgPSBmYWxzZTsKICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCA9PSAwKSB7CiAgICAgICAgICAgIC8v5rKh5pyJ6aKG5a+8CiAgICAgICAgICAgIGlzTGVhZGVyID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIHJlc3BvbnNlLmlzTGVhZGVyID0gaXNMZWFkZXI7CiAgICAgICAgICBjb21taXQoJ3NldFN5bmNNZW51cycsIHJlc3BvbnNlKTsKICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8vIOW9k+WJjeeUqOaIt+aOpeWPo+adg+mZkAogIGdldEN1cnJlbnRVc2VyTWV0aG9kQXV0aDogZnVuY3Rpb24gZ2V0Q3VycmVudFVzZXJNZXRob2RBdXRoKF9yZWY4KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjguY29tbWl0OwogICAgcG9ydGFsLmdldEN1cnJlbnRVc2VyTWV0aG9kQXV0aChmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgd2luZG93LnNlc3Npb25TdG9yYWdlLmFsbE1ldGhvZCA9IHJlc3BvbnNlLmRhdGEuYWxsTWV0aG9kOwogICAgICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UubWV0aG9kQXV0aCA9IHJlc3BvbnNlLmRhdGEuY3VyVXNlck1ldGhvZDsKICAgIH0pOwogIH0sCiAgLy8g5b2T5YmN6I+c5Y2VCiAgZ2V0QWxsbWVudXM6IGZ1bmN0aW9uIGdldEFsbG1lbnVzKF9yZWY5LCBtZW51KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjkuY29tbWl0OwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcmVzb2x2ZShzdGF0ZS5hbGwpOwogICAgfSk7CiAgfSwKICAvLyDlvZPliY3oj5zljZUKICBnZXRDdXJyZW50TWVudTogZnVuY3Rpb24gZ2V0Q3VycmVudE1lbnUoX3JlZjEwLCBtZW51KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjEwLmNvbW1pdDsKICAgIGNvbW1pdCgnc2V0Q3VycmVudE1lbnUnLCBtZW51KTsKICB9LAogIC8vIOi/veWKoOS4gOS4quebruW9leWIsOebruW9leiPnOWNleS4rQogIGFwcGVuZDJtZW51czogZnVuY3Rpb24gYXBwZW5kMm1lbnVzKF9yZWYxMSwgbWVudSkgewogICAgdmFyIGNvbW1pdCA9IF9yZWYxMS5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjExLnN0YXRlOwogICAgY29tbWl0KCdhcHBlbmRNZW51cycsIFttZW51XSk7CiAgfSwKICAvLyDkuLTml7borr7nva7kuIDkuKrkv67mlLnov4fnmoTnm67lvZXoj5zljZUKICBzZXRUZW1wbGF0ZU1lbnVzOiBmdW5jdGlvbiBzZXRUZW1wbGF0ZU1lbnVzKF9yZWYxMiwgbWVudSkgewogICAgdmFyIGNvbW1pdCA9IF9yZWYxMi5jb21taXQ7CiAgICBjb21taXQoJ3NldE1lbnVzJywgbWVudSk7CiAgICBjb21taXQoJ3NldFJlc2lkdWFsJywgdHJ1ZSk7CiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgLy8gMC4156eS5ZCO6YeN572u5omL5Yqo5L+u5pS555uu5b2V5pWw5o2u55qE5qCH6K6wCiAgICAgIGNvbW1pdCgnc2V0UmVzaWR1YWwnLCBmYWxzZSk7CiAgICB9LCA1MDApOwogIH0sCiAgLy8g5Li05pe26K6+572u5LiA5Liq5L+u5pS56L+H55qE55uu5b2V6I+c5Y2VCiAgc2V0Q29weU1lbnVzOiBmdW5jdGlvbiBzZXRDb3B5TWVudXMoX3JlZjEzLCBtZW51KSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjEzLmNvbW1pdDsKICAgIGNvbW1pdCgnc2V0TWVudXMnLCBtZW51KTsKICB9LAogIC8v5pu05paw5q+P6aG15LiL5ouJ5pi+56S65pWw5o2uCiAgc2V0UGFnaW5hdGlvblNpemU6IGZ1bmN0aW9uIHNldFBhZ2luYXRpb25TaXplKF9yZWYxNCwgc2l6ZSkgewogICAgdmFyIGNvbW1pdCA9IF9yZWYxNC5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjE0LnN0YXRlOwogICAgY29tbWl0KCdzZXRQYWdpbmF0aW9uU2l6ZScsIHNpemUpOwogIH0sCiAgLy/mm7TmlrDnrKzlh6DpobUKICBzZXRQYWdpbmF0aW9uUGFnZU51bTogZnVuY3Rpb24gc2V0UGFnaW5hdGlvblBhZ2VOdW0oX3JlZjE1LCBjdXJyZW50UGFnZSkgewogICAgdmFyIGNvbW1pdCA9IF9yZWYxNS5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjE1LnN0YXRlOwogICAgY29tbWl0KCdzZXRQYWdpbmF0aW9uUGFnZU51bScsIGN1cnJlbnRQYWdlKTsKICB9LAogIGdldE5ld3NQYWdpbmF0aW9uTGlzdDogZnVuY3Rpb24gZ2V0TmV3c1BhZ2luYXRpb25MaXN0KF9yZWYxNiwgcGFnaW5hdGlvbikgewogICAgdmFyIGNvbW1pdCA9IF9yZWYxNi5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjE2LnN0YXRlOwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcG9ydGFsLmdldE5ld3NQYWdpbmF0aW9uTGlzdChwYWdpbmF0aW9uLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICBjb21taXQoJ3NldFJvd3MnLCByZXNwb25zZS5kYXRhLnJvd3MpOwogICAgICAgIGNvbW1pdCgnc2V0VG90YWwnLCByZXNwb25zZS5kYXRhLnRvdGFsKTsKICAgICAgICB2YXIgcGFnZUJlYW4gPSB7CiAgICAgICAgICAncGFnZSc6IHJlc3BvbnNlLmRhdGEucGFnZSwKICAgICAgICAgICdwYWdlU2l6ZSc6IHJlc3BvbnNlLmRhdGEucGFnZVNpemUsCiAgICAgICAgICAnc2hvd1RvdGFsJzogJ3RydWUnCiAgICAgICAgfTsKICAgICAgICBjb21taXQoJ3NldFBhZ2luYXRpb24nLCBwYWdlQmVhbik7CiAgICAgICAgcmVzb2x2ZSgpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgLy/pmYTku7blnKjnur/pooTop4gKICBvbmxpbmVQcmV2aWV3OiBmdW5jdGlvbiBvbmxpbmVQcmV2aWV3KF9yZWYxNywgaWQpIHsKICAgIHZhciBjb21taXQgPSBfcmVmMTcuY29tbWl0LAogICAgICBzdGF0ZSA9IF9yZWYxNy5zdGF0ZTsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHBvcnRhbC5vbmxpbmVQcmV2aWV3KGlkLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICByZXNvbHZlKHJlc3BvbnNlLmRhdGEpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgLy/pmYTku7bkuIvovb0KICBkb3dubG9hZEZpbGU6IGZ1bmN0aW9uIGRvd25sb2FkRmlsZShfcmVmMTgsIGlkKSB7CiAgICB2YXIgY29tbWl0ID0gX3JlZjE4LmNvbW1pdCwKICAgICAgc3RhdGUgPSBfcmVmMTguc3RhdGU7CiAgICBwb3J0YWwuZG93bmxvYWRGaWxlKGlkKTsKICB9LAogIGRvd25sb2FkSW1nOiBmdW5jdGlvbiBkb3dubG9hZEltZyhfcmVmMTksIHVybCkgewogICAgdmFyIGNvbW1pdCA9IF9yZWYxOS5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjE5LnN0YXRlOwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcG9ydGFsLmRvd25sb2FkSW1nKHVybCwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+iOt+WPluimgeWPguWKoOeahOS8muiuruWIl+ihqAogIGdldE1lZXRpbmdQYWdpbmF0aW9uOiBmdW5jdGlvbiBnZXRNZWV0aW5nUGFnaW5hdGlvbihfcmVmMjAsIHBhZ2luYXRpb24pIHsKICAgIHZhciBjb21taXQgPSBfcmVmMjAuY29tbWl0LAogICAgICBzdGF0ZSA9IF9yZWYyMC5zdGF0ZTsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHBvcnRhbC5nZXRNZWV0aW5nUGFnaW5hdGlvbihwYWdpbmF0aW9uLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICBjb21taXQoJ3NldE1lZXRpbmcnLCByZXNwb25zZS5kYXRhLnJvd3MpOyAvL+S8muiuruaVsOaNrgogICAgICAgIGNvbW1pdCgnc2V0VG90YWwnLCByZXNwb25zZS5kYXRhLnRvdGFsKTsgLy/mgLvmlbDmja7mnaHmlbAKICAgICAgICB2YXIgcGFnZUJlYW4gPSB7CiAgICAgICAgICAncGFnZSc6IHJlc3BvbnNlLmRhdGEucGFnZSwKICAgICAgICAgICdwYWdlU2l6ZSc6IHJlc3BvbnNlLmRhdGEucGFnZVNpemUsCiAgICAgICAgICAnc2hvd1RvdGFsJzogJ3RydWUnCiAgICAgICAgfTsgLy/mjqXlj6Pmlrnms5Xov5Tlm57nmoRwYWdlQmVhbgogICAgICAgIGNvbW1pdCgnc2V0UGFnaW5hdGlvbicsIHBhZ2VCZWFuKTsgLy/mmL7npLrnrKzlh6DpobXvvIzmr4/pobXmmL7npLrlpJrlsJHmnaEKICAgICAgICByZXNvbHZlKCk7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+iOt+WPluaVsOaNruWtl+WFuAogIGdldEJ5VHlwZUtleUZvckNvbUJvOiBmdW5jdGlvbiBnZXRCeVR5cGVLZXlGb3JDb21CbyhfcmVmMjEsIGRpY0tleSkgewogICAgdmFyIGNvbW1pdCA9IF9yZWYyMS5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjIxLnN0YXRlOwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcG9ydGFsLmdldEJ5VHlwZUtleUZvckNvbUJvKGRpY0tleSwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+iOt+WPluS4i+S4gOS4qua1geawtOWPtwogIGdldE5leHRJZEJ5QWxpYXM6IGZ1bmN0aW9uIGdldE5leHRJZEJ5QWxpYXMoX3JlZjIyLCBhbGlhcykgewogICAgdmFyIGNvbW1pdCA9IF9yZWYyMi5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjIyLnN0YXRlOwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcG9ydGFsLmdldE5leHRJZEJ5QWxpYXMoYWxpYXMsIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIHJlc29sdmUocmVzcG9uc2UpOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgLy/ojrflj5bpppbpobXluIPlsYAKICB2dWVGcm9udEhvbWU6IGZ1bmN0aW9uIHZ1ZUZyb250SG9tZShfcmVmMjMpIHsKICAgIHZhciBjb21taXQgPSBfcmVmMjMuY29tbWl0LAogICAgICBzdGF0ZSA9IF9yZWYyMy5zdGF0ZTsKICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgIHBvcnRhbC52dWVGcm9udEhvbWUoZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSwKICAvL+iOt+WPlummlumhteW4g+WxgAogIGdldENvbHVtbkJ5QWxpYXM6IGZ1bmN0aW9uIGdldENvbHVtbkJ5QWxpYXMoX3JlZjI0LCBhbGlhcykgewogICAgdmFyIGNvbW1pdCA9IF9yZWYyNC5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjI0LnN0YXRlOwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcG9ydGFsLmdldENvbHVtbkJ5QWxpYXMoYWxpYXMsIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIHJlc29sdmUocmVzcG9uc2UpOwogICAgICAgIGNvbW1pdCgndXBkYXRlQ29sdW1uRGF0YScsIHJlc3BvbnNlKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8vIOaJuemHj+iOt+WPlummlumhteW4g+WxgO+8iOivt+axguWPguaVsOi/mOaYr+mAkOS4quagj+ebru+8jOS9huaYr+S4gOWumuaXtumXtOmXtOmalOeahOivt+axguS8muWQiOW5tuS4uuS4gOasoe+8iQogIGdldENvbHVtbkJ5QWxpYXNCYXRjaDogZnVuY3Rpb24gZ2V0Q29sdW1uQnlBbGlhc0JhdGNoKF9yZWYyNSwgYWxpYXMpIHsKICAgIHZhciBjb21taXQgPSBfcmVmMjUuY29tbWl0LAogICAgICBzdGF0ZSA9IF9yZWYyNS5zdGF0ZSwKICAgICAgZ2V0dGVycyA9IF9yZWYyNS5nZXR0ZXJzOwogICAgLy8gMS7lpoLmnpzlvZPliY3moI/nm67mlbDmja7kuK3lt7Lnu4/mnInlr7nlupTnmoTlgLzkuobvvIznm7TmjqXov5Tlm57jgIIKICAgIGlmIChnZXR0ZXJzLmhhc0NvbHVtbkRhdGFXaXRoQWxpYXMoYWxpYXMpKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIC8vIDIu5piv5ZCm5q2j5Zyo6L+b6KGM6K+35rGC5ZCI5bm277ybCiAgICBpZiAoc3RhdGUuY29sdW1uUXVlcnlNZXJnaW5nKSB7CiAgICAgIC8vICgxKS7lj5bmtojlvZPliY3lgJLorqHml7bvvJsKICAgICAgY2xlYXJUaW1lb3V0KHN0YXRlLmNvbHVtblF1ZXJ5TWVyZ2luZyk7CiAgICAgIC8vICgyKS7ph43nva7lvZPliY3lgJLorqHml7blj5bmtojmoIforrDkvY3vvJsKICAgICAgY29tbWl0KCdzZXRDb2x1bW5RdWVyeU1lcmdpbmcnLCBudWxsKTsKICAgIH0KICAgIC8vIDMu5p6E5bu65LiA5Liq6K+35rGC5YCS6K6h5pe277yI6buY6K6k5Lik5Liq6K+35rGC55u45beuNTDmr6vnp5LlhoXkvJrlkIjlubbkuLrkuIDkuKror7fmsYLvvInvvJsKICAgIHZhciB0aW1lb3V0Q2FuY2VsID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgIC8vIDQu5YCS6K6h5pe257uT5p2f77yM55yf5q2j5Y+R6YCB6K+35rGC77ybCiAgICAgIHBvcnRhbC5iYXRjaEdldENvbHVtbkJ5QWxpYXNlcyhzdGF0ZS5jb2x1bW5BbGlhc0FyeS5qb2luKCcsJyksIGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIC8vIDUu5pu05paw5qCP55uu5pWw5o2u5YiwdnVleOeahHN0YXRl5Lit44CCCiAgICAgICAgY29tbWl0KCdzZXRDb2x1bW5EYXRhJywgcmVzcG9uc2UpOwogICAgICB9KTsKICAgICAgLy8g5riF56m65qCP55uu6K+35rGC5p+l6K+i5Yir5ZCN5pWw57uECiAgICAgIGNvbW1pdCgnY2xlYXJDb2x1bW5BbGlhc0FyeScpOwogICAgICAvLyDph43nva7lgJLorqHml7blj5bmtojmoIforrDkvY0KICAgICAgY29tbWl0KCdzZXRDb2x1bW5RdWVyeU1lcmdpbmcnLCBudWxsKTsKICAgIH0sIDUwKTsKICAgIC8vIOa3u+WKoOagj+ebruivt+axguafpeivouWIq+WQjeWIsOaVsOe7hAogICAgY29tbWl0KCdhZGRDb2x1bW5BbGlhcycsIGFsaWFzKTsKICAgIC8vIOabtOaWsOWAkuiuoeaXtuWPlua2iOagh+iusOS9jQogICAgY29tbWl0KCdzZXRDb2x1bW5RdWVyeU1lcmdpbmcnLCB0aW1lb3V0Q2FuY2VsKTsKICB9LAogIC8v6I635Y+W5qCP55uu5pWw5o2uCiAgZ2V0Q29sdW1uRGF0YTogZnVuY3Rpb24gZ2V0Q29sdW1uRGF0YShfcmVmMjYsIGNvbHVtbikgewogICAgdmFyIGNvbW1pdCA9IF9yZWYyNi5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjI2LnN0YXRlOwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcG9ydGFsLmdldENvbHVtbkRhdGEoY29sdW1uLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIC8v5pu05paw6ZmE5Lu255qE5omp5bGV5bGe5oCnCiAgdXBkYXRlRmlsZUV4dHJhUHJvcDogZnVuY3Rpb24gdXBkYXRlRmlsZUV4dHJhUHJvcChfcmVmMjcsIGNvbHVtbikgewogICAgdmFyIGNvbW1pdCA9IF9yZWYyNy5jb21taXQsCiAgICAgIHN0YXRlID0gX3JlZjI3LnN0YXRlOwogICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgcG9ydGFsLnVwZGF0ZUZpbGVFeHRyYVByb3AoY29sdW1uLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgICAgfSk7CiAgICB9KTsKICB9LAogIGNsZWFyTWVudXM6IGZ1bmN0aW9uIGNsZWFyTWVudXMoX3JlZjI4LCBjb2x1bW4pIHsKICAgIHZhciBjb21taXQgPSBfcmVmMjguY29tbWl0LAogICAgICBzdGF0ZSA9IF9yZWYyOC5zdGF0ZTsKICAgIGNvbW1pdCgnY2xlYXJNZW51cycpOwogICAgd2luZG93LnNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ2N1cnJlbnRGcm9udE1lbnVzJyk7CiAgICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnZGljdF9kYXRhJyk7CiAgICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnYWxsTWV0aG9kJyk7CiAgICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnbWV0aG9kQXV0aCcpOwogIH0KfTsKdmFyIG11dGF0aW9ucyA9IHsKICBzZXRNZW51czogZnVuY3Rpb24gc2V0TWVudXMoc3RhdGUsIG1lbnVzKSB7CiAgICBzdGF0ZS5hbGwgPSBtZW51czsKICB9LAogIGNsZWFyTWVudXM6IGZ1bmN0aW9uIGNsZWFyTWVudXMoKSB7CiAgICBzdGF0ZS5mcm9udE1lbnVzID0gW107CiAgICBzdGF0ZS5zeXNNZW51cyA9IFtdOwogIH0sCiAgc2V0UmVzaWR1YWw6IGZ1bmN0aW9uIHNldFJlc2lkdWFsKHN0YXRlLCB2YWwpIHsKICAgIHN0YXRlLnJlc2lkdWFsID0gdmFsOwogIH0sCiAgYXBwZW5kTWVudXM6IGZ1bmN0aW9uIGFwcGVuZE1lbnVzKHN0YXRlLCBtZW51cykgewogICAgbWVudXMuZm9yRWFjaChmdW5jdGlvbiAobWVudSkgewogICAgICBpZiAoIXN0YXRlLmFsbC5zb21lKGZ1bmN0aW9uIChtKSB7CiAgICAgICAgcmV0dXJuIG0uYWxpYXMgPT09IG1lbnUuYWxpYXM7CiAgICAgIH0pKSB7CiAgICAgICAgc3RhdGUuYWxsLnB1c2gobWVudSk7CiAgICAgIH0KICAgIH0pOwogICAgc3RhdGUuYWxsLnNvcnQoZnVuY3Rpb24gKG0sIG4pIHsKICAgICAgcmV0dXJuIG0uaWQgLSBuLmlkOwogICAgfSk7CiAgfSwKICBzZXRTeW5jTWVudXM6IGZ1bmN0aW9uIHNldFN5bmNNZW51cyhzdGF0ZSwgcmVzcG9uc2UpIHsKICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5kYXRhICYmIHJlc3BvbnNlLmRhdGEudmFsdWUgJiYgcmVzcG9uc2UuZGF0YS52YWx1ZS5sZW5ndGggPiAwKSB7CiAgICAgIHZhciBtZW51cyA9IHJlc3BvbnNlLmRhdGEudmFsdWU7CiAgICAgIG1lbnVzLmZvckVhY2goZnVuY3Rpb24gKG1lbnUpIHsKICAgICAgICBpZiAoIXN0YXRlLmFsbC5zb21lKGZ1bmN0aW9uIChtKSB7CiAgICAgICAgICByZXR1cm4gbS5jb2RlID09PSBtZW51LmFsaWFzOwogICAgICAgIH0pKSB7CiAgICAgICAgICBzdGF0ZS5hbGwucHVzaCh7CiAgICAgICAgICAgIGlkOiBtZW51LmlkLAogICAgICAgICAgICBjb2RlOiBtZW51LmFsaWFzLAogICAgICAgICAgICBhbGlhczogbWVudS5hbGlhcywKICAgICAgICAgICAgcGF0aDogbWVudS5tZW51VXJsLAogICAgICAgICAgICBuYW1lOiBtZW51Lm5hbWUsCiAgICAgICAgICAgIHNuOiBtZW51LnNuCiAgICAgICAgICB9KTsKICAgICAgICAgIC8v5Yik5pat5piv5ZCm5piv5rWB56iL5Lit5b+DCiAgICAgICAgICBpZiAobWVudS5hbGlhcyA9PSAndi1mbG93JykgewogICAgICAgICAgICBpZiAocmVzcG9uc2UuaXNMZWFkZXIpIHsKICAgICAgICAgICAgICAvL+ayoeaciemihuWvvAogICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWVudS5jaGlsZHJlbi5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKG1lbnUuY2hpbGRyZW5baV0uYWxpYXMgPT0gJ3YtbGVhZGVyJykgewogICAgICAgICAgICAgICAgICBtZW51LmNoaWxkcmVuLnNwbGljZShpLCAxKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHN0YXRlLm1lbnVNYXBzW21lbnUuYWxpYXNdID0gbWVudS5jaGlsZHJlbjsKICAgICAgICAgICAgfSBlbHNlIGlmICghcmVzcG9uc2UuaXNMZWFkZXIpIHsKICAgICAgICAgICAgICAvL+aciemihuWvvAogICAgICAgICAgICAgIHN0YXRlLm1lbnVNYXBzW21lbnUuYWxpYXNdID0gbWVudS5jaGlsZHJlbjsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc3RhdGUubWVudU1hcHNbbWVudS5hbGlhc10gPSBtZW51LmNoaWxkcmVuOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyB9CiAgICAgIH0pOwogICAgfQogIH0sCiAgc2V0Q3VycmVudE1lbnU6IGZ1bmN0aW9uIHNldEN1cnJlbnRNZW51KHN0YXRlLCByZXNwb25zZSkgewogICAgc3RhdGUuY3VycmVudE1lbnUgPSByZXNwb25zZTsKICB9LAogIGdldEFsbG1lbnVzOiBmdW5jdGlvbiBnZXRBbGxtZW51cyhzdGF0ZSwgcmVzcG9uc2UpIHsKICAgIHJldHVybiBzdGF0ZS5hbGw7CiAgfSwKICBzZXRQYWdpbmF0aW9uOiBmdW5jdGlvbiBzZXRQYWdpbmF0aW9uKHN0YXRlLCBwYWdpbmF0aW9uKSB7CiAgICBzdGF0ZS5wYWdpbmF0aW9uID0gcGFnaW5hdGlvbjsKICB9LAogIHNldFBhZ2luYXRpb25TaXplOiBmdW5jdGlvbiBzZXRQYWdpbmF0aW9uU2l6ZShzdGF0ZSwgc2l6ZSkgewogICAgc3RhdGUucGFnaW5hdGlvbi5wYWdlU2l6ZSA9IHNpemU7CiAgfSwKICBzZXRQYWdpbmF0aW9uUGFnZU51bTogZnVuY3Rpb24gc2V0UGFnaW5hdGlvblBhZ2VOdW0oc3RhdGUsIGN1cnJlbnRQYWdlKSB7CiAgICBzdGF0ZS5wYWdpbmF0aW9uLnBhZ2UgPSBjdXJyZW50UGFnZTsKICB9LAogIHNldFJvd3M6IGZ1bmN0aW9uIHNldFJvd3Moc3RhdGUsIHJvd3MpIHsKICAgIHN0YXRlLnJvd3MgPSByb3dzOwogIH0sCiAgc2V0Tm90aWNlOiBmdW5jdGlvbiBzZXROb3RpY2Uoc3RhdGUsIG5vdGljZSkgewogICAgc3RhdGUubm90aWNlID0gbm90aWNlOwogIH0sCiAgc2V0VG90YWw6IGZ1bmN0aW9uIHNldFRvdGFsKHN0YXRlLCB0b3RhbCkgewogICAgc3RhdGUudG90YWwgPSB0b3RhbDsKICB9LAogIHNldEZpbGVzRGF0YTogZnVuY3Rpb24gc2V0RmlsZXNEYXRhKHN0YXRlLCBmaWxlc0RhdGEpIHsKICAgIHN0YXRlLmZpbGVzRGF0YSA9IGZpbGVzRGF0YTsKICB9LAogIHNldE1lZXRpbmc6IGZ1bmN0aW9uIHNldE1lZXRpbmcoc3RhdGUsIG1lZXRpbmcpIHsKICAgIHN0YXRlLm1lZXRpbmcgPSBtZWV0aW5nOwogIH0sCiAgYWRkQ29sdW1uQWxpYXM6IGZ1bmN0aW9uIGFkZENvbHVtbkFsaWFzKHN0YXRlLCBhbGlhcykgewogICAgc3RhdGUuY29sdW1uQWxpYXNBcnkucHVzaChhbGlhcyk7CiAgfSwKICBjbGVhckNvbHVtbkFsaWFzQXJ5OiBmdW5jdGlvbiBjbGVhckNvbHVtbkFsaWFzQXJ5KHN0YXRlKSB7CiAgICBzdGF0ZS5jb2x1bW5BbGlhc0FyeSA9IFtdOwogIH0sCiAgc2V0Q29sdW1uUXVlcnlNZXJnaW5nOiBmdW5jdGlvbiBzZXRDb2x1bW5RdWVyeU1lcmdpbmcoc3RhdGUsIHZhbCkgewogICAgc3RhdGUuY29sdW1uUXVlcnlNZXJnaW5nID0gdmFsOwogIH0sCiAgc2V0Q29sdW1uRGF0YTogZnVuY3Rpb24gc2V0Q29sdW1uRGF0YShzdGF0ZSwgZGF0YSkgewogICAgdmFyIF9jb2xEYXRhID0gc3RhdGUuY29sdW1uRGF0YSB8fCB7fSwKICAgICAgYWxpYXNBcnkgPSBzdGF0ZS5jb2x1bW5EYXRhTG9hZGVkQWxpYXNlcyA/IHN0YXRlLmNvbHVtbkRhdGFMb2FkZWRBbGlhc2VzLnNwbGl0KCcsJykgOiBbXTsKICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoID4gMCkgewogICAgICBkYXRhLmZvckVhY2goZnVuY3Rpb24gKGQpIHsKICAgICAgICBhbGlhc0FyeS5wdXNoKGQuYWxpYXMpOwogICAgICAgIF9jb2xEYXRhW2QuYWxpYXNdID0gZDsKICAgICAgfSk7CiAgICB9CiAgICBzdGF0ZS5jb2x1bW5EYXRhID0gX2NvbERhdGE7CiAgICBzdGF0ZS5jb2x1bW5EYXRhTG9hZGVkQWxpYXNlcyA9IGFsaWFzQXJ5LmpvaW4oJywnKTsKICB9LAogIHVwZGF0ZUNvbHVtbkRhdGE6IGZ1bmN0aW9uIHVwZGF0ZUNvbHVtbkRhdGEoc3RhdGUsIGRhdGEpIHsKICAgIGlmIChkYXRhICYmIGRhdGEuYWxpYXMpIHsKICAgICAgc3RhdGUuY29sdW1uRGF0YVtkYXRhLmFsaWFzXSA9IGRhdGE7CiAgICB9CiAgfSwKICAvLyDliY3lj7Doj5zljZXotYvlgLwKICBtdXRhdGlvbkZyb250TWVudXM6IGZ1bmN0aW9uIG11dGF0aW9uRnJvbnRNZW51cyhzdGF0ZSwgZnJvbnRNZW51cykgewogICAgc3RhdGUuZnJvbnRNZW51cyA9IGZyb250TWVudXM7CiAgfSwKICAvLyDlkI7lj7Doj5zljZXotYvlgLwKICBtdXRhdGlvblN5c01lbnVzOiBmdW5jdGlvbiBtdXRhdGlvblN5c01lbnVzKHN0YXRlLCBzeXNNZW51cykgewogICAgc3RhdGUuc3lzTWVudXMgPSBzeXNNZW51czsKICB9LAogIC8vIOWQjuWPsOinkuiJsuiPnOWNlei1i+WAvAogIG11dGF0aW9uUm9sZU1lbnVzOiBmdW5jdGlvbiBtdXRhdGlvblJvbGVNZW51cyhzdGF0ZSwgcm9sZU1lbnVzKSB7CiAgICBzdGF0ZS5yb2xlTWVudXMgPSByb2xlTWVudXM7CiAgfQp9OwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZXNwYWNlZDogdHJ1ZSwKICBzdGF0ZTogc3RhdGUsCiAgZ2V0dGVyczogZ2V0dGVycywKICBhY3Rpb25zOiBhY3Rpb25zLAogIG11dGF0aW9uczogbXV0YXRpb25zCn07"},null]}