Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@哔咔漫画@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5ZOU5ZKU5ryr55S7IiwiYXV0aG9yIjoiVHlyYW50R2VuZXNpcyIsInVybCI6Imhpa2VyOi8vZW1wdHkkJGZ5cGFnZSIsInZlcnNpb24iOjMsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoib3RoZXIiLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbiQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpLmJhc2VQYXJzZSgpOyIsInNlYXJjaF91cmwiOiIiLCJncm91cCI6Iua8q+eUuyIsInNlYXJjaEZpbmQiOiIiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6InBjIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJwaWNhY2dcIixcInBhdGhcIjpcInBpY2FjZ1wiLFwicnVsZVwiOlwiY29uc3QgcGljYWNnID0ge1xcbiAgICAvLyBCYXNlVXJsOiBcXFwiaHR0cHM6Ly9waWNhYXBpLnBpY2Fjb21pYy5jb20vXFxcIixcXG4gICAgQmFzZVVybDogXFxcImh0dHA6Ly8xNzIuNjcuMjIyLjI0L1xcXCIsXFxuICAgIGVtcHR5OiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgIHBpY2FjZ19wYXRoOiBcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy9UeXJhbnRHZW5lc2lzX+WTlOWSlOiuvue9ri5qc1xcXCIsXFxuICAgIHNlYXJjaEhpc3Rvcnk6IFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL1R5cmFudEdlbmVzaXNf5ZOU5ZKU5pCc57Si5Y6G5Y+yLmpzXFxcIixcXG4gICAgYXBpS2V5OiBcXFwiQzY5QkFGNDFEQTVBQkQxRkZFREM2RDJGRUE1NkJcXFwiLFxcbiAgICBub25jZTogXFxcImIxYWI4N2I0ODAwZDRkNDU5MGExMTcwMWI4NTUxYWZhXFxcIixcXG4gICAgc2VjcmV0S2V5OiBcXFwifmR9JFE3JGVJbmk9Vik5XFxcXFxcXFxSSy9QLlJNNDs5Wzd8QC9DQX1ifk9XITM/RVZgOjw+TTdwZGRVQkw1bnwwLypDblxcXCIsXFxuICAgIGQ6IFtdLFxcbiAgICBkYXRhOiB7XFxuICAgICAgICByYW5rVFQ6IGdldEl0ZW0oJ3JhbmtUVCcsICdIMjQnKSxcXG4gICAgICAgIHNvcnQ6IGdldEl0ZW0oJ3NvcnQnLCAndWEnKSxcXG4gICAgICAgIHNlYXJjaFZhbHVlOiBnZXRJdGVtKCdzZWFyY2hWYWx1ZScsICcnKSxcXG4gICAgICAgIHNlYXJjaEhpc3RvcnlTaG93U3RhdHVzOiBnZXRJdGVtKCdzZWFyY2hIaXN0b3J5U2hvd1N0YXR1cycsICcwJyksXFxuICAgICAgICBpbmZvVGFiOiBnZXRJdGVtKCdpbmZvVGFiJywgJzEnKSxcXG4gICAgICAgIGluZm9SZXZlcnNlOiBnZXRJdGVtKCdpbmZvUmV2ZXJzZScsICcxJyksXFxuICAgIH0sXFxuICAgIHNoYXJlX2FjY291bnQ6IHtcXG4gICAgICAgIG5hbWU6ICdoaWtlcl9zaGFyZScsXFxuICAgICAgICBwYXNzd2Q6ICdoaWtlcl9zaGFyZV8xMjM0NTY3OCdcXG4gICAgfSxcXG4gICAgZGVmYXVsdENvbmZpZzoge1xcbiAgICAgICAgc2VhcmNoSGlzdG9yeU1heDogMTAwLFxcbiAgICAgICAgc2VhcmNoSGlzdG9yeVNob3dMaW1pdDogMjAsXFxuICAgIH0sXFxuICAgIGltYWdlczogW10sXFxuICAgIGVwaXNvZGVzOiBbXSxcXG4gICAgaGVhZGVyczoge1xcbiAgICAgICAgXFxcImFjY2VwdFxcXCI6ICAgICAgICAgICAgXFxcImFwcGxpY2F0aW9uL3ZuZC5waWNhY29taWMuY29tLnYxK2pzb25cXFwiLFxcbiAgICAgICAgXFxcImFwcC1jaGFubmVsXFxcIjogICAgICAgXFxcIjJcXFwiLFxcbiAgICAgICAgXFxcInRpbWVcXFwiOiAgICAgICAgICAgICAgKG5ldyBEYXRlKCkuZ2V0VGltZSgpLzEwMDApLnRvRml4ZWQoMCksXFxuICAgICAgICBcXFwiYXBwLXZlcnNpb25cXFwiOiAgICAgICBcXFwiMi4yLjEuMi4zLjNcXFwiLFxcbiAgICAgICAgXFxcImFwcC11dWlkXFxcIjogICAgICAgICAgXFxcImRlZmF1bHRVdWlkXFxcIixcXG4gICAgICAgIFxcXCJhcHAtcGxhdGZvcm1cXFwiOiAgICAgIFxcXCJhbmRyb2lkXFxcIixcXG4gICAgICAgIFxcXCJhcHAtYnVpbGQtdmVyc2lvblxcXCI6IFxcXCI0NFxcXCIsXFxuICAgICAgICBcXFwiQ29udGVudC1UeXBlXFxcIjogICAgICBcXFwiYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD1VVEYtOFxcXCIsXFxuICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6ICAgICAgICBcXFwib2todHRwLzMuOC4xXFxcIixcXG4gICAgICAgIFxcXCJpbWFnZS1xdWFsaXR5XFxcIjogICAgIFxcXCJvcmlnaW5hbFxcXCIsXFxuICAgICAgICBcXFwiSG9zdFxcXCI6ICAgICAgICAgICAgICBcXFwicGljYWFwaS5waWNhY29taWMuY29tXFxcIixcXG4gICAgfSxcXG4gICAgZW5jcnlwdDogKHVybCwgdHMsIG1ldGhvZCkgPT4ge1xcbiAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKVxcbiAgICAgICAgbGV0IHJhdyA9IHVybC5yZXBsYWNlKHBpY2FjZy5CYXNlVXJsLCBcXFwiXFxcIikgKyB0cyArIHBpY2FjZy5ub25jZSArIG1ldGhvZCArIHBpY2FjZy5hcGlLZXlcXG4gICAgICAgIHJhdyA9IHJhdy50b0xvY2FsZUxvd2VyQ2FzZSgpXFxuICAgICAgICByZXR1cm4gQ3J5cHRvSlMuSG1hY1NIQTI1NihyYXcsIHBpY2FjZy5zZWNyZXRLZXkpLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5IZXgpXFxuICAgIH0sXFxuICAgIGh0dHBSZXF1ZXN0OiAocGF0aCwgbWV0aG9kLCBkYXRhKSA9PiB7XFxuICAgICAgICBsZXQgcmVzcG9uc2VKc29uXFxuICAgICAgICBjb25zdCByZXF1ZXN0X3VybCA9IHBpY2FjZy5CYXNlVXJsICsgcGF0aFxcbiAgICAgICAgbGV0IGhlYWRlcnMgPSBwaWNhY2cuaGVhZGVyc1xcbiAgICAgICAgaGVhZGVyc1snYXBpLWtleSddID0gcGljYWNnLmFwaUtleVxcbiAgICAgICAgaGVhZGVycy5ub25jZSA9IHBpY2FjZy5ub25jZVxcbiAgICAgICAgaGVhZGVycy5zaWduYXR1cmUgPSBwaWNhY2cuZW5jcnlwdChyZXF1ZXN0X3VybCwgaGVhZGVycy50aW1lLCBtZXRob2QpXFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIGlmIChmaWxlRXhpc3QocGljYWNnLnBpY2FjZ19wYXRoKSkgaGVhZGVycy5hdXRob3JpemF0aW9uID0gZmV0Y2gocGljYWNnLnBpY2FjZ19wYXRoKS5zcGxpdCgnXFxcXG4nKVsyXVxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShwaWNhY2cucGljYWNnX3BhdGgsICcnKVxcbiAgICAgICAgICAgIHRvYXN0KCfotKblj7flvILluLgs6K+36YeN5paw55m75b2VJylcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHJlc3BvbnNlSnNvbiA9IG1ldGhvZCA9PT0gJ0dFVCcgPyBmZXRjaChyZXF1ZXN0X3VybCwge2hlYWRlcnM6IGhlYWRlcnN9KSA6IGZldGNoKHJlcXVlc3RfdXJsLCB7aGVhZGVyczogaGVhZGVycywgbWV0aG9kOiBtZXRob2QsIGJvZHk6IGRhdGF9KVxcblxcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBKU09OLnBhcnNlKHJlc3BvbnNlSnNvbilcXG5cXG4gICAgICAgIC8vIOiHquWKqOeZu+W9lVxcbiAgICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT09IDQwMSAmJiByZXNwb25zZS5lcnJvciA9PT0gJzEwMDUnKSB7XFxuICAgICAgICAgICAgbGV0IGVtYWlsLCBwYXNzd29yZFxcbiAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgIGlmIChmaWxlRXhpc3QocGljYWNnLnBpY2FjZ19wYXRoKSkge1xcbiAgICAgICAgICAgICAgICAgICAgZW1haWwgPSBmZXRjaChwaWNhY2cucGljYWNnX3BhdGgpLnNwbGl0KCdcXFxcbicpWzBdXFxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZCA9IGZldGNoKHBpY2FjZy5waWNhY2dfcGF0aCkuc3BsaXQoJ1xcXFxuJylbMV1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgd3JpdGVGaWxlKHBpY2FjZy5waWNhY2dfcGF0aCwgJycpXFxuICAgICAgICAgICAgICAgIHRvYXN0KCfotKblj7flvILluLgs6K+36YeN5paw55m75b2VJylcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKCEgZW1haWwgfHwgISBwYXNzd29yZCkge1xcbiAgICAgICAgICAgICAgICB3cml0ZUZpbGUocGljYWNnLnBpY2FjZ19wYXRoLCAnJylcXG4gICAgICAgICAgICAgICAgdG9hc3QoJ+i0puWPt+W8guW4uCzor7fph43mlrDnmbvlvZUnKVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IGF1dG9Mb2dpblJlc3BvbnNlID0gcGljYWNnLnBvc3QoJ2F1dGgvc2lnbi1pbicsIHtcXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiBlbWFpbCxcXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOiBwYXNzd29yZCxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgaWYgKGF1dG9Mb2dpblJlc3BvbnNlLmNvZGUgPT09IDQwMCkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycrIChhdXRvTG9naW5SZXNwb25zZS5kZXRhaWwgfHwgYXV0b0xvZ2luUmVzcG9uc2UubWVzc2FnZSlcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmcgPSBlbWFpbCArICdcXFxcbicgKyBwYXNzd29yZCArICdcXFxcbicgK2F1dG9Mb2dpblJlc3BvbnNlLmRhdGEudG9rZW5cXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShwaWNhY2cucGljYWNnX3BhdGgsIHNldHRpbmcpXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlXFxuICAgIH0sXFxuICAgIGdldDogcGF0aCA9PiBwaWNhY2cuaHR0cFJlcXVlc3QocGF0aCwgJ0dFVCcsICcnKSxcXG4gICAgcG9zdDogKHBhdGgsIGRhdGEpID0+IHBpY2FjZy5odHRwUmVxdWVzdChwYXRoLCAnUE9TVCcsIGRhdGEpLFxcbiAgICBiYXNlUGFyc2U6ICgpID0+IHtcXG4gICAgICAgIGlmICghIGZpbGVFeGlzdChwaWNhY2cucGljYWNnX3BhdGgpIHx8ICEgZmV0Y2gocGljYWNnLnBpY2FjZ19wYXRoKSkge1xcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+eZu+W9leWTlOWSlCcsXFxuICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5sb2dpbigpXFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpO1xcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5rOo5YaM5ZOU5ZKUJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLnJlZ2lzdGVyKClcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZCk7XFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICflhbHkuqvotKblj7fnmbvlvZUnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2FjZy5zaGFyZUxvZ2luKClcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICBjb25zdCB1c2VySW5mbyA9IHBpY2FjZy5nZXQoJ3VzZXJzL3Byb2ZpbGUnKS5kYXRhLnVzZXJcXG5cXG4gICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+eUqOaIt+OAjicrdXNlckluZm8ubmFtZSsn44CPICMg5Liq5Lq65Lit5b+DJyxcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6ICdodHRwczovL2dpdC50eXJhbnRnLmNvbS90eXJhbnRnZW5lc2lzL2hpa2VyVmlld1J1bGVzL3Jhdy9tYXN0ZXIvYXNzZXRzL2ltYWdlcy9waWNhLmpwZycsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5zZXR0aW5nUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KHBpY2FjZy5kKVxcbiAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cXG5cXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eStcXFwiI2Z1bGxUaGVtZSMkJGZ5cGFnZVxcXCIpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5nZXRTZWFyY2goKVxcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KHBpY2FjZy5kKVxcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfor7fovpPlhaXlhbPplK7or40nLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImljb25fMV9zZWFyY2hcXFwiLFxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5o6S6KGM5qacJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eStcXFwiI2Z1bGxUaGVtZSNcXFwiKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZ2V0UmFua2luZygpXFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpXFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMycsXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfpmo/mnLrmnKzlrZAnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5K1xcXCIjZnVsbFRoZW1lIyQkZnlwYWdlXFxcIikucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmdldFJhbmRvbSgpXFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpXFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMycsXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmiJHnmoTmlLbol48nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5K1xcXCIjZnVsbFRoZW1lIyQkZnlwYWdlXFxcIikucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmdldEZhdm91cml0ZSgpXFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpXFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMycsXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgcGljYWNnLmdldENhdGVnb3JpZXMoKVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgc2V0UmVzdWx0KHBpY2FjZy5kKTtcXG4gICAgfSxcXG4gICAgbG9naW46ICgpID0+IHtcXG4gICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgIGRlc2M6ICfor7fovpPlhaXnlKjmiLflkI0nLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkgc2V0SXRlbSgnZW1haWwnLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgZGVzYzogJ+ivt+i+k+WFpeWvhueggScsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSBzZXRJdGVtKCdwYXNzd29yZCcsIGlucHV0KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+eZu+W9lScsXFxuICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHBpY2FjZy5wb3N0KCdhdXRoL3NpZ24taW4nLCB7XFxuICAgICAgICAgICAgICAgICAgICBlbWFpbDogZ2V0SXRlbSgnZW1haWwnLCAnJyksXFxuICAgICAgICAgICAgICAgICAgICBwYXNzd29yZDogZ2V0SXRlbSgncGFzc3dvcmQnLCAnJyksXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5jb2RlID09PSA0MDApIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nKyAocmVzcG9uc2UuZGV0YWlsIHx8IHJlc3BvbnNlLm1lc3NhZ2UpXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXR0aW5nID0gZ2V0SXRlbSgnZW1haWwnLCAnJykgKyAnXFxcXG4nICsgZ2V0SXRlbSgncGFzc3dvcmQnLCAnJykgKyAnXFxcXG4nICtyZXNwb25zZS5kYXRhLnRva2VuXFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUocGljYWNnLnBpY2FjZ19wYXRoLCBzZXR0aW5nKVxcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoJ+eZu+W9leaIkOWKnycpXFxuICAgICAgICAgICAgICAgICAgICBiYWNrKHRydWUpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGljYWNnLmVtcHR5XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcblxcbiAgICB9LFxcbiAgICBzaGFyZUxvZ2luOiAoKSA9PiB7XFxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHBpY2FjZy5wb3N0KCdhdXRoL3NpZ24taW4nLCB7XFxuICAgICAgICAgICAgZW1haWw6IHBpY2FjZy5zaGFyZV9hY2NvdW50Lm5hbWUsXFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHBpY2FjZy5zaGFyZV9hY2NvdW50LnBhc3N3ZCxcXG4gICAgICAgIH0pXFxuICAgICAgICBpZiAocmVzcG9uc2UuY29kZSA9PT0gNDAwKSB7XFxuICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycrIChyZXNwb25zZS5kZXRhaWwgfHwgcmVzcG9uc2UubWVzc2FnZSlcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGdldEl0ZW0oJ2VtYWlsJywgJycpICsgJ1xcXFxuJyArIGdldEl0ZW0oJ3Bhc3N3b3JkJywgJycpICsgJ1xcXFxuJyArcmVzcG9uc2UuZGF0YS50b2tlblxcbiAgICAgICAgICAgIHdyaXRlRmlsZShwaWNhY2cucGljYWNnX3BhdGgsIHNldHRpbmcpXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+eZu+W9leaIkOWKn1xcXCJcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgcmVnaXN0ZXI6ICgpID0+IHtcXG4gICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgIGRlc2M6ICfor7fovpPlhaXmmLXnp7AnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkgc2V0SXRlbSgnbmFtZScsIGlucHV0KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICBkZXNjOiAn6K+36L6T5YWl55So5oi35ZCNJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQpIHNldEl0ZW0oJ2VtYWlsJywgaW5wdXQpXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgIGRlc2M6ICfor7fovpPlhaXlr4bnoIEnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkgc2V0SXRlbSgncGFzc3dvcmQnLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfms6jlhownLFxcbiAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cucG9zdCgnYXV0aC9yZWdpc3RlcicsIHtcXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiBnZXRJdGVtKCdlbWFpbCcsICcnKSxcXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOiBnZXRJdGVtKCdwYXNzd29yZCcsICcnKSxcXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGdldEl0ZW0oJ25hbWUnLCAnJyksXFxuICAgICAgICAgICAgICAgICAgICBiaXJ0aGRheTogJzE5NzAtMDEtMDEnLFxcbiAgICAgICAgICAgICAgICAgICAgZ2VuZGVyOiAnZicsXFxuICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbjE6ICdxdWVzdGlvbjEnLFxcbiAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb24yOiAncXVlc3Rpb24yJyxcXG4gICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uMzogJ3F1ZXN0aW9uMycsXFxuICAgICAgICAgICAgICAgICAgICBhbnN3ZXIxOiAnYW5zd2VyMScsXFxuICAgICAgICAgICAgICAgICAgICBhbnN3ZXIyOiAnYW5zd2VyMicsXFxuICAgICAgICAgICAgICAgICAgICBhbnN3ZXIzOiAnYW5zd2VyMycsXFxuICAgICAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5jb2RlID09PSA0MDApIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nKyAocmVzcG9uc2UuZGV0YWlsIHx8IHJlc3BvbnNlLm1lc3NhZ2UpXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2dpblJlc3BvbnNlID0gcGljYWNnLnBvc3QoJ2F1dGgvc2lnbi1pbicsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogZ2V0SXRlbSgnZW1haWwnLCAnJyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6IGdldEl0ZW0oJ3Bhc3N3b3JkJywgJycpLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmcgPSBnZXRJdGVtKCdlbWFpbCcsICcnKSArICdcXFxcbicgKyBnZXRJdGVtKCdwYXNzd29yZCcsICcnKSArICdcXFxcbicgK2xvZ2luUmVzcG9uc2UuZGF0YS50b2tlblxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKHBpY2FjZy5waWNhY2dfcGF0aCwgc2V0dGluZylcXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0KCfms6jlhozmiJDlip/vvIzlt7Loh6rliqjnmbvlvZUnKVxcbiAgICAgICAgICAgICAgICAgICAgYmFjayh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2FjZy5lbXB0eVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfSxcXG4gICAgZ2V0U2VhcmNoOiAoKSA9PiB7XFxuICAgICAgICBhZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGNsZWFySXRlbSgnc29ydCcpXFxuICAgICAgICAgICAgY2xlYXJJdGVtKCdzZWFyY2hWYWx1ZScpXFxuICAgICAgICAgICAgY2xlYXJJdGVtKCdzZWFyY2hIaXN0b3J5U2hvd1N0YXR1cycpXFxuICAgICAgICB9KSlcXG5cXG4gICAgICAgIGNvbnN0IHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyQkJylbMV1cXG5cXG4gICAgICAgIGlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aQnOe0oicsXFxuICAgICAgICAgICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLnNldFNlYXJjaEhpc3RvcnkoaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCdzZWFyY2hWYWx1ZScsIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn6K+36L6T5YWl5YWz6ZSu6K+NJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHBpY2FjZy5kYXRhLnNlYXJjaFZhbHVlLFxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRJdGVtKCdzZWFyY2hWYWx1ZScsICcnKSAmJiAhIGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbSgnc2VhcmNoVmFsdWUnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3NlYXJjaEhpc3RvcnlTaG93U3RhdHVzJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICBpZiAoISBwaWNhY2cuZGF0YS5zZWFyY2hWYWx1ZSkge1xcbiAgICAgICAgICAgICAgICBpZiAoZmlsZUV4aXN0KHBpY2FjZy5zZWFyY2hIaXN0b3J5KSAmJiBmZXRjaChwaWNhY2cuc2VhcmNoSGlzdG9yeSkpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaEhpc3RvcnkgPSBmZXRjaChwaWNhY2cuc2VhcmNoSGlzdG9yeSkuc3BsaXQoJ3x8JykuZmlsdGVyKGl0ZW0gPT4gaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5pCc57Si6K6w5b2V77yaJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHBpY2FjZy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgICAgICAgICBsZXQgcGljYWNnQ29uZmlnID0gcGljYWNnLmRlZmF1bHRDb25maWdcXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEhpc3RvcnkuZm9yRWFjaCgoaGlzdG9yeSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGljYWNnLmRhdGEuc2VhcmNoSGlzdG9yeVNob3dTdGF0dXMgPT09ICcxJyB8fCAocGljYWNnLmRhdGEuc2VhcmNoSGlzdG9yeVNob3dTdGF0dXMgPT09ICcwJyAmJiBwaWNhY2dDb25maWcuc2VhcmNoSGlzdG9yeVNob3dMaW1pdCAtIGluZGV4ID49IDEpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhpc3RvcnksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZShoaXN0b3J5ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5zZXRTZWFyY2hIaXN0b3J5KGhpc3RvcnkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgnc2VhcmNoVmFsdWUnLCBoaXN0b3J5KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGhpc3RvcnkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBpY2FjZy5kYXRhLnNlYXJjaEhpc3RvcnlTaG93U3RhdHVzID09PSAnMScgPyAn5oqY5Y+g6K6w5b2VJyA6ICflsZXlvIDorrDlvZUnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKHBhcmFtcyA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3NlYXJjaEhpc3RvcnlTaG93U3RhdHVzJywgcGFyYW1zLnN0YXR1cyA/ICcwJyA6ICcxJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBwaWNhY2cuZGF0YS5zZWFyY2hIaXN0b3J5U2hvd1N0YXR1cyA9PT0gJzEnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5riF6Zmk6K6w5b2VJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZShwYXJhbXMgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUocGFyYW1zLmZpbGVuYW1lLCAnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU6IHBpY2FjZy5zZWFyY2hIaXN0b3J5XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICBjb25zdCBob3RfZGF0YSA9IHBpY2FjZy5nZXQoJ2tleXdvcmRzJylcXG4gICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfng63pl6jmkJzntKLvvJonLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwaWNhY2cuZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgaG90X2RhdGEuZGF0YS5rZXl3b3Jkcy5mb3JFYWNoKGhvdCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaG90LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKGhvdCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5zZXRTZWFyY2hIaXN0b3J5KGhvdClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgnc2VhcmNoVmFsdWUnLCBob3QpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaG90KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBwaWNhY2cubWFrZVNvcnQoKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHBpY2FjZy5nZXRTZWFyY2hSZXN1bHQocGFnZSwgJycpXFxuICAgIH0sXFxuICAgIGdldFNlYXJjaFJlc3VsdDogKHBhZ2UsIHZhbHVlKSA9PiB7XFxuICAgICAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IHZhbHVlID8gdmFsdWUgOiBwaWNhY2cuZGF0YS5zZWFyY2hWYWx1ZVxcbiAgICAgICAgaWYgKHNlYXJjaFZhbHVlKSB7XFxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cucG9zdCgnY29taWNzL2FkdmFuY2VkLXNlYXJjaD9wYWdlPScrcGFnZSwge1xcbiAgICAgICAgICAgICAgICBrZXl3b3JkOiBzZWFyY2hWYWx1ZSxcXG4gICAgICAgICAgICAgICAgc29ydDogcGljYWNnLmRhdGEuc29ydCxcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuY29taWNzLmRvY3MuZm9yRWFjaChjb21pYyA9PiB7XFxuICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNvbWljLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogY29taWMuYXV0aG9yLFxcbiAgICAgICAgICAgICAgICAgICAgcGljX3VybDogLypjb21pYy50aHVtYi5maWxlU2VydmVyKyovJ2h0dHBzOi8vc3RvcmFnZS53aWthd2lrYS54eXovc3RhdGljLycrY29taWMudGh1bWIucGF0aCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkrJyNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyQkZnlwYWdlJykucnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5nZXRJbmZvKGlkKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZCk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBjb21pYy5faWQpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIHNldFNlYXJjaEhpc3Rvcnk6IHZhbHVlID0+IHtcXG4gICAgICAgIGxldCBwaWNhY2dDb25maWcgPSBwaWNhY2cuZGVmYXVsdENvbmZpZ1xcbiAgICAgICAgbGV0IHNlYXJjaEhpc3RvcnkgPSBmZXRjaChwaWNhY2cuc2VhcmNoSGlzdG9yeSkuc3BsaXQoJ3x8JykuZmlsdGVyKGl0ZW0gPT4gaXRlbSlcXG5cXG4gICAgICAgIGlmIChzZWFyY2hIaXN0b3J5LmluY2x1ZGVzKHZhbHVlKSkge1xcbiAgICAgICAgICAgIGZvciAobGV0IGkgaW4gc2VhcmNoSGlzdG9yeSkge1xcbiAgICAgICAgICAgICAgICBpZiAoc2VhcmNoSGlzdG9yeVtpXSA9PT0gdmFsdWUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEhpc3Rvcnkuc3BsaWNlKGksIDEpXFxuICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIGlmIChzZWFyY2hIaXN0b3J5Lmxlbmd0aCA+PSBwaWNhY2dDb25maWcuc2VhcmNoSGlzdG9yeU1heCkge1xcbiAgICAgICAgICAgIHNlYXJjaEhpc3RvcnkgPSBzZWFyY2hIaXN0b3J5LnNsaWNlKDAsIHBpY2FjZ0NvbmZpZy5zZWFyY2hIaXN0b3J5TWF4IC0gMSlcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHNlYXJjaEhpc3RvcnkudW5zaGlmdCh2YWx1ZSlcXG4gICAgICAgIHdyaXRlRmlsZShwaWNhY2cuc2VhcmNoSGlzdG9yeSwgc2VhcmNoSGlzdG9yeS5qb2luKCd8fCcpKVxcbiAgICB9LFxcbiAgICBnZXRSYW5raW5nOiAoKSA9PiB7XFxuICAgICAgICBhZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGNsZWFySXRlbSgncmFua1RUJylcXG4gICAgICAgIH0pKVxcbiAgICAgICAgY29uc3QgdGFicyA9IFtcXG4gICAgICAgICAgICB7dGl0bGU6ICcyNOWwj+aXticsIGlkOiAnSDI0J30sXFxuICAgICAgICAgICAge3RpdGxlOiAnN+WkqScsIGlkOiAnRDcnfSxcXG4gICAgICAgICAgICB7dGl0bGU6ICczMOWkqScsIGlkOiAnRDMwJ30sXFxuICAgICAgICBdXFxuICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+aOkuihjOamnCcsXFxuICAgICAgICAgICAgdXJsOiBwaWNhY2cuZW1wdHksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgfSlcXG4gICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgIH0pXFxuICAgICAgICB0YWJzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwaWNhY2cuZGF0YS5yYW5rVFQgPT09IGl0ZW0uaWQgPyAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiI2ZmMTQ5M1xcXCI+JytpdGVtLnRpdGxlKyc8L2ZvbnQ+PC9zdHJvbmc+JyA6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCdyYW5rVFQnLCBpdGVtLmlkKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMycsXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICB9KVxcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cuZ2V0KCdjb21pY3MvbGVhZGVyYm9hcmQ/dHQ9JytwaWNhY2cuZGF0YS5yYW5rVFQrJyZjdD1WQycpXFxuXFxuICAgICAgICByZXNwb25zZS5kYXRhLmNvbWljcy5mb3JFYWNoKGNvbWljID0+IHtcXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNvbWljLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBjb21pYy5hdXRob3IsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IC8qY29taWMudGh1bWIuZmlsZVNlcnZlcisqLydodHRwczovL3N0b3JhZ2Uud2lrYXdpa2EueHl6L3N0YXRpYy8nK2NvbWljLnRodW1iLnBhdGgsXFxuICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkrJyNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyQkZnlwYWdlJykucnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZ2V0SW5mbyhpZClcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZCk7XFxuICAgICAgICAgICAgICAgIH0sIGNvbWljLl9pZCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMydcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfSxcXG4gICAgZ2V0UmFuZG9tOiAoKSA9PiB7XFxuICAgICAgICBjb25zdCBwYWdlID0gTVlfVVJMLnNwbGl0KCckJCcpWzFdXFxuICAgICAgICBpZiAocGFyc2VJbnQocGFnZSkgPT09IDEpIHtcXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfpmo/mnLrmnKzlrZAnLFxcbiAgICAgICAgICAgICAgICB1cmw6IHBpY2FjZy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cuZ2V0KCdjb21pY3MvcmFuZG9tP3BhZ2U9JytwYWdlKVxcbiAgICAgICAgcmVzcG9uc2UuZGF0YS5jb21pY3MuZm9yRWFjaChjb21pYyA9PiB7XFxuICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBjb21pYy50aXRsZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogY29taWMuYXV0aG9yLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiAvKmNvbWljLnRodW1iLmZpbGVTZXJ2ZXIrKi8naHR0cHM6Ly9zdG9yYWdlLndpa2F3aWthLnh5ei9zdGF0aWMvJytjb21pYy50aHVtYi5wYXRoLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KycjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMkJGZ5cGFnZScpLnJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmdldEluZm8oaWQpXFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpO1xcbiAgICAgICAgICAgICAgICB9LCBjb21pYy5faWQpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH0sXFxuICAgIGdldEZhdm91cml0ZTogKCkgPT4ge1xcbiAgICAgICAgY29uc3QgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnJCQnKVsxXVxcbiAgICAgICAgaWYgKHBhcnNlSW50KHBhZ2UpID09PSAxKSB7XFxuICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5oiR55qE5pS26JePJyxcXG4gICAgICAgICAgICAgICAgdXJsOiBwaWNhY2cuZW1wdHksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcGljYWNnLmdldCgndXNlcnMvZmF2b3VyaXRlP3M9ZGQmcGFnZT0nK3BhZ2UpXFxuICAgICAgICByZXNwb25zZS5kYXRhLmNvbWljcy5kb2NzLmZvckVhY2goY29taWMgPT4ge1xcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogY29taWMudGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGNvbWljLmF1dGhvcixcXG4gICAgICAgICAgICAgICAgcGljX3VybDogLypjb21pYy50aHVtYi5maWxlU2VydmVyKyovJ2h0dHBzOi8vc3RvcmFnZS53aWthd2lrYS54eXovc3RhdGljLycrY29taWMudGh1bWIucGF0aCxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSsnI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjJCRmeXBhZ2UnKS5ydWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5nZXRJbmZvKGlkKVxcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KHBpY2FjZy5kKTtcXG4gICAgICAgICAgICAgICAgfSwgY29taWMuX2lkKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9LFxcbiAgICBnZXRDYXRlZ29yaWVzOiAoKSA9PiB7XFxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHBpY2FjZy5nZXQoJ2NhdGVnb3JpZXMnKVxcbiAgICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT09IDIwMCkge1xcbiAgICAgICAgICAgIGNvbnN0IG5vX2ltYWdlID0gWyflpKflrrbpg73lnKjnnIsnLCAn6YKj5bm05LuK5aSpJywgJ+WumOaWuemDveWcqOeciyddO1xcbiAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlLCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgcGljID0gbm9faW1hZ2UuaW5jbHVkZXMoY2F0ZS50aXRsZSkgPyAnaHR0cHM6Ly9naXQudHlyYW50Zy5jb20vdHlyYW50Z2VuZXNpcy9oaWtlclZpZXdSdWxlcy9yYXcvbWFzdGVyL2Fzc2V0cy9pbWFnZXMvcGljYS5qcGcnIDogLypjYXRlLnRodW1iLmZpbGVTZXJ2ZXIrKi8naHR0cHM6Ly9zdG9yYWdlLndpa2F3aWthLnh5ei9zdGF0aWMvJytjYXRlLnRodW1iLnBhdGhcXG4gICAgICAgICAgICAgICAgbGV0IGRlc2MgPSBub19pbWFnZS5pbmNsdWRlcyhjYXRlLnRpdGxlKSA/ICcwJyA6ICc1J1xcbiAgICAgICAgICAgICAgICAvLyBsZXQgZGVzYyA9ICczJ1xcbiAgICAgICAgICAgICAgICBpZiAoIWNhdGUuaXNXZWIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjYXRlLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogcGljLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkrJyNub0hpc3RvcnkjJCRmeXBhZ2UnKS5ydWxlKCh0aXRsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZ2V0Q29taWNzKHRpdGxlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNhdGUudGl0bGUpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMydcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9LFxcbiAgICBnZXRDb21pY3M6ICh0aXRsZSkgPT4ge1xcbiAgICAgICAgYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBjbGVhckl0ZW0oJ3NvcnQnKVxcbiAgICAgICAgfSkpXFxuICAgICAgICBjb25zdCBwYWdlID0gTVlfVVJMLnNwbGl0KCckJCcpWzFdXFxuICAgICAgICBpZiAocGFyc2VJbnQocGFnZSkgPT09IDEpIHBpY2FjZy5tYWtlU29ydCgpXFxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHBpY2FjZy5nZXQoJ2NvbWljcz9jPScrZW5jb2RlVVJJQ29tcG9uZW50KHRpdGxlKSsnJnBhZ2U9JytwYWdlKycmcz0nK3BpY2FjZy5kYXRhLnNvcnQpXFxuICAgICAgICBpZiAocmVzcG9uc2UuY29kZSA9PT0gMjAwKSB7XFxuICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5jb21pY3MuZG9jcy5mb3JFYWNoKChjb21pYywgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogY29taWMudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBjb21pYy5hdXRob3IsXFxuICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiAvKmNvbWljLnRodW1iLmZpbGVTZXJ2ZXIrKi8naHR0cHM6Ly9zdG9yYWdlLndpa2F3aWthLnh5ei9zdGF0aWMvJytjb21pYy50aHVtYi5wYXRoLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSsnI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjJCRmeXBhZ2UnKS5ydWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmdldEluZm8oaWQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KHBpY2FjZy5kKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIGNvbWljLl9pZCksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgZ2V0RXBpc29kZXNQaWN0dXJlOiAoaWQsIHBhZ2UpID0+IHtcXG4gICAgICAgIGNvbnN0IGVwaXNvZGVzUmVzID0gcGljYWNnLmdldCgnY29taWNzLycraWQrJy9lcHM/cGFnZT0nK3BhZ2UpXFxuICAgICAgICBpZiAoZXBpc29kZXNSZXMuY29kZSA9PT0gMjAwICYmIGVwaXNvZGVzUmVzLmRhdGEuZXBzLmRvY3MubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgIGVwaXNvZGVzUmVzLmRhdGEuZXBzLmRvY3MuZm9yRWFjaCgoZXAsIGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgIHBpY2FjZy5lcGlzb2Rlcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBlcC50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogZXAub3JkZXIsXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBwYWdlID0gcGFnZSsxXFxuICAgICAgICAgICAgcGljYWNnLmdldEVwaXNvZGVzUGljdHVyZShpZCwgcGFnZSlcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgZ2V0SW5mbzogKGlkKSA9PiB7XFxuICAgICAgICBhZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGNsZWFySXRlbSgnaW5mb1RhYicpXFxuICAgICAgICAgICAgY2xlYXJJdGVtKCdpbmZvUmV2ZXJzZScpXFxuICAgICAgICB9KSlcXG4gICAgICAgIGNvbnN0IHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyQkJylbMV1cXG5cXG4gICAgICAgIGlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcGljYWNnLmdldCgnY29taWNzLycraWQpXFxuICAgICAgICAgICAgaWYgKCEgcmVzcG9uc2UuZGF0YSkge1xcbiAgICAgICAgICAgICAgICB0b2FzdCgn5ryr55S75L+h5oGv6ZSZ6K+vJylcXG4gICAgICAgICAgICAgICAgYmFjayhmYWxzZSlcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgY29uc3QgaW5mbyA9IHJlc3BvbnNlLmRhdGEuY29taWNcXG5cXG4gICAgICAgICAgICBzZXRQYWdlVGl0bGUoaW5mby50aXRsZSlcXG5cXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGluZm8udGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6XFxuICAgICAgICAgICAgICAgICAgICAn4pyoIOWIhuexu++8micraW5mby5jYXRlZ29yaWVzLmpvaW4oJyAnKSsnXFxcXG4nK1xcbiAgICAgICAgICAgICAgICAgICAgJ+KdpO+4jyDllpzmrKLvvJonK2luZm8ubGlrZXNDb3VudCsnICAgICDmtY/op4jvvJonK2luZm8udmlld3NDb3VudCsnXFxcXG4nK1xcbiAgICAgICAgICAgICAgICAgICAgJyDor6bmg4XvvJonK2luZm8uZGVzY3JpcHRpb24sXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IC8qaW5mby50aHVtYi5maWxlU2VydmVyKyovJ2h0dHBzOi8vc3RvcmFnZS53aWthd2lrYS54eXovc3RhdGljLycraW5mby50aHVtYi5wYXRoLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5ydWxlKChkZXNjcmlwdGlvbiwgaW1hZ2UpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ+acrOWtkOivpuaDhScpXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpbWFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGltYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCdcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZGVzY3JpcHRpb24sXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsb25nX3RleHQnXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KHBpY2FjZy5kKVxcbiAgICAgICAgICAgICAgICB9LCBpbmZvLmRlc2NyaXB0aW9uLCAvKmluZm8udGh1bWIuZmlsZVNlcnZlcisqLydodHRwczovL3N0b3JhZ2Uud2lrYXdpa2EueHl6L3N0YXRpYy8nK2luZm8udGh1bWIucGF0aCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcXG4gICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5L2c6ICF77yaJytpbmZvLmF1dGhvcixcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6ICdodHRwczovL2dpdC50eXJhbnRnLmNvbS90eXJhbnRnZW5lc2lzL2hpa2VyVmlld1J1bGVzL3Jhdy9tYXN0ZXIvYXNzZXRzL2ltYWdlcy9waWNhLmpwZycsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5K1xcXCIjZnVsbFRoZW1lIyNub0hpc3RvcnkjJCRmeXBhZ2VcXFwiKS5ydWxlKChhdXRob3IpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3NvcnQnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3NlYXJjaFZhbHVlJylcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWdlID0gTVlfVVJMLnNwbGl0KCckJCcpWzFdXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNhY2cuc2V0U2VhcmNoSGlzdG9yeShhdXRob3IpXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KHBhZ2UpID09PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmoIfnrb7mkJzntKLvvJrigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCIjZmYxNDkzXFxcIj4nK2F1dGhvcisnPC9mb250Pjwvc3Ryb25nPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHBpY2FjZy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLm1ha2VTb3J0KClcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmdldFNlYXJjaFJlc3VsdChwYWdlLCBhdXRob3IpXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KHBpY2FjZy5kKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgaW5mby5hdXRob3IpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkuIrkvKDvvJonK2luZm8uX2NyZWF0b3IubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGluZm8uX2NyZWF0b3IuYXZhdGFyID8gLyppbmZvLl9jcmVhdG9yLmF2YXRhci5maWxlU2VydmVyKyovJ2h0dHBzOi8vc3RvcmFnZS53aWthd2lrYS54eXovc3RhdGljLycraW5mby5fY3JlYXRvci5hdmF0YXIucGF0aCA6ICdodHRwczovL2dpdC50eXJhbnRnLmNvbS90eXJhbnRnZW5lc2lzL2hpa2VyVmlld1J1bGVzL3Jhdy9tYXN0ZXIvYXNzZXRzL2ltYWdlcy9waWNhLmpwZycsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5K1xcXCIjZnVsbFRoZW1lIyNub0hpc3RvcnkjJCRmeXBhZ2VcXFwiKS5ydWxlKChuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdzb3J0JylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdzZWFyY2hWYWx1ZScpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnJCQnKVsxXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLnNldFNlYXJjaEhpc3RvcnkobmFtZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQocGFnZSkgPT09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+agh+etvuaQnOe0ou+8muKAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIiNmZjE0OTNcXFwiPicrbmFtZSsnPC9mb250Pjwvc3Ryb25nPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHBpY2FjZy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLm1ha2VTb3J0KClcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmdldFNlYXJjaFJlc3VsdChwYWdlLCBuYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZClcXG4gICAgICAgICAgICAgICAgICAgIH0sIGluZm8uX2NyZWF0b3IubmFtZSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCdcXG4gICAgICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICAgICAgaWYgKGluZm8udGFncy5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICBpbmZvLnRhZ3MuZm9yRWFjaCh0YWcgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGFnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5K1xcXCIjZnVsbFRoZW1lIyNub0hpc3RvcnkjJCRmeXBhZ2VcXFwiKS5ydWxlKCh0YWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdzb3J0JylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3NlYXJjaFZhbHVlJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnJCQnKVsxXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5zZXRTZWFyY2hIaXN0b3J5KHRhZylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+agh+etvuaQnOe0ou+8muKAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIiNmZjE0OTNcXFwiPicrdGFnKyc8L2ZvbnQ+PC9zdHJvbmc+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwaWNhY2cuZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5tYWtlU29ydCgpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZ2V0U2VhcmNoUmVzdWx0KHBhZ2UsIHRhZylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGFnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cXG5cXG4gICAgICAgICAgICAvLyDpgJLlvZLojrflj5bpgInpm4ZcXG4gICAgICAgICAgICBwaWNhY2cuZ2V0RXBpc29kZXNQaWN0dXJlKGlkLCAxKVxcblxcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaW5mby5pc0Zhdm91cml0ZSA/ICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCJyZWRcXFwiPuWPlua2iOaUtuiXjzwvZm9udD48L3N0cm9uZz4nIDogJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIiMwMGJmZmZcXFwiPuaUtuiXjzwvZm9udD48L3N0cm9uZz4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZSgoaWQsIGlzRmF2b3VyaXRlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLnBvc3QoJ2NvbWljcy8nK2lkKycvZmF2b3VyaXRlJywge30pXFxuICAgICAgICAgICAgICAgICAgICB0b2FzdChpc0Zhdm91cml0ZT8n5Y+W5raI5pS26JePJzon5pS26JeP5oiQ5YqfJylcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2FjZy5lbXB0eVxcbiAgICAgICAgICAgICAgICB9LCBpZCwgaW5mby5pc0Zhdm91cml0ZSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpbmZvLmlzTGlrZWQgPyAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwicmVkXFxcIj7lj5bmtojngrnotZ48L2ZvbnQ+PC9zdHJvbmc+JyA6ICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCIjMDBiZmZmXFxcIj7ngrnotZ48L2ZvbnQ+PC9zdHJvbmc+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkubGF6eVJ1bGUoKGlkLCBpc0xpa2VkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLnBvc3QoJ2NvbWljcy8nK2lkKycvbGlrZScsIHt9KVxcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoaXNMaWtlZD8n5Y+W5raI54K56LWeJzon54K56LWe5oiQ5YqfJylcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2FjZy5lbXB0eVxcbiAgICAgICAgICAgICAgICB9LCBpZCwgaW5mby5pc0xpa2VkKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCIjZmYxNDkzXFxcIj7kuIvovb08L2ZvbnQ+PC9zdHJvbmc+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2Rvd25sb2FkLnZpZXcjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI25vUmVmcmVzaCM/cnVsZT3mnKzlnLDotYTmupDnrqHnkIZcXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgY2hhcHRlckxpc3Q6IHBpY2FjZy5lcGlzb2RlcyxcXG4gICAgICAgICAgICAgICAgICAgIGluZm86e1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvb2tOYW1lOiBpbmZvLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVOYW1lOiBNWV9SVUxFLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvb2tUb3BQaWM6ICdodHRwczovL3N0b3JhZ2Uud2lrYXdpa2EueHl6L3N0YXRpYy8nK2luZm8udGh1bWIucGF0aCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUNvZGU6ICQudG9TdHJpbmcoKGlkLCBydWxlTmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2c/cnVsZT0nK3J1bGVOYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGljYWNnLmdldFBpY3R1cmUoaWQsIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlkLCBNWV9SVUxFLnRpdGxlKVxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWaWV3OlxcXCIxXFxcIlxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMycsXFxuICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJ1xcbiAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgY29uc3QgdGFicyA9IFtcXG4gICAgICAgICAgICAgICAge3RpdGxlOiAn56ug6IqCJywgaWQ6ICcxJ30sXFxuICAgICAgICAgICAgICAgIHt0aXRsZTogJ+aOqOiNkCcsIGlkOiAnMid9LFxcbiAgICAgICAgICAgICAgICB7dGl0bGU6ICfnnIvor4TorronLCBpZDogJzMnfSxcXG4gICAgICAgICAgICAgICAge3RpdGxlOiAn5YaZ6K+E6K66JywgaWQ6ICc0J30sXFxuICAgICAgICAgICAgXVxcblxcbiAgICAgICAgICAgIHRhYnMuZm9yRWFjaCh0YWIgPT4ge1xcbiAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwaWNhY2cuZGF0YS5pbmZvVGFiID09PSB0YWIuaWQgPyAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiI2ZmMTQ5M1xcXCI+Jyt0YWIudGl0bGUrJzwvZm9udD48L3N0cm9uZz4nIDogdGFiLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkubGF6eVJ1bGUoKHRhYikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ2luZm9UYWInLCB0YWIuaWQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICAgICAgfSwgdGFiKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80JyxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgIHN3aXRjaCAocGljYWNnLmRhdGEuaW5mb1RhYikge1xcbiAgICAgICAgICAgICAgICBjYXNlICcxJzpcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwaWNhY2cuZGF0YS5pbmZvUmV2ZXJzZSA9PT0gJzEnID8gJ+W9k+WJjeaOkuW6j++8muato+W6jycgOiAn5b2T5YmN5o6S5bqP77ya5YCS5bqPJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZSgoaW5mb1JldmVyc2UpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgnaW5mb1JldmVyc2UnLCBpbmZvUmV2ZXJzZSA/ICcyJyA6ICcxJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBwaWNhY2cuZGF0YS5pbmZvUmV2ZXJzZSA9PT0gJzEnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBwaWNhY2cuZGF0YS5pbmZvUmV2ZXJzZSA9PT0gJzEnID8gcGljYWNnLmVwaXNvZGVzLnJldmVyc2UoKSA6IHBpY2FjZy5lcGlzb2Rlc1xcblxcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5mb3JFYWNoKGVwID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGVwLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZSgoaWQsIG9yZGVyKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2FjZy5nZXRQaWN0dXJlKGlkLCBvcmRlcilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaWQsIGVwLnVybCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICAgICAgY2FzZSAnMic6XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZWNvbW1lbmRhdGlvblJlc3BvbnNlID0gcGljYWNnLmdldCgnY29taWNzLycraWQrJy9yZWNvbW1lbmRhdGlvbicpXFxuICAgICAgICAgICAgICAgICAgICByZWNvbW1lbmRhdGlvblJlc3BvbnNlLmRhdGEuY29taWNzLmZvckVhY2goY29taWMgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogY29taWMudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGNvbWljLmF1dGhvcixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogLypjb21pYy50aHVtYi5maWxlU2VydmVyKyovJ2h0dHBzOi8vc3RvcmFnZS53aWthd2lrYS54eXovc3RhdGljLycrY29taWMudGh1bWIucGF0aCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSsnI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjJCRmeXBhZ2UnKS5ydWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5nZXRJbmZvKGlkKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KHBpY2FjZy5kKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgY29taWMuX2lkKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICAgICAgY2FzZSAnNCc6XFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6K+36L6T5YWl6K+E6K66JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkgc2V0SXRlbSgnY29tbWVudCcsIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aPkOS6pOivhOiuuicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkubGF6eVJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1lbnQgPSBnZXRJdGVtKCdjb21tZW50JywgJycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIGNvbW1lbnQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/or7floavlhpnor4TorronXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZW5kQ29tbWVudFJlc3BvbnNlID0gcGljYWNnLnBvc3QoJ2NvbWljcy8nK2lkKycvY29tbWVudHMnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogY29tbWVudFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZW5kQ29tbWVudFJlc3BvbnNlLmNvZGUgPT09IDIwMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ2luZm9UYWInLCAnMycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6K+E6K665oiQ5YqfJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJysoc2VuZENvbW1lbnRSZXNwb25zZS5tZXNzYWdlIHx8IHNlbmRDb21tZW50UmVzcG9uc2UuZGV0YWlsKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaWQpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICB9XFxuXFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIGlmIChwaWNhY2cuZGF0YS5pbmZvVGFiID09PSAnMycpIHtcXG4gICAgICAgICAgICAgICAgY29uc3QgY29tbWVudHNSZXNwb25zZSA9IHBpY2FjZy5nZXQoJ2NvbWljcy8nK2lkKycvY29tbWVudHM/cGFnZT0nK3BhZ2UpXFxuICAgICAgICAgICAgICAgIGNvbW1lbnRzUmVzcG9uc2UuZGF0YS5jb21tZW50cy5kb2NzLmZvckVhY2goY29tbWVudCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdXNlciA9IGNvbW1lbnQuX3VzZXJcXG4gICAgICAgICAgICAgICAgICAgIGlmICh1c2VyKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB1c2VyLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IHVzZXIuYXZhdGFyID8gLyp1c2VyLmF2YXRhci5maWxlU2VydmVyKyovJ2h0dHBzOi8vc3RvcmFnZS53aWthd2lrYS54eXovc3RhdGljLycrdXNlci5hdmF0YXIucGF0aCA6ICdodHRwczovL2dpdC50eXJhbnRnLmNvbS90eXJhbnRnZW5lc2lzL2hpa2VyVmlld1J1bGVzL3Jhdy9tYXN0ZXIvYXNzZXRzL2ltYWdlcy9waWNhLmpwZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogcGljYWNnLmVtcHR5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNvbW1lbnQuY29udGVudCsnPGJyIC8+JysgJ+KdpO+4jyDllpzmrKLvvJonK2NvbW1lbnQubGlrZXNDb3VudCsnJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IOWbnuWkje+8micrY29tbWVudC5jb21tZW50c0NvdW50LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjb21tZW50LmlzTGlrZWQgPyAn5Y+W5raI54K56LWeJyA6ICfngrnotZ4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNhY2cucG9zdCgnY29tbWVudHMvJytpZCsnL2xpa2UnLCB7fSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mj5DkuqTmiJDlip8nXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgY29tbWVudC5faWQpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJyxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+eci+WbnuWkjScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSsnJCRmeXBhZ2UnKS5ydWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYWdlID0gTVlfVVJMLnNwbGl0KCckJCcpWzFdXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcGljYWNnLmdldCgnY29tbWVudHMvJytpZCsnL2NoaWxkcmVucz9wYWdlPScrcGFnZSlcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5jb21tZW50cy5kb2NzLmZvckVhY2goY29tbWVudCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlciA9IGNvbW1lbnQuX3VzZXJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh1c2VyKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB1c2VyLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IHVzZXIuYXZhdGFyID8gLyp1c2VyLmF2YXRhci5maWxlU2VydmVyKyovJ2h0dHBzOi8vc3RvcmFnZS53aWthd2lrYS54eXovc3RhdGljLycrdXNlci5hdmF0YXIucGF0aCA6ICdodHRwczovL2dpdC50eXJhbnRnLmNvbS90eXJhbnRnZW5lc2lzL2hpa2VyVmlld1J1bGVzL3Jhdy9tYXN0ZXIvYXNzZXRzL2ltYWdlcy9waWNhLmpwZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogcGljYWNnLmVtcHR5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNvbW1lbnQuY29udGVudCsnPGJyIC8+JysgJ+KdpO+4jyDllpzmrKLvvJonK2NvbW1lbnQubGlrZXNDb3VudCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogY29tbWVudC5pc0xpa2VkID8gJ+WPlua2iOeCuei1nicgOiAn54K56LWeJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLnBvc3QoJ2NvbW1lbnRzLycraWQrJy9saWtlJywge30pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5o+Q5Lqk5oiQ5YqfJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNvbW1lbnQuX2lkKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgY29tbWVudC5faWQpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJyxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+WGmeWbnuWkjScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkucnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6K+36L6T5YWl6K+E6K66JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogNSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSBzZXRJdGVtKCdjb21tZW50JywgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aPkOS6pOivhOiuuicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1lbnQgPSBnZXRJdGVtKCdjb21tZW50JywgJycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgY29tbWVudCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6K+35aGr5YaZ6K+E6K66J1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbmRDb21tZW50UmVzcG9uc2UgPSBwaWNhY2cucG9zdCgnY29tbWVudHMvJytpZCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogY29tbWVudFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VuZENvbW1lbnRSZXNwb25zZS5jb2RlID09PSAyMDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2soZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6K+E6K665oiQ5YqfJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycrKHNlbmRDb21tZW50UmVzcG9uc2UubWVzc2FnZSB8fCBzZW5kQ29tbWVudFJlc3BvbnNlLmRldGFpbClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlkKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgY29tbWVudC5faWQpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJyxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAvKnBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5Li+5oqlJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLnBvc3QoJ2NvbWljcy8nK2lkKycvcmVwb3J0Jywge30pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mj5DkuqTmiJDlip8nXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaWQpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80JyxcXG4gICAgICAgICAgICAgICAgICAgIH0pKi9cXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZScsXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuXFxuICAgIH0sXFxuICAgIGdldFJlY3Vyc2lvblBpY3R1cmU6IChpZCwgb3JkZXIsIHBhZ2UpID0+IHtcXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcGljYWNnLmdldCgnY29taWNzLycraWQrJy9vcmRlci8nK29yZGVyKycvcGFnZXM/cGFnZT0nK3BhZ2UpXFxuICAgICAgICBpZiAocmVzcG9uc2UuY29kZSA9PT0gMjAwICYmIHJlc3BvbnNlLmRhdGEucGFnZXMuZG9jcy5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5wYWdlcy5kb2NzLmZvckVhY2goKHBhZ2UsIGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgIC8vIHBpY2FjZy5pbWFnZXMucHVzaChwYWdlLm1lZGlhLmZpbGVTZXJ2ZXIrJy9zdGF0aWMvJytwYWdlLm1lZGlhLnBhdGgpXFxuICAgICAgICAgICAgICAgIHBpY2FjZy5pbWFnZXMucHVzaCgnaHR0cHM6Ly9zdG9yYWdlLndpa2F3aWthLnh5ei9zdGF0aWMvJytwYWdlLm1lZGlhLnBhdGgpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBwYWdlID0gcGFnZSsxXFxuICAgICAgICAgICAgcGljYWNnLmdldFJlY3Vyc2lvblBpY3R1cmUoaWQsIG9yZGVyLCBwYWdlKVxcbiAgICAgICAgfVxcbiAgICB9LFxcbiAgICBnZXRQaWN0dXJlOiAoaWQsIG9yZGVyKSA9PiB7XFxuICAgICAgICAvLyDpgJLlvZLojrflj5blhoXlrrlcXG4gICAgICAgIHBpY2FjZy5nZXRSZWN1cnNpb25QaWN0dXJlKGlkLCBvcmRlciwgMSlcXG4gICAgICAgIHJldHVybiAncGljczovLycrcGljYWNnLmltYWdlcy5qb2luKCcmJicpXFxuICAgIH0sXFxuICAgIG1ha2VTb3J0OiAoKSA9PiB7XFxuICAgICAgICBjb25zdCB0YWJzID0gW1xcbiAgICAgICAgICAgIHt0aXRsZTogJ+m7mOiupOaOkuW6jycsIGlkOiAndWEnfSxcXG4gICAgICAgICAgICB7dGl0bGU6ICfmlrDliLDml6cnLCBpZDogJ2RkJ30sXFxuICAgICAgICAgICAge3RpdGxlOiAn5pen5Yiw5pawJywgaWQ6ICdkYSd9LFxcbiAgICAgICAgICAgIHt0aXRsZTogJ+acgOWkmueIseW/gycsIGlkOiAnbGQnfSxcXG4gICAgICAgICAgICB7dGl0bGU6ICfmnIDlpJrmjIflkI0nLCBpZDogJ3ZkJ30sXFxuICAgICAgICBdO1xcblxcbiAgICAgICAgdGFicy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogcGljYWNnLmRhdGEuc29ydCA9PT0gaXRlbS5pZCA/ICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCIjZmYxNDkzXFxcIj4nK2l0ZW0udGl0bGUrJzwvZm9udD48L3N0cm9uZz4nIDogaXRlbS50aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkubGF6eVJ1bGUoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3NvcnQnLCBpdGVtLmlkKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcblxcbiAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaycsXFxuICAgICAgICB9KVxcbiAgICB9LFxcbiAgICBzZXR0aW5nUGFnZTogKCkgPT4ge1xcbiAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfnrb7liLAnLFxcbiAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cucG9zdCgndXNlcnMvcHVuY2gtaW4nLCB7fSlcXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT09IDIwMCkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+etvuWIsOaIkOWKnydcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nKyAocmVzcG9uc2UubWVzc2FnZSB8fCByZXNwb25zZS5kZXRhaWwpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KVxcbiAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfmiJHnmoTor4TorronLFxcbiAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkrJyQkZnlwYWdlJykucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyQkJylbMV1cXG4gICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cuZ2V0KCd1c2Vycy9teS1jb21tZW50cz9wYWdlPScrcGFnZSlcXG5cXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5jb21tZW50cy5kb2NzLmZvckVhY2goY29tbWVudCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdXNlciA9IGNvbW1lbnQuX3VzZXJcXG4gICAgICAgICAgICAgICAgICAgIGlmICh1c2VyKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB1c2VyLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IHVzZXIuYXZhdGFyID8gLyp1c2VyLmF2YXRhci5maWxlU2VydmVyKyovJ2h0dHBzOi8vc3RvcmFnZS53aWthd2lrYS54eXovc3RhdGljLycrdXNlci5hdmF0YXIucGF0aCA6ICdodHRwczovL2dpdC50eXJhbnRnLmNvbS90eXJhbnRnZW5lc2lzL2hpa2VyVmlld1J1bGVzL3Jhdy9tYXN0ZXIvYXNzZXRzL2ltYWdlcy9waWNhLmpwZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogcGljYWNnLmVtcHR5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNvbW1lbnQuY29udGVudCsnPGJyIC8+JysgJ+KdpO+4jyDllpzmrKLvvJonK2NvbW1lbnQubGlrZXNDb3VudCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogY29tbWVudC5pc0xpa2VkID8gJ+WPlua2iOeCuei1nicgOiAn54K56LWeJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLnBvc3QoJ2NvbW1lbnRzLycraWQrJy9saWtlJywge30pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5o+Q5Lqk5oiQ5YqfJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNvbW1lbnQuX2lkKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+afpeeci+a8q+eUuycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSsnI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjJCRmeXBhZ2UnKS5ydWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZ2V0SW5mbyhpZClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KHBpY2FjZy5kKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBjb21tZW50Ll9jb21pYy5faWQpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZScsXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpXFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSlcXG4gICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6YCA5Ye655m75b2VJyxcXG4gICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgIHdyaXRlRmlsZShwaWNhY2cucGljYWNnX3BhdGgsICcnKVxcbiAgICAgICAgICAgICAgICB0b2FzdCgn6YCA5Ye655m75b2VJylcXG4gICAgICAgICAgICAgICAgYmFjayh0cnVlKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gcGljYWNnLmVtcHR5XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSlcXG4gICAgfSxcXG59XFxuXFxuJC5leHBvcnRzID0gcGljYWNnXCJ9XSIsImljb24iOiJodHRwczovL2dpdC50eXJhbnRnLmNvbS90eXJhbnRnZW5lc2lzL2hpa2VyVmlld1J1bGVzL3Jhdy9tYXN0ZXIvYXNzZXRzL2ltYWdlcy9waWNhLmpwZyJ9
Add Comment
Please, Sign In to add comment