{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataManage\\dataDWCatalog\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataManage\\dataDWCatalog\\index.vue","mtime":1736448933040},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\babel.config.js","mtime":1733906004399},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZnVuY3Rpb24ubmFtZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRlc3QuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAudG8tc3RyaW5nLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJlcGxhY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lc25leHQuaXRlcmF0b3IuZm9yLWVhY2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLmZvci1lYWNoLmpzIjsKLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCmltcG9ydCB7IGdldERpY3Rpb25hcnlCeUNvZGUgfSBmcm9tICdAL3V0aWxzL2RpY3Rpb25hcnkuanMnOwppbXBvcnQgdGFibGVNaXhpbiBmcm9tICdAL21peGlucy90YWJsZS5qcyc7IC8vIOWIl+ihqG1peGlucwppbXBvcnQgc291cmNlRGlhbG9nIGZyb20gJy4vc291cmNlRGlhbG9nLnZ1ZSc7CmltcG9ydCBmaWVsZHNNYW5hZ2UgZnJvbSAnLi9maWVsZHNNYW5hZ2UudnVlJzsKaW1wb3J0IEFQSSBmcm9tICdAL2FwaS9idXNpbmVzcy9kYXRhRFdDYXRhbG9nJzsKaW1wb3J0IHsgbWFwU3RhdGUgfSBmcm9tICd2dWV4JzsKaW1wb3J0IFB1dE91dERpYWxvZyBmcm9tICcuL1B1dE91dERpYWxvZy52dWUnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ0RhdGFEV0NhdGFsb2cnLAogIGNvbXBvbmVudHM6IHsKICAgIFB1dE91dERpYWxvZzogUHV0T3V0RGlhbG9nLAogICAgc291cmNlRGlhbG9nOiBzb3VyY2VEaWFsb2csCiAgICBmaWVsZHNNYW5hZ2U6IGZpZWxkc01hbmFnZQogIH0sCiAgbWl4aW5zOiBbdGFibGVNaXhpbl0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICB2YXIgVFJFRV9DT05GSUcgPSB7CiAgICAgIHRyZWVQcm9wczogewogICAgICAgIHZhbHVlOiAnaWQnLAogICAgICAgIGxhYmVsOiAnbmFtZScKICAgICAgfSwKICAgICAgZXhwYW5kQWxsOiBmYWxzZSwKICAgICAgZGVmYXVsdEV4cGFuZGVkS2V5czogWycxJ10sCiAgICAgIGRlZmF1bHRDaGVja2VkS2V5czogWycxJ10sCiAgICAgIC8vIOatpOWkhGZpZWxkc+WGhemFjee9ruWvueixoeWxnuaAp+WMheaLrDogbGFiZWwvcHJvcC9ydWxlcy90eXBlKOaemuS4vjpzd2l0Y2gvbnVtYmVyL2lucHV0KOm7mOiupCkpL3NwYW4vCiAgICAgIHRyZWVGaWVsZHM6IFt7CiAgICAgICAgbGFiZWw6ICfotYTmupDnm67lvZXlkI3np7AnLAogICAgICAgIHByb3A6ICduYW1lJywKICAgICAgICBsYWJlbFdpZHRoOiAnMTIwJywKICAgICAgICBydWxlczogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+i1hOa6kOebruW9leWQjeensOS4jeiDveS4uuepuicKICAgICAgICB9XQogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfotYTmupDnm67lvZXnvJbnoIEnLAogICAgICAgIHByb3A6ICdjb2RlJywKICAgICAgICBsYWJlbFdpZHRoOiAnMTIwJywKICAgICAgICBydWxlczogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+i1hOa6kOebruW9lee8lueggeS4jeiDveS4uuepuicKICAgICAgICB9XQogICAgICB9XSwKICAgICAgY3VyTm9kZToge30gLy8g5b2T5YmN6YCJ5oup6IqC54K5CiAgICB9OwogICAgdmFyIFRBQkxFX0NPTkZJRyA9IHsKICAgICAgZGVwbG95U3RhdHVzOiBbewogICAgICAgIHZhbHVlOiAnMScsCiAgICAgICAgbGFiZWw6ICflt7Llj5HluIMnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJzAnLAogICAgICAgIGxhYmVsOiAn5pyq5Y+R5biDJwogICAgICB9XSwKICAgICAgdGFibGVDbGFzc0xpc3Q6IFt7CiAgICAgICAgdmFsdWU6ICcxJywKICAgICAgICBsYWJlbDogJ+eJqeeQhuihqCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnMicsCiAgICAgICAgbGFiZWw6ICfliqjmgIHooagnCiAgICAgIH1dLAogICAgICAvLyDliJfooajooajlpLQKICAgICAgY29sdW1uczogW3sKICAgICAgICBsYWJlbDogJ+ihqOi1hOa6kOWQjeensCcsCiAgICAgICAgcHJvcDogJ25hbWUnCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+ihqOi1hOa6kOe8lueggScsCiAgICAgICAgcHJvcDogJ2NvZGUnCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+aVsOaNruW6k+ihqOWQjScsCiAgICAgICAgcHJvcDogJ3RhYmxlTmFtZUVuJwogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICflrp7kvZPooajnsbvliKsnLAogICAgICAgIHByb3A6ICd0YWJsZUNsYXNzJywKICAgICAgICBkYXRhVHlwZTogJ3Nsb3QnLAogICAgICAgIHNsb3Q6ICd0YWJsZUNsYXNzJywKICAgICAgICB3aWR0aDogJzE0MCcsCiAgICAgICAgYWxpZ246ICdjZW50ZXInCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+WPkeW4g+eKtuaAgScsCiAgICAgICAgcHJvcDogJ2RlcGxveWVkJywKICAgICAgICBkYXRhVHlwZTogJ3Nsb3QnLAogICAgICAgIHNsb3Q6ICdkZXBsb3llZCcsCiAgICAgICAgd2lkdGg6ICcxNDAnLAogICAgICAgIGFsaWduOiAnY2VudGVyJwogICAgICB9LCB7CiAgICAgICAgZGF0YVR5cGU6ICdvcHRpb24nLAogICAgICAgIGxhYmVsOiAn5pON5L2cJywKICAgICAgICB3aWR0aDogJzI2MHB4JywKICAgICAgICBmaXhlZDogJ3JpZ2h0JywKICAgICAgICBvcGVyYXRpb246IFt7CiAgICAgICAgICBuYW1lOiAn5a2X5q61566h55CGJywKICAgICAgICAgIHR5cGU6ICd0ZXh0JywKICAgICAgICAgIHNpemU6ICdtaW5pJywKICAgICAgICAgIGljb246ICdlbC1pY29uLXMtb3JkZXInLAogICAgICAgICAgY29sb3I6ICcjNDA5ZWZmJywKICAgICAgICAgIHBsYWluOiB0cnVlLAogICAgICAgICAgY2xpY2tGdW46IGZ1bmN0aW9uIGNsaWNrRnVuKHJvdykgewogICAgICAgICAgICBfdGhpcy5yb3dEYXRhID0gcm93OwogICAgICAgICAgICBfdGhpcy5maWVsZE1hbmFnZShyb3cpOwogICAgICAgICAgfQogICAgICAgIH0sIHsKICAgICAgICAgIG5hbWU6ICflj5HluIPlu7rooagnLAogICAgICAgICAgdHlwZTogJ3RleHQnLAogICAgICAgICAgc2l6ZTogJ21pbmknLAogICAgICAgICAgaWNvbjogJ2VsLWljb24tcy1wcm9tb3Rpb24nLAogICAgICAgICAgY29sb3I6ICcjZmE5MTJhJywKICAgICAgICAgIHBsYWluOiB0cnVlLAogICAgICAgICAgc2hvd0hpZGU6IGZ1bmN0aW9uIHNob3dIaWRlKHJvdykgewogICAgICAgICAgICByZXR1cm4gcm93LmRlcGxveWVkICE9PSAnMSc7CiAgICAgICAgICB9LAogICAgICAgICAgY2xpY2tGdW46IGZ1bmN0aW9uIGNsaWNrRnVuKHJvdykgewogICAgICAgICAgICBfdGhpcy5wdWJsaXNoVGFibGUocm93KTsKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn5Yig6ZmkJywKICAgICAgICAgIHR5cGU6ICd0ZXh0JywKICAgICAgICAgIHNpemU6ICdtaW5pJywKICAgICAgICAgIGljb246ICdlbC1pY29uLWRlbGV0ZScsCiAgICAgICAgICBjb2xvcjogJ3JlZCcsCiAgICAgICAgICBwbGFpbjogdHJ1ZSwKICAgICAgICAgIHNob3dIaWRlOiBmdW5jdGlvbiBzaG93SGlkZShyb3cpIHsKICAgICAgICAgICAgcmV0dXJuIHJvdy5kZXBsb3llZCAhPT0gJzEnOwogICAgICAgICAgfSwKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMuZGVsVGFibGUocm93KTsKICAgICAgICAgIH0KICAgICAgICB9XQogICAgICB9XSwKICAgICAgZGVmYXVsdEZpbHRlcjogW3sKICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgcHJvcGVydHk6ICdkd0NhdGFsb2dzSWQnLAogICAgICAgIHJlbGF0aW9uOiAnQU5EJywKICAgICAgICB2YWx1ZTogJycKICAgICAgfV0sCiAgICAgIHJvd0RhdGE6IHt9CiAgICB9OwogICAgdmFyIERJQUxPR19DT05GSUcgPSB7CiAgICAgIGRpYWxvZ1Zpc2libGU6IGZhbHNlLAogICAgICBkaWFsb2dUaXRsZTogJ+aWsOWinicsCiAgICAgIGZpZWxkRGlhbG9nVmlzaWJsZTogZmFsc2UsCiAgICAgIGRpYWxvZ2REYXRhOiB7fSwKICAgICAgcHV0T3V0VmlzaWJsZTogZmFsc2UKICAgIH07CiAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7CiAgICAgIHRyZWVEYXRhOiBbXQogICAgfSwgVFJFRV9DT05GSUcpLCBUQUJMRV9DT05GSUcpLCBESUFMT0dfQ09ORklHKSwge30sIHsKICAgICAgdXBsb2FkVmlzaWJsZTogZmFsc2UsCiAgICAgIHVwbG9hZExvYWRpbmc6IGZhbHNlLAogICAgICBpbXBvcnREYXRhOiB7CiAgICAgICAgY2F0YWxvZ0lkOiAnJwogICAgICB9CiAgICB9KTsKICB9LAogIGNvbXB1dGVkOiBfb2JqZWN0U3ByZWFkKHsKICAgIC8vIOmFjee9ruWIl+ihqOaOpeWPo+aWueazle+8muWPquaciemFjee9ruS6huivpeiuoeeul+WxnuaApyDmiY3kvJrmiafooYwgdGFibGUgbWl4aW5z5Lit55qEZ2V0RGF0YeaWueazlQogICAgZGF0YU1ldGhvZDogZnVuY3Rpb24gZGF0YU1ldGhvZCgpIHsKICAgICAgcmV0dXJuIEFQSS5xdWVyeURXVGFibGU7CiAgICB9LAogICAgYWN0aW9uVXJsOiBmdW5jdGlvbiBhY3Rpb25VcmwoXykgewogICAgICByZXR1cm4gIiIuY29uY2F0KHdpbmRvdy5jb250ZXh0LnBvcnRhbCwgIi9iaXovZGF0YVJlc291cmNlL2R3VGFibGUvdjEvaW1wb3J0RmlsZSIpOwogICAgfQogIH0sIG1hcFN0YXRlKHsKICAgIGhlYWRlcnM6IGZ1bmN0aW9uIGhlYWRlcnMoc3RhdGUpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICBBdXRob3JpemF0aW9uOiAiQmVhcmVyICIuY29uY2F0KHN0YXRlLmxvZ2luLmN1cnJlbnRVc2VyLnRva2VuKQogICAgICB9OwogICAgfQogIH0pKSwKICBtZXRob2RzOiB7CiAgICBnZXREaWN0aW9uYXJ5QnlDb2RlOiBnZXREaWN0aW9uYXJ5QnlDb2RlLAogICAgLy8g5qCRIC0tLS0tLS0tLS0tLS0tLS0tCiAgICBnZXRUcmVlTm9kZXM6IGZ1bmN0aW9uIGdldFRyZWVOb2RlcygpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgX3lpZWxkJEFQSSRnZXREV1RyZWUsIF95aWVsZCRBUEkkZ2V0RFdUcmVlJCwgdmFsdWU7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5nZXREV1RyZWUoKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF95aWVsZCRBUEkkZ2V0RFdUcmVlID0gX2NvbnRleHQuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkQVBJJGdldERXVHJlZSQgPSBfeWllbGQkQVBJJGdldERXVHJlZS52YWx1ZTsKICAgICAgICAgICAgICB2YWx1ZSA9IF95aWVsZCRBUEkkZ2V0RFdUcmVlJCA9PT0gdm9pZCAwID8gW10gOiBfeWllbGQkQVBJJGdldERXVHJlZSQ7CiAgICAgICAgICAgICAgX3RoaXMyLmRlZmF1bHRFeHBhbmRlZEtleXMgPSBbKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWx1ZVswXS5pZCkgfHwgJyddOwogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoInJldHVybiIsIHsKICAgICAgICAgICAgICAgIGRhdGE6IHZhbHVlIHx8IFtdCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICByZWxvYWRUcmVlOiBmdW5jdGlvbiByZWxvYWRUcmVlKCkgewogICAgICB0aGlzLiRyZWZzLmFwcEFzeW5jVHJlZS5nZXRUcmVlRGF0YSgpOwogICAgfSwKICAgIC8qKg0KICAgICAqIEBkZXNjcmlwdGlvbjogdHJlZUFjdGlvbnPmlK/mjIHlh73mlbDkuZ/mlK/mjIHmlbDnu4TvvIznlLHkuo7lrp7pmYXlnLrmma/lvZPkuK0g5Y+v6IO95Lya5Yqo5oCB6K6+572u5oyJ6ZKu77yM5pWF5Lul5Ye95pWw56S65L6L5p2l5bGV56S6DQogICAgICogQHBhcmFtIHsqfSBkYXRhIOW9k+WJjeeCueWHu+iKgueCueaVsOaNrg0KICAgICAqIEByZXR1cm4geyp9IOW9k+WJjeiKgueCueWxleekuueahOaTjeS9nOmhueaVsOe7hA0KICAgICAqLwogICAgdHJlZUFjdGlvbnM6IGZ1bmN0aW9uIHRyZWVBY3Rpb25zKGRhdGEpIHsKICAgICAgLy8g5qC56IqC54K55Yik5pat5pa55byP5Lul5Lia5Yqh5Li65YeG77yM5q2k5aSE5LuF5Li656S65L6LCiAgICAgIHJldHVybiBbewogICAgICAgIGxhYmVsOiAn5re75YqgJywKICAgICAgICB0eXBlOiAnYWRkJywKICAgICAgICBtZXRob2Q6IHRoaXMuYWRkTm9kZQogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfnvJbovpEnLAogICAgICAgIHR5cGU6ICdlZGl0JywKICAgICAgICBtZXRob2Q6IHRoaXMuZWRpdE5vZGUKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn5Yig6ZmkJywKICAgICAgICB0eXBlOiAnZGVsZXRlJywKICAgICAgICBtZXRob2Q6IHRoaXMuZGVsTm9kZQogICAgICB9XTsKICAgIH0sCiAgICBvblRyZWVOb2RlQ2xpY2s6IGZ1bmN0aW9uIG9uVHJlZU5vZGVDbGljayhub2RlKSB7CiAgICAgIHZhciBfdGhpcyRjdXJOb2RlOwogICAgICBpZiAobm9kZS5pZCA9PT0gKChfdGhpcyRjdXJOb2RlID0gdGhpcy5jdXJOb2RlKSA9PT0gbnVsbCB8fCBfdGhpcyRjdXJOb2RlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRjdXJOb2RlLmlkKSkgcmV0dXJuOwogICAgICB0aGlzLmN1ck5vZGUgPSBfb2JqZWN0U3ByZWFkKHt9LCBub2RlKTsKICAgICAgdGhpcy5pbXBvcnREYXRhLmNhdGFsb2dJZCA9IHRoaXMuY3VyTm9kZS5pZDsKICAgICAgdGhpcy5nZXREYXRhKCk7CiAgICB9LAogICAgYWRkTm9kZTogZnVuY3Rpb24gYWRkTm9kZShwYXJhbXMsIG5vZGUpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7CiAgICAgICAgdmFyIGNvZGUsIG5hbWUsIGlkLCBuZXdOb2RlLCBfeWllbGQkQVBJJGFkZERXVHJlZSwgc3RhdGUsIG1lc3NhZ2U7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIGNvZGUgPSBwYXJhbXMuY29kZSwgbmFtZSA9IHBhcmFtcy5uYW1lOwogICAgICAgICAgICAgIGlkID0gbm9kZS5pZDsKICAgICAgICAgICAgICBuZXdOb2RlID0gewogICAgICAgICAgICAgICAgY29kZTogY29kZSwKICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsCiAgICAgICAgICAgICAgICBwYXJlbnRJZDogaWQKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMzsKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDY7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5hZGREV1RyZWUobmV3Tm9kZSk7CiAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICBfeWllbGQkQVBJJGFkZERXVHJlZSA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJEFQSSRhZGREV1RyZWUuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkYWRkRFdUcmVlLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczMucmVsb2FkVHJlZSgpOwogICAgICAgICAgICAgICAgX3RoaXMzLiRtZXNzYWdlLnN1Y2Nlc3MoJ+a3u+WKoOi1hOa6kOebruW9leaIkOWKn++8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE1OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMTI7CiAgICAgICAgICAgICAgX2NvbnRleHQyLnQwID0gX2NvbnRleHQyWyJjYXRjaCJdKDMpOwogICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0Mi50MCB8fCAn5re75Yqg6LWE5rqQ55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIsIG51bGwsIFtbMywgMTJdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIGVkaXROb2RlOiBmdW5jdGlvbiBlZGl0Tm9kZShwYXJhbXMpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgdmFyIGNvZGUsIG5hbWUsIHBhcmVudElkLCBpZCwgbmV3Tm9kZSwgX3lpZWxkJEFQSSRlZGl0RFdUcmVlLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgY29kZSA9IHBhcmFtcy5jb2RlLCBuYW1lID0gcGFyYW1zLm5hbWUsIHBhcmVudElkID0gcGFyYW1zLnBhcmVudElkLCBpZCA9IHBhcmFtcy5pZDsKICAgICAgICAgICAgICBuZXdOb2RlID0gewogICAgICAgICAgICAgICAgY29kZTogY29kZSwKICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUsCiAgICAgICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgICAgICBwYXJlbnRJZDogcGFyZW50SWQKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIF9jb250ZXh0My5wcmV2ID0gMjsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIEFQSS5lZGl0RFdUcmVlKG5ld05vZGUpOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRlZGl0RFdUcmVlID0gX2NvbnRleHQzLnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGVkaXREV1RyZWUuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkZWRpdERXVHJlZS5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXM0LnJlbG9hZFRyZWUoKTsKICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKCfnvJbovpHotYTmupDnm67lvZXmiJDlip/vvIEnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxNDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDExOwogICAgICAgICAgICAgIF9jb250ZXh0My50MCA9IF9jb250ZXh0M1siY2F0Y2giXSgyKTsKICAgICAgICAgICAgICBfdGhpczQuJG1lc3NhZ2Uud2FybmluZyhfY29udGV4dDMudDAgfHwgJ+e8lui+kei1hOa6kOebruW9leWksei0pe+8gScpOwogICAgICAgICAgICBjYXNlIDE0OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzLCBudWxsLCBbWzIsIDExXV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBkZWxOb2RlOiBmdW5jdGlvbiBkZWxOb2RlKHBhcmFtcywgbm9kZSkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNCgpIHsKICAgICAgICB2YXIgX3lpZWxkJEFQSSRyZW1vdmVEV1RyLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAwOwogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gQVBJLnJlbW92ZURXVHJlZShub2RlLmlkKTsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgIF95aWVsZCRBUEkkcmVtb3ZlRFdUciA9IF9jb250ZXh0NC5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJEFQSSRyZW1vdmVEV1RyLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJHJlbW92ZURXVHIubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzNS5yZWxvYWRUcmVlKCk7CiAgICAgICAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uuc3VjY2Vzcygn5Yig6Zmk6LWE5rqQ55uu5b2V5oiQ5Yqf77yBJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMTI7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICBfY29udGV4dDQucHJldiA9IDk7CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnQwID0gX2NvbnRleHQ0WyJjYXRjaCJdKDApOwogICAgICAgICAgICAgIF90aGlzNS4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0NC50MCB8fCAn5Yig6Zmk6LWE5rqQ55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQsIG51bGwsIFtbMCwgOV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g5YiX6KGoIC0tLS0tLS0tLS0tLQogICAgYWRkVGFibGU6IGZ1bmN0aW9uIGFkZFRhYmxlKCkgewogICAgICB2YXIgX3RoaXMkY3VyTm9kZTI7CiAgICAgIGlmICghKChfdGhpcyRjdXJOb2RlMiA9IHRoaXMuY3VyTm9kZSkgIT09IG51bGwgJiYgX3RoaXMkY3VyTm9kZTIgIT09IHZvaWQgMCAmJiBfdGhpcyRjdXJOb2RlMi5pZCkpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqei1hOa6kOmhueaJgOWxnuebruW9lScpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLmRpYWxvZ1RpdGxlID0gJ+aWsOWinuaVsOaNrui1hOa6kOmhuSc7CiAgICAgIHRoaXMuZGlhbG9nZERhdGEgPSB7CiAgICAgICAgZHdDYXRhbG9nc0lkOiB0aGlzLmN1ck5vZGUuaWQKICAgICAgfTsKICAgICAgdGhpcy5kaWFsb2dWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICBlZGl0VGFibGU6IGZ1bmN0aW9uIGVkaXRUYWJsZShyb3cpIHsKICAgICAgdGhpcy5kaWFsb2dUaXRsZSA9ICJcdTdGMTZcdThGOTEgLSAiLmNvbmNhdChyb3cubmFtZSk7CiAgICAgIHRoaXMuZGlhbG9nZERhdGEgPSByb3c7CiAgICAgIHRoaXMuZGlhbG9nVmlzaWJsZSA9IHRydWU7CiAgICB9LAogICAgZmllbGRNYW5hZ2U6IGZ1bmN0aW9uIGZpZWxkTWFuYWdlKCkgewogICAgICB0aGlzLmZpZWxkRGlhbG9nVmlzaWJsZSA9IHRydWU7CiAgICB9LAogICAgZGVsVGFibGU6IGZ1bmN0aW9uIGRlbFRhYmxlKHJvdykgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgdGhpcy4kY29uZmlybSgiXHU2QjY0XHU2NENEXHU0RjVDXHU1QzA2XHU1MjIwXHU5NjY0XHU1MjA2XHU3QzdCXHVGRjA4Ii5jb25jYXQocm93Lm5hbWUsICJcdUZGMDksIFx1NjYyRlx1NTQyNlx1N0VFN1x1N0VFRD8iKSwgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNSgpIHsKICAgICAgICB2YXIgX3lpZWxkJEFQSSRyZW1vdmVEV1NvLCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ1LnByZXYgPSAwOwogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gQVBJLnJlbW92ZURXU291cmNlKHJvdy5pZCk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkQVBJJHJlbW92ZURXU28gPSBfY29udGV4dDUuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRBUEkkcmVtb3ZlRFdTby5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJEFQSSRyZW1vdmVEV1NvLm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczYuZ2V0RGF0YSgpOwogICAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLnN1Y2Nlc3MoJ+WIoOmZpOi1hOa6kOmhueaIkOWKn++8gScpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBfdGhpczYuJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlIHx8ICfliKDpmaTotYTmupDpobnlpLHotKXvvIEnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAxMjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgIF9jb250ZXh0NS5wcmV2ID0gOTsKICAgICAgICAgICAgICBfY29udGV4dDUudDAgPSBfY29udGV4dDVbImNhdGNoIl0oMCk7CiAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQ1LnQwIHx8ICfliKDpmaTotYTmupDpobnlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNSwgbnVsbCwgW1swLCA5XV0pOwogICAgICB9KSkpLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgIH0sCiAgICBvbkJlZm9yZUdldERhdGE6IGZ1bmN0aW9uIG9uQmVmb3JlR2V0RGF0YShxdWVyeVBhcmFtcywgZm9ybURhdGEpIHsKICAgICAgdGhpcy5zZXRGaWx0ZXJWYWx1ZSh0aGlzLnF1ZXJ5UGFyYW1zLCB0aGlzLmRlZmF1bHRGaWx0ZXIsICdkd0NhdGFsb2dzSWQnLCB0aGlzLmN1ck5vZGUuaWQpOwogICAgfSwKICAgIG9uQ29uZmlybTogZnVuY3Rpb24gb25Db25maXJtKGRhdGEsIHBEYXRhKSB7CiAgICAgIHRoaXMuZ2V0RGF0YSgpOwogICAgfSwKICAgIHB1Ymxpc2hUYWJsZTogZnVuY3Rpb24gcHVibGlzaFRhYmxlKGRhdGEpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTYoKSB7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU2JChfY29udGV4dDYpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ni5wcmV2ID0gX2NvbnRleHQ2Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF90aGlzNy5yb3dEYXRhID0gZGF0YTsKICAgICAgICAgICAgICBfdGhpczcucHV0T3V0VmlzaWJsZSA9IHRydWU7CiAgICAgICAgICAgICAgLy8gdGhpcy4kY29uZmlybShg5q2k5pON5L2c5bCG5Y+R5biD77yIJHtkYXRhLm5hbWV977yJLCDmmK/lkKbnu6fnu60/YCwgJ+aPkOekuicsIHsKICAgICAgICAgICAgICAvLyAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICAgICAgICAvLyAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgICAgICAgIC8vICAgdHlwZTogJ3dhcm5pbmcnLAogICAgICAgICAgICAgIC8vIH0pCiAgICAgICAgICAgICAgLy8gICAudGhlbihhc3luYyAoKSA9PiB7CiAgICAgICAgICAgICAgLy8gICAgIHRyeSB7CiAgICAgICAgICAgICAgLy8gICAgICAgY29uc3QgeyBzdGF0ZSwgbWVzc2FnZSB9ID0gYXdhaXQgQVBJLnB1Ymxpc2hEV1NvdXJjZShkYXRhLmlkKTsKICAgICAgICAgICAgICAvLyAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAvLyAgICAgICAgIHRoaXMuZ2V0RGF0YSgpOwogICAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCfotYTmupDpobnlj5HluIPmiJDlip/vvIEnKTsKICAgICAgICAgICAgICAvLyAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIC8vICAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgJ+i1hOa6kOmhueWPkeW4g+Wksei0pe+8gScpOwogICAgICAgICAgICAgIC8vICAgICAgIH0KICAgICAgICAgICAgICAvLyAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgICAgLy8gICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKGVyciB8fCAn6LWE5rqQ6aG55Y+R5biD5aSx6LSl77yBJyk7CiAgICAgICAgICAgICAgLy8gICAgIH0KICAgICAgICAgICAgICAvLyAgIH0pCiAgICAgICAgICAgICAgLy8gICAuY2F0Y2goKCkgPT4ge30pOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTYpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBkb3dubG9hZDogZnVuY3Rpb24gZG93bmxvYWQoKSB7CiAgICAgIHZhciBmaWxlVHlwZSA9ICfmlbDmja7mmI7nu4blsYLmlbDmja7otYTmupDooajmuIXljZUueGxzeCc7CiAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogICAgICBhLmhyZWYgPSB3aW5kb3cuY29udGV4dC5kb3dubG9hZCArIGZpbGVUeXBlOwogICAgICBhLmRvd25sb2FkID0gZmlsZVR5cGU7IC8vIOiuvue9ruS4i+i9veaWh+S7tuaWh+S7tuWQjQogICAgICBhLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7CiAgICAgIGEuY2xpY2soKTsKICAgICAgYS5yZW1vdmUoKTsKICAgIH0sCiAgICAvLyAg5a+85YWl5paH5Lu25LiK5Lyg5YmNCiAgICBiZWZvcmVVcGxvYWQ6IGZ1bmN0aW9uIGJlZm9yZVVwbG9hZChmaWxlKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgIF90aGlzOC51cGxvYWRMb2FkaW5nID0gdHJ1ZTsKICAgICAgICB2YXIgc2l6ZSA9IGZpbGUuc2l6ZSwKICAgICAgICAgIG5hbWUgPSBmaWxlLm5hbWU7CiAgICAgICAgX3RoaXM4LiRjb25maXJtKCJcdThCRjdcdTc4NkVcdThCQTRcdTY2MkZcdTU0MjZcdTVCRkNcdTUxNjUgXHUyMDFDIi5jb25jYXQobmFtZSwgIlx1MjAxRCBcdUZGMUYiKSwgJ+aPkOekuicsIHsKICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu6K6kJywKICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICflj5bmtognLAogICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoXykgewogICAgICAgICAgdmFyIHBhc3NlZE9yTm90ID0gdHJ1ZTsgLy8g5piv5ZCm6YCa6L+H6aqM6K+BCiAgICAgICAgICB2YXIgdHlwZVJlZ3VsYXIgPSAvXC4oeGxzfHhsc3gpJC9pOwogICAgICAgICAgdmFyIHZlcmlmaWNhdGlvbiA9IFt7CiAgICAgICAgICAgIGNvbmRpdGlvbjogIXR5cGVSZWd1bGFyLnRlc3QobmFtZSksCiAgICAgICAgICAgIHJlc3VsdDogZnVuY3Rpb24gcmVzdWx0KCkgewogICAgICAgICAgICAgIHJldHVybiBfdGhpczguJG1lc3NhZ2UuZXJyb3IoJ+WPquiDveS4iuS8oHhsc+aIlnhsc3jmlofku7bnsbvlnosnKTsKICAgICAgICAgICAgfQogICAgICAgICAgfV07CiAgICAgICAgICB2ZXJpZmljYXRpb24uZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgICAgICBpZiAoaXRlbS5jb25kaXRpb24pIHsKICAgICAgICAgICAgICBpdGVtLnJlc3VsdCgpOwogICAgICAgICAgICAgIHBhc3NlZE9yTm90ID0gZmFsc2U7CiAgICAgICAgICAgICAgX3RoaXM4LnVwbG9hZExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgICBwYXNzZWRPck5vdCA/IHJlc29sdmUoKSA6IHJlamVjdCgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgIF90aGlzOC51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICBfdGhpczguJG1lc3NhZ2Uud2FybmluZygn5bey5Y+W5raI5LiK5LygJyk7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vIOWvvOWFpeaWh+S7tuS4iuS8oOaIkOWKnwogICAgaGFuZGxlU3VjY2VzczogZnVuY3Rpb24gaGFuZGxlU3VjY2VzcyhyZXMpIHsKICAgICAgaWYgKHJlcy5zdGF0ZSkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uuc3VjY2Vzcygn5a+85YWl5oiQ5YqfJyk7CiAgICAgICAgdGhpcy51cGxvYWRMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgdGhpcy5nZXREYXRhKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihyZXMubWVzc2FnZSk7CiAgICAgIH0KICAgIH0sCiAgICAvLyDlr7zlhaXmlofku7bkuIrkvKDlpLHotKUKICAgIC8vIOWvvOWFpeaWh+S7tuS4iuS8oOWksei0pQogICAgaGFuZGxlRXJyb3I6IGZ1bmN0aW9uIGhhbmRsZUVycm9yKGVycikgewogICAgICBpZiAoZXJyKSB7CiAgICAgICAgdmFyIGVyckRhdGEgPSBlcnIudG9TdHJpbmcoKS5yZXBsYWNlKCdFcnJvcjonLCAnJyk7CiAgICAgICAgZXJyRGF0YSA9IEpTT04ucGFyc2UoZXJyRGF0YSk7CiAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcihlcnJEYXRhLm1lc3NhZ2UgfHwgJ+WvvOWFpeWksei0pe+8jOivt+mHjeivlScpOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoJ+WvvOWFpeWksei0pe+8jOivt+mHjeivlScpOwogICAgICB9CiAgICAgIHRoaXMudXBsb2FkTG9hZGluZyA9IGZhbHNlOwogICAgfQogIH0KfTs="},null]}