cc32b7e2352ea454af1816bb4bd9a325.json 29 KB

1
  1. {"remainingRequest":"D:\\front\\item\\zyAdmin\\node_modules\\thread-loader\\dist\\cjs.js!D:\\front\\item\\zyAdmin\\node_modules\\babel-loader\\lib\\index.js!D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\front\\item\\zyAdmin\\src\\pages\\system\\backendRouting\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\pages\\system\\backendRouting\\index.vue","mtime":1761614939067},{"path":"D:\\front\\item\\zyAdmin\\babel.config.js","mtime":1761614925168},{"path":"D:\\front\\item\\zyAdmin\\.babelrc","mtime":1761614925165},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\thread-loader\\dist\\cjs.js","mtime":1761614937017},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\babel-loader\\lib\\index.js","mtime":1761614927320},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1761614937402}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9yZWdlbmVyYXRvciBmcm9tICJEOi9mcm9udC9pdGVtL3p5QWRtaW4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yLmpzIjsKaW1wb3J0IF9hc3luY1RvR2VuZXJhdG9yIGZyb20gIkQ6L2Zyb250L2l0ZW0venlBZG1pbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2Zyb250L2l0ZW0venlBZG1pbi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0U3ByZWFkMi5qcyI7CmltcG9ydCBfZGVmaW5lUHJvcGVydHkgZnJvbSAiRDovZnJvbnQvaXRlbS96eUFkbWluL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9kZWZpbmVQcm9wZXJ0eS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZpbmQuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5zcGxpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5maW5kLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IubWFwLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuanNvbi5zdHJpbmdpZnkuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5udW1iZXIuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgeyByb3V0ZUNhdGUsIHN5bmNSb3V0ZSBhcyBfc3luY1JvdXRlLCByb3V0ZUxpc3QsIHJvdXRlRGV0LCByb3V0ZVNhdmUsIGludGVyZmFjZUVkaXROYW1lLCByb3V0ZURlbCwgcm91dGVFZGl0LCByb3V0ZUNhdGVEZWwgfSBmcm9tICdAL2FwaS9zeXN0ZW1CYWNrZW5kUm91dGluZyc7CmltcG9ydCB7IFZ1ZVRyZWVMaXN0LCBUcmVlLCBUcmVlTm9kZSB9IGZyb20gJ3Z1ZS10cmVlLWxpc3QnOwppbXBvcnQgZGVidWdnaW5nIGZyb20gJy4vZGVidWdnaW5nLnZ1ZSc7CmltcG9ydCB7IG1hcFN0YXRlIH0gZnJvbSAndnVleCc7CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnc3lzdGVtT3V0SW50ZXJmYWNlJywKICBjb21wb25lbnRzOiB7CiAgICBWdWVUcmVlTGlzdDogVnVlVHJlZUxpc3QsCiAgICBkZWJ1Z2dpbmc6IGRlYnVnZ2luZwogIH0sCiAgZGF0YTogZnVuY3Rpb24gZGF0YSgpIHsKICAgIHJldHVybiB7CiAgICAgIHZhbHVlOiAnJywKICAgICAgaXNFZGl0OiBmYWxzZSwKICAgICAgbmFtZU1vZGFsOiBmYWxzZSwKICAgICAgZGVidWdnaW5nTW9kYWw6IGZhbHNlLAogICAgICBmb3JtVmFsaWRhdGU6IHt9LAogICAgICBncmlkOiB7CiAgICAgICAgeGw6IDcsCiAgICAgICAgbGc6IDcsCiAgICAgICAgbWQ6IDEyLAogICAgICAgIHNtOiAyNCwKICAgICAgICB4czogMjQKICAgICAgfSwKICAgICAgcnVsZVZhbGlkYXRlOiB7CiAgICAgICAgdGl0bGU6IFt7CiAgICAgICAgICBtZXNzYWdlOiAn6K+36L6T5YWl5q2j56Gu55qE5o+P6L+wICjkuI3og73lpJrkuo4yMDDkvY3mlbApJywKICAgICAgICAgIHRyaWdnZXI6ICdibHVyJywKICAgICAgICAgIG1heDogMjAwCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgbG9hZGluZzogZmFsc2UsCiAgICAgIGludFR5cGVMaXN0OiBbewogICAgICAgIHZhbHVlOiAnc3RyaW5nJywKICAgICAgICBsYWJlbDogJ1N0cmluZycKICAgICAgfSwKICAgICAgLy8gewogICAgICAvLyAgIHZhbHVlOiAnYXJyYXknLAogICAgICAvLyAgIGxhYmVsOiAnQXJyYXknLAogICAgICAvLyB9LAogICAgICAvLyB7CiAgICAgIC8vICAgdmFsdWU6ICdvYmplY3QnLAogICAgICAvLyAgIGxhYmVsOiAnT2JqZWN0JywKICAgICAgLy8gfSwKICAgICAgewogICAgICAgIHZhbHVlOiAnbnVtYmVyJywKICAgICAgICBsYWJlbDogJ051bWJlcicKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnYm9vbGVhbicsCiAgICAgICAgbGFiZWw6ICdCb29sZWFuJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdudWxsJywKICAgICAgICBsYWJlbDogJ051bGwnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ2FueScsCiAgICAgICAgbGFiZWw6ICdBbnknCiAgICAgIH1dLAogICAgICB0eXBlTGlzdDogW3sKICAgICAgICB2YWx1ZTogJ3N0cmluZycsCiAgICAgICAgbGFiZWw6ICdTdHJpbmcnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ2FycmF5JywKICAgICAgICBsYWJlbDogJ0FycmF5JwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdvYmplY3QnLAogICAgICAgIGxhYmVsOiAnT2JqZWN0JwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdudW1iZXInLAogICAgICAgIGxhYmVsOiAnTnVtYmVyJwogICAgICB9LCB7CiAgICAgICAgdmFsdWU6ICdib29sZWFuJywKICAgICAgICBsYWJlbDogJ0Jvb2xlYW4nCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ251bGwnLAogICAgICAgIGxhYmVsOiAnTnVsbCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnYW55JywKICAgICAgICBsYWJlbDogJ0FueScKICAgICAgfV0sCiAgICAgIHJlcXVlc3RUeXBlTGlzdDogW3sKICAgICAgICB2YWx1ZTogJ0dFVCcsCiAgICAgICAgbGFiZWw6ICdHRVQnCiAgICAgIH0sIHsKICAgICAgICB2YWx1ZTogJ1BPU1QnLAogICAgICAgIGxhYmVsOiAnUE9TVCcKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnREVMRVRFJywKICAgICAgICBsYWJlbDogJ0RFTEVURScKICAgICAgfSwgewogICAgICAgIHZhbHVlOiAnUFVUJywKICAgICAgICBsYWJlbDogJ1BVVCcKICAgICAgfV0sCiAgICAgIGNvbnRleHREYXRhOiBudWxsLAogICAgICAvL+W3puS+p+WvvOiIquWPs+mUrueCueWHu+aYr+S6p+eUn+eahOaVsOaNruWvueixoQogICAgICB0cmVlRGF0YTogdW5kZWZpbmVkLAogICAgICBidXR0b25Qcm9wczogewogICAgICAgIHR5cGU6ICdkZWZhdWx0JywKICAgICAgICBzaXplOiAnc21hbGwnCiAgICAgIH0sCiAgICAgIG1ldGhvZENvbG9yOiAnI2ZmZicsCiAgICAgIGFwaVR5cGU6ICdhZG1pbmFwaScsCiAgICAgIHBhcmFtc0lkOiAwLAogICAgICB3aW5Mb2FkaW5nOiBmYWxzZQogICAgfTsKICB9LAogIHdhdGNoOiBfZGVmaW5lUHJvcGVydHkoX2RlZmluZVByb3BlcnR5KF9kZWZpbmVQcm9wZXJ0eSh7fSwgJ2Zvcm1WYWxpZGF0ZS5tZXRob2QnLCB7CiAgICBkZWVwOiB0cnVlLAogICAgaGFuZGxlcjogZnVuY3Rpb24gaGFuZGxlcihuZXdWYWwsIG9sZFZhbCkgewogICAgICBpZiAobmV3VmFsKSB7CiAgICAgICAgdmFyIG1ldGhvZCA9IG5ld1ZhbC50b1VwcGVyQ2FzZSgpOwogICAgICAgIGlmIChtZXRob2QgPT0gJ0dFVCcpIHsKICAgICAgICAgIHRoaXMubWV0aG9kQ29sb3IgPSAnIzYxYWZmZSc7CiAgICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT0gJ1BPU1QnKSB7CiAgICAgICAgICB0aGlzLm1ldGhvZENvbG9yID0gJyM0OWNjOTAnOwogICAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdQVVQnKSB7CiAgICAgICAgICB0aGlzLm1ldGhvZENvbG9yID0gJyNmY2ExMzAnOwogICAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdERUwnIHx8IG1ldGhvZCA9PSAnREVMRVRFJykgewogICAgICAgICAgdGhpcy5tZXRob2RDb2xvciA9ICcjZjkzZTNlJzsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9KSwgImFwaVR5cGUiLCBmdW5jdGlvbiBhcGlUeXBlKG5ld1ZhbCkgewogICAgaWYgKG5ld1ZhbCkgewogICAgICB0aGlzLndpbkxvYWRpbmcgPSB0cnVlOwogICAgICB0aGlzLmdldEludGVyZmFjZUxpc3QoJ29uZScpOwogICAgfQogIH0pLCAiaXNFZGl0IiwgZnVuY3Rpb24gaXNFZGl0KG5ld1ZhbCkgewogICAgaWYgKG5ld1ZhbCkgewogICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5yZXNwb25zZV9leGFtcGxlLm1hcChmdW5jdGlvbiAoZSkgewogICAgICAgIGUuZGF0YSA9IEpTT04uc3RyaW5naWZ5KGUuZGF0YSk7CiAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5mb3JtVmFsaWRhdGUucmVzcG9uc2VfZXhhbXBsZS5tYXAoZnVuY3Rpb24gKGUpIHsKICAgICAgICBlLmRhdGEgPSBKU09OLnBhcnNlKGUuZGF0YSk7CiAgICAgIH0pOwogICAgfQogIH0pLAogIGNvbXB1dGVkOiBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIG1hcFN0YXRlKCdtZWRpYScsIFsnaXNNb2JpbGUnXSkpLCB7fSwgewogICAgbGFiZWxXaWR0aDogZnVuY3Rpb24gbGFiZWxXaWR0aCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyB1bmRlZmluZWQgOiAnNTBweCc7CiAgICB9LAogICAgbGFiZWxQb3NpdGlvbjogZnVuY3Rpb24gbGFiZWxQb3NpdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyAndG9wJyA6ICdyaWdodCc7CiAgICB9CiAgfSksCiAgY3JlYXRlZDogZnVuY3Rpb24gY3JlYXRlZCgpIHsKICAgIHRoaXMuZ2V0SW50ZXJmYWNlTGlzdCgnb25lJyk7CiAgfSwKICBtZXRob2RzOiB7CiAgICBzeW5jUm91dGU6IGZ1bmN0aW9uIHN5bmNSb3V0ZSgpIHsKICAgICAgdmFyIF90aGlzID0gdGhpczsKICAgICAgdGhpcy4kbXNnYm94KHsKICAgICAgICB0aXRsZTogJ+eri+WNs+WQjOatpScsCiAgICAgICAgbWVzc2FnZTogJ+WQjOatpeS5i+WQju+8jOi3r+eUseaWh+S7tuS4reaWsOWinueahOaOpeWPo+a3u+WKoOWIsOaOpeWPo+WIl+ihqOS4re+8jOi3r+eUseaWh+S7tuS4reWIoOmZpOeahOi3r+eUseS8muWQjOatpeeahOWcqOaOpeWPo+WIl+ihqOS4reWIoOmZpCcsCiAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSwKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgaWNvbkNsYXNzOiAnZWwtaWNvbi13YXJuaW5nJywKICAgICAgICBjb25maXJtQnV0dG9uQ2xhc3M6ICdidG4tY3VzdG9tLWNhbmNlbCcKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgX3N5bmNSb3V0ZShfdGhpcy5hcGlUeXBlKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIF90aGlzLmdldEludGVyZmFjZUxpc3QoJ29uZScpOwogICAgICAgICAgX3RoaXMuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsKICAgICAgICB9KTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfSwKICAgIGRlYnVnZ2luZzogZnVuY3Rpb24gZGVidWdnaW5nKCkgewogICAgICB0aGlzLmRlYnVnZ2luZ01vZGFsID0gdHJ1ZTsKICAgIH0sCiAgICBvbkNsaWNrc3NzOiBmdW5jdGlvbiBvbkNsaWNrc3NzKGUpIHt9LAogICAgbWV0aG9kc0NvbG9yOiBmdW5jdGlvbiBtZXRob2RzQ29sb3IobmV3VmFsKSB7CiAgICAgIHZhciBtZXRob2QgPSBuZXdWYWwudG9VcHBlckNhc2UoKTsKICAgICAgaWYgKG1ldGhvZCA9PSAnR0VUJykgewogICAgICAgIHJldHVybiAnIzYxYWZmZSc7CiAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdQT1NUJykgewogICAgICAgIHJldHVybiAnIzQ5Y2M5MCc7CiAgICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdQVVQnKSB7CiAgICAgICAgcmV0dXJuICcjZmNhMTMwJzsKICAgICAgfSBlbHNlIGlmIChtZXRob2QgPT0gJ0RFTCcgfHwgbWV0aG9kID09ICdERUxFVEUnKSB7CiAgICAgICAgcmV0dXJuICcjZjkzZTNlJzsKICAgICAgfQogICAgfSwKICAgIGluc2VydEJlZm9yZTogZnVuY3Rpb24gaW5zZXJ0QmVmb3JlKHBhcmFtcykge30sCiAgICBpbnNlcnRBZnRlcjogZnVuY3Rpb24gaW5zZXJ0QWZ0ZXIocGFyYW1zKSB7fSwKICAgIG1vdmVJbnRvOiBmdW5jdGlvbiBtb3ZlSW50byhwYXJhbXMpIHt9LAogICAgYWRkVGFibGVEYXRhOiBmdW5jdGlvbiBhZGRUYWJsZURhdGEoKSB7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkJHRhYmxlJGluc2VydEEsIGRhdGE7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcigpLncoZnVuY3Rpb24gKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5uKSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dC5uID0gMTsKICAgICAgICAgICAgICByZXR1cm4gJHRhYmxlLmluc2VydEF0KG5ld1JvdywgLTEpOwogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgX3lpZWxkJCR0YWJsZSRpbnNlcnRBID0gX2NvbnRleHQudjsKICAgICAgICAgICAgICBkYXRhID0gX3lpZWxkJCR0YWJsZSRpbnNlcnRBLnJvdzsKICAgICAgICAgICAgICBfY29udGV4dC5uID0gMjsKICAgICAgICAgICAgICByZXR1cm4gJHRhYmxlLnNldEFjdGl2ZUNlbGwoZGF0YSwgJ25hbWUnKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hKDIpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICBnZXRJbnRlcmZhY2VMaXN0OiBmdW5jdGlvbiBnZXRJbnRlcmZhY2VMaXN0KGRpc2tfdHlwZSkgewogICAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgICAgdHJ5IHsKICAgICAgICByb3V0ZUxpc3QodGhpcy5hcGlUeXBlKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIGlmIChyZXMuZGF0YS5sZW5ndGgpIHsKICAgICAgICAgICAgcmVzLmRhdGFbMF0uZXhwYW5kID0gZmFsc2U7CiAgICAgICAgICAgIF90aGlzMi50cmVlRGF0YSA9IG5ldyBUcmVlKHJlcy5kYXRhKTsKICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgIF90aGlzMi4kbmV4dFRpY2soZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICBpZiAoZGlza190eXBlKSB7CiAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGFbMF0uY2hpbGRyZW4gJiYgcmVzLmRhdGFbMF0uY2hpbGRyZW5bMF0uY2hpbGRyZW4gJiYgcmVzLmRhdGFbMF0uY2hpbGRyZW5bMF0uY2hpbGRyZW4ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy52dGwtaWNvbi1jYXJldC1yaWdodCcpWzBdLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy52dGwtaWNvbi1jYXJldC1yaWdodCcpWzFdLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgIGkgPSByZXMuZGF0YVswXS5jaGlsZHJlblswXS5jaGlsZHJlblswXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy52dGwtaWNvbi1jYXJldC1yaWdodCcpWzBdLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgIGkgPSByZXMuZGF0YVswXS5jaGlsZHJlblswXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF90aGlzMi5vbkNsaWNrKGkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyB0aGlzLiRyZWZzLnRyZWVMaXN0LmNsZWFyKCk7CiAgICAgICAgICAgIF90aGlzMi50cmVlRGF0YSA9IG5ldyBUcmVlKHt9KTsKICAgICAgICAgICAgX3RoaXMyLmZvcm1WYWxpZGF0ZSA9IHt9OwogICAgICAgICAgfQogICAgICAgICAgX3RoaXMyLndpbkxvYWRpbmcgPSBmYWxzZTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICBfdGhpczIud2luTG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgX3RoaXMyLiRtZXNzYWdlLmVycm9yKGVyci5tc2cpOwogICAgICAgIH0pOwogICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTsKICAgICAgfQogICAgfSwKICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2socGFyYW1zKSB7CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKHBhcmFtcy5tZXRob2QpIHsKICAgICAgICAgIHRoaXMuaXNFZGl0ID0gZmFsc2U7CiAgICAgICAgICB0aGlzLnBhcmFtc0lkID0gcGFyYW1zLmlkOwogICAgICAgICAgdGhpcy5nZXRSb3RlRGF0YShwYXJhbXMuaWQpOwogICAgICAgIH0KICAgICAgfSBjYXRjaCAoZXJyb3IpIHt9CiAgICB9LAogICAgZ2V0Um90ZURhdGE6IGZ1bmN0aW9uIGdldFJvdGVEYXRhKGlkKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICByb3V0ZURldChpZCkudGhlbihmdW5jdGlvbiAocmVzKSB7CiAgICAgICAgX3RoaXMzLmZvcm1WYWxpZGF0ZSA9IHJlcy5kYXRhOwogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgX3RoaXMzLiRtZXNzYWdlLmVycm9yKGVyci5tc2cpOwogICAgICB9KTsKICAgIH0sCiAgICBoYW5kbGVTdWJtaXQ6IGZ1bmN0aW9uIGhhbmRsZVN1Ym1pdCgpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yKCkudyhmdW5jdGlvbiAoX2NvbnRleHQyKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIubikgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWYgKF90aGlzNC5mb3JtVmFsaWRhdGUubmFtZSkgewogICAgICAgICAgICAgICAgX2NvbnRleHQyLm4gPSAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYSgyLCBfdGhpczQuJG1lc3NhZ2Uud2FybmluZygn6K+36L6T5YWl5o6l5Y+j5ZCN56ewJykpOwogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgaWYgKF90aGlzNC5mb3JtVmFsaWRhdGUubWV0aG9kKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDIubiA9IDI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hKDIsIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKCfor7fpgInmi6nor7fmsYLnsbvlnosnKSk7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBpZiAoX3RoaXM0LmZvcm1WYWxpZGF0ZS5wYXRoKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDIubiA9IDM7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hKDIsIF90aGlzNC4kbWVzc2FnZS53YXJuaW5nKCfor7fovpPlhaXot6/nlLHlnLDlnYAnKSk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfY29udGV4dDIubiA9IDQ7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNC4kcmVmcy5ib2R5VGFibGUuZ2V0VGFibGVEYXRhKCkudGFibGVEYXRhOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3RoaXM0LmZvcm1WYWxpZGF0ZS5yZXF1ZXN0ID0gX2NvbnRleHQyLnY7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm4gPSA1OwogICAgICAgICAgICAgIHJldHVybiBfdGhpczQuJHJlZnMucmVzVGFibGUuZ2V0VGFibGVEYXRhKCkudGFibGVEYXRhOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX3RoaXM0LmZvcm1WYWxpZGF0ZS5yZXNwb25zZSA9IF9jb250ZXh0Mi52OwogICAgICAgICAgICAgIF9jb250ZXh0Mi5uID0gNjsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXM0LiRyZWZzLmNvZGVUYWJsZS5nZXRUYWJsZURhdGEoKS50YWJsZURhdGE7CiAgICAgICAgICAgIGNhc2UgNjoKICAgICAgICAgICAgICBfdGhpczQuZm9ybVZhbGlkYXRlLmVycm9yX2NvZGUgPSBfY29udGV4dDIudjsKICAgICAgICAgICAgICBfY29udGV4dDIubiA9IDc7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNC4kcmVmcy5oZWFkVGFibGUuZ2V0VGFibGVEYXRhKCkudGFibGVEYXRhOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgX3RoaXM0LmZvcm1WYWxpZGF0ZS5oZWFkZXIgPSBfY29udGV4dDIudjsKICAgICAgICAgICAgICBfY29udGV4dDIubiA9IDg7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNC4kcmVmcy54VGFibGUuZ2V0VGFibGVEYXRhKCkudGFibGVEYXRhOwogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgX3RoaXM0LmZvcm1WYWxpZGF0ZS5xdWVyeSA9IF9jb250ZXh0Mi52OwogICAgICAgICAgICAgIF90aGlzNC5mb3JtVmFsaWRhdGUuYXBpVHlwZSA9IF90aGlzNC5hcGlUeXBlOwogICAgICAgICAgICAgIF90aGlzNC5mb3JtVmFsaWRhdGUucmVzcG9uc2VfZXhhbXBsZS5tYXAoZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgIGUuZGF0YSA9IEpTT04ucGFyc2UoZS5kYXRhKTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBfY29udGV4dDIubiA9IDk7CiAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlU2F2ZShfdGhpczQuZm9ybVZhbGlkYXRlKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOwogICAgICAgICAgICAgICAgX3RoaXM0LmdldFJvdGVEYXRhKF90aGlzNC5wYXJhbXNJZCk7CiAgICAgICAgICAgICAgICBfdGhpczQuaXNFZGl0ID0gZmFsc2U7CiAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycikgewogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLmVycm9yKGVyci5tc2cpOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hKDIpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUyKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgaW5zZXJ0RXZlbnQ6IGZ1bmN0aW9uIGluc2VydEV2ZW50KHR5cGUpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICB2YXIgJHRhYmxlLCBuZXdSb3csIF95aWVsZCQkdGFibGUkaW5zZXJ0QTIsIGRhdGE7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcigpLncoZnVuY3Rpb24gKF9jb250ZXh0MykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQzLm4pIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICR0YWJsZSA9IF90aGlzNS4kcmVmc1t0eXBlXTsKICAgICAgICAgICAgICBpZiAodHlwZSA9PSAneFRhYmxlJykgewogICAgICAgICAgICAgICAgbmV3Um93ID0gewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6ICcnLAogICAgICAgICAgICAgICAgICB0eXBlOiAnJywKICAgICAgICAgICAgICAgICAgbXVzdDogMCwKICAgICAgICAgICAgICAgICAgdHJpcDogJycKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09ICdyZXNUYWJsZScpIHsKICAgICAgICAgICAgICAgIG5ld1JvdyA9IHsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlOiAnJywKICAgICAgICAgICAgICAgICAgdHlwZTogJycsCiAgICAgICAgICAgICAgICAgIHRyaXA6ICcnCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBuZXdSb3cgPSB7CiAgICAgICAgICAgICAgICAgIGNvZGU6ICcnLAogICAgICAgICAgICAgICAgICB2YWx1ZTogJycsCiAgICAgICAgICAgICAgICAgIHNvbHV0aW9uOiAnJwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy8gJHRhYmxlLmluc2VydChuZXdSb3cpLnRoZW4oKHsgcm93IH0pID0+ICR0YWJsZS5zZXRFZGl0Um93KHJvdywgLTEpKTsKICAgICAgICAgICAgICBfY29udGV4dDMubiA9IDE7CiAgICAgICAgICAgICAgcmV0dXJuICR0YWJsZS5pbnNlcnRBdChuZXdSb3csIC0xKTsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgIF95aWVsZCQkdGFibGUkaW5zZXJ0QTIgPSBfY29udGV4dDMudjsKICAgICAgICAgICAgICBkYXRhID0gX3lpZWxkJCR0YWJsZSRpbnNlcnRBMi5yb3c7CiAgICAgICAgICAgICAgX2NvbnRleHQzLm4gPSAyOwogICAgICAgICAgICAgIHJldHVybiAkdGFibGUuc2V0QWN0aXZlQ2VsbChkYXRhLCAnbmFtZScpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5hKDIpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgaW5zZXJ0Um93OiBmdW5jdGlvbiBpbnNlcnRSb3coY3VyclJvdywgdHlwZSkgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IoKS5tKGZ1bmN0aW9uIF9jYWxsZWU0KCkgewogICAgICAgIHZhciAkdGFibGUsIHJlY29yZCwgX3lpZWxkJCR0YWJsZSRpbnNlcnRBMywgbmV3Um93OwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IoKS53KGZ1bmN0aW9uIChfY29udGV4dDQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5uKSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAkdGFibGUgPSBfdGhpczYuJHJlZnNbdHlwZV07IC8vIOWmguaenCBudWxsIOWImeaPkuWFpeWIsOebruagh+iKgueCuemhtumDqAogICAgICAgICAgICAgIC8vIOWmguaenCAtMSDliJnmj5LlhaXliLDnm67moIfoioLngrnlupXpg6gKICAgICAgICAgICAgICAvLyDlpoLmnpwgcm93IOWImeacieaPkuWFpeWIsOaViOeahOebruagh+iKgueCueivpeihjOeahOS9jee9rgogICAgICAgICAgICAgIGlmICh0eXBlID09ICd4VGFibGUnKSB7CiAgICAgICAgICAgICAgICByZWNvcmQgPSB7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZTogJycsCiAgICAgICAgICAgICAgICAgIHR5cGU6ICcnLAogICAgICAgICAgICAgICAgICBtdXN0OiAwLAogICAgICAgICAgICAgICAgICB0cmlwOiAnJywKICAgICAgICAgICAgICAgICAgaWQ6IERhdGUubm93KCksCiAgICAgICAgICAgICAgICAgIHBhcmVudElkOiBjdXJyUm93LmlkIC8vIOmcgOimgeaMh+WumueItuiKgueCue+8jOiHquWKqOaPkuWFpeivpeiKgueCueS4rQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ3Jlc1RhYmxlJykgewogICAgICAgICAgICAgICAgcmVjb3JkID0gewogICAgICAgICAgICAgICAgICBhdHRyaWJ1dGU6ICcnLAogICAgICAgICAgICAgICAgICB0eXBlOiAnJywKICAgICAgICAgICAgICAgICAgdHJpcDogJycsCiAgICAgICAgICAgICAgICAgIGlkOiBEYXRlLm5vdygpLAogICAgICAgICAgICAgICAgICBwYXJlbnRJZDogY3VyclJvdy5pZCAvLyDpnIDopoHmjIflrprniLboioLngrnvvIzoh6rliqjmj5LlhaXor6XoioLngrnkuK0KICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJlY29yZCA9IHsKICAgICAgICAgICAgICAgICAgY29kZTogJycsCiAgICAgICAgICAgICAgICAgIHZhbHVlOiAnJywKICAgICAgICAgICAgICAgICAgc29sdXRpb246ICcnLAogICAgICAgICAgICAgICAgICBpZDogRGF0ZS5ub3coKSwKICAgICAgICAgICAgICAgICAgcGFyZW50SWQ6IGN1cnJSb3cuaWQgLy8g6ZyA6KaB5oyH5a6a54i26IqC54K577yM6Ieq5Yqo5o+S5YWl6K+l6IqC54K55LitCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDQubiA9IDE7CiAgICAgICAgICAgICAgcmV0dXJuICR0YWJsZS5pbnNlcnRBdChyZWNvcmQsIC0xKTsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgIF95aWVsZCQkdGFibGUkaW5zZXJ0QTMgPSBfY29udGV4dDQudjsKICAgICAgICAgICAgICBuZXdSb3cgPSBfeWllbGQkJHRhYmxlJGluc2VydEEzLnJvdzsKICAgICAgICAgICAgICBfY29udGV4dDQubiA9IDI7CiAgICAgICAgICAgICAgcmV0dXJuICR0YWJsZS5zZXRUcmVlRXhwYW5kKGN1cnJSb3csIHRydWUpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm4gPSAzOwogICAgICAgICAgICAgIHJldHVybiAkdGFibGUuc2V0QWN0aXZlUm93KG5ld1Jvdyk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LmEoMik7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTQpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICByZW1vdmVSb3c6IGZ1bmN0aW9uIHJlbW92ZVJvdyhyb3csIHR5cGUpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yKCkubShmdW5jdGlvbiBfY2FsbGVlNSgpIHsKICAgICAgICB2YXIgJHRhYmxlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IoKS53KGZ1bmN0aW9uIChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5uKSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAkdGFibGUgPSBfdGhpczcuJHJlZnNbdHlwZV07CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm4gPSAxOwogICAgICAgICAgICAgIHJldHVybiAkdGFibGUucmVtb3ZlKHJvdyk7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LmEoMik7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDkv67mlLnlkI3lrZcKICAgIGFkZDogZnVuY3Rpb24gYWRkKCkgewogICAgICB0aGlzLnZhbHVlID0gJyc7CiAgICAgIHRoaXMuZm9ybVZhbGlkYXRlLmlkID0gMDsKICAgICAgdGhpcy5uYW1lTW9kYWwgPSB0cnVlOwogICAgfSwKICAgIC8vIOeCueWHu+iPnOWNlQogICAgY2xpY2tNZW51OiBmdW5jdGlvbiBjbGlja01lbnUobmFtZSwgcGFyYW1zKSB7CiAgICAgIHZhciBfdGhpczggPSB0aGlzOwogICAgICBpZiAobmFtZSA9PSAxKSB7CiAgICAgICAgdGhpcy5mb3JtVmFsaWRhdGUgPSB7fTsKICAgICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5jYXRlX2lkID0gcGFyYW1zID8gcGFyYW1zLmlkIDogMDsKICAgICAgICB0aGlzLmZvcm1WYWxpZGF0ZS5pZCA9IDA7CiAgICAgICAgdGhpcy5pc0VkaXQgPSB0cnVlOwogICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gMikgewogICAgICAgIC8vIHRoaXMudmFsdWUgPSBwYXJhbXMubmFtZSB8fCAnJzsKICAgICAgICAvLyB0aGlzLmZvcm1WYWxpZGF0ZS5jYXRlX2lkID0gcGFyYW1zID8gcGFyYW1zLmlkIDogMDsKICAgICAgICAvLyB0aGlzLm5hbWVNb2RhbCA9IHRydWU7CiAgICAgICAgLy8gdGhpcy5vbkVkaXQocGFyYW1zKTsKICAgICAgICB0aGlzLiRtb2RhbEZvcm0ocm91dGVFZGl0KHBhcmFtcy5pZCwgdGhpcy5hcGlUeXBlKSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICByZXR1cm4gX3RoaXM4LmdldEludGVyZmFjZUxpc3QoKTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIGlmIChuYW1lID09IDMpIHsKICAgICAgICB0aGlzLm9uRGVsKHBhcmFtcyk7CiAgICAgIH0gZWxzZSBpZiAobmFtZSA9PSA0KSB7CiAgICAgICAgLy8gdGhpcy5hZGQoKTsKICAgICAgICB0aGlzLiRtb2RhbEZvcm0ocm91dGVDYXRlKHRoaXMuYXBpVHlwZSkpLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgcmV0dXJuIF90aGlzOC5nZXRJbnRlcmZhY2VMaXN0KCk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCiAgICBhZGRGYWM6IGZ1bmN0aW9uIGFkZEZhYyhwYXJhbXMpIHsKICAgICAgdGhpcy5mb3JtVmFsaWRhdGUgPSB7CiAgICAgICAgaWQ6IHBhcmFtcyA/IHBhcmFtcy5pZCA6IDAKICAgICAgfTsKICAgICAgdGhpcy5pc0VkaXQgPSB0cnVlOwogICAgfSwKICAgIGFzeW5jT0s6IGZ1bmN0aW9uIGFzeW5jT0soKSB7CiAgICAgIHZhciBfdGhpczkgPSB0aGlzOwogICAgICB2YXIgZGF0YSA9IHsKICAgICAgICBpZDogdGhpcy5mb3JtVmFsaWRhdGUuaWQgfHwgMCwKICAgICAgICB0eXBlOiAwLAogICAgICAgIG5hbWU6IHRoaXMudmFsdWUKICAgICAgfTsKICAgICAgcm91dGVTYXZlKGRhdGEpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgIF90aGlzOS4kbWVzc2FnZS5zdWNjZXNzKHJlcy5tc2cpOwogICAgICAgIF90aGlzOS5nZXRJbnRlcmZhY2VMaXN0KCk7CiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICBfdGhpczkuJG1lc3NhZ2UuZXJyb3IoZXJyLm1zZyk7CiAgICAgIH0pOwogICAgfSwKICAgIC8v5L6n6L655qCP5Y+z6ZSu54K55Ye75LqL5Lu2CiAgICBoYW5kbGVDb250ZXh0TWVudTogZnVuY3Rpb24gaGFuZGxlQ29udGV4dE1lbnUoZGF0YSwgZXZlbnQsIHBvc2l0aW9uKSB7CiAgICAgIHBvc2l0aW9uLmxlZnQgPSBOdW1iZXIocG9zaXRpb24ubGVmdC5zbGljZSgwLCAtMikpICsgNzUgKyAncHgnOwogICAgICB0aGlzLmNvbnRleHREYXRhID0gZGF0YTsKICAgIH0sCiAgICBoYW5kbGVDb250ZXh0Q3JlYXRlRm9sZGVyOiBmdW5jdGlvbiBoYW5kbGVDb250ZXh0Q3JlYXRlRm9sZGVyKCkge30sCiAgICBoYW5kbGVDb250ZXh0Q3JlYXRlRmlsZTogZnVuY3Rpb24gaGFuZGxlQ29udGV4dENyZWF0ZUZpbGUoKSB7fSwKICAgIC8vIOiHquWumuS5ieaYvuekugogICAgcmVuZGVyQ29udGVudDogZnVuY3Rpb24gcmVuZGVyQ29udGVudChoLCBfcmVmKSB7CiAgICAgIHZhciBfdGhpczAgPSB0aGlzOwogICAgICB2YXIgcm9vdCA9IF9yZWYucm9vdCwKICAgICAgICBub2RlID0gX3JlZi5ub2RlLAogICAgICAgIGRhdGEgPSBfcmVmLmRhdGE7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKICAgICAgcmV0dXJuIGgoJ3NwYW4nLCB7CiAgICAgICAgc3R5bGU6IHsKICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLAogICAgICAgICAgd2lkdGg6ICcxMDAlJwogICAgICAgIH0KICAgICAgfSwgW2goJ3NwYW4nLCBbaChyZXNvbHZlQ29tcG9uZW50KCdJY29uJyksIHsKICAgICAgICB0eXBlOiAnaW9zLXBhcGVyLW91dGxpbmUnLAogICAgICAgIHN0eWxlOiB7CiAgICAgICAgICBtYXJnaW5SaWdodDogJzhweCcKICAgICAgICB9CiAgICAgIH0pLCBoKCdzcGFuJywgZGF0YS50aXRsZSldKSwgaCgnc3BhbicsIHsKICAgICAgICBzdHlsZTogewogICAgICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsCiAgICAgICAgICBmbG9hdDogJ3JpZ2h0JywKICAgICAgICAgIG1hcmdpblJpZ2h0OiAnMzJweCcKICAgICAgICB9CiAgICAgIH0sIFtoKHJlc29sdmVDb21wb25lbnQoJ0J1dHRvbicpLCBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHRoaXMuYnV0dG9uUHJvcHMpLCB7fSwgewogICAgICAgIGljb246ICdpb3MtYWRkJywKICAgICAgICBzdHlsZTogewogICAgICAgICAgbWFyZ2luUmlnaHQ6ICc4cHgnCiAgICAgICAgfSwKICAgICAgICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkgewogICAgICAgICAgX3RoaXMwLmFwcGVuZChkYXRhKTsKICAgICAgICB9CiAgICAgIH0pKSwgaChyZXNvbHZlQ29tcG9uZW50KCdCdXR0b24nKSwgX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKHt9LCB0aGlzLmJ1dHRvblByb3BzKSwge30sIHsKICAgICAgICBpY29uOiAnaW9zLXJlbW92ZScsCiAgICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHsKICAgICAgICAgIF90aGlzMC5yZW1vdmUocm9vdCwgbm9kZSwgZGF0YSk7CiAgICAgICAgfQogICAgICB9KSldKV0pOwogICAgfSwKICAgIC8qKg0KICAgICAqIOS+p+i+ueagj+eCueWHu+S6i+S7tg0KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhDQogICAgICovCiAgICBjbGlja0RpcjogZnVuY3Rpb24gY2xpY2tEaXIoZGF0YSwgcm9vdCwgbm9kZSkgewogICAgICB2YXIgdGhhdCA9IHRoaXM7CiAgICAgIHRoYXQubmF2SXRlbSA9IGRhdGE7CiAgICAgIHRoYXQucGF0aG5hbWUgPSBkYXRhLnBhdGhuYW1lOwogICAgfSwKICAgIGFwcGVuZDogZnVuY3Rpb24gYXBwZW5kKGRhdGEpIHsKICAgICAgdmFyIGNoaWxkcmVuID0gZGF0YS5jaGlsZHJlbiB8fCBbXTsKICAgICAgY2hpbGRyZW4ucHVzaCh7CiAgICAgICAgdGl0bGU6ICdhcHBlbmRlZCBub2RlJywKICAgICAgICBleHBhbmQ6IHRydWUKICAgICAgfSk7CiAgICAgIHRoaXMuJHNldChkYXRhLCAnY2hpbGRyZW4nLCBjaGlsZHJlbik7CiAgICB9LAogICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUocm9vdCwgbm9kZSwgZGF0YSkgewogICAgICB2YXIgcGFyZW50S2V5ID0gcm9vdC5maW5kKGZ1bmN0aW9uIChlbCkgewogICAgICAgIHJldHVybiBlbCA9PT0gbm9kZTsKICAgICAgfSkucGFyZW50OwogICAgICB2YXIgcGFyZW50ID0gcm9vdC5maW5kKGZ1bmN0aW9uIChlbCkgewogICAgICAgIHJldHVybiBlbC5ub2RlS2V5ID09PSBwYXJlbnRLZXk7CiAgICAgIH0pLm5vZGU7CiAgICAgIHZhciBpbmRleCA9IHBhcmVudC5jaGlsZHJlbi5pbmRleE9mKGRhdGEpOwogICAgICBwYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAxKTsKICAgIH0sCiAgICBvbk1vdXNlT3ZlcjogZnVuY3Rpb24gb25Nb3VzZU92ZXIocm9vdCwgbm9kZSwgZGF0YSwgZSwgZCkgewogICAgICBjb25zb2xlLmxvZyhyb290LCBub2RlLCBkYXRhKTsKICAgIH0sCiAgICAvLwogICAgb25EZWw6IGZ1bmN0aW9uIG9uRGVsKG5vZGUpIHsKICAgICAgdmFyIF90aGlzMSA9IHRoaXM7CiAgICAgIHZhciBtZXRob2QgPSBub2RlLmNhdGVfaWQgPyByb3V0ZURlbCA6IHJvdXRlQ2F0ZURlbDsKICAgICAgdGhpcy4kbXNnYm94KHsKICAgICAgICB0aXRsZTogJ+aPkOekuicsCiAgICAgICAgbWVzc2FnZTogJ+WIoOmZpOWQjuaXoOazleaBouWkje+8jOivt+ehruiupOWQjuWIoOmZpO+8gScsCiAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSwKICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgaWNvbkNsYXNzOiAnZWwtaWNvbi13YXJuaW5nJywKICAgICAgICBjb25maXJtQnV0dG9uQ2xhc3M6ICdidG4tY3VzdG9tLWNhbmNlbCcKICAgICAgfSkudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgbWV0aG9kKG5vZGUuaWQpLnRoZW4oZnVuY3Rpb24gKHJlcykgewogICAgICAgICAgX3RoaXMxLiRtZXNzYWdlLnN1Y2Nlc3MocmVzLm1zZyk7CiAgICAgICAgICBub2RlLnJlbW92ZSgpOwogICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsKICAgICAgICAgIF90aGlzMS4kbWVzc2FnZS5lcnJvcihlcnIubXNnKTsKICAgICAgICB9KTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKCkge30pOwogICAgfSwKICAgIG9uQ2hhbmdlTmFtZTogZnVuY3Rpb24gb25DaGFuZ2VOYW1lKHBhcmFtcykgewogICAgICB2YXIgX3RoaXMxMCA9IHRoaXM7CiAgICAgIGlmIChwYXJhbXMuZXZlbnRUeXBlID09ICdibHVyJykgewogICAgICAgIHZhciBkYXRhID0gewogICAgICAgICAgbmFtZTogcGFyYW1zLm5ld05hbWUsCiAgICAgICAgICBpZDogcGFyYW1zLmlkCiAgICAgICAgfTsKICAgICAgICBpbnRlcmZhY2VFZGl0TmFtZShkYXRhKS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIF90aGlzMTAuJG1lc3NhZ2Uuc3VjY2VzcyhyZXMubXNnKTsKICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICBfdGhpczEwLiRtZXNzYWdlLmVycm9yKGVyci5tc2cpOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAogICAgb25BZGROb2RlOiBmdW5jdGlvbiBvbkFkZE5vZGUocGFyYW1zKSB7CiAgICAgIC8vIHRoaXMuJHJvdXRlci5wdXNoKHsKICAgICAgLy8gICBwYXRoOiAnL2FkbWluL3NldHRpbmcvc3lzdGVtX291dF9pbnRlcmZhY2UvYWRkJywKICAgICAgLy8gICBxdWVyeTogewogICAgICAvLyAgICAgcGlkOiBwYXJhbXMucGlkLAogICAgICAvLyAgIH0sCiAgICAgIC8vIH0pOwogICAgfSwKICAgIGFkZE5vZGU6IGZ1bmN0aW9uIGFkZE5vZGUoKSB7CiAgICAgIHZhciBub2RlID0gbmV3IFRyZWVOb2RlKHsKICAgICAgICBuYW1lOiAnbmV3IG5vZGUnLAogICAgICAgIGlzTGVhZjogZmFsc2UKICAgICAgfSk7CiAgICAgIGlmICghdGhpcy5kYXRhLmNoaWxkcmVuKSB0aGlzLmRhdGEuY2hpbGRyZW4gPSBbXTsKICAgICAgdGhpcy5kYXRhLmFkZENoaWxkcmVuKG5vZGUpOwogICAgfSwKICAgIGdldE5ld1RyZWU6IGZ1bmN0aW9uIGdldE5ld1RyZWUoKSB7CiAgICAgIHZhciB2bSA9IHRoaXM7CiAgICAgIGZ1bmN0aW9uIF9kZnMob2xkTm9kZSkgewogICAgICAgIHZhciBuZXdOb2RlID0ge307CiAgICAgICAgZm9yICh2YXIgayBpbiBvbGROb2RlKSB7CiAgICAgICAgICBpZiAoayAhPT0gJ2NoaWxkcmVuJyAmJiBrICE9PSAncGFyZW50JykgewogICAgICAgICAgICBuZXdOb2RlW2tdID0gb2xkTm9kZVtrXTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG9sZE5vZGUuY2hpbGRyZW4gJiYgb2xkTm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgICBuZXdOb2RlLmNoaWxkcmVuID0gW107CiAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gb2xkTm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICBuZXdOb2RlLmNoaWxkcmVuLnB1c2goX2RmcyhvbGROb2RlLmNoaWxkcmVuW2ldKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBuZXdOb2RlOwogICAgICB9CiAgICAgIHZtLm5ld1RyZWUgPSBfZGZzKHZtLmRhdGEpOwogICAgfQogIH0KfTs="},null]}