Files
education/frontend/node_modules/.cache/vue-loader/cdf32ac6ae926b99d2fd7fd4b12f0384.json
T

1 line
47 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"remainingRequest":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\components\\Crontab\\result.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\src\\components\\Crontab\\result.vue","mtime":1787567871489},{"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\\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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQpleHBvcnQgZGVmYXVsdCB7DQoJZGF0YSgpIHsNCgkJcmV0dXJuIHsNCgkJCWRheVJ1bGU6ICcnLA0KCQkJZGF5UnVsZVN1cDogJycsDQoJCQlkYXRlQXJyOiBbXSwNCgkJCXJlc3VsdExpc3Q6IFtdLA0KCQkJaXNTaG93OiBmYWxzZQ0KCQl9DQoJfSwNCgluYW1lOiAnY3JvbnRhYi1yZXN1bHQnLA0KCW1ldGhvZHM6IHsNCgkJLy8g6KGo6L6+5byP5YC85Y+Y5YyW5pe277yM5byA5aeL5Y676K6h566X57uT5p6cDQoJCWV4cHJlc3Npb25DaGFuZ2UoKSB7DQoNCgkJCS8vIOiuoeeul+W8gOWniy3pmpDol4/nu5PmnpwNCgkJCXRoaXMuaXNTaG93ID0gZmFsc2UNCgkJCS8vIOiOt+WPluinhOWImeaVsOe7hFsw56eS44CBMeWIhuOAgTLml7bjgIEz5pel44CBNOaciOOAgTXmmJ/mnJ/jgIE25bm0XQ0KCQkJbGV0IHJ1bGVBcnIgPSB0aGlzLiRvcHRpb25zLnByb3BzRGF0YS5leC5zcGxpdCgnICcpDQoJCQkvLyDnlKjkuo7orrDlvZXov5vlhaXlvqrnjq/nmoTmrKHmlbANCgkJCWxldCBudW1zID0gMA0KCQkJLy8g55So5LqO5pqC5pe25a2Y56ym5Y+35pe26Ze06KeE5YiZ57uT5p6c55qE5pWw57uEDQoJCQlsZXQgcmVzdWx0QXJyID0gW10NCgkJCS8vIOiOt+WPluW9k+WJjeaXtumXtOeyvuehruiHs1vlubTjgIHmnIjjgIHml6XjgIHml7bjgIHliIbjgIHnp5JdDQoJCQlsZXQgblRpbWUgPSBuZXcgRGF0ZSgpDQoJCQlsZXQgblllYXIgPSBuVGltZS5nZXRGdWxsWWVhcigpDQoJCQlsZXQgbk1vbnRoID0gblRpbWUuZ2V0TW9udGgoKSArIDENCgkJCWxldCBuRGF5ID0gblRpbWUuZ2V0RGF0ZSgpDQoJCQlsZXQgbkhvdXIgPSBuVGltZS5nZXRIb3VycygpDQoJCQlsZXQgbk1pbiA9IG5UaW1lLmdldE1pbnV0ZXMoKQ0KCQkJbGV0IG5TZWNvbmQgPSBuVGltZS5nZXRTZWNvbmRzKCkNCgkJCS8vIOagueaNruinhOWImeiOt+WPluWIsOi/kTEwMOW5tOWPr+iDveW5tOaVsOe7hOOAgeaciOaVsOe7hOetieetiQ0KCQkJdGhpcy5nZXRTZWNvbmRBcnIocnVsZUFyclswXSkNCgkJCXRoaXMuZ2V0TWluQXJyKHJ1bGVBcnJbMV0pDQoJCQl0aGlzLmdldEhvdXJBcnIocnVsZUFyclsyXSkNCgkJCXRoaXMuZ2V0RGF5QXJyKHJ1bGVBcnJbM10pDQoJCQl0aGlzLmdldE1vbnRoQXJyKHJ1bGVBcnJbNF0pDQoJCQl0aGlzLmdldFdlZWtBcnIocnVsZUFycls1XSkNCgkJCXRoaXMuZ2V0WWVhckFycihydWxlQXJyWzZdLCBuWWVhcikNCgkJCS8vIOWwhuiOt+WPluWIsOeahOaVsOe7hOi1i+WAvC3mlrnkvr/kvb/nlKgNCgkJCWxldCBzRGF0ZSA9IHRoaXMuZGF0ZUFyclswXQ0KCQkJbGV0IG1EYXRlID0gdGhpcy5kYXRlQXJyWzFdDQoJCQlsZXQgaERhdGUgPSB0aGlzLmRhdGVBcnJbMl0NCgkJCWxldCBERGF0ZSA9IHRoaXMuZGF0ZUFyclszXQ0KCQkJbGV0IE1EYXRlID0gdGhpcy5kYXRlQXJyWzRdDQoJCQlsZXQgWURhdGUgPSB0aGlzLmRhdGVBcnJbNV0NCgkJCS8vIOiOt+WPluW9k+WJjeaXtumXtOWcqOaVsOe7hOS4reeahOe0ouW8lQ0KCQkJbGV0IHNJZHggPSB0aGlzLmdldEluZGV4KHNEYXRlLCBuU2Vjb25kKQ0KCQkJbGV0IG1JZHggPSB0aGlzLmdldEluZGV4KG1EYXRlLCBuTWluKQ0KCQkJbGV0IGhJZHggPSB0aGlzLmdldEluZGV4KGhEYXRlLCBuSG91cikNCgkJCWxldCBESWR4ID0gdGhpcy5nZXRJbmRleChERGF0ZSwgbkRheSkNCgkJCWxldCBNSWR4ID0gdGhpcy5nZXRJbmRleChNRGF0ZSwgbk1vbnRoKQ0KCQkJbGV0IFlJZHggPSB0aGlzLmdldEluZGV4KFlEYXRlLCBuWWVhcikNCgkJCS8vIOmHjee9ruaciOaXpeaXtuWIhuenkueahOWHveaVsCjlkI7pnaLnlKjnmoTmr5TovoPlpJopDQoJCQljb25zdCByZXNldFNlY29uZCA9IGZ1bmN0aW9uICgpIHsNCgkJCQlzSWR4ID0gMA0KCQkJCW5TZWNvbmQgPSBzRGF0ZVtzSWR4XQ0KCQkJfQ0KCQkJY29uc3QgcmVzZXRNaW4gPSBmdW5jdGlvbiAoKSB7DQoJCQkJbUlkeCA9IDANCgkJCQluTWluID0gbURhdGVbbUlkeF0NCgkJCQlyZXNldFNlY29uZCgpDQoJCQl9DQoJCQljb25zdCByZXNldEhvdXIgPSBmdW5jdGlvbiAoKSB7DQoJCQkJaElkeCA9IDANCgkJCQluSG91ciA9IGhEYXRlW2hJZHhdDQoJCQkJcmVzZXRNaW4oKQ0KCQkJfQ0KCQkJY29uc3QgcmVzZXREYXkgPSBmdW5jdGlvbiAoKSB7DQoJCQkJRElkeCA9IDANCgkJCQluRGF5ID0gRERhdGVbRElkeF0NCgkJCQlyZXNldEhvdXIoKQ0KCQkJfQ0KCQkJY29uc3QgcmVzZXRNb250aCA9IGZ1bmN0aW9uICgpIHsNCgkJCQlNSWR4ID0gMA0KCQkJCW5Nb250aCA9IE1EYXRlW01JZHhdDQoJCQkJcmVzZXREYXkoKQ0KCQkJfQ0KCQkJLy8g5aaC5p6c5b2T5YmN5bm05Lu95LiN5Li65pWw57uE5Lit5b2T5YmN5YC8DQoJCQlpZiAoblllYXIgIT09IFlEYXRlW1lJZHhdKSB7DQoJCQkJcmVzZXRNb250aCgpDQoJCQl9DQoJCQkvLyDlpoLmnpzlvZPliY3mnIjku73kuI3kuLrmlbDnu4TkuK3lvZPliY3lgLwNCgkJCWlmIChuTW9udGggIT09IE1EYXRlW01JZHhdKSB7DQoJCQkJcmVzZXREYXkoKQ0KCQkJfQ0KCQkJLy8g5aaC5p6c5b2T5YmN4oCc5pel4oCd5LiN5Li65pWw57uE5Lit5b2T5YmN5YC8DQoJCQlpZiAobkRheSAhPT0gRERhdGVbRElkeF0pIHsNCgkJCQlyZXNldEhvdXIoKQ0KCQkJfQ0KCQkJLy8g5aaC5p6c5b2T5YmN4oCc5pe24oCd5LiN5Li65pWw57uE5Lit5b2T5YmN5YC8DQoJCQlpZiAobkhvdXIgIT09IGhEYXRlW2hJZHhdKSB7DQoJCQkJcmVzZXRNaW4oKQ0KCQkJfQ0KCQkJLy8g5aaC5p6c5b2T5YmN4oCc5YiG4oCd5LiN5Li65pWw57uE5Lit5b2T5YmN5YC8DQoJCQlpZiAobk1pbiAhPT0gbURhdGVbbUlkeF0pIHsNCgkJCQlyZXNldFNlY29uZCgpDQoJCQl9DQoNCgkJCS8vIOW+queOr+W5tOS7veaVsOe7hA0KCQkJZ29ZZWFyOiBmb3IgKGxldCBZaSA9IFlJZHg7IFlpIDwgWURhdGUubGVuZ3RoOyBZaSsrKSB7DQoJCQkJbGV0IFlZID0gWURhdGVbWWldDQoJCQkJLy8g5aaC5p6c5Yiw6L6+5pyA5aSn5YC85pe2DQoJCQkJaWYgKG5Nb250aCA+IE1EYXRlW01EYXRlLmxlbmd0aCAtIDFdKSB7DQoJCQkJCXJlc2V0TW9udGgoKQ0KCQkJCQljb250aW51ZQ0KCQkJCX0NCgkJCQkvLyDlvqrnjq/mnIjku73mlbDnu4QNCgkJCQlnb01vbnRoOiBmb3IgKGxldCBNaSA9IE1JZHg7IE1pIDwgTURhdGUubGVuZ3RoOyBNaSsrKSB7DQoJCQkJCS8vIOi1i+WAvOOAgeaWueS+v+WQjumdoui/kOeulw0KCQkJCQlsZXQgTU0gPSBNRGF0ZVtNaV07DQoJCQkJCU1NID0gTU0gPCAxMCA/ICcwJyArIE1NIDogTU0NCgkJCQkJLy8g5aaC5p6c5Yiw6L6+5pyA5aSn5YC85pe2DQoJCQkJCWlmIChuRGF5ID4gRERhdGVbRERhdGUubGVuZ3RoIC0gMV0pIHsNCgkJCQkJCXJlc2V0RGF5KCkNCgkJCQkJCWlmIChNaSA9PSBNRGF0ZS5sZW5ndGggLSAxKSB7DQoJCQkJCQkJcmVzZXRNb250aCgpDQoJCQkJCQkJY29udGludWUgZ29ZZWFyDQoJCQkJCQl9DQoJCQkJCQljb250aW51ZQ0KCQkJCQl9DQoJCQkJCS8vIOW+queOr+aXpeacn+aVsOe7hA0KCQkJCQlnb0RheTogZm9yIChsZXQgRGkgPSBESWR4OyBEaSA8IEREYXRlLmxlbmd0aDsgRGkrKykgew0KCQkJCQkJLy8g6LWL5YC844CB5pa55L6/5ZCO6Z2i6L+Q566XDQoJCQkJCQlsZXQgREQgPSBERGF0ZVtEaV0NCgkJCQkJCWxldCB0aGlzREQgPSBERCA8IDEwID8gJzAnICsgREQgOiBERA0KDQoJCQkJCQkvLyDlpoLmnpzliLDovr7mnIDlpKflgLzml7YNCgkJCQkJCWlmIChuSG91ciA+IGhEYXRlW2hEYXRlLmxlbmd0aCAtIDFdKSB7DQoJCQkJCQkJcmVzZXRIb3VyKCkNCgkJCQkJCQlpZiAoRGkgPT0gRERhdGUubGVuZ3RoIC0gMSkgew0KCQkJCQkJCQlyZXNldERheSgpDQoJCQkJCQkJCWlmIChNaSA9PSBNRGF0ZS5sZW5ndGggLSAxKSB7DQoJCQkJCQkJCQlyZXNldE1vbnRoKCkNCgkJCQkJCQkJCWNvbnRpbnVlIGdvWWVhcg0KCQkJCQkJCQl9DQoJCQkJCQkJCWNvbnRpbnVlIGdvTW9udGgNCgkJCQkJCQl9DQoJCQkJCQkJY29udGludWUNCgkJCQkJCX0NCg0KCQkJCQkJLy8g5Yik5pat5pel5pyf55qE5ZCI5rOV5oCn77yM5LiN5ZCI5rOV55qE6K+d5Lmf5piv6Lez5Ye65b2T5YmN5b6q546vDQoJCQkJCQlpZiAodGhpcy5jaGVja0RhdGUoWVkgKyAnLScgKyBNTSArICctJyArIHRoaXNERCArICcgMDA6MDA6MDAnKSAhPT0gdHJ1ZSAmJiB0aGlzLmRheVJ1bGUgIT09ICd3b3JrRGF5JyAmJiB0aGlzLmRheVJ1bGUgIT09ICdsYXN0V2VlaycgJiYgdGhpcy5kYXlSdWxlICE9PSAnbGFzdERheScpIHsNCgkJCQkJCQlyZXNldERheSgpDQoJCQkJCQkJY29udGludWUgZ29Nb250aA0KCQkJCQkJfQ0KCQkJCQkJLy8g5aaC5p6c5pel5pyf6KeE5YiZ5Lit5pyJ5YC85pe2DQoJCQkJCQlpZiAodGhpcy5kYXlSdWxlID09ICdsYXN0RGF5Jykgew0KCQkJCQkJCS8vIOWmguaenOS4jeaYr+WQiOazleaXpeacn+WImemcgOimgeWwhuWJjeWwhuaXpeacn+iwg+WIsOWQiOazleaXpeacn+WNs+aciOacq+acgOWQjuS4gOWkqQ0KDQoJCQkJCQkJaWYgKHRoaXMuY2hlY2tEYXRlKFlZICsgJy0nICsgTU0gKyAnLScgKyB0aGlzREQgKyAnIDAwOjAwOjAwJykgIT09IHRydWUpIHsNCgkJCQkJCQkJd2hpbGUgKEREID4gMCAmJiB0aGlzLmNoZWNrRGF0ZShZWSArICctJyArIE1NICsgJy0nICsgdGhpc0REICsgJyAwMDowMDowMCcpICE9PSB0cnVlKSB7DQoJCQkJCQkJCQlERC0tDQoJCQkJCQkJCQl0aGlzREQgPSBERCA8IDEwID8gJzAnICsgREQgOiBERA0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJfSBlbHNlIGlmICh0aGlzLmRheVJ1bGUgPT0gJ3dvcmtEYXknKSB7DQoJCQkJCQkJLy8g5qCh6aqM5bm26LCD5pW05aaC5p6c5pivMuaciDMw5Y+36L+Z56eN5pel5pyf5Lyg6L+b5p2l5pe26ZyA6LCD5pW06Iez5q2j5bi45pyI5bqVDQoJCQkJCQkJaWYgKHRoaXMuY2hlY2tEYXRlKFlZICsgJy0nICsgTU0gKyAnLScgKyB0aGlzREQgKyAnIDAwOjAwOjAwJykgIT09IHRydWUpIHsNCgkJCQkJCQkJd2hpbGUgKEREID4gMCAmJiB0aGlzLmNoZWNrRGF0ZShZWSArICctJyArIE1NICsgJy0nICsgdGhpc0REICsgJyAwMDowMDowMCcpICE9PSB0cnVlKSB7DQoJCQkJCQkJCQlERC0tDQoJCQkJCQkJCQl0aGlzREQgPSBERCA8IDEwID8gJzAnICsgREQgOiBERA0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJCS8vIOiOt+WPlui+vuWIsOadoeS7tueahOaXpeacn+aYr+aYn+acn1gNCgkJCQkJCQlsZXQgdGhpc1dlZWsgPSB0aGlzLmZvcm1hdERhdGUobmV3IERhdGUoWVkgKyAnLScgKyBNTSArICctJyArIHRoaXNERCArICcgMDA6MDA6MDAnKSwgJ3dlZWsnKQ0KCQkJCQkJCS8vIOW9k+aYn+acn+aXpeaXtg0KCQkJCQkJCWlmICh0aGlzV2VlayA9PSAxKSB7DQoJCQkJCQkJCS8vIOWFiOaJvuS4i+S4gOS4quaXpe+8jOW5tuWIpOaWreaYr+WQpuS4uuaciOW6lQ0KCQkJCQkJCQlERCsrDQoJCQkJCQkJCXRoaXNERCA9IEREIDwgMTAgPyAnMCcgKyBERCA6IEREDQoJCQkJCQkJCS8vIOWIpOaWreS4i+S4gOaXpeW3sue7j+S4jeaYr+WQiOazleaXpeacnw0KCQkJCQkJCQlpZiAodGhpcy5jaGVja0RhdGUoWVkgKyAnLScgKyBNTSArICctJyArIHRoaXNERCArICcgMDA6MDA6MDAnKSAhPT0gdHJ1ZSkgew0KCQkJCQkJCQkJREQgLT0gMw0KCQkJCQkJCQl9DQoJCQkJCQkJfSBlbHNlIGlmICh0aGlzV2VlayA9PSA3KSB7DQoJCQkJCQkJCS8vIOW9k+aYn+acnzbml7blj6rpnIDliKTmlq3kuI3mmK8x5Y+35bCx5Y+v6L+b6KGM5pON5L2cDQoJCQkJCQkJCWlmICh0aGlzLmRheVJ1bGVTdXAgIT09IDEpIHsNCgkJCQkJCQkJCURELS0NCgkJCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkJCUREICs9IDINCgkJCQkJCQkJfQ0KCQkJCQkJCX0NCgkJCQkJCX0gZWxzZSBpZiAodGhpcy5kYXlSdWxlID09ICd3ZWVrRGF5Jykgew0KCQkJCQkJCS8vIOWmguaenOaMh+WumuS6huaYr+aYn+acn+WHoA0KCQkJCQkJCS8vIOiOt+WPluW9k+WJjeaXpeacn+aYr+WxnuS6juaYn+acn+WHoA0KCQkJCQkJCWxldCB0aGlzV2VlayA9IHRoaXMuZm9ybWF0RGF0ZShuZXcgRGF0ZShZWSArICctJyArIE1NICsgJy0nICsgREQgKyAnIDAwOjAwOjAwJyksICd3ZWVrJykNCgkJCQkJCQkvLyDmoKHpqozlvZPliY3mmJ/mnJ/mmK/lkKblnKjmmJ/mnJ/msaDvvIhkYXlSdWxlU3Vw77yJ5LitDQoJCQkJCQkJaWYgKHRoaXMuZGF5UnVsZVN1cC5pbmRleE9mKHRoaXNXZWVrKSA8IDApIHsNCgkJCQkJCQkJLy8g5aaC5p6c5Yiw6L6+5pyA5aSn5YC85pe2DQoJCQkJCQkJCWlmIChEaSA9PSBERGF0ZS5sZW5ndGggLSAxKSB7DQoJCQkJCQkJCQlyZXNldERheSgpDQoJCQkJCQkJCQlpZiAoTWkgPT0gTURhdGUubGVuZ3RoIC0gMSkgew0KCQkJCQkJCQkJCXJlc2V0TW9udGgoKQ0KCQkJCQkJCQkJCWNvbnRpbnVlIGdvWWVhcg0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJY29udGludWUgZ29Nb250aA0KCQkJCQkJCQl9DQoJCQkJCQkJCWNvbnRpbnVlDQoJCQkJCQkJfQ0KCQkJCQkJfSBlbHNlIGlmICh0aGlzLmRheVJ1bGUgPT0gJ2Fzc1dlZWsnKSB7DQoJCQkJCQkJLy8g5aaC5p6c5oyH5a6a5LqG5piv56ys5Yeg5ZGo55qE5pif5pyf5YegDQoJCQkJCQkJLy8g6I635Y+W5q+P5pyIMeWPt+aYr+WxnuS6juaYn+acn+WHoA0KCQkJCQkJCWxldCB0aGlzV2VlayA9IHRoaXMuZm9ybWF0RGF0ZShuZXcgRGF0ZShZWSArICctJyArIE1NICsgJy0nICsgREQgKyAnIDAwOjAwOjAwJyksICd3ZWVrJykNCgkJCQkJCQlpZiAodGhpcy5kYXlSdWxlU3VwWzFdID49IHRoaXNXZWVrKSB7DQoJCQkJCQkJCUREID0gKHRoaXMuZGF5UnVsZVN1cFswXSAtIDEpICogNyArIHRoaXMuZGF5UnVsZVN1cFsxXSAtIHRoaXNXZWVrICsgMQ0KCQkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJCUREID0gdGhpcy5kYXlSdWxlU3VwWzBdICogNyArIHRoaXMuZGF5UnVsZVN1cFsxXSAtIHRoaXNXZWVrICsgMQ0KCQkJCQkJCX0NCgkJCQkJCX0gZWxzZSBpZiAodGhpcy5kYXlSdWxlID09ICdsYXN0V2VlaycpIHsNCgkJCQkJCQkvLyDlpoLmnpzmjIflrprkuobmr4/mnIjmnIDlkI7kuIDkuKrmmJ/mnJ/lh6ANCgkJCQkJCQkvLyDmoKHpqozlubbosIPmlbTlpoLmnpzmmK8y5pyIMzDlj7fov5nnp43ml6XmnJ/kvKDov5vmnaXml7bpnIDosIPmlbToh7PmraPluLjmnIjlupUNCgkJCQkJCQlpZiAodGhpcy5jaGVja0RhdGUoWVkgKyAnLScgKyBNTSArICctJyArIHRoaXNERCArICcgMDA6MDA6MDAnKSAhPT0gdHJ1ZSkgew0KCQkJCQkJCQl3aGlsZSAoREQgPiAwICYmIHRoaXMuY2hlY2tEYXRlKFlZICsgJy0nICsgTU0gKyAnLScgKyB0aGlzREQgKyAnIDAwOjAwOjAwJykgIT09IHRydWUpIHsNCgkJCQkJCQkJCURELS0NCgkJCQkJCQkJCXRoaXNERCA9IEREIDwgMTAgPyAnMCcgKyBERCA6IEREDQoJCQkJCQkJCX0NCgkJCQkJCQl9DQoJCQkJCQkJLy8g6I635Y+W5pyI5pyr5pyA5ZCO5LiA5aSp5piv5pif5pyf5YegDQoJCQkJCQkJbGV0IHRoaXNXZWVrID0gdGhpcy5mb3JtYXREYXRlKG5ldyBEYXRlKFlZICsgJy0nICsgTU0gKyAnLScgKyB0aGlzREQgKyAnIDAwOjAwOjAwJyksICd3ZWVrJykNCgkJCQkJCQkvLyDmib7liLDopoHmsYLkuK3mnIDov5HnmoTpgqPkuKrmmJ/mnJ/lh6ANCgkJCQkJCQlpZiAodGhpcy5kYXlSdWxlU3VwIDwgdGhpc1dlZWspIHsNCgkJCQkJCQkJREQgLT0gdGhpc1dlZWsgLSB0aGlzLmRheVJ1bGVTdXANCgkJCQkJCQl9IGVsc2UgaWYgKHRoaXMuZGF5UnVsZVN1cCA+IHRoaXNXZWVrKSB7DQoJCQkJCQkJCUREIC09IDcgLSAodGhpcy5kYXlSdWxlU3VwIC0gdGhpc1dlZWspDQoJCQkJCQkJfQ0KCQkJCQkJfQ0KCQkJCQkJLy8g5Yik5pat5pe26Ze05YC85piv5ZCm5bCP5LqOMTDnva7mjaLmiJDigJwwNeKAnei/meenjeagvOW8jw0KCQkJCQkJREQgPSBERCA8IDEwID8gJzAnICsgREQgOiBERA0KDQoJCQkJCQkvLyDlvqrnjq/igJzml7bigJ3mlbDnu4QNCgkJCQkJCWdvSG91cjogZm9yIChsZXQgaGkgPSBoSWR4OyBoaSA8IGhEYXRlLmxlbmd0aDsgaGkrKykgew0KCQkJCQkJCWxldCBoaCA9IGhEYXRlW2hpXSA8IDEwID8gJzAnICsgaERhdGVbaGldIDogaERhdGVbaGldDQoNCgkJCQkJCQkvLyDlpoLmnpzliLDovr7mnIDlpKflgLzml7YNCgkJCQkJCQlpZiAobk1pbiA+IG1EYXRlW21EYXRlLmxlbmd0aCAtIDFdKSB7DQoJCQkJCQkJCXJlc2V0TWluKCkNCgkJCQkJCQkJaWYgKGhpID09IGhEYXRlLmxlbmd0aCAtIDEpIHsNCgkJCQkJCQkJCXJlc2V0SG91cigpDQoJCQkJCQkJCQlpZiAoRGkgPT0gRERhdGUubGVuZ3RoIC0gMSkgew0KCQkJCQkJCQkJCXJlc2V0RGF5KCkNCgkJCQkJCQkJCQlpZiAoTWkgPT0gTURhdGUubGVuZ3RoIC0gMSkgew0KCQkJCQkJCQkJCQlyZXNldE1vbnRoKCkNCgkJCQkJCQkJCQkJY29udGludWUgZ29ZZWFyDQoJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCWNvbnRpbnVlIGdvTW9udGgNCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWNvbnRpbnVlIGdvRGF5DQoJCQkJCQkJCX0NCgkJCQkJCQkJY29udGludWUNCgkJCQkJCQl9DQoJCQkJCQkJLy8g5b6q546vIuWIhiLmlbDnu4QNCgkJCQkJCQlnb01pbjogZm9yIChsZXQgbWkgPSBtSWR4OyBtaSA8IG1EYXRlLmxlbmd0aDsgbWkrKykgew0KCQkJCQkJCQlsZXQgbW0gPSBtRGF0ZVttaV0gPCAxMCA/ICcwJyArIG1EYXRlW21pXSA6IG1EYXRlW21pXQ0KDQoJCQkJCQkJCS8vIOWmguaenOWIsOi+vuacgOWkp+WAvOaXtg0KCQkJCQkJCQlpZiAoblNlY29uZCA+IHNEYXRlW3NEYXRlLmxlbmd0aCAtIDFdKSB7DQoJCQkJCQkJCQlyZXNldFNlY29uZCgpDQoJCQkJCQkJCQlpZiAobWkgPT0gbURhdGUubGVuZ3RoIC0gMSkgew0KCQkJCQkJCQkJCXJlc2V0TWluKCkNCgkJCQkJCQkJCQlpZiAoaGkgPT0gaERhdGUubGVuZ3RoIC0gMSkgew0KCQkJCQkJCQkJCQlyZXNldEhvdXIoKQ0KCQkJCQkJCQkJCQlpZiAoRGkgPT0gRERhdGUubGVuZ3RoIC0gMSkgew0KCQkJCQkJCQkJCQkJcmVzZXREYXkoKQ0KCQkJCQkJCQkJCQkJaWYgKE1pID09IE1EYXRlLmxlbmd0aCAtIDEpIHsNCgkJCQkJCQkJCQkJCQlyZXNldE1vbnRoKCkNCgkJCQkJCQkJCQkJCQljb250aW51ZSBnb1llYXINCgkJCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQkJCWNvbnRpbnVlIGdvTW9udGgNCgkJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCQljb250aW51ZSBnb0RheQ0KCQkJCQkJCQkJCX0NCgkJCQkJCQkJCQljb250aW51ZSBnb0hvdXINCgkJCQkJCQkJCX0NCgkJCQkJCQkJCWNvbnRpbnVlDQoJCQkJCQkJCX0NCgkJCQkJCQkJLy8g5b6q546vIuenkiLmlbDnu4QNCgkJCQkJCQkJZ29TZWNvbmQ6IGZvciAobGV0IHNpID0gc0lkeDsgc2kgPD0gc0RhdGUubGVuZ3RoIC0gMTsgc2krKykgew0KCQkJCQkJCQkJbGV0IHNzID0gc0RhdGVbc2ldIDwgMTAgPyAnMCcgKyBzRGF0ZVtzaV0gOiBzRGF0ZVtzaV0NCgkJCQkJCQkJCS8vIOa3u+WKoOW9k+WJjeaXtumXtO+8iOaXtumXtOWQiOazleaAp+WcqOaXpeacn+W+queOr+aXtuW3sue7j+WIpOaWre+8iQ0KCQkJCQkJCQkJaWYgKE1NICE9PSAnMDAnICYmIEREICE9PSAnMDAnKSB7DQoJCQkJCQkJCQkJcmVzdWx0QXJyLnB1c2goWVkgKyAnLScgKyBNTSArICctJyArIEREICsgJyAnICsgaGggKyAnOicgKyBtbSArICc6JyArIHNzKQ0KCQkJCQkJCQkJCW51bXMrKw0KCQkJCQkJCQkJfQ0KCQkJCQkJCQkJLy8g5aaC5p6c5p2h5pWw5ruh5LqG5bCx6YCA5Ye65b6q546vDQoJCQkJCQkJCQlpZiAobnVtcyA9PSA1KSBicmVhayBnb1llYXINCgkJCQkJCQkJCS8vIOWmguaenOWIsOi+vuacgOWkp+WAvOaXtg0KCQkJCQkJCQkJaWYgKHNpID09IHNEYXRlLmxlbmd0aCAtIDEpIHsNCgkJCQkJCQkJCQlyZXNldFNlY29uZCgpDQoJCQkJCQkJCQkJaWYgKG1pID09IG1EYXRlLmxlbmd0aCAtIDEpIHsNCgkJCQkJCQkJCQkJcmVzZXRNaW4oKQ0KCQkJCQkJCQkJCQlpZiAoaGkgPT0gaERhdGUubGVuZ3RoIC0gMSkgew0KCQkJCQkJCQkJCQkJcmVzZXRIb3VyKCkNCgkJCQkJCQkJCQkJCWlmIChEaSA9PSBERGF0ZS5sZW5ndGggLSAxKSB7DQoJCQkJCQkJCQkJCQkJcmVzZXREYXkoKQ0KCQkJCQkJCQkJCQkJCWlmIChNaSA9PSBNRGF0ZS5sZW5ndGggLSAxKSB7DQoJCQkJCQkJCQkJCQkJCXJlc2V0TW9udGgoKQ0KCQkJCQkJCQkJCQkJCQljb250aW51ZSBnb1llYXINCgkJCQkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJCQkJY29udGludWUgZ29Nb250aA0KCQkJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCQkJY29udGludWUgZ29EYXkNCgkJCQkJCQkJCQkJfQ0KCQkJCQkJCQkJCQljb250aW51ZSBnb0hvdXINCgkJCQkJCQkJCQl9DQoJCQkJCQkJCQkJY29udGludWUgZ29NaW4NCgkJCQkJCQkJCX0NCgkJCQkJCQkJfSAvL2dvU2Vjb25kDQoJCQkJCQkJfSAvL2dvTWluDQoJCQkJCQl9Ly9nb0hvdXINCgkJCQkJfS8vZ29EYXkNCgkJCQl9Ly9nb01vbnRoDQoJCQl9DQoJCQkvLyDliKTmlq0xMDDlubTlhoXnmoTnu5PmnpzmnaHmlbANCgkJCWlmIChyZXN1bHRBcnIubGVuZ3RoID09IDApIHsNCgkJCQl0aGlzLnJlc3VsdExpc3QgPSBbJ+ayoeaciei+vuWIsOadoeS7tueahOe7k+aenO+8gSddDQoJCQl9IGVsc2Ugew0KCQkJCXRoaXMucmVzdWx0TGlzdCA9IHJlc3VsdEFycg0KCQkJCWlmIChyZXN1bHRBcnIubGVuZ3RoICE9PSA1KSB7DQoJCQkJCXRoaXMucmVzdWx0TGlzdC5wdXNoKCfmnIDov5ExMDDlubTlhoXlj6rmnInkuIrpnaInICsgcmVzdWx0QXJyLmxlbmd0aCArICfmnaHnu5PmnpzvvIEnKQ0KCQkJCX0NCgkJCX0NCgkJCS8vIOiuoeeul+WujOaIkC3mmL7npLrnu5PmnpwNCgkJCXRoaXMuaXNTaG93ID0gdHJ1ZQ0KDQoNCgkJfSwNCgkJLy8g55So5LqO6K6h566X5p+Q5L2N5pWw5a2X5Zyo5pWw57uE5Lit55qE57Si5byVDQoJCWdldEluZGV4KGFyciwgdmFsdWUpIHsNCgkJCWlmICh2YWx1ZSA8PSBhcnJbMF0gfHwgdmFsdWUgPiBhcnJbYXJyLmxlbmd0aCAtIDFdKSB7DQoJCQkJcmV0dXJuIDANCgkJCX0gZWxzZSB7DQoJCQkJZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoIC0gMTsgaSsrKSB7DQoJCQkJCWlmICh2YWx1ZSA+IGFycltpXSAmJiB2YWx1ZSA8PSBhcnJbaSArIDFdKSB7DQoJCQkJCQlyZXR1cm4gaSArIDENCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfSwNCgkJLy8g6I635Y+WIuW5tCLmlbDnu4QNCgkJZ2V0WWVhckFycihydWxlLCB5ZWFyKSB7DQoJCQl0aGlzLmRhdGVBcnJbNV0gPSB0aGlzLmdldE9yZGVyQXJyKHllYXIsIHllYXIgKyAxMDApDQoJCQlpZiAocnVsZSAhPT0gdW5kZWZpbmVkKSB7DQoJCQkJaWYgKHJ1bGUuaW5kZXhPZignLScpID49IDApIHsNCgkJCQkJdGhpcy5kYXRlQXJyWzVdID0gdGhpcy5nZXRDeWNsZUFycihydWxlLCB5ZWFyICsgMTAwLCBmYWxzZSkNCgkJCQl9IGVsc2UgaWYgKHJ1bGUuaW5kZXhPZignLycpID49IDApIHsNCgkJCQkJdGhpcy5kYXRlQXJyWzVdID0gdGhpcy5nZXRBdmVyYWdlQXJyKHJ1bGUsIHllYXIgKyAxMDApDQoJCQkJfSBlbHNlIGlmIChydWxlICE9PSAnKicpIHsNCgkJCQkJdGhpcy5kYXRlQXJyWzVdID0gdGhpcy5nZXRBc3NpZ25BcnIocnVsZSkNCgkJCQl9DQoJCQl9DQoJCX0sDQoJCS8vIOiOt+WPliLmnIgi5pWw57uEDQoJCWdldE1vbnRoQXJyKHJ1bGUpIHsNCgkJCXRoaXMuZGF0ZUFycls0XSA9IHRoaXMuZ2V0T3JkZXJBcnIoMSwgMTIpDQoJCQlpZiAocnVsZS5pbmRleE9mKCctJykgPj0gMCkgew0KCQkJCXRoaXMuZGF0ZUFycls0XSA9IHRoaXMuZ2V0Q3ljbGVBcnIocnVsZSwgMTIsIGZhbHNlKQ0KCQkJfSBlbHNlIGlmIChydWxlLmluZGV4T2YoJy8nKSA+PSAwKSB7DQoJCQkJdGhpcy5kYXRlQXJyWzRdID0gdGhpcy5nZXRBdmVyYWdlQXJyKHJ1bGUsIDEyKQ0KCQkJfSBlbHNlIGlmIChydWxlICE9PSAnKicpIHsNCgkJCQl0aGlzLmRhdGVBcnJbNF0gPSB0aGlzLmdldEFzc2lnbkFycihydWxlKQ0KCQkJfQ0KCQl9LA0KCQkvLyDojrflj5Yi5pelIuaVsOe7hC3kuLvopoHkuLrml6XmnJ/op4TliJkNCgkJZ2V0V2Vla0FycihydWxlKSB7DQoJCQkvLyDlj6rmnInlvZPml6XmnJ/op4TliJnnmoTkuKTkuKrlgLzlnYfkuLrigJzigJ3ml7bliJnooajovr7ml6XmnJ/mmK/mnInpgInpobnnmoQNCgkJCWlmICh0aGlzLmRheVJ1bGUgPT0gJycgJiYgdGhpcy5kYXlSdWxlU3VwID09ICcnKSB7DQoJCQkJaWYgKHJ1bGUuaW5kZXhPZignLScpID49IDApIHsNCgkJCQkJdGhpcy5kYXlSdWxlID0gJ3dlZWtEYXknDQoJCQkJCXRoaXMuZGF5UnVsZVN1cCA9IHRoaXMuZ2V0Q3ljbGVBcnIocnVsZSwgNywgZmFsc2UpDQoJCQkJfSBlbHNlIGlmIChydWxlLmluZGV4T2YoJyMnKSA+PSAwKSB7DQoJCQkJCXRoaXMuZGF5UnVsZSA9ICdhc3NXZWVrJw0KCQkJCQlsZXQgbWF0Y2hSdWxlID0gcnVsZS5tYXRjaCgvWzAtOV17MX0vZykNCgkJCQkJdGhpcy5kYXlSdWxlU3VwID0gW051bWJlcihtYXRjaFJ1bGVbMV0pLCBOdW1iZXIobWF0Y2hSdWxlWzBdKV0NCgkJCQkJdGhpcy5kYXRlQXJyWzNdID0gWzFdDQoJCQkJCWlmICh0aGlzLmRheVJ1bGVTdXBbMV0gPT0gNykgew0KCQkJCQkJdGhpcy5kYXlSdWxlU3VwWzFdID0gMA0KCQkJCQl9DQoJCQkJfSBlbHNlIGlmIChydWxlLmluZGV4T2YoJ0wnKSA+PSAwKSB7DQoJCQkJCXRoaXMuZGF5UnVsZSA9ICdsYXN0V2VlaycNCgkJCQkJdGhpcy5kYXlSdWxlU3VwID0gTnVtYmVyKHJ1bGUubWF0Y2goL1swLTldezEsMn0vZylbMF0pDQoJCQkJCXRoaXMuZGF0ZUFyclszXSA9IFszMV0NCgkJCQkJaWYgKHRoaXMuZGF5UnVsZVN1cCA9PSA3KSB7DQoJCQkJCQl0aGlzLmRheVJ1bGVTdXAgPSAwDQoJCQkJCX0NCgkJCQl9IGVsc2UgaWYgKHJ1bGUgIT09ICcqJyAmJiBydWxlICE9PSAnPycpIHsNCgkJCQkJdGhpcy5kYXlSdWxlID0gJ3dlZWtEYXknDQoJCQkJCXRoaXMuZGF5UnVsZVN1cCA9IHRoaXMuZ2V0QXNzaWduQXJyKHJ1bGUpDQoJCQkJfQ0KCQkJfQ0KCQl9LA0KCQkvLyDojrflj5Yi5pelIuaVsOe7hC3lsJHph4/kuLrml6XmnJ/op4TliJkNCgkJZ2V0RGF5QXJyKHJ1bGUpIHsNCgkJCXRoaXMuZGF0ZUFyclszXSA9IHRoaXMuZ2V0T3JkZXJBcnIoMSwgMzEpDQoJCQl0aGlzLmRheVJ1bGUgPSAnJw0KCQkJdGhpcy5kYXlSdWxlU3VwID0gJycNCgkJCWlmIChydWxlLmluZGV4T2YoJy0nKSA+PSAwKSB7DQoJCQkJdGhpcy5kYXRlQXJyWzNdID0gdGhpcy5nZXRDeWNsZUFycihydWxlLCAzMSwgZmFsc2UpDQoJCQkJdGhpcy5kYXlSdWxlU3VwID0gJ251bGwnDQoJCQl9IGVsc2UgaWYgKHJ1bGUuaW5kZXhPZignLycpID49IDApIHsNCgkJCQl0aGlzLmRhdGVBcnJbM10gPSB0aGlzLmdldEF2ZXJhZ2VBcnIocnVsZSwgMzEpDQoJCQkJdGhpcy5kYXlSdWxlU3VwID0gJ251bGwnDQoJCQl9IGVsc2UgaWYgKHJ1bGUuaW5kZXhPZignVycpID49IDApIHsNCgkJCQl0aGlzLmRheVJ1bGUgPSAnd29ya0RheScNCgkJCQl0aGlzLmRheVJ1bGVTdXAgPSBOdW1iZXIocnVsZS5tYXRjaCgvWzAtOV17MSwyfS9nKVswXSkNCgkJCQl0aGlzLmRhdGVBcnJbM10gPSBbdGhpcy5kYXlSdWxlU3VwXQ0KCQkJfSBlbHNlIGlmIChydWxlLmluZGV4T2YoJ0wnKSA+PSAwKSB7DQoJCQkJdGhpcy5kYXlSdWxlID0gJ2xhc3REYXknDQoJCQkJdGhpcy5kYXlSdWxlU3VwID0gJ251bGwnDQoJCQkJdGhpcy5kYXRlQXJyWzNdID0gWzMxXQ0KCQkJfSBlbHNlIGlmIChydWxlICE9PSAnKicgJiYgcnVsZSAhPT0gJz8nKSB7DQoJCQkJdGhpcy5kYXRlQXJyWzNdID0gdGhpcy5nZXRBc3NpZ25BcnIocnVsZSkNCgkJCQl0aGlzLmRheVJ1bGVTdXAgPSAnbnVsbCcNCgkJCX0gZWxzZSBpZiAocnVsZSA9PSAnKicpIHsNCgkJCQl0aGlzLmRheVJ1bGVTdXAgPSAnbnVsbCcNCgkJCX0NCgkJfSwNCgkJLy8g6I635Y+WIuaXtiLmlbDnu4QNCgkJZ2V0SG91ckFycihydWxlKSB7DQoJCQl0aGlzLmRhdGVBcnJbMl0gPSB0aGlzLmdldE9yZGVyQXJyKDAsIDIzKQ0KCQkJaWYgKHJ1bGUuaW5kZXhPZignLScpID49IDApIHsNCgkJCQl0aGlzLmRhdGVBcnJbMl0gPSB0aGlzLmdldEN5Y2xlQXJyKHJ1bGUsIDI0LCB0cnVlKQ0KCQkJfSBlbHNlIGlmIChydWxlLmluZGV4T2YoJy8nKSA+PSAwKSB7DQoJCQkJdGhpcy5kYXRlQXJyWzJdID0gdGhpcy5nZXRBdmVyYWdlQXJyKHJ1bGUsIDIzKQ0KCQkJfSBlbHNlIGlmIChydWxlICE9PSAnKicpIHsNCgkJCQl0aGlzLmRhdGVBcnJbMl0gPSB0aGlzLmdldEFzc2lnbkFycihydWxlKQ0KCQkJfQ0KCQl9LA0KCQkvLyDojrflj5Yi5YiGIuaVsOe7hA0KCQlnZXRNaW5BcnIocnVsZSkgew0KCQkJdGhpcy5kYXRlQXJyWzFdID0gdGhpcy5nZXRPcmRlckFycigwLCA1OSkNCgkJCWlmIChydWxlLmluZGV4T2YoJy0nKSA+PSAwKSB7DQoJCQkJdGhpcy5kYXRlQXJyWzFdID0gdGhpcy5nZXRDeWNsZUFycihydWxlLCA2MCwgdHJ1ZSkNCgkJCX0gZWxzZSBpZiAocnVsZS5pbmRleE9mKCcvJykgPj0gMCkgew0KCQkJCXRoaXMuZGF0ZUFyclsxXSA9IHRoaXMuZ2V0QXZlcmFnZUFycihydWxlLCA1OSkNCgkJCX0gZWxzZSBpZiAocnVsZSAhPT0gJyonKSB7DQoJCQkJdGhpcy5kYXRlQXJyWzFdID0gdGhpcy5nZXRBc3NpZ25BcnIocnVsZSkNCgkJCX0NCgkJfSwNCgkJLy8g6I635Y+WIuenkiLmlbDnu4QNCgkJZ2V0U2Vjb25kQXJyKHJ1bGUpIHsNCgkJCXRoaXMuZGF0ZUFyclswXSA9IHRoaXMuZ2V0T3JkZXJBcnIoMCwgNTkpDQoJCQlpZiAocnVsZS5pbmRleE9mKCctJykgPj0gMCkgew0KCQkJCXRoaXMuZGF0ZUFyclswXSA9IHRoaXMuZ2V0Q3ljbGVBcnIocnVsZSwgNjAsIHRydWUpDQoJCQl9IGVsc2UgaWYgKHJ1bGUuaW5kZXhPZignLycpID49IDApIHsNCgkJCQl0aGlzLmRhdGVBcnJbMF0gPSB0aGlzLmdldEF2ZXJhZ2VBcnIocnVsZSwgNTkpDQoJCQl9IGVsc2UgaWYgKHJ1bGUgIT09ICcqJykgew0KCQkJCXRoaXMuZGF0ZUFyclswXSA9IHRoaXMuZ2V0QXNzaWduQXJyKHJ1bGUpDQoJCQl9DQoJCX0sDQoJCS8vIOagueaNruS8oOi/m+adpeeahG1pbi1tYXjov5Tlm57kuIDkuKrpobrluo/nmoTmlbDnu4QNCgkJZ2V0T3JkZXJBcnIobWluLCBtYXgpIHsNCgkJCWxldCBhcnIgPSBbXQ0KCQkJZm9yIChsZXQgaSA9IG1pbjsgaSA8PSBtYXg7IGkrKykgew0KCQkJCWFyci5wdXNoKGkpDQoJCQl9DQoJCQlyZXR1cm4gYXJyDQoJCX0sDQoJCS8vIOagueaNruinhOWImeS4reaMh+WumueahOmbtuaVo+WAvOi/lOWbnuS4gOS4quaVsOe7hA0KCQlnZXRBc3NpZ25BcnIocnVsZSkgew0KCQkJbGV0IGFyciA9IFtdDQoJCQlsZXQgYXNzaWdpbkFyciA9IHJ1bGUuc3BsaXQoJywnKQ0KCQkJZm9yIChsZXQgaSA9IDA7IGkgPCBhc3NpZ2luQXJyLmxlbmd0aDsgaSsrKSB7DQoJCQkJYXJyW2ldID0gTnVtYmVyKGFzc2lnaW5BcnJbaV0pDQoJCQl9DQoJCQlhcnIuc29ydCh0aGlzLmNvbXBhcmUpDQoJCQlyZXR1cm4gYXJyDQoJCX0sDQoJCS8vIOagueaNruS4gOWumueul+acr+inhOWImeiuoeeul+i/lOWbnuS4gOS4quaVsOe7hA0KCQlnZXRBdmVyYWdlQXJyKHJ1bGUsIGxpbWl0KSB7DQoJCQlsZXQgYXJyID0gW10NCgkJCWxldCBhZ0FyciA9IHJ1bGUuc3BsaXQoJy8nKQ0KCQkJbGV0IG1pbiA9IE51bWJlcihhZ0FyclswXSkNCgkJCWxldCBzdGVwID0gTnVtYmVyKGFnQXJyWzFdKQ0KCQkJd2hpbGUgKG1pbiA8PSBsaW1pdCkgew0KCQkJCWFyci5wdXNoKG1pbikNCgkJCQltaW4gKz0gc3RlcA0KCQkJfQ0KCQkJcmV0dXJuIGFycg0KCQl9LA0KCQkvLyDmoLnmja7op4TliJnov5Tlm57kuIDkuKrlhbfmnInlkajmnJ/mgKfnmoTmlbDnu4QNCgkJZ2V0Q3ljbGVBcnIocnVsZSwgbGltaXQsIHN0YXR1cykgew0KCQkJLy8gc3RhdHVzLS3ooajnpLrmmK/lkKbku44w5byA5aeL77yI5YiZ5LuOMeW8gOWni++8iQ0KCQkJbGV0IGFyciA9IFtdDQoJCQlsZXQgY3ljbGVBcnIgPSBydWxlLnNwbGl0KCctJykNCgkJCWxldCBtaW4gPSBOdW1iZXIoY3ljbGVBcnJbMF0pDQoJCQlsZXQgbWF4ID0gTnVtYmVyKGN5Y2xlQXJyWzFdKQ0KCQkJaWYgKG1pbiA+IG1heCkgew0KCQkJCW1heCArPSBsaW1pdA0KCQkJfQ0KCQkJZm9yIChsZXQgaSA9IG1pbjsgaSA8PSBtYXg7IGkrKykgew0KCQkJCWxldCBhZGQgPSAwDQoJCQkJaWYgKHN0YXR1cyA9PSBmYWxzZSAmJiBpICUgbGltaXQgPT0gMCkgew0KCQkJCQlhZGQgPSBsaW1pdA0KCQkJCX0NCgkJCQlhcnIucHVzaChNYXRoLnJvdW5kKGkgJSBsaW1pdCArIGFkZCkpDQoJCQl9DQoJCQlhcnIuc29ydCh0aGlzLmNvbXBhcmUpDQoJCQlyZXR1cm4gYXJyDQoJCX0sDQoJCS8vIOavlOi+g+aVsOWtl+Wkp+Wwj++8iOeUqOS6jkFycmF5LnNvcnTvvIkNCgkJY29tcGFyZSh2YWx1ZTEsIHZhbHVlMikgew0KCQkJaWYgKHZhbHVlMiAtIHZhbHVlMSA+IDApIHsNCgkJCQlyZXR1cm4gLTENCgkJCX0gZWxzZSB7DQoJCQkJcmV0dXJuIDENCgkJCX0NCgkJfSwNCgkJLy8g5qC85byP5YyW5pel5pyf5qC85byP5aaC77yaMjAxNy05LTE5IDE4OjA0OjMzDQoJCWZvcm1hdERhdGUodmFsdWUsIHR5cGUpIHsNCgkJCS8vIOiuoeeul+aXpeacn+ebuOWFs+WAvA0KCQkJbGV0IHRpbWUgPSB0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgPyBuZXcgRGF0ZSh2YWx1ZSkgOiB2YWx1ZQ0KCQkJbGV0IFkgPSB0aW1lLmdldEZ1bGxZZWFyKCkNCgkJCWxldCBNID0gdGltZS5nZXRNb250aCgpICsgMQ0KCQkJbGV0IEQgPSB0aW1lLmdldERhdGUoKQ0KCQkJbGV0IGggPSB0aW1lLmdldEhvdXJzKCkNCgkJCWxldCBtID0gdGltZS5nZXRNaW51dGVzKCkNCgkJCWxldCBzID0gdGltZS5nZXRTZWNvbmRzKCkNCgkJCWxldCB3ZWVrID0gdGltZS5nZXREYXkoKQ0KCQkJLy8g5aaC5p6c5Lyg6YCS5LqGdHlwZeeahOivnQ0KCQkJaWYgKHR5cGUgPT0gdW5kZWZpbmVkKSB7DQoJCQkJcmV0dXJuIFkgKyAnLScgKyAoTSA8IDEwID8gJzAnICsgTSA6IE0pICsgJy0nICsgKEQgPCAxMCA/ICcwJyArIEQgOiBEKSArICcgJyArIChoIDwgMTAgPyAnMCcgKyBoIDogaCkgKyAnOicgKyAobSA8IDEwID8gJzAnICsgbSA6IG0pICsgJzonICsgKHMgPCAxMCA/ICcwJyArIHMgOiBzKQ0KCQkJfSBlbHNlIGlmICh0eXBlID09ICd3ZWVrJykgew0KCQkJCS8vIOWcqHF1YXJ0euS4rSAx5Li65pif5pyf5pelDQoJCQkJcmV0dXJuIHdlZWsgKyAxDQoJCQl9DQoJCX0sDQoJCS8vIOajgOafpeaXpeacn+aYr+WQpuWtmOWcqA0KCQljaGVja0RhdGUodmFsdWUpIHsNCgkJCWxldCB0aW1lID0gbmV3IERhdGUodmFsdWUpDQoJCQlsZXQgZm9ybWF0ID0gdGhpcy5mb3JtYXREYXRlKHRpbWUpDQoJCQlyZXR1cm4gdmFsdWUgPT09IGZvcm1hdA0KCQl9DQoJfSwNCgl3YXRjaDogew0KCQknZXgnOiAnZXhwcmVzc2lvbkNoYW5nZScNCgl9LA0KCXByb3BzOiBbJ2V4J10sDQoJbW91bnRlZDogZnVuY3Rpb24gKCkgew0KCQkvLyDliJ3lp4vljJYg6I635Y+W5LiA5qyh57uT5p6cDQoJCXRoaXMuZXhwcmVzc2lvbkNoYW5nZSgpDQoJfQ0KfQ0KDQo="},{"version":3,"sources":["result.vue"],"names":[],"mappings":";;;;;;;;;;;;;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"result.vue","sourceRoot":"src/components/Crontab","sourcesContent":["<template>\r\n\t<div class=\"popup-result\">\r\n\t\t<p class=\"title\">最近5次运行时间</p>\r\n\t\t<ul class=\"popup-result-scroll\">\r\n\t\t\t<template v-if='isShow'>\r\n\t\t\t\t<li v-for='item in resultList' :key=\"item\">{{item}}</li>\r\n\t\t\t</template>\r\n\t\t\t<li v-else>计算结果中...</li>\r\n\t\t</ul>\r\n\t</div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tdayRule: '',\r\n\t\t\tdayRuleSup: '',\r\n\t\t\tdateArr: [],\r\n\t\t\tresultList: [],\r\n\t\t\tisShow: false\r\n\t\t}\r\n\t},\r\n\tname: 'crontab-result',\r\n\tmethods: {\r\n\t\t// 表达式值变化时,开始去计算结果\r\n\t\texpressionChange() {\r\n\r\n\t\t\t// 计算开始-隐藏结果\r\n\t\t\tthis.isShow = false\r\n\t\t\t// 获取规则数组[0秒、1分、2时、3日、4月、5星期、6年]\r\n\t\t\tlet ruleArr = this.$options.propsData.ex.split(' ')\r\n\t\t\t// 用于记录进入循环的次数\r\n\t\t\tlet nums = 0\r\n\t\t\t// 用于暂时存符号时间规则结果的数组\r\n\t\t\tlet resultArr = []\r\n\t\t\t// 获取当前时间精确至[年、月、日、时、分、秒]\r\n\t\t\tlet nTime = new Date()\r\n\t\t\tlet nYear = nTime.getFullYear()\r\n\t\t\tlet nMonth = nTime.getMonth() + 1\r\n\t\t\tlet nDay = nTime.getDate()\r\n\t\t\tlet nHour = nTime.getHours()\r\n\t\t\tlet nMin = nTime.getMinutes()\r\n\t\t\tlet nSecond = nTime.getSeconds()\r\n\t\t\t// 根据规则获取到近100年可能年数组、月数组等等\r\n\t\t\tthis.getSecondArr(ruleArr[0])\r\n\t\t\tthis.getMinArr(ruleArr[1])\r\n\t\t\tthis.getHourArr(ruleArr[2])\r\n\t\t\tthis.getDayArr(ruleArr[3])\r\n\t\t\tthis.getMonthArr(ruleArr[4])\r\n\t\t\tthis.getWeekArr(ruleArr[5])\r\n\t\t\tthis.getYearArr(ruleArr[6], nYear)\r\n\t\t\t// 将获取到的数组赋值-方便使用\r\n\t\t\tlet sDate = this.dateArr[0]\r\n\t\t\tlet mDate = this.dateArr[1]\r\n\t\t\tlet hDate = this.dateArr[2]\r\n\t\t\tlet DDate = this.dateArr[3]\r\n\t\t\tlet MDate = this.dateArr[4]\r\n\t\t\tlet YDate = this.dateArr[5]\r\n\t\t\t// 获取当前时间在数组中的索引\r\n\t\t\tlet sIdx = this.getIndex(sDate, nSecond)\r\n\t\t\tlet mIdx = this.getIndex(mDate, nMin)\r\n\t\t\tlet hIdx = this.getIndex(hDate, nHour)\r\n\t\t\tlet DIdx = this.getIndex(DDate, nDay)\r\n\t\t\tlet MIdx = this.getIndex(MDate, nMonth)\r\n\t\t\tlet YIdx = this.getIndex(YDate, nYear)\r\n\t\t\t// 重置月日时分秒的函数(后面用的比较多)\r\n\t\t\tconst resetSecond = function () {\r\n\t\t\t\tsIdx = 0\r\n\t\t\t\tnSecond = sDate[sIdx]\r\n\t\t\t}\r\n\t\t\tconst resetMin = function () {\r\n\t\t\t\tmIdx = 0\r\n\t\t\t\tnMin = mDate[mIdx]\r\n\t\t\t\tresetSecond()\r\n\t\t\t}\r\n\t\t\tconst resetHour = function () {\r\n\t\t\t\thIdx = 0\r\n\t\t\t\tnHour = hDate[hIdx]\r\n\t\t\t\tresetMin()\r\n\t\t\t}\r\n\t\t\tconst resetDay = function () {\r\n\t\t\t\tDIdx = 0\r\n\t\t\t\tnDay = DDate[DIdx]\r\n\t\t\t\tresetHour()\r\n\t\t\t}\r\n\t\t\tconst resetMonth = function () {\r\n\t\t\t\tMIdx = 0\r\n\t\t\t\tnMonth = MDate[MIdx]\r\n\t\t\t\tresetDay()\r\n\t\t\t}\r\n\t\t\t// 如果当前年份不为数组中当前值\r\n\t\t\tif (nYear !== YDate[YIdx]) {\r\n\t\t\t\tresetMonth()\r\n\t\t\t}\r\n\t\t\t// 如果当前月份不为数组中当前值\r\n\t\t\tif (nMonth !== MDate[MIdx]) {\r\n\t\t\t\tresetDay()\r\n\t\t\t}\r\n\t\t\t// 如果当前“日”不为数组中当前值\r\n\t\t\tif (nDay !== DDate[DIdx]) {\r\n\t\t\t\tresetHour()\r\n\t\t\t}\r\n\t\t\t// 如果当前“时”不为数组中当前值\r\n\t\t\tif (nHour !== hDate[hIdx]) {\r\n\t\t\t\tresetMin()\r\n\t\t\t}\r\n\t\t\t// 如果当前“分”不为数组中当前值\r\n\t\t\tif (nMin !== mDate[mIdx]) {\r\n\t\t\t\tresetSecond()\r\n\t\t\t}\r\n\r\n\t\t\t// 循环年份数组\r\n\t\t\tgoYear: for (let Yi = YIdx; Yi < YDate.length; Yi++) {\r\n\t\t\t\tlet YY = YDate[Yi]\r\n\t\t\t\t// 如果到达最大值时\r\n\t\t\t\tif (nMonth > MDate[MDate.length - 1]) {\r\n\t\t\t\t\tresetMonth()\r\n\t\t\t\t\tcontinue\r\n\t\t\t\t}\r\n\t\t\t\t// 循环月份数组\r\n\t\t\t\tgoMonth: for (let Mi = MIdx; Mi < MDate.length; Mi++) {\r\n\t\t\t\t\t// 赋值、方便后面运算\r\n\t\t\t\t\tlet MM = MDate[Mi];\r\n\t\t\t\t\tMM = MM < 10 ? '0' + MM : MM\r\n\t\t\t\t\t// 如果到达最大值时\r\n\t\t\t\t\tif (nDay > DDate[DDate.length - 1]) {\r\n\t\t\t\t\t\tresetDay()\r\n\t\t\t\t\t\tif (Mi == MDate.length - 1) {\r\n\t\t\t\t\t\t\tresetMonth()\r\n\t\t\t\t\t\t\tcontinue goYear\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcontinue\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// 循环日期数组\r\n\t\t\t\t\tgoDay: for (let Di = DIdx; Di < DDate.length; Di++) {\r\n\t\t\t\t\t\t// 赋值、方便后面运算\r\n\t\t\t\t\t\tlet DD = DDate[Di]\r\n\t\t\t\t\t\tlet thisDD = DD < 10 ? '0' + DD : DD\r\n\r\n\t\t\t\t\t\t// 如果到达最大值时\r\n\t\t\t\t\t\tif (nHour > hDate[hDate.length - 1]) {\r\n\t\t\t\t\t\t\tresetHour()\r\n\t\t\t\t\t\t\tif (Di == DDate.length - 1) {\r\n\t\t\t\t\t\t\t\tresetDay()\r\n\t\t\t\t\t\t\t\tif (Mi == MDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\tresetMonth()\r\n\t\t\t\t\t\t\t\t\tcontinue goYear\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tcontinue goMonth\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tcontinue\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// 判断日期的合法性,不合法的话也是跳出当前循环\r\n\t\t\t\t\t\tif (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true && this.dayRule !== 'workDay' && this.dayRule !== 'lastWeek' && this.dayRule !== 'lastDay') {\r\n\t\t\t\t\t\t\tresetDay()\r\n\t\t\t\t\t\t\tcontinue goMonth\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// 如果日期规则中有值时\r\n\t\t\t\t\t\tif (this.dayRule == 'lastDay') {\r\n\t\t\t\t\t\t\t// 如果不是合法日期则需要将前将日期调到合法日期即月末最后一天\r\n\r\n\t\t\t\t\t\t\tif (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\r\n\t\t\t\t\t\t\t\twhile (DD > 0 && this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\r\n\t\t\t\t\t\t\t\t\tDD--\r\n\t\t\t\t\t\t\t\t\tthisDD = DD < 10 ? '0' + DD : DD\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (this.dayRule == 'workDay') {\r\n\t\t\t\t\t\t\t// 校验并调整如果是2月30号这种日期传进来时需调整至正常月底\r\n\t\t\t\t\t\t\tif (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\r\n\t\t\t\t\t\t\t\twhile (DD > 0 && this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\r\n\t\t\t\t\t\t\t\t\tDD--\r\n\t\t\t\t\t\t\t\t\tthisDD = DD < 10 ? '0' + DD : DD\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// 获取达到条件的日期是星期X\r\n\t\t\t\t\t\t\tlet thisWeek = this.formatDate(new Date(YY + '-' + MM + '-' + thisDD + ' 00:00:00'), 'week')\r\n\t\t\t\t\t\t\t// 当星期日时\r\n\t\t\t\t\t\t\tif (thisWeek == 1) {\r\n\t\t\t\t\t\t\t\t// 先找下一个日,并判断是否为月底\r\n\t\t\t\t\t\t\t\tDD++\r\n\t\t\t\t\t\t\t\tthisDD = DD < 10 ? '0' + DD : DD\r\n\t\t\t\t\t\t\t\t// 判断下一日已经不是合法日期\r\n\t\t\t\t\t\t\t\tif (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\r\n\t\t\t\t\t\t\t\t\tDD -= 3\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else if (thisWeek == 7) {\r\n\t\t\t\t\t\t\t\t// 当星期6时只需判断不是1号就可进行操作\r\n\t\t\t\t\t\t\t\tif (this.dayRuleSup !== 1) {\r\n\t\t\t\t\t\t\t\t\tDD--\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tDD += 2\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (this.dayRule == 'weekDay') {\r\n\t\t\t\t\t\t\t// 如果指定了是星期几\r\n\t\t\t\t\t\t\t// 获取当前日期是属于星期几\r\n\t\t\t\t\t\t\tlet thisWeek = this.formatDate(new Date(YY + '-' + MM + '-' + DD + ' 00:00:00'), 'week')\r\n\t\t\t\t\t\t\t// 校验当前星期是否在星期池(dayRuleSup)中\r\n\t\t\t\t\t\t\tif (this.dayRuleSup.indexOf(thisWeek) < 0) {\r\n\t\t\t\t\t\t\t\t// 如果到达最大值时\r\n\t\t\t\t\t\t\t\tif (Di == DDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\tresetDay()\r\n\t\t\t\t\t\t\t\t\tif (Mi == MDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\t\tresetMonth()\r\n\t\t\t\t\t\t\t\t\t\tcontinue goYear\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tcontinue goMonth\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tcontinue\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (this.dayRule == 'assWeek') {\r\n\t\t\t\t\t\t\t// 如果指定了是第几周的星期几\r\n\t\t\t\t\t\t\t// 获取每月1号是属于星期几\r\n\t\t\t\t\t\t\tlet thisWeek = this.formatDate(new Date(YY + '-' + MM + '-' + DD + ' 00:00:00'), 'week')\r\n\t\t\t\t\t\t\tif (this.dayRuleSup[1] >= thisWeek) {\r\n\t\t\t\t\t\t\t\tDD = (this.dayRuleSup[0] - 1) * 7 + this.dayRuleSup[1] - thisWeek + 1\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tDD = this.dayRuleSup[0] * 7 + this.dayRuleSup[1] - thisWeek + 1\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else if (this.dayRule == 'lastWeek') {\r\n\t\t\t\t\t\t\t// 如果指定了每月最后一个星期几\r\n\t\t\t\t\t\t\t// 校验并调整如果是2月30号这种日期传进来时需调整至正常月底\r\n\t\t\t\t\t\t\tif (this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\r\n\t\t\t\t\t\t\t\twhile (DD > 0 && this.checkDate(YY + '-' + MM + '-' + thisDD + ' 00:00:00') !== true) {\r\n\t\t\t\t\t\t\t\t\tDD--\r\n\t\t\t\t\t\t\t\t\tthisDD = DD < 10 ? '0' + DD : DD\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// 获取月末最后一天是星期几\r\n\t\t\t\t\t\t\tlet thisWeek = this.formatDate(new Date(YY + '-' + MM + '-' + thisDD + ' 00:00:00'), 'week')\r\n\t\t\t\t\t\t\t// 找到要求中最近的那个星期几\r\n\t\t\t\t\t\t\tif (this.dayRuleSup < thisWeek) {\r\n\t\t\t\t\t\t\t\tDD -= thisWeek - this.dayRuleSup\r\n\t\t\t\t\t\t\t} else if (this.dayRuleSup > thisWeek) {\r\n\t\t\t\t\t\t\t\tDD -= 7 - (this.dayRuleSup - thisWeek)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// 判断时间值是否小于10置换成“05”这种格式\r\n\t\t\t\t\t\tDD = DD < 10 ? '0' + DD : DD\r\n\r\n\t\t\t\t\t\t// 循环“时”数组\r\n\t\t\t\t\t\tgoHour: for (let hi = hIdx; hi < hDate.length; hi++) {\r\n\t\t\t\t\t\t\tlet hh = hDate[hi] < 10 ? '0' + hDate[hi] : hDate[hi]\r\n\r\n\t\t\t\t\t\t\t// 如果到达最大值时\r\n\t\t\t\t\t\t\tif (nMin > mDate[mDate.length - 1]) {\r\n\t\t\t\t\t\t\t\tresetMin()\r\n\t\t\t\t\t\t\t\tif (hi == hDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\tresetHour()\r\n\t\t\t\t\t\t\t\t\tif (Di == DDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\t\tresetDay()\r\n\t\t\t\t\t\t\t\t\t\tif (Mi == MDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\t\t\tresetMonth()\r\n\t\t\t\t\t\t\t\t\t\t\tcontinue goYear\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tcontinue goMonth\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tcontinue goDay\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tcontinue\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// 循环\"分\"数组\r\n\t\t\t\t\t\t\tgoMin: for (let mi = mIdx; mi < mDate.length; mi++) {\r\n\t\t\t\t\t\t\t\tlet mm = mDate[mi] < 10 ? '0' + mDate[mi] : mDate[mi]\r\n\r\n\t\t\t\t\t\t\t\t// 如果到达最大值时\r\n\t\t\t\t\t\t\t\tif (nSecond > sDate[sDate.length - 1]) {\r\n\t\t\t\t\t\t\t\t\tresetSecond()\r\n\t\t\t\t\t\t\t\t\tif (mi == mDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\t\tresetMin()\r\n\t\t\t\t\t\t\t\t\t\tif (hi == hDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\t\t\tresetHour()\r\n\t\t\t\t\t\t\t\t\t\t\tif (Di == DDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tresetDay()\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (Mi == MDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tresetMonth()\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue goYear\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue goMonth\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tcontinue goDay\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tcontinue goHour\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tcontinue\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// 循环\"秒\"数组\r\n\t\t\t\t\t\t\t\tgoSecond: for (let si = sIdx; si <= sDate.length - 1; si++) {\r\n\t\t\t\t\t\t\t\t\tlet ss = sDate[si] < 10 ? '0' + sDate[si] : sDate[si]\r\n\t\t\t\t\t\t\t\t\t// 添加当前时间(时间合法性在日期循环时已经判断)\r\n\t\t\t\t\t\t\t\t\tif (MM !== '00' && DD !== '00') {\r\n\t\t\t\t\t\t\t\t\t\tresultArr.push(YY + '-' + MM + '-' + DD + ' ' + hh + ':' + mm + ':' + ss)\r\n\t\t\t\t\t\t\t\t\t\tnums++\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t// 如果条数满了就退出循环\r\n\t\t\t\t\t\t\t\t\tif (nums == 5) break goYear\r\n\t\t\t\t\t\t\t\t\t// 如果到达最大值时\r\n\t\t\t\t\t\t\t\t\tif (si == sDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\t\tresetSecond()\r\n\t\t\t\t\t\t\t\t\t\tif (mi == mDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\t\t\tresetMin()\r\n\t\t\t\t\t\t\t\t\t\t\tif (hi == hDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tresetHour()\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (Di == DDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tresetDay()\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (Mi == MDate.length - 1) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresetMonth()\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue goYear\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue goMonth\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue goDay\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tcontinue goHour\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tcontinue goMin\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t} //goSecond\r\n\t\t\t\t\t\t\t} //goMin\r\n\t\t\t\t\t\t}//goHour\r\n\t\t\t\t\t}//goDay\r\n\t\t\t\t}//goMonth\r\n\t\t\t}\r\n\t\t\t// 判断100年内的结果条数\r\n\t\t\tif (resultArr.length == 0) {\r\n\t\t\t\tthis.resultList = ['没有达到条件的结果!']\r\n\t\t\t} else {\r\n\t\t\t\tthis.resultList = resultArr\r\n\t\t\t\tif (resultArr.length !== 5) {\r\n\t\t\t\t\tthis.resultList.push('最近100年内只有上面' + resultArr.length + '条结果!')\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// 计算完成-显示结果\r\n\t\t\tthis.isShow = true\r\n\r\n\r\n\t\t},\r\n\t\t// 用于计算某位数字在数组中的索引\r\n\t\tgetIndex(arr, value) {\r\n\t\t\tif (value <= arr[0] || value > arr[arr.length - 1]) {\r\n\t\t\t\treturn 0\r\n\t\t\t} else {\r\n\t\t\t\tfor (let i = 0; i < arr.length - 1; i++) {\r\n\t\t\t\t\tif (value > arr[i] && value <= arr[i + 1]) {\r\n\t\t\t\t\t\treturn i + 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 获取\"年\"数组\r\n\t\tgetYearArr(rule, year) {\r\n\t\t\tthis.dateArr[5] = this.getOrderArr(year, year + 100)\r\n\t\t\tif (rule !== undefined) {\r\n\t\t\t\tif (rule.indexOf('-') >= 0) {\r\n\t\t\t\t\tthis.dateArr[5] = this.getCycleArr(rule, year + 100, false)\r\n\t\t\t\t} else if (rule.indexOf('/') >= 0) {\r\n\t\t\t\t\tthis.dateArr[5] = this.getAverageArr(rule, year + 100)\r\n\t\t\t\t} else if (rule !== '*') {\r\n\t\t\t\t\tthis.dateArr[5] = this.getAssignArr(rule)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 获取\"月\"数组\r\n\t\tgetMonthArr(rule) {\r\n\t\t\tthis.dateArr[4] = this.getOrderArr(1, 12)\r\n\t\t\tif (rule.indexOf('-') >= 0) {\r\n\t\t\t\tthis.dateArr[4] = this.getCycleArr(rule, 12, false)\r\n\t\t\t} else if (rule.indexOf('/') >= 0) {\r\n\t\t\t\tthis.dateArr[4] = this.getAverageArr(rule, 12)\r\n\t\t\t} else if (rule !== '*') {\r\n\t\t\t\tthis.dateArr[4] = this.getAssignArr(rule)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 获取\"日\"数组-主要为日期规则\r\n\t\tgetWeekArr(rule) {\r\n\t\t\t// 只有当日期规则的两个值均为“”时则表达日期是有选项的\r\n\t\t\tif (this.dayRule == '' && this.dayRuleSup == '') {\r\n\t\t\t\tif (rule.indexOf('-') >= 0) {\r\n\t\t\t\t\tthis.dayRule = 'weekDay'\r\n\t\t\t\t\tthis.dayRuleSup = this.getCycleArr(rule, 7, false)\r\n\t\t\t\t} else if (rule.indexOf('#') >= 0) {\r\n\t\t\t\t\tthis.dayRule = 'assWeek'\r\n\t\t\t\t\tlet matchRule = rule.match(/[0-9]{1}/g)\r\n\t\t\t\t\tthis.dayRuleSup = [Number(matchRule[1]), Number(matchRule[0])]\r\n\t\t\t\t\tthis.dateArr[3] = [1]\r\n\t\t\t\t\tif (this.dayRuleSup[1] == 7) {\r\n\t\t\t\t\t\tthis.dayRuleSup[1] = 0\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (rule.indexOf('L') >= 0) {\r\n\t\t\t\t\tthis.dayRule = 'lastWeek'\r\n\t\t\t\t\tthis.dayRuleSup = Number(rule.match(/[0-9]{1,2}/g)[0])\r\n\t\t\t\t\tthis.dateArr[3] = [31]\r\n\t\t\t\t\tif (this.dayRuleSup == 7) {\r\n\t\t\t\t\t\tthis.dayRuleSup = 0\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (rule !== '*' && rule !== '?') {\r\n\t\t\t\t\tthis.dayRule = 'weekDay'\r\n\t\t\t\t\tthis.dayRuleSup = this.getAssignArr(rule)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 获取\"日\"数组-少量为日期规则\r\n\t\tgetDayArr(rule) {\r\n\t\t\tthis.dateArr[3] = this.getOrderArr(1, 31)\r\n\t\t\tthis.dayRule = ''\r\n\t\t\tthis.dayRuleSup = ''\r\n\t\t\tif (rule.indexOf('-') >= 0) {\r\n\t\t\t\tthis.dateArr[3] = this.getCycleArr(rule, 31, false)\r\n\t\t\t\tthis.dayRuleSup = 'null'\r\n\t\t\t} else if (rule.indexOf('/') >= 0) {\r\n\t\t\t\tthis.dateArr[3] = this.getAverageArr(rule, 31)\r\n\t\t\t\tthis.dayRuleSup = 'null'\r\n\t\t\t} else if (rule.indexOf('W') >= 0) {\r\n\t\t\t\tthis.dayRule = 'workDay'\r\n\t\t\t\tthis.dayRuleSup = Number(rule.match(/[0-9]{1,2}/g)[0])\r\n\t\t\t\tthis.dateArr[3] = [this.dayRuleSup]\r\n\t\t\t} else if (rule.indexOf('L') >= 0) {\r\n\t\t\t\tthis.dayRule = 'lastDay'\r\n\t\t\t\tthis.dayRuleSup = 'null'\r\n\t\t\t\tthis.dateArr[3] = [31]\r\n\t\t\t} else if (rule !== '*' && rule !== '?') {\r\n\t\t\t\tthis.dateArr[3] = this.getAssignArr(rule)\r\n\t\t\t\tthis.dayRuleSup = 'null'\r\n\t\t\t} else if (rule == '*') {\r\n\t\t\t\tthis.dayRuleSup = 'null'\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 获取\"时\"数组\r\n\t\tgetHourArr(rule) {\r\n\t\t\tthis.dateArr[2] = this.getOrderArr(0, 23)\r\n\t\t\tif (rule.indexOf('-') >= 0) {\r\n\t\t\t\tthis.dateArr[2] = this.getCycleArr(rule, 24, true)\r\n\t\t\t} else if (rule.indexOf('/') >= 0) {\r\n\t\t\t\tthis.dateArr[2] = this.getAverageArr(rule, 23)\r\n\t\t\t} else if (rule !== '*') {\r\n\t\t\t\tthis.dateArr[2] = this.getAssignArr(rule)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 获取\"分\"数组\r\n\t\tgetMinArr(rule) {\r\n\t\t\tthis.dateArr[1] = this.getOrderArr(0, 59)\r\n\t\t\tif (rule.indexOf('-') >= 0) {\r\n\t\t\t\tthis.dateArr[1] = this.getCycleArr(rule, 60, true)\r\n\t\t\t} else if (rule.indexOf('/') >= 0) {\r\n\t\t\t\tthis.dateArr[1] = this.getAverageArr(rule, 59)\r\n\t\t\t} else if (rule !== '*') {\r\n\t\t\t\tthis.dateArr[1] = this.getAssignArr(rule)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 获取\"秒\"数组\r\n\t\tgetSecondArr(rule) {\r\n\t\t\tthis.dateArr[0] = this.getOrderArr(0, 59)\r\n\t\t\tif (rule.indexOf('-') >= 0) {\r\n\t\t\t\tthis.dateArr[0] = this.getCycleArr(rule, 60, true)\r\n\t\t\t} else if (rule.indexOf('/') >= 0) {\r\n\t\t\t\tthis.dateArr[0] = this.getAverageArr(rule, 59)\r\n\t\t\t} else if (rule !== '*') {\r\n\t\t\t\tthis.dateArr[0] = this.getAssignArr(rule)\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 根据传进来的min-max返回一个顺序的数组\r\n\t\tgetOrderArr(min, max) {\r\n\t\t\tlet arr = []\r\n\t\t\tfor (let i = min; i <= max; i++) {\r\n\t\t\t\tarr.push(i)\r\n\t\t\t}\r\n\t\t\treturn arr\r\n\t\t},\r\n\t\t// 根据规则中指定的零散值返回一个数组\r\n\t\tgetAssignArr(rule) {\r\n\t\t\tlet arr = []\r\n\t\t\tlet assiginArr = rule.split(',')\r\n\t\t\tfor (let i = 0; i < assiginArr.length; i++) {\r\n\t\t\t\tarr[i] = Number(assiginArr[i])\r\n\t\t\t}\r\n\t\t\tarr.sort(this.compare)\r\n\t\t\treturn arr\r\n\t\t},\r\n\t\t// 根据一定算术规则计算返回一个数组\r\n\t\tgetAverageArr(rule, limit) {\r\n\t\t\tlet arr = []\r\n\t\t\tlet agArr = rule.split('/')\r\n\t\t\tlet min = Number(agArr[0])\r\n\t\t\tlet step = Number(agArr[1])\r\n\t\t\twhile (min <= limit) {\r\n\t\t\t\tarr.push(min)\r\n\t\t\t\tmin += step\r\n\t\t\t}\r\n\t\t\treturn arr\r\n\t\t},\r\n\t\t// 根据规则返回一个具有周期性的数组\r\n\t\tgetCycleArr(rule, limit, status) {\r\n\t\t\t// status--表示是否从0开始(则从1开始)\r\n\t\t\tlet arr = []\r\n\t\t\tlet cycleArr = rule.split('-')\r\n\t\t\tlet min = Number(cycleArr[0])\r\n\t\t\tlet max = Number(cycleArr[1])\r\n\t\t\tif (min > max) {\r\n\t\t\t\tmax += limit\r\n\t\t\t}\r\n\t\t\tfor (let i = min; i <= max; i++) {\r\n\t\t\t\tlet add = 0\r\n\t\t\t\tif (status == false && i % limit == 0) {\r\n\t\t\t\t\tadd = limit\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(Math.round(i % limit + add))\r\n\t\t\t}\r\n\t\t\tarr.sort(this.compare)\r\n\t\t\treturn arr\r\n\t\t},\r\n\t\t// 比较数字大小(用于Array.sort\r\n\t\tcompare(value1, value2) {\r\n\t\t\tif (value2 - value1 > 0) {\r\n\t\t\t\treturn -1\r\n\t\t\t} else {\r\n\t\t\t\treturn 1\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 格式化日期格式如:2017-9-19 18:04:33\r\n\t\tformatDate(value, type) {\r\n\t\t\t// 计算日期相关值\r\n\t\t\tlet time = typeof value == 'number' ? new Date(value) : value\r\n\t\t\tlet Y = time.getFullYear()\r\n\t\t\tlet M = time.getMonth() + 1\r\n\t\t\tlet D = time.getDate()\r\n\t\t\tlet h = time.getHours()\r\n\t\t\tlet m = time.getMinutes()\r\n\t\t\tlet s = time.getSeconds()\r\n\t\t\tlet week = time.getDay()\r\n\t\t\t// 如果传递了type的话\r\n\t\t\tif (type == undefined) {\r\n\t\t\t\treturn Y + '-' + (M < 10 ? '0' + M : M) + '-' + (D < 10 ? '0' + D : D) + ' ' + (h < 10 ? '0' + h : h) + ':' + (m < 10 ? '0' + m : m) + ':' + (s < 10 ? '0' + s : s)\r\n\t\t\t} else if (type == 'week') {\r\n\t\t\t\t// 在quartz中 1为星期日\r\n\t\t\t\treturn week + 1\r\n\t\t\t}\r\n\t\t},\r\n\t\t// 检查日期是否存在\r\n\t\tcheckDate(value) {\r\n\t\t\tlet time = new Date(value)\r\n\t\t\tlet format = this.formatDate(time)\r\n\t\t\treturn value === format\r\n\t\t}\r\n\t},\r\n\twatch: {\r\n\t\t'ex': 'expressionChange'\r\n\t},\r\n\tprops: ['ex'],\r\n\tmounted: function () {\r\n\t\t// 初始化 获取一次结果\r\n\t\tthis.expressionChange()\r\n\t}\r\n}\r\n\r\n</script>\r\n"]}]}