{"remainingRequest":"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\\DetailPage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\commandDispatch\\EventManagement\\components\\DetailPage\\index.vue","mtime":1755252406125},{"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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQge3JlZmluZVJlcXVlc3RCb2R5fSBmcm9tICdAL3V0aWxzL3JlcXVlc3RXcmFwcGVycycNCmltcG9ydCB7ZGljdGlvbmFyeUVzY2FwZSwgZ2V0RGljdGlvbmFyeUJ5Q29kZX0gZnJvbSAnQC91dGlscy9kaWN0aW9uYXJ5Jw0KaW1wb3J0IHsNCiAgZGVyZWd1bGF0aW9uLA0KICBldmVudENvbXBsZXRlZCwNCiAgdGFibGVEZXRhaWwsDQogIHRhYmxlRWRpdA0KfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvY29tbWFuZERpc3BhdGNoL2V2ZW50TWFuYWdlbWVudCcNCmltcG9ydCBQdWJTdWIgZnJvbSAncHVic3ViLWpzJw0KaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnDQppbXBvcnQgQmFzaWNzSW5mbyBmcm9tICcuLi9CYXNpY3NJbmZvJw0KaW1wb3J0IHt0YWJsZURhdGEgYXMgcm9hZFNlY3Rpb25JbmZvSW50ZXJ9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3JvYWRTZWN0aW9uSW5mbycNCmltcG9ydCB7dGFibGVEYXRhIGFzIGFsb25nUm91dGVJbmZvSW50ZXJ9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL2Fsb25nUm91dGVJbmZvJw0KaW1wb3J0IHt0YWJsZURhdGEgYXMgdGVhbURhdGF9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3BhdHJvbEFuZFJlc2N1ZVRlYW1zTWdtdCcNCmltcG9ydCBBcHBvaW50RGlhbG9nIGZyb20gJy4uL0FwcG9pbnREaWFsb2cnDQppbXBvcnQgZGlzcG9zYWxQcm9jZXNzIGZyb20gJy4uL0Rpc3Bvc2FsUHJvY2VzcycNCmltcG9ydCB7DQogIGNvbXBlbnNhdGlvbkFkZCwNCiAgY29tcGVuc2F0aW9uRGVsZXRlLA0KICBjb21wZW5zYXRpb25FZGl0LA0KICByZXNjdWVGZWVEZWxldGUsDQogIHRyYWZmaWNDb250cm9sRGVsZXRlLA0KICB0cmFmZmljSmFtRGVsZXRlLA0KICB0cmFmZmljSmFtRWRpdA0KfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvY29tbWFuZERpc3BhdGNoL2V2ZW50TWFuYWdlbWVudC9ldmVudEVkaXQnDQoNCmltcG9ydCBEZXRhaWxlZExpc3RHaWFsb2cNCiAgZnJvbSAnQC92aWV3cy9wYXRyb2xBbmRSZXNjdWUvcm9hZERhbWFnZUNvbXAvUm9hZERhbWFnZVJlZ2lzdGVyL2NvbXBvbmVudHMvRWRpdEFkZFBhZ2UvY29tcG9uZW50cy9EZXRhaWxlZExpc3RHaWFsb2cnIC8vIOi1lOWBv+a4heWNleW8ueeqlw0KaW1wb3J0IHJlc2N1ZUNvc3REaWFsb2cgZnJvbSAnLi9yZXNjdWVDb3N0RGlhbG9nL2luZGV4LnZ1ZScgLy8g5pWR5o+06LS555So5L+h5oGv5by556qXDQppbXBvcnQgdHJhZmZpY0NvbnRyb2xEaWFsb2cgZnJvbSAnLi90cmFmZmljQ29udHJvbERpYWxvZy9pbmRleC52dWUnIC8vIOaLpeWgteWIl+ihqOW8ueeqlw0KaW1wb3J0IFRyYWZmaWNKYW1EaWFsb2cgZnJvbSAnLi90cmFmZmljSmFtRGlhbG9nL2luZGV4LnZ1ZScNCmltcG9ydCBTYXZlRGV0YWlsRGlhbG9nDQogIGZyb20gJ0Avdmlld3MvcGF0cm9sQW5kUmVzY3VlL2NvbW1hbmREaXNwYXRjaC9FdmVudElucXVpcnkvY29tcG9uZW50cy9TYXZlRGV0YWlsRGlhbG9nL2luZGV4LnZ1ZScgLy8g5oul5aC15YiX6KGo5by556qXDQpleHBvcnQgZGVmYXVsdCB7DQogIG5hbWU6ICdEZXRhaWxQYWdlJywNCiAgcHJvcHM6IHsNCiAgICBjb21wb25lbnROYW1lOiB7DQogICAgICBkZWZhdWx0OiAnVGFibGVQYWdlJywNCiAgICAgIHR5cGU6IFN0cmluZw0KICAgIH0NCiAgfSwNCiAgY29tcG9uZW50czogew0KICAgIFNhdmVEZXRhaWxEaWFsb2csDQogICAgQmFzaWNzSW5mbywNCiAgICBBcHBvaW50RGlhbG9nLA0KICAgIGRpc3Bvc2FsUHJvY2VzcywNCiAgICBEZXRhaWxlZExpc3RHaWFsb2csDQogICAgcmVzY3VlQ29zdERpYWxvZywNCiAgICBUcmFmZmljSmFtRGlhbG9nLA0KICAgIHRyYWZmaWNDb250cm9sRGlhbG9nDQogIH0sDQogIGRhdGEoKSB7DQogICAgcmV0dXJuIHsNCiAgICAgIGFwcG9pbnREaWFsb2c6IGZhbHNlLA0KICAgICAgZWRpdFNhdmVMb2FkaW5nOiBmYWxzZSwNCiAgICAgIHBhZ2VUeXBlOiAnZWRpdCcsDQogICAgICBkZXRhaWxGb3JtOiB7fSwNCiAgICAgIHB1YlN1YjogbnVsbCwNCiAgICAgIGV2ZW50U3RhdHVzOiAwLA0KICAgICAgY29uZmlybUxvYWRpbmc6IGZhbHNlLA0KICAgICAgcmV2ZXJzZTogdHJ1ZSwNCiAgICAgIG1hcDogbnVsbCwNCiAgICAgIG1hcExvYWRpbmc6IHRydWUsDQogICAgICBtYXBEZWZhdWx0T3B0aW9uczogew0KICAgICAgICBjZW50ZXI6IFsxMDYuNTUwNywgMjkuNTY0N10gLyrlnLDlm77kuK3lv4PngrkqLywNCiAgICAgICAgem9vbTogOSAvKuWcsOWbvum7mOiupOe8qeaUvuetiee6pyovDQogICAgICB9LA0KICAgICAgZXZlbnRHcmFkZU9wdGlvbnM6IFsNCiAgICAgICAgLy/kuovku7bnrYnnuqcNCiAgICAgICAge2xhYmVsOiAnMee6pycsIHZhbHVlOiAxfSwNCiAgICAgICAge2xhYmVsOiAnMue6pycsIHZhbHVlOiAyfSwNCiAgICAgICAge2xhYmVsOiAnM+e6pycsIHZhbHVlOiAzfSwNCiAgICAgICAge2xhYmVsOiAnNOe6pycsIHZhbHVlOiA0fQ0KICAgICAgXSwNCiAgICAgIG1hcmtlcnM6IFtdLA0KICAgICAgcm9hZE9wdGlvbnM6IFtdLA0KICAgICAgYWxvbmdSb3V0ZUluZm9EYXRhOiBbXSwNCiAgICAgIHRlYW1PcHRpb25zOiBbXSwNCiAgICAgIGVkaXREaWFsb2c6IGZhbHNlLA0KICAgICAgZXZlbnRUeXBlOiAnJywNCiAgICAgIGJhc2VJbmZvOiB7fSwNCiAgICAgIGRpc3Bvc2FsUHJvY2VzczogZmFsc2UsDQogICAgICBjb21wZW5zYXRlRGlhbG9nOiBmYWxzZSwgLy8g6LWU5YG/5riF5Y2V5by556qXDQogICAgICBjb21wZW5zYXRlRGlhbG9nRGV0YWlsOiB7fSwNCiAgICAgIHJlc2N1ZURpYWxvZzogZmFsc2UsIC8vIOaVkeaPtOi0ueeUqOS/oeaBr+W8ueeqlw0KICAgICAgcmVzY3VlRGlhbG9nRGV0YWlsOiB7fSwNCiAgICAgIGNvbnRyb2xEaWFsb2c6IGZhbHNlLCAvLyDnrqHliLbliJfooajlvLnnqpcNCiAgICAgIGNvbnRyb2xEaWFsb2dEZXRhaWw6IHt9LA0KICAgICAgdHJhZmZpY0phbURpYWxvZzogZmFsc2UsIC8vIOaLpeWgteWIl+ihqOW8ueeqlw0KICAgICAgdHJhZmZpY0phbURpYWxvZ0RldGFpbDoge30sDQogICAgICByZWxlYXNlVGltZU1hcDoge30sDQogICAgICBqaWVjaHVUaW1lTWFwOiB7fSwNCiAgICAgIFNhdmVEZXRhaWxEaWFsb2c6IGZhbHNlLA0KICAgICAgc2F2ZURldGFpbEZvcm06IHt9LA0KICAgICAgaW5zcGVjdE9wdGlvbnM6IFtdLA0KICAgICAgcG9wb3ZlclZpc2libGVNYXA6IHt9LA0KICAgICAgZGlzYWJsZVNob3c6IHRydWUNCiAgICB9DQogIH0sDQogIGNvbXB1dGVkOiB7fSwNCiAgd2F0Y2g6IHsNCiAgICBjb21wb25lbnROYW1lOiB7DQogICAgICBoYW5kbGVyKG5ld1ZhbCkgew0KICAgICAgICBpZiAobmV3VmFsID09PSB0aGlzLiRvcHRpb25zLm5hbWUpIHsNCiAgICAgICAgICB0aGlzLm9wZW5QYWdlKCkNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLmNsb3NlUGFnZSgpDQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQogIH0sDQogIG1vdW50ZWQoKSB7DQogICAgdGhpcy5wdWJTdWIgPSBQdWJTdWIuc3Vic2NyaWJlKCdEZXRhaWxQYWdlJywgKF8sIGRhdGEpID0+IHsNCiAgICAgIGlmIChkYXRhLmlkKSB7DQogICAgICAgIHRoaXMuZXZlbnRTdGF0dXMgPSBkYXRhLnN0YXR1cw0KICAgICAgICB0aGlzLmdldERldGFpbChkYXRhLmlkKQ0KICAgICAgfQ0KICAgICAgdGhpcy5nZXRSb2FkT3B0aW9ucygpDQogICAgfSkNCiAgfSwNCiAgbWV0aG9kczogew0KICAgIGluaXRKaWVjaHVUaW1lKHJvdykgew0KICAgICAgaWYgKCF0aGlzLmppZWNodVRpbWVNYXBbcm93LmlkXSkgew0KICAgICAgICB0aGlzLiRzZXQodGhpcy5qaWVjaHVUaW1lTWFwLCByb3cuaWQsIG1vbWVudCgpLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpKQ0KICAgICAgfQ0KICAgIH0sDQogICAgaW5pdFJlbGVhc2VUaW1lKHJvdykgew0KICAgICAgaWYgKCF0aGlzLnJlbGVhc2VUaW1lTWFwW3Jvdy5pZF0pIHsNCiAgICAgICAgdGhpcy4kc2V0KHRoaXMucmVsZWFzZVRpbWVNYXAsIHJvdy5pZCwgbW9tZW50KCkuZm9ybWF0KCdZWVlZLU1NLUREIEhIOm1tOnNzJykpDQogICAgICB9DQogICAgfSwNCiAgICBoYW5kbGVSZWxlYXNlVGltZUNoYW5nZShyb3cpIHsNCiAgICAgIGlmIChyb3cuc3RhcnRUaW1lID4gdGhpcy5yZWxlYXNlVGltZU1hcFtyb3cuaWRdKSB7DQogICAgICAgIHRoaXMuJHNldCh0aGlzLnJlbGVhc2VUaW1lTWFwLCByb3cuaWQsICcnKQ0KICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCfmi6XloLXop6PpmaTml7bpl7Tlv4XpobvlnKjmi6XloLXlvIDlp4vml7bpl7TkuYvlkI7vvIEnKQ0KICAgICAgfQ0KICAgICAgdGhpcy4kc2V0KHRoaXMucG9wb3ZlclZpc2libGVNYXAsIHJvdy5pZCwgdHJ1ZSkNCiAgICB9LA0KICAgIGhhbmRsZURhdGVDaGFuZ2Uocm93KSB7DQogICAgICBpZiAocm93LnN0YXJ0VGltZSA+IHRoaXMuamllY2h1VGltZU1hcFtyb3cuaWRdKSB7DQogICAgICAgIHRoaXMuJHNldCh0aGlzLmppZWNodVRpbWVNYXAsIHJvdy5pZCwgJycpDQogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+euoeWItuino+mZpOaXtumXtOW/hemhu+WcqOeuoeWItuW8gOWni+aXtumXtOS5i+WQju+8gScpDQogICAgICB9DQogICAgICB0aGlzLiRzZXQodGhpcy5wb3BvdmVyVmlzaWJsZU1hcCwgcm93LmlkLCB0cnVlKQ0KICAgIH0sDQogICAgZGljdGlvbkNoYW5nZSh2YWx1ZSwgZXZlbnRQbGFjZSkgew0KICAgICAgaWYgKCF2YWx1ZSB8fCAhZXZlbnRQbGFjZSkgcmV0dXJuICctJw0KICAgICAgY29uc3QgcGxhY2VJdGVtID0gdGhpcy5nZXREaWN0aW9uYXJ5QnlDb2RlKCdzamZzcXknKQ0KICAgICAgICAuZmluZChpdGVtID0+IGl0ZW0udmFsdWUgPT09IGV2ZW50UGxhY2UpDQogICAgICBpZiAoIXBsYWNlSXRlbT8ubG93ZXJEaWM/LlsnanRnei1meCddKSByZXR1cm4gJy0nDQogICAgICBjb25zdCBtYXRjaGVkSXRlbSA9IHBsYWNlSXRlbS5sb3dlckRpY1snanRnei1meCddDQogICAgICAgIC5maW5kKGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpDQogICAgICByZXR1cm4gbWF0Y2hlZEl0ZW0/Lm5hbWUgfHwgJy0nDQoNCiAgICAgIC8vIGlmICh2YWx1ZSAmJiBldmVudFBsYWNlKSB7DQogICAgICAvLyAgIGxldCBkYXRhID0gdGhpcy5nZXREaWN0aW9uYXJ5QnlDb2RlKCdzamZzcXknKQ0KICAgICAgLy8gICBsZXQgYXJyYXkgPSBkYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0udmFsdWUgPT09IGV2ZW50UGxhY2UpWzBdLmxvd2VyRGljWydqdGd6LWZ4J10NCiAgICAgIC8vICAgcmV0dXJuIGFycmF5LmZpbHRlcihpdGVtID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlKVswXS5uYW1lDQogICAgICAvLyB9IGVsc2Ugew0KICAgICAgLy8gICByZXR1cm4gJy0nDQogICAgICAvLyB9DQogICAgfSwNCiAgICByZXNjdWVJbmNpZGVudHMocm93KSB7DQogICAgICB0aGlzLlNhdmVEZXRhaWxEaWFsb2cgPSB0cnVlDQogICAgICB0aGlzLnNhdmVEZXRhaWxGb3JtID0gcm93DQogICAgfSwNCiAgICBoYW5kbGVBZGQodHlwZSkgew0KICAgICAgaWYgKHRoaXMucGFnZVR5cGUgPT09ICdlZGl0Jykgew0KICAgICAgICBpZiAodHlwZSA9PT0gJ2NvbXBlbnNhdGVEaWFsb2cnICYmIHRoaXMuZGV0YWlsRm9ybS5jb21wZW5zYXRpb25JbmZvKSB7DQogICAgICAgICAgdGhpc1t0eXBlXSA9IHRydWUNCiAgICAgICAgICB0aGlzW3R5cGUgKyAnRGV0YWlsJ10gPSB7DQogICAgICAgICAgICBldmVudElkOiB0aGlzLmRldGFpbEZvcm0uaWQsDQogICAgICAgICAgICByb2FkSWQ6IHRoaXMuZGV0YWlsRm9ybS5yb2FkSWQNCiAgICAgICAgICB9DQogICAgICAgIH0gZWxzZSBpZiAoDQogICAgICAgICAgdHlwZSA9PT0gJ2NvbXBlbnNhdGVEaWFsb2cnICYmDQogICAgICAgICAgIXRoaXMuZGV0YWlsRm9ybS5jb21wZW5zYXRpb25JbmZvDQogICAgICAgICkgew0KICAgICAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHsNCiAgICAgICAgICAgIG5hbWU6ICdyb2FkRGFtYWdlUmVnaXN0ZXInDQogICAgICAgICAgfSkNCiAgICAgICAgfQ0KICAgICAgICBpZiAodHlwZSAhPT0gJ2NvbXBlbnNhdGVEaWFsb2cnKSB7DQogICAgICAgICAgdGhpc1t0eXBlXSA9IHRydWUNCiAgICAgICAgICB0aGlzW3R5cGUgKyAnRGV0YWlsJ10gPSB7DQogICAgICAgICAgICBldmVudElkOiB0aGlzLmRldGFpbEZvcm0uaWQsDQogICAgICAgICAgICByb2FkSWQ6IHRoaXMuZGV0YWlsRm9ybS5yb2FkSWQNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+35YWI5L+d5a2Y5b2T5YmN57yW6L6R55qE5LqL5Lu25Z+656GA5L+h5oGvJykNCiAgICAgIH0NCiAgICB9LA0KICAgIGFzeW5jIHNhdmVDb21wZW5zYXRpb24oZGF0YSkgew0KICAgICAgdGhpcy5jb21wZW5zYXRlRGlhbG9nRGV0YWlsID0gZGF0YQ0KICAgICAgdGhpcy5jb21wZW5zYXRlRGlhbG9nID0gZmFsc2UNCiAgICAgIGNvbnN0IHsNCiAgICAgICAgaWQsDQogICAgICAgIHVuaXQsDQogICAgICAgIHByaWNlLA0KICAgICAgICBwcm9wZXJ0eVN1YmplY3RJZCwNCiAgICAgICAgcHJvcGVydHlTdWJqZWN0TmFtZSwNCiAgICAgICAgcHJvcGVydHlTdWJqZWN0VHlwZSwNCiAgICAgICAgcHJvcGVydHlUeXBlSWQsDQogICAgICAgIHRvdGxlLA0KICAgICAgICBudW0sDQogICAgICAgIG1lbW8sDQogICAgICAgIG1vZGxlLA0KICAgICAgICBjb21wZW5zYXRpb25JZA0KICAgICAgfSA9IHRoaXMuY29tcGVuc2F0ZURpYWxvZ0RldGFpbA0KICAgICAgY29uc3QgcGFyYW1zID0gew0KICAgICAgICBpZCwNCiAgICAgICAgdW5pdCwNCiAgICAgICAgcHJpY2UsDQogICAgICAgIHByb3BlcnR5U3ViamVjdElkLA0KICAgICAgICBwcm9wZXJ0eVN1YmplY3ROYW1lLA0KICAgICAgICBwcm9wZXJ0eVN1YmplY3RUeXBlLA0KICAgICAgICBwcm9wZXJ0eVR5cGVJZCwNCiAgICAgICAgdG90bGUsDQogICAgICAgIG51bSwNCiAgICAgICAgbWVtbywNCiAgICAgICAgbW9kbGUsDQogICAgICAgIGV2ZW50SWQ6IHRoaXMuZGV0YWlsRm9ybS5pZCwNCiAgICAgICAgY29tcGVuc2F0aW9uSWQ6IHRoaXMuZGV0YWlsRm9ybS5jb21wZW5zYXRpb25JbmZvLmlkDQogICAgICB9DQogICAgICB0cnkgew0KICAgICAgICBjb25zdCBBUEkgPSBkYXRhLmlkID8gY29tcGVuc2F0aW9uRWRpdCA6IGNvbXBlbnNhdGlvbkFkZA0KICAgICAgICBjb25zdCB0eXBlID0gZGF0YS5pZCA/ICfnvJbovpEnIDogJ+aWsOWinicNCiAgICAgICAgY29uc3Qge3N0YXRlLCBtZXNzYWdlfSA9IGF3YWl0IEFQSShwYXJhbXMpDQogICAgICAgIGlmIChzdGF0ZSkgew0KICAgICAgICAgIHRoaXMucmVsb2FkKCkNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+i3r+S6p+i1lOWBv+a4heWNlScgKyB0eXBlICsgJ+aIkOWKn++8gScpDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihtZXNzYWdlIHx8ICfot6/kuqfotZTlgb/muIXljZUnICsgdHlwZSArICflpLHotKXvvIEnKQ0KICAgICAgICB9DQogICAgICB9IGNhdGNoIChlcnJvcikgew0KICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKGVycm9yIHx8ICfot6/kuqfotZTlgb/muIXljZXkv53lrZjlpLHotKXvvIEnKQ0KICAgICAgfQ0KICAgIH0sDQogICAgaGFuZGxlRWRpdChyb3csIHR5cGUpIHsNCiAgICAgIHRoaXNbdHlwZSArICdEZXRhaWwnXSA9IHJvdw0KICAgICAgdGhpc1t0eXBlXSA9IHRydWUNCiAgICB9LA0KICAgIC8vIOaLpeWgteino+mZpA0KICAgIGFzeW5jIGhhbmRsZVJlbGVhc2Uocm93KSB7DQogICAgICBpZiAodGhpcy5yZWxlYXNlVGltZU1hcFtyb3cuaWRdKSB7DQogICAgICAgIHRoaXMuJHNldCh0aGlzLnBvcG92ZXJWaXNpYmxlTWFwLCByb3cuaWQsIGZhbHNlKQ0KICAgICAgICByb3cuZW5kVGltZSA9IG1vbWVudCh0aGlzLnJlbGVhc2VUaW1lTWFwW3Jvdy5pZF0pLmZvcm1hdCgnWVlZWS1NTS1ERCBISDptbTpzcycpDQogICAgICAgIGNvbnN0IHtzdGF0ZSwgdmFsdWUsIG1lc3NhZ2V9ID0gYXdhaXQgdHJhZmZpY0phbUVkaXQocm93KQ0KICAgICAgICBpZiAoc3RhdGUpIHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+aLpeWgteino+mZpOaIkOWKnycpDQogICAgICAgICAgdGhpcy5yZWxvYWQoKQ0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IobWVzc2FnZSB8fCAn5oul5aC16Kej6Zmk5aSx6LSlJykNCiAgICAgICAgfQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCfor7fpgInmi6nop6PpmaTml7bpl7QnKQ0KICAgICAgfQ0KICAgIH0sDQogICAgaGFuZGxlRGVsZXRlKGRhdGEsIHR5cGUpIHsNCiAgICAgIHRoaXMuJGNvbmZpcm0oJ+aYr+WQpuWIoOmZpOivpeaVsOaNru+8nycsICfmj5DnpLonLCB7DQogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywNCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsDQogICAgICAgIHR5cGU6ICd3YXJuaW5nJw0KICAgICAgfSkudGhlbihhc3luYyAoKSA9PiB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgbGV0IEFQSQ0KICAgICAgICAgIHN3aXRjaCAodHlwZSkgew0KICAgICAgICAgICAgY2FzZSAnY29tcGVuc2F0ZURpYWxvZyc6DQogICAgICAgICAgICAgIEFQSSA9IGNvbXBlbnNhdGlvbkRlbGV0ZQ0KICAgICAgICAgICAgICBicmVhaw0KICAgICAgICAgICAgY2FzZSAndHJhZmZpY0phbURpYWxvZyc6DQogICAgICAgICAgICAgIEFQSSA9IHRyYWZmaWNKYW1EZWxldGUNCiAgICAgICAgICAgICAgYnJlYWsNCiAgICAgICAgICAgIGNhc2UgJ2NvbnRyb2xEaWFsb2cnOg0KICAgICAgICAgICAgICBBUEkgPSB0cmFmZmljQ29udHJvbERlbGV0ZQ0KICAgICAgICAgICAgICBicmVhaw0KICAgICAgICAgICAgY2FzZSAncmVzY3VlRGlhbG9nJzoNCiAgICAgICAgICAgICAgQVBJID0gcmVzY3VlRmVlRGVsZXRlDQogICAgICAgICAgICAgIGJyZWFrDQogICAgICAgICAgfQ0KICAgICAgICAgIGxldCB7c3RhdGV9ID0gYXdhaXQgQVBJKGRhdGEuaWQpDQogICAgICAgICAgaWYgKHN0YXRlKSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+WIoOmZpOaIkOWKnycpDQogICAgICAgICAgICB0aGlzLnJlbG9hZCgpDQogICAgICAgICAgfQ0KICAgICAgICB9IGNhdGNoIChlcnJvcikgew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoZXJyb3IgfHwgJ+WIoOmZpOWksei0pe+8gScpDQogICAgICAgIH0NCiAgICAgIH0pDQogICAgfSwNCiAgICByZWxvYWQoKSB7DQogICAgICB0aGlzLmdldERldGFpbCh0aGlzLmRldGFpbEZvcm0uaWQpDQogICAgfSwNCiAgICBnZXREaWN0aW9uYXJ5QnlDb2RlLA0KICAgIGRpY3Rpb25hcnlFc2NhcGUsDQogICAgc2hvd0FwcG9pbnREaWFsb2coKSB7DQogICAgICAvLyB0aGlzLmJhc2VJbmZvID0gdGhpcy4kcmVmcy5iYXNpY3NDb250ZW50LnNlbmRCYXNlRGF0YSgpDQogICAgICAvLyB0aGlzLiRyZWZzLmFkZEVkaXRGb3JtLnZhbGlkYXRlKGFzeW5jICh2YWxpZCwgb2JqZWN0KSA9PiB7DQogICAgICAvLyAgIGlmICghdmFsaWQpIHsNCiAgICAgIC8vICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoDQogICAgICAvLyAgICAgICBg5pyJJHtPYmplY3Qua2V5cyhvYmplY3QpLmxlbmd0aCArIChiYXNpY2VEYXRhLmZpZWxkTnVtIHx8IDApDQogICAgICAvLyAgICAgICB95Liq5a2X5q615pyq6YCa6L+H5qCh6aqM77yM6K+35q2j56Gu5aGr5YaZ6KGo5Y2V5YaF5a6544CCYA0KICAgICAgLy8gICAgICkNCiAgICAgIC8vICAgfSBlbHNlIHsNCg0KICAgICAgLy8gICB9DQogICAgICAvLyB9KQ0KICAgICAgdGhpcy5hcHBvaW50RGlhbG9nID0gdHJ1ZQ0KICAgIH0sDQogICAgaGFuZGxlVXBkYXRhSGFuZGxlcygpIHsNCiAgICAgIGNvbnNvbGUubG9nKCfmm7TmlrDmtYHnqIvorrDlvZUnKQ0KICAgICAgdGhpcy5nZXREZXRhaWwodGhpcy5kZXRhaWxGb3JtLmlkKQ0KICAgIH0sDQogICAgLy8g5re75Yqg5aSE572u546v6IqCDQogICAgaGFuZGxlQWRkRGlzcG9zYWwoKSB7DQogICAgICB0aGlzLmRpc3Bvc2FsUHJvY2VzcyA9IHRydWUNCiAgICB9LA0KICAgIGNsaWNrRWRpdCgpIHsNCiAgICAgIHRoaXMucGFnZVR5cGUgPSB0aGlzLnBhZ2VUeXBlID09PSAnZWRpdCcgPyAnZGV0YWlsJyA6ICdlZGl0Jw0KICAgICAgaWYgKHRoaXMucGFnZVR5cGUgIT09ICdlZGl0Jykgew0KICAgICAgICB0aGlzLiRuZXh0VGljaygoKSA9PiB7DQogICAgICAgICAgdGhpcy4kcmVmcy5iYXNpY3NDb250ZW50LmdldERldGFpbCh0aGlzLmRldGFpbEZvcm0pDQogICAgICAgIH0pDQogICAgICB9DQogICAgfSwNCiAgICBhc3luYyBjbGlja1NhdmUoKSB7DQogICAgICBsZXQgZGF0YSA9IHRoaXMuJHJlZnMuYmFzaWNzQ29udGVudC5zZW5kQmFzZURhdGEoKQ0KICAgICAgaWYgKGRhdGEuZmllbGROdW0pIHsNCiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKA0KICAgICAgICAgIGDmnIkke2RhdGEuZmllbGROdW195Liq5a2X5q615pyq6YCa6L+H5qCh6aqM77yM6K+35q2j56Gu5aGr5YaZ6KGo5Y2V5YaF5a6544CCYA0KICAgICAgICApDQogICAgICB9IGVsc2Ugew0KICAgICAgICBjb25zdCBxdWVyeSA9IHsuLi5kYXRhfQ0KICAgICAgICBkZWxldGUgcXVlcnkuaGFuZGxlcw0KICAgICAgICBkZWxldGUgcXVlcnkuY29tcGVuc2F0aW9uSW5mbw0KICAgICAgICBkZWxldGUgcXVlcnkudHJhZmZpY0Nvbmdlc3Rpb25zDQogICAgICAgIGRlbGV0ZSBxdWVyeS50cmFmZmljQ29udHJvbHMNCiAgICAgICAgcXVlcnkuZXZlbnRUeXBlID0gSlNPTi5zdHJpbmdpZnkocXVlcnkuZXZlbnRUeXBlKQ0KICAgICAgICB0cnkgew0KICAgICAgICAgIHRoaXMuZWRpdFNhdmVMb2FkaW5nID0gdHJ1ZQ0KICAgICAgICAgIGxldCB7c3RhdGUsIG1lc3NhZ2UsIHZhbHVlfSA9IGF3YWl0IHRhYmxlRWRpdChxdWVyeSkNCiAgICAgICAgICBpZiAoc3RhdGUpIHsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcyhg57yW6L6R5L+d5a2Y5oiQ5YqfYCkNCiAgICAgICAgICAgIHRoaXMucGFnZVR5cGUgPSAnZWRpdCcNCiAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybSA9IHsuLi50aGlzLmRldGFpbEZvcm0sIC4uLmRhdGF9DQogICAgICAgICAgICB0aGlzLmRldGFpbEZvcm0uY29tcGVuc2F0aW9uRGV0YWlscyA9DQogICAgICAgICAgICAgIHRoaXMuZGV0YWlsRm9ybT8uY29tcGVuc2F0aW9uSW5mbz8uY29tcGVuc2F0aW9uRGV0YWlscyB8fCBbXQ0KICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLmV2ZW50VHlwZSA9IEpTT04ucGFyc2UoZGF0YS5ldmVudFR5cGUpDQogICAgICAgICAgfQ0KICAgICAgICB9IGZpbmFsbHkgew0KICAgICAgICAgIHRoaXMuZWRpdFNhdmVMb2FkaW5nID0gZmFsc2UNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQogICAgLy8g5LqL5Lu25a6M57uTDQogICAgaGFuZGxlRXZlbnRDb21wbGV0ZWQoKSB7DQogICAgICB0aGlzLiRjb25maXJtKCfnoa7lrprkuovku7blt7Llroznu5PlkJfvvJ8nLCAn5o+Q56S6Jywgew0KICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsDQogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLA0KICAgICAgICB0eXBlOiAnd2FybmluZycNCiAgICAgIH0pLnRoZW4oYXN5bmMgKCkgPT4gew0KICAgICAgICBsZXQgZGF0YSA9IHsNCiAgICAgICAgICBldmVudElkOiB0aGlzLmRldGFpbEZvcm0uaWQsDQogICAgICAgICAgZXZlbnROb2RlOiA5DQogICAgICAgIH0NCiAgICAgICAgY29uc3Qge3N0YXRlfSA9IGF3YWl0IGV2ZW50Q29tcGxldGVkKGRhdGEpDQogICAgICAgIGlmIChzdGF0ZSkgew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5LqL5Lu25a6M57uT5oiQ5Yqf77yBJykNCiAgICAgICAgfQ0KICAgICAgfSkNCiAgICB9LA0KDQogICAgLy8g6Lev5q615pWw5o2u5p+l6K+iDQogICAgYXN5bmMgZ2V0Um9hZE9wdGlvbnMoKSB7DQogICAgICBjb25zdCB7cm93cyA9IFtdfSA9IGF3YWl0IHJvYWRTZWN0aW9uSW5mb0ludGVyKHtwYWdlQmVhbjoge3BhZ2VTaXplOiAtMX19KQ0KICAgICAgdGhpcy5yb2FkT3B0aW9ucyA9IHJvd3MubWFwKGl0ZW0gPT4gew0KICAgICAgICBpdGVtLnJvYWROYW1lID0gaXRlbS5uYW1lICsgJyAnICsgaXRlbS5jb2RlDQogICAgICAgIHJldHVybiBpdGVtDQogICAgICB9KQ0KICAgICAgLy8gaWYoIXRoaXMuaWQpIHsNCiAgICAgIC8vICAgdGhpcy4kc2V0KHRoaXMuZGV0YWlsRm9ybSwgJ3JvYWRJZCcsIHRoaXMucm9hZE9wdGlvbnNbMF0uaWQpDQogICAgICAvLyAgIHRoaXMucm9hZENoYW5nZSh0aGlzLnJvYWRPcHRpb25zWzBdLmlkKQ0KICAgICAgLy8gfQ0KICAgIH0sDQogICAgLy8g6Lev5q616YCJ5oup5Y+Y5YyWDQogICAgYXN5bmMgcm9hZENoYW5nZSh2YWx1ZSkgew0KICAgICAgdGhpcy5nZXRUZWFtRGF0YSh2YWx1ZSkNCiAgICAgIHRoaXMuZ2V0SW5zcGVjdERhdGEodmFsdWUpDQogICAgICAvLyDpgJrov4fot6/mrrXkv6Hmga/ojrflj5bmsr/nur/orr7lpIfkv6Hmga8NCiAgICAgIHRoaXMuZ2V0QWxvbmdSb3V0ZUluZm8odmFsdWUsIGRhdGEgPT4gew0KICAgICAgICBjb25zdCB7c3RhcnRQYXRyb2xJZCwgZW5kUGF0cm9sSWR9ID0gdGhpcy5kZXRhaWxGb3JtDQoNCiAgICAgICAgLyoNCiAgICAgICAgICog5beh5qOA5byA5aeL77yM57uT5p2f56uZDQogICAgICAgICAqICovDQogICAgICAgIGlmIChzdGFydFBhdHJvbElkKSB7DQogICAgICAgICAgaWYgKCFkYXRhLnNvbWUoaSA9PiBpLmlkID09PSBzdGFydFBhdHJvbElkKSkgew0KICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLnN0YXJ0UGF0cm9sSWQgPSAnJw0KICAgICAgICAgICAgc2V0VGltZW91dChfID0+IHRoaXMuJG1lc3NhZ2Uud2FybmluZygn6K+36YeN5paw6YCJ5oup5beh5qOA5byA5aeL56uZLi4nKSkNCiAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoZW5kUGF0cm9sSWQpIHsNCiAgICAgICAgICBpZiAoIWRhdGEuc29tZShpID0+IGkuaWQgPT09IGVuZFBhdHJvbElkKSkgew0KICAgICAgICAgICAgdGhpcy5kZXRhaWxGb3JtLmVuZFBhdHJvbElkID0gJycNCiAgICAgICAgICAgIHNldFRpbWVvdXQoXyA9PiB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mHjeaWsOmAieaLqeW3oeajgOe7k+adn+ermS4uJykpDQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICB9KQ0KICAgIH0sDQogICAgLy8g6YCa6L+H6Lev5q615L+h5oGv6I635Y+W5rK/57q/6K6+5aSH5L+h5oGvDQogICAgYXN5bmMgZ2V0QWxvbmdSb3V0ZUluZm8odmFsdWUsIGNhbGxiYWNrKSB7DQogICAgICBjb25zdCBfd2lwZURhdGEgPSAoKSA9PiB7DQogICAgICAgIHRoaXMuYWxvbmdSb3V0ZUluZm9EYXRhID0gW10NCiAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2sodGhpcy5hbG9uZ1JvdXRlSW5mb0RhdGEpDQogICAgICB9DQoNCiAgICAgIHRyeSB7DQogICAgICAgIC8vIOiOt+WPluayv+e6v+iuvuaWvQ0KICAgICAgICBjb25zdCB7cm93cyA9IFtdfSA9IGF3YWl0IGFsb25nUm91dGVJbmZvSW50ZXIoDQogICAgICAgICAgcmVmaW5lUmVxdWVzdEJvZHkoew0KICAgICAgICAgICAgcXVlcnlzOiBbe29wZXJhdGlvbjogJ0lOJywgcHJvcGVydHk6ICdyb2FkX3NlZ21lbnRfaWRfJywgdmFsdWV9XQ0KICAgICAgICAgIH0pLA0KICAgICAgICAgICdhZGRFZGl0Jw0KICAgICAgICApDQoNCiAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2socm93cykNCiAgICAgICAgdGhpcy5hbG9uZ1JvdXRlSW5mb0RhdGEgPSByb3dzDQogICAgICB9IGNhdGNoIChlcnJvcikgew0KICAgICAgICAvLyDkuI3kuLror7fmsYLov4flv6vnu5PmnZ/nmoTmg4XlhrXkuIvvvIzph43nva4NCiAgICAgICAgaWYgKGVycm9yLm1lc3NhZ2UgIT09ICdjYW5jZWxlZCcpIF93aXBlRGF0YSgpDQogICAgICB9DQogICAgfSwNCg0KICAgIHNpdGVDaGFuZ2UoZSwgdHlwZSkgew0KICAgICAgbGV0IHNpdGVJbmZvID0gdGhpcy5hbG9uZ1JvdXRlSW5mb0RhdGEuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGUpDQogICAgICB0aGlzLmRldGFpbEZvcm1bYCR7dHlwZX1OYW1lYF0gPSBzaXRlSW5mby5uYW1lDQogICAgfSwNCg0KICAgIC8vIOmAmui/h+i3r+auteS/oeaBr+iOt+WPluW3oeafpeaVkeaPtOmYn+S8jeS/oeaBrw0KICAgIGFzeW5jIGdldFRlYW1EYXRhKHZhbHVlKSB7DQogICAgICBjb25zdCB7cm93cyA9IFtdfSA9IGF3YWl0IHRlYW1EYXRhKA0KICAgICAgICByZWZpbmVSZXF1ZXN0Qm9keSh7DQogICAgICAgICAgcXVlcnlzOiBbDQogICAgICAgICAgICB7b3BlcmF0aW9uOiAnSU4nLCBwcm9wZXJ0eTogJ3IuaWRfJywgdmFsdWV9LA0KICAgICAgICAgICAge29wZXJhdGlvbjogJ0VRVUFMJywgcHJvcGVydHk6ICd0LnR5cGVfJywgdmFsdWU6ICcyJ30NCiAgICAgICAgICBdDQogICAgICAgIH0pLA0KICAgICAgICAnYWRkRWRpdCcNCiAgICAgICkNCiAgICAgIHRoaXMudGVhbU9wdGlvbnMgPSByb3dzDQogICAgfSwNCg0KICAgIC8vIOmAmui/h+i3r+auteS/oeaBr+iOt+WPluW3oeafpeaVkeaPtOmYn+S8jeS/oeaBrw0KICAgIGFzeW5jIGdldEluc3BlY3REYXRhKHZhbHVlKSB7DQogICAgICBjb25zdCB7cm93cyA9IFtdfSA9IGF3YWl0IHRlYW1EYXRhKA0KICAgICAgICByZWZpbmVSZXF1ZXN0Qm9keSh7DQogICAgICAgICAgcXVlcnlzOiBbDQogICAgICAgICAgICB7b3BlcmF0aW9uOiAnSU4nLCBwcm9wZXJ0eTogJ3IuaWRfJywgdmFsdWV9LA0KICAgICAgICAgICAge29wZXJhdGlvbjogJ0VRVUFMJywgcHJvcGVydHk6ICd0LnR5cGVfJywgdmFsdWU6ICcxJ30NCiAgICAgICAgICBdDQogICAgICAgIH0pLA0KICAgICAgICAnYWRkRWRpdCcNCiAgICAgICkNCiAgICAgIHRoaXMuaW5zcGVjdE9wdGlvbnMgPSByb3dzDQogICAgfSwNCg0KICAgIC8vIOmZhOS7tumihOiniGxpc3QNCiAgICBnZXRGaWxlUHJldmlld1VybExpc3QoZmlsZXMpIHsNCiAgICAgIGxldCBzcmNMaXN0ID0gZmlsZXMubWFwKGl0ZW0gPT4gew0KICAgICAgICByZXR1cm4gaXRlbS5maWxlUHJldmlld1VybA0KICAgICAgfSkNCiAgICAgIHJldHVybiBzcmNMaXN0DQogICAgfSwNCiAgICBldmVudENvbmZpcm0oKSB7DQogICAgICB0aGlzLiRjb25maXJtKCfnoa7lrprkuovku7bmoLjlrp7noa7orqTlkJfvvJ8nLCAn5o+Q56S6Jywgew0KICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsDQogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLA0KICAgICAgICB0eXBlOiAnd2FybmluZycNCiAgICAgIH0pLnRoZW4oYXN5bmMgKCkgPT4gew0KICAgICAgICB0aGlzLmNvbmZpcm1Mb2FkaW5nID0gdHJ1ZQ0KICAgICAgICBjb25zdCB7c3RhdGV9ID0gYXdhaXQgZXZlbnRDb25maXJtKHRoaXMuZGV0YWlsRm9ybS5pZCkNCiAgICAgICAgaWYgKHN0YXRlKSB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKGDkuovku7bnoa7orqTmiJDlip9gKQ0KICAgICAgICAgIHRoaXMuY29uZmlybUxvYWRpbmcgPSBmYWxzZQ0KICAgICAgICAgIHRoaXMuY2hhbmdlUGFnZSgnVGFibGVQYWdlJywgJ2FkZCcpDQogICAgICAgIH0NCiAgICAgIH0pDQogICAgfSwNCiAgICAvLyDmiZPlvIDpobXpnaLmiafooYwNCiAgICBvcGVuUGFnZSgpIHsNCiAgICAgIC8vIHRoaXMuJHJlZnMubWluZU1hcD8ubWFwPy5yZXNpemUoKQ0KICAgIH0sDQogICAgY2hhbmdlUGFnZShwYWdlTmFtZSA9ICcnLCB0eXBlID0gJycpIHsNCiAgICAgIGlmICghcGFnZU5hbWUpIHJldHVybg0KICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlUGFnZScsIHBhZ2VOYW1lLCBfID0+IHsNCiAgICAgICAgUHViU3ViLnB1Ymxpc2gocGFnZU5hbWUsIHt0eXBlfSkNCiAgICAgIH0pDQogICAgfSwNCiAgICAvLyDlhbPpl63pobXpnaLmiafooYwNCiAgICBjbG9zZVBhZ2UoKSB7DQogICAgICBjb25zdCB7cHViU3ViLCBhZGRFZGl0UnVsZXMsIHJvYWRPcHRpb25zfSA9IHRoaXMNCiAgICAgIC8vIOmHjee9rue7hOS7tuaVsOaNrg0KICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLiRkYXRhLCB0aGlzLiRvcHRpb25zLmRhdGEuY2FsbCh0aGlzKSwgew0KICAgICAgICBwdWJTdWIsDQogICAgICAgIHJvYWRPcHRpb25zDQogICAgICB9KQ0KICAgICAgLy8gdGhpcy4kcmVmcy5taW5lTWFwPy5yZXNldE1hcChfID0+IHRoaXMubWFwTG9hZGluZyA9IGZhbHNlKSAvLyDph43nva7lnLDlm74NCiAgICAgIHRoaXMuJG5leHRUaWNrKF8gPT4gew0KICAgICAgICB0aGlzLiRyZWZzLmZvcm1JbmZvLiRlbC5zY3JvbGxUb3AgPSAwDQogICAgICB9KQ0KICAgIH0sDQogICAgbWFwTG9hZCgpIHsNCiAgICAgIHRoaXMubWFwTG9hZGluZyA9IGZhbHNlDQogICAgfSwNCiAgICAvLyDoh6rlrprkuYnmoIforrDngrkNCiAgICBjdXN0b21UYWdQb2ludHMobG5nbGF0ID0gW10pIHsNCiAgICAgIHRoaXMubWFya2Vyc1t0aGlzLm1hcmtlcnMubGVuZ3RoIC0gMV0/LnJlbW92ZSgpDQogICAgICAvLyDoh6rlrprkuYnngrnmoIforrDnmoTlhoXpg6hET03lhYPntKANCiAgICAgIGxldCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpDQogICAgICBlbC5jbGFzc05hbWUgPSAnbWFya2VyLXRpcCcNCiAgICAgIC8vIE1hcmtlcuaehOmAoOWHveaVsOaOpeaUtuS4pOS4quWPguaVsO+8jOS4gOS4quS4uuiHquWumuS5ieeahERPTeWFg+e0oO+8jOS4gOS4quaYr09iamVjdOWPguaVsO+8jOWFtuS4reWMheaLrOWBj+enu+mHj+etiQ0KICAgICAgbGV0IG1hcmtlciA9IG5ldyB0aGlzLiRyZWZzLm1pbmVNYXAubWluZU1hcC5NYXJrZXIoZWwsIHsNCiAgICAgICAgYW5jaG9yOiAnY2VudGVyJywNCiAgICAgICAgb2Zmc2V0OiBbMCwgMF0gLy8gb2Zmc2V05Y+C5pWw5Li65qCH5rOo54K555u45a+55LqO5YW25bem5LiK6KeS5YGP56e75YOP57Sg5aSn5bCPDQogICAgICB9KQ0KICAgICAgICAvLyDosIPnlKhzZXRMbmdMYXTmlrnms5XmjIflrppNYXJrZXLnmoTlnZDmoIfkvY3nva4NCiAgICAgICAgLnNldExuZ0xhdChsbmdsYXQpDQogICAgICAgIC5hZGRUbyh0aGlzLiRyZWZzLm1pbmVNYXAubWFwKQ0KICAgICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKQ0KICAgIH0sDQoNCiAgICAvLyDojrflj5bor6bmg4UNCiAgICBhc3luYyBnZXREZXRhaWwoaWQpIHsNCiAgICAgIHRoaXMuZGV0YWlsRm9ybSA9IGF3YWl0IHRhYmxlRGV0YWlsKGlkKQ0KICAgICAgY29uc3Qge3BlZ1NWYWwgPSAnJywgcGVnRVZhbCA9ICcnfSA9IHRoaXMuZGV0YWlsRm9ybQ0KICAgICAgaWYgKHBlZ1NWYWwpIHsNCiAgICAgICAgbGV0IHN0YXJ0UGVnQXJyID0gcGVnU1ZhbC5zcGxpdCgnKycpDQogICAgICAgIHRoaXMuZGV0YWlsRm9ybS5zdGFydFBlZyA9IHN0YXJ0UGVnQXJyWzBdLnNsaWNlKDEpDQogICAgICAgIHRoaXMuZGV0YWlsRm9ybS5zdGFydFBlZ0FkZCA9IHN0YXJ0UGVnQXJyWzFdDQogICAgICB9DQogICAgICBpZiAocGVnRVZhbCkgew0KICAgICAgICBsZXQgZW5kUGVnQXJyID0gcGVnRVZhbC5zcGxpdCgnKycpDQogICAgICAgIHRoaXMuZGV0YWlsRm9ybS5lbmRQZWcgPSBlbmRQZWdBcnJbMF0uc2xpY2UoMSkNCiAgICAgICAgdGhpcy5kZXRhaWxGb3JtLmVuZFBlZ0FkZCA9IGVuZFBlZ0FyclsxXQ0KICAgICAgfQ0KICAgICAgdGhpcy5kZXRhaWxGb3JtLmNvbXBlbnNhdGlvbkRldGFpbHMgPQ0KICAgICAgICB0aGlzLmRldGFpbEZvcm0/LmNvbXBlbnNhdGlvbkluZm8/LmNvbXBlbnNhdGlvbkRldGFpbHMgfHwgW10NCiAgICAgIHRoaXMuZGV0YWlsRm9ybS5ldmVudFR5cGUgPSBKU09OLnBhcnNlKHRoaXMuZGV0YWlsRm9ybS5ldmVudFR5cGUpDQogICAgICB0aGlzLnJvYWRDaGFuZ2UodGhpcy5kZXRhaWxGb3JtLnJvYWRJZCkNCiAgICAgIHRoaXMuZGlzYWJsZVNob3cgPSBmYWxzZQ0KICAgICAgY29uc29sZS5sb2codGhpcy5kZXRhaWxGb3JtLCAn6K+m5oOF5pWw5o2uLy8vLy8nKQ0KICAgIH0sDQoNCiAgICBnZXRFdmVudFR5cGUoKSB7DQogICAgICBjb25zdCB7ZXZlbnRUeXBlfSA9IHRoaXMuZGV0YWlsRm9ybQ0KICAgICAgaWYgKGV2ZW50VHlwZSkgew0KICAgICAgICBpZiAoZXZlbnRUeXBlLmxlbmd0aCA+IDEpIHsNCiAgICAgICAgICByZXR1cm4gdGhpcy5kaWN0aW9uYXJ5RXNjYXBlKCdseF9zamx4eHEnLCBldmVudFR5cGVbMV0gKyAnJykNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICByZXR1cm4gJy0nDQogICAgICAgIH0NCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHJldHVybiAnLScNCiAgICAgIH0NCiAgICB9LA0KDQogICAgYXN5bmMgaGFuZGxlUmVsaWV2ZShyb3csIGluZGV4KSB7DQogICAgICBpZiAodGhpcy5qaWVjaHVUaW1lTWFwW3Jvdy5pZF0pIHsNCiAgICAgICAgdGhpcy4kc2V0KHRoaXMucG9wb3ZlclZpc2libGVNYXAsIHJvdy5pZCwgZmFsc2UpDQogICAgICAgIHJvdy5lbmRUaW1lID0gbW9tZW50KHRoaXMuamllY2h1VGltZU1hcFtyb3cuaWRdKS5mb3JtYXQoJ1lZWVktTU0tREQgSEg6bW06c3MnKQ0KICAgICAgICByb3cuc3RhdHVzID0gMg0KICAgICAgICBjb25zdCB7c3RhdGUsIHZhbHVlLCBtZXNzYWdlfSA9IGF3YWl0IGRlcmVndWxhdGlvbihyb3cpDQogICAgICAgIGlmIChzdGF0ZSkgew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn6Kej6Zmk566h5Yi25oiQ5YqfJykNCiAgICAgICAgICB0aGlzLnJlbG9hZCgpDQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihtZXNzYWdlIHx8ICfop6PpmaTnrqHliLblpLHotKUnKQ0KICAgICAgICB9DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeino+mZpOaXtumXtCcpDQogICAgICB9DQoNCg0KICAgICAgLy8gdGhpcy4kY29uZmlybSgn56Gu6K6k6Kej6Zmk566h5Yi25ZCXPycsICfmj5DnpLonLCB7DQogICAgICAvLyAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywNCiAgICAgIC8vICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsDQogICAgICAvLyAgIHR5cGU6ICd3YXJuaW5nJw0KICAgICAgLy8gfSkudGhlbigoKSA9PiB7DQogICAgICAvLyAgIGNvbnNvbGUubG9nKHJvdykNCiAgICAgIC8vDQogICAgICAvLyAgIHJvdy5zdGF0dXMgPSAyDQogICAgICAvLyAgIGRlcmVndWxhdGlvbihyb3cpLnRoZW4ocmVzID0+IHsNCiAgICAgIC8vICAgICBpZiAocmVzLnN0YXRlKSB7DQogICAgICAvLyAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+ino+mZpOeuoeWItuaIkOWKn++8gScpDQogICAgICAvLyAgICAgICB0aGlzLnJlbG9hZCgpDQogICAgICAvLyAgICAgfQ0KICAgICAgLy8gICB9KQ0KICAgICAgLy8gfSkNCiAgICB9DQogIH0sDQogIGJlZm9yZURlc3Ryb3koKSB7DQogICAgLy8g5Zyo57uE5Lu26ZSA5q+B5LmL5YmNIOa4hemZpOiuoumYhea2iOaBrw0KICAgIFB1YlN1Yi51bnN1YnNjcmliZSh0aGlzLnB1YlN1YikNCiAgfQ0KfQ0K"},null]}