From 4e0467ab554798110e9c8538dfa35e424b5ef786 Mon Sep 17 00:00:00 2001 From: Simon Bennetts Date: Fri, 26 Jun 2026 16:08:20 +0100 Subject: [PATCH] client: updated chrome and firefox exts to v0.2.0 Signed-off-by: Simon Bennetts --- addOns/client/CHANGELOG.md | 1 + .../extensions/zap_browser_extension.xpi | Bin 771035 -> 778191 bytes .../_metadata/verified_contents.json | 2 +- .../js/background.bundle.js | 4 ++-- .../js/contentScript.bundle.js | 4 ++-- .../zap_browser_extension/manifest.json | 2 +- .../zap_browser_extension/options.html | 2 +- .../zap_browser_extension/popup.html | 2 +- 8 files changed, 9 insertions(+), 8 deletions(-) diff --git a/addOns/client/CHANGELOG.md b/addOns/client/CHANGELOG.md index 0f3cc824742..b9b1f34d25c 100644 --- a/addOns/client/CHANGELOG.md +++ b/addOns/client/CHANGELOG.md @@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Reduce duplicated accesses while crawling. - Use adaptive wait by default for page load and action waits while crawling. - Default threads to 1/2 number of cores, max 8. +- Updated Chrome and Firefox extensions to v0.2.0. ### Fixed - Prevent temporary GUI hang when stopping the Client Spider. diff --git a/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension.xpi b/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension.xpi index 9c72402bdfb38bd9c4e90f33c1ec84d1a453aa19..8509f9f93668ad3419247743e79f18d134f8b560 100644 GIT binary patch delta 146438 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 Uaa*+{@|lr@Z{AGurP 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 Dl6v?x delta 139203 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⁡iFd|xuTa_ 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≫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 SN-pK#CxjBZ_E#uk|NjRaJSp7( diff --git a/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/_metadata/verified_contents.json b/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/_metadata/verified_contents.json index 8721e88bbcc..4a8b0a5926d 100644 --- a/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/_metadata/verified_contents.json +++ b/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/_metadata/verified_contents.json @@ -1 +1 @@ -[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJhc3NldHMvZm9udHMvUm9ib3RvLUJvbGQudHRmIiwicm9vdF9oYXNoIjoiQ2l0MFJKbEJjcTJyVlhKYVZYbzBkZEl3N3J0eENJTW9EcHkzbmZhdGtrayJ9LHsicGF0aCI6ImFzc2V0cy9mb250cy9Sb2JvdG8tUmVndWxhci50dGYiLCJyb290X2hhc2giOiJUV054R0hMU1hYd3E5VUdBSEpEeHFDVzNJUkNSWTZOQjhuelZhTzRlUjZJIn0seyJwYXRoIjoiYXNzZXRzL2ljb25zL1pBUF9ieV9DaGVja21hcnhfbG9nby1kYXJrLnBuZyIsInJvb3RfaGFzaCI6IjhoQms3eWpxTVBObGQyZDVnVmxLTDJsY3dGQTZoT2xEYWxRYWltSTY5QTAifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvWkFQX2J5X0NoZWNrbWFyeF9sb2dvLnBuZyIsInJvb3RfaGFzaCI6IjgzT2lrVWJHRHY1dXRHOXZiR3kxZk1TT1VlVnlpMjR4T2hxb0x1bXZfMDgifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvZG9uZS5zdmciLCJyb290X2hhc2giOiJRQnV1N0VHelkyUTRoZzltMmYtUVZrdmtxZmxqa2pKNWNZVlRCX3hMOHhnIn0seyJwYXRoIjoiYXNzZXRzL2ljb25zL2Rvd25sb2FkLnN2ZyIsInJvb3RfaGFzaCI6IkhjMk5LckVFa09pNDFSdEVRVWFNRV80MkU2RFFvRUFMd0pPQmxUdE55VkkifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvaGVscC5zdmciLCJyb290X2hhc2giOiI4LXBaMG9UVkxwcS0zWm1PR21xd0hjaTBkT0d4MVhTX0lSa1FCRE5NdzFFIn0seyJwYXRoIjoiYXNzZXRzL2ljb25zL3BhdXNlLnN2ZyIsInJvb3RfaGFzaCI6IkNRczJiZ3FKaHUzVmdTei1iV215eHlwTm53OUxWb29WZEVDTVQ2TnNlSzQifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvcGxheS5zdmciLCJyb290X2hhc2giOiJvd2FZdklFbVpfMndTVE9saXZqWnNycVUyeklfa0pQWUxXZDVHZThFODg4In0seyJwYXRoIjoiYXNzZXRzL2ljb25zL3JhZGlvLWJ1dHRvbi1vbi1vdXRsaW5lLnN2ZyIsInJvb3RfaGFzaCI6Im1YeWhaOHdqZWlwdTJzTmRVcmRsbV9jTzFGZHVMS2x4ellYaFNfQm9HcEUifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvc2V0dGluZ3Muc3ZnIiwicm9vdF9oYXNoIjoiSzh1bDR5R0hWNVN0ZEc2eFlFZFdldklqZHBOM3p1b0JNUk1GX3dfeDd0ayJ9LHsicGF0aCI6ImFzc2V0cy9pY29ucy9zdG9wLWNpcmNsZS1vdXRsaW5lLnN2ZyIsInJvb3RfaGFzaCI6IlBaWU82UFRLN1Z3eU9CaWVEQXUzd1lTVzZUX2RQSWdCWlN3WGJvS3VuRlkifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvemFwMTI4eDEyOC5wbmciLCJyb290X2hhc2giOiJoVm9JSVh3Tlk1b3RGUHRUZGFCa3IzVFBsLUQyT29qZGoxaUk0NS02Wm9ZIn0seyJwYXRoIjoiYXNzZXRzL2ljb25zL3phcDE2eDE2LnBuZyIsInJvb3RfaGFzaCI6InJoY0hGdF9uMm4xNlBOUlRDa2VHRk9BdndsNElZeC1kTVNvUGxHUmNfU0UifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvemFwMjU2eDI1Ni5wbmciLCJyb290X2hhc2giOiIzYkU3LWNPSXFaOEprOUgwdzBTeU0tTFJlQnI2NndEUGRYWUk3WXVZU2VzIn0seyJwYXRoIjoiYXNzZXRzL2ljb25zL3phcDMyeDMyLnBuZyIsInJvb3RfaGFzaCI6IjZlVkJoazlyc21TOW1nc2JieGtLUkd2SDhwcFkzdUdDaUVDSkdOTVhtUWcifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvemFwNDh4NDgucG5nIiwicm9vdF9oYXNoIjoiMnBJdl9ROG55QXNRY1NJcWZDOXdzei1sUXNXeVN6UTR0ZTN0bk5yRndyMCJ9LHsicGF0aCI6ImFzc2V0cy9pY29ucy96YXA1MTJ4NTEyLnBuZyIsInJvb3RfaGFzaCI6Ii1UazFPckROTUlPT0xSTVNMYS16bW5oVDZFb2NSdWZqeG1TMEMyMUZYWkkifSx7InBhdGgiOiJiYXNpYy5jc3MiLCJyb290X2hhc2giOiItUWRSVDNFYmxYOTdwSzVxV1NuR3JJdmwwbjhMbVpWZXpCbU5MYnJXVllFIn0seyJwYXRoIjoiY3NzL3BvcHVwLmNzcyIsInJvb3RfaGFzaCI6Ikd1Q2dNT1RLQ09OaGlfQ1BMZUc5TzJwb04ydkZ0Y09vUV9YRGZfdm5saFkifSx7InBhdGgiOiJmODA4MTZhNTQ1NWQxNzFmOTQ4ZC50dGYiLCJyb290X2hhc2giOiJDaXQwUkpsQmNxMnJWWEphVlhvMGRkSXc3cnR4Q0lNb0RweTNuZmF0a2trIn0seyJwYXRoIjoiZmMyYjUwNjBmN2FjY2VjNWNmNzQudHRmIiwicm9vdF9oYXNoIjoiVFdOeEdITFNYWHdxOVVHQUhKRHhxQ1czSVJDUlk2TkI4bnpWYU80ZVI2SSJ9LHsicGF0aCI6ImhlbHAuaHRtbCIsInJvb3RfaGFzaCI6IlpoTnZ2a1R5amJuSHhjNE9Gc0F5eUE5NzEzR1NuQmNxVEdoa2tJNmtzZXcifSx7InBhdGgiOiJqcy9iYWNrZ3JvdW5kLmJ1bmRsZS5qcyIsInJvb3RfaGFzaCI6IkZWZ0d6SG1HbndoZHJOdzR5WXEzcVRoUUVYZlNMbFVmOGpEcFZLQ2xMUlkifSx7InBhdGgiOiJqcy9jb250ZW50U2NyaXB0LmJ1bmRsZS5qcyIsInJvb3RfaGFzaCI6IjFfT0xMVXRzcnhrck5YbjZ5M2tZZzZ6a1o0VG1XMWFpSmtmN0hYYlpSS1kifSx7InBhdGgiOiJqcy9vcHRpb25zLmJ1bmRsZS5qcyIsInJvb3RfaGFzaCI6IkkwRFlnVFZab2NxQWdRWnQtRUhpQjNqTXhtUWxDTmVhaDJHMjBWbWU4VGsifSx7InBhdGgiOiJqcy9wb3B1cC5idW5kbGUuanMiLCJyb290X2hhc2giOiJNcERNTzk3TTlzUlNPQU1Ia1Q4ZGg1T0V1RkxfZDI3SkZ5RlRBdktmdC1VIn0seyJwYXRoIjoibWFuaWZlc3QuanNvbiIsInJvb3RfaGFzaCI6ImxBWTJTTE5NOGFjYzRxWnlwUk9saWpCcm5oNS1VdUxUZDJhb3oyRi1pcGcifSx7InBhdGgiOiJvcHRpb25zLmh0bWwiLCJyb290X2hhc2giOiJxRmJtaTZxS0JRSFZLbzFEdHFxY01LUEFwVU1wWGoxVmVYbzdsNVhCeUlrIn0seyJwYXRoIjoicG9wdXAuaHRtbCIsInJvb3RfaGFzaCI6IlNQQmFTbUFocDhDQ0QtOEJjLWwycnJCeUJ2WmhkZEpSM1ZlR3pONzZQTlEifV0sImZvcm1hdCI6InRyZWVoYXNoIiwiaGFzaF9ibG9ja19zaXplIjo0MDk2fV0sIml0ZW1faWQiOiJjZ2tnZ21pbGxibW1wb2tlcG5pY2xsYWxhb2hwaGZmbyIsIml0ZW1fdmVyc2lvbiI6IjAuMS45IiwicHJvdG9jb2xfdmVyc2lvbiI6MX0","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"K3UAK_0u0viXX77H7f3LsEEPlLQFgzSP4GQTHE61VBt8PL1ypcj_a1-x-9KVFIaoMbgO1SPiepQuf1qgUJECTl2CPawgr510cilycCcs0bmGQUwvyO2YUfAOX-MLRk_iTTqIsF2GQ3QvG6y59kI0XJVmh6nkkGOUepWdaPe_dV47vd95meoxtJpVAKTqvLRB2bloloHjkulF1ZjenBmHY7F4U8usbCgQefdn45VfXyw5R_6dAf9wKO2pi4WlvRg0Fc16lu7-MuQ_tgFIbfyiQAqKHLZM2I70zMaybI5CG_nIMQtNbKvZT8BYmDSfcZCjH84AN74RNfE9z9-P-mfNtw"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"K3dpbp4exct2Qv2DAXebx9WDUu0j21y3GRbHZ0IyaCtvVR6hJKKd-qEgYjqTExku2hxVbYNHBMTC1jTomqvuT8chjfGkLgSmzwFsNVj7vRfFEWJxuzJ-Ed0ogQDDz3FTdepxFqBrrgteXUQ-9JPtFLWnWykt-ygn418UDETw66khmEgN9klpgjy3cbtP9AjBfa9iEs2uprFK4Ofi6rXauUgTZQWeJ50T7xUMTknhigXVY_kKjTBUJlT46tUWPh5mHHTMyzfjxBmjvE8dONlP-uH7MeyvHdhYj1u8wvXFA2m8UOVEEMvULT_gSFjWwj5jkbT9r56_f0nTBLmyJ-_FEw"}]}}] \ No newline at end of file +[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJhc3NldHMvZm9udHMvUm9ib3RvLUJvbGQudHRmIiwicm9vdF9oYXNoIjoiQ2l0MFJKbEJjcTJyVlhKYVZYbzBkZEl3N3J0eENJTW9EcHkzbmZhdGtrayJ9LHsicGF0aCI6ImFzc2V0cy9mb250cy9Sb2JvdG8tUmVndWxhci50dGYiLCJyb290X2hhc2giOiJUV054R0hMU1hYd3E5VUdBSEpEeHFDVzNJUkNSWTZOQjhuelZhTzRlUjZJIn0seyJwYXRoIjoiYXNzZXRzL2ljb25zL1pBUF9ieV9DaGVja21hcnhfbG9nby1kYXJrLnBuZyIsInJvb3RfaGFzaCI6IjhoQms3eWpxTVBObGQyZDVnVmxLTDJsY3dGQTZoT2xEYWxRYWltSTY5QTAifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvWkFQX2J5X0NoZWNrbWFyeF9sb2dvLnBuZyIsInJvb3RfaGFzaCI6IjgzT2lrVWJHRHY1dXRHOXZiR3kxZk1TT1VlVnlpMjR4T2hxb0x1bXZfMDgifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvZG9uZS5zdmciLCJyb290X2hhc2giOiJRQnV1N0VHelkyUTRoZzltMmYtUVZrdmtxZmxqa2pKNWNZVlRCX3hMOHhnIn0seyJwYXRoIjoiYXNzZXRzL2ljb25zL2Rvd25sb2FkLnN2ZyIsInJvb3RfaGFzaCI6IkhjMk5LckVFa09pNDFSdEVRVWFNRV80MkU2RFFvRUFMd0pPQmxUdE55VkkifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvaGVscC5zdmciLCJyb290X2hhc2giOiI4LXBaMG9UVkxwcS0zWm1PR21xd0hjaTBkT0d4MVhTX0lSa1FCRE5NdzFFIn0seyJwYXRoIjoiYXNzZXRzL2ljb25zL3BhdXNlLnN2ZyIsInJvb3RfaGFzaCI6IkNRczJiZ3FKaHUzVmdTei1iV215eHlwTm53OUxWb29WZEVDTVQ2TnNlSzQifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvcGxheS5zdmciLCJyb290X2hhc2giOiJvd2FZdklFbVpfMndTVE9saXZqWnNycVUyeklfa0pQWUxXZDVHZThFODg4In0seyJwYXRoIjoiYXNzZXRzL2ljb25zL3JhZGlvLWJ1dHRvbi1vbi1vdXRsaW5lLnN2ZyIsInJvb3RfaGFzaCI6Im1YeWhaOHdqZWlwdTJzTmRVcmRsbV9jTzFGZHVMS2x4ellYaFNfQm9HcEUifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvc2V0dGluZ3Muc3ZnIiwicm9vdF9oYXNoIjoiSzh1bDR5R0hWNVN0ZEc2eFlFZFdldklqZHBOM3p1b0JNUk1GX3dfeDd0ayJ9LHsicGF0aCI6ImFzc2V0cy9pY29ucy9zdG9wLWNpcmNsZS1vdXRsaW5lLnN2ZyIsInJvb3RfaGFzaCI6IlBaWU82UFRLN1Z3eU9CaWVEQXUzd1lTVzZUX2RQSWdCWlN3WGJvS3VuRlkifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvemFwMTI4eDEyOC5wbmciLCJyb290X2hhc2giOiJoVm9JSVh3Tlk1b3RGUHRUZGFCa3IzVFBsLUQyT29qZGoxaUk0NS02Wm9ZIn0seyJwYXRoIjoiYXNzZXRzL2ljb25zL3phcDE2eDE2LnBuZyIsInJvb3RfaGFzaCI6InJoY0hGdF9uMm4xNlBOUlRDa2VHRk9BdndsNElZeC1kTVNvUGxHUmNfU0UifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvemFwMjU2eDI1Ni5wbmciLCJyb290X2hhc2giOiIzYkU3LWNPSXFaOEprOUgwdzBTeU0tTFJlQnI2NndEUGRYWUk3WXVZU2VzIn0seyJwYXRoIjoiYXNzZXRzL2ljb25zL3phcDMyeDMyLnBuZyIsInJvb3RfaGFzaCI6IjZlVkJoazlyc21TOW1nc2JieGtLUkd2SDhwcFkzdUdDaUVDSkdOTVhtUWcifSx7InBhdGgiOiJhc3NldHMvaWNvbnMvemFwNDh4NDgucG5nIiwicm9vdF9oYXNoIjoiMnBJdl9ROG55QXNRY1NJcWZDOXdzei1sUXNXeVN6UTR0ZTN0bk5yRndyMCJ9LHsicGF0aCI6ImFzc2V0cy9pY29ucy96YXA1MTJ4NTEyLnBuZyIsInJvb3RfaGFzaCI6Ii1UazFPckROTUlPT0xSTVNMYS16bW5oVDZFb2NSdWZqeG1TMEMyMUZYWkkifSx7InBhdGgiOiJiYXNpYy5jc3MiLCJyb290X2hhc2giOiItUWRSVDNFYmxYOTdwSzVxV1NuR3JJdmwwbjhMbVpWZXpCbU5MYnJXVllFIn0seyJwYXRoIjoiY3NzL3BvcHVwLmNzcyIsInJvb3RfaGFzaCI6Ikd1Q2dNT1RLQ09OaGlfQ1BMZUc5TzJwb04ydkZ0Y09vUV9YRGZfdm5saFkifSx7InBhdGgiOiJmODA4MTZhNTQ1NWQxNzFmOTQ4ZC50dGYiLCJyb290X2hhc2giOiJDaXQwUkpsQmNxMnJWWEphVlhvMGRkSXc3cnR4Q0lNb0RweTNuZmF0a2trIn0seyJwYXRoIjoiZmMyYjUwNjBmN2FjY2VjNWNmNzQudHRmIiwicm9vdF9oYXNoIjoiVFdOeEdITFNYWHdxOVVHQUhKRHhxQ1czSVJDUlk2TkI4bnpWYU80ZVI2SSJ9LHsicGF0aCI6ImhlbHAuaHRtbCIsInJvb3RfaGFzaCI6IlpoTnZ2a1R5amJuSHhjNE9Gc0F5eUE5NzEzR1NuQmNxVEdoa2tJNmtzZXcifSx7InBhdGgiOiJqcy9iYWNrZ3JvdW5kLmJ1bmRsZS5qcyIsInJvb3RfaGFzaCI6ImVfdGlIMjk1eVkxeUdTM1RZZW1CdXpGVkw3Z3dxam5oMkZhN1dUaC1NVWcifSx7InBhdGgiOiJqcy9jb250ZW50U2NyaXB0LmJ1bmRsZS5qcyIsInJvb3RfaGFzaCI6ImMzXzlHV014X2d2aWNCWk52MkxuclhOUDI4WFZPSHVFb0JxMFp0bExZSWMifSx7InBhdGgiOiJqcy9vcHRpb25zLmJ1bmRsZS5qcyIsInJvb3RfaGFzaCI6IkkwRFlnVFZab2NxQWdRWnQtRUhpQjNqTXhtUWxDTmVhaDJHMjBWbWU4VGsifSx7InBhdGgiOiJqcy9wb3B1cC5idW5kbGUuanMiLCJyb290X2hhc2giOiJNcERNTzk3TTlzUlNPQU1Ia1Q4ZGg1T0V1RkxfZDI3SkZ5RlRBdktmdC1VIn0seyJwYXRoIjoibWFuaWZlc3QuanNvbiIsInJvb3RfaGFzaCI6Ikg2bmpBTkxuYVE5aDNWaXFnQnFYVFFvR3RDNElGbU9KV3YwZnd3MVZ1MzgifSx7InBhdGgiOiJvcHRpb25zLmh0bWwiLCJyb290X2hhc2giOiJiRXpPVXhfaVpsdnZMYVBnV1lFM1ZfTmNCLVVudUVGLW5wUUs1OGV0RlhnIn0seyJwYXRoIjoicG9wdXAuaHRtbCIsInJvb3RfaGFzaCI6IlJYOThXUHJ1Ty00Q3JQX1RRdjNfUWcyX1BKYVI0QlE2a1QyNFNpTGw1VU0ifV0sImZvcm1hdCI6InRyZWVoYXNoIiwiaGFzaF9ibG9ja19zaXplIjo0MDk2fV0sIml0ZW1faWQiOiJjZ2tnZ21pbGxibW1wb2tlcG5pY2xsYWxhb2hwaGZmbyIsIml0ZW1fdmVyc2lvbiI6IjAuMi4wIiwicHJvdG9jb2xfdmVyc2lvbiI6MX0","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"vZYt4uGBXFJdS5i4bkgca-4hly4cZxUO0miT2uiV2zVm3yCraqIZRzaFbEKLrfAFUO4Gb5hk1jpoL_BIc2coP_psiW-FnMFG4jk4p0wD7fx0BBJZoHDyGiuaWTQuKKQOS1JBNqu-DtFMHkgVyVW7T5VpQT4mQdirlelWORkZBFTcyGjvFJAAOiP4ZL7u3mr6ASL5qXaB58beJ5mtpco4eBv9YUCgbMR3hPngWnxXwk5t88AGpGm7B2-1BIUp2xMV53zPq1g8JvGQdayiqK5H40TzYe8iGliG9LZs0HtIXjB2RJow3KVgHdeo_mBthyT4cvLbeN1uE1WLHlbZULMPcQ"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"dH_fIiTUCpokXm8e9l6gHa2HWsnI7hJcpdPIuG02oG150X4Q6O8h3kg959TxXeT_Ew0OcYgDghIGXWxzzW88bKuifMb6RGF_0EkMi0g-2Zv3NXVwwPjC3EWcR8FItprtFTSo9Pr6vGSEBcBdIu0ccrkYmQ9GKDJGIbO-mZwta3_dza_YhP4dd8lmUK3Th0u529G8RJIurMtqWjmwnZx3lfB34rjJJYDXgg0T56_e13o3ItQ_5ugrCslvDYNtGxjSMDNWEzpTY3Ovu30XSPsXID4NU5QnnvvK7U9u5udIHLRooZOxBXqDm5vOvGBCAh5hjSpfjaATZJzTI7SV_nr4sg"}]}}] \ No newline at end of file diff --git a/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/js/background.bundle.js b/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/js/background.bundle.js index b3395ffd79f..3bb34273abc 100644 --- a/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/js/background.bundle.js +++ b/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/js/background.bundle.js @@ -1,2 +1,2 @@ -(()=>{var e={586(e,r){"use strict";var t;function n(e,r="🐶",n){const s=(a=e)&&(null==a?void 0:a.stack)&&(null==a?void 0:a.message)&&"string"==typeof a.stack&&"string"==typeof a.message;var a;const o=s?e.message:e,i=n||(null==e?void 0:e.toString().length)*t.LINE_LENGTH_VARIABLE||t.DEFAULT_LINE_LENGTH;console.log(`\n /‾${"‾‾".repeat(i)}‾\n ${r} < `,o,`\n \\_${"__".repeat(i)}_\n `),s&&("undefined"!=typeof window?(console.groupCollapsed(`${r} > Stack Trace:`),console.error(e.stack),console.groupEnd()):(console.log(`${r} > Stack Trace:`),console.error(e.stack)))}(function(e){e[e.LINE_LENGTH_VARIABLE=.66]="LINE_LENGTH_VARIABLE",e[e.DEFAULT_LINE_LENGTH=4]="DEFAULT_LINE_LENGTH",e[e.ONE=1]="ONE",e[e.TWO=2]="TWO",e[e.THREE=3]="THREE"})(t||(t={})),console.emoji=function(...e){const r=[];return r[0]=function(){return n("Meow","🐱"),this},r[t.ONE]=function(e){return n(e),this},r[t.TWO]=function(e,r){return n(r,e),this},r[t.THREE]=function(e,r,t){return n(r,e,t),this},this.emoji=function(...e){return r[e.length](...e),this},this.emoji(...e),this}},815(e,r){var t,n,s;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,n=[e],t=function(e){"use strict";if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw new Error("This script should only be loaded in a browser extension.");if(globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id)e.exports=globalThis.browser;else{const r="The message port closed before a response was received.",t=e=>{const t={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(t).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class n extends WeakMap{constructor(e,r=void 0){super(r),this.createItem=e}get(e){return this.has(e)||this.set(e,this.createItem(e)),super.get(e)}}const s=e=>e&&"object"==typeof e&&"function"==typeof e.then,a=(r,t)=>(...n)=>{e.runtime.lastError?r.reject(new Error(e.runtime.lastError.message)):t.singleCallbackArg||n.length<=1&&!1!==t.singleCallbackArg?r.resolve(n[0]):r.resolve(n)},o=e=>1==e?"argument":"arguments",i=(e,r)=>function(t,...n){if(n.lengthr.maxArgs)throw new Error(`Expected at most ${r.maxArgs} ${o(r.maxArgs)} for ${e}(), got ${n.length}`);return new Promise((s,o)=>{if(r.fallbackToNoCallback)try{t[e](...n,a({resolve:s,reject:o},r))}catch(a){console.warn(`${e} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `,a),t[e](...n),r.fallbackToNoCallback=!1,r.noCallback=!0,s()}else r.noCallback?(t[e](...n),s()):t[e](...n,a({resolve:s,reject:o},r))})},g=(e,r,t)=>new Proxy(r,{apply:(r,n,s)=>t.call(n,e,...s)});let m=Function.call.bind(Object.prototype.hasOwnProperty);const l=(e,r={},t={})=>{let n=Object.create(null),s={has:(r,t)=>t in e||t in n,get(s,a,o){if(a in n)return n[a];if(!(a in e))return;let c=e[a];if("function"==typeof c)if("function"==typeof r[a])c=g(e,e[a],r[a]);else if(m(t,a)){let r=i(a,t[a]);c=g(e,e[a],r)}else c=c.bind(e);else if("object"==typeof c&&null!==c&&(m(r,a)||m(t,a)))c=l(c,r[a],t[a]);else{if(!m(t,"*"))return Object.defineProperty(n,a,{configurable:!0,enumerable:!0,get:()=>e[a],set(r){e[a]=r}}),c;c=l(c,r[a],t["*"])}return n[a]=c,c},set:(r,t,s,a)=>(t in n?n[t]=s:e[t]=s,!0),defineProperty:(e,r,t)=>Reflect.defineProperty(n,r,t),deleteProperty:(e,r)=>Reflect.deleteProperty(n,r)},a=Object.create(e);return new Proxy(a,s)},c=e=>({addListener(r,t,...n){r.addListener(e.get(t),...n)},hasListener:(r,t)=>r.hasListener(e.get(t)),removeListener(r,t){r.removeListener(e.get(t))}}),A=new n(e=>"function"!=typeof e?e:function(r){const t=l(r,{},{getContent:{minArgs:0,maxArgs:0}});e(t)}),u=new n(e=>"function"!=typeof e?e:function(r,t,n){let a,o,i=!1,g=new Promise(e=>{a=function(r){i=!0,e(r)}});try{o=e(r,t,a)}catch(e){o=Promise.reject(e)}const m=!0!==o&&s(o);if(!0!==o&&!m&&!i)return!1;const l=e=>{e.then(e=>{n(e)},e=>{let r;r=e&&(e instanceof Error||"string"==typeof e.message)?e.message:"An unexpected error occurred",n({__mozWebExtensionPolyfillReject__:!0,message:r})}).catch(e=>{console.error("Failed to send onMessage rejected reply",e)})};return l(m?o:g),!0}),d=({reject:t,resolve:n},s)=>{e.runtime.lastError?e.runtime.lastError.message===r?n():t(new Error(e.runtime.lastError.message)):s&&s.__mozWebExtensionPolyfillReject__?t(new Error(s.message)):n(s)},p=(e,r,t,...n)=>{if(n.lengthr.maxArgs)throw new Error(`Expected at most ${r.maxArgs} ${o(r.maxArgs)} for ${e}(), got ${n.length}`);return new Promise((e,r)=>{const s=d.bind(null,{resolve:e,reject:r});n.push(s),t.sendMessage(...n)})},f={devtools:{network:{onRequestFinished:c(A)}},runtime:{onMessage:c(u),onMessageExternal:c(u),sendMessage:p.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:p.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},x={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return t.privacy={network:{"*":x},services:{"*":x},websites:{"*":x}},l(e,f,t)};e.exports=t(chrome)}},void 0===(s="function"==typeof t?t.apply(r,n):t)||(e.exports=s)}},r={};function t(n){var s=r[n];if(void 0!==s)return s.exports;var a=r[n]={exports:{}};return e[n].call(a.exports,a,a.exports,t),a.exports}t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{"use strict";t(586);var e=t(815),r=t.n(e);class n{constructor(e,r,t,n,s,a){this.timestamp=Date.now(),this.type=e,this.tagName=r,this.id=t,this.nodeName=n,this.text=s,this.url=a}toString(){return JSON.stringify(this)}toShortString(){return JSON.stringify(this,function(e,r){if("xpath"!==e)return r})}toNonTimestampString(){return JSON.stringify(this,function(e,r){if("timestamp"!==e)return r})}}class s extends n{toShortString(){return JSON.stringify(this,function(e,r){if("xpath"!==e&&"href"!==e&&"timestamp"!==e&&("url"!==e||"cookies"===this.type))return r})}}function a(e,r,t){return(r=function(e){var r=function(e,r){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,r||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"==typeof r?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var o=void 0===r().runtime.getManifest||"ZAP by Checkmarx Browser Extension"===r().runtime.getManifest().name,i="windowHandle1",g="reportEvent",m="reportObject";class l{constructor(e){this.elementType=e,this.index=-1}}class c extends l{constructor(e,r=i){super("ZestClientWindowClose"),this.sleepInSeconds=e,this.windowHandle=r}toJSON(){return JSON.stringify({windowHandle:this.windowHandle,index:this.index,sleepInSeconds:this.sleepInSeconds,enabled:!0,elementType:this.elementType})}}function A(){var e,r,t="function"==typeof Symbol?Symbol:{},n=t.iterator||"@@iterator",s=t.toStringTag||"@@toStringTag";function a(t,n,s,a){var g=n&&n.prototype instanceof i?n:i,m=Object.create(g.prototype);return u(m,"_invoke",function(t,n,s){var a,i,g,m=0,l=s||[],c=!1,A={p:0,n:0,v:e,a:u,f:u.bind(e,4),d:function(r,t){return a=r,i=0,g=e,A.n=t,o}};function u(t,n){for(i=t,g=n,r=0;!c&&m&&!s&&r3?(s=d===n)&&(g=a[(i=a[4])?5:(i=3,3)],a[4]=a[5]=e):a[0]<=u&&((s=t<2&&un||n>d)&&(a[4]=t,a[5]=n,A.n=d,i=0))}if(s||t>1)return o;throw c=!0,n}return function(s,l,d){if(m>1)throw TypeError("Generator is already running");for(c&&1===l&&u(l,d),i=l,g=d;(r=i<2?e:g)||!c;){a||(i?i<3?(i>1&&(A.n=-1),u(i,g)):A.n=g:A.v=g);try{if(m=2,a){if(i||(s="next"),r=a[s]){if(!(r=r.call(a,g)))throw TypeError("iterator result is not an object");if(!r.done)return r;g=r.value,i<2&&(i=0)}else 1===i&&(r=a.return)&&r.call(a),i<2&&(g=TypeError("The iterator does not provide a '"+s+"' method"),i=1);a=e}else if((r=(c=A.n<0)?g:t.call(n,A))!==o)break}catch(r){a=e,i=1,g=r}finally{m=1}}return{value:r,done:c}}}(t,s,a),!0),m}var o={};function i(){}function g(){}function m(){}r=Object.getPrototypeOf;var l=[][n]?r(r([][n]())):(u(r={},n,function(){return this}),r),c=m.prototype=i.prototype=Object.create(l);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,u(e,s,"GeneratorFunction")),e.prototype=Object.create(c),e}return g.prototype=m,u(c,"constructor",m),u(m,"constructor",g),g.displayName="GeneratorFunction",u(m,s,"GeneratorFunction"),u(c),u(c,s,"Generator"),u(c,n,function(){return this}),u(c,"toString",function(){return"[object Generator]"}),(A=function(){return{w:a,m:d}})()}function u(e,r,t,n){var s=Object.defineProperty;try{s({},"",{})}catch(e){s=0}u=function(e,r,t,n){function a(r,t){u(e,r,function(e){return this._invoke(r,t,e)})}r?s?s(e,r,{value:t,enumerable:!n,configurable:!n,writable:!n}):e[r]=t:(a("next",0),a("throw",1),a("return",2))},u(e,r,t,n)}function d(e,r,t,n,s,a,o){try{var i=e[a](o),g=i.value}catch(e){return void t(e)}i.done?r(g):Promise.resolve(g).then(n,s)}function p(e){return function(){var r=this,t=arguments;return new Promise(function(n,s){var a=e.apply(r,t);function o(e){d(a,n,s,o,i,"next",e)}function i(e){d(a,n,s,o,i,"throw",e)}o(void 0)})}}function f(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return x(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?x(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0,s=function(){};return{s,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,i=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return o=e.done,e},e:function(e){i=!0,a=e},f:function(){try{o||null==t.return||t.return()}finally{if(i)throw a}}}}function x(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);tJSON.parse(e)),authentication:[],index:0,enabled:!0,elementType:"ZestScript"};return this.statementDelay>0&&(e.options={statementDelay:String(this.statementDelay)}),JSON.stringify(e,null,2)}getZestScript(){return new Promise(e=>{r().storage.sync.get({zapscriptname:this.title,zapstatementdelay:1e3}).then(r=>{this.title=r.zapscriptname,this.statementDelay=r.zapstatementdelay,e({script:this.toJSON(),title:this.title,statementCount:this.getZestStatementCount()})})})}};function b(e,r){return e.indexOf("/zapCallBackUrl/")>0?e:`${e}JSON/client/action/${r}/`}function v(e){return e.startsWith(".")?`http://${e.substring(1)}`:`http://${e}`}function w(e,t,n){var a=`${e.name}=${e.value}; path=${e.path}; domain=${e.domain}`;return e.expirationDate&&(a=a.concat(`; expires=${new Date(1e3*e.expirationDate).toUTCString()}`)),e.secure&&(a=a.concat("; secure")),"lax"!==e.sameSite&&"strict"!==e.sameSite||(a=a.concat(`; SameSite=${e.sameSite}`)),e.httpOnly&&(a=a.concat("; HttpOnly")),function(e){var t=r().tabs.query({currentWindow:!0});return new Promise((n,s)=>{t.then(t=>{var s,a=f(t);try{var o=function(){var t=s.value;t.url&&r().cookies.getAll({url:t.url}).then(r=>{var s,a=f(r);try{for(a.s();!(s=a.n()).done;){var o=s.value;o.name===e.name&&o.value===e.value&&o.domain===e.domain&&o.storeId===e.storeId&&n(t.url?t.url:v(e.domain))}}catch(e){a.e(e)}finally{a.f()}})};for(a.s();!(s=a.n()).done;)o()}catch(e){a.e(e)}finally{a.f()}}).catch(r=>{console.error(`Could not fetch tabs: ${r.message}`),s(v(e.domain))})})}(e).then(r=>{var o=new s("Cookies","",e.name,"",a,r),i=o.toShortString();if(!h.has(i)&&o.url.startsWith("http")){var g=`objectJson=${encodeURIComponent(o.toString())}&apikey=${encodeURIComponent(n)}`;fetch(b(t,m),{method:"POST",body:g,headers:{"Content-Type":"application/x-www-form-urlencoded"}}),h.add(i)}}).catch(e=>(console.log(e),!1)),!0}function S(e,r,t){if(o){var n=`statementJson=${encodeURIComponent(e)}&apikey=${encodeURIComponent(r)}`;console.log(`body = ${n}`),fetch(b(t,"reportZestStatement"),{method:"POST",body:n,headers:{"Content-Type":"application/x-www-form-urlencoded"}})}}function k(e,r,t){return T.apply(this,arguments)}function T(){return(T=p(A().m(function e(t,n,a){var o,i,l,u,d,p,f,x;return A().w(function(e){for(;;)switch(e.n){case 0:console.log(`ZAP Service worker calling ZAP on ${n}`),console.log(b(n,m)),console.log(encodeURIComponent(a)),console.log(`Type: ${t.type}`),console.log(`Data: ${t.data}`),x=t.type,e.n=x===m?1:x===g?4:"zestScript"===x?5:"getZestScript"===x?6:"resetZestScript"===x?7:"stopRecording"===x?8:11;break;case 1:if("localStorage"!==(o=JSON.parse(t.data)).type&&"sessionStorage"!==o.type){e.n=3;break}if(i=new s("","","","","",""),Object.assign(i,o),l=i.toShortString(),!h.has(l)){e.n=2;break}return e.a(2,!0);case 2:h.add(l);case 3:return u=`objectJson=${encodeURIComponent(t.data)}&apikey=${encodeURIComponent(a)}`,console.log(`body = ${u}`),fetch(b(n,m),{method:"POST",body:u,headers:{"Content-Type":"application/x-www-form-urlencoded"}}),e.a(3,12);case 4:return d=`eventJson=${encodeURIComponent(t.data)}&apikey=${encodeURIComponent(a)}`,console.log(`body = ${d}`),fetch(b(n,g),{method:"POST",body:d,headers:{"Content-Type":"application/x-www-form-urlencoded"}}),e.a(3,12);case 5:return S(y.addStatement(t.data),a,n),e.a(3,12);case 6:return e.a(2,y.getZestScript());case 7:return y.reset(),e.a(3,12);case 8:if(!(y.getZestStatementCount()>0)){e.n=10;break}return e.n=9,r().storage.sync.get({zapclosewindowhandle:!1});case 9:p=e.v,p.zapclosewindowhandle&&(f=new c(0),S(y.addStatement(f.toJSON()),a,n));case 10:case 11:return e.a(3,12);case 12:return e.a(2,!0)}},e)}))).apply(this,arguments)}function C(){return(C=p(A().m(function e(t,n){var s,a,o;return A().w(function(e){for(;;)switch(e.n){case 0:return s=2,e.n=1,r().storage.sync.get({zapurl:"http://zap/",zapkey:"not set"});case 1:return a=e.v,e.n=2,k(t,a.zapurl,a.zapkey);case 2:return"boolean"!=typeof(o=e.v)&&(s=o),e.a(2,Promise.resolve(s))}},e)}))).apply(this,arguments)}r().runtime.onMessage.addListener(function(e,r){return C.apply(this,arguments)}),o&&(r().action.onClicked.addListener(e=>{r().runtime.openOptionsPage()}),r().cookies.onChanged.addListener(function(e){r().storage.sync.get({zapurl:"http://zap/",zapkey:"not set"}).then(r=>{w(e.cookie,r.zapurl,r.zapkey)})}),r().runtime.onInstalled.addListener(()=>{console.emoji("🦄","extension installed"),r().storage.sync.set({zapurl:"http://zap/",zapkey:"not set"})}))})()})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QWtDLEVBQUNDLEVBQUFoTCxFQUFBLEVBQ25CeUIsSUFBQUEsUUFBZ0J0SixLQUFLdEcsSUFBSSxDQUMzQ3lWLE9BQVEsY0FDUlMsT0FBUSxZQUNSLE9BSFMsT0FBTDVOLEVBQUs2USxFQUFBM0osRUFBQTJKLEVBQUFoTCxFQUFBLEVBSU82SixFQUNoQnRhLEVBQ0E0SyxFQUFNbU4sT0FDTm5OLEVBQU00TixRQUNQLE9BR0EsTUFGb0Isa0JBTGZ0SixFQUFHdU0sRUFBQTNKLEtBTVAwSixFQUFNdE0sR0FDUHVNLEVBQUE1SyxFQUFBLEVBQ003RSxRQUFRTixRQUFROFAsSUFBSSxFQUFBRixFQUFBLEtBQzVCOU8sTUFBQTVMLEtBQUFrVSxVQUFBLENBbUJENUMsSUFBQUEsUUFBZ0JwQyxVQUFVL0IsWUF2Q3pCLFNBRThCMk4sRUFBQUMsR0FBQSxPQUFBTixFQUFBN08sTUFBQTVMLEtBQUFrVSxVQUFBLEdBdUMzQjdDLElBQ0ZDLElBQUFBLE9BQWUwSixVQUFVN04sWUFBYThOLElBQ3BDM0osSUFBQUEsUUFBZ0JuSyxvQkFHbEJtSyxJQUFBQSxRQUFnQjRKLFVBQVUvTixZQXhCNUIsU0FDRWdPLEdBRUE3SixJQUFBQSxRQUFnQnRKLEtBQ2J0RyxJQUFJLENBQ0h5VixPQUFRLGNBQ1JTLE9BQVEsWUFFVHJOLEtBQU1QLElBQ0wwTixFQUNFeUQsRUFBV3hELE9BQ1gzTixFQUFNbU4sT0FDTm5OLEVBQU00TixTQUdkLEdBV0V0RyxJQUFBQSxRQUFnQjhKLFlBQVlqTyxZQUFZLEtBQ3RDMU4sUUFBUVYsTUFBTSxLQUFNLHVCQUNwQnVTLElBQUFBLFFBQWdCdEosS0FBSzVELElBQUksQ0FDdkIrUyxPQUFRLGNBQ1JTLE9BQVEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZW1vamktbG9nL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvd2ViZXh0ZW5zaW9uLXBvbHlmaWxsL2Rpc3QvYnJvd3Nlci1wb2x5ZmlsbC5qcyIsIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vLy4vc291cmNlL3R5cGVzL1JlcG9ydGVkTW9kZWwudHMiLCJ3ZWJwYWNrOi8vLy4vc291cmNlL3V0aWxzL2NvbnN0YW50cy50cyIsIndlYnBhY2s6Ly8vLi9zb3VyY2UvdHlwZXMvemVzdFNjcmlwdC9aZXN0U3RhdGVtZW50LnRzIiwid2VicGFjazovLy8uL3NvdXJjZS9CYWNrZ3JvdW5kL2luZGV4LnRzIiwid2VicGFjazovLy8uL3NvdXJjZS90eXBlcy96ZXN0U2NyaXB0L1plc3RTY3JpcHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG4vKipcbiAqICBlbW9qaS1sb2dcbiAqXG4gKiAgQGF1dGhvciAgIGFiaGlqaXRodmlqYXlhbiA8YWJoaWppdGh2aWpheWFuLmluPlxuICogIEBsaWNlbnNlICBNSVQgTGljZW5zZVxuICpcbiAqICBBcnQgYnkgQ29saW4gSi4gUmFuZGFsbFxuICpcbiAqICAgICAgICAgICAgICAgXFxcbiAqICAgICAgICAgICAgICAgIFxcXG4gKiAgICAgICAgICAgICAgICAgXFxcXFxuICogICAgICAgICAgICAgICAgICBcXFxcXG4gKiAgICAgICAgICAgICAgICAgICA+XFwvN1xuICogICAgICAgICAgICAgICBfLi0oNicgIFxcXG4gKiAgICAgICAgICAgICAgKD1fX18uXy9gIFxcXG4gKiAgICAgICAgICAgICAgICAgICApICBcXCB8XG4gKiAgICAgICAgICAgICAgICAgIC8gICAvIHxcbiAqICAgICAgICAgICAgICAgICAvICAgID4gL1xuICogICAgICAgICAgICAgICAgaiAgICA8IF9cXFxuICogICAgICAgICAgICBfLi0nIDogICAgICBgYC5cbiAqICAgICAgICAgICAgXFwgcj0uX1xcICAgICAgICBgLlxuICogICAgICAgICAgIDxgXFxcXF8gIFxcICAgICAgICAgLmAtLlxuICogICAgICAgICAgICBcXCByLTcgIGAtLiAuXyAgJyAuICBgXFxcbiAqICAgICAgICAgICAgIFxcYCwgICAgICBgLS5gNyAgNykgICApXG4gKiAgICAgICAgICAgICAgXFwvICAgICAgICAgXFx8ICBcXCcgIC8gYC0uX1xuICogICAgICAgICAgICAgICAgICAgICAgICAgfHwgICAgLidcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcICAoXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgID5cXCAgPlxuICogICAgICAgICAgICAgICAgICAgICAgICwuLScgPi4nXG4gKiAgICAgICAgICAgICAgICAgICAgICA8LidfLicnXG4gKiAgICAgICAgICAgICAgICAgICAgICAgIDwnXG4gKlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4vLyBGb3IgVFMgdG8gc3RvcCBzY3JlYW1pbmdcbmNsYXNzIEN1c3RvbUNvbnNvbGUge1xufVxuZXhwb3J0cy5DdXN0b21Db25zb2xlID0gQ3VzdG9tQ29uc29sZTtcbnZhciBDb25zdGFudHM7XG4oZnVuY3Rpb24gKENvbnN0YW50cykge1xuICAgIENvbnN0YW50c1tDb25zdGFudHNbXCJMSU5FX0xFTkdUSF9WQVJJQUJMRVwiXSA9IDAuNjZdID0gXCJMSU5FX0xFTkdUSF9WQVJJQUJMRVwiO1xuICAgIENvbnN0YW50c1tDb25zdGFudHNbXCJERUZBVUxUX0xJTkVfTEVOR1RIXCJdID0gNF0gPSBcIkRFRkFVTFRfTElORV9MRU5HVEhcIjtcbiAgICBDb25zdGFudHNbQ29uc3RhbnRzW1wiT05FXCJdID0gMV0gPSBcIk9ORVwiO1xuICAgIENvbnN0YW50c1tDb25zdGFudHNbXCJUV09cIl0gPSAyXSA9IFwiVFdPXCI7XG4gICAgQ29uc3RhbnRzW0NvbnN0YW50c1tcIlRIUkVFXCJdID0gM10gPSBcIlRIUkVFXCI7XG59KShDb25zdGFudHMgfHwgKENvbnN0YW50cyA9IHt9KSk7XG5mdW5jdGlvbiBpbnN0YW5jZU9mRXJyb3IoZSkge1xuICAgIHJldHVybiAoZSAmJiAoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnN0YWNrKSAmJiAoZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLm1lc3NhZ2UpICYmXG4gICAgICAgIHR5cGVvZiBlLnN0YWNrID09PSAnc3RyaW5nJyAmJlxuICAgICAgICB0eXBlb2YgZS5tZXNzYWdlID09PSAnc3RyaW5nJyk7XG59XG5mdW5jdGlvbiBsb2dUb0NvbnNvbGUoZXJyb3IsIGVtb2ppID0gJ/CfkLYnLCBsZW5ndGgpIHtcbiAgICAvLyBUb0RvOiBvcHRpb25hbGx5IGxvZyB0aW1lICYgZGF0ZVxuICAgIGNvbnN0IGlzRXJyb3IgPSBpbnN0YW5jZU9mRXJyb3IoZXJyb3IpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBpc0Vycm9yID8gZXJyb3IubWVzc2FnZSA6IGVycm9yO1xuICAgIGNvbnN0IGxlbiA9IGxlbmd0aCB8fFxuICAgICAgICAoZXJyb3IgPT09IG51bGwgfHwgZXJyb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGVycm9yLnRvU3RyaW5nKCkubGVuZ3RoKSAqIENvbnN0YW50cy5MSU5FX0xFTkdUSF9WQVJJQUJMRSB8fFxuICAgICAgICBDb25zdGFudHMuREVGQVVMVF9MSU5FX0xFTkdUSDtcbiAgICBjb25zb2xlLmxvZyhgXG4gICAgICAv4oC+JHtg4oC+4oC+YC5yZXBlYXQobGVuKX3igL5cbiAgJHtlbW9qaX0gPCBgLCBtZXNzYWdlLCBgXG4gICAgICBcXFxcXyR7YF9fYC5yZXBlYXQobGVuKX1fXG4gIGApO1xuICAgIGlmIChpc0Vycm9yKSB7XG4gICAgICAgIC8vIE5vZGUuanNcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwQ29sbGFwc2VkKGAke2Vtb2ppfSA+IFN0YWNrIFRyYWNlOmApO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvci5zdGFjayk7XG4gICAgICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtlbW9qaX0gPiBTdGFjayBUcmFjZTpgKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3Iuc3RhY2spO1xuICAgICAgICB9XG4gICAgfVxufVxuY29uc29sZS5lbW9qaSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgY29uc3QgbG9nID0gW107XG4gICAgbG9nWzBdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBsb2dUb0NvbnNvbGUoJ01lb3cnLCAn8J+QsScpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIGxvZ1tDb25zdGFudHMuT05FXSA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBsb2dUb0NvbnNvbGUoZXJyb3IpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIGxvZ1tDb25zdGFudHMuVFdPXSA9IGZ1bmN0aW9uIChlbW9qaSwgZXJyb3IpIHtcbiAgICAgICAgbG9nVG9Db25zb2xlKGVycm9yLCBlbW9qaSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgbG9nW0NvbnN0YW50cy5USFJFRV0gPSBmdW5jdGlvbiAoZW1vamksIGVycm9yLCBsZW5ndGgpIHtcbiAgICAgICAgbG9nVG9Db25zb2xlKGVycm9yLCBlbW9qaSwgbGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICB0aGlzLmVtb2ppID0gZnVuY3Rpb24gKC4uLnBhc3NlZEFyZ3MpIHtcbiAgICAgICAgLy8gY2FsbCBhY2NvcmRpbmcgdG8gaW5kZXhcbiAgICAgICAgbG9nW3Bhc3NlZEFyZ3MubGVuZ3RoXSguLi5wYXNzZWRBcmdzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICB0aGlzLmVtb2ppKC4uLmFyZ3MpO1xuICAgIHJldHVybiB0aGlzO1xufTtcbiIsIihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuICAgIGRlZmluZShcIndlYmV4dGVuc2lvbi1wb2x5ZmlsbFwiLCBbXCJtb2R1bGVcIl0sIGZhY3RvcnkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgZmFjdG9yeShtb2R1bGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBtb2QgPSB7XG4gICAgICBleHBvcnRzOiB7fVxuICAgIH07XG4gICAgZmFjdG9yeShtb2QpO1xuICAgIGdsb2JhbC5icm93c2VyID0gbW9kLmV4cG9ydHM7XG4gIH1cbn0pKHR5cGVvZiBnbG9iYWxUaGlzICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsVGhpcyA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uIChtb2R1bGUpIHtcbiAgLyogd2ViZXh0ZW5zaW9uLXBvbHlmaWxsIC0gdjAuMTIuMCAtIFR1ZSBNYXkgMTQgMjAyNCAxODowMToyOSAqL1xuICAvKiAtKi0gTW9kZTogaW5kZW50LXRhYnMtbW9kZTogbmlsOyBqcy1pbmRlbnQtbGV2ZWw6IDIgLSotICovXG4gIC8qIHZpbTogc2V0IHN0cz0yIHN3PTIgZXQgdHc9ODA6ICovXG4gIC8qIFRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWNcbiAgICogTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpc1xuICAgKiBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLiAqL1xuICBcInVzZSBzdHJpY3RcIjtcblxuICBpZiAoIShnbG9iYWxUaGlzLmNocm9tZSAmJiBnbG9iYWxUaGlzLmNocm9tZS5ydW50aW1lICYmIGdsb2JhbFRoaXMuY2hyb21lLnJ1bnRpbWUuaWQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBzY3JpcHQgc2hvdWxkIG9ubHkgYmUgbG9hZGVkIGluIGEgYnJvd3NlciBleHRlbnNpb24uXCIpO1xuICB9XG4gIGlmICghKGdsb2JhbFRoaXMuYnJvd3NlciAmJiBnbG9iYWxUaGlzLmJyb3dzZXIucnVudGltZSAmJiBnbG9iYWxUaGlzLmJyb3dzZXIucnVudGltZS5pZCkpIHtcbiAgICBjb25zdCBDSFJPTUVfU0VORF9NRVNTQUdFX0NBTExCQUNLX05PX1JFU1BPTlNFX01FU1NBR0UgPSBcIlRoZSBtZXNzYWdlIHBvcnQgY2xvc2VkIGJlZm9yZSBhIHJlc3BvbnNlIHdhcyByZWNlaXZlZC5cIjtcblxuICAgIC8vIFdyYXBwaW5nIHRoZSBidWxrIG9mIHRoaXMgcG9seWZpbGwgaW4gYSBvbmUtdGltZS11c2UgZnVuY3Rpb24gaXMgYSBtaW5vclxuICAgIC8vIG9wdGltaXphdGlvbiBmb3IgRmlyZWZveC4gU2luY2UgU3BpZGVybW9ua2V5IGRvZXMgbm90IGZ1bGx5IHBhcnNlIHRoZVxuICAgIC8vIGNvbnRlbnRzIG9mIGEgZnVuY3Rpb24gdW50aWwgdGhlIGZpcnN0IHRpbWUgaXQncyBjYWxsZWQsIGFuZCBzaW5jZSBpdCB3aWxsXG4gICAgLy8gbmV2ZXIgYWN0dWFsbHkgbmVlZCB0byBiZSBjYWxsZWQsIHRoaXMgYWxsb3dzIHRoZSBwb2x5ZmlsbCB0byBiZSBpbmNsdWRlZFxuICAgIC8vIGluIEZpcmVmb3ggbmVhcmx5IGZvciBmcmVlLlxuICAgIGNvbnN0IHdyYXBBUElzID0gZXh0ZW5zaW9uQVBJcyA9PiB7XG4gICAgICAvLyBOT1RFOiBhcGlNZXRhZGF0YSBpcyBhc3NvY2lhdGVkIHRvIHRoZSBjb250ZW50IG9mIHRoZSBhcGktbWV0YWRhdGEuanNvbiBmaWxlXG4gICAgICAvLyBhdCBidWlsZCB0aW1lIGJ5IHJlcGxhY2luZyB0aGUgZm9sbG93aW5nIFwiaW5jbHVkZVwiIHdpdGggdGhlIGNvbnRlbnQgb2YgdGhlXG4gICAgICAvLyBKU09OIGZpbGUuXG4gICAgICBjb25zdCBhcGlNZXRhZGF0YSA9IHtcbiAgICAgICAgXCJhbGFybXNcIjoge1xuICAgICAgICAgIFwiY2xlYXJcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJjbGVhckFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImJvb2ttYXJrc1wiOiB7XG4gICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRDaGlsZHJlblwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFJlY2VudFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFN1YlRyZWVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRUcmVlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwibW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVRyZWVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZWFyY2hcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJicm93c2VyQWN0aW9uXCI6IHtcbiAgICAgICAgICBcImRpc2FibGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJlbmFibGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRCYWRnZUJhY2tncm91bmRDb2xvclwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEJhZGdlVGV4dFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFBvcHVwXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0VGl0bGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJvcGVuUG9wdXBcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRCYWRnZUJhY2tncm91bmRDb2xvclwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldEJhZGdlVGV4dFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldEljb25cIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRQb3B1cFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFRpdGxlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiYnJvd3NpbmdEYXRhXCI6IHtcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZUNhY2hlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlQ29va2llc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZURvd25sb2Fkc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZUZvcm1EYXRhXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlSGlzdG9yeVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZUxvY2FsU3RvcmFnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVBhc3N3b3Jkc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVBsdWdpbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXR0aW5nc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImNvbW1hbmRzXCI6IHtcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImNvbnRleHRNZW51c1wiOiB7XG4gICAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJjb29raWVzXCI6IHtcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbENvb2tpZVN0b3Jlc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImRldnRvb2xzXCI6IHtcbiAgICAgICAgICBcImluc3BlY3RlZFdpbmRvd1wiOiB7XG4gICAgICAgICAgICBcImV2YWxcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDIsXG4gICAgICAgICAgICAgIFwic2luZ2xlQ2FsbGJhY2tBcmdcIjogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicGFuZWxzXCI6IHtcbiAgICAgICAgICAgIFwiY3JlYXRlXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDMsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAzLFxuICAgICAgICAgICAgICBcInNpbmdsZUNhbGxiYWNrQXJnXCI6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImVsZW1lbnRzXCI6IHtcbiAgICAgICAgICAgICAgXCJjcmVhdGVTaWRlYmFyUGFuZVwiOiB7XG4gICAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb3dubG9hZHNcIjoge1xuICAgICAgICAgIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZG93bmxvYWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJlcmFzZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEZpbGVJY29uXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwib3BlblwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInBhdXNlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlRmlsZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlc3VtZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNlYXJjaFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNob3dcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJleHRlbnNpb25cIjoge1xuICAgICAgICAgIFwiaXNBbGxvd2VkRmlsZVNjaGVtZUFjY2Vzc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImlzQWxsb3dlZEluY29nbml0b0FjY2Vzc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImhpc3RvcnlcIjoge1xuICAgICAgICAgIFwiYWRkVXJsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZGVsZXRlQWxsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZGVsZXRlUmFuZ2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkZWxldGVVcmxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRWaXNpdHNcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZWFyY2hcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJpMThuXCI6IHtcbiAgICAgICAgICBcImRldGVjdExhbmd1YWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0QWNjZXB0TGFuZ3VhZ2VzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiaWRlbnRpdHlcIjoge1xuICAgICAgICAgIFwibGF1bmNoV2ViQXV0aEZsb3dcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJpZGxlXCI6IHtcbiAgICAgICAgICBcInF1ZXJ5U3RhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJtYW5hZ2VtZW50XCI6IHtcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFNlbGZcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRFbmFibGVkXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwidW5pbnN0YWxsU2VsZlwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIm5vdGlmaWNhdGlvbnNcIjoge1xuICAgICAgICAgIFwiY2xlYXJcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRQZXJtaXNzaW9uTGV2ZWxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJwYWdlQWN0aW9uXCI6IHtcbiAgICAgICAgICBcImdldFBvcHVwXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0VGl0bGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJoaWRlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0SWNvblwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFBvcHVwXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0VGl0bGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzaG93XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwicGVybWlzc2lvbnNcIjoge1xuICAgICAgICAgIFwiY29udGFpbnNcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZXF1ZXN0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwicnVudGltZVwiOiB7XG4gICAgICAgICAgXCJnZXRCYWNrZ3JvdW5kUGFnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFBsYXRmb3JtSW5mb1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm9wZW5PcHRpb25zUGFnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlcXVlc3RVcGRhdGVDaGVja1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNlbmRNZXNzYWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDNcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2VuZE5hdGl2ZU1lc3NhZ2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRVbmluc3RhbGxVUkxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXNzaW9uc1wiOiB7XG4gICAgICAgICAgXCJnZXREZXZpY2VzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0UmVjZW50bHlDbG9zZWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZXN0b3JlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwic3RvcmFnZVwiOiB7XG4gICAgICAgICAgXCJsb2NhbFwiOiB7XG4gICAgICAgICAgICBcImNsZWFyXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImdldEJ5dGVzSW5Vc2VcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic2V0XCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm1hbmFnZWRcIjoge1xuICAgICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImdldEJ5dGVzSW5Vc2VcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic3luY1wiOiB7XG4gICAgICAgICAgICBcImNsZWFyXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImdldEJ5dGVzSW5Vc2VcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic2V0XCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInRhYnNcIjoge1xuICAgICAgICAgIFwiY2FwdHVyZVZpc2libGVUYWJcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkZXRlY3RMYW5ndWFnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImRpc2NhcmRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkdXBsaWNhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJleGVjdXRlU2NyaXB0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0Q3VycmVudFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFpvb21cIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRab29tU2V0dGluZ3NcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnb0JhY2tcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnb0ZvcndhcmRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJoaWdobGlnaHRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJpbnNlcnRDU1NcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJtb3ZlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicXVlcnlcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZWxvYWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVDU1NcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZW5kTWVzc2FnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFpvb21cIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRab29tU2V0dGluZ3NcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ0b3BTaXRlc1wiOiB7XG4gICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ3ZWJOYXZpZ2F0aW9uXCI6IHtcbiAgICAgICAgICBcImdldEFsbEZyYW1lc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEZyYW1lXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwid2ViUmVxdWVzdFwiOiB7XG4gICAgICAgICAgXCJoYW5kbGVyQmVoYXZpb3JDaGFuZ2VkXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwid2luZG93c1wiOiB7XG4gICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRDdXJyZW50XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0TGFzdEZvY3VzZWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhhcGlNZXRhZGF0YSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImFwaS1tZXRhZGF0YS5qc29uIGhhcyBub3QgYmVlbiBpbmNsdWRlZCBpbiBicm93c2VyLXBvbHlmaWxsXCIpO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIEEgV2Vha01hcCBzdWJjbGFzcyB3aGljaCBjcmVhdGVzIGFuZCBzdG9yZXMgYSB2YWx1ZSBmb3IgYW55IGtleSB3aGljaCBkb2VzXG4gICAgICAgKiBub3QgZXhpc3Qgd2hlbiBhY2Nlc3NlZCwgYnV0IGJlaGF2ZXMgZXhhY3RseSBhcyBhbiBvcmRpbmFyeSBXZWFrTWFwXG4gICAgICAgKiBvdGhlcndpc2UuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY3JlYXRlSXRlbVxuICAgICAgICogICAgICAgIEEgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjYWxsZWQgaW4gb3JkZXIgdG8gY3JlYXRlIHRoZSB2YWx1ZSBmb3IgYW55XG4gICAgICAgKiAgICAgICAga2V5IHdoaWNoIGRvZXMgbm90IGV4aXN0LCB0aGUgZmlyc3QgdGltZSBpdCBpcyBhY2Nlc3NlZC4gVGhlXG4gICAgICAgKiAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZXMsIGFzIGl0cyBvbmx5IGFyZ3VtZW50LCB0aGUga2V5IGJlaW5nIGNyZWF0ZWQuXG4gICAgICAgKi9cbiAgICAgIGNsYXNzIERlZmF1bHRXZWFrTWFwIGV4dGVuZHMgV2Vha01hcCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKGNyZWF0ZUl0ZW0sIGl0ZW1zID0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc3VwZXIoaXRlbXMpO1xuICAgICAgICAgIHRoaXMuY3JlYXRlSXRlbSA9IGNyZWF0ZUl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgZ2V0KGtleSkge1xuICAgICAgICAgIGlmICghdGhpcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgdGhpcy5zZXQoa2V5LCB0aGlzLmNyZWF0ZUl0ZW0oa2V5KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzdXBlci5nZXQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGFuIG9iamVjdCB3aXRoIGEgYHRoZW5gIG1ldGhvZCwgYW5kIGNhblxuICAgICAgICogdGhlcmVmb3JlIGJlIGFzc3VtZWQgdG8gYmVoYXZlIGFzIGEgUHJvbWlzZS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0LlxuICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHRoZW5hYmxlLlxuICAgICAgICovXG4gICAgICBjb25zdCBpc1RoZW5hYmxlID0gdmFsdWUgPT4ge1xuICAgICAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICB9O1xuXG4gICAgICAvKipcbiAgICAgICAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aGljaCwgd2hlbiBjYWxsZWQsIHdpbGwgcmVzb2x2ZSBvciByZWplY3RcbiAgICAgICAqIHRoZSBnaXZlbiBwcm9taXNlIGJhc2VkIG9uIGhvdyBpdCBpcyBjYWxsZWQ6XG4gICAgICAgKlxuICAgICAgICogLSBJZiwgd2hlbiBjYWxsZWQsIGBjaHJvbWUucnVudGltZS5sYXN0RXJyb3JgIGNvbnRhaW5zIGEgbm9uLW51bGwgb2JqZWN0LFxuICAgICAgICogICB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCB3aXRoIHRoYXQgdmFsdWUuXG4gICAgICAgKiAtIElmIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBleGFjdGx5IG9uZSBhcmd1bWVudCwgdGhlIHByb21pc2UgaXNcbiAgICAgICAqICAgcmVzb2x2ZWQgdG8gdGhhdCB2YWx1ZS5cbiAgICAgICAqIC0gT3RoZXJ3aXNlLCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCB0byBhbiBhcnJheSBjb250YWluaW5nIGFsbCBvZiB0aGVcbiAgICAgICAqICAgZnVuY3Rpb24ncyBhcmd1bWVudHMuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IHByb21pc2VcbiAgICAgICAqICAgICAgICBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x1dGlvbiBhbmQgcmVqZWN0aW9uIGZ1bmN0aW9ucyBvZiBhXG4gICAgICAgKiAgICAgICAgcHJvbWlzZS5cbiAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb21pc2UucmVzb2x2ZVxuICAgICAgICogICAgICAgIFRoZSBwcm9taXNlJ3MgcmVzb2x1dGlvbiBmdW5jdGlvbi5cbiAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb21pc2UucmVqZWN0XG4gICAgICAgKiAgICAgICAgVGhlIHByb21pc2UncyByZWplY3Rpb24gZnVuY3Rpb24uXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gbWV0YWRhdGFcbiAgICAgICAqICAgICAgICBNZXRhZGF0YSBhYm91dCB0aGUgd3JhcHBlZCBtZXRob2Qgd2hpY2ggaGFzIGNyZWF0ZWQgdGhlIGNhbGxiYWNrLlxuICAgICAgICogQHBhcmFtIHtib29sZWFufSBtZXRhZGF0YS5zaW5nbGVDYWxsYmFja0FyZ1xuICAgICAgICogICAgICAgIFdoZXRoZXIgb3Igbm90IHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHdpdGggb25seSB0aGUgZmlyc3RcbiAgICAgICAqICAgICAgICBhcmd1bWVudCBvZiB0aGUgY2FsbGJhY2ssIGFsdGVybmF0aXZlbHkgYW4gYXJyYXkgb2YgYWxsIHRoZVxuICAgICAgICogICAgICAgIGNhbGxiYWNrIGFyZ3VtZW50cyBpcyByZXNvbHZlZC4gQnkgZGVmYXVsdCwgaWYgdGhlIGNhbGxiYWNrXG4gICAgICAgKiAgICAgICAgZnVuY3Rpb24gaXMgaW52b2tlZCB3aXRoIG9ubHkgYSBzaW5nbGUgYXJndW1lbnQsIHRoYXQgd2lsbCBiZVxuICAgICAgICogICAgICAgIHJlc29sdmVkIHRvIHRoZSBwcm9taXNlLCB3aGlsZSBhbGwgYXJndW1lbnRzIHdpbGwgYmUgcmVzb2x2ZWQgYXNcbiAgICAgICAqICAgICAgICBhbiBhcnJheSBpZiBtdWx0aXBsZSBhcmUgZ2l2ZW4uXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge2Z1bmN0aW9ufVxuICAgICAgICogICAgICAgIFRoZSBnZW5lcmF0ZWQgY2FsbGJhY2sgZnVuY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IG1ha2VDYWxsYmFjayA9IChwcm9taXNlLCBtZXRhZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gKC4uLmNhbGxiYWNrQXJncykgPT4ge1xuICAgICAgICAgIGlmIChleHRlbnNpb25BUElzLnJ1bnRpbWUubGFzdEVycm9yKSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChuZXcgRXJyb3IoZXh0ZW5zaW9uQVBJcy5ydW50aW1lLmxhc3RFcnJvci5tZXNzYWdlKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS5zaW5nbGVDYWxsYmFja0FyZyB8fCBjYWxsYmFja0FyZ3MubGVuZ3RoIDw9IDEgJiYgbWV0YWRhdGEuc2luZ2xlQ2FsbGJhY2tBcmcgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FsbGJhY2tBcmdzWzBdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrQXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHBsdXJhbGl6ZUFyZ3VtZW50cyA9IG51bUFyZ3MgPT4gbnVtQXJncyA9PSAxID8gXCJhcmd1bWVudFwiIDogXCJhcmd1bWVudHNcIjtcblxuICAgICAgLyoqXG4gICAgICAgKiBDcmVhdGVzIGEgd3JhcHBlciBmdW5jdGlvbiBmb3IgYSBtZXRob2Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQgbWV0YWRhdGEuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgICAqICAgICAgICBUaGUgbmFtZSBvZiB0aGUgbWV0aG9kIHdoaWNoIGlzIGJlaW5nIHdyYXBwZWQuXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gbWV0YWRhdGFcbiAgICAgICAqICAgICAgICBNZXRhZGF0YSBhYm91dCB0aGUgbWV0aG9kIGJlaW5nIHdyYXBwZWQuXG4gICAgICAgKiBAcGFyYW0ge2ludGVnZXJ9IG1ldGFkYXRhLm1pbkFyZ3NcbiAgICAgICAqICAgICAgICBUaGUgbWluaW11bSBudW1iZXIgb2YgYXJndW1lbnRzIHdoaWNoIG11c3QgYmUgcGFzc2VkIHRvIHRoZVxuICAgICAgICogICAgICAgIGZ1bmN0aW9uLiBJZiBjYWxsZWQgd2l0aCBmZXdlciB0aGFuIHRoaXMgbnVtYmVyIG9mIGFyZ3VtZW50cywgdGhlXG4gICAgICAgKiAgICAgICAgd3JhcHBlciB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi5cbiAgICAgICAqIEBwYXJhbSB7aW50ZWdlcn0gbWV0YWRhdGEubWF4QXJnc1xuICAgICAgICogICAgICAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhcmd1bWVudHMgd2hpY2ggbWF5IGJlIHBhc3NlZCB0byB0aGVcbiAgICAgICAqICAgICAgICBmdW5jdGlvbi4gSWYgY2FsbGVkIHdpdGggbW9yZSB0aGFuIHRoaXMgbnVtYmVyIG9mIGFyZ3VtZW50cywgdGhlXG4gICAgICAgKiAgICAgICAgd3JhcHBlciB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi5cbiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gbWV0YWRhdGEuc2luZ2xlQ2FsbGJhY2tBcmdcbiAgICAgICAqICAgICAgICBXaGV0aGVyIG9yIG5vdCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCB3aXRoIG9ubHkgdGhlIGZpcnN0XG4gICAgICAgKiAgICAgICAgYXJndW1lbnQgb2YgdGhlIGNhbGxiYWNrLCBhbHRlcm5hdGl2ZWx5IGFuIGFycmF5IG9mIGFsbCB0aGVcbiAgICAgICAqICAgICAgICBjYWxsYmFjayBhcmd1bWVudHMgaXMgcmVzb2x2ZWQuIEJ5IGRlZmF1bHQsIGlmIHRoZSBjYWxsYmFja1xuICAgICAgICogICAgICAgIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCBvbmx5IGEgc2luZ2xlIGFyZ3VtZW50LCB0aGF0IHdpbGwgYmVcbiAgICAgICAqICAgICAgICByZXNvbHZlZCB0byB0aGUgcHJvbWlzZSwgd2hpbGUgYWxsIGFyZ3VtZW50cyB3aWxsIGJlIHJlc29sdmVkIGFzXG4gICAgICAgKiAgICAgICAgYW4gYXJyYXkgaWYgbXVsdGlwbGUgYXJlIGdpdmVuLlxuICAgICAgICpcbiAgICAgICAqIEByZXR1cm5zIHtmdW5jdGlvbihvYmplY3QsIC4uLiopfVxuICAgICAgICogICAgICAgVGhlIGdlbmVyYXRlZCB3cmFwcGVyIGZ1bmN0aW9uLlxuICAgICAgICovXG4gICAgICBjb25zdCB3cmFwQXN5bmNGdW5jdGlvbiA9IChuYW1lLCBtZXRhZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gYXN5bmNGdW5jdGlvbldyYXBwZXIodGFyZ2V0LCAuLi5hcmdzKSB7XG4gICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgbWV0YWRhdGEubWluQXJncykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhdCBsZWFzdCAke21ldGFkYXRhLm1pbkFyZ3N9ICR7cGx1cmFsaXplQXJndW1lbnRzKG1ldGFkYXRhLm1pbkFyZ3MpfSBmb3IgJHtuYW1lfSgpLCBnb3QgJHthcmdzLmxlbmd0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gbWV0YWRhdGEubWF4QXJncykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhdCBtb3N0ICR7bWV0YWRhdGEubWF4QXJnc30gJHtwbHVyYWxpemVBcmd1bWVudHMobWV0YWRhdGEubWF4QXJncyl9IGZvciAke25hbWV9KCksIGdvdCAke2FyZ3MubGVuZ3RofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKG1ldGFkYXRhLmZhbGxiYWNrVG9Ob0NhbGxiYWNrKSB7XG4gICAgICAgICAgICAgIC8vIFRoaXMgQVBJIG1ldGhvZCBoYXMgY3VycmVudGx5IG5vIGNhbGxiYWNrIG9uIENocm9tZSwgYnV0IGl0IHJldHVybiBhIHByb21pc2Ugb24gRmlyZWZveCxcbiAgICAgICAgICAgICAgLy8gYW5kIHNvIHRoZSBwb2x5ZmlsbCB3aWxsIHRyeSB0byBjYWxsIGl0IHdpdGggYSBjYWxsYmFjayBmaXJzdCwgYW5kIGl0IHdpbGwgZmFsbGJhY2tcbiAgICAgICAgICAgICAgLy8gdG8gbm90IHBhc3NpbmcgdGhlIGNhbGxiYWNrIGlmIHRoZSBmaXJzdCBjYWxsIGZhaWxzLlxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtuYW1lXSguLi5hcmdzLCBtYWtlQ2FsbGJhY2soe1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgICAgICAgIH0sIG1ldGFkYXRhKSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGNiRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7bmFtZX0gQVBJIG1ldGhvZCBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCB0aGUgY2FsbGJhY2sgcGFyYW1ldGVyLCBgICsgXCJmYWxsaW5nIGJhY2sgdG8gY2FsbCBpdCB3aXRob3V0IGEgY2FsbGJhY2s6IFwiLCBjYkVycm9yKTtcbiAgICAgICAgICAgICAgICB0YXJnZXRbbmFtZV0oLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIEFQSSBtZXRob2QgbWV0YWRhdGEsIHNvIHRoYXQgdGhlIG5leHQgQVBJIGNhbGxzIHdpbGwgbm90IHRyeSB0b1xuICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgdW5zdXBwb3J0ZWQgY2FsbGJhY2sgYW55bW9yZS5cbiAgICAgICAgICAgICAgICBtZXRhZGF0YS5mYWxsYmFja1RvTm9DYWxsYmFjayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhLm5vQ2FsbGJhY2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS5ub0NhbGxiYWNrKSB7XG4gICAgICAgICAgICAgIHRhcmdldFtuYW1lXSguLi5hcmdzKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGFyZ2V0W25hbWVdKC4uLmFyZ3MsIG1ha2VDYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICByZWplY3RcbiAgICAgICAgICAgICAgfSwgbWV0YWRhdGEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgIH07XG5cbiAgICAgIC8qKlxuICAgICAgICogV3JhcHMgYW4gZXhpc3RpbmcgbWV0aG9kIG9mIHRoZSB0YXJnZXQgb2JqZWN0LCBzbyB0aGF0IGNhbGxzIHRvIGl0IGFyZVxuICAgICAgICogaW50ZXJjZXB0ZWQgYnkgdGhlIGdpdmVuIHdyYXBwZXIgZnVuY3Rpb24uIFRoZSB3cmFwcGVyIGZ1bmN0aW9uIHJlY2VpdmVzLFxuICAgICAgICogYXMgaXRzIGZpcnN0IGFyZ3VtZW50LCB0aGUgb3JpZ2luYWwgYHRhcmdldGAgb2JqZWN0LCBmb2xsb3dlZCBieSBlYWNoIG9mXG4gICAgICAgKiB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgb3JpZ2luYWwgbWV0aG9kLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXRcbiAgICAgICAqICAgICAgICBUaGUgb3JpZ2luYWwgdGFyZ2V0IG9iamVjdCB0aGF0IHRoZSB3cmFwcGVkIG1ldGhvZCBiZWxvbmdzIHRvLlxuICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kXG4gICAgICAgKiAgICAgICAgVGhlIG1ldGhvZCBiZWluZyB3cmFwcGVkLiBUaGlzIGlzIHVzZWQgYXMgdGhlIHRhcmdldCBvZiB0aGUgUHJveHlcbiAgICAgICAqICAgICAgICBvYmplY3Qgd2hpY2ggaXMgY3JlYXRlZCB0byB3cmFwIHRoZSBtZXRob2QuXG4gICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB3cmFwcGVyXG4gICAgICAgKiAgICAgICAgVGhlIHdyYXBwZXIgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGluIHBsYWNlIG9mIGEgZGlyZWN0IGludm9jYXRpb25cbiAgICAgICAqICAgICAgICBvZiB0aGUgd3JhcHBlZCBtZXRob2QuXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge1Byb3h5PGZ1bmN0aW9uPn1cbiAgICAgICAqICAgICAgICBBIFByb3h5IG9iamVjdCBmb3IgdGhlIGdpdmVuIG1ldGhvZCwgd2hpY2ggaW52b2tlcyB0aGUgZ2l2ZW4gd3JhcHBlclxuICAgICAgICogICAgICAgIG1ldGhvZCBpbiBpdHMgcGxhY2UuXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHdyYXBNZXRob2QgPSAodGFyZ2V0LCBtZXRob2QsIHdyYXBwZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm94eShtZXRob2QsIHtcbiAgICAgICAgICBhcHBseSh0YXJnZXRNZXRob2QsIHRoaXNPYmosIGFyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVyLmNhbGwodGhpc09iaiwgdGFyZ2V0LCAuLi5hcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGxldCBoYXNPd25Qcm9wZXJ0eSA9IEZ1bmN0aW9uLmNhbGwuYmluZChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcblxuICAgICAgLyoqXG4gICAgICAgKiBXcmFwcyBhbiBvYmplY3QgaW4gYSBQcm94eSB3aGljaCBpbnRlcmNlcHRzIGFuZCB3cmFwcyBjZXJ0YWluIG1ldGhvZHNcbiAgICAgICAqIGJhc2VkIG9uIHRoZSBnaXZlbiBgd3JhcHBlcnNgIGFuZCBgbWV0YWRhdGFgIG9iamVjdHMuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldFxuICAgICAgICogICAgICAgIFRoZSB0YXJnZXQgb2JqZWN0IHRvIHdyYXAuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IFt3cmFwcGVycyA9IHt9XVxuICAgICAgICogICAgICAgIEFuIG9iamVjdCB0cmVlIGNvbnRhaW5pbmcgd3JhcHBlciBmdW5jdGlvbnMgZm9yIHNwZWNpYWwgY2FzZXMuIEFueVxuICAgICAgICogICAgICAgIGZ1bmN0aW9uIHByZXNlbnQgaW4gdGhpcyBvYmplY3QgdHJlZSBpcyBjYWxsZWQgaW4gcGxhY2Ugb2YgdGhlXG4gICAgICAgKiAgICAgICAgbWV0aG9kIGluIHRoZSBzYW1lIGxvY2F0aW9uIGluIHRoZSBgdGFyZ2V0YCBvYmplY3QgdHJlZS4gVGhlc2VcbiAgICAgICAqICAgICAgICB3cmFwcGVyIG1ldGhvZHMgYXJlIGludm9rZWQgYXMgZGVzY3JpYmVkIGluIHtAc2VlIHdyYXBNZXRob2R9LlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbbWV0YWRhdGEgPSB7fV1cbiAgICAgICAqICAgICAgICBBbiBvYmplY3QgdHJlZSBjb250YWluaW5nIG1ldGFkYXRhIHVzZWQgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZVxuICAgICAgICogICAgICAgIFByb21pc2UtYmFzZWQgd3JhcHBlciBmdW5jdGlvbnMgZm9yIGFzeW5jaHJvbm91cy4gQW55IGZ1bmN0aW9uIGluXG4gICAgICAgKiAgICAgICAgdGhlIGB0YXJnZXRgIG9iamVjdCB0cmVlIHdoaWNoIGhhcyBhIGNvcnJlc3BvbmRpbmcgbWV0YWRhdGEgb2JqZWN0XG4gICAgICAgKiAgICAgICAgaW4gdGhlIHNhbWUgbG9jYXRpb24gaW4gdGhlIGBtZXRhZGF0YWAgdHJlZSBpcyByZXBsYWNlZCB3aXRoIGFuXG4gICAgICAgKiAgICAgICAgYXV0b21hdGljYWxseS1nZW5lcmF0ZWQgd3JhcHBlciBmdW5jdGlvbiwgYXMgZGVzY3JpYmVkIGluXG4gICAgICAgKiAgICAgICAge0BzZWUgd3JhcEFzeW5jRnVuY3Rpb259XG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge1Byb3h5PG9iamVjdD59XG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHdyYXBPYmplY3QgPSAodGFyZ2V0LCB3cmFwcGVycyA9IHt9LCBtZXRhZGF0YSA9IHt9KSA9PiB7XG4gICAgICAgIGxldCBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGxldCBoYW5kbGVycyA9IHtcbiAgICAgICAgICBoYXMocHJveHlUYXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wIGluIHRhcmdldCB8fCBwcm9wIGluIGNhY2hlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2V0KHByb3h5VGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHByb3AgaW4gY2FjaGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlW3Byb3BdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEocHJvcCBpbiB0YXJnZXQpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB0YXJnZXRbcHJvcF07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG1ldGhvZCBvbiB0aGUgdW5kZXJseWluZyBvYmplY3QuIENoZWNrIGlmIHdlIG5lZWQgdG8gZG9cbiAgICAgICAgICAgICAgLy8gYW55IHdyYXBwaW5nLlxuXG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygd3JhcHBlcnNbcHJvcF0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBzcGVjaWFsLWNhc2Ugd3JhcHBlciBmb3IgdGhpcyBtZXRob2QuXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB3cmFwTWV0aG9kKHRhcmdldCwgdGFyZ2V0W3Byb3BdLCB3cmFwcGVyc1twcm9wXSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzT3duUHJvcGVydHkobWV0YWRhdGEsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBhc3luYyBtZXRob2QgdGhhdCB3ZSBoYXZlIG1ldGFkYXRhIGZvci4gQ3JlYXRlIGFcbiAgICAgICAgICAgICAgICAvLyBQcm9taXNlIHdyYXBwZXIgZm9yIGl0LlxuICAgICAgICAgICAgICAgIGxldCB3cmFwcGVyID0gd3JhcEFzeW5jRnVuY3Rpb24ocHJvcCwgbWV0YWRhdGFbcHJvcF0pO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gd3JhcE1ldGhvZCh0YXJnZXQsIHRhcmdldFtwcm9wXSwgd3JhcHBlcik7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG1ldGhvZCB0aGF0IHdlIGRvbid0IGtub3cgb3IgY2FyZSBhYm91dC4gUmV0dXJuIHRoZVxuICAgICAgICAgICAgICAgIC8vIG9yaWdpbmFsIG1ldGhvZCwgYm91bmQgdG8gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuYmluZCh0YXJnZXQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAoaGFzT3duUHJvcGVydHkod3JhcHBlcnMsIHByb3ApIHx8IGhhc093blByb3BlcnR5KG1ldGFkYXRhLCBwcm9wKSkpIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBvYmplY3QgdGhhdCB3ZSBuZWVkIHRvIGRvIHNvbWUgd3JhcHBpbmcgZm9yIHRoZSBjaGlsZHJlblxuICAgICAgICAgICAgICAvLyBvZi4gQ3JlYXRlIGEgc3ViLW9iamVjdCB3cmFwcGVyIGZvciBpdCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBjaGlsZFxuICAgICAgICAgICAgICAvLyBtZXRhZGF0YS5cbiAgICAgICAgICAgICAgdmFsdWUgPSB3cmFwT2JqZWN0KHZhbHVlLCB3cmFwcGVyc1twcm9wXSwgbWV0YWRhdGFbcHJvcF0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNPd25Qcm9wZXJ0eShtZXRhZGF0YSwgXCIqXCIpKSB7XG4gICAgICAgICAgICAgIC8vIFdyYXAgYWxsIHByb3BlcnRpZXMgaW4gKiBuYW1lc3BhY2UuXG4gICAgICAgICAgICAgIHZhbHVlID0gd3JhcE9iamVjdCh2YWx1ZSwgd3JhcHBlcnNbcHJvcF0sIG1ldGFkYXRhW1wiKlwiXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIGFueSB3cmFwcGluZyBmb3IgdGhpcyBwcm9wZXJ0eSxcbiAgICAgICAgICAgICAgLy8gc28ganVzdCBmb3J3YXJkIGFsbCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FjaGUsIHByb3AsIHtcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3BdO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWNoZVtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2V0KHByb3h5VGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmIChwcm9wIGluIGNhY2hlKSB7XG4gICAgICAgICAgICAgIGNhY2hlW3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVmaW5lUHJvcGVydHkocHJveHlUYXJnZXQsIHByb3AsIGRlc2MpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KGNhY2hlLCBwcm9wLCBkZXNjKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlbGV0ZVByb3BlcnR5KHByb3h5VGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5kZWxldGVQcm9wZXJ0eShjYWNoZSwgcHJvcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFBlciBjb250cmFjdCBvZiB0aGUgUHJveHkgQVBJLCB0aGUgXCJnZXRcIiBwcm94eSBoYW5kbGVyIG11c3QgcmV0dXJuIHRoZVxuICAgICAgICAvLyBvcmlnaW5hbCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGlmIHRoYXQgdmFsdWUgaXMgZGVjbGFyZWQgcmVhZC1vbmx5IGFuZFxuICAgICAgICAvLyBub24tY29uZmlndXJhYmxlLiBGb3IgdGhpcyByZWFzb24sIHdlIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGVcbiAgICAgICAgLy8gcHJvdG90eXBlIHNldCB0byBgdGFyZ2V0YCBpbnN0ZWFkIG9mIHVzaW5nIGB0YXJnZXRgIGRpcmVjdGx5LlxuICAgICAgICAvLyBPdGhlcndpc2Ugd2UgY2Fubm90IHJldHVybiBhIGN1c3RvbSBvYmplY3QgZm9yIEFQSXMgdGhhdFxuICAgICAgICAvLyBhcmUgZGVjbGFyZWQgcmVhZC1vbmx5IGFuZCBub24tY29uZmlndXJhYmxlLCBzdWNoIGFzIGBjaHJvbWUuZGV2dG9vbHNgLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGUgcHJveHkgaGFuZGxlcnMgdGhlbXNlbHZlcyB3aWxsIHN0aWxsIHVzZSB0aGUgb3JpZ2luYWwgYHRhcmdldGBcbiAgICAgICAgLy8gaW5zdGVhZCBvZiB0aGUgYHByb3h5VGFyZ2V0YCwgc28gdGhhdCB0aGUgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBhcmVcbiAgICAgICAgLy8gZGVyZWZlcmVuY2VkIHZpYSB0aGUgb3JpZ2luYWwgdGFyZ2V0cy5cbiAgICAgICAgbGV0IHByb3h5VGFyZ2V0ID0gT2JqZWN0LmNyZWF0ZSh0YXJnZXQpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KHByb3h5VGFyZ2V0LCBoYW5kbGVycyk7XG4gICAgICB9O1xuXG4gICAgICAvKipcbiAgICAgICAqIENyZWF0ZXMgYSBzZXQgb2Ygd3JhcHBlciBmdW5jdGlvbnMgZm9yIGFuIGV2ZW50IG9iamVjdCwgd2hpY2ggaGFuZGxlc1xuICAgICAgICogd3JhcHBpbmcgb2YgbGlzdGVuZXIgZnVuY3Rpb25zIHRoYXQgdGhvc2UgbWVzc2FnZXMgYXJlIHBhc3NlZC5cbiAgICAgICAqXG4gICAgICAgKiBBIHNpbmdsZSB3cmFwcGVyIGlzIGNyZWF0ZWQgZm9yIGVhY2ggbGlzdGVuZXIgZnVuY3Rpb24sIGFuZCBzdG9yZWQgaW4gYVxuICAgICAgICogbWFwLiBTdWJzZXF1ZW50IGNhbGxzIHRvIGBhZGRMaXN0ZW5lcmAsIGBoYXNMaXN0ZW5lcmAsIG9yIGByZW1vdmVMaXN0ZW5lcmBcbiAgICAgICAqIHJldHJpZXZlIHRoZSBvcmlnaW5hbCB3cmFwcGVyLCBzbyB0aGF0ICBhdHRlbXB0cyB0byByZW1vdmUgYVxuICAgICAgICogcHJldmlvdXNseS1hZGRlZCBsaXN0ZW5lciB3b3JrIGFzIGV4cGVjdGVkLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7RGVmYXVsdFdlYWtNYXA8ZnVuY3Rpb24sIGZ1bmN0aW9uPn0gd3JhcHBlck1hcFxuICAgICAgICogICAgICAgIEEgRGVmYXVsdFdlYWtNYXAgb2JqZWN0IHdoaWNoIHdpbGwgY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSB3cmFwcGVyXG4gICAgICAgKiAgICAgICAgZm9yIGEgZ2l2ZW4gbGlzdGVuZXIgZnVuY3Rpb24gd2hlbiBvbmUgZG9lcyBub3QgZXhpc3QsIGFuZCByZXRyaWV2ZVxuICAgICAgICogICAgICAgIGFuIGV4aXN0aW5nIG9uZSB3aGVuIGl0IGRvZXMuXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge29iamVjdH1cbiAgICAgICAqL1xuICAgICAgY29uc3Qgd3JhcEV2ZW50ID0gd3JhcHBlck1hcCA9PiAoe1xuICAgICAgICBhZGRMaXN0ZW5lcih0YXJnZXQsIGxpc3RlbmVyLCAuLi5hcmdzKSB7XG4gICAgICAgICAgdGFyZ2V0LmFkZExpc3RlbmVyKHdyYXBwZXJNYXAuZ2V0KGxpc3RlbmVyKSwgLi4uYXJncyk7XG4gICAgICAgIH0sXG4gICAgICAgIGhhc0xpc3RlbmVyKHRhcmdldCwgbGlzdGVuZXIpIHtcbiAgICAgICAgICByZXR1cm4gdGFyZ2V0Lmhhc0xpc3RlbmVyKHdyYXBwZXJNYXAuZ2V0KGxpc3RlbmVyKSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZUxpc3RlbmVyKHRhcmdldCwgbGlzdGVuZXIpIHtcbiAgICAgICAgICB0YXJnZXQucmVtb3ZlTGlzdGVuZXIod3JhcHBlck1hcC5nZXQobGlzdGVuZXIpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBvblJlcXVlc3RGaW5pc2hlZFdyYXBwZXJzID0gbmV3IERlZmF1bHRXZWFrTWFwKGxpc3RlbmVyID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgcmV0dXJuIGxpc3RlbmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdyYXBzIGFuIG9uUmVxdWVzdEZpbmlzaGVkIGxpc3RlbmVyIGZ1bmN0aW9uIHNvIHRoYXQgaXQgd2lsbCByZXR1cm4gYVxuICAgICAgICAgKiBgZ2V0Q29udGVudCgpYCBwcm9wZXJ0eSB3aGljaCByZXR1cm5zIGEgYFByb21pc2VgIHJhdGhlciB0aGFuIHVzaW5nIGFcbiAgICAgICAgICogY2FsbGJhY2sgQVBJLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gcmVxXG4gICAgICAgICAqICAgICAgICBUaGUgSEFSIGVudHJ5IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIG5ldHdvcmsgcmVxdWVzdC5cbiAgICAgICAgICovXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBvblJlcXVlc3RGaW5pc2hlZChyZXEpIHtcbiAgICAgICAgICBjb25zdCB3cmFwcGVkUmVxID0gd3JhcE9iamVjdChyZXEsIHt9IC8qIHdyYXBwZXJzICovLCB7XG4gICAgICAgICAgICBnZXRDb250ZW50OiB7XG4gICAgICAgICAgICAgIG1pbkFyZ3M6IDAsXG4gICAgICAgICAgICAgIG1heEFyZ3M6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsaXN0ZW5lcih3cmFwcGVkUmVxKTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgb25NZXNzYWdlV3JhcHBlcnMgPSBuZXcgRGVmYXVsdFdlYWtNYXAobGlzdGVuZXIgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICByZXR1cm4gbGlzdGVuZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogV3JhcHMgYSBtZXNzYWdlIGxpc3RlbmVyIGZ1bmN0aW9uIHNvIHRoYXQgaXQgbWF5IHNlbmQgcmVzcG9uc2VzIGJhc2VkIG9uXG4gICAgICAgICAqIGl0cyByZXR1cm4gdmFsdWUsIHJhdGhlciB0aGFuIGJ5IHJldHVybmluZyBhIHNlbnRpbmVsIHZhbHVlIGFuZCBjYWxsaW5nIGFcbiAgICAgICAgICogY2FsbGJhY2suIElmIHRoZSBsaXN0ZW5lciBmdW5jdGlvbiByZXR1cm5zIGEgUHJvbWlzZSwgdGhlIHJlc3BvbnNlIGlzXG4gICAgICAgICAqIHNlbnQgd2hlbiB0aGUgcHJvbWlzZSBlaXRoZXIgcmVzb2x2ZXMgb3IgcmVqZWN0cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHsqfSBtZXNzYWdlXG4gICAgICAgICAqICAgICAgICBUaGUgbWVzc2FnZSBzZW50IGJ5IHRoZSBvdGhlciBlbmQgb2YgdGhlIGNoYW5uZWwuXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBzZW5kZXJcbiAgICAgICAgICogICAgICAgIERldGFpbHMgYWJvdXQgdGhlIHNlbmRlciBvZiB0aGUgbWVzc2FnZS5cbiAgICAgICAgICogQHBhcmFtIHtmdW5jdGlvbigqKX0gc2VuZFJlc3BvbnNlXG4gICAgICAgICAqICAgICAgICBBIGNhbGxiYWNrIHdoaWNoLCB3aGVuIGNhbGxlZCB3aXRoIGFuIGFyYml0cmFyeSBhcmd1bWVudCwgc2VuZHNcbiAgICAgICAgICogICAgICAgIHRoYXQgdmFsdWUgYXMgYSByZXNwb25zZS5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICAgICAqICAgICAgICBUcnVlIGlmIHRoZSB3cmFwcGVkIGxpc3RlbmVyIHJldHVybmVkIGEgUHJvbWlzZSwgd2hpY2ggd2lsbCBsYXRlclxuICAgICAgICAgKiAgICAgICAgeWllbGQgYSByZXNwb25zZS4gRmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIG9uTWVzc2FnZShtZXNzYWdlLCBzZW5kZXIsIHNlbmRSZXNwb25zZSkge1xuICAgICAgICAgIGxldCBkaWRDYWxsU2VuZFJlc3BvbnNlID0gZmFsc2U7XG4gICAgICAgICAgbGV0IHdyYXBwZWRTZW5kUmVzcG9uc2U7XG4gICAgICAgICAgbGV0IHNlbmRSZXNwb25zZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHdyYXBwZWRTZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgZGlkQ2FsbFNlbmRSZXNwb25zZSA9IHRydWU7XG4gICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSBsaXN0ZW5lcihtZXNzYWdlLCBzZW5kZXIsIHdyYXBwZWRTZW5kUmVzcG9uc2UpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmVzdWx0ID0gUHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNSZXN1bHRUaGVuYWJsZSA9IHJlc3VsdCAhPT0gdHJ1ZSAmJiBpc1RoZW5hYmxlKHJlc3VsdCk7XG5cbiAgICAgICAgICAvLyBJZiB0aGUgbGlzdGVuZXIgZGlkbid0IHJldHVybmVkIHRydWUgb3IgYSBQcm9taXNlLCBvciBjYWxsZWRcbiAgICAgICAgICAvLyB3cmFwcGVkU2VuZFJlc3BvbnNlIHN5bmNocm9ub3VzbHksIHdlIGNhbiBleGl0IGVhcmxpZXJcbiAgICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIHdpbGwgYmUgbm8gcmVzcG9uc2Ugc2VudCBmcm9tIHRoaXMgbGlzdGVuZXIuXG4gICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSAmJiAhaXNSZXN1bHRUaGVuYWJsZSAmJiAhZGlkQ2FsbFNlbmRSZXNwb25zZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEEgc21hbGwgaGVscGVyIHRvIHNlbmQgdGhlIG1lc3NhZ2UgaWYgdGhlIHByb21pc2UgcmVzb2x2ZXNcbiAgICAgICAgICAvLyBhbmQgYW4gZXJyb3IgaWYgdGhlIHByb21pc2UgcmVqZWN0cyAoYSB3cmFwcGVkIHNlbmRNZXNzYWdlIGhhc1xuICAgICAgICAgIC8vIHRvIHRyYW5zbGF0ZSB0aGUgbWVzc2FnZSBpbnRvIGEgcmVzb2x2ZWQgcHJvbWlzZSBvciBhIHJlamVjdGVkXG4gICAgICAgICAgLy8gcHJvbWlzZSkuXG4gICAgICAgICAgY29uc3Qgc2VuZFByb21pc2VkUmVzdWx0ID0gcHJvbWlzZSA9PiB7XG4gICAgICAgICAgICBwcm9taXNlLnRoZW4obXNnID0+IHtcbiAgICAgICAgICAgICAgLy8gc2VuZCB0aGUgbWVzc2FnZSB2YWx1ZS5cbiAgICAgICAgICAgICAgc2VuZFJlc3BvbnNlKG1zZyk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgIC8vIFNlbmQgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlcnJvciBpZiB0aGUgcmVqZWN0ZWQgdmFsdWVcbiAgICAgICAgICAgICAgLy8gaXMgYW4gaW5zdGFuY2Ugb2YgZXJyb3IsIG9yIHRoZSBvYmplY3QgaXRzZWxmIG90aGVyd2lzZS5cbiAgICAgICAgICAgICAgbGV0IG1lc3NhZ2U7XG4gICAgICAgICAgICAgIGlmIChlcnJvciAmJiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyb3IubWVzc2FnZSA9PT0gXCJzdHJpbmdcIikpIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gXCJBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkXCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc2VuZFJlc3BvbnNlKHtcbiAgICAgICAgICAgICAgICBfX21veldlYkV4dGVuc2lvblBvbHlmaWxsUmVqZWN0X186IHRydWUsXG4gICAgICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgIC8vIFByaW50IGFuIGVycm9yIG9uIHRoZSBjb25zb2xlIGlmIHVuYWJsZSB0byBzZW5kIHRoZSByZXNwb25zZS5cbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBzZW5kIG9uTWVzc2FnZSByZWplY3RlZCByZXBseVwiLCBlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIElmIHRoZSBsaXN0ZW5lciByZXR1cm5lZCBhIFByb21pc2UsIHNlbmQgdGhlIHJlc29sdmVkIHZhbHVlIGFzIGFcbiAgICAgICAgICAvLyByZXN1bHQsIG90aGVyd2lzZSB3YWl0IHRoZSBwcm9taXNlIHJlbGF0ZWQgdG8gdGhlIHdyYXBwZWRTZW5kUmVzcG9uc2VcbiAgICAgICAgICAvLyBjYWxsYmFjayB0byByZXNvbHZlIGFuZCBzZW5kIGl0IGFzIGEgcmVzcG9uc2UuXG4gICAgICAgICAgaWYgKGlzUmVzdWx0VGhlbmFibGUpIHtcbiAgICAgICAgICAgIHNlbmRQcm9taXNlZFJlc3VsdChyZXN1bHQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZW5kUHJvbWlzZWRSZXN1bHQoc2VuZFJlc3BvbnNlUHJvbWlzZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gTGV0IENocm9tZSBrbm93IHRoYXQgdGhlIGxpc3RlbmVyIGlzIHJlcGx5aW5nLlxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBjb25zdCB3cmFwcGVkU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICh7XG4gICAgICAgIHJlamVjdCxcbiAgICAgICAgcmVzb2x2ZVxuICAgICAgfSwgcmVwbHkpID0+IHtcbiAgICAgICAgaWYgKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IpIHtcbiAgICAgICAgICAvLyBEZXRlY3Qgd2hlbiBub25lIG9mIHRoZSBsaXN0ZW5lcnMgcmVwbGllZCB0byB0aGUgc2VuZE1lc3NhZ2UgY2FsbCBhbmQgcmVzb2x2ZVxuICAgICAgICAgIC8vIHRoZSBwcm9taXNlIHRvIHVuZGVmaW5lZCBhcyBpbiBGaXJlZm94LlxuICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS93ZWJleHRlbnNpb24tcG9seWZpbGwvaXNzdWVzLzEzMFxuICAgICAgICAgIGlmIChleHRlbnNpb25BUElzLnJ1bnRpbWUubGFzdEVycm9yLm1lc3NhZ2UgPT09IENIUk9NRV9TRU5EX01FU1NBR0VfQ0FMTEJBQ0tfTk9fUkVTUE9OU0VfTUVTU0FHRSkge1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IubWVzc2FnZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChyZXBseSAmJiByZXBseS5fX21veldlYkV4dGVuc2lvblBvbHlmaWxsUmVqZWN0X18pIHtcbiAgICAgICAgICAvLyBDb252ZXJ0IGJhY2sgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yIGludG9cbiAgICAgICAgICAvLyBhbiBFcnJvciBpbnN0YW5jZS5cbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKHJlcGx5Lm1lc3NhZ2UpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKHJlcGx5KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdyYXBwZWRTZW5kTWVzc2FnZSA9IChuYW1lLCBtZXRhZGF0YSwgYXBpTmFtZXNwYWNlT2JqLCAuLi5hcmdzKSA9PiB7XG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA8IG1ldGFkYXRhLm1pbkFyZ3MpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGF0IGxlYXN0ICR7bWV0YWRhdGEubWluQXJnc30gJHtwbHVyYWxpemVBcmd1bWVudHMobWV0YWRhdGEubWluQXJncyl9IGZvciAke25hbWV9KCksIGdvdCAke2FyZ3MubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA+IG1ldGFkYXRhLm1heEFyZ3MpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGF0IG1vc3QgJHttZXRhZGF0YS5tYXhBcmdzfSAke3BsdXJhbGl6ZUFyZ3VtZW50cyhtZXRhZGF0YS5tYXhBcmdzKX0gZm9yICR7bmFtZX0oKSwgZ290ICR7YXJncy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCB3cmFwcGVkQ2IgPSB3cmFwcGVkU2VuZE1lc3NhZ2VDYWxsYmFjay5iaW5kKG51bGwsIHtcbiAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICByZWplY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhcmdzLnB1c2god3JhcHBlZENiKTtcbiAgICAgICAgICBhcGlOYW1lc3BhY2VPYmouc2VuZE1lc3NhZ2UoLi4uYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHN0YXRpY1dyYXBwZXJzID0ge1xuICAgICAgICBkZXZ0b29sczoge1xuICAgICAgICAgIG5ldHdvcms6IHtcbiAgICAgICAgICAgIG9uUmVxdWVzdEZpbmlzaGVkOiB3cmFwRXZlbnQob25SZXF1ZXN0RmluaXNoZWRXcmFwcGVycylcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJ1bnRpbWU6IHtcbiAgICAgICAgICBvbk1lc3NhZ2U6IHdyYXBFdmVudChvbk1lc3NhZ2VXcmFwcGVycyksXG4gICAgICAgICAgb25NZXNzYWdlRXh0ZXJuYWw6IHdyYXBFdmVudChvbk1lc3NhZ2VXcmFwcGVycyksXG4gICAgICAgICAgc2VuZE1lc3NhZ2U6IHdyYXBwZWRTZW5kTWVzc2FnZS5iaW5kKG51bGwsIFwic2VuZE1lc3NhZ2VcIiwge1xuICAgICAgICAgICAgbWluQXJnczogMSxcbiAgICAgICAgICAgIG1heEFyZ3M6IDNcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICB0YWJzOiB7XG4gICAgICAgICAgc2VuZE1lc3NhZ2U6IHdyYXBwZWRTZW5kTWVzc2FnZS5iaW5kKG51bGwsIFwic2VuZE1lc3NhZ2VcIiwge1xuICAgICAgICAgICAgbWluQXJnczogMixcbiAgICAgICAgICAgIG1heEFyZ3M6IDNcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3Qgc2V0dGluZ01ldGFkYXRhID0ge1xuICAgICAgICBjbGVhcjoge1xuICAgICAgICAgIG1pbkFyZ3M6IDEsXG4gICAgICAgICAgbWF4QXJnczogMVxuICAgICAgICB9LFxuICAgICAgICBnZXQ6IHtcbiAgICAgICAgICBtaW5BcmdzOiAxLFxuICAgICAgICAgIG1heEFyZ3M6IDFcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiB7XG4gICAgICAgICAgbWluQXJnczogMSxcbiAgICAgICAgICBtYXhBcmdzOiAxXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBhcGlNZXRhZGF0YS5wcml2YWN5ID0ge1xuICAgICAgICBuZXR3b3JrOiB7XG4gICAgICAgICAgXCIqXCI6IHNldHRpbmdNZXRhZGF0YVxuICAgICAgICB9LFxuICAgICAgICBzZXJ2aWNlczoge1xuICAgICAgICAgIFwiKlwiOiBzZXR0aW5nTWV0YWRhdGFcbiAgICAgICAgfSxcbiAgICAgICAgd2Vic2l0ZXM6IHtcbiAgICAgICAgICBcIipcIjogc2V0dGluZ01ldGFkYXRhXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gd3JhcE9iamVjdChleHRlbnNpb25BUElzLCBzdGF0aWNXcmFwcGVycywgYXBpTWV0YWRhdGEpO1xuICAgIH07XG5cbiAgICAvLyBUaGUgYnVpbGQgcHJvY2VzcyBhZGRzIGEgVU1EIHdyYXBwZXIgYXJvdW5kIHRoaXMgZmlsZSwgd2hpY2ggbWFrZXMgdGhlXG4gICAgLy8gYG1vZHVsZWAgdmFyaWFibGUgYXZhaWxhYmxlLlxuICAgIG1vZHVsZS5leHBvcnRzID0gd3JhcEFQSXMoY2hyb21lKTtcbiAgfSBlbHNlIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXMuYnJvd3NlcjtcbiAgfVxufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1icm93c2VyLXBvbHlmaWxsLmpzLm1hcFxuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8qXG4gKiBaZWQgQXR0YWNrIFByb3h5IChaQVApIGFuZCBpdHMgcmVsYXRlZCBzb3VyY2UgZmlsZXMuXG4gKlxuICogWkFQIGlzIGFuIEhUVFAvSFRUUFMgcHJveHkgZm9yIGFzc2Vzc2luZyB3ZWIgYXBwbGljYXRpb24gc2VjdXJpdHkuXG4gKlxuICogQ29weXJpZ2h0IDIwMjMgVGhlIFpBUCBEZXZlbG9wbWVudCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5jbGFzcyBSZXBvcnRlZE9iamVjdCB7XG4gIHB1YmxpYyB0aW1lc3RhbXA6IG51bWJlcjtcblxuICBwdWJsaWMgdHlwZTogc3RyaW5nO1xuXG4gIHB1YmxpYyB0YWdOYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIGlkOiBzdHJpbmc7XG5cbiAgcHVibGljIG5vZGVOYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIHVybDogc3RyaW5nO1xuXG4gIHB1YmxpYyB4cGF0aDogc3RyaW5nO1xuXG4gIHB1YmxpYyBocmVmOiBzdHJpbmcgfCBudWxsO1xuXG4gIHB1YmxpYyB0ZXh0OiBzdHJpbmcgfCBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgdGFnTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgbm9kZU5hbWU6IHN0cmluZyxcbiAgICB0ZXh0OiBzdHJpbmcgfCBudWxsLFxuICAgIHVybDogc3RyaW5nXG4gICkge1xuICAgIHRoaXMudGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMudGFnTmFtZSA9IHRhZ05hbWU7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMubm9kZU5hbWUgPSBub2RlTmFtZTtcbiAgICB0aGlzLnRleHQgPSB0ZXh0O1xuICAgIHRoaXMudXJsID0gdXJsO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpO1xuICB9XG5cbiAgcHVibGljIHRvU2hvcnRTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcywgZnVuY3Rpb24gcmVwbGFjZXIoazogc3RyaW5nLCB2OiBzdHJpbmcpIHtcbiAgICAgIGlmIChrID09PSAneHBhdGgnKSB7XG4gICAgICAgIC8vIERvbnQgcmV0dXJuIHRoZSB4cGF0aCB2YWx1ZSAtIGl0IGNhbiBjaGFuZ2UgdG9vIG9mdGVuIGluIG1hbnkgY2FzZXNcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2O1xuICAgIH0pO1xuICB9XG5cbiAgLy8gVXNlIHRoaXMgZm9yIHRlc3RzXG4gIHB1YmxpYyB0b05vblRpbWVzdGFtcFN0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLCBmdW5jdGlvbiByZXBsYWNlcihrOiBzdHJpbmcsIHY6IHN0cmluZykge1xuICAgICAgaWYgKGsgPT09ICd0aW1lc3RhbXAnKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdjtcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBSZXBvcnRlZFN0b3JhZ2UgZXh0ZW5kcyBSZXBvcnRlZE9iamVjdCB7XG4gIHB1YmxpYyB0b1Nob3J0U3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMsIGZ1bmN0aW9uIHJlcGxhY2VyKGs6IHN0cmluZywgdjogc3RyaW5nKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGsgPT09ICd4cGF0aCcgfHxcbiAgICAgICAgayA9PT0gJ2hyZWYnIHx8XG4gICAgICAgIGsgPT09ICd0aW1lc3RhbXAnIHx8XG4gICAgICAgIChrID09PSAndXJsJyAmJiAhKHRoaXMudHlwZSA9PT0gJ2Nvb2tpZXMnKSlcbiAgICAgICkge1xuICAgICAgICAvLyBTdG9yYWdlIGV2ZW50cyBhcmUgbm90IHRpbWUgb3IgVVJMIHNwZWNpZmljXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdjtcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBSZXBvcnRlZEVsZW1lbnQgZXh0ZW5kcyBSZXBvcnRlZE9iamVjdCB7XG4gIHB1YmxpYyB0YWdUeXBlOiBzdHJpbmcgfCBudWxsO1xuXG4gIHB1YmxpYyBmb3JtSWQ6IG51bWJlciB8IG51bGw7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnQsIHVybDogc3RyaW5nKSB7XG4gICAgc3VwZXIoXG4gICAgICAnbm9kZUFkZGVkJyxcbiAgICAgIGVsZW1lbnQudGFnTmFtZSxcbiAgICAgIGVsZW1lbnQuaWQsXG4gICAgICBlbGVtZW50Lm5vZGVOYW1lLFxuICAgICAgZWxlbWVudC50ZXh0Q29udGVudCxcbiAgICAgIHVybFxuICAgICk7XG4gICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gJ0EnKSB7XG4gICAgICAvLyBUaGlzIGdldHMgdGhlIGZ1bGwgVVJMIHJhdGhlciB0aGFuIGEgcmVsYXRpdmUgb25lXG4gICAgICBjb25zdCBhOiBIVE1MQW5jaG9yRWxlbWVudCA9IGVsZW1lbnQgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gICAgICB0aGlzLmhyZWYgPSBhLnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LnRhZ05hbWUgPT09ICdGT1JNJykge1xuICAgICAgdGhpcy5mb3JtSWQgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkb2N1bWVudC5mb3JtcykuaW5kZXhPZihlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgLy8gQ2FwdHVyZSBleHRyYSB1c2VmdWwgaW5mbyBmb3IgaW5wdXQgZWxlbWVudHNcbiAgICAgIGNvbnN0IGlucHV0OiBIVE1MSW5wdXRFbGVtZW50ID0gZWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgdGhpcy50YWdUeXBlID0gaW5wdXQudHlwZTtcbiAgICAgIHRoaXMudGV4dCA9IGlucHV0LnZhbHVlO1xuICAgICAgY29uc3Qge2Zvcm19ID0gaW5wdXQ7XG4gICAgICBpZiAoZm9ybSkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgbm90IHdvcmsgaWYgZm9ybSB0YWdzIGFyZSBub3QgdXNlZFxuICAgICAgICB0aGlzLmZvcm1JZCA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRvY3VtZW50LmZvcm1zKS5pbmRleE9mKGZvcm0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2hyZWYnKSkge1xuICAgICAgdGhpcy5ocmVmID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9TaG9ydFN0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLCBmdW5jdGlvbiByZXBsYWNlcihrOiBzdHJpbmcsIHY6IHN0cmluZykge1xuICAgICAgaWYgKGsgPT09ICd0aW1lc3RhbXAnKSB7XG4gICAgICAgIC8vIE5vIHBvaW50IHJlcG9ydGluZyB0aGUgc2FtZSBlbGVtZW50IGxvdHMgb2YgdGltZXNcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2O1xuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFJlcG9ydGVkRXZlbnQge1xuICBwdWJsaWMgdGltZXN0YW1wOiBudW1iZXI7XG5cbiAgcHVibGljIGV2ZW50TmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyB1cmw6IHN0cmluZztcblxuICBwdWJsaWMgY291bnQ6IG51bWJlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgdGhpcy5ldmVudE5hbWUgPSBldmVudE5hbWU7XG4gICAgdGhpcy51cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICB0aGlzLmNvdW50ID0gMTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTtcbiAgfVxufVxuXG5leHBvcnQge1JlcG9ydGVkRWxlbWVudCwgUmVwb3J0ZWRPYmplY3QsIFJlcG9ydGVkU3RvcmFnZSwgUmVwb3J0ZWRFdmVudH07XG4iLCIvKlxuICogWmVkIEF0dGFjayBQcm94eSAoWkFQKSBhbmQgaXRzIHJlbGF0ZWQgc291cmNlIGZpbGVzLlxuICpcbiAqIFpBUCBpcyBhbiBIVFRQL0hUVFBTIHByb3h5IGZvciBhc3Nlc3Npbmcgd2ViIGFwcGxpY2F0aW9uIHNlY3VyaXR5LlxuICpcbiAqIENvcHlyaWdodCAyMDIzIFRoZSBaQVAgRGV2ZWxvcG1lbnQgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IEJyb3dzZXIgZnJvbSAnd2ViZXh0ZW5zaW9uLXBvbHlmaWxsJztcblxuLy8gVGhlIG1hbmlmZXN0IHdpbGwgYmUgdW5kZWZpbmVkIHdoZW4gcnVubmluZyB0aGUgdGVzdHNcbmV4cG9ydCBjb25zdCBJU19GVUxMX0VYVEVOU0lPTiA9XG4gIHR5cGVvZiBCcm93c2VyLnJ1bnRpbWUuZ2V0TWFuaWZlc3QgPT09ICd1bmRlZmluZWQnIHx8XG4gIEJyb3dzZXIucnVudGltZS5nZXRNYW5pZmVzdCgpLm5hbWUgPT09ICdaQVAgYnkgQ2hlY2ttYXJ4IEJyb3dzZXIgRXh0ZW5zaW9uJztcblxuZXhwb3J0IGNvbnN0IFpFU1RfQ0xJRU5UX1NXSVRDSF9UT19GUkFNRSA9ICdaZXN0Q2xpZW50U3dpdGNoVG9GcmFtZSc7XG5leHBvcnQgY29uc3QgWkVTVF9DTElFTlRfRUxFTUVOVF9DTElDSyA9ICdaZXN0Q2xpZW50RWxlbWVudENsaWNrJztcbmV4cG9ydCBjb25zdCBaRVNUX0NMSUVOVF9FTEVNRU5UX1NDUk9MTF9UTyA9ICdaZXN0Q2xpZW50RWxlbWVudFNjcm9sbFRvJztcbmV4cG9ydCBjb25zdCBaRVNUX0NMSUVOVF9FTEVNRU5UX1NFTkRfS0VZUyA9ICdaZXN0Q2xpZW50RWxlbWVudFNlbmRLZXlzJztcbmV4cG9ydCBjb25zdCBaRVNUX0NMSUVOVF9FTEVNRU5UX1NVQk1JVCA9ICdaZXN0Q2xpZW50RWxlbWVudFN1Ym1pdCc7XG5leHBvcnQgY29uc3QgWkVTVF9DTElFTlRfTEFVTkNIID0gJ1plc3RDbGllbnRMYXVuY2gnO1xuZXhwb3J0IGNvbnN0IFpFU1RfQ0xJRU5UX0VMRU1FTlRfQ0xFQVIgPSAnWmVzdENsaWVudEVsZW1lbnRDbGVhcic7XG5leHBvcnQgY29uc3QgWkVTVF9DTElFTlRfV0lORE9XX0NMT1NFID0gJ1plc3RDbGllbnRXaW5kb3dDbG9zZSc7XG5leHBvcnQgY29uc3QgWkVTVF9DTElFTlRfRUxFTUVOVF9NT1VTRV9PVkVSID0gJ1plc3RDbGllbnRFbGVtZW50TW91c2VPdmVyJztcbmV4cG9ydCBjb25zdCBaRVNUX0NPTU1FTlQgPSAnWmVzdENvbW1lbnQnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfV0lORE9XX0hBTkRMRSA9ICd3aW5kb3dIYW5kbGUxJztcblxuZXhwb3J0IGNvbnN0IFpBUF9TVE9QX1JFQ09SRElORyA9ICd6YXBTdG9wUmVjb3JkaW5nJztcbmV4cG9ydCBjb25zdCBaQVBfU1RBUlRfUkVDT1JESU5HID0gJ3phcFN0YXJ0UmVjb3JkaW5nJztcbmV4cG9ydCBjb25zdCBaRVNUX1NDUklQVCA9ICd6ZXN0U2NyaXB0JztcblxuZXhwb3J0IGNvbnN0IFNUT1BfUkVDT1JESU5HID0gJ3N0b3BSZWNvcmRpbmcnO1xuZXhwb3J0IGNvbnN0IFJFU0VUX1pFU1RfU0NSSVBUID0gJ3Jlc2V0WmVzdFNjcmlwdCc7XG5leHBvcnQgY29uc3QgR0VUX1pFU1RfU0NSSVBUID0gJ2dldFplc3RTY3JpcHQnO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USVRMRSA9ICd1cGRhdGVUaXRsZSc7XG5cbmV4cG9ydCBjb25zdCBSRVBPUlRfRVZFTlQgPSAncmVwb3J0RXZlbnQnO1xuZXhwb3J0IGNvbnN0IFJFUE9SVF9PQkpFQ1QgPSAncmVwb3J0T2JqZWN0JztcblxuZXhwb3J0IGNvbnN0IExPQ0FMX1NUT1JBR0UgPSAnbG9jYWxTdG9yYWdlJztcbmV4cG9ydCBjb25zdCBTRVNTSU9OX1NUT1JBR0UgPSAnc2Vzc2lvblN0b3JhZ2UnO1xuZXhwb3J0IGNvbnN0IExPQ0FMX1pBUF9VUkwgPSAnbG9jYWx6YXB1cmwnO1xuZXhwb3J0IGNvbnN0IExPQ0FMX1pBUF9FTkFCTEUgPSAnbG9jYWx6YXBlbmFibGUnO1xuZXhwb3J0IGNvbnN0IExPQ0FMX1pBUF9SRUNPUkQgPSAnbG9jYWx6YXByZWNvcmQnO1xuZXhwb3J0IGNvbnN0IFVSTF9aQVBfRU5BQkxFID0gJ3phcGVuYWJsZSc7XG5leHBvcnQgY29uc3QgVVJMX1pBUF9SRUNPUkQgPSAnemFwcmVjb3JkJztcblxuZXhwb3J0IGNvbnN0IFpBUF9VUkwgPSAnemFwdXJsJztcbmV4cG9ydCBjb25zdCBaQVBfS0VZID0gJ3phcGtleSc7XG5leHBvcnQgY29uc3QgWkFQX0VOQUJMRSA9ICd6YXBlbmFibGUnO1xuXG5leHBvcnQgY29uc3QgWkFQX0ZMT0FUSU5HX0RJViA9ICdaYXBmbG9hdGluZ0Rpdic7XG5leHBvcnQgY29uc3QgWkFQX0ZMT0FUSU5HX0RJVl9FTEVNRU5UUyA9ICdaYXBmbG9hdGluZ0RpdkVsZW1lbnRzJztcbiIsIi8qXG4gKiBaZWQgQXR0YWNrIFByb3h5IChaQVApIGFuZCBpdHMgcmVsYXRlZCBzb3VyY2UgZmlsZXMuXG4gKlxuICogWkFQIGlzIGFuIEhUVFAvSFRUUFMgcHJveHkgZm9yIGFzc2Vzc2luZyB3ZWIgYXBwbGljYXRpb24gc2VjdXJpdHkuXG4gKlxuICogQ29weXJpZ2h0IDIwMjMgVGhlIFpBUCBEZXZlbG9wbWVudCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1xuICBERUZBVUxUX1dJTkRPV19IQU5ETEUsXG4gIFpFU1RfQ0xJRU5UX0VMRU1FTlRfQ0xFQVIsXG4gIFpFU1RfQ0xJRU5UX0VMRU1FTlRfQ0xJQ0ssXG4gIFpFU1RfQ0xJRU5UX0VMRU1FTlRfTU9VU0VfT1ZFUixcbiAgWkVTVF9DTElFTlRfRUxFTUVOVF9TQ1JPTExfVE8sXG4gIFpFU1RfQ0xJRU5UX0VMRU1FTlRfU0VORF9LRVlTLFxuICBaRVNUX0NMSUVOVF9FTEVNRU5UX1NVQk1JVCxcbiAgWkVTVF9DTElFTlRfTEFVTkNILFxuICBaRVNUX0NMSUVOVF9TV0lUQ0hfVE9fRlJBTUUsXG4gIFpFU1RfQ0xJRU5UX1dJTkRPV19DTE9TRSxcbiAgWkVTVF9DT01NRU5ULFxufSBmcm9tICcuLi8uLi91dGlscy9jb25zdGFudHMnO1xuXG5jbGFzcyBFbGVtZW50TG9jYXRvciB7XG4gIHR5cGU6IHN0cmluZztcblxuICBlbGVtZW50OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IodHlwZTogc3RyaW5nLCBlbGVtZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gIH1cblxuICB0b0pTT04oKToge3R5cGU6IHN0cmluZzsgZWxlbWVudDogc3RyaW5nfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGVsZW1lbnQ6IHRoaXMuZWxlbWVudCxcbiAgICB9O1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIFplc3RTdGF0ZW1lbnQge1xuICBpbmRleDogbnVtYmVyO1xuXG4gIGVsZW1lbnRUeXBlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZTtcbiAgICB0aGlzLmluZGV4ID0gLTE7XG4gIH1cblxuICBhYnN0cmFjdCB0b0pTT04oKTogc3RyaW5nO1xufVxuXG5jbGFzcyBaZXN0U3RhdGVtZW50TGF1bmNoQnJvd3NlciBleHRlbmRzIFplc3RTdGF0ZW1lbnQge1xuICB3aW5kb3dIYW5kbGU6IHN0cmluZztcblxuICBicm93c2VyVHlwZTogc3RyaW5nO1xuXG4gIHVybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGJyb3dzZXJUeXBlOiBzdHJpbmcsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgd2luZG93SGFuZGxlID0gREVGQVVMVF9XSU5ET1dfSEFORExFXG4gICkge1xuICAgIHN1cGVyKFpFU1RfQ0xJRU5UX0xBVU5DSCk7XG4gICAgdGhpcy53aW5kb3dIYW5kbGUgPSB3aW5kb3dIYW5kbGU7XG4gICAgdGhpcy5icm93c2VyVHlwZSA9IGJyb3dzZXJUeXBlO1xuICAgIHRoaXMudXJsID0gdXJsO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHdpbmRvd0hhbmRsZTogdGhpcy53aW5kb3dIYW5kbGUsXG4gICAgICBicm93c2VyVHlwZTogdGhpcy5icm93c2VyVHlwZSxcbiAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICBjYXBhYmlsaXRpZXM6ICcnLFxuICAgICAgaGVhZGxlc3M6IGZhbHNlLFxuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudENvbW1lbnQgZXh0ZW5kcyBaZXN0U3RhdGVtZW50IHtcbiAgY29tbWVudDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGNvbW1lbnQ6IHN0cmluZykge1xuICAgIHN1cGVyKFpFU1RfQ09NTUVOVCk7XG4gICAgdGhpcy5jb21tZW50ID0gY29tbWVudDtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBlbGVtZW50VHlwZTogdGhpcy5lbGVtZW50VHlwZSxcbiAgICAgIGNvbW1lbnQ6IHRoaXMuY29tbWVudCxcbiAgICB9KTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBaZXN0U3RhdGVtZW50RWxlbWVudCBleHRlbmRzIFplc3RTdGF0ZW1lbnQge1xuICBlbGVtZW50TG9jYXRvcjogRWxlbWVudExvY2F0b3I7XG5cbiAgd2luZG93SGFuZGxlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFR5cGU6IHN0cmluZywgZWxlbWVudExvY2F0b3I6IEVsZW1lbnRMb2NhdG9yKSB7XG4gICAgc3VwZXIoZWxlbWVudFR5cGUpO1xuICAgIHRoaXMuZWxlbWVudExvY2F0b3IgPSBlbGVtZW50TG9jYXRvcjtcbiAgfVxufVxuXG5jbGFzcyBaZXN0U3RhdGVtZW50RWxlbWVudENsaWNrIGV4dGVuZHMgWmVzdFN0YXRlbWVudEVsZW1lbnQge1xuICB3YWl0Rm9yTXNlYzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvcixcbiAgICB3YWl0Rm9yTXNlYzogbnVtYmVyLFxuICAgIHdpbmRvd0hhbmRsZSA9IERFRkFVTFRfV0lORE9XX0hBTkRMRVxuICApIHtcbiAgICBzdXBlcihaRVNUX0NMSUVOVF9FTEVNRU5UX0NMSUNLLCBlbGVtZW50TG9jYXRvcik7XG4gICAgdGhpcy53aW5kb3dIYW5kbGUgPSB3aW5kb3dIYW5kbGU7XG4gICAgdGhpcy53YWl0Rm9yTXNlYyA9IHdhaXRGb3JNc2VjO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHdpbmRvd0hhbmRsZTogdGhpcy53aW5kb3dIYW5kbGUsXG4gICAgICAuLi50aGlzLmVsZW1lbnRMb2NhdG9yLnRvSlNPTigpLFxuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICB3YWl0Rm9yTXNlYzogdGhpcy53YWl0Rm9yTXNlYyxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBlbGVtZW50VHlwZTogdGhpcy5lbGVtZW50VHlwZSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBaZXN0U3RhdGVtZW50RWxlbWVudFNjcm9sbFRvIGV4dGVuZHMgWmVzdFN0YXRlbWVudEVsZW1lbnQge1xuICB3YWl0Rm9yTXNlYzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvcixcbiAgICB3YWl0Rm9yTXNlYzogbnVtYmVyLFxuICAgIHdpbmRvd0hhbmRsZSA9IERFRkFVTFRfV0lORE9XX0hBTkRMRVxuICApIHtcbiAgICBzdXBlcihaRVNUX0NMSUVOVF9FTEVNRU5UX1NDUk9MTF9UTywgZWxlbWVudExvY2F0b3IpO1xuICAgIHRoaXMud2FpdEZvck1zZWMgPSB3YWl0Rm9yTXNlYztcbiAgICB0aGlzLndpbmRvd0hhbmRsZSA9IHdpbmRvd0hhbmRsZTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB3aW5kb3dIYW5kbGU6IHRoaXMud2luZG93SGFuZGxlLFxuICAgICAgLi4udGhpcy5lbGVtZW50TG9jYXRvci50b0pTT04oKSxcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgd2FpdEZvck1zZWM6IHRoaXMud2FpdEZvck1zZWMsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudEVsZW1lbnRTZW5kS2V5cyBleHRlbmRzIFplc3RTdGF0ZW1lbnRFbGVtZW50IHtcbiAga2V5czogc3RyaW5nO1xuXG4gIHdhaXRGb3JNc2VjOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudExvY2F0b3I6IEVsZW1lbnRMb2NhdG9yLFxuICAgIGtleXM6IHN0cmluZyxcbiAgICB3YWl0Rm9yTXNlYzogbnVtYmVyLFxuICAgIHdpbmRvd0hhbmRsZSA9IERFRkFVTFRfV0lORE9XX0hBTkRMRVxuICApIHtcbiAgICBzdXBlcihaRVNUX0NMSUVOVF9FTEVNRU5UX1NFTkRfS0VZUywgZWxlbWVudExvY2F0b3IpO1xuICAgIHRoaXMua2V5cyA9IGtleXM7XG4gICAgdGhpcy53YWl0Rm9yTXNlYyA9IHdhaXRGb3JNc2VjO1xuICAgIHRoaXMud2luZG93SGFuZGxlID0gd2luZG93SGFuZGxlO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHZhbHVlOiB0aGlzLmtleXMsXG4gICAgICB3aW5kb3dIYW5kbGU6IHRoaXMud2luZG93SGFuZGxlLFxuICAgICAgLi4udGhpcy5lbGVtZW50TG9jYXRvci50b0pTT04oKSxcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgd2FpdEZvck1zZWM6IHRoaXMud2FpdEZvck1zZWMsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudEVsZW1lbnRTdWJtaXQgZXh0ZW5kcyBaZXN0U3RhdGVtZW50RWxlbWVudCB7XG4gIGtleXM6IHN0cmluZztcblxuICB3YWl0Rm9yTXNlYzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvcixcbiAgICB3YWl0Rm9yTXNlYzogbnVtYmVyLFxuICAgIHdpbmRvd0hhbmRsZSA9IERFRkFVTFRfV0lORE9XX0hBTkRMRVxuICApIHtcbiAgICBzdXBlcihaRVNUX0NMSUVOVF9FTEVNRU5UX1NVQk1JVCwgZWxlbWVudExvY2F0b3IpO1xuICAgIHRoaXMud2FpdEZvck1zZWMgPSB3YWl0Rm9yTXNlYztcbiAgICB0aGlzLndpbmRvd0hhbmRsZSA9IHdpbmRvd0hhbmRsZTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB2YWx1ZTogdGhpcy5rZXlzLFxuICAgICAgd2luZG93SGFuZGxlOiB0aGlzLndpbmRvd0hhbmRsZSxcbiAgICAgIC4uLnRoaXMuZWxlbWVudExvY2F0b3IudG9KU09OKCksXG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgIHdhaXRGb3JNc2VjOiB0aGlzLndhaXRGb3JNc2VjLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLmVsZW1lbnRUeXBlLFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFplc3RTdGF0ZW1lbnRFbGVtZW50Q2xlYXIgZXh0ZW5kcyBaZXN0U3RhdGVtZW50RWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvcixcbiAgICB3aW5kb3dIYW5kbGUgPSBERUZBVUxUX1dJTkRPV19IQU5ETEVcbiAgKSB7XG4gICAgc3VwZXIoWkVTVF9DTElFTlRfRUxFTUVOVF9DTEVBUiwgZWxlbWVudExvY2F0b3IpO1xuICAgIHRoaXMud2luZG93SGFuZGxlID0gd2luZG93SGFuZGxlO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHdpbmRvd0hhbmRsZTogdGhpcy53aW5kb3dIYW5kbGUsXG4gICAgICAuLi50aGlzLmVsZW1lbnRMb2NhdG9yLnRvSlNPTigpLFxuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudFdpbmRvd0Nsb3NlIGV4dGVuZHMgWmVzdFN0YXRlbWVudCB7XG4gIHNsZWVwSW5TZWNvbmRzOiBudW1iZXI7XG5cbiAgd2luZG93SGFuZGxlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2xlZXBJblNlY29uZHM6IG51bWJlciwgd2luZG93SGFuZGxlID0gREVGQVVMVF9XSU5ET1dfSEFORExFKSB7XG4gICAgc3VwZXIoWkVTVF9DTElFTlRfV0lORE9XX0NMT1NFKTtcbiAgICB0aGlzLnNsZWVwSW5TZWNvbmRzID0gc2xlZXBJblNlY29uZHM7XG4gICAgdGhpcy53aW5kb3dIYW5kbGUgPSB3aW5kb3dIYW5kbGU7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgd2luZG93SGFuZGxlOiB0aGlzLndpbmRvd0hhbmRsZSxcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgc2xlZXBJblNlY29uZHM6IHRoaXMuc2xlZXBJblNlY29uZHMsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudFN3aXRjaFRvRnJhbWUgZXh0ZW5kcyBaZXN0U3RhdGVtZW50IHtcbiAgZnJhbWVJbmRleDogbnVtYmVyO1xuXG4gIGZyYW1lTmFtZTogc3RyaW5nO1xuXG4gIHdpbmRvd0hhbmRsZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGZyYW1lSW5kZXg6IG51bWJlcixcbiAgICBmcmFtZU5hbWUgPSAnJyxcbiAgICB3aW5kb3dIYW5kbGUgPSBERUZBVUxUX1dJTkRPV19IQU5ETEVcbiAgKSB7XG4gICAgc3VwZXIoWkVTVF9DTElFTlRfU1dJVENIX1RPX0ZSQU1FKTtcbiAgICB0aGlzLmZyYW1lSW5kZXggPSBmcmFtZUluZGV4O1xuICAgIHRoaXMuZnJhbWVOYW1lID0gZnJhbWVOYW1lO1xuICAgIHRoaXMud2luZG93SGFuZGxlID0gd2luZG93SGFuZGxlO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHdpbmRvd0hhbmRsZTogdGhpcy53aW5kb3dIYW5kbGUsXG4gICAgICBmcmFtZUluZGV4OiB0aGlzLmZyYW1lSW5kZXgsXG4gICAgICBmcmFtZU5hbWU6IHRoaXMuZnJhbWVOYW1lLFxuICAgICAgcGFyZW50OiB0aGlzLmZyYW1lSW5kZXggPT09IC0xLFxuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudEVsZW1lbnRNb3VzZU92ZXIgZXh0ZW5kcyBaZXN0U3RhdGVtZW50RWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvcikge1xuICAgIHN1cGVyKFpFU1RfQ0xJRU5UX0VMRU1FTlRfTU9VU0VfT1ZFUiwgZWxlbWVudExvY2F0b3IpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLmVsZW1lbnRUeXBlLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCB7XG4gIEVsZW1lbnRMb2NhdG9yLFxuICBaZXN0U3RhdGVtZW50LFxuICBaZXN0U3RhdGVtZW50Q29tbWVudCxcbiAgWmVzdFN0YXRlbWVudExhdW5jaEJyb3dzZXIsXG4gIFplc3RTdGF0ZW1lbnRFbGVtZW50TW91c2VPdmVyLFxuICBaZXN0U3RhdGVtZW50RWxlbWVudENsaWNrLFxuICBaZXN0U3RhdGVtZW50U3dpdGNoVG9GcmFtZSxcbiAgWmVzdFN0YXRlbWVudEVsZW1lbnRTY3JvbGxUbyxcbiAgWmVzdFN0YXRlbWVudEVsZW1lbnRTZW5kS2V5cyxcbiAgWmVzdFN0YXRlbWVudEVsZW1lbnRTdWJtaXQsXG4gIFplc3RTdGF0ZW1lbnRFbGVtZW50Q2xlYXIsXG4gIFplc3RTdGF0ZW1lbnRXaW5kb3dDbG9zZSxcbn07XG4iLCIvKlxuICogWmVkIEF0dGFjayBQcm94eSAoWkFQKSBhbmQgaXRzIHJlbGF0ZWQgc291cmNlIGZpbGVzLlxuICpcbiAqIFpBUCBpcyBhbiBIVFRQL0hUVFBTIHByb3h5IGZvciBhc3Nlc3Npbmcgd2ViIGFwcGxpY2F0aW9uIHNlY3VyaXR5LlxuICpcbiAqIENvcHlyaWdodCAyMDIzIFRoZSBaQVAgRGV2ZWxvcG1lbnQgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0ICdlbW9qaS1sb2cnO1xuaW1wb3J0IEJyb3dzZXIsIHtDb29raWVzLCBSdW50aW1lfSBmcm9tICd3ZWJleHRlbnNpb24tcG9seWZpbGwnO1xuaW1wb3J0IHtSZXBvcnRlZFN0b3JhZ2V9IGZyb20gJy4uL3R5cGVzL1JlcG9ydGVkTW9kZWwnO1xuaW1wb3J0IHtaZXN0U2NyaXB0LCBaZXN0U2NyaXB0TWVzc2FnZX0gZnJvbSAnLi4vdHlwZXMvemVzdFNjcmlwdC9aZXN0U2NyaXB0JztcbmltcG9ydCB7WmVzdFN0YXRlbWVudFdpbmRvd0Nsb3NlfSBmcm9tICcuLi90eXBlcy96ZXN0U2NyaXB0L1plc3RTdGF0ZW1lbnQnO1xuaW1wb3J0IHtcbiAgR0VUX1pFU1RfU0NSSVBULFxuICBJU19GVUxMX0VYVEVOU0lPTixcbiAgTE9DQUxfU1RPUkFHRSxcbiAgUkVQT1JUX0VWRU5ULFxuICBSRVBPUlRfT0JKRUNULFxuICBSRVNFVF9aRVNUX1NDUklQVCxcbiAgU0VTU0lPTl9TVE9SQUdFLFxuICBTVE9QX1JFQ09SRElORyxcbiAgWkVTVF9TQ1JJUFQsXG59IGZyb20gJy4uL3V0aWxzL2NvbnN0YW50cyc7XG5cbmNvbnNvbGUubG9nKCdaQVAgU2VydmljZSBXb3JrZXIg8J+RiycpO1xuXG4vKlxuICBXZSBjaGVjayB0aGUgc3RvcmFnZSBvbiBldmVyeSBwYWdlLCBzbyBuZWVkIHRvIHJlY29yZCB3aGljaCBzdG9yYWdlIGV2ZW50cyB3ZSBoYXZlIHJlcG9ydGVkIHRvIFpBUCBoZXJlIHNvIHRoYXQgd2UgZG9udCBrZWVwIHNlbmRpbmcgdGhlIHNhbWUgZXZlbnRzLlxuKi9cbmNvbnN0IHJlcG9ydGVkU3RvcmFnZSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuY29uc3QgemVzdFNjcmlwdCA9IG5ldyBaZXN0U2NyaXB0KCk7XG4vKlxuICBBIGNhbGxiYWNrIFVSTCB3aWxsIG9ubHkgYmUgYXZhaWxhYmxlIGlmIHRoZSBicm93c2VyIGhhcyBiZWVuIGxhdW5jaGVkIGZyb20gWkFQLCBvdGhlcndpc2UgY2FsbCB0aGUgaW5kaXZpZHVhbCBlbmRwb2ludHNcbiovXG5cbmZ1bmN0aW9uIHphcEFwaVVybCh6YXB1cmw6IHN0cmluZywgYWN0aW9uOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoemFwdXJsLmluZGV4T2YoJy96YXBDYWxsQmFja1VybC8nKSA+IDApIHtcbiAgICByZXR1cm4gemFwdXJsO1xuICB9XG4gIHJldHVybiBgJHt6YXB1cmx9SlNPTi9jbGllbnQvYWN0aW9uLyR7YWN0aW9ufS9gO1xufVxuXG5mdW5jdGlvbiBnZXRVcmxGcm9tQ29va2llRG9tYWluKGRvbWFpbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGRvbWFpbi5zdGFydHNXaXRoKCcuJylcbiAgICA/IGBodHRwOi8vJHtkb21haW4uc3Vic3RyaW5nKDEpfWBcbiAgICA6IGBodHRwOi8vJHtkb21haW59YDtcbn1cblxuZnVuY3Rpb24gZ2V0Q29va2llVGFiVXJsKGNvb2tpZTogQ29va2llcy5Db29raWUpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBnZXRBbGxUYWJzID0gQnJvd3Nlci50YWJzLnF1ZXJ5KHtcbiAgICBjdXJyZW50V2luZG93OiB0cnVlLFxuICB9KTtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBnZXRBbGxUYWJzXG4gICAgICAudGhlbigoYWxsVGFicykgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IHRhYiBvZiBhbGxUYWJzKSB7XG4gICAgICAgICAgaWYgKHRhYi51cmwpIHtcbiAgICAgICAgICAgIGNvbnN0IGdldEFsbENvb2tpZXNGb3JUYWIgPSBCcm93c2VyLmNvb2tpZXMuZ2V0QWxsKHt1cmw6IHRhYi51cmx9KTtcbiAgICAgICAgICAgIGdldEFsbENvb2tpZXNGb3JUYWIudGhlbigoY29va2llcykgPT4ge1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IGMgb2YgY29va2llcykge1xuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgIGMubmFtZSA9PT0gY29va2llLm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgIGMudmFsdWUgPT09IGNvb2tpZS52YWx1ZSAmJlxuICAgICAgICAgICAgICAgICAgYy5kb21haW4gPT09IGNvb2tpZS5kb21haW4gJiZcbiAgICAgICAgICAgICAgICAgIGMuc3RvcmVJZCA9PT0gY29va2llLnN0b3JlSWRcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgIHJlc29sdmUoXG4gICAgICAgICAgICAgICAgICAgIHRhYi51cmwgPyB0YWIudXJsIDogZ2V0VXJsRnJvbUNvb2tpZURvbWFpbihjb29raWUuZG9tYWluKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgQ291bGQgbm90IGZldGNoIHRhYnM6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgICAgcmVqZWN0KGdldFVybEZyb21Db29raWVEb21haW4oY29va2llLmRvbWFpbikpO1xuICAgICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXBvcnRDb29raWVzKFxuICBjb29raWU6IENvb2tpZXMuQ29va2llLFxuICB6YXB1cmw6IHN0cmluZyxcbiAgemFwa2V5OiBzdHJpbmdcbik6IGJvb2xlYW4ge1xuICBsZXQgY29va2llU3RyaW5nID0gYCR7Y29va2llLm5hbWV9PSR7Y29va2llLnZhbHVlfTsgcGF0aD0ke2Nvb2tpZS5wYXRofTsgZG9tYWluPSR7Y29va2llLmRvbWFpbn1gO1xuICBpZiAoY29va2llLmV4cGlyYXRpb25EYXRlKSB7XG4gICAgY29va2llU3RyaW5nID0gY29va2llU3RyaW5nLmNvbmNhdChcbiAgICAgIGA7IGV4cGlyZXM9JHtuZXcgRGF0ZShjb29raWUuZXhwaXJhdGlvbkRhdGUgKiAxMDAwKS50b1VUQ1N0cmluZygpfWBcbiAgICApO1xuICB9XG4gIGlmIChjb29raWUuc2VjdXJlKSB7XG4gICAgY29va2llU3RyaW5nID0gY29va2llU3RyaW5nLmNvbmNhdChgOyBzZWN1cmVgKTtcbiAgfVxuICBpZiAoY29va2llLnNhbWVTaXRlID09PSAnbGF4JyB8fCBjb29raWUuc2FtZVNpdGUgPT09ICdzdHJpY3QnKSB7XG4gICAgY29va2llU3RyaW5nID0gY29va2llU3RyaW5nLmNvbmNhdChgOyBTYW1lU2l0ZT0ke2Nvb2tpZS5zYW1lU2l0ZX1gKTtcbiAgfVxuICBpZiAoY29va2llLmh0dHBPbmx5KSB7XG4gICAgY29va2llU3RyaW5nID0gY29va2llU3RyaW5nLmNvbmNhdChgOyBIdHRwT25seWApO1xuICB9XG5cbiAgZ2V0Q29va2llVGFiVXJsKGNvb2tpZSlcbiAgICAudGhlbigoY29va2llVXJsKSA9PiB7XG4gICAgICBjb25zdCByZXBTdG9yYWdlID0gbmV3IFJlcG9ydGVkU3RvcmFnZShcbiAgICAgICAgJ0Nvb2tpZXMnLFxuICAgICAgICAnJyxcbiAgICAgICAgY29va2llLm5hbWUsXG4gICAgICAgICcnLFxuICAgICAgICBjb29raWVTdHJpbmcsXG4gICAgICAgIGNvb2tpZVVybFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHJlcFN0b3JTdHI6IHN0cmluZyA9IHJlcFN0b3JhZ2UudG9TaG9ydFN0cmluZygpO1xuICAgICAgaWYgKFxuICAgICAgICAhcmVwb3J0ZWRTdG9yYWdlLmhhcyhyZXBTdG9yU3RyKSAmJlxuICAgICAgICByZXBTdG9yYWdlLnVybC5zdGFydHNXaXRoKCdodHRwJylcbiAgICAgICkge1xuICAgICAgICBjb25zdCBib2R5ID0gYG9iamVjdEpzb249JHtlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICAgICAgcmVwU3RvcmFnZS50b1N0cmluZygpXG4gICAgICAgICl9JmFwaWtleT0ke2VuY29kZVVSSUNvbXBvbmVudCh6YXBrZXkpfWA7XG5cbiAgICAgICAgZmV0Y2goemFwQXBpVXJsKHphcHVybCwgUkVQT1JUX09CSkVDVCksIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5LFxuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICByZXBvcnRlZFN0b3JhZ2UuYWRkKHJlcFN0b3JTdHIpO1xuICAgICAgfVxuICAgIH0pXG4gICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBzZW5kWmVzdFNjcmlwdFRvWkFQKFxuICBkYXRhOiBzdHJpbmcsXG4gIHphcGtleTogc3RyaW5nLFxuICB6YXB1cmw6IHN0cmluZ1xuKTogdm9pZCB7XG4gIGlmIChJU19GVUxMX0VYVEVOU0lPTikge1xuICAgIGNvbnN0IGJvZHkgPSBgc3RhdGVtZW50SnNvbj0ke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgIGRhdGFcbiAgICApfSZhcGlrZXk9JHtlbmNvZGVVUklDb21wb25lbnQoemFwa2V5KX1gO1xuICAgIGNvbnNvbGUubG9nKGBib2R5ID0gJHtib2R5fWApO1xuICAgIGZldGNoKHphcEFwaVVybCh6YXB1cmwsICdyZXBvcnRaZXN0U3RhdGVtZW50JyksIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keSxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBoYW5kbGVNZXNzYWdlKFxuICByZXF1ZXN0OiBNZXNzYWdlRXZlbnQsXG4gIHphcHVybDogc3RyaW5nLFxuICB6YXBrZXk6IHN0cmluZ1xuKTogUHJvbWlzZTxib29sZWFuIHwgWmVzdFNjcmlwdE1lc3NhZ2U+IHtcbiAgY29uc29sZS5sb2coYFpBUCBTZXJ2aWNlIHdvcmtlciBjYWxsaW5nIFpBUCBvbiAke3phcHVybH1gKTtcbiAgY29uc29sZS5sb2coemFwQXBpVXJsKHphcHVybCwgUkVQT1JUX09CSkVDVCkpO1xuICBjb25zb2xlLmxvZyhlbmNvZGVVUklDb21wb25lbnQoemFwa2V5KSk7XG4gIGNvbnNvbGUubG9nKGBUeXBlOiAke3JlcXVlc3QudHlwZX1gKTtcbiAgY29uc29sZS5sb2coYERhdGE6ICR7cmVxdWVzdC5kYXRhfWApO1xuICBzd2l0Y2ggKHJlcXVlc3QudHlwZSkge1xuICAgIGNhc2UgUkVQT1JUX09CSkVDVDoge1xuICAgICAgY29uc3QgcmVwT2JqID0gSlNPTi5wYXJzZShyZXF1ZXN0LmRhdGEpO1xuICAgICAgaWYgKHJlcE9iai50eXBlID09PSBMT0NBTF9TVE9SQUdFIHx8IHJlcE9iai50eXBlID09PSBTRVNTSU9OX1NUT1JBR0UpIHtcbiAgICAgICAgY29uc3QgcmVwU3RvcmFnZSA9IG5ldyBSZXBvcnRlZFN0b3JhZ2UoJycsICcnLCAnJywgJycsICcnLCAnJyk7XG4gICAgICAgIE9iamVjdC5hc3NpZ24ocmVwU3RvcmFnZSwgcmVwT2JqKTtcbiAgICAgICAgY29uc3QgcmVwU3RvclN0ciA9IHJlcFN0b3JhZ2UudG9TaG9ydFN0cmluZygpO1xuICAgICAgICBpZiAocmVwb3J0ZWRTdG9yYWdlLmhhcyhyZXBTdG9yU3RyKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJlcG9ydGVkU3RvcmFnZS5hZGQocmVwU3RvclN0cik7XG4gICAgICB9XG4gICAgICBjb25zdCByZXBPYmpCb2R5ID0gYG9iamVjdEpzb249JHtlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICAgIHJlcXVlc3QuZGF0YVxuICAgICAgKX0mYXBpa2V5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHphcGtleSl9YDtcbiAgICAgIGNvbnNvbGUubG9nKGBib2R5ID0gJHtyZXBPYmpCb2R5fWApO1xuICAgICAgZmV0Y2goemFwQXBpVXJsKHphcHVybCwgUkVQT1JUX09CSkVDVCksIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IHJlcE9iakJvZHksXG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgUkVQT1JUX0VWRU5UOiB7XG4gICAgICBjb25zdCBldmVudEJvZHkgPSBgZXZlbnRKc29uPSR7ZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgICAgICByZXF1ZXN0LmRhdGFcbiAgICAgICl9JmFwaWtleT0ke2VuY29kZVVSSUNvbXBvbmVudCh6YXBrZXkpfWA7XG4gICAgICBjb25zb2xlLmxvZyhgYm9keSA9ICR7ZXZlbnRCb2R5fWApO1xuICAgICAgZmV0Y2goemFwQXBpVXJsKHphcHVybCwgUkVQT1JUX0VWRU5UKSwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogZXZlbnRCb2R5LFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFpFU1RfU0NSSVBUOiB7XG4gICAgICBjb25zdCBkYXRhID0gemVzdFNjcmlwdC5hZGRTdGF0ZW1lbnQocmVxdWVzdC5kYXRhKTtcbiAgICAgIHNlbmRaZXN0U2NyaXB0VG9aQVAoZGF0YSwgemFwa2V5LCB6YXB1cmwpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBHRVRfWkVTVF9TQ1JJUFQ6XG4gICAgICByZXR1cm4gemVzdFNjcmlwdC5nZXRaZXN0U2NyaXB0KCk7XG5cbiAgICBjYXNlIFJFU0VUX1pFU1RfU0NSSVBUOlxuICAgICAgemVzdFNjcmlwdC5yZXNldCgpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIFNUT1BfUkVDT1JESU5HOiB7XG4gICAgICBpZiAoemVzdFNjcmlwdC5nZXRaZXN0U3RhdGVtZW50Q291bnQoKSA+IDApIHtcbiAgICAgICAgY29uc3Qge3phcGNsb3Nld2luZG93aGFuZGxlfSA9IGF3YWl0IEJyb3dzZXIuc3RvcmFnZS5zeW5jLmdldCh7XG4gICAgICAgICAgemFwY2xvc2V3aW5kb3doYW5kbGU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHphcGNsb3Nld2luZG93aGFuZGxlKSB7XG4gICAgICAgICAgY29uc3Qgc3RtdCA9IG5ldyBaZXN0U3RhdGVtZW50V2luZG93Q2xvc2UoMCk7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IHplc3RTY3JpcHQuYWRkU3RhdGVtZW50KHN0bXQudG9KU09OKCkpO1xuICAgICAgICAgIHNlbmRaZXN0U2NyaXB0VG9aQVAoZGF0YSwgemFwa2V5LCB6YXB1cmwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBkZWZhdWx0OlxuICAgICAgLy8gSGFuZGxlIHVua25vd24gcmVxdWVzdCB0eXBlXG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBvbk1lc3NhZ2VIYW5kbGVyKFxuICBtZXNzYWdlOiB1bmtub3duLFxuICBfc2VuZGVyOiBSdW50aW1lLk1lc3NhZ2VTZW5kZXJcbik6IFByb21pc2U8bnVtYmVyIHwgWmVzdFNjcmlwdE1lc3NhZ2U+IHtcbiAgbGV0IHZhbDogbnVtYmVyIHwgWmVzdFNjcmlwdE1lc3NhZ2UgPSAyO1xuICBjb25zdCBpdGVtcyA9IGF3YWl0IEJyb3dzZXIuc3RvcmFnZS5zeW5jLmdldCh7XG4gICAgemFwdXJsOiAnaHR0cDovL3phcC8nLFxuICAgIHphcGtleTogJ25vdCBzZXQnLFxuICB9KTtcbiAgY29uc3QgbXNnID0gYXdhaXQgaGFuZGxlTWVzc2FnZShcbiAgICBtZXNzYWdlIGFzIE1lc3NhZ2VFdmVudCxcbiAgICBpdGVtcy56YXB1cmwgYXMgc3RyaW5nLFxuICAgIGl0ZW1zLnphcGtleSBhcyBzdHJpbmdcbiAgKTtcbiAgaWYgKCEodHlwZW9mIG1zZyA9PT0gJ2Jvb2xlYW4nKSkge1xuICAgIHZhbCA9IG1zZztcbiAgfVxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbCk7XG59XG5cbmZ1bmN0aW9uIGNvb2tpZUNoYW5nZUhhbmRsZXIoXG4gIGNoYW5nZUluZm86IENvb2tpZXMuT25DaGFuZ2VkQ2hhbmdlSW5mb1R5cGVcbik6IHZvaWQge1xuICBCcm93c2VyLnN0b3JhZ2Uuc3luY1xuICAgIC5nZXQoe1xuICAgICAgemFwdXJsOiAnaHR0cDovL3phcC8nLFxuICAgICAgemFwa2V5OiAnbm90IHNldCcsXG4gICAgfSlcbiAgICAudGhlbigoaXRlbXMpID0+IHtcbiAgICAgIHJlcG9ydENvb2tpZXMoXG4gICAgICAgIGNoYW5nZUluZm8uY29va2llLFxuICAgICAgICBpdGVtcy56YXB1cmwgYXMgc3RyaW5nLFxuICAgICAgICBpdGVtcy56YXBrZXkgYXMgc3RyaW5nXG4gICAgICApO1xuICAgIH0pO1xufVxuXG5Ccm93c2VyLnJ1bnRpbWUub25NZXNzYWdlLmFkZExpc3RlbmVyKG9uTWVzc2FnZUhhbmRsZXIpO1xuXG5pZiAoSVNfRlVMTF9FWFRFTlNJT04pIHtcbiAgQnJvd3Nlci5hY3Rpb24ub25DbGlja2VkLmFkZExpc3RlbmVyKChfdGFiOiBCcm93c2VyLlRhYnMuVGFiKSA9PiB7XG4gICAgQnJvd3Nlci5ydW50aW1lLm9wZW5PcHRpb25zUGFnZSgpO1xuICB9KTtcblxuICBCcm93c2VyLmNvb2tpZXMub25DaGFuZ2VkLmFkZExpc3RlbmVyKGNvb2tpZUNoYW5nZUhhbmRsZXIpO1xuXG4gIEJyb3dzZXIucnVudGltZS5vbkluc3RhbGxlZC5hZGRMaXN0ZW5lcigoKTogdm9pZCA9PiB7XG4gICAgY29uc29sZS5lbW9qaSgn8J+mhCcsICdleHRlbnNpb24gaW5zdGFsbGVkJyk7XG4gICAgQnJvd3Nlci5zdG9yYWdlLnN5bmMuc2V0KHtcbiAgICAgIHphcHVybDogJ2h0dHA6Ly96YXAvJyxcbiAgICAgIHphcGtleTogJ25vdCBzZXQnLFxuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IHtyZXBvcnRDb29raWVzfTtcbiIsIi8qXG4gKiBaZWQgQXR0YWNrIFByb3h5IChaQVApIGFuZCBpdHMgcmVsYXRlZCBzb3VyY2UgZmlsZXMuXG4gKlxuICogWkFQIGlzIGFuIEhUVFAvSFRUUFMgcHJveHkgZm9yIGFzc2Vzc2luZyB3ZWIgYXBwbGljYXRpb24gc2VjdXJpdHkuXG4gKlxuICogQ29weXJpZ2h0IDIwMjMgVGhlIFpBUCBEZXZlbG9wbWVudCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgQnJvd3NlciBmcm9tICd3ZWJleHRlbnNpb24tcG9seWZpbGwnO1xuXG5jb25zdCBERUZBVUxUX1NUQVRFTUVOVF9ERUxBWSA9IDEwMDA7XG5cbmludGVyZmFjZSBaZXN0U2NyaXB0TWVzc2FnZSB7XG4gIHNjcmlwdDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBzdGF0ZW1lbnRDb3VudDogbnVtYmVyO1xufVxuXG5jbGFzcyBaZXN0U2NyaXB0IHtcbiAgcHJpdmF0ZSB6ZXN0U3RhdGVtZW50czogc3RyaW5nW10gPSBbXTtcblxuICBwcml2YXRlIGN1ckluZGV4ID0gMTtcblxuICBwcml2YXRlIHRpdGxlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzdGF0ZW1lbnREZWxheSA9IDA7XG5cbiAgY29uc3RydWN0b3IodGl0bGUgPSAnJykge1xuICAgIHRoaXMudGl0bGUgPSB0aXRsZTtcbiAgfVxuXG4gIGFkZFN0YXRlbWVudChzdGF0ZW1lbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgemVzdFN0YXRlbWVudCA9IEpTT04ucGFyc2Uoc3RhdGVtZW50KTtcbiAgICB6ZXN0U3RhdGVtZW50LmluZGV4ID0gdGhpcy5nZXROZXh0SW5kZXgoKTtcbiAgICB0aGlzLnplc3RTdGF0ZW1lbnRzLnB1c2goSlNPTi5zdHJpbmdpZnkoemVzdFN0YXRlbWVudCkpO1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh6ZXN0U3RhdGVtZW50KTtcbiAgfVxuXG4gIGdldE5leHRJbmRleCgpOiBudW1iZXIge1xuICAgIHRoaXMuY3VySW5kZXggKz0gMTtcbiAgICByZXR1cm4gdGhpcy5jdXJJbmRleCAtIDE7XG4gIH1cblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnplc3RTdGF0ZW1lbnRzID0gW107XG4gICAgdGhpcy5jdXJJbmRleCA9IDE7XG4gIH1cblxuICBnZXRaZXN0U3RhdGVtZW50Q291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy56ZXN0U3RhdGVtZW50cy5sZW5ndGg7XG4gIH1cblxuICBnZXRUaXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRpdGxlO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2NyaXB0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgIGFib3V0OlxuICAgICAgICAnVGhpcyBpcyBhIFplc3Qgc2NyaXB0LiBGb3IgbW9yZSBkZXRhaWxzIGFib3V0IFplc3QgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL3phcHJveHkvemVzdC8nLFxuICAgICAgemVzdFZlcnNpb246ICcwLjMnLFxuICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICBwcmVmaXg6ICcnLFxuICAgICAgdHlwZTogJ1N0YW5kQWxvbmUnLFxuICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICB0b2tlblN0YXJ0OiAne3snLFxuICAgICAgICB0b2tlbkVuZDogJ319JyxcbiAgICAgICAgdG9rZW5zOiB7fSxcbiAgICAgICAgZWxlbWVudFR5cGU6ICdaZXN0VmFyaWFibGVzJyxcbiAgICAgIH0sXG4gICAgICBzdGF0ZW1lbnRzOiB0aGlzLnplc3RTdGF0ZW1lbnRzLm1hcCgoc3RhdGVtZW50KSA9PiBKU09OLnBhcnNlKHN0YXRlbWVudCkpLFxuICAgICAgYXV0aGVudGljYXRpb246IFtdLFxuICAgICAgaW5kZXg6IDAsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6ICdaZXN0U2NyaXB0JyxcbiAgICB9O1xuICAgIGlmICh0aGlzLnN0YXRlbWVudERlbGF5ID4gMCkge1xuICAgICAgc2NyaXB0Lm9wdGlvbnMgPSB7c3RhdGVtZW50RGVsYXk6IFN0cmluZyh0aGlzLnN0YXRlbWVudERlbGF5KX07XG4gICAgfVxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShzY3JpcHQsIG51bGwsIDIpO1xuICB9XG5cbiAgZ2V0WmVzdFNjcmlwdCgpOiBQcm9taXNlPFplc3RTY3JpcHRNZXNzYWdlPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBCcm93c2VyLnN0b3JhZ2Uuc3luY1xuICAgICAgICAuZ2V0KHtcbiAgICAgICAgICB6YXBzY3JpcHRuYW1lOiB0aGlzLnRpdGxlLFxuICAgICAgICAgIHphcHN0YXRlbWVudGRlbGF5OiBERUZBVUxUX1NUQVRFTUVOVF9ERUxBWSxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgdGhpcy50aXRsZSA9IGl0ZW1zLnphcHNjcmlwdG5hbWUgYXMgc3RyaW5nO1xuICAgICAgICAgIHRoaXMuc3RhdGVtZW50RGVsYXkgPSBpdGVtcy56YXBzdGF0ZW1lbnRkZWxheSBhcyBudW1iZXI7XG4gICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICBzY3JpcHQ6IHRoaXMudG9KU09OKCksXG4gICAgICAgICAgICB0aXRsZTogdGhpcy50aXRsZSxcbiAgICAgICAgICAgIHN0YXRlbWVudENvdW50OiB0aGlzLmdldFplc3RTdGF0ZW1lbnRDb3VudCgpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQge1plc3RTY3JpcHQsIERFRkFVTFRfU1RBVEVNRU5UX0RFTEFZfTtcbmV4cG9ydCB0eXBlIHtaZXN0U2NyaXB0TWVzc2FnZX07XG4iXSwibmFtZXMiOlsiQ29uc3RhbnRzIiwibG9nVG9Db25zb2xlIiwiZXJyb3IiLCJlbW9qaSIsImxlbmd0aCIsImlzRXJyb3IiLCJlIiwic3RhY2siLCJtZXNzYWdlIiwibGVuIiwidG9TdHJpbmciLCJMSU5FX0xFTkdUSF9WQVJJQUJMRSIsIkRFRkFVTFRfTElORV9MRU5HVEgiLCJjb25zb2xlIiwibG9nIiwicmVwZWF0Iiwid2luZG93IiwiZ3JvdXBDb2xsYXBzZWQiLCJncm91cEVuZCIsImFyZ3MiLCJ0aGlzIiwiT05FIiwiVFdPIiwiVEhSRUUiLCJwYXNzZWRBcmdzIiwiX19XRUJQQUNLX0FNRF9ERUZJTkVfRkFDVE9SWV9fIiwiX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJSQVlfXyIsIl9fV0VCUEFDS19BTURfREVGSU5FX1JFU1VMVF9fIiwiZ2xvYmFsVGhpcyIsInNlbGYiLCJtb2R1bGUiLCJjaHJvbWUiLCJydW50aW1lIiwiaWQiLCJFcnJvciIsImJyb3dzZXIiLCJleHBvcnRzIiwiQ0hST01FX1NFTkRfTUVTU0FHRV9DQUxMQkFDS19OT19SRVNQT05TRV9NRVNTQUdFIiwid3JhcEFQSXMiLCJleHRlbnNpb25BUElzIiwiYXBpTWV0YWRhdGEiLCJhbGFybXMiLCJjbGVhciIsIm1pbkFyZ3MiLCJtYXhBcmdzIiwiY2xlYXJBbGwiLCJnZXQiLCJnZXRBbGwiLCJib29rbWFya3MiLCJjcmVhdGUiLCJnZXRDaGlsZHJlbiIsImdldFJlY2VudCIsImdldFN1YlRyZWUiLCJnZXRUcmVlIiwibW92ZSIsInJlbW92ZSIsInJlbW92ZVRyZWUiLCJzZWFyY2giLCJ1cGRhdGUiLCJicm93c2VyQWN0aW9uIiwiZGlzYWJsZSIsImZhbGxiYWNrVG9Ob0NhbGxiYWNrIiwiZW5hYmxlIiwiZ2V0QmFkZ2VCYWNrZ3JvdW5kQ29sb3IiLCJnZXRCYWRnZVRleHQiLCJnZXRQb3B1cCIsImdldFRpdGxlIiwib3BlblBvcHVwIiwic2V0QmFkZ2VCYWNrZ3JvdW5kQ29sb3IiLCJzZXRCYWRnZVRleHQiLCJzZXRJY29uIiwic2V0UG9wdXAiLCJzZXRUaXRsZSIsImJyb3dzaW5nRGF0YSIsInJlbW92ZUNhY2hlIiwicmVtb3ZlQ29va2llcyIsInJlbW92ZURvd25sb2FkcyIsInJlbW92ZUZvcm1EYXRhIiwicmVtb3ZlSGlzdG9yeSIsInJlbW92ZUxvY2FsU3RvcmFnZSIsInJlbW92ZVBhc3N3b3JkcyIsInJlbW92ZVBsdWdpbkRhdGEiLCJzZXR0aW5ncyIsImNvbW1hbmRzIiwiY29udGV4dE1lbnVzIiwicmVtb3ZlQWxsIiwiY29va2llcyIsImdldEFsbENvb2tpZVN0b3JlcyIsInNldCIsImRldnRvb2xzIiwiaW5zcGVjdGVkV2luZG93IiwiZXZhbCIsInNpbmdsZUNhbGxiYWNrQXJnIiwicGFuZWxzIiwiZWxlbWVudHMiLCJjcmVhdGVTaWRlYmFyUGFuZSIsImRvd25sb2FkcyIsImNhbmNlbCIsImRvd25sb2FkIiwiZXJhc2UiLCJnZXRGaWxlSWNvbiIsIm9wZW4iLCJwYXVzZSIsInJlbW92ZUZpbGUiLCJyZXN1bWUiLCJzaG93IiwiZXh0ZW5zaW9uIiwiaXNBbGxvd2VkRmlsZVNjaGVtZUFjY2VzcyIsImlzQWxsb3dlZEluY29nbml0b0FjY2VzcyIsImhpc3RvcnkiLCJhZGRVcmwiLCJkZWxldGVBbGwiLCJkZWxldGVSYW5nZSIsImRlbGV0ZVVybCIsImdldFZpc2l0cyIsImkxOG4iLCJkZXRlY3RMYW5ndWFnZSIsImdldEFjY2VwdExhbmd1YWdlcyIsImlkZW50aXR5IiwibGF1bmNoV2ViQXV0aEZsb3ciLCJpZGxlIiwicXVlcnlTdGF0ZSIsIm1hbmFnZW1lbnQiLCJnZXRTZWxmIiwic2V0RW5hYmxlZCIsInVuaW5zdGFsbFNlbGYiLCJub3RpZmljYXRpb25zIiwiZ2V0UGVybWlzc2lvbkxldmVsIiwicGFnZUFjdGlvbiIsImhpZGUiLCJwZXJtaXNzaW9ucyIsImNvbnRhaW5zIiwicmVxdWVzdCIsImdldEJhY2tncm91bmRQYWdlIiwiZ2V0UGxhdGZvcm1JbmZvIiwib3Blbk9wdGlvbnNQYWdlIiwicmVxdWVzdFVwZGF0ZUNoZWNrIiwic2VuZE1lc3NhZ2UiLCJzZW5kTmF0aXZlTWVzc2FnZSIsInNldFVuaW5zdGFsbFVSTCIsInNlc3Npb25zIiwiZ2V0RGV2aWNlcyIsImdldFJlY2VudGx5Q2xvc2VkIiwicmVzdG9yZSIsInN0b3JhZ2UiLCJsb2NhbCIsImdldEJ5dGVzSW5Vc2UiLCJtYW5hZ2VkIiwic3luYyIsInRhYnMiLCJjYXB0dXJlVmlzaWJsZVRhYiIsImRpc2NhcmQiLCJkdXBsaWNhdGUiLCJleGVjdXRlU2NyaXB0IiwiZ2V0Q3VycmVudCIsImdldFpvb20iLCJnZXRab29tU2V0dGluZ3MiLCJnb0JhY2siLCJnb0ZvcndhcmQiLCJoaWdobGlnaHQiLCJpbnNlcnRDU1MiLCJxdWVyeSIsInJlbG9hZCIsInJlbW92ZUNTUyIsInNldFpvb20iLCJzZXRab29tU2V0dGluZ3MiLCJ0b3BTaXRlcyIsIndlYk5hdmlnYXRpb24iLCJnZXRBbGxGcmFtZXMiLCJnZXRGcmFtZSIsIndlYlJlcXVlc3QiLCJoYW5kbGVyQmVoYXZpb3JDaGFuZ2VkIiwid2luZG93cyIsImdldExhc3RGb2N1c2VkIiwiT2JqZWN0Iiwia2V5cyIsIkRlZmF1bHRXZWFrTWFwIiwiV2Vha01hcCIsImNvbnN0cnVjdG9yIiwiY3JlYXRlSXRlbSIsIml0ZW1zIiwidW5kZWZpbmVkIiwic3VwZXIiLCJrZXkiLCJoYXMiLCJpc1RoZW5hYmxlIiwidmFsdWUiLCJ0aGVuIiwibWFrZUNhbGxiYWNrIiwicHJvbWlzZSIsIm1ldGFkYXRhIiwiY2FsbGJhY2tBcmdzIiwibGFzdEVycm9yIiwicmVqZWN0IiwicmVzb2x2ZSIsInBsdXJhbGl6ZUFyZ3VtZW50cyIsIm51bUFyZ3MiLCJ3cmFwQXN5bmNGdW5jdGlvbiIsIm5hbWUiLCJ0YXJnZXQiLCJQcm9taXNlIiwiY2JFcnJvciIsIndhcm4iLCJub0NhbGxiYWNrIiwid3JhcE1ldGhvZCIsIm1ldGhvZCIsIndyYXBwZXIiLCJQcm94eSIsImFwcGx5IiwidGFyZ2V0TWV0aG9kIiwidGhpc09iaiIsImNhbGwiLCJoYXNPd25Qcm9wZXJ0eSIsIkZ1bmN0aW9uIiwiYmluZCIsInByb3RvdHlwZSIsIndyYXBPYmplY3QiLCJ3cmFwcGVycyIsImNhY2hlIiwiaGFuZGxlcnMiLCJwcm94eVRhcmdldCIsInByb3AiLCJyZWNlaXZlciIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsImRlc2MiLCJSZWZsZWN0IiwiZGVsZXRlUHJvcGVydHkiLCJ3cmFwRXZlbnQiLCJ3cmFwcGVyTWFwIiwiYWRkTGlzdGVuZXIiLCJsaXN0ZW5lciIsImhhc0xpc3RlbmVyIiwicmVtb3ZlTGlzdGVuZXIiLCJvblJlcXVlc3RGaW5pc2hlZFdyYXBwZXJzIiwicmVxIiwid3JhcHBlZFJlcSIsImdldENvbnRlbnQiLCJvbk1lc3NhZ2VXcmFwcGVycyIsInNlbmRlciIsInNlbmRSZXNwb25zZSIsIndyYXBwZWRTZW5kUmVzcG9uc2UiLCJyZXN1bHQiLCJkaWRDYWxsU2VuZFJlc3BvbnNlIiwic2VuZFJlc3BvbnNlUHJvbWlzZSIsInJlc3BvbnNlIiwiZXJyIiwiaXNSZXN1bHRUaGVuYWJsZSIsInNlbmRQcm9taXNlZFJlc3VsdCIsIm1zZyIsIl9fbW96V2ViRXh0ZW5zaW9uUG9seWZpbGxSZWplY3RfXyIsImNhdGNoIiwid3JhcHBlZFNlbmRNZXNzYWdlQ2FsbGJhY2siLCJyZXBseSIsIndyYXBwZWRTZW5kTWVzc2FnZSIsImFwaU5hbWVzcGFjZU9iaiIsIndyYXBwZWRDYiIsInB1c2giLCJzdGF0aWNXcmFwcGVycyIsIm5ldHdvcmsiLCJvblJlcXVlc3RGaW5pc2hlZCIsIm9uTWVzc2FnZSIsIm9uTWVzc2FnZUV4dGVybmFsIiwic2V0dGluZ01ldGFkYXRhIiwicHJpdmFjeSIsInNlcnZpY2VzIiwid2Vic2l0ZXMiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwibiIsImdldHRlciIsIl9fZXNNb2R1bGUiLCJkIiwiYSIsImRlZmluaXRpb24iLCJvIiwib2JqIiwiUmVwb3J0ZWRPYmplY3QiLCJ0eXBlIiwidGFnTmFtZSIsIm5vZGVOYW1lIiwidGV4dCIsInVybCIsInRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJKU09OIiwic3RyaW5naWZ5IiwidG9TaG9ydFN0cmluZyIsImsiLCJ2IiwidG9Ob25UaW1lc3RhbXBTdHJpbmciLCJSZXBvcnRlZFN0b3JhZ2UiLCJJU19GVUxMX0VYVEVOU0lPTiIsIkJyb3dzZXIiLCJnZXRNYW5pZmVzdCIsIkRFRkFVTFRfV0lORE9XX0hBTkRMRSIsIlJFUE9SVF9FVkVOVCIsIlJFUE9SVF9PQkpFQ1QiLCJaZXN0U3RhdGVtZW50IiwiZWxlbWVudFR5cGUiLCJpbmRleCIsIlplc3RTdGF0ZW1lbnRXaW5kb3dDbG9zZSIsInNsZWVwSW5TZWNvbmRzIiwid2luZG93SGFuZGxlIiwidG9KU09OIiwiZW5hYmxlZCIsInQiLCJyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJ0b1N0cmluZ1RhZyIsImkiLCJjIiwiR2VuZXJhdG9yIiwidSIsIl9yZWdlbmVyYXRvckRlZmluZTIiLCJmIiwicCIsInkiLCJHIiwibCIsIlR5cGVFcnJvciIsImRvbmUiLCJyZXR1cm4iLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImRpc3BsYXlOYW1lIiwiX3JlZ2VuZXJhdG9yIiwidyIsIm0iLCJfaW52b2tlIiwid3JpdGFibGUiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsImFyZ3VtZW50cyIsIl9uZXh0IiwiX3Rocm93IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJBcnJheSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsInNsaWNlIiwiZnJvbSIsInRlc3QiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbiIsIkYiLCJzIiwibmV4dCIsInJlcG9ydGVkU3RvcmFnZSIsIlNldCIsInplc3RTY3JpcHQiLCJ0aXRsZSIsIl9kZWZpbmVQcm9wZXJ0eSIsImFkZFN0YXRlbWVudCIsInN0YXRlbWVudCIsInplc3RTdGF0ZW1lbnQiLCJwYXJzZSIsImdldE5leHRJbmRleCIsInplc3RTdGF0ZW1lbnRzIiwiY3VySW5kZXgiLCJyZXNldCIsImdldFplc3RTdGF0ZW1lbnRDb3VudCIsInNjcmlwdCIsImFib3V0IiwiemVzdFZlcnNpb24iLCJkZXNjcmlwdGlvbiIsInByZWZpeCIsInBhcmFtZXRlcnMiLCJ0b2tlblN0YXJ0IiwidG9rZW5FbmQiLCJ0b2tlbnMiLCJzdGF0ZW1lbnRzIiwibWFwIiwiYXV0aGVudGljYXRpb24iLCJzdGF0ZW1lbnREZWxheSIsIm9wdGlvbnMiLCJTdHJpbmciLCJnZXRaZXN0U2NyaXB0IiwiemFwc2NyaXB0bmFtZSIsInphcHN0YXRlbWVudGRlbGF5Iiwic3RhdGVtZW50Q291bnQiLCJ6YXBBcGlVcmwiLCJ6YXB1cmwiLCJhY3Rpb24iLCJpbmRleE9mIiwiZ2V0VXJsRnJvbUNvb2tpZURvbWFpbiIsImRvbWFpbiIsInN0YXJ0c1dpdGgiLCJzdWJzdHJpbmciLCJyZXBvcnRDb29raWVzIiwiY29va2llIiwiemFwa2V5IiwiY29va2llU3RyaW5nIiwicGF0aCIsImV4cGlyYXRpb25EYXRlIiwiY29uY2F0IiwidG9VVENTdHJpbmciLCJzZWN1cmUiLCJzYW1lU2l0ZSIsImh0dHBPbmx5IiwiZ2V0QWxsVGFicyIsImN1cnJlbnRXaW5kb3ciLCJhbGxUYWJzIiwiX3N0ZXAiLCJfaXRlcmF0b3IiLCJfbG9vcCIsInRhYiIsIl9zdGVwMiIsIl9pdGVyYXRvcjIiLCJzdG9yZUlkIiwiZ2V0Q29va2llVGFiVXJsIiwiY29va2llVXJsIiwicmVwU3RvcmFnZSIsInJlcFN0b3JTdHIiLCJib2R5IiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZmV0Y2giLCJoZWFkZXJzIiwiYWRkIiwic2VuZFplc3RTY3JpcHRUb1pBUCIsImRhdGEiLCJoYW5kbGVNZXNzYWdlIiwiX3giLCJfeDIiLCJfeDMiLCJfaGFuZGxlTWVzc2FnZSIsIl9jYWxsZWUiLCJyZXBPYmoiLCJyZXBPYmpCb2R5IiwiZXZlbnRCb2R5IiwiX3lpZWxkJEJyb3dzZXIkc3RvcmFnIiwic3RtdCIsIl90IiwiX2NvbnRleHQiLCJhc3NpZ24iLCJ6YXBjbG9zZXdpbmRvd2hhbmRsZSIsIl9vbk1lc3NhZ2VIYW5kbGVyIiwiX2NhbGxlZTIiLCJfc2VuZGVyIiwidmFsIiwiX2NvbnRleHQyIiwiX3g0IiwiX3g1Iiwib25DbGlja2VkIiwiX3RhYiIsIm9uQ2hhbmdlZCIsImNoYW5nZUluZm8iLCJvbkluc3RhbGxlZCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +(()=>{var e={586(e,r){"use strict";var t;function n(e,r="🐶",n){const s=(a=e)&&(null==a?void 0:a.stack)&&(null==a?void 0:a.message)&&"string"==typeof a.stack&&"string"==typeof a.message;var a;const o=s?e.message:e,i=n||(null==e?void 0:e.toString().length)*t.LINE_LENGTH_VARIABLE||t.DEFAULT_LINE_LENGTH;console.log(`\n /‾${"‾‾".repeat(i)}‾\n ${r} < `,o,`\n \\_${"__".repeat(i)}_\n `),s&&("undefined"!=typeof window?(console.groupCollapsed(`${r} > Stack Trace:`),console.error(e.stack),console.groupEnd()):(console.log(`${r} > Stack Trace:`),console.error(e.stack)))}(function(e){e[e.LINE_LENGTH_VARIABLE=.66]="LINE_LENGTH_VARIABLE",e[e.DEFAULT_LINE_LENGTH=4]="DEFAULT_LINE_LENGTH",e[e.ONE=1]="ONE",e[e.TWO=2]="TWO",e[e.THREE=3]="THREE"})(t||(t={})),console.emoji=function(...e){const r=[];return r[0]=function(){return n("Meow","🐱"),this},r[t.ONE]=function(e){return n(e),this},r[t.TWO]=function(e,r){return n(r,e),this},r[t.THREE]=function(e,r,t){return n(r,e,t),this},this.emoji=function(...e){return r[e.length](...e),this},this.emoji(...e),this}},815(e,r){var t,n,s;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,n=[e],t=function(e){"use strict";if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw new Error("This script should only be loaded in a browser extension.");if(globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id)e.exports=globalThis.browser;else{const r="The message port closed before a response was received.",t=e=>{const t={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(t).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class n extends WeakMap{constructor(e,r=void 0){super(r),this.createItem=e}get(e){return this.has(e)||this.set(e,this.createItem(e)),super.get(e)}}const s=e=>e&&"object"==typeof e&&"function"==typeof e.then,a=(r,t)=>(...n)=>{e.runtime.lastError?r.reject(new Error(e.runtime.lastError.message)):t.singleCallbackArg||n.length<=1&&!1!==t.singleCallbackArg?r.resolve(n[0]):r.resolve(n)},o=e=>1==e?"argument":"arguments",i=(e,r)=>function(t,...n){if(n.lengthr.maxArgs)throw new Error(`Expected at most ${r.maxArgs} ${o(r.maxArgs)} for ${e}(), got ${n.length}`);return new Promise((s,o)=>{if(r.fallbackToNoCallback)try{t[e](...n,a({resolve:s,reject:o},r))}catch(a){console.warn(`${e} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `,a),t[e](...n),r.fallbackToNoCallback=!1,r.noCallback=!0,s()}else r.noCallback?(t[e](...n),s()):t[e](...n,a({resolve:s,reject:o},r))})},g=(e,r,t)=>new Proxy(r,{apply:(r,n,s)=>t.call(n,e,...s)});let m=Function.call.bind(Object.prototype.hasOwnProperty);const l=(e,r={},t={})=>{let n=Object.create(null),s={has:(r,t)=>t in e||t in n,get(s,a,o){if(a in n)return n[a];if(!(a in e))return;let c=e[a];if("function"==typeof c)if("function"==typeof r[a])c=g(e,e[a],r[a]);else if(m(t,a)){let r=i(a,t[a]);c=g(e,e[a],r)}else c=c.bind(e);else if("object"==typeof c&&null!==c&&(m(r,a)||m(t,a)))c=l(c,r[a],t[a]);else{if(!m(t,"*"))return Object.defineProperty(n,a,{configurable:!0,enumerable:!0,get:()=>e[a],set(r){e[a]=r}}),c;c=l(c,r[a],t["*"])}return n[a]=c,c},set:(r,t,s,a)=>(t in n?n[t]=s:e[t]=s,!0),defineProperty:(e,r,t)=>Reflect.defineProperty(n,r,t),deleteProperty:(e,r)=>Reflect.deleteProperty(n,r)},a=Object.create(e);return new Proxy(a,s)},c=e=>({addListener(r,t,...n){r.addListener(e.get(t),...n)},hasListener:(r,t)=>r.hasListener(e.get(t)),removeListener(r,t){r.removeListener(e.get(t))}}),A=new n(e=>"function"!=typeof e?e:function(r){const t=l(r,{},{getContent:{minArgs:0,maxArgs:0}});e(t)}),u=new n(e=>"function"!=typeof e?e:function(r,t,n){let a,o,i=!1,g=new Promise(e=>{a=function(r){i=!0,e(r)}});try{o=e(r,t,a)}catch(e){o=Promise.reject(e)}const m=!0!==o&&s(o);if(!0!==o&&!m&&!i)return!1;const l=e=>{e.then(e=>{n(e)},e=>{let r;r=e&&(e instanceof Error||"string"==typeof e.message)?e.message:"An unexpected error occurred",n({__mozWebExtensionPolyfillReject__:!0,message:r})}).catch(e=>{console.error("Failed to send onMessage rejected reply",e)})};return l(m?o:g),!0}),d=({reject:t,resolve:n},s)=>{e.runtime.lastError?e.runtime.lastError.message===r?n():t(new Error(e.runtime.lastError.message)):s&&s.__mozWebExtensionPolyfillReject__?t(new Error(s.message)):n(s)},p=(e,r,t,...n)=>{if(n.lengthr.maxArgs)throw new Error(`Expected at most ${r.maxArgs} ${o(r.maxArgs)} for ${e}(), got ${n.length}`);return new Promise((e,r)=>{const s=d.bind(null,{resolve:e,reject:r});n.push(s),t.sendMessage(...n)})},f={devtools:{network:{onRequestFinished:c(A)}},runtime:{onMessage:c(u),onMessageExternal:c(u),sendMessage:p.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:p.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},x={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return t.privacy={network:{"*":x},services:{"*":x},websites:{"*":x}},l(e,f,t)};e.exports=t(chrome)}},void 0===(s="function"==typeof t?t.apply(r,n):t)||(e.exports=s)}},r={};function t(n){var s=r[n];if(void 0!==s)return s.exports;var a=r[n]={exports:{}};return e[n].call(a.exports,a,a.exports,t),a.exports}t.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return t.d(r,{a:r}),r},t.d=(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},t.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{"use strict";t(586);var e=t(815),r=t.n(e);class n{constructor(e,r,t,n,s,a){this.timestamp=Date.now(),this.type=e,this.tagName=r,this.id=t,this.nodeName=n,this.text=s,this.url=a}toString(){return JSON.stringify(this)}toShortString(){return JSON.stringify(this)}toNonTimestampString(){return JSON.stringify(this,function(e,r){if("timestamp"!==e)return r})}}class s extends n{toShortString(){return JSON.stringify(this,function(e,r){if("href"!==e&&"timestamp"!==e&&("url"!==e||"cookies"===this.type))return r})}}function a(e,r,t){return(r=function(e){var r=function(e,r){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,r||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(e)}(e,"string");return"symbol"==typeof r?r:r+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var o=void 0===r().runtime.getManifest||"ZAP by Checkmarx Browser Extension"===r().runtime.getManifest().name,i="windowHandle1",g="reportEvent",m="reportObject";class l{constructor(e){this.elementType=e,this.index=-1}}class c extends l{constructor(e,r=i){super("ZestClientWindowClose"),this.sleepInSeconds=e,this.windowHandle=r}toJSON(){return JSON.stringify({windowHandle:this.windowHandle,index:this.index,sleepInSeconds:this.sleepInSeconds,enabled:!0,elementType:this.elementType})}}function A(){var e,r,t="function"==typeof Symbol?Symbol:{},n=t.iterator||"@@iterator",s=t.toStringTag||"@@toStringTag";function a(t,n,s,a){var g=n&&n.prototype instanceof i?n:i,m=Object.create(g.prototype);return u(m,"_invoke",function(t,n,s){var a,i,g,m=0,l=s||[],c=!1,A={p:0,n:0,v:e,a:u,f:u.bind(e,4),d:function(r,t){return a=r,i=0,g=e,A.n=t,o}};function u(t,n){for(i=t,g=n,r=0;!c&&m&&!s&&r3?(s=d===n)&&(g=a[(i=a[4])?5:(i=3,3)],a[4]=a[5]=e):a[0]<=u&&((s=t<2&&un||n>d)&&(a[4]=t,a[5]=n,A.n=d,i=0))}if(s||t>1)return o;throw c=!0,n}return function(s,l,d){if(m>1)throw TypeError("Generator is already running");for(c&&1===l&&u(l,d),i=l,g=d;(r=i<2?e:g)||!c;){a||(i?i<3?(i>1&&(A.n=-1),u(i,g)):A.n=g:A.v=g);try{if(m=2,a){if(i||(s="next"),r=a[s]){if(!(r=r.call(a,g)))throw TypeError("iterator result is not an object");if(!r.done)return r;g=r.value,i<2&&(i=0)}else 1===i&&(r=a.return)&&r.call(a),i<2&&(g=TypeError("The iterator does not provide a '"+s+"' method"),i=1);a=e}else if((r=(c=A.n<0)?g:t.call(n,A))!==o)break}catch(r){a=e,i=1,g=r}finally{m=1}}return{value:r,done:c}}}(t,s,a),!0),m}var o={};function i(){}function g(){}function m(){}r=Object.getPrototypeOf;var l=[][n]?r(r([][n]())):(u(r={},n,function(){return this}),r),c=m.prototype=i.prototype=Object.create(l);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,u(e,s,"GeneratorFunction")),e.prototype=Object.create(c),e}return g.prototype=m,u(c,"constructor",m),u(m,"constructor",g),g.displayName="GeneratorFunction",u(m,s,"GeneratorFunction"),u(c),u(c,s,"Generator"),u(c,n,function(){return this}),u(c,"toString",function(){return"[object Generator]"}),(A=function(){return{w:a,m:d}})()}function u(e,r,t,n){var s=Object.defineProperty;try{s({},"",{})}catch(e){s=0}u=function(e,r,t,n){function a(r,t){u(e,r,function(e){return this._invoke(r,t,e)})}r?s?s(e,r,{value:t,enumerable:!n,configurable:!n,writable:!n}):e[r]=t:(a("next",0),a("throw",1),a("return",2))},u(e,r,t,n)}function d(e,r,t,n,s,a,o){try{var i=e[a](o),g=i.value}catch(e){return void t(e)}i.done?r(g):Promise.resolve(g).then(n,s)}function p(e){return function(){var r=this,t=arguments;return new Promise(function(n,s){var a=e.apply(r,t);function o(e){d(a,n,s,o,i,"next",e)}function i(e){d(a,n,s,o,i,"throw",e)}o(void 0)})}}function f(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return x(e,r);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?x(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var n=0,s=function(){};return{s,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,i=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return o=e.done,e},e:function(e){i=!0,a=e},f:function(){try{o||null==t.return||t.return()}finally{if(i)throw a}}}}function x(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=Array(r);tJSON.parse(e)),authentication:[],index:0,enabled:!0,elementType:"ZestScript"};return this.statementDelay>0&&(e.options={statementDelay:String(this.statementDelay)}),JSON.stringify(e,null,2)}getZestScript(){return new Promise(e=>{r().storage.sync.get({zapscriptname:this.title,zapstatementdelay:1e3}).then(r=>{this.title=r.zapscriptname,this.statementDelay=r.zapstatementdelay,e({script:this.toJSON(),title:this.title,statementCount:this.getZestStatementCount()})})})}};function b(e,r){return e.indexOf("/zapCallBackUrl/")>0?e:`${e}JSON/client/action/${r}/`}function v(e){return e.startsWith(".")?`http://${e.substring(1)}`:`http://${e}`}function w(e,t,n){var a=`${e.name}=${e.value}; path=${e.path}; domain=${e.domain}`;return e.expirationDate&&(a=a.concat(`; expires=${new Date(1e3*e.expirationDate).toUTCString()}`)),e.secure&&(a=a.concat("; secure")),"lax"!==e.sameSite&&"strict"!==e.sameSite||(a=a.concat(`; SameSite=${e.sameSite}`)),e.httpOnly&&(a=a.concat("; HttpOnly")),function(e){var t=r().tabs.query({currentWindow:!0});return new Promise((n,s)=>{t.then(t=>{var s,a=f(t);try{var o=function(){var t=s.value;t.url&&r().cookies.getAll({url:t.url}).then(r=>{var s,a=f(r);try{for(a.s();!(s=a.n()).done;){var o=s.value;o.name===e.name&&o.value===e.value&&o.domain===e.domain&&o.storeId===e.storeId&&n(t.url?t.url:v(e.domain))}}catch(e){a.e(e)}finally{a.f()}})};for(a.s();!(s=a.n()).done;)o()}catch(e){a.e(e)}finally{a.f()}}).catch(r=>{console.error(`Could not fetch tabs: ${r.message}`),s(v(e.domain))})})}(e).then(r=>{var o=new s("Cookies","",e.name,"",a,r),i=o.toShortString();if(!h.has(i)&&o.url.startsWith("http")){var g=`objectJson=${encodeURIComponent(o.toString())}&apikey=${encodeURIComponent(n)}`;fetch(b(t,m),{method:"POST",body:g,headers:{"Content-Type":"application/x-www-form-urlencoded"}}),h.add(i)}}).catch(e=>(console.log(e),!1)),!0}function S(e,r,t){if(o){var n=`statementJson=${encodeURIComponent(e)}&apikey=${encodeURIComponent(r)}`;console.log(`body = ${n}`),fetch(b(t,"reportZestStatement"),{method:"POST",body:n,headers:{"Content-Type":"application/x-www-form-urlencoded"}})}}function k(e,r,t){return T.apply(this,arguments)}function T(){return(T=p(A().m(function e(t,n,a){var o,i,l,u,d,p,f,x;return A().w(function(e){for(;;)switch(e.n){case 0:console.log(`ZAP Service worker calling ZAP on ${n}`),console.log(b(n,m)),console.log(encodeURIComponent(a)),console.log(`Type: ${t.type}`),console.log(`Data: ${t.data}`),x=t.type,e.n=x===m?1:x===g?4:"zestScript"===x?5:"getZestScript"===x?6:"resetZestScript"===x?7:"stopRecording"===x?8:11;break;case 1:if("localStorage"!==(o=JSON.parse(t.data)).type&&"sessionStorage"!==o.type){e.n=3;break}if(i=new s("","","","","",""),Object.assign(i,o),l=i.toShortString(),!h.has(l)){e.n=2;break}return e.a(2,!0);case 2:h.add(l);case 3:return u=`objectJson=${encodeURIComponent(t.data)}&apikey=${encodeURIComponent(a)}`,console.log(`body = ${u}`),fetch(b(n,m),{method:"POST",body:u,headers:{"Content-Type":"application/x-www-form-urlencoded"}}),e.a(3,12);case 4:return d=`eventJson=${encodeURIComponent(t.data)}&apikey=${encodeURIComponent(a)}`,console.log(`body = ${d}`),fetch(b(n,g),{method:"POST",body:d,headers:{"Content-Type":"application/x-www-form-urlencoded"}}),e.a(3,12);case 5:return S(y.addStatement(t.data),a,n),e.a(3,12);case 6:return e.a(2,y.getZestScript());case 7:return y.reset(),e.a(3,12);case 8:if(!(y.getZestStatementCount()>0)){e.n=10;break}return e.n=9,r().storage.sync.get({zapclosewindowhandle:!1});case 9:p=e.v,p.zapclosewindowhandle&&(f=new c(0),S(y.addStatement(f.toJSON()),a,n));case 10:case 11:return e.a(3,12);case 12:return e.a(2,!0)}},e)}))).apply(this,arguments)}function C(){return(C=p(A().m(function e(t,n){var s,a,o;return A().w(function(e){for(;;)switch(e.n){case 0:return s=2,e.n=1,r().storage.sync.get({zapurl:"http://zap/",zapkey:"not set"});case 1:return a=e.v,e.n=2,k(t,a.zapurl,a.zapkey);case 2:return"boolean"!=typeof(o=e.v)&&(s=o),e.a(2,Promise.resolve(s))}},e)}))).apply(this,arguments)}r().runtime.onMessage.addListener(function(e,r){return C.apply(this,arguments)}),o&&(r().action.onClicked.addListener(e=>{r().runtime.openOptionsPage()}),r().cookies.onChanged.addListener(function(e){r().storage.sync.get({zapurl:"http://zap/",zapkey:"not set"}).then(r=>{w(e.cookie,r.zapurl,r.zapkey)})}),r().runtime.onInstalled.addListener(()=>{console.emoji("🦄","extension installed"),r().storage.sync.set({zapurl:"http://zap/",zapkey:"not set"})}))})()})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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eVYsT0FBUSxjQUNSUyxPQUFRLFlBQ1IsT0FIUyxPQUFMNU4sRUFBSzZRLEVBQUExSixFQUFBMEosRUFBQWhMLEVBQUEsRUFJTzZKLEVBQ2hCdGEsRUFDQTRLLEVBQU1tTixPQUNObk4sRUFBTTROLFFBQ1AsT0FHQSxNQUZvQixrQkFMZnRKLEVBQUd1TSxFQUFBMUosS0FNUHlKLEVBQU10TSxHQUNQdU0sRUFBQTVLLEVBQUEsRUFDTTdFLFFBQVFOLFFBQVE4UCxJQUFJLEVBQUFGLEVBQUEsS0FDNUI5TyxNQUFBNUwsS0FBQWtVLFVBQUEsQ0FtQkQ1QyxJQUFBQSxRQUFnQnBDLFVBQVUvQixZQXZDekIsU0FFOEIyTixFQUFBQyxHQUFBLE9BQUFOLEVBQUE3TyxNQUFBNUwsS0FBQWtVLFVBQUEsR0F1QzNCN0MsSUFDRkMsSUFBQUEsT0FBZTBKLFVBQVU3TixZQUFhOE4sSUFDcEMzSixJQUFBQSxRQUFnQm5LLG9CQUdsQm1LLElBQUFBLFFBQWdCNEosVUFBVS9OLFlBeEI1QixTQUNFZ08sR0FFQTdKLElBQUFBLFFBQWdCdEosS0FDYnRHLElBQUksQ0FDSHlWLE9BQVEsY0FDUlMsT0FBUSxZQUVUck4sS0FBTVAsSUFDTDBOLEVBQ0V5RCxFQUFXeEQsT0FDWDNOLEVBQU1tTixPQUNObk4sRUFBTTROLFNBR2QsR0FXRXRHLElBQUFBLFFBQWdCOEosWUFBWWpPLFlBQVksS0FDdEMxTixRQUFRVixNQUFNLEtBQU0sdUJBQ3BCdVMsSUFBQUEsUUFBZ0J0SixLQUFLNUQsSUFBSSxDQUN2QitTLE9BQVEsY0FDUlMsT0FBUSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9lbW9qaS1sb2cvbGliL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93ZWJleHRlbnNpb24tcG9seWZpbGwvZGlzdC9icm93c2VyLXBvbHlmaWxsLmpzIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly8vLi9zb3VyY2UvdHlwZXMvUmVwb3J0ZWRNb2RlbC50cyIsIndlYnBhY2s6Ly8vLi9zb3VyY2UvdXRpbHMvY29uc3RhbnRzLnRzIiwid2VicGFjazovLy8uL3NvdXJjZS90eXBlcy96ZXN0U2NyaXB0L1plc3RTdGF0ZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vc291cmNlL0JhY2tncm91bmQvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vc291cmNlL3R5cGVzL3plc3RTY3JpcHQvWmVzdFNjcmlwdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbi8qKlxuICogIGVtb2ppLWxvZ1xuICpcbiAqICBAYXV0aG9yICAgYWJoaWppdGh2aWpheWFuIDxhYmhpaml0aHZpamF5YW4uaW4+XG4gKiAgQGxpY2Vuc2UgIE1JVCBMaWNlbnNlXG4gKlxuICogIEFydCBieSBDb2xpbiBKLiBSYW5kYWxsXG4gKlxuICogICAgICAgICAgICAgICBcXFxuICogICAgICAgICAgICAgICAgXFxcbiAqICAgICAgICAgICAgICAgICBcXFxcXG4gKiAgICAgICAgICAgICAgICAgIFxcXFxcbiAqICAgICAgICAgICAgICAgICAgID5cXC83XG4gKiAgICAgICAgICAgICAgIF8uLSg2JyAgXFxcbiAqICAgICAgICAgICAgICAoPV9fXy5fL2AgXFxcbiAqICAgICAgICAgICAgICAgICAgICkgIFxcIHxcbiAqICAgICAgICAgICAgICAgICAgLyAgIC8gfFxuICogICAgICAgICAgICAgICAgIC8gICAgPiAvXG4gKiAgICAgICAgICAgICAgICBqICAgIDwgX1xcXG4gKiAgICAgICAgICAgIF8uLScgOiAgICAgIGBgLlxuICogICAgICAgICAgICBcXCByPS5fXFwgICAgICAgIGAuXG4gKiAgICAgICAgICAgPGBcXFxcXyAgXFwgICAgICAgICAuYC0uXG4gKiAgICAgICAgICAgIFxcIHItNyAgYC0uIC5fICAnIC4gIGBcXFxuICogICAgICAgICAgICAgXFxgLCAgICAgIGAtLmA3ICA3KSAgIClcbiAqICAgICAgICAgICAgICBcXC8gICAgICAgICBcXHwgIFxcJyAgLyBgLS5fXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICB8fCAgICAuJ1xuICogICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFwgIChcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxcICA+XG4gKiAgICAgICAgICAgICAgICAgICAgICAgLC4tJyA+LidcbiAqICAgICAgICAgICAgICAgICAgICAgIDwuJ18uJydcbiAqICAgICAgICAgICAgICAgICAgICAgICAgPCdcbiAqXG4gKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8vIEZvciBUUyB0byBzdG9wIHNjcmVhbWluZ1xuY2xhc3MgQ3VzdG9tQ29uc29sZSB7XG59XG5leHBvcnRzLkN1c3RvbUNvbnNvbGUgPSBDdXN0b21Db25zb2xlO1xudmFyIENvbnN0YW50cztcbihmdW5jdGlvbiAoQ29uc3RhbnRzKSB7XG4gICAgQ29uc3RhbnRzW0NvbnN0YW50c1tcIkxJTkVfTEVOR1RIX1ZBUklBQkxFXCJdID0gMC42Nl0gPSBcIkxJTkVfTEVOR1RIX1ZBUklBQkxFXCI7XG4gICAgQ29uc3RhbnRzW0NvbnN0YW50c1tcIkRFRkFVTFRfTElORV9MRU5HVEhcIl0gPSA0XSA9IFwiREVGQVVMVF9MSU5FX0xFTkdUSFwiO1xuICAgIENvbnN0YW50c1tDb25zdGFudHNbXCJPTkVcIl0gPSAxXSA9IFwiT05FXCI7XG4gICAgQ29uc3RhbnRzW0NvbnN0YW50c1tcIlRXT1wiXSA9IDJdID0gXCJUV09cIjtcbiAgICBDb25zdGFudHNbQ29uc3RhbnRzW1wiVEhSRUVcIl0gPSAzXSA9IFwiVEhSRUVcIjtcbn0pKENvbnN0YW50cyB8fCAoQ29uc3RhbnRzID0ge30pKTtcbmZ1bmN0aW9uIGluc3RhbmNlT2ZFcnJvcihlKSB7XG4gICAgcmV0dXJuIChlICYmIChlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUuc3RhY2spICYmIChlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUubWVzc2FnZSkgJiZcbiAgICAgICAgdHlwZW9mIGUuc3RhY2sgPT09ICdzdHJpbmcnICYmXG4gICAgICAgIHR5cGVvZiBlLm1lc3NhZ2UgPT09ICdzdHJpbmcnKTtcbn1cbmZ1bmN0aW9uIGxvZ1RvQ29uc29sZShlcnJvciwgZW1vamkgPSAn8J+QticsIGxlbmd0aCkge1xuICAgIC8vIFRvRG86IG9wdGlvbmFsbHkgbG9nIHRpbWUgJiBkYXRlXG4gICAgY29uc3QgaXNFcnJvciA9IGluc3RhbmNlT2ZFcnJvcihlcnJvcik7XG4gICAgY29uc3QgbWVzc2FnZSA9IGlzRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogZXJyb3I7XG4gICAgY29uc3QgbGVuID0gbGVuZ3RoIHx8XG4gICAgICAgIChlcnJvciA9PT0gbnVsbCB8fCBlcnJvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogZXJyb3IudG9TdHJpbmcoKS5sZW5ndGgpICogQ29uc3RhbnRzLkxJTkVfTEVOR1RIX1ZBUklBQkxFIHx8XG4gICAgICAgIENvbnN0YW50cy5ERUZBVUxUX0xJTkVfTEVOR1RIO1xuICAgIGNvbnNvbGUubG9nKGBcbiAgICAgIC/igL4ke2DigL7igL5gLnJlcGVhdChsZW4pfeKAvlxuICAke2Vtb2ppfSA8IGAsIG1lc3NhZ2UsIGBcbiAgICAgIFxcXFxfJHtgX19gLnJlcGVhdChsZW4pfV9cbiAgYCk7XG4gICAgaWYgKGlzRXJyb3IpIHtcbiAgICAgICAgLy8gTm9kZS5qc1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXBDb2xsYXBzZWQoYCR7ZW1vaml9ID4gU3RhY2sgVHJhY2U6YCk7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yLnN0YWNrKTtcbiAgICAgICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2Vtb2ppfSA+IFN0YWNrIFRyYWNlOmApO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvci5zdGFjayk7XG4gICAgICAgIH1cbiAgICB9XG59XG5jb25zb2xlLmVtb2ppID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICBjb25zdCBsb2cgPSBbXTtcbiAgICBsb2dbMF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxvZ1RvQ29uc29sZSgnTWVvdycsICfwn5CxJyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgbG9nW0NvbnN0YW50cy5PTkVdID0gZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgIGxvZ1RvQ29uc29sZShlcnJvcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgbG9nW0NvbnN0YW50cy5UV09dID0gZnVuY3Rpb24gKGVtb2ppLCBlcnJvcikge1xuICAgICAgICBsb2dUb0NvbnNvbGUoZXJyb3IsIGVtb2ppKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBsb2dbQ29uc3RhbnRzLlRIUkVFXSA9IGZ1bmN0aW9uIChlbW9qaSwgZXJyb3IsIGxlbmd0aCkge1xuICAgICAgICBsb2dUb0NvbnNvbGUoZXJyb3IsIGVtb2ppLCBsZW5ndGgpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHRoaXMuZW1vamkgPSBmdW5jdGlvbiAoLi4ucGFzc2VkQXJncykge1xuICAgICAgICAvLyBjYWxsIGFjY29yZGluZyB0byBpbmRleFxuICAgICAgICBsb2dbcGFzc2VkQXJncy5sZW5ndGhdKC4uLnBhc3NlZEFyZ3MpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHRoaXMuZW1vamkoLi4uYXJncyk7XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuIiwiKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG4gICAgZGVmaW5lKFwid2ViZXh0ZW5zaW9uLXBvbHlmaWxsXCIsIFtcIm1vZHVsZVwiXSwgZmFjdG9yeSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBmYWN0b3J5KG1vZHVsZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG1vZCA9IHtcbiAgICAgIGV4cG9ydHM6IHt9XG4gICAgfTtcbiAgICBmYWN0b3J5KG1vZCk7XG4gICAgZ2xvYmFsLmJyb3dzZXIgPSBtb2QuZXhwb3J0cztcbiAgfVxufSkodHlwZW9mIGdsb2JhbFRoaXMgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxUaGlzIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdGhpcywgZnVuY3Rpb24gKG1vZHVsZSkge1xuICAvKiB3ZWJleHRlbnNpb24tcG9seWZpbGwgLSB2MC4xMi4wIC0gVHVlIE1heSAxNCAyMDI0IDE4OjAxOjI5ICovXG4gIC8qIC0qLSBNb2RlOiBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGpzLWluZGVudC1sZXZlbDogMiAtKi0gKi9cbiAgLyogdmltOiBzZXQgc3RzPTIgc3c9MiBldCB0dz04MDogKi9cbiAgLyogVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpY1xuICAgKiBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzXG4gICAqIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uICovXG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIGlmICghKGdsb2JhbFRoaXMuY2hyb21lICYmIGdsb2JhbFRoaXMuY2hyb21lLnJ1bnRpbWUgJiYgZ2xvYmFsVGhpcy5jaHJvbWUucnVudGltZS5pZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHNjcmlwdCBzaG91bGQgb25seSBiZSBsb2FkZWQgaW4gYSBicm93c2VyIGV4dGVuc2lvbi5cIik7XG4gIH1cbiAgaWYgKCEoZ2xvYmFsVGhpcy5icm93c2VyICYmIGdsb2JhbFRoaXMuYnJvd3Nlci5ydW50aW1lICYmIGdsb2JhbFRoaXMuYnJvd3Nlci5ydW50aW1lLmlkKSkge1xuICAgIGNvbnN0IENIUk9NRV9TRU5EX01FU1NBR0VfQ0FMTEJBQ0tfTk9fUkVTUE9OU0VfTUVTU0FHRSA9IFwiVGhlIG1lc3NhZ2UgcG9ydCBjbG9zZWQgYmVmb3JlIGEgcmVzcG9uc2Ugd2FzIHJlY2VpdmVkLlwiO1xuXG4gICAgLy8gV3JhcHBpbmcgdGhlIGJ1bGsgb2YgdGhpcyBwb2x5ZmlsbCBpbiBhIG9uZS10aW1lLXVzZSBmdW5jdGlvbiBpcyBhIG1pbm9yXG4gICAgLy8gb3B0aW1pemF0aW9uIGZvciBGaXJlZm94LiBTaW5jZSBTcGlkZXJtb25rZXkgZG9lcyBub3QgZnVsbHkgcGFyc2UgdGhlXG4gICAgLy8gY29udGVudHMgb2YgYSBmdW5jdGlvbiB1bnRpbCB0aGUgZmlyc3QgdGltZSBpdCdzIGNhbGxlZCwgYW5kIHNpbmNlIGl0IHdpbGxcbiAgICAvLyBuZXZlciBhY3R1YWxseSBuZWVkIHRvIGJlIGNhbGxlZCwgdGhpcyBhbGxvd3MgdGhlIHBvbHlmaWxsIHRvIGJlIGluY2x1ZGVkXG4gICAgLy8gaW4gRmlyZWZveCBuZWFybHkgZm9yIGZyZWUuXG4gICAgY29uc3Qgd3JhcEFQSXMgPSBleHRlbnNpb25BUElzID0+IHtcbiAgICAgIC8vIE5PVEU6IGFwaU1ldGFkYXRhIGlzIGFzc29jaWF0ZWQgdG8gdGhlIGNvbnRlbnQgb2YgdGhlIGFwaS1tZXRhZGF0YS5qc29uIGZpbGVcbiAgICAgIC8vIGF0IGJ1aWxkIHRpbWUgYnkgcmVwbGFjaW5nIHRoZSBmb2xsb3dpbmcgXCJpbmNsdWRlXCIgd2l0aCB0aGUgY29udGVudCBvZiB0aGVcbiAgICAgIC8vIEpTT04gZmlsZS5cbiAgICAgIGNvbnN0IGFwaU1ldGFkYXRhID0ge1xuICAgICAgICBcImFsYXJtc1wiOiB7XG4gICAgICAgICAgXCJjbGVhclwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImNsZWFyQWxsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiYm9va21hcmtzXCI6IHtcbiAgICAgICAgICBcImNyZWF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldENoaWxkcmVuXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0UmVjZW50XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0U3ViVHJlZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFRyZWVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJtb3ZlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlVHJlZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNlYXJjaFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImJyb3dzZXJBY3Rpb25cIjoge1xuICAgICAgICAgIFwiZGlzYWJsZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImVuYWJsZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEJhZGdlQmFja2dyb3VuZENvbG9yXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0QmFkZ2VUZXh0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0UG9wdXBcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRUaXRsZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm9wZW5Qb3B1cFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldEJhZGdlQmFja2dyb3VuZENvbG9yXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0QmFkZ2VUZXh0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0SWNvblwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFBvcHVwXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0VGl0bGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJicm93c2luZ0RhdGFcIjoge1xuICAgICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlQ2FjaGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVDb29raWVzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlRG93bmxvYWRzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlRm9ybURhdGFcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVIaXN0b3J5XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlTG9jYWxTdG9yYWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlUGFzc3dvcmRzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlUGx1Z2luRGF0YVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldHRpbmdzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiY29tbWFuZHNcIjoge1xuICAgICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiY29udGV4dE1lbnVzXCI6IHtcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZUFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImNvb2tpZXNcIjoge1xuICAgICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0QWxsQ29va2llU3RvcmVzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiZGV2dG9vbHNcIjoge1xuICAgICAgICAgIFwiaW5zcGVjdGVkV2luZG93XCI6IHtcbiAgICAgICAgICAgIFwiZXZhbFwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMixcbiAgICAgICAgICAgICAgXCJzaW5nbGVDYWxsYmFja0FyZ1wiOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJwYW5lbHNcIjoge1xuICAgICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMyxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDMsXG4gICAgICAgICAgICAgIFwic2luZ2xlQ2FsbGJhY2tBcmdcIjogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZWxlbWVudHNcIjoge1xuICAgICAgICAgICAgICBcImNyZWF0ZVNpZGViYXJQYW5lXCI6IHtcbiAgICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImRvd25sb2Fkc1wiOiB7XG4gICAgICAgICAgXCJjYW5jZWxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkb3dubG9hZFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImVyYXNlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0RmlsZUljb25cIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJvcGVuXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicGF1c2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVGaWxlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVzdW1lXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2VhcmNoXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2hvd1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImV4dGVuc2lvblwiOiB7XG4gICAgICAgICAgXCJpc0FsbG93ZWRGaWxlU2NoZW1lQWNjZXNzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiaXNBbGxvd2VkSW5jb2duaXRvQWNjZXNzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiaGlzdG9yeVwiOiB7XG4gICAgICAgICAgXCJhZGRVcmxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkZWxldGVBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkZWxldGVSYW5nZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImRlbGV0ZVVybFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFZpc2l0c1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNlYXJjaFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImkxOG5cIjoge1xuICAgICAgICAgIFwiZGV0ZWN0TGFuZ3VhZ2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRBY2NlcHRMYW5ndWFnZXNcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJpZGVudGl0eVwiOiB7XG4gICAgICAgICAgXCJsYXVuY2hXZWJBdXRoRmxvd1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImlkbGVcIjoge1xuICAgICAgICAgIFwicXVlcnlTdGF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIm1hbmFnZW1lbnRcIjoge1xuICAgICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0U2VsZlwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldEVuYWJsZWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1bmluc3RhbGxTZWxmXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwibm90aWZpY2F0aW9uc1wiOiB7XG4gICAgICAgICAgXCJjbGVhclwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImNyZWF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFBlcm1pc3Npb25MZXZlbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInBhZ2VBY3Rpb25cIjoge1xuICAgICAgICAgIFwiZ2V0UG9wdXBcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRUaXRsZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImhpZGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRJY29uXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0UG9wdXBcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRUaXRsZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNob3dcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJwZXJtaXNzaW9uc1wiOiB7XG4gICAgICAgICAgXCJjb250YWluc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlcXVlc3RcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJydW50aW1lXCI6IHtcbiAgICAgICAgICBcImdldEJhY2tncm91bmRQYWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0UGxhdGZvcm1JbmZvXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwib3Blbk9wdGlvbnNQYWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVxdWVzdFVwZGF0ZUNoZWNrXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2VuZE1lc3NhZ2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogM1xuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZW5kTmF0aXZlTWVzc2FnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFVuaW5zdGFsbFVSTFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInNlc3Npb25zXCI6IHtcbiAgICAgICAgICBcImdldERldmljZXNcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRSZWNlbnRseUNsb3NlZFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlc3RvcmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzdG9yYWdlXCI6IHtcbiAgICAgICAgICBcImxvY2FsXCI6IHtcbiAgICAgICAgICAgIFwiY2xlYXJcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZ2V0Qnl0ZXNJblVzZVwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJzZXRcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwibWFuYWdlZFwiOiB7XG4gICAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZ2V0Qnl0ZXNJblVzZVwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzeW5jXCI6IHtcbiAgICAgICAgICAgIFwiY2xlYXJcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZ2V0Qnl0ZXNJblVzZVwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJzZXRcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwidGFic1wiOiB7XG4gICAgICAgICAgXCJjYXB0dXJlVmlzaWJsZVRhYlwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImNyZWF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImRldGVjdExhbmd1YWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZGlzY2FyZFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImR1cGxpY2F0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImV4ZWN1dGVTY3JpcHRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRDdXJyZW50XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0Wm9vbVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFpvb21TZXR0aW5nc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdvQmFja1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdvRm9yd2FyZFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImhpZ2hsaWdodFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImluc2VydENTU1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJxdWVyeVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbG9hZFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZUNTU1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNlbmRNZXNzYWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDNcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0Wm9vbVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFpvb21TZXR0aW5nc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInRvcFNpdGVzXCI6IHtcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIndlYk5hdmlnYXRpb25cIjoge1xuICAgICAgICAgIFwiZ2V0QWxsRnJhbWVzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0RnJhbWVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ3ZWJSZXF1ZXN0XCI6IHtcbiAgICAgICAgICBcImhhbmRsZXJCZWhhdmlvckNoYW5nZWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ3aW5kb3dzXCI6IHtcbiAgICAgICAgICBcImNyZWF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEN1cnJlbnRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRMYXN0Rm9jdXNlZFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgaWYgKE9iamVjdC5rZXlzKGFwaU1ldGFkYXRhKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYXBpLW1ldGFkYXRhLmpzb24gaGFzIG5vdCBiZWVuIGluY2x1ZGVkIGluIGJyb3dzZXItcG9seWZpbGxcIik7XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogQSBXZWFrTWFwIHN1YmNsYXNzIHdoaWNoIGNyZWF0ZXMgYW5kIHN0b3JlcyBhIHZhbHVlIGZvciBhbnkga2V5IHdoaWNoIGRvZXNcbiAgICAgICAqIG5vdCBleGlzdCB3aGVuIGFjY2Vzc2VkLCBidXQgYmVoYXZlcyBleGFjdGx5IGFzIGFuIG9yZGluYXJ5IFdlYWtNYXBcbiAgICAgICAqIG90aGVyd2lzZS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjcmVhdGVJdGVtXG4gICAgICAgKiAgICAgICAgQSBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNhbGxlZCBpbiBvcmRlciB0byBjcmVhdGUgdGhlIHZhbHVlIGZvciBhbnlcbiAgICAgICAqICAgICAgICBrZXkgd2hpY2ggZG9lcyBub3QgZXhpc3QsIHRoZSBmaXJzdCB0aW1lIGl0IGlzIGFjY2Vzc2VkLiBUaGVcbiAgICAgICAqICAgICAgICBmdW5jdGlvbiByZWNlaXZlcywgYXMgaXRzIG9ubHkgYXJndW1lbnQsIHRoZSBrZXkgYmVpbmcgY3JlYXRlZC5cbiAgICAgICAqL1xuICAgICAgY2xhc3MgRGVmYXVsdFdlYWtNYXAgZXh0ZW5kcyBXZWFrTWFwIHtcbiAgICAgICAgY29uc3RydWN0b3IoY3JlYXRlSXRlbSwgaXRlbXMgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzdXBlcihpdGVtcyk7XG4gICAgICAgICAgdGhpcy5jcmVhdGVJdGVtID0gY3JlYXRlSXRlbTtcbiAgICAgICAgfVxuICAgICAgICBnZXQoa2V5KSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldChrZXksIHRoaXMuY3JlYXRlSXRlbShrZXkpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHN1cGVyLmdldChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gb2JqZWN0IHdpdGggYSBgdGhlbmAgbWV0aG9kLCBhbmQgY2FuXG4gICAgICAgKiB0aGVyZWZvcmUgYmUgYXNzdW1lZCB0byBiZWhhdmUgYXMgYSBQcm9taXNlLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHRlc3QuXG4gICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdGhlbmFibGUuXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IGlzVGhlbmFibGUgPSB2YWx1ZSA9PiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09IFwiZnVuY3Rpb25cIjtcbiAgICAgIH07XG5cbiAgICAgIC8qKlxuICAgICAgICogQ3JlYXRlcyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHdoaWNoLCB3aGVuIGNhbGxlZCwgd2lsbCByZXNvbHZlIG9yIHJlamVjdFxuICAgICAgICogdGhlIGdpdmVuIHByb21pc2UgYmFzZWQgb24gaG93IGl0IGlzIGNhbGxlZDpcbiAgICAgICAqXG4gICAgICAgKiAtIElmLCB3aGVuIGNhbGxlZCwgYGNocm9tZS5ydW50aW1lLmxhc3RFcnJvcmAgY29udGFpbnMgYSBub24tbnVsbCBvYmplY3QsXG4gICAgICAgKiAgIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggdGhhdCB2YWx1ZS5cbiAgICAgICAqIC0gSWYgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGV4YWN0bHkgb25lIGFyZ3VtZW50LCB0aGUgcHJvbWlzZSBpc1xuICAgICAgICogICByZXNvbHZlZCB0byB0aGF0IHZhbHVlLlxuICAgICAgICogLSBPdGhlcndpc2UsIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHRvIGFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIG9mIHRoZVxuICAgICAgICogICBmdW5jdGlvbidzIGFyZ3VtZW50cy5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gcHJvbWlzZVxuICAgICAgICogICAgICAgIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSByZXNvbHV0aW9uIGFuZCByZWplY3Rpb24gZnVuY3Rpb25zIG9mIGFcbiAgICAgICAqICAgICAgICBwcm9taXNlLlxuICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvbWlzZS5yZXNvbHZlXG4gICAgICAgKiAgICAgICAgVGhlIHByb21pc2UncyByZXNvbHV0aW9uIGZ1bmN0aW9uLlxuICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvbWlzZS5yZWplY3RcbiAgICAgICAqICAgICAgICBUaGUgcHJvbWlzZSdzIHJlamVjdGlvbiBmdW5jdGlvbi5cbiAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBtZXRhZGF0YVxuICAgICAgICogICAgICAgIE1ldGFkYXRhIGFib3V0IHRoZSB3cmFwcGVkIG1ldGhvZCB3aGljaCBoYXMgY3JlYXRlZCB0aGUgY2FsbGJhY2suXG4gICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG1ldGFkYXRhLnNpbmdsZUNhbGxiYWNrQXJnXG4gICAgICAgKiAgICAgICAgV2hldGhlciBvciBub3QgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgd2l0aCBvbmx5IHRoZSBmaXJzdFxuICAgICAgICogICAgICAgIGFyZ3VtZW50IG9mIHRoZSBjYWxsYmFjaywgYWx0ZXJuYXRpdmVseSBhbiBhcnJheSBvZiBhbGwgdGhlXG4gICAgICAgKiAgICAgICAgY2FsbGJhY2sgYXJndW1lbnRzIGlzIHJlc29sdmVkLiBCeSBkZWZhdWx0LCBpZiB0aGUgY2FsbGJhY2tcbiAgICAgICAqICAgICAgICBmdW5jdGlvbiBpcyBpbnZva2VkIHdpdGggb25seSBhIHNpbmdsZSBhcmd1bWVudCwgdGhhdCB3aWxsIGJlXG4gICAgICAgKiAgICAgICAgcmVzb2x2ZWQgdG8gdGhlIHByb21pc2UsIHdoaWxlIGFsbCBhcmd1bWVudHMgd2lsbCBiZSByZXNvbHZlZCBhc1xuICAgICAgICogICAgICAgIGFuIGFycmF5IGlmIG11bHRpcGxlIGFyZSBnaXZlbi5cbiAgICAgICAqXG4gICAgICAgKiBAcmV0dXJucyB7ZnVuY3Rpb259XG4gICAgICAgKiAgICAgICAgVGhlIGdlbmVyYXRlZCBjYWxsYmFjayBmdW5jdGlvbi5cbiAgICAgICAqL1xuICAgICAgY29uc3QgbWFrZUNhbGxiYWNrID0gKHByb21pc2UsIG1ldGFkYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiAoLi4uY2FsbGJhY2tBcmdzKSA9PiB7XG4gICAgICAgICAgaWYgKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IpIHtcbiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KG5ldyBFcnJvcihleHRlbnNpb25BUElzLnJ1bnRpbWUubGFzdEVycm9yLm1lc3NhZ2UpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnNpbmdsZUNhbGxiYWNrQXJnIHx8IGNhbGxiYWNrQXJncy5sZW5ndGggPD0gMSAmJiBtZXRhZGF0YS5zaW5nbGVDYWxsYmFja0FyZyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShjYWxsYmFja0FyZ3NbMF0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FsbGJhY2tBcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgY29uc3QgcGx1cmFsaXplQXJndW1lbnRzID0gbnVtQXJncyA9PiBudW1BcmdzID09IDEgPyBcImFyZ3VtZW50XCIgOiBcImFyZ3VtZW50c1wiO1xuXG4gICAgICAvKipcbiAgICAgICAqIENyZWF0ZXMgYSB3cmFwcGVyIGZ1bmN0aW9uIGZvciBhIG1ldGhvZCB3aXRoIHRoZSBnaXZlbiBuYW1lIGFuZCBtZXRhZGF0YS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgICAgICogICAgICAgIFRoZSBuYW1lIG9mIHRoZSBtZXRob2Qgd2hpY2ggaXMgYmVpbmcgd3JhcHBlZC5cbiAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBtZXRhZGF0YVxuICAgICAgICogICAgICAgIE1ldGFkYXRhIGFib3V0IHRoZSBtZXRob2QgYmVpbmcgd3JhcHBlZC5cbiAgICAgICAqIEBwYXJhbSB7aW50ZWdlcn0gbWV0YWRhdGEubWluQXJnc1xuICAgICAgICogICAgICAgIFRoZSBtaW5pbXVtIG51bWJlciBvZiBhcmd1bWVudHMgd2hpY2ggbXVzdCBiZSBwYXNzZWQgdG8gdGhlXG4gICAgICAgKiAgICAgICAgZnVuY3Rpb24uIElmIGNhbGxlZCB3aXRoIGZld2VyIHRoYW4gdGhpcyBudW1iZXIgb2YgYXJndW1lbnRzLCB0aGVcbiAgICAgICAqICAgICAgICB3cmFwcGVyIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLlxuICAgICAgICogQHBhcmFtIHtpbnRlZ2VyfSBtZXRhZGF0YS5tYXhBcmdzXG4gICAgICAgKiAgICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGFyZ3VtZW50cyB3aGljaCBtYXkgYmUgcGFzc2VkIHRvIHRoZVxuICAgICAgICogICAgICAgIGZ1bmN0aW9uLiBJZiBjYWxsZWQgd2l0aCBtb3JlIHRoYW4gdGhpcyBudW1iZXIgb2YgYXJndW1lbnRzLCB0aGVcbiAgICAgICAqICAgICAgICB3cmFwcGVyIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLlxuICAgICAgICogQHBhcmFtIHtib29sZWFufSBtZXRhZGF0YS5zaW5nbGVDYWxsYmFja0FyZ1xuICAgICAgICogICAgICAgIFdoZXRoZXIgb3Igbm90IHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHdpdGggb25seSB0aGUgZmlyc3RcbiAgICAgICAqICAgICAgICBhcmd1bWVudCBvZiB0aGUgY2FsbGJhY2ssIGFsdGVybmF0aXZlbHkgYW4gYXJyYXkgb2YgYWxsIHRoZVxuICAgICAgICogICAgICAgIGNhbGxiYWNrIGFyZ3VtZW50cyBpcyByZXNvbHZlZC4gQnkgZGVmYXVsdCwgaWYgdGhlIGNhbGxiYWNrXG4gICAgICAgKiAgICAgICAgZnVuY3Rpb24gaXMgaW52b2tlZCB3aXRoIG9ubHkgYSBzaW5nbGUgYXJndW1lbnQsIHRoYXQgd2lsbCBiZVxuICAgICAgICogICAgICAgIHJlc29sdmVkIHRvIHRoZSBwcm9taXNlLCB3aGlsZSBhbGwgYXJndW1lbnRzIHdpbGwgYmUgcmVzb2x2ZWQgYXNcbiAgICAgICAqICAgICAgICBhbiBhcnJheSBpZiBtdWx0aXBsZSBhcmUgZ2l2ZW4uXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge2Z1bmN0aW9uKG9iamVjdCwgLi4uKil9XG4gICAgICAgKiAgICAgICBUaGUgZ2VuZXJhdGVkIHdyYXBwZXIgZnVuY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHdyYXBBc3luY0Z1bmN0aW9uID0gKG5hbWUsIG1ldGFkYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBhc3luY0Z1bmN0aW9uV3JhcHBlcih0YXJnZXQsIC4uLmFyZ3MpIHtcbiAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPCBtZXRhZGF0YS5taW5BcmdzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGF0IGxlYXN0ICR7bWV0YWRhdGEubWluQXJnc30gJHtwbHVyYWxpemVBcmd1bWVudHMobWV0YWRhdGEubWluQXJncyl9IGZvciAke25hbWV9KCksIGdvdCAke2FyZ3MubGVuZ3RofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPiBtZXRhZGF0YS5tYXhBcmdzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGF0IG1vc3QgJHttZXRhZGF0YS5tYXhBcmdzfSAke3BsdXJhbGl6ZUFyZ3VtZW50cyhtZXRhZGF0YS5tYXhBcmdzKX0gZm9yICR7bmFtZX0oKSwgZ290ICR7YXJncy5sZW5ndGh9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuZmFsbGJhY2tUb05vQ2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBBUEkgbWV0aG9kIGhhcyBjdXJyZW50bHkgbm8gY2FsbGJhY2sgb24gQ2hyb21lLCBidXQgaXQgcmV0dXJuIGEgcHJvbWlzZSBvbiBGaXJlZm94LFxuICAgICAgICAgICAgICAvLyBhbmQgc28gdGhlIHBvbHlmaWxsIHdpbGwgdHJ5IHRvIGNhbGwgaXQgd2l0aCBhIGNhbGxiYWNrIGZpcnN0LCBhbmQgaXQgd2lsbCBmYWxsYmFja1xuICAgICAgICAgICAgICAvLyB0byBub3QgcGFzc2luZyB0aGUgY2FsbGJhY2sgaWYgdGhlIGZpcnN0IGNhbGwgZmFpbHMuXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W25hbWVdKC4uLmFyZ3MsIG1ha2VDYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlLFxuICAgICAgICAgICAgICAgICAgcmVqZWN0XG4gICAgICAgICAgICAgICAgfSwgbWV0YWRhdGEpKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoY2JFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHtuYW1lfSBBUEkgbWV0aG9kIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IHRoZSBjYWxsYmFjayBwYXJhbWV0ZXIsIGAgKyBcImZhbGxpbmcgYmFjayB0byBjYWxsIGl0IHdpdGhvdXQgYSBjYWxsYmFjazogXCIsIGNiRXJyb3IpO1xuICAgICAgICAgICAgICAgIHRhcmdldFtuYW1lXSguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgQVBJIG1ldGhvZCBtZXRhZGF0YSwgc28gdGhhdCB0aGUgbmV4dCBBUEkgY2FsbHMgd2lsbCBub3QgdHJ5IHRvXG4gICAgICAgICAgICAgICAgLy8gdXNlIHRoZSB1bnN1cHBvcnRlZCBjYWxsYmFjayBhbnltb3JlLlxuICAgICAgICAgICAgICAgIG1ldGFkYXRhLmZhbGxiYWNrVG9Ob0NhbGxiYWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGEubm9DYWxsYmFjayA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLm5vQ2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgdGFyZ2V0W25hbWVdKC4uLmFyZ3MpO1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0YXJnZXRbbmFtZV0oLi4uYXJncywgbWFrZUNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgICByZXNvbHZlLFxuICAgICAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgICAgICB9LCBtZXRhZGF0YSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgLyoqXG4gICAgICAgKiBXcmFwcyBhbiBleGlzdGluZyBtZXRob2Qgb2YgdGhlIHRhcmdldCBvYmplY3QsIHNvIHRoYXQgY2FsbHMgdG8gaXQgYXJlXG4gICAgICAgKiBpbnRlcmNlcHRlZCBieSB0aGUgZ2l2ZW4gd3JhcHBlciBmdW5jdGlvbi4gVGhlIHdyYXBwZXIgZnVuY3Rpb24gcmVjZWl2ZXMsXG4gICAgICAgKiBhcyBpdHMgZmlyc3QgYXJndW1lbnQsIHRoZSBvcmlnaW5hbCBgdGFyZ2V0YCBvYmplY3QsIGZvbGxvd2VkIGJ5IGVhY2ggb2ZcbiAgICAgICAqIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBvcmlnaW5hbCBtZXRob2QuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldFxuICAgICAgICogICAgICAgIFRoZSBvcmlnaW5hbCB0YXJnZXQgb2JqZWN0IHRoYXQgdGhlIHdyYXBwZWQgbWV0aG9kIGJlbG9uZ3MgdG8uXG4gICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZXRob2RcbiAgICAgICAqICAgICAgICBUaGUgbWV0aG9kIGJlaW5nIHdyYXBwZWQuIFRoaXMgaXMgdXNlZCBhcyB0aGUgdGFyZ2V0IG9mIHRoZSBQcm94eVxuICAgICAgICogICAgICAgIG9iamVjdCB3aGljaCBpcyBjcmVhdGVkIHRvIHdyYXAgdGhlIG1ldGhvZC5cbiAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IHdyYXBwZXJcbiAgICAgICAqICAgICAgICBUaGUgd3JhcHBlciBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgaW4gcGxhY2Ugb2YgYSBkaXJlY3QgaW52b2NhdGlvblxuICAgICAgICogICAgICAgIG9mIHRoZSB3cmFwcGVkIG1ldGhvZC5cbiAgICAgICAqXG4gICAgICAgKiBAcmV0dXJucyB7UHJveHk8ZnVuY3Rpb24+fVxuICAgICAgICogICAgICAgIEEgUHJveHkgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gbWV0aG9kLCB3aGljaCBpbnZva2VzIHRoZSBnaXZlbiB3cmFwcGVyXG4gICAgICAgKiAgICAgICAgbWV0aG9kIGluIGl0cyBwbGFjZS5cbiAgICAgICAqL1xuICAgICAgY29uc3Qgd3JhcE1ldGhvZCA9ICh0YXJnZXQsIG1ldGhvZCwgd3JhcHBlcikgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KG1ldGhvZCwge1xuICAgICAgICAgIGFwcGx5KHRhcmdldE1ldGhvZCwgdGhpc09iaiwgYXJncykge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXIuY2FsbCh0aGlzT2JqLCB0YXJnZXQsIC4uLmFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgbGV0IGhhc093blByb3BlcnR5ID0gRnVuY3Rpb24uY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpO1xuXG4gICAgICAvKipcbiAgICAgICAqIFdyYXBzIGFuIG9iamVjdCBpbiBhIFByb3h5IHdoaWNoIGludGVyY2VwdHMgYW5kIHdyYXBzIGNlcnRhaW4gbWV0aG9kc1xuICAgICAgICogYmFzZWQgb24gdGhlIGdpdmVuIGB3cmFwcGVyc2AgYW5kIGBtZXRhZGF0YWAgb2JqZWN0cy5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0XG4gICAgICAgKiAgICAgICAgVGhlIHRhcmdldCBvYmplY3QgdG8gd3JhcC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3dyYXBwZXJzID0ge31dXG4gICAgICAgKiAgICAgICAgQW4gb2JqZWN0IHRyZWUgY29udGFpbmluZyB3cmFwcGVyIGZ1bmN0aW9ucyBmb3Igc3BlY2lhbCBjYXNlcy4gQW55XG4gICAgICAgKiAgICAgICAgZnVuY3Rpb24gcHJlc2VudCBpbiB0aGlzIG9iamVjdCB0cmVlIGlzIGNhbGxlZCBpbiBwbGFjZSBvZiB0aGVcbiAgICAgICAqICAgICAgICBtZXRob2QgaW4gdGhlIHNhbWUgbG9jYXRpb24gaW4gdGhlIGB0YXJnZXRgIG9iamVjdCB0cmVlLiBUaGVzZVxuICAgICAgICogICAgICAgIHdyYXBwZXIgbWV0aG9kcyBhcmUgaW52b2tlZCBhcyBkZXNjcmliZWQgaW4ge0BzZWUgd3JhcE1ldGhvZH0uXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IFttZXRhZGF0YSA9IHt9XVxuICAgICAgICogICAgICAgIEFuIG9iamVjdCB0cmVlIGNvbnRhaW5pbmcgbWV0YWRhdGEgdXNlZCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlXG4gICAgICAgKiAgICAgICAgUHJvbWlzZS1iYXNlZCB3cmFwcGVyIGZ1bmN0aW9ucyBmb3IgYXN5bmNocm9ub3VzLiBBbnkgZnVuY3Rpb24gaW5cbiAgICAgICAqICAgICAgICB0aGUgYHRhcmdldGAgb2JqZWN0IHRyZWUgd2hpY2ggaGFzIGEgY29ycmVzcG9uZGluZyBtZXRhZGF0YSBvYmplY3RcbiAgICAgICAqICAgICAgICBpbiB0aGUgc2FtZSBsb2NhdGlvbiBpbiB0aGUgYG1ldGFkYXRhYCB0cmVlIGlzIHJlcGxhY2VkIHdpdGggYW5cbiAgICAgICAqICAgICAgICBhdXRvbWF0aWNhbGx5LWdlbmVyYXRlZCB3cmFwcGVyIGZ1bmN0aW9uLCBhcyBkZXNjcmliZWQgaW5cbiAgICAgICAqICAgICAgICB7QHNlZSB3cmFwQXN5bmNGdW5jdGlvbn1cbiAgICAgICAqXG4gICAgICAgKiBAcmV0dXJucyB7UHJveHk8b2JqZWN0Pn1cbiAgICAgICAqL1xuICAgICAgY29uc3Qgd3JhcE9iamVjdCA9ICh0YXJnZXQsIHdyYXBwZXJzID0ge30sIG1ldGFkYXRhID0ge30pID0+IHtcbiAgICAgICAgbGV0IGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgbGV0IGhhbmRsZXJzID0ge1xuICAgICAgICAgIGhhcyhwcm94eVRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgcmV0dXJuIHByb3AgaW4gdGFyZ2V0IHx8IHByb3AgaW4gY2FjaGU7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXQocHJveHlUYXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAocHJvcCBpbiBjYWNoZSkge1xuICAgICAgICAgICAgICByZXR1cm4gY2FjaGVbcHJvcF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShwcm9wIGluIHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRhcmdldFtwcm9wXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgbWV0aG9kIG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4gQ2hlY2sgaWYgd2UgbmVlZCB0byBkb1xuICAgICAgICAgICAgICAvLyBhbnkgd3JhcHBpbmcuXG5cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3cmFwcGVyc1twcm9wXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIHNwZWNpYWwtY2FzZSB3cmFwcGVyIGZvciB0aGlzIG1ldGhvZC5cbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHdyYXBNZXRob2QodGFyZ2V0LCB0YXJnZXRbcHJvcF0sIHdyYXBwZXJzW3Byb3BdKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNPd25Qcm9wZXJ0eShtZXRhZGF0YSwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGFuIGFzeW5jIG1ldGhvZCB0aGF0IHdlIGhhdmUgbWV0YWRhdGEgZm9yLiBDcmVhdGUgYVxuICAgICAgICAgICAgICAgIC8vIFByb21pc2Ugd3JhcHBlciBmb3IgaXQuXG4gICAgICAgICAgICAgICAgbGV0IHdyYXBwZXIgPSB3cmFwQXN5bmNGdW5jdGlvbihwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB3cmFwTWV0aG9kKHRhcmdldCwgdGFyZ2V0W3Byb3BdLCB3cmFwcGVyKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgbWV0aG9kIHRoYXQgd2UgZG9uJ3Qga25vdyBvciBjYXJlIGFib3V0LiBSZXR1cm4gdGhlXG4gICAgICAgICAgICAgICAgLy8gb3JpZ2luYWwgbWV0aG9kLCBib3VuZCB0byB0aGUgdW5kZXJseWluZyBvYmplY3QuXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5iaW5kKHRhcmdldCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsICYmIChoYXNPd25Qcm9wZXJ0eSh3cmFwcGVycywgcHJvcCkgfHwgaGFzT3duUHJvcGVydHkobWV0YWRhdGEsIHByb3ApKSkge1xuICAgICAgICAgICAgICAvLyBUaGlzIGlzIGFuIG9iamVjdCB0aGF0IHdlIG5lZWQgdG8gZG8gc29tZSB3cmFwcGluZyBmb3IgdGhlIGNoaWxkcmVuXG4gICAgICAgICAgICAgIC8vIG9mLiBDcmVhdGUgYSBzdWItb2JqZWN0IHdyYXBwZXIgZm9yIGl0IHdpdGggdGhlIGFwcHJvcHJpYXRlIGNoaWxkXG4gICAgICAgICAgICAgIC8vIG1ldGFkYXRhLlxuICAgICAgICAgICAgICB2YWx1ZSA9IHdyYXBPYmplY3QodmFsdWUsIHdyYXBwZXJzW3Byb3BdLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhhc093blByb3BlcnR5KG1ldGFkYXRhLCBcIipcIikpIHtcbiAgICAgICAgICAgICAgLy8gV3JhcCBhbGwgcHJvcGVydGllcyBpbiAqIG5hbWVzcGFjZS5cbiAgICAgICAgICAgICAgdmFsdWUgPSB3cmFwT2JqZWN0KHZhbHVlLCB3cmFwcGVyc1twcm9wXSwgbWV0YWRhdGFbXCIqXCJdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gYW55IHdyYXBwaW5nIGZvciB0aGlzIHByb3BlcnR5LFxuICAgICAgICAgICAgICAvLyBzbyBqdXN0IGZvcndhcmQgYWxsIGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBvYmplY3QuXG4gICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjYWNoZSwgcHJvcCwge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbcHJvcF07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhY2hlW3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXQocHJveHlUYXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHByb3AgaW4gY2FjaGUpIHtcbiAgICAgICAgICAgICAgY2FjaGVbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZWZpbmVQcm9wZXJ0eShwcm94eVRhcmdldCwgcHJvcCwgZGVzYykge1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoY2FjaGUsIHByb3AsIGRlc2MpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVsZXRlUHJvcGVydHkocHJveHlUYXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KGNhY2hlLCBwcm9wKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gUGVyIGNvbnRyYWN0IG9mIHRoZSBQcm94eSBBUEksIHRoZSBcImdldFwiIHByb3h5IGhhbmRsZXIgbXVzdCByZXR1cm4gdGhlXG4gICAgICAgIC8vIG9yaWdpbmFsIHZhbHVlIG9mIHRoZSB0YXJnZXQgaWYgdGhhdCB2YWx1ZSBpcyBkZWNsYXJlZCByZWFkLW9ubHkgYW5kXG4gICAgICAgIC8vIG5vbi1jb25maWd1cmFibGUuIEZvciB0aGlzIHJlYXNvbiwgd2UgY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZVxuICAgICAgICAvLyBwcm90b3R5cGUgc2V0IHRvIGB0YXJnZXRgIGluc3RlYWQgb2YgdXNpbmcgYHRhcmdldGAgZGlyZWN0bHkuXG4gICAgICAgIC8vIE90aGVyd2lzZSB3ZSBjYW5ub3QgcmV0dXJuIGEgY3VzdG9tIG9iamVjdCBmb3IgQVBJcyB0aGF0XG4gICAgICAgIC8vIGFyZSBkZWNsYXJlZCByZWFkLW9ubHkgYW5kIG5vbi1jb25maWd1cmFibGUsIHN1Y2ggYXMgYGNocm9tZS5kZXZ0b29sc2AuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRoZSBwcm94eSBoYW5kbGVycyB0aGVtc2VsdmVzIHdpbGwgc3RpbGwgdXNlIHRoZSBvcmlnaW5hbCBgdGFyZ2V0YFxuICAgICAgICAvLyBpbnN0ZWFkIG9mIHRoZSBgcHJveHlUYXJnZXRgLCBzbyB0aGF0IHRoZSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGFyZVxuICAgICAgICAvLyBkZXJlZmVyZW5jZWQgdmlhIHRoZSBvcmlnaW5hbCB0YXJnZXRzLlxuICAgICAgICBsZXQgcHJveHlUYXJnZXQgPSBPYmplY3QuY3JlYXRlKHRhcmdldCk7XG4gICAgICAgIHJldHVybiBuZXcgUHJveHkocHJveHlUYXJnZXQsIGhhbmRsZXJzKTtcbiAgICAgIH07XG5cbiAgICAgIC8qKlxuICAgICAgICogQ3JlYXRlcyBhIHNldCBvZiB3cmFwcGVyIGZ1bmN0aW9ucyBmb3IgYW4gZXZlbnQgb2JqZWN0LCB3aGljaCBoYW5kbGVzXG4gICAgICAgKiB3cmFwcGluZyBvZiBsaXN0ZW5lciBmdW5jdGlvbnMgdGhhdCB0aG9zZSBtZXNzYWdlcyBhcmUgcGFzc2VkLlxuICAgICAgICpcbiAgICAgICAqIEEgc2luZ2xlIHdyYXBwZXIgaXMgY3JlYXRlZCBmb3IgZWFjaCBsaXN0ZW5lciBmdW5jdGlvbiwgYW5kIHN0b3JlZCBpbiBhXG4gICAgICAgKiBtYXAuIFN1YnNlcXVlbnQgY2FsbHMgdG8gYGFkZExpc3RlbmVyYCwgYGhhc0xpc3RlbmVyYCwgb3IgYHJlbW92ZUxpc3RlbmVyYFxuICAgICAgICogcmV0cmlldmUgdGhlIG9yaWdpbmFsIHdyYXBwZXIsIHNvIHRoYXQgIGF0dGVtcHRzIHRvIHJlbW92ZSBhXG4gICAgICAgKiBwcmV2aW91c2x5LWFkZGVkIGxpc3RlbmVyIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtEZWZhdWx0V2Vha01hcDxmdW5jdGlvbiwgZnVuY3Rpb24+fSB3cmFwcGVyTWFwXG4gICAgICAgKiAgICAgICAgQSBEZWZhdWx0V2Vha01hcCBvYmplY3Qgd2hpY2ggd2lsbCBjcmVhdGUgdGhlIGFwcHJvcHJpYXRlIHdyYXBwZXJcbiAgICAgICAqICAgICAgICBmb3IgYSBnaXZlbiBsaXN0ZW5lciBmdW5jdGlvbiB3aGVuIG9uZSBkb2VzIG5vdCBleGlzdCwgYW5kIHJldHJpZXZlXG4gICAgICAgKiAgICAgICAgYW4gZXhpc3Rpbmcgb25lIHdoZW4gaXQgZG9lcy5cbiAgICAgICAqXG4gICAgICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgICAgICovXG4gICAgICBjb25zdCB3cmFwRXZlbnQgPSB3cmFwcGVyTWFwID0+ICh7XG4gICAgICAgIGFkZExpc3RlbmVyKHRhcmdldCwgbGlzdGVuZXIsIC4uLmFyZ3MpIHtcbiAgICAgICAgICB0YXJnZXQuYWRkTGlzdGVuZXIod3JhcHBlck1hcC5nZXQobGlzdGVuZXIpLCAuLi5hcmdzKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGFzTGlzdGVuZXIodGFyZ2V0LCBsaXN0ZW5lcikge1xuICAgICAgICAgIHJldHVybiB0YXJnZXQuaGFzTGlzdGVuZXIod3JhcHBlck1hcC5nZXQobGlzdGVuZXIpKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlTGlzdGVuZXIodGFyZ2V0LCBsaXN0ZW5lcikge1xuICAgICAgICAgIHRhcmdldC5yZW1vdmVMaXN0ZW5lcih3cmFwcGVyTWFwLmdldChsaXN0ZW5lcikpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG9uUmVxdWVzdEZpbmlzaGVkV3JhcHBlcnMgPSBuZXcgRGVmYXVsdFdlYWtNYXAobGlzdGVuZXIgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICByZXR1cm4gbGlzdGVuZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogV3JhcHMgYW4gb25SZXF1ZXN0RmluaXNoZWQgbGlzdGVuZXIgZnVuY3Rpb24gc28gdGhhdCBpdCB3aWxsIHJldHVybiBhXG4gICAgICAgICAqIGBnZXRDb250ZW50KClgIHByb3BlcnR5IHdoaWNoIHJldHVybnMgYSBgUHJvbWlzZWAgcmF0aGVyIHRoYW4gdXNpbmcgYVxuICAgICAgICAgKiBjYWxsYmFjayBBUEkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSByZXFcbiAgICAgICAgICogICAgICAgIFRoZSBIQVIgZW50cnkgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbmV0d29yayByZXF1ZXN0LlxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIG9uUmVxdWVzdEZpbmlzaGVkKHJlcSkge1xuICAgICAgICAgIGNvbnN0IHdyYXBwZWRSZXEgPSB3cmFwT2JqZWN0KHJlcSwge30gLyogd3JhcHBlcnMgKi8sIHtcbiAgICAgICAgICAgIGdldENvbnRlbnQ6IHtcbiAgICAgICAgICAgICAgbWluQXJnczogMCxcbiAgICAgICAgICAgICAgbWF4QXJnczogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGxpc3RlbmVyKHdyYXBwZWRSZXEpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBjb25zdCBvbk1lc3NhZ2VXcmFwcGVycyA9IG5ldyBEZWZhdWx0V2Vha01hcChsaXN0ZW5lciA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHJldHVybiBsaXN0ZW5lcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXcmFwcyBhIG1lc3NhZ2UgbGlzdGVuZXIgZnVuY3Rpb24gc28gdGhhdCBpdCBtYXkgc2VuZCByZXNwb25zZXMgYmFzZWQgb25cbiAgICAgICAgICogaXRzIHJldHVybiB2YWx1ZSwgcmF0aGVyIHRoYW4gYnkgcmV0dXJuaW5nIGEgc2VudGluZWwgdmFsdWUgYW5kIGNhbGxpbmcgYVxuICAgICAgICAgKiBjYWxsYmFjay4gSWYgdGhlIGxpc3RlbmVyIGZ1bmN0aW9uIHJldHVybnMgYSBQcm9taXNlLCB0aGUgcmVzcG9uc2UgaXNcbiAgICAgICAgICogc2VudCB3aGVuIHRoZSBwcm9taXNlIGVpdGhlciByZXNvbHZlcyBvciByZWplY3RzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0geyp9IG1lc3NhZ2VcbiAgICAgICAgICogICAgICAgIFRoZSBtZXNzYWdlIHNlbnQgYnkgdGhlIG90aGVyIGVuZCBvZiB0aGUgY2hhbm5lbC5cbiAgICAgICAgICogQHBhcmFtIHtvYmplY3R9IHNlbmRlclxuICAgICAgICAgKiAgICAgICAgRGV0YWlscyBhYm91dCB0aGUgc2VuZGVyIG9mIHRoZSBtZXNzYWdlLlxuICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCopfSBzZW5kUmVzcG9uc2VcbiAgICAgICAgICogICAgICAgIEEgY2FsbGJhY2sgd2hpY2gsIHdoZW4gY2FsbGVkIHdpdGggYW4gYXJiaXRyYXJ5IGFyZ3VtZW50LCBzZW5kc1xuICAgICAgICAgKiAgICAgICAgdGhhdCB2YWx1ZSBhcyBhIHJlc3BvbnNlLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgICAgICogICAgICAgIFRydWUgaWYgdGhlIHdyYXBwZWQgbGlzdGVuZXIgcmV0dXJuZWQgYSBQcm9taXNlLCB3aGljaCB3aWxsIGxhdGVyXG4gICAgICAgICAqICAgICAgICB5aWVsZCBhIHJlc3BvbnNlLiBGYWxzZSBvdGhlcndpc2UuXG4gICAgICAgICAqL1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gb25NZXNzYWdlKG1lc3NhZ2UsIHNlbmRlciwgc2VuZFJlc3BvbnNlKSB7XG4gICAgICAgICAgbGV0IGRpZENhbGxTZW5kUmVzcG9uc2UgPSBmYWxzZTtcbiAgICAgICAgICBsZXQgd3JhcHBlZFNlbmRSZXNwb25zZTtcbiAgICAgICAgICBsZXQgc2VuZFJlc3BvbnNlUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgd3JhcHBlZFNlbmRSZXNwb25zZSA9IGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICBkaWRDYWxsU2VuZFJlc3BvbnNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGxpc3RlbmVyKG1lc3NhZ2UsIHNlbmRlciwgd3JhcHBlZFNlbmRSZXNwb25zZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBQcm9taXNlLnJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc1Jlc3VsdFRoZW5hYmxlID0gcmVzdWx0ICE9PSB0cnVlICYmIGlzVGhlbmFibGUocmVzdWx0KTtcblxuICAgICAgICAgIC8vIElmIHRoZSBsaXN0ZW5lciBkaWRuJ3QgcmV0dXJuZWQgdHJ1ZSBvciBhIFByb21pc2UsIG9yIGNhbGxlZFxuICAgICAgICAgIC8vIHdyYXBwZWRTZW5kUmVzcG9uc2Ugc3luY2hyb25vdXNseSwgd2UgY2FuIGV4aXQgZWFybGllclxuICAgICAgICAgIC8vIGJlY2F1c2UgdGhlcmUgd2lsbCBiZSBubyByZXNwb25zZSBzZW50IGZyb20gdGhpcyBsaXN0ZW5lci5cbiAgICAgICAgICBpZiAocmVzdWx0ICE9PSB0cnVlICYmICFpc1Jlc3VsdFRoZW5hYmxlICYmICFkaWRDYWxsU2VuZFJlc3BvbnNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQSBzbWFsbCBoZWxwZXIgdG8gc2VuZCB0aGUgbWVzc2FnZSBpZiB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgICAgICAgIC8vIGFuZCBhbiBlcnJvciBpZiB0aGUgcHJvbWlzZSByZWplY3RzIChhIHdyYXBwZWQgc2VuZE1lc3NhZ2UgaGFzXG4gICAgICAgICAgLy8gdG8gdHJhbnNsYXRlIHRoZSBtZXNzYWdlIGludG8gYSByZXNvbHZlZCBwcm9taXNlIG9yIGEgcmVqZWN0ZWRcbiAgICAgICAgICAvLyBwcm9taXNlKS5cbiAgICAgICAgICBjb25zdCBzZW5kUHJvbWlzZWRSZXN1bHQgPSBwcm9taXNlID0+IHtcbiAgICAgICAgICAgIHByb21pc2UudGhlbihtc2cgPT4ge1xuICAgICAgICAgICAgICAvLyBzZW5kIHRoZSBtZXNzYWdlIHZhbHVlLlxuICAgICAgICAgICAgICBzZW5kUmVzcG9uc2UobXNnKTtcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgLy8gU2VuZCBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yIGlmIHRoZSByZWplY3RlZCB2YWx1ZVxuICAgICAgICAgICAgICAvLyBpcyBhbiBpbnN0YW5jZSBvZiBlcnJvciwgb3IgdGhlIG9iamVjdCBpdHNlbGYgb3RoZXJ3aXNlLlxuICAgICAgICAgICAgICBsZXQgbWVzc2FnZTtcbiAgICAgICAgICAgICAgaWYgKGVycm9yICYmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yIHx8IHR5cGVvZiBlcnJvci5tZXNzYWdlID09PSBcInN0cmluZ1wiKSkge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBcIkFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWRcIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZW5kUmVzcG9uc2Uoe1xuICAgICAgICAgICAgICAgIF9fbW96V2ViRXh0ZW5zaW9uUG9seWZpbGxSZWplY3RfXzogdHJ1ZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgLy8gUHJpbnQgYW4gZXJyb3Igb24gdGhlIGNvbnNvbGUgaWYgdW5hYmxlIHRvIHNlbmQgdGhlIHJlc3BvbnNlLlxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHNlbmQgb25NZXNzYWdlIHJlamVjdGVkIHJlcGx5XCIsIGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gSWYgdGhlIGxpc3RlbmVyIHJldHVybmVkIGEgUHJvbWlzZSwgc2VuZCB0aGUgcmVzb2x2ZWQgdmFsdWUgYXMgYVxuICAgICAgICAgIC8vIHJlc3VsdCwgb3RoZXJ3aXNlIHdhaXQgdGhlIHByb21pc2UgcmVsYXRlZCB0byB0aGUgd3JhcHBlZFNlbmRSZXNwb25zZVxuICAgICAgICAgIC8vIGNhbGxiYWNrIHRvIHJlc29sdmUgYW5kIHNlbmQgaXQgYXMgYSByZXNwb25zZS5cbiAgICAgICAgICBpZiAoaXNSZXN1bHRUaGVuYWJsZSkge1xuICAgICAgICAgICAgc2VuZFByb21pc2VkUmVzdWx0KHJlc3VsdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbmRQcm9taXNlZFJlc3VsdChzZW5kUmVzcG9uc2VQcm9taXNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBMZXQgQ2hyb21lIGtub3cgdGhhdCB0aGUgbGlzdGVuZXIgaXMgcmVwbHlpbmcuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHdyYXBwZWRTZW5kTWVzc2FnZUNhbGxiYWNrID0gKHtcbiAgICAgICAgcmVqZWN0LFxuICAgICAgICByZXNvbHZlXG4gICAgICB9LCByZXBseSkgPT4ge1xuICAgICAgICBpZiAoZXh0ZW5zaW9uQVBJcy5ydW50aW1lLmxhc3RFcnJvcikge1xuICAgICAgICAgIC8vIERldGVjdCB3aGVuIG5vbmUgb2YgdGhlIGxpc3RlbmVycyByZXBsaWVkIHRvIHRoZSBzZW5kTWVzc2FnZSBjYWxsIGFuZCByZXNvbHZlXG4gICAgICAgICAgLy8gdGhlIHByb21pc2UgdG8gdW5kZWZpbmVkIGFzIGluIEZpcmVmb3guXG4gICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3dlYmV4dGVuc2lvbi1wb2x5ZmlsbC9pc3N1ZXMvMTMwXG4gICAgICAgICAgaWYgKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IubWVzc2FnZSA9PT0gQ0hST01FX1NFTkRfTUVTU0FHRV9DQUxMQkFDS19OT19SRVNQT05TRV9NRVNTQUdFKSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoZXh0ZW5zaW9uQVBJcy5ydW50aW1lLmxhc3RFcnJvci5tZXNzYWdlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHJlcGx5ICYmIHJlcGx5Ll9fbW96V2ViRXh0ZW5zaW9uUG9seWZpbGxSZWplY3RfXykge1xuICAgICAgICAgIC8vIENvbnZlcnQgYmFjayB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXJyb3IgaW50b1xuICAgICAgICAgIC8vIGFuIEVycm9yIGluc3RhbmNlLlxuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IocmVwbHkubWVzc2FnZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUocmVwbHkpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3Qgd3JhcHBlZFNlbmRNZXNzYWdlID0gKG5hbWUsIG1ldGFkYXRhLCBhcGlOYW1lc3BhY2VPYmosIC4uLmFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgbWV0YWRhdGEubWluQXJncykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYXQgbGVhc3QgJHttZXRhZGF0YS5taW5BcmdzfSAke3BsdXJhbGl6ZUFyZ3VtZW50cyhtZXRhZGF0YS5taW5BcmdzKX0gZm9yICR7bmFtZX0oKSwgZ290ICR7YXJncy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gbWV0YWRhdGEubWF4QXJncykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYXQgbW9zdCAke21ldGFkYXRhLm1heEFyZ3N9ICR7cGx1cmFsaXplQXJndW1lbnRzKG1ldGFkYXRhLm1heEFyZ3MpfSBmb3IgJHtuYW1lfSgpLCBnb3QgJHthcmdzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHdyYXBwZWRDYiA9IHdyYXBwZWRTZW5kTWVzc2FnZUNhbGxiYWNrLmJpbmQobnVsbCwge1xuICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGFyZ3MucHVzaCh3cmFwcGVkQ2IpO1xuICAgICAgICAgIGFwaU5hbWVzcGFjZU9iai5zZW5kTWVzc2FnZSguLi5hcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgY29uc3Qgc3RhdGljV3JhcHBlcnMgPSB7XG4gICAgICAgIGRldnRvb2xzOiB7XG4gICAgICAgICAgbmV0d29yazoge1xuICAgICAgICAgICAgb25SZXF1ZXN0RmluaXNoZWQ6IHdyYXBFdmVudChvblJlcXVlc3RGaW5pc2hlZFdyYXBwZXJzKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcnVudGltZToge1xuICAgICAgICAgIG9uTWVzc2FnZTogd3JhcEV2ZW50KG9uTWVzc2FnZVdyYXBwZXJzKSxcbiAgICAgICAgICBvbk1lc3NhZ2VFeHRlcm5hbDogd3JhcEV2ZW50KG9uTWVzc2FnZVdyYXBwZXJzKSxcbiAgICAgICAgICBzZW5kTWVzc2FnZTogd3JhcHBlZFNlbmRNZXNzYWdlLmJpbmQobnVsbCwgXCJzZW5kTWVzc2FnZVwiLCB7XG4gICAgICAgICAgICBtaW5BcmdzOiAxLFxuICAgICAgICAgICAgbWF4QXJnczogM1xuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHRhYnM6IHtcbiAgICAgICAgICBzZW5kTWVzc2FnZTogd3JhcHBlZFNlbmRNZXNzYWdlLmJpbmQobnVsbCwgXCJzZW5kTWVzc2FnZVwiLCB7XG4gICAgICAgICAgICBtaW5BcmdzOiAyLFxuICAgICAgICAgICAgbWF4QXJnczogM1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBzZXR0aW5nTWV0YWRhdGEgPSB7XG4gICAgICAgIGNsZWFyOiB7XG4gICAgICAgICAgbWluQXJnczogMSxcbiAgICAgICAgICBtYXhBcmdzOiAxXG4gICAgICAgIH0sXG4gICAgICAgIGdldDoge1xuICAgICAgICAgIG1pbkFyZ3M6IDEsXG4gICAgICAgICAgbWF4QXJnczogMVxuICAgICAgICB9LFxuICAgICAgICBzZXQ6IHtcbiAgICAgICAgICBtaW5BcmdzOiAxLFxuICAgICAgICAgIG1heEFyZ3M6IDFcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGFwaU1ldGFkYXRhLnByaXZhY3kgPSB7XG4gICAgICAgIG5ldHdvcms6IHtcbiAgICAgICAgICBcIipcIjogc2V0dGluZ01ldGFkYXRhXG4gICAgICAgIH0sXG4gICAgICAgIHNlcnZpY2VzOiB7XG4gICAgICAgICAgXCIqXCI6IHNldHRpbmdNZXRhZGF0YVxuICAgICAgICB9LFxuICAgICAgICB3ZWJzaXRlczoge1xuICAgICAgICAgIFwiKlwiOiBzZXR0aW5nTWV0YWRhdGFcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiB3cmFwT2JqZWN0KGV4dGVuc2lvbkFQSXMsIHN0YXRpY1dyYXBwZXJzLCBhcGlNZXRhZGF0YSk7XG4gICAgfTtcblxuICAgIC8vIFRoZSBidWlsZCBwcm9jZXNzIGFkZHMgYSBVTUQgd3JhcHBlciBhcm91bmQgdGhpcyBmaWxlLCB3aGljaCBtYWtlcyB0aGVcbiAgICAvLyBgbW9kdWxlYCB2YXJpYWJsZSBhdmFpbGFibGUuXG4gICAgbW9kdWxlLmV4cG9ydHMgPSB3cmFwQVBJcyhjaHJvbWUpO1xuICB9IGVsc2Uge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsVGhpcy5icm93c2VyO1xuICB9XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJyb3dzZXItcG9seWZpbGwuanMubWFwXG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLypcbiAqIFplZCBBdHRhY2sgUHJveHkgKFpBUCkgYW5kIGl0cyByZWxhdGVkIHNvdXJjZSBmaWxlcy5cbiAqXG4gKiBaQVAgaXMgYW4gSFRUUC9IVFRQUyBwcm94eSBmb3IgYXNzZXNzaW5nIHdlYiBhcHBsaWNhdGlvbiBzZWN1cml0eS5cbiAqXG4gKiBDb3B5cmlnaHQgMjAyMyBUaGUgWkFQIERldmVsb3BtZW50IFRlYW1cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7RWxlbWVudExvY2F0b3J9IGZyb20gJy4vemVzdFNjcmlwdC9aZXN0U3RhdGVtZW50JztcblxuaW50ZXJmYWNlIEludGVyYWN0YWJsZVN0YXRlIHtcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgcG9pbnRlcjogYm9vbGVhbjtcbn1cblxuY2xhc3MgUmVwb3J0ZWRPYmplY3Qge1xuICBwdWJsaWMgdGltZXN0YW1wOiBudW1iZXI7XG5cbiAgcHVibGljIHR5cGU6IHN0cmluZztcblxuICBwdWJsaWMgdGFnTmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBub2RlTmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyB1cmw6IHN0cmluZztcblxuICBwdWJsaWMgaHJlZjogc3RyaW5nIHwgbnVsbDtcblxuICBwdWJsaWMgdGV4dDogc3RyaW5nIHwgbnVsbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgdHlwZTogc3RyaW5nLFxuICAgIHRhZ05hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nLFxuICAgIG5vZGVOYW1lOiBzdHJpbmcsXG4gICAgdGV4dDogc3RyaW5nIHwgbnVsbCxcbiAgICB1cmw6IHN0cmluZ1xuICApIHtcbiAgICB0aGlzLnRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnRhZ05hbWUgPSB0YWdOYW1lO1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLm5vZGVOYW1lID0gbm9kZU5hbWU7XG4gICAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgICB0aGlzLnVybCA9IHVybDtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1Nob3J0U3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpO1xuICB9XG5cbiAgLy8gVXNlIHRoaXMgZm9yIHRlc3RzXG4gIHB1YmxpYyB0b05vblRpbWVzdGFtcFN0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLCBmdW5jdGlvbiByZXBsYWNlcihrOiBzdHJpbmcsIHY6IHN0cmluZykge1xuICAgICAgaWYgKGsgPT09ICd0aW1lc3RhbXAnKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdjtcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBSZXBvcnRlZFN0b3JhZ2UgZXh0ZW5kcyBSZXBvcnRlZE9iamVjdCB7XG4gIHB1YmxpYyB0b1Nob3J0U3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMsIGZ1bmN0aW9uIHJlcGxhY2VyKGs6IHN0cmluZywgdjogc3RyaW5nKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGsgPT09ICdocmVmJyB8fFxuICAgICAgICBrID09PSAndGltZXN0YW1wJyB8fFxuICAgICAgICAoayA9PT0gJ3VybCcgJiYgISh0aGlzLnR5cGUgPT09ICdjb29raWVzJykpXG4gICAgICApIHtcbiAgICAgICAgLy8gU3RvcmFnZSBldmVudHMgYXJlIG5vdCB0aW1lIG9yIFVSTCBzcGVjaWZpY1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHY7XG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgUmVwb3J0ZWRFbGVtZW50IGV4dGVuZHMgUmVwb3J0ZWRPYmplY3Qge1xuICBwdWJsaWMgdGFnVHlwZTogc3RyaW5nIHwgbnVsbDtcblxuICBwdWJsaWMgZm9ybUlkOiBudW1iZXIgfCBudWxsO1xuXG4gIHB1YmxpYyBpbnRlcmFjdGFibGU6IEludGVyYWN0YWJsZVN0YXRlIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBlbGVtZW50TG9jYXRvcjogRWxlbWVudExvY2F0b3IgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGVsZW1lbnQ6IEVsZW1lbnQsIHVybDogc3RyaW5nLCB0eXBlID0gJ25vZGVBZGRlZCcpIHtcbiAgICBzdXBlcihcbiAgICAgIHR5cGUsXG4gICAgICBlbGVtZW50LnRhZ05hbWUsXG4gICAgICBlbGVtZW50LmlkLFxuICAgICAgZWxlbWVudC5ub2RlTmFtZSxcbiAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQsXG4gICAgICB1cmxcbiAgICApO1xuICAgIGlmIChlbGVtZW50LnRhZ05hbWUgPT09ICdBJykge1xuICAgICAgLy8gVGhpcyBnZXRzIHRoZSBmdWxsIFVSTCByYXRoZXIgdGhhbiBhIHJlbGF0aXZlIG9uZVxuICAgICAgY29uc3QgYTogSFRNTEFuY2hvckVsZW1lbnQgPSBlbGVtZW50IGFzIEhUTUxBbmNob3JFbGVtZW50O1xuICAgICAgdGhpcy5ocmVmID0gYS50b1N0cmluZygpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC50YWdOYW1lID09PSAnRk9STScpIHtcbiAgICAgIHRoaXMuZm9ybUlkID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQuZm9ybXMpLmluZGV4T2YoZWxlbWVudCk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LnRhZ05hbWUgPT09ICdJTlBVVCcpIHtcbiAgICAgIC8vIENhcHR1cmUgZXh0cmEgdXNlZnVsIGluZm8gZm9yIGlucHV0IGVsZW1lbnRzXG4gICAgICBjb25zdCBpbnB1dDogSFRNTElucHV0RWxlbWVudCA9IGVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgIHRoaXMudGFnVHlwZSA9IGlucHV0LnR5cGU7XG4gICAgICB0aGlzLnRleHQgPSBpbnB1dC52YWx1ZTtcbiAgICAgIGNvbnN0IHtmb3JtfSA9IGlucHV0O1xuICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIG5vdCB3b3JrIGlmIGZvcm0gdGFncyBhcmUgbm90IHVzZWRcbiAgICAgICAgdGhpcy5mb3JtSWQgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkb2N1bWVudC5mb3JtcykuaW5kZXhPZihmb3JtKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJykge1xuICAgICAgY29uc3QgdGV4dGFyZWE6IEhUTUxUZXh0QXJlYUVsZW1lbnQgPSBlbGVtZW50IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQ7XG4gICAgICB0aGlzLnRleHQgPSB0ZXh0YXJlYS52YWx1ZTtcbiAgICAgIGNvbnN0IHtmb3JtfSA9IHRleHRhcmVhO1xuICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgdGhpcy5mb3JtSWQgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkb2N1bWVudC5mb3JtcykuaW5kZXhPZihmb3JtKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gJ1NFTEVDVCcpIHtcbiAgICAgIGNvbnN0IHNlbGVjdDogSFRNTFNlbGVjdEVsZW1lbnQgPSBlbGVtZW50IGFzIEhUTUxTZWxlY3RFbGVtZW50O1xuICAgICAgdGhpcy50ZXh0ID0gc2VsZWN0LnZhbHVlO1xuICAgICAgY29uc3Qge2Zvcm19ID0gc2VsZWN0O1xuICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgdGhpcy5mb3JtSWQgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkb2N1bWVudC5mb3JtcykuaW5kZXhPZihmb3JtKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQuaGFzQXR0cmlidXRlKCdocmVmJykpIHtcbiAgICAgIHRoaXMuaHJlZiA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdocmVmJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvU2hvcnRTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcywgZnVuY3Rpb24gcmVwbGFjZXIoazogc3RyaW5nLCB2OiBzdHJpbmcpIHtcbiAgICAgIGlmIChrID09PSAndGltZXN0YW1wJyB8fCBrID09PSAnaW50ZXJhY3RhYmxlJyB8fCBrID09PSAnZWxlbWVudExvY2F0b3InKSB7XG4gICAgICAgIC8vIE5vIHBvaW50IHJlcG9ydGluZyB0aGUgc2FtZSBlbGVtZW50IGxvdHMgb2YgdGltZXNcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2O1xuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFJlcG9ydGVkRXZlbnQge1xuICBwdWJsaWMgdGltZXN0YW1wOiBudW1iZXI7XG5cbiAgcHVibGljIGV2ZW50TmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyB1cmw6IHN0cmluZztcblxuICBwdWJsaWMgY291bnQ6IG51bWJlcjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoZXZlbnROYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLnRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgdGhpcy5ldmVudE5hbWUgPSBldmVudE5hbWU7XG4gICAgdGhpcy51cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICB0aGlzLmNvdW50ID0gMTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzKTtcbiAgfVxufVxuXG5leHBvcnQge1JlcG9ydGVkRWxlbWVudCwgUmVwb3J0ZWRPYmplY3QsIFJlcG9ydGVkU3RvcmFnZSwgUmVwb3J0ZWRFdmVudH07XG5leHBvcnQgdHlwZSB7SW50ZXJhY3RhYmxlU3RhdGV9O1xuIiwiLypcbiAqIFplZCBBdHRhY2sgUHJveHkgKFpBUCkgYW5kIGl0cyByZWxhdGVkIHNvdXJjZSBmaWxlcy5cbiAqXG4gKiBaQVAgaXMgYW4gSFRUUC9IVFRQUyBwcm94eSBmb3IgYXNzZXNzaW5nIHdlYiBhcHBsaWNhdGlvbiBzZWN1cml0eS5cbiAqXG4gKiBDb3B5cmlnaHQgMjAyMyBUaGUgWkFQIERldmVsb3BtZW50IFRlYW1cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBCcm93c2VyIGZyb20gJ3dlYmV4dGVuc2lvbi1wb2x5ZmlsbCc7XG5cbi8vIFRoZSBtYW5pZmVzdCB3aWxsIGJlIHVuZGVmaW5lZCB3aGVuIHJ1bm5pbmcgdGhlIHRlc3RzXG5leHBvcnQgY29uc3QgSVNfRlVMTF9FWFRFTlNJT04gPVxuICB0eXBlb2YgQnJvd3Nlci5ydW50aW1lLmdldE1hbmlmZXN0ID09PSAndW5kZWZpbmVkJyB8fFxuICBCcm93c2VyLnJ1bnRpbWUuZ2V0TWFuaWZlc3QoKS5uYW1lID09PSAnWkFQIGJ5IENoZWNrbWFyeCBCcm93c2VyIEV4dGVuc2lvbic7XG5cbmV4cG9ydCBjb25zdCBaRVNUX0NMSUVOVF9TV0lUQ0hfVE9fRlJBTUUgPSAnWmVzdENsaWVudFN3aXRjaFRvRnJhbWUnO1xuZXhwb3J0IGNvbnN0IFpFU1RfQ0xJRU5UX0VMRU1FTlRfQ0xJQ0sgPSAnWmVzdENsaWVudEVsZW1lbnRDbGljayc7XG5leHBvcnQgY29uc3QgWkVTVF9DTElFTlRfRUxFTUVOVF9TQ1JPTExfVE8gPSAnWmVzdENsaWVudEVsZW1lbnRTY3JvbGxUbyc7XG5leHBvcnQgY29uc3QgWkVTVF9DTElFTlRfRUxFTUVOVF9TRU5EX0tFWVMgPSAnWmVzdENsaWVudEVsZW1lbnRTZW5kS2V5cyc7XG5leHBvcnQgY29uc3QgWkVTVF9DTElFTlRfRUxFTUVOVF9TVUJNSVQgPSAnWmVzdENsaWVudEVsZW1lbnRTdWJtaXQnO1xuZXhwb3J0IGNvbnN0IFpFU1RfQ0xJRU5UX0xBVU5DSCA9ICdaZXN0Q2xpZW50TGF1bmNoJztcbmV4cG9ydCBjb25zdCBaRVNUX0NMSUVOVF9FTEVNRU5UX0NMRUFSID0gJ1plc3RDbGllbnRFbGVtZW50Q2xlYXInO1xuZXhwb3J0IGNvbnN0IFpFU1RfQ0xJRU5UX1dJTkRPV19DTE9TRSA9ICdaZXN0Q2xpZW50V2luZG93Q2xvc2UnO1xuZXhwb3J0IGNvbnN0IFpFU1RfQ0xJRU5UX0VMRU1FTlRfTU9VU0VfT1ZFUiA9ICdaZXN0Q2xpZW50RWxlbWVudE1vdXNlT3Zlcic7XG5leHBvcnQgY29uc3QgWkVTVF9DT01NRU5UID0gJ1plc3RDb21tZW50JztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1dJTkRPV19IQU5ETEUgPSAnd2luZG93SGFuZGxlMSc7XG5cbmV4cG9ydCBjb25zdCBaQVBfU1RPUF9SRUNPUkRJTkcgPSAnemFwU3RvcFJlY29yZGluZyc7XG5leHBvcnQgY29uc3QgWkFQX1NUQVJUX1JFQ09SRElORyA9ICd6YXBTdGFydFJlY29yZGluZyc7XG5leHBvcnQgY29uc3QgWkVTVF9TQ1JJUFQgPSAnemVzdFNjcmlwdCc7XG5cbmV4cG9ydCBjb25zdCBTVE9QX1JFQ09SRElORyA9ICdzdG9wUmVjb3JkaW5nJztcbmV4cG9ydCBjb25zdCBSRVNFVF9aRVNUX1NDUklQVCA9ICdyZXNldFplc3RTY3JpcHQnO1xuZXhwb3J0IGNvbnN0IEdFVF9aRVNUX1NDUklQVCA9ICdnZXRaZXN0U2NyaXB0JztcbmV4cG9ydCBjb25zdCBVUERBVEVfVElUTEUgPSAndXBkYXRlVGl0bGUnO1xuXG5leHBvcnQgY29uc3QgUkVQT1JUX0VWRU5UID0gJ3JlcG9ydEV2ZW50JztcbmV4cG9ydCBjb25zdCBSRVBPUlRfT0JKRUNUID0gJ3JlcG9ydE9iamVjdCc7XG5cbmV4cG9ydCBjb25zdCBMT0NBTF9TVE9SQUdFID0gJ2xvY2FsU3RvcmFnZSc7XG5leHBvcnQgY29uc3QgU0VTU0lPTl9TVE9SQUdFID0gJ3Nlc3Npb25TdG9yYWdlJztcbmV4cG9ydCBjb25zdCBMT0NBTF9aQVBfVVJMID0gJ2xvY2FsemFwdXJsJztcbmV4cG9ydCBjb25zdCBMT0NBTF9aQVBfRU5BQkxFID0gJ2xvY2FsemFwZW5hYmxlJztcbmV4cG9ydCBjb25zdCBMT0NBTF9aQVBfUkVDT1JEID0gJ2xvY2FsemFwcmVjb3JkJztcbmV4cG9ydCBjb25zdCBVUkxfWkFQX0VOQUJMRSA9ICd6YXBlbmFibGUnO1xuZXhwb3J0IGNvbnN0IFVSTF9aQVBfUkVDT1JEID0gJ3phcHJlY29yZCc7XG5cbmV4cG9ydCBjb25zdCBaQVBfVVJMID0gJ3phcHVybCc7XG5leHBvcnQgY29uc3QgWkFQX0tFWSA9ICd6YXBrZXknO1xuZXhwb3J0IGNvbnN0IFpBUF9FTkFCTEUgPSAnemFwZW5hYmxlJztcblxuZXhwb3J0IGNvbnN0IFpBUF9GTE9BVElOR19ESVYgPSAnWmFwZmxvYXRpbmdEaXYnO1xuZXhwb3J0IGNvbnN0IFpBUF9GTE9BVElOR19ESVZfRUxFTUVOVFMgPSAnWmFwZmxvYXRpbmdEaXZFbGVtZW50cyc7XG4iLCIvKlxuICogWmVkIEF0dGFjayBQcm94eSAoWkFQKSBhbmQgaXRzIHJlbGF0ZWQgc291cmNlIGZpbGVzLlxuICpcbiAqIFpBUCBpcyBhbiBIVFRQL0hUVFBTIHByb3h5IGZvciBhc3Nlc3Npbmcgd2ViIGFwcGxpY2F0aW9uIHNlY3VyaXR5LlxuICpcbiAqIENvcHlyaWdodCAyMDIzIFRoZSBaQVAgRGV2ZWxvcG1lbnQgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgREVGQVVMVF9XSU5ET1dfSEFORExFLFxuICBaRVNUX0NMSUVOVF9FTEVNRU5UX0NMRUFSLFxuICBaRVNUX0NMSUVOVF9FTEVNRU5UX0NMSUNLLFxuICBaRVNUX0NMSUVOVF9FTEVNRU5UX01PVVNFX09WRVIsXG4gIFpFU1RfQ0xJRU5UX0VMRU1FTlRfU0NST0xMX1RPLFxuICBaRVNUX0NMSUVOVF9FTEVNRU5UX1NFTkRfS0VZUyxcbiAgWkVTVF9DTElFTlRfRUxFTUVOVF9TVUJNSVQsXG4gIFpFU1RfQ0xJRU5UX0xBVU5DSCxcbiAgWkVTVF9DTElFTlRfU1dJVENIX1RPX0ZSQU1FLFxuICBaRVNUX0NMSUVOVF9XSU5ET1dfQ0xPU0UsXG4gIFpFU1RfQ09NTUVOVCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvY29uc3RhbnRzJztcblxuY2xhc3MgRWxlbWVudExvY2F0b3Ige1xuICB0eXBlOiBzdHJpbmc7XG5cbiAgZWxlbWVudDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHR5cGU6IHN0cmluZywgZWxlbWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICB9XG5cbiAgdG9KU09OKCk6IHt0eXBlOiBzdHJpbmc7IGVsZW1lbnQ6IHN0cmluZ30ge1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICBlbGVtZW50OiB0aGlzLmVsZW1lbnQsXG4gICAgfTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBaZXN0U3RhdGVtZW50IHtcbiAgaW5kZXg6IG51bWJlcjtcblxuICBlbGVtZW50VHlwZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRUeXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVsZW1lbnRUeXBlID0gZWxlbWVudFR5cGU7XG4gICAgdGhpcy5pbmRleCA9IC0xO1xuICB9XG5cbiAgYWJzdHJhY3QgdG9KU09OKCk6IHN0cmluZztcbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudExhdW5jaEJyb3dzZXIgZXh0ZW5kcyBaZXN0U3RhdGVtZW50IHtcbiAgd2luZG93SGFuZGxlOiBzdHJpbmc7XG5cbiAgYnJvd3NlclR5cGU6IHN0cmluZztcblxuICB1cmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBicm93c2VyVHlwZTogc3RyaW5nLFxuICAgIHVybDogc3RyaW5nLFxuICAgIHdpbmRvd0hhbmRsZSA9IERFRkFVTFRfV0lORE9XX0hBTkRMRVxuICApIHtcbiAgICBzdXBlcihaRVNUX0NMSUVOVF9MQVVOQ0gpO1xuICAgIHRoaXMud2luZG93SGFuZGxlID0gd2luZG93SGFuZGxlO1xuICAgIHRoaXMuYnJvd3NlclR5cGUgPSBicm93c2VyVHlwZTtcbiAgICB0aGlzLnVybCA9IHVybDtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB3aW5kb3dIYW5kbGU6IHRoaXMud2luZG93SGFuZGxlLFxuICAgICAgYnJvd3NlclR5cGU6IHRoaXMuYnJvd3NlclR5cGUsXG4gICAgICB1cmw6IHRoaXMudXJsLFxuICAgICAgY2FwYWJpbGl0aWVzOiAnJyxcbiAgICAgIGhlYWRsZXNzOiBmYWxzZSxcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLmVsZW1lbnRUeXBlLFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFplc3RTdGF0ZW1lbnRDb21tZW50IGV4dGVuZHMgWmVzdFN0YXRlbWVudCB7XG4gIGNvbW1lbnQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihjb21tZW50OiBzdHJpbmcpIHtcbiAgICBzdXBlcihaRVNUX0NPTU1FTlQpO1xuICAgIHRoaXMuY29tbWVudCA9IGNvbW1lbnQ7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgICBjb21tZW50OiB0aGlzLmNvbW1lbnQsXG4gICAgfSk7XG4gIH1cbn1cblxuYWJzdHJhY3QgY2xhc3MgWmVzdFN0YXRlbWVudEVsZW1lbnQgZXh0ZW5kcyBaZXN0U3RhdGVtZW50IHtcbiAgZWxlbWVudExvY2F0b3I6IEVsZW1lbnRMb2NhdG9yO1xuXG4gIHdpbmRvd0hhbmRsZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRUeXBlOiBzdHJpbmcsIGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvcikge1xuICAgIHN1cGVyKGVsZW1lbnRUeXBlKTtcbiAgICB0aGlzLmVsZW1lbnRMb2NhdG9yID0gZWxlbWVudExvY2F0b3I7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudEVsZW1lbnRDbGljayBleHRlbmRzIFplc3RTdGF0ZW1lbnRFbGVtZW50IHtcbiAgd2FpdEZvck1zZWM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50TG9jYXRvcjogRWxlbWVudExvY2F0b3IsXG4gICAgd2FpdEZvck1zZWM6IG51bWJlcixcbiAgICB3aW5kb3dIYW5kbGUgPSBERUZBVUxUX1dJTkRPV19IQU5ETEVcbiAgKSB7XG4gICAgc3VwZXIoWkVTVF9DTElFTlRfRUxFTUVOVF9DTElDSywgZWxlbWVudExvY2F0b3IpO1xuICAgIHRoaXMud2luZG93SGFuZGxlID0gd2luZG93SGFuZGxlO1xuICAgIHRoaXMud2FpdEZvck1zZWMgPSB3YWl0Rm9yTXNlYztcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB3aW5kb3dIYW5kbGU6IHRoaXMud2luZG93SGFuZGxlLFxuICAgICAgLi4udGhpcy5lbGVtZW50TG9jYXRvci50b0pTT04oKSxcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgd2FpdEZvck1zZWM6IHRoaXMud2FpdEZvck1zZWMsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudEVsZW1lbnRTY3JvbGxUbyBleHRlbmRzIFplc3RTdGF0ZW1lbnRFbGVtZW50IHtcbiAgd2FpdEZvck1zZWM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50TG9jYXRvcjogRWxlbWVudExvY2F0b3IsXG4gICAgd2FpdEZvck1zZWM6IG51bWJlcixcbiAgICB3aW5kb3dIYW5kbGUgPSBERUZBVUxUX1dJTkRPV19IQU5ETEVcbiAgKSB7XG4gICAgc3VwZXIoWkVTVF9DTElFTlRfRUxFTUVOVF9TQ1JPTExfVE8sIGVsZW1lbnRMb2NhdG9yKTtcbiAgICB0aGlzLndhaXRGb3JNc2VjID0gd2FpdEZvck1zZWM7XG4gICAgdGhpcy53aW5kb3dIYW5kbGUgPSB3aW5kb3dIYW5kbGU7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgd2luZG93SGFuZGxlOiB0aGlzLndpbmRvd0hhbmRsZSxcbiAgICAgIC4uLnRoaXMuZWxlbWVudExvY2F0b3IudG9KU09OKCksXG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgIHdhaXRGb3JNc2VjOiB0aGlzLndhaXRGb3JNc2VjLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLmVsZW1lbnRUeXBlLFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFplc3RTdGF0ZW1lbnRFbGVtZW50U2VuZEtleXMgZXh0ZW5kcyBaZXN0U3RhdGVtZW50RWxlbWVudCB7XG4gIGtleXM6IHN0cmluZztcblxuICB3YWl0Rm9yTXNlYzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvcixcbiAgICBrZXlzOiBzdHJpbmcsXG4gICAgd2FpdEZvck1zZWM6IG51bWJlcixcbiAgICB3aW5kb3dIYW5kbGUgPSBERUZBVUxUX1dJTkRPV19IQU5ETEVcbiAgKSB7XG4gICAgc3VwZXIoWkVTVF9DTElFTlRfRUxFTUVOVF9TRU5EX0tFWVMsIGVsZW1lbnRMb2NhdG9yKTtcbiAgICB0aGlzLmtleXMgPSBrZXlzO1xuICAgIHRoaXMud2FpdEZvck1zZWMgPSB3YWl0Rm9yTXNlYztcbiAgICB0aGlzLndpbmRvd0hhbmRsZSA9IHdpbmRvd0hhbmRsZTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB2YWx1ZTogdGhpcy5rZXlzLFxuICAgICAgd2luZG93SGFuZGxlOiB0aGlzLndpbmRvd0hhbmRsZSxcbiAgICAgIC4uLnRoaXMuZWxlbWVudExvY2F0b3IudG9KU09OKCksXG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgIHdhaXRGb3JNc2VjOiB0aGlzLndhaXRGb3JNc2VjLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLmVsZW1lbnRUeXBlLFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFplc3RTdGF0ZW1lbnRFbGVtZW50U3VibWl0IGV4dGVuZHMgWmVzdFN0YXRlbWVudEVsZW1lbnQge1xuICBrZXlzOiBzdHJpbmc7XG5cbiAgd2FpdEZvck1zZWM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50TG9jYXRvcjogRWxlbWVudExvY2F0b3IsXG4gICAgd2FpdEZvck1zZWM6IG51bWJlcixcbiAgICB3aW5kb3dIYW5kbGUgPSBERUZBVUxUX1dJTkRPV19IQU5ETEVcbiAgKSB7XG4gICAgc3VwZXIoWkVTVF9DTElFTlRfRUxFTUVOVF9TVUJNSVQsIGVsZW1lbnRMb2NhdG9yKTtcbiAgICB0aGlzLndhaXRGb3JNc2VjID0gd2FpdEZvck1zZWM7XG4gICAgdGhpcy53aW5kb3dIYW5kbGUgPSB3aW5kb3dIYW5kbGU7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgdmFsdWU6IHRoaXMua2V5cyxcbiAgICAgIHdpbmRvd0hhbmRsZTogdGhpcy53aW5kb3dIYW5kbGUsXG4gICAgICAuLi50aGlzLmVsZW1lbnRMb2NhdG9yLnRvSlNPTigpLFxuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICB3YWl0Rm9yTXNlYzogdGhpcy53YWl0Rm9yTXNlYyxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBlbGVtZW50VHlwZTogdGhpcy5lbGVtZW50VHlwZSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBaZXN0U3RhdGVtZW50RWxlbWVudENsZWFyIGV4dGVuZHMgWmVzdFN0YXRlbWVudEVsZW1lbnQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50TG9jYXRvcjogRWxlbWVudExvY2F0b3IsXG4gICAgd2luZG93SGFuZGxlID0gREVGQVVMVF9XSU5ET1dfSEFORExFXG4gICkge1xuICAgIHN1cGVyKFpFU1RfQ0xJRU5UX0VMRU1FTlRfQ0xFQVIsIGVsZW1lbnRMb2NhdG9yKTtcbiAgICB0aGlzLndpbmRvd0hhbmRsZSA9IHdpbmRvd0hhbmRsZTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB3aW5kb3dIYW5kbGU6IHRoaXMud2luZG93SGFuZGxlLFxuICAgICAgLi4udGhpcy5lbGVtZW50TG9jYXRvci50b0pTT04oKSxcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLmVsZW1lbnRUeXBlLFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFplc3RTdGF0ZW1lbnRXaW5kb3dDbG9zZSBleHRlbmRzIFplc3RTdGF0ZW1lbnQge1xuICBzbGVlcEluU2Vjb25kczogbnVtYmVyO1xuXG4gIHdpbmRvd0hhbmRsZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNsZWVwSW5TZWNvbmRzOiBudW1iZXIsIHdpbmRvd0hhbmRsZSA9IERFRkFVTFRfV0lORE9XX0hBTkRMRSkge1xuICAgIHN1cGVyKFpFU1RfQ0xJRU5UX1dJTkRPV19DTE9TRSk7XG4gICAgdGhpcy5zbGVlcEluU2Vjb25kcyA9IHNsZWVwSW5TZWNvbmRzO1xuICAgIHRoaXMud2luZG93SGFuZGxlID0gd2luZG93SGFuZGxlO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHdpbmRvd0hhbmRsZTogdGhpcy53aW5kb3dIYW5kbGUsXG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgIHNsZWVwSW5TZWNvbmRzOiB0aGlzLnNsZWVwSW5TZWNvbmRzLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLmVsZW1lbnRUeXBlLFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFplc3RTdGF0ZW1lbnRTd2l0Y2hUb0ZyYW1lIGV4dGVuZHMgWmVzdFN0YXRlbWVudCB7XG4gIGZyYW1lSW5kZXg6IG51bWJlcjtcblxuICBmcmFtZU5hbWU6IHN0cmluZztcblxuICB3aW5kb3dIYW5kbGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBmcmFtZUluZGV4OiBudW1iZXIsXG4gICAgZnJhbWVOYW1lID0gJycsXG4gICAgd2luZG93SGFuZGxlID0gREVGQVVMVF9XSU5ET1dfSEFORExFXG4gICkge1xuICAgIHN1cGVyKFpFU1RfQ0xJRU5UX1NXSVRDSF9UT19GUkFNRSk7XG4gICAgdGhpcy5mcmFtZUluZGV4ID0gZnJhbWVJbmRleDtcbiAgICB0aGlzLmZyYW1lTmFtZSA9IGZyYW1lTmFtZTtcbiAgICB0aGlzLndpbmRvd0hhbmRsZSA9IHdpbmRvd0hhbmRsZTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB3aW5kb3dIYW5kbGU6IHRoaXMud2luZG93SGFuZGxlLFxuICAgICAgZnJhbWVJbmRleDogdGhpcy5mcmFtZUluZGV4LFxuICAgICAgZnJhbWVOYW1lOiB0aGlzLmZyYW1lTmFtZSxcbiAgICAgIHBhcmVudDogdGhpcy5mcmFtZUluZGV4ID09PSAtMSxcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLmVsZW1lbnRUeXBlLFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFplc3RTdGF0ZW1lbnRFbGVtZW50TW91c2VPdmVyIGV4dGVuZHMgWmVzdFN0YXRlbWVudEVsZW1lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50TG9jYXRvcjogRWxlbWVudExvY2F0b3IpIHtcbiAgICBzdXBlcihaRVNUX0NMSUVOVF9FTEVNRU5UX01PVVNFX09WRVIsIGVsZW1lbnRMb2NhdG9yKTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBlbGVtZW50VHlwZTogdGhpcy5lbGVtZW50VHlwZSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQge1xuICBFbGVtZW50TG9jYXRvcixcbiAgWmVzdFN0YXRlbWVudCxcbiAgWmVzdFN0YXRlbWVudENvbW1lbnQsXG4gIFplc3RTdGF0ZW1lbnRMYXVuY2hCcm93c2VyLFxuICBaZXN0U3RhdGVtZW50RWxlbWVudE1vdXNlT3ZlcixcbiAgWmVzdFN0YXRlbWVudEVsZW1lbnRDbGljayxcbiAgWmVzdFN0YXRlbWVudFN3aXRjaFRvRnJhbWUsXG4gIFplc3RTdGF0ZW1lbnRFbGVtZW50U2Nyb2xsVG8sXG4gIFplc3RTdGF0ZW1lbnRFbGVtZW50U2VuZEtleXMsXG4gIFplc3RTdGF0ZW1lbnRFbGVtZW50U3VibWl0LFxuICBaZXN0U3RhdGVtZW50RWxlbWVudENsZWFyLFxuICBaZXN0U3RhdGVtZW50V2luZG93Q2xvc2UsXG59O1xuIiwiLypcbiAqIFplZCBBdHRhY2sgUHJveHkgKFpBUCkgYW5kIGl0cyByZWxhdGVkIHNvdXJjZSBmaWxlcy5cbiAqXG4gKiBaQVAgaXMgYW4gSFRUUC9IVFRQUyBwcm94eSBmb3IgYXNzZXNzaW5nIHdlYiBhcHBsaWNhdGlvbiBzZWN1cml0eS5cbiAqXG4gKiBDb3B5cmlnaHQgMjAyMyBUaGUgWkFQIERldmVsb3BtZW50IFRlYW1cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCAnZW1vamktbG9nJztcbmltcG9ydCBCcm93c2VyLCB7Q29va2llcywgUnVudGltZX0gZnJvbSAnd2ViZXh0ZW5zaW9uLXBvbHlmaWxsJztcbmltcG9ydCB7UmVwb3J0ZWRTdG9yYWdlfSBmcm9tICcuLi90eXBlcy9SZXBvcnRlZE1vZGVsJztcbmltcG9ydCB7WmVzdFNjcmlwdCwgWmVzdFNjcmlwdE1lc3NhZ2V9IGZyb20gJy4uL3R5cGVzL3plc3RTY3JpcHQvWmVzdFNjcmlwdCc7XG5pbXBvcnQge1plc3RTdGF0ZW1lbnRXaW5kb3dDbG9zZX0gZnJvbSAnLi4vdHlwZXMvemVzdFNjcmlwdC9aZXN0U3RhdGVtZW50JztcbmltcG9ydCB7XG4gIEdFVF9aRVNUX1NDUklQVCxcbiAgSVNfRlVMTF9FWFRFTlNJT04sXG4gIExPQ0FMX1NUT1JBR0UsXG4gIFJFUE9SVF9FVkVOVCxcbiAgUkVQT1JUX09CSkVDVCxcbiAgUkVTRVRfWkVTVF9TQ1JJUFQsXG4gIFNFU1NJT05fU1RPUkFHRSxcbiAgU1RPUF9SRUNPUkRJTkcsXG4gIFpFU1RfU0NSSVBULFxufSBmcm9tICcuLi91dGlscy9jb25zdGFudHMnO1xuXG5jb25zb2xlLmxvZygnWkFQIFNlcnZpY2UgV29ya2VyIPCfkYsnKTtcblxuLypcbiAgV2UgY2hlY2sgdGhlIHN0b3JhZ2Ugb24gZXZlcnkgcGFnZSwgc28gbmVlZCB0byByZWNvcmQgd2hpY2ggc3RvcmFnZSBldmVudHMgd2UgaGF2ZSByZXBvcnRlZCB0byBaQVAgaGVyZSBzbyB0aGF0IHdlIGRvbnQga2VlcCBzZW5kaW5nIHRoZSBzYW1lIGV2ZW50cy5cbiovXG5jb25zdCByZXBvcnRlZFN0b3JhZ2UgPSBuZXcgU2V0PHN0cmluZz4oKTtcbmNvbnN0IHplc3RTY3JpcHQgPSBuZXcgWmVzdFNjcmlwdCgpO1xuLypcbiAgQSBjYWxsYmFjayBVUkwgd2lsbCBvbmx5IGJlIGF2YWlsYWJsZSBpZiB0aGUgYnJvd3NlciBoYXMgYmVlbiBsYXVuY2hlZCBmcm9tIFpBUCwgb3RoZXJ3aXNlIGNhbGwgdGhlIGluZGl2aWR1YWwgZW5kcG9pbnRzXG4qL1xuXG5mdW5jdGlvbiB6YXBBcGlVcmwoemFwdXJsOiBzdHJpbmcsIGFjdGlvbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHphcHVybC5pbmRleE9mKCcvemFwQ2FsbEJhY2tVcmwvJykgPiAwKSB7XG4gICAgcmV0dXJuIHphcHVybDtcbiAgfVxuICByZXR1cm4gYCR7emFwdXJsfUpTT04vY2xpZW50L2FjdGlvbi8ke2FjdGlvbn0vYDtcbn1cblxuZnVuY3Rpb24gZ2V0VXJsRnJvbUNvb2tpZURvbWFpbihkb21haW46IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBkb21haW4uc3RhcnRzV2l0aCgnLicpXG4gICAgPyBgaHR0cDovLyR7ZG9tYWluLnN1YnN0cmluZygxKX1gXG4gICAgOiBgaHR0cDovLyR7ZG9tYWlufWA7XG59XG5cbmZ1bmN0aW9uIGdldENvb2tpZVRhYlVybChjb29raWU6IENvb2tpZXMuQ29va2llKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZ2V0QWxsVGFicyA9IEJyb3dzZXIudGFicy5xdWVyeSh7XG4gICAgY3VycmVudFdpbmRvdzogdHJ1ZSxcbiAgfSk7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgZ2V0QWxsVGFic1xuICAgICAgLnRoZW4oKGFsbFRhYnMpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCB0YWIgb2YgYWxsVGFicykge1xuICAgICAgICAgIGlmICh0YWIudXJsKSB7XG4gICAgICAgICAgICBjb25zdCBnZXRBbGxDb29raWVzRm9yVGFiID0gQnJvd3Nlci5jb29raWVzLmdldEFsbCh7dXJsOiB0YWIudXJsfSk7XG4gICAgICAgICAgICBnZXRBbGxDb29raWVzRm9yVGFiLnRoZW4oKGNvb2tpZXMpID0+IHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBjIG9mIGNvb2tpZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICBjLm5hbWUgPT09IGNvb2tpZS5uYW1lICYmXG4gICAgICAgICAgICAgICAgICBjLnZhbHVlID09PSBjb29raWUudmFsdWUgJiZcbiAgICAgICAgICAgICAgICAgIGMuZG9tYWluID09PSBjb29raWUuZG9tYWluICYmXG4gICAgICAgICAgICAgICAgICBjLnN0b3JlSWQgPT09IGNvb2tpZS5zdG9yZUlkXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlKFxuICAgICAgICAgICAgICAgICAgICB0YWIudXJsID8gdGFiLnVybCA6IGdldFVybEZyb21Db29raWVEb21haW4oY29va2llLmRvbWFpbilcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYENvdWxkIG5vdCBmZXRjaCB0YWJzOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICAgIHJlamVjdChnZXRVcmxGcm9tQ29va2llRG9tYWluKGNvb2tpZS5kb21haW4pKTtcbiAgICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVwb3J0Q29va2llcyhcbiAgY29va2llOiBDb29raWVzLkNvb2tpZSxcbiAgemFwdXJsOiBzdHJpbmcsXG4gIHphcGtleTogc3RyaW5nXG4pOiBib29sZWFuIHtcbiAgbGV0IGNvb2tpZVN0cmluZyA9IGAke2Nvb2tpZS5uYW1lfT0ke2Nvb2tpZS52YWx1ZX07IHBhdGg9JHtjb29raWUucGF0aH07IGRvbWFpbj0ke2Nvb2tpZS5kb21haW59YDtcbiAgaWYgKGNvb2tpZS5leHBpcmF0aW9uRGF0ZSkge1xuICAgIGNvb2tpZVN0cmluZyA9IGNvb2tpZVN0cmluZy5jb25jYXQoXG4gICAgICBgOyBleHBpcmVzPSR7bmV3IERhdGUoY29va2llLmV4cGlyYXRpb25EYXRlICogMTAwMCkudG9VVENTdHJpbmcoKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoY29va2llLnNlY3VyZSkge1xuICAgIGNvb2tpZVN0cmluZyA9IGNvb2tpZVN0cmluZy5jb25jYXQoYDsgc2VjdXJlYCk7XG4gIH1cbiAgaWYgKGNvb2tpZS5zYW1lU2l0ZSA9PT0gJ2xheCcgfHwgY29va2llLnNhbWVTaXRlID09PSAnc3RyaWN0Jykge1xuICAgIGNvb2tpZVN0cmluZyA9IGNvb2tpZVN0cmluZy5jb25jYXQoYDsgU2FtZVNpdGU9JHtjb29raWUuc2FtZVNpdGV9YCk7XG4gIH1cbiAgaWYgKGNvb2tpZS5odHRwT25seSkge1xuICAgIGNvb2tpZVN0cmluZyA9IGNvb2tpZVN0cmluZy5jb25jYXQoYDsgSHR0cE9ubHlgKTtcbiAgfVxuXG4gIGdldENvb2tpZVRhYlVybChjb29raWUpXG4gICAgLnRoZW4oKGNvb2tpZVVybCkgPT4ge1xuICAgICAgY29uc3QgcmVwU3RvcmFnZSA9IG5ldyBSZXBvcnRlZFN0b3JhZ2UoXG4gICAgICAgICdDb29raWVzJyxcbiAgICAgICAgJycsXG4gICAgICAgIGNvb2tpZS5uYW1lLFxuICAgICAgICAnJyxcbiAgICAgICAgY29va2llU3RyaW5nLFxuICAgICAgICBjb29raWVVcmxcbiAgICAgICk7XG4gICAgICBjb25zdCByZXBTdG9yU3RyOiBzdHJpbmcgPSByZXBTdG9yYWdlLnRvU2hvcnRTdHJpbmcoKTtcbiAgICAgIGlmIChcbiAgICAgICAgIXJlcG9ydGVkU3RvcmFnZS5oYXMocmVwU3RvclN0cikgJiZcbiAgICAgICAgcmVwU3RvcmFnZS51cmwuc3RhcnRzV2l0aCgnaHR0cCcpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgYm9keSA9IGBvYmplY3RKc29uPSR7ZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgICAgICAgIHJlcFN0b3JhZ2UudG9TdHJpbmcoKVxuICAgICAgICApfSZhcGlrZXk9JHtlbmNvZGVVUklDb21wb25lbnQoemFwa2V5KX1gO1xuXG4gICAgICAgIGZldGNoKHphcEFwaVVybCh6YXB1cmwsIFJFUE9SVF9PQkpFQ1QpLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgYm9keSxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmVwb3J0ZWRTdG9yYWdlLmFkZChyZXBTdG9yU3RyKTtcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gc2VuZFplc3RTY3JpcHRUb1pBUChcbiAgZGF0YTogc3RyaW5nLFxuICB6YXBrZXk6IHN0cmluZyxcbiAgemFwdXJsOiBzdHJpbmdcbik6IHZvaWQge1xuICBpZiAoSVNfRlVMTF9FWFRFTlNJT04pIHtcbiAgICBjb25zdCBib2R5ID0gYHN0YXRlbWVudEpzb249JHtlbmNvZGVVUklDb21wb25lbnQoXG4gICAgICBkYXRhXG4gICAgKX0mYXBpa2V5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHphcGtleSl9YDtcbiAgICBjb25zb2xlLmxvZyhgYm9keSA9ICR7Ym9keX1gKTtcbiAgICBmZXRjaCh6YXBBcGlVcmwoemFwdXJsLCAncmVwb3J0WmVzdFN0YXRlbWVudCcpLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHksXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlTWVzc2FnZShcbiAgcmVxdWVzdDogTWVzc2FnZUV2ZW50LFxuICB6YXB1cmw6IHN0cmluZyxcbiAgemFwa2V5OiBzdHJpbmdcbik6IFByb21pc2U8Ym9vbGVhbiB8IFplc3RTY3JpcHRNZXNzYWdlPiB7XG4gIGNvbnNvbGUubG9nKGBaQVAgU2VydmljZSB3b3JrZXIgY2FsbGluZyBaQVAgb24gJHt6YXB1cmx9YCk7XG4gIGNvbnNvbGUubG9nKHphcEFwaVVybCh6YXB1cmwsIFJFUE9SVF9PQkpFQ1QpKTtcbiAgY29uc29sZS5sb2coZW5jb2RlVVJJQ29tcG9uZW50KHphcGtleSkpO1xuICBjb25zb2xlLmxvZyhgVHlwZTogJHtyZXF1ZXN0LnR5cGV9YCk7XG4gIGNvbnNvbGUubG9nKGBEYXRhOiAke3JlcXVlc3QuZGF0YX1gKTtcbiAgc3dpdGNoIChyZXF1ZXN0LnR5cGUpIHtcbiAgICBjYXNlIFJFUE9SVF9PQkpFQ1Q6IHtcbiAgICAgIGNvbnN0IHJlcE9iaiA9IEpTT04ucGFyc2UocmVxdWVzdC5kYXRhKTtcbiAgICAgIGlmIChyZXBPYmoudHlwZSA9PT0gTE9DQUxfU1RPUkFHRSB8fCByZXBPYmoudHlwZSA9PT0gU0VTU0lPTl9TVE9SQUdFKSB7XG4gICAgICAgIGNvbnN0IHJlcFN0b3JhZ2UgPSBuZXcgUmVwb3J0ZWRTdG9yYWdlKCcnLCAnJywgJycsICcnLCAnJywgJycpO1xuICAgICAgICBPYmplY3QuYXNzaWduKHJlcFN0b3JhZ2UsIHJlcE9iaik7XG4gICAgICAgIGNvbnN0IHJlcFN0b3JTdHIgPSByZXBTdG9yYWdlLnRvU2hvcnRTdHJpbmcoKTtcbiAgICAgICAgaWYgKHJlcG9ydGVkU3RvcmFnZS5oYXMocmVwU3RvclN0cikpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXBvcnRlZFN0b3JhZ2UuYWRkKHJlcFN0b3JTdHIpO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVwT2JqQm9keSA9IGBvYmplY3RKc29uPSR7ZW5jb2RlVVJJQ29tcG9uZW50KFxuICAgICAgICByZXF1ZXN0LmRhdGFcbiAgICAgICl9JmFwaWtleT0ke2VuY29kZVVSSUNvbXBvbmVudCh6YXBrZXkpfWA7XG4gICAgICBjb25zb2xlLmxvZyhgYm9keSA9ICR7cmVwT2JqQm9keX1gKTtcbiAgICAgIGZldGNoKHphcEFwaVVybCh6YXB1cmwsIFJFUE9SVF9PQkpFQ1QpLCB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBib2R5OiByZXBPYmpCb2R5LFxuICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFJFUE9SVF9FVkVOVDoge1xuICAgICAgY29uc3QgZXZlbnRCb2R5ID0gYGV2ZW50SnNvbj0ke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgcmVxdWVzdC5kYXRhXG4gICAgICApfSZhcGlrZXk9JHtlbmNvZGVVUklDb21wb25lbnQoemFwa2V5KX1gO1xuICAgICAgY29uc29sZS5sb2coYGJvZHkgPSAke2V2ZW50Qm9keX1gKTtcbiAgICAgIGZldGNoKHphcEFwaVVybCh6YXB1cmwsIFJFUE9SVF9FVkVOVCksIHtcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgIGJvZHk6IGV2ZW50Qm9keSxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBaRVNUX1NDUklQVDoge1xuICAgICAgY29uc3QgZGF0YSA9IHplc3RTY3JpcHQuYWRkU3RhdGVtZW50KHJlcXVlc3QuZGF0YSk7XG4gICAgICBzZW5kWmVzdFNjcmlwdFRvWkFQKGRhdGEsIHphcGtleSwgemFwdXJsKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgR0VUX1pFU1RfU0NSSVBUOlxuICAgICAgcmV0dXJuIHplc3RTY3JpcHQuZ2V0WmVzdFNjcmlwdCgpO1xuXG4gICAgY2FzZSBSRVNFVF9aRVNUX1NDUklQVDpcbiAgICAgIHplc3RTY3JpcHQucmVzZXQoKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBTVE9QX1JFQ09SRElORzoge1xuICAgICAgaWYgKHplc3RTY3JpcHQuZ2V0WmVzdFN0YXRlbWVudENvdW50KCkgPiAwKSB7XG4gICAgICAgIGNvbnN0IHt6YXBjbG9zZXdpbmRvd2hhbmRsZX0gPSBhd2FpdCBCcm93c2VyLnN0b3JhZ2Uuc3luYy5nZXQoe1xuICAgICAgICAgIHphcGNsb3Nld2luZG93aGFuZGxlOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh6YXBjbG9zZXdpbmRvd2hhbmRsZSkge1xuICAgICAgICAgIGNvbnN0IHN0bXQgPSBuZXcgWmVzdFN0YXRlbWVudFdpbmRvd0Nsb3NlKDApO1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSB6ZXN0U2NyaXB0LmFkZFN0YXRlbWVudChzdG10LnRvSlNPTigpKTtcbiAgICAgICAgICBzZW5kWmVzdFNjcmlwdFRvWkFQKGRhdGEsIHphcGtleSwgemFwdXJsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIEhhbmRsZSB1bmtub3duIHJlcXVlc3QgdHlwZVxuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gb25NZXNzYWdlSGFuZGxlcihcbiAgbWVzc2FnZTogdW5rbm93bixcbiAgX3NlbmRlcjogUnVudGltZS5NZXNzYWdlU2VuZGVyXG4pOiBQcm9taXNlPG51bWJlciB8IFplc3RTY3JpcHRNZXNzYWdlPiB7XG4gIGxldCB2YWw6IG51bWJlciB8IFplc3RTY3JpcHRNZXNzYWdlID0gMjtcbiAgY29uc3QgaXRlbXMgPSBhd2FpdCBCcm93c2VyLnN0b3JhZ2Uuc3luYy5nZXQoe1xuICAgIHphcHVybDogJ2h0dHA6Ly96YXAvJyxcbiAgICB6YXBrZXk6ICdub3Qgc2V0JyxcbiAgfSk7XG4gIGNvbnN0IG1zZyA9IGF3YWl0IGhhbmRsZU1lc3NhZ2UoXG4gICAgbWVzc2FnZSBhcyBNZXNzYWdlRXZlbnQsXG4gICAgaXRlbXMuemFwdXJsIGFzIHN0cmluZyxcbiAgICBpdGVtcy56YXBrZXkgYXMgc3RyaW5nXG4gICk7XG4gIGlmICghKHR5cGVvZiBtc2cgPT09ICdib29sZWFuJykpIHtcbiAgICB2YWwgPSBtc2c7XG4gIH1cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWwpO1xufVxuXG5mdW5jdGlvbiBjb29raWVDaGFuZ2VIYW5kbGVyKFxuICBjaGFuZ2VJbmZvOiBDb29raWVzLk9uQ2hhbmdlZENoYW5nZUluZm9UeXBlXG4pOiB2b2lkIHtcbiAgQnJvd3Nlci5zdG9yYWdlLnN5bmNcbiAgICAuZ2V0KHtcbiAgICAgIHphcHVybDogJ2h0dHA6Ly96YXAvJyxcbiAgICAgIHphcGtleTogJ25vdCBzZXQnLFxuICAgIH0pXG4gICAgLnRoZW4oKGl0ZW1zKSA9PiB7XG4gICAgICByZXBvcnRDb29raWVzKFxuICAgICAgICBjaGFuZ2VJbmZvLmNvb2tpZSxcbiAgICAgICAgaXRlbXMuemFwdXJsIGFzIHN0cmluZyxcbiAgICAgICAgaXRlbXMuemFwa2V5IGFzIHN0cmluZ1xuICAgICAgKTtcbiAgICB9KTtcbn1cblxuQnJvd3Nlci5ydW50aW1lLm9uTWVzc2FnZS5hZGRMaXN0ZW5lcihvbk1lc3NhZ2VIYW5kbGVyKTtcblxuaWYgKElTX0ZVTExfRVhURU5TSU9OKSB7XG4gIEJyb3dzZXIuYWN0aW9uLm9uQ2xpY2tlZC5hZGRMaXN0ZW5lcigoX3RhYjogQnJvd3Nlci5UYWJzLlRhYikgPT4ge1xuICAgIEJyb3dzZXIucnVudGltZS5vcGVuT3B0aW9uc1BhZ2UoKTtcbiAgfSk7XG5cbiAgQnJvd3Nlci5jb29raWVzLm9uQ2hhbmdlZC5hZGRMaXN0ZW5lcihjb29raWVDaGFuZ2VIYW5kbGVyKTtcblxuICBCcm93c2VyLnJ1bnRpbWUub25JbnN0YWxsZWQuYWRkTGlzdGVuZXIoKCk6IHZvaWQgPT4ge1xuICAgIGNvbnNvbGUuZW1vamkoJ/CfpoQnLCAnZXh0ZW5zaW9uIGluc3RhbGxlZCcpO1xuICAgIEJyb3dzZXIuc3RvcmFnZS5zeW5jLnNldCh7XG4gICAgICB6YXB1cmw6ICdodHRwOi8vemFwLycsXG4gICAgICB6YXBrZXk6ICdub3Qgc2V0JyxcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCB7cmVwb3J0Q29va2llc307XG4iLCIvKlxuICogWmVkIEF0dGFjayBQcm94eSAoWkFQKSBhbmQgaXRzIHJlbGF0ZWQgc291cmNlIGZpbGVzLlxuICpcbiAqIFpBUCBpcyBhbiBIVFRQL0hUVFBTIHByb3h5IGZvciBhc3Nlc3Npbmcgd2ViIGFwcGxpY2F0aW9uIHNlY3VyaXR5LlxuICpcbiAqIENvcHlyaWdodCAyMDIzIFRoZSBaQVAgRGV2ZWxvcG1lbnQgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IEJyb3dzZXIgZnJvbSAnd2ViZXh0ZW5zaW9uLXBvbHlmaWxsJztcblxuY29uc3QgREVGQVVMVF9TVEFURU1FTlRfREVMQVkgPSAxMDAwO1xuXG5pbnRlcmZhY2UgWmVzdFNjcmlwdE1lc3NhZ2Uge1xuICBzY3JpcHQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgc3RhdGVtZW50Q291bnQ6IG51bWJlcjtcbn1cblxuY2xhc3MgWmVzdFNjcmlwdCB7XG4gIHByaXZhdGUgemVzdFN0YXRlbWVudHM6IHN0cmluZ1tdID0gW107XG5cbiAgcHJpdmF0ZSBjdXJJbmRleCA9IDE7XG5cbiAgcHJpdmF0ZSB0aXRsZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgc3RhdGVtZW50RGVsYXkgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHRpdGxlID0gJycpIHtcbiAgICB0aGlzLnRpdGxlID0gdGl0bGU7XG4gIH1cblxuICBhZGRTdGF0ZW1lbnQoc3RhdGVtZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHplc3RTdGF0ZW1lbnQgPSBKU09OLnBhcnNlKHN0YXRlbWVudCk7XG4gICAgemVzdFN0YXRlbWVudC5pbmRleCA9IHRoaXMuZ2V0TmV4dEluZGV4KCk7XG4gICAgdGhpcy56ZXN0U3RhdGVtZW50cy5wdXNoKEpTT04uc3RyaW5naWZ5KHplc3RTdGF0ZW1lbnQpKTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoemVzdFN0YXRlbWVudCk7XG4gIH1cblxuICBnZXROZXh0SW5kZXgoKTogbnVtYmVyIHtcbiAgICB0aGlzLmN1ckluZGV4ICs9IDE7XG4gICAgcmV0dXJuIHRoaXMuY3VySW5kZXggLSAxO1xuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy56ZXN0U3RhdGVtZW50cyA9IFtdO1xuICAgIHRoaXMuY3VySW5kZXggPSAxO1xuICB9XG5cbiAgZ2V0WmVzdFN0YXRlbWVudENvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuemVzdFN0YXRlbWVudHMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0VGl0bGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50aXRsZTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNjcmlwdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBhYm91dDpcbiAgICAgICAgJ1RoaXMgaXMgYSBaZXN0IHNjcmlwdC4gRm9yIG1vcmUgZGV0YWlscyBhYm91dCBaZXN0IHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS96YXByb3h5L3plc3QvJyxcbiAgICAgIHplc3RWZXJzaW9uOiAnMC4zJyxcbiAgICAgIHRpdGxlOiB0aGlzLnRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246ICcnLFxuICAgICAgcHJlZml4OiAnJyxcbiAgICAgIHR5cGU6ICdTdGFuZEFsb25lJyxcbiAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgdG9rZW5TdGFydDogJ3t7JyxcbiAgICAgICAgdG9rZW5FbmQ6ICd9fScsXG4gICAgICAgIHRva2Vuczoge30sXG4gICAgICAgIGVsZW1lbnRUeXBlOiAnWmVzdFZhcmlhYmxlcycsXG4gICAgICB9LFxuICAgICAgc3RhdGVtZW50czogdGhpcy56ZXN0U3RhdGVtZW50cy5tYXAoKHN0YXRlbWVudCkgPT4gSlNPTi5wYXJzZShzdGF0ZW1lbnQpKSxcbiAgICAgIGF1dGhlbnRpY2F0aW9uOiBbXSxcbiAgICAgIGluZGV4OiAwLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGVsZW1lbnRUeXBlOiAnWmVzdFNjcmlwdCcsXG4gICAgfTtcbiAgICBpZiAodGhpcy5zdGF0ZW1lbnREZWxheSA+IDApIHtcbiAgICAgIHNjcmlwdC5vcHRpb25zID0ge3N0YXRlbWVudERlbGF5OiBTdHJpbmcodGhpcy5zdGF0ZW1lbnREZWxheSl9O1xuICAgIH1cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoc2NyaXB0LCBudWxsLCAyKTtcbiAgfVxuXG4gIGdldFplc3RTY3JpcHQoKTogUHJvbWlzZTxaZXN0U2NyaXB0TWVzc2FnZT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgQnJvd3Nlci5zdG9yYWdlLnN5bmNcbiAgICAgICAgLmdldCh7XG4gICAgICAgICAgemFwc2NyaXB0bmFtZTogdGhpcy50aXRsZSxcbiAgICAgICAgICB6YXBzdGF0ZW1lbnRkZWxheTogREVGQVVMVF9TVEFURU1FTlRfREVMQVksXG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKChpdGVtcykgPT4ge1xuICAgICAgICAgIHRoaXMudGl0bGUgPSBpdGVtcy56YXBzY3JpcHRuYW1lIGFzIHN0cmluZztcbiAgICAgICAgICB0aGlzLnN0YXRlbWVudERlbGF5ID0gaXRlbXMuemFwc3RhdGVtZW50ZGVsYXkgYXMgbnVtYmVyO1xuICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgc2NyaXB0OiB0aGlzLnRvSlNPTigpLFxuICAgICAgICAgICAgdGl0bGU6IHRoaXMudGl0bGUsXG4gICAgICAgICAgICBzdGF0ZW1lbnRDb3VudDogdGhpcy5nZXRaZXN0U3RhdGVtZW50Q291bnQoKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHtaZXN0U2NyaXB0LCBERUZBVUxUX1NUQVRFTUVOVF9ERUxBWX07XG5leHBvcnQgdHlwZSB7WmVzdFNjcmlwdE1lc3NhZ2V9O1xuIl0sIm5hbWVzIjpbIkNvbnN0YW50cyIsImxvZ1RvQ29uc29sZSIsImVycm9yIiwiZW1vamkiLCJsZW5ndGgiLCJpc0Vycm9yIiwiZSIsInN0YWNrIiwibWVzc2FnZSIsImxlbiIsInRvU3RyaW5nIiwiTElORV9MRU5HVEhfVkFSSUFCTEUiLCJERUZBVUxUX0xJTkVfTEVOR1RIIiwiY29uc29sZSIsImxvZyIsInJlcGVhdCIsIndpbmRvdyIsImdyb3VwQ29sbGFwc2VkIiwiZ3JvdXBFbmQiLCJhcmdzIiwidGhpcyIsIk9ORSIsIlRXTyIsIlRIUkVFIiwicGFzc2VkQXJncyIsIl9fV0VCUEFDS19BTURfREVGSU5FX0ZBQ1RPUllfXyIsIl9fV0VCUEFDS19BTURfREVGSU5FX0FSUkFZX18iLCJfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXyIsImdsb2JhbFRoaXMiLCJzZWxmIiwibW9kdWxlIiwiY2hyb21lIiwicnVudGltZSIsImlkIiwiRXJyb3IiLCJicm93c2VyIiwiZXhwb3J0cyIsIkNIUk9NRV9TRU5EX01FU1NBR0VfQ0FMTEJBQ0tfTk9fUkVTUE9OU0VfTUVTU0FHRSIsIndyYXBBUElzIiwiZXh0ZW5zaW9uQVBJcyIsImFwaU1ldGFkYXRhIiwiYWxhcm1zIiwiY2xlYXIiLCJtaW5BcmdzIiwibWF4QXJncyIsImNsZWFyQWxsIiwiZ2V0IiwiZ2V0QWxsIiwiYm9va21hcmtzIiwiY3JlYXRlIiwiZ2V0Q2hpbGRyZW4iLCJnZXRSZWNlbnQiLCJnZXRTdWJUcmVlIiwiZ2V0VHJlZSIsIm1vdmUiLCJyZW1vdmUiLCJyZW1vdmVUcmVlIiwic2VhcmNoIiwidXBkYXRlIiwiYnJvd3NlckFjdGlvbiIsImRpc2FibGUiLCJmYWxsYmFja1RvTm9DYWxsYmFjayIsImVuYWJsZSIsImdldEJhZGdlQmFja2dyb3VuZENvbG9yIiwiZ2V0QmFkZ2VUZXh0IiwiZ2V0UG9wdXAiLCJnZXRUaXRsZSIsIm9wZW5Qb3B1cCIsInNldEJhZGdlQmFja2dyb3VuZENvbG9yIiwic2V0QmFkZ2VUZXh0Iiwic2V0SWNvbiIsInNldFBvcHVwIiwic2V0VGl0bGUiLCJicm93c2luZ0RhdGEiLCJyZW1vdmVDYWNoZSIsInJlbW92ZUNvb2tpZXMiLCJyZW1vdmVEb3dubG9hZHMiLCJyZW1vdmVGb3JtRGF0YSIsInJlbW92ZUhpc3RvcnkiLCJyZW1vdmVMb2NhbFN0b3JhZ2UiLCJyZW1vdmVQYXNzd29yZHMiLCJyZW1vdmVQbHVnaW5EYXRhIiwic2V0dGluZ3MiLCJjb21tYW5kcyIsImNvbnRleHRNZW51cyIsInJlbW92ZUFsbCIsImNvb2tpZXMiLCJnZXRBbGxDb29raWVTdG9yZXMiLCJzZXQiLCJkZXZ0b29scyIsImluc3BlY3RlZFdpbmRvdyIsImV2YWwiLCJzaW5nbGVDYWxsYmFja0FyZyIsInBhbmVscyIsImVsZW1lbnRzIiwiY3JlYXRlU2lkZWJhclBhbmUiLCJkb3dubG9hZHMiLCJjYW5jZWwiLCJkb3dubG9hZCIsImVyYXNlIiwiZ2V0RmlsZUljb24iLCJvcGVuIiwicGF1c2UiLCJyZW1vdmVGaWxlIiwicmVzdW1lIiwic2hvdyIsImV4dGVuc2lvbiIsImlzQWxsb3dlZEZpbGVTY2hlbWVBY2Nlc3MiLCJpc0FsbG93ZWRJbmNvZ25pdG9BY2Nlc3MiLCJoaXN0b3J5IiwiYWRkVXJsIiwiZGVsZXRlQWxsIiwiZGVsZXRlUmFuZ2UiLCJkZWxldGVVcmwiLCJnZXRWaXNpdHMiLCJpMThuIiwiZGV0ZWN0TGFuZ3VhZ2UiLCJnZXRBY2NlcHRMYW5ndWFnZXMiLCJpZGVudGl0eSIsImxhdW5jaFdlYkF1dGhGbG93IiwiaWRsZSIsInF1ZXJ5U3RhdGUiLCJtYW5hZ2VtZW50IiwiZ2V0U2VsZiIsInNldEVuYWJsZWQiLCJ1bmluc3RhbGxTZWxmIiwibm90aWZpY2F0aW9ucyIsImdldFBlcm1pc3Npb25MZXZlbCIsInBhZ2VBY3Rpb24iLCJoaWRlIiwicGVybWlzc2lvbnMiLCJjb250YWlucyIsInJlcXVlc3QiLCJnZXRCYWNrZ3JvdW5kUGFnZSIsImdldFBsYXRmb3JtSW5mbyIsIm9wZW5PcHRpb25zUGFnZSIsInJlcXVlc3RVcGRhdGVDaGVjayIsInNlbmRNZXNzYWdlIiwic2VuZE5hdGl2ZU1lc3NhZ2UiLCJzZXRVbmluc3RhbGxVUkwiLCJzZXNzaW9ucyIsImdldERldmljZXMiLCJnZXRSZWNlbnRseUNsb3NlZCIsInJlc3RvcmUiLCJzdG9yYWdlIiwibG9jYWwiLCJnZXRCeXRlc0luVXNlIiwibWFuYWdlZCIsInN5bmMiLCJ0YWJzIiwiY2FwdHVyZVZpc2libGVUYWIiLCJkaXNjYXJkIiwiZHVwbGljYXRlIiwiZXhlY3V0ZVNjcmlwdCIsImdldEN1cnJlbnQiLCJnZXRab29tIiwiZ2V0Wm9vbVNldHRpbmdzIiwiZ29CYWNrIiwiZ29Gb3J3YXJkIiwiaGlnaGxpZ2h0IiwiaW5zZXJ0Q1NTIiwicXVlcnkiLCJyZWxvYWQiLCJyZW1vdmVDU1MiLCJzZXRab29tIiwic2V0Wm9vbVNldHRpbmdzIiwidG9wU2l0ZXMiLCJ3ZWJOYXZpZ2F0aW9uIiwiZ2V0QWxsRnJhbWVzIiwiZ2V0RnJhbWUiLCJ3ZWJSZXF1ZXN0IiwiaGFuZGxlckJlaGF2aW9yQ2hhbmdlZCIsIndpbmRvd3MiLCJnZXRMYXN0Rm9jdXNlZCIsIk9iamVjdCIsImtleXMiLCJEZWZhdWx0V2Vha01hcCIsIldlYWtNYXAiLCJjb25zdHJ1Y3RvciIsImNyZWF0ZUl0ZW0iLCJpdGVtcyIsInVuZGVmaW5lZCIsInN1cGVyIiwia2V5IiwiaGFzIiwiaXNUaGVuYWJsZSIsInZhbHVlIiwidGhlbiIsIm1ha2VDYWxsYmFjayIsInByb21pc2UiLCJtZXRhZGF0YSIsImNhbGxiYWNrQXJncyIsImxhc3RFcnJvciIsInJlamVjdCIsInJlc29sdmUiLCJwbHVyYWxpemVBcmd1bWVudHMiLCJudW1BcmdzIiwid3JhcEFzeW5jRnVuY3Rpb24iLCJuYW1lIiwidGFyZ2V0IiwiUHJvbWlzZSIsImNiRXJyb3IiLCJ3YXJuIiwibm9DYWxsYmFjayIsIndyYXBNZXRob2QiLCJtZXRob2QiLCJ3cmFwcGVyIiwiUHJveHkiLCJhcHBseSIsInRhcmdldE1ldGhvZCIsInRoaXNPYmoiLCJjYWxsIiwiaGFzT3duUHJvcGVydHkiLCJGdW5jdGlvbiIsImJpbmQiLCJwcm90b3R5cGUiLCJ3cmFwT2JqZWN0Iiwid3JhcHBlcnMiLCJjYWNoZSIsImhhbmRsZXJzIiwicHJveHlUYXJnZXQiLCJwcm9wIiwicmVjZWl2ZXIiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJkZXNjIiwiUmVmbGVjdCIsImRlbGV0ZVByb3BlcnR5Iiwid3JhcEV2ZW50Iiwid3JhcHBlck1hcCIsImFkZExpc3RlbmVyIiwibGlzdGVuZXIiLCJoYXNMaXN0ZW5lciIsInJlbW92ZUxpc3RlbmVyIiwib25SZXF1ZXN0RmluaXNoZWRXcmFwcGVycyIsInJlcSIsIndyYXBwZWRSZXEiLCJnZXRDb250ZW50Iiwib25NZXNzYWdlV3JhcHBlcnMiLCJzZW5kZXIiLCJzZW5kUmVzcG9uc2UiLCJ3cmFwcGVkU2VuZFJlc3BvbnNlIiwicmVzdWx0IiwiZGlkQ2FsbFNlbmRSZXNwb25zZSIsInNlbmRSZXNwb25zZVByb21pc2UiLCJyZXNwb25zZSIsImVyciIsImlzUmVzdWx0VGhlbmFibGUiLCJzZW5kUHJvbWlzZWRSZXN1bHQiLCJtc2ciLCJfX21veldlYkV4dGVuc2lvblBvbHlmaWxsUmVqZWN0X18iLCJjYXRjaCIsIndyYXBwZWRTZW5kTWVzc2FnZUNhbGxiYWNrIiwicmVwbHkiLCJ3cmFwcGVkU2VuZE1lc3NhZ2UiLCJhcGlOYW1lc3BhY2VPYmoiLCJ3cmFwcGVkQ2IiLCJwdXNoIiwic3RhdGljV3JhcHBlcnMiLCJuZXR3b3JrIiwib25SZXF1ZXN0RmluaXNoZWQiLCJvbk1lc3NhZ2UiLCJvbk1lc3NhZ2VFeHRlcm5hbCIsInNldHRpbmdNZXRhZGF0YSIsInByaXZhY3kiLCJzZXJ2aWNlcyIsIndlYnNpdGVzIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIm4iLCJnZXR0ZXIiLCJfX2VzTW9kdWxlIiwiZCIsImEiLCJkZWZpbml0aW9uIiwibyIsIm9iaiIsIlJlcG9ydGVkT2JqZWN0IiwidHlwZSIsInRhZ05hbWUiLCJub2RlTmFtZSIsInRleHQiLCJ1cmwiLCJ0aW1lc3RhbXAiLCJEYXRlIiwibm93IiwiSlNPTiIsInN0cmluZ2lmeSIsInRvU2hvcnRTdHJpbmciLCJ0b05vblRpbWVzdGFtcFN0cmluZyIsImsiLCJ2IiwiUmVwb3J0ZWRTdG9yYWdlIiwiSVNfRlVMTF9FWFRFTlNJT04iLCJCcm93c2VyIiwiZ2V0TWFuaWZlc3QiLCJERUZBVUxUX1dJTkRPV19IQU5ETEUiLCJSRVBPUlRfRVZFTlQiLCJSRVBPUlRfT0JKRUNUIiwiWmVzdFN0YXRlbWVudCIsImVsZW1lbnRUeXBlIiwiaW5kZXgiLCJaZXN0U3RhdGVtZW50V2luZG93Q2xvc2UiLCJzbGVlcEluU2Vjb25kcyIsIndpbmRvd0hhbmRsZSIsInRvSlNPTiIsImVuYWJsZWQiLCJ0IiwiciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJpIiwiYyIsIkdlbmVyYXRvciIsInUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsImwiLCJUeXBlRXJyb3IiLCJkb25lIiwicmV0dXJuIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImdldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJkaXNwbGF5TmFtZSIsIl9yZWdlbmVyYXRvciIsInciLCJtIiwiX2ludm9rZSIsIndyaXRhYmxlIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJhcmd1bWVudHMiLCJfbmV4dCIsIl90aHJvdyIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiQXJyYXkiLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJzbGljZSIsImZyb20iLCJ0ZXN0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX24iLCJGIiwicyIsIm5leHQiLCJyZXBvcnRlZFN0b3JhZ2UiLCJTZXQiLCJ6ZXN0U2NyaXB0IiwidGl0bGUiLCJfZGVmaW5lUHJvcGVydHkiLCJhZGRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnQiLCJ6ZXN0U3RhdGVtZW50IiwicGFyc2UiLCJnZXROZXh0SW5kZXgiLCJ6ZXN0U3RhdGVtZW50cyIsImN1ckluZGV4IiwicmVzZXQiLCJnZXRaZXN0U3RhdGVtZW50Q291bnQiLCJzY3JpcHQiLCJhYm91dCIsInplc3RWZXJzaW9uIiwiZGVzY3JpcHRpb24iLCJwcmVmaXgiLCJwYXJhbWV0ZXJzIiwidG9rZW5TdGFydCIsInRva2VuRW5kIiwidG9rZW5zIiwic3RhdGVtZW50cyIsIm1hcCIsImF1dGhlbnRpY2F0aW9uIiwic3RhdGVtZW50RGVsYXkiLCJvcHRpb25zIiwiU3RyaW5nIiwiZ2V0WmVzdFNjcmlwdCIsInphcHNjcmlwdG5hbWUiLCJ6YXBzdGF0ZW1lbnRkZWxheSIsInN0YXRlbWVudENvdW50IiwiemFwQXBpVXJsIiwiemFwdXJsIiwiYWN0aW9uIiwiaW5kZXhPZiIsImdldFVybEZyb21Db29raWVEb21haW4iLCJkb21haW4iLCJzdGFydHNXaXRoIiwic3Vic3RyaW5nIiwicmVwb3J0Q29va2llcyIsImNvb2tpZSIsInphcGtleSIsImNvb2tpZVN0cmluZyIsInBhdGgiLCJleHBpcmF0aW9uRGF0ZSIsImNvbmNhdCIsInRvVVRDU3RyaW5nIiwic2VjdXJlIiwic2FtZVNpdGUiLCJodHRwT25seSIsImdldEFsbFRhYnMiLCJjdXJyZW50V2luZG93IiwiYWxsVGFicyIsIl9zdGVwIiwiX2l0ZXJhdG9yIiwiX2xvb3AiLCJ0YWIiLCJfc3RlcDIiLCJfaXRlcmF0b3IyIiwic3RvcmVJZCIsImdldENvb2tpZVRhYlVybCIsImNvb2tpZVVybCIsInJlcFN0b3JhZ2UiLCJyZXBTdG9yU3RyIiwiYm9keSIsImVuY29kZVVSSUNvbXBvbmVudCIsImZldGNoIiwiaGVhZGVycyIsImFkZCIsInNlbmRaZXN0U2NyaXB0VG9aQVAiLCJkYXRhIiwiaGFuZGxlTWVzc2FnZSIsIl94IiwiX3gyIiwiX3gzIiwiX2hhbmRsZU1lc3NhZ2UiLCJfY2FsbGVlIiwicmVwT2JqIiwicmVwT2JqQm9keSIsImV2ZW50Qm9keSIsIl95aWVsZCRCcm93c2VyJHN0b3JhZyIsInN0bXQiLCJfdCIsIl9jb250ZXh0IiwiYXNzaWduIiwiemFwY2xvc2V3aW5kb3doYW5kbGUiLCJfb25NZXNzYWdlSGFuZGxlciIsIl9jYWxsZWUyIiwiX3NlbmRlciIsInZhbCIsIl9jb250ZXh0MiIsIl94NCIsIl94NSIsIm9uQ2xpY2tlZCIsIl90YWIiLCJvbkNoYW5nZWQiLCJjaGFuZ2VJbmZvIiwib25JbnN0YWxsZWQiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/js/contentScript.bundle.js b/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/js/contentScript.bundle.js index b94a5de1889..576eca91617 100644 --- a/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/js/contentScript.bundle.js +++ b/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/js/contentScript.bundle.js @@ -1,2 +1,2 @@ -(()=>{var e={873(e,t,n){var r=n(325).Symbol;e.exports=r},552(e,t,n){var r=n(873),i=n(659),s=n(350),o=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":o&&o in Object(e)?i(e):s(e)}},128(e,t,n){var r=n(800),i=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(i,""):e}},840(e,t,n){var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},659(e,t,n){var r=n(873),i=Object.prototype,s=i.hasOwnProperty,o=i.toString,a=r?r.toStringTag:void 0;e.exports=function(e){var t=s.call(e,a),n=e[a];try{e[a]=void 0;var r=!0}catch(e){}var i=o.call(e);return r&&(t?e[a]=n:delete e[a]),i}},350(e){var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},325(e,t,n){var r=n(840),i="object"==typeof self&&self&&self.Object===Object&&self,s=r||i||Function("return this")();e.exports=s},800(e){var t=/\s/;e.exports=function(e){for(var n=e.length;n--&&t.test(e.charAt(n)););return n}},221(e,t,n){var r=n(805),i=n(124),s=n(374),o=Math.max,a=Math.min;e.exports=function(e,t,n){var l,c,m,g,d,u,h=0,f=!1,p=!1,A=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function y(t){var n=l,r=c;return l=c=void 0,h=t,g=e.apply(r,n)}function v(e){var n=e-u;return void 0===u||n>=t||n<0||p&&e-h>=m}function b(){var e=i();if(v(e))return w(e);d=setTimeout(b,function(e){var n=t-(e-u);return p?a(n,m-(e-h)):n}(e))}function w(e){return d=void 0,A&&l?y(e):(l=c=void 0,g)}function x(){var e=i(),n=v(e);if(l=arguments,c=this,u=e,n){if(void 0===d)return function(e){return h=e,d=setTimeout(b,t),f?y(e):g}(u);if(p)return clearTimeout(d),d=setTimeout(b,t),y(u)}return void 0===d&&(d=setTimeout(b,t)),g}return t=s(t)||0,r(n)&&(f=!!n.leading,m=(p="maxWait"in n)?o(s(n.maxWait)||0,t):m,A="trailing"in n?!!n.trailing:A),x.cancel=function(){void 0!==d&&clearTimeout(d),h=0,l=u=c=d=void 0},x.flush=function(){return void 0===d?g:w(i())},x}},805(e){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},346(e){e.exports=function(e){return null!=e&&"object"==typeof e}},394(e,t,n){var r=n(552),i=n(346);e.exports=function(e){return"symbol"==typeof e||i(e)&&"[object Symbol]"==r(e)}},124(e,t,n){var r=n(325);e.exports=function(){return r.Date.now()}},374(e,t,n){var r=n(128),i=n(805),s=n(394),o=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(s(e))return NaN;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=a.test(e);return n||l.test(e)?c(e.slice(2),n?2:8):o.test(e)?NaN:+e}},815(e,t){var n,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e],n=function(e){"use strict";if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw new Error("This script should only be loaded in a browser extension.");if(globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id)e.exports=globalThis.browser;else{const t="The message port closed before a response was received.",n=e=>{const n={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(n).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class r extends WeakMap{constructor(e,t=void 0){super(t),this.createItem=e}get(e){return this.has(e)||this.set(e,this.createItem(e)),super.get(e)}}const i=e=>e&&"object"==typeof e&&"function"==typeof e.then,s=(t,n)=>(...r)=>{e.runtime.lastError?t.reject(new Error(e.runtime.lastError.message)):n.singleCallbackArg||r.length<=1&&!1!==n.singleCallbackArg?t.resolve(r[0]):t.resolve(r)},o=e=>1==e?"argument":"arguments",a=(e,t)=>function(n,...r){if(r.lengtht.maxArgs)throw new Error(`Expected at most ${t.maxArgs} ${o(t.maxArgs)} for ${e}(), got ${r.length}`);return new Promise((i,o)=>{if(t.fallbackToNoCallback)try{n[e](...r,s({resolve:i,reject:o},t))}catch(s){console.warn(`${e} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `,s),n[e](...r),t.fallbackToNoCallback=!1,t.noCallback=!0,i()}else t.noCallback?(n[e](...r),i()):n[e](...r,s({resolve:i,reject:o},t))})},l=(e,t,n)=>new Proxy(t,{apply:(t,r,i)=>n.call(r,e,...i)});let c=Function.call.bind(Object.prototype.hasOwnProperty);const m=(e,t={},n={})=>{let r=Object.create(null),i={has:(t,n)=>n in e||n in r,get(i,s,o){if(s in r)return r[s];if(!(s in e))return;let g=e[s];if("function"==typeof g)if("function"==typeof t[s])g=l(e,e[s],t[s]);else if(c(n,s)){let t=a(s,n[s]);g=l(e,e[s],t)}else g=g.bind(e);else if("object"==typeof g&&null!==g&&(c(t,s)||c(n,s)))g=m(g,t[s],n[s]);else{if(!c(n,"*"))return Object.defineProperty(r,s,{configurable:!0,enumerable:!0,get:()=>e[s],set(t){e[s]=t}}),g;g=m(g,t[s],n["*"])}return r[s]=g,g},set:(t,n,i,s)=>(n in r?r[n]=i:e[n]=i,!0),defineProperty:(e,t,n)=>Reflect.defineProperty(r,t,n),deleteProperty:(e,t)=>Reflect.deleteProperty(r,t)},s=Object.create(e);return new Proxy(s,i)},g=e=>({addListener(t,n,...r){t.addListener(e.get(n),...r)},hasListener:(t,n)=>t.hasListener(e.get(n)),removeListener(t,n){t.removeListener(e.get(n))}}),d=new r(e=>"function"!=typeof e?e:function(t){const n=m(t,{},{getContent:{minArgs:0,maxArgs:0}});e(n)}),u=new r(e=>"function"!=typeof e?e:function(t,n,r){let s,o,a=!1,l=new Promise(e=>{s=function(t){a=!0,e(t)}});try{o=e(t,n,s)}catch(e){o=Promise.reject(e)}const c=!0!==o&&i(o);if(!0!==o&&!c&&!a)return!1;const m=e=>{e.then(e=>{r(e)},e=>{let t;t=e&&(e instanceof Error||"string"==typeof e.message)?e.message:"An unexpected error occurred",r({__mozWebExtensionPolyfillReject__:!0,message:t})}).catch(e=>{console.error("Failed to send onMessage rejected reply",e)})};return m(c?o:l),!0}),h=({reject:n,resolve:r},i)=>{e.runtime.lastError?e.runtime.lastError.message===t?r():n(new Error(e.runtime.lastError.message)):i&&i.__mozWebExtensionPolyfillReject__?n(new Error(i.message)):r(i)},f=(e,t,n,...r)=>{if(r.lengtht.maxArgs)throw new Error(`Expected at most ${t.maxArgs} ${o(t.maxArgs)} for ${e}(), got ${r.length}`);return new Promise((e,t)=>{const i=h.bind(null,{resolve:e,reject:t});r.push(i),n.sendMessage(...r)})},p={devtools:{network:{onRequestFinished:g(d)}},runtime:{onMessage:g(u),onMessageExternal:g(u),sendMessage:f.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:f.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},A={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return n.privacy={network:{"*":A},services:{"*":A},websites:{"*":A}},m(e,p,n)};e.exports=n(chrome)}},void 0===(i="function"==typeof n?n.apply(t,r):n)||(e.exports=i)}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var s=t[r]={exports:{}};return e[r].call(s.exports,s,s.exports,n),s.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(815),t=n.n(e);class r{constructor(e,t,n,r,i,s){this.timestamp=Date.now(),this.type=e,this.tagName=t,this.id=n,this.nodeName=r,this.text=i,this.url=s}toString(){return JSON.stringify(this)}toShortString(){return JSON.stringify(this,function(e,t){if("xpath"!==e)return t})}toNonTimestampString(){return JSON.stringify(this,function(e,t){if("timestamp"!==e)return t})}}class i extends r{toShortString(){return JSON.stringify(this,function(e,t){if("xpath"!==e&&"href"!==e&&"timestamp"!==e&&("url"!==e||"cookies"===this.type))return t})}}class s extends r{constructor(e,t){if(super("nodeAdded",e.tagName,e.id,e.nodeName,e.textContent,t),"A"===e.tagName){var n=e;this.href=n.toString()}else if("FORM"===e.tagName)this.formId=Array.prototype.slice.call(document.forms).indexOf(e);else if("INPUT"===e.tagName){var r=e;this.tagType=r.type,this.text=r.value;var i=r.form;i&&(this.formId=Array.prototype.slice.call(document.forms).indexOf(i))}else e.hasAttribute("href")&&(this.href=e.getAttribute("href"))}toShortString(){return JSON.stringify(this,function(e,t){if("timestamp"!==e)return t})}}class o{constructor(e){this.timestamp=Date.now(),this.eventName=e,this.url=window.location.href,this.count=1}toString(){return JSON.stringify(this)}}var a=n(221),l=n.n(a),c=void 0===t().runtime.getManifest||"ZAP by Checkmarx Browser Extension"===t().runtime.getManifest().name,m="windowHandle1",g="reportEvent",d="localStorage",u="sessionStorage",h="ZapfloatingDiv",f="ZapfloatingDivElements";function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function A(e){for(var t=1;t ${n}`}return n}function I(e){return e instanceof Element&&e.getAttribute("id")===h}function R(e,t){if(!e.tagName)return"";var n=e.tagName.toLowerCase();if(e.id&&function(e,t){return 1===t.evaluate(e,t,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null).snapshotLength}(n,t))n+=`[@id="${e.id}"]`;else{for(var r=1,i=e.previousSibling,s=!0;i;)i.nodeType!==Node.ELEMENT_NODE||i.nodeName!==e.nodeName||I(i)||(r+=1,s=!1),i=i.previousSibling;if(s)for(i=e.nextSibling;i;){if(i.nodeType===Node.ELEMENT_NODE&&i.nodeName===e.nodeName){s=!1;break}i=i.nextSibling}1===r&&s||(n+=`[${r}]`)}e.parentNode&&(n=`${R(e.parentNode,t)}/${n}`);return n}function Z(e,t){var n=new v("","");if(e.id)n.type="id",n.element=e.id;else if(k.has(e)||function(e){var t;return!!P.has(e)&&P.get(e)!==(null!==(t=e.getAttribute("class"))&&void 0!==t?t:"")}(e)||1!==e.classList.length||null==e.classList.item(0)||!M(`.${e.classList.item(0)}`,t)){var r=F(e,t);if(r&&M(r,t))n.type="cssSelector",n.element=r;else{var i=R(e,t);i&&(n.type="xpath",n.element=i)}}else n.type="className",n.element=`${e.classList.item(0)}`;return n}function $(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function s(n,r,i,s){var l=r&&r.prototype instanceof a?r:a,c=Object.create(l.prototype);return D(c,"_invoke",function(n,r,i){var s,a,l,c=0,m=i||[],g=!1,d={p:0,n:0,v:e,a:u,f:u.bind(e,4),d:function(t,n){return s=t,a=0,l=e,d.n=n,o}};function u(n,r){for(a=n,l=r,t=0;!g&&c&&!i&&t3?(i=h===r)&&(l=s[(a=s[4])?5:(a=3,3)],s[4]=s[5]=e):s[0]<=u&&((i=n<2&&ur||r>h)&&(s[4]=n,s[5]=r,d.n=h,a=0))}if(i||n>1)return o;throw g=!0,r}return function(i,m,h){if(c>1)throw TypeError("Generator is already running");for(g&&1===m&&u(m,h),a=m,l=h;(t=a<2?e:l)||!g;){s||(a?a<3?(a>1&&(d.n=-1),u(a,l)):d.n=l:d.v=l);try{if(c=2,s){if(a||(i="next"),t=s[i]){if(!(t=t.call(s,l)))throw TypeError("iterator result is not an object");if(!t.done)return t;l=t.value,a<2&&(a=0)}else 1===a&&(t=s.return)&&t.call(s),a<2&&(l=TypeError("The iterator does not provide a '"+i+"' method"),a=1);s=e}else if((t=(g=d.n<0)?l:n.call(r,d))!==o)break}catch(t){s=e,a=1,l=t}finally{c=1}}return{value:t,done:g}}}(n,i,s),!0),c}var o={};function a(){}function l(){}function c(){}t=Object.getPrototypeOf;var m=[][r]?t(t([][r]())):(D(t={},r,function(){return this}),t),g=c.prototype=a.prototype=Object.create(m);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,D(e,i,"GeneratorFunction")),e.prototype=Object.create(g),e}return l.prototype=c,D(g,"constructor",c),D(c,"constructor",l),l.displayName="GeneratorFunction",D(c,i,"GeneratorFunction"),D(g),D(g,i,"Generator"),D(g,r,function(){return this}),D(g,"toString",function(){return"[object Generator]"}),($=function(){return{w:s,m:d}})()}function D(e,t,n,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}D=function(e,t,n,r){function s(t,n){D(e,t,function(e){return this._invoke(t,n,e)})}t?i?i(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(s("next",0),s("throw",1),s("return",2))},D(e,t,n,r)}function U(e,t,n,r,i,s,o){try{var a=e[s](o),l=a.value}catch(e){return void n(e)}a.done?t(l):Promise.resolve(l).then(r,i)}function z(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var s=e.apply(t,n);function o(e){U(s,r,i,o,a,"next",e)}function a(e){U(s,r,i,o,a,"throw",e)}o(void 0)})}}function W(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var _="ZAP-stop-recording-button",H="Stop and Download Recording";const B=class{constructor(){W(this,"timeAdjustmentMillis",3e3),W(this,"minimumWaitTimeInMillis",5e3),W(this,"curLevel",-1),W(this,"curFrame",0),W(this,"active",!1),W(this,"haveListenersBeenAdded",!1),W(this,"floatingWindowInserted",!1),W(this,"isNotificationRaised",!1),W(this,"cachedTimeStamp",-1),W(this,"lastUserInteractionTime",0),W(this,"lastMouseDownTarget",null),W(this,"USER_INTERACTION_WINDOW_MS",500),W(this,"pendingSyntheticClickTarget",null),W(this,"pendingSyntheticClickTimer",null)}sendZestScriptToZAP(e,n){var r=this;return z($().m(function i(){return $().w(function(i){for(;;)if(0===i.n)return n.sendCache&&r.handleCachedSubmit(),n.notify&&r.notify(e),i.a(2,t().runtime.sendMessage({type:"zestScript",data:e.toJSON()}))},i)}))()}getWaited(){void 0!==this.lastStatementTime&&0!==this.lastStatementTime||(this.lastStatementTime=Date.now());var e=this.lastStatementTime-this.timeAdjustmentMillis,t=Math.ceil((Date.now()-e)/this.minimumWaitTimeInMillis)*this.minimumWaitTimeInMillis;return this.lastStatementTime=Date.now(),t}sendScrollToToZap(e,t){this.sendZestScriptToZAP(new N(e,t),{sendCache:!1,notify:!1})}handleCachedSubmit(){this.cachedSubmit&&(this.sendScrollToToZap(this.cachedSubmit.elementLocator,this.getWaited()),this.sendZestScriptToZAP(this.cachedSubmit,{sendCache:!1,notify:!0}),delete this.cachedSubmit,this.cachedTimeStamp=-1)}handleFrameSwitches(e,t){if(this.curLevel!==e||this.curFrame!==t){if(this.curLevel>e){for(;this.curLevel>e;)this.sendZestScriptToZAP(new C(-1),{sendCache:!0,notify:!0}),this.curLevel-=1;this.curFrame=t}else this.curLevel+=1,this.curFrame=t,this.sendZestScriptToZAP(new C(t),{sendCache:!0,notify:!0});this.curLevel!==e&&console.log("ZAP Error in switching frames")}}handleClick(e,t){if(this.shouldRecord(t.target)){var n=e.level,r=e.frame,i=e.element,s=t.target;if(this.handleFrameSwitches(n,r),console.log(t,"ZAP clicked"),0===t.detail){var o=Date.now()-this.lastUserInteractionTime,a=null!==this.lastMouseDownTarget&&s.contains(this.lastMouseDownTarget);if(o>=this.USER_INTERACTION_WINDOW_MS||!a)return void(this.cachedSubmit&&this.handleCachedSubmit());var l=Z(t.target,i);return null!==this.pendingSyntheticClickTimer&&clearTimeout(this.pendingSyntheticClickTimer),this.pendingSyntheticClickTarget=s,void(this.pendingSyntheticClickTimer=setTimeout(()=>{this.pendingSyntheticClickTarget=null,this.pendingSyntheticClickTimer=null;var e=this.getWaited();this.sendScrollToToZap(l,e),this.sendZestScriptToZAP(new T(l,e),{sendCache:!0,notify:!0})},0))}null!==this.pendingSyntheticClickTarget&&this.pendingSyntheticClickTarget===s&&(null!==this.pendingSyntheticClickTimer&&clearTimeout(this.pendingSyntheticClickTimer),this.pendingSyntheticClickTarget=null,this.pendingSyntheticClickTimer=null);var c=this.getWaited(),m=Z(t.target,i);this.sendScrollToToZap(m,c),this.sendZestScriptToZAP(new T(m,c),{sendCache:!0,notify:!0})}}handleUserInteraction(e){this.lastUserInteractionTime=Date.now(),this.lastMouseDownTarget=e.target}handleScroll(e,t){if(this.shouldRecord(t.target)){var n=e.level,r=e.frame;this.handleFrameSwitches(n,r),console.log(t,"ZAP scrolling.. ")}}handleMouseOver(e,t){if(this.shouldRecord(t.target)){var n=e.level,r=e.frame,i=e.element.documentElement.outerHTML;i!==this.previousDOMState&&(this.previousDOMState=i,this.handleFrameSwitches(n,r),console.log(t,"ZAP MouseOver"))}}handleChange(e,t){var n,r;if(this.shouldRecord(t.target)){var i=e.level,s=e.frame,o=e.element,a=this.getWaited();this.handleFrameSwitches(i,s),console.log(t,"ZAP change",t.target.value);var l=Z(t.target,o);this.cachedSubmit&&this.cachedSubmit.elementLocator.element!==l.element&&this.handleCachedSubmit();var c=t.target,m="SELECT"===c.tagName?null!==(n=null===(r=c.selectedOptions[0])||void 0===r?void 0:r.text)&&void 0!==n?n:"":t.target.value;this.sendScrollToToZap(l,a),this.sendZestScriptToZAP(new E(l,m,a),{sendCache:!1,notify:!0}),this.handleCachedSubmit()}}handleKeypress(e,t){if(this.shouldRecord(t.target)){var n=e.element;if("Enter"===t.key){if(this.cachedSubmit&&this.cachedTimeStamp===t.timeStamp)return;this.handleCachedSubmit();var r=Z(t.target,n);this.cachedSubmit=new O(r,this.getWaited()),this.cachedTimeStamp=t.timeStamp}}}handleResize(){if(this.active){var e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,t=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;console.log("ZAP Window Resize : ",e,t)}}addListenerToInputField(e,t,n,r,i){e.has(t)||(e.add(t),t.addEventListener("keydown",this.handleKeypress.bind(this,{level:n,frame:r,element:i})))}handleFrameLoad(e){var t,n=e.element,r=n.contentDocument||(null===(t=n.contentWindow)||void 0===t?void 0:t.document);null!=r&&this.addListenersToDocument(r,e.level,this.indexOfFrame(n))}processFrame(e,t){var n,r=e,i=null===(n=r.contentWindow)||void 0===n?void 0:n.document;null!=i&&"complete"===i.readyState&&i.documentURI===r.src?this.addListenersToDocument(i,t,this.indexOfFrame(e)):e.addEventListener("load",this.handleFrameLoad.bind(this,{element:r,level:t}));new MutationObserver(e=>{e.forEach(e=>{"attributes"===e.type&&"src"===e.attributeName&&this.processFrame(e.target,t)})}).observe(e,{attributes:!0})}indexOfFrame(e){for(var t=0;tthis.processFrame(e,t+1)),e.querySelectorAll("input").forEach(i=>{j(i),this.addListenerToInputField(r,i,t,n,e)});new MutationObserver(i=>{i.forEach(i=>{if("childList"===i.type&&i.target.nodeType===Node.ELEMENT_NODE)for(var s=i.target.getElementsByTagName("input"),o=0;o{e.downloadScript&&(s.textContent=H)}),s.addEventListener("click",()=>{this.stopRecordingUserInteractions(),t().runtime.sendMessage({type:"stopRecording"}),t().storage.sync.get({downloadScript:!1}).then(e=>{e.downloadScript&&(t().runtime.sendMessage({type:"getZestScript"}).then(e=>{var t,n,r,i,s;t=e.script,n=`zap-rec-${window.location.hostname}${this.getDateString()}.zst`,r=new Blob([t],{type:"application/json"}),i=URL.createObjectURL(r),(s=document.createElement("a")).href=i,s.download=n,s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(i)}),t().storage.sync.set({downloadScript:!1}))})}),r.appendChild(i),r.appendChild(s),document.body instanceof HTMLFrameSetElement?document.body.after(r):document.body.appendChild(r),this.floatingWindowInserted=!0;var o,a,l,c,m=!1;r.addEventListener("mousedown",e=>{m=!0,o=e.clientX,a=e.clientY,l=r.offsetLeft,c=r.offsetTop}),window.addEventListener("mousemove",e=>{if(m){var t=e.clientX-o,n=e.clientY-a;r.style.left=`${l+t}px`,r.style.top=`${c+n}px`}}),window.addEventListener("mouseup",()=>{if(m&&!r.style.left.includes("%")){var e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,t=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,n=parseInt(r.style.left)/e*100,i=parseInt(r.style.top)/t*100;r.style.left=`${n}%`,r.style.top=`${i}%`,m=!1}else m=!1})}notify(e){var t=this;return z($().m(function n(){var r,i,s,o;return $().w(function(n){for(;;)switch(n.n){case 0:if(r={title:"",message:""},e instanceof T?(r.title="Click",r.message=e.elementLocator.element):e instanceof N?(r.title="Scroll To",r.message=e.elementLocator.element):e instanceof E?(r.title="Send Keys",r.message=`${e.elementLocator.element}: ${e.keys}`):e instanceof O?(r.title="Submit",r.message=`${e.elementLocator.element}`):e instanceof w?(r.title="Launch Browser",r.message=e.browserType):e instanceof C&&(r.title="Switch To Frame",r.message=e.frameIndex.toString()),!t.isNotificationRaised){n.n=1;break}return n.n=1,t.waitForNotificationToClear();case 1:if(i=document.getElementById(h)){n.n=2;break}return console.log("ZAP Floating Div Not Found !"),n.a(2);case 2:t.isNotificationRaised=!0,(s=document.createElement("p")).className=f,s.textContent=`${r.title}: ${r.message}`,s.style.all="initial",s.style.fontSize="20px",s.style.zIndex="999999",s.style.fontFamily="Roboto",o=Array.from(i.children||[]),i.innerHTML="",i.appendChild(s),setTimeout(()=>{i.removeChild(s),o.forEach(e=>i.appendChild(e)),t.isNotificationRaised=!1},1e3);case 3:return n.a(2)}},n)}))()}waitForNotificationToClear(){return new Promise(e=>{var t=setInterval(()=>{this.isNotificationRaised||(clearInterval(t),e(1))},100)})}};function J(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function s(n,r,i,s){var l=r&&r.prototype instanceof a?r:a,c=Object.create(l.prototype);return G(c,"_invoke",function(n,r,i){var s,a,l,c=0,m=i||[],g=!1,d={p:0,n:0,v:e,a:u,f:u.bind(e,4),d:function(t,n){return s=t,a=0,l=e,d.n=n,o}};function u(n,r){for(a=n,l=r,t=0;!g&&c&&!i&&t3?(i=h===r)&&(l=s[(a=s[4])?5:(a=3,3)],s[4]=s[5]=e):s[0]<=u&&((i=n<2&&ur||r>h)&&(s[4]=n,s[5]=r,d.n=h,a=0))}if(i||n>1)return o;throw g=!0,r}return function(i,m,h){if(c>1)throw TypeError("Generator is already running");for(g&&1===m&&u(m,h),a=m,l=h;(t=a<2?e:l)||!g;){s||(a?a<3?(a>1&&(d.n=-1),u(a,l)):d.n=l:d.v=l);try{if(c=2,s){if(a||(i="next"),t=s[i]){if(!(t=t.call(s,l)))throw TypeError("iterator result is not an object");if(!t.done)return t;l=t.value,a<2&&(a=0)}else 1===a&&(t=s.return)&&t.call(s),a<2&&(l=TypeError("The iterator does not provide a '"+i+"' method"),a=1);s=e}else if((t=(g=d.n<0)?l:n.call(r,d))!==o)break}catch(t){s=e,a=1,l=t}finally{c=1}}return{value:t,done:g}}}(n,i,s),!0),c}var o={};function a(){}function l(){}function c(){}t=Object.getPrototypeOf;var m=[][r]?t(t([][r]())):(G(t={},r,function(){return this}),t),g=c.prototype=a.prototype=Object.create(m);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,G(e,i,"GeneratorFunction")),e.prototype=Object.create(g),e}return l.prototype=c,G(g,"constructor",c),G(c,"constructor",l),l.displayName="GeneratorFunction",G(c,i,"GeneratorFunction"),G(g),G(g,i,"Generator"),G(g,r,function(){return this}),G(g,"toString",function(){return"[object Generator]"}),(J=function(){return{w:s,m:d}})()}function G(e,t,n,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}G=function(e,t,n,r){function s(t,n){G(e,t,function(e){return this._invoke(t,n,e)})}t?i?i(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(s("next",0),s("throw",1),s("return",2))},G(e,t,n,r)}function q(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return V(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?V(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){a=!0,s=e},f:function(){try{o||null==n.return||n.return()}finally{if(a)throw s}}}}function V(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{console.log(`ZAP withZapEnableSetting ${t.zapenable}`),t.zapenable&&e()})}function le(){ae(()=>{t().runtime.sendMessage({type:g,data:new o("pageUnload").toString()});for(var e=0,n=Object.values(Q);e{t(new s(e,n))})}function me(e,t){var n=window.location.href;Array.prototype.forEach.call(e.links,e=>{t(new s(e,n))})}function ge(e,t){var n=window.location.href;Array.prototype.forEach.call(e,e=>{t(new s(e,n))})}function de(e,t,n){e.nodeType===Node.ELEMENT_NODE&&ge(e.getElementsByTagName(t),n)}function ue(e,t){e.querySelectorAll("*").forEach(e=>{var n=e.tagName,r=window.location.href;"input"!==n&&"button"!==n&&"a"!==n&&e instanceof Element&&("pointer"===window.getComputedStyle(e,"hover").getPropertyValue("cursor")&&t(new s(e,r)))})}function he(e,n){t().runtime.sendMessage({type:g,data:new o("pageLoad").toString()}),me(e,n),ce(e,n),ge(e.getElementsByTagName("input"),n),ge(e.getElementsByTagName("button"),n),ue(e,n),te(d,localStorage,n),te(u,sessionStorage,n)}var fe=function(e,t){ae(()=>{var t,n;t=new o("domMutation"),(n=Q[t.eventName])?n.url!==window.location.href?(ne(n),n=new o(t.eventName),Q[t.eventName]=t,ne(n)):n.count++:(n=new o(t.eventName),Q[t.eventName]=t,ne(n)),me(document,se),ce(document,se),ue(document,se);var r,i=q(e);try{for(i.s();!(r=i.n()).done;){var s=r.value;"childList"===s.type&&(de(s.target,"input",se),de(s.target,"button",se),s.target.nodeType===Node.ELEMENT_NODE&&ue(s.target,se))}}catch(e){i.e(e)}finally{i.f()}})};function pe(){return window.location.href.startsWith("https://zap/zapCallBackUrl/")}function Ae(){pe()||ae(()=>{he(document,se)})}function ye(){if(pe()){var e=new URLSearchParams(window.location.search),n="true"===localStorage.getItem("localzapenable")||e.has("zapenable"),r="true"===localStorage.getItem("localzaprecord")||e.has("zaprecord");console.log("ZAP Configure",n,r),t().storage.sync.set({zapurl:window.location.href.split("?")[0],zapenable:n,zaprecordingactive:r})}}new Promise(e=>{var n;ye(),n=()=>{t().storage.sync.get({initScript:!1,loginUrl:"",startTime:0}).then(e=>{console.log(`ZAP injectScript items ${e.initScript} ${e.loginUrl}`),ee.recordUserInteractions(!0===e.initScript,e.loginUrl,e.startTime)})},t().storage.sync.get({zaprecordingactive:!1}).then(e=>{console.log(`ZAP withZapRecordingActive ${e.zaprecordingactive}`),e.zaprecordingactive&&n()}),ae(()=>{window.addEventListener("load",Ae,!1),window.onbeforeunload=le,new MutationObserver(fe).observe(document,{attributes:!1,childList:!0,subtree:!0}),setInterval(()=>{oe()},500),he(document,se),e(!0)}),e(!1)}),t().runtime.onMessage.addListener((e,t,n)=>("zapStartRecording"===e.type?(ye(),ee.recordUserInteractions()):"zapStopRecording"===e.type&&ee.stopRecordingUserInteractions(),!0))})()})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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OVYsRUFBTStWLGNBbE5oQi9OLElBQUFBLFFBQWdCL0osS0FBS3JHLElBQUksQ0FBQzZlLG9CQUFvQixJQUFRcFcsS0FBTUwsSUFDMURxQixRQUFRZ1AsSUFBSSw4QkFBOEJyUSxFQUFNeVcsc0JBQzVDelcsRUFBTXlXLG9CQUNSaUcsTUFtTkZnQixHQUFxQixLQXhEdkI1WCxPQUFPNE0saUJBQWlCLE9BQVF3TSxJQUFxQixHQUNyRHBaLE9BQU8wWixlQUFpQjVCLEdBRVAsSUFBSW5LLGlCQUFpQmlMLElBQzdCNUssUUFBUTNNLFNBQVUsQ0FDekI0TSxZQUFZLEVBQ1pZLFdBQVcsRUFDWEMsU0FBUyxJQUdYZ0gsWUFBWSxLQUVWMkIsTUFDQyxLQUdIa0IsR0FBaUJ0WCxTQUFVK1YsSUEwQ3ZCcmMsR0FBUSxLQUVWQSxHQUFRLEtBT1ptSCxJQUFBQSxRQUFnQm5ELFVBQVUvQixZQUN4QixDQUNFbEMsRUFDQTZlLEVBQ0FDLEtMclMrQixzQkt1UzNCOWUsRUFBUWhMLE1BQ1Z1cEIsS0FDQXZRLEdBQVN5SCwwQkwxU21CLHFCSzJTbkJ6VixFQUFRaEwsTUFDakJnWixHQUFTNEgsaUNBSUoiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldFRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVHJpbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19mcmVlR2xvYmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFJhd1RhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vYmplY3RUb1N0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RyaW1tZWRFbmRJbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2RlYm91bmNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdExpa2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvTnVtYmVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy93ZWJleHRlbnNpb24tcG9seWZpbGwvZGlzdC9icm93c2VyLXBvbHlmaWxsLmpzIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly8vLi9zb3VyY2UvdHlwZXMvUmVwb3J0ZWRNb2RlbC50cyIsIndlYnBhY2s6Ly8vLi9zb3VyY2UvdXRpbHMvY29uc3RhbnRzLnRzIiwid2VicGFjazovLy8uL3NvdXJjZS90eXBlcy96ZXN0U2NyaXB0L1plc3RTdGF0ZW1lbnQudHMiLCJ3ZWJwYWNrOi8vLy4vc291cmNlL0NvbnRlbnRTY3JpcHQvdXRpbC50cyIsIndlYnBhY2s6Ly8vLi9zb3VyY2UvQ29udGVudFNjcmlwdC9yZWNvcmRlci50cyIsIndlYnBhY2s6Ly8vLi9zb3VyY2UvdXRpbHMvdXRpbC50cyIsIndlYnBhY2s6Ly8vLi9zb3VyY2UvQ29udGVudFNjcmlwdC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ltYm9sO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGdldFJhd1RhZyA9IHJlcXVpcmUoJy4vX2dldFJhd1RhZycpLFxuICAgIG9iamVjdFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fb2JqZWN0VG9TdHJpbmcnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZpbmVkXSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFsdWUpXG4gICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldFRhZztcbiIsInZhciB0cmltbWVkRW5kSW5kZXggPSByZXF1aXJlKCcuL190cmltbWVkRW5kSW5kZXgnKTtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbVN0YXJ0ID0gL15cXHMrLztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50cmltYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cmltbWVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRyaW0oc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmdcbiAgICA/IHN0cmluZy5zbGljZSgwLCB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSArIDEpLnJlcGxhY2UocmVUcmltU3RhcnQsICcnKVxuICAgIDogc3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUcmltO1xuIiwiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxubW9kdWxlLmV4cG9ydHMgPSBmcmVlR2xvYmFsO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblxuICB0cnkge1xuICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgaWYgKHVubWFza2VkKSB7XG4gICAgaWYgKGlzT3duKSB7XG4gICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UmF3VGFnO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb2JqZWN0VG9TdHJpbmc7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCIvKiogVXNlZCB0byBtYXRjaCBhIHNpbmdsZSB3aGl0ZXNwYWNlIGNoYXJhY3Rlci4gKi9cbnZhciByZVdoaXRlc3BhY2UgPSAvXFxzLztcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlXG4gKiBjaGFyYWN0ZXIgb2YgYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyLlxuICovXG5mdW5jdGlvbiB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSB7XG4gIHZhciBpbmRleCA9IHN0cmluZy5sZW5ndGg7XG5cbiAgd2hpbGUgKGluZGV4LS0gJiYgcmVXaGl0ZXNwYWNlLnRlc3Qoc3RyaW5nLmNoYXJBdChpbmRleCkpKSB7fVxuICByZXR1cm4gaW5kZXg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHJpbW1lZEVuZEluZGV4O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIG5vdyA9IHJlcXVpcmUoJy4vbm93JyksXG4gICAgdG9OdW1iZXIgPSByZXF1aXJlKCcuL3RvTnVtYmVyJyk7XG5cbi8qKiBFcnJvciBtZXNzYWdlIGNvbnN0YW50cy4gKi9cbnZhciBGVU5DX0VSUk9SX1RFWFQgPSAnRXhwZWN0ZWQgYSBmdW5jdGlvbic7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heCxcbiAgICBuYXRpdmVNaW4gPSBNYXRoLm1pbjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZGVib3VuY2VkIGZ1bmN0aW9uIHRoYXQgZGVsYXlzIGludm9raW5nIGBmdW5jYCB1bnRpbCBhZnRlciBgd2FpdGBcbiAqIG1pbGxpc2Vjb25kcyBoYXZlIGVsYXBzZWQgc2luY2UgdGhlIGxhc3QgdGltZSB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHdhc1xuICogaW52b2tlZC4gVGhlIGRlYm91bmNlZCBmdW5jdGlvbiBjb21lcyB3aXRoIGEgYGNhbmNlbGAgbWV0aG9kIHRvIGNhbmNlbFxuICogZGVsYXllZCBgZnVuY2AgaW52b2NhdGlvbnMgYW5kIGEgYGZsdXNoYCBtZXRob2QgdG8gaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uXG4gKiBQcm92aWRlIGBvcHRpb25zYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGBmdW5jYCBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGVcbiAqIGxlYWRpbmcgYW5kL29yIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIGB3YWl0YCB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWRcbiAqIHdpdGggdGhlIGxhc3QgYXJndW1lbnRzIHByb3ZpZGVkIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnRcbiAqIGNhbGxzIHRvIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgXG4gKiBpbnZvY2F0aW9uLlxuICpcbiAqICoqTm90ZToqKiBJZiBgbGVhZGluZ2AgYW5kIGB0cmFpbGluZ2Agb3B0aW9ucyBhcmUgYHRydWVgLCBgZnVuY2AgaXNcbiAqIGludm9rZWQgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uXG4gKiBpcyBpbnZva2VkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgYHdhaXRgIHRpbWVvdXQuXG4gKlxuICogSWYgYHdhaXRgIGlzIGAwYCBhbmQgYGxlYWRpbmdgIGlzIGBmYWxzZWAsIGBmdW5jYCBpbnZvY2F0aW9uIGlzIGRlZmVycmVkXG4gKiB1bnRpbCB0byB0aGUgbmV4dCB0aWNrLCBzaW1pbGFyIHRvIGBzZXRUaW1lb3V0YCB3aXRoIGEgdGltZW91dCBvZiBgMGAuXG4gKlxuICogU2VlIFtEYXZpZCBDb3JiYWNobydzIGFydGljbGVdKGh0dHBzOi8vY3NzLXRyaWNrcy5jb20vZGVib3VuY2luZy10aHJvdHRsaW5nLWV4cGxhaW5lZC1leGFtcGxlcy8pXG4gKiBmb3IgZGV0YWlscyBvdmVyIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGBfLmRlYm91bmNlYCBhbmQgYF8udGhyb3R0bGVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBGdW5jdGlvblxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gZGVib3VuY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3dhaXQ9MF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29wdGlvbnM9e31dIFRoZSBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMubGVhZGluZz1mYWxzZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4V2FpdF1cbiAqICBUaGUgbWF4aW11bSB0aW1lIGBmdW5jYCBpcyBhbGxvd2VkIHRvIGJlIGRlbGF5ZWQgYmVmb3JlIGl0J3MgaW52b2tlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW29wdGlvbnMudHJhaWxpbmc9dHJ1ZV1cbiAqICBTcGVjaWZ5IGludm9raW5nIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZGVib3VuY2VkIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCBjb3N0bHkgY2FsY3VsYXRpb25zIHdoaWxlIHRoZSB3aW5kb3cgc2l6ZSBpcyBpbiBmbHV4LlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3Jlc2l6ZScsIF8uZGVib3VuY2UoY2FsY3VsYXRlTGF5b3V0LCAxNTApKTtcbiAqXG4gKiAvLyBJbnZva2UgYHNlbmRNYWlsYCB3aGVuIGNsaWNrZWQsIGRlYm91bmNpbmcgc3Vic2VxdWVudCBjYWxscy5cbiAqIGpRdWVyeShlbGVtZW50KS5vbignY2xpY2snLCBfLmRlYm91bmNlKHNlbmRNYWlsLCAzMDAsIHtcbiAqICAgJ2xlYWRpbmcnOiB0cnVlLFxuICogICAndHJhaWxpbmcnOiBmYWxzZVxuICogfSkpO1xuICpcbiAqIC8vIEVuc3VyZSBgYmF0Y2hMb2dgIGlzIGludm9rZWQgb25jZSBhZnRlciAxIHNlY29uZCBvZiBkZWJvdW5jZWQgY2FsbHMuXG4gKiB2YXIgZGVib3VuY2VkID0gXy5kZWJvdW5jZShiYXRjaExvZywgMjUwLCB7ICdtYXhXYWl0JzogMTAwMCB9KTtcbiAqIHZhciBzb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2UoJy9zdHJlYW0nKTtcbiAqIGpRdWVyeShzb3VyY2UpLm9uKCdtZXNzYWdlJywgZGVib3VuY2VkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIGRlYm91bmNlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgZGVib3VuY2VkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIGRlYm91bmNlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxhc3RBcmdzLFxuICAgICAgbGFzdFRoaXMsXG4gICAgICBtYXhXYWl0LFxuICAgICAgcmVzdWx0LFxuICAgICAgdGltZXJJZCxcbiAgICAgIGxhc3RDYWxsVGltZSxcbiAgICAgIGxhc3RJbnZva2VUaW1lID0gMCxcbiAgICAgIGxlYWRpbmcgPSBmYWxzZSxcbiAgICAgIG1heGluZyA9IGZhbHNlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIHdhaXQgPSB0b051bWJlcih3YWl0KSB8fCAwO1xuICBpZiAoaXNPYmplY3Qob3B0aW9ucykpIHtcbiAgICBsZWFkaW5nID0gISFvcHRpb25zLmxlYWRpbmc7XG4gICAgbWF4aW5nID0gJ21heFdhaXQnIGluIG9wdGlvbnM7XG4gICAgbWF4V2FpdCA9IG1heGluZyA/IG5hdGl2ZU1heCh0b051bWJlcihvcHRpb25zLm1heFdhaXQpIHx8IDAsIHdhaXQpIDogbWF4V2FpdDtcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gaW52b2tlRnVuYyh0aW1lKSB7XG4gICAgdmFyIGFyZ3MgPSBsYXN0QXJncyxcbiAgICAgICAgdGhpc0FyZyA9IGxhc3RUaGlzO1xuXG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgcmVzdWx0ID0gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gbGVhZGluZ0VkZ2UodGltZSkge1xuICAgIC8vIFJlc2V0IGFueSBgbWF4V2FpdGAgdGltZXIuXG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIC8vIFN0YXJ0IHRoZSB0aW1lciBmb3IgdGhlIHRyYWlsaW5nIGVkZ2UuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAvLyBJbnZva2UgdGhlIGxlYWRpbmcgZWRnZS5cbiAgICByZXR1cm4gbGVhZGluZyA/IGludm9rZUZ1bmModGltZSkgOiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiByZW1haW5pbmdXYWl0KHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lLFxuICAgICAgICB0aW1lV2FpdGluZyA9IHdhaXQgLSB0aW1lU2luY2VMYXN0Q2FsbDtcblxuICAgIHJldHVybiBtYXhpbmdcbiAgICAgID8gbmF0aXZlTWluKHRpbWVXYWl0aW5nLCBtYXhXYWl0IC0gdGltZVNpbmNlTGFzdEludm9rZSlcbiAgICAgIDogdGltZVdhaXRpbmc7XG4gIH1cblxuICBmdW5jdGlvbiBzaG91bGRJbnZva2UodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWU7XG5cbiAgICAvLyBFaXRoZXIgdGhpcyBpcyB0aGUgZmlyc3QgY2FsbCwgYWN0aXZpdHkgaGFzIHN0b3BwZWQgYW5kIHdlJ3JlIGF0IHRoZVxuICAgIC8vIHRyYWlsaW5nIGVkZ2UsIHRoZSBzeXN0ZW0gdGltZSBoYXMgZ29uZSBiYWNrd2FyZHMgYW5kIHdlJ3JlIHRyZWF0aW5nXG4gICAgLy8gaXQgYXMgdGhlIHRyYWlsaW5nIGVkZ2UsIG9yIHdlJ3ZlIGhpdCB0aGUgYG1heFdhaXRgIGxpbWl0LlxuICAgIHJldHVybiAobGFzdENhbGxUaW1lID09PSB1bmRlZmluZWQgfHwgKHRpbWVTaW5jZUxhc3RDYWxsID49IHdhaXQpIHx8XG4gICAgICAodGltZVNpbmNlTGFzdENhbGwgPCAwKSB8fCAobWF4aW5nICYmIHRpbWVTaW5jZUxhc3RJbnZva2UgPj0gbWF4V2FpdCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdGltZXJFeHBpcmVkKCkge1xuICAgIHZhciB0aW1lID0gbm93KCk7XG4gICAgaWYgKHNob3VsZEludm9rZSh0aW1lKSkge1xuICAgICAgcmV0dXJuIHRyYWlsaW5nRWRnZSh0aW1lKTtcbiAgICB9XG4gICAgLy8gUmVzdGFydCB0aGUgdGltZXIuXG4gICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCByZW1haW5pbmdXYWl0KHRpbWUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRyYWlsaW5nRWRnZSh0aW1lKSB7XG4gICAgdGltZXJJZCA9IHVuZGVmaW5lZDtcblxuICAgIC8vIE9ubHkgaW52b2tlIGlmIHdlIGhhdmUgYGxhc3RBcmdzYCB3aGljaCBtZWFucyBgZnVuY2AgaGFzIGJlZW5cbiAgICAvLyBkZWJvdW5jZWQgYXQgbGVhc3Qgb25jZS5cbiAgICBpZiAodHJhaWxpbmcgJiYgbGFzdEFyZ3MpIHtcbiAgICAgIHJldHVybiBpbnZva2VGdW5jKHRpbWUpO1xuICAgIH1cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBjYW5jZWwoKSB7XG4gICAgaWYgKHRpbWVySWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgIH1cbiAgICBsYXN0SW52b2tlVGltZSA9IDA7XG4gICAgbGFzdEFyZ3MgPSBsYXN0Q2FsbFRpbWUgPSBsYXN0VGhpcyA9IHRpbWVySWQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICByZXR1cm4gdGltZXJJZCA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogdHJhaWxpbmdFZGdlKG5vdygpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlYm91bmNlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpLFxuICAgICAgICBpc0ludm9raW5nID0gc2hvdWxkSW52b2tlKHRpbWUpO1xuXG4gICAgbGFzdEFyZ3MgPSBhcmd1bWVudHM7XG4gICAgbGFzdFRoaXMgPSB0aGlzO1xuICAgIGxhc3RDYWxsVGltZSA9IHRpbWU7XG5cbiAgICBpZiAoaXNJbnZva2luZykge1xuICAgICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gbGVhZGluZ0VkZ2UobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICAgIGlmIChtYXhpbmcpIHtcbiAgICAgICAgLy8gSGFuZGxlIGludm9jYXRpb25zIGluIGEgdGlnaHQgbG9vcC5cbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVySWQpO1xuICAgICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgICAgICByZXR1cm4gaW52b2tlRnVuYyhsYXN0Q2FsbFRpbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGRlYm91bmNlZC5jYW5jZWwgPSBjYW5jZWw7XG4gIGRlYm91bmNlZC5mbHVzaCA9IGZsdXNoO1xuICByZXR1cm4gZGVib3VuY2VkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRlYm91bmNlO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3Q7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxuICogYW5kIGhhcyBhIGB0eXBlb2ZgIHJlc3VsdCBvZiBcIm9iamVjdFwiLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNTeW1ib2w7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSB0aW1lc3RhbXAgb2YgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdGhhdCBoYXZlIGVsYXBzZWQgc2luY2VcbiAqIHRoZSBVbml4IGVwb2NoICgxIEphbnVhcnkgMTk3MCAwMDowMDowMCBVVEMpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBEYXRlXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSB0aW1lc3RhbXAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uZGVmZXIoZnVuY3Rpb24oc3RhbXApIHtcbiAqICAgY29uc29sZS5sb2coXy5ub3coKSAtIHN0YW1wKTtcbiAqIH0sIF8ubm93KCkpO1xuICogLy8gPT4gTG9ncyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpdCB0b29rIGZvciB0aGUgZGVmZXJyZWQgaW52b2NhdGlvbi5cbiAqL1xudmFyIG5vdyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcm9vdC5EYXRlLm5vdygpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBub3c7XG4iLCJ2YXIgYmFzZVRyaW0gPSByZXF1aXJlKCcuL19iYXNlVHJpbScpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4vKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xudmFyIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gYmFzZVRyaW0odmFsdWUpO1xuICB2YXIgaXNCaW5hcnkgPSByZUlzQmluYXJ5LnRlc3QodmFsdWUpO1xuICByZXR1cm4gKGlzQmluYXJ5IHx8IHJlSXNPY3RhbC50ZXN0KHZhbHVlKSlcbiAgICA/IGZyZWVQYXJzZUludCh2YWx1ZS5zbGljZSgyKSwgaXNCaW5hcnkgPyAyIDogOClcbiAgICA6IChyZUlzQmFkSGV4LnRlc3QodmFsdWUpID8gTkFOIDogK3ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b051bWJlcjtcbiIsIihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG4gIGlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xuICAgIGRlZmluZShcIndlYmV4dGVuc2lvbi1wb2x5ZmlsbFwiLCBbXCJtb2R1bGVcIl0sIGZhY3RvcnkpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgZmFjdG9yeShtb2R1bGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBtb2QgPSB7XG4gICAgICBleHBvcnRzOiB7fVxuICAgIH07XG4gICAgZmFjdG9yeShtb2QpO1xuICAgIGdsb2JhbC5icm93c2VyID0gbW9kLmV4cG9ydHM7XG4gIH1cbn0pKHR5cGVvZiBnbG9iYWxUaGlzICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsVGhpcyA6IHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiID8gc2VsZiA6IHRoaXMsIGZ1bmN0aW9uIChtb2R1bGUpIHtcbiAgLyogd2ViZXh0ZW5zaW9uLXBvbHlmaWxsIC0gdjAuMTIuMCAtIFR1ZSBNYXkgMTQgMjAyNCAxODowMToyOSAqL1xuICAvKiAtKi0gTW9kZTogaW5kZW50LXRhYnMtbW9kZTogbmlsOyBqcy1pbmRlbnQtbGV2ZWw6IDIgLSotICovXG4gIC8qIHZpbTogc2V0IHN0cz0yIHN3PTIgZXQgdHc9ODA6ICovXG4gIC8qIFRoaXMgU291cmNlIENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWNcbiAgICogTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpc1xuICAgKiBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLiAqL1xuICBcInVzZSBzdHJpY3RcIjtcblxuICBpZiAoIShnbG9iYWxUaGlzLmNocm9tZSAmJiBnbG9iYWxUaGlzLmNocm9tZS5ydW50aW1lICYmIGdsb2JhbFRoaXMuY2hyb21lLnJ1bnRpbWUuaWQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBzY3JpcHQgc2hvdWxkIG9ubHkgYmUgbG9hZGVkIGluIGEgYnJvd3NlciBleHRlbnNpb24uXCIpO1xuICB9XG4gIGlmICghKGdsb2JhbFRoaXMuYnJvd3NlciAmJiBnbG9iYWxUaGlzLmJyb3dzZXIucnVudGltZSAmJiBnbG9iYWxUaGlzLmJyb3dzZXIucnVudGltZS5pZCkpIHtcbiAgICBjb25zdCBDSFJPTUVfU0VORF9NRVNTQUdFX0NBTExCQUNLX05PX1JFU1BPTlNFX01FU1NBR0UgPSBcIlRoZSBtZXNzYWdlIHBvcnQgY2xvc2VkIGJlZm9yZSBhIHJlc3BvbnNlIHdhcyByZWNlaXZlZC5cIjtcblxuICAgIC8vIFdyYXBwaW5nIHRoZSBidWxrIG9mIHRoaXMgcG9seWZpbGwgaW4gYSBvbmUtdGltZS11c2UgZnVuY3Rpb24gaXMgYSBtaW5vclxuICAgIC8vIG9wdGltaXphdGlvbiBmb3IgRmlyZWZveC4gU2luY2UgU3BpZGVybW9ua2V5IGRvZXMgbm90IGZ1bGx5IHBhcnNlIHRoZVxuICAgIC8vIGNvbnRlbnRzIG9mIGEgZnVuY3Rpb24gdW50aWwgdGhlIGZpcnN0IHRpbWUgaXQncyBjYWxsZWQsIGFuZCBzaW5jZSBpdCB3aWxsXG4gICAgLy8gbmV2ZXIgYWN0dWFsbHkgbmVlZCB0byBiZSBjYWxsZWQsIHRoaXMgYWxsb3dzIHRoZSBwb2x5ZmlsbCB0byBiZSBpbmNsdWRlZFxuICAgIC8vIGluIEZpcmVmb3ggbmVhcmx5IGZvciBmcmVlLlxuICAgIGNvbnN0IHdyYXBBUElzID0gZXh0ZW5zaW9uQVBJcyA9PiB7XG4gICAgICAvLyBOT1RFOiBhcGlNZXRhZGF0YSBpcyBhc3NvY2lhdGVkIHRvIHRoZSBjb250ZW50IG9mIHRoZSBhcGktbWV0YWRhdGEuanNvbiBmaWxlXG4gICAgICAvLyBhdCBidWlsZCB0aW1lIGJ5IHJlcGxhY2luZyB0aGUgZm9sbG93aW5nIFwiaW5jbHVkZVwiIHdpdGggdGhlIGNvbnRlbnQgb2YgdGhlXG4gICAgICAvLyBKU09OIGZpbGUuXG4gICAgICBjb25zdCBhcGlNZXRhZGF0YSA9IHtcbiAgICAgICAgXCJhbGFybXNcIjoge1xuICAgICAgICAgIFwiY2xlYXJcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJjbGVhckFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImJvb2ttYXJrc1wiOiB7XG4gICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRDaGlsZHJlblwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFJlY2VudFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFN1YlRyZWVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRUcmVlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwibW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVRyZWVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZWFyY2hcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJicm93c2VyQWN0aW9uXCI6IHtcbiAgICAgICAgICBcImRpc2FibGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJlbmFibGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRCYWRnZUJhY2tncm91bmRDb2xvclwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEJhZGdlVGV4dFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFBvcHVwXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0VGl0bGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJvcGVuUG9wdXBcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRCYWRnZUJhY2tncm91bmRDb2xvclwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldEJhZGdlVGV4dFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldEljb25cIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRQb3B1cFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFRpdGxlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiYnJvd3NpbmdEYXRhXCI6IHtcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZUNhY2hlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlQ29va2llc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZURvd25sb2Fkc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZUZvcm1EYXRhXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlSGlzdG9yeVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZUxvY2FsU3RvcmFnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVBhc3N3b3Jkc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVBsdWdpbkRhdGFcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXR0aW5nc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImNvbW1hbmRzXCI6IHtcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImNvbnRleHRNZW51c1wiOiB7XG4gICAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJjb29raWVzXCI6IHtcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbENvb2tpZVN0b3Jlc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImRldnRvb2xzXCI6IHtcbiAgICAgICAgICBcImluc3BlY3RlZFdpbmRvd1wiOiB7XG4gICAgICAgICAgICBcImV2YWxcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDIsXG4gICAgICAgICAgICAgIFwic2luZ2xlQ2FsbGJhY2tBcmdcIjogZmFsc2VcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicGFuZWxzXCI6IHtcbiAgICAgICAgICAgIFwiY3JlYXRlXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDMsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAzLFxuICAgICAgICAgICAgICBcInNpbmdsZUNhbGxiYWNrQXJnXCI6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImVsZW1lbnRzXCI6IHtcbiAgICAgICAgICAgICAgXCJjcmVhdGVTaWRlYmFyUGFuZVwiOiB7XG4gICAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJkb3dubG9hZHNcIjoge1xuICAgICAgICAgIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZG93bmxvYWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJlcmFzZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEZpbGVJY29uXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwib3BlblwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInBhdXNlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlRmlsZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlc3VtZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNlYXJjaFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNob3dcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJleHRlbnNpb25cIjoge1xuICAgICAgICAgIFwiaXNBbGxvd2VkRmlsZVNjaGVtZUFjY2Vzc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImlzQWxsb3dlZEluY29nbml0b0FjY2Vzc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImhpc3RvcnlcIjoge1xuICAgICAgICAgIFwiYWRkVXJsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZGVsZXRlQWxsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZGVsZXRlUmFuZ2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkZWxldGVVcmxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRWaXNpdHNcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZWFyY2hcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJpMThuXCI6IHtcbiAgICAgICAgICBcImRldGVjdExhbmd1YWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0QWNjZXB0TGFuZ3VhZ2VzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiaWRlbnRpdHlcIjoge1xuICAgICAgICAgIFwibGF1bmNoV2ViQXV0aEZsb3dcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJpZGxlXCI6IHtcbiAgICAgICAgICBcInF1ZXJ5U3RhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJtYW5hZ2VtZW50XCI6IHtcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFNlbGZcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRFbmFibGVkXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwidW5pbnN0YWxsU2VsZlwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIm5vdGlmaWNhdGlvbnNcIjoge1xuICAgICAgICAgIFwiY2xlYXJcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRQZXJtaXNzaW9uTGV2ZWxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJwYWdlQWN0aW9uXCI6IHtcbiAgICAgICAgICBcImdldFBvcHVwXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0VGl0bGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJoaWRlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0SWNvblwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFBvcHVwXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0VGl0bGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzaG93XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwicGVybWlzc2lvbnNcIjoge1xuICAgICAgICAgIFwiY29udGFpbnNcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZXF1ZXN0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwicnVudGltZVwiOiB7XG4gICAgICAgICAgXCJnZXRCYWNrZ3JvdW5kUGFnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFBsYXRmb3JtSW5mb1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm9wZW5PcHRpb25zUGFnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlcXVlc3RVcGRhdGVDaGVja1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNlbmRNZXNzYWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDNcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2VuZE5hdGl2ZU1lc3NhZ2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRVbmluc3RhbGxVUkxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzZXNzaW9uc1wiOiB7XG4gICAgICAgICAgXCJnZXREZXZpY2VzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0UmVjZW50bHlDbG9zZWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZXN0b3JlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwic3RvcmFnZVwiOiB7XG4gICAgICAgICAgXCJsb2NhbFwiOiB7XG4gICAgICAgICAgICBcImNsZWFyXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImdldEJ5dGVzSW5Vc2VcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic2V0XCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm1hbmFnZWRcIjoge1xuICAgICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImdldEJ5dGVzSW5Vc2VcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic3luY1wiOiB7XG4gICAgICAgICAgICBcImNsZWFyXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImdldEJ5dGVzSW5Vc2VcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic2V0XCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInRhYnNcIjoge1xuICAgICAgICAgIFwiY2FwdHVyZVZpc2libGVUYWJcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkZXRlY3RMYW5ndWFnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImRpc2NhcmRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkdXBsaWNhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJleGVjdXRlU2NyaXB0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0Q3VycmVudFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFpvb21cIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRab29tU2V0dGluZ3NcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnb0JhY2tcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnb0ZvcndhcmRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJoaWdobGlnaHRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJpbnNlcnRDU1NcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJtb3ZlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicXVlcnlcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZWxvYWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVDU1NcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZW5kTWVzc2FnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAzXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFpvb21cIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRab29tU2V0dGluZ3NcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ0b3BTaXRlc1wiOiB7XG4gICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ3ZWJOYXZpZ2F0aW9uXCI6IHtcbiAgICAgICAgICBcImdldEFsbEZyYW1lc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEZyYW1lXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwid2ViUmVxdWVzdFwiOiB7XG4gICAgICAgICAgXCJoYW5kbGVyQmVoYXZpb3JDaGFuZ2VkXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwid2luZG93c1wiOiB7XG4gICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRDdXJyZW50XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0TGFzdEZvY3VzZWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1cGRhdGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyhhcGlNZXRhZGF0YSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImFwaS1tZXRhZGF0YS5qc29uIGhhcyBub3QgYmVlbiBpbmNsdWRlZCBpbiBicm93c2VyLXBvbHlmaWxsXCIpO1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIEEgV2Vha01hcCBzdWJjbGFzcyB3aGljaCBjcmVhdGVzIGFuZCBzdG9yZXMgYSB2YWx1ZSBmb3IgYW55IGtleSB3aGljaCBkb2VzXG4gICAgICAgKiBub3QgZXhpc3Qgd2hlbiBhY2Nlc3NlZCwgYnV0IGJlaGF2ZXMgZXhhY3RseSBhcyBhbiBvcmRpbmFyeSBXZWFrTWFwXG4gICAgICAgKiBvdGhlcndpc2UuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gY3JlYXRlSXRlbVxuICAgICAgICogICAgICAgIEEgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjYWxsZWQgaW4gb3JkZXIgdG8gY3JlYXRlIHRoZSB2YWx1ZSBmb3IgYW55XG4gICAgICAgKiAgICAgICAga2V5IHdoaWNoIGRvZXMgbm90IGV4aXN0LCB0aGUgZmlyc3QgdGltZSBpdCBpcyBhY2Nlc3NlZC4gVGhlXG4gICAgICAgKiAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZXMsIGFzIGl0cyBvbmx5IGFyZ3VtZW50LCB0aGUga2V5IGJlaW5nIGNyZWF0ZWQuXG4gICAgICAgKi9cbiAgICAgIGNsYXNzIERlZmF1bHRXZWFrTWFwIGV4dGVuZHMgV2Vha01hcCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKGNyZWF0ZUl0ZW0sIGl0ZW1zID0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc3VwZXIoaXRlbXMpO1xuICAgICAgICAgIHRoaXMuY3JlYXRlSXRlbSA9IGNyZWF0ZUl0ZW07XG4gICAgICAgIH1cbiAgICAgICAgZ2V0KGtleSkge1xuICAgICAgICAgIGlmICghdGhpcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgdGhpcy5zZXQoa2V5LCB0aGlzLmNyZWF0ZUl0ZW0oa2V5KSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBzdXBlci5nZXQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGFuIG9iamVjdCB3aXRoIGEgYHRoZW5gIG1ldGhvZCwgYW5kIGNhblxuICAgICAgICogdGhlcmVmb3JlIGJlIGFzc3VtZWQgdG8gYmVoYXZlIGFzIGEgUHJvbWlzZS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byB0ZXN0LlxuICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIHZhbHVlIGlzIHRoZW5hYmxlLlxuICAgICAgICovXG4gICAgICBjb25zdCBpc1RoZW5hYmxlID0gdmFsdWUgPT4ge1xuICAgICAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiB2YWx1ZS50aGVuID09PSBcImZ1bmN0aW9uXCI7XG4gICAgICB9O1xuXG4gICAgICAvKipcbiAgICAgICAqIENyZWF0ZXMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aGljaCwgd2hlbiBjYWxsZWQsIHdpbGwgcmVzb2x2ZSBvciByZWplY3RcbiAgICAgICAqIHRoZSBnaXZlbiBwcm9taXNlIGJhc2VkIG9uIGhvdyBpdCBpcyBjYWxsZWQ6XG4gICAgICAgKlxuICAgICAgICogLSBJZiwgd2hlbiBjYWxsZWQsIGBjaHJvbWUucnVudGltZS5sYXN0RXJyb3JgIGNvbnRhaW5zIGEgbm9uLW51bGwgb2JqZWN0LFxuICAgICAgICogICB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCB3aXRoIHRoYXQgdmFsdWUuXG4gICAgICAgKiAtIElmIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBleGFjdGx5IG9uZSBhcmd1bWVudCwgdGhlIHByb21pc2UgaXNcbiAgICAgICAqICAgcmVzb2x2ZWQgdG8gdGhhdCB2YWx1ZS5cbiAgICAgICAqIC0gT3RoZXJ3aXNlLCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCB0byBhbiBhcnJheSBjb250YWluaW5nIGFsbCBvZiB0aGVcbiAgICAgICAqICAgZnVuY3Rpb24ncyBhcmd1bWVudHMuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IHByb21pc2VcbiAgICAgICAqICAgICAgICBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzb2x1dGlvbiBhbmQgcmVqZWN0aW9uIGZ1bmN0aW9ucyBvZiBhXG4gICAgICAgKiAgICAgICAgcHJvbWlzZS5cbiAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb21pc2UucmVzb2x2ZVxuICAgICAgICogICAgICAgIFRoZSBwcm9taXNlJ3MgcmVzb2x1dGlvbiBmdW5jdGlvbi5cbiAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IHByb21pc2UucmVqZWN0XG4gICAgICAgKiAgICAgICAgVGhlIHByb21pc2UncyByZWplY3Rpb24gZnVuY3Rpb24uXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gbWV0YWRhdGFcbiAgICAgICAqICAgICAgICBNZXRhZGF0YSBhYm91dCB0aGUgd3JhcHBlZCBtZXRob2Qgd2hpY2ggaGFzIGNyZWF0ZWQgdGhlIGNhbGxiYWNrLlxuICAgICAgICogQHBhcmFtIHtib29sZWFufSBtZXRhZGF0YS5zaW5nbGVDYWxsYmFja0FyZ1xuICAgICAgICogICAgICAgIFdoZXRoZXIgb3Igbm90IHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHdpdGggb25seSB0aGUgZmlyc3RcbiAgICAgICAqICAgICAgICBhcmd1bWVudCBvZiB0aGUgY2FsbGJhY2ssIGFsdGVybmF0aXZlbHkgYW4gYXJyYXkgb2YgYWxsIHRoZVxuICAgICAgICogICAgICAgIGNhbGxiYWNrIGFyZ3VtZW50cyBpcyByZXNvbHZlZC4gQnkgZGVmYXVsdCwgaWYgdGhlIGNhbGxiYWNrXG4gICAgICAgKiAgICAgICAgZnVuY3Rpb24gaXMgaW52b2tlZCB3aXRoIG9ubHkgYSBzaW5nbGUgYXJndW1lbnQsIHRoYXQgd2lsbCBiZVxuICAgICAgICogICAgICAgIHJlc29sdmVkIHRvIHRoZSBwcm9taXNlLCB3aGlsZSBhbGwgYXJndW1lbnRzIHdpbGwgYmUgcmVzb2x2ZWQgYXNcbiAgICAgICAqICAgICAgICBhbiBhcnJheSBpZiBtdWx0aXBsZSBhcmUgZ2l2ZW4uXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge2Z1bmN0aW9ufVxuICAgICAgICogICAgICAgIFRoZSBnZW5lcmF0ZWQgY2FsbGJhY2sgZnVuY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IG1ha2VDYWxsYmFjayA9IChwcm9taXNlLCBtZXRhZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gKC4uLmNhbGxiYWNrQXJncykgPT4ge1xuICAgICAgICAgIGlmIChleHRlbnNpb25BUElzLnJ1bnRpbWUubGFzdEVycm9yKSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlamVjdChuZXcgRXJyb3IoZXh0ZW5zaW9uQVBJcy5ydW50aW1lLmxhc3RFcnJvci5tZXNzYWdlKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS5zaW5nbGVDYWxsYmFja0FyZyB8fCBjYWxsYmFja0FyZ3MubGVuZ3RoIDw9IDEgJiYgbWV0YWRhdGEuc2luZ2xlQ2FsbGJhY2tBcmcgIT09IGZhbHNlKSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FsbGJhY2tBcmdzWzBdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrQXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHBsdXJhbGl6ZUFyZ3VtZW50cyA9IG51bUFyZ3MgPT4gbnVtQXJncyA9PSAxID8gXCJhcmd1bWVudFwiIDogXCJhcmd1bWVudHNcIjtcblxuICAgICAgLyoqXG4gICAgICAgKiBDcmVhdGVzIGEgd3JhcHBlciBmdW5jdGlvbiBmb3IgYSBtZXRob2Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbmQgbWV0YWRhdGEuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgICAqICAgICAgICBUaGUgbmFtZSBvZiB0aGUgbWV0aG9kIHdoaWNoIGlzIGJlaW5nIHdyYXBwZWQuXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gbWV0YWRhdGFcbiAgICAgICAqICAgICAgICBNZXRhZGF0YSBhYm91dCB0aGUgbWV0aG9kIGJlaW5nIHdyYXBwZWQuXG4gICAgICAgKiBAcGFyYW0ge2ludGVnZXJ9IG1ldGFkYXRhLm1pbkFyZ3NcbiAgICAgICAqICAgICAgICBUaGUgbWluaW11bSBudW1iZXIgb2YgYXJndW1lbnRzIHdoaWNoIG11c3QgYmUgcGFzc2VkIHRvIHRoZVxuICAgICAgICogICAgICAgIGZ1bmN0aW9uLiBJZiBjYWxsZWQgd2l0aCBmZXdlciB0aGFuIHRoaXMgbnVtYmVyIG9mIGFyZ3VtZW50cywgdGhlXG4gICAgICAgKiAgICAgICAgd3JhcHBlciB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi5cbiAgICAgICAqIEBwYXJhbSB7aW50ZWdlcn0gbWV0YWRhdGEubWF4QXJnc1xuICAgICAgICogICAgICAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhcmd1bWVudHMgd2hpY2ggbWF5IGJlIHBhc3NlZCB0byB0aGVcbiAgICAgICAqICAgICAgICBmdW5jdGlvbi4gSWYgY2FsbGVkIHdpdGggbW9yZSB0aGFuIHRoaXMgbnVtYmVyIG9mIGFyZ3VtZW50cywgdGhlXG4gICAgICAgKiAgICAgICAgd3JhcHBlciB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbi5cbiAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gbWV0YWRhdGEuc2luZ2xlQ2FsbGJhY2tBcmdcbiAgICAgICAqICAgICAgICBXaGV0aGVyIG9yIG5vdCB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZCB3aXRoIG9ubHkgdGhlIGZpcnN0XG4gICAgICAgKiAgICAgICAgYXJndW1lbnQgb2YgdGhlIGNhbGxiYWNrLCBhbHRlcm5hdGl2ZWx5IGFuIGFycmF5IG9mIGFsbCB0aGVcbiAgICAgICAqICAgICAgICBjYWxsYmFjayBhcmd1bWVudHMgaXMgcmVzb2x2ZWQuIEJ5IGRlZmF1bHQsIGlmIHRoZSBjYWxsYmFja1xuICAgICAgICogICAgICAgIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCBvbmx5IGEgc2luZ2xlIGFyZ3VtZW50LCB0aGF0IHdpbGwgYmVcbiAgICAgICAqICAgICAgICByZXNvbHZlZCB0byB0aGUgcHJvbWlzZSwgd2hpbGUgYWxsIGFyZ3VtZW50cyB3aWxsIGJlIHJlc29sdmVkIGFzXG4gICAgICAgKiAgICAgICAgYW4gYXJyYXkgaWYgbXVsdGlwbGUgYXJlIGdpdmVuLlxuICAgICAgICpcbiAgICAgICAqIEByZXR1cm5zIHtmdW5jdGlvbihvYmplY3QsIC4uLiopfVxuICAgICAgICogICAgICAgVGhlIGdlbmVyYXRlZCB3cmFwcGVyIGZ1bmN0aW9uLlxuICAgICAgICovXG4gICAgICBjb25zdCB3cmFwQXN5bmNGdW5jdGlvbiA9IChuYW1lLCBtZXRhZGF0YSkgPT4ge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gYXN5bmNGdW5jdGlvbldyYXBwZXIodGFyZ2V0LCAuLi5hcmdzKSB7XG4gICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgbWV0YWRhdGEubWluQXJncykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhdCBsZWFzdCAke21ldGFkYXRhLm1pbkFyZ3N9ICR7cGx1cmFsaXplQXJndW1lbnRzKG1ldGFkYXRhLm1pbkFyZ3MpfSBmb3IgJHtuYW1lfSgpLCBnb3QgJHthcmdzLmxlbmd0aH1gKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gbWV0YWRhdGEubWF4QXJncykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhdCBtb3N0ICR7bWV0YWRhdGEubWF4QXJnc30gJHtwbHVyYWxpemVBcmd1bWVudHMobWV0YWRhdGEubWF4QXJncyl9IGZvciAke25hbWV9KCksIGdvdCAke2FyZ3MubGVuZ3RofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKG1ldGFkYXRhLmZhbGxiYWNrVG9Ob0NhbGxiYWNrKSB7XG4gICAgICAgICAgICAgIC8vIFRoaXMgQVBJIG1ldGhvZCBoYXMgY3VycmVudGx5IG5vIGNhbGxiYWNrIG9uIENocm9tZSwgYnV0IGl0IHJldHVybiBhIHByb21pc2Ugb24gRmlyZWZveCxcbiAgICAgICAgICAgICAgLy8gYW5kIHNvIHRoZSBwb2x5ZmlsbCB3aWxsIHRyeSB0byBjYWxsIGl0IHdpdGggYSBjYWxsYmFjayBmaXJzdCwgYW5kIGl0IHdpbGwgZmFsbGJhY2tcbiAgICAgICAgICAgICAgLy8gdG8gbm90IHBhc3NpbmcgdGhlIGNhbGxiYWNrIGlmIHRoZSBmaXJzdCBjYWxsIGZhaWxzLlxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtuYW1lXSguLi5hcmdzLCBtYWtlQ2FsbGJhY2soe1xuICAgICAgICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgICAgICAgIH0sIG1ldGFkYXRhKSk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGNiRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYCR7bmFtZX0gQVBJIG1ldGhvZCBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCB0aGUgY2FsbGJhY2sgcGFyYW1ldGVyLCBgICsgXCJmYWxsaW5nIGJhY2sgdG8gY2FsbCBpdCB3aXRob3V0IGEgY2FsbGJhY2s6IFwiLCBjYkVycm9yKTtcbiAgICAgICAgICAgICAgICB0YXJnZXRbbmFtZV0oLi4uYXJncyk7XG5cbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIEFQSSBtZXRob2QgbWV0YWRhdGEsIHNvIHRoYXQgdGhlIG5leHQgQVBJIGNhbGxzIHdpbGwgbm90IHRyeSB0b1xuICAgICAgICAgICAgICAgIC8vIHVzZSB0aGUgdW5zdXBwb3J0ZWQgY2FsbGJhY2sgYW55bW9yZS5cbiAgICAgICAgICAgICAgICBtZXRhZGF0YS5mYWxsYmFja1RvTm9DYWxsYmFjayA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIG1ldGFkYXRhLm5vQ2FsbGJhY2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXRhZGF0YS5ub0NhbGxiYWNrKSB7XG4gICAgICAgICAgICAgIHRhcmdldFtuYW1lXSguLi5hcmdzKTtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGFyZ2V0W25hbWVdKC4uLmFyZ3MsIG1ha2VDYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICByZWplY3RcbiAgICAgICAgICAgICAgfSwgbWV0YWRhdGEpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgIH07XG5cbiAgICAgIC8qKlxuICAgICAgICogV3JhcHMgYW4gZXhpc3RpbmcgbWV0aG9kIG9mIHRoZSB0YXJnZXQgb2JqZWN0LCBzbyB0aGF0IGNhbGxzIHRvIGl0IGFyZVxuICAgICAgICogaW50ZXJjZXB0ZWQgYnkgdGhlIGdpdmVuIHdyYXBwZXIgZnVuY3Rpb24uIFRoZSB3cmFwcGVyIGZ1bmN0aW9uIHJlY2VpdmVzLFxuICAgICAgICogYXMgaXRzIGZpcnN0IGFyZ3VtZW50LCB0aGUgb3JpZ2luYWwgYHRhcmdldGAgb2JqZWN0LCBmb2xsb3dlZCBieSBlYWNoIG9mXG4gICAgICAgKiB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgb3JpZ2luYWwgbWV0aG9kLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSB0YXJnZXRcbiAgICAgICAqICAgICAgICBUaGUgb3JpZ2luYWwgdGFyZ2V0IG9iamVjdCB0aGF0IHRoZSB3cmFwcGVkIG1ldGhvZCBiZWxvbmdzIHRvLlxuICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kXG4gICAgICAgKiAgICAgICAgVGhlIG1ldGhvZCBiZWluZyB3cmFwcGVkLiBUaGlzIGlzIHVzZWQgYXMgdGhlIHRhcmdldCBvZiB0aGUgUHJveHlcbiAgICAgICAqICAgICAgICBvYmplY3Qgd2hpY2ggaXMgY3JlYXRlZCB0byB3cmFwIHRoZSBtZXRob2QuXG4gICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB3cmFwcGVyXG4gICAgICAgKiAgICAgICAgVGhlIHdyYXBwZXIgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGluIHBsYWNlIG9mIGEgZGlyZWN0IGludm9jYXRpb25cbiAgICAgICAqICAgICAgICBvZiB0aGUgd3JhcHBlZCBtZXRob2QuXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge1Byb3h5PGZ1bmN0aW9uPn1cbiAgICAgICAqICAgICAgICBBIFByb3h5IG9iamVjdCBmb3IgdGhlIGdpdmVuIG1ldGhvZCwgd2hpY2ggaW52b2tlcyB0aGUgZ2l2ZW4gd3JhcHBlclxuICAgICAgICogICAgICAgIG1ldGhvZCBpbiBpdHMgcGxhY2UuXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHdyYXBNZXRob2QgPSAodGFyZ2V0LCBtZXRob2QsIHdyYXBwZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm94eShtZXRob2QsIHtcbiAgICAgICAgICBhcHBseSh0YXJnZXRNZXRob2QsIHRoaXNPYmosIGFyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB3cmFwcGVyLmNhbGwodGhpc09iaiwgdGFyZ2V0LCAuLi5hcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGxldCBoYXNPd25Qcm9wZXJ0eSA9IEZ1bmN0aW9uLmNhbGwuYmluZChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcblxuICAgICAgLyoqXG4gICAgICAgKiBXcmFwcyBhbiBvYmplY3QgaW4gYSBQcm94eSB3aGljaCBpbnRlcmNlcHRzIGFuZCB3cmFwcyBjZXJ0YWluIG1ldGhvZHNcbiAgICAgICAqIGJhc2VkIG9uIHRoZSBnaXZlbiBgd3JhcHBlcnNgIGFuZCBgbWV0YWRhdGFgIG9iamVjdHMuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldFxuICAgICAgICogICAgICAgIFRoZSB0YXJnZXQgb2JqZWN0IHRvIHdyYXAuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IFt3cmFwcGVycyA9IHt9XVxuICAgICAgICogICAgICAgIEFuIG9iamVjdCB0cmVlIGNvbnRhaW5pbmcgd3JhcHBlciBmdW5jdGlvbnMgZm9yIHNwZWNpYWwgY2FzZXMuIEFueVxuICAgICAgICogICAgICAgIGZ1bmN0aW9uIHByZXNlbnQgaW4gdGhpcyBvYmplY3QgdHJlZSBpcyBjYWxsZWQgaW4gcGxhY2Ugb2YgdGhlXG4gICAgICAgKiAgICAgICAgbWV0aG9kIGluIHRoZSBzYW1lIGxvY2F0aW9uIGluIHRoZSBgdGFyZ2V0YCBvYmplY3QgdHJlZS4gVGhlc2VcbiAgICAgICAqICAgICAgICB3cmFwcGVyIG1ldGhvZHMgYXJlIGludm9rZWQgYXMgZGVzY3JpYmVkIGluIHtAc2VlIHdyYXBNZXRob2R9LlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBbbWV0YWRhdGEgPSB7fV1cbiAgICAgICAqICAgICAgICBBbiBvYmplY3QgdHJlZSBjb250YWluaW5nIG1ldGFkYXRhIHVzZWQgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZVxuICAgICAgICogICAgICAgIFByb21pc2UtYmFzZWQgd3JhcHBlciBmdW5jdGlvbnMgZm9yIGFzeW5jaHJvbm91cy4gQW55IGZ1bmN0aW9uIGluXG4gICAgICAgKiAgICAgICAgdGhlIGB0YXJnZXRgIG9iamVjdCB0cmVlIHdoaWNoIGhhcyBhIGNvcnJlc3BvbmRpbmcgbWV0YWRhdGEgb2JqZWN0XG4gICAgICAgKiAgICAgICAgaW4gdGhlIHNhbWUgbG9jYXRpb24gaW4gdGhlIGBtZXRhZGF0YWAgdHJlZSBpcyByZXBsYWNlZCB3aXRoIGFuXG4gICAgICAgKiAgICAgICAgYXV0b21hdGljYWxseS1nZW5lcmF0ZWQgd3JhcHBlciBmdW5jdGlvbiwgYXMgZGVzY3JpYmVkIGluXG4gICAgICAgKiAgICAgICAge0BzZWUgd3JhcEFzeW5jRnVuY3Rpb259XG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge1Byb3h5PG9iamVjdD59XG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHdyYXBPYmplY3QgPSAodGFyZ2V0LCB3cmFwcGVycyA9IHt9LCBtZXRhZGF0YSA9IHt9KSA9PiB7XG4gICAgICAgIGxldCBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGxldCBoYW5kbGVycyA9IHtcbiAgICAgICAgICBoYXMocHJveHlUYXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9wIGluIHRhcmdldCB8fCBwcm9wIGluIGNhY2hlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2V0KHByb3h5VGFyZ2V0LCBwcm9wLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHByb3AgaW4gY2FjaGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGNhY2hlW3Byb3BdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCEocHJvcCBpbiB0YXJnZXQpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdmFsdWUgPSB0YXJnZXRbcHJvcF07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG1ldGhvZCBvbiB0aGUgdW5kZXJseWluZyBvYmplY3QuIENoZWNrIGlmIHdlIG5lZWQgdG8gZG9cbiAgICAgICAgICAgICAgLy8gYW55IHdyYXBwaW5nLlxuXG4gICAgICAgICAgICAgIGlmICh0eXBlb2Ygd3JhcHBlcnNbcHJvcF0gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBzcGVjaWFsLWNhc2Ugd3JhcHBlciBmb3IgdGhpcyBtZXRob2QuXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB3cmFwTWV0aG9kKHRhcmdldCwgdGFyZ2V0W3Byb3BdLCB3cmFwcGVyc1twcm9wXSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzT3duUHJvcGVydHkobWV0YWRhdGEsIHByb3ApKSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBhc3luYyBtZXRob2QgdGhhdCB3ZSBoYXZlIG1ldGFkYXRhIGZvci4gQ3JlYXRlIGFcbiAgICAgICAgICAgICAgICAvLyBQcm9taXNlIHdyYXBwZXIgZm9yIGl0LlxuICAgICAgICAgICAgICAgIGxldCB3cmFwcGVyID0gd3JhcEFzeW5jRnVuY3Rpb24ocHJvcCwgbWV0YWRhdGFbcHJvcF0pO1xuICAgICAgICAgICAgICAgIHZhbHVlID0gd3JhcE1ldGhvZCh0YXJnZXQsIHRhcmdldFtwcm9wXSwgd3JhcHBlcik7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIG1ldGhvZCB0aGF0IHdlIGRvbid0IGtub3cgb3IgY2FyZSBhYm91dC4gUmV0dXJuIHRoZVxuICAgICAgICAgICAgICAgIC8vIG9yaWdpbmFsIG1ldGhvZCwgYm91bmQgdG8gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuYmluZCh0YXJnZXQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAoaGFzT3duUHJvcGVydHkod3JhcHBlcnMsIHByb3ApIHx8IGhhc093blByb3BlcnR5KG1ldGFkYXRhLCBwcm9wKSkpIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBvYmplY3QgdGhhdCB3ZSBuZWVkIHRvIGRvIHNvbWUgd3JhcHBpbmcgZm9yIHRoZSBjaGlsZHJlblxuICAgICAgICAgICAgICAvLyBvZi4gQ3JlYXRlIGEgc3ViLW9iamVjdCB3cmFwcGVyIGZvciBpdCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBjaGlsZFxuICAgICAgICAgICAgICAvLyBtZXRhZGF0YS5cbiAgICAgICAgICAgICAgdmFsdWUgPSB3cmFwT2JqZWN0KHZhbHVlLCB3cmFwcGVyc1twcm9wXSwgbWV0YWRhdGFbcHJvcF0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNPd25Qcm9wZXJ0eShtZXRhZGF0YSwgXCIqXCIpKSB7XG4gICAgICAgICAgICAgIC8vIFdyYXAgYWxsIHByb3BlcnRpZXMgaW4gKiBuYW1lc3BhY2UuXG4gICAgICAgICAgICAgIHZhbHVlID0gd3JhcE9iamVjdCh2YWx1ZSwgd3JhcHBlcnNbcHJvcF0sIG1ldGFkYXRhW1wiKlwiXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGRvIGFueSB3cmFwcGluZyBmb3IgdGhpcyBwcm9wZXJ0eSxcbiAgICAgICAgICAgICAgLy8gc28ganVzdCBmb3J3YXJkIGFsbCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FjaGUsIHByb3AsIHtcbiAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0W3Byb3BdO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWNoZVtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc2V0KHByb3h5VGFyZ2V0LCBwcm9wLCB2YWx1ZSwgcmVjZWl2ZXIpIHtcbiAgICAgICAgICAgIGlmIChwcm9wIGluIGNhY2hlKSB7XG4gICAgICAgICAgICAgIGNhY2hlW3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVmaW5lUHJvcGVydHkocHJveHlUYXJnZXQsIHByb3AsIGRlc2MpIHtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KGNhY2hlLCBwcm9wLCBkZXNjKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRlbGV0ZVByb3BlcnR5KHByb3h5VGFyZ2V0LCBwcm9wKSB7XG4gICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5kZWxldGVQcm9wZXJ0eShjYWNoZSwgcHJvcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFBlciBjb250cmFjdCBvZiB0aGUgUHJveHkgQVBJLCB0aGUgXCJnZXRcIiBwcm94eSBoYW5kbGVyIG11c3QgcmV0dXJuIHRoZVxuICAgICAgICAvLyBvcmlnaW5hbCB2YWx1ZSBvZiB0aGUgdGFyZ2V0IGlmIHRoYXQgdmFsdWUgaXMgZGVjbGFyZWQgcmVhZC1vbmx5IGFuZFxuICAgICAgICAvLyBub24tY29uZmlndXJhYmxlLiBGb3IgdGhpcyByZWFzb24sIHdlIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGVcbiAgICAgICAgLy8gcHJvdG90eXBlIHNldCB0byBgdGFyZ2V0YCBpbnN0ZWFkIG9mIHVzaW5nIGB0YXJnZXRgIGRpcmVjdGx5LlxuICAgICAgICAvLyBPdGhlcndpc2Ugd2UgY2Fubm90IHJldHVybiBhIGN1c3RvbSBvYmplY3QgZm9yIEFQSXMgdGhhdFxuICAgICAgICAvLyBhcmUgZGVjbGFyZWQgcmVhZC1vbmx5IGFuZCBub24tY29uZmlndXJhYmxlLCBzdWNoIGFzIGBjaHJvbWUuZGV2dG9vbHNgLlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGUgcHJveHkgaGFuZGxlcnMgdGhlbXNlbHZlcyB3aWxsIHN0aWxsIHVzZSB0aGUgb3JpZ2luYWwgYHRhcmdldGBcbiAgICAgICAgLy8gaW5zdGVhZCBvZiB0aGUgYHByb3h5VGFyZ2V0YCwgc28gdGhhdCB0aGUgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBhcmVcbiAgICAgICAgLy8gZGVyZWZlcmVuY2VkIHZpYSB0aGUgb3JpZ2luYWwgdGFyZ2V0cy5cbiAgICAgICAgbGV0IHByb3h5VGFyZ2V0ID0gT2JqZWN0LmNyZWF0ZSh0YXJnZXQpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KHByb3h5VGFyZ2V0LCBoYW5kbGVycyk7XG4gICAgICB9O1xuXG4gICAgICAvKipcbiAgICAgICAqIENyZWF0ZXMgYSBzZXQgb2Ygd3JhcHBlciBmdW5jdGlvbnMgZm9yIGFuIGV2ZW50IG9iamVjdCwgd2hpY2ggaGFuZGxlc1xuICAgICAgICogd3JhcHBpbmcgb2YgbGlzdGVuZXIgZnVuY3Rpb25zIHRoYXQgdGhvc2UgbWVzc2FnZXMgYXJlIHBhc3NlZC5cbiAgICAgICAqXG4gICAgICAgKiBBIHNpbmdsZSB3cmFwcGVyIGlzIGNyZWF0ZWQgZm9yIGVhY2ggbGlzdGVuZXIgZnVuY3Rpb24sIGFuZCBzdG9yZWQgaW4gYVxuICAgICAgICogbWFwLiBTdWJzZXF1ZW50IGNhbGxzIHRvIGBhZGRMaXN0ZW5lcmAsIGBoYXNMaXN0ZW5lcmAsIG9yIGByZW1vdmVMaXN0ZW5lcmBcbiAgICAgICAqIHJldHJpZXZlIHRoZSBvcmlnaW5hbCB3cmFwcGVyLCBzbyB0aGF0ICBhdHRlbXB0cyB0byByZW1vdmUgYVxuICAgICAgICogcHJldmlvdXNseS1hZGRlZCBsaXN0ZW5lciB3b3JrIGFzIGV4cGVjdGVkLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7RGVmYXVsdFdlYWtNYXA8ZnVuY3Rpb24sIGZ1bmN0aW9uPn0gd3JhcHBlck1hcFxuICAgICAgICogICAgICAgIEEgRGVmYXVsdFdlYWtNYXAgb2JqZWN0IHdoaWNoIHdpbGwgY3JlYXRlIHRoZSBhcHByb3ByaWF0ZSB3cmFwcGVyXG4gICAgICAgKiAgICAgICAgZm9yIGEgZ2l2ZW4gbGlzdGVuZXIgZnVuY3Rpb24gd2hlbiBvbmUgZG9lcyBub3QgZXhpc3QsIGFuZCByZXRyaWV2ZVxuICAgICAgICogICAgICAgIGFuIGV4aXN0aW5nIG9uZSB3aGVuIGl0IGRvZXMuXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge29iamVjdH1cbiAgICAgICAqL1xuICAgICAgY29uc3Qgd3JhcEV2ZW50ID0gd3JhcHBlck1hcCA9PiAoe1xuICAgICAgICBhZGRMaXN0ZW5lcih0YXJnZXQsIGxpc3RlbmVyLCAuLi5hcmdzKSB7XG4gICAgICAgICAgdGFyZ2V0LmFkZExpc3RlbmVyKHdyYXBwZXJNYXAuZ2V0KGxpc3RlbmVyKSwgLi4uYXJncyk7XG4gICAgICAgIH0sXG4gICAgICAgIGhhc0xpc3RlbmVyKHRhcmdldCwgbGlzdGVuZXIpIHtcbiAgICAgICAgICByZXR1cm4gdGFyZ2V0Lmhhc0xpc3RlbmVyKHdyYXBwZXJNYXAuZ2V0KGxpc3RlbmVyKSk7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZUxpc3RlbmVyKHRhcmdldCwgbGlzdGVuZXIpIHtcbiAgICAgICAgICB0YXJnZXQucmVtb3ZlTGlzdGVuZXIod3JhcHBlck1hcC5nZXQobGlzdGVuZXIpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjb25zdCBvblJlcXVlc3RGaW5pc2hlZFdyYXBwZXJzID0gbmV3IERlZmF1bHRXZWFrTWFwKGxpc3RlbmVyID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgcmV0dXJuIGxpc3RlbmVyO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdyYXBzIGFuIG9uUmVxdWVzdEZpbmlzaGVkIGxpc3RlbmVyIGZ1bmN0aW9uIHNvIHRoYXQgaXQgd2lsbCByZXR1cm4gYVxuICAgICAgICAgKiBgZ2V0Q29udGVudCgpYCBwcm9wZXJ0eSB3aGljaCByZXR1cm5zIGEgYFByb21pc2VgIHJhdGhlciB0aGFuIHVzaW5nIGFcbiAgICAgICAgICogY2FsbGJhY2sgQVBJLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0ge29iamVjdH0gcmVxXG4gICAgICAgICAqICAgICAgICBUaGUgSEFSIGVudHJ5IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIG5ldHdvcmsgcmVxdWVzdC5cbiAgICAgICAgICovXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBvblJlcXVlc3RGaW5pc2hlZChyZXEpIHtcbiAgICAgICAgICBjb25zdCB3cmFwcGVkUmVxID0gd3JhcE9iamVjdChyZXEsIHt9IC8qIHdyYXBwZXJzICovLCB7XG4gICAgICAgICAgICBnZXRDb250ZW50OiB7XG4gICAgICAgICAgICAgIG1pbkFyZ3M6IDAsXG4gICAgICAgICAgICAgIG1heEFyZ3M6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsaXN0ZW5lcih3cmFwcGVkUmVxKTtcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgb25NZXNzYWdlV3JhcHBlcnMgPSBuZXcgRGVmYXVsdFdlYWtNYXAobGlzdGVuZXIgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICByZXR1cm4gbGlzdGVuZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogV3JhcHMgYSBtZXNzYWdlIGxpc3RlbmVyIGZ1bmN0aW9uIHNvIHRoYXQgaXQgbWF5IHNlbmQgcmVzcG9uc2VzIGJhc2VkIG9uXG4gICAgICAgICAqIGl0cyByZXR1cm4gdmFsdWUsIHJhdGhlciB0aGFuIGJ5IHJldHVybmluZyBhIHNlbnRpbmVsIHZhbHVlIGFuZCBjYWxsaW5nIGFcbiAgICAgICAgICogY2FsbGJhY2suIElmIHRoZSBsaXN0ZW5lciBmdW5jdGlvbiByZXR1cm5zIGEgUHJvbWlzZSwgdGhlIHJlc3BvbnNlIGlzXG4gICAgICAgICAqIHNlbnQgd2hlbiB0aGUgcHJvbWlzZSBlaXRoZXIgcmVzb2x2ZXMgb3IgcmVqZWN0cy5cbiAgICAgICAgICpcbiAgICAgICAgICogQHBhcmFtIHsqfSBtZXNzYWdlXG4gICAgICAgICAqICAgICAgICBUaGUgbWVzc2FnZSBzZW50IGJ5IHRoZSBvdGhlciBlbmQgb2YgdGhlIGNoYW5uZWwuXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBzZW5kZXJcbiAgICAgICAgICogICAgICAgIERldGFpbHMgYWJvdXQgdGhlIHNlbmRlciBvZiB0aGUgbWVzc2FnZS5cbiAgICAgICAgICogQHBhcmFtIHtmdW5jdGlvbigqKX0gc2VuZFJlc3BvbnNlXG4gICAgICAgICAqICAgICAgICBBIGNhbGxiYWNrIHdoaWNoLCB3aGVuIGNhbGxlZCB3aXRoIGFuIGFyYml0cmFyeSBhcmd1bWVudCwgc2VuZHNcbiAgICAgICAgICogICAgICAgIHRoYXQgdmFsdWUgYXMgYSByZXNwb25zZS5cbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICAgICAqICAgICAgICBUcnVlIGlmIHRoZSB3cmFwcGVkIGxpc3RlbmVyIHJldHVybmVkIGEgUHJvbWlzZSwgd2hpY2ggd2lsbCBsYXRlclxuICAgICAgICAgKiAgICAgICAgeWllbGQgYSByZXNwb25zZS4gRmFsc2Ugb3RoZXJ3aXNlLlxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIG9uTWVzc2FnZShtZXNzYWdlLCBzZW5kZXIsIHNlbmRSZXNwb25zZSkge1xuICAgICAgICAgIGxldCBkaWRDYWxsU2VuZFJlc3BvbnNlID0gZmFsc2U7XG4gICAgICAgICAgbGV0IHdyYXBwZWRTZW5kUmVzcG9uc2U7XG4gICAgICAgICAgbGV0IHNlbmRSZXNwb25zZVByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgICAgICAgIHdyYXBwZWRTZW5kUmVzcG9uc2UgPSBmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgZGlkQ2FsbFNlbmRSZXNwb25zZSA9IHRydWU7XG4gICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSBsaXN0ZW5lcihtZXNzYWdlLCBzZW5kZXIsIHdyYXBwZWRTZW5kUmVzcG9uc2UpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmVzdWx0ID0gUHJvbWlzZS5yZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNSZXN1bHRUaGVuYWJsZSA9IHJlc3VsdCAhPT0gdHJ1ZSAmJiBpc1RoZW5hYmxlKHJlc3VsdCk7XG5cbiAgICAgICAgICAvLyBJZiB0aGUgbGlzdGVuZXIgZGlkbid0IHJldHVybmVkIHRydWUgb3IgYSBQcm9taXNlLCBvciBjYWxsZWRcbiAgICAgICAgICAvLyB3cmFwcGVkU2VuZFJlc3BvbnNlIHN5bmNocm9ub3VzbHksIHdlIGNhbiBleGl0IGVhcmxpZXJcbiAgICAgICAgICAvLyBiZWNhdXNlIHRoZXJlIHdpbGwgYmUgbm8gcmVzcG9uc2Ugc2VudCBmcm9tIHRoaXMgbGlzdGVuZXIuXG4gICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSAmJiAhaXNSZXN1bHRUaGVuYWJsZSAmJiAhZGlkQ2FsbFNlbmRSZXNwb25zZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEEgc21hbGwgaGVscGVyIHRvIHNlbmQgdGhlIG1lc3NhZ2UgaWYgdGhlIHByb21pc2UgcmVzb2x2ZXNcbiAgICAgICAgICAvLyBhbmQgYW4gZXJyb3IgaWYgdGhlIHByb21pc2UgcmVqZWN0cyAoYSB3cmFwcGVkIHNlbmRNZXNzYWdlIGhhc1xuICAgICAgICAgIC8vIHRvIHRyYW5zbGF0ZSB0aGUgbWVzc2FnZSBpbnRvIGEgcmVzb2x2ZWQgcHJvbWlzZSBvciBhIHJlamVjdGVkXG4gICAgICAgICAgLy8gcHJvbWlzZSkuXG4gICAgICAgICAgY29uc3Qgc2VuZFByb21pc2VkUmVzdWx0ID0gcHJvbWlzZSA9PiB7XG4gICAgICAgICAgICBwcm9taXNlLnRoZW4obXNnID0+IHtcbiAgICAgICAgICAgICAgLy8gc2VuZCB0aGUgbWVzc2FnZSB2YWx1ZS5cbiAgICAgICAgICAgICAgc2VuZFJlc3BvbnNlKG1zZyk7XG4gICAgICAgICAgICB9LCBlcnJvciA9PiB7XG4gICAgICAgICAgICAgIC8vIFNlbmQgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlcnJvciBpZiB0aGUgcmVqZWN0ZWQgdmFsdWVcbiAgICAgICAgICAgICAgLy8gaXMgYW4gaW5zdGFuY2Ugb2YgZXJyb3IsIG9yIHRoZSBvYmplY3QgaXRzZWxmIG90aGVyd2lzZS5cbiAgICAgICAgICAgICAgbGV0IG1lc3NhZ2U7XG4gICAgICAgICAgICAgIGlmIChlcnJvciAmJiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciB8fCB0eXBlb2YgZXJyb3IubWVzc2FnZSA9PT0gXCJzdHJpbmdcIikpIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlID0gXCJBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkXCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc2VuZFJlc3BvbnNlKHtcbiAgICAgICAgICAgICAgICBfX21veldlYkV4dGVuc2lvblBvbHlmaWxsUmVqZWN0X186IHRydWUsXG4gICAgICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICAgIC8vIFByaW50IGFuIGVycm9yIG9uIHRoZSBjb25zb2xlIGlmIHVuYWJsZSB0byBzZW5kIHRoZSByZXNwb25zZS5cbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBzZW5kIG9uTWVzc2FnZSByZWplY3RlZCByZXBseVwiLCBlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfTtcblxuICAgICAgICAgIC8vIElmIHRoZSBsaXN0ZW5lciByZXR1cm5lZCBhIFByb21pc2UsIHNlbmQgdGhlIHJlc29sdmVkIHZhbHVlIGFzIGFcbiAgICAgICAgICAvLyByZXN1bHQsIG90aGVyd2lzZSB3YWl0IHRoZSBwcm9taXNlIHJlbGF0ZWQgdG8gdGhlIHdyYXBwZWRTZW5kUmVzcG9uc2VcbiAgICAgICAgICAvLyBjYWxsYmFjayB0byByZXNvbHZlIGFuZCBzZW5kIGl0IGFzIGEgcmVzcG9uc2UuXG4gICAgICAgICAgaWYgKGlzUmVzdWx0VGhlbmFibGUpIHtcbiAgICAgICAgICAgIHNlbmRQcm9taXNlZFJlc3VsdChyZXN1bHQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZW5kUHJvbWlzZWRSZXN1bHQoc2VuZFJlc3BvbnNlUHJvbWlzZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gTGV0IENocm9tZSBrbm93IHRoYXQgdGhlIGxpc3RlbmVyIGlzIHJlcGx5aW5nLlxuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBjb25zdCB3cmFwcGVkU2VuZE1lc3NhZ2VDYWxsYmFjayA9ICh7XG4gICAgICAgIHJlamVjdCxcbiAgICAgICAgcmVzb2x2ZVxuICAgICAgfSwgcmVwbHkpID0+IHtcbiAgICAgICAgaWYgKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IpIHtcbiAgICAgICAgICAvLyBEZXRlY3Qgd2hlbiBub25lIG9mIHRoZSBsaXN0ZW5lcnMgcmVwbGllZCB0byB0aGUgc2VuZE1lc3NhZ2UgY2FsbCBhbmQgcmVzb2x2ZVxuICAgICAgICAgIC8vIHRoZSBwcm9taXNlIHRvIHVuZGVmaW5lZCBhcyBpbiBGaXJlZm94LlxuICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS93ZWJleHRlbnNpb24tcG9seWZpbGwvaXNzdWVzLzEzMFxuICAgICAgICAgIGlmIChleHRlbnNpb25BUElzLnJ1bnRpbWUubGFzdEVycm9yLm1lc3NhZ2UgPT09IENIUk9NRV9TRU5EX01FU1NBR0VfQ0FMTEJBQ0tfTk9fUkVTUE9OU0VfTUVTU0FHRSkge1xuICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IubWVzc2FnZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChyZXBseSAmJiByZXBseS5fX21veldlYkV4dGVuc2lvblBvbHlmaWxsUmVqZWN0X18pIHtcbiAgICAgICAgICAvLyBDb252ZXJ0IGJhY2sgdGhlIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yIGludG9cbiAgICAgICAgICAvLyBhbiBFcnJvciBpbnN0YW5jZS5cbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKHJlcGx5Lm1lc3NhZ2UpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNvbHZlKHJlcGx5KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGNvbnN0IHdyYXBwZWRTZW5kTWVzc2FnZSA9IChuYW1lLCBtZXRhZGF0YSwgYXBpTmFtZXNwYWNlT2JqLCAuLi5hcmdzKSA9PiB7XG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA8IG1ldGFkYXRhLm1pbkFyZ3MpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGF0IGxlYXN0ICR7bWV0YWRhdGEubWluQXJnc30gJHtwbHVyYWxpemVBcmd1bWVudHMobWV0YWRhdGEubWluQXJncyl9IGZvciAke25hbWV9KCksIGdvdCAke2FyZ3MubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhcmdzLmxlbmd0aCA+IG1ldGFkYXRhLm1heEFyZ3MpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGF0IG1vc3QgJHttZXRhZGF0YS5tYXhBcmdzfSAke3BsdXJhbGl6ZUFyZ3VtZW50cyhtZXRhZGF0YS5tYXhBcmdzKX0gZm9yICR7bmFtZX0oKSwgZ290ICR7YXJncy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICBjb25zdCB3cmFwcGVkQ2IgPSB3cmFwcGVkU2VuZE1lc3NhZ2VDYWxsYmFjay5iaW5kKG51bGwsIHtcbiAgICAgICAgICAgIHJlc29sdmUsXG4gICAgICAgICAgICByZWplY3RcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhcmdzLnB1c2god3JhcHBlZENiKTtcbiAgICAgICAgICBhcGlOYW1lc3BhY2VPYmouc2VuZE1lc3NhZ2UoLi4uYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHN0YXRpY1dyYXBwZXJzID0ge1xuICAgICAgICBkZXZ0b29sczoge1xuICAgICAgICAgIG5ldHdvcms6IHtcbiAgICAgICAgICAgIG9uUmVxdWVzdEZpbmlzaGVkOiB3cmFwRXZlbnQob25SZXF1ZXN0RmluaXNoZWRXcmFwcGVycylcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHJ1bnRpbWU6IHtcbiAgICAgICAgICBvbk1lc3NhZ2U6IHdyYXBFdmVudChvbk1lc3NhZ2VXcmFwcGVycyksXG4gICAgICAgICAgb25NZXNzYWdlRXh0ZXJuYWw6IHdyYXBFdmVudChvbk1lc3NhZ2VXcmFwcGVycyksXG4gICAgICAgICAgc2VuZE1lc3NhZ2U6IHdyYXBwZWRTZW5kTWVzc2FnZS5iaW5kKG51bGwsIFwic2VuZE1lc3NhZ2VcIiwge1xuICAgICAgICAgICAgbWluQXJnczogMSxcbiAgICAgICAgICAgIG1heEFyZ3M6IDNcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICB0YWJzOiB7XG4gICAgICAgICAgc2VuZE1lc3NhZ2U6IHdyYXBwZWRTZW5kTWVzc2FnZS5iaW5kKG51bGwsIFwic2VuZE1lc3NhZ2VcIiwge1xuICAgICAgICAgICAgbWluQXJnczogMixcbiAgICAgICAgICAgIG1heEFyZ3M6IDNcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3Qgc2V0dGluZ01ldGFkYXRhID0ge1xuICAgICAgICBjbGVhcjoge1xuICAgICAgICAgIG1pbkFyZ3M6IDEsXG4gICAgICAgICAgbWF4QXJnczogMVxuICAgICAgICB9LFxuICAgICAgICBnZXQ6IHtcbiAgICAgICAgICBtaW5BcmdzOiAxLFxuICAgICAgICAgIG1heEFyZ3M6IDFcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiB7XG4gICAgICAgICAgbWluQXJnczogMSxcbiAgICAgICAgICBtYXhBcmdzOiAxXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBhcGlNZXRhZGF0YS5wcml2YWN5ID0ge1xuICAgICAgICBuZXR3b3JrOiB7XG4gICAgICAgICAgXCIqXCI6IHNldHRpbmdNZXRhZGF0YVxuICAgICAgICB9LFxuICAgICAgICBzZXJ2aWNlczoge1xuICAgICAgICAgIFwiKlwiOiBzZXR0aW5nTWV0YWRhdGFcbiAgICAgICAgfSxcbiAgICAgICAgd2Vic2l0ZXM6IHtcbiAgICAgICAgICBcIipcIjogc2V0dGluZ01ldGFkYXRhXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICByZXR1cm4gd3JhcE9iamVjdChleHRlbnNpb25BUElzLCBzdGF0aWNXcmFwcGVycywgYXBpTWV0YWRhdGEpO1xuICAgIH07XG5cbiAgICAvLyBUaGUgYnVpbGQgcHJvY2VzcyBhZGRzIGEgVU1EIHdyYXBwZXIgYXJvdW5kIHRoaXMgZmlsZSwgd2hpY2ggbWFrZXMgdGhlXG4gICAgLy8gYG1vZHVsZWAgdmFyaWFibGUgYXZhaWxhYmxlLlxuICAgIG1vZHVsZS5leHBvcnRzID0gd3JhcEFQSXMoY2hyb21lKTtcbiAgfSBlbHNlIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFRoaXMuYnJvd3NlcjtcbiAgfVxufSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1icm93c2VyLXBvbHlmaWxsLmpzLm1hcFxuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLypcbiAqIFplZCBBdHRhY2sgUHJveHkgKFpBUCkgYW5kIGl0cyByZWxhdGVkIHNvdXJjZSBmaWxlcy5cbiAqXG4gKiBaQVAgaXMgYW4gSFRUUC9IVFRQUyBwcm94eSBmb3IgYXNzZXNzaW5nIHdlYiBhcHBsaWNhdGlvbiBzZWN1cml0eS5cbiAqXG4gKiBDb3B5cmlnaHQgMjAyMyBUaGUgWkFQIERldmVsb3BtZW50IFRlYW1cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmNsYXNzIFJlcG9ydGVkT2JqZWN0IHtcbiAgcHVibGljIHRpbWVzdGFtcDogbnVtYmVyO1xuXG4gIHB1YmxpYyB0eXBlOiBzdHJpbmc7XG5cbiAgcHVibGljIHRhZ05hbWU6IHN0cmluZztcblxuICBwdWJsaWMgaWQ6IHN0cmluZztcblxuICBwdWJsaWMgbm9kZU5hbWU6IHN0cmluZztcblxuICBwdWJsaWMgdXJsOiBzdHJpbmc7XG5cbiAgcHVibGljIHhwYXRoOiBzdHJpbmc7XG5cbiAgcHVibGljIGhyZWY6IHN0cmluZyB8IG51bGw7XG5cbiAgcHVibGljIHRleHQ6IHN0cmluZyB8IG51bGw7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIHR5cGU6IHN0cmluZyxcbiAgICB0YWdOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBub2RlTmFtZTogc3RyaW5nLFxuICAgIHRleHQ6IHN0cmluZyB8IG51bGwsXG4gICAgdXJsOiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy50aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy50YWdOYW1lID0gdGFnTmFtZTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5ub2RlTmFtZSA9IG5vZGVOYW1lO1xuICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgdGhpcy51cmwgPSB1cmw7XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgdG9TaG9ydFN0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLCBmdW5jdGlvbiByZXBsYWNlcihrOiBzdHJpbmcsIHY6IHN0cmluZykge1xuICAgICAgaWYgKGsgPT09ICd4cGF0aCcpIHtcbiAgICAgICAgLy8gRG9udCByZXR1cm4gdGhlIHhwYXRoIHZhbHVlIC0gaXQgY2FuIGNoYW5nZSB0b28gb2Z0ZW4gaW4gbWFueSBjYXNlc1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHY7XG4gICAgfSk7XG4gIH1cblxuICAvLyBVc2UgdGhpcyBmb3IgdGVzdHNcbiAgcHVibGljIHRvTm9uVGltZXN0YW1wU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMsIGZ1bmN0aW9uIHJlcGxhY2VyKGs6IHN0cmluZywgdjogc3RyaW5nKSB7XG4gICAgICBpZiAoayA9PT0gJ3RpbWVzdGFtcCcpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2O1xuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFJlcG9ydGVkU3RvcmFnZSBleHRlbmRzIFJlcG9ydGVkT2JqZWN0IHtcbiAgcHVibGljIHRvU2hvcnRTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcywgZnVuY3Rpb24gcmVwbGFjZXIoazogc3RyaW5nLCB2OiBzdHJpbmcpIHtcbiAgICAgIGlmIChcbiAgICAgICAgayA9PT0gJ3hwYXRoJyB8fFxuICAgICAgICBrID09PSAnaHJlZicgfHxcbiAgICAgICAgayA9PT0gJ3RpbWVzdGFtcCcgfHxcbiAgICAgICAgKGsgPT09ICd1cmwnICYmICEodGhpcy50eXBlID09PSAnY29va2llcycpKVxuICAgICAgKSB7XG4gICAgICAgIC8vIFN0b3JhZ2UgZXZlbnRzIGFyZSBub3QgdGltZSBvciBVUkwgc3BlY2lmaWNcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2O1xuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFJlcG9ydGVkRWxlbWVudCBleHRlbmRzIFJlcG9ydGVkT2JqZWN0IHtcbiAgcHVibGljIHRhZ1R5cGU6IHN0cmluZyB8IG51bGw7XG5cbiAgcHVibGljIGZvcm1JZDogbnVtYmVyIHwgbnVsbDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoZWxlbWVudDogRWxlbWVudCwgdXJsOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgICdub2RlQWRkZWQnLFxuICAgICAgZWxlbWVudC50YWdOYW1lLFxuICAgICAgZWxlbWVudC5pZCxcbiAgICAgIGVsZW1lbnQubm9kZU5hbWUsXG4gICAgICBlbGVtZW50LnRleHRDb250ZW50LFxuICAgICAgdXJsXG4gICAgKTtcbiAgICBpZiAoZWxlbWVudC50YWdOYW1lID09PSAnQScpIHtcbiAgICAgIC8vIFRoaXMgZ2V0cyB0aGUgZnVsbCBVUkwgcmF0aGVyIHRoYW4gYSByZWxhdGl2ZSBvbmVcbiAgICAgIGNvbnN0IGE6IEhUTUxBbmNob3JFbGVtZW50ID0gZWxlbWVudCBhcyBIVE1MQW5jaG9yRWxlbWVudDtcbiAgICAgIHRoaXMuaHJlZiA9IGEudG9TdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gJ0ZPUk0nKSB7XG4gICAgICB0aGlzLmZvcm1JZCA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRvY3VtZW50LmZvcm1zKS5pbmRleE9mKGVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudC50YWdOYW1lID09PSAnSU5QVVQnKSB7XG4gICAgICAvLyBDYXB0dXJlIGV4dHJhIHVzZWZ1bCBpbmZvIGZvciBpbnB1dCBlbGVtZW50c1xuICAgICAgY29uc3QgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgPSBlbGVtZW50IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICB0aGlzLnRhZ1R5cGUgPSBpbnB1dC50eXBlO1xuICAgICAgdGhpcy50ZXh0ID0gaW5wdXQudmFsdWU7XG4gICAgICBjb25zdCB7Zm9ybX0gPSBpbnB1dDtcbiAgICAgIGlmIChmb3JtKSB7XG4gICAgICAgIC8vIFRoaXMgd2lsbCBub3Qgd29yayBpZiBmb3JtIHRhZ3MgYXJlIG5vdCB1c2VkXG4gICAgICAgIHRoaXMuZm9ybUlkID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQuZm9ybXMpLmluZGV4T2YoZm9ybSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbGVtZW50Lmhhc0F0dHJpYnV0ZSgnaHJlZicpKSB7XG4gICAgICB0aGlzLmhyZWYgPSBlbGVtZW50LmdldEF0dHJpYnV0ZSgnaHJlZicpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB0b1Nob3J0U3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMsIGZ1bmN0aW9uIHJlcGxhY2VyKGs6IHN0cmluZywgdjogc3RyaW5nKSB7XG4gICAgICBpZiAoayA9PT0gJ3RpbWVzdGFtcCcpIHtcbiAgICAgICAgLy8gTm8gcG9pbnQgcmVwb3J0aW5nIHRoZSBzYW1lIGVsZW1lbnQgbG90cyBvZiB0aW1lc1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHY7XG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgUmVwb3J0ZWRFdmVudCB7XG4gIHB1YmxpYyB0aW1lc3RhbXA6IG51bWJlcjtcblxuICBwdWJsaWMgZXZlbnROYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIHVybDogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb3VudDogbnVtYmVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihldmVudE5hbWU6IHN0cmluZykge1xuICAgIHRoaXMudGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmV2ZW50TmFtZSA9IGV2ZW50TmFtZTtcbiAgICB0aGlzLnVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIHRoaXMuY291bnQgPSAxO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCB7UmVwb3J0ZWRFbGVtZW50LCBSZXBvcnRlZE9iamVjdCwgUmVwb3J0ZWRTdG9yYWdlLCBSZXBvcnRlZEV2ZW50fTtcbiIsIi8qXG4gKiBaZWQgQXR0YWNrIFByb3h5IChaQVApIGFuZCBpdHMgcmVsYXRlZCBzb3VyY2UgZmlsZXMuXG4gKlxuICogWkFQIGlzIGFuIEhUVFAvSFRUUFMgcHJveHkgZm9yIGFzc2Vzc2luZyB3ZWIgYXBwbGljYXRpb24gc2VjdXJpdHkuXG4gKlxuICogQ29weXJpZ2h0IDIwMjMgVGhlIFpBUCBEZXZlbG9wbWVudCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgQnJvd3NlciBmcm9tICd3ZWJleHRlbnNpb24tcG9seWZpbGwnO1xuXG4vLyBUaGUgbWFuaWZlc3Qgd2lsbCBiZSB1bmRlZmluZWQgd2hlbiBydW5uaW5nIHRoZSB0ZXN0c1xuZXhwb3J0IGNvbnN0IElTX0ZVTExfRVhURU5TSU9OID1cbiAgdHlwZW9mIEJyb3dzZXIucnVudGltZS5nZXRNYW5pZmVzdCA9PT0gJ3VuZGVmaW5lZCcgfHxcbiAgQnJvd3Nlci5ydW50aW1lLmdldE1hbmlmZXN0KCkubmFtZSA9PT0gJ1pBUCBieSBDaGVja21hcnggQnJvd3NlciBFeHRlbnNpb24nO1xuXG5leHBvcnQgY29uc3QgWkVTVF9DTElFTlRfU1dJVENIX1RPX0ZSQU1FID0gJ1plc3RDbGllbnRTd2l0Y2hUb0ZyYW1lJztcbmV4cG9ydCBjb25zdCBaRVNUX0NMSUVOVF9FTEVNRU5UX0NMSUNLID0gJ1plc3RDbGllbnRFbGVtZW50Q2xpY2snO1xuZXhwb3J0IGNvbnN0IFpFU1RfQ0xJRU5UX0VMRU1FTlRfU0NST0xMX1RPID0gJ1plc3RDbGllbnRFbGVtZW50U2Nyb2xsVG8nO1xuZXhwb3J0IGNvbnN0IFpFU1RfQ0xJRU5UX0VMRU1FTlRfU0VORF9LRVlTID0gJ1plc3RDbGllbnRFbGVtZW50U2VuZEtleXMnO1xuZXhwb3J0IGNvbnN0IFpFU1RfQ0xJRU5UX0VMRU1FTlRfU1VCTUlUID0gJ1plc3RDbGllbnRFbGVtZW50U3VibWl0JztcbmV4cG9ydCBjb25zdCBaRVNUX0NMSUVOVF9MQVVOQ0ggPSAnWmVzdENsaWVudExhdW5jaCc7XG5leHBvcnQgY29uc3QgWkVTVF9DTElFTlRfRUxFTUVOVF9DTEVBUiA9ICdaZXN0Q2xpZW50RWxlbWVudENsZWFyJztcbmV4cG9ydCBjb25zdCBaRVNUX0NMSUVOVF9XSU5ET1dfQ0xPU0UgPSAnWmVzdENsaWVudFdpbmRvd0Nsb3NlJztcbmV4cG9ydCBjb25zdCBaRVNUX0NMSUVOVF9FTEVNRU5UX01PVVNFX09WRVIgPSAnWmVzdENsaWVudEVsZW1lbnRNb3VzZU92ZXInO1xuZXhwb3J0IGNvbnN0IFpFU1RfQ09NTUVOVCA9ICdaZXN0Q29tbWVudCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9XSU5ET1dfSEFORExFID0gJ3dpbmRvd0hhbmRsZTEnO1xuXG5leHBvcnQgY29uc3QgWkFQX1NUT1BfUkVDT1JESU5HID0gJ3phcFN0b3BSZWNvcmRpbmcnO1xuZXhwb3J0IGNvbnN0IFpBUF9TVEFSVF9SRUNPUkRJTkcgPSAnemFwU3RhcnRSZWNvcmRpbmcnO1xuZXhwb3J0IGNvbnN0IFpFU1RfU0NSSVBUID0gJ3plc3RTY3JpcHQnO1xuXG5leHBvcnQgY29uc3QgU1RPUF9SRUNPUkRJTkcgPSAnc3RvcFJlY29yZGluZyc7XG5leHBvcnQgY29uc3QgUkVTRVRfWkVTVF9TQ1JJUFQgPSAncmVzZXRaZXN0U2NyaXB0JztcbmV4cG9ydCBjb25zdCBHRVRfWkVTVF9TQ1JJUFQgPSAnZ2V0WmVzdFNjcmlwdCc7XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJVExFID0gJ3VwZGF0ZVRpdGxlJztcblxuZXhwb3J0IGNvbnN0IFJFUE9SVF9FVkVOVCA9ICdyZXBvcnRFdmVudCc7XG5leHBvcnQgY29uc3QgUkVQT1JUX09CSkVDVCA9ICdyZXBvcnRPYmplY3QnO1xuXG5leHBvcnQgY29uc3QgTE9DQUxfU1RPUkFHRSA9ICdsb2NhbFN0b3JhZ2UnO1xuZXhwb3J0IGNvbnN0IFNFU1NJT05fU1RPUkFHRSA9ICdzZXNzaW9uU3RvcmFnZSc7XG5leHBvcnQgY29uc3QgTE9DQUxfWkFQX1VSTCA9ICdsb2NhbHphcHVybCc7XG5leHBvcnQgY29uc3QgTE9DQUxfWkFQX0VOQUJMRSA9ICdsb2NhbHphcGVuYWJsZSc7XG5leHBvcnQgY29uc3QgTE9DQUxfWkFQX1JFQ09SRCA9ICdsb2NhbHphcHJlY29yZCc7XG5leHBvcnQgY29uc3QgVVJMX1pBUF9FTkFCTEUgPSAnemFwZW5hYmxlJztcbmV4cG9ydCBjb25zdCBVUkxfWkFQX1JFQ09SRCA9ICd6YXByZWNvcmQnO1xuXG5leHBvcnQgY29uc3QgWkFQX1VSTCA9ICd6YXB1cmwnO1xuZXhwb3J0IGNvbnN0IFpBUF9LRVkgPSAnemFwa2V5JztcbmV4cG9ydCBjb25zdCBaQVBfRU5BQkxFID0gJ3phcGVuYWJsZSc7XG5cbmV4cG9ydCBjb25zdCBaQVBfRkxPQVRJTkdfRElWID0gJ1phcGZsb2F0aW5nRGl2JztcbmV4cG9ydCBjb25zdCBaQVBfRkxPQVRJTkdfRElWX0VMRU1FTlRTID0gJ1phcGZsb2F0aW5nRGl2RWxlbWVudHMnO1xuIiwiLypcbiAqIFplZCBBdHRhY2sgUHJveHkgKFpBUCkgYW5kIGl0cyByZWxhdGVkIHNvdXJjZSBmaWxlcy5cbiAqXG4gKiBaQVAgaXMgYW4gSFRUUC9IVFRQUyBwcm94eSBmb3IgYXNzZXNzaW5nIHdlYiBhcHBsaWNhdGlvbiBzZWN1cml0eS5cbiAqXG4gKiBDb3B5cmlnaHQgMjAyMyBUaGUgWkFQIERldmVsb3BtZW50IFRlYW1cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7XG4gIERFRkFVTFRfV0lORE9XX0hBTkRMRSxcbiAgWkVTVF9DTElFTlRfRUxFTUVOVF9DTEVBUixcbiAgWkVTVF9DTElFTlRfRUxFTUVOVF9DTElDSyxcbiAgWkVTVF9DTElFTlRfRUxFTUVOVF9NT1VTRV9PVkVSLFxuICBaRVNUX0NMSUVOVF9FTEVNRU5UX1NDUk9MTF9UTyxcbiAgWkVTVF9DTElFTlRfRUxFTUVOVF9TRU5EX0tFWVMsXG4gIFpFU1RfQ0xJRU5UX0VMRU1FTlRfU1VCTUlULFxuICBaRVNUX0NMSUVOVF9MQVVOQ0gsXG4gIFpFU1RfQ0xJRU5UX1NXSVRDSF9UT19GUkFNRSxcbiAgWkVTVF9DTElFTlRfV0lORE9XX0NMT1NFLFxuICBaRVNUX0NPTU1FTlQsXG59IGZyb20gJy4uLy4uL3V0aWxzL2NvbnN0YW50cyc7XG5cbmNsYXNzIEVsZW1lbnRMb2NhdG9yIHtcbiAgdHlwZTogc3RyaW5nO1xuXG4gIGVsZW1lbnQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcih0eXBlOiBzdHJpbmcsIGVsZW1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgfVxuXG4gIHRvSlNPTigpOiB7dHlwZTogc3RyaW5nOyBlbGVtZW50OiBzdHJpbmd9IHtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgZWxlbWVudDogdGhpcy5lbGVtZW50LFxuICAgIH07XG4gIH1cbn1cblxuYWJzdHJhY3QgY2xhc3MgWmVzdFN0YXRlbWVudCB7XG4gIGluZGV4OiBudW1iZXI7XG5cbiAgZWxlbWVudFR5cGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50VHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5lbGVtZW50VHlwZSA9IGVsZW1lbnRUeXBlO1xuICAgIHRoaXMuaW5kZXggPSAtMTtcbiAgfVxuXG4gIGFic3RyYWN0IHRvSlNPTigpOiBzdHJpbmc7XG59XG5cbmNsYXNzIFplc3RTdGF0ZW1lbnRMYXVuY2hCcm93c2VyIGV4dGVuZHMgWmVzdFN0YXRlbWVudCB7XG4gIHdpbmRvd0hhbmRsZTogc3RyaW5nO1xuXG4gIGJyb3dzZXJUeXBlOiBzdHJpbmc7XG5cbiAgdXJsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgYnJvd3NlclR5cGU6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICB3aW5kb3dIYW5kbGUgPSBERUZBVUxUX1dJTkRPV19IQU5ETEVcbiAgKSB7XG4gICAgc3VwZXIoWkVTVF9DTElFTlRfTEFVTkNIKTtcbiAgICB0aGlzLndpbmRvd0hhbmRsZSA9IHdpbmRvd0hhbmRsZTtcbiAgICB0aGlzLmJyb3dzZXJUeXBlID0gYnJvd3NlclR5cGU7XG4gICAgdGhpcy51cmwgPSB1cmw7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgd2luZG93SGFuZGxlOiB0aGlzLndpbmRvd0hhbmRsZSxcbiAgICAgIGJyb3dzZXJUeXBlOiB0aGlzLmJyb3dzZXJUeXBlLFxuICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgIGNhcGFiaWxpdGllczogJycsXG4gICAgICBoZWFkbGVzczogZmFsc2UsXG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBlbGVtZW50VHlwZTogdGhpcy5lbGVtZW50VHlwZSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBaZXN0U3RhdGVtZW50Q29tbWVudCBleHRlbmRzIFplc3RTdGF0ZW1lbnQge1xuICBjb21tZW50OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoY29tbWVudDogc3RyaW5nKSB7XG4gICAgc3VwZXIoWkVTVF9DT01NRU5UKTtcbiAgICB0aGlzLmNvbW1lbnQgPSBjb21tZW50O1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLmVsZW1lbnRUeXBlLFxuICAgICAgY29tbWVudDogdGhpcy5jb21tZW50LFxuICAgIH0pO1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIFplc3RTdGF0ZW1lbnRFbGVtZW50IGV4dGVuZHMgWmVzdFN0YXRlbWVudCB7XG4gIGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvcjtcblxuICB3aW5kb3dIYW5kbGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50VHlwZTogc3RyaW5nLCBlbGVtZW50TG9jYXRvcjogRWxlbWVudExvY2F0b3IpIHtcbiAgICBzdXBlcihlbGVtZW50VHlwZSk7XG4gICAgdGhpcy5lbGVtZW50TG9jYXRvciA9IGVsZW1lbnRMb2NhdG9yO1xuICB9XG59XG5cbmNsYXNzIFplc3RTdGF0ZW1lbnRFbGVtZW50Q2xpY2sgZXh0ZW5kcyBaZXN0U3RhdGVtZW50RWxlbWVudCB7XG4gIHdhaXRGb3JNc2VjOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudExvY2F0b3I6IEVsZW1lbnRMb2NhdG9yLFxuICAgIHdhaXRGb3JNc2VjOiBudW1iZXIsXG4gICAgd2luZG93SGFuZGxlID0gREVGQVVMVF9XSU5ET1dfSEFORExFXG4gICkge1xuICAgIHN1cGVyKFpFU1RfQ0xJRU5UX0VMRU1FTlRfQ0xJQ0ssIGVsZW1lbnRMb2NhdG9yKTtcbiAgICB0aGlzLndpbmRvd0hhbmRsZSA9IHdpbmRvd0hhbmRsZTtcbiAgICB0aGlzLndhaXRGb3JNc2VjID0gd2FpdEZvck1zZWM7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgd2luZG93SGFuZGxlOiB0aGlzLndpbmRvd0hhbmRsZSxcbiAgICAgIC4uLnRoaXMuZWxlbWVudExvY2F0b3IudG9KU09OKCksXG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgIHdhaXRGb3JNc2VjOiB0aGlzLndhaXRGb3JNc2VjLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLmVsZW1lbnRUeXBlLFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFplc3RTdGF0ZW1lbnRFbGVtZW50U2Nyb2xsVG8gZXh0ZW5kcyBaZXN0U3RhdGVtZW50RWxlbWVudCB7XG4gIHdhaXRGb3JNc2VjOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudExvY2F0b3I6IEVsZW1lbnRMb2NhdG9yLFxuICAgIHdhaXRGb3JNc2VjOiBudW1iZXIsXG4gICAgd2luZG93SGFuZGxlID0gREVGQVVMVF9XSU5ET1dfSEFORExFXG4gICkge1xuICAgIHN1cGVyKFpFU1RfQ0xJRU5UX0VMRU1FTlRfU0NST0xMX1RPLCBlbGVtZW50TG9jYXRvcik7XG4gICAgdGhpcy53YWl0Rm9yTXNlYyA9IHdhaXRGb3JNc2VjO1xuICAgIHRoaXMud2luZG93SGFuZGxlID0gd2luZG93SGFuZGxlO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHdpbmRvd0hhbmRsZTogdGhpcy53aW5kb3dIYW5kbGUsXG4gICAgICAuLi50aGlzLmVsZW1lbnRMb2NhdG9yLnRvSlNPTigpLFxuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICB3YWl0Rm9yTXNlYzogdGhpcy53YWl0Rm9yTXNlYyxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBlbGVtZW50VHlwZTogdGhpcy5lbGVtZW50VHlwZSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBaZXN0U3RhdGVtZW50RWxlbWVudFNlbmRLZXlzIGV4dGVuZHMgWmVzdFN0YXRlbWVudEVsZW1lbnQge1xuICBrZXlzOiBzdHJpbmc7XG5cbiAgd2FpdEZvck1zZWM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50TG9jYXRvcjogRWxlbWVudExvY2F0b3IsXG4gICAga2V5czogc3RyaW5nLFxuICAgIHdhaXRGb3JNc2VjOiBudW1iZXIsXG4gICAgd2luZG93SGFuZGxlID0gREVGQVVMVF9XSU5ET1dfSEFORExFXG4gICkge1xuICAgIHN1cGVyKFpFU1RfQ0xJRU5UX0VMRU1FTlRfU0VORF9LRVlTLCBlbGVtZW50TG9jYXRvcik7XG4gICAgdGhpcy5rZXlzID0ga2V5cztcbiAgICB0aGlzLndhaXRGb3JNc2VjID0gd2FpdEZvck1zZWM7XG4gICAgdGhpcy53aW5kb3dIYW5kbGUgPSB3aW5kb3dIYW5kbGU7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgdmFsdWU6IHRoaXMua2V5cyxcbiAgICAgIHdpbmRvd0hhbmRsZTogdGhpcy53aW5kb3dIYW5kbGUsXG4gICAgICAuLi50aGlzLmVsZW1lbnRMb2NhdG9yLnRvSlNPTigpLFxuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICB3YWl0Rm9yTXNlYzogdGhpcy53YWl0Rm9yTXNlYyxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBlbGVtZW50VHlwZTogdGhpcy5lbGVtZW50VHlwZSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBaZXN0U3RhdGVtZW50RWxlbWVudFN1Ym1pdCBleHRlbmRzIFplc3RTdGF0ZW1lbnRFbGVtZW50IHtcbiAga2V5czogc3RyaW5nO1xuXG4gIHdhaXRGb3JNc2VjOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudExvY2F0b3I6IEVsZW1lbnRMb2NhdG9yLFxuICAgIHdhaXRGb3JNc2VjOiBudW1iZXIsXG4gICAgd2luZG93SGFuZGxlID0gREVGQVVMVF9XSU5ET1dfSEFORExFXG4gICkge1xuICAgIHN1cGVyKFpFU1RfQ0xJRU5UX0VMRU1FTlRfU1VCTUlULCBlbGVtZW50TG9jYXRvcik7XG4gICAgdGhpcy53YWl0Rm9yTXNlYyA9IHdhaXRGb3JNc2VjO1xuICAgIHRoaXMud2luZG93SGFuZGxlID0gd2luZG93SGFuZGxlO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHZhbHVlOiB0aGlzLmtleXMsXG4gICAgICB3aW5kb3dIYW5kbGU6IHRoaXMud2luZG93SGFuZGxlLFxuICAgICAgLi4udGhpcy5lbGVtZW50TG9jYXRvci50b0pTT04oKSxcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgd2FpdEZvck1zZWM6IHRoaXMud2FpdEZvck1zZWMsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudEVsZW1lbnRDbGVhciBleHRlbmRzIFplc3RTdGF0ZW1lbnRFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudExvY2F0b3I6IEVsZW1lbnRMb2NhdG9yLFxuICAgIHdpbmRvd0hhbmRsZSA9IERFRkFVTFRfV0lORE9XX0hBTkRMRVxuICApIHtcbiAgICBzdXBlcihaRVNUX0NMSUVOVF9FTEVNRU5UX0NMRUFSLCBlbGVtZW50TG9jYXRvcik7XG4gICAgdGhpcy53aW5kb3dIYW5kbGUgPSB3aW5kb3dIYW5kbGU7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgd2luZG93SGFuZGxlOiB0aGlzLndpbmRvd0hhbmRsZSxcbiAgICAgIC4uLnRoaXMuZWxlbWVudExvY2F0b3IudG9KU09OKCksXG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBlbGVtZW50VHlwZTogdGhpcy5lbGVtZW50VHlwZSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBaZXN0U3RhdGVtZW50V2luZG93Q2xvc2UgZXh0ZW5kcyBaZXN0U3RhdGVtZW50IHtcbiAgc2xlZXBJblNlY29uZHM6IG51bWJlcjtcblxuICB3aW5kb3dIYW5kbGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzbGVlcEluU2Vjb25kczogbnVtYmVyLCB3aW5kb3dIYW5kbGUgPSBERUZBVUxUX1dJTkRPV19IQU5ETEUpIHtcbiAgICBzdXBlcihaRVNUX0NMSUVOVF9XSU5ET1dfQ0xPU0UpO1xuICAgIHRoaXMuc2xlZXBJblNlY29uZHMgPSBzbGVlcEluU2Vjb25kcztcbiAgICB0aGlzLndpbmRvd0hhbmRsZSA9IHdpbmRvd0hhbmRsZTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB3aW5kb3dIYW5kbGU6IHRoaXMud2luZG93SGFuZGxlLFxuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICBzbGVlcEluU2Vjb25kczogdGhpcy5zbGVlcEluU2Vjb25kcyxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBlbGVtZW50VHlwZTogdGhpcy5lbGVtZW50VHlwZSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBaZXN0U3RhdGVtZW50U3dpdGNoVG9GcmFtZSBleHRlbmRzIFplc3RTdGF0ZW1lbnQge1xuICBmcmFtZUluZGV4OiBudW1iZXI7XG5cbiAgZnJhbWVOYW1lOiBzdHJpbmc7XG5cbiAgd2luZG93SGFuZGxlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZnJhbWVJbmRleDogbnVtYmVyLFxuICAgIGZyYW1lTmFtZSA9ICcnLFxuICAgIHdpbmRvd0hhbmRsZSA9IERFRkFVTFRfV0lORE9XX0hBTkRMRVxuICApIHtcbiAgICBzdXBlcihaRVNUX0NMSUVOVF9TV0lUQ0hfVE9fRlJBTUUpO1xuICAgIHRoaXMuZnJhbWVJbmRleCA9IGZyYW1lSW5kZXg7XG4gICAgdGhpcy5mcmFtZU5hbWUgPSBmcmFtZU5hbWU7XG4gICAgdGhpcy53aW5kb3dIYW5kbGUgPSB3aW5kb3dIYW5kbGU7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgd2luZG93SGFuZGxlOiB0aGlzLndpbmRvd0hhbmRsZSxcbiAgICAgIGZyYW1lSW5kZXg6IHRoaXMuZnJhbWVJbmRleCxcbiAgICAgIGZyYW1lTmFtZTogdGhpcy5mcmFtZU5hbWUsXG4gICAgICBwYXJlbnQ6IHRoaXMuZnJhbWVJbmRleCA9PT0gLTEsXG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBlbGVtZW50VHlwZTogdGhpcy5lbGVtZW50VHlwZSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBaZXN0U3RhdGVtZW50RWxlbWVudE1vdXNlT3ZlciBleHRlbmRzIFplc3RTdGF0ZW1lbnRFbGVtZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudExvY2F0b3I6IEVsZW1lbnRMb2NhdG9yKSB7XG4gICAgc3VwZXIoWkVTVF9DTElFTlRfRUxFTUVOVF9NT1VTRV9PVkVSLCBlbGVtZW50TG9jYXRvcik7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHtcbiAgRWxlbWVudExvY2F0b3IsXG4gIFplc3RTdGF0ZW1lbnQsXG4gIFplc3RTdGF0ZW1lbnRDb21tZW50LFxuICBaZXN0U3RhdGVtZW50TGF1bmNoQnJvd3NlcixcbiAgWmVzdFN0YXRlbWVudEVsZW1lbnRNb3VzZU92ZXIsXG4gIFplc3RTdGF0ZW1lbnRFbGVtZW50Q2xpY2ssXG4gIFplc3RTdGF0ZW1lbnRTd2l0Y2hUb0ZyYW1lLFxuICBaZXN0U3RhdGVtZW50RWxlbWVudFNjcm9sbFRvLFxuICBaZXN0U3RhdGVtZW50RWxlbWVudFNlbmRLZXlzLFxuICBaZXN0U3RhdGVtZW50RWxlbWVudFN1Ym1pdCxcbiAgWmVzdFN0YXRlbWVudEVsZW1lbnRDbGVhcixcbiAgWmVzdFN0YXRlbWVudFdpbmRvd0Nsb3NlLFxufTtcbiIsIi8qXG4gKiBaZWQgQXR0YWNrIFByb3h5IChaQVApIGFuZCBpdHMgcmVsYXRlZCBzb3VyY2UgZmlsZXMuXG4gKlxuICogWkFQIGlzIGFuIEhUVFAvSFRUUFMgcHJveHkgZm9yIGFzc2Vzc2luZyB3ZWIgYXBwbGljYXRpb24gc2VjdXJpdHkuXG4gKlxuICogQ29weXJpZ2h0IDIwMjMgVGhlIFpBUCBEZXZlbG9wbWVudCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0VsZW1lbnRMb2NhdG9yfSBmcm9tICcuLi90eXBlcy96ZXN0U2NyaXB0L1plc3RTdGF0ZW1lbnQnO1xuaW1wb3J0IHtaQVBfRkxPQVRJTkdfRElWfSBmcm9tICcuLi91dGlscy9jb25zdGFudHMnO1xuXG5jb25zdCBkeW5hbWljQ2xhc3NFbGVtZW50cyA9IG5ldyBXZWFrU2V0PEVsZW1lbnQ+KCk7XG5jb25zdCBpbnB1dENsYXNzU25hcHNob3RzID0gbmV3IFdlYWtNYXA8RWxlbWVudCwgc3RyaW5nPigpO1xuXG5mdW5jdGlvbiBtYXJrQ2xhc3NBc0R5bmFtaWMoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xuICBkeW5hbWljQ2xhc3NFbGVtZW50cy5hZGQoZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIHNuYXBzaG90SW5wdXRDbGFzcyhlbGVtZW50OiBFbGVtZW50KTogdm9pZCB7XG4gIGlmICghaW5wdXRDbGFzc1NuYXBzaG90cy5oYXMoZWxlbWVudCkpIHtcbiAgICBpbnB1dENsYXNzU25hcHNob3RzLnNldChlbGVtZW50LCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnY2xhc3MnKSA/PyAnJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzQ2xhc3NDaGFuZ2VkU2luY2VTbmFwc2hvdChlbGVtZW50OiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIGlmICghaW5wdXRDbGFzc1NuYXBzaG90cy5oYXMoZWxlbWVudCkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIChcbiAgICBpbnB1dENsYXNzU25hcHNob3RzLmdldChlbGVtZW50KSAhPT0gKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpID8/ICcnKVxuICApO1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRQYXRoVW5pcXVlKHBhdGg6IHN0cmluZywgZG9jdW1lbnRFbGVtZW50OiBEb2N1bWVudCk6IGJvb2xlYW4ge1xuICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKHBhdGgpO1xuICByZXR1cm4gZWxlbWVudHMubGVuZ3RoID09PSAxO1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRYUGF0aFVuaXF1ZShcbiAgeHBhdGg6IHN0cmluZyxcbiAgZG9jdW1lbnRFbGVtZW50OiBEb2N1bWVudFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJlc3VsdCA9IGRvY3VtZW50RWxlbWVudC5ldmFsdWF0ZShcbiAgICB4cGF0aCxcbiAgICBkb2N1bWVudEVsZW1lbnQsXG4gICAgbnVsbCxcbiAgICBYUGF0aFJlc3VsdC5PUkRFUkVEX05PREVfU05BUFNIT1RfVFlQRSxcbiAgICBudWxsXG4gICk7XG4gIHJldHVybiByZXN1bHQuc25hcHNob3RMZW5ndGggPT09IDE7XG59XG5cbmZ1bmN0aW9uIGdldENTU1NlbGVjdG9yKFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgZG9jdW1lbnRFbGVtZW50OiBEb2N1bWVudFxuKTogc3RyaW5nIHtcbiAgbGV0IHNlbGVjdG9yID0gZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChzZWxlY3RvciA9PT0gJ2h0bWwnKSB7XG4gICAgc2VsZWN0b3IgPSAnYm9keSc7XG4gIH0gZWxzZSBpZiAoZWxlbWVudCA9PT0gZG9jdW1lbnRFbGVtZW50LmJvZHkpIHtcbiAgICBzZWxlY3RvciA9ICdib2R5JztcbiAgfSBlbHNlIGlmIChlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICBjb25zdCBwYXJlbnRTZWxlY3RvciA9IGdldENTU1NlbGVjdG9yKFxuICAgICAgZWxlbWVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50LFxuICAgICAgZG9jdW1lbnRFbGVtZW50XG4gICAgKTtcbiAgICBzZWxlY3RvciA9IGAke3BhcmVudFNlbGVjdG9yfSA+ICR7c2VsZWN0b3J9YDtcbiAgfVxuICByZXR1cm4gc2VsZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGlzWmFwRGl2KG5vZGU6IENoaWxkTm9kZSk6IGJvb2xlYW4ge1xuICBpZiAobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICByZXR1cm4gKG5vZGUgYXMgRWxlbWVudCkuZ2V0QXR0cmlidXRlKCdpZCcpID09PSBaQVBfRkxPQVRJTkdfRElWO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZ2V0WFBhdGgoZWxlbWVudDogSFRNTEVsZW1lbnQsIGRvY3VtZW50RWxlbWVudDogRG9jdW1lbnQpOiBzdHJpbmcge1xuICBpZiAoIWVsZW1lbnQudGFnTmFtZSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGxldCBzZWxlY3RvciA9IGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChlbGVtZW50LmlkICYmIGlzRWxlbWVudFhQYXRoVW5pcXVlKHNlbGVjdG9yLCBkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgc2VsZWN0b3IgKz0gYFtAaWQ9XCIke2VsZW1lbnQuaWR9XCJdYDtcbiAgfSBlbHNlIHtcbiAgICBsZXQgaW5kZXggPSAxO1xuICAgIGxldCBzaWJsaW5nID0gZWxlbWVudC5wcmV2aW91c1NpYmxpbmc7XG4gICAgbGV0IGlzVW5pcXVlID0gdHJ1ZTtcbiAgICB3aGlsZSAoc2libGluZykge1xuICAgICAgaWYgKFxuICAgICAgICBzaWJsaW5nLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJlxuICAgICAgICBzaWJsaW5nLm5vZGVOYW1lID09PSBlbGVtZW50Lm5vZGVOYW1lICYmXG4gICAgICAgICFpc1phcERpdihzaWJsaW5nKVxuICAgICAgKSB7XG4gICAgICAgIGluZGV4ICs9IDE7XG4gICAgICAgIGlzVW5pcXVlID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBzaWJsaW5nID0gc2libGluZy5wcmV2aW91c1NpYmxpbmc7XG4gICAgfVxuXG4gICAgaWYgKGlzVW5pcXVlKSB7XG4gICAgICBzaWJsaW5nID0gZWxlbWVudC5uZXh0U2libGluZztcbiAgICAgIHdoaWxlIChzaWJsaW5nKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBzaWJsaW5nLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJlxuICAgICAgICAgIHNpYmxpbmcubm9kZU5hbWUgPT09IGVsZW1lbnQubm9kZU5hbWVcbiAgICAgICAgKSB7XG4gICAgICAgICAgaXNVbmlxdWUgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzaWJsaW5nID0gc2libGluZy5uZXh0U2libGluZztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5kZXggIT09IDEgfHwgIWlzVW5pcXVlKSB7XG4gICAgICBzZWxlY3RvciArPSBgWyR7aW5kZXh9XWA7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgIGNvbnN0IHBhcmVudFNlbGVjdG9yID0gZ2V0WFBhdGgoXG4gICAgICBlbGVtZW50LnBhcmVudE5vZGUgYXMgSFRNTEVsZW1lbnQsXG4gICAgICBkb2N1bWVudEVsZW1lbnRcbiAgICApO1xuICAgIHNlbGVjdG9yID0gYCR7cGFyZW50U2VsZWN0b3J9LyR7c2VsZWN0b3J9YDtcbiAgfVxuICByZXR1cm4gc2VsZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGdldFBhdGgoXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50LFxuICBkb2N1bWVudEVsZW1lbnQ6IERvY3VtZW50XG4pOiBFbGVtZW50TG9jYXRvciB7XG4gIGNvbnN0IHBhdGg6IEVsZW1lbnRMb2NhdG9yID0gbmV3IEVsZW1lbnRMb2NhdG9yKCcnLCAnJyk7XG4gIGlmIChlbGVtZW50LmlkKSB7XG4gICAgcGF0aC50eXBlID0gJ2lkJztcbiAgICBwYXRoLmVsZW1lbnQgPSBlbGVtZW50LmlkO1xuICB9IGVsc2UgaWYgKFxuICAgICFkeW5hbWljQ2xhc3NFbGVtZW50cy5oYXMoZWxlbWVudCkgJiZcbiAgICAhaGFzQ2xhc3NDaGFuZ2VkU2luY2VTbmFwc2hvdChlbGVtZW50KSAmJlxuICAgIGVsZW1lbnQuY2xhc3NMaXN0Lmxlbmd0aCA9PT0gMSAmJlxuICAgIGVsZW1lbnQuY2xhc3NMaXN0Lml0ZW0oMCkgIT0gbnVsbCAmJlxuICAgIGlzRWxlbWVudFBhdGhVbmlxdWUoYC4ke2VsZW1lbnQuY2xhc3NMaXN0Lml0ZW0oMCl9YCwgZG9jdW1lbnRFbGVtZW50KVxuICApIHtcbiAgICBwYXRoLnR5cGUgPSAnY2xhc3NOYW1lJztcbiAgICBwYXRoLmVsZW1lbnQgPSBgJHtlbGVtZW50LmNsYXNzTGlzdC5pdGVtKDApfWA7XG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBnZXRDU1NTZWxlY3RvcihlbGVtZW50LCBkb2N1bWVudEVsZW1lbnQpO1xuICAgIGlmIChzZWxlY3RvciAmJiBpc0VsZW1lbnRQYXRoVW5pcXVlKHNlbGVjdG9yLCBkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgICBwYXRoLnR5cGUgPSAnY3NzU2VsZWN0b3InO1xuICAgICAgcGF0aC5lbGVtZW50ID0gc2VsZWN0b3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHhwYXRoID0gZ2V0WFBhdGgoZWxlbWVudCwgZG9jdW1lbnRFbGVtZW50KTtcbiAgICAgIGlmICh4cGF0aCkge1xuICAgICAgICBwYXRoLnR5cGUgPSAneHBhdGgnO1xuICAgICAgICBwYXRoLmVsZW1lbnQgPSB4cGF0aDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGF0aDtcbn1cblxuZXhwb3J0IHtnZXRQYXRoLCBtYXJrQ2xhc3NBc0R5bmFtaWMsIHNuYXBzaG90SW5wdXRDbGFzc307XG4iLCIvKlxuICogWmVkIEF0dGFjayBQcm94eSAoWkFQKSBhbmQgaXRzIHJlbGF0ZWQgc291cmNlIGZpbGVzLlxuICpcbiAqIFpBUCBpcyBhbiBIVFRQL0hUVFBTIHByb3h5IGZvciBhc3Nlc3Npbmcgd2ViIGFwcGxpY2F0aW9uIHNlY3VyaXR5LlxuICpcbiAqIENvcHlyaWdodCAyMDIzIFRoZSBaQVAgRGV2ZWxvcG1lbnQgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IGRlYm91bmNlIGZyb20gJ2xvZGFzaC9kZWJvdW5jZSc7XG5pbXBvcnQgQnJvd3NlciBmcm9tICd3ZWJleHRlbnNpb24tcG9seWZpbGwnO1xuaW1wb3J0IHtcbiAgRWxlbWVudExvY2F0b3IsXG4gIFplc3RTdGF0ZW1lbnQsXG4gIFplc3RTdGF0ZW1lbnRDb21tZW50LFxuICBaZXN0U3RhdGVtZW50RWxlbWVudENsaWNrLFxuICBaZXN0U3RhdGVtZW50RWxlbWVudFNjcm9sbFRvLFxuICBaZXN0U3RhdGVtZW50RWxlbWVudFNlbmRLZXlzLFxuICBaZXN0U3RhdGVtZW50RWxlbWVudFN1Ym1pdCxcbiAgWmVzdFN0YXRlbWVudExhdW5jaEJyb3dzZXIsXG4gIFplc3RTdGF0ZW1lbnRTd2l0Y2hUb0ZyYW1lLFxufSBmcm9tICcuLi90eXBlcy96ZXN0U2NyaXB0L1plc3RTdGF0ZW1lbnQnO1xuaW1wb3J0IHtaZXN0U2NyaXB0TWVzc2FnZX0gZnJvbSAnLi4vdHlwZXMvemVzdFNjcmlwdC9aZXN0U2NyaXB0JztcbmltcG9ydCB7Z2V0UGF0aCwgbWFya0NsYXNzQXNEeW5hbWljLCBzbmFwc2hvdElucHV0Q2xhc3N9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQge2Rvd25sb2FkSnNvbn0gZnJvbSAnLi4vdXRpbHMvdXRpbCc7XG5pbXBvcnQge1xuICBHRVRfWkVTVF9TQ1JJUFQsXG4gIFNUT1BfUkVDT1JESU5HLFxuICBaQVBfRkxPQVRJTkdfRElWLFxuICBaQVBfRkxPQVRJTkdfRElWX0VMRU1FTlRTLFxuICBaRVNUX1NDUklQVCxcbn0gZnJvbSAnLi4vdXRpbHMvY29uc3RhbnRzJztcblxuY29uc3QgU1RPUF9SRUNPUkRJTkdfSUQgPSAnWkFQLXN0b3AtcmVjb3JkaW5nLWJ1dHRvbic7XG5jb25zdCBTVE9QX1JFQ09SRElOR19URVhUID0gJ1N0b3AgYW5kIERvd25sb2FkIFJlY29yZGluZyc7XG5cbmNsYXNzIFJlY29yZGVyIHtcbiAgcmVhZG9ubHkgdGltZUFkanVzdG1lbnRNaWxsaXM6IG51bWJlciA9IDMwMDA7XG5cbiAgcmVhZG9ubHkgbWluaW11bVdhaXRUaW1lSW5NaWxsaXM6IG51bWJlciA9IDUwMDA7XG5cbiAgcHJldmlvdXNET01TdGF0ZTogc3RyaW5nO1xuXG4gIGN1ckxldmVsID0gLTE7XG5cbiAgY3VyRnJhbWUgPSAwO1xuXG4gIGFjdGl2ZSA9IGZhbHNlO1xuXG4gIGhhdmVMaXN0ZW5lcnNCZWVuQWRkZWQgPSBmYWxzZTtcblxuICBmbG9hdGluZ1dpbmRvd0luc2VydGVkID0gZmFsc2U7XG5cbiAgaXNOb3RpZmljYXRpb25SYWlzZWQgPSBmYWxzZTtcblxuICAvLyBFbnRlciBrZXlkb3duIGV2ZW50cyBvZnRlbiBvY2N1ciBiZWZvcmUgdGhlIGlucHV0IGNoYW5nZSBldmVudHMsIHNvIHdlIHJlb3JkZXIgdGhlbSBpZiBuZWVkZWRcbiAgY2FjaGVkU3VibWl0PzogWmVzdFN0YXRlbWVudEVsZW1lbnRTdWJtaXQ7XG5cbiAgLy8gV2UgY2FuIGdldCBkdXBsaWNhdGUgZXZlbnRzIGZvciB0aGUgZW50ZXIga2V5LCB0aGlzIGFsbG93cyB1cyB0byBkZWR1cCB0aGVtXG4gIGNhY2hlZFRpbWVTdGFtcCA9IC0xO1xuXG4gIGxhc3RTdGF0ZW1lbnRUaW1lOiBudW1iZXI7XG5cbiAgbGFzdFVzZXJJbnRlcmFjdGlvblRpbWUgPSAwO1xuXG4gIGxhc3RNb3VzZURvd25UYXJnZXQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCA9IG51bGw7XG5cbiAgcmVhZG9ubHkgVVNFUl9JTlRFUkFDVElPTl9XSU5ET1dfTVMgPSA1MDA7XG5cbiAgcGVuZGluZ1N5bnRoZXRpY0NsaWNrVGFyZ2V0OiBFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcGVuZGluZ1N5bnRoZXRpY0NsaWNrVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgYXN5bmMgc2VuZFplc3RTY3JpcHRUb1pBUChcbiAgICB6ZXN0U3RhdGVtZW50OiBaZXN0U3RhdGVtZW50LFxuICAgIHBhcmFtczoge3NlbmRDYWNoZTogYm9vbGVhbjsgbm90aWZ5OiBib29sZWFufVxuICApOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGlmIChwYXJhbXMuc2VuZENhY2hlKSB7XG4gICAgICB0aGlzLmhhbmRsZUNhY2hlZFN1Ym1pdCgpO1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZygnWkFQIFNlbmRpbmcgc3RhdGVtZW50JywgemVzdFN0YXRlbWVudCk7XG4gICAgaWYgKHBhcmFtcy5ub3RpZnkpIHtcbiAgICAgIHRoaXMubm90aWZ5KHplc3RTdGF0ZW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gQnJvd3Nlci5ydW50aW1lLnNlbmRNZXNzYWdlKHtcbiAgICAgIHR5cGU6IFpFU1RfU0NSSVBULFxuICAgICAgZGF0YTogemVzdFN0YXRlbWVudC50b0pTT04oKSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFdhaXRlZCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLmxhc3RTdGF0ZW1lbnRUaW1lID09PSB1bmRlZmluZWQgfHwgdGhpcy5sYXN0U3RhdGVtZW50VGltZSA9PT0gMCkge1xuICAgICAgdGhpcy5sYXN0U3RhdGVtZW50VGltZSA9IERhdGUubm93KCk7XG4gICAgfVxuICAgIC8vIEFkanVzdCBzdGFydCB0aW1lXG4gICAgY29uc3QgbGFzdFN0bXRUaW1lID0gdGhpcy5sYXN0U3RhdGVtZW50VGltZSAtIHRoaXMudGltZUFkanVzdG1lbnRNaWxsaXM7XG4gICAgLy8gUm91bmQgdG8gbmVhcmVzdCBtaW5pbXVtIChpbiBtaWxsaXMpXG4gICAgY29uc3Qgd2FpdGVkID1cbiAgICAgIE1hdGguY2VpbCgoRGF0ZS5ub3coKSAtIGxhc3RTdG10VGltZSkgLyB0aGlzLm1pbmltdW1XYWl0VGltZUluTWlsbGlzKSAqXG4gICAgICB0aGlzLm1pbmltdW1XYWl0VGltZUluTWlsbGlzO1xuICAgIHRoaXMubGFzdFN0YXRlbWVudFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHJldHVybiB3YWl0ZWQ7XG4gIH1cblxuICBzZW5kU2Nyb2xsVG9Ub1phcChlbGVtZW50TG9jYXRvcjogRWxlbWVudExvY2F0b3IsIHdhaXRGb3JNc2VjOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnNlbmRaZXN0U2NyaXB0VG9aQVAoXG4gICAgICBuZXcgWmVzdFN0YXRlbWVudEVsZW1lbnRTY3JvbGxUbyhlbGVtZW50TG9jYXRvciwgd2FpdEZvck1zZWMpLFxuICAgICAge3NlbmRDYWNoZTogZmFsc2UsIG5vdGlmeTogZmFsc2V9XG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZUNhY2hlZFN1Ym1pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYWNoZWRTdWJtaXQpIHtcbiAgICAgIHRoaXMuc2VuZFNjcm9sbFRvVG9aYXAoXG4gICAgICAgIHRoaXMuY2FjaGVkU3VibWl0LmVsZW1lbnRMb2NhdG9yLFxuICAgICAgICB0aGlzLmdldFdhaXRlZCgpXG4gICAgICApO1xuICAgICAgLy8gY29uc29sZS5sb2coJ1pBUCBTZW5kaW5nIGNhY2hlZCBzdWJtaXQnLCB0aGlzLmNhY2hlZFN1Ym1pdCk7XG4gICAgICB0aGlzLnNlbmRaZXN0U2NyaXB0VG9aQVAodGhpcy5jYWNoZWRTdWJtaXQsIHtcbiAgICAgICAgc2VuZENhY2hlOiBmYWxzZSxcbiAgICAgICAgbm90aWZ5OiB0cnVlLFxuICAgICAgfSk7XG4gICAgICBkZWxldGUgdGhpcy5jYWNoZWRTdWJtaXQ7XG4gICAgICB0aGlzLmNhY2hlZFRpbWVTdGFtcCA9IC0xO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUZyYW1lU3dpdGNoZXMobGV2ZWw6IG51bWJlciwgZnJhbWVJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VyTGV2ZWwgPT09IGxldmVsICYmIHRoaXMuY3VyRnJhbWUgPT09IGZyYW1lSW5kZXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuY3VyTGV2ZWwgPiBsZXZlbCkge1xuICAgICAgd2hpbGUgKHRoaXMuY3VyTGV2ZWwgPiBsZXZlbCkge1xuICAgICAgICB0aGlzLnNlbmRaZXN0U2NyaXB0VG9aQVAobmV3IFplc3RTdGF0ZW1lbnRTd2l0Y2hUb0ZyYW1lKC0xKSwge1xuICAgICAgICAgIHNlbmRDYWNoZTogdHJ1ZSxcbiAgICAgICAgICBub3RpZnk6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmN1ckxldmVsIC09IDE7XG4gICAgICB9XG4gICAgICB0aGlzLmN1ckZyYW1lID0gZnJhbWVJbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXJMZXZlbCArPSAxO1xuICAgICAgdGhpcy5jdXJGcmFtZSA9IGZyYW1lSW5kZXg7XG4gICAgICB0aGlzLnNlbmRaZXN0U2NyaXB0VG9aQVAobmV3IFplc3RTdGF0ZW1lbnRTd2l0Y2hUb0ZyYW1lKGZyYW1lSW5kZXgpLCB7XG4gICAgICAgIHNlbmRDYWNoZTogdHJ1ZSxcbiAgICAgICAgbm90aWZ5OiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmN1ckxldmVsICE9PSBsZXZlbCkge1xuICAgICAgY29uc29sZS5sb2coJ1pBUCBFcnJvciBpbiBzd2l0Y2hpbmcgZnJhbWVzJyk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ2xpY2soXG4gICAgcGFyYW1zOiB7bGV2ZWw6IG51bWJlcjsgZnJhbWU6IG51bWJlcjsgZWxlbWVudDogRG9jdW1lbnR9LFxuICAgIGV2ZW50OiBFdmVudFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHJldHVybjtcbiAgICBjb25zdCB7bGV2ZWwsIGZyYW1lLCBlbGVtZW50fSA9IHBhcmFtcztcbiAgICBjb25zdCBjbGlja1RhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBFbGVtZW50O1xuICAgIHRoaXMuaGFuZGxlRnJhbWVTd2l0Y2hlcyhsZXZlbCwgZnJhbWUpO1xuICAgIGNvbnNvbGUubG9nKGV2ZW50LCAnWkFQIGNsaWNrZWQnKTtcblxuICAgIGlmICgoZXZlbnQgYXMgTW91c2VFdmVudCkuZGV0YWlsID09PSAwKSB7XG4gICAgICBjb25zdCB0aW1lU2luY2VJbnRlcmFjdGlvbiA9IERhdGUubm93KCkgLSB0aGlzLmxhc3RVc2VySW50ZXJhY3Rpb25UaW1lO1xuICAgICAgY29uc3QgbW91c2VEb3duV2FzT25UYXJnZXQgPVxuICAgICAgICB0aGlzLmxhc3RNb3VzZURvd25UYXJnZXQgIT09IG51bGwgJiZcbiAgICAgICAgY2xpY2tUYXJnZXQuY29udGFpbnModGhpcy5sYXN0TW91c2VEb3duVGFyZ2V0IGFzIE5vZGUpO1xuICAgICAgaWYgKFxuICAgICAgICB0aW1lU2luY2VJbnRlcmFjdGlvbiA+PSB0aGlzLlVTRVJfSU5URVJBQ1RJT05fV0lORE9XX01TIHx8XG4gICAgICAgICFtb3VzZURvd25XYXNPblRhcmdldFxuICAgICAgKSB7XG4gICAgICAgIC8vIFB1cmUgcHJvZ3JhbW1hdGljIGNsaWNrOiBubyByZWNlbnQgdXNlciBpbnRlcmFjdGlvbiBvbiB0aGlzIHRhcmdldC5cbiAgICAgICAgaWYgKHRoaXMuY2FjaGVkU3VibWl0KSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVDYWNoZWRTdWJtaXQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBTeW50aGV0aWMgY2xpY2sgd2l0aCByZWNlbnQgdXNlciBpbnRlcmFjdGlvbiBvbiB0aGlzIHRhcmdldC5cbiAgICAgIC8vIERlZmVyIHJlY29yZGluZzogaWYgdGhlIHJlYWwgY2xpY2sgYXJyaXZlcyBiZWZvcmUgdGhlIHRpbWVyIGZpcmVzIHRoZVxuICAgICAgLy8gc2l0ZSBmaXJlZCBhbiBleHRyYSBjbGljayBidXQgZGlkbid0IHN1cHByZXNzIHRoZSByZWFsIG9uZSwgc28gd2VcbiAgICAgIC8vIGRpc2NhcmQgdGhlIHN5bnRoZXRpYyBhbmQgcmVjb3JkIHRoZSByZWFsIGNsaWNrIGluc3RlYWQuXG4gICAgICBjb25zdCBlbGVtZW50TG9jYXRvciA9IGdldFBhdGgoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LCBlbGVtZW50KTtcbiAgICAgIGlmICh0aGlzLnBlbmRpbmdTeW50aGV0aWNDbGlja1RpbWVyICE9PSBudWxsKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnBlbmRpbmdTeW50aGV0aWNDbGlja1RpbWVyKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGVuZGluZ1N5bnRoZXRpY0NsaWNrVGFyZ2V0ID0gY2xpY2tUYXJnZXQ7XG4gICAgICB0aGlzLnBlbmRpbmdTeW50aGV0aWNDbGlja1RpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vIE5vIHJlYWwgY2xpY2sgYXJyaXZlZCDigJQgc2l0ZSBzdXBwcmVzc2VkIGl0OyByZWNvcmQgdGhlIHN5bnRoZXRpYy5cbiAgICAgICAgdGhpcy5wZW5kaW5nU3ludGhldGljQ2xpY2tUYXJnZXQgPSBudWxsO1xuICAgICAgICB0aGlzLnBlbmRpbmdTeW50aGV0aWNDbGlja1RpbWVyID0gbnVsbDtcbiAgICAgICAgY29uc3Qgd2FpdGVkID0gdGhpcy5nZXRXYWl0ZWQoKTtcbiAgICAgICAgdGhpcy5zZW5kU2Nyb2xsVG9Ub1phcChlbGVtZW50TG9jYXRvciwgd2FpdGVkKTtcbiAgICAgICAgdGhpcy5zZW5kWmVzdFNjcmlwdFRvWkFQKFxuICAgICAgICAgIG5ldyBaZXN0U3RhdGVtZW50RWxlbWVudENsaWNrKGVsZW1lbnRMb2NhdG9yLCB3YWl0ZWQpLFxuICAgICAgICAgIHtzZW5kQ2FjaGU6IHRydWUsIG5vdGlmeTogdHJ1ZX1cbiAgICAgICAgKTtcbiAgICAgIH0sIDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFJlYWwgdXNlciBjbGljayAoZGV0YWlsID4gMCkuXG4gICAgLy8gSWYgYSBzeW50aGV0aWMgd2FzIHBlbmRpbmcgZm9yIHRoaXMgZXhhY3QgdGFyZ2V0LCB0aGUgc2l0ZSBmaXJlZCBhblxuICAgIC8vIGV4dHJhIGNsaWNrIGJ1dCBkaWQgbm90IHN1cHByZXNzIHRoZSByZWFsIG9uZSDigJQgZGlzY2FyZCB0aGUgc3ludGhldGljLlxuICAgIGlmIChcbiAgICAgIHRoaXMucGVuZGluZ1N5bnRoZXRpY0NsaWNrVGFyZ2V0ICE9PSBudWxsICYmXG4gICAgICB0aGlzLnBlbmRpbmdTeW50aGV0aWNDbGlja1RhcmdldCA9PT0gY2xpY2tUYXJnZXRcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLnBlbmRpbmdTeW50aGV0aWNDbGlja1RpbWVyICE9PSBudWxsKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnBlbmRpbmdTeW50aGV0aWNDbGlja1RpbWVyKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGVuZGluZ1N5bnRoZXRpY0NsaWNrVGFyZ2V0ID0gbnVsbDtcbiAgICAgIHRoaXMucGVuZGluZ1N5bnRoZXRpY0NsaWNrVGltZXIgPSBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHdhaXRlZCA9IHRoaXMuZ2V0V2FpdGVkKCk7XG4gICAgY29uc3QgZWxlbWVudExvY2F0b3IgPSBnZXRQYXRoKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCwgZWxlbWVudCk7XG4gICAgdGhpcy5zZW5kU2Nyb2xsVG9Ub1phcChlbGVtZW50TG9jYXRvciwgd2FpdGVkKTtcbiAgICB0aGlzLnNlbmRaZXN0U2NyaXB0VG9aQVAoXG4gICAgICBuZXcgWmVzdFN0YXRlbWVudEVsZW1lbnRDbGljayhlbGVtZW50TG9jYXRvciwgd2FpdGVkKSxcbiAgICAgIHtzZW5kQ2FjaGU6IHRydWUsIG5vdGlmeTogdHJ1ZX1cbiAgICApO1xuICB9XG5cbiAgaGFuZGxlVXNlckludGVyYWN0aW9uKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMubGFzdFVzZXJJbnRlcmFjdGlvblRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMubGFzdE1vdXNlRG93blRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgfVxuXG4gIGhhbmRsZVNjcm9sbChwYXJhbXM6IHtsZXZlbDogbnVtYmVyOyBmcmFtZTogbnVtYmVyfSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSByZXR1cm47XG4gICAgY29uc3Qge2xldmVsLCBmcmFtZX0gPSBwYXJhbXM7XG4gICAgdGhpcy5oYW5kbGVGcmFtZVN3aXRjaGVzKGxldmVsLCBmcmFtZSk7XG4gICAgY29uc29sZS5sb2coZXZlbnQsICdaQVAgc2Nyb2xsaW5nLi4gJyk7XG4gICAgLy8gc2Nyb2xsIHRoZSBuZWFyZXN0IGFuY2VzdG9yIHdpdGggc2Nyb2xsaW5nIGFiaWxpdHlcbiAgfVxuXG4gIGhhbmRsZU1vdXNlT3ZlcihcbiAgICBwYXJhbXM6IHtsZXZlbDogbnVtYmVyOyBmcmFtZTogbnVtYmVyOyBlbGVtZW50OiBEb2N1bWVudH0sXG4gICAgZXZlbnQ6IEV2ZW50XG4gICk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkgcmV0dXJuO1xuICAgIGNvbnN0IHtsZXZlbCwgZnJhbWUsIGVsZW1lbnR9ID0gcGFyYW1zO1xuICAgIGNvbnN0IGN1cnJlbnRET01TdGF0ZSA9IGVsZW1lbnQuZG9jdW1lbnRFbGVtZW50Lm91dGVySFRNTDtcbiAgICBpZiAoY3VycmVudERPTVN0YXRlID09PSB0aGlzLnByZXZpb3VzRE9NU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wcmV2aW91c0RPTVN0YXRlID0gY3VycmVudERPTVN0YXRlO1xuICAgIHRoaXMuaGFuZGxlRnJhbWVTd2l0Y2hlcyhsZXZlbCwgZnJhbWUpO1xuICAgIGNvbnNvbGUubG9nKGV2ZW50LCAnWkFQIE1vdXNlT3ZlcicpO1xuICAgIC8vIHNlbmQgbW91c2VvdmVyIGV2ZW50XG4gIH1cblxuICBoYW5kbGVDaGFuZ2UoXG4gICAgcGFyYW1zOiB7bGV2ZWw6IG51bWJlcjsgZnJhbWU6IG51bWJlcjsgZWxlbWVudDogRG9jdW1lbnR9LFxuICAgIGV2ZW50OiBFdmVudFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHJldHVybjtcbiAgICBjb25zdCB7bGV2ZWwsIGZyYW1lLCBlbGVtZW50fSA9IHBhcmFtcztcbiAgICBjb25zdCB3YWl0ZWQ6IG51bWJlciA9IHRoaXMuZ2V0V2FpdGVkKCk7XG4gICAgdGhpcy5oYW5kbGVGcmFtZVN3aXRjaGVzKGxldmVsLCBmcmFtZSk7XG4gICAgY29uc29sZS5sb2coZXZlbnQsICdaQVAgY2hhbmdlJywgKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSk7XG4gICAgY29uc3QgZWxlbWVudExvY2F0b3IgPSBnZXRQYXRoKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCwgZWxlbWVudCk7XG4gICAgLy8gU2VuZCB0aGUga2V5cyBiZWZvcmUgYSBjYWNoZWQgc3VibWl0IHN0YXRlbWVudCBvbiB0aGUgc2FtZSBlbGVtZW50XG4gICAgaWYgKFxuICAgICAgdGhpcy5jYWNoZWRTdWJtaXQgJiZcbiAgICAgIHRoaXMuY2FjaGVkU3VibWl0LmVsZW1lbnRMb2NhdG9yLmVsZW1lbnQgIT09IGVsZW1lbnRMb2NhdG9yLmVsZW1lbnRcbiAgICApIHtcbiAgICAgIC8vIFRoZSBjYWNoZWQgc3VibWl0IHdhcyBub3Qgb24gdGhlIHNhbWUgZWxlbWVudCwgc28gc2VuZCBpdFxuICAgICAgdGhpcy5oYW5kbGVDYWNoZWRTdWJtaXQoKTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxTZWxlY3RFbGVtZW50O1xuICAgIGNvbnN0IGtleXMgPVxuICAgICAgc2VsZWN0LnRhZ05hbWUgPT09ICdTRUxFQ1QnXG4gICAgICAgID8gKChzZWxlY3Quc2VsZWN0ZWRPcHRpb25zWzBdIGFzIEhUTUxPcHRpb25FbGVtZW50IHwgdW5kZWZpbmVkKT8udGV4dCA/P1xuICAgICAgICAgICcnKVxuICAgICAgICA6IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy5zZW5kU2Nyb2xsVG9Ub1phcChlbGVtZW50TG9jYXRvciwgd2FpdGVkKTtcbiAgICB0aGlzLnNlbmRaZXN0U2NyaXB0VG9aQVAoXG4gICAgICBuZXcgWmVzdFN0YXRlbWVudEVsZW1lbnRTZW5kS2V5cyhlbGVtZW50TG9jYXRvciwga2V5cywgd2FpdGVkKSxcbiAgICAgIHtzZW5kQ2FjaGU6IGZhbHNlLCBub3RpZnk6IHRydWV9XG4gICAgKTtcbiAgICAvLyBOb3cgc2VuZCB0aGUgY2FjaGVkIHN1Ym1pdCwgaWYgdGhlcmUgc3RpbGwgaXMgb25lXG4gICAgdGhpcy5oYW5kbGVDYWNoZWRTdWJtaXQoKTtcbiAgfVxuXG4gIGhhbmRsZUtleXByZXNzKFxuICAgIHBhcmFtczoge2xldmVsOiBudW1iZXI7IGZyYW1lOiBudW1iZXI7IGVsZW1lbnQ6IERvY3VtZW50fSxcbiAgICBldmVudDogS2V5Ym9hcmRFdmVudFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHJldHVybjtcbiAgICBjb25zdCB7ZWxlbWVudH0gPSBwYXJhbXM7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgaWYgKHRoaXMuY2FjaGVkU3VibWl0ICYmIHRoaXMuY2FjaGVkVGltZVN0YW1wID09PSBldmVudC50aW1lU3RhbXApIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ1pBUCBJZ25vcmluZyBkdXAgRW50ZXIgZXZlbnQnLCB0aGlzLmNhY2hlZFN1Ym1pdCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGFuZGxlQ2FjaGVkU3VibWl0KCk7XG4gICAgICBjb25zdCBlbGVtZW50TG9jYXRvciA9IGdldFBhdGgoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50LCBlbGVtZW50KTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdaQVAgRW50ZXIga2V5IHByZXNzZWQnLCBlbGVtZW50TG9jYXRvciwgZXZlbnQudGltZVN0YW1wKTtcbiAgICAgIC8vIENhY2hlIHRoZSBzdGF0ZW1lbnQgYXMgaXQgb2Z0ZW4gb2NjdXJzIGJlZm9yZSB0aGUgY2hhbmdlIGV2ZW50IG9jY3Vyc1xuICAgICAgdGhpcy5jYWNoZWRTdWJtaXQgPSBuZXcgWmVzdFN0YXRlbWVudEVsZW1lbnRTdWJtaXQoXG4gICAgICAgIGVsZW1lbnRMb2NhdG9yLFxuICAgICAgICB0aGlzLmdldFdhaXRlZCgpXG4gICAgICApO1xuICAgICAgdGhpcy5jYWNoZWRUaW1lU3RhbXAgPSBldmVudC50aW1lU3RhbXA7XG4gICAgICAvLyBjb25zb2xlLmxvZygnWkFQIENhY2hpbmcgc3VibWl0JywgdGhpcy5jYWNoZWRTdWJtaXQpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZVJlc2l6ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuYWN0aXZlKSByZXR1cm47XG4gICAgY29uc3Qgd2lkdGggPVxuICAgICAgd2luZG93LmlubmVyV2lkdGggfHxcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCB8fFxuICAgICAgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDtcbiAgICBjb25zdCBoZWlnaHQgPVxuICAgICAgd2luZG93LmlubmVySGVpZ2h0IHx8XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8XG4gICAgICBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodDtcbiAgICAvLyBzZW5kIHdpbmRvdyByZXNpemUgZXZlbnRcbiAgICBjb25zb2xlLmxvZygnWkFQIFdpbmRvdyBSZXNpemUgOiAnLCB3aWR0aCwgaGVpZ2h0KTtcbiAgfVxuXG4gIGFkZExpc3RlbmVyVG9JbnB1dEZpZWxkKFxuICAgIGVsZW1lbnRzOiBTZXQ8SFRNTEVsZW1lbnQ+LFxuICAgIGlucHV0RmllbGQ6IEhUTUxFbGVtZW50LFxuICAgIGxldmVsOiBudW1iZXIsXG4gICAgZnJhbWU6IG51bWJlcixcbiAgICBlbGVtZW50OiBEb2N1bWVudFxuICApOiB2b2lkIHtcbiAgICBpZiAoIWVsZW1lbnRzLmhhcyhpbnB1dEZpZWxkKSkge1xuICAgICAgZWxlbWVudHMuYWRkKGlucHV0RmllbGQpO1xuICAgICAgaW5wdXRGaWVsZC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAna2V5ZG93bicsXG4gICAgICAgIHRoaXMuaGFuZGxlS2V5cHJlc3MuYmluZCh0aGlzLCB7bGV2ZWwsIGZyYW1lLCBlbGVtZW50fSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlRnJhbWVMb2FkKHBhcmFtczoge1xuICAgIGVsZW1lbnQ6IEhUTUxJRnJhbWVFbGVtZW50IHwgSFRNTEZyYW1lRWxlbWVudDtcbiAgICBsZXZlbDogbnVtYmVyO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3QgZnJhbWUgPSBwYXJhbXMuZWxlbWVudDtcbiAgICBjb25zdCBkb2MgPSBmcmFtZS5jb250ZW50RG9jdW1lbnQgfHwgZnJhbWUuY29udGVudFdpbmRvdz8uZG9jdW1lbnQ7XG4gICAgaWYgKGRvYyAhPSBudWxsKSB7XG4gICAgICB0aGlzLmFkZExpc3RlbmVyc1RvRG9jdW1lbnQoZG9jLCBwYXJhbXMubGV2ZWwsIHRoaXMuaW5kZXhPZkZyYW1lKGZyYW1lKSk7XG4gICAgfVxuICB9XG5cbiAgcHJvY2Vzc0ZyYW1lKGZyYW1lOiBFbGVtZW50LCBsZXZlbDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgaHRtbEVsZW1lbnQgPSBmcmFtZSBhcyBIVE1MSUZyYW1lRWxlbWVudCB8IEhUTUxGcmFtZUVsZW1lbnQ7XG4gICAgY29uc3QgZnJhbWVEb2N1bWVudCA9IGh0bWxFbGVtZW50LmNvbnRlbnRXaW5kb3c/LmRvY3VtZW50O1xuICAgIGlmIChcbiAgICAgIGZyYW1lRG9jdW1lbnQgIT0gbnVsbCAmJlxuICAgICAgZnJhbWVEb2N1bWVudC5yZWFkeVN0YXRlID09PSAnY29tcGxldGUnICYmXG4gICAgICAvLyBDaHJvbWUvRWRnZSByZXBvcnQgY29tcGxldGVkIHdpdGggZGlmZmVyZW50IHNyY1xuICAgICAgZnJhbWVEb2N1bWVudC5kb2N1bWVudFVSSSA9PT0gaHRtbEVsZW1lbnQuc3JjXG4gICAgKSB7XG4gICAgICB0aGlzLmFkZExpc3RlbmVyc1RvRG9jdW1lbnQoXG4gICAgICAgIGZyYW1lRG9jdW1lbnQsXG4gICAgICAgIGxldmVsLFxuICAgICAgICB0aGlzLmluZGV4T2ZGcmFtZShmcmFtZSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdsb2FkJyxcbiAgICAgICAgdGhpcy5oYW5kbGVGcmFtZUxvYWQuYmluZCh0aGlzLCB7XG4gICAgICAgICAgZWxlbWVudDogaHRtbEVsZW1lbnQsXG4gICAgICAgICAgbGV2ZWwsXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBkb21NdXRhdGVkOiBNdXRhdGlvbkNhbGxiYWNrID0gKG11dGF0aW9uc0xpc3Q6IE11dGF0aW9uUmVjb3JkW10pID0+IHtcbiAgICAgIG11dGF0aW9uc0xpc3QuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG11dGF0aW9uLnR5cGUgPT09ICdhdHRyaWJ1dGVzJyAmJlxuICAgICAgICAgIG11dGF0aW9uLmF0dHJpYnV0ZU5hbWUgPT09ICdzcmMnXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0ZyYW1lKG11dGF0aW9uLnRhcmdldCBhcyBFbGVtZW50LCBsZXZlbCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGRvbU11dGF0ZWQpO1xuICAgIG9ic2VydmVyLm9ic2VydmUoZnJhbWUsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBpbmRleE9mRnJhbWUoZWxlbWVudDogRWxlbWVudCk6IG51bWJlciB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBpZiAod2luZG93LmZyYW1lc1tpXS5mcmFtZUVsZW1lbnQgPT09IGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGFkZExpc3RlbmVyc1RvRG9jdW1lbnQoXG4gICAgZWxlbWVudDogRG9jdW1lbnQsXG4gICAgbGV2ZWw6IG51bWJlcixcbiAgICBmcmFtZTogbnVtYmVyXG4gICk6IHZvaWQge1xuICAgIC8vIEEgbGlzdCBvZiBhbGwgb2YgdGhlIHRleHQgZWxlbWVudHMgdGhhdCB3ZSBoYXZlIGFkZGVkIGV2ZW50IGxpc3RlbmVycyB0b1xuICAgIGNvbnN0IHRleHRFbGVtZW50cyA9IG5ldyBTZXQ8SFRNTEVsZW1lbnQ+KCk7XG5cbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2xpY2snLFxuICAgICAgdGhpcy5oYW5kbGVDbGljay5iaW5kKHRoaXMsIHtsZXZlbCwgZnJhbWUsIGVsZW1lbnR9KSxcbiAgICAgIHtcbiAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgIH1cbiAgICApO1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdzY3JvbGwnLFxuICAgICAgZGVib3VuY2UodGhpcy5oYW5kbGVTY3JvbGwuYmluZCh0aGlzLCB7bGV2ZWwsIGZyYW1lLCBlbGVtZW50fSksIDEwMDApXG4gICAgKTtcbiAgICAvLyBEbyBub3QgdHJhY2sgbW91c2Ugb3ZlciBldmVudHMgZm9yIG5vdywgdGhleSBhcmUgbm90IHJlY29yZGVkLlxuICAgIC8vIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAvLyAgICdtb3VzZW92ZXInLFxuICAgIC8vICAgdGhpcy5oYW5kbGVNb3VzZU92ZXIuYmluZCh0aGlzLCB7bGV2ZWwsIGZyYW1lLCBlbGVtZW50fSlcbiAgICAvLyApO1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdjaGFuZ2UnLFxuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UuYmluZCh0aGlzLCB7bGV2ZWwsIGZyYW1lLCBlbGVtZW50fSlcbiAgICApO1xuICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICdtb3VzZWRvd24nLFxuICAgICAgdGhpcy5oYW5kbGVVc2VySW50ZXJhY3Rpb24uYmluZCh0aGlzKSxcbiAgICAgIHtjYXB0dXJlOiB0cnVlfVxuICAgICk7XG5cbiAgICAvLyBBZGQgbGlzdGVuZXJzIHRvIGFsbCB0aGUgZnJhbWVzXG4gICAgY29uc3QgZnJhbWVzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdmcmFtZSwgaWZyYW1lJyk7XG4gICAgZnJhbWVzLmZvckVhY2goKF9mcmFtZSkgPT4gdGhpcy5wcm9jZXNzRnJhbWUoX2ZyYW1lLCBsZXZlbCArIDEpKTtcblxuICAgIC8vIEFkZCBsaXN0ZW5lcnMgdG8gYWxsIG9mIHRoZSB0ZXh0IGZpZWxkc1xuICAgIGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQnKS5mb3JFYWNoKChpbnB1dCkgPT4ge1xuICAgICAgc25hcHNob3RJbnB1dENsYXNzKGlucHV0KTtcbiAgICAgIHRoaXMuYWRkTGlzdGVuZXJUb0lucHV0RmllbGQodGV4dEVsZW1lbnRzLCBpbnB1dCwgbGV2ZWwsIGZyYW1lLCBlbGVtZW50KTtcbiAgICB9KTtcbiAgICAvLyBPYnNlcnZlciBjYWxsYmFjayBmdW5jdGlvbiB0byBoYW5kbGUgRE9NIG11dGF0aW9ucyB0byBkZXRlY3QgYWRkZWQgdGV4dCBmaWVsZHNcbiAgICBjb25zdCBkb21NdXRhdGVkOiBNdXRhdGlvbkNhbGxiYWNrID0gKG11dGF0aW9uc0xpc3Q6IE11dGF0aW9uUmVjb3JkW10pID0+IHtcbiAgICAgIG11dGF0aW9uc0xpc3QuZm9yRWFjaCgobXV0YXRpb24pID0+IHtcbiAgICAgICAgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnKSB7XG4gICAgICAgICAgLy8gVXNlIG5vZGUgdHlwZSBpbnN0ZWFkIG9mIGluc3RhbmNlb2YgYXMgaXQgZG9lcyBub3Qgd29yayByZWxpYWJseVxuICAgICAgICAgIGlmIChtdXRhdGlvbi50YXJnZXQubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICAgICAgICAvLyBMb29rIGZvciBhZGRlZCBpbnB1dCBlbGVtZW50c1xuICAgICAgICAgICAgY29uc3QgaW5wdXRzID0gKG11dGF0aW9uLnRhcmdldCBhcyBFbGVtZW50KS5nZXRFbGVtZW50c0J5VGFnTmFtZShcbiAgICAgICAgICAgICAgJ2lucHV0J1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaW5wdXRzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzTmV3SW5wdXQgPSAhdGV4dEVsZW1lbnRzLmhhcyhpbnB1dHNbal0gYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICAgICAgICBzbmFwc2hvdElucHV0Q2xhc3MoaW5wdXRzW2pdKTtcbiAgICAgICAgICAgICAgdGhpcy5hZGRMaXN0ZW5lclRvSW5wdXRGaWVsZChcbiAgICAgICAgICAgICAgICB0ZXh0RWxlbWVudHMsXG4gICAgICAgICAgICAgICAgaW5wdXRzW2pdLFxuICAgICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICAgIGZyYW1lLFxuICAgICAgICAgICAgICAgIGVsZW1lbnRcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgLy8gSWYgYSBuZXdseSBhZGRlZCBpbnB1dCBhbHJlYWR5IGhhcyBhIHZhbHVlLCBpdHMgc3RhdGUgY2xhc3Mgd2FzXG4gICAgICAgICAgICAgIC8vIGxpa2VseSBzZXQgb24gdGhlIGRldGFjaGVkIG5vZGUgYmVmb3JlIGluc2VydGlvbiBhbmQgd29uJ3QgYmVcbiAgICAgICAgICAgICAgLy8gY2F1Z2h0IGJ5IGNvbXBhcmluZyBhZ2FpbnN0IHRoZSBzbmFwc2hvdC5cbiAgICAgICAgICAgICAgaWYgKGlzTmV3SW5wdXQgJiYgKGlucHV0c1tqXSBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIG1hcmtDbGFzc0FzRHluYW1pYyhpbnB1dHNbal0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihkb21NdXRhdGVkKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQsIHtcbiAgICAgIGF0dHJpYnV0ZXM6IGZhbHNlLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGlzVmlzaWJsZShlbDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBzdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsKTtcblxuICAgIGlmIChcbiAgICAgIHN0eWxlLmRpc3BsYXkgPT09ICdub25lJyB8fFxuICAgICAgc3R5bGUudmlzaWJpbGl0eSA9PT0gJ2hpZGRlbicgfHxcbiAgICAgIHN0eWxlLm9wYWNpdHkgPT09ICcwJ1xuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGxheW91dCBkaW1lbnNpb25zXG4gICAgaWYgKGVsLm9mZnNldFdpZHRoIDw9IDAgJiYgZWwub2Zmc2V0SGVpZ2h0IDw9IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCByZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAvLyBDaGVjayByZW5kZXJlZCBzaXplXG4gICAgaWYgKHJlY3Qud2lkdGggPT09IDAgfHwgcmVjdC5oZWlnaHQgPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBUaGUgZWxlbWVudCBpcyByZW5kZXJlZCBhbmQgdmlzaWJsZSBpbiBsYXlvdXQgKG1heSBzdGlsbCBiZSBvZmYtc2NyZWVuKVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgc2hvdWxkUmVjb3JkKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZSkgcmV0dXJuIHRoaXMuYWN0aXZlO1xuICAgIGlmIChlbGVtZW50LmNsYXNzTmFtZSA9PT0gWkFQX0ZMT0FUSU5HX0RJVl9FTEVNRU5UUykgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmlzVmlzaWJsZShlbGVtZW50KTtcbiAgfVxuXG4gIGdldEJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgbGV0IGJyb3dzZXJOYW1lOiBzdHJpbmc7XG4gICAgY29uc3Qge3VzZXJBZ2VudH0gPSBuYXZpZ2F0b3I7XG4gICAgaWYgKHVzZXJBZ2VudC5pbmNsdWRlcygnQ2hyb21lJykpIHtcbiAgICAgIGJyb3dzZXJOYW1lID0gJ2Nocm9tZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyb3dzZXJOYW1lID0gJ2ZpcmVmb3gnO1xuICAgIH1cbiAgICByZXR1cm4gYnJvd3Nlck5hbWU7XG4gIH1cblxuICBpbml0aWFsaXphdGlvblNjcmlwdChsb2dpblVybCA9ICcnLCBzdGFydFRpbWUgPSAwKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coYFpBUCBpbml0aWFsaXphdGlvblNjcmlwdCAke2xvZ2luVXJsfWApO1xuICAgIEJyb3dzZXIuc3RvcmFnZS5zeW5jLnNldCh7XG4gICAgICBpbml0U2NyaXB0OiBmYWxzZSxcbiAgICAgIGxvZ2luVXJsOiAnJyxcbiAgICAgIHN0YXJ0VGltZTogMCxcbiAgICAgIGRvd25sb2FkU2NyaXB0OiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMubGFzdFN0YXRlbWVudFRpbWUgPSBzdGFydFRpbWU7XG4gICAgY29uc3Qgc3RvcFJlY29yZGluZ0J1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFNUT1BfUkVDT1JESU5HX0lEKTtcbiAgICBpZiAoc3RvcFJlY29yZGluZ0J1dHRvbikge1xuICAgICAgLy8gQ2FuIGhhcHBlbiBpZiByZWNvcmRpbmcgcmVzdGFydGVkIGluIGJyb3dzZXIgbGF1bmNoZWQgZnJvbSBaQVAgcmVjb3JkZXJcbiAgICAgIHN0b3BSZWNvcmRpbmdCdXR0b24udGV4dENvbnRlbnQgPSBTVE9QX1JFQ09SRElOR19URVhUO1xuICAgIH1cblxuICAgIHRoaXMuc2VuZFplc3RTY3JpcHRUb1pBUChcbiAgICAgIG5ldyBaZXN0U3RhdGVtZW50Q29tbWVudChcbiAgICAgICAgYFJlY29yZGVkIGJ5ICR7QnJvd3Nlci5ydW50aW1lLmdldE1hbmlmZXN0KCkubmFtZX0gYCArXG4gICAgICAgICAgYCR7QnJvd3Nlci5ydW50aW1lLmdldE1hbmlmZXN0KCkudmVyc2lvbn0gb24gJHtuYXZpZ2F0b3IudXNlckFnZW50fWBcbiAgICAgICksXG4gICAgICB7c2VuZENhY2hlOiB0cnVlLCBub3RpZnk6IHRydWV9XG4gICAgKTtcbiAgICB0aGlzLnNlbmRaZXN0U2NyaXB0VG9aQVAoXG4gICAgICBuZXcgWmVzdFN0YXRlbWVudExhdW5jaEJyb3dzZXIoXG4gICAgICAgIHRoaXMuZ2V0QnJvd3Nlck5hbWUoKSxcbiAgICAgICAgbG9naW5VcmwgIT09ICcnID8gbG9naW5VcmwgOiB3aW5kb3cubG9jYXRpb24uaHJlZlxuICAgICAgKSxcbiAgICAgIHtzZW5kQ2FjaGU6IHRydWUsIG5vdGlmeTogdHJ1ZX1cbiAgICApO1xuICAgIHRoaXMuaGFuZGxlUmVzaXplKCk7XG4gIH1cblxuICByZWNvcmRVc2VySW50ZXJhY3Rpb25zKFxuICAgIGluaXRTY3JpcHQgPSB0cnVlLFxuICAgIGxvZ2luVXJsID0gJycsXG4gICAgc3RhcnRUaW1lID0gMFxuICApOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyhgWkFQIHVzZXIgaW50ZXJhY3Rpb25zICR7aW5pdFNjcmlwdH0gJHtsb2dpblVybH1gKTtcbiAgICBpZiAoaW5pdFNjcmlwdCkge1xuICAgICAgdGhpcy5pbml0aWFsaXphdGlvblNjcmlwdChsb2dpblVybCwgc3RhcnRUaW1lKTtcbiAgICB9XG4gICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMucHJldmlvdXNET01TdGF0ZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vdXRlckhUTUw7XG4gICAgaWYgKHRoaXMuaGF2ZUxpc3RlbmVyc0JlZW5BZGRlZCkge1xuICAgICAgdGhpcy5pbnNlcnRGbG9hdGluZ1BvcHVwKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaGF2ZUxpc3RlbmVyc0JlZW5BZGRlZCA9IHRydWU7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGRlYm91bmNlKHRoaXMuaGFuZGxlUmVzaXplLCAxMDApKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5hZGRMaXN0ZW5lcnNUb0RvY3VtZW50KGRvY3VtZW50LCAtMSwgMCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBTb21ldGltZXMgdGhyb3cgRE9NRXhjZXB0aW9uOiBCbG9ja2VkIGEgZnJhbWUgd2l0aCBjdXJyZW50IG9yaWdpbiBmcm9tIGFjY2Vzc2luZyBhIGNyb3NzLW9yaWdpbiBmcmFtZS5cbiAgICAgIGNvbnNvbGUubG9nKGVycik7XG4gICAgfVxuICAgIHRoaXMuaW5zZXJ0RmxvYXRpbmdQb3B1cCgpO1xuICB9XG5cbiAgc3RvcFJlY29yZGluZ1VzZXJJbnRlcmFjdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coJ1pBUCBTdG9wcGluZyBSZWNvcmRpbmcgVXNlciBJbnRlcmFjdGlvbnMgLi4uJyk7XG4gICAgdGhpcy5oYW5kbGVDYWNoZWRTdWJtaXQoKTtcbiAgICBCcm93c2VyLnN0b3JhZ2Uuc3luYy5zZXQoe3phcHJlY29yZGluZ2FjdGl2ZTogZmFsc2V9KTtcbiAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgIGNvbnN0IGZsb2F0aW5nRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoWkFQX0ZMT0FUSU5HX0RJVik7XG4gICAgaWYgKGZsb2F0aW5nRGl2KSB7XG4gICAgICBmbG9hdGluZ0Rpdi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIH1cbiAgfVxuXG4gIHBhZChpOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtpfWAucGFkU3RhcnQoMiwgYDBgKTtcbiAgfVxuXG4gIGdldERhdGVTdHJpbmcoKTogc3RyaW5nIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIHJldHVybiBgJHtub3cuZ2V0RnVsbFllYXIoKX0tJHt0aGlzLnBhZChub3cuZ2V0TW9udGgoKSArIDEpfS0ke3RoaXMucGFkKFxuICAgICAgbm93LmdldERhdGUoKVxuICAgICl9LSR7dGhpcy5wYWQobm93LmdldEhvdXJzKCkpfS0ke3RoaXMucGFkKG5vdy5nZXRNaW51dGVzKCkpfS0ke3RoaXMucGFkKFxuICAgICAgbm93LmdldFNlY29uZHMoKVxuICAgICl9YDtcbiAgfVxuXG4gIGluc2VydEZsb2F0aW5nUG9wdXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmxvYXRpbmdXaW5kb3dJbnNlcnRlZCkge1xuICAgICAgY29uc3QgZmxvYXRpbmdEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChaQVBfRkxPQVRJTkdfRElWKTtcbiAgICAgIGlmIChmbG9hdGluZ0Rpdikge1xuICAgICAgICBmbG9hdGluZ0Rpdi5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIGZhLnRleHRDb250ZW50ID1cbiAgICAgIFwiQGZvbnQtZmFjZSB7IGZvbnQtZmFtaWx5OiAnUm9ib3RvJztmb250LXN0eWxlOiBub3JtYWw7Zm9udC13ZWlnaHQ6IDQwMDtcIiArXG4gICAgICBgc3JjOiB1cmwoXCIke0Jyb3dzZXIucnVudGltZS5nZXRVUkwoXG4gICAgICAgICdhc3NldHMvZm9udHMvUm9ib3RvLVJlZ3VsYXIudHRmJ1xuICAgICAgKX1cIik7IH07YDtcblxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZmEpO1xuXG4gICAgY29uc3QgZmxvYXRpbmdEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBmbG9hdGluZ0Rpdi5zdHlsZS5hbGwgPSAnaW5pdGlhbCc7XG4gICAgZmxvYXRpbmdEaXYuY2xhc3NOYW1lID0gWkFQX0ZMT0FUSU5HX0RJVl9FTEVNRU5UUztcbiAgICBmbG9hdGluZ0Rpdi5pZCA9IFpBUF9GTE9BVElOR19ESVY7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnO1xuICAgIGZsb2F0aW5nRGl2LnN0eWxlLnRvcCA9ICcxMDAlJztcbiAgICBmbG9hdGluZ0Rpdi5zdHlsZS5sZWZ0ID0gJzUwJSc7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUud2lkdGggPSAnNDAwcHgnO1xuICAgIGZsb2F0aW5nRGl2LnN0eWxlLmhlaWdodCA9ICcxMDBweCc7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZSgtNTAlLCAtMTA1JSknO1xuICAgIGZsb2F0aW5nRGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjZjlmOWY5JztcbiAgICBmbG9hdGluZ0Rpdi5zdHlsZS5ib3JkZXIgPSAnMnB4IHNvbGlkICNlNzRjM2MnO1xuICAgIGZsb2F0aW5nRGl2LnN0eWxlLmJveFNoYWRvdyA9ICcwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpJztcbiAgICBmbG9hdGluZ0Rpdi5zdHlsZS56SW5kZXggPSAnOTk5OTk5JztcbiAgICBmbG9hdGluZ0Rpdi5zdHlsZS50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICBmbG9hdGluZ0Rpdi5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnNXB4JztcbiAgICBmbG9hdGluZ0Rpdi5zdHlsZS5mb250RmFtaWx5ID0gJ1JvYm90byc7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICBmbG9hdGluZ0Rpdi5zdHlsZS5mbGV4RGlyZWN0aW9uID0gJ2NvbHVtbic7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUuanVzdGlmeUNvbnRlbnQgPSAnY2VudGVyJztcbiAgICBmbG9hdGluZ0Rpdi5zdHlsZS5hbGlnbkl0ZW1zID0gJ2NlbnRlcic7XG5cbiAgICBjb25zdCB0ZXh0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICB0ZXh0RWxlbWVudC5zdHlsZS5hbGwgPSAnaW5pdGlhbCc7XG4gICAgdGV4dEVsZW1lbnQuY2xhc3NOYW1lID0gWkFQX0ZMT0FUSU5HX0RJVl9FTEVNRU5UUztcbiAgICB0ZXh0RWxlbWVudC5zdHlsZS5tYXJnaW4gPSAnMCc7XG4gICAgdGV4dEVsZW1lbnQuc3R5bGUuekluZGV4ID0gJzk5OTk5OSc7XG4gICAgdGV4dEVsZW1lbnQuc3R5bGUuZm9udFNpemUgPSAnMTZweCc7XG4gICAgdGV4dEVsZW1lbnQuc3R5bGUuY29sb3IgPSAnIzMzMyc7XG4gICAgdGV4dEVsZW1lbnQuc3R5bGUuZm9udEZhbWlseSA9ICdSb2JvdG8nO1xuICAgIHRleHRFbGVtZW50LnRleHRDb250ZW50ID0gJ1pBUCBCcm93c2VyIEV4dGVuc2lvbiBpcyBSZWNvcmRpbmcuLi4nO1xuXG4gICAgY29uc3QgYnV0dG9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpO1xuICAgIGJ1dHRvbkVsZW1lbnQuaWQgPSBTVE9QX1JFQ09SRElOR19JRDtcbiAgICBidXR0b25FbGVtZW50LnN0eWxlLmFsbCA9ICdpbml0aWFsJztcbiAgICBidXR0b25FbGVtZW50LmNsYXNzTmFtZSA9IFpBUF9GTE9BVElOR19ESVZfRUxFTUVOVFM7XG4gICAgYnV0dG9uRWxlbWVudC5zdHlsZS5tYXJnaW5Ub3AgPSAnMTBweCc7XG4gICAgYnV0dG9uRWxlbWVudC5zdHlsZS5wYWRkaW5nID0gJzhweCAxNXB4JztcbiAgICBidXR0b25FbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSAnI2U3NGMzYyc7XG4gICAgYnV0dG9uRWxlbWVudC5zdHlsZS5jb2xvciA9ICd3aGl0ZSc7XG4gICAgYnV0dG9uRWxlbWVudC5zdHlsZS56SW5kZXggPSAnOTk5OTk5JztcbiAgICBidXR0b25FbGVtZW50LnN0eWxlLmJvcmRlciA9ICdub25lJztcbiAgICBidXR0b25FbGVtZW50LnN0eWxlLmJvcmRlclJhZGl1cyA9ICczcHgnO1xuICAgIGJ1dHRvbkVsZW1lbnQuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInO1xuICAgIGJ1dHRvbkVsZW1lbnQuc3R5bGUuZm9udEZhbWlseSA9ICdSb2JvdG8nO1xuICAgIGJ1dHRvbkVsZW1lbnQudGV4dENvbnRlbnQgPSAnU3RvcCBSZWNvcmRpbmcnO1xuICAgIEJyb3dzZXIuc3RvcmFnZS5zeW5jXG4gICAgICAuZ2V0KHtcbiAgICAgICAgZG93bmxvYWRTY3JpcHQ6IGZhbHNlLFxuICAgICAgfSlcbiAgICAgIC50aGVuKChpdGVtcykgPT4ge1xuICAgICAgICBpZiAoaXRlbXMuZG93bmxvYWRTY3JpcHQpIHtcbiAgICAgICAgICBidXR0b25FbGVtZW50LnRleHRDb250ZW50ID0gU1RPUF9SRUNPUkRJTkdfVEVYVDtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICBidXR0b25FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgdGhpcy5zdG9wUmVjb3JkaW5nVXNlckludGVyYWN0aW9ucygpO1xuICAgICAgQnJvd3Nlci5ydW50aW1lLnNlbmRNZXNzYWdlKHt0eXBlOiBTVE9QX1JFQ09SRElOR30pO1xuICAgICAgQnJvd3Nlci5zdG9yYWdlLnN5bmNcbiAgICAgICAgLmdldCh7XG4gICAgICAgICAgZG93bmxvYWRTY3JpcHQ6IGZhbHNlLFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoaXRlbXMpID0+IHtcbiAgICAgICAgICBpZiAoaXRlbXMuZG93bmxvYWRTY3JpcHQpIHtcbiAgICAgICAgICAgIEJyb3dzZXIucnVudGltZVxuICAgICAgICAgICAgICAuc2VuZE1lc3NhZ2Uoe3R5cGU6IEdFVF9aRVNUX1NDUklQVH0pXG4gICAgICAgICAgICAgIC50aGVuKChpdGVtczIpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSBpdGVtczIgYXMgWmVzdFNjcmlwdE1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgZG93bmxvYWRKc29uKFxuICAgICAgICAgICAgICAgICAgbXNnLnNjcmlwdCxcbiAgICAgICAgICAgICAgICAgIGB6YXAtcmVjLSR7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZVxuICAgICAgICAgICAgICAgICAgfSR7dGhpcy5nZXREYXRlU3RyaW5nKCl9LnpzdGBcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgQnJvd3Nlci5zdG9yYWdlLnN5bmMuc2V0KHtkb3dubG9hZFNjcmlwdDogZmFsc2V9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZmxvYXRpbmdEaXYuYXBwZW5kQ2hpbGQodGV4dEVsZW1lbnQpO1xuICAgIGZsb2F0aW5nRGl2LmFwcGVuZENoaWxkKGJ1dHRvbkVsZW1lbnQpO1xuXG4gICAgaWYgKGRvY3VtZW50LmJvZHkgaW5zdGFuY2VvZiBIVE1MRnJhbWVTZXRFbGVtZW50KSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmFmdGVyKGZsb2F0aW5nRGl2KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmbG9hdGluZ0Rpdik7XG4gICAgfVxuICAgIHRoaXMuZmxvYXRpbmdXaW5kb3dJbnNlcnRlZCA9IHRydWU7XG5cbiAgICBsZXQgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgIGxldCBpbml0aWFsTW91c2VYOiBudW1iZXI7XG4gICAgbGV0IGluaXRpYWxNb3VzZVk6IG51bWJlcjtcbiAgICBsZXQgaW5pdGlhbERpdlg6IG51bWJlcjtcbiAgICBsZXQgaW5pdGlhbERpdlk6IG51bWJlcjtcblxuICAgIC8vIE1vdXNlIGRvd24gZXZlbnQgbGlzdGVuZXJcbiAgICBmbG9hdGluZ0Rpdi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCAoZSkgPT4ge1xuICAgICAgaXNEcmFnZ2luZyA9IHRydWU7XG4gICAgICBpbml0aWFsTW91c2VYID0gZS5jbGllbnRYO1xuICAgICAgaW5pdGlhbE1vdXNlWSA9IGUuY2xpZW50WTtcbiAgICAgIGluaXRpYWxEaXZYID0gZmxvYXRpbmdEaXYub2Zmc2V0TGVmdDtcbiAgICAgIGluaXRpYWxEaXZZID0gZmxvYXRpbmdEaXYub2Zmc2V0VG9wO1xuICAgIH0pO1xuXG4gICAgLy8gTW91c2UgbW92ZSBldmVudCBsaXN0ZW5lclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCAoZSkgPT4ge1xuICAgICAgaWYgKCFpc0RyYWdnaW5nKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IG9mZnNldFggPSBlLmNsaWVudFggLSBpbml0aWFsTW91c2VYO1xuICAgICAgY29uc3Qgb2Zmc2V0WSA9IGUuY2xpZW50WSAtIGluaXRpYWxNb3VzZVk7XG5cbiAgICAgIGZsb2F0aW5nRGl2LnN0eWxlLmxlZnQgPSBgJHtpbml0aWFsRGl2WCArIG9mZnNldFh9cHhgO1xuICAgICAgZmxvYXRpbmdEaXYuc3R5bGUudG9wID0gYCR7aW5pdGlhbERpdlkgKyBvZmZzZXRZfXB4YDtcbiAgICB9KTtcblxuICAgIC8vIE1vdXNlIHVwIGV2ZW50IGxpc3RlbmVyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCAoKSA9PiB7XG4gICAgICBpZiAoIWlzRHJhZ2dpbmcgfHwgZmxvYXRpbmdEaXYuc3R5bGUubGVmdC5pbmNsdWRlcygnJScpKSB7XG4gICAgICAgIGlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgd2lkdGggPVxuICAgICAgICB3aW5kb3cuaW5uZXJXaWR0aCB8fFxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHxcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDtcblxuICAgICAgY29uc3QgaGVpZ2h0ID1cbiAgICAgICAgd2luZG93LmlubmVySGVpZ2h0IHx8XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgfHxcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7XG5cbiAgICAgIGNvbnN0IGxlZnRQZXJjZW50ID0gKHBhcnNlSW50KGZsb2F0aW5nRGl2LnN0eWxlLmxlZnQpIC8gd2lkdGgpICogMTAwO1xuICAgICAgY29uc3QgdG9wUGVyY2VudCA9IChwYXJzZUludChmbG9hdGluZ0Rpdi5zdHlsZS50b3ApIC8gaGVpZ2h0KSAqIDEwMDtcblxuICAgICAgZmxvYXRpbmdEaXYuc3R5bGUubGVmdCA9IGAke2xlZnRQZXJjZW50fSVgO1xuICAgICAgZmxvYXRpbmdEaXYuc3R5bGUudG9wID0gYCR7dG9wUGVyY2VudH0lYDtcbiAgICAgIGlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG5vdGlmeShzdG10OiBaZXN0U3RhdGVtZW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgbm90aWZ5TWVzc2FnZSA9IHtcbiAgICAgIHRpdGxlOiAnJyxcbiAgICAgIG1lc3NhZ2U6ICcnLFxuICAgIH07XG5cbiAgICBpZiAoc3RtdCBpbnN0YW5jZW9mIFplc3RTdGF0ZW1lbnRFbGVtZW50Q2xpY2spIHtcbiAgICAgIG5vdGlmeU1lc3NhZ2UudGl0bGUgPSAnQ2xpY2snO1xuICAgICAgbm90aWZ5TWVzc2FnZS5tZXNzYWdlID0gc3RtdC5lbGVtZW50TG9jYXRvci5lbGVtZW50O1xuICAgIH0gZWxzZSBpZiAoc3RtdCBpbnN0YW5jZW9mIFplc3RTdGF0ZW1lbnRFbGVtZW50U2Nyb2xsVG8pIHtcbiAgICAgIG5vdGlmeU1lc3NhZ2UudGl0bGUgPSAnU2Nyb2xsIFRvJztcbiAgICAgIG5vdGlmeU1lc3NhZ2UubWVzc2FnZSA9IHN0bXQuZWxlbWVudExvY2F0b3IuZWxlbWVudDtcbiAgICB9IGVsc2UgaWYgKHN0bXQgaW5zdGFuY2VvZiBaZXN0U3RhdGVtZW50RWxlbWVudFNlbmRLZXlzKSB7XG4gICAgICBub3RpZnlNZXNzYWdlLnRpdGxlID0gJ1NlbmQgS2V5cyc7XG4gICAgICBub3RpZnlNZXNzYWdlLm1lc3NhZ2UgPSBgJHtzdG10LmVsZW1lbnRMb2NhdG9yLmVsZW1lbnR9OiAke3N0bXQua2V5c31gO1xuICAgIH0gZWxzZSBpZiAoc3RtdCBpbnN0YW5jZW9mIFplc3RTdGF0ZW1lbnRFbGVtZW50U3VibWl0KSB7XG4gICAgICBub3RpZnlNZXNzYWdlLnRpdGxlID0gJ1N1Ym1pdCc7XG4gICAgICBub3RpZnlNZXNzYWdlLm1lc3NhZ2UgPSBgJHtzdG10LmVsZW1lbnRMb2NhdG9yLmVsZW1lbnR9YDtcbiAgICB9IGVsc2UgaWYgKHN0bXQgaW5zdGFuY2VvZiBaZXN0U3RhdGVtZW50TGF1bmNoQnJvd3Nlcikge1xuICAgICAgbm90aWZ5TWVzc2FnZS50aXRsZSA9ICdMYXVuY2ggQnJvd3Nlcic7XG4gICAgICBub3RpZnlNZXNzYWdlLm1lc3NhZ2UgPSBzdG10LmJyb3dzZXJUeXBlO1xuICAgIH0gZWxzZSBpZiAoc3RtdCBpbnN0YW5jZW9mIFplc3RTdGF0ZW1lbnRTd2l0Y2hUb0ZyYW1lKSB7XG4gICAgICBub3RpZnlNZXNzYWdlLnRpdGxlID0gJ1N3aXRjaCBUbyBGcmFtZSc7XG4gICAgICBub3RpZnlNZXNzYWdlLm1lc3NhZ2UgPSBzdG10LmZyYW1lSW5kZXgudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICAvLyB3YWl0IGZvciBwcmV2aW91cyBub3RpZmljYXRpb24gdG8gYmUgcmVtb3ZlZFxuICAgIGlmICh0aGlzLmlzTm90aWZpY2F0aW9uUmFpc2VkKSB7XG4gICAgICBhd2FpdCB0aGlzLndhaXRGb3JOb3RpZmljYXRpb25Ub0NsZWFyKCk7XG4gICAgfVxuICAgIGNvbnN0IGZsb2F0aW5nRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoWkFQX0ZMT0FUSU5HX0RJVik7XG4gICAgaWYgKCFmbG9hdGluZ0Rpdikge1xuICAgICAgY29uc29sZS5sb2coJ1pBUCBGbG9hdGluZyBEaXYgTm90IEZvdW5kICEnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzTm90aWZpY2F0aW9uUmFpc2VkID0gdHJ1ZTtcbiAgICBjb25zdCBtZXNzYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICBtZXNzYWdlRWxlbWVudC5jbGFzc05hbWUgPSBaQVBfRkxPQVRJTkdfRElWX0VMRU1FTlRTO1xuICAgIG1lc3NhZ2VFbGVtZW50LnRleHRDb250ZW50ID0gYCR7bm90aWZ5TWVzc2FnZS50aXRsZX06ICR7bm90aWZ5TWVzc2FnZS5tZXNzYWdlfWA7XG4gICAgbWVzc2FnZUVsZW1lbnQuc3R5bGUuYWxsID0gJ2luaXRpYWwnO1xuICAgIG1lc3NhZ2VFbGVtZW50LnN0eWxlLmZvbnRTaXplID0gJzIwcHgnO1xuICAgIG1lc3NhZ2VFbGVtZW50LnN0eWxlLnpJbmRleCA9ICc5OTk5OTknO1xuICAgIG1lc3NhZ2VFbGVtZW50LnN0eWxlLmZvbnRGYW1pbHkgPSAnUm9ib3RvJztcblxuICAgIGNvbnN0IGV4aXN0aW5nQ2hpbGRFbGVtZW50cyA9IEFycmF5LmZyb20oZmxvYXRpbmdEaXYuY2hpbGRyZW4gfHwgW10pO1xuXG4gICAgZmxvYXRpbmdEaXYuaW5uZXJIVE1MID0gJyc7XG5cbiAgICBmbG9hdGluZ0Rpdi5hcHBlbmRDaGlsZChtZXNzYWdlRWxlbWVudCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGZsb2F0aW5nRGl2LnJlbW92ZUNoaWxkKG1lc3NhZ2VFbGVtZW50KTtcbiAgICAgIGV4aXN0aW5nQ2hpbGRFbGVtZW50cy5mb3JFYWNoKChjaGlsZCkgPT4gZmxvYXRpbmdEaXYuYXBwZW5kQ2hpbGQoY2hpbGQpKTtcbiAgICAgIHRoaXMuaXNOb3RpZmljYXRpb25SYWlzZWQgPSBmYWxzZTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuXG4gIHdhaXRGb3JOb3RpZmljYXRpb25Ub0NsZWFyKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBjaGVja0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNOb3RpZmljYXRpb25SYWlzZWQpIHtcbiAgICAgICAgICBjbGVhckludGVydmFsKGNoZWNrSW50ZXJ2YWwpO1xuICAgICAgICAgIHJlc29sdmUoMSk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMCk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVjb3JkZXI7XG4iLCIvKlxuICogWmVkIEF0dGFjayBQcm94eSAoWkFQKSBhbmQgaXRzIHJlbGF0ZWQgc291cmNlIGZpbGVzLlxuICpcbiAqIFpBUCBpcyBhbiBIVFRQL0hUVFBTIHByb3h5IGZvciBhc3Nlc3Npbmcgd2ViIGFwcGxpY2F0aW9uIHNlY3VyaXR5LlxuICpcbiAqIENvcHlyaWdodCAyMDI1IFRoZSBaQVAgRGV2ZWxvcG1lbnQgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5mdW5jdGlvbiBkb3dubG9hZEpzb24oanNvbjogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbanNvbl0sIHt0eXBlOiAnYXBwbGljYXRpb24vanNvbid9KTtcbiAgY29uc3QgdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcblxuICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICBsaW5rLmhyZWYgPSB1cmw7XG4gIGxpbmsuZG93bmxvYWQgPSB0aXRsZTtcbiAgbGluay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gIGxpbmsuY2xpY2soKTtcbiAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcblxuICBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XG59XG5cbmV4cG9ydCB7ZG93bmxvYWRKc29ufTtcbiIsIi8qXG4gKiBaZWQgQXR0YWNrIFByb3h5IChaQVApIGFuZCBpdHMgcmVsYXRlZCBzb3VyY2UgZmlsZXMuXG4gKlxuICogWkFQIGlzIGFuIEhUVFAvSFRUUFMgcHJveHkgZm9yIGFzc2Vzc2luZyB3ZWIgYXBwbGljYXRpb24gc2VjdXJpdHkuXG4gKlxuICogQ29weXJpZ2h0IDIwMjMgVGhlIFpBUCBEZXZlbG9wbWVudCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgQnJvd3Nlciwge1J1bnRpbWV9IGZyb20gJ3dlYmV4dGVuc2lvbi1wb2x5ZmlsbCc7XG5pbXBvcnQge1xuICBSZXBvcnRlZEVsZW1lbnQsXG4gIFJlcG9ydGVkT2JqZWN0LFxuICBSZXBvcnRlZFN0b3JhZ2UsXG4gIFJlcG9ydGVkRXZlbnQsXG59IGZyb20gJy4uL3R5cGVzL1JlcG9ydGVkTW9kZWwnO1xuaW1wb3J0IFJlY29yZGVyIGZyb20gJy4vcmVjb3JkZXInO1xuaW1wb3J0IHtcbiAgSVNfRlVMTF9FWFRFTlNJT04sXG4gIExPQ0FMX1NUT1JBR0UsXG4gIExPQ0FMX1pBUF9FTkFCTEUsXG4gIExPQ0FMX1pBUF9SRUNPUkQsXG4gIFJFUE9SVF9FVkVOVCxcbiAgUkVQT1JUX09CSkVDVCxcbiAgU0VTU0lPTl9TVE9SQUdFLFxuICBVUkxfWkFQX0VOQUJMRSxcbiAgVVJMX1pBUF9SRUNPUkQsXG4gIFpBUF9TVEFSVF9SRUNPUkRJTkcsXG4gIFpBUF9TVE9QX1JFQ09SRElORyxcbn0gZnJvbSAnLi4vdXRpbHMvY29uc3RhbnRzJztcblxuY29uc3QgcmVwb3J0ZWRPYmplY3RzID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbmNvbnN0IHJlcG9ydGVkRXZlbnRzOiB7W2tleTogc3RyaW5nXTogUmVwb3J0ZWRFdmVudH0gPSB7fTtcblxuY29uc3QgcmVjb3JkZXIgPSBuZXcgUmVjb3JkZXIoKTtcblxuZnVuY3Rpb24gcmVwb3J0U3RvcmFnZShcbiAgbmFtZTogc3RyaW5nLFxuICBzdG9yYWdlOiBTdG9yYWdlLFxuICBmbjogKHJlOiBSZXBvcnRlZFN0b3JhZ2UpID0+IHZvaWRcbik6IHZvaWQge1xuICBpZiAoSVNfRlVMTF9FWFRFTlNJT04pIHtcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhzdG9yYWdlKSkge1xuICAgICAgZm4obmV3IFJlcG9ydGVkU3RvcmFnZShuYW1lLCAnJywga2V5LCAnJywgc3RvcmFnZS5nZXRJdGVtKGtleSksIHVybCkpO1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kRXZlbnRUb1pBUChvYmo6IFJlcG9ydGVkRXZlbnQpOiBQcm9taXNlPG51bWJlcj4ge1xuICBpZiAoSVNfRlVMTF9FWFRFTlNJT04pIHtcbiAgICByZXR1cm4gQnJvd3Nlci5ydW50aW1lLnNlbmRNZXNzYWdlKHtcbiAgICAgIHR5cGU6IFJFUE9SVF9FVkVOVCxcbiAgICAgIGRhdGE6IG9iai50b1N0cmluZygpLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiAtMTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VuZE9iamVjdFRvWkFQKG9iajogUmVwb3J0ZWRPYmplY3QpOiBQcm9taXNlPG51bWJlcj4ge1xuICBpZiAoSVNfRlVMTF9FWFRFTlNJT04pIHtcbiAgICByZXR1cm4gQnJvd3Nlci5ydW50aW1lLnNlbmRNZXNzYWdlKHtcbiAgICAgIHR5cGU6IFJFUE9SVF9PQkpFQ1QsXG4gICAgICBkYXRhOiBvYmoudG9TdHJpbmcoKSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbmZ1bmN0aW9uIHJlcG9ydE9iamVjdChyZXBPYmo6IFJlcG9ydGVkT2JqZWN0KTogdm9pZCB7XG4gIGNvbnN0IHJlcE9ialN0ciA9IHJlcE9iai50b1Nob3J0U3RyaW5nKCk7XG4gIGlmICghcmVwb3J0ZWRPYmplY3RzLmhhcyhyZXBPYmpTdHIpKSB7XG4gICAgc2VuZE9iamVjdFRvWkFQKHJlcE9iaik7XG4gICAgcmVwb3J0ZWRPYmplY3RzLmFkZChyZXBPYmpTdHIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlcG9ydEFsbFN0b3JhZ2UoKTogdm9pZCB7XG4gIHJlcG9ydFN0b3JhZ2UoTE9DQUxfU1RPUkFHRSwgbG9jYWxTdG9yYWdlLCByZXBvcnRPYmplY3QpO1xuICByZXBvcnRTdG9yYWdlKFNFU1NJT05fU1RPUkFHRSwgc2Vzc2lvblN0b3JhZ2UsIHJlcG9ydE9iamVjdCk7XG59XG5cbmZ1bmN0aW9uIHdpdGhaYXBFbmFibGVTZXR0aW5nKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gIEJyb3dzZXIuc3RvcmFnZS5zeW5jLmdldCh7emFwZW5hYmxlOiBmYWxzZX0pLnRoZW4oKGl0ZW1zKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFpBUCB3aXRoWmFwRW5hYmxlU2V0dGluZyAke2l0ZW1zLnphcGVuYWJsZX1gKTtcbiAgICBpZiAoaXRlbXMuemFwZW5hYmxlKSB7XG4gICAgICBmbigpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHdpdGhaYXBSZWNvcmRpbmdBY3RpdmUoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgQnJvd3Nlci5zdG9yYWdlLnN5bmMuZ2V0KHt6YXByZWNvcmRpbmdhY3RpdmU6IGZhbHNlfSkudGhlbigoaXRlbXMpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgWkFQIHdpdGhaYXBSZWNvcmRpbmdBY3RpdmUgJHtpdGVtcy56YXByZWNvcmRpbmdhY3RpdmV9YCk7XG4gICAgaWYgKGl0ZW1zLnphcHJlY29yZGluZ2FjdGl2ZSkge1xuICAgICAgZm4oKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXBvcnRQYWdlVW5sb2FkZWQoKTogdm9pZCB7XG4gIHdpdGhaYXBFbmFibGVTZXR0aW5nKCgpID0+IHtcbiAgICBCcm93c2VyLnJ1bnRpbWUuc2VuZE1lc3NhZ2Uoe1xuICAgICAgdHlwZTogUkVQT1JUX0VWRU5ULFxuICAgICAgZGF0YTogbmV3IFJlcG9ydGVkRXZlbnQoJ3BhZ2VVbmxvYWQnKS50b1N0cmluZygpLFxuICAgIH0pO1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgT2JqZWN0LnZhbHVlcyhyZXBvcnRlZEV2ZW50cykpIHtcbiAgICAgIHNlbmRFdmVudFRvWkFQKHZhbHVlKTtcbiAgICB9XG4gICAgcmVwb3J0QWxsU3RvcmFnZSgpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVwb3J0RXZlbnQoZXZlbnQ6IFJlcG9ydGVkRXZlbnQpOiB2b2lkIHtcbiAgbGV0IGV4aXN0aW5nRXZlbnQ6IFJlcG9ydGVkRXZlbnQ7XG4gIGV4aXN0aW5nRXZlbnQgPSByZXBvcnRlZEV2ZW50c1tldmVudC5ldmVudE5hbWVdO1xuICBpZiAoIWV4aXN0aW5nRXZlbnQpIHtcbiAgICBleGlzdGluZ0V2ZW50ID0gbmV3IFJlcG9ydGVkRXZlbnQoZXZlbnQuZXZlbnROYW1lKTtcbiAgICByZXBvcnRlZEV2ZW50c1tldmVudC5ldmVudE5hbWVdID0gZXZlbnQ7XG4gICAgc2VuZEV2ZW50VG9aQVAoZXhpc3RpbmdFdmVudCk7XG4gIH0gZWxzZSBpZiAoZXhpc3RpbmdFdmVudC51cmwgIT09IHdpbmRvdy5sb2NhdGlvbi5ocmVmKSB7XG4gICAgLy8gVGhlIGZyYWdtZW50IGhhcyBjaGFuZ2VkIC0gcmVwb3J0IHRoZSBvbGQgb25lIGFuZCBzdGFydCBhIG5ldyBjb3VudFxuICAgIHNlbmRFdmVudFRvWkFQKGV4aXN0aW5nRXZlbnQpO1xuICAgIGV4aXN0aW5nRXZlbnQgPSBuZXcgUmVwb3J0ZWRFdmVudChldmVudC5ldmVudE5hbWUpO1xuICAgIHJlcG9ydGVkRXZlbnRzW2V2ZW50LmV2ZW50TmFtZV0gPSBldmVudDtcbiAgICBzZW5kRXZlbnRUb1pBUChleGlzdGluZ0V2ZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGx1c3BsdXNcbiAgICBleGlzdGluZ0V2ZW50LmNvdW50Kys7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVwb3J0UGFnZUZvcm1zKFxuICBkb2M6IERvY3VtZW50LFxuICBmbjogKHJlOiBSZXBvcnRlZE9iamVjdCkgPT4gdm9pZFxuKTogdm9pZCB7XG4gIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRvYy5mb3JtcywgKGZvcm06IEhUTUxGb3JtRWxlbWVudCkgPT4ge1xuICAgIGZuKG5ldyBSZXBvcnRlZEVsZW1lbnQoZm9ybSwgdXJsKSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXBvcnRQYWdlTGlua3MoXG4gIGRvYzogRG9jdW1lbnQsXG4gIGZuOiAocmU6IFJlcG9ydGVkT2JqZWN0KSA9PiB2b2lkXG4pOiB2b2lkIHtcbiAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoXG4gICAgZG9jLmxpbmtzLFxuICAgIChsaW5rOiBIVE1MQW5jaG9yRWxlbWVudCB8IEhUTUxBcmVhRWxlbWVudCkgPT4ge1xuICAgICAgZm4obmV3IFJlcG9ydGVkRWxlbWVudChsaW5rLCB1cmwpKTtcbiAgICB9XG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlcG9ydEVsZW1lbnRzKFxuICBjb2xsZWN0aW9uOiBIVE1MQ29sbGVjdGlvbixcbiAgZm46IChyZTogUmVwb3J0ZWRPYmplY3QpID0+IHZvaWRcbik6IHZvaWQge1xuICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChjb2xsZWN0aW9uLCAoZWxlbWVudDogRWxlbWVudCkgPT4ge1xuICAgIGZuKG5ldyBSZXBvcnRlZEVsZW1lbnQoZWxlbWVudCwgdXJsKSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXBvcnROb2RlRWxlbWVudHMoXG4gIG5vZGU6IE5vZGUsXG4gIHRhZ05hbWU6IHN0cmluZyxcbiAgZm46IChyZTogUmVwb3J0ZWRPYmplY3QpID0+IHZvaWRcbik6IHZvaWQge1xuICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICByZXBvcnRFbGVtZW50cygobm9kZSBhcyBFbGVtZW50KS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKSwgZm4pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlcG9ydFBvaW50ZXJFbGVtZW50cyhcbiAgc291cmNlOiBFbGVtZW50IHwgRG9jdW1lbnQsXG4gIGZuOiAocmU6IFJlcG9ydGVkT2JqZWN0KSA9PiB2b2lkXG4pOiB2b2lkIHtcbiAgc291cmNlLnF1ZXJ5U2VsZWN0b3JBbGwoJyonKS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgY29uc3Qge3RhZ05hbWV9ID0gZWxlbWVudDtcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICBpZiAoXG4gICAgICB0YWdOYW1lICE9PSAnaW5wdXQnICYmXG4gICAgICB0YWdOYW1lICE9PSAnYnV0dG9uJyAmJlxuICAgICAgdGFnTmFtZSAhPT0gJ2EnICYmXG4gICAgICBlbGVtZW50IGluc3RhbmNlb2YgRWxlbWVudFxuICAgICkge1xuICAgICAgY29uc3QgY29tcFN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsICdob3ZlcicpO1xuICAgICAgaWYgKGNvbXBTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnY3Vyc29yJykgPT09ICdwb2ludGVyJykge1xuICAgICAgICBmbihuZXcgUmVwb3J0ZWRFbGVtZW50KGVsZW1lbnQsIHVybCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlcG9ydFBhZ2VMb2FkZWQoXG4gIGRvYzogRG9jdW1lbnQsXG4gIGZuOiAocmU6IFJlcG9ydGVkT2JqZWN0KSA9PiB2b2lkXG4pOiB2b2lkIHtcbiAgQnJvd3Nlci5ydW50aW1lLnNlbmRNZXNzYWdlKHtcbiAgICB0eXBlOiBSRVBPUlRfRVZFTlQsXG4gICAgZGF0YTogbmV3IFJlcG9ydGVkRXZlbnQoJ3BhZ2VMb2FkJykudG9TdHJpbmcoKSxcbiAgfSk7XG5cbiAgcmVwb3J0UGFnZUxpbmtzKGRvYywgZm4pO1xuICByZXBvcnRQYWdlRm9ybXMoZG9jLCBmbik7XG4gIHJlcG9ydEVsZW1lbnRzKGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKSwgZm4pO1xuICByZXBvcnRFbGVtZW50cyhkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2J1dHRvbicpLCBmbik7XG4gIHJlcG9ydFBvaW50ZXJFbGVtZW50cyhkb2MsIGZuKTtcbiAgcmVwb3J0U3RvcmFnZShMT0NBTF9TVE9SQUdFLCBsb2NhbFN0b3JhZ2UsIGZuKTtcbiAgcmVwb3J0U3RvcmFnZShTRVNTSU9OX1NUT1JBR0UsIHNlc3Npb25TdG9yYWdlLCBmbik7XG59XG5cbmNvbnN0IGRvbU11dGF0ZWQgPSBmdW5jdGlvbiBkb21NdXRhdGlvbihcbiAgbXV0YXRpb25MaXN0OiBNdXRhdGlvblJlY29yZFtdLFxuICBfb2JzOiBNdXRhdGlvbk9ic2VydmVyXG4pOiB2b2lkIHtcbiAgd2l0aFphcEVuYWJsZVNldHRpbmcoKCkgPT4ge1xuICAgIHJlcG9ydEV2ZW50KG5ldyBSZXBvcnRlZEV2ZW50KCdkb21NdXRhdGlvbicpKTtcbiAgICByZXBvcnRQYWdlTGlua3MoZG9jdW1lbnQsIHJlcG9ydE9iamVjdCk7XG4gICAgcmVwb3J0UGFnZUZvcm1zKGRvY3VtZW50LCByZXBvcnRPYmplY3QpO1xuICAgIHJlcG9ydFBvaW50ZXJFbGVtZW50cyhkb2N1bWVudCwgcmVwb3J0T2JqZWN0KTtcbiAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9uTGlzdCkge1xuICAgICAgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnKSB7XG4gICAgICAgIHJlcG9ydE5vZGVFbGVtZW50cyhtdXRhdGlvbi50YXJnZXQsICdpbnB1dCcsIHJlcG9ydE9iamVjdCk7XG4gICAgICAgIHJlcG9ydE5vZGVFbGVtZW50cyhtdXRhdGlvbi50YXJnZXQsICdidXR0b24nLCByZXBvcnRPYmplY3QpO1xuICAgICAgICBpZiAobXV0YXRpb24udGFyZ2V0Lm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgICAgIHJlcG9ydFBvaW50ZXJFbGVtZW50cyhtdXRhdGlvbi50YXJnZXQgYXMgRWxlbWVudCwgcmVwb3J0T2JqZWN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG59O1xuXG5mdW5jdGlvbiBpc0NvbmZpZ3VyYXRpb25SZXF1ZXN0KCk6IGJvb2xlYW4ge1xuICByZXR1cm4gd2luZG93LmxvY2F0aW9uLmhyZWYuc3RhcnRzV2l0aCgnaHR0cHM6Ly96YXAvemFwQ2FsbEJhY2tVcmwvJyk7XG59XG5cbmZ1bmN0aW9uIG9uTG9hZEV2ZW50TGlzdGVuZXIoKTogdm9pZCB7XG4gIGlmIChpc0NvbmZpZ3VyYXRpb25SZXF1ZXN0KCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB3aXRoWmFwRW5hYmxlU2V0dGluZygoKSA9PiB7XG4gICAgcmVwb3J0UGFnZUxvYWRlZChkb2N1bWVudCwgcmVwb3J0T2JqZWN0KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVuYWJsZUV4dGVuc2lvbigpOiB2b2lkIHtcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBvbkxvYWRFdmVudExpc3RlbmVyLCBmYWxzZSk7XG4gIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IHJlcG9ydFBhZ2VVbmxvYWRlZDtcblxuICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGRvbU11dGF0ZWQpO1xuICBvYnNlcnZlci5vYnNlcnZlKGRvY3VtZW50LCB7XG4gICAgYXR0cmlidXRlczogZmFsc2UsXG4gICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgIHN1YnRyZWU6IHRydWUsXG4gIH0pO1xuXG4gIHNldEludGVydmFsKCgpID0+IHtcbiAgICAvLyBIYXZlIHRvIHBvbGwgdG8gcGlja3VwIHN0b3JhZ2UgY2hhbmdlcyBpbiBhIHRpbWVseSBmYXNoaW9uXG4gICAgcmVwb3J0QWxsU3RvcmFnZSgpO1xuICB9LCA1MDApO1xuXG4gIC8vIFRoaXMgaXMgbmVlZGVkIGZvciBtb3JlIHRyYWRpdGlvbmFsIGFwcHNcbiAgcmVwb3J0UGFnZUxvYWRlZChkb2N1bWVudCwgcmVwb3J0T2JqZWN0KTtcbn1cblxuZnVuY3Rpb24gY29uZmlndXJlRXh0ZW5zaW9uKCk6IHZvaWQge1xuICBpZiAoaXNDb25maWd1cmF0aW9uUmVxdWVzdCgpKSB7XG4gICAgLy8gVGhlIEJyb3dzZXIgaGFzIGJlZW4gbGF1bmNoZWQgZnJvbSBaQVAgLSB1c2UgdGhpcyBVUkwgZm9yIGNvbmZpZ3VyYXRpb25cbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGNvbnN0IGVuYWJsZSA9XG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMT0NBTF9aQVBfRU5BQkxFKSA9PT0gJ3RydWUnIHx8XG4gICAgICBwYXJhbXMuaGFzKFVSTF9aQVBfRU5BQkxFKTtcbiAgICBjb25zdCByZWNvcmQgPVxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oTE9DQUxfWkFQX1JFQ09SRCkgPT09ICd0cnVlJyB8fFxuICAgICAgcGFyYW1zLmhhcyhVUkxfWkFQX1JFQ09SRCk7XG5cbiAgICBjb25zb2xlLmxvZygnWkFQIENvbmZpZ3VyZScsIGVuYWJsZSwgcmVjb3JkKTtcbiAgICBCcm93c2VyLnN0b3JhZ2Uuc3luYy5zZXQoe1xuICAgICAgemFwdXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgnPycpWzBdLFxuICAgICAgemFwZW5hYmxlOiBlbmFibGUsXG4gICAgICB6YXByZWNvcmRpbmdhY3RpdmU6IHJlY29yZCxcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpbmplY3RTY3JpcHQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgIGNvbmZpZ3VyZUV4dGVuc2lvbigpO1xuICAgIHdpdGhaYXBSZWNvcmRpbmdBY3RpdmUoKCkgPT4ge1xuICAgICAgQnJvd3Nlci5zdG9yYWdlLnN5bmNcbiAgICAgICAgLmdldCh7aW5pdFNjcmlwdDogZmFsc2UsIGxvZ2luVXJsOiAnJywgc3RhcnRUaW1lOiAwfSlcbiAgICAgICAgLnRoZW4oKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBgWkFQIGluamVjdFNjcmlwdCBpdGVtcyAke2l0ZW1zLmluaXRTY3JpcHR9ICR7aXRlbXMubG9naW5Vcmx9YFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmVjb3JkZXIucmVjb3JkVXNlckludGVyYWN0aW9ucyhcbiAgICAgICAgICAgIGl0ZW1zLmluaXRTY3JpcHQgPT09IHRydWUsXG4gICAgICAgICAgICBpdGVtcy5sb2dpblVybCBhcyBzdHJpbmcsXG4gICAgICAgICAgICBpdGVtcy5zdGFydFRpbWUgYXMgbnVtYmVyXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgd2l0aFphcEVuYWJsZVNldHRpbmcoKCkgPT4ge1xuICAgICAgZW5hYmxlRXh0ZW5zaW9uKCk7XG4gICAgICByZXNvbHZlKHRydWUpO1xuICAgIH0pO1xuICAgIHJlc29sdmUoZmFsc2UpO1xuICB9KTtcbn1cblxuaW5qZWN0U2NyaXB0KCk7XG5cbi8qIGVzbGludC1kaXNhYmxlICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5Ccm93c2VyLnJ1bnRpbWUub25NZXNzYWdlLmFkZExpc3RlbmVyKFxuICAoXG4gICAgbWVzc2FnZTogYW55LFxuICAgIF9zZW5kZXI6IFJ1bnRpbWUuTWVzc2FnZVNlbmRlcixcbiAgICBfc2VuZFJlc3BvbnNlOiAocmVzcG9uc2U/OiBhbnkpID0+IHZvaWRcbiAgKSA9PiB7XG4gICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gWkFQX1NUQVJUX1JFQ09SRElORykge1xuICAgICAgY29uZmlndXJlRXh0ZW5zaW9uKCk7XG4gICAgICByZWNvcmRlci5yZWNvcmRVc2VySW50ZXJhY3Rpb25zKCk7XG4gICAgfSBlbHNlIGlmIChtZXNzYWdlLnR5cGUgPT09IFpBUF9TVE9QX1JFQ09SRElORykge1xuICAgICAgcmVjb3JkZXIuc3RvcFJlY29yZGluZ1VzZXJJbnRlcmFjdGlvbnMoKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5pbmcgYHRydWVgIGtlZXBzIHRoZSBtZXNzYWdlIGNoYW5uZWwgb3BlbiBmb3IgYXN5bmMgcmVzcG9uc2VzXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbik7XG5cbmV4cG9ydCB7XG4gIHJlcG9ydFBhZ2VMaW5rcyxcbiAgcmVwb3J0UGFnZUxvYWRlZCxcbiAgcmVwb3J0UGFnZUZvcm1zLFxuICByZXBvcnROb2RlRWxlbWVudHMsXG4gIHJlcG9ydFN0b3JhZ2UsXG4gIFJlcG9ydGVkRWxlbWVudCxcbiAgUmVwb3J0ZWRPYmplY3QsXG4gIFJlcG9ydGVkU3RvcmFnZSxcbiAgUmVwb3J0ZWRFdmVudCxcbiAgaW5qZWN0U2NyaXB0LFxuICBlbmFibGVFeHRlbnNpb24sXG59O1xuIl0sIm5hbWVzIjpbIlN5bWJvbCIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGUiLCJleHBvcnRzIiwiZ2V0UmF3VGFnIiwib2JqZWN0VG9TdHJpbmciLCJzeW1Ub1N0cmluZ1RhZyIsInRvU3RyaW5nVGFnIiwidW5kZWZpbmVkIiwidmFsdWUiLCJPYmplY3QiLCJ0cmltbWVkRW5kSW5kZXgiLCJyZVRyaW1TdGFydCIsInN0cmluZyIsInNsaWNlIiwicmVwbGFjZSIsImZyZWVHbG9iYWwiLCJnIiwib2JqZWN0UHJvdG8iLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIm5hdGl2ZU9iamVjdFRvU3RyaW5nIiwidG9TdHJpbmciLCJpc093biIsImNhbGwiLCJ0YWciLCJ1bm1hc2tlZCIsImUiLCJyZXN1bHQiLCJmcmVlU2VsZiIsInNlbGYiLCJyb290IiwiRnVuY3Rpb24iLCJyZVdoaXRlc3BhY2UiLCJpbmRleCIsImxlbmd0aCIsInRlc3QiLCJjaGFyQXQiLCJpc09iamVjdCIsIm5vdyIsInRvTnVtYmVyIiwibmF0aXZlTWF4IiwiTWF0aCIsIm1heCIsIm5hdGl2ZU1pbiIsIm1pbiIsImZ1bmMiLCJ3YWl0Iiwib3B0aW9ucyIsImxhc3RBcmdzIiwibGFzdFRoaXMiLCJtYXhXYWl0IiwidGltZXJJZCIsImxhc3RDYWxsVGltZSIsImxhc3RJbnZva2VUaW1lIiwibGVhZGluZyIsIm1heGluZyIsInRyYWlsaW5nIiwiVHlwZUVycm9yIiwiaW52b2tlRnVuYyIsInRpbWUiLCJhcmdzIiwidGhpc0FyZyIsImFwcGx5Iiwic2hvdWxkSW52b2tlIiwidGltZVNpbmNlTGFzdENhbGwiLCJ0aW1lckV4cGlyZWQiLCJ0cmFpbGluZ0VkZ2UiLCJzZXRUaW1lb3V0IiwidGltZVdhaXRpbmciLCJyZW1haW5pbmdXYWl0IiwiZGVib3VuY2VkIiwiaXNJbnZva2luZyIsImFyZ3VtZW50cyIsInRoaXMiLCJsZWFkaW5nRWRnZSIsImNsZWFyVGltZW91dCIsImNhbmNlbCIsImZsdXNoIiwidHlwZSIsImJhc2VHZXRUYWciLCJpc09iamVjdExpa2UiLCJEYXRlIiwiYmFzZVRyaW0iLCJpc1N5bWJvbCIsInJlSXNCYWRIZXgiLCJyZUlzQmluYXJ5IiwicmVJc09jdGFsIiwiZnJlZVBhcnNlSW50IiwicGFyc2VJbnQiLCJvdGhlciIsInZhbHVlT2YiLCJpc0JpbmFyeSIsIl9fV0VCUEFDS19BTURfREVGSU5FX0ZBQ1RPUllfXyIsIl9fV0VCUEFDS19BTURfREVGSU5FX0FSUkFZX18iLCJfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXyIsImdsb2JhbFRoaXMiLCJjaHJvbWUiLCJydW50aW1lIiwiaWQiLCJFcnJvciIsImJyb3dzZXIiLCJDSFJPTUVfU0VORF9NRVNTQUdFX0NBTExCQUNLX05PX1JFU1BPTlNFX01FU1NBR0UiLCJ3cmFwQVBJcyIsImV4dGVuc2lvbkFQSXMiLCJhcGlNZXRhZGF0YSIsImFsYXJtcyIsImNsZWFyIiwibWluQXJncyIsIm1heEFyZ3MiLCJjbGVhckFsbCIsImdldCIsImdldEFsbCIsImJvb2ttYXJrcyIsImNyZWF0ZSIsImdldENoaWxkcmVuIiwiZ2V0UmVjZW50IiwiZ2V0U3ViVHJlZSIsImdldFRyZWUiLCJtb3ZlIiwicmVtb3ZlIiwicmVtb3ZlVHJlZSIsInNlYXJjaCIsInVwZGF0ZSIsImJyb3dzZXJBY3Rpb24iLCJkaXNhYmxlIiwiZmFsbGJhY2tUb05vQ2FsbGJhY2siLCJlbmFibGUiLCJnZXRCYWRnZUJhY2tncm91bmRDb2xvciIsImdldEJhZGdlVGV4dCIsImdldFBvcHVwIiwiZ2V0VGl0bGUiLCJvcGVuUG9wdXAiLCJzZXRCYWRnZUJhY2tncm91bmRDb2xvciIsInNldEJhZGdlVGV4dCIsInNldEljb24iLCJzZXRQb3B1cCIsInNldFRpdGxlIiwiYnJvd3NpbmdEYXRhIiwicmVtb3ZlQ2FjaGUiLCJyZW1vdmVDb29raWVzIiwicmVtb3ZlRG93bmxvYWRzIiwicmVtb3ZlRm9ybURhdGEiLCJyZW1vdmVIaXN0b3J5IiwicmVtb3ZlTG9jYWxTdG9yYWdlIiwicmVtb3ZlUGFzc3dvcmRzIiwicmVtb3ZlUGx1Z2luRGF0YSIsInNldHRpbmdzIiwiY29tbWFuZHMiLCJjb250ZXh0TWVudXMiLCJyZW1vdmVBbGwiLCJjb29raWVzIiwiZ2V0QWxsQ29va2llU3RvcmVzIiwic2V0IiwiZGV2dG9vbHMiLCJpbnNwZWN0ZWRXaW5kb3ciLCJldmFsIiwic2luZ2xlQ2FsbGJhY2tBcmciLCJwYW5lbHMiLCJlbGVtZW50cyIsImNyZWF0ZVNpZGViYXJQYW5lIiwiZG93bmxvYWRzIiwiZG93bmxvYWQiLCJlcmFzZSIsImdldEZpbGVJY29uIiwib3BlbiIsInBhdXNlIiwicmVtb3ZlRmlsZSIsInJlc3VtZSIsInNob3ciLCJleHRlbnNpb24iLCJpc0FsbG93ZWRGaWxlU2NoZW1lQWNjZXNzIiwiaXNBbGxvd2VkSW5jb2duaXRvQWNjZXNzIiwiaGlzdG9yeSIsImFkZFVybCIsImRlbGV0ZUFsbCIsImRlbGV0ZVJhbmdlIiwiZGVsZXRlVXJsIiwiZ2V0VmlzaXRzIiwiaTE4biIsImRldGVjdExhbmd1YWdlIiwiZ2V0QWNjZXB0TGFuZ3VhZ2VzIiwiaWRlbnRpdHkiLCJsYXVuY2hXZWJBdXRoRmxvdyIsImlkbGUiLCJxdWVyeVN0YXRlIiwibWFuYWdlbWVudCIsImdldFNlbGYiLCJzZXRFbmFibGVkIiwidW5pbnN0YWxsU2VsZiIsIm5vdGlmaWNhdGlvbnMiLCJnZXRQZXJtaXNzaW9uTGV2ZWwiLCJwYWdlQWN0aW9uIiwiaGlkZSIsInBlcm1pc3Npb25zIiwiY29udGFpbnMiLCJyZXF1ZXN0IiwiZ2V0QmFja2dyb3VuZFBhZ2UiLCJnZXRQbGF0Zm9ybUluZm8iLCJvcGVuT3B0aW9uc1BhZ2UiLCJyZXF1ZXN0VXBkYXRlQ2hlY2siLCJzZW5kTWVzc2FnZSIsInNlbmROYXRpdmVNZXNzYWdlIiwic2V0VW5pbnN0YWxsVVJMIiwic2Vzc2lvbnMiLCJnZXREZXZpY2VzIiwiZ2V0UmVjZW50bHlDbG9zZWQiLCJyZXN0b3JlIiwic3RvcmFnZSIsImxvY2FsIiwiZ2V0Qnl0ZXNJblVzZSIsIm1hbmFnZWQiLCJzeW5jIiwidGFicyIsImNhcHR1cmVWaXNpYmxlVGFiIiwiZGlzY2FyZCIsImR1cGxpY2F0ZSIsImV4ZWN1dGVTY3JpcHQiLCJnZXRDdXJyZW50IiwiZ2V0Wm9vbSIsImdldFpvb21TZXR0aW5ncyIsImdvQmFjayIsImdvRm9yd2FyZCIsImhpZ2hsaWdodCIsImluc2VydENTUyIsInF1ZXJ5IiwicmVsb2FkIiwicmVtb3ZlQ1NTIiwic2V0Wm9vbSIsInNldFpvb21TZXR0aW5ncyIsInRvcFNpdGVzIiwid2ViTmF2aWdhdGlvbiIsImdldEFsbEZyYW1lcyIsImdldEZyYW1lIiwid2ViUmVxdWVzdCIsImhhbmRsZXJCZWhhdmlvckNoYW5nZWQiLCJ3aW5kb3dzIiwiZ2V0TGFzdEZvY3VzZWQiLCJrZXlzIiwiRGVmYXVsdFdlYWtNYXAiLCJXZWFrTWFwIiwiY29uc3RydWN0b3IiLCJjcmVhdGVJdGVtIiwiaXRlbXMiLCJzdXBlciIsImtleSIsImhhcyIsImlzVGhlbmFibGUiLCJ0aGVuIiwibWFrZUNhbGxiYWNrIiwicHJvbWlzZSIsIm1ldGFkYXRhIiwiY2FsbGJhY2tBcmdzIiwibGFzdEVycm9yIiwicmVqZWN0IiwibWVzc2FnZSIsInJlc29sdmUiLCJwbHVyYWxpemVBcmd1bWVudHMiLCJudW1BcmdzIiwid3JhcEFzeW5jRnVuY3Rpb24iLCJuYW1lIiwidGFyZ2V0IiwiUHJvbWlzZSIsImNiRXJyb3IiLCJjb25zb2xlIiwid2FybiIsIm5vQ2FsbGJhY2siLCJ3cmFwTWV0aG9kIiwibWV0aG9kIiwid3JhcHBlciIsIlByb3h5IiwidGFyZ2V0TWV0aG9kIiwidGhpc09iaiIsImJpbmQiLCJ3cmFwT2JqZWN0Iiwid3JhcHBlcnMiLCJjYWNoZSIsImhhbmRsZXJzIiwicHJveHlUYXJnZXQiLCJwcm9wIiwicmVjZWl2ZXIiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJkZXNjIiwiUmVmbGVjdCIsImRlbGV0ZVByb3BlcnR5Iiwid3JhcEV2ZW50Iiwid3JhcHBlck1hcCIsImFkZExpc3RlbmVyIiwibGlzdGVuZXIiLCJoYXNMaXN0ZW5lciIsInJlbW92ZUxpc3RlbmVyIiwib25SZXF1ZXN0RmluaXNoZWRXcmFwcGVycyIsInJlcSIsIndyYXBwZWRSZXEiLCJnZXRDb250ZW50Iiwib25NZXNzYWdlV3JhcHBlcnMiLCJzZW5kZXIiLCJzZW5kUmVzcG9uc2UiLCJ3cmFwcGVkU2VuZFJlc3BvbnNlIiwiZGlkQ2FsbFNlbmRSZXNwb25zZSIsInNlbmRSZXNwb25zZVByb21pc2UiLCJyZXNwb25zZSIsImVyciIsImlzUmVzdWx0VGhlbmFibGUiLCJzZW5kUHJvbWlzZWRSZXN1bHQiLCJtc2ciLCJlcnJvciIsIl9fbW96V2ViRXh0ZW5zaW9uUG9seWZpbGxSZWplY3RfXyIsImNhdGNoIiwid3JhcHBlZFNlbmRNZXNzYWdlQ2FsbGJhY2siLCJyZXBseSIsIndyYXBwZWRTZW5kTWVzc2FnZSIsImFwaU5hbWVzcGFjZU9iaiIsIndyYXBwZWRDYiIsInB1c2giLCJzdGF0aWNXcmFwcGVycyIsIm5ldHdvcmsiLCJvblJlcXVlc3RGaW5pc2hlZCIsIm9uTWVzc2FnZSIsIm9uTWVzc2FnZUV4dGVybmFsIiwic2V0dGluZ01ldGFkYXRhIiwicHJpdmFjeSIsInNlcnZpY2VzIiwid2Vic2l0ZXMiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJuIiwiZ2V0dGVyIiwiX19lc01vZHVsZSIsImQiLCJhIiwiZGVmaW5pdGlvbiIsIm8iLCJ3aW5kb3ciLCJvYmoiLCJSZXBvcnRlZE9iamVjdCIsInRhZ05hbWUiLCJub2RlTmFtZSIsInRleHQiLCJ1cmwiLCJ0aW1lc3RhbXAiLCJKU09OIiwic3RyaW5naWZ5IiwidG9TaG9ydFN0cmluZyIsImsiLCJ2IiwidG9Ob25UaW1lc3RhbXBTdHJpbmciLCJSZXBvcnRlZFN0b3JhZ2UiLCJSZXBvcnRlZEVsZW1lbnQiLCJlbGVtZW50IiwidGV4dENvbnRlbnQiLCJocmVmIiwiZm9ybUlkIiwiQXJyYXkiLCJkb2N1bWVudCIsImZvcm1zIiwiaW5kZXhPZiIsImlucHV0IiwidGFnVHlwZSIsImZvcm0iLCJoYXNBdHRyaWJ1dGUiLCJnZXRBdHRyaWJ1dGUiLCJSZXBvcnRlZEV2ZW50IiwiZXZlbnROYW1lIiwibG9jYXRpb24iLCJjb3VudCIsIklTX0ZVTExfRVhURU5TSU9OIiwiQnJvd3NlciIsImdldE1hbmlmZXN0IiwiREVGQVVMVF9XSU5ET1dfSEFORExFIiwiUkVQT1JUX0VWRU5UIiwiTE9DQUxfU1RPUkFHRSIsIlNFU1NJT05fU1RPUkFHRSIsIlpBUF9GTE9BVElOR19ESVYiLCJaQVBfRkxPQVRJTkdfRElWX0VMRU1FTlRTIiwiRWxlbWVudExvY2F0b3IiLCJ0b0pTT04iLCJaZXN0U3RhdGVtZW50IiwiZWxlbWVudFR5cGUiLCJaZXN0U3RhdGVtZW50TGF1bmNoQnJvd3NlciIsImJyb3dzZXJUeXBlIiwid2luZG93SGFuZGxlIiwiY2FwYWJpbGl0aWVzIiwiaGVhZGxlc3MiLCJlbmFibGVkIiwiWmVzdFN0YXRlbWVudENvbW1lbnQiLCJjb21tZW50IiwiWmVzdFN0YXRlbWVudEVsZW1lbnQiLCJlbGVtZW50TG9jYXRvciIsIlplc3RTdGF0ZW1lbnRFbGVtZW50Q2xpY2siLCJ3YWl0Rm9yTXNlYyIsIl9vYmplY3RTcHJlYWQiLCJaZXN0U3RhdGVtZW50RWxlbWVudFNjcm9sbFRvIiwiWmVzdFN0YXRlbWVudEVsZW1lbnRTZW5kS2V5cyIsIlplc3RTdGF0ZW1lbnRFbGVtZW50U3VibWl0IiwiWmVzdFN0YXRlbWVudFN3aXRjaFRvRnJhbWUiLCJmcmFtZUluZGV4IiwiZnJhbWVOYW1lIiwicGFyZW50IiwiZHluYW1pY0NsYXNzRWxlbWVudHMiLCJXZWFrU2V0IiwiaW5wdXRDbGFzc1NuYXBzaG90cyIsIm1hcmtDbGFzc0FzRHluYW1pYyIsImFkZCIsInNuYXBzaG90SW5wdXRDbGFzcyIsIl9lbGVtZW50JGdldEF0dHJpYnV0ZSIsImlzRWxlbWVudFBhdGhVbmlxdWUiLCJwYXRoIiwiZG9jdW1lbnRFbGVtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImdldENTU1NlbGVjdG9yIiwic2VsZWN0b3IiLCJ0b0xvd2VyQ2FzZSIsImJvZHkiLCJwYXJlbnROb2RlIiwiaXNaYXBEaXYiLCJub2RlIiwiRWxlbWVudCIsImdldFhQYXRoIiwieHBhdGgiLCJldmFsdWF0ZSIsIlhQYXRoUmVzdWx0IiwiT1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUiLCJzbmFwc2hvdExlbmd0aCIsImlzRWxlbWVudFhQYXRoVW5pcXVlIiwic2libGluZyIsInByZXZpb3VzU2libGluZyIsImlzVW5pcXVlIiwibm9kZVR5cGUiLCJOb2RlIiwiRUxFTUVOVF9OT0RFIiwibmV4dFNpYmxpbmciLCJnZXRQYXRoIiwiX2VsZW1lbnQkZ2V0QXR0cmlidXRlMiIsImhhc0NsYXNzQ2hhbmdlZFNpbmNlU25hcHNob3QiLCJjbGFzc0xpc3QiLCJpdGVtIiwidCIsInIiLCJpdGVyYXRvciIsImkiLCJjIiwiR2VuZXJhdG9yIiwidSIsIl9yZWdlbmVyYXRvckRlZmluZTIiLCJmIiwicCIsInkiLCJHIiwibCIsImRvbmUiLCJyZXR1cm4iLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImRpc3BsYXlOYW1lIiwiX3JlZ2VuZXJhdG9yIiwidyIsIm0iLCJfaW52b2tlIiwid3JpdGFibGUiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9uZXh0IiwiX3Rocm93IiwiX2RlZmluZVByb3BlcnR5IiwidG9QcmltaXRpdmUiLCJTdHJpbmciLCJOdW1iZXIiLCJfdG9QcmltaXRpdmUiLCJfdG9Qcm9wZXJ0eUtleSIsIlNUT1BfUkVDT1JESU5HX0lEIiwiU1RPUF9SRUNPUkRJTkdfVEVYVCIsInJlY29yZGVyIiwic2VuZFplc3RTY3JpcHRUb1pBUCIsInplc3RTdGF0ZW1lbnQiLCJwYXJhbXMiLCJfdGhpcyIsIl9jYWxsZWUiLCJfY29udGV4dCIsInNlbmRDYWNoZSIsImhhbmRsZUNhY2hlZFN1Ym1pdCIsIm5vdGlmeSIsImRhdGEiLCJnZXRXYWl0ZWQiLCJsYXN0U3RhdGVtZW50VGltZSIsImxhc3RTdG10VGltZSIsInRpbWVBZGp1c3RtZW50TWlsbGlzIiwid2FpdGVkIiwiY2VpbCIsIm1pbmltdW1XYWl0VGltZUluTWlsbGlzIiwic2VuZFNjcm9sbFRvVG9aYXAiLCJjYWNoZWRTdWJtaXQiLCJjYWNoZWRUaW1lU3RhbXAiLCJoYW5kbGVGcmFtZVN3aXRjaGVzIiwibGV2ZWwiLCJjdXJMZXZlbCIsImN1ckZyYW1lIiwibG9nIiwiaGFuZGxlQ2xpY2siLCJldmVudCIsInNob3VsZFJlY29yZCIsImZyYW1lIiwiY2xpY2tUYXJnZXQiLCJkZXRhaWwiLCJ0aW1lU2luY2VJbnRlcmFjdGlvbiIsImxhc3RVc2VySW50ZXJhY3Rpb25UaW1lIiwibW91c2VEb3duV2FzT25UYXJnZXQiLCJsYXN0TW91c2VEb3duVGFyZ2V0IiwiVVNFUl9JTlRFUkFDVElPTl9XSU5ET1dfTVMiLCJwZW5kaW5nU3ludGhldGljQ2xpY2tUaW1lciIsInBlbmRpbmdTeW50aGV0aWNDbGlja1RhcmdldCIsImhhbmRsZVVzZXJJbnRlcmFjdGlvbiIsImhhbmRsZVNjcm9sbCIsImhhbmRsZU1vdXNlT3ZlciIsImN1cnJlbnRET01TdGF0ZSIsIm91dGVySFRNTCIsInByZXZpb3VzRE9NU3RhdGUiLCJoYW5kbGVDaGFuZ2UiLCJfdGV4dCIsIl9zZWxlY3Qkc2VsZWN0ZWRPcHRpbyIsInNlbGVjdCIsInNlbGVjdGVkT3B0aW9ucyIsImhhbmRsZUtleXByZXNzIiwidGltZVN0YW1wIiwiaGFuZGxlUmVzaXplIiwiYWN0aXZlIiwid2lkdGgiLCJpbm5lcldpZHRoIiwiY2xpZW50V2lkdGgiLCJoZWlnaHQiLCJpbm5lckhlaWdodCIsImNsaWVudEhlaWdodCIsImFkZExpc3RlbmVyVG9JbnB1dEZpZWxkIiwiaW5wdXRGaWVsZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJoYW5kbGVGcmFtZUxvYWQiLCJfZnJhbWUkY29udGVudFdpbmRvdyIsImRvYyIsImNvbnRlbnREb2N1bWVudCIsImNvbnRlbnRXaW5kb3ciLCJhZGRMaXN0ZW5lcnNUb0RvY3VtZW50IiwiaW5kZXhPZkZyYW1lIiwicHJvY2Vzc0ZyYW1lIiwiX2h0bWxFbGVtZW50JGNvbnRlbnRXIiwiaHRtbEVsZW1lbnQiLCJmcmFtZURvY3VtZW50IiwicmVhZHlTdGF0ZSIsImRvY3VtZW50VVJJIiwic3JjIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9uc0xpc3QiLCJmb3JFYWNoIiwibXV0YXRpb24iLCJhdHRyaWJ1dGVOYW1lIiwib2JzZXJ2ZSIsImF0dHJpYnV0ZXMiLCJmcmFtZXMiLCJmcmFtZUVsZW1lbnQiLCJ0ZXh0RWxlbWVudHMiLCJTZXQiLCJjYXB0dXJlIiwiZGVib3VuY2UiLCJfZnJhbWUiLCJpbnB1dHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImoiLCJpc05ld0lucHV0IiwiY2hpbGRMaXN0Iiwic3VidHJlZSIsImlzVmlzaWJsZSIsImVsIiwic3R5bGUiLCJnZXRDb21wdXRlZFN0eWxlIiwiZGlzcGxheSIsInZpc2liaWxpdHkiLCJvcGFjaXR5Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY2xhc3NOYW1lIiwiZ2V0QnJvd3Nlck5hbWUiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJpbmNsdWRlcyIsImluaXRpYWxpemF0aW9uU2NyaXB0IiwibG9naW5VcmwiLCJzdGFydFRpbWUiLCJpbml0U2NyaXB0IiwiZG93bmxvYWRTY3JpcHQiLCJzdG9wUmVjb3JkaW5nQnV0dG9uIiwiZ2V0RWxlbWVudEJ5SWQiLCJ2ZXJzaW9uIiwicmVjb3JkVXNlckludGVyYWN0aW9ucyIsImhhdmVMaXN0ZW5lcnNCZWVuQWRkZWQiLCJpbnNlcnRGbG9hdGluZ1BvcHVwIiwic3RvcFJlY29yZGluZ1VzZXJJbnRlcmFjdGlvbnMiLCJ6YXByZWNvcmRpbmdhY3RpdmUiLCJmbG9hdGluZ0RpdiIsInBhZCIsInBhZFN0YXJ0IiwiZ2V0RGF0ZVN0cmluZyIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiZ2V0SG91cnMiLCJnZXRNaW51dGVzIiwiZ2V0U2Vjb25kcyIsImZsb2F0aW5nV2luZG93SW5zZXJ0ZWQiLCJmYSIsImNyZWF0ZUVsZW1lbnQiLCJnZXRVUkwiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJhbGwiLCJwb3NpdGlvbiIsInRvcCIsImxlZnQiLCJ0cmFuc2Zvcm0iLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXIiLCJib3hTaGFkb3ciLCJ6SW5kZXgiLCJ0ZXh0QWxpZ24iLCJib3JkZXJSYWRpdXMiLCJmb250RmFtaWx5IiwiZmxleERpcmVjdGlvbiIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25JdGVtcyIsInRleHRFbGVtZW50IiwibWFyZ2luIiwiZm9udFNpemUiLCJjb2xvciIsImJ1dHRvbkVsZW1lbnQiLCJtYXJnaW5Ub3AiLCJwYWRkaW5nIiwiYmFja2dyb3VuZCIsImN1cnNvciIsIml0ZW1zMiIsImpzb24iLCJ0aXRsZSIsImJsb2IiLCJsaW5rIiwic2NyaXB0IiwiaG9zdG5hbWUiLCJCbG9iIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiY2xpY2siLCJyZW1vdmVDaGlsZCIsInJldm9rZU9iamVjdFVSTCIsIkhUTUxGcmFtZVNldEVsZW1lbnQiLCJhZnRlciIsImluaXRpYWxNb3VzZVgiLCJpbml0aWFsTW91c2VZIiwiaW5pdGlhbERpdlgiLCJpbml0aWFsRGl2WSIsImlzRHJhZ2dpbmciLCJjbGllbnRYIiwiY2xpZW50WSIsIm9mZnNldExlZnQiLCJvZmZzZXRUb3AiLCJvZmZzZXRYIiwib2Zmc2V0WSIsImxlZnRQZXJjZW50IiwidG9wUGVyY2VudCIsInN0bXQiLCJfdGhpczIiLCJfY2FsbGVlMiIsIm5vdGlmeU1lc3NhZ2UiLCJtZXNzYWdlRWxlbWVudCIsImV4aXN0aW5nQ2hpbGRFbGVtZW50cyIsIl9jb250ZXh0MiIsImlzTm90aWZpY2F0aW9uUmFpc2VkIiwid2FpdEZvck5vdGlmaWNhdGlvblRvQ2xlYXIiLCJmcm9tIiwiY2hpbGRyZW4iLCJpbm5lckhUTUwiLCJjaGlsZCIsImNoZWNrSW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9uIiwiRiIsInMiLCJuZXh0IiwicmVwb3J0ZWRPYmplY3RzIiwicmVwb3J0ZWRFdmVudHMiLCJSZWNvcmRlciIsInJlcG9ydFN0b3JhZ2UiLCJmbiIsIl9pIiwiX09iamVjdCRrZXlzIiwiZ2V0SXRlbSIsInNlbmRFdmVudFRvWkFQIiwiX3giLCJfc2VuZEV2ZW50VG9aQVAiLCJfc2VuZE9iamVjdFRvWkFQIiwicmVwb3J0T2JqZWN0IiwicmVwT2JqIiwicmVwT2JqU3RyIiwiX3gyIiwic2VuZE9iamVjdFRvWkFQIiwicmVwb3J0QWxsU3RvcmFnZSIsImxvY2FsU3RvcmFnZSIsInNlc3Npb25TdG9yYWdlIiwid2l0aFphcEVuYWJsZVNldHRpbmciLCJ6YXBlbmFibGUiLCJyZXBvcnRQYWdlVW5sb2FkZWQiLCJfaTIiLCJfT2JqZWN0JHZhbHVlcyIsInZhbHVlcyIsInJlcG9ydFBhZ2VGb3JtcyIsInJlcG9ydFBhZ2VMaW5rcyIsImxpbmtzIiwicmVwb3J0RWxlbWVudHMiLCJjb2xsZWN0aW9uIiwicmVwb3J0Tm9kZUVsZW1lbnRzIiwicmVwb3J0UG9pbnRlckVsZW1lbnRzIiwic291cmNlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInJlcG9ydFBhZ2VMb2FkZWQiLCJkb21NdXRhdGVkIiwibXV0YXRpb25MaXN0IiwiX29icyIsImV4aXN0aW5nRXZlbnQiLCJfc3RlcCIsIl9pdGVyYXRvciIsImlzQ29uZmlndXJhdGlvblJlcXVlc3QiLCJzdGFydHNXaXRoIiwib25Mb2FkRXZlbnRMaXN0ZW5lciIsImNvbmZpZ3VyZUV4dGVuc2lvbiIsIlVSTFNlYXJjaFBhcmFtcyIsInJlY29yZCIsInphcHVybCIsInNwbGl0Iiwib25iZWZvcmV1bmxvYWQiLCJfc2VuZGVyIiwiX3NlbmRSZXNwb25zZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +(()=>{var e={873(e,t,n){var r=n(325).Symbol;e.exports=r},552(e,t,n){var r=n(873),i=n(659),s=n(350),o=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":o&&o in Object(e)?i(e):s(e)}},128(e,t,n){var r=n(800),i=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(i,""):e}},840(e,t,n){var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},659(e,t,n){var r=n(873),i=Object.prototype,s=i.hasOwnProperty,o=i.toString,a=r?r.toStringTag:void 0;e.exports=function(e){var t=s.call(e,a),n=e[a];try{e[a]=void 0;var r=!0}catch(e){}var i=o.call(e);return r&&(t?e[a]=n:delete e[a]),i}},350(e){var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},325(e,t,n){var r=n(840),i="object"==typeof self&&self&&self.Object===Object&&self,s=r||i||Function("return this")();e.exports=s},800(e){var t=/\s/;e.exports=function(e){for(var n=e.length;n--&&t.test(e.charAt(n)););return n}},221(e,t,n){var r=n(805),i=n(124),s=n(374),o=Math.max,a=Math.min;e.exports=function(e,t,n){var l,c,m,g,d,u,h=0,f=!1,p=!1,A=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function y(t){var n=l,r=c;return l=c=void 0,h=t,g=e.apply(r,n)}function v(e){var n=e-u;return void 0===u||n>=t||n<0||p&&e-h>=m}function b(){var e=i();if(v(e))return w(e);d=setTimeout(b,function(e){var n=t-(e-u);return p?a(n,m-(e-h)):n}(e))}function w(e){return d=void 0,A&&l?y(e):(l=c=void 0,g)}function x(){var e=i(),n=v(e);if(l=arguments,c=this,u=e,n){if(void 0===d)return function(e){return h=e,d=setTimeout(b,t),f?y(e):g}(u);if(p)return clearTimeout(d),d=setTimeout(b,t),y(u)}return void 0===d&&(d=setTimeout(b,t)),g}return t=s(t)||0,r(n)&&(f=!!n.leading,m=(p="maxWait"in n)?o(s(n.maxWait)||0,t):m,A="trailing"in n?!!n.trailing:A),x.cancel=function(){void 0!==d&&clearTimeout(d),h=0,l=u=c=d=void 0},x.flush=function(){return void 0===d?g:w(i())},x}},805(e){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},346(e){e.exports=function(e){return null!=e&&"object"==typeof e}},394(e,t,n){var r=n(552),i=n(346);e.exports=function(e){return"symbol"==typeof e||i(e)&&"[object Symbol]"==r(e)}},124(e,t,n){var r=n(325);e.exports=function(){return r.Date.now()}},374(e,t,n){var r=n(128),i=n(805),s=n(394),o=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,l=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(s(e))return NaN;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=a.test(e);return n||l.test(e)?c(e.slice(2),n?2:8):o.test(e)?NaN:+e}},815(e,t){var n,r,i;"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self&&self,r=[e],n=function(e){"use strict";if(!(globalThis.chrome&&globalThis.chrome.runtime&&globalThis.chrome.runtime.id))throw new Error("This script should only be loaded in a browser extension.");if(globalThis.browser&&globalThis.browser.runtime&&globalThis.browser.runtime.id)e.exports=globalThis.browser;else{const t="The message port closed before a response was received.",n=e=>{const n={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(n).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class r extends WeakMap{constructor(e,t=void 0){super(t),this.createItem=e}get(e){return this.has(e)||this.set(e,this.createItem(e)),super.get(e)}}const i=e=>e&&"object"==typeof e&&"function"==typeof e.then,s=(t,n)=>(...r)=>{e.runtime.lastError?t.reject(new Error(e.runtime.lastError.message)):n.singleCallbackArg||r.length<=1&&!1!==n.singleCallbackArg?t.resolve(r[0]):t.resolve(r)},o=e=>1==e?"argument":"arguments",a=(e,t)=>function(n,...r){if(r.lengtht.maxArgs)throw new Error(`Expected at most ${t.maxArgs} ${o(t.maxArgs)} for ${e}(), got ${r.length}`);return new Promise((i,o)=>{if(t.fallbackToNoCallback)try{n[e](...r,s({resolve:i,reject:o},t))}catch(s){console.warn(`${e} API method doesn't seem to support the callback parameter, falling back to call it without a callback: `,s),n[e](...r),t.fallbackToNoCallback=!1,t.noCallback=!0,i()}else t.noCallback?(n[e](...r),i()):n[e](...r,s({resolve:i,reject:o},t))})},l=(e,t,n)=>new Proxy(t,{apply:(t,r,i)=>n.call(r,e,...i)});let c=Function.call.bind(Object.prototype.hasOwnProperty);const m=(e,t={},n={})=>{let r=Object.create(null),i={has:(t,n)=>n in e||n in r,get(i,s,o){if(s in r)return r[s];if(!(s in e))return;let g=e[s];if("function"==typeof g)if("function"==typeof t[s])g=l(e,e[s],t[s]);else if(c(n,s)){let t=a(s,n[s]);g=l(e,e[s],t)}else g=g.bind(e);else if("object"==typeof g&&null!==g&&(c(t,s)||c(n,s)))g=m(g,t[s],n[s]);else{if(!c(n,"*"))return Object.defineProperty(r,s,{configurable:!0,enumerable:!0,get:()=>e[s],set(t){e[s]=t}}),g;g=m(g,t[s],n["*"])}return r[s]=g,g},set:(t,n,i,s)=>(n in r?r[n]=i:e[n]=i,!0),defineProperty:(e,t,n)=>Reflect.defineProperty(r,t,n),deleteProperty:(e,t)=>Reflect.deleteProperty(r,t)},s=Object.create(e);return new Proxy(s,i)},g=e=>({addListener(t,n,...r){t.addListener(e.get(n),...r)},hasListener:(t,n)=>t.hasListener(e.get(n)),removeListener(t,n){t.removeListener(e.get(n))}}),d=new r(e=>"function"!=typeof e?e:function(t){const n=m(t,{},{getContent:{minArgs:0,maxArgs:0}});e(n)}),u=new r(e=>"function"!=typeof e?e:function(t,n,r){let s,o,a=!1,l=new Promise(e=>{s=function(t){a=!0,e(t)}});try{o=e(t,n,s)}catch(e){o=Promise.reject(e)}const c=!0!==o&&i(o);if(!0!==o&&!c&&!a)return!1;const m=e=>{e.then(e=>{r(e)},e=>{let t;t=e&&(e instanceof Error||"string"==typeof e.message)?e.message:"An unexpected error occurred",r({__mozWebExtensionPolyfillReject__:!0,message:t})}).catch(e=>{console.error("Failed to send onMessage rejected reply",e)})};return m(c?o:l),!0}),h=({reject:n,resolve:r},i)=>{e.runtime.lastError?e.runtime.lastError.message===t?r():n(new Error(e.runtime.lastError.message)):i&&i.__mozWebExtensionPolyfillReject__?n(new Error(i.message)):r(i)},f=(e,t,n,...r)=>{if(r.lengtht.maxArgs)throw new Error(`Expected at most ${t.maxArgs} ${o(t.maxArgs)} for ${e}(), got ${r.length}`);return new Promise((e,t)=>{const i=h.bind(null,{resolve:e,reject:t});r.push(i),n.sendMessage(...r)})},p={devtools:{network:{onRequestFinished:g(d)}},runtime:{onMessage:g(u),onMessageExternal:g(u),sendMessage:f.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:f.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},A={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return n.privacy={network:{"*":A},services:{"*":A},websites:{"*":A}},m(e,p,n)};e.exports=n(chrome)}},void 0===(i="function"==typeof n?n.apply(t,r):n)||(e.exports=i)}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var s=t[r]={exports:{}};return e[r].call(s.exports,s,s.exports,n),s.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";var e=n(815),t=n.n(e);class r{constructor(e,t,n,r,i,s){this.timestamp=Date.now(),this.type=e,this.tagName=t,this.id=n,this.nodeName=r,this.text=i,this.url=s}toString(){return JSON.stringify(this)}toShortString(){return JSON.stringify(this)}toNonTimestampString(){return JSON.stringify(this,function(e,t){if("timestamp"!==e)return t})}}class i extends r{toShortString(){return JSON.stringify(this,function(e,t){if("href"!==e&&"timestamp"!==e&&("url"!==e||"cookies"===this.type))return t})}}class s extends r{constructor(e,t,n="nodeAdded"){if(super(n,e.tagName,e.id,e.nodeName,e.textContent,t),"A"===e.tagName){var r=e;this.href=r.toString()}else if("FORM"===e.tagName)this.formId=Array.prototype.slice.call(document.forms).indexOf(e);else if("INPUT"===e.tagName){var i=e;this.tagType=i.type,this.text=i.value;var s=i.form;s&&(this.formId=Array.prototype.slice.call(document.forms).indexOf(s))}else if("TEXTAREA"===e.tagName){var o=e;this.text=o.value;var a=o.form;a&&(this.formId=Array.prototype.slice.call(document.forms).indexOf(a))}else if("SELECT"===e.tagName){var l=e;this.text=l.value;var c=l.form;c&&(this.formId=Array.prototype.slice.call(document.forms).indexOf(c))}else e.hasAttribute("href")&&(this.href=e.getAttribute("href"))}toShortString(){return JSON.stringify(this,function(e,t){if("timestamp"!==e&&"interactable"!==e&&"elementLocator"!==e)return t})}}class o{constructor(e){this.timestamp=Date.now(),this.eventName=e,this.url=window.location.href,this.count=1}toString(){return JSON.stringify(this)}}var a=n(221),l=n.n(a),c=void 0===t().runtime.getManifest||"ZAP by Checkmarx Browser Extension"===t().runtime.getManifest().name,m="windowHandle1",g="reportEvent",d="localStorage",u="sessionStorage",h="ZapfloatingDiv",f="ZapfloatingDivElements";function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function A(e){for(var t=1;t ${n}`}return n}function $(e){return e instanceof Element&&e.getAttribute("id")===h}function R(e){return e.includes("'")?e.includes('"')?`concat(${e.split("'").map(e=>`'${e}'`).join(', "\'", ')})`:`"${e}"`:`'${e}'`}function Z(e,t){return 1===e.classList.length&&null!=e.classList.item(0)&&!k.has(e)&&!function(e){var t;return!!P.has(e)&&P.get(e)!==(null!==(t=e.getAttribute("class"))&&void 0!==t?t:"")}(e)&&M(`.${e.classList.item(0)}`,t)}function D(e,t){if(!e.tagName)return"";var n=e.tagName.toLowerCase();if(e.id&&I(n,t))n+=`[@id=${R(e.id)}]`;else{for(var r=1,i=e.previousSibling,s=!0;i;)i.nodeType!==Node.ELEMENT_NODE||i.nodeName!==e.nodeName||$(i)||(r+=1,s=!1),i=i.previousSibling;if(s)for(i=e.nextSibling;i;){if(i.nodeType===Node.ELEMENT_NODE&&i.nodeName===e.nodeName){s=!1;break}i=i.nextSibling}1===r&&s||(n+=`[${r}]`)}e.parentNode&&(n=`${D(e.parentNode,t)}/${n}`);return n}function U(e,t){if(!e.tagName)return"";if("A"===e.tagName){var n=e.textContent;if(n){var r=`//a[text()=${R(n)}]`;if(I(r,t))return r}}return D(e,t)}function W(e,t){var n,r=new v("","");if("FORM"===e.tagName)return r.type="xpath",r.element=function(e,t){var n=e.name;if(n){var r=`//form[@name=${R(n)}]`;if(I(r,t))return r}for(var i=t.getElementsByTagName("form"),s=1,o=0;o0||e.offsetHeight>0)&&!function(e){for(var t=e;t;){var n,r=null===(n=t.ownerDocument.defaultView)||void 0===n?void 0:n.getComputedStyle(t);if("none"===(null==r?void 0:r.display)||"0"===(null==r?void 0:r.opacity)||"hidden"===(null==r?void 0:r.contentVisibility))return!0;t=t.parentElement}return!1}(e),enabled:t,pointer:_(e)}}function H(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function s(n,r,i,s){var l=r&&r.prototype instanceof a?r:a,c=Object.create(l.prototype);return J(c,"_invoke",function(n,r,i){var s,a,l,c=0,m=i||[],g=!1,d={p:0,n:0,v:e,a:u,f:u.bind(e,4),d:function(t,n){return s=t,a=0,l=e,d.n=n,o}};function u(n,r){for(a=n,l=r,t=0;!g&&c&&!i&&t3?(i=h===r)&&(l=s[(a=s[4])?5:(a=3,3)],s[4]=s[5]=e):s[0]<=u&&((i=n<2&&ur||r>h)&&(s[4]=n,s[5]=r,d.n=h,a=0))}if(i||n>1)return o;throw g=!0,r}return function(i,m,h){if(c>1)throw TypeError("Generator is already running");for(g&&1===m&&u(m,h),a=m,l=h;(t=a<2?e:l)||!g;){s||(a?a<3?(a>1&&(d.n=-1),u(a,l)):d.n=l:d.v=l);try{if(c=2,s){if(a||(i="next"),t=s[i]){if(!(t=t.call(s,l)))throw TypeError("iterator result is not an object");if(!t.done)return t;l=t.value,a<2&&(a=0)}else 1===a&&(t=s.return)&&t.call(s),a<2&&(l=TypeError("The iterator does not provide a '"+i+"' method"),a=1);s=e}else if((t=(g=d.n<0)?l:n.call(r,d))!==o)break}catch(t){s=e,a=1,l=t}finally{c=1}}return{value:t,done:g}}}(n,i,s),!0),c}var o={};function a(){}function l(){}function c(){}t=Object.getPrototypeOf;var m=[][r]?t(t([][r]())):(J(t={},r,function(){return this}),t),g=c.prototype=a.prototype=Object.create(m);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,J(e,i,"GeneratorFunction")),e.prototype=Object.create(g),e}return l.prototype=c,J(g,"constructor",c),J(c,"constructor",l),l.displayName="GeneratorFunction",J(c,i,"GeneratorFunction"),J(g),J(g,i,"Generator"),J(g,r,function(){return this}),J(g,"toString",function(){return"[object Generator]"}),(H=function(){return{w:s,m:d}})()}function J(e,t,n,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}J=function(e,t,n,r){function s(t,n){J(e,t,function(e){return this._invoke(t,n,e)})}t?i?i(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(s("next",0),s("throw",1),s("return",2))},J(e,t,n,r)}function G(e,t,n,r,i,s,o){try{var a=e[s](o),l=a.value}catch(e){return void n(e)}a.done?t(l):Promise.resolve(l).then(r,i)}function q(e){return function(){var t=this,n=arguments;return new Promise(function(r,i){var s=e.apply(t,n);function o(e){G(s,r,i,o,a,"next",e)}function a(e){G(s,r,i,o,a,"throw",e)}o(void 0)})}}function V(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var X="ZAP-stop-recording-button",K="Stop and Download Recording";const Y=class{constructor(){V(this,"timeAdjustmentMillis",3e3),V(this,"minimumWaitTimeInMillis",5e3),V(this,"curLevel",-1),V(this,"curFrame",0),V(this,"active",!1),V(this,"haveListenersBeenAdded",!1),V(this,"floatingWindowInserted",!1),V(this,"isNotificationRaised",!1),V(this,"cachedTimeStamp",-1),V(this,"lastUserInteractionTime",0),V(this,"lastMouseDownTarget",null),V(this,"USER_INTERACTION_WINDOW_MS",500),V(this,"pendingSyntheticClickTarget",null),V(this,"pendingSyntheticClickTimer",null)}sendZestScriptToZAP(e,n){var r=this;return q(H().m(function i(){return H().w(function(i){for(;;)if(0===i.n)return n.sendCache&&r.handleCachedSubmit(),n.notify&&r.notify(e),i.a(2,t().runtime.sendMessage({type:"zestScript",data:e.toJSON()}))},i)}))()}getWaited(){void 0!==this.lastStatementTime&&0!==this.lastStatementTime||(this.lastStatementTime=Date.now());var e=this.lastStatementTime-this.timeAdjustmentMillis,t=Math.ceil((Date.now()-e)/this.minimumWaitTimeInMillis)*this.minimumWaitTimeInMillis;return this.lastStatementTime=Date.now(),t}sendScrollToToZap(e,t){this.sendZestScriptToZAP(new N(e,t),{sendCache:!1,notify:!1})}handleCachedSubmit(){this.cachedSubmit&&(this.sendScrollToToZap(this.cachedSubmit.elementLocator,this.getWaited()),this.sendZestScriptToZAP(this.cachedSubmit,{sendCache:!1,notify:!0}),delete this.cachedSubmit,this.cachedTimeStamp=-1)}handleFrameSwitches(e,t){if(this.curLevel!==e||this.curFrame!==t){if(this.curLevel>e){for(;this.curLevel>e;)this.sendZestScriptToZAP(new C(-1),{sendCache:!0,notify:!0}),this.curLevel-=1;this.curFrame=t}else this.curLevel+=1,this.curFrame=t,this.sendZestScriptToZAP(new C(t),{sendCache:!0,notify:!0});this.curLevel!==e&&console.log("ZAP Error in switching frames")}}handleClick(e,t){if(this.shouldRecord(t.target)){var n=e.level,r=e.frame,i=e.element,s=t.target;if(this.handleFrameSwitches(n,r),console.log(t,"ZAP clicked"),0===t.detail){var o=Date.now()-this.lastUserInteractionTime,a=null!==this.lastMouseDownTarget&&s.contains(this.lastMouseDownTarget);if(o>=this.USER_INTERACTION_WINDOW_MS||!a)return void(this.cachedSubmit&&this.handleCachedSubmit());var l=W(t.target,i);return null!==this.pendingSyntheticClickTimer&&clearTimeout(this.pendingSyntheticClickTimer),this.pendingSyntheticClickTarget=s,void(this.pendingSyntheticClickTimer=setTimeout(()=>{this.pendingSyntheticClickTarget=null,this.pendingSyntheticClickTimer=null;var e=this.getWaited();this.sendScrollToToZap(l,e),this.sendZestScriptToZAP(new T(l,e),{sendCache:!0,notify:!0})},0))}null!==this.pendingSyntheticClickTarget&&this.pendingSyntheticClickTarget===s&&(null!==this.pendingSyntheticClickTimer&&clearTimeout(this.pendingSyntheticClickTimer),this.pendingSyntheticClickTarget=null,this.pendingSyntheticClickTimer=null);var c=this.getWaited(),m=W(t.target,i);this.sendScrollToToZap(m,c),this.sendZestScriptToZAP(new T(m,c),{sendCache:!0,notify:!0})}}handleUserInteraction(e){this.lastUserInteractionTime=Date.now(),this.lastMouseDownTarget=e.target}handleScroll(e,t){if(this.shouldRecord(t.target)){var n=e.level,r=e.frame;this.handleFrameSwitches(n,r),console.log(t,"ZAP scrolling.. ")}}handleMouseOver(e,t){if(this.shouldRecord(t.target)){var n=e.level,r=e.frame,i=e.element.documentElement.outerHTML;i!==this.previousDOMState&&(this.previousDOMState=i,this.handleFrameSwitches(n,r),console.log(t,"ZAP MouseOver"))}}handleChange(e,t){var n,r;if(this.shouldRecord(t.target)){var i=e.level,s=e.frame,o=e.element,a=this.getWaited();this.handleFrameSwitches(i,s),console.log(t,"ZAP change",t.target.value);var l=W(t.target,o);this.cachedSubmit&&this.cachedSubmit.elementLocator.element!==l.element&&this.handleCachedSubmit();var c=t.target,m="SELECT"===c.tagName?null!==(n=null===(r=c.selectedOptions[0])||void 0===r?void 0:r.text)&&void 0!==n?n:"":t.target.value;this.sendScrollToToZap(l,a),this.sendZestScriptToZAP(new E(l,m,a),{sendCache:!1,notify:!0}),this.handleCachedSubmit()}}handleKeypress(e,t){if(this.shouldRecord(t.target)){var n=e.element;if("Enter"===t.key){if(this.cachedSubmit&&this.cachedTimeStamp===t.timeStamp)return;this.handleCachedSubmit();var r=W(t.target,n);this.cachedSubmit=new O(r,this.getWaited()),this.cachedTimeStamp=t.timeStamp}}}handleResize(){if(this.active){var e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,t=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight;console.log("ZAP Window Resize : ",e,t)}}addListenerToInputField(e,t,n,r,i){e.has(t)||(e.add(t),t.addEventListener("keydown",this.handleKeypress.bind(this,{level:n,frame:r,element:i})))}handleFrameLoad(e){var t,n=e.element,r=n.contentDocument||(null===(t=n.contentWindow)||void 0===t?void 0:t.document);null!=r&&this.addListenersToDocument(r,e.level,this.indexOfFrame(n))}processFrame(e,t){var n,r=e,i=null===(n=r.contentWindow)||void 0===n?void 0:n.document;null!=i&&"complete"===i.readyState&&i.documentURI===r.src?this.addListenersToDocument(i,t,this.indexOfFrame(e)):e.addEventListener("load",this.handleFrameLoad.bind(this,{element:r,level:t}));new MutationObserver(e=>{e.forEach(e=>{"attributes"===e.type&&"src"===e.attributeName&&this.processFrame(e.target,t)})}).observe(e,{attributes:!0})}indexOfFrame(e){for(var t=0;tthis.processFrame(e,t+1)),e.querySelectorAll("input").forEach(i=>{j(i),this.addListenerToInputField(r,i,t,n,e)});new MutationObserver(i=>{i.forEach(i=>{if("childList"===i.type&&i.target.nodeType===Node.ELEMENT_NODE)for(var s=i.target.getElementsByTagName("input"),o=0;o{e.downloadScript&&(s.textContent=K)}),s.addEventListener("click",()=>{this.stopRecordingUserInteractions(),t().runtime.sendMessage({type:"stopRecording"}),t().storage.sync.get({downloadScript:!1}).then(e=>{e.downloadScript&&(t().runtime.sendMessage({type:"getZestScript"}).then(e=>{var t,n,r,i,s;t=e.script,n=`zap-rec-${window.location.hostname}${this.getDateString()}.zst`,r=new Blob([t],{type:"application/json"}),i=URL.createObjectURL(r),(s=document.createElement("a")).href=i,s.download=n,s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL(i)}),t().storage.sync.set({downloadScript:!1}))})}),r.appendChild(i),r.appendChild(s),document.body instanceof HTMLFrameSetElement?document.body.after(r):document.body.appendChild(r),this.floatingWindowInserted=!0;var o,a,l,c,m=!1;r.addEventListener("mousedown",e=>{m=!0,o=e.clientX,a=e.clientY,l=r.offsetLeft,c=r.offsetTop}),window.addEventListener("mousemove",e=>{if(m){var t=e.clientX-o,n=e.clientY-a;r.style.left=`${l+t}px`,r.style.top=`${c+n}px`}}),window.addEventListener("mouseup",()=>{if(m&&!r.style.left.includes("%")){var e=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,t=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,n=parseInt(r.style.left)/e*100,i=parseInt(r.style.top)/t*100;r.style.left=`${n}%`,r.style.top=`${i}%`,m=!1}else m=!1})}notify(e){var t=this;return q(H().m(function n(){var r,i,s,o;return H().w(function(n){for(;;)switch(n.n){case 0:if(r={title:"",message:""},e instanceof T?(r.title="Click",r.message=e.elementLocator.element):e instanceof N?(r.title="Scroll To",r.message=e.elementLocator.element):e instanceof E?(r.title="Send Keys",r.message=`${e.elementLocator.element}: ${e.keys}`):e instanceof O?(r.title="Submit",r.message=`${e.elementLocator.element}`):e instanceof w?(r.title="Launch Browser",r.message=e.browserType):e instanceof C&&(r.title="Switch To Frame",r.message=e.frameIndex.toString()),!t.isNotificationRaised){n.n=1;break}return n.n=1,t.waitForNotificationToClear();case 1:if(i=document.getElementById(h)){n.n=2;break}return console.log("ZAP Floating Div Not Found !"),n.a(2);case 2:t.isNotificationRaised=!0,(s=document.createElement("p")).className=f,s.textContent=`${r.title}: ${r.message}`,s.style.all="initial",s.style.fontSize="20px",s.style.zIndex="999999",s.style.fontFamily="Roboto",o=Array.from(i.children||[]),i.innerHTML="",i.appendChild(s),setTimeout(()=>{i.removeChild(s),o.forEach(e=>i.appendChild(e)),t.isNotificationRaised=!1},1e3);case 3:return n.a(2)}},n)}))()}waitForNotificationToClear(){return new Promise(e=>{var t=setInterval(()=>{this.isNotificationRaised||(clearInterval(t),e(1))},100)})}};function Q(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function s(n,r,i,s){var l=r&&r.prototype instanceof a?r:a,c=Object.create(l.prototype);return ee(c,"_invoke",function(n,r,i){var s,a,l,c=0,m=i||[],g=!1,d={p:0,n:0,v:e,a:u,f:u.bind(e,4),d:function(t,n){return s=t,a=0,l=e,d.n=n,o}};function u(n,r){for(a=n,l=r,t=0;!g&&c&&!i&&t3?(i=h===r)&&(l=s[(a=s[4])?5:(a=3,3)],s[4]=s[5]=e):s[0]<=u&&((i=n<2&&ur||r>h)&&(s[4]=n,s[5]=r,d.n=h,a=0))}if(i||n>1)return o;throw g=!0,r}return function(i,m,h){if(c>1)throw TypeError("Generator is already running");for(g&&1===m&&u(m,h),a=m,l=h;(t=a<2?e:l)||!g;){s||(a?a<3?(a>1&&(d.n=-1),u(a,l)):d.n=l:d.v=l);try{if(c=2,s){if(a||(i="next"),t=s[i]){if(!(t=t.call(s,l)))throw TypeError("iterator result is not an object");if(!t.done)return t;l=t.value,a<2&&(a=0)}else 1===a&&(t=s.return)&&t.call(s),a<2&&(l=TypeError("The iterator does not provide a '"+i+"' method"),a=1);s=e}else if((t=(g=d.n<0)?l:n.call(r,d))!==o)break}catch(t){s=e,a=1,l=t}finally{c=1}}return{value:t,done:g}}}(n,i,s),!0),c}var o={};function a(){}function l(){}function c(){}t=Object.getPrototypeOf;var m=[][r]?t(t([][r]())):(ee(t={},r,function(){return this}),t),g=c.prototype=a.prototype=Object.create(m);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,ee(e,i,"GeneratorFunction")),e.prototype=Object.create(g),e}return l.prototype=c,ee(g,"constructor",c),ee(c,"constructor",l),l.displayName="GeneratorFunction",ee(c,i,"GeneratorFunction"),ee(g),ee(g,i,"Generator"),ee(g,r,function(){return this}),ee(g,"toString",function(){return"[object Generator]"}),(Q=function(){return{w:s,m:d}})()}function ee(e,t,n,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}ee=function(e,t,n,r){function s(t,n){ee(e,t,function(e){return this._invoke(t,n,e)})}t?i?i(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(s("next",0),s("throw",1),s("return",2))},ee(e,t,n,r)}function te(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return ne(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ne(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,o=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){a=!0,s=e},f:function(){try{o||null==n.return||n.return()}finally{if(a)throw s}}}}function ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n{console.log(`ZAP withZapEnableSetting ${t.zapenable}`),t.zapenable&&e()})}function ye(){Ae(()=>{t().runtime.sendMessage({type:g,data:new o("pageUnload").toString()});for(var e=0,n=Object.values(oe);e{var i=new s(r,n);i.elementLocator=W(r,e),ve(i,r),t(i)})}function we(e,t){var n=window.location.href;Array.prototype.forEach.call(e.links,r=>{var i=new s(r,n);i.elementLocator=W(r,e),ve(i,r),t(i)})}function xe(e,t){var n=window.location.href;Array.prototype.forEach.call(e,e=>{var r=new s(e,n);r.elementLocator=W(e,document),ve(r,e),t(r)})}function Se(e,t,n){e.nodeType===Node.ELEMENT_NODE&&xe(e.getElementsByTagName(t),n)}function Te(e,t){e.querySelectorAll("*").forEach(e=>{var n=e.tagName,r=window.location.href;if(!z.has(n)&&e instanceof Element&&!function(e){for(var t=e.parentElement,n=0;t&&n<15;){if(z.has(t.tagName))return!0;t=t.parentElement,n+=1}return!1}(e)&&_(e)){var i=new s(e,r);i.elementLocator=W(e,document),ve(i,e),t(i)}})}function Ne(e,n){t().runtime.sendMessage({type:g,data:new o("pageLoad").toString()}),we(e,n),be(e,n),xe(e.getElementsByTagName("input"),n),xe(e.getElementsByTagName("textarea"),n),xe(e.getElementsByTagName("select"),n),xe(e.getElementsByTagName("button"),n),Te(e,n),me(d,localStorage,n),me(u,sessionStorage,n)}var Ee=function(e,t){Ae(()=>{var t,n;t=new o("domMutation"),(n=oe[t.eventName])?n.url!==window.location.href?(ge(n),n=new o(t.eventName),oe[t.eventName]=t,ge(n)):n.count++:(n=new o(t.eventName),oe[t.eventName]=t,ge(n)),we(document,fe),be(document,fe),Te(document,fe);var r,i=te(e);try{for(i.s();!(r=i.n()).done;){var s=r.value;"childList"===s.type&&(Se(s.target,"input",fe),Se(s.target,"textarea",fe),Se(s.target,"select",fe),Se(s.target,"button",fe),s.target.nodeType===Node.ELEMENT_NODE&&Te(s.target,fe))}}catch(e){i.e(e)}finally{i.f()}})};function Oe(){return window.location.href.startsWith("https://zap/zapCallBackUrl/")}function Ce(){Oe()||Ae(()=>{Ne(document,fe)})}function ke(){if(Oe()){var e=new URLSearchParams(window.location.search),n="true"===localStorage.getItem("localzapenable")||e.has("zapenable"),r="true"===localStorage.getItem("localzaprecord")||e.has("zaprecord");console.log("ZAP Configure",n,r),t().storage.sync.set({zapurl:window.location.href.split("?")[0],zapenable:n,zaprecordingactive:r})}}new Promise(e=>{var n;ke(),n=()=>{t().storage.sync.get({initScript:!1,loginUrl:"",startTime:0}).then(e=>{console.log(`ZAP injectScript items ${e.initScript} ${e.loginUrl}`),ce.recordUserInteractions(!0===e.initScript,e.loginUrl,e.startTime)})},t().storage.sync.get({zaprecordingactive:!1}).then(e=>{console.log(`ZAP withZapRecordingActive ${e.zaprecordingactive}`),e.zaprecordingactive&&n()}),Ae(()=>{window.addEventListener("load",Ce,!1),window.onbeforeunload=ye,new MutationObserver(Ee).observe(document,{attributes:!1,childList:!0,subtree:!0}),new MutationObserver(()=>{Ae(ie(Q().m(function e(){var t,n,r,i,o,a,l,c,m;return Q().w(function(e){for(;;)switch(e.n){case 0:if(!((t=document.getAnimations().map(e=>e.finished)).length>0)){e.n=1;break}return e.n=1,Promise.race([Promise.all(t),new Promise(e=>{setTimeout(e,2e3)})]);case 1:n=[],r=te(le);try{for(r.s();!(i=r.n()).done;)o=i.value,(a=o.deref())&&(n.push(o),l=B(a),void 0===(c=ae.get(a))||c.visible===l.visible&&c.enabled===l.enabled&&c.pointer===l.pointer||(ae.set(a,l),(m=new s(a,window.location.href,"nodeChanged")).interactable=l,m.elementLocator=W(a,document),ue(m)))}catch(e){r.e(e)}finally{r.f()}le=n;case 2:return e.a(2)}},e)})))}).observe(document,{attributes:!0,attributeFilter:["aria-disabled","aria-hidden","class","disabled","hidden","href","style"],subtree:!0}),setInterval(()=>{pe()},500),Ne(document,fe),e(!0)}),e(!1)}),t().runtime.onMessage.addListener((e,t,n)=>("zapStartRecording"===e.type?(ke(),ce.recordUserInteractions()):"zapStopRecording"===e.type&&ce.stopRecordingUserInteractions(),!0))})()})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFpQixDQUNmLGdCQUNBLGNBQ0EsUUFDQSxXQUNBLFNBQ0EsT0FDQSxTQUVGeEwsU0FBUyxJQUdYd0csWUFBWSxLQUVWOEIsTUFDQyxLQUdId0IsR0FBaUI5WixTQUFVbVksSUEwQ3ZCemUsR0FBUSxLQUVWQSxHQUFRLEtBT1pxSCxJQUFBQSxRQUFnQnJELFVBQVUvQixZQUN4QixDQUNFbEMsRUFDQWdpQixFQUNBQyxLTC9YK0Isc0JLaVkzQmppQixFQUFRaEwsTUFDVityQixLQUNBclEsR0FBUzhHLDBCTHBZbUIscUJLcVluQnhYLEVBQVFoTCxNQUNqQjBiLEdBQVNpSCxpQ0FJSiIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1N5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VUcmltLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UmF3VGFnLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX29iamVjdFRvU3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3Jvb3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdHJpbW1lZEVuZEluZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZGVib3VuY2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU3ltYm9sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbm93LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdG9OdW1iZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3dlYmV4dGVuc2lvbi1wb2x5ZmlsbC9kaXN0L2Jyb3dzZXItcG9seWZpbGwuanMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovLy8uL3NvdXJjZS90eXBlcy9SZXBvcnRlZE1vZGVsLnRzIiwid2VicGFjazovLy8uL3NvdXJjZS91dGlscy9jb25zdGFudHMudHMiLCJ3ZWJwYWNrOi8vLy4vc291cmNlL3R5cGVzL3plc3RTY3JpcHQvWmVzdFN0YXRlbWVudC50cyIsIndlYnBhY2s6Ly8vLi9zb3VyY2UvQ29udGVudFNjcmlwdC91dGlsLnRzIiwid2VicGFjazovLy8uL3NvdXJjZS9Db250ZW50U2NyaXB0L3JlY29yZGVyLnRzIiwid2VicGFjazovLy8uL3NvdXJjZS91dGlscy91dGlsLnRzIiwid2VicGFjazovLy8uL3NvdXJjZS9Db250ZW50U2NyaXB0L2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW1ib2w7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgZ2V0UmF3VGFnID0gcmVxdWlyZSgnLi9fZ2V0UmF3VGFnJyksXG4gICAgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmluZycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuIiwidmFyIHRyaW1tZWRFbmRJbmRleCA9IHJlcXVpcmUoJy4vX3RyaW1tZWRFbmRJbmRleCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBsZWFkaW5nIHdoaXRlc3BhY2UuICovXG52YXIgcmVUcmltU3RhcnQgPSAvXlxccysvO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRyaW1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gdHJpbS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVHJpbShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZ1xuICAgID8gc3RyaW5nLnNsaWNlKDAsIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpICsgMSkucmVwbGFjZShyZVRyaW1TdGFydCwgJycpXG4gICAgOiBzdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRyaW07XG4iLCIvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuICAgICAgdGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gIHRyeSB7XG4gICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdW5kZWZpbmVkO1xuICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gIH0gY2F0Y2ggKGUpIHt9XG5cbiAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICBpZiAodW5tYXNrZWQpIHtcbiAgICBpZiAoaXNPd24pIHtcbiAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHRhZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRSYXdUYWc7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvYmplY3RUb1N0cmluZztcbiIsInZhciBmcmVlR2xvYmFsID0gcmVxdWlyZSgnLi9fZnJlZUdsb2JhbCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbi8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LiAqL1xudmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm9vdDtcbiIsIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmltbWVkRW5kSW5kZXg7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgbm93ID0gcmVxdWlyZSgnLi9ub3cnKSxcbiAgICB0b051bWJlciA9IHJlcXVpcmUoJy4vdG9OdW1iZXInKTtcblxuLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xudmFyIEZVTkNfRVJST1JfVEVYVCA9ICdFeHBlY3RlZCBhIGZ1bmN0aW9uJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4LFxuICAgIG5hdGl2ZU1pbiA9IE1hdGgubWluO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBkZWJvdW5jZWQgZnVuY3Rpb24gdGhhdCBkZWxheXMgaW52b2tpbmcgYGZ1bmNgIHVudGlsIGFmdGVyIGB3YWl0YFxuICogbWlsbGlzZWNvbmRzIGhhdmUgZWxhcHNlZCBzaW5jZSB0aGUgbGFzdCB0aW1lIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gd2FzXG4gKiBpbnZva2VkLiBUaGUgZGVib3VuY2VkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYCBtZXRob2QgdG8gY2FuY2VsXG4gKiBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0byBpbW1lZGlhdGVseSBpbnZva2UgdGhlbS5cbiAqIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgIHNob3VsZCBiZSBpbnZva2VkIG9uIHRoZVxuICogbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgIHRpbWVvdXQuIFRoZSBgZnVuY2AgaXMgaW52b2tlZFxuICogd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbi4gU3Vic2VxdWVudFxuICogY2FsbHMgdG8gdGhlIGRlYm91bmNlZCBmdW5jdGlvbiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgbGFzdCBgZnVuY2BcbiAqIGludm9jYXRpb24uXG4gKlxuICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSBkZWJvdW5jZWQgZnVuY3Rpb25cbiAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAqXG4gKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAqXG4gKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8uZGVib3VuY2VgIGFuZCBgXy50aHJvdHRsZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBkZWJvdW5jZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byBkZWxheS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPWZhbHNlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5tYXhXYWl0XVxuICogIFRoZSBtYXhpbXVtIHRpbWUgYGZ1bmNgIGlzIGFsbG93ZWQgdG8gYmUgZGVsYXllZCBiZWZvcmUgaXQncyBpbnZva2VkLlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBkZWJvdW5jZWQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIEF2b2lkIGNvc3RseSBjYWxjdWxhdGlvbnMgd2hpbGUgdGhlIHdpbmRvdyBzaXplIGlzIGluIGZsdXguXG4gKiBqUXVlcnkod2luZG93KS5vbigncmVzaXplJywgXy5kZWJvdW5jZShjYWxjdWxhdGVMYXlvdXQsIDE1MCkpO1xuICpcbiAqIC8vIEludm9rZSBgc2VuZE1haWxgIHdoZW4gY2xpY2tlZCwgZGVib3VuY2luZyBzdWJzZXF1ZW50IGNhbGxzLlxuICogalF1ZXJ5KGVsZW1lbnQpLm9uKCdjbGljaycsIF8uZGVib3VuY2Uoc2VuZE1haWwsIDMwMCwge1xuICogICAnbGVhZGluZyc6IHRydWUsXG4gKiAgICd0cmFpbGluZyc6IGZhbHNlXG4gKiB9KSk7XG4gKlxuICogLy8gRW5zdXJlIGBiYXRjaExvZ2AgaXMgaW52b2tlZCBvbmNlIGFmdGVyIDEgc2Vjb25kIG9mIGRlYm91bmNlZCBjYWxscy5cbiAqIHZhciBkZWJvdW5jZWQgPSBfLmRlYm91bmNlKGJhdGNoTG9nLCAyNTAsIHsgJ21heFdhaXQnOiAxMDAwIH0pO1xuICogdmFyIHNvdXJjZSA9IG5ldyBFdmVudFNvdXJjZSgnL3N0cmVhbScpO1xuICogalF1ZXJ5KHNvdXJjZSkub24oJ21lc3NhZ2UnLCBkZWJvdW5jZWQpO1xuICpcbiAqIC8vIENhbmNlbCB0aGUgdHJhaWxpbmcgZGVib3VuY2VkIGludm9jYXRpb24uXG4gKiBqUXVlcnkod2luZG93KS5vbigncG9wc3RhdGUnLCBkZWJvdW5jZWQuY2FuY2VsKTtcbiAqL1xuZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCwgb3B0aW9ucykge1xuICB2YXIgbGFzdEFyZ3MsXG4gICAgICBsYXN0VGhpcyxcbiAgICAgIG1heFdhaXQsXG4gICAgICByZXN1bHQsXG4gICAgICB0aW1lcklkLFxuICAgICAgbGFzdENhbGxUaW1lLFxuICAgICAgbGFzdEludm9rZVRpbWUgPSAwLFxuICAgICAgbGVhZGluZyA9IGZhbHNlLFxuICAgICAgbWF4aW5nID0gZmFsc2UsXG4gICAgICB0cmFpbGluZyA9IHRydWU7XG5cbiAgaWYgKHR5cGVvZiBmdW5jICE9ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgd2FpdCA9IHRvTnVtYmVyKHdhaXQpIHx8IDA7XG4gIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgIGxlYWRpbmcgPSAhIW9wdGlvbnMubGVhZGluZztcbiAgICBtYXhpbmcgPSAnbWF4V2FpdCcgaW4gb3B0aW9ucztcbiAgICBtYXhXYWl0ID0gbWF4aW5nID8gbmF0aXZlTWF4KHRvTnVtYmVyKG9wdGlvbnMubWF4V2FpdCkgfHwgMCwgd2FpdCkgOiBtYXhXYWl0O1xuICAgIHRyYWlsaW5nID0gJ3RyYWlsaW5nJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnRyYWlsaW5nIDogdHJhaWxpbmc7XG4gIH1cblxuICBmdW5jdGlvbiBpbnZva2VGdW5jKHRpbWUpIHtcbiAgICB2YXIgYXJncyA9IGxhc3RBcmdzLFxuICAgICAgICB0aGlzQXJnID0gbGFzdFRoaXM7XG5cbiAgICBsYXN0QXJncyA9IGxhc3RUaGlzID0gdW5kZWZpbmVkO1xuICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXNBcmcsIGFyZ3MpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBmdW5jdGlvbiBsZWFkaW5nRWRnZSh0aW1lKSB7XG4gICAgLy8gUmVzZXQgYW55IGBtYXhXYWl0YCB0aW1lci5cbiAgICBsYXN0SW52b2tlVGltZSA9IHRpbWU7XG4gICAgLy8gU3RhcnQgdGhlIHRpbWVyIGZvciB0aGUgdHJhaWxpbmcgZWRnZS5cbiAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHdhaXQpO1xuICAgIC8vIEludm9rZSB0aGUgbGVhZGluZyBlZGdlLlxuICAgIHJldHVybiBsZWFkaW5nID8gaW52b2tlRnVuYyh0aW1lKSA6IHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbWFpbmluZ1dhaXQodGltZSkge1xuICAgIHZhciB0aW1lU2luY2VMYXN0Q2FsbCA9IHRpbWUgLSBsYXN0Q2FsbFRpbWUsXG4gICAgICAgIHRpbWVTaW5jZUxhc3RJbnZva2UgPSB0aW1lIC0gbGFzdEludm9rZVRpbWUsXG4gICAgICAgIHRpbWVXYWl0aW5nID0gd2FpdCAtIHRpbWVTaW5jZUxhc3RDYWxsO1xuXG4gICAgcmV0dXJuIG1heGluZ1xuICAgICAgPyBuYXRpdmVNaW4odGltZVdhaXRpbmcsIG1heFdhaXQgLSB0aW1lU2luY2VMYXN0SW52b2tlKVxuICAgICAgOiB0aW1lV2FpdGluZztcbiAgfVxuXG4gIGZ1bmN0aW9uIHNob3VsZEludm9rZSh0aW1lKSB7XG4gICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZTtcblxuICAgIC8vIEVpdGhlciB0aGlzIGlzIHRoZSBmaXJzdCBjYWxsLCBhY3Rpdml0eSBoYXMgc3RvcHBlZCBhbmQgd2UncmUgYXQgdGhlXG4gICAgLy8gdHJhaWxpbmcgZWRnZSwgdGhlIHN5c3RlbSB0aW1lIGhhcyBnb25lIGJhY2t3YXJkcyBhbmQgd2UncmUgdHJlYXRpbmdcbiAgICAvLyBpdCBhcyB0aGUgdHJhaWxpbmcgZWRnZSwgb3Igd2UndmUgaGl0IHRoZSBgbWF4V2FpdGAgbGltaXQuXG4gICAgcmV0dXJuIChsYXN0Q2FsbFRpbWUgPT09IHVuZGVmaW5lZCB8fCAodGltZVNpbmNlTGFzdENhbGwgPj0gd2FpdCkgfHxcbiAgICAgICh0aW1lU2luY2VMYXN0Q2FsbCA8IDApIHx8IChtYXhpbmcgJiYgdGltZVNpbmNlTGFzdEludm9rZSA+PSBtYXhXYWl0KSk7XG4gIH1cblxuICBmdW5jdGlvbiB0aW1lckV4cGlyZWQoKSB7XG4gICAgdmFyIHRpbWUgPSBub3coKTtcbiAgICBpZiAoc2hvdWxkSW52b2tlKHRpbWUpKSB7XG4gICAgICByZXR1cm4gdHJhaWxpbmdFZGdlKHRpbWUpO1xuICAgIH1cbiAgICAvLyBSZXN0YXJ0IHRoZSB0aW1lci5cbiAgICB0aW1lcklkID0gc2V0VGltZW91dCh0aW1lckV4cGlyZWQsIHJlbWFpbmluZ1dhaXQodGltZSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gdHJhaWxpbmdFZGdlKHRpbWUpIHtcbiAgICB0aW1lcklkID0gdW5kZWZpbmVkO1xuXG4gICAgLy8gT25seSBpbnZva2UgaWYgd2UgaGF2ZSBgbGFzdEFyZ3NgIHdoaWNoIG1lYW5zIGBmdW5jYCBoYXMgYmVlblxuICAgIC8vIGRlYm91bmNlZCBhdCBsZWFzdCBvbmNlLlxuICAgIGlmICh0cmFpbGluZyAmJiBsYXN0QXJncykge1xuICAgICAgcmV0dXJuIGludm9rZUZ1bmModGltZSk7XG4gICAgfVxuICAgIGxhc3RBcmdzID0gbGFzdFRoaXMgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNhbmNlbCgpIHtcbiAgICBpZiAodGltZXJJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgfVxuICAgIGxhc3RJbnZva2VUaW1lID0gMDtcbiAgICBsYXN0QXJncyA9IGxhc3RDYWxsVGltZSA9IGxhc3RUaGlzID0gdGltZXJJZCA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGZsdXNoKCkge1xuICAgIHJldHVybiB0aW1lcklkID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiB0cmFpbGluZ0VkZ2Uobm93KCkpO1xuICB9XG5cbiAgZnVuY3Rpb24gZGVib3VuY2VkKCkge1xuICAgIHZhciB0aW1lID0gbm93KCksXG4gICAgICAgIGlzSW52b2tpbmcgPSBzaG91bGRJbnZva2UodGltZSk7XG5cbiAgICBsYXN0QXJncyA9IGFyZ3VtZW50cztcbiAgICBsYXN0VGhpcyA9IHRoaXM7XG4gICAgbGFzdENhbGxUaW1lID0gdGltZTtcblxuICAgIGlmIChpc0ludm9raW5nKSB7XG4gICAgICBpZiAodGltZXJJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBsZWFkaW5nRWRnZShsYXN0Q2FsbFRpbWUpO1xuICAgICAgfVxuICAgICAgaWYgKG1heGluZykge1xuICAgICAgICAvLyBIYW5kbGUgaW52b2NhdGlvbnMgaW4gYSB0aWdodCBsb29wLlxuICAgICAgICBjbGVhclRpbWVvdXQodGltZXJJZCk7XG4gICAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgICAgIHJldHVybiBpbnZva2VGdW5jKGxhc3RDYWxsVGltZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgZGVib3VuY2VkLmNhbmNlbCA9IGNhbmNlbDtcbiAgZGVib3VuY2VkLmZsdXNoID0gZmx1c2g7XG4gIHJldHVybiBkZWJvdW5jZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZGVib3VuY2U7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0TGlrZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN5bWJvbGAgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN5bWJvbCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3ltYm9sKFN5bWJvbC5pdGVyYXRvcik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1N5bWJvbCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzeW1ib2wnIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gc3ltYm9sVGFnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1N5bWJvbDtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKipcbiAqIEdldHMgdGhlIHRpbWVzdGFtcCBvZiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZVxuICogdGhlIFVuaXggZXBvY2ggKDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IERhdGVcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVzdGFtcC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICogfSwgXy5ub3coKSk7XG4gKiAvLyA9PiBMb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBpbnZvY2F0aW9uLlxuICovXG52YXIgbm93ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiByb290LkRhdGUubm93KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vdztcbiIsInZhciBiYXNlVHJpbSA9IHJlcXVpcmUoJy4vX2Jhc2VUcmltJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE5BTiA9IDAgLyAwO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmFkIHNpZ25lZCBoZXhhZGVjaW1hbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCYWRIZXggPSAvXlstK10weFswLTlhLWZdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJpbmFyeSBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNCaW5hcnkgPSAvXjBiWzAxXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvY3RhbCBzdHJpbmcgdmFsdWVzLiAqL1xudmFyIHJlSXNPY3RhbCA9IC9eMG9bMC03XSskL2k7XG5cbi8qKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB3aXRob3V0IGEgZGVwZW5kZW5jeSBvbiBgcm9vdGAuICovXG52YXIgZnJlZVBhcnNlSW50ID0gcGFyc2VJbnQ7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIG51bWJlci5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcHJvY2Vzcy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIG51bWJlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b051bWJlcigzLjIpO1xuICogLy8gPT4gMy4yXG4gKlxuICogXy50b051bWJlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDVlLTMyNFxuICpcbiAqIF8udG9OdW1iZXIoSW5maW5pdHkpO1xuICogLy8gPT4gSW5maW5pdHlcbiAqXG4gKiBfLnRvTnVtYmVyKCczLjInKTtcbiAqIC8vID0+IDMuMlxuICovXG5mdW5jdGlvbiB0b051bWJlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlID09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gTkFOO1xuICB9XG4gIGlmIChpc09iamVjdCh2YWx1ZSkpIHtcbiAgICB2YXIgb3RoZXIgPSB0eXBlb2YgdmFsdWUudmFsdWVPZiA9PSAnZnVuY3Rpb24nID8gdmFsdWUudmFsdWVPZigpIDogdmFsdWU7XG4gICAgdmFsdWUgPSBpc09iamVjdChvdGhlcikgPyAob3RoZXIgKyAnJykgOiBvdGhlcjtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSAwID8gdmFsdWUgOiArdmFsdWU7XG4gIH1cbiAgdmFsdWUgPSBiYXNlVHJpbSh2YWx1ZSk7XG4gIHZhciBpc0JpbmFyeSA9IHJlSXNCaW5hcnkudGVzdCh2YWx1ZSk7XG4gIHJldHVybiAoaXNCaW5hcnkgfHwgcmVJc09jdGFsLnRlc3QodmFsdWUpKVxuICAgID8gZnJlZVBhcnNlSW50KHZhbHVlLnNsaWNlKDIpLCBpc0JpbmFyeSA/IDIgOiA4KVxuICAgIDogKHJlSXNCYWRIZXgudGVzdCh2YWx1ZSkgPyBOQU4gOiArdmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvTnVtYmVyO1xuIiwiKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG4gICAgZGVmaW5lKFwid2ViZXh0ZW5zaW9uLXBvbHlmaWxsXCIsIFtcIm1vZHVsZVwiXSwgZmFjdG9yeSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBmYWN0b3J5KG1vZHVsZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG1vZCA9IHtcbiAgICAgIGV4cG9ydHM6IHt9XG4gICAgfTtcbiAgICBmYWN0b3J5KG1vZCk7XG4gICAgZ2xvYmFsLmJyb3dzZXIgPSBtb2QuZXhwb3J0cztcbiAgfVxufSkodHlwZW9mIGdsb2JhbFRoaXMgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWxUaGlzIDogdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgPyBzZWxmIDogdGhpcywgZnVuY3Rpb24gKG1vZHVsZSkge1xuICAvKiB3ZWJleHRlbnNpb24tcG9seWZpbGwgLSB2MC4xMi4wIC0gVHVlIE1heSAxNCAyMDI0IDE4OjAxOjI5ICovXG4gIC8qIC0qLSBNb2RlOiBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGpzLWluZGVudC1sZXZlbDogMiAtKi0gKi9cbiAgLyogdmltOiBzZXQgc3RzPTIgc3c9MiBldCB0dz04MDogKi9cbiAgLyogVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpY1xuICAgKiBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzXG4gICAqIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uICovXG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIGlmICghKGdsb2JhbFRoaXMuY2hyb21lICYmIGdsb2JhbFRoaXMuY2hyb21lLnJ1bnRpbWUgJiYgZ2xvYmFsVGhpcy5jaHJvbWUucnVudGltZS5pZCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHNjcmlwdCBzaG91bGQgb25seSBiZSBsb2FkZWQgaW4gYSBicm93c2VyIGV4dGVuc2lvbi5cIik7XG4gIH1cbiAgaWYgKCEoZ2xvYmFsVGhpcy5icm93c2VyICYmIGdsb2JhbFRoaXMuYnJvd3Nlci5ydW50aW1lICYmIGdsb2JhbFRoaXMuYnJvd3Nlci5ydW50aW1lLmlkKSkge1xuICAgIGNvbnN0IENIUk9NRV9TRU5EX01FU1NBR0VfQ0FMTEJBQ0tfTk9fUkVTUE9OU0VfTUVTU0FHRSA9IFwiVGhlIG1lc3NhZ2UgcG9ydCBjbG9zZWQgYmVmb3JlIGEgcmVzcG9uc2Ugd2FzIHJlY2VpdmVkLlwiO1xuXG4gICAgLy8gV3JhcHBpbmcgdGhlIGJ1bGsgb2YgdGhpcyBwb2x5ZmlsbCBpbiBhIG9uZS10aW1lLXVzZSBmdW5jdGlvbiBpcyBhIG1pbm9yXG4gICAgLy8gb3B0aW1pemF0aW9uIGZvciBGaXJlZm94LiBTaW5jZSBTcGlkZXJtb25rZXkgZG9lcyBub3QgZnVsbHkgcGFyc2UgdGhlXG4gICAgLy8gY29udGVudHMgb2YgYSBmdW5jdGlvbiB1bnRpbCB0aGUgZmlyc3QgdGltZSBpdCdzIGNhbGxlZCwgYW5kIHNpbmNlIGl0IHdpbGxcbiAgICAvLyBuZXZlciBhY3R1YWxseSBuZWVkIHRvIGJlIGNhbGxlZCwgdGhpcyBhbGxvd3MgdGhlIHBvbHlmaWxsIHRvIGJlIGluY2x1ZGVkXG4gICAgLy8gaW4gRmlyZWZveCBuZWFybHkgZm9yIGZyZWUuXG4gICAgY29uc3Qgd3JhcEFQSXMgPSBleHRlbnNpb25BUElzID0+IHtcbiAgICAgIC8vIE5PVEU6IGFwaU1ldGFkYXRhIGlzIGFzc29jaWF0ZWQgdG8gdGhlIGNvbnRlbnQgb2YgdGhlIGFwaS1tZXRhZGF0YS5qc29uIGZpbGVcbiAgICAgIC8vIGF0IGJ1aWxkIHRpbWUgYnkgcmVwbGFjaW5nIHRoZSBmb2xsb3dpbmcgXCJpbmNsdWRlXCIgd2l0aCB0aGUgY29udGVudCBvZiB0aGVcbiAgICAgIC8vIEpTT04gZmlsZS5cbiAgICAgIGNvbnN0IGFwaU1ldGFkYXRhID0ge1xuICAgICAgICBcImFsYXJtc1wiOiB7XG4gICAgICAgICAgXCJjbGVhclwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImNsZWFyQWxsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiYm9va21hcmtzXCI6IHtcbiAgICAgICAgICBcImNyZWF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldENoaWxkcmVuXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0UmVjZW50XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0U3ViVHJlZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFRyZWVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJtb3ZlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlVHJlZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNlYXJjaFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImJyb3dzZXJBY3Rpb25cIjoge1xuICAgICAgICAgIFwiZGlzYWJsZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImVuYWJsZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEJhZGdlQmFja2dyb3VuZENvbG9yXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0QmFkZ2VUZXh0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0UG9wdXBcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRUaXRsZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm9wZW5Qb3B1cFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldEJhZGdlQmFja2dyb3VuZENvbG9yXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0QmFkZ2VUZXh0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0SWNvblwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFBvcHVwXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0VGl0bGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJicm93c2luZ0RhdGFcIjoge1xuICAgICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDJcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlQ2FjaGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVDb29raWVzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlRG93bmxvYWRzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlRm9ybURhdGFcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVIaXN0b3J5XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlTG9jYWxTdG9yYWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlUGFzc3dvcmRzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlUGx1Z2luRGF0YVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldHRpbmdzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiY29tbWFuZHNcIjoge1xuICAgICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiY29udGV4dE1lbnVzXCI6IHtcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZUFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImNvb2tpZXNcIjoge1xuICAgICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0QWxsQ29va2llU3RvcmVzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiZGV2dG9vbHNcIjoge1xuICAgICAgICAgIFwiaW5zcGVjdGVkV2luZG93XCI6IHtcbiAgICAgICAgICAgIFwiZXZhbFwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMixcbiAgICAgICAgICAgICAgXCJzaW5nbGVDYWxsYmFja0FyZ1wiOiBmYWxzZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJwYW5lbHNcIjoge1xuICAgICAgICAgICAgXCJjcmVhdGVcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMyxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDMsXG4gICAgICAgICAgICAgIFwic2luZ2xlQ2FsbGJhY2tBcmdcIjogdHJ1ZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZWxlbWVudHNcIjoge1xuICAgICAgICAgICAgICBcImNyZWF0ZVNpZGViYXJQYW5lXCI6IHtcbiAgICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImRvd25sb2Fkc1wiOiB7XG4gICAgICAgICAgXCJjYW5jZWxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkb3dubG9hZFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImVyYXNlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0RmlsZUljb25cIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJvcGVuXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDEsXG4gICAgICAgICAgICBcImZhbGxiYWNrVG9Ob0NhbGxiYWNrXCI6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicGF1c2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJyZW1vdmVGaWxlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVzdW1lXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2VhcmNoXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2hvd1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImV4dGVuc2lvblwiOiB7XG4gICAgICAgICAgXCJpc0FsbG93ZWRGaWxlU2NoZW1lQWNjZXNzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiaXNBbGxvd2VkSW5jb2duaXRvQWNjZXNzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiaGlzdG9yeVwiOiB7XG4gICAgICAgICAgXCJhZGRVcmxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkZWxldGVBbGxcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJkZWxldGVSYW5nZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImRlbGV0ZVVybFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFZpc2l0c1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNlYXJjaFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImkxOG5cIjoge1xuICAgICAgICAgIFwiZGV0ZWN0TGFuZ3VhZ2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRBY2NlcHRMYW5ndWFnZXNcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJpZGVudGl0eVwiOiB7XG4gICAgICAgICAgXCJsYXVuY2hXZWJBdXRoRmxvd1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcImlkbGVcIjoge1xuICAgICAgICAgIFwicXVlcnlTdGF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIm1hbmFnZW1lbnRcIjoge1xuICAgICAgICAgIFwiZ2V0XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0QWxsXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0U2VsZlwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldEVuYWJsZWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJ1bmluc3RhbGxTZWxmXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwibm90aWZpY2F0aW9uc1wiOiB7XG4gICAgICAgICAgXCJjbGVhclwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImNyZWF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFBlcm1pc3Npb25MZXZlbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInBhZ2VBY3Rpb25cIjoge1xuICAgICAgICAgIFwiZ2V0UG9wdXBcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRUaXRsZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImhpZGVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRJY29uXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0UG9wdXBcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZXRUaXRsZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJmYWxsYmFja1RvTm9DYWxsYmFja1wiOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNob3dcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwiZmFsbGJhY2tUb05vQ2FsbGJhY2tcIjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJwZXJtaXNzaW9uc1wiOiB7XG4gICAgICAgICAgXCJjb250YWluc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlcXVlc3RcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJydW50aW1lXCI6IHtcbiAgICAgICAgICBcImdldEJhY2tncm91bmRQYWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0UGxhdGZvcm1JbmZvXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwib3Blbk9wdGlvbnNQYWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwicmVxdWVzdFVwZGF0ZUNoZWNrXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2VuZE1lc3NhZ2VcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogM1xuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzZW5kTmF0aXZlTWVzc2FnZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFVuaW5zdGFsbFVSTFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInNlc3Npb25zXCI6IHtcbiAgICAgICAgICBcImdldERldmljZXNcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRSZWNlbnRseUNsb3NlZFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlc3RvcmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJzdG9yYWdlXCI6IHtcbiAgICAgICAgICBcImxvY2FsXCI6IHtcbiAgICAgICAgICAgIFwiY2xlYXJcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZ2V0Qnl0ZXNJblVzZVwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJzZXRcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIFwibWFuYWdlZFwiOiB7XG4gICAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZ2V0Qnl0ZXNJblVzZVwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJzeW5jXCI6IHtcbiAgICAgICAgICAgIFwiY2xlYXJcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZ2V0Qnl0ZXNJblVzZVwiOiB7XG4gICAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwicmVtb3ZlXCI6IHtcbiAgICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJzZXRcIjoge1xuICAgICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwidGFic1wiOiB7XG4gICAgICAgICAgXCJjYXB0dXJlVmlzaWJsZVRhYlwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImNyZWF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImRldGVjdExhbmd1YWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZGlzY2FyZFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImR1cGxpY2F0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImV4ZWN1dGVTY3JpcHRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRDdXJyZW50XCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAwLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDBcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0Wm9vbVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFpvb21TZXR0aW5nc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdvQmFja1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdvRm9yd2FyZFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImhpZ2hsaWdodFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImluc2VydENTU1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm1vdmVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDIsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMlxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJxdWVyeVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbG9hZFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZUNTU1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNlbmRNZXNzYWdlXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAyLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDNcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwic2V0Wm9vbVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInNldFpvb21TZXR0aW5nc1wiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcInRvcFNpdGVzXCI6IHtcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBcIndlYk5hdmlnYXRpb25cIjoge1xuICAgICAgICAgIFwiZ2V0QWxsRnJhbWVzXCI6IHtcbiAgICAgICAgICAgIFwibWluQXJnc1wiOiAxLFxuICAgICAgICAgICAgXCJtYXhBcmdzXCI6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIFwiZ2V0RnJhbWVcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDEsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ3ZWJSZXF1ZXN0XCI6IHtcbiAgICAgICAgICBcImhhbmRsZXJCZWhhdmlvckNoYW5nZWRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgXCJ3aW5kb3dzXCI6IHtcbiAgICAgICAgICBcImNyZWF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEFsbFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcImdldEN1cnJlbnRcIjoge1xuICAgICAgICAgICAgXCJtaW5BcmdzXCI6IDAsXG4gICAgICAgICAgICBcIm1heEFyZ3NcIjogMVxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJnZXRMYXN0Rm9jdXNlZFwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMCxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMSxcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAxXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICBcIm1pbkFyZ3NcIjogMixcbiAgICAgICAgICAgIFwibWF4QXJnc1wiOiAyXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgaWYgKE9iamVjdC5rZXlzKGFwaU1ldGFkYXRhKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYXBpLW1ldGFkYXRhLmpzb24gaGFzIG5vdCBiZWVuIGluY2x1ZGVkIGluIGJyb3dzZXItcG9seWZpbGxcIik7XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogQSBXZWFrTWFwIHN1YmNsYXNzIHdoaWNoIGNyZWF0ZXMgYW5kIHN0b3JlcyBhIHZhbHVlIGZvciBhbnkga2V5IHdoaWNoIGRvZXNcbiAgICAgICAqIG5vdCBleGlzdCB3aGVuIGFjY2Vzc2VkLCBidXQgYmVoYXZlcyBleGFjdGx5IGFzIGFuIG9yZGluYXJ5IFdlYWtNYXBcbiAgICAgICAqIG90aGVyd2lzZS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjcmVhdGVJdGVtXG4gICAgICAgKiAgICAgICAgQSBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNhbGxlZCBpbiBvcmRlciB0byBjcmVhdGUgdGhlIHZhbHVlIGZvciBhbnlcbiAgICAgICAqICAgICAgICBrZXkgd2hpY2ggZG9lcyBub3QgZXhpc3QsIHRoZSBmaXJzdCB0aW1lIGl0IGlzIGFjY2Vzc2VkLiBUaGVcbiAgICAgICAqICAgICAgICBmdW5jdGlvbiByZWNlaXZlcywgYXMgaXRzIG9ubHkgYXJndW1lbnQsIHRoZSBrZXkgYmVpbmcgY3JlYXRlZC5cbiAgICAgICAqL1xuICAgICAgY2xhc3MgRGVmYXVsdFdlYWtNYXAgZXh0ZW5kcyBXZWFrTWFwIHtcbiAgICAgICAgY29uc3RydWN0b3IoY3JlYXRlSXRlbSwgaXRlbXMgPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzdXBlcihpdGVtcyk7XG4gICAgICAgICAgdGhpcy5jcmVhdGVJdGVtID0gY3JlYXRlSXRlbTtcbiAgICAgICAgfVxuICAgICAgICBnZXQoa2V5KSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldChrZXksIHRoaXMuY3JlYXRlSXRlbShrZXkpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHN1cGVyLmdldChrZXkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qKlxuICAgICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBvYmplY3QgaXMgYW4gb2JqZWN0IHdpdGggYSBgdGhlbmAgbWV0aG9kLCBhbmQgY2FuXG4gICAgICAgKiB0aGVyZWZvcmUgYmUgYXNzdW1lZCB0byBiZWhhdmUgYXMgYSBQcm9taXNlLlxuICAgICAgICpcbiAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHRlc3QuXG4gICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgdmFsdWUgaXMgdGhlbmFibGUuXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IGlzVGhlbmFibGUgPSB2YWx1ZSA9PiB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHZhbHVlLnRoZW4gPT09IFwiZnVuY3Rpb25cIjtcbiAgICAgIH07XG5cbiAgICAgIC8qKlxuICAgICAgICogQ3JlYXRlcyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHdoaWNoLCB3aGVuIGNhbGxlZCwgd2lsbCByZXNvbHZlIG9yIHJlamVjdFxuICAgICAgICogdGhlIGdpdmVuIHByb21pc2UgYmFzZWQgb24gaG93IGl0IGlzIGNhbGxlZDpcbiAgICAgICAqXG4gICAgICAgKiAtIElmLCB3aGVuIGNhbGxlZCwgYGNocm9tZS5ydW50aW1lLmxhc3RFcnJvcmAgY29udGFpbnMgYSBub24tbnVsbCBvYmplY3QsXG4gICAgICAgKiAgIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggdGhhdCB2YWx1ZS5cbiAgICAgICAqIC0gSWYgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIGV4YWN0bHkgb25lIGFyZ3VtZW50LCB0aGUgcHJvbWlzZSBpc1xuICAgICAgICogICByZXNvbHZlZCB0byB0aGF0IHZhbHVlLlxuICAgICAgICogLSBPdGhlcndpc2UsIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHRvIGFuIGFycmF5IGNvbnRhaW5pbmcgYWxsIG9mIHRoZVxuICAgICAgICogICBmdW5jdGlvbidzIGFyZ3VtZW50cy5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gcHJvbWlzZVxuICAgICAgICogICAgICAgIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSByZXNvbHV0aW9uIGFuZCByZWplY3Rpb24gZnVuY3Rpb25zIG9mIGFcbiAgICAgICAqICAgICAgICBwcm9taXNlLlxuICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvbWlzZS5yZXNvbHZlXG4gICAgICAgKiAgICAgICAgVGhlIHByb21pc2UncyByZXNvbHV0aW9uIGZ1bmN0aW9uLlxuICAgICAgICogQHBhcmFtIHtmdW5jdGlvbn0gcHJvbWlzZS5yZWplY3RcbiAgICAgICAqICAgICAgICBUaGUgcHJvbWlzZSdzIHJlamVjdGlvbiBmdW5jdGlvbi5cbiAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBtZXRhZGF0YVxuICAgICAgICogICAgICAgIE1ldGFkYXRhIGFib3V0IHRoZSB3cmFwcGVkIG1ldGhvZCB3aGljaCBoYXMgY3JlYXRlZCB0aGUgY2FsbGJhY2suXG4gICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG1ldGFkYXRhLnNpbmdsZUNhbGxiYWNrQXJnXG4gICAgICAgKiAgICAgICAgV2hldGhlciBvciBub3QgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgd2l0aCBvbmx5IHRoZSBmaXJzdFxuICAgICAgICogICAgICAgIGFyZ3VtZW50IG9mIHRoZSBjYWxsYmFjaywgYWx0ZXJuYXRpdmVseSBhbiBhcnJheSBvZiBhbGwgdGhlXG4gICAgICAgKiAgICAgICAgY2FsbGJhY2sgYXJndW1lbnRzIGlzIHJlc29sdmVkLiBCeSBkZWZhdWx0LCBpZiB0aGUgY2FsbGJhY2tcbiAgICAgICAqICAgICAgICBmdW5jdGlvbiBpcyBpbnZva2VkIHdpdGggb25seSBhIHNpbmdsZSBhcmd1bWVudCwgdGhhdCB3aWxsIGJlXG4gICAgICAgKiAgICAgICAgcmVzb2x2ZWQgdG8gdGhlIHByb21pc2UsIHdoaWxlIGFsbCBhcmd1bWVudHMgd2lsbCBiZSByZXNvbHZlZCBhc1xuICAgICAgICogICAgICAgIGFuIGFycmF5IGlmIG11bHRpcGxlIGFyZSBnaXZlbi5cbiAgICAgICAqXG4gICAgICAgKiBAcmV0dXJucyB7ZnVuY3Rpb259XG4gICAgICAgKiAgICAgICAgVGhlIGdlbmVyYXRlZCBjYWxsYmFjayBmdW5jdGlvbi5cbiAgICAgICAqL1xuICAgICAgY29uc3QgbWFrZUNhbGxiYWNrID0gKHByb21pc2UsIG1ldGFkYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiAoLi4uY2FsbGJhY2tBcmdzKSA9PiB7XG4gICAgICAgICAgaWYgKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IpIHtcbiAgICAgICAgICAgIHByb21pc2UucmVqZWN0KG5ldyBFcnJvcihleHRlbnNpb25BUElzLnJ1bnRpbWUubGFzdEVycm9yLm1lc3NhZ2UpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLnNpbmdsZUNhbGxiYWNrQXJnIHx8IGNhbGxiYWNrQXJncy5sZW5ndGggPD0gMSAmJiBtZXRhZGF0YS5zaW5nbGVDYWxsYmFja0FyZyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShjYWxsYmFja0FyZ3NbMF0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm9taXNlLnJlc29sdmUoY2FsbGJhY2tBcmdzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgICAgY29uc3QgcGx1cmFsaXplQXJndW1lbnRzID0gbnVtQXJncyA9PiBudW1BcmdzID09IDEgPyBcImFyZ3VtZW50XCIgOiBcImFyZ3VtZW50c1wiO1xuXG4gICAgICAvKipcbiAgICAgICAqIENyZWF0ZXMgYSB3cmFwcGVyIGZ1bmN0aW9uIGZvciBhIG1ldGhvZCB3aXRoIHRoZSBnaXZlbiBuYW1lIGFuZCBtZXRhZGF0YS5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgICAgICogICAgICAgIFRoZSBuYW1lIG9mIHRoZSBtZXRob2Qgd2hpY2ggaXMgYmVpbmcgd3JhcHBlZC5cbiAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSBtZXRhZGF0YVxuICAgICAgICogICAgICAgIE1ldGFkYXRhIGFib3V0IHRoZSBtZXRob2QgYmVpbmcgd3JhcHBlZC5cbiAgICAgICAqIEBwYXJhbSB7aW50ZWdlcn0gbWV0YWRhdGEubWluQXJnc1xuICAgICAgICogICAgICAgIFRoZSBtaW5pbXVtIG51bWJlciBvZiBhcmd1bWVudHMgd2hpY2ggbXVzdCBiZSBwYXNzZWQgdG8gdGhlXG4gICAgICAgKiAgICAgICAgZnVuY3Rpb24uIElmIGNhbGxlZCB3aXRoIGZld2VyIHRoYW4gdGhpcyBudW1iZXIgb2YgYXJndW1lbnRzLCB0aGVcbiAgICAgICAqICAgICAgICB3cmFwcGVyIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLlxuICAgICAgICogQHBhcmFtIHtpbnRlZ2VyfSBtZXRhZGF0YS5tYXhBcmdzXG4gICAgICAgKiAgICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGFyZ3VtZW50cyB3aGljaCBtYXkgYmUgcGFzc2VkIHRvIHRoZVxuICAgICAgICogICAgICAgIGZ1bmN0aW9uLiBJZiBjYWxsZWQgd2l0aCBtb3JlIHRoYW4gdGhpcyBudW1iZXIgb2YgYXJndW1lbnRzLCB0aGVcbiAgICAgICAqICAgICAgICB3cmFwcGVyIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uLlxuICAgICAgICogQHBhcmFtIHtib29sZWFufSBtZXRhZGF0YS5zaW5nbGVDYWxsYmFja0FyZ1xuICAgICAgICogICAgICAgIFdoZXRoZXIgb3Igbm90IHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIHdpdGggb25seSB0aGUgZmlyc3RcbiAgICAgICAqICAgICAgICBhcmd1bWVudCBvZiB0aGUgY2FsbGJhY2ssIGFsdGVybmF0aXZlbHkgYW4gYXJyYXkgb2YgYWxsIHRoZVxuICAgICAgICogICAgICAgIGNhbGxiYWNrIGFyZ3VtZW50cyBpcyByZXNvbHZlZC4gQnkgZGVmYXVsdCwgaWYgdGhlIGNhbGxiYWNrXG4gICAgICAgKiAgICAgICAgZnVuY3Rpb24gaXMgaW52b2tlZCB3aXRoIG9ubHkgYSBzaW5nbGUgYXJndW1lbnQsIHRoYXQgd2lsbCBiZVxuICAgICAgICogICAgICAgIHJlc29sdmVkIHRvIHRoZSBwcm9taXNlLCB3aGlsZSBhbGwgYXJndW1lbnRzIHdpbGwgYmUgcmVzb2x2ZWQgYXNcbiAgICAgICAqICAgICAgICBhbiBhcnJheSBpZiBtdWx0aXBsZSBhcmUgZ2l2ZW4uXG4gICAgICAgKlxuICAgICAgICogQHJldHVybnMge2Z1bmN0aW9uKG9iamVjdCwgLi4uKil9XG4gICAgICAgKiAgICAgICBUaGUgZ2VuZXJhdGVkIHdyYXBwZXIgZnVuY3Rpb24uXG4gICAgICAgKi9cbiAgICAgIGNvbnN0IHdyYXBBc3luY0Z1bmN0aW9uID0gKG5hbWUsIG1ldGFkYXRhKSA9PiB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBhc3luY0Z1bmN0aW9uV3JhcHBlcih0YXJnZXQsIC4uLmFyZ3MpIHtcbiAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPCBtZXRhZGF0YS5taW5BcmdzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGF0IGxlYXN0ICR7bWV0YWRhdGEubWluQXJnc30gJHtwbHVyYWxpemVBcmd1bWVudHMobWV0YWRhdGEubWluQXJncyl9IGZvciAke25hbWV9KCksIGdvdCAke2FyZ3MubGVuZ3RofWApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPiBtZXRhZGF0YS5tYXhBcmdzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGF0IG1vc3QgJHttZXRhZGF0YS5tYXhBcmdzfSAke3BsdXJhbGl6ZUFyZ3VtZW50cyhtZXRhZGF0YS5tYXhBcmdzKX0gZm9yICR7bmFtZX0oKSwgZ290ICR7YXJncy5sZW5ndGh9YCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBpZiAobWV0YWRhdGEuZmFsbGJhY2tUb05vQ2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgLy8gVGhpcyBBUEkgbWV0aG9kIGhhcyBjdXJyZW50bHkgbm8gY2FsbGJhY2sgb24gQ2hyb21lLCBidXQgaXQgcmV0dXJuIGEgcHJvbWlzZSBvbiBGaXJlZm94LFxuICAgICAgICAgICAgICAvLyBhbmQgc28gdGhlIHBvbHlmaWxsIHdpbGwgdHJ5IHRvIGNhbGwgaXQgd2l0aCBhIGNhbGxiYWNrIGZpcnN0LCBhbmQgaXQgd2lsbCBmYWxsYmFja1xuICAgICAgICAgICAgICAvLyB0byBub3QgcGFzc2luZyB0aGUgY2FsbGJhY2sgaWYgdGhlIGZpcnN0IGNhbGwgZmFpbHMuXG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0W25hbWVdKC4uLmFyZ3MsIG1ha2VDYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgICByZXNvbHZlLFxuICAgICAgICAgICAgICAgICAgcmVqZWN0XG4gICAgICAgICAgICAgICAgfSwgbWV0YWRhdGEpKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoY2JFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgJHtuYW1lfSBBUEkgbWV0aG9kIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IHRoZSBjYWxsYmFjayBwYXJhbWV0ZXIsIGAgKyBcImZhbGxpbmcgYmFjayB0byBjYWxsIGl0IHdpdGhvdXQgYSBjYWxsYmFjazogXCIsIGNiRXJyb3IpO1xuICAgICAgICAgICAgICAgIHRhcmdldFtuYW1lXSguLi5hcmdzKTtcblxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgQVBJIG1ldGhvZCBtZXRhZGF0YSwgc28gdGhhdCB0aGUgbmV4dCBBUEkgY2FsbHMgd2lsbCBub3QgdHJ5IHRvXG4gICAgICAgICAgICAgICAgLy8gdXNlIHRoZSB1bnN1cHBvcnRlZCBjYWxsYmFjayBhbnltb3JlLlxuICAgICAgICAgICAgICAgIG1ldGFkYXRhLmZhbGxiYWNrVG9Ob0NhbGxiYWNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGEubm9DYWxsYmFjayA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1ldGFkYXRhLm5vQ2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgdGFyZ2V0W25hbWVdKC4uLmFyZ3MpO1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0YXJnZXRbbmFtZV0oLi4uYXJncywgbWFrZUNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgICByZXNvbHZlLFxuICAgICAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgICAgICB9LCBtZXRhZGF0YSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9O1xuICAgICAgfTtcblxuICAgICAgLyoqXG4gICAgICAgKiBXcmFwcyBhbiBleGlzdGluZyBtZXRob2Qgb2YgdGhlIHRhcmdldCBvYmplY3QsIHNvIHRoYXQgY2FsbHMgdG8gaXQgYXJlXG4gICAgICAgKiBpbnRlcmNlcHRlZCBieSB0aGUgZ2l2ZW4gd3JhcHBlciBmdW5jdGlvbi4gVGhlIHdyYXBwZXIgZnVuY3Rpb24gcmVjZWl2ZXMsXG4gICAgICAgKiBhcyBpdHMgZmlyc3QgYXJndW1lbnQsIHRoZSBvcmlnaW5hbCBgdGFyZ2V0YCBvYmplY3QsIGZvbGxvd2VkIGJ5IGVhY2ggb2ZcbiAgICAgICAqIHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBvcmlnaW5hbCBtZXRob2QuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IHRhcmdldFxuICAgICAgICogICAgICAgIFRoZSBvcmlnaW5hbCB0YXJnZXQgb2JqZWN0IHRoYXQgdGhlIHdyYXBwZWQgbWV0aG9kIGJlbG9uZ3MgdG8uXG4gICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBtZXRob2RcbiAgICAgICAqICAgICAgICBUaGUgbWV0aG9kIGJlaW5nIHdyYXBwZWQuIFRoaXMgaXMgdXNlZCBhcyB0aGUgdGFyZ2V0IG9mIHRoZSBQcm94eVxuICAgICAgICogICAgICAgIG9iamVjdCB3aGljaCBpcyBjcmVhdGVkIHRvIHdyYXAgdGhlIG1ldGhvZC5cbiAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb259IHdyYXBwZXJcbiAgICAgICAqICAgICAgICBUaGUgd3JhcHBlciBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgaW4gcGxhY2Ugb2YgYSBkaXJlY3QgaW52b2NhdGlvblxuICAgICAgICogICAgICAgIG9mIHRoZSB3cmFwcGVkIG1ldGhvZC5cbiAgICAgICAqXG4gICAgICAgKiBAcmV0dXJucyB7UHJveHk8ZnVuY3Rpb24+fVxuICAgICAgICogICAgICAgIEEgUHJveHkgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gbWV0aG9kLCB3aGljaCBpbnZva2VzIHRoZSBnaXZlbiB3cmFwcGVyXG4gICAgICAgKiAgICAgICAgbWV0aG9kIGluIGl0cyBwbGFjZS5cbiAgICAgICAqL1xuICAgICAgY29uc3Qgd3JhcE1ldGhvZCA9ICh0YXJnZXQsIG1ldGhvZCwgd3JhcHBlcikgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb3h5KG1ldGhvZCwge1xuICAgICAgICAgIGFwcGx5KHRhcmdldE1ldGhvZCwgdGhpc09iaiwgYXJncykge1xuICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXIuY2FsbCh0aGlzT2JqLCB0YXJnZXQsIC4uLmFyZ3MpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgbGV0IGhhc093blByb3BlcnR5ID0gRnVuY3Rpb24uY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpO1xuXG4gICAgICAvKipcbiAgICAgICAqIFdyYXBzIGFuIG9iamVjdCBpbiBhIFByb3h5IHdoaWNoIGludGVyY2VwdHMgYW5kIHdyYXBzIGNlcnRhaW4gbWV0aG9kc1xuICAgICAgICogYmFzZWQgb24gdGhlIGdpdmVuIGB3cmFwcGVyc2AgYW5kIGBtZXRhZGF0YWAgb2JqZWN0cy5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gdGFyZ2V0XG4gICAgICAgKiAgICAgICAgVGhlIHRhcmdldCBvYmplY3QgdG8gd3JhcC5cbiAgICAgICAqXG4gICAgICAgKiBAcGFyYW0ge29iamVjdH0gW3dyYXBwZXJzID0ge31dXG4gICAgICAgKiAgICAgICAgQW4gb2JqZWN0IHRyZWUgY29udGFpbmluZyB3cmFwcGVyIGZ1bmN0aW9ucyBmb3Igc3BlY2lhbCBjYXNlcy4gQW55XG4gICAgICAgKiAgICAgICAgZnVuY3Rpb24gcHJlc2VudCBpbiB0aGlzIG9iamVjdCB0cmVlIGlzIGNhbGxlZCBpbiBwbGFjZSBvZiB0aGVcbiAgICAgICAqICAgICAgICBtZXRob2QgaW4gdGhlIHNhbWUgbG9jYXRpb24gaW4gdGhlIGB0YXJnZXRgIG9iamVjdCB0cmVlLiBUaGVzZVxuICAgICAgICogICAgICAgIHdyYXBwZXIgbWV0aG9kcyBhcmUgaW52b2tlZCBhcyBkZXNjcmliZWQgaW4ge0BzZWUgd3JhcE1ldGhvZH0uXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtvYmplY3R9IFttZXRhZGF0YSA9IHt9XVxuICAgICAgICogICAgICAgIEFuIG9iamVjdCB0cmVlIGNvbnRhaW5pbmcgbWV0YWRhdGEgdXNlZCB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlXG4gICAgICAgKiAgICAgICAgUHJvbWlzZS1iYXNlZCB3cmFwcGVyIGZ1bmN0aW9ucyBmb3IgYXN5bmNocm9ub3VzLiBBbnkgZnVuY3Rpb24gaW5cbiAgICAgICAqICAgICAgICB0aGUgYHRhcmdldGAgb2JqZWN0IHRyZWUgd2hpY2ggaGFzIGEgY29ycmVzcG9uZGluZyBtZXRhZGF0YSBvYmplY3RcbiAgICAgICAqICAgICAgICBpbiB0aGUgc2FtZSBsb2NhdGlvbiBpbiB0aGUgYG1ldGFkYXRhYCB0cmVlIGlzIHJlcGxhY2VkIHdpdGggYW5cbiAgICAgICAqICAgICAgICBhdXRvbWF0aWNhbGx5LWdlbmVyYXRlZCB3cmFwcGVyIGZ1bmN0aW9uLCBhcyBkZXNjcmliZWQgaW5cbiAgICAgICAqICAgICAgICB7QHNlZSB3cmFwQXN5bmNGdW5jdGlvbn1cbiAgICAgICAqXG4gICAgICAgKiBAcmV0dXJucyB7UHJveHk8b2JqZWN0Pn1cbiAgICAgICAqL1xuICAgICAgY29uc3Qgd3JhcE9iamVjdCA9ICh0YXJnZXQsIHdyYXBwZXJzID0ge30sIG1ldGFkYXRhID0ge30pID0+IHtcbiAgICAgICAgbGV0IGNhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgbGV0IGhhbmRsZXJzID0ge1xuICAgICAgICAgIGhhcyhwcm94eVRhcmdldCwgcHJvcCkge1xuICAgICAgICAgICAgcmV0dXJuIHByb3AgaW4gdGFyZ2V0IHx8IHByb3AgaW4gY2FjaGU7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZXQocHJveHlUYXJnZXQsIHByb3AsIHJlY2VpdmVyKSB7XG4gICAgICAgICAgICBpZiAocHJvcCBpbiBjYWNoZSkge1xuICAgICAgICAgICAgICByZXR1cm4gY2FjaGVbcHJvcF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShwcm9wIGluIHRhcmdldCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHRhcmdldFtwcm9wXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgbWV0aG9kIG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4gQ2hlY2sgaWYgd2UgbmVlZCB0byBkb1xuICAgICAgICAgICAgICAvLyBhbnkgd3JhcHBpbmcuXG5cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3cmFwcGVyc1twcm9wXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIHNwZWNpYWwtY2FzZSB3cmFwcGVyIGZvciB0aGlzIG1ldGhvZC5cbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHdyYXBNZXRob2QodGFyZ2V0LCB0YXJnZXRbcHJvcF0sIHdyYXBwZXJzW3Byb3BdKTtcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNPd25Qcm9wZXJ0eShtZXRhZGF0YSwgcHJvcCkpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGFuIGFzeW5jIG1ldGhvZCB0aGF0IHdlIGhhdmUgbWV0YWRhdGEgZm9yLiBDcmVhdGUgYVxuICAgICAgICAgICAgICAgIC8vIFByb21pc2Ugd3JhcHBlciBmb3IgaXQuXG4gICAgICAgICAgICAgICAgbGV0IHdyYXBwZXIgPSB3cmFwQXN5bmNGdW5jdGlvbihwcm9wLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB3cmFwTWV0aG9kKHRhcmdldCwgdGFyZ2V0W3Byb3BdLCB3cmFwcGVyKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgbWV0aG9kIHRoYXQgd2UgZG9uJ3Qga25vdyBvciBjYXJlIGFib3V0LiBSZXR1cm4gdGhlXG4gICAgICAgICAgICAgICAgLy8gb3JpZ2luYWwgbWV0aG9kLCBib3VuZCB0byB0aGUgdW5kZXJseWluZyBvYmplY3QuXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5iaW5kKHRhcmdldCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsICYmIChoYXNPd25Qcm9wZXJ0eSh3cmFwcGVycywgcHJvcCkgfHwgaGFzT3duUHJvcGVydHkobWV0YWRhdGEsIHByb3ApKSkge1xuICAgICAgICAgICAgICAvLyBUaGlzIGlzIGFuIG9iamVjdCB0aGF0IHdlIG5lZWQgdG8gZG8gc29tZSB3cmFwcGluZyBmb3IgdGhlIGNoaWxkcmVuXG4gICAgICAgICAgICAgIC8vIG9mLiBDcmVhdGUgYSBzdWItb2JqZWN0IHdyYXBwZXIgZm9yIGl0IHdpdGggdGhlIGFwcHJvcHJpYXRlIGNoaWxkXG4gICAgICAgICAgICAgIC8vIG1ldGFkYXRhLlxuICAgICAgICAgICAgICB2YWx1ZSA9IHdyYXBPYmplY3QodmFsdWUsIHdyYXBwZXJzW3Byb3BdLCBtZXRhZGF0YVtwcm9wXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhhc093blByb3BlcnR5KG1ldGFkYXRhLCBcIipcIikpIHtcbiAgICAgICAgICAgICAgLy8gV3JhcCBhbGwgcHJvcGVydGllcyBpbiAqIG5hbWVzcGFjZS5cbiAgICAgICAgICAgICAgdmFsdWUgPSB3cmFwT2JqZWN0KHZhbHVlLCB3cmFwcGVyc1twcm9wXSwgbWV0YWRhdGFbXCIqXCJdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gYW55IHdyYXBwaW5nIGZvciB0aGlzIHByb3BlcnR5LFxuICAgICAgICAgICAgICAvLyBzbyBqdXN0IGZvcndhcmQgYWxsIGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBvYmplY3QuXG4gICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjYWNoZSwgcHJvcCwge1xuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGdldCgpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRbcHJvcF07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXQodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhY2hlW3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXQocHJveHlUYXJnZXQsIHByb3AsIHZhbHVlLCByZWNlaXZlcikge1xuICAgICAgICAgICAgaWYgKHByb3AgaW4gY2FjaGUpIHtcbiAgICAgICAgICAgICAgY2FjaGVbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBkZWZpbmVQcm9wZXJ0eShwcm94eVRhcmdldCwgcHJvcCwgZGVzYykge1xuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoY2FjaGUsIHByb3AsIGRlc2MpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZGVsZXRlUHJvcGVydHkocHJveHlUYXJnZXQsIHByb3ApIHtcbiAgICAgICAgICAgIHJldHVybiBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KGNhY2hlLCBwcm9wKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gUGVyIGNvbnRyYWN0IG9mIHRoZSBQcm94eSBBUEksIHRoZSBcImdldFwiIHByb3h5IGhhbmRsZXIgbXVzdCByZXR1cm4gdGhlXG4gICAgICAgIC8vIG9yaWdpbmFsIHZhbHVlIG9mIHRoZSB0YXJnZXQgaWYgdGhhdCB2YWx1ZSBpcyBkZWNsYXJlZCByZWFkLW9ubHkgYW5kXG4gICAgICAgIC8vIG5vbi1jb25maWd1cmFibGUuIEZvciB0aGlzIHJlYXNvbiwgd2UgY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZVxuICAgICAgICAvLyBwcm90b3R5cGUgc2V0IHRvIGB0YXJnZXRgIGluc3RlYWQgb2YgdXNpbmcgYHRhcmdldGAgZGlyZWN0bHkuXG4gICAgICAgIC8vIE90aGVyd2lzZSB3ZSBjYW5ub3QgcmV0dXJuIGEgY3VzdG9tIG9iamVjdCBmb3IgQVBJcyB0aGF0XG4gICAgICAgIC8vIGFyZSBkZWNsYXJlZCByZWFkLW9ubHkgYW5kIG5vbi1jb25maWd1cmFibGUsIHN1Y2ggYXMgYGNocm9tZS5kZXZ0b29sc2AuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRoZSBwcm94eSBoYW5kbGVycyB0aGVtc2VsdmVzIHdpbGwgc3RpbGwgdXNlIHRoZSBvcmlnaW5hbCBgdGFyZ2V0YFxuICAgICAgICAvLyBpbnN0ZWFkIG9mIHRoZSBgcHJveHlUYXJnZXRgLCBzbyB0aGF0IHRoZSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGFyZVxuICAgICAgICAvLyBkZXJlZmVyZW5jZWQgdmlhIHRoZSBvcmlnaW5hbCB0YXJnZXRzLlxuICAgICAgICBsZXQgcHJveHlUYXJnZXQgPSBPYmplY3QuY3JlYXRlKHRhcmdldCk7XG4gICAgICAgIHJldHVybiBuZXcgUHJveHkocHJveHlUYXJnZXQsIGhhbmRsZXJzKTtcbiAgICAgIH07XG5cbiAgICAgIC8qKlxuICAgICAgICogQ3JlYXRlcyBhIHNldCBvZiB3cmFwcGVyIGZ1bmN0aW9ucyBmb3IgYW4gZXZlbnQgb2JqZWN0LCB3aGljaCBoYW5kbGVzXG4gICAgICAgKiB3cmFwcGluZyBvZiBsaXN0ZW5lciBmdW5jdGlvbnMgdGhhdCB0aG9zZSBtZXNzYWdlcyBhcmUgcGFzc2VkLlxuICAgICAgICpcbiAgICAgICAqIEEgc2luZ2xlIHdyYXBwZXIgaXMgY3JlYXRlZCBmb3IgZWFjaCBsaXN0ZW5lciBmdW5jdGlvbiwgYW5kIHN0b3JlZCBpbiBhXG4gICAgICAgKiBtYXAuIFN1YnNlcXVlbnQgY2FsbHMgdG8gYGFkZExpc3RlbmVyYCwgYGhhc0xpc3RlbmVyYCwgb3IgYHJlbW92ZUxpc3RlbmVyYFxuICAgICAgICogcmV0cmlldmUgdGhlIG9yaWdpbmFsIHdyYXBwZXIsIHNvIHRoYXQgIGF0dGVtcHRzIHRvIHJlbW92ZSBhXG4gICAgICAgKiBwcmV2aW91c2x5LWFkZGVkIGxpc3RlbmVyIHdvcmsgYXMgZXhwZWN0ZWQuXG4gICAgICAgKlxuICAgICAgICogQHBhcmFtIHtEZWZhdWx0V2Vha01hcDxmdW5jdGlvbiwgZnVuY3Rpb24+fSB3cmFwcGVyTWFwXG4gICAgICAgKiAgICAgICAgQSBEZWZhdWx0V2Vha01hcCBvYmplY3Qgd2hpY2ggd2lsbCBjcmVhdGUgdGhlIGFwcHJvcHJpYXRlIHdyYXBwZXJcbiAgICAgICAqICAgICAgICBmb3IgYSBnaXZlbiBsaXN0ZW5lciBmdW5jdGlvbiB3aGVuIG9uZSBkb2VzIG5vdCBleGlzdCwgYW5kIHJldHJpZXZlXG4gICAgICAgKiAgICAgICAgYW4gZXhpc3Rpbmcgb25lIHdoZW4gaXQgZG9lcy5cbiAgICAgICAqXG4gICAgICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgICAgICovXG4gICAgICBjb25zdCB3cmFwRXZlbnQgPSB3cmFwcGVyTWFwID0+ICh7XG4gICAgICAgIGFkZExpc3RlbmVyKHRhcmdldCwgbGlzdGVuZXIsIC4uLmFyZ3MpIHtcbiAgICAgICAgICB0YXJnZXQuYWRkTGlzdGVuZXIod3JhcHBlck1hcC5nZXQobGlzdGVuZXIpLCAuLi5hcmdzKTtcbiAgICAgICAgfSxcbiAgICAgICAgaGFzTGlzdGVuZXIodGFyZ2V0LCBsaXN0ZW5lcikge1xuICAgICAgICAgIHJldHVybiB0YXJnZXQuaGFzTGlzdGVuZXIod3JhcHBlck1hcC5nZXQobGlzdGVuZXIpKTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVtb3ZlTGlzdGVuZXIodGFyZ2V0LCBsaXN0ZW5lcikge1xuICAgICAgICAgIHRhcmdldC5yZW1vdmVMaXN0ZW5lcih3cmFwcGVyTWFwLmdldChsaXN0ZW5lcikpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG9uUmVxdWVzdEZpbmlzaGVkV3JhcHBlcnMgPSBuZXcgRGVmYXVsdFdlYWtNYXAobGlzdGVuZXIgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICByZXR1cm4gbGlzdGVuZXI7XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogV3JhcHMgYW4gb25SZXF1ZXN0RmluaXNoZWQgbGlzdGVuZXIgZnVuY3Rpb24gc28gdGhhdCBpdCB3aWxsIHJldHVybiBhXG4gICAgICAgICAqIGBnZXRDb250ZW50KClgIHByb3BlcnR5IHdoaWNoIHJldHVybnMgYSBgUHJvbWlzZWAgcmF0aGVyIHRoYW4gdXNpbmcgYVxuICAgICAgICAgKiBjYWxsYmFjayBBUEkuXG4gICAgICAgICAqXG4gICAgICAgICAqIEBwYXJhbSB7b2JqZWN0fSByZXFcbiAgICAgICAgICogICAgICAgIFRoZSBIQVIgZW50cnkgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbmV0d29yayByZXF1ZXN0LlxuICAgICAgICAgKi9cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIG9uUmVxdWVzdEZpbmlzaGVkKHJlcSkge1xuICAgICAgICAgIGNvbnN0IHdyYXBwZWRSZXEgPSB3cmFwT2JqZWN0KHJlcSwge30gLyogd3JhcHBlcnMgKi8sIHtcbiAgICAgICAgICAgIGdldENvbnRlbnQ6IHtcbiAgICAgICAgICAgICAgbWluQXJnczogMCxcbiAgICAgICAgICAgICAgbWF4QXJnczogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGxpc3RlbmVyKHdyYXBwZWRSZXEpO1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBjb25zdCBvbk1lc3NhZ2VXcmFwcGVycyA9IG5ldyBEZWZhdWx0V2Vha01hcChsaXN0ZW5lciA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgIHJldHVybiBsaXN0ZW5lcjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXcmFwcyBhIG1lc3NhZ2UgbGlzdGVuZXIgZnVuY3Rpb24gc28gdGhhdCBpdCBtYXkgc2VuZCByZXNwb25zZXMgYmFzZWQgb25cbiAgICAgICAgICogaXRzIHJldHVybiB2YWx1ZSwgcmF0aGVyIHRoYW4gYnkgcmV0dXJuaW5nIGEgc2VudGluZWwgdmFsdWUgYW5kIGNhbGxpbmcgYVxuICAgICAgICAgKiBjYWxsYmFjay4gSWYgdGhlIGxpc3RlbmVyIGZ1bmN0aW9uIHJldHVybnMgYSBQcm9taXNlLCB0aGUgcmVzcG9uc2UgaXNcbiAgICAgICAgICogc2VudCB3aGVuIHRoZSBwcm9taXNlIGVpdGhlciByZXNvbHZlcyBvciByZWplY3RzLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAcGFyYW0geyp9IG1lc3NhZ2VcbiAgICAgICAgICogICAgICAgIFRoZSBtZXNzYWdlIHNlbnQgYnkgdGhlIG90aGVyIGVuZCBvZiB0aGUgY2hhbm5lbC5cbiAgICAgICAgICogQHBhcmFtIHtvYmplY3R9IHNlbmRlclxuICAgICAgICAgKiAgICAgICAgRGV0YWlscyBhYm91dCB0aGUgc2VuZGVyIG9mIHRoZSBtZXNzYWdlLlxuICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCopfSBzZW5kUmVzcG9uc2VcbiAgICAgICAgICogICAgICAgIEEgY2FsbGJhY2sgd2hpY2gsIHdoZW4gY2FsbGVkIHdpdGggYW4gYXJiaXRyYXJ5IGFyZ3VtZW50LCBzZW5kc1xuICAgICAgICAgKiAgICAgICAgdGhhdCB2YWx1ZSBhcyBhIHJlc3BvbnNlLlxuICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICAgICAgICogICAgICAgIFRydWUgaWYgdGhlIHdyYXBwZWQgbGlzdGVuZXIgcmV0dXJuZWQgYSBQcm9taXNlLCB3aGljaCB3aWxsIGxhdGVyXG4gICAgICAgICAqICAgICAgICB5aWVsZCBhIHJlc3BvbnNlLiBGYWxzZSBvdGhlcndpc2UuXG4gICAgICAgICAqL1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gb25NZXNzYWdlKG1lc3NhZ2UsIHNlbmRlciwgc2VuZFJlc3BvbnNlKSB7XG4gICAgICAgICAgbGV0IGRpZENhbGxTZW5kUmVzcG9uc2UgPSBmYWxzZTtcbiAgICAgICAgICBsZXQgd3JhcHBlZFNlbmRSZXNwb25zZTtcbiAgICAgICAgICBsZXQgc2VuZFJlc3BvbnNlUHJvbWlzZSA9IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgd3JhcHBlZFNlbmRSZXNwb25zZSA9IGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAgICAgICBkaWRDYWxsU2VuZFJlc3BvbnNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGxpc3RlbmVyKG1lc3NhZ2UsIHNlbmRlciwgd3JhcHBlZFNlbmRSZXNwb25zZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBQcm9taXNlLnJlamVjdChlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpc1Jlc3VsdFRoZW5hYmxlID0gcmVzdWx0ICE9PSB0cnVlICYmIGlzVGhlbmFibGUocmVzdWx0KTtcblxuICAgICAgICAgIC8vIElmIHRoZSBsaXN0ZW5lciBkaWRuJ3QgcmV0dXJuZWQgdHJ1ZSBvciBhIFByb21pc2UsIG9yIGNhbGxlZFxuICAgICAgICAgIC8vIHdyYXBwZWRTZW5kUmVzcG9uc2Ugc3luY2hyb25vdXNseSwgd2UgY2FuIGV4aXQgZWFybGllclxuICAgICAgICAgIC8vIGJlY2F1c2UgdGhlcmUgd2lsbCBiZSBubyByZXNwb25zZSBzZW50IGZyb20gdGhpcyBsaXN0ZW5lci5cbiAgICAgICAgICBpZiAocmVzdWx0ICE9PSB0cnVlICYmICFpc1Jlc3VsdFRoZW5hYmxlICYmICFkaWRDYWxsU2VuZFJlc3BvbnNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQSBzbWFsbCBoZWxwZXIgdG8gc2VuZCB0aGUgbWVzc2FnZSBpZiB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgICAgICAgIC8vIGFuZCBhbiBlcnJvciBpZiB0aGUgcHJvbWlzZSByZWplY3RzIChhIHdyYXBwZWQgc2VuZE1lc3NhZ2UgaGFzXG4gICAgICAgICAgLy8gdG8gdHJhbnNsYXRlIHRoZSBtZXNzYWdlIGludG8gYSByZXNvbHZlZCBwcm9taXNlIG9yIGEgcmVqZWN0ZWRcbiAgICAgICAgICAvLyBwcm9taXNlKS5cbiAgICAgICAgICBjb25zdCBzZW5kUHJvbWlzZWRSZXN1bHQgPSBwcm9taXNlID0+IHtcbiAgICAgICAgICAgIHByb21pc2UudGhlbihtc2cgPT4ge1xuICAgICAgICAgICAgICAvLyBzZW5kIHRoZSBtZXNzYWdlIHZhbHVlLlxuICAgICAgICAgICAgICBzZW5kUmVzcG9uc2UobXNnKTtcbiAgICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgICAgLy8gU2VuZCBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yIGlmIHRoZSByZWplY3RlZCB2YWx1ZVxuICAgICAgICAgICAgICAvLyBpcyBhbiBpbnN0YW5jZSBvZiBlcnJvciwgb3IgdGhlIG9iamVjdCBpdHNlbGYgb3RoZXJ3aXNlLlxuICAgICAgICAgICAgICBsZXQgbWVzc2FnZTtcbiAgICAgICAgICAgICAgaWYgKGVycm9yICYmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yIHx8IHR5cGVvZiBlcnJvci5tZXNzYWdlID09PSBcInN0cmluZ1wiKSkge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBcIkFuIHVuZXhwZWN0ZWQgZXJyb3Igb2NjdXJyZWRcIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZW5kUmVzcG9uc2Uoe1xuICAgICAgICAgICAgICAgIF9fbW96V2ViRXh0ZW5zaW9uUG9seWZpbGxSZWplY3RfXzogdHJ1ZSxcbiAgICAgICAgICAgICAgICBtZXNzYWdlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgLy8gUHJpbnQgYW4gZXJyb3Igb24gdGhlIGNvbnNvbGUgaWYgdW5hYmxlIHRvIHNlbmQgdGhlIHJlc3BvbnNlLlxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIHNlbmQgb25NZXNzYWdlIHJlamVjdGVkIHJlcGx5XCIsIGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgLy8gSWYgdGhlIGxpc3RlbmVyIHJldHVybmVkIGEgUHJvbWlzZSwgc2VuZCB0aGUgcmVzb2x2ZWQgdmFsdWUgYXMgYVxuICAgICAgICAgIC8vIHJlc3VsdCwgb3RoZXJ3aXNlIHdhaXQgdGhlIHByb21pc2UgcmVsYXRlZCB0byB0aGUgd3JhcHBlZFNlbmRSZXNwb25zZVxuICAgICAgICAgIC8vIGNhbGxiYWNrIHRvIHJlc29sdmUgYW5kIHNlbmQgaXQgYXMgYSByZXNwb25zZS5cbiAgICAgICAgICBpZiAoaXNSZXN1bHRUaGVuYWJsZSkge1xuICAgICAgICAgICAgc2VuZFByb21pc2VkUmVzdWx0KHJlc3VsdCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbmRQcm9taXNlZFJlc3VsdChzZW5kUmVzcG9uc2VQcm9taXNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBMZXQgQ2hyb21lIGtub3cgdGhhdCB0aGUgbGlzdGVuZXIgaXMgcmVwbHlpbmcuXG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHdyYXBwZWRTZW5kTWVzc2FnZUNhbGxiYWNrID0gKHtcbiAgICAgICAgcmVqZWN0LFxuICAgICAgICByZXNvbHZlXG4gICAgICB9LCByZXBseSkgPT4ge1xuICAgICAgICBpZiAoZXh0ZW5zaW9uQVBJcy5ydW50aW1lLmxhc3RFcnJvcikge1xuICAgICAgICAgIC8vIERldGVjdCB3aGVuIG5vbmUgb2YgdGhlIGxpc3RlbmVycyByZXBsaWVkIHRvIHRoZSBzZW5kTWVzc2FnZSBjYWxsIGFuZCByZXNvbHZlXG4gICAgICAgICAgLy8gdGhlIHByb21pc2UgdG8gdW5kZWZpbmVkIGFzIGluIEZpcmVmb3guXG4gICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3dlYmV4dGVuc2lvbi1wb2x5ZmlsbC9pc3N1ZXMvMTMwXG4gICAgICAgICAgaWYgKGV4dGVuc2lvbkFQSXMucnVudGltZS5sYXN0RXJyb3IubWVzc2FnZSA9PT0gQ0hST01FX1NFTkRfTUVTU0FHRV9DQUxMQkFDS19OT19SRVNQT05TRV9NRVNTQUdFKSB7XG4gICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoZXh0ZW5zaW9uQVBJcy5ydW50aW1lLmxhc3RFcnJvci5tZXNzYWdlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKHJlcGx5ICYmIHJlcGx5Ll9fbW96V2ViRXh0ZW5zaW9uUG9seWZpbGxSZWplY3RfXykge1xuICAgICAgICAgIC8vIENvbnZlcnQgYmFjayB0aGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXJyb3IgaW50b1xuICAgICAgICAgIC8vIGFuIEVycm9yIGluc3RhbmNlLlxuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IocmVwbHkubWVzc2FnZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUocmVwbHkpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgY29uc3Qgd3JhcHBlZFNlbmRNZXNzYWdlID0gKG5hbWUsIG1ldGFkYXRhLCBhcGlOYW1lc3BhY2VPYmosIC4uLmFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgbWV0YWRhdGEubWluQXJncykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYXQgbGVhc3QgJHttZXRhZGF0YS5taW5BcmdzfSAke3BsdXJhbGl6ZUFyZ3VtZW50cyhtZXRhZGF0YS5taW5BcmdzKX0gZm9yICR7bmFtZX0oKSwgZ290ICR7YXJncy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gbWV0YWRhdGEubWF4QXJncykge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgYXQgbW9zdCAke21ldGFkYXRhLm1heEFyZ3N9ICR7cGx1cmFsaXplQXJndW1lbnRzKG1ldGFkYXRhLm1heEFyZ3MpfSBmb3IgJHtuYW1lfSgpLCBnb3QgJHthcmdzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHdyYXBwZWRDYiA9IHdyYXBwZWRTZW5kTWVzc2FnZUNhbGxiYWNrLmJpbmQobnVsbCwge1xuICAgICAgICAgICAgcmVzb2x2ZSxcbiAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGFyZ3MucHVzaCh3cmFwcGVkQ2IpO1xuICAgICAgICAgIGFwaU5hbWVzcGFjZU9iai5zZW5kTWVzc2FnZSguLi5hcmdzKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgICAgY29uc3Qgc3RhdGljV3JhcHBlcnMgPSB7XG4gICAgICAgIGRldnRvb2xzOiB7XG4gICAgICAgICAgbmV0d29yazoge1xuICAgICAgICAgICAgb25SZXF1ZXN0RmluaXNoZWQ6IHdyYXBFdmVudChvblJlcXVlc3RGaW5pc2hlZFdyYXBwZXJzKVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgcnVudGltZToge1xuICAgICAgICAgIG9uTWVzc2FnZTogd3JhcEV2ZW50KG9uTWVzc2FnZVdyYXBwZXJzKSxcbiAgICAgICAgICBvbk1lc3NhZ2VFeHRlcm5hbDogd3JhcEV2ZW50KG9uTWVzc2FnZVdyYXBwZXJzKSxcbiAgICAgICAgICBzZW5kTWVzc2FnZTogd3JhcHBlZFNlbmRNZXNzYWdlLmJpbmQobnVsbCwgXCJzZW5kTWVzc2FnZVwiLCB7XG4gICAgICAgICAgICBtaW5BcmdzOiAxLFxuICAgICAgICAgICAgbWF4QXJnczogM1xuICAgICAgICAgIH0pXG4gICAgICAgIH0sXG4gICAgICAgIHRhYnM6IHtcbiAgICAgICAgICBzZW5kTWVzc2FnZTogd3JhcHBlZFNlbmRNZXNzYWdlLmJpbmQobnVsbCwgXCJzZW5kTWVzc2FnZVwiLCB7XG4gICAgICAgICAgICBtaW5BcmdzOiAyLFxuICAgICAgICAgICAgbWF4QXJnczogM1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjb25zdCBzZXR0aW5nTWV0YWRhdGEgPSB7XG4gICAgICAgIGNsZWFyOiB7XG4gICAgICAgICAgbWluQXJnczogMSxcbiAgICAgICAgICBtYXhBcmdzOiAxXG4gICAgICAgIH0sXG4gICAgICAgIGdldDoge1xuICAgICAgICAgIG1pbkFyZ3M6IDEsXG4gICAgICAgICAgbWF4QXJnczogMVxuICAgICAgICB9LFxuICAgICAgICBzZXQ6IHtcbiAgICAgICAgICBtaW5BcmdzOiAxLFxuICAgICAgICAgIG1heEFyZ3M6IDFcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIGFwaU1ldGFkYXRhLnByaXZhY3kgPSB7XG4gICAgICAgIG5ldHdvcms6IHtcbiAgICAgICAgICBcIipcIjogc2V0dGluZ01ldGFkYXRhXG4gICAgICAgIH0sXG4gICAgICAgIHNlcnZpY2VzOiB7XG4gICAgICAgICAgXCIqXCI6IHNldHRpbmdNZXRhZGF0YVxuICAgICAgICB9LFxuICAgICAgICB3ZWJzaXRlczoge1xuICAgICAgICAgIFwiKlwiOiBzZXR0aW5nTWV0YWRhdGFcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHJldHVybiB3cmFwT2JqZWN0KGV4dGVuc2lvbkFQSXMsIHN0YXRpY1dyYXBwZXJzLCBhcGlNZXRhZGF0YSk7XG4gICAgfTtcblxuICAgIC8vIFRoZSBidWlsZCBwcm9jZXNzIGFkZHMgYSBVTUQgd3JhcHBlciBhcm91bmQgdGhpcyBmaWxlLCB3aGljaCBtYWtlcyB0aGVcbiAgICAvLyBgbW9kdWxlYCB2YXJpYWJsZSBhdmFpbGFibGUuXG4gICAgbW9kdWxlLmV4cG9ydHMgPSB3cmFwQVBJcyhjaHJvbWUpO1xuICB9IGVsc2Uge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsVGhpcy5icm93c2VyO1xuICB9XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJyb3dzZXItcG9seWZpbGwuanMubWFwXG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvKlxuICogWmVkIEF0dGFjayBQcm94eSAoWkFQKSBhbmQgaXRzIHJlbGF0ZWQgc291cmNlIGZpbGVzLlxuICpcbiAqIFpBUCBpcyBhbiBIVFRQL0hUVFBTIHByb3h5IGZvciBhc3Nlc3Npbmcgd2ViIGFwcGxpY2F0aW9uIHNlY3VyaXR5LlxuICpcbiAqIENvcHlyaWdodCAyMDIzIFRoZSBaQVAgRGV2ZWxvcG1lbnQgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtFbGVtZW50TG9jYXRvcn0gZnJvbSAnLi96ZXN0U2NyaXB0L1plc3RTdGF0ZW1lbnQnO1xuXG5pbnRlcmZhY2UgSW50ZXJhY3RhYmxlU3RhdGUge1xuICB2aXNpYmxlOiBib29sZWFuO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBwb2ludGVyOiBib29sZWFuO1xufVxuXG5jbGFzcyBSZXBvcnRlZE9iamVjdCB7XG4gIHB1YmxpYyB0aW1lc3RhbXA6IG51bWJlcjtcblxuICBwdWJsaWMgdHlwZTogc3RyaW5nO1xuXG4gIHB1YmxpYyB0YWdOYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIGlkOiBzdHJpbmc7XG5cbiAgcHVibGljIG5vZGVOYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIHVybDogc3RyaW5nO1xuXG4gIHB1YmxpYyBocmVmOiBzdHJpbmcgfCBudWxsO1xuXG4gIHB1YmxpYyB0ZXh0OiBzdHJpbmcgfCBudWxsO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgdGFnTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgbm9kZU5hbWU6IHN0cmluZyxcbiAgICB0ZXh0OiBzdHJpbmcgfCBudWxsLFxuICAgIHVybDogc3RyaW5nXG4gICkge1xuICAgIHRoaXMudGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMudGFnTmFtZSA9IHRhZ05hbWU7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMubm9kZU5hbWUgPSBub2RlTmFtZTtcbiAgICB0aGlzLnRleHQgPSB0ZXh0O1xuICAgIHRoaXMudXJsID0gdXJsO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpO1xuICB9XG5cbiAgcHVibGljIHRvU2hvcnRTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcyk7XG4gIH1cblxuICAvLyBVc2UgdGhpcyBmb3IgdGVzdHNcbiAgcHVibGljIHRvTm9uVGltZXN0YW1wU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMsIGZ1bmN0aW9uIHJlcGxhY2VyKGs6IHN0cmluZywgdjogc3RyaW5nKSB7XG4gICAgICBpZiAoayA9PT0gJ3RpbWVzdGFtcCcpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2O1xuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFJlcG9ydGVkU3RvcmFnZSBleHRlbmRzIFJlcG9ydGVkT2JqZWN0IHtcbiAgcHVibGljIHRvU2hvcnRTdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcywgZnVuY3Rpb24gcmVwbGFjZXIoazogc3RyaW5nLCB2OiBzdHJpbmcpIHtcbiAgICAgIGlmIChcbiAgICAgICAgayA9PT0gJ2hyZWYnIHx8XG4gICAgICAgIGsgPT09ICd0aW1lc3RhbXAnIHx8XG4gICAgICAgIChrID09PSAndXJsJyAmJiAhKHRoaXMudHlwZSA9PT0gJ2Nvb2tpZXMnKSlcbiAgICAgICkge1xuICAgICAgICAvLyBTdG9yYWdlIGV2ZW50cyBhcmUgbm90IHRpbWUgb3IgVVJMIHNwZWNpZmljXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdjtcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBSZXBvcnRlZEVsZW1lbnQgZXh0ZW5kcyBSZXBvcnRlZE9iamVjdCB7XG4gIHB1YmxpYyB0YWdUeXBlOiBzdHJpbmcgfCBudWxsO1xuXG4gIHB1YmxpYyBmb3JtSWQ6IG51bWJlciB8IG51bGw7XG5cbiAgcHVibGljIGludGVyYWN0YWJsZTogSW50ZXJhY3RhYmxlU3RhdGUgfCB1bmRlZmluZWQ7XG5cbiAgcHVibGljIGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvciB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoZWxlbWVudDogRWxlbWVudCwgdXJsOiBzdHJpbmcsIHR5cGUgPSAnbm9kZUFkZGVkJykge1xuICAgIHN1cGVyKFxuICAgICAgdHlwZSxcbiAgICAgIGVsZW1lbnQudGFnTmFtZSxcbiAgICAgIGVsZW1lbnQuaWQsXG4gICAgICBlbGVtZW50Lm5vZGVOYW1lLFxuICAgICAgZWxlbWVudC50ZXh0Q29udGVudCxcbiAgICAgIHVybFxuICAgICk7XG4gICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gJ0EnKSB7XG4gICAgICAvLyBUaGlzIGdldHMgdGhlIGZ1bGwgVVJMIHJhdGhlciB0aGFuIGEgcmVsYXRpdmUgb25lXG4gICAgICBjb25zdCBhOiBIVE1MQW5jaG9yRWxlbWVudCA9IGVsZW1lbnQgYXMgSFRNTEFuY2hvckVsZW1lbnQ7XG4gICAgICB0aGlzLmhyZWYgPSBhLnRvU3RyaW5nKCk7XG4gICAgfSBlbHNlIGlmIChlbGVtZW50LnRhZ05hbWUgPT09ICdGT1JNJykge1xuICAgICAgdGhpcy5mb3JtSWQgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChkb2N1bWVudC5mb3JtcykuaW5kZXhPZihlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gJ0lOUFVUJykge1xuICAgICAgLy8gQ2FwdHVyZSBleHRyYSB1c2VmdWwgaW5mbyBmb3IgaW5wdXQgZWxlbWVudHNcbiAgICAgIGNvbnN0IGlucHV0OiBIVE1MSW5wdXRFbGVtZW50ID0gZWxlbWVudCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgdGhpcy50YWdUeXBlID0gaW5wdXQudHlwZTtcbiAgICAgIHRoaXMudGV4dCA9IGlucHV0LnZhbHVlO1xuICAgICAgY29uc3Qge2Zvcm19ID0gaW5wdXQ7XG4gICAgICBpZiAoZm9ybSkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgbm90IHdvcmsgaWYgZm9ybSB0YWdzIGFyZSBub3QgdXNlZFxuICAgICAgICB0aGlzLmZvcm1JZCA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRvY3VtZW50LmZvcm1zKS5pbmRleE9mKGZvcm0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZWxlbWVudC50YWdOYW1lID09PSAnVEVYVEFSRUEnKSB7XG4gICAgICBjb25zdCB0ZXh0YXJlYTogSFRNTFRleHRBcmVhRWxlbWVudCA9IGVsZW1lbnQgYXMgSFRNTFRleHRBcmVhRWxlbWVudDtcbiAgICAgIHRoaXMudGV4dCA9IHRleHRhcmVhLnZhbHVlO1xuICAgICAgY29uc3Qge2Zvcm19ID0gdGV4dGFyZWE7XG4gICAgICBpZiAoZm9ybSkge1xuICAgICAgICB0aGlzLmZvcm1JZCA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRvY3VtZW50LmZvcm1zKS5pbmRleE9mKGZvcm0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZWxlbWVudC50YWdOYW1lID09PSAnU0VMRUNUJykge1xuICAgICAgY29uc3Qgc2VsZWN0OiBIVE1MU2VsZWN0RWxlbWVudCA9IGVsZW1lbnQgYXMgSFRNTFNlbGVjdEVsZW1lbnQ7XG4gICAgICB0aGlzLnRleHQgPSBzZWxlY3QudmFsdWU7XG4gICAgICBjb25zdCB7Zm9ybX0gPSBzZWxlY3Q7XG4gICAgICBpZiAoZm9ybSkge1xuICAgICAgICB0aGlzLmZvcm1JZCA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRvY3VtZW50LmZvcm1zKS5pbmRleE9mKGZvcm0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2hyZWYnKSkge1xuICAgICAgdGhpcy5ocmVmID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9TaG9ydFN0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLCBmdW5jdGlvbiByZXBsYWNlcihrOiBzdHJpbmcsIHY6IHN0cmluZykge1xuICAgICAgaWYgKGsgPT09ICd0aW1lc3RhbXAnIHx8IGsgPT09ICdpbnRlcmFjdGFibGUnIHx8IGsgPT09ICdlbGVtZW50TG9jYXRvcicpIHtcbiAgICAgICAgLy8gTm8gcG9pbnQgcmVwb3J0aW5nIHRoZSBzYW1lIGVsZW1lbnQgbG90cyBvZiB0aW1lc1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHY7XG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgUmVwb3J0ZWRFdmVudCB7XG4gIHB1YmxpYyB0aW1lc3RhbXA6IG51bWJlcjtcblxuICBwdWJsaWMgZXZlbnROYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIHVybDogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb3VudDogbnVtYmVyO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihldmVudE5hbWU6IHN0cmluZykge1xuICAgIHRoaXMudGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmV2ZW50TmFtZSA9IGV2ZW50TmFtZTtcbiAgICB0aGlzLnVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIHRoaXMuY291bnQgPSAxO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpO1xuICB9XG59XG5cbmV4cG9ydCB7UmVwb3J0ZWRFbGVtZW50LCBSZXBvcnRlZE9iamVjdCwgUmVwb3J0ZWRTdG9yYWdlLCBSZXBvcnRlZEV2ZW50fTtcbmV4cG9ydCB0eXBlIHtJbnRlcmFjdGFibGVTdGF0ZX07XG4iLCIvKlxuICogWmVkIEF0dGFjayBQcm94eSAoWkFQKSBhbmQgaXRzIHJlbGF0ZWQgc291cmNlIGZpbGVzLlxuICpcbiAqIFpBUCBpcyBhbiBIVFRQL0hUVFBTIHByb3h5IGZvciBhc3Nlc3Npbmcgd2ViIGFwcGxpY2F0aW9uIHNlY3VyaXR5LlxuICpcbiAqIENvcHlyaWdodCAyMDIzIFRoZSBaQVAgRGV2ZWxvcG1lbnQgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IEJyb3dzZXIgZnJvbSAnd2ViZXh0ZW5zaW9uLXBvbHlmaWxsJztcblxuLy8gVGhlIG1hbmlmZXN0IHdpbGwgYmUgdW5kZWZpbmVkIHdoZW4gcnVubmluZyB0aGUgdGVzdHNcbmV4cG9ydCBjb25zdCBJU19GVUxMX0VYVEVOU0lPTiA9XG4gIHR5cGVvZiBCcm93c2VyLnJ1bnRpbWUuZ2V0TWFuaWZlc3QgPT09ICd1bmRlZmluZWQnIHx8XG4gIEJyb3dzZXIucnVudGltZS5nZXRNYW5pZmVzdCgpLm5hbWUgPT09ICdaQVAgYnkgQ2hlY2ttYXJ4IEJyb3dzZXIgRXh0ZW5zaW9uJztcblxuZXhwb3J0IGNvbnN0IFpFU1RfQ0xJRU5UX1NXSVRDSF9UT19GUkFNRSA9ICdaZXN0Q2xpZW50U3dpdGNoVG9GcmFtZSc7XG5leHBvcnQgY29uc3QgWkVTVF9DTElFTlRfRUxFTUVOVF9DTElDSyA9ICdaZXN0Q2xpZW50RWxlbWVudENsaWNrJztcbmV4cG9ydCBjb25zdCBaRVNUX0NMSUVOVF9FTEVNRU5UX1NDUk9MTF9UTyA9ICdaZXN0Q2xpZW50RWxlbWVudFNjcm9sbFRvJztcbmV4cG9ydCBjb25zdCBaRVNUX0NMSUVOVF9FTEVNRU5UX1NFTkRfS0VZUyA9ICdaZXN0Q2xpZW50RWxlbWVudFNlbmRLZXlzJztcbmV4cG9ydCBjb25zdCBaRVNUX0NMSUVOVF9FTEVNRU5UX1NVQk1JVCA9ICdaZXN0Q2xpZW50RWxlbWVudFN1Ym1pdCc7XG5leHBvcnQgY29uc3QgWkVTVF9DTElFTlRfTEFVTkNIID0gJ1plc3RDbGllbnRMYXVuY2gnO1xuZXhwb3J0IGNvbnN0IFpFU1RfQ0xJRU5UX0VMRU1FTlRfQ0xFQVIgPSAnWmVzdENsaWVudEVsZW1lbnRDbGVhcic7XG5leHBvcnQgY29uc3QgWkVTVF9DTElFTlRfV0lORE9XX0NMT1NFID0gJ1plc3RDbGllbnRXaW5kb3dDbG9zZSc7XG5leHBvcnQgY29uc3QgWkVTVF9DTElFTlRfRUxFTUVOVF9NT1VTRV9PVkVSID0gJ1plc3RDbGllbnRFbGVtZW50TW91c2VPdmVyJztcbmV4cG9ydCBjb25zdCBaRVNUX0NPTU1FTlQgPSAnWmVzdENvbW1lbnQnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfV0lORE9XX0hBTkRMRSA9ICd3aW5kb3dIYW5kbGUxJztcblxuZXhwb3J0IGNvbnN0IFpBUF9TVE9QX1JFQ09SRElORyA9ICd6YXBTdG9wUmVjb3JkaW5nJztcbmV4cG9ydCBjb25zdCBaQVBfU1RBUlRfUkVDT1JESU5HID0gJ3phcFN0YXJ0UmVjb3JkaW5nJztcbmV4cG9ydCBjb25zdCBaRVNUX1NDUklQVCA9ICd6ZXN0U2NyaXB0JztcblxuZXhwb3J0IGNvbnN0IFNUT1BfUkVDT1JESU5HID0gJ3N0b3BSZWNvcmRpbmcnO1xuZXhwb3J0IGNvbnN0IFJFU0VUX1pFU1RfU0NSSVBUID0gJ3Jlc2V0WmVzdFNjcmlwdCc7XG5leHBvcnQgY29uc3QgR0VUX1pFU1RfU0NSSVBUID0gJ2dldFplc3RTY3JpcHQnO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USVRMRSA9ICd1cGRhdGVUaXRsZSc7XG5cbmV4cG9ydCBjb25zdCBSRVBPUlRfRVZFTlQgPSAncmVwb3J0RXZlbnQnO1xuZXhwb3J0IGNvbnN0IFJFUE9SVF9PQkpFQ1QgPSAncmVwb3J0T2JqZWN0JztcblxuZXhwb3J0IGNvbnN0IExPQ0FMX1NUT1JBR0UgPSAnbG9jYWxTdG9yYWdlJztcbmV4cG9ydCBjb25zdCBTRVNTSU9OX1NUT1JBR0UgPSAnc2Vzc2lvblN0b3JhZ2UnO1xuZXhwb3J0IGNvbnN0IExPQ0FMX1pBUF9VUkwgPSAnbG9jYWx6YXB1cmwnO1xuZXhwb3J0IGNvbnN0IExPQ0FMX1pBUF9FTkFCTEUgPSAnbG9jYWx6YXBlbmFibGUnO1xuZXhwb3J0IGNvbnN0IExPQ0FMX1pBUF9SRUNPUkQgPSAnbG9jYWx6YXByZWNvcmQnO1xuZXhwb3J0IGNvbnN0IFVSTF9aQVBfRU5BQkxFID0gJ3phcGVuYWJsZSc7XG5leHBvcnQgY29uc3QgVVJMX1pBUF9SRUNPUkQgPSAnemFwcmVjb3JkJztcblxuZXhwb3J0IGNvbnN0IFpBUF9VUkwgPSAnemFwdXJsJztcbmV4cG9ydCBjb25zdCBaQVBfS0VZID0gJ3phcGtleSc7XG5leHBvcnQgY29uc3QgWkFQX0VOQUJMRSA9ICd6YXBlbmFibGUnO1xuXG5leHBvcnQgY29uc3QgWkFQX0ZMT0FUSU5HX0RJViA9ICdaYXBmbG9hdGluZ0Rpdic7XG5leHBvcnQgY29uc3QgWkFQX0ZMT0FUSU5HX0RJVl9FTEVNRU5UUyA9ICdaYXBmbG9hdGluZ0RpdkVsZW1lbnRzJztcbiIsIi8qXG4gKiBaZWQgQXR0YWNrIFByb3h5IChaQVApIGFuZCBpdHMgcmVsYXRlZCBzb3VyY2UgZmlsZXMuXG4gKlxuICogWkFQIGlzIGFuIEhUVFAvSFRUUFMgcHJveHkgZm9yIGFzc2Vzc2luZyB3ZWIgYXBwbGljYXRpb24gc2VjdXJpdHkuXG4gKlxuICogQ29weXJpZ2h0IDIwMjMgVGhlIFpBUCBEZXZlbG9wbWVudCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1xuICBERUZBVUxUX1dJTkRPV19IQU5ETEUsXG4gIFpFU1RfQ0xJRU5UX0VMRU1FTlRfQ0xFQVIsXG4gIFpFU1RfQ0xJRU5UX0VMRU1FTlRfQ0xJQ0ssXG4gIFpFU1RfQ0xJRU5UX0VMRU1FTlRfTU9VU0VfT1ZFUixcbiAgWkVTVF9DTElFTlRfRUxFTUVOVF9TQ1JPTExfVE8sXG4gIFpFU1RfQ0xJRU5UX0VMRU1FTlRfU0VORF9LRVlTLFxuICBaRVNUX0NMSUVOVF9FTEVNRU5UX1NVQk1JVCxcbiAgWkVTVF9DTElFTlRfTEFVTkNILFxuICBaRVNUX0NMSUVOVF9TV0lUQ0hfVE9fRlJBTUUsXG4gIFpFU1RfQ0xJRU5UX1dJTkRPV19DTE9TRSxcbiAgWkVTVF9DT01NRU5ULFxufSBmcm9tICcuLi8uLi91dGlscy9jb25zdGFudHMnO1xuXG5jbGFzcyBFbGVtZW50TG9jYXRvciB7XG4gIHR5cGU6IHN0cmluZztcblxuICBlbGVtZW50OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IodHlwZTogc3RyaW5nLCBlbGVtZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gIH1cblxuICB0b0pTT04oKToge3R5cGU6IHN0cmluZzsgZWxlbWVudDogc3RyaW5nfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGVsZW1lbnQ6IHRoaXMuZWxlbWVudCxcbiAgICB9O1xuICB9XG59XG5cbmFic3RyYWN0IGNsYXNzIFplc3RTdGF0ZW1lbnQge1xuICBpbmRleDogbnVtYmVyO1xuXG4gIGVsZW1lbnRUeXBlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZTtcbiAgICB0aGlzLmluZGV4ID0gLTE7XG4gIH1cblxuICBhYnN0cmFjdCB0b0pTT04oKTogc3RyaW5nO1xufVxuXG5jbGFzcyBaZXN0U3RhdGVtZW50TGF1bmNoQnJvd3NlciBleHRlbmRzIFplc3RTdGF0ZW1lbnQge1xuICB3aW5kb3dIYW5kbGU6IHN0cmluZztcblxuICBicm93c2VyVHlwZTogc3RyaW5nO1xuXG4gIHVybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGJyb3dzZXJUeXBlOiBzdHJpbmcsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgd2luZG93SGFuZGxlID0gREVGQVVMVF9XSU5ET1dfSEFORExFXG4gICkge1xuICAgIHN1cGVyKFpFU1RfQ0xJRU5UX0xBVU5DSCk7XG4gICAgdGhpcy53aW5kb3dIYW5kbGUgPSB3aW5kb3dIYW5kbGU7XG4gICAgdGhpcy5icm93c2VyVHlwZSA9IGJyb3dzZXJUeXBlO1xuICAgIHRoaXMudXJsID0gdXJsO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHdpbmRvd0hhbmRsZTogdGhpcy53aW5kb3dIYW5kbGUsXG4gICAgICBicm93c2VyVHlwZTogdGhpcy5icm93c2VyVHlwZSxcbiAgICAgIHVybDogdGhpcy51cmwsXG4gICAgICBjYXBhYmlsaXRpZXM6ICcnLFxuICAgICAgaGVhZGxlc3M6IGZhbHNlLFxuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudENvbW1lbnQgZXh0ZW5kcyBaZXN0U3RhdGVtZW50IHtcbiAgY29tbWVudDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGNvbW1lbnQ6IHN0cmluZykge1xuICAgIHN1cGVyKFpFU1RfQ09NTUVOVCk7XG4gICAgdGhpcy5jb21tZW50ID0gY29tbWVudDtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBlbGVtZW50VHlwZTogdGhpcy5lbGVtZW50VHlwZSxcbiAgICAgIGNvbW1lbnQ6IHRoaXMuY29tbWVudCxcbiAgICB9KTtcbiAgfVxufVxuXG5hYnN0cmFjdCBjbGFzcyBaZXN0U3RhdGVtZW50RWxlbWVudCBleHRlbmRzIFplc3RTdGF0ZW1lbnQge1xuICBlbGVtZW50TG9jYXRvcjogRWxlbWVudExvY2F0b3I7XG5cbiAgd2luZG93SGFuZGxlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFR5cGU6IHN0cmluZywgZWxlbWVudExvY2F0b3I6IEVsZW1lbnRMb2NhdG9yKSB7XG4gICAgc3VwZXIoZWxlbWVudFR5cGUpO1xuICAgIHRoaXMuZWxlbWVudExvY2F0b3IgPSBlbGVtZW50TG9jYXRvcjtcbiAgfVxufVxuXG5jbGFzcyBaZXN0U3RhdGVtZW50RWxlbWVudENsaWNrIGV4dGVuZHMgWmVzdFN0YXRlbWVudEVsZW1lbnQge1xuICB3YWl0Rm9yTXNlYzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvcixcbiAgICB3YWl0Rm9yTXNlYzogbnVtYmVyLFxuICAgIHdpbmRvd0hhbmRsZSA9IERFRkFVTFRfV0lORE9XX0hBTkRMRVxuICApIHtcbiAgICBzdXBlcihaRVNUX0NMSUVOVF9FTEVNRU5UX0NMSUNLLCBlbGVtZW50TG9jYXRvcik7XG4gICAgdGhpcy53aW5kb3dIYW5kbGUgPSB3aW5kb3dIYW5kbGU7XG4gICAgdGhpcy53YWl0Rm9yTXNlYyA9IHdhaXRGb3JNc2VjO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHdpbmRvd0hhbmRsZTogdGhpcy53aW5kb3dIYW5kbGUsXG4gICAgICAuLi50aGlzLmVsZW1lbnRMb2NhdG9yLnRvSlNPTigpLFxuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICB3YWl0Rm9yTXNlYzogdGhpcy53YWl0Rm9yTXNlYyxcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBlbGVtZW50VHlwZTogdGhpcy5lbGVtZW50VHlwZSxcbiAgICB9KTtcbiAgfVxufVxuXG5jbGFzcyBaZXN0U3RhdGVtZW50RWxlbWVudFNjcm9sbFRvIGV4dGVuZHMgWmVzdFN0YXRlbWVudEVsZW1lbnQge1xuICB3YWl0Rm9yTXNlYzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvcixcbiAgICB3YWl0Rm9yTXNlYzogbnVtYmVyLFxuICAgIHdpbmRvd0hhbmRsZSA9IERFRkFVTFRfV0lORE9XX0hBTkRMRVxuICApIHtcbiAgICBzdXBlcihaRVNUX0NMSUVOVF9FTEVNRU5UX1NDUk9MTF9UTywgZWxlbWVudExvY2F0b3IpO1xuICAgIHRoaXMud2FpdEZvck1zZWMgPSB3YWl0Rm9yTXNlYztcbiAgICB0aGlzLndpbmRvd0hhbmRsZSA9IHdpbmRvd0hhbmRsZTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB3aW5kb3dIYW5kbGU6IHRoaXMud2luZG93SGFuZGxlLFxuICAgICAgLi4udGhpcy5lbGVtZW50TG9jYXRvci50b0pTT04oKSxcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgd2FpdEZvck1zZWM6IHRoaXMud2FpdEZvck1zZWMsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudEVsZW1lbnRTZW5kS2V5cyBleHRlbmRzIFplc3RTdGF0ZW1lbnRFbGVtZW50IHtcbiAga2V5czogc3RyaW5nO1xuXG4gIHdhaXRGb3JNc2VjOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudExvY2F0b3I6IEVsZW1lbnRMb2NhdG9yLFxuICAgIGtleXM6IHN0cmluZyxcbiAgICB3YWl0Rm9yTXNlYzogbnVtYmVyLFxuICAgIHdpbmRvd0hhbmRsZSA9IERFRkFVTFRfV0lORE9XX0hBTkRMRVxuICApIHtcbiAgICBzdXBlcihaRVNUX0NMSUVOVF9FTEVNRU5UX1NFTkRfS0VZUywgZWxlbWVudExvY2F0b3IpO1xuICAgIHRoaXMua2V5cyA9IGtleXM7XG4gICAgdGhpcy53YWl0Rm9yTXNlYyA9IHdhaXRGb3JNc2VjO1xuICAgIHRoaXMud2luZG93SGFuZGxlID0gd2luZG93SGFuZGxlO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHZhbHVlOiB0aGlzLmtleXMsXG4gICAgICB3aW5kb3dIYW5kbGU6IHRoaXMud2luZG93SGFuZGxlLFxuICAgICAgLi4udGhpcy5lbGVtZW50TG9jYXRvci50b0pTT04oKSxcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgd2FpdEZvck1zZWM6IHRoaXMud2FpdEZvck1zZWMsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudEVsZW1lbnRTdWJtaXQgZXh0ZW5kcyBaZXN0U3RhdGVtZW50RWxlbWVudCB7XG4gIGtleXM6IHN0cmluZztcblxuICB3YWl0Rm9yTXNlYzogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvcixcbiAgICB3YWl0Rm9yTXNlYzogbnVtYmVyLFxuICAgIHdpbmRvd0hhbmRsZSA9IERFRkFVTFRfV0lORE9XX0hBTkRMRVxuICApIHtcbiAgICBzdXBlcihaRVNUX0NMSUVOVF9FTEVNRU5UX1NVQk1JVCwgZWxlbWVudExvY2F0b3IpO1xuICAgIHRoaXMud2FpdEZvck1zZWMgPSB3YWl0Rm9yTXNlYztcbiAgICB0aGlzLndpbmRvd0hhbmRsZSA9IHdpbmRvd0hhbmRsZTtcbiAgfVxuXG4gIHRvSlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICB2YWx1ZTogdGhpcy5rZXlzLFxuICAgICAgd2luZG93SGFuZGxlOiB0aGlzLndpbmRvd0hhbmRsZSxcbiAgICAgIC4uLnRoaXMuZWxlbWVudExvY2F0b3IudG9KU09OKCksXG4gICAgICBpbmRleDogdGhpcy5pbmRleCxcbiAgICAgIHdhaXRGb3JNc2VjOiB0aGlzLndhaXRGb3JNc2VjLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLmVsZW1lbnRUeXBlLFxuICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIFplc3RTdGF0ZW1lbnRFbGVtZW50Q2xlYXIgZXh0ZW5kcyBaZXN0U3RhdGVtZW50RWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvcixcbiAgICB3aW5kb3dIYW5kbGUgPSBERUZBVUxUX1dJTkRPV19IQU5ETEVcbiAgKSB7XG4gICAgc3VwZXIoWkVTVF9DTElFTlRfRUxFTUVOVF9DTEVBUiwgZWxlbWVudExvY2F0b3IpO1xuICAgIHRoaXMud2luZG93SGFuZGxlID0gd2luZG93SGFuZGxlO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHdpbmRvd0hhbmRsZTogdGhpcy53aW5kb3dIYW5kbGUsXG4gICAgICAuLi50aGlzLmVsZW1lbnRMb2NhdG9yLnRvSlNPTigpLFxuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudFdpbmRvd0Nsb3NlIGV4dGVuZHMgWmVzdFN0YXRlbWVudCB7XG4gIHNsZWVwSW5TZWNvbmRzOiBudW1iZXI7XG5cbiAgd2luZG93SGFuZGxlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2xlZXBJblNlY29uZHM6IG51bWJlciwgd2luZG93SGFuZGxlID0gREVGQVVMVF9XSU5ET1dfSEFORExFKSB7XG4gICAgc3VwZXIoWkVTVF9DTElFTlRfV0lORE9XX0NMT1NFKTtcbiAgICB0aGlzLnNsZWVwSW5TZWNvbmRzID0gc2xlZXBJblNlY29uZHM7XG4gICAgdGhpcy53aW5kb3dIYW5kbGUgPSB3aW5kb3dIYW5kbGU7XG4gIH1cblxuICB0b0pTT04oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgd2luZG93SGFuZGxlOiB0aGlzLndpbmRvd0hhbmRsZSxcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgc2xlZXBJblNlY29uZHM6IHRoaXMuc2xlZXBJblNlY29uZHMsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudFN3aXRjaFRvRnJhbWUgZXh0ZW5kcyBaZXN0U3RhdGVtZW50IHtcbiAgZnJhbWVJbmRleDogbnVtYmVyO1xuXG4gIGZyYW1lTmFtZTogc3RyaW5nO1xuXG4gIHdpbmRvd0hhbmRsZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGZyYW1lSW5kZXg6IG51bWJlcixcbiAgICBmcmFtZU5hbWUgPSAnJyxcbiAgICB3aW5kb3dIYW5kbGUgPSBERUZBVUxUX1dJTkRPV19IQU5ETEVcbiAgKSB7XG4gICAgc3VwZXIoWkVTVF9DTElFTlRfU1dJVENIX1RPX0ZSQU1FKTtcbiAgICB0aGlzLmZyYW1lSW5kZXggPSBmcmFtZUluZGV4O1xuICAgIHRoaXMuZnJhbWVOYW1lID0gZnJhbWVOYW1lO1xuICAgIHRoaXMud2luZG93SGFuZGxlID0gd2luZG93SGFuZGxlO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIHdpbmRvd0hhbmRsZTogdGhpcy53aW5kb3dIYW5kbGUsXG4gICAgICBmcmFtZUluZGV4OiB0aGlzLmZyYW1lSW5kZXgsXG4gICAgICBmcmFtZU5hbWU6IHRoaXMuZnJhbWVOYW1lLFxuICAgICAgcGFyZW50OiB0aGlzLmZyYW1lSW5kZXggPT09IC0xLFxuICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgZWxlbWVudFR5cGU6IHRoaXMuZWxlbWVudFR5cGUsXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgWmVzdFN0YXRlbWVudEVsZW1lbnRNb3VzZU92ZXIgZXh0ZW5kcyBaZXN0U3RhdGVtZW50RWxlbWVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRMb2NhdG9yOiBFbGVtZW50TG9jYXRvcikge1xuICAgIHN1cGVyKFpFU1RfQ0xJRU5UX0VMRU1FTlRfTU9VU0VfT1ZFUiwgZWxlbWVudExvY2F0b3IpO1xuICB9XG5cbiAgdG9KU09OKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIGVsZW1lbnRUeXBlOiB0aGlzLmVsZW1lbnRUeXBlLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCB7XG4gIEVsZW1lbnRMb2NhdG9yLFxuICBaZXN0U3RhdGVtZW50LFxuICBaZXN0U3RhdGVtZW50Q29tbWVudCxcbiAgWmVzdFN0YXRlbWVudExhdW5jaEJyb3dzZXIsXG4gIFplc3RTdGF0ZW1lbnRFbGVtZW50TW91c2VPdmVyLFxuICBaZXN0U3RhdGVtZW50RWxlbWVudENsaWNrLFxuICBaZXN0U3RhdGVtZW50U3dpdGNoVG9GcmFtZSxcbiAgWmVzdFN0YXRlbWVudEVsZW1lbnRTY3JvbGxUbyxcbiAgWmVzdFN0YXRlbWVudEVsZW1lbnRTZW5kS2V5cyxcbiAgWmVzdFN0YXRlbWVudEVsZW1lbnRTdWJtaXQsXG4gIFplc3RTdGF0ZW1lbnRFbGVtZW50Q2xlYXIsXG4gIFplc3RTdGF0ZW1lbnRXaW5kb3dDbG9zZSxcbn07XG4iLCIvKlxuICogWmVkIEF0dGFjayBQcm94eSAoWkFQKSBhbmQgaXRzIHJlbGF0ZWQgc291cmNlIGZpbGVzLlxuICpcbiAqIFpBUCBpcyBhbiBIVFRQL0hUVFBTIHByb3h5IGZvciBhc3Nlc3Npbmcgd2ViIGFwcGxpY2F0aW9uIHNlY3VyaXR5LlxuICpcbiAqIENvcHlyaWdodCAyMDIzIFRoZSBaQVAgRGV2ZWxvcG1lbnQgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtFbGVtZW50TG9jYXRvcn0gZnJvbSAnLi4vdHlwZXMvemVzdFNjcmlwdC9aZXN0U3RhdGVtZW50JztcbmltcG9ydCB7WkFQX0ZMT0FUSU5HX0RJVn0gZnJvbSAnLi4vdXRpbHMvY29uc3RhbnRzJztcbmltcG9ydCB7SW50ZXJhY3RhYmxlU3RhdGV9IGZyb20gJy4uL3R5cGVzL1JlcG9ydGVkTW9kZWwnO1xuXG5jb25zdCBkeW5hbWljQ2xhc3NFbGVtZW50cyA9IG5ldyBXZWFrU2V0PEVsZW1lbnQ+KCk7XG5jb25zdCBpbnB1dENsYXNzU25hcHNob3RzID0gbmV3IFdlYWtNYXA8RWxlbWVudCwgc3RyaW5nPigpO1xuXG5mdW5jdGlvbiBtYXJrQ2xhc3NBc0R5bmFtaWMoZWxlbWVudDogRWxlbWVudCk6IHZvaWQge1xuICBkeW5hbWljQ2xhc3NFbGVtZW50cy5hZGQoZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIHNuYXBzaG90SW5wdXRDbGFzcyhlbGVtZW50OiBFbGVtZW50KTogdm9pZCB7XG4gIGlmICghaW5wdXRDbGFzc1NuYXBzaG90cy5oYXMoZWxlbWVudCkpIHtcbiAgICBpbnB1dENsYXNzU25hcHNob3RzLnNldChlbGVtZW50LCBlbGVtZW50LmdldEF0dHJpYnV0ZSgnY2xhc3MnKSA/PyAnJyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFzQ2xhc3NDaGFuZ2VkU2luY2VTbmFwc2hvdChlbGVtZW50OiBFbGVtZW50KTogYm9vbGVhbiB7XG4gIGlmICghaW5wdXRDbGFzc1NuYXBzaG90cy5oYXMoZWxlbWVudCkpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIChcbiAgICBpbnB1dENsYXNzU25hcHNob3RzLmdldChlbGVtZW50KSAhPT0gKGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdjbGFzcycpID8/ICcnKVxuICApO1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRQYXRoVW5pcXVlKHBhdGg6IHN0cmluZywgZG9jdW1lbnRFbGVtZW50OiBEb2N1bWVudCk6IGJvb2xlYW4ge1xuICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKHBhdGgpO1xuICByZXR1cm4gZWxlbWVudHMubGVuZ3RoID09PSAxO1xufVxuXG5mdW5jdGlvbiBpc0VsZW1lbnRYUGF0aFVuaXF1ZShcbiAgeHBhdGg6IHN0cmluZyxcbiAgZG9jdW1lbnRFbGVtZW50OiBEb2N1bWVudFxuKTogYm9vbGVhbiB7XG4gIGNvbnN0IHJlc3VsdCA9IGRvY3VtZW50RWxlbWVudC5ldmFsdWF0ZShcbiAgICB4cGF0aCxcbiAgICBkb2N1bWVudEVsZW1lbnQsXG4gICAgbnVsbCxcbiAgICBYUGF0aFJlc3VsdC5PUkRFUkVEX05PREVfU05BUFNIT1RfVFlQRSxcbiAgICBudWxsXG4gICk7XG4gIHJldHVybiByZXN1bHQuc25hcHNob3RMZW5ndGggPT09IDE7XG59XG5cbmZ1bmN0aW9uIGdldENTU1NlbGVjdG9yKFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgZG9jdW1lbnRFbGVtZW50OiBEb2N1bWVudFxuKTogc3RyaW5nIHtcbiAgbGV0IHNlbGVjdG9yID0gZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChzZWxlY3RvciA9PT0gJ2h0bWwnKSB7XG4gICAgc2VsZWN0b3IgPSAnYm9keSc7XG4gIH0gZWxzZSBpZiAoZWxlbWVudCA9PT0gZG9jdW1lbnRFbGVtZW50LmJvZHkpIHtcbiAgICBzZWxlY3RvciA9ICdib2R5JztcbiAgfSBlbHNlIGlmIChlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICBjb25zdCBwYXJlbnRTZWxlY3RvciA9IGdldENTU1NlbGVjdG9yKFxuICAgICAgZWxlbWVudC5wYXJlbnROb2RlIGFzIEhUTUxFbGVtZW50LFxuICAgICAgZG9jdW1lbnRFbGVtZW50XG4gICAgKTtcbiAgICBzZWxlY3RvciA9IGAke3BhcmVudFNlbGVjdG9yfSA+ICR7c2VsZWN0b3J9YDtcbiAgfVxuICByZXR1cm4gc2VsZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGlzWmFwRGl2KG5vZGU6IENoaWxkTm9kZSk6IGJvb2xlYW4ge1xuICBpZiAobm9kZSBpbnN0YW5jZW9mIEVsZW1lbnQpIHtcbiAgICByZXR1cm4gKG5vZGUgYXMgRWxlbWVudCkuZ2V0QXR0cmlidXRlKCdpZCcpID09PSBaQVBfRkxPQVRJTkdfRElWO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gc2FmZVhQYXRoU3RyaW5nKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIXZhbHVlLmluY2x1ZGVzKFwiJ1wiKSkge1xuICAgIHJldHVybiBgJyR7dmFsdWV9J2A7XG4gIH1cbiAgaWYgKCF2YWx1ZS5pbmNsdWRlcygnXCInKSkge1xuICAgIHJldHVybiBgXCIke3ZhbHVlfVwiYDtcbiAgfVxuICBjb25zdCBwYXJ0cyA9IHZhbHVlXG4gICAgLnNwbGl0KFwiJ1wiKVxuICAgIC5tYXAoKHBhcnQpID0+IGAnJHtwYXJ0fSdgKVxuICAgIC5qb2luKGAsIFwiJ1wiLCBgKTtcbiAgcmV0dXJuIGBjb25jYXQoJHtwYXJ0c30pYDtcbn1cblxuZnVuY3Rpb24gZ2V0Rm9ybUFic29sdXRlWFBhdGgoXG4gIGZvcm06IEhUTUxFbGVtZW50LFxuICBkb2N1bWVudEVsZW1lbnQ6IERvY3VtZW50XG4pOiBzdHJpbmcge1xuICBjb25zdCB7bmFtZX0gPSBmb3JtIGFzIEhUTUxGb3JtRWxlbWVudDtcbiAgaWYgKG5hbWUpIHtcbiAgICBjb25zdCBuYW1lWFBhdGggPSBgLy9mb3JtW0BuYW1lPSR7c2FmZVhQYXRoU3RyaW5nKG5hbWUpfV1gO1xuICAgIGlmIChpc0VsZW1lbnRYUGF0aFVuaXF1ZShuYW1lWFBhdGgsIGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBuYW1lWFBhdGg7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZm9ybXMgPSBkb2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2Zvcm0nKTtcbiAgbGV0IGluZGV4ID0gMTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBmb3Jtcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGlmIChmb3Jtc1tpXSA9PT0gZm9ybSkge1xuICAgICAgaW5kZXggPSBpICsgMTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYC8vZm9ybVske2luZGV4fV1gO1xufVxuXG5mdW5jdGlvbiBpc1VuaXF1ZUNsYXNzTmFtZShcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGRvY3VtZW50RWxlbWVudDogRG9jdW1lbnRcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gKFxuICAgIGVsZW1lbnQuY2xhc3NMaXN0Lmxlbmd0aCA9PT0gMSAmJlxuICAgIGVsZW1lbnQuY2xhc3NMaXN0Lml0ZW0oMCkgIT0gbnVsbCAmJlxuICAgICFkeW5hbWljQ2xhc3NFbGVtZW50cy5oYXMoZWxlbWVudCkgJiZcbiAgICAhaGFzQ2xhc3NDaGFuZ2VkU2luY2VTbmFwc2hvdChlbGVtZW50KSAmJlxuICAgIGlzRWxlbWVudFBhdGhVbmlxdWUoYC4ke2VsZW1lbnQuY2xhc3NMaXN0Lml0ZW0oMCl9YCwgZG9jdW1lbnRFbGVtZW50KVxuICApO1xufVxuXG5mdW5jdGlvbiBidWlsZEZ1bGxYUGF0aChcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gIGRvY3VtZW50RWxlbWVudDogRG9jdW1lbnRcbik6IHN0cmluZyB7XG4gIGlmICghZWxlbWVudC50YWdOYW1lKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgbGV0IHNlbGVjdG9yID0gZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKGVsZW1lbnQuaWQgJiYgaXNFbGVtZW50WFBhdGhVbmlxdWUoc2VsZWN0b3IsIGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICBzZWxlY3RvciArPSBgW0BpZD0ke3NhZmVYUGF0aFN0cmluZyhlbGVtZW50LmlkKX1dYDtcbiAgfSBlbHNlIHtcbiAgICBsZXQgaW5kZXggPSAxO1xuICAgIGxldCBzaWJsaW5nID0gZWxlbWVudC5wcmV2aW91c1NpYmxpbmc7XG4gICAgbGV0IGlzVW5pcXVlID0gdHJ1ZTtcbiAgICB3aGlsZSAoc2libGluZykge1xuICAgICAgaWYgKFxuICAgICAgICBzaWJsaW5nLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJlxuICAgICAgICBzaWJsaW5nLm5vZGVOYW1lID09PSBlbGVtZW50Lm5vZGVOYW1lICYmXG4gICAgICAgICFpc1phcERpdihzaWJsaW5nKVxuICAgICAgKSB7XG4gICAgICAgIGluZGV4ICs9IDE7XG4gICAgICAgIGlzVW5pcXVlID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBzaWJsaW5nID0gc2libGluZy5wcmV2aW91c1NpYmxpbmc7XG4gICAgfVxuXG4gICAgaWYgKGlzVW5pcXVlKSB7XG4gICAgICBzaWJsaW5nID0gZWxlbWVudC5uZXh0U2libGluZztcbiAgICAgIHdoaWxlIChzaWJsaW5nKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBzaWJsaW5nLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJlxuICAgICAgICAgIHNpYmxpbmcubm9kZU5hbWUgPT09IGVsZW1lbnQubm9kZU5hbWVcbiAgICAgICAgKSB7XG4gICAgICAgICAgaXNVbmlxdWUgPSBmYWxzZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzaWJsaW5nID0gc2libGluZy5uZXh0U2libGluZztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5kZXggIT09IDEgfHwgIWlzVW5pcXVlKSB7XG4gICAgICBzZWxlY3RvciArPSBgWyR7aW5kZXh9XWA7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVsZW1lbnQucGFyZW50Tm9kZSkge1xuICAgIGNvbnN0IHBhcmVudFNlbGVjdG9yID0gYnVpbGRGdWxsWFBhdGgoXG4gICAgICBlbGVtZW50LnBhcmVudE5vZGUgYXMgSFRNTEVsZW1lbnQsXG4gICAgICBkb2N1bWVudEVsZW1lbnRcbiAgICApO1xuICAgIHNlbGVjdG9yID0gYCR7cGFyZW50U2VsZWN0b3J9LyR7c2VsZWN0b3J9YDtcbiAgfVxuICByZXR1cm4gc2VsZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGdldFhQYXRoKGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBkb2N1bWVudEVsZW1lbnQ6IERvY3VtZW50KTogc3RyaW5nIHtcbiAgaWYgKCFlbGVtZW50LnRhZ05hbWUpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCB0YWcgPSBlbGVtZW50LnRhZ05hbWU7XG5cbiAgaWYgKHRhZyA9PT0gJ0EnKSB7XG4gICAgY29uc3QgdGV4dCA9IGVsZW1lbnQudGV4dENvbnRlbnQ7XG4gICAgaWYgKHRleHQpIHtcbiAgICAgIGNvbnN0IHRleHRYUGF0aCA9IGAvL2FbdGV4dCgpPSR7c2FmZVhQYXRoU3RyaW5nKHRleHQpfV1gO1xuICAgICAgaWYgKGlzRWxlbWVudFhQYXRoVW5pcXVlKHRleHRYUGF0aCwgZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gdGV4dFhQYXRoO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBidWlsZEZ1bGxYUGF0aChlbGVtZW50LCBkb2N1bWVudEVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBnZXRQYXRoKFxuICBlbGVtZW50OiBIVE1MRWxlbWVudCxcbiAgZG9jdW1lbnRFbGVtZW50OiBEb2N1bWVudFxuKTogRWxlbWVudExvY2F0b3Ige1xuICBjb25zdCBwYXRoOiBFbGVtZW50TG9jYXRvciA9IG5ldyBFbGVtZW50TG9jYXRvcignJywgJycpO1xuXG4gIGlmIChlbGVtZW50LnRhZ05hbWUgPT09ICdGT1JNJykge1xuICAgIHBhdGgudHlwZSA9ICd4cGF0aCc7XG4gICAgcGF0aC5lbGVtZW50ID0gZ2V0Rm9ybUFic29sdXRlWFBhdGgoZWxlbWVudCwgZG9jdW1lbnRFbGVtZW50KTtcbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuXG4gIGNvbnN0IGxhYmVsYWJsZSA9IGVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgaWYgKGxhYmVsYWJsZS5sYWJlbHM/Lmxlbmd0aCkge1xuICAgIGNvbnN0IGZpcnN0TGFiZWwgPSBsYWJlbGFibGUubGFiZWxzWzBdIGFzIEhUTUxMYWJlbEVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dCA9IGZpcnN0TGFiZWwudGV4dENvbnRlbnQ7XG4gICAgaWYgKHRleHQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IGVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3QgbGFiZWxYUGF0aCA9IGAvLyR7dGFnfVtAaWQ9Ly9sYWJlbFt0ZXh0KCk9JHtzYWZlWFBhdGhTdHJpbmcodGV4dCl9XS9AZm9yXWA7XG4gICAgICBpZiAoaXNFbGVtZW50WFBhdGhVbmlxdWUobGFiZWxYUGF0aCwgZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgICBwYXRoLnR5cGUgPSAneHBhdGgnO1xuICAgICAgICBwYXRoLmVsZW1lbnQgPSBsYWJlbFhQYXRoO1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZWxlbWVudC5pZCkge1xuICAgIHBhdGgudHlwZSA9ICdpZCc7XG4gICAgcGF0aC5lbGVtZW50ID0gZWxlbWVudC5pZDtcbiAgfSBlbHNlIGlmIChpc1VuaXF1ZUNsYXNzTmFtZShlbGVtZW50LCBkb2N1bWVudEVsZW1lbnQpKSB7XG4gICAgcGF0aC50eXBlID0gJ2NsYXNzTmFtZSc7XG4gICAgcGF0aC5lbGVtZW50ID0gYCR7ZWxlbWVudC5jbGFzc0xpc3QuaXRlbSgwKX1gO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gZ2V0Q1NTU2VsZWN0b3IoZWxlbWVudCwgZG9jdW1lbnRFbGVtZW50KTtcbiAgICBpZiAoc2VsZWN0b3IgJiYgaXNFbGVtZW50UGF0aFVuaXF1ZShzZWxlY3RvciwgZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgcGF0aC50eXBlID0gJ2Nzc1NlbGVjdG9yJztcbiAgICAgIHBhdGguZWxlbWVudCA9IHNlbGVjdG9yO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB4cGF0aCA9IGdldFhQYXRoKGVsZW1lbnQsIGRvY3VtZW50RWxlbWVudCk7XG4gICAgICBpZiAoeHBhdGgpIHtcbiAgICAgICAgcGF0aC50eXBlID0gJ3hwYXRoJztcbiAgICAgICAgcGF0aC5lbGVtZW50ID0geHBhdGg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHBhdGg7XG59XG5cbmNvbnN0IElOVEVSQUNUQUJMRV9UQUdfTkFNRVMgPSBuZXcgU2V0KFtcbiAgJ0lOUFVUJyxcbiAgJ1RFWFRBUkVBJyxcbiAgJ1NFTEVDVCcsXG4gICdCVVRUT04nLFxuICAnQScsXG5dKTtcblxuZnVuY3Rpb24gaGFzSW50ZXJhY3RhYmxlVGFnQW5jZXN0b3IoZWw6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgbGV0IHBhcmVudCA9IGVsLnBhcmVudEVsZW1lbnQ7XG4gIGxldCBkZXB0aCA9IDA7XG4gIC8vIERvIG5vdCB0cmF2ZXJzZSB0aGUgd2hvbGUgdHJlZS5cbiAgd2hpbGUgKHBhcmVudCAmJiBkZXB0aCA8IDE1KSB7XG4gICAgaWYgKElOVEVSQUNUQUJMRV9UQUdfTkFNRVMuaGFzKHBhcmVudC50YWdOYW1lKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnRFbGVtZW50O1xuICAgIGRlcHRoICs9IDE7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBoYXNQb2ludGVyU3R5bGUoZWw6IEVsZW1lbnQpOiBib29sZWFuIHtcbiAgY29uc3QgY29tcFN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsLCAnaG92ZXInKTtcbiAgcmV0dXJuIGNvbXBTdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZSgnY3Vyc29yJykgPT09ICdwb2ludGVyJztcbn1cblxuZnVuY3Rpb24gaXNIaWRkZW5CeVBhcmVudChlbDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgbGV0IG5vZGU6IEhUTUxFbGVtZW50IHwgbnVsbCA9IGVsO1xuICB3aGlsZSAobm9kZSkge1xuICAgIGNvbnN0IG5vZGVTdHlsZSA9IG5vZGUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldz8uZ2V0Q29tcHV0ZWRTdHlsZShub2RlKTtcbiAgICBpZiAoXG4gICAgICBub2RlU3R5bGU/LmRpc3BsYXkgPT09ICdub25lJyB8fFxuICAgICAgbm9kZVN0eWxlPy5vcGFjaXR5ID09PSAnMCcgfHxcbiAgICAgIChub2RlU3R5bGUgYXMgQ1NTU3R5bGVEZWNsYXJhdGlvbiAmIHtjb250ZW50VmlzaWJpbGl0eT86IHN0cmluZ30pXG4gICAgICAgID8uY29udGVudFZpc2liaWxpdHkgPT09ICdoaWRkZW4nXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgbm9kZSA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldEludGVyYWN0YWJsZVN0YXRlKGVsOiBFbGVtZW50KTogSW50ZXJhY3RhYmxlU3RhdGUge1xuICBpZiAoIShlbCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSkge1xuICAgIHJldHVybiB7dmlzaWJsZTogZmFsc2UsIGVuYWJsZWQ6IGZhbHNlLCBwb2ludGVyOiBmYWxzZX07XG4gIH1cblxuICBjb25zdCBlbmFibGVkID1cbiAgICAhKGVsIGFzIEhUTUxFbGVtZW50ICYge2Rpc2FibGVkPzogYm9vbGVhbn0pLmRpc2FibGVkICYmXG4gICAgZWwuZ2V0QXR0cmlidXRlKCdhcmlhLWRpc2FibGVkJykgIT09ICd0cnVlJztcblxuICBjb25zdCBzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWwpO1xuICBjb25zdCB2aXNpYmxlID1cbiAgICBlbC5nZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykgIT09ICd0cnVlJyAmJlxuICAgIHMuZGlzcGxheSAhPT0gJ25vbmUnICYmXG4gICAgcy52aXNpYmlsaXR5ICE9PSAnaGlkZGVuJyAmJlxuICAgIHMudmlzaWJpbGl0eSAhPT0gJ2NvbGxhcHNlJyAmJlxuICAgIHMub3BhY2l0eSAhPT0gJzAnICYmXG4gICAgKGVsLm9mZnNldFdpZHRoID4gMCB8fCBlbC5vZmZzZXRIZWlnaHQgPiAwKSAmJlxuICAgICFpc0hpZGRlbkJ5UGFyZW50KGVsKTtcbiAgY29uc3QgcG9pbnRlciA9IGhhc1BvaW50ZXJTdHlsZShlbCk7XG5cbiAgcmV0dXJuIHt2aXNpYmxlLCBlbmFibGVkLCBwb2ludGVyfTtcbn1cblxuZXhwb3J0IHtcbiAgZ2V0UGF0aCxcbiAgaGFzUG9pbnRlclN0eWxlLFxuICBnZXRJbnRlcmFjdGFibGVTdGF0ZSxcbiAgaGFzSW50ZXJhY3RhYmxlVGFnQW5jZXN0b3IsXG4gIElOVEVSQUNUQUJMRV9UQUdfTkFNRVMsXG4gIG1hcmtDbGFzc0FzRHluYW1pYyxcbiAgc2FmZVhQYXRoU3RyaW5nLFxuICBzbmFwc2hvdElucHV0Q2xhc3MsXG59O1xuIiwiLypcbiAqIFplZCBBdHRhY2sgUHJveHkgKFpBUCkgYW5kIGl0cyByZWxhdGVkIHNvdXJjZSBmaWxlcy5cbiAqXG4gKiBaQVAgaXMgYW4gSFRUUC9IVFRQUyBwcm94eSBmb3IgYXNzZXNzaW5nIHdlYiBhcHBsaWNhdGlvbiBzZWN1cml0eS5cbiAqXG4gKiBDb3B5cmlnaHQgMjAyMyBUaGUgWkFQIERldmVsb3BtZW50IFRlYW1cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCBkZWJvdW5jZSBmcm9tICdsb2Rhc2gvZGVib3VuY2UnO1xuaW1wb3J0IEJyb3dzZXIgZnJvbSAnd2ViZXh0ZW5zaW9uLXBvbHlmaWxsJztcbmltcG9ydCB7XG4gIEVsZW1lbnRMb2NhdG9yLFxuICBaZXN0U3RhdGVtZW50LFxuICBaZXN0U3RhdGVtZW50Q29tbWVudCxcbiAgWmVzdFN0YXRlbWVudEVsZW1lbnRDbGljayxcbiAgWmVzdFN0YXRlbWVudEVsZW1lbnRTY3JvbGxUbyxcbiAgWmVzdFN0YXRlbWVudEVsZW1lbnRTZW5kS2V5cyxcbiAgWmVzdFN0YXRlbWVudEVsZW1lbnRTdWJtaXQsXG4gIFplc3RTdGF0ZW1lbnRMYXVuY2hCcm93c2VyLFxuICBaZXN0U3RhdGVtZW50U3dpdGNoVG9GcmFtZSxcbn0gZnJvbSAnLi4vdHlwZXMvemVzdFNjcmlwdC9aZXN0U3RhdGVtZW50JztcbmltcG9ydCB7WmVzdFNjcmlwdE1lc3NhZ2V9IGZyb20gJy4uL3R5cGVzL3plc3RTY3JpcHQvWmVzdFNjcmlwdCc7XG5pbXBvcnQge2dldFBhdGgsIG1hcmtDbGFzc0FzRHluYW1pYywgc25hcHNob3RJbnB1dENsYXNzfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHtkb3dubG9hZEpzb259IGZyb20gJy4uL3V0aWxzL3V0aWwnO1xuaW1wb3J0IHtcbiAgR0VUX1pFU1RfU0NSSVBULFxuICBTVE9QX1JFQ09SRElORyxcbiAgWkFQX0ZMT0FUSU5HX0RJVixcbiAgWkFQX0ZMT0FUSU5HX0RJVl9FTEVNRU5UUyxcbiAgWkVTVF9TQ1JJUFQsXG59IGZyb20gJy4uL3V0aWxzL2NvbnN0YW50cyc7XG5cbmNvbnN0IFNUT1BfUkVDT1JESU5HX0lEID0gJ1pBUC1zdG9wLXJlY29yZGluZy1idXR0b24nO1xuY29uc3QgU1RPUF9SRUNPUkRJTkdfVEVYVCA9ICdTdG9wIGFuZCBEb3dubG9hZCBSZWNvcmRpbmcnO1xuXG5jbGFzcyBSZWNvcmRlciB7XG4gIHJlYWRvbmx5IHRpbWVBZGp1c3RtZW50TWlsbGlzOiBudW1iZXIgPSAzMDAwO1xuXG4gIHJlYWRvbmx5IG1pbmltdW1XYWl0VGltZUluTWlsbGlzOiBudW1iZXIgPSA1MDAwO1xuXG4gIHByZXZpb3VzRE9NU3RhdGU6IHN0cmluZztcblxuICBjdXJMZXZlbCA9IC0xO1xuXG4gIGN1ckZyYW1lID0gMDtcblxuICBhY3RpdmUgPSBmYWxzZTtcblxuICBoYXZlTGlzdGVuZXJzQmVlbkFkZGVkID0gZmFsc2U7XG5cbiAgZmxvYXRpbmdXaW5kb3dJbnNlcnRlZCA9IGZhbHNlO1xuXG4gIGlzTm90aWZpY2F0aW9uUmFpc2VkID0gZmFsc2U7XG5cbiAgLy8gRW50ZXIga2V5ZG93biBldmVudHMgb2Z0ZW4gb2NjdXIgYmVmb3JlIHRoZSBpbnB1dCBjaGFuZ2UgZXZlbnRzLCBzbyB3ZSByZW9yZGVyIHRoZW0gaWYgbmVlZGVkXG4gIGNhY2hlZFN1Ym1pdD86IFplc3RTdGF0ZW1lbnRFbGVtZW50U3VibWl0O1xuXG4gIC8vIFdlIGNhbiBnZXQgZHVwbGljYXRlIGV2ZW50cyBmb3IgdGhlIGVudGVyIGtleSwgdGhpcyBhbGxvd3MgdXMgdG8gZGVkdXAgdGhlbVxuICBjYWNoZWRUaW1lU3RhbXAgPSAtMTtcblxuICBsYXN0U3RhdGVtZW50VGltZTogbnVtYmVyO1xuXG4gIGxhc3RVc2VySW50ZXJhY3Rpb25UaW1lID0gMDtcblxuICBsYXN0TW91c2VEb3duVGFyZ2V0OiBFdmVudFRhcmdldCB8IG51bGwgPSBudWxsO1xuXG4gIHJlYWRvbmx5IFVTRVJfSU5URVJBQ1RJT05fV0lORE9XX01TID0gNTAwO1xuXG4gIHBlbmRpbmdTeW50aGV0aWNDbGlja1RhcmdldDogRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gIHBlbmRpbmdTeW50aGV0aWNDbGlja1RpbWVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuXG4gIGFzeW5jIHNlbmRaZXN0U2NyaXB0VG9aQVAoXG4gICAgemVzdFN0YXRlbWVudDogWmVzdFN0YXRlbWVudCxcbiAgICBwYXJhbXM6IHtzZW5kQ2FjaGU6IGJvb2xlYW47IG5vdGlmeTogYm9vbGVhbn1cbiAgKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICBpZiAocGFyYW1zLnNlbmRDYWNoZSkge1xuICAgICAgdGhpcy5oYW5kbGVDYWNoZWRTdWJtaXQoKTtcbiAgICB9XG4gICAgLy8gY29uc29sZS5sb2coJ1pBUCBTZW5kaW5nIHN0YXRlbWVudCcsIHplc3RTdGF0ZW1lbnQpO1xuICAgIGlmIChwYXJhbXMubm90aWZ5KSB7XG4gICAgICB0aGlzLm5vdGlmeSh6ZXN0U3RhdGVtZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIEJyb3dzZXIucnVudGltZS5zZW5kTWVzc2FnZSh7XG4gICAgICB0eXBlOiBaRVNUX1NDUklQVCxcbiAgICAgIGRhdGE6IHplc3RTdGF0ZW1lbnQudG9KU09OKCksXG4gICAgfSk7XG4gIH1cblxuICBnZXRXYWl0ZWQoKTogbnVtYmVyIHtcbiAgICBpZiAodGhpcy5sYXN0U3RhdGVtZW50VGltZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMubGFzdFN0YXRlbWVudFRpbWUgPT09IDApIHtcbiAgICAgIHRoaXMubGFzdFN0YXRlbWVudFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIH1cbiAgICAvLyBBZGp1c3Qgc3RhcnQgdGltZVxuICAgIGNvbnN0IGxhc3RTdG10VGltZSA9IHRoaXMubGFzdFN0YXRlbWVudFRpbWUgLSB0aGlzLnRpbWVBZGp1c3RtZW50TWlsbGlzO1xuICAgIC8vIFJvdW5kIHRvIG5lYXJlc3QgbWluaW11bSAoaW4gbWlsbGlzKVxuICAgIGNvbnN0IHdhaXRlZCA9XG4gICAgICBNYXRoLmNlaWwoKERhdGUubm93KCkgLSBsYXN0U3RtdFRpbWUpIC8gdGhpcy5taW5pbXVtV2FpdFRpbWVJbk1pbGxpcykgKlxuICAgICAgdGhpcy5taW5pbXVtV2FpdFRpbWVJbk1pbGxpcztcbiAgICB0aGlzLmxhc3RTdGF0ZW1lbnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICByZXR1cm4gd2FpdGVkO1xuICB9XG5cbiAgc2VuZFNjcm9sbFRvVG9aYXAoZWxlbWVudExvY2F0b3I6IEVsZW1lbnRMb2NhdG9yLCB3YWl0Rm9yTXNlYzogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zZW5kWmVzdFNjcmlwdFRvWkFQKFxuICAgICAgbmV3IFplc3RTdGF0ZW1lbnRFbGVtZW50U2Nyb2xsVG8oZWxlbWVudExvY2F0b3IsIHdhaXRGb3JNc2VjKSxcbiAgICAgIHtzZW5kQ2FjaGU6IGZhbHNlLCBub3RpZnk6IGZhbHNlfVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVDYWNoZWRTdWJtaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FjaGVkU3VibWl0KSB7XG4gICAgICB0aGlzLnNlbmRTY3JvbGxUb1RvWmFwKFxuICAgICAgICB0aGlzLmNhY2hlZFN1Ym1pdC5lbGVtZW50TG9jYXRvcixcbiAgICAgICAgdGhpcy5nZXRXYWl0ZWQoKVxuICAgICAgKTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdaQVAgU2VuZGluZyBjYWNoZWQgc3VibWl0JywgdGhpcy5jYWNoZWRTdWJtaXQpO1xuICAgICAgdGhpcy5zZW5kWmVzdFNjcmlwdFRvWkFQKHRoaXMuY2FjaGVkU3VibWl0LCB7XG4gICAgICAgIHNlbmRDYWNoZTogZmFsc2UsXG4gICAgICAgIG5vdGlmeTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgZGVsZXRlIHRoaXMuY2FjaGVkU3VibWl0O1xuICAgICAgdGhpcy5jYWNoZWRUaW1lU3RhbXAgPSAtMTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVGcmFtZVN3aXRjaGVzKGxldmVsOiBudW1iZXIsIGZyYW1lSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1ckxldmVsID09PSBsZXZlbCAmJiB0aGlzLmN1ckZyYW1lID09PSBmcmFtZUluZGV4KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmN1ckxldmVsID4gbGV2ZWwpIHtcbiAgICAgIHdoaWxlICh0aGlzLmN1ckxldmVsID4gbGV2ZWwpIHtcbiAgICAgICAgdGhpcy5zZW5kWmVzdFNjcmlwdFRvWkFQKG5ldyBaZXN0U3RhdGVtZW50U3dpdGNoVG9GcmFtZSgtMSksIHtcbiAgICAgICAgICBzZW5kQ2FjaGU6IHRydWUsXG4gICAgICAgICAgbm90aWZ5OiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jdXJMZXZlbCAtPSAxO1xuICAgICAgfVxuICAgICAgdGhpcy5jdXJGcmFtZSA9IGZyYW1lSW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3VyTGV2ZWwgKz0gMTtcbiAgICAgIHRoaXMuY3VyRnJhbWUgPSBmcmFtZUluZGV4O1xuICAgICAgdGhpcy5zZW5kWmVzdFNjcmlwdFRvWkFQKG5ldyBaZXN0U3RhdGVtZW50U3dpdGNoVG9GcmFtZShmcmFtZUluZGV4KSwge1xuICAgICAgICBzZW5kQ2FjaGU6IHRydWUsXG4gICAgICAgIG5vdGlmeTogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodGhpcy5jdXJMZXZlbCAhPT0gbGV2ZWwpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdaQVAgRXJyb3IgaW4gc3dpdGNoaW5nIGZyYW1lcycpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUNsaWNrKFxuICAgIHBhcmFtczoge2xldmVsOiBudW1iZXI7IGZyYW1lOiBudW1iZXI7IGVsZW1lbnQ6IERvY3VtZW50fSxcbiAgICBldmVudDogRXZlbnRcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSByZXR1cm47XG4gICAgY29uc3Qge2xldmVsLCBmcmFtZSwgZWxlbWVudH0gPSBwYXJhbXM7XG4gICAgY29uc3QgY2xpY2tUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgRWxlbWVudDtcbiAgICB0aGlzLmhhbmRsZUZyYW1lU3dpdGNoZXMobGV2ZWwsIGZyYW1lKTtcbiAgICBjb25zb2xlLmxvZyhldmVudCwgJ1pBUCBjbGlja2VkJyk7XG5cbiAgICBpZiAoKGV2ZW50IGFzIE1vdXNlRXZlbnQpLmRldGFpbCA9PT0gMCkge1xuICAgICAgY29uc3QgdGltZVNpbmNlSW50ZXJhY3Rpb24gPSBEYXRlLm5vdygpIC0gdGhpcy5sYXN0VXNlckludGVyYWN0aW9uVGltZTtcbiAgICAgIGNvbnN0IG1vdXNlRG93bldhc09uVGFyZ2V0ID1cbiAgICAgICAgdGhpcy5sYXN0TW91c2VEb3duVGFyZ2V0ICE9PSBudWxsICYmXG4gICAgICAgIGNsaWNrVGFyZ2V0LmNvbnRhaW5zKHRoaXMubGFzdE1vdXNlRG93blRhcmdldCBhcyBOb2RlKTtcbiAgICAgIGlmIChcbiAgICAgICAgdGltZVNpbmNlSW50ZXJhY3Rpb24gPj0gdGhpcy5VU0VSX0lOVEVSQUNUSU9OX1dJTkRPV19NUyB8fFxuICAgICAgICAhbW91c2VEb3duV2FzT25UYXJnZXRcbiAgICAgICkge1xuICAgICAgICAvLyBQdXJlIHByb2dyYW1tYXRpYyBjbGljazogbm8gcmVjZW50IHVzZXIgaW50ZXJhY3Rpb24gb24gdGhpcyB0YXJnZXQuXG4gICAgICAgIGlmICh0aGlzLmNhY2hlZFN1Ym1pdCkge1xuICAgICAgICAgIHRoaXMuaGFuZGxlQ2FjaGVkU3VibWl0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gU3ludGhldGljIGNsaWNrIHdpdGggcmVjZW50IHVzZXIgaW50ZXJhY3Rpb24gb24gdGhpcyB0YXJnZXQuXG4gICAgICAvLyBEZWZlciByZWNvcmRpbmc6IGlmIHRoZSByZWFsIGNsaWNrIGFycml2ZXMgYmVmb3JlIHRoZSB0aW1lciBmaXJlcyB0aGVcbiAgICAgIC8vIHNpdGUgZmlyZWQgYW4gZXh0cmEgY2xpY2sgYnV0IGRpZG4ndCBzdXBwcmVzcyB0aGUgcmVhbCBvbmUsIHNvIHdlXG4gICAgICAvLyBkaXNjYXJkIHRoZSBzeW50aGV0aWMgYW5kIHJlY29yZCB0aGUgcmVhbCBjbGljayBpbnN0ZWFkLlxuICAgICAgY29uc3QgZWxlbWVudExvY2F0b3IgPSBnZXRQYXRoKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCwgZWxlbWVudCk7XG4gICAgICBpZiAodGhpcy5wZW5kaW5nU3ludGhldGljQ2xpY2tUaW1lciAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5wZW5kaW5nU3ludGhldGljQ2xpY2tUaW1lcik7XG4gICAgICB9XG4gICAgICB0aGlzLnBlbmRpbmdTeW50aGV0aWNDbGlja1RhcmdldCA9IGNsaWNrVGFyZ2V0O1xuICAgICAgdGhpcy5wZW5kaW5nU3ludGhldGljQ2xpY2tUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAvLyBObyByZWFsIGNsaWNrIGFycml2ZWQg4oCUIHNpdGUgc3VwcHJlc3NlZCBpdDsgcmVjb3JkIHRoZSBzeW50aGV0aWMuXG4gICAgICAgIHRoaXMucGVuZGluZ1N5bnRoZXRpY0NsaWNrVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wZW5kaW5nU3ludGhldGljQ2xpY2tUaW1lciA9IG51bGw7XG4gICAgICAgIGNvbnN0IHdhaXRlZCA9IHRoaXMuZ2V0V2FpdGVkKCk7XG4gICAgICAgIHRoaXMuc2VuZFNjcm9sbFRvVG9aYXAoZWxlbWVudExvY2F0b3IsIHdhaXRlZCk7XG4gICAgICAgIHRoaXMuc2VuZFplc3RTY3JpcHRUb1pBUChcbiAgICAgICAgICBuZXcgWmVzdFN0YXRlbWVudEVsZW1lbnRDbGljayhlbGVtZW50TG9jYXRvciwgd2FpdGVkKSxcbiAgICAgICAgICB7c2VuZENhY2hlOiB0cnVlLCBub3RpZnk6IHRydWV9XG4gICAgICAgICk7XG4gICAgICB9LCAwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBSZWFsIHVzZXIgY2xpY2sgKGRldGFpbCA+IDApLlxuICAgIC8vIElmIGEgc3ludGhldGljIHdhcyBwZW5kaW5nIGZvciB0aGlzIGV4YWN0IHRhcmdldCwgdGhlIHNpdGUgZmlyZWQgYW5cbiAgICAvLyBleHRyYSBjbGljayBidXQgZGlkIG5vdCBzdXBwcmVzcyB0aGUgcmVhbCBvbmUg4oCUIGRpc2NhcmQgdGhlIHN5bnRoZXRpYy5cbiAgICBpZiAoXG4gICAgICB0aGlzLnBlbmRpbmdTeW50aGV0aWNDbGlja1RhcmdldCAhPT0gbnVsbCAmJlxuICAgICAgdGhpcy5wZW5kaW5nU3ludGhldGljQ2xpY2tUYXJnZXQgPT09IGNsaWNrVGFyZ2V0XG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5wZW5kaW5nU3ludGhldGljQ2xpY2tUaW1lciAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5wZW5kaW5nU3ludGhldGljQ2xpY2tUaW1lcik7XG4gICAgICB9XG4gICAgICB0aGlzLnBlbmRpbmdTeW50aGV0aWNDbGlja1RhcmdldCA9IG51bGw7XG4gICAgICB0aGlzLnBlbmRpbmdTeW50aGV0aWNDbGlja1RpbWVyID0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB3YWl0ZWQgPSB0aGlzLmdldFdhaXRlZCgpO1xuICAgIGNvbnN0IGVsZW1lbnRMb2NhdG9yID0gZ2V0UGF0aChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQsIGVsZW1lbnQpO1xuICAgIHRoaXMuc2VuZFNjcm9sbFRvVG9aYXAoZWxlbWVudExvY2F0b3IsIHdhaXRlZCk7XG4gICAgdGhpcy5zZW5kWmVzdFNjcmlwdFRvWkFQKFxuICAgICAgbmV3IFplc3RTdGF0ZW1lbnRFbGVtZW50Q2xpY2soZWxlbWVudExvY2F0b3IsIHdhaXRlZCksXG4gICAgICB7c2VuZENhY2hlOiB0cnVlLCBub3RpZnk6IHRydWV9XG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZVVzZXJJbnRlcmFjdGlvbihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmxhc3RVc2VySW50ZXJhY3Rpb25UaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLmxhc3RNb3VzZURvd25UYXJnZXQgPSBldmVudC50YXJnZXQ7XG4gIH1cblxuICBoYW5kbGVTY3JvbGwocGFyYW1zOiB7bGV2ZWw6IG51bWJlcjsgZnJhbWU6IG51bWJlcn0sIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zaG91bGRSZWNvcmQoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkgcmV0dXJuO1xuICAgIGNvbnN0IHtsZXZlbCwgZnJhbWV9ID0gcGFyYW1zO1xuICAgIHRoaXMuaGFuZGxlRnJhbWVTd2l0Y2hlcyhsZXZlbCwgZnJhbWUpO1xuICAgIGNvbnNvbGUubG9nKGV2ZW50LCAnWkFQIHNjcm9sbGluZy4uICcpO1xuICAgIC8vIHNjcm9sbCB0aGUgbmVhcmVzdCBhbmNlc3RvciB3aXRoIHNjcm9sbGluZyBhYmlsaXR5XG4gIH1cblxuICBoYW5kbGVNb3VzZU92ZXIoXG4gICAgcGFyYW1zOiB7bGV2ZWw6IG51bWJlcjsgZnJhbWU6IG51bWJlcjsgZWxlbWVudDogRG9jdW1lbnR9LFxuICAgIGV2ZW50OiBFdmVudFxuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2hvdWxkUmVjb3JkKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHJldHVybjtcbiAgICBjb25zdCB7bGV2ZWwsIGZyYW1lLCBlbGVtZW50fSA9IHBhcmFtcztcbiAgICBjb25zdCBjdXJyZW50RE9NU3RhdGUgPSBlbGVtZW50LmRvY3VtZW50RWxlbWVudC5vdXRlckhUTUw7XG4gICAgaWYgKGN1cnJlbnRET01TdGF0ZSA9PT0gdGhpcy5wcmV2aW91c0RPTVN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucHJldmlvdXNET01TdGF0ZSA9IGN1cnJlbnRET01TdGF0ZTtcbiAgICB0aGlzLmhhbmRsZUZyYW1lU3dpdGNoZXMobGV2ZWwsIGZyYW1lKTtcbiAgICBjb25zb2xlLmxvZyhldmVudCwgJ1pBUCBNb3VzZU92ZXInKTtcbiAgICAvLyBzZW5kIG1vdXNlb3ZlciBldmVudFxuICB9XG5cbiAgaGFuZGxlQ2hhbmdlKFxuICAgIHBhcmFtczoge2xldmVsOiBudW1iZXI7IGZyYW1lOiBudW1iZXI7IGVsZW1lbnQ6IERvY3VtZW50fSxcbiAgICBldmVudDogRXZlbnRcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSByZXR1cm47XG4gICAgY29uc3Qge2xldmVsLCBmcmFtZSwgZWxlbWVudH0gPSBwYXJhbXM7XG4gICAgY29uc3Qgd2FpdGVkOiBudW1iZXIgPSB0aGlzLmdldFdhaXRlZCgpO1xuICAgIHRoaXMuaGFuZGxlRnJhbWVTd2l0Y2hlcyhsZXZlbCwgZnJhbWUpO1xuICAgIGNvbnNvbGUubG9nKGV2ZW50LCAnWkFQIGNoYW5nZScsIChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpO1xuICAgIGNvbnN0IGVsZW1lbnRMb2NhdG9yID0gZ2V0UGF0aChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQsIGVsZW1lbnQpO1xuICAgIC8vIFNlbmQgdGhlIGtleXMgYmVmb3JlIGEgY2FjaGVkIHN1Ym1pdCBzdGF0ZW1lbnQgb24gdGhlIHNhbWUgZWxlbWVudFxuICAgIGlmIChcbiAgICAgIHRoaXMuY2FjaGVkU3VibWl0ICYmXG4gICAgICB0aGlzLmNhY2hlZFN1Ym1pdC5lbGVtZW50TG9jYXRvci5lbGVtZW50ICE9PSBlbGVtZW50TG9jYXRvci5lbGVtZW50XG4gICAgKSB7XG4gICAgICAvLyBUaGUgY2FjaGVkIHN1Ym1pdCB3YXMgbm90IG9uIHRoZSBzYW1lIGVsZW1lbnQsIHNvIHNlbmQgaXRcbiAgICAgIHRoaXMuaGFuZGxlQ2FjaGVkU3VibWl0KCk7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MU2VsZWN0RWxlbWVudDtcbiAgICBjb25zdCBrZXlzID1cbiAgICAgIHNlbGVjdC50YWdOYW1lID09PSAnU0VMRUNUJ1xuICAgICAgICA/ICgoc2VsZWN0LnNlbGVjdGVkT3B0aW9uc1swXSBhcyBIVE1MT3B0aW9uRWxlbWVudCB8IHVuZGVmaW5lZCk/LnRleHQgPz9cbiAgICAgICAgICAnJylcbiAgICAgICAgOiAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIHRoaXMuc2VuZFNjcm9sbFRvVG9aYXAoZWxlbWVudExvY2F0b3IsIHdhaXRlZCk7XG4gICAgdGhpcy5zZW5kWmVzdFNjcmlwdFRvWkFQKFxuICAgICAgbmV3IFplc3RTdGF0ZW1lbnRFbGVtZW50U2VuZEtleXMoZWxlbWVudExvY2F0b3IsIGtleXMsIHdhaXRlZCksXG4gICAgICB7c2VuZENhY2hlOiBmYWxzZSwgbm90aWZ5OiB0cnVlfVxuICAgICk7XG4gICAgLy8gTm93IHNlbmQgdGhlIGNhY2hlZCBzdWJtaXQsIGlmIHRoZXJlIHN0aWxsIGlzIG9uZVxuICAgIHRoaXMuaGFuZGxlQ2FjaGVkU3VibWl0KCk7XG4gIH1cblxuICBoYW5kbGVLZXlwcmVzcyhcbiAgICBwYXJhbXM6IHtsZXZlbDogbnVtYmVyOyBmcmFtZTogbnVtYmVyOyBlbGVtZW50OiBEb2N1bWVudH0sXG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnRcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNob3VsZFJlY29yZChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSByZXR1cm47XG4gICAgY29uc3Qge2VsZW1lbnR9ID0gcGFyYW1zO1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicpIHtcbiAgICAgIGlmICh0aGlzLmNhY2hlZFN1Ym1pdCAmJiB0aGlzLmNhY2hlZFRpbWVTdGFtcCA9PT0gZXZlbnQudGltZVN0YW1wKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdaQVAgSWdub3JpbmcgZHVwIEVudGVyIGV2ZW50JywgdGhpcy5jYWNoZWRTdWJtaXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmhhbmRsZUNhY2hlZFN1Ym1pdCgpO1xuICAgICAgY29uc3QgZWxlbWVudExvY2F0b3IgPSBnZXRQYXRoKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCwgZWxlbWVudCk7XG4gICAgICAvLyBjb25zb2xlLmxvZygnWkFQIEVudGVyIGtleSBwcmVzc2VkJywgZWxlbWVudExvY2F0b3IsIGV2ZW50LnRpbWVTdGFtcCk7XG4gICAgICAvLyBDYWNoZSB0aGUgc3RhdGVtZW50IGFzIGl0IG9mdGVuIG9jY3VycyBiZWZvcmUgdGhlIGNoYW5nZSBldmVudCBvY2N1cnNcbiAgICAgIHRoaXMuY2FjaGVkU3VibWl0ID0gbmV3IFplc3RTdGF0ZW1lbnRFbGVtZW50U3VibWl0KFxuICAgICAgICBlbGVtZW50TG9jYXRvcixcbiAgICAgICAgdGhpcy5nZXRXYWl0ZWQoKVxuICAgICAgKTtcbiAgICAgIHRoaXMuY2FjaGVkVGltZVN0YW1wID0gZXZlbnQudGltZVN0YW1wO1xuICAgICAgLy8gY29uc29sZS5sb2coJ1pBUCBDYWNoaW5nIHN1Ym1pdCcsIHRoaXMuY2FjaGVkU3VibWl0KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVSZXNpemUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZSkgcmV0dXJuO1xuICAgIGNvbnN0IHdpZHRoID1cbiAgICAgIHdpbmRvdy5pbm5lcldpZHRoIHx8XG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggfHxcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XG4gICAgY29uc3QgaGVpZ2h0ID1cbiAgICAgIHdpbmRvdy5pbm5lckhlaWdodCB8fFxuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCB8fFxuICAgICAgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQ7XG4gICAgLy8gc2VuZCB3aW5kb3cgcmVzaXplIGV2ZW50XG4gICAgY29uc29sZS5sb2coJ1pBUCBXaW5kb3cgUmVzaXplIDogJywgd2lkdGgsIGhlaWdodCk7XG4gIH1cblxuICBhZGRMaXN0ZW5lclRvSW5wdXRGaWVsZChcbiAgICBlbGVtZW50czogU2V0PEhUTUxFbGVtZW50PixcbiAgICBpbnB1dEZpZWxkOiBIVE1MRWxlbWVudCxcbiAgICBsZXZlbDogbnVtYmVyLFxuICAgIGZyYW1lOiBudW1iZXIsXG4gICAgZWxlbWVudDogRG9jdW1lbnRcbiAgKTogdm9pZCB7XG4gICAgaWYgKCFlbGVtZW50cy5oYXMoaW5wdXRGaWVsZCkpIHtcbiAgICAgIGVsZW1lbnRzLmFkZChpbnB1dEZpZWxkKTtcbiAgICAgIGlucHV0RmllbGQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2tleWRvd24nLFxuICAgICAgICB0aGlzLmhhbmRsZUtleXByZXNzLmJpbmQodGhpcywge2xldmVsLCBmcmFtZSwgZWxlbWVudH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZUZyYW1lTG9hZChwYXJhbXM6IHtcbiAgICBlbGVtZW50OiBIVE1MSUZyYW1lRWxlbWVudCB8IEhUTUxGcmFtZUVsZW1lbnQ7XG4gICAgbGV2ZWw6IG51bWJlcjtcbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IGZyYW1lID0gcGFyYW1zLmVsZW1lbnQ7XG4gICAgY29uc3QgZG9jID0gZnJhbWUuY29udGVudERvY3VtZW50IHx8IGZyYW1lLmNvbnRlbnRXaW5kb3c/LmRvY3VtZW50O1xuICAgIGlmIChkb2MgIT0gbnVsbCkge1xuICAgICAgdGhpcy5hZGRMaXN0ZW5lcnNUb0RvY3VtZW50KGRvYywgcGFyYW1zLmxldmVsLCB0aGlzLmluZGV4T2ZGcmFtZShmcmFtZSkpO1xuICAgIH1cbiAgfVxuXG4gIHByb2Nlc3NGcmFtZShmcmFtZTogRWxlbWVudCwgbGV2ZWw6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gZnJhbWUgYXMgSFRNTElGcmFtZUVsZW1lbnQgfCBIVE1MRnJhbWVFbGVtZW50O1xuICAgIGNvbnN0IGZyYW1lRG9jdW1lbnQgPSBodG1sRWxlbWVudC5jb250ZW50V2luZG93Py5kb2N1bWVudDtcbiAgICBpZiAoXG4gICAgICBmcmFtZURvY3VtZW50ICE9IG51bGwgJiZcbiAgICAgIGZyYW1lRG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJyAmJlxuICAgICAgLy8gQ2hyb21lL0VkZ2UgcmVwb3J0IGNvbXBsZXRlZCB3aXRoIGRpZmZlcmVudCBzcmNcbiAgICAgIGZyYW1lRG9jdW1lbnQuZG9jdW1lbnRVUkkgPT09IGh0bWxFbGVtZW50LnNyY1xuICAgICkge1xuICAgICAgdGhpcy5hZGRMaXN0ZW5lcnNUb0RvY3VtZW50KFxuICAgICAgICBmcmFtZURvY3VtZW50LFxuICAgICAgICBsZXZlbCxcbiAgICAgICAgdGhpcy5pbmRleE9mRnJhbWUoZnJhbWUpXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBmcmFtZS5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnbG9hZCcsXG4gICAgICAgIHRoaXMuaGFuZGxlRnJhbWVMb2FkLmJpbmQodGhpcywge1xuICAgICAgICAgIGVsZW1lbnQ6IGh0bWxFbGVtZW50LFxuICAgICAgICAgIGxldmVsLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgZG9tTXV0YXRlZDogTXV0YXRpb25DYWxsYmFjayA9IChtdXRhdGlvbnNMaXN0OiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICBtdXRhdGlvbnNMaXN0LmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBtdXRhdGlvbi50eXBlID09PSAnYXR0cmlidXRlcycgJiZcbiAgICAgICAgICBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lID09PSAnc3JjJ1xuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NGcmFtZShtdXRhdGlvbi50YXJnZXQgYXMgRWxlbWVudCwgbGV2ZWwpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihkb21NdXRhdGVkKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKGZyYW1lLCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgaW5kZXhPZkZyYW1lKGVsZW1lbnQ6IEVsZW1lbnQpOiBudW1iZXIge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaWYgKHdpbmRvdy5mcmFtZXNbaV0uZnJhbWVFbGVtZW50ID09PSBlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICBhZGRMaXN0ZW5lcnNUb0RvY3VtZW50KFxuICAgIGVsZW1lbnQ6IERvY3VtZW50LFxuICAgIGxldmVsOiBudW1iZXIsXG4gICAgZnJhbWU6IG51bWJlclxuICApOiB2b2lkIHtcbiAgICAvLyBBIGxpc3Qgb2YgYWxsIG9mIHRoZSB0ZXh0IGVsZW1lbnRzIHRoYXQgd2UgaGF2ZSBhZGRlZCBldmVudCBsaXN0ZW5lcnMgdG9cbiAgICBjb25zdCB0ZXh0RWxlbWVudHMgPSBuZXcgU2V0PEhUTUxFbGVtZW50PigpO1xuXG4gICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgIHRoaXMuaGFuZGxlQ2xpY2suYmluZCh0aGlzLCB7bGV2ZWwsIGZyYW1lLCBlbGVtZW50fSksXG4gICAgICB7XG4gICAgICAgIGNhcHR1cmU6IHRydWUsXG4gICAgICB9XG4gICAgKTtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnc2Nyb2xsJyxcbiAgICAgIGRlYm91bmNlKHRoaXMuaGFuZGxlU2Nyb2xsLmJpbmQodGhpcywge2xldmVsLCBmcmFtZSwgZWxlbWVudH0pLCAxMDAwKVxuICAgICk7XG4gICAgLy8gRG8gbm90IHRyYWNrIG1vdXNlIG92ZXIgZXZlbnRzIGZvciBub3csIHRoZXkgYXJlIG5vdCByZWNvcmRlZC5cbiAgICAvLyBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgLy8gICAnbW91c2VvdmVyJyxcbiAgICAvLyAgIHRoaXMuaGFuZGxlTW91c2VPdmVyLmJpbmQodGhpcywge2xldmVsLCBmcmFtZSwgZWxlbWVudH0pXG4gICAgLy8gKTtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnY2hhbmdlJyxcbiAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlLmJpbmQodGhpcywge2xldmVsLCBmcmFtZSwgZWxlbWVudH0pXG4gICAgKTtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAnbW91c2Vkb3duJyxcbiAgICAgIHRoaXMuaGFuZGxlVXNlckludGVyYWN0aW9uLmJpbmQodGhpcyksXG4gICAgICB7Y2FwdHVyZTogdHJ1ZX1cbiAgICApO1xuXG4gICAgLy8gQWRkIGxpc3RlbmVycyB0byBhbGwgdGhlIGZyYW1lc1xuICAgIGNvbnN0IGZyYW1lcyA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZnJhbWUsIGlmcmFtZScpO1xuICAgIGZyYW1lcy5mb3JFYWNoKChfZnJhbWUpID0+IHRoaXMucHJvY2Vzc0ZyYW1lKF9mcmFtZSwgbGV2ZWwgKyAxKSk7XG5cbiAgICAvLyBBZGQgbGlzdGVuZXJzIHRvIGFsbCBvZiB0aGUgdGV4dCBmaWVsZHNcbiAgICBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0JykuZm9yRWFjaCgoaW5wdXQpID0+IHtcbiAgICAgIHNuYXBzaG90SW5wdXRDbGFzcyhpbnB1dCk7XG4gICAgICB0aGlzLmFkZExpc3RlbmVyVG9JbnB1dEZpZWxkKHRleHRFbGVtZW50cywgaW5wdXQsIGxldmVsLCBmcmFtZSwgZWxlbWVudCk7XG4gICAgfSk7XG4gICAgLy8gT2JzZXJ2ZXIgY2FsbGJhY2sgZnVuY3Rpb24gdG8gaGFuZGxlIERPTSBtdXRhdGlvbnMgdG8gZGV0ZWN0IGFkZGVkIHRleHQgZmllbGRzXG4gICAgY29uc3QgZG9tTXV0YXRlZDogTXV0YXRpb25DYWxsYmFjayA9IChtdXRhdGlvbnNMaXN0OiBNdXRhdGlvblJlY29yZFtdKSA9PiB7XG4gICAgICBtdXRhdGlvbnNMaXN0LmZvckVhY2goKG11dGF0aW9uKSA9PiB7XG4gICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnY2hpbGRMaXN0Jykge1xuICAgICAgICAgIC8vIFVzZSBub2RlIHR5cGUgaW5zdGVhZCBvZiBpbnN0YW5jZW9mIGFzIGl0IGRvZXMgbm90IHdvcmsgcmVsaWFibHlcbiAgICAgICAgICBpZiAobXV0YXRpb24udGFyZ2V0Lm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgICAgICAgICAgLy8gTG9vayBmb3IgYWRkZWQgaW5wdXQgZWxlbWVudHNcbiAgICAgICAgICAgIGNvbnN0IGlucHV0cyA9IChtdXRhdGlvbi50YXJnZXQgYXMgRWxlbWVudCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXG4gICAgICAgICAgICAgICdpbnB1dCdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGlucHV0cy5sZW5ndGg7IGogKz0gMSkge1xuICAgICAgICAgICAgICBjb25zdCBpc05ld0lucHV0ID0gIXRleHRFbGVtZW50cy5oYXMoaW5wdXRzW2pdIGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgICAgc25hcHNob3RJbnB1dENsYXNzKGlucHV0c1tqXSk7XG4gICAgICAgICAgICAgIHRoaXMuYWRkTGlzdGVuZXJUb0lucHV0RmllbGQoXG4gICAgICAgICAgICAgICAgdGV4dEVsZW1lbnRzLFxuICAgICAgICAgICAgICAgIGlucHV0c1tqXSxcbiAgICAgICAgICAgICAgICBsZXZlbCxcbiAgICAgICAgICAgICAgICBmcmFtZSxcbiAgICAgICAgICAgICAgICBlbGVtZW50XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIC8vIElmIGEgbmV3bHkgYWRkZWQgaW5wdXQgYWxyZWFkeSBoYXMgYSB2YWx1ZSwgaXRzIHN0YXRlIGNsYXNzIHdhc1xuICAgICAgICAgICAgICAvLyBsaWtlbHkgc2V0IG9uIHRoZSBkZXRhY2hlZCBub2RlIGJlZm9yZSBpbnNlcnRpb24gYW5kIHdvbid0IGJlXG4gICAgICAgICAgICAgIC8vIGNhdWdodCBieSBjb21wYXJpbmcgYWdhaW5zdCB0aGUgc25hcHNob3QuXG4gICAgICAgICAgICAgIGlmIChpc05ld0lucHV0ICYmIChpbnB1dHNbal0gYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBtYXJrQ2xhc3NBc0R5bmFtaWMoaW5wdXRzW2pdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZG9tTXV0YXRlZCk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZShlbGVtZW50LCB7XG4gICAgICBhdHRyaWJ1dGVzOiBmYWxzZSxcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBpc1Zpc2libGUoZWw6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG5cbiAgICBpZiAoXG4gICAgICBzdHlsZS5kaXNwbGF5ID09PSAnbm9uZScgfHxcbiAgICAgIHN0eWxlLnZpc2liaWxpdHkgPT09ICdoaWRkZW4nIHx8XG4gICAgICBzdHlsZS5vcGFjaXR5ID09PSAnMCdcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBsYXlvdXQgZGltZW5zaW9uc1xuICAgIGlmIChlbC5vZmZzZXRXaWR0aCA8PSAwICYmIGVsLm9mZnNldEhlaWdodCA8PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcmVjdCA9IGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgLy8gQ2hlY2sgcmVuZGVyZWQgc2l6ZVxuICAgIGlmIChyZWN0LndpZHRoID09PSAwIHx8IHJlY3QuaGVpZ2h0ID09PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gVGhlIGVsZW1lbnQgaXMgcmVuZGVyZWQgYW5kIHZpc2libGUgaW4gbGF5b3V0IChtYXkgc3RpbGwgYmUgb2ZmLXNjcmVlbilcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHNob3VsZFJlY29yZChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5hY3RpdmUpIHJldHVybiB0aGlzLmFjdGl2ZTtcbiAgICBpZiAoZWxlbWVudC5jbGFzc05hbWUgPT09IFpBUF9GTE9BVElOR19ESVZfRUxFTUVOVFMpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5pc1Zpc2libGUoZWxlbWVudCk7XG4gIH1cblxuICBnZXRCcm93c2VyTmFtZSgpOiBzdHJpbmcge1xuICAgIGxldCBicm93c2VyTmFtZTogc3RyaW5nO1xuICAgIGNvbnN0IHt1c2VyQWdlbnR9ID0gbmF2aWdhdG9yO1xuICAgIGlmICh1c2VyQWdlbnQuaW5jbHVkZXMoJ0Nocm9tZScpKSB7XG4gICAgICBicm93c2VyTmFtZSA9ICdjaHJvbWUnO1xuICAgIH0gZWxzZSB7XG4gICAgICBicm93c2VyTmFtZSA9ICdmaXJlZm94JztcbiAgICB9XG4gICAgcmV0dXJuIGJyb3dzZXJOYW1lO1xuICB9XG5cbiAgaW5pdGlhbGl6YXRpb25TY3JpcHQobG9naW5VcmwgPSAnJywgc3RhcnRUaW1lID0gMCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKGBaQVAgaW5pdGlhbGl6YXRpb25TY3JpcHQgJHtsb2dpblVybH1gKTtcbiAgICBCcm93c2VyLnN0b3JhZ2Uuc3luYy5zZXQoe1xuICAgICAgaW5pdFNjcmlwdDogZmFsc2UsXG4gICAgICBsb2dpblVybDogJycsXG4gICAgICBzdGFydFRpbWU6IDAsXG4gICAgICBkb3dubG9hZFNjcmlwdDogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLmxhc3RTdGF0ZW1lbnRUaW1lID0gc3RhcnRUaW1lO1xuICAgIGNvbnN0IHN0b3BSZWNvcmRpbmdCdXR0b24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChTVE9QX1JFQ09SRElOR19JRCk7XG4gICAgaWYgKHN0b3BSZWNvcmRpbmdCdXR0b24pIHtcbiAgICAgIC8vIENhbiBoYXBwZW4gaWYgcmVjb3JkaW5nIHJlc3RhcnRlZCBpbiBicm93c2VyIGxhdW5jaGVkIGZyb20gWkFQIHJlY29yZGVyXG4gICAgICBzdG9wUmVjb3JkaW5nQnV0dG9uLnRleHRDb250ZW50ID0gU1RPUF9SRUNPUkRJTkdfVEVYVDtcbiAgICB9XG5cbiAgICB0aGlzLnNlbmRaZXN0U2NyaXB0VG9aQVAoXG4gICAgICBuZXcgWmVzdFN0YXRlbWVudENvbW1lbnQoXG4gICAgICAgIGBSZWNvcmRlZCBieSAke0Jyb3dzZXIucnVudGltZS5nZXRNYW5pZmVzdCgpLm5hbWV9IGAgK1xuICAgICAgICAgIGAke0Jyb3dzZXIucnVudGltZS5nZXRNYW5pZmVzdCgpLnZlcnNpb259IG9uICR7bmF2aWdhdG9yLnVzZXJBZ2VudH1gXG4gICAgICApLFxuICAgICAge3NlbmRDYWNoZTogdHJ1ZSwgbm90aWZ5OiB0cnVlfVxuICAgICk7XG4gICAgdGhpcy5zZW5kWmVzdFNjcmlwdFRvWkFQKFxuICAgICAgbmV3IFplc3RTdGF0ZW1lbnRMYXVuY2hCcm93c2VyKFxuICAgICAgICB0aGlzLmdldEJyb3dzZXJOYW1lKCksXG4gICAgICAgIGxvZ2luVXJsICE9PSAnJyA/IGxvZ2luVXJsIDogd2luZG93LmxvY2F0aW9uLmhyZWZcbiAgICAgICksXG4gICAgICB7c2VuZENhY2hlOiB0cnVlLCBub3RpZnk6IHRydWV9XG4gICAgKTtcbiAgICB0aGlzLmhhbmRsZVJlc2l6ZSgpO1xuICB9XG5cbiAgcmVjb3JkVXNlckludGVyYWN0aW9ucyhcbiAgICBpbml0U2NyaXB0ID0gdHJ1ZSxcbiAgICBsb2dpblVybCA9ICcnLFxuICAgIHN0YXJ0VGltZSA9IDBcbiAgKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2coYFpBUCB1c2VyIGludGVyYWN0aW9ucyAke2luaXRTY3JpcHR9ICR7bG9naW5Vcmx9YCk7XG4gICAgaWYgKGluaXRTY3JpcHQpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6YXRpb25TY3JpcHQobG9naW5VcmwsIHN0YXJ0VGltZSk7XG4gICAgfVxuICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICB0aGlzLnByZXZpb3VzRE9NU3RhdGUgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub3V0ZXJIVE1MO1xuICAgIGlmICh0aGlzLmhhdmVMaXN0ZW5lcnNCZWVuQWRkZWQpIHtcbiAgICAgIHRoaXMuaW5zZXJ0RmxvYXRpbmdQb3B1cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmhhdmVMaXN0ZW5lcnNCZWVuQWRkZWQgPSB0cnVlO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBkZWJvdW5jZSh0aGlzLmhhbmRsZVJlc2l6ZSwgMTAwKSk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuYWRkTGlzdGVuZXJzVG9Eb2N1bWVudChkb2N1bWVudCwgLTEsIDApO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gU29tZXRpbWVzIHRocm93IERPTUV4Y2VwdGlvbjogQmxvY2tlZCBhIGZyYW1lIHdpdGggY3VycmVudCBvcmlnaW4gZnJvbSBhY2Nlc3NpbmcgYSBjcm9zcy1vcmlnaW4gZnJhbWUuXG4gICAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIH1cbiAgICB0aGlzLmluc2VydEZsb2F0aW5nUG9wdXAoKTtcbiAgfVxuXG4gIHN0b3BSZWNvcmRpbmdVc2VySW50ZXJhY3Rpb25zKCk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKCdaQVAgU3RvcHBpbmcgUmVjb3JkaW5nIFVzZXIgSW50ZXJhY3Rpb25zIC4uLicpO1xuICAgIHRoaXMuaGFuZGxlQ2FjaGVkU3VibWl0KCk7XG4gICAgQnJvd3Nlci5zdG9yYWdlLnN5bmMuc2V0KHt6YXByZWNvcmRpbmdhY3RpdmU6IGZhbHNlfSk7XG4gICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICBjb25zdCBmbG9hdGluZ0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFpBUF9GTE9BVElOR19ESVYpO1xuICAgIGlmIChmbG9hdGluZ0Rpdikge1xuICAgICAgZmxvYXRpbmdEaXYuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICB9XG4gIH1cblxuICBwYWQoaTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7aX1gLnBhZFN0YXJ0KDIsIGAwYCk7XG4gIH1cblxuICBnZXREYXRlU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICByZXR1cm4gYCR7bm93LmdldEZ1bGxZZWFyKCl9LSR7dGhpcy5wYWQobm93LmdldE1vbnRoKCkgKyAxKX0tJHt0aGlzLnBhZChcbiAgICAgIG5vdy5nZXREYXRlKClcbiAgICApfS0ke3RoaXMucGFkKG5vdy5nZXRIb3VycygpKX0tJHt0aGlzLnBhZChub3cuZ2V0TWludXRlcygpKX0tJHt0aGlzLnBhZChcbiAgICAgIG5vdy5nZXRTZWNvbmRzKClcbiAgICApfWA7XG4gIH1cblxuICBpbnNlcnRGbG9hdGluZ1BvcHVwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZsb2F0aW5nV2luZG93SW5zZXJ0ZWQpIHtcbiAgICAgIGNvbnN0IGZsb2F0aW5nRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoWkFQX0ZMT0FUSU5HX0RJVik7XG4gICAgICBpZiAoZmxvYXRpbmdEaXYpIHtcbiAgICAgICAgZmxvYXRpbmdEaXYuc3R5bGUuZGlzcGxheSA9ICdmbGV4JztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICBmYS50ZXh0Q29udGVudCA9XG4gICAgICBcIkBmb250LWZhY2UgeyBmb250LWZhbWlseTogJ1JvYm90byc7Zm9udC1zdHlsZTogbm9ybWFsO2ZvbnQtd2VpZ2h0OiA0MDA7XCIgK1xuICAgICAgYHNyYzogdXJsKFwiJHtCcm93c2VyLnJ1bnRpbWUuZ2V0VVJMKFxuICAgICAgICAnYXNzZXRzL2ZvbnRzL1JvYm90by1SZWd1bGFyLnR0ZidcbiAgICAgICl9XCIpOyB9O2A7XG5cbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGZhKTtcblxuICAgIGNvbnN0IGZsb2F0aW5nRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUuYWxsID0gJ2luaXRpYWwnO1xuICAgIGZsb2F0aW5nRGl2LmNsYXNzTmFtZSA9IFpBUF9GTE9BVElOR19ESVZfRUxFTUVOVFM7XG4gICAgZmxvYXRpbmdEaXYuaWQgPSBaQVBfRkxPQVRJTkdfRElWO1xuICAgIGZsb2F0aW5nRGl2LnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcbiAgICBmbG9hdGluZ0Rpdi5zdHlsZS50b3AgPSAnMTAwJSc7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUubGVmdCA9ICc1MCUnO1xuICAgIGZsb2F0aW5nRGl2LnN0eWxlLndpZHRoID0gJzQwMHB4JztcbiAgICBmbG9hdGluZ0Rpdi5zdHlsZS5oZWlnaHQgPSAnMTAwcHgnO1xuICAgIGZsb2F0aW5nRGl2LnN0eWxlLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoLTUwJSwgLTEwNSUpJztcbiAgICBmbG9hdGluZ0Rpdi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI2Y5ZjlmOSc7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUuYm9yZGVyID0gJzJweCBzb2xpZCAjZTc0YzNjJztcbiAgICBmbG9hdGluZ0Rpdi5zdHlsZS5ib3hTaGFkb3cgPSAnMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKSc7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUuekluZGV4ID0gJzk5OTk5OSc7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUuYm9yZGVyUmFkaXVzID0gJzVweCc7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUuZm9udEZhbWlseSA9ICdSb2JvdG8nO1xuICAgIGZsb2F0aW5nRGl2LnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUuZmxleERpcmVjdGlvbiA9ICdjb2x1bW4nO1xuICAgIGZsb2F0aW5nRGl2LnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2NlbnRlcic7XG4gICAgZmxvYXRpbmdEaXYuc3R5bGUuYWxpZ25JdGVtcyA9ICdjZW50ZXInO1xuXG4gICAgY29uc3QgdGV4dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgdGV4dEVsZW1lbnQuc3R5bGUuYWxsID0gJ2luaXRpYWwnO1xuICAgIHRleHRFbGVtZW50LmNsYXNzTmFtZSA9IFpBUF9GTE9BVElOR19ESVZfRUxFTUVOVFM7XG4gICAgdGV4dEVsZW1lbnQuc3R5bGUubWFyZ2luID0gJzAnO1xuICAgIHRleHRFbGVtZW50LnN0eWxlLnpJbmRleCA9ICc5OTk5OTknO1xuICAgIHRleHRFbGVtZW50LnN0eWxlLmZvbnRTaXplID0gJzE2cHgnO1xuICAgIHRleHRFbGVtZW50LnN0eWxlLmNvbG9yID0gJyMzMzMnO1xuICAgIHRleHRFbGVtZW50LnN0eWxlLmZvbnRGYW1pbHkgPSAnUm9ib3RvJztcbiAgICB0ZXh0RWxlbWVudC50ZXh0Q29udGVudCA9ICdaQVAgQnJvd3NlciBFeHRlbnNpb24gaXMgUmVjb3JkaW5nLi4uJztcblxuICAgIGNvbnN0IGJ1dHRvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcbiAgICBidXR0b25FbGVtZW50LmlkID0gU1RPUF9SRUNPUkRJTkdfSUQ7XG4gICAgYnV0dG9uRWxlbWVudC5zdHlsZS5hbGwgPSAnaW5pdGlhbCc7XG4gICAgYnV0dG9uRWxlbWVudC5jbGFzc05hbWUgPSBaQVBfRkxPQVRJTkdfRElWX0VMRU1FTlRTO1xuICAgIGJ1dHRvbkVsZW1lbnQuc3R5bGUubWFyZ2luVG9wID0gJzEwcHgnO1xuICAgIGJ1dHRvbkVsZW1lbnQuc3R5bGUucGFkZGluZyA9ICc4cHggMTVweCc7XG4gICAgYnV0dG9uRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0gJyNlNzRjM2MnO1xuICAgIGJ1dHRvbkVsZW1lbnQuc3R5bGUuY29sb3IgPSAnd2hpdGUnO1xuICAgIGJ1dHRvbkVsZW1lbnQuc3R5bGUuekluZGV4ID0gJzk5OTk5OSc7XG4gICAgYnV0dG9uRWxlbWVudC5zdHlsZS5ib3JkZXIgPSAnbm9uZSc7XG4gICAgYnV0dG9uRWxlbWVudC5zdHlsZS5ib3JkZXJSYWRpdXMgPSAnM3B4JztcbiAgICBidXR0b25FbGVtZW50LnN0eWxlLmN1cnNvciA9ICdwb2ludGVyJztcbiAgICBidXR0b25FbGVtZW50LnN0eWxlLmZvbnRGYW1pbHkgPSAnUm9ib3RvJztcbiAgICBidXR0b25FbGVtZW50LnRleHRDb250ZW50ID0gJ1N0b3AgUmVjb3JkaW5nJztcbiAgICBCcm93c2VyLnN0b3JhZ2Uuc3luY1xuICAgICAgLmdldCh7XG4gICAgICAgIGRvd25sb2FkU2NyaXB0OiBmYWxzZSxcbiAgICAgIH0pXG4gICAgICAudGhlbigoaXRlbXMpID0+IHtcbiAgICAgICAgaWYgKGl0ZW1zLmRvd25sb2FkU2NyaXB0KSB7XG4gICAgICAgICAgYnV0dG9uRWxlbWVudC50ZXh0Q29udGVudCA9IFNUT1BfUkVDT1JESU5HX1RFWFQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgYnV0dG9uRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICAgIHRoaXMuc3RvcFJlY29yZGluZ1VzZXJJbnRlcmFjdGlvbnMoKTtcbiAgICAgIEJyb3dzZXIucnVudGltZS5zZW5kTWVzc2FnZSh7dHlwZTogU1RPUF9SRUNPUkRJTkd9KTtcbiAgICAgIEJyb3dzZXIuc3RvcmFnZS5zeW5jXG4gICAgICAgIC5nZXQoe1xuICAgICAgICAgIGRvd25sb2FkU2NyaXB0OiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4oKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgaWYgKGl0ZW1zLmRvd25sb2FkU2NyaXB0KSB7XG4gICAgICAgICAgICBCcm93c2VyLnJ1bnRpbWVcbiAgICAgICAgICAgICAgLnNlbmRNZXNzYWdlKHt0eXBlOiBHRVRfWkVTVF9TQ1JJUFR9KVxuICAgICAgICAgICAgICAudGhlbigoaXRlbXMyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbXNnID0gaXRlbXMyIGFzIFplc3RTY3JpcHRNZXNzYWdlO1xuICAgICAgICAgICAgICAgIGRvd25sb2FkSnNvbihcbiAgICAgICAgICAgICAgICAgIG1zZy5zY3JpcHQsXG4gICAgICAgICAgICAgICAgICBgemFwLXJlYy0ke1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWVcbiAgICAgICAgICAgICAgICAgIH0ke3RoaXMuZ2V0RGF0ZVN0cmluZygpfS56c3RgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIEJyb3dzZXIuc3RvcmFnZS5zeW5jLnNldCh7ZG93bmxvYWRTY3JpcHQ6IGZhbHNlfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGZsb2F0aW5nRGl2LmFwcGVuZENoaWxkKHRleHRFbGVtZW50KTtcbiAgICBmbG9hdGluZ0Rpdi5hcHBlbmRDaGlsZChidXR0b25FbGVtZW50KTtcblxuICAgIGlmIChkb2N1bWVudC5ib2R5IGluc3RhbmNlb2YgSFRNTEZyYW1lU2V0RWxlbWVudCkge1xuICAgICAgZG9jdW1lbnQuYm9keS5hZnRlcihmbG9hdGluZ0Rpdik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZmxvYXRpbmdEaXYpO1xuICAgIH1cbiAgICB0aGlzLmZsb2F0aW5nV2luZG93SW5zZXJ0ZWQgPSB0cnVlO1xuXG4gICAgbGV0IGlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICBsZXQgaW5pdGlhbE1vdXNlWDogbnVtYmVyO1xuICAgIGxldCBpbml0aWFsTW91c2VZOiBudW1iZXI7XG4gICAgbGV0IGluaXRpYWxEaXZYOiBudW1iZXI7XG4gICAgbGV0IGluaXRpYWxEaXZZOiBudW1iZXI7XG5cbiAgICAvLyBNb3VzZSBkb3duIGV2ZW50IGxpc3RlbmVyXG4gICAgZmxvYXRpbmdEaXYuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgKGUpID0+IHtcbiAgICAgIGlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgaW5pdGlhbE1vdXNlWCA9IGUuY2xpZW50WDtcbiAgICAgIGluaXRpYWxNb3VzZVkgPSBlLmNsaWVudFk7XG4gICAgICBpbml0aWFsRGl2WCA9IGZsb2F0aW5nRGl2Lm9mZnNldExlZnQ7XG4gICAgICBpbml0aWFsRGl2WSA9IGZsb2F0aW5nRGl2Lm9mZnNldFRvcDtcbiAgICB9KTtcblxuICAgIC8vIE1vdXNlIG1vdmUgZXZlbnQgbGlzdGVuZXJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgKGUpID0+IHtcbiAgICAgIGlmICghaXNEcmFnZ2luZykgcmV0dXJuO1xuXG4gICAgICBjb25zdCBvZmZzZXRYID0gZS5jbGllbnRYIC0gaW5pdGlhbE1vdXNlWDtcbiAgICAgIGNvbnN0IG9mZnNldFkgPSBlLmNsaWVudFkgLSBpbml0aWFsTW91c2VZO1xuXG4gICAgICBmbG9hdGluZ0Rpdi5zdHlsZS5sZWZ0ID0gYCR7aW5pdGlhbERpdlggKyBvZmZzZXRYfXB4YDtcbiAgICAgIGZsb2F0aW5nRGl2LnN0eWxlLnRvcCA9IGAke2luaXRpYWxEaXZZICsgb2Zmc2V0WX1weGA7XG4gICAgfSk7XG5cbiAgICAvLyBNb3VzZSB1cCBldmVudCBsaXN0ZW5lclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgKCkgPT4ge1xuICAgICAgaWYgKCFpc0RyYWdnaW5nIHx8IGZsb2F0aW5nRGl2LnN0eWxlLmxlZnQuaW5jbHVkZXMoJyUnKSkge1xuICAgICAgICBpc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHdpZHRoID1cbiAgICAgICAgd2luZG93LmlubmVyV2lkdGggfHxcbiAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIHx8XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGg7XG5cbiAgICAgIGNvbnN0IGhlaWdodCA9XG4gICAgICAgIHdpbmRvdy5pbm5lckhlaWdodCB8fFxuICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8XG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0O1xuXG4gICAgICBjb25zdCBsZWZ0UGVyY2VudCA9IChwYXJzZUludChmbG9hdGluZ0Rpdi5zdHlsZS5sZWZ0KSAvIHdpZHRoKSAqIDEwMDtcbiAgICAgIGNvbnN0IHRvcFBlcmNlbnQgPSAocGFyc2VJbnQoZmxvYXRpbmdEaXYuc3R5bGUudG9wKSAvIGhlaWdodCkgKiAxMDA7XG5cbiAgICAgIGZsb2F0aW5nRGl2LnN0eWxlLmxlZnQgPSBgJHtsZWZ0UGVyY2VudH0lYDtcbiAgICAgIGZsb2F0aW5nRGl2LnN0eWxlLnRvcCA9IGAke3RvcFBlcmNlbnR9JWA7XG4gICAgICBpc0RyYWdnaW5nID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBub3RpZnkoc3RtdDogWmVzdFN0YXRlbWVudCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IG5vdGlmeU1lc3NhZ2UgPSB7XG4gICAgICB0aXRsZTogJycsXG4gICAgICBtZXNzYWdlOiAnJyxcbiAgICB9O1xuXG4gICAgaWYgKHN0bXQgaW5zdGFuY2VvZiBaZXN0U3RhdGVtZW50RWxlbWVudENsaWNrKSB7XG4gICAgICBub3RpZnlNZXNzYWdlLnRpdGxlID0gJ0NsaWNrJztcbiAgICAgIG5vdGlmeU1lc3NhZ2UubWVzc2FnZSA9IHN0bXQuZWxlbWVudExvY2F0b3IuZWxlbWVudDtcbiAgICB9IGVsc2UgaWYgKHN0bXQgaW5zdGFuY2VvZiBaZXN0U3RhdGVtZW50RWxlbWVudFNjcm9sbFRvKSB7XG4gICAgICBub3RpZnlNZXNzYWdlLnRpdGxlID0gJ1Njcm9sbCBUbyc7XG4gICAgICBub3RpZnlNZXNzYWdlLm1lc3NhZ2UgPSBzdG10LmVsZW1lbnRMb2NhdG9yLmVsZW1lbnQ7XG4gICAgfSBlbHNlIGlmIChzdG10IGluc3RhbmNlb2YgWmVzdFN0YXRlbWVudEVsZW1lbnRTZW5kS2V5cykge1xuICAgICAgbm90aWZ5TWVzc2FnZS50aXRsZSA9ICdTZW5kIEtleXMnO1xuICAgICAgbm90aWZ5TWVzc2FnZS5tZXNzYWdlID0gYCR7c3RtdC5lbGVtZW50TG9jYXRvci5lbGVtZW50fTogJHtzdG10LmtleXN9YDtcbiAgICB9IGVsc2UgaWYgKHN0bXQgaW5zdGFuY2VvZiBaZXN0U3RhdGVtZW50RWxlbWVudFN1Ym1pdCkge1xuICAgICAgbm90aWZ5TWVzc2FnZS50aXRsZSA9ICdTdWJtaXQnO1xuICAgICAgbm90aWZ5TWVzc2FnZS5tZXNzYWdlID0gYCR7c3RtdC5lbGVtZW50TG9jYXRvci5lbGVtZW50fWA7XG4gICAgfSBlbHNlIGlmIChzdG10IGluc3RhbmNlb2YgWmVzdFN0YXRlbWVudExhdW5jaEJyb3dzZXIpIHtcbiAgICAgIG5vdGlmeU1lc3NhZ2UudGl0bGUgPSAnTGF1bmNoIEJyb3dzZXInO1xuICAgICAgbm90aWZ5TWVzc2FnZS5tZXNzYWdlID0gc3RtdC5icm93c2VyVHlwZTtcbiAgICB9IGVsc2UgaWYgKHN0bXQgaW5zdGFuY2VvZiBaZXN0U3RhdGVtZW50U3dpdGNoVG9GcmFtZSkge1xuICAgICAgbm90aWZ5TWVzc2FnZS50aXRsZSA9ICdTd2l0Y2ggVG8gRnJhbWUnO1xuICAgICAgbm90aWZ5TWVzc2FnZS5tZXNzYWdlID0gc3RtdC5mcmFtZUluZGV4LnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgLy8gd2FpdCBmb3IgcHJldmlvdXMgbm90aWZpY2F0aW9uIHRvIGJlIHJlbW92ZWRcbiAgICBpZiAodGhpcy5pc05vdGlmaWNhdGlvblJhaXNlZCkge1xuICAgICAgYXdhaXQgdGhpcy53YWl0Rm9yTm90aWZpY2F0aW9uVG9DbGVhcigpO1xuICAgIH1cbiAgICBjb25zdCBmbG9hdGluZ0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFpBUF9GTE9BVElOR19ESVYpO1xuICAgIGlmICghZmxvYXRpbmdEaXYpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdaQVAgRmxvYXRpbmcgRGl2IE5vdCBGb3VuZCAhJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc05vdGlmaWNhdGlvblJhaXNlZCA9IHRydWU7XG4gICAgY29uc3QgbWVzc2FnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XG4gICAgbWVzc2FnZUVsZW1lbnQuY2xhc3NOYW1lID0gWkFQX0ZMT0FUSU5HX0RJVl9FTEVNRU5UUztcbiAgICBtZXNzYWdlRWxlbWVudC50ZXh0Q29udGVudCA9IGAke25vdGlmeU1lc3NhZ2UudGl0bGV9OiAke25vdGlmeU1lc3NhZ2UubWVzc2FnZX1gO1xuICAgIG1lc3NhZ2VFbGVtZW50LnN0eWxlLmFsbCA9ICdpbml0aWFsJztcbiAgICBtZXNzYWdlRWxlbWVudC5zdHlsZS5mb250U2l6ZSA9ICcyMHB4JztcbiAgICBtZXNzYWdlRWxlbWVudC5zdHlsZS56SW5kZXggPSAnOTk5OTk5JztcbiAgICBtZXNzYWdlRWxlbWVudC5zdHlsZS5mb250RmFtaWx5ID0gJ1JvYm90byc7XG5cbiAgICBjb25zdCBleGlzdGluZ0NoaWxkRWxlbWVudHMgPSBBcnJheS5mcm9tKGZsb2F0aW5nRGl2LmNoaWxkcmVuIHx8IFtdKTtcblxuICAgIGZsb2F0aW5nRGl2LmlubmVySFRNTCA9ICcnO1xuXG4gICAgZmxvYXRpbmdEaXYuYXBwZW5kQ2hpbGQobWVzc2FnZUVsZW1lbnQpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBmbG9hdGluZ0Rpdi5yZW1vdmVDaGlsZChtZXNzYWdlRWxlbWVudCk7XG4gICAgICBleGlzdGluZ0NoaWxkRWxlbWVudHMuZm9yRWFjaCgoY2hpbGQpID0+IGZsb2F0aW5nRGl2LmFwcGVuZENoaWxkKGNoaWxkKSk7XG4gICAgICB0aGlzLmlzTm90aWZpY2F0aW9uUmFpc2VkID0gZmFsc2U7XG4gICAgfSwgMTAwMCk7XG4gIH1cblxuICB3YWl0Rm9yTm90aWZpY2F0aW9uVG9DbGVhcigpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgY2hlY2tJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTm90aWZpY2F0aW9uUmFpc2VkKSB7XG4gICAgICAgICAgY2xlYXJJbnRlcnZhbChjaGVja0ludGVydmFsKTtcbiAgICAgICAgICByZXNvbHZlKDEpO1xuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFJlY29yZGVyO1xuIiwiLypcbiAqIFplZCBBdHRhY2sgUHJveHkgKFpBUCkgYW5kIGl0cyByZWxhdGVkIHNvdXJjZSBmaWxlcy5cbiAqXG4gKiBaQVAgaXMgYW4gSFRUUC9IVFRQUyBwcm94eSBmb3IgYXNzZXNzaW5nIHdlYiBhcHBsaWNhdGlvbiBzZWN1cml0eS5cbiAqXG4gKiBDb3B5cmlnaHQgMjAyNSBUaGUgWkFQIERldmVsb3BtZW50IFRlYW1cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZnVuY3Rpb24gZG93bmxvYWRKc29uKGpzb246IHN0cmluZywgdGl0bGU6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2pzb25dLCB7dHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nfSk7XG4gIGNvbnN0IHVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG5cbiAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcbiAgbGluay5ocmVmID0gdXJsO1xuICBsaW5rLmRvd25sb2FkID0gdGl0bGU7XG4gIGxpbmsuc3R5bGUuZGlzcGxheSA9ICdub25lJztcblxuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICBsaW5rLmNsaWNrKCk7XG4gIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XG5cbiAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xufVxuXG5leHBvcnQge2Rvd25sb2FkSnNvbn07XG4iLCIvKlxuICogWmVkIEF0dGFjayBQcm94eSAoWkFQKSBhbmQgaXRzIHJlbGF0ZWQgc291cmNlIGZpbGVzLlxuICpcbiAqIFpBUCBpcyBhbiBIVFRQL0hUVFBTIHByb3h5IGZvciBhc3Nlc3Npbmcgd2ViIGFwcGxpY2F0aW9uIHNlY3VyaXR5LlxuICpcbiAqIENvcHlyaWdodCAyMDIzIFRoZSBaQVAgRGV2ZWxvcG1lbnQgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IEJyb3dzZXIsIHtSdW50aW1lfSBmcm9tICd3ZWJleHRlbnNpb24tcG9seWZpbGwnO1xuaW1wb3J0IHtcbiAgUmVwb3J0ZWRFbGVtZW50LFxuICBSZXBvcnRlZE9iamVjdCxcbiAgUmVwb3J0ZWRTdG9yYWdlLFxuICBSZXBvcnRlZEV2ZW50LFxuICBJbnRlcmFjdGFibGVTdGF0ZSxcbn0gZnJvbSAnLi4vdHlwZXMvUmVwb3J0ZWRNb2RlbCc7XG5pbXBvcnQgUmVjb3JkZXIgZnJvbSAnLi9yZWNvcmRlcic7XG5pbXBvcnQge1xuICBoYXNQb2ludGVyU3R5bGUsXG4gIGdldEludGVyYWN0YWJsZVN0YXRlLFxuICBnZXRQYXRoLFxuICBoYXNJbnRlcmFjdGFibGVUYWdBbmNlc3RvcixcbiAgSU5URVJBQ1RBQkxFX1RBR19OQU1FUyxcbn0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7XG4gIElTX0ZVTExfRVhURU5TSU9OLFxuICBMT0NBTF9TVE9SQUdFLFxuICBMT0NBTF9aQVBfRU5BQkxFLFxuICBMT0NBTF9aQVBfUkVDT1JELFxuICBSRVBPUlRfRVZFTlQsXG4gIFJFUE9SVF9PQkpFQ1QsXG4gIFNFU1NJT05fU1RPUkFHRSxcbiAgVVJMX1pBUF9FTkFCTEUsXG4gIFVSTF9aQVBfUkVDT1JELFxuICBaQVBfU1RBUlRfUkVDT1JESU5HLFxuICBaQVBfU1RPUF9SRUNPUkRJTkcsXG59IGZyb20gJy4uL3V0aWxzL2NvbnN0YW50cyc7XG5cbmNvbnN0IHJlcG9ydGVkT2JqZWN0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG5jb25zdCByZXBvcnRlZEV2ZW50czoge1trZXk6IHN0cmluZ106IFJlcG9ydGVkRXZlbnR9ID0ge307XG5cbmNvbnN0IGVsZW1lbnRJbnRlcmFjdGFibGVTdGF0ZSA9IG5ldyBXZWFrTWFwPEVsZW1lbnQsIEludGVyYWN0YWJsZVN0YXRlPigpO1xuXG5sZXQgdHJhY2tlZEVsZW1lbnRSZWZzOiBXZWFrUmVmPEVsZW1lbnQ+W10gPSBbXTtcblxuY29uc3QgcmVjb3JkZXIgPSBuZXcgUmVjb3JkZXIoKTtcblxuZnVuY3Rpb24gcmVwb3J0U3RvcmFnZShcbiAgbmFtZTogc3RyaW5nLFxuICBzdG9yYWdlOiBTdG9yYWdlLFxuICBmbjogKHJlOiBSZXBvcnRlZFN0b3JhZ2UpID0+IHZvaWRcbik6IHZvaWQge1xuICBpZiAoSVNfRlVMTF9FWFRFTlNJT04pIHtcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhzdG9yYWdlKSkge1xuICAgICAgZm4obmV3IFJlcG9ydGVkU3RvcmFnZShuYW1lLCAnJywga2V5LCAnJywgc3RvcmFnZS5nZXRJdGVtKGtleSksIHVybCkpO1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kRXZlbnRUb1pBUChvYmo6IFJlcG9ydGVkRXZlbnQpOiBQcm9taXNlPG51bWJlcj4ge1xuICBpZiAoSVNfRlVMTF9FWFRFTlNJT04pIHtcbiAgICByZXR1cm4gQnJvd3Nlci5ydW50aW1lLnNlbmRNZXNzYWdlKHtcbiAgICAgIHR5cGU6IFJFUE9SVF9FVkVOVCxcbiAgICAgIGRhdGE6IG9iai50b1N0cmluZygpLFxuICAgIH0pO1xuICB9XG4gIHJldHVybiAtMTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VuZE9iamVjdFRvWkFQKG9iajogUmVwb3J0ZWRPYmplY3QpOiBQcm9taXNlPG51bWJlcj4ge1xuICBpZiAoSVNfRlVMTF9FWFRFTlNJT04pIHtcbiAgICByZXR1cm4gQnJvd3Nlci5ydW50aW1lLnNlbmRNZXNzYWdlKHtcbiAgICAgIHR5cGU6IFJFUE9SVF9PQkpFQ1QsXG4gICAgICBkYXRhOiBvYmoudG9TdHJpbmcoKSxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbmZ1bmN0aW9uIHJlcG9ydE9iamVjdChyZXBPYmo6IFJlcG9ydGVkT2JqZWN0KTogdm9pZCB7XG4gIGNvbnN0IHJlcE9ialN0ciA9IHJlcE9iai50b1Nob3J0U3RyaW5nKCk7XG4gIGlmICghcmVwb3J0ZWRPYmplY3RzLmhhcyhyZXBPYmpTdHIpKSB7XG4gICAgc2VuZE9iamVjdFRvWkFQKHJlcE9iaik7XG4gICAgcmVwb3J0ZWRPYmplY3RzLmFkZChyZXBPYmpTdHIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlcG9ydEFsbFN0b3JhZ2UoKTogdm9pZCB7XG4gIHJlcG9ydFN0b3JhZ2UoTE9DQUxfU1RPUkFHRSwgbG9jYWxTdG9yYWdlLCByZXBvcnRPYmplY3QpO1xuICByZXBvcnRTdG9yYWdlKFNFU1NJT05fU1RPUkFHRSwgc2Vzc2lvblN0b3JhZ2UsIHJlcG9ydE9iamVjdCk7XG59XG5cbmZ1bmN0aW9uIHdpdGhaYXBFbmFibGVTZXR0aW5nKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gIEJyb3dzZXIuc3RvcmFnZS5zeW5jLmdldCh7emFwZW5hYmxlOiBmYWxzZX0pLnRoZW4oKGl0ZW1zKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFpBUCB3aXRoWmFwRW5hYmxlU2V0dGluZyAke2l0ZW1zLnphcGVuYWJsZX1gKTtcbiAgICBpZiAoaXRlbXMuemFwZW5hYmxlKSB7XG4gICAgICBmbigpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHdpdGhaYXBSZWNvcmRpbmdBY3RpdmUoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgQnJvd3Nlci5zdG9yYWdlLnN5bmMuZ2V0KHt6YXByZWNvcmRpbmdhY3RpdmU6IGZhbHNlfSkudGhlbigoaXRlbXMpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgWkFQIHdpdGhaYXBSZWNvcmRpbmdBY3RpdmUgJHtpdGVtcy56YXByZWNvcmRpbmdhY3RpdmV9YCk7XG4gICAgaWYgKGl0ZW1zLnphcHJlY29yZGluZ2FjdGl2ZSkge1xuICAgICAgZm4oKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXBvcnRQYWdlVW5sb2FkZWQoKTogdm9pZCB7XG4gIHdpdGhaYXBFbmFibGVTZXR0aW5nKCgpID0+IHtcbiAgICBCcm93c2VyLnJ1bnRpbWUuc2VuZE1lc3NhZ2Uoe1xuICAgICAgdHlwZTogUkVQT1JUX0VWRU5ULFxuICAgICAgZGF0YTogbmV3IFJlcG9ydGVkRXZlbnQoJ3BhZ2VVbmxvYWQnKS50b1N0cmluZygpLFxuICAgIH0pO1xuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgT2JqZWN0LnZhbHVlcyhyZXBvcnRlZEV2ZW50cykpIHtcbiAgICAgIHNlbmRFdmVudFRvWkFQKHZhbHVlKTtcbiAgICB9XG4gICAgcmVwb3J0QWxsU3RvcmFnZSgpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVwb3J0RXZlbnQoZXZlbnQ6IFJlcG9ydGVkRXZlbnQpOiB2b2lkIHtcbiAgbGV0IGV4aXN0aW5nRXZlbnQ6IFJlcG9ydGVkRXZlbnQ7XG4gIGV4aXN0aW5nRXZlbnQgPSByZXBvcnRlZEV2ZW50c1tldmVudC5ldmVudE5hbWVdO1xuICBpZiAoIWV4aXN0aW5nRXZlbnQpIHtcbiAgICBleGlzdGluZ0V2ZW50ID0gbmV3IFJlcG9ydGVkRXZlbnQoZXZlbnQuZXZlbnROYW1lKTtcbiAgICByZXBvcnRlZEV2ZW50c1tldmVudC5ldmVudE5hbWVdID0gZXZlbnQ7XG4gICAgc2VuZEV2ZW50VG9aQVAoZXhpc3RpbmdFdmVudCk7XG4gIH0gZWxzZSBpZiAoZXhpc3RpbmdFdmVudC51cmwgIT09IHdpbmRvdy5sb2NhdGlvbi5ocmVmKSB7XG4gICAgLy8gVGhlIGZyYWdtZW50IGhhcyBjaGFuZ2VkIC0gcmVwb3J0IHRoZSBvbGQgb25lIGFuZCBzdGFydCBhIG5ldyBjb3VudFxuICAgIHNlbmRFdmVudFRvWkFQKGV4aXN0aW5nRXZlbnQpO1xuICAgIGV4aXN0aW5nRXZlbnQgPSBuZXcgUmVwb3J0ZWRFdmVudChldmVudC5ldmVudE5hbWUpO1xuICAgIHJlcG9ydGVkRXZlbnRzW2V2ZW50LmV2ZW50TmFtZV0gPSBldmVudDtcbiAgICBzZW5kRXZlbnRUb1pBUChleGlzdGluZ0V2ZW50KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGx1c3BsdXNcbiAgICBleGlzdGluZ0V2ZW50LmNvdW50Kys7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJhY2tJbnRlcmFjdGFibGVFbGVtZW50KHJlOiBSZXBvcnRlZEVsZW1lbnQsIGVsZW1lbnQ6IEVsZW1lbnQpOiB2b2lkIHtcbiAgY29uc3Qgc3RhdGUgPSBnZXRJbnRlcmFjdGFibGVTdGF0ZShlbGVtZW50KTtcbiAgcmUuaW50ZXJhY3RhYmxlID0gc3RhdGU7XG5cbiAgaWYgKCFlbGVtZW50SW50ZXJhY3RhYmxlU3RhdGUuaGFzKGVsZW1lbnQpKSB7XG4gICAgZWxlbWVudEludGVyYWN0YWJsZVN0YXRlLnNldChlbGVtZW50LCBzdGF0ZSk7XG4gICAgdHJhY2tlZEVsZW1lbnRSZWZzLnB1c2gobmV3IFdlYWtSZWYoZWxlbWVudCkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlcG9ydFBhZ2VGb3JtcyhcbiAgZG9jOiBEb2N1bWVudCxcbiAgZm46IChyZTogUmVwb3J0ZWRPYmplY3QpID0+IHZvaWRcbik6IHZvaWQge1xuICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkb2MuZm9ybXMsIChmb3JtOiBIVE1MRm9ybUVsZW1lbnQpID0+IHtcbiAgICBjb25zdCByZSA9IG5ldyBSZXBvcnRlZEVsZW1lbnQoZm9ybSwgdXJsKTtcbiAgICByZS5lbGVtZW50TG9jYXRvciA9IGdldFBhdGgoZm9ybSwgZG9jKTtcbiAgICB0cmFja0ludGVyYWN0YWJsZUVsZW1lbnQocmUsIGZvcm0pO1xuICAgIGZuKHJlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlcG9ydFBhZ2VMaW5rcyhcbiAgZG9jOiBEb2N1bWVudCxcbiAgZm46IChyZTogUmVwb3J0ZWRPYmplY3QpID0+IHZvaWRcbik6IHZvaWQge1xuICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChcbiAgICBkb2MubGlua3MsXG4gICAgKGxpbms6IEhUTUxBbmNob3JFbGVtZW50IHwgSFRNTEFyZWFFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCByZSA9IG5ldyBSZXBvcnRlZEVsZW1lbnQobGluaywgdXJsKTtcbiAgICAgIHJlLmVsZW1lbnRMb2NhdG9yID0gZ2V0UGF0aChsaW5rIGFzIEhUTUxFbGVtZW50LCBkb2MpO1xuICAgICAgdHJhY2tJbnRlcmFjdGFibGVFbGVtZW50KHJlLCBsaW5rKTtcbiAgICAgIGZuKHJlKTtcbiAgICB9XG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlcG9ydEVsZW1lbnRzKFxuICBjb2xsZWN0aW9uOiBIVE1MQ29sbGVjdGlvbixcbiAgZm46IChyZTogUmVwb3J0ZWRPYmplY3QpID0+IHZvaWRcbik6IHZvaWQge1xuICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChjb2xsZWN0aW9uLCAoZWxlbWVudDogRWxlbWVudCkgPT4ge1xuICAgIGNvbnN0IHJlID0gbmV3IFJlcG9ydGVkRWxlbWVudChlbGVtZW50LCB1cmwpO1xuICAgIHJlLmVsZW1lbnRMb2NhdG9yID0gZ2V0UGF0aChlbGVtZW50IGFzIEhUTUxFbGVtZW50LCBkb2N1bWVudCk7XG4gICAgdHJhY2tJbnRlcmFjdGFibGVFbGVtZW50KHJlLCBlbGVtZW50KTtcbiAgICBmbihyZSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXBvcnROb2RlRWxlbWVudHMoXG4gIG5vZGU6IE5vZGUsXG4gIHRhZ05hbWU6IHN0cmluZyxcbiAgZm46IChyZTogUmVwb3J0ZWRPYmplY3QpID0+IHZvaWRcbik6IHZvaWQge1xuICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHtcbiAgICByZXBvcnRFbGVtZW50cygobm9kZSBhcyBFbGVtZW50KS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKSwgZm4pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlcG9ydFBvaW50ZXJFbGVtZW50cyhcbiAgc291cmNlOiBFbGVtZW50IHwgRG9jdW1lbnQsXG4gIGZuOiAocmU6IFJlcG9ydGVkT2JqZWN0KSA9PiB2b2lkXG4pOiB2b2lkIHtcbiAgc291cmNlLnF1ZXJ5U2VsZWN0b3JBbGwoJyonKS5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgY29uc3Qge3RhZ05hbWV9ID0gZWxlbWVudDtcbiAgICBjb25zdCB1cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICBpZiAoXG4gICAgICAhSU5URVJBQ1RBQkxFX1RBR19OQU1FUy5oYXModGFnTmFtZSkgJiZcbiAgICAgIGVsZW1lbnQgaW5zdGFuY2VvZiBFbGVtZW50ICYmXG4gICAgICAhaGFzSW50ZXJhY3RhYmxlVGFnQW5jZXN0b3IoZWxlbWVudClcbiAgICApIHtcbiAgICAgIGlmIChoYXNQb2ludGVyU3R5bGUoZWxlbWVudCkpIHtcbiAgICAgICAgY29uc3QgcmUgPSBuZXcgUmVwb3J0ZWRFbGVtZW50KGVsZW1lbnQsIHVybCk7XG4gICAgICAgIHJlLmVsZW1lbnRMb2NhdG9yID0gZ2V0UGF0aChlbGVtZW50IGFzIEhUTUxFbGVtZW50LCBkb2N1bWVudCk7XG4gICAgICAgIHRyYWNrSW50ZXJhY3RhYmxlRWxlbWVudChyZSwgZWxlbWVudCk7XG4gICAgICAgIGZuKHJlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXBvcnRQYWdlTG9hZGVkKFxuICBkb2M6IERvY3VtZW50LFxuICBmbjogKHJlOiBSZXBvcnRlZE9iamVjdCkgPT4gdm9pZFxuKTogdm9pZCB7XG4gIEJyb3dzZXIucnVudGltZS5zZW5kTWVzc2FnZSh7XG4gICAgdHlwZTogUkVQT1JUX0VWRU5ULFxuICAgIGRhdGE6IG5ldyBSZXBvcnRlZEV2ZW50KCdwYWdlTG9hZCcpLnRvU3RyaW5nKCksXG4gIH0pO1xuXG4gIHJlcG9ydFBhZ2VMaW5rcyhkb2MsIGZuKTtcbiAgcmVwb3J0UGFnZUZvcm1zKGRvYywgZm4pO1xuICByZXBvcnRFbGVtZW50cyhkb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JyksIGZuKTtcbiAgcmVwb3J0RWxlbWVudHMoZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZXh0YXJlYScpLCBmbik7XG4gIHJlcG9ydEVsZW1lbnRzKGRvYy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JyksIGZuKTtcbiAgcmVwb3J0RWxlbWVudHMoZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdidXR0b24nKSwgZm4pO1xuICByZXBvcnRQb2ludGVyRWxlbWVudHMoZG9jLCBmbik7XG4gIHJlcG9ydFN0b3JhZ2UoTE9DQUxfU1RPUkFHRSwgbG9jYWxTdG9yYWdlLCBmbik7XG4gIHJlcG9ydFN0b3JhZ2UoU0VTU0lPTl9TVE9SQUdFLCBzZXNzaW9uU3RvcmFnZSwgZm4pO1xufVxuXG5jb25zdCBkb21NdXRhdGVkID0gZnVuY3Rpb24gZG9tTXV0YXRpb24oXG4gIG11dGF0aW9uTGlzdDogTXV0YXRpb25SZWNvcmRbXSxcbiAgX29iczogTXV0YXRpb25PYnNlcnZlclxuKTogdm9pZCB7XG4gIHdpdGhaYXBFbmFibGVTZXR0aW5nKCgpID0+IHtcbiAgICByZXBvcnRFdmVudChuZXcgUmVwb3J0ZWRFdmVudCgnZG9tTXV0YXRpb24nKSk7XG4gICAgcmVwb3J0UGFnZUxpbmtzKGRvY3VtZW50LCByZXBvcnRPYmplY3QpO1xuICAgIHJlcG9ydFBhZ2VGb3Jtcyhkb2N1bWVudCwgcmVwb3J0T2JqZWN0KTtcbiAgICByZXBvcnRQb2ludGVyRWxlbWVudHMoZG9jdW1lbnQsIHJlcG9ydE9iamVjdCk7XG4gICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbkxpc3QpIHtcbiAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnY2hpbGRMaXN0Jykge1xuICAgICAgICByZXBvcnROb2RlRWxlbWVudHMobXV0YXRpb24udGFyZ2V0LCAnaW5wdXQnLCByZXBvcnRPYmplY3QpO1xuICAgICAgICByZXBvcnROb2RlRWxlbWVudHMobXV0YXRpb24udGFyZ2V0LCAndGV4dGFyZWEnLCByZXBvcnRPYmplY3QpO1xuICAgICAgICByZXBvcnROb2RlRWxlbWVudHMobXV0YXRpb24udGFyZ2V0LCAnc2VsZWN0JywgcmVwb3J0T2JqZWN0KTtcbiAgICAgICAgcmVwb3J0Tm9kZUVsZW1lbnRzKG11dGF0aW9uLnRhcmdldCwgJ2J1dHRvbicsIHJlcG9ydE9iamVjdCk7XG4gICAgICAgIGlmIChtdXRhdGlvbi50YXJnZXQubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFKSB7XG4gICAgICAgICAgcmVwb3J0UG9pbnRlckVsZW1lbnRzKG11dGF0aW9uLnRhcmdldCBhcyBFbGVtZW50LCByZXBvcnRPYmplY3QpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn07XG5cbmZ1bmN0aW9uIGlzQ29uZmlndXJhdGlvblJlcXVlc3QoKTogYm9vbGVhbiB7XG4gIHJldHVybiB3aW5kb3cubG9jYXRpb24uaHJlZi5zdGFydHNXaXRoKCdodHRwczovL3phcC96YXBDYWxsQmFja1VybC8nKTtcbn1cblxuZnVuY3Rpb24gb25Mb2FkRXZlbnRMaXN0ZW5lcigpOiB2b2lkIHtcbiAgaWYgKGlzQ29uZmlndXJhdGlvblJlcXVlc3QoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHdpdGhaYXBFbmFibGVTZXR0aW5nKCgpID0+IHtcbiAgICByZXBvcnRQYWdlTG9hZGVkKGRvY3VtZW50LCByZXBvcnRPYmplY3QpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZW5hYmxlRXh0ZW5zaW9uKCk6IHZvaWQge1xuICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIG9uTG9hZEV2ZW50TGlzdGVuZXIsIGZhbHNlKTtcbiAgd2luZG93Lm9uYmVmb3JldW5sb2FkID0gcmVwb3J0UGFnZVVubG9hZGVkO1xuXG4gIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZG9tTXV0YXRlZCk7XG4gIG9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQsIHtcbiAgICBhdHRyaWJ1dGVzOiBmYWxzZSxcbiAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgc3VidHJlZTogdHJ1ZSxcbiAgfSk7XG5cbiAgY29uc3QgYXR0cmlidXRlT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgd2l0aFphcEVuYWJsZVNldHRpbmcoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcGVuZGluZ0FuaW1hdGlvbnMgPSBkb2N1bWVudC5nZXRBbmltYXRpb25zKCkubWFwKChhKSA9PiBhLmZpbmlzaGVkKTtcbiAgICAgIGlmIChwZW5kaW5nQW5pbWF0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgICAgUHJvbWlzZS5hbGwocGVuZGluZ0FuaW1hdGlvbnMpLFxuICAgICAgICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIDIwMDApO1xuICAgICAgICAgIH0pLFxuICAgICAgICBdKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYWxpdmU6IFdlYWtSZWY8RWxlbWVudD5bXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCByZWYgb2YgdHJhY2tlZEVsZW1lbnRSZWZzKSB7XG4gICAgICAgIGNvbnN0IGVsID0gcmVmLmRlcmVmKCk7XG4gICAgICAgIGlmIChlbCkge1xuICAgICAgICAgIGFsaXZlLnB1c2gocmVmKTtcbiAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IGdldEludGVyYWN0YWJsZVN0YXRlKGVsKTtcbiAgICAgICAgICBjb25zdCBwcmV2U3RhdGUgPSBlbGVtZW50SW50ZXJhY3RhYmxlU3RhdGUuZ2V0KGVsKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBwcmV2U3RhdGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgKHByZXZTdGF0ZS52aXNpYmxlICE9PSBuZXdTdGF0ZS52aXNpYmxlIHx8XG4gICAgICAgICAgICAgIHByZXZTdGF0ZS5lbmFibGVkICE9PSBuZXdTdGF0ZS5lbmFibGVkIHx8XG4gICAgICAgICAgICAgIHByZXZTdGF0ZS5wb2ludGVyICE9PSBuZXdTdGF0ZS5wb2ludGVyKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgZWxlbWVudEludGVyYWN0YWJsZVN0YXRlLnNldChlbCwgbmV3U3RhdGUpO1xuICAgICAgICAgICAgY29uc3QgcmUgPSBuZXcgUmVwb3J0ZWRFbGVtZW50KFxuICAgICAgICAgICAgICBlbCxcbiAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAgICAgICAgICdub2RlQ2hhbmdlZCdcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZS5pbnRlcmFjdGFibGUgPSBuZXdTdGF0ZTtcbiAgICAgICAgICAgIHJlLmVsZW1lbnRMb2NhdG9yID0gZ2V0UGF0aChlbCBhcyBIVE1MRWxlbWVudCwgZG9jdW1lbnQpO1xuICAgICAgICAgICAgc2VuZE9iamVjdFRvWkFQKHJlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRyYWNrZWRFbGVtZW50UmVmcyA9IGFsaXZlO1xuICAgIH0pO1xuICB9KTtcbiAgYXR0cmlidXRlT2JzZXJ2ZXIub2JzZXJ2ZShkb2N1bWVudCwge1xuICAgIGF0dHJpYnV0ZXM6IHRydWUsXG4gICAgYXR0cmlidXRlRmlsdGVyOiBbXG4gICAgICAnYXJpYS1kaXNhYmxlZCcsXG4gICAgICAnYXJpYS1oaWRkZW4nLFxuICAgICAgJ2NsYXNzJyxcbiAgICAgICdkaXNhYmxlZCcsXG4gICAgICAnaGlkZGVuJyxcbiAgICAgICdocmVmJyxcbiAgICAgICdzdHlsZScsXG4gICAgXSxcbiAgICBzdWJ0cmVlOiB0cnVlLFxuICB9KTtcblxuICBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgLy8gSGF2ZSB0byBwb2xsIHRvIHBpY2t1cCBzdG9yYWdlIGNoYW5nZXMgaW4gYSB0aW1lbHkgZmFzaGlvblxuICAgIHJlcG9ydEFsbFN0b3JhZ2UoKTtcbiAgfSwgNTAwKTtcblxuICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgbW9yZSB0cmFkaXRpb25hbCBhcHBzXG4gIHJlcG9ydFBhZ2VMb2FkZWQoZG9jdW1lbnQsIHJlcG9ydE9iamVjdCk7XG59XG5cbmZ1bmN0aW9uIGNvbmZpZ3VyZUV4dGVuc2lvbigpOiB2b2lkIHtcbiAgaWYgKGlzQ29uZmlndXJhdGlvblJlcXVlc3QoKSkge1xuICAgIC8vIFRoZSBCcm93c2VyIGhhcyBiZWVuIGxhdW5jaGVkIGZyb20gWkFQIC0gdXNlIHRoaXMgVVJMIGZvciBjb25maWd1cmF0aW9uXG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBjb25zdCBlbmFibGUgPVxuICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oTE9DQUxfWkFQX0VOQUJMRSkgPT09ICd0cnVlJyB8fFxuICAgICAgcGFyYW1zLmhhcyhVUkxfWkFQX0VOQUJMRSk7XG4gICAgY29uc3QgcmVjb3JkID1cbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKExPQ0FMX1pBUF9SRUNPUkQpID09PSAndHJ1ZScgfHxcbiAgICAgIHBhcmFtcy5oYXMoVVJMX1pBUF9SRUNPUkQpO1xuXG4gICAgY29uc29sZS5sb2coJ1pBUCBDb25maWd1cmUnLCBlbmFibGUsIHJlY29yZCk7XG4gICAgQnJvd3Nlci5zdG9yYWdlLnN5bmMuc2V0KHtcbiAgICAgIHphcHVybDogd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoJz8nKVswXSxcbiAgICAgIHphcGVuYWJsZTogZW5hYmxlLFxuICAgICAgemFwcmVjb3JkaW5nYWN0aXZlOiByZWNvcmQsXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5qZWN0U2NyaXB0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBjb25maWd1cmVFeHRlbnNpb24oKTtcbiAgICB3aXRoWmFwUmVjb3JkaW5nQWN0aXZlKCgpID0+IHtcbiAgICAgIEJyb3dzZXIuc3RvcmFnZS5zeW5jXG4gICAgICAgIC5nZXQoe2luaXRTY3JpcHQ6IGZhbHNlLCBsb2dpblVybDogJycsIHN0YXJ0VGltZTogMH0pXG4gICAgICAgIC50aGVuKChpdGVtcykgPT4ge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgYFpBUCBpbmplY3RTY3JpcHQgaXRlbXMgJHtpdGVtcy5pbml0U2NyaXB0fSAke2l0ZW1zLmxvZ2luVXJsfWBcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlY29yZGVyLnJlY29yZFVzZXJJbnRlcmFjdGlvbnMoXG4gICAgICAgICAgICBpdGVtcy5pbml0U2NyaXB0ID09PSB0cnVlLFxuICAgICAgICAgICAgaXRlbXMubG9naW5VcmwgYXMgc3RyaW5nLFxuICAgICAgICAgICAgaXRlbXMuc3RhcnRUaW1lIGFzIG51bWJlclxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIHdpdGhaYXBFbmFibGVTZXR0aW5nKCgpID0+IHtcbiAgICAgIGVuYWJsZUV4dGVuc2lvbigpO1xuICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICB9KTtcbiAgICByZXNvbHZlKGZhbHNlKTtcbiAgfSk7XG59XG5cbmluamVjdFNjcmlwdCgpO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSAgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuQnJvd3Nlci5ydW50aW1lLm9uTWVzc2FnZS5hZGRMaXN0ZW5lcihcbiAgKFxuICAgIG1lc3NhZ2U6IGFueSxcbiAgICBfc2VuZGVyOiBSdW50aW1lLk1lc3NhZ2VTZW5kZXIsXG4gICAgX3NlbmRSZXNwb25zZTogKHJlc3BvbnNlPzogYW55KSA9PiB2b2lkXG4gICkgPT4ge1xuICAgIGlmIChtZXNzYWdlLnR5cGUgPT09IFpBUF9TVEFSVF9SRUNPUkRJTkcpIHtcbiAgICAgIGNvbmZpZ3VyZUV4dGVuc2lvbigpO1xuICAgICAgcmVjb3JkZXIucmVjb3JkVXNlckludGVyYWN0aW9ucygpO1xuICAgIH0gZWxzZSBpZiAobWVzc2FnZS50eXBlID09PSBaQVBfU1RPUF9SRUNPUkRJTkcpIHtcbiAgICAgIHJlY29yZGVyLnN0b3BSZWNvcmRpbmdVc2VySW50ZXJhY3Rpb25zKCk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuaW5nIGB0cnVlYCBrZWVwcyB0aGUgbWVzc2FnZSBjaGFubmVsIG9wZW4gZm9yIGFzeW5jIHJlc3BvbnNlc1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4pO1xuXG5leHBvcnQge1xuICByZXBvcnRQYWdlTGlua3MsXG4gIHJlcG9ydFBhZ2VMb2FkZWQsXG4gIHJlcG9ydFBhZ2VGb3JtcyxcbiAgcmVwb3J0Tm9kZUVsZW1lbnRzLFxuICByZXBvcnRTdG9yYWdlLFxuICBSZXBvcnRlZEVsZW1lbnQsXG4gIFJlcG9ydGVkT2JqZWN0LFxuICBSZXBvcnRlZFN0b3JhZ2UsXG4gIFJlcG9ydGVkRXZlbnQsXG4gIGluamVjdFNjcmlwdCxcbiAgZW5hYmxlRXh0ZW5zaW9uLFxufTtcbiJdLCJuYW1lcyI6WyJTeW1ib2wiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlIiwiZXhwb3J0cyIsImdldFJhd1RhZyIsIm9iamVjdFRvU3RyaW5nIiwic3ltVG9TdHJpbmdUYWciLCJ0b1N0cmluZ1RhZyIsInVuZGVmaW5lZCIsInZhbHVlIiwiT2JqZWN0IiwidHJpbW1lZEVuZEluZGV4IiwicmVUcmltU3RhcnQiLCJzdHJpbmciLCJzbGljZSIsInJlcGxhY2UiLCJmcmVlR2xvYmFsIiwiZyIsIm9iamVjdFByb3RvIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJuYXRpdmVPYmplY3RUb1N0cmluZyIsInRvU3RyaW5nIiwiaXNPd24iLCJjYWxsIiwidGFnIiwidW5tYXNrZWQiLCJlIiwicmVzdWx0IiwiZnJlZVNlbGYiLCJzZWxmIiwicm9vdCIsIkZ1bmN0aW9uIiwicmVXaGl0ZXNwYWNlIiwiaW5kZXgiLCJsZW5ndGgiLCJ0ZXN0IiwiY2hhckF0IiwiaXNPYmplY3QiLCJub3ciLCJ0b051bWJlciIsIm5hdGl2ZU1heCIsIk1hdGgiLCJtYXgiLCJuYXRpdmVNaW4iLCJtaW4iLCJmdW5jIiwid2FpdCIsIm9wdGlvbnMiLCJsYXN0QXJncyIsImxhc3RUaGlzIiwibWF4V2FpdCIsInRpbWVySWQiLCJsYXN0Q2FsbFRpbWUiLCJsYXN0SW52b2tlVGltZSIsImxlYWRpbmciLCJtYXhpbmciLCJ0cmFpbGluZyIsIlR5cGVFcnJvciIsImludm9rZUZ1bmMiLCJ0aW1lIiwiYXJncyIsInRoaXNBcmciLCJhcHBseSIsInNob3VsZEludm9rZSIsInRpbWVTaW5jZUxhc3RDYWxsIiwidGltZXJFeHBpcmVkIiwidHJhaWxpbmdFZGdlIiwic2V0VGltZW91dCIsInRpbWVXYWl0aW5nIiwicmVtYWluaW5nV2FpdCIsImRlYm91bmNlZCIsImlzSW52b2tpbmciLCJhcmd1bWVudHMiLCJ0aGlzIiwibGVhZGluZ0VkZ2UiLCJjbGVhclRpbWVvdXQiLCJjYW5jZWwiLCJmbHVzaCIsInR5cGUiLCJiYXNlR2V0VGFnIiwiaXNPYmplY3RMaWtlIiwiRGF0ZSIsImJhc2VUcmltIiwiaXNTeW1ib2wiLCJyZUlzQmFkSGV4IiwicmVJc0JpbmFyeSIsInJlSXNPY3RhbCIsImZyZWVQYXJzZUludCIsInBhcnNlSW50Iiwib3RoZXIiLCJ2YWx1ZU9mIiwiaXNCaW5hcnkiLCJfX1dFQlBBQ0tfQU1EX0RFRklORV9GQUNUT1JZX18iLCJfX1dFQlBBQ0tfQU1EX0RFRklORV9BUlJBWV9fIiwiX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX18iLCJnbG9iYWxUaGlzIiwiY2hyb21lIiwicnVudGltZSIsImlkIiwiRXJyb3IiLCJicm93c2VyIiwiQ0hST01FX1NFTkRfTUVTU0FHRV9DQUxMQkFDS19OT19SRVNQT05TRV9NRVNTQUdFIiwid3JhcEFQSXMiLCJleHRlbnNpb25BUElzIiwiYXBpTWV0YWRhdGEiLCJhbGFybXMiLCJjbGVhciIsIm1pbkFyZ3MiLCJtYXhBcmdzIiwiY2xlYXJBbGwiLCJnZXQiLCJnZXRBbGwiLCJib29rbWFya3MiLCJjcmVhdGUiLCJnZXRDaGlsZHJlbiIsImdldFJlY2VudCIsImdldFN1YlRyZWUiLCJnZXRUcmVlIiwibW92ZSIsInJlbW92ZSIsInJlbW92ZVRyZWUiLCJzZWFyY2giLCJ1cGRhdGUiLCJicm93c2VyQWN0aW9uIiwiZGlzYWJsZSIsImZhbGxiYWNrVG9Ob0NhbGxiYWNrIiwiZW5hYmxlIiwiZ2V0QmFkZ2VCYWNrZ3JvdW5kQ29sb3IiLCJnZXRCYWRnZVRleHQiLCJnZXRQb3B1cCIsImdldFRpdGxlIiwib3BlblBvcHVwIiwic2V0QmFkZ2VCYWNrZ3JvdW5kQ29sb3IiLCJzZXRCYWRnZVRleHQiLCJzZXRJY29uIiwic2V0UG9wdXAiLCJzZXRUaXRsZSIsImJyb3dzaW5nRGF0YSIsInJlbW92ZUNhY2hlIiwicmVtb3ZlQ29va2llcyIsInJlbW92ZURvd25sb2FkcyIsInJlbW92ZUZvcm1EYXRhIiwicmVtb3ZlSGlzdG9yeSIsInJlbW92ZUxvY2FsU3RvcmFnZSIsInJlbW92ZVBhc3N3b3JkcyIsInJlbW92ZVBsdWdpbkRhdGEiLCJzZXR0aW5ncyIsImNvbW1hbmRzIiwiY29udGV4dE1lbnVzIiwicmVtb3ZlQWxsIiwiY29va2llcyIsImdldEFsbENvb2tpZVN0b3JlcyIsInNldCIsImRldnRvb2xzIiwiaW5zcGVjdGVkV2luZG93IiwiZXZhbCIsInNpbmdsZUNhbGxiYWNrQXJnIiwicGFuZWxzIiwiZWxlbWVudHMiLCJjcmVhdGVTaWRlYmFyUGFuZSIsImRvd25sb2FkcyIsImRvd25sb2FkIiwiZXJhc2UiLCJnZXRGaWxlSWNvbiIsIm9wZW4iLCJwYXVzZSIsInJlbW92ZUZpbGUiLCJyZXN1bWUiLCJzaG93IiwiZXh0ZW5zaW9uIiwiaXNBbGxvd2VkRmlsZVNjaGVtZUFjY2VzcyIsImlzQWxsb3dlZEluY29nbml0b0FjY2VzcyIsImhpc3RvcnkiLCJhZGRVcmwiLCJkZWxldGVBbGwiLCJkZWxldGVSYW5nZSIsImRlbGV0ZVVybCIsImdldFZpc2l0cyIsImkxOG4iLCJkZXRlY3RMYW5ndWFnZSIsImdldEFjY2VwdExhbmd1YWdlcyIsImlkZW50aXR5IiwibGF1bmNoV2ViQXV0aEZsb3ciLCJpZGxlIiwicXVlcnlTdGF0ZSIsIm1hbmFnZW1lbnQiLCJnZXRTZWxmIiwic2V0RW5hYmxlZCIsInVuaW5zdGFsbFNlbGYiLCJub3RpZmljYXRpb25zIiwiZ2V0UGVybWlzc2lvbkxldmVsIiwicGFnZUFjdGlvbiIsImhpZGUiLCJwZXJtaXNzaW9ucyIsImNvbnRhaW5zIiwicmVxdWVzdCIsImdldEJhY2tncm91bmRQYWdlIiwiZ2V0UGxhdGZvcm1JbmZvIiwib3Blbk9wdGlvbnNQYWdlIiwicmVxdWVzdFVwZGF0ZUNoZWNrIiwic2VuZE1lc3NhZ2UiLCJzZW5kTmF0aXZlTWVzc2FnZSIsInNldFVuaW5zdGFsbFVSTCIsInNlc3Npb25zIiwiZ2V0RGV2aWNlcyIsImdldFJlY2VudGx5Q2xvc2VkIiwicmVzdG9yZSIsInN0b3JhZ2UiLCJsb2NhbCIsImdldEJ5dGVzSW5Vc2UiLCJtYW5hZ2VkIiwic3luYyIsInRhYnMiLCJjYXB0dXJlVmlzaWJsZVRhYiIsImRpc2NhcmQiLCJkdXBsaWNhdGUiLCJleGVjdXRlU2NyaXB0IiwiZ2V0Q3VycmVudCIsImdldFpvb20iLCJnZXRab29tU2V0dGluZ3MiLCJnb0JhY2siLCJnb0ZvcndhcmQiLCJoaWdobGlnaHQiLCJpbnNlcnRDU1MiLCJxdWVyeSIsInJlbG9hZCIsInJlbW92ZUNTUyIsInNldFpvb20iLCJzZXRab29tU2V0dGluZ3MiLCJ0b3BTaXRlcyIsIndlYk5hdmlnYXRpb24iLCJnZXRBbGxGcmFtZXMiLCJnZXRGcmFtZSIsIndlYlJlcXVlc3QiLCJoYW5kbGVyQmVoYXZpb3JDaGFuZ2VkIiwid2luZG93cyIsImdldExhc3RGb2N1c2VkIiwia2V5cyIsIkRlZmF1bHRXZWFrTWFwIiwiV2Vha01hcCIsImNvbnN0cnVjdG9yIiwiY3JlYXRlSXRlbSIsIml0ZW1zIiwic3VwZXIiLCJrZXkiLCJoYXMiLCJpc1RoZW5hYmxlIiwidGhlbiIsIm1ha2VDYWxsYmFjayIsInByb21pc2UiLCJtZXRhZGF0YSIsImNhbGxiYWNrQXJncyIsImxhc3RFcnJvciIsInJlamVjdCIsIm1lc3NhZ2UiLCJyZXNvbHZlIiwicGx1cmFsaXplQXJndW1lbnRzIiwibnVtQXJncyIsIndyYXBBc3luY0Z1bmN0aW9uIiwibmFtZSIsInRhcmdldCIsIlByb21pc2UiLCJjYkVycm9yIiwiY29uc29sZSIsIndhcm4iLCJub0NhbGxiYWNrIiwid3JhcE1ldGhvZCIsIm1ldGhvZCIsIndyYXBwZXIiLCJQcm94eSIsInRhcmdldE1ldGhvZCIsInRoaXNPYmoiLCJiaW5kIiwid3JhcE9iamVjdCIsIndyYXBwZXJzIiwiY2FjaGUiLCJoYW5kbGVycyIsInByb3h5VGFyZ2V0IiwicHJvcCIsInJlY2VpdmVyIiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwiZGVzYyIsIlJlZmxlY3QiLCJkZWxldGVQcm9wZXJ0eSIsIndyYXBFdmVudCIsIndyYXBwZXJNYXAiLCJhZGRMaXN0ZW5lciIsImxpc3RlbmVyIiwiaGFzTGlzdGVuZXIiLCJyZW1vdmVMaXN0ZW5lciIsIm9uUmVxdWVzdEZpbmlzaGVkV3JhcHBlcnMiLCJyZXEiLCJ3cmFwcGVkUmVxIiwiZ2V0Q29udGVudCIsIm9uTWVzc2FnZVdyYXBwZXJzIiwic2VuZGVyIiwic2VuZFJlc3BvbnNlIiwid3JhcHBlZFNlbmRSZXNwb25zZSIsImRpZENhbGxTZW5kUmVzcG9uc2UiLCJzZW5kUmVzcG9uc2VQcm9taXNlIiwicmVzcG9uc2UiLCJlcnIiLCJpc1Jlc3VsdFRoZW5hYmxlIiwic2VuZFByb21pc2VkUmVzdWx0IiwibXNnIiwiZXJyb3IiLCJfX21veldlYkV4dGVuc2lvblBvbHlmaWxsUmVqZWN0X18iLCJjYXRjaCIsIndyYXBwZWRTZW5kTWVzc2FnZUNhbGxiYWNrIiwicmVwbHkiLCJ3cmFwcGVkU2VuZE1lc3NhZ2UiLCJhcGlOYW1lc3BhY2VPYmoiLCJ3cmFwcGVkQ2IiLCJwdXNoIiwic3RhdGljV3JhcHBlcnMiLCJuZXR3b3JrIiwib25SZXF1ZXN0RmluaXNoZWQiLCJvbk1lc3NhZ2UiLCJvbk1lc3NhZ2VFeHRlcm5hbCIsInNldHRpbmdNZXRhZGF0YSIsInByaXZhY3kiLCJzZXJ2aWNlcyIsIndlYnNpdGVzIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwibiIsImdldHRlciIsIl9fZXNNb2R1bGUiLCJkIiwiYSIsImRlZmluaXRpb24iLCJvIiwid2luZG93Iiwib2JqIiwiUmVwb3J0ZWRPYmplY3QiLCJ0YWdOYW1lIiwibm9kZU5hbWUiLCJ0ZXh0IiwidXJsIiwidGltZXN0YW1wIiwiSlNPTiIsInN0cmluZ2lmeSIsInRvU2hvcnRTdHJpbmciLCJ0b05vblRpbWVzdGFtcFN0cmluZyIsImsiLCJ2IiwiUmVwb3J0ZWRTdG9yYWdlIiwiUmVwb3J0ZWRFbGVtZW50IiwiZWxlbWVudCIsInRleHRDb250ZW50IiwiaHJlZiIsImZvcm1JZCIsIkFycmF5IiwiZG9jdW1lbnQiLCJmb3JtcyIsImluZGV4T2YiLCJpbnB1dCIsInRhZ1R5cGUiLCJmb3JtIiwidGV4dGFyZWEiLCJzZWxlY3QiLCJoYXNBdHRyaWJ1dGUiLCJnZXRBdHRyaWJ1dGUiLCJSZXBvcnRlZEV2ZW50IiwiZXZlbnROYW1lIiwibG9jYXRpb24iLCJjb3VudCIsIklTX0ZVTExfRVhURU5TSU9OIiwiQnJvd3NlciIsImdldE1hbmlmZXN0IiwiREVGQVVMVF9XSU5ET1dfSEFORExFIiwiUkVQT1JUX0VWRU5UIiwiTE9DQUxfU1RPUkFHRSIsIlNFU1NJT05fU1RPUkFHRSIsIlpBUF9GTE9BVElOR19ESVYiLCJaQVBfRkxPQVRJTkdfRElWX0VMRU1FTlRTIiwiRWxlbWVudExvY2F0b3IiLCJ0b0pTT04iLCJaZXN0U3RhdGVtZW50IiwiZWxlbWVudFR5cGUiLCJaZXN0U3RhdGVtZW50TGF1bmNoQnJvd3NlciIsImJyb3dzZXJUeXBlIiwid2luZG93SGFuZGxlIiwiY2FwYWJpbGl0aWVzIiwiaGVhZGxlc3MiLCJlbmFibGVkIiwiWmVzdFN0YXRlbWVudENvbW1lbnQiLCJjb21tZW50IiwiWmVzdFN0YXRlbWVudEVsZW1lbnQiLCJlbGVtZW50TG9jYXRvciIsIlplc3RTdGF0ZW1lbnRFbGVtZW50Q2xpY2siLCJ3YWl0Rm9yTXNlYyIsIl9vYmplY3RTcHJlYWQiLCJaZXN0U3RhdGVtZW50RWxlbWVudFNjcm9sbFRvIiwiWmVzdFN0YXRlbWVudEVsZW1lbnRTZW5kS2V5cyIsIlplc3RTdGF0ZW1lbnRFbGVtZW50U3VibWl0IiwiWmVzdFN0YXRlbWVudFN3aXRjaFRvRnJhbWUiLCJmcmFtZUluZGV4IiwiZnJhbWVOYW1lIiwicGFyZW50IiwiZHluYW1pY0NsYXNzRWxlbWVudHMiLCJXZWFrU2V0IiwiaW5wdXRDbGFzc1NuYXBzaG90cyIsIm1hcmtDbGFzc0FzRHluYW1pYyIsImFkZCIsInNuYXBzaG90SW5wdXRDbGFzcyIsIl9lbGVtZW50JGdldEF0dHJpYnV0ZSIsImlzRWxlbWVudFBhdGhVbmlxdWUiLCJwYXRoIiwiZG9jdW1lbnRFbGVtZW50IiwicXVlcnlTZWxlY3RvckFsbCIsImlzRWxlbWVudFhQYXRoVW5pcXVlIiwieHBhdGgiLCJldmFsdWF0ZSIsIlhQYXRoUmVzdWx0IiwiT1JERVJFRF9OT0RFX1NOQVBTSE9UX1RZUEUiLCJzbmFwc2hvdExlbmd0aCIsImdldENTU1NlbGVjdG9yIiwic2VsZWN0b3IiLCJ0b0xvd2VyQ2FzZSIsImJvZHkiLCJwYXJlbnROb2RlIiwiaXNaYXBEaXYiLCJub2RlIiwiRWxlbWVudCIsInNhZmVYUGF0aFN0cmluZyIsImluY2x1ZGVzIiwic3BsaXQiLCJtYXAiLCJwYXJ0Iiwiam9pbiIsImlzVW5pcXVlQ2xhc3NOYW1lIiwiY2xhc3NMaXN0IiwiaXRlbSIsIl9lbGVtZW50JGdldEF0dHJpYnV0ZTIiLCJoYXNDbGFzc0NoYW5nZWRTaW5jZVNuYXBzaG90IiwiYnVpbGRGdWxsWFBhdGgiLCJzaWJsaW5nIiwicHJldmlvdXNTaWJsaW5nIiwiaXNVbmlxdWUiLCJub2RlVHlwZSIsIk5vZGUiLCJFTEVNRU5UX05PREUiLCJuZXh0U2libGluZyIsImdldFhQYXRoIiwidGV4dFhQYXRoIiwiZ2V0UGF0aCIsIl9sYWJlbGFibGUkbGFiZWxzIiwibmFtZVhQYXRoIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJpIiwiZ2V0Rm9ybUFic29sdXRlWFBhdGgiLCJsYWJlbGFibGUiLCJsYWJlbHMiLCJsYWJlbFhQYXRoIiwiSU5URVJBQ1RBQkxFX1RBR19OQU1FUyIsIlNldCIsImhhc1BvaW50ZXJTdHlsZSIsImVsIiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImdldFByb3BlcnR5VmFsdWUiLCJnZXRJbnRlcmFjdGFibGVTdGF0ZSIsIkhUTUxFbGVtZW50IiwidmlzaWJsZSIsInBvaW50ZXIiLCJkaXNhYmxlZCIsInMiLCJkaXNwbGF5IiwidmlzaWJpbGl0eSIsIm9wYWNpdHkiLCJvZmZzZXRXaWR0aCIsIm9mZnNldEhlaWdodCIsIl9ub2RlJG93bmVyRG9jdW1lbnQkZCIsIm5vZGVTdHlsZSIsIm93bmVyRG9jdW1lbnQiLCJkZWZhdWx0VmlldyIsImNvbnRlbnRWaXNpYmlsaXR5IiwicGFyZW50RWxlbWVudCIsImlzSGlkZGVuQnlQYXJlbnQiLCJ0IiwiciIsIml0ZXJhdG9yIiwiYyIsIkdlbmVyYXRvciIsInUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsImwiLCJkb25lIiwicmV0dXJuIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImdldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJkaXNwbGF5TmFtZSIsIl9yZWdlbmVyYXRvciIsInciLCJtIiwiX2ludm9rZSIsIndyaXRhYmxlIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfbmV4dCIsIl90aHJvdyIsIl9kZWZpbmVQcm9wZXJ0eSIsInRvUHJpbWl0aXZlIiwiU3RyaW5nIiwiTnVtYmVyIiwiX3RvUHJpbWl0aXZlIiwiX3RvUHJvcGVydHlLZXkiLCJTVE9QX1JFQ09SRElOR19JRCIsIlNUT1BfUkVDT1JESU5HX1RFWFQiLCJyZWNvcmRlciIsInNlbmRaZXN0U2NyaXB0VG9aQVAiLCJ6ZXN0U3RhdGVtZW50IiwicGFyYW1zIiwiX3RoaXMiLCJfY2FsbGVlIiwiX2NvbnRleHQiLCJzZW5kQ2FjaGUiLCJoYW5kbGVDYWNoZWRTdWJtaXQiLCJub3RpZnkiLCJkYXRhIiwiZ2V0V2FpdGVkIiwibGFzdFN0YXRlbWVudFRpbWUiLCJsYXN0U3RtdFRpbWUiLCJ0aW1lQWRqdXN0bWVudE1pbGxpcyIsIndhaXRlZCIsImNlaWwiLCJtaW5pbXVtV2FpdFRpbWVJbk1pbGxpcyIsInNlbmRTY3JvbGxUb1RvWmFwIiwiY2FjaGVkU3VibWl0IiwiY2FjaGVkVGltZVN0YW1wIiwiaGFuZGxlRnJhbWVTd2l0Y2hlcyIsImxldmVsIiwiY3VyTGV2ZWwiLCJjdXJGcmFtZSIsImxvZyIsImhhbmRsZUNsaWNrIiwiZXZlbnQiLCJzaG91bGRSZWNvcmQiLCJmcmFtZSIsImNsaWNrVGFyZ2V0IiwiZGV0YWlsIiwidGltZVNpbmNlSW50ZXJhY3Rpb24iLCJsYXN0VXNlckludGVyYWN0aW9uVGltZSIsIm1vdXNlRG93bldhc09uVGFyZ2V0IiwibGFzdE1vdXNlRG93blRhcmdldCIsIlVTRVJfSU5URVJBQ1RJT05fV0lORE9XX01TIiwicGVuZGluZ1N5bnRoZXRpY0NsaWNrVGltZXIiLCJwZW5kaW5nU3ludGhldGljQ2xpY2tUYXJnZXQiLCJoYW5kbGVVc2VySW50ZXJhY3Rpb24iLCJoYW5kbGVTY3JvbGwiLCJoYW5kbGVNb3VzZU92ZXIiLCJjdXJyZW50RE9NU3RhdGUiLCJvdXRlckhUTUwiLCJwcmV2aW91c0RPTVN0YXRlIiwiaGFuZGxlQ2hhbmdlIiwiX3RleHQiLCJfc2VsZWN0JHNlbGVjdGVkT3B0aW8iLCJzZWxlY3RlZE9wdGlvbnMiLCJoYW5kbGVLZXlwcmVzcyIsInRpbWVTdGFtcCIsImhhbmRsZVJlc2l6ZSIsImFjdGl2ZSIsIndpZHRoIiwiaW5uZXJXaWR0aCIsImNsaWVudFdpZHRoIiwiaGVpZ2h0IiwiaW5uZXJIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJhZGRMaXN0ZW5lclRvSW5wdXRGaWVsZCIsImlucHV0RmllbGQiLCJhZGRFdmVudExpc3RlbmVyIiwiaGFuZGxlRnJhbWVMb2FkIiwiX2ZyYW1lJGNvbnRlbnRXaW5kb3ciLCJkb2MiLCJjb250ZW50RG9jdW1lbnQiLCJjb250ZW50V2luZG93IiwiYWRkTGlzdGVuZXJzVG9Eb2N1bWVudCIsImluZGV4T2ZGcmFtZSIsInByb2Nlc3NGcmFtZSIsIl9odG1sRWxlbWVudCRjb250ZW50VyIsImh0bWxFbGVtZW50IiwiZnJhbWVEb2N1bWVudCIsInJlYWR5U3RhdGUiLCJkb2N1bWVudFVSSSIsInNyYyIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJtdXRhdGlvbnNMaXN0IiwiZm9yRWFjaCIsIm11dGF0aW9uIiwiYXR0cmlidXRlTmFtZSIsIm9ic2VydmUiLCJhdHRyaWJ1dGVzIiwiZnJhbWVzIiwiZnJhbWVFbGVtZW50IiwidGV4dEVsZW1lbnRzIiwiY2FwdHVyZSIsImRlYm91bmNlIiwiX2ZyYW1lIiwiaW5wdXRzIiwiaiIsImlzTmV3SW5wdXQiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiaXNWaXNpYmxlIiwic3R5bGUiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY2xhc3NOYW1lIiwiZ2V0QnJvd3Nlck5hbWUiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJpbml0aWFsaXphdGlvblNjcmlwdCIsImxvZ2luVXJsIiwic3RhcnRUaW1lIiwiaW5pdFNjcmlwdCIsImRvd25sb2FkU2NyaXB0Iiwic3RvcFJlY29yZGluZ0J1dHRvbiIsImdldEVsZW1lbnRCeUlkIiwidmVyc2lvbiIsInJlY29yZFVzZXJJbnRlcmFjdGlvbnMiLCJoYXZlTGlzdGVuZXJzQmVlbkFkZGVkIiwiaW5zZXJ0RmxvYXRpbmdQb3B1cCIsInN0b3BSZWNvcmRpbmdVc2VySW50ZXJhY3Rpb25zIiwiemFwcmVjb3JkaW5nYWN0aXZlIiwiZmxvYXRpbmdEaXYiLCJwYWQiLCJwYWRTdGFydCIsImdldERhdGVTdHJpbmciLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJmbG9hdGluZ1dpbmRvd0luc2VydGVkIiwiZmEiLCJjcmVhdGVFbGVtZW50IiwiZ2V0VVJMIiwiaGVhZCIsImFwcGVuZENoaWxkIiwiYWxsIiwicG9zaXRpb24iLCJ0b3AiLCJsZWZ0IiwidHJhbnNmb3JtIiwiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyIiwiYm94U2hhZG93IiwiekluZGV4IiwidGV4dEFsaWduIiwiYm9yZGVyUmFkaXVzIiwiZm9udEZhbWlseSIsImZsZXhEaXJlY3Rpb24iLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJ0ZXh0RWxlbWVudCIsIm1hcmdpbiIsImZvbnRTaXplIiwiY29sb3IiLCJidXR0b25FbGVtZW50IiwibWFyZ2luVG9wIiwicGFkZGluZyIsImJhY2tncm91bmQiLCJjdXJzb3IiLCJpdGVtczIiLCJqc29uIiwidGl0bGUiLCJibG9iIiwibGluayIsInNjcmlwdCIsImhvc3RuYW1lIiwiQmxvYiIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImNsaWNrIiwicmVtb3ZlQ2hpbGQiLCJyZXZva2VPYmplY3RVUkwiLCJIVE1MRnJhbWVTZXRFbGVtZW50IiwiYWZ0ZXIiLCJpbml0aWFsTW91c2VYIiwiaW5pdGlhbE1vdXNlWSIsImluaXRpYWxEaXZYIiwiaW5pdGlhbERpdlkiLCJpc0RyYWdnaW5nIiwiY2xpZW50WCIsImNsaWVudFkiLCJvZmZzZXRMZWZ0Iiwib2Zmc2V0VG9wIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJsZWZ0UGVyY2VudCIsInRvcFBlcmNlbnQiLCJzdG10IiwiX3RoaXMyIiwiX2NhbGxlZTIiLCJub3RpZnlNZXNzYWdlIiwibWVzc2FnZUVsZW1lbnQiLCJleGlzdGluZ0NoaWxkRWxlbWVudHMiLCJfY29udGV4dDIiLCJpc05vdGlmaWNhdGlvblJhaXNlZCIsIndhaXRGb3JOb3RpZmljYXRpb25Ub0NsZWFyIiwiZnJvbSIsImNoaWxkcmVuIiwiaW5uZXJIVE1MIiwiY2hpbGQiLCJjaGVja0ludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJjbGVhckludGVydmFsIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbiIsIkYiLCJuZXh0IiwicmVwb3J0ZWRPYmplY3RzIiwicmVwb3J0ZWRFdmVudHMiLCJlbGVtZW50SW50ZXJhY3RhYmxlU3RhdGUiLCJ0cmFja2VkRWxlbWVudFJlZnMiLCJSZWNvcmRlciIsInJlcG9ydFN0b3JhZ2UiLCJmbiIsIl9pIiwiX09iamVjdCRrZXlzIiwiZ2V0SXRlbSIsInNlbmRFdmVudFRvWkFQIiwiX3giLCJfc2VuZEV2ZW50VG9aQVAiLCJzZW5kT2JqZWN0VG9aQVAiLCJfeDIiLCJfc2VuZE9iamVjdFRvWkFQIiwiX2NhbGxlZTMiLCJfY29udGV4dDMiLCJyZXBvcnRPYmplY3QiLCJyZXBPYmoiLCJyZXBPYmpTdHIiLCJyZXBvcnRBbGxTdG9yYWdlIiwibG9jYWxTdG9yYWdlIiwic2Vzc2lvblN0b3JhZ2UiLCJ3aXRoWmFwRW5hYmxlU2V0dGluZyIsInphcGVuYWJsZSIsInJlcG9ydFBhZ2VVbmxvYWRlZCIsIl9pMiIsIl9PYmplY3QkdmFsdWVzIiwidmFsdWVzIiwidHJhY2tJbnRlcmFjdGFibGVFbGVtZW50IiwicmUiLCJzdGF0ZSIsImludGVyYWN0YWJsZSIsIldlYWtSZWYiLCJyZXBvcnRQYWdlRm9ybXMiLCJyZXBvcnRQYWdlTGlua3MiLCJsaW5rcyIsInJlcG9ydEVsZW1lbnRzIiwiY29sbGVjdGlvbiIsInJlcG9ydE5vZGVFbGVtZW50cyIsInJlcG9ydFBvaW50ZXJFbGVtZW50cyIsInNvdXJjZSIsImRlcHRoIiwiaGFzSW50ZXJhY3RhYmxlVGFnQW5jZXN0b3IiLCJyZXBvcnRQYWdlTG9hZGVkIiwiZG9tTXV0YXRlZCIsIm11dGF0aW9uTGlzdCIsIl9vYnMiLCJleGlzdGluZ0V2ZW50IiwiX3N0ZXAiLCJfaXRlcmF0b3IiLCJpc0NvbmZpZ3VyYXRpb25SZXF1ZXN0Iiwic3RhcnRzV2l0aCIsIm9uTG9hZEV2ZW50TGlzdGVuZXIiLCJjb25maWd1cmVFeHRlbnNpb24iLCJVUkxTZWFyY2hQYXJhbXMiLCJyZWNvcmQiLCJ6YXB1cmwiLCJvbmJlZm9yZXVubG9hZCIsInBlbmRpbmdBbmltYXRpb25zIiwiYWxpdmUiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwicmVmIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJnZXRBbmltYXRpb25zIiwiZmluaXNoZWQiLCJyYWNlIiwiZGVyZWYiLCJhdHRyaWJ1dGVGaWx0ZXIiLCJfc2VuZGVyIiwiX3NlbmRSZXNwb25zZSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/manifest.json b/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/manifest.json index 3af98f91112..87b0febd457 100644 --- a/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/manifest.json +++ b/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/manifest.json @@ -3,7 +3,7 @@ "manifest_version": 3, "name": "ZAP by Checkmarx Browser Extension", - "version": "0.1.9", + "version": "0.2.0", "icons": { "16": "assets/icons/zap16x16.png", "32": "assets/icons/zap32x32.png", diff --git a/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/options.html b/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/options.html index 2e6b3cd0631..36af99b236a 100644 --- a/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/options.html +++ b/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/options.html @@ -1 +1 @@ -

ZAP by Checkmarx Browser Extension

This extension gives ZAP access to the browser.
These options should be set correctly if the browser is launched from ZAP but may need to be set manually if you install this add-on in a browser not launched by ZAP.
For example http://zap/ or http://localhost:8080/
As set in the ZAP API options
For more info see https://github.com/zaproxy/browser-extension/ \ No newline at end of file +

ZAP by Checkmarx Browser Extension

This extension gives ZAP access to the browser.
These options should be set correctly if the browser is launched from ZAP but may need to be set manually if you install this add-on in a browser not launched by ZAP.
For example http://zap/ or http://localhost:8080/
As set in the ZAP API options
For more info see https://github.com/zaproxy/browser-extension/ \ No newline at end of file diff --git a/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/popup.html b/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/popup.html index a14e7a405d9..e168c613454 100644 --- a/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/popup.html +++ b/addOns/client/src/main/zapHomeFiles/selenium/extensions/zap_browser_extension/popup.html @@ -1 +1 @@ -ZAP Browser Extension

\ No newline at end of file +ZAP Browser Extension

\ No newline at end of file