{"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\\TablePage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\commandDispatch\\EventManagement\\components\\TablePage\\index.vue","mtime":1751451388948},{"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:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5yZWR1Y2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLnJlZHVjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi51cmwuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLnRvLWpzb24uanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuZGVsZXRlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmhhcy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5zaXplLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCB7IGRpY3Rpb25hcnlFc2NhcGUsIGdldERpY3Rpb25hcnlCeUNvZGUgfSBmcm9tICdAL3V0aWxzL2RpY3Rpb25hcnknOwppbXBvcnQgeyByZWZpbmVSZXF1ZXN0Qm9keSwgc2V0UXVlcnlWYWx1ZSB9IGZyb20gJ0AvdXRpbHMvcmVxdWVzdFdyYXBwZXJzJzsKaW1wb3J0IHBhZ2luYXRpb24gZnJvbSAnQC9jb21wb25lbnRzL1N1cGVyUGFnaW5hdGlvbi9pbmRleC52dWUnOwppbXBvcnQgeyBUYWJsZU1peGluIH0gZnJvbSAnQC9taXhpbnMvdGFibGVNaXhpbic7CmltcG9ydCB0cmVlU2lkZSBmcm9tICdAL2NvbXBvbmVudHMvdHJlZVNpZGUvaW5kZXgudnVlJzsKaW1wb3J0IFNlYXJjaENvbW1vbiBmcm9tICdAL2NvbXBvbmVudHMvU2VhcmNoQ29tbW9uL2luZGV4LnZ1ZSc7CmltcG9ydCBGaW5pc2hEaWFsb2cgZnJvbSAnLi4vRmluaXNoRGlhbG9nL2luZGV4LnZ1ZSc7CmltcG9ydCB7IGV2ZW50UmV2b2NhdGlvbiwgZXhwb3J0RGF0YUZpbGUsIHRhYmxlRGF0YSwgdGFibGVEZWxldGUgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvY29tbWFuZERpc3BhdGNoL2V2ZW50TWFuYWdlbWVudCc7CmltcG9ydCBUcmVlRGlhbG9nIGZyb20gJy4vY29tcG9uZW50cy9UcmVlRGlhbG9nL2luZGV4LnZ1ZSc7CmltcG9ydCBQdWJTdWIgZnJvbSAncHVic3ViLWpzJzsKaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnOwppbXBvcnQgRmlsZURpYWxvZyBmcm9tICdAL3ZpZXdzL3BhdHJvbEFuZFJlc2N1ZS9jb21tYW5kRGlzcGF0Y2gvRXZlbnRNYW5hZ2VtZW50L2NvbXBvbmVudHMvRmlsZURpYWxvZy9pbmRleC52dWUnOwppbXBvcnQgeyBnZXRUcmVlIH0gZnJvbSAnQC9hcGkvdHJlZSc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnVGFibGVQYWdlJywKICBjb21wb25lbnRzOiB7CiAgICBGaWxlRGlhbG9nOiBGaWxlRGlhbG9nLAogICAgVHJlZURpYWxvZzogVHJlZURpYWxvZywKICAgIHBhZ2luYXRpb246IHBhZ2luYXRpb24sCiAgICB0cmVlU2lkZTogdHJlZVNpZGUsCiAgICBTZWFyY2hDb21tb246IFNlYXJjaENvbW1vbiwKICAgIEZpbmlzaERpYWxvZzogRmluaXNoRGlhbG9nCiAgfSwKICBtaXhpbnM6IFtUYWJsZU1peGluXSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgZmlsZUluZm86IHt9LAogICAgICBmaWxlU2hvd0RpYWxvZzogZmFsc2UsCiAgICAgIGN1cnJlbnRFdmVudElkOiBudWxsLAogICAgICBmaW5pc2hEaWFsb2c6IGZhbHNlLAogICAgICBkb3dubG9hZExvYWRpbmc6IGZhbHNlLAogICAgICBwdWJTdWI6IG51bGwsCiAgICAgIHRhYmxlTWF4SGVpZ2h0OiAnNjAwcHgnLAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgdGFibGVMb2FkaW5nOiBmYWxzZSwKICAgICAgdHJlZURhdGE6IFtdLAogICAgICAvL+W3pui+ueagkQogICAgICB0YWJMaXN0OiBbJ+aUv+etluazleinhCddLAogICAgICAvL+W3pui+uXRhYgogICAgICBkZWZhdWx0UHJvcHM6IHsKICAgICAgICBjaGlsZHJlbjogJ2NoaWxkcmVuJywKICAgICAgICBsYWJlbDogJ25hbWUnCiAgICAgIH0sCiAgICAgIHRhYmxlRGF0YTogW10sCiAgICAgIGN1cnJlbnREYXRhRGVsOiBbXSwKICAgICAgb3B0aW9uTGlzdDogW3sKICAgICAgICB0aXRsZTogJ+S6i+S7tuWNleWPtycsCiAgICAgICAgcHJvcDogWydFVkVOVF9OT18nXSwKICAgICAgICB0eXBlOiAnaW5wdXQnLAogICAgICAgIGRlZmF1bHQ6IHRydWUKICAgICAgfSwgewogICAgICAgIHRpdGxlOiAn5LqL5Lu257G75Z6LJywKICAgICAgICBwcm9wOiBbJ2V2ZW50X1R5cGVfJ10sCiAgICAgICAgdHlwZTogJ3NlbGVjdCcsCiAgICAgICAgb3B0aW9uOiBnZXREaWN0aW9uYXJ5QnlDb2RlKCdseF9zamx4eHEnKSwKICAgICAgICBtdWx0aXBsZTogdHJ1ZSwKICAgICAgICBkZWZhdWx0OiBmYWxzZQogICAgICB9LCB7CiAgICAgICAgdGl0bGU6ICfkuovku7bmnaXmupAnLAogICAgICAgIHByb3A6IFsnZXZlbnRfU3JjXyddLAogICAgICAgIHR5cGU6ICdzZWxlY3QnLAogICAgICAgIG9wdGlvbjogZ2V0RGljdGlvbmFyeUJ5Q29kZSgnc2pseScpLAogICAgICAgIG11bHRpcGxlOiB0cnVlCiAgICAgIH0sIHsKICAgICAgICB0aXRsZTogJ+S6i+S7tueKtuaAgScsCiAgICAgICAgcHJvcDogWydFVkVOVF9TVEFUVVNfJ10sCiAgICAgICAgdHlwZTogJ3NlbGVjdCcsCiAgICAgICAgb3B0aW9uOiBnZXREaWN0aW9uYXJ5QnlDb2RlKCdzal96dCcpLAogICAgICAgIG11bHRpcGxlOiB0cnVlCiAgICAgIH1dLAogICAgICBwYXJhbXM6IHsKICAgICAgICBwYWdlQmVhbjogewogICAgICAgICAgcGFnZVNpemU6IDIwLAogICAgICAgICAgcGFnZTogMSwKICAgICAgICAgIHRvdGFsOiAwCiAgICAgICAgfSwKICAgICAgICBxdWVyeXM6IFt7CiAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICBwcm9wZXJ0eTogJ3JvYWRJZCcKICAgICAgICB9LCB7CiAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICBwcm9wZXJ0eTogJ2V2ZW50X1R5cGVfJywKICAgICAgICAgIHZhbHVlOiAnJwogICAgICAgIH0sIHsKICAgICAgICAgIG9wZXJhdGlvbjogJ0lOJywKICAgICAgICAgIHByb3BlcnR5OiAnZXZlbnRfU3JjXycsCiAgICAgICAgICB2YWx1ZTogJycKICAgICAgICB9LCB7CiAgICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgICBwcm9wZXJ0eTogJ0VWRU5UX05PXycsCiAgICAgICAgICB2YWx1ZTogJycKICAgICAgICB9LCB7CiAgICAgICAgICBvcGVyYXRpb246ICdCRVRXRUVOJywKICAgICAgICAgIHByb3BlcnR5OiAnZXZlbnRfdGltZV8nLAogICAgICAgICAgdmFsdWU6IFttb21lbnQoKS5zdGFydE9mKCdtb250aCcpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpLCBtb21lbnQoKS5lbmRPZignbW9udGgnKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKV0KICAgICAgICB9LCB7CiAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICBwcm9wZXJ0eTogJ0VWRU5UX1NUQVRVU18nLAogICAgICAgICAgdmFsdWU6ICcnCiAgICAgICAgfV0sCiAgICAgICAgc29ydGVyOiBbewogICAgICAgICAgZGlyZWN0aW9uOiAnREVTQycsCiAgICAgICAgICBwcm9wZXJ0eTogJ2NyZWF0ZV90aW1lXyAnCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgdHJlZURpYWxvZzogZmFsc2UsCiAgICAgIC8vIOenkeebruS/oeaBr+W8ueWxggogICAgICB0cmVlSXRlbUlkOiAnJywKICAgICAgLy8g5qCR5b2i55uu5b2VaWQKICAgICAgdHJlZUl0ZW06IHt9LAogICAgICAvLyDmoJHlvaLoioLngrnpgInkuK3lr7nosaEKICAgICAgdHJlZUl0ZW1QYXJlbnRJZDogJycgLy8g5qCR5b2i55uu5b2V54i257qnaWQKICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIC8vIOiOt+WPluagkeW9ouebruW9lS0KICAgIHRoaXMuZ2V0T3JnVHJlZURhdGEoZnVuY3Rpb24gKHRyZWVEYXRhKSB7CiAgICAgIC8vIOWbnuiwg+S4rem7mOiupOmAieS4reesrOS4gOmhueW5tuWwhuWFtmlk5L2c5Li65Y+C5pWw6K+35rGC6KGo5qC8CiAgICAgIF90aGlzLnRyZWVJdGVtID0gdHJlZURhdGFbMF0gfHwge307CiAgICAgIHZhciBhcnJheSA9IFtdOwogICAgICBpZiAoX3RoaXMudHJlZUl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkgewogICAgICAgIGFycmF5ID0gX3RoaXMuZXh0cmFjdElkcyhfdGhpcy50cmVlSXRlbSk7CiAgICAgIH0KICAgICAgX3RoaXMuJG5leHRUaWNrKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgdmFyIF90aGlzJCRyZWZzJHRyZWVTaWRlLCBfdHJlZURhdGEkLCBfdGhpcyQkcmVmcyR0cmVlU2lkZTI7CiAgICAgICAgKF90aGlzJCRyZWZzJHRyZWVTaWRlID0gX3RoaXMuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlID09PSB2b2lkIDAgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUuc2V0Q3VycmVudEtleSgoX3RyZWVEYXRhJCA9IHRyZWVEYXRhWzBdKSA9PT0gbnVsbCB8fCBfdHJlZURhdGEkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdHJlZURhdGEkLmlkKTsgLy/pgJrov4cgJHJlZnMg6I635Y+WdHJlZVNpZGXnu4Tku7blvJXnlKjvvIzlubbosIPnlKggc2V0Q3VycmVudEtleeaWueazleiuvue9ruW9k+WJjemAieS4reeahOagkeiKgueCueOAggogICAgICAgIChfdGhpcyQkcmVmcyR0cmVlU2lkZTIgPSBfdGhpcy4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyID09PSB2b2lkIDAgfHwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyLmV4cGFuZEhhbmRsZSh0cnVlLCAyKTsKICAgICAgfSk7CiAgICAgIHNldFF1ZXJ5VmFsdWUoX3RoaXMucGFyYW1zLCAncm9hZElkJywgYXJyYXkpOyAvL+WwhumAieS4reeahOagkeiKgueCueeahCBwYXRoIOiuvue9ruS4uuafpeivouWPguaVsOeahOS4gOmDqOWIhu+8jOeUqOS6juWQjue7reeahOihqOagvOaVsOaNruivt+axguOAggogICAgICBfdGhpcy5sb2FkRGF0YSgpOyAvL+WKoOi9veihqOagvOaVsOaNrgogICAgfSk7CiAgICAvLyB0aGlzLmxvYWREYXRhKCkKICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgIHRoaXMucHViU3ViID0gUHViU3ViLnN1YnNjcmliZSgnVGFibGVQYWdlJywgZnVuY3Rpb24gKF8sIGRhdGEpIHsKICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHsKICAgICAgICBjYXNlICdhZGQnOgogICAgICAgICAgX3RoaXMyLnBhcmFtcy5wYWdlQmVhbi5wYWdlID0gMTsKICAgICAgICAgIF90aGlzMi5sb2FkRGF0YSgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnZWRpdCc6CiAgICAgICAgICBfdGhpczIubG9hZERhdGEoKTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9KTsKICB9LAogIG1ldGhvZHM6IHsKICAgIGV4dHJhY3RJZHM6IGZ1bmN0aW9uIGV4dHJhY3RJZHMobm9kZSkgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgdmFyIGlkcyA9IFtdOwogICAgICAvLyDlpoLmnpzlvZPliY3oioLngrnmnIkgY2hpbGRyZW7vvIzliJnpgJLlvZLmj5Dlj5YKICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHsKICAgICAgICBpZHMgPSBub2RlLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHsKICAgICAgICAgIHJldHVybiBjaGlsZC5pZDsKICAgICAgICB9KTsgLy8g5o+Q5Y+W5b2T5YmN6IqC54K555qEIGlkCiAgICAgICAgLy8g6YCS5b2S5o+Q5Y+W5a2Q6IqC54K555qEIGlkCiAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkgewogICAgICAgICAgaWRzID0gaWRzLmNvbmNhdChfdGhpczMuZXh0cmFjdElkcyhjaGlsZCkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHJldHVybiBpZHM7CiAgICB9LAogICAgZmlsZVByZXZpZXdDaGFuZ2U6IGZ1bmN0aW9uIGZpbGVQcmV2aWV3Q2hhbmdlKHJvdykgewogICAgICB0aGlzLmZpbGVJbmZvID0gcm93OwogICAgICB0aGlzLmZpbGVTaG93RGlhbG9nID0gdHJ1ZTsKICAgIH0sCiAgICBmaW5pc2hDaGFuZ2U6IGZ1bmN0aW9uIGZpbmlzaENoYW5nZSgpIHsKICAgICAgdGhpcy5wYXJhbXMucGFnZUJlYW4ucGFnZSA9IDE7CiAgICAgIHRoaXMubG9hZERhdGEoKTsKICAgIH0sCiAgICAvLyDml7bpl7TojIPlm7TliIfmjaIKICAgIGRhdGVQaWNrZXJDaGFuZ2U6IGZ1bmN0aW9uIGRhdGVQaWNrZXJDaGFuZ2UodmFsKSB7CiAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdldmVudF90aW1lXycsIHZhbCk7CiAgICAgIHRoaXMucGFyYW1zLnBhZ2VCZWFuLnBhZ2UgPSAxOwogICAgICB0aGlzLmxvYWREYXRhKCk7CiAgICB9LAogICAgLy8gaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHJvdykgewogICAgLy8gdGhpcy5jdXJyZW50RGF0YURlbCA9IHJvdy5maWx0ZXIoaXRlbSA9PiBpdGVtLmV2ZW50U3RhdHVzIDwgMSkKICAgIC8vIHRoaXMuY3VycmVudERhdGFEZWwgPSB0aGlzLmN1cnJlbnREYXRhRGVsLm1hcChpdGVtID0+IGl0ZW0uaWQpCiAgICAvLyB9LAogICAgZXhwb3J0RGF0YTogZnVuY3Rpb24gZXhwb3J0RGF0YSgpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgcGFyYW1zLCByZXNwb25zZSwgYmxvYiwgZG93bmxvYWRVcmwsIGxpbms7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXM0LmRvd25sb2FkTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDE7CiAgICAgICAgICAgICAgcGFyYW1zID0gewogICAgICAgICAgICAgICAgZ3JvdXBSZWxhdGlvbjogJ0FORCcsCiAgICAgICAgICAgICAgICBncm91cFRyZWU6IHt9LAogICAgICAgICAgICAgICAgcGFnZUJlYW46IHsKICAgICAgICAgICAgICAgICAgcGFnZTogMSwKICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IC0xLAogICAgICAgICAgICAgICAgICBzaG93VG90YWw6IHRydWUKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBwYXJhbXM6IHt9LAogICAgICAgICAgICAgICAgcXVlcnlzOiBbewogICAgICAgICAgICAgICAgICBncm91cDogJ21haW4nLAogICAgICAgICAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICAgICAgICAgIHBhcmVudEdyb3VwOiAnJywKICAgICAgICAgICAgICAgICAgcHJvcGVydHk6ICdlaS5pZF8nLAogICAgICAgICAgICAgICAgICByZWxhdGlvbjogJ0FORCcsCiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdGhpczQuY3VycmVudERhdGFEZWwKICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgc29ydGVyOiBbewogICAgICAgICAgICAgICAgICBkaXJlY3Rpb246ICdBU0MnLAogICAgICAgICAgICAgICAgICBwcm9wZXJ0eTogJycKICAgICAgICAgICAgICAgIH1dCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNTsKICAgICAgICAgICAgICByZXR1cm4gZXhwb3J0RGF0YUZpbGUocGFyYW1zKTsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgIHJlc3BvbnNlID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICAvLyDliJvlu7pCbG9i5a+56LGhCiAgICAgICAgICAgICAgYmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0sIHsKICAgICAgICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi96aXAnCiAgICAgICAgICAgICAgfSk7IC8vIOWIm+W7uuS4i+i9vemTvuaOpQogICAgICAgICAgICAgIGRvd25sb2FkVXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CiAgICAgICAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICAgICAgICAgICAgICBsaW5rLmhyZWYgPSBkb3dubG9hZFVybDsKICAgICAgICAgICAgICAvLyDorr7nva7mlofku7blkI3vvIjlj6/ku6XmoLnmja7pnIDopoHosIPmlbTvvIkKICAgICAgICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCAn56qB5Y+R5LqL5Lu25qGj5qGILnppcCcpOwogICAgICAgICAgICAgIC8vIOinpuWPkeS4i+i9vQogICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7CiAgICAgICAgICAgICAgbGluay5jbGljaygpOwogICAgICAgICAgICAgIC8vIOa4heeQhgogICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7CiAgICAgICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwoZG93bmxvYWRVcmwpOwogICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKCflr7zlh7rmiJDlip8nKTsKICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMTY7CiAgICAgICAgICAgICAgX3RoaXM0LmRvd25sb2FkTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goMTYpOwogICAgICAgICAgICBjYXNlIDE5OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSwgbnVsbCwgW1sxLCwgMTYsIDE5XV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBoYW5kbGVGaW5pc2g6IGZ1bmN0aW9uIGhhbmRsZUZpbmlzaCgpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHRoaXMuY2xpY2tUaW1lciA9IHRydWU7CiAgICAgIHRoaXMuJGNvbmZpcm0oJ+ehruWumuWujOe7k+mAieS4reeahOS6i+S7tuS/oeaBr+WQl++8nycsICfmj5DnpLonLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7orqQnLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICB9KS50aGVuKC8qI19fUFVSRV9fKi9fYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7CiAgICAgICAgdmFyIGlkcywgX3lpZWxkJHRhYmxlRmluaXNoLCBzdGF0ZSwgbWVzc2FnZSwgX3RoaXM1JHBhcmFtcyRwYWdlQmVhLCBwYWdlLCBwYWdlU2l6ZSwgdG90YWwsIHRvdGFsUGFnZXM7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGlkcyA9IF90aGlzNS5jdXJyZW50RGF0YURlbC5qb2luKCcmaWRzPScpOwogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gdGFibGVGaW5pc2goJ2lkcz0nICsgaWRzKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCR0YWJsZUZpbmlzaCA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJHRhYmxlRmluaXNoLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkdGFibGVGaW5pc2gubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoIXN0YXRlKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE1OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF90aGlzNS4kbWVzc2FnZS5zdWNjZXNzKCJcdTRFOEJcdTRFRjZcdTVCOENcdTdFRDNcdTYyMTBcdTUyOUYiKTsKICAgICAgICAgICAgICBfdGhpczUkcGFyYW1zJHBhZ2VCZWEgPSBfdGhpczUucGFyYW1zLnBhZ2VCZWFuLCBwYWdlID0gX3RoaXM1JHBhcmFtcyRwYWdlQmVhLnBhZ2UsIHBhZ2VTaXplID0gX3RoaXM1JHBhcmFtcyRwYWdlQmVhLnBhZ2VTaXplLCB0b3RhbCA9IF90aGlzNSRwYXJhbXMkcGFnZUJlYS50b3RhbDsKICAgICAgICAgICAgICB0b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRvdGFsIC8gcGFnZVNpemUpOyAvLyDorqHnrpfmgLvpobXmlbAKICAgICAgICAgICAgICBpZiAodG90YWxQYWdlcyA+IDEgJiYgcGFnZSA9PT0gdG90YWxQYWdlcykgewogICAgICAgICAgICAgICAgaWYgKF90aGlzNS50YWJsZURhdGEubGVuZ3RoID09PSAxKSB7CiAgICAgICAgICAgICAgICAgIC8vIOW9k+WJjemhteWPquacieS4gOadoeaVsOaNrgogICAgICAgICAgICAgICAgICBfdGhpczUucGFyYW1zLnBhZ2VCZWFuLnBhZ2UgLT0gMTsgLy8g6L+U5Zue5YmN5LiA6aG1CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTM7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNS5sb2FkRGF0YSgpOwogICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTY7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLmVycm9yKG1lc3NhZ2UpOwogICAgICAgICAgICBjYXNlIDE2OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUyKTsKICAgICAgfSkpKS5jYXRjaChmdW5jdGlvbiAoXykgewogICAgICAgIHJldHVybiBfOwogICAgICB9KTsKICAgIH0sCiAgICAvLyDojrflj5blhazlj7jmoJEt5byC5q2l5pa55rOV77yM55So5LqO5LuO5ZCO56uv6I635Y+W5qCR5b2i5pWw5o2uCiAgICBnZXRPcmdUcmVlRGF0YTogZnVuY3Rpb24gZ2V0T3JnVHJlZURhdGEoY2FsbGJhY2spIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgdmFyIF95aWVsZCRnZXRUcmVlLCB2YWx1ZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAwOwogICAgICAgICAgICAgIF90aGlzNi50cmVlTG9hZGluZyA9IHRydWU7IC8v5byA5aeL5Yqg6L295pe25pi+56S65Yqg6L2954q25oCBCiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA0OwogICAgICAgICAgICAgIHJldHVybiBnZXRUcmVlKCk7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBfeWllbGQkZ2V0VHJlZSA9IF9jb250ZXh0My5zZW50OwogICAgICAgICAgICAgIHZhbHVlID0gX3lpZWxkJGdldFRyZWUudmFsdWU7CiAgICAgICAgICAgICAgLy8g6LCD55SoIEFQSSDojrflj5bmoJHlvaLmlbDmja4KICAgICAgICAgICAgICBfdGhpczYudHJlZURhdGEgPSBbdmFsdWVdOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSA3OwogICAgICAgICAgICAgIF90aGlzNi50cmVlTG9hZGluZyA9IGZhbHNlOyAvLyDml6DorrrmiJDlip/miJblpLHotKXvvIzpg73lhbPpl63liqDovb3nirbmgIEKICAgICAgICAgICAgICBjYWxsYmFjayAmJiBjYWxsYmFjayhfdGhpczYudHJlZURhdGEpOyAvLyDlpoLmnpzmj5Dkvpvkuoblm57osIPlh73mlbDvvIzliJnosIPnlKjlroPlubbkvKDlhaXmoJHlvaLmlbDmja4KICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLmZpbmlzaCg3KTsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMywgbnVsbCwgW1swLCwgNywgMTFdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIHRyYW5zZm9ybVRyZWVEYXRhOiBmdW5jdGlvbiB0cmFuc2Zvcm1UcmVlRGF0YShkYXRhKSB7CiAgICAgIHJldHVybiB7CiAgICAgICAgbmFtZTogZGF0YS5uYW1lLAogICAgICAgIGlkOiBkYXRhLmlkLAogICAgICAgIGNoaWxkcmVuOiBkYXRhLmNoaWxkcmVuLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBjaGlsZCkgewogICAgICAgICAgYWNjLnB1c2goewogICAgICAgICAgICBpZDogY2hpbGQuaWQsCiAgICAgICAgICAgIG5hbWU6IGNoaWxkLm5hbWUsCiAgICAgICAgICAgIHBhdGg6IGNoaWxkLnBhdGgsCiAgICAgICAgICAgIGNoaWxkcmVuOiBjaGlsZC5yb2FkTGlzdC5tYXAoZnVuY3Rpb24gKHJvYWQpIHsKICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgaWQ6IHJvYWQuaWQsCiAgICAgICAgICAgICAgICBuYW1lOiByb2FkLm5hbWUsCiAgICAgICAgICAgICAgICBwYXRoOiByb2FkLnBhdGgKICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KQogICAgICAgICAgfSk7CiAgICAgICAgICByZXR1cm4gYWNjOwogICAgICAgIH0sIFtdKQogICAgICB9OwogICAgfSwKICAgIC8vIOS6i+S7tuWujOe7kwogICAgaGFuZGxlRXZlbnRDb21wbGV0ZWQ6IGZ1bmN0aW9uIGhhbmRsZUV2ZW50Q29tcGxldGVkKHJvdykgewogICAgICB0aGlzLmN1cnJlbnRFdmVudElkID0gcm93LmlkOwogICAgICB0aGlzLmZpbmlzaERpYWxvZyA9IHRydWU7CiAgICAgIC8vIHRoaXMuJGNvbmZpcm0oJ+ehruWumuS6i+S7tuW3suWujOe7k+WQl++8nycsICfmj5DnpLonLCB7CiAgICAgIC8vICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7orqQnLAogICAgICAvLyAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAvLyAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAvLyB9KS50aGVuKGFzeW5jICgpID0+IHsKICAgICAgLy8gICBsZXQgZGF0YSA9IHsKICAgICAgLy8gICAgIGV2ZW50SWQ6IGlkLAogICAgICAvLyAgICAgZXZlbnROb2RlOiA5CiAgICAgIC8vICAgfQogICAgICAvLyAgIGNvbnN0IHtzdGF0ZX0gPSBhd2FpdCBldmVudENvbXBsZXRlZChkYXRhKQogICAgICAvLyAgIGlmIChzdGF0ZSkgewogICAgICAvLyAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfkuovku7blroznu5PmiJDlip/vvIEnKQogICAgICAvLyAgICAgdGhpcy5sb2FkRGF0YSgpCiAgICAgIC8vICAgfQogICAgICAvLyB9KQogICAgfSwKICAgIHNlbGVjdGFibGU6IGZ1bmN0aW9uIHNlbGVjdGFibGUocm93LCBpbmRleCkgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0sCiAgICAvLyDliKDpmaQKICAgIGhhbmRsZURlbGV0ZTogZnVuY3Rpb24gaGFuZGxlRGVsZXRlKCkgewogICAgICB2YXIgX3RoaXM3ID0gdGhpczsKICAgICAgdGhpcy5jbGlja1RpbWVyID0gdHJ1ZTsKICAgICAgdGhpcy4kY29uZmlybSgn56Gu5a6a5Yig6Zmk6YCJ5Lit55qE5LqL5Lu25L+h5oGv5ZCX77yfJywgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNCgpIHsKICAgICAgICB2YXIgaWRzLCBfeWllbGQkdGFibGVEZWxldGUsIHN0YXRlLCBtZXNzYWdlLCBfdGhpczckcGFyYW1zJHBhZ2VCZWEsIHBhZ2UsIHBhZ2VTaXplLCB0b3RhbCwgdG90YWxQYWdlczsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWRzID0gX3RoaXM3LmN1cnJlbnREYXRhRGVsLmpvaW4oKTsKICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDM7CiAgICAgICAgICAgICAgcmV0dXJuIHRhYmxlRGVsZXRlKGlkcyk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEZWxldGUgPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCR0YWJsZURlbGV0ZS5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJHRhYmxlRGVsZXRlLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKCFzdGF0ZSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAxNTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfdGhpczcuJG1lc3NhZ2Uuc3VjY2VzcygiXHU0RThCXHU0RUY2XHU1MjIwXHU5NjY0XHU2MjEwXHU1MjlGIik7CiAgICAgICAgICAgICAgX3RoaXM3JHBhcmFtcyRwYWdlQmVhID0gX3RoaXM3LnBhcmFtcy5wYWdlQmVhbiwgcGFnZSA9IF90aGlzNyRwYXJhbXMkcGFnZUJlYS5wYWdlLCBwYWdlU2l6ZSA9IF90aGlzNyRwYXJhbXMkcGFnZUJlYS5wYWdlU2l6ZSwgdG90YWwgPSBfdGhpczckcGFyYW1zJHBhZ2VCZWEudG90YWw7CiAgICAgICAgICAgICAgdG90YWxQYWdlcyA9IE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKTsgLy8g6K6h566X5oC76aG15pWwCiAgICAgICAgICAgICAgaWYgKHRvdGFsUGFnZXMgPiAxICYmIHBhZ2UgPT09IHRvdGFsUGFnZXMpIHsKICAgICAgICAgICAgICAgIGlmIChfdGhpczcudGFibGVEYXRhLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICAgICAgICAvLyDlvZPliY3pobXlj6rmnInkuIDmnaHmlbDmja4KICAgICAgICAgICAgICAgICAgX3RoaXM3LnBhcmFtcy5wYWdlQmVhbi5wYWdlIC09IDE7IC8vIOi/lOWbnuWJjeS4gOmhtQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDEzOwogICAgICAgICAgICAgIHJldHVybiBfdGhpczcubG9hZERhdGEoKTsKICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDE2OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgIF90aGlzNy4kbWVzc2FnZS5lcnJvcihtZXNzYWdlKTsKICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICByZXR1cm4gXzsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5pKk5ZueCiAgICByZXZvY2F0aW9uOiBmdW5jdGlvbiByZXZvY2F0aW9uKF9yZWYzKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICB2YXIgaWQgPSBfcmVmMy5pZDsKICAgICAgdGhpcy4kY29uZmlybSgn56Gu5a6a5pKk5Zue5LqL5Lu25ZCX77yfJywgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNSgpIHsKICAgICAgICB2YXIgX3lpZWxkJGV2ZW50UmV2b2NhdGlvLCBzdGF0ZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiBldmVudFJldm9jYXRpb24oaWQpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX3lpZWxkJGV2ZW50UmV2b2NhdGlvID0gX2NvbnRleHQ1LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkZXZlbnRSZXZvY2F0aW8uc3RhdGU7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczguJG1lc3NhZ2Uuc3VjY2Vzcygn5pKk5Zue5oiQ5Yqf77yBJyk7CiAgICAgICAgICAgICAgICBfdGhpczgubG9hZERhdGEoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNSk7CiAgICAgIH0pKSk7CiAgICB9LAogICAgZGljdGlvbmFyeUVzY2FwZTogZGljdGlvbmFyeUVzY2FwZSwKICAgIC8v6I635Y+W56eR55uu5qCRCiAgICBnZXRUcmVlRGF0YTogZnVuY3Rpb24gZ2V0VHJlZURhdGEoY2FsbGJhY2spIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTYoKSB7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU2JChfY29udGV4dDYpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ni5wcmV2ID0gX2NvbnRleHQ2Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0Ni5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gZ2V0VHJlZSgnMycpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX2NvbnRleHQ2LnQwID0gX2NvbnRleHQ2LnNlbnQ7CiAgICAgICAgICAgICAgX2NvbnRleHQ2LnQxID0gewogICAgICAgICAgICAgICAgbmFtZTogJ+inhOeroOWItuW6picsCiAgICAgICAgICAgICAgICBlZGl0OiAxLAogICAgICAgICAgICAgICAgaWQ6ICcnLAogICAgICAgICAgICAgICAgcGFyZW50SWQ6ICcnLAogICAgICAgICAgICAgICAgY2hpbGRyZW46IF9jb250ZXh0Ni50MAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX3RoaXM5LnRyZWVEYXRhID0gW19jb250ZXh0Ni50MV07CiAgICAgICAgICAgICAgLy8g5L+d6K+B6YeN5paw5Yi35paw5qCR5pWw5o2u5ZCO77yM6YCJ5Lit5pWI5p6c5LiN5aSx5pWICiAgICAgICAgICAgICAgaWYgKF90aGlzOS50cmVlSXRlbS5pZCkgewogICAgICAgICAgICAgICAgX3RoaXM5LiRuZXh0VGljayhmdW5jdGlvbiAoXykgewogICAgICAgICAgICAgICAgICB2YXIgX3RoaXM5JCRyZWZzJHRyZWVTaWRlOwogICAgICAgICAgICAgICAgICAoX3RoaXM5JCRyZWZzJHRyZWVTaWRlID0gX3RoaXM5LiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpczkkJHJlZnMkdHJlZVNpZGUgPT09IHZvaWQgMCB8fCBfdGhpczkkJHJlZnMkdHJlZVNpZGUuc2V0Q3VycmVudEtleShfdGhpczkudHJlZUl0ZW0uaWQpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKF90aGlzOS50cmVlRGF0YSk7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNik7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8v6I635Y+W5pWw5o2uCiAgICBsb2FkRGF0YTogZnVuY3Rpb24gbG9hZERhdGEoKSB7CiAgICAgIHZhciBfdGhpczEwID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNygpIHsKICAgICAgICB2YXIgX3lpZWxkJHRhYmxlRGF0YSwgX3lpZWxkJHRhYmxlRGF0YSR0b3RhLCB0b3RhbCwgX3lpZWxkJHRhYmxlRGF0YSRyb3dzLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNyQoX2NvbnRleHQ3KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDcucHJldiA9IF9jb250ZXh0Ny5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpczEwLnRhYmxlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURhdGEocmVmaW5lUmVxdWVzdEJvZHkoX3RoaXMxMC5wYXJhbXMpKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEgPSBfY29udGV4dDcuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkdGFibGVEYXRhJHRvdGEgPSBfeWllbGQkdGFibGVEYXRhLnRvdGFsOwogICAgICAgICAgICAgIHRvdGFsID0gX3lpZWxkJHRhYmxlRGF0YSR0b3RhID09PSB2b2lkIDAgPyAwIDogX3lpZWxkJHRhYmxlRGF0YSR0b3RhOwogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEkcm93cyA9IF95aWVsZCR0YWJsZURhdGEucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHRhYmxlRGF0YSRyb3dzID09PSB2b2lkIDAgPyBbXSA6IF95aWVsZCR0YWJsZURhdGEkcm93czsKICAgICAgICAgICAgICBfdGhpczEwLnBhcmFtcy5wYWdlQmVhbi50b3RhbCA9IHRvdGFsOwogICAgICAgICAgICAgIF90aGlzMTAudGFibGVEYXRhID0gcm93czsKICAgICAgICAgICAgICBfdGhpczEwLnRhYmxlTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDcuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU3KTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy/lt6bovrnmoJHoioLngrkKICAgIGN1cnJlbnRDaGFuZ2U6IGZ1bmN0aW9uIGN1cnJlbnRDaGFuZ2Uobm9kZUl0ZW0pIHsKICAgICAgaWYgKG5vZGVJdGVtLmlkID09PSAnMTc2NjAxNzQ2ODQ0NDQ1MDgxNicpIHsKICAgICAgICB0aGlzLmlzQWRkRGlzYWJsZWQgPSB0cnVlOwogICAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdyb2FkSWQnLCB0aGlzLmV4dHJhY3RJZHMobm9kZUl0ZW0pKTsKICAgICAgfSBlbHNlIGlmIChub2RlSXRlbS5jaGlsZHJlbiAmJiBub2RlSXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgdGhpcy5pc0FkZERpc2FibGVkID0gdHJ1ZTsKICAgICAgICB2YXIgYXJyYXkgPSBub2RlSXRlbS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICAgIH0pOwogICAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdyb2FkSWQnLCBhcnJheSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5pc0FkZERpc2FibGVkID0gZmFsc2U7CiAgICAgICAgc2V0UXVlcnlWYWx1ZSh0aGlzLnBhcmFtcywgJ3JvYWRJZCcsIFtub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0uaWRdIHx8IFtdKTsKICAgICAgfQoKICAgICAgLy8g5Yik5pat5piv5ZCm5piv5LiA57qn55uu5b2V77yI5pyJIGNoaWxkcmVuIOWxnuaAp++8iQogICAgICAvLyBpZiAobm9kZUl0ZW0uY2hpbGRyZW4gJiYgbm9kZUl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkgewogICAgICAvLyAgIHRoaXMuaXNBZGREaXNhYmxlZCA9IHRydWUgLy8g56aB55So5paw5aKe5oyJ6ZKuCiAgICAgIC8vICAgLy8gdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7fpgInmi6nkuoznuqfnm67lvZXov5vooYzmlrDlop7mk43kvZwnKQogICAgICAvLyAgIGNvbnN0IGFycmF5ID0gbm9kZUl0ZW0uY2hpbGRyZW4ubWFwKGl0ZW0gPT4gaXRlbS5pZCkKICAgICAgLy8gICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAncm9hZElkICcsIGFycmF5KQogICAgICAvLyB9IGVsc2UgewogICAgICAvLyAgIHRoaXMuaXNBZGREaXNhYmxlZCA9IGZhbHNlIC8vIOWQr+eUqOaWsOWinuaMiemSrgogICAgICAvLyAgIC8vIOS/ruaUueWvueW6lOeahOWtl+auteWAvAogICAgICAvLyAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdyb2FkSWQgJywgW25vZGVJdGVtPy5pZF0gfHwgW10pCiAgICAgIC8vIH0KICAgICAgdGhpcy5wYXJhbXMucGFnZUJlYW4ucGFnZSA9IDE7CiAgICAgIHRoaXMuY2FsY1RhYmxlSGVpZ2h0KDUwMCk7CiAgICAgIFB1YlN1Yi5wdWJsaXNoKCdUcmVlSXRlbVNlbGVjdGVkJywgbm9kZUl0ZW0pOwogICAgICB0aGlzLnRyZWVJdGVtID0gbm9kZUl0ZW0gfHwge307CiAgICAgIHRoaXMubG9hZERhdGEoKTsKICAgIH0sCiAgICAvLyDmoJHoioLngrnmk43kvZwKICAgIG9wZXJhdGVFdmVudDogZnVuY3Rpb24gb3BlcmF0ZUV2ZW50KHR5cGUsIGRhdGEpIHsKICAgICAgdmFyIF90aGlzMTEgPSB0aGlzOwogICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICBjYXNlICfmlrDlop4nOgogICAgICAgICAgdGhpcy50cmVlSXRlbVBhcmVudElkID0gZGF0YS5pZDsKICAgICAgICAgIHRoaXMudHJlZURpYWxvZyA9IHRydWU7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICfnvJbovpEnOgogICAgICAgICAgdGhpcy50cmVlSXRlbUlkID0gZGF0YS5pZDsKICAgICAgICAgIHRoaXMudHJlZUl0ZW1QYXJlbnRJZCA9IGRhdGEucGFyZW50SWQ7CiAgICAgICAgICB0aGlzLnRyZWVEaWFsb2cgPSB0cnVlOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAn5Yig6ZmkJzoKICAgICAgICAgIHRoaXMuJGNvbmZpcm0oJ+ehruWumuWIoOmZpOmAieS4rei1hOaWmeWIhuexu+WQl++8nycsICfmj5DnpLonLCB7CiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgICAgfSkudGhlbigvKiNfX1BVUkVfXyovX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU4KCkgewogICAgICAgICAgICB2YXIgX3lpZWxkJHRyZWVEZWxldGUsIHN0YXRlOwogICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTgkKF9jb250ZXh0OCkgewogICAgICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0OC5wcmV2ID0gX2NvbnRleHQ4Lm5leHQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ4Lm5leHQgPSAyOwogICAgICAgICAgICAgICAgICByZXR1cm4gdHJlZURlbGV0ZShkYXRhLmlkKTsKICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgX3lpZWxkJHRyZWVEZWxldGUgPSBfY29udGV4dDguc2VudDsKICAgICAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkdHJlZURlbGV0ZS5zdGF0ZTsKICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXMxMS4kbWVzc2FnZS5zdWNjZXNzKCJcdTUyMjBcdTk2NjRcdThENDRcdTY1OTlcdTUyMDZcdTdDN0JcdTYyMTBcdTUyOUYiKTsKICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczExLiRtZXNzYWdlLmVycm9yKCJcdTUyMjBcdTk2NjRcdThENDRcdTY1OTlcdTUyMDZcdTdDN0JcdTU5MzFcdThEMjUiKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBfY29udGV4dDgubmV4dCA9IDc7CiAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczExLmdldFRyZWVEYXRhKCk7CiAgICAgICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ4LnN0b3AoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIF9jYWxsZWU4KTsKICAgICAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgcmV0dXJuIF87CiAgICAgICAgICB9KTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9LAogICAgLy8g55uu5b2V5pS55Y+YCiAgICBjYXRhbG9nQ2hhbmdlOiBmdW5jdGlvbiBjYXRhbG9nQ2hhbmdlKGRpYWxvZ05hbWUpIHsKICAgICAgdmFyIF90aGlzMTIgPSB0aGlzOwogICAgICB0aGlzLmdldFRyZWVEYXRhKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgcmV0dXJuIF90aGlzMTJbZGlhbG9nTmFtZV0gPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLy/kv67mlLkKICAgIGhhbmRsZURiQ2xpY2s6IGZ1bmN0aW9uIGhhbmRsZURiQ2xpY2socm93KSB7CiAgICAgIGlmICh0aGlzLmNsaWNrVGltZXIpIHJldHVybiB0aGlzLmNsaWNrVGltZXIgPSBmYWxzZTsKICAgICAgaWYgKHJvdy5ldmVudFN0YXR1cyA+IDApIHJldHVybjsKICAgICAgdGhpcy5jaGFuZ2VQYWdlKCdFZGl0QWRkUGFnZScsIHJvdyk7CiAgICB9LAogICAgLy8g5pS55Y+Y6aG16Z2iCiAgICBjaGFuZ2VQYWdlOiBmdW5jdGlvbiBjaGFuZ2VQYWdlKCkgewogICAgICB2YXIgcGFnZU5hbWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICcnOwogICAgICB2YXIgcm93ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTsKICAgICAgdmFyIHR5cGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6ICcnOwogICAgICBpZiAoIXBhZ2VOYW1lKSByZXR1cm47CiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZVBhZ2UnLCBwYWdlTmFtZSwgZnVuY3Rpb24gKF8pIHsKICAgICAgICBQdWJTdWIucHVibGlzaChwYWdlTmFtZSwgcm93KTsKICAgICAgfSwgdHlwZSB8fCAn6K+m5oOFJyk7CiAgICB9LAogICAgLy/ov5vlsZXkuIrmiqUKICAgIHJlcG9ydERhdGE6IGZ1bmN0aW9uIHJlcG9ydERhdGEocm93KSB7CiAgICAgIHRoaXMuY2hhbmdlUGFnZSgnQWJub3JtYWxMaXN0UGFnZScsIF9vYmplY3RTcHJlYWQoe30sIHJvdykpOwogICAgfQogIH0sCiAgYmVmb3JlRGVzdHJveTogZnVuY3Rpb24gYmVmb3JlRGVzdHJveSgpIHsKICAgIC8vIOWcqOe7hOS7tumUgOavgeS5i+WJjSDmuIXpmaTorqLpmIXmtojmga8KICAgIFB1YlN1Yi51bnN1YnNjcmliZSh0aGlzLnB1YlN1Yik7CiAgfQp9Ow=="},null]}