You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
35 KiB
1 lines
35 KiB
{"remainingRequest":"F:\\workspace\\gcy\\RK-html\\RK-project\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js!F:\\workspace\\gcy\\RK-html\\RK-project\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js!F:\\workspace\\gcy\\RK-html\\RK-project\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!F:\\workspace\\gcy\\RK-html\\RK-project\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!F:\\workspace\\gcy\\RK-html\\RK-project\\ruoyi-ui\\src\\views\\project\\infoShow\\queryList.vue?vue&type=script&lang=js&","dependencies":[{"path":"F:\\workspace\\gcy\\RK-html\\RK-project\\ruoyi-ui\\src\\views\\project\\infoShow\\queryList.vue","mtime":1643081076597},{"path":"F:\\workspace\\gcy\\RK-html\\RK-project\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"F:\\workspace\\gcy\\RK-html\\RK-project\\ruoyi-ui\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"F:\\workspace\\gcy\\RK-html\\RK-project\\ruoyi-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"F:\\workspace\\gcy\\RK-html\\RK-project\\ruoyi-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"F:\\workspace\\gcy\\RK-html\\RK-project\\ruoyi-ui\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkY6L3dvcmtzcGFjZS9nY3kvUkstaHRtbC9SSy1wcm9qZWN0L3J1b3lpLXVpL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAicmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KaW1wb3J0IHsgbGlzdEluZm8sIGdldEluZm8sIGRlbEluZm8sIGFkZEluZm8sIHVwZGF0ZUluZm8sIGV4cG9ydEluZm8sIGltcG9ydFRlbXBsYXRlIGFzIF9pbXBvcnRUZW1wbGF0ZSB9IGZyb20gIkAvYXBpL3Byb2plY3QvaW5mbzIiOwppbXBvcnQgeyBnZXRUb2tlbiB9IGZyb20gIkAvdXRpbHMvYXV0aCI7CmltcG9ydCBCTFlpVHVvQ2hhcnQgZnJvbSAiLi4vLi4vZGFzaGJvYXJkL0JMWWlUdW9DaGFydCI7CmltcG9ydCBCYXJDaGFydDMgZnJvbSAiLi4vLi4vZGFzaGJvYXJkL0JhckNoYXJ0MyI7CmltcG9ydCBCYXJMaW5lQ2hhcnQgZnJvbSAiLi4vLi4vZGFzaGJvYXJkL0JhckxpbmVDaGFydCI7CmltcG9ydCB7IHRvdGFsQnVnZXREYXRhLCBsZWZ0MURhdGEsIGxlZnQ3RGF0YSwgY2VudGVyOERhdGEsIGxlZnQ3RGF0YTIsIHN0YXRpc3RpY3MgfSBmcm9tICJAL2FwaS9wcm9qZWN0L2luZm8zIjsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICJJbmZvIiwKICBjb21wb25lbnRzOiB7CiAgICBCTFlpVHVvQ2hhcnQ6IEJMWWlUdW9DaGFydCwKICAgIEJhckNoYXJ0MzogQmFyQ2hhcnQzLAogICAgQmFyTGluZUNoYXJ0OiBCYXJMaW5lQ2hhcnQKICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICB6amY6IDAsCiAgICAgIC8vIOS4iuS8oOWPguaVsAogICAgICB1cGxvYWRQcm9qZWN0OiB7CiAgICAgICAgLy8g5piv5ZCm5pi+56S65by55Ye65bGC77yI55So5oi35a+85YWl77yJCiAgICAgICAgb3BlbjogZmFsc2UsCiAgICAgICAgLy8g5by55Ye65bGC5qCH6aKY77yI55So5oi35a+85YWl77yJCiAgICAgICAgdGl0bGU6ICIiLAogICAgICAgIC8vIOaYr+WQpuemgeeUqOS4iuS8oAogICAgICAgIGlzVXBsb2FkaW5nOiBmYWxzZSwKICAgICAgICAvLyDmmK/lkKbmm7TmlrDlt7Lnu4/lrZjlnKjnmoTnlKjmiLfmlbDmja4KICAgICAgICB1cGRhdGVTdXBwb3J0OiAwLAogICAgICAgIC8vIOiuvue9ruS4iuS8oOeahOivt+axguWktOmDqAogICAgICAgIGhlYWRlcnM6IHsKICAgICAgICAgIEF1dGhvcml6YXRpb246ICJCZWFyZXIgIiArIGdldFRva2VuKCkKICAgICAgICB9LAogICAgICAgIC8vIOS4iuS8oOeahOWcsOWdgAogICAgICAgIHVybDogcHJvY2Vzcy5lbnYuVlVFX0FQUF9CQVNFX0FQSSArICIvdXBsb2FkL2FkZFByb2plY3QiLAogICAgICAgIHR5cGU6ICdhbGwnLAogICAgICAgIG9wdGlvbjogJ2luc2V0JwogICAgICB9LAogICAgICAvLyDkuIrkvKDlj4LmlbAKICAgICAgdXBsb2FkOiB7CiAgICAgICAgdGl0bGU6ICIiLAogICAgICAgIG9wZW46IGZhbHNlLAogICAgICAgIC8vIOaYr+WQpuemgeeUqOS4iuS8oAogICAgICAgIGlzVXBsb2FkaW5nOiBmYWxzZSwKICAgICAgICAvLyDorr7nva7kuIrkvKDnmoTor7fmsYLlpLTpg6gKICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICBBdXRob3JpemF0aW9uOiAiQmVhcmVyICIgKyBnZXRUb2tlbigpCiAgICAgICAgfSwKICAgICAgICAvLyDkuIrkvKDnmoTlnLDlnYAKICAgICAgICB1cmw6IHByb2Nlc3MuZW52LlZVRV9BUFBfQkFTRV9BUEkgKyAiL3Byb2plY3QvaW5mby9jb21tb24vdXBsb2FkIiwKICAgICAgICAvLyDkuIrkvKDnmoTmlofku7bliJfooagKICAgICAgICBmaWxlTGlzdDogW10KICAgICAgfSwKICAgICAgLy8g6YGu572p5bGCCiAgICAgIGxvYWRpbmc6IHRydWUsCiAgICAgIC8vIOmAieS4reaVsOe7hAogICAgICBpZHM6IFtdLAogICAgICAvLyDpnZ7ljZXkuKrnpoHnlKgKICAgICAgc2luZ2xlOiB0cnVlLAogICAgICAvLyDpnZ7lpJrkuKrnpoHnlKgKICAgICAgbXVsdGlwbGU6IHRydWUsCiAgICAgIC8vIOaYvuekuuaQnOe0ouadoeS7tgogICAgICBzaG93U2VhcmNoOiB0cnVlLAogICAgICAvLyDmgLvmnaHmlbAKICAgICAgdG90YWw6IDAsCiAgICAgIC8vIOOAkOivt+Whq+WGmeWKn+iDveWQjeensOOAkeihqOagvOaVsOaNrgogICAgICBpbmZvTGlzdDogW10sCiAgICAgIC8vIOW8ueWHuuWxguagh+mimAogICAgICB0aXRsZTogIiIsCiAgICAgIC8vIOaYr+WQpuaYvuekuuW8ueWHuuWxggogICAgICBvcGVuOiBmYWxzZSwKICAgICAgbmFtZVR1T3BlbjogZmFsc2UsCiAgICAgIHVzZXJOYW1lVHVPcGVuOiBmYWxzZSwKICAgICAgdG90YWxCdWdldDogbnVsbCwKICAgICAgZGlhbG9nRm9ybVZpc2libGU6IGZhbHNlLAogICAgICBzdGF0dXNPcHRpb25zOiBbXSwKICAgICAgdHlwZU9wdGlvbnM6IFtdLAogICAgICBzZWNyZXRPcHRpb25zOiBbXSwKICAgICAgc291cmNlT3B0aW9uczogW10sCiAgICAgIGNhdGVnb3J5T3B0aW9uczogW10sCiAgICAgIHllc05vT3B0aW9uczogW10sCiAgICAgIHllYXJPcHRpb25zOiBbXSwKICAgICAgeEF4aXNDZW50ZXI4OiBbXSwKICAgICAgc2VyaWVzQ2VudGVyODogW10sCiAgICAgIHhBeGlzQ2VudGVyNzogW10sCiAgICAgIHNlcmllc0NlbnRlcjc6IFtdLAogICAgICBibFg6IFtdLAogICAgICBibExnOiBbXSwKICAgICAgYmxTZXI6IFtdLAogICAgICBvdFRpdGxlOiAiIiwKICAgICAgLy8g5p+l6K+i5Y+C5pWwCiAgICAgIHF1ZXJ5UGFyYW1zOiB7CiAgICAgICAgcGFnZU51bTogMSwKICAgICAgICBwYWdlU2l6ZTogMTAsCiAgICAgICAgY2F0ZWdvcnk6IG51bGwsCiAgICAgICAgY29kZTogbnVsbCwKICAgICAgICBuYW1lOiBudWxsLAogICAgICAgIHVzZXJOYW1lOiBudWxsLAogICAgICAgIHR5cGU6IG51bGwsCiAgICAgICAgZGVwYXJ0bWVudElkOiBudWxsLAogICAgICAgIHVzZXJJZDogbnVsbCwKICAgICAgICBkZWFkbGluZTogbnVsbCwKICAgICAgICB0b3RhbE91dGxheTogbnVsbCwKICAgICAgICBmaXJzdE91dGxheTogbnVsbCwKICAgICAgICBzZWNvbmRPdXRsYXk6IG51bGwsCiAgICAgICAgc3RhdHVzOiBudWxsLAogICAgICAgIGJlZ2luRGF0ZTogbnVsbCwKICAgICAgICBjb21wbGV0ZURhdGU6IG51bGwsCiAgICAgICAgYmVnaW5EYXRlTFg6IG51bGwsCiAgICAgICAgY29tcGxldGVEYXRlTFg6IG51bGwsCiAgICAgICAgZW5kRGF0ZTogbnVsbCwKICAgICAgICBhcHByb3ZhbERhdGU6IG51bGwsCiAgICAgICAgaXNTZWNyZWN5OiBudWxsLAogICAgICAgIHNlY3JlY3lMZXZlbDogbnVsbCwKICAgICAgICBzZWNyZWN5VGVybTogbnVsbCwKICAgICAgICBpc1RvcGljOiBudWxsLAogICAgICAgIHRhc2tUYXJnZXQ6IG51bGwsCiAgICAgICAgcmVzdWx0VGFyZ2V0OiBudWxsLAogICAgICAgIG1ldGhvZFJvdXRlOiBudWxsLAogICAgICAgIHBsYW46IG51bGwsCiAgICAgICAgc3BlbmRFeHBsYWluOiBudWxsLAogICAgICAgIHJlbHlJZDogbnVsbCwKICAgICAgICBsYXN0RGF0ZTogbnVsbCwKICAgICAgICByZXZpZXdTdGF0dXNYYjogbnVsbCwKICAgICAgICByZXZpZXdTdGF0dXNDdzogbnVsbCwKICAgICAgICB0b3RhbEJ1ZGdldDogbnVsbCwKICAgICAgICBmaXJzdEJ1ZGdldDogbnVsbCwKICAgICAgICBzZWNvbmRCdWRnZXQ6IG51bGwsCiAgICAgICAgYXBwbHlJZDogbnVsbCwKICAgICAgICBwcm9qZWN0U291cmNlOiBudWxsLAogICAgICAgIHByb2plY3RTb3VyY2VDb21wYW55OiBudWxsLAogICAgICAgIHJldmlld1N0YXR1c1p3aDogbnVsbCwKICAgICAgICBpc0FncmVlbWVudDogbnVsbCwKICAgICAgICByZWx5VW5pdEhlYWQ6IG51bGwsCiAgICAgICAgcmVseVVuaXRIZWFkdG9jdzogbnVsbCwKICAgICAgICB0YXNrUGVyaW9kOiBudWxsLAogICAgICAgIG90aGVycGxhbjogbnVsbCwKICAgICAgICBwb2ludDogbnVsbCwKICAgICAgICByZXN1bHQ6IG51bGwsCiAgICAgICAgaW50cm9kdWN0aW9uOiBudWxsLAogICAgICAgIHByb3Byb3Rpb246IG51bGwsCiAgICAgICAgdGVybTogbnVsbCwKICAgICAgICBwaXNoaVN0YXR1czogbnVsbCwKICAgICAgICB5ZWFyUmFkaW8yOiBudWxsLAogICAgICAgIHByb1Blb3BOYW1lOiBudWxsLAogICAgICAgIHlpdHVvQXJlYTogbnVsbCwKICAgICAgICBpc1Jlc3VsdDogbnVsbCwKICAgICAgICBpbXBvcnRhbnRLZXk6IG51bGwsCiAgICAgICAgc2VhcmNoVmFsdWU6IG51bGwKICAgICAgfSwKICAgICAgLy8g6KGo5Y2V5Y+C5pWwCiAgICAgIGZvcm06IHt9LAogICAgICAvLyDooajljZXmoKHpqowKICAgICAgcnVsZXM6IHt9LAogICAgICBmb3JtQ291bnRlbjogewogICAgICAgIG5hbWU6ICcnLAogICAgICAgIHJlZ2lvbjogJycsCiAgICAgICAgZGF0ZTE6ICcnLAogICAgICAgIGRhdGUyOiAnJywKICAgICAgICBkZWxpdmVyeTogZmFsc2UsCiAgICAgICAgdHlwZTogW10sCiAgICAgICAgcmVzb3VyY2U6ICcnLAogICAgICAgIGRlc2M6ICcnCiAgICAgIH0sCiAgICAgIGZvcm1MYWJlbFdpZHRoOiAnMTIwcHgnLAogICAgICBleGNlbFR5cGU6IFt7CiAgICAgICAgbmFtZTogJ0FMTCcsCiAgICAgICAgdmFsdWU6ICdhbGwnCiAgICAgIH0sIHsKICAgICAgICBuYW1lOiAn6aG555uuJywKICAgICAgICB2YWx1ZTogJ3Byb2plY3RFeHBvcnQnCiAgICAgIH0sIHsKICAgICAgICBuYW1lOiAn6K++6aKYJywKICAgICAgICB2YWx1ZTogJ3RvcGljRXhwb3J0JwogICAgICB9LCB7CiAgICAgICAgbmFtZTogJ+S4k+mimCcsCiAgICAgICAgdmFsdWU6ICdzcGVjaWFsRXhwb3J0JwogICAgICB9LCB7CiAgICAgICAgbmFtZTogJ+S+neaJmOWNleS9jScsCiAgICAgICAgdmFsdWU6ICdkZXB0RXhwb3J0JwogICAgICB9LCB7CiAgICAgICAgbmFtZTogJ+WPguS4juS6uuWRmOS/oeaBrycsCiAgICAgICAgdmFsdWU6ICdwYXJ0aWNpcGFudHNFeHBvcnQnCiAgICAgIH0sIHsKICAgICAgICBuYW1lOiAn566h55CG5oql5ZGKJywKICAgICAgICB2YWx1ZTogJ3JlcG9ydEV4cG9ydCcKICAgICAgfSwgewogICAgICAgIG5hbWU6ICfku7vliqHkuaYnLAogICAgICAgIHZhbHVlOiAnYm9va0V4cG9ydCcKICAgICAgfV0sCiAgICAgIGV4Y2VsT3B0aW9uOiBbewogICAgICAgIG5hbWU6ICfmt7vliqAnLAogICAgICAgIHZhbHVlOiAnaW5zZXQnLAogICAgICAgIHVybDogJy91cGxvYWQvYWRkUHJvamVjdCcKICAgICAgfSwgewogICAgICAgIG5hbWU6ICfkv67mlLknLAogICAgICAgIHZhbHVlOiAndXBkYXRlJywKICAgICAgICB1cmw6ICcvdXBsb2FkL21vZGlmeURhdGEnCiAgICAgIH1dCiAgICB9OwogIH0sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgaWYgKHRoaXMuJHJvdXRlLnF1ZXJ5LnllYXJSYWRpbzIpIHsKICAgICAgdGhpcy5xdWVyeVBhcmFtcy55ZWFyUmFkaW8yID0gdGhpcy4kcm91dGUucXVlcnkueWVhclJhZGlvMjsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMucXVlcnlQYXJhbXMueWVhclJhZGlvMiA9ICIwIjsKICAgIH0KCiAgICBpZiAodGhpcy4kcm91dGUucXVlcnkuc2VjcmVjeUxldmVsKSB7CiAgICAgIHRoaXMucXVlcnlQYXJhbXMuc2VjcmVjeUxldmVsID0gdGhpcy4kcm91dGUucXVlcnkuc2VjcmVjeUxldmVsOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5xdWVyeVBhcmFtcy5zZWNyZWN5TGV2ZWwgPSAiMCI7CiAgICB9CgogICAgaWYgKHRoaXMuJHJvdXRlLnF1ZXJ5LnR5cGUpIHsKICAgICAgdGhpcy5xdWVyeVBhcmFtcy50eXBlID0gdGhpcy4kcm91dGUucXVlcnkudHlwZTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMucXVlcnlQYXJhbXMudHlwZSA9ICIwIjsKICAgIH0KCiAgICBpZiAodGhpcy4kcm91dGUucXVlcnkuZGVwYXJ0bWVudElkKSB7CiAgICAgIHRoaXMucXVlcnlQYXJhbXMuZGVwYXJ0bWVudElkID0gdGhpcy4kcm91dGUucXVlcnkuZGVwYXJ0bWVudElkOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5xdWVyeVBhcmFtcy5kZXBhcnRtZW50SWQgPSAiMCI7CiAgICB9CgogICAgdGhpcy5xdWVyeVBhcmFtcy55aXR1b1VuaXQgPSB0aGlzLiRyb3V0ZS5xdWVyeS55aXR1b1VuaXQ7CiAgICB0aGlzLnF1ZXJ5UGFyYW1zLnVzZXJOYW1lID0gdGhpcy4kcm91dGUucXVlcnkudXNlck5hbWU7CiAgICB0aGlzLnF1ZXJ5UGFyYW1zLmltcG9ydGFudEtleSA9IHRoaXMuJHJvdXRlLnF1ZXJ5LmltcG9ydGFudEtleTsKICAgIHRoaXMucXVlcnlQYXJhbXMueWl0dW9BcmVhID0gdGhpcy4kcm91dGUucXVlcnkueWl0dW9BcmVhOyAvLyB0aGlzLnF1ZXJ5UGFyYW1zLnllYXJSYWRpbyA9IHRoaXMuJHJvdXRlLnF1ZXJ5LnllYXJSYWRpbzsKICAgIC8vCiAgICAvLyB0aGlzLnF1ZXJ5UGFyYW1zLmlzUmVzdWx0ID0gdGhpcy4kcm91dGUucXVlcnkuaXNSZXN1bHQ7CiAgICAvLyB0aGlzLnF1ZXJ5UGFyYW1zLnN0YXR1cyA9IHRoaXMuJHJvdXRlLnF1ZXJ5LnN0YXR1czsKICAgIC8vCiAgICAvLwoKICAgIHZhciBkYXRlID0gbmV3IERhdGUoKTsKICAgIHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpOwogICAgdGhpcy55ZWFyT3B0aW9uc1swXSA9IHllYXI7CiAgICB0aGlzLnllYXJPcHRpb25zWzFdID0geWVhciAtIDE7CiAgICB0aGlzLnllYXJPcHRpb25zWzJdID0geWVhciAtIDI7CiAgICB0aGlzLnllYXJPcHRpb25zWzNdID0geWVhciAtIDM7CiAgICB0aGlzLnllYXJPcHRpb25zWzRdID0geWVhciAtIDQ7CiAgICB0aGlzLnllYXJPcHRpb25zWzVdID0geWVhciAtIDU7CiAgICB0aGlzLmdldExpc3QoKTsKICAgIHRoaXMuZ2V0RGljdHMoInByb190eXBlIikudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgX3RoaXMudHlwZU9wdGlvbnMgPSByZXNwb25zZS5kYXRhOwogICAgfSk7CiAgICB0aGlzLmdldERpY3RzKCJwcm9fc2VjcmV0X2xldmVsIikudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgX3RoaXMuc2VjcmV0T3B0aW9ucyA9IHJlc3BvbnNlLmRhdGE7CiAgICB9KTsKICAgIHRoaXMuZ2V0RGljdHMoInByb19zb3VyY2UiKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICBfdGhpcy5zb3VyY2VPcHRpb25zID0gcmVzcG9uc2UuZGF0YTsKICAgIH0pOwogICAgdGhpcy5nZXREaWN0cygicHJvX2NhdGVnb3J5IikudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgX3RoaXMuY2F0ZWdvcnlPcHRpb25zID0gcmVzcG9uc2UuZGF0YTsKICAgIH0pOwogICAgdGhpcy5nZXREaWN0cygicHJvX3N0YXR1cyIpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgIF90aGlzLnN0YXR1c09wdGlvbnMgPSByZXNwb25zZS5kYXRhOwogICAgfSk7CiAgICB0aGlzLmdldERpY3RzKCJzeXNfeWVzX25vIikudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgX3RoaXMueWVzTm9PcHRpb25zID0gcmVzcG9uc2UuZGF0YTsKICAgIH0pOwogIH0sCiAgbWV0aG9kczogewogICAgdGFibGVSb3dDbGFzc05hbWU6IGZ1bmN0aW9uIHRhYmxlUm93Q2xhc3NOYW1lKF9yZWYpIHsKICAgICAgdmFyIHJvdyA9IF9yZWYucm93LAogICAgICAgICAgcm93SW5kZXggPSBfcmVmLnJvd0luZGV4OwoKICAgICAgaWYgKChyb3dJbmRleCArIDEpICUgMiA9PT0gMCkgewogICAgICAgIHJldHVybiAid2FybmluZy1yb3ciOyAvL+exu+WQjQogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAic3VjY2Vzcy1yb3ciOyAvL+exu+WQjQogICAgICB9CiAgICB9LAogICAgc29ydENoYW5nZTogZnVuY3Rpb24gc29ydENoYW5nZShjb2x1bW4sIHByb3AsIG9yZGVyKSB7CiAgICAgIGlmIChjb2x1bW4ucHJvcCA9PSAiY2F0ZWdvcnkiKSB7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5jYXRlZ29yeU9yZGVyID0gIjEiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMuY29kZU9yZGVyID0gIiI7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5uYW1lT3JkZXIgPSAiIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnR5cGVPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMuZGVhZGxpbmVPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMudG90YWxPdXRsYXlPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMucHJvamVjdFNvdXJjZU9yZGVyID0gIiI7CiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnByb3AgPT0gImNvZGUiKSB7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5jYXRlZ29yeU9yZGVyID0gIiI7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5jb2RlT3JkZXIgPSAiMSI7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5uYW1lT3JkZXIgPSAiIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnR5cGVPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMuZGVhZGxpbmVPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMudG90YWxPdXRsYXlPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMucHJvamVjdFNvdXJjZU9yZGVyID0gIiI7CiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnByb3AgPT0gIm5hbWUiKSB7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5jYXRlZ29yeU9yZGVyID0gIiI7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5jb2RlT3JkZXIgPSAiIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLm5hbWVPcmRlciA9ICIxIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnR5cGVPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMuZGVhZGxpbmVPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMudG90YWxPdXRsYXlPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMucHJvamVjdFNvdXJjZU9yZGVyID0gIiI7CiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnByb3AgPT0gInR5cGUiKSB7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5jYXRlZ29yeU9yZGVyID0gIiI7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5jb2RlT3JkZXIgPSAiIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLm5hbWVPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMudHlwZU9yZGVyID0gIjEiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMuZGVhZGxpbmVPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMudG90YWxPdXRsYXlPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMucHJvamVjdFNvdXJjZU9yZGVyID0gIiI7CiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLnByb3AgPT0gImRlYWRsaW5lIikgewogICAgICAgIHRoaXMucXVlcnlQYXJhbXMuY2F0ZWdvcnlPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMuY29kZU9yZGVyID0gIiI7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5uYW1lT3JkZXIgPSAiIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnR5cGVPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMuZGVhZGxpbmVPcmRlciA9ICIxIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnRvdGFsT3V0bGF5T3JkZXIgPSAiIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnByb2plY3RTb3VyY2VPcmRlciA9ICIiOwogICAgICB9IGVsc2UgaWYgKGNvbHVtbi5wcm9wID09ICJ0b3RhbE91dGxheSIpIHsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmNhdGVnb3J5T3JkZXIgPSAiIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmNvZGVPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMubmFtZU9yZGVyID0gIiI7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy50eXBlT3JkZXIgPSAiIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmRlYWRsaW5lT3JkZXIgPSAiIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnRvdGFsT3V0bGF5T3JkZXIgPSAiMSI7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5wcm9qZWN0U291cmNlT3JkZXIgPSAiIjsKICAgICAgfSBlbHNlIGlmIChjb2x1bW4ucHJvcCA9PSAicHJvamVjdFNvdXJjZSIpIHsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmNhdGVnb3J5T3JkZXIgPSAiIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmNvZGVPcmRlciA9ICIiOwogICAgICAgIHRoaXMucXVlcnlQYXJhbXMubmFtZU9yZGVyID0gIiI7CiAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy50eXBlT3JkZXIgPSAiIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmRlYWRsaW5lT3JkZXIgPSAiIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnRvdGFsT3V0bGF5T3JkZXIgPSAiIjsKICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnByb2plY3RTb3VyY2VPcmRlciA9ICIxIjsKICAgICAgfQoKICAgICAgaWYgKGNvbHVtbi5vcmRlciA9PSAiYXNjZW5kaW5nIikgewogICAgICAgIHRoaXMucXVlcnlQYXJhbXMub3JkZXJTb3J0ID0gImFzYyI7CiAgICAgIH0gZWxzZSBpZiAoY29sdW1uLm9yZGVyID09ICJkZXNjZW5kaW5nIikgewogICAgICAgIHRoaXMucXVlcnlQYXJhbXMub3JkZXJTb3J0ID0gImRlc2MiOwogICAgICB9CgogICAgICB0aGlzLmdldExpc3QoKTsKICAgIH0sCiAgICBpc1RvcGljRm9ybWF0OiBmdW5jdGlvbiBpc1RvcGljRm9ybWF0KHJvdywgY29sdW1uKSB7CiAgICAgIHJldHVybiB0aGlzLnNlbGVjdERpY3RMYWJlbCh0aGlzLnllc05vT3B0aW9ucywgcm93LmlzVG9waWMpOwogICAgfSwKICAgIGlzU2VjcmVjeUZvcm1hdDogZnVuY3Rpb24gaXNTZWNyZWN5Rm9ybWF0KHJvdywgY29sdW1uKSB7CiAgICAgIHJldHVybiB0aGlzLnNlbGVjdERpY3RMYWJlbCh0aGlzLnllc05vT3B0aW9ucywgcm93LmlzU2VjcmVjeSk7CiAgICB9LAogICAgdHlwZUZvcm1hdDogZnVuY3Rpb24gdHlwZUZvcm1hdChyb3csIGNvbHVtbikgewogICAgICByZXR1cm4gdGhpcy5zZWxlY3REaWN0TGFiZWwodGhpcy50eXBlT3B0aW9ucywgcm93LnR5cGUpOwogICAgfSwKICAgIHNlY3JldEZvcm1hdDogZnVuY3Rpb24gc2VjcmV0Rm9ybWF0KHJvdywgY29sdW1uKSB7CiAgICAgIHJldHVybiB0aGlzLnNlbGVjdERpY3RMYWJlbCh0aGlzLnNlY3JldE9wdGlvbnMsIHJvdy5zZWNyZWN5TGV2ZWwpOwogICAgfSwKICAgIGNhdGVnb3J5Rm9ybWF0OiBmdW5jdGlvbiBjYXRlZ29yeUZvcm1hdChyb3csIGNvbHVtbikgewogICAgICByZXR1cm4gdGhpcy5zZWxlY3REaWN0TGFiZWwodGhpcy5jYXRlZ29yeU9wdGlvbnMsIHJvdy5jYXRlZ29yeSk7CiAgICB9LAogICAgc3RhdHVzRm9ybWF0OiBmdW5jdGlvbiBzdGF0dXNGb3JtYXQocm93LCBjb2x1bW4pIHsKICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0RGljdExhYmVsKHRoaXMuc3RhdHVzT3B0aW9ucywgcm93LnN0YXR1cyk7CiAgICB9LAogICAgc291cmNlRm9ybWF0OiBmdW5jdGlvbiBzb3VyY2VGb3JtYXQocm93LCBjb2x1bW4pIHsKICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0RGljdExhYmVsKHRoaXMuc291cmNlT3B0aW9ucywgcm93LnByb2plY3RTb3VyY2UpOwogICAgfSwKICAgIGdldFN0YXRpc3RpY3M6IGZ1bmN0aW9uIGdldFN0YXRpc3RpY3MocXVlcnlQYXJhbXMpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgICBzdGF0aXN0aWNzKHF1ZXJ5UGFyYW1zKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgX3RoaXMyLnpqZiA9IHJlc3AuZGF0YS56amY7CiAgICAgIH0pOwogICAgfSwKCiAgICAvKiog5a+85YWl5oyJ6ZKu5pON5L2cICovCiAgICBoYW5kbGVJbXBvcnQ6IGZ1bmN0aW9uIGhhbmRsZUltcG9ydCgpIHsKICAgICAgdGhpcy51cGxvYWRQcm9qZWN0LnRpdGxlID0gIumhueebruWvvOWFpSI7CiAgICAgIHRoaXMudXBsb2FkUHJvamVjdC5vcGVuID0gdHJ1ZTsKICAgIH0sCgogICAgLyoqIOafpeivouOAkOivt+Whq+WGmeWKn+iDveWQjeensOOAkeWIl+ihqCAqLwogICAgZ2V0TGlzdDogZnVuY3Rpb24gZ2V0TGlzdCgpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CgogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICBsaXN0SW5mbyh0aGlzLnF1ZXJ5UGFyYW1zKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIF90aGlzMy5pbmZvTGlzdCA9IHJlc3BvbnNlLnJvd3M7CiAgICAgICAgX3RoaXMzLnRvdGFsID0gcmVzcG9uc2UudG90YWw7CiAgICAgICAgX3RoaXMzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgfSk7CiAgICAgIHRoaXMuZ2V0U3RhdGlzdGljcyh0aGlzLnF1ZXJ5UGFyYW1zKTsKICAgIH0sCiAgICAvLyDlj5bmtojmjInpkq4KICAgIGNhbmNlbDogZnVuY3Rpb24gY2FuY2VsKCkgewogICAgICB0aGlzLm9wZW4gPSBmYWxzZTsKICAgICAgdGhpcy5yZXNldCgpOwogICAgfSwKICAgIC8vIOihqOWNlemHjee9rgogICAgcmVzZXQ6IGZ1bmN0aW9uIHJlc2V0KCkgewogICAgICB0aGlzLmZvcm0gPSB7CiAgICAgICAgaWQ6IG51bGwsCiAgICAgICAgY2F0ZWdvcnk6IG51bGwsCiAgICAgICAgY29kZTogbnVsbCwKICAgICAgICBuYW1lOiBudWxsLAogICAgICAgIHR5cGU6IG51bGwsCiAgICAgICAgZGVwYXJ0bWVudElkOiBudWxsLAogICAgICAgIHVzZXJJZDogbnVsbCwKICAgICAgICBkZWFkbGluZTogbnVsbCwKICAgICAgICB0b3RhbE91dGxheTogbnVsbCwKICAgICAgICBmaXJzdE91dGxheTogbnVsbCwKICAgICAgICBzZWNvbmRPdXRsYXk6IG51bGwsCiAgICAgICAgc3RhdHVzOiAwLAogICAgICAgIGJlZ2luRGF0ZTogbnVsbCwKICAgICAgICBjb21wbGV0ZURhdGU6IG51bGwsCiAgICAgICAgZW5kRGF0ZTogbnVsbCwKICAgICAgICBhcHByb3ZhbERhdGU6IG51bGwsCiAgICAgICAgaXNTZWNyZWN5OiBudWxsLAogICAgICAgIHNlY3JlY3lMZXZlbDogbnVsbCwKICAgICAgICBzZWNyZWN5VGVybTogbnVsbCwKICAgICAgICBpc1RvcGljOiBudWxsLAogICAgICAgIHRhc2tUYXJnZXQ6IG51bGwsCiAgICAgICAgcmVzdWx0VGFyZ2V0OiBudWxsLAogICAgICAgIG1ldGhvZFJvdXRlOiBudWxsLAogICAgICAgIHBsYW46IG51bGwsCiAgICAgICAgc3BlbmRFeHBsYWluOiBudWxsLAogICAgICAgIHJlbHlJZDogbnVsbCwKICAgICAgICBsYXN0RGF0ZTogbnVsbCwKICAgICAgICByZXZpZXdTdGF0dXNYYjogbnVsbCwKICAgICAgICByZXZpZXdTdGF0dXNDdzogbnVsbCwKICAgICAgICB0b3RhbEJ1ZGdldDogbnVsbCwKICAgICAgICBmaXJzdEJ1ZGdldDogbnVsbCwKICAgICAgICBzZWNvbmRCdWRnZXQ6IG51bGwsCiAgICAgICAgYXBwbHlJZDogbnVsbCwKICAgICAgICBwcm9qZWN0U291cmNlOiBudWxsLAogICAgICAgIHByb2plY3RTb3VyY2VDb21wYW55OiBudWxsLAogICAgICAgIHJldmlld1N0YXR1c1p3aDogbnVsbCwKICAgICAgICBpc0FncmVlbWVudDogbnVsbCwKICAgICAgICByZWx5VW5pdEhlYWQ6IG51bGwsCiAgICAgICAgcmVseVVuaXRIZWFkdG9jdzogbnVsbCwKICAgICAgICB0YXNrUGVyaW9kOiBudWxsLAogICAgICAgIG90aGVycGxhbjogbnVsbCwKICAgICAgICBwb2ludDogbnVsbCwKICAgICAgICByZXN1bHQ6IG51bGwsCiAgICAgICAgaW50cm9kdWN0aW9uOiBudWxsLAogICAgICAgIHByb3Byb3Rpb246IG51bGwsCiAgICAgICAgdGVybTogbnVsbCwKICAgICAgICBjcmVhdGVCeTogbnVsbCwKICAgICAgICBjcmVhdGVUaW1lOiBudWxsLAogICAgICAgIHVwZGF0ZUJ5OiBudWxsLAogICAgICAgIHVwZGF0ZVRpbWU6IG51bGwsCiAgICAgICAgZGVsRmxhZzogbnVsbAogICAgICB9OwogICAgICB0aGlzLnJlc2V0Rm9ybSgiZm9ybSIpOwogICAgfSwKICAgIGxvZ291dDogZnVuY3Rpb24gbG9nb3V0KCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKCiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgcmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgX3RoaXM0LiRjb25maXJtKCfnoa7lrprms6jplIDlubbpgIDlh7rns7vnu5/lkJfvvJ8nLCAn5o+Q56S6JywgewogICAgICAgICAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICBfdGhpczQuJHN0b3JlLmRpc3BhdGNoKCdMb2dPdXQnKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5ocmVmID0gJy9pbmRleCc7CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSkoKTsKICAgIH0sCgogICAgLyoqIOaQnOe0ouaMiemSruaTjeS9nCAqLwogICAgaGFuZGxlUXVlcnk6IGZ1bmN0aW9uIGhhbmRsZVF1ZXJ5KCkgewogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VOdW0gPSAxOwogICAgICB0aGlzLmdldExpc3QoKTsKICAgICAgdGhpcy5nZXRMZWZ0Nyh0aGlzLnF1ZXJ5UGFyYW1zKTsKICAgICAgdGhpcy5nZXRDZW50ZXI4KHRoaXMucXVlcnlQYXJhbXMpOwogICAgICB0aGlzLmdldExlZnQxKHRoaXMucXVlcnlQYXJhbXMpOwogICAgfSwKICAgIGhhbmRsZU5hbWVRdWVyeTogZnVuY3Rpb24gaGFuZGxlTmFtZVF1ZXJ5KCkgewogICAgICB0aGlzLm5hbWVUdU9wZW4gPSB0cnVlOwogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VOdW0gPSAxOwogICAgICB0aGlzLmdldExpc3QoKTsKICAgICAgdGhpcy5nZXRMZWZ0Nyh0aGlzLnF1ZXJ5UGFyYW1zKTsKICAgICAgdGhpcy5nZXRMZWZ0MSh0aGlzLnF1ZXJ5UGFyYW1zKTsgLy8gdGhpcy5nZXRDZW50ZXI4KHRoaXMucXVlcnlQYXJhbXMpOwogICAgfSwKICAgIGhhbmRsZVVzZXJOYW1lUXVlcnk6IGZ1bmN0aW9uIGhhbmRsZVVzZXJOYW1lUXVlcnkoKSB7CiAgICAgIHRoaXMudXNlck5hbWVUdU9wZW4gPSB0cnVlOwogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnBhZ2VOdW0gPSAxOwogICAgICB0aGlzLmdldExpc3QoKTsKICAgICAgdGhpcy5nZXRUb3RhbEJ1Z2V0KHRoaXMucXVlcnlQYXJhbXMpOwogICAgICB0aGlzLmdldENlbnRlcjgodGhpcy5xdWVyeVBhcmFtcyk7CiAgICB9LAogICAgZ2V0VG90YWxCdWdldDogZnVuY3Rpb24gZ2V0VG90YWxCdWdldChxdWVyeVBhcmFtcykgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKCiAgICAgIHRvdGFsQnVnZXREYXRhKHF1ZXJ5UGFyYW1zKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgX3RoaXM1LnRvdGFsQnVnZXQgPSByZXNwLmRhdGEudG90YWxCdWRnZXQ7CiAgICAgIH0pOwogICAgfSwKICAgIGdldExlZnQxOiBmdW5jdGlvbiBnZXRMZWZ0MShxdWVyeVBhcmFtcykgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKCiAgICAgIHZhciBwYXJhbSA9IHF1ZXJ5UGFyYW1zLnllYXJSYWRpbzI7CgogICAgICBpZiAocGFyYW0gPT0gJzAnKSB7CiAgICAgICAgcGFyYW0gPSAnOTk5JzsKICAgICAgfQoKICAgICAgbGVmdDFEYXRhKHsKICAgICAgICB5ZWFyUmFkaW8yOiBwYXJhbQogICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zLnllYXJSYWRpbzIgPT0gJzAnKSB7CiAgICAgICAgICBfdGhpczYub3RUaXRsZSA9ICcyMDE2LeS7iic7CiAgICAgICAgfSBlbHNlIGlmIChxdWVyeVBhcmFtcy55ZWFyUmFkaW8yID09ICcyMDE1JykgewogICAgICAgICAgX3RoaXM2Lm90VGl0bGUgPSAiMjAxNuW5tOS7peWJjSI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF90aGlzNi5vdFRpdGxlID0gIjIwMTYt5LuKIjsKICAgICAgICB9CgogICAgICAgIF90aGlzNi5ibExnID0gWyfpobnnm67mlbAnLCAn57uP6LS55pWwJ107CiAgICAgICAgX3RoaXM2LmJsWCA9IHJlc3AuZGF0YS55ZWFyQXJyYXk7CiAgICAgICAgdmFyIHRlbXAgPSBbXTsKICAgICAgICB2YXIgaXRlbSA9IHt9OwogICAgICAgIGl0ZW0ubmFtZSA9ICfpobnnm67mlbAnOwogICAgICAgIGl0ZW0udHlwZSA9ICdiYXInOwogICAgICAgIGl0ZW0uYmFyV2lkdGggPSA1MDsKICAgICAgICBpdGVtLmRhdGEgPSByZXNwLmRhdGEubnVtQXJyYXk7CiAgICAgICAgaXRlbS5pdGVtU3R5bGUgPSB7CiAgICAgICAgICBub3JtYWw6IHsKICAgICAgICAgICAgLy/ov5nph4zmmK/ph43ngrkKICAgICAgICAgICAgY29sb3I6ICdyZ2IoMjEsMTEyLDE5OCknCiAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICB0ZW1wLnB1c2goaXRlbSk7CiAgICAgICAgdmFyIGl0ZW0xID0ge307CiAgICAgICAgaXRlbTEubmFtZSA9ICfnu4/otLnmlbAnOwogICAgICAgIGl0ZW0xLnR5cGUgPSAnbGluZSc7CiAgICAgICAgaXRlbTEueUF4aXNJbmRleCA9IDE7CiAgICAgICAgaXRlbTEuZGF0YSA9IHJlc3AuZGF0YS5idWdldEFycmF5OwogICAgICAgIGl0ZW0xLml0ZW1TdHlsZSA9IHsKICAgICAgICAgIG5vcm1hbDogewogICAgICAgICAgICAvL+i/memHjOaYr+mHjeeCuQogICAgICAgICAgICBjb2xvcjogJ3JnYigyMjIsMTc3LDYyKScKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHRlbXAucHVzaChpdGVtMSk7CiAgICAgICAgX3RoaXM2LmJsU2VyID0gdGVtcDsKICAgICAgfSk7CiAgICB9LAogICAgZ2V0TGVmdDc6IGZ1bmN0aW9uIGdldExlZnQ3KHF1ZXJ5UGFyYW1zKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwoKICAgICAgbGVmdDdEYXRhKHF1ZXJ5UGFyYW1zKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7CiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zLnllYXJSYWRpbzIgPT0gJzAnKSB7CiAgICAgICAgICBfdGhpczcub3RUaXRsZSA9ICLoh7Pku4oiOwogICAgICAgIH0gZWxzZSBpZiAocXVlcnlQYXJhbXMueWVhclJhZGlvMiA9PSAnMjAxNScpIHsKICAgICAgICAgIF90aGlzNy5vdFRpdGxlID0gIjIwMTblubTku6XliY0iOwogICAgICAgIH0gZWxzZSBpZiAocXVlcnlQYXJhbXMueWVhclJhZGlvMiA9PSAnOTk5JykgewogICAgICAgICAgX3RoaXM3Lm90VGl0bGUgPSAiMjAxNi3ku4oiOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfdGhpczcub3RUaXRsZSA9IHF1ZXJ5UGFyYW1zLnllYXJSYWRpbzIgKyAi5bm0IjsKICAgICAgICB9CgogICAgICAgIHZhciB0ZW1wID0gW107CiAgICAgICAgdmFyIGl0ZW0gPSB7fTsKICAgICAgICBpdGVtLm5hbWUgPSAn57uP6LS55pWwJzsKICAgICAgICBpdGVtLnR5cGUgPSAnYmFyJzsKICAgICAgICBpdGVtLmJhckdhcCA9ICItMTAwJSI7CiAgICAgICAgaXRlbS5kYXRhID0gcmVzcC5kYXRhLnlqZkFycmF5OwogICAgICAgIGl0ZW0uaXRlbVN0eWxlID0gewogICAgICAgICAgbm9ybWFsOiB7CiAgICAgICAgICAgIC8v6L+Z6YeM5piv6YeN54K5CiAgICAgICAgICAgIGNvbG9yOiAncmdiKDEyOSwxNjIsMjU1KScKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHRlbXAucHVzaChpdGVtKTsKICAgICAgICB2YXIgaXRlbTEgPSB7fTsKICAgICAgICBpdGVtMS5uYW1lID0gJ+WunumZhee7j+i0uSc7CiAgICAgICAgaXRlbTEudHlwZSA9ICdiYXInOwogICAgICAgIGl0ZW0xLnlBeGlzSW5kZXggPSAxOwogICAgICAgIGl0ZW0xLmJhckdhcCA9ICItMTAwJSI7CiAgICAgICAgaXRlbTEuZGF0YSA9IHJlc3AuZGF0YS55U2pqZkFycmF5OwogICAgICAgIGl0ZW0xLml0ZW1TdHlsZSA9IHsKICAgICAgICAgIG5vcm1hbDogewogICAgICAgICAgICAvL+i/memHjOaYr+mHjeeCuQogICAgICAgICAgICBjb2xvcjogJ3JnYig4NCwxMTEsMTk4KScKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHRlbXAucHVzaChpdGVtMSk7CiAgICAgICAgdmFyIGl0ZW0yID0ge307CiAgICAgICAgaXRlbTIubmFtZSA9ICfpobnnm67mlbAnOwogICAgICAgIGl0ZW0yLnR5cGUgPSAnbGluZSc7CiAgICAgICAgaXRlbTIueUF4aXNJbmRleCA9IDI7CiAgICAgICAgaXRlbTIuZGF0YSA9IHJlc3AuZGF0YS55TnVtQXJyYXk7CiAgICAgICAgaXRlbTIuaXRlbVN0eWxlID0gewogICAgICAgICAgbm9ybWFsOiB7CiAgICAgICAgICAgIC8v6L+Z6YeM5piv6YeN54K5CiAgICAgICAgICAgIGNvbG9yOiAncmdiKDIyMiwxNzcsNjIpJwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgdGVtcC5wdXNoKGl0ZW0yKTsKICAgICAgICBfdGhpczcuc2VyaWVzQ2VudGVyNyA9IHRlbXA7CiAgICAgICAgX3RoaXM3LnhBeGlzQ2VudGVyNyA9IHJlc3AuZGF0YS54QXhpc0FycmF5OwogICAgICB9KTsKICAgIH0sCiAgICBnZXRDZW50ZXI4OiBmdW5jdGlvbiBnZXRDZW50ZXI4KHF1ZXJ5UGFyYW1zKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwoKICAgICAgY2VudGVyOERhdGEocXVlcnlQYXJhbXMpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICBpZiAocXVlcnlQYXJhbXMueWVhclJhZGlvMiA9PSAnMCcpIHsKICAgICAgICAgIF90aGlzOC5vdFRpdGxlID0gIuiHs+S7iiI7CiAgICAgICAgfSBlbHNlIGlmIChxdWVyeVBhcmFtcy55ZWFyUmFkaW8yID09ICcyMDE1JykgewogICAgICAgICAgX3RoaXM4Lm90VGl0bGUgPSAiMjAxNuW5tOS7peWJjSI7CiAgICAgICAgfSBlbHNlIGlmIChxdWVyeVBhcmFtcy55ZWFyUmFkaW8yID09ICc5OTknKSB7CiAgICAgICAgICBfdGhpczgub3RUaXRsZSA9ICIyMDE2LeS7iiI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF90aGlzOC5vdFRpdGxlID0gcXVlcnlQYXJhbXMueWVhclJhZGlvMiArICLlubQiOwogICAgICAgIH0KCiAgICAgICAgX3RoaXM4LnNlcmllc0NlbnRlcjggPSByZXNwLmRhdGEueEF4aXNBcnJheTsKICAgICAgICBfdGhpczgueEF4aXNDZW50ZXI4ID0gcmVzcC5kYXRhLnlBeGlzQXJyYXk7CiAgICAgIH0pOwogICAgfSwKICAgIHRvWWVhclBhZ2U6IGZ1bmN0aW9uIHRvWWVhclBhZ2UoeWVhcikgey8vIHRoaXMuJHJvdXRlci5wdXNoKHtwYXRoOiIvcHJvamVjdC9pbmZvU2hvdy9xdWVyeSIscXVlcnk6e3llYXJSYWRpbzI6eWVhcn19ICk7CiAgICB9LAogICAgdG95aXR1b1VuaXRQYWdlOiBmdW5jdGlvbiB0b3lpdHVvVW5pdFBhZ2UodW5pdCkgey8vIGxldCB5ZWFyUmFkaW8gPSB0aGlzLnllYXJSYWRpbzI7CiAgICAgIC8vIHRoaXMuJHJvdXRlci5wdXNoKHtwYXRoOiIvcHJvamVjdC9pbmZvU2hvdy9xdWVyeSIscXVlcnk6e3lpdHVvVW5pdDp1bml0LHllYXJSYWRpbzI6eWVhclJhZGlvfX0gKTsKICAgIH0sCiAgICB0b1VzZXJOYW1lUGFnZTogZnVuY3Rpb24gdG9Vc2VyTmFtZVBhZ2UodXNlck5hbWUpIHsvLyBsZXQgeWVhclJhZGlvID0gdGhpcy55ZWFyUmFkaW8yOwogICAgICAvLyB0aGlzLiRyb3V0ZXIucHVzaCh7cGF0aDoiL3Byb2plY3QvaW5mb1Nob3cvcXVlcnkiLHF1ZXJ5Ont1c2VyTmFtZTp1c2VyTmFtZSx5ZWFyUmFkaW8yOnllYXJSYWRpb319ICk7CiAgICB9LAoKICAgIC8qKiDph43nva7mjInpkq7mk43kvZwgKi8KICAgIHJlc2V0UXVlcnk6IGZ1bmN0aW9uIHJlc2V0UXVlcnkoKSB7CiAgICAgIHRoaXMucmVzZXRGb3JtKCJxdWVyeUZvcm0iKTsKICAgICAgdGhpcy5xdWVyeVBhcmFtcy55ZWFyUmFkaW8yID0gIjAiOwogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnNlY3JlY3lMZXZlbCA9ICIwIjsKICAgICAgdGhpcy5xdWVyeVBhcmFtcy50eXBlID0gIjAiOwogICAgICB0aGlzLnF1ZXJ5UGFyYW1zLmRlcGFydG1lbnRJZCA9ICIwIjsKICAgICAgdGhpcy5xdWVyeVBhcmFtcy5zZWFyY2hWYWx1ZSA9IG51bGw7CiAgICAgIHRoaXMuaGFuZGxlUXVlcnkoKTsKICAgIH0sCiAgICAvLyDlpJrpgInmoYbpgInkuK3mlbDmja4KICAgIGhhbmRsZVNlbGVjdGlvbkNoYW5nZTogZnVuY3Rpb24gaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHNlbGVjdGlvbikgewogICAgICB0aGlzLmlkcyA9IHNlbGVjdGlvbi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS5pZDsKICAgICAgfSk7CiAgICAgIHRoaXMuc2luZ2xlID0gc2VsZWN0aW9uLmxlbmd0aCAhPT0gMTsKICAgICAgdGhpcy5tdWx0aXBsZSA9ICFzZWxlY3Rpb24ubGVuZ3RoOwogICAgfSwKCiAgICAvKiog5paw5aKe5oyJ6ZKu5pON5L2cICovCiAgICBoYW5kbGVBZGQ6IGZ1bmN0aW9uIGhhbmRsZUFkZCgpIHsKICAgICAgdGhpcy5yZXNldCgpOwogICAgICB0aGlzLm9wZW4gPSB0cnVlOwogICAgICB0aGlzLnRpdGxlID0gIua3u+WKoOOAkOivt+Whq+WGmeWKn+iDveWQjeensOOAkSI7CiAgICB9LAoKICAgIC8qKiDkv67mlLnmjInpkq7mk43kvZwgKi8KICAgIGhhbmRsZVVwZGF0ZTogZnVuY3Rpb24gaGFuZGxlVXBkYXRlKHJvdykgewogICAgICB2YXIgX3RoaXM5ID0gdGhpczsKCiAgICAgIHRoaXMucmVzZXQoKTsKICAgICAgdmFyIGlkID0gcm93LmlkIHx8IHRoaXMuaWRzOwogICAgICBnZXRJbmZvKGlkKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIF90aGlzOS5mb3JtID0gcmVzcG9uc2UuZGF0YTsKICAgICAgICBfdGhpczkub3BlbiA9IHRydWU7CiAgICAgICAgX3RoaXM5LnRpdGxlID0gIuS/ruaUueOAkOivt+Whq+WGmeWKn+iDveWQjeensOOAkSI7CiAgICAgIH0pOwogICAgfSwKCiAgICAvKiog5o+Q5Lqk5oyJ6ZKuICovCiAgICBzdWJtaXRGb3JtOiBmdW5jdGlvbiBzdWJtaXRGb3JtKCkgewogICAgICB2YXIgX3RoaXMxMCA9IHRoaXM7CgogICAgICB0aGlzLiRyZWZzWyJmb3JtIl0udmFsaWRhdGUoZnVuY3Rpb24gKHZhbGlkKSB7CiAgICAgICAgaWYgKHZhbGlkKSB7CiAgICAgICAgICBpZiAoX3RoaXMxMC5mb3JtLmlkICE9IG51bGwpIHsKICAgICAgICAgICAgdXBkYXRlSW5mbyhfdGhpczEwLmZvcm0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT09IDIwMCkgewogICAgICAgICAgICAgICAgX3RoaXMxMC5tc2dTdWNjZXNzKCLkv67mlLnmiJDlip8iKTsKCiAgICAgICAgICAgICAgICBfdGhpczEwLm9wZW4gPSBmYWxzZTsKCiAgICAgICAgICAgICAgICBfdGhpczEwLmdldExpc3QoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYWRkSW5mbyhfdGhpczEwLmZvcm0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT09IDIwMCkgewogICAgICAgICAgICAgICAgX3RoaXMxMC5tc2dTdWNjZXNzKCLmlrDlop7miJDlip8iKTsKCiAgICAgICAgICAgICAgICBfdGhpczEwLm9wZW4gPSBmYWxzZTsKCiAgICAgICAgICAgICAgICBfdGhpczEwLmdldExpc3QoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAoKICAgIC8qKiDliKDpmaTmjInpkq7mk43kvZwgKi8KICAgIGhhbmRsZURlbGV0ZTogZnVuY3Rpb24gaGFuZGxlRGVsZXRlKHJvdykgewogICAgICB2YXIgX3RoaXMxMSA9IHRoaXM7CgogICAgICB2YXIgaWRzID0gcm93LmlkOwogICAgICB0aGlzLiRjb25maXJtKCfmmK/lkKbnoa7orqTliKDpmaTpobnnm67nvJblj7fkuLoiJyArIHJvdy5jb2RlICsgJyLnmoTmlbDmja7pobk/JywgIuitpuWRiiIsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogIuehruWumiIsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogIuWPlua2iCIsCiAgICAgICAgdHlwZTogIndhcm5pbmciCiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiBkZWxJbmZvKGlkcyk7CiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzMTEuZ2V0TGlzdCgpOwoKICAgICAgICBfdGhpczExLm1zZ1N1Y2Nlc3MoIuWIoOmZpOaIkOWKnyIpOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICB9LAoKICAgIC8qKiDlr7zlh7rmjInpkq7mk43kvZwgKi8KICAgIGhhbmRsZUV4cG9ydDogZnVuY3Rpb24gaGFuZGxlRXhwb3J0KCkgewogICAgICB2YXIgX3RoaXMxMiA9IHRoaXM7CgogICAgICB2YXIgcXVlcnlQYXJhbXMgPSB0aGlzLnF1ZXJ5UGFyYW1zOwogICAgICB0aGlzLiRjb25maXJtKCLmmK/lkKbnoa7orqTlr7zlh7rmiYDmnInjgJDor7floavlhpnlip/og73lkI3np7DjgJHmlbDmja7pobk/IiwgIuitpuWRiiIsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogIuehruWumiIsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogIuWPlua2iCIsCiAgICAgICAgdHlwZTogIndhcm5pbmciCiAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiBleHBvcnRJbmZvKHF1ZXJ5UGFyYW1zKTsKICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICBfdGhpczEyLmRvd25sb2FkKHJlc3BvbnNlLm1zZyk7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgIH0sCiAgICAvLyDmlofku7bkuIrkvKDkuK3lpITnkIYKICAgIGhhbmRsZVByb2plY3RGaWxlVXBsb2FkUHJvZ3Jlc3M6IGZ1bmN0aW9uIGhhbmRsZVByb2plY3RGaWxlVXBsb2FkUHJvZ3Jlc3MoZXZlbnQsIGZpbGUsIGZpbGVMaXN0KSB7CiAgICAgIHRoaXMudXBsb2FkUHJvamVjdC5pc1VwbG9hZGluZyA9IHRydWU7CiAgICB9LAogICAgYmVmb3JlUHJvamVjdEZpbGVVcGxvYWQ6IGZ1bmN0aW9uIGJlZm9yZVByb2plY3RGaWxlVXBsb2FkKGZpbGUpIHsKICAgICAgdmFyIGlzTHQyMDBNID0gZmlsZS5zaXplIC8gMTAyNCAvIDEwMjQgPCAzMDA7CgogICAgICBpZiAoIWlzTHQyMDBNKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcigi5LiK5Lyg5aSn5bCP5LiN6IO96LaF6L+HIDIwME1CISIpOwogICAgICB9CgogICAgICByZXR1cm4gaXNMdDIwME07CiAgICB9LAogICAgLy8g5paH5Lu25LiK5Lyg5oiQ5Yqf5aSE55CGCiAgICBoYW5kbGVQcm9qZWN0RmlsZVN1Y2Nlc3M6IGZ1bmN0aW9uIGhhbmRsZVByb2plY3RGaWxlU3VjY2VzcyhyZXNwb25zZSwgZmlsZSwgZmlsZUxpc3QpIHsKICAgICAgdGhpcy51cGxvYWRQcm9qZWN0Lm9wZW4gPSBmYWxzZTsKICAgICAgdGhpcy51cGxvYWRQcm9qZWN0LmlzVXBsb2FkaW5nID0gZmFsc2U7CiAgICAgIHRoaXMuJHJlZnMudXBsb2FkUHJvamVjdC5jbGVhckZpbGVzKCk7CiAgICAgIHRoaXMuJGFsZXJ0KHJlc3BvbnNlLm1zZywgIuWvvOWFpee7k+aenCIsIHsKICAgICAgICBkYW5nZXJvdXNseVVzZUhUTUxTdHJpbmc6IHRydWUKICAgICAgfSk7CiAgICAgIHRoaXMuZ2V0TGlzdCgpOwogICAgfSwKICAgIC8vIOaPkOS6pOS4iuS8oOaWh+S7tgogICAgc3VibWl0RmlsZUZvcm06IGZ1bmN0aW9uIHN1Ym1pdEZpbGVGb3JtKCkgewogICAgICB0aGlzLiRyZWZzLnVwbG9hZFByb2plY3Quc3VibWl0KCk7CiAgICB9LAogICAgaW1wb3J0VGVtcGxhdGU6IGZ1bmN0aW9uIGltcG9ydFRlbXBsYXRlKCkgewogICAgICB2YXIgX3RoaXMxMyA9IHRoaXM7CgogICAgICBfaW1wb3J0VGVtcGxhdGUoKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIF90aGlzMTMuZG93bmxvYWQocmVzcG9uc2UubXNnKTsKICAgICAgfSk7CiAgICB9LAogICAgdmlld0FubmV4Qm9va0ZpbGU6IGZ1bmN0aW9uIHZpZXdBbm5leEJvb2tGaWxlKHJvdykgewogICAgICB0aGlzLnVwbG9hZC5maWxlTGlzdCA9IFtdOwogICAgICB0aGlzLmZvcm1hdFVwbG9hZEFubmV4KHJvdy5hbm5leE5hbWUsIHJvdy5hbm5leFBhdGgpOwogICAgICB0aGlzLnVwbG9hZC5vcGVuID0gdHJ1ZTsKICAgIH0sCiAgICAvL+agvOW8j+WMluS4iuS8oOmZhOS7tgogICAgZm9ybWF0VXBsb2FkQW5uZXg6IGZ1bmN0aW9uIGZvcm1hdFVwbG9hZEFubmV4KGFubmV4TmFtZSwgYW5uZXhQYXRoKSB7CiAgICAgIHRoaXMudXBsb2FkLmZpbGVMaXN0ID0gW107CgogICAgICBpZiAoYW5uZXhQYXRoICE9IG51bGwgJiYgYW5uZXhQYXRoICE9PSAnJykgewogICAgICAgIHZhciBhID0gW10sCiAgICAgICAgICAgIGIgPSBbXTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgIGEgPSBKU09OLnBhcnNlKGFubmV4TmFtZSk7CiAgICAgICAgICBiID0gSlNPTi5wYXJzZShhbm5leFBhdGgpOwogICAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgIGEgPSBbXTsKICAgICAgICAgIGIgPSBbXTsKICAgICAgICB9CgogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykgewogICAgICAgICAgdGhpcy51cGxvYWQuZmlsZUxpc3QucHVzaCh7CiAgICAgICAgICAgICduYW1lJzogYVtpXSwKICAgICAgICAgICAgJ3VybCc6IHByb2Nlc3MuZW52LlZVRV9BUFBfQkFTRV9BUEkgKyBiW2ldCiAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy51cGxvYWQuZmlsZUxpc3QgPSBbXTsKICAgICAgfQogICAgfSwKICAgIGhhbmRsZVByZXZpZXc6IGZ1bmN0aW9uIGhhbmRsZVByZXZpZXcoZmlsZSkgewogICAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgdmFyIGV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ2NsaWNrJyk7CiAgICAgIGEuZG93bmxvYWQgPSBmaWxlLm5hbWU7CiAgICAgIGEudGFyZ2V0ID0gJ19ibGFuayc7CiAgICAgIGEuaHJlZiA9IGZpbGUudXJsOwogICAgICBhLmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAgfSwKICAgIGNoYW5nVXJsOiBmdW5jdGlvbiBjaGFuZ1VybCh1cmwpIHsKICAgICAgdGhpcy51cGxvYWRQcm9qZWN0LnVybCA9IHByb2Nlc3MuZW52LlZVRV9BUFBfQkFTRV9BUEkgKyB1cmw7CiAgICB9CiAgfQp9Ow=="},null]} |