{"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\\commandDispatch\\EventManagement\\components\\EditAddPage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\commandDispatch\\EventManagement\\components\\EditAddPage\\index.vue","mtime":1741314105565},{"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:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmZpbmQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5zb21lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnOwppbXBvcnQgUHViU3ViIGZyb20gJ3B1YnN1Yi1qcyc7CmltcG9ydCB7IHJlZmluZVJlcXVlc3RCb2R5IH0gZnJvbSAnQC91dGlscy9yZXF1ZXN0V3JhcHBlcnMnOwppbXBvcnQgeyB0YWJsZUFkZCwgdGFibGVEZXRhaWwsIHRhYmxlRWRpdCB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9jb21tYW5kRGlzcGF0Y2gvZXZlbnRNYW5hZ2VtZW50JzsKaW1wb3J0IHsgZ2V0RGljdGlvbmFyeUJ5Q29kZSwgZGljdGlvbmFyeUVzY2FwZSB9IGZyb20gJ0AvdXRpbHMvZGljdGlvbmFyeSc7CmltcG9ydCBSb2FkQ2hvaWNlRGlhbG9nIGZyb20gJy4vY29tcG9uZW50cy9Sb2FkQ2hvaWNlRGlhbG9nJzsKaW1wb3J0IEFwcG9pbnREaWFsb2cgZnJvbSAnLi9jb21wb25lbnRzL0FwcG9pbnREaWFsb2cnOwppbXBvcnQgTWluZU1hcCBmcm9tICdAL2NvbXBvbmVudHMvTWluZU1hcC9pbmRleC52dWUnOwppbXBvcnQgeyBvcmdUcmVlIH0gZnJvbSAnQC9hcGkvc3lzdGVtSW50ZXJmYWNlJzsKaW1wb3J0IHsgdGFibGVEYXRhIGFzIHJvYWRTZWN0aW9uSW5mb0ludGVyIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvcm9hZFNlY3Rpb25JbmZvJzsKaW1wb3J0IHsgdGFibGVEYXRhIGFzIGFsb25nUm91dGVJbmZvSW50ZXIgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvaW5mb01nbXRQYXRyb2xzUmVzY3Vlcy9hbG9uZ1JvdXRlSW5mbyc7CmltcG9ydCB7IHRhYmxlRGF0YSBhcyB0ZWFtRGF0YSB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3BhdHJvbEFuZFJlc2N1ZVRlYW1zTWdtdCc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnRWRpdEFkZFBhZ2UnLAogIGNvbXBvbmVudHM6IHsKICAgIE1pbmVNYXA6IE1pbmVNYXAsCiAgICBSb2FkQ2hvaWNlRGlhbG9nOiBSb2FkQ2hvaWNlRGlhbG9nLAogICAgQXBwb2ludERpYWxvZzogQXBwb2ludERpYWxvZwogIH0sCiAgcHJvcHM6IHsKICAgIGNvbXBvbmVudE5hbWU6IHsKICAgICAgZGVmYXVsdDogJ0VkaXRBZGRQYWdlJywKICAgICAgdHlwZTogU3RyaW5nCiAgICB9CiAgfSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgZm9ybUxvYWRpbmc6IHRydWUsCiAgICAgIGFwcG9pbnREaWFsb2c6IGZhbHNlLAogICAgICBhZGRFZGl0Rm9ybTogewogICAgICAgIGxuZzogJycsCiAgICAgICAgbGF0OiAnJywKICAgICAgICBldmVudFR5cGU6ICIxIiwKICAgICAgICBldmVudFRpbWU6IG5ldyBEYXRlKCkKICAgICAgfSwKICAgICAgYWRkRWRpdFJ1bGVzOiB7CiAgICAgICAgZXZlbnRUZWw6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmiqXmoYjnlLXor53kuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnLCAnYmx1ciddCiAgICAgICAgfV0sCiAgICAgICAgZXZlbnRUeXBlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5LqL5Lu257G75Z6LJywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICB9XSwKICAgICAgICByb2FkSWQ6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfot6/mrrXkv6Hmga/kuI3og73kuLrnqbonLAogICAgICAgICAgdHJpZ2dlcjogWydjaGFuZ2UnXQogICAgICAgIH1dLAogICAgICAgIHRlYW1JZDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+WkhOe9rumYn+S8jeS4jeiDveS4uuepuicsCiAgICAgICAgICB0cmlnZ2VyOiBbJ2NoYW5nZSddCiAgICAgICAgfV0sCiAgICAgICAgZXZlbnRUaW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn5LqL5Lu25Y+R55Sf5pe26Ze05LiN6IO95Li656m6JywKICAgICAgICAgIHRyaWdnZXI6IFsnY2hhbmdlJ10KICAgICAgICB9XQogICAgICB9LAogICAgICBzYXZlTG9hZGluZzogZmFsc2UsCiAgICAgIC8vIOS4iuS8oGxvYWRpbmcKICAgICAgaWQ6ICcnLAogICAgICAvLyBpZOagh+ivhuespgogICAgICByb2FkQ2hvaWNlRGlhbG9nOiBmYWxzZSwKICAgICAgLy8g5piv5ZCm5bGV56S66YCJ5oup6Lev5q615by55bGCCiAgICAgIHJvdXRlckRhdGE6IFtdLAogICAgICAvLyDot6/nur/mlbDmja4KICAgICAgcHViU3ViOiBudWxsLAogICAgICBtYXBMb2FkaW5nOiB0cnVlLAogICAgICAvLyDlnLDlm77liqDovb1sb2FkaW5nCiAgICAgIG1hcDogbnVsbCwKICAgICAgbWFwRGVmYXVsdE9wdGlvbnM6IHsKICAgICAgICBjZW50ZXI6IFsxMDYuNTUwNywgMjkuNTY0N10gLyrlnLDlm77kuK3lv4PngrkqLywKICAgICAgICB6b29tOiA5IC8q5Zyw5Zu+6buY6K6k57yp5pS+562J57qnKi8KICAgICAgfSwKICAgICAgbWFya2VyczogW10sCiAgICAgIHRlYW1UcmVlRGF0YTogW10sCiAgICAgIC8vIOaVkeaPtOmYn+S8jee7hOe7h+agkQogICAgICBldmVudEdyYWRlT3B0aW9uczogWwogICAgICAvL+S6i+S7tuetiee6pwogICAgICB7CiAgICAgICAgbGFiZWw6ICcx57qnJywKICAgICAgICB2YWx1ZTogMQogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICcy57qnJywKICAgICAgICB2YWx1ZTogMgogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICcz57qnJywKICAgICAgICB2YWx1ZTogMwogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICc057qnJywKICAgICAgICB2YWx1ZTogNAogICAgICB9XSwKICAgICAgdGFibGVEYXRhOiBbXSwKICAgICAgcm9hZE9wdGlvbnM6IFtdLAogICAgICBhbG9uZ1JvdXRlSW5mb0RhdGE6IFtdLAogICAgICB0ZWFtT3B0aW9uczogW10KICAgIH07CiAgfSwKICB3YXRjaDogewogICAgY29tcG9uZW50TmFtZTogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKG5ld1ZhbCkgewogICAgICAgIGlmIChuZXdWYWwgPT09IHRoaXMuJG9wdGlvbnMubmFtZSkgewogICAgICAgICAgdGhpcy5vcGVuUGFnZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLmNsb3NlUGFnZSgpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIHRoaXMuZ2V0T3JnVHJlZURhdGEoKTsKICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgdGhpcy5wdWJTdWIgPSBQdWJTdWIuc3Vic2NyaWJlKCdFZGl0QWRkUGFnZScsIGZ1bmN0aW9uIChfLCBkYXRhKSB7CiAgICAgIGlmIChkYXRhLmlkKSB7CiAgICAgICAgX3RoaXMuaWQgPSBkYXRhLmlkOwogICAgICAgIF90aGlzLmdldERldGFpbChkYXRhLmlkKTsKICAgICAgfQogICAgfSk7CiAgICB0aGlzLmdldFJvYWRPcHRpb25zKCk7CiAgfSwKICBtZXRob2RzOiB7CiAgICBkaWN0aW9uYXJ5RXNjYXBlOiBkaWN0aW9uYXJ5RXNjYXBlLAogICAgc2l0ZUNoYW5nZTogZnVuY3Rpb24gc2l0ZUNoYW5nZShlLCB0eXBlKSB7CiAgICAgIHZhciBzaXRlSW5mbyA9IHRoaXMuYWxvbmdSb3V0ZUluZm9EYXRhLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gaXRlbS5pZCA9PT0gZTsKICAgICAgfSk7CiAgICAgIHRoaXMuYWRkRWRpdEZvcm1bIiIuY29uY2F0KHR5cGUsICJOYW1lIildID0gc2l0ZUluZm8ubmFtZTsKICAgIH0sCiAgICBzZW5kUmVzY3VlSW5mbzogZnVuY3Rpb24gc2VuZFJlc2N1ZUluZm8oZGF0YSkgewogICAgICAvLyB0aGlzLmNoYW5nZVBhZ2UoJ1RhYmxlUGFnZScsICdlZGl0JykKICAgICAgY29uc29sZS5sb2coZGF0YSk7CiAgICAgIHRoaXMudGFibGVEYXRhLnB1c2goZGF0YSk7CiAgICB9LAogICAgZ2V0RGljdGlvbmFyeUJ5Q29kZTogZ2V0RGljdGlvbmFyeUJ5Q29kZSwKICAgIC8vIOi3r+auteaVsOaNruafpeivogogICAgZ2V0Um9hZE9wdGlvbnM6IGZ1bmN0aW9uIGdldFJvYWRPcHRpb25zKCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkcm9hZFNlY3Rpb25JbmYsIF95aWVsZCRyb2FkU2VjdGlvbkluZjIsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIHJvYWRTZWN0aW9uSW5mb0ludGVyKHsKICAgICAgICAgICAgICAgIHBhZ2VCZWFuOiB7CiAgICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAtMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJHJvYWRTZWN0aW9uSW5mID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkcm9hZFNlY3Rpb25JbmYyID0gX3lpZWxkJHJvYWRTZWN0aW9uSW5mLnJvd3M7CiAgICAgICAgICAgICAgcm93cyA9IF95aWVsZCRyb2FkU2VjdGlvbkluZjIgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHJvYWRTZWN0aW9uSW5mMjsKICAgICAgICAgICAgICBfdGhpczIucm9hZE9wdGlvbnMgPSByb3dzLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICAgICAgaXRlbS5yb2FkTmFtZSA9IGl0ZW0ubmFtZSArICcgJyArIGl0ZW0uY29kZTsKICAgICAgICAgICAgICAgIHJldHVybiBpdGVtOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIGNvbnNvbGUubG9nKCFfdGhpczIuaWQpOwogICAgICAgICAgICAgIGlmICghX3RoaXMyLmlkKSB7CiAgICAgICAgICAgICAgICBfdGhpczIuJHNldChfdGhpczIuYWRkRWRpdEZvcm0sICdyb2FkSWQnLCBfdGhpczIucm9hZE9wdGlvbnNbMF0uaWQpOwogICAgICAgICAgICAgICAgX3RoaXMyLnJvYWRDaGFuZ2UoX3RoaXMyLnJvYWRPcHRpb25zWzBdLmlkKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDot6/mrrXpgInmi6nlj5jljJYKICAgIHJvYWRDaGFuZ2U6IGZ1bmN0aW9uIHJvYWRDaGFuZ2UodmFsdWUpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF90aGlzMy5nZXRUZWFtRGF0YSh2YWx1ZSk7CiAgICAgICAgICAgICAgLy8g6YCa6L+H6Lev5q615L+h5oGv6I635Y+W5rK/57q/6K6+5aSH5L+h5oGvCiAgICAgICAgICAgICAgX3RoaXMzLmdldEFsb25nUm91dGVJbmZvKHZhbHVlLCBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgICAgICAgdmFyIF90aGlzMyRhZGRFZGl0Rm9ybSA9IF90aGlzMy5hZGRFZGl0Rm9ybSwKICAgICAgICAgICAgICAgICAgc3RhcnRQYXRyb2xJZCA9IF90aGlzMyRhZGRFZGl0Rm9ybS5zdGFydFBhdHJvbElkLAogICAgICAgICAgICAgICAgICBlbmRQYXRyb2xJZCA9IF90aGlzMyRhZGRFZGl0Rm9ybS5lbmRQYXRyb2xJZDsKCiAgICAgICAgICAgICAgICAvKg0KICAgICAgICAgICAgICAgICog5beh5qOA5byA5aeL77yM57uT5p2f56uZDQogICAgICAgICAgICAgICAgKiAqLwogICAgICAgICAgICAgICAgaWYgKHN0YXJ0UGF0cm9sSWQpIHsKICAgICAgICAgICAgICAgICAgaWYgKCFkYXRhLnNvbWUoZnVuY3Rpb24gKGkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaS5pZCA9PT0gc3RhcnRQYXRyb2xJZDsKICAgICAgICAgICAgICAgICAgfSkpIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczMuYWRkRWRpdEZvcm0uc3RhcnRQYXRyb2xJZCA9ICcnOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczMuJG1lc3NhZ2Uud2FybmluZygn6K+36YeN5paw6YCJ5oup5beh5qOA5byA5aeL56uZLi4nKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGVuZFBhdHJvbElkKSB7CiAgICAgICAgICAgICAgICAgIGlmICghZGF0YS5zb21lKGZ1bmN0aW9uIChpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkuaWQgPT09IGVuZFBhdHJvbElkOwogICAgICAgICAgICAgICAgICB9KSkgewogICAgICAgICAgICAgICAgICAgIF90aGlzMy5hZGRFZGl0Rm9ybS5lbmRQYXRyb2xJZCA9ICcnOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczMuJG1lc3NhZ2Uud2FybmluZygn6K+36YeN5paw6YCJ5oup5beh5qOA57uT5p2f56uZLi4nKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDpgJrov4fot6/mrrXkv6Hmga/ojrflj5bmsr/nur/orr7lpIfkv6Hmga8KICAgIGdldEFsb25nUm91dGVJbmZvOiBmdW5jdGlvbiBnZXRBbG9uZ1JvdXRlSW5mbyh2YWx1ZSwgY2FsbGJhY2spIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgdmFyIF93aXBlRGF0YSwgX3lpZWxkJGFsb25nUm91dGVJbmZvLCBfeWllbGQkYWxvbmdSb3V0ZUluZm8yLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfd2lwZURhdGEgPSBmdW5jdGlvbiBfd2lwZURhdGEoKSB7CiAgICAgICAgICAgICAgICBfdGhpczQuYWxvbmdSb3V0ZUluZm9EYXRhID0gW107CiAgICAgICAgICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhfdGhpczQuYWxvbmdSb3V0ZUluZm9EYXRhKTsKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMTsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIGFsb25nUm91dGVJbmZvSW50ZXIocmVmaW5lUmVxdWVzdEJvZHkoewogICAgICAgICAgICAgICAgcXVlcnlzOiBbewogICAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAncm9hZF9zZWdtZW50X2lkXycsCiAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZQogICAgICAgICAgICAgICAgfV0KICAgICAgICAgICAgICB9KSwgJ2FkZEVkaXQnKTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIF95aWVsZCRhbG9uZ1JvdXRlSW5mbyA9IF9jb250ZXh0My5zZW50OwogICAgICAgICAgICAgIF95aWVsZCRhbG9uZ1JvdXRlSW5mbzIgPSBfeWllbGQkYWxvbmdSb3V0ZUluZm8ucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJGFsb25nUm91dGVJbmZvMiA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkYWxvbmdSb3V0ZUluZm8yOwogICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKHJvd3MpOwogICAgICAgICAgICAgIF90aGlzNC5hbG9uZ1JvdXRlSW5mb0RhdGEgPSByb3dzOwogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMTQ7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAxMTsKICAgICAgICAgICAgICBfY29udGV4dDMudDAgPSBfY29udGV4dDNbImNhdGNoIl0oMSk7CiAgICAgICAgICAgICAgLy8g5LiN5Li66K+35rGC6L+H5b+r57uT5p2f55qE5oOF5Ya15LiL77yM6YeN572uCiAgICAgICAgICAgICAgaWYgKF9jb250ZXh0My50MC5tZXNzYWdlICE9PSAnY2FuY2VsZWQnKSBfd2lwZURhdGEoKTsKICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMywgbnVsbCwgW1sxLCAxMV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g6YCa6L+H6Lev5q615L+h5oGv6I635Y+W5beh5p+l5pWR5o+06Zif5LyN5L+h5oGvCiAgICBnZXRUZWFtRGF0YTogZnVuY3Rpb24gZ2V0VGVhbURhdGEodmFsdWUpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7CiAgICAgICAgdmFyIF95aWVsZCR0ZWFtRGF0YSwgX3lpZWxkJHRlYW1EYXRhJHJvd3MsIHJvd3M7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gdGVhbURhdGEocmVmaW5lUmVxdWVzdEJvZHkoewogICAgICAgICAgICAgICAgcXVlcnlzOiBbewogICAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICAgICAgICAgIHByb3BlcnR5OiAnci5pZF8nLAogICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUKICAgICAgICAgICAgICAgIH0sIHsKICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uOiAnRVFVQUwnLAogICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJ3QudHlwZV8nLAogICAgICAgICAgICAgICAgICB2YWx1ZTogJzEnCiAgICAgICAgICAgICAgICB9XQogICAgICAgICAgICAgIH0pLCAnYWRkRWRpdCcpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJHRlYW1EYXRhID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJHRlYW1EYXRhJHJvd3MgPSBfeWllbGQkdGVhbURhdGEucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHRlYW1EYXRhJHJvd3MgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHRlYW1EYXRhJHJvd3M7CiAgICAgICAgICAgICAgX3RoaXM1LnRlYW1PcHRpb25zID0gcm93czsKICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU0KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g6I635Y+W5YWs5Y+45qCRCiAgICBnZXRPcmdUcmVlRGF0YTogZnVuY3Rpb24gZ2V0T3JnVHJlZURhdGEoKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkgewogICAgICAgIHZhciBkYXRhOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDUucHJldiA9IF9jb250ZXh0NS5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIG9yZ1RyZWUoKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIGRhdGEgPSBfY29udGV4dDUuc2VudDsKICAgICAgICAgICAgICBfdGhpczYudGVhbVRyZWVEYXRhID0gZGF0YTsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU1KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g6Zif5LyN6YCJ5oupCiAgICB0ZWFtSWRDaGFuZ2U6IGZ1bmN0aW9uIHRlYW1JZENoYW5nZSh0eXBlKSB7CiAgICAgIHZhciBfdGhpcyQkcmVmcywgX3RoaXMkJHJlZnMyOwogICAgICB0aGlzW3R5cGVdLnRlYW1GdWxsSWQgPSAoKF90aGlzJCRyZWZzID0gdGhpcy4kcmVmc1siIi5jb25jYXQodHlwZSwgIkNhc2NhZGVyIildKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmcyA9PT0gdm9pZCAwIHx8IChfdGhpcyQkcmVmcyA9IF90aGlzJCRyZWZzLmdldENoZWNrZWROb2RlcygpWzBdKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmcyA9PT0gdm9pZCAwIHx8IChfdGhpcyQkcmVmcyA9IF90aGlzJCRyZWZzLmRhdGEpID09PSBudWxsIHx8IF90aGlzJCRyZWZzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyQkcmVmcy5wYXRoKSB8fCAnJzsKICAgICAgdGhpc1t0eXBlXS50ZWFtSWQgPSAoKF90aGlzJCRyZWZzMiA9IHRoaXMuJHJlZnNbIiIuY29uY2F0KHR5cGUsICJDYXNjYWRlciIpXSkgPT09IG51bGwgfHwgX3RoaXMkJHJlZnMyID09PSB2b2lkIDAgfHwgKF90aGlzJCRyZWZzMiA9IF90aGlzJCRyZWZzMi5nZXRDaGVja2VkTm9kZXMoKVswXSkgPT09IG51bGwgfHwgX3RoaXMkJHJlZnMyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyQkcmVmczIudmFsdWUpIHx8ICcnOwogICAgfSwKICAgIC8vIOWcsOWbvuaMgui9veWQjgogICAgbWFwTG9hZDogZnVuY3Rpb24gbWFwTG9hZChtYXApIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHRoaXMubWFwTG9hZGluZyA9IGZhbHNlOwogICAgICBtYXAub24oJ2NsaWNrJywgZnVuY3Rpb24gKF9yZWYpIHsKICAgICAgICB2YXIgbG5nTGF0ID0gX3JlZi5sbmdMYXQ7CiAgICAgICAgdmFyIGxuZyA9IGxuZ0xhdC5sbmcsCiAgICAgICAgICBsYXQgPSBsbmdMYXQubGF0OwogICAgICAgIF90aGlzNy5hZGRFZGl0Rm9ybSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgX3RoaXM3LmFkZEVkaXRGb3JtKSwge30sIHsKICAgICAgICAgIGxuZzogbG5nLAogICAgICAgICAgbGF0OiBsYXQKICAgICAgICB9KTsKICAgICAgICBfdGhpczcuY3VzdG9tVGFnUG9pbnRzKFtsbmcsIGxhdF0pOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDoh6rlrprkuYnmoIforrDngrkKICAgIGN1c3RvbVRhZ1BvaW50czogZnVuY3Rpb24gY3VzdG9tVGFnUG9pbnRzKCkgewogICAgICB2YXIgX3RoaXMkbWFya2VycywKICAgICAgICBfdGhpczggPSB0aGlzOwogICAgICB2YXIgbG5nbGF0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBbXTsKICAgICAgKF90aGlzJG1hcmtlcnMgPSB0aGlzLm1hcmtlcnNbdGhpcy5tYXJrZXJzLmxlbmd0aCAtIDFdKSA9PT0gbnVsbCB8fCBfdGhpcyRtYXJrZXJzID09PSB2b2lkIDAgfHwgX3RoaXMkbWFya2Vycy5yZW1vdmUoKTsKICAgICAgLy8g6Ieq5a6a5LmJ54K55qCH6K6w55qE5YaF6YOoRE9N5YWD57SgCiAgICAgIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICBlbC5jbGFzc05hbWUgPSAnbWFya2VyLXRpcCc7CiAgICAgIC8vIE1hcmtlcuaehOmAoOWHveaVsOaOpeaUtuS4pOS4quWPguaVsO+8jOS4gOS4quS4uuiHquWumuS5ieeahERPTeWFg+e0oO+8jOS4gOS4quaYr09iamVjdOWPguaVsO+8jOWFtuS4reWMheaLrOWBj+enu+mHj+etiQogICAgICB2YXIgbWFya2VyID0gbmV3IHRoaXMuJHJlZnMubWluZU1hcC5taW5lTWFwLk1hcmtlcihlbCwgewogICAgICAgIGRyYWdnYWJsZTogdHJ1ZSwKICAgICAgICBhbmNob3I6ICdjZW50ZXInLAogICAgICAgIG9mZnNldDogWzAsIDBdIC8vIG9mZnNldOWPguaVsOS4uuagh+azqOeCueebuOWvueS6juWFtuW3puS4iuinkuWBj+enu+WDj+e0oOWkp+WwjwogICAgICB9KQogICAgICAvLyDosIPnlKhzZXRMbmdMYXTmlrnms5XmjIflrppNYXJrZXLnmoTlnZDmoIfkvY3nva4KICAgICAgLnNldExuZ0xhdChsbmdsYXQpLmFkZFRvKHRoaXMuJHJlZnMubWluZU1hcC5tYXApLm9uKCdkcmFnZW5kJywgZnVuY3Rpb24gKF9yZWYyKSB7CiAgICAgICAgdmFyIHRhcmdldCA9IF9yZWYyLnRhcmdldDsKICAgICAgICB2YXIgX3RhcmdldCRnZXRMbmdMYXQgPSB0YXJnZXQuZ2V0TG5nTGF0KCksCiAgICAgICAgICBsbmcgPSBfdGFyZ2V0JGdldExuZ0xhdC5sbmcsCiAgICAgICAgICBsYXQgPSBfdGFyZ2V0JGdldExuZ0xhdC5sYXQ7CiAgICAgICAgX3RoaXM4LmFkZEVkaXRGb3JtID0gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCBfdGhpczguYWRkRWRpdEZvcm0pLCB7fSwgewogICAgICAgICAgbG5nOiBsbmcsCiAgICAgICAgICBsYXQ6IGxhdAogICAgICAgIH0pOwogICAgICB9KTsKICAgICAgdGhpcy4kcmVmcy5taW5lTWFwLm1hcC5zZXRDZW50ZXIobG5nbGF0KTsKICAgICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTsKICAgIH0sCiAgICAvLyDkv67mlLnnu4/nuqzluqbmm7TmlrDlnLDlm77moIfngrkKICAgIHVwZGF0ZVBvaW50OiBmdW5jdGlvbiB1cGRhdGVQb2ludChlKSB7CiAgICAgIHZhciBfdGhpcyRhZGRFZGl0Rm9ybSA9IHRoaXMuYWRkRWRpdEZvcm0sCiAgICAgICAgbG5nID0gX3RoaXMkYWRkRWRpdEZvcm0ubG5nLAogICAgICAgIGxhdCA9IF90aGlzJGFkZEVkaXRGb3JtLmxhdDsKICAgICAgdGhpcy5jdXN0b21UYWdQb2ludHMoW2xuZywgbGF0XSk7CiAgICB9LAogICAgLy8g5omT5byA6aG16Z2i5omn6KGMCiAgICBvcGVuUGFnZTogZnVuY3Rpb24gb3BlblBhZ2UoKSB7CiAgICAgIHRoaXMuZ2V0Um9hZE9wdGlvbnMoKTsKICAgICAgLy8gaWYgKCF0aGlzLnRlYW1UcmVlRGF0YS5sZW5ndGgpIHRoaXMuZ2V0T3JnVHJlZURhdGEoKQogICAgICAvLyB0aGlzLiRyZWZzLm1pbmVNYXA/Lm1hcD8ucmVzaXplKCkKICAgIH0sCiAgICAvLyDlsZXnpLrlvLnlsYIKICAgIHNob3dEaWFsb2c6IGZ1bmN0aW9uIHNob3dEaWFsb2coZGlhbG9nTmFtZSkgewogICAgICBpZiAoIWRpYWxvZ05hbWUpIHJldHVybjsKICAgICAgdGhpc1tkaWFsb2dOYW1lICsgJ0RpYWxvZyddID0gdHJ1ZTsKICAgIH0sCiAgICBzaG93QXBwb2ludERpYWxvZzogZnVuY3Rpb24gc2hvd0FwcG9pbnREaWFsb2coKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICB0aGlzLiRyZWZzLmFkZEVkaXRGb3JtLnZhbGlkYXRlKC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIF9yZWYzID0gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU2KHZhbGlkLCBvYmplY3QpIHsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNiQoX2NvbnRleHQ2KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ni5wcmV2ID0gX2NvbnRleHQ2Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkKSB7CiAgICAgICAgICAgICAgICAgIF90aGlzOS4kbWVzc2FnZS53YXJuaW5nKCJcdTY3MDkiLmNvbmNhdChPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCwgIlx1NEUyQVx1NUI1N1x1NkJCNVx1NjcyQVx1OTAxQVx1OEZDN1x1NjgyMVx1OUE4Q1x1RkYwQ1x1OEJGN1x1NkI2M1x1Nzg2RVx1NTg2Qlx1NTE5OVx1ODg2OFx1NTM1NVx1NTE4NVx1NUJCOVx1MzAwMiIpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIF90aGlzOS5hcHBvaW50RGlhbG9nID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDYuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9LCBfY2FsbGVlNik7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gsIF94MikgewogICAgICAgICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfSgpKTsKICAgIH0sCiAgICBvZmZQYWdlOiBmdW5jdGlvbiBvZmZQYWdlKCkgewogICAgICB0aGlzLmNoYW5nZVBhZ2UoJ1RhYmxlUGFnZScsICdlZGl0Jyk7CiAgICB9LAogICAgLy8g5YWz6Zet6aG16Z2i5omn6KGMCiAgICBjbG9zZVBhZ2U6IGZ1bmN0aW9uIGNsb3NlUGFnZSgpIHsKICAgICAgdmFyIF90aGlzMTAgPSB0aGlzOwogICAgICB2YXIgcHViU3ViID0gdGhpcy5wdWJTdWIsCiAgICAgICAgYWRkRWRpdFJ1bGVzID0gdGhpcy5hZGRFZGl0UnVsZXMsCiAgICAgICAgcm9hZE9wdGlvbnMgPSB0aGlzLnJvYWRPcHRpb25zOwogICAgICAvLyDph43nva7nu4Tku7bmlbDmja4KICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLiRkYXRhLCB0aGlzLiRvcHRpb25zLmRhdGEuY2FsbCh0aGlzKSwgewogICAgICAgIHB1YlN1YjogcHViU3ViLAogICAgICAgIGFkZEVkaXRSdWxlczogYWRkRWRpdFJ1bGVzLAogICAgICAgIHJvYWRPcHRpb25zOiByb2FkT3B0aW9ucwogICAgICB9KTsKICAgICAgLy8gdGhpcy4kcmVmcy5taW5lTWFwPy5yZXNldE1hcChfID0+IHRoaXMubWFwTG9hZGluZyA9IGZhbHNlKSAvLyDph43nva7lnLDlm74KICAgICAgdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICBfdGhpczEwLiRyZWZzLmFkZEVkaXRGb3JtLiRlbC5zY3JvbGxUb3AgPSAwOwogICAgICAgIF90aGlzMTAuJHJlZnMuYWRkRWRpdEZvcm0uY2xlYXJWYWxpZGF0ZSgpOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDojrflj5bor6bmg4UKICAgIGdldERldGFpbDogZnVuY3Rpb24gZ2V0RGV0YWlsKGlkKSB7CiAgICAgIHZhciBfdGhpczExID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNygpIHsKICAgICAgICB2YXIgX3RoaXMxMSRhZGRFZGl0Rm9ybSwgX3RoaXMxMSRhZGRFZGl0Rm9ybSRyLCByb2FkSWQsIF90aGlzMTEkYWRkRWRpdEZvcm0kcCwgcGVnU1ZhbCwgX3RoaXMxMSRhZGRFZGl0Rm9ybSRwMiwgcGVnRVZhbCwgc3RhcnRQZWdBcnIsIGVuZFBlZ0FycjsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTckKF9jb250ZXh0NykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ3LnByZXYgPSBfY29udGV4dDcubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ3LnByZXYgPSAwOwogICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gdGFibGVEZXRhaWwoaWQpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3RoaXMxMS5hZGRFZGl0Rm9ybSA9IF9jb250ZXh0Ny5zZW50OwogICAgICAgICAgICAgIF90aGlzMTEkYWRkRWRpdEZvcm0gPSBfdGhpczExLmFkZEVkaXRGb3JtLCBfdGhpczExJGFkZEVkaXRGb3JtJHIgPSBfdGhpczExJGFkZEVkaXRGb3JtLnJvYWRJZCwgcm9hZElkID0gX3RoaXMxMSRhZGRFZGl0Rm9ybSRyID09PSB2b2lkIDAgPyAnJyA6IF90aGlzMTEkYWRkRWRpdEZvcm0kciwgX3RoaXMxMSRhZGRFZGl0Rm9ybSRwID0gX3RoaXMxMSRhZGRFZGl0Rm9ybS5wZWdTVmFsLCBwZWdTVmFsID0gX3RoaXMxMSRhZGRFZGl0Rm9ybSRwID09PSB2b2lkIDAgPyAnJyA6IF90aGlzMTEkYWRkRWRpdEZvcm0kcCwgX3RoaXMxMSRhZGRFZGl0Rm9ybSRwMiA9IF90aGlzMTEkYWRkRWRpdEZvcm0ucGVnRVZhbCwgcGVnRVZhbCA9IF90aGlzMTEkYWRkRWRpdEZvcm0kcDIgPT09IHZvaWQgMCA/ICcnIDogX3RoaXMxMSRhZGRFZGl0Rm9ybSRwMjsKICAgICAgICAgICAgICBpZiAocGVnU1ZhbCkgewogICAgICAgICAgICAgICAgc3RhcnRQZWdBcnIgPSBwZWdTVmFsLnNwbGl0KCcrJyk7CiAgICAgICAgICAgICAgICBfdGhpczExLmFkZEVkaXRGb3JtLnN0YXJ0UGVnID0gc3RhcnRQZWdBcnJbMF0uc2xpY2UoMSk7CiAgICAgICAgICAgICAgICBfdGhpczExLmFkZEVkaXRGb3JtLnN0YXJ0UGVnQWRkID0gc3RhcnRQZWdBcnJbMV07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChwZWdFVmFsKSB7CiAgICAgICAgICAgICAgICBlbmRQZWdBcnIgPSBwZWdFVmFsLnNwbGl0KCcrJyk7CiAgICAgICAgICAgICAgICBfdGhpczExLmFkZEVkaXRGb3JtLmVuZFBlZyA9IGVuZFBlZ0FyclswXS5zbGljZSgxKTsKICAgICAgICAgICAgICAgIF90aGlzMTEuYWRkRWRpdEZvcm0uZW5kUGVnQWRkID0gZW5kUGVnQXJyWzFdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfdGhpczExLnJvYWRDaGFuZ2Uocm9hZElkKTsKICAgICAgICAgICAgY2FzZSA4OgogICAgICAgICAgICAgIF9jb250ZXh0Ny5wcmV2ID0gODsKICAgICAgICAgICAgICBfdGhpczExLmZvcm1Mb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ny5maW5pc2goOCk7CiAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ny5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTcsIG51bGwsIFtbMCwsIDgsIDExXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDkv53lrZgKICAgIGhhbmRsZVNhdmU6IGZ1bmN0aW9uIGhhbmRsZVNhdmUoKSB7CiAgICAgIHZhciBfdGhpczEyID0gdGhpczsKICAgICAgdGhpcy4kcmVmcy5hZGRFZGl0Rm9ybS52YWxpZGF0ZSgvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBfcmVmNCA9IF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlOCh2YWxpZCwgb2JqZWN0KSB7CiAgICAgICAgICB2YXIgZGF0YSwgcm9hZEluZm8sIG15SW50ZXJGYWNlLCBfeWllbGQkbXlJbnRlckZhY2UsIHN0YXRlLCBtZXNzYWdlLCB2YWx1ZTsKICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlOCQoX2NvbnRleHQ4KSB7CiAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0OC5wcmV2ID0gX2NvbnRleHQ4Lm5leHQpIHsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ4Lm5leHQgPSA0OwogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF90aGlzMTIuJG1lc3NhZ2Uud2FybmluZygiXHU2NzA5Ii5jb25jYXQoT2JqZWN0LmtleXMob2JqZWN0KS5sZW5ndGgsICJcdTRFMkFcdTVCNTdcdTZCQjVcdTY3MkFcdTkwMUFcdThGQzdcdTY4MjFcdTlBOENcdUZGMENcdThCRjdcdTZCNjNcdTc4NkVcdTU4NkJcdTUxOTlcdTg4NjhcdTUzNTVcdTUxODVcdTVCQjlcdTMwMDIiKSk7CiAgICAgICAgICAgICAgICBfY29udGV4dDgubmV4dCA9IDI0OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgX3RoaXMxMi5zYXZlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShfdGhpczEyLmFkZEVkaXRGb3JtKSk7CiAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdGFydFBlZyAmJiBkYXRhLnN0YXJ0UGVnQWRkKSB7CiAgICAgICAgICAgICAgICAgIGRhdGEucGVnU1ZhbCA9ICdrJyArIChkYXRhLnN0YXJ0UGVnIHx8ICcnKSArICcrJyArIChkYXRhLnN0YXJ0UGVnQWRkIHx8ICcnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChkYXRhLmVuZFBlZyAmJiBkYXRhLmVuZFBlZ0FkZCkgewogICAgICAgICAgICAgICAgICBkYXRhLnBlZ0VWYWwgPSAnaycgKyAoZGF0YS5lbmRQZWcgfHwgJycpICsgJysnICsgKGRhdGEuZW5kUGVnQWRkIHx8ICcnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRhdGEuZXZlbnRUaW1lID0gbW9tZW50KGRhdGEuZXZlbnRUaW1lKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKTsKICAgICAgICAgICAgICAgIHJvYWRJbmZvID0gX3RoaXMxMi5yb2FkT3B0aW9ucy5maW5kKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmlkID09PSBkYXRhLnJvYWRJZDsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgZGF0YS5yb2FkTmFtZSA9IHJvYWRJbmZvLm5hbWU7CiAgICAgICAgICAgICAgICBkYXRhLnJvYWRDb2RlID0gcm9hZEluZm8uY29kZTsKICAgICAgICAgICAgICAgIG15SW50ZXJGYWNlID0gX3RoaXMxMi5pZCA/IHRhYmxlRWRpdCA6IHRhYmxlQWRkOwogICAgICAgICAgICAgICAgX2NvbnRleHQ4LnByZXYgPSAxMzsKICAgICAgICAgICAgICAgIF9jb250ZXh0OC5uZXh0ID0gMTY7CiAgICAgICAgICAgICAgICByZXR1cm4gbXlJbnRlckZhY2UoZGF0YSk7CiAgICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgICAgIF95aWVsZCRteUludGVyRmFjZSA9IF9jb250ZXh0OC5zZW50OwogICAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkbXlJbnRlckZhY2Uuc3RhdGU7CiAgICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJG15SW50ZXJGYWNlLm1lc3NhZ2U7CiAgICAgICAgICAgICAgICB2YWx1ZSA9IF95aWVsZCRteUludGVyRmFjZS52YWx1ZTsKICAgICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgICBtZXNzYWdlID0gX3RoaXMxMi5pZCA/ICfnvJbovpEnIDogJ+aWsOWinic7CiAgICAgICAgICAgICAgICAgIF90aGlzMTIuJG1lc3NhZ2Uuc3VjY2VzcygiXHU0RkREXHU1QjU4XHU2MjEwXHU1MjlGIik7CiAgICAgICAgICAgICAgICAgIF90aGlzMTIuY2hhbmdlUGFnZSgnVGFibGVQYWdlJywgX3RoaXMxMi5pZCA/ICdlZGl0JyA6ICdhZGQnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICAgICAgX2NvbnRleHQ4LnByZXYgPSAyMTsKICAgICAgICAgICAgICAgIF90aGlzMTIuc2F2ZUxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDguZmluaXNoKDIxKTsKICAgICAgICAgICAgICBjYXNlIDI0OgogICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ4LnN0b3AoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwgX2NhbGxlZTgsIG51bGwsIFtbMTMsLCAyMSwgMjRdXSk7CiAgICAgICAgfSkpOwogICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gzLCBfeDQpIHsKICAgICAgICAgIHJldHVybiBfcmVmNC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIH07CiAgICAgIH0oKSk7CiAgICB9LAogICAgLy8g5pS55Y+Y6aG16Z2iCiAgICBjaGFuZ2VQYWdlOiBmdW5jdGlvbiBjaGFuZ2VQYWdlKCkgewogICAgICB2YXIgcGFnZU5hbWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICcnOwogICAgICB2YXIgdHlwZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogJyc7CiAgICAgIGlmICghcGFnZU5hbWUpIHJldHVybjsKICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlUGFnZScsIHBhZ2VOYW1lLCBmdW5jdGlvbiAoXykgewogICAgICAgIFB1YlN1Yi5wdWJsaXNoKHBhZ2VOYW1lLCB7CiAgICAgICAgICB0eXBlOiB0eXBlCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfQogIH0sCiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHsKICAgIC8vIOWcqOe7hOS7tumUgOavgeS5i+WJjSDmuIXpmaTorqLpmIXmtojmga8KICAgIFB1YlN1Yi51bnN1YnNjcmliZSh0aGlzLnB1YlN1Yik7CiAgfQp9Ow=="},null]}