Files
education/frontend/node_modules/.cache/babel-loader/ab85763f8869939f3807a64e919391f9.json
T

1 line
27 KiB
JSON

{"remainingRequest":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\thread-loader\\dist\\cjs.js!C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js!C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\teachOffice\\teacher\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\views\\teachOffice\\teacher\\index.vue","mtime":1787653241904},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\babel.config.js","mtime":1787567871334},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\thread-loader\\dist\\cjs.js","mtime":1787309791954},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js","mtime":1787309793142},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js","mtime":1787309793790}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiQzovVXNlcnMvQWRtaW4vRGVza3RvcC9lZHVjYXRpb24vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnJlcGxhY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcudHJpbS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IHsgbGlzdFRlYWNoZXIsIGdldFRlYWNoZXIsIGFkZFRlYWNoZXIsIHVwZGF0ZVRlYWNoZXIsIGRpc2FibGVUZWFjaGVyLCBnZXRUZWFjaGVyQXR0cmlidXRlLCB1cGRhdGVUZWFjaGVyQXR0cmlidXRlIH0gZnJvbSAnQC9hcGkvdGVhY2hPZmZpY2UvdGVhY2hlcic7CmltcG9ydCB7IGdldERpY3RzIH0gZnJvbSAnQC9hcGkvc3lzdGVtL2RpY3QvZGF0YSc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnVGVhY2hlcicsCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIC8vIOafpeivouadoeS7tu+8iOS7heWQjuerryBKWUJNYXBwZXIueG1sIOaUr+aMgeeahOWtl+aute+8mmp5eG0g5qih57OKIC8ganlzZGgg562J5YC8IC8gemMg5qih57OKIC8ganlsYiDnrYnlgLzvvIkKICAgICAgc2VhcmNoRm9ybTogewogICAgICAgIGp5eG06ICcnLAogICAgICAgIGp5c2RoOiAnJywKICAgICAgICB6YzogJycsCiAgICAgICAganlsYjogJycKICAgICAgfSwKICAgICAgLy8g5YiX6KGoCiAgICAgIGxvYWRpbmc6IGZhbHNlLAogICAgICB0YWJsZURhdGE6IFtdLAogICAgICBzZWxlY3RlZFJvd3M6IFtdLAogICAgICBwYWdpbmF0aW9uOiB7CiAgICAgICAgcGFnZU51bTogMSwKICAgICAgICBwYWdlU2l6ZTogMjAsCiAgICAgICAgdG90YWw6IDAKICAgICAgfSwKICAgICAgLy8g5paw5bu6CiAgICAgIGFkZERpYWxvZ1Zpc2libGU6IGZhbHNlLAogICAgICBhZGRTYXZpbmc6IGZhbHNlLAogICAgICBhZGRGb3JtOiB0aGlzLmNyZWF0ZUVtcHR5QWRkRm9ybSgpLAogICAgICBhZGRSdWxlczogewogICAgICAgICd0ZWFjaGVyLmp5eG0nOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl5pWZ5ZGY5aeT5ZCNJywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgICd0ZWFjaGVyLnhoJzogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpeW6j+WPtycsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICAndGVhY2hlci56eWpzendkaic6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaXkuJPkuJrmioDmnK/ogYzliqHnrYnnuqcnLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0sCiAgICAgICAgJ3RlYWNoZXIueHNseCc6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6nomZrlrp7nsbvlnosnLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9XSwKICAgICAgICAndGVhY2hlci5qeWxiJzogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeaVmeWRmOexu+WIqycsCiAgICAgICAgICB0cmlnZ2VyOiAnY2hhbmdlJwogICAgICAgIH1dLAogICAgICAgICd0ZWFjaGVyLnp6bGInOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5Zyo6IGM57G75YirJywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0sCiAgICAgICAgJ3RlYWNoZXIuZXd5eGticyc6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaXpop3lpJblhYHorrjlvIDnj63mlbAnLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9XSwKICAgICAgICAndGVhY2hlci5kc2xiJzogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeWvvOW4iOexu+WIqycsCiAgICAgICAgICB0cmlnZ2VyOiAnY2hhbmdlJwogICAgICAgIH1dLAogICAgICAgICd0ZWFjaGVyLnh5JzogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpeWtpue8mCcsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICAndGVhY2hlci5zZnpoJzogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpei6q+S7veivgeWPtycsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICAndGVhY2hlci54Yic6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6nmgKfliKsnLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9XSwKICAgICAgICAndGVhY2hlci53eGp5JzogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+mAieaLqeWkluiureaVmeWRmCcsCiAgICAgICAgICB0cmlnZ2VyOiAnY2hhbmdlJwogICAgICAgIH1dLAogICAgICAgICd0ZWFjaGVyLnd4eXknOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5aSW6K6t6K+R5ZGYJywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0sCiAgICAgICAgJ3RlYWNoZXIuenpsanknOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5pS/5rK757G75pWZ5ZGYJywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgLy8g57yW6L6RCiAgICAgIGVkaXREaWFsb2dWaXNpYmxlOiBmYWxzZSwKICAgICAgZWRpdExvYWRpbmc6IGZhbHNlLAogICAgICBlZGl0U2F2aW5nOiBmYWxzZSwKICAgICAgZWRpdEZvcm06IHt9LAogICAgICBlZGl0UnVsZXM6IHsKICAgICAgICBqeXhtOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl5pWZ5ZGY5aeT5ZCNJywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIGp5c2RoOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl5pWZ56CU5a6k5Luj5Y+3JywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIHhiOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5oCn5YirJywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0sCiAgICAgICAgc2Z6aDogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpei6q+S7veivgeWPtycsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICB6eWpzendkajogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpeS4k+S4muaKgOacr+iBjOWKoeetiee6pycsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICB4c2x4OiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup6Jma5a6e57G75Z6LJywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0sCiAgICAgICAganlsYjogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpeaVmeWRmOexu+WIqycsCiAgICAgICAgICB0cmlnZ2VyOiAnYmx1cicKICAgICAgICB9XSwKICAgICAgICB6emxiOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl5Zyo6IGM57G75YirJywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJwogICAgICAgIH1dLAogICAgICAgIGRzbGI6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaXlr7zluIjnsbvliKsnLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0sCiAgICAgICAgeHk6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fovpPlhaXlrabnvJgnLAogICAgICAgICAgdHJpZ2dlcjogJ2JsdXInCiAgICAgICAgfV0sCiAgICAgICAgZXd5eGticzogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogJ+ivt+i+k+WFpemineWkluWFgeiuuOW8gOePreaVsCcsCiAgICAgICAgICB0cmlnZ2VyOiAnY2hhbmdlJwogICAgICAgIH1dLAogICAgICAgIHd4ank6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6nlpJborq3mlZnlkZgnLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9XSwKICAgICAgICB3eHl5OiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAn6K+36YCJ5oup5aSW6K6t6K+R5ZGYJywKICAgICAgICAgIHRyaWdnZXI6ICdjaGFuZ2UnCiAgICAgICAgfV0sCiAgICAgICAgenpsank6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfor7fpgInmi6nmlL/msrvnsbvmlZnlkZgnLAogICAgICAgICAgdHJpZ2dlcjogJ2NoYW5nZScKICAgICAgICB9XQogICAgICB9LAogICAgICAvLyDmlZnlkZjlsZ7mgKcKICAgICAgYXR0cmlidXRlVmlzaWJsZTogZmFsc2UsCiAgICAgIGF0dHJpYnV0ZU1vZGU6ICd2aWV3JywKICAgICAgYXR0cmlidXRlRGF0YToge30sCiAgICAgIGF0dHJpYnV0ZUZvcm06IHt9LAogICAgICBhdHRyaWJ1dGVMb2FkaW5nOiBmYWxzZSwKICAgICAgYXR0cmlidXRlU2F2aW5nOiBmYWxzZSwKICAgICAgYXR0cmlidXRlSnliaDogJycsCiAgICAgIC8vIOWtl+WFuOmAiemhuQogICAgICB6eWpzendkak9wdGlvbnM6IFtdLAogICAgICBqeWxiT3B0aW9uczogW10sCiAgICAgIHp6bGJPcHRpb25zOiBbXSwKICAgICAgZHNsYk9wdGlvbnM6IFtdCiAgICB9OwogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHRoaXMuZmV0Y2hMaXN0KCk7CiAgICB0aGlzLmxvYWREaWN0cygpOwogIH0sCiAgbWV0aG9kczogewogICAgLyoqIOe7n+S4gOagvOW8j+WMluWQjuerryBMb2NhbERhdGVUaW1l77yI5Y676ZmkIFTjgIHmiKrmlq3liLDnp5LvvIkgKi9mbXREYXRlVGltZTogZnVuY3Rpb24gZm10RGF0ZVRpbWUodmFsKSB7CiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJykgcmV0dXJuICcnOwogICAgICByZXR1cm4gU3RyaW5nKHZhbCkucmVwbGFjZSgnVCcsICcgJykuc2xpY2UoMCwgMTkpOwogICAgfSwKICAgIC8qKiDnqbrlgLzmmL7npLrkuLogJy0nICovZm10VmFsOiBmdW5jdGlvbiBmbXRWYWwodmFsKSB7CiAgICAgIHJldHVybiB2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJyA/ICctJyA6IHZhbDsKICAgIH0sCiAgICAvKiog5oCn5Yir77yaMS3nlLcgMC3lpbPvvIjkuI7lkI7nq68gVGVhY2hlckxpc3RWTyDms6jph4rlj4rlrablkZjpobXnuqblrprkuIDoh7TvvIkgKi9mbXRHZW5kZXI6IGZ1bmN0aW9uIGZtdEdlbmRlcih2YWwpIHsKICAgICAgaWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCB8fCB2YWwgPT09ICcnKSByZXR1cm4gJy0nOwogICAgICByZXR1cm4gTnVtYmVyKHZhbCkgPT09IDEgPyAn55S3JyA6IE51bWJlcih2YWwpID09PSAwID8gJ+WlsycgOiBTdHJpbmcodmFsKTsKICAgIH0sCiAgICAvKiog6Jma5a6e57G75Z6L77yaMS3lrp7mlZkgMC3pnZ7lrp7mlZnvvIjpobnnm67nuqblrpogMS3lrp4gMC3omZrvvIkgKi9mbXRYc2x4OiBmdW5jdGlvbiBmbXRYc2x4KHZhbCkgewogICAgICBpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkIHx8IHZhbCA9PT0gJycpIHJldHVybiAnLSc7CiAgICAgIHJldHVybiBOdW1iZXIodmFsKSA9PT0gMSA/ICflrp7mlZknIDogTnVtYmVyKHZhbCkgPT09IDAgPyAn6Z2e5a6e5pWZJyA6IFN0cmluZyh2YWwpOwogICAgfSwKICAgIC8qKiAwLzEg5qCH5b+X5L2N5qC85byP5YyWICovZm10RmxhZzogZnVuY3Rpb24gZm10RmxhZyh2YWwsIHllc0xhYmVsLCBub0xhYmVsKSB7CiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQgfHwgdmFsID09PSAnJykgcmV0dXJuICctJzsKICAgICAgcmV0dXJuIE51bWJlcih2YWwpID09PSAxID8geWVzTGFiZWwgOiBOdW1iZXIodmFsKSA9PT0gMCA/IG5vTGFiZWwgOiBTdHJpbmcodmFsKTsKICAgIH0sCiAgICAvKiog56e76Zmk56m65YC8ICovbG9hZERpY3RzOiBmdW5jdGlvbiBsb2FkRGljdHMoKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIGdldERpY3RzKCd0ZWFjaGVyX3p5anN6d2RqJykudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMuenlqc3p3ZGpPcHRpb25zID0gcmVzLmRhdGEgfHwgW107CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgICAgZ2V0RGljdHMoJ3RlYWNoZXJfanlsYicpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzLmp5bGJPcHRpb25zID0gcmVzLmRhdGEgfHwgW107CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgICAgZ2V0RGljdHMoJ3RlYWNoZXJfenpsYicpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzLnp6bGJPcHRpb25zID0gcmVzLmRhdGEgfHwgW107CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgICAgZ2V0RGljdHMoJ3RlYWNoZXJfZHNsYicpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzLmRzbGJPcHRpb25zID0gcmVzLmRhdGEgfHwgW107CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgIH0sCiAgICBjbGVhblBheWxvYWQ6IGZ1bmN0aW9uIGNsZWFuUGF5bG9hZChvYmopIHsKICAgICAgdmFyIHBheWxvYWQgPSB7fTsKICAgICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICB2YXIgdmFsdWUgPSBvYmpba2V5XTsKICAgICAgICBpZiAodmFsdWUgIT09ICcnICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgIHBheWxvYWRba2V5XSA9IHZhbHVlOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIHJldHVybiBwYXlsb2FkOwogICAgfSwKICAgIC8qKiDliJvlu7rnqbrnmb3mlrDlop7ooajljZUgKi9jcmVhdGVFbXB0eUFkZEZvcm06IGZ1bmN0aW9uIGNyZWF0ZUVtcHR5QWRkRm9ybSgpIHsKICAgICAgcmV0dXJuIHsKICAgICAgICB0ZWFjaGVyOiB7CiAgICAgICAgICBqeWJoOiAnJywKICAgICAgICAgIGp5eG06ICcnLAogICAgICAgICAganlzZGg6ICcnLAogICAgICAgICAgeGg6ICcnLAogICAgICAgICAgenlqc3p3ZGo6ICcnLAogICAgICAgICAgenlqc3p3ZGpzajogJycsCiAgICAgICAgICB4c2x4OiAxLAogICAgICAgICAganlsYjogJycsCiAgICAgICAgICB6emxiOiAnJywKICAgICAgICAgIGRzbGI6ICcnLAogICAgICAgICAgeHk6ICcnLAogICAgICAgICAgc2Z6aDogJycsCiAgICAgICAgICB4YjogMSwKICAgICAgICAgIHd4ank6IDAsCiAgICAgICAgICB3eHl5OiAwLAogICAgICAgICAgenpsank6IDAsCiAgICAgICAgICBld3l4a2JzOiAwLAogICAgICAgICAgemM6ICcnLAogICAgICAgICAgc2poOiAnJywKICAgICAgICAgIGtoOiAnJywKICAgICAgICAgIHB5OiAnJywKICAgICAgICAgIHpjc2o6ICcnLAogICAgICAgICAgYno6ICcnCiAgICAgICAgfSwKICAgICAgICBhdHRyaWJ1dGVzOiB7CiAgICAgICAgICB4bDogJycsCiAgICAgICAgICB4dzogJycsCiAgICAgICAgICBqbDogMCwKICAgICAgICAgIGpsanNycTogJycsCiAgICAgICAgICB6cjogMCwKICAgICAgICAgIHp3OiAnJywKICAgICAgICAgIHp3c2o6ICcnLAogICAgICAgICAganN6dzogJycsCiAgICAgICAgICBqc3p3c2o6ICcnLAogICAgICAgICAganNkajogJycsCiAgICAgICAgICBqc2Rqc2o6ICcnLAogICAgICAgICAganh3ejogJycsCiAgICAgICAgICBqeHd6c2o6ICcnLAogICAgICAgICAgY3NzajogJycsCiAgICAgICAgICByd2d6c2o6ICcnLAogICAgICAgICAgcmR6amw6ICcnLAogICAgICAgICAgZmJsdzogJycKICAgICAgICB9CiAgICAgIH07CiAgICB9LAogICAgLy8gPT09PT09PT09PT09PT09PT09PT0g5YiX6KGoID09PT09PT09PT09PT09PT09PT09CiAgICBidWlsZFF1ZXJ5OiBmdW5jdGlvbiBidWlsZFF1ZXJ5KCkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgdmFyIHBhcmFtcyA9IHt9OwogICAgICBbJ2p5eG0nLCAnanlzZGgnLCAnemMnLCAnanlsYiddLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewogICAgICAgIHZhciB2YWx1ZSA9IF90aGlzMi5zZWFyY2hGb3JtW2tleV07CiAgICAgICAgaWYgKHZhbHVlICE9PSAnJyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICBwYXJhbXNba2V5XSA9IFN0cmluZyh2YWx1ZSkudHJpbSgpOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIHJldHVybiBwYXJhbXM7CiAgICB9LAogICAgZmV0Y2hMaXN0OiBmdW5jdGlvbiBmZXRjaExpc3QoKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICB2YXIgcGFyYW1zID0gX29iamVjdFNwcmVhZCh7CiAgICAgICAgcGFnZU51bTogdGhpcy5wYWdpbmF0aW9uLnBhZ2VOdW0sCiAgICAgICAgcGFnZVNpemU6IHRoaXMucGFnaW5hdGlvbi5wYWdlU2l6ZQogICAgICB9LCB0aGlzLmJ1aWxkUXVlcnkoKSk7CiAgICAgIGxpc3RUZWFjaGVyKHBhcmFtcykudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgICB2YXIgZGF0YSA9IHJlc3BvbnNlLmRhdGEgfHwge307CiAgICAgICAgX3RoaXMzLnRhYmxlRGF0YSA9IGRhdGEucmVjb3JkcyB8fCBbXTsKICAgICAgICBfdGhpczMucGFnaW5hdGlvbi50b3RhbCA9IGRhdGEudG90YWwgfHwgMDsKICAgICAgICBfdGhpczMubG9hZGluZyA9IGZhbHNlOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXMzLnRhYmxlRGF0YSA9IFtdOwogICAgICAgIF90aGlzMy5wYWdpbmF0aW9uLnRvdGFsID0gMDsKICAgICAgICBfdGhpczMubG9hZGluZyA9IGZhbHNlOwogICAgICB9KTsKICAgIH0sCiAgICBoYW5kbGVTZWFyY2g6IGZ1bmN0aW9uIGhhbmRsZVNlYXJjaCgpIHsKICAgICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2VOdW0gPSAxOwogICAgICB0aGlzLmZldGNoTGlzdCgpOwogICAgfSwKICAgIGhhbmRsZVJlc2V0OiBmdW5jdGlvbiBoYW5kbGVSZXNldCgpIHsKICAgICAgdGhpcy5zZWFyY2hGb3JtID0gewogICAgICAgIGp5eG06ICcnLAogICAgICAgIGp5c2RoOiAnJywKICAgICAgICB6YzogJycsCiAgICAgICAganlsYjogJycKICAgICAgfTsKICAgICAgdGhpcy5wYWdpbmF0aW9uLnBhZ2VOdW0gPSAxOwogICAgICB0aGlzLmZldGNoTGlzdCgpOwogICAgfSwKICAgIGhhbmRsZVNpemVDaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVNpemVDaGFuZ2Uoc2l6ZSkgewogICAgICB0aGlzLnBhZ2luYXRpb24ucGFnZVNpemUgPSBzaXplOwogICAgICB0aGlzLnBhZ2luYXRpb24ucGFnZU51bSA9IDE7CiAgICAgIHRoaXMuZmV0Y2hMaXN0KCk7CiAgICB9LAogICAgaGFuZGxlQ3VycmVudENoYW5nZTogZnVuY3Rpb24gaGFuZGxlQ3VycmVudENoYW5nZShwYWdlKSB7CiAgICAgIHRoaXMucGFnaW5hdGlvbi5wYWdlTnVtID0gcGFnZTsKICAgICAgdGhpcy5mZXRjaExpc3QoKTsKICAgIH0sCiAgICBoYW5kbGVTZWxlY3Rpb25DaGFuZ2U6IGZ1bmN0aW9uIGhhbmRsZVNlbGVjdGlvbkNoYW5nZShyb3dzKSB7CiAgICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gcm93czsKICAgIH0sCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PSDml6DlkI7nq6/mjqXlj6PnmoTmk43kvZwgPT09PT09PT09PT09PT09PT09PT0KICAgIGhhbmRsZURlbGV0ZVNlbGVjdGVkOiBmdW5jdGlvbiBoYW5kbGVEZWxldGVTZWxlY3RlZCgpIHsKICAgICAgdGhpcy4kbWVzc2FnZS5pbmZvKCflkI7nq6/mmoLmnKrmj5Dkvpvor6XmjqXlj6MnKTsKICAgIH0sCiAgICBoYW5kbGVJbXBvcnQ6IGZ1bmN0aW9uIGhhbmRsZUltcG9ydCgpIHsKICAgICAgdGhpcy4kbWVzc2FnZS5pbmZvKCflkI7nq6/mmoLmnKrmj5Dkvpvor6XmjqXlj6MnKTsKICAgIH0sCiAgICBoYW5kbGVEb3dubG9hZFRlbXBsYXRlOiBmdW5jdGlvbiBoYW5kbGVEb3dubG9hZFRlbXBsYXRlKCkgewogICAgICB0aGlzLiRtZXNzYWdlLmluZm8oJ+WQjuerr+aaguacquaPkOS+m+ivpeaOpeWPoycpOwogICAgfSwKICAgIC8vID09PT09PT09PT09PT09PT09PT09IOaWsOWiniA9PT09PT09PT09PT09PT09PT09PQogICAgaGFuZGxlTmV3OiBmdW5jdGlvbiBoYW5kbGVOZXcoKSB7CiAgICAgIHZhciBfdGhpczQgPSB0aGlzOwogICAgICB0aGlzLmFkZEZvcm0gPSB0aGlzLmNyZWF0ZUVtcHR5QWRkRm9ybSgpOwogICAgICB0aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXM0LiRyZWZzLmFkZEZvcm1SZWYgJiYgX3RoaXM0LiRyZWZzLmFkZEZvcm1SZWYuY2xlYXJWYWxpZGF0ZSgpOwogICAgICB9KTsKICAgICAgdGhpcy5hZGREaWFsb2dWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICBoYW5kbGVBZGRDb25maXJtOiBmdW5jdGlvbiBoYW5kbGVBZGRDb25maXJtKCkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgdGhpcy4kcmVmcy5hZGRGb3JtUmVmLnZhbGlkYXRlKGZ1bmN0aW9uICh2YWxpZCkgewogICAgICAgIGlmICghdmFsaWQpIHJldHVybjsKICAgICAgICB2YXIgZHRvID0gewogICAgICAgICAgdGVhY2hlcjogX3RoaXM1LmJ1aWxkVGVhY2hlclBheWxvYWQoX3RoaXM1LmFkZEZvcm0udGVhY2hlciksCiAgICAgICAgICBhdHRyaWJ1dGVzOiBfdGhpczUuYnVpbGRBdHRyaWJ1dGVQYXlsb2FkKF90aGlzNS5hZGRGb3JtLmF0dHJpYnV0ZXMpCiAgICAgICAgfTsKICAgICAgICBfdGhpczUuYWRkU2F2aW5nID0gdHJ1ZTsKICAgICAgICBhZGRUZWFjaGVyKGR0bykudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uuc3VjY2Vzcygn5paw5aKe5oiQ5YqfJyk7CiAgICAgICAgICBfdGhpczUuYWRkRGlhbG9nVmlzaWJsZSA9IGZhbHNlOwogICAgICAgICAgX3RoaXM1LmZldGNoTGlzdCgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KS5maW5hbGx5KGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzNS5hZGRTYXZpbmcgPSBmYWxzZTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9LAogICAgLyoqIOe7hOijhSBKWUIg6K+35rGC5L2T77yIbHp6dCDkuI3kvKDvvIzlkI7nq6/oh6rliqjnva4gMO+8iSAqL2J1aWxkVGVhY2hlclBheWxvYWQ6IGZ1bmN0aW9uIGJ1aWxkVGVhY2hlclBheWxvYWQodCkgewogICAgICB2YXIgcGF5bG9hZCA9IHRoaXMuY2xlYW5QYXlsb2FkKHsKICAgICAgICBqeWJoOiB0Lmp5YmgsCiAgICAgICAganl4bTogdC5qeXhtLAogICAgICAgIGp5c2RoOiB0Lmp5c2RoLAogICAgICAgIGJ6OiB0LmJ6LAogICAgICAgIHpjOiB0LnpjLAogICAgICAgIHhoOiB0LnhoLAogICAgICAgIHp5anN6d2RqOiB0Lnp5anN6d2RqLAogICAgICAgIHhzbHg6IHQueHNseCwKICAgICAgICBqeWxiOiB0Lmp5bGIsCiAgICAgICAga2g6IHQua2gsCiAgICAgICAgcHk6IHQucHksCiAgICAgICAgenpsYjogdC56emxiLAogICAgICAgIGV3eXhrYnM6IHQuZXd5eGticywKICAgICAgICBkc2xiOiB0LmRzbGIsCiAgICAgICAgeHk6IHQueHksCiAgICAgICAgc2Z6aDogdC5zZnpoLAogICAgICAgIHhiOiB0LnhiLAogICAgICAgIHd4ank6IHQud3hqeSwKICAgICAgICB3eHl5OiB0Lnd4eXksCiAgICAgICAgenpsank6IHQuenpsanksCiAgICAgICAgc2poOiB0LnNqaAogICAgICB9KQogICAgICAvLyDmlbTmlbAv5qCH5b+X5a2X5q616L2sIE51bWJlcgo7CiAgICAgIFsneGInLCAneHNseCcsICdld3l4a2JzJywgJ3d4anknLCAnd3h5eScsICd6emxqeSddLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewogICAgICAgIGlmIChwYXlsb2FkW2tleV0gIT09IHVuZGVmaW5lZCkgcGF5bG9hZFtrZXldID0gTnVtYmVyKHBheWxvYWRba2V5XSk7CiAgICAgIH0pCiAgICAgIC8vIOaXtumXtOWtl+auteW3sueUsSBkYXRlLXBpY2tlciDovpPlh7ogSVNPIOagvOW8jwo7CiAgICAgIFsnenlqc3p3ZGpzaicsICd6Y3NqJ10uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgaWYgKHRba2V5XSkgcGF5bG9hZFtrZXldID0gdFtrZXldOwogICAgICB9KTsKICAgICAgcmV0dXJuIHBheWxvYWQ7CiAgICB9LAogICAgLyoqIOe7hOijhSBKWVNYIOivt+axguS9k++8iOS7hemdnuepuuWtl+aute+8iSAqL2J1aWxkQXR0cmlidXRlUGF5bG9hZDogZnVuY3Rpb24gYnVpbGRBdHRyaWJ1dGVQYXlsb2FkKGEpIHsKICAgICAgdmFyIHBheWxvYWQgPSB0aGlzLmNsZWFuUGF5bG9hZCh7CiAgICAgICAgeGw6IGEueGwsCiAgICAgICAgeHc6IGEueHcsCiAgICAgICAgamw6IGEuamwsCiAgICAgICAgamxqc3JxOiBhLmpsanNycSwKICAgICAgICB6cjogYS56ciwKICAgICAgICB6dzogYS56dywKICAgICAgICB6d3NqOiBhLnp3c2osCiAgICAgICAganN6dzogYS5qc3p3LAogICAgICAgIGpzendzajogYS5qc3p3c2osCiAgICAgICAganNkajogYS5qc2RqLAogICAgICAgIGpzZGpzajogYS5qc2Rqc2osCiAgICAgICAganh3ejogYS5qeHd6LAogICAgICAgIGp4d3pzajogYS5qeHd6c2osCiAgICAgICAgY3NzajogYS5jc3NqLAogICAgICAgIHJ3Z3pzajogYS5yd2d6c2osCiAgICAgICAgcmR6amw6IGEucmR6amwsCiAgICAgICAgZmJsdzogYS5mYmx3CiAgICAgIH0pOwogICAgICBpZiAocGF5bG9hZC56ciAhPT0gdW5kZWZpbmVkKSBwYXlsb2FkLnpyID0gTnVtYmVyKHBheWxvYWQuenIpOwogICAgICBpZiAocGF5bG9hZC5qbCAhPT0gdW5kZWZpbmVkKSBwYXlsb2FkLmpsID0gTnVtYmVyKHBheWxvYWQuamwpOwogICAgICByZXR1cm4gcGF5bG9hZDsKICAgIH0sCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PSDnvJbovpEgPT09PT09PT09PT09PT09PT09PT0KICAgIGhhbmRsZUVkaXQ6IGZ1bmN0aW9uIGhhbmRsZUVkaXQocm93KSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICB0aGlzLmVkaXREaWFsb2dWaXNpYmxlID0gdHJ1ZTsKICAgICAgdGhpcy5lZGl0TG9hZGluZyA9IHRydWU7CiAgICAgIGdldFRlYWNoZXIocm93Lmp5YmgpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7CiAgICAgICAgdmFyIGRhdGEgPSByZXNwb25zZS5kYXRhIHx8IHt9OwogICAgICAgIHZhciBmb3JtID0gX3RoaXM2LmNyZWF0ZUVtcHR5QWRkRm9ybSgpLnRlYWNoZXI7CiAgICAgICAgT2JqZWN0LmtleXMoZm9ybSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgICBpZiAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQgJiYgZGF0YVtrZXldICE9PSBudWxsKSBmb3JtW2tleV0gPSBkYXRhW2tleV07CiAgICAgICAgfSk7CiAgICAgICAgX3RoaXM2LmVkaXRGb3JtID0gZm9ybTsKICAgICAgICBfdGhpczYuZWRpdExvYWRpbmcgPSBmYWxzZTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzNi5lZGl0RGlhbG9nVmlzaWJsZSA9IGZhbHNlOwogICAgICAgIF90aGlzNi5lZGl0TG9hZGluZyA9IGZhbHNlOwogICAgICB9KTsKICAgIH0sCiAgICBoYW5kbGVFZGl0Q29uZmlybTogZnVuY3Rpb24gaGFuZGxlRWRpdENvbmZpcm0oKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICB0aGlzLiRyZWZzLmVkaXRGb3JtUmVmLnZhbGlkYXRlKGZ1bmN0aW9uICh2YWxpZCkgewogICAgICAgIGlmICghdmFsaWQpIHJldHVybjsKICAgICAgICBpZiAoIV90aGlzNy5lZGl0Rm9ybS5qeWJoKSB7CiAgICAgICAgICBfdGhpczcuJG1lc3NhZ2Uud2FybmluZygn57y65bCR5pWZ5ZGY57yW5Y+377yM5peg5rOV5L+d5a2YJyk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHZhciBwYXlsb2FkID0gX3RoaXM3LmJ1aWxkVGVhY2hlclBheWxvYWQoX3RoaXM3LmVkaXRGb3JtKTsKICAgICAgICBwYXlsb2FkLmp5YmggPSBfdGhpczcuZWRpdEZvcm0uanliaDsKICAgICAgICBfdGhpczcuZWRpdFNhdmluZyA9IHRydWU7CiAgICAgICAgdXBkYXRlVGVhY2hlcihwYXlsb2FkKS50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzNy4kbWVzc2FnZS5zdWNjZXNzKCfkv53lrZjmiJDlip8nKTsKICAgICAgICAgIF90aGlzNy5lZGl0RGlhbG9nVmlzaWJsZSA9IGZhbHNlOwogICAgICAgICAgX3RoaXM3LmZldGNoTGlzdCgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KS5maW5hbGx5KGZ1bmN0aW9uICgpIHsKICAgICAgICAgIF90aGlzNy5lZGl0U2F2aW5nID0gZmFsc2U7CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSwKICAgIC8vID09PT09PT09PT09PT09PT09PT09IOemu+iBjO+8iOmAu+i+keWIoOmZpO+8iSA9PT09PT09PT09PT09PT09PT09PQogICAgaGFuZGxlRGlzYWJsZTogZnVuY3Rpb24gaGFuZGxlRGlzYWJsZShyb3cpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIGlmICghcm93Lmp5YmgpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+W9k+WJjeihjOe8uuWwkeaVmeWRmOe8luWPtycpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLiRjb25maXJtKCJcdTc4NkVcdTVCOUFcdTg5ODFcdTUyOUVcdTc0MDZcdTY1NTlcdTU0NThcdTMwMEMiLmNvbmNhdChyb3cuanl4bSB8fCByb3cuanliaCwgIlx1MzAwRFx1NzlCQlx1ODA0Q1x1NTQxN1x1RkYxRiIpLCAn57O757uf5o+Q56S6JywgewogICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAn56Gu5a6aJywKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgZGlzYWJsZVRlYWNoZXIocm93Lmp5YmgpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgX3RoaXM4LiRtZXNzYWdlLnN1Y2Nlc3MoJ+W3suWKnueQhuemu+iBjCcpOwogICAgICAgICAgX3RoaXM4LmZldGNoTGlzdCgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfSwKICAgIC8vID09PT09PT09PT09PT09PT09PT09IOaVmeWRmOWxnuaApyA9PT09PT09PT09PT09PT09PT09PQogICAgaGFuZGxlVmlld0F0dHJpYnV0ZTogZnVuY3Rpb24gaGFuZGxlVmlld0F0dHJpYnV0ZShyb3cpIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgIHRoaXMuYXR0cmlidXRlTW9kZSA9ICd2aWV3JzsKICAgICAgdGhpcy5hdHRyaWJ1dGVKeWJoID0gcm93Lmp5Ymg7CiAgICAgIHRoaXMuYXR0cmlidXRlRGF0YSA9IHt9OwogICAgICB0aGlzLmF0dHJpYnV0ZVZpc2libGUgPSB0cnVlOwogICAgICB0aGlzLmF0dHJpYnV0ZUxvYWRpbmcgPSB0cnVlOwogICAgICBnZXRUZWFjaGVyQXR0cmlidXRlKHJvdy5qeWJoKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkgewogICAgICAgIF90aGlzOS5hdHRyaWJ1dGVEYXRhID0gcmVzcG9uc2UuZGF0YSB8fCB7fTsKICAgICAgICBfdGhpczkuYXR0cmlidXRlTG9hZGluZyA9IGZhbHNlOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXM5LmF0dHJpYnV0ZVZpc2libGUgPSBmYWxzZTsKICAgICAgICBfdGhpczkuYXR0cmlidXRlTG9hZGluZyA9IGZhbHNlOwogICAgICB9KTsKICAgIH0sCiAgICBoYW5kbGVTdGFydEVkaXRBdHRyaWJ1dGU6IGZ1bmN0aW9uIGhhbmRsZVN0YXJ0RWRpdEF0dHJpYnV0ZSgpIHsKICAgICAgdmFyIF90aGlzMCA9IHRoaXM7CiAgICAgIHRoaXMuYXR0cmlidXRlRm9ybSA9IHRoaXMuY3JlYXRlRW1wdHlBZGRGb3JtKCkuYXR0cmlidXRlczsKICAgICAgT2JqZWN0LmtleXModGhpcy5hdHRyaWJ1dGVGb3JtKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICBpZiAoX3RoaXMwLmF0dHJpYnV0ZURhdGFba2V5XSAhPT0gdW5kZWZpbmVkICYmIF90aGlzMC5hdHRyaWJ1dGVEYXRhW2tleV0gIT09IG51bGwpIHsKICAgICAgICAgIF90aGlzMC5hdHRyaWJ1dGVGb3JtW2tleV0gPSBfdGhpczAuYXR0cmlidXRlRGF0YVtrZXldOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIHRoaXMuYXR0cmlidXRlRm9ybS5qeWJoID0gdGhpcy5hdHRyaWJ1dGVKeWJoOwogICAgICB0aGlzLmF0dHJpYnV0ZU1vZGUgPSAnZWRpdCc7CiAgICB9LAogICAgaGFuZGxlQ2FuY2VsRWRpdEF0dHJpYnV0ZTogZnVuY3Rpb24gaGFuZGxlQ2FuY2VsRWRpdEF0dHJpYnV0ZSgpIHsKICAgICAgdGhpcy5hdHRyaWJ1dGVNb2RlID0gJ3ZpZXcnOwogICAgfSwKICAgIGhhbmRsZVNhdmVBdHRyaWJ1dGU6IGZ1bmN0aW9uIGhhbmRsZVNhdmVBdHRyaWJ1dGUoKSB7CiAgICAgIHZhciBfdGhpczEgPSB0aGlzOwogICAgICB2YXIgcGF5bG9hZCA9IHRoaXMuYnVpbGRBdHRyaWJ1dGVQYXlsb2FkKHRoaXMuYXR0cmlidXRlRm9ybSk7CiAgICAgIHBheWxvYWQuanliaCA9IHRoaXMuYXR0cmlidXRlSnliaDsKICAgICAgdGhpcy5hdHRyaWJ1dGVTYXZpbmcgPSB0cnVlOwogICAgICB1cGRhdGVUZWFjaGVyQXR0cmlidXRlKHBheWxvYWQpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgIF90aGlzMS4kbWVzc2FnZS5zdWNjZXNzKCfkv53lrZjmiJDlip8nKTsKICAgICAgICBfdGhpczEuYXR0cmlidXRlTW9kZSA9ICd2aWV3JzsKICAgICAgICBfdGhpczEuaGFuZGxlVmlld0F0dHJpYnV0ZSh7CiAgICAgICAgICBqeWJoOiBfdGhpczEuYXR0cmlidXRlSnliaAogICAgICAgIH0pOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7fSkuZmluYWxseShmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXMxLmF0dHJpYnV0ZVNhdmluZyA9IGZhbHNlOwogICAgICB9KTsKICAgIH0KICB9Cn07"},null]}