{"remainingRequest":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\roadWatch\\InspectionPlan\\components\\TablePage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\roadWatch\\InspectionPlan\\components\\TablePage\\index.vue","mtime":1751364096921},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\babel.config.js","mtime":1741314102158},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5yZWR1Y2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLnJlZHVjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCBwYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9TdXBlclBhZ2luYXRpb24vaW5kZXgudnVlJzsKaW1wb3J0IHsgVGFibGVNaXhpbiB9IGZyb20gJ0AvbWl4aW5zL3RhYmxlTWl4aW4nOwppbXBvcnQgU2VhcmNoQ29tbW9uIGZyb20gJ0AvY29tcG9uZW50cy9TZWFyY2hDb21tb24vaW5kZXgudnVlJzsKaW1wb3J0IFB1YlN1YiBmcm9tICdwdWJzdWItanMnOwppbXBvcnQgeyBnZXRTb3J0ZXJEaXJlY3Rpb24sIHJlZmluZVJlcXVlc3RCb2R5LCBzZXRRdWVyeVZhbHVlIH0gZnJvbSAnQC91dGlscy9yZXF1ZXN0V3JhcHBlcnMnOwppbXBvcnQgeyBkaWN0aW9uYXJ5RXNjYXBlLCBnZXREaWN0aW9uYXJ5QnlDb2RlIH0gZnJvbSAnQC91dGlscy9kaWN0aW9uYXJ5JzsKaW1wb3J0IHsgZXhlY3V0ZUpvYiwgdGFibGVEYXRhLCB0YWJsZURlbGV0ZSwgdG9nZ2xlVHJpZ2dlclJ1biB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9yb2FkV2F0Y2gvaW5zcGVjdGlvblBsYW4nOwppbXBvcnQgeyB0YWJsZURhdGEgYXMgYWxvbmdSb3V0ZUluZm9JbnRlciB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL2Fsb25nUm91dGVJbmZvJzsKaW1wb3J0IHRyZWVTaWRlIGZyb20gJ0AvY29tcG9uZW50cy90cmVlU2lkZS9pbmRleC52dWUnOwppbXBvcnQgeyBnZXRUcmVlIH0gZnJvbSAnQC9hcGkvdHJlZSc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnVGFibGVQYWdlJywKICBjb21wb25lbnRzOiB7CiAgICB0cmVlU2lkZTogdHJlZVNpZGUsCiAgICBwYWdpbmF0aW9uOiBwYWdpbmF0aW9uLAogICAgU2VhcmNoQ29tbW9uOiBTZWFyY2hDb21tb24KICB9LAogIG1peGluczogW1RhYmxlTWl4aW5dLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBwdWJTdWI6IG51bGwsCiAgICAgIHRhYmxlTWF4SGVpZ2h0OiAnNjAwcHgnLAogICAgICB0YWJsZUxvYWRpbmc6IHRydWUsCiAgICAgIGJ0bkxvYWRpbmc6IGZhbHNlLAogICAgICB0cmVlTG9hZGluZzogdHJ1ZSwKICAgICAgdHJlZUl0ZW06IHt9LAogICAgICB0cmVlRGF0YTogW10sCiAgICAgIC8v5bem6L655qCRCiAgICAgIGRlZmF1bHRQcm9wczogewogICAgICAgIGNoaWxkcmVuOiAnY2hpbGRyZW4nLAogICAgICAgIGxhYmVsOiAnbmFtZScKICAgICAgfSwKICAgICAgdGFibGVEYXRhOiBbXSwKICAgICAgb3B0aW9uTGlzdDogW3sKICAgICAgICB0aXRsZTogJ+aJgOWxnui3r+autee8lueggScsCiAgICAgICAgcHJvcDogJ3JvYWRDb2RlJywKICAgICAgICB0eXBlOiAnaW5wdXQnLAogICAgICAgIGRlZmF1bHQ6IHRydWUKICAgICAgfSwgewogICAgICAgIHRpdGxlOiAn5beh5qOA57G75Z6LJywKICAgICAgICBwcm9wOiAncGxhblR5cGUnLAogICAgICAgIHR5cGU6ICdzZWxlY3QnLAogICAgICAgIG9wdGlvbjogZ2V0RGljdGlvbmFyeUJ5Q29kZSgneGpseC14anJ3JyksCiAgICAgICAgbXVsdGlwbGU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB0aXRsZTogJ+ePreasoScsCiAgICAgICAgcHJvcDogJ3dvcmtjbGFzcycsCiAgICAgICAgdHlwZTogJ3NlbGVjdCcsCiAgICAgICAgb3B0aW9uOiBnZXREaWN0aW9uYXJ5QnlDb2RlKCdiYy14anJ3JyksCiAgICAgICAgbXVsdGlwbGU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB0aXRsZTogJ+W8gOWni+W3oeajgOermScsCiAgICAgICAgcHJvcDogJ3N0YXJ0UGF0cm9sSWQnLAogICAgICAgIHR5cGU6ICdzZWxlY3QnLAogICAgICAgIG9wdGlvbjogW10sCiAgICAgICAgbXVsdGlwbGU6IGZhbHNlCiAgICAgIH0sIHsKICAgICAgICB0aXRsZTogJ+e7k+adn+W3oeajgOermScsCiAgICAgICAgcHJvcDogJ2VuZFBhdHJvbElkJywKICAgICAgICB0eXBlOiAnc2VsZWN0JywKICAgICAgICBvcHRpb246IFtdLAogICAgICAgIG11bHRpcGxlOiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdGl0bGU6ICflvoDov5TnsbvlnosnLAogICAgICAgIHByb3A6ICdpbnNwZWN0VHlwZScsCiAgICAgICAgdHlwZTogJ3NlbGVjdCcsCiAgICAgICAgb3B0aW9uOiBnZXREaWN0aW9uYXJ5QnlDb2RlKCd3Zmx4LXhqcncnKSwKICAgICAgICBtdWx0aXBsZTogZmFsc2UKICAgICAgfV0sCiAgICAgIHBhcmFtczogewogICAgICAgIHBhZ2VCZWFuOiB7CiAgICAgICAgICBwYWdlU2l6ZTogMjAsCiAgICAgICAgICBwYWdlOiAxLAogICAgICAgICAgdG90YWw6IDAKICAgICAgICB9LAogICAgICAgIHF1ZXJ5czogW3sKICAgICAgICAgIG9wZXJhdGlvbjogJ0lOJywKICAgICAgICAgIHByb3BlcnR5OiAncm9hZElkJwogICAgICAgIH0sIHsKICAgICAgICAgIG9wZXJhdGlvbjogJ0xJS0UnLAogICAgICAgICAgcHJvcGVydHk6ICdyb2FkQ29kZScKICAgICAgICB9LCB7CiAgICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgICBwcm9wZXJ0eTogJ3BsYW5UeXBlJwogICAgICAgIH0sIHsKICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICAgIHByb3BlcnR5OiAnd29ya2NsYXNzJwogICAgICAgIH0sIHsKICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICAgIHByb3BlcnR5OiAnc3RhcnRQYXRyb2xJZCcKICAgICAgICB9LCB7CiAgICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgICBwcm9wZXJ0eTogJ2VuZFBhdHJvbElkJwogICAgICAgIH0sIHsKICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICAgIHByb3BlcnR5OiAnaW5zcGVjdFR5cGUnCiAgICAgICAgfV0sCiAgICAgICAgc29ydGVyOiBbewogICAgICAgICAgZGlyZWN0aW9uOiAnREVTQycsCiAgICAgICAgICBwcm9wZXJ0eTogJ2NyZWF0ZVRpbWUnCiAgICAgICAgfSwgewogICAgICAgICAgZGlyZWN0aW9uOiAnJywKICAgICAgICAgIHByb3BlcnR5OiAnaW5zcGVjdFR5cGUnCiAgICAgICAgfSwgewogICAgICAgICAgZGlyZWN0aW9uOiAnJywKICAgICAgICAgIHByb3BlcnR5OiAncGxhblR5cGUnCiAgICAgICAgfSwgewogICAgICAgICAgZGlyZWN0aW9uOiAnJywKICAgICAgICAgIHByb3BlcnR5OiAnd29ya2NsYXNzJwogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIGlzQWRkRGlzYWJsZWQ6IHRydWUKICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIC8vIOiOt+WPluagkeW9ouebruW9lQogICAgdGhpcy5nZXRPcmdUcmVlRGF0YShmdW5jdGlvbiAodHJlZURhdGEpIHsKICAgICAgLy8g5Zue6LCD5Lit6buY6K6k6YCJ5Lit56ys5LiA6aG55bm25bCG5YW2aWTkvZzkuLrlj4LmlbDor7fmsYLooajmoLwKICAgICAgX3RoaXMudHJlZUl0ZW0gPSB0cmVlRGF0YVswXSB8fCB7fTsKICAgICAgdmFyIGFycmF5ID0gW107CiAgICAgIGlmIChfdGhpcy50cmVlSXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgYXJyYXkgPSBfdGhpcy5leHRyYWN0SWRzKF90aGlzLnRyZWVJdGVtKTsKICAgICAgfQogICAgICBfdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICB2YXIgX3RoaXMkJHJlZnMkdHJlZVNpZGUsIF90cmVlRGF0YSQsIF90aGlzJCRyZWZzJHRyZWVTaWRlMjsKICAgICAgICAoX3RoaXMkJHJlZnMkdHJlZVNpZGUgPSBfdGhpcy4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUgPT09IHZvaWQgMCB8fCBfdGhpcyQkcmVmcyR0cmVlU2lkZS5zZXRDdXJyZW50S2V5KChfdHJlZURhdGEkID0gdHJlZURhdGFbMF0pID09PSBudWxsIHx8IF90cmVlRGF0YSQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90cmVlRGF0YSQuaWQpOwogICAgICAgIChfdGhpcyQkcmVmcyR0cmVlU2lkZTIgPSBfdGhpcy4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyID09PSB2b2lkIDAgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyLmV4cGFuZEhhbmRsZSh0cnVlLCAyKTsKICAgICAgfSk7CiAgICAgIHNldFF1ZXJ5VmFsdWUoX3RoaXMucGFyYW1zLCAncm9hZElkICcsIGFycmF5KTsKICAgICAgLy8gc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3JvYWRJZCcsIHRoaXMudHJlZUl0ZW0/LmlkIHx8ICcnKQogICAgICBfdGhpcy5nZXRBbG9uZ1JvdXRlSW5mbygpOwogICAgICBfdGhpcy5sb2FkRGF0YSgpOwogICAgfSk7CiAgfSwKICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICB0aGlzLnB1YlN1YiA9IFB1YlN1Yi5zdWJzY3JpYmUoJ1RhYmxlUGFnZScsIGZ1bmN0aW9uIChfLCBkYXRhKSB7CiAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7CiAgICAgICAgY2FzZSAnYWRkJzoKICAgICAgICAgIF90aGlzMi5oYW5kbGVDdXJyZW50Q2hhbmdlKDEpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnZWRpdCc6CiAgICAgICAgICBfdGhpczIubG9hZERhdGEoKTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9KTsKICB9LAogIG1ldGhvZHM6IHsKICAgIGRpY3Rpb25hcnlFc2NhcGU6IGRpY3Rpb25hcnlFc2NhcGUsCiAgICBnZXRTb3J0ZXJEaXJlY3Rpb246IGdldFNvcnRlckRpcmVjdGlvbiwKICAgIGV4dHJhY3RJZHM6IGZ1bmN0aW9uIGV4dHJhY3RJZHMobm9kZSkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgdmFyIGlkcyA9IFtdOwogICAgICAvLyDlpoLmnpzlvZPliY3oioLngrnmnIkgY2hpbGRyZW7vvIzliJnpgJLlvZLmj5Dlj5YKICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHsKICAgICAgICBpZHMgPSBub2RlLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHsKICAgICAgICAgIHJldHVybiBjaGlsZC5pZDsKICAgICAgICB9KTsgLy8g5o+Q5Y+W5b2T5YmN6IqC54K555qEIGlkCiAgICAgICAgLy8g6YCS5b2S5o+Q5Y+W5a2Q6IqC54K555qEIGlkCiAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgewogICAgICAgICAgaWRzID0gaWRzLmNvbmNhdChfdGhpczMuZXh0cmFjdElkcyhjaGlsZCkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHJldHVybiBpZHM7CiAgICB9LAogICAgLy8g6I635Y+W6Lev5q615qCRCiAgICBnZXRPcmdUcmVlRGF0YTogZnVuY3Rpb24gZ2V0T3JnVHJlZURhdGEoY2FsbGJhY2spIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgX3lpZWxkJGdldFRyZWUsIHZhbHVlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAwOwogICAgICAgICAgICAgIF90aGlzNC50cmVlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIGdldFRyZWUoKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIF95aWVsZCRnZXRUcmVlID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICB2YWx1ZSA9IF95aWVsZCRnZXRUcmVlLnZhbHVlOwogICAgICAgICAgICAgIF90aGlzNC50cmVlRGF0YSA9IFt2YWx1ZV07CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gNzsKICAgICAgICAgICAgICBfdGhpczQudHJlZUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhfdGhpczQudHJlZURhdGEpOwogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goNyk7CiAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlLCBudWxsLCBbWzAsLCA3LCAxMV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgdHJhbnNmb3JtVHJlZURhdGE6IGZ1bmN0aW9uIHRyYW5zZm9ybVRyZWVEYXRhKGRhdGEpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBuYW1lOiBkYXRhLm5hbWUsCiAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgY2hpbGRyZW46IGRhdGEuY2hpbGRyZW4ucmVkdWNlKGZ1bmN0aW9uIChhY2MsIGNoaWxkKSB7CiAgICAgICAgICBhY2MucHVzaCh7CiAgICAgICAgICAgIGlkOiBjaGlsZC5pZCwKICAgICAgICAgICAgbmFtZTogY2hpbGQubmFtZSwKICAgICAgICAgICAgcGF0aDogY2hpbGQucGF0aCwKICAgICAgICAgICAgY2hpbGRyZW46IGNoaWxkLnJvYWRMaXN0Lm1hcChmdW5jdGlvbiAocm9hZCkgewogICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBpZDogcm9hZC5pZCwKICAgICAgICAgICAgICAgIG5hbWU6IHJvYWQubmFtZSwKICAgICAgICAgICAgICAgIHBhdGg6IHJvYWQucGF0aAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0pCiAgICAgICAgICB9KTsKICAgICAgICAgIHJldHVybiBhY2M7CiAgICAgICAgfSwgW10pCiAgICAgIH07CiAgICB9LAogICAgLy/lt6bovrnmoJHoioLngrkKICAgIGN1cnJlbnRDaGFuZ2U6IGZ1bmN0aW9uIGN1cnJlbnRDaGFuZ2Uobm9kZUl0ZW0pIHsKICAgICAgaWYgKG5vZGVJdGVtLmlkID09PSAnMTc2NjAxNzQ2ODQ0NDQ1MDgxNicpIHsKICAgICAgICB0aGlzLmlzQWRkRGlzYWJsZWQgPSB0cnVlOwogICAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdyb2FkSWQnLCB0aGlzLmV4dHJhY3RJZHMobm9kZUl0ZW0pKTsKICAgICAgfSBlbHNlIGlmIChub2RlSXRlbS5jaGlsZHJlbiAmJiBub2RlSXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgdGhpcy5pc0FkZERpc2FibGVkID0gdHJ1ZTsKICAgICAgICB2YXIgYXJyYXkgPSBub2RlSXRlbS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICAgIH0pOwogICAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdyb2FkSWQnLCBhcnJheSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5pc0FkZERpc2FibGVkID0gZmFsc2U7CiAgICAgICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3JvYWRJZCcsIFtub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0uaWRdIHx8IFtdKTsKICAgICAgfQogICAgICAvLyDliKTmlq3mmK/lkKbmmK/kuIDnuqfnm67lvZXvvIjmnIkgY2hpbGRyZW4g5bGe5oCn77yJCiAgICAgIC8vIGlmIChub2RlSXRlbS5jaGlsZHJlbiAmJiBub2RlSXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgIC8vICAgdGhpcy5pc0FkZERpc2FibGVkID0gdHJ1ZSAvLyDnpoHnlKjmlrDlop7mjInpkq4KICAgICAgLy8gICAvLyB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeS6jOe6p+ebruW9lei/m+ihjOaWsOWinuaTjeS9nCcpCiAgICAgIC8vICAgY29uc3QgYXJyYXkgPSBub2RlSXRlbS5jaGlsZHJlbi5tYXAoaXRlbSA9PiBpdGVtLmlkKQogICAgICAvLyAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdyb2FkSWQgJywgYXJyYXkpCiAgICAgIC8vIH0gZWxzZSB7CiAgICAgIC8vICAgdGhpcy5pc0FkZERpc2FibGVkID0gZmFsc2UgLy8g5ZCv55So5paw5aKe5oyJ6ZKuCiAgICAgIC8vICAgLy8g5L+u5pS55a+55bqU55qE5a2X5q615YC8CiAgICAgIC8vICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3JvYWRJZCAnLCBbbm9kZUl0ZW0/LmlkXSB8fCBbXSkKICAgICAgLy8gfQogICAgICB0aGlzLnBhcmFtcy5wYWdlQmVhbi5wYWdlID0gMTsKICAgICAgdGhpcy5jYWxjVGFibGVIZWlnaHQoNTAwKTsKICAgICAgUHViU3ViLnB1Ymxpc2goJ1RyZWVJdGVtU2VsZWN0ZWQnLCBub2RlSXRlbSk7CiAgICAgIHRoaXMudHJlZUl0ZW0gPSBub2RlSXRlbSB8fCB7fTsKICAgICAgdGhpcy5sb2FkRGF0YSgpOwogICAgfSwKICAgIC8v6I635Y+W5pWw5o2uCiAgICBsb2FkRGF0YTogZnVuY3Rpb24gbG9hZERhdGEoKSB7CiAgICAgIHZhciBfdGhpczUgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKCkgewogICAgICAgIHZhciBfeWllbGQkdGFibGVEYXRhLCBfeWllbGQkdGFibGVEYXRhJHRvdGEsIHRvdGFsLCBfeWllbGQkdGFibGVEYXRhJHJvd3MsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMDsKICAgICAgICAgICAgICBfdGhpczUudGFibGVMb2FkaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRGF0YShyZWZpbmVSZXF1ZXN0Qm9keShfdGhpczUucGFyYW1zKSk7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEYXRhID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGF0YSR0b3RhID0gX3lpZWxkJHRhYmxlRGF0YS50b3RhbDsKICAgICAgICAgICAgICB0b3RhbCA9IF95aWVsZCR0YWJsZURhdGEkdG90YSA9PT0gdm9pZCAwID8gMCA6IF95aWVsZCR0YWJsZURhdGEkdG90YTsKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEYXRhJHJvd3MgPSBfeWllbGQkdGFibGVEYXRhLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCR0YWJsZURhdGEkcm93cyA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkdGFibGVEYXRhJHJvd3M7CiAgICAgICAgICAgICAgX3RoaXM1LnBhcmFtcy5wYWdlQmVhbi50b3RhbCA9IHRvdGFsOwogICAgICAgICAgICAgIF90aGlzNS50YWJsZURhdGEgPSByb3dzLm1hcChmdW5jdGlvbiAoaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoewogICAgICAgICAgICAgICAgICBpc0VuYWJsZTogaS50YXNrU3RhdHVzID09PSAnTk9STUFMJwogICAgICAgICAgICAgICAgfSwgaSk7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAxMTsKICAgICAgICAgICAgICBfdGhpczUudGFibGVMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5maW5pc2goMTEpOwogICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUyLCBudWxsLCBbWzAsLCAxMSwgMTRdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOW8gOWQr+aaguWBnOiuoeWIkgogICAgZW5hYmxlRGlzYWJsZTogZnVuY3Rpb24gZW5hYmxlRGlzYWJsZSh2YWwsIHJvdykgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICB2YXIgX3lpZWxkJHRvZ2dsZVRyaWdnZXJSLCBzdGF0ZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXM2LmNsaWNrVGltZXIgPSB0cnVlOwogICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczYuY2xpY2tUaW1lciA9IGZhbHNlOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMjsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIHRvZ2dsZVRyaWdnZXJSdW4ocm93LmlkKTsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgIF95aWVsZCR0b2dnbGVUcmlnZ2VyUiA9IF9jb250ZXh0My5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJHRvZ2dsZVRyaWdnZXJSLnN0YXRlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgcm93LnRhc2tTdGF0dXMgPSB2YWwgPyAnTk9STUFMJyA6ICdQQVVTRUQnOwogICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlW3ZhbCA/ICdzdWNjZXNzJyA6ICd3YXJuaW5nJ10oIlx1NURFMVx1NjhDMFx1OEJBMVx1NTIxMlx1NURGMiIuY29uY2F0KHZhbCA/ICfov5DooYwnIDogJ+aaguWBnCcpKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcm93LmlzRW5hYmxlID0gIXZhbDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxMzsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDEwOwogICAgICAgICAgICAgIF9jb250ZXh0My50MCA9IF9jb250ZXh0M1siY2F0Y2giXSgyKTsKICAgICAgICAgICAgICByb3cuaXNFbmFibGUgPSAhdmFsOwogICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzLCBudWxsLCBbWzIsIDEwXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDmiafooYzlt6Hmo4DorqHliJIKICAgIGV4ZWN1dGVDb25maWd1cmF0aW9uOiBmdW5jdGlvbiBleGVjdXRlQ29uZmlndXJhdGlvbihyb3cpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHRoaXMuY2xpY2tUaW1lciA9IHRydWU7CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKF8pIHsKICAgICAgICByZXR1cm4gX3RoaXM3LmNsaWNrVGltZXIgPSBmYWxzZTsKICAgICAgfSk7CiAgICAgIGlmICghcm93LmlkKSByZXR1cm47CiAgICAgIHRoaXMuJGNvbmZpcm0oIlx1NjYyRlx1NTQyNlx1NjI2N1x1ODg0Q1x1NTM1NVx1NkIyMVx1NUY1M1x1NTI0RFx1NURFMVx1NjhDMFx1OEJBMVx1NTIxMiIsICfmj5DnpLonLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7orqQnLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICB9KS50aGVuKC8qI19fUFVSRV9fKi9fYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7CiAgICAgICAgdmFyIF95aWVsZCRleGVjdXRlSm9iLCBzdGF0ZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiBleGVjdXRlSm9iKHJvdy5pZCk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBfeWllbGQkZXhlY3V0ZUpvYiA9IF9jb250ZXh0NC5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJGV4ZWN1dGVKb2Iuc3RhdGU7CiAgICAgICAgICAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA4OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF90aGlzNy4kbWVzc2FnZS5zdWNjZXNzKCJcdTVERTFcdTY4QzBcdThCQTFcdTUyMTJcdTYyNjdcdTg4NENcdTYyMTBcdTUyOUYiKTsKICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDg7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNy5sb2FkRGF0YSgpOwogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQpOwogICAgICB9KSkpLmNhdGNoKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgcmV0dXJuIF87CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWIoOmZpAogICAgaGFuZGxlRGVsZXRlOiBmdW5jdGlvbiBoYW5kbGVEZWxldGUocm93KSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICB0aGlzLmNsaWNrVGltZXIgPSB0cnVlOwogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uIChfKSB7CiAgICAgICAgcmV0dXJuIF90aGlzOC5jbGlja1RpbWVyID0gZmFsc2U7CiAgICAgIH0pOwogICAgICB0aGlzLiRjb25maXJtKCfnoa7lrprliKDpmaTpgInkuK3nmoTlt6Hmo4DorqHliJLlkJfvvJ8nLCAn5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHZhciBpZHMsIF95aWVsZCR0YWJsZURlbGV0ZSwgc3RhdGUsIF90aGlzOCRwYXJhbXMkcGFnZUJlYSwgcGFnZSwgcGFnZVNpemUsIHRvdGFsLCB0b3RhbFBhZ2VzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpczguYnRuTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgaWRzID0gcm93ID8gcm93LmlkIDogX3RoaXM4LmN1cnJlbnREYXRhRGVsLmpvaW4oKTsKICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDI7CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSA1OwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURlbGV0ZShpZHMpOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGVsZXRlID0gX2NvbnRleHQ1LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkdGFibGVEZWxldGUuc3RhdGU7CiAgICAgICAgICAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAxNDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfdGhpczguJG1lc3NhZ2Uuc3VjY2VzcygiXHU1REUxXHU2OEMwXHU4QkExXHU1MjEyXHU1MjIwXHU5NjY0XHU2MjEwXHU1MjlGIik7CiAgICAgICAgICAgICAgX3RoaXM4JHBhcmFtcyRwYWdlQmVhID0gX3RoaXM4LnBhcmFtcy5wYWdlQmVhbiwgcGFnZSA9IF90aGlzOCRwYXJhbXMkcGFnZUJlYS5wYWdlLCBwYWdlU2l6ZSA9IF90aGlzOCRwYXJhbXMkcGFnZUJlYS5wYWdlU2l6ZSwgdG90YWwgPSBfdGhpczgkcGFyYW1zJHBhZ2VCZWEudG90YWw7CiAgICAgICAgICAgICAgdG90YWxQYWdlcyA9IE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKTsgLy8g6K6h566X5oC76aG15pWwCiAgICAgICAgICAgICAgaWYgKHRvdGFsUGFnZXMgPiAxICYmIHBhZ2UgPT09IHRvdGFsUGFnZXMpIHsKICAgICAgICAgICAgICAgIGlmIChfdGhpczgudGFibGVEYXRhLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICAgICAgICAvLyDlvZPliY3pobXlj6rmnInkuIDmnaHmlbDmja4KICAgICAgICAgICAgICAgICAgX3RoaXM4LnBhcmFtcy5wYWdlQmVhbi5wYWdlIC09IDE7IC8vIOi/lOWbnuWJjeS4gOmhtQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDE0OwogICAgICAgICAgICAgIHJldHVybiBfdGhpczgubG9hZERhdGEoKTsKICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgICBfY29udGV4dDUucHJldiA9IDE0OwogICAgICAgICAgICAgIF90aGlzOC5idG5Mb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5maW5pc2goMTQpOwogICAgICAgICAgICBjYXNlIDE3OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1LCBudWxsLCBbWzIsLCAxNCwgMTddXSk7CiAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICByZXR1cm4gXzsKICAgICAgfSk7CiAgICB9LAogICAgLy/kv67mlLkKICAgIGhhbmRsZURiQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZURiQ2xpY2socm93KSB7CiAgICAgIGlmICh0aGlzLmNsaWNrVGltZXIpIHJldHVybiB0aGlzLmNsaWNrVGltZXIgPSBmYWxzZTsKICAgICAgaWYgKHJvdy50YXNrU3RhdHVzID09PSAnTk9STUFMJykgcmV0dXJuIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6ZyA5pqC5YGc5b2T5YmN5beh5qOA6K6h5YiSJyk7CiAgICAgIHRoaXMuY2hhbmdlUGFnZSgnRWRpdEFkZFBhZ2UnLCByb3cpOwogICAgfSwKICAgIC8v6I635Y+W5rK/57q/6K6+5aSH5L+h5oGvCiAgICBnZXRBbG9uZ1JvdXRlSW5mbzogZnVuY3Rpb24gZ2V0QWxvbmdSb3V0ZUluZm8oKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU2KCkgewogICAgICAgIHZhciBfeWllbGQkYWxvbmdSb3V0ZUluZm8sIF95aWVsZCRhbG9uZ1JvdXRlSW5mbzIsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU2JChfY29udGV4dDYpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ni5wcmV2ID0gX2NvbnRleHQ2Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Ni5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gYWxvbmdSb3V0ZUluZm9JbnRlcihyZWZpbmVSZXF1ZXN0Qm9keSgpLCAndGFibGUnKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF95aWVsZCRhbG9uZ1JvdXRlSW5mbyA9IF9jb250ZXh0Ni5zZW50OwogICAgICAgICAgICAgIF95aWVsZCRhbG9uZ1JvdXRlSW5mbzIgPSBfeWllbGQkYWxvbmdSb3V0ZUluZm8ucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJGFsb25nUm91dGVJbmZvMiA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkYWxvbmdSb3V0ZUluZm8yOwogICAgICAgICAgICAgIHJvd3MgPSByb3dzLm1hcChmdW5jdGlvbiAoaSkgewogICAgICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgaSksIHt9LCB7CiAgICAgICAgICAgICAgICAgIHZhbHVlOiBpLmlkCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBfdGhpczkub3B0aW9uTGlzdFszXS5vcHRpb24gPSByb3dzOwogICAgICAgICAgICAgIF90aGlzOS5vcHRpb25MaXN0WzRdLm9wdGlvbiA9IHJvd3M7CiAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNik7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOaUueWPmOmhtemdogogICAgY2hhbmdlUGFnZTogZnVuY3Rpb24gY2hhbmdlUGFnZSgpIHsKICAgICAgdmFyIHBhZ2VOYW1lID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAnJzsKICAgICAgdmFyIHJvdyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307CiAgICAgIGlmICghcGFnZU5hbWUpIHJldHVybjsKICAgICAgLy8g5Lyg6YCS5b2T5YmN6YCJ5Lit55qE5qCR6IqC54K55L+h5oGvCiAgICAgIHZhciBwYXlsb2FkID0gcm93LmlkID8gcm93IDogewogICAgICAgIGNhdGFsb2dJZDogdGhpcy50cmVlSXRlbS5pZCwKICAgICAgICBvcmdOYW1lOiB0aGlzLnRyZWVJdGVtLm5hbWUsCiAgICAgICAgcGF0aDogdGhpcy50cmVlSXRlbS5wYXRoLAogICAgICAgIGNvZGU6IHRoaXMudHJlZUl0ZW0uY29kZSwKICAgICAgICBjbGVhckZvcm06IHRydWUgLy8g5riF56m66KGo5Y2V5qCH5b+XCiAgICAgIH07CiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZVBhZ2UnLCBwYWdlTmFtZSwgZnVuY3Rpb24gKF8pIHsKICAgICAgICBQdWJTdWIucHVibGlzaChwYWdlTmFtZSwgcGF5bG9hZCk7CiAgICAgIH0sIHJvdy5pZCA/ICfnvJbovpEnIDogJ+a3u+WKoCcpOwogICAgfQogIH0sCiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHsKICAgIC8vIOWcqOe7hOS7tumUgOavgeS5i+WJjSDmuIXpmaTorqLpmIXmtojmga8KICAgIFB1YlN1Yi51bnN1YnNjcmliZSh0aGlzLnB1YlN1Yik7CiAgfQp9Ow=="},null]}