3951c46212cda20f92808b263f2b4c3c.json 29 KB

1
  1. {"remainingRequest":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js!E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js!E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\boman-framwork\\ruoyi-ui\\src\\views\\system\\form\\index.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\boman-framwork\\ruoyi-ui\\src\\views\\system\\form\\index.vue","mtime":1621907652938},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\boman-framwork\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIGZyb20gIkU6L2JvbWFuLWZyYW13b3JrL3J1b3lpLXVpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmlsdGVyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNwbGl0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmpvaW4uanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwppbXBvcnQgeyBnZXRUYWJsZVF1ZXJ5LCBnZXRPYmplY3QsIGdldGVkaXRpbmRlVGFiLCBsaXN0SW5kZXgsIGRlbE1lbnV0YWJmb3JtLCB0YWJsZVN1YmltdCwgdGFibGVTdWJpbXRhbml0LCBhZGRiamVjdFNhdmUsIGdldE9iamVjdHF1cmUgfSBmcm9tICdAL2FwaS9zeXN0ZW0vZm9ybS5qcyc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAiaW5kZXgiLAogIGluamVjdDogWydyZWxvYWQnXSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgcGlyX2ltZ3M6ICcnLAogICAgICAvLyDlm77niYfpk77mjqUKICAgICAgbnVtOiAwLAogICAgICAvLyDmgLvmnaHmlbAKICAgICAgdG90YWw6IDAsCiAgICAgIGxvYWRpbmc6IHRydWUsCiAgICAgIHRhYkxpc3Q6IHt9LAogICAgICBjdXJyZW50UGFnZTM6IDAsCiAgICAgIGFjdGl2ZU5hbWVzOiBbMCwgJ2xpc2VkJ10sCiAgICAgIHRpdGxlOiAn5YiX6KGoJywKICAgICAgb2JqUGFyYW1zOiB7CiAgICAgICAgdGFibGU6ICcnLAogICAgICAgIGZpeGVkRGF0YTogewogICAgICAgICAgaWQ6IC0xCiAgICAgICAgfSwKICAgICAgICBpc1VpOiB0cnVlCiAgICAgIH0sCiAgICAgIG9ialBhcmFtc3R1ZTogewogICAgICAgIHRhYmxlOiAnJwogICAgICB9LAogICAgICBxdWVyeURhdGE6IHt9LAogICAgICBxdWVyeURhdGF0YW86IHt9LAogICAgICAvLyDmn6Xor6Llj4LmlbAKICAgICAgcXVlcnlQYXJhbXM6IHsKICAgICAgICBkaWN0TmFtZTogdW5kZWZpbmVkLAogICAgICAgIGRpY3RUeXBlOiB1bmRlZmluZWQsCiAgICAgICAgc3RhdHVzOiB1bmRlZmluZWQKICAgICAgfSwKICAgICAgcXVlcnlQYXJhbXN0d29pOiB7CiAgICAgICAgZGljdE5hbWU6IHVuZGVmaW5lZCwKICAgICAgICBkaWN0VHlwZTogdW5kZWZpbmVkLAogICAgICAgIHN0YXR1czogdW5kZWZpbmVkCiAgICAgIH0sCiAgICAgIHF1ZXJ5UGFyYW1zbGlzdDogewogICAgICAgIHBhZ2VObzogMSwKICAgICAgICBwYWdlU2l6ZTogMTAsCiAgICAgICAgb3JkZXJCeTogJ2NyZWF0ZV90aW1lIGRlc2MnLAogICAgICAgIHRhYmxlOiAnJywKICAgICAgICBmaXhlZERhdGE6IHsKICAgICAgICAgIGNvbmRpdGlvbjoge30KICAgICAgICB9CiAgICAgIH0sCiAgICAgIGxhYmxldGl0OiAn5p+l6K+i5Y+C5pWwMTIzMycsCiAgICAgIHN1cmxhYmxlOiAn5a6e6ZmF5pWw5o2u5bqT6KGoJywKICAgICAgcG9zdExpc3Q6IHt9LAogICAgICBudW10YWI6IDAsCiAgICAgIHRhYmxkaWU6IFtdLAogICAgICB4aWR1Z2plOiAnJywKICAgICAgdGFiU2hvZXM6IGZhbHNlLAogICAgICAvL3RhYiDmmL7npLrpmpDol48KICAgICAgdGFibGVaYmlldGFiZzogewogICAgICAgIHRhYmxlOiAnc3lzX3VzZXInCiAgICAgIH0sCiAgICAgIGZvcm1lOiB7CiAgICAgICAgdGFibGU6ICcnLAogICAgICAgIGZpeGVkRGF0YToge30KICAgICAgfSwKICAgICAgZm9ybWVhbnRpOiB7CiAgICAgICAgdGFibGU6ICcnLAogICAgICAgIGNvbW1pdERhdGE6IFtdCiAgICAgIH0sCiAgICAgIGZvcm15OiB7CiAgICAgICAgaWQ6IDAsCiAgICAgICAgc3RhdHVzOiAxCiAgICAgIH0sCiAgICAgIC8vIOWIoOmZpOWPguaVsAogICAgICBkZWxlZGxpZDogewogICAgICAgIHRhYmxlOiAnJywKICAgICAgICBpZExpc3Q6IFtdCiAgICAgIH0sCiAgICAgIGltZ1Nob2V3OiAxLAogICAgICBqZWlnbmV1OiBbXSwKICAgICAgamVpZ25ldXR3bzogW10sCiAgICAgIHNpbmdsZTogdHJ1ZSwKICAgICAgbXVsdGlwbGU6IHRydWUsCiAgICAgIHRhYk5hbWU6ICcnLAogICAgICBvaWV1ZnI6ICcnLAogICAgICBjaWVsc3Nob3c6IGZhbHNlLAogICAgICBmb3JlbVR0YWU6ICcnLAogICAgICBmb3JlbVR0YWlkOiAtMSwKICAgICAgb2pldWR1ajogMCwKICAgICAgaWR0ZzogMAogICAgfTsKICB9LAogIGZpbHRlcnM6IHsKICAgIGJ0bkNvbnZlcnNpb246IGZ1bmN0aW9uIGJ0bkNvbnZlcnNpb24odmFsKSB7CiAgICAgIHN3aXRjaCAodmFsKSB7CiAgICAgICAgY2FzZSAnQSc6CiAgICAgICAgICByZXR1cm4gJ+S/neWtmCc7CgogICAgICAgIGNhc2UgJ00nOgogICAgICAgICAgcmV0dXJuICfkv67mlLknOwoKICAgICAgICBjYXNlICdEJzoKICAgICAgICAgIHJldHVybiAn5Yig6ZmkJzsKCiAgICAgICAgY2FzZSAnUSc6CiAgICAgICAgICByZXR1cm4gJ+afpeivoic7CgogICAgICAgIGNhc2UgJ1MnOgogICAgICAgICAgcmV0dXJuICfmj5DkuqQnOwoKICAgICAgICBjYXNlICdVJzoKICAgICAgICAgIHJldHVybiAn5Y+N5o+Q5LqkJzsKCiAgICAgICAgY2FzZSAnSSc6CiAgICAgICAgICByZXR1cm4gJ+WvvOWFpSc7CgogICAgICAgIGNhc2UgJ0UnOgogICAgICAgICAgcmV0dXJuICflr7zlh7onOwogICAgICB9CiAgICB9CiAgfSwKICB3YXRjaDogewogICAgJHJvdXRlOiBmdW5jdGlvbiAkcm91dGUoKSB7CiAgICAgIHRoaXMuaWR0ZyA9IHRoaXMuJHJvdXRlLnF1ZXJ5LmlkOyAvL+iOt+WPluS8oOadpeeahOWPguaVsAogICAgfQogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHRoaXMuZm9ybWVhbnRpLnRhYmxlID0gdGhpcy4kcm91dGUucXVlcnkudGFibGVzOwogICAgdGhpcy5mb3JtZS50YWJsZSA9IHRoaXMuJHJvdXRlLnF1ZXJ5LnRhYmxlczsKICAgIHRoaXMuZm9ybWUub2JqSWQgPSB0aGlzLiRyb3V0ZS5xdWVyeS5pZDsKICAgIHRoaXMuZm9ybXkuaWQgPSB0aGlzLiRyb3V0ZS5xdWVyeS5pZDsKICAgIHRoaXMub2lldWZyID0gdGhpcy4kcm91dGUucXVlcnkuaWQ7CiAgICB0aGlzLnRhYmxlWmJpZXRhYmcudGFibGUgPSB0aGlzLiRyb3V0ZS5xdWVyeS50YWJsZXM7CiAgICB0aGlzLm9ialBhcmFtcy50YWJsZSA9IHRoaXMuJHJvdXRlLnF1ZXJ5LnRhYmxlczsKICAgIHRoaXMub2JqUGFyYW1zLmZpeGVkRGF0YS5pZCA9IHRoaXMuJHJvdXRlLnF1ZXJ5LmlkOwogICAgdGhpcy5vamV1ZHVqID0gdGhpcy4kcm91dGUucXVlcnkuaWQ7CiAgICB0aGlzLmRlbGVkbGlkLnRhYmxlID0gdGhpcy4kcm91dGUucXVlcnkudGFibGVzOwogICAgdGhpcy5kZWxlZGxpZC5pZExpc3QucHVzaCh0aGlzLiRyb3V0ZS5xdWVyeS5pZCk7CiAgICB0aGlzLnF1ZXJ5UGFyYW1zbGlzdC50YWJsZSA9IHRoaXMuJHJvdXRlLnF1ZXJ5LnRhYmxlczsKCiAgICBpZiAodGhpcy4kcm91dGUucXVlcnkuaWQgPT0gLTEpIHsKICAgICAgY29uc29sZS5sb2codGhpcy4kcm91dGUucXVlcnkuaWQpOwogICAgICB0aGlzLmZvcmVtVHRhZSA9IHRoaXMuJHJvdXRlLnF1ZXJ5LnRhYmxlcyArICdfaWQnOwogICAgICB0aGlzLnF1ZXJ5UGFyYW1zbGlzdC5maXhlZERhdGEuY29uZGl0aW9uW3RoaXMuZm9yZW1UdGFlXSA9IHRoaXMuJHJvdXRlLnF1ZXJ5LmlkOyAvLyB0aGlzLmNpZWxzc2hvdyA9IHRydWUKICAgIH0gZWxzZSB7CiAgICAgIHZhciBiZWdhZCA9IHRoaXMuJHJvdXRlLnF1ZXJ5LnRhYmxlcyArICdfaWQnOwogICAgICB0aGlzLnF1ZXJ5UGFyYW1zbGlzdC5maXhlZERhdGEuY29uZGl0aW9uW2JlZ2FkXSA9IHRoaXMuJHJvdXRlLnF1ZXJ5LmlkOwogICAgICB0aGlzLmZvcmVtVHRhZSA9IHRoaXMuJHJvdXRlLnF1ZXJ5LnRhYmxlcyArICdfaWQnOyAvLyB0aGlzLmNpZWxzc2hvdyA9ICBmYWxzZQogICAgfSAvLyB0aGlzLm9ialBhcmFtc3R1ZS5maXhlZERhdGEuaWQgPSB0aGlzLiRyb3V0ZS5xdWVyeS5pZAoKCiAgICB0aGlzLmluaXQoKTsKICAgIHRoaXMuZWRpbmdlbHNpZXRhYigpOwogIH0sCiAgZGVzdHJveWVkOiBmdW5jdGlvbiBkZXN0cm95ZWQoKSB7fSwKICBtZXRob2RzOiB7CiAgICBpQ2hhbmdlOiBmdW5jdGlvbiBpQ2hhbmdlKG5hbWUsIHZhbCkgewogICAgICB2YXIgX2l0ZXJhdG9yID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodGhpcy5xdWVyeURhdGEuc2hvd0RhdGEpLAogICAgICAgICAgX3N0ZXA7CgogICAgICB0cnkgewogICAgICAgIGZvciAoX2l0ZXJhdG9yLnMoKTsgIShfc3RlcCA9IF9pdGVyYXRvci5uKCkpLmRvbmU7KSB7CiAgICAgICAgICB2YXIgaXRlbSA9IF9zdGVwLnZhbHVlOwoKICAgICAgICAgIHZhciBfaXRlcmF0b3IyID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIoaXRlbS5ockNoaWxkcmVuKSwKICAgICAgICAgICAgICBfc3RlcDI7CgogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZm9yIChfaXRlcmF0b3IyLnMoKTsgIShfc3RlcDIgPSBfaXRlcmF0b3IyLm4oKSkuZG9uZTspIHsKICAgICAgICAgICAgICB2YXIgaXRlbUNoaWxkID0gX3N0ZXAyLnZhbHVlOwoKICAgICAgICAgICAgICBpZiAoaXRlbUNoaWxkLmNvbHVtbk5hbWUgPT0gbmFtZSkgewogICAgICAgICAgICAgICAgaXRlbUNoaWxkLmNvbHVtblZhbHVlID0gdmFsID8gdmFsIDogbnVsbDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gY2F0Y2ggKGVycikgewogICAgICAgICAgICBfaXRlcmF0b3IyLmUoZXJyKTsKICAgICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgIF9pdGVyYXRvcjIuZigpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgX2l0ZXJhdG9yLmUoZXJyKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBfaXRlcmF0b3IuZigpOwogICAgICB9CiAgICB9LAogICAgaW1nQnRuOiBmdW5jdGlvbiBpbWdCdG4odXJsKSB7CiAgICAgIHRoaXMucGlyX2ltZ3MgPSB1cmw7CiAgICAgIHRoaXMuJHJlZnMuQmlnUGljdHVyZS5oaWRkZW4uc3RhdHVzID0gdHJ1ZTsKICAgIH0sCiAgICBtb2RlbEZuOiBmdW5jdGlvbiBtb2RlbEZuKG9iaiwgY29udCkgewogICAgICB0aGlzLiRzZXQodGhpcy5xdWVyeVBhcmFtcywgb2JqLCBjb250KTsKICAgIH0sCiAgICBoYW5kbGVDdXJyZW50Q2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVDdXJyZW50Q2hhbmdlKCkge30sCiAgICBoYW5kbGVTaXplQ2hhbmdlOiBmdW5jdGlvbiBoYW5kbGVTaXplQ2hhbmdlKCkge30sCiAgICBoZWFkZXJCdG46IGZ1bmN0aW9uIGhlYWRlckJ0bihpdGVtKSB7CiAgICAgIHN3aXRjaCAoaXRlbSkgewogICAgICAgIGNhc2UgJ0EnOgogICAgICAgICAgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CgogICAgICAgIGNhc2UgJ00nOgogICAgICAgICAgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CgogICAgICAgIGNhc2UgJ0QnOgogICAgICAgICAgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CgogICAgICAgIGNhc2UgJ1EnOgogICAgICAgICAgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CgogICAgICAgIGNhc2UgJ1MnOgogICAgICAgICAgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CgogICAgICAgIGNhc2UgJ1UnOgogICAgICAgICAgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CgogICAgICAgIGNhc2UgJ0UnOgogICAgICAgICAgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBpbml0OiBmdW5jdGlvbiBpbml0KCkgewogICAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgICAgZ2V0T2JqZWN0KHRoaXMub2JqUGFyYW1zKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICB2YXIgZGF0YSA9IHJlcy5kYXRhOwogICAgICAgIF90aGlzLnF1ZXJ5RGF0YSA9IGRhdGE7IC8vIOWbvueJh+eahOaYvuekuumakOiXjwoKICAgICAgICBpZiAoX3RoaXMucXVlcnlEYXRhLnNob3dEYXRhLmxlbmd0aCAhPT0gMCkgewogICAgICAgICAgX3RoaXMucXVlcnlEYXRhLnNob3dEYXRhLmZpbHRlcihmdW5jdGlvbiAocm91dGUpIHsKICAgICAgICAgICAgcm91dGUuaHJDaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKHJvdXRlcnN0KSB7CiAgICAgICAgICAgICAgaWYgKF90aGlzLnF1ZXJ5RGF0YS50YWJsZV9jb2x1bW4gPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICBfdGhpcy5xdWVyeURhdGEudGFibGVfY29sdW1uID0gbnVsbDsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHJvdXRlcnN0LnRhYmxlQ29sdW1udXkgPSBfdGhpcy5xdWVyeURhdGEudGFibGVfY29sdW1uOwogICAgICAgICAgICAgIHJvdXRlcnN0LnRhYmxlaWQgPSBfdGhpcy5vamV1ZHVqOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGlmIChyb3V0ZS5jc3NDbGFzcyAhPT0gbnVsbCkgewogICAgICAgICAgICAgIF90aGlzLmltZ1Nob2V3ID0gcm91dGUuY3NzQ2xhc3M7CgogICAgICAgICAgICAgIGlmIChyb3V0ZS5jc3NDbGFzcyA9PSAyIHx8IHJvdXRlLmNzc0NsYXNzID09IDQpIHsKICAgICAgICAgICAgICAgIHJvdXRlLmhyQ2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uIChyb3V0ZXJzKSB7CiAgICAgICAgICAgICAgICAgIHJvdXRlcnMuaXNvbmxpeSA9IHRydWU7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcm91dGUuaHJDaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24gKHJvdXRlcnMpIHsKICAgICAgICAgICAgICAgICAgcm91dGVycy5pc29ubGl5ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgaWYgKF90aGlzLnhpZHVnamUgPT0gJ3N4JykgewogICAgICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCkgewogICAgICAgICAgICBfdGhpcy5tc2dTdWNjZXNzKCLmk43kvZzmiJDlip8iKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIC8vIHRhYuaVsOaNrgogICAgZWRpbmdlbHNpZXRhYjogZnVuY3Rpb24gZWRpbmdlbHNpZXRhYigpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgICBnZXRlZGl0aW5kZVRhYih0aGlzLnRhYmxlWmJpZXRhYmcpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgaWYgKHJlc3BvbnNlLmRhdGEucmVmLmxlbmd0aCAhPT0gMCkgewogICAgICAgICAgX3RoaXMyLnRhYmxkaWUgPSByZXNwb25zZS5kYXRhLnJlZjsKICAgICAgICAgIF90aGlzMi5xdWVyeVBhcmFtc2xpc3QudGFibGUgPSBfdGhpczIudGFibGRpZVswXS50YWJsZU5hbWU7CiAgICAgICAgICBfdGhpczIub2JqUGFyYW1zdHVlLnRhYmxlID0gX3RoaXMyLnRhYmxkaWVbMF0udGFibGVOYW1lOwogICAgICAgICAgX3RoaXMyLnRhYk5hbWUgPSBfdGhpczIudGFibGRpZVswXS50YWJsZU5hbWU7CiAgICAgICAgICBfdGhpczIudGFiU2hvZXMgPSB0cnVlOwoKICAgICAgICAgIF90aGlzMi5mb3JlbWxpc2VqdSgpOwoKICAgICAgICAgIF90aGlzMi5mb3JlbWxpc2VqdXF1ZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfdGhpczIudGFiU2hvZXMgPSBmYWxzZTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWIl+ihqOaVsOaNrgogICAgZm9yZW1saXNlanU6IGZ1bmN0aW9uIGZvcmVtbGlzZWp1KCkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKCiAgICAgIGxpc3RJbmRleCh0aGlzLnF1ZXJ5UGFyYW1zbGlzdCkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgdmFyIGRhdGEgPSByZXMuZGF0YTsKICAgICAgICBfdGhpczMucG9zdExpc3QgPSBkYXRhOwogICAgICAgIF90aGlzMy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgX3RoaXMzLnRvdGFsID0gcmVzLmRhdGEudG90YWwgLSAwOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDliJfooajmn6Xor6LmjqXlj6MKICAgIGZvcmVtbGlzZWp1cXVlOiBmdW5jdGlvbiBmb3JlbWxpc2VqdXF1ZSgpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CgogICAgICBnZXRPYmplY3RxdXJlKHRoaXMub2JqUGFyYW1zdHVlKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICB2YXIgZGF0YSA9IHJlcy5kYXRhOwogICAgICAgIF90aGlzNC5xdWVyeURhdGF0YW8gPSByZXMuZGF0YTsKICAgICAgICBfdGhpczQuamVpZ25ldXR3byA9IFtdOwogICAgICAgIF90aGlzNC5qZWlnbmV1ID0gW107CiAgICAgICAgX3RoaXM0LmplaWduZXUgPSBkYXRhLmJ1dHRvbkxpc3Quc3BsaXQoJycpOwoKICAgICAgICBfdGhpczQuamVpZ25ldS5maWx0ZXIoZnVuY3Rpb24gKHJvdXRlKSB7CiAgICAgICAgICAvLyByb3V0ZS5kZXB0X2lkID0gcm91dGUuZGVwdF9pZC52YWx1ZQogICAgICAgICAgaWYgKHJvdXRlID09ICdBJykgewogICAgICAgICAgICByb3V0ZSA9ICfmlrDlop4nOwoKICAgICAgICAgICAgX3RoaXM0LmplaWduZXV0d28ucHVzaChyb3V0ZSk7CiAgICAgICAgICB9IGVsc2UgaWYgKHJvdXRlID09ICdNJykgewogICAgICAgICAgICByb3V0ZSA9ICfkv67mlLknOwoKICAgICAgICAgICAgX3RoaXM0LmplaWduZXV0d28ucHVzaChyb3V0ZSk7CiAgICAgICAgICB9IGVsc2UgaWYgKHJvdXRlID09ICdEJykgewogICAgICAgICAgICByb3V0ZSA9ICfliKDpmaQnOyAvLyBpZiAodGhpcy5mb3JteS5pZCAhPSAtMSkgewoKICAgICAgICAgICAgX3RoaXM0LmplaWduZXV0d28ucHVzaChyb3V0ZSk7IC8vIH0KCiAgICAgICAgICB9IGVsc2UgaWYgKHJvdXRlID09ICdRJykgewogICAgICAgICAgICByb3V0ZSA9ICfmn6Xor6InOwoKICAgICAgICAgICAgX3RoaXM0LmplaWduZXV0d28ucHVzaChyb3V0ZSk7CiAgICAgICAgICB9IGVsc2UgaWYgKHJvdXRlID09ICdTJykgewogICAgICAgICAgICByb3V0ZSA9ICfmj5DkuqQnOwoKICAgICAgICAgICAgaWYgKF90aGlzNC5mb3JteS5pZCAhPSAtMSkgewogICAgICAgICAgICAgIF90aGlzNC5qZWlnbmV1dHdvLnB1c2gocm91dGUpOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgaWYgKHJvdXRlID09ICdVJykgewogICAgICAgICAgICByb3V0ZSA9ICflj43mj5DkuqQnOwoKICAgICAgICAgICAgaWYgKF90aGlzNC5mb3JteS5pZCAhPSAtMSkgewogICAgICAgICAgICAgIF90aGlzNC5qZWlnbmV1dHdvLnB1c2gocm91dGUpOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgaWYgKHJvdXRlID09ICdJJykgewogICAgICAgICAgICByb3V0ZSA9ICflr7zlhaUnOwoKICAgICAgICAgICAgX3RoaXM0LmplaWduZXV0d28ucHVzaChyb3V0ZSk7CiAgICAgICAgICB9IGVsc2UgaWYgKHJvdXRlID09ICdFJykgewogICAgICAgICAgICByb3V0ZSA9ICflr7zlh7onOwoKICAgICAgICAgICAgX3RoaXM0LmplaWduZXV0d28ucHVzaChyb3V0ZSk7CiAgICAgICAgICB9CiAgICAgICAgfSk7IC8vIOWbvueJh+eahOaYvuekuumakOiXjwoKICAgICAgfSk7CiAgICB9LAogICAgLy8gdGFi54K55Ye7CiAgICB0YWJTYnU6IGZ1bmN0aW9uIHRhYlNidShpbmRleCkgewogICAgICB0aGlzLm51bSA9IGluZGV4OwogICAgfSwKICAgIGVuZGl0VGFiOiBmdW5jdGlvbiBlbmRpdFRhYihpbmRleCkgewogICAgICB0aGlzLm51bXRhYiA9IGluZGV4OwogICAgICB0aGlzLnF1ZXJ5UGFyYW1zbGlzdC50YWJsZSA9IHRoaXMudGFibGRpZVtpbmRleF0udGFibGVOYW1lOwogICAgICB0aGlzLnRhYk5hbWUgPSB0aGlzLnRhYmxkaWVbaW5kZXhdLnRhYmxlTmFtZTsKICAgICAgdGhpcy5vYmpQYXJhbXN0dWUudGFibGUgPSB0aGlzLnRhYmxkaWVbaW5kZXhdLnRhYmxlTmFtZTsKICAgICAgdGhpcy5mb3JlbWxpc2VqdSgpOwogICAgICB0aGlzLmZvcmVtbGlzZWp1cXVlKCk7CiAgICB9LAogICAgY2hhbmdlRm46IGZ1bmN0aW9uIGNoYW5nZUZuKG9iaikgewogICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtc1trZXldID0gb2JqW2tleV07CiAgICAgIH0KICAgIH0sCiAgICByZXNldFF1ZXJ5OiBmdW5jdGlvbiByZXNldFF1ZXJ5KCkge30sCgogICAgLyoqIOaQnOe0ouaMiemSruaTjeS9nCAqLwogICAgaGFuZGxlUXVlcnk6IGZ1bmN0aW9uIGhhbmRsZVF1ZXJ5KGluZGV4KSB7CiAgICAgIGlmIChpbmRleCA9PSAnZmgnKSB7CiAgICAgICAgdGhpcy4kc3RvcmUuZGlzcGF0Y2goInRhZ3NWaWV3L2RlbFZpZXciLCB0aGlzLiRyb3V0ZSk7CiAgICAgICAgY29uc29sZS5sb2codGhpcy5pZHRnKTsKICAgICAgICB0aGlzLiRyb3V0ZXIucmVwbGFjZSh7CiAgICAgICAgICBwYXRoOiAiL2J1c2luZXNzLyIgKyB0aGlzLm9ialBhcmFtcy50YWJsZQogICAgICAgIH0pOwogICAgICAgIGNvbnNvbGUubG9nKCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9IGVsc2UgaWYgKGluZGV4ID09ICdzeCcpIHsKICAgICAgICB0aGlzLnhpZHVnamUgPSAnc3gnOwogICAgICAgIHRoaXMucmVsb2FkKCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB2YXIgX2l0ZXJhdG9yMyA9IF9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyKHRoaXMucXVlcnlEYXRhLnNob3dEYXRhKSwKICAgICAgICAgIF9zdGVwMzsKCiAgICAgIHRyeSB7CiAgICAgICAgZm9yIChfaXRlcmF0b3IzLnMoKTsgIShfc3RlcDMgPSBfaXRlcmF0b3IzLm4oKSkuZG9uZTspIHsKICAgICAgICAgIHZhciBpdGVtID0gX3N0ZXAzLnZhbHVlOwoKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbS5ockNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChpdGVtLmhyQ2hpbGRyZW5baV0uaHRtbFR5cGUgPT0gJ2NoZWNrYm94JykgewogICAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXNbaXRlbS5ockNoaWxkcmVuW2ldLmNvbHVtbk5hbWVdID0gdGhpcy4kcmVmc1tpdGVtLmhyQ2hpbGRyZW5baV0uY29sdW1uTmFtZV1bMF0uY29uZmlnOwogICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uaHJDaGlsZHJlbltpXS5odG1sVHlwZSA9PSAnaW1hZ2VVcGxvYWQnIHx8IGl0ZW0uaHJDaGlsZHJlbltpXS5odG1sVHlwZSA9PSAnZmlsZVVwbG9hZCcpIHsKICAgICAgICAgICAgICBpZiAodGhpcy4kcmVmc1tpdGVtLmhyQ2hpbGRyZW5baV0uY29sdW1uTmFtZV1bMF0uY29uZmlnLmxlbmd0aCkgewogICAgICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtc1tpdGVtLmhyQ2hpbGRyZW5baV0uY29sdW1uTmFtZV0gPSBKU09OLnN0cmluZ2lmeSh0aGlzLiRyZWZzW2l0ZW0uaHJDaGlsZHJlbltpXS5jb2x1bW5OYW1lXVswXS5jb25maWcpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLmhyQ2hpbGRyZW5baV0uaHRtbFR5cGUgPT0gJ2RhdGV0aW1lJykgewogICAgICAgICAgICAgIGlmICh0aGlzLiRyZWZzW2l0ZW0uaHJDaGlsZHJlbltpXS5jb2x1bW5OYW1lXVswXS5jb25maWdbaXRlbS5ockNoaWxkcmVuW2ldLmNvbHVtbk5hbWVdKSB7CiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zW2l0ZW0uaHJDaGlsZHJlbltpXS5jb2x1bW5OYW1lXSA9IHRoaXMuJHJlZnNbaXRlbS5ockNoaWxkcmVuW2ldLmNvbHVtbk5hbWVdWzBdLmNvbmZpZ1tpdGVtLmhyQ2hpbGRyZW5baV0uY29sdW1uTmFtZV07CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXNbaXRlbS5ockNoaWxkcmVuW2ldLmNvbHVtbk5hbWVdID0gbnVsbDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtc1tpdGVtLmhyQ2hpbGRyZW5baV0uY29sdW1uTmFtZV0gPSB0aGlzLiRyZWZzW2l0ZW0uaHJDaGlsZHJlbltpXS5jb2x1bW5OYW1lXVswXS5jb25maWdbaXRlbS5ockNoaWxkcmVuW2ldLmNvbHVtbk5hbWVdOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICBfaXRlcmF0b3IzLmUoZXJyKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBfaXRlcmF0b3IzLmYoKTsKICAgICAgfQoKICAgICAgaWYgKGluZGV4ID09ICdEJykgewogICAgICAgIC8v5Yig6ZmkCiAgICAgICAgdGhpcy5oYW5kbGVEZWxldGUodGhpcy5kZWxlZGxpZCk7CiAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gJ1MnKSB7CiAgICAgICAgLy/mj5DkuqQgIOS/neWtmAogICAgICAgIHRoaXMuZm9ybWVhbnRpLmNvbW1pdERhdGEgPSBbXTsKICAgICAgICB0aGlzLmZvcm15LnN0YXR1cyA9IDE7CiAgICAgICAgdGhpcy5mb3JtZWFudGkuY29tbWl0RGF0YS5wdXNoKHRoaXMuZm9ybXkpOwogICAgICAgIHRoaXMuYW50aVN1Ym1pc3Npb24oKTsKICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSAnVScpIHsKICAgICAgICAvL+WPjeaPkOS6pCAg5L+d5a2YCiAgICAgICAgdGhpcy5mb3JtZWFudGkuY29tbWl0RGF0YSA9IFtdOwogICAgICAgIHRoaXMuZm9ybXkuc3RhdHVzID0gMjsKICAgICAgICB0aGlzLmZvcm1lYW50aS5jb21taXREYXRhLnB1c2godGhpcy5mb3JteSk7CiAgICAgICAgdGhpcy5hbnRpU3VibWlzc2lvbigpOwogICAgICB9IGVsc2UgaWYgKGluZGV4ID09ICdNJykgewogICAgICAgIC8vIOS/ruaUuQogICAgICAgIHRoaXMuZm9ybWUuZml4ZWREYXRhID0gdGhpcy5xdWVyeVBhcmFtczsKICAgICAgICB0aGlzLnN1Ym1pdEZvcm0oKTsKICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSAnQScpIHsKICAgICAgICB0aGlzLmZvcm1lLmZpeGVkRGF0YSA9IHRoaXMucXVlcnlQYXJhbXM7CiAgICAgICAgdGhpcy5zdWJtaXRGb3JtKCk7CiAgICAgIH0gLy8gdGhpcy5nZXRMaXN0KCk7CgogICAgfSwKICAgIC8vIOaQnOe0ouWIl+ihqAogICAgaGFuZGxlUXVlcnlpdTogZnVuY3Rpb24gaGFuZGxlUXVlcnlpdSgpIHsKICAgICAgdmFyIF9pdGVyYXRvcjQgPSBfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlcih0aGlzLnF1ZXJ5RGF0YXRhby5xdWVyeUxpc3QpLAogICAgICAgICAgX3N0ZXA0OwoKICAgICAgdHJ5IHsKICAgICAgICBmb3IgKF9pdGVyYXRvcjQucygpOyAhKF9zdGVwNCA9IF9pdGVyYXRvcjQubigpKS5kb25lOykgewogICAgICAgICAgdmFyIGl0ZW0gPSBfc3RlcDQudmFsdWU7CgogICAgICAgICAgaWYgKGl0ZW0uaHRtbFR5cGUgPT0gJ2NoZWNrYm94JykgewogICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zdHdvaVtpdGVtLmNvbHVtbk5hbWVdID0gdGhpcy4kcmVmc1tpdGVtLmNvbHVtbk5hbWVdWzBdLmNvbmZpZzsKICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5odG1sVHlwZSA9PSAnaW1hZ2VVcGxvYWQnIHx8IGl0ZW0uaHRtbFR5cGUgPT0gJ2ZpbGVVcGxvYWQnKSB7CiAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXN0d29pW2l0ZW0uY29sdW1uTmFtZV0gPSBKU09OLnN0cmluZ2lmeSh0aGlzLiRyZWZzW2l0ZW0uY29sdW1uTmFtZV1bMF0uY29uZmlnKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXN0d29pW2l0ZW0uY29sdW1uTmFtZV0gPSB0aGlzLiRyZWZzW2l0ZW0uY29sdW1uTmFtZV1bMF0uY29uZmlnW2l0ZW0uY29sdW1uTmFtZV07CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICBfaXRlcmF0b3I0LmUoZXJyKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBfaXRlcmF0b3I0LmYoKTsKICAgICAgfQoKICAgICAgZm9yICh2YXIgaXRlbXMgaW4gdGhpcy5xdWVyeVBhcmFtc3R3b2kpIHsKICAgICAgICBpZiAodGhpcy5xdWVyeVBhcmFtc3R3b2lbaXRlbXNdID09ICcnKSB7CiAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zdHdvaVtpdGVtc10gPSB1bmRlZmluZWQ7CiAgICAgICAgfQogICAgICB9CgogICAgICB0aGlzLnF1ZXJ5UGFyYW1zdHdvaVt0aGlzLmZvcmVtVHRhZV0gPSB0aGlzLm9pZXVmcjsKICAgICAgdGhpcy5xdWVyeVBhcmFtc2xpc3QuZml4ZWREYXRhLmNvbmRpdGlvbiA9IHRoaXMucXVlcnlQYXJhbXN0d29pOyAvLyB0aGlzLnF1ZXJ5UGFyYW1zbGlzdC5maXhlZERhdGEuY29uZGl0aW9uW3RoaXMuZm9yZW1UdGFlXSA9IHRoaXMub2lldWZyCgogICAgICB0aGlzLmZvcmVtbGlzZWp1KCk7CiAgICB9LAoKICAgIC8qKiDmlrDlop4g5L+u5pS55o+Q5Lqk5oyJ6ZKuICovCiAgICBzdWJtaXRGb3JtOiBmdW5jdGlvbiBzdWJtaXRGb3JtKCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKCiAgICAgIHRoaXMuJHJlZnNbInF1ZXJ5Rm9ybSJdLnZhbGlkYXRlKGZ1bmN0aW9uICh2YWxpZCkgewogICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgYWRkYmplY3RTYXZlKF90aGlzNS5mb3JtZSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICAgICAgX3RoaXM1Lm1zZ1N1Y2Nlc3MoIuS/neWtmOaIkOWKnyIpOwoKICAgICAgICAgICAgaWYgKF90aGlzNS5mb3JteS5pZCA9PSAtMSkgewogICAgICAgICAgICAgIGlmIChyZXNwb25zZS5jb2RlID09IDIwMCkgewogICAgICAgICAgICAgICAgX3RoaXM1LmNpZWxzc2hvdyA9IHRydWU7CiAgICAgICAgICAgICAgICBfdGhpczUuZm9ybXkuaWQgPSByZXNwb25zZS5kYXRhOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBfdGhpczUuY2llbHNzaG93ID0gZmFsc2U7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICB2YXIgcXVlcnkgPSBPYmplY3QuYXNzaWduKHsKICAgICAgICAgICAgICAgICdpZCc6IHJlc3BvbnNlLmRhdGEsCiAgICAgICAgICAgICAgICAndGFibGVzJzogX3RoaXM1LmZvcm1lLnRhYmxlCiAgICAgICAgICAgICAgfSwge30pOwoKICAgICAgICAgICAgICBfdGhpczUuJHJvdXRlci5wdXNoKHsKICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeQogICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICBfdGhpczUucXVlcnlQYXJhbXNsaXN0LmZpeGVkRGF0YS5jb25kaXRpb25bX3RoaXM1LmZvcmVtVHRhZV0gPSByZXNwb25zZS5kYXRhOwogICAgICAgICAgICAgIF90aGlzNS5kZWxlZGxpZC5pZExpc3QgPSBbXTsKCiAgICAgICAgICAgICAgX3RoaXM1LmRlbGVkbGlkLmlkTGlzdC5wdXNoKHJlc3BvbnNlLmRhdGEpOwoKICAgICAgICAgICAgICBfdGhpczUuZm9ybXkuaWQgPSByZXNwb25zZS5kYXRhOwogICAgICAgICAgICAgIF90aGlzNS5vaWV1ZnIgPSByZXNwb25zZS5kYXRhOwogICAgICAgICAgICAgIF90aGlzNS5vamV1ZHVqID0gcmVzcG9uc2UuZGF0YTsKICAgICAgICAgICAgICBfdGhpczUub2JqUGFyYW1zLmZpeGVkRGF0YS5pZCA9IHJlc3BvbnNlLmRhdGE7CgogICAgICAgICAgICAgIF90aGlzNS5pbml0KCk7CgogICAgICAgICAgICAgIF90aGlzNS5mb3JlbWxpc2VqdSgpOwoKICAgICAgICAgICAgICBfdGhpczUucmVsb2FkKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgX3RoaXM1LiRzdG9yZS5kaXNwYXRjaCgidGFnc1ZpZXcvZGVsVmlldyIsIF90aGlzNS4kcm91dGUpOwoKICAgICAgICAgICAgICBfdGhpczUuJHJvdXRlci5yZXBsYWNlKHsKICAgICAgICAgICAgICAgIHBhdGg6ICIvYnVzaW5lc3MvIiArIF90aGlzNS5vYmpQYXJhbXMudGFibGUKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCiAgICAvLyDmj5DkuqTlj43mj5DkuqQKICAgIGFudGlTdWJtaXNzaW9uOiBmdW5jdGlvbiBhbnRpU3VibWlzc2lvbigpIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CgogICAgICB0aGlzLiRyZWZzWyJxdWVyeUZvcm0iXS52YWxpZGF0ZShmdW5jdGlvbiAodmFsaWQpIHsKICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgIGlmIChfdGhpczYuZm9ybXkuc3RhdHVzID09IDEpIHsKICAgICAgICAgICAgLy8g5o+Q5LqkCiAgICAgICAgICAgIHRhYmxlU3ViaW10KF90aGlzNi5mb3JtZWFudGkpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgX3RoaXM2Lm1zZ1N1Y2Nlc3MoIuaPkOS6pOaIkOWKnyIpOwoKICAgICAgICAgICAgICBfdGhpczYuJHN0b3JlLmRpc3BhdGNoKCJ0YWdzVmlldy9kZWxWaWV3IiwgX3RoaXM2LiRyb3V0ZSk7CgogICAgICAgICAgICAgIF90aGlzNi4kcm91dGVyLnJlcGxhY2UoewogICAgICAgICAgICAgICAgcGF0aDogIi9idXNpbmVzcy8iICsgX3RoaXM2Lm9ialBhcmFtcy50YWJsZQogICAgICAgICAgICAgIH0pOyAvLyB0aGlzLmdldExpc3QoKTsKCiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIGlmIChfdGhpczYuZm9ybXkuc3RhdHVzID09IDIpIHsKICAgICAgICAgICAgLy8g5Y+N5o+Q5LqkCiAgICAgICAgICAgIHRhYmxlU3ViaW10YW5pdChfdGhpczYuZm9ybWVhbnRpKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgICAgICAgIF90aGlzNi5tc2dTdWNjZXNzKCLlj43mj5DkuqTmiJDlip8iKTsKCiAgICAgICAgICAgICAgX3RoaXM2LiRzdG9yZS5kaXNwYXRjaCgidGFnc1ZpZXcvZGVsVmlldyIsIF90aGlzNi4kcm91dGUpOwoKICAgICAgICAgICAgICBfdGhpczYuJHJvdXRlci5yZXBsYWNlKHsKICAgICAgICAgICAgICAgIHBhdGg6ICIvYnVzaW5lc3MvIiArIF90aGlzNi5vYmpQYXJhbXMudGFibGUKICAgICAgICAgICAgICB9KTsgLy8gdGhpcy5nZXRMaXN0KCk7CgogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKICAgIC8v5Yig6ZmkCiAgICBoYW5kbGVEZWxldGU6IGZ1bmN0aW9uIGhhbmRsZURlbGV0ZShpbmRleCkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKCiAgICAgIHRoaXMuJGNvbmZpcm0oJ+aYr+WQpuehruiupOWIoOmZpCcsICLorablkYoiLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICLnoa7lrpoiLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICLlj5bmtogiLAogICAgICAgIHR5cGU6ICJ3YXJuaW5nIgogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gZGVsTWVudXRhYmZvcm0oaW5kZXgpOwogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAvLyB0aGlzLmdldExpc3QoKTsKICAgICAgICBfdGhpczcubXNnU3VjY2Vzcygi5Yig6Zmk5oiQ5YqfIik7CgogICAgICAgIF90aGlzNy4kc3RvcmUuZGlzcGF0Y2goInRhZ3NWaWV3L2RlbFZpZXciLCBfdGhpczcuJHJvdXRlKTsKCiAgICAgICAgX3RoaXM3LiRyb3V0ZXIucmVwbGFjZSh7CiAgICAgICAgICBwYXRoOiAiL2J1c2luZXNzLyIgKyBfdGhpczcub2JqUGFyYW1zLnRhYmxlCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWIl+ihqOWIoOmZpAogICAgaGFuZGxlRGVsZXRldHdvOiBmdW5jdGlvbiBoYW5kbGVEZWxldGV0d28oaW5kZXgpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CgogICAgICBpbmRleC5pZExpc3QgPSB0aGlzLmlkczsKICAgICAgaW5kZXgudGFibGUgPSB0aGlzLnRhYk5hbWU7CiAgICAgIHRoaXMuJGNvbmZpcm0oJ+aYr+WQpuehruiupOWIoOmZpCcsICLorablkYoiLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICLnoa7lrpoiLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICLlj5bmtogiLAogICAgICAgIHR5cGU6ICJ3YXJuaW5nIgogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gZGVsTWVudXRhYmZvcm0oaW5kZXgpOwogICAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczguZm9yZW1saXNlanUoKTsKCiAgICAgICAgX3RoaXM4Lm1zZ1N1Y2Nlc3MoIuWIoOmZpOaIkOWKnyIpOyAvLyB0aGlzLiRyb3V0ZXIuZ28oLTEpCgogICAgICB9KTsKICAgIH0sCiAgICAvLyDlpJrpgInmoYbpgInkuK3mlbDmja4KICAgIGhhbmRsZVNlbGVjdGlvbkNoYW5nZTogZnVuY3Rpb24gaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGlvbikgewogICAgICB0aGlzLmlkcyA9IHNlbGVjdGlvbi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS5pZDsKICAgICAgfSk7IC8vIGNvbnNvbGUubG9nKHRoaXMuaWRzKQoKICAgICAgdGhpcy5zaW5nbGUgPSBzZWxlY3Rpb24ubGVuZ3RoICE9IDE7CiAgICAgIHRoaXMubXVsdGlwbGUgPSAhc2VsZWN0aW9uLmxlbmd0aDsKICAgIH0sCiAgICBoYW5kbGVRdWVyeWp1OiBmdW5jdGlvbiBoYW5kbGVRdWVyeWp1KGluZGV4KSB7CiAgICAgIHZhciBfaXRlcmF0b3I1ID0gX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIodGhpcy5xdWVyeURhdGEuc2hvd0RhdGEpLAogICAgICAgICAgX3N0ZXA1OwoKICAgICAgdHJ5IHsKICAgICAgICBmb3IgKF9pdGVyYXRvcjUucygpOyAhKF9zdGVwNSA9IF9pdGVyYXRvcjUubigpKS5kb25lOykgewogICAgICAgICAgdmFyIGl0ZW0gPSBfc3RlcDUudmFsdWU7CgogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtLmhyQ2hpbGRyZW4ubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGl0ZW0uaHJDaGlsZHJlbltpXS5odG1sVHlwZSA9PSAnY2hlY2tib3gnKSB7CiAgICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtc1tpdGVtLmhyQ2hpbGRyZW5baV0uY29sdW1uTmFtZV0gPSB0aGlzLiRyZWZzW2l0ZW0uaHJDaGlsZHJlbltpXS5jb2x1bW5OYW1lXVswXS5jb25maWc7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS5ockNoaWxkcmVuW2ldLmh0bWxUeXBlID09ICdpbWFnZVVwbG9hZCcgfHwgaXRlbS5ockNoaWxkcmVuW2ldLmh0bWxUeXBlID09ICdmaWxlVXBsb2FkJykgewogICAgICAgICAgICAgIGlmICh0aGlzLiRyZWZzW2l0ZW0uaHJDaGlsZHJlbltpXS5jb2x1bW5OYW1lXVswXS5jb25maWcubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zW2l0ZW0uaHJDaGlsZHJlbltpXS5jb2x1bW5OYW1lXSA9IEpTT04uc3RyaW5naWZ5KHRoaXMuJHJlZnNbaXRlbS5ockNoaWxkcmVuW2ldLmNvbHVtbk5hbWVdWzBdLmNvbmZpZyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMucXVlcnlQYXJhbXNbaXRlbS5ockNoaWxkcmVuW2ldLmNvbHVtbk5hbWVdID0gdGhpcy4kcmVmc1tpdGVtLmhyQ2hpbGRyZW5baV0uY29sdW1uTmFtZV1bMF0uY29uZmlnW2l0ZW0uaHJDaGlsZHJlbltpXS5jb2x1bW5OYW1lXTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgX2l0ZXJhdG9yNS5lKGVycik7CiAgICAgIH0gZmluYWxseSB7CiAgICAgICAgX2l0ZXJhdG9yNS5mKCk7CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VOdW0gIT09IHVuZGVmaW5lZCkgewogICAgICAgIHRoaXMucXVlcnlQYXJhbXMucGFnZU51bSA9IHVuZGVmaW5lZDsKICAgICAgfQoKICAgICAgaWYgKHRoaXMucXVlcnlQYXJhbXMucGFnZVNpemUgIT09IHVuZGVmaW5lZCkgewogICAgICAgIHRoaXMucXVlcnlQYXJhbXMucGFnZVNpemUgPSB1bmRlZmluZWQ7CiAgICAgIH0KCiAgICAgIGlmIChpbmRleCA9PSAn5Yig6ZmkJykgewogICAgICAgIC8v5Yig6ZmkCiAgICAgICAgdGhpcy5oYW5kbGVEZWxldGV0d28odGhpcy5kZWxlZGxpZCk7CiAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gJ+aWsOWinicpIHsKICAgICAgICBpZiAodGhpcy5vYmpQYXJhbXMuZml4ZWREYXRhLmlkID09IC0xKSB7CiAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLm9ialBhcmFtcy5maXhlZERhdGEuaWQsMjMzNCkKICAgICAgICAgIGlmICh0aGlzLmNpZWxzc2hvdyA9PSB0cnVlKSB7CiAgICAgICAgICAgIHRoaXMucm91dGVyRm4oLTEsIHRoaXMudGFiTmFtZSwgdGhpcy5vaWV1ZnIsIHRoaXMuZm9ybWUudGFibGUpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhpcy5tc2dJbmZvKCfln7rmnKzkv6Hmga/mmoLmnKrkv53lrZgnKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpcy5yb3V0ZXJGbigtMSwgdGhpcy50YWJOYW1lLCB0aGlzLm9pZXVmciwgdGhpcy5mb3JtZS50YWJsZSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGluZGV4ID09ICfkv67mlLknKSB7CiAgICAgICAgaWYgKHRoaXMuc2luZ2xlKSB7CiAgICAgICAgICB0aGlzLm1zZ0luZm8oJ+ivt+WLvumAieS4gOadoeS/oeaBrycpOwogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFyIGlkID0gdGhpcy5pZHMuam9pbignLCcpOwogICAgICAgIHRoaXMucm91dGVyRm4oaWQsIHRoaXMudGFiTmFtZSwgdGhpcy5vaWV1ZnIsIHRoaXMuZm9ybWUudGFibGUpOwogICAgICB9CiAgICB9LAogICAgcm91dGVyRm46IGZ1bmN0aW9uIHJvdXRlckZuKGlkLCB0YWJsZXMsIHRhYmZlLCB0YWJpaykgewogICAgICAvLyBpZiAodGhpcy5xdWVyeURhdGF0YW8udmlld1R5cGUgPT0gJ2NydWQnKSB7CiAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHsKICAgICAgICBwYXRoOiAndGFibGUnLAogICAgICAgIHF1ZXJ5OiB7CiAgICAgICAgICBpZDogaWQsCiAgICAgICAgICB0YWJsZXM6IHRhYmxlcywKICAgICAgICAgIHRhYmZlOiB0YWJmZSwKICAgICAgICAgIHRhYmlrOiB0YWJpawogICAgICAgIH0KICAgICAgfSk7IC8vIH0gZWxzZSBpZiAodGhpcy5xdWVyeURhdGF0YW8udmlld1R5cGUgPT0gJ2hlYWRUYWInKSB7CiAgICAgIC8vICAgdGhpcy4kcm91dGVyLnB1c2goewogICAgICAvLyAgICAgcGF0aDogJ2VkaXRpbmcnLAogICAgICAvLyAgICAgcXVlcnk6IHsKICAgICAgLy8gICAgICAgaWQsCiAgICAgIC8vICAgICAgIHRhYmxlcywKICAgICAgLy8gICAgICAgdGFiZmUsCiAgICAgIC8vICAgICAgIHRhYmlrCiAgICAgIC8vICAgICB9LAogICAgICAvLyAgIH0pCiAgICAgIC8vIH0KICAgIH0KICB9Cn07"},null]}