{"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\\components\\flow\\OnlineForm.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\components\\flow\\OnlineForm.vue","mtime":1733309211970},{"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},{"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:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFNwcmVhZDIuanMiOwppbXBvcnQgX3JlZ2VuZXJhdG9yUnVudGltZSBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vcmVnZW5lcmF0b3JSdW50aW1lLmpzIjsKaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkucHVzaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IEVpcElucHV0IGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL0VpcElucHV0LnZ1ZSc7CmltcG9ydCBFaXBDaGVja2JveCBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9FaXBDaGVja2JveC52dWUnOwppbXBvcnQgRWlwU2VsZWN0IGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL0VpcFNlbGVjdC52dWUnOwppbXBvcnQgRWlwUmFkaW8gZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwUmFkaW8udnVlJzsKaW1wb3J0IEVpcFVzZXJTZWxlY3RvciBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9zZWxlY3Rvci9FaXBVc2VyU2VsZWN0b3IudnVlJzsKaW1wb3J0IEVpcERlbWVuc2lvblNlbGVjdG9yIGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL3NlbGVjdG9yL0VpcERlbWVuc2lvblNlbGVjdG9yLnZ1ZSc7CmltcG9ydCBFaXBKb2JTZWxlY3RvciBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9zZWxlY3Rvci9FaXBKb2JTZWxlY3Rvci52dWUnOwppbXBvcnQgRWlwT3JnU2VsZWN0b3IgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvc2VsZWN0b3IvRWlwT3JnU2VsZWN0b3IudnVlJzsKaW1wb3J0IEVpcFBvc3RTZWxlY3RvciBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9zZWxlY3Rvci9FaXBQb3N0U2VsZWN0b3IudnVlJzsKaW1wb3J0IEVpcFJvbGVTZWxlY3RvciBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9zZWxlY3Rvci9FaXBSb2xlU2VsZWN0b3IudnVlJzsKaW1wb3J0IEVpcFRleHRhcmVhIGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL0VpcFRleHRhcmVhLnZ1ZSc7CmltcG9ydCBFaXBGb250IGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL0VpcEZvbnQudnVlJzsKaW1wb3J0IEVpcERpYWxvZyBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9FaXBEaWFsb2cudnVlJzsKaW1wb3J0IEVpcEF1dG9jb21wbGV0ZSBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9FaXBBdXRvY29tcGxldGUudnVlJzsKaW1wb3J0IEVpcENhc2NhZGVyIGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL0VpcENhc2NhZGVyLnZ1ZSc7CmltcG9ydCBFaXBUcmVlc2VsZWN0IGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL0VpcFRyZWVzZWxlY3QudnVlJzsKaW1wb3J0IEVpcEJ1dHRvbiBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9FaXBCdXR0b24udnVlJzsKaW1wb3J0IEVpcERhdGUgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwRGF0ZS52dWUnOwppbXBvcnQgRWlwSW1nIGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL0VpcEltZy52dWUnOwppbXBvcnQgRWlwVmlld2VyIGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL0VpcFZpZXdlci52dWUnOwppbXBvcnQgRWlwU3dpdGNoIGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL0VpcFN3aXRjaC52dWUnOwp2YXIgRWlwTWFwID0gZnVuY3Rpb24gRWlwTWFwKCkgewogIHJldHVybiBpbXBvcnQoIkAvY29tcG9uZW50cy9laXBDb250cm9sL0VpcE1hcC52dWUiKTsKfTsKdmFyIEVpcEZvbnRVZWRpdG9yID0gZnVuY3Rpb24gRWlwRm9udFVlZGl0b3IoKSB7CiAgcmV0dXJuIGltcG9ydCgiQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwRm9udFVlZGl0b3IudnVlIik7Cn07CmltcG9ydCBIdEZpbGUgZnJvbSAnQC9jb21wb25lbnRzL2NvbnRyb2wvSHRGaWxlLnZ1ZSc7CmltcG9ydCBWUnVudGltZVRlbXBsYXRlIGZyb20gJ3YtcnVudGltZS10ZW1wbGF0ZSc7CmltcG9ydCBIdEdhbmdlZFNlbGVjdCBmcm9tICdAL2NvbXBvbmVudHMvY29udHJvbC9IdEdhbmdlZFNlbGVjdC52dWUnOwppbXBvcnQgRWlwUmVsRmxvdyBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9FaXBSZWxGbG93LnZ1ZSc7CmltcG9ydCBFaXBTdWJEaWFsb2cgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwU3ViRGlhbG9nLnZ1ZSc7CmltcG9ydCBFaXBTdW5EaWFsb2cgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwU3VuRGlhbG9nLnZ1ZSc7CmltcG9ydCBIdExhYmVsIGZyb20gJ0AvY29tcG9uZW50cy9jb250cm9sL0h0TGFiZWwudnVlJzsKaW1wb3J0IEh0RGlnaXRhbCBmcm9tICdAL2NvbXBvbmVudHMvY29udHJvbC9IdERpZ2l0YWwudnVlJzsKaW1wb3J0IEh0Q3VycmVuY3kgZnJvbSAnQC9jb21wb25lbnRzL2NvbnRyb2wvSHRDdXJyZW5jeS52dWUnOwppbXBvcnQgRWlwUmVhbHRpbWVJbnB1dCBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9FaXBSZWFsdGltZUlucHV0LnZ1ZSc7CmltcG9ydCBFaXBSZWFsdGltZVRleHRhcmVhIGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL0VpcFJlYWx0aW1lVGV4dGFyZWEudnVlJzsKaW1wb3J0IEVpcFN0ZXAgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwU3RlcC52dWUnOwppbXBvcnQgSHRJbnB1dEF1dG9jb21wbGV0ZSBmcm9tICdAL2NvbXBvbmVudHMvY29udHJvbC9IdElucHV0QXV0b2NvbXBsZXRlLnZ1ZSc7CmltcG9ydCBIdFRyZWVzZWxlY3QgZnJvbSAnQC9jb21wb25lbnRzL2NvbnRyb2wvSHRUcmVlc2VsZWN0LnZ1ZSc7CmltcG9ydCBIdENhc2NhZGVyIGZyb20gJ0AvY29tcG9uZW50cy9jb250cm9sL0h0Q2FzY2FkZXIudnVlJzsKaW1wb3J0IEh0VHJlZSBmcm9tICdAL2NvbXBvbmVudHMvY29udHJvbC9IdFRyZWUudnVlJzsKaW1wb3J0IEVpcFRhYnMgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwVGFicy52dWUnOwppbXBvcnQgRWlwU3ViUGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9FaXBTdWJQYWdpbmF0aW9uLnZ1ZSc7CmltcG9ydCBFaXBTdWJJbXBvcnREaWFsb2cgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwU3ViSW1wb3J0RGlhbG9nLnZ1ZSc7CmltcG9ydCBFaXBTdWJFeHBvcnREaWFsb2cgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwU3ViRXhwb3J0RGlhbG9nLnZ1ZSc7CmltcG9ydCBFaXBBdHRhY2htZW50IGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL0VpcEF0dGFjaG1lbnQudnVlJzsKaW1wb3J0IEVpcERpYyBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9FaXBEaWMudnVlJzsKaW1wb3J0IEVpcFBhZ2luYXRpb25MYXlvdXQgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwUGFnaW5hdGlvbkxheW91dC52dWUnOwppbXBvcnQgRWlwUGFnaW5hdGlvbiBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9FaXBQYWdpbmF0aW9uLnZ1ZSc7CmltcG9ydCBFaXBDb2xsYXBzZSBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9FaXBDb2xsYXBzZS52dWUnOwppbXBvcnQgRWlwUGFnaW5hdGlvblN0ZXBzIGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL0VpcFBhZ2luYXRpb25TdGVwcy52dWUnOwppbXBvcnQgRWlwRGF0YVZpZXcgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwRGF0YVZpZXcudnVlJzsKaW1wb3J0IEVpcEhvdFRhYmxlIGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL0VpcEhvdFRhYmxlLnZ1ZSc7CmltcG9ydCBFaXBIb3RTdWJEaWFsb2cgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwSG90U3ViRGlhbG9nLnZ1ZSc7CmltcG9ydCBDb250cmFjdFByZXZpZXcgZnJvbSAnQC9jb21wb25lbnRzL2NvbW1vbi9Db250cmFjdFByZXZpZXcudnVlJzsKaW1wb3J0IEVpcFRhZyBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9FaXBUYWcudnVlJzsKaW1wb3J0IEVpcFN1YnRhYmxlQmFja2ZpbGwgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwU3VidGFibGVCYWNrZmlsbC52dWUnOwppbXBvcnQgRWlwRGl2aWRlciBmcm9tICdAL2NvbXBvbmVudHMvZWlwQ29udHJvbC9FaXBEaXZpZGVyLnZ1ZSc7CmltcG9ydCBFaXBPZmZpY2UgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwT2ZmaWNlLnZ1ZSc7CmltcG9ydCBFaXBRcmNvZGUgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwUXJjb2RlLnZ1ZSc7CmltcG9ydCBFaXBTaWduYXR1cmUgZnJvbSAnQC9jb21wb25lbnRzL2VpcENvbnRyb2wvRWlwU2lnbmF0dXJlLnZ1ZSc7CmltcG9ydCBTdWJQYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9laXBDb250cm9sL2J1cy9TdWJQYWdpbmF0aW9uLmpzJzsKaW1wb3J0IFZ1ZSBmcm9tICd2dWUnOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogJ29ubGluZS1mb3JtJywKICBwcm9wczogWydodG1sJywgJ2RhdGEnLCAncGVybWlzc2lvbicsICdpc1ZpZXcnLCAnaXNQcmludCcsICdpbml0RmlsbERhdGEnLCAnZmxvd0tleScsICdmb3JtSWQnLCAnaXNMb29rJywgJ2Zsb3dLZXknXSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgbG9hZGVkRmFpbDogZmFsc2UsCiAgICAgIC8v6KGo5Y2V5Yqg6L29aHRtbOaYr+WQpuWksei0pQogICAgICBzdWJCYWNrZmlsbDogbmV3IE1hcCgpLAogICAgICBob3RUYWJsZUZpbGxiYWNrOiBTdHJpbmcKICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdGhpcy5pbml0KCk7CiAgfSwKICB3YXRjaDogewogICAgZGF0YTogewogICAgICBoYW5kbGVyOiBmdW5jdGlvbiBoYW5kbGVyKG5ld1ZhbCwgb2xkVmFsdWUpIHsKICAgICAgICB0aGlzLiRyb290LiRlbWl0KCJ1cGRhdGVEYXRhIiwgbmV3VmFsKTsKICAgICAgfSwKICAgICAgZGVlcDogdHJ1ZSwKICAgICAgaW1tZWRpYXRlOiB0cnVlCiAgICB9LAogICAgaHRtbDogZnVuY3Rpb24gaHRtbChuZXdWYWwpIHsKICAgICAgaWYgKG5ld1ZhbCkgewogICAgICAgIHRoaXMuaW5pdCgpOwogICAgICB9CiAgICB9LAogICAgaG90VGFibGVGaWxsYmFjazogZnVuY3Rpb24gaG90VGFibGVGaWxsYmFjayhuZXdWYWwpIHsKICAgICAgaWYgKG5ld1ZhbCkgewogICAgICAgIHZhciBuZXdWYWxBcnJheSA9IG5ld1ZhbC5zcGxpdCgnX3RpbWVzdGFtcF8nKTsKICAgICAgICB2YXIgYm9QYXRoQXJyYXkgPSBuZXdWYWxBcnJheVswXS5zcGxpdCgnLicpOwogICAgICAgIHZhciBob3RUYWJsZVJlZiA9ICdob3R0YWJsZS4nICsgYm9QYXRoQXJyYXlbMF0gKyAnLicgKyBib1BhdGhBcnJheVsxXTsKICAgICAgICB2YXIgc3ViQm8gPSB0aGlzLmRhdGFbYm9QYXRoQXJyYXlbMF1dW2JvUGF0aEFycmF5WzFdXTsKICAgICAgICB0aGlzLiRyZWZzLm9ubGluZUZvcm0uJHJlZnNbaG90VGFibGVSZWZdLmZpbGxiYWNrSG90VGFibGVEYXRhKHN1YkJvKTsKICAgICAgfQogICAgfQogIH0sCiAgbWV0aG9kczogewogICAgbG9hZFN1Y2Nlc3M6IGZ1bmN0aW9uIGxvYWRTdWNjZXNzKHJlcykgewogICAgICB0aGlzLiRlbWl0KCJsb2FkU3VjY2VzcyIsIHJlcyk7CiAgICB9LAogICAgaW5pdDogZnVuY3Rpb24gaW5pdCgpIHsKICAgICAgdmFyIGluaXRGaWxsRGF0YSA9IHRoaXMuaW5pdEZpbGxEYXRhOwogICAgICB2YXIgcGVybWlzc2lvbiA9IHRoaXMucGVybWlzc2lvbjsKICAgICAgVnVlLmNvbXBvbmVudCgnaHQtcnVudGltZS10ZW1wbGF0ZScsIHsKICAgICAgICBwcm9wczogWydodG1sJywgJ2RhdGEnLCAncGVybWlzc2lvbicsICdpc1ZpZXcnLCAnaXNQcmludCddLAogICAgICAgIHRlbXBsYXRlOiB0aGlzLmh0bWwsCiAgICAgICAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGxlZnRfaW1hZ2U6ICcnLAogICAgICAgICAgICByaWdodF9pbWFnZTogJycsCiAgICAgICAgICAgIHRyYW5zaXRpb25JbmRleDogLTEsCiAgICAgICAgICAgIGN1clRhYkluZGV4OiAndGFiZV9jaGVja18wJywKICAgICAgICAgICAgZXJyTWVzZzogJycsCiAgICAgICAgICAgIGZpbGxPcmc6IHt9LAogICAgICAgICAgICBmaWxsT3JnQ29uZk1hcDoge30KICAgICAgICAgIH07CiAgICAgICAgfSwKICAgICAgICBjb21wdXRlZDogewogICAgICAgICAgLy8g5a2Q6KGo5YmN56uv5YiG6aG16L+H5ruk5ZmoCiAgICAgICAgICBwYWdpbmdTdWJEYXRhOiBmdW5jdGlvbiBwYWdpbmdTdWJEYXRhKCkgewogICAgICAgICAgICB2YXIgbWUgPSB0aGlzOwogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGRhdGFwYXRoKSB7CiAgICAgICAgICAgICAgLy8g6YCa6L+H5a2Q6KGo5pWw5o2u6Lev5b6E6I635Y+W5YiG6aG15pWw5o2uCiAgICAgICAgICAgICAgcmV0dXJuIFN1YlBhZ2luYXRpb24ucGFnaW5nQnlQYXRoKGRhdGFwYXRoLCBtZSk7CiAgICAgICAgICAgIH07CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICBtb3VudGVkOiBmdW5jdGlvbiBtb3VudGVkKCkgewogICAgICAgICAgLy8g5aaC5p6c5b2T5YmN6KGo5Y2V55qEZWxlbWVudOS4ukNvbW1lbnTor7TmmI7ooajljZXliqDovb3lpLHotKXkuobjgIIKICAgICAgICAgIGlmICh0aGlzLiRlbCAmJiB0aGlzLiRlbC5jb25zdHJ1Y3RvciA9PSBDb21tZW50KSB7CiAgICAgICAgICAgIHRoaXMuJHBhcmVudC5sb2FkZWRGYWlsID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIHRoaXMuJHZhbGlkYXRvciA9IHRoaXMuJHJvb3QuJHZhbGlkYXRvcjsKICAgICAgICAgIGlmICh0aGlzLnBlcm1pc3Npb24udGFibGUpIHsKICAgICAgICAgICAgZm9yICh2YXIgc3ViVGFibGVOYW1lIGluIHRoaXMucGVybWlzc2lvbi50YWJsZSkgewogICAgICAgICAgICAgIGlmICh0aGlzLnBlcm1pc3Npb24udGFibGVbc3ViVGFibGVOYW1lXS5yZXF1aXJlZCkgewogICAgICAgICAgICAgICAgdGhpcy5hZGRTdWJUYWJsZUJ5TmFtZShzdWJUYWJsZU5hbWUpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgdGhpcy4kZW1pdCgibG9hZFN1Y2Nlc3MiLCB0cnVlKTsKICAgICAgICAgIC8v5Yid5aeL5YyWaGFuZHNvbnRhYmxl5pWw5o2uCiAgICAgICAgICBpZiAodGhpcy5kYXRhKSB7CiAgICAgICAgICAgIHZhciBmb3JtSWQgPSB0aGlzLmZvcm1JZDsKICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgICAgICAgaWYgKCFmb3JtSWQpIHsKICAgICAgICAgICAgICB0aGlzLnRvSW5pdFRlbW9sYXRlRGF0YShpbml0RmlsbERhdGEpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHZhciBsb2FkaW5nID0gdGhpcy4kbG9hZGluZyh7CiAgICAgICAgICAgICAgICBsb2NrOiB0cnVlLAogICAgICAgICAgICAgICAgdGV4dDogJ+ato+WcqOiOt+WPluWIneWni+WMluS/oeaBry4uLicsCiAgICAgICAgICAgICAgICBzcGlubmVyOiAnZWwtaWNvbi1sb2FkaW5nJywKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdyZ2JhKDAsIDAsIDAsIDAuNyknCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgdGhpcy4kaHR0cC5nZXQoJyR7Zm9ybX0vZm9ybS9mb3JtL3YxL3ByZXZpZXdEZXNpZ25WdWU/Zm9ybUlkPScgKyBmb3JtSWQpLnRoZW4oZnVuY3Rpb24gKHJlc3ApIHsKICAgICAgICAgICAgICAgIGlmIChyZXNwLmRhdGEpIHsKICAgICAgICAgICAgICAgICAgdmFyIGZvcm1EYXRhID0gcmVzcC5kYXRhLmRhdGE7CiAgICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBmb3JtRGF0YSkgewogICAgICAgICAgICAgICAgICAgIGlmIChmb3JtRGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIV90aGlzLmRhdGFba2V5XSkgewogICAgICAgICAgICAgICAgICAgICAgICBfdGhpcy5kYXRhW2tleV0gPSBmb3JtRGF0YVtrZXldOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBsb2FkaW5nLmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgIF90aGlzLnRvSW5pdFRlbW9sYXRlRGF0YShpbml0RmlsbERhdGEpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgbG9hZGluZy5jbG9zZSgpOwogICAgICAgICAgICAgICAgICBfdGhpcy50b0luaXRUZW1vbGF0ZURhdGEoaW5pdEZpbGxEYXRhKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBsb2FkaW5nLmNsb3NlKCk7CiAgICAgICAgICAgICAgICBfdGhpcy50b0luaXRUZW1vbGF0ZURhdGEoaW5pdEZpbGxEYXRhKTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKHRoaXMuaXNQcmludCkgewogICAgICAgICAgICB0aGlzLnByaW50RGV0YWlsKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAvL+aUuXYtcnVudGltZS10ZW1wbGF0ZS5lcy5qc+eahOa6kOegge+8jOaIluiAheaUuXYtcnVudGltZS10ZW1wbGF0ZeeahOeJiOacrOaUueaIkDEuNS4yCiAgICAgICAgbWV0aG9kczogewogICAgICAgICAgdG9Jbml0VGVtb2xhdGVEYXRhOiBmdW5jdGlvbiB0b0luaXRUZW1vbGF0ZURhdGEoaW5pdEZpbGxEYXRhKSB7CiAgICAgICAgICAgIGlmICghdGhpcy5kYXRhKSB7CiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBmb3JtRGF0YSA9IHRoaXMuZGF0YTsKICAgICAgICAgICAgdmFyIHJlZnMgPSB0aGlzLiRyZWZzOwogICAgICAgICAgICBmb3IgKHZhciBkZWYgaW4gZm9ybURhdGEpIHsKICAgICAgICAgICAgICBpZiAoZm9ybURhdGEuaGFzT3duUHJvcGVydHkoZGVmKSkgewogICAgICAgICAgICAgICAgdmFyIGJvRGVmID0gZm9ybURhdGFbZGVmXTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGJvIGluIGJvRGVmKSB7CiAgICAgICAgICAgICAgICAgIGlmIChib0RlZi5oYXNPd25Qcm9wZXJ0eShibykgJiYgYm8uaW5kZXhPZignc3ViXycpID09IDApIHsKICAgICAgICAgICAgICAgICAgICB2YXIgcmVmID0gJ2hvdHRhYmxlLicgKyBkZWYgKyAnLicgKyBibzsKICAgICAgICAgICAgICAgICAgICBpZiAocmVmc1tyZWZdKSB7CiAgICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICByZWZzW3JlZl0uZmlsbGJhY2tIb3RUYWJsZURhdGEoZm9ybURhdGFbZGVmXVtib10sIHBlcm1pc3Npb24pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5pdEZpbGxEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmc1tyZWZdLmluaXRUZW1wbGF0ZURhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHByaW50RGV0YWlsOiBmdW5jdGlvbiBwcmludERldGFpbCgpIHsKICAgICAgICAgICAgdmFyIGEgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnb25saW5lLWZvcm0nKVswXS5pbm5lckhUTUw7CiAgICAgICAgICAgIHdpbmRvdy5wcmludCgpOwogICAgICAgICAgICBpZiAodGhpcy5pc1ByaW50KSB7CiAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLmdvKC0xKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgfSwgMjAwKTsKICAgICAgICAgIH0sCiAgICAgICAgICBsZWF2ZVRhYlZlcmlmeTogZnVuY3Rpb24gbGVhdmVUYWJWZXJpZnkoYWN0aXZlTmFtZSwgb2xkQWN0aXZlTmFtZSkgewogICAgICAgICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgICAgICAgIHZhciBlcnJpdGVtcywgZm9ybUVsZW1lbnRBcnksIGZybUluc3QsIGNoaWxkcmVucywgcmVzdWx0LCBjdXJFbCwgbXNnLCBfaSwgX2Vycml0ZW1zLCBpdGVtLCBmaWVsZExhYmVsOwogICAgICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkgewogICAgICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHsKICAgICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICAgIGVycml0ZW1zID0gW107CiAgICAgICAgICAgICAgICAgICAgZm9ybUVsZW1lbnRBcnkgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgnb25saW5lLWZvcm0nKTsKICAgICAgICAgICAgICAgICAgICBmcm1JbnN0ID0gZm9ybUVsZW1lbnRBcnlbMF0uX192dWVfXzsKICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbnMgPSBmcm1JbnN0LiRyZWZzLm9ubGluZUZvcm0uJHJlZnM7CiAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDY7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZybUluc3QuJHJvb3QuJHZhbGlkYXRvci52YWxpZGF0ZUFsbCgnY3VzdG9tLWZvcm0nKTsKICAgICAgICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgIGN1ckVsID0gY2hpbGRyZW5zW29sZEFjdGl2ZU5hbWVdLiRlbDsKICAgICAgICAgICAgICAgICAgICAgIF90aGlzMi4kdmFsaWRhdG9yLmVycm9ycy5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJFbC5jb250YWlucyhkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShpdGVtLmZpZWxkKVswXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJpdGVtcy5wdXNoKGl0ZW0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy/mi7zmjqXmj5DnpLrmtojmga8KICAgICAgICAgICAgICAgICAgICBtc2cgPSAnJzsKICAgICAgICAgICAgICAgICAgICBmb3IgKF9pID0gMCwgX2Vycml0ZW1zID0gZXJyaXRlbXM7IF9pIDwgX2Vycml0ZW1zLmxlbmd0aDsgX2krKykgewogICAgICAgICAgICAgICAgICAgICAgaXRlbSA9IF9lcnJpdGVtc1tfaV07CiAgICAgICAgICAgICAgICAgICAgICBmaWVsZExhYmVsID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5maWVsZCkgewogICAgICAgICAgICAgICAgICAgICAgICBmaWVsZExhYmVsID0gaXRlbS5maWVsZDsKICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmZpZWxkICYmIGl0ZW0uZmllbGQuaW5kZXhPZignLScpICE9IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTGFiZWwgPSBpdGVtLmZpZWxkLnN1YnN0cihpdGVtLmZpZWxkLmluZGV4T2YoJy0nKSArIDEpOwogICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgbXNnICs9IGZpZWxkTGFiZWwgKyAnICcgKyBpdGVtLm1zZyArICc8YnIvPic7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChtc2cpIHsKICAgICAgICAgICAgICAgICAgICAgIF90aGlzMi4kbm90aWZ5LmVycm9yKHsKICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF90aGlzMi4kdCgnY29tbW9uLmVyclRpcCcpLAogICAgICAgICAgICAgICAgICAgICAgICBkYW5nZXJvdXNseVVzZUhUTUxTdHJpbmc6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG1zZwogICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9LCBfY2FsbGVlKTsKICAgICAgICAgICAgfSkpKCk7CiAgICAgICAgICB9LAogICAgICAgICAgLy/lrZDooajkuIrnp7sKICAgICAgICAgIHVwOiBmdW5jdGlvbiB1cChpbmRleCwgZGF0YSkgewogICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHsKICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICflt7Lnu4/mmK/liJfooajkuK3nrKzkuIDkvY0nLAogICAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdmFyIHRlbXAgPSBkYXRhW2luZGV4IC0gMV07CiAgICAgICAgICAgICAgdGhpcy4kcGFyZW50LmxvYWRlZEZhaWwgPSB0cnVlOwogICAgICAgICAgICAgIHRoaXMuJHNldChkYXRhLCBpbmRleCAtIDEsIGRhdGFbaW5kZXhdKTsKICAgICAgICAgICAgICB0aGlzLiRzZXQoZGF0YSwgaW5kZXgsIHRlbXApOwogICAgICAgICAgICAgIHRoaXMuJHBhcmVudC5sb2FkZWRGYWlsID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAvL+WtkOihqOS4i+enuwogICAgICAgICAgZG93bjogZnVuY3Rpb24gZG93bihpbmRleCwgZGF0YSkgewogICAgICAgICAgICBpZiAoaW5kZXggPT09IGRhdGEubGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgbWVzc2FnZTogJ+W3sue7j+aYr+WIl+ihqOS4reacgOWQjuS4gOS9jScsCiAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB0aGlzLmlzVHJhbnNpdGlvbiA9IHRydWU7CiAgICAgICAgICAgICAgdmFyIGkgPSBkYXRhW2luZGV4ICsgMV07CiAgICAgICAgICAgICAgdGhpcy4kcGFyZW50LmxvYWRlZEZhaWwgPSB0cnVlOwogICAgICAgICAgICAgIHRoaXMuJHNldChkYXRhLCBpbmRleCArIDEsIGRhdGFbaW5kZXhdKTsKICAgICAgICAgICAgICB0aGlzLiRzZXQoZGF0YSwgaW5kZXgsIGkpOwogICAgICAgICAgICAgIHRoaXMuJHBhcmVudC5sb2FkZWRGYWlsID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAvL+WtkOihqOWkjeWItuaVsOaNrgogICAgICAgICAgY29weTogZnVuY3Rpb24gY29weShvYmosIGl0ZW0pIHsKICAgICAgICAgICAgdmFyIG5ld09uZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaXRlbSkpOwogICAgICAgICAgICAvL+aKimlk572u56m65Lul5YWN6LWw55qE5L+u5pS55pa55rOVCiAgICAgICAgICAgIGlmIChuZXdPbmUuaWRfKSB7CiAgICAgICAgICAgICAgZGVsZXRlIG5ld09uZS5pZF87CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG5ld09uZS5zdWJfcm93X3JlYWRvbmx5KSB7CiAgICAgICAgICAgICAgZGVsZXRlIG5ld09uZS5zdWJfcm93X3JlYWRvbmx5OwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5ld09uZS5zdWJfZ3VpZCA9IHRoaXMuZ3VpZCgpOwogICAgICAgICAgICBvYmoucHVzaChuZXdPbmUpOwogICAgICAgICAgfSwKICAgICAgICAgIC8v5a2Q6KGo6buY6K6k5YC85Zue5aGrCiAgICAgICAgICBhZGRTdWJUYWI6IGZ1bmN0aW9uIGFkZFN1YlRhYihzdWJUYWJQYXRoKSB7CiAgICAgICAgICAgIHZhciBwYXRoQXJyID0gc3ViVGFiUGF0aC5zcGxpdCgnLicpOwogICAgICAgICAgICBpZiAocGF0aEFyci5sZW5ndGggPCAzKSB7CiAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgICBtZXNzYWdlOiAn5a2Q6KGo6Lev5b6E5pyJ6K+vJywKICAgICAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHZhciBzdWJUYWJOYW1lID0gcGF0aEFyclsyXS5yZXBsYWNlKCdzdWJfJywgJycpOwogICAgICAgICAgICAgIHZhciBzdWJJbml0RGF0YSA9IHRoaXMuZGF0YVtwYXRoQXJyWzFdXS5pbml0RGF0YVtzdWJUYWJOYW1lXSB8fCB7fTsKICAgICAgICAgICAgICAvL+WIpOaWreW9k+WJjeWtkOihqOaYr+WQpuWtmOacieWbnuaYvuWAvAogICAgICAgICAgICAgIGlmICh0aGlzLiRwYXJlbnQuc3ViQmFja2ZpbGwgJiYgdGhpcy4kcGFyZW50LnN1YkJhY2tmaWxsLmhhcyhzdWJUYWJQYXRoKSkgewogICAgICAgICAgICAgICAgLy90aGlzLmRhdGFbcGF0aEFyclsxXV1bcGF0aEFyclsyXV0ucHVzaCh0aGlzLiRwYXJlbnQuc3ViQmFja2ZpbGwuZ2V0KHN1YlRhYlBhdGgpKTsKICAgICAgICAgICAgICAgIHN1YkluaXREYXRhID0gdGhpcy4kcGFyZW50LnN1YkJhY2tmaWxsLmdldChzdWJUYWJQYXRoKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy/miormlbDnu4Tph4zpnaLnmoTlgLzkuLogbnVsbCDovazmjaLkuLrnqbrlrZfnrKbkuLIKICAgICAgICAgICAgICB2YXIgc3RyID0gSlNPTi5zdHJpbmdpZnkoc3ViSW5pdERhdGEpLnJlcGxhY2UoL251bGwvZywgJyIiJyk7CiAgICAgICAgICAgICAgdmFyIHN1YkRhdGEgPSBKU09OLnBhcnNlKHN0cik7CiAgICAgICAgICAgICAgZm9yICh2YXIga2V5IGluIHN1YkRhdGEpIHsKICAgICAgICAgICAgICAgIC8v54K55re75Yqg5pe25Yik5pat6KaB5paw5aKe5a2Q6KGo6K6w5b2V5Lit55qE5a2Z6KGo5piv5ZCm5pyJ5YC8CiAgICAgICAgICAgICAgICBpZiAoa2V5LmluZGV4T2YoJ3N1Yl8nKSA9PSAwICYmIHN1YkRhdGFba2V5XS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgIHN1YkRhdGFba2V5XSA9IFtdOyAvL+acieWImea4heepugogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gLy/ngrnmt7vliqDml7bliKTmlq3opoHmlrDlop7lrZDooajorrDlvZXkuK3nmoTlrZfmrrXmmK/lkKbmnInlgLwKICAgICAgICAgICAgICAgIC8vIGlmKHN1YkRhdGFba2V5XSl7CiAgICAgICAgICAgICAgICAvLyAgICAgc3ViRGF0YVtrZXldID0gIiI7Ly/mnInliJnmuIXnqboKICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdmFyIGZpbGxPYmogPSB0aGlzLnRvRmlsbE9yZyhwYXRoQXJyWzFdICsgJy4nICsgcGF0aEFyclsyXSwgc3ViRGF0YSk7CiAgICAgICAgICAgICAgZmlsbE9iai5zdWJfZ3VpZCA9IHRoaXMuZ3VpZCgpOwogICAgICAgICAgICAgIHRoaXMuZGF0YVtwYXRoQXJyWzFdXVtwYXRoQXJyWzJdXS5wdXNoKGZpbGxPYmopOwogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgZ3VpZDogZnVuY3Rpb24gZ3VpZCgpIHsKICAgICAgICAgICAgcmV0dXJuICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24gKGMpIHsKICAgICAgICAgICAgICB2YXIgciA9IE1hdGgucmFuZG9tKCkgKiAxNiB8IDAsCiAgICAgICAgICAgICAgICB2ID0gYyA9PSAneCcgPyByIDogciAmIDB4MyB8IDB4ODsKICAgICAgICAgICAgICByZXR1cm4gdi50b1N0cmluZygxNik7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSwKICAgICAgICAgIC8v5a2Z6KGo6buY6K6k5YC85Zue5aGrCiAgICAgICAgICBhZGRTdW5UYWI6IGZ1bmN0aW9uIGFkZFN1blRhYihzdWJUYWJQYXRoLCBzdWJJbmRleCkgewogICAgICAgICAgICB2YXIgcGF0aEFyciA9IHN1YlRhYlBhdGguc3BsaXQoJy4nKTsKICAgICAgICAgICAgaWYgKHBhdGhBcnIubGVuZ3RoIDwgNCkgewogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgbWVzc2FnZTogJ+WtmeihqOi3r+W+hOacieivrycsCiAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB2YXIgc3ViVGFiTmFtZSA9IHBhdGhBcnJbMl0ucmVwbGFjZSgnc3ViXycsICcnKTsKICAgICAgICAgICAgICB2YXIgc3VuVGFiTmFtZSA9IHBhdGhBcnJbM10ucmVwbGFjZSgnc3ViXycsICcnKTsKICAgICAgICAgICAgICB2YXIgc3ViSW5pdERhdGEgPSB0aGlzLmRhdGFbcGF0aEFyclsxXV0uaW5pdERhdGFbc3ViVGFiTmFtZV0uaW5pdERhdGFbc3VuVGFiTmFtZV0gfHwge307CiAgICAgICAgICAgICAgLy/liKTmlq3lvZPliY3lrZnooajmmK/lkKblrZjmnInlm57mmL7lgLwKICAgICAgICAgICAgICBpZiAodGhpcy4kcGFyZW50LnN1YkJhY2tmaWxsICYmIHRoaXMuJHBhcmVudC5zdWJCYWNrZmlsbC5oYXMoc3ViVGFiUGF0aCkpIHsKICAgICAgICAgICAgICAgIC8vdGhpcy5kYXRhW3BhdGhBcnJbMV1dW3BhdGhBcnJbMl1dLnB1c2godGhpcy4kcGFyZW50LnN1YkJhY2tmaWxsLmdldChzdWJUYWJQYXRoKSk7CiAgICAgICAgICAgICAgICBzdWJJbml0RGF0YSA9IHRoaXMuJHBhcmVudC5zdWJCYWNrZmlsbC5nZXQoc3ViVGFiUGF0aCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIC8v5oqK5pWw57uE6YeM6Z2i55qE5YC85Li6IG51bGwg6L2s5o2i5Li656m65a2X56ym5LiyCiAgICAgICAgICAgICAgdmFyIHN0ciA9IEpTT04uc3RyaW5naWZ5KHN1YkluaXREYXRhKS5yZXBsYWNlKC9udWxsL2csICciIicpOwogICAgICAgICAgICAgIGlmICghdGhpcy5kYXRhW3BhdGhBcnJbMV1dW3BhdGhBcnJbMl1dW3N1YkluZGV4XVtwYXRoQXJyWzNdXSkgewogICAgICAgICAgICAgICAgdmFyIGtleSA9IFtwYXRoQXJyWzNdXTsKICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IG5ldyBBcnJheSgpOwogICAgICAgICAgICAgICAgdGhpcy5kYXRhW3BhdGhBcnJbMV1dW3BhdGhBcnJbMl1dW3N1YkluZGV4XVtrZXldID0gdmFsdWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHZhciBzdW5Cb2RhdGEgPSBKU09OLnBhcnNlKHN0cik7CiAgICAgICAgICAgICAgc3VuQm9kYXRhLnN1Yl9ndWlkID0gdGhpcy5ndWlkKCk7CiAgICAgICAgICAgICAgdGhpcy5kYXRhW3BhdGhBcnJbMV1dW3BhdGhBcnJbMl1dW3N1YkluZGV4XVtwYXRoQXJyWzNdXS5wdXNoKHN1bkJvZGF0YSk7CiAgICAgICAgICAgICAgdGhpcy4kZm9yY2VVcGRhdGUoKTsgLy/ov6vkvb8gVnVlIOWunuS+i+mHjeaWsOa4suafkwoKICAgICAgICAgICAgICAvLyB0aGlzLnBlcm1pc3Npb24udGFibGVbc3VuVGFiTmFtZV0ucmVxdWlyZWQgPSAiZmFsc2UiOwogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgYWRkU3ViVGFibGVCeU5hbWU6IGZ1bmN0aW9uIGFkZFN1YlRhYmxlQnlOYW1lKHN1YlRhYmxlTmFtZSkgewogICAgICAgICAgICBmb3IgKHZhciBib0FsaWFzIGluIHRoaXMuZGF0YSkgewogICAgICAgICAgICAgIHZhciBzdWJJbml0RGF0YSA9IHRoaXMuZGF0YVtib0FsaWFzXS5pbml0RGF0YVtzdWJUYWJsZU5hbWVdIHx8IHt9OwogICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFbYm9BbGlhc11bJ3N1Yl8nICsgc3ViVGFibGVOYW1lXSAmJiB0aGlzLmRhdGFbYm9BbGlhc11bJ3N1Yl8nICsgc3ViVGFibGVOYW1lXS5sZW5ndGggPCAxKSB7CiAgICAgICAgICAgICAgICB0aGlzLmRhdGFbYm9BbGlhc11bJ3N1Yl8nICsgc3ViVGFibGVOYW1lXS5wdXNoKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoc3ViSW5pdERhdGEpKSk7CiAgICAgICAgICAgICAgICAvLyDlrZnooajlv4Xloasg6buY6K6k5re75Yqg5LiA5p2hCiAgICAgICAgICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9uLnRhYmxlKSB7CiAgICAgICAgICAgICAgICAgIGZvciAodmFyIHRhYmxlTmFtZSBpbiB0aGlzLnBlcm1pc3Npb24udGFibGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9uLnRhYmxlW3RhYmxlTmFtZV0ucmVxdWlyZWQpIHsKICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFbYm9BbGlhc11bJ3N1Yl8nICsgc3ViVGFibGVOYW1lXVswXS5oYXNPd25Qcm9wZXJ0eSgnc3ViXycgKyB0YWJsZU5hbWUpICYmIHRoaXMuZGF0YVtib0FsaWFzXVsnc3ViXycgKyBzdWJUYWJsZU5hbWVdWzBdWydzdWJfJyArIHRhYmxlTmFtZV0gJiYgdGhpcy5kYXRhW2JvQWxpYXNdWydzdWJfJyArIHN1YlRhYmxlTmFtZV1bMF1bJ3N1Yl8nICsgdGFibGVOYW1lXS5sZW5ndGggPCAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVtib0FsaWFzXVsnc3ViXycgKyBzdWJUYWJsZU5hbWVdWzBdWydzdWJfJyArIHRhYmxlTmFtZV0ucHVzaChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHN1YkluaXREYXRhLmluaXREYXRhW3RhYmxlTmFtZV0pKSk7CiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YVtib0FsaWFzXVsnc3ViXycgKyBzdWJUYWJsZU5hbWVdWzBdLmhhc093blByb3BlcnR5KCdzdWJfJyArIHRhYmxlTmFtZSkgJiYgIXRoaXMuZGF0YVtib0FsaWFzXVsnc3ViXycgKyBzdWJUYWJsZU5hbWVdWzBdWydzdWJfJyArIHRhYmxlTmFtZV0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhW2JvQWxpYXNdWydzdWJfJyArIHN1YlRhYmxlTmFtZV1bMF1bJ3N1Yl8nICsgdGFibGVOYW1lXSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFbYm9BbGlhc11bJ3N1Yl8nICsgc3ViVGFibGVOYW1lXVswXVsnc3ViXycgKyB0YWJsZU5hbWVdLnB1c2goc3ViSW5pdERhdGEuaW5pdERhdGFbdGFibGVOYW1lXSk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgZGVsZXRlUm93OiBmdW5jdGlvbiBkZWxldGVSb3coc3ViVGFibGVQYXRoLCBpdGVtKSB7CiAgICAgICAgICAgIHZhciBwYXRoQXJyID0gc3ViVGFibGVQYXRoLnNwbGl0KCcuJyk7CiAgICAgICAgICAgIGlmIChwYXRoQXJyLmxlbmd0aCA8IDIpIHsKICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICflrZDooajot6/lvoTmnInor68nLAogICAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdmFyIHN1YlRhYk5hbWUgPSBwYXRoQXJyWzFdLnJlcGxhY2UoJ3N1Yl8nLCAnJyk7CiAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVtwYXRoQXJyWzBdXVtwYXRoQXJyWzFdXS5sZW5ndGggPT0gMSAmJiAodGhpcy5wZXJtaXNzaW9uLnRhYmxlW3N1YlRhYk5hbWVdLnJlcXVpcmVkID09IHRydWUgfHwgdGhpcy5wZXJtaXNzaW9uLnRhYmxlW3N1YlRhYk5hbWVdLnJlcXVpcmVkID09ICd0cnVlJykpIHsKICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICBtZXNzYWdlOiAn5a2Q6KGo5b+F5aGr5LiA5p2h6K6w5b2VJywKICAgICAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdGhpcy5kYXRhW3BhdGhBcnJbMF1dW3BhdGhBcnJbMV1dLnJlbW92ZShpdGVtKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIGRlbGV0ZVN1blJvdzogZnVuY3Rpb24gZGVsZXRlU3VuUm93KHN1YlRhYmxlUGF0aCwgaXRlbSwgc3ViSW5kZXgpIHsKICAgICAgICAgICAgdmFyIHBhdGhBcnIgPSBzdWJUYWJsZVBhdGguc3BsaXQoJy4nKTsKICAgICAgICAgICAgaWYgKHBhdGhBcnIubGVuZ3RoIDwgMykgewogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgbWVzc2FnZTogJ+WtmeihqOi3r+W+hOacieivrycsCiAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB2YXIgc3ViVGFiTmFtZSA9IHBhdGhBcnJbMV0ucmVwbGFjZSgnc3ViXycsICcnKTsKICAgICAgICAgICAgICB2YXIgc3VuVGFiTmFtZSA9IHBhdGhBcnJbMl0ucmVwbGFjZSgnc3ViXycsICcnKTsKICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhW3BhdGhBcnJbMF1dW3BhdGhBcnJbMV1dW3N1YkluZGV4XVtwYXRoQXJyWzJdXS5sZW5ndGggPT0gMSAmJiAodGhpcy5wZXJtaXNzaW9uLnRhYmxlW3N1blRhYk5hbWVdLnJlcXVpcmVkID09IHRydWUgfHwgdGhpcy5wZXJtaXNzaW9uLnRhYmxlW3N1YlRhYk5hbWVdLnJlcXVpcmVkID09ICd0cnVlJykpIHsKICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICBtZXNzYWdlOiAn5a2Z6KGo5b+F5aGr5LiA5p2h6K6w5b2VJywKICAgICAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdGhpcy5kYXRhW3BhdGhBcnJbMF1dW3BhdGhBcnJbMV1dW3N1YkluZGV4XVtwYXRoQXJyWzJdXS5yZW1vdmUoaXRlbSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICBjbGVhckFsbDogZnVuY3Rpb24gY2xlYXJBbGwoc3ViVGFibGVQYXRoLCBpc0hvdCwgaW5kZXgpIHsKICAgICAgICAgICAgdmFyIHBhdGhBcnIgPSBzdWJUYWJsZVBhdGguc3BsaXQoJy4nKTsKICAgICAgICAgICAgaWYgKHBhdGhBcnIubGVuZ3RoIDwgMikgewogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgbWVzc2FnZTogJ+WtkOihqOi3r+W+hOacieivrycsCiAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAvL+WtmeihqAogICAgICAgICAgICB9IGVsc2UgaWYgKChpbmRleCB8fCBpbmRleCA9PT0gMCkgJiYgcGF0aEFyci5sZW5ndGggPT0gMykgewogICAgICAgICAgICAgIHRoaXMuZGF0YVtwYXRoQXJyWzBdXVtwYXRoQXJyWzFdXVtpbmRleF1bcGF0aEFyclsyXV0uZW1wdHkoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB2YXIgc3ViVGFiTmFtZSA9IHBhdGhBcnJbMV0ucmVwbGFjZSgnc3ViXycsICcnKTsKICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhW3BhdGhBcnJbMF1dW3BhdGhBcnJbMV1dLmxlbmd0aCA9PSAxICYmICh0aGlzLnBlcm1pc3Npb24udGFibGVbc3ViVGFiTmFtZV0ucmVxdWlyZWQgPT0gdHJ1ZSB8fCB0aGlzLnBlcm1pc3Npb24udGFibGVbc3ViVGFiTmFtZV0ucmVxdWlyZWQgPT0gJ3RydWUnKSkgewogICAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICflrZDooajlv4XloavkuIDmnaHorrDlvZUnLAogICAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB0aGlzLmRhdGFbcGF0aEFyclswXV1bcGF0aEFyclsxXV0uZW1wdHkoKTsKICAgICAgICAgICAgICBpZiAoaXNIb3QpIHsKICAgICAgICAgICAgICAgIHZhciBob3RUYWJsZVJlZiA9ICdob3R0YWJsZS4nICsgc3ViVGFibGVQYXRoOwogICAgICAgICAgICAgICAgdGhpcy4kcmVmc1tob3RUYWJsZVJlZl0uZmlsbGJhY2tIb3RUYWJsZURhdGEobnVsbCk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgYWRkSW5pdFRlbXBsYXRlRGF0YTogZnVuY3Rpb24gYWRkSW5pdFRlbXBsYXRlRGF0YShzdWJUYWJsZVBhdGgpIHsKICAgICAgICAgICAgdmFyIGhvdFRhYmxlUmVmID0gJ2hvdHRhYmxlLicgKyBzdWJUYWJsZVBhdGg7CiAgICAgICAgICAgIHRoaXMuJHJlZnNbaG90VGFibGVSZWZdLnRvQWRkSW5pdFRlbXBsYXRlRGF0YSgpOwogICAgICAgICAgfSwKICAgICAgICAgIG1lcmdlQ2VsbFJlZnJlc2g6IGZ1bmN0aW9uIG1lcmdlQ2VsbFJlZnJlc2goc3ViVGFibGVQYXRoKSB7CiAgICAgICAgICAgIHZhciBob3RUYWJsZVJlZiA9ICdob3R0YWJsZS4nICsgc3ViVGFibGVQYXRoOwogICAgICAgICAgICB0aGlzLiRyZWZzW2hvdFRhYmxlUmVmXS5tZXJnZUNlbGxSZWZyZXNoKCk7CiAgICAgICAgICB9LAogICAgICAgICAgZXhlY0NlbGxNYXRoRXhwOiBmdW5jdGlvbiBleGVjQ2VsbE1hdGhFeHAoc3ViVGFibGVQYXRoKSB7CiAgICAgICAgICAgIHZhciBob3RUYWJsZVJlZiA9ICdob3R0YWJsZS4nICsgc3ViVGFibGVQYXRoOwogICAgICAgICAgICB0aGlzLiRyZWZzW2hvdFRhYmxlUmVmXS5leGVjQ2VsbE1hdGhFeHAoKTsKICAgICAgICAgIH0sCiAgICAgICAgICBleGVjQ3Jvc3NNYXBwaW5nOiBmdW5jdGlvbiBleGVjQ3Jvc3NNYXBwaW5nKHN1YlRhYmxlUGF0aCkgewogICAgICAgICAgICB2YXIgaG90VGFibGVSZWYgPSAnaG90dGFibGUuJyArIHN1YlRhYmxlUGF0aDsKICAgICAgICAgICAgdGhpcy4kcmVmc1tob3RUYWJsZVJlZl0uZXhlY0Nyb3NzTWFwcGluZygpOwogICAgICAgICAgfSwKICAgICAgICAgIGdldEhvdFRhYmxlRGF0YTogZnVuY3Rpb24gZ2V0SG90VGFibGVEYXRhKHN1YlRhYmxlUGF0aCkgewogICAgICAgICAgICB2YXIgaG90VGFibGVSZWYgPSAnaG90dGFibGUuJyArIHN1YlRhYmxlUGF0aDsKICAgICAgICAgICAgdGhpcy4kcmVmc1tob3RUYWJsZVJlZl0uZ2V0SG90VGFibGVEYXRhKCk7CiAgICAgICAgICB9LAogICAgICAgICAgLy/ngrnlh7vliIbpobXmoKHpqozmjInpkq7op6blj5Hkuovku7YKICAgICAgICAgIG5leHRTdGVwQ2xpY2s6IGZ1bmN0aW9uIG5leHRTdGVwQ2xpY2soaXNDaGVjaywgaW5kZXgsIHdheSkgewogICAgICAgICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgICAgICAgdmFyIGNoaWxkcmVucyA9IHRoaXMuJHJlZnMub25saW5lRm9ybS4kY2hpbGRyZW5bMF0uJHJlZnM7CiAgICAgICAgICAgIHZhciBuZXh0SW5kZXggPSB3YXkgPT0gJ2JhY2snID8gaW5kZXggLSAxIDogaW5kZXggKyAxOwogICAgICAgICAgICAvL+i/m+WFpeS4i+S4gOS4qumhteetvuW5tuS4lOmcgOimgeagoemqjOW9k+WJjemhteetvuOAguWImei/m+ihjOagoemqjAogICAgICAgICAgICBpZiAod2F5ID09ICduZXh0JyAmJiBpc0NoZWNrID09ICd5JykgewogICAgICAgICAgICAgIHRoaXMuJHZhbGlkYXRvci52YWxpZGF0ZUFsbCgnY3VzdG9tLWZvcm0nKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKICAgICAgICAgICAgICAgIHZhciBjdXJUYWJIYXNFcnJvciA9IGZhbHNlOwogICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgdmFyIGN1ckVsID0gY2hpbGRyZW5zWyduZXh0X3N0ZXBfY2hlY2tfJyArIGluZGV4XS4kZWw7CiAgICAgICAgICAgICAgICAgIF90aGlzMy4kdmFsaWRhdG9yLmVycm9ycy5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGN1ckVsLmNvbnRhaW5zKGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKGl0ZW0uZmllbGQpWzBdKSkgewogICAgICAgICAgICAgICAgICAgICAgY3VyVGFiSGFzRXJyb3IgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocmVzdWx0IHx8ICFjdXJUYWJIYXNFcnJvcikgewogICAgICAgICAgICAgICAgICBjaGlsZHJlbnMuZWxfdGFibGVfY2hlY2suY3VycmVudE5hbWUgPSBuZXh0SW5kZXggKyAnJzsKICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuc0FycmF5ID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoY2hpbGRyZW5zKTsKICAgICAgICAgICAgICAgICAgY2hpbGRyZW5zQXJyYXkucmVtb3ZlKCdjb2xsYXBzZScpOwogICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0gY2hpbGRyZW5zQXJyYXkubGVuZ3RoIC0gMyAmJiB3YXkgPT0gJ25leHQnKSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXMzLiRyb290LiRlbWl0KCdzdGFydEZsb3dCdG5DaGFuZ2UnLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGNoaWxkcmVucy5lbF90YWJsZV9jaGVjay5jdXJyZW50TmFtZSA9IG5leHRJbmRleCArICcnOwogICAgICAgICAgICAgIHZhciBjaGlsZHJlbnNBcnJheSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGNoaWxkcmVucyk7CiAgICAgICAgICAgICAgY2hpbGRyZW5zQXJyYXkucmVtb3ZlKCdjb2xsYXBzZScpOwogICAgICAgICAgICAgIGlmIChpbmRleCA9PSBjaGlsZHJlbnNBcnJheS5sZW5ndGggLSAzICYmIHdheSA9PSAnbmV4dCcpIHsKICAgICAgICAgICAgICAgIHRoaXMuJHJvb3QuJGVtaXQoJ3N0YXJ0Rmxvd0J0bkNoYW5nZScsIHRydWUpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIHRvRmlsbE9yZzogZnVuY3Rpb24gdG9GaWxsT3JnKHBhdGgsIHJvdykgewogICAgICAgICAgICB2YXIgZmlsbE9yZ0NvbmYgPSB0aGlzLmZpbGxPcmdDb25mTWFwW3BhdGhdOwogICAgICAgICAgICB2YXIgZmlsbE9iaiA9IHt9OwogICAgICAgICAgICBpZiAoZmlsbE9yZ0NvbmYgJiYgdGhpcy5maWxsT3JnKSB7CiAgICAgICAgICAgICAgaWYgKGZpbGxPcmdDb25mLm5hbWUpIHsKICAgICAgICAgICAgICAgIHZhciBuYW1lUGF0aCA9IGZpbGxPcmdDb25mLm5hbWUuc3BsaXQoJy4nKTsKICAgICAgICAgICAgICAgIGZpbGxPYmpbbmFtZVBhdGhbbmFtZVBhdGgubGVuZ3RoIC0gMV1dID0gdGhpcy5maWxsT3JnLm5hbWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChmaWxsT3JnQ29uZi5pZCkgewogICAgICAgICAgICAgICAgdmFyIGlkUGF0aCA9IGZpbGxPcmdDb25mLmlkLnNwbGl0KCcuJyk7CiAgICAgICAgICAgICAgICBmaWxsT2JqW2lkUGF0aFtpZFBhdGgubGVuZ3RoIC0gMV1dID0gdGhpcy5maWxsT3JnLmlkOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoZmlsbE9yZ0NvbmYuY29kZSkgewogICAgICAgICAgICAgICAgdmFyIGNvZGVQYXRoID0gZmlsbE9yZ0NvbmYuY29kZS5zcGxpdCgnLicpOwogICAgICAgICAgICAgICAgZmlsbE9ialtjb2RlUGF0aFtjb2RlUGF0aC5sZW5ndGggLSAxXV0gPSB0aGlzLmZpbGxPcmcuY29kZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGZpbGxPcmdDb25mLmluc3RJZCkgewogICAgICAgICAgICAgICAgdmFyIGluc3RJZFBhdGggPSBmaWxsT3JnQ29uZi5pbnN0SWQuc3BsaXQoJy4nKTsKICAgICAgICAgICAgICAgIGZpbGxPYmpbaW5zdElkUGF0aFtpbnN0SWRQYXRoLmxlbmd0aCAtIDFdXSA9IHRoaXMuJHBhcmVudC4kcGFyZW50Lmluc3RJZCA/IHRoaXMuJHBhcmVudC4kcGFyZW50Lmluc3RJZCA6ICcnOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICByZXR1cm4gX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCByb3cpLCBmaWxsT2JqKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcm93OwogICAgICAgICAgfSwKICAgICAgICAgIGluaXRGaWxsOiBmdW5jdGlvbiBpbml0RmlsbChwYXRoLCBjb25mKSB7CiAgICAgICAgICAgIC8v5pS26ZuG6Ieq5Yqo5Zue5aGr5L+h5oGvCiAgICAgICAgICAgIGlmIChwYXRoICYmIGNvbmYpIHsKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgdmFyIGNvbmZKc29uID0gdGhpcy5maWxsT3JnQ29uZk1hcFtwYXRoXSA/IHRoaXMuZmlsbE9yZ0NvbmZNYXBbcGF0aF0gOiBKU09OLnBhcnNlKGNvbmYpOwogICAgICAgICAgICAgICAgaWYgKGNvbmZKc29uLmlkIHx8IGNvbmZKc29uLmNvZGUgfHwgY29uZkpzb24ubmFtZSB8fCBjb25mSnNvbi5pbnN0SWQpIHsKICAgICAgICAgICAgICAgICAgdGhpcy5maWxsT3JnQ29uZk1hcFtwYXRoXSA9IGNvbmZKc29uOwogICAgICAgICAgICAgICAgICB0aGlzLmluaXRGaXJzdEZpbGwocGF0aCwgY29uZkpzb24pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7fQogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgaW5pdEZpcnN0RmlsbDogZnVuY3Rpb24gaW5pdEZpcnN0RmlsbChwYXRoLCBjb25mKSB7CiAgICAgICAgICAgIC8v5aSE55CG56ys5LiA6KGM55qE5Zue5aGrCiAgICAgICAgICAgIHZhciBwYXRocyA9IHBhdGguc3BsaXQoJy4nKTsKICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVtwYXRoc1swXV1bcGF0aHNbMV1dICYmIHRoaXMuZGF0YVtwYXRoc1swXV1bcGF0aHNbMV1dLmxlbmd0aCA9PSAxICYmIHRoaXMuZmlsbE9yZy5pZCkgewogICAgICAgICAgICAgIGlmIChjb25mLmlkKSB7CiAgICAgICAgICAgICAgICB2YXIgaWRQYXRoID0gY29uZi5pZC5zcGxpdCgnLicpOwogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRhdGFbcGF0aHNbMF1dW3BhdGhzWzFdXVswXVtpZFBhdGhbMl1dKSB7CiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVtwYXRoc1swXV1bcGF0aHNbMV1dWzBdW2lkUGF0aFsyXV0gPSB0aGlzLmZpbGxPcmcuaWQ7CiAgICAgICAgICAgICAgICAgIGlmIChjb25mLmNvZGUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgY29kZVBhdGggPSBjb25mLmNvZGUuc3BsaXQoJy4nKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGF0YVtwYXRoc1swXV1bcGF0aHNbMV1dWzBdW2NvZGVQYXRoWzJdXSkgewogICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhW3BhdGhzWzBdXVtwYXRoc1sxXV1bMF1bY29kZVBhdGhbMl1dID0gdGhpcy5maWxsT3JnLmNvZGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGlmIChjb25mLm5hbWUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZVBhdGggPSBjb25mLm5hbWUuc3BsaXQoJy4nKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGF0YVtwYXRoc1swXV1bcGF0aHNbMV1dWzBdW25hbWVQYXRoWzJdXSkgewogICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhW3BhdGhzWzBdXVtwYXRoc1sxXV1bMF1bbmFtZVBhdGhbMl1dID0gdGhpcy5maWxsT3JnLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmIChjb25mLmluc3RJZCkgewogICAgICAgICAgICAgICAgdmFyIGluc3RJZFBhdGggPSBjb25mLmluc3RJZC5zcGxpdCgnLicpOwogICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRhdGFbcGF0aHNbMF1dW3BhdGhzWzFdXVswXVtpbnN0SWRQYXRoWzJdXSkgewogICAgICAgICAgICAgICAgICB0aGlzLmRhdGFbcGF0aHNbMF1dW3BhdGhzWzFdXVswXVtpbnN0SWRQYXRoWzJdXSA9IHRoaXMuJHBhcmVudC4kcGFyZW50Lmluc3RJZCA/IHRoaXMuJHBhcmVudC4kcGFyZW50Lmluc3RJZCA6ICcnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIGlzU2hvd0FkZEJ1dHRvbjogZnVuY3Rpb24gaXNTaG93QWRkQnV0dG9uKHBhdGgsIG1heFJvdywgc3ViSW5kZXgpIHsKICAgICAgICAgICAgaWYgKG1heFJvdyA9PT0gMCkgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB2YXIgcGF0aEFyciA9IHBhdGguc3BsaXQoJy4nKTsKICAgICAgICAgICAgaWYgKHN1YkluZGV4ID49IDApIHsKICAgICAgICAgICAgICBpZiAocGF0aEFyci5sZW5ndGggPCA0KSB7CiAgICAgICAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ+WtkOihqOi3r+W+hOacieivrycsCiAgICAgICAgICAgICAgICAgIHR5cGU6ICd3YXJuaW5nJwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5kYXRhW3BhdGhBcnJbMV1dW3BhdGhBcnJbMl1dW3N1YkluZGV4XVtwYXRoQXJyWzNdXTsKICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmxlbmd0aCA+PSBtYXhSb3c7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGlmIChwYXRoQXJyLmxlbmd0aCA8IDMpIHsKICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICBtZXNzYWdlOiAn5a2Q6KGo6Lev5b6E5pyJ6K+vJywKICAgICAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIF9kYXRhID0gdGhpcy5kYXRhW3BhdGhBcnJbMV1dW3BhdGhBcnJbMl1dOwogICAgICAgICAgICAgICAgcmV0dXJuIF9kYXRhLmxlbmd0aCA+PSBtYXhSb3c7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGNvbXBvbmVudHM6IHsKICAgICAgICAgIEVpcFBhZ2luYXRpb246IEVpcFBhZ2luYXRpb24sCiAgICAgICAgICBFaXBTdWJQYWdpbmF0aW9uOiBFaXBTdWJQYWdpbmF0aW9uLAogICAgICAgICAgRWlwU3ViSW1wb3J0RGlhbG9nOiBFaXBTdWJJbXBvcnREaWFsb2csCiAgICAgICAgICBFaXBTdWJFeHBvcnREaWFsb2c6IEVpcFN1YkV4cG9ydERpYWxvZywKICAgICAgICAgIEVpcFBhZ2luYXRpb25MYXlvdXQ6IEVpcFBhZ2luYXRpb25MYXlvdXQsCiAgICAgICAgICBFaXBJbnB1dDogRWlwSW5wdXQsCiAgICAgICAgICBFaXBDaGVja2JveDogRWlwQ2hlY2tib3gsCiAgICAgICAgICBFaXBTZWxlY3Q6IEVpcFNlbGVjdCwKICAgICAgICAgIEVpcFVzZXJTZWxlY3RvcjogRWlwVXNlclNlbGVjdG9yLAogICAgICAgICAgRWlwRGVtZW5zaW9uU2VsZWN0b3I6IEVpcERlbWVuc2lvblNlbGVjdG9yLAogICAgICAgICAgRWlwSm9iU2VsZWN0b3I6IEVpcEpvYlNlbGVjdG9yLAogICAgICAgICAgRWlwT3JnU2VsZWN0b3I6IEVpcE9yZ1NlbGVjdG9yLAogICAgICAgICAgRWlwUG9zdFNlbGVjdG9yOiBFaXBQb3N0U2VsZWN0b3IsCiAgICAgICAgICBFaXBSb2xlU2VsZWN0b3I6IEVpcFJvbGVTZWxlY3RvciwKICAgICAgICAgIEVpcFJhZGlvOiBFaXBSYWRpbywKICAgICAgICAgIEVpcFRleHRhcmVhOiBFaXBUZXh0YXJlYSwKICAgICAgICAgIEVpcEZvbnQ6IEVpcEZvbnQsCiAgICAgICAgICBFaXBEaWFsb2c6IEVpcERpYWxvZywKICAgICAgICAgIEVpcEJ1dHRvbjogRWlwQnV0dG9uLAogICAgICAgICAgRWlwRGF0ZTogRWlwRGF0ZSwKICAgICAgICAgIEVpcEltZzogRWlwSW1nLAogICAgICAgICAgRWlwVmlld2VyOiBFaXBWaWV3ZXIsCiAgICAgICAgICBFaXBTd2l0Y2g6IEVpcFN3aXRjaCwKICAgICAgICAgIEh0RmlsZTogSHRGaWxlLAogICAgICAgICAgVlJ1bnRpbWVUZW1wbGF0ZTogVlJ1bnRpbWVUZW1wbGF0ZSwKICAgICAgICAgIEh0R2FuZ2VkU2VsZWN0OiBIdEdhbmdlZFNlbGVjdCwKICAgICAgICAgIEVpcFJlbEZsb3c6IEVpcFJlbEZsb3csCiAgICAgICAgICBFaXBTdWJEaWFsb2c6IEVpcFN1YkRpYWxvZywKICAgICAgICAgIEh0TGFiZWw6IEh0TGFiZWwsCiAgICAgICAgICBIdERpZ2l0YWw6IEh0RGlnaXRhbCwKICAgICAgICAgIEh0Q3VycmVuY3k6IEh0Q3VycmVuY3ksCiAgICAgICAgICBFaXBSZWFsdGltZUlucHV0OiBFaXBSZWFsdGltZUlucHV0LAogICAgICAgICAgRWlwUmVhbHRpbWVUZXh0YXJlYTogRWlwUmVhbHRpbWVUZXh0YXJlYSwKICAgICAgICAgIEVpcFN0ZXA6IEVpcFN0ZXAsCiAgICAgICAgICBIdElucHV0QXV0b2NvbXBsZXRlOiBIdElucHV0QXV0b2NvbXBsZXRlLAogICAgICAgICAgSHRUcmVlc2VsZWN0OiBIdFRyZWVzZWxlY3QsCiAgICAgICAgICBIdENhc2NhZGVyOiBIdENhc2NhZGVyLAogICAgICAgICAgSHRUcmVlOiBIdFRyZWUsCiAgICAgICAgICBFaXBBdHRhY2htZW50OiBFaXBBdHRhY2htZW50LAogICAgICAgICAgRWlwRGljOiBFaXBEaWMsCiAgICAgICAgICBFaXBBdXRvY29tcGxldGU6IEVpcEF1dG9jb21wbGV0ZSwKICAgICAgICAgIEVpcENhc2NhZGVyOiBFaXBDYXNjYWRlciwKICAgICAgICAgIEVpcFRyZWVzZWxlY3Q6IEVpcFRyZWVzZWxlY3QsCiAgICAgICAgICBFaXBDb2xsYXBzZTogRWlwQ29sbGFwc2UsCiAgICAgICAgICBFaXBQYWdpbmF0aW9uU3RlcHM6IEVpcFBhZ2luYXRpb25TdGVwcywKICAgICAgICAgIEVpcE1hcDogRWlwTWFwLAogICAgICAgICAgRWlwRGF0YVZpZXc6IEVpcERhdGFWaWV3LAogICAgICAgICAgRWlwU3VuRGlhbG9nOiBFaXBTdW5EaWFsb2csCiAgICAgICAgICBFaXBUYWc6IEVpcFRhZywKICAgICAgICAgIEVpcEhvdFRhYmxlOiBFaXBIb3RUYWJsZSwKICAgICAgICAgIEVpcEhvdFN1YkRpYWxvZzogRWlwSG90U3ViRGlhbG9nLAogICAgICAgICAgQ29udHJhY3RQcmV2aWV3OiBDb250cmFjdFByZXZpZXcsCiAgICAgICAgICBFaXBTdWJ0YWJsZUJhY2tmaWxsOiBFaXBTdWJ0YWJsZUJhY2tmaWxsLAogICAgICAgICAgRWlwRGl2aWRlcjogRWlwRGl2aWRlciwKICAgICAgICAgIEVpcE9mZmljZTogRWlwT2ZmaWNlLAogICAgICAgICAgRWlwUXJjb2RlOiBFaXBRcmNvZGUsCiAgICAgICAgICBFaXBTaWduYXR1cmU6IEVpcFNpZ25hdHVyZSwKICAgICAgICAgIEVpcFRhYnM6IEVpcFRhYnMsCiAgICAgICAgICBFaXBGb250VWVkaXRvcjogRWlwRm9udFVlZGl0b3IKICAgICAgICB9CiAgICAgIH0pOwogICAgfQogIH0KfTs="},null]}