commit/galaxy-central: 44 new changesets
NDQgbmV3IGNvbW1pdHMgaW4gZ2FsYXh5LWNlbnRyYWw6CgpodHRwczovL2JpdGJ1Y2tldC5vcmcv Z2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvYzJhNjg4OWQ3YTY0LwpDaGFuZ2VzZXQ6ICAg YzJhNjg4OWQ3YTY0CkJyYW5jaDogICAgICByZWxlYXNlXzE1LjAzClVzZXI6ICAgICAgICBkYW4K RGF0ZTogICAgICAgIDIwMTUtMDMtMTcgMTc6NDY6MjErMDA6MDAKU3VtbWFyeTogICAgIEZpeCBm b3IgcmVsb2FkaW5nIHRvb2xzLiBQcmV2aW91c2x5LCB3aGVuIGEgdG9vbCB3YXMgcmVsb2FkZWQg PQoob2YgdGhlIHNhbWUgdmVyc2lvbiksIHlvdSB3b3VsZCBnZXQgdGhlIG5ldy9jb3JyZWN0IHRv b2wgd2hlbiBjbGlja2luZyBpbiA9ClRvb2wgUGFuZWwsIGJ1dCB0aGUgcmVydW4gYnV0dG9uIHdv dWxkIHJldHVybiB0aGUgb2xkL3ByZS1yZWxvYWQgdG9vbDsgdGhpcz0KIGlzIGR1ZSB0byB0aGUg cmVsb2FkIG5vdCByZXBsYWNpbmcgdGhlIGVudHJpZXMgaW4gX3Rvb2xfdmVyc2lvbnNfYnlfaWQu CkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgMDE0MTIyNDE1NDJhYjRmM2IwZmE2NzEzOTM5 NGIzMDI3N2Q1YmU0OSAtciBjMmE2ODg5ZDdhNjRkNDA5ZjdmZmMyMz0KZGYwOTUxZDhjN2Q3YTQ0 YjkgbGliL2dhbGF4eS90b29scy90b29sYm94L2Jhc2UucHkKLS0tIGEvbGliL2dhbGF4eS90b29s cy90b29sYm94L2Jhc2UucHkKKysrIGIvbGliL2dhbGF4eS90b29scy90b29sYm94L2Jhc2UucHkK QEAgLTk3OCw3ICs5NzgsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiB0b29sX2tleSBpbiB2 YWwuZWxlbXM6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90b29sX3BhbmVsWyBrZXkg XS5lbGVtc1sgdG9vbF9rZXkgXSA9M0QgbmV3Xz0KdG9vbAogICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWsKLSAgICAgICAgICAgIHNlbGYuX3Rvb2xzX2J5X2lkWyB0b29sX2lkIF0gPTNEIG5l d190b29sCisgICAgICAgICAgICAjIChSZS0pUmVnaXN0ZXIgdGhlIHJlbG9hZGVkIHRvb2wsIHRo aXMgd2lsbCBoYW5kbGUKKyAgICAgICAgICAgICMgIF90b29sc19ieV9pZCBhbmQgX3Rvb2xfdmVy c2lvbnNfYnlfaWQKKyAgICAgICAgICAgIHNlbGYucmVnaXN0ZXJfdG9vbCggbmV3X3Rvb2wgKQog ICAgICAgICAgICAgbWVzc2FnZSA9M0QgIlJlbG9hZGVkIHRoZSB0b29sOjxici8+IgogICAgICAg ICAgICAgbWVzc2FnZSArPTNEICI8Yj5uYW1lOjwvYj4gJXM8YnIvPiIgJSBvbGRfdG9vbC5uYW1l CiAgICAgICAgICAgICBtZXNzYWdlICs9M0QgIjxiPmlkOjwvYj4gJXM8YnIvPiIgJSBvbGRfdG9v bC5pZAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0 cy9mM2VhYzc0NjAzZTQvCkNoYW5nZXNldDogICBmM2VhYzc0NjAzZTQKQnJhbmNoOiAgICAgIHJl bGVhc2VfMTUuMDMKVXNlcjogICAgICAgIGRhbm5vbgpEYXRlOiAgICAgICAgMjAxNS0wMy0xNyAx OTowODowNyswMDowMApTdW1tYXJ5OiAgICAgRml4IHB1cmdlIHF1b3RhIGFkanVzdG1lbnQgdmlh IG1hbmFnZXIgZnVuY3Rpb25hbGl0eS4KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciBjMmE2 ODg5ZDdhNjRkNDA5ZjdmZmMyM2RmMDk1MWQ4YzdkN2E0NGI5IC1yIGYzZWFjNzQ2MDNlNDM3ZDhh ODYxMTYxPQpjYjQxZWRmNGJjMGQ3YWUyZiBsaWIvZ2FsYXh5L21hbmFnZXJzL2hkYXMucHkKLS0t IGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9oZGFzLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMv aGRhcy5weQpAQCAtMTU0LDggKzE1NCw5IEBACiAgICAgICAgICMgZXJyb3IgaGVyZSBpZiBkaXNh bGxvd2VkIC0gYmVmb3JlIGpvYnMgYXJlIHN0b3BwZWQKICAgICAgICAgI1RPRE86IHBvc3MuIG1v dmUgdG8gRGF0YXNldEFzc29jaWF0aW9uTWFuYWdlcgogICAgICAgICBzZWxmLmRhdGFzZXRfbWFu YWdlci5lcnJvcl91bmxlc3NfZGF0YXNldF9wdXJnZV9hbGxvd2VkKCB0cmFucywgaGQ9CmEgKQor ICAgICAgICBpZiB0cmFucy51c2VyOgorICAgICAgICAgICAgdHJhbnMudXNlci50b3RhbF9kaXNr X3VzYWdlIC09M0QgaGRhLnF1b3RhX2Ftb3VudCggdHJhbnMudXNlciApCiAgICAgICAgIHN1cGVy KCBIREFNYW5hZ2VyLCBzZWxmICkucHVyZ2UoIHRyYW5zLCBoZGEsIGZsdXNoPTNEZmx1c2ggKQot CiAgICAgICAgIGlmIGhkYS5jcmVhdGluZ19qb2JfYXNzb2NpYXRpb25zOgogICAgICAgICAgICAg am9iID0zRCBoZGEuY3JlYXRpbmdfam9iX2Fzc29jaWF0aW9uc1swXS5qb2IKICAgICAgICAgICAg IGlmIG5vdCBqb2IuZmluaXNoZWQ6CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxh eHktY2VudHJhbC9jb21taXRzL2E4YWVjNGQ2MDNhOC8KQ2hhbmdlc2V0OiAgIGE4YWVjNGQ2MDNh OApCcmFuY2g6ICAgICAgcmVsZWFzZV8xNS4wMwpVc2VyOiAgICAgICAgZGFubm9uCkRhdGU6ICAg ICAgICAyMDE1LTAzLTE3IDIwOjMzOjQ0KzAwOjAwClN1bW1hcnk6ICAgICBGaXggd29ya2Zsb3cg c3RlcCB1dWlkIGhhbmRsaW5nIHRvIGhhbmRsZSBVVUlEIGJlaW5nIHRoZSBzdHJpbj0KZyBOb25l IGluIGlucHV0IEpTT04uICBUaGlzIGZpeGVzIGV4cG9ydC9pbXBvcnQgdGhhdCB3YXMgYnJva2Vu IHdpdGggcmVsZWFzPQplXzE1LjAzLgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIGYzZWFj NzQ2MDNlNDM3ZDhhODYxMTYxY2I0MWVkZjRiYzBkN2FlMmYgLXIgYThhZWM0ZDYwM2E4OTZiMTlk NWM1ZTE9CmY0MzZjNDUyOWUzNzUyYzUzIGxpYi9nYWxheHkvbWFuYWdlcnMvd29ya2Zsb3dzLnB5 Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvd29ya2Zsb3dzLnB5CisrKyBiL2xpYi9nYWxheHkv bWFuYWdlcnMvd29ya2Zsb3dzLnB5CkBAIC01NjksNyArNTY5LDcgQEAKICAgICAgICAgZm9yIHN0 ZXBfaW5kZXggaW4gc3RlcF9pbmRpY2VzOgogICAgICAgICAgICAgc3RlcF9kaWN0ID0zRCBzdXBw bGllZF9zdGVwc1sgc3RlcF9pbmRleCBdCiAgICAgICAgICAgICB1dWlkID0zRCBzdGVwX2RpY3Qu Z2V0KCJ1dWlkIiwgTm9uZSkKLSAgICAgICAgICAgIGlmIHV1aWQ6CisgICAgICAgICAgICBpZiB1 dWlkIGFuZCB1dWlkICE9M0QgIk5vbmUiOgogICAgICAgICAgICAgICAgIGlmIHV1aWQgaW4gZGlz Y292ZXJlZF91dWlkczoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5EdXBs aWNhdGVkSWRlbnRpZmllckV4Y2VwdGlvbigiRHVwbGljPQphdGUgc3RlcCBVVUlEIGluIHJlcXVl c3QuIikKICAgICAgICAgICAgICAgICBkaXNjb3ZlcmVkX3V1aWRzLmFkZCh1dWlkKQpAQCAtNTg2 LDEwICs1ODYsOSBAQAogICAgICAgICB0eXBlLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHkgZnJvbSB0 aGUgaW5jb21pbmcgZGljaXRpb25hcnkuCiAgICAgICAgICIiIgogICAgICAgICBzdGVwID0zRCBt b2RlbC5Xb3JrZmxvd1N0ZXAoKQotCiAgICAgICAgICMgVE9ETzogQ29uc2lkZXIgaGFuZGxpbmcg cG9zaXRpb24gaW5zaWRlIG1vZHVsZS4KICAgICAgICAgc3RlcC5wb3NpdGlvbiA9M0Qgc3RlcF9k aWN0Wydwb3NpdGlvbiddCi0gICAgICAgIGlmICJ1dWlkIiBpbiBzdGVwX2RpY3Q6CisgICAgICAg IGlmICJ1dWlkIiBpbiBzdGVwX2RpY3QgYW5kIHN0ZXBfZGljdFsndXVpZCddICE9M0QgIk5vbmUi OgogICAgICAgICAgICAgc3RlcC51dWlkID0zRCBzdGVwX2RpY3RbInV1aWQiXQogICAgICAgICBp ZiAibGFiZWwiIGluIHN0ZXBfZGljdDoKICAgICAgICAgICAgIHN0ZXAubGFiZWwgPTNEIHN0ZXBf ZGljdFsibGFiZWwiXQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRy YWwvY29tbWl0cy80ZGU1NTZiZDdhNmMvCkNoYW5nZXNldDogICA0ZGU1NTZiZDdhNmMKQnJhbmNo OiAgICAgIHJlbGVhc2VfMTUuMDMKVXNlcjogICAgICAgIGd1ZXJsZXIKRGF0ZTogICAgICAgIDIw MTUtMDMtMTkgMDk6NTA6MzUrMDA6MDAKU3VtbWFyeTogICAgIFVuaWZpZXMgYW5kIGltcHJvdmVz IHRoZSBoYW5kbGluZyBvZiBvcHRpb25hbCBzZWxlY3QgZmllbGRzCkFmZmVjdGVkICM6ICAzIGZp bGVzCgpkaWZmIC1yIGE4YWVjNGQ2MDNhODk2YjE5ZDVjNWUxZjQzNmM0NTI5ZTM3NTJjNTMgLXIg NGRlNTU2YmQ3YTZjNjBiYTA0MjlmYTQ9CjE2YjViMWY3MWRhOTBjMDE3IGNsaWVudC9nYWxheHkv c2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtcGFyYW1ldGVycy5qcwotLS0gYS9jbGllbnQvZ2FsYXh5 L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXBhcmFtZXRlcnMuanMKKysrIGIvY2xpZW50L2dhbGF4 eS9zY3JpcHRzL212Yy90b29scy90b29scy1wYXJhbWV0ZXJzLmpzCkBAIC0xNDUsNiArMTQ1LDcg QEAKICAgICAgICAgICAgICAgICBkYXRhICAgICAgICA6IG9wdGlvbnMsCiAgICAgICAgICAgICAg ICAgZXJyb3JfdGV4dCAgOiBpbnB1dF9kZWYuZXJyb3JfdGV4dCB8fCAnTm8gb3B0aW9ucyBhdmFp bGFibD0KZScsCiAgICAgICAgICAgICAgICAgbXVsdGlwbGUgICAgOiBpbnB1dF9kZWYubXVsdGlw bGUsCisgICAgICAgICAgICAgICAgb3B0aW9uYWwgICAgOiBpbnB1dF9kZWYub3B0aW9uYWwsCiAg ICAgICAgICAgICAgICAgc2VhcmNoYWJsZSAgOiBpbnB1dF9kZWYuc2VhcmNoYWJsZSwKICAgICAg ICAgICAgICAgICBvbmNoYW5nZSAgICA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAg ICBzZWxmLmFwcC50cmlnZ2VyKCdyZWZyZXNoJyk7CgpkaWZmIC1yIGE4YWVjNGQ2MDNhODk2YjE5 ZDVjNWUxZjQzNmM0NTI5ZTM3NTJjNTMgLXIgNGRlNTU2YmQ3YTZjNjBiYTA0MjlmYTQ9CjE2YjVi MWY3MWRhOTBjMDE3IHN0YXRpYy9zY3JpcHRzL212Yy90b29scy90b29scy1wYXJhbWV0ZXJzLmpz Ci0tLSBhL3N0YXRpYy9zY3JpcHRzL212Yy90b29scy90b29scy1wYXJhbWV0ZXJzLmpzCisrKyBi L3N0YXRpYy9zY3JpcHRzL212Yy90b29scy90b29scy1wYXJhbWV0ZXJzLmpzCkBAIC0xNDUsNiAr MTQ1LDcgQEAKICAgICAgICAgICAgICAgICBkYXRhICAgICAgICA6IG9wdGlvbnMsCiAgICAgICAg ICAgICAgICAgZXJyb3JfdGV4dCAgOiBpbnB1dF9kZWYuZXJyb3JfdGV4dCB8fCAnTm8gb3B0aW9u cyBhdmFpbGFibD0KZScsCiAgICAgICAgICAgICAgICAgbXVsdGlwbGUgICAgOiBpbnB1dF9kZWYu bXVsdGlwbGUsCisgICAgICAgICAgICAgICAgb3B0aW9uYWwgICAgOiBpbnB1dF9kZWYub3B0aW9u YWwsCiAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZSAgOiBpbnB1dF9kZWYuc2VhcmNoYWJsZSwK ICAgICAgICAgICAgICAgICBvbmNoYW5nZSAgICA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg ICAgICAgICBzZWxmLmFwcC50cmlnZ2VyKCdyZWZyZXNoJyk7CgpkaWZmIC1yIGE4YWVjNGQ2MDNh ODk2YjE5ZDVjNWUxZjQzNmM0NTI5ZTM3NTJjNTMgLXIgNGRlNTU2YmQ3YTZjNjBiYTA0MjlmYTQ9 CjE2YjViMWY3MWRhOTBjMDE3IHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvdG9vbHMvdG9vbHMt cGFyYW1ldGVycy5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xz LXBhcmFtZXRlcnMuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy90b29scy90b29s cy1wYXJhbWV0ZXJzLmpzCkBAIC0xLDEgKzEsMSBAQAotZGVmaW5lKFsidXRpbHMvdXRpbHMiLCJt dmMvdWkvdWktbWlzYyIsIm12Yy90b29scy90b29scy1zZWxlY3QtY29udGVudCIsIm09CnZjL3Vp L3VpLWNvbG9yLXBpY2tlciJdLGZ1bmN0aW9uKGMsZCxhLGIpe3JldHVybiBCYWNrYm9uZS5Nb2Rl bC5leHRlbmQoe3R5cD0KZXM6e3RleHQ6Il9maWVsZFRleHQiLHNlbGVjdDoiX2ZpZWxkU2VsZWN0 IixkYXRhX2NvbHVtbjoiX2ZpZWxkU2VsZWN0IixnZW5vPQptZWJ1aWxkOiJfZmllbGRTZWxlY3Qi LGRhdGE6Il9maWVsZERhdGEiLGRhdGFfY29sbGVjdGlvbjoiX2ZpZWxkRGF0YSIsaW50ZWc9CmVy OiJfZmllbGRTbGlkZXIiLCJmbG9hdCI6Il9maWVsZFNsaWRlciIsImJvb2xlYW4iOiJfZmllbGRC b29sZWFuIixkcmlsbF9kbz0Kd246Il9maWVsZERyaWxsZG93biIsY29sb3I6Il9maWVsZENvbG9y IixoaWRkZW46Il9maWVsZEhpZGRlbiIsaGlkZGVuX2RhdGE6PQoiX2ZpZWxkSGlkZGVuIixiYXNl dXJsOiJfZmllbGRIaWRkZW4iLH0saW5pdGlhbGl6ZTpmdW5jdGlvbihmLGUpe3RoaXMuYXBwPQo9 M0RmfSxjcmVhdGU6ZnVuY3Rpb24oZSl7aWYoZS52YWx1ZT0zRD0zRD0zRHVuZGVmaW5lZCl7ZS52 YWx1ZT0zRG51bGx9aWYoZS49CmRlZmF1bHRfdmFsdWU9M0Q9M0Q9M0R1bmRlZmluZWQpe2UuZGVm YXVsdF92YWx1ZT0zRGUudmFsdWV9dmFyIGc9M0RudWxsO3Zhcj0KIGY9M0R0aGlzLnR5cGVzW2Uu dHlwZV07aWYoZiYmdHlwZW9mKHRoaXNbZl0pPTNEPTNEPTNEImZ1bmN0aW9uIil7Zz0zRHRoaXNb PQpmXS5jYWxsKHRoaXMsZSl9aWYoIWcpe3RoaXMuYXBwLmluY29tcGF0aWJsZT0zRHRydWU7aWYo ZS5vcHRpb25zKXtnPTNEdGhpcy49Cl9maWVsZFNlbGVjdChlKX1lbHNle2c9M0R0aGlzLl9maWVs ZFRleHQoZSl9Y29uc29sZS5kZWJ1ZygidG9vbHMtZm9ybTo6X2FkZD0KUm93KCkgOiBBdXRvIG1h dGNoZWQgZmllbGQgdHlwZSAoIitlLnR5cGUrIikuIil9aWYoZS52YWx1ZSE9M0Q9M0R1bmRlZmlu ZWQpPQp7Zy52YWx1ZShlLnZhbHVlKX1yZXR1cm4gZ30sX2ZpZWxkRGF0YTpmdW5jdGlvbihlKXtp ZighdGhpcy5hcHAub3B0aW9ucy5pc189CmR5bmFtaWMpe2UuaW5mbz0zRCJEYXRhIGlucHV0ICci K2UubmFtZSsiJyAoIitjLnRleHRpZnkoZS5leHRlbnNpb25zLnRvU3RyaT0KbmcoKSkrIikiO2Uu dmFsdWU9M0RudWxsO3JldHVybiB0aGlzLl9maWVsZEhpZGRlbihlKX12YXIgZj0zRHRoaXM7cmV0 dXJuIG5lPQp3IGEuVmlldyh0aGlzLmFwcCx7aWQ6ImZpZWxkLSIrZS5pZCxleHRlbnNpb25zOmUu ZXh0ZW5zaW9ucyxvcHRpb25hbDplLm9wdGk9Cm9uYWwsbXVsdGlwbGU6ZS5tdWx0aXBsZSx0eXBl OmUudHlwZSxkYXRhOmUub3B0aW9ucyxvbmNoYW5nZTpmdW5jdGlvbigpe2YuYT0KcHAudHJpZ2dl cigicmVmcmVzaCIpfX0pfSxfZmllbGRTZWxlY3Q6ZnVuY3Rpb24oZSl7aWYoIXRoaXMuYXBwLm9w dGlvbnMuaXNfPQpkeW5hbWljJiZlLmlzX2R5bmFtaWMpe3JldHVybiB0aGlzLl9maWVsZFRleHQo ZSl9aWYoZS50eXBlPTNEPTNEImRhdGFfY29sdW09Cm4iKXtlLmVycm9yX3RleHQ9M0QiTWlzc2lu ZyBjb2x1bW5zIGluIHJlZmVyZW5jZWQgZGF0YXNldC4ifWlmKGUudHlwZT0zRD0zRD0KImdlbm9t ZWJ1aWxkIil7ZS5zZWFyY2hhYmxlPTNEdHJ1ZX12YXIgZz0zRFtdO2Zvcih2YXIgaCBpbiBlLm9w dGlvbnMpe3ZhciBqPQo9M0RlLm9wdGlvbnNbaF07Zy5wdXNoKHtsYWJlbDpqWzBdLHZhbHVlOmpb MV19KX12YXIgaz0zRGQuU2VsZWN0O3N3aXRjaChlLmQ9CmlzcGxheSl7Y2FzZSJjaGVja2JveGVz IjprPTNEZC5DaGVja2JveDticmVhaztjYXNlInJhZGlvIjprPTNEZC5SYWRpbzticmVhaz0KfXZh ciBmPTNEdGhpcztyZXR1cm4gbmV3IGsuVmlldyh7aWQ6ImZpZWxkLSIrZS5pZCxkYXRhOmcsZXJy b3JfdGV4dDplLmVycm9yPQpfdGV4dHx8Ik5vIG9wdGlvbnMgYXZhaWxhYmxlIixtdWx0aXBsZTpl Lm11bHRpcGxlLHNlYXJjaGFibGU6ZS5zZWFyY2hhYmxlLG89Cm5jaGFuZ2U6ZnVuY3Rpb24oKXtm LmFwcC50cmlnZ2VyKCJyZWZyZXNoIil9fSl9LF9maWVsZERyaWxsZG93bjpmdW5jdGlvbihlKT0K e2lmKCF0aGlzLmFwcC5vcHRpb25zLmlzX2R5bmFtaWMmJmUuaXNfZHluYW1pYyl7cmV0dXJuIHRo aXMuX2ZpZWxkVGV4dChlKX12PQphciBmPTNEdGhpcztyZXR1cm4gbmV3IGQuRHJpbGxkb3duLlZp ZXcoe2lkOiJmaWVsZC0iK2UuaWQsZGF0YTplLm9wdGlvbnMsZGk9CnNwbGF5OmUuZGlzcGxheSxv bmNoYW5nZTpmdW5jdGlvbigpe2YuYXBwLnRyaWdnZXIoInJlZnJlc2giKX19KX0sX2ZpZWxkVGV4 dD0KOmZ1bmN0aW9uKGUpe2lmKGUub3B0aW9ucyl7ZS5hcmVhPTNEZS5tdWx0aXBsZTtpZighYy52 YWxpZGF0ZShlLnZhbHVlKSl7ZS52PQphbHVlPTNEIiJ9ZWxzZXtpZihlLnZhbHVlIGluc3RhbmNl b2YgQXJyYXkpe2UudmFsdWU9M0R2YWx1ZS50b1N0cmluZygpfWVsc2U9CntlLnZhbHVlPTNEU3Ry aW5nKGUudmFsdWUpLnJlcGxhY2UoL1tcW1xdJyJcc10vZywiIik7aWYoZS5tdWx0aXBsZSl7ZS52 YWx1ZT0KPTNEZS52YWx1ZS5yZXBsYWNlKC8sL2csIlxuIil9fX19dmFyIGY9M0R0aGlzO3JldHVy biBuZXcgZC5JbnB1dCh7aWQ6ImZpZWxkPQotIitlLmlkLGFyZWE6ZS5hcmVhLG9uY2hhbmdlOmZ1 bmN0aW9uKCl7Zi5hcHAudHJpZ2dlcigicmVmcmVzaCIpfX0pfSxfZmllbGQ9ClNsaWRlcjpmdW5j dGlvbihlKXt2YXIgZj0zRHRoaXM7cmV0dXJuIG5ldyBkLlNsaWRlci5WaWV3KHtpZDoiZmllbGQt IitlLmlkLD0KcHJlY2lzZTplLnR5cGU9M0Q9M0QiZmxvYXQiLG1pbjplLm1pbixtYXg6ZS5tYXgs b25jaGFuZ2U6ZnVuY3Rpb24oKXtmLmFwcC50PQpyaWdnZXIoInJlZnJlc2giKX19KX0sX2ZpZWxk SGlkZGVuOmZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZC5IaWRkZW4oe2lkOiJmaWU9CmxkLSIrZS5p ZCxpbmZvOmUuaW5mb30pfSxfZmllbGRCb29sZWFuOmZ1bmN0aW9uKGUpe3ZhciBmPTNEdGhpczty ZXR1cm4gbmV3ID0KZC5SYWRpb0J1dHRvbi5WaWV3KHtpZDoiZmllbGQtIitlLmlkLGRhdGE6W3ts YWJlbDoiWWVzIix2YWx1ZToidHJ1ZSJ9LHtsYWJlPQpsOiJObyIsdmFsdWU6ImZhbHNlIn1dLG9u Y2hhbmdlOmZ1bmN0aW9uKCl7Zi5hcHAudHJpZ2dlcigicmVmcmVzaCIpfX0pfSxfZmk9CmVsZENv bG9yOmZ1bmN0aW9uKGUpe3ZhciBmPTNEdGhpcztyZXR1cm4gbmV3IGIoe2lkOiJmaWVsZC0iK2Uu aWQsb25jaGFuZ2U6Zj0KdW5jdGlvbigpe2YuYXBwLnRyaWdnZXIoInJlZnJlc2giKX19KX19KTty ZXR1cm57VmlldzpWaWV3fX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RlZmluZShb InV0aWxzL3V0aWxzIiwibXZjL3VpL3VpLW1pc2MiLCJtdmMvdG9vbHMvdG9vbHMtc2VsZWN0LWNv bnRlbnQiLCJtPQp2Yy91aS91aS1jb2xvci1waWNrZXIiXSxmdW5jdGlvbihjLGQsYSxiKXtyZXR1 cm4gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHt0eXA9CmVzOnt0ZXh0OiJfZmllbGRUZXh0IixzZWxl Y3Q6Il9maWVsZFNlbGVjdCIsZGF0YV9jb2x1bW46Il9maWVsZFNlbGVjdCIsZ2Vubz0KbWVidWls ZDoiX2ZpZWxkU2VsZWN0IixkYXRhOiJfZmllbGREYXRhIixkYXRhX2NvbGxlY3Rpb246Il9maWVs ZERhdGEiLGludGVnPQplcjoiX2ZpZWxkU2xpZGVyIiwiZmxvYXQiOiJfZmllbGRTbGlkZXIiLCJi b29sZWFuIjoiX2ZpZWxkQm9vbGVhbiIsZHJpbGxfZG89CnduOiJfZmllbGREcmlsbGRvd24iLGNv bG9yOiJfZmllbGRDb2xvciIsaGlkZGVuOiJfZmllbGRIaWRkZW4iLGhpZGRlbl9kYXRhOj0KIl9m aWVsZEhpZGRlbiIsYmFzZXVybDoiX2ZpZWxkSGlkZGVuIix9LGluaXRpYWxpemU6ZnVuY3Rpb24o ZixlKXt0aGlzLmFwcD0KPTNEZn0sY3JlYXRlOmZ1bmN0aW9uKGUpe2lmKGUudmFsdWU9M0Q9M0Q9 M0R1bmRlZmluZWQpe2UudmFsdWU9M0RudWxsfWlmKGUuPQpkZWZhdWx0X3ZhbHVlPTNEPTNEPTNE dW5kZWZpbmVkKXtlLmRlZmF1bHRfdmFsdWU9M0RlLnZhbHVlfXZhciBnPTNEbnVsbDt2YXI9CiBm PTNEdGhpcy50eXBlc1tlLnR5cGVdO2lmKGYmJnR5cGVvZih0aGlzW2ZdKT0zRD0zRD0zRCJmdW5j dGlvbiIpe2c9M0R0aGlzWz0KZl0uY2FsbCh0aGlzLGUpfWlmKCFnKXt0aGlzLmFwcC5pbmNvbXBh dGlibGU9M0R0cnVlO2lmKGUub3B0aW9ucyl7Zz0zRHRoaXMuPQpfZmllbGRTZWxlY3QoZSl9ZWxz ZXtnPTNEdGhpcy5fZmllbGRUZXh0KGUpfWNvbnNvbGUuZGVidWcoInRvb2xzLWZvcm06Ol9hZGQ9 ClJvdygpIDogQXV0byBtYXRjaGVkIGZpZWxkIHR5cGUgKCIrZS50eXBlKyIpLiIpfWlmKGUudmFs dWUhPTNEPTNEdW5kZWZpbmVkKT0Ke2cudmFsdWUoZS52YWx1ZSl9cmV0dXJuIGd9LF9maWVsZERh dGE6ZnVuY3Rpb24oZSl7aWYoIXRoaXMuYXBwLm9wdGlvbnMuaXNfPQpkeW5hbWljKXtlLmluZm89 M0QiRGF0YSBpbnB1dCAnIitlLm5hbWUrIicgKCIrYy50ZXh0aWZ5KGUuZXh0ZW5zaW9ucy50b1N0 cmk9Cm5nKCkpKyIpIjtlLnZhbHVlPTNEbnVsbDtyZXR1cm4gdGhpcy5fZmllbGRIaWRkZW4oZSl9 dmFyIGY9M0R0aGlzO3JldHVybiBuZT0KdyBhLlZpZXcodGhpcy5hcHAse2lkOiJmaWVsZC0iK2Uu aWQsZXh0ZW5zaW9uczplLmV4dGVuc2lvbnMsb3B0aW9uYWw6ZS5vcHRpPQpvbmFsLG11bHRpcGxl OmUubXVsdGlwbGUsdHlwZTplLnR5cGUsZGF0YTplLm9wdGlvbnMsb25jaGFuZ2U6ZnVuY3Rpb24o KXtmLmE9CnBwLnRyaWdnZXIoInJlZnJlc2giKX19KX0sX2ZpZWxkU2VsZWN0OmZ1bmN0aW9uKGUp e2lmKCF0aGlzLmFwcC5vcHRpb25zLmlzXz0KZHluYW1pYyYmZS5pc19keW5hbWljKXtyZXR1cm4g dGhpcy5fZmllbGRUZXh0KGUpfWlmKGUudHlwZT0zRD0zRCJkYXRhX2NvbHVtPQpuIil7ZS5lcnJv cl90ZXh0PTNEIk1pc3NpbmcgY29sdW1ucyBpbiByZWZlcmVuY2VkIGRhdGFzZXQuIn1pZihlLnR5 cGU9M0Q9M0Q9CiJnZW5vbWVidWlsZCIpe2Uuc2VhcmNoYWJsZT0zRHRydWV9dmFyIGc9M0RbXTtm b3IodmFyIGggaW4gZS5vcHRpb25zKXt2YXIgaj0KPTNEZS5vcHRpb25zW2hdO2cucHVzaCh7bGFi ZWw6alswXSx2YWx1ZTpqWzFdfSl9dmFyIGs9M0RkLlNlbGVjdDtzd2l0Y2goZS5kPQppc3BsYXkp e2Nhc2UiY2hlY2tib3hlcyI6az0zRGQuQ2hlY2tib3g7YnJlYWs7Y2FzZSJyYWRpbyI6az0zRGQu UmFkaW87YnJlYWs9Cn12YXIgZj0zRHRoaXM7cmV0dXJuIG5ldyBrLlZpZXcoe2lkOiJmaWVsZC0i K2UuaWQsZGF0YTpnLGVycm9yX3RleHQ6ZS5lcnJvcj0KX3RleHR8fCJObyBvcHRpb25zIGF2YWls YWJsZSIsbXVsdGlwbGU6ZS5tdWx0aXBsZSxvcHRpb25hbDplLm9wdGlvbmFsLHNlYXJjPQpoYWJs ZTplLnNlYXJjaGFibGUsb25jaGFuZ2U6ZnVuY3Rpb24oKXtmLmFwcC50cmlnZ2VyKCJyZWZyZXNo Iil9fSl9LF9maWVsZEQ9CnJpbGxkb3duOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLmFwcC5vcHRpb25z LmlzX2R5bmFtaWMmJmUuaXNfZHluYW1pYyl7cmV0dXJuID0KdGhpcy5fZmllbGRUZXh0KGUpfXZh ciBmPTNEdGhpcztyZXR1cm4gbmV3IGQuRHJpbGxkb3duLlZpZXcoe2lkOiJmaWVsZC0iK2UuPQpp ZCxkYXRhOmUub3B0aW9ucyxkaXNwbGF5OmUuZGlzcGxheSxvbmNoYW5nZTpmdW5jdGlvbigpe2Yu YXBwLnRyaWdnZXIoInJlZnI9CmVzaCIpfX0pfSxfZmllbGRUZXh0OmZ1bmN0aW9uKGUpe2lmKGUu b3B0aW9ucyl7ZS5hcmVhPTNEZS5tdWx0aXBsZTtpZighYy52YT0KbGlkYXRlKGUudmFsdWUpKXtl LnZhbHVlPTNEIiJ9ZWxzZXtpZihlLnZhbHVlIGluc3RhbmNlb2YgQXJyYXkpe2UudmFsdWU9M0R2 PQphbHVlLnRvU3RyaW5nKCl9ZWxzZXtlLnZhbHVlPTNEU3RyaW5nKGUudmFsdWUpLnJlcGxhY2Uo L1tcW1xdJyJcc10vZywiIik7aWY9CihlLm11bHRpcGxlKXtlLnZhbHVlPTNEZS52YWx1ZS5yZXBs YWNlKC8sL2csIlxuIil9fX19dmFyIGY9M0R0aGlzO3JldHVybiBuZT0KdyBkLklucHV0KHtpZDoi ZmllbGQtIitlLmlkLGFyZWE6ZS5hcmVhLG9uY2hhbmdlOmZ1bmN0aW9uKCl7Zi5hcHAudHJpZ2dl cigiPQpyZWZyZXNoIil9fSl9LF9maWVsZFNsaWRlcjpmdW5jdGlvbihlKXt2YXIgZj0zRHRoaXM7 cmV0dXJuIG5ldyBkLlNsaWRlci5WaWU9Cncoe2lkOiJmaWVsZC0iK2UuaWQscHJlY2lzZTplLnR5 cGU9M0Q9M0QiZmxvYXQiLG1pbjplLm1pbixtYXg6ZS5tYXgsb25jaGFuZz0KZTpmdW5jdGlvbigp e2YuYXBwLnRyaWdnZXIoInJlZnJlc2giKX19KX0sX2ZpZWxkSGlkZGVuOmZ1bmN0aW9uKGUpe3Jl dHVybiBuPQpldyBkLkhpZGRlbih7aWQ6ImZpZWxkLSIrZS5pZCxpbmZvOmUuaW5mb30pfSxfZmll bGRCb29sZWFuOmZ1bmN0aW9uKGUpe3ZhciA9CmY9M0R0aGlzO3JldHVybiBuZXcgZC5SYWRpb0J1 dHRvbi5WaWV3KHtpZDoiZmllbGQtIitlLmlkLGRhdGE6W3tsYWJlbDoiWWVzIj0KLHZhbHVlOiJ0 cnVlIn0se2xhYmVsOiJObyIsdmFsdWU6ImZhbHNlIn1dLG9uY2hhbmdlOmZ1bmN0aW9uKCl7Zi5h cHAudHJpZ2dlPQpyKCJyZWZyZXNoIil9fSl9LF9maWVsZENvbG9yOmZ1bmN0aW9uKGUpe3ZhciBm PTNEdGhpcztyZXR1cm4gbmV3IGIoe2lkOiJmaWU9CmxkLSIrZS5pZCxvbmNoYW5nZTpmdW5jdGlv bigpe2YuYXBwLnRyaWdnZXIoInJlZnJlc2giKX19KX19KTtyZXR1cm57VmlldzpWaT0KZXd9fSk7 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxh eHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8xNmNhMTlmMTJhNGYvCkNoYW5nZXNldDogICAxNmNh MTlmMTJhNGYKQnJhbmNoOiAgICAgIHJlbGVhc2VfMTUuMDMKVXNlcjogICAgICAgIGRhbgpEYXRl OiAgICAgICAgMjAxNS0wMy0yMCAyMjoxODowOCswMDowMApTdW1tYXJ5OiAgICAgRml4IGRpc3Bs YXlpbmcgYW4gZXJyb3IgbWVzc2FnZSB3aGVuIGEgdXNlciBjYW5ub3QgdmlldyBhIGhpc3Q9Cm9y eS4gUHJldmlvdXNseSwgaXQgd2FzIHRocm93aW5nIGEgc2VydmVyIGVycm9yIHdoZW4gaXQgd2Fz IGF0dGVtcHRpbmcgdG8gZD0KaXNwbGF5IGZyb20gYW4gZW1wdHkgaGlzdG9yeV9kaWN0LgpBZmZl Y3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDRkZTU1NmJkN2E2YzYwYmEwNDI5ZmE0MTZiNWIxZjcx ZGE5MGMwMTcgLXIgMTZjYTE5ZjEyYTRmNmIyNjg3ZWMxYWQ9CjEzYzdiZTBlZWVjNmU1ZTgwIGxp Yi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvaGlzdG9yeS5weQotLS0gYS9saWIv Z2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2hpc3RvcnkucHkKKysrIGIvbGliL2dh bGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9oaXN0b3J5LnB5CkBAIC02MDUsOSArNjA1 LDEzIEBACj0yMAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBleGM6CiAgICAgICAgICAgICB1 c2VyX2lkID0zRCBzdHIoIHRyYW5zLnVzZXIuaWQgKSBpZiB0cmFucy51c2VyIGVsc2UgJyhhbm9u eW1vdT0KcyknCi0gICAgICAgICAgICBsb2cuZXhjZXB0aW9uKCAnRXJyb3IgYm9vdHN0cmFwcGlu ZyBoaXN0b3J5IGZvciB1c2VyICVzOiAlcycsID0KdXNlcl9pZCwgc3RyKCBleGMgKSApCi0gICAg ICAgICAgICBoaXN0b3J5X2RpY3Rpb25hcnlbICdlcnJvcicgXSA9M0QgKCAnQW4gZXJyb3Igb2Nj dXJyZWQgZ2V0dGluZz0KIHRoZSBoaXN0b3J5IGRhdGEgZnJvbSB0aGUgc2VydmVyLiAnCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJ1BsZWFzZSBjb250YWN0 IGEgR2FsYXh5IGFkbT0KaW5pc3RyYXRvciBpZiB0aGUgcHJvYmxlbSBwZXJzaXN0cy4nICkKKyAg ICAgICAgICAgIGxvZy5leGNlcHRpb24oICdFcnJvciBib290c3RyYXBwaW5nIGhpc3RvcnkgZm9y IHVzZXIgJXM6ICVzJywgPQp1c2VyX2lkLCBleGMgKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5j ZSggZXhjLCBleGNlcHRpb25zLkl0ZW1BY2Nlc3NpYmlsaXR5RXhjZXB0aW9uICk6CisgICAgICAg ICAgICAgICAgZXJyb3JfbXNnID0zRCAnWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gdmll dyB0aGlzIGhpcz0KdG9yeS4nCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVy cm9yX21zZyA9M0QgKCAnQW4gZXJyb3Igb2NjdXJyZWQgZ2V0dGluZyB0aGUgaGlzdG9yeSBkYXQ9 CmEgZnJvbSB0aGUgc2VydmVyLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICdQ bGVhc2UgY29udGFjdCBhIEdhbGF4eSBhZG1pbmlzdHJhdG9yIGlmID0KdGhlIHByb2JsZW0gcGVy c2lzdHMuJyApCisgICAgICAgICAgICByZXR1cm4gdHJhbnMuc2hvd19lcnJvcl9tZXNzYWdlKCBl cnJvcl9tc2csIHVzZV9wYW5lbHM9M0R1c2VfcD0KYW5lbHMgKQo9MjAKICAgICAgICAgcmV0dXJu IHRyYW5zLmZpbGxfdGVtcGxhdGVfbWFrbyggImhpc3Rvcnkvdmlldy5tYWtvIiwKICAgICAgICAg ICAgIGhpc3Rvcnk9M0RoaXN0b3J5X2RpY3Rpb25hcnksIGhkYXM9M0RoZGFfZGljdGlvbmFyaWVz LCB1c2VyX2lzPQpfb3duZXI9M0R1c2VyX2lzX293bmVyLAoKCmh0dHBzOi8vYml0YnVja2V0Lm9y Zy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy85ODhjYzRkZGEyMTIvCkNoYW5nZXNldDog ICA5ODhjYzRkZGEyMTIKQnJhbmNoOiAgICAgIHJlbGVhc2VfMTUuMDMKVXNlcjogICAgICAgIGpt Y2hpbHRvbgpEYXRlOiAgICAgICAgMjAxNS0wMy0yNCAxNTo0MzozMCswMDowMApTdW1tYXJ5OiAg ICAgRml4IGxvZ2dpbmdfY29ubmVjdGlvbl9wcm94eSBmb3Igc3FsYWxjaGVteSB1cGdyYWRlLgoK VGhlIGltcG9ydCAqIGlzIG5vdyBpbXBvcnRpbmcgc29tZXRoaW5nIGNhbGwgaW5zcGVjdCB3aGlj aCBpcyBtYXNraW5nIHRoZSBhPQpjdHVhbCBkZXNpcmVkIGluc3BlY3QgaW1wb3J0IGFib3ZlIGl0 LgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDE2Y2ExOWYxMmE0ZjZiMjY4N2VjMWFkMTNj N2JlMGVlZWM2ZTVlODAgLXIgOTg4Y2M0ZGRhMjEyOWZiZDAwZDgzZDI9CmMxMjY0NWZhZmY4Y2Jl N2U5IGxpYi9nYWxheHkvbW9kZWwvb3JtL2xvZ2dpbmdfY29ubmVjdGlvbl9wcm94eS5weQotLS0g YS9saWIvZ2FsYXh5L21vZGVsL29ybS9sb2dnaW5nX2Nvbm5lY3Rpb25fcHJveHkucHkKKysrIGIv bGliL2dhbGF4eS9tb2RlbC9vcm0vbG9nZ2luZ19jb25uZWN0aW9uX3Byb3h5LnB5CkBAIC0yLDcg KzIsNyBAQAogaW1wb3J0IGluc3BlY3QKIGltcG9ydCBvcwo9MjAKLWZyb20gZ2FsYXh5Lm1vZGVs Lm9ybSBpbXBvcnQgKgorZnJvbSBnYWxheHkubW9kZWwub3JtIGltcG9ydCBDb25uZWN0aW9uUHJv eHkKPTIwCiBpbXBvcnQgbG9nZ2luZwo9MjAKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5 L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvNDlkNTBiY2U0NjMyLwpDaGFuZ2VzZXQ6ICAgNDlkNTBi Y2U0NjMyCkJyYW5jaDogICAgICByZWxlYXNlXzE1LjAzClVzZXI6ICAgICAgICBtYXJ0ZW5zb24K RGF0ZTogICAgICAgIDIwMTUtMDMtMjQgMTY6MTQ6MTErMDA6MDAKU3VtbWFyeTogICAgIGFkZCBy b290IHByZWZpeCB0byBhbGwgbGlicmFyeSBCQiBtb2RlbCB1cmxzCkFmZmVjdGVkICM6ICAzIGZp bGVzCgpkaWZmIC1yIDk4OGNjNGRkYTIxMjlmYmQwMGQ4M2QyYzEyNjQ1ZmFmZjhjYmU3ZTkgLXIg NDlkNTBiY2U0NjMyMDZmNDQ1MDYzZDI9CmIyN2IyZjJiMzkzYWRiZTExIGNsaWVudC9nYWxheHkv c2NyaXB0cy9tdmMvbGlicmFyeS9saWJyYXJ5LW1vZGVsLmpzCi0tLSBhL2NsaWVudC9nYWxheHkv c2NyaXB0cy9tdmMvbGlicmFyeS9saWJyYXJ5LW1vZGVsLmpzCisrKyBiL2NsaWVudC9nYWxheHkv c2NyaXB0cy9tdmMvbGlicmFyeS9saWJyYXJ5LW1vZGVsLmpzCkBAIC00LDcgKzQsNyBAQAogLy8g TElCUkFSWSBSRUxBVEVEIE1PREVMUwo9MjAKICAgICB2YXIgTGlicmFyeSA9M0QgQmFja2JvbmUu TW9kZWwuZXh0ZW5kKHsKLSAgICAgIHVybFJvb3Q6ICcvYXBpL2xpYnJhcmllcy8nLAorICAgICAg dXJsUm9vdDogKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcv JyApICsgJ2FwaS89CmxpYnJhcmllcy8nLAo9MjAKICAgICAgIC8qKiBiYXNlZCBvbiBzaG93X2Rl bGV0ZWQgd291bGQgdGhpcyBsaWIgc2hvdyBpbiB0aGUgbGlzdCBvZiBsaWIncz8KICAgICAgICAq ICBAcGFyYW0ge0Jvb2xlYW59IHNob3dfZGVsZXRlZCBhcmUgd2UgaW5jbHVkaW5nIGRlbGV0ZWQg bGlicmFyaWVzPwpAQCAtMTksNyArMTksNyBAQAogICAgIH0pOwo9MjAKICAgICB2YXIgTGlicmFy aWVzID0zRCBCYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVuZCh7Ci0gICAgICB1cmw6ICcvYXBpL2xp YnJhcmllcycsCisgICAgICB1cmw6ICggd2luZG93LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29u ZmlnLnJvb3QgOiAnLycgKSArICdhcGkvbGlicj0KYXJpZXMnLAo9MjAKICAgICAgIG1vZGVsOiBM aWJyYXJ5LAo9MjAKQEAgLTg0LDE1ICs4NCwxNSBAQAogLy8gRk9MREVSIFJFTEFURUQgTU9ERUxT Cj0yMAogICAgIHZhciBJdGVtID0zRCBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoewotICAgICAgdXJs Um9vdCA6ICcvYXBpL2xpYnJhcmllcy9kYXRhc2V0cy8nCisgICAgICB1cmxSb290IDogKCB3aW5k b3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcvJyApICsgJ2FwaT0KL2xp YnJhcmllcy9kYXRhc2V0cy8nCiAgICAgfSk7Cj0yMAogICAgIHZhciBMZGRhID0zRCBCYWNrYm9u ZS5Nb2RlbC5leHRlbmQoewotICAgICAgdXJsUm9vdCA6ICcvYXBpL2xpYnJhcmllcy9kYXRhc2V0 cy8nCisgICAgICB1cmxSb290IDogKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25m aWcucm9vdCA6ICcvJyApICsgJ2FwaT0KL2xpYnJhcmllcy9kYXRhc2V0cy8nCiAgICAgfSk7Cj0y MAogICAgIHZhciBGb2xkZXJBc01vZGVsID0zRCBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoewotICAg ICAgdXJsUm9vdDogJy9hcGkvZm9sZGVycycKKyAgICAgIHVybFJvb3Q6ICggd2luZG93LmdhbGF4 eV9jb25maWcgPyBnYWxheHlfY29uZmlnLnJvb3QgOiAnLycgKSArICdhcGkvPQpmb2xkZXJzJwog ICAgIH0pOwo9MjAKICAgICB2YXIgRm9sZGVyID0zRCBCYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVu ZCh7CkBAIC0xNTIsNyArMTUyLDcgQEAKICAgICB2YXIgRm9sZGVyQ29udGFpbmVyID0zRCBCYWNr Ym9uZS5Nb2RlbC5leHRlbmQoewogICAgICAgICBkZWZhdWx0cyA6IHsKICAgICAgICAgICAgIGZv bGRlciA6IG5ldyBGb2xkZXIoKSwKLSAgICAgICAgICAgIHVybFJvb3QgOiAiL2FwaS9mb2xkZXJz LyIsCisgICAgICAgICAgICB1cmxSb290IDogKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4 eV9jb25maWcucm9vdCA6ICcvJyApID0KKyAnYXBpL2ZvbGRlcnMvJywKICAgICAgICAgICAgIGlk IDogInVua25vd24iCiAgICAgICAgIH0sCiAgICAgcGFyc2UgOiBmdW5jdGlvbihvYmopIHsKQEAg LTE2OSwxMSArMTY5LDExIEBACiAvLyBUT0RPIFVOSVRFCj0yMAogICAgIHZhciBIaXN0b3J5SXRl bSA9M0QgQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHsKLSAgICAgIHVybFJvb3QgOiAnL2FwaS9oaXN0 b3JpZXMvJworICAgICAgdXJsUm9vdCA6ICggd2luZG93LmdhbGF4eV9jb25maWcgPyBnYWxheHlf Y29uZmlnLnJvb3QgOiAnLycgKSArICdhcGk9Ci9oaXN0b3JpZXMvJwogICAgIH0pOwo9MjAKICAg ICB2YXIgSGlzdG9yeUNvbnRlbnRzID0zRCBCYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVuZCh7Ci0g ICAgICB1cmxSb290IDogJy9hcGkvaGlzdG9yaWVzLycsCisgICAgICB1cmxSb290IDogKCB3aW5k b3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcvJyApICsgJ2FwaT0KL2hp c3Rvcmllcy8nLAogICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9ucyl7CiAgICAgICAg IHRoaXMuaWQgPTNEIG9wdGlvbnMuaWQ7CiAgICAgICB9LApAQCAtMTg0LDExICsxODQsMTEgQEAK ICAgICB9KTsKPTIwCiAgICAgdmFyIEdhbGF4eUhpc3RvcnkgPTNEIEJhY2tib25lLk1vZGVsLmV4 dGVuZCh7Ci0gICAgICB1cmxSb290IDogJy9hcGkvaGlzdG9yaWVzLycKKyAgICAgIHVybFJvb3Qg OiAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZpZy5yb290IDogJy8nICkgKyAn YXBpPQovaGlzdG9yaWVzLycKICAgICB9KTsKPTIwCiAgICAgdmFyIEdhbGF4eUhpc3RvcmllcyA9 M0QgQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoewotICAgICAgdXJsIDogJy9hcGkvaGlzdG9y aWVzJywKKyAgICAgIHVybCA6ICggd2luZG93LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29uZmln LnJvb3QgOiAnLycgKSArICdhcGkvaGlzPQp0b3JpZXMnLAogICAgICAgbW9kZWwgOiBHYWxheHlI aXN0b3J5CiAgICAgfSk7Cj0yMApAQCAtMTk5LDcgKzE5OSw3IEBACiAgICAgICovCiAgICA9MjAK ICAgICB2YXIgSnN0cmVlID0zRCBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoewotICAgICAgdXJsUm9v dDogJy9hcGkvcmVtb3RlX2ZpbGVzJworICAgICAgdXJsUm9vdDogKCB3aW5kb3cuZ2FsYXh5X2Nv bmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcvJyApICsgJ2FwaS89CnJlbW90ZV9maWxlcycK ICAgICB9KTsKPTIwCiByZXR1cm4gewoKZGlmZiAtciA5ODhjYzRkZGEyMTI5ZmJkMDBkODNkMmMx MjY0NWZhZmY4Y2JlN2U5IC1yIDQ5ZDUwYmNlNDYzMjA2ZjQ0NTA2M2QyPQpiMjdiMmYyYjM5M2Fk YmUxMSBzdGF0aWMvc2NyaXB0cy9tdmMvbGlicmFyeS9saWJyYXJ5LW1vZGVsLmpzCi0tLSBhL3N0 YXRpYy9zY3JpcHRzL212Yy9saWJyYXJ5L2xpYnJhcnktbW9kZWwuanMKKysrIGIvc3RhdGljL3Nj cmlwdHMvbXZjL2xpYnJhcnkvbGlicmFyeS1tb2RlbC5qcwpAQCAtNCw3ICs0LDcgQEAKIC8vIExJ QlJBUlkgUkVMQVRFRCBNT0RFTFMKPTIwCiAgICAgdmFyIExpYnJhcnkgPTNEIEJhY2tib25lLk1v ZGVsLmV4dGVuZCh7Ci0gICAgICB1cmxSb290OiAnL2FwaS9saWJyYXJpZXMvJywKKyAgICAgIHVy bFJvb3Q6ICggd2luZG93LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29uZmlnLnJvb3QgOiAnLycg KSArICdhcGkvPQpsaWJyYXJpZXMvJywKPTIwCiAgICAgICAvKiogYmFzZWQgb24gc2hvd19kZWxl dGVkIHdvdWxkIHRoaXMgbGliIHNob3cgaW4gdGhlIGxpc3Qgb2YgbGliJ3M/CiAgICAgICAgKiAg QHBhcmFtIHtCb29sZWFufSBzaG93X2RlbGV0ZWQgYXJlIHdlIGluY2x1ZGluZyBkZWxldGVkIGxp YnJhcmllcz8KQEAgLTE5LDcgKzE5LDcgQEAKICAgICB9KTsKPTIwCiAgICAgdmFyIExpYnJhcmll cyA9M0QgQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoewotICAgICAgdXJsOiAnL2FwaS9saWJy YXJpZXMnLAorICAgICAgdXJsOiAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZp Zy5yb290IDogJy8nICkgKyAnYXBpL2xpYnI9CmFyaWVzJywKPTIwCiAgICAgICBtb2RlbDogTGli cmFyeSwKPTIwCkBAIC04NCwxNSArODQsMTUgQEAKIC8vIEZPTERFUiBSRUxBVEVEIE1PREVMUwo9 MjAKICAgICB2YXIgSXRlbSA9M0QgQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHsKLSAgICAgIHVybFJv b3QgOiAnL2FwaS9saWJyYXJpZXMvZGF0YXNldHMvJworICAgICAgdXJsUm9vdCA6ICggd2luZG93 LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29uZmlnLnJvb3QgOiAnLycgKSArICdhcGk9Ci9saWJy YXJpZXMvZGF0YXNldHMvJwogICAgIH0pOwo9MjAKICAgICB2YXIgTGRkYSA9M0QgQmFja2JvbmUu TW9kZWwuZXh0ZW5kKHsKLSAgICAgIHVybFJvb3QgOiAnL2FwaS9saWJyYXJpZXMvZGF0YXNldHMv JworICAgICAgdXJsUm9vdCA6ICggd2luZG93LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29uZmln LnJvb3QgOiAnLycgKSArICdhcGk9Ci9saWJyYXJpZXMvZGF0YXNldHMvJwogICAgIH0pOwo9MjAK ICAgICB2YXIgRm9sZGVyQXNNb2RlbCA9M0QgQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHsKLSAgICAg IHVybFJvb3Q6ICcvYXBpL2ZvbGRlcnMnCisgICAgICB1cmxSb290OiAoIHdpbmRvdy5nYWxheHlf Y29uZmlnID8gZ2FsYXh5X2NvbmZpZy5yb290IDogJy8nICkgKyAnYXBpLz0KZm9sZGVycycKICAg ICB9KTsKPTIwCiAgICAgdmFyIEZvbGRlciA9M0QgQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQo ewpAQCAtMTUyLDcgKzE1Miw3IEBACiAgICAgdmFyIEZvbGRlckNvbnRhaW5lciA9M0QgQmFja2Jv bmUuTW9kZWwuZXh0ZW5kKHsKICAgICAgICAgZGVmYXVsdHMgOiB7CiAgICAgICAgICAgICBmb2xk ZXIgOiBuZXcgRm9sZGVyKCksCi0gICAgICAgICAgICB1cmxSb290IDogIi9hcGkvZm9sZGVycy8i LAorICAgICAgICAgICAgdXJsUm9vdCA6ICggd2luZG93LmdhbGF4eV9jb25maWcgPyBnYWxheHlf Y29uZmlnLnJvb3QgOiAnLycgKSA9CisgJ2FwaS9mb2xkZXJzLycsCiAgICAgICAgICAgICBpZCA6 ICJ1bmtub3duIgogICAgICAgICB9LAogICAgIHBhcnNlIDogZnVuY3Rpb24ob2JqKSB7CkBAIC0x NjksMTEgKzE2OSwxMSBAQAogLy8gVE9ETyBVTklURQo9MjAKICAgICB2YXIgSGlzdG9yeUl0ZW0g PTNEIEJhY2tib25lLk1vZGVsLmV4dGVuZCh7Ci0gICAgICB1cmxSb290IDogJy9hcGkvaGlzdG9y aWVzLycKKyAgICAgIHVybFJvb3QgOiAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2Nv bmZpZy5yb290IDogJy8nICkgKyAnYXBpPQovaGlzdG9yaWVzLycKICAgICB9KTsKPTIwCiAgICAg dmFyIEhpc3RvcnlDb250ZW50cyA9M0QgQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoewotICAg ICAgdXJsUm9vdCA6ICcvYXBpL2hpc3Rvcmllcy8nLAorICAgICAgdXJsUm9vdCA6ICggd2luZG93 LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29uZmlnLnJvb3QgOiAnLycgKSArICdhcGk9Ci9oaXN0 b3JpZXMvJywKICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdGlvbnMpewogICAgICAgICB0 aGlzLmlkID0zRCBvcHRpb25zLmlkOwogICAgICAgfSwKQEAgLTE4NCwxMSArMTg0LDExIEBACiAg ICAgfSk7Cj0yMAogICAgIHZhciBHYWxheHlIaXN0b3J5ID0zRCBCYWNrYm9uZS5Nb2RlbC5leHRl bmQoewotICAgICAgdXJsUm9vdCA6ICcvYXBpL2hpc3Rvcmllcy8nCisgICAgICB1cmxSb290IDog KCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcvJyApICsgJ2Fw aT0KL2hpc3Rvcmllcy8nCiAgICAgfSk7Cj0yMAogICAgIHZhciBHYWxheHlIaXN0b3JpZXMgPTNE IEJhY2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kKHsKLSAgICAgIHVybCA6ICcvYXBpL2hpc3Rvcmll cycsCisgICAgICB1cmwgOiAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZpZy5y b290IDogJy8nICkgKyAnYXBpL2hpcz0KdG9yaWVzJywKICAgICAgIG1vZGVsIDogR2FsYXh5SGlz dG9yeQogICAgIH0pOwo9MjAKQEAgLTE5OSw3ICsxOTksNyBAQAogICAgICAqLwogICAgPTIwCiAg ICAgdmFyIEpzdHJlZSA9M0QgQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHsKLSAgICAgIHVybFJvb3Q6 ICcvYXBpL3JlbW90ZV9maWxlcycKKyAgICAgIHVybFJvb3Q6ICggd2luZG93LmdhbGF4eV9jb25m aWcgPyBnYWxheHlfY29uZmlnLnJvb3QgOiAnLycgKSArICdhcGkvPQpyZW1vdGVfZmlsZXMnCiAg ICAgfSk7Cj0yMAogcmV0dXJuIHsKCmRpZmYgLXIgOTg4Y2M0ZGRhMjEyOWZiZDAwZDgzZDJjMTI2 NDVmYWZmOGNiZTdlOSAtciA0OWQ1MGJjZTQ2MzIwNmY0NDUwNjNkMj0KYjI3YjJmMmIzOTNhZGJl MTEgc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9saWJyYXJ5L2xpYnJhcnktbW9kZWwuanMKLS0t IGEvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9saWJyYXJ5L2xpYnJhcnktbW9kZWwuanMKKysr IGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9saWJyYXJ5L2xpYnJhcnktbW9kZWwuanMKQEAg LTEsMSArMSwxIEBACi1kZWZpbmUoW10sZnVuY3Rpb24oKXt2YXIgZj0zREJhY2tib25lLk1vZGVs LmV4dGVuZCh7dXJsUm9vdDoiL2FwaS9saWJyYXJpZT0Kcy8iLGlzVmlzaWJsZTpmdW5jdGlvbihu KXt2YXIgbT0zRHRydWU7aWYoKCFuKSYmKHRoaXMuZ2V0KCJkZWxldGVkIikpKXttPTNEPQpmYWxz ZX1yZXR1cm4gbX19KTt2YXIgaT0zREJhY2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kKHt1cmw6Ii9h cGkvbGlicmFyaWVzIiw9Cm1vZGVsOmYsc29ydF9rZXk6Im5hbWUiLHNvcnRfb3JkZXI6bnVsbCxp bml0aWFsaXplOmZ1bmN0aW9uKG0pe209M0RtfHx7fX0sZz0KZXRWaXNpYmxlOmZ1bmN0aW9uKG4s byl7bz0zRG98fFtdO3ZhciBtPTNEbmV3IGkodGhpcy5maWx0ZXIoZnVuY3Rpb24ocCl7cmV0PQp1 cm4gcC5pc1Zpc2libGUobil9KSk7cmV0dXJuIG19LHNvcnRCeU5hbWVBc2M6ZnVuY3Rpb24oKXt0 aGlzLmNvbXBhcmF0b3I9M0Q9CmZ1bmN0aW9uKG4sbSl7aWYobi5nZXQoIm5hbWUiKS50b0xvd2Vy Q2FzZSgpPm0uZ2V0KCJuYW1lIikudG9Mb3dlckNhc2UoKSl7cj0KZXR1cm4gMX1pZihtLmdldCgi bmFtZSIpLnRvTG93ZXJDYXNlKCk+bi5nZXQoIm5hbWUiKS50b0xvd2VyQ2FzZSgpKXtyZXR1cm4g PQotMX1yZXR1cm4gMH07dGhpcy5zb3J0KCk7cmV0dXJuIHRoaXN9LHNvcnRCeU5hbWVEZXNjOmZ1 bmN0aW9uKCl7dGhpcy5jb21wYXI9CmF0b3I9M0RmdW5jdGlvbihuLG0pe2lmKG4uZ2V0KCJuYW1l IikudG9Mb3dlckNhc2UoKT5tLmdldCgibmFtZSIpLnRvTG93ZXJDYT0Kc2UoKSl7cmV0dXJuIC0x fWlmKG0uZ2V0KCJuYW1lIikudG9Mb3dlckNhc2UoKT5uLmdldCgibmFtZSIpLnRvTG93ZXJDYXNl KCkpPQp7cmV0dXJuIDF9cmV0dXJuIDB9O3RoaXMuc29ydCgpO3JldHVybiB0aGlzfX0pO3ZhciBn PTNEQmFja2JvbmUuTW9kZWwuZXh0ZW49CmQoe3VybFJvb3Q6Ii9hcGkvbGlicmFyaWVzL2RhdGFz ZXRzLyJ9KTt2YXIgbD0zREJhY2tib25lLk1vZGVsLmV4dGVuZCh7dXJsUj0Kb290OiIvYXBpL2xp YnJhcmllcy9kYXRhc2V0cy8ifSk7dmFyIGE9M0RCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe3VybFJv b3Q6Ii9hPQpwaS9mb2xkZXJzIn0pO3ZhciBjPTNEQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQo e21vZGVsOmcsc29ydEJ5TmFtZUFzYzpmdW49CmN0aW9uKCl7dGhpcy5jb21wYXJhdG9yPTNEZnVu Y3Rpb24obixtKXtpZihuLmdldCgidHlwZSIpPTNEPTNEPTNEbS5nZXQoInR5cD0KZSIpKXtpZihu LmdldCgibmFtZSIpLnRvTG93ZXJDYXNlKCk+bS5nZXQoIm5hbWUiKS50b0xvd2VyQ2FzZSgpKXty ZXR1cm4gMX1pPQpmKG0uZ2V0KCJuYW1lIikudG9Mb3dlckNhc2UoKT5uLmdldCgibmFtZSIpLnRv TG93ZXJDYXNlKCkpe3JldHVybiAtMX1yZXR1cm49CiAwfWVsc2V7aWYobi5nZXQoInR5cGUiKT0z RD0zRD0zRCJmb2xkZXIiKXtyZXR1cm4gLTF9ZWxzZXtyZXR1cm4gMX19fTt0aGlzLj0Kc29ydCgp O3JldHVybiB0aGlzfSxzb3J0QnlOYW1lRGVzYzpmdW5jdGlvbigpe3RoaXMuY29tcGFyYXRvcj0z RGZ1bmN0aW9uKG4sPQptKXtpZihuLmdldCgidHlwZSIpPTNEPTNEPTNEbS5nZXQoInR5cGUiKSl7 aWYobi5nZXQoIm5hbWUiKS50b0xvd2VyQ2FzZSgpPm09Ci5nZXQoIm5hbWUiKS50b0xvd2VyQ2Fz ZSgpKXtyZXR1cm4gLTF9aWYobS5nZXQoIm5hbWUiKS50b0xvd2VyQ2FzZSgpPm4uZ2V0KD0KIm5h bWUiKS50b0xvd2VyQ2FzZSgpKXtyZXR1cm4gMX1yZXR1cm4gMH1lbHNle2lmKG4uZ2V0KCJ0eXBl Iik9M0Q9M0Q9M0QiZm9sPQpkZXIiKXtyZXR1cm4gLTF9ZWxzZXtyZXR1cm4gMX19fTt0aGlzLnNv cnQoKTtyZXR1cm4gdGhpc319KTt2YXIgZT0zREJhY2tib249CmUuTW9kZWwuZXh0ZW5kKHtkZWZh dWx0czp7Zm9sZGVyOm5ldyBjKCksdXJsUm9vdDoiL2FwaS9mb2xkZXJzLyIsaWQ6InVua25vdz0K biJ9LHBhcnNlOmZ1bmN0aW9uKG0pe3RoaXMuZ2V0KCJmb2xkZXIiKS5yZXNldChtLmZvbGRlcl9j b250ZW50cyk7cmV0dXJuIG19PQp9KTt2YXIgYj0zREJhY2tib25lLk1vZGVsLmV4dGVuZCh7dXJs Um9vdDoiL2FwaS9oaXN0b3JpZXMvIn0pO3ZhciBkPTNEQmFja2I9Cm9uZS5Db2xsZWN0aW9uLmV4 dGVuZCh7dXJsUm9vdDoiL2FwaS9oaXN0b3JpZXMvIixpbml0aWFsaXplOmZ1bmN0aW9uKG0pe3Ro aT0Kcy5pZD0zRG0uaWR9LHVybDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVybFJvb3QrdGhpcy5p ZCsiL2NvbnRlbnRzIn0sbW9kZWw6PQpifSk7dmFyIGg9M0RCYWNrYm9uZS5Nb2RlbC5leHRlbmQo e3VybFJvb3Q6Ii9hcGkvaGlzdG9yaWVzLyJ9KTt2YXIgaz0zREJhY2s9CmJvbmUuQ29sbGVjdGlv bi5leHRlbmQoe3VybDoiL2FwaS9oaXN0b3JpZXMiLG1vZGVsOmh9KTt2YXIgaj0zREJhY2tib25l Lk1vZD0KZWwuZXh0ZW5kKHt1cmxSb290OiIvYXBpL3JlbW90ZV9maWxlcyJ9KTtyZXR1cm57TGli cmFyeTpmLEZvbGRlckFzTW9kZWw6YSxMPQppYnJhcmllczppLEl0ZW06ZyxMZGRhOmwsRm9sZGVy OmMsRm9sZGVyQ29udGFpbmVyOmUsSGlzdG9yeUl0ZW06YixIaXN0b3J5Q289Cm50ZW50czpkLEdh bGF4eUhpc3Rvcnk6aCxHYWxheHlIaXN0b3JpZXM6ayxKc3RyZWU6an19KTsKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCitkZWZpbmUoW10sZnVuY3Rpb24oKXt2YXIgZj0zREJhY2tib25lLk1v ZGVsLmV4dGVuZCh7dXJsUm9vdDood2luZG93LmdhbGF4eT0KX2NvbmZpZz9nYWxheHlfY29uZmln LnJvb3Q6Ii8iKSsiYXBpL2xpYnJhcmllcy8iLGlzVmlzaWJsZTpmdW5jdGlvbihuKXt2YXIgPQpt PTNEdHJ1ZTtpZigoIW4pJiYodGhpcy5nZXQoImRlbGV0ZWQiKSkpe209M0RmYWxzZX1yZXR1cm4g bX19KTt2YXIgaT0zREJhY2s9CmJvbmUuQ29sbGVjdGlvbi5leHRlbmQoe3VybDood2luZG93Lmdh bGF4eV9jb25maWc/Z2FsYXh5X2NvbmZpZy5yb290OiIvIikrIj0KYXBpL2xpYnJhcmllcyIsbW9k ZWw6Zixzb3J0X2tleToibmFtZSIsc29ydF9vcmRlcjpudWxsLGluaXRpYWxpemU6ZnVuY3Rpb24o PQptKXttPTNEbXx8e319LGdldFZpc2libGU6ZnVuY3Rpb24obixvKXtvPTNEb3x8W107dmFyIG09 M0RuZXcgaSh0aGlzLmZpbHRlcig9CmZ1bmN0aW9uKHApe3JldHVybiBwLmlzVmlzaWJsZShuKX0p KTtyZXR1cm4gbX0sc29ydEJ5TmFtZUFzYzpmdW5jdGlvbigpe3RoaT0Kcy5jb21wYXJhdG9yPTNE ZnVuY3Rpb24obixtKXtpZihuLmdldCgibmFtZSIpLnRvTG93ZXJDYXNlKCk+bS5nZXQoIm5hbWUi KS50PQpvTG93ZXJDYXNlKCkpe3JldHVybiAxfWlmKG0uZ2V0KCJuYW1lIikudG9Mb3dlckNhc2Uo KT5uLmdldCgibmFtZSIpLnRvTG93ZXI9CkNhc2UoKSl7cmV0dXJuIC0xfXJldHVybiAwfTt0aGlz LnNvcnQoKTtyZXR1cm4gdGhpc30sc29ydEJ5TmFtZURlc2M6ZnVuY3Rpbz0Kbigpe3RoaXMuY29t cGFyYXRvcj0zRGZ1bmN0aW9uKG4sbSl7aWYobi5nZXQoIm5hbWUiKS50b0xvd2VyQ2FzZSgpPm0u Z2V0KCJuPQphbWUiKS50b0xvd2VyQ2FzZSgpKXtyZXR1cm4gLTF9aWYobS5nZXQoIm5hbWUiKS50 b0xvd2VyQ2FzZSgpPm4uZ2V0KCJuYW1lIik9Ci50b0xvd2VyQ2FzZSgpKXtyZXR1cm4gMX1yZXR1 cm4gMH07dGhpcy5zb3J0KCk7cmV0dXJuIHRoaXN9fSk7dmFyIGc9M0RCYWNrYj0Kb25lLk1vZGVs LmV4dGVuZCh7dXJsUm9vdDood2luZG93LmdhbGF4eV9jb25maWc/Z2FsYXh5X2NvbmZpZy5yb290 OiIvIikrImFwPQppL2xpYnJhcmllcy9kYXRhc2V0cy8ifSk7dmFyIGw9M0RCYWNrYm9uZS5Nb2Rl bC5leHRlbmQoe3VybFJvb3Q6KHdpbmRvdy5nYWw9CmF4eV9jb25maWc/Z2FsYXh5X2NvbmZpZy5y b290OiIvIikrImFwaS9saWJyYXJpZXMvZGF0YXNldHMvIn0pO3ZhciBhPTNEQmFjaz0KYm9uZS5N b2RlbC5leHRlbmQoe3VybFJvb3Q6KHdpbmRvdy5nYWxheHlfY29uZmlnP2dhbGF4eV9jb25maWcu cm9vdDoiLyIpKyJhPQpwaS9mb2xkZXJzIn0pO3ZhciBjPTNEQmFja2JvbmUuQ29sbGVjdGlvbi5l eHRlbmQoe21vZGVsOmcsc29ydEJ5TmFtZUFzYzpmdW49CmN0aW9uKCl7dGhpcy5jb21wYXJhdG9y PTNEZnVuY3Rpb24obixtKXtpZihuLmdldCgidHlwZSIpPTNEPTNEPTNEbS5nZXQoInR5cD0KZSIp KXtpZihuLmdldCgibmFtZSIpLnRvTG93ZXJDYXNlKCk+bS5nZXQoIm5hbWUiKS50b0xvd2VyQ2Fz ZSgpKXtyZXR1cm4gMX1pPQpmKG0uZ2V0KCJuYW1lIikudG9Mb3dlckNhc2UoKT5uLmdldCgibmFt ZSIpLnRvTG93ZXJDYXNlKCkpe3JldHVybiAtMX1yZXR1cm49CiAwfWVsc2V7aWYobi5nZXQoInR5 cGUiKT0zRD0zRD0zRCJmb2xkZXIiKXtyZXR1cm4gLTF9ZWxzZXtyZXR1cm4gMX19fTt0aGlzLj0K c29ydCgpO3JldHVybiB0aGlzfSxzb3J0QnlOYW1lRGVzYzpmdW5jdGlvbigpe3RoaXMuY29tcGFy YXRvcj0zRGZ1bmN0aW9uKG4sPQptKXtpZihuLmdldCgidHlwZSIpPTNEPTNEPTNEbS5nZXQoInR5 cGUiKSl7aWYobi5nZXQoIm5hbWUiKS50b0xvd2VyQ2FzZSgpPm09Ci5nZXQoIm5hbWUiKS50b0xv d2VyQ2FzZSgpKXtyZXR1cm4gLTF9aWYobS5nZXQoIm5hbWUiKS50b0xvd2VyQ2FzZSgpPm4uZ2V0 KD0KIm5hbWUiKS50b0xvd2VyQ2FzZSgpKXtyZXR1cm4gMX1yZXR1cm4gMH1lbHNle2lmKG4uZ2V0 KCJ0eXBlIik9M0Q9M0Q9M0QiZm9sPQpkZXIiKXtyZXR1cm4gLTF9ZWxzZXtyZXR1cm4gMX19fTt0 aGlzLnNvcnQoKTtyZXR1cm4gdGhpc319KTt2YXIgZT0zREJhY2tib249CmUuTW9kZWwuZXh0ZW5k KHtkZWZhdWx0czp7Zm9sZGVyOm5ldyBjKCksdXJsUm9vdDood2luZG93LmdhbGF4eV9jb25maWc/ Z2FsYT0KeHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2ZvbGRlcnMvIixpZDoidW5rbm93biJ9LHBh cnNlOmZ1bmN0aW9uKG0pe3RoaXMuZ2V0PQooImZvbGRlciIpLnJlc2V0KG0uZm9sZGVyX2NvbnRl bnRzKTtyZXR1cm4gbX19KTt2YXIgYj0zREJhY2tib25lLk1vZGVsLmV4dGU9Cm5kKHt1cmxSb290 Oih3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2hpc3Rv cmllcy8ifT0KKTt2YXIgZD0zREJhY2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kKHt1cmxSb290Oih3 aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfPQpjb25maWcucm9vdDoiLyIpKyJhcGkvaGlzdG9y aWVzLyIsaW5pdGlhbGl6ZTpmdW5jdGlvbihtKXt0aGlzLmlkPTNEbS5pZH0sdXI9Cmw6ZnVuY3Rp b24oKXtyZXR1cm4gdGhpcy51cmxSb290K3RoaXMuaWQrIi9jb250ZW50cyJ9LG1vZGVsOmJ9KTt2 YXIgaD0zREJhYz0Ka2JvbmUuTW9kZWwuZXh0ZW5kKHt1cmxSb290Oih3aW5kb3cuZ2FsYXh5X2Nv bmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiPQphcGkvaGlzdG9yaWVzLyJ9KTt2YXIgaz0z REJhY2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kKHt1cmw6KHdpbmRvdy5nYWxheHlfY289Cm5maWc/ Z2FsYXh5X2NvbmZpZy5yb290OiIvIikrImFwaS9oaXN0b3JpZXMiLG1vZGVsOmh9KTt2YXIgaj0z REJhY2tib25lLk1vZD0KZWwuZXh0ZW5kKHt1cmxSb290Oih3aW5kb3cuZ2FsYXh5X2NvbmZpZz9n YWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL3JlbW90PQplX2ZpbGVzIn0pO3JldHVybntMaWJy YXJ5OmYsRm9sZGVyQXNNb2RlbDphLExpYnJhcmllczppLEl0ZW06ZyxMZGRhOmwsRm9sZGU9CnI6 YyxGb2xkZXJDb250YWluZXI6ZSxIaXN0b3J5SXRlbTpiLEhpc3RvcnlDb250ZW50czpkLEdhbGF4 eUhpc3Rvcnk6aCxHYWxheD0KeUhpc3RvcmllczprLEpzdHJlZTpqfX0pOwpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50 cmFsL2NvbW1pdHMvMWNjZjQwYmRhZmExLwpDaGFuZ2VzZXQ6ICAgMWNjZjQwYmRhZmExCkJyYW5j aDogICAgICByZWxlYXNlXzE1LjAzClVzZXI6ICAgICAgICBtYXJ0ZW5zb24KRGF0ZTogICAgICAg IDIwMTUtMDMtMjQgMTk6MTE6NDErMDA6MDAKU3VtbWFyeTogICAgIGFkZCByb290IHByZWZpeCB0 byBhbGwgYWpheCBjYWxscyBpbiBkYXRhIGxpYnJhcmllcwpBZmZlY3RlZCAjOiAgMTIgZmlsZXMK CmRpZmYgLXIgNDlkNTBiY2U0NjMyMDZmNDQ1MDYzZDJiMjdiMmYyYjM5M2FkYmUxMSAtciAxY2Nm NDBiZGFmYTE4NGIzYmUzMWFhNz0KYjFlY2RmY2UzYmM3MDVlZmIgY2xpZW50L2dhbGF4eS9zY3Jp cHRzL212Yy9saWJyYXJ5L2xpYnJhcnktZGF0YXNldC12aWV3LmpzCi0tLSBhL2NsaWVudC9nYWxh eHkvc2NyaXB0cy9tdmMvbGlicmFyeS9saWJyYXJ5LWRhdGFzZXQtdmlldy5qcworKysgYi9jbGll bnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2xpYnJhcnkvbGlicmFyeS1kYXRhc2V0LXZpZXcuanMKQEAg LTExNiw3ICsxMTYsNyBAQAogICB9LAo9MjAKICAgZG93bmxvYWREYXRhc2V0OiBmdW5jdGlvbigp ewotICAgIHZhciB1cmwgPTNEICcvYXBpL2xpYnJhcmllcy9kYXRhc2V0cy9kb3dubG9hZC91bmNv bXByZXNzZWQnOworICAgIHZhciB1cmwgPTNEICggd2luZG93LmdhbGF4eV9jb25maWcgPyBnYWxh eHlfY29uZmlnLnJvb3QgOiAnLycgKSArICdhcGk9Ci9saWJyYXJpZXMvZGF0YXNldHMvZG93bmxv YWQvdW5jb21wcmVzc2VkJzsKICAgICB2YXIgZGF0YSA9M0QgeydsZF9pZHMnIDogdGhpcy5pZH07 CiAgICAgdGhpcy5wcm9jZXNzRG93bmxvYWQodXJsLCBkYXRhKTsKICAgfSwKQEAgLTIzMiw3ICsy MzIsNyBAQAo9MjAKICAgICB2YXIgc2VsZiA9M0QgdGhpczsKICAgICBpZiAodGhpcy5vcHRpb25z LmZldGNoZWRfcGVybWlzc2lvbnMgPTNEPTNEPTNEIHVuZGVmaW5lZCl7Ci0gICAgICAkLmdldCgg Ii9hcGkvbGlicmFyaWVzL2RhdGFzZXRzLyIgKyBzZWxmLmlkICsgIi9wZXJtaXNzaW9ucz9zY29w ZT0zRD0KY3VycmVudCIpLmRvbmUoZnVuY3Rpb24oZmV0Y2hlZF9wZXJtaXNzaW9ucykgeworICAg ICAgJC5nZXQoICggd2luZG93LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29uZmlnLnJvb3QgOiAn LycgKSArICJhcGkvbGk9CmJyYXJpZXMvZGF0YXNldHMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Np b25zP3Njb3BlPTNEY3VycmVudCIpLmRvbmUoZnVuY3Rpbz0KbihmZXRjaGVkX3Blcm1pc3Npb25z KSB7CiAgICAgICAgIHNlbGYucHJlcGFyZVNlbGVjdEJveGVzKHtmZXRjaGVkX3Blcm1pc3Npb25z OmZldGNoZWRfcGVybWlzc2lvbnMsID0KaXNfYWRtaW46aXNfYWRtaW59KTsKICAgICAgIH0pLmZh aWwoZnVuY3Rpb24oKXsKICAgICAgICAgICBtb2RfdG9hc3RyLmVycm9yKCdBbiBlcnJvciBvY2N1 cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGZldGNoIGRhPQp0YXNldCBwZXJtaXNzaW9ucy4nKTsK QEAgLTI3Myw3ICsyNzMsNyBAQAogICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0NsaWNrIHRv IHNlbGVjdCBhIHJvbGUnLAogICAgICAgICAgICAgICBjb250YWluZXI6IHNlbGYuJGVsLmZpbmQo JyNhY2Nlc3NfcGVybScpLAogICAgICAgICAgICAgICBhamF4OiB7Ci0gICAgICAgICAgICAgICAg ICB1cmw6ICIvYXBpL2xpYnJhcmllcy9kYXRhc2V0cy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lv bj0Kcz9zY29wZT0zRGF2YWlsYWJsZSIsCisgICAgICAgICAgICAgICAgICB1cmw6ICggd2luZG93 LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29uZmlnLnJvb3QgOiAnLycgKT0KICsgImFwaS9saWJy YXJpZXMvZGF0YXNldHMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP3Njb3BlPTNEYXZhaWxh YmxlIiwKICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsCiAgICAgICAgICAgICAg ICAgICBxdWlldE1pbGxpczogMTAwLAogICAgICAgICAgICAgICAgICAgZGF0YTogZnVuY3Rpb24g KHRlcm0sIHBhZ2UpIHsgLy8gcGFnZSBpcyB0aGUgb25lLWJhc2VkIHA9CmFnZSBudW1iZXIgdHJh Y2tlZCBieSBTZWxlY3QyCkBAIC0zMjAsNyArMzIwLDcgQEAKICAgICAgICAgICAgICAgcGxhY2Vo b2xkZXI6ICdDbGljayB0byBzZWxlY3QgYSByb2xlJywKICAgICAgICAgICAgICAgY29udGFpbmVy OiBzZWxmLiRlbC5maW5kKCcjbW9kaWZ5X3Blcm0nKSwKICAgICAgICAgICAgICAgYWpheDogewot ICAgICAgICAgICAgICAgICAgdXJsOiAiL2FwaS9saWJyYXJpZXMvZGF0YXNldHMvIiArIHNlbGYu aWQgKyAiL3Blcm1pc3Npb249CnM/c2NvcGU9M0RhdmFpbGFibGUiLAorICAgICAgICAgICAgICAg ICAgdXJsOiAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZpZy5yb290IDogJy8n ICk9CiArICJhcGkvbGlicmFyaWVzL2RhdGFzZXRzLyIgKyBzZWxmLmlkICsgIi9wZXJtaXNzaW9u cz9zY29wZT0zRGF2YWlsYWJsZSIsCiAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24n LAogICAgICAgICAgICAgICAgICAgcXVpZXRNaWxsaXM6IDEwMCwKICAgICAgICAgICAgICAgICAg IGRhdGE6IGZ1bmN0aW9uICh0ZXJtLCBwYWdlKSB7IC8vIHBhZ2UgaXMgdGhlIG9uZS1iYXNlZCBw PQphZ2UgbnVtYmVyIHRyYWNrZWQgYnkgU2VsZWN0MgpAQCAtMzY3LDcgKzM2Nyw3IEBACiAgICAg ICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQ2xpY2sgdG8gc2VsZWN0IGEgcm9sZScsCiAgICAgICAg ICAgICAgIGNvbnRhaW5lcjogc2VsZi4kZWwuZmluZCgnI21hbmFnZV9wZXJtJyksCiAgICAgICAg ICAgICAgIGFqYXg6IHsKLSAgICAgICAgICAgICAgICAgIHVybDogIi9hcGkvbGlicmFyaWVzL2Rh dGFzZXRzLyIgKyBzZWxmLmlkICsgIi9wZXJtaXNzaW9uPQpzP3Njb3BlPTNEYXZhaWxhYmxlIiwK KyAgICAgICAgICAgICAgICAgIHVybDogKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9j b25maWcucm9vdCA6ICcvJyApPQogKyAiYXBpL2xpYnJhcmllcy9kYXRhc2V0cy8iICsgc2VsZi5p ZCArICIvcGVybWlzc2lvbnM/c2NvcGU9M0RhdmFpbGFibGUiLAogICAgICAgICAgICAgICAgICAg ZGF0YVR5cGU6ICdqc29uJywKICAgICAgICAgICAgICAgICAgIHF1aWV0TWlsbGlzOiAxMDAsCiAg ICAgICAgICAgICAgICAgICBkYXRhOiBmdW5jdGlvbiAodGVybSwgcGFnZSkgeyAvLyBwYWdlIGlz IHRoZSBvbmUtYmFzZWQgcD0KYWdlIG51bWJlciB0cmFja2VkIGJ5IFNlbGVjdDIKQEAgLTQxMyw3 ICs0MTMsNyBAQAogICAgICAgICAgICAgc2VsZi5tYW5hZ2VTZWxlY3RPYmplY3QgPTNEIG5ldyBt b2Rfc2VsZWN0LlZpZXcobWFuYWdlX3NlbGVjdF89Cm9wdGlvbnMpOwogICAgICAgICB9IGVsc2Ug eyAvLyBOb24tYWRtaW5zIGhhdmUgc2VsZWN0IHdpdGggcHJlLWxvYWRlZCBvcHRpb25zCiAgICAg ICAgICAgICB2YXIgdGVtcGxhdGUgPTNEIHNlbGYudGVtcGxhdGVBY2Nlc3NTZWxlY3QoKTsKLSAg ICAgICAgICAgICQuZ2V0KCAiL2FwaS9saWJyYXJpZXMvZGF0YXNldHMvIiArIHNlbGYuaWQgKyAi L3Blcm1pc3Npb25zP3NjPQpvcGU9M0RhdmFpbGFibGUiLCBmdW5jdGlvbiggZGF0YSApIHsKKyAg ICAgICAgICAgICQuZ2V0KCAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZpZy5y b290IDogJy8nICkgKyAiPQphcGkvbGlicmFyaWVzL2RhdGFzZXRzLyIgKyBzZWxmLmlkICsgIi9w ZXJtaXNzaW9ucz9zY29wZT0zRGF2YWlsYWJsZSIsIGZ1bmM9CnRpb24oIGRhdGEgKSB7CiAgICAg ICAgICAgICAgICAgJCgnLmFjY2Vzc19wZXJtJykuaHRtbCh0ZW1wbGF0ZSh7b3B0aW9uczpkYXRh LnJvbGVzfSkpOwogICAgICAgICAgICAgICAgIHNlbGYuYWNjZXNzU2VsZWN0T2JqZWN0ID0zRCAk KCcjYWNjZXNzX3NlbGVjdCcpLnNlbGVjdDIoKTsKICAgICAgICAgICAgIH0pLmZhaWwoZnVuY3Rp b24oKSB7CkBAIC00MzYsNyArNDM2LDcgQEAKPTIwCiAgIG1ha2VEYXRhc2V0UHJpdmF0ZTogZnVu Y3Rpb24oKXsKICAgICB2YXIgc2VsZiA9M0QgdGhpczsKLSAgICAkLnBvc3QoIi9hcGkvbGlicmFy aWVzL2RhdGFzZXRzLyIgKyBzZWxmLmlkICsgIi9wZXJtaXNzaW9ucz9hY3Rpb249M0RtPQpha2Vf cHJpdmF0ZSIpLmRvbmUoZnVuY3Rpb24oZmV0Y2hlZF9wZXJtaXNzaW9ucykgeworICAgICQucG9z dCggKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcvJyApICsg ImFwaS9saWI9CnJhcmllcy9kYXRhc2V0cy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lvbnM/YWN0 aW9uPTNEbWFrZV9wcml2YXRlIikuZG9uZShmdT0KbmN0aW9uKGZldGNoZWRfcGVybWlzc2lvbnMp IHsKICAgICAgIHNlbGYubW9kZWwuc2V0KHtpc191bnJlc3RyaWN0ZWQ6ZmFsc2V9KTsKICAgICAg IHNlbGYuc2hvd1Blcm1pc3Npb25zKHtmZXRjaGVkX3Blcm1pc3Npb25zOmZldGNoZWRfcGVybWlz c2lvbnN9KQogICAgICAgbW9kX3RvYXN0ci5zdWNjZXNzKCdUaGUgZGF0YXNldCBpcyBub3cgcHJp dmF0ZSB0byB5b3UuJyk7CkBAIC00NDcsNyArNDQ3LDcgQEAKPTIwCiAgIHJlbW92ZURhdGFzZXRS ZXN0cmljdGlvbnM6IGZ1bmN0aW9uKCl7CiAgICAgdmFyIHNlbGYgPTNEIHRoaXM7Ci0gICAgJC5w b3N0KCIvYXBpL2xpYnJhcmllcy9kYXRhc2V0cy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lvbnM/ YWN0aW9uPTNEcj0KZW1vdmVfcmVzdHJpY3Rpb25zIikKKyAgICAkLnBvc3QoICggd2luZG93Lmdh bGF4eV9jb25maWcgPyBnYWxheHlfY29uZmlnLnJvb3QgOiAnLycgKSArICJhcGkvbGliPQpyYXJp ZXMvZGF0YXNldHMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP2FjdGlvbj0zRHJlbW92ZV9y ZXN0cmljdGlvbnMiKQogICAgIC5kb25lKGZ1bmN0aW9uKGZldGNoZWRfcGVybWlzc2lvbnMpIHsK ICAgICAgIHNlbGYubW9kZWwuc2V0KHtpc191bnJlc3RyaWN0ZWQ6dHJ1ZX0pOwogICAgICAgc2Vs Zi5zaG93UGVybWlzc2lvbnMoe2ZldGNoZWRfcGVybWlzc2lvbnM6ZmV0Y2hlZF9wZXJtaXNzaW9u c30pCkBAIC00NzgsNyArNDc4LDcgQEAKICAgICAgIG1vZGlmeV9pZHMucHVzaChtb2RpZnlfcm9s ZXNbaV0uaWQpOwogICAgIH07Cj0yMAotICAgICQucG9zdCgiL2FwaS9saWJyYXJpZXMvZGF0YXNl dHMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP2FjdGlvbj0zRHM9CmV0X3Blcm1pc3Npb25z IiwgeyAnYWNjZXNzX2lkc1tdJzogYWNjZXNzX2lkcywgJ21hbmFnZV9pZHNbXSc6IG1hbmFnZV9p ZHMsID0KJ21vZGlmeV9pZHNbXSc6IG1vZGlmeV9pZHMsIH0gKQorICAgICQucG9zdCggKCB3aW5k b3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcvJyApICsgImFwaS9saWI9 CnJhcmllcy9kYXRhc2V0cy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lvbnM/YWN0aW9uPTNEc2V0 X3Blcm1pc3Npb25zIiwgeyAnYT0KY2Nlc3NfaWRzW10nOiBhY2Nlc3NfaWRzLCAnbWFuYWdlX2lk c1tdJzogbWFuYWdlX2lkcywgJ21vZGlmeV9pZHNbXSc6IG1vZGlmPQp5X2lkcywgfSApCiAgICAg LmRvbmUoZnVuY3Rpb24oZmV0Y2hlZF9wZXJtaXNzaW9ucyl7CiAgICAgICAvL2ZldGNoIGRhdGFz ZXQgYWdhaW4KICAgICAgIHNlbGYuc2hvd1Blcm1pc3Npb25zKHtmZXRjaGVkX3Blcm1pc3Npb25z OmZldGNoZWRfcGVybWlzc2lvbnN9KQoKZGlmZiAtciA0OWQ1MGJjZTQ2MzIwNmY0NDUwNjNkMmIy N2IyZjJiMzkzYWRiZTExIC1yIDFjY2Y0MGJkYWZhMTg0YjNiZTMxYWE3PQpiMWVjZGZjZTNiYzcw NWVmYiBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2xpYnJhcnkvbGlicmFyeS1mb2xkZXItdmll dy5qcwotLS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2xpYnJhcnkvbGlicmFyeS1mb2xk ZXItdmlldy5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2xpYnJhcnkvbGlicmFy eS1mb2xkZXItdmlldy5qcwpAQCAtODEsNyArODEsNyBAQAo9MjAKICAgICB2YXIgc2VsZiA9M0Qg dGhpczsKICAgICBpZiAodGhpcy5vcHRpb25zLmZldGNoZWRfcGVybWlzc2lvbnMgPTNEPTNEPTNE IHVuZGVmaW5lZCl7Ci0gICAgICAkLmdldCggIi9hcGkvZm9sZGVycy8iICsgc2VsZi5pZCArICIv cGVybWlzc2lvbnM/c2NvcGU9M0RjdXJyZW50IikuZD0Kb25lKGZ1bmN0aW9uKGZldGNoZWRfcGVy bWlzc2lvbnMpIHsKKyAgICAgICQuZ2V0KCAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5 X2NvbmZpZy5yb290IDogJy8nICkgKyAiYXBpL2ZvPQpsZGVycy8iICsgc2VsZi5pZCArICIvcGVy bWlzc2lvbnM/c2NvcGU9M0RjdXJyZW50IikuZG9uZShmdW5jdGlvbihmZXRjaGVkX3A9CmVybWlz c2lvbnMpIHsKICAgICAgICAgc2VsZi5wcmVwYXJlU2VsZWN0Qm94ZXMoe2ZldGNoZWRfcGVybWlz c2lvbnM6ZmV0Y2hlZF9wZXJtaXNzaW9uc30pOwogICAgICAgfSkuZmFpbChmdW5jdGlvbigpewog ICAgICAgICAgIG1vZF90b2FzdHIuZXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVt cHRpbmcgdG8gZmV0Y2ggZm89CmxkZXIgcGVybWlzc2lvbnMuJyk7CkBAIC0xMjUsNyArMTI1LDcg QEAKICAgICAgIHBsYWNlaG9sZGVyOiAnQ2xpY2sgdG8gc2VsZWN0IGEgcm9sZScsCiAgICAgICBj b250YWluZXI6IHNlbGYuJGVsLmZpbmQoJyMnICsgaWQpLAogICAgICAgYWpheDogewotICAgICAg ICAgIHVybDogIi9hcGkvZm9sZGVycy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lvbnM/c2NvcGU9 M0RhdmFpbGFibGU9CiIsCisgICAgICAgICAgdXJsOiAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8g Z2FsYXh5X2NvbmZpZy5yb290IDogJy8nICkgKyAiYXBpLz0KZm9sZGVycy8iICsgc2VsZi5pZCAr ICIvcGVybWlzc2lvbnM/c2NvcGU9M0RhdmFpbGFibGUiLAogICAgICAgICAgIGRhdGFUeXBlOiAn anNvbicsCiAgICAgICAgICAgcXVpZXRNaWxsaXM6IDEwMCwKICAgICAgICAgICBkYXRhOiBmdW5j dGlvbiAodGVybSwgcGFnZSkgeyAvLyBwYWdlIGlzIHRoZSBvbmUtYmFzZWQgcGFnZSBudW1iPQpl ciB0cmFja2VkIGJ5IFNlbGVjdDIKQEAgLTE5NSw3ICsxOTUsNyBAQAogICAgIHZhciBtYW5hZ2Vf aWRzID0zRCB0aGlzLl9leHRyYWN0SWRzKHRoaXMubWFuYWdlU2VsZWN0T2JqZWN0LiRlbC5zZWxl Y3Q9CjIoJ2RhdGEnKSk7CiAgICAgdmFyIG1vZGlmeV9pZHMgPTNEIHRoaXMuX2V4dHJhY3RJZHMo dGhpcy5tb2RpZnlTZWxlY3RPYmplY3QuJGVsLnNlbGVjdD0KMignZGF0YScpKTsKPTIwCi0gICAg JC5wb3N0KCIvYXBpL2ZvbGRlcnMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP2FjdGlvbj0z RHNldF9wZXJtaXNzaT0Kb25zIiwgeyAnYWRkX2lkc1tdJzogYWRkX2lkcywgJ21hbmFnZV9pZHNb XSc6IG1hbmFnZV9pZHMsICdtb2RpZnlfaWRzW10nOiBtPQpvZGlmeV9pZHMsIH0gKQorICAgICQu cG9zdCggKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcvJyAp ICsgImFwaS9mb2w9CmRlcnMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP2FjdGlvbj0zRHNl dF9wZXJtaXNzaW9ucyIsIHsgJ2FkZF9pZHNbXSc6ID0KYWRkX2lkcywgJ21hbmFnZV9pZHNbXSc6 IG1hbmFnZV9pZHMsICdtb2RpZnlfaWRzW10nOiBtb2RpZnlfaWRzLCB9ICkKICAgICAuZG9uZShm dW5jdGlvbihmZXRjaGVkX3Blcm1pc3Npb25zKXsKICAgICAgIC8vZmV0Y2ggZGF0YXNldCBhZ2Fp bgogICAgICAgc2VsZi5zaG93UGVybWlzc2lvbnMoe2ZldGNoZWRfcGVybWlzc2lvbnM6ZmV0Y2hl ZF9wZXJtaXNzaW9uc30pCgpkaWZmIC1yIDQ5ZDUwYmNlNDYzMjA2ZjQ0NTA2M2QyYjI3YjJmMmIz OTNhZGJlMTEgLXIgMWNjZjQwYmRhZmExODRiM2JlMzFhYTc9CmIxZWNkZmNlM2JjNzA1ZWZiIGNs aWVudC9nYWxheHkvc2NyaXB0cy9tdmMvbGlicmFyeS9saWJyYXJ5LWZvbGRlcnRvb2xiYXItdj0K aWV3LmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvbGlicmFyeS9saWJyYXJ5LWZv bGRlcnRvb2xiYXItdmlldy5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2xpYnJh cnkvbGlicmFyeS1mb2xkZXJ0b29sYmFyLXZpZXcuanMKQEAgLTI5NCw3ICsyOTQsNyBAQAogICAg ICAgICAgICAgICAgIGRhdGFzZXRfaWRzLnB1c2goIHRoaXMucGFyZW50RWxlbWVudC5wYXJlbnRF bGVtZW50LmlkICk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gKTsKLSAgICB2YXIgdXJsID0z RCAnL2FwaS9saWJyYXJpZXMvZGF0YXNldHMvZG93bmxvYWQvJyArIGZvcm1hdDsKKyAgICB2YXIg dXJsID0zRCAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZpZy5yb290IDogJy8n ICkgKyAnYXBpPQovbGlicmFyaWVzL2RhdGFzZXRzL2Rvd25sb2FkLycgKyBmb3JtYXQ7CiAgICAg dmFyIGRhdGEgPTNEIHsgJ2xkX2lkcycgOiBkYXRhc2V0X2lkcyB9OwogICAgIHRoaXMucHJvY2Vz c0Rvd25sb2FkKCB1cmwsIGRhdGEsICdnZXQnICk7CiAgIH0sCkBAIC0zODYsNyArMzg2LDcgQEAK ICAgZmV0Y2hFeHRBbmRHZW5vbWVzOiBmdW5jdGlvbigpewogICAgIHZhciB0aGF0ID0zRCB0aGlz OwogICAgIG1vZF91dGlscy5nZXQoewotICAgICAgICB1cmwgICAgICA6ICBnYWxheHlfY29uZmln LnJvb3QgKyAiYXBpL2RhdGF0eXBlcz9leHRlbnNpb25fb25seT0zREY9CmFsc2UiLAorICAgICAg ICB1cmwgICAgICA6ICAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZpZy5yb290 IDogJy8nICkgKyA9CiJhcGkvZGF0YXR5cGVzP2V4dGVuc2lvbl9vbmx5PTNERmFsc2UiLAogICAg ICAgICBzdWNjZXNzICA6ICBmdW5jdGlvbiggZGF0YXR5cGVzICkgewogICAgICAgICAgICAgICAg ICAgICAgICAgZm9yIChrZXkgaW4gZGF0YXR5cGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGhhdC5saXN0X2V4dGVuc2lvbnMucHVzaCh7CkBAIC00MDMsNyArNDAzLDcgQEAKICAg ICAgICAgICAgICAgICAgICAgfQogICAgICAgfSk7CiAgICAgbW9kX3V0aWxzLmdldCh7Ci0gICAg ICAgIHVybDogICAgZ2FsYXh5X2NvbmZpZy5yb290ICsgImFwaS9nZW5vbWVzIiwKKyAgICAgICAg dXJsOiAgICAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZpZy5yb290IDogJy8n ICkgKyAiYXBpPQovZ2Vub21lcyIsCiAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKCBnZW5vbWVz ICkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKCBrZXkgaW4gZ2Vub21lcyApIHsKICAgICAg ICAgICAgICAgICAgICAgICAgIHRoYXQubGlzdF9nZW5vbWVzLnB1c2goewpAQCAtNjg5LDcgKzY4 OSw3IEBACiAgICAgICBmb3IgKCB2YXIgaSA9M0QgaGlzdG9yeV9kYXRhc2V0X2lkcy5sZW5ndGgg LSAxOyBpID49M0QgMDsgaS0tICkgewogICAgICAgICBoaXN0b3J5X2RhdGFzZXRfaWQgPTNEIGhp c3RvcnlfZGF0YXNldF9pZHNbaV07CiAgICAgICAgIHZhciBmb2xkZXJfaXRlbSA9M0QgbmV3IG1v ZF9saWJyYXJ5X21vZGVsLkl0ZW0oKTsKLSAgICAgICAgZm9sZGVyX2l0ZW0udXJsID0zRCAnL2Fw aS9mb2xkZXJzLycgKyB0aGlzLm9wdGlvbnMuaWQgKyAnL2NvbnRlbnRzPQonOworICAgICAgICBm b2xkZXJfaXRlbS51cmwgPTNEICggd2luZG93LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29uZmln LnJvb3QgOiA9CicvJyApICsgJ2FwaS9mb2xkZXJzLycgKyB0aGlzLm9wdGlvbnMuaWQgKyAnL2Nv bnRlbnRzJzsKICAgICAgICAgZm9sZGVyX2l0ZW0uc2V0KCB7ICdmcm9tX2hkYV9pZCc6aGlzdG9y eV9kYXRhc2V0X2lkIH0gKTsKICAgICAgICAgaGRhc190b19hZGQucHVzaCggZm9sZGVyX2l0ZW0g KTsKICAgICAgIH0KQEAgLTc0OSw3ICs3NDksNyBAQAogICAgICAgfQogICAgICAgcmV0dXJuIHRy dWU7CiAgICAgfQotICAgIHZhciBwcm9taXNlID0zRCAkLndoZW4oICQucG9zdCggJy9hcGkvbGli cmFyaWVzL2RhdGFzZXRzP2VuY29kZWRfZm9sZGU9CnJfaWQ9M0QnICsgdGhhdC5pZCArPTIwCisg ICAgdmFyIHByb21pc2UgPTNEICQud2hlbiggJC5wb3N0KCAoIHdpbmRvdy5nYWxheHlfY29uZmln ID8gZ2FsYXh5X2NvbmZpZz0KLnJvb3QgOiAnLycgKSArICdhcGkvbGlicmFyaWVzL2RhdGFzZXRz P2VuY29kZWRfZm9sZGVyX2lkPTNEJyArIHRoYXQuaWQgKz0yMAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcmc291cmNlPTNEJyArIG9wdGk9 Cm9ucy5zb3VyY2UgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICcmcGF0aD0zRCcgKyBwb3BwZWQ9Cl9pdGVtICsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJmZpbGVfdHlwZT0zRCcg KyBvPQpwdGlvbnMuZmlsZV90eXBlICsKQEAgLTc4OCw3ICs3ODgsNyBAQAogICAgICAgfQogICAg ICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIHZhciBwcm9taXNlID0zRCAkLndoZW4oICQucG9z dCggJy9hcGkvbGlicmFyaWVzL2RhdGFzZXRzP2VuY29kZWRfZm9sZGU9CnJfaWQ9M0QnICsgdGhh dC5pZCArCisgICAgdmFyIHByb21pc2UgPTNEICQud2hlbiggJC5wb3N0KCAoIHdpbmRvdy5nYWxh eHlfY29uZmlnID8gZ2FsYXh5X2NvbmZpZz0KLnJvb3QgOiAnLycgKSArICdhcGkvbGlicmFyaWVz L2RhdGFzZXRzP2VuY29kZWRfZm9sZGVyX2lkPTNEJyArIHRoYXQuaWQgKwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcmc291cmNlPTNE JyArIG89CnB0aW9ucy5zb3VyY2UgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICcmcGF0aD0zRCcgKyBwb3A9CnBlZF9pdGVtICsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn JnByZXNlcnZlX2RpcnM9Cj0zRCcgKyBvcHRpb25zLnByZXNlcnZlX2RpcnMgKwoKZGlmZiAtciA0 OWQ1MGJjZTQ2MzIwNmY0NDUwNjNkMmIyN2IyZjJiMzkzYWRiZTExIC1yIDFjY2Y0MGJkYWZhMTg0 YjNiZTMxYWE3PQpiMWVjZGZjZTNiYzcwNWVmYiBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2xp YnJhcnkvbGlicmFyeS1saWJyYXJ5LXZpZXcuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRz L212Yy9saWJyYXJ5L2xpYnJhcnktbGlicmFyeS12aWV3LmpzCisrKyBiL2NsaWVudC9nYWxheHkv c2NyaXB0cy9tdmMvbGlicmFyeS9saWJyYXJ5LWxpYnJhcnktdmlldy5qcwpAQCAtODcsNyArODcs NyBAQAo9MjAKICAgICB2YXIgc2VsZiA9M0QgdGhpczsKICAgICBpZiAodGhpcy5vcHRpb25zLmZl dGNoZWRfcGVybWlzc2lvbnMgPTNEPTNEPTNEIHVuZGVmaW5lZCl7Ci0gICAgICAkLmdldCggIi9h cGkvbGlicmFyaWVzLyIgKyBzZWxmLmlkICsgIi9wZXJtaXNzaW9ucz9zY29wZT0zRGN1cnJlbnQi KT0KLmRvbmUoZnVuY3Rpb24oZmV0Y2hlZF9wZXJtaXNzaW9ucykgeworICAgICAgJC5nZXQoICgg d2luZG93LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29uZmlnLnJvb3QgOiAnLycgKSArICJhcGkv bGk9CmJyYXJpZXMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP3Njb3BlPTNEY3VycmVudCIp LmRvbmUoZnVuY3Rpb24oZmV0Y2hlZD0KX3Blcm1pc3Npb25zKSB7CiAgICAgICAgIHNlbGYucHJl cGFyZVNlbGVjdEJveGVzKHtmZXRjaGVkX3Blcm1pc3Npb25zOmZldGNoZWRfcGVybWlzc2lvbnN9 KTsKICAgICAgIH0pLmZhaWwoZnVuY3Rpb24oKXsKICAgICAgICAgICBtb2RfdG9hc3RyLmVycm9y KCdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGZldGNoIGxpPQpicmFyeSBw ZXJtaXNzaW9ucy4nKTsKQEAgLTEzNCw3ICsxMzQsNyBAQAogICAgICAgcGxhY2Vob2xkZXI6ICdD bGljayB0byBzZWxlY3QgYSByb2xlJywKICAgICAgIGNvbnRhaW5lcjogc2VsZi4kZWwuZmluZCgn IycgKyBpZCksCiAgICAgICBhamF4OiB7Ci0gICAgICAgICAgdXJsOiAiL2FwaS9saWJyYXJpZXMv IiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP3Njb3BlPTNEYXZhaWxhYj0KbGUmaXNfbGlicmFy eV9hY2Nlc3M9M0QiICsgaXNfbGlicmFyeV9hY2Nlc3MsCisgICAgICAgICAgdXJsOiAoIHdpbmRv dy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZpZy5yb290IDogJy8nICkgKyAiYXBpLz0KbGli cmFyaWVzLyIgKyBzZWxmLmlkICsgIi9wZXJtaXNzaW9ucz9zY29wZT0zRGF2YWlsYWJsZSZpc19s aWJyYXJ5X2FjY2Vzcz0KPTNEIiArIGlzX2xpYnJhcnlfYWNjZXNzLAogICAgICAgICAgIGRhdGFU eXBlOiAnanNvbicsCiAgICAgICAgICAgcXVpZXRNaWxsaXM6IDEwMCwKICAgICAgICAgICBkYXRh OiBmdW5jdGlvbiAodGVybSwgcGFnZSkgeyAvLyBwYWdlIGlzIHRoZSBvbmUtYmFzZWQgcGFnZSBu dW1iPQplciB0cmFja2VkIGJ5IFNlbGVjdDIKQEAgLTE5Myw3ICsxOTMsNyBAQAo9MjAKICAgbWFr ZURhdGFzZXRQcml2YXRlOiBmdW5jdGlvbigpewogICAgIHZhciBzZWxmID0zRCB0aGlzOwotICAg ICQucG9zdCgiL2FwaS9saWJyYXJpZXMvZGF0YXNldHMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Np b25zP2FjdGlvbj0zRG09CmFrZV9wcml2YXRlIikuZG9uZShmdW5jdGlvbihmZXRjaGVkX3Blcm1p c3Npb25zKSB7CisgICAgJC5wb3N0KCAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2Nv bmZpZy5yb290IDogJy8nICkgKyAiYXBpL2xpYj0KcmFyaWVzL2RhdGFzZXRzLyIgKyBzZWxmLmlk ICsgIi9wZXJtaXNzaW9ucz9hY3Rpb249M0RtYWtlX3ByaXZhdGUiKS5kb25lKGZ1PQpuY3Rpb24o ZmV0Y2hlZF9wZXJtaXNzaW9ucykgewogICAgICAgc2VsZi5tb2RlbC5zZXQoe2lzX3VucmVzdHJp Y3RlZDpmYWxzZX0pOwogICAgICAgc2VsZi5zaG93UGVybWlzc2lvbnMoe2ZldGNoZWRfcGVybWlz c2lvbnM6ZmV0Y2hlZF9wZXJtaXNzaW9uc30pCiAgICAgICBtb2RfdG9hc3RyLnN1Y2Nlc3MoJ1Ro ZSBkYXRhc2V0IGlzIG5vdyBwcml2YXRlIHRvIHlvdS4nKTsKQEAgLTIwNCw3ICsyMDQsNyBAQAo9 MjAKICAgcmVtb3ZlRGF0YXNldFJlc3RyaWN0aW9uczogZnVuY3Rpb24oKXsKICAgICB2YXIgc2Vs ZiA9M0QgdGhpczsKLSAgICAkLnBvc3QoIi9hcGkvbGlicmFyaWVzL2RhdGFzZXRzLyIgKyBzZWxm LmlkICsgIi9wZXJtaXNzaW9ucz9hY3Rpb249M0RyPQplbW92ZV9yZXN0cmljdGlvbnMiKQorICAg ICQucG9zdCggKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcv JyApICsgImFwaS9saWI9CnJhcmllcy9kYXRhc2V0cy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lv bnM/YWN0aW9uPTNEcmVtb3ZlX3Jlc3RyaWN0aW9ucyIpCiAgICAgLmRvbmUoZnVuY3Rpb24oZmV0 Y2hlZF9wZXJtaXNzaW9ucykgewogICAgICAgc2VsZi5tb2RlbC5zZXQoe2lzX3VucmVzdHJpY3Rl ZDp0cnVlfSk7CiAgICAgICBzZWxmLnNob3dQZXJtaXNzaW9ucyh7ZmV0Y2hlZF9wZXJtaXNzaW9u czpmZXRjaGVkX3Blcm1pc3Npb25zfSkKQEAgLTIzMCw3ICsyMzAsNyBAQAogICAgIHZhciBtYW5h Z2VfaWRzID0zRCB0aGlzLl9leHRyYWN0SWRzKHRoaXMubWFuYWdlU2VsZWN0T2JqZWN0LiRlbC5z ZWxlY3Q9CjIoJ2RhdGEnKSk7CiAgICAgdmFyIG1vZGlmeV9pZHMgPTNEIHRoaXMuX2V4dHJhY3RJ ZHModGhpcy5tb2RpZnlTZWxlY3RPYmplY3QuJGVsLnNlbGVjdD0KMignZGF0YScpKTsKPTIwCi0g ICAgJC5wb3N0KCIvYXBpL2xpYnJhcmllcy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lvbnM/YWN0 aW9uPTNEc2V0X3Blcm1pcz0Kc2lvbnMiLCB7ICdhY2Nlc3NfaWRzW10nOiBhY2Nlc3NfaWRzLCAn YWRkX2lkc1tdJzogYWRkX2lkcywgJ21hbmFnZV9pZHNbXSc6PQogbWFuYWdlX2lkcywgJ21vZGlm eV9pZHNbXSc6IG1vZGlmeV9pZHMsIH0gKQorICAgICQucG9zdCggKCB3aW5kb3cuZ2FsYXh5X2Nv bmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcvJyApICsgImFwaS9saWI9CnJhcmllcy8iICsg c2VsZi5pZCArICIvcGVybWlzc2lvbnM/YWN0aW9uPTNEc2V0X3Blcm1pc3Npb25zIiwgeyAnYWNj ZXNzX2lkcz0KW10nOiBhY2Nlc3NfaWRzLCAnYWRkX2lkc1tdJzogYWRkX2lkcywgJ21hbmFnZV9p ZHNbXSc6IG1hbmFnZV9pZHMsICdtb2RpZnlfPQppZHNbXSc6IG1vZGlmeV9pZHMsIH0gKQogICAg IC5kb25lKGZ1bmN0aW9uKGZldGNoZWRfcGVybWlzc2lvbnMpewogICAgICAgLy9mZXRjaCBkYXRh c2V0IGFnYWluCiAgICAgICBzZWxmLnNob3dQZXJtaXNzaW9ucyh7ZmV0Y2hlZF9wZXJtaXNzaW9u czpmZXRjaGVkX3Blcm1pc3Npb25zfSkKCmRpZmYgLXIgNDlkNTBiY2U0NjMyMDZmNDQ1MDYzZDJi MjdiMmYyYjM5M2FkYmUxMSAtciAxY2NmNDBiZGFmYTE4NGIzYmUzMWFhNz0KYjFlY2RmY2UzYmM3 MDVlZmIgc3RhdGljL3NjcmlwdHMvbXZjL2xpYnJhcnkvbGlicmFyeS1kYXRhc2V0LXZpZXcuanMK LS0tIGEvc3RhdGljL3NjcmlwdHMvbXZjL2xpYnJhcnkvbGlicmFyeS1kYXRhc2V0LXZpZXcuanMK KysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL2xpYnJhcnkvbGlicmFyeS1kYXRhc2V0LXZpZXcuanMK QEAgLTExNiw3ICsxMTYsNyBAQAogICB9LAo9MjAKICAgZG93bmxvYWREYXRhc2V0OiBmdW5jdGlv bigpewotICAgIHZhciB1cmwgPTNEICcvYXBpL2xpYnJhcmllcy9kYXRhc2V0cy9kb3dubG9hZC91 bmNvbXByZXNzZWQnOworICAgIHZhciB1cmwgPTNEICggd2luZG93LmdhbGF4eV9jb25maWcgPyBn YWxheHlfY29uZmlnLnJvb3QgOiAnLycgKSArICdhcGk9Ci9saWJyYXJpZXMvZGF0YXNldHMvZG93 bmxvYWQvdW5jb21wcmVzc2VkJzsKICAgICB2YXIgZGF0YSA9M0QgeydsZF9pZHMnIDogdGhpcy5p ZH07CiAgICAgdGhpcy5wcm9jZXNzRG93bmxvYWQodXJsLCBkYXRhKTsKICAgfSwKQEAgLTIzMiw3 ICsyMzIsNyBAQAo9MjAKICAgICB2YXIgc2VsZiA9M0QgdGhpczsKICAgICBpZiAodGhpcy5vcHRp b25zLmZldGNoZWRfcGVybWlzc2lvbnMgPTNEPTNEPTNEIHVuZGVmaW5lZCl7Ci0gICAgICAkLmdl dCggIi9hcGkvbGlicmFyaWVzL2RhdGFzZXRzLyIgKyBzZWxmLmlkICsgIi9wZXJtaXNzaW9ucz9z Y29wZT0zRD0KY3VycmVudCIpLmRvbmUoZnVuY3Rpb24oZmV0Y2hlZF9wZXJtaXNzaW9ucykgewor ICAgICAgJC5nZXQoICggd2luZG93LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29uZmlnLnJvb3Qg OiAnLycgKSArICJhcGkvbGk9CmJyYXJpZXMvZGF0YXNldHMvIiArIHNlbGYuaWQgKyAiL3Blcm1p c3Npb25zP3Njb3BlPTNEY3VycmVudCIpLmRvbmUoZnVuY3Rpbz0KbihmZXRjaGVkX3Blcm1pc3Np b25zKSB7CiAgICAgICAgIHNlbGYucHJlcGFyZVNlbGVjdEJveGVzKHtmZXRjaGVkX3Blcm1pc3Np b25zOmZldGNoZWRfcGVybWlzc2lvbnMsID0KaXNfYWRtaW46aXNfYWRtaW59KTsKICAgICAgIH0p LmZhaWwoZnVuY3Rpb24oKXsKICAgICAgICAgICBtb2RfdG9hc3RyLmVycm9yKCdBbiBlcnJvciBv Y2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGZldGNoIGRhPQp0YXNldCBwZXJtaXNzaW9ucy4n KTsKQEAgLTI3Myw3ICsyNzMsNyBAQAogICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ0NsaWNr IHRvIHNlbGVjdCBhIHJvbGUnLAogICAgICAgICAgICAgICBjb250YWluZXI6IHNlbGYuJGVsLmZp bmQoJyNhY2Nlc3NfcGVybScpLAogICAgICAgICAgICAgICBhamF4OiB7Ci0gICAgICAgICAgICAg ICAgICB1cmw6ICIvYXBpL2xpYnJhcmllcy9kYXRhc2V0cy8iICsgc2VsZi5pZCArICIvcGVybWlz c2lvbj0Kcz9zY29wZT0zRGF2YWlsYWJsZSIsCisgICAgICAgICAgICAgICAgICB1cmw6ICggd2lu ZG93LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29uZmlnLnJvb3QgOiAnLycgKT0KICsgImFwaS9s aWJyYXJpZXMvZGF0YXNldHMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP3Njb3BlPTNEYXZh aWxhYmxlIiwKICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsCiAgICAgICAgICAg ICAgICAgICBxdWlldE1pbGxpczogMTAwLAogICAgICAgICAgICAgICAgICAgZGF0YTogZnVuY3Rp b24gKHRlcm0sIHBhZ2UpIHsgLy8gcGFnZSBpcyB0aGUgb25lLWJhc2VkIHA9CmFnZSBudW1iZXIg dHJhY2tlZCBieSBTZWxlY3QyCkBAIC0zMjAsNyArMzIwLDcgQEAKICAgICAgICAgICAgICAgcGxh Y2Vob2xkZXI6ICdDbGljayB0byBzZWxlY3QgYSByb2xlJywKICAgICAgICAgICAgICAgY29udGFp bmVyOiBzZWxmLiRlbC5maW5kKCcjbW9kaWZ5X3Blcm0nKSwKICAgICAgICAgICAgICAgYWpheDog ewotICAgICAgICAgICAgICAgICAgdXJsOiAiL2FwaS9saWJyYXJpZXMvZGF0YXNldHMvIiArIHNl bGYuaWQgKyAiL3Blcm1pc3Npb249CnM/c2NvcGU9M0RhdmFpbGFibGUiLAorICAgICAgICAgICAg ICAgICAgdXJsOiAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZpZy5yb290IDog Jy8nICk9CiArICJhcGkvbGlicmFyaWVzL2RhdGFzZXRzLyIgKyBzZWxmLmlkICsgIi9wZXJtaXNz aW9ucz9zY29wZT0zRGF2YWlsYWJsZSIsCiAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pz b24nLAogICAgICAgICAgICAgICAgICAgcXVpZXRNaWxsaXM6IDEwMCwKICAgICAgICAgICAgICAg ICAgIGRhdGE6IGZ1bmN0aW9uICh0ZXJtLCBwYWdlKSB7IC8vIHBhZ2UgaXMgdGhlIG9uZS1iYXNl ZCBwPQphZ2UgbnVtYmVyIHRyYWNrZWQgYnkgU2VsZWN0MgpAQCAtMzY3LDcgKzM2Nyw3IEBACiAg ICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQ2xpY2sgdG8gc2VsZWN0IGEgcm9sZScsCiAgICAg ICAgICAgICAgIGNvbnRhaW5lcjogc2VsZi4kZWwuZmluZCgnI21hbmFnZV9wZXJtJyksCiAgICAg ICAgICAgICAgIGFqYXg6IHsKLSAgICAgICAgICAgICAgICAgIHVybDogIi9hcGkvbGlicmFyaWVz L2RhdGFzZXRzLyIgKyBzZWxmLmlkICsgIi9wZXJtaXNzaW9uPQpzP3Njb3BlPTNEYXZhaWxhYmxl IiwKKyAgICAgICAgICAgICAgICAgIHVybDogKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4 eV9jb25maWcucm9vdCA6ICcvJyApPQogKyAiYXBpL2xpYnJhcmllcy9kYXRhc2V0cy8iICsgc2Vs Zi5pZCArICIvcGVybWlzc2lvbnM/c2NvcGU9M0RhdmFpbGFibGUiLAogICAgICAgICAgICAgICAg ICAgZGF0YVR5cGU6ICdqc29uJywKICAgICAgICAgICAgICAgICAgIHF1aWV0TWlsbGlzOiAxMDAs CiAgICAgICAgICAgICAgICAgICBkYXRhOiBmdW5jdGlvbiAodGVybSwgcGFnZSkgeyAvLyBwYWdl IGlzIHRoZSBvbmUtYmFzZWQgcD0KYWdlIG51bWJlciB0cmFja2VkIGJ5IFNlbGVjdDIKQEAgLTQx Myw3ICs0MTMsNyBAQAogICAgICAgICAgICAgc2VsZi5tYW5hZ2VTZWxlY3RPYmplY3QgPTNEIG5l dyBtb2Rfc2VsZWN0LlZpZXcobWFuYWdlX3NlbGVjdF89Cm9wdGlvbnMpOwogICAgICAgICB9IGVs c2UgeyAvLyBOb24tYWRtaW5zIGhhdmUgc2VsZWN0IHdpdGggcHJlLWxvYWRlZCBvcHRpb25zCiAg ICAgICAgICAgICB2YXIgdGVtcGxhdGUgPTNEIHNlbGYudGVtcGxhdGVBY2Nlc3NTZWxlY3QoKTsK LSAgICAgICAgICAgICQuZ2V0KCAiL2FwaS9saWJyYXJpZXMvZGF0YXNldHMvIiArIHNlbGYuaWQg KyAiL3Blcm1pc3Npb25zP3NjPQpvcGU9M0RhdmFpbGFibGUiLCBmdW5jdGlvbiggZGF0YSApIHsK KyAgICAgICAgICAgICQuZ2V0KCAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZp Zy5yb290IDogJy8nICkgKyAiPQphcGkvbGlicmFyaWVzL2RhdGFzZXRzLyIgKyBzZWxmLmlkICsg Ii9wZXJtaXNzaW9ucz9zY29wZT0zRGF2YWlsYWJsZSIsIGZ1bmM9CnRpb24oIGRhdGEgKSB7CiAg ICAgICAgICAgICAgICAgJCgnLmFjY2Vzc19wZXJtJykuaHRtbCh0ZW1wbGF0ZSh7b3B0aW9uczpk YXRhLnJvbGVzfSkpOwogICAgICAgICAgICAgICAgIHNlbGYuYWNjZXNzU2VsZWN0T2JqZWN0ID0z RCAkKCcjYWNjZXNzX3NlbGVjdCcpLnNlbGVjdDIoKTsKICAgICAgICAgICAgIH0pLmZhaWwoZnVu Y3Rpb24oKSB7CkBAIC00MzYsNyArNDM2LDcgQEAKPTIwCiAgIG1ha2VEYXRhc2V0UHJpdmF0ZTog ZnVuY3Rpb24oKXsKICAgICB2YXIgc2VsZiA9M0QgdGhpczsKLSAgICAkLnBvc3QoIi9hcGkvbGli cmFyaWVzL2RhdGFzZXRzLyIgKyBzZWxmLmlkICsgIi9wZXJtaXNzaW9ucz9hY3Rpb249M0RtPQph a2VfcHJpdmF0ZSIpLmRvbmUoZnVuY3Rpb24oZmV0Y2hlZF9wZXJtaXNzaW9ucykgeworICAgICQu cG9zdCggKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcvJyAp ICsgImFwaS9saWI9CnJhcmllcy9kYXRhc2V0cy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lvbnM/ YWN0aW9uPTNEbWFrZV9wcml2YXRlIikuZG9uZShmdT0KbmN0aW9uKGZldGNoZWRfcGVybWlzc2lv bnMpIHsKICAgICAgIHNlbGYubW9kZWwuc2V0KHtpc191bnJlc3RyaWN0ZWQ6ZmFsc2V9KTsKICAg ICAgIHNlbGYuc2hvd1Blcm1pc3Npb25zKHtmZXRjaGVkX3Blcm1pc3Npb25zOmZldGNoZWRfcGVy bWlzc2lvbnN9KQogICAgICAgbW9kX3RvYXN0ci5zdWNjZXNzKCdUaGUgZGF0YXNldCBpcyBub3cg cHJpdmF0ZSB0byB5b3UuJyk7CkBAIC00NDcsNyArNDQ3LDcgQEAKPTIwCiAgIHJlbW92ZURhdGFz ZXRSZXN0cmljdGlvbnM6IGZ1bmN0aW9uKCl7CiAgICAgdmFyIHNlbGYgPTNEIHRoaXM7Ci0gICAg JC5wb3N0KCIvYXBpL2xpYnJhcmllcy9kYXRhc2V0cy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lv bnM/YWN0aW9uPTNEcj0KZW1vdmVfcmVzdHJpY3Rpb25zIikKKyAgICAkLnBvc3QoICggd2luZG93 LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29uZmlnLnJvb3QgOiAnLycgKSArICJhcGkvbGliPQpy YXJpZXMvZGF0YXNldHMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP2FjdGlvbj0zRHJlbW92 ZV9yZXN0cmljdGlvbnMiKQogICAgIC5kb25lKGZ1bmN0aW9uKGZldGNoZWRfcGVybWlzc2lvbnMp IHsKICAgICAgIHNlbGYubW9kZWwuc2V0KHtpc191bnJlc3RyaWN0ZWQ6dHJ1ZX0pOwogICAgICAg c2VsZi5zaG93UGVybWlzc2lvbnMoe2ZldGNoZWRfcGVybWlzc2lvbnM6ZmV0Y2hlZF9wZXJtaXNz aW9uc30pCkBAIC00NzgsNyArNDc4LDcgQEAKICAgICAgIG1vZGlmeV9pZHMucHVzaChtb2RpZnlf cm9sZXNbaV0uaWQpOwogICAgIH07Cj0yMAotICAgICQucG9zdCgiL2FwaS9saWJyYXJpZXMvZGF0 YXNldHMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP2FjdGlvbj0zRHM9CmV0X3Blcm1pc3Np b25zIiwgeyAnYWNjZXNzX2lkc1tdJzogYWNjZXNzX2lkcywgJ21hbmFnZV9pZHNbXSc6IG1hbmFn ZV9pZHMsID0KJ21vZGlmeV9pZHNbXSc6IG1vZGlmeV9pZHMsIH0gKQorICAgICQucG9zdCggKCB3 aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcvJyApICsgImFwaS9s aWI9CnJhcmllcy9kYXRhc2V0cy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lvbnM/YWN0aW9uPTNE c2V0X3Blcm1pc3Npb25zIiwgeyAnYT0KY2Nlc3NfaWRzW10nOiBhY2Nlc3NfaWRzLCAnbWFuYWdl X2lkc1tdJzogbWFuYWdlX2lkcywgJ21vZGlmeV9pZHNbXSc6IG1vZGlmPQp5X2lkcywgfSApCiAg ICAgLmRvbmUoZnVuY3Rpb24oZmV0Y2hlZF9wZXJtaXNzaW9ucyl7CiAgICAgICAvL2ZldGNoIGRh dGFzZXQgYWdhaW4KICAgICAgIHNlbGYuc2hvd1Blcm1pc3Npb25zKHtmZXRjaGVkX3Blcm1pc3Np b25zOmZldGNoZWRfcGVybWlzc2lvbnN9KQoKZGlmZiAtciA0OWQ1MGJjZTQ2MzIwNmY0NDUwNjNk MmIyN2IyZjJiMzkzYWRiZTExIC1yIDFjY2Y0MGJkYWZhMTg0YjNiZTMxYWE3PQpiMWVjZGZjZTNi YzcwNWVmYiBzdGF0aWMvc2NyaXB0cy9tdmMvbGlicmFyeS9saWJyYXJ5LWZvbGRlci12aWV3Lmpz Ci0tLSBhL3N0YXRpYy9zY3JpcHRzL212Yy9saWJyYXJ5L2xpYnJhcnktZm9sZGVyLXZpZXcuanMK KysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL2xpYnJhcnkvbGlicmFyeS1mb2xkZXItdmlldy5qcwpA QCAtODEsNyArODEsNyBAQAo9MjAKICAgICB2YXIgc2VsZiA9M0QgdGhpczsKICAgICBpZiAodGhp cy5vcHRpb25zLmZldGNoZWRfcGVybWlzc2lvbnMgPTNEPTNEPTNEIHVuZGVmaW5lZCl7Ci0gICAg ICAkLmdldCggIi9hcGkvZm9sZGVycy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lvbnM/c2NvcGU9 M0RjdXJyZW50IikuZD0Kb25lKGZ1bmN0aW9uKGZldGNoZWRfcGVybWlzc2lvbnMpIHsKKyAgICAg ICQuZ2V0KCAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZpZy5yb290IDogJy8n ICkgKyAiYXBpL2ZvPQpsZGVycy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lvbnM/c2NvcGU9M0Rj dXJyZW50IikuZG9uZShmdW5jdGlvbihmZXRjaGVkX3A9CmVybWlzc2lvbnMpIHsKICAgICAgICAg c2VsZi5wcmVwYXJlU2VsZWN0Qm94ZXMoe2ZldGNoZWRfcGVybWlzc2lvbnM6ZmV0Y2hlZF9wZXJt aXNzaW9uc30pOwogICAgICAgfSkuZmFpbChmdW5jdGlvbigpewogICAgICAgICAgIG1vZF90b2Fz dHIuZXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gZmV0Y2ggZm89 CmxkZXIgcGVybWlzc2lvbnMuJyk7CkBAIC0xMjUsNyArMTI1LDcgQEAKICAgICAgIHBsYWNlaG9s ZGVyOiAnQ2xpY2sgdG8gc2VsZWN0IGEgcm9sZScsCiAgICAgICBjb250YWluZXI6IHNlbGYuJGVs LmZpbmQoJyMnICsgaWQpLAogICAgICAgYWpheDogewotICAgICAgICAgIHVybDogIi9hcGkvZm9s ZGVycy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lvbnM/c2NvcGU9M0RhdmFpbGFibGU9CiIsCisg ICAgICAgICAgdXJsOiAoIHdpbmRvdy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZpZy5yb290 IDogJy8nICkgKyAiYXBpLz0KZm9sZGVycy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lvbnM/c2Nv cGU9M0RhdmFpbGFibGUiLAogICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsCiAgICAgICAgICAg cXVpZXRNaWxsaXM6IDEwMCwKICAgICAgICAgICBkYXRhOiBmdW5jdGlvbiAodGVybSwgcGFnZSkg eyAvLyBwYWdlIGlzIHRoZSBvbmUtYmFzZWQgcGFnZSBudW1iPQplciB0cmFja2VkIGJ5IFNlbGVj dDIKQEAgLTE5NSw3ICsxOTUsNyBAQAogICAgIHZhciBtYW5hZ2VfaWRzID0zRCB0aGlzLl9leHRy YWN0SWRzKHRoaXMubWFuYWdlU2VsZWN0T2JqZWN0LiRlbC5zZWxlY3Q9CjIoJ2RhdGEnKSk7CiAg ICAgdmFyIG1vZGlmeV9pZHMgPTNEIHRoaXMuX2V4dHJhY3RJZHModGhpcy5tb2RpZnlTZWxlY3RP YmplY3QuJGVsLnNlbGVjdD0KMignZGF0YScpKTsKPTIwCi0gICAgJC5wb3N0KCIvYXBpL2ZvbGRl cnMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP2FjdGlvbj0zRHNldF9wZXJtaXNzaT0Kb25z IiwgeyAnYWRkX2lkc1tdJzogYWRkX2lkcywgJ21hbmFnZV9pZHNbXSc6IG1hbmFnZV9pZHMsICdt b2RpZnlfaWRzW10nOiBtPQpvZGlmeV9pZHMsIH0gKQorICAgICQucG9zdCggKCB3aW5kb3cuZ2Fs YXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcvJyApICsgImFwaS9mb2w9CmRlcnMv IiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP2FjdGlvbj0zRHNldF9wZXJtaXNzaW9ucyIsIHsg J2FkZF9pZHNbXSc6ID0KYWRkX2lkcywgJ21hbmFnZV9pZHNbXSc6IG1hbmFnZV9pZHMsICdtb2Rp ZnlfaWRzW10nOiBtb2RpZnlfaWRzLCB9ICkKICAgICAuZG9uZShmdW5jdGlvbihmZXRjaGVkX3Bl cm1pc3Npb25zKXsKICAgICAgIC8vZmV0Y2ggZGF0YXNldCBhZ2FpbgogICAgICAgc2VsZi5zaG93 UGVybWlzc2lvbnMoe2ZldGNoZWRfcGVybWlzc2lvbnM6ZmV0Y2hlZF9wZXJtaXNzaW9uc30pCgpk aWZmIC1yIDQ5ZDUwYmNlNDYzMjA2ZjQ0NTA2M2QyYjI3YjJmMmIzOTNhZGJlMTEgLXIgMWNjZjQw YmRhZmExODRiM2JlMzFhYTc9CmIxZWNkZmNlM2JjNzA1ZWZiIHN0YXRpYy9zY3JpcHRzL212Yy9s aWJyYXJ5L2xpYnJhcnktZm9sZGVydG9vbGJhci12aWV3LmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRz L212Yy9saWJyYXJ5L2xpYnJhcnktZm9sZGVydG9vbGJhci12aWV3LmpzCisrKyBiL3N0YXRpYy9z Y3JpcHRzL212Yy9saWJyYXJ5L2xpYnJhcnktZm9sZGVydG9vbGJhci12aWV3LmpzCkBAIC0yOTQs NyArMjk0LDcgQEAKICAgICAgICAgICAgICAgICBkYXRhc2V0X2lkcy5wdXNoKCB0aGlzLnBhcmVu dEVsZW1lbnQucGFyZW50RWxlbWVudC5pZCApOwogICAgICAgICAgICAgfQogICAgICAgICB9ICk7 Ci0gICAgdmFyIHVybCA9M0QgJy9hcGkvbGlicmFyaWVzL2RhdGFzZXRzL2Rvd25sb2FkLycgKyBm b3JtYXQ7CisgICAgdmFyIHVybCA9M0QgKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9j b25maWcucm9vdCA6ICcvJyApICsgJ2FwaT0KL2xpYnJhcmllcy9kYXRhc2V0cy9kb3dubG9hZC8n ICsgZm9ybWF0OwogICAgIHZhciBkYXRhID0zRCB7ICdsZF9pZHMnIDogZGF0YXNldF9pZHMgfTsK ICAgICB0aGlzLnByb2Nlc3NEb3dubG9hZCggdXJsLCBkYXRhLCAnZ2V0JyApOwogICB9LApAQCAt Mzg2LDcgKzM4Niw3IEBACiAgIGZldGNoRXh0QW5kR2Vub21lczogZnVuY3Rpb24oKXsKICAgICB2 YXIgdGhhdCA9M0QgdGhpczsKICAgICBtb2RfdXRpbHMuZ2V0KHsKLSAgICAgICAgdXJsICAgICAg OiAgZ2FsYXh5X2NvbmZpZy5yb290ICsgImFwaS9kYXRhdHlwZXM/ZXh0ZW5zaW9uX29ubHk9M0RG PQphbHNlIiwKKyAgICAgICAgdXJsICAgICAgOiAgKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdh bGF4eV9jb25maWcucm9vdCA6ICcvJyApICsgPQoiYXBpL2RhdGF0eXBlcz9leHRlbnNpb25fb25s eT0zREZhbHNlIiwKICAgICAgICAgc3VjY2VzcyAgOiAgZnVuY3Rpb24oIGRhdGF0eXBlcyApIHsK ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoa2V5IGluIGRhdGF0eXBlcykgewogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRoYXQubGlzdF9leHRlbnNpb25zLnB1c2goewpAQCAtNDAz LDcgKzQwMyw3IEBACiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgIH0pOwogICAgIG1vZF91 dGlscy5nZXQoewotICAgICAgICB1cmw6ICAgIGdhbGF4eV9jb25maWcucm9vdCArICJhcGkvZ2Vu b21lcyIsCisgICAgICAgIHVybDogICAgKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9j b25maWcucm9vdCA6ICcvJyApICsgImFwaT0KL2dlbm9tZXMiLAogICAgICAgICBzdWNjZXNzOiBm dW5jdGlvbiggZ2Vub21lcyApIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICgga2V5IGluIGdl bm9tZXMgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0Lmxpc3RfZ2Vub21lcy5wdXNo KHsKQEAgLTY4OSw3ICs2ODksNyBAQAogICAgICAgZm9yICggdmFyIGkgPTNEIGhpc3RvcnlfZGF0 YXNldF9pZHMubGVuZ3RoIC0gMTsgaSA+PTNEIDA7IGktLSApIHsKICAgICAgICAgaGlzdG9yeV9k YXRhc2V0X2lkID0zRCBoaXN0b3J5X2RhdGFzZXRfaWRzW2ldOwogICAgICAgICB2YXIgZm9sZGVy X2l0ZW0gPTNEIG5ldyBtb2RfbGlicmFyeV9tb2RlbC5JdGVtKCk7Ci0gICAgICAgIGZvbGRlcl9p dGVtLnVybCA9M0QgJy9hcGkvZm9sZGVycy8nICsgdGhpcy5vcHRpb25zLmlkICsgJy9jb250ZW50 cz0KJzsKKyAgICAgICAgZm9sZGVyX2l0ZW0udXJsID0zRCAoIHdpbmRvdy5nYWxheHlfY29uZmln ID8gZ2FsYXh5X2NvbmZpZy5yb290IDogPQonLycgKSArICdhcGkvZm9sZGVycy8nICsgdGhpcy5v cHRpb25zLmlkICsgJy9jb250ZW50cyc7CiAgICAgICAgIGZvbGRlcl9pdGVtLnNldCggeyAnZnJv bV9oZGFfaWQnOmhpc3RvcnlfZGF0YXNldF9pZCB9ICk7CiAgICAgICAgIGhkYXNfdG9fYWRkLnB1 c2goIGZvbGRlcl9pdGVtICk7CiAgICAgICB9CkBAIC03NDksNyArNzQ5LDcgQEAKICAgICAgIH0K ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICB2YXIgcHJvbWlzZSA9M0QgJC53aGVuKCAk LnBvc3QoICcvYXBpL2xpYnJhcmllcy9kYXRhc2V0cz9lbmNvZGVkX2ZvbGRlPQpyX2lkPTNEJyAr IHRoYXQuaWQgKz0yMAorICAgIHZhciBwcm9taXNlID0zRCAkLndoZW4oICQucG9zdCggKCB3aW5k b3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWc9Ci5yb290IDogJy8nICkgKyAnYXBpL2xp YnJhcmllcy9kYXRhc2V0cz9lbmNvZGVkX2ZvbGRlcl9pZD0zRCcgKyB0aGF0LmlkICs9MjAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJnNv dXJjZT0zRCcgKyBvcHRpPQpvbnMuc291cmNlICsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJnBhdGg9M0QnICsgcG9wcGVkPQpfaXRlbSAr CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JyZmaWxlX3R5cGU9M0QnICsgbz0KcHRpb25zLmZpbGVfdHlwZSArCkBAIC03ODgsNyArNzg4LDcg QEAKICAgICAgIH0KICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICB2YXIgcHJvbWlzZSA9 M0QgJC53aGVuKCAkLnBvc3QoICcvYXBpL2xpYnJhcmllcy9kYXRhc2V0cz9lbmNvZGVkX2ZvbGRl PQpyX2lkPTNEJyArIHRoYXQuaWQgKworICAgIHZhciBwcm9taXNlID0zRCAkLndoZW4oICQucG9z dCggKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWc9Ci5yb290IDogJy8nICkg KyAnYXBpL2xpYnJhcmllcy9kYXRhc2V0cz9lbmNvZGVkX2ZvbGRlcl9pZD0zRCcgKyB0aGF0Lmlk ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAnJnNvdXJjZT0zRCcgKyBvPQpwdGlvbnMuc291cmNlICsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJnBhdGg9M0QnICsgcG9w PQpwZWRfaXRlbSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJyZwcmVzZXJ2ZV9kaXJzPQo9M0QnICsgb3B0aW9ucy5wcmVzZXJ2ZV9k aXJzICsKCmRpZmYgLXIgNDlkNTBiY2U0NjMyMDZmNDQ1MDYzZDJiMjdiMmYyYjM5M2FkYmUxMSAt ciAxY2NmNDBiZGFmYTE4NGIzYmUzMWFhNz0KYjFlY2RmY2UzYmM3MDVlZmIgc3RhdGljL3Njcmlw dHMvbXZjL2xpYnJhcnkvbGlicmFyeS1saWJyYXJ5LXZpZXcuanMKLS0tIGEvc3RhdGljL3Njcmlw dHMvbXZjL2xpYnJhcnkvbGlicmFyeS1saWJyYXJ5LXZpZXcuanMKKysrIGIvc3RhdGljL3Njcmlw dHMvbXZjL2xpYnJhcnkvbGlicmFyeS1saWJyYXJ5LXZpZXcuanMKQEAgLTg3LDcgKzg3LDcgQEAK PTIwCiAgICAgdmFyIHNlbGYgPTNEIHRoaXM7CiAgICAgaWYgKHRoaXMub3B0aW9ucy5mZXRjaGVk X3Blcm1pc3Npb25zID0zRD0zRD0zRCB1bmRlZmluZWQpewotICAgICAgJC5nZXQoICIvYXBpL2xp YnJhcmllcy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lvbnM/c2NvcGU9M0RjdXJyZW50Iik9Ci5k b25lKGZ1bmN0aW9uKGZldGNoZWRfcGVybWlzc2lvbnMpIHsKKyAgICAgICQuZ2V0KCAoIHdpbmRv dy5nYWxheHlfY29uZmlnID8gZ2FsYXh5X2NvbmZpZy5yb290IDogJy8nICkgKyAiYXBpL2xpPQpi cmFyaWVzLyIgKyBzZWxmLmlkICsgIi9wZXJtaXNzaW9ucz9zY29wZT0zRGN1cnJlbnQiKS5kb25l KGZ1bmN0aW9uKGZldGNoZWQ9Cl9wZXJtaXNzaW9ucykgewogICAgICAgICBzZWxmLnByZXBhcmVT ZWxlY3RCb3hlcyh7ZmV0Y2hlZF9wZXJtaXNzaW9uczpmZXRjaGVkX3Blcm1pc3Npb25zfSk7CiAg ICAgICB9KS5mYWlsKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgbW9kX3RvYXN0ci5lcnJvcignQW4g ZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBmZXRjaCBsaT0KYnJhcnkgcGVybWlz c2lvbnMuJyk7CkBAIC0xMzQsNyArMTM0LDcgQEAKICAgICAgIHBsYWNlaG9sZGVyOiAnQ2xpY2sg dG8gc2VsZWN0IGEgcm9sZScsCiAgICAgICBjb250YWluZXI6IHNlbGYuJGVsLmZpbmQoJyMnICsg aWQpLAogICAgICAgYWpheDogewotICAgICAgICAgIHVybDogIi9hcGkvbGlicmFyaWVzLyIgKyBz ZWxmLmlkICsgIi9wZXJtaXNzaW9ucz9zY29wZT0zRGF2YWlsYWI9CmxlJmlzX2xpYnJhcnlfYWNj ZXNzPTNEIiArIGlzX2xpYnJhcnlfYWNjZXNzLAorICAgICAgICAgIHVybDogKCB3aW5kb3cuZ2Fs YXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWcucm9vdCA6ICcvJyApICsgImFwaS89CmxpYnJhcmll cy8iICsgc2VsZi5pZCArICIvcGVybWlzc2lvbnM/c2NvcGU9M0RhdmFpbGFibGUmaXNfbGlicmFy eV9hY2Nlc3M9Cj0zRCIgKyBpc19saWJyYXJ5X2FjY2VzcywKICAgICAgICAgICBkYXRhVHlwZTog J2pzb24nLAogICAgICAgICAgIHF1aWV0TWlsbGlzOiAxMDAsCiAgICAgICAgICAgZGF0YTogZnVu Y3Rpb24gKHRlcm0sIHBhZ2UpIHsgLy8gcGFnZSBpcyB0aGUgb25lLWJhc2VkIHBhZ2UgbnVtYj0K ZXIgdHJhY2tlZCBieSBTZWxlY3QyCkBAIC0xOTMsNyArMTkzLDcgQEAKPTIwCiAgIG1ha2VEYXRh c2V0UHJpdmF0ZTogZnVuY3Rpb24oKXsKICAgICB2YXIgc2VsZiA9M0QgdGhpczsKLSAgICAkLnBv c3QoIi9hcGkvbGlicmFyaWVzL2RhdGFzZXRzLyIgKyBzZWxmLmlkICsgIi9wZXJtaXNzaW9ucz9h Y3Rpb249M0RtPQpha2VfcHJpdmF0ZSIpLmRvbmUoZnVuY3Rpb24oZmV0Y2hlZF9wZXJtaXNzaW9u cykgeworICAgICQucG9zdCggKCB3aW5kb3cuZ2FsYXh5X2NvbmZpZyA/IGdhbGF4eV9jb25maWcu cm9vdCA6ICcvJyApICsgImFwaS9saWI9CnJhcmllcy9kYXRhc2V0cy8iICsgc2VsZi5pZCArICIv cGVybWlzc2lvbnM/YWN0aW9uPTNEbWFrZV9wcml2YXRlIikuZG9uZShmdT0KbmN0aW9uKGZldGNo ZWRfcGVybWlzc2lvbnMpIHsKICAgICAgIHNlbGYubW9kZWwuc2V0KHtpc191bnJlc3RyaWN0ZWQ6 ZmFsc2V9KTsKICAgICAgIHNlbGYuc2hvd1Blcm1pc3Npb25zKHtmZXRjaGVkX3Blcm1pc3Npb25z OmZldGNoZWRfcGVybWlzc2lvbnN9KQogICAgICAgbW9kX3RvYXN0ci5zdWNjZXNzKCdUaGUgZGF0 YXNldCBpcyBub3cgcHJpdmF0ZSB0byB5b3UuJyk7CkBAIC0yMDQsNyArMjA0LDcgQEAKPTIwCiAg IHJlbW92ZURhdGFzZXRSZXN0cmljdGlvbnM6IGZ1bmN0aW9uKCl7CiAgICAgdmFyIHNlbGYgPTNE IHRoaXM7Ci0gICAgJC5wb3N0KCIvYXBpL2xpYnJhcmllcy9kYXRhc2V0cy8iICsgc2VsZi5pZCAr ICIvcGVybWlzc2lvbnM/YWN0aW9uPTNEcj0KZW1vdmVfcmVzdHJpY3Rpb25zIikKKyAgICAkLnBv c3QoICggd2luZG93LmdhbGF4eV9jb25maWcgPyBnYWxheHlfY29uZmlnLnJvb3QgOiAnLycgKSAr ICJhcGkvbGliPQpyYXJpZXMvZGF0YXNldHMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP2Fj dGlvbj0zRHJlbW92ZV9yZXN0cmljdGlvbnMiKQogICAgIC5kb25lKGZ1bmN0aW9uKGZldGNoZWRf cGVybWlzc2lvbnMpIHsKICAgICAgIHNlbGYubW9kZWwuc2V0KHtpc191bnJlc3RyaWN0ZWQ6dHJ1 ZX0pOwogICAgICAgc2VsZi5zaG93UGVybWlzc2lvbnMoe2ZldGNoZWRfcGVybWlzc2lvbnM6ZmV0 Y2hlZF9wZXJtaXNzaW9uc30pCkBAIC0yMzAsNyArMjMwLDcgQEAKICAgICB2YXIgbWFuYWdlX2lk cyA9M0QgdGhpcy5fZXh0cmFjdElkcyh0aGlzLm1hbmFnZVNlbGVjdE9iamVjdC4kZWwuc2VsZWN0 PQoyKCdkYXRhJykpOwogICAgIHZhciBtb2RpZnlfaWRzID0zRCB0aGlzLl9leHRyYWN0SWRzKHRo aXMubW9kaWZ5U2VsZWN0T2JqZWN0LiRlbC5zZWxlY3Q9CjIoJ2RhdGEnKSk7Cj0yMAotICAgICQu cG9zdCgiL2FwaS9saWJyYXJpZXMvIiArIHNlbGYuaWQgKyAiL3Blcm1pc3Npb25zP2FjdGlvbj0z RHNldF9wZXJtaXM9CnNpb25zIiwgeyAnYWNjZXNzX2lkc1tdJzogYWNjZXNzX2lkcywgJ2FkZF9p ZHNbXSc6IGFkZF9pZHMsICdtYW5hZ2VfaWRzW10nOj0KIG1hbmFnZV9pZHMsICdtb2RpZnlfaWRz W10nOiBtb2RpZnlfaWRzLCB9ICkKKyAgICAkLnBvc3QoICggd2luZG93LmdhbGF4eV9jb25maWcg PyBnYWxheHlfY29uZmlnLnJvb3QgOiAnLycgKSArICJhcGkvbGliPQpyYXJpZXMvIiArIHNlbGYu aWQgKyAiL3Blcm1pc3Npb25zP2FjdGlvbj0zRHNldF9wZXJtaXNzaW9ucyIsIHsgJ2FjY2Vzc19p ZHM9CltdJzogYWNjZXNzX2lkcywgJ2FkZF9pZHNbXSc6IGFkZF9pZHMsICdtYW5hZ2VfaWRzW10n OiBtYW5hZ2VfaWRzLCAnbW9kaWZ5Xz0KaWRzW10nOiBtb2RpZnlfaWRzLCB9ICkKICAgICAuZG9u ZShmdW5jdGlvbihmZXRjaGVkX3Blcm1pc3Npb25zKXsKICAgICAgIC8vZmV0Y2ggZGF0YXNldCBh Z2FpbgogICAgICAgc2VsZi5zaG93UGVybWlzc2lvbnMoe2ZldGNoZWRfcGVybWlzc2lvbnM6ZmV0 Y2hlZF9wZXJtaXNzaW9uc30pCgpkaWZmIC1yIDQ5ZDUwYmNlNDYzMjA2ZjQ0NTA2M2QyYjI3YjJm MmIzOTNhZGJlMTEgLXIgMWNjZjQwYmRhZmExODRiM2JlMzFhYTc9CmIxZWNkZmNlM2JjNzA1ZWZi IHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvbGlicmFyeS9saWJyYXJ5LWRhdGFzZXQtdmlldy5q cwotLS0gYS9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL2xpYnJhcnkvbGlicmFyeS1kYXRhc2V0 LXZpZXcuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9saWJyYXJ5L2xpYnJhcnkt ZGF0YXNldC12aWV3LmpzCkBAIC0xLDEgKzEsMSBAQAotZGVmaW5lKFsibGlicy90b2FzdHIiLCJt dmMvbGlicmFyeS9saWJyYXJ5LW1vZGVsIiwibXZjL3VpL3VpLXNlbGVjdCJdLGZ1bmM9CnRpb24o ZCxjLGIpe3ZhciBhPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2VsOiIjY2VudGVyIixtb2RlbDpu dWxsLG9wdGlvbnM6ez0KfSxldmVudHM6eyJjbGljayAudG9vbGJ0bl9tb2RpZnlfZGF0YXNldCI6 ImVuYWJsZU1vZGlmaWNhdGlvbiIsImNsaWNrIC50b29sPQpidG5fY2FuY2VsX21vZGlmaWNhdGlv bnMiOiJyZW5kZXIiLCJjbGljayAudG9vbGJ0bi1kb3dubG9hZC1kYXRhc2V0IjoiZG93bmw9Cm9h ZERhdGFzZXQiLCJjbGljayAudG9vbGJ0bi1pbXBvcnQtZGF0YXNldCI6ImltcG9ydEludG9IaXN0 b3J5IiwiY2xpY2sgLnRvbz0KbGJ0bi1zaGFyZS1kYXRhc2V0Ijoic2hhcmVEYXRhc2V0IiwiY2xp Y2sgLmJ0bi1jb3B5LWxpbmstdG8tY2xpcGJvYXJkIjoiY29wPQp5VG9DbGlwYm9hcmQiLCJjbGlj ayAuYnRuLW1ha2UtcHJpdmF0ZSI6Im1ha2VEYXRhc2V0UHJpdmF0ZSIsImNsaWNrIC5idG4tcmU9 Cm1vdmUtcmVzdHJpY3Rpb25zIjoicmVtb3ZlRGF0YXNldFJlc3RyaWN0aW9ucyIsImNsaWNrIC50 b29sYnRuX3NhdmVfcGVybWlzcz0KaW9ucyI6InNhdmVQZXJtaXNzaW9ucyIsImNsaWNrIC50b29s YnRuX3NhdmVfbW9kaWZpY2F0aW9ucyI6ImNvbWluZ1Nvb24iLH0sPQppbml0aWFsaXplOmZ1bmN0 aW9uKGUpe3RoaXMub3B0aW9ucz0zRF8uZXh0ZW5kKHRoaXMub3B0aW9ucyxlKTtpZih0aGlzLm9w dGk9Cm9ucy5pZCl7dGhpcy5mZXRjaERhdGFzZXQoKX19LGZldGNoRGF0YXNldDpmdW5jdGlvbihl KXt0aGlzLm9wdGlvbnM9M0RfLmV4dD0KZW5kKHRoaXMub3B0aW9ucyxlKTt0aGlzLm1vZGVsPTNE bmV3IGMuSXRlbSh7aWQ6dGhpcy5vcHRpb25zLmlkfSk7dmFyIGY9M0R0PQpoaXM7dGhpcy5tb2Rl bC5mZXRjaCh7c3VjY2VzczpmdW5jdGlvbigpe2lmKGYub3B0aW9ucy5zaG93X3Blcm1pc3Npb25z KXtmLnM9Cmhvd1Blcm1pc3Npb25zKCl9ZWxzZXtpZihmLm9wdGlvbnMuc2hvd192ZXJzaW9uKXtm LmZldGNoVmVyc2lvbigpfWVsc2V7Zi5yZT0KbmRlcigpfX19LGVycm9yOmZ1bmN0aW9uKGgsZyl7 aWYodHlwZW9mIGcucmVzcG9uc2VKU09OIT0zRD0zRCJ1bmRlZmluZWQiKXtkPQouZXJyb3IoZy5y ZXNwb25zZUpTT04uZXJyX21zZysiIENsaWNrIHRoaXMgdG8gZ28gYmFjay4iLCIiLHtvbmNsaWNr OmZ1bmN0aW89Cm4oKXtHYWxheHkubGlicmFyaWVzLmxpYnJhcnlfcm91dGVyLmJhY2soKX19KX1l bHNle2QuZXJyb3IoIkFuIGVycm9yIG9jdXJyZT0KZC4gQ2xpY2sgdGhpcyB0byBnbyBiYWNrLiIs IiIse29uY2xpY2s6ZnVuY3Rpb24oKXtHYWxheHkubGlicmFyaWVzLmxpYnJhcnlfPQpyb3V0ZXIu YmFjaygpfX0pfX19KX0scmVuZGVyOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz0zRF8uZXh0ZW5k KHRoaXMub3B0aW89Cm5zLGUpOyQoIi50b29sdGlwIikucmVtb3ZlKCk7dmFyIGY9M0R0aGlzLnRl bXBsYXRlRGF0YXNldCgpO3RoaXMuJGVsLmh0bWwoZj0KKHtpdGVtOnRoaXMubW9kZWx9KSk7JCgi LnBlZWsiKS5odG1sKHRoaXMubW9kZWwuZ2V0KCJwZWVrIikpOyQoIiNjZW50ZXIgW2RhPQp0YS10 b2dnbGVdIikudG9vbHRpcCgpfSxmZXRjaFZlcnNpb246ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25z PTNEXy5leHRlbmQodGg9CmlzLm9wdGlvbnMsZSk7dGhhdD0zRHRoaXM7aWYoIXRoaXMub3B0aW9u cy5sZGRhX2lkKXt0aGlzLnJlbmRlcigpO2QuZXJyb3IoIj0KTGlicmFyeSBkYXRhc2V0IHZlcnNp b24gcmVxdWVzdGVkIGJ1dCBubyBpZCBwcm92aWRlZC4iKX1lbHNle3RoaXMubGRkYT0zRG5lPQp3 IGMuTGRkYSh7aWQ6dGhpcy5vcHRpb25zLmxkZGFfaWR9KTt0aGlzLmxkZGEudXJsPTNEdGhpcy5s ZGRhLnVybFJvb3QrdGhpcy49Cm1vZGVsLmlkKyIvdmVyc2lvbnMvIit0aGlzLmxkZGEuaWQ7dGhp cy5sZGRhLmZldGNoKHtzdWNjZXNzOmZ1bmN0aW9uKCl7dGhhdD0KLnJlbmRlclZlcnNpb24oKX0s ZXJyb3I6ZnVuY3Rpb24oZyxmKXtpZih0eXBlb2YgZi5yZXNwb25zZUpTT04hPTNEPTNEInVuZGVm PQppbmVkIil7ZC5lcnJvcihmLnJlc3BvbnNlSlNPTi5lcnJfbXNnKX1lbHNle2QuZXJyb3IoIkFu IGVycm9yIG9jdXJyZWQuIil9fX09Cil9fSxyZW5kZXJWZXJzaW9uOmZ1bmN0aW9uKCl7JCgiLnRv b2x0aXAiKS5yZW1vdmUoKTt2YXIgZT0zRHRoaXMudGVtcGxhdGVWZT0KcnNpb24oKTt0aGlzLiRl bC5odG1sKGUoe2l0ZW06dGhpcy5tb2RlbCxsZGRhOnRoaXMubGRkYX0pKTskKCIucGVlayIpLmh0 bWwoPQp0aGlzLmxkZGEuZ2V0KCJwZWVrIikpfSxlbmFibGVNb2RpZmljYXRpb246ZnVuY3Rpb24o KXskKCIudG9vbHRpcCIpLnJlbW92ZSg9Cik7dmFyIGU9M0R0aGlzLnRlbXBsYXRlTW9kaWZ5RGF0 YXNldCgpO3RoaXMuJGVsLmh0bWwoZSh7aXRlbTp0aGlzLm1vZGVsfSkpOz0KJCgiLnBlZWsiKS5o dG1sKHRoaXMubW9kZWwuZ2V0KCJwZWVrIikpOyQoIiNjZW50ZXIgW2RhdGEtdG9nZ2xlXSIpLnRv b2x0aXAoPQopfSxkb3dubG9hZERhdGFzZXQ6ZnVuY3Rpb24oKXt2YXIgZT0zRCIvYXBpL2xpYnJh cmllcy9kYXRhc2V0cy9kb3dubG9hZC91bmM9Cm9tcHJlc3NlZCI7dmFyIGY9M0R7bGRfaWRzOnRo aXMuaWR9O3RoaXMucHJvY2Vzc0Rvd25sb2FkKGUsZil9LHByb2Nlc3NEb3dubD0Kb2FkOmZ1bmN0 aW9uKGYsZyxoKXtpZihmJiZnKXtnPTNEdHlwZW9mIGc9M0Q9M0Qic3RyaW5nIj9nOiQucGFyYW0o Zyk7dmFyIGU9Cj0zRCIiOyQuZWFjaChnLnNwbGl0KCImIiksZnVuY3Rpb24oKXt2YXIgaT0zRHRo aXMuc3BsaXQoIj0zRCIpO2UrPTNEJzxpbnB1dD0KIHR5cGU9M0QiaGlkZGVuIiBuYW1lPTNEIicr aVswXSsnIiB2YWx1ZT0zRCInK2lbMV0rJyIgLz4nfSk7JCgnPGZvcm0gYWN0aW9uPQo9M0QiJytm KyciIG1ldGhvZD0zRCInKyhofHwicG9zdCIpKyciPicrZSsiPC9mb3JtPiIpLmFwcGVuZFRvKCJi b2R5Iikuc3VibWk9CnQoKS5yZW1vdmUoKTtkLmluZm8oIllvdXIgZG93bmxvYWQgd2lsbCBiZWdp biBzb29uLiIpfX0saW1wb3J0SW50b0hpc3Rvcnk6Zj0KdW5jdGlvbigpe3RoaXMucmVmcmVzaFVz ZXJIaXN0b3JpZXNMaXN0KGZ1bmN0aW9uKGUpe3ZhciBmPTNEZS50ZW1wbGF0ZUJ1bGtJPQptcG9y dEluTW9kYWwoKTtlLm1vZGFsPTNER2FsYXh5Lm1vZGFsO2UubW9kYWwuc2hvdyh7Y2xvc2luZ19l dmVudHM6dHJ1ZSx0aXQ9CmxlOiJJbXBvcnQgaW50byBIaXN0b3J5Iixib2R5OmYoe2hpc3Rvcmll czplLmhpc3Rvcmllcy5tb2RlbHN9KSxidXR0b25zOntJbT0KcG9ydDpmdW5jdGlvbigpe2UuaW1w b3J0Q3VycmVudEludG9IaXN0b3J5KCl9LENsb3NlOmZ1bmN0aW9uKCl7R2FsYXh5Lm1vZGFsPQou aGlkZSgpfX19KX0pfSxyZWZyZXNoVXNlckhpc3Rvcmllc0xpc3Q6ZnVuY3Rpb24oZil7dmFyIGU9 M0R0aGlzO3RoaXMuaGlzdG89CnJpZXM9M0RuZXcgYy5HYWxheHlIaXN0b3JpZXMoKTt0aGlzLmhp c3Rvcmllcy5mZXRjaCh7c3VjY2VzczpmdW5jdGlvbihnKXtpZj0KKGcubGVuZ3RoPTNEPTNEPTNE MCl7ZC53YXJuaW5nKCJZb3UgaGF2ZSB0byBjcmVhdGUgaGlzdG9yeSBmaXJzdC4gQ2xpY2sgdGhp PQpzIHRvIGRvIHNvLiIsIiIse29uY2xpY2s6ZnVuY3Rpb24oKXt3aW5kb3cubG9jYXRpb249M0Qi LyJ9fSl9ZWxzZXtmKGUpfX0sZXI9CnJvcjpmdW5jdGlvbihoLGcpe2lmKHR5cGVvZiBnLnJlc3Bv bnNlSlNPTiE9M0Q9M0QidW5kZWZpbmVkIil7ZC5lcnJvcihnLnJlcz0KcG9uc2VKU09OLmVycl9t c2cpfWVsc2V7ZC5lcnJvcigiQW4gZXJyb3Igb2N1cnJlZC4iKX19fSl9LGltcG9ydEN1cnJlbnRJ bnRvPQpIaXN0b3J5OmZ1bmN0aW9uKCl7dmFyIGU9M0QkKHRoaXMubW9kYWwuZWxNYWluKS5maW5k KCJzZWxlY3RbbmFtZT0zRGRhdGFzZXQ9Cl9pbXBvcnRfc2luZ2xlXSBvcHRpb246c2VsZWN0ZWQi KS52YWwoKTt2YXIgZj0zRG5ldyBjLkhpc3RvcnlJdGVtKCk7Zi51cmw9Cj0zRGYudXJsUm9vdCtl KyIvY29udGVudHMiO2pRdWVyeS5nZXRKU09OKGdhbGF4eV9jb25maWcucm9vdCsiaGlzdG9yeS9z ZXRfYT0Kc19jdXJyZW50P2lkPTNEIitlKTtmLnNhdmUoe2NvbnRlbnQ6dGhpcy5pZCxzb3VyY2U6 ImxpYnJhcnkifSx7c3VjY2VzczpmdW5jPQp0aW9uKCl7R2FsYXh5Lm1vZGFsLmhpZGUoKTtkLnN1 Y2Nlc3MoIkRhdGFzZXQgaW1wb3J0ZWQuIENsaWNrIHRoaXMgdG8gc3RhcnQ9CiBhbmFseXNpbmcg aXQuIiwiIix7b25jbGljazpmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbj0zRCIvIn19KX0sZXJy b3I6ZnVuYz0KdGlvbihoLGcpe2lmKHR5cGVvZiBnLnJlc3BvbnNlSlNPTiE9M0Q9M0QidW5kZWZp bmVkIil7ZC5lcnJvcigiRGF0YXNldCBub3QgPQppbXBvcnRlZC4gIitnLnJlc3BvbnNlSlNPTi5l cnJfbXNnKX1lbHNle2QuZXJyb3IoIkFuIGVycm9yIG9jY3VyZWQuIERhdGFzZXQ9CiBub3QgaW1w b3J0ZWQuIFBsZWFzZSB0cnkgYWdhaW4uIil9fX0pfSxzaGFyZURhdGFzZXQ6ZnVuY3Rpb24oKXtk LmluZm8oIkZlYT0KdHVyZSBjb21pbmcgc29vbi4iKX0sZ29CYWNrOmZ1bmN0aW9uKCl7R2FsYXh5 LmxpYnJhcmllcy5saWJyYXJ5X3JvdXRlci5iYWNrPQooKX0sc2hvd1Blcm1pc3Npb25zOmZ1bmN0 aW9uKGYpe3RoaXMub3B0aW9ucz0zRF8uZXh0ZW5kKHRoaXMub3B0aW9ucyxmKTskKCI9Ci50b29s dGlwIikucmVtb3ZlKCk7aWYodGhpcy5vcHRpb25zLmZldGNoZWRfcGVybWlzc2lvbnMhPTNEPTNE dW5kZWZpbmVkKXtpZj0KKHRoaXMub3B0aW9ucy5mZXRjaGVkX3Blcm1pc3Npb25zLmFjY2Vzc19k YXRhc2V0X3JvbGVzLmxlbmd0aD0zRD0zRD0zRDApe3RoPQppcy5tb2RlbC5zZXQoe2lzX3VucmVz dHJpY3RlZDp0cnVlfSl9ZWxzZXt0aGlzLm1vZGVsLnNldCh7aXNfdW5yZXN0cmljdGVkOmY9CmFs c2V9KX19dmFyIGg9M0RmYWxzZTtpZihHYWxheHkuY3VyclVzZXIpe2g9M0RHYWxheHkuY3VyclVz ZXIuaXNBZG1pbigpfXZhcj0KIGc9M0R0aGlzLnRlbXBsYXRlRGF0YXNldFBlcm1pc3Npb25zKCk7 dGhpcy4kZWwuaHRtbChnKHtpdGVtOnRoaXMubW9kZWwsaXNfPQphZG1pbjpofSkpO3ZhciBlPTNE dGhpcztpZih0aGlzLm9wdGlvbnMuZmV0Y2hlZF9wZXJtaXNzaW9ucz0zRD0zRD0zRHVuZGVmaW49 CmVkKXskLmdldCgiL2FwaS9saWJyYXJpZXMvZGF0YXNldHMvIitlLmlkKyIvcGVybWlzc2lvbnM/ c2NvcGU9M0RjdXJyZW50IikuZD0Kb25lKGZ1bmN0aW9uKGkpe2UucHJlcGFyZVNlbGVjdEJveGVz KHtmZXRjaGVkX3Blcm1pc3Npb25zOmksaXNfYWRtaW46aH0pfSkuPQpmYWlsKGZ1bmN0aW9uKCl7 ZC5lcnJvcigiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byBmZXRjaCBkYXRh c2U9CnQgcGVybWlzc2lvbnMuIil9KX1lbHNle3RoaXMucHJlcGFyZVNlbGVjdEJveGVzKHtpc19h ZG1pbjpofSl9JCgiI2NlbnRlciBbZD0KYXRhLXRvZ2dsZV0iKS50b29sdGlwKCk7JCgiI2NlbnRl ciIpLmNzcygib3ZlcmZsb3ciLCJhdXRvIil9LHByZXBhcmVTZWxlY3RCPQpveGVzOmZ1bmN0aW9u KHIpe3RoaXMub3B0aW9ucz0zRF8uZXh0ZW5kKHRoaXMub3B0aW9ucyxyKTt2YXIgcz0zRHRoaXMu b3B0aW89Cm5zLmZldGNoZWRfcGVybWlzc2lvbnM7dmFyIGs9M0R0aGlzLm9wdGlvbnMuaXNfYWRt aW47dmFyIHE9M0R0aGlzO3ZhciBtPTNEWz0KXTtmb3IodmFyIGg9M0QwO2g8cy5hY2Nlc3NfZGF0 YXNldF9yb2xlcy5sZW5ndGg7aCsrKXttLnB1c2gocy5hY2Nlc3NfZGF0YXNlPQp0X3JvbGVzW2hd KyI6IitzLmFjY2Vzc19kYXRhc2V0X3JvbGVzW2hdKX12YXIgZj0zRFtdO2Zvcih2YXIgaD0zRDA7 aDxzLm1vZGk9CmZ5X2l0ZW1fcm9sZXMubGVuZ3RoO2grKyl7Zi5wdXNoKHMubW9kaWZ5X2l0ZW1f cm9sZXNbaF0rIjoiK3MubW9kaWZ5X2l0ZW1fcj0Kb2xlc1toXSl9dmFyIGc9M0RbXTtmb3IodmFy IGg9M0QwO2g8cy5tYW5hZ2VfZGF0YXNldF9yb2xlcy5sZW5ndGg7aCsrKXtnLnB1PQpzaChzLm1h bmFnZV9kYXRhc2V0X3JvbGVzW2hdKyI6IitzLm1hbmFnZV9kYXRhc2V0X3JvbGVzW2hdKX1pZihr KXt2YXIgbz0zRHs9Cm1pbmltdW1JbnB1dExlbmd0aDowLGNzczoiYWNjZXNzX3Blcm0iLG11bHRp cGxlOnRydWUscGxhY2Vob2xkZXI6IkNsaWNrIHRvID0Kc2VsZWN0IGEgcm9sZSIsY29udGFpbmVy OnEuJGVsLmZpbmQoIiNhY2Nlc3NfcGVybSIpLGFqYXg6e3VybDoiL2FwaS9saWJyYXJpPQplcy9k YXRhc2V0cy8iK3EuaWQrIi9wZXJtaXNzaW9ucz9zY29wZT0zRGF2YWlsYWJsZSIsZGF0YVR5cGU6 Impzb24iLHF1aWV0TWk9CmxsaXM6MTAwLGRhdGE6ZnVuY3Rpb24oaSx0KXtyZXR1cm57cTppLHBh Z2VfbGltaXQ6MTAscGFnZTp0fX0scmVzdWx0czpmdW5jdD0KaW9uKHUsdCl7dmFyIGk9M0QodCox MCk8dS50b3RhbDtyZXR1cm57cmVzdWx0czp1LnJvbGVzLG1vcmU6aX19fSxmb3JtYXRSZXN1PQps dDpmdW5jdGlvbiBqKGkpe3JldHVybiBpLm5hbWUrIiB0eXBlOiAiK2kudHlwZX0sZm9ybWF0U2Vs ZWN0aW9uOmZ1bmN0aW9uIGU9CihpKXtyZXR1cm4gaS5uYW1lfSxpbml0U2VsZWN0aW9uOmZ1bmN0 aW9uKGksdSl7dmFyIHQ9M0RbXTskKGkudmFsKCkuc3BsaXQoIj0KLCIpKS5lYWNoKGZ1bmN0aW9u KCl7dmFyIHY9M0R0aGlzLnNwbGl0KCI6Iik7dC5wdXNoKHtpZDp2WzFdLG5hbWU6dlsxXX0pfSk7 PQp1KHQpfSxpbml0aWFsRGF0YTptLmpvaW4oIiwiKSxkcm9wZG93bkNzc0NsYXNzOiJiaWdkcm9w In07dmFyIGw9M0R7bWluaW11bUk9Cm5wdXRMZW5ndGg6MCxjc3M6Im1vZGlmeV9wZXJtIixtdWx0 aXBsZTp0cnVlLHBsYWNlaG9sZGVyOiJDbGljayB0byBzZWxlY3QgYT0KIHJvbGUiLGNvbnRhaW5l cjpxLiRlbC5maW5kKCIjbW9kaWZ5X3Blcm0iKSxhamF4Ont1cmw6Ii9hcGkvbGlicmFyaWVzL2Rh dGFzPQpldHMvIitxLmlkKyIvcGVybWlzc2lvbnM/c2NvcGU9M0RhdmFpbGFibGUiLGRhdGFUeXBl OiJqc29uIixxdWlldE1pbGxpczoxMDA9CixkYXRhOmZ1bmN0aW9uKGksdCl7cmV0dXJue3E6aSxw YWdlX2xpbWl0OjEwLHBhZ2U6dH19LHJlc3VsdHM6ZnVuY3Rpb24odSx0KT0Ke3ZhciBpPTNEKHQq MTApPHUudG90YWw7cmV0dXJue3Jlc3VsdHM6dS5yb2xlcyxtb3JlOml9fX0sZm9ybWF0UmVzdWx0 OmZ1bmN0PQppb24gaihpKXtyZXR1cm4gaS5uYW1lKyIgdHlwZTogIitpLnR5cGV9LGZvcm1hdFNl bGVjdGlvbjpmdW5jdGlvbiBlKGkpe3JldHU9CnJuIGkubmFtZX0saW5pdFNlbGVjdGlvbjpmdW5j dGlvbihpLHUpe3ZhciB0PTNEW107JChpLnZhbCgpLnNwbGl0KCIsIikpLmVhYz0KaChmdW5jdGlv bigpe3ZhciB2PTNEdGhpcy5zcGxpdCgiOiIpO3QucHVzaCh7aWQ6dlsxXSxuYW1lOnZbMV19KX0p O3UodCl9LGluPQppdGlhbERhdGE6Zi5qb2luKCIsIiksZHJvcGRvd25Dc3NDbGFzczoiYmlnZHJv cCJ9O3ZhciBwPTNEe21pbmltdW1JbnB1dExlbmc9CnRoOjAsY3NzOiJtYW5hZ2VfcGVybSIsbXVs dGlwbGU6dHJ1ZSxwbGFjZWhvbGRlcjoiQ2xpY2sgdG8gc2VsZWN0IGEgcm9sZSIsYz0Kb250YWlu ZXI6cS4kZWwuZmluZCgiI21hbmFnZV9wZXJtIiksYWpheDp7dXJsOiIvYXBpL2xpYnJhcmllcy9k YXRhc2V0cy8iK3EuPQppZCsiL3Blcm1pc3Npb25zP3Njb3BlPTNEYXZhaWxhYmxlIixkYXRhVHlw ZToianNvbiIscXVpZXRNaWxsaXM6MTAwLGRhdGE6ZnU9Cm5jdGlvbihpLHQpe3JldHVybntxOmks cGFnZV9saW1pdDoxMCxwYWdlOnR9fSxyZXN1bHRzOmZ1bmN0aW9uKHUsdCl7dmFyIGk9Cj0zRCh0 KjEwKTx1LnRvdGFsO3JldHVybntyZXN1bHRzOnUucm9sZXMsbW9yZTppfX19LGZvcm1hdFJlc3Vs dDpmdW5jdGlvbiBqKD0KaSl7cmV0dXJuIGkubmFtZSsiIHR5cGU6ICIraS50eXBlfSxmb3JtYXRT ZWxlY3Rpb246ZnVuY3Rpb24gZShpKXtyZXR1cm4gaS5uPQphbWV9LGluaXRTZWxlY3Rpb246ZnVu Y3Rpb24oaSx1KXt2YXIgdD0zRFtdOyQoaS52YWwoKS5zcGxpdCgiLCIpKS5lYWNoKGZ1bmM9CnRp b24oKXt2YXIgdj0zRHRoaXMuc3BsaXQoIjoiKTt0LnB1c2goe2lkOnZbMV0sbmFtZTp2WzFdfSl9 KTt1KHQpfSxpbml0aWFsRD0KYXRhOmcuam9pbigiLCIpLGRyb3Bkb3duQ3NzQ2xhc3M6ImJpZ2Ry b3AifTtxLmFjY2Vzc1NlbGVjdE9iamVjdD0zRG5ldyBiLlZpPQpldyhvKTtxLm1vZGlmeVNlbGVj dE9iamVjdD0zRG5ldyBiLlZpZXcobCk7cS5tYW5hZ2VTZWxlY3RPYmplY3Q9M0RuZXcgYi5WaWU9 CncocCl9ZWxzZXt2YXIgbj0zRHEudGVtcGxhdGVBY2Nlc3NTZWxlY3QoKTskLmdldCgiL2FwaS9s aWJyYXJpZXMvZGF0YXNldHMvIj0KK3EuaWQrIi9wZXJtaXNzaW9ucz9zY29wZT0zRGF2YWlsYWJs ZSIsZnVuY3Rpb24oaSl7JCgiLmFjY2Vzc19wZXJtIikuaHRtbChuPQooe29wdGlvbnM6aS5yb2xl c30pKTtxLmFjY2Vzc1NlbGVjdE9iamVjdD0zRCQoIiNhY2Nlc3Nfc2VsZWN0Iikuc2VsZWN0Migp fSk9Ci5mYWlsKGZ1bmN0aW9uKCl7ZC5lcnJvcigiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0 ZW1wdGluZyB0byBmZXRjaCBkYXRhcz0KZXQgcGVybWlzc2lvbnMuIil9KX19LGNvbWluZ1Nvb246 ZnVuY3Rpb24oKXtkLndhcm5pbmcoIkZlYXR1cmUgY29taW5nIHNvb24uPQoiKX0sY29weVRvQ2xp cGJvYXJkOmZ1bmN0aW9uKCl7dmFyIGU9M0RCYWNrYm9uZS5oaXN0b3J5LmxvY2F0aW9uLmhyZWY7 aWYoZS49Cmxhc3RJbmRleE9mKCIvcGVybWlzc2lvbnMiKSE9M0Q9M0QtMSl7ZT0zRGUuc3Vic3Ry KDAsZS5sYXN0SW5kZXhPZigiL3Blcm1pcz0Kc2lvbnMiKSl9d2luZG93LnByb21wdCgiQ29weSB0 byBjbGlwYm9hcmQ6IEN0cmwrQywgRW50ZXIiLGUpfSxtYWtlRGF0YXNldFByPQppdmF0ZTpmdW5j dGlvbigpe3ZhciBlPTNEdGhpczskLnBvc3QoIi9hcGkvbGlicmFyaWVzL2RhdGFzZXRzLyIrZS5p ZCsiL3Blcm09Cmlzc2lvbnM/YWN0aW9uPTNEbWFrZV9wcml2YXRlIikuZG9uZShmdW5jdGlvbihm KXtlLm1vZGVsLnNldCh7aXNfdW5yZXN0cmljdD0KZWQ6ZmFsc2V9KTtlLnNob3dQZXJtaXNzaW9u cyh7ZmV0Y2hlZF9wZXJtaXNzaW9uczpmfSk7ZC5zdWNjZXNzKCJUaGUgZGF0YXNlPQp0IGlzIG5v dyBwcml2YXRlIHRvIHlvdS4iKX0pLmZhaWwoZnVuY3Rpb24oKXtkLmVycm9yKCJBbiBlcnJvciBv Y2N1cnJlZCB3aGk9CmxlIGF0dGVtcHRpbmcgdG8gbWFrZSBkYXRhc2V0IHByaXZhdGUuIil9KX0s cmVtb3ZlRGF0YXNldFJlc3RyaWN0aW9uczpmdW5jdD0KaW9uKCl7dmFyIGU9M0R0aGlzOyQucG9z dCgiL2FwaS9saWJyYXJpZXMvZGF0YXNldHMvIitlLmlkKyIvcGVybWlzc2lvbnM/YWN0PQppb249 M0RyZW1vdmVfcmVzdHJpY3Rpb25zIikuZG9uZShmdW5jdGlvbihmKXtlLm1vZGVsLnNldCh7aXNf dW5yZXN0cmljdGVkOnQ9CnJ1ZX0pO2Uuc2hvd1Blcm1pc3Npb25zKHtmZXRjaGVkX3Blcm1pc3Np b25zOmZ9KTtkLnN1Y2Nlc3MoIkFjY2VzcyB0byB0aGlzID0KZGF0YXNldCBpcyBub3cgdW5yZXN0 cmljdGVkLiIpfSkuZmFpbChmdW5jdGlvbigpe2QuZXJyb3IoIkFuIGVycm9yIG9jY3VycmVkPQog d2hpbGUgYXR0ZW1wdGluZyB0byBtYWtlIGRhdGFzZXQgdW5yZXN0cmljdGVkLiIpfSl9LHNhdmVQ ZXJtaXNzaW9uczpmdW5jdGk9Cm9uKGUpe3ZhciBuPTNEdGhpczt2YXIgaz0zRHRoaXMuYWNjZXNz U2VsZWN0T2JqZWN0LiRlbC5zZWxlY3QyKCJkYXRhIik7dmFyID0KZj0zRHRoaXMubWFuYWdlU2Vs ZWN0T2JqZWN0LiRlbC5zZWxlY3QyKCJkYXRhIik7dmFyIG09M0R0aGlzLm1vZGlmeVNlbGVjdE9i PQpqZWN0LiRlbC5zZWxlY3QyKCJkYXRhIik7dmFyIGc9M0RbXTt2YXIgaj0zRFtdO3ZhciBsPTNE W107Zm9yKHZhciBoPTNEay5sZW49Cmd0aC0xO2g+PTNEMDtoLS0pe2cucHVzaChrW2hdLmlkKX1m b3IodmFyIGg9M0RmLmxlbmd0aC0xO2g+PTNEMDtoLS0pe2oucHVzaD0KKGZbaF0uaWQpfWZvcih2 YXIgaD0zRG0ubGVuZ3RoLTE7aD49M0QwO2gtLSl7bC5wdXNoKG1baF0uaWQpfSQucG9zdCgiL2Fw aS9sPQppYnJhcmllcy9kYXRhc2V0cy8iK24uaWQrIi9wZXJtaXNzaW9ucz9hY3Rpb249M0RzZXRf cGVybWlzc2lvbnMiLHsiYWNjZXNzX2k9CmRzW10iOmcsIm1hbmFnZV9pZHNbXSI6aiwibW9kaWZ5 X2lkc1tdIjpsLH0pLmRvbmUoZnVuY3Rpb24oaSl7bi5zaG93UGVybWlzcz0KaW9ucyh7ZmV0Y2hl ZF9wZXJtaXNzaW9uczppfSk7ZC5zdWNjZXNzKCJQZXJtaXNzaW9ucyBzYXZlZC4iKX0pLmZhaWwo ZnVuY3RpPQpvbigpe2QuZXJyb3IoIkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcg dG8gc2V0IGRhdGFzZXQgcGVybWlzc2lvbnM9Ci4iKX0pfSx0ZW1wbGF0ZURhdGFzZXQ6ZnVuY3Rp b24oKXt2YXIgZT0zRFtdO2UucHVzaCgnPGRpdiBjbGFzcz0zRCJsaWJyYXJ5Xz0Kc3R5bGVfY29u dGFpbmVyIj4nKTtlLnB1c2goJyAgPGRpdiBpZD0zRCJsaWJyYXJ5X3Rvb2xiYXIiPicpO2UucHVz aCgnICAgPGJ1PQp0dG9uIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNE InRvcCIgdGl0bGU9M0QiRG93bmxvYWQgZGF0YXM9CmV0IiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1 bHQgdG9vbGJ0bi1kb3dubG9hZC1kYXRhc2V0IHByaW1hcnktYnV0dG9uIiB0eXBlPQo9M0QiYnV0 dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1kb3dubG9hZCI+PC9zcGFuPiBEb3dubG9hZDwvc3Bh bj48L2J1dHRvbj49CicpO2UucHVzaCgnICAgPGJ1dHRvbiBkYXRhLXRvZ2dsZT0zRCJ0b29sdGlw IiBkYXRhLXBsYWNlbWVudD0zRCJ0b3AiIHRpdGxlPQo9M0QiSW1wb3J0IGRhdGFzZXQgaW50byBo aXN0b3J5IiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgdG9vbGJ0bi1pbXBvcnQtZGE9CnRhc2V0 IHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtYm9v ayI+PC9zcGFuPiB0bz0KIEhpc3Rvcnk8L3NwYW4+PC9idXR0b24+Jyk7ZS5wdXNoKCcgICA8JSBp ZiAoaXRlbS5nZXQoImNhbl91c2VyX21vZGlmeSIpKSB7PQogJT4nKTtlLnB1c2goJyAgIDxidXR0 b24gZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXQ9Cmxl PTNEIk1vZGlmeSBsaWJyYXJ5IGl0ZW0iIGNsYXNzPTNEImJ0biBidG4tZGVmYXVsdCB0b29sYnRu X21vZGlmeV9kYXRhc2V0ID0KcHJpbWFyeS1idXR0b24iIHR5cGU9M0QiYnV0dG9uIj48c3BhbiBj bGFzcz0zRCJmYSBmYS1wZW5jaWwiPjwvc3Bhbj4gTW9kaWZ5PQo8L3NwYW4+PC9idXR0b24+Jyk7 ZS5wdXNoKCIgICA8JSB9ICU+Iik7ZS5wdXNoKCcgICA8JSBpZiAoaXRlbS5nZXQoImNhbl91c2U9 CnJfbWFuYWdlIikpIHsgJT4nKTtlLnB1c2goJyAgIDxhIGhyZWY9M0QiI2ZvbGRlcnMvPCUtIGl0 ZW0uZ2V0KCJmb2xkZXJfaWQiKT0KICU+L2RhdGFzZXRzLzwlLSBpdGVtLmlkICU+L3Blcm1pc3Np b25zIj48YnV0dG9uIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGRhPQp0YS1wbGFjZW1lbnQ9M0Qi dG9wIiB0aXRsZT0zRCJNYW5hZ2UgcGVybWlzc2lvbnMiIGNsYXNzPTNEImJ0biBidG4tZGVmYXVs dCA9CnRvb2xidG5fY2hhbmdlX3Blcm1pc3Npb25zIHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1 dHRvbiI+PHNwYW4gY2xhc3M9M0QiZj0KYSBmYS1ncm91cCI+PC9zcGFuPiBQZXJtaXNzaW9uczwv c3Bhbj48L2J1dHRvbj48L2E+Jyk7ZS5wdXNoKCIgICA8JSB9ICU+Iik7PQplLnB1c2goIiAgPC9k aXY+Iik7ZS5wdXNoKCc8b2wgY2xhc3M9M0QiYnJlYWRjcnVtYiI+Jyk7ZS5wdXNoKCcgICA8bGk+ PGEgdGk9CnRsZT0zRCJSZXR1cm4gdG8gdGhlIGxpc3Qgb2YgbGlicmFyaWVzIiBocmVmPTNEIiMi PkxpYnJhcmllczwvYT48L2xpPicpO2UucD0KdXNoKCcgICA8JSBfLmVhY2goaXRlbS5nZXQoImZ1 bGxfcGF0aCIpLCBmdW5jdGlvbihwYXRoX2l0ZW0pIHsgJT4nKTtlLnB1c2goPQoiICAgPCUgaWYg KHBhdGhfaXRlbVswXSAhPTNEIGl0ZW0uaWQpIHsgJT4iKTtlLnB1c2goJyAgIDxsaT48YSB0aXRs ZT0zRCJSZXQ9CnVybiB0byB0aGlzIGZvbGRlciIgaHJlZj0zRCIjL2ZvbGRlcnMvPCUtIHBhdGhf aXRlbVswXSAlPiI+PCUtIHBhdGhfaXRlbVsxXT0KICU+PC9hPjwvbGk+ICcpO2UucHVzaCgiPCUg fSBlbHNlIHsgJT4iKTtlLnB1c2goJyAgIDxsaSBjbGFzcz0zRCJhY3RpdmUiPjxzPQpwYW4gdGl0 bGU9M0QiWW91IGFyZSBoZXJlIj48JS0gcGF0aF9pdGVtWzFdICU+PC9zcGFuPjwvbGk+Jyk7ZS5w dXNoKCIgICA8JSA9Cn0gJT4iKTtlLnB1c2goIiAgIDwlIH0pOyAlPiIpO2UucHVzaCgiPC9vbD4i KTtlLnB1c2goJzwlIGlmIChpdGVtLmdldCgiaXNfdT0KbnJlc3RyaWN0ZWQiKSkgeyAlPicpO2Uu cHVzaCgnICA8ZGl2IGNsYXNzPTNEImFsZXJ0IGFsZXJ0LWluZm8iPicpO2UucHVzaCgiPQogIFRo aXMgZGF0YXNldCBpcyB1bnJlc3RyaWN0ZWQgc28gZXZlcnlib2R5IGNhbiBhY2Nlc3MgaXQuIEp1 c3Qgc2hhcmUgdGhlIFU9ClJMIG9mIHRoaXMgcGFnZS4gIik7ZS5wdXNoKCcgIDxidXR0b24gZGF0 YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbj0KdD0zRCJ0b3AiIHRpdGxlPTNEIkNv cHkgdG8gY2xpcGJvYXJkIiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgYnRuLWNvcHktbGluPQpr LXRvLWNsaXBib2FyZCBwcmltYXJ5LWJ1dHRvbiIgdHlwZT0zRCJidXR0b24iPjxzcGFuIGNsYXNz PTNEImZhIGZhLWNsaXBib2E9CnJkIj48L3NwYW4+IFRvIENsaXBib2FyZDwvc3Bhbj48L2J1dHRv bj4gJyk7ZS5wdXNoKCIgIDwvZGl2PiIpO2UucHVzaCgiPCUgfT0KICU+Iik7ZS5wdXNoKCc8ZGl2 IGNsYXNzPTNEImRhdGFzZXRfdGFibGUiPicpO2UucHVzaCgnICAgPHRhYmxlIGNsYXNzPTNEImdy PQppZCB0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWNvbmRlbnNlZCI+Jyk7ZS5wdXNoKCIgICAg ICAgPHRyPiIpO2UucHVzaCgnICA9CiAgICAgICAgIDx0aCBzY29wZT0zRCJyb3ciIGlkPTNEImlk X3JvdyIgZGF0YS1pZD0zRCI8JT0zRCBfLmVzY2FwZShpdGVtLmdldD0KKCJsZGRhX2lkIikpICU+ Ij5OYW1lPC90aD4nKTtlLnB1c2goJyAgICAgICAgICAgPHRkPjwlPTNEIF8uZXNjYXBlKGl0ZW0u Z2V0PQooIm5hbWUiKSkgJT48L3RkPicpO2UucHVzaCgiICAgICAgIDwvdHI+Iik7ZS5wdXNoKCcg ICA8JSBpZiAoaXRlbS5nZXQoImZpbGU9Cl9leHQiKSkgeyAlPicpO2UucHVzaCgiICAgICAgIDx0 cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3BlPTNEInJvdyI+RD0KYXRhIHR5cGU8L3Ro PicpO2UucHVzaCgnICAgICAgICAgICA8dGQ+PCU9M0QgXy5lc2NhcGUoaXRlbS5nZXQoImZpbGVf ZXh0IikpPQogJT48L3RkPicpO2UucHVzaCgiICAgICAgIDwvdHI+Iik7ZS5wdXNoKCIgICA8JSB9 ICU+Iik7ZS5wdXNoKCcgICA8JSBpZiAoaXQ9CmVtLmdldCgiZ2Vub21lX2J1aWxkIikpIHsgJT4n KTtlLnB1c2goIiAgICAgICA8dHI+Iik7ZS5wdXNoKCcgICAgICAgICAgIDx0aD0KIHNjb3BlPTNE InJvdyI+R2Vub21lIGJ1aWxkPC90aD4nKTtlLnB1c2goJyAgICAgICAgICAgPHRkPjwlPTNEIF8u ZXNjYXBlKGl0PQplbS5nZXQoImdlbm9tZV9idWlsZCIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICAg ICAgPC90cj4iKTtlLnB1c2goIiAgIDwlIH0gJT49CiIpO2UucHVzaCgnICAgPCUgaWYgKGl0ZW0u Z2V0KCJmaWxlX3NpemUiKSkgeyAlPicpO2UucHVzaCgiICAgICAgIDx0cj4iKTtlLj0KcHVzaCgn ICAgICAgICAgICA8dGggc2NvcGU9M0Qicm93Ij5TaXplPC90aD4nKTtlLnB1c2goJyAgICAgICAg ICAgPHRkPjwlPTNEPQogXy5lc2NhcGUoaXRlbS5nZXQoImZpbGVfc2l6ZSIpKSAlPjwvdGQ+Jyk7 ZS5wdXNoKCIgICAgICAgPC90cj4iKTtlLnB1c2goIiA9CiAgPCUgfSAlPiIpO2UucHVzaCgnICAg PCUgaWYgKGl0ZW0uZ2V0KCJkYXRlX3VwbG9hZGVkIikpIHsgJT4nKTtlLnB1c2goIiAgID0KICAg IDx0cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3BlPTNEInJvdyI+RGF0ZSB1cGxvYWRl ZCAoVVRDKTwvdGg+Jyk7PQplLnB1c2goJyAgICAgICAgICAgPHRkPjwlPTNEIF8uZXNjYXBlKGl0 ZW0uZ2V0KCJkYXRlX3VwbG9hZGVkIikpICU+PC90ZD4nKTs9CmUucHVzaCgiICAgICAgIDwvdHI+ Iik7ZS5wdXNoKCIgICA8JSB9ICU+Iik7ZS5wdXNoKCcgICA8JSBpZiAoaXRlbS5nZXQoInVwbD0K b2FkZWRfYnkiKSkgeyAlPicpO2UucHVzaCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAg ICAgPHRoIHNjb3BlPTNEInJvPQp3Ij5VcGxvYWRlZCBieTwvdGg+Jyk7ZS5wdXNoKCcgICAgICAg ICAgIDx0ZD48JT0zRCBfLmVzY2FwZShpdGVtLmdldCgidXBsb2E9CmRlZF9ieSIpKSAlPjwvdGQ+ Jyk7ZS5wdXNoKCIgICAgICAgPC90cj4iKTtlLnB1c2goIiAgIDwlIH0gJT4iKTtlLnB1c2goJyAg ID0KPCUgaWYgKGl0ZW0uZ2V0KCJtZXRhZGF0YV9kYXRhX2xpbmVzIikpIHsgJT4nKTtlLnB1c2go IiAgICAgICA8dHI+Iik7ZS5wdXNoPQooJyAgICAgICAgICAgPHRoIHNjb3BlPTNEInJvdyI+RGF0 YSBMaW5lczwvdGg+Jyk7ZS5wdXNoKCcgICAgICAgICAgIDx0ZCBzY289CnBlPTNEInJvdyI+PCU9 M0QgXy5lc2NhcGUoaXRlbS5nZXQoIm1ldGFkYXRhX2RhdGFfbGluZXMiKSkgJT48L3RkPicpO2Uu cHVzaD0KKCIgICAgICAgPC90cj4iKTtlLnB1c2goIiAgIDwlIH0gJT4iKTtlLnB1c2goJyAgIDwl IGlmIChpdGVtLmdldCgibWV0YWRhdGFfPQpjb21tZW50X2xpbmVzIikpIHsgJT4nKTtlLnB1c2go IiAgICAgICA8dHI+Iik7ZS5wdXNoKCcgICAgICAgICAgIDx0aCBzY29wZT0KPTNEInJvdyI+Q29t bWVudCBMaW5lczwvdGg+Jyk7ZS5wdXNoKCcgICAgICAgICAgIDx0ZCBzY29wZT0zRCJyb3ciPjwl PTNEIF8uPQplc2NhcGUoaXRlbS5nZXQoIm1ldGFkYXRhX2NvbW1lbnRfbGluZXMiKSkgJT48L3Rk PicpO2UucHVzaCgiICAgICAgIDwvdHI+Iik9CjtlLnB1c2goIiAgIDwlIH0gJT4iKTtlLnB1c2go JyAgIDwlIGlmIChpdGVtLmdldCgibWV0YWRhdGFfY29sdW1ucyIpKSB7ICU+Jz0KKTtlLnB1c2go IiAgICAgICA8dHI+Iik7ZS5wdXNoKCcgICAgICAgICAgIDx0aCBzY29wZT0zRCJyb3ciPk51bWJl ciBvZiBDb2x1PQptbnM8L3RoPicpO2UucHVzaCgnICAgICAgICAgICA8dGQgc2NvcGU9M0Qicm93 Ij48JT0zRCBfLmVzY2FwZShpdGVtLmdldCgibWU9CnRhZGF0YV9jb2x1bW5zIikpICU+PC90ZD4n KTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgiICAgPCUgfSAlPiIpO2UucD0KdXNoKCcg ICA8JSBpZiAoaXRlbS5nZXQoIm1ldGFkYXRhX2NvbHVtbl90eXBlcyIpKSB7ICU+Jyk7ZS5wdXNo KCIgICAgICAgPHRyPQo+Iik7ZS5wdXNoKCcgICAgICAgICAgIDx0aCBzY29wZT0zRCJyb3ciPkNv bHVtbiBUeXBlczwvdGg+Jyk7ZS5wdXNoKCcgICAgICA9CiAgICAgPHRkIHNjb3BlPTNEInJvdyI+ PCU9M0QgXy5lc2NhcGUoaXRlbS5nZXQoIm1ldGFkYXRhX2NvbHVtbl90eXBlcyIpKSAlPj0KPC90 ZD4nKTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgiICAgPCUgfSAlPiIpO2UucHVzaCgn ICAgPCUgaWYgKGl0ZW0uPQpnZXQoIm1lc3NhZ2UiKSkgeyAlPicpO2UucHVzaCgiICAgICAgIDx0 cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3BlPQo9M0Qicm93Ij5NZXNzYWdlPC90aD4n KTtlLnB1c2goJyAgICAgICAgICAgPHRkIHNjb3BlPTNEInJvdyI+PCU9M0QgXy5lc2NhcGU9Cihp dGVtLmdldCgibWVzc2FnZSIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICAgICAgPC90cj4iKTtlLnB1 c2goIiAgIDwlIH0gJT4iKT0KO2UucHVzaCgnICAgPCUgaWYgKGl0ZW0uZ2V0KCJtaXNjX2JsdXJi IikpIHsgJT4nKTtlLnB1c2goIiAgICAgICA8dHI+Iik7ZS5wPQp1c2goJyAgICAgICAgICAgPHRo IHNjb3BlPTNEInJvdyI+TWlzY2VsbGFuZW91cyBibHVyYjwvdGg+Jyk7ZS5wdXNoKCcgICAgICA9 CiAgICAgPHRkIHNjb3BlPTNEInJvdyI+PCU9M0QgXy5lc2NhcGUoaXRlbS5nZXQoIm1pc2NfYmx1 cmIiKSkgJT48L3RkPicpO2UucD0KdXNoKCIgICAgICAgPC90cj4iKTtlLnB1c2goIiAgIDwlIH0g JT4iKTtlLnB1c2goJyAgIDwlIGlmIChpdGVtLmdldCgibWlzY19pPQpuZm8iKSkgeyAlPicpO2Uu cHVzaCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3BlPTNEInJvdyI+ TWk9CnNjZWxsYW5lb3VzIGluZm9ybWF0aW9uPC90aD4nKTtlLnB1c2goJyAgICAgICAgICAgPHRk IHNjb3BlPTNEInJvdyI+PCU9M0QgXz0KLmVzY2FwZShpdGVtLmdldCgibWlzY19pbmZvIikpICU+ PC90ZD4nKTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgiICAgPQo8JSB9ICU+Iik7ZS5w dXNoKCIgICAgPC90YWJsZT4iKTtlLnB1c2goIiAgICA8ZGl2PiIpO2UucHVzaCgnICAgICAgICA8 cHJlIGM9Cmxhc3M9M0QicGVlayI+Jyk7ZS5wdXNoKCIgICAgICAgIDwvcHJlPiIpO2UucHVzaCgi ICAgIDwvZGl2PiIpO2UucHVzaCgnICAgPD0KJSBpZiAoaXRlbS5nZXQoImhhc192ZXJzaW9ucyIp KSB7ICU+Jyk7ZS5wdXNoKCIgICAgICA8ZGl2PiIpO2UucHVzaCgiICAgICAgPQo8aDM+RXhwaXJl ZCB2ZXJzaW9uczo8L2gzPiIpO2UucHVzaCgiICAgICAgPHVsPiIpO2UucHVzaCgnICAgICAgPCUg Xy5lYWNoKGk9CnRlbS5nZXQoImV4cGlyZWRfdmVyc2lvbnMiKSwgZnVuY3Rpb24odmVyc2lvbikg eyAlPicpO2UucHVzaCgnICAgICAgICA8bGk+PD0KYSB0aXRsZT0zRCJTZWUgZGV0YWlscyBvZiB0 aGlzIHZlcnNpb24iIGhyZWY9M0QiI2ZvbGRlcnMvPCUtIGl0ZW0uZ2V0KCJmb2xkPQplcl9pZCIp ICU+L2RhdGFzZXRzLzwlLSBpdGVtLmlkICU+L3ZlcnNpb25zLzwlLSB2ZXJzaW9uWzBdICU+Ij48 JS0gdmVyc2lvbls9CjFdICU+PC9hPjwvbGk+Jyk7ZS5wdXNoKCIgICAgICA8JSB9KSAlPiIpO2Uu cHVzaCgiICAgICAgPHVsPiIpO2UucHVzaCgiICAgID0KICA8L2Rpdj4iKTtlLnB1c2goIiAgIDwl IH0gJT4iKTtlLnB1c2goIjwvZGl2PiIpO2UucHVzaCgiPC9kaXY+Iik7cmV0dXJuIF8uPQp0ZW1w bGF0ZShlLmpvaW4oIiIpKX0sdGVtcGxhdGVWZXJzaW9uOmZ1bmN0aW9uKCl7dmFyIGU9M0RbXTtl LnB1c2goJzxkaXYgY2w9CmFzcz0zRCJsaWJyYXJ5X3N0eWxlX2NvbnRhaW5lciI+Jyk7ZS5wdXNo KCcgIDxkaXYgaWQ9M0QibGlicmFyeV90b29sYmFyIj4nKT0KO2UucHVzaCgnICAgPGEgaHJlZj0z RCIjZm9sZGVycy88JS0gaXRlbS5nZXQoImZvbGRlcl9pZCIpICU+L2RhdGFzZXRzLzwlLSBpPQp0 ZW0uaWQgJT4iPjxidXR0b24gZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9 M0QidG9wIiB0aXRsZT0zRCI9CkdvIHRvIGxhdGVzdCBkYXRhc2V0IiBjbGFzcz0zRCJidG4gYnRu LWRlZmF1bHQgcHJpbWFyeS1idXR0b24iIHR5cGU9M0QiYnV0dD0Kb24iPjxzcGFuIGNsYXNzPTNE ImZhIGZhLWNhcmV0LWxlZnQgZmEtbGciPjwvc3Bhbj4gTGF0ZXN0IGRhdGFzZXQ8L3NwYW4+PC9i PQp1dHRvbj48YT4nKTtlLnB1c2goIiAgPC9kaXY+Iik7ZS5wdXNoKCc8b2wgY2xhc3M9M0QiYnJl YWRjcnVtYiI+Jyk7ZS5wdXNoKCc9CiAgIDxsaT48YSB0aXRsZT0zRCJSZXR1cm4gdG8gdGhlIGxp c3Qgb2YgbGlicmFyaWVzIiBocmVmPTNEIiMiPkxpYnJhcmllczwvYT0KPjwvbGk+Jyk7ZS5wdXNo KCcgICA8JSBfLmVhY2goaXRlbS5nZXQoImZ1bGxfcGF0aCIpLCBmdW5jdGlvbihwYXRoX2l0ZW0p IHsgPQolPicpO2UucHVzaCgiICAgPCUgaWYgKHBhdGhfaXRlbVswXSAhPTNEIGl0ZW0uaWQpIHsg JT4iKTtlLnB1c2goJyAgIDxsaT48YSA9CnRpdGxlPTNEIlJldHVybiB0byB0aGlzIGZvbGRlciIg aHJlZj0zRCIjL2ZvbGRlcnMvPCUtIHBhdGhfaXRlbVswXSAlPiI+PCUtID0KcGF0aF9pdGVtWzFd ICU+PC9hPjwvbGk+ICcpO2UucHVzaCgiPCUgfSBlbHNlIHsgJT4iKTtlLnB1c2goJyAgIDxsaSBj bGFzcz0KPTNEImFjdGl2ZSI+PHNwYW4gdGl0bGU9M0QiWW91IGFyZSBoZXJlIj48JS0gcGF0aF9p dGVtWzFdICU+PC9zcGFuPjwvbGk+Jyk7PQplLnB1c2goIiAgIDwlIH0gJT4iKTtlLnB1c2goIiAg IDwlIH0pOyAlPiIpO2UucHVzaCgiPC9vbD4iKTtlLnB1c2goJyAgPGRpdiA9CmNsYXNzPTNEImFs ZXJ0IGFsZXJ0LXdhcm5pbmciPlRoaXMgaXMgYW4gZXhwaXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJy YXJ5IGRhdD0KYXNldDogPCU9M0QgXy5lc2NhcGUoaXRlbS5nZXQoIm5hbWUiKSkgJT48L2Rpdj4n KTtlLnB1c2goJzxkaXYgY2xhc3M9M0QiZGF0PQphc2V0X3RhYmxlIj4nKTtlLnB1c2goJyAgIDx0 YWJsZSBjbGFzcz0zRCJncmlkIHRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtY289Cm5kZW5zZWQi PicpO2UucHVzaCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3BlPTNE InJvdyIgaWQ9Cj0zRCJpZF9yb3ciIGRhdGEtaWQ9M0QiPCU9M0QgXy5lc2NhcGUobGRkYS5pZCkg JT4iPk5hbWU8L3RoPicpO2UucHVzaCgnICAgID0KICAgICAgIDx0ZD48JT0zRCBfLmVzY2FwZShs ZGRhLmdldCgibmFtZSIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICAgICAgPC90cj4iPQopO2UucHVz aCgnICAgPCUgaWYgKGxkZGEuZ2V0KCJmaWxlX2V4dCIpKSB7ICU+Jyk7ZS5wdXNoKCIgICAgICAg PHRyPiIpO2UucHU9CnNoKCcgICAgICAgICAgIDx0aCBzY29wZT0zRCJyb3ciPkRhdGEgdHlwZTwv dGg+Jyk7ZS5wdXNoKCcgICAgICAgICAgIDx0ZD48JT0KPTNEIF8uZXNjYXBlKGxkZGEuZ2V0KCJm aWxlX2V4dCIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICAgICAgPC90cj4iKTtlLnB1c2goPQoiICAg PCUgfSAlPiIpO2UucHVzaCgnICAgPCUgaWYgKGxkZGEuZ2V0KCJnZW5vbWVfYnVpbGQiKSkgeyAl PicpO2UucHVzaCgiICA9CiAgICAgPHRyPiIpO2UucHVzaCgnICAgICAgICAgICA8dGggc2NvcGU9 M0Qicm93Ij5HZW5vbWUgYnVpbGQ8L3RoPicpO2UucHVzaD0KKCcgICAgICAgICAgIDx0ZD48JT0z RCBfLmVzY2FwZShsZGRhLmdldCgiZ2Vub21lX2J1aWxkIikpICU+PC90ZD4nKTtlLnB1c2goPQoi ICAgICAgIDwvdHI+Iik7ZS5wdXNoKCIgICA8JSB9ICU+Iik7ZS5wdXNoKCcgICA8JSBpZiAobGRk YS5nZXQoImZpbGVfc2l6ZSI9CikpIHsgJT4nKTtlLnB1c2goIiAgICAgICA8dHI+Iik7ZS5wdXNo KCcgICAgICAgICAgIDx0aCBzY29wZT0zRCJyb3ciPlNpemU8Lz0KdGg+Jyk7ZS5wdXNoKCcgICAg ICAgICAgIDx0ZD48JT0zRCBfLmVzY2FwZShsZGRhLmdldCgiZmlsZV9zaXplIikpICU+PC90ZD4n PQopO2UucHVzaCgiICAgICAgIDwvdHI+Iik7ZS5wdXNoKCIgICA8JSB9ICU+Iik7ZS5wdXNoKCcg ICA8JSBpZiAobGRkYS5nZXQoImQ9CmF0ZV91cGxvYWRlZCIpKSB7ICU+Jyk7ZS5wdXNoKCIgICAg ICAgPHRyPiIpO2UucHVzaCgnICAgICAgICAgICA8dGggc2NvcGU9Cj0zRCJyb3ciPkRhdGUgdXBs b2FkZWQgKFVUQyk8L3RoPicpO2UucHVzaCgnICAgICAgICAgICA8dGQ+PCU9M0QgXy5lc2NhcGUo bD0KZGRhLmdldCgiZGF0ZV91cGxvYWRlZCIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICAgICAgPC90 cj4iKTtlLnB1c2goIiAgIDwlIH0gPQolPiIpO2UucHVzaCgnICAgPCUgaWYgKGxkZGEuZ2V0KCJ1 cGxvYWRlZF9ieSIpKSB7ICU+Jyk7ZS5wdXNoKCIgICAgICAgPHRyPiI9Cik7ZS5wdXNoKCcgICAg ICAgICAgIDx0aCBzY29wZT0zRCJyb3ciPlVwbG9hZGVkIGJ5PC90aD4nKTtlLnB1c2goJyAgICAg ICAgID0KICA8dGQ+PCU9M0QgXy5lc2NhcGUobGRkYS5nZXQoInVwbG9hZGVkX2J5IikpICU+PC90 ZD4nKTtlLnB1c2goIiAgICAgICA8L3RyPQo+Iik7ZS5wdXNoKCIgICA8JSB9ICU+Iik7ZS5wdXNo KCcgICA8JSBpZiAobGRkYS5nZXQoIm1ldGFkYXRhX2RhdGFfbGluZXMiKSk9CiB7ICU+Jyk7ZS5w dXNoKCIgICAgICAgPHRyPiIpO2UucHVzaCgnICAgICAgICAgICA8dGggc2NvcGU9M0Qicm93Ij5E YXRhIExpbj0KZXM8L3RoPicpO2UucHVzaCgnICAgICAgICAgICA8dGQgc2NvcGU9M0Qicm93Ij48 JT0zRCBfLmVzY2FwZShsZGRhLmdldCgibWV0PQphZGF0YV9kYXRhX2xpbmVzIikpICU+PC90ZD4n KTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgiICAgPCUgfSAlPiIpO2U9Ci5wdXNoKCcg ICA8JSBpZiAobGRkYS5nZXQoIm1ldGFkYXRhX2NvbW1lbnRfbGluZXMiKSkgeyAlPicpO2UucHVz aCgiICAgICAgID0KPHRyPiIpO2UucHVzaCgnICAgICAgICAgICA8dGggc2NvcGU9M0Qicm93Ij5D b21tZW50IExpbmVzPC90aD4nKTtlLnB1c2goJyAgPQogICAgICAgICA8dGQgc2NvcGU9M0Qicm93 Ij48JT0zRCBfLmVzY2FwZShsZGRhLmdldCgibWV0YWRhdGFfY29tbWVudF9saW5lcyI9CikpICU+ PC90ZD4nKTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgiICAgPCUgfSAlPiIpO2UucHVz aCgnICAgPCUgaWYgKD0KbGRkYS5nZXQoIm1ldGFkYXRhX2NvbHVtbnMiKSkgeyAlPicpO2UucHVz aCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAgPQogICA8dGggc2NvcGU9M0Qicm93Ij5O dW1iZXIgb2YgQ29sdW1uczwvdGg+Jyk7ZS5wdXNoKCcgICAgICAgICAgIDx0ZCBzY29wZT0KPTNE InJvdyI+PCU9M0QgXy5lc2NhcGUobGRkYS5nZXQoIm1ldGFkYXRhX2NvbHVtbnMiKSkgJT48L3Rk PicpO2UucHVzaCgiICAgPQogICAgPC90cj4iKTtlLnB1c2goIiAgIDwlIH0gJT4iKTtlLnB1c2go JyAgIDwlIGlmIChsZGRhLmdldCgibWV0YWRhdGFfY29sdW09Cm5fdHlwZXMiKSkgeyAlPicpO2Uu cHVzaCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3BlPTNEInJvdz0K Ij5Db2x1bW4gVHlwZXM8L3RoPicpO2UucHVzaCgnICAgICAgICAgICA8dGQgc2NvcGU9M0Qicm93 Ij48JT0zRCBfLmVzY2FwZShsPQpkZGEuZ2V0KCJtZXRhZGF0YV9jb2x1bW5fdHlwZXMiKSkgJT48 L3RkPicpO2UucHVzaCgiICAgICAgIDwvdHI+Iik7ZS5wdXNoKCI9CiAgIDwlIH0gJT4iKTtlLnB1 c2goJyAgIDwlIGlmIChsZGRhLmdldCgibWVzc2FnZSIpKSB7ICU+Jyk7ZS5wdXNoKCIgICAgICAg PD0KdHI+Iik7ZS5wdXNoKCcgICAgICAgICAgIDx0aCBzY29wZT0zRCJyb3ciPk1lc3NhZ2U8L3Ro PicpO2UucHVzaCgnICAgICAgICAgPQogIDx0ZCBzY29wZT0zRCJyb3ciPjwlPTNEIF8uZXNjYXBl KGxkZGEuZ2V0KCJtZXNzYWdlIikpICU+PC90ZD4nKTtlLnB1c2goIiA9CiAgICAgIDwvdHI+Iik7 ZS5wdXNoKCIgICA8JSB9ICU+Iik7ZS5wdXNoKCcgICA8JSBpZiAobGRkYS5nZXQoIm1pc2NfYmx1 cmIiKT0KKSB7ICU+Jyk7ZS5wdXNoKCIgICAgICAgPHRyPiIpO2UucHVzaCgnICAgICAgICAgICA8 dGggc2NvcGU9M0Qicm93Ij5NaXNjZWxsPQphbmVvdXMgYmx1cmI8L3RoPicpO2UucHVzaCgnICAg ICAgICAgICA8dGQgc2NvcGU9M0Qicm93Ij48JT0zRCBfLmVzY2FwZShsZGQ9CmEuZ2V0KCJtaXNj X2JsdXJiIikpICU+PC90ZD4nKTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgiICAgPCUg fSAlPiIpOz0KZS5wdXNoKCcgICA8JSBpZiAobGRkYS5nZXQoIm1pc2NfaW5mbyIpKSB7ICU+Jyk7 ZS5wdXNoKCIgICAgICAgPHRyPiIpO2UucHVzPQpoKCcgICAgICAgICAgIDx0aCBzY29wZT0zRCJy b3ciPk1pc2NlbGxhbmVvdXMgaW5mb3JtYXRpb248L3RoPicpO2UucHVzaCgnICA9CiAgICAgICAg IDx0ZCBzY29wZT0zRCJyb3ciPjwlPTNEIF8uZXNjYXBlKGxkZGEuZ2V0KCJtaXNjX2luZm8iKSkg JT48L3RkPicpOz0KZS5wdXNoKCIgICAgICAgPC90cj4iKTtlLnB1c2goIiAgIDwlIH0gJT4iKTtl LnB1c2goIiAgICA8L3RhYmxlPiIpO2UucHVzaCgiPQogICAgPGRpdj4iKTtlLnB1c2goJyAgICAg ICAgPHByZSBjbGFzcz0zRCJwZWVrIj4nKTtlLnB1c2goIiAgICAgICAgPC9wcmU+Iik9CjtlLnB1 c2goIiAgICA8L2Rpdj4iKTtlLnB1c2goIjwvZGl2PiIpO2UucHVzaCgiPC9kaXY+Iik7cmV0dXJu IF8udGVtcGxhdGUoZT0KLmpvaW4oIiIpKX0sdGVtcGxhdGVNb2RpZnlEYXRhc2V0OmZ1bmN0aW9u KCl7dmFyIGU9M0RbXTtlLnB1c2goJzxkaXYgY2xhc3M9Cj0zRCJsaWJyYXJ5X3N0eWxlX2NvbnRh aW5lciI+Jyk7ZS5wdXNoKCcgIDxkaXYgaWQ9M0QibGlicmFyeV90b29sYmFyIj4nKTtlLj0KcHVz aCgnICAgPGJ1dHRvbiBkYXRhLXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0zRCJ0 b3AiIHRpdGxlPTNEIkNhPQpuY2VsIG1vZGlmaWNhdGlvbnMiIGNsYXNzPTNEImJ0biBidG4tZGVm YXVsdCB0b29sYnRuX2NhbmNlbF9tb2RpZmljYXRpb25zIHA9CnJpbWFyeS1idXR0b24iIHR5cGU9 M0QiYnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS10aW1lcyI+PC9zcGFuPiBDYW5jZWw8Lz0K c3Bhbj48L2J1dHRvbj4nKTtlLnB1c2goJyAgIDxidXR0b24gZGF0YS10b2dnbGU9M0QidG9vbHRp cCIgZGF0YS1wbGFjZW1lbnQ9Cj0zRCJ0b3AiIHRpdGxlPTNEIlNhdmUgbW9kaWZpY2F0aW9ucyIg Y2xhc3M9M0QiYnRuIGJ0bi1kZWZhdWx0IHRvb2xidG5fc2F2ZT0KX21vZGlmaWNhdGlvbnMgcHJp bWFyeS1idXR0b24iIHR5cGU9M0QiYnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1mbG9wcHkt PQpvIj48L3NwYW4+IFNhdmU8L3NwYW4+PC9idXR0b24+Jyk7ZS5wdXNoKCIgIDwvZGl2PiIpO2Uu cHVzaCgnPG9sIGNsYXNzPTNEImI9CnJlYWRjcnVtYiI+Jyk7ZS5wdXNoKCcgICA8bGk+PGEgdGl0 bGU9M0QiUmV0dXJuIHRvIHRoZSBsaXN0IG9mIGxpYnJhcmllcyIgaD0KcmVmPTNEIiMiPkxpYnJh cmllczwvYT48L2xpPicpO2UucHVzaCgnICAgPCUgXy5lYWNoKGl0ZW0uZ2V0KCJmdWxsX3BhdGgi KSwgPQpmdW5jdGlvbihwYXRoX2l0ZW0pIHsgJT4nKTtlLnB1c2goIiAgIDwlIGlmIChwYXRoX2l0 ZW1bMF0gIT0zRCBpdGVtLmlkKSB7ICU9Cj4iKTtlLnB1c2goJyAgIDxsaT48YSB0aXRsZT0zRCJS ZXR1cm4gdG8gdGhpcyBmb2xkZXIiIGhyZWY9M0QiIy9mb2xkZXJzLzwlLT0KIHBhdGhfaXRlbVsw XSAlPiI+PCUtIHBhdGhfaXRlbVsxXSAlPjwvYT48L2xpPiAnKTtlLnB1c2goIjwlIH0gZWxzZSB7 ICU+Iik7PQplLnB1c2goJyAgIDxsaSBjbGFzcz0zRCJhY3RpdmUiPjxzcGFuIHRpdGxlPTNEIllv dSBhcmUgaGVyZSI+PCUtIHBhdGhfaXRlbVs9CjFdICU+PC9zcGFuPjwvbGk+Jyk7ZS5wdXNoKCIg ICA8JSB9ICU+Iik7ZS5wdXNoKCIgICA8JSB9KTsgJT4iKTtlLnB1c2goIjwvbz0KbD4iKTtlLnB1 c2goJzxkaXYgY2xhc3M9M0QiZGF0YXNldF90YWJsZSI+Jyk7ZS5wdXNoKCc8cD5Gb3IgbW9yZSBl ZGl0aW5nIG9wPQp0aW9ucyBwbGVhc2UgaW1wb3J0IHRoZSBkYXRhc2V0IHRvIGhpc3RvcnkgYW5k IHVzZSAiRWRpdCBhdHRyaWJ1dGVzIiBvbiBpdC49CjwvcD4nKTtlLnB1c2goJyAgIDx0YWJsZSBj bGFzcz0zRCJncmlkIHRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtY29uZGVuc2VkIj0KPicpO2Uu cHVzaCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3BlPTNEInJvdyIg aWQ9M0QiaWRfcm93PQoiIGRhdGEtaWQ9M0QiPCU9M0QgXy5lc2NhcGUoaXRlbS5nZXQoImxkZGFf aWQiKSkgJT4iPk5hbWU8L3RoPicpO2UucHVzaCgnICA9CiAgICAgICAgIDx0ZD48aW5wdXQgY2xh c3M9M0QiaW5wdXRfZGF0YXNldF9uYW1lIGZvcm0tY29udHJvbCIgdHlwZT0zRCJ0ZXh0Ij0KIHBs YWNlaG9sZGVyPTNEIm5hbWUiIHZhbHVlPTNEIjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KCJuYW1l IikpICU+Ij48L3RkPicpPQo7ZS5wdXNoKCIgICAgICAgPC90cj4iKTtlLnB1c2goIiAgICAgICA8 dHI+Iik7ZS5wdXNoKCcgICAgICAgICAgIDx0aCBzY29wZT0KPTNEInJvdyI+RGF0YSB0eXBlPC90 aD4nKTtlLnB1c2goJyAgICAgICAgICAgPHRkPjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KCJmPQpp bGVfZXh0IikpICU+PC90ZD4nKTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgiICAgICAg IDx0cj4iKTtlLnB1c2goJyA9CiAgICAgICAgICA8dGggc2NvcGU9M0Qicm93Ij5HZW5vbWUgYnVp bGQ8L3RoPicpO2UucHVzaCgnICAgICAgICAgICA8dGQ+PCU9Cj0zRCBfLmVzY2FwZShpdGVtLmdl dCgiZ2Vub21lX2J1aWxkIikpICU+PC90ZD4nKTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucD0K dXNoKCIgICAgICAgPHRyPiIpO2UucHVzaCgnICAgICAgICAgICA8dGggc2NvcGU9M0Qicm93Ij5T aXplPC90aD4nKTtlLnB1c2goPQonICAgICAgICAgICA8dGQ+PCU9M0QgXy5lc2NhcGUoaXRlbS5n ZXQoImZpbGVfc2l6ZSIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICA9CiAgICA8L3RyPiIpO2UucHVz aCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3BlPTNEInJvdyI+RGF0 ZT0KIHVwbG9hZGVkIChVVEMpPC90aD4nKTtlLnB1c2goJyAgICAgICAgICAgPHRkPjwlPTNEIF8u ZXNjYXBlKGl0ZW0uZ2V0KCJkYXRlPQpfdXBsb2FkZWQiKSkgJT48L3RkPicpO2UucHVzaCgiICAg ICAgIDwvdHI+Iik7ZS5wdXNoKCIgICAgICAgPHRyPiIpO2UucHVzaCg9CicgICAgICAgICAgIDx0 aCBzY29wZT0zRCJyb3ciPlVwbG9hZGVkIGJ5PC90aD4nKTtlLnB1c2goJyAgICAgICAgICAgPHRk PjwlPQo9M0QgXy5lc2NhcGUoaXRlbS5nZXQoInVwbG9hZGVkX2J5IikpICU+PC90ZD4nKTtlLnB1 c2goIiAgICAgICA8L3RyPiIpO2UucHU9CnNoKCcgICAgICAgICAgIDx0ciBzY29wZT0zRCJyb3ci PicpO2UucHVzaCgnICAgICAgICAgICA8dGggc2NvcGU9M0Qicm93Ij5EYT0KdGEgTGluZXM8L3Ro PicpO2UucHVzaCgnICAgICAgICAgICA8dGQgc2NvcGU9M0Qicm93Ij48JT0zRCBfLmVzY2FwZShp dGVtLmdlPQp0KCJtZXRhZGF0YV9kYXRhX2xpbmVzIikpICU+PC90ZD4nKTtlLnB1c2goIiAgICAg ICA8L3RyPiIpO2UucHVzaCgnICAgICAgIDw9CnRoIHNjb3BlPTNEInJvdyI+Q29tbWVudCBMaW5l czwvdGg+Jyk7ZS5wdXNoKCcgICAgICAgICAgIDwlIGlmIChpdGVtLmdldCgibT0KZXRhZGF0YV9j b21tZW50X2xpbmVzIikgPTNEPTNEPTNEICIiKSB7ICU+Jyk7ZS5wdXNoKCcgICAgICAgICAgICAg ICA8dGQgc2NvPQpwZT0zRCJyb3ciPjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KCJtZXRhZGF0YV9j b21tZW50X2xpbmVzIikpICU+PC90ZD4nKTtlLnA9CnVzaCgiICAgICAgICAgICA8JSB9IGVsc2Ug eyAlPiIpO2UucHVzaCgnICAgICAgICAgICAgICAgPHRkIHNjb3BlPTNEInJvdyI+dT0Kbmtub3du PC90ZD4nKTtlLnB1c2goIiAgICAgICAgICAgPCUgfSAlPiIpO2UucHVzaCgiICAgICAgIDwvdHI+ Iik7ZS5wdXNoKCIgPQogICAgICA8dHI+Iik7ZS5wdXNoKCcgICAgICAgICAgIDx0aCBzY29wZT0z RCJyb3ciPk51bWJlciBvZiBDb2x1bW5zPC90aD4nKTs9CmUucHVzaCgnICAgICAgICAgICA8dGQg c2NvcGU9M0Qicm93Ij48JT0zRCBfLmVzY2FwZShpdGVtLmdldCgibWV0YWRhdGFfY29sdT0KbW5z IikpICU+PC90ZD4nKTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgiICAgICAgIDx0cj4i KTtlLnB1c2goJyAgICAgPQogICAgICA8dGggc2NvcGU9M0Qicm93Ij5Db2x1bW4gVHlwZXM8L3Ro PicpO2UucHVzaCgnICAgICAgICAgICA8dGQgc2NvcGU9M0Q9CiJyb3ciPjwlPTNEIF8uZXNjYXBl KGl0ZW0uZ2V0KCJtZXRhZGF0YV9jb2x1bW5fdHlwZXMiKSkgJT48L3RkPicpO2UucHVzaCgiID0K ICAgICAgPC90cj4iKTtlLnB1c2goIiAgICAgICA8dHI+Iik7ZS5wdXNoKCcgICAgICAgICAgIDx0 aCBzY29wZT0zRCJyb3ciPk1lPQpzc2FnZTwvdGg+Jyk7ZS5wdXNoKCcgICAgICAgICAgIDx0ZCBz Y29wZT0zRCJyb3ciPjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KCI9Cm1lc3NhZ2UiKSkgJT48L3Rk PicpO2UucHVzaCgiICAgICAgIDwvdHI+Iik7ZS5wdXNoKCIgICAgICAgPHRyPiIpO2UucHVzaCgn ID0KICAgICAgICAgIDx0aCBzY29wZT0zRCJyb3ciPk1pc2NlbGxhbmVvdXMgaW5mb3JtYXRpb248 L3RoPicpO2UucHVzaCgnICAgICAgPQogICAgIDx0ZCBzY29wZT0zRCJyb3ciPjwlPTNEIF8uZXNj YXBlKGl0ZW0uZ2V0KCJtaXNjX2luZm8iKSkgJT48L3RkPicpO2UucHU9CnNoKCIgICAgICAgPC90 cj4iKTtlLnB1c2goIiAgICAgICA8dHI+Iik7ZS5wdXNoKCcgICAgICAgICAgIDx0aCBzY29wZT0z RCJybz0KdyI+TWlzY2VsbGFuZW91cyBibHVyYjwvdGg+Jyk7ZS5wdXNoKCcgICAgICAgICAgIDx0 ZCBzY29wZT0zRCJyb3ciPjwlPTNEIF8uPQplc2NhcGUoaXRlbS5nZXQoIm1pc2NfYmx1cmIiKSkg JT48L3RkPicpO2UucHVzaCgiICAgICAgIDwvdHI+Iik7ZS5wdXNoKCIgICA9CjwvdGFibGU+Iik7 ZS5wdXNoKCI8ZGl2PiIpO2UucHVzaCgnICAgPHByZSBjbGFzcz0zRCJwZWVrIj4nKTtlLnB1c2go IiAgIDwvcD0KcmU+Iik7ZS5wdXNoKCI8L2Rpdj4iKTtlLnB1c2goIjwvZGl2PiIpO2UucHVzaCgi PC9kaXY+Iik7cmV0dXJuIF8udGVtcGxhdGUoPQplLmpvaW4oIiIpKX0sdGVtcGxhdGVEYXRhc2V0 UGVybWlzc2lvbnM6ZnVuY3Rpb24oKXt2YXIgZT0zRFtdO2UucHVzaCgnPGRpdiA9CmNsYXNzPTNE ImxpYnJhcnlfc3R5bGVfY29udGFpbmVyIj4nKTtlLnB1c2goJyAgPGRpdiBpZD0zRCJsaWJyYXJ5 X3Rvb2xiYXIiPj0KJyk7ZS5wdXNoKCcgICA8YSBocmVmPTNEIiNmb2xkZXJzLzwlLSBpdGVtLmdl dCgiZm9sZGVyX2lkIikgJT4iPjxidXR0b24gZGF0PQphLXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRh LXBsYWNlbWVudD0zRCJ0b3AiIHRpdGxlPTNEIkdvIGJhY2sgdG8gY29udGFpbmluZyA9CmZvbGRl ciIgY2xhc3M9M0QiYnRuIGJ0bi1kZWZhdWx0IHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1dHRv biI+PHNwYW4gY2xhcz0Kcz0zRCJmYSBmYS1mb2xkZXItb3Blbi1vIj48L3NwYW4+IENvbnRhaW5p bmcgRm9sZGVyPC9zcGFuPjwvYnV0dG9uPjwvYT4nKTtlPQoucHVzaCgnICAgPGEgaHJlZj0zRCIj Zm9sZGVycy88JS0gaXRlbS5nZXQoImZvbGRlcl9pZCIpICU+L2RhdGFzZXRzLzwlLSBpdGU9Cm0u aWQgJT4iPjxidXR0b24gZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0Qi dG9wIiB0aXRsZT0zRCJHbz0KIGJhY2sgdG8gZGF0YXNldCIgY2xhc3M9M0QiYnRuIGJ0bi1kZWZh dWx0IHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1dHRvbiI+PQo8c3BhbiBjbGFzcz0zRCJmYSBm YS1maWxlLW8iPjwvc3Bhbj4gRGF0YXNldCBEZXRhaWxzPC9zcGFuPjwvYnV0dG9uPjxhPicpO2U9 Ci5wdXNoKCIgIDwvZGl2PiIpO2UucHVzaCgnPG9sIGNsYXNzPTNEImJyZWFkY3J1bWIiPicpO2Uu cHVzaCgnICAgPGxpPjxhIHRpdD0KbGU9M0QiUmV0dXJuIHRvIHRoZSBsaXN0IG9mIGxpYnJhcmll cyIgaHJlZj0zRCIjIj5MaWJyYXJpZXM8L2E+PC9saT4nKTtlLnB1PQpzaCgnICAgPCUgXy5lYWNo KGl0ZW0uZ2V0KCJmdWxsX3BhdGgiKSwgZnVuY3Rpb24ocGF0aF9pdGVtKSB7ICU+Jyk7ZS5wdXNo KCI9CiAgIDwlIGlmIChwYXRoX2l0ZW1bMF0gIT0zRCBpdGVtLmlkKSB7ICU+Iik7ZS5wdXNoKCcg ICA8bGk+PGEgdGl0bGU9M0QiUmV0dT0Kcm4gdG8gdGhpcyBmb2xkZXIiIGhyZWY9M0QiIy9mb2xk ZXJzLzwlLSBwYXRoX2l0ZW1bMF0gJT4iPjwlLSBwYXRoX2l0ZW1bMV0gPQolPjwvYT48L2xpPiAn KTtlLnB1c2goIjwlIH0gZWxzZSB7ICU+Iik7ZS5wdXNoKCcgICA8bGkgY2xhc3M9M0QiYWN0aXZl Ij48c3A9CmFuIHRpdGxlPTNEIllvdSBhcmUgaGVyZSI+PCUtIHBhdGhfaXRlbVsxXSAlPjwvc3Bh bj48L2xpPicpO2UucHVzaCgiICAgPCUgfT0KICU+Iik7ZS5wdXNoKCIgICA8JSB9KTsgJT4iKTtl LnB1c2goIjwvb2w+Iik7ZS5wdXNoKCc8aDE+RGF0YXNldDogPCU9M0QgXy5lPQpzY2FwZShpdGVt LmdldCgibmFtZSIpKSAlPjwvaDE+Jyk7ZS5wdXNoKCc8ZGl2IGNsYXNzPTNEImFsZXJ0IGFsZXJ0 LXdhcm5pbmc9CiI+Jyk7ZS5wdXNoKCI8JSBpZiAoaXNfYWRtaW4pIHsgJT4iKTtlLnB1c2goIllv dSBhcmUgbG9nZ2VkIGluIGFzIGFuIDxzdHJvbj0KZz5hZG1pbmlzdHJhdG9yPC9zdHJvbmc+IHRo ZXJlZm9yZSB5b3UgY2FuIG1hbmFnZSBhbnkgZGF0YXNldCBvbiB0aGlzIEdhbGF4PQp5IGluc3Rh bmNlLiBQbGVhc2UgbWFrZSBzdXJlIHlvdSB1bmRlcnN0YW5kIHRoZSBjb25zZXF1ZW5jZXMuIik7 ZS5wdXNoKCI8JSA9Cn0gZWxzZSB7ICU+Iik7ZS5wdXNoKCJZb3UgY2FuIGFzc2lnbiBhbnkgbnVt YmVyIG9mIHJvbGVzIHRvIGFueSBvZiB0aGUgZm9sbD0Kb3dpbmcgcGVybWlzc2lvbiB0eXBlcy4g SG93ZXZlciBwbGVhc2UgcmVhZCBjYXJlZnVsbHkgdGhlIGltcGxpY2F0aW9ucyBvZiBzPQp1Y2gg YWN0aW9ucy4iKTtlLnB1c2goIjwlIH0gJT4iKTtlLnB1c2goIjwvZGl2PiIpO2UucHVzaCgnPGRp diBjbGFzcz0zRCJkYXQ9CmFzZXRfdGFibGUiPicpO2UucHVzaCgiPGgyPkxpYnJhcnktcmVsYXRl ZCBwZXJtaXNzaW9uczwvaDI+Iik7ZS5wdXNoKCI8aDQ+Uj0Kb2xlcyB0aGF0IGNhbiBtb2RpZnkg dGhlIGxpYnJhcnkgaXRlbTwvaDQ+Iik7ZS5wdXNoKCc8ZGl2IGlkPTNEIm1vZGlmeV9wZXJtPQoi IGNsYXNzPTNEIm1vZGlmeV9wZXJtIHJvbGVzLXNlbGVjdGlvbiI+PC9kaXY+Jyk7ZS5wdXNoKCc8 ZGl2IGNsYXNzPTNEImFsZXI9CnQgYWxlcnQtaW5mbyByb2xlcy1zZWxlY3Rpb24iPlVzZXIgd2l0 aCA8c3Ryb25nPmFueTwvc3Ryb25nPiBvZiB0aGVzZSByb2xlcz0KIGNhbiBtb2RpZnkgbmFtZSwg bWV0YWRhdGEsIGFuZCBvdGhlciBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGxpYnJhcnkgaXRlbS48 PQovZGl2PicpO2UucHVzaCgiPGhyLz4iKTtlLnB1c2goIjxoMj5EYXRhc2V0LXJlbGF0ZWQgcGVy bWlzc2lvbnM8L2gyPiIpO2UucHU9CnNoKCc8ZGl2IGNsYXNzPTNEImFsZXJ0IGFsZXJ0LXdhcm5p bmciPkNoYW5nZXMgbWFkZSBiZWxvdyB3aWxsIGFmZmVjdCA8c3Rybz0Kbmc+ZXZlcnk8L3N0cm9u Zz4gbGlicmFyeSBpdGVtIHRoYXQgd2FzIGNyZWF0ZWQgZnJvbSB0aGlzIGRhdGFzZXQgYW5kIGFs c28gPQpldmVyeSBoaXN0b3J5IHRoaXMgZGF0YXNldCBpcyBwYXJ0IG9mLjwvZGl2PicpO2UucHVz aCgnPCUgaWYgKCFpdGVtLmdldCgiaXM9Cl91bnJlc3RyaWN0ZWQiKSkgeyAlPicpO2UucHVzaCgi IDxwPllvdSBjYW4gcmVtb3ZlIGFsbCBhY2Nlc3MgcmVzdHJpY3Rpb25zID0Kb24gdGhpcyBkYXRh c2V0LiAiKTtlLnB1c2goJyA8YnV0dG9uIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxh Y2VtZW50PQo9M0QidG9wIiB0aXRsZT0zRCJFdmVyeWJvZHkgd2lsbCBiZSBhYmxlIHRvIGFjY2Vz cyB0aGUgZGF0YXNldC4iIGNsYXNzPTNEImI9CnRuIGJ0bi1kZWZhdWx0IGJ0bi1yZW1vdmUtcmVz dHJpY3Rpb25zIHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1dHRvbiI+Jyk7ZT0KLnB1c2goJyA8 c3BhbiBjbGFzcz0zRCJmYSBmYS1nbG9iZSI+IFJlbW92ZSByZXN0cmljdGlvbnM8L3NwYW4+Jyk7 ZS5wdXNoKCIgPQo8L2J1dHRvbj4iKTtlLnB1c2goIiA8L3A+Iik7ZS5wdXNoKCI8JSB9IGVsc2Ug eyAlPiIpO2UucHVzaCgiICBUaGlzIGRhdGFzZXQ9CiBpcyB1bnJlc3RyaWN0ZWQgc28gZXZlcnli b2R5IGNhbiBhY2Nlc3MgaXQuIEp1c3Qgc2hhcmUgdGhlIFVSTCBvZiB0aGlzIHBhZz0KZS4iKTtl LnB1c2goJyAgPGJ1dHRvbiBkYXRhLXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0z RCJ0b3AiIHRpdGxlPQo9M0QiQ29weSB0byBjbGlwYm9hcmQiIGNsYXNzPTNEImJ0biBidG4tZGVm YXVsdCBidG4tY29weS1saW5rLXRvLWNsaXBib2FyZCA9CnByaW1hcnktYnV0dG9uIiB0eXBlPTNE ImJ1dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtY2xpcGJvYXJkIj4gVG8gQ2xpcGJvYT0KcmQ8 L3NwYW4+PC9idXR0b24+ICcpO2UucHVzaCgiICA8cD5Zb3UgY2FuIG1ha2UgdGhpcyBkYXRhc2V0 IHByaXZhdGUgdG8geW91PQouICIpO2UucHVzaCgnIDxidXR0b24gZGF0YS10b2dnbGU9M0QidG9v bHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0KPTNEIk9ubHkgeW91IHdpbGwgYmUg YWJsZSB0byBhY2Nlc3MgdGhlIGRhdGFzZXQuIiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgPQpi dG4tbWFrZS1wcml2YXRlIHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1dHRvbiI+PHNwYW4gY2xh c3M9M0QiZmEgZmEta2V5Ij49CiBNYWtlIFByaXZhdGU8L3NwYW4+PC9idXR0b24+Jyk7ZS5wdXNo KCIgPC9wPiIpO2UucHVzaCgiPCUgfSAlPiIpO2UucHVzaCgiPD0KaDQ+Um9sZXMgdGhhdCBjYW4g YWNjZXNzIHRoZSBkYXRhc2V0PC9oND4iKTtlLnB1c2goJzxkaXYgaWQ9M0QiYWNjZXNzX3Blcm0i PQogY2xhc3M9M0QiYWNjZXNzX3Blcm0gcm9sZXMtc2VsZWN0aW9uIj48L2Rpdj4nKTtlLnB1c2go JzxkaXYgY2xhc3M9M0QiYWxlcnQ9CiBhbGVydC1pbmZvIHJvbGVzLXNlbGVjdGlvbiI+VXNlciBo YXMgdG8gaGF2ZSA8c3Ryb25nPmFsbCB0aGVzZSByb2xlczwvc3Rybz0Kbmc+IGluIG9yZGVyIHRv IGFjY2VzcyB0aGlzIGRhdGFzZXQuIFVzZXJzIHdpdGhvdXQgYWNjZXNzIHBlcm1pc3Npb24gPHN0 cm9uPQpnPmNhbm5vdDwvc3Ryb25nPiBoYXZlIG90aGVyIHBlcm1pc3Npb25zIG9uIHRoaXMgZGF0 YXNldC4gSWYgdGhlcmUgYXJlIG5vIGE9CmNjZXNzIHJvbGVzIHNldCBvbiB0aGUgZGF0YXNldCBp dCBpcyBjb25zaWRlcmVkIDxzdHJvbmc+dW5yZXN0cmljdGVkPC9zdHJvbj0KZz4uPC9kaXY+Jyk7 ZS5wdXNoKCI8aDQ+Um9sZXMgdGhhdCBjYW4gbWFuYWdlIHBlcm1pc3Npb25zIG9uIHRoZSBkYXRh c2V0PC9oPQo0PiIpO2UucHVzaCgnPGRpdiBpZD0zRCJtYW5hZ2VfcGVybSIgY2xhc3M9M0QibWFu YWdlX3Blcm0gcm9sZXMtc2VsZWN0aW9uIj49CjwvZGl2PicpO2UucHVzaCgnPGRpdiBjbGFzcz0z RCJhbGVydCBhbGVydC1pbmZvIHJvbGVzLXNlbGVjdGlvbiI+VXNlciB3aXRoID0KPHN0cm9uZz5h bnk8L3N0cm9uZz4gb2YgdGhlc2Ugcm9sZXMgY2FuIG1hbmFnZSBwZXJtaXNzaW9ucyBvZiB0aGlz IGRhdGFzZXQuPQogSWYgeW91IHJlbW92ZSB5b3Vyc2VsZiB5b3Ugd2lsbCBsb29zZSB0aGUgYWJp bGl0eSBtYW5hZ2UgdGhpcyBkYXRhc2V0IHVubGU9CnNzIHlvdSBhcmUgYW4gYWRtaW4uPC9kaXY+ Jyk7ZS5wdXNoKCc8YnV0dG9uIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcD0KbGFjZW1l bnQ9M0QidG9wIiB0aXRsZT0zRCJTYXZlIG1vZGlmaWNhdGlvbnMgbWFkZSBvbiB0aGlzIHBhZ2Ui IGNsYXNzPTNEImJ0PQpuIGJ0bi1kZWZhdWx0IHRvb2xidG5fc2F2ZV9wZXJtaXNzaW9ucyBwcmlt YXJ5LWJ1dHRvbiIgdHlwZT0zRCJidXR0b24iPjxzcGE9Cm4gY2xhc3M9M0QiZmEgZmEtZmxvcHB5 LW8iPjwvc3Bhbj4gU2F2ZTwvc3Bhbj48L2J1dHRvbj4nKTtlLnB1c2goIjwvZGl2PiIpOz0KZS5w dXNoKCI8L2Rpdj4iKTtyZXR1cm4gXy50ZW1wbGF0ZShlLmpvaW4oIiIpKX0sdGVtcGxhdGVCdWxr SW1wb3J0SW5Nb2RhbDpmPQp1bmN0aW9uKCl7dmFyIGU9M0RbXTtlLnB1c2goJzxzcGFuIGlkPTNE Imhpc3RvcnlfbW9kYWxfY29tYm9fYnVsayIgc3R5bGU9M0Q9CiJ3aWR0aDo5MCU7IG1hcmdpbi1s ZWZ0OiAxZW07IG1hcmdpbi1yaWdodDogMWVtOyAiPicpO2UucHVzaCgiU2VsZWN0IGhpc3Rvcj0K eTogIik7ZS5wdXNoKCc8c2VsZWN0IGlkPTNEImRhdGFzZXRfaW1wb3J0X3NpbmdsZSIgbmFtZT0z RCJkYXRhc2V0X2ltcG9ydF9zPQppbmdsZSIgc3R5bGU9M0Qid2lkdGg6NTAlOyBtYXJnaW4tYm90 dG9tOiAxZW07ICI+ICcpO2UucHVzaCgiICAgPCUgXy5lYWNoKGg9CmlzdG9yaWVzLCBmdW5jdGlv bihoaXN0b3J5KSB7ICU+Iik7ZS5wdXNoKCcgICAgICAgPG9wdGlvbiB2YWx1ZT0zRCI8JT0zRCBf Lj0KZXNjYXBlKGhpc3RvcnkuZ2V0KCJpZCIpKSAlPiI+PCU9M0QgXy5lc2NhcGUoaGlzdG9yeS5n ZXQoIm5hbWUiKSkgJT48L29wdGlvPQpuPicpO2UucHVzaCgiICAgPCUgfSk7ICU+Iik7ZS5wdXNo KCI8L3NlbGVjdD4iKTtlLnB1c2goIjwvc3Bhbj4iKTtyZXR1cm4gXy49CnRlbXBsYXRlKGUuam9p bigiIikpfSx0ZW1wbGF0ZUFjY2Vzc1NlbGVjdDpmdW5jdGlvbigpe3ZhciBlPTNEW107ZS5wdXNo KCc8cz0KZWxlY3QgaWQ9M0QiYWNjZXNzX3NlbGVjdCIgbXVsdGlwbGU+Jyk7ZS5wdXNoKCIgICA8 JSBfLmVhY2gob3B0aW9ucywgZnVuY3RpPQpvbihvcHRpb24pIHsgJT4iKTtlLnB1c2goJyAgICAg ICA8b3B0aW9uIHZhbHVlPTNEIjwlLSBvcHRpb24ubmFtZSAlPiI+PCUtIG89CnB0aW9uLm5hbWUg JT48L29wdGlvbj4nKTtlLnB1c2goIiAgIDwlIH0pOyAlPiIpO2UucHVzaCgiPC9zZWxlY3Q+Iik7 cmV0dXJuID0KXy50ZW1wbGF0ZShlLmpvaW4oIiIpKX19KTtyZXR1cm57TGlicmFyeURhdGFzZXRW aWV3OmF9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGVmaW5lKFsibGlicy90b2Fz dHIiLCJtdmMvbGlicmFyeS9saWJyYXJ5LW1vZGVsIiwibXZjL3VpL3VpLXNlbGVjdCJdLGZ1bmM9 CnRpb24oZCxjLGIpe3ZhciBhPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2VsOiIjY2VudGVyIixt b2RlbDpudWxsLG9wdGlvbnM6ez0KfSxldmVudHM6eyJjbGljayAudG9vbGJ0bl9tb2RpZnlfZGF0 YXNldCI6ImVuYWJsZU1vZGlmaWNhdGlvbiIsImNsaWNrIC50b29sPQpidG5fY2FuY2VsX21vZGlm aWNhdGlvbnMiOiJyZW5kZXIiLCJjbGljayAudG9vbGJ0bi1kb3dubG9hZC1kYXRhc2V0IjoiZG93 bmw9Cm9hZERhdGFzZXQiLCJjbGljayAudG9vbGJ0bi1pbXBvcnQtZGF0YXNldCI6ImltcG9ydElu dG9IaXN0b3J5IiwiY2xpY2sgLnRvbz0KbGJ0bi1zaGFyZS1kYXRhc2V0Ijoic2hhcmVEYXRhc2V0 IiwiY2xpY2sgLmJ0bi1jb3B5LWxpbmstdG8tY2xpcGJvYXJkIjoiY29wPQp5VG9DbGlwYm9hcmQi LCJjbGljayAuYnRuLW1ha2UtcHJpdmF0ZSI6Im1ha2VEYXRhc2V0UHJpdmF0ZSIsImNsaWNrIC5i dG4tcmU9Cm1vdmUtcmVzdHJpY3Rpb25zIjoicmVtb3ZlRGF0YXNldFJlc3RyaWN0aW9ucyIsImNs aWNrIC50b29sYnRuX3NhdmVfcGVybWlzcz0KaW9ucyI6InNhdmVQZXJtaXNzaW9ucyIsImNsaWNr IC50b29sYnRuX3NhdmVfbW9kaWZpY2F0aW9ucyI6ImNvbWluZ1Nvb24iLH0sPQppbml0aWFsaXpl OmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz0zRF8uZXh0ZW5kKHRoaXMub3B0aW9ucyxlKTtpZih0 aGlzLm9wdGk9Cm9ucy5pZCl7dGhpcy5mZXRjaERhdGFzZXQoKX19LGZldGNoRGF0YXNldDpmdW5j dGlvbihlKXt0aGlzLm9wdGlvbnM9M0RfLmV4dD0KZW5kKHRoaXMub3B0aW9ucyxlKTt0aGlzLm1v ZGVsPTNEbmV3IGMuSXRlbSh7aWQ6dGhpcy5vcHRpb25zLmlkfSk7dmFyIGY9M0R0PQpoaXM7dGhp cy5tb2RlbC5mZXRjaCh7c3VjY2VzczpmdW5jdGlvbigpe2lmKGYub3B0aW9ucy5zaG93X3Blcm1p c3Npb25zKXtmLnM9Cmhvd1Blcm1pc3Npb25zKCl9ZWxzZXtpZihmLm9wdGlvbnMuc2hvd192ZXJz aW9uKXtmLmZldGNoVmVyc2lvbigpfWVsc2V7Zi5yZT0KbmRlcigpfX19LGVycm9yOmZ1bmN0aW9u KGgsZyl7aWYodHlwZW9mIGcucmVzcG9uc2VKU09OIT0zRD0zRCJ1bmRlZmluZWQiKXtkPQouZXJy b3IoZy5yZXNwb25zZUpTT04uZXJyX21zZysiIENsaWNrIHRoaXMgdG8gZ28gYmFjay4iLCIiLHtv bmNsaWNrOmZ1bmN0aW89Cm4oKXtHYWxheHkubGlicmFyaWVzLmxpYnJhcnlfcm91dGVyLmJhY2so KX19KX1lbHNle2QuZXJyb3IoIkFuIGVycm9yIG9jdXJyZT0KZC4gQ2xpY2sgdGhpcyB0byBnbyBi YWNrLiIsIiIse29uY2xpY2s6ZnVuY3Rpb24oKXtHYWxheHkubGlicmFyaWVzLmxpYnJhcnlfPQpy b3V0ZXIuYmFjaygpfX0pfX19KX0scmVuZGVyOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz0zRF8u ZXh0ZW5kKHRoaXMub3B0aW89Cm5zLGUpOyQoIi50b29sdGlwIikucmVtb3ZlKCk7dmFyIGY9M0R0 aGlzLnRlbXBsYXRlRGF0YXNldCgpO3RoaXMuJGVsLmh0bWwoZj0KKHtpdGVtOnRoaXMubW9kZWx9 KSk7JCgiLnBlZWsiKS5odG1sKHRoaXMubW9kZWwuZ2V0KCJwZWVrIikpOyQoIiNjZW50ZXIgW2Rh PQp0YS10b2dnbGVdIikudG9vbHRpcCgpfSxmZXRjaFZlcnNpb246ZnVuY3Rpb24oZSl7dGhpcy5v cHRpb25zPTNEXy5leHRlbmQodGg9CmlzLm9wdGlvbnMsZSk7dGhhdD0zRHRoaXM7aWYoIXRoaXMu b3B0aW9ucy5sZGRhX2lkKXt0aGlzLnJlbmRlcigpO2QuZXJyb3IoIj0KTGlicmFyeSBkYXRhc2V0 IHZlcnNpb24gcmVxdWVzdGVkIGJ1dCBubyBpZCBwcm92aWRlZC4iKX1lbHNle3RoaXMubGRkYT0z RG5lPQp3IGMuTGRkYSh7aWQ6dGhpcy5vcHRpb25zLmxkZGFfaWR9KTt0aGlzLmxkZGEudXJsPTNE dGhpcy5sZGRhLnVybFJvb3QrdGhpcy49Cm1vZGVsLmlkKyIvdmVyc2lvbnMvIit0aGlzLmxkZGEu aWQ7dGhpcy5sZGRhLmZldGNoKHtzdWNjZXNzOmZ1bmN0aW9uKCl7dGhhdD0KLnJlbmRlclZlcnNp b24oKX0sZXJyb3I6ZnVuY3Rpb24oZyxmKXtpZih0eXBlb2YgZi5yZXNwb25zZUpTT04hPTNEPTNE InVuZGVmPQppbmVkIil7ZC5lcnJvcihmLnJlc3BvbnNlSlNPTi5lcnJfbXNnKX1lbHNle2QuZXJy b3IoIkFuIGVycm9yIG9jdXJyZWQuIil9fX09Cil9fSxyZW5kZXJWZXJzaW9uOmZ1bmN0aW9uKCl7 JCgiLnRvb2x0aXAiKS5yZW1vdmUoKTt2YXIgZT0zRHRoaXMudGVtcGxhdGVWZT0KcnNpb24oKTt0 aGlzLiRlbC5odG1sKGUoe2l0ZW06dGhpcy5tb2RlbCxsZGRhOnRoaXMubGRkYX0pKTskKCIucGVl ayIpLmh0bWwoPQp0aGlzLmxkZGEuZ2V0KCJwZWVrIikpfSxlbmFibGVNb2RpZmljYXRpb246ZnVu Y3Rpb24oKXskKCIudG9vbHRpcCIpLnJlbW92ZSg9Cik7dmFyIGU9M0R0aGlzLnRlbXBsYXRlTW9k aWZ5RGF0YXNldCgpO3RoaXMuJGVsLmh0bWwoZSh7aXRlbTp0aGlzLm1vZGVsfSkpOz0KJCgiLnBl ZWsiKS5odG1sKHRoaXMubW9kZWwuZ2V0KCJwZWVrIikpOyQoIiNjZW50ZXIgW2RhdGEtdG9nZ2xl XSIpLnRvb2x0aXAoPQopfSxkb3dubG9hZERhdGFzZXQ6ZnVuY3Rpb24oKXt2YXIgZT0zRCh3aW5k b3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnI9Cm9vdDoiLyIpKyJhcGkvbGlicmFyaWVz L2RhdGFzZXRzL2Rvd25sb2FkL3VuY29tcHJlc3NlZCI7dmFyIGY9M0R7bGRfaWRzOnRoaT0Kcy5p ZH07dGhpcy5wcm9jZXNzRG93bmxvYWQoZSxmKX0scHJvY2Vzc0Rvd25sb2FkOmZ1bmN0aW9uKGYs ZyxoKXtpZihmJiZnKXtnPQo9M0R0eXBlb2YgZz0zRD0zRCJzdHJpbmciP2c6JC5wYXJhbShnKTt2 YXIgZT0zRCIiOyQuZWFjaChnLnNwbGl0KCImIiksZnVuY3Q9Cmlvbigpe3ZhciBpPTNEdGhpcy5z cGxpdCgiPTNEIik7ZSs9M0QnPGlucHV0IHR5cGU9M0QiaGlkZGVuIiBuYW1lPTNEIicraVswXT0K KyciIHZhbHVlPTNEIicraVsxXSsnIiAvPid9KTskKCc8Zm9ybSBhY3Rpb249M0QiJytmKyciIG1l dGhvZD0zRCInKyhofHwicG9zPQp0IikrJyI+JytlKyI8L2Zvcm0+IikuYXBwZW5kVG8oImJvZHki KS5zdWJtaXQoKS5yZW1vdmUoKTtkLmluZm8oIllvdXIgZG93bmw9Cm9hZCB3aWxsIGJlZ2luIHNv b24uIil9fSxpbXBvcnRJbnRvSGlzdG9yeTpmdW5jdGlvbigpe3RoaXMucmVmcmVzaFVzZXJIaXN0 bz0Kcmllc0xpc3QoZnVuY3Rpb24oZSl7dmFyIGY9M0RlLnRlbXBsYXRlQnVsa0ltcG9ydEluTW9k YWwoKTtlLm1vZGFsPTNER2FsYXh5PQoubW9kYWw7ZS5tb2RhbC5zaG93KHtjbG9zaW5nX2V2ZW50 czp0cnVlLHRpdGxlOiJJbXBvcnQgaW50byBIaXN0b3J5Iixib2R5OmY9Cih7aGlzdG9yaWVzOmUu aGlzdG9yaWVzLm1vZGVsc30pLGJ1dHRvbnM6e0ltcG9ydDpmdW5jdGlvbigpe2UuaW1wb3J0Q3Vy cmVudD0KSW50b0hpc3RvcnkoKX0sQ2xvc2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlkZSgp fX19KX0pfSxyZWZyZXNoVXNlckhpc3RvPQpyaWVzTGlzdDpmdW5jdGlvbihmKXt2YXIgZT0zRHRo aXM7dGhpcy5oaXN0b3JpZXM9M0RuZXcgYy5HYWxheHlIaXN0b3JpZXMoKTs9CnRoaXMuaGlzdG9y aWVzLmZldGNoKHtzdWNjZXNzOmZ1bmN0aW9uKGcpe2lmKGcubGVuZ3RoPTNEPTNEPTNEMCl7ZC53 YXJuaW5nKD0KIllvdSBoYXZlIHRvIGNyZWF0ZSBoaXN0b3J5IGZpcnN0LiBDbGljayB0aGlzIHRv IGRvIHNvLiIsIiIse29uY2xpY2s6ZnVuY3RpPQpvbigpe3dpbmRvdy5sb2NhdGlvbj0zRCIvIn19 KX1lbHNle2YoZSl9fSxlcnJvcjpmdW5jdGlvbihoLGcpe2lmKHR5cGVvZiBnLnI9CmVzcG9uc2VK U09OIT0zRD0zRCJ1bmRlZmluZWQiKXtkLmVycm9yKGcucmVzcG9uc2VKU09OLmVycl9tc2cpfWVs c2V7ZC5lcnJvcj0KKCJBbiBlcnJvciBvY3VycmVkLiIpfX19KX0saW1wb3J0Q3VycmVudEludG9I aXN0b3J5OmZ1bmN0aW9uKCl7dmFyIGU9M0QkKHRoPQppcy5tb2RhbC5lbE1haW4pLmZpbmQoInNl bGVjdFtuYW1lPTNEZGF0YXNldF9pbXBvcnRfc2luZ2xlXSBvcHRpb246c2VsZWN0ZWQ9CiIpLnZh bCgpO3ZhciBmPTNEbmV3IGMuSGlzdG9yeUl0ZW0oKTtmLnVybD0zRGYudXJsUm9vdCtlKyIvY29u dGVudHMiO2pRdWVyeT0KLmdldEpTT04oZ2FsYXh5X2NvbmZpZy5yb290KyJoaXN0b3J5L3NldF9h c19jdXJyZW50P2lkPTNEIitlKTtmLnNhdmUoe2NvbnRlPQpudDp0aGlzLmlkLHNvdXJjZToibGli cmFyeSJ9LHtzdWNjZXNzOmZ1bmN0aW9uKCl7R2FsYXh5Lm1vZGFsLmhpZGUoKTtkLnN1Y2M9CmVz cygiRGF0YXNldCBpbXBvcnRlZC4gQ2xpY2sgdGhpcyB0byBzdGFydCBhbmFseXNpbmcgaXQuIiwi Iix7b25jbGljazpmdW5jdD0KaW9uKCl7d2luZG93LmxvY2F0aW9uPTNEIi8ifX0pfSxlcnJvcjpm dW5jdGlvbihoLGcpe2lmKHR5cGVvZiBnLnJlc3BvbnNlSlNPPQpOIT0zRD0zRCJ1bmRlZmluZWQi KXtkLmVycm9yKCJEYXRhc2V0IG5vdCBpbXBvcnRlZC4gIitnLnJlc3BvbnNlSlNPTi5lcnJfbXM9 CmcpfWVsc2V7ZC5lcnJvcigiQW4gZXJyb3Igb2NjdXJlZC4gRGF0YXNldCBub3QgaW1wb3J0ZWQu IFBsZWFzZSB0cnkgYWdhaW4uIj0KKX19fSl9LHNoYXJlRGF0YXNldDpmdW5jdGlvbigpe2QuaW5m bygiRmVhdHVyZSBjb21pbmcgc29vbi4iKX0sZ29CYWNrOmZ1bmN0PQppb24oKXtHYWxheHkubGli cmFyaWVzLmxpYnJhcnlfcm91dGVyLmJhY2soKX0sc2hvd1Blcm1pc3Npb25zOmZ1bmN0aW9uKGYp e3Q9Cmhpcy5vcHRpb25zPTNEXy5leHRlbmQodGhpcy5vcHRpb25zLGYpOyQoIi50b29sdGlwIiku cmVtb3ZlKCk7aWYodGhpcy5vcHRpbz0KbnMuZmV0Y2hlZF9wZXJtaXNzaW9ucyE9M0Q9M0R1bmRl ZmluZWQpe2lmKHRoaXMub3B0aW9ucy5mZXRjaGVkX3Blcm1pc3Npb25zPQouYWNjZXNzX2RhdGFz ZXRfcm9sZXMubGVuZ3RoPTNEPTNEPTNEMCl7dGhpcy5tb2RlbC5zZXQoe2lzX3VucmVzdHJpY3Rl ZDp0cnU9CmV9KX1lbHNle3RoaXMubW9kZWwuc2V0KHtpc191bnJlc3RyaWN0ZWQ6ZmFsc2V9KX19 dmFyIGg9M0RmYWxzZTtpZihHYWxheHkuYz0KdXJyVXNlcil7aD0zREdhbGF4eS5jdXJyVXNlci5p c0FkbWluKCl9dmFyIGc9M0R0aGlzLnRlbXBsYXRlRGF0YXNldFBlcm1pc3NpPQpvbnMoKTt0aGlz LiRlbC5odG1sKGcoe2l0ZW06dGhpcy5tb2RlbCxpc19hZG1pbjpofSkpO3ZhciBlPTNEdGhpcztp Zih0aGlzLm89CnB0aW9ucy5mZXRjaGVkX3Blcm1pc3Npb25zPTNEPTNEPTNEdW5kZWZpbmVkKXsk LmdldCgod2luZG93LmdhbGF4eV9jb25maWc/Zz0KYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBp L2xpYnJhcmllcy9kYXRhc2V0cy8iK2UuaWQrIi9wZXJtaXNzaW9ucz9zY29wZT0KPTNEY3VycmVu dCIpLmRvbmUoZnVuY3Rpb24oaSl7ZS5wcmVwYXJlU2VsZWN0Qm94ZXMoe2ZldGNoZWRfcGVybWlz c2lvbnM6aSxpPQpzX2FkbWluOmh9KX0pLmZhaWwoZnVuY3Rpb24oKXtkLmVycm9yKCJBbiBlcnJv ciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHQ9Cm8gZmV0Y2ggZGF0YXNldCBwZXJtaXNzaW9u cy4iKX0pfWVsc2V7dGhpcy5wcmVwYXJlU2VsZWN0Qm94ZXMoe2lzX2FkbWluOmh9KT0KfSQoIiNj ZW50ZXIgW2RhdGEtdG9nZ2xlXSIpLnRvb2x0aXAoKTskKCIjY2VudGVyIikuY3NzKCJvdmVyZmxv dyIsImF1dG8iKX0sPQpwcmVwYXJlU2VsZWN0Qm94ZXM6ZnVuY3Rpb24ocil7dGhpcy5vcHRpb25z PTNEXy5leHRlbmQodGhpcy5vcHRpb25zLHIpO3ZhciA9CnM9M0R0aGlzLm9wdGlvbnMuZmV0Y2hl ZF9wZXJtaXNzaW9uczt2YXIgaz0zRHRoaXMub3B0aW9ucy5pc19hZG1pbjt2YXIgcT0zRD0KdGhp czt2YXIgbT0zRFtdO2Zvcih2YXIgaD0zRDA7aDxzLmFjY2Vzc19kYXRhc2V0X3JvbGVzLmxlbmd0 aDtoKyspe20ucHVzaChzPQouYWNjZXNzX2RhdGFzZXRfcm9sZXNbaF0rIjoiK3MuYWNjZXNzX2Rh dGFzZXRfcm9sZXNbaF0pfXZhciBmPTNEW107Zm9yKHZhciA9Cmg9M0QwO2g8cy5tb2RpZnlfaXRl bV9yb2xlcy5sZW5ndGg7aCsrKXtmLnB1c2gocy5tb2RpZnlfaXRlbV9yb2xlc1toXSsiOiIrcz0K Lm1vZGlmeV9pdGVtX3JvbGVzW2hdKX12YXIgZz0zRFtdO2Zvcih2YXIgaD0zRDA7aDxzLm1hbmFn ZV9kYXRhc2V0X3JvbGVzLmxlPQpuZ3RoO2grKyl7Zy5wdXNoKHMubWFuYWdlX2RhdGFzZXRfcm9s ZXNbaF0rIjoiK3MubWFuYWdlX2RhdGFzZXRfcm9sZXNbaF0pfWk9CmYoayl7dmFyIG89M0R7bWlu aW11bUlucHV0TGVuZ3RoOjAsY3NzOiJhY2Nlc3NfcGVybSIsbXVsdGlwbGU6dHJ1ZSxwbGFjZWhv bD0KZGVyOiJDbGljayB0byBzZWxlY3QgYSByb2xlIixjb250YWluZXI6cS4kZWwuZmluZCgiI2Fj Y2Vzc19wZXJtIiksYWpheDp7dXJsPQo6KHdpbmRvdy5nYWxheHlfY29uZmlnP2dhbGF4eV9jb25m aWcucm9vdDoiLyIpKyJhcGkvbGlicmFyaWVzL2RhdGFzZXRzLyIrcS49CmlkKyIvcGVybWlzc2lv bnM/c2NvcGU9M0RhdmFpbGFibGUiLGRhdGFUeXBlOiJqc29uIixxdWlldE1pbGxpczoxMDAsZGF0 YTpmdT0KbmN0aW9uKGksdCl7cmV0dXJue3E6aSxwYWdlX2xpbWl0OjEwLHBhZ2U6dH19LHJlc3Vs dHM6ZnVuY3Rpb24odSx0KXt2YXIgaT0KPTNEKHQqMTApPHUudG90YWw7cmV0dXJue3Jlc3VsdHM6 dS5yb2xlcyxtb3JlOml9fX0sZm9ybWF0UmVzdWx0OmZ1bmN0aW9uIGooPQppKXtyZXR1cm4gaS5u YW1lKyIgdHlwZTogIitpLnR5cGV9LGZvcm1hdFNlbGVjdGlvbjpmdW5jdGlvbiBlKGkpe3JldHVy biBpLm49CmFtZX0saW5pdFNlbGVjdGlvbjpmdW5jdGlvbihpLHUpe3ZhciB0PTNEW107JChpLnZh bCgpLnNwbGl0KCIsIikpLmVhY2goZnVuYz0KdGlvbigpe3ZhciB2PTNEdGhpcy5zcGxpdCgiOiIp O3QucHVzaCh7aWQ6dlsxXSxuYW1lOnZbMV19KX0pO3UodCl9LGluaXRpYWxEPQphdGE6bS5qb2lu KCIsIiksZHJvcGRvd25Dc3NDbGFzczoiYmlnZHJvcCJ9O3ZhciBsPTNEe21pbmltdW1JbnB1dExl bmd0aDowLGM9CnNzOiJtb2RpZnlfcGVybSIsbXVsdGlwbGU6dHJ1ZSxwbGFjZWhvbGRlcjoiQ2xp Y2sgdG8gc2VsZWN0IGEgcm9sZSIsY29udGFpbj0KZXI6cS4kZWwuZmluZCgiI21vZGlmeV9wZXJt IiksYWpheDp7dXJsOih3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnPQoucm9vdDoi LyIpKyJhcGkvbGlicmFyaWVzL2RhdGFzZXRzLyIrcS5pZCsiL3Blcm1pc3Npb25zP3Njb3BlPTNE YXZhaWxhYmxlIiw9CmRhdGFUeXBlOiJqc29uIixxdWlldE1pbGxpczoxMDAsZGF0YTpmdW5jdGlv bihpLHQpe3JldHVybntxOmkscGFnZV9saW1pdDoxMD0KLHBhZ2U6dH19LHJlc3VsdHM6ZnVuY3Rp b24odSx0KXt2YXIgaT0zRCh0KjEwKTx1LnRvdGFsO3JldHVybntyZXN1bHRzOnUucm9sPQplcyxt b3JlOml9fX0sZm9ybWF0UmVzdWx0OmZ1bmN0aW9uIGooaSl7cmV0dXJuIGkubmFtZSsiIHR5cGU6 ICIraS50eXBlfSxmb3I9Cm1hdFNlbGVjdGlvbjpmdW5jdGlvbiBlKGkpe3JldHVybiBpLm5hbWV9 LGluaXRTZWxlY3Rpb246ZnVuY3Rpb24oaSx1KXt2YXIgdD0KPTNEW107JChpLnZhbCgpLnNwbGl0 KCIsIikpLmVhY2goZnVuY3Rpb24oKXt2YXIgdj0zRHRoaXMuc3BsaXQoIjoiKTt0LnB1c2goPQp7 aWQ6dlsxXSxuYW1lOnZbMV19KX0pO3UodCl9LGluaXRpYWxEYXRhOmYuam9pbigiLCIpLGRyb3Bk b3duQ3NzQ2xhc3M6ImJpZ2Q9CnJvcCJ9O3ZhciBwPTNEe21pbmltdW1JbnB1dExlbmd0aDowLGNz czoibWFuYWdlX3Blcm0iLG11bHRpcGxlOnRydWUscGxhY2Vobz0KbGRlcjoiQ2xpY2sgdG8gc2Vs ZWN0IGEgcm9sZSIsY29udGFpbmVyOnEuJGVsLmZpbmQoIiNtYW5hZ2VfcGVybSIpLGFqYXg6e3Vy PQpsOih3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2xp YnJhcmllcy9kYXRhc2V0cy8iK3E9Ci5pZCsiL3Blcm1pc3Npb25zP3Njb3BlPTNEYXZhaWxhYmxl IixkYXRhVHlwZToianNvbiIscXVpZXRNaWxsaXM6MTAwLGRhdGE6Zj0KdW5jdGlvbihpLHQpe3Jl dHVybntxOmkscGFnZV9saW1pdDoxMCxwYWdlOnR9fSxyZXN1bHRzOmZ1bmN0aW9uKHUsdCl7dmFy IGk9Cj0zRCh0KjEwKTx1LnRvdGFsO3JldHVybntyZXN1bHRzOnUucm9sZXMsbW9yZTppfX19LGZv cm1hdFJlc3VsdDpmdW5jdGlvbiBqKD0KaSl7cmV0dXJuIGkubmFtZSsiIHR5cGU6ICIraS50eXBl fSxmb3JtYXRTZWxlY3Rpb246ZnVuY3Rpb24gZShpKXtyZXR1cm4gaS5uPQphbWV9LGluaXRTZWxl Y3Rpb246ZnVuY3Rpb24oaSx1KXt2YXIgdD0zRFtdOyQoaS52YWwoKS5zcGxpdCgiLCIpKS5lYWNo KGZ1bmM9CnRpb24oKXt2YXIgdj0zRHRoaXMuc3BsaXQoIjoiKTt0LnB1c2goe2lkOnZbMV0sbmFt ZTp2WzFdfSl9KTt1KHQpfSxpbml0aWFsRD0KYXRhOmcuam9pbigiLCIpLGRyb3Bkb3duQ3NzQ2xh c3M6ImJpZ2Ryb3AifTtxLmFjY2Vzc1NlbGVjdE9iamVjdD0zRG5ldyBiLlZpPQpldyhvKTtxLm1v ZGlmeVNlbGVjdE9iamVjdD0zRG5ldyBiLlZpZXcobCk7cS5tYW5hZ2VTZWxlY3RPYmplY3Q9M0Ru ZXcgYi5WaWU9CncocCl9ZWxzZXt2YXIgbj0zRHEudGVtcGxhdGVBY2Nlc3NTZWxlY3QoKTskLmdl dCgod2luZG93LmdhbGF4eV9jb25maWc/Z2FsYT0KeHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2xp YnJhcmllcy9kYXRhc2V0cy8iK3EuaWQrIi9wZXJtaXNzaW9ucz9zY29wZT0zRGF2PQphaWxhYmxl IixmdW5jdGlvbihpKXskKCIuYWNjZXNzX3Blcm0iKS5odG1sKG4oe29wdGlvbnM6aS5yb2xlc30p KTtxLmFjY2Vzc1M9CmVsZWN0T2JqZWN0PTNEJCgiI2FjY2Vzc19zZWxlY3QiKS5zZWxlY3QyKCl9 KS5mYWlsKGZ1bmN0aW9uKCl7ZC5lcnJvcigiQW4gZT0KcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRl bXB0aW5nIHRvIGZldGNoIGRhdGFzZXQgcGVybWlzc2lvbnMuIil9KX19LGNvbWluZ1NvPQpvbjpm dW5jdGlvbigpe2Qud2FybmluZygiRmVhdHVyZSBjb21pbmcgc29vbi4iKX0sY29weVRvQ2xpcGJv YXJkOmZ1bmN0aW9uKCk9Cnt2YXIgZT0zREJhY2tib25lLmhpc3RvcnkubG9jYXRpb24uaHJlZjtp ZihlLmxhc3RJbmRleE9mKCIvcGVybWlzc2lvbnMiKSE9Cj0zRD0zRC0xKXtlPTNEZS5zdWJzdHIo MCxlLmxhc3RJbmRleE9mKCIvcGVybWlzc2lvbnMiKSl9d2luZG93LnByb21wdCgiQ29weT0KIHRv IGNsaXBib2FyZDogQ3RybCtDLCBFbnRlciIsZSl9LG1ha2VEYXRhc2V0UHJpdmF0ZTpmdW5jdGlv bigpe3ZhciBlPTNEdGhpPQpzOyQucG9zdCgod2luZG93LmdhbGF4eV9jb25maWc/Z2FsYXh5X2Nv bmZpZy5yb290OiIvIikrImFwaS9saWJyYXJpZXMvZGF0YXM9CmV0cy8iK2UuaWQrIi9wZXJtaXNz aW9ucz9hY3Rpb249M0RtYWtlX3ByaXZhdGUiKS5kb25lKGZ1bmN0aW9uKGYpe2UubW9kZWwucz0K ZXQoe2lzX3VucmVzdHJpY3RlZDpmYWxzZX0pO2Uuc2hvd1Blcm1pc3Npb25zKHtmZXRjaGVkX3Bl cm1pc3Npb25zOmZ9KTtkLnN1PQpjY2VzcygiVGhlIGRhdGFzZXQgaXMgbm93IHByaXZhdGUgdG8g eW91LiIpfSkuZmFpbChmdW5jdGlvbigpe2QuZXJyb3IoIkFuIGU9CnJyb3Igb2NjdXJyZWQgd2hp bGUgYXR0ZW1wdGluZyB0byBtYWtlIGRhdGFzZXQgcHJpdmF0ZS4iKX0pfSxyZW1vdmVEYXRhc2V0 Uj0KZXN0cmljdGlvbnM6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXM7JC5wb3N0KCh3aW5kb3cuZ2Fs YXh5X2NvbmZpZz9nYWxheHlfY29uPQpmaWcucm9vdDoiLyIpKyJhcGkvbGlicmFyaWVzL2RhdGFz ZXRzLyIrZS5pZCsiL3Blcm1pc3Npb25zP2FjdGlvbj0zRHJlbW92ZV89CnJlc3RyaWN0aW9ucyIp LmRvbmUoZnVuY3Rpb24oZil7ZS5tb2RlbC5zZXQoe2lzX3VucmVzdHJpY3RlZDp0cnVlfSk7ZS5z aG93UD0KZXJtaXNzaW9ucyh7ZmV0Y2hlZF9wZXJtaXNzaW9uczpmfSk7ZC5zdWNjZXNzKCJBY2Nl c3MgdG8gdGhpcyBkYXRhc2V0IGlzIG5vPQp3IHVucmVzdHJpY3RlZC4iKX0pLmZhaWwoZnVuY3Rp b24oKXtkLmVycm9yKCJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXA9CnRpbmcgdG8gbWFr ZSBkYXRhc2V0IHVucmVzdHJpY3RlZC4iKX0pfSxzYXZlUGVybWlzc2lvbnM6ZnVuY3Rpb24oZSl7 dmFyIG49Cj0zRHRoaXM7dmFyIGs9M0R0aGlzLmFjY2Vzc1NlbGVjdE9iamVjdC4kZWwuc2VsZWN0 MigiZGF0YSIpO3ZhciBmPTNEdGhpcy5tYT0KbmFnZVNlbGVjdE9iamVjdC4kZWwuc2VsZWN0Migi ZGF0YSIpO3ZhciBtPTNEdGhpcy5tb2RpZnlTZWxlY3RPYmplY3QuJGVsLnNlPQpsZWN0MigiZGF0 YSIpO3ZhciBnPTNEW107dmFyIGo9M0RbXTt2YXIgbD0zRFtdO2Zvcih2YXIgaD0zRGsubGVuZ3Ro LTE7aD49M0Q9CjA7aC0tKXtnLnB1c2goa1toXS5pZCl9Zm9yKHZhciBoPTNEZi5sZW5ndGgtMTto Pj0zRDA7aC0tKXtqLnB1c2goZltoXS5pZCl9Zj0Kb3IodmFyIGg9M0RtLmxlbmd0aC0xO2g+PTNE MDtoLS0pe2wucHVzaChtW2hdLmlkKX0kLnBvc3QoKHdpbmRvdy5nYWxheHlfY29uPQpmaWc/Z2Fs YXh5X2NvbmZpZy5yb290OiIvIikrImFwaS9saWJyYXJpZXMvZGF0YXNldHMvIituLmlkKyIvcGVy bWlzc2lvbnM/YWM9CnRpb249M0RzZXRfcGVybWlzc2lvbnMiLHsiYWNjZXNzX2lkc1tdIjpnLCJt YW5hZ2VfaWRzW10iOmosIm1vZGlmeV9pZHNbXSI6bD0KLH0pLmRvbmUoZnVuY3Rpb24oaSl7bi5z aG93UGVybWlzc2lvbnMoe2ZldGNoZWRfcGVybWlzc2lvbnM6aX0pO2Quc3VjY2VzcygiPQpQZXJt aXNzaW9ucyBzYXZlZC4iKX0pLmZhaWwoZnVuY3Rpb24oKXtkLmVycm9yKCJBbiBlcnJvciBvY2N1 cnJlZCB3aGlsZSBhdHQ9CmVtcHRpbmcgdG8gc2V0IGRhdGFzZXQgcGVybWlzc2lvbnMuIil9KX0s dGVtcGxhdGVEYXRhc2V0OmZ1bmN0aW9uKCl7dmFyIGU9Cj0zRFtdO2UucHVzaCgnPGRpdiBjbGFz cz0zRCJsaWJyYXJ5X3N0eWxlX2NvbnRhaW5lciI+Jyk7ZS5wdXNoKCcgIDxkaXYgaWQ9Cj0zRCJs aWJyYXJ5X3Rvb2xiYXIiPicpO2UucHVzaCgnICAgPGJ1dHRvbiBkYXRhLXRvZ2dsZT0zRCJ0b29s dGlwIiBkYXRhLXBsYT0KY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiRG93bmxvYWQgZGF0YXNldCIg Y2xhc3M9M0QiYnRuIGJ0bi1kZWZhdWx0IHRvb2xidG4tPQpkb3dubG9hZC1kYXRhc2V0IHByaW1h cnktYnV0dG9uIiB0eXBlPTNEImJ1dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtZG93bmw9Cm9h ZCI+PC9zcGFuPiBEb3dubG9hZDwvc3Bhbj48L2J1dHRvbj4nKTtlLnB1c2goJyAgIDxidXR0b24g ZGF0YS10b2dnbGU9M0QidD0Kb29sdGlwIiBkYXRhLXBsYWNlbWVudD0zRCJ0b3AiIHRpdGxlPTNE IkltcG9ydCBkYXRhc2V0IGludG8gaGlzdG9yeSIgY2xhc3M9Cj0zRCJidG4gYnRuLWRlZmF1bHQg dG9vbGJ0bi1pbXBvcnQtZGF0YXNldCBwcmltYXJ5LWJ1dHRvbiIgdHlwZT0zRCJidXR0b24iPj0K PHNwYW4gY2xhc3M9M0QiZmEgZmEtYm9vayI+PC9zcGFuPiB0byBIaXN0b3J5PC9zcGFuPjwvYnV0 dG9uPicpO2UucHVzaCgnICAgPQo8JSBpZiAoaXRlbS5nZXQoImNhbl91c2VyX21vZGlmeSIpKSB7 ICU+Jyk7ZS5wdXNoKCcgICA8YnV0dG9uIGRhdGEtdG9nZ2xlPQo9M0QidG9vbHRpcCIgZGF0YS1w bGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0zRCJNb2RpZnkgbGlicmFyeSBpdGVtIiBjbGFzcz0zRCI9 CmJ0biBidG4tZGVmYXVsdCB0b29sYnRuX21vZGlmeV9kYXRhc2V0IHByaW1hcnktYnV0dG9uIiB0 eXBlPTNEImJ1dHRvbiI+PHNwYT0KbiBjbGFzcz0zRCJmYSBmYS1wZW5jaWwiPjwvc3Bhbj4gTW9k aWZ5PC9zcGFuPjwvYnV0dG9uPicpO2UucHVzaCgiICAgPCUgfSAlPQo+Iik7ZS5wdXNoKCcgICA8 JSBpZiAoaXRlbS5nZXQoImNhbl91c2VyX21hbmFnZSIpKSB7ICU+Jyk7ZS5wdXNoKCcgICA8YSBo cmU9CmY9M0QiI2ZvbGRlcnMvPCUtIGl0ZW0uZ2V0KCJmb2xkZXJfaWQiKSAlPi9kYXRhc2V0cy88 JS0gaXRlbS5pZCAlPi9wZXJtaXNzaT0Kb25zIj48YnV0dG9uIGRhdGEtdG9nZ2xlPTNEInRvb2x0 aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiTWFuYWdlPQogcGVybWlzc2lvbnMi IGNsYXNzPTNEImJ0biBidG4tZGVmYXVsdCB0b29sYnRuX2NoYW5nZV9wZXJtaXNzaW9ucyBwcmlt YXJ5LWI9CnV0dG9uIiB0eXBlPTNEImJ1dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtZ3JvdXAi Pjwvc3Bhbj4gUGVybWlzc2lvbnM8L3NwYT0Kbj48L2J1dHRvbj48L2E+Jyk7ZS5wdXNoKCIgICA8 JSB9ICU+Iik7ZS5wdXNoKCIgIDwvZGl2PiIpO2UucHVzaCgnPG9sIGNsYXNzPQo9M0QiYnJlYWRj cnVtYiI+Jyk7ZS5wdXNoKCcgICA8bGk+PGEgdGl0bGU9M0QiUmV0dXJuIHRvIHRoZSBsaXN0IG9m IGxpYnJhcmk9CmVzIiBocmVmPTNEIiMiPkxpYnJhcmllczwvYT48L2xpPicpO2UucHVzaCgnICAg PCUgXy5lYWNoKGl0ZW0uZ2V0KCJmdWxsX3BhdD0KaCIpLCBmdW5jdGlvbihwYXRoX2l0ZW0pIHsg JT4nKTtlLnB1c2goIiAgIDwlIGlmIChwYXRoX2l0ZW1bMF0gIT0zRCBpdGVtLmlkPQopIHsgJT4i KTtlLnB1c2goJyAgIDxsaT48YSB0aXRsZT0zRCJSZXR1cm4gdG8gdGhpcyBmb2xkZXIiIGhyZWY9 M0QiIy9mb2xkZXI9CnMvPCUtIHBhdGhfaXRlbVswXSAlPiI+PCUtIHBhdGhfaXRlbVsxXSAlPjwv YT48L2xpPiAnKTtlLnB1c2goIjwlIH0gZWxzZSB7ID0KJT4iKTtlLnB1c2goJyAgIDxsaSBjbGFz cz0zRCJhY3RpdmUiPjxzcGFuIHRpdGxlPTNEIllvdSBhcmUgaGVyZSI+PCUtIHBhdGhfPQppdGVt WzFdICU+PC9zcGFuPjwvbGk+Jyk7ZS5wdXNoKCIgICA8JSB9ICU+Iik7ZS5wdXNoKCIgICA8JSB9 KTsgJT4iKTtlLnB1c2g9CigiPC9vbD4iKTtlLnB1c2goJzwlIGlmIChpdGVtLmdldCgiaXNfdW5y ZXN0cmljdGVkIikpIHsgJT4nKTtlLnB1c2goJyAgPGRpdj0KIGNsYXNzPTNEImFsZXJ0IGFsZXJ0 LWluZm8iPicpO2UucHVzaCgiICBUaGlzIGRhdGFzZXQgaXMgdW5yZXN0cmljdGVkIHNvIGV2PQpl cnlib2R5IGNhbiBhY2Nlc3MgaXQuIEp1c3Qgc2hhcmUgdGhlIFVSTCBvZiB0aGlzIHBhZ2UuICIp O2UucHVzaCgnICA8YnV0dG89Cm4gZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1l bnQ9M0QidG9wIiB0aXRsZT0zRCJDb3B5IHRvIGNsaXBib2FyZD0KIiBjbGFzcz0zRCJidG4gYnRu LWRlZmF1bHQgYnRuLWNvcHktbGluay10by1jbGlwYm9hcmQgcHJpbWFyeS1idXR0b24iIHR5cGU9 Cj0zRCJidXR0b24iPjxzcGFuIGNsYXNzPTNEImZhIGZhLWNsaXBib2FyZCI+PC9zcGFuPiBUbyBD bGlwYm9hcmQ8L3NwYW4+PC9idT0KdHRvbj4gJyk7ZS5wdXNoKCIgIDwvZGl2PiIpO2UucHVzaCgi PCUgfSAlPiIpO2UucHVzaCgnPGRpdiBjbGFzcz0zRCJkYXRhc2V0PQpfdGFibGUiPicpO2UucHVz aCgnICAgPHRhYmxlIGNsYXNzPTNEImdyaWQgdGFibGUgdGFibGUtc3RyaXBlZCB0YWJsZS1jb25k ZW49CnNlZCI+Jyk7ZS5wdXNoKCIgICAgICAgPHRyPiIpO2UucHVzaCgnICAgICAgICAgICA8dGgg c2NvcGU9M0Qicm93IiBpZD0zRCJpZD0KX3JvdyIgZGF0YS1pZD0zRCI8JT0zRCBfLmVzY2FwZShp dGVtLmdldCgibGRkYV9pZCIpKSAlPiI+TmFtZTwvdGg+Jyk7ZS5wdXNoPQooJyAgICAgICAgICAg PHRkPjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KCJuYW1lIikpICU+PC90ZD4nKTtlLnB1c2goIiAg ICAgICA9CjwvdHI+Iik7ZS5wdXNoKCcgICA8JSBpZiAoaXRlbS5nZXQoImZpbGVfZXh0IikpIHsg JT4nKTtlLnB1c2goIiAgICAgICA8dHI+Ij0KKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3Bl PTNEInJvdyI+RGF0YSB0eXBlPC90aD4nKTtlLnB1c2goJyAgICAgICAgICAgPQo8dGQ+PCU9M0Qg Xy5lc2NhcGUoaXRlbS5nZXQoImZpbGVfZXh0IikpICU+PC90ZD4nKTtlLnB1c2goIiAgICAgICA8 L3RyPiIpO2U9Ci5wdXNoKCIgICA8JSB9ICU+Iik7ZS5wdXNoKCcgICA8JSBpZiAoaXRlbS5nZXQo Imdlbm9tZV9idWlsZCIpKSB7ICU+Jyk7ZS5wdT0Kc2goIiAgICAgICA8dHI+Iik7ZS5wdXNoKCcg ICAgICAgICAgIDx0aCBzY29wZT0zRCJyb3ciPkdlbm9tZSBidWlsZDwvdGg+Jyk7PQplLnB1c2go JyAgICAgICAgICAgPHRkPjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KCJnZW5vbWVfYnVpbGQiKSkg JT48L3RkPicpO2U9Ci5wdXNoKCIgICAgICAgPC90cj4iKTtlLnB1c2goIiAgIDwlIH0gJT4iKTtl LnB1c2goJyAgIDwlIGlmIChpdGVtLmdldCgiZmlsZT0KX3NpemUiKSkgeyAlPicpO2UucHVzaCgi ICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3BlPTNEInJvdyI+PQpTaXpl PC90aD4nKTtlLnB1c2goJyAgICAgICAgICAgPHRkPjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KCJm aWxlX3NpemUiKSkgJT49CjwvdGQ+Jyk7ZS5wdXNoKCIgICAgICAgPC90cj4iKTtlLnB1c2goIiAg IDwlIH0gJT4iKTtlLnB1c2goJyAgIDwlIGlmIChpdGVtLj0KZ2V0KCJkYXRlX3VwbG9hZGVkIikp IHsgJT4nKTtlLnB1c2goIiAgICAgICA8dHI+Iik7ZS5wdXNoKCcgICAgICAgICAgIDx0aCBzPQpj b3BlPTNEInJvdyI+RGF0ZSB1cGxvYWRlZCAoVVRDKTwvdGg+Jyk7ZS5wdXNoKCcgICAgICAgICAg IDx0ZD48JT0zRCBfLmVzY2E9CnBlKGl0ZW0uZ2V0KCJkYXRlX3VwbG9hZGVkIikpICU+PC90ZD4n KTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgiICAgPD0KJSB9ICU+Iik7ZS5wdXNoKCcg ICA8JSBpZiAoaXRlbS5nZXQoInVwbG9hZGVkX2J5IikpIHsgJT4nKTtlLnB1c2goIiAgICAgICA8 PQp0cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3BlPTNEInJvdyI+VXBsb2FkZWQgYnk8 L3RoPicpO2UucHVzaCgnICAgICA9CiAgICAgIDx0ZD48JT0zRCBfLmVzY2FwZShpdGVtLmdldCgi dXBsb2FkZWRfYnkiKSkgJT48L3RkPicpO2UucHVzaCgiICAgICAgID0KPC90cj4iKTtlLnB1c2go IiAgIDwlIH0gJT4iKTtlLnB1c2goJyAgIDwlIGlmIChpdGVtLmdldCgibWV0YWRhdGFfZGF0YV9s aW5lPQpzIikpIHsgJT4nKTtlLnB1c2goIiAgICAgICA8dHI+Iik7ZS5wdXNoKCcgICAgICAgICAg IDx0aCBzY29wZT0zRCJyb3ciPkRhdGE9CiBMaW5lczwvdGg+Jyk7ZS5wdXNoKCcgICAgICAgICAg IDx0ZCBzY29wZT0zRCJyb3ciPjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KD0KIm1ldGFkYXRhX2Rh dGFfbGluZXMiKSkgJT48L3RkPicpO2UucHVzaCgiICAgICAgIDwvdHI+Iik7ZS5wdXNoKCIgICA8 JSB9ICU+PQoiKTtlLnB1c2goJyAgIDwlIGlmIChpdGVtLmdldCgibWV0YWRhdGFfY29tbWVudF9s aW5lcyIpKSB7ICU+Jyk7ZS5wdXNoKCIgICA9CiAgICA8dHI+Iik7ZS5wdXNoKCcgICAgICAgICAg IDx0aCBzY29wZT0zRCJyb3ciPkNvbW1lbnQgTGluZXM8L3RoPicpO2UucHVzaD0KKCcgICAgICAg ICAgIDx0ZCBzY29wZT0zRCJyb3ciPjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KCJtZXRhZGF0YV9j b21tZW50X2xpPQpuZXMiKSkgJT48L3RkPicpO2UucHVzaCgiICAgICAgIDwvdHI+Iik7ZS5wdXNo KCIgICA8JSB9ICU+Iik7ZS5wdXNoKCcgICA8JSA9CmlmIChpdGVtLmdldCgibWV0YWRhdGFfY29s dW1ucyIpKSB7ICU+Jyk7ZS5wdXNoKCIgICAgICAgPHRyPiIpO2UucHVzaCgnICAgID0KICAgICAg IDx0aCBzY29wZT0zRCJyb3ciPk51bWJlciBvZiBDb2x1bW5zPC90aD4nKTtlLnB1c2goJyAgICAg ICAgICAgPHRkIHNjPQpvcGU9M0Qicm93Ij48JT0zRCBfLmVzY2FwZShpdGVtLmdldCgibWV0YWRh dGFfY29sdW1ucyIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCI9CiAgICAgICA8L3RyPiIpO2UucHVzaCgi ICAgPCUgfSAlPiIpO2UucHVzaCgnICAgPCUgaWYgKGl0ZW0uZ2V0KCJtZXRhZGF0YV9jbz0KbHVt bl90eXBlcyIpKSB7ICU+Jyk7ZS5wdXNoKCIgICAgICAgPHRyPiIpO2UucHVzaCgnICAgICAgICAg ICA8dGggc2NvcGU9M0QiPQpyb3ciPkNvbHVtbiBUeXBlczwvdGg+Jyk7ZS5wdXNoKCcgICAgICAg ICAgIDx0ZCBzY29wZT0zRCJyb3ciPjwlPTNEIF8uZXNjYXA9CmUoaXRlbS5nZXQoIm1ldGFkYXRh X2NvbHVtbl90eXBlcyIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICAgICAgPC90cj4iKTtlLnB1cz0K aCgiICAgPCUgfSAlPiIpO2UucHVzaCgnICAgPCUgaWYgKGl0ZW0uZ2V0KCJtZXNzYWdlIikpIHsg JT4nKTtlLnB1c2goIiAgICAgPQogIDx0cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3Bl PTNEInJvdyI+TWVzc2FnZTwvdGg+Jyk7ZS5wdXNoKCcgICAgICA9CiAgICAgPHRkIHNjb3BlPTNE InJvdyI+PCU9M0QgXy5lc2NhcGUoaXRlbS5nZXQoIm1lc3NhZ2UiKSkgJT48L3RkPicpO2UucHVz aD0KKCIgICAgICAgPC90cj4iKTtlLnB1c2goIiAgIDwlIH0gJT4iKTtlLnB1c2goJyAgIDwlIGlm IChpdGVtLmdldCgibWlzY19ibHVyPQpiIikpIHsgJT4nKTtlLnB1c2goIiAgICAgICA8dHI+Iik7 ZS5wdXNoKCcgICAgICAgICAgIDx0aCBzY29wZT0zRCJyb3ciPk1pc2M9CmVsbGFuZW91cyBibHVy YjwvdGg+Jyk7ZS5wdXNoKCcgICAgICAgICAgIDx0ZCBzY29wZT0zRCJyb3ciPjwlPTNEIF8uZXNj YXBlKD0KaXRlbS5nZXQoIm1pc2NfYmx1cmIiKSkgJT48L3RkPicpO2UucHVzaCgiICAgICAgIDwv dHI+Iik7ZS5wdXNoKCIgICA8JSB9ICU+PQoiKTtlLnB1c2goJyAgIDwlIGlmIChpdGVtLmdldCgi bWlzY19pbmZvIikpIHsgJT4nKTtlLnB1c2goIiAgICAgICA8dHI+Iik7ZS49CnB1c2goJyAgICAg ICAgICAgPHRoIHNjb3BlPTNEInJvdyI+TWlzY2VsbGFuZW91cyBpbmZvcm1hdGlvbjwvdGg+Jyk7 ZS5wdXNoKD0KJyAgICAgICAgICAgPHRkIHNjb3BlPTNEInJvdyI+PCU9M0QgXy5lc2NhcGUoaXRl bS5nZXQoIm1pc2NfaW5mbyIpKSAlPjwvdGQ+PQonKTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2Uu cHVzaCgiICAgPCUgfSAlPiIpO2UucHVzaCgiICAgIDwvdGFibGU+Iik7ZS5wdXM9CmgoIiAgICA8 ZGl2PiIpO2UucHVzaCgnICAgICAgICA8cHJlIGNsYXNzPTNEInBlZWsiPicpO2UucHVzaCgiICAg ICAgICA8L3ByZT0KPiIpO2UucHVzaCgiICAgIDwvZGl2PiIpO2UucHVzaCgnICAgPCUgaWYgKGl0 ZW0uZ2V0KCJoYXNfdmVyc2lvbnMiKSkgeyAlPicpPQo7ZS5wdXNoKCIgICAgICA8ZGl2PiIpO2Uu cHVzaCgiICAgICAgPGgzPkV4cGlyZWQgdmVyc2lvbnM6PC9oMz4iKTtlLnB1c2goIiA9CiAgICAg PHVsPiIpO2UucHVzaCgnICAgICAgPCUgXy5lYWNoKGl0ZW0uZ2V0KCJleHBpcmVkX3ZlcnNpb25z IiksIGZ1bmN0aW9uKD0KdmVyc2lvbikgeyAlPicpO2UucHVzaCgnICAgICAgICA8bGk+PGEgdGl0 bGU9M0QiU2VlIGRldGFpbHMgb2YgdGhpcyB2ZXJzaW9uPQoiIGhyZWY9M0QiI2ZvbGRlcnMvPCUt IGl0ZW0uZ2V0KCJmb2xkZXJfaWQiKSAlPi9kYXRhc2V0cy88JS0gaXRlbS5pZCAlPi92ZXI9CnNp b25zLzwlLSB2ZXJzaW9uWzBdICU+Ij48JS0gdmVyc2lvblsxXSAlPjwvYT48L2xpPicpO2UucHVz aCgiICAgICAgPCUgfSkgJT0KPiIpO2UucHVzaCgiICAgICAgPHVsPiIpO2UucHVzaCgiICAgICAg PC9kaXY+Iik7ZS5wdXNoKCIgICA8JSB9ICU+Iik7ZS5wdXNoPQooIjwvZGl2PiIpO2UucHVzaCgi PC9kaXY+Iik7cmV0dXJuIF8udGVtcGxhdGUoZS5qb2luKCIiKSl9LHRlbXBsYXRlVmVyc2lvbjo9 CmZ1bmN0aW9uKCl7dmFyIGU9M0RbXTtlLnB1c2goJzxkaXYgY2xhc3M9M0QibGlicmFyeV9zdHls ZV9jb250YWluZXIiPicpO2UucD0KdXNoKCcgIDxkaXYgaWQ9M0QibGlicmFyeV90b29sYmFyIj4n KTtlLnB1c2goJyAgIDxhIGhyZWY9M0QiI2ZvbGRlcnMvPCUtIGl0PQplbS5nZXQoImZvbGRlcl9p ZCIpICU+L2RhdGFzZXRzLzwlLSBpdGVtLmlkICU+Ij48YnV0dG9uIGRhdGEtdG9nZ2xlPTNEInRv b2w9CnRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0zRCJHbyB0byBsYXRlc3QgZGF0 YXNldCIgY2xhc3M9M0QiYnRuIGJ0bj0KLWRlZmF1bHQgcHJpbWFyeS1idXR0b24iIHR5cGU9M0Qi YnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1jYXJldC1sZWZ0IGZhPQotbGciPjwvc3Bhbj4g TGF0ZXN0IGRhdGFzZXQ8L3NwYW4+PC9idXR0b24+PGE+Jyk7ZS5wdXNoKCIgIDwvZGl2PiIpO2Uu cHVzaCg9Cic8b2wgY2xhc3M9M0QiYnJlYWRjcnVtYiI+Jyk7ZS5wdXNoKCcgICA8bGk+PGEgdGl0 bGU9M0QiUmV0dXJuIHRvIHRoZSBsaXN0ID0Kb2YgbGlicmFyaWVzIiBocmVmPTNEIiMiPkxpYnJh cmllczwvYT48L2xpPicpO2UucHVzaCgnICAgPCUgXy5lYWNoKGl0ZW0uZ2V0PQooImZ1bGxfcGF0 aCIpLCBmdW5jdGlvbihwYXRoX2l0ZW0pIHsgJT4nKTtlLnB1c2goIiAgIDwlIGlmIChwYXRoX2l0 ZW1bMF0gIT0KPTNEIGl0ZW0uaWQpIHsgJT4iKTtlLnB1c2goJyAgIDxsaT48YSB0aXRsZT0zRCJS ZXR1cm4gdG8gdGhpcyBmb2xkZXIiIGhyZWY9Cj0zRCIjL2ZvbGRlcnMvPCUtIHBhdGhfaXRlbVsw XSAlPiI+PCUtIHBhdGhfaXRlbVsxXSAlPjwvYT48L2xpPiAnKTtlLnB1c2goIj0KPCUgfSBlbHNl IHsgJT4iKTtlLnB1c2goJyAgIDxsaSBjbGFzcz0zRCJhY3RpdmUiPjxzcGFuIHRpdGxlPTNEIllv dSBhcmUgaGVyPQplIj48JS0gcGF0aF9pdGVtWzFdICU+PC9zcGFuPjwvbGk+Jyk7ZS5wdXNoKCIg ICA8JSB9ICU+Iik7ZS5wdXNoKCIgICA8JSB9KTs9CiAlPiIpO2UucHVzaCgiPC9vbD4iKTtlLnB1 c2goJyAgPGRpdiBjbGFzcz0zRCJhbGVydCBhbGVydC13YXJuaW5nIj5UaGlzIGlzID0KYW4gZXhw aXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IGRhdGFzZXQ6IDwlPTNEIF8uZXNjYXBlKGl0ZW0u Z2V0KCJuYW1lIikpPQogJT48L2Rpdj4nKTtlLnB1c2goJzxkaXYgY2xhc3M9M0QiZGF0YXNldF90 YWJsZSI+Jyk7ZS5wdXNoKCcgICA8dGFibGUgY2xhc3M9Cj0zRCJncmlkIHRhYmxlIHRhYmxlLXN0 cmlwZWQgdGFibGUtY29uZGVuc2VkIj4nKTtlLnB1c2goIiAgICAgICA8dHI+Iik7ZS5wdT0Kc2go JyAgICAgICAgICAgPHRoIHNjb3BlPTNEInJvdyIgaWQ9M0QiaWRfcm93IiBkYXRhLWlkPTNEIjwl PTNEIF8uZXNjYXBlKGxkPQpkYS5pZCkgJT4iPk5hbWU8L3RoPicpO2UucHVzaCgnICAgICAgICAg ICA8dGQ+PCU9M0QgXy5lc2NhcGUobGRkYS5nZXQoIm5hbWU9CiIpKSAlPjwvdGQ+Jyk7ZS5wdXNo KCIgICAgICAgPC90cj4iKTtlLnB1c2goJyAgIDwlIGlmIChsZGRhLmdldCgiZmlsZV9leHQiKT0K KSB7ICU+Jyk7ZS5wdXNoKCIgICAgICAgPHRyPiIpO2UucHVzaCgnICAgICAgICAgICA8dGggc2Nv cGU9M0Qicm93Ij5EYXRhIHR5PQpwZTwvdGg+Jyk7ZS5wdXNoKCcgICAgICAgICAgIDx0ZD48JT0z RCBfLmVzY2FwZShsZGRhLmdldCgiZmlsZV9leHQiKSkgJT48L3Q9CmQ+Jyk7ZS5wdXNoKCIgICAg ICAgPC90cj4iKTtlLnB1c2goIiAgIDwlIH0gJT4iKTtlLnB1c2goJyAgIDwlIGlmIChsZGRhLmdl dD0KKCJnZW5vbWVfYnVpbGQiKSkgeyAlPicpO2UucHVzaCgiICAgICAgIDx0cj4iKTtlLnB1c2go JyAgICAgICAgICAgPHRoIHNjb3BlPQo9M0Qicm93Ij5HZW5vbWUgYnVpbGQ8L3RoPicpO2UucHVz aCgnICAgICAgICAgICA8dGQ+PCU9M0QgXy5lc2NhcGUobGRkYS5nZXQ9CigiZ2Vub21lX2J1aWxk IikpICU+PC90ZD4nKTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgiICAgPCUgfSAlPiIp O2UucD0KdXNoKCcgICA8JSBpZiAobGRkYS5nZXQoImZpbGVfc2l6ZSIpKSB7ICU+Jyk7ZS5wdXNo KCIgICAgICAgPHRyPiIpO2UucHVzaCgnPQogICAgICAgICAgIDx0aCBzY29wZT0zRCJyb3ciPlNp emU8L3RoPicpO2UucHVzaCgnICAgICAgICAgICA8dGQ+PCU9M0QgXy5lc2M9CmFwZShsZGRhLmdl dCgiZmlsZV9zaXplIikpICU+PC90ZD4nKTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgi ICAgPCUgfT0KICU+Iik7ZS5wdXNoKCcgICA8JSBpZiAobGRkYS5nZXQoImRhdGVfdXBsb2FkZWQi KSkgeyAlPicpO2UucHVzaCgiICAgICAgIDx0PQpyPiIpO2UucHVzaCgnICAgICAgICAgICA8dGgg c2NvcGU9M0Qicm93Ij5EYXRlIHVwbG9hZGVkIChVVEMpPC90aD4nKTtlLnB1c2g9CignICAgICAg ICAgICA8dGQ+PCU9M0QgXy5lc2NhcGUobGRkYS5nZXQoImRhdGVfdXBsb2FkZWQiKSkgJT48L3Rk PicpO2UucHVzaD0KKCIgICAgICAgPC90cj4iKTtlLnB1c2goIiAgIDwlIH0gJT4iKTtlLnB1c2go JyAgIDwlIGlmIChsZGRhLmdldCgidXBsb2FkZWRfPQpieSIpKSB7ICU+Jyk7ZS5wdXNoKCIgICAg ICAgPHRyPiIpO2UucHVzaCgnICAgICAgICAgICA8dGggc2NvcGU9M0Qicm93Ij5VcGw9Cm9hZGVk IGJ5PC90aD4nKTtlLnB1c2goJyAgICAgICAgICAgPHRkPjwlPTNEIF8uZXNjYXBlKGxkZGEuZ2V0 KCJ1cGxvYWRlZF9ieT0KIikpICU+PC90ZD4nKTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVz aCgiICAgPCUgfSAlPiIpO2UucHVzaCgnICAgPCUgaWYgPQoobGRkYS5nZXQoIm1ldGFkYXRhX2Rh dGFfbGluZXMiKSkgeyAlPicpO2UucHVzaCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICA9CiAg ICAgICA8dGggc2NvcGU9M0Qicm93Ij5EYXRhIExpbmVzPC90aD4nKTtlLnB1c2goJyAgICAgICAg ICAgPHRkIHNjb3BlPTNEIj0Kcm93Ij48JT0zRCBfLmVzY2FwZShsZGRhLmdldCgibWV0YWRhdGFf ZGF0YV9saW5lcyIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICAgPQogICA8L3RyPiIpO2UucHVzaCgi ICAgPCUgfSAlPiIpO2UucHVzaCgnICAgPCUgaWYgKGxkZGEuZ2V0KCJtZXRhZGF0YV9jb21tZW49 CnRfbGluZXMiKSkgeyAlPicpO2UucHVzaCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAg ICAgPHRoIHNjb3BlPTNEInJvdz0KIj5Db21tZW50IExpbmVzPC90aD4nKTtlLnB1c2goJyAgICAg ICAgICAgPHRkIHNjb3BlPTNEInJvdyI+PCU9M0QgXy5lc2NhcGUoPQpsZGRhLmdldCgibWV0YWRh dGFfY29tbWVudF9saW5lcyIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICAgICAgPC90cj4iKTtlLnB1 c2g9CigiICAgPCUgfSAlPiIpO2UucHVzaCgnICAgPCUgaWYgKGxkZGEuZ2V0KCJtZXRhZGF0YV9j b2x1bW5zIikpIHsgJT4nKTtlLnB1cz0KaCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAg ICAgPHRoIHNjb3BlPTNEInJvdyI+TnVtYmVyIG9mIENvbHVtbnM8L3RoPQo+Jyk7ZS5wdXNoKCcg ICAgICAgICAgIDx0ZCBzY29wZT0zRCJyb3ciPjwlPTNEIF8uZXNjYXBlKGxkZGEuZ2V0KCJtZXRh ZGF0YV89CmNvbHVtbnMiKSkgJT48L3RkPicpO2UucHVzaCgiICAgICAgIDwvdHI+Iik7ZS5wdXNo KCIgICA8JSB9ICU+Iik7ZS5wdXNoKCcgID0KIDwlIGlmIChsZGRhLmdldCgibWV0YWRhdGFfY29s dW1uX3R5cGVzIikpIHsgJT4nKTtlLnB1c2goIiAgICAgICA8dHI+Iik7ZS5wPQp1c2goJyAgICAg ICAgICAgPHRoIHNjb3BlPTNEInJvdyI+Q29sdW1uIFR5cGVzPC90aD4nKTtlLnB1c2goJyAgICAg ICAgICAgPHQ9CmQgc2NvcGU9M0Qicm93Ij48JT0zRCBfLmVzY2FwZShsZGRhLmdldCgibWV0YWRh dGFfY29sdW1uX3R5cGVzIikpICU+PC90ZD4nKT0KO2UucHVzaCgiICAgICAgIDwvdHI+Iik7ZS5w dXNoKCIgICA8JSB9ICU+Iik7ZS5wdXNoKCcgICA8JSBpZiAobGRkYS5nZXQoIm1lPQpzc2FnZSIp KSB7ICU+Jyk7ZS5wdXNoKCIgICAgICAgPHRyPiIpO2UucHVzaCgnICAgICAgICAgICA8dGggc2Nv cGU9M0Qicm93Ij49Ck1lc3NhZ2U8L3RoPicpO2UucHVzaCgnICAgICAgICAgICA8dGQgc2NvcGU9 M0Qicm93Ij48JT0zRCBfLmVzY2FwZShsZGRhLmdldD0KKCJtZXNzYWdlIikpICU+PC90ZD4nKTtl LnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgiICAgPCUgfSAlPiIpO2UucHVzaCgnPQogICA8 JSBpZiAobGRkYS5nZXQoIm1pc2NfYmx1cmIiKSkgeyAlPicpO2UucHVzaCgiICAgICAgIDx0cj4i KTtlLnB1c2goJyAgICA9CiAgICAgICA8dGggc2NvcGU9M0Qicm93Ij5NaXNjZWxsYW5lb3VzIGJs dXJiPC90aD4nKTtlLnB1c2goJyAgICAgICAgICAgPHRkID0Kc2NvcGU9M0Qicm93Ij48JT0zRCBf LmVzY2FwZShsZGRhLmdldCgibWlzY19ibHVyYiIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICAgPQog ICA8L3RyPiIpO2UucHVzaCgiICAgPCUgfSAlPiIpO2UucHVzaCgnICAgPCUgaWYgKGxkZGEuZ2V0 KCJtaXNjX2luZm8iKSkgeyA9CiU+Jyk7ZS5wdXNoKCIgICAgICAgPHRyPiIpO2UucHVzaCgnICAg ICAgICAgICA8dGggc2NvcGU9M0Qicm93Ij5NaXNjZWxsYW5lbz0KdXMgaW5mb3JtYXRpb248L3Ro PicpO2UucHVzaCgnICAgICAgICAgICA8dGQgc2NvcGU9M0Qicm93Ij48JT0zRCBfLmVzY2FwZShs PQpkZGEuZ2V0KCJtaXNjX2luZm8iKSkgJT48L3RkPicpO2UucHVzaCgiICAgICAgIDwvdHI+Iik7 ZS5wdXNoKCIgICA8JSB9ICU+Iik9CjtlLnB1c2goIiAgICA8L3RhYmxlPiIpO2UucHVzaCgiICAg IDxkaXY+Iik7ZS5wdXNoKCcgICAgICAgIDxwcmUgY2xhc3M9M0QicD0KZWVrIj4nKTtlLnB1c2go IiAgICAgICAgPC9wcmU+Iik7ZS5wdXNoKCIgICAgPC9kaXY+Iik7ZS5wdXNoKCI8L2Rpdj4iKTtl LnB1PQpzaCgiPC9kaXY+Iik7cmV0dXJuIF8udGVtcGxhdGUoZS5qb2luKCIiKSl9LHRlbXBsYXRl TW9kaWZ5RGF0YXNldDpmdW5jdGlvbig9Cil7dmFyIGU9M0RbXTtlLnB1c2goJzxkaXYgY2xhc3M9 M0QibGlicmFyeV9zdHlsZV9jb250YWluZXIiPicpO2UucHVzaCgnICA8ZD0KaXYgaWQ9M0QibGli cmFyeV90b29sYmFyIj4nKTtlLnB1c2goJyAgIDxidXR0b24gZGF0YS10b2dnbGU9M0QidG9vbHRp cCIgZGF0PQphLXBsYWNlbWVudD0zRCJ0b3AiIHRpdGxlPTNEIkNhbmNlbCBtb2RpZmljYXRpb25z IiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQ9CiB0b29sYnRuX2NhbmNlbF9tb2RpZmljYXRpb25z IHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1dHRvbiI+PHNwYW4gY2xhc3M9Cj0zRCJmYSBmYS10 aW1lcyI+PC9zcGFuPiBDYW5jZWw8L3NwYW4+PC9idXR0b24+Jyk7ZS5wdXNoKCcgICA8YnV0dG9u IGRhdGEtdD0Kb2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0z RCJTYXZlIG1vZGlmaWNhdGlvbnMiIGNsYXNzPQo9M0QiYnRuIGJ0bi1kZWZhdWx0IHRvb2xidG5f c2F2ZV9tb2RpZmljYXRpb25zIHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1dHQ9Cm9uIj48c3Bh biBjbGFzcz0zRCJmYSBmYS1mbG9wcHktbyI+PC9zcGFuPiBTYXZlPC9zcGFuPjwvYnV0dG9uPicp O2UucHVzaCgiID0KIDwvZGl2PiIpO2UucHVzaCgnPG9sIGNsYXNzPTNEImJyZWFkY3J1bWIiPicp O2UucHVzaCgnICAgPGxpPjxhIHRpdGxlPTNEIlJlPQp0dXJuIHRvIHRoZSBsaXN0IG9mIGxpYnJh cmllcyIgaHJlZj0zRCIjIj5MaWJyYXJpZXM8L2E+PC9saT4nKTtlLnB1c2goJyAgIDw9CiUgXy5l YWNoKGl0ZW0uZ2V0KCJmdWxsX3BhdGgiKSwgZnVuY3Rpb24ocGF0aF9pdGVtKSB7ICU+Jyk7ZS5w dXNoKCIgICA8JSBpZj0KIChwYXRoX2l0ZW1bMF0gIT0zRCBpdGVtLmlkKSB7ICU+Iik7ZS5wdXNo KCcgICA8bGk+PGEgdGl0bGU9M0QiUmV0dXJuIHRvIHRoPQppcyBmb2xkZXIiIGhyZWY9M0QiIy9m b2xkZXJzLzwlLSBwYXRoX2l0ZW1bMF0gJT4iPjwlLSBwYXRoX2l0ZW1bMV0gJT48L2E+PC89Cmxp PiAnKTtlLnB1c2goIjwlIH0gZWxzZSB7ICU+Iik7ZS5wdXNoKCcgICA8bGkgY2xhc3M9M0QiYWN0 aXZlIj48c3BhbiB0aXRsZT0KPTNEIllvdSBhcmUgaGVyZSI+PCUtIHBhdGhfaXRlbVsxXSAlPjwv c3Bhbj48L2xpPicpO2UucHVzaCgiICAgPCUgfSAlPiIpO2UuPQpwdXNoKCIgICA8JSB9KTsgJT4i KTtlLnB1c2goIjwvb2w+Iik7ZS5wdXNoKCc8ZGl2IGNsYXNzPTNEImRhdGFzZXRfdGFibGUiPic9 Cik7ZS5wdXNoKCc8cD5Gb3IgbW9yZSBlZGl0aW5nIG9wdGlvbnMgcGxlYXNlIGltcG9ydCB0aGUg ZGF0YXNldCB0byBoaXN0b3J5ID0KYW5kIHVzZSAiRWRpdCBhdHRyaWJ1dGVzIiBvbiBpdC48L3A+ Jyk7ZS5wdXNoKCcgICA8dGFibGUgY2xhc3M9M0QiZ3JpZCB0YWJsPQplIHRhYmxlLXN0cmlwZWQg dGFibGUtY29uZGVuc2VkIj4nKTtlLnB1c2goIiAgICAgICA8dHI+Iik7ZS5wdXNoKCcgICAgICAg ICA9CiAgPHRoIHNjb3BlPTNEInJvdyIgaWQ9M0QiaWRfcm93IiBkYXRhLWlkPTNEIjwlPTNEIF8u ZXNjYXBlKGl0ZW0uZ2V0KCJsZGRhXz0KaWQiKSkgJT4iPk5hbWU8L3RoPicpO2UucHVzaCgnICAg ICAgICAgICA8dGQ+PGlucHV0IGNsYXNzPTNEImlucHV0X2RhdGFzZXRfPQpuYW1lIGZvcm0tY29u dHJvbCIgdHlwZT0zRCJ0ZXh0IiBwbGFjZWhvbGRlcj0zRCJuYW1lIiB2YWx1ZT0zRCI8JT0zRCBf LmVzY2E9CnBlKGl0ZW0uZ2V0KCJuYW1lIikpICU+Ij48L3RkPicpO2UucHVzaCgiICAgICAgIDwv dHI+Iik7ZS5wdXNoKCIgICAgICAgPHRyPj0KIik7ZS5wdXNoKCcgICAgICAgICAgIDx0aCBzY29w ZT0zRCJyb3ciPkRhdGEgdHlwZTwvdGg+Jyk7ZS5wdXNoKCcgICAgICAgICAgPQogPHRkPjwlPTNE IF8uZXNjYXBlKGl0ZW0uZ2V0KCJmaWxlX2V4dCIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICAgICAg PC90cj4iKTs9CmUucHVzaCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNj b3BlPTNEInJvdyI+R2Vub21lIGJ1aWxkPC90aD0KPicpO2UucHVzaCgnICAgICAgICAgICA8dGQ+ PCU9M0QgXy5lc2NhcGUoaXRlbS5nZXQoImdlbm9tZV9idWlsZCIpKSAlPjwvdGQ+PQonKTtlLnB1 c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAg ICAgPHRoIHNjb3A9CmU9M0Qicm93Ij5TaXplPC90aD4nKTtlLnB1c2goJyAgICAgICAgICAgPHRk PjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KCJmaWxlXz0Kc2l6ZSIpKSAlPjwvdGQ+Jyk7ZS5wdXNo KCIgICAgICAgPC90cj4iKTtlLnB1c2goIiAgICAgICA8dHI+Iik7ZS5wdXNoKCcgICAgPQogICAg ICAgPHRoIHNjb3BlPTNEInJvdyI+RGF0ZSB1cGxvYWRlZCAoVVRDKTwvdGg+Jyk7ZS5wdXNoKCcg ICAgICAgICAgIDx0ZD49CjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KCJkYXRlX3VwbG9hZGVkIikp ICU+PC90ZD4nKTtlLnB1c2goIiAgICAgICA8L3RyPiIpOz0KZS5wdXNoKCIgICAgICAgPHRyPiIp O2UucHVzaCgnICAgICAgICAgICA8dGggc2NvcGU9M0Qicm93Ij5VcGxvYWRlZCBieTwvdGg+PQon KTtlLnB1c2goJyAgICAgICAgICAgPHRkPjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KCJ1cGxvYWRl ZF9ieSIpKSAlPjwvdGQ+Jyk9CjtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVzaCgnICAgICAg ICAgICA8dHIgc2NvcGU9M0Qicm93Ij4nKTtlLnB1c2goJyAgID0KICAgICAgICA8dGggc2NvcGU9 M0Qicm93Ij5EYXRhIExpbmVzPC90aD4nKTtlLnB1c2goJyAgICAgICAgICAgPHRkIHNjb3BlPTNE PQoicm93Ij48JT0zRCBfLmVzY2FwZShpdGVtLmdldCgibWV0YWRhdGFfZGF0YV9saW5lcyIpKSAl PjwvdGQ+Jyk7ZS5wdXNoKCIgICA9CiAgICA8L3RyPiIpO2UucHVzaCgnICAgICAgIDx0aCBzY29w ZT0zRCJyb3ciPkNvbW1lbnQgTGluZXM8L3RoPicpO2UucHVzaCgnID0KICAgICAgICAgIDwlIGlm IChpdGVtLmdldCgibWV0YWRhdGFfY29tbWVudF9saW5lcyIpID0zRD0zRD0zRCAiIikgeyAlPicp O2UuPQpwdXNoKCcgICAgICAgICAgICAgICA8dGQgc2NvcGU9M0Qicm93Ij48JT0zRCBfLmVzY2Fw ZShpdGVtLmdldCgibWV0YWRhdGFfY289Cm1tZW50X2xpbmVzIikpICU+PC90ZD4nKTtlLnB1c2go IiAgICAgICAgICAgPCUgfSBlbHNlIHsgJT4iKTtlLnB1c2goJyAgICAgID0KICAgICAgICAgPHRk IHNjb3BlPTNEInJvdyI+dW5rbm93bjwvdGQ+Jyk7ZS5wdXNoKCIgICAgICAgICAgIDwlIH0gJT4i KTtlLnB1PQpzaCgiICAgICAgIDwvdHI+Iik7ZS5wdXNoKCIgICAgICAgPHRyPiIpO2UucHVzaCgn ICAgICAgICAgICA8dGggc2NvcGU9M0Qicm89CnciPk51bWJlciBvZiBDb2x1bW5zPC90aD4nKTtl LnB1c2goJyAgICAgICAgICAgPHRkIHNjb3BlPTNEInJvdyI+PCU9M0QgXy5lcz0KY2FwZShpdGVt LmdldCgibWV0YWRhdGFfY29sdW1ucyIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICAgICAgPC90cj4i KTtlLnB1c2goPQoiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3BlPTNE InJvdyI+Q29sdW1uIFR5cGVzPC90aD4nKTtlLnA9CnVzaCgnICAgICAgICAgICA8dGQgc2NvcGU9 M0Qicm93Ij48JT0zRCBfLmVzY2FwZShpdGVtLmdldCgibWV0YWRhdGFfY29sdW1uXz0KdHlwZXMi KSkgJT48L3RkPicpO2UucHVzaCgiICAgICAgIDwvdHI+Iik7ZS5wdXNoKCIgICAgICAgPHRyPiIp O2UucHVzaCgnICAgPQogICAgICAgIDx0aCBzY29wZT0zRCJyb3ciPk1lc3NhZ2U8L3RoPicpO2Uu cHVzaCgnICAgICAgICAgICA8dGQgc2NvcGU9M0Qicm89CnciPjwlPTNEIF8uZXNjYXBlKGl0ZW0u Z2V0KCJtZXNzYWdlIikpICU+PC90ZD4nKTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucD0KdXNo KCIgICAgICAgPHRyPiIpO2UucHVzaCgnICAgICAgICAgICA8dGggc2NvcGU9M0Qicm93Ij5NaXNj ZWxsYW5lb3VzIGluZm9yPQptYXRpb248L3RoPicpO2UucHVzaCgnICAgICAgICAgICA8dGQgc2Nv cGU9M0Qicm93Ij48JT0zRCBfLmVzY2FwZShpdGVtLmdldCg9CiJtaXNjX2luZm8iKSkgJT48L3Rk PicpO2UucHVzaCgiICAgICAgIDwvdHI+Iik7ZS5wdXNoKCIgICAgICAgPHRyPiIpO2UucHVzaD0K KCcgICAgICAgICAgIDx0aCBzY29wZT0zRCJyb3ciPk1pc2NlbGxhbmVvdXMgYmx1cmI8L3RoPicp O2UucHVzaCgnICAgICAgICAgPQogIDx0ZCBzY29wZT0zRCJyb3ciPjwlPTNEIF8uZXNjYXBlKGl0 ZW0uZ2V0KCJtaXNjX2JsdXJiIikpICU+PC90ZD4nKTtlLnB1c2g9CigiICAgICAgIDwvdHI+Iik7 ZS5wdXNoKCIgICA8L3RhYmxlPiIpO2UucHVzaCgiPGRpdj4iKTtlLnB1c2goJyAgIDxwcmUgY2xh cz0Kcz0zRCJwZWVrIj4nKTtlLnB1c2goIiAgIDwvcHJlPiIpO2UucHVzaCgiPC9kaXY+Iik7ZS5w dXNoKCI8L2Rpdj4iKTtlLnB1c2goPQoiPC9kaXY+Iik7cmV0dXJuIF8udGVtcGxhdGUoZS5qb2lu KCIiKSl9LHRlbXBsYXRlRGF0YXNldFBlcm1pc3Npb25zOmZ1bmN0aW89Cm4oKXt2YXIgZT0zRFtd O2UucHVzaCgnPGRpdiBjbGFzcz0zRCJsaWJyYXJ5X3N0eWxlX2NvbnRhaW5lciI+Jyk7ZS5wdXNo KCcgID0KPGRpdiBpZD0zRCJsaWJyYXJ5X3Rvb2xiYXIiPicpO2UucHVzaCgnICAgPGEgaHJlZj0z RCIjZm9sZGVycy88JS0gaXRlbS5nZXQoPQoiZm9sZGVyX2lkIikgJT4iPjxidXR0b24gZGF0YS10 b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXQ9CmxlPTNEIkdvIGJh Y2sgdG8gY29udGFpbmluZyBmb2xkZXIiIGNsYXNzPTNEImJ0biBidG4tZGVmYXVsdCBwcmltYXJ5 LWJ1dHRvbj0KIiB0eXBlPTNEImJ1dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtZm9sZGVyLW9w ZW4tbyI+PC9zcGFuPiBDb250YWluaW5nIEZvPQpsZGVyPC9zcGFuPjwvYnV0dG9uPjwvYT4nKTtl LnB1c2goJyAgIDxhIGhyZWY9M0QiI2ZvbGRlcnMvPCUtIGl0ZW0uZ2V0KCJmb2w9CmRlcl9pZCIp ICU+L2RhdGFzZXRzLzwlLSBpdGVtLmlkICU+Ij48YnV0dG9uIGRhdGEtdG9nZ2xlPTNEInRvb2x0 aXAiIGRhdGEtcD0KbGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0zRCJHbyBiYWNrIHRvIGRhdGFzZXQi IGNsYXNzPTNEImJ0biBidG4tZGVmYXVsdCBwcmltPQphcnktYnV0dG9uIiB0eXBlPTNEImJ1dHRv biI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtZmlsZS1vIj48L3NwYW4+IERhdGFzZXQgRGU9CnRhaWxz PC9zcGFuPjwvYnV0dG9uPjxhPicpO2UucHVzaCgiICA8L2Rpdj4iKTtlLnB1c2goJzxvbCBjbGFz cz0zRCJicmVhZGNydT0KbWIiPicpO2UucHVzaCgnICAgPGxpPjxhIHRpdGxlPTNEIlJldHVybiB0 byB0aGUgbGlzdCBvZiBsaWJyYXJpZXMiIGhyZWY9M0QiPQojIj5MaWJyYXJpZXM8L2E+PC9saT4n KTtlLnB1c2goJyAgIDwlIF8uZWFjaChpdGVtLmdldCgiZnVsbF9wYXRoIiksIGZ1bmN0aW89Cm4o cGF0aF9pdGVtKSB7ICU+Jyk7ZS5wdXNoKCIgICA8JSBpZiAocGF0aF9pdGVtWzBdICE9M0QgaXRl bS5pZCkgeyAlPiIpO2UucD0KdXNoKCcgICA8bGk+PGEgdGl0bGU9M0QiUmV0dXJuIHRvIHRoaXMg Zm9sZGVyIiBocmVmPTNEIiMvZm9sZGVycy88JS0gcGF0aF9pPQp0ZW1bMF0gJT4iPjwlLSBwYXRo X2l0ZW1bMV0gJT48L2E+PC9saT4gJyk7ZS5wdXNoKCI8JSB9IGVsc2UgeyAlPiIpO2UucHVzaCg9 CicgICA8bGkgY2xhc3M9M0QiYWN0aXZlIj48c3BhbiB0aXRsZT0zRCJZb3UgYXJlIGhlcmUiPjwl LSBwYXRoX2l0ZW1bMV0gJT48Lz0Kc3Bhbj48L2xpPicpO2UucHVzaCgiICAgPCUgfSAlPiIpO2Uu cHVzaCgiICAgPCUgfSk7ICU+Iik7ZS5wdXNoKCI8L29sPiIpO2UuPQpwdXNoKCc8aDE+RGF0YXNl dDogPCU9M0QgXy5lc2NhcGUoaXRlbS5nZXQoIm5hbWUiKSkgJT48L2gxPicpO2UucHVzaCgnPGRp diA9CmNsYXNzPTNEImFsZXJ0IGFsZXJ0LXdhcm5pbmciPicpO2UucHVzaCgiPCUgaWYgKGlzX2Fk bWluKSB7ICU+Iik7ZS5wdXNoKCJZbz0KdSBhcmUgbG9nZ2VkIGluIGFzIGFuIDxzdHJvbmc+YWRt aW5pc3RyYXRvcjwvc3Ryb25nPiB0aGVyZWZvcmUgeW91IGNhbiBtYW5hPQpnZSBhbnkgZGF0YXNl dCBvbiB0aGlzIEdhbGF4eSBpbnN0YW5jZS4gUGxlYXNlIG1ha2Ugc3VyZSB5b3UgdW5kZXJzdGFu ZCB0aGU9CiBjb25zZXF1ZW5jZXMuIik7ZS5wdXNoKCI8JSB9IGVsc2UgeyAlPiIpO2UucHVzaCgi WW91IGNhbiBhc3NpZ24gYW55IG51bWJlcj0KIG9mIHJvbGVzIHRvIGFueSBvZiB0aGUgZm9sbG93 aW5nIHBlcm1pc3Npb24gdHlwZXMuIEhvd2V2ZXIgcGxlYXNlIHJlYWQgY2FyPQplZnVsbHkgdGhl IGltcGxpY2F0aW9ucyBvZiBzdWNoIGFjdGlvbnMuIik7ZS5wdXNoKCI8JSB9ICU+Iik7ZS5wdXNo KCI8L2Rpdj49CiIpO2UucHVzaCgnPGRpdiBjbGFzcz0zRCJkYXRhc2V0X3RhYmxlIj4nKTtlLnB1 c2goIjxoMj5MaWJyYXJ5LXJlbGF0ZWQgcGVybT0KaXNzaW9uczwvaDI+Iik7ZS5wdXNoKCI8aDQ+ Um9sZXMgdGhhdCBjYW4gbW9kaWZ5IHRoZSBsaWJyYXJ5IGl0ZW08L2g0PiIpO2UuPQpwdXNoKCc8 ZGl2IGlkPTNEIm1vZGlmeV9wZXJtIiBjbGFzcz0zRCJtb2RpZnlfcGVybSByb2xlcy1zZWxlY3Rp b24iPjwvZGl2Pic9Cik7ZS5wdXNoKCc8ZGl2IGNsYXNzPTNEImFsZXJ0IGFsZXJ0LWluZm8gcm9s ZXMtc2VsZWN0aW9uIj5Vc2VyIHdpdGggPHN0cm9uZz0KPmFueTwvc3Ryb25nPiBvZiB0aGVzZSBy b2xlcyBjYW4gbW9kaWZ5IG5hbWUsIG1ldGFkYXRhLCBhbmQgb3RoZXIgaW5mb3JtYXRpPQpvbiBh Ym91dCB0aGlzIGxpYnJhcnkgaXRlbS48L2Rpdj4nKTtlLnB1c2goIjxoci8+Iik7ZS5wdXNoKCI8 aDI+RGF0YXNldC1yZWw9CmF0ZWQgcGVybWlzc2lvbnM8L2gyPiIpO2UucHVzaCgnPGRpdiBjbGFz cz0zRCJhbGVydCBhbGVydC13YXJuaW5nIj5DaGFuZ2VzID0KbWFkZSBiZWxvdyB3aWxsIGFmZmVj dCA8c3Ryb25nPmV2ZXJ5PC9zdHJvbmc+IGxpYnJhcnkgaXRlbSB0aGF0IHdhcyBjcmVhdGVkPQog ZnJvbSB0aGlzIGRhdGFzZXQgYW5kIGFsc28gZXZlcnkgaGlzdG9yeSB0aGlzIGRhdGFzZXQgaXMg cGFydCBvZi48L2Rpdj4nKTs9CmUucHVzaCgnPCUgaWYgKCFpdGVtLmdldCgiaXNfdW5yZXN0cmlj dGVkIikpIHsgJT4nKTtlLnB1c2goIiA8cD5Zb3UgY2FuIHJlbT0Kb3ZlIGFsbCBhY2Nlc3MgcmVz dHJpY3Rpb25zIG9uIHRoaXMgZGF0YXNldC4gIik7ZS5wdXNoKCcgPGJ1dHRvbiBkYXRhLXRvZ2ds PQplPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiRXZlcnlib2R5 IHdpbGwgYmUgYWJsZSB0byBhY2M9CmVzcyB0aGUgZGF0YXNldC4iIGNsYXNzPTNEImJ0biBidG4t ZGVmYXVsdCBidG4tcmVtb3ZlLXJlc3RyaWN0aW9ucyBwcmltYXJ5LT0KYnV0dG9uIiB0eXBlPTNE ImJ1dHRvbiI+Jyk7ZS5wdXNoKCcgPHNwYW4gY2xhc3M9M0QiZmEgZmEtZ2xvYmUiPiBSZW1vdmUg cmVzPQp0cmljdGlvbnM8L3NwYW4+Jyk7ZS5wdXNoKCIgPC9idXR0b24+Iik7ZS5wdXNoKCIgPC9w PiIpO2UucHVzaCgiPCUgfSBlbHNlIHs9CiAlPiIpO2UucHVzaCgiICBUaGlzIGRhdGFzZXQgaXMg dW5yZXN0cmljdGVkIHNvIGV2ZXJ5Ym9keSBjYW4gYWNjZXNzIGl0LiBKdT0Kc3Qgc2hhcmUgdGhl IFVSTCBvZiB0aGlzIHBhZ2UuIik7ZS5wdXNoKCcgIDxidXR0b24gZGF0YS10b2dnbGU9M0QidG9v bHRpcCIgPQpkYXRhLXBsYWNlbWVudD0zRCJ0b3AiIHRpdGxlPTNEIkNvcHkgdG8gY2xpcGJvYXJk IiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQ9CiBidG4tY29weS1saW5rLXRvLWNsaXBib2FyZCBw cmltYXJ5LWJ1dHRvbiIgdHlwZT0zRCJidXR0b24iPjxzcGFuIGNsYXNzPTNEIj0KZmEgZmEtY2xp cGJvYXJkIj4gVG8gQ2xpcGJvYXJkPC9zcGFuPjwvYnV0dG9uPiAnKTtlLnB1c2goIiAgPHA+WW91 IGNhbiBtYWtlPQogdGhpcyBkYXRhc2V0IHByaXZhdGUgdG8geW91LiAiKTtlLnB1c2goJyA8YnV0 dG9uIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGQ9CmF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXRs ZT0zRCJPbmx5IHlvdSB3aWxsIGJlIGFibGUgdG8gYWNjZXNzIHRoZSBkYXRhc2V0Lj0KIiBjbGFz cz0zRCJidG4gYnRuLWRlZmF1bHQgYnRuLW1ha2UtcHJpdmF0ZSBwcmltYXJ5LWJ1dHRvbiIgdHlw ZT0zRCJidXR0b24iPQo+PHNwYW4gY2xhc3M9M0QiZmEgZmEta2V5Ij4gTWFrZSBQcml2YXRlPC9z cGFuPjwvYnV0dG9uPicpO2UucHVzaCgiIDwvcD4iKTs9CmUucHVzaCgiPCUgfSAlPiIpO2UucHVz aCgiPGg0PlJvbGVzIHRoYXQgY2FuIGFjY2VzcyB0aGUgZGF0YXNldDwvaDQ+Iik7ZS5wdT0Kc2go JzxkaXYgaWQ9M0QiYWNjZXNzX3Blcm0iIGNsYXNzPTNEImFjY2Vzc19wZXJtIHJvbGVzLXNlbGVj dGlvbiI+PC9kaXY+Jyk7PQplLnB1c2goJzxkaXYgY2xhc3M9M0QiYWxlcnQgYWxlcnQtaW5mbyBy b2xlcy1zZWxlY3Rpb24iPlVzZXIgaGFzIHRvIGhhdmUgPHM9CnRyb25nPmFsbCB0aGVzZSByb2xl czwvc3Ryb25nPiBpbiBvcmRlciB0byBhY2Nlc3MgdGhpcyBkYXRhc2V0LiBVc2VycyB3aXRobz0K dXQgYWNjZXNzIHBlcm1pc3Npb24gPHN0cm9uZz5jYW5ub3Q8L3N0cm9uZz4gaGF2ZSBvdGhlciBw ZXJtaXNzaW9ucyBvbiB0aGlzPQogZGF0YXNldC4gSWYgdGhlcmUgYXJlIG5vIGFjY2VzcyByb2xl cyBzZXQgb24gdGhlIGRhdGFzZXQgaXQgaXMgY29uc2lkZXJlZCA9CjxzdHJvbmc+dW5yZXN0cmlj dGVkPC9zdHJvbmc+LjwvZGl2PicpO2UucHVzaCgiPGg0PlJvbGVzIHRoYXQgY2FuIG1hbmFnZSBw ZT0Kcm1pc3Npb25zIG9uIHRoZSBkYXRhc2V0PC9oND4iKTtlLnB1c2goJzxkaXYgaWQ9M0QibWFu YWdlX3Blcm0iIGNsYXNzPTNEIm1hPQpuYWdlX3Blcm0gcm9sZXMtc2VsZWN0aW9uIj48L2Rpdj4n KTtlLnB1c2goJzxkaXYgY2xhc3M9M0QiYWxlcnQgYWxlcnQtaW5mbyA9CnJvbGVzLXNlbGVjdGlv biI+VXNlciB3aXRoIDxzdHJvbmc+YW55PC9zdHJvbmc+IG9mIHRoZXNlIHJvbGVzIGNhbiBtYW5h Z2UgcD0KZXJtaXNzaW9ucyBvZiB0aGlzIGRhdGFzZXQuIElmIHlvdSByZW1vdmUgeW91cnNlbGYg eW91IHdpbGwgbG9vc2UgdGhlIGFiaWxpPQp0eSBtYW5hZ2UgdGhpcyBkYXRhc2V0IHVubGVzcyB5 b3UgYXJlIGFuIGFkbWluLjwvZGl2PicpO2UucHVzaCgnPGJ1dHRvbiBkYXQ9CmEtdG9nZ2xlPTNE InRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiU2F2ZSBtb2RpZmljYXRp b25zIG1hZD0KZSBvbiB0aGlzIHBhZ2UiIGNsYXNzPTNEImJ0biBidG4tZGVmYXVsdCB0b29sYnRu X3NhdmVfcGVybWlzc2lvbnMgcHJpbWFyeS1iPQp1dHRvbiIgdHlwZT0zRCJidXR0b24iPjxzcGFu IGNsYXNzPTNEImZhIGZhLWZsb3BweS1vIj48L3NwYW4+IFNhdmU8L3NwYW4+PC89CmJ1dHRvbj4n KTtlLnB1c2goIjwvZGl2PiIpO2UucHVzaCgiPC9kaXY+Iik7cmV0dXJuIF8udGVtcGxhdGUoZS5q b2luKCIiKSl9LD0KdGVtcGxhdGVCdWxrSW1wb3J0SW5Nb2RhbDpmdW5jdGlvbigpe3ZhciBlPTNE W107ZS5wdXNoKCc8c3BhbiBpZD0zRCJoaXN0b3J5PQpfbW9kYWxfY29tYm9fYnVsayIgc3R5bGU9 M0Qid2lkdGg6OTAlOyBtYXJnaW4tbGVmdDogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTs9CiAiPicp O2UucHVzaCgiU2VsZWN0IGhpc3Rvcnk6ICIpO2UucHVzaCgnPHNlbGVjdCBpZD0zRCJkYXRhc2V0 X2ltcG9ydF9zaW5nbD0KZSIgbmFtZT0zRCJkYXRhc2V0X2ltcG9ydF9zaW5nbGUiIHN0eWxlPTNE IndpZHRoOjUwJTsgbWFyZ2luLWJvdHRvbTogMWVtOyAiPQo+ICcpO2UucHVzaCgiICAgPCUgXy5l YWNoKGhpc3RvcmllcywgZnVuY3Rpb24oaGlzdG9yeSkgeyAlPiIpO2UucHVzaCgnICAgICA9CiAg PG9wdGlvbiB2YWx1ZT0zRCI8JT0zRCBfLmVzY2FwZShoaXN0b3J5LmdldCgiaWQiKSkgJT4iPjwl PTNEIF8uZXNjYXBlKGhpcz0KdG9yeS5nZXQoIm5hbWUiKSkgJT48L29wdGlvbj4nKTtlLnB1c2go IiAgIDwlIH0pOyAlPiIpO2UucHVzaCgiPC9zZWxlY3Q+Iik7PQplLnB1c2goIjwvc3Bhbj4iKTty ZXR1cm4gXy50ZW1wbGF0ZShlLmpvaW4oIiIpKX0sdGVtcGxhdGVBY2Nlc3NTZWxlY3Q6ZnVuY3Q9 Cmlvbigpe3ZhciBlPTNEW107ZS5wdXNoKCc8c2VsZWN0IGlkPTNEImFjY2Vzc19zZWxlY3QiIG11 bHRpcGxlPicpO2UucHVzaCgiID0KICA8JSBfLmVhY2gob3B0aW9ucywgZnVuY3Rpb24ob3B0aW9u KSB7ICU+Iik7ZS5wdXNoKCcgICAgICAgPG9wdGlvbiB2YWx1ZT0KPTNEIjwlLSBvcHRpb24ubmFt ZSAlPiI+PCUtIG9wdGlvbi5uYW1lICU+PC9vcHRpb24+Jyk7ZS5wdXNoKCIgICA8JSB9KTsgJT4i PQopO2UucHVzaCgiPC9zZWxlY3Q+Iik7cmV0dXJuIF8udGVtcGxhdGUoZS5qb2luKCIiKSl9fSk7 cmV0dXJue0xpYnJhcnlEYXRhc2U9CnRWaWV3OmF9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQoKZGlmZiAtciA0OWQ1MGJjZTQ2MzIwNmY0NDUwNjNkMmIyN2IyZjJiMzkzYWRiZTExIC1y IDFjY2Y0MGJkYWZhMTg0YjNiZTMxYWE3PQpiMWVjZGZjZTNiYzcwNWVmYiBzdGF0aWMvc2NyaXB0 cy9wYWNrZWQvbXZjL2xpYnJhcnkvbGlicmFyeS1mb2xkZXItdmlldy5qcwotLS0gYS9zdGF0aWMv c2NyaXB0cy9wYWNrZWQvbXZjL2xpYnJhcnkvbGlicmFyeS1mb2xkZXItdmlldy5qcworKysgYi9z dGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL2xpYnJhcnkvbGlicmFyeS1mb2xkZXItdmlldy5qcwpA QCAtMSwxICsxLDEgQEAKLWRlZmluZShbImxpYnMvdG9hc3RyIiwibXZjL2xpYnJhcnkvbGlicmFy eS1tb2RlbCIsIm12Yy91aS91aS1zZWxlY3QiXSxmdW5jPQp0aW9uKGQsYyxhKXt2YXIgYj0zREJh Y2tib25lLlZpZXcuZXh0ZW5kKHtlbDoiI2NlbnRlciIsbW9kZWw6bnVsbCxvcHRpb25zOns9Cn0s ZXZlbnRzOnsiY2xpY2sgLnRvb2xidG5fc2F2ZV9wZXJtaXNzaW9ucyI6InNhdmVQZXJtaXNzaW9u cyJ9LGluaXRpYWxpemU6Zj0KdW5jdGlvbihlKXt0aGlzLm9wdGlvbnM9M0RfLmV4dGVuZCh0aGlz Lm9wdGlvbnMsZSk7aWYodGhpcy5vcHRpb25zLmlkKXt0aGlzPQouZmV0Y2hGb2xkZXIoKX19LGZl dGNoRm9sZGVyOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz0zRF8uZXh0ZW5kKHRoaXMub3B0aW89 Cm5zLGUpO3RoaXMubW9kZWw9M0RuZXcgYy5Gb2xkZXJBc01vZGVsKHtpZDp0aGlzLm9wdGlvbnMu aWR9KTt2YXIgZj0zRHRoaXM7dD0KaGlzLm1vZGVsLmZldGNoKHtzdWNjZXNzOmZ1bmN0aW9uKCl7 aWYoZi5vcHRpb25zLnNob3dfcGVybWlzc2lvbnMpe2Yuc2hvd1BlPQpybWlzc2lvbnMoKX1lbHNl e2YucmVuZGVyKCl9fSxlcnJvcjpmdW5jdGlvbihoLGcpe2lmKHR5cGVvZiBnLnJlc3BvbnNlSlNP TiE9Cj0zRD0zRCJ1bmRlZmluZWQiKXtkLmVycm9yKGcucmVzcG9uc2VKU09OLmVycl9tc2crIiBD bGljayB0aGlzIHRvIGdvIGJhY2suIj0KLCIiLHtvbmNsaWNrOmZ1bmN0aW9uKCl7R2FsYXh5Lmxp YnJhcmllcy5saWJyYXJ5X3JvdXRlci5iYWNrKCl9fSl9ZWxzZXtkLmVyPQpyb3IoIkFuIGVycm9y IG9jdXJyZWQuIENsaWNrIHRoaXMgdG8gZ28gYmFjay4iLCIiLHtvbmNsaWNrOmZ1bmN0aW9uKCl7 R2FsYXg9CnkubGlicmFyaWVzLmxpYnJhcnlfcm91dGVyLmJhY2soKX19KX19fSl9LHJlbmRlcjpm dW5jdGlvbihlKXskKCIudG9vbHRpcCIpLj0KcmVtb3ZlKCk7dGhpcy5vcHRpb25zPTNEXy5leHRl bmQodGhpcy5vcHRpb25zLGUpO3ZhciBmPTNEdGhpcy50ZW1wbGF0ZUZvbGRlPQpyKCk7dGhpcy4k ZWwuaHRtbChmKHtpdGVtOnRoaXMubW9kZWx9KSk7JCgiLnBlZWsiKS5odG1sKHRoaXMubW9kZWwu Z2V0KCJwZWU9CmsiKSk7JCgiI2NlbnRlciBbZGF0YS10b2dnbGVdIikudG9vbHRpcCgpfSxzaGFy ZUZvbGRlcjpmdW5jdGlvbigpe2QuaW5mbygiRj0KZWF0dXJlIGNvbWluZyBzb29uLiIpfSxnb0Jh Y2s6ZnVuY3Rpb24oKXtHYWxheHkubGlicmFyaWVzLmxpYnJhcnlfcm91dGVyLmJhPQpjaygpfSxz aG93UGVybWlzc2lvbnM6ZnVuY3Rpb24oZil7dGhpcy5vcHRpb25zPTNEXy5leHRlbmQodGhpcy5v cHRpb25zLGYpOyQ9CigiLnRvb2x0aXAiKS5yZW1vdmUoKTt2YXIgaD0zRGZhbHNlO2lmKEdhbGF4 eS5jdXJyVXNlcil7aD0zREdhbGF4eS5jdXJyVXNlcj0KLmlzQWRtaW4oKX12YXIgZz0zRHRoaXMu dGVtcGxhdGVGb2xkZXJQZXJtaXNzaW9ucygpO3RoaXMuJGVsLmh0bWwoZyh7Zm9sZGVyPQo6dGhp cy5tb2RlbCxpc19hZG1pbjpofSkpO3ZhciBlPTNEdGhpcztpZih0aGlzLm9wdGlvbnMuZmV0Y2hl ZF9wZXJtaXNzaW9ucz0KPTNEPTNEPTNEdW5kZWZpbmVkKXskLmdldCgiL2FwaS9mb2xkZXJzLyIr ZS5pZCsiL3Blcm1pc3Npb25zP3Njb3BlPTNEY3VycmVuPQp0IikuZG9uZShmdW5jdGlvbihpKXtl LnByZXBhcmVTZWxlY3RCb3hlcyh7ZmV0Y2hlZF9wZXJtaXNzaW9uczppfSl9KS5mYWlsKGY9CnVu Y3Rpb24oKXtkLmVycm9yKCJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIGZl dGNoIGZvbGRlciBwZXJtaT0Kc3Npb25zLiIpfSl9ZWxzZXt0aGlzLnByZXBhcmVTZWxlY3RCb3hl cyh7fSl9JCgiI2NlbnRlciBbZGF0YS10b2dnbGVdIikudG9vPQpsdGlwKCk7JCgiI2NlbnRlciIp LmNzcygib3ZlcmZsb3ciLCJhdXRvIil9LF9zZXJpYWxpemVSb2xlczpmdW5jdGlvbihnKXt2YXI9 CiBlPTNEW107Zm9yKHZhciBmPTNEMDtmPGcubGVuZ3RoO2YrKyl7ZS5wdXNoKGdbZl0rIjoiK2db Zl0pfXJldHVybiBlfSxwcmVwYT0KcmVTZWxlY3RCb3hlczpmdW5jdGlvbihoKXt0aGlzLm9wdGlv bnM9M0RfLmV4dGVuZCh0aGlzLm9wdGlvbnMsaCk7dmFyIGY9M0R0PQpoaXMub3B0aW9ucy5mZXRj aGVkX3Blcm1pc3Npb25zO3ZhciBnPTNEdGhpczt2YXIgaT0zRHRoaXMuX3NlcmlhbGl6ZVJvbGVz KGY9Ci5hZGRfbGlicmFyeV9pdGVtX3JvbGVfbGlzdCk7dmFyIGo9M0R0aGlzLl9zZXJpYWxpemVS b2xlcyhmLm1hbmFnZV9mb2xkZXJfcj0Kb2xlX2xpc3QpO3ZhciBlPTNEdGhpcy5fc2VyaWFsaXpl Um9sZXMoZi5tb2RpZnlfZm9sZGVyX3JvbGVfbGlzdCk7Zy5hZGRTZWxlPQpjdE9iamVjdD0zRG5l dyBhLlZpZXcodGhpcy5fY3JlYXRlU2VsZWN0T3B0aW9ucyh0aGlzLCJhZGRfcGVybSIsaSxmYWxz ZSkpO2c9Ci5tYW5hZ2VTZWxlY3RPYmplY3Q9M0RuZXcgYS5WaWV3KHRoaXMuX2NyZWF0ZVNlbGVj dE9wdGlvbnModGhpcywibWFuYWdlX3Blcj0KbSIsaixmYWxzZSkpO2cubW9kaWZ5U2VsZWN0T2Jq ZWN0PTNEbmV3IGEuVmlldyh0aGlzLl9jcmVhdGVTZWxlY3RPcHRpb25zKHRoPQppcywibW9kaWZ5 X3Blcm0iLGUsZmFsc2UpKX0sX2NyZWF0ZVNlbGVjdE9wdGlvbnM6ZnVuY3Rpb24oZSxqLGgpe3Zh ciBpPTNEe209CmluaW11bUlucHV0TGVuZ3RoOjAsY3NzOmosbXVsdGlwbGU6dHJ1ZSxwbGFjZWhv bGRlcjoiQ2xpY2sgdG8gc2VsZWN0IGEgcm9sZT0KIixjb250YWluZXI6ZS4kZWwuZmluZCgiIyIr aiksYWpheDp7dXJsOiIvYXBpL2ZvbGRlcnMvIitlLmlkKyIvcGVybWlzc2lvbnM/PQpzY29wZT0z RGF2YWlsYWJsZSIsZGF0YVR5cGU6Impzb24iLHF1aWV0TWlsbGlzOjEwMCxkYXRhOmZ1bmN0aW9u KGssbCl7cmV0dXI9Cm57cTprLHBhZ2VfbGltaXQ6MTAscGFnZTpsfX0scmVzdWx0czpmdW5jdGlv bihtLGwpe3ZhciBrPTNEKGwqMTApPG0udG90YWw7cj0KZXR1cm57cmVzdWx0czptLnJvbGVzLG1v cmU6a319fSxmb3JtYXRSZXN1bHQ6ZnVuY3Rpb24gZihrKXtyZXR1cm4gay5uYW1lKyIgPQp0eXBl OiAiK2sudHlwZX0sZm9ybWF0U2VsZWN0aW9uOmZ1bmN0aW9uIGcoayl7cmV0dXJuIGsubmFtZX0s aW5pdFNlbGVjdGlvbjo9CmZ1bmN0aW9uKGssbSl7dmFyIGw9M0RbXTskKGsudmFsKCkuc3BsaXQo IiwiKSkuZWFjaChmdW5jdGlvbigpe3ZhciBuPTNEdGhpcz0KLnNwbGl0KCI6Iik7bC5wdXNoKHtp ZDpuWzFdLG5hbWU6blsxXX0pfSk7bShsKX0saW5pdGlhbERhdGE6aC5qb2luKCIsIiksZHJvPQpw ZG93bkNzc0NsYXNzOiJiaWdkcm9wIn07cmV0dXJuIGl9LGNvbWluZ1Nvb246ZnVuY3Rpb24oKXtk Lndhcm5pbmcoIkZlYXR1cmU9CiBjb21pbmcgc29vbi4iKX0sY29weVRvQ2xpcGJvYXJkOmZ1bmN0 aW9uKCl7dmFyIGU9M0RCYWNrYm9uZS5oaXN0b3J5LmxvY2F0aT0Kb24uaHJlZjtpZihlLmxhc3RJ bmRleE9mKCIvcGVybWlzc2lvbnMiKSE9M0Q9M0QtMSl7ZT0zRGUuc3Vic3RyKDAsZS5sYXN0SW5k PQpleE9mKCIvcGVybWlzc2lvbnMiKSl9d2luZG93LnByb21wdCgiQ29weSB0byBjbGlwYm9hcmQ6 IEN0cmwrQywgRW50ZXIiLGUpfSw9Cl9leHRyYWN0SWRzOmZ1bmN0aW9uKGUpe2lkc19saXN0PTNE W107Zm9yKHZhciBmPTNEZS5sZW5ndGgtMTtmPj0zRDA7Zi0tKXtpZD0Kc19saXN0LnB1c2goZVtm XS5pZCl9cmV0dXJuIGlkc19saXN0fSxzYXZlUGVybWlzc2lvbnM6ZnVuY3Rpb24oaCl7dmFyIGc9 M0R0PQpoaXM7dmFyIGU9M0R0aGlzLl9leHRyYWN0SWRzKHRoaXMuYWRkU2VsZWN0T2JqZWN0LiRl bC5zZWxlY3QyKCJkYXRhIikpO3ZhciA9Cmk9M0R0aGlzLl9leHRyYWN0SWRzKHRoaXMubWFuYWdl U2VsZWN0T2JqZWN0LiRlbC5zZWxlY3QyKCJkYXRhIikpO3ZhciBmPTNEdD0KaGlzLl9leHRyYWN0 SWRzKHRoaXMubW9kaWZ5U2VsZWN0T2JqZWN0LiRlbC5zZWxlY3QyKCJkYXRhIikpOyQucG9zdCgi L2FwaS9mPQpvbGRlcnMvIitnLmlkKyIvcGVybWlzc2lvbnM/YWN0aW9uPTNEc2V0X3Blcm1pc3Np b25zIix7ImFkZF9pZHNbXSI6ZSwibWFuYWc9CmVfaWRzW10iOmksIm1vZGlmeV9pZHNbXSI6Zix9 KS5kb25lKGZ1bmN0aW9uKGope2cuc2hvd1Blcm1pc3Npb25zKHtmZXRjaGVkXz0KcGVybWlzc2lv bnM6an0pO2Quc3VjY2VzcygiUGVybWlzc2lvbnMgc2F2ZWQuIil9KS5mYWlsKGZ1bmN0aW9uKCl7 ZC5lcnJvcigiPQpBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHNldCBmb2xk ZXIgcGVybWlzc2lvbnMuIil9KX0sdGVtcGxhdGU9CkZvbGRlcjpmdW5jdGlvbigpe3ZhciBlPTNE W107ZS5wdXNoKCc8ZGl2IGNsYXNzPTNEImxpYnJhcnlfc3R5bGVfY29udGFpbmVyIj0KPicpO2Uu cHVzaCgnICA8ZGl2IGlkPTNEImxpYnJhcnlfdG9vbGJhciI+Jyk7ZS5wdXNoKCcgICA8YnV0dG9u IGRhdGEtdG9nZ2xlPQo9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0z RCJNb2RpZnkgbGlicmFyeSBpdGVtIiBjbGFzcz0zRCI9CmJ0biBidG4tZGVmYXVsdCB0b29sYnRu X21vZGlmeV9kYXRhc2V0IHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1dHRvbiI+PHNwYT0KbiBj bGFzcz0zRCJmYSBmYS1wZW5jaWwiPjwvc3Bhbj4gTW9kaWZ5PC9zcGFuPjwvYnV0dG9uPicpO2Uu cHVzaCgnICAgPGEgaHJlPQpmPTNEIiNmb2xkZXJzLzwlLSBpdGVtLmdldCgiZm9sZGVyX2lkIikg JT4vZGF0YXNldHMvPCUtIGl0ZW0uaWQgJT4vcGVybWlzc2k9Cm9ucyI+PGJ1dHRvbiBkYXRhLXRv Z2dsZT0zRCJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0zRCJ0b3AiIHRpdGxlPTNEIk1hbmFnZT0K IHBlcm1pc3Npb25zIiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgdG9vbGJ0bl9jaGFuZ2VfcGVy bWlzc2lvbnMgcHJpbWFyeS1iPQp1dHRvbiIgdHlwZT0zRCJidXR0b24iPjxzcGFuIGNsYXNzPTNE ImZhIGZhLWdyb3VwIj48L3NwYW4+IFBlcm1pc3Npb25zPC9zcGE9Cm4+PC9idXR0b24+PC9hPicp O2UucHVzaCgnICAgPGJ1dHRvbiBkYXRhLXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRhLXBsYWNlbWVu dD0KPTNEInRvcCIgdGl0bGU9M0QiU2hhcmUgZGF0YXNldCIgY2xhc3M9M0QiYnRuIGJ0bi1kZWZh dWx0IHRvb2xidG4tc2hhcmUtZGF0PQphc2V0IHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1dHRv biI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtc2hhcmUiPjwvc3Bhbj4gU2g9CmFyZTwvc3Bhbj48L2J1 dHRvbj4nKTtlLnB1c2goIiAgPC9kaXY+Iik7ZS5wdXNoKCIgIDxwPiIpO2UucHVzaCgiICBUaGlz IGRhdD0KYXNldCBpcyB1bnJlc3RyaWN0ZWQgc28gZXZlcnlib2R5IGNhbiBhY2Nlc3MgaXQuIEp1 c3Qgc2hhcmUgdGhlIFVSTCBvZiB0aGlzPQogcGFnZS4gIik7ZS5wdXNoKCcgIDxidXR0b24gZGF0 YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiA9CnRpdGxlPTNEIkNv cHkgdG8gY2xpcGJvYXJkIiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgYnRuLWNvcHktbGluay10 by1jbGlwYj0Kb2FyZCBwcmltYXJ5LWJ1dHRvbiIgdHlwZT0zRCJidXR0b24iPjxzcGFuIGNsYXNz PTNEImZhIGZhLWNsaXBib2FyZCI+PC9zcGFuPQo+IFRvIENsaXBib2FyZDwvc3Bhbj48L2J1dHRv bj4gJyk7ZS5wdXNoKCIgIDwvcD4iKTtlLnB1c2goJzxkaXYgY2xhc3M9M0QiZGE9CnRhc2V0X3Rh YmxlIj4nKTtlLnB1c2goJyAgIDx0YWJsZSBjbGFzcz0zRCJncmlkIHRhYmxlIHRhYmxlLXN0cmlw ZWQgdGFibGUtYz0Kb25kZW5zZWQiPicpO2UucHVzaCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAg ICAgICAgICAgPHRoIHNjb3BlPTNEInJvdyIgaWQ9Cj0zRCJpZF9yb3ciIGRhdGEtaWQ9M0QiPCU9 M0QgXy5lc2NhcGUoaXRlbS5nZXQoImxkZGFfaWQiKSkgJT4iPk5hbWU8L3RoPicpOz0KZS5wdXNo KCcgICAgICAgICAgIDx0ZD48JT0zRCBfLmVzY2FwZShpdGVtLmdldCgibmFtZSIpKSAlPjwvdGQ+ Jyk7ZS5wdXNoKCIgPQogICAgICA8L3RyPiIpO2UucHVzaCgnICAgPCUgaWYgKGl0ZW0uZ2V0KCJm aWxlX2V4dCIpKSB7ICU+Jyk7ZS5wdXNoKCIgICAgICA9CiA8dHI+Iik7ZS5wdXNoKCcgICAgICAg ICAgIDx0aCBzY29wZT0zRCJyb3ciPkRhdGEgdHlwZTwvdGg+Jyk7ZS5wdXNoKCcgICAgID0KICAg ICAgPHRkPjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KCJmaWxlX2V4dCIpKSAlPjwvdGQ+Jyk7ZS5w dXNoKCIgICAgICAgPC90PQpyPiIpO2UucHVzaCgiICAgPCUgfSAlPiIpO2UucHVzaCgiICAgIDwv dGFibGU+Iik7ZS5wdXNoKCI8L2Rpdj4iKTtlLnB1c2goIjw9Ci9kaXY+Iik7cmV0dXJuIF8udGVt cGxhdGUoZS5qb2luKCIiKSl9LHRlbXBsYXRlRm9sZGVyUGVybWlzc2lvbnM6ZnVuY3Rpb24oKT0K e3ZhciBlPTNEW107ZS5wdXNoKCc8ZGl2IGNsYXNzPTNEImxpYnJhcnlfc3R5bGVfY29udGFpbmVy Ij4nKTtlLnB1c2goJyAgPGRpPQp2IGlkPTNEImxpYnJhcnlfdG9vbGJhciI+Jyk7ZS5wdXNoKCcg ICA8YSBocmVmPTNEIiMvZm9sZGVycy88JT0zRCBmb2xkZXIuZ2U9CnQoInBhcmVudF9pZCIpICU+ Ij48YnV0dG9uIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIg dD0KaXRsZT0zRCJHbyBiYWNrIHRvIHRoZSBwYXJlbnQgZm9sZGVyIiBjbGFzcz0zRCJidG4gYnRu LWRlZmF1bHQgcHJpbWFyeS1idXR0PQpvbiIgdHlwZT0zRCJidXR0b24iPjxzcGFuIGNsYXNzPTNE ImZhIGZhLWNhcmV0LWxlZnQgZmEtbGciPjwvc3Bhbj4gUGFyZW50IGY9Cm9sZGVyPC9zcGFuPjwv YnV0dG9uPjwvYT4nKTtlLnB1c2goIiAgPC9kaXY+Iik7ZS5wdXNoKCc8aDE+Rm9sZGVyOiA8JT0z RCBfLj0KZXNjYXBlKGZvbGRlci5nZXQoIm5hbWUiKSkgJT48L2gxPicpO2UucHVzaCgnPGRpdiBj bGFzcz0zRCJhbGVydCBhbGVydC13YXJuPQppbmciPicpO2UucHVzaCgiPCUgaWYgKGlzX2FkbWlu KSB7ICU+Iik7ZS5wdXNoKCJZb3UgYXJlIGxvZ2dlZCBpbiBhcyBhbiA8c3Q9CnJvbmc+YWRtaW5p c3RyYXRvcjwvc3Ryb25nPiB0aGVyZWZvcmUgeW91IGNhbiBtYW5hZ2UgYW55IGZvbGRlciBvbiB0 aGlzIEdhbD0KYXh5IGluc3RhbmNlLiBQbGVhc2UgbWFrZSBzdXJlIHlvdSB1bmRlcnN0YW5kIHRo ZSBjb25zZXF1ZW5jZXMuIik7ZS5wdXNoKCI8PQolIH0gZWxzZSB7ICU+Iik7ZS5wdXNoKCJZb3Ug Y2FuIGFzc2lnbiBhbnkgbnVtYmVyIG9mIHJvbGVzIHRvIGFueSBvZiB0aGUgZm89Cmxsb3dpbmcg cGVybWlzc2lvbiB0eXBlcy4gSG93ZXZlciBwbGVhc2UgcmVhZCBjYXJlZnVsbHkgdGhlIGltcGxp Y2F0aW9ucyBvZj0KIHN1Y2ggYWN0aW9ucy4iKTtlLnB1c2goIjwlIH0lPiIpO2UucHVzaCgiPC9k aXY+Iik7ZS5wdXNoKCc8ZGl2IGNsYXNzPTNEImRhPQp0YXNldF90YWJsZSI+Jyk7ZS5wdXNoKCI8 aDI+Rm9sZGVyIHBlcm1pc3Npb25zPC9oMj4iKTtlLnB1c2goIjxoND5Sb2xlcyB0aGE9CnQgY2Fu IG1hbmFnZSBwZXJtaXNzaW9ucyBvbiB0aGlzIGZvbGRlcjwvaDQ+Iik7ZS5wdXNoKCc8ZGl2IGlk PTNEIm1hbmFnZV9wZT0Kcm0iIGNsYXNzPTNEIm1hbmFnZV9wZXJtIHJvbGVzLXNlbGVjdGlvbiI+ PC9kaXY+Jyk7ZS5wdXNoKCc8ZGl2IGNsYXNzPTNEImFsPQplcnQgYWxlcnQtaW5mbyByb2xlcy1z ZWxlY3Rpb24iPlVzZXIgd2l0aCA8c3Ryb25nPmFueTwvc3Ryb25nPiBvZiB0aGVzZSByb2w9CmVz IGNhbiBtYW5hZ2UgcGVybWlzc2lvbnMgb24gdGhpcyBmb2xkZXIuPC9kaXY+Jyk7ZS5wdXNoKCI8 aDQ+Um9sZXMgdGhhdCBjYT0KbiBhZGQgaXRlbXMgdG8gdGhpcyBmb2xkZXI8L2g0PiIpO2UucHVz aCgnPGRpdiBpZD0zRCJhZGRfcGVybSIgY2xhc3M9M0QiYWRkPQpfcGVybSByb2xlcy1zZWxlY3Rp b24iPjwvZGl2PicpO2UucHVzaCgnPGRpdiBjbGFzcz0zRCJhbGVydCBhbGVydC1pbmZvIHJvbGU9 CnMtc2VsZWN0aW9uIj5Vc2VyIHdpdGggPHN0cm9uZz5hbnk8L3N0cm9uZz4gb2YgdGhlc2Ugcm9s ZXMgY2FuIGFkZCBpdGVtcyB0bz0KIHRoaXMgZm9sZGVyIChmb2xkZXJzIGFuZCBkYXRhc2V0cyku PC9kaXY+Jyk7ZS5wdXNoKCI8aDQ+Um9sZXMgdGhhdCBjYW4gbW9kPQppZnkgdGhpcyBmb2xkZXI8 L2g0PiIpO2UucHVzaCgnPGRpdiBpZD0zRCJtb2RpZnlfcGVybSIgY2xhc3M9M0QibW9kaWZ5X3Bl cm09CiByb2xlcy1zZWxlY3Rpb24iPjwvZGl2PicpO2UucHVzaCgnPGRpdiBjbGFzcz0zRCJhbGVy dCBhbGVydC1pbmZvIHJvbGVzLXNlbD0KZWN0aW9uIj5Vc2VyIHdpdGggPHN0cm9uZz5hbnk8L3N0 cm9uZz4gb2YgdGhlc2Ugcm9sZXMgY2FuIG1vZGlmeSB0aGlzIGZvbGRlPQpyIChuYW1lLCBldGMu KS48L2Rpdj4nKTtlLnB1c2goJzxidXR0b24gZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1w bGFjZW09CmVudD0zRCJ0b3AiIHRpdGxlPTNEIlNhdmUgbW9kaWZpY2F0aW9ucyIgY2xhc3M9M0Qi YnRuIGJ0bi1kZWZhdWx0IHRvb2xidG5fcz0KYXZlX3Blcm1pc3Npb25zIHByaW1hcnktYnV0dG9u IiB0eXBlPTNEImJ1dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtZmxvcHB5PQotbyI+PC9zcGFu PiBTYXZlPC9zcGFuPjwvYnV0dG9uPicpO2UucHVzaCgiPC9kaXY+Iik7ZS5wdXNoKCI8L2Rpdj4i KTtyZXR1cm49CiBfLnRlbXBsYXRlKGUuam9pbigiIikpfX0pO3JldHVybntGb2xkZXJWaWV3OmJ9 fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGVmaW5lKFsibGlicy90b2FzdHIiLCJt dmMvbGlicmFyeS9saWJyYXJ5LW1vZGVsIiwibXZjL3VpL3VpLXNlbGVjdCJdLGZ1bmM9CnRpb24o ZCxjLGEpe3ZhciBiPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2VsOiIjY2VudGVyIixtb2RlbDpu dWxsLG9wdGlvbnM6ez0KfSxldmVudHM6eyJjbGljayAudG9vbGJ0bl9zYXZlX3Blcm1pc3Npb25z Ijoic2F2ZVBlcm1pc3Npb25zIn0saW5pdGlhbGl6ZTpmPQp1bmN0aW9uKGUpe3RoaXMub3B0aW9u cz0zRF8uZXh0ZW5kKHRoaXMub3B0aW9ucyxlKTtpZih0aGlzLm9wdGlvbnMuaWQpe3RoaXM9Ci5m ZXRjaEZvbGRlcigpfX0sZmV0Y2hGb2xkZXI6ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPTNEXy5l eHRlbmQodGhpcy5vcHRpbz0KbnMsZSk7dGhpcy5tb2RlbD0zRG5ldyBjLkZvbGRlckFzTW9kZWwo e2lkOnRoaXMub3B0aW9ucy5pZH0pO3ZhciBmPTNEdGhpczt0PQpoaXMubW9kZWwuZmV0Y2goe3N1 Y2Nlc3M6ZnVuY3Rpb24oKXtpZihmLm9wdGlvbnMuc2hvd19wZXJtaXNzaW9ucyl7Zi5zaG93UGU9 CnJtaXNzaW9ucygpfWVsc2V7Zi5yZW5kZXIoKX19LGVycm9yOmZ1bmN0aW9uKGgsZyl7aWYodHlw ZW9mIGcucmVzcG9uc2VKU09OIT0KPTNEPTNEInVuZGVmaW5lZCIpe2QuZXJyb3IoZy5yZXNwb25z ZUpTT04uZXJyX21zZysiIENsaWNrIHRoaXMgdG8gZ28gYmFjay4iPQosIiIse29uY2xpY2s6ZnVu Y3Rpb24oKXtHYWxheHkubGlicmFyaWVzLmxpYnJhcnlfcm91dGVyLmJhY2soKX19KX1lbHNle2Qu ZXI9CnJvcigiQW4gZXJyb3Igb2N1cnJlZC4gQ2xpY2sgdGhpcyB0byBnbyBiYWNrLiIsIiIse29u Y2xpY2s6ZnVuY3Rpb24oKXtHYWxheD0KeS5saWJyYXJpZXMubGlicmFyeV9yb3V0ZXIuYmFjaygp fX0pfX19KX0scmVuZGVyOmZ1bmN0aW9uKGUpeyQoIi50b29sdGlwIikuPQpyZW1vdmUoKTt0aGlz Lm9wdGlvbnM9M0RfLmV4dGVuZCh0aGlzLm9wdGlvbnMsZSk7dmFyIGY9M0R0aGlzLnRlbXBsYXRl Rm9sZGU9CnIoKTt0aGlzLiRlbC5odG1sKGYoe2l0ZW06dGhpcy5tb2RlbH0pKTskKCIucGVlayIp Lmh0bWwodGhpcy5tb2RlbC5nZXQoInBlZT0KayIpKTskKCIjY2VudGVyIFtkYXRhLXRvZ2dsZV0i KS50b29sdGlwKCl9LHNoYXJlRm9sZGVyOmZ1bmN0aW9uKCl7ZC5pbmZvKCJGPQplYXR1cmUgY29t aW5nIHNvb24uIil9LGdvQmFjazpmdW5jdGlvbigpe0dhbGF4eS5saWJyYXJpZXMubGlicmFyeV9y b3V0ZXIuYmE9CmNrKCl9LHNob3dQZXJtaXNzaW9uczpmdW5jdGlvbihmKXt0aGlzLm9wdGlvbnM9 M0RfLmV4dGVuZCh0aGlzLm9wdGlvbnMsZik7JD0KKCIudG9vbHRpcCIpLnJlbW92ZSgpO3ZhciBo PTNEZmFsc2U7aWYoR2FsYXh5LmN1cnJVc2VyKXtoPTNER2FsYXh5LmN1cnJVc2VyPQouaXNBZG1p bigpfXZhciBnPTNEdGhpcy50ZW1wbGF0ZUZvbGRlclBlcm1pc3Npb25zKCk7dGhpcy4kZWwuaHRt bChnKHtmb2xkZXI9Cjp0aGlzLm1vZGVsLGlzX2FkbWluOmh9KSk7dmFyIGU9M0R0aGlzO2lmKHRo aXMub3B0aW9ucy5mZXRjaGVkX3Blcm1pc3Npb25zPQo9M0Q9M0Q9M0R1bmRlZmluZWQpeyQuZ2V0 KCh3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXA9CmkvZm9s ZGVycy8iK2UuaWQrIi9wZXJtaXNzaW9ucz9zY29wZT0zRGN1cnJlbnQiKS5kb25lKGZ1bmN0aW9u KGkpe2UucHJlcGFyZT0KU2VsZWN0Qm94ZXMoe2ZldGNoZWRfcGVybWlzc2lvbnM6aX0pfSkuZmFp bChmdW5jdGlvbigpe2QuZXJyb3IoIkFuIGVycm9yIG9jPQpjdXJyZWQgd2hpbGUgYXR0ZW1wdGlu ZyB0byBmZXRjaCBmb2xkZXIgcGVybWlzc2lvbnMuIil9KX1lbHNle3RoaXMucHJlcGFyZVM9CmVs ZWN0Qm94ZXMoe30pfSQoIiNjZW50ZXIgW2RhdGEtdG9nZ2xlXSIpLnRvb2x0aXAoKTskKCIjY2Vu dGVyIikuY3NzKCJvdmVyZj0KbG93IiwiYXV0byIpfSxfc2VyaWFsaXplUm9sZXM6ZnVuY3Rpb24o Zyl7dmFyIGU9M0RbXTtmb3IodmFyIGY9M0QwO2Y8Zy5sZW5nPQp0aDtmKyspe2UucHVzaChnW2Zd KyI6IitnW2ZdKX1yZXR1cm4gZX0scHJlcGFyZVNlbGVjdEJveGVzOmZ1bmN0aW9uKGgpe3RoaXM9 Ci5vcHRpb25zPTNEXy5leHRlbmQodGhpcy5vcHRpb25zLGgpO3ZhciBmPTNEdGhpcy5vcHRpb25z LmZldGNoZWRfcGVybWlzc2lvbj0Kczt2YXIgZz0zRHRoaXM7dmFyIGk9M0R0aGlzLl9zZXJpYWxp emVSb2xlcyhmLmFkZF9saWJyYXJ5X2l0ZW1fcm9sZV9saXN0KTt2PQphciBqPTNEdGhpcy5fc2Vy aWFsaXplUm9sZXMoZi5tYW5hZ2VfZm9sZGVyX3JvbGVfbGlzdCk7dmFyIGU9M0R0aGlzLl9zZXJp YWw9Cml6ZVJvbGVzKGYubW9kaWZ5X2ZvbGRlcl9yb2xlX2xpc3QpO2cuYWRkU2VsZWN0T2JqZWN0 PTNEbmV3IGEuVmlldyh0aGlzLl9jcj0KZWF0ZVNlbGVjdE9wdGlvbnModGhpcywiYWRkX3Blcm0i LGksZmFsc2UpKTtnLm1hbmFnZVNlbGVjdE9iamVjdD0zRG5ldyBhLlZpPQpldyh0aGlzLl9jcmVh dGVTZWxlY3RPcHRpb25zKHRoaXMsIm1hbmFnZV9wZXJtIixqLGZhbHNlKSk7Zy5tb2RpZnlTZWxl Y3RPYmo9CmVjdD0zRG5ldyBhLlZpZXcodGhpcy5fY3JlYXRlU2VsZWN0T3B0aW9ucyh0aGlzLCJt b2RpZnlfcGVybSIsZSxmYWxzZSkpfSxfYz0KcmVhdGVTZWxlY3RPcHRpb25zOmZ1bmN0aW9uKGUs aixoKXt2YXIgaT0zRHttaW5pbXVtSW5wdXRMZW5ndGg6MCxjc3M6aixtdWx0PQppcGxlOnRydWUs cGxhY2Vob2xkZXI6IkNsaWNrIHRvIHNlbGVjdCBhIHJvbGUiLGNvbnRhaW5lcjplLiRlbC5maW5k KCIjIitqKSw9CmFqYXg6e3VybDood2luZG93LmdhbGF4eV9jb25maWc/Z2FsYXh5X2NvbmZpZy5y b290OiIvIikrImFwaS9mb2xkZXJzLyIrZS5pZD0KKyIvcGVybWlzc2lvbnM/c2NvcGU9M0RhdmFp bGFibGUiLGRhdGFUeXBlOiJqc29uIixxdWlldE1pbGxpczoxMDAsZGF0YTpmdW5jPQp0aW9uKGss bCl7cmV0dXJue3E6ayxwYWdlX2xpbWl0OjEwLHBhZ2U6bH19LHJlc3VsdHM6ZnVuY3Rpb24obSxs KXt2YXIgaz0zRCg9CmwqMTApPG0udG90YWw7cmV0dXJue3Jlc3VsdHM6bS5yb2xlcyxtb3JlOmt9 fX0sZm9ybWF0UmVzdWx0OmZ1bmN0aW9uIGYoayl7cj0KZXR1cm4gay5uYW1lKyIgdHlwZTogIitr LnR5cGV9LGZvcm1hdFNlbGVjdGlvbjpmdW5jdGlvbiBnKGspe3JldHVybiBrLm5hbWV9PQosaW5p dFNlbGVjdGlvbjpmdW5jdGlvbihrLG0pe3ZhciBsPTNEW107JChrLnZhbCgpLnNwbGl0KCIsIikp LmVhY2goZnVuY3Rpb249Cigpe3ZhciBuPTNEdGhpcy5zcGxpdCgiOiIpO2wucHVzaCh7aWQ6blsx XSxuYW1lOm5bMV19KX0pO20obCl9LGluaXRpYWxEYXRhOj0KaC5qb2luKCIsIiksZHJvcGRvd25D c3NDbGFzczoiYmlnZHJvcCJ9O3JldHVybiBpfSxjb21pbmdTb29uOmZ1bmN0aW9uKCl7ZC53PQph cm5pbmcoIkZlYXR1cmUgY29taW5nIHNvb24uIil9LGNvcHlUb0NsaXBib2FyZDpmdW5jdGlvbigp e3ZhciBlPTNEQmFja2JvbmU9Ci5oaXN0b3J5LmxvY2F0aW9uLmhyZWY7aWYoZS5sYXN0SW5kZXhP ZigiL3Blcm1pc3Npb25zIikhPTNEPTNELTEpe2U9M0RlLnN1Yj0Kc3RyKDAsZS5sYXN0SW5kZXhP ZigiL3Blcm1pc3Npb25zIikpfXdpbmRvdy5wcm9tcHQoIkNvcHkgdG8gY2xpcGJvYXJkOiBDdHJs PQorQywgRW50ZXIiLGUpfSxfZXh0cmFjdElkczpmdW5jdGlvbihlKXtpZHNfbGlzdD0zRFtdO2Zv cih2YXIgZj0zRGUubGVuZ3RoLTE9CjtmPj0zRDA7Zi0tKXtpZHNfbGlzdC5wdXNoKGVbZl0uaWQp fXJldHVybiBpZHNfbGlzdH0sc2F2ZVBlcm1pc3Npb25zOmZ1bmN0aT0Kb24oaCl7dmFyIGc9M0R0 aGlzO3ZhciBlPTNEdGhpcy5fZXh0cmFjdElkcyh0aGlzLmFkZFNlbGVjdE9iamVjdC4kZWwuc2Vs ZWN0PQoyKCJkYXRhIikpO3ZhciBpPTNEdGhpcy5fZXh0cmFjdElkcyh0aGlzLm1hbmFnZVNlbGVj dE9iamVjdC4kZWwuc2VsZWN0MigiZGE9CnRhIikpO3ZhciBmPTNEdGhpcy5fZXh0cmFjdElkcyh0 aGlzLm1vZGlmeVNlbGVjdE9iamVjdC4kZWwuc2VsZWN0MigiZGF0YSIpKT0KOyQucG9zdCgod2lu ZG93LmdhbGF4eV9jb25maWc/Z2FsYXh5X2NvbmZpZy5yb290OiIvIikrImFwaS9mb2xkZXJzLyIr Zy5pZCsiPQovcGVybWlzc2lvbnM/YWN0aW9uPTNEc2V0X3Blcm1pc3Npb25zIix7ImFkZF9pZHNb XSI6ZSwibWFuYWdlX2lkc1tdIjppLCJtb2Q9CmlmeV9pZHNbXSI6Zix9KS5kb25lKGZ1bmN0aW9u KGope2cuc2hvd1Blcm1pc3Npb25zKHtmZXRjaGVkX3Blcm1pc3Npb25zOmp9KT0KO2Quc3VjY2Vz cygiUGVybWlzc2lvbnMgc2F2ZWQuIil9KS5mYWlsKGZ1bmN0aW9uKCl7ZC5lcnJvcigiQW4gZXJy b3Igb2NjdXJyPQplZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHNldCBmb2xkZXIgcGVybWlzc2lvbnMu Iil9KX0sdGVtcGxhdGVGb2xkZXI6ZnVuY3Rpb249Cigpe3ZhciBlPTNEW107ZS5wdXNoKCc8ZGl2 IGNsYXNzPTNEImxpYnJhcnlfc3R5bGVfY29udGFpbmVyIj4nKTtlLnB1c2goJyAgPD0KZGl2IGlk PTNEImxpYnJhcnlfdG9vbGJhciI+Jyk7ZS5wdXNoKCcgICA8YnV0dG9uIGRhdGEtdG9nZ2xlPTNE InRvb2x0aXAiIGRhPQp0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0zRCJNb2RpZnkgbGlicmFy eSBpdGVtIiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQ9CiB0b29sYnRuX21vZGlmeV9kYXRhc2V0 IHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZj0KYS1w ZW5jaWwiPjwvc3Bhbj4gTW9kaWZ5PC9zcGFuPjwvYnV0dG9uPicpO2UucHVzaCgnICAgPGEgaHJl Zj0zRCIjZm9sZGVycy88PQolLSBpdGVtLmdldCgiZm9sZGVyX2lkIikgJT4vZGF0YXNldHMvPCUt IGl0ZW0uaWQgJT4vcGVybWlzc2lvbnMiPjxidXR0b24gZGE9CnRhLXRvZ2dsZT0zRCJ0b29sdGlw IiBkYXRhLXBsYWNlbWVudD0zRCJ0b3AiIHRpdGxlPTNEIk1hbmFnZSBwZXJtaXNzaW9ucyIgYz0K bGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgdG9vbGJ0bl9jaGFuZ2VfcGVybWlzc2lvbnMgcHJpbWFy eS1idXR0b24iIHR5cGU9M0QiPQpidXR0b24iPjxzcGFuIGNsYXNzPTNEImZhIGZhLWdyb3VwIj48 L3NwYW4+IFBlcm1pc3Npb25zPC9zcGFuPjwvYnV0dG9uPjwvYT49CicpO2UucHVzaCgnICAgPGJ1 dHRvbiBkYXRhLXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0zRCJ0b3AiIHRpdGxl PQo9M0QiU2hhcmUgZGF0YXNldCIgY2xhc3M9M0QiYnRuIGJ0bi1kZWZhdWx0IHRvb2xidG4tc2hh cmUtZGF0YXNldCBwcmltYXJ5LWI9CnV0dG9uIiB0eXBlPTNEImJ1dHRvbiI+PHNwYW4gY2xhc3M9 M0QiZmEgZmEtc2hhcmUiPjwvc3Bhbj4gU2hhcmU8L3NwYW4+PC9idT0KdHRvbj4nKTtlLnB1c2go IiAgPC9kaXY+Iik7ZS5wdXNoKCIgIDxwPiIpO2UucHVzaCgiICBUaGlzIGRhdGFzZXQgaXMgdW5y ZXN0PQpyaWN0ZWQgc28gZXZlcnlib2R5IGNhbiBhY2Nlc3MgaXQuIEp1c3Qgc2hhcmUgdGhlIFVS TCBvZiB0aGlzIHBhZ2UuICIpO2UucHU9CnNoKCcgIDxidXR0b24gZGF0YS10b2dnbGU9M0QidG9v bHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0zRCJDb3B5ID0KdG8gY2xpcGJvYXJk IiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgYnRuLWNvcHktbGluay10by1jbGlwYm9hcmQgcHJp bWFyeS1iPQp1dHRvbiIgdHlwZT0zRCJidXR0b24iPjxzcGFuIGNsYXNzPTNEImZhIGZhLWNsaXBi b2FyZCI+PC9zcGFuPiBUbyBDbGlwYm9hcmQ9Cjwvc3Bhbj48L2J1dHRvbj4gJyk7ZS5wdXNoKCIg IDwvcD4iKTtlLnB1c2goJzxkaXYgY2xhc3M9M0QiZGF0YXNldF90YWJsZSI+Jz0KKTtlLnB1c2go JyAgIDx0YWJsZSBjbGFzcz0zRCJncmlkIHRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtY29uZGVu c2VkIj4nKTtlPQoucHVzaCgiICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNj b3BlPTNEInJvdyIgaWQ9M0QiaWRfcm93IiBkYXQ9CmEtaWQ9M0QiPCU9M0QgXy5lc2NhcGUoaXRl bS5nZXQoImxkZGFfaWQiKSkgJT4iPk5hbWU8L3RoPicpO2UucHVzaCgnICAgICAgID0KICAgIDx0 ZD48JT0zRCBfLmVzY2FwZShpdGVtLmdldCgibmFtZSIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICAg ICAgPC90cj4iKTtlPQoucHVzaCgnICAgPCUgaWYgKGl0ZW0uZ2V0KCJmaWxlX2V4dCIpKSB7ICU+ Jyk7ZS5wdXNoKCIgICAgICAgPHRyPiIpO2UucHVzaCg9CicgICAgICAgICAgIDx0aCBzY29wZT0z RCJyb3ciPkRhdGEgdHlwZTwvdGg+Jyk7ZS5wdXNoKCcgICAgICAgICAgIDx0ZD48JT0zRD0KIF8u ZXNjYXBlKGl0ZW0uZ2V0KCJmaWxlX2V4dCIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKCIgICAgICAgPC90 cj4iKTtlLnB1c2goIiAgPQogPCUgfSAlPiIpO2UucHVzaCgiICAgIDwvdGFibGU+Iik7ZS5wdXNo KCI8L2Rpdj4iKTtlLnB1c2goIjwvZGl2PiIpO3JldHVybiA9Cl8udGVtcGxhdGUoZS5qb2luKCIi KSl9LHRlbXBsYXRlRm9sZGVyUGVybWlzc2lvbnM6ZnVuY3Rpb24oKXt2YXIgZT0zRFtdO2UucD0K dXNoKCc8ZGl2IGNsYXNzPTNEImxpYnJhcnlfc3R5bGVfY29udGFpbmVyIj4nKTtlLnB1c2goJyAg PGRpdiBpZD0zRCJsaWJyYXJ5PQpfdG9vbGJhciI+Jyk7ZS5wdXNoKCcgICA8YSBocmVmPTNEIiMv Zm9sZGVycy88JT0zRCBmb2xkZXIuZ2V0KCJwYXJlbnRfaWQiKSA9CiU+Ij48YnV0dG9uIGRhdGEt dG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiR28gYmFj az0KIHRvIHRoZSBwYXJlbnQgZm9sZGVyIiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgcHJpbWFy eS1idXR0b24iIHR5cGU9M0QiYnV0PQp0b24iPjxzcGFuIGNsYXNzPTNEImZhIGZhLWNhcmV0LWxl ZnQgZmEtbGciPjwvc3Bhbj4gUGFyZW50IGZvbGRlcjwvc3Bhbj48L2I9CnV0dG9uPjwvYT4nKTtl LnB1c2goIiAgPC9kaXY+Iik7ZS5wdXNoKCc8aDE+Rm9sZGVyOiA8JT0zRCBfLmVzY2FwZShmb2xk ZXIuZz0KZXQoIm5hbWUiKSkgJT48L2gxPicpO2UucHVzaCgnPGRpdiBjbGFzcz0zRCJhbGVydCBh bGVydC13YXJuaW5nIj4nKTtlLnB1c2goPQoiPCUgaWYgKGlzX2FkbWluKSB7ICU+Iik7ZS5wdXNo KCJZb3UgYXJlIGxvZ2dlZCBpbiBhcyBhbiA8c3Ryb25nPmFkbWluaXN0cmE9CnRvcjwvc3Ryb25n PiB0aGVyZWZvcmUgeW91IGNhbiBtYW5hZ2UgYW55IGZvbGRlciBvbiB0aGlzIEdhbGF4eSBpbnN0 YW5jZS4gUD0KbGVhc2UgbWFrZSBzdXJlIHlvdSB1bmRlcnN0YW5kIHRoZSBjb25zZXF1ZW5jZXMu Iik7ZS5wdXNoKCI8JSB9IGVsc2UgeyAlPiIpPQo7ZS5wdXNoKCJZb3UgY2FuIGFzc2lnbiBhbnkg bnVtYmVyIG9mIHJvbGVzIHRvIGFueSBvZiB0aGUgZm9sbG93aW5nIHBlcm1pc3M9CmlvbiB0eXBl cy4gSG93ZXZlciBwbGVhc2UgcmVhZCBjYXJlZnVsbHkgdGhlIGltcGxpY2F0aW9ucyBvZiBzdWNo IGFjdGlvbnMuIj0KKTtlLnB1c2goIjwlIH0lPiIpO2UucHVzaCgiPC9kaXY+Iik7ZS5wdXNoKCc8 ZGl2IGNsYXNzPTNEImRhdGFzZXRfdGFibGUiPicpPQo7ZS5wdXNoKCI8aDI+Rm9sZGVyIHBlcm1p c3Npb25zPC9oMj4iKTtlLnB1c2goIjxoND5Sb2xlcyB0aGF0IGNhbiBtYW5hZ2UgcGU9CnJtaXNz aW9ucyBvbiB0aGlzIGZvbGRlcjwvaDQ+Iik7ZS5wdXNoKCc8ZGl2IGlkPTNEIm1hbmFnZV9wZXJt IiBjbGFzcz0zRCJtYT0KbmFnZV9wZXJtIHJvbGVzLXNlbGVjdGlvbiI+PC9kaXY+Jyk7ZS5wdXNo KCc8ZGl2IGNsYXNzPTNEImFsZXJ0IGFsZXJ0LWluZm8gPQpyb2xlcy1zZWxlY3Rpb24iPlVzZXIg d2l0aCA8c3Ryb25nPmFueTwvc3Ryb25nPiBvZiB0aGVzZSByb2xlcyBjYW4gbWFuYWdlIHA9CmVy bWlzc2lvbnMgb24gdGhpcyBmb2xkZXIuPC9kaXY+Jyk7ZS5wdXNoKCI8aDQ+Um9sZXMgdGhhdCBj YW4gYWRkIGl0ZW1zIHRvID0KdGhpcyBmb2xkZXI8L2g0PiIpO2UucHVzaCgnPGRpdiBpZD0zRCJh ZGRfcGVybSIgY2xhc3M9M0QiYWRkX3Blcm0gcm9sZXMtc2VsPQplY3Rpb24iPjwvZGl2PicpO2Uu cHVzaCgnPGRpdiBjbGFzcz0zRCJhbGVydCBhbGVydC1pbmZvIHJvbGVzLXNlbGVjdGlvbiI+VXM9 CmVyIHdpdGggPHN0cm9uZz5hbnk8L3N0cm9uZz4gb2YgdGhlc2Ugcm9sZXMgY2FuIGFkZCBpdGVt cyB0byB0aGlzIGZvbGRlciAoZj0Kb2xkZXJzIGFuZCBkYXRhc2V0cykuPC9kaXY+Jyk7ZS5wdXNo KCI8aDQ+Um9sZXMgdGhhdCBjYW4gbW9kaWZ5IHRoaXMgZm9sZGVyPQo8L2g0PiIpO2UucHVzaCgn PGRpdiBpZD0zRCJtb2RpZnlfcGVybSIgY2xhc3M9M0QibW9kaWZ5X3Blcm0gcm9sZXMtc2VsZWN0 aW89Cm4iPjwvZGl2PicpO2UucHVzaCgnPGRpdiBjbGFzcz0zRCJhbGVydCBhbGVydC1pbmZvIHJv bGVzLXNlbGVjdGlvbiI+VXNlciB3aT0KdGggPHN0cm9uZz5hbnk8L3N0cm9uZz4gb2YgdGhlc2Ug cm9sZXMgY2FuIG1vZGlmeSB0aGlzIGZvbGRlciAobmFtZSwgZXRjLikuPQo8L2Rpdj4nKTtlLnB1 c2goJzxidXR0b24gZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9w IiB0aXQ9CmxlPTNEIlNhdmUgbW9kaWZpY2F0aW9ucyIgY2xhc3M9M0QiYnRuIGJ0bi1kZWZhdWx0 IHRvb2xidG5fc2F2ZV9wZXJtaXNzaW9ucz0KIHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1dHRv biI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtZmxvcHB5LW8iPjwvc3Bhbj4gU2F2PQplPC9zcGFuPjwv YnV0dG9uPicpO2UucHVzaCgiPC9kaXY+Iik7ZS5wdXNoKCI8L2Rpdj4iKTtyZXR1cm4gXy50ZW1w bGF0ZShlLmo9Cm9pbigiIikpfX0pO3JldHVybntGb2xkZXJWaWV3OmJ9fSk7ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQoKZGlmZiAtciA0OWQ1MGJjZTQ2MzIwNmY0NDUwNjNkMmIyN2IyZjJi MzkzYWRiZTExIC1yIDFjY2Y0MGJkYWZhMTg0YjNiZTMxYWE3PQpiMWVjZGZjZTNiYzcwNWVmYiBz dGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL2xpYnJhcnkvbGlicmFyeS1mb2xkZXJ0b29sYmFyLXY9 Cmlldy5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL2xpYnJhcnkvbGlicmFyeS1m b2xkZXJ0b29sYmFyLXZpZXcuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9saWJy YXJ5L2xpYnJhcnktZm9sZGVydG9vbGJhci12aWV3LmpzCkBAIC0xLDEgKzEsMSBAQAotZGVmaW5l KFsiZ2FsYXh5Lm1hc3RoZWFkIiwidXRpbHMvdXRpbHMiLCJsaWJzL3RvYXN0ciIsIm12Yy9saWJy YXJ5L2xpYnJhcnk9Ci1tb2RlbCIsIm12Yy91aS91aS1zZWxlY3QiXSxmdW5jdGlvbihjLGUsZixk LGEpe3ZhciBiPTNEQmFja2JvbmUuVmlldy5leHRlbj0KZCh7ZWw6IiNjZW50ZXIiLGV2ZW50czp7 ImNsaWNrICN0b29sYnRuX2NyZWF0ZV9mb2xkZXIiOiJjcmVhdGVGb2xkZXJGcm9tTW9kPQphbCIs ImNsaWNrICN0b29sYnRuX2J1bGtfaW1wb3J0IjoibW9kYWxCdWxrSW1wb3J0IiwiY2xpY2sgI2lu Y2x1ZGVfZGVsZXRlZF89CmRhdGFzZXRzX2NoayI6ImNoZWNrSW5jbHVkZURlbGV0ZWQiLCJjbGlj ayAjdG9vbGJ0bl9zaG93X2xpYmluZm8iOiJzaG93TGliST0KbmZvIiwiY2xpY2sgI3Rvb2xidG5f YnVsa19kZWxldGUiOiJkZWxldGVTZWxlY3RlZERhdGFzZXRzIiwiY2xpY2sgI3BhZ2Vfc2l6PQpl X3Byb21wdCI6InNob3dQYWdlU2l6ZVByb21wdCJ9LGRlZmF1bHRzOntjYW5fYWRkX2xpYnJhcnlf aXRlbTpmYWxzZSxjb250YWk9Cm5zX2ZpbGU6ZmFsc2UsY2hhaW5fY2FsbF9jb250cm9sOnt0b3Rh bF9udW1iZXI6MCxmYWlsZWRfbnVtYmVyOjB9LGRpc2FibGVkXz0KanN0cmVlX2VsZW1lbnQ6ImZv bGRlcnMifSxtb2RhbDpudWxsLGpzdHJlZTpudWxsLGhpc3RvcmllczpudWxsLHNlbGVjdF9nZW5v PQptZTpudWxsLHNlbGVjdF9leHRlbnNpb246bnVsbCxsaXN0X2V4dGVuc2lvbnM6W10sYXV0bzp7 aWQ6ImF1dG8iLHRleHQ6IkF1dG89Ci1kZXRlY3QiLGRlc2NyaXB0aW9uOiJUaGlzIHN5c3RlbSB3 aWxsIHRyeSB0byBkZXRlY3QgdGhlIGZpbGUgdHlwZSBhdXRvbWF0aT0KY2FsbHkuIElmIHlvdXIg ZmlsZSBpcyBub3QgZGV0ZWN0ZWQgcHJvcGVybHkgYXMgb25lIG9mIHRoZSBrbm93biBmb3JtYXRz LCBpPQp0IG1vc3QgbGlrZWx5IG1lYW5zIHRoYXQgaXQgaGFzIHNvbWUgZm9ybWF0IHByb2JsZW1z IChlLmcuLCBkaWZmZXJlbnQgbnVtYmU9CnIgb2YgY29sdW1ucyBvbiBkaWZmZXJlbnQgcm93cyku IFlvdSBjYW4gc3RpbGwgY29lcmNlIHRoZSBzeXN0ZW0gdG8gc2V0IHlvdT0KciBkYXRhIHRvIHRo ZSBmb3JtYXQgeW91IHRoaW5rIGl0IHNob3VsZCBiZS4gWW91IGNhbiBhbHNvIHVwbG9hZCBjb21w cmVzc2VkPQogZmlsZXMsIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseSBiZSBkZWNvbXByZXNzZWQu In0sbGlzdF9nZW5vbWVzOltdLGluaXRpYWw9Cml6ZTpmdW5jdGlvbihnKXt0aGlzLm9wdGlvbnM9 M0RfLmRlZmF1bHRzKGd8fHt9LHRoaXMuZGVmYXVsdHMpO3RoaXMuZmV0Y2hFeD0KdEFuZEdlbm9t ZXMoKTt0aGlzLnJlbmRlcigpfSxyZW5kZXI6ZnVuY3Rpb24oZyl7dGhpcy5vcHRpb25zPTNEXy5l eHRlbmQodGhpPQpzLm9wdGlvbnMsZyk7dmFyIGk9M0R0aGlzLnRlbXBsYXRlVG9vbEJhcigpO3Zh ciBoPTNEe2lkOnRoaXMub3B0aW9ucy5pZCxpc189CmFkbWluOmZhbHNlLGlzX2Fub255bTp0cnVl LG11dGlwbGVfYWRkX2RhdGFzZXRfb3B0aW9uczpmYWxzZX07aWYoR2FsYXh5LmN1cj0KclVzZXIp e2guaXNfYWRtaW49M0RHYWxheHkuY3VyclVzZXIuaXNBZG1pbigpO2guaXNfYW5vbnltPTNER2Fs YXh5LmN1cnJVc2VyPQouaXNBbm9ueW1vdXMoKTtpZihHYWxheHkuY29uZmlnLnVzZXJfbGlicmFy eV9pbXBvcnRfZGlyIT0zRD0zRG51bGx8fEdhbGF4eS49CmNvbmZpZy5hbGxvd19saWJyYXJ5X3Bh dGhfcGFzdGUhPTNEPTNEZmFsc2V8fEdhbGF4eS5jb25maWcubGlicmFyeV9pbXBvcnRfZD0KaXIh PTNEPTNEbnVsbCl7aC5tdXRpcGxlX2FkZF9kYXRhc2V0X29wdGlvbnM9M0R0cnVlfX10aGlzLiRl bC5odG1sKGkoaCkpfSxyPQplbmRlclBhZ2luYXRvcjpmdW5jdGlvbihoKXt0aGlzLm9wdGlvbnM9 M0RfLmV4dGVuZCh0aGlzLm9wdGlvbnMsaCk7dmFyIGc9M0Q9CnRoaXMudGVtcGxhdGVQYWdpbmF0 b3IoKTt0aGlzLiRlbC5maW5kKCIjZm9sZGVyX3BhZ2luYXRvciIpLmh0bWwoZyh7aWQ6dGhpcz0K Lm9wdGlvbnMuaWQsc2hvd19wYWdlOnBhcnNlSW50KHRoaXMub3B0aW9ucy5zaG93X3BhZ2UpLHBh Z2VfY291bnQ6cGFyc2VJbnQoPQp0aGlzLm9wdGlvbnMucGFnZV9jb3VudCksdG90YWxfaXRlbXNf Y291bnQ6dGhpcy5vcHRpb25zLnRvdGFsX2l0ZW1zX2NvdW50LGk9CnRlbXNfc2hvd246dGhpcy5v cHRpb25zLml0ZW1zX3Nob3dufSkpfSxjb25maWd1cmVFbGVtZW50czpmdW5jdGlvbihnKXt0aGlz Lj0Kb3B0aW9ucz0zRF8uZXh0ZW5kKHRoaXMub3B0aW9ucyxnKTtpZih0aGlzLm9wdGlvbnMuY2Fu X2FkZF9saWJyYXJ5X2l0ZW09M0Q9Cj0zRD0zRHRydWUpeyQoIi5hZGQtbGlicmFyeS1pdGVtcyIp LnNob3coKX1lbHNleyQoIi5hZGQtbGlicmFyeS1pdGVtcyIpLmhpZD0KZSgpfWlmKHRoaXMub3B0 aW9ucy5jb250YWluc19maWxlPTNEPTNEPTNEdHJ1ZSl7aWYoR2FsYXh5LmN1cnJVc2VyKXtpZigh R2FsPQpheHkuY3VyclVzZXIuaXNBbm9ueW1vdXMoKSl7JCgiLmxvZ2dlZC1kYXRhc2V0LW1hbmlw dWxhdGlvbiIpLnNob3coKTskKCIuZGE9CnRhc2V0LW1hbmlwdWxhdGlvbiIpLnNob3coKX1lbHNl eyQoIi5kYXRhc2V0LW1hbmlwdWxhdGlvbiIpLnNob3coKTskKCIubG9nZz0KZWQtZGF0YXNldC1t YW5pcHVsYXRpb24iKS5oaWRlKCl9fWVsc2V7JCgiLmxvZ2dlZC1kYXRhc2V0LW1hbmlwdWxhdGlv biIpLmhpPQpkZSgpOyQoIi5kYXRhc2V0LW1hbmlwdWxhdGlvbiIpLmhpZGUoKX19ZWxzZXskKCIu bG9nZ2VkLWRhdGFzZXQtbWFuaXB1bGF0aW89Cm4iKS5oaWRlKCk7JCgiLmRhdGFzZXQtbWFuaXB1 bGF0aW9uIikuaGlkZSgpfXRoaXMuJGVsLmZpbmQoIltkYXRhLXRvZ2dsZV0iKT0KLnRvb2x0aXAo KX0sY3JlYXRlRm9sZGVyRnJvbU1vZGFsOmZ1bmN0aW9uKGkpe2kucHJldmVudERlZmF1bHQoKTtp LnN0b3BQcm9wPQphZ2F0aW9uKCk7dmFyIGc9M0R0aGlzO3ZhciBoPTNEdGhpcy50ZW1wbGF0ZU5l d0ZvbGRlckluTW9kYWwoKTt0aGlzLm1vZGFsPQo9M0RHYWxheHkubW9kYWw7dGhpcy5tb2RhbC5z aG93KHtjbG9zaW5nX2V2ZW50czp0cnVlLHRpdGxlOiJDcmVhdGUgTmV3IEZvbGQ9CmVyIixib2R5 OmgoKSxidXR0b25zOntDcmVhdGU6ZnVuY3Rpb24oKXtnLmNyZWF0ZV9uZXdfZm9sZGVyX2V2ZW50 KCl9LENsb3NlOj0KZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlkZSgpfX19KX0sY3JlYXRlX25l d19mb2xkZXJfZXZlbnQ6ZnVuY3Rpb24oKXt2YXIgPQpnPTNEdGhpcy5zZXJpYWxpemVfbmV3X2Zv bGRlcigpO2lmKHRoaXMudmFsaWRhdGVfbmV3X2ZvbGRlcihnKSl7dmFyIGg9M0RuZXc9CiBkLkZv bGRlckFzTW9kZWwoKTt1cmxfaXRlbXM9M0RCYWNrYm9uZS5oaXN0b3J5LmZyYWdtZW50LnNwbGl0 KCIvIik7Y3VycmVudD0KX2ZvbGRlcl9pZD0zRHVybF9pdGVtc1t1cmxfaXRlbXMubGVuZ3RoLTFd O2gudXJsPTNEaC51cmxSb290KyIvIitjdXJyZW50X2ZvPQpsZGVyX2lkO2guc2F2ZShnLHtzdWNj ZXNzOmZ1bmN0aW9uKGkpe0dhbGF4eS5tb2RhbC5oaWRlKCk7Zi5zdWNjZXNzKCJGb2xkZXI9CiBj cmVhdGVkLiIpO2kuc2V0KHt0eXBlOiJmb2xkZXIifSk7R2FsYXh5LmxpYnJhcmllcy5mb2xkZXJM aXN0Vmlldy5jb2xsZWN0aT0Kb24uYWRkKGkpfSxlcnJvcjpmdW5jdGlvbihqLGkpe0dhbGF4eS5t b2RhbC5oaWRlKCk7aWYodHlwZW9mIGkucmVzcG9uc2VKU09OPQohPTNEPTNEInVuZGVmaW5lZCIp e2YuZXJyb3IoaS5yZXNwb25zZUpTT04uZXJyX21zZyl9ZWxzZXtmLmVycm9yKCJBbiBlcnJvciA9 Cm9jdXJyZWQuIil9fX0pfWVsc2V7Zi5lcnJvcigiRm9sZGVyJ3MgbmFtZSBpcyBtaXNzaW5nLiIp fXJldHVybiBmYWxzZX0sc2VyaT0KYWxpemVfbmV3X2ZvbGRlcjpmdW5jdGlvbigpe3JldHVybntu YW1lOiQoImlucHV0W25hbWU9M0QnTmFtZSddIikudmFsKCksZGVzPQpjcmlwdGlvbjokKCJpbnB1 dFtuYW1lPTNEJ0Rlc2NyaXB0aW9uJ10iKS52YWwoKX19LHZhbGlkYXRlX25ld19mb2xkZXI6ZnVu Y3Q9CmlvbihnKXtyZXR1cm4gZy5uYW1lIT0zRD0zRCIifSxtb2RhbEJ1bGtJbXBvcnQ6ZnVuY3Rp b24oKXt2YXIgZz0zRCQoIiNmb2xkZT0Kcl90YWJsZSIpLmZpbmQoIjpjaGVja2VkIik7aWYoZy5s ZW5ndGg9M0Q9M0Q9M0QwKXtmLmluZm8oIllvdSBtdXN0IHNlbGVjdCBzPQpvbWUgZGF0YXNldHMg Zmlyc3QuIil9ZWxzZXt0aGlzLnJlZnJlc2hVc2VySGlzdG9yaWVzTGlzdChmdW5jdGlvbihpKXt2 YXIgaD0KPTNEaS50ZW1wbGF0ZUJ1bGtJbXBvcnRJbk1vZGFsKCk7aS5tb2RhbD0zREdhbGF4eS5t b2RhbDtpLm1vZGFsLnNob3coe2Nsb3NpPQpuZ19ldmVudHM6dHJ1ZSx0aXRsZToiSW1wb3J0IGlu dG8gSGlzdG9yeSIsYm9keTpoKHtoaXN0b3JpZXM6aS5oaXN0b3JpZXMubW89CmRlbHN9KSxidXR0 b25zOntJbXBvcnQ6ZnVuY3Rpb24oKXtpLmltcG9ydEFsbEludG9IaXN0b3J5KCl9LENsb3NlOmZ1 bmN0aW9uKD0KKXtHYWxheHkubW9kYWwuaGlkZSgpfX19KX0pfX0scmVmcmVzaFVzZXJIaXN0b3Jp ZXNMaXN0OmZ1bmN0aW9uKGgpe3ZhciBnPTNEPQp0aGlzO3RoaXMuaGlzdG9yaWVzPTNEbmV3IGQu R2FsYXh5SGlzdG9yaWVzKCk7dGhpcy5oaXN0b3JpZXMuZmV0Y2goe3N1Y2Nlc3M9CjpmdW5jdGlv bigpe2goZyl9LGVycm9yOmZ1bmN0aW9uKGosaSl7aWYodHlwZW9mIGkucmVzcG9uc2VKU09OIT0z RD0zRCJ1bmRlZj0KaW5lZCIpe2YuZXJyb3IoaS5yZXNwb25zZUpTT04uZXJyX21zZyl9ZWxzZXtm LmVycm9yKCJBbiBlcnJvciBvY3VycmVkLiIpfX19PQopfSxpbXBvcnRBbGxJbnRvSGlzdG9yeTpm dW5jdGlvbigpe3RoaXMubW9kYWwuZGlzYWJsZUJ1dHRvbigiSW1wb3J0Iik7dmFyIGs9Cj0zRCQo InNlbGVjdFtuYW1lPTNEZGF0YXNldF9pbXBvcnRfYnVsa10gb3B0aW9uOnNlbGVjdGVkIikudmFs KCk7dmFyIG49M0QkKD0KInNlbGVjdFtuYW1lPTNEZGF0YXNldF9pbXBvcnRfYnVsa10gb3B0aW9u OnNlbGVjdGVkIikudGV4dCgpO3RoaXMub3B0aW9ucy5sPQphc3RfdXNlZF9oaXN0b3J5X2lkPTNE azt2YXIgaD0zRFtdOyQoIiNmb2xkZXJfdGFibGUiKS5maW5kKCI6Y2hlY2tlZCIpLmVhY2g9Cihm dW5jdGlvbigpe2lmKHRoaXMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmlkIT0zRD0zRCIi KXtoLnB1c2godGhpcy5wYT0KcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5pZCl9fSk7dmFyIG09 M0RbXTtmb3IodmFyIGo9M0RoLmxlbmd0aC0xO2o+PTNEMDtqPQotLSl7dmFyIGc9M0RoW2pdO3Zh ciBsPTNEbmV3IGQuSGlzdG9yeUl0ZW0oKTtsLnVybD0zRGwudXJsUm9vdCtrKyIvY29udGVudHM9 CiI7bC5jb250ZW50PTNEZztsLnNvdXJjZT0zRCJsaWJyYXJ5IjttLnB1c2gobCl9dGhpcy5pbml0 Q2hhaW5DYWxsQ29udHJvbCh7bD0KZW5ndGg6bS5sZW5ndGgsYWN0aW9uOiJ0b19oaXN0b3J5Iixo aXN0b3J5X25hbWU6bn0pO2pRdWVyeS5nZXRKU09OKGdhbGF4eV9jPQpvbmZpZy5yb290KyJoaXN0 b3J5L3NldF9hc19jdXJyZW50P2lkPTNEIitrKTt0aGlzLmNoYWluQ2FsbEltcG9ydGluZ0ludG9I aXM9CnRvcnkobSxuKX0sdXBkYXRlUHJvZ3Jlc3M6ZnVuY3Rpb24oKXt0aGlzLnByb2dyZXNzKz0z RHRoaXMucHJvZ3Jlc3NTdGVwOyQoIj0KLnByb2dyZXNzLWJhci1pbXBvcnQiKS53aWR0aChNYXRo LnJvdW5kKHRoaXMucHJvZ3Jlc3MpKyIlIik7dHh0X3JlcHJlc2VudGF0PQppb249M0RNYXRoLnJv dW5kKHRoaXMucHJvZ3Jlc3MpKyIlIENvbXBsZXRlIjskKCIuY29tcGxldGlvbl9zcGFuIikudGV4 dCh0eHQ9Cl9yZXByZXNlbnRhdGlvbil9LGRvd25sb2FkOmZ1bmN0aW9uKGcsayl7dmFyIGk9M0Rb XTskKCIjZm9sZGVyX3RhYmxlIikuZmluZD0KKCI6Y2hlY2tlZCIpLmVhY2goZnVuY3Rpb24oKXtp Zih0aGlzLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5pZCE9M0Q9M0QiPQoiKXtpLnB1c2go dGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuaWQpfX0pO3ZhciBoPTNEIi9hcGkvbGli cmFyaWVzL2Q9CmF0YXNldHMvZG93bmxvYWQvIitrO3ZhciBqPTNEe2xkX2lkczppfTt0aGlzLnBy b2Nlc3NEb3dubG9hZChoLGosImdldCIpfSxwcj0Kb2Nlc3NEb3dubG9hZDpmdW5jdGlvbihoLGks ail7aWYoaCYmaSl7aT0zRHR5cGVvZiBpPTNEPTNEPTNEInN0cmluZyI/aTokLnBhPQpyYW0oaSk7 dmFyIGc9M0QiIjskLmVhY2goaS5zcGxpdCgiJiIpLGZ1bmN0aW9uKCl7dmFyIGs9M0R0aGlzLnNw bGl0KCI9M0QiKTs9CmcrPTNEJzxpbnB1dCB0eXBlPTNEImhpZGRlbiIgbmFtZT0zRCInK2tbMF0r JyIgdmFsdWU9M0QiJytrWzFdKyciIC8+J30pOyQoJz0KPGZvcm0gYWN0aW9uPTNEIicraCsnIiBt ZXRob2Q9M0QiJysoanx8InBvc3QiKSsnIj4nK2crIjwvZm9ybT4iKS5hcHBlbmRUbygiPQpib2R5 Iikuc3VibWl0KCkucmVtb3ZlKCk7Zi5pbmZvKCJZb3VyIGRvd25sb2FkIHdpbGwgYmVnaW4gc29v bi4iKX1lbHNle2YuZXI9CnJvcigiQW4gZXJyb3Igb2NjdXJyZWQuIil9fSxhZGRGaWxlc0Zyb21I aXN0b3J5TW9kYWw6ZnVuY3Rpb24oKXt0aGlzLnJlZnJlcz0KaFVzZXJIaXN0b3JpZXNMaXN0KGZ1 bmN0aW9uKGcpe2cubW9kYWw9M0RHYWxheHkubW9kYWw7dmFyIGg9M0RnLnRlbXBsYXRlQWRkPQpG aWxlc0Zyb21IaXN0b3J5KCk7dmFyIGk9M0RnLm9wdGlvbnMuZnVsbF9wYXRoW2cub3B0aW9ucy5m dWxsX3BhdGgubGVuZ3RoLTE9Cl1bMV07Zy5tb2RhbC5zaG93KHtjbG9zaW5nX2V2ZW50czp0cnVl LHRpdGxlOiJBZGRpbmcgZGF0YXNldHMgZnJvbSB5b3VyIGhpcz0KdG9yeSB0byBmb2xkZXIgIitp LGJvZHk6aCh7aGlzdG9yaWVzOmcuaGlzdG9yaWVzLm1vZGVsc30pLGJ1dHRvbnM6e0FkZDpmdW5j PQp0aW9uKCl7Zy5hZGRBbGxEYXRhc2V0c0Zyb21IaXN0b3J5KCl9LENsb3NlOmZ1bmN0aW9uKCl7 R2FsYXh5Lm1vZGFsLmhpZGUoKX09Cn0sY2xvc2luZ19jYWxsYmFjazpmdW5jdGlvbigpe0dhbGF4 eS5saWJyYXJpZXMubGlicmFyeV9yb3V0ZXIuYmFjaygpfX0pO2lmKD0KZy5oaXN0b3JpZXMubW9k ZWxzLmxlbmd0aD4wKXtnLmZldGNoQW5kRGlzcGxheUhpc3RvcnlDb250ZW50cyhnLmhpc3Rvcmll cy5tPQpvZGVsc1swXS5pZCk7JCgiI2RhdGFzZXRfYWRkX2J1bGsiKS5jaGFuZ2UoZnVuY3Rpb24o ail7Zy5mZXRjaEFuZERpc3BsYXlIaXM9CnRvcnlDb250ZW50cyhqLnRhcmdldC52YWx1ZSl9KX1l bHNle2YuZXJyb3IoIkFuIGVycm9yIG9jdXJyZWQuIil9fSl9LGltcG9ydD0KRmlsZXNGcm9tUGF0 aE1vZGFsOmZ1bmN0aW9uKCl7dmFyIGg9M0R0aGlzO3RoaXMubW9kYWw9M0RHYWxheHkubW9kYWw7 dmFyIGc9Cj0zRHRoaXMudGVtcGxhdGVJbXBvcnRQYXRoTW9kYWwoKTt0aGlzLm1vZGFsLnNob3co e2Nsb3NpbmdfZXZlbnRzOnRydWUsdGl0bD0KZToiUGxlYXNlIGVudGVyIHBhdGhzIHRvIGltcG9y dCIsYm9keTpnKHt9KSxidXR0b25zOntJbXBvcnQ6ZnVuY3Rpb24oKXtoLmltPQpwb3J0RnJvbVBh dGhzQ2xpY2tlZChoKX0sQ2xvc2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlkZSgpfX0sY2xv c2luZ19jYWw9CmxiYWNrOmZ1bmN0aW9uKCl7R2FsYXh5LmxpYnJhcmllcy5saWJyYXJ5X3JvdXRl ci5uYXZpZ2F0ZSgiZm9sZGVycy8iK2guaWQsez0KdHJpZ2dlcjp0cnVlfSl9fSk7dGhpcy5yZW5k ZXJTZWxlY3RCb3hlcygpfSxmZXRjaEV4dEFuZEdlbm9tZXM6ZnVuY3Rpb24oKXt2PQphciBnPTNE dGhpcztlLmdldCh7dXJsOmdhbGF4eV9jb25maWcucm9vdCsiYXBpL2RhdGF0eXBlcz9leHRlbnNp b25fb25seT0zREY9CmFsc2UiLHN1Y2Nlc3M6ZnVuY3Rpb24oaCl7Zm9yKGtleSBpbiBoKXtnLmxp c3RfZXh0ZW5zaW9ucy5wdXNoKHtpZDpoW2tleV0uZT0KeHRlbnNpb24sdGV4dDpoW2tleV0uZXh0 ZW5zaW9uLGRlc2NyaXB0aW9uOmhba2V5XS5kZXNjcmlwdGlvbixkZXNjcmlwdGlvbl91PQpybDpo W2tleV0uZGVzY3JpcHRpb25fdXJsfSl9Zy5saXN0X2V4dGVuc2lvbnMuc29ydChmdW5jdGlvbihq LGkpe3JldHVybiBqLmk9CmQ+aS5pZD8xOmouaWQ8aS5pZD8tMTowfSk7Zy5saXN0X2V4dGVuc2lv bnMudW5zaGlmdChnLmF1dG8pfX0pO2UuZ2V0KHt1cmw6Zz0KYWxheHlfY29uZmlnLnJvb3QrImFw aS9nZW5vbWVzIixzdWNjZXNzOmZ1bmN0aW9uKGgpe2ZvcihrZXkgaW4gaCl7Zy5saXN0X2dlPQpu b21lcy5wdXNoKHtpZDpoW2tleV1bMV0sdGV4dDpoW2tleV1bMF19KX1nLmxpc3RfZ2Vub21lcy5z b3J0KGZ1bmN0aW9uKGosaSk9CntyZXR1cm4gai5pZD5pLmlkPzE6ai5pZDxpLmlkPy0xOjB9KX19 KX0scmVuZGVyU2VsZWN0Qm94ZXM6ZnVuY3Rpb24oKXt2YXIgZz0KPTNEdGhpczt0aGlzLnNlbGVj dF9nZW5vbWU9M0RuZXcgYS5WaWV3KHtjc3M6ImxpYnJhcnktZ2Vub21lLXNlbGVjdCIsZGF0YTpn PQoubGlzdF9nZW5vbWVzLGNvbnRhaW5lcjpHYWxheHkubW9kYWwuJGVsLmZpbmQoIiNsaWJyYXJ5 X2dlbm9tZV9zZWxlY3QiKSx2YWw9CnVlOiI/In0pO3RoaXMuc2VsZWN0X2V4dGVuc2lvbj0zRG5l dyBhLlZpZXcoe2NzczoibGlicmFyeS1leHRlbnNpb24tc2VsZWN0Ij0KLGRhdGE6Zy5saXN0X2V4 dGVuc2lvbnMsY29udGFpbmVyOkdhbGF4eS5tb2RhbC4kZWwuZmluZCgiI2xpYnJhcnlfZXh0ZW5z aW9uPQpfc2VsZWN0IiksdmFsdWU6ImF1dG8ifSl9LGltcG9ydEZpbGVzRnJvbUdhbGF4eUZvbGRl ck1vZGFsOmZ1bmN0aW9uKGcpe3ZhciA9Cmk9M0R0aGlzO3ZhciBoPTNEdGhpcy50ZW1wbGF0ZUJy b3dzZXJNb2RhbCgpO3RoaXMubW9kYWw9M0RHYWxheHkubW9kYWw7dGhpcz0KLm1vZGFsLnNob3co e2Nsb3NpbmdfZXZlbnRzOnRydWUsdGl0bGU6IlBsZWFzZSBzZWxlY3QgZm9sZGVycyBvciBmaWxl cyIsYm9kPQp5Omgoe30pLGJ1dHRvbnM6e0ltcG9ydDpmdW5jdGlvbigpe2kuaW1wb3J0RnJvbUpz dHJlZVBhdGgoaSxnKX0sQ2xvc2U6ZnVuY3Q9Cmlvbigpe0dhbGF4eS5tb2RhbC5oaWRlKCl9fSxj bG9zaW5nX2NhbGxiYWNrOmZ1bmN0aW9uKCl7R2FsYXh5LmxpYnJhcmllcy5saT0KYnJhcnlfcm91 dGVyLm5hdmlnYXRlKCJmb2xkZXJzLyIraS5pZCx7dHJpZ2dlcjp0cnVlfSl9fSk7dGhpcy5yZW5k ZXJTZWxlY3RCPQpveGVzKCk7Zy5kaXNhYmxlZF9qc3RyZWVfZWxlbWVudD0zRCJmb2xkZXJzIjt0 aGlzLnJlbmRlckpzdHJlZShnKTskKCJpbnB1dFs9CnR5cGU9M0RyYWRpb10iKS5jaGFuZ2UoZnVu Y3Rpb24oail7aWYoai50YXJnZXQudmFsdWU9M0Q9M0Q9M0QianN0cmVlLWRpc2FibD0KZS1mb2xk ZXJzIil7Zy5kaXNhYmxlZF9qc3RyZWVfZWxlbWVudD0zRCJmb2xkZXJzIjtpLnJlbmRlckpzdHJl ZShnKTskKCIuanN0PQpyZWUtZm9sZGVycy1tZXNzYWdlIikuaGlkZSgpOyQoIi5qc3RyZWUtcHJl c2VydmUtc3RydWN0dXJlIikuaGlkZSgpOyQoIi5qc3Q9CnJlZS1saW5rLWZpbGVzIikuaGlkZSgp OyQoIi5qc3RyZWUtZmlsZXMtbWVzc2FnZSIpLnNob3coKX1lbHNle2lmKGoudGFyZ2V0Lj0KdmFs dWU9M0Q9M0Q9M0QianN0cmVlLWRpc2FibGUtZmlsZXMiKXskKCIuanN0cmVlLWZpbGVzLW1lc3Nh Z2UiKS5oaWRlKCk7JCgiPQouanN0cmVlLWZvbGRlcnMtbWVzc2FnZSIpLnNob3coKTskKCIuanN0 cmVlLWxpbmstZmlsZXMiKS5zaG93KCk7JCgiLmpzdHJlZS09CnByZXNlcnZlLXN0cnVjdHVyZSIp LnNob3coKTtnLmRpc2FibGVkX2pzdHJlZV9lbGVtZW50PTNEImZpbGVzIjtpLnJlbmRlckpzdD0K cmVlKGcpfX19KX0scmVuZGVySnN0cmVlOmZ1bmN0aW9uKGcpe3ZhciBpPTNEdGhpczt0aGlzLm9w dGlvbnM9M0RfLmV4dGVuZCh0PQpoaXMub3B0aW9ucyxnKTt2YXIgaj0zRGcuc291cmNlfHwidXNl cmRpciI7dmFyIGg9M0R0aGlzLm9wdGlvbnMuZGlzYWJsZWRfanM9CnRyZWVfZWxlbWVudDt0aGlz LmpzdHJlZT0zRG5ldyBkLkpzdHJlZSgpO3RoaXMuanN0cmVlLnVybD0zRHRoaXMuanN0cmVlLnVy bD0KUm9vdCsiP3RhcmdldD0zRCIraisiJmZvcm1hdD0zRGpzdHJlZSZkaXNhYmxlPTNEIitoO3Ro aXMuanN0cmVlLmZldGNoKHtzdWNjPQplc3M6ZnVuY3Rpb24obCxrKXtkZWZpbmUoImpxdWVyeSIs ZnVuY3Rpb24oKXtyZXR1cm4galF1ZXJ5fSk7cmVxdWlyZShbImxpYnM9Ci9qcXVlcnkvanN0cmVl Il0sZnVuY3Rpb24obSl7JCgiI2pzdHJlZV9icm93c2VyIikuanN0cmVlKCJkZXN0cm95Iik7JCgi I2pzdD0KcmVlX2Jyb3dzZXIiKS5qc3RyZWUoe2NvcmU6e2RhdGE6bH0scGx1Z2luczpbInR5cGVz IiwiY2hlY2tib3giXSx0eXBlczp7Zm9sPQpkZXI6e2ljb246ImpzdHJlZS1mb2xkZXIifSxmaWxl OntpY29uOiJqc3RyZWUtZmlsZSJ9fSxjaGVja2JveDp7dGhyZWVfc3RhdGU9CjpmYWxzZX19KX0p fSxlcnJvcjpmdW5jdGlvbihsLGspe2lmKHR5cGVvZiBrLnJlc3BvbnNlSlNPTiE9M0Q9M0QidW5k ZWZpbmVkIj0KKXtmLmVycm9yKGsucmVzcG9uc2VKU09OLmVycl9tc2cpfWVsc2V7Zi5lcnJvcigi QW4gZXJyb3Igb2N1cnJlZC4iKX19fSl9LGltPQpwb3J0RnJvbVBhdGhzQ2xpY2tlZDpmdW5jdGlv bigpe3ZhciBnPTNEdGhpcy5tb2RhbC4kZWwuZmluZCgiLnByZXNlcnZlLWNoZWM9Cmtib3giKS5p cygiOmNoZWNrZWQiKTt2YXIgbj0zRHRoaXMubW9kYWwuJGVsLmZpbmQoIi5saW5rLWNoZWNrYm94 IikuaXMoIjpjaD0KZWNrZWQiKTt2YXIgaD0zRHRoaXMuc2VsZWN0X2V4dGVuc2lvbi52YWx1ZSgp O3ZhciBqPTNEdGhpcy5zZWxlY3RfZ2Vub21lLnZhPQpsdWUoKTt2YXIgbT0zRCQoInRleHRhcmVh I2ltcG9ydF9wYXRocyIpLnZhbCgpO3ZhciBsPTNEW107aWYoIW0pe2YuaW5mbygiUGw9CmVhc2Ug ZW50ZXIgYSBwYXRoIHJlbGF0aXZlIHRvIEdhbGF4eSByb290LiIpfWVsc2V7dGhpcy5tb2RhbC5k aXNhYmxlQnV0dG9uKD0KIkltcG9ydCIpO209M0RtLnNwbGl0KCJcbiIpO2Zvcih2YXIgaz0zRG0u bGVuZ3RoLTE7az49M0QwO2stLSl7dHJpbW1lZD0zRG1bPQprXS50cmltKCk7aWYodHJpbW1lZC5s ZW5ndGghPTNEPTNEMCl7bC5wdXNoKHRyaW1tZWQpfX10aGlzLmluaXRDaGFpbkNhbGxDb249CnRy b2woe2xlbmd0aDpsLmxlbmd0aCxhY3Rpb246ImFkZGluZ19kYXRhc2V0cyJ9KTt0aGlzLmNoYWlu Q2FsbEltcG9ydGluZ0ZvbD0KZGVycyh7cGF0aHM6bCxwcmVzZXJ2ZV9kaXJzOmcsbGlua19kYXRh Om4sc291cmNlOiJhZG1pbl9wYXRoIixmaWxlX3R5cGU6aCxkPQpia2V5Omp9KX19LGluaXRDaGFp bkNhbGxDb250cm9sOmZ1bmN0aW9uKGcpe3ZhciBoO3N3aXRjaChnLmFjdGlvbil7Y2FzZSJhZGQ9 CmluZ19kYXRhc2V0cyI6aD0zRHRoaXMudGVtcGxhdGVBZGRpbmdEYXRhc2V0c1Byb2dyZXNzQmFy KCk7dGhpcy5tb2RhbC4kZWwuZj0KaW5kKCIubW9kYWwtYm9keSIpLmh0bWwoaCh7Zm9sZGVyX25h bWU6dGhpcy5vcHRpb25zLmZvbGRlcl9uYW1lfSkpO2JyZWFrO2NhPQpzZSJkZWxldGluZ19kYXRh c2V0cyI6aD0zRHRoaXMudGVtcGxhdGVEZWxldGluZ0RhdGFzZXRzUHJvZ3Jlc3NCYXIoKTt0aGlz Lm09Cm9kYWwuJGVsLmZpbmQoIi5tb2RhbC1ib2R5IikuaHRtbChoKCkpO2JyZWFrO2Nhc2UidG9f aGlzdG9yeSI6aD0zRHRoaXMudGVtcD0KbGF0ZUltcG9ydEludG9IaXN0b3J5UHJvZ3Jlc3NCYXIo KTt0aGlzLm1vZGFsLiRlbC5maW5kKCIubW9kYWwtYm9keSIpLmh0bWwoPQpoKHtoaXN0b3J5X25h bWU6Zy5oaXN0b3J5X25hbWV9KSk7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLmVycm9yKCJXcm9uZyBh Y3Rpb249CiBzcGVjaWZpZWQuIik7YnJlYWt9dGhpcy5wcm9ncmVzcz0zRDA7dGhpcy5wcm9ncmVz c1N0ZXA9M0QxMDAvZy5sZW5ndGg7dGhpcz0KLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRv dGFsX251bWJlcj0zRGcubGVuZ3RoO3RoaXMub3B0aW9ucy5jaGFpbl9jYWxsPQpfY29udHJvbC5m YWlsZWRfbnVtYmVyPTNEMH0saW1wb3J0RnJvbUpzdHJlZVBhdGg6ZnVuY3Rpb24obixyKXt2YXIg Zz0zRCQoIiM9CmpzdHJlZV9icm93c2VyIikuanN0cmVlKCkuZ2V0X3NlbGVjdGVkKHRydWUpO3Zh ciBtPTNEdGhpcy5tb2RhbC4kZWwuZmluZCgiLj0KcHJlc2VydmUtY2hlY2tib3giKS5pcygiOmNo ZWNrZWQiKTt2YXIgbz0zRHRoaXMubW9kYWwuJGVsLmZpbmQoIi5saW5rLWNoZWNrPQpib3giKS5p cygiOmNoZWNrZWQiKTt2YXIgaj0zRHRoaXMuc2VsZWN0X2V4dGVuc2lvbi52YWx1ZSgpO3ZhciBw PTNEdGhpcy5zZWw9CmVjdF9nZW5vbWUudmFsdWUoKTt2YXIgaz0zRGdbMF0udHlwZTt2YXIgcT0z RFtdO2lmKGcubGVuZ3RoPDEpe2YuaW5mbygiUGxlYT0Kc2Ugc2VsZWN0IHNvbWUgaXRlbXMgZmly c3QuIil9ZWxzZXt0aGlzLm1vZGFsLmRpc2FibGVCdXR0b24oIkltcG9ydCIpO2Zvcih2PQphciBs PTNEZy5sZW5ndGgtMTtsPj0zRDA7bC0tKXtpZihnW2xdLmxpX2F0dHIuZnVsbF9wYXRoIT0zRD0z RHVuZGVmaW5lZCl7cS49CnB1c2goZ1tsXS5saV9hdHRyLmZ1bGxfcGF0aCl9fXRoaXMuaW5pdENo YWluQ2FsbENvbnRyb2woe2xlbmd0aDpxLmxlbmd0aCxhYz0KdGlvbjoiYWRkaW5nX2RhdGFzZXRz In0pO2lmKGs9M0Q9M0Q9M0QiZm9sZGVyIil7dmFyIGg9M0RyLnNvdXJjZSsiX2ZvbGRlciI7PQp0 aGlzLmNoYWluQ2FsbEltcG9ydGluZ0ZvbGRlcnMoe3BhdGhzOnEscHJlc2VydmVfZGlyczptLGxp bmtfZGF0YTpvLHNvdXJjZTo9CmgsZmlsZV90eXBlOmosZGJrZXk6cH0pfWVsc2V7aWYoaz0zRD0z RD0zRCJmaWxlIil7dmFyIGg9M0RyLnNvdXJjZSsiX2ZpbGUiOz0KdGhpcy5jaGFpbkNhbGxJbXBv cnRpbmdVc2VyZGlyRmlsZXMoe3BhdGhzOnEsZmlsZV90eXBlOmosZGJrZXk6cCxzb3VyY2U6aH0p PQp9fX19LGZldGNoQW5kRGlzcGxheUhpc3RvcnlDb250ZW50czpmdW5jdGlvbihpKXt2YXIgaD0z RG5ldyBkLkhpc3RvcnlDb250ZW49CnRzKHtpZDppfSk7dmFyIGc9M0R0aGlzO2guZmV0Y2goe3N1 Y2Nlc3M6ZnVuY3Rpb24oayl7dmFyIGo9M0RnLnRlbXBsYXRlSGlzdD0Kb3J5Q29udGVudHMoKTtn Lmhpc3Rvcmllcy5nZXQoaSkuc2V0KHtjb250ZW50czprfSk7Zy5tb2RhbC4kZWwuZmluZCgiI3Nl bGVjPQp0ZWRfaGlzdG9yeV9jb250ZW50IikuaHRtbChqKHtoaXN0b3J5X2NvbnRlbnRzOmsubW9k ZWxzLnJldmVyc2UoKX0pKX0sZXJyb3I9CjpmdW5jdGlvbihrLGope2lmKHR5cGVvZiBqLnJlc3Bv bnNlSlNPTiE9M0Q9M0QidW5kZWZpbmVkIil7Zi5lcnJvcihqLnJlc3Bvbj0Kc2VKU09OLmVycl9t c2cpfWVsc2V7Zi5lcnJvcigiQW4gZXJyb3Igb2N1cnJlZC4iKX19fSl9LGFkZEFsbERhdGFzZXRz RnJvbUhpPQpzdG9yeTpmdW5jdGlvbigpe3ZhciBsPTNEdGhpcy5tb2RhbC4kZWwuZmluZCgiI3Nl bGVjdGVkX2hpc3RvcnlfY29udGVudCIpLmY9CmluZCgiOmNoZWNrZWQiKTt2YXIgZz0zRFtdO3Zh ciBrPTNEW107aWYobC5sZW5ndGg8MSl7Zi5pbmZvKCJZb3UgbXVzdCBzZWxlYz0KdCBzb21lIGRh dGFzZXRzIGZpcnN0LiIpfWVsc2V7dGhpcy5tb2RhbC5kaXNhYmxlQnV0dG9uKCJBZGQiKTtsLmVh Y2goZnVuY3RpPQpvbigpe3ZhciBpPTNEJCh0aGlzLnBhcmVudEVsZW1lbnQpLmRhdGEoImlkIik7 aWYoaSl7Zy5wdXNoKGkpfX0pO2Zvcih2YXIgaj0KPTNEZy5sZW5ndGgtMTtqPj0zRDA7ai0tKXto aXN0b3J5X2RhdGFzZXRfaWQ9M0RnW2pdO3ZhciBoPTNEbmV3IGQuSXRlbSgpO2guPQp1cmw9M0Qi L2FwaS9mb2xkZXJzLyIrdGhpcy5vcHRpb25zLmlkKyIvY29udGVudHMiO2guc2V0KHtmcm9tX2hk YV9pZDpoaXN0b3I9CnlfZGF0YXNldF9pZH0pO2sucHVzaChoKX10aGlzLmluaXRDaGFpbkNhbGxD b250cm9sKHtsZW5ndGg6ay5sZW5ndGgsYWN0aW9uOj0KImFkZGluZ19kYXRhc2V0cyJ9KTt0aGlz LmNoYWluQ2FsbEFkZGluZ0hkYXMoayl9fSxjaGFpbkNhbGxJbXBvcnRpbmdJbnRvSGlzPQp0b3J5 OmZ1bmN0aW9uKGgsayl7dmFyIGc9M0R0aGlzO3ZhciBpPTNEaC5wb3AoKTtpZih0eXBlb2YgaT0z RD0zRCJ1bmRlZmluZWQ9CiIpe2lmKHRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFp bGVkX251bWJlcj0zRD0zRD0zRDApe2Yuc3VjY2VzcygiUz0KZWxlY3RlZCBkYXRhc2V0cyBpbXBv cnRlZCBpbnRvIGhpc3RvcnkuIENsaWNrIHRoaXMgdG8gc3RhcnQgYW5hbHlzaW5nIGl0LiIsPQoi Iix7b25jbGljazpmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbj0zRCIvIn19KX1lbHNle2lmKHRo aXMub3B0aW9ucy5jaGFpbl89CmNhbGxfY29udHJvbC5mYWlsZWRfbnVtYmVyPTNEPTNEPTNEdGhp cy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC50b3RhbF9udT0KbWJlcil7Zi5lcnJvcigiVGhl cmUgd2FzIGFuIGVycm9yIGFuZCBubyBkYXRhc2V0cyB3ZXJlIGltcG9ydGVkIGludG8gaGlzdG9y PQp5LiIpfWVsc2V7aWYodGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC5mYWlsZWRfbnVt YmVyPHRoaXMub3B0aW9ucy5jaGE9CmluX2NhbGxfY29udHJvbC50b3RhbF9udW1iZXIpe2Yud2Fy bmluZygiU29tZSBvZiB0aGUgZGF0YXNldHMgY291bGQgbm90IGJlID0KaW1wb3J0ZWQgaW50byBo aXN0b3J5LiBDbGljayB0aGlzIHRvIHNlZSB3aGF0IHdhcyBpbXBvcnRlZC4iLCIiLHtvbmNsaWNr OmZ1PQpuY3Rpb24oKXt3aW5kb3cubG9jYXRpb249M0QiLyJ9fSl9fX1HYWxheHkubW9kYWwuaGlk ZSgpO3JldHVybiB0cnVlfXZhciBqPQo9M0QkLndoZW4oaS5zYXZlKHtjb250ZW50OmkuY29udGVu dCxzb3VyY2U6aS5zb3VyY2V9KSk7ai5kb25lKGZ1bmN0aW9uKCl7Zy49CnVwZGF0ZVByb2dyZXNz KCk7Zy5jaGFpbkNhbGxJbXBvcnRpbmdJbnRvSGlzdG9yeShoLGspfSkuZmFpbChmdW5jdGlvbigp e2cubz0KcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC5mYWlsZWRfbnVtYmVyKz0zRDE7Zy51cGRh dGVQcm9ncmVzcygpO2cuY2hhaW5DYWxsPQpJbXBvcnRpbmdJbnRvSGlzdG9yeShoLGspfSl9LGNo YWluQ2FsbEltcG9ydGluZ1VzZXJkaXJGaWxlczpmdW5jdGlvbihnKXt2YXI9CiBoPTNEdGhpczt2 YXIgaT0zRGcucGF0aHMucG9wKCk7aWYodHlwZW9mIGk9M0Q9M0Q9M0QidW5kZWZpbmVkIil7aWYo dGhpcy5vcD0KdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI9M0Q9M0Q9M0Qw KXtmLnN1Y2Nlc3MoIlNlbGVjdGVkIGZpbGVzPQogaW1wb3J0ZWQgaW50byB0aGUgY3VycmVudCBm b2xkZXIiKTtHYWxheHkubW9kYWwuaGlkZSgpfWVsc2V7Zi5lcnJvcigiQW4gZXI9CnJvciBvY2N1 cmVkLiIpfXJldHVybiB0cnVlfXZhciBqPTNEJC53aGVuKCQucG9zdCgiL2FwaS9saWJyYXJpZXMv ZGF0YXNldHM/ZT0KbmNvZGVkX2ZvbGRlcl9pZD0zRCIraC5pZCsiJnNvdXJjZT0zRCIrZy5zb3Vy Y2UrIiZwYXRoPTNEIitpKyImZmlsZV90eXBlPTNEPQoiK2cuZmlsZV90eXBlKyImZGJrZXk9M0Qi K2cuZGJrZXkpKTtqLmRvbmUoZnVuY3Rpb24oayl7aC51cGRhdGVQcm9ncmVzcygpO2g9Ci5jaGFp bkNhbGxJbXBvcnRpbmdVc2VyZGlyRmlsZXMoZyl9KS5mYWlsKGZ1bmN0aW9uKCl7aC5vcHRpb25z LmNoYWluX2NhbGxfYz0Kb250cm9sLmZhaWxlZF9udW1iZXIrPTNEMTtoLnVwZGF0ZVByb2dyZXNz KCk7aC5jaGFpbkNhbGxJbXBvcnRpbmdVc2VyZGlyRmlsPQplcyhnKX0pfSxjaGFpbkNhbGxJbXBv cnRpbmdGb2xkZXJzOmZ1bmN0aW9uKGcpe3ZhciBoPTNEdGhpczt2YXIgaT0zRGcucGF0aHM9Ci5w b3AoKTtpZih0eXBlb2YgaT0zRD0zRCJ1bmRlZmluZWQiKXtpZih0aGlzLm9wdGlvbnMuY2hhaW5f Y2FsbF9jb250cm9sLmZhaT0KbGVkX251bWJlcj0zRD0zRD0zRDApe2Yuc3VjY2VzcygiU2VsZWN0 ZWQgZm9sZGVycyBhbmQgdGhlaXIgY29udGVudHMgaW1wb3J0PQplZCBpbnRvIHRoZSBjdXJyZW50 IGZvbGRlci4iKTtHYWxheHkubW9kYWwuaGlkZSgpfWVsc2V7Zi5lcnJvcigiQW4gZXJyb3Igb2M9 CmN1cmVkLiIpfXJldHVybiB0cnVlfXZhciBqPTNEJC53aGVuKCQucG9zdCgiL2FwaS9saWJyYXJp ZXMvZGF0YXNldHM/ZW5jb2RlZD0KX2ZvbGRlcl9pZD0zRCIraC5pZCsiJnNvdXJjZT0zRCIrZy5z b3VyY2UrIiZwYXRoPTNEIitpKyImcHJlc2VydmVfZGlycz0zRCIrPQpnLnByZXNlcnZlX2RpcnMr IiZsaW5rX2RhdGE9M0QiK2cubGlua19kYXRhKyImZmlsZV90eXBlPTNEIitnLmZpbGVfdHlwZSsi JmQ9CmJrZXk9M0QiK2cuZGJrZXkpKTtqLmRvbmUoZnVuY3Rpb24oayl7aC51cGRhdGVQcm9ncmVz cygpO2guY2hhaW5DYWxsSW1wb3J0aT0KbmdGb2xkZXJzKGcpfSkuZmFpbChmdW5jdGlvbigpe2gu b3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcis9Cj0zRDE7aC51cGRhdGVQ cm9ncmVzcygpO2guY2hhaW5DYWxsSW1wb3J0aW5nRm9sZGVycyhnKX0pfSxjaGFpbkNhbGxBZGRp bmdIZD0KYXM6ZnVuY3Rpb24oaCl7dmFyIGc9M0R0aGlzO3RoaXMuYWRkZWRfaGRhcz0zRG5ldyBk LkZvbGRlcigpO3ZhciBpPTNEaC5wb3AoPQopO2lmKHR5cGVvZiBpPTNEPTNEInVuZGVmaW5lZCIp e2lmKHRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX249CnVtYmVyPTNEPTNE PTNEMCl7Zi5zdWNjZXNzKCJTZWxlY3RlZCBkYXRhc2V0cyBmcm9tIGhpc3RvcnkgYWRkZWQgdG8g dGhlIGZvbD0KZGVyIil9ZWxzZXtpZih0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZh aWxlZF9udW1iZXI9M0Q9M0Q9M0R0aGlzLm9wPQp0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wudG90 YWxfbnVtYmVyKXtmLmVycm9yKCJUaGVyZSB3YXMgYW4gZXJyb3IgYW5kIG5vIGQ9CmF0YXNldHMg d2VyZSBhZGRlZCB0byB0aGUgZm9sZGVyLiIpfWVsc2V7aWYodGhpcy5vcHRpb25zLmNoYWluX2Nh bGxfY29udHJvbD0KLmZhaWxlZF9udW1iZXI8dGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJv bC50b3RhbF9udW1iZXIpe2Yud2FybmluZygiU29tPQplIG9mIHRoZSBkYXRhc2V0cyBjb3VsZCBu b3QgYmUgYWRkZWQgdG8gdGhlIGZvbGRlciIpfX19R2FsYXh5Lm1vZGFsLmhpZGUoKTs9CnJldHVy biB0aGlzLmFkZGVkX2hkYXN9dmFyIGo9M0QkLndoZW4oaS5zYXZlKHtmcm9tX2hkYV9pZDppLmdl dCgiZnJvbV9oZGFfaT0KZCIpfSkpO2ouZG9uZShmdW5jdGlvbihrKXtHYWxheHkubGlicmFyaWVz LmZvbGRlckxpc3RWaWV3LmNvbGxlY3Rpb24uYWRkKGspPQo7Zy51cGRhdGVQcm9ncmVzcygpO2cu Y2hhaW5DYWxsQWRkaW5nSGRhcyhoKX0pLmZhaWwoZnVuY3Rpb24oKXtnLm9wdGlvbnMuY2g9CmFp bl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcis9M0QxO2cudXBkYXRlUHJvZ3Jlc3MoKTtnLmNo YWluQ2FsbEFkZGluZ0hkYT0KcyhoKX0pfSxjaGFpbkNhbGxEZWxldGluZ0hkYXM6ZnVuY3Rpb24o aCl7dmFyIGc9M0R0aGlzO3RoaXMuZGVsZXRlZF9sZGRhcz0KPTNEbmV3IGQuRm9sZGVyKCk7dmFy IGk9M0RoLnBvcCgpO2lmKHR5cGVvZiBpPTNEPTNEPTNEInVuZGVmaW5lZCIpe2lmKHRoaXMuPQpv cHRpb25zLmNoYWluX2NhbGxfY29udHJvbC5mYWlsZWRfbnVtYmVyPTNEPTNEPTNEMCl7Zi5zdWNj ZXNzKCJTZWxlY3RlZCBkYXQ9CmFzZXRzIHdlcmUgZGVsZXRlZC4iKX1lbHNle2lmKHRoaXMub3B0 aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcj0KPTNEPTNEPTNEdGhpcy5vcHRp b25zLmNoYWluX2NhbGxfY29udHJvbC50b3RhbF9udW1iZXIpe2YuZXJyb3IoIlRoZXJlIHdhcyBh PQpuIGVycm9yIGFuZCBubyBkYXRhc2V0cyB3ZXJlIGRlbGV0ZWQuIFBsZWFzZSBtYWtlIHN1cmUg eW91IGhhdmUgc3VmZmljaWVudCA9CnBlcm1pc3Npb25zLiIpfWVsc2V7aWYodGhpcy5vcHRpb25z LmNoYWluX2NhbGxfY29udHJvbC5mYWlsZWRfbnVtYmVyPHRoaXMubz0KcHRpb25zLmNoYWluX2Nh bGxfY29udHJvbC50b3RhbF9udW1iZXIpe2Yud2FybmluZygiU29tZSBvZiB0aGUgZGF0YXNldHMg Y291PQpsZCBub3QgYmUgZGVsZXRlZC4gUGxlYXNlIG1ha2Ugc3VyZSB5b3UgaGF2ZSBzdWZmaWNp ZW50IHBlcm1pc3Npb25zLiIpfX19R2E9CmxheHkubW9kYWwuaGlkZSgpO3JldHVybiB0aGlzLmRl bGV0ZWRfbGRkYXN9dmFyIGo9M0QkLndoZW4oaS5kZXN0cm95KCkpO2ouZD0Kb25lKGZ1bmN0aW9u KGwpe0dhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzdFZpZXcuY29sbGVjdGlvbi5yZW1vdmUoaS5p ZCk7Zy51PQpwZGF0ZVByb2dyZXNzKCk7aWYoR2FsYXh5LmxpYnJhcmllcy5mb2xkZXJMaXN0Vmll dy5vcHRpb25zLmluY2x1ZGVfZGVsZXRlZCk9Cnt2YXIgaz0zRG5ldyBkLkl0ZW0obCk7R2FsYXh5 LmxpYnJhcmllcy5mb2xkZXJMaXN0Vmlldy5jb2xsZWN0aW9uLmFkZChrKX1nLj0KY2hhaW5DYWxs RGVsZXRpbmdIZGFzKGgpfSkuZmFpbChmdW5jdGlvbigpe2cub3B0aW9ucy5jaGFpbl9jYWxsX2Nv bnRyb2wuZmFpPQpsZWRfbnVtYmVyKz0zRDE7Zy51cGRhdGVQcm9ncmVzcygpO2cuY2hhaW5DYWxs RGVsZXRpbmdIZGFzKGgpfSl9LGNoZWNrSW5jbHU9CmRlRGVsZXRlZDpmdW5jdGlvbihnKXtpZihn LnRhcmdldC5jaGVja2VkKXtHYWxheHkubGlicmFyaWVzLmZvbGRlckxpc3RWaWV3Lj0KZmV0Y2hG b2xkZXIoe2luY2x1ZGVfZGVsZXRlZDp0cnVlfSl9ZWxzZXtHYWxheHkubGlicmFyaWVzLmZvbGRl ckxpc3RWaWV3LmZlPQp0Y2hGb2xkZXIoe2luY2x1ZGVfZGVsZXRlZDpmYWxzZX0pfX0sZGVsZXRl U2VsZWN0ZWREYXRhc2V0czpmdW5jdGlvbigpe3ZhciA9Cmc9M0QkKCIjZm9sZGVyX3RhYmxlIiku ZmluZCgiOmNoZWNrZWQiKTtpZihnLmxlbmd0aD0zRD0zRD0zRDApe2YuaW5mbygiWW91ID0KbXVz dCBzZWxlY3QgYXQgbGVhc3Qgb25lIGRhdGFzZXQgZm9yIGRlbGV0aW9uLiIpfWVsc2V7dmFyIGs9 M0R0aGlzLnRlbXBsYXRlPQpEZWxldGluZ0RhdGFzZXRzUHJvZ3Jlc3NCYXIoKTt0aGlzLm1vZGFs PTNER2FsYXh5Lm1vZGFsO3RoaXMubW9kYWwuc2hvdyh7Y2w9Cm9zaW5nX2V2ZW50czp0cnVlLHRp dGxlOiJEZWxldGluZyBzZWxlY3RlZCBkYXRhc2V0cyIsYm9keTprKHt9KSxidXR0b25zOntDbD0K b3NlOmZ1bmN0aW9uKCl7R2FsYXh5Lm1vZGFsLmhpZGUoKX19fSk7dGhpcy5vcHRpb25zLmNoYWlu X2NhbGxfY29udHJvbC50b3RhPQpsX251bWJlcj0zRDA7dGhpcy5vcHRpb25zLmNoYWluX2NhbGxf Y29udHJvbC5mYWlsZWRfbnVtYmVyPTNEMDt2YXIgaD0zRFtdO2c9Ci5lYWNoKGZ1bmN0aW9uKCl7 aWYodGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuaWQhPTNEPTNEIiIpe2gucHVzaCh0 aD0KaXMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmlkKX19KTt0aGlzLnByb2dyZXNzU3Rl cD0zRDEwMC9oLmxlbmd0aDt0aGlzPQoucHJvZ3Jlc3M9M0QwO3ZhciBtPTNEW107Zm9yKHZhciBq PTNEaC5sZW5ndGgtMTtqPj0zRDA7ai0tKXt2YXIgbD0zRG5ldyBkLkk9CnRlbSh7aWQ6aFtqXX0p O20ucHVzaChsKX10aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlcj0z RGgubD0KZW5ndGg7dGhpcy5jaGFpbkNhbGxEZWxldGluZ0hkYXMobSl9fSxzaG93TGliSW5mbzpm dW5jdGlvbigpe3ZhciBoPTNER2FsYXh5PQoubGlicmFyaWVzLmZvbGRlckxpc3RWaWV3LmZvbGRl ckNvbnRhaW5lci5hdHRyaWJ1dGVzLm1ldGFkYXRhLnBhcmVudF9saWJyYXI9CnlfaWQ7dmFyIGc9 M0RudWxsO3ZhciBpPTNEdGhpcztpZihHYWxheHkubGlicmFyaWVzLmxpYnJhcnlMaXN0VmlldyE9 M0Q9M0RudT0KbGwpe2c9M0RHYWxheHkubGlicmFyaWVzLmxpYnJhcnlMaXN0Vmlldy5jb2xsZWN0 aW9uLmdldChoKTt0aGlzLnNob3dMaWJJbmZvPQpNb2RhbChnKX1lbHNle2c9M0RuZXcgZC5MaWJy YXJ5KHtpZDpofSk7Zy5mZXRjaCh7c3VjY2VzczpmdW5jdGlvbigpe2kuc2hvd0w9CmliSW5mb01v ZGFsKGcpfSxlcnJvcjpmdW5jdGlvbihrLGope2lmKHR5cGVvZiBqLnJlc3BvbnNlSlNPTiE9M0Q9 M0QidW5kZWZpbj0KZWQiKXtmLmVycm9yKGoucmVzcG9uc2VKU09OLmVycl9tc2cpfWVsc2V7Zi5l cnJvcigiQW4gZXJyb3Igb2N1cnJlZC4iKX19fSl9PQp9LHNob3dMaWJJbmZvTW9kYWw6ZnVuY3Rp b24oZyl7dmFyIGg9M0R0aGlzLnRlbXBsYXRlTGliSW5mb0luTW9kYWwoKTt0aGlzLm09Cm9kYWw9 M0RHYWxheHkubW9kYWw7dGhpcy5tb2RhbC5zaG93KHtjbG9zaW5nX2V2ZW50czp0cnVlLHRpdGxl OiJMaWJyYXJ5IEluZj0Kb3JtYXRpb24iLGJvZHk6aCh7bGlicmFyeTpnfSksYnV0dG9uczp7Q2xv c2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlkZSgpPQp9fX0pfSxzaG93SW1wb3J0TW9kYWw6 ZnVuY3Rpb24oZyl7c3dpdGNoKGcuc291cmNlKXtjYXNlImhpc3RvcnkiOnRoaXMuYWRkRmk9Cmxl c0Zyb21IaXN0b3J5TW9kYWwoKTticmVhaztjYXNlImltcG9ydGRpciI6dGhpcy5pbXBvcnRGaWxl c0Zyb21HYWxheHlGb2xkZT0Kck1vZGFsKHtzb3VyY2U6ImltcG9ydGRpciJ9KTticmVhaztjYXNl InBhdGgiOnRoaXMuaW1wb3J0RmlsZXNGcm9tUGF0aE1vZGFsPQooKTticmVhaztjYXNlInVzZXJk aXIiOnRoaXMuaW1wb3J0RmlsZXNGcm9tR2FsYXh5Rm9sZGVyTW9kYWwoe3NvdXJjZToidXNlcmQ9 CmlyIn0pO2JyZWFrO2RlZmF1bHQ6R2FsYXh5LmxpYnJhcmllcy5saWJyYXJ5X3JvdXRlci5iYWNr KCk7Zi5lcnJvcigiSW52YWxpZD0KIGltcG9ydCBzb3VyY2UuIik7YnJlYWt9fSxzaG93UGFnZVNp emVQcm9tcHQ6ZnVuY3Rpb24oKXt2YXIgZz0zRHByb21wdCgiSG93PQogbWFueSBpdGVtcyBwZXIg cGFnZSBkbyB5b3Ugd2FudCB0byBzZWU/IixHYWxheHkubGlicmFyaWVzLnByZWZlcmVuY2VzLmdl dCg9CiJmb2xkZXJfcGFnZV9zaXplIikpO2lmKChnIT0zRG51bGwpJiYoZz0zRD0zRHBhcnNlSW50 KGcpKSl7R2FsYXh5LmxpYnJhcmllcz0KLnByZWZlcmVuY2VzLnNldCh7Zm9sZGVyX3BhZ2Vfc2l6 ZTpwYXJzZUludChnKX0pO0dhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzPQp0Vmlldy5yZW5kZXIo e2lkOnRoaXMub3B0aW9ucy5pZCxzaG93X3BhZ2U6MX0pfX0sdGVtcGxhdGVUb29sQmFyOmZ1bmN0 aW9uKCk9Cnt0bXBsX2FycmF5PTNEW107dG1wbF9hcnJheS5wdXNoKCc8ZGl2IGNsYXNzPTNEImxp YnJhcnlfc3R5bGVfY29udGFpbmVyIj4nKT0KO3RtcGxfYXJyYXkucHVzaCgnIDxkaXYgaWQ9M0Qi bGlicmFyeV90b29sYmFyIj4nKTt0bXBsX2FycmF5LnB1c2goIiAgIDxzcGFuPQo+PHN0cm9uZz5E QVRBIExJQlJBUklFUzwvc3Ryb25nPjwvc3Bhbj4iKTt0bXBsX2FycmF5LnB1c2goJyAgIDxzcGFu IGRhdGEtdG89CmdnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiBjbGFzcz0z RCJsb2dnZWQtZGF0YXNldC1tYW5pcHVsYXRpbz0KbiIgdGl0bGU9M0QiSW5jbHVkZSBkZWxldGVk IGRhdGFzZXRzIiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7Ij4gfCA8aW5wdXQgaWQ9Cj0zRCJpbmNs dWRlX2RlbGV0ZWRfZGF0YXNldHNfY2hrIiBzdHlsZT0zRCJtYXJnaW46IDA7IiB0eXBlPTNEImNo ZWNrYm94Ij4gaT0KbmNsdWRlIGRlbGV0ZWQgfCA8L2lucHV0Pjwvc3Bhbj4nKTt0bXBsX2FycmF5 LnB1c2goJyAgIDxidXR0b24gc3R5bGU9M0QiZGlzPQpwbGF5Om5vbmU7IiBkYXRhLXRvZ2dsZT0z RCJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0zRCJ0b3AiIHRpdGxlPTNEIkNyZWF0ZSA9Ck5ldyBG b2xkZXIiIGlkPTNEInRvb2xidG5fY3JlYXRlX2ZvbGRlciIgY2xhc3M9M0QiYnRuIGJ0bi1kZWZh dWx0IHByaW1hcnktYj0KdXR0b24gYWRkLWxpYnJhcnktaXRlbXMiIHR5cGU9M0QiYnV0dG9uIj48 c3BhbiBjbGFzcz0zRCJmYSBmYS1wbHVzIj48L3NwYW4+PQo8c3BhbiBjbGFzcz0zRCJmYSBmYS1m b2xkZXIiPjwvc3Bhbj48L2J1dHRvbj4nKTt0bXBsX2FycmF5LnB1c2goIjwlIGlmKG11dGk9CnBs ZV9hZGRfZGF0YXNldF9vcHRpb25zKSB7ICU+Iik7dG1wbF9hcnJheS5wdXNoKCcgICA8ZGl2IGNs YXNzPTNEImJ0bi1ncm91cD0KIGFkZC1saWJyYXJ5LWl0ZW1zIiBzdHlsZT0zRCJkaXNwbGF5Om5v bmU7Ij4nKTt0bXBsX2FycmF5LnB1c2goJyAgICAgPGJ1dHRvPQpuIHRpdGxlPTNEIkFkZCBEYXRh c2V0cyB0byBDdXJyZW50IEZvbGRlciIgaWQ9M0QiIiB0eXBlPTNEImJ1dHRvbiIgY2xhc3M9M0Q9 CiJwcmltYXJ5LWJ1dHRvbiBkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPTNEImRyb3Bkb3du Ij4nKTt0bXBsX2FycmF5LnB1cz0KaCgnICAgICA8c3BhbiBjbGFzcz0zRCJmYSBmYS1wbHVzIj48 L3NwYW4+PHNwYW4gY2xhc3M9M0QiZmEgZmEtZmlsZSI+PC9zcGFuPQo+PHNwYW4gY2xhc3M9M0Qi Y2FyZXQiPjwvc3Bhbj4nKTt0bXBsX2FycmF5LnB1c2goIiAgICAgPC9idXR0b24+Iik7dG1wbF9h cnI9CmF5LnB1c2goJyAgICAgPHVsIGNsYXNzPTNEImRyb3Bkb3duLW1lbnUiIHJvbGU9M0QibWVu dSI+Jyk7dG1wbF9hcnJheS5wdXNoKD0KJyAgICAgICAgPGxpPjxhIGhyZWY9M0QiI2ZvbGRlcnMv PCU9M0QgaWQgJT4vaW1wb3J0L2hpc3RvcnkiPiBmcm9tIEhpc3Rvcnk8PQovYT48L2xpPicpO3Rt cGxfYXJyYXkucHVzaCgiPCUgaWYoR2FsYXh5LmNvbmZpZy51c2VyX2xpYnJhcnlfaW1wb3J0X2Rp ciAhPQo9M0Q9M0QgbnVsbCkgeyAlPiIpO3RtcGxfYXJyYXkucHVzaCgnICAgICAgICA8bGk+PGEg aHJlZj0zRCIjZm9sZGVycy88JT0zRCA9CmlkICU+L2ltcG9ydC91c2VyZGlyIj4gZnJvbSBVc2Vy IERpcmVjdG9yeTwvYT48L2xpPicpO3RtcGxfYXJyYXkucHVzaCgiPCUgfT0KICU+Iik7dG1wbF9h cnJheS5wdXNoKCI8JSBpZihHYWxheHkuY29uZmlnLmFsbG93X2xpYnJhcnlfcGF0aF9wYXN0ZSkg eyAlPiIpPQo7dG1wbF9hcnJheS5wdXNoKCcgICA8bGkgY2xhc3M9M0QiZGl2aWRlciI+PC9saT4n KTt0bXBsX2FycmF5LnB1c2goJyAgIDxsaSA9CmNsYXNzPTNEImRyb3Bkb3duLWhlYWRlciI+QWRt aW5zIG9ubHk8L2xpPicpO3RtcGxfYXJyYXkucHVzaCgiPCUgaWYoR2FsYXh5Lj0KY29uZmlnLmxp YnJhcnlfaW1wb3J0X2RpciAhPTNEPTNEIG51bGwpIHsgJT4iKTt0bXBsX2FycmF5LnB1c2goJyAg IDxsaT48YSBoPQpyZWY9M0QiI2ZvbGRlcnMvPCU9M0QgaWQgJT4vaW1wb3J0L2ltcG9ydGRpciI+ ZnJvbSBJbXBvcnQgRGlyZWN0b3J5PC9hPjwvbGk9Cj4nKTt0bXBsX2FycmF5LnB1c2goIjwlIH0g JT4iKTt0bXBsX2FycmF5LnB1c2goIjwlIGlmKEdhbGF4eS5jb25maWcuYWxsb3dfbD0KaWJyYXJ5 X3BhdGhfcGFzdGUpIHsgJT4iKTt0bXBsX2FycmF5LnB1c2goJyAgICAgICAgPGxpPjxhIGhyZWY9 M0QiI2ZvbGRlcnMvPQo8JT0zRCBpZCAlPi9pbXBvcnQvcGF0aCI+ZnJvbSBQYXRoPC9hPjwvbGk+ Jyk7dG1wbF9hcnJheS5wdXNoKCI8JSB9ICU+Iik7dG09CnBsX2FycmF5LnB1c2goIjwlIH0gJT4i KTt0bXBsX2FycmF5LnB1c2goIiAgICAgPC91bD4iKTt0bXBsX2FycmF5LnB1c2goIiAgID0KPC9k aXY+Iik7dG1wbF9hcnJheS5wdXNoKCI8JSB9IGVsc2UgeyAlPiIpO3RtcGxfYXJyYXkucHVzaCgn IDxhICBkYXRhLXBsYWNlPQptZW50PTNEInRvcCIgdGl0bGU9M0QiQWRkIERhdGFzZXRzIHRvIEN1 cnJlbnQgRm9sZGVyIiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU9CjsiIGNsYXNzPTNEImJ0biBidG4t ZGVmYXVsdCBhZGQtbGlicmFyeS1pdGVtcyIgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPj0K L2ltcG9ydC9oaXN0b3J5IiByb2xlPTNEImJ1dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtcGx1 cyI+PC9zcGFuPjxzcGFuIGNsPQphc3M9M0QiZmEgZmEtZmlsZSI+PC9zcGFuPjwvc3Bhbj48L2E+ Jyk7dG1wbF9hcnJheS5wdXNoKCI8JSB9ICU+Iik7dG1wbF9hcnI9CmF5LnB1c2goJyAgPGJ1dHRv biBkYXRhLXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0zRCJ0b3AiIHRpdGxlPTNE Ij0KSW1wb3J0IHNlbGVjdGVkIGRhdGFzZXRzIGludG8gaGlzdG9yeSIgaWQ9M0QidG9vbGJ0bl9i dWxrX2ltcG9ydCIgY2xhc3M9M0QiPQpwcmltYXJ5LWJ1dHRvbiBkYXRhc2V0LW1hbmlwdWxhdGlv biIgc3R5bGU9M0QibWFyZ2luLWxlZnQ6IDAuNWVtOyBkaXNwbGF5Om49Cm9uZTsiIHR5cGU9M0Qi YnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1ib29rIj48L3NwYW4+IHRvIEhpc3Rvcnk8L2J1 dHRvbj0KPicpO3RtcGxfYXJyYXkucHVzaCgnICAgPGRpdiBpZD0zRCJ0b29sYnRuX2RsIiBjbGFz cz0zRCJidG4tZ3JvdXAgZGF0YXNldC1tPQphbmlwdWxhdGlvbiIgc3R5bGU9M0QibWFyZ2luLWxl ZnQ6IDAuNWVtOyBkaXNwbGF5Om5vbmU7ICI+Jyk7dG1wbF9hcnJheS5wdXM9CmgoJyAgICAgPGJ1 dHRvbiB0aXRsZT0zRCJEb3dubG9hZCBzZWxlY3RlZCBkYXRhc2V0cyBhcyBhcmNoaXZlIiBpZD0z RCJkcm9wXz0KdG9nZ2xlIiB0eXBlPTNEImJ1dHRvbiIgY2xhc3M9M0QicHJpbWFyeS1idXR0b24g ZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsPQplPTNEImRyb3Bkb3duIj4nKTt0bXBsX2FycmF5 LnB1c2goJyAgICAgPHNwYW4gY2xhc3M9M0QiZmEgZmEtZG93bmxvYWQiPjwvc3A9CmFuPiBEb3du bG9hZCA8c3BhbiBjbGFzcz0zRCJjYXJldCI+PC9zcGFuPicpO3RtcGxfYXJyYXkucHVzaCgiICAg ICA8L2J1dHRvbj0KPiIpO3RtcGxfYXJyYXkucHVzaCgnICAgICA8dWwgY2xhc3M9M0QiZHJvcGRv d24tbWVudSIgcm9sZT0zRCJtZW51Ij4nKTt0bXBsPQpfYXJyYXkucHVzaCgnICAgICAgICA8bGk+ PGEgaHJlZj0zRCIjL2ZvbGRlcnMvPCU9M0QgaWQgJT4vZG93bmxvYWQvdGd6Ij4udGE9CnIuZ3o8 L2E+PC9saT4nKTt0bXBsX2FycmF5LnB1c2goJyAgICAgICAgPGxpPjxhIGhyZWY9M0QiIy9mb2xk ZXJzLzwlPTNEIGlkID0KJT4vZG93bmxvYWQvdGJ6Ij4udGFyLmJ6PC9hPjwvbGk+Jyk7dG1wbF9h cnJheS5wdXNoKCcgICAgICAgIDxsaT48YSBocmVmPTNEPQoiIy9mb2xkZXJzLzwlPTNEIGlkICU+ L2Rvd25sb2FkL3ppcCI+LnppcDwvYT48L2xpPicpO3RtcGxfYXJyYXkucHVzaCgiICAgICA9Cjwv dWw+Iik7dG1wbF9hcnJheS5wdXNoKCIgICA8L2Rpdj4iKTt0bXBsX2FycmF5LnB1c2goJyAgIDxi dXR0b24gZGF0YS10b2dnbD0KZT0zRCJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0zRCJ0b3AiIHRp dGxlPTNEIk1hcmsgc2VsZWN0ZWQgZGF0YXNldHMgZGVsZXRlPQpkIiBpZD0zRCJ0b29sYnRuX2J1 bGtfZGVsZXRlIiBjbGFzcz0zRCJwcmltYXJ5LWJ1dHRvbiBsb2dnZWQtZGF0YXNldC1tYW5pcHU9 CmxhdGlvbiIgc3R5bGU9M0QibWFyZ2luLWxlZnQ6IDAuNWVtOyBkaXNwbGF5Om5vbmU7ICIgdHlw ZT0zRCJidXR0b24iPjxzcGFuID0KY2xhc3M9M0QiZmEgZmEtdGltZXMiPjwvc3Bhbj4gRGVsZXRl PC9idXR0b24+Jyk7dG1wbF9hcnJheS5wdXNoKCcgICA8YnV0dG9uPQogZGF0YS1pZD0zRCI8JS0g aWQgJT4iIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0 bGU9Cj0zRCJTaG93IGxpYnJhcnkgaW5mb3JtYXRpb24iIGlkPTNEInRvb2xidG5fc2hvd19saWJp bmZvIiBjbGFzcz0zRCJwcmltYXJ5LT0KYnV0dG9uIiBzdHlsZT0zRCJtYXJnaW4tbGVmdDogMC41 ZW07IiB0eXBlPTNEImJ1dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtPQppbmZvLWNpcmNsZSI+ PC9zcGFuPiBMaWJyYXJ5IEluZm88L2J1dHRvbj4nKTt0bXBsX2FycmF5LnB1c2goJyAgIDxzcGFu IGNsYXM9CnM9M0QiaGVscC1idXR0b24iIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxh Y2VtZW50PTNEInRvcCIgdGl0bGU9M0QiVj0KaXNpdCBMaWJyYXJpZXMgV2lraSI+PGEgaHJlZj0z RCJodHRwczovL3dpa2kuZ2FsYXh5cHJvamVjdC5vcmcvRGF0YUxpYnJhcmllPQpzL3NjcmVlbi9G b2xkZXJDb250ZW50cyIgdGFyZ2V0PTNEIl9ibGFuayI+PGJ1dHRvbiBjbGFzcz0zRCJwcmltYXJ5 LWJ1dHRvbiI9CiB0eXBlPTNEImJ1dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtcXVlc3Rpb24t Y2lyY2xlIj48L3NwYW4+IEhlbHA8L2J1dHRvbj0KPjwvYT48L3NwYW4+Jyk7dG1wbF9hcnJheS5w dXNoKCcgICAgICAgICAgPHNwYW4gaWQ9M0QiZm9sZGVyX3BhZ2luYXRvciIgY2xhPQpzcz0zRCJs aWJyYXJ5LXBhZ2luYXRvciI+Jyk7dG1wbF9hcnJheS5wdXNoKCIgICAgICAgICAgPC9zcGFuPiIp O3RtcGxfYXJyYXk9Ci5wdXNoKCIgPC9kaXY+Iik7dG1wbF9hcnJheS5wdXNoKCcgPGRpdiBpZD0z RCJmb2xkZXJfaXRlbXNfZWxlbWVudCI+Jyk7dG1wbD0KX2FycmF5LnB1c2goIiA8L2Rpdj4iKTt0 bXBsX2FycmF5LnB1c2goIjwvZGl2PiIpO3JldHVybiBfLnRlbXBsYXRlKHRtcGxfYXJyPQpheS5q b2luKCIiKSl9LHRlbXBsYXRlTGliSW5mb0luTW9kYWw6ZnVuY3Rpb24oKXt0bXBsX2FycmF5PTNE W107dG1wbF9hcnJheS49CnB1c2goJzxkaXYgaWQ9M0QibGlmX2luZm9fbW9kYWwiPicpO3RtcGxf YXJyYXkucHVzaCgiPGgyPkxpYnJhcnkgbmFtZTo8L2gyPj0KIik7dG1wbF9hcnJheS5wdXNoKCc8 cD48JS0gbGlicmFyeS5nZXQoIm5hbWUiKSAlPjwvcD4nKTt0bXBsX2FycmF5LnB1c2goIjxoPQoz PkxpYnJhcnkgZGVzY3JpcHRpb246PC9oMz4iKTt0bXBsX2FycmF5LnB1c2goJzxwPjwlLSBsaWJy YXJ5LmdldCgiZGVzY3JpcHQ9CmlvbiIpICU+PC9wPicpO3RtcGxfYXJyYXkucHVzaCgiPGgzPkxp YnJhcnkgc3lub3BzaXM6PC9oMz4iKTt0bXBsX2FycmF5LnB1cz0KaCgnPHA+PCUtIGxpYnJhcnku Z2V0KCJzeW5vcHNpcyIpICU+PC9wPicpO3RtcGxfYXJyYXkucHVzaCgiPC9kaXY+Iik7cmV0dXJu PQogXy50ZW1wbGF0ZSh0bXBsX2FycmF5LmpvaW4oIiIpKX0sdGVtcGxhdGVOZXdGb2xkZXJJbk1v ZGFsOmZ1bmN0aW9uKCl7dG1wbF89CmFycmF5PTNEW107dG1wbF9hcnJheS5wdXNoKCc8ZGl2IGlk PTNEIm5ld19mb2xkZXJfbW9kYWwiPicpO3RtcGxfYXJyYXkucHVzaD0KKCI8Zm9ybT4iKTt0bXBs X2FycmF5LnB1c2goJzxpbnB1dCB0eXBlPTNEInRleHQiIG5hbWU9M0QiTmFtZSIgdmFsdWU9M0Qi IiBwPQpsYWNlaG9sZGVyPTNEIk5hbWUiPicpO3RtcGxfYXJyYXkucHVzaCgnPGlucHV0IHR5cGU9 M0QidGV4dCIgbmFtZT0zRCJEZXNjcmk9CnB0aW9uIiB2YWx1ZT0zRCIiIHBsYWNlaG9sZGVyPTNE IkRlc2NyaXB0aW9uIj4nKTt0bXBsX2FycmF5LnB1c2goIjwvZm9ybT4iKT0KO3RtcGxfYXJyYXku cHVzaCgiPC9kaXY+Iik7cmV0dXJuIF8udGVtcGxhdGUodG1wbF9hcnJheS5qb2luKCIiKSl9LHRl bXBsYXRlPQpCdWxrSW1wb3J0SW5Nb2RhbDpmdW5jdGlvbigpe3ZhciBnPTNEW107Zy5wdXNoKCc8 c3BhbiBpZD0zRCJoaXN0b3J5X21vZGFsX2M9Cm9tYm9fYnVsayIgc3R5bGU9M0Qid2lkdGg6OTAl OyBtYXJnaW4tbGVmdDogMWVtOyBtYXJnaW4tcmlnaHQ6IDFlbTsgIj4nKTtnLj0KcHVzaCgiU2Vs ZWN0IGhpc3Rvcnk6ICIpO2cucHVzaCgnPHNlbGVjdCBpZD0zRCJkYXRhc2V0X2ltcG9ydF9idWxr IiBuYW1lPTNEPQoiZGF0YXNldF9pbXBvcnRfYnVsayIgc3R5bGU9M0Qid2lkdGg6NTAlOyBtYXJn aW4tYm90dG9tOiAxZW07ICI+ICcpO2cucHVzaCg9CiIgICA8JSBfLmVhY2goaGlzdG9yaWVzLCBm dW5jdGlvbihoaXN0b3J5KSB7ICU+Iik7Zy5wdXNoKCcgICAgICAgPG9wdGlvbiB2YT0KbHVlPTNE IjwlPTNEIF8uZXNjYXBlKGhpc3RvcnkuZ2V0KCJpZCIpKSAlPiI+PCU9M0QgXy5lc2NhcGUoaGlz dG9yeS5nZXQoIm5hPQptZSIpKSAlPjwvb3B0aW9uPicpO2cucHVzaCgiICAgPCUgfSk7ICU+Iik7 Zy5wdXNoKCI8L3NlbGVjdD4iKTtnLnB1c2goIjwvc3A9CmFuPiIpO3JldHVybiBfLnRlbXBsYXRl KGcuam9pbigiIikpfSx0ZW1wbGF0ZUltcG9ydEludG9IaXN0b3J5UHJvZ3Jlc3NCYXI6Zj0KdW5j dGlvbigpe3ZhciBnPTNEW107Zy5wdXNoKCc8ZGl2IGNsYXNzPTNEImltcG9ydF90ZXh0Ij4nKTtn LnB1c2goIkltcG9ydGluPQpnIHNlbGVjdGVkIGRhdGFzZXRzIHRvIGhpc3RvcnkgPGI+PCU9M0Qg Xy5lc2NhcGUoaGlzdG9yeV9uYW1lKSAlPjwvYj4iKTtnLnA9CnVzaCgiPC9kaXY+Iik7Zy5wdXNo KCc8ZGl2IGNsYXNzPTNEInByb2dyZXNzIj4nKTtnLnB1c2goJyAgIDxkaXYgY2xhc3M9M0QicD0K cm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLWltcG9ydCIgcm9sZT0zRCJwcm9ncmVzc2JhciIgYXJp YS12YWx1ZW5vdz0zRCIwIiBhPQpyaWEtdmFsdWVtaW49M0QiMCIgYXJpYS12YWx1ZW1heD0zRCIx MDAiIHN0eWxlPTNEIndpZHRoOiAwMCU7Ij4nKTtnLnB1c2goJyA9CiAgICAgIDxzcGFuIGNsYXNz PTNEImNvbXBsZXRpb25fc3BhbiI+MCUgQ29tcGxldGU8L3NwYW4+Jyk7Zy5wdXNoKCIgICA8L2Rp dj0KPiIpO2cucHVzaCgiPC9kaXY+Iik7Zy5wdXNoKCIiKTtyZXR1cm4gXy50ZW1wbGF0ZShnLmpv aW4oIiIpKX0sdGVtcGxhdGVBZGRpPQpuZ0RhdGFzZXRzUHJvZ3Jlc3NCYXI6ZnVuY3Rpb24oKXt2 YXIgZz0zRFtdO2cucHVzaCgnPGRpdiBjbGFzcz0zRCJpbXBvcnRfdGU9Cnh0Ij4nKTtnLnB1c2go IkFkZGluZyBzZWxlY3RlZCBkYXRhc2V0cyB0byBsaWJyYXJ5IGZvbGRlciA8Yj48JT0zRCBfLmVz Y2FwZT0KKGZvbGRlcl9uYW1lKSAlPjwvYj4iKTtnLnB1c2goIjwvZGl2PiIpO2cucHVzaCgnPGRp diBjbGFzcz0zRCJwcm9ncmVzcyI+Jyk7PQpnLnB1c2goJyAgIDxkaXYgY2xhc3M9M0QicHJvZ3Jl c3MtYmFyIHByb2dyZXNzLWJhci1pbXBvcnQiIHJvbGU9M0QicHJvZ3Jlc3M9CmJhciIgYXJpYS12 YWx1ZW5vdz0zRCIwIiBhcmlhLXZhbHVlbWluPTNEIjAiIGFyaWEtdmFsdWVtYXg9M0QiMTAwIiBz dHlsZT0zRD0KIndpZHRoOiAwMCU7Ij4nKTtnLnB1c2goJyAgICAgICA8c3BhbiBjbGFzcz0zRCJj b21wbGV0aW9uX3NwYW4iPjAlIENvbXBsZXRlPQo8L3NwYW4+Jyk7Zy5wdXNoKCIgICA8L2Rpdj4i KTtnLnB1c2goIjwvZGl2PiIpO2cucHVzaCgiIik7cmV0dXJuIF8udGVtcGxhdGU9CihnLmpvaW4o IiIpKX0sdGVtcGxhdGVEZWxldGluZ0RhdGFzZXRzUHJvZ3Jlc3NCYXI6ZnVuY3Rpb24oKXt2YXIg Zz0zRFtdO2cucD0KdXNoKCc8ZGl2IGNsYXNzPTNEImltcG9ydF90ZXh0Ij4nKTtnLnB1c2goIjwv ZGl2PiIpO2cucHVzaCgnPGRpdiBjbGFzcz0zRCJwPQpyb2dyZXNzIj4nKTtnLnB1c2goJyAgIDxk aXYgY2xhc3M9M0QicHJvZ3Jlc3MtYmFyIHByb2dyZXNzLWJhci1pbXBvcnQiIHJvbGU9Cj0zRCJw cm9ncmVzc2JhciIgYXJpYS12YWx1ZW5vdz0zRCIwIiBhcmlhLXZhbHVlbWluPTNEIjAiIGFyaWEt dmFsdWVtYXg9M0QiMT0KMDAiIHN0eWxlPTNEIndpZHRoOiAwMCU7Ij4nKTtnLnB1c2goJyAgICAg ICA8c3BhbiBjbGFzcz0zRCJjb21wbGV0aW9uX3NwYW4iPQo+MCUgQ29tcGxldGU8L3NwYW4+Jyk7 Zy5wdXNoKCIgICA8L2Rpdj4iKTtnLnB1c2goIjwvZGl2PiIpO2cucHVzaCgiIik7cmV0dXI9Cm4g Xy50ZW1wbGF0ZShnLmpvaW4oIiIpKX0sdGVtcGxhdGVCcm93c2VyTW9kYWw6ZnVuY3Rpb24oKXt2 YXIgZz0zRFtdO2cucHVzaD0KKCc8ZGl2IGlkPTNEImZpbGVfYnJvd3Nlcl9tb2RhbCI+Jyk7Zy5w dXNoKCc8ZGl2IGNsYXNzPTNEImFsZXJ0IGFsZXJ0LWluZm8gPQpqc3RyZWUtZmlsZXMtbWVzc2Fn ZSI+QWxsIGZpbGVzIHlvdSBzZWxlY3Qgd2lsbCBiZSBpbXBvcnRlZCBpbnRvIHRoZSBjdXJyZW49 CnQgZm9sZGVyLjwvZGl2PicpO2cucHVzaCgnPGRpdiBjbGFzcz0zRCJhbGVydCBhbGVydC1pbmZv IGpzdHJlZS1mb2xkZXJzLW1lcz0Kc2FnZSIgc3R5bGU9M0QiZGlzcGxheTpub25lOyI+QWxsIGZp bGVzIHdpdGhpbiB0aGUgc2VsZWN0ZWQgZm9sZGVycyBhbmQgdGhlPQppciBzdWJmb2xkZXJzIHdp bGwgYmUgaW1wb3J0ZWQgaW50byB0aGUgY3VycmVudCBmb2xkZXIuPC9kaXY+Jyk7Zy5wdXNoKCc8 ZGk9CnYgc3R5bGU9M0QibWFyZ2luLWJvdHRvbToxZW07Ij4nKTtnLnB1c2goJzxsYWJlbCBjbGFz cz0zRCJyYWRpby1pbmxpbmUiPicpOz0KZy5wdXNoKCcgIDxpbnB1dCB0aXRsZT0zRCJTd2l0Y2gg dG8gc2VsZWN0aW5nIGZpbGVzIiB0eXBlPTNEInJhZGlvIiBuYW1lPTNEPQoianN0cmVlLXJhZGlv IiB2YWx1ZT0zRCJqc3RyZWUtZGlzYWJsZS1mb2xkZXJzIiBjaGVja2VkPTNEImNoZWNrZWQiPiBG aWxlcyc9Cik7Zy5wdXNoKCI8L2xhYmVsPiIpO2cucHVzaCgnPGxhYmVsIGNsYXNzPTNEInJhZGlv LWlubGluZSI+Jyk7Zy5wdXNoKCcgIDxpbj0KcHV0IHRpdGxlPTNEIlN3aXRjaCB0byBzZWxlY3Rp bmcgZm9sZGVycyIgdHlwZT0zRCJyYWRpbyIgbmFtZT0zRCJqc3RyZWUtcmFkPQppbyIgdmFsdWU9 M0QianN0cmVlLWRpc2FibGUtZmlsZXMiPiBGb2xkZXJzJyk7Zy5wdXNoKCI8L2xhYmVsPiIpO2cu cHVzaCgiPC89CmRpdj4iKTtnLnB1c2goJzxkaXYgc3R5bGU9M0QibWFyZ2luLWJvdHRvbToxZW07 Ij4nKTtnLnB1c2goJzxsYWJlbCBjbGFzcz0zRD0KImNoZWNrYm94LWlubGluZSBqc3RyZWUtcHJl c2VydmUtc3RydWN0dXJlIiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7Ij4nKTtnLnB1PQpzaCgnICAg PGlucHV0IGNsYXNzPTNEInByZXNlcnZlLWNoZWNrYm94IiB0eXBlPTNEImNoZWNrYm94IiB2YWx1 ZT0zRCJwcmVzZXI9CnZlX2RpcmVjdG9yeV9zdHJ1Y3R1cmUiPicpO2cucHVzaCgiUHJlc2VydmUg ZGlyZWN0b3J5IHN0cnVjdHVyZSIpO2cucHVzaCgiID0KPC9sYWJlbD4iKTtnLnB1c2goJzxsYWJl bCBjbGFzcz0zRCJjaGVja2JveC1pbmxpbmUganN0cmVlLWxpbmstZmlsZXMiIHN0eWxlPQo9M0Qi ZGlzcGxheTpub25lOyI+Jyk7Zy5wdXNoKCcgICA8aW5wdXQgY2xhc3M9M0QibGluay1jaGVja2Jv eCIgdHlwZT0zRCJjaGU9CmNrYm94IiB2YWx1ZT0zRCJsaW5rX2ZpbGVzIj4nKTtnLnB1c2goIkxp bmsgZmlsZXMgaW5zdGVhZCBvZiBjb3B5aW5nIik7Zy5wdT0Kc2goIiA8L2xhYmVsPiIpO2cucHVz aCgiPC9kaXY+Iik7Zy5wdXNoKCc8ZGl2IGlkPTNEImpzdHJlZV9icm93c2VyIj4nKTtnLnB1PQpz aCgiPC9kaXY+Iik7Zy5wdXNoKCI8aHIgLz4iKTtnLnB1c2goIjxwPllvdSBjYW4gc2V0IGV4dGVu c2lvbiB0eXBlIGFuZCBnZW49Cm9tZSBmb3IgYWxsIGltcG9ydGVkIGRhdGFzZXRzIGF0IG9uY2U6 PC9wPiIpO2cucHVzaCgiPGRpdj4iKTtnLnB1c2goJ1R5cGU6ID0KPHNwYW4gaWQ9M0QibGlicmFy eV9leHRlbnNpb25fc2VsZWN0IiBjbGFzcz0zRCJsaWJyYXJ5LWV4dGVuc2lvbi1zZWxlY3QiIC8+ PQonKTtnLnB1c2goJyAgR2Vub21lOiA8c3BhbiBpZD0zRCJsaWJyYXJ5X2dlbm9tZV9zZWxlY3Qi IGNsYXNzPTNEImxpYnJhcnktZ2U9Cm5vbWUtc2VsZWN0IiAvPicpO2cucHVzaCgiPC9kaXY+Iik7 Zy5wdXNoKCI8L2Rpdj4iKTtyZXR1cm4gXy50ZW1wbGF0ZShnLmpvaT0KbigiIikpfSx0ZW1wbGF0 ZUltcG9ydFBhdGhNb2RhbDpmdW5jdGlvbigpe3ZhciBnPTNEW107Zy5wdXNoKCc8ZGl2IGlkPTNE ImZpPQpsZV9icm93c2VyX21vZGFsIj4nKTtnLnB1c2goJzxkaXYgY2xhc3M9M0QiYWxlcnQgYWxl cnQtaW5mbyBqc3RyZWUtZm9sZGVycy09Cm1lc3NhZ2UiPkFsbCBmaWxlcyB3aXRoaW4gdGhlIGdp dmVuIGZvbGRlcnMgYW5kIHRoZWlyIHN1YmZvbGRlcnMgd2lsbCBiZSBpbT0KcG9ydGVkIGludG8g dGhlIGN1cnJlbnQgZm9sZGVyLjwvZGl2PicpO2cucHVzaCgnPGRpdiBzdHlsZT0zRCJtYXJnaW4t Ym90dG9tPQo6IDAuNWVtOyI+Jyk7Zy5wdXNoKCc8bGFiZWwgY2xhc3M9M0QiY2hlY2tib3gtaW5s aW5lIGpzdHJlZS1wcmVzZXJ2ZS1zdHJ1Y3Q9CnVyZSI+Jyk7Zy5wdXNoKCcgICA8aW5wdXQgY2xh c3M9M0QicHJlc2VydmUtY2hlY2tib3giIHR5cGU9M0QiY2hlY2tib3giIHZhbD0KdWU9M0QicHJl c2VydmVfZGlyZWN0b3J5X3N0cnVjdHVyZSI+Jyk7Zy5wdXNoKCJQcmVzZXJ2ZSBkaXJlY3Rvcnkg c3RydWN0dXJlPQoiKTtnLnB1c2goIiA8L2xhYmVsPiIpO2cucHVzaCgnPGxhYmVsIGNsYXNzPTNE ImNoZWNrYm94LWlubGluZSBqc3RyZWUtbGluay09CmZpbGVzIj4nKTtnLnB1c2goJyAgIDxpbnB1 dCBjbGFzcz0zRCJsaW5rLWNoZWNrYm94IiB0eXBlPTNEImNoZWNrYm94IiB2YWx1ZT0KPTNEImxp bmtfZmlsZXMiPicpO2cucHVzaCgiTGluayBmaWxlcyBpbnN0ZWFkIG9mIGNvcHlpbmciKTtnLnB1 c2goIiA8L2xhYmVsPQo+Iik7Zy5wdXNoKCI8L2Rpdj4iKTtnLnB1c2goJzx0ZXh0YXJlYSBpZD0z RCJpbXBvcnRfcGF0aHMiIGNsYXNzPTNEImZvcm0tY289Cm50cm9sIiByb3dzPTNEIjUiIHBsYWNl aG9sZGVyPTNEIkFic29sdXRlIHBhdGhzIChvciBwYXRocyByZWxhdGl2ZSB0byBHYWxheD0KeSBy b290KSBzZXBhcmF0ZWQgYnkgbmV3bGluZSI+PC90ZXh0YXJlYT4nKTtnLnB1c2goIjxociAvPiIp O2cucHVzaCgiPHA+WW91PQogY2FuIHNldCBleHRlbnNpb24gdHlwZSBhbmQgZ2Vub21lIGZvciBh bGwgaW1wb3J0ZWQgZGF0YXNldHMgYXQgb25jZTo8L3A+Iik9CjtnLnB1c2goIjxkaXY+Iik7Zy5w dXNoKCdUeXBlOiA8c3BhbiBpZD0zRCJsaWJyYXJ5X2V4dGVuc2lvbl9zZWxlY3QiIGNsYXNzPQo9 M0QibGlicmFyeS1leHRlbnNpb24tc2VsZWN0IiAvPicpO2cucHVzaCgnICBHZW5vbWU6IDxzcGFu IGlkPTNEImxpYnJhcnlfZ2U9Cm5vbWVfc2VsZWN0IiBjbGFzcz0zRCJsaWJyYXJ5LWdlbm9tZS1z ZWxlY3QiIC8+Jyk7Zy5wdXNoKCI8L2Rpdj4iKTtnLnB1c2goIj0KPC9kaXY+Iik7cmV0dXJuIF8u dGVtcGxhdGUoZy5qb2luKCIiKSl9LHRlbXBsYXRlQWRkRmlsZXNGcm9tSGlzdG9yeTpmdW5jdGlv PQpuKCl7dmFyIGc9M0RbXTtnLnB1c2goJzxkaXYgaWQ9M0QiYWRkX2ZpbGVzX21vZGFsIj4nKTtn LnB1c2goJzxkaXYgaWQ9M0QiaGk9CnN0b3J5X21vZGFsX2NvbWJvX2J1bGsiPicpO2cucHVzaCgi U2VsZWN0IGhpc3Rvcnk6ICAiKTtnLnB1c2goJzxzZWxlY3QgaWQ9Cj0zRCJkYXRhc2V0X2FkZF9i dWxrIiBuYW1lPTNEImRhdGFzZXRfYWRkX2J1bGsiIHN0eWxlPTNEIndpZHRoOjY2JTsgIj4gJyk7 Zz0KLnB1c2goIiAgIDwlIF8uZWFjaChoaXN0b3JpZXMsIGZ1bmN0aW9uKGhpc3RvcnkpIHsgJT4i KTtnLnB1c2goJyAgICAgICA8b3B0PQppb24gdmFsdWU9M0QiPCU9M0QgXy5lc2NhcGUoaGlzdG9y eS5nZXQoImlkIikpICU+Ij48JT0zRCBfLmVzY2FwZShoaXN0b3J5Lmc9CmV0KCJuYW1lIikpICU+ PC9vcHRpb24+Jyk7Zy5wdXNoKCIgICA8JSB9KTsgJT4iKTtnLnB1c2goIjwvc2VsZWN0PiIpO2cu cHVzaD0KKCI8L2Rpdj4iKTtnLnB1c2goIjxici8+Iik7Zy5wdXNoKCc8ZGl2IGlkPTNEInNlbGVj dGVkX2hpc3RvcnlfY29udGVudCI+Jyk7PQpnLnB1c2goIjwvZGl2PiIpO2cucHVzaCgiPC9kaXY+ Iik7cmV0dXJuIF8udGVtcGxhdGUoZy5qb2luKCIiKSl9LHRlbXBsYXRlSGk9CnN0b3J5Q29udGVu dHM6ZnVuY3Rpb24oKXt2YXIgZz0zRFtdO2cucHVzaCgiPHN0cm9uZz5DaG9vc2UgdGhlIGRhdGFz ZXRzIHRvID0KaW1wb3J0Ojwvc3Ryb25nPiIpO2cucHVzaCgiPHVsPiIpO2cucHVzaCgiIDwlIF8u ZWFjaChoaXN0b3J5X2NvbnRlbnRzLCBmdW5jPQp0aW9uKGhpc3RvcnlfaXRlbSkgeyAlPiIpO2cu cHVzaCgnIDxsaSBkYXRhLWlkPTNEIjwlPTNEIF8uZXNjYXBlKGhpc3RvcnlfaXQ9CmVtLmdldCgi aWQiKSkgJT4iPicpO2cucHVzaCgnICAgPGlucHV0IHN0eWxlPTNEIm1hcmdpbjogMDsiIHR5cGU9 M0QiY2hlY2tibz0KeCI+PCU9M0QgXy5lc2NhcGUoaGlzdG9yeV9pdGVtLmdldCgiaGlkIikpICU+ OiA8JT0zRCBfLmVzY2FwZShoaXN0b3J5X2l0ZW0uPQpnZXQoIm5hbWUiKSkgJT4nKTtnLnB1c2go IiA8L2xpPiIpO2cucHVzaCgiIDwlIH0pOyAlPiIpO2cucHVzaCgiPC91bD4iKTtyZXQ9CnVybiBf LnRlbXBsYXRlKGcuam9pbigiIikpfSx0ZW1wbGF0ZVBhZ2luYXRvcjpmdW5jdGlvbigpe3RtcGxf YXJyYXk9M0RbXTt0bT0KcGxfYXJyYXkucHVzaCgnICAgPHVsIGNsYXNzPTNEInBhZ2luYXRpb24g cGFnaW5hdGlvbi1zbSI+Jyk7dG1wbF9hcnJheS5wdXNoPQooIiAgICAgICA8JSBpZiAoICggc2hv d19wYWdlIC0gMSApID4gMCApIHsgJT4iKTt0bXBsX2FycmF5LnB1c2goIiAgICAgICAgICA9CiA8 JSBpZiAoICggc2hvd19wYWdlIC0gMSApID4gcGFnZV9jb3VudCApIHsgJT4iKTt0bXBsX2FycmF5 LnB1c2goJyAgICAgICAgID0KICAgICAgPGxpPjxhIGhyZWY9M0QiI2ZvbGRlcnMvPCU9M0QgaWQg JT4vcGFnZS8xIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1hbmdsPQplLWRvdWJsZS1sZWZ0Ij48L3Nw YW4+PC9hPjwvbGk+Jyk7dG1wbF9hcnJheS5wdXNoKCcgICAgICAgICAgICAgICA8bGkgY2xhc3M9 Cj0zRCJkaXNhYmxlZCI+PGEgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPi9wYWdlLzwlIHBy aW50KCBzaG93X3BhZ2UgKSAlPj0KIj48JSBwcmludCggc2hvd19wYWdlIC0gMSApICU+PC9hPjwv bGk+Jyk7dG1wbF9hcnJheS5wdXNoKCIgICAgICAgICAgIDwlIH0gPQplbHNlIHsgJT4iKTt0bXBs X2FycmF5LnB1c2goJyAgICAgICAgICAgICAgIDxsaT48YSBocmVmPTNEIiNmb2xkZXJzLzwlPTNE IGk9CmQgJT4vcGFnZS8xIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1hbmdsZS1kb3VibGUtbGVmdCI+ PC9zcGFuPjwvYT48L2xpPicpO3RtcD0KbF9hcnJheS5wdXNoKCcgICAgICAgICAgICAgICA8bGk+ PGEgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPi9wYWdlLzwlIHByPQppbnQoIHNob3dfcGFn ZSAtIDEgKSAlPiI+PCUgcHJpbnQoIHNob3dfcGFnZSAtIDEgKSAlPjwvYT48L2xpPicpO3RtcGxf YXJyYXk9Ci5wdXNoKCIgICAgICAgICAgIDwlIH0gJT4iKTt0bXBsX2FycmF5LnB1c2goIiAgICAg ICA8JSB9IGVsc2UgeyAlPiIpO3RtcGxfYT0KcnJheS5wdXNoKCcgICAgICAgICAgIDxsaSBjbGFz cz0zRCJkaXNhYmxlZCI+PGEgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPQo+L3BhZ2UvMSI+ PHNwYW4gY2xhc3M9M0QiZmEgZmEtYW5nbGUtZG91YmxlLWxlZnQiPjwvc3Bhbj48L2E+PC9saT4n KTt0bXBsX2E9CnJyYXkucHVzaCgnICAgICAgICAgICA8bGkgY2xhc3M9M0QiZGlzYWJsZWQiPjxh IGhyZWY9M0QiI2ZvbGRlcnMvPCU9M0QgaWQgJT0KPi9wYWdlLzwlIHByaW50KCBzaG93X3BhZ2Ug KSAlPiI+PCUgcHJpbnQoIHNob3dfcGFnZSAtIDEgKSAlPjwvYT48L2xpPicpO3RtPQpwbF9hcnJh eS5wdXNoKCIgICAgICAgPCUgfSAlPiIpO3RtcGxfYXJyYXkucHVzaCgnICAgICAgIDxsaSBjbGFz cz0zRCJhY3RpdmU9CiI+Jyk7dG1wbF9hcnJheS5wdXNoKCcgICAgICAgPGEgaHJlZj0zRCIjZm9s ZGVycy88JT0zRCBpZCAlPi9wYWdlLzwlIHByaW50KD0KIHNob3dfcGFnZSApICU+Ij48JSBwcmlu dCggc2hvd19wYWdlICkgJT48L2E+Jyk7dG1wbF9hcnJheS5wdXNoKCIgICAgICAgPC9sPQppPiIp O3RtcGxfYXJyYXkucHVzaCgiICAgICAgIDwlIGlmICggKCBzaG93X3BhZ2UgKSA8IHBhZ2VfY291 bnQgKSB7ICU+Iik7dG09CnBsX2FycmF5LnB1c2goJyAgICAgICAgICAgPGxpPjxhIGhyZWY9M0Qi I2ZvbGRlcnMvPCU9M0QgaWQgJT4vcGFnZS88JSBwcmludD0KKCBzaG93X3BhZ2UgKyAxICkgJT4i PjwlIHByaW50KCBzaG93X3BhZ2UgKyAxICkgJT48L2E+PC9saT4nKTt0bXBsX2FycmF5LnB1PQpz aCgnICAgICAgICAgICA8bGk+PGEgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPi9wYWdlLzwl IHByaW50KCBwYWdlX2NvdW49CnQgKSAlPiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtYW5nbGUtZG91 YmxlLXJpZ2h0Ij48L3NwYW4+PC9hPjwvbGk+Jyk7dG1wbF9hcj0KcmF5LnB1c2goIiAgICAgICA8 JSB9IGVsc2UgeyAlPiIpO3RtcGxfYXJyYXkucHVzaCgnICAgICAgICAgICA8bGkgY2xhc3M9M0Qi PQpkaXNhYmxlZCI+PGEgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPi9wYWdlLzwlIHByaW50 KCBzaG93X3BhZ2UgICkgJT4iPjw9CiUgcHJpbnQoIHNob3dfcGFnZSArIDEgKSAlPjwvYT48L2xp PicpO3RtcGxfYXJyYXkucHVzaCgnICAgICAgICAgICA8bGkgY2xhcz0Kcz0zRCJkaXNhYmxlZCI+ PGEgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPi9wYWdlLzwlIHByaW50KCBwYWdlX2NvdW50 ICkgPQolPiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtYW5nbGUtZG91YmxlLXJpZ2h0Ij48L3NwYW4+ PC9hPjwvbGk+Jyk7dG1wbF9hcnJheS49CnB1c2goIiAgICAgICA8JSB9ICU+Iik7dG1wbF9hcnJh eS5wdXNoKCIgICA8L3VsPiIpO3RtcGxfYXJyYXkucHVzaCgiICAgPHNwYT0Kbj4iKTt0bXBsX2Fy cmF5LnB1c2goJyAgICAgICBzaG93aW5nIDxhIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEt cGxhY2VtPQplbnQ9M0QidG9wIiB0aXRsZT0zRCJDbGljayB0byBjaGFuZ2UgdGhlIG51bWJlciBv ZiBpdGVtcyBvbiBwYWdlIiBpZD0zRCJwYWc9CmVfc2l6ZV9wcm9tcHQiPjwlLSBpdGVtc19zaG93 biAlPjwvYT4gb2YgPCUtIHRvdGFsX2l0ZW1zX2NvdW50ICU+IGl0ZW1zJyk7dD0KbXBsX2FycmF5 LnB1c2goIiAgIDwvc3Bhbj4iKTtyZXR1cm4gXy50ZW1wbGF0ZSh0bXBsX2FycmF5LmpvaW4oIiIp KX0sfSk7cmV0PQp1cm57Rm9sZGVyVG9vbGJhclZpZXc6Yn19KTsKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCitkZWZpbmUoWyJnYWxheHkubWFzdGhlYWQiLCJ1dGlscy91dGlscyIsImxpYnMv dG9hc3RyIiwibXZjL2xpYnJhcnkvbGlicmFyeT0KLW1vZGVsIiwibXZjL3VpL3VpLXNlbGVjdCJd LGZ1bmN0aW9uKGMsZSxmLGQsYSl7dmFyIGI9M0RCYWNrYm9uZS5WaWV3LmV4dGVuPQpkKHtlbDoi I2NlbnRlciIsZXZlbnRzOnsiY2xpY2sgI3Rvb2xidG5fY3JlYXRlX2ZvbGRlciI6ImNyZWF0ZUZv bGRlckZyb21Nb2Q9CmFsIiwiY2xpY2sgI3Rvb2xidG5fYnVsa19pbXBvcnQiOiJtb2RhbEJ1bGtJ bXBvcnQiLCJjbGljayAjaW5jbHVkZV9kZWxldGVkXz0KZGF0YXNldHNfY2hrIjoiY2hlY2tJbmNs dWRlRGVsZXRlZCIsImNsaWNrICN0b29sYnRuX3Nob3dfbGliaW5mbyI6InNob3dMaWJJPQpuZm8i LCJjbGljayAjdG9vbGJ0bl9idWxrX2RlbGV0ZSI6ImRlbGV0ZVNlbGVjdGVkRGF0YXNldHMiLCJj bGljayAjcGFnZV9zaXo9CmVfcHJvbXB0Ijoic2hvd1BhZ2VTaXplUHJvbXB0In0sZGVmYXVsdHM6 e2Nhbl9hZGRfbGlicmFyeV9pdGVtOmZhbHNlLGNvbnRhaT0KbnNfZmlsZTpmYWxzZSxjaGFpbl9j YWxsX2NvbnRyb2w6e3RvdGFsX251bWJlcjowLGZhaWxlZF9udW1iZXI6MH0sZGlzYWJsZWRfPQpq c3RyZWVfZWxlbWVudDoiZm9sZGVycyJ9LG1vZGFsOm51bGwsanN0cmVlOm51bGwsaGlzdG9yaWVz Om51bGwsc2VsZWN0X2dlbm89Cm1lOm51bGwsc2VsZWN0X2V4dGVuc2lvbjpudWxsLGxpc3RfZXh0 ZW5zaW9uczpbXSxhdXRvOntpZDoiYXV0byIsdGV4dDoiQXV0bz0KLWRldGVjdCIsZGVzY3JpcHRp b246IlRoaXMgc3lzdGVtIHdpbGwgdHJ5IHRvIGRldGVjdCB0aGUgZmlsZSB0eXBlIGF1dG9tYXRp PQpjYWxseS4gSWYgeW91ciBmaWxlIGlzIG5vdCBkZXRlY3RlZCBwcm9wZXJseSBhcyBvbmUgb2Yg dGhlIGtub3duIGZvcm1hdHMsIGk9CnQgbW9zdCBsaWtlbHkgbWVhbnMgdGhhdCBpdCBoYXMgc29t ZSBmb3JtYXQgcHJvYmxlbXMgKGUuZy4sIGRpZmZlcmVudCBudW1iZT0KciBvZiBjb2x1bW5zIG9u IGRpZmZlcmVudCByb3dzKS4gWW91IGNhbiBzdGlsbCBjb2VyY2UgdGhlIHN5c3RlbSB0byBzZXQg eW91PQpyIGRhdGEgdG8gdGhlIGZvcm1hdCB5b3UgdGhpbmsgaXQgc2hvdWxkIGJlLiBZb3UgY2Fu IGFsc28gdXBsb2FkIGNvbXByZXNzZWQ9CiBmaWxlcywgd2hpY2ggd2lsbCBhdXRvbWF0aWNhbGx5 IGJlIGRlY29tcHJlc3NlZC4ifSxsaXN0X2dlbm9tZXM6W10saW5pdGlhbD0KaXplOmZ1bmN0aW9u KGcpe3RoaXMub3B0aW9ucz0zRF8uZGVmYXVsdHMoZ3x8e30sdGhpcy5kZWZhdWx0cyk7dGhpcy5m ZXRjaEV4PQp0QW5kR2Vub21lcygpO3RoaXMucmVuZGVyKCl9LHJlbmRlcjpmdW5jdGlvbihnKXt0 aGlzLm9wdGlvbnM9M0RfLmV4dGVuZCh0aGk9CnMub3B0aW9ucyxnKTt2YXIgaT0zRHRoaXMudGVt cGxhdGVUb29sQmFyKCk7dmFyIGg9M0R7aWQ6dGhpcy5vcHRpb25zLmlkLGlzXz0KYWRtaW46ZmFs c2UsaXNfYW5vbnltOnRydWUsbXV0aXBsZV9hZGRfZGF0YXNldF9vcHRpb25zOmZhbHNlfTtpZihH YWxheHkuY3VyPQpyVXNlcil7aC5pc19hZG1pbj0zREdhbGF4eS5jdXJyVXNlci5pc0FkbWluKCk7 aC5pc19hbm9ueW09M0RHYWxheHkuY3VyclVzZXI9Ci5pc0Fub255bW91cygpO2lmKEdhbGF4eS5j b25maWcudXNlcl9saWJyYXJ5X2ltcG9ydF9kaXIhPTNEPTNEbnVsbHx8R2FsYXh5Lj0KY29uZmln LmFsbG93X2xpYnJhcnlfcGF0aF9wYXN0ZSE9M0Q9M0RmYWxzZXx8R2FsYXh5LmNvbmZpZy5saWJy YXJ5X2ltcG9ydF9kPQppciE9M0Q9M0RudWxsKXtoLm11dGlwbGVfYWRkX2RhdGFzZXRfb3B0aW9u cz0zRHRydWV9fXRoaXMuJGVsLmh0bWwoaShoKSl9LHI9CmVuZGVyUGFnaW5hdG9yOmZ1bmN0aW9u KGgpe3RoaXMub3B0aW9ucz0zRF8uZXh0ZW5kKHRoaXMub3B0aW9ucyxoKTt2YXIgZz0zRD0KdGhp cy50ZW1wbGF0ZVBhZ2luYXRvcigpO3RoaXMuJGVsLmZpbmQoIiNmb2xkZXJfcGFnaW5hdG9yIiku aHRtbChnKHtpZDp0aGlzPQoub3B0aW9ucy5pZCxzaG93X3BhZ2U6cGFyc2VJbnQodGhpcy5vcHRp b25zLnNob3dfcGFnZSkscGFnZV9jb3VudDpwYXJzZUludCg9CnRoaXMub3B0aW9ucy5wYWdlX2Nv dW50KSx0b3RhbF9pdGVtc19jb3VudDp0aGlzLm9wdGlvbnMudG90YWxfaXRlbXNfY291bnQsaT0K dGVtc19zaG93bjp0aGlzLm9wdGlvbnMuaXRlbXNfc2hvd259KSl9LGNvbmZpZ3VyZUVsZW1lbnRz OmZ1bmN0aW9uKGcpe3RoaXMuPQpvcHRpb25zPTNEXy5leHRlbmQodGhpcy5vcHRpb25zLGcpO2lm KHRoaXMub3B0aW9ucy5jYW5fYWRkX2xpYnJhcnlfaXRlbT0zRD0KPTNEPTNEdHJ1ZSl7JCgiLmFk ZC1saWJyYXJ5LWl0ZW1zIikuc2hvdygpfWVsc2V7JCgiLmFkZC1saWJyYXJ5LWl0ZW1zIikuaGlk PQplKCl9aWYodGhpcy5vcHRpb25zLmNvbnRhaW5zX2ZpbGU9M0Q9M0Q9M0R0cnVlKXtpZihHYWxh eHkuY3VyclVzZXIpe2lmKCFHYWw9CmF4eS5jdXJyVXNlci5pc0Fub255bW91cygpKXskKCIubG9n Z2VkLWRhdGFzZXQtbWFuaXB1bGF0aW9uIikuc2hvdygpOyQoIi5kYT0KdGFzZXQtbWFuaXB1bGF0 aW9uIikuc2hvdygpfWVsc2V7JCgiLmRhdGFzZXQtbWFuaXB1bGF0aW9uIikuc2hvdygpOyQoIi5s b2dnPQplZC1kYXRhc2V0LW1hbmlwdWxhdGlvbiIpLmhpZGUoKX19ZWxzZXskKCIubG9nZ2VkLWRh dGFzZXQtbWFuaXB1bGF0aW9uIikuaGk9CmRlKCk7JCgiLmRhdGFzZXQtbWFuaXB1bGF0aW9uIiku aGlkZSgpfX1lbHNleyQoIi5sb2dnZWQtZGF0YXNldC1tYW5pcHVsYXRpbz0KbiIpLmhpZGUoKTsk KCIuZGF0YXNldC1tYW5pcHVsYXRpb24iKS5oaWRlKCl9dGhpcy4kZWwuZmluZCgiW2RhdGEtdG9n Z2xlXSIpPQoudG9vbHRpcCgpfSxjcmVhdGVGb2xkZXJGcm9tTW9kYWw6ZnVuY3Rpb24oaSl7aS5w cmV2ZW50RGVmYXVsdCgpO2kuc3RvcFByb3A9CmFnYXRpb24oKTt2YXIgZz0zRHRoaXM7dmFyIGg9 M0R0aGlzLnRlbXBsYXRlTmV3Rm9sZGVySW5Nb2RhbCgpO3RoaXMubW9kYWw9Cj0zREdhbGF4eS5t b2RhbDt0aGlzLm1vZGFsLnNob3coe2Nsb3NpbmdfZXZlbnRzOnRydWUsdGl0bGU6IkNyZWF0ZSBO ZXcgRm9sZD0KZXIiLGJvZHk6aCgpLGJ1dHRvbnM6e0NyZWF0ZTpmdW5jdGlvbigpe2cuY3JlYXRl X25ld19mb2xkZXJfZXZlbnQoKX0sQ2xvc2U6PQpmdW5jdGlvbigpe0dhbGF4eS5tb2RhbC5oaWRl KCl9fX0pfSxjcmVhdGVfbmV3X2ZvbGRlcl9ldmVudDpmdW5jdGlvbigpe3ZhciA9Cmc9M0R0aGlz LnNlcmlhbGl6ZV9uZXdfZm9sZGVyKCk7aWYodGhpcy52YWxpZGF0ZV9uZXdfZm9sZGVyKGcpKXt2 YXIgaD0zRG5ldz0KIGQuRm9sZGVyQXNNb2RlbCgpO3VybF9pdGVtcz0zREJhY2tib25lLmhpc3Rv cnkuZnJhZ21lbnQuc3BsaXQoIi8iKTtjdXJyZW50PQpfZm9sZGVyX2lkPTNEdXJsX2l0ZW1zW3Vy bF9pdGVtcy5sZW5ndGgtMV07aC51cmw9M0RoLnVybFJvb3QrIi8iK2N1cnJlbnRfZm89CmxkZXJf aWQ7aC5zYXZlKGcse3N1Y2Nlc3M6ZnVuY3Rpb24oaSl7R2FsYXh5Lm1vZGFsLmhpZGUoKTtmLnN1 Y2Nlc3MoIkZvbGRlcj0KIGNyZWF0ZWQuIik7aS5zZXQoe3R5cGU6ImZvbGRlciJ9KTtHYWxheHku bGlicmFyaWVzLmZvbGRlckxpc3RWaWV3LmNvbGxlY3RpPQpvbi5hZGQoaSl9LGVycm9yOmZ1bmN0 aW9uKGosaSl7R2FsYXh5Lm1vZGFsLmhpZGUoKTtpZih0eXBlb2YgaS5yZXNwb25zZUpTT049CiE9 M0Q9M0QidW5kZWZpbmVkIil7Zi5lcnJvcihpLnJlc3BvbnNlSlNPTi5lcnJfbXNnKX1lbHNle2Yu ZXJyb3IoIkFuIGVycm9yID0Kb2N1cnJlZC4iKX19fSl9ZWxzZXtmLmVycm9yKCJGb2xkZXIncyBu YW1lIGlzIG1pc3NpbmcuIil9cmV0dXJuIGZhbHNlfSxzZXJpPQphbGl6ZV9uZXdfZm9sZGVyOmZ1 bmN0aW9uKCl7cmV0dXJue25hbWU6JCgiaW5wdXRbbmFtZT0zRCdOYW1lJ10iKS52YWwoKSxkZXM9 CmNyaXB0aW9uOiQoImlucHV0W25hbWU9M0QnRGVzY3JpcHRpb24nXSIpLnZhbCgpfX0sdmFsaWRh dGVfbmV3X2ZvbGRlcjpmdW5jdD0KaW9uKGcpe3JldHVybiBnLm5hbWUhPTNEPTNEIiJ9LG1vZGFs QnVsa0ltcG9ydDpmdW5jdGlvbigpe3ZhciBnPTNEJCgiI2ZvbGRlPQpyX3RhYmxlIikuZmluZCgi OmNoZWNrZWQiKTtpZihnLmxlbmd0aD0zRD0zRD0zRDApe2YuaW5mbygiWW91IG11c3Qgc2VsZWN0 IHM9Cm9tZSBkYXRhc2V0cyBmaXJzdC4iKX1lbHNle3RoaXMucmVmcmVzaFVzZXJIaXN0b3JpZXNM aXN0KGZ1bmN0aW9uKGkpe3ZhciBoPQo9M0RpLnRlbXBsYXRlQnVsa0ltcG9ydEluTW9kYWwoKTtp Lm1vZGFsPTNER2FsYXh5Lm1vZGFsO2kubW9kYWwuc2hvdyh7Y2xvc2k9Cm5nX2V2ZW50czp0cnVl LHRpdGxlOiJJbXBvcnQgaW50byBIaXN0b3J5Iixib2R5Omgoe2hpc3RvcmllczppLmhpc3Rvcmll cy5tbz0KZGVsc30pLGJ1dHRvbnM6e0ltcG9ydDpmdW5jdGlvbigpe2kuaW1wb3J0QWxsSW50b0hp c3RvcnkoKX0sQ2xvc2U6ZnVuY3Rpb24oPQope0dhbGF4eS5tb2RhbC5oaWRlKCl9fX0pfSl9fSxy ZWZyZXNoVXNlckhpc3Rvcmllc0xpc3Q6ZnVuY3Rpb24oaCl7dmFyIGc9M0Q9CnRoaXM7dGhpcy5o aXN0b3JpZXM9M0RuZXcgZC5HYWxheHlIaXN0b3JpZXMoKTt0aGlzLmhpc3Rvcmllcy5mZXRjaCh7 c3VjY2Vzcz0KOmZ1bmN0aW9uKCl7aChnKX0sZXJyb3I6ZnVuY3Rpb24oaixpKXtpZih0eXBlb2Yg aS5yZXNwb25zZUpTT04hPTNEPTNEInVuZGVmPQppbmVkIil7Zi5lcnJvcihpLnJlc3BvbnNlSlNP Ti5lcnJfbXNnKX1lbHNle2YuZXJyb3IoIkFuIGVycm9yIG9jdXJyZWQuIil9fX09Cil9LGltcG9y dEFsbEludG9IaXN0b3J5OmZ1bmN0aW9uKCl7dGhpcy5tb2RhbC5kaXNhYmxlQnV0dG9uKCJJbXBv cnQiKTt2YXIgaz0KPTNEJCgic2VsZWN0W25hbWU9M0RkYXRhc2V0X2ltcG9ydF9idWxrXSBvcHRp b246c2VsZWN0ZWQiKS52YWwoKTt2YXIgbj0zRCQoPQoic2VsZWN0W25hbWU9M0RkYXRhc2V0X2lt cG9ydF9idWxrXSBvcHRpb246c2VsZWN0ZWQiKS50ZXh0KCk7dGhpcy5vcHRpb25zLmw9CmFzdF91 c2VkX2hpc3RvcnlfaWQ9M0RrO3ZhciBoPTNEW107JCgiI2ZvbGRlcl90YWJsZSIpLmZpbmQoIjpj aGVja2VkIikuZWFjaD0KKGZ1bmN0aW9uKCl7aWYodGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVs ZW1lbnQuaWQhPTNEPTNEIiIpe2gucHVzaCh0aGlzLnBhPQpyZW50RWxlbWVudC5wYXJlbnRFbGVt ZW50LmlkKX19KTt2YXIgbT0zRFtdO2Zvcih2YXIgaj0zRGgubGVuZ3RoLTE7aj49M0QwO2o9Ci0t KXt2YXIgZz0zRGhbal07dmFyIGw9M0RuZXcgZC5IaXN0b3J5SXRlbSgpO2wudXJsPTNEbC51cmxS b290K2srIi9jb250ZW50cz0KIjtsLmNvbnRlbnQ9M0RnO2wuc291cmNlPTNEImxpYnJhcnkiO20u cHVzaChsKX10aGlzLmluaXRDaGFpbkNhbGxDb250cm9sKHtsPQplbmd0aDptLmxlbmd0aCxhY3Rp b246InRvX2hpc3RvcnkiLGhpc3RvcnlfbmFtZTpufSk7alF1ZXJ5LmdldEpTT04oZ2FsYXh5X2M9 Cm9uZmlnLnJvb3QrImhpc3Rvcnkvc2V0X2FzX2N1cnJlbnQ/aWQ9M0QiK2spO3RoaXMuY2hhaW5D YWxsSW1wb3J0aW5nSW50b0hpcz0KdG9yeShtLG4pfSx1cGRhdGVQcm9ncmVzczpmdW5jdGlvbigp e3RoaXMucHJvZ3Jlc3MrPTNEdGhpcy5wcm9ncmVzc1N0ZXA7JCgiPQoucHJvZ3Jlc3MtYmFyLWlt cG9ydCIpLndpZHRoKE1hdGgucm91bmQodGhpcy5wcm9ncmVzcykrIiUiKTt0eHRfcmVwcmVzZW50 YXQ9Cmlvbj0zRE1hdGgucm91bmQodGhpcy5wcm9ncmVzcykrIiUgQ29tcGxldGUiOyQoIi5jb21w bGV0aW9uX3NwYW4iKS50ZXh0KHR4dD0KX3JlcHJlc2VudGF0aW9uKX0sZG93bmxvYWQ6ZnVuY3Rp b24oZyxrKXt2YXIgaT0zRFtdOyQoIiNmb2xkZXJfdGFibGUiKS5maW5kPQooIjpjaGVja2VkIiku ZWFjaChmdW5jdGlvbigpe2lmKHRoaXMucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmlkIT0z RD0zRCI9CiIpe2kucHVzaCh0aGlzLnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5pZCl9fSk7 dmFyIGg9M0Qod2luZG93LmdhbGF4eV9jbz0KbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsi YXBpL2xpYnJhcmllcy9kYXRhc2V0cy9kb3dubG9hZC8iK2s7dmFyIGo9M0R7PQpsZF9pZHM6aX07 dGhpcy5wcm9jZXNzRG93bmxvYWQoaCxqLCJnZXQiKX0scHJvY2Vzc0Rvd25sb2FkOmZ1bmN0aW9u KGgsaSxqKXs9CmlmKGgmJmkpe2k9M0R0eXBlb2YgaT0zRD0zRD0zRCJzdHJpbmciP2k6JC5wYXJh bShpKTt2YXIgZz0zRCIiOyQuZWFjaChpLnNwbD0KaXQoIiYiKSxmdW5jdGlvbigpe3ZhciBrPTNE dGhpcy5zcGxpdCgiPTNEIik7Zys9M0QnPGlucHV0IHR5cGU9M0QiaGlkZGVuIiBuPQphbWU9M0Qi JytrWzBdKyciIHZhbHVlPTNEIicra1sxXSsnIiAvPid9KTskKCc8Zm9ybSBhY3Rpb249M0QiJyto KyciIG1ldGhvZD0KPTNEIicrKGp8fCJwb3N0IikrJyI+JytnKyI8L2Zvcm0+IikuYXBwZW5kVG8o ImJvZHkiKS5zdWJtaXQoKS5yZW1vdmUoKTtmLmluPQpmbygiWW91ciBkb3dubG9hZCB3aWxsIGJl Z2luIHNvb24uIil9ZWxzZXtmLmVycm9yKCJBbiBlcnJvciBvY2N1cnJlZC4iKX19LGE9CmRkRmls ZXNGcm9tSGlzdG9yeU1vZGFsOmZ1bmN0aW9uKCl7dGhpcy5yZWZyZXNoVXNlckhpc3Rvcmllc0xp c3QoZnVuY3Rpb24oZz0KKXtnLm1vZGFsPTNER2FsYXh5Lm1vZGFsO3ZhciBoPTNEZy50ZW1wbGF0 ZUFkZEZpbGVzRnJvbUhpc3RvcnkoKTt2YXIgaT0zRGcuPQpvcHRpb25zLmZ1bGxfcGF0aFtnLm9w dGlvbnMuZnVsbF9wYXRoLmxlbmd0aC0xXVsxXTtnLm1vZGFsLnNob3coe2Nsb3NpbmdfZXY9CmVu dHM6dHJ1ZSx0aXRsZToiQWRkaW5nIGRhdGFzZXRzIGZyb20geW91ciBoaXN0b3J5IHRvIGZvbGRl ciAiK2ksYm9keTpoKHtoaT0Kc3RvcmllczpnLmhpc3Rvcmllcy5tb2RlbHN9KSxidXR0b25zOntB ZGQ6ZnVuY3Rpb24oKXtnLmFkZEFsbERhdGFzZXRzRnJvbUhpPQpzdG9yeSgpfSxDbG9zZTpmdW5j dGlvbigpe0dhbGF4eS5tb2RhbC5oaWRlKCl9fSxjbG9zaW5nX2NhbGxiYWNrOmZ1bmN0aW9uKCk9 CntHYWxheHkubGlicmFyaWVzLmxpYnJhcnlfcm91dGVyLmJhY2soKX19KTtpZihnLmhpc3Rvcmll cy5tb2RlbHMubGVuZ3RoPjApez0KZy5mZXRjaEFuZERpc3BsYXlIaXN0b3J5Q29udGVudHMoZy5o aXN0b3JpZXMubW9kZWxzWzBdLmlkKTskKCIjZGF0YXNldF9hZGRfPQpidWxrIikuY2hhbmdlKGZ1 bmN0aW9uKGope2cuZmV0Y2hBbmREaXNwbGF5SGlzdG9yeUNvbnRlbnRzKGoudGFyZ2V0LnZhbHVl KX09Cil9ZWxzZXtmLmVycm9yKCJBbiBlcnJvciBvY3VycmVkLiIpfX0pfSxpbXBvcnRGaWxlc0Zy b21QYXRoTW9kYWw6ZnVuY3Rpb24oKT0Ke3ZhciBoPTNEdGhpczt0aGlzLm1vZGFsPTNER2FsYXh5 Lm1vZGFsO3ZhciBnPTNEdGhpcy50ZW1wbGF0ZUltcG9ydFBhdGhNb2RhPQpsKCk7dGhpcy5tb2Rh bC5zaG93KHtjbG9zaW5nX2V2ZW50czp0cnVlLHRpdGxlOiJQbGVhc2UgZW50ZXIgcGF0aHMgdG8g aW1wb3I9CnQiLGJvZHk6Zyh7fSksYnV0dG9uczp7SW1wb3J0OmZ1bmN0aW9uKCl7aC5pbXBvcnRG cm9tUGF0aHNDbGlja2VkKGgpfSxDbG9zZT0KOmZ1bmN0aW9uKCl7R2FsYXh5Lm1vZGFsLmhpZGUo KX19LGNsb3NpbmdfY2FsbGJhY2s6ZnVuY3Rpb24oKXtHYWxheHkubGlicmFyPQppZXMubGlicmFy eV9yb3V0ZXIubmF2aWdhdGUoImZvbGRlcnMvIitoLmlkLHt0cmlnZ2VyOnRydWV9KX19KTt0aGlz LnJlbmRlclM9CmVsZWN0Qm94ZXMoKX0sZmV0Y2hFeHRBbmRHZW5vbWVzOmZ1bmN0aW9uKCl7dmFy IGc9M0R0aGlzO2UuZ2V0KHt1cmw6KHdpbmRvdz0KLmdhbGF4eV9jb25maWc/Z2FsYXh5X2NvbmZp Zy5yb290OiIvIikrImFwaS9kYXRhdHlwZXM/ZXh0ZW5zaW9uX29ubHk9M0RGYWxzPQplIixzdWNj ZXNzOmZ1bmN0aW9uKGgpe2ZvcihrZXkgaW4gaCl7Zy5saXN0X2V4dGVuc2lvbnMucHVzaCh7aWQ6 aFtrZXldLmV4dGU9Cm5zaW9uLHRleHQ6aFtrZXldLmV4dGVuc2lvbixkZXNjcmlwdGlvbjpoW2tl eV0uZGVzY3JpcHRpb24sZGVzY3JpcHRpb25fdXJsOj0KaFtrZXldLmRlc2NyaXB0aW9uX3VybH0p fWcubGlzdF9leHRlbnNpb25zLnNvcnQoZnVuY3Rpb24oaixpKXtyZXR1cm4gai5pZD5pPQouaWQ/ MTpqLmlkPGkuaWQ/LTE6MH0pO2cubGlzdF9leHRlbnNpb25zLnVuc2hpZnQoZy5hdXRvKX19KTtl LmdldCh7dXJsOih3aW49CmRvdy5nYWxheHlfY29uZmlnP2dhbGF4eV9jb25maWcucm9vdDoiLyIp KyJhcGkvZ2Vub21lcyIsc3VjY2VzczpmdW5jdGlvbihoKT0Ke2ZvcihrZXkgaW4gaCl7Zy5saXN0 X2dlbm9tZXMucHVzaCh7aWQ6aFtrZXldWzFdLHRleHQ6aFtrZXldWzBdfSl9Zy5saXN0X2dlPQpu b21lcy5zb3J0KGZ1bmN0aW9uKGosaSl7cmV0dXJuIGouaWQ+aS5pZD8xOmouaWQ8aS5pZD8tMTow fSl9fSl9LHJlbmRlclNlbGU9CmN0Qm94ZXM6ZnVuY3Rpb24oKXt2YXIgZz0zRHRoaXM7dGhpcy5z ZWxlY3RfZ2Vub21lPTNEbmV3IGEuVmlldyh7Y3NzOiJsaWJyYT0KcnktZ2Vub21lLXNlbGVjdCIs ZGF0YTpnLmxpc3RfZ2Vub21lcyxjb250YWluZXI6R2FsYXh5Lm1vZGFsLiRlbC5maW5kKCIjbGli PQpyYXJ5X2dlbm9tZV9zZWxlY3QiKSx2YWx1ZToiPyJ9KTt0aGlzLnNlbGVjdF9leHRlbnNpb249 M0RuZXcgYS5WaWV3KHtjc3M6Imw9CmlicmFyeS1leHRlbnNpb24tc2VsZWN0IixkYXRhOmcubGlz dF9leHRlbnNpb25zLGNvbnRhaW5lcjpHYWxheHkubW9kYWwuJGVsLj0KZmluZCgiI2xpYnJhcnlf ZXh0ZW5zaW9uX3NlbGVjdCIpLHZhbHVlOiJhdXRvIn0pfSxpbXBvcnRGaWxlc0Zyb21HYWxheHlG b2xkPQplck1vZGFsOmZ1bmN0aW9uKGcpe3ZhciBpPTNEdGhpczt2YXIgaD0zRHRoaXMudGVtcGxh dGVCcm93c2VyTW9kYWwoKTt0aGlzLm09Cm9kYWw9M0RHYWxheHkubW9kYWw7dGhpcy5tb2RhbC5z aG93KHtjbG9zaW5nX2V2ZW50czp0cnVlLHRpdGxlOiJQbGVhc2Ugc2VsZT0KY3QgZm9sZGVycyBv ciBmaWxlcyIsYm9keTpoKHt9KSxidXR0b25zOntJbXBvcnQ6ZnVuY3Rpb24oKXtpLmltcG9ydEZy b21Kc3RyPQplZVBhdGgoaSxnKX0sQ2xvc2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlkZSgp fX0sY2xvc2luZ19jYWxsYmFjazpmdW5jdGk9Cm9uKCl7R2FsYXh5LmxpYnJhcmllcy5saWJyYXJ5 X3JvdXRlci5uYXZpZ2F0ZSgiZm9sZGVycy8iK2kuaWQse3RyaWdnZXI6dHJ1ZT0KfSl9fSk7dGhp cy5yZW5kZXJTZWxlY3RCb3hlcygpO2cuZGlzYWJsZWRfanN0cmVlX2VsZW1lbnQ9M0QiZm9sZGVy cyI7dGhpcy5yPQplbmRlckpzdHJlZShnKTskKCJpbnB1dFt0eXBlPTNEcmFkaW9dIikuY2hhbmdl KGZ1bmN0aW9uKGope2lmKGoudGFyZ2V0LnZhbHU9CmU9M0Q9M0Q9M0QianN0cmVlLWRpc2FibGUt Zm9sZGVycyIpe2cuZGlzYWJsZWRfanN0cmVlX2VsZW1lbnQ9M0QiZm9sZGVycyI7aT0KLnJlbmRl ckpzdHJlZShnKTskKCIuanN0cmVlLWZvbGRlcnMtbWVzc2FnZSIpLmhpZGUoKTskKCIuanN0cmVl LXByZXNlcnZlLXN0PQpydWN0dXJlIikuaGlkZSgpOyQoIi5qc3RyZWUtbGluay1maWxlcyIpLmhp ZGUoKTskKCIuanN0cmVlLWZpbGVzLW1lc3NhZ2UiKS49CnNob3coKX1lbHNle2lmKGoudGFyZ2V0 LnZhbHVlPTNEPTNEPTNEImpzdHJlZS1kaXNhYmxlLWZpbGVzIil7JCgiLmpzdHJlZS1maT0KbGVz LW1lc3NhZ2UiKS5oaWRlKCk7JCgiLmpzdHJlZS1mb2xkZXJzLW1lc3NhZ2UiKS5zaG93KCk7JCgi LmpzdHJlZS1saW5rLWZpPQpsZXMiKS5zaG93KCk7JCgiLmpzdHJlZS1wcmVzZXJ2ZS1zdHJ1Y3R1 cmUiKS5zaG93KCk7Zy5kaXNhYmxlZF9qc3RyZWVfZWxlbWU9Cm50PTNEImZpbGVzIjtpLnJlbmRl ckpzdHJlZShnKX19fSl9LHJlbmRlckpzdHJlZTpmdW5jdGlvbihnKXt2YXIgaT0zRHRoaXM7dD0K aGlzLm9wdGlvbnM9M0RfLmV4dGVuZCh0aGlzLm9wdGlvbnMsZyk7dmFyIGo9M0RnLnNvdXJjZXx8 InVzZXJkaXIiO3ZhciBoPTNEPQp0aGlzLm9wdGlvbnMuZGlzYWJsZWRfanN0cmVlX2VsZW1lbnQ7 dGhpcy5qc3RyZWU9M0RuZXcgZC5Kc3RyZWUoKTt0aGlzLmpzdHI9CmVlLnVybD0zRHRoaXMuanN0 cmVlLnVybFJvb3QrIj90YXJnZXQ9M0QiK2orIiZmb3JtYXQ9M0Rqc3RyZWUmZGlzYWJsZT0zRCIr aD0KO3RoaXMuanN0cmVlLmZldGNoKHtzdWNjZXNzOmZ1bmN0aW9uKGwsayl7ZGVmaW5lKCJqcXVl cnkiLGZ1bmN0aW9uKCl7cmV0dXJuPQogalF1ZXJ5fSk7cmVxdWlyZShbImxpYnMvanF1ZXJ5L2pz dHJlZSJdLGZ1bmN0aW9uKG0peyQoIiNqc3RyZWVfYnJvd3NlciIpLmo9CnN0cmVlKCJkZXN0cm95 Iik7JCgiI2pzdHJlZV9icm93c2VyIikuanN0cmVlKHtjb3JlOntkYXRhOmx9LHBsdWdpbnM6WyJ0 eXBlcz0KIiwiY2hlY2tib3giXSx0eXBlczp7Zm9sZGVyOntpY29uOiJqc3RyZWUtZm9sZGVyIn0s ZmlsZTp7aWNvbjoianN0cmVlLWZpbGUiPQp9fSxjaGVja2JveDp7dGhyZWVfc3RhdGU6ZmFsc2V9 fSl9KX0sZXJyb3I6ZnVuY3Rpb24obCxrKXtpZih0eXBlb2Ygay5yZXNwb249CnNlSlNPTiE9M0Q9 M0QidW5kZWZpbmVkIil7Zi5lcnJvcihrLnJlc3BvbnNlSlNPTi5lcnJfbXNnKX1lbHNle2YuZXJy b3IoIkFuID0KZXJyb3Igb2N1cnJlZC4iKX19fSl9LGltcG9ydEZyb21QYXRoc0NsaWNrZWQ6ZnVu Y3Rpb24oKXt2YXIgZz0zRHRoaXMubW9kYWwuPQokZWwuZmluZCgiLnByZXNlcnZlLWNoZWNrYm94 IikuaXMoIjpjaGVja2VkIik7dmFyIG49M0R0aGlzLm1vZGFsLiRlbC5maW5kKCI9Ci5saW5rLWNo ZWNrYm94IikuaXMoIjpjaGVja2VkIik7dmFyIGg9M0R0aGlzLnNlbGVjdF9leHRlbnNpb24udmFs dWUoKTt2YXIgaj0KPTNEdGhpcy5zZWxlY3RfZ2Vub21lLnZhbHVlKCk7dmFyIG09M0QkKCJ0ZXh0 YXJlYSNpbXBvcnRfcGF0aHMiKS52YWwoKTt2YXIgPQpsPTNEW107aWYoIW0pe2YuaW5mbygiUGxl YXNlIGVudGVyIGEgcGF0aCByZWxhdGl2ZSB0byBHYWxheHkgcm9vdC4iKX1lbHNle3Q9Cmhpcy5t b2RhbC5kaXNhYmxlQnV0dG9uKCJJbXBvcnQiKTttPTNEbS5zcGxpdCgiXG4iKTtmb3IodmFyIGs9 M0RtLmxlbmd0aC0xOz0Kaz49M0QwO2stLSl7dHJpbW1lZD0zRG1ba10udHJpbSgpO2lmKHRyaW1t ZWQubGVuZ3RoIT0zRD0zRDApe2wucHVzaCh0cmltbWVkPQopfX10aGlzLmluaXRDaGFpbkNhbGxD b250cm9sKHtsZW5ndGg6bC5sZW5ndGgsYWN0aW9uOiJhZGRpbmdfZGF0YXNldHMifSk7dGg9Cmlz LmNoYWluQ2FsbEltcG9ydGluZ0ZvbGRlcnMoe3BhdGhzOmwscHJlc2VydmVfZGlyczpnLGxpbmtf ZGF0YTpuLHNvdXJjZToiYT0KZG1pbl9wYXRoIixmaWxlX3R5cGU6aCxkYmtleTpqfSl9fSxpbml0 Q2hhaW5DYWxsQ29udHJvbDpmdW5jdGlvbihnKXt2YXIgaDtzPQp3aXRjaChnLmFjdGlvbil7Y2Fz ZSJhZGRpbmdfZGF0YXNldHMiOmg9M0R0aGlzLnRlbXBsYXRlQWRkaW5nRGF0YXNldHNQcm9ncmU9 CnNzQmFyKCk7dGhpcy5tb2RhbC4kZWwuZmluZCgiLm1vZGFsLWJvZHkiKS5odG1sKGgoe2ZvbGRl cl9uYW1lOnRoaXMub3B0aW9ucz0KLmZvbGRlcl9uYW1lfSkpO2JyZWFrO2Nhc2UiZGVsZXRpbmdf ZGF0YXNldHMiOmg9M0R0aGlzLnRlbXBsYXRlRGVsZXRpbmdEYXRhPQpzZXRzUHJvZ3Jlc3NCYXIo KTt0aGlzLm1vZGFsLiRlbC5maW5kKCIubW9kYWwtYm9keSIpLmh0bWwoaCgpKTticmVhaztjYXNl InQ9Cm9faGlzdG9yeSI6aD0zRHRoaXMudGVtcGxhdGVJbXBvcnRJbnRvSGlzdG9yeVByb2dyZXNz QmFyKCk7dGhpcy5tb2RhbC4kZWwuZj0KaW5kKCIubW9kYWwtYm9keSIpLmh0bWwoaCh7aGlzdG9y eV9uYW1lOmcuaGlzdG9yeV9uYW1lfSkpO2JyZWFrO2RlZmF1bHQ6Y29uPQpzb2xlLmVycm9yKCJX cm9uZyBhY3Rpb24gc3BlY2lmaWVkLiIpO2JyZWFrfXRoaXMucHJvZ3Jlc3M9M0QwO3RoaXMucHJv Z3Jlc3M9ClN0ZXA9M0QxMDAvZy5sZW5ndGg7dGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJv bC50b3RhbF9udW1iZXI9M0RnLmxlbmd0aD0KO3RoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRy b2wuZmFpbGVkX251bWJlcj0zRDB9LGltcG9ydEZyb21Kc3RyZWVQYXRoOmZ1PQpuY3Rpb24obixy KXt2YXIgZz0zRCQoIiNqc3RyZWVfYnJvd3NlciIpLmpzdHJlZSgpLmdldF9zZWxlY3RlZCh0cnVl KTt2YXIgbT0KPTNEdGhpcy5tb2RhbC4kZWwuZmluZCgiLnByZXNlcnZlLWNoZWNrYm94IikuaXMo IjpjaGVja2VkIik7dmFyIG89M0R0aGlzLm1vPQpkYWwuJGVsLmZpbmQoIi5saW5rLWNoZWNrYm94 IikuaXMoIjpjaGVja2VkIik7dmFyIGo9M0R0aGlzLnNlbGVjdF9leHRlbnNpb249Ci52YWx1ZSgp O3ZhciBwPTNEdGhpcy5zZWxlY3RfZ2Vub21lLnZhbHVlKCk7dmFyIGs9M0RnWzBdLnR5cGU7dmFy IHE9M0RbXTtpZj0KKGcubGVuZ3RoPDEpe2YuaW5mbygiUGxlYXNlIHNlbGVjdCBzb21lIGl0ZW1z IGZpcnN0LiIpfWVsc2V7dGhpcy5tb2RhbC5kaXNhPQpibGVCdXR0b24oIkltcG9ydCIpO2Zvcih2 YXIgbD0zRGcubGVuZ3RoLTE7bD49M0QwO2wtLSl7aWYoZ1tsXS5saV9hdHRyLmZ1bGw9Cl9wYXRo IT0zRD0zRHVuZGVmaW5lZCl7cS5wdXNoKGdbbF0ubGlfYXR0ci5mdWxsX3BhdGgpfX10aGlzLmlu aXRDaGFpbkNhbGxDbz0KbnRyb2woe2xlbmd0aDpxLmxlbmd0aCxhY3Rpb246ImFkZGluZ19kYXRh c2V0cyJ9KTtpZihrPTNEPTNEPTNEImZvbGRlciIpe3ZhPQpyIGg9M0RyLnNvdXJjZSsiX2ZvbGRl ciI7dGhpcy5jaGFpbkNhbGxJbXBvcnRpbmdGb2xkZXJzKHtwYXRoczpxLHByZXNlcnZlX2Q9Cmly czptLGxpbmtfZGF0YTpvLHNvdXJjZTpoLGZpbGVfdHlwZTpqLGRia2V5OnB9KX1lbHNle2lmKGs9 M0Q9M0Q9M0QiZmlsZSIpez0KdmFyIGg9M0RyLnNvdXJjZSsiX2ZpbGUiO3RoaXMuY2hhaW5DYWxs SW1wb3J0aW5nVXNlcmRpckZpbGVzKHtwYXRoczpxLGZpbGVfPQp0eXBlOmosZGJrZXk6cCxzb3Vy Y2U6aH0pfX19fSxmZXRjaEFuZERpc3BsYXlIaXN0b3J5Q29udGVudHM6ZnVuY3Rpb24oaSl7dmE9 CnIgaD0zRG5ldyBkLkhpc3RvcnlDb250ZW50cyh7aWQ6aX0pO3ZhciBnPTNEdGhpcztoLmZldGNo KHtzdWNjZXNzOmZ1bmN0aW9uKD0Kayl7dmFyIGo9M0RnLnRlbXBsYXRlSGlzdG9yeUNvbnRlbnRz KCk7Zy5oaXN0b3JpZXMuZ2V0KGkpLnNldCh7Y29udGVudHM6a30pPQo7Zy5tb2RhbC4kZWwuZmlu ZCgiI3NlbGVjdGVkX2hpc3RvcnlfY29udGVudCIpLmh0bWwoaih7aGlzdG9yeV9jb250ZW50czpr Lm09Cm9kZWxzLnJldmVyc2UoKX0pKX0sZXJyb3I6ZnVuY3Rpb24oayxqKXtpZih0eXBlb2Ygai5y ZXNwb25zZUpTT04hPTNEPTNEInVuZD0KZWZpbmVkIil7Zi5lcnJvcihqLnJlc3BvbnNlSlNPTi5l cnJfbXNnKX1lbHNle2YuZXJyb3IoIkFuIGVycm9yIG9jdXJyZWQuIil9PQp9fSl9LGFkZEFsbERh dGFzZXRzRnJvbUhpc3Rvcnk6ZnVuY3Rpb24oKXt2YXIgbD0zRHRoaXMubW9kYWwuJGVsLmZpbmQo IiNzZWw9CmVjdGVkX2hpc3RvcnlfY29udGVudCIpLmZpbmQoIjpjaGVja2VkIik7dmFyIGc9M0Rb XTt2YXIgaz0zRFtdO2lmKGwubGVuZ3RoPD0KMSl7Zi5pbmZvKCJZb3UgbXVzdCBzZWxlY3Qgc29t ZSBkYXRhc2V0cyBmaXJzdC4iKX1lbHNle3RoaXMubW9kYWwuZGlzYWJsZUJ1PQp0dG9uKCJBZGQi KTtsLmVhY2goZnVuY3Rpb24oKXt2YXIgaT0zRCQodGhpcy5wYXJlbnRFbGVtZW50KS5kYXRhKCJp ZCIpO2lmKGk9Cil7Zy5wdXNoKGkpfX0pO2Zvcih2YXIgaj0zRGcubGVuZ3RoLTE7aj49M0QwO2ot LSl7aGlzdG9yeV9kYXRhc2V0X2lkPTNEZ1tqXT0KO3ZhciBoPTNEbmV3IGQuSXRlbSgpO2gudXJs PTNEKHdpbmRvdy5nYWxheHlfY29uZmlnP2dhbGF4eV9jb25maWcucm9vdDoiLyIpPQorImFwaS9m b2xkZXJzLyIrdGhpcy5vcHRpb25zLmlkKyIvY29udGVudHMiO2guc2V0KHtmcm9tX2hkYV9pZDpo aXN0b3J5X2RhdGE9CnNldF9pZH0pO2sucHVzaChoKX10aGlzLmluaXRDaGFpbkNhbGxDb250cm9s KHtsZW5ndGg6ay5sZW5ndGgsYWN0aW9uOiJhZGRpbj0KZ19kYXRhc2V0cyJ9KTt0aGlzLmNoYWlu Q2FsbEFkZGluZ0hkYXMoayl9fSxjaGFpbkNhbGxJbXBvcnRpbmdJbnRvSGlzdG9yeTpmPQp1bmN0 aW9uKGgsayl7dmFyIGc9M0R0aGlzO3ZhciBpPTNEaC5wb3AoKTtpZih0eXBlb2YgaT0zRD0zRCJ1 bmRlZmluZWQiKXtpZig9CnRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251 bWJlcj0zRD0zRD0zRDApe2Yuc3VjY2VzcygiU2VsZWN0ZT0KZCBkYXRhc2V0cyBpbXBvcnRlZCBp bnRvIGhpc3RvcnkuIENsaWNrIHRoaXMgdG8gc3RhcnQgYW5hbHlzaW5nIGl0LiIsIiIse29uPQpj bGljazpmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbj0zRCIvIn19KX1lbHNle2lmKHRoaXMub3B0 aW9ucy5jaGFpbl9jYWxsX2M9Cm9udHJvbC5mYWlsZWRfbnVtYmVyPTNEPTNEPTNEdGhpcy5vcHRp b25zLmNoYWluX2NhbGxfY29udHJvbC50b3RhbF9udW1iZXIpez0KZi5lcnJvcigiVGhlcmUgd2Fz IGFuIGVycm9yIGFuZCBubyBkYXRhc2V0cyB3ZXJlIGltcG9ydGVkIGludG8gaGlzdG9yeS4iKX1l PQpsc2V7aWYodGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC5mYWlsZWRfbnVtYmVyPHRo aXMub3B0aW9ucy5jaGFpbl9jYWw9CmxfY29udHJvbC50b3RhbF9udW1iZXIpe2Yud2FybmluZygi U29tZSBvZiB0aGUgZGF0YXNldHMgY291bGQgbm90IGJlIGltcG9ydD0KZWQgaW50byBoaXN0b3J5 LiBDbGljayB0aGlzIHRvIHNlZSB3aGF0IHdhcyBpbXBvcnRlZC4iLCIiLHtvbmNsaWNrOmZ1bmN0 aW9uPQooKXt3aW5kb3cubG9jYXRpb249M0QiLyJ9fSl9fX1HYWxheHkubW9kYWwuaGlkZSgpO3Jl dHVybiB0cnVlfXZhciBqPTNEJC53aGU9Cm4oaS5zYXZlKHtjb250ZW50OmkuY29udGVudCxzb3Vy Y2U6aS5zb3VyY2V9KSk7ai5kb25lKGZ1bmN0aW9uKCl7Zy51cGRhdGVQcj0Kb2dyZXNzKCk7Zy5j aGFpbkNhbGxJbXBvcnRpbmdJbnRvSGlzdG9yeShoLGspfSkuZmFpbChmdW5jdGlvbigpe2cub3B0 aW9ucy5jPQpoYWluX2NhbGxfY29udHJvbC5mYWlsZWRfbnVtYmVyKz0zRDE7Zy51cGRhdGVQcm9n cmVzcygpO2cuY2hhaW5DYWxsSW1wb3J0aW49CmdJbnRvSGlzdG9yeShoLGspfSl9LGNoYWluQ2Fs bEltcG9ydGluZ1VzZXJkaXJGaWxlczpmdW5jdGlvbihnKXt2YXIgaD0zRHRoaT0Kczt2YXIgaT0z RGcucGF0aHMucG9wKCk7aWYodHlwZW9mIGk9M0Q9M0Q9M0QidW5kZWZpbmVkIil7aWYodGhpcy5v cHRpb25zLmNoPQphaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI9M0Q9M0Q9M0QwKXtmLnN1 Y2Nlc3MoIlNlbGVjdGVkIGZpbGVzIGltcG9ydGU9CmQgaW50byB0aGUgY3VycmVudCBmb2xkZXIi KTtHYWxheHkubW9kYWwuaGlkZSgpfWVsc2V7Zi5lcnJvcigiQW4gZXJyb3Igb2NjdT0KcmVkLiIp fXJldHVybiB0cnVlfXZhciBqPTNEJC53aGVuKCQucG9zdCgod2luZG93LmdhbGF4eV9jb25maWc/ Z2FsYXh5X2NvbmZpPQpnLnJvb3Q6Ii8iKSsiYXBpL2xpYnJhcmllcy9kYXRhc2V0cz9lbmNvZGVk X2ZvbGRlcl9pZD0zRCIraC5pZCsiJnNvdXJjZT0zRCI9CitnLnNvdXJjZSsiJnBhdGg9M0QiK2kr IiZmaWxlX3R5cGU9M0QiK2cuZmlsZV90eXBlKyImZGJrZXk9M0QiK2cuZGJrZXkpKTtqLj0KZG9u ZShmdW5jdGlvbihrKXtoLnVwZGF0ZVByb2dyZXNzKCk7aC5jaGFpbkNhbGxJbXBvcnRpbmdVc2Vy ZGlyRmlsZXMoZyl9KS5mPQphaWwoZnVuY3Rpb24oKXtoLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250 cm9sLmZhaWxlZF9udW1iZXIrPTNEMTtoLnVwZGF0ZVByb2c9CnJlc3MoKTtoLmNoYWluQ2FsbElt cG9ydGluZ1VzZXJkaXJGaWxlcyhnKX0pfSxjaGFpbkNhbGxJbXBvcnRpbmdGb2xkZXJzOmZ1bj0K Y3Rpb24oZyl7dmFyIGg9M0R0aGlzO3ZhciBpPTNEZy5wYXRocy5wb3AoKTtpZih0eXBlb2YgaT0z RD0zRCJ1bmRlZmluZWQiKXtpPQpmKHRoaXMub3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFp bGVkX251bWJlcj0zRD0zRD0zRDApe2Yuc3VjY2VzcygiU2VsZWM9CnRlZCBmb2xkZXJzIGFuZCB0 aGVpciBjb250ZW50cyBpbXBvcnRlZCBpbnRvIHRoZSBjdXJyZW50IGZvbGRlci4iKTtHYWxheHku bT0Kb2RhbC5oaWRlKCl9ZWxzZXtmLmVycm9yKCJBbiBlcnJvciBvY2N1cmVkLiIpfXJldHVybiB0 cnVlfXZhciBqPTNEJC53aGVuKCQuPQpwb3N0KCh3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlf Y29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2xpYnJhcmllcy9kYXRhc2V0cz89CmVuY29kZWRfZm9sZGVy X2lkPTNEIitoLmlkKyImc291cmNlPTNEIitnLnNvdXJjZSsiJnBhdGg9M0QiK2krIiZwcmVzZXJ2 ZV9kaT0KcnM9M0QiK2cucHJlc2VydmVfZGlycysiJmxpbmtfZGF0YT0zRCIrZy5saW5rX2RhdGEr IiZmaWxlX3R5cGU9M0QiK2cuZmlsZV90PQp5cGUrIiZkYmtleT0zRCIrZy5kYmtleSkpO2ouZG9u ZShmdW5jdGlvbihrKXtoLnVwZGF0ZVByb2dyZXNzKCk7aC5jaGFpbkNhbGw9CkltcG9ydGluZ0Zv bGRlcnMoZyl9KS5mYWlsKGZ1bmN0aW9uKCl7aC5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC5m YWlsZWRfbj0KdW1iZXIrPTNEMTtoLnVwZGF0ZVByb2dyZXNzKCk7aC5jaGFpbkNhbGxJbXBvcnRp bmdGb2xkZXJzKGcpfSl9LGNoYWluQ2FsbEFkPQpkaW5nSGRhczpmdW5jdGlvbihoKXt2YXIgZz0z RHRoaXM7dGhpcy5hZGRlZF9oZGFzPTNEbmV3IGQuRm9sZGVyKCk7dmFyIGk9M0Q9CmgucG9wKCk7 aWYodHlwZW9mIGk9M0Q9M0QidW5kZWZpbmVkIil7aWYodGhpcy5vcHRpb25zLmNoYWluX2NhbGxf Y29udHJvbC5mYT0KaWxlZF9udW1iZXI9M0Q9M0Q9M0QwKXtmLnN1Y2Nlc3MoIlNlbGVjdGVkIGRh dGFzZXRzIGZyb20gaGlzdG9yeSBhZGRlZCB0byB0PQpoZSBmb2xkZXIiKX1lbHNle2lmKHRoaXMu b3B0aW9ucy5jaGFpbl9jYWxsX2NvbnRyb2wuZmFpbGVkX251bWJlcj0zRD0zRD0zRHQ9Cmhpcy5v cHRpb25zLmNoYWluX2NhbGxfY29udHJvbC50b3RhbF9udW1iZXIpe2YuZXJyb3IoIlRoZXJlIHdh cyBhbiBlcnJvciBhbj0KZCBubyBkYXRhc2V0cyB3ZXJlIGFkZGVkIHRvIHRoZSBmb2xkZXIuIil9 ZWxzZXtpZih0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jPQpvbnRyb2wuZmFpbGVkX251bWJlcjx0 aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlcil7Zi53YXJuaW49Cmco IlNvbWUgb2YgdGhlIGRhdGFzZXRzIGNvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUgZm9sZGVyIil9 fX1HYWxheHkubW9kYWwuaD0KaWRlKCk7cmV0dXJuIHRoaXMuYWRkZWRfaGRhc312YXIgaj0zRCQu d2hlbihpLnNhdmUoe2Zyb21faGRhX2lkOmkuZ2V0KCJmcm9tPQpfaGRhX2lkIil9KSk7ai5kb25l KGZ1bmN0aW9uKGspe0dhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzdFZpZXcuY29sbGVjdGlvbi49 CmFkZChrKTtnLnVwZGF0ZVByb2dyZXNzKCk7Zy5jaGFpbkNhbGxBZGRpbmdIZGFzKGgpfSkuZmFp bChmdW5jdGlvbigpe2cub3B0aT0Kb25zLmNoYWluX2NhbGxfY29udHJvbC5mYWlsZWRfbnVtYmVy Kz0zRDE7Zy51cGRhdGVQcm9ncmVzcygpO2cuY2hhaW5DYWxsQWRkPQppbmdIZGFzKGgpfSl9LGNo YWluQ2FsbERlbGV0aW5nSGRhczpmdW5jdGlvbihoKXt2YXIgZz0zRHRoaXM7dGhpcy5kZWxldGVk X2w9CmRkYXM9M0RuZXcgZC5Gb2xkZXIoKTt2YXIgaT0zRGgucG9wKCk7aWYodHlwZW9mIGk9M0Q9 M0Q9M0QidW5kZWZpbmVkIil7aWYodD0KaGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZh aWxlZF9udW1iZXI9M0Q9M0Q9M0QwKXtmLnN1Y2Nlc3MoIlNlbGVjdGVkPQogZGF0YXNldHMgd2Vy ZSBkZWxldGVkLiIpfWVsc2V7aWYodGhpcy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbC5mYWls ZWRfbnU9Cm1iZXI9M0Q9M0Q9M0R0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFs X251bWJlcil7Zi5lcnJvcigiVGhlcmUgdz0KYXMgYW4gZXJyb3IgYW5kIG5vIGRhdGFzZXRzIHdl cmUgZGVsZXRlZC4gUGxlYXNlIG1ha2Ugc3VyZSB5b3UgaGF2ZSBzdWZmaWNpPQplbnQgcGVybWlz c2lvbnMuIil9ZWxzZXtpZih0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9u dW1iZXI8dGg9CmlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLnRvdGFsX251bWJlcil7Zi53 YXJuaW5nKCJTb21lIG9mIHRoZSBkYXRhc2V0cz0KIGNvdWxkIG5vdCBiZSBkZWxldGVkLiBQbGVh c2UgbWFrZSBzdXJlIHlvdSBoYXZlIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMuIil9PQp9fUdhbGF4 eS5tb2RhbC5oaWRlKCk7cmV0dXJuIHRoaXMuZGVsZXRlZF9sZGRhc312YXIgaj0zRCQud2hlbihp LmRlc3Ryb3koKSk9CjtqLmRvbmUoZnVuY3Rpb24obCl7R2FsYXh5LmxpYnJhcmllcy5mb2xkZXJM aXN0Vmlldy5jb2xsZWN0aW9uLnJlbW92ZShpLmlkKT0KO2cudXBkYXRlUHJvZ3Jlc3MoKTtpZihH YWxheHkubGlicmFyaWVzLmZvbGRlckxpc3RWaWV3Lm9wdGlvbnMuaW5jbHVkZV9kZWxlPQp0ZWQp e3ZhciBrPTNEbmV3IGQuSXRlbShsKTtHYWxheHkubGlicmFyaWVzLmZvbGRlckxpc3RWaWV3LmNv bGxlY3Rpb24uYWRkKGs9Cil9Zy5jaGFpbkNhbGxEZWxldGluZ0hkYXMoaCl9KS5mYWlsKGZ1bmN0 aW9uKCl7Zy5vcHRpb25zLmNoYWluX2NhbGxfY29udHJvbD0KLmZhaWxlZF9udW1iZXIrPTNEMTtn LnVwZGF0ZVByb2dyZXNzKCk7Zy5jaGFpbkNhbGxEZWxldGluZ0hkYXMoaCl9KX0sY2hlY2tJPQpu Y2x1ZGVEZWxldGVkOmZ1bmN0aW9uKGcpe2lmKGcudGFyZ2V0LmNoZWNrZWQpe0dhbGF4eS5saWJy YXJpZXMuZm9sZGVyTGlzdFY9Cmlldy5mZXRjaEZvbGRlcih7aW5jbHVkZV9kZWxldGVkOnRydWV9 KX1lbHNle0dhbGF4eS5saWJyYXJpZXMuZm9sZGVyTGlzdFZpZT0Kdy5mZXRjaEZvbGRlcih7aW5j bHVkZV9kZWxldGVkOmZhbHNlfSl9fSxkZWxldGVTZWxlY3RlZERhdGFzZXRzOmZ1bmN0aW9uKCl7 PQp2YXIgZz0zRCQoIiNmb2xkZXJfdGFibGUiKS5maW5kKCI6Y2hlY2tlZCIpO2lmKGcubGVuZ3Ro PTNEPTNEPTNEMCl7Zi5pbmZvKCI9CllvdSBtdXN0IHNlbGVjdCBhdCBsZWFzdCBvbmUgZGF0YXNl dCBmb3IgZGVsZXRpb24uIil9ZWxzZXt2YXIgaz0zRHRoaXMudGVtcD0KbGF0ZURlbGV0aW5nRGF0 YXNldHNQcm9ncmVzc0JhcigpO3RoaXMubW9kYWw9M0RHYWxheHkubW9kYWw7dGhpcy5tb2RhbC5z aG93PQooe2Nsb3NpbmdfZXZlbnRzOnRydWUsdGl0bGU6IkRlbGV0aW5nIHNlbGVjdGVkIGRhdGFz ZXRzIixib2R5Omsoe30pLGJ1dHRvbnM9Cjp7Q2xvc2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwu aGlkZSgpfX19KTt0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLj0KdG90YWxfbnVtYmVy PTNEMDt0aGlzLm9wdGlvbnMuY2hhaW5fY2FsbF9jb250cm9sLmZhaWxlZF9udW1iZXI9M0QwO3Zh ciBoPTNEPQpbXTtnLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzLnBhcmVudEVsZW1lbnQucGFyZW50 RWxlbWVudC5pZCE9M0Q9M0QiIil7aC5wdXM9CmgodGhpcy5wYXJlbnRFbGVtZW50LnBhcmVudEVs ZW1lbnQuaWQpfX0pO3RoaXMucHJvZ3Jlc3NTdGVwPTNEMTAwL2gubGVuZ3RoOz0KdGhpcy5wcm9n cmVzcz0zRDA7dmFyIG09M0RbXTtmb3IodmFyIGo9M0RoLmxlbmd0aC0xO2o+PTNEMDtqLS0pe3Zh ciBsPTNEbmV3PQogZC5JdGVtKHtpZDpoW2pdfSk7bS5wdXNoKGwpfXRoaXMub3B0aW9ucy5jaGFp bl9jYWxsX2NvbnRyb2wudG90YWxfbnVtYmVyPQo9M0RoLmxlbmd0aDt0aGlzLmNoYWluQ2FsbERl bGV0aW5nSGRhcyhtKX19LHNob3dMaWJJbmZvOmZ1bmN0aW9uKCl7dmFyIGg9M0Q9CkdhbGF4eS5s aWJyYXJpZXMuZm9sZGVyTGlzdFZpZXcuZm9sZGVyQ29udGFpbmVyLmF0dHJpYnV0ZXMubWV0YWRh dGEucGFyZW50Xz0KbGlicmFyeV9pZDt2YXIgZz0zRG51bGw7dmFyIGk9M0R0aGlzO2lmKEdhbGF4 eS5saWJyYXJpZXMubGlicmFyeUxpc3RWaWV3IT0KPTNEPTNEbnVsbCl7Zz0zREdhbGF4eS5saWJy YXJpZXMubGlicmFyeUxpc3RWaWV3LmNvbGxlY3Rpb24uZ2V0KGgpO3RoaXMuc2hvPQp3TGliSW5m b01vZGFsKGcpfWVsc2V7Zz0zRG5ldyBkLkxpYnJhcnkoe2lkOmh9KTtnLmZldGNoKHtzdWNjZXNz OmZ1bmN0aW9uKCk9CntpLnNob3dMaWJJbmZvTW9kYWwoZyl9LGVycm9yOmZ1bmN0aW9uKGssail7 aWYodHlwZW9mIGoucmVzcG9uc2VKU09OIT0zRD0zRD0KInVuZGVmaW5lZCIpe2YuZXJyb3Ioai5y ZXNwb25zZUpTT04uZXJyX21zZyl9ZWxzZXtmLmVycm9yKCJBbiBlcnJvciBvY3VycmVkPQouIil9 fX0pfX0sc2hvd0xpYkluZm9Nb2RhbDpmdW5jdGlvbihnKXt2YXIgaD0zRHRoaXMudGVtcGxhdGVM aWJJbmZvSW5Nb2RhbCg9Cik7dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbDt0aGlzLm1vZGFsLnNo b3coe2Nsb3NpbmdfZXZlbnRzOnRydWUsdGl0bGU6IkxpYj0KcmFyeSBJbmZvcm1hdGlvbiIsYm9k eTpoKHtsaWJyYXJ5Omd9KSxidXR0b25zOntDbG9zZTpmdW5jdGlvbigpe0dhbGF4eS5tb2RhPQps LmhpZGUoKX19fSl9LHNob3dJbXBvcnRNb2RhbDpmdW5jdGlvbihnKXtzd2l0Y2goZy5zb3VyY2Up e2Nhc2UiaGlzdG9yeSI6dGg9CmlzLmFkZEZpbGVzRnJvbUhpc3RvcnlNb2RhbCgpO2JyZWFrO2Nh c2UiaW1wb3J0ZGlyIjp0aGlzLmltcG9ydEZpbGVzRnJvbUdhbD0KYXh5Rm9sZGVyTW9kYWwoe3Nv dXJjZToiaW1wb3J0ZGlyIn0pO2JyZWFrO2Nhc2UicGF0aCI6dGhpcy5pbXBvcnRGaWxlc0Zyb21Q PQphdGhNb2RhbCgpO2JyZWFrO2Nhc2UidXNlcmRpciI6dGhpcy5pbXBvcnRGaWxlc0Zyb21HYWxh eHlGb2xkZXJNb2RhbCh7c291cmM9CmU6InVzZXJkaXIifSk7YnJlYWs7ZGVmYXVsdDpHYWxheHku bGlicmFyaWVzLmxpYnJhcnlfcm91dGVyLmJhY2soKTtmLmVycm9yKD0KIkludmFsaWQgaW1wb3J0 IHNvdXJjZS4iKTticmVha319LHNob3dQYWdlU2l6ZVByb21wdDpmdW5jdGlvbigpe3ZhciBnPTNE cHJvPQptcHQoIkhvdyBtYW55IGl0ZW1zIHBlciBwYWdlIGRvIHlvdSB3YW50IHRvIHNlZT8iLEdh bGF4eS5saWJyYXJpZXMucHJlZmVyZW49CmNlcy5nZXQoImZvbGRlcl9wYWdlX3NpemUiKSk7aWYo KGchPTNEbnVsbCkmJihnPTNEPTNEcGFyc2VJbnQoZykpKXtHYWxheHkubD0KaWJyYXJpZXMucHJl ZmVyZW5jZXMuc2V0KHtmb2xkZXJfcGFnZV9zaXplOnBhcnNlSW50KGcpfSk7R2FsYXh5LmxpYnJh cmllcy5mPQpvbGRlckxpc3RWaWV3LnJlbmRlcih7aWQ6dGhpcy5vcHRpb25zLmlkLHNob3dfcGFn ZToxfSl9fSx0ZW1wbGF0ZVRvb2xCYXI6ZnU9Cm5jdGlvbigpe3RtcGxfYXJyYXk9M0RbXTt0bXBs X2FycmF5LnB1c2goJzxkaXYgY2xhc3M9M0QibGlicmFyeV9zdHlsZV9jb250YT0KaW5lciI+Jyk7 dG1wbF9hcnJheS5wdXNoKCcgPGRpdiBpZD0zRCJsaWJyYXJ5X3Rvb2xiYXIiPicpO3RtcGxfYXJy YXkucHVzaCgiPQogICA8c3Bhbj48c3Ryb25nPkRBVEEgTElCUkFSSUVTPC9zdHJvbmc+PC9zcGFu PiIpO3RtcGxfYXJyYXkucHVzaCgnICAgPHNwYW49CiBkYXRhLXRvZ2dsZT0zRCJ0b29sdGlwIiBk YXRhLXBsYWNlbWVudD0zRCJ0b3AiIGNsYXNzPTNEImxvZ2dlZC1kYXRhc2V0LW1hbj0KaXB1bGF0 aW9uIiB0aXRsZT0zRCJJbmNsdWRlIGRlbGV0ZWQgZGF0YXNldHMiIHN0eWxlPTNEImRpc3BsYXk6 bm9uZTsiPiB8IDxpPQpucHV0IGlkPTNEImluY2x1ZGVfZGVsZXRlZF9kYXRhc2V0c19jaGsiIHN0 eWxlPTNEIm1hcmdpbjogMDsiIHR5cGU9M0QiY2hlY2s9CmJveCI+IGluY2x1ZGUgZGVsZXRlZCB8 IDwvaW5wdXQ+PC9zcGFuPicpO3RtcGxfYXJyYXkucHVzaCgnICAgPGJ1dHRvbiBzdHlsZT0KPTNE ImRpc3BsYXk6bm9uZTsiIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNE InRvcCIgdGl0bGU9M0QiPQpDcmVhdGUgTmV3IEZvbGRlciIgaWQ9M0QidG9vbGJ0bl9jcmVhdGVf Zm9sZGVyIiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgcHI9CmltYXJ5LWJ1dHRvbiBhZGQtbGli cmFyeS1pdGVtcyIgdHlwZT0zRCJidXR0b24iPjxzcGFuIGNsYXNzPTNEImZhIGZhLXBsdXMiPj0K PC9zcGFuPjxzcGFuIGNsYXNzPTNEImZhIGZhLWZvbGRlciI+PC9zcGFuPjwvYnV0dG9uPicpO3Rt cGxfYXJyYXkucHVzaCgiPCUgPQppZihtdXRpcGxlX2FkZF9kYXRhc2V0X29wdGlvbnMpIHsgJT4i KTt0bXBsX2FycmF5LnB1c2goJyAgIDxkaXYgY2xhc3M9M0QiYnQ9Cm4tZ3JvdXAgYWRkLWxpYnJh cnktaXRlbXMiIHN0eWxlPTNEImRpc3BsYXk6bm9uZTsiPicpO3RtcGxfYXJyYXkucHVzaCgnICAg ID0KIDxidXR0b24gdGl0bGU9M0QiQWRkIERhdGFzZXRzIHRvIEN1cnJlbnQgRm9sZGVyIiBpZD0z RCIiIHR5cGU9M0QiYnV0dG9uIiBjPQpsYXNzPTNEInByaW1hcnktYnV0dG9uIGRyb3Bkb3duLXRv Z2dsZSIgZGF0YS10b2dnbGU9M0QiZHJvcGRvd24iPicpO3RtcGxfYXI9CnJheS5wdXNoKCcgICAg IDxzcGFuIGNsYXNzPTNEImZhIGZhLXBsdXMiPjwvc3Bhbj48c3BhbiBjbGFzcz0zRCJmYSBmYS1m aWxlIj0KPjwvc3Bhbj48c3BhbiBjbGFzcz0zRCJjYXJldCI+PC9zcGFuPicpO3RtcGxfYXJyYXku cHVzaCgiICAgICA8L2J1dHRvbj4iKTt0PQptcGxfYXJyYXkucHVzaCgnICAgICA8dWwgY2xhc3M9 M0QiZHJvcGRvd24tbWVudSIgcm9sZT0zRCJtZW51Ij4nKTt0bXBsX2FycmE9CnkucHVzaCgnICAg ICAgICA8bGk+PGEgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPi9pbXBvcnQvaGlzdG9yeSI+ IGZyb20gSD0KaXN0b3J5PC9hPjwvbGk+Jyk7dG1wbF9hcnJheS5wdXNoKCI8JSBpZihHYWxheHku Y29uZmlnLnVzZXJfbGlicmFyeV9pbXBvcnRfPQpkaXIgIT0zRD0zRCBudWxsKSB7ICU+Iik7dG1w bF9hcnJheS5wdXNoKCcgICAgICAgIDxsaT48YSBocmVmPTNEIiNmb2xkZXJzLzw9CiU9M0QgaWQg JT4vaW1wb3J0L3VzZXJkaXIiPiBmcm9tIFVzZXIgRGlyZWN0b3J5PC9hPjwvbGk+Jyk7dG1wbF9h cnJheS5wdXNoKD0KIjwlIH0gJT4iKTt0bXBsX2FycmF5LnB1c2goIjwlIGlmKEdhbGF4eS5jb25m aWcuYWxsb3dfbGlicmFyeV9wYXRoX3Bhc3RlKSB7PQogJT4iKTt0bXBsX2FycmF5LnB1c2goJyAg IDxsaSBjbGFzcz0zRCJkaXZpZGVyIj48L2xpPicpO3RtcGxfYXJyYXkucHVzaCgnICA9CiA8bGkg Y2xhc3M9M0QiZHJvcGRvd24taGVhZGVyIj5BZG1pbnMgb25seTwvbGk+Jyk7dG1wbF9hcnJheS5w dXNoKCI8JSBpZihHYT0KbGF4eS5jb25maWcubGlicmFyeV9pbXBvcnRfZGlyICE9M0Q9M0QgbnVs bCkgeyAlPiIpO3RtcGxfYXJyYXkucHVzaCgnICAgPGxpPQo+PGEgaHJlZj0zRCIjZm9sZGVycy88 JT0zRCBpZCAlPi9pbXBvcnQvaW1wb3J0ZGlyIj5mcm9tIEltcG9ydCBEaXJlY3Rvcnk8L2E9Cj48 L2xpPicpO3RtcGxfYXJyYXkucHVzaCgiPCUgfSAlPiIpO3RtcGxfYXJyYXkucHVzaCgiPCUgaWYo R2FsYXh5LmNvbmZpZy5hbD0KbG93X2xpYnJhcnlfcGF0aF9wYXN0ZSkgeyAlPiIpO3RtcGxfYXJy YXkucHVzaCgnICAgICAgICA8bGk+PGEgaHJlZj0zRCIjZm9sPQpkZXJzLzwlPTNEIGlkICU+L2lt cG9ydC9wYXRoIj5mcm9tIFBhdGg8L2E+PC9saT4nKTt0bXBsX2FycmF5LnB1c2goIjwlIH0gJT49 CiIpO3RtcGxfYXJyYXkucHVzaCgiPCUgfSAlPiIpO3RtcGxfYXJyYXkucHVzaCgiICAgICA8L3Vs PiIpO3RtcGxfYXJyYXkucHVzaD0KKCIgICA8L2Rpdj4iKTt0bXBsX2FycmF5LnB1c2goIjwlIH0g ZWxzZSB7ICU+Iik7dG1wbF9hcnJheS5wdXNoKCcgPGEgIGRhdGEtPQpwbGFjZW1lbnQ9M0QidG9w IiB0aXRsZT0zRCJBZGQgRGF0YXNldHMgdG8gQ3VycmVudCBGb2xkZXIiIHN0eWxlPTNEImRpc3Bs YXk9Cjpub25lOyIgY2xhc3M9M0QiYnRuIGJ0bi1kZWZhdWx0IGFkZC1saWJyYXJ5LWl0ZW1zIiBo cmVmPTNEIiNmb2xkZXJzLzwlPTNEID0KaWQgJT4vaW1wb3J0L2hpc3RvcnkiIHJvbGU9M0QiYnV0 dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1wbHVzIj48L3NwYW4+PHNwPQphbiBjbGFzcz0zRCJm YSBmYS1maWxlIj48L3NwYW4+PC9zcGFuPjwvYT4nKTt0bXBsX2FycmF5LnB1c2goIjwlIH0gJT4i KTt0bXA9CmxfYXJyYXkucHVzaCgnICA8YnV0dG9uIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGRh dGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bD0KZT0zRCJJbXBvcnQgc2VsZWN0ZWQgZGF0YXNldHMg aW50byBoaXN0b3J5IiBpZD0zRCJ0b29sYnRuX2J1bGtfaW1wb3J0IiBjbGFzPQpzPTNEInByaW1h cnktYnV0dG9uIGRhdGFzZXQtbWFuaXB1bGF0aW9uIiBzdHlsZT0zRCJtYXJnaW4tbGVmdDogMC41 ZW07IGRpc3A9CmxheTpub25lOyIgdHlwZT0zRCJidXR0b24iPjxzcGFuIGNsYXNzPTNEImZhIGZh LWJvb2siPjwvc3Bhbj4gdG8gSGlzdG9yeTwvYj0KdXR0b24+Jyk7dG1wbF9hcnJheS5wdXNoKCcg ICA8ZGl2IGlkPTNEInRvb2xidG5fZGwiIGNsYXNzPTNEImJ0bi1ncm91cCBkYXRhPQpzZXQtbWFu aXB1bGF0aW9uIiBzdHlsZT0zRCJtYXJnaW4tbGVmdDogMC41ZW07IGRpc3BsYXk6bm9uZTsgIj4n KTt0bXBsX2FycmE9CnkucHVzaCgnICAgICA8YnV0dG9uIHRpdGxlPTNEIkRvd25sb2FkIHNlbGVj dGVkIGRhdGFzZXRzIGFzIGFyY2hpdmUiIGlkPTNEIj0KZHJvcF90b2dnbGUiIHR5cGU9M0QiYnV0 dG9uIiBjbGFzcz0zRCJwcmltYXJ5LWJ1dHRvbiBkcm9wZG93bi10b2dnbGUiIGRhdGEtPQp0b2dn bGU9M0QiZHJvcGRvd24iPicpO3RtcGxfYXJyYXkucHVzaCgnICAgICA8c3BhbiBjbGFzcz0zRCJm YSBmYS1kb3dubG9hZCI9Cj48L3NwYW4+IERvd25sb2FkIDxzcGFuIGNsYXNzPTNEImNhcmV0Ij48 L3NwYW4+Jyk7dG1wbF9hcnJheS5wdXNoKCIgICAgIDwvYj0KdXR0b24+Iik7dG1wbF9hcnJheS5w dXNoKCcgICAgIDx1bCBjbGFzcz0zRCJkcm9wZG93bi1tZW51IiByb2xlPTNEIm1lbnUiPicpPQo7 dG1wbF9hcnJheS5wdXNoKCcgICAgICAgIDxsaT48YSBocmVmPTNEIiMvZm9sZGVycy88JT0zRCBp ZCAlPi9kb3dubG9hZC90Z3o9CiI+LnRhci5nejwvYT48L2xpPicpO3RtcGxfYXJyYXkucHVzaCgn ICAgICAgICA8bGk+PGEgaHJlZj0zRCIjL2ZvbGRlcnMvPCU9Cj0zRCBpZCAlPi9kb3dubG9hZC90 YnoiPi50YXIuYno8L2E+PC9saT4nKTt0bXBsX2FycmF5LnB1c2goJyAgICAgICAgPGxpPjxhID0K aHJlZj0zRCIjL2ZvbGRlcnMvPCU9M0QgaWQgJT4vZG93bmxvYWQvemlwIj4uemlwPC9hPjwvbGk+ Jyk7dG1wbF9hcnJheS5wdXNoPQooIiAgICAgPC91bD4iKTt0bXBsX2FycmF5LnB1c2goIiAgIDwv ZGl2PiIpO3RtcGxfYXJyYXkucHVzaCgnICAgPGJ1dHRvbiBkYXQ9CmEtdG9nZ2xlPTNEInRvb2x0 aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiTWFyayBzZWxlY3RlZCBkYXRhc2V0 cz0KIGRlbGV0ZWQiIGlkPTNEInRvb2xidG5fYnVsa19kZWxldGUiIGNsYXNzPTNEInByaW1hcnkt YnV0dG9uIGxvZ2dlZC1kYXRhc2V0PQotbWFuaXB1bGF0aW9uIiBzdHlsZT0zRCJtYXJnaW4tbGVm dDogMC41ZW07IGRpc3BsYXk6bm9uZTsgIiB0eXBlPTNEImJ1dHRvbiI9Cj48c3BhbiBjbGFzcz0z RCJmYSBmYS10aW1lcyI+PC9zcGFuPiBEZWxldGU8L2J1dHRvbj4nKTt0bXBsX2FycmF5LnB1c2go JyAgID0KPGJ1dHRvbiBkYXRhLWlkPTNEIjwlLSBpZCAlPiIgZGF0YS10b2dnbGU9M0QidG9vbHRp cCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wPQoiIHRpdGxlPTNEIlNob3cgbGlicmFyeSBpbmZvcm1h dGlvbiIgaWQ9M0QidG9vbGJ0bl9zaG93X2xpYmluZm8iIGNsYXNzPTNEInA9CnJpbWFyeS1idXR0 b24iIHN0eWxlPTNEIm1hcmdpbi1sZWZ0OiAwLjVlbTsiIHR5cGU9M0QiYnV0dG9uIj48c3BhbiBj bGFzcz0zRD0KImZhIGZhLWluZm8tY2lyY2xlIj48L3NwYW4+IExpYnJhcnkgSW5mbzwvYnV0dG9u PicpO3RtcGxfYXJyYXkucHVzaCgnICAgPHNwPQphbiBjbGFzcz0zRCJoZWxwLWJ1dHRvbiIgZGF0 YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXQ9CmxlPTNEIlZp c2l0IExpYnJhcmllcyBXaWtpIj48YSBocmVmPTNEImh0dHBzOi8vd2lraS5nYWxheHlwcm9qZWN0 Lm9yZy9EYXRhTD0KaWJyYXJpZXMvc2NyZWVuL0ZvbGRlckNvbnRlbnRzIiB0YXJnZXQ9M0QiX2Js YW5rIj48YnV0dG9uIGNsYXNzPTNEInByaW1hcnktPQpidXR0b24iIHR5cGU9M0QiYnV0dG9uIj48 c3BhbiBjbGFzcz0zRCJmYSBmYS1xdWVzdGlvbi1jaXJjbGUiPjwvc3Bhbj4gSGVscDw9Ci9idXR0 b24+PC9hPjwvc3Bhbj4nKTt0bXBsX2FycmF5LnB1c2goJyAgICAgICAgICA8c3BhbiBpZD0zRCJm b2xkZXJfcGFnaW5hdD0Kb3IiIGNsYXNzPTNEImxpYnJhcnktcGFnaW5hdG9yIj4nKTt0bXBsX2Fy cmF5LnB1c2goIiAgICAgICAgICA8L3NwYW4+Iik7dG1wPQpsX2FycmF5LnB1c2goIiA8L2Rpdj4i KTt0bXBsX2FycmF5LnB1c2goJyA8ZGl2IGlkPTNEImZvbGRlcl9pdGVtc19lbGVtZW50Ij49Cicp O3RtcGxfYXJyYXkucHVzaCgiIDwvZGl2PiIpO3RtcGxfYXJyYXkucHVzaCgiPC9kaXY+Iik7cmV0 dXJuIF8udGVtcGxhdGUodD0KbXBsX2FycmF5LmpvaW4oIiIpKX0sdGVtcGxhdGVMaWJJbmZvSW5N b2RhbDpmdW5jdGlvbigpe3RtcGxfYXJyYXk9M0RbXTt0bXBsPQpfYXJyYXkucHVzaCgnPGRpdiBp ZD0zRCJsaWZfaW5mb19tb2RhbCI+Jyk7dG1wbF9hcnJheS5wdXNoKCI8aDI+TGlicmFyeSBuYW09 CmU6PC9oMj4iKTt0bXBsX2FycmF5LnB1c2goJzxwPjwlLSBsaWJyYXJ5LmdldCgibmFtZSIpICU+ PC9wPicpO3RtcGxfYXJyYXkucD0KdXNoKCI8aDM+TGlicmFyeSBkZXNjcmlwdGlvbjo8L2gzPiIp O3RtcGxfYXJyYXkucHVzaCgnPHA+PCUtIGxpYnJhcnkuZ2V0KCJkPQplc2NyaXB0aW9uIikgJT48 L3A+Jyk7dG1wbF9hcnJheS5wdXNoKCI8aDM+TGlicmFyeSBzeW5vcHNpczo8L2gzPiIpO3RtcGxf YXI9CnJheS5wdXNoKCc8cD48JS0gbGlicmFyeS5nZXQoInN5bm9wc2lzIikgJT48L3A+Jyk7dG1w bF9hcnJheS5wdXNoKCI8L2Rpdj4iKT0KO3JldHVybiBfLnRlbXBsYXRlKHRtcGxfYXJyYXkuam9p bigiIikpfSx0ZW1wbGF0ZU5ld0ZvbGRlckluTW9kYWw6ZnVuY3Rpb24oPQope3RtcGxfYXJyYXk9 M0RbXTt0bXBsX2FycmF5LnB1c2goJzxkaXYgaWQ9M0QibmV3X2ZvbGRlcl9tb2RhbCI+Jyk7dG1w bF9hcnI9CmF5LnB1c2goIjxmb3JtPiIpO3RtcGxfYXJyYXkucHVzaCgnPGlucHV0IHR5cGU9M0Qi dGV4dCIgbmFtZT0zRCJOYW1lIiB2YWx1ZT0KPTNEIiIgcGxhY2Vob2xkZXI9M0QiTmFtZSI+Jyk7 dG1wbF9hcnJheS5wdXNoKCc8aW5wdXQgdHlwZT0zRCJ0ZXh0IiBuYW1lPTNEPQoiRGVzY3JpcHRp b24iIHZhbHVlPTNEIiIgcGxhY2Vob2xkZXI9M0QiRGVzY3JpcHRpb24iPicpO3RtcGxfYXJyYXku cHVzaCgiPC89CmZvcm0+Iik7dG1wbF9hcnJheS5wdXNoKCI8L2Rpdj4iKTtyZXR1cm4gXy50ZW1w bGF0ZSh0bXBsX2FycmF5LmpvaW4oIiIpKX0sdD0KZW1wbGF0ZUJ1bGtJbXBvcnRJbk1vZGFsOmZ1 bmN0aW9uKCl7dmFyIGc9M0RbXTtnLnB1c2goJzxzcGFuIGlkPTNEImhpc3RvcnlfPQptb2RhbF9j b21ib19idWxrIiBzdHlsZT0zRCJ3aWR0aDo5MCU7IG1hcmdpbi1sZWZ0OiAxZW07IG1hcmdpbi1y aWdodDogMWVtOyA9CiI+Jyk7Zy5wdXNoKCJTZWxlY3QgaGlzdG9yeTogIik7Zy5wdXNoKCc8c2Vs ZWN0IGlkPTNEImRhdGFzZXRfaW1wb3J0X2J1bGsiID0KbmFtZT0zRCJkYXRhc2V0X2ltcG9ydF9i dWxrIiBzdHlsZT0zRCJ3aWR0aDo1MCU7IG1hcmdpbi1ib3R0b206IDFlbTsgIj4gJyk7PQpnLnB1 c2goIiAgIDwlIF8uZWFjaChoaXN0b3JpZXMsIGZ1bmN0aW9uKGhpc3RvcnkpIHsgJT4iKTtnLnB1 c2goJyAgICAgICA8b3A9CnRpb24gdmFsdWU9M0QiPCU9M0QgXy5lc2NhcGUoaGlzdG9yeS5nZXQo ImlkIikpICU+Ij48JT0zRCBfLmVzY2FwZShoaXN0b3J5Lj0KZ2V0KCJuYW1lIikpICU+PC9vcHRp b24+Jyk7Zy5wdXNoKCIgICA8JSB9KTsgJT4iKTtnLnB1c2goIjwvc2VsZWN0PiIpO2cucHVzPQpo KCI8L3NwYW4+Iik7cmV0dXJuIF8udGVtcGxhdGUoZy5qb2luKCIiKSl9LHRlbXBsYXRlSW1wb3J0 SW50b0hpc3RvcnlQcm9ncmU9CnNzQmFyOmZ1bmN0aW9uKCl7dmFyIGc9M0RbXTtnLnB1c2goJzxk aXYgY2xhc3M9M0QiaW1wb3J0X3RleHQiPicpO2cucHVzaCgiST0KbXBvcnRpbmcgc2VsZWN0ZWQg ZGF0YXNldHMgdG8gaGlzdG9yeSA8Yj48JT0zRCBfLmVzY2FwZShoaXN0b3J5X25hbWUpICU+PC9i PQo+Iik7Zy5wdXNoKCI8L2Rpdj4iKTtnLnB1c2goJzxkaXYgY2xhc3M9M0QicHJvZ3Jlc3MiPicp O2cucHVzaCgnICAgPGRpdiBjbGE9CnNzPTNEInByb2dyZXNzLWJhciBwcm9ncmVzcy1iYXItaW1w b3J0IiByb2xlPTNEInByb2dyZXNzYmFyIiBhcmlhLXZhbHVlbm93PQo9M0QiMCIgYXJpYS12YWx1 ZW1pbj0zRCIwIiBhcmlhLXZhbHVlbWF4PTNEIjEwMCIgc3R5bGU9M0Qid2lkdGg6IDAwJTsiPicp O2c9Ci5wdXNoKCcgICAgICAgPHNwYW4gY2xhc3M9M0QiY29tcGxldGlvbl9zcGFuIj4wJSBDb21w bGV0ZTwvc3Bhbj4nKTtnLnB1c2goIj0KICAgPC9kaXY+Iik7Zy5wdXNoKCI8L2Rpdj4iKTtnLnB1 c2goIiIpO3JldHVybiBfLnRlbXBsYXRlKGcuam9pbigiIikpfSx0ZW1wPQpsYXRlQWRkaW5nRGF0 YXNldHNQcm9ncmVzc0JhcjpmdW5jdGlvbigpe3ZhciBnPTNEW107Zy5wdXNoKCc8ZGl2IGNsYXNz PTNEImk9Cm1wb3J0X3RleHQiPicpO2cucHVzaCgiQWRkaW5nIHNlbGVjdGVkIGRhdGFzZXRzIHRv IGxpYnJhcnkgZm9sZGVyIDxiPjwlPTNEID0KXy5lc2NhcGUoZm9sZGVyX25hbWUpICU+PC9iPiIp O2cucHVzaCgiPC9kaXY+Iik7Zy5wdXNoKCc8ZGl2IGNsYXNzPTNEInByb2dyPQplc3MiPicpO2cu cHVzaCgnICAgPGRpdiBjbGFzcz0zRCJwcm9ncmVzcy1iYXIgcHJvZ3Jlc3MtYmFyLWltcG9ydCIg cm9sZT0zRCI9CnByb2dyZXNzYmFyIiBhcmlhLXZhbHVlbm93PTNEIjAiIGFyaWEtdmFsdWVtaW49 M0QiMCIgYXJpYS12YWx1ZW1heD0zRCIxMDAiID0Kc3R5bGU9M0Qid2lkdGg6IDAwJTsiPicpO2cu cHVzaCgnICAgICAgIDxzcGFuIGNsYXNzPTNEImNvbXBsZXRpb25fc3BhbiI+MCUgPQpDb21wbGV0 ZTwvc3Bhbj4nKTtnLnB1c2goIiAgIDwvZGl2PiIpO2cucHVzaCgiPC9kaXY+Iik7Zy5wdXNoKCIi KTtyZXR1cm4gXy49CnRlbXBsYXRlKGcuam9pbigiIikpfSx0ZW1wbGF0ZURlbGV0aW5nRGF0YXNl dHNQcm9ncmVzc0JhcjpmdW5jdGlvbigpe3ZhciBnPQo9M0RbXTtnLnB1c2goJzxkaXYgY2xhc3M9 M0QiaW1wb3J0X3RleHQiPicpO2cucHVzaCgiPC9kaXY+Iik7Zy5wdXNoKCc8ZGl2IGM9Cmxhc3M9 M0QicHJvZ3Jlc3MiPicpO2cucHVzaCgnICAgPGRpdiBjbGFzcz0zRCJwcm9ncmVzcy1iYXIgcHJv Z3Jlc3MtYmFyLWltcD0Kb3J0IiByb2xlPTNEInByb2dyZXNzYmFyIiBhcmlhLXZhbHVlbm93PTNE IjAiIGFyaWEtdmFsdWVtaW49M0QiMCIgYXJpYS12YWx1PQplbWF4PTNEIjEwMCIgc3R5bGU9M0Qi d2lkdGg6IDAwJTsiPicpO2cucHVzaCgnICAgICAgIDxzcGFuIGNsYXNzPTNEImNvbXBsZXQ9Cmlv bl9zcGFuIj4wJSBDb21wbGV0ZTwvc3Bhbj4nKTtnLnB1c2goIiAgIDwvZGl2PiIpO2cucHVzaCgi PC9kaXY+Iik7Zy5wdXNoKD0KIiIpO3JldHVybiBfLnRlbXBsYXRlKGcuam9pbigiIikpfSx0ZW1w bGF0ZUJyb3dzZXJNb2RhbDpmdW5jdGlvbigpe3ZhciBnPTNEPQpbXTtnLnB1c2goJzxkaXYgaWQ9 M0QiZmlsZV9icm93c2VyX21vZGFsIj4nKTtnLnB1c2goJzxkaXYgY2xhc3M9M0QiYWxlcnQgYWw9 CmVydC1pbmZvIGpzdHJlZS1maWxlcy1tZXNzYWdlIj5BbGwgZmlsZXMgeW91IHNlbGVjdCB3aWxs IGJlIGltcG9ydGVkIGludG8gdD0KaGUgY3VycmVudCBmb2xkZXIuPC9kaXY+Jyk7Zy5wdXNoKCc8 ZGl2IGNsYXNzPTNEImFsZXJ0IGFsZXJ0LWluZm8ganN0cmVlLWZvPQpsZGVycy1tZXNzYWdlIiBz dHlsZT0zRCJkaXNwbGF5Om5vbmU7Ij5BbGwgZmlsZXMgd2l0aGluIHRoZSBzZWxlY3RlZCBmb2xk ZXI9CnMgYW5kIHRoZWlyIHN1YmZvbGRlcnMgd2lsbCBiZSBpbXBvcnRlZCBpbnRvIHRoZSBjdXJy ZW50IGZvbGRlci48L2Rpdj4nKTtnLj0KcHVzaCgnPGRpdiBzdHlsZT0zRCJtYXJnaW4tYm90dG9t OjFlbTsiPicpO2cucHVzaCgnPGxhYmVsIGNsYXNzPTNEInJhZGlvLWluPQpsaW5lIj4nKTtnLnB1 c2goJyAgPGlucHV0IHRpdGxlPTNEIlN3aXRjaCB0byBzZWxlY3RpbmcgZmlsZXMiIHR5cGU9M0Qi cmFkaW89CiIgbmFtZT0zRCJqc3RyZWUtcmFkaW8iIHZhbHVlPTNEImpzdHJlZS1kaXNhYmxlLWZv bGRlcnMiIGNoZWNrZWQ9M0QiY2hlY2tlZD0KIj4gRmlsZXMnKTtnLnB1c2goIjwvbGFiZWw+Iik7 Zy5wdXNoKCc8bGFiZWwgY2xhc3M9M0QicmFkaW8taW5saW5lIj4nKTtnLnB1PQpzaCgnICA8aW5w dXQgdGl0bGU9M0QiU3dpdGNoIHRvIHNlbGVjdGluZyBmb2xkZXJzIiB0eXBlPTNEInJhZGlvIiBu YW1lPTNEImo9CnN0cmVlLXJhZGlvIiB2YWx1ZT0zRCJqc3RyZWUtZGlzYWJsZS1maWxlcyI+IEZv bGRlcnMnKTtnLnB1c2goIjwvbGFiZWw+Iik7Zz0KLnB1c2goIjwvZGl2PiIpO2cucHVzaCgnPGRp diBzdHlsZT0zRCJtYXJnaW4tYm90dG9tOjFlbTsiPicpO2cucHVzaCgnPGxhYmVsPQogY2xhc3M9 M0QiY2hlY2tib3gtaW5saW5lIGpzdHJlZS1wcmVzZXJ2ZS1zdHJ1Y3R1cmUiIHN0eWxlPTNEImRp c3BsYXk6bm9uZTs9CiI+Jyk7Zy5wdXNoKCcgICA8aW5wdXQgY2xhc3M9M0QicHJlc2VydmUtY2hl Y2tib3giIHR5cGU9M0QiY2hlY2tib3giIHZhbHVlPQo9M0QicHJlc2VydmVfZGlyZWN0b3J5X3N0 cnVjdHVyZSI+Jyk7Zy5wdXNoKCJQcmVzZXJ2ZSBkaXJlY3Rvcnkgc3RydWN0dXJlIik9CjtnLnB1 c2goIiA8L2xhYmVsPiIpO2cucHVzaCgnPGxhYmVsIGNsYXNzPTNEImNoZWNrYm94LWlubGluZSBq c3RyZWUtbGluay1maT0KbGVzIiBzdHlsZT0zRCJkaXNwbGF5Om5vbmU7Ij4nKTtnLnB1c2goJyAg IDxpbnB1dCBjbGFzcz0zRCJsaW5rLWNoZWNrYm94IiB0PQp5cGU9M0QiY2hlY2tib3giIHZhbHVl PTNEImxpbmtfZmlsZXMiPicpO2cucHVzaCgiTGluayBmaWxlcyBpbnN0ZWFkIG9mIGNvcHk9Cmlu ZyIpO2cucHVzaCgiIDwvbGFiZWw+Iik7Zy5wdXNoKCI8L2Rpdj4iKTtnLnB1c2goJzxkaXYgaWQ9 M0QianN0cmVlX2Jyb3dzZT0KciI+Jyk7Zy5wdXNoKCI8L2Rpdj4iKTtnLnB1c2goIjxociAvPiIp O2cucHVzaCgiPHA+WW91IGNhbiBzZXQgZXh0ZW5zaW9uIHR5PQpwZSBhbmQgZ2Vub21lIGZvciBh bGwgaW1wb3J0ZWQgZGF0YXNldHMgYXQgb25jZTo8L3A+Iik7Zy5wdXNoKCI8ZGl2PiIpO2cucHU9 CnNoKCdUeXBlOiA8c3BhbiBpZD0zRCJsaWJyYXJ5X2V4dGVuc2lvbl9zZWxlY3QiIGNsYXNzPTNE ImxpYnJhcnktZXh0ZW5zaW9uLT0Kc2VsZWN0IiAvPicpO2cucHVzaCgnICBHZW5vbWU6IDxzcGFu IGlkPTNEImxpYnJhcnlfZ2Vub21lX3NlbGVjdCIgY2xhc3M9M0QiPQpsaWJyYXJ5LWdlbm9tZS1z ZWxlY3QiIC8+Jyk7Zy5wdXNoKCI8L2Rpdj4iKTtnLnB1c2goIjwvZGl2PiIpO3JldHVybiBfLnRl bXA9CmxhdGUoZy5qb2luKCIiKSl9LHRlbXBsYXRlSW1wb3J0UGF0aE1vZGFsOmZ1bmN0aW9uKCl7 dmFyIGc9M0RbXTtnLnB1c2goJzxkaT0KdiBpZD0zRCJmaWxlX2Jyb3dzZXJfbW9kYWwiPicpO2cu cHVzaCgnPGRpdiBjbGFzcz0zRCJhbGVydCBhbGVydC1pbmZvIGpzdHJlPQplLWZvbGRlcnMtbWVz c2FnZSI+QWxsIGZpbGVzIHdpdGhpbiB0aGUgZ2l2ZW4gZm9sZGVycyBhbmQgdGhlaXIgc3ViZm9s ZGVycyA9CndpbGwgYmUgaW1wb3J0ZWQgaW50byB0aGUgY3VycmVudCBmb2xkZXIuPC9kaXY+Jyk7 Zy5wdXNoKCc8ZGl2IHN0eWxlPTNEIm1hcj0KZ2luLWJvdHRvbTogMC41ZW07Ij4nKTtnLnB1c2go JzxsYWJlbCBjbGFzcz0zRCJjaGVja2JveC1pbmxpbmUganN0cmVlLXByZXNlPQpydmUtc3RydWN0 dXJlIj4nKTtnLnB1c2goJyAgIDxpbnB1dCBjbGFzcz0zRCJwcmVzZXJ2ZS1jaGVja2JveCIgdHlw ZT0zRCJjaGU9CmNrYm94IiB2YWx1ZT0zRCJwcmVzZXJ2ZV9kaXJlY3Rvcnlfc3RydWN0dXJlIj4n KTtnLnB1c2goIlByZXNlcnZlIGRpcmVjdG9yeT0KIHN0cnVjdHVyZSIpO2cucHVzaCgiIDwvbGFi ZWw+Iik7Zy5wdXNoKCc8bGFiZWwgY2xhc3M9M0QiY2hlY2tib3gtaW5saW5lIGpzPQp0cmVlLWxp bmstZmlsZXMiPicpO2cucHVzaCgnICAgPGlucHV0IGNsYXNzPTNEImxpbmstY2hlY2tib3giIHR5 cGU9M0QiY2hlY2s9CmJveCIgdmFsdWU9M0QibGlua19maWxlcyI+Jyk7Zy5wdXNoKCJMaW5rIGZp bGVzIGluc3RlYWQgb2YgY29weWluZyIpO2cucHVzaD0KKCIgPC9sYWJlbD4iKTtnLnB1c2goIjwv ZGl2PiIpO2cucHVzaCgnPHRleHRhcmVhIGlkPTNEImltcG9ydF9wYXRocyIgY2xhc3M9Cj0zRCJm b3JtLWNvbnRyb2wiIHJvd3M9M0QiNSIgcGxhY2Vob2xkZXI9M0QiQWJzb2x1dGUgcGF0aHMgKG9y IHBhdGhzIHJlbGF0aT0KdmUgdG8gR2FsYXh5IHJvb3QpIHNlcGFyYXRlZCBieSBuZXdsaW5lIj48 L3RleHRhcmVhPicpO2cucHVzaCgiPGhyIC8+Iik7Zy5wPQp1c2goIjxwPllvdSBjYW4gc2V0IGV4 dGVuc2lvbiB0eXBlIGFuZCBnZW5vbWUgZm9yIGFsbCBpbXBvcnRlZCBkYXRhc2V0cyBhdCA9Cm9u Y2U6PC9wPiIpO2cucHVzaCgiPGRpdj4iKTtnLnB1c2goJ1R5cGU6IDxzcGFuIGlkPTNEImxpYnJh cnlfZXh0ZW5zaW9uX3NlbD0KZWN0IiBjbGFzcz0zRCJsaWJyYXJ5LWV4dGVuc2lvbi1zZWxlY3Qi IC8+Jyk7Zy5wdXNoKCcgIEdlbm9tZTogPHNwYW4gaWQ9M0QiPQpsaWJyYXJ5X2dlbm9tZV9zZWxl Y3QiIGNsYXNzPTNEImxpYnJhcnktZ2Vub21lLXNlbGVjdCIgLz4nKTtnLnB1c2goIjwvZGl2PiI9 Cik7Zy5wdXNoKCI8L2Rpdj4iKTtyZXR1cm4gXy50ZW1wbGF0ZShnLmpvaW4oIiIpKX0sdGVtcGxh dGVBZGRGaWxlc0Zyb21IaXN0bz0Kcnk6ZnVuY3Rpb24oKXt2YXIgZz0zRFtdO2cucHVzaCgnPGRp diBpZD0zRCJhZGRfZmlsZXNfbW9kYWwiPicpO2cucHVzaCgnPGRpPQp2IGlkPTNEImhpc3Rvcnlf bW9kYWxfY29tYm9fYnVsayI+Jyk7Zy5wdXNoKCJTZWxlY3QgaGlzdG9yeTogICIpO2cucHVzaCgn PHM9CmVsZWN0IGlkPTNEImRhdGFzZXRfYWRkX2J1bGsiIG5hbWU9M0QiZGF0YXNldF9hZGRfYnVs ayIgc3R5bGU9M0Qid2lkdGg6NjYlOz0KICI+ICcpO2cucHVzaCgiICAgPCUgXy5lYWNoKGhpc3Rv cmllcywgZnVuY3Rpb24oaGlzdG9yeSkgeyAlPiIpO2cucHVzaCgnICAgPQogICAgPG9wdGlvbiB2 YWx1ZT0zRCI8JT0zRCBfLmVzY2FwZShoaXN0b3J5LmdldCgiaWQiKSkgJT4iPjwlPTNEIF8uZXNj YXBlKGg9CmlzdG9yeS5nZXQoIm5hbWUiKSkgJT48L29wdGlvbj4nKTtnLnB1c2goIiAgIDwlIH0p OyAlPiIpO2cucHVzaCgiPC9zZWxlY3Q+Ij0KKTtnLnB1c2goIjwvZGl2PiIpO2cucHVzaCgiPGJy Lz4iKTtnLnB1c2goJzxkaXYgaWQ9M0Qic2VsZWN0ZWRfaGlzdG9yeV9jb250PQplbnQiPicpO2cu cHVzaCgiPC9kaXY+Iik7Zy5wdXNoKCI8L2Rpdj4iKTtyZXR1cm4gXy50ZW1wbGF0ZShnLmpvaW4o IiIpKX0sdGU9Cm1wbGF0ZUhpc3RvcnlDb250ZW50czpmdW5jdGlvbigpe3ZhciBnPTNEW107Zy5w dXNoKCI8c3Ryb25nPkNob29zZSB0aGUgZGF0YT0Kc2V0cyB0byBpbXBvcnQ6PC9zdHJvbmc+Iik7 Zy5wdXNoKCI8dWw+Iik7Zy5wdXNoKCIgPCUgXy5lYWNoKGhpc3RvcnlfY29udGVuPQp0cywgZnVu Y3Rpb24oaGlzdG9yeV9pdGVtKSB7ICU+Iik7Zy5wdXNoKCcgPGxpIGRhdGEtaWQ9M0QiPCU9M0Qg Xy5lc2NhcGUoaGk9CnN0b3J5X2l0ZW0uZ2V0KCJpZCIpKSAlPiI+Jyk7Zy5wdXNoKCcgICA8aW5w dXQgc3R5bGU9M0QibWFyZ2luOiAwOyIgdHlwZT0zRD0KImNoZWNrYm94Ij48JT0zRCBfLmVzY2Fw ZShoaXN0b3J5X2l0ZW0uZ2V0KCJoaWQiKSkgJT46IDwlPTNEIF8uZXNjYXBlKGhpc3RvPQpyeV9p dGVtLmdldCgibmFtZSIpKSAlPicpO2cucHVzaCgiIDwvbGk+Iik7Zy5wdXNoKCIgPCUgfSk7ICU+ Iik7Zy5wdXNoKCI8L3U9Cmw+Iik7cmV0dXJuIF8udGVtcGxhdGUoZy5qb2luKCIiKSl9LHRlbXBs YXRlUGFnaW5hdG9yOmZ1bmN0aW9uKCl7dG1wbF9hcnJheT0KPTNEW107dG1wbF9hcnJheS5wdXNo KCcgICA8dWwgY2xhc3M9M0QicGFnaW5hdGlvbiBwYWdpbmF0aW9uLXNtIj4nKTt0bXBsX2FyPQpy YXkucHVzaCgiICAgICAgIDwlIGlmICggKCBzaG93X3BhZ2UgLSAxICkgPiAwICkgeyAlPiIpO3Rt cGxfYXJyYXkucHVzaCgiICA9CiAgICAgICAgIDwlIGlmICggKCBzaG93X3BhZ2UgLSAxICkgPiBw YWdlX2NvdW50ICkgeyAlPiIpO3RtcGxfYXJyYXkucHVzaCgnID0KICAgICAgICAgICAgICA8bGk+ PGEgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPi9wYWdlLzEiPjxzcGFuIGNsYXNzPTNEImZh PQogZmEtYW5nbGUtZG91YmxlLWxlZnQiPjwvc3Bhbj48L2E+PC9saT4nKTt0bXBsX2FycmF5LnB1 c2goJyAgICAgICAgICAgICAgIDw9CmxpIGNsYXNzPTNEImRpc2FibGVkIj48YSBocmVmPTNEIiNm b2xkZXJzLzwlPTNEIGlkICU+L3BhZ2UvPCUgcHJpbnQoIHNob3dfcD0KYWdlICkgJT4iPjwlIHBy aW50KCBzaG93X3BhZ2UgLSAxICkgJT48L2E+PC9saT4nKTt0bXBsX2FycmF5LnB1c2goIiAgICAg ICAgPQogICA8JSB9IGVsc2UgeyAlPiIpO3RtcGxfYXJyYXkucHVzaCgnICAgICAgICAgICAgICAg PGxpPjxhIGhyZWY9M0QiI2ZvbGRlcnM9Ci88JT0zRCBpZCAlPi9wYWdlLzEiPjxzcGFuIGNsYXNz PTNEImZhIGZhLWFuZ2xlLWRvdWJsZS1sZWZ0Ij48L3NwYW4+PC9hPjwvbD0KaT4nKTt0bXBsX2Fy cmF5LnB1c2goJyAgICAgICAgICAgICAgIDxsaT48YSBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlk ICU+L3BhPQpnZS88JSBwcmludCggc2hvd19wYWdlIC0gMSApICU+Ij48JSBwcmludCggc2hvd19w YWdlIC0gMSApICU+PC9hPjwvbGk+Jyk7dG09CnBsX2FycmF5LnB1c2goIiAgICAgICAgICAgPCUg fSAlPiIpO3RtcGxfYXJyYXkucHVzaCgiICAgICAgIDwlIH0gZWxzZSB7ICU+Ij0KKTt0bXBsX2Fy cmF5LnB1c2goJyAgICAgICAgICAgPGxpIGNsYXNzPTNEImRpc2FibGVkIj48YSBocmVmPTNEIiNm b2xkZXJzLzwlPQo9M0QgaWQgJT4vcGFnZS8xIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1hbmdsZS1k b3VibGUtbGVmdCI+PC9zcGFuPjwvYT48L2xpPic9Cik7dG1wbF9hcnJheS5wdXNoKCcgICAgICAg ICAgIDxsaSBjbGFzcz0zRCJkaXNhYmxlZCI+PGEgaHJlZj0zRCIjZm9sZGVycy88JT0KPTNEIGlk ICU+L3BhZ2UvPCUgcHJpbnQoIHNob3dfcGFnZSApICU+Ij48JSBwcmludCggc2hvd19wYWdlIC0g MSApICU+PC9hPjwvPQpsaT4nKTt0bXBsX2FycmF5LnB1c2goIiAgICAgICA8JSB9ICU+Iik7dG1w bF9hcnJheS5wdXNoKCcgICAgICAgPGxpIGNsYXNzPQo9M0QiYWN0aXZlIj4nKTt0bXBsX2FycmF5 LnB1c2goJyAgICAgICA8YSBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2U9Ci88JSBw cmludCggc2hvd19wYWdlICkgJT4iPjwlIHByaW50KCBzaG93X3BhZ2UgKSAlPjwvYT4nKTt0bXBs X2FycmF5LnB1c2goIj0KICAgICAgIDwvbGk+Iik7dG1wbF9hcnJheS5wdXNoKCIgICAgICAgPCUg aWYgKCAoIHNob3dfcGFnZSApIDwgcGFnZV9jb3VudCApPQogeyAlPiIpO3RtcGxfYXJyYXkucHVz aCgnICAgICAgICAgICA8bGk+PGEgaHJlZj0zRCIjZm9sZGVycy88JT0zRCBpZCAlPi9wYWc9CmUv PCUgcHJpbnQoIHNob3dfcGFnZSArIDEgKSAlPiI+PCUgcHJpbnQoIHNob3dfcGFnZSArIDEgKSAl PjwvYT48L2xpPicpO3RtcD0KbF9hcnJheS5wdXNoKCcgICAgICAgICAgIDxsaT48YSBocmVmPTNE IiNmb2xkZXJzLzwlPTNEIGlkICU+L3BhZ2UvPCUgcHJpbnQoPQogcGFnZV9jb3VudCApICU+Ij48 c3BhbiBjbGFzcz0zRCJmYSBmYS1hbmdsZS1kb3VibGUtcmlnaHQiPjwvc3Bhbj48L2E+PC9saT49 CicpO3RtcGxfYXJyYXkucHVzaCgiICAgICAgIDwlIH0gZWxzZSB7ICU+Iik7dG1wbF9hcnJheS5w dXNoKCcgICAgICAgICAgIDxsaT0KIGNsYXNzPTNEImRpc2FibGVkIj48YSBocmVmPTNEIiNmb2xk ZXJzLzwlPTNEIGlkICU+L3BhZ2UvPCUgcHJpbnQoIHNob3dfcGFnPQplICApICU+Ij48JSBwcmlu dCggc2hvd19wYWdlICsgMSApICU+PC9hPjwvbGk+Jyk7dG1wbF9hcnJheS5wdXNoKCcgICAgICAg ICA9CiAgPGxpIGNsYXNzPTNEImRpc2FibGVkIj48YSBocmVmPTNEIiNmb2xkZXJzLzwlPTNEIGlk ICU+L3BhZ2UvPCUgcHJpbnQoIHBhZz0KZV9jb3VudCApICU+Ij48c3BhbiBjbGFzcz0zRCJmYSBm YS1hbmdsZS1kb3VibGUtcmlnaHQiPjwvc3Bhbj48L2E+PC9saT4nKTt0PQptcGxfYXJyYXkucHVz aCgiICAgICAgIDwlIH0gJT4iKTt0bXBsX2FycmF5LnB1c2goIiAgIDwvdWw+Iik7dG1wbF9hcnJh eS5wdXM9CmgoIiAgIDxzcGFuPiIpO3RtcGxfYXJyYXkucHVzaCgnICAgICAgIHNob3dpbmcgPGEg ZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZD0KYXRhLXBsYWNlbWVudD0zRCJ0b3AiIHRpdGxlPTNE IkNsaWNrIHRvIGNoYW5nZSB0aGUgbnVtYmVyIG9mIGl0ZW1zIG9uIHBhZ2UiPQogaWQ9M0QicGFn ZV9zaXplX3Byb21wdCI+PCUtIGl0ZW1zX3Nob3duICU+PC9hPiBvZiA8JS0gdG90YWxfaXRlbXNf Y291bnQgJT49CiBpdGVtcycpO3RtcGxfYXJyYXkucHVzaCgiICAgPC9zcGFuPiIpO3JldHVybiBf LnRlbXBsYXRlKHRtcGxfYXJyYXkuam9pbigiIj0KKSl9LH0pO3JldHVybntGb2xkZXJUb29sYmFy VmlldzpifX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgNDlkNTBiY2U0 NjMyMDZmNDQ1MDYzZDJiMjdiMmYyYjM5M2FkYmUxMSAtciAxY2NmNDBiZGFmYTE4NGIzYmUzMWFh Nz0KYjFlY2RmY2UzYmM3MDVlZmIgc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9saWJyYXJ5L2xp YnJhcnktbGlicmFyeS12aWV3LmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvbGli cmFyeS9saWJyYXJ5LWxpYnJhcnktdmlldy5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9wYWNrZWQv bXZjL2xpYnJhcnkvbGlicmFyeS1saWJyYXJ5LXZpZXcuanMKQEAgLTEsMSArMSwxIEBACi1kZWZp bmUoWyJsaWJzL3RvYXN0ciIsIm12Yy9saWJyYXJ5L2xpYnJhcnktbW9kZWwiLCJtdmMvdWkvdWkt c2VsZWN0Il0sZnVuYz0KdGlvbihkLGMsYSl7dmFyIGI9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7 ZWw6IiNjZW50ZXIiLG1vZGVsOm51bGwsb3B0aW9uczp7PQp9LGV2ZW50czp7ImNsaWNrIC50b29s YnRuX3NhdmVfcGVybWlzc2lvbnMiOiJzYXZlUGVybWlzc2lvbnMifSxpbml0aWFsaXplOmY9CnVu Y3Rpb24oZSl7dGhpcy5vcHRpb25zPTNEXy5leHRlbmQodGhpcy5vcHRpb25zLGUpO2lmKHRoaXMu b3B0aW9ucy5pZCl7dGhpcz0KLmZldGNoTGlicmFyeSgpfX0sZmV0Y2hMaWJyYXJ5OmZ1bmN0aW9u KGUpe3RoaXMub3B0aW9ucz0zRF8uZXh0ZW5kKHRoaXMub3B0PQppb25zLGUpO3RoaXMubW9kZWw9 M0RuZXcgYy5MaWJyYXJ5KHtpZDp0aGlzLm9wdGlvbnMuaWR9KTt2YXIgZj0zRHRoaXM7dGhpcy49 Cm1vZGVsLmZldGNoKHtzdWNjZXNzOmZ1bmN0aW9uKCl7aWYoZi5vcHRpb25zLnNob3dfcGVybWlz c2lvbnMpe2Yuc2hvd1Blcm1pcz0Kc2lvbnMoKX1lbHNle2YucmVuZGVyKCl9fSxlcnJvcjpmdW5j dGlvbihoLGcpe2lmKHR5cGVvZiBnLnJlc3BvbnNlSlNPTiE9M0Q9Cj0zRCJ1bmRlZmluZWQiKXtk LmVycm9yKGcucmVzcG9uc2VKU09OLmVycl9tc2crIiBDbGljayB0aGlzIHRvIGdvIGJhY2suIiwi Ij0KLHtvbmNsaWNrOmZ1bmN0aW9uKCl7R2FsYXh5LmxpYnJhcmllcy5saWJyYXJ5X3JvdXRlci5i YWNrKCl9fSl9ZWxzZXtkLmVycm9yPQooIkFuIGVycm9yIG9jdXJyZWQuIENsaWNrIHRoaXMgdG8g Z28gYmFjay4iLCIiLHtvbmNsaWNrOmZ1bmN0aW9uKCl7R2FsYXh5Lmw9CmlicmFyaWVzLmxpYnJh cnlfcm91dGVyLmJhY2soKX19KX19fSl9LHJlbmRlcjpmdW5jdGlvbihlKXskKCIudG9vbHRpcCIp LnJlbT0Kb3ZlKCk7dGhpcy5vcHRpb25zPTNEXy5leHRlbmQodGhpcy5vcHRpb25zLGUpO3ZhciBm PTNEdGhpcy50ZW1wbGF0ZUxpYnJhcnkoPQopO3RoaXMuJGVsLmh0bWwoZih7aXRlbTp0aGlzLm1v ZGVsfSkpOyQoIiNjZW50ZXIgW2RhdGEtdG9nZ2xlXSIpLnRvb2x0aXAoKX09CixzaGFyZURhdGFz ZXQ6ZnVuY3Rpb24oKXtkLmluZm8oIkZlYXR1cmUgY29taW5nIHNvb24uIil9LGdvQmFjazpmdW5j dGlvbigpez0KR2FsYXh5LmxpYnJhcmllcy5saWJyYXJ5X3JvdXRlci5iYWNrKCl9LHNob3dQZXJt aXNzaW9uczpmdW5jdGlvbihmKXt0aGlzLm9wPQp0aW9ucz0zRF8uZXh0ZW5kKHRoaXMub3B0aW9u cyxmKTskKCIudG9vbHRpcCIpLnJlbW92ZSgpO2lmKHRoaXMub3B0aW9ucy5mZXQ9CmNoZWRfcGVy bWlzc2lvbnMhPTNEPTNEdW5kZWZpbmVkKXtpZih0aGlzLm9wdGlvbnMuZmV0Y2hlZF9wZXJtaXNz aW9ucy5hY2Nlcz0Kc19saWJyYXJ5X3JvbGVfbGlzdC5sZW5ndGg9M0Q9M0Q9M0QwKXt0aGlzLm1v ZGVsLnNldCh7aXNfdW5yZXN0cmljdGVkOnRydWV9PQopfWVsc2V7dGhpcy5tb2RlbC5zZXQoe2lz X3VucmVzdHJpY3RlZDpmYWxzZX0pfX12YXIgaD0zRGZhbHNlO2lmKEdhbGF4eS5jdXI9CnJVc2Vy KXtoPTNER2FsYXh5LmN1cnJVc2VyLmlzQWRtaW4oKX12YXIgZz0zRHRoaXMudGVtcGxhdGVMaWJy YXJ5UGVybWlzc2lvbj0KcygpO3RoaXMuJGVsLmh0bWwoZyh7bGlicmFyeTp0aGlzLm1vZGVsLGlz X2FkbWluOmh9KSk7dmFyIGU9M0R0aGlzO2lmKHRoaXMuPQpvcHRpb25zLmZldGNoZWRfcGVybWlz c2lvbnM9M0Q9M0Q9M0R1bmRlZmluZWQpeyQuZ2V0KCIvYXBpL2xpYnJhcmllcy8iK2UuaWQ9Cisi L3Blcm1pc3Npb25zP3Njb3BlPTNEY3VycmVudCIpLmRvbmUoZnVuY3Rpb24oaSl7ZS5wcmVwYXJl U2VsZWN0Qm94ZXMoe2ZldD0KY2hlZF9wZXJtaXNzaW9uczppfSl9KS5mYWlsKGZ1bmN0aW9uKCl7 ZC5lcnJvcigiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0PQplbXB0aW5nIHRvIGZldGNoIGxp YnJhcnkgcGVybWlzc2lvbnMuIil9KX1lbHNle3RoaXMucHJlcGFyZVNlbGVjdEJveGVzKHt9KX09 CiQoIiNjZW50ZXIgW2RhdGEtdG9nZ2xlXSIpLnRvb2x0aXAoKTskKCIjY2VudGVyIikuY3NzKCJv dmVyZmxvdyIsImF1dG8iKX0sXz0Kc2VyaWFsaXplUm9sZXM6ZnVuY3Rpb24oZyl7dmFyIGU9M0Rb XTtmb3IodmFyIGY9M0QwO2Y8Zy5sZW5ndGg7ZisrKXtlLnB1c2goPQpnW2ZdWzFdKyI6IitnW2Zd WzBdKX1yZXR1cm4gZX0scHJlcGFyZVNlbGVjdEJveGVzOmZ1bmN0aW9uKGkpe3RoaXMub3B0aW9u cz0KPTNEXy5leHRlbmQodGhpcy5vcHRpb25zLGkpO3ZhciBlPTNEdGhpcy5vcHRpb25zLmZldGNo ZWRfcGVybWlzc2lvbnM7dmFyIGc9Cj0zRHRoaXM7dmFyIGY9M0R0aGlzLl9zZXJpYWxpemVSb2xl cyhlLmFjY2Vzc19saWJyYXJ5X3JvbGVfbGlzdCk7dmFyIGo9M0R0aD0KaXMuX3NlcmlhbGl6ZVJv bGVzKGUuYWRkX2xpYnJhcnlfaXRlbV9yb2xlX2xpc3QpO3ZhciBoPTNEdGhpcy5fc2VyaWFsaXpl Um9sPQplcyhlLm1hbmFnZV9saWJyYXJ5X3JvbGVfbGlzdCk7dmFyIGs9M0R0aGlzLl9zZXJpYWxp emVSb2xlcyhlLm1vZGlmeV9saWJyYXI9Cnlfcm9sZV9saXN0KTtnLmFjY2Vzc1NlbGVjdE9iamVj dD0zRG5ldyBhLlZpZXcodGhpcy5fY3JlYXRlU2VsZWN0T3B0aW9ucyh0aD0KaXMsImFjY2Vzc19w ZXJtIixmLHRydWUpKTtnLmFkZFNlbGVjdE9iamVjdD0zRG5ldyBhLlZpZXcodGhpcy5fY3JlYXRl U2VsZWN0PQpPcHRpb25zKHRoaXMsImFkZF9wZXJtIixqLGZhbHNlKSk7Zy5tYW5hZ2VTZWxlY3RP YmplY3Q9M0RuZXcgYS5WaWV3KHRoaXMuX2M9CnJlYXRlU2VsZWN0T3B0aW9ucyh0aGlzLCJtYW5h Z2VfcGVybSIsaCxmYWxzZSkpO2cubW9kaWZ5U2VsZWN0T2JqZWN0PTNEbmV3ID0KYS5WaWV3KHRo aXMuX2NyZWF0ZVNlbGVjdE9wdGlvbnModGhpcywibW9kaWZ5X3Blcm0iLGssZmFsc2UpKX0sX2Ny ZWF0ZVNlbGVjPQp0T3B0aW9uczpmdW5jdGlvbihmLGssaSxlKXtlPTNEZT0zRD0zRD0zRHRydWU/ ZTpmYWxzZTt2YXIgaj0zRHttaW5pbXVtSW5wdXQ9Ckxlbmd0aDowLGNzczprLG11bHRpcGxlOnRy dWUscGxhY2Vob2xkZXI6IkNsaWNrIHRvIHNlbGVjdCBhIHJvbGUiLGNvbnRhaW5lcj0KOmYuJGVs LmZpbmQoIiMiK2spLGFqYXg6e3VybDoiL2FwaS9saWJyYXJpZXMvIitmLmlkKyIvcGVybWlzc2lv bnM/c2NvcGU9M0RhPQp2YWlsYWJsZSZpc19saWJyYXJ5X2FjY2Vzcz0zRCIrZSxkYXRhVHlwZToi anNvbiIscXVpZXRNaWxsaXM6MTAwLGRhdGE6ZnVuY3Q9CmlvbihsLG0pe3JldHVybntxOmwscGFn ZV9saW1pdDoxMCxwYWdlOm19fSxyZXN1bHRzOmZ1bmN0aW9uKG4sbSl7dmFyIGw9M0QobT0KKjEw KTxuLnRvdGFsO3JldHVybntyZXN1bHRzOm4ucm9sZXMsbW9yZTpsfX19LGZvcm1hdFJlc3VsdDpm dW5jdGlvbiBnKGwpe3JlPQp0dXJuIGwubmFtZSsiIHR5cGU6ICIrbC50eXBlfSxmb3JtYXRTZWxl Y3Rpb246ZnVuY3Rpb24gaChsKXtyZXR1cm4gbC5uYW1lfSw9CmluaXRTZWxlY3Rpb246ZnVuY3Rp b24obCxuKXt2YXIgbT0zRFtdOyQobC52YWwoKS5zcGxpdCgiLCIpKS5lYWNoKGZ1bmN0aW9uKD0K KXt2YXIgbz0zRHRoaXMuc3BsaXQoIjoiKTttLnB1c2goe2lkOm9bMF0sbmFtZTpvWzFdfSl9KTtu KG0pfSxpbml0aWFsRGF0YTppPQosZHJvcGRvd25Dc3NDbGFzczoiYmlnZHJvcCJ9O3JldHVybiBq fSxjb21pbmdTb29uOmZ1bmN0aW9uKCl7ZC53YXJuaW5nKCJGZWE9CnR1cmUgY29taW5nIHNvb24u Iil9LGNvcHlUb0NsaXBib2FyZDpmdW5jdGlvbigpe3ZhciBlPTNEQmFja2JvbmUuaGlzdG9yeS5s bz0KY2F0aW9uLmhyZWY7aWYoZS5sYXN0SW5kZXhPZigiL3Blcm1pc3Npb25zIikhPTNEPTNELTEp e2U9M0RlLnN1YnN0cigwLGUubGFzPQp0SW5kZXhPZigiL3Blcm1pc3Npb25zIikpfXdpbmRvdy5w cm9tcHQoIkNvcHkgdG8gY2xpcGJvYXJkOiBDdHJsK0MsIEVudGVyIiw9CmUpfSxtYWtlRGF0YXNl dFByaXZhdGU6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXM7JC5wb3N0KCIvYXBpL2xpYnJhcmllcy9k YXRhcz0KZXRzLyIrZS5pZCsiL3Blcm1pc3Npb25zP2FjdGlvbj0zRG1ha2VfcHJpdmF0ZSIpLmRv bmUoZnVuY3Rpb24oZil7ZS5tb2RlbC5zPQpldCh7aXNfdW5yZXN0cmljdGVkOmZhbHNlfSk7ZS5z aG93UGVybWlzc2lvbnMoe2ZldGNoZWRfcGVybWlzc2lvbnM6Zn0pO2Quc3U9CmNjZXNzKCJUaGUg ZGF0YXNldCBpcyBub3cgcHJpdmF0ZSB0byB5b3UuIil9KS5mYWlsKGZ1bmN0aW9uKCl7ZC5lcnJv cigiQW4gZT0KcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIG1ha2UgZGF0YXNldCBw cml2YXRlLiIpfSl9LHJlbW92ZURhdGFzZXRSPQplc3RyaWN0aW9uczpmdW5jdGlvbigpe3ZhciBl PTNEdGhpczskLnBvc3QoIi9hcGkvbGlicmFyaWVzL2RhdGFzZXRzLyIrZS5pZCs9CiIvcGVybWlz c2lvbnM/YWN0aW9uPTNEcmVtb3ZlX3Jlc3RyaWN0aW9ucyIpLmRvbmUoZnVuY3Rpb24oZil7ZS5t b2RlbC5zZXQoez0KaXNfdW5yZXN0cmljdGVkOnRydWV9KTtlLnNob3dQZXJtaXNzaW9ucyh7ZmV0 Y2hlZF9wZXJtaXNzaW9uczpmfSk7ZC5zdWNjZXNzPQooIkFjY2VzcyB0byB0aGlzIGRhdGFzZXQg aXMgbm93IHVucmVzdHJpY3RlZC4iKX0pLmZhaWwoZnVuY3Rpb24oKXtkLmVycm9yKCI9CkFuIGVy cm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gbWFrZSBkYXRhc2V0IHVucmVzdHJpY3Rl ZC4iKX0pfSxfZXh0cj0KYWN0SWRzOmZ1bmN0aW9uKGUpe2lkc19saXN0PTNEW107Zm9yKHZhciBm PTNEZS5sZW5ndGgtMTtmPj0zRDA7Zi0tKXtpZHNfbGlzPQp0LnB1c2goZVtmXS5pZCl9cmV0dXJu IGlkc19saXN0fSxzYXZlUGVybWlzc2lvbnM6ZnVuY3Rpb24oaCl7dmFyIGc9M0R0aGlzO3Y9CmFy IGk9M0R0aGlzLl9leHRyYWN0SWRzKHRoaXMuYWNjZXNzU2VsZWN0T2JqZWN0LiRlbC5zZWxlY3Qy KCJkYXRhIikpO3ZhciBlPQo9M0R0aGlzLl9leHRyYWN0SWRzKHRoaXMuYWRkU2VsZWN0T2JqZWN0 LiRlbC5zZWxlY3QyKCJkYXRhIikpO3ZhciBqPTNEdGhpcy49Cl9leHRyYWN0SWRzKHRoaXMubWFu YWdlU2VsZWN0T2JqZWN0LiRlbC5zZWxlY3QyKCJkYXRhIikpO3ZhciBmPTNEdGhpcy5fZXh0cj0K YWN0SWRzKHRoaXMubW9kaWZ5U2VsZWN0T2JqZWN0LiRlbC5zZWxlY3QyKCJkYXRhIikpOyQucG9z dCgiL2FwaS9saWJyYXJpZXMvPQoiK2cuaWQrIi9wZXJtaXNzaW9ucz9hY3Rpb249M0RzZXRfcGVy bWlzc2lvbnMiLHsiYWNjZXNzX2lkc1tdIjppLCJhZGRfaWRzW109CiI6ZSwibWFuYWdlX2lkc1td IjpqLCJtb2RpZnlfaWRzW10iOmYsfSkuZG9uZShmdW5jdGlvbihrKXtnLnNob3dQZXJtaXNzaW9u cz0KKHtmZXRjaGVkX3Blcm1pc3Npb25zOmt9KTtkLnN1Y2Nlc3MoIlBlcm1pc3Npb25zIHNhdmVk LiIpfSkuZmFpbChmdW5jdGlvbigpPQp7ZC5lcnJvcigiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUg YXR0ZW1wdGluZyB0byBzZXQgbGlicmFyeSBwZXJtaXNzaW9ucy4iKX09Cil9LHRlbXBsYXRlTGli cmFyeTpmdW5jdGlvbigpe3ZhciBlPTNEW107ZS5wdXNoKCc8ZGl2IGNsYXNzPTNEImxpYnJhcnlf c3R5bD0KZV9jb250YWluZXIiPicpO2UucHVzaCgnICA8ZGl2IGlkPTNEImxpYnJhcnlfdG9vbGJh ciI+Jyk7ZS5wdXNoKCcgICA8YnV0dG9uPQogZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1w bGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0zRCJNb2RpZnkgbGlicmFyeSBpdGU9Cm0iIGNsYXNzPTNE ImJ0biBidG4tZGVmYXVsdCB0b29sYnRuX21vZGlmeV9kYXRhc2V0IHByaW1hcnktYnV0dG9uIiB0 eXBlPTNEIj0KYnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1wZW5jaWwiPjwvc3Bhbj4gTW9k aWZ5PC9zcGFuPjwvYnV0dG9uPicpO2UucHVzPQpoKCcgICA8YSBocmVmPTNEIiNmb2xkZXJzLzwl LSBpdGVtLmdldCgiZm9sZGVyX2lkIikgJT4vZGF0YXNldHMvPCUtIGl0ZW0uaWQ9CiAlPi9wZXJt aXNzaW9ucyI+PGJ1dHRvbiBkYXRhLXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0z RCJ0b3AiIHRpdD0KbGU9M0QiTWFuYWdlIHBlcm1pc3Npb25zIiBjbGFzcz0zRCJidG4gYnRuLWRl ZmF1bHQgdG9vbGJ0bl9jaGFuZ2VfcGVybWlzc2lvPQpucyBwcmltYXJ5LWJ1dHRvbiIgdHlwZT0z RCJidXR0b24iPjxzcGFuIGNsYXNzPTNEImZhIGZhLWdyb3VwIj48L3NwYW4+IFBlcm09Cmlzc2lv bnM8L3NwYW4+PC9idXR0b24+PC9hPicpO2UucHVzaCgnICAgPGJ1dHRvbiBkYXRhLXRvZ2dsZT0z RCJ0b29sdGlwIiBkYT0KdGEtcGxhY2VtZW50PTNEInRvcCIgdGl0bGU9M0QiU2hhcmUgZGF0YXNl dCIgY2xhc3M9M0QiYnRuIGJ0bi1kZWZhdWx0IHRvb2xiPQp0bi1zaGFyZS1kYXRhc2V0IHByaW1h cnktYnV0dG9uIiB0eXBlPTNEImJ1dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtc2hhcmU9CiI+ PC9zcGFuPiBTaGFyZTwvc3Bhbj48L2J1dHRvbj4nKTtlLnB1c2goIiAgPC9kaXY+Iik7ZS5wdXNo KCIgIDxwPiIpO2UucHVzaD0KKCIgIFRoaXMgZGF0YXNldCBpcyB1bnJlc3RyaWN0ZWQgc28gZXZl cnlib2R5IGNhbiBhY2Nlc3MgaXQuIEp1c3Qgc2hhcmUgdGhlPQogVVJMIG9mIHRoaXMgcGFnZS4g Iik7ZS5wdXNoKCcgIDxidXR0b24gZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW09 CmVudD0zRCJ0b3AiIHRpdGxlPTNEIkNvcHkgdG8gY2xpcGJvYXJkIiBjbGFzcz0zRCJidG4gYnRu LWRlZmF1bHQgYnRuLWNvcHktbD0KaW5rLXRvLWNsaXBib2FyZCBwcmltYXJ5LWJ1dHRvbiIgdHlw ZT0zRCJidXR0b24iPjxzcGFuIGNsYXNzPTNEImZhIGZhLWNsaXBiPQpvYXJkIj48L3NwYW4+IFRv IENsaXBib2FyZDwvc3Bhbj48L2J1dHRvbj4gJyk7ZS5wdXNoKCIgIDwvcD4iKTtlLnB1c2goJzxk aXY9CiBjbGFzcz0zRCJkYXRhc2V0X3RhYmxlIj4nKTtlLnB1c2goJyAgIDx0YWJsZSBjbGFzcz0z RCJncmlkIHRhYmxlIHRhYmxlLXN0cj0KaXBlZCB0YWJsZS1jb25kZW5zZWQiPicpO2UucHVzaCgi ICAgICAgIDx0cj4iKTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3BlPQo9M0Qicm93IiBpZD0z RCJpZF9yb3ciIGRhdGEtaWQ9M0QiPCU9M0QgXy5lc2NhcGUoaXRlbS5nZXQoImxkZGFfaWQiKSkg JT4iPk49CmFtZTwvdGg+Jyk7ZS5wdXNoKCcgICAgICAgICAgIDx0ZD48JT0zRCBfLmVzY2FwZShp dGVtLmdldCgibmFtZSIpKSAlPjwvdGQ+Jz0KKTtlLnB1c2goIiAgICAgICA8L3RyPiIpO2UucHVz aCgnICAgPCUgaWYgKGl0ZW0uZ2V0KCJmaWxlX2V4dCIpKSB7ICU+Jyk7ZS5wPQp1c2goIiAgICAg ICA8dHI+Iik7ZS5wdXNoKCcgICAgICAgICAgIDx0aCBzY29wZT0zRCJyb3ciPkRhdGEgdHlwZTwv dGg+Jyk7ZS49CnB1c2goJyAgICAgICAgICAgPHRkPjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0KCJm aWxlX2V4dCIpKSAlPjwvdGQ+Jyk7ZS5wdXNoKD0KIiAgICAgICA8L3RyPiIpO2UucHVzaCgiICAg PCUgfSAlPiIpO2UucHVzaCgiICAgIDwvdGFibGU+Iik7ZS5wdXNoKCI8L2Rpdj4iPQopO2UucHVz aCgiPC9kaXY+Iik7cmV0dXJuIF8udGVtcGxhdGUoZS5qb2luKCIiKSl9LHRlbXBsYXRlTGlicmFy eVBlcm1pc3Npb249CnM6ZnVuY3Rpb24oKXt2YXIgZT0zRFtdO2UucHVzaCgnPGRpdiBjbGFzcz0z RCJsaWJyYXJ5X3N0eWxlX2NvbnRhaW5lciI+Jyk7ZT0KLnB1c2goJyAgPGRpdiBpZD0zRCJsaWJy YXJ5X3Rvb2xiYXIiPicpO2UucHVzaCgnICAgPGEgaHJlZj0zRCIjIj48YnV0dG9uIGRhPQp0YS10 b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0zRCJHbyBiYWNr IHRvIHRoZSBsaXN0IG89CmYgTGlicmFyaWVzIiBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQgcHJp bWFyeS1idXR0b24iIHR5cGU9M0QiYnV0dG9uIj48c3Bhbj0KIGNsYXNzPTNEImZhIGZhLWxpc3Qi Pjwvc3Bhbj4gTGlicmFyaWVzPC9zcGFuPjwvYnV0dG9uPjwvYT4nKTtlLnB1c2goIiAgPC9kPQpp dj4iKTtlLnB1c2goJzxoMT5MaWJyYXJ5OiA8JT0zRCBfLmVzY2FwZShsaWJyYXJ5LmdldCgibmFt ZSIpKSAlPjwvaDE+Jyk7ZS49CnB1c2goJzxkaXYgY2xhc3M9M0QiYWxlcnQgYWxlcnQtd2Fybmlu ZyI+Jyk7ZS5wdXNoKCI8JSBpZiAoaXNfYWRtaW4pIHsgJT4iKT0KO2UucHVzaCgiWW91IGFyZSBs b2dnZWQgaW4gYXMgYW4gPHN0cm9uZz5hZG1pbmlzdHJhdG9yPC9zdHJvbmc+IHRoZXJlZm9yZSB5 PQpvdSBjYW4gbWFuYWdlIGFueSBsaWJyYXJ5IG9uIHRoaXMgR2FsYXh5IGluc3RhbmNlLiBQbGVh c2UgbWFrZSBzdXJlIHlvdSB1bmQ9CmVyc3RhbmQgdGhlIGNvbnNlcXVlbmNlcy4iKTtlLnB1c2go IjwlIH0gZWxzZSB7ICU+Iik7ZS5wdXNoKCJZb3UgY2FuIGFzc2lnbj0KIGFueSBudW1iZXIgb2Yg cm9sZXMgdG8gYW55IG9mIHRoZSBmb2xsb3dpbmcgcGVybWlzc2lvbiB0eXBlcy4gSG93ZXZlciBw bGVhPQpzZSByZWFkIGNhcmVmdWxseSB0aGUgaW1wbGljYXRpb25zIG9mIHN1Y2ggYWN0aW9ucy4i KTtlLnB1c2goIjwlIH0lPiIpO2UucHU9CnNoKCI8L2Rpdj4iKTtlLnB1c2goJzxkaXYgY2xhc3M9 M0QiZGF0YXNldF90YWJsZSI+Jyk7ZS5wdXNoKCI8aDI+TGlicmFyeSBwZT0Kcm1pc3Npb25zPC9o Mj4iKTtlLnB1c2goIjxoND5Sb2xlcyB0aGF0IGNhbiBhY2Nlc3MgdGhlIGxpYnJhcnk8L2g0PiIp O2UucHVzPQpoKCc8ZGl2IGlkPTNEImFjY2Vzc19wZXJtIiBjbGFzcz0zRCJhY2Nlc3NfcGVybSBy b2xlcy1zZWxlY3Rpb24iPjwvZGl2PicpO2U9Ci5wdXNoKCc8ZGl2IGNsYXNzPTNEImFsZXJ0IGFs ZXJ0LWluZm8gcm9sZXMtc2VsZWN0aW9uIj5Vc2VyIHdpdGggPHN0cm9uZz5hbj0KeTwvc3Ryb25n PiBvZiB0aGVzZSByb2xlcyBjYW4gYWNjZXNzIHRoaXMgbGlicmFyeS4gSWYgdGhlcmUgYXJlIG5v IGFjY2VzcyByPQpvbGVzIHNldCBvbiB0aGUgbGlicmFyeSBpdCBpcyBjb25zaWRlcmVkIDxzdHJv bmc+dW5yZXN0cmljdGVkPC9zdHJvbmc+LjwvZGk9CnY+Jyk7ZS5wdXNoKCI8aDQ+Um9sZXMgdGhh dCBjYW4gbWFuYWdlIHBlcm1pc3Npb25zIG9uIHRoaXMgbGlicmFyeTwvaDQ+Iik7ZT0KLnB1c2go JzxkaXYgaWQ9M0QibWFuYWdlX3Blcm0iIGNsYXNzPTNEIm1hbmFnZV9wZXJtIHJvbGVzLXNlbGVj dGlvbiI+PC9kaXY+PQonKTtlLnB1c2goJzxkaXYgY2xhc3M9M0QiYWxlcnQgYWxlcnQtaW5mbyBy b2xlcy1zZWxlY3Rpb24iPlVzZXIgd2l0aCA8c3Ryb249Cmc+YW55PC9zdHJvbmc+IG9mIHRoZXNl IHJvbGVzIGNhbiBtYW5hZ2UgcGVybWlzc2lvbnMgb24gdGhpcyBsaWJyYXJ5IChpbmNsdT0KZGVz IGdpdmluZyBhY2Nlc3MpLjwvZGl2PicpO2UucHVzaCgiPGg0PlJvbGVzIHRoYXQgY2FuIGFkZCBp dGVtcyB0byB0aGlzIGxpPQpicmFyeTwvaDQ+Iik7ZS5wdXNoKCc8ZGl2IGlkPTNEImFkZF9wZXJt IiBjbGFzcz0zRCJhZGRfcGVybSByb2xlcy1zZWxlY3Rpb249CiI+PC9kaXY+Jyk7ZS5wdXNoKCc8 ZGl2IGNsYXNzPTNEImFsZXJ0IGFsZXJ0LWluZm8gcm9sZXMtc2VsZWN0aW9uIj5Vc2VyIHdpdD0K aCA8c3Ryb25nPmFueTwvc3Ryb25nPiBvZiB0aGVzZSByb2xlcyBjYW4gYWRkIGl0ZW1zIHRvIHRo aXMgbGlicmFyeSAoZm9sZGVyPQpzIGFuZCBkYXRhc2V0cykuPC9kaXY+Jyk7ZS5wdXNoKCI8aDQ+ Um9sZXMgdGhhdCBjYW4gbW9kaWZ5IHRoaXMgbGlicmFyeTwvaDQ9Cj4iKTtlLnB1c2goJzxkaXYg aWQ9M0QibW9kaWZ5X3Blcm0iIGNsYXNzPTNEIm1vZGlmeV9wZXJtIHJvbGVzLXNlbGVjdGlvbiI+ PD0KL2Rpdj4nKTtlLnB1c2goJzxkaXYgY2xhc3M9M0QiYWxlcnQgYWxlcnQtaW5mbyByb2xlcy1z ZWxlY3Rpb24iPlVzZXIgd2l0aCA8PQpzdHJvbmc+YW55PC9zdHJvbmc+IG9mIHRoZXNlIHJvbGVz IGNhbiBtb2RpZnkgdGhpcyBsaWJyYXJ5IChuYW1lLCBzeW5vcHNpcyw9CiBldGMuKS48L2Rpdj4n KTtlLnB1c2goJzxidXR0b24gZGF0YS10b2dnbGU9M0QidG9vbHRpcCIgZGF0YS1wbGFjZW1lbnQ9 M0QidD0Kb3AiIHRpdGxlPTNEIlNhdmUgbW9kaWZpY2F0aW9ucyBtYWRlIG9uIHRoaXMgcGFnZSIg Y2xhc3M9M0QiYnRuIGJ0bi1kZWZhdWx0PQogdG9vbGJ0bl9zYXZlX3Blcm1pc3Npb25zIHByaW1h cnktYnV0dG9uIiB0eXBlPTNEImJ1dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmE9CiBmYS1mbG9wcHkt byI+PC9zcGFuPiBTYXZlPC9zcGFuPjwvYnV0dG9uPicpO2UucHVzaCgiPC9kaXY+Iik7ZS5wdXNo KCI8L2Rpdj0KPiIpO3JldHVybiBfLnRlbXBsYXRlKGUuam9pbigiIikpfX0pO3JldHVybntMaWJy YXJ5VmlldzpifX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RlZmluZShbImxpYnMv dG9hc3RyIiwibXZjL2xpYnJhcnkvbGlicmFyeS1tb2RlbCIsIm12Yy91aS91aS1zZWxlY3QiXSxm dW5jPQp0aW9uKGQsYyxhKXt2YXIgYj0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtlbDoiI2NlbnRl ciIsbW9kZWw6bnVsbCxvcHRpb25zOns9Cn0sZXZlbnRzOnsiY2xpY2sgLnRvb2xidG5fc2F2ZV9w ZXJtaXNzaW9ucyI6InNhdmVQZXJtaXNzaW9ucyJ9LGluaXRpYWxpemU6Zj0KdW5jdGlvbihlKXt0 aGlzLm9wdGlvbnM9M0RfLmV4dGVuZCh0aGlzLm9wdGlvbnMsZSk7aWYodGhpcy5vcHRpb25zLmlk KXt0aGlzPQouZmV0Y2hMaWJyYXJ5KCl9fSxmZXRjaExpYnJhcnk6ZnVuY3Rpb24oZSl7dGhpcy5v cHRpb25zPTNEXy5leHRlbmQodGhpcy5vcHQ9CmlvbnMsZSk7dGhpcy5tb2RlbD0zRG5ldyBjLkxp YnJhcnkoe2lkOnRoaXMub3B0aW9ucy5pZH0pO3ZhciBmPTNEdGhpczt0aGlzLj0KbW9kZWwuZmV0 Y2goe3N1Y2Nlc3M6ZnVuY3Rpb24oKXtpZihmLm9wdGlvbnMuc2hvd19wZXJtaXNzaW9ucyl7Zi5z aG93UGVybWlzPQpzaW9ucygpfWVsc2V7Zi5yZW5kZXIoKX19LGVycm9yOmZ1bmN0aW9uKGgsZyl7 aWYodHlwZW9mIGcucmVzcG9uc2VKU09OIT0zRD0KPTNEInVuZGVmaW5lZCIpe2QuZXJyb3IoZy5y ZXNwb25zZUpTT04uZXJyX21zZysiIENsaWNrIHRoaXMgdG8gZ28gYmFjay4iLCIiPQose29uY2xp Y2s6ZnVuY3Rpb24oKXtHYWxheHkubGlicmFyaWVzLmxpYnJhcnlfcm91dGVyLmJhY2soKX19KX1l bHNle2QuZXJyb3I9CigiQW4gZXJyb3Igb2N1cnJlZC4gQ2xpY2sgdGhpcyB0byBnbyBiYWNrLiIs IiIse29uY2xpY2s6ZnVuY3Rpb24oKXtHYWxheHkubD0KaWJyYXJpZXMubGlicmFyeV9yb3V0ZXIu YmFjaygpfX0pfX19KX0scmVuZGVyOmZ1bmN0aW9uKGUpeyQoIi50b29sdGlwIikucmVtPQpvdmUo KTt0aGlzLm9wdGlvbnM9M0RfLmV4dGVuZCh0aGlzLm9wdGlvbnMsZSk7dmFyIGY9M0R0aGlzLnRl bXBsYXRlTGlicmFyeSg9Cik7dGhpcy4kZWwuaHRtbChmKHtpdGVtOnRoaXMubW9kZWx9KSk7JCgi I2NlbnRlciBbZGF0YS10b2dnbGVdIikudG9vbHRpcCgpfT0KLHNoYXJlRGF0YXNldDpmdW5jdGlv bigpe2QuaW5mbygiRmVhdHVyZSBjb21pbmcgc29vbi4iKX0sZ29CYWNrOmZ1bmN0aW9uKCl7PQpH YWxheHkubGlicmFyaWVzLmxpYnJhcnlfcm91dGVyLmJhY2soKX0sc2hvd1Blcm1pc3Npb25zOmZ1 bmN0aW9uKGYpe3RoaXMub3A9CnRpb25zPTNEXy5leHRlbmQodGhpcy5vcHRpb25zLGYpOyQoIi50 b29sdGlwIikucmVtb3ZlKCk7aWYodGhpcy5vcHRpb25zLmZldD0KY2hlZF9wZXJtaXNzaW9ucyE9 M0Q9M0R1bmRlZmluZWQpe2lmKHRoaXMub3B0aW9ucy5mZXRjaGVkX3Blcm1pc3Npb25zLmFjY2Vz PQpzX2xpYnJhcnlfcm9sZV9saXN0Lmxlbmd0aD0zRD0zRD0zRDApe3RoaXMubW9kZWwuc2V0KHtp c191bnJlc3RyaWN0ZWQ6dHJ1ZX09Cil9ZWxzZXt0aGlzLm1vZGVsLnNldCh7aXNfdW5yZXN0cmlj dGVkOmZhbHNlfSl9fXZhciBoPTNEZmFsc2U7aWYoR2FsYXh5LmN1cj0KclVzZXIpe2g9M0RHYWxh eHkuY3VyclVzZXIuaXNBZG1pbigpfXZhciBnPTNEdGhpcy50ZW1wbGF0ZUxpYnJhcnlQZXJtaXNz aW9uPQpzKCk7dGhpcy4kZWwuaHRtbChnKHtsaWJyYXJ5OnRoaXMubW9kZWwsaXNfYWRtaW46aH0p KTt2YXIgZT0zRHRoaXM7aWYodGhpcy49Cm9wdGlvbnMuZmV0Y2hlZF9wZXJtaXNzaW9ucz0zRD0z RD0zRHVuZGVmaW5lZCl7JC5nZXQoKHdpbmRvdy5nYWxheHlfY29uZmlnPz0KZ2FsYXh5X2NvbmZp Zy5yb290OiIvIikrImFwaS9saWJyYXJpZXMvIitlLmlkKyIvcGVybWlzc2lvbnM/c2NvcGU9M0Rj dXJyZW50PQoiKS5kb25lKGZ1bmN0aW9uKGkpe2UucHJlcGFyZVNlbGVjdEJveGVzKHtmZXRjaGVk X3Blcm1pc3Npb25zOml9KX0pLmZhaWwoZnU9Cm5jdGlvbigpe2QuZXJyb3IoIkFuIGVycm9yIG9j Y3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gZmV0Y2ggbGlicmFyeSBwZXJtaT0Kc3Npb25zLiIp fSl9ZWxzZXt0aGlzLnByZXBhcmVTZWxlY3RCb3hlcyh7fSl9JCgiI2NlbnRlciBbZGF0YS10b2dn bGVdIikudG9vPQpsdGlwKCk7JCgiI2NlbnRlciIpLmNzcygib3ZlcmZsb3ciLCJhdXRvIil9LF9z ZXJpYWxpemVSb2xlczpmdW5jdGlvbihnKXt2YXI9CiBlPTNEW107Zm9yKHZhciBmPTNEMDtmPGcu bGVuZ3RoO2YrKyl7ZS5wdXNoKGdbZl1bMV0rIjoiK2dbZl1bMF0pfXJldHVybiBlfT0KLHByZXBh cmVTZWxlY3RCb3hlczpmdW5jdGlvbihpKXt0aGlzLm9wdGlvbnM9M0RfLmV4dGVuZCh0aGlzLm9w dGlvbnMsaSk7dmFyPQogZT0zRHRoaXMub3B0aW9ucy5mZXRjaGVkX3Blcm1pc3Npb25zO3ZhciBn PTNEdGhpczt2YXIgZj0zRHRoaXMuX3NlcmlhbGl6ZVI9Cm9sZXMoZS5hY2Nlc3NfbGlicmFyeV9y b2xlX2xpc3QpO3ZhciBqPTNEdGhpcy5fc2VyaWFsaXplUm9sZXMoZS5hZGRfbGlicmFyeT0KX2l0 ZW1fcm9sZV9saXN0KTt2YXIgaD0zRHRoaXMuX3NlcmlhbGl6ZVJvbGVzKGUubWFuYWdlX2xpYnJh cnlfcm9sZV9saXN0KTt2PQphciBrPTNEdGhpcy5fc2VyaWFsaXplUm9sZXMoZS5tb2RpZnlfbGli cmFyeV9yb2xlX2xpc3QpO2cuYWNjZXNzU2VsZWN0T2JqZWM9CnQ9M0RuZXcgYS5WaWV3KHRoaXMu X2NyZWF0ZVNlbGVjdE9wdGlvbnModGhpcywiYWNjZXNzX3Blcm0iLGYsdHJ1ZSkpO2cuYWRkUz0K ZWxlY3RPYmplY3Q9M0RuZXcgYS5WaWV3KHRoaXMuX2NyZWF0ZVNlbGVjdE9wdGlvbnModGhpcywi YWRkX3Blcm0iLGosZmFsc2UpPQopO2cubWFuYWdlU2VsZWN0T2JqZWN0PTNEbmV3IGEuVmlldyh0 aGlzLl9jcmVhdGVTZWxlY3RPcHRpb25zKHRoaXMsIm1hbmFnZV89CnBlcm0iLGgsZmFsc2UpKTtn Lm1vZGlmeVNlbGVjdE9iamVjdD0zRG5ldyBhLlZpZXcodGhpcy5fY3JlYXRlU2VsZWN0T3B0aW9u cz0KKHRoaXMsIm1vZGlmeV9wZXJtIixrLGZhbHNlKSl9LF9jcmVhdGVTZWxlY3RPcHRpb25zOmZ1 bmN0aW9uKGYsayxpLGUpe2U9M0RlPQo9M0Q9M0Q9M0R0cnVlP2U6ZmFsc2U7dmFyIGo9M0R7bWlu aW11bUlucHV0TGVuZ3RoOjAsY3NzOmssbXVsdGlwbGU6dHJ1ZSxwbGE9CmNlaG9sZGVyOiJDbGlj ayB0byBzZWxlY3QgYSByb2xlIixjb250YWluZXI6Zi4kZWwuZmluZCgiIyIrayksYWpheDp7dXJs Oih3aT0KbmRvdy5nYWxheHlfY29uZmlnP2dhbGF4eV9jb25maWcucm9vdDoiLyIpKyJhcGkvbGli cmFyaWVzLyIrZi5pZCsiL3Blcm1pc3NpPQpvbnM/c2NvcGU9M0RhdmFpbGFibGUmaXNfbGlicmFy eV9hY2Nlc3M9M0QiK2UsZGF0YVR5cGU6Impzb24iLHF1aWV0TWlsbGlzOjE9CjAwLGRhdGE6ZnVu Y3Rpb24obCxtKXtyZXR1cm57cTpsLHBhZ2VfbGltaXQ6MTAscGFnZTptfX0scmVzdWx0czpmdW5j dGlvbihuLD0KbSl7dmFyIGw9M0QobSoxMCk8bi50b3RhbDtyZXR1cm57cmVzdWx0czpuLnJvbGVz LG1vcmU6bH19fSxmb3JtYXRSZXN1bHQ6ZnVuPQpjdGlvbiBnKGwpe3JldHVybiBsLm5hbWUrIiB0 eXBlOiAiK2wudHlwZX0sZm9ybWF0U2VsZWN0aW9uOmZ1bmN0aW9uIGgobCl7cmU9CnR1cm4gbC5u YW1lfSxpbml0U2VsZWN0aW9uOmZ1bmN0aW9uKGwsbil7dmFyIG09M0RbXTskKGwudmFsKCkuc3Bs aXQoIiwiKSkuZT0KYWNoKGZ1bmN0aW9uKCl7dmFyIG89M0R0aGlzLnNwbGl0KCI6Iik7bS5wdXNo KHtpZDpvWzBdLG5hbWU6b1sxXX0pfSk7bihtKX0sPQppbml0aWFsRGF0YTppLGRyb3Bkb3duQ3Nz Q2xhc3M6ImJpZ2Ryb3AifTtyZXR1cm4gan0sY29taW5nU29vbjpmdW5jdGlvbigpe2Q9Ci53YXJu aW5nKCJGZWF0dXJlIGNvbWluZyBzb29uLiIpfSxjb3B5VG9DbGlwYm9hcmQ6ZnVuY3Rpb24oKXt2 YXIgZT0zREJhY2tibz0KbmUuaGlzdG9yeS5sb2NhdGlvbi5ocmVmO2lmKGUubGFzdEluZGV4T2Yo Ii9wZXJtaXNzaW9ucyIpIT0zRD0zRC0xKXtlPTNEZS5zPQp1YnN0cigwLGUubGFzdEluZGV4T2Yo Ii9wZXJtaXNzaW9ucyIpKX13aW5kb3cucHJvbXB0KCJDb3B5IHRvIGNsaXBib2FyZDogQ3Q9CnJs K0MsIEVudGVyIixlKX0sbWFrZURhdGFzZXRQcml2YXRlOmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlz OyQucG9zdCgod2luZG93Lj0KZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsi YXBpL2xpYnJhcmllcy9kYXRhc2V0cy8iK2UuaWQrIi9wZXJtPQppc3Npb25zP2FjdGlvbj0zRG1h a2VfcHJpdmF0ZSIpLmRvbmUoZnVuY3Rpb24oZil7ZS5tb2RlbC5zZXQoe2lzX3VucmVzdHJpY3Q9 CmVkOmZhbHNlfSk7ZS5zaG93UGVybWlzc2lvbnMoe2ZldGNoZWRfcGVybWlzc2lvbnM6Zn0pO2Qu c3VjY2VzcygiVGhlIGRhdGFzZT0KdCBpcyBub3cgcHJpdmF0ZSB0byB5b3UuIil9KS5mYWlsKGZ1 bmN0aW9uKCl7ZC5lcnJvcigiQW4gZXJyb3Igb2NjdXJyZWQgd2hpPQpsZSBhdHRlbXB0aW5nIHRv IG1ha2UgZGF0YXNldCBwcml2YXRlLiIpfSl9LHJlbW92ZURhdGFzZXRSZXN0cmljdGlvbnM6ZnVu Y3Q9Cmlvbigpe3ZhciBlPTNEdGhpczskLnBvc3QoKHdpbmRvdy5nYWxheHlfY29uZmlnP2dhbGF4 eV9jb25maWcucm9vdDoiLyIpKyJhcD0KaS9saWJyYXJpZXMvZGF0YXNldHMvIitlLmlkKyIvcGVy bWlzc2lvbnM/YWN0aW9uPTNEcmVtb3ZlX3Jlc3RyaWN0aW9ucyIpLmRvPQpuZShmdW5jdGlvbihm KXtlLm1vZGVsLnNldCh7aXNfdW5yZXN0cmljdGVkOnRydWV9KTtlLnNob3dQZXJtaXNzaW9ucyh7 ZmV0Y2g9CmVkX3Blcm1pc3Npb25zOmZ9KTtkLnN1Y2Nlc3MoIkFjY2VzcyB0byB0aGlzIGRhdGFz ZXQgaXMgbm93IHVucmVzdHJpY3RlZC4iKT0KfSkuZmFpbChmdW5jdGlvbigpe2QuZXJyb3IoIkFu IGVycm9yIG9jY3VycmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gbWFrZSBkYXRhPQpzZXQgdW5yZXN0 cmljdGVkLiIpfSl9LF9leHRyYWN0SWRzOmZ1bmN0aW9uKGUpe2lkc19saXN0PTNEW107Zm9yKHZh ciBmPTNEZS49Cmxlbmd0aC0xO2Y+PTNEMDtmLS0pe2lkc19saXN0LnB1c2goZVtmXS5pZCl9cmV0 dXJuIGlkc19saXN0fSxzYXZlUGVybWlzc2lvbj0KczpmdW5jdGlvbihoKXt2YXIgZz0zRHRoaXM7 dmFyIGk9M0R0aGlzLl9leHRyYWN0SWRzKHRoaXMuYWNjZXNzU2VsZWN0T2JqZWN0PQouJGVsLnNl bGVjdDIoImRhdGEiKSk7dmFyIGU9M0R0aGlzLl9leHRyYWN0SWRzKHRoaXMuYWRkU2VsZWN0T2Jq ZWN0LiRlbC5zZWw9CmVjdDIoImRhdGEiKSk7dmFyIGo9M0R0aGlzLl9leHRyYWN0SWRzKHRoaXMu bWFuYWdlU2VsZWN0T2JqZWN0LiRlbC5zZWxlY3QyKD0KImRhdGEiKSk7dmFyIGY9M0R0aGlzLl9l eHRyYWN0SWRzKHRoaXMubW9kaWZ5U2VsZWN0T2JqZWN0LiRlbC5zZWxlY3QyKCJkYXRhPQoiKSk7 JC5wb3N0KCh3aW5kb3cuZ2FsYXh5X2NvbmZpZz9nYWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBp L2xpYnJhcmllcy8iK2c9Ci5pZCsiL3Blcm1pc3Npb25zP2FjdGlvbj0zRHNldF9wZXJtaXNzaW9u cyIseyJhY2Nlc3NfaWRzW10iOmksImFkZF9pZHNbXSI6ZT0KLCJtYW5hZ2VfaWRzW10iOmosIm1v ZGlmeV9pZHNbXSI6Zix9KS5kb25lKGZ1bmN0aW9uKGspe2cuc2hvd1Blcm1pc3Npb25zKHtmPQpl dGNoZWRfcGVybWlzc2lvbnM6a30pO2Quc3VjY2VzcygiUGVybWlzc2lvbnMgc2F2ZWQuIil9KS5m YWlsKGZ1bmN0aW9uKCl7ZC49CmVycm9yKCJBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0 aW5nIHRvIHNldCBsaWJyYXJ5IHBlcm1pc3Npb25zLiIpfSl9LD0KdGVtcGxhdGVMaWJyYXJ5OmZ1 bmN0aW9uKCl7dmFyIGU9M0RbXTtlLnB1c2goJzxkaXYgY2xhc3M9M0QibGlicmFyeV9zdHlsZV9j PQpvbnRhaW5lciI+Jyk7ZS5wdXNoKCcgIDxkaXYgaWQ9M0QibGlicmFyeV90b29sYmFyIj4nKTtl LnB1c2goJyAgIDxidXR0b24gZGE9CnRhLXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRhLXBsYWNlbWVu dD0zRCJ0b3AiIHRpdGxlPTNEIk1vZGlmeSBsaWJyYXJ5IGl0ZW0iID0KY2xhc3M9M0QiYnRuIGJ0 bi1kZWZhdWx0IHRvb2xidG5fbW9kaWZ5X2RhdGFzZXQgcHJpbWFyeS1idXR0b24iIHR5cGU9M0Qi YnV0PQp0b24iPjxzcGFuIGNsYXNzPTNEImZhIGZhLXBlbmNpbCI+PC9zcGFuPiBNb2RpZnk8L3Nw YW4+PC9idXR0b24+Jyk7ZS5wdXNoKCc9CiAgIDxhIGhyZWY9M0QiI2ZvbGRlcnMvPCUtIGl0ZW0u Z2V0KCJmb2xkZXJfaWQiKSAlPi9kYXRhc2V0cy88JS0gaXRlbS5pZCAlPj0KL3Blcm1pc3Npb25z Ij48YnV0dG9uIGRhdGEtdG9nZ2xlPTNEInRvb2x0aXAiIGRhdGEtcGxhY2VtZW50PTNEInRvcCIg dGl0bGU9Cj0zRCJNYW5hZ2UgcGVybWlzc2lvbnMiIGNsYXNzPTNEImJ0biBidG4tZGVmYXVsdCB0 b29sYnRuX2NoYW5nZV9wZXJtaXNzaW9ucz0KIHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1dHRv biI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtZ3JvdXAiPjwvc3Bhbj4gUGVybWlzPQpzaW9uczwvc3Bh bj48L2J1dHRvbj48L2E+Jyk7ZS5wdXNoKCcgICA8YnV0dG9uIGRhdGEtdG9nZ2xlPTNEInRvb2x0 aXAiIGRhdGE9Ci1wbGFjZW1lbnQ9M0QidG9wIiB0aXRsZT0zRCJTaGFyZSBkYXRhc2V0IiBjbGFz cz0zRCJidG4gYnRuLWRlZmF1bHQgdG9vbGJ0bj0KLXNoYXJlLWRhdGFzZXQgcHJpbWFyeS1idXR0 b24iIHR5cGU9M0QiYnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1zaGFyZSI+PQo8L3NwYW4+ IFNoYXJlPC9zcGFuPjwvYnV0dG9uPicpO2UucHVzaCgiICA8L2Rpdj4iKTtlLnB1c2goIiAgPHA+ Iik7ZS5wdXNoKCI9CiAgVGhpcyBkYXRhc2V0IGlzIHVucmVzdHJpY3RlZCBzbyBldmVyeWJvZHkg Y2FuIGFjY2VzcyBpdC4gSnVzdCBzaGFyZSB0aGUgVT0KUkwgb2YgdGhpcyBwYWdlLiAiKTtlLnB1 c2goJyAgPGJ1dHRvbiBkYXRhLXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRhLXBsYWNlbWVuPQp0PTNE InRvcCIgdGl0bGU9M0QiQ29weSB0byBjbGlwYm9hcmQiIGNsYXNzPTNEImJ0biBidG4tZGVmYXVs dCBidG4tY29weS1saW49CmstdG8tY2xpcGJvYXJkIHByaW1hcnktYnV0dG9uIiB0eXBlPTNEImJ1 dHRvbiI+PHNwYW4gY2xhc3M9M0QiZmEgZmEtY2xpcGJvYT0KcmQiPjwvc3Bhbj4gVG8gQ2xpcGJv YXJkPC9zcGFuPjwvYnV0dG9uPiAnKTtlLnB1c2goIiAgPC9wPiIpO2UucHVzaCgnPGRpdiBjPQps YXNzPTNEImRhdGFzZXRfdGFibGUiPicpO2UucHVzaCgnICAgPHRhYmxlIGNsYXNzPTNEImdyaWQg dGFibGUgdGFibGUtc3RyaXA9CmVkIHRhYmxlLWNvbmRlbnNlZCI+Jyk7ZS5wdXNoKCIgICAgICAg PHRyPiIpO2UucHVzaCgnICAgICAgICAgICA8dGggc2NvcGU9Cj0zRCJyb3ciIGlkPTNEImlkX3Jv dyIgZGF0YS1pZD0zRCI8JT0zRCBfLmVzY2FwZShpdGVtLmdldCgibGRkYV9pZCIpKSAlPiI+Tj0K YW1lPC90aD4nKTtlLnB1c2goJyAgICAgICAgICAgPHRkPjwlPTNEIF8uZXNjYXBlKGl0ZW0uZ2V0 KCJuYW1lIikpICU+PC90ZD4nPQopO2UucHVzaCgiICAgICAgIDwvdHI+Iik7ZS5wdXNoKCcgICA8 JSBpZiAoaXRlbS5nZXQoImZpbGVfZXh0IikpIHsgJT4nKTtlLnA9CnVzaCgiICAgICAgIDx0cj4i KTtlLnB1c2goJyAgICAgICAgICAgPHRoIHNjb3BlPTNEInJvdyI+RGF0YSB0eXBlPC90aD4nKTtl Lj0KcHVzaCgnICAgICAgICAgICA8dGQ+PCU9M0QgXy5lc2NhcGUoaXRlbS5nZXQoImZpbGVfZXh0 IikpICU+PC90ZD4nKTtlLnB1c2goPQoiICAgICAgIDwvdHI+Iik7ZS5wdXNoKCIgICA8JSB9ICU+ Iik7ZS5wdXNoKCIgICAgPC90YWJsZT4iKTtlLnB1c2goIjwvZGl2PiI9Cik7ZS5wdXNoKCI8L2Rp dj4iKTtyZXR1cm4gXy50ZW1wbGF0ZShlLmpvaW4oIiIpKX0sdGVtcGxhdGVMaWJyYXJ5UGVybWlz c2lvbj0KczpmdW5jdGlvbigpe3ZhciBlPTNEW107ZS5wdXNoKCc8ZGl2IGNsYXNzPTNEImxpYnJh cnlfc3R5bGVfY29udGFpbmVyIj4nKTtlPQoucHVzaCgnICA8ZGl2IGlkPTNEImxpYnJhcnlfdG9v bGJhciI+Jyk7ZS5wdXNoKCcgICA8YSBocmVmPTNEIiMiPjxidXR0b24gZGE9CnRhLXRvZ2dsZT0z RCJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0zRCJ0b3AiIHRpdGxlPTNEIkdvIGJhY2sgdG8gdGhl IGxpc3Qgbz0KZiBMaWJyYXJpZXMiIGNsYXNzPTNEImJ0biBidG4tZGVmYXVsdCBwcmltYXJ5LWJ1 dHRvbiIgdHlwZT0zRCJidXR0b24iPjxzcGFuPQogY2xhc3M9M0QiZmEgZmEtbGlzdCI+PC9zcGFu PiBMaWJyYXJpZXM8L3NwYW4+PC9idXR0b24+PC9hPicpO2UucHVzaCgiICA8L2Q9Cml2PiIpO2Uu cHVzaCgnPGgxPkxpYnJhcnk6IDwlPTNEIF8uZXNjYXBlKGxpYnJhcnkuZ2V0KCJuYW1lIikpICU+ PC9oMT4nKTtlLj0KcHVzaCgnPGRpdiBjbGFzcz0zRCJhbGVydCBhbGVydC13YXJuaW5nIj4nKTtl LnB1c2goIjwlIGlmIChpc19hZG1pbikgeyAlPiIpPQo7ZS5wdXNoKCJZb3UgYXJlIGxvZ2dlZCBp biBhcyBhbiA8c3Ryb25nPmFkbWluaXN0cmF0b3I8L3N0cm9uZz4gdGhlcmVmb3JlIHk9Cm91IGNh biBtYW5hZ2UgYW55IGxpYnJhcnkgb24gdGhpcyBHYWxheHkgaW5zdGFuY2UuIFBsZWFzZSBtYWtl IHN1cmUgeW91IHVuZD0KZXJzdGFuZCB0aGUgY29uc2VxdWVuY2VzLiIpO2UucHVzaCgiPCUgfSBl bHNlIHsgJT4iKTtlLnB1c2goIllvdSBjYW4gYXNzaWduPQogYW55IG51bWJlciBvZiByb2xlcyB0 byBhbnkgb2YgdGhlIGZvbGxvd2luZyBwZXJtaXNzaW9uIHR5cGVzLiBIb3dldmVyIHBsZWE9CnNl IHJlYWQgY2FyZWZ1bGx5IHRoZSBpbXBsaWNhdGlvbnMgb2Ygc3VjaCBhY3Rpb25zLiIpO2UucHVz aCgiPCUgfSU+Iik7ZS5wdT0Kc2goIjwvZGl2PiIpO2UucHVzaCgnPGRpdiBjbGFzcz0zRCJkYXRh c2V0X3RhYmxlIj4nKTtlLnB1c2goIjxoMj5MaWJyYXJ5IHBlPQpybWlzc2lvbnM8L2gyPiIpO2Uu cHVzaCgiPGg0PlJvbGVzIHRoYXQgY2FuIGFjY2VzcyB0aGUgbGlicmFyeTwvaDQ+Iik7ZS5wdXM9 CmgoJzxkaXYgaWQ9M0QiYWNjZXNzX3Blcm0iIGNsYXNzPTNEImFjY2Vzc19wZXJtIHJvbGVzLXNl bGVjdGlvbiI+PC9kaXY+Jyk7ZT0KLnB1c2goJzxkaXYgY2xhc3M9M0QiYWxlcnQgYWxlcnQtaW5m byByb2xlcy1zZWxlY3Rpb24iPlVzZXIgd2l0aCA8c3Ryb25nPmFuPQp5PC9zdHJvbmc+IG9mIHRo ZXNlIHJvbGVzIGNhbiBhY2Nlc3MgdGhpcyBsaWJyYXJ5LiBJZiB0aGVyZSBhcmUgbm8gYWNjZXNz IHI9Cm9sZXMgc2V0IG9uIHRoZSBsaWJyYXJ5IGl0IGlzIGNvbnNpZGVyZWQgPHN0cm9uZz51bnJl c3RyaWN0ZWQ8L3N0cm9uZz4uPC9kaT0Kdj4nKTtlLnB1c2goIjxoND5Sb2xlcyB0aGF0IGNhbiBt YW5hZ2UgcGVybWlzc2lvbnMgb24gdGhpcyBsaWJyYXJ5PC9oND4iKTtlPQoucHVzaCgnPGRpdiBp ZD0zRCJtYW5hZ2VfcGVybSIgY2xhc3M9M0QibWFuYWdlX3Blcm0gcm9sZXMtc2VsZWN0aW9uIj48 L2Rpdj49CicpO2UucHVzaCgnPGRpdiBjbGFzcz0zRCJhbGVydCBhbGVydC1pbmZvIHJvbGVzLXNl bGVjdGlvbiI+VXNlciB3aXRoIDxzdHJvbj0KZz5hbnk8L3N0cm9uZz4gb2YgdGhlc2Ugcm9sZXMg Y2FuIG1hbmFnZSBwZXJtaXNzaW9ucyBvbiB0aGlzIGxpYnJhcnkgKGluY2x1PQpkZXMgZ2l2aW5n IGFjY2VzcykuPC9kaXY+Jyk7ZS5wdXNoKCI8aDQ+Um9sZXMgdGhhdCBjYW4gYWRkIGl0ZW1zIHRv IHRoaXMgbGk9CmJyYXJ5PC9oND4iKTtlLnB1c2goJzxkaXYgaWQ9M0QiYWRkX3Blcm0iIGNsYXNz PTNEImFkZF9wZXJtIHJvbGVzLXNlbGVjdGlvbj0KIj48L2Rpdj4nKTtlLnB1c2goJzxkaXYgY2xh c3M9M0QiYWxlcnQgYWxlcnQtaW5mbyByb2xlcy1zZWxlY3Rpb24iPlVzZXIgd2l0PQpoIDxzdHJv bmc+YW55PC9zdHJvbmc+IG9mIHRoZXNlIHJvbGVzIGNhbiBhZGQgaXRlbXMgdG8gdGhpcyBsaWJy YXJ5IChmb2xkZXI9CnMgYW5kIGRhdGFzZXRzKS48L2Rpdj4nKTtlLnB1c2goIjxoND5Sb2xlcyB0 aGF0IGNhbiBtb2RpZnkgdGhpcyBsaWJyYXJ5PC9oND0KPiIpO2UucHVzaCgnPGRpdiBpZD0zRCJt b2RpZnlfcGVybSIgY2xhc3M9M0QibW9kaWZ5X3Blcm0gcm9sZXMtc2VsZWN0aW9uIj48PQovZGl2 PicpO2UucHVzaCgnPGRpdiBjbGFzcz0zRCJhbGVydCBhbGVydC1pbmZvIHJvbGVzLXNlbGVjdGlv biI+VXNlciB3aXRoIDw9CnN0cm9uZz5hbnk8L3N0cm9uZz4gb2YgdGhlc2Ugcm9sZXMgY2FuIG1v ZGlmeSB0aGlzIGxpYnJhcnkgKG5hbWUsIHN5bm9wc2lzLD0KIGV0Yy4pLjwvZGl2PicpO2UucHVz aCgnPGJ1dHRvbiBkYXRhLXRvZ2dsZT0zRCJ0b29sdGlwIiBkYXRhLXBsYWNlbWVudD0zRCJ0PQpv cCIgdGl0bGU9M0QiU2F2ZSBtb2RpZmljYXRpb25zIG1hZGUgb24gdGhpcyBwYWdlIiBjbGFzcz0z RCJidG4gYnRuLWRlZmF1bHQ9CiB0b29sYnRuX3NhdmVfcGVybWlzc2lvbnMgcHJpbWFyeS1idXR0 b24iIHR5cGU9M0QiYnV0dG9uIj48c3BhbiBjbGFzcz0zRCJmYT0KIGZhLWZsb3BweS1vIj48L3Nw YW4+IFNhdmU8L3NwYW4+PC9idXR0b24+Jyk7ZS5wdXNoKCI8L2Rpdj4iKTtlLnB1c2goIjwvZGl2 PQo+Iik7cmV0dXJuIF8udGVtcGxhdGUoZS5qb2luKCIiKSl9fSk7cmV0dXJue0xpYnJhcnlWaWV3 OmJ9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKCmh0dHBzOi8vYml0YnVja2V0Lm9y Zy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9lMmFkMzk3YTJlYzcvCkNoYW5nZXNldDog ICBlMmFkMzk3YTJlYzcKQnJhbmNoOiAgICAgIHJlbGVhc2VfMTUuMDMKVXNlcjogICAgICAgIGNh cmxmZWJlcmhhcmQKRGF0ZTogICAgICAgIDIwMTUtMDMtMjQgMjI6MDM6NTkrMDA6MDAKU3VtbWFy eTogICAgIFVJLCBIaXN0b3J5OiBmaXggbW9kZWwgc2V0QXNDdXJyZW50IHRvIHVzZSBnYWxheHlf Y29uZmlnLnJvb3QgPQpwcm94eSBwcmVmaXgKQWZmZWN0ZWQgIzogIDMgZmlsZXMKCmRpZmYgLXIg MWNjZjQwYmRhZmExODRiM2JlMzFhYTdiMWVjZGZjZTNiYzcwNWVmYiAtciBlMmFkMzk3YTJlYzdm NzQ4YmYxYjk0MT0KOGMyYjI5YWEzNzhlNDE2NDcgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9o aXN0b3J5L2hpc3RvcnktbW9kZWwuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9o aXN0b3J5L2hpc3RvcnktbW9kZWwuanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9o aXN0b3J5L2hpc3RvcnktbW9kZWwuanMKQEAgLTI1Nyw3ICsyNTcsNyBAQAo9MjAKICAgICBzZXRB c0N1cnJlbnQgOiBmdW5jdGlvbigpewogICAgICAgICB2YXIgaGlzdG9yeSA9M0QgdGhpcywKLSAg ICAgICAgICAgIHhociA9M0QgalF1ZXJ5LmdldEpTT04oICcvaGlzdG9yeS9zZXRfYXNfY3VycmVu dD9pZD0zRCcgKyB0aGlzPQouaWQgKTsKKyAgICAgICAgICAgIHhociA9M0QgalF1ZXJ5LmdldEpT T04oIGdhbGF4eV9jb25maWcucm9vdCArICdoaXN0b3J5L3NldF9hc19jPQp1cnJlbnQ/aWQ9M0Qn ICsgdGhpcy5pZCApOwo9MjAKICAgICAgICAgeGhyLmRvbmUoIGZ1bmN0aW9uKCl7CiAgICAgICAg ICAgICBoaXN0b3J5LnRyaWdnZXIoICdzZXQtYXMtY3VycmVudCcsIGhpc3RvcnkgKTsKQEAgLTM2 MSw3ICszNjEsNyBAQAogdmFyIEhpc3RvcnlDb2xsZWN0aW9uID0zRCBCYWNrYm9uZS5Db2xsZWN0 aW9uLmV4dGVuZCggQkFTRV9NVkMuTG9nZ2FibGVNaXg9CmluICkuZXh0ZW5kKAogLyoqIEBsZW5k cyBIaXN0b3J5Q29sbGVjdGlvbi5wcm90b3R5cGUgKi97CiAgICAgbW9kZWwgICA6IEhpc3Rvcnks Ci0gICA9MjAKKwogICAgIC8qKiBsb2dnZXIgdXNlZCB0byByZWNvcmQgdGhpcy5sb2cgbWVzc2Fn ZXMsIGNvbW1vbmx5IHNldCB0byBjb25zb2xlICovCiAgICAgLy9sb2dnZXIgICAgICAgICAgICAg IDogY29uc29sZSwKPTIwCgpkaWZmIC1yIDFjY2Y0MGJkYWZhMTg0YjNiZTMxYWE3YjFlY2RmY2Uz YmM3MDVlZmIgLXIgZTJhZDM5N2EyZWM3Zjc0OGJmMWI5NDE9CjhjMmIyOWFhMzc4ZTQxNjQ3IHN0 YXRpYy9zY3JpcHRzL212Yy9oaXN0b3J5L2hpc3RvcnktbW9kZWwuanMKLS0tIGEvc3RhdGljL3Nj cmlwdHMvbXZjL2hpc3RvcnkvaGlzdG9yeS1tb2RlbC5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9t dmMvaGlzdG9yeS9oaXN0b3J5LW1vZGVsLmpzCkBAIC0yNTcsNyArMjU3LDcgQEAKPTIwCiAgICAg c2V0QXNDdXJyZW50IDogZnVuY3Rpb24oKXsKICAgICAgICAgdmFyIGhpc3RvcnkgPTNEIHRoaXMs Ci0gICAgICAgICAgICB4aHIgPTNEIGpRdWVyeS5nZXRKU09OKCAnL2hpc3Rvcnkvc2V0X2FzX2N1 cnJlbnQ/aWQ9M0QnICsgdGhpcz0KLmlkICk7CisgICAgICAgICAgICB4aHIgPTNEIGpRdWVyeS5n ZXRKU09OKCBnYWxheHlfY29uZmlnLnJvb3QgKyAnaGlzdG9yeS9zZXRfYXNfYz0KdXJyZW50P2lk PTNEJyArIHRoaXMuaWQgKTsKPTIwCiAgICAgICAgIHhoci5kb25lKCBmdW5jdGlvbigpewogICAg ICAgICAgICAgaGlzdG9yeS50cmlnZ2VyKCAnc2V0LWFzLWN1cnJlbnQnLCBoaXN0b3J5ICk7CkBA IC0zNjEsNyArMzYxLDcgQEAKIHZhciBIaXN0b3J5Q29sbGVjdGlvbiA9M0QgQmFja2JvbmUuQ29s bGVjdGlvbi5leHRlbmQoIEJBU0VfTVZDLkxvZ2dhYmxlTWl4PQppbiApLmV4dGVuZCgKIC8qKiBA bGVuZHMgSGlzdG9yeUNvbGxlY3Rpb24ucHJvdG90eXBlICovewogICAgIG1vZGVsICAgOiBIaXN0 b3J5LAotICAgPTIwCisKICAgICAvKiogbG9nZ2VyIHVzZWQgdG8gcmVjb3JkIHRoaXMubG9nIG1l c3NhZ2VzLCBjb21tb25seSBzZXQgdG8gY29uc29sZSAqLwogICAgIC8vbG9nZ2VyICAgICAgICAg ICAgICA6IGNvbnNvbGUsCj0yMAoKZGlmZiAtciAxY2NmNDBiZGFmYTE4NGIzYmUzMWFhN2IxZWNk ZmNlM2JjNzA1ZWZiIC1yIGUyYWQzOTdhMmVjN2Y3NDhiZjFiOTQxPQo4YzJiMjlhYTM3OGU0MTY0 NyBzdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL2hpc3RvcnkvaGlzdG9yeS1tb2RlbC5qcwotLS0g YS9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL2hpc3RvcnkvaGlzdG9yeS1tb2RlbC5qcworKysg Yi9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL2hpc3RvcnkvaGlzdG9yeS1tb2RlbC5qcwpAQCAt MSwxICsxLDEgQEAKLWRlZmluZShbIm12Yy9oaXN0b3J5L2hpc3RvcnktY29udGVudHMiLCJtdmMv YmFzZS1tdmMiLCJ1dGlscy9sb2NhbGl6YXRpb24iPQpdLGZ1bmN0aW9uKGgsaSxkKXt2YXIgZT0z REJhY2tib25lLk1vZGVsLmV4dGVuZChpLkxvZ2dhYmxlTWl4aW4pLmV4dGVuZChpLm09Cml4aW4o aS5TZWFyY2hhYmxlTW9kZWxNaXhpbix7ZGVmYXVsdHM6e21vZGVsX2NsYXNzOiJIaXN0b3J5Iixp ZDpudWxsLG5hbWU6Ij0KVW5uYW1lZCBIaXN0b3J5IixzdGF0ZToibmV3IixkaXNrU2l6ZTowLGRl bGV0ZWQ6ZmFsc2V9LHVybFJvb3Q6Z2FsYXh5X2NvbmZpPQpnLnJvb3QrImFwaS9oaXN0b3JpZXMi LGluaXRpYWxpemU6ZnVuY3Rpb24oayxsLGope2o9M0RqfHx7fTt0aGlzLmxvZ2dlcj0zRGo9Ci5s b2dnZXJ8fG51bGw7dGhpcy5sb2codGhpcysiLmluaXRpYWxpemU6IixrLGwsaik7dGhpcy5sb2co ImNyZWF0aW5nIGhpc3Rvcj0KeSBjb250ZW50czoiLGwpO3RoaXMuY29udGVudHM9M0RuZXcgaC5I aXN0b3J5Q29udGVudHMobHx8W10se2hpc3RvcnlJZDp0aGlzPQouZ2V0KCJpZCIpfSk7dGhpcy5f c2V0VXBMaXN0ZW5lcnMoKTt0aGlzLnVwZGF0ZVRpbWVvdXRJZD0zRG51bGx9LF9zZXRVcExpc3Q9 CmVuZXJzOmZ1bmN0aW9uKCl7dGhpcy5vbigiZXJyb3IiLGZ1bmN0aW9uKGssbixqLG0sbCl7dGhp cy5lcnJvckhhbmRsZXIoayxuLD0KaixtLGwpfSk7aWYodGhpcy5jb250ZW50cyl7dGhpcy5saXN0 ZW5Ubyh0aGlzLmNvbnRlbnRzLCJlcnJvciIsZnVuY3Rpb24oKXt0PQpoaXMudHJpZ2dlci5hcHBs eSh0aGlzLFsiZXJyb3I6Y29udGVudHMiXS5jb25jYXQoalF1ZXJ5Lm1ha2VBcnJheShhcmd1bWVu dHM9CikpKX0pfXRoaXMub24oImNoYW5nZTppZCIsZnVuY3Rpb24oayxqKXtpZih0aGlzLmNvbnRl bnRzKXt0aGlzLmNvbnRlbnRzLmhpcz0KdG9yeUlkPTNEan19LHRoaXMpfSxlcnJvckhhbmRsZXI6 ZnVuY3Rpb24oayxuLGosbSxsKXt0aGlzLmNsZWFyVXBkYXRlVGltZW91PQp0KCl9LG93bmVkQnlD dXJyVXNlcjpmdW5jdGlvbigpe2lmKCFHYWxheHl8fCFHYWxheHkuY3VyclVzZXIpe3JldHVybiBm YWxzZX09CmlmKEdhbGF4eS5jdXJyVXNlci5pc0Fub255bW91cygpfHxHYWxheHkuY3VyclVzZXIu aWQhPTNEPTNEdGhpcy5nZXQoInVzZXJfaT0KZCIpKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9 LGNvbnRlbnRzQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gXy5yZWR1Y2UoXy52PQphbHVlcyh0aGlz LmdldCgic3RhdGVfZGV0YWlscyIpKSxmdW5jdGlvbihqLGspe3JldHVybiBqK2t9LDApfSxzZWFy Y2hBdHRyaWI9CnV0ZXM6WyJuYW1lIiwiYW5ub3RhdGlvbiIsInRhZ3MiXSxzZWFyY2hBbGlhc2Vz Ont0aXRsZToibmFtZSIsdGFnOiJ0YWdzIn0sYz0KaGVja0ZvclVwZGF0ZXM6ZnVuY3Rpb24oail7 aWYodGhpcy5jb250ZW50cy5ydW5uaW5nKCkubGVuZ3RoKXt0aGlzLnNldFVwZGF0PQplVGltZW91 dCgpfWVsc2V7dGhpcy50cmlnZ2VyKCJyZWFkeSIpO2lmKF8uaXNGdW5jdGlvbihqKSl7ai5jYWxs KHRoaXMpfX1yZXQ9CnVybiB0aGlzfSxzZXRVcGRhdGVUaW1lb3V0OmZ1bmN0aW9uKGope2o9M0Rq fHxlLlVQREFURV9ERUxBWTt2YXIgaz0zRHRoaXM7dD0KaGlzLmNsZWFyVXBkYXRlVGltZW91dCgp O3RoaXMudXBkYXRlVGltZW91dElkPTNEc2V0VGltZW91dChmdW5jdGlvbigpe2sucmVmPQpyZXNo KCl9LGopO3JldHVybiB0aGlzLnVwZGF0ZVRpbWVvdXRJZH0sY2xlYXJVcGRhdGVUaW1lb3V0OmZ1 bmN0aW9uKCl7aWYodGg9CmlzLnVwZGF0ZVRpbWVvdXRJZCl7Y2xlYXJUaW1lb3V0KHRoaXMudXBk YXRlVGltZW91dElkKTt0aGlzLnVwZGF0ZVRpbWVvdXRJZD0KPTNEbnVsbH19LHJlZnJlc2g6ZnVu Y3Rpb24oayxqKXtrPTNEa3x8W107aj0zRGp8fHt9O3ZhciBsPTNEdGhpcztqLmRhdGE9M0RqPQou ZGF0YXx8e307aWYoay5sZW5ndGgpe2ouZGF0YS5kZXRhaWxzPTNEay5qb2luKCIsIil9dmFyIG09 M0R0aGlzLmNvbnRlbnRzLmY9CmV0Y2goaik7bS5kb25lKGZ1bmN0aW9uKG4pe2wuY2hlY2tGb3JV cGRhdGVzKGZ1bmN0aW9uKCl7dGhpcy5mZXRjaCgpfSl9KTtyZT0KdHVybiBtfSxfZGVsZXRlOmZ1 bmN0aW9uKGope2lmKHRoaXMuZ2V0KCJkZWxldGVkIikpe3JldHVybiBqUXVlcnkud2hlbigpfXJl PQp0dXJuIHRoaXMuc2F2ZSh7ZGVsZXRlZDp0cnVlfSxqKX0scHVyZ2U6ZnVuY3Rpb24oail7aWYo dGhpcy5nZXQoInB1cmdlZCIpKXs9CnJldHVybiBqUXVlcnkud2hlbigpfXJldHVybiB0aGlzLnNh dmUoe2RlbGV0ZWQ6dHJ1ZSxwdXJnZWQ6dHJ1ZX0sail9LHVuZGVsZT0KdGU6ZnVuY3Rpb24oail7 aWYoIXRoaXMuZ2V0KCJkZWxldGVkIikpe3JldHVybiBqUXVlcnkud2hlbigpfXJldHVybiB0aGlz LnNhPQp2ZSh7ZGVsZXRlZDpmYWxzZX0sail9LGNvcHk6ZnVuY3Rpb24obSxrKXttPTNEKG0hPTNE PTNEdW5kZWZpbmVkKT8obSk6KHRydWU9Cik7aWYoIXRoaXMuaWQpe3Rocm93IG5ldyBFcnJvcigi WW91IG11c3Qgc2V0IHRoZSBoaXN0b3J5IElEIGJlZm9yZSBjb3B5aW5nID0KaXQuIil9dmFyIGo9 M0R7aGlzdG9yeV9pZDp0aGlzLmlkfTtpZihtKXtqLmN1cnJlbnQ9M0R0cnVlfWlmKGspe2oubmFt ZT0zRGt9PQp2YXIgbD0zRHRoaXMsbj0zRGpRdWVyeS5wb3N0KHRoaXMudXJsUm9vdCxqKTtpZiht KXtyZXR1cm4gbi50aGVuKGZ1bmN0aW9uKG89Cil7dmFyIHA9M0RuZXcgZShvKTtyZXR1cm4gcC5z ZXRBc0N1cnJlbnQoKS5kb25lKGZ1bmN0aW9uKCl7bC50cmlnZ2VyKCJjb3BpZT0KZCIsbCxvKX0p fSl9cmV0dXJuIG4uZG9uZShmdW5jdGlvbihvKXtsLnRyaWdnZXIoImNvcGllZCIsbCxvKX0pfSxz ZXRBc0N1cnJlPQpudDpmdW5jdGlvbigpe3ZhciBqPTNEdGhpcyxrPTNEalF1ZXJ5LmdldEpTT04o Ii9oaXN0b3J5L3NldF9hc19jdXJyZW50P2lkPQo9M0QiK3RoaXMuaWQpO2suZG9uZShmdW5jdGlv bigpe2oudHJpZ2dlcigic2V0LWFzLWN1cnJlbnQiLGopfSk7cmV0dXJuIGt9LHQ9Cm9TdHJpbmc6 ZnVuY3Rpb24oKXtyZXR1cm4iSGlzdG9yeSgiK3RoaXMuZ2V0KCJpZCIpKyIsIit0aGlzLmdldCgi bmFtZSIpKyIpIj0KfX0pKTtlLlVQREFURV9ERUxBWT0zRDQwMDA7ZS5nZXRIaXN0b3J5RGF0YT0z RGZ1bmN0aW9uIGMoaix2KXt2PTNEdnx8e307dmFyPQogcj0zRHYuZGV0YWlsSWRzRm58fFtdO3Zh ciBtPTNEdi5oZGNhRGV0YWlsSWRzfHxbXTt2YXIgcz0zRGpRdWVyeS5EZWZlcnJlZCg9CikscD0z RG51bGw7ZnVuY3Rpb24gayh3KXtpZihqPTNEPTNEPTNEImN1cnJlbnQiKXtyZXR1cm4galF1ZXJ5 LmdldEpTT04oZ2FsYT0KeHlfY29uZmlnLnJvb3QrImhpc3RvcnkvY3VycmVudF9oaXN0b3J5X2pz b24iKX1yZXR1cm4galF1ZXJ5LmFqYXgoZ2FsYXh5X2NvPQpuZmlnLnJvb3QrImFwaS9oaXN0b3Jp ZXMvIitqKX1mdW5jdGlvbiBvKHcpe3JldHVybiB3JiZ3LmVtcHR5fWZ1bmN0aW9uIHEoeCk9Cntp ZihvKHgpKXtyZXR1cm5bXX1pZihfLmlzRnVuY3Rpb24ocikpe3I9M0RyKHgpfWlmKF8uaXNGdW5j dGlvbihtKSl7bT0zRG0oeD0KKX12YXIgdz0zRHt9O2lmKHIubGVuZ3RoKXt3LmRhdGFzZXRfZGV0 YWlscz0zRHIuam9pbigiLCIpfWlmKG0ubGVuZ3RoKXt3LmRhPQp0YXNldF9jb2xsZWN0aW9uX2Rl dGFpbHM9M0RtLmpvaW4oIiwiKX1yZXR1cm4galF1ZXJ5LmFqYXgoZ2FsYXh5X2NvbmZpZy5yb289 CnQrImFwaS9oaXN0b3JpZXMvIit4LmlkKyIvY29udGVudHMiLHtkYXRhOnd9KX12YXIgdD0zRHYu aGlzdG9yeUZufHxrLHU9M0R2Lj0KY29udGVudHNGbnx8cTt2YXIgbj0zRHQoaik7bi5kb25lKGZ1 bmN0aW9uKHcpe3A9M0R3O3Mubm90aWZ5KHtzdGF0dXM6Imhpc3RvPQpyeSBkYXRhIHJldHJpZXZl ZCIsaGlzdG9yeUpTT046cH0pfSk7bi5mYWlsKGZ1bmN0aW9uKHksdyx4KXtzLnJlamVjdCh5LCJs b2E9CmRpbmcgdGhlIGhpc3RvcnkiKX0pO3ZhciBsPTNEbi50aGVuKHUpO2wudGhlbihmdW5jdGlv bih3KXtzLm5vdGlmeSh7c3RhdHVzOj0KImNvbnRlbnRzIGRhdGEgcmV0cmlldmVkIixoaXN0b3J5 SlNPTjpwLGNvbnRlbnRzSlNPTjp3fSk7cy5yZXNvbHZlKHAsdyl9KTtsPQouZmFpbChmdW5jdGlv bih5LHcseCl7cy5yZWplY3QoeSwibG9hZGluZyB0aGUgY29udGVudHMiLHtoaXN0b3J5OnB9KX0p O3JldHU9CnJuIHN9O3ZhciBmPTNEQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoaS5Mb2dnYWJs ZU1peGluKS5leHRlbmQoe21vZGVsOmUsdT0KcmxSb290Oih3aW5kb3cuZ2FsYXh5X2NvbmZpZz9n YWxheHlfY29uZmlnLnJvb3Q6Ii8iKSsiYXBpL2hpc3RvcmllcyIsaW5pdGlhPQpsaXplOmZ1bmN0 aW9uKGssail7aj0zRGp8fHt9O3RoaXMubG9nKCJIaXN0b3J5Q29sbGVjdGlvbi5pbml0aWFsaXpl Iixhcmd1bWU9Cm50cyk7dGhpcy5pbmNsdWRlRGVsZXRlZD0zRGouaW5jbHVkZURlbGV0ZWR8fGZh bHNlO3RoaXMuc2V0VXBMaXN0ZW5lcnMoKX0scz0KZXRVcExpc3RlbmVyczpmdW5jdGlvbiBhKCl7 dmFyIGo9M0R0aGlzO3RoaXMub24oImNoYW5nZTpkZWxldGVkIixmdW5jdGlvbihrPQope3RoaXMu ZGVidWcoImNoYW5nZTpkZWxldGVkIixqLmluY2x1ZGVEZWxldGVkLGsuZ2V0KCJkZWxldGVkIikp O2lmKCFqLmluY2w9CnVkZURlbGV0ZWQmJmsuZ2V0KCJkZWxldGVkIikpe2oucmVtb3ZlKGspfX0p O3RoaXMub24oImNvcGllZCIsZnVuY3Rpb24oayxsKT0Ke3RoaXMudW5zaGlmdChuZXcgZShsLFtd KSl9KX0sY3JlYXRlOmZ1bmN0aW9uIGcobSxrLGosbCl7dmFyIG89M0R0aGlzLG49M0RqPQpRdWVy eS5nZXRKU09OKGdhbGF4eV9jb25maWcucm9vdCsiaGlzdG9yeS9jcmVhdGVfbmV3X2N1cnJlbnQi KTtyZXR1cm4gbi5kb249CmUoZnVuY3Rpb24ocCl7dmFyIHE9M0RuZXcgZShwLFtdLGp8fHt9KTtv LnVuc2hpZnQocSk7by50cmlnZ2VyKCJuZXctY3VycmVudD0KIil9KX0sdG9TdHJpbmc6ZnVuY3Rp b24gYigpe3JldHVybiJIaXN0b3J5Q29sbGVjdGlvbigiK3RoaXMubGVuZ3RoKyIpIn19KTtyPQpl dHVybntIaXN0b3J5OmUsSGlzdG9yeUNvbGxlY3Rpb246Zn19KTsKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCitkZWZpbmUoWyJtdmMvaGlzdG9yeS9oaXN0b3J5LWNvbnRlbnRzIiwibXZjL2Jh c2UtbXZjIiwidXRpbHMvbG9jYWxpemF0aW9uIj0KXSxmdW5jdGlvbihoLGksZCl7dmFyIGU9M0RC YWNrYm9uZS5Nb2RlbC5leHRlbmQoaS5Mb2dnYWJsZU1peGluKS5leHRlbmQoaS5tPQppeGluKGku U2VhcmNoYWJsZU1vZGVsTWl4aW4se2RlZmF1bHRzOnttb2RlbF9jbGFzczoiSGlzdG9yeSIsaWQ6 bnVsbCxuYW1lOiI9ClVubmFtZWQgSGlzdG9yeSIsc3RhdGU6Im5ldyIsZGlza1NpemU6MCxkZWxl dGVkOmZhbHNlfSx1cmxSb290OmdhbGF4eV9jb25maT0KZy5yb290KyJhcGkvaGlzdG9yaWVzIixp bml0aWFsaXplOmZ1bmN0aW9uKGssbCxqKXtqPTNEanx8e307dGhpcy5sb2dnZXI9M0RqPQoubG9n Z2VyfHxudWxsO3RoaXMubG9nKHRoaXMrIi5pbml0aWFsaXplOiIsayxsLGopO3RoaXMubG9nKCJj cmVhdGluZyBoaXN0b3I9CnkgY29udGVudHM6IixsKTt0aGlzLmNvbnRlbnRzPTNEbmV3IGguSGlz dG9yeUNvbnRlbnRzKGx8fFtdLHtoaXN0b3J5SWQ6dGhpcz0KLmdldCgiaWQiKX0pO3RoaXMuX3Nl dFVwTGlzdGVuZXJzKCk7dGhpcy51cGRhdGVUaW1lb3V0SWQ9M0RudWxsfSxfc2V0VXBMaXN0PQpl bmVyczpmdW5jdGlvbigpe3RoaXMub24oImVycm9yIixmdW5jdGlvbihrLG4saixtLGwpe3RoaXMu ZXJyb3JIYW5kbGVyKGssbiw9CmosbSxsKX0pO2lmKHRoaXMuY29udGVudHMpe3RoaXMubGlzdGVu VG8odGhpcy5jb250ZW50cywiZXJyb3IiLGZ1bmN0aW9uKCl7dD0KaGlzLnRyaWdnZXIuYXBwbHko dGhpcyxbImVycm9yOmNvbnRlbnRzIl0uY29uY2F0KGpRdWVyeS5tYWtlQXJyYXkoYXJndW1lbnRz PQopKSl9KX10aGlzLm9uKCJjaGFuZ2U6aWQiLGZ1bmN0aW9uKGssail7aWYodGhpcy5jb250ZW50 cyl7dGhpcy5jb250ZW50cy5oaXM9CnRvcnlJZD0zRGp9fSx0aGlzKX0sZXJyb3JIYW5kbGVyOmZ1 bmN0aW9uKGssbixqLG0sbCl7dGhpcy5jbGVhclVwZGF0ZVRpbWVvdT0KdCgpfSxvd25lZEJ5Q3Vy clVzZXI6ZnVuY3Rpb24oKXtpZighR2FsYXh5fHwhR2FsYXh5LmN1cnJVc2VyKXtyZXR1cm4gZmFs c2V9PQppZihHYWxheHkuY3VyclVzZXIuaXNBbm9ueW1vdXMoKXx8R2FsYXh5LmN1cnJVc2VyLmlk IT0zRD0zRHRoaXMuZ2V0KCJ1c2VyX2k9CmQiKSl7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfSxj b250ZW50c0NvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIF8ucmVkdWNlKF8udj0KYWx1ZXModGhpcy5n ZXQoInN0YXRlX2RldGFpbHMiKSksZnVuY3Rpb24oaixrKXtyZXR1cm4gaitrfSwwKX0sc2VhcmNo QXR0cmliPQp1dGVzOlsibmFtZSIsImFubm90YXRpb24iLCJ0YWdzIl0sc2VhcmNoQWxpYXNlczp7 dGl0bGU6Im5hbWUiLHRhZzoidGFncyJ9LGM9CmhlY2tGb3JVcGRhdGVzOmZ1bmN0aW9uKGope2lm KHRoaXMuY29udGVudHMucnVubmluZygpLmxlbmd0aCl7dGhpcy5zZXRVcGRhdD0KZVRpbWVvdXQo KX1lbHNle3RoaXMudHJpZ2dlcigicmVhZHkiKTtpZihfLmlzRnVuY3Rpb24oaikpe2ouY2FsbCh0 aGlzKX19cmV0PQp1cm4gdGhpc30sc2V0VXBkYXRlVGltZW91dDpmdW5jdGlvbihqKXtqPTNEanx8 ZS5VUERBVEVfREVMQVk7dmFyIGs9M0R0aGlzO3Q9Cmhpcy5jbGVhclVwZGF0ZVRpbWVvdXQoKTt0 aGlzLnVwZGF0ZVRpbWVvdXRJZD0zRHNldFRpbWVvdXQoZnVuY3Rpb24oKXtrLnJlZj0KcmVzaCgp fSxqKTtyZXR1cm4gdGhpcy51cGRhdGVUaW1lb3V0SWR9LGNsZWFyVXBkYXRlVGltZW91dDpmdW5j dGlvbigpe2lmKHRoPQppcy51cGRhdGVUaW1lb3V0SWQpe2NsZWFyVGltZW91dCh0aGlzLnVwZGF0 ZVRpbWVvdXRJZCk7dGhpcy51cGRhdGVUaW1lb3V0SWQ9Cj0zRG51bGx9fSxyZWZyZXNoOmZ1bmN0 aW9uKGssail7az0zRGt8fFtdO2o9M0RqfHx7fTt2YXIgbD0zRHRoaXM7ai5kYXRhPTNEaj0KLmRh dGF8fHt9O2lmKGsubGVuZ3RoKXtqLmRhdGEuZGV0YWlscz0zRGsuam9pbigiLCIpfXZhciBtPTNE dGhpcy5jb250ZW50cy5mPQpldGNoKGopO20uZG9uZShmdW5jdGlvbihuKXtsLmNoZWNrRm9yVXBk YXRlcyhmdW5jdGlvbigpe3RoaXMuZmV0Y2goKX0pfSk7cmU9CnR1cm4gbX0sX2RlbGV0ZTpmdW5j dGlvbihqKXtpZih0aGlzLmdldCgiZGVsZXRlZCIpKXtyZXR1cm4galF1ZXJ5LndoZW4oKX1yZT0K dHVybiB0aGlzLnNhdmUoe2RlbGV0ZWQ6dHJ1ZX0sail9LHB1cmdlOmZ1bmN0aW9uKGope2lmKHRo aXMuZ2V0KCJwdXJnZWQiKSl7PQpyZXR1cm4galF1ZXJ5LndoZW4oKX1yZXR1cm4gdGhpcy5zYXZl KHtkZWxldGVkOnRydWUscHVyZ2VkOnRydWV9LGopfSx1bmRlbGU9CnRlOmZ1bmN0aW9uKGope2lm KCF0aGlzLmdldCgiZGVsZXRlZCIpKXtyZXR1cm4galF1ZXJ5LndoZW4oKX1yZXR1cm4gdGhpcy5z YT0KdmUoe2RlbGV0ZWQ6ZmFsc2V9LGopfSxjb3B5OmZ1bmN0aW9uKG0sayl7bT0zRChtIT0zRD0z RHVuZGVmaW5lZCk/KG0pOih0cnVlPQopO2lmKCF0aGlzLmlkKXt0aHJvdyBuZXcgRXJyb3IoIllv dSBtdXN0IHNldCB0aGUgaGlzdG9yeSBJRCBiZWZvcmUgY29weWluZyA9Cml0LiIpfXZhciBqPTNE e2hpc3RvcnlfaWQ6dGhpcy5pZH07aWYobSl7ai5jdXJyZW50PTNEdHJ1ZX1pZihrKXtqLm5hbWU9 M0RrfT0KdmFyIGw9M0R0aGlzLG49M0RqUXVlcnkucG9zdCh0aGlzLnVybFJvb3Qsaik7aWYobSl7 cmV0dXJuIG4udGhlbihmdW5jdGlvbihvPQope3ZhciBwPTNEbmV3IGUobyk7cmV0dXJuIHAuc2V0 QXNDdXJyZW50KCkuZG9uZShmdW5jdGlvbigpe2wudHJpZ2dlcigiY29waWU9CmQiLGwsbyl9KX0p fXJldHVybiBuLmRvbmUoZnVuY3Rpb24obyl7bC50cmlnZ2VyKCJjb3BpZWQiLGwsbyl9KX0sc2V0 QXNDdXJyZT0KbnQ6ZnVuY3Rpb24oKXt2YXIgaj0zRHRoaXMsaz0zRGpRdWVyeS5nZXRKU09OKGdh bGF4eV9jb25maWcucm9vdCsiaGlzdG9yeS9zPQpldF9hc19jdXJyZW50P2lkPTNEIit0aGlzLmlk KTtrLmRvbmUoZnVuY3Rpb24oKXtqLnRyaWdnZXIoInNldC1hcy1jdXJyZW50Iiw9CmopfSk7cmV0 dXJuIGt9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIkhpc3RvcnkoIit0aGlzLmdldCgiaWQi KSsiLCIrdGhpcz0KLmdldCgibmFtZSIpKyIpIn19KSk7ZS5VUERBVEVfREVMQVk9M0Q0MDAwO2Uu Z2V0SGlzdG9yeURhdGE9M0RmdW5jdGlvbiBjKGosPQp2KXt2PTNEdnx8e307dmFyIHI9M0R2LmRl dGFpbElkc0ZufHxbXTt2YXIgbT0zRHYuaGRjYURldGFpbElkc3x8W107dmFyIHM9M0Q9CmpRdWVy eS5EZWZlcnJlZCgpLHA9M0RudWxsO2Z1bmN0aW9uIGsodyl7aWYoaj0zRD0zRD0zRCJjdXJyZW50 Iil7cmV0dXJuIGpRdT0KZXJ5LmdldEpTT04oZ2FsYXh5X2NvbmZpZy5yb290KyJoaXN0b3J5L2N1 cnJlbnRfaGlzdG9yeV9qc29uIil9cmV0dXJuIGpRdWVyPQp5LmFqYXgoZ2FsYXh5X2NvbmZpZy5y b290KyJhcGkvaGlzdG9yaWVzLyIrail9ZnVuY3Rpb24gbyh3KXtyZXR1cm4gdyYmdy5lbXA9CnR5 fWZ1bmN0aW9uIHEoeCl7aWYobyh4KSl7cmV0dXJuW119aWYoXy5pc0Z1bmN0aW9uKHIpKXtyPTNE cih4KX1pZihfLmlzRnVuYz0KdGlvbihtKSl7bT0zRG0oeCl9dmFyIHc9M0R7fTtpZihyLmxlbmd0 aCl7dy5kYXRhc2V0X2RldGFpbHM9M0RyLmpvaW4oIiwiKX1pPQpmKG0ubGVuZ3RoKXt3LmRhdGFz ZXRfY29sbGVjdGlvbl9kZXRhaWxzPTNEbS5qb2luKCIsIil9cmV0dXJuIGpRdWVyeS5hamF4KGc9 CmFsYXh5X2NvbmZpZy5yb290KyJhcGkvaGlzdG9yaWVzLyIreC5pZCsiL2NvbnRlbnRzIix7ZGF0 YTp3fSl9dmFyIHQ9M0R2Lmhpcz0KdG9yeUZufHxrLHU9M0R2LmNvbnRlbnRzRm58fHE7dmFyIG49 M0R0KGopO24uZG9uZShmdW5jdGlvbih3KXtwPTNEdztzLm5vdGlmPQp5KHtzdGF0dXM6Imhpc3Rv cnkgZGF0YSByZXRyaWV2ZWQiLGhpc3RvcnlKU09OOnB9KX0pO24uZmFpbChmdW5jdGlvbih5LHcs eCk9CntzLnJlamVjdCh5LCJsb2FkaW5nIHRoZSBoaXN0b3J5Iil9KTt2YXIgbD0zRG4udGhlbih1 KTtsLnRoZW4oZnVuY3Rpb24odyl7cz0KLm5vdGlmeSh7c3RhdHVzOiJjb250ZW50cyBkYXRhIHJl dHJpZXZlZCIsaGlzdG9yeUpTT046cCxjb250ZW50c0pTT046d30pO3MuPQpyZXNvbHZlKHAsdyl9 KTtsLmZhaWwoZnVuY3Rpb24oeSx3LHgpe3MucmVqZWN0KHksImxvYWRpbmcgdGhlIGNvbnRlbnRz Iix7aGk9CnN0b3J5OnB9KX0pO3JldHVybiBzfTt2YXIgZj0zREJhY2tib25lLkNvbGxlY3Rpb24u ZXh0ZW5kKGkuTG9nZ2FibGVNaXhpbikuZT0KeHRlbmQoe21vZGVsOmUsdXJsUm9vdDood2luZG93 LmdhbGF4eV9jb25maWc/Z2FsYXh5X2NvbmZpZy5yb290OiIvIikrImFwaS9oPQppc3RvcmllcyIs aW5pdGlhbGl6ZTpmdW5jdGlvbihrLGope2o9M0RqfHx7fTt0aGlzLmxvZygiSGlzdG9yeUNvbGxl Y3Rpb24uaW49Cml0aWFsaXplIixhcmd1bWVudHMpO3RoaXMuaW5jbHVkZURlbGV0ZWQ9M0RqLmlu Y2x1ZGVEZWxldGVkfHxmYWxzZTt0aGlzLnNldD0KVXBMaXN0ZW5lcnMoKX0sc2V0VXBMaXN0ZW5l cnM6ZnVuY3Rpb24gYSgpe3ZhciBqPTNEdGhpczt0aGlzLm9uKCJjaGFuZ2U6ZGVsPQpldGVkIixm dW5jdGlvbihrKXt0aGlzLmRlYnVnKCJjaGFuZ2U6ZGVsZXRlZCIsai5pbmNsdWRlRGVsZXRlZCxr LmdldCgiZGVsZXQ9CmVkIikpO2lmKCFqLmluY2x1ZGVEZWxldGVkJiZrLmdldCgiZGVsZXRlZCIp KXtqLnJlbW92ZShrKX19KTt0aGlzLm9uKCJjb3BpZT0KZCIsZnVuY3Rpb24oayxsKXt0aGlzLnVu c2hpZnQobmV3IGUobCxbXSkpfSl9LGNyZWF0ZTpmdW5jdGlvbiBnKG0sayxqLGwpe3ZhPQpyIG89 M0R0aGlzLG49M0RqUXVlcnkuZ2V0SlNPTihnYWxheHlfY29uZmlnLnJvb3QrImhpc3RvcnkvY3Jl YXRlX25ld19jdXJyZW49CnQiKTtyZXR1cm4gbi5kb25lKGZ1bmN0aW9uKHApe3ZhciBxPTNEbmV3 IGUocCxbXSxqfHx7fSk7by51bnNoaWZ0KHEpO28udHJpZz0KZ2VyKCJuZXctY3VycmVudCIpfSl9 LHRvU3RyaW5nOmZ1bmN0aW9uIGIoKXtyZXR1cm4iSGlzdG9yeUNvbGxlY3Rpb24oIit0aGlzPQou bGVuZ3RoKyIpIn19KTtyZXR1cm57SGlzdG9yeTplLEhpc3RvcnlDb2xsZWN0aW9uOmZ9fSk7Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkv Z2FsYXh5LWNlbnRyYWwvY29tbWl0cy8yYTJlYjI4YzA1NzMvCkNoYW5nZXNldDogICAyYTJlYjI4 YzA1NzMKQnJhbmNoOiAgICAgIHJlbGVhc2VfMTUuMDMKVXNlcjogICAgICAgIGNhcmxmZWJlcmhh cmQKRGF0ZTogICAgICAgIDIwMTUtMDMtMjUgMjM6MzI6MTkrMDA6MDAKU3VtbWFyeTogICAgIEhE QSBBUEk6IGRlc2VyaWFsaXppbmcgTm9uZSBpbiBtaXNjX2luZm8vaW5mbyBhcyB0aGUgZW1wdHkg c3RyPQppbmcKQWZmZWN0ZWQgIzogIDIgZmlsZXMKCmRpZmYgLXIgZTJhZDM5N2EyZWM3Zjc0OGJm MWI5NDE4YzJiMjlhYTM3OGU0MTY0NyAtciAyYTJlYjI4YzA1NzM2Y2Q1ZjgwNGQwNT0KMTE3YWY3 M2EyMDgyYmU1OTAgbGliL2dhbGF4eS9tYW5hZ2Vycy9iYXNlLnB5Ci0tLSBhL2xpYi9nYWxheHkv bWFuYWdlcnMvYmFzZS5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2Jhc2UucHkKQEAgLTcw MCw4ICs3MDAsOCBAQAogICAgICAgICAgICAgc2V0YXR0ciggaXRlbSwga2V5LCB2YWwgKQogICAg ICAgICByZXR1cm4gdmFsCj0yMAotICAgIGRlZiBkZXNlcmlhbGl6ZV9iYXNlc3RyaW5nKCBzZWxm LCB0cmFucywgaXRlbSwga2V5LCB2YWwgKToKLSAgICAgICAgdmFsID0zRCBzZWxmLnZhbGlkYXRl LmJhc2VzdHJpbmcoIGtleSwgdmFsICkKKyAgICBkZWYgZGVzZXJpYWxpemVfYmFzZXN0cmluZygg c2VsZiwgdHJhbnMsIGl0ZW0sIGtleSwgdmFsLCBjb252ZXJ0X25vbmVfPQp0b19lbXB0eT0zREZh bHNlICk6CisgICAgICAgIHZhbCA9M0QgJycgaWYgKCBjb252ZXJ0X25vbmVfdG9fZW1wdHkgYW5k IHZhbCBpcyBOb25lICkgZWxzZSBzZWxmLj0KdmFsaWRhdGUuYmFzZXN0cmluZygga2V5LCB2YWwg KQogICAgICAgICByZXR1cm4gc2VsZi5kZWZhdWx0X2Rlc2VyaWFsaXplciggdHJhbnMsIGl0ZW0s IGtleSwgdmFsICkKPTIwCiAgICAgZGVmIGRlc2VyaWFsaXplX2Jvb2woIHNlbGYsIHRyYW5zLCBp dGVtLCBrZXksIHZhbCApOgoKZGlmZiAtciBlMmFkMzk3YTJlYzdmNzQ4YmYxYjk0MThjMmIyOWFh Mzc4ZTQxNjQ3IC1yIDJhMmViMjhjMDU3MzZjZDVmODA0ZDA1PQoxMTdhZjczYTIwODJiZTU5MCBs aWIvZ2FsYXh5L21hbmFnZXJzL2hkYXMucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9oZGFz LnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvaGRhcy5weQpAQCAtMzg5LDcgKzM4OSw3IEBA CiAgICAgICAgICAgICAnaGRhX2xkZGEnICAgICAgOiBsYW1iZGEgKmE6ICdoZGEnLAo9MjAKICAg ICAgICAgICAgICMgcmVtYXBwZWQKLSAgICAgICAgICAgICdpbmZvJyAgICAgICAgICA6IGxhbWJk YSB0LCBpLCBrOiBpLmluZm8uc3RyaXAoKSBpZiBpc2luc3RhbmNlPQooIGkuaW5mbywgYmFzZXN0 cmluZyApIGVsc2UgaS5pbmZvLAorICAgICAgICAgICAgJ2luZm8nICAgICAgICAgIDogbGFtYmRh IHQsIGksIGs6IGkuaW5mby5zdHJpcCgpIGlmIGlzaW5zdGFuY2U9CiggaS5pbmZvLCBiYXNlc3Ry aW5nICkgZWxzZSAnJywKICAgICAgICAgICAgICdtaXNjX2luZm8nICAgICA6IGxhbWJkYSB0LCBp LCBrOiBzZWxmLnNlcmlhbGl6ZXJzWyAnaW5mbycgXSggPQp0LCBpLCBrICksCiAgICAgICAgICAg ICAnbWlzY19ibHVyYicgICAgOiBsYW1iZGEgdCwgaSwgazogaS5ibHVyYiwKICAgICAgICAgICAg ICdnZW5vbWVfYnVpbGQnICA6IGxhbWJkYSB0LCBpLCBrOiBpLmRia2V5LApAQCAtNTg0LDcgKzU4 NCw4IEBACj0yMAogICAgICAgICAgICAgIyByZW1hcHBlZAogICAgICAgICAgICAgJ2dlbm9tZV9i dWlsZCcgIDogbGFtYmRhIHQsIGksIGssIHY6IHNlbGYuZGVzZXJpYWxpemVfZ2Vub21lX2I9CnVp bGQoIHQsIGksICdkYmtleScsIHYgKSwKLSAgICAgICAgICAgICdtaXNjX2luZm8nICAgICA6IGxh bWJkYSB0LCBpLCBrLCB2OiBzZWxmLmRlc2VyaWFsaXplX2Jhc2VzdHJpPQpuZyggdCwgaSwgJ2lu Zm8nLCB2ICksCisgICAgICAgICAgICAnbWlzY19pbmZvJyAgICAgOiBsYW1iZGEgdCwgaSwgaywg djogKAorICAgICAgICAgICAgICAgIHNlbGYuZGVzZXJpYWxpemVfYmFzZXN0cmluZyggdCwgaSwg J2luZm8nLCB2LCBjb252ZXJ0X25vbmU9Cl90b19lbXB0eT0zRFRydWUgKSApLAo9MjAKICAgICAg ICAgICAgICNUT0RPOiBtaXhpbjogZGVsZXRhYmxlCiAgICAgICAgICAgICAnZGVsZXRlZCcgICAg ICAgOiBzZWxmLmRlc2VyaWFsaXplX2Jvb2wsCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4 eS9nYWxheHktY2VudHJhbC9jb21taXRzLzYyZDM2Yjk0YmVlYy8KQ2hhbmdlc2V0OiAgIDYyZDM2 Yjk0YmVlYwpCcmFuY2g6ICAgICAgcmVsZWFzZV8xNS4wMwpVc2VyOiAgICAgICAgam1jaGlsdG9u CkRhdGU6ICAgICAgICAyMDE1LTAzLTI2IDAzOjAxOjI5KzAwOjAwClN1bW1hcnk6ICAgICBSZS1l bmFibGUgam9iIG1ldHJpY3MgYnkgZGVmYXVsdC4KClRoaXMgaGFzIGJlZW4gYnJva2VuIHNpbmNl IDE0LjEwLgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDJhMmViMjhjMDU3MzZjZDVmODA0 ZDA1MTE3YWY3M2EyMDgyYmU1OTAgLXIgNjJkMzZiOTRiZWVjZGZmNzA5YmM0NDc9CjZjMGU5OThi NzVhNGY5ZGRmIGxpYi9nYWxheHkvY29uZmlnLnB5Ci0tLSBhL2xpYi9nYWxheHkvY29uZmlnLnB5 CisrKyBiL2xpYi9nYWxheHkvY29uZmlnLnB5CkBAIC00NjYsNyArNDY2LDcgQEAKICAgICAgICAg ICAgIGRhdGF0eXBlc19jb25maWdfZmlsZT0zRFsgJ2NvbmZpZy9kYXRhdHlwZXNfY29uZi54bWwn LCAnZGF0YXR5PQpwZXNfY29uZi54bWwnLCAnY29uZmlnL2RhdGF0eXBlc19jb25mLnhtbC5zYW1w bGUnIF0sCiAgICAgICAgICAgICBleHRlcm5hbF9zZXJ2aWNlX3R5cGVfY29uZmlnX2ZpbGU9M0Rb ICdjb25maWcvZXh0ZXJuYWxfc2VydmljZT0KX3R5cGVzX2NvbmYueG1sJywgJ2V4dGVybmFsX3Nl cnZpY2VfdHlwZXNfY29uZi54bWwnLCAnY29uZmlnL2V4dGVybmFsX3NlcnZpPQpjZV90eXBlc19j b25mLnhtbC5zYW1wbGUnIF0sCiAgICAgICAgICAgICBqb2JfY29uZmlnX2ZpbGU9M0RbICdjb25m aWcvam9iX2NvbmYueG1sJywgJ2pvYl9jb25mLnhtbCcgXSwKLSAgICAgICAgICAgIGpvYl9tZXRy aWNzX2NvbmZpZ19maWxlPTNEWyAnY29uZmlnL2pvYl9tZXRyaWNzX2NvbmYueG1sJywgJ2pvPQpi X21ldHJpY3NfY29uZi54bWwnIF0sCisgICAgICAgICAgICBqb2JfbWV0cmljc19jb25maWdfZmls ZT0zRFsgJ2NvbmZpZy9qb2JfbWV0cmljc19jb25mLnhtbCcsICdqbz0KYl9tZXRyaWNzX2NvbmYu eG1sJywnY29uZmlnL2pvYl9tZXRyaWNzX2NvbmYueG1sLnNhbXBsZScgXSwKICAgICAgICAgICAg IGRlcGVuZGVuY3lfcmVzb2x2ZXJzX2NvbmZpZ19maWxlPTNEWyAnY29uZmlnL2RlcGVuZGVuY3lf cmVzb2x2PQplcnNfY29uZi54bWwnLCAnZGVwZW5kZW5jeV9yZXNvbHZlcnNfY29uZi54bWwnIF0s CiAgICAgICAgICAgICBqb2JfcmVzb3VyY2VfcGFyYW1zX2ZpbGU9M0RbICdjb25maWcvam9iX3Jl c291cmNlX3BhcmFtc19jb25mLj0KeG1sJywgJ2pvYl9yZXNvdXJjZV9wYXJhbXNfY29uZi54bWwn IF0sCiAgICAgICAgICAgICBtaWdyYXRlZF90b29sc19jb25maWc9M0RbICdtaWdyYXRlZF90b29s c19jb25mLnhtbCcsICdjb25maWcvbT0KaWdyYXRlZF90b29sc19jb25mLnhtbCcgXSwKCgpodHRw czovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvNGEzZjFmYmY3 ZDFhLwpDaGFuZ2VzZXQ6ICAgNGEzZjFmYmY3ZDFhCkJyYW5jaDogICAgICByZWxlYXNlXzE1LjAz ClVzZXI6ICAgICAgICBqbWNoaWx0b24KRGF0ZTogICAgICAgIDIwMTUtMDMtMjYgMTg6NDg6MDgr MDA6MDAKU3VtbWFyeTogICAgIEZpeCBwcm94aWVkIEFQSSB0b29sIGRvd25sb2Fkcy4KCkZyb20g SVJDOgoKMTc6MjIgPCBrZWxscm90dD4gQW55IGlkZWFzIGFib3V0IGhvdyB0byBkZWFsIHdpdGgg aHR0cHM6Ly9naXRodWIuY29tL2JncnVlPQpuaW5nL2RvY2tlci1nYWxheHktc3RhYmxlL2lzc3Vl cy81MCA/CjE3OjIyIDwgbXJzY3JpYmU+IFRpdGxlOiBUb29sIGRvd25sb2FkcyBhcmUgbm90IHdv cmtpbmcgPUMyPUI3IElzc3VlICM1MCA9Cj1DMj1CNyBiZ3J1ZW5pbmcvZG9ja2VyLWdhbGF4eS1z dGFibGUgPUMyPUI3IEdpdEh1YiAoYXQKICAgICAgICAgICAgICAgICAgZ2l0aHViLmNvbSkKMTc6 MjQgPCBrZWxscm90dD4gSSB0aGluayBpdHMgZnJvbSBob3cgdGhlIHRvb2wgZG93bmxvYWQgZnVu Y3Rpb24gdW5saW5rcyBhPQogZmlsZSB3aGlsZSBob2xkaW5nIHRoZSBvcGVuIGZpbGUgaGFuZGxl CiAgICAgICAgICAgICAgICAgICggaHR0cHM6Ly9naXRodWIuY29tL2dhbGF4eXByb2plY3QvZ2Fs YXh5L2Jsb2IvZGV2L2xpYi9nYT0KbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvdG9vbHMucHkjTDIw OCApCjE3OjI0IDwgbXJzY3JpYmU+IFRpdGxlOiBnYWxheHkvdG9vbHMucHkgYXQgZGV2ID1DMj1C NyBnYWxheHlwcm9qZWN0L2dhbGF4eT0KID1DMj1CNyBHaXRIdWIgKGF0IGdpdGh1Yi5jb20pCjE3 OjI3IDwgam1jaGlsdG9uPiBIYXZlIHlvdSB0cmllZCBub3QgdW5saW5raW5nIHRoYXQgZmlsZT8K MTc6MjggPCBqbWNoaWx0b24+IElmIHRoYXQgZml4ZXMgaXQgSSBoYXZlIG5vIHByb2JsZW0ganVz dCBsZWF2aW5nIHRoZSBmaWxlPQogaW4gdGVtcCAtIEdhbGF4eSBsZWF2ZXMgYSBsb3Qgb2Ygc3R1 ZmYKICAgICAgICAgICAgICAgICAgIGluIHRlbXAgYW55d2F5CjE3OjQ2IDwga2VsbHJvdHQ+IHll cCwgdGhhdCBkb2VzIHRoZSB0cmljawoKQ2xvc2VzIGJncnVlbmluZy9kb2NrZXItZ2FsYXh5LXN0 YWJsZSM1MC4KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciA2MmQzNmI5NGJlZWNkZmY3MDli YzQ0NzZjMGU5OThiNzVhNGY5ZGRmIC1yIDRhM2YxZmJmN2QxYTEzZjQ4ZDA1OWQzPQpkZTE5ZmFj M2M1NDFkMTQ3YiBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS90b29scy5weQotLS0gYS9s aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS90b29scy5weQorKysgYi9saWIvZ2FsYXh5L3dl YmFwcHMvZ2FsYXh5L2FwaS90b29scy5weQpAQCAtMTQ1LDcgKzE0NSw2IEBACiAgICAgICAgIGlm IHN1Y2Nlc3M6CiAgICAgICAgICAgICB0cmFucy5yZXNwb25zZS5zZXRfY29udGVudF90eXBlKCAn YXBwbGljYXRpb24veC1nemlwJyApCiAgICAgICAgICAgICBkb3dubG9hZF9maWxlID0zRCBvcGVu KCB0b29sX3RhcmJhbGwgKQotICAgICAgICAgICAgb3MudW5saW5rKCB0b29sX3RhcmJhbGwgKQog ICAgICAgICAgICAgdGFyYmFsbF9wYXRoLCBmaWxlbmFtZSA9M0Qgb3MucGF0aC5zcGxpdCggdG9v bF90YXJiYWxsICkKICAgICAgICAgICAgIHRyYW5zLnJlc3BvbnNlLmhlYWRlcnNbICJDb250ZW50 LURpc3Bvc2l0aW9uIiBdID0zRCAnYXR0YWNobWVuPQp0OyBmaWxlbmFtZT0zRCIlcy50Z3oiJyAl ICggaWQgKQogICAgICAgICAgICAgcmV0dXJuIGRvd25sb2FkX2ZpbGUKCgpodHRwczovL2JpdGJ1 Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvYmQ4MTQzYWNhNDNjLwpDaGFu Z2VzZXQ6ICAgYmQ4MTQzYWNhNDNjCkJyYW5jaDogICAgICByZWxlYXNlXzE1LjAzClVzZXI6ICAg ICAgICBndWVybGVyCkRhdGU6ICAgICAgICAyMDE1LTAzLTI3IDE4OjAyOjQ4KzAwOjAwClN1bW1h cnk6ICAgICBGaXggZGVmYXVsdCB2YWx1ZXMgZm9yIGNvbmRpdGlvbmFsIG11bHRpIHNlbGVjdCBm aWVsZHMKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciA0YTNmMWZiZjdkMWExM2Y0OGQwNTlk M2RlMTlmYWMzYzU0MWQxNDdiIC1yIGJkODE0M2FjYTQzY2FhNmM0ODUwOWYzPQoyYzI3M2M5Y2Ey YmUyMjMxNiBsaWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9v bHMvX19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS90b29scy9fX2luaXRfXy5weQpAQCAtMjQz Myw3ICsyNDMzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKPTIwCiAgICAgICAg ICAgICAgICAgIyBzdGF0ZSBmb3Igc3Vic2VjdGlvbi9ncm91cAotICAgICAgICAgICAgICAgIGdy b3VwX3N0YXRlID0zRCBzdGF0ZV9pbnB1dHNbaW5wdXQubmFtZV0KKyAgICAgICAgICAgICAgICBn cm91cF9zdGF0ZSA9M0Qgc3RhdGVfaW5wdXRzLmdldChpbnB1dC5uYW1lLCB7fSkKPTIwCiAgICAg ICAgICAgICAgICAgIyBpdGVyYXRlIGFuZCB1cGRhdGUgdmFsdWVzCiAgICAgICAgICAgICAgICAg aWYgaW5wdXQudHlwZSA9M0Q9M0QgJ3JlcGVhdCc6CkBAIC0yNDQ0LDcgKzI0NDQsOSBAQAogICAg ICAgICAgICAgICAgIGVsaWYgaW5wdXQudHlwZSA9M0Q9M0QgJ2NvbmRpdGlvbmFsJzoKICAgICAg ICAgICAgICAgICAgICAgaWYgJ3Rlc3RfcGFyYW0nIGluIHRvb2xfZGljdDoKICAgICAgICAgICAg ICAgICAgICAgICAgIHRlc3RfcGFyYW0gPTNEIHRvb2xfZGljdFsndGVzdF9wYXJhbSddCi0gICAg ICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhcmFtWyd2YWx1ZSddID0zRCBqc29uaWZ5KGdyb3Vw X3N0YXRlW3Rlc3RfcD0KYXJhbVsnbmFtZSddXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRl c3RfcGFyYW1bJ3ZhbHVlJ10gPTNEIGpzb25pZnkoZ3JvdXBfc3RhdGUuZ2V0KHRlPQpzdF9wYXJh bVsnbmFtZSddLCBOb25lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdl IChsZW4gKCB0b29sX2RpY3RbJ2Nhc2VzJ10gKSApOgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGl0ZXJhdGUodG9vbF9kaWN0WydjYXNlcyddW2ldWydpbnB1dHMnXSwgaW5wdXQ9Ci5jYXNl c1tpXS5pbnB1dHMsIHt9LCBvdGhlcl92YWx1ZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAnX19jdXJyZW50X2Nhc2VfXycgaW4gZ3JvdXBfc3RhdGU6CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaSA9M0QgZ3JvdXBfc3RhdGVbJ19fY3VycmVudF9jYXNlX18nXQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGl0ZXJhdGUodG9vbF9kaWN0WydjYXNlcyddW2ldWydpbnB1dHMn XSwgaW5wdXQ9Ci5jYXNlc1tpXS5pbnB1dHMsIGdyb3VwX3N0YXRlLCBvdGhlcl92YWx1ZXMpCkBA IC0yNDYyLDggKzI0NjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdG9vbF9kaWN0Wydk ZWZhdWx0X3ZhbHVlJ10gPTNEIGlucHV0LmdldF9pbml0aWFsX3Y9CmFsdWUodHJhbnMsIG90aGVy X3ZhbHVlcykKPTIwCiAgICAgICAgICAgICAgICAgICAgICAgICAjIHVwZGF0ZSBpbnB1dCB2YWx1 ZSBmcm9tIHRvb2wgc3RhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlucHV0X25hbWUg aW4gc3RhdGVfaW5wdXRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xfZGljdFsn dmFsdWUnXSA9M0Qgc3RhdGVfaW5wdXRzW2lucHV0X25hbWVdCisgICAgICAgICAgICAgICAgICAg ICAgICB0b29sX2RpY3RbJ3ZhbHVlJ10gPTNEIHN0YXRlX2lucHV0cy5nZXQoaW5wdXRfbmFtZT0K LCBOb25lKQo9MjAKICAgICAgICAgICAgICAgICAgICAgICAgICMgc2FuaXRpemUgdmFsdWVzCiAg ICAgICAgICAgICAgICAgICAgICAgICBzYW5pdGl6ZSh0b29sX2RpY3QsICd2YWx1ZScpCgoKaHR0 cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzg5NzE2OTM2 NTQ5Ni8KQ2hhbmdlc2V0OiAgIDg5NzE2OTM2NTQ5NgpCcmFuY2g6ICAgICAgcmVsZWFzZV8xNS4w MwpVc2VyOiAgICAgICAgZ3VlcmxlcgpEYXRlOiAgICAgICAgMjAxNS0wMy0yNyAxODo1NjoyMCsw MDowMApTdW1tYXJ5OiAgICAgSGFuZGxlIGZhaWxlZCBsYXRlIHZhbGlkYXRpb24KQWZmZWN0ZWQg IzogIDEgZmlsZQoKZGlmZiAtciBiZDgxNDNhY2E0M2NhYTZjNDg1MDlmMzJjMjczYzljYTJiZTIy MzE2IC1yIDg5NzE2OTM2NTQ5NjIxNWE2OWNmYjk5PQo3ZDM2MTNhMjFiNTVjZmVlYiBsaWIvZ2Fs YXh5L3Rvb2xzL19faW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkK KysrIGIvbGliL2dhbGF4eS90b29scy9fX2luaXRfXy5weQpAQCAtMjQ0NiwxMCArMjQ0NiwxMCBA QAogICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9wYXJhbSA9M0QgdG9vbF9kaWN0Wyd0ZXN0 X3BhcmFtJ10KICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcGFyYW1bJ3ZhbHVlJ10gPTNE IGpzb25pZnkoZ3JvdXBfc3RhdGUuZ2V0KHRlPQpzdF9wYXJhbVsnbmFtZSddLCBOb25lKSkKICAg ICAgICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlIChsZW4gKCB0b29sX2RpY3RbJ2Nh c2VzJ10gKSApOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdGUodG9vbF9kaWN0 WydjYXNlcyddW2ldWydpbnB1dHMnXSwgaW5wdXQ9Ci5jYXNlc1tpXS5pbnB1dHMsIHt9LCBvdGhl cl92YWx1ZXMpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAnX19jdXJyZW50X2Nhc2VfXycg aW4gZ3JvdXBfc3RhdGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9M0QgZ3JvdXBf c3RhdGVbJ19fY3VycmVudF9jYXNlX18nXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0 ZXJhdGUodG9vbF9kaWN0WydjYXNlcyddW2ldWydpbnB1dHMnXSwgaW5wdXQ9Ci5jYXNlc1tpXS5p bnB1dHMsIGdyb3VwX3N0YXRlLCBvdGhlcl92YWx1ZXMpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY3VycmVudF9zdGF0ZSA9M0Qge30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp ZiBpID0zRD0zRCBncm91cF9zdGF0ZS5nZXQoJ19fY3VycmVudF9jYXNlX18nPQosIE5vbmUpOgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3N0YXRlID0zRCBncm91cF9z dGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdGUodG9vbF9kaWN0WydjYXNl cyddW2ldWydpbnB1dHMnXSwgaW5wdXQ9Ci5jYXNlc1tpXS5pbnB1dHMsIGN1cnJlbnRfc3RhdGUs IG90aGVyX3ZhbHVlcykKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAg ICAjIGNyZWF0ZSBpbnB1dCBkaWN0aW9uYXJ5LCB0cnkgdG8gcGFzcyBvdGhlcl92YWx1ZXMgaWY9 CiB0b19kaWN0IGZ1bmN0aW9uIHN1cHBvcnRzIGl0IGUuZy4gZHluYW1pYyBvcHRpb25zCiAgICAg ICAgICAgICAgICAgICAgIHRyeToKQEAgLTI0NjEsNyArMjQ2MSwxMSBAQAogICAgICAgICAgICAg ICAgICAgICBpbnB1dF9uYW1lID0zRCB0b29sX2RpY3QuZ2V0KCduYW1lJykKICAgICAgICAgICAg ICAgICAgICAgaWYgaW5wdXRfbmFtZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgYmFja3Vw IGRlZmF1bHQgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xfZGljdFsnZGVmYXVs dF92YWx1ZSddID0zRCBpbnB1dC5nZXRfaW5pdGlhbF92PQphbHVlKHRyYW5zLCBvdGhlcl92YWx1 ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdG9vbF9kaWN0WydkZWZhdWx0X3ZhbHVlJ10gPTNEIGlucHV0LmdldF9pbml0aT0KYWxf dmFsdWUodHJhbnMsIG90aGVyX3ZhbHVlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw dCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgaW5pdGlhbCB2 YWx1ZSBmYWlsZWQgZHVlIHRvIGltcHJvcGVyIGxhdD0KZSB2YWxpZGF0aW9uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGFzcwo9MjAKICAgICAgICAgICAgICAgICAgICAgICAgICMgdXBk YXRlIGlucHV0IHZhbHVlIGZyb20gdG9vbCBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAg dG9vbF9kaWN0Wyd2YWx1ZSddID0zRCBzdGF0ZV9pbnB1dHMuZ2V0KGlucHV0X25hbWU9CiwgTm9u ZSkKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMv OTJhMDkxM2EwOGI3LwpDaGFuZ2VzZXQ6ICAgOTJhMDkxM2EwOGI3CkJyYW5jaDogICAgICByZWxl YXNlXzE1LjAzClVzZXI6ICAgICAgICBndWVybGVyCkRhdGU6ICAgICAgICAyMDE1LTAzLTI3IDE5 OjE3OjA5KzAwOjAwClN1bW1hcnk6ICAgICBTZXQgKGRlZmF1bHQpIGRlZmF1bHQgdmFsdWUgdG8g Tm9uZQpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDg5NzE2OTM2NTQ5NjIxNWE2OWNmYjk5 N2QzNjEzYTIxYjU1Y2ZlZWIgLXIgOTJhMDkxM2EwOGI3OGRmNTMxNTg3ZGM9Cjc5ZmRjODA0MDA5 NDMzYzBlIGxpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS90b29s cy9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9fLnB5CkBAIC0yNDY1 LDYgKzI0NjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xfZGljdFsnZGVm YXVsdF92YWx1ZSddID0zRCBpbnB1dC5nZXRfaW5pdGk9CmFsX3ZhbHVlKHRyYW5zLCBvdGhlcl92 YWx1ZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgZ2V0IGluaXRpYWwgdmFsdWUgZmFpbGVkIGR1ZSB0byBp bXByb3BlciBsYXQ9CmUgdmFsaWRhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv b2xfZGljdFsnZGVmYXVsdF92YWx1ZSddID0zRCBOb25lCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFzcwo9MjAKICAgICAgICAgICAgICAgICAgICAgICAgICMgdXBkYXRlIGlucHV0IHZh bHVlIGZyb20gdG9vbCBzdGF0ZQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5 LWNlbnRyYWwvY29tbWl0cy8xMzAzNzY2MWYxYjkvCkNoYW5nZXNldDogICAxMzAzNzY2MWYxYjkK QnJhbmNoOiAgICAgIHJlbGVhc2VfMTUuMDMKVXNlcjogICAgICAgIG5hdGVmb28KRGF0ZTogICAg ICAgIDIwMTUtMDMtMzAgMTY6MzI6MzArMDA6MDAKU3VtbWFyeTogICAgIEFwcGx5IEBkYW5ub24n cyBjaGFuZ2UgZnJvbSBHYWxheHkgdG8gdGhlIFRvb2wgU2hlZCBkaXNhYmxpbmcgPQpzdGF0aWMK bWlkZGxld2FyZSB3aGVuIHVXU0dJIGlzIGluIHVzZS4KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlm ZiAtciA5MmEwOTEzYTA4Yjc4ZGY1MzE1ODdkYzc5ZmRjODA0MDA5NDMzYzBlIC1yIDEzMDM3NjYx ZjFiOTExZmQ4OTQ2N2ZkPQplN2IwYjRiZTcwZDQzYTBlYiBsaWIvZ2FsYXh5L3dlYmFwcHMvdG9v bF9zaGVkL2J1aWxkYXBwLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQvYnVp bGRhcHAucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9idWlsZGFwcC5weQpA QCAtMTM0LDggKzEzNCwyMyBAQAogICAgICMgV3JhcCB0aGUgd2ViYXBwIGluIHNvbWUgdXNlZnVs IG1pZGRsZXdhcmUKICAgICBpZiBrd2FyZ3MuZ2V0KCAnbWlkZGxld2FyZScsIFRydWUgKToKICAg ICAgICAgd2ViYXBwID0zRCB3cmFwX2luX21pZGRsZXdhcmUoIHdlYmFwcCwgZ2xvYmFsX2NvbmYs ICoqa3dhcmdzICkKLSAgICBpZiBhc2Jvb2woIGt3YXJncy5nZXQoICdzdGF0aWNfZW5hYmxlZCcs IFRydWUgKSApOgotICAgICAgICB3ZWJhcHAgPTNEIHdyYXBfaW5fc3RhdGljKCB3ZWJhcHAsIGds b2JhbF9jb25mLCAqKmt3YXJncyApCisgICAgIyBURVNUIEZPUiBVV1NHSSAtLSBUT0RPIHNhdmUg dGhpcyBzb21ld2hlcmUgc28gd2Ugb25seSBoYXZlIHRvIGRvIGl0ID0Kb25jZS4KKyAgICBpc191 d3NnaSA9M0QgRmFsc2UKKyAgICB0cnk6CisgICAgICAgICMgVGhlIHV3c2dpIG1vZHVsZSBpcyBh dXRvbWF0aWNhbGx5IGluamVjdGVkIGJ5IHRoZSBwYXJlbnQgdXdzZ2kKKyAgICAgICAgIyBwcm9j ZXNzIGFuZCBvbmx5IGV4aXN0cyB0aGF0IHdheS4gIElmIGFueXRoaW5nIHdvcmtzLCB0aGlzIGlz IGEKKyAgICAgICAgIyB1d3NnaS1tYW5hZ2VkIHByb2Nlc3MuCisgICAgICAgIGltcG9ydCB1d3Nn aQorICAgICAgICBpc191d3NnaSA9M0QgdXdzZ2kubnVtcHJvYworICAgICAgICBpc191d3NnaSA9 M0QgVHJ1ZQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgIyBUaGlzIGlzIG5vdCBh IHV3c2dpIHByb2Nlc3MsIG9yIHNvbWV0aGluZyB3ZW50IGhvcnJpYmx5IHdyb25nLgorICAgICAg ICBwYXNzCisgICAgaWYgYXNib29sKCBrd2FyZ3MuZ2V0KCAnc3RhdGljX2VuYWJsZWQnLCBUcnVl KSApOgorICAgICAgICBpZiBpc191d3NnaToKKyAgICAgICAgICAgIGxvZy5lcnJvcigiU3RhdGlj IG1pZGRsZXdhcmUgaXMgZW5hYmxlZCBpbiB5b3VyIGNvbmZpZ3VyYXRpb24gPQpidXQgdGhpcyBp cyBhIHV3c2dpIHByb2Nlc3MuICBSZWZ1c2luZyB0byB3cmFwIGluIHN0YXRpYyBtaWRkbGV3YXJl LiIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3ZWJhcHAgPTNEIHdyYXBfaW5fc3RhdGlj KCB3ZWJhcHAsIGdsb2JhbF9jb25mLCAqKmt3YXJncyApCiAgICAgIyBDbG9zZSBhbnkgcG9vbGVk IGRhdGFiYXNlIGNvbm5lY3Rpb25zIGJlZm9yZSBmb3JraW5nCiAgICAgdHJ5OgogICAgICAgICBn YWxheHkud2ViYXBwcy50b29sX3NoZWQubW9kZWwubWFwcGluZy5tZXRhZGF0YS5lbmdpbmUuY29u bmVjdGlvbl89CnByb3ZpZGVyLl9wb29sLmRpc3Bvc2UoKQoKCmh0dHBzOi8vYml0YnVja2V0Lm9y Zy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8wMGI4ZGVkZjA5OGUvCkNoYW5nZXNldDog ICAwMGI4ZGVkZjA5OGUKQnJhbmNoOiAgICAgIHJlbGVhc2VfMTUuMDMKVXNlcjogICAgICAgIGpt Y2hpbHRvbgpEYXRlOiAgICAgICAgMjAxNS0wMy0zMCAxNzozMjo0NyswMDowMApTdW1tYXJ5OiAg ICAgRml4IGRhdGFiYXNlIGRlYWRsb2NrcyB3aGVuIHJ1bm5pbmcgbGFyZ2Ugd29ya2Zsb3dzLgoK VGhpcyBmaXggd2FzIGZpcnN0IHRlc3RlZCBhbmQgaW5pdGlhbGx5IHZlcmZpZWQgYnkgTWFyaXVz IHZhbiBkZW4gQmVlayB3aXRoPQogc3Vic2VxdWVudCBwYXJhbGxlbCB2ZXJpZmljYXRpb24gZnJv bSBQaGlsaXAgTWFib24gYW5kIEFhcm9uIFBldGthdS4KCkxpa2VseSB0aGVzZSBkZWFkbG9ja3Mg d2VyZSBpbnRyb2R1Y2VkIGluIDE0LjEwIHdoZW4gSSBhZGRlZCBhbiB1cGRhdGUgdGltZT0KIHRv IHdvcmtmbG93IGludm9jYXRpb25zIHNvIHdlIGNhbiByZS1ldmFsdWF0ZSB0aGVtIG92ZXIgdGlt ZSAtIGFuIGV4cGxhbmF0PQppb24gZm9yIHdoeSB0aGUgZGVhZGxvY2tzIGFyZSBsaWtlbHkgb2Nj dXJpbmcgY2FuIGJlIGZvdW5kIGluIHRoZSBjb2RlIGNvbW09CmVudHMuCkFmZmVjdGVkICM6ICAx IGZpbGUKCmRpZmYgLXIgMTMwMzc2NjFmMWI5MTFmZDg5NDY3ZmRlN2IwYjRiZTcwZDQzYTBlYiAt ciAwMGI4ZGVkZjA5OGVhMjAyMmViNTQ4Yz0KMGJlZTBhZGEwZTVmNzNkZTggbGliL2dhbGF4eS9q b2JzL19faW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvam9icy9fX2luaXRfXy5weQorKysgYi9s aWIvZ2FsYXh5L2pvYnMvX19pbml0X18ucHkKQEAgLTEyNTEsNiArMTI1MSwxNiBAQAogICAgICAg ICBpZiBqb2IudXNlcjoKICAgICAgICAgICAgIGpvYi51c2VyLnRvdGFsX2Rpc2tfdXNhZ2UgKz0z RCBieXRlcwo9MjAKKyAgICAgICAgIyBFbXBlcmljYWxseSwgd2UgbmVlZCB0byB1cGRhdGUgam9i LnVzZXIgYW5kCisgICAgICAgICMgam9iLndvcmtmbG93X2ludm9jYXRpb25fc3RlcC53b3JrZmxv d19pbnZvY2F0aW9uIGluIHNlcGFyYXRlCisgICAgICAgICMgdHJhbnNhY3Rpb25zLiBCZXN0IGd1 ZXNzIGFzIHRvIHdoeSBpcyB0aGF0IHRoZSB3b3JrZmxvd19pbnZvY2F0aT0Kb24KKyAgICAgICAg IyBtYXkgb3IgbWF5IG5vdCBleGlzdCB3aGVuIHRoZSBqb2IgaXMgZmlyc3QgbG9hZGVkIGJ5IHRo ZSBoYW5kbGVyPQogLQorICAgICAgICAjIGFuZCBkZXBlbmRpbmcgb24gd2hldGhlciBpdCBpcyBv ciBub3Qgc3FsYWxjaGVteSBvcmRlcnMgdGhlIHVwZGE9CnRlcworICAgICAgICAjIGRpZmZlcmVu dGx5IGFuZCBkZWFkbG9ja3MgY2FuIG9jY3VyIChvbmUgdGhyZWFkIHVwZGF0ZXMgdXNlciBhbmQK KyAgICAgICAgIyB3YWl0cyBvbiBpbnZvY2F0aW9uIGFuZCB0aGUgb3RoZXIgdXBkYXRlcyBpbnZv Y2F0aW9uIGFuZCB3YWl0cyBvbgorICAgICAgICAjIHVzZXIpLgorICAgICAgICBzZWxmLnNhX3Nl c3Npb24uZmx1c2goKQorCiAgICAgICAgICMgZml4IHBlcm1pc3Npb25zCiAgICAgICAgIGZvciBw YXRoIGluIFsgZHAucmVhbF9wYXRoIGZvciBkcCBpbiBzZWxmLmdldF9tdXRhYmxlX291dHB1dF9m bmFtZT0KcygpIF06CiAgICAgICAgICAgICB1dGlsLnVtYXNrX2ZpeF9wZXJtcyggcGF0aCwgc2Vs Zi5hcHAuY29uZmlnLnVtYXNrLCAwNjY2LCBzZWxmLj0KYXBwLmNvbmZpZy5naWQgKQoKCmh0dHBz Oi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy81YTU1ZTljZGJh MzcvCkNoYW5nZXNldDogICA1YTU1ZTljZGJhMzcKQnJhbmNoOiAgICAgIHJlbGVhc2VfMTUuMDMK VXNlcjogICAgICAgIG1hcnRlbnNvbgpEYXRlOiAgICAgICAgMjAxNS0wMy0zMCAxODowODozMisw MDowMApTdW1tYXJ5OiAgICAgZml4IG1pc3NpbmcgZGVmYXVsdHMgZm9yIGdldCgpCnBhcmFtcyBj bGFzcyBvdmVycmlkZSB0aGUgbWV0aG9kIGFuZCBmb3JjZSBkZWZhdWx0IHRvIGJlIGluY2x1ZGVk CkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgMDBiOGRlZGYwOThlYTIwMjJlYjU0OGMwYmVl MGFkYTBlNWY3M2RlOCAtciA1YTU1ZTljZGJhMzdmNjg1ZmUzYzVmOD0KYThjZDVmMjQ0YjlhM2I3 ODUgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9saWJyYXJ5X2NvbW1vbi5w eQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2xpYnJhcnlfY29t bW9uLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvbGlicmFy eV9jb21tb24ucHkKQEAgLTExMzYsNyArMTEzNiw3IEBACiAgICAgZGVmIG1ha2VfbGlicmFyeV91 cGxvYWRlZF9kYXRhc2V0KCBzZWxmLCB0cmFucywgY250cmxsZXIsIHBhcmFtcywgbmFtZT0KLCBw YXRoLCB0eXBlLCBsaWJyYXJ5X2J1bmNoLCBpbl9mb2xkZXI9M0ROb25lICk6CiAgICAgICAgIGxp bmtfZGF0YV9vbmx5ID0zRCBwYXJhbXMuZ2V0KCAnbGlua19kYXRhX29ubHknLCAnY29weV9maWxl cycgKQogICAgICAgICB1dWlkX3N0ciA9M0QgIHBhcmFtcy5nZXQoICd1dWlkJywgTm9uZSApCi0g ICAgICAgIGZpbGVfdHlwZSA9M0QgcGFyYW1zLmdldCggJ2ZpbGVfdHlwZScgKQorICAgICAgICBm aWxlX3R5cGUgPTNEIHBhcmFtcy5nZXQoICdmaWxlX3R5cGUnLCBOb25lICkKICAgICAgICAgbGli cmFyeV9idW5jaC5yZXBsYWNlX2RhdGFzZXQgPTNEIE5vbmUgIyBub3QgdmFsaWQgZm9yIHRoZXNl IHR5cGVzPQogb2YgdXBsb2FkCiAgICAgICAgIHVwbG9hZGVkX2RhdGFzZXQgPTNEIHV0aWwuYnVu Y2guQnVuY2goKQogICAgICAgICBuZXdfbmFtZSA9M0QgbmFtZQpAQCAtMTE1Miw4ICsxMTUyLDgg QEAKICAgICAgICAgdXBsb2FkZWRfZGF0YXNldC50eXBlID0zRCB0eXBlCiAgICAgICAgIHVwbG9h ZGVkX2RhdGFzZXQuZXh0ID0zRCBOb25lCiAgICAgICAgIHVwbG9hZGVkX2RhdGFzZXQuZmlsZV90 eXBlID0zRCBmaWxlX3R5cGUKLSAgICAgICAgdXBsb2FkZWRfZGF0YXNldC5kYmtleSA9M0QgcGFy YW1zLmdldCggJ2Ria2V5JyApCi0gICAgICAgIHVwbG9hZGVkX2RhdGFzZXQuc3BhY2VfdG9fdGFi ID0zRCBwYXJhbXMuZ2V0KCAnc3BhY2VfdG9fdGFiJyApCisgICAgICAgIHVwbG9hZGVkX2RhdGFz ZXQuZGJrZXkgPTNEIHBhcmFtcy5nZXQoICdkYmtleScsIE5vbmUgKQorICAgICAgICB1cGxvYWRl ZF9kYXRhc2V0LnNwYWNlX3RvX3RhYiA9M0QgcGFyYW1zLmdldCggJ3NwYWNlX3RvX3RhYicsIE5v bmU9CiApCiAgICAgICAgIGlmIGluX2ZvbGRlcjoKICAgICAgICAgICAgIHVwbG9hZGVkX2RhdGFz ZXQuaW5fZm9sZGVyID0zRCBpbl9mb2xkZXIKICAgICAgICAgdXBsb2FkZWRfZGF0YXNldC5kYXRh ID0zRCB1cGxvYWRfY29tbW9uLm5ld191cGxvYWQoIHRyYW5zLCBjbnRybGxlPQpyLCB1cGxvYWRl ZF9kYXRhc2V0LCBsaWJyYXJ5X2J1bmNoICkKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5 L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvNjJjNTY0YmJmMDA2LwpDaGFuZ2VzZXQ6ICAgNjJjNTY0 YmJmMDA2CkJyYW5jaDogICAgICByZWxlYXNlXzE1LjAzClVzZXI6ICAgICAgICBjYXJsZmViZXJo YXJkCkRhdGU6ICAgICAgICAyMDE1LTAzLTI1IDE2OjI3OjM1KzAwOjAwClN1bW1hcnk6ICAgICBB UEksIEhEQXM6IHByb3Blcmx5IGZldGNoIHJlc3VibWl0dGVkIGZsYWcgZnJvbSB0aGUgbmV3IGpv YiBzdD0KYXRlIGhpc3RvcnkgdGFibGUKCihjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGI0Y2Y0 OWE0NDlhYTAwMmIxMzA4Y2RlZGVjM2Q3ZDRiMjA1ZTA1YjMpCkFmZmVjdGVkICM6ICAxIGZpbGUK CmRpZmYgLXIgNWE1NWU5Y2RiYTM3ZjY4NWZlM2M1ZjhhOGNkNWYyNDRiOWEzYjc4NSAtciA2MmM1 NjRiYmYwMDYyOGVmMTA0OWQ1YT0KYTIyOGJmMmVhZTQyOTIwMzYgbGliL2dhbGF4eS9tYW5hZ2Vy cy9oZGFzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvaGRhcy5weQorKysgYi9saWIvZ2Fs YXh5L21hbmFnZXJzL2hkYXMucHkKQEAgLTE5Niw2ICsxOTYsMzIgQEAKICAgICAgICAgICAgIGJy ZWFrCiAgICAgICAgIHJldHVybiBqb2IKPTIwCisgICAgZGVmIF9qb2Jfc3RhdGVfaGlzdG9yeV9x dWVyeSggc2VsZiwgaGRhICk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gYSBxdWVyeSBv ZiB0aGUgam9iJ3Mgc3RhdGUgaGlzdG9yeSBmb3IgdGhlIGpvYiB0aGF0IGNyZWF0ZWQ9CiB0aGlz IGhkYS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlc3Npb24gPTNEIHNlbGYuYXBwLm1vZGVsLmNv bnRleHQKKyAgICAgICAgSm9iVG9PdXRwdXREYXRhc2V0QXNzb2NpYXRpb24gPTNEIG1vZGVsLkpv YlRvT3V0cHV0RGF0YXNldEFzc29jaWF0PQppb24KKyAgICAgICAgSm9iU3RhdGVIaXN0b3J5ID0z RCBtb2RlbC5Kb2JTdGF0ZUhpc3RvcnkKKworICAgICAgICAjIFRPRE86IHRoaXMgZG9lcyBub3Qg cGxheSB3ZWxsIHdpdGggY29waWVkIGhkYXMKKyAgICAgICAgIyBOT1RFOiBkb24ndCBlYWdlcmxv YWQgKEpPREEgd2lsbCBsb2FkIHRoZSBoZGEgd2VyZSB1c2luZyEpCisgICAgICAgIGhkYV9pZCA9 M0QgaGRhLmlkCisgICAgICAgIHF1ZXJ5ID0zRCAoIHNlc3Npb24ucXVlcnkoIEpvYlRvT3V0cHV0 RGF0YXNldEFzc29jaWF0aW9uLCBKb2JTdGF0ZT0KSGlzdG9yeSApCisgICAgICAgICAgICAuZmls dGVyKCBKb2JUb091dHB1dERhdGFzZXRBc3NvY2lhdGlvbi5kYXRhc2V0X2lkID0zRD0zRCBoZGFf aT0KZCApCisgICAgICAgICAgICAuZmlsdGVyKCBKb2JTdGF0ZUhpc3Rvcnkuam9iX2lkID0zRD0z RCBKb2JUb091dHB1dERhdGFzZXRBc3NvYz0KaWF0aW9uLmpvYl9pZCApCisgICAgICAgICAgICAu ZW5hYmxlX2VhZ2VybG9hZHMoIEZhbHNlICkgKQorICAgICAgICByZXR1cm4gcXVlcnkKKworICAg IGRlZiBoYXNfYmVlbl9yZXN1Ym1pdHRlZCggc2VsZiwgaGRhICk6CisgICAgICAgICIiIgorICAg ICAgICBSZXR1cm4gVHJ1ZSBpZiB0aGUgaGRhJ3Mgam9iIHdhcyByZXN1Ym1pdHRlZCBhdCBhbnkg cG9pbnQuCisgICAgICAgICIiIgorICAgICAgICBqb2Jfc3RhdGVzID0zRCBtb2RlbC5Kb2Iuc3Rh dGVzCisgICAgICAgIHF1ZXJ5ID0zRCAoIHNlbGYuX2pvYl9zdGF0ZV9oaXN0b3J5X3F1ZXJ5KCBo ZGEgKQorICAgICAgICAgICAgLmZpbHRlciggbW9kZWwuSm9iU3RhdGVIaXN0b3J5LnN0YXRlID0z RD0zRCBqb2Jfc3RhdGVzLlJFU1VCTUk9ClRURUQgKSApCisgICAgICAgIHJldHVybiBzZWxmLmFw cC5tb2RlbC5jb250ZXh0LnF1ZXJ5KCBxdWVyeS5leGlzdHMoKSApLnNjYWxhcigpCisKICAgICAj IC4uLi4gc2VyaWFsaXphdGlvbgogICAgIGRlZiBnZXRfZGlzcGxheV9hcHBzKCBzZWxmLCB0cmFu cywgaGRhICk6CiAgICAgICAgICIiIgpAQCAtMzI1LDcgKzM1MSw3IEBACiAgICAgICAgICAgICAn aGlzdG9yeV9jb250ZW50X3R5cGUnLAogICAgICAgICAgICAgJ2RhdGFzZXRfaWQnLAogICAgICAg ICAgICAgJ3N0YXRlJywgJ2V4dGVuc2lvbicsCi0gICAgICAgICAgICAnZGVsZXRlZCcsICdwdXJn ZWQnLCAndmlzaWJsZScsICdyZXN1Ym1pdHRlZCcsCisgICAgICAgICAgICAnZGVsZXRlZCcsICdw dXJnZWQnLCAndmlzaWJsZScsCiAgICAgICAgICAgICAndHlwZScsICd1cmwnCiAgICAgICAgIF0p CiAgICAgICAgIHNlbGYuYWRkX3ZpZXcoICdkZXRhaWxlZCcsIFsKQEAgLTM0MSw3ICszNjcsOCBA QAogICAgICAgICAgICAgJ2ZpbGVfZXh0JywgJ2ZpbGVfc2l6ZScsCj0yMAogICAgICAgICAgICAg J2NyZWF0ZV90aW1lJywgJ3VwZGF0ZV90aW1lJywKLSAgICAgICAgICAgICdtZXRhZGF0YScsICdt ZXRhX2ZpbGVzJywgJ2RhdGFfdHlwZScsCisgICAgICAgICAgICAncmVzdWJtaXR0ZWQnLAorICAg ICAgICAgICAgICdtZXRhZGF0YScsICdtZXRhX2ZpbGVzJywgJ2RhdGFfdHlwZScsCiAgICAgICAg ICAgICAncGVlaycsCj0yMAogICAgICAgICAgICAgI1RPRE86IHdoeSBpcyB0aGlzIG5hbWVkIHV1 aWQhPyBUaGUgaGRhIGRvZXNuJ3QgaGF2ZSBhIHV1aWQgLSA9Cml0J3MgdGhlIHVuZGVybHlpbmcg ZGF0YXNldCdzIHV1aWQhCkBAIC00MDEsNyArNDI4LDcgQEAKICAgICAgICAgICAgICdjb3BpZWRf ZnJvbV9oaXN0b3J5X2RhdGFzZXRfYXNzb2NpYXRpb25faWQnICAgICAgICA6IHNlbGYuc2VyPQpp YWxpemVfaWQsCiAgICAgICAgICAgICAnY29waWVkX2Zyb21fbGlicmFyeV9kYXRhc2V0X2RhdGFz ZXRfYXNzb2NpYXRpb25faWQnOiBzZWxmLnNlcj0KaWFsaXplX2lkLAo9MjAKLSAgICAgICAgICAg ICdyZXN1Ym1pdHRlZCcgICA6IGxhbWJkYSB0LCBpLCBrOiBpLl9zdGF0ZSA9M0Q9M0QgdC5hcHAu bW9kZWwuPQpEYXRhc2V0LnN0YXRlcy5SRVNVQk1JVFRFRCwKKyAgICAgICAgICAgICdyZXN1Ym1p dHRlZCcgICA6IGxhbWJkYSB0LCBpLCBrOiBzZWxmLmhkYV9tYW5hZ2VyLmhhc19iZWVuX3JlPQpz dWJtaXR0ZWQoIGkgKSwKPTIwCiAgICAgICAgICAgICAnbWV0YV9maWxlcycgICAgOiBzZWxmLnNl cmlhbGl6ZV9tZXRhX2ZpbGVzLAogICAgICAgICAgICAgJ2ZpbGVfcGF0aCcgICAgIDogc2VsZi5z ZXJpYWxpemVfZmlsZV9wYXRoLAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5 LWNlbnRyYWwvY29tbWl0cy81ZGQ2NTQ5YWFjM2EvCkNoYW5nZXNldDogICA1ZGQ2NTQ5YWFjM2EK QnJhbmNoOiAgICAgIHJlbGVhc2VfMTUuMDMKVXNlcjogICAgICAgIG5hdGVmb28KRGF0ZTogICAg ICAgIDIwMTUtMDMtMjUgMjE6MTc6NDkrMDA6MDAKU3VtbWFyeTogICAgIEdldCByaWQgb2YgdGhl ICJyZXN1Ym1pdHRlZCIgZGF0YXNldCBzdGF0ZSBhbmQgcHJvdmlkZSBhIHNsaWdoPQp0bHkgdXNl ZnVsCm1lc3NhZ2Ugb24gam9iL2pvYl9zdGF0ZV9oaXN0b3J5LmluZm8gZXhwbGFpbmluZyB0aGUg cmVzdWJtaXQgcmVhc29uLgoKQWxzbyBQRVAtOCB3aGlsZSBJJ20gaW4gdGhlcmUuCgooY2hlcnJ5 IHBpY2tlZCBmcm9tIGNvbW1pdCBiY2U4MTcxOWViMGE5MWRhMTVlMTEyZDViNWIyZjFjZGY2MGVk ZGFjKQpBZmZlY3RlZCAjOiAgNCBmaWxlcwoKZGlmZiAtciA2MmM1NjRiYmYwMDYyOGVmMTA0OWQ1 YWEyMjhiZjJlYWU0MjkyMDM2IC1yIDVkZDY1NDlhYWMzYTI5YjE1NjJmZDNlPQo1MzA2YzFjNjll ZjAwNDdhNyBsaWIvZ2FsYXh5L2pvYnMvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS9qb2Jz L19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvam9icy9fX2luaXRfXy5weQpAQCAtOTYyLDEy ICs5NjIsMTEgQEAKICAgICAgICAgICAgIGpvYi5zZXRfc3RhdGUoIGpvYi5zdGF0ZXMuUEFVU0VE ICkKICAgICAgICAgICAgIHNlbGYuc2Ffc2Vzc2lvbi5hZGQoIGpvYiApCj0yMAotICAgIGRlZiBt YXJrX2FzX3Jlc3VibWl0dGVkKCBzZWxmICk6CisgICAgZGVmIG1hcmtfYXNfcmVzdWJtaXR0ZWQo IHNlbGYsIGluZm89M0ROb25lICk6CiAgICAgICAgIGpvYiA9M0Qgc2VsZi5nZXRfam9iKCkKICAg ICAgICAgc2VsZi5zYV9zZXNzaW9uLnJlZnJlc2goIGpvYiApCi0gICAgICAgIGZvciBkYXRhc2V0 IGluIFsgZGF0YXNldF9hc3NvYy5kYXRhc2V0IGZvciBkYXRhc2V0X2Fzc29jIGluIGpvYi5vdT0K dHB1dF9kYXRhc2V0cyArIGpvYi5vdXRwdXRfbGlicmFyeV9kYXRhc2V0cyBdOgotICAgICAgICAg ICAgZGF0YXNldC5fc3RhdGUgPTNEIG1vZGVsLkRhdGFzZXQuc3RhdGVzLlJFU1VCTUlUVEVECi0g ICAgICAgICAgICBzZWxmLnNhX3Nlc3Npb24uYWRkKCBkYXRhc2V0ICkKKyAgICAgICAgaWYgaW5m byBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGpvYi5pbmZvID0zRCBpbmZvCiAgICAgICAgIGpv Yi5zZXRfc3RhdGUoIG1vZGVsLkpvYi5zdGF0ZXMuUkVTVUJNSVRURUQgKQogICAgICAgICBzZWxm LnNhX3Nlc3Npb24uYWRkKCBqb2IgKQogICAgICAgICBzZWxmLnNhX3Nlc3Npb24uZmx1c2goKQoK ZGlmZiAtciA2MmM1NjRiYmYwMDYyOGVmMTA0OWQ1YWEyMjhiZjJlYWU0MjkyMDM2IC1yIDVkZDY1 NDlhYWMzYTI5YjE1NjJmZDNlPQo1MzA2YzFjNjllZjAwNDdhNyBsaWIvZ2FsYXh5L2pvYnMvcnVu bmVycy9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L2pvYnMvcnVubmVycy9fX2luaXRfXy5w eQorKysgYi9saWIvZ2FsYXh5L2pvYnMvcnVubmVycy9fX2luaXRfXy5weQpAQCAtMzQxLDggKzM0 MSw4IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGxvZy5leGNlcHRpb24oJ0NhdWdo dCBleGNlcHRpb24gaW4gcnVubmVyIHN0YXRlIGhhbmRsZXI6JykKPTIwCi0gICAgZGVmIG1hcmtf YXNfcmVzdWJtaXR0ZWQoIHNlbGYsIGpvYl9zdGF0ZSApOgotICAgICAgICBqb2Jfc3RhdGUuam9i X3dyYXBwZXIubWFya19hc19yZXN1Ym1pdHRlZCgpCisgICAgZGVmIG1hcmtfYXNfcmVzdWJtaXR0 ZWQoIHNlbGYsIGpvYl9zdGF0ZSwgaW5mbz0zRE5vbmUgKToKKyAgICAgICAgam9iX3N0YXRlLmpv Yl93cmFwcGVyLm1hcmtfYXNfcmVzdWJtaXR0ZWQoIGluZm89M0RpbmZvICkKICAgICAgICAgaWYg bm90IHNlbGYuYXBwLmNvbmZpZy50cmFja19qb2JzX2luX2RhdGFiYXNlOgogICAgICAgICAgICAg am9iX3N0YXRlLmpvYl93cmFwcGVyLmNoYW5nZV9zdGF0ZSggbW9kZWwuSm9iLnN0YXRlcy5RVUVV RUQgKQogICAgICAgICAgICAgc2VsZi5hcHAuam9iX21hbmFnZXIuam9iX2hhbmRsZXIuZGlzcGF0 Y2hlci5wdXQoIGpvYl9zdGF0ZS5qb2I9Cl93cmFwcGVyICkKCmRpZmYgLXIgNjJjNTY0YmJmMDA2 MjhlZjEwNDlkNWFhMjI4YmYyZWFlNDI5MjAzNiAtciA1ZGQ2NTQ5YWFjM2EyOWIxNTYyZmQzZT0K NTMwNmMxYzY5ZWYwMDQ3YTcgbGliL2dhbGF4eS9qb2JzL3J1bm5lcnMvc3RhdGVfaGFuZGxlcnMv cmVzdWJtaXQucHkKLS0tIGEvbGliL2dhbGF4eS9qb2JzL3J1bm5lcnMvc3RhdGVfaGFuZGxlcnMv cmVzdWJtaXQucHkKKysrIGIvbGliL2dhbGF4eS9qb2JzL3J1bm5lcnMvc3RhdGVfaGFuZGxlcnMv cmVzdWJtaXQucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgbG9nZ2luZworCiBmcm9tIGdhbGF4 eSBpbXBvcnQgbW9kZWwKPTIwCj0yMApAQCAtMTMsMzEgKzE0LDQ1IEBACj0yMAo9MjAKIGRlZiBm YWlsdXJlKGFwcCwgam9iX3J1bm5lciwgam9iX3N0YXRlKToKLSAgICBpZiBnZXRhdHRyKCBqb2Jf c3RhdGUsICdydW5uZXJfc3RhdGUnLCBOb25lICkgYW5kIGpvYl9zdGF0ZS5ydW5uZXJfc3RhPQp0 ZSBpbiAoIGpvYl9zdGF0ZS5ydW5uZXJfc3RhdGVzLldBTExUSU1FX1JFQUNIRUQsIGpvYl9zdGF0 ZS5ydW5uZXJfc3RhdGVzLk09CkVNT1JZX0xJTUlUX1JFQUNIRUQgKToKLSAgICAgICAgIyBJbnRl cmNlcHQgam9icyB0aGF0IGhpdCB0aGUgd2FsbHRpbWUgYW5kIGhhdmUgYSB3YWxsdGltZSBvciBu b25zPQpwZWNpZmljIHJlc3VibWl0IGRlc3RpbmF0aW9uIGNvbmZpZ3VyZWQKKyAgICBpZiAoZ2V0 YXR0cihqb2Jfc3RhdGUsICdydW5uZXJfc3RhdGUnLCBOb25lKQorICAgICAgICBhbmQgam9iX3N0 YXRlLnJ1bm5lcl9zdGF0ZSBpbgorICAgICAgICAoam9iX3N0YXRlLnJ1bm5lcl9zdGF0ZXMuV0FM TFRJTUVfUkVBQ0hFRCwKKyAgICAgICAgIGpvYl9zdGF0ZS5ydW5uZXJfc3RhdGVzLk1FTU9SWV9M SU1JVF9SRUFDSEVEKSk6CisgICAgICAgICMgSW50ZXJjZXB0IGpvYnMgdGhhdCBoaXQgdGhlIHdh bGx0aW1lIGFuZCBoYXZlIGEgd2FsbHRpbWUgb3IKKyAgICAgICAgIyBub25zcGVjaWZpYyByZXN1 Ym1pdCBkZXN0aW5hdGlvbiBjb25maWd1cmVkCiAgICAgICAgIGZvciByZXN1Ym1pdCBpbiBqb2Jf c3RhdGUuam9iX2Rlc3RpbmF0aW9uLmdldCgncmVzdWJtaXQnKToKLSAgICAgICAgICAgIGlmIHJl c3VibWl0LmdldCgnY29uZGl0aW9uJywgTm9uZSkgYW5kIHJlc3VibWl0Wydjb25kaXRpb24nXSAh PQo9M0Qgam9iX3N0YXRlLnJ1bm5lcl9zdGF0ZToKLSAgICAgICAgICAgICAgICBjb250aW51ZSAj IFRoZXJlIGlzIGEgcmVzdWJtaXQgZGVmaW5lZCBmb3IgdGhlIGRlc3RpbmF0aW9uPQogYnV0IGl0 cyBjb25kaXRpb24gaXMgbm90IGZvciB3YWxsdGltZV9yZWFjaGVkCi0gICAgICAgICAgICBsb2cu aW5mbygiKCVzLyVzKSBKb2Igd2lsbCBiZSByZXN1Ym1pdHRlZCB0byAnJXMnIGJlY2F1c2UgJXMg YT0KdCB0aGUgJyVzJyBkZXN0aW5hdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgIGpvYl9zdGF0 ZS5qb2Jfd3JhcHBlci5qb2JfaWQsCi0gICAgICAgICAgICAgICAgICAgIGpvYl9zdGF0ZS5qb2Jf aWQsCi0gICAgICAgICAgICAgICAgICAgIHJlc3VibWl0WydkZXN0aW5hdGlvbiddLAotICAgICAg ICAgICAgICAgICAgICBNRVNTQUdFU1tqb2Jfc3RhdGUucnVubmVyX3N0YXRlXSwKLSAgICAgICAg ICAgICAgICAgICAgam9iX3N0YXRlLmpvYl93cmFwcGVyLmpvYl9kZXN0aW5hdGlvbi5pZCApCisg ICAgICAgICAgICBpZiAocmVzdWJtaXQuZ2V0KCdjb25kaXRpb24nLCBOb25lKSBhbmQgcmVzdWJt aXRbJ2NvbmRpdGlvbiddID0KIT0zRAorICAgICAgICAgICAgICAgIGpvYl9zdGF0ZS5ydW5uZXJf c3RhdGUpOgorICAgICAgICAgICAgICAgICMgVGhlcmUgaXMgYSByZXN1Ym1pdCBkZWZpbmVkIGZv ciB0aGUgZGVzdGluYXRpb24gYnV0CisgICAgICAgICAgICAgICAgIyBpdHMgY29uZGl0aW9uIGlz IG5vdCBmb3Igd2FsbHRpbWVfcmVhY2hlZAorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAg ICAgICAgICBsb2cuaW5mbygiKCVzLyVzKSBKb2Igd2lsbCBiZSByZXN1Ym1pdHRlZCB0byAnJXMn IGJlY2F1c2UgJXMgYT0KdCAiCisgICAgICAgICAgICAgICAgICAgICAidGhlICclcycgZGVzdGlu YXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgam9iX3N0YXRlLmpvYl93cmFwcGVyLmpvYl9p ZCwKKyAgICAgICAgICAgICAgICAgICAgIGpvYl9zdGF0ZS5qb2JfaWQsCisgICAgICAgICAgICAg ICAgICAgICByZXN1Ym1pdFsnZGVzdGluYXRpb24nXSwKKyAgICAgICAgICAgICAgICAgICAgIE1F U1NBR0VTW2pvYl9zdGF0ZS5ydW5uZXJfc3RhdGVdLAorICAgICAgICAgICAgICAgICAgICAgam9i X3N0YXRlLmpvYl93cmFwcGVyLmpvYl9kZXN0aW5hdGlvbi5pZCApCiAgICAgICAgICAgICAjIGZl dGNoIEpvYkRlc3RpbmF0aW9uIGZvciB0aGUgaWQgb3IgdGFnCi0gICAgICAgICAgICBuZXdfZGVz dGluYXRpb24gPTNEIGFwcC5qb2JfY29uZmlnLmdldF9kZXN0aW5hdGlvbihyZXN1Ym1pdFsnZD0K ZXN0aW5hdGlvbiddKQorICAgICAgICAgICAgbmV3X2Rlc3RpbmF0aW9uID0zRCBhcHAuam9iX2Nv bmZpZy5nZXRfZGVzdGluYXRpb24oCisgICAgICAgICAgICAgICAgcmVzdWJtaXRbJ2Rlc3RpbmF0 aW9uJ10pCiAgICAgICAgICAgICAjIFJlc29sdmUgZHluYW1pYyBpZiBuZWNlc3NhcnkKLSAgICAg ICAgICAgIG5ld19kZXN0aW5hdGlvbiA9M0Qgam9iX3N0YXRlLmpvYl93cmFwcGVyLmpvYl9ydW5u ZXJfbWFwcGVyLmNhPQpjaGVfam9iX2Rlc3RpbmF0aW9uKCBuZXdfZGVzdGluYXRpb24gKQorICAg ICAgICAgICAgbmV3X2Rlc3RpbmF0aW9uID0zRCAoam9iX3N0YXRlLmpvYl93cmFwcGVyLmpvYl9y dW5uZXJfbWFwcGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhY2hlX2pvYl9k ZXN0aW5hdGlvbihuZXdfZGVzdGluYXRpb24pKQogICAgICAgICAgICAgIyBSZXNldCBqb2Igc3Rh dGUKICAgICAgICAgICAgIGpvYiA9M0Qgam9iX3N0YXRlLmpvYl93cmFwcGVyLmdldF9qb2IoKQog ICAgICAgICAgICAgaWYgcmVzdWJtaXQuZ2V0KCdoYW5kbGVyJywgTm9uZSk6Ci0gICAgICAgICAg ICAgICAgbG9nLmRlYnVnKCcoJXMvJXMpIEpvYiByZWFzc2lnbmVkIHRvIGhhbmRsZXIgJXMnLCBq b2Jfc3RhdD0KZS5qb2Jfd3JhcHBlci5qb2JfaWQsIGpvYl9zdGF0ZS5qb2JfaWQsIHJlc3VibWl0 WydoYW5kbGVyJ10pCisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCcoJXMvJXMpIEpvYiByZWFz c2lnbmVkIHRvIGhhbmRsZXIgJXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBqb2Jfc3Rh dGUuam9iX3dyYXBwZXIuam9iX2lkLCBqb2Jfc3RhdGUuam9iX2lkLAorICAgICAgICAgICAgICAg ICAgICAgICAgICByZXN1Ym1pdFsnaGFuZGxlciddKQogICAgICAgICAgICAgICAgIGpvYi5zZXRf aGFuZGxlcihyZXN1Ym1pdFsnaGFuZGxlciddKQogICAgICAgICAgICAgICAgIGpvYl9ydW5uZXIu c2Ffc2Vzc2lvbi5hZGQoIGpvYiApCiAgICAgICAgICAgICAgICAgIyBJcyB0aGlzIHNhZmUgdG8g ZG8gaGVyZT8KICAgICAgICAgICAgICAgICBqb2JfcnVubmVyLnNhX3Nlc3Npb24uZmx1c2goKQot ICAgICAgICAgICAgIyBDYWNoZSB0aGUgZGVzdGluYXRpb24gdG8gcHJldmVudCByZXJ1bm5pbmcg ZHluYW1pYyBhZnRlciByZXM9CnVibWl0Ci0gICAgICAgICAgICBqb2Jfc3RhdGUuam9iX3dyYXBw ZXIuam9iX3J1bm5lcl9tYXBwZXIuY2FjaGVkX2pvYl9kZXN0aW5hdGlvbj0KID0zRCBuZXdfZGVz dGluYXRpb24KKyAgICAgICAgICAgICMgQ2FjaGUgdGhlIGRlc3RpbmF0aW9uIHRvIHByZXZlbnQg cmVydW5uaW5nIGR5bmFtaWMgYWZ0ZXIKKyAgICAgICAgICAgICMgcmVzdWJtaXQKKyAgICAgICAg ICAgIGpvYl9zdGF0ZS5qb2Jfd3JhcHBlci5qb2JfcnVubmVyX21hcHBlciBcCisgICAgICAgICAg ICAgICAgLmNhY2hlZF9qb2JfZGVzdGluYXRpb24gPTNEIG5ld19kZXN0aW5hdGlvbgogICAgICAg ICAgICAgam9iX3N0YXRlLmpvYl93cmFwcGVyLnNldF9qb2JfZGVzdGluYXRpb24obmV3X2Rlc3Rp bmF0aW9uKQogICAgICAgICAgICAgIyBDbGVhciBleHRlcm5hbCBJRCAoc3RhdGUgY2hhbmdlIGJl bG93IGZsdXNoZXMgdGhlIGNoYW5nZSkKICAgICAgICAgICAgIGpvYi5qb2JfcnVubmVyX2V4dGVy bmFsX2lkID0zRCBOb25lCkBAIC00NSw1ICs2MCw3IEBACiAgICAgICAgICAgICBpZiBqb2IucGFy YW1zIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgam9iLnBhcmFtcyA9M0Qge30KICAgICAgICAg ICAgIGpvYl9zdGF0ZS5ydW5uZXJfc3RhdGVfaGFuZGxlZCA9M0QgVHJ1ZQotICAgICAgICAgICAg am9iX3J1bm5lci5tYXJrX2FzX3Jlc3VibWl0dGVkKCBqb2Jfc3RhdGUgKQorICAgICAgICAgICAg aW5mbyA9M0QgIlRoaXMgam9iIHdhcyByZXN1Ym1pdHRlZCB0byB0aGUgcXVldWUgYmVjYXVzZSAl cyBvbiA9Cml0cyAiIFwKKyAgICAgICAgICAgICAgICAgICAiY29tcHV0ZSByZXNvdXJjZS4iICUg TUVTU0FHRVNbam9iX3N0YXRlLnJ1bm5lcl9zdGF0ZV0KKyAgICAgICAgICAgIGpvYl9ydW5uZXIu bWFya19hc19yZXN1Ym1pdHRlZChqb2Jfc3RhdGUsIGluZm89M0RpbmZvKQogICAgICAgICAgICAg cmV0dXJuCgpkaWZmIC1yIDYyYzU2NGJiZjAwNjI4ZWYxMDQ5ZDVhYTIyOGJmMmVhZTQyOTIwMzYg LXIgNWRkNjU0OWFhYzNhMjliMTU2MmZkM2U9CjUzMDZjMWM2OWVmMDA0N2E3IGxpYi9nYWxheHkv bW9kZWwvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS9tb2RlbC9fX2luaXRfXy5weQorKysg Yi9saWIvZ2FsYXh5L21vZGVsL19faW5pdF9fLnB5CkBAIC0xMzM1LDkgKzEzMzUsOCBAQAogICAg ICAgICAgICAgICAgICAgICBESVNDQVJERUQgPTNEICdkaXNjYXJkZWQnLAogICAgICAgICAgICAg ICAgICAgICBQQVVTRUQgPTNEICdwYXVzZWQnLAogICAgICAgICAgICAgICAgICAgICBTRVRUSU5H X01FVEFEQVRBID0zRCAnc2V0dGluZ19tZXRhZGF0YScsCi0gICAgICAgICAgICAgICAgICAgIEZB SUxFRF9NRVRBREFUQSA9M0QgJ2ZhaWxlZF9tZXRhZGF0YScsCi0gICAgICAgICAgICAgICAgICAg IFJFU1VCTUlUVEVEID0zRCAncmVzdWJtaXR0ZWQnICkKLSAgICAjIGZhaWxlZF9tZXRhZGF0YSBh bmQgcmVzdWJtaXR0ZWQgYXJlIG9ubHkgdmFsaWQgYXMgRGF0YXNldEluc3RhbmNlIHN0PQphdGVz IGN1cnJlbnRseQorICAgICAgICAgICAgICAgICAgICBGQUlMRURfTUVUQURBVEEgPTNEICdmYWls ZWRfbWV0YWRhdGEnKQorICAgICMgZmFpbGVkX21ldGFkYXRhIGlzIG9ubHkgdmFsaWQgYXMgRGF0 YXNldEluc3RhbmNlIHN0YXRlIGN1cnJlbnRseQo9MjAKICAgICBub25fcmVhZHlfc3RhdGVzID0z RCAoCiAgICAgICAgIHN0YXRlcy5VUExPQUQsCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4 eS9nYWxheHktY2VudHJhbC9jb21taXRzLzY1YjIzMzBiODIzYy8KQ2hhbmdlc2V0OiAgIDY1YjIz MzBiODIzYwpCcmFuY2g6ICAgICAgcmVsZWFzZV8xNS4wMwpVc2VyOiAgICAgICAgY2FybGZlYmVy aGFyZApEYXRlOiAgICAgICAgMjAxNS0wMy0zMSAyMjowNTo1MCswMDowMApTdW1tYXJ5OiAgICAg Rml4IHRvIGJhNDQ0NTI6IHByb3Blcmx5IHNjb3BlIG1vZF9pY29uX2J0biBpbiBkZWZpbmUgbm90 IHJlcXU9CmlyZQpBZmZlY3RlZCAjOiAgMyBmaWxlcwoKZGlmZiAtciA1ZGQ2NTQ5YWFjM2EyOWIx NTYyZmQzZTUzMDZjMWM2OWVmMDA0N2E3IC1yIDY1YjIzMzBiODIzYzc2MTEzNjliOTdiPQowODI5 MmE2Yzg2NGRlZTExYyBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvdml6L2NpcmNzdGVyLmpzCi0tLSBh L2NsaWVudC9nYWxheHkvc2NyaXB0cy92aXovY2lyY3N0ZXIuanMKKysrIGIvY2xpZW50L2dhbGF4 eS9zY3JpcHRzL3Zpei9jaXJjc3Rlci5qcwpAQCAtMSwxNiArMSwyMCBAQAogLy8gbG9hZCByZXF1 aXJlZCBsaWJyYXJpZXMKLXJlcXVpcmUoCi1bCityZXF1aXJlKFsKICAgICAndXRpbHMvdXRpbHMn LAotICAgICdtdmMvdWkvaWNvbi1idXR0b24nLAotICAgICdsaWJzL2ZhcmJ0YXN0aWMnLAotXSwg ZnVuY3Rpb24obW9kX3V0aWxzLCBtb2RfaWNvbl9idG4pCitdLCBmdW5jdGlvbihtb2RfdXRpbHMp CiB7CiAgICAgLy8gbG9hZCBjc3MKICAgICBtb2RfdXRpbHMuY3NzTG9hZEZpbGUoInN0YXRpYy9z dHlsZS9jaXJjc3Rlci5jc3MiKTsKIH0pOwo9MjAKLWRlZmluZShbImxpYnMvdW5kZXJzY29yZSIs ICJsaWJzL2QzIiwgInZpei92aXN1YWxpemF0aW9uIiwgInV0aWxzL2NvbmZpZyJdPQosIGZ1bmN0 aW9uKF8sIGQzLCB2aXN1YWxpemF0aW9uLCBjb25maWcpIHsKK2RlZmluZShbCisgICAgImxpYnMv dW5kZXJzY29yZSIsCisgICAgImxpYnMvZDMiLAorICAgICJ2aXovdmlzdWFsaXphdGlvbiIsCisg ICAgInV0aWxzL2NvbmZpZyIsCisgICAgJ212Yy91aS9pY29uLWJ1dHRvbicsCisgICAgJ2xpYnMv ZmFyYnRhc3RpYycKK10sIGZ1bmN0aW9uKF8sIGQzLCB2aXN1YWxpemF0aW9uLCBjb25maWcsIG1v ZF9pY29uX2J0bikgewo9MjAKIC8qKgogICogVXRpbGl0eSBjbGFzcyBmb3Igd29ya2luZyB3aXRo IFNWRy4KQEAgLTcxLDcgKzc1LDcgQEAKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB0aWNr X2Nvb3JkcyA9M0QgWzEsIDAsIDQsIDBdOwogICAgICAgICAgICAgdGV4dF9jb29yZHMgPTNEIFsw LCA0LCAiLjM1ZW0iLCAiIl07Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgIH0KPTIwCiAgICAg ICAgIHRpY2tzLmFwcGVuZCgibGluZSIpCkBAIC04MCw3ICs4NCw3IEBACiAgICAgICAgICAgICAg LmF0dHIoIngyIiwgdGlja19jb29yZHNbMl0pCiAgICAgICAgICAgICAgLmF0dHIoInkxIiwgdGlj a19jb29yZHNbM10pCiAgICAgICAgICAgICAgLnN0eWxlKCJzdHJva2UiLCAiIzAwMCIpOwotICAg ICAgID0yMAorCiAgICAgICAgIHJldHVybiB0aWNrcy5hcHBlbmQoInRleHQiKQogICAgICAgICAg ICAgICAgICAgICAuYXR0cigieCIsIHRleHRfY29vcmRzWzBdKQogICAgICAgICAgICAgICAgICAg ICAuYXR0cigieSIsIHRleHRfY29vcmRzWzFdKQpAQCAtOTgsMTEgKzEwMiwxMSBAQAogICAgICAg ICAvLyBVc2UgZGVmYXVsdCBvZiAyIHNpZy4gZGlnaXRzLgogICAgICAgICBpZiAoc2lnRGlnaXRz ID0zRD0zRD0zRCB1bmRlZmluZWQpCiAgICAgICAgICAgICBzaWdEaWdpdHMgPTNEIDI7Ci0gICAg ICA9MjAKKwogICAgICAgICAvLyBWZXJpZnkgaW5wdXQgbnVtYmVyCiAgICAgICAgIGlmIChudW0g PTNEPTNEPTNEIG51bGwpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgID0yMAorCiAg ICAgICAgIC8vIENhbGN1bGF0ZSByZXR1cm4gdmFsdWUKICAgICAgICAgdmFyIHJ2YWwgPTNEIG51 bGw7CiAgICAgICAgIGlmIChNYXRoLmFicyhudW0pIDwgMSkgewpAQCAtMTQxLDcgKzE0NSw3IEBA CiAgKi8KIHZhciBDaXJjc3RlclZpZXcgPTNEIEJhY2tib25lLlZpZXcuZXh0ZW5kKHsKICAgICBj bGFzc05hbWU6ICdjaXJjc3RlcicsCi0gICA9MjAKKwogICAgIGluaXRpYWxpemU6IGZ1bmN0aW9u KG9wdGlvbnMpIHsKICAgICAgICAgdGhpcy5nZW5vbWUgPTNEIG9wdGlvbnMuZ2Vub21lOwogICAg ICAgICB0aGlzLmxhYmVsX2FyY19oZWlnaHQgPTNEIDUwOwpAQCAtMTg4LDcgKzE5Miw3IEBACiAg ICAgICAgICAgICB0cmFja19nYXAgPTNEIHRoaXMubW9kZWwuZ2V0KCdjb25maWcnKS5nZXRfdmFs dWUoJ3RyYWNrX2dhcCcpLAogICAgICAgICAgICAgLy8gU3VidHJhY3QgMjAgdG8gbWFrZSBzdXJl IGNocm9tIGxhYmVscyBhcmUgb24gc2NyZWVuLgogICAgICAgICAgICAgbWluX2RpbWVuc2lvbiA9 M0QgTWF0aC5taW4odGhpcy4kZWwud2lkdGgoKSwgdGhpcy4kZWwuaGVpZ2h0KCk9CikgLSAyMCwK LSAgICAgICAgICAgIC8vIENvbXB1dGUgcmFkaXVzIHN0YXJ0IGJhc2VkIG9uIG1vZGVsLCB3aWxs IGJlIGNlbnRlcmVkPTIwCisgICAgICAgICAgICAvLyBDb21wdXRlIHJhZGl1cyBzdGFydCBiYXNl ZCBvbiBtb2RlbCwgd2lsbCBiZSBjZW50ZXJlZAogICAgICAgICAgICAgLy8gYW5kIGZpdCBlbnRp cmVseSBpbnNpZGUgZWxlbWVudCBieSBkZWZhdWx0LgogICAgICAgICAgICAgcmFkaXVzX3N0YXJ0 ID0zRCBtaW5fZGltZW5zaW9uIC8gMiAtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ly Y3VsYXJfdHJhY2tzLmxlbmd0aCAqIChkYXRhc2V0X2FyY19oZWlnaHQgKz0KIHRyYWNrX2dhcCkg KwpAQCAtMTk4LDE0ICsyMDIsMTQgQEAKPTIwCiAgICAgICAgICAgICAvLyBDb21wdXRlIHJhbmdl IG9mIHRyYWNrIHN0YXJ0aW5nIHJhZGlpLgogICAgICAgICAgICAgdHJhY2tzX3N0YXJ0X3JhZGlp ID0zRCBkMy5yYW5nZShyYWRpdXNfc3RhcnQsIG1pbl9kaW1lbnNpb24gLyA9CjIsIGRhdGFzZXRf YXJjX2hlaWdodCArIHRyYWNrX2dhcCk7Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgIC8vIE1h cCBmcm9tIHRyYWNrIHN0YXJ0IHRvIGJvdW5kcy4KICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXM7 CiAgICAgICAgIHJldHVybiBfLm1hcCh0cmFja3Nfc3RhcnRfcmFkaWksIGZ1bmN0aW9uKHJhZGl1 cykgewogICAgICAgICAgICAgcmV0dXJuIFtyYWRpdXMsIHJhZGl1cyArIGRhdGFzZXRfYXJjX2hl aWdodF07CiAgICAgICAgIH0pOwogICAgIH0sCi0gICA9MjAKKwogICAgIC8qKgogICAgICAqIFJl bmRlcnMgY2lyY3VsYXIgdHJhY2tzLCBjaG9yZCB0cmFja3MsIGFuZCBsYWJlbCB0cmFja3MuCiAg ICAgICovCkBAIC0yNTQsNyArMjU4LDcgQEAKICAgICAgICAgICAgICAgICB9KSkKICAgICAgICAg ICAgICAgICAuYXR0cigidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgd2lkdGggLyAyICsgIiwi ICsgaGVpZ2h0PQogLyAyICsgIikiKQogICAgICAgICAgICAgICAuYXBwZW5kKCdzdmc6ZycpLmF0 dHIoJ2NsYXNzJywgJ3RyYWNrcycpOwotICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAgLy8g LS0gUmVuZGVyIGNpcmN1bGFyIHRyYWNrcy4gLS0KPTIwCiAgICAgICAgIC8vIENyZWF0ZSBhIHZp ZXcgZm9yIGVhY2ggdHJhY2sgaW4gdGhlIHZpc3VhbGl6YXRpb24gYW5kIHJlbmRlci4KQEAgLTI2 NiwxMiArMjcwLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGdlbm9tZTogc2VsZi5nZW5vbWUs CiAgICAgICAgICAgICAgICAgICAgIHRvdGFsX2dhcDogdG90YWxfZ2FwCiAgICAgICAgICAgICAg ICAgfSk7Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAgICB2aWV3LnJlbmRlcigpOwotICAg ICAgICAgICA9MjAKKwogICAgICAgICAgICAgcmV0dXJuIHZpZXc7CiAgICAgICAgIH0pOwotICAg ICAgID0yMAorCiAgICAgICAgIC8vIC0tIFJlbmRlciBjaG9yZHMgdHJhY2tzLiAtLQo9MjAKICAg ICAgICAgdGhpcy5jaG9yZHNfdmlld3MgPTNEIGNob3Jkc190cmFja3MubWFwKGZ1bmN0aW9uKHRy YWNrKSB7CkBAIC0yODksMTAgKzI5MywxMCBAQAogICAgICAgICB9KTsKPTIwCiAgICAgICAgIC8v IC0tIFJlbmRlciBsYWJlbCB0cmFjay4gLS0KLSAgICAgICA9MjAKKwogICAgICAgICAvLyBUcmFj ayBib3VuZHMgYXJlOgogICAgICAgICAvLyAoYSkgb3V0ZXIgcmFkaXVzIG9mIGxhc3QgY2lyY3Vs YXIgdHJhY2s7Ci0gICAgICAgIC8vIChiKT0yMAorICAgICAgICAvLyAoYikKICAgICAgICAgdmFy IG91dGVybW9zdF9yYWRpdXMgPTNEIHRoaXMuY2lyY3VsYXJfdmlld3NbdGhpcy5jaXJjdWxhcl92 aWV3cy5sPQplbmd0aC0xXS5yYWRpdXNfYm91bmRzWzFdLAogICAgICAgICAgICAgdHJhY2tfYm91 bmRzID0zRCBbCiAgICAgICAgICAgICAgICAgb3V0ZXJtb3N0X3JhZGl1cywKQEAgLTMwNSw3ICsz MDksNyBAQAogICAgICAgICAgICAgZ2Vub21lOiBzZWxmLmdlbm9tZSwKICAgICAgICAgICAgIHRv dGFsX2dhcDogdG90YWxfZ2FwCiAgICAgICAgIH0pOwotICAgICAgID0yMAorCiAgICAgICAgIHRo aXMubGFiZWxfdHJhY2tfdmlldy5yZW5kZXIoKTsKICAgICB9LAo9MjAKQEAgLTM1Niw3ICszNjAs NyBAQAo9MjAKICAgICAgICAgICAgIC8vIFVwZGF0ZSBsYWJlbCB0cmFjay4KICAgICAgICAgICAg IC8qCi0gICAgICAgICAgICBGSVhNRTogc2hvdWxkIG5ldmVyIGhhdmUgdG8gdXBkYXRlIGxhYmVs IHRyYWNrIGJlY2F1c2UgdmlzIGFsdz0KYXlzIGV4cGFuZHMgdG8gZml0IGFyZWE9MjAKKyAgICAg ICAgICAgIEZJWE1FOiBzaG91bGQgbmV2ZXIgaGF2ZSB0byB1cGRhdGUgbGFiZWwgdHJhY2sgYmVj YXVzZSB2aXMgYWx3PQpheXMgZXhwYW5kcyB0byBmaXQgYXJlYQogICAgICAgICAgICAgd2l0aGlu IGxhYmVsIHRyYWNrLgogICAgICAgICAgICAgdmFyIHRyYWNrX2JvdW5kcyA9M0QgbmV3X3RyYWNr X2JvdW5kc1sgbmV3X3RyYWNrX2JvdW5kcy5sZW5ndGg9Ci0xIF07CiAgICAgICAgICAgICB0cmFj a19ib3VuZHNbMV0gPTNEIHRyYWNrX2JvdW5kc1swXTsKQEAgLTM3Myw3ICszNzcsNyBAQAogICAg ICAgICB2YXIgdHJhY2tfdmlldyA9M0QgdGhpcy5jaXJjdWxhcl92aWV3c1tvcHRpb25zLmluZGV4 XTsKICAgICAgICAgdGhpcy5jaXJjdWxhcl92aWV3cy5zcGxpY2Uob3B0aW9ucy5pbmRleCwgMSk7 CiAgICAgICAgIHRyYWNrX3ZpZXcuJGVsLnJlbW92ZSgpOwotICAgICAgID0yMAorCiAgICAgICAg IC8vIFJlY29tcHV0ZSBhbmQgdXBkYXRlIHRyYWNrIGJvdW5kcy4KICAgICAgICAgdmFyIG5ld190 cmFja19ib3VuZHMgPTNEIHRoaXMuZ2V0X3RyYWNrc19ib3VuZHMoKTsKICAgICAgICAgXy5lYWNo KHRoaXMuY2lyY3VsYXJfdmlld3MsIGZ1bmN0aW9uKHRyYWNrX3ZpZXcsIGkpIHsKQEAgLTM5Miw3 ICszOTYsNyBAQAogICAgICAgICBfLmVhY2godGhpcy5jaG9yZHNfdmlld3MsIGZ1bmN0aW9uKHRy YWNrX3ZpZXcpIHsKICAgICAgICAgICAgIHRyYWNrX3ZpZXcudXBkYXRlX3JhZGl1c19ib3VuZHMo bmV3X3RyYWNrX2JvdW5kc1swXSk7CiAgICAgICAgIH0pOwotICAgICAgID0yMAorCiAgICAgfQog fSk7Cj0yMApAQCAtNDU1LDcgKzQ1OSw3IEBACj0yMAogICAgICAgICAgICAgLy8gQXBwZW5kIHRp dGxlcyB0byBwYXRocy4KICAgICAgICAgICAgIGNocm9tc19wYXRocy5hcHBlbmQoInRpdGxlIiku dGV4dChmdW5jdGlvbihkKSB7IHJldHVybiBkLmRhdGEuPQpjaHJvbTsgfSk7Ci0gICAgICAgICAg ID0yMAorCiAgICAgICAgIC8vIC0tIFJlbmRlciB0cmFjayBkYXRhIGFuZCwgd2hlbiB0cmFjayBk YXRhIGlzIHJlbmRlcmVkLCBhcHBseSBwcj0KZWZlcmVuY2VzIGFuZCB1cGRhdGUgY2hyb21fZWx0 cyBmaWxsLiAtLQo9MjAKICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXMsCkBAIC00OTAsNyArNDk0 LDcgQEAKICAgICAgICAgdmFyIG5ld19kID0zRCBkMy5zdmcuYXJjKCkKICAgICAgICAgICAgICAg ICAgICAgICAgIC5pbm5lclJhZGl1cyh0aGlzLnJhZGl1c19ib3VuZHNbMF0pCiAgICAgICAgICAg ICAgICAgICAgICAgICAub3V0ZXJSYWRpdXModGhpcy5yYWRpdXNfYm91bmRzWzFdKTsKLSAgICAg ICA9MjAKKwogICAgICAgICB0aGlzLnBhcmVudF9lbHQuc2VsZWN0QWxsKCdnPnBhdGguY2hyb20t YmFja2dyb3VuZCcpLnRyYW5zaXRpb24oKS49CmR1cmF0aW9uKDEwMDApLmF0dHIoJ2QnLCBuZXdf ZCk7Cj0yMAogICAgICAgICB0aGlzLl90cmFuc2l0aW9uX2Nocm9tX2RhdGEoKTsKQEAgLTUxMSw3 ICs1MTUsNyBAQAogICAgICAgICB9Cj0yMAogICAgICAgICAvLyAtLSBTY2FsZSBpbmNyZWFzZWQs IHNvIHJlbmRlciB2aXNpYmxlIGRhdGEgd2l0aCBtb3JlIGRldGFpbC4gLS0KLSAgICAgICA9MjAK KwogICAgICAgICB2YXIgc2VsZiA9M0QgdGhpcywKICAgICAgICAgICAgIHV0aWxzID0zRCBuZXcg U1ZHVXRpbHMoKTsKPTIwCkBAIC01MzksNyArNTQzLDcgQEAKICAgICAgICAgICAgICQud2hlbihk YXRhX2RlZmVycmVkKS50aGVuKGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgICAgICAvLyBS ZW1vdmUgY3VycmVudCBkYXRhIHBhdGguCiAgICAgICAgICAgICAgICAgcGF0aF9lbHQucmVtb3Zl KCk7Ci0gICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBkYXRh IGJvdW5kcyB3aXRoIG5ldyBkYXRhLgogICAgICAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9kYXRh X2JvdW5kcygpOwo9MjAKQEAgLTU5OCwxMiArNjAyLDEyIEBACiAgICAgX3RyYW5zaXRpb25fbGFi ZWxzOiBmdW5jdGlvbigpIHt9LAo9MjAKICAgICAvKioKLSAgICAgKiBVcGRhdGUgZGF0YSBib3Vu ZHMuIElmIHRoZXJlIGFyZSBuZXdfYm91bmRzLCB1c2UgdGhlbTsgb3RoZXJ3aXNlIHVzPQplPTIw CisgICAgICogVXBkYXRlIGRhdGEgYm91bmRzLiBJZiB0aGVyZSBhcmUgbmV3X2JvdW5kcywgdXNl IHRoZW07IG90aGVyd2lzZSB1c2UKICAgICAgKiBkZWZhdWx0IGRhdGEgYm91bmRzLgogICAgICAq LwogICAgIF91cGRhdGVfZGF0YV9ib3VuZHM6IGZ1bmN0aW9uKG5ld19ib3VuZHMpIHsKICAgICAg ICAgdmFyIG9sZF9ib3VuZHMgPTNEIHRoaXMuZGF0YV9ib3VuZHM7Ci0gICAgICAgIHRoaXMuZGF0 YV9ib3VuZHMgPTNEIG5ld19ib3VuZHMgfHw9MjAKKyAgICAgICAgdGhpcy5kYXRhX2JvdW5kcyA9 M0QgbmV3X2JvdW5kcyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRfZGF0 YV9ib3VuZHModGhpcy50cmFjay5nZXQoJ2RhdGFfbWFuYWc9CmVyJykuZ2V0X2dlbm9tZV93aWRl X2RhdGEodGhpcy5nZW5vbWUpKTsKICAgICAgICAgdGhpcy5fdHJhbnNpdGlvbl9jaHJvbV9kYXRh KCk7CiAgICAgfSwKQEAgLTYyNCw3ICs2MjgsNyBAQAo9MjAKICAgICAgICAgICAgIC8vIFNldCBt aW4sIG1heCB2YWx1ZSBpbiBjb25maWcgc28gdGhhdCB0aGV5IGNhbiBiZSBhZGp1c3RlZC4gPQpN YWtlIHRoaXMgc2lsZW50CiAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoZXNlIGF0dHJpYnV0ZXMg YXJlIHdhdGNoZWQgZm9yIGNoYW5nZXMgYW5kIHRoZSB2aT0KeiBpcyB1cGRhdGVkCi0gICAgICAg ICAgICAvLyBhY2NvcmRpbmdseSAoc2V0IHVwIGluIGluaXRpYWxpemUpLiBCZWNhdXNlIHdlIGFy ZSBzZXR0aW5nID0KdXAsIHdlIGRvbid0IHdhbnQ9MjAKKyAgICAgICAgICAgIC8vIGFjY29yZGlu Z2x5IChzZXQgdXAgaW4gaW5pdGlhbGl6ZSkuIEJlY2F1c2Ugd2UgYXJlIHNldHRpbmcgPQp1cCwg d2UgZG9uJ3Qgd2FudAogICAgICAgICAgICAgLy8gdGhlIHdhdGNoIHRvIHRyaWdnZXIgZXZlbnRz IGhlcmUuCiAgICAgICAgICAgICB0cmFjay5nZXQoJ2NvbmZpZycpLnNldF92YWx1ZSgnbWluX3Zh bHVlJywgc2VsZi5kYXRhX2JvdW5kc1swXT0KLCB7c2lsZW50OiB0cnVlfSk7CiAgICAgICAgICAg ICB0cmFjay5nZXQoJ2NvbmZpZycpLnNldF92YWx1ZSgnbWF4X3ZhbHVlJywgc2VsZi5kYXRhX2Jv dW5kc1sxXT0KLCB7c2lsZW50OiB0cnVlfSk7CkBAIC02NjAsNyArNjY0LDcgQEAKICAgICBfZ2V0 X3BhdGhfZnVuY3Rpb246IGZ1bmN0aW9uKGNocm9tX2FyYywgY2hyb21fZGF0YSkge30sCj0yMAog ICAgIC8qKgotICAgICAqIFJldHVybnMgYXJjIGxheW91dHMgZm9yIGdlbm9tZSdzIGNocm9tb3Nv bWVzL2NvbnRpZ3MuIEFyY3MgYXJlIGFycmE9Cm5nZWQgaW4gYSBjaXJjbGU9MjAKKyAgICAgKiBS ZXR1cm5zIGFyYyBsYXlvdXRzIGZvciBnZW5vbWUncyBjaHJvbW9zb21lcy9jb250aWdzLiBBcmNz IGFyZSBhcnJhPQpuZ2VkIGluIGEgY2lyY2xlCiAgICAgICogc2VwYXJhdGVkIGJ5IGdhcHMuCiAg ICAgICovCiAgICAgX2Nocm9tc19sYXlvdXQ6IGZ1bmN0aW9uKCkgewpAQCAtNzAwLDE0ICs3MDQs MTQgQEAKICAgICAgKiBSZW5kZXIgbGFiZWxzLgogICAgICAqLwogICAgIF9yZW5kZXJfZGF0YTog ZnVuY3Rpb24oc3ZnKSB7Ci0gICAgICAgIC8vIC0tIEFkZCBjaHJvbW9zb21lIGxhYmVsIHdoZXJl IGl0IHdpbGwgZml0OyBhbiBhbHRlcm5hdGl2ZSBsYWJlbD0KaW5nIG1lY2hhbmlzbT0yMAorICAg ICAgICAvLyAtLSBBZGQgY2hyb21vc29tZSBsYWJlbCB3aGVyZSBpdCB3aWxsIGZpdDsgYW4gYWx0 ZXJuYXRpdmUgbGFiZWw9CmluZyBtZWNoYW5pc20KICAgICAgICAgLy8gd291bGQgYmUgbmljZSBm b3Igc21hbGwgY2hyb21vc29tZXMuIC0tCiAgICAgICAgIHZhciBzZWxmID0zRCB0aGlzLAogICAg ICAgICAgICAgY2hyb21fYXJjcyA9M0Qgc3ZnLnNlbGVjdEFsbCgnZycpOwo9MjAKICAgICAgICAg Y2hyb21fYXJjcy5zZWxlY3RBbGwoJ3BhdGgnKQogICAgICAgICAgICAgLmF0dHIoJ2lkJywgZnVu Y3Rpb24oZCkgeyByZXR1cm4gJ2xhYmVsLScgKyBkLmRhdGEuY2hyb207IH0pOwotICAgICAgICAg PTIwCisKICAgICAgICAgY2hyb21fYXJjcy5hcHBlbmQoInN2Zzp0ZXh0IikKICAgICAgICAgICAg IC5maWx0ZXIoZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgICAgIHJldHVybiBkLmVuZEFuZ2xl IC0gZC5zdGFydEFuZ2xlID4gc2VsZi5taW5fYXJjX2xlbjsKQEAgLTg1NywxMiArODYxLDEyIEBA CiAgICAgICAgICAgICAgICAgcmV0dXJuICJyb3RhdGUoOTApIjsKICAgICAgICAgICAgIH07Cj0y MAotICAgICAgICAvLyBGSVhNRTo9MjAKKyAgICAgICAgLy8gRklYTUU6CiAgICAgICAgIC8vICgx KSB1c2luZyBtaW5fbWF4IGNsYXNzIGJlbG93IGlzIG5lZWRlZCBmb3IgX3VwZGF0ZV9taW5fbWF4 LCB3aD0KaWNoIGNvdWxkIGJlIGltcHJvdmVkLgogICAgICAgICAvLyAoMikgc2hvd2luZyBjb25m aWcgb24gdGljayBjbGljayBzaG91bGQgYmUgcmVwbGFjZWQgYnkgcHJvcGVyIHQ9CnJhY2sgY29u ZmlnIGljb24uCj0yMAogICAgICAgICAvLyBEcmF3IG1pbiwgbWF4IG9uIGZpcnN0IGNocm9tIG9u bHkuCi0gICAgICAgIHZhciB0aWNrcyA9M0QgdGhpcy5kcmF3VGlja3ModGhpcy5wYXJlbnRfZWx0 LCBbIHRoaXMuY2hyb21zX2xheW91dD0KWzBdIF0sPTIwCisgICAgICAgIHZhciB0aWNrcyA9M0Qg dGhpcy5kcmF3VGlja3ModGhpcy5wYXJlbnRfZWx0LCBbIHRoaXMuY2hyb21zX2xheW91dD0KWzBd IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFfYm91bmRz X3RpY2tzX2ZuKCksIHRleHRUcmFucz0KZm9ybSwgdHJ1ZSkKICAgICAgICAgICAgICAgICAgICAg ICAgIC5jbGFzc2VkKCdtaW5fbWF4JywgdHJ1ZSk7Cj0yMApAQCAtODcyLDcgKzg3Niw3IEBACiAg ICAgICAgICAgICAgICAgdmFyIHZpZXcgPTNEIG5ldyBjb25maWcuQ29uZmlnU2V0dGluZ0NvbGxl Y3Rpb25WaWV3KHsKICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbjogc2VsZi50cmFjay5n ZXQoJ2NvbmZpZycpCiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgdmlldy5y ZW5kZXJfaW5fbW9kYWwoJ0NvbmZpZ3VyZSBUcmFjaycpOz0yMAorICAgICAgICAgICAgICAgIHZp ZXcucmVuZGVyX2luX21vZGFsKCdDb25maWd1cmUgVHJhY2snKTsKICAgICAgICAgICAgIH0pOwog ICAgICAgICB9KTsKPTIwCkBAIC05NTEsNyArOTU1LDcgQEAKIHZhciBDaXJjc3RlckJpZ1dpZ1Ry YWNrVmlldyA9M0QgQ2lyY3N0ZXJRdWFudGl0YXRpdmVUcmFja1ZpZXcuZXh0ZW5kKHsKPTIwCiAg ICAgZ2V0X2RhdGFfYm91bmRzOiBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgIC8vIFNldCBtYXgg YWNyb3NzIGRhdGFzZXQgYnkgZXh0cmFjdGluZyBhbGwgdmFsdWVzLCBmbGF0dGVuaW5nIHRoZT0K bSBpbnRvIGE9MjAKKyAgICAgICAgLy8gU2V0IG1heCBhY3Jvc3MgZGF0YXNldCBieSBleHRyYWN0 aW5nIGFsbCB2YWx1ZXMsIGZsYXR0ZW5pbmcgdGhlPQptIGludG8gYQogICAgICAgICAvLyBzaW5n bGUgYXJyYXksIGFuZCBnZXR0aW5nIHRoaXJkIHF1YXJ0aWxlLgogICAgICAgICB2YXIgdmFsdWVz ID0zRCBfLmZsYXR0ZW4oIF8ubWFwKGRhdGEsIGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgIGlm IChkKSB7CkBAIC05NjUsOCArOTY5LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAg ICAgICAgICAgIH0KICAgICAgICAgfSkgKTsKLSAgICAgICA9MjAKLSAgICAgICAgLy8gRm9yIG1h eCwgdXNlIDk4JSBxdWFudGlsZSBpbiBhdHRlbXB0IHRvIGF2b2lkIHZlcnkgbGFyZ2UgdmFsdWVz PQouIEhvd2V2ZXIsIHRoaXMgbWF4IG1heSBiZSAwPTIwCisKKyAgICAgICAgLy8gRm9yIG1heCwg dXNlIDk4JSBxdWFudGlsZSBpbiBhdHRlbXB0IHRvIGF2b2lkIHZlcnkgbGFyZ2UgdmFsdWVzPQou IEhvd2V2ZXIsIHRoaXMgbWF4IG1heSBiZSAwCiAgICAgICAgIC8vIGZvciBzcGFyc2VseSBwb3B1 bGF0ZWQgZGF0YSwgc28gdXNlIG1heCBpbiB0aGF0IGNhc2UuCiAgICAgICAgIHJldHVybiBbIF8u bWluKHZhbHVlcyksIHRoaXMuX3F1YW50aWxlKHZhbHVlcywgMC45OCkgfHwgXy5tYXgodmFsdT0K ZXMpIF07CiAgICAgfQpAQCAtMTA2OCwxMyArMTA3MiwxMyBAQAogICAgICAgICAgICAgICAgIGdl bm9tZSAgICAgICAgICAgICAgOiBnZW5vbWUsCiAgICAgICAgICAgICAgICAgbW9kZWwgICAgICAg ICAgICAgICA6IHZpcwogICAgICAgICAgICAgfSk7Ci0gICAgICAgPTIwCisKICAgICAgICAgLy8g UmVuZGVyIHZpenVhbGl6YXRpb24KICAgICAgICAgdml6X3ZpZXcucmVuZGVyKCk7Ci0gICAgICAg PTIwCisKICAgICAgICAgLy8gc2V0dXAgdGl0bGUKICAgICAgICAgJCgnI2NlbnRlciAudW5pZmll ZC1wYW5lbC1oZWFkZXItaW5uZXInKS5hcHBlbmQoZ2FsYXh5X2NvbmZpZy5hcHAuPQp2aXpfY29u ZmlnLnRpdGxlICsgIiAiICsgZ2FsYXh5X2NvbmZpZy5hcHAudml6X2NvbmZpZy5kYmtleSk7Ci0g ICA9MjAKKwogICAgICAgICAvLyBzZXR1cCBtZW51CiAgICAgICAgIHZhciBtZW51ID0zRCBtb2Rf aWNvbl9idG4uY3JlYXRlX2ljb25fYnV0dG9uc19tZW51KFsKICAgICAgICAgewpAQCAtMTEwMCw3 ICsxMTA0LDcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBzaG93IHNhdmlu ZyBkaWFsb2cgYm94CiAgICAgICAgICAgICAgICAgR2FsYXh5Lm1vZGFsLnNob3coe3RpdGxlOiAi U2F2aW5nLi4uIiwgYm9keTogInByb2dyZXNzIiB9KTsKLSAgICA9MjAKKwogICAgICAgICAgICAg ICAgIC8vIHNlbmQgdG8gc2VydmVyCiAgICAgICAgICAgICAgICAgJC5hamF4KHsKICAgICAgICAg ICAgICAgICAgICAgdXJsOiBnYWxheHlfY29uZmlnLnJvb3QgKyAidmlzdWFsaXphdGlvbi9zYXZl IiwKQEAgLTExMzIsMTEgKzExMzYsMTEgQEAKICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRp b24gPTNEIGdhbGF4eV9jb25maWcucm9vdCArICJ2aXN1YWxpemF0aW9uL2xpPQpzdCI7CiAgICAg ICAgICAgICB9CiAgICAgICAgIH1dLCB7IHRvb2x0aXBfY29uZmlnOiB7IHBsYWNlbWVudDogJ2Jv dHRvbScgfSB9KTsKLSAgICAgICAgICAgPTIwCisKICAgICAgICAgLy8gYWRkIG1lbnUKICAgICAg ICAgbWVudS4kZWwuYXR0cigic3R5bGUiLCAiZmxvYXQ6IHJpZ2h0Iik7CiAgICAgICAgICQoIiNj ZW50ZXIgLnVuaWZpZWQtcGFuZWwtaGVhZGVyLWlubmVyIikuYXBwZW5kKG1lbnUuJGVsKTsKLSAg ICAgICAgICAgPTIwCisKICAgICAgICAgLy8gbWFudWFsIHRvb2x0aXAgY29uZmlnIGJlY2F1c2Ug ZGVmYXVsdCBncmF2aXR5IGlzIFMgYW5kIGNhbm5vdCBiPQplIGNoYW5nZWQKICAgICAgICAgJCgi Lm1lbnUtYnV0dG9uIikudG9vbHRpcCggeyBwbGFjZW1lbnQ6ICdib3R0b20nIH0gKTsKICAgICB9 CgpkaWZmIC1yIDVkZDY1NDlhYWMzYTI5YjE1NjJmZDNlNTMwNmMxYzY5ZWYwMDQ3YTcgLXIgNjVi MjMzMGI4MjNjNzYxMTM2OWI5N2I9CjA4MjkyYTZjODY0ZGVlMTFjIHN0YXRpYy9zY3JpcHRzL3Bh Y2tlZC92aXovY2lyY3N0ZXIuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvcGFja2VkL3Zpei9jaXJj c3Rlci5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvdml6L2NpcmNzdGVyLmpzCkBAIC0x LDEgKzEsMSBAQAotcmVxdWlyZShbInV0aWxzL3V0aWxzIiwibXZjL3VpL2ljb24tYnV0dG9uIiwi bGlicy9mYXJidGFzdGljIixdLGZ1bmN0aW9uKGI9CixhKXtiLmNzc0xvYWRGaWxlKCJzdGF0aWMv c3R5bGUvY2lyY3N0ZXIuY3NzIil9KTtkZWZpbmUoWyJsaWJzL3VuZGVyc2NvcmUiLD0KImxpYnMv ZDMiLCJ2aXovdmlzdWFsaXphdGlvbiIsInV0aWxzL2NvbmZpZyJdLGZ1bmN0aW9uKGgsbSxqLGMp e3ZhciBuPTNEQmFjPQprYm9uZS5Nb2RlbC5leHRlbmQoe2lzX3Zpc2libGU6ZnVuY3Rpb24ocixv KXt2YXIgcD0zRHIuZ2V0Qm91bmRpbmdDbGllbnRSZWM9CnQoKSxxPTNEJCgic3ZnIilbMF0uZ2V0 Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYocC5yaWdodDwwfHxwLmxlZnQ+cS5yaWdodHx8cD0KLmJv dHRvbTwwfHxwLnRvcD5xLmJvdHRvbSl7cmV0dXJuIGZhbHNlfXJldHVybiB0cnVlfX0pO3ZhciBp PTNEe2RyYXdUaWNrczpmPQp1bmN0aW9uKHMscix3LHEsbyl7dmFyIHY9M0RzLmFwcGVuZCgiZyIp LnNlbGVjdEFsbCgiZyIpLmRhdGEocikuZW50ZXIoKS5hcHA9CmVuZCgiZyIpLnNlbGVjdEFsbCgi ZyIpLmRhdGEodykuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRpY2siKS5hdD0K dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oeCl7cmV0dXJuInJvdGF0ZSgiKyh4LmFuZ2xlKjE4MC9N YXRoLlBJLTkwKSsiKXRyYW5zPQpsYXRlKCIreC5yYWRpdXMrIiwwKSJ9KTt2YXIgdT0zRFtdLHQ9 M0RbXSxwPTNEZnVuY3Rpb24oeCl7cmV0dXJuIHguYW5nbGU+TWE9CnRoLlBJPyJlbmQiOm51bGx9 O2lmKG8pe3U9M0RbMCwwLDAsLTRdO3Q9M0RbNCwwLCIiLCIuMzVlbSJdO3A9M0RudWxsfWVsc2V7 dT0KPTNEWzEsMCw0LDBdO3Q9M0RbMCw0LCIuMzVlbSIsIiJdfXYuYXBwZW5kKCJsaW5lIikuYXR0 cigieDEiLHVbMF0pLmF0dHIoInkxPQoiLHVbMV0pLmF0dHIoIngyIix1WzJdKS5hdHRyKCJ5MSIs dVszXSkuc3R5bGUoInN0cm9rZSIsIiMwMDAiKTtyZXR1cm4gdi5hcHA9CmVuZCgidGV4dCIpLmF0 dHIoIngiLHRbMF0pLmF0dHIoInkiLHRbMV0pLmF0dHIoImR4Iix0WzJdKS5hdHRyKCJkeSIsdFsz XSkuYT0KdHRyKCJ0ZXh0LWFuY2hvciIscCkuYXR0cigidHJhbnNmb3JtIixxKS50ZXh0KGZ1bmN0 aW9uKHgpe3JldHVybiB4LmxhYmVsfSl9PQosZm9ybWF0TnVtOmZ1bmN0aW9uKHAsbyl7aWYobz0z RD0zRD0zRHVuZGVmaW5lZCl7bz0zRDJ9aWYocD0zRD0zRD0zRG51bGwpe3I9CmV0dXJuIG51bGx9 dmFyIHI9M0RudWxsO2lmKE1hdGguYWJzKHApPDEpe3I9M0RwLnRvUHJlY2lzaW9uKG8pfWVsc2V7 dmFyIHE9Cj0zRE1hdGgucm91bmQocC50b1ByZWNpc2lvbihvKSk7cD0zRE1hdGguYWJzKHApO2lm KHA8MTAwMCl7cj0zRHF9ZWxzZXtpZihwPD0KMTAwMDAwMCl7cj0zRE1hdGgucm91bmQoKHEvMTAw MCkudG9QcmVjaXNpb24oMykpLnRvRml4ZWQoMCkrIksifWVsc2V7aWYocDwxPQowMDAwMDAwMDAp e3I9M0RNYXRoLnJvdW5kKChxLzEwMDAwMDApLnRvUHJlY2lzaW9uKDMpKS50b0ZpeGVkKDApKyJN In19fX1yZXQ9CnVybiByfX07dmFyIGQ9M0RCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe30pO3ZhciBh PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2NsYT0Kc3NOYW1lOiJjaXJjc3RlciIsaW5pdGlhbGl6 ZTpmdW5jdGlvbihvKXt0aGlzLmdlbm9tZT0zRG8uZ2Vub21lO3RoaXMubGFiZWxfPQphcmNfaGVp Z2h0PTNENTA7dGhpcy5zY2FsZT0zRDE7dGhpcy5jaXJjdWxhcl92aWV3cz0zRG51bGw7dGhpcy5j aG9yZHNfdmlld3M9Cj0zRG51bGw7dGhpcy5tb2RlbC5nZXQoImRyYXdhYmxlcyIpLm9uKCJhZGQi LHRoaXMuYWRkX3RyYWNrLHRoaXMpO3RoaXMubW9kZT0KbC5nZXQoImRyYXdhYmxlcyIpLm9uKCJy ZW1vdmUiLHRoaXMucmVtb3ZlX3RyYWNrLHRoaXMpO3ZhciBwPTNEdGhpcy5tb2RlbC5nPQpldCgi Y29uZmlnIik7cC5nZXQoImFyY19kYXRhc2V0X2hlaWdodCIpLm9uKCJjaGFuZ2U6dmFsdWUiLHRo aXMudXBkYXRlX3RyYWM9CmtfYm91bmRzLHRoaXMpO3AuZ2V0KCJ0cmFja19nYXAiKS5vbigiY2hh bmdlOnZhbHVlIix0aGlzLnVwZGF0ZV90cmFja19ib3VuZD0Kcyx0aGlzKX0sZ2V0X2NpcmN1bGFy X3RyYWNrczpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vZGVsLmdldCgiZHJhd2FibGVzIikuPQpm aWx0ZXIoZnVuY3Rpb24obyl7cmV0dXJuIG8uZ2V0KCJ0cmFja190eXBlIikhPTNEPTNEIkRpYWdv bmFsSGVhdG1hcFRyYWNrIn09Cil9LGdldF9jaG9yZF90cmFja3M6ZnVuY3Rpb24oKXtyZXR1cm4g dGhpcy5tb2RlbC5nZXQoImRyYXdhYmxlcyIpLmZpbHRlcihmdT0KbmN0aW9uKG8pe3JldHVybiBv LmdldCgidHJhY2tfdHlwZSIpPTNEPTNEPTNEIkRpYWdvbmFsSGVhdG1hcFRyYWNrIn0pfSxnZXRf PQp0cmFja3NfYm91bmRzOmZ1bmN0aW9uKCl7dmFyIHE9M0R0aGlzLmdldF9jaXJjdWxhcl90cmFj a3MoKSxzPTNEdGhpcy5tb2RlbC49CmdldCgiY29uZmlnIikuZ2V0X3ZhbHVlKCJhcmNfZGF0YXNl dF9oZWlnaHQiKSxyPTNEdGhpcy5tb2RlbC5nZXQoImNvbmZpZyIpLj0KZ2V0X3ZhbHVlKCJ0cmFj a19nYXAiKSxvPTNETWF0aC5taW4odGhpcy4kZWwud2lkdGgoKSx0aGlzLiRlbC5oZWlnaHQoKSkt MjAsPQp1PTNEby8yLXEubGVuZ3RoKihzK3IpK3ItdGhpcy5sYWJlbF9hcmNfaGVpZ2h0LHQ9M0Rt LnJhbmdlKHUsby8yLHMrcik7dmFyIHA9Cj0zRHRoaXM7cmV0dXJuIGgubWFwKHQsZnVuY3Rpb24o dil7cmV0dXJuW3YsditzXX0pfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgeD0KPTNEdGhpcyxvPTNE eC4kZWwud2lkdGgoKSx3PTNEeC4kZWwuaGVpZ2h0KCksdD0zRHRoaXMuZ2V0X2NpcmN1bGFyX3Ry YWNrcygpPQoscj0zRHRoaXMuZ2V0X2Nob3JkX3RyYWNrcygpLHE9M0R4Lm1vZGVsLmdldCgiY29u ZmlnIikuZ2V0X3ZhbHVlKCJ0b3RhbF9nYXA9CiIpLHM9M0R0aGlzLmdldF90cmFja3NfYm91bmRz KCkscD0zRG0uc2VsZWN0KHguJGVsWzBdKS5hcHBlbmQoInN2ZyIpLmF0dHIoIj0Kd2lkdGgiLG8p LmF0dHIoImhlaWdodCIsdykuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5hcHBlbmQoInN2 ZzpnIikuY2FsPQpsKG0uYmVoYXZpb3Iuem9vbSgpLm9uKCJ6b29tIixmdW5jdGlvbigpe3ZhciB5 PTNEbS5ldmVudC5zY2FsZTtwLmF0dHIoInRyYW49CnNmb3JtIiwidHJhbnNsYXRlKCIrbS5ldmVu dC50cmFuc2xhdGUrIikgc2NhbGUoIit5KyIpIik7aWYoeC5zY2FsZSE9M0Q9M0R5KT0Ke2lmKHgu em9vbV9kcmFnX3RpbWVvdXQpe2NsZWFyVGltZW91dCh4Lnpvb21fZHJhZ190aW1lb3V0KX14Lnpv b21fZHJhZ190aW1lPQpvdXQ9M0RzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7fSw0MDApfX0pKS5hdHRy KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLzIrIiw9CiIrdy8yKyIpIikuYXBwZW5kKCJzdmc6 ZyIpLmF0dHIoImNsYXNzIiwidHJhY2tzIik7dGhpcy5jaXJjdWxhcl92aWV3cz0zRHQubT0KYXAo ZnVuY3Rpb24oeixBKXt2YXIgeT0zRG5ldyBlKHtlbDpwLmFwcGVuZCgiZyIpWzBdLHRyYWNrOnos cmFkaXVzX2JvdW5kczpzPQpbQV0sZ2Vub21lOnguZ2Vub21lLHRvdGFsX2dhcDpxfSk7eS5yZW5k ZXIoKTtyZXR1cm4geX0pO3RoaXMuY2hvcmRzX3ZpZXdzPQo9M0RyLm1hcChmdW5jdGlvbih6KXt2 YXIgeT0zRG5ldyBrKHtlbDpwLmFwcGVuZCgiZyIpWzBdLHRyYWNrOnoscmFkaXVzX2JvdW49CmRz OnNbMF0sZ2Vub21lOnguZ2Vub21lLHRvdGFsX2dhcDpxfSk7eS5yZW5kZXIoKTtyZXR1cm4geX0p O3ZhciB2PTNEdGhpcy5jaT0KcmN1bGFyX3ZpZXdzW3RoaXMuY2lyY3VsYXJfdmlld3MubGVuZ3Ro LTFdLnJhZGl1c19ib3VuZHNbMV0sdT0zRFt2LHYrdGhpcy5sPQphYmVsX2FyY19oZWlnaHRdO3Ro aXMubGFiZWxfdHJhY2tfdmlldz0zRG5ldyBiKHtlbDpwLmFwcGVuZCgiZyIpWzBdLHRyYWNrOm49 CmV3IGQoKSxyYWRpdXNfYm91bmRzOnUsZ2Vub21lOnguZ2Vub21lLHRvdGFsX2dhcDpxfSk7dGhp cy5sYWJlbF90cmFja192aWV3Lj0KcmVuZGVyKCl9LGFkZF90cmFjazpmdW5jdGlvbih1KXt2YXIg cD0zRHRoaXMubW9kZWwuZ2V0KCJjb25maWciKS5nZXRfdmFsdWUoPQoidG90YWxfZ2FwIik7aWYo dS5nZXQoInRyYWNrX3R5cGUiKT0zRD0zRD0zRCJEaWFnb25hbEhlYXRtYXBUcmFjayIpe3ZhciBx PQo9M0R0aGlzLmNpcmN1bGFyX3ZpZXdzWzBdLnJhZGl1c19ib3VuZHMsdD0zRG5ldyBrKHtlbDpt LnNlbGVjdCgiZy50cmFja3MiKS49CmFwcGVuZCgiZyIpWzBdLHRyYWNrOnUscmFkaXVzX2JvdW5k czpxLGdlbm9tZTp0aGlzLmdlbm9tZSx0b3RhbF9nYXA6cH0pO3Qucj0KZW5kZXIoKTt0aGlzLmNo b3Jkc192aWV3cy5wdXNoKHQpfWVsc2V7dmFyIHM9M0R0aGlzLmdldF90cmFja3NfYm91bmRzKCk7 aC5lPQphY2godGhpcy5jaXJjdWxhcl92aWV3cyxmdW5jdGlvbih2LHcpe3YudXBkYXRlX3JhZGl1 c19ib3VuZHMoc1t3XSl9KTtoLmVhY2g9Cih0aGlzLmNob3Jkc192aWV3cyxmdW5jdGlvbih2KXt2 LnVwZGF0ZV9yYWRpdXNfYm91bmRzKHNbMF0pfSk7dmFyIHI9M0R0aGlzLj0KY2lyY3VsYXJfdmll d3MubGVuZ3RoLG89M0RuZXcgZSh7ZWw6bS5zZWxlY3QoImcudHJhY2tzIikuYXBwZW5kKCJnIilb MF0sdHJhPQpjazp1LHJhZGl1c19ib3VuZHM6c1tyXSxnZW5vbWU6dGhpcy5nZW5vbWUsdG90YWxf Z2FwOnB9KTtvLnJlbmRlcigpO3RoaXMuY2k9CnJjdWxhcl92aWV3cy5wdXNoKG8pfX0scmVtb3Zl X3RyYWNrOmZ1bmN0aW9uKHAscixxKXt2YXIgbz0zRHRoaXMuY2lyY3VsYXJfdj0KaWV3c1txLmlu ZGV4XTt0aGlzLmNpcmN1bGFyX3ZpZXdzLnNwbGljZShxLmluZGV4LDEpO28uJGVsLnJlbW92ZSgp O3ZhciBzPTNEPQp0aGlzLmdldF90cmFja3NfYm91bmRzKCk7aC5lYWNoKHRoaXMuY2lyY3VsYXJf dmlld3MsZnVuY3Rpb24odCx1KXt0LnVwZGF0ZV89CnJhZGl1c19ib3VuZHMoc1t1XSl9KX0sdXBk YXRlX3RyYWNrX2JvdW5kczpmdW5jdGlvbigpe3ZhciBvPTNEdGhpcy5nZXRfdHJhYz0Ka3NfYm91 bmRzKCk7aC5lYWNoKHRoaXMuY2lyY3VsYXJfdmlld3MsZnVuY3Rpb24ocCxxKXtwLnVwZGF0ZV9y YWRpdXNfYm91bmRzPQoob1txXSl9KTtoLmVhY2godGhpcy5jaG9yZHNfdmlld3MsZnVuY3Rpb24o cCl7cC51cGRhdGVfcmFkaXVzX2JvdW5kcyhvWzBdKX09Cil9fSk7dmFyIGw9M0RCYWNrYm9uZS5W aWV3LmV4dGVuZCh7dGFnTmFtZToiZyIsaW5pdGlhbGl6ZTpmdW5jdGlvbihvKXt0aGlzLj0KYmdf c3Ryb2tlPTNEIiNkZGQiO3RoaXMubG9hZGluZ19iZ19maWxsPTNEIiNmZmMiO3RoaXMuYmdfZmls bD0zRCIjZGRkIjt0aGlzPQoudG90YWxfZ2FwPTNEby50b3RhbF9nYXA7dGhpcy50cmFjaz0zRG8u dHJhY2s7dGhpcy5yYWRpdXNfYm91bmRzPTNEby5yYWRpdXM9Cl9ib3VuZHM7dGhpcy5nZW5vbWU9 M0RvLmdlbm9tZTt0aGlzLmNocm9tc19sYXlvdXQ9M0R0aGlzLl9jaHJvbXNfbGF5b3V0KCk7dD0K aGlzLmRhdGFfYm91bmRzPTNEW107dGhpcy5zY2FsZT0zRDE7dGhpcy5wYXJlbnRfZWx0PTNEbS5z ZWxlY3QodGhpcy4kZWxbMF0pPQp9LGdldF9maWxsX2NvbG9yOmZ1bmN0aW9uKCl7dmFyIG89M0R0 aGlzLnRyYWNrLmdldCgiY29uZmlnIikuZ2V0X3ZhbHVlKCJibG89CmNrX2NvbG9yIik7aWYoIW8p e289M0R0aGlzLnRyYWNrLmdldCgiY29uZmlnIikuZ2V0X3ZhbHVlKCJjb2xvciIpfXJldHVybiBv fT0KLHJlbmRlcjpmdW5jdGlvbigpe3ZhciBzPTNEdGhpcy5wYXJlbnRfZWx0O3ZhciByPTNEdGhp cy5jaHJvbXNfbGF5b3V0LHU9M0RtPQouc3ZnLmFyYygpLmlubmVyUmFkaXVzKHRoaXMucmFkaXVz X2JvdW5kc1swXSkub3V0ZXJSYWRpdXModGhpcy5yYWRpdXNfYm91bmQ9CnNbMV0pLG89M0RzLnNl bGVjdEFsbCgiZyIpLmRhdGEocikuZW50ZXIoKS5hcHBlbmQoInN2ZzpnIikscT0zRG8uYXBwZW5k KCJwYT0KdGgiKS5hdHRyKCJkIix1KS5hdHRyKCJjbGFzcyIsImNocm9tLWJhY2tncm91bmQiKS5z dHlsZSgic3Ryb2tlIix0aGlzLmJnX3N0PQpyb2tlKS5zdHlsZSgiZmlsbCIsdGhpcy5sb2FkaW5n X2JnX2ZpbGwpO3EuYXBwZW5kKCJ0aXRsZSIpLnRleHQoZnVuY3Rpb24odyk9CntyZXR1cm4gdy5k YXRhLmNocm9tfSk7dmFyIHA9M0R0aGlzLHQ9M0RwLnRyYWNrLmdldCgiZGF0YV9tYW5hZ2VyIiks dj0zRCh0Pz0KdC5kYXRhX2lzX3JlYWR5KCk6dHJ1ZSk7JC53aGVuKHYpLnRoZW4oZnVuY3Rpb24o KXskLndoZW4ocC5fcmVuZGVyX2RhdGEocykpPQoudGhlbihmdW5jdGlvbigpe3Euc3R5bGUoImZp bGwiLHAuYmdfZmlsbCk7cC5yZW5kZXJfbGFiZWxzKCl9KX0pfSxyZW5kZXJfbGE9CmJlbHM6ZnVu Y3Rpb24oKXt9LHVwZGF0ZV9yYWRpdXNfYm91bmRzOmZ1bmN0aW9uKHApe3RoaXMucmFkaXVzX2Jv dW5kcz0zRHA7dj0KYXIgbz0zRG0uc3ZnLmFyYygpLmlubmVyUmFkaXVzKHRoaXMucmFkaXVzX2Jv dW5kc1swXSkub3V0ZXJSYWRpdXModGhpcy5yYWRpPQp1c19ib3VuZHNbMV0pO3RoaXMucGFyZW50 X2VsdC5zZWxlY3RBbGwoImc+cGF0aC5jaHJvbS1iYWNrZ3JvdW5kIikudHJhbnNpdGk9Cm9uKCku ZHVyYXRpb24oMTAwMCkuYXR0cigiZCIsbyk7dGhpcy5fdHJhbnNpdGlvbl9jaHJvbV9kYXRhKCk7 dGhpcy5fdHJhbnNpdD0KaW9uX2xhYmVscygpfSx1cGRhdGVfc2NhbGU6ZnVuY3Rpb24ocil7dmFy IHE9M0R0aGlzLnNjYWxlO3RoaXMuc2NhbGU9M0RyO2lmPQoocjw9M0RxKXtyZXR1cm59dmFyIHA9 M0R0aGlzLG89M0RuZXcgbigpO3RoaXMucGFyZW50X2VsdC5zZWxlY3RBbGwoInBhdGguY2g9CnJv bS1kYXRhIikuZmlsdGVyKGZ1bmN0aW9uKHQscyl7cmV0dXJuIG8uaXNfdmlzaWJsZSh0aGlzKX0p LmVhY2goZnVuY3Rpb24oeT0KLHUpe3ZhciB4PTNEbS5zZWxlY3QodGhpcyksdD0zRHguYXR0cigi Y2hyb20iKSx3PTNEcC5nZW5vbWUuZ2V0X2Nocm9tX3JlZ2lvPQpuKHQpLHY9M0RwLnRyYWNrLmdl dCgiZGF0YV9tYW5hZ2VyIikscztpZighdi5jYW5fZ2V0X21vcmVfZGV0YWlsZWRfZGF0YSh3KSk9 CntyZXR1cm59cz0zRHAudHJhY2suZ2V0KCJkYXRhX21hbmFnZXIiKS5nZXRfbW9yZV9kZXRhaWxl ZF9kYXRhKHcsIkNvdmVyYWdlIj0KLDAscik7JC53aGVuKHMpLnRoZW4oZnVuY3Rpb24oQil7eC5y ZW1vdmUoKTtwLl91cGRhdGVfZGF0YV9ib3VuZHMoKTt2YXIgQT0KPTNEaC5maW5kKHAuY2hyb21z X2xheW91dCxmdW5jdGlvbihDKXtyZXR1cm4gQy5kYXRhLmNocm9tPTNEPTNEPTNEdH0pO3ZhciB6 PQo9M0RwLmdldF9maWxsX2NvbG9yKCk7cC5fcmVuZGVyX2Nocm9tX2RhdGEocC5wYXJlbnRfZWx0 LEEsQikuc3R5bGUoInN0cm9rZSI9Cix6KS5zdHlsZSgiZmlsbCIseil9KX0pO3JldHVybiBwfSxf dHJhbnNpdGlvbl9jaHJvbV9kYXRhOmZ1bmN0aW9uKCl7dmFyIHA9Cj0zRHRoaXMudHJhY2sscj0z RHRoaXMuY2hyb21zX2xheW91dCxvPTNEdGhpcy5wYXJlbnRfZWx0LnNlbGVjdEFsbCgiZz5wYXRo Lj0KY2hyb20tZGF0YSIpLHM9M0RvWzBdLmxlbmd0aDtpZihzPjApe3ZhciBxPTNEdGhpczskLndo ZW4ocC5nZXQoImRhdGFfbWFuYWdlPQpyIikuZ2V0X2dlbm9tZV93aWRlX2RhdGEodGhpcy5nZW5v bWUpKS50aGVuKGZ1bmN0aW9uKHYpe3ZhciB1PTNEaC5yZWplY3QoaC49Cm1hcCh2LGZ1bmN0aW9u KHcseCl7dmFyIHk9M0RudWxsLHo9M0RxLl9nZXRfcGF0aF9mdW5jdGlvbihyW3hdLHcpO2lmKHop e3k9Cj0zRHoody5kYXRhKX1yZXR1cm4geX0pLGZ1bmN0aW9uKHcpe3JldHVybiB3PTNEPTNEPTNE bnVsbH0pO3ZhciB0PTNEcC5nZXQoIj0KY29uZmlnIikuZ2V0X3ZhbHVlKCJjb2xvciIpO28uZWFj aChmdW5jdGlvbih4LHcpe20uc2VsZWN0KHRoaXMpLnRyYW5zaXRpb24oPQopLmR1cmF0aW9uKDEw MDApLnN0eWxlKCJzdHJva2UiLHQpLnN0eWxlKCJmaWxsIix0KS5hdHRyKCJkIix1W3ddKX0pfSl9 fSxfdHI9CmFuc2l0aW9uX2xhYmVsczpmdW5jdGlvbigpe30sX3VwZGF0ZV9kYXRhX2JvdW5kczpm dW5jdGlvbihwKXt2YXIgbz0zRHRoaXMuZD0KYXRhX2JvdW5kczt0aGlzLmRhdGFfYm91bmRzPTNE cHx8dGhpcy5nZXRfZGF0YV9ib3VuZHModGhpcy50cmFjay5nZXQoImRhdGFfPQptYW5hZ2VyIiku Z2V0X2dlbm9tZV93aWRlX2RhdGEodGhpcy5nZW5vbWUpKTt0aGlzLl90cmFuc2l0aW9uX2Nocm9t X2RhdGEoKX09CixfcmVuZGVyX2RhdGE6ZnVuY3Rpb24ocil7dmFyIHE9M0R0aGlzLHA9M0R0aGlz LmNocm9tc19sYXlvdXQsbz0zRHRoaXMudHJhYz0KayxzPTNEJC5EZWZlcnJlZCgpOyQud2hlbihv LmdldCgiZGF0YV9tYW5hZ2VyIikuZ2V0X2dlbm9tZV93aWRlX2RhdGEodGhpcy5nPQplbm9tZSkp LnRoZW4oZnVuY3Rpb24odSl7cS5kYXRhX2JvdW5kcz0zRHEuZ2V0X2RhdGFfYm91bmRzKHUpO28u Z2V0KCJjb25maWc9CiIpLnNldF92YWx1ZSgibWluX3ZhbHVlIixxLmRhdGFfYm91bmRzWzBdLHtz aWxlbnQ6dHJ1ZX0pO28uZ2V0KCJjb25maWciKS5zZT0KdF92YWx1ZSgibWF4X3ZhbHVlIixxLmRh dGFfYm91bmRzWzFdLHtzaWxlbnQ6dHJ1ZX0pO2xheW91dF9hbmRfZGF0YT0zRGguemlwPQoocCx1 KSxjaHJvbXNfZGF0YV9sYXlvdXQ9M0RoLm1hcChsYXlvdXRfYW5kX2RhdGEsZnVuY3Rpb24odil7 dmFyIHc9M0R2WzBdLHg9Cj0zRHZbMV07cmV0dXJuIHEuX3JlbmRlcl9jaHJvbV9kYXRhKHIsdyx4 KX0pO3ZhciB0PTNEcS5nZXRfZmlsbF9jb2xvcigpO3EucD0KYXJlbnRfZWx0LnNlbGVjdEFsbCgi cGF0aC5jaHJvbS1kYXRhIikuc3R5bGUoInN0cm9rZSIsdCkuc3R5bGUoImZpbGwiLHQpO3MuPQpy ZXNvbHZlKHIpfSk7cmV0dXJuIHN9LF9yZW5kZXJfY2hyb21fZGF0YTpmdW5jdGlvbihvLHAscSl7 fSxfZ2V0X3BhdGhfZnVuY3Q9CmlvbjpmdW5jdGlvbihwLG8pe30sX2Nocm9tc19sYXlvdXQ6ZnVu Y3Rpb24oKXt2YXIgcD0zRHRoaXMuZ2Vub21lLmdldF9jaHJvbT0Kc19pbmZvKCkscj0zRG0ubGF5 b3V0LnBpZSgpLnZhbHVlKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbn0pLnNvcnQobnVsbCkscz0K PTNEcihwKSxvPTNEMipNYXRoLlBJKnRoaXMudG90YWxfZ2FwL3AubGVuZ3RoLHE9M0RoLm1hcChz LGZ1bmN0aW9uKHYsdSl7dmFyPQogdD0zRHYuZW5kQW5nbGUtbzt2LmVuZEFuZ2xlPTNEKHQ+di5z dGFydEFuZ2xlP3Q6di5zdGFydEFuZ2xlKTtyZXR1cm4gdn0pO3I9CmV0dXJuIHF9fSk7dmFyIGI9 M0RsLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihvKXtsLnByb3RvdHlwZS5pbml0aWFsaXpl Lj0KY2FsbCh0aGlzLG8pO3RoaXMuaW5uZXJSYWRpdXM9M0R0aGlzLnJhZGl1c19ib3VuZHNbMF07 dGhpcy5yYWRpdXNfYm91bmRzWzBdPQo9M0R0aGlzLnJhZGl1c19ib3VuZHNbMV07dGhpcy5iZ19z dHJva2U9M0QiI2ZmZiI7dGhpcy5iZ19maWxsPTNEIiNmZmYiO3RoaXM9Ci5taW5fYXJjX2xlbj0z RDAuMDV9LF9yZW5kZXJfZGF0YTpmdW5jdGlvbihxKXt2YXIgcD0zRHRoaXMsbz0zRHEuc2VsZWN0 QWxsKD0KImciKTtvLnNlbGVjdEFsbCgicGF0aCIpLmF0dHIoImlkIixmdW5jdGlvbih1KXtyZXR1 cm4ibGFiZWwtIit1LmRhdGEuY2hyb219PQopO28uYXBwZW5kKCJzdmc6dGV4dCIpLmZpbHRlcihm dW5jdGlvbih1KXtyZXR1cm4gdS5lbmRBbmdsZS11LnN0YXJ0QW5nbGU+cC49Cm1pbl9hcmNfbGVu fSkuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hcHBlbmQoInN2Zzp0ZXh0UGF0aCIpLmF0 dHIoImNsYT0Kc3MiLCJjaHJvbS1sYWJlbCIpLmF0dHIoInhsaW5rOmhyZWYiLGZ1bmN0aW9uKHUp e3JldHVybiIjbGFiZWwtIit1LmRhdGEuY2hyPQpvbX0pLmF0dHIoInN0YXJ0T2Zmc2V0IiwiMjUl IikudGV4dChmdW5jdGlvbih1KXtyZXR1cm4gdS5kYXRhLmNocm9tfSk7dmFyIHI9Cj0zRGZ1bmN0 aW9uKHcpe3ZhciB1PTNEKHcuZW5kQW5nbGUtdy5zdGFydEFuZ2xlKS93LnZhbHVlLHY9M0RtLnJh bmdlKDAsdy52YT0KbHVlLDI1MDAwMDAwKS5tYXAoZnVuY3Rpb24oeCx5KXtyZXR1cm57cmFkaXVz OnAuaW5uZXJSYWRpdXMsYW5nbGU6eCp1K3cuc3RhPQpydEFuZ2xlLGxhYmVsOnk9M0Q9M0Q9M0Qw PzA6KHklMz9udWxsOnAuZm9ybWF0TnVtKHgpKX19KTtpZih2Lmxlbmd0aDw0KXt2W3Y9Ci5sZW5n dGgtMV0ubGFiZWw9M0RwLmZvcm1hdE51bShNYXRoLnJvdW5kKCh2W3YubGVuZ3RoLTFdLmFuZ2xl LXcuc3RhcnRBbmdsZT0KKS91KSl9cmV0dXJuIHZ9O3ZhciB0PTNEZnVuY3Rpb24odSl7cmV0dXJu IHUuYW5nbGU+TWF0aC5QST8icm90YXRlKDE4MCl0cmFuPQpzbGF0ZSgtMTYpIjpudWxsfTt2YXIg cz0zRGguZmlsdGVyKHRoaXMuY2hyb21zX2xheW91dCxmdW5jdGlvbih1KXtyZXR1cm4gdS49CmVu ZEFuZ2xlLXUuc3RhcnRBbmdsZT5wLm1pbl9hcmNfbGVufSk7dGhpcy5kcmF3VGlja3ModGhpcy5w YXJlbnRfZWx0LHMscix0KT0KfX0pO2guZXh0ZW5kKGIucHJvdG90eXBlLGkpO3ZhciBnPTNEbC5l eHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24obyl7bC5wcm90PQpvdHlwZS5pbml0aWFsaXplLmNh bGwodGhpcyxvKTt2YXIgcD0zRHRoaXMudHJhY2suZ2V0KCJjb25maWciKTtwLmdldCgibWluX3Y9 CmFsdWUiKS5vbigiY2hhbmdlOnZhbHVlIix0aGlzLl91cGRhdGVfbWluX21heCx0aGlzKTtwLmdl dCgibWF4X3ZhbHVlIikub24oIj0KY2hhbmdlOnZhbHVlIix0aGlzLl91cGRhdGVfbWluX21heCx0 aGlzKTtwLmdldCgiY29sb3IiKS5vbigiY2hhbmdlOnZhbHVlIix0PQpoaXMuX3RyYW5zaXRpb25f Y2hyb21fZGF0YSx0aGlzKX0sX3VwZGF0ZV9taW5fbWF4OmZ1bmN0aW9uKCl7dmFyIHA9M0R0aGlz LnQ9CnJhY2suZ2V0KCJjb25maWciKSxvPTNEW3AuZ2V0X3ZhbHVlKCJtaW5fdmFsdWUiKSxwLmdl dF92YWx1ZSgibWF4X3ZhbHVlIildOz0KdGhpcy5fdXBkYXRlX2RhdGFfYm91bmRzKG8pO3RoaXMu cGFyZW50X2VsdC5zZWxlY3RBbGwoIi5taW5fbWF4IikudGV4dChmdW5jPQp0aW9uKHIscSl7cmV0 dXJuIG9bcV19KX0sX3F1YW50aWxlOmZ1bmN0aW9uKHAsbyl7cC5zb3J0KG0uYXNjZW5kaW5nKTty ZXR1cm49CiBtLnF1YW50aWxlKHAsbyl9LF9yZW5kZXJfY2hyb21fZGF0YTpmdW5jdGlvbihvLHIs cCl7dmFyIHM9M0R0aGlzLl9nZXRfcGF0aD0KX2Z1bmN0aW9uKHIscCk7aWYoIXMpe3JldHVybiBu dWxsfXZhciBxPTNEby5kYXR1bShwLmRhdGEpLHQ9M0RxLmFwcGVuZCgicGF0PQpoIikuYXR0cigi Y2xhc3MiLCJjaHJvbS1kYXRhIikuYXR0cigiY2hyb20iLHIuZGF0YS5jaHJvbSkuYXR0cigiZCIs cyk7cmV0dXI9Cm4gdH0sX2dldF9wYXRoX2Z1bmN0aW9uOmZ1bmN0aW9uKHIscSl7aWYodHlwZW9m IHE9M0Q9M0Q9M0Qic3RyaW5nInx8IXEuZGF0YT0KfHxxLmRhdGEubGVuZ3RoPTNEPTNEPTNEMCl7 cmV0dXJuIG51bGx9dmFyIG89M0RtLnNjYWxlLmxpbmVhcigpLmRvbWFpbih0aGlzPQouZGF0YV9i b3VuZHMpLnJhbmdlKHRoaXMucmFkaXVzX2JvdW5kcykuY2xhbXAodHJ1ZSk7dmFyIHM9M0RtLnNj YWxlLmxpbmVhcig9CikuZG9tYWluKFswLHEuZGF0YS5sZW5ndGhdKS5yYW5nZShbci5zdGFydEFu Z2xlLHIuZW5kQW5nbGVdKTt2YXIgcD0zRG0uc3ZnLj0KbGluZS5yYWRpYWwoKS5pbnRlcnBvbGF0 ZSgibGluZWFyIikucmFkaXVzKGZ1bmN0aW9uKHQpe3JldHVybiBvKHRbMV0pfSkuYW5nPQpsZShm dW5jdGlvbih1LHQpe3JldHVybiBzKHQpfSk7cmV0dXJuIG0uc3ZnLmFyZWEucmFkaWFsKCkuaW50 ZXJwb2xhdGUocC5pbnQ9CmVycG9sYXRlKCkpLmlubmVyUmFkaXVzKG8oMCkpLm91dGVyUmFkaXVz KHAucmFkaXVzKCkpLmFuZ2xlKHAuYW5nbGUoKSl9LHJlbj0KZGVyX2xhYmVsczpmdW5jdGlvbigp e3ZhciBvPTNEdGhpcyxxPTNEZnVuY3Rpb24oKXtyZXR1cm4icm90YXRlKDkwKSJ9O3ZhciBwPQo9 M0R0aGlzLmRyYXdUaWNrcyh0aGlzLnBhcmVudF9lbHQsW3RoaXMuY2hyb21zX2xheW91dFswXV0s dGhpcy5fZGF0YV9ib3VuZHM9Cl90aWNrc19mbigpLHEsdHJ1ZSkuY2xhc3NlZCgibWluX21heCIs dHJ1ZSk7aC5lYWNoKHAsZnVuY3Rpb24ocil7JChyKS5jbGljaz0KKGZ1bmN0aW9uKCl7dmFyIHM9 M0RuZXcgYy5Db25maWdTZXR0aW5nQ29sbGVjdGlvblZpZXcoe2NvbGxlY3Rpb246by50cmFjay5n PQpldCgiY29uZmlnIil9KTtzLnJlbmRlcl9pbl9tb2RhbCgiQ29uZmlndXJlIFRyYWNrIil9KX0p fSxfdHJhbnNpdGlvbl9sYWJlbHM9CjpmdW5jdGlvbigpe2lmKHRoaXMuZGF0YV9ib3VuZHMubGVu Z3RoPTNEPTNEPTNEMCl7cmV0dXJufXZhciBwPTNEdGhpcyxyPTNEaD0KLmZpbHRlcih0aGlzLmNo cm9tc19sYXlvdXQsZnVuY3Rpb24ocyl7cmV0dXJuIHMuZW5kQW5nbGUtcy5zdGFydEFuZ2xlPjAu MDh9PQopLHE9M0RoLmZpbHRlcihyLGZ1bmN0aW9uKHQscyl7cmV0dXJuIHMlMz0zRD0zRD0zRDB9 KSxvPTNEaC5mbGF0dGVuKGgubWFwKHE9CixmdW5jdGlvbihzKXtyZXR1cm4gcC5fZGF0YV9ib3Vu ZHNfdGlja3NfZm4oKShzKX0pKTt0aGlzLnBhcmVudF9lbHQuc2VsZWN0QT0KbGwoImcudGljayIp LmRhdGEobykudHJhbnNpdGlvbigpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24ocyl7cmV0dXJu InJvdGF0PQplKCIrKHMuYW5nbGUqMTgwL01hdGguUEktOTApKyIpdHJhbnNsYXRlKCIrcy5yYWRp dXMrIiwwKSJ9KX0sX2RhdGFfYm91bmRzX3Q9Cmlja3NfZm46ZnVuY3Rpb24oKXt2YXIgbz0zRHRo aXM7dmlzaWJsZUNocm9tcz0zRDA7cmV0dXJuIGZ1bmN0aW9uKHApe3JldHVybj0KW3tyYWRpdXM6 by5yYWRpdXNfYm91bmRzWzBdLGFuZ2xlOnAuc3RhcnRBbmdsZSxsYWJlbDpvLmZvcm1hdE51bShv LmRhdGFfYm91PQpuZHNbMF0pfSx7cmFkaXVzOm8ucmFkaXVzX2JvdW5kc1sxXSxhbmdsZTpwLnN0 YXJ0QW5nbGUsbGFiZWw6by5mb3JtYXROdW0oby49CmRhdGFfYm91bmRzWzFdKX1dfX0sZ2V0X2Rh dGFfYm91bmRzOmZ1bmN0aW9uKG8pe319KTtoLmV4dGVuZChnLnByb3RvdHlwZSxpKT0KO3ZhciBl PTNEZy5leHRlbmQoe2dldF9kYXRhX2JvdW5kczpmdW5jdGlvbihwKXt2YXIgbz0zRGguZmxhdHRl bihoLm1hcChwLGZ1PQpuY3Rpb24ocSl7aWYocSl7cmV0dXJuIGgubWFwKHEuZGF0YSxmdW5jdGlv bihyKXtyZXR1cm4gcGFyc2VJbnQoclsxXSwxMCl8fDA9Cn0pfWVsc2V7cmV0dXJuIDB9fSkpO3Jl dHVybltoLm1pbihvKSx0aGlzLl9xdWFudGlsZShvLDAuOTgpfHxoLm1heChvKV19fSk7dj0KYXIg az0zRGwuZXh0ZW5kKHtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgbz0zRHRoaXM7JC53aGVuKG8udHJh Y2suZ2V0KCJkYXRhX21hPQpuYWdlciIpLmRhdGFfaXNfcmVhZHkoKSkudGhlbihmdW5jdGlvbigp eyQud2hlbihvLnRyYWNrLmdldCgiZGF0YV9tYW5hZ2VyIik9Ci5nZXRfZ2Vub21lX3dpZGVfZGF0 YShvLmdlbm9tZSkpLnRoZW4oZnVuY3Rpb24ocil7dmFyIHE9M0RbXSxwPTNEby5nZW5vbWUuZz0K ZXRfY2hyb21zX2luZm8oKTtoLmVhY2gocixmdW5jdGlvbih2LHUpe3ZhciBzPTNEcFt1XS5jaHJv bTt2YXIgdD0zRGgubWFwKHYuPQpkYXRhLGZ1bmN0aW9uKHgpe3ZhciB3PTNEby5fZ2V0X3JlZ2lv bl9hbmdsZShzLHhbMV0pLHk9M0RvLl9nZXRfcmVnaW9uX2FuZ2w9CmUoeFszXSx4WzRdKTtyZXR1 cm57c291cmNlOntzdGFydEFuZ2xlOncsZW5kQW5nbGU6dyswLjAxfSx0YXJnZXQ6e3N0YXJ0QW5n bD0KZTp5LGVuZEFuZ2xlOnkrMC4wMX19fSk7cT0zRHEuY29uY2F0KHQpfSk7by5wYXJlbnRfZWx0 LmFwcGVuZCgiZyIpLmF0dHIoImNsPQphc3MiLCJjaG9yZCIpLnNlbGVjdEFsbCgicGF0aCIpLmRh dGEocSkuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5zdHlsZSgiZmlsbCI9CixvLmdldF9maWxsX2Nv bG9yKCkpLmF0dHIoImQiLG0uc3ZnLmNob3JkKCkucmFkaXVzKG8ucmFkaXVzX2JvdW5kc1swXSkp LnN0eT0KbGUoIm9wYWNpdHkiLDEpfSl9KX0sdXBkYXRlX3JhZGl1c19ib3VuZHM6ZnVuY3Rpb24o byl7dGhpcy5yYWRpdXNfYm91bmRzPTNEPQpvO3RoaXMucGFyZW50X2VsdC5zZWxlY3RBbGwoInBh dGgiKS50cmFuc2l0aW9uKCkuYXR0cigiZCIsbS5zdmcuY2hvcmQoKS5yYWQ9Cml1cyh0aGlzLnJh ZGl1c19ib3VuZHNbMF0pKX0sX2dldF9yZWdpb25fYW5nbGU6ZnVuY3Rpb24ocSxvKXt2YXIgcD0z RGguZmluZD0KKHRoaXMuY2hyb21zX2xheW91dCxmdW5jdGlvbihyKXtyZXR1cm4gci5kYXRhLmNo cm9tPTNEPTNEPTNEcX0pO3JldHVybiBwLmVuPQpkQW5nbGUtKChwLmVuZEFuZ2xlLXAuc3RhcnRB bmdsZSkqKHAuZGF0YS5sZW4tbykvcC5kYXRhLmxlbil9fSk7dmFyIGY9M0RCYWM9Cmtib25lLlZp ZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dmFyIG89M0RuZXcgai5HZW5vbWUoZ2Fs YXh5X2NvbmZpZz0KLmFwcC5nZW5vbWUpLHA9M0RuZXcgai5HZW5vbWVWaXN1YWxpemF0aW9uKGdh bGF4eV9jb25maWcuYXBwLnZpel9jb25maWcpO3AuPQpnZXQoImNvbmZpZyIpLmFkZChbe2tleToi YXJjX2RhdGFzZXRfaGVpZ2h0IixsYWJlbDoiQXJjIERhdGFzZXQgSGVpZ2h0Iix0eXA9CmU6Imlu dCIsdmFsdWU6MjUsdmlldzoiY2lyY3N0ZXIifSx7a2V5OiJ0cmFja19nYXAiLGxhYmVsOiJHYXAg QmV0d2VlbiBUcmFjaz0KcyIsdHlwZToiaW50Iix2YWx1ZTo1LHZpZXc6ImNpcmNzdGVyIn0se2tl eToidG90YWxfZ2FwIixsYWJlbDoiR2FwIFswLTFdIix0PQp5cGU6ImZsb2F0Iix2YWx1ZTowLjQs dmlldzoiY2lyY3N0ZXIiLGhpZGRlbjp0cnVlfV0pO3ZhciByPTNEbmV3IGEoe2VsOiQoIiM9CmNl bnRlciAudW5pZmllZC1wYW5lbC1ib2R5IiksZ2Vub21lOm8sbW9kZWw6cH0pO3IucmVuZGVyKCk7 JCgiI2NlbnRlciAudW5pZj0KaWVkLXBhbmVsLWhlYWRlci1pbm5lciIpLmFwcGVuZChnYWxheHlf Y29uZmlnLmFwcC52aXpfY29uZmlnLnRpdGxlKyIgIitnYWxhPQp4eV9jb25maWcuYXBwLnZpel9j b25maWcuZGJrZXkpO3ZhciBxPTNEbW9kX2ljb25fYnRuLmNyZWF0ZV9pY29uX2J1dHRvbnNfbWU9 Cm51KFt7aWNvbl9jbGFzczoicGx1cy1idXR0b24iLHRpdGxlOiJBZGQgdHJhY2tzIixvbl9jbGlj azpmdW5jdGlvbigpe2ouc2VsZT0KY3RfZGF0YXNldHMoZ2FsYXh5X2NvbmZpZy5yb290KyJ2aXN1 YWxpemF0aW9uL2xpc3RfY3VycmVudF9oaXN0b3J5X2RhdGFzZXRzPQoiLGdhbGF4eV9jb25maWcu cm9vdCsiYXBpL2RhdGFzZXRzIixwLmdldCgiZGJrZXkiKSxmdW5jdGlvbihzKXtwLmFkZF90cmFj a3M9CihzKX0pfX0se2ljb25fY2xhc3M6ImdlYXIiLHRpdGxlOiJTZXR0aW5ncyIsb25fY2xpY2s6 ZnVuY3Rpb24oKXt2YXIgcz0zRG5ldz0KIGMuQ29uZmlnU2V0dGluZ0NvbGxlY3Rpb25WaWV3KHtj b2xsZWN0aW9uOnAuZ2V0KCJjb25maWciKX0pO3MucmVuZGVyX2luX21vPQpkYWwoIkNvbmZpZ3Vy ZSBWaXN1YWxpemF0aW9uIil9fSx7aWNvbl9jbGFzczoiZGlzay0tYXJyb3ciLHRpdGxlOiJTYXZl Iixvbl89CmNsaWNrOmZ1bmN0aW9uKCl7R2FsYXh5Lm1vZGFsLnNob3coe3RpdGxlOiJTYXZpbmcu Li4iLGJvZHk6InByb2dyZXNzIn0pOyQuYT0KamF4KHt1cmw6Z2FsYXh5X2NvbmZpZy5yb290KyJ2 aXN1YWxpemF0aW9uL3NhdmUiLHR5cGU6IlBPU1QiLGRhdGFUeXBlOiJqc29uPQoiLGRhdGE6e2lk OnAuZ2V0KCJ2aXNfaWQiKSx0aXRsZTpwLmdldCgidGl0bGUiKSxkYmtleTpwLmdldCgiZGJrZXki KSx0eXBlOiI9CnRyYWNrc3RlciIsdmlzX2pzb246SlNPTi5zdHJpbmdpZnkocCl9fSkuc3VjY2Vz cyhmdW5jdGlvbihzKXtHYWxheHkubW9kYWwuaD0KaWRlKCk7cC5zZXQoInZpc19pZCIscy52aXNf aWQpfSkuZXJyb3IoZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuc2hvdyh7dGl0bGU6PQoiQ291bGQg Tm90IFNhdmUiLGJvZHk6IkNvdWxkIG5vdCBzYXZlIHZpc3VhbGl6YXRpb24uIFBsZWFzZSB0cnkg YWdhaW4gbGF0ZXI9Ci4iLGJ1dHRvbnM6e0NhbmNlbDpmdW5jdGlvbigpe0dhbGF4eS5tb2RhbC5o aWRlKCl9fX0pfSl9fSx7aWNvbl9jbGFzczoiY3Jvcz0Kcy1jaXJjbGUiLHRpdGxlOiJDbG9zZSIs b25fY2xpY2s6ZnVuY3Rpb24oKXt3aW5kb3cubG9jYXRpb249M0RnYWxheHlfY29uZmlnPQoucm9v dCsidmlzdWFsaXphdGlvbi9saXN0In19XSx7dG9vbHRpcF9jb25maWc6e3BsYWNlbWVudDoiYm90 dG9tIn19KTtxLiRlbC49CmF0dHIoInN0eWxlIiwiZmxvYXQ6IHJpZ2h0Iik7JCgiI2NlbnRlciAu dW5pZmllZC1wYW5lbC1oZWFkZXItaW5uZXIiKS5hcHBlbj0KZChxLiRlbCk7JCgiLm1lbnUtYnV0 dG9uIikudG9vbHRpcCh7cGxhY2VtZW50OiJib3R0b20ifSl9fSk7cmV0dXJue0dhbGF4eUFwPQpw OmZ9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorcmVxdWlyZShbInV0aWxzL3V0aWxz IixdLGZ1bmN0aW9uKGEpe2EuY3NzTG9hZEZpbGUoInN0YXRpYy9zdHlsZS9jaXJjc3Rlci49CmNz cyIpfSk7ZGVmaW5lKFsibGlicy91bmRlcnNjb3JlIiwibGlicy9kMyIsInZpei92aXN1YWxpemF0 aW9uIiwidXRpbHMvY29uZj0KaWciLCJtdmMvdWkvaWNvbi1idXR0b24iLCJsaWJzL2ZhcmJ0YXN0 aWMiXSxmdW5jdGlvbihpLG4sayxjLGYpe3ZhciBvPTNEQmFjPQprYm9uZS5Nb2RlbC5leHRlbmQo e2lzX3Zpc2libGU6ZnVuY3Rpb24ocyxwKXt2YXIgcT0zRHMuZ2V0Qm91bmRpbmdDbGllbnRSZWM9 CnQoKSxyPTNEJCgic3ZnIilbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYocS5yaWdodDww fHxxLmxlZnQ+ci5yaWdodHx8cT0KLmJvdHRvbTwwfHxxLnRvcD5yLmJvdHRvbSl7cmV0dXJuIGZh bHNlfXJldHVybiB0cnVlfX0pO3ZhciBqPTNEe2RyYXdUaWNrczpmPQp1bmN0aW9uKHQscyx4LHIs cCl7dmFyIHc9M0R0LmFwcGVuZCgiZyIpLnNlbGVjdEFsbCgiZyIpLmRhdGEocykuZW50ZXIoKS5h cHA9CmVuZCgiZyIpLnNlbGVjdEFsbCgiZyIpLmRhdGEoeCkuZW50ZXIoKS5hcHBlbmQoImciKS5h dHRyKCJjbGFzcyIsInRpY2siKS5hdD0KdHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oeSl7cmV0dXJu InJvdGF0ZSgiKyh5LmFuZ2xlKjE4MC9NYXRoLlBJLTkwKSsiKXRyYW5zPQpsYXRlKCIreS5yYWRp dXMrIiwwKSJ9KTt2YXIgdj0zRFtdLHU9M0RbXSxxPTNEZnVuY3Rpb24oeSl7cmV0dXJuIHkuYW5n bGU+TWE9CnRoLlBJPyJlbmQiOm51bGx9O2lmKHApe3Y9M0RbMCwwLDAsLTRdO3U9M0RbNCwwLCIi LCIuMzVlbSJdO3E9M0RudWxsfWVsc2V7dj0KPTNEWzEsMCw0LDBdO3U9M0RbMCw0LCIuMzVlbSIs IiJdfXcuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLHZbMF0pLmF0dHIoInkxPQoiLHZbMV0pLmF0 dHIoIngyIix2WzJdKS5hdHRyKCJ5MSIsdlszXSkuc3R5bGUoInN0cm9rZSIsIiMwMDAiKTtyZXR1 cm4gdy5hcHA9CmVuZCgidGV4dCIpLmF0dHIoIngiLHVbMF0pLmF0dHIoInkiLHVbMV0pLmF0dHIo ImR4Iix1WzJdKS5hdHRyKCJkeSIsdVszXSkuYT0KdHRyKCJ0ZXh0LWFuY2hvciIscSkuYXR0cigi dHJhbnNmb3JtIixyKS50ZXh0KGZ1bmN0aW9uKHkpe3JldHVybiB5LmxhYmVsfSl9PQosZm9ybWF0 TnVtOmZ1bmN0aW9uKHEscCl7aWYocD0zRD0zRD0zRHVuZGVmaW5lZCl7cD0zRDJ9aWYocT0zRD0z RD0zRG51bGwpe3I9CmV0dXJuIG51bGx9dmFyIHM9M0RudWxsO2lmKE1hdGguYWJzKHEpPDEpe3M9 M0RxLnRvUHJlY2lzaW9uKHApfWVsc2V7dmFyIHI9Cj0zRE1hdGgucm91bmQocS50b1ByZWNpc2lv bihwKSk7cT0zRE1hdGguYWJzKHEpO2lmKHE8MTAwMCl7cz0zRHJ9ZWxzZXtpZihxPD0KMTAwMDAw MCl7cz0zRE1hdGgucm91bmQoKHIvMTAwMCkudG9QcmVjaXNpb24oMykpLnRvRml4ZWQoMCkrIksi fWVsc2V7aWYocTwxPQowMDAwMDAwMDApe3M9M0RNYXRoLnJvdW5kKChyLzEwMDAwMDApLnRvUHJl Y2lzaW9uKDMpKS50b0ZpeGVkKDApKyJNIn19fX1yZXQ9CnVybiBzfX07dmFyIGQ9M0RCYWNrYm9u ZS5Nb2RlbC5leHRlbmQoe30pO3ZhciBhPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2NsYT0Kc3NO YW1lOiJjaXJjc3RlciIsaW5pdGlhbGl6ZTpmdW5jdGlvbihwKXt0aGlzLmdlbm9tZT0zRHAuZ2Vu b21lO3RoaXMubGFiZWxfPQphcmNfaGVpZ2h0PTNENTA7dGhpcy5zY2FsZT0zRDE7dGhpcy5jaXJj dWxhcl92aWV3cz0zRG51bGw7dGhpcy5jaG9yZHNfdmlld3M9Cj0zRG51bGw7dGhpcy5tb2RlbC5n ZXQoImRyYXdhYmxlcyIpLm9uKCJhZGQiLHRoaXMuYWRkX3RyYWNrLHRoaXMpO3RoaXMubW9kZT0K bC5nZXQoImRyYXdhYmxlcyIpLm9uKCJyZW1vdmUiLHRoaXMucmVtb3ZlX3RyYWNrLHRoaXMpO3Zh ciBxPTNEdGhpcy5tb2RlbC5nPQpldCgiY29uZmlnIik7cS5nZXQoImFyY19kYXRhc2V0X2hlaWdo dCIpLm9uKCJjaGFuZ2U6dmFsdWUiLHRoaXMudXBkYXRlX3RyYWM9CmtfYm91bmRzLHRoaXMpO3Eu Z2V0KCJ0cmFja19nYXAiKS5vbigiY2hhbmdlOnZhbHVlIix0aGlzLnVwZGF0ZV90cmFja19ib3Vu ZD0Kcyx0aGlzKX0sZ2V0X2NpcmN1bGFyX3RyYWNrczpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1v ZGVsLmdldCgiZHJhd2FibGVzIikuPQpmaWx0ZXIoZnVuY3Rpb24ocCl7cmV0dXJuIHAuZ2V0KCJ0 cmFja190eXBlIikhPTNEPTNEIkRpYWdvbmFsSGVhdG1hcFRyYWNrIn09Cil9LGdldF9jaG9yZF90 cmFja3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb2RlbC5nZXQoImRyYXdhYmxlcyIpLmZpbHRl cihmdT0KbmN0aW9uKHApe3JldHVybiBwLmdldCgidHJhY2tfdHlwZSIpPTNEPTNEPTNEIkRpYWdv bmFsSGVhdG1hcFRyYWNrIn0pfSxnZXRfPQp0cmFja3NfYm91bmRzOmZ1bmN0aW9uKCl7dmFyIHI9 M0R0aGlzLmdldF9jaXJjdWxhcl90cmFja3MoKSx0PTNEdGhpcy5tb2RlbC49CmdldCgiY29uZmln IikuZ2V0X3ZhbHVlKCJhcmNfZGF0YXNldF9oZWlnaHQiKSxzPTNEdGhpcy5tb2RlbC5nZXQoImNv bmZpZyIpLj0KZ2V0X3ZhbHVlKCJ0cmFja19nYXAiKSxwPTNETWF0aC5taW4odGhpcy4kZWwud2lk dGgoKSx0aGlzLiRlbC5oZWlnaHQoKSktMjAsPQp2PTNEcC8yLXIubGVuZ3RoKih0K3MpK3MtdGhp cy5sYWJlbF9hcmNfaGVpZ2h0LHU9M0RuLnJhbmdlKHYscC8yLHQrcyk7dmFyIHE9Cj0zRHRoaXM7 cmV0dXJuIGkubWFwKHUsZnVuY3Rpb24odyl7cmV0dXJuW3csdyt0XX0pfSxyZW5kZXI6ZnVuY3Rp b24oKXt2YXIgeT0KPTNEdGhpcyxwPTNEeS4kZWwud2lkdGgoKSx4PTNEeS4kZWwuaGVpZ2h0KCks dT0zRHRoaXMuZ2V0X2NpcmN1bGFyX3RyYWNrcygpPQoscz0zRHRoaXMuZ2V0X2Nob3JkX3RyYWNr cygpLHI9M0R5Lm1vZGVsLmdldCgiY29uZmlnIikuZ2V0X3ZhbHVlKCJ0b3RhbF9nYXA9CiIpLHQ9 M0R0aGlzLmdldF90cmFja3NfYm91bmRzKCkscT0zRG4uc2VsZWN0KHkuJGVsWzBdKS5hcHBlbmQo InN2ZyIpLmF0dHIoIj0Kd2lkdGgiLHApLmF0dHIoImhlaWdodCIseCkuYXR0cigicG9pbnRlci1l dmVudHMiLCJhbGwiKS5hcHBlbmQoInN2ZzpnIikuY2FsPQpsKG4uYmVoYXZpb3Iuem9vbSgpLm9u KCJ6b29tIixmdW5jdGlvbigpe3ZhciB6PTNEbi5ldmVudC5zY2FsZTtxLmF0dHIoInRyYW49CnNm b3JtIiwidHJhbnNsYXRlKCIrbi5ldmVudC50cmFuc2xhdGUrIikgc2NhbGUoIit6KyIpIik7aWYo eS5zY2FsZSE9M0Q9M0R6KT0Ke2lmKHkuem9vbV9kcmFnX3RpbWVvdXQpe2NsZWFyVGltZW91dCh5 Lnpvb21fZHJhZ190aW1lb3V0KX15Lnpvb21fZHJhZ190aW1lPQpvdXQ9M0RzZXRUaW1lb3V0KGZ1 bmN0aW9uKCl7fSw0MDApfX0pKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitwLzIrIiw9 CiIreC8yKyIpIikuYXBwZW5kKCJzdmc6ZyIpLmF0dHIoImNsYXNzIiwidHJhY2tzIik7dGhpcy5j aXJjdWxhcl92aWV3cz0zRHUubT0KYXAoZnVuY3Rpb24oQSxCKXt2YXIgej0zRG5ldyBlKHtlbDpx LmFwcGVuZCgiZyIpWzBdLHRyYWNrOkEscmFkaXVzX2JvdW5kczp0PQpbQl0sZ2Vub21lOnkuZ2Vu b21lLHRvdGFsX2dhcDpyfSk7ei5yZW5kZXIoKTtyZXR1cm4gen0pO3RoaXMuY2hvcmRzX3ZpZXdz PQo9M0RzLm1hcChmdW5jdGlvbihBKXt2YXIgej0zRG5ldyBsKHtlbDpxLmFwcGVuZCgiZyIpWzBd LHRyYWNrOkEscmFkaXVzX2JvdW49CmRzOnRbMF0sZ2Vub21lOnkuZ2Vub21lLHRvdGFsX2dhcDpy fSk7ei5yZW5kZXIoKTtyZXR1cm4gen0pO3ZhciB3PTNEdGhpcy5jaT0KcmN1bGFyX3ZpZXdzW3Ro aXMuY2lyY3VsYXJfdmlld3MubGVuZ3RoLTFdLnJhZGl1c19ib3VuZHNbMV0sdj0zRFt3LHcrdGhp cy5sPQphYmVsX2FyY19oZWlnaHRdO3RoaXMubGFiZWxfdHJhY2tfdmlldz0zRG5ldyBiKHtlbDpx LmFwcGVuZCgiZyIpWzBdLHRyYWNrOm49CmV3IGQoKSxyYWRpdXNfYm91bmRzOnYsZ2Vub21lOnku Z2Vub21lLHRvdGFsX2dhcDpyfSk7dGhpcy5sYWJlbF90cmFja192aWV3Lj0KcmVuZGVyKCl9LGFk ZF90cmFjazpmdW5jdGlvbih2KXt2YXIgcT0zRHRoaXMubW9kZWwuZ2V0KCJjb25maWciKS5nZXRf dmFsdWUoPQoidG90YWxfZ2FwIik7aWYodi5nZXQoInRyYWNrX3R5cGUiKT0zRD0zRD0zRCJEaWFn b25hbEhlYXRtYXBUcmFjayIpe3ZhciByPQo9M0R0aGlzLmNpcmN1bGFyX3ZpZXdzWzBdLnJhZGl1 c19ib3VuZHMsdT0zRG5ldyBsKHtlbDpuLnNlbGVjdCgiZy50cmFja3MiKS49CmFwcGVuZCgiZyIp WzBdLHRyYWNrOnYscmFkaXVzX2JvdW5kczpyLGdlbm9tZTp0aGlzLmdlbm9tZSx0b3RhbF9nYXA6 cX0pO3Uucj0KZW5kZXIoKTt0aGlzLmNob3Jkc192aWV3cy5wdXNoKHUpfWVsc2V7dmFyIHQ9M0R0 aGlzLmdldF90cmFja3NfYm91bmRzKCk7aS5lPQphY2godGhpcy5jaXJjdWxhcl92aWV3cyxmdW5j dGlvbih3LHgpe3cudXBkYXRlX3JhZGl1c19ib3VuZHModFt4XSl9KTtpLmVhY2g9Cih0aGlzLmNo b3Jkc192aWV3cyxmdW5jdGlvbih3KXt3LnVwZGF0ZV9yYWRpdXNfYm91bmRzKHRbMF0pfSk7dmFy IHM9M0R0aGlzLj0KY2lyY3VsYXJfdmlld3MubGVuZ3RoLHA9M0RuZXcgZSh7ZWw6bi5zZWxlY3Qo ImcudHJhY2tzIikuYXBwZW5kKCJnIilbMF0sdHJhPQpjazp2LHJhZGl1c19ib3VuZHM6dFtzXSxn ZW5vbWU6dGhpcy5nZW5vbWUsdG90YWxfZ2FwOnF9KTtwLnJlbmRlcigpO3RoaXMuY2k9CnJjdWxh cl92aWV3cy5wdXNoKHApfX0scmVtb3ZlX3RyYWNrOmZ1bmN0aW9uKHEscyxyKXt2YXIgcD0zRHRo aXMuY2lyY3VsYXJfdj0KaWV3c1tyLmluZGV4XTt0aGlzLmNpcmN1bGFyX3ZpZXdzLnNwbGljZShy LmluZGV4LDEpO3AuJGVsLnJlbW92ZSgpO3ZhciB0PTNEPQp0aGlzLmdldF90cmFja3NfYm91bmRz KCk7aS5lYWNoKHRoaXMuY2lyY3VsYXJfdmlld3MsZnVuY3Rpb24odSx2KXt1LnVwZGF0ZV89CnJh ZGl1c19ib3VuZHModFt2XSl9KX0sdXBkYXRlX3RyYWNrX2JvdW5kczpmdW5jdGlvbigpe3ZhciBw PTNEdGhpcy5nZXRfdHJhYz0Ka3NfYm91bmRzKCk7aS5lYWNoKHRoaXMuY2lyY3VsYXJfdmlld3Ms ZnVuY3Rpb24ocSxyKXtxLnVwZGF0ZV9yYWRpdXNfYm91bmRzPQoocFtyXSl9KTtpLmVhY2godGhp cy5jaG9yZHNfdmlld3MsZnVuY3Rpb24ocSl7cS51cGRhdGVfcmFkaXVzX2JvdW5kcyhwWzBdKX09 Cil9fSk7dmFyIG09M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7dGFnTmFtZToiZyIsaW5pdGlhbGl6 ZTpmdW5jdGlvbihwKXt0aGlzLj0KYmdfc3Ryb2tlPTNEIiNkZGQiO3RoaXMubG9hZGluZ19iZ19m aWxsPTNEIiNmZmMiO3RoaXMuYmdfZmlsbD0zRCIjZGRkIjt0aGlzPQoudG90YWxfZ2FwPTNEcC50 b3RhbF9nYXA7dGhpcy50cmFjaz0zRHAudHJhY2s7dGhpcy5yYWRpdXNfYm91bmRzPTNEcC5yYWRp dXM9Cl9ib3VuZHM7dGhpcy5nZW5vbWU9M0RwLmdlbm9tZTt0aGlzLmNocm9tc19sYXlvdXQ9M0R0 aGlzLl9jaHJvbXNfbGF5b3V0KCk7dD0KaGlzLmRhdGFfYm91bmRzPTNEW107dGhpcy5zY2FsZT0z RDE7dGhpcy5wYXJlbnRfZWx0PTNEbi5zZWxlY3QodGhpcy4kZWxbMF0pPQp9LGdldF9maWxsX2Nv bG9yOmZ1bmN0aW9uKCl7dmFyIHA9M0R0aGlzLnRyYWNrLmdldCgiY29uZmlnIikuZ2V0X3ZhbHVl KCJibG89CmNrX2NvbG9yIik7aWYoIXApe3A9M0R0aGlzLnRyYWNrLmdldCgiY29uZmlnIikuZ2V0 X3ZhbHVlKCJjb2xvciIpfXJldHVybiBwfT0KLHJlbmRlcjpmdW5jdGlvbigpe3ZhciB0PTNEdGhp cy5wYXJlbnRfZWx0O3ZhciBzPTNEdGhpcy5jaHJvbXNfbGF5b3V0LHY9M0RuPQouc3ZnLmFyYygp LmlubmVyUmFkaXVzKHRoaXMucmFkaXVzX2JvdW5kc1swXSkub3V0ZXJSYWRpdXModGhpcy5yYWRp dXNfYm91bmQ9CnNbMV0pLHA9M0R0LnNlbGVjdEFsbCgiZyIpLmRhdGEocykuZW50ZXIoKS5hcHBl bmQoInN2ZzpnIikscj0zRHAuYXBwZW5kKCJwYT0KdGgiKS5hdHRyKCJkIix2KS5hdHRyKCJjbGFz cyIsImNocm9tLWJhY2tncm91bmQiKS5zdHlsZSgic3Ryb2tlIix0aGlzLmJnX3N0PQpyb2tlKS5z dHlsZSgiZmlsbCIsdGhpcy5sb2FkaW5nX2JnX2ZpbGwpO3IuYXBwZW5kKCJ0aXRsZSIpLnRleHQo ZnVuY3Rpb24oeCk9CntyZXR1cm4geC5kYXRhLmNocm9tfSk7dmFyIHE9M0R0aGlzLHU9M0RxLnRy YWNrLmdldCgiZGF0YV9tYW5hZ2VyIiksdz0zRCh1Pz0KdS5kYXRhX2lzX3JlYWR5KCk6dHJ1ZSk7 JC53aGVuKHcpLnRoZW4oZnVuY3Rpb24oKXskLndoZW4ocS5fcmVuZGVyX2RhdGEodCkpPQoudGhl bihmdW5jdGlvbigpe3Iuc3R5bGUoImZpbGwiLHEuYmdfZmlsbCk7cS5yZW5kZXJfbGFiZWxzKCl9 KX0pfSxyZW5kZXJfbGE9CmJlbHM6ZnVuY3Rpb24oKXt9LHVwZGF0ZV9yYWRpdXNfYm91bmRzOmZ1 bmN0aW9uKHEpe3RoaXMucmFkaXVzX2JvdW5kcz0zRHE7dj0KYXIgcD0zRG4uc3ZnLmFyYygpLmlu bmVyUmFkaXVzKHRoaXMucmFkaXVzX2JvdW5kc1swXSkub3V0ZXJSYWRpdXModGhpcy5yYWRpPQp1 c19ib3VuZHNbMV0pO3RoaXMucGFyZW50X2VsdC5zZWxlY3RBbGwoImc+cGF0aC5jaHJvbS1iYWNr Z3JvdW5kIikudHJhbnNpdGk9Cm9uKCkuZHVyYXRpb24oMTAwMCkuYXR0cigiZCIscCk7dGhpcy5f dHJhbnNpdGlvbl9jaHJvbV9kYXRhKCk7dGhpcy5fdHJhbnNpdD0KaW9uX2xhYmVscygpfSx1cGRh dGVfc2NhbGU6ZnVuY3Rpb24ocyl7dmFyIHI9M0R0aGlzLnNjYWxlO3RoaXMuc2NhbGU9M0RzO2lm PQooczw9M0RyKXtyZXR1cm59dmFyIHE9M0R0aGlzLHA9M0RuZXcgbygpO3RoaXMucGFyZW50X2Vs dC5zZWxlY3RBbGwoInBhdGguY2g9CnJvbS1kYXRhIikuZmlsdGVyKGZ1bmN0aW9uKHUsdCl7cmV0 dXJuIHAuaXNfdmlzaWJsZSh0aGlzKX0pLmVhY2goZnVuY3Rpb24oej0KLHYpe3ZhciB5PTNEbi5z ZWxlY3QodGhpcyksdT0zRHkuYXR0cigiY2hyb20iKSx4PTNEcS5nZW5vbWUuZ2V0X2Nocm9tX3Jl Z2lvPQpuKHUpLHc9M0RxLnRyYWNrLmdldCgiZGF0YV9tYW5hZ2VyIiksdDtpZighdy5jYW5fZ2V0 X21vcmVfZGV0YWlsZWRfZGF0YSh4KSk9CntyZXR1cm59dD0zRHEudHJhY2suZ2V0KCJkYXRhX21h bmFnZXIiKS5nZXRfbW9yZV9kZXRhaWxlZF9kYXRhKHgsIkNvdmVyYWdlIj0KLDAscyk7JC53aGVu KHQpLnRoZW4oZnVuY3Rpb24oQyl7eS5yZW1vdmUoKTtxLl91cGRhdGVfZGF0YV9ib3VuZHMoKTt2 YXIgQj0KPTNEaS5maW5kKHEuY2hyb21zX2xheW91dCxmdW5jdGlvbihEKXtyZXR1cm4gRC5kYXRh LmNocm9tPTNEPTNEPTNEdX0pO3ZhciBBPQo9M0RxLmdldF9maWxsX2NvbG9yKCk7cS5fcmVuZGVy X2Nocm9tX2RhdGEocS5wYXJlbnRfZWx0LEIsQykuc3R5bGUoInN0cm9rZSI9CixBKS5zdHlsZSgi ZmlsbCIsQSl9KX0pO3JldHVybiBxfSxfdHJhbnNpdGlvbl9jaHJvbV9kYXRhOmZ1bmN0aW9uKCl7 dmFyIHE9Cj0zRHRoaXMudHJhY2sscz0zRHRoaXMuY2hyb21zX2xheW91dCxwPTNEdGhpcy5wYXJl bnRfZWx0LnNlbGVjdEFsbCgiZz5wYXRoLj0KY2hyb20tZGF0YSIpLHQ9M0RwWzBdLmxlbmd0aDtp Zih0PjApe3ZhciByPTNEdGhpczskLndoZW4ocS5nZXQoImRhdGFfbWFuYWdlPQpyIikuZ2V0X2dl bm9tZV93aWRlX2RhdGEodGhpcy5nZW5vbWUpKS50aGVuKGZ1bmN0aW9uKHcpe3ZhciB2PTNEaS5y ZWplY3QoaS49Cm1hcCh3LGZ1bmN0aW9uKHgseSl7dmFyIHo9M0RudWxsLEE9M0RyLl9nZXRfcGF0 aF9mdW5jdGlvbihzW3ldLHgpO2lmKEEpe3o9Cj0zREEoeC5kYXRhKX1yZXR1cm4gen0pLGZ1bmN0 aW9uKHgpe3JldHVybiB4PTNEPTNEPTNEbnVsbH0pO3ZhciB1PTNEcS5nZXQoIj0KY29uZmlnIiku Z2V0X3ZhbHVlKCJjb2xvciIpO3AuZWFjaChmdW5jdGlvbih5LHgpe24uc2VsZWN0KHRoaXMpLnRy YW5zaXRpb24oPQopLmR1cmF0aW9uKDEwMDApLnN0eWxlKCJzdHJva2UiLHUpLnN0eWxlKCJmaWxs Iix1KS5hdHRyKCJkIix2W3hdKX0pfSl9fSxfdHI9CmFuc2l0aW9uX2xhYmVsczpmdW5jdGlvbigp e30sX3VwZGF0ZV9kYXRhX2JvdW5kczpmdW5jdGlvbihxKXt2YXIgcD0zRHRoaXMuZD0KYXRhX2Jv dW5kczt0aGlzLmRhdGFfYm91bmRzPTNEcXx8dGhpcy5nZXRfZGF0YV9ib3VuZHModGhpcy50cmFj ay5nZXQoImRhdGFfPQptYW5hZ2VyIikuZ2V0X2dlbm9tZV93aWRlX2RhdGEodGhpcy5nZW5vbWUp KTt0aGlzLl90cmFuc2l0aW9uX2Nocm9tX2RhdGEoKX09CixfcmVuZGVyX2RhdGE6ZnVuY3Rpb24o cyl7dmFyIHI9M0R0aGlzLHE9M0R0aGlzLmNocm9tc19sYXlvdXQscD0zRHRoaXMudHJhYz0Kayx0 PTNEJC5EZWZlcnJlZCgpOyQud2hlbihwLmdldCgiZGF0YV9tYW5hZ2VyIikuZ2V0X2dlbm9tZV93 aWRlX2RhdGEodGhpcy5nPQplbm9tZSkpLnRoZW4oZnVuY3Rpb24odil7ci5kYXRhX2JvdW5kcz0z RHIuZ2V0X2RhdGFfYm91bmRzKHYpO3AuZ2V0KCJjb25maWc9CiIpLnNldF92YWx1ZSgibWluX3Zh bHVlIixyLmRhdGFfYm91bmRzWzBdLHtzaWxlbnQ6dHJ1ZX0pO3AuZ2V0KCJjb25maWciKS5zZT0K dF92YWx1ZSgibWF4X3ZhbHVlIixyLmRhdGFfYm91bmRzWzFdLHtzaWxlbnQ6dHJ1ZX0pO2xheW91 dF9hbmRfZGF0YT0zRGkuemlwPQoocSx2KSxjaHJvbXNfZGF0YV9sYXlvdXQ9M0RpLm1hcChsYXlv dXRfYW5kX2RhdGEsZnVuY3Rpb24odyl7dmFyIHg9M0R3WzBdLHk9Cj0zRHdbMV07cmV0dXJuIHIu X3JlbmRlcl9jaHJvbV9kYXRhKHMseCx5KX0pO3ZhciB1PTNEci5nZXRfZmlsbF9jb2xvcigpO3Iu cD0KYXJlbnRfZWx0LnNlbGVjdEFsbCgicGF0aC5jaHJvbS1kYXRhIikuc3R5bGUoInN0cm9rZSIs dSkuc3R5bGUoImZpbGwiLHUpO3QuPQpyZXNvbHZlKHMpfSk7cmV0dXJuIHR9LF9yZW5kZXJfY2hy b21fZGF0YTpmdW5jdGlvbihwLHEscil7fSxfZ2V0X3BhdGhfZnVuY3Q9CmlvbjpmdW5jdGlvbihx LHApe30sX2Nocm9tc19sYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgcT0zRHRoaXMuZ2Vub21lLmdldF9j aHJvbT0Kc19pbmZvKCkscz0zRG4ubGF5b3V0LnBpZSgpLnZhbHVlKGZ1bmN0aW9uKHUpe3JldHVy biB1Lmxlbn0pLnNvcnQobnVsbCksdD0KPTNEcyhxKSxwPTNEMipNYXRoLlBJKnRoaXMudG90YWxf Z2FwL3EubGVuZ3RoLHI9M0RpLm1hcCh0LGZ1bmN0aW9uKHcsdil7dmFyPQogdT0zRHcuZW5kQW5n bGUtcDt3LmVuZEFuZ2xlPTNEKHU+dy5zdGFydEFuZ2xlP3U6dy5zdGFydEFuZ2xlKTtyZXR1cm4g d30pO3I9CmV0dXJuIHJ9fSk7dmFyIGI9M0RtLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihw KXttLnByb3RvdHlwZS5pbml0aWFsaXplLj0KY2FsbCh0aGlzLHApO3RoaXMuaW5uZXJSYWRpdXM9 M0R0aGlzLnJhZGl1c19ib3VuZHNbMF07dGhpcy5yYWRpdXNfYm91bmRzWzBdPQo9M0R0aGlzLnJh ZGl1c19ib3VuZHNbMV07dGhpcy5iZ19zdHJva2U9M0QiI2ZmZiI7dGhpcy5iZ19maWxsPTNEIiNm ZmYiO3RoaXM9Ci5taW5fYXJjX2xlbj0zRDAuMDV9LF9yZW5kZXJfZGF0YTpmdW5jdGlvbihyKXt2 YXIgcT0zRHRoaXMscD0zRHIuc2VsZWN0QWxsKD0KImciKTtwLnNlbGVjdEFsbCgicGF0aCIpLmF0 dHIoImlkIixmdW5jdGlvbih2KXtyZXR1cm4ibGFiZWwtIit2LmRhdGEuY2hyb219PQopO3AuYXBw ZW5kKCJzdmc6dGV4dCIpLmZpbHRlcihmdW5jdGlvbih2KXtyZXR1cm4gdi5lbmRBbmdsZS12LnN0 YXJ0QW5nbGU+cS49Cm1pbl9hcmNfbGVufSkuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5h cHBlbmQoInN2Zzp0ZXh0UGF0aCIpLmF0dHIoImNsYT0Kc3MiLCJjaHJvbS1sYWJlbCIpLmF0dHIo InhsaW5rOmhyZWYiLGZ1bmN0aW9uKHYpe3JldHVybiIjbGFiZWwtIit2LmRhdGEuY2hyPQpvbX0p LmF0dHIoInN0YXJ0T2Zmc2V0IiwiMjUlIikudGV4dChmdW5jdGlvbih2KXtyZXR1cm4gdi5kYXRh LmNocm9tfSk7dmFyIHM9Cj0zRGZ1bmN0aW9uKHgpe3ZhciB2PTNEKHguZW5kQW5nbGUteC5zdGFy dEFuZ2xlKS94LnZhbHVlLHc9M0RuLnJhbmdlKDAseC52YT0KbHVlLDI1MDAwMDAwKS5tYXAoZnVu Y3Rpb24oeSx6KXtyZXR1cm57cmFkaXVzOnEuaW5uZXJSYWRpdXMsYW5nbGU6eSp2K3guc3RhPQpy dEFuZ2xlLGxhYmVsOno9M0Q9M0Q9M0QwPzA6KHolMz9udWxsOnEuZm9ybWF0TnVtKHkpKX19KTtp Zih3Lmxlbmd0aDw0KXt3W3c9Ci5sZW5ndGgtMV0ubGFiZWw9M0RxLmZvcm1hdE51bShNYXRoLnJv dW5kKCh3W3cubGVuZ3RoLTFdLmFuZ2xlLXguc3RhcnRBbmdsZT0KKS92KSl9cmV0dXJuIHd9O3Zh ciB1PTNEZnVuY3Rpb24odil7cmV0dXJuIHYuYW5nbGU+TWF0aC5QST8icm90YXRlKDE4MCl0cmFu PQpzbGF0ZSgtMTYpIjpudWxsfTt2YXIgdD0zRGkuZmlsdGVyKHRoaXMuY2hyb21zX2xheW91dCxm dW5jdGlvbih2KXtyZXR1cm4gdi49CmVuZEFuZ2xlLXYuc3RhcnRBbmdsZT5xLm1pbl9hcmNfbGVu fSk7dGhpcy5kcmF3VGlja3ModGhpcy5wYXJlbnRfZWx0LHQscyx1KT0KfX0pO2kuZXh0ZW5kKGIu cHJvdG90eXBlLGopO3ZhciBoPTNEbS5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24ocCl7bS5w cm90PQpvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyxwKTt2YXIgcT0zRHRoaXMudHJhY2suZ2V0 KCJjb25maWciKTtxLmdldCgibWluX3Y9CmFsdWUiKS5vbigiY2hhbmdlOnZhbHVlIix0aGlzLl91 cGRhdGVfbWluX21heCx0aGlzKTtxLmdldCgibWF4X3ZhbHVlIikub24oIj0KY2hhbmdlOnZhbHVl Iix0aGlzLl91cGRhdGVfbWluX21heCx0aGlzKTtxLmdldCgiY29sb3IiKS5vbigiY2hhbmdlOnZh bHVlIix0PQpoaXMuX3RyYW5zaXRpb25fY2hyb21fZGF0YSx0aGlzKX0sX3VwZGF0ZV9taW5fbWF4 OmZ1bmN0aW9uKCl7dmFyIHE9M0R0aGlzLnQ9CnJhY2suZ2V0KCJjb25maWciKSxwPTNEW3EuZ2V0 X3ZhbHVlKCJtaW5fdmFsdWUiKSxxLmdldF92YWx1ZSgibWF4X3ZhbHVlIildOz0KdGhpcy5fdXBk YXRlX2RhdGFfYm91bmRzKHApO3RoaXMucGFyZW50X2VsdC5zZWxlY3RBbGwoIi5taW5fbWF4Iiku dGV4dChmdW5jPQp0aW9uKHMscil7cmV0dXJuIHBbcl19KX0sX3F1YW50aWxlOmZ1bmN0aW9uKHEs cCl7cS5zb3J0KG4uYXNjZW5kaW5nKTtyZXR1cm49CiBuLnF1YW50aWxlKHEscCl9LF9yZW5kZXJf Y2hyb21fZGF0YTpmdW5jdGlvbihwLHMscSl7dmFyIHQ9M0R0aGlzLl9nZXRfcGF0aD0KX2Z1bmN0 aW9uKHMscSk7aWYoIXQpe3JldHVybiBudWxsfXZhciByPTNEcC5kYXR1bShxLmRhdGEpLHU9M0Ry LmFwcGVuZCgicGF0PQpoIikuYXR0cigiY2xhc3MiLCJjaHJvbS1kYXRhIikuYXR0cigiY2hyb20i LHMuZGF0YS5jaHJvbSkuYXR0cigiZCIsdCk7cmV0dXI9Cm4gdX0sX2dldF9wYXRoX2Z1bmN0aW9u OmZ1bmN0aW9uKHMscil7aWYodHlwZW9mIHI9M0Q9M0Q9M0Qic3RyaW5nInx8IXIuZGF0YT0KfHxy LmRhdGEubGVuZ3RoPTNEPTNEPTNEMCl7cmV0dXJuIG51bGx9dmFyIHA9M0RuLnNjYWxlLmxpbmVh cigpLmRvbWFpbih0aGlzPQouZGF0YV9ib3VuZHMpLnJhbmdlKHRoaXMucmFkaXVzX2JvdW5kcyku Y2xhbXAodHJ1ZSk7dmFyIHQ9M0RuLnNjYWxlLmxpbmVhcig9CikuZG9tYWluKFswLHIuZGF0YS5s ZW5ndGhdKS5yYW5nZShbcy5zdGFydEFuZ2xlLHMuZW5kQW5nbGVdKTt2YXIgcT0zRG4uc3ZnLj0K bGluZS5yYWRpYWwoKS5pbnRlcnBvbGF0ZSgibGluZWFyIikucmFkaXVzKGZ1bmN0aW9uKHUpe3Jl dHVybiBwKHVbMV0pfSkuYW5nPQpsZShmdW5jdGlvbih2LHUpe3JldHVybiB0KHUpfSk7cmV0dXJu IG4uc3ZnLmFyZWEucmFkaWFsKCkuaW50ZXJwb2xhdGUocS5pbnQ9CmVycG9sYXRlKCkpLmlubmVy UmFkaXVzKHAoMCkpLm91dGVyUmFkaXVzKHEucmFkaXVzKCkpLmFuZ2xlKHEuYW5nbGUoKSl9LHJl bj0KZGVyX2xhYmVsczpmdW5jdGlvbigpe3ZhciBwPTNEdGhpcyxyPTNEZnVuY3Rpb24oKXtyZXR1 cm4icm90YXRlKDkwKSJ9O3ZhciBxPQo9M0R0aGlzLmRyYXdUaWNrcyh0aGlzLnBhcmVudF9lbHQs W3RoaXMuY2hyb21zX2xheW91dFswXV0sdGhpcy5fZGF0YV9ib3VuZHM9Cl90aWNrc19mbigpLHIs dHJ1ZSkuY2xhc3NlZCgibWluX21heCIsdHJ1ZSk7aS5lYWNoKHEsZnVuY3Rpb24ocyl7JChzKS5j bGljaz0KKGZ1bmN0aW9uKCl7dmFyIHQ9M0RuZXcgYy5Db25maWdTZXR0aW5nQ29sbGVjdGlvblZp ZXcoe2NvbGxlY3Rpb246cC50cmFjay5nPQpldCgiY29uZmlnIil9KTt0LnJlbmRlcl9pbl9tb2Rh bCgiQ29uZmlndXJlIFRyYWNrIil9KX0pfSxfdHJhbnNpdGlvbl9sYWJlbHM9CjpmdW5jdGlvbigp e2lmKHRoaXMuZGF0YV9ib3VuZHMubGVuZ3RoPTNEPTNEPTNEMCl7cmV0dXJufXZhciBxPTNEdGhp cyxzPTNEaT0KLmZpbHRlcih0aGlzLmNocm9tc19sYXlvdXQsZnVuY3Rpb24odCl7cmV0dXJuIHQu ZW5kQW5nbGUtdC5zdGFydEFuZ2xlPjAuMDh9PQopLHI9M0RpLmZpbHRlcihzLGZ1bmN0aW9uKHUs dCl7cmV0dXJuIHQlMz0zRD0zRD0zRDB9KSxwPTNEaS5mbGF0dGVuKGkubWFwKHI9CixmdW5jdGlv bih0KXtyZXR1cm4gcS5fZGF0YV9ib3VuZHNfdGlja3NfZm4oKSh0KX0pKTt0aGlzLnBhcmVudF9l bHQuc2VsZWN0QT0KbGwoImcudGljayIpLmRhdGEocCkudHJhbnNpdGlvbigpLmF0dHIoInRyYW5z Zm9ybSIsZnVuY3Rpb24odCl7cmV0dXJuInJvdGF0PQplKCIrKHQuYW5nbGUqMTgwL01hdGguUEkt OTApKyIpdHJhbnNsYXRlKCIrdC5yYWRpdXMrIiwwKSJ9KX0sX2RhdGFfYm91bmRzX3Q9Cmlja3Nf Zm46ZnVuY3Rpb24oKXt2YXIgcD0zRHRoaXM7dmlzaWJsZUNocm9tcz0zRDA7cmV0dXJuIGZ1bmN0 aW9uKHEpe3JldHVybj0KW3tyYWRpdXM6cC5yYWRpdXNfYm91bmRzWzBdLGFuZ2xlOnEuc3RhcnRB bmdsZSxsYWJlbDpwLmZvcm1hdE51bShwLmRhdGFfYm91PQpuZHNbMF0pfSx7cmFkaXVzOnAucmFk aXVzX2JvdW5kc1sxXSxhbmdsZTpxLnN0YXJ0QW5nbGUsbGFiZWw6cC5mb3JtYXROdW0ocC49CmRh dGFfYm91bmRzWzFdKX1dfX0sZ2V0X2RhdGFfYm91bmRzOmZ1bmN0aW9uKHApe319KTtpLmV4dGVu ZChoLnByb3RvdHlwZSxqKT0KO3ZhciBlPTNEaC5leHRlbmQoe2dldF9kYXRhX2JvdW5kczpmdW5j dGlvbihxKXt2YXIgcD0zRGkuZmxhdHRlbihpLm1hcChxLGZ1PQpuY3Rpb24ocil7aWYocil7cmV0 dXJuIGkubWFwKHIuZGF0YSxmdW5jdGlvbihzKXtyZXR1cm4gcGFyc2VJbnQoc1sxXSwxMCl8fDA9 Cn0pfWVsc2V7cmV0dXJuIDB9fSkpO3JldHVybltpLm1pbihwKSx0aGlzLl9xdWFudGlsZShwLDAu OTgpfHxpLm1heChwKV19fSk7dj0KYXIgbD0zRG0uZXh0ZW5kKHtyZW5kZXI6ZnVuY3Rpb24oKXt2 YXIgcD0zRHRoaXM7JC53aGVuKHAudHJhY2suZ2V0KCJkYXRhX21hPQpuYWdlciIpLmRhdGFfaXNf cmVhZHkoKSkudGhlbihmdW5jdGlvbigpeyQud2hlbihwLnRyYWNrLmdldCgiZGF0YV9tYW5hZ2Vy Iik9Ci5nZXRfZ2Vub21lX3dpZGVfZGF0YShwLmdlbm9tZSkpLnRoZW4oZnVuY3Rpb24ocyl7dmFy IHI9M0RbXSxxPTNEcC5nZW5vbWUuZz0KZXRfY2hyb21zX2luZm8oKTtpLmVhY2gocyxmdW5jdGlv bih3LHYpe3ZhciB0PTNEcVt2XS5jaHJvbTt2YXIgdT0zRGkubWFwKHcuPQpkYXRhLGZ1bmN0aW9u KHkpe3ZhciB4PTNEcC5fZ2V0X3JlZ2lvbl9hbmdsZSh0LHlbMV0pLHo9M0RwLl9nZXRfcmVnaW9u X2FuZ2w9CmUoeVszXSx5WzRdKTtyZXR1cm57c291cmNlOntzdGFydEFuZ2xlOngsZW5kQW5nbGU6 eCswLjAxfSx0YXJnZXQ6e3N0YXJ0QW5nbD0KZTp6LGVuZEFuZ2xlOnorMC4wMX19fSk7cj0zRHIu Y29uY2F0KHUpfSk7cC5wYXJlbnRfZWx0LmFwcGVuZCgiZyIpLmF0dHIoImNsPQphc3MiLCJjaG9y ZCIpLnNlbGVjdEFsbCgicGF0aCIpLmRhdGEocikuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5zdHls ZSgiZmlsbCI9CixwLmdldF9maWxsX2NvbG9yKCkpLmF0dHIoImQiLG4uc3ZnLmNob3JkKCkucmFk aXVzKHAucmFkaXVzX2JvdW5kc1swXSkpLnN0eT0KbGUoIm9wYWNpdHkiLDEpfSl9KX0sdXBkYXRl X3JhZGl1c19ib3VuZHM6ZnVuY3Rpb24ocCl7dGhpcy5yYWRpdXNfYm91bmRzPTNEPQpwO3RoaXMu cGFyZW50X2VsdC5zZWxlY3RBbGwoInBhdGgiKS50cmFuc2l0aW9uKCkuYXR0cigiZCIsbi5zdmcu Y2hvcmQoKS5yYWQ9Cml1cyh0aGlzLnJhZGl1c19ib3VuZHNbMF0pKX0sX2dldF9yZWdpb25fYW5n bGU6ZnVuY3Rpb24ocixwKXt2YXIgcT0zRGkuZmluZD0KKHRoaXMuY2hyb21zX2xheW91dCxmdW5j dGlvbihzKXtyZXR1cm4gcy5kYXRhLmNocm9tPTNEPTNEPTNEcn0pO3JldHVybiBxLmVuPQpkQW5n bGUtKChxLmVuZEFuZ2xlLXEuc3RhcnRBbmdsZSkqKHEuZGF0YS5sZW4tcCkvcS5kYXRhLmxlbil9 fSk7dmFyIGc9M0RCYWM9Cmtib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKCl7 dmFyIHA9M0RuZXcgay5HZW5vbWUoZ2FsYXh5X2NvbmZpZz0KLmFwcC5nZW5vbWUpLHE9M0RuZXcg ay5HZW5vbWVWaXN1YWxpemF0aW9uKGdhbGF4eV9jb25maWcuYXBwLnZpel9jb25maWcpO3EuPQpn ZXQoImNvbmZpZyIpLmFkZChbe2tleToiYXJjX2RhdGFzZXRfaGVpZ2h0IixsYWJlbDoiQXJjIERh dGFzZXQgSGVpZ2h0Iix0eXA9CmU6ImludCIsdmFsdWU6MjUsdmlldzoiY2lyY3N0ZXIifSx7a2V5 OiJ0cmFja19nYXAiLGxhYmVsOiJHYXAgQmV0d2VlbiBUcmFjaz0KcyIsdHlwZToiaW50Iix2YWx1 ZTo1LHZpZXc6ImNpcmNzdGVyIn0se2tleToidG90YWxfZ2FwIixsYWJlbDoiR2FwIFswLTFdIix0 PQp5cGU6ImZsb2F0Iix2YWx1ZTowLjQsdmlldzoiY2lyY3N0ZXIiLGhpZGRlbjp0cnVlfV0pO3Zh ciBzPTNEbmV3IGEoe2VsOiQoIiM9CmNlbnRlciAudW5pZmllZC1wYW5lbC1ib2R5IiksZ2Vub21l OnAsbW9kZWw6cX0pO3MucmVuZGVyKCk7JCgiI2NlbnRlciAudW5pZj0KaWVkLXBhbmVsLWhlYWRl ci1pbm5lciIpLmFwcGVuZChnYWxheHlfY29uZmlnLmFwcC52aXpfY29uZmlnLnRpdGxlKyIgIitn YWxhPQp4eV9jb25maWcuYXBwLnZpel9jb25maWcuZGJrZXkpO3ZhciByPTNEZi5jcmVhdGVfaWNv bl9idXR0b25zX21lbnUoW3tpY29uX2M9Cmxhc3M6InBsdXMtYnV0dG9uIix0aXRsZToiQWRkIHRy YWNrcyIsb25fY2xpY2s6ZnVuY3Rpb24oKXtrLnNlbGVjdF9kYXRhc2V0cz0KKGdhbGF4eV9jb25m aWcucm9vdCsidmlzdWFsaXphdGlvbi9saXN0X2N1cnJlbnRfaGlzdG9yeV9kYXRhc2V0cyIsZ2Fs YXh5X2NvPQpuZmlnLnJvb3QrImFwaS9kYXRhc2V0cyIscS5nZXQoImRia2V5IiksZnVuY3Rpb24o dCl7cS5hZGRfdHJhY2tzKHQpfSl9fSx7aWM9Cm9uX2NsYXNzOiJnZWFyIix0aXRsZToiU2V0dGlu Z3MiLG9uX2NsaWNrOmZ1bmN0aW9uKCl7dmFyIHQ9M0RuZXcgYy5Db25maWdTZT0KdHRpbmdDb2xs ZWN0aW9uVmlldyh7Y29sbGVjdGlvbjpxLmdldCgiY29uZmlnIil9KTt0LnJlbmRlcl9pbl9tb2Rh bCgiQ29uZmlnPQp1cmUgVmlzdWFsaXphdGlvbiIpfX0se2ljb25fY2xhc3M6ImRpc2stLWFycm93 Iix0aXRsZToiU2F2ZSIsb25fY2xpY2s6ZnVuY3Q9Cmlvbigpe0dhbGF4eS5tb2RhbC5zaG93KHt0 aXRsZToiU2F2aW5nLi4uIixib2R5OiJwcm9ncmVzcyJ9KTskLmFqYXgoe3VybDpnYT0KbGF4eV9j b25maWcucm9vdCsidmlzdWFsaXphdGlvbi9zYXZlIix0eXBlOiJQT1NUIixkYXRhVHlwZToianNv biIsZGF0YTp7aWQ6PQpxLmdldCgidmlzX2lkIiksdGl0bGU6cS5nZXQoInRpdGxlIiksZGJrZXk6 cS5nZXQoImRia2V5IiksdHlwZToidHJhY2tzdGVyIiw9CnZpc19qc29uOkpTT04uc3RyaW5naWZ5 KHEpfX0pLnN1Y2Nlc3MoZnVuY3Rpb24odCl7R2FsYXh5Lm1vZGFsLmhpZGUoKTtxLnNldD0KKCJ2 aXNfaWQiLHQudmlzX2lkKX0pLmVycm9yKGZ1bmN0aW9uKCl7R2FsYXh5Lm1vZGFsLnNob3coe3Rp dGxlOiJDb3VsZCBOb3QgPQpTYXZlIixib2R5OiJDb3VsZCBub3Qgc2F2ZSB2aXN1YWxpemF0aW9u LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLiIsYnV0dG9uczo9CntDYW5jZWw6ZnVuY3Rpb24oKXtH YWxheHkubW9kYWwuaGlkZSgpfX19KX0pfX0se2ljb25fY2xhc3M6ImNyb3NzLWNpcmNsZSIsdD0K aXRsZToiQ2xvc2UiLG9uX2NsaWNrOmZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uPTNEZ2FsYXh5 X2NvbmZpZy5yb290KyJ2aXN1PQphbGl6YXRpb24vbGlzdCJ9fV0se3Rvb2x0aXBfY29uZmlnOntw bGFjZW1lbnQ6ImJvdHRvbSJ9fSk7ci4kZWwuYXR0cigic3R5bGU9CiIsImZsb2F0OiByaWdodCIp OyQoIiNjZW50ZXIgLnVuaWZpZWQtcGFuZWwtaGVhZGVyLWlubmVyIikuYXBwZW5kKHIuJGVsKTsk KD0KIi5tZW51LWJ1dHRvbiIpLnRvb2x0aXAoe3BsYWNlbWVudDoiYm90dG9tIn0pfX0pO3JldHVy bntHYWxheHlBcHA6Z319KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1yIDVk ZDY1NDlhYWMzYTI5YjE1NjJmZDNlNTMwNmMxYzY5ZWYwMDQ3YTcgLXIgNjViMjMzMGI4MjNjNzYx MTM2OWI5N2I9CjA4MjkyYTZjODY0ZGVlMTFjIHN0YXRpYy9zY3JpcHRzL3Zpei9jaXJjc3Rlci5q cwotLS0gYS9zdGF0aWMvc2NyaXB0cy92aXovY2lyY3N0ZXIuanMKKysrIGIvc3RhdGljL3Njcmlw dHMvdml6L2NpcmNzdGVyLmpzCkBAIC0xLDE2ICsxLDIwIEBACiAvLyBsb2FkIHJlcXVpcmVkIGxp YnJhcmllcwotcmVxdWlyZSgKLVsKK3JlcXVpcmUoWwogICAgICd1dGlscy91dGlscycsCi0gICAg J212Yy91aS9pY29uLWJ1dHRvbicsCi0gICAgJ2xpYnMvZmFyYnRhc3RpYycsCi1dLCBmdW5jdGlv bihtb2RfdXRpbHMsIG1vZF9pY29uX2J0bikKK10sIGZ1bmN0aW9uKG1vZF91dGlscykKIHsKICAg ICAvLyBsb2FkIGNzcwogICAgIG1vZF91dGlscy5jc3NMb2FkRmlsZSgic3RhdGljL3N0eWxlL2Np cmNzdGVyLmNzcyIpOwogfSk7Cj0yMAotZGVmaW5lKFsibGlicy91bmRlcnNjb3JlIiwgImxpYnMv ZDMiLCAidml6L3Zpc3VhbGl6YXRpb24iLCAidXRpbHMvY29uZmlnIl09CiwgZnVuY3Rpb24oXywg ZDMsIHZpc3VhbGl6YXRpb24sIGNvbmZpZykgeworZGVmaW5lKFsKKyAgICAibGlicy91bmRlcnNj b3JlIiwKKyAgICAibGlicy9kMyIsCisgICAgInZpei92aXN1YWxpemF0aW9uIiwKKyAgICAidXRp bHMvY29uZmlnIiwKKyAgICAnbXZjL3VpL2ljb24tYnV0dG9uJywKKyAgICAnbGlicy9mYXJidGFz dGljJworXSwgZnVuY3Rpb24oXywgZDMsIHZpc3VhbGl6YXRpb24sIGNvbmZpZywgbW9kX2ljb25f YnRuKSB7Cj0yMAogLyoqCiAgKiBVdGlsaXR5IGNsYXNzIGZvciB3b3JraW5nIHdpdGggU1ZHLgpA QCAtNzEsNyArNzUsNyBAQAogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHRpY2tfY29vcmRz ID0zRCBbMSwgMCwgNCwgMF07CiAgICAgICAgICAgICB0ZXh0X2Nvb3JkcyA9M0QgWzAsIDQsICIu MzVlbSIsICIiXTsKLSAgICAgICAgICAgPTIwCisKICAgICAgICAgfQo9MjAKICAgICAgICAgdGlj a3MuYXBwZW5kKCJsaW5lIikKQEAgLTgwLDcgKzg0LDcgQEAKICAgICAgICAgICAgICAuYXR0cigi eDIiLCB0aWNrX2Nvb3Jkc1syXSkKICAgICAgICAgICAgICAuYXR0cigieTEiLCB0aWNrX2Nvb3Jk c1szXSkKICAgICAgICAgICAgICAuc3R5bGUoInN0cm9rZSIsICIjMDAwIik7Ci0gICAgICAgPTIw CisKICAgICAgICAgcmV0dXJuIHRpY2tzLmFwcGVuZCgidGV4dCIpCiAgICAgICAgICAgICAgICAg ICAgIC5hdHRyKCJ4IiwgdGV4dF9jb29yZHNbMF0pCiAgICAgICAgICAgICAgICAgICAgIC5hdHRy KCJ5IiwgdGV4dF9jb29yZHNbMV0pCkBAIC05OCwxMSArMTAyLDExIEBACiAgICAgICAgIC8vIFVz ZSBkZWZhdWx0IG9mIDIgc2lnLiBkaWdpdHMuCiAgICAgICAgIGlmIChzaWdEaWdpdHMgPTNEPTNE PTNEIHVuZGVmaW5lZCkKICAgICAgICAgICAgIHNpZ0RpZ2l0cyA9M0QgMjsKLSAgICAgID0yMAor CiAgICAgICAgIC8vIFZlcmlmeSBpbnB1dCBudW1iZXIKICAgICAgICAgaWYgKG51bSA9M0Q9M0Q9 M0QgbnVsbCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgPTIwCisKICAgICAgICAg Ly8gQ2FsY3VsYXRlIHJldHVybiB2YWx1ZQogICAgICAgICB2YXIgcnZhbCA9M0QgbnVsbDsKICAg ICAgICAgaWYgKE1hdGguYWJzKG51bSkgPCAxKSB7CkBAIC0xNDEsNyArMTQ1LDcgQEAKICAqLwog dmFyIENpcmNzdGVyVmlldyA9M0QgQmFja2JvbmUuVmlldy5leHRlbmQoewogICAgIGNsYXNzTmFt ZTogJ2NpcmNzdGVyJywKLSAgID0yMAorCiAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9u cykgewogICAgICAgICB0aGlzLmdlbm9tZSA9M0Qgb3B0aW9ucy5nZW5vbWU7CiAgICAgICAgIHRo aXMubGFiZWxfYXJjX2hlaWdodCA9M0QgNTA7CkBAIC0xODgsNyArMTkyLDcgQEAKICAgICAgICAg ICAgIHRyYWNrX2dhcCA9M0QgdGhpcy5tb2RlbC5nZXQoJ2NvbmZpZycpLmdldF92YWx1ZSgndHJh Y2tfZ2FwJyksCiAgICAgICAgICAgICAvLyBTdWJ0cmFjdCAyMCB0byBtYWtlIHN1cmUgY2hyb20g bGFiZWxzIGFyZSBvbiBzY3JlZW4uCiAgICAgICAgICAgICBtaW5fZGltZW5zaW9uID0zRCBNYXRo Lm1pbih0aGlzLiRlbC53aWR0aCgpLCB0aGlzLiRlbC5oZWlnaHQoKT0KKSAtIDIwLAotICAgICAg ICAgICAgLy8gQ29tcHV0ZSByYWRpdXMgc3RhcnQgYmFzZWQgb24gbW9kZWwsIHdpbGwgYmUgY2Vu dGVyZWQ9MjAKKyAgICAgICAgICAgIC8vIENvbXB1dGUgcmFkaXVzIHN0YXJ0IGJhc2VkIG9uIG1v ZGVsLCB3aWxsIGJlIGNlbnRlcmVkCiAgICAgICAgICAgICAvLyBhbmQgZml0IGVudGlyZWx5IGlu c2lkZSBlbGVtZW50IGJ5IGRlZmF1bHQuCiAgICAgICAgICAgICByYWRpdXNfc3RhcnQgPTNEIG1p bl9kaW1lbnNpb24gLyAyIC0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaXJjdWxhcl90 cmFja3MubGVuZ3RoICogKGRhdGFzZXRfYXJjX2hlaWdodCArPQogdHJhY2tfZ2FwKSArCkBAIC0x OTgsMTQgKzIwMiwxNCBAQAo9MjAKICAgICAgICAgICAgIC8vIENvbXB1dGUgcmFuZ2Ugb2YgdHJh Y2sgc3RhcnRpbmcgcmFkaWkuCiAgICAgICAgICAgICB0cmFja3Nfc3RhcnRfcmFkaWkgPTNEIGQz LnJhbmdlKHJhZGl1c19zdGFydCwgbWluX2RpbWVuc2lvbiAvID0KMiwgZGF0YXNldF9hcmNfaGVp Z2h0ICsgdHJhY2tfZ2FwKTsKLSAgICAgICAgICAgPTIwCisKICAgICAgICAgLy8gTWFwIGZyb20g dHJhY2sgc3RhcnQgdG8gYm91bmRzLgogICAgICAgICB2YXIgc2VsZiA9M0QgdGhpczsKICAgICAg ICAgcmV0dXJuIF8ubWFwKHRyYWNrc19zdGFydF9yYWRpaSwgZnVuY3Rpb24ocmFkaXVzKSB7CiAg ICAgICAgICAgICByZXR1cm4gW3JhZGl1cywgcmFkaXVzICsgZGF0YXNldF9hcmNfaGVpZ2h0XTsK ICAgICAgICAgfSk7CiAgICAgfSwKLSAgID0yMAorCiAgICAgLyoqCiAgICAgICogUmVuZGVycyBj aXJjdWxhciB0cmFja3MsIGNob3JkIHRyYWNrcywgYW5kIGxhYmVsIHRyYWNrcy4KICAgICAgKi8K QEAgLTI1NCw3ICsyNTgsNyBAQAogICAgICAgICAgICAgICAgIH0pKQogICAgICAgICAgICAgICAg IC5hdHRyKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKCIgKyB3aWR0aCAvIDIgKyAiLCIgKyBoZWln aHQ9CiAvIDIgKyAiKSIpCiAgICAgICAgICAgICAgIC5hcHBlbmQoJ3N2ZzpnJykuYXR0cignY2xh c3MnLCAndHJhY2tzJyk7Ci0gICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAvLyAtLSBSZW5k ZXIgY2lyY3VsYXIgdHJhY2tzLiAtLQo9MjAKICAgICAgICAgLy8gQ3JlYXRlIGEgdmlldyBmb3Ig ZWFjaCB0cmFjayBpbiB0aGUgdmlzdWFsaXphdGlvbiBhbmQgcmVuZGVyLgpAQCAtMjY2LDEyICsy NzAsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgZ2Vub21lOiBzZWxmLmdlbm9tZSwKICAgICAg ICAgICAgICAgICAgICAgdG90YWxfZ2FwOiB0b3RhbF9nYXAKICAgICAgICAgICAgICAgICB9KTsK LSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgIHZpZXcucmVuZGVyKCk7Ci0gICAgICAgICAg ID0yMAorCiAgICAgICAgICAgICByZXR1cm4gdmlldzsKICAgICAgICAgfSk7Ci0gICAgICAgPTIw CisKICAgICAgICAgLy8gLS0gUmVuZGVyIGNob3JkcyB0cmFja3MuIC0tCj0yMAogICAgICAgICB0 aGlzLmNob3Jkc192aWV3cyA9M0QgY2hvcmRzX3RyYWNrcy5tYXAoZnVuY3Rpb24odHJhY2spIHsK QEAgLTI4OSwxMCArMjkzLDEwIEBACiAgICAgICAgIH0pOwo9MjAKICAgICAgICAgLy8gLS0gUmVu ZGVyIGxhYmVsIHRyYWNrLiAtLQotICAgICAgID0yMAorCiAgICAgICAgIC8vIFRyYWNrIGJvdW5k cyBhcmU6CiAgICAgICAgIC8vIChhKSBvdXRlciByYWRpdXMgb2YgbGFzdCBjaXJjdWxhciB0cmFj azsKLSAgICAgICAgLy8gKGIpPTIwCisgICAgICAgIC8vIChiKQogICAgICAgICB2YXIgb3V0ZXJt b3N0X3JhZGl1cyA9M0QgdGhpcy5jaXJjdWxhcl92aWV3c1t0aGlzLmNpcmN1bGFyX3ZpZXdzLmw9 CmVuZ3RoLTFdLnJhZGl1c19ib3VuZHNbMV0sCiAgICAgICAgICAgICB0cmFja19ib3VuZHMgPTNE IFsKICAgICAgICAgICAgICAgICBvdXRlcm1vc3RfcmFkaXVzLApAQCAtMzA1LDcgKzMwOSw3IEBA CiAgICAgICAgICAgICBnZW5vbWU6IHNlbGYuZ2Vub21lLAogICAgICAgICAgICAgdG90YWxfZ2Fw OiB0b3RhbF9nYXAKICAgICAgICAgfSk7Ci0gICAgICAgPTIwCisKICAgICAgICAgdGhpcy5sYWJl bF90cmFja192aWV3LnJlbmRlcigpOwogICAgIH0sCj0yMApAQCAtMzU2LDcgKzM2MCw3IEBACj0y MAogICAgICAgICAgICAgLy8gVXBkYXRlIGxhYmVsIHRyYWNrLgogICAgICAgICAgICAgLyoKLSAg ICAgICAgICAgIEZJWE1FOiBzaG91bGQgbmV2ZXIgaGF2ZSB0byB1cGRhdGUgbGFiZWwgdHJhY2sg YmVjYXVzZSB2aXMgYWx3PQpheXMgZXhwYW5kcyB0byBmaXQgYXJlYT0yMAorICAgICAgICAgICAg RklYTUU6IHNob3VsZCBuZXZlciBoYXZlIHRvIHVwZGF0ZSBsYWJlbCB0cmFjayBiZWNhdXNlIHZp cyBhbHc9CmF5cyBleHBhbmRzIHRvIGZpdCBhcmVhCiAgICAgICAgICAgICB3aXRoaW4gbGFiZWwg dHJhY2suCiAgICAgICAgICAgICB2YXIgdHJhY2tfYm91bmRzID0zRCBuZXdfdHJhY2tfYm91bmRz WyBuZXdfdHJhY2tfYm91bmRzLmxlbmd0aD0KLTEgXTsKICAgICAgICAgICAgIHRyYWNrX2JvdW5k c1sxXSA9M0QgdHJhY2tfYm91bmRzWzBdOwpAQCAtMzczLDcgKzM3Nyw3IEBACiAgICAgICAgIHZh ciB0cmFja192aWV3ID0zRCB0aGlzLmNpcmN1bGFyX3ZpZXdzW29wdGlvbnMuaW5kZXhdOwogICAg ICAgICB0aGlzLmNpcmN1bGFyX3ZpZXdzLnNwbGljZShvcHRpb25zLmluZGV4LCAxKTsKICAgICAg ICAgdHJhY2tfdmlldy4kZWwucmVtb3ZlKCk7Ci0gICAgICAgPTIwCisKICAgICAgICAgLy8gUmVj b21wdXRlIGFuZCB1cGRhdGUgdHJhY2sgYm91bmRzLgogICAgICAgICB2YXIgbmV3X3RyYWNrX2Jv dW5kcyA9M0QgdGhpcy5nZXRfdHJhY2tzX2JvdW5kcygpOwogICAgICAgICBfLmVhY2godGhpcy5j aXJjdWxhcl92aWV3cywgZnVuY3Rpb24odHJhY2tfdmlldywgaSkgewpAQCAtMzkyLDcgKzM5Niw3 IEBACiAgICAgICAgIF8uZWFjaCh0aGlzLmNob3Jkc192aWV3cywgZnVuY3Rpb24odHJhY2tfdmll dykgewogICAgICAgICAgICAgdHJhY2tfdmlldy51cGRhdGVfcmFkaXVzX2JvdW5kcyhuZXdfdHJh Y2tfYm91bmRzWzBdKTsKICAgICAgICAgfSk7Ci0gICAgICAgPTIwCisKICAgICB9CiB9KTsKPTIw CkBAIC00NTUsNyArNDU5LDcgQEAKPTIwCiAgICAgICAgICAgICAvLyBBcHBlbmQgdGl0bGVzIHRv IHBhdGhzLgogICAgICAgICAgICAgY2hyb21zX3BhdGhzLmFwcGVuZCgidGl0bGUiKS50ZXh0KGZ1 bmN0aW9uKGQpIHsgcmV0dXJuIGQuZGF0YS49CmNocm9tOyB9KTsKLSAgICAgICAgICAgPTIwCisK ICAgICAgICAgLy8gLS0gUmVuZGVyIHRyYWNrIGRhdGEgYW5kLCB3aGVuIHRyYWNrIGRhdGEgaXMg cmVuZGVyZWQsIGFwcGx5IHByPQplZmVyZW5jZXMgYW5kIHVwZGF0ZSBjaHJvbV9lbHRzIGZpbGwu IC0tCj0yMAogICAgICAgICB2YXIgc2VsZiA9M0QgdGhpcywKQEAgLTQ5MCw3ICs0OTQsNyBAQAog ICAgICAgICB2YXIgbmV3X2QgPTNEIGQzLnN2Zy5hcmMoKQogICAgICAgICAgICAgICAgICAgICAg ICAgLmlubmVyUmFkaXVzKHRoaXMucmFkaXVzX2JvdW5kc1swXSkKICAgICAgICAgICAgICAgICAg ICAgICAgIC5vdXRlclJhZGl1cyh0aGlzLnJhZGl1c19ib3VuZHNbMV0pOwotICAgICAgID0yMAor CiAgICAgICAgIHRoaXMucGFyZW50X2VsdC5zZWxlY3RBbGwoJ2c+cGF0aC5jaHJvbS1iYWNrZ3Jv dW5kJykudHJhbnNpdGlvbigpLj0KZHVyYXRpb24oMTAwMCkuYXR0cignZCcsIG5ld19kKTsKPTIw CiAgICAgICAgIHRoaXMuX3RyYW5zaXRpb25fY2hyb21fZGF0YSgpOwpAQCAtNTExLDcgKzUxNSw3 IEBACiAgICAgICAgIH0KPTIwCiAgICAgICAgIC8vIC0tIFNjYWxlIGluY3JlYXNlZCwgc28gcmVu ZGVyIHZpc2libGUgZGF0YSB3aXRoIG1vcmUgZGV0YWlsLiAtLQotICAgICAgID0yMAorCiAgICAg ICAgIHZhciBzZWxmID0zRCB0aGlzLAogICAgICAgICAgICAgdXRpbHMgPTNEIG5ldyBTVkdVdGls cygpOwo9MjAKQEAgLTUzOSw3ICs1NDMsNyBAQAogICAgICAgICAgICAgJC53aGVuKGRhdGFfZGVm ZXJyZWQpLnRoZW4oZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBj dXJyZW50IGRhdGEgcGF0aC4KICAgICAgICAgICAgICAgICBwYXRoX2VsdC5yZW1vdmUoKTsKLSAg ICAgICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIGRhdGEgYm91bmRz IHdpdGggbmV3IGRhdGEuCiAgICAgICAgICAgICAgICAgc2VsZi5fdXBkYXRlX2RhdGFfYm91bmRz KCk7Cj0yMApAQCAtNTk4LDEyICs2MDIsMTIgQEAKICAgICBfdHJhbnNpdGlvbl9sYWJlbHM6IGZ1 bmN0aW9uKCkge30sCj0yMAogICAgIC8qKgotICAgICAqIFVwZGF0ZSBkYXRhIGJvdW5kcy4gSWYg dGhlcmUgYXJlIG5ld19ib3VuZHMsIHVzZSB0aGVtOyBvdGhlcndpc2UgdXM9CmU9MjAKKyAgICAg KiBVcGRhdGUgZGF0YSBib3VuZHMuIElmIHRoZXJlIGFyZSBuZXdfYm91bmRzLCB1c2UgdGhlbTsg b3RoZXJ3aXNlIHVzZQogICAgICAqIGRlZmF1bHQgZGF0YSBib3VuZHMuCiAgICAgICovCiAgICAg X3VwZGF0ZV9kYXRhX2JvdW5kczogZnVuY3Rpb24obmV3X2JvdW5kcykgewogICAgICAgICB2YXIg b2xkX2JvdW5kcyA9M0QgdGhpcy5kYXRhX2JvdW5kczsKLSAgICAgICAgdGhpcy5kYXRhX2JvdW5k cyA9M0QgbmV3X2JvdW5kcyB8fD0yMAorICAgICAgICB0aGlzLmRhdGFfYm91bmRzID0zRCBuZXdf Ym91bmRzIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldF9kYXRhX2JvdW5k cyh0aGlzLnRyYWNrLmdldCgnZGF0YV9tYW5hZz0KZXInKS5nZXRfZ2Vub21lX3dpZGVfZGF0YSh0 aGlzLmdlbm9tZSkpOwogICAgICAgICB0aGlzLl90cmFuc2l0aW9uX2Nocm9tX2RhdGEoKTsKICAg ICB9LApAQCAtNjI0LDcgKzYyOCw3IEBACj0yMAogICAgICAgICAgICAgLy8gU2V0IG1pbiwgbWF4 IHZhbHVlIGluIGNvbmZpZyBzbyB0aGF0IHRoZXkgY2FuIGJlIGFkanVzdGVkLiA9Ck1ha2UgdGhp cyBzaWxlbnQKICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhlc2UgYXR0cmlidXRlcyBhcmUgd2F0 Y2hlZCBmb3IgY2hhbmdlcyBhbmQgdGhlIHZpPQp6IGlzIHVwZGF0ZWQKLSAgICAgICAgICAgIC8v IGFjY29yZGluZ2x5IChzZXQgdXAgaW4gaW5pdGlhbGl6ZSkuIEJlY2F1c2Ugd2UgYXJlIHNldHRp bmcgPQp1cCwgd2UgZG9uJ3Qgd2FudD0yMAorICAgICAgICAgICAgLy8gYWNjb3JkaW5nbHkgKHNl dCB1cCBpbiBpbml0aWFsaXplKS4gQmVjYXVzZSB3ZSBhcmUgc2V0dGluZyA9CnVwLCB3ZSBkb24n dCB3YW50CiAgICAgICAgICAgICAvLyB0aGUgd2F0Y2ggdG8gdHJpZ2dlciBldmVudHMgaGVyZS4K ICAgICAgICAgICAgIHRyYWNrLmdldCgnY29uZmlnJykuc2V0X3ZhbHVlKCdtaW5fdmFsdWUnLCBz ZWxmLmRhdGFfYm91bmRzWzBdPQosIHtzaWxlbnQ6IHRydWV9KTsKICAgICAgICAgICAgIHRyYWNr LmdldCgnY29uZmlnJykuc2V0X3ZhbHVlKCdtYXhfdmFsdWUnLCBzZWxmLmRhdGFfYm91bmRzWzFd PQosIHtzaWxlbnQ6IHRydWV9KTsKQEAgLTY2MCw3ICs2NjQsNyBAQAogICAgIF9nZXRfcGF0aF9m dW5jdGlvbjogZnVuY3Rpb24oY2hyb21fYXJjLCBjaHJvbV9kYXRhKSB7fSwKPTIwCiAgICAgLyoq Ci0gICAgICogUmV0dXJucyBhcmMgbGF5b3V0cyBmb3IgZ2Vub21lJ3MgY2hyb21vc29tZXMvY29u dGlncy4gQXJjcyBhcmUgYXJyYT0KbmdlZCBpbiBhIGNpcmNsZT0yMAorICAgICAqIFJldHVybnMg YXJjIGxheW91dHMgZm9yIGdlbm9tZSdzIGNocm9tb3NvbWVzL2NvbnRpZ3MuIEFyY3MgYXJlIGFy cmE9Cm5nZWQgaW4gYSBjaXJjbGUKICAgICAgKiBzZXBhcmF0ZWQgYnkgZ2Fwcy4KICAgICAgKi8K ICAgICBfY2hyb21zX2xheW91dDogZnVuY3Rpb24oKSB7CkBAIC03MDAsMTQgKzcwNCwxNCBAQAog ICAgICAqIFJlbmRlciBsYWJlbHMuCiAgICAgICovCiAgICAgX3JlbmRlcl9kYXRhOiBmdW5jdGlv bihzdmcpIHsKLSAgICAgICAgLy8gLS0gQWRkIGNocm9tb3NvbWUgbGFiZWwgd2hlcmUgaXQgd2ls bCBmaXQ7IGFuIGFsdGVybmF0aXZlIGxhYmVsPQppbmcgbWVjaGFuaXNtPTIwCisgICAgICAgIC8v IC0tIEFkZCBjaHJvbW9zb21lIGxhYmVsIHdoZXJlIGl0IHdpbGwgZml0OyBhbiBhbHRlcm5hdGl2 ZSBsYWJlbD0KaW5nIG1lY2hhbmlzbQogICAgICAgICAvLyB3b3VsZCBiZSBuaWNlIGZvciBzbWFs bCBjaHJvbW9zb21lcy4gLS0KICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXMsCiAgICAgICAgICAg ICBjaHJvbV9hcmNzID0zRCBzdmcuc2VsZWN0QWxsKCdnJyk7Cj0yMAogICAgICAgICBjaHJvbV9h cmNzLnNlbGVjdEFsbCgncGF0aCcpCiAgICAgICAgICAgICAuYXR0cignaWQnLCBmdW5jdGlvbihk KSB7IHJldHVybiAnbGFiZWwtJyArIGQuZGF0YS5jaHJvbTsgfSk7Ci0gICAgICAgICA9MjAKKwog ICAgICAgICBjaHJvbV9hcmNzLmFwcGVuZCgic3ZnOnRleHQiKQogICAgICAgICAgICAgLmZpbHRl cihmdW5jdGlvbihkKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGQuZW5kQW5nbGUgLSBkLnN0 YXJ0QW5nbGUgPiBzZWxmLm1pbl9hcmNfbGVuOwpAQCAtODU3LDEyICs4NjEsMTIgQEAKICAgICAg ICAgICAgICAgICByZXR1cm4gInJvdGF0ZSg5MCkiOwogICAgICAgICAgICAgfTsKPTIwCi0gICAg ICAgIC8vIEZJWE1FOj0yMAorICAgICAgICAvLyBGSVhNRToKICAgICAgICAgLy8gKDEpIHVzaW5n IG1pbl9tYXggY2xhc3MgYmVsb3cgaXMgbmVlZGVkIGZvciBfdXBkYXRlX21pbl9tYXgsIHdoPQpp Y2ggY291bGQgYmUgaW1wcm92ZWQuCiAgICAgICAgIC8vICgyKSBzaG93aW5nIGNvbmZpZyBvbiB0 aWNrIGNsaWNrIHNob3VsZCBiZSByZXBsYWNlZCBieSBwcm9wZXIgdD0KcmFjayBjb25maWcgaWNv bi4KPTIwCiAgICAgICAgIC8vIERyYXcgbWluLCBtYXggb24gZmlyc3QgY2hyb20gb25seS4KLSAg ICAgICAgdmFyIHRpY2tzID0zRCB0aGlzLmRyYXdUaWNrcyh0aGlzLnBhcmVudF9lbHQsIFsgdGhp cy5jaHJvbXNfbGF5b3V0PQpbMF0gXSw9MjAKKyAgICAgICAgdmFyIHRpY2tzID0zRCB0aGlzLmRy YXdUaWNrcyh0aGlzLnBhcmVudF9lbHQsIFsgdGhpcy5jaHJvbXNfbGF5b3V0PQpbMF0gXSwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YV9ib3VuZHNfdGlja3Nf Zm4oKSwgdGV4dFRyYW5zPQpmb3JtLCB0cnVlKQogICAgICAgICAgICAgICAgICAgICAgICAgLmNs YXNzZWQoJ21pbl9tYXgnLCB0cnVlKTsKPTIwCkBAIC04NzIsNyArODc2LDcgQEAKICAgICAgICAg ICAgICAgICB2YXIgdmlldyA9M0QgbmV3IGNvbmZpZy5Db25maWdTZXR0aW5nQ29sbGVjdGlvblZp ZXcoewogICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uOiBzZWxmLnRyYWNrLmdldCgnY29u ZmlnJykKICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB2aWV3LnJlbmRlcl9p bl9tb2RhbCgnQ29uZmlndXJlIFRyYWNrJyk7PTIwCisgICAgICAgICAgICAgICAgdmlldy5yZW5k ZXJfaW5fbW9kYWwoJ0NvbmZpZ3VyZSBUcmFjaycpOwogICAgICAgICAgICAgfSk7CiAgICAgICAg IH0pOwo9MjAKQEAgLTk1MSw3ICs5NTUsNyBAQAogdmFyIENpcmNzdGVyQmlnV2lnVHJhY2tWaWV3 ID0zRCBDaXJjc3RlclF1YW50aXRhdGl2ZVRyYWNrVmlldy5leHRlbmQoewo9MjAKICAgICBnZXRf ZGF0YV9ib3VuZHM6IGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgLy8gU2V0IG1heCBhY3Jvc3Mg ZGF0YXNldCBieSBleHRyYWN0aW5nIGFsbCB2YWx1ZXMsIGZsYXR0ZW5pbmcgdGhlPQptIGludG8g YT0yMAorICAgICAgICAvLyBTZXQgbWF4IGFjcm9zcyBkYXRhc2V0IGJ5IGV4dHJhY3RpbmcgYWxs IHZhbHVlcywgZmxhdHRlbmluZyB0aGU9Cm0gaW50byBhCiAgICAgICAgIC8vIHNpbmdsZSBhcnJh eSwgYW5kIGdldHRpbmcgdGhpcmQgcXVhcnRpbGUuCiAgICAgICAgIHZhciB2YWx1ZXMgPTNEIF8u ZmxhdHRlbiggXy5tYXAoZGF0YSwgZnVuY3Rpb24oZCkgewogICAgICAgICAgICAgaWYgKGQpIHsK QEAgLTk2NSw4ICs5NjksOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAg ICAgfQogICAgICAgICB9KSApOwotICAgICAgID0yMAotICAgICAgICAvLyBGb3IgbWF4LCB1c2Ug OTglIHF1YW50aWxlIGluIGF0dGVtcHQgdG8gYXZvaWQgdmVyeSBsYXJnZSB2YWx1ZXM9Ci4gSG93 ZXZlciwgdGhpcyBtYXggbWF5IGJlIDA9MjAKKworICAgICAgICAvLyBGb3IgbWF4LCB1c2UgOTgl IHF1YW50aWxlIGluIGF0dGVtcHQgdG8gYXZvaWQgdmVyeSBsYXJnZSB2YWx1ZXM9Ci4gSG93ZXZl ciwgdGhpcyBtYXggbWF5IGJlIDAKICAgICAgICAgLy8gZm9yIHNwYXJzZWx5IHBvcHVsYXRlZCBk YXRhLCBzbyB1c2UgbWF4IGluIHRoYXQgY2FzZS4KICAgICAgICAgcmV0dXJuIFsgXy5taW4odmFs dWVzKSwgdGhpcy5fcXVhbnRpbGUodmFsdWVzLCAwLjk4KSB8fCBfLm1heCh2YWx1PQplcykgXTsK ICAgICB9CkBAIC0xMDY4LDEzICsxMDcyLDEzIEBACiAgICAgICAgICAgICAgICAgZ2Vub21lICAg ICAgICAgICAgICA6IGdlbm9tZSwKICAgICAgICAgICAgICAgICBtb2RlbCAgICAgICAgICAgICAg IDogdmlzCiAgICAgICAgICAgICB9KTsKLSAgICAgICA9MjAKKwogICAgICAgICAvLyBSZW5kZXIg dml6dWFsaXphdGlvbgogICAgICAgICB2aXpfdmlldy5yZW5kZXIoKTsKLSAgICAgICA9MjAKKwog ICAgICAgICAvLyBzZXR1cCB0aXRsZQogICAgICAgICAkKCcjY2VudGVyIC51bmlmaWVkLXBhbmVs LWhlYWRlci1pbm5lcicpLmFwcGVuZChnYWxheHlfY29uZmlnLmFwcC49CnZpel9jb25maWcudGl0 bGUgKyAiICIgKyBnYWxheHlfY29uZmlnLmFwcC52aXpfY29uZmlnLmRia2V5KTsKLSAgID0yMAor CiAgICAgICAgIC8vIHNldHVwIG1lbnUKICAgICAgICAgdmFyIG1lbnUgPTNEIG1vZF9pY29uX2J0 bi5jcmVhdGVfaWNvbl9idXR0b25zX21lbnUoWwogICAgICAgICB7CkBAIC0xMTAwLDcgKzExMDQs NyBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8vIHNob3cgc2F2aW5nIGRpYWxv ZyBib3gKICAgICAgICAgICAgICAgICBHYWxheHkubW9kYWwuc2hvdyh7dGl0bGU6ICJTYXZpbmcu Li4iLCBib2R5OiAicHJvZ3Jlc3MiIH0pOwotICAgID0yMAorCiAgICAgICAgICAgICAgICAgLy8g c2VuZCB0byBzZXJ2ZXIKICAgICAgICAgICAgICAgICAkLmFqYXgoewogICAgICAgICAgICAgICAg ICAgICB1cmw6IGdhbGF4eV9jb25maWcucm9vdCArICJ2aXN1YWxpemF0aW9uL3NhdmUiLApAQCAt MTEzMiwxMSArMTEzNiwxMSBAQAogICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9M0Qg Z2FsYXh5X2NvbmZpZy5yb290ICsgInZpc3VhbGl6YXRpb24vbGk9CnN0IjsKICAgICAgICAgICAg IH0KICAgICAgICAgfV0sIHsgdG9vbHRpcF9jb25maWc6IHsgcGxhY2VtZW50OiAnYm90dG9tJyB9 IH0pOwotICAgICAgICAgICA9MjAKKwogICAgICAgICAvLyBhZGQgbWVudQogICAgICAgICBtZW51 LiRlbC5hdHRyKCJzdHlsZSIsICJmbG9hdDogcmlnaHQiKTsKICAgICAgICAgJCgiI2NlbnRlciAu dW5pZmllZC1wYW5lbC1oZWFkZXItaW5uZXIiKS5hcHBlbmQobWVudS4kZWwpOwotICAgICAgICAg ICA9MjAKKwogICAgICAgICAvLyBtYW51YWwgdG9vbHRpcCBjb25maWcgYmVjYXVzZSBkZWZhdWx0 IGdyYXZpdHkgaXMgUyBhbmQgY2Fubm90IGI9CmUgY2hhbmdlZAogICAgICAgICAkKCIubWVudS1i dXR0b24iKS50b29sdGlwKCB7IHBsYWNlbWVudDogJ2JvdHRvbScgfSApOwogICAgIH0KCgpodHRw czovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvMTNlNmRkNzY4 N2M0LwpDaGFuZ2VzZXQ6ICAgMTNlNmRkNzY4N2M0CkJyYW5jaDogICAgICByZWxlYXNlXzE1LjAz ClVzZXI6ICAgICAgICBkYW5ub24KRGF0ZTogICAgICAgIDIwMTUtMDQtMDIgMTM6MTM6MzMrMDA6 MDAKU3VtbWFyeTogICAgIEZpeCBkeW5hbWljIG9wdGlvbnMgbm90IGZpbGxpbmcgcHJvcGVybHkK QWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciA2NWIyMzMwYjgyM2M3NjExMzY5Yjk3YjA4Mjky YTZjODY0ZGVlMTFjIC1yIDEzZTZkZDc2ODdjNDFiYzA4Y2QzNmVjPQoxN2QyZmE3YjM5NmI3YjM2 ZSBsaWIvZ2FsYXh5L3Rvb2xzL3BhcmFtZXRlcnMvYmFzaWMucHkKLS0tIGEvbGliL2dhbGF4eS90 b29scy9wYXJhbWV0ZXJzL2Jhc2ljLnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvcGFyYW1ldGVy cy9iYXNpYy5weQpAQCAtMTUsNiArMTUsNyBAQAogZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc3Ry aW5nX2FzX2Jvb2wsIHNhbml0aXplX3BhcmFtLCB1bmljb2RpZnkKIGZyb20gZ2FsYXh5LnV0aWwg aW1wb3J0IGxpc3RpZnkKIGZyb20gZ2FsYXh5LnV0aWwub2RpY3QgaW1wb3J0IG9kaWN0Citmcm9t IGdhbGF4eS51dGlsLmV4cHJlc3Npb25zIGltcG9ydCBFeHByZXNzaW9uQ29udGV4dAogZnJvbSBz YW5pdGl6ZSBpbXBvcnQgVG9vbFBhcmFtZXRlclNhbml0aXplcgogaW1wb3J0IHZhbGlkYXRpb24K IGltcG9ydCBkeW5hbWljX29wdGlvbnMKQEAgLTgwMiw4ICs4MDMsOSBAQAogICAgICAgICBzZWxm LmlzX2R5bmFtaWMgPTNEICggKCBzZWxmLmR5bmFtaWNfb3B0aW9ucyBpcyBub3QgTm9uZSApIG9y ICggc2U9CmxmLm9wdGlvbnMgaXMgbm90IE5vbmUgKSApCj0yMAogICAgIGRlZiBfZ2V0X2R5bmFt aWNfb3B0aW9uc19jYWxsX290aGVyX3ZhbHVlcyggc2VsZiwgdHJhbnMsIG90aGVyX3ZhbHVlcyA9 Cik6Ci0gICAgICAgIGNhbGxfb3RoZXJfdmFsdWVzID0zRCB7ICJfX3RyYW5zX18iOiB0cmFucyB9 CisgICAgICAgIGNhbGxfb3RoZXJfdmFsdWVzID0zRCBFeHByZXNzaW9uQ29udGV4dCh7ICJfX3Ry YW5zX18iOiB0cmFucyB9KQogICAgICAgICBpZiBvdGhlcl92YWx1ZXM6CisgICAgICAgICAgICBj YWxsX290aGVyX3ZhbHVlcy5wYXJlbnQgPTNEIG90aGVyX3ZhbHVlcy5wYXJlbnQKICAgICAgICAg ICAgIGNhbGxfb3RoZXJfdmFsdWVzLnVwZGF0ZSggb3RoZXJfdmFsdWVzLmRpY3QgKQogICAgICAg ICByZXR1cm4gY2FsbF9vdGhlcl92YWx1ZXMKPTIwCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dh bGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzRlZTgxMzk1NWEyMy8KQ2hhbmdlc2V0OiAgIDRl ZTgxMzk1NWEyMwpCcmFuY2g6ICAgICAgcmVsZWFzZV8xNS4wMwpVc2VyOiAgICAgICAgZGFubm9u CkRhdGU6ICAgICAgICAyMDE1LTA0LTAyIDEzOjE1OjQzKzAwOjAwClN1bW1hcnk6ICAgICBGaXgg Z2V0X29wdGlvbnNfZnJvbV9jb2RlIHRvIGNvcnJlY3RseSB1c2UgYW4gZXhwcmVzaW9uY29udGV4 dD0KIGFzIHdlbGwsIHRoaXMgd291bGQgaGF2ZSBwcmV2ZW50ZWQgaXQgd29ya2luZyBpbiByZXBl YXRzL2V0YwpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDEzZTZkZDc2ODdjNDFiYzA4Y2Qz NmVjMTdkMmZhN2IzOTZiN2IzNmUgLXIgNGVlODEzOTU1YTIzY2Y4ZDAwOTMxMjg9Cjg3MjE3OTQ0 MWNlYzQ4ZjVmIGxpYi9nYWxheHkvdG9vbHMvcGFyYW1ldGVycy9iYXNpYy5weQotLS0gYS9saWIv Z2FsYXh5L3Rvb2xzL3BhcmFtZXRlcnMvYmFzaWMucHkKKysrIGIvbGliL2dhbGF4eS90b29scy9w YXJhbWV0ZXJzL2Jhc2ljLnB5CkBAIC0xNTA3LDggKzE1MDcsOSBAQAo9MjAKICAgICBkZWYgX2dl dF9vcHRpb25zX2Zyb21fY29kZSggc2VsZiwgdHJhbnM9M0ROb25lLCB2YWx1ZT0zRE5vbmUsIG90 aGVyX3ZhPQpsdWVzPTNETm9uZSApOgogICAgICAgICBhc3NlcnQgc2VsZi5keW5hbWljX29wdGlv bnMsIEV4Y2VwdGlvbiggImR5bmFtaWNfb3B0aW9ucyB3YXMgbm90IHM9CnBlY2lmZWQiICkKLSAg ICAgICAgY2FsbF9vdGhlcl92YWx1ZXMgPTNEIHsgJ19fdHJhbnNfXyc6IHRyYW5zLCAnX192YWx1 ZV9fJzogdmFsdWUgfQorICAgICAgICBjYWxsX290aGVyX3ZhbHVlcyA9M0QgRXhwcmVzc2lvbkNv bnRleHQoeyAnX190cmFuc19fJzogdHJhbnMsICdfX3Y9CmFsdWVfXyc6IHZhbHVlIH0pCiAgICAg ICAgIGlmIG90aGVyX3ZhbHVlczoKKyAgICAgICAgICAgIGNhbGxfb3RoZXJfdmFsdWVzLnBhcmVu dCA9M0Qgb3RoZXJfdmFsdWVzLnBhcmVudAogICAgICAgICAgICAgY2FsbF9vdGhlcl92YWx1ZXMu dXBkYXRlKCBvdGhlcl92YWx1ZXMuZGljdCApCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJl dHVybiBldmFsKCBzZWxmLmR5bmFtaWNfb3B0aW9ucywgc2VsZi50b29sLmNvZGVfbmFtZXNwYWNl LCBjPQphbGxfb3RoZXJfdmFsdWVzICkKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dh bGF4eS1jZW50cmFsL2NvbW1pdHMvZDk0Y2NlYWQ0MDA1LwpDaGFuZ2VzZXQ6ICAgZDk0Y2NlYWQ0 MDA1CkJyYW5jaDogICAgICByZWxlYXNlXzE1LjAzClVzZXI6ICAgICAgICBkYW5ub24KRGF0ZTog ICAgICAgIDIwMTUtMDQtMDEgMjE6NTY6MjkrMDA6MDAKU3VtbWFyeTogICAgIEZpeCBlcnJvciBp biB0b29sc2hlZCBtZXRhZGF0YSBnZW5lcmF0b3IgcmVwb3J0ZWQgYnkgQG1hcnRlbnNvbgpBZmZl Y3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDRlZTgxMzk1NWEyM2NmOGQwMDkzMTI4ODcyMTc5NDQx Y2VjNDhmNWYgLXIgZDk0Y2NlYWQ0MDA1YmY1MGMwYjI4YmE9CmM1YTRjYzhlOTU4MWZjNjMxIGxp Yi90b29sX3NoZWQvbWV0YWRhdGEvbWV0YWRhdGFfZ2VuZXJhdG9yLnB5Ci0tLSBhL2xpYi90b29s X3NoZWQvbWV0YWRhdGEvbWV0YWRhdGFfZ2VuZXJhdG9yLnB5CisrKyBiL2xpYi90b29sX3NoZWQv bWV0YWRhdGEvbWV0YWRhdGFfZ2VuZXJhdG9yLnB5CkBAIC00NTYsOCArNDU2LDggQEAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXhwb3J0ZWRfd29ya2Zsb3dfZGljdCA9M0QganNvbi5sb2Fkcyg9CiB3b3Jr Zmxvd190ZXh0ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbiwgZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5leGNlcHRp b24oICJTa2lwcGluZyBmaWxlICVzIHNpbmNlPQogaXQgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHZh bGlkIGV4cG9ydGVkIEdhbGF4eSB3b3JrZmxvdzogJXMiIFwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgc3RyKCByZWxhdGl2ZV9wYXRoICksPQog c3RyKCBlICkgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmV4Y2Vw dGlvbiggIlNraXBwaW5nIGZpbGUgJXMgc2luY2U9CiBpdCBkb2VzIG5vdCBzZWVtIHRvIGJlIGEg dmFsaWQgZXhwb3J0ZWQgR2FsYXh5IHdvcmtmbG93OiAlcyIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHN0ciggcmVsYXRpdmVfcGF0aCApPQos IHN0ciggZSApICkgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRf ZXhwb3J0ZWRfZ2FsYXh5X3dvcmtmbG93ID0zRCBGYWw9CnNlCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgdmFsaWRfZXhwb3J0ZWRfZ2FsYXh5X3dvcmtmbG93IGFuZCBcCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdhX2dhbGF4eV93b3JrZmxvdycgaW4gZXhwb3J0ZWRf d29ya2Zsb3dfZD0KaWN0IGFuZCBcCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxh eHktY2VudHJhbC9jb21taXRzLzA2MGNiMDg1ZTgzYy8KQ2hhbmdlc2V0OiAgIDA2MGNiMDg1ZTgz YwpCcmFuY2g6ICAgICAgcmVsZWFzZV8xNS4wMwpVc2VyOiAgICAgICAgZGFubm9uCkRhdGU6ICAg ICAgICAyMDE1LTA0LTAxIDIyOjMxOjE0KzAwOjAwClN1bW1hcnk6ICAgICBGaXggc3BhY2luZyB0 byBmb2xsb3cgb3VyIGd1aWRlbGluZXMuCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgZDk0 Y2NlYWQ0MDA1YmY1MGMwYjI4YmFjNWE0Y2M4ZTk1ODFmYzYzMSAtciAwNjBjYjA4NWU4M2M4YmVm N2E4NzViYz0KYTAwN2IzOTNmMjkxMDM5YWQgbGliL3Rvb2xfc2hlZC9tZXRhZGF0YS9tZXRhZGF0 YV9nZW5lcmF0b3IucHkKLS0tIGEvbGliL3Rvb2xfc2hlZC9tZXRhZGF0YS9tZXRhZGF0YV9nZW5l cmF0b3IucHkKKysrIGIvbGliL3Rvb2xfc2hlZC9tZXRhZGF0YS9tZXRhZGF0YV9nZW5lcmF0b3Iu cHkKQEAgLTQ1Nyw3ICs0NTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXhwb3J0ZWRfd29ya2Zsb3dfZGljdCA9M0QganNvbi5sb2Fkcyg9CiB3b3JrZmxvd190ZXh0 ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5leGNlcHRpb24oICJTa2lw cGluZyBmaWxlICVzIHNpbmNlPQogaXQgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHZhbGlkIGV4cG9y dGVkIEdhbGF4eSB3b3JrZmxvdzogJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAlIChzdHIoIHJlbGF0aXZlX3BhdGggKT0KLCBzdHIoIGUgKSAp ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUg KCBzdHIoIHJlbGF0aXZlX3BhdGggPQopLCBzdHIoIGUgKSApICkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2V4cG9ydGVkX2dhbGF4eV93b3JrZmxvdyA9M0QgRmFs PQpzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHZhbGlkX2V4cG9ydGVkX2dhbGF4 eV93b3JrZmxvdyBhbmQgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYV9nYWxh eHlfd29ya2Zsb3cnIGluIGV4cG9ydGVkX3dvcmtmbG93X2Q9CmljdCBhbmQgXAoKCmh0dHBzOi8v Yml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8xMGFlMzdiODYzZmUv CkNoYW5nZXNldDogICAxMGFlMzdiODYzZmUKQnJhbmNoOiAgICAgIHJlbGVhc2VfMTUuMDMKVXNl cjogICAgICAgIGNhcmxmZWJlcmhhcmQKRGF0ZTogICAgICAgIDIwMTUtMDQtMDIgMTY6Mzg6MzAr MDA6MDAKU3VtbWFyeTogICAgIEZpeDogaGRhIG1hbmFnZXIgdHJhbnMgcGFyYW0gaW4gdmlzdWFs aXphdGlvbnMgY29udHJvbGxlciBhbmQgPQp0b29scyBhcGkgX3JlcnVuX3Rvb2wKQWZmZWN0ZWQg IzogIDIgZmlsZXMKCmRpZmYgLXIgMDYwY2IwODVlODNjOGJlZjdhODc1YmNhMDA3YjM5M2YyOTEw MzlhZCAtciAxMGFlMzdiODYzZmUzNjVlMTk1ZTViMj0KMDQ0YTQ4NTkyMzlkYTQyOTYgbGliL2dh bGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvdG9vbHMucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBz L2dhbGF4eS9hcGkvdG9vbHMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkv dG9vbHMucHkKQEAgLTMzMSw3ICszMzEsNyBAQAogICAgICAgICAjIGpvYidzIHByZXZpb3VzIHBh cmFtZXRlcnMgYW5kIGluY29taW5nIHBhcmFtZXRlcnMuIEluY29taW5nIHBhcmE9Cm1ldGVycwog ICAgICAgICAjIGhhdmUgcHJpb3JpdHkuCiAgICAgICAgICMKLSAgICAgICAgb3JpZ2luYWxfam9i ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmNyZWF0aW5nX2pvYiggb3JpZ2luYWxfZGF0YXNldCApCisg ICAgICAgIG9yaWdpbmFsX2pvYiA9M0Qgc2VsZi5oZGFfbWFuYWdlci5jcmVhdGluZ19qb2IoIHRy YW5zLCBvcmlnaW5hbF9kYT0KdGFzZXQgKQogICAgICAgICB0b29sID0zRCB0cmFucy5hcHAudG9v bGJveC5nZXRfdG9vbCggb3JpZ2luYWxfam9iLnRvb2xfaWQgKQogICAgICAgICBpZiBub3QgdG9v bCBvciBub3QgdG9vbC5hbGxvd191c2VyX2FjY2VzcyggdHJhbnMudXNlciApOgogICAgICAgICAg ICAgcmV0dXJuIHRyYW5zLmFwcC5tb2RlbC5EYXRhc2V0LmNvbnZlcnNpb25fbWVzc2FnZXMuTk9f VE9PTAoKZGlmZiAtciAwNjBjYjA4NWU4M2M4YmVmN2E4NzViY2EwMDdiMzkzZjI5MTAzOWFkIC1y IDEwYWUzN2I4NjNmZTM2NWUxOTVlNWIyPQowNDRhNDg1OTIzOWRhNDI5NiBsaWIvZ2FsYXh5L3dl YmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3Zpc3VhbGl6YXRpb24ucHkKLS0tIGEvbGliL2dhbGF4 eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy92aXN1YWxpemF0aW9uLnB5CisrKyBiL2xpYi9n YWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvdmlzdWFsaXphdGlvbi5weQpAQCAtOTg1 LDcgKzk4NSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIExvYWRpbmcgbmV3IHZp c3VhbGl6YXRpb24uCiAgICAgICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLmdldF9oZGFfb3JfbGRk YSggdHJhbnMsIGhkYV9sZGRhLCBkYXRhc2V0X2lkICkKLSAgICAgICAgICAgIGpvYiA9M0Qgc2Vs Zi5oZGFfbWFuYWdlci5jcmVhdGluZ19qb2IoIGRhdGFzZXQgKQorICAgICAgICAgICAgam9iID0z RCBzZWxmLmhkYV9tYW5hZ2VyLmNyZWF0aW5nX2pvYiggdHJhbnMsIGRhdGFzZXQgKQogICAgICAg ICAgICAgdml6X2NvbmZpZyA9M0QgewogICAgICAgICAgICAgICAgICdkYXRhc2V0X2lkJzogZGF0 YXNldF9pZCwKICAgICAgICAgICAgICAgICAndG9vbF9pZCc6IGpvYi50b29sX2lkLApAQCAtMTAx Nyw3ICsxMDE3LDcgQEAKICAgICAgICAgaWYgZGF0YXNldF9pZDoKICAgICAgICAgICAgIGRlY29k ZWRfaWQgPTNEIHNlbGYuZGVjb2RlX2lkKCBkYXRhc2V0X2lkICkKICAgICAgICAgICAgIGhkYSA9 M0Qgc2VsZi5oZGFfbWFuYWdlci5nZXRfYWNjZXNzaWJsZSggdHJhbnMsIGRlY29kZWRfaWQsIHRy PQphbnMudXNlciApCi0gICAgICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIuZXJyb3Jf aWZfdXBsb2FkaW5nKCBoZGEgKQorICAgICAgICAgICAgaGRhID0zRCBzZWxmLmhkYV9tYW5hZ2Vy LmVycm9yX2lmX3VwbG9hZGluZyggdHJhbnMsIGhkYSApCiAgICAgICAgIGVsc2U6CiAgICAgICAg ICAgICByZXR1cm4gdHJhbnMuc2hvd19tZXNzYWdlKCAiUGh5bG92aXogY291bGRuJ3QgZmluZCBh IGRhdGFzZXRfaT0KZCIgKQo9MjAKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4 eS1jZW50cmFsL2NvbW1pdHMvZDA3OTllOGNmOTc2LwpDaGFuZ2VzZXQ6ICAgZDA3OTllOGNmOTc2 CkJyYW5jaDogICAgICByZWxlYXNlXzE1LjAzClVzZXI6ICAgICAgICBkYW5ub24KRGF0ZTogICAg ICAgIDIwMTUtMDQtMDIgMjA6NDI6MzgrMDA6MDAKU3VtbWFyeTogICAgIE1vcmUgZml4ZXMgZm9y IHJlbW92YWwgb2YgdHJhbnMgZnJvbSB2YXJpb3VzIG1hbmFnZXIgZnVuY3Rpb25zLgpBZmZlY3Rl ZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDEwYWUzN2I4NjNmZTM2NWUxOTVlNWIyMDQ0YTQ4NTkyMzlk YTQyOTYgLXIgZDA3OTllOGNmOTc2OGU5YjdkNWQ3ZDU9Cjc0NjY3ZTE1MzhkMzE2YzUwIGxpYi9n YWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvdGFnLnB5Ci0tLSBhL2xpYi9nYWxheHkv d2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvdGFnLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBw cy9nYWxheHkvY29udHJvbGxlcnMvdGFnLnB5CkBAIC00Miw3ICs0Miw3IEBACiAgICAgICAgICMg QXBwbHkgdGFnLgogICAgICAgICBpdGVtID0zRCBzZWxmLl9nZXRfaXRlbSggdHJhbnMsIGl0ZW1f Y2xhc3MsIHRyYW5zLnNlY3VyaXR5LmRlY29kZV89CmlkKCBpdGVtX2lkICkgKQogICAgICAgICB1 c2VyID0zRCB0cmFucy51c2VyCi0gICAgICAgIHNlbGYuZ2V0X3RhZ19oYW5kbGVyKCB0cmFucyAp LmFwcGx5X2l0ZW1fdGFncyggdHJhbnMsIHVzZXIsIGl0ZW0sID0KbmV3X3RhZy5lbmNvZGUoICd1 dGYtOCcgKSApCisgICAgICAgIHNlbGYuZ2V0X3RhZ19oYW5kbGVyKCB0cmFucyApLmFwcGx5X2l0 ZW1fdGFncyggdXNlciwgaXRlbSwgbmV3X3RhZz0KLmVuY29kZSggJ3V0Zi04JyApICkKICAgICAg ICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCiAgICAgICAgICMgTG9nLgogICAgICAgICBwYXJh bXMgPTNEIGRpY3QoIGl0ZW1faWQ9M0RpdGVtLmlkLCBpdGVtX2NsYXNzPTNEaXRlbV9jbGFzcywg dGFnPQo9M0RuZXdfdGFnICkKQEAgLTU3LDcgKzU3LDcgQEAKICAgICAgICAgIyBSZW1vdmUgdGFn LgogICAgICAgICBpdGVtID0zRCBzZWxmLl9nZXRfaXRlbSggdHJhbnMsIGl0ZW1fY2xhc3MsIHRy YW5zLnNlY3VyaXR5LmRlY29kZV89CmlkKCBpdGVtX2lkICkgKQogICAgICAgICB1c2VyID0zRCB0 cmFucy51c2VyCi0gICAgICAgIHNlbGYuZ2V0X3RhZ19oYW5kbGVyKCB0cmFucyApLnJlbW92ZV9p dGVtX3RhZyggdHJhbnMsIHVzZXIsIGl0ZW0sID0KdGFnX25hbWUuZW5jb2RlKCAndXRmLTgnICkg KQorICAgICAgICBzZWxmLmdldF90YWdfaGFuZGxlciggdHJhbnMgKS5yZW1vdmVfaXRlbV90YWco IHVzZXIsIGl0ZW0sIHRhZ19uYW09CmUuZW5jb2RlKCAndXRmLTgnICkgKQogICAgICAgICB0cmFu cy5zYV9zZXNzaW9uLmZsdXNoKCkKICAgICAgICAgIyBMb2cuCiAgICAgICAgIHBhcmFtcyA9M0Qg ZGljdCggaXRlbV9pZD0zRGl0ZW0uaWQsIGl0ZW1fY2xhc3M9M0RpdGVtX2NsYXNzLCB0YWc9Cj0z RHRhZ19uYW1lICkKQEAgLTczLDggKzczLDggQEAKICAgICAgICAgIyBBcHBseSB0YWdzLgogICAg ICAgICBpdGVtID0zRCBzZWxmLl9nZXRfaXRlbSggdHJhbnMsIGl0ZW1fY2xhc3MsIHRyYW5zLnNl Y3VyaXR5LmRlY29kZV89CmlkKCBpdGVtX2lkICkgKQogICAgICAgICB1c2VyID0zRCB0cmFucy51 c2VyCi0gICAgICAgIHNlbGYuZ2V0X3RhZ19oYW5kbGVyKCB0cmFucyApLmRlbGV0ZV9pdGVtX3Rh Z3MoIHRyYW5zLCB1c2VyLCBpdGVtICkKLSAgICAgICAgc2VsZi5nZXRfdGFnX2hhbmRsZXIoIHRy YW5zICkuYXBwbHlfaXRlbV90YWdzKCB0cmFucywgdXNlciwgaXRlbSwgPQpuZXdfdGFncy5lbmNv ZGUoICd1dGYtOCcgKSApCisgICAgICAgIHNlbGYuZ2V0X3RhZ19oYW5kbGVyKCB0cmFucyApLmRl bGV0ZV9pdGVtX3RhZ3MoIHVzZXIsIGl0ZW0gKQorICAgICAgICBzZWxmLmdldF90YWdfaGFuZGxl ciggdHJhbnMgKS5hcHBseV9pdGVtX3RhZ3MoIHVzZXIsIGl0ZW0sIG5ld190YWc9CnMuZW5jb2Rl KCAndXRmLTgnICkgKQogICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKPTIwCiAgICAg QHdlYi5leHBvc2UKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFs L2NvbW1pdHMvZjBiYmY1Nzc1ZDNmLwpDaGFuZ2VzZXQ6ICAgZjBiYmY1Nzc1ZDNmCkJyYW5jaDog ICAgICByZWxlYXNlXzE1LjAzClVzZXI6ICAgICAgICBndWVybGVyCkRhdGU6ICAgICAgICAyMDE1 LTA0LTAzIDE2OjQ2OjE3KzAwOjAwClN1bW1hcnk6ICAgICBbU1RBQkxFXSBSZXZpc2UgcmUtcnVu IG1hcHBpbmcgb2YgZGF0YXNldHMgYW5kIGNvbGxlY3Rpb25zIGZvcj0KIGltcG9ydGVkIGFuZCBj b3BpZWQgaGlzdG9yeSBpdGVtcy4gVGhlIHByZXZpb3VzIG1ldGhvZCAoZnJvbSB0b29sX3J1bm5l ci5wPQp5KSBoYWQgZGlmZmljdWx0aWVzIHdpdGggY29uc2lzdGVudGx5IGhhc2hpbmcgaGlzdG9y eSBpdGVtcyB3aGljaCBjYXVzZWQgaXM9CnN1ZXMgZm9yIGltcG9ydGVkIGRhdGFzZXRzLiBXZSBm aXhlZCB0aGF0LCBob3dldmVyIG5vdyBkYXRhc2V0cyBjb3BpZWQgYmFjaz0KIHRvIHRoZSBzYW1l IGhpc3RvcnkgYXJlIHNob3duIGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsIGRhdGFzZXQuCkFmZmVj dGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgZDA3OTllOGNmOTc2OGU5YjdkNWQ3ZDU3NDY2N2UxNTM4 ZDMxNmM1MCAtciBmMGJiZjU3NzVkM2Y3NzBlYzlhZmU0Nz0KMTIyZDk3YjdkMDQ2ZmYwOGUgbGli L2dhbGF4eS90b29scy9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9f LnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkKQEAgLTI1OTAsMjggKzI1OTAs NDQgQEAKICAgICAgICAgIyBkYXRhc2V0IHVzZWQ7IHBhcmFtZXRlciBzaG91bGQgYmUgdGhlIGFu YWx5Z291cyBkYXRhc2V0IGluIHRoZQogICAgICAgICAjIGN1cnJlbnQgaGlzdG9yeS4KICAgICAg ICAgaGlzdG9yeSA9M0QgdHJhbnMuZ2V0X2hpc3RvcnkoKQotICAgICAgICBoZGFfc291cmNlX2Rp Y3QgPTNEIHt9ICMgTWFwcGluZyBmcm9tIEhEQSBpbiBoaXN0b3J5IHRvIHNvdXJjZSBIREE9CnMu CisKKyAgICAgICAgIyBDcmVhdGUgaW5kZXggZm9yIGhkYXMuCisgICAgICAgIGhkYV9zb3VyY2Vf ZGljdCA9M0Qge30KICAgICAgICAgZm9yIGhkYSBpbiBoaXN0b3J5LmRhdGFzZXRzOgotICAgICAg ICAgICAgc291cmNlX2hkYSA9M0QgaGRhLmNvcGllZF9mcm9tX2hpc3RvcnlfZGF0YXNldF9hc3Nv Y2lhdGlvbgotICAgICAgICAgICAgd2hpbGUgc291cmNlX2hkYToKLSAgICAgICAgICAgICAgICBp ZiBzb3VyY2VfaGRhLmRhdGFzZXQuaWQgbm90IGluIGhkYV9zb3VyY2VfZGljdCBvciBzb3VyY2Vf PQpoZGEuaGlkID0zRD0zRCBoZGEuaGlkOgotICAgICAgICAgICAgICAgICAgICBoZGFfc291cmNl X2RpY3RbIHNvdXJjZV9oZGEuZGF0YXNldC5pZCBdID0zRCBoZGEKLSAgICAgICAgICAgICAgICBz b3VyY2VfaGRhID0zRCBzb3VyY2VfaGRhLmNvcGllZF9mcm9tX2hpc3RvcnlfZGF0YXNldF9hc3Nv PQpjaWF0aW9uCisgICAgICAgICAgICBrZXkgPTNEICclc18lcycgJSAoaGRhLmhpZCwgaGRhLmRh dGFzZXQuaWQpCisgICAgICAgICAgICBoZGFfc291cmNlX2RpY3RbIGhkYS5kYXRhc2V0LmlkIF0g PTNEIGhkYV9zb3VyY2VfZGljdFsga2V5IF0gPQo9M0QgaGRhCj0yMAogICAgICAgICAjIERpdHRv IGZvciBkYXRhc2V0IGNvbGxlY3Rpb25zLgogICAgICAgICBoZGNhX3NvdXJjZV9kaWN0ID0zRCB7 fQogICAgICAgICBmb3IgaGRjYSBpbiBoaXN0b3J5LmRhdGFzZXRfY29sbGVjdGlvbnM6Ci0gICAg ICAgICAgICBzb3VyY2VfaGRjYSA9M0QgaGRjYS5jb3BpZWRfZnJvbV9oaXN0b3J5X2RhdGFzZXRf Y29sbGVjdGlvbl9hcz0Kc29jaWF0aW9uCi0gICAgICAgICAgICB3aGlsZSBzb3VyY2VfaGRjYToK LSAgICAgICAgICAgICAgICBpZiBzb3VyY2VfaGRjYS5jb2xsZWN0aW9uLmlkIG5vdCBpbiBoZGNh X3NvdXJjZV9kaWN0IG9yIHNvPQp1cmNlX2hkY2EuaGlkID0zRD0zRCBoZGNhLmhpZDoKLSAgICAg ICAgICAgICAgICAgICAgaGRjYV9zb3VyY2VfZGljdFsgc291cmNlX2hkY2EuY29sbGVjdGlvbi5p ZCBdID0zRCBoZGNhCi0gICAgICAgICAgICAgICAgc291cmNlX2hkY2EgPTNEIHNvdXJjZV9oZGNh LmNvcGllZF9mcm9tX2hpc3RvcnlfZGF0YXNldF9jbz0KbGxlY3Rpb25fYXNzb2NpYXRpb24KKyAg ICAgICAgICAgIGtleSA9M0QgJyVzXyVzJyAlIChoZGNhLmhpZCwgaGRjYS5jb2xsZWN0aW9uLmlk KQorICAgICAgICAgICAgaGRjYV9zb3VyY2VfZGljdFsgaGRhLmNvbGxlY3Rpb24uaWQgXSA9M0Qg aGRjYV9zb3VyY2VfZGljdFsga2U9CnkgXSA9M0QgaGRjYQorCisgICAgICAgICMgTWFwIGRhdGFz ZXQgb3IgY29sbGVjdGlvbiB0byBjdXJyZW50IGhpc3RvcnkKKyAgICAgICAgZGVmIG1hcF90b19o aXN0b3J5KHZhbHVlKToKKyAgICAgICAgICAgIGlkID0zRCBOb25lCisgICAgICAgICAgICBzb3Vy Y2UgPTNEIE5vbmUKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHRyYW5zLmFwcC5t b2RlbC5IaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uPQopOgorICAgICAgICAgICAgICAgIGlkID0z RCB2YWx1ZS5kYXRhc2V0LmlkCisgICAgICAgICAgICAgICAgc291cmNlID0zRCBoZGFfc291cmNl X2RpY3QKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHJhbnMuYXBwLm1vZGVs Lkhpc3RvcnlEYXRhc2V0Q29sbGVjdGlvPQpuQXNzb2NpYXRpb24pOgorICAgICAgICAgICAgICAg IGlkID0zRCB2YWx1ZS5jb2xsZWN0aW9uLmlkCisgICAgICAgICAgICAgICAgc291cmNlID0zRCBo ZGNhX3NvdXJjZV9kaWN0CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVy biBOb25lCisgICAgICAgICAgICBrZXkgPTNEICclc18lcycgJSAodmFsdWUuaGlkLCBpZCkKKyAg ICAgICAgICAgIGlmIGtleSBpbiBzb3VyY2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJj ZVsga2V5IF0KKyAgICAgICAgICAgIGVsaWYgaWQgaW4gc291cmNlOgorICAgICAgICAgICAgICAg IHJldHVybiBzb3VyY2VbIGlkIF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg cmV0dXJuIE5vbmUKPTIwCiAgICAgICAgICMgVW5wYWNrIHVudmFsaWRhdGVkIHZhbHVlcyB0byBz dHJpbmdzLCB0aGV5J2xsIGJlIHZhbGlkYXRlZCB3aGVuID0KdGhlCiAgICAgICAgICMgZm9ybSBp cyBzdWJtaXR0ZWQgKHRoaXMgaGFwcGVucyB3aGVuIHJlLXJ1bm5pbmcgYSBqb2IgdGhhdCB3YXMK ICAgICAgICAgIyBpbml0aWFsbHkgcnVuIGJ5IGEgd29ya2Zsb3cpCiAgICAgICAgICNUaGlzIG5l ZWRzIHRvIGJlIGRvbmUgcmVjdXJzaXZlbHkgdGhyb3VnaCBncm91cGluZyBwYXJhbWV0ZXJzCi0g ICAgICAgIGRlZiByZXJ1bl9jYWxsYmFjayggaW5wdXQsIHZhbHVlLCBwcmVmaXhlZF9uYW1lLCBw cmVmaXhlZF9sYWJlbCApOgorICAgICAgICBkZWYgbWFwcGluZ19jYWxsYmFjayggaW5wdXQsIHZh bHVlLCBwcmVmaXhlZF9uYW1lLCBwcmVmaXhlZF9sYWJlbCA9Cik6CiAgICAgICAgICAgICBpZiBp c2luc3RhbmNlKCB2YWx1ZSwgVW52YWxpZGF0ZWRWYWx1ZSApOgogICAgICAgICAgICAgICAgIHRy eToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlucHV0LnRvX2h0bWxfdmFsdWUoIHZhbHVl LnZhbHVlLCB0cmFucy5hcHAgKQpAQCAtMjYyMywyMiArMjYzOSwxNyBAQAogICAgICAgICAgICAg ICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsbGlzdCk6CiAgICAgICAgICAgICAgICAgICAgIHZhbHVl cyA9M0QgW10KICAgICAgICAgICAgICAgICAgICAgZm9yIHZhbCBpbiB2YWx1ZToKLSAgICAgICAg ICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsLCB0cmFucy5hcHAubW9kZWwuSGlzdG9y eURhdGFzZXRBPQpzc29jaWF0aW9uKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB2 YWwuZGF0YXNldC5pZCBpbiBoZGFfc291cmNlX2RpY3Q6Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZhbHVlcy5hcHBlbmQoIGhkYV9zb3VyY2VfZGljdFsgdmFsLmRhdGFzZT0KdC5p ZCBdICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKCB2YWwgKQorICAgICAgICAgICAgICAgICAg ICAgICAgbmV3X3ZhbCA9M0QgbWFwX3RvX2hpc3RvcnkoIHZhbCApCisgICAgICAgICAgICAgICAg ICAgICAgICBpZiBuZXdfdmFsOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5h cHBlbmQoIG5ld192YWwgKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKCB2YWwgKQogICAgICAgICAgICAgICAg ICAgICByZXR1cm4gdmFsdWVzCi0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwg dHJhbnMuYXBwLm1vZGVsLkhpc3RvcnlEYXRhc2V0QXNzb2NpYT0KdGlvbik6Ci0gICAgICAgICAg ICAgICAgICAgIGlmIHZhbHVlLmRhdGFzZXQuaWQgaW4gaGRhX3NvdXJjZV9kaWN0OgotICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIGhkYV9zb3VyY2VfZGljdFsgdmFsdWUuZGF0YXNldC5p ZCBdCi0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHJhbnMuYXBwLm1vZGVs Lkhpc3RvcnlEYXRhc2V0Q29sbGVjdD0KaW9uQXNzb2NpYXRpb24pOgotICAgICAgICAgICAgICAg ICAgICBpZiB2YWx1ZS5jb2xsZWN0aW9uLmlkIGluIGhkY2Ffc291cmNlX2RpY3Q6Ci0gICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gaGRjYV9zb3VyY2VfZGljdFsgdmFsdWUuY29sbGVjdGlv bi5pZCBdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IG1hcF90b19oaXN0b3J5KCB2YWx1ZSApCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoIGlu cHV0LCBEYXRhQ29sbGVjdGlvblRvb2xQYXJhbWV0ZXIgKToKLSAgICAgICAgICAgICAgICBpZiB2 YWx1ZS5jb2xsZWN0aW9uLmlkIGluIGhkY2Ffc291cmNlX2RpY3Q6Ci0gICAgICAgICAgICAgICAg ICAgIHJldHVybiBoZGNhX3NvdXJjZV9kaWN0WyB2YWx1ZS5jb2xsZWN0aW9uLmlkIF0KLSAgICAg ICAgdmlzaXRfaW5wdXRfdmFsdWVzKCB0b29sX2lucHV0cywgcGFyYW1zLCByZXJ1bl9jYWxsYmFj ayApCisgICAgICAgICAgICAgICAgcmV0dXJuIG1hcF90b19oaXN0b3J5KCB2YWx1ZSApCisgICAg ICAgIHZpc2l0X2lucHV0X3ZhbHVlcyggdG9vbF9pbnB1dHMsIHBhcmFtcywgbWFwcGluZ19jYWxs YmFjayApCj0yMAogICAgIGRlZiBfY29tcGFyZV90b29sX3ZlcnNpb24oIHNlbGYsIHRyYW5zLCBq b2IgKToKICAgICAgICAgIiIiCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHkt Y2VudHJhbC9jb21taXRzL2NhYWRlOGJjYzczZi8KQ2hhbmdlc2V0OiAgIGNhYWRlOGJjYzczZgpC cmFuY2g6ICAgICAgcmVsZWFzZV8xNS4wMwpVc2VyOiAgICAgICAgZGFuCkRhdGU6ICAgICAgICAy MDE1LTA0LTAzIDE5OjM5OjQwKzAwOjAwClN1bW1hcnk6ICAgICBGaXhlcyBmb3IgZGlzcGxheWlu ZyBjZXJ0YWluIHZhbGlkIHRvb2wgaW50ZXJmYWNlcyBpbiB0aGUgVG9vbD0KU2hlZC4KQWZmZWN0 ZWQgIzogIDMgZmlsZXMKCmRpZmYgLXIgZjBiYmY1Nzc1ZDNmNzcwZWM5YWZlNDcxMjJkOTdiN2Qw NDZmZjA4ZSAtciBjYWFkZThiY2M3M2ZmNzEzZmNlYzhjYj0KMTBjYzgwODk2YmE2NTQyNjYgbGli L2dhbGF4eS91dGlsL2Ria2V5cy5weQotLS0gYS9saWIvZ2FsYXh5L3V0aWwvZGJrZXlzLnB5Cisr KyBiL2xpYi9nYWxheHkvdXRpbC9kYmtleXMucHkKQEAgLTM4LDcgKzM4LDcgQEAKICAgICAgICAg ICAgICAgICBmb3IgZGF0YXNldCBpbiBkYXRhc2V0czoKICAgICAgICAgICAgICAgICAgICAgcnZh bC5hcHBlbmQoICggZGF0YXNldC5kYmtleSwgIiVzICglcykgW0hpc3RvcnldIiAlICggPQpkYXRh c2V0Lm5hbWUsIGRhdGFzZXQuZGJrZXkgKSApICkKICAgICAgICAgICAgIHVzZXIgPTNEIHRyYW5z LnVzZXIKLSAgICAgICAgICAgIGlmIHVzZXIgYW5kICdkYmtleXMnIGluIHVzZXIucHJlZmVyZW5j ZXM6CisgICAgICAgICAgICBpZiB1c2VyIGFuZCBoYXNhdHRyKCB1c2VyLCAncHJlZmVyZW5jZXMn ICkgYW5kICdkYmtleXMnIGluIHVzZT0Kci5wcmVmZXJlbmNlczoKICAgICAgICAgICAgICAgICB1 c2VyX2tleXMgPTNEIGxvYWRzKCB1c2VyLnByZWZlcmVuY2VzWydkYmtleXMnXSApCiAgICAgICAg ICAgICAgICAgZm9yIGtleSwgY2hyb21fZGljdCBpbiB1c2VyX2tleXMuaXRlcml0ZW1zKCk6CiAg ICAgICAgICAgICAgICAgICAgIHJ2YWwuYXBwZW5kKCAoIGtleSwgIiVzICglcykgW0N1c3RvbV0i ICUgKCBjaHJvbV9kaWN0Wz0KJ25hbWUnXSwga2V5ICkgKSApCgpkaWZmIC1yIGYwYmJmNTc3NWQz Zjc3MGVjOWFmZTQ3MTIyZDk3YjdkMDQ2ZmYwOGUgLXIgY2FhZGU4YmNjNzNmZjcxM2ZjZWM4Y2I9 CjEwY2M4MDg5NmJhNjU0MjY2IGxpYi9nYWxheHkvd2ViL2ZyYW1ld29yay93ZWJhcHAucHkKLS0t IGEvbGliL2dhbGF4eS93ZWIvZnJhbWV3b3JrL3dlYmFwcC5weQorKysgYi9saWIvZ2FsYXh5L3dl Yi9mcmFtZXdvcmsvd2ViYXBwLnB5CkBAIC02NjgsNyArNjY4LDggQEAKICAgICAgICAgIiIiCiAg ICAgICAgIGhpc3RvcnkgPTNEIE5vbmUKICAgICAgICAgaWYgc2VsZi5nYWxheHlfc2Vzc2lvbjoK LSAgICAgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuZ2FsYXh5X3Nlc3Npb24uY3VycmVudF9oaXN0 b3J5CisgICAgICAgICAgICBpZiBoYXNhdHRyKCBzZWxmLmdhbGF4eV9zZXNzaW9uLCAnY3VycmVu dF9oaXN0b3J5JyApOgorICAgICAgICAgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuZ2FsYXh5X3Nl c3Npb24uY3VycmVudF9oaXN0b3J5CiAgICAgICAgIGlmIG5vdCBoaXN0b3J5IGFuZCB1dGlsLnN0 cmluZ19hc19ib29sKCBjcmVhdGUgKToKICAgICAgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYubmV3 X2hpc3RvcnkoKQogICAgICAgICByZXR1cm4gaGlzdG9yeQoKZGlmZiAtciBmMGJiZjU3NzVkM2Y3 NzBlYzlhZmU0NzEyMmQ5N2I3ZDA0NmZmMDhlIC1yIGNhYWRlOGJjYzczZmY3MTNmY2VjOGNiPQox MGNjODA4OTZiYTY1NDI2NiBsaWIvdG9vbF9zaGVkL3V0aWwvdG9vbF91dGlsLnB5Ci0tLSBhL2xp Yi90b29sX3NoZWQvdXRpbC90b29sX3V0aWwucHkKKysrIGIvbGliL3Rvb2xfc2hlZC91dGlsL3Rv b2xfdXRpbC5weQpAQCAtMjM3LDEyICsyMzcsMTkgQEAKICAgICBpZiBpbnZhbGlkOgogICAgICAg ICAjIFdlJ3JlIGF0dGVtcHRpbmcgdG8gZGlzcGxheSBhIHRvb2wgaW4gdGhlIHRvb2wgc2hlZCB0 aGF0IGhhcyBiZWU9Cm4gZGV0ZXJtaW5lZCB0byBoYXZlIGVycm9ycywgc28gaXMgaW52YWxpZC4K ICAgICAgICAgcmV0dXJuIHN0YXRlCisgICAgdHJ5OgorICAgICAgICAjIEF0dGVtcHQgdG8gZ2Vu ZXJhdGUgdGhlIHRvb2wgc3RhdGUgdXNpbmcgdGhlIHN0YW5kYXJkIEdhbGF4eS1zaWQ9CmUgY29k ZQorICAgICAgICByZXR1cm4gdG9vbC5uZXdfc3RhdGUoIHRyYW5zICkKKyAgICBleGNlcHQgRXhj ZXB0aW9uLCBlOgorICAgICAgICAjIEZhbGwgYmFjayB0byBidWlsZGluZyB0b29sIHN0YXRlIGFz IGJlbG93CisgICAgICAgIGxvZy5kZWJ1ZyggJ0ZhaWxlZCB0byBidWlsZCB0b29sIHN0YXRlIGZv ciB0b29sICIlcyIgdXNpbmcgc3RhbmRhcj0KZCBtZXRob2QsIHdpbGwgdHJ5IHRvIGZhbGwgYmFj ayBvbiBjdXN0b20gbWV0aG9kOiAlcycsIHRvb2wuaWQsIGUgKQogICAgIGlucHV0cyA9M0QgdG9v bC5pbnB1dHNfYnlfcGFnZVsgMCBdCiAgICAgY29udGV4dCA9M0QgRXhwcmVzc2lvbkNvbnRleHQo IHN0YXRlLmlucHV0cywgcGFyZW50PTNETm9uZSApCiAgICAgZm9yIGlucHV0IGluIGlucHV0cy5p dGVydmFsdWVzKCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN0YXRlLmlucHV0c1sgaW5w dXQubmFtZSBdID0zRCBpbnB1dC5nZXRfaW5pdGlhbF92YWx1ZSggdHJhbnMsPQogY29udGV4dCAp CiAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICMgRklYTUU6IG5vdCBhbGwgdmFsdWVzIHNo b3VsZCBiZSBhbiBlbXB0eSBsaXN0CiAgICAgICAgICAgICBzdGF0ZS5pbnB1dHNbIGlucHV0Lm5h bWUgXSA9M0QgW10KICAgICByZXR1cm4gc3RhdGUKPTIwCgoKaHR0cHM6Ly9iaXRidWNrZXQub3Jn L2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2NlOTdhN2IyMDk0ZS8KQ2hhbmdlc2V0OiAg IGNlOTdhN2IyMDk0ZQpCcmFuY2g6ICAgICAgcmVsZWFzZV8xNS4wMwpVc2VyOiAgICAgICAgZGFu CkRhdGU6ICAgICAgICAyMDE1LTAzLTI2IDE1OjQ3OjU4KzAwOjAwClN1bW1hcnk6ICAgICBSZS1l bmFibGUgSUdWIGxvY2FsIGV4dGVybmFsIGRpc3BsYXkgYXBwbGljYXRpb24gYnkgZGVmYXVsdC4g QT0KZGQgaGczOCBhcyBhdmFpbGFibGUgZ2Vub21lLiBXZSBzaG91bGQgcHJvYmFibHkgdXBkYXRl IHRoaXMgdmlldyB0byBlaXRoZXIgPQphbGxvdyBhbnkgZ2Vub21lIG9yIHRvIGZ1bmN0aW9uIGxp a2UgdGhlIGN1cnJlbnQgd2ViX2xpbmtfbWFpbi4KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAt ciBjYWFkZThiY2M3M2ZmNzEzZmNlYzhjYjEwY2M4MDg5NmJhNjU0MjY2IC1yIGNlOTdhN2IyMDk0 ZTE3ODQ0MzY1MzgxPQowZTE5YzkxOTViOGQ5MTliZiB0b29sLWRhdGEvc2hhcmVkL2lndi9pZ3Zf YnVpbGRfc2l0ZXMudHh0LnNhbXBsZQotLS0gYS90b29sLWRhdGEvc2hhcmVkL2lndi9pZ3ZfYnVp bGRfc2l0ZXMudHh0LnNhbXBsZQorKysgYi90b29sLWRhdGEvc2hhcmVkL2lndi9pZ3ZfYnVpbGRf c2l0ZXMudHh0LnNhbXBsZQpAQCAtMSw0ICsxLDQgQEAKICNzaXRlX2lkCXNpdGVfbmFtZQlzaXRl X3VybAlkYmtleQlpdmdfYnVpbGRfbmFtZQogd2ViX2xpbmtfbWFpbgl3ZWIgY3VycmVudAlodHRw Oi8vd3d3LmJyb2FkaW5zdGl0dXRlLm9yZy9pZ3YvcHJvamVjdHMvY3VycmU9Cm50L2lndi5waHAJ aGdfZzFrX3YzNwliMzcKICN3ZWJfam5scF8xLjUJd2ViIDEuNQlodHRwOi8vd3d3LmJyb2FkaW5z dGl0dXRlLm9yZy9pZ3ZkYXRhL2p3cy9wcm9kCWhnMTksPQpoZ19nMWtfdjM3LGhnMTgsMWtnX3Jl ZixoZzE3LGhnMTYsbW05LG1tOCxtbTcscGFuVHJvMixyaGVNYWMyLHJuNCxjYW5GYW0yLGI9Cm9z VGF1Nixib3NUYXU0LGJvc1RhdTMsc3VzU2Nyb2ZhLGdhbEdhbDMsY2F2UG9yMyxtb25Eb201LHhl blRybzIsdGFlR3V0MSx6ZT0KYnJhZmlzaCxkYW5SZXI2LGRhblJlcjcsZ2FzQWN1MSxBcGx5c2lh LFBsYXNtb2RpdW1fM0Q3X3YyLjEsUGxhc21vZGl1bV8zRDdfPQp2NS41LFBsYXNtb2RpdW1fNi4x LFBsYXNtb0RCXzcuMCxwdml2YXgsR1NNNTUyOTEwLHNhY0NlcjEsc2FjQ2VyMixzazEsWTU1LHM9 CmFjQ2VyNjIsc3BvbWJlXzcwOSxzcG9tYmVfMS41NSxjYW5kaWRhLG1nOCxzcHVyXzIuMSxzcHVy XzIuNSxzcHVyXzMuMCxXUzIwMT0KLGNlNixjZTQsZG0zLGRtMixkbWVsXzUuOSxkbWVsX3I1LjIy LGRtZWxfcjUuMzMsdGNhc18yLjAsdGNhc18zLjAsbmNyYXNzYV92PQozLG5jMTAsR2xhbWJsaWFf Mi4wLG1lNDksdGI5MjcsdGJnYW1iaSxsbWpyLGFuaWR1bGFuc180LjEsTkNfMDA5MDEyLFUwMDA5 Ni49CjIsTkNfMDAwOTEzLjIsTkNfMDAyNjU1LjIsQ1NhdmlnbnlpX3YyLjEsdGFpcjgsdGFpcjks dGFpcjEwLE9fU2F0aXZhX3I2LG9zYT0KdGl2YV82LjEsQjczLFptQjczXzVhLHBwYXRlbnNfMS4y LEQuZGlzY29pZGV1bQloZzE5LGIzNyxoZzE4LDFrZ19yZWYsaGcxNyxoPQpnMTYsbW05LG1tOCxt bTcscGFuVHJvMixyaGVNYWMyLHJuNCxjYW5GYW0yLGJvc1RhdTYsYm9zVGF1NCxib3NUYXUzLHN1 c1Njcm89CmZhLGdhbEdhbDMsY2F2UG9yMyxtb25Eb201LHhlblRybzIsdGFlR3V0MSx6ZWJyYWZp c2gsZGFuUmVyNixkYW5SZXI3LGdhc0FjdT0KMSxBcGx5c2lhLFBsYXNtb2RpdW1fM0Q3X3YyLjEs UGxhc21vZGl1bV8zRDdfdjUuNSxQbGFzbW9kaXVtXzYuMSxQbGFzbW9EQl83PQouMCxwdml2YXgs R1NNNTUyOTEwLHNhY0NlcjEsc2FjQ2VyMixzazEsWTU1LHNhY0NlcjYyLHNwb21iZV83MDksc3Bv bWJlXzEuNTU9CixjYW5kaWRhLG1nOCxzcHVyXzIuMSxzcHVyXzIuNSxzcHVyXzMuMCxXUzIwMSxj ZTYsY2U0LGRtMyxkbTIsZG1lbF81LjksZG1lbD0KX3I1LjIyLGRtZWxfcjUuMzMsdGNhc18yLjAs dGNhc18zLjAsbmNyYXNzYV92MyxuYzEwLEdsYW1ibGlhXzIuMCxtZTQ5LHRiOTI3PQosdGJnYW1i aSxsbWpyLGFuaWR1bGFuc180LjEsTkNfMDA5MDEyLFUwMDA5Ni4yLE5DXzAwMDkxMy4yLE5DXzAw MjY1NS4yLENTYXY9CmlnbnlpX3YyLjEsdGFpcjgsdGFpcjksdGFpcjEwLE9fU2F0aXZhX3I2LG9z YXRpdmFfNi4xLEI3MyxabUI3M181YSxwcGF0ZW5zXz0KMS4yLEQuZGlzY29pZGV1bQotI2xvY2Fs X2RlZmF1bHQJbG9jYWwJaHR0cDovL2xvY2FsaG9zdDo2MDE1MS9sb2FkCWhnMTksaGdfZzFrX3Yz NyxoZzE4LDFrZ189CnJlZixoZzE3LGhnMTYsbW05LG1tOCxtbTcscGFuVHJvMixyaGVNYWMyLHJu NCxjYW5GYW0yLGJvc1RhdTYsYm9zVGF1NCxib3NUYT0KdTMsc3VzU2Nyb2ZhLGdhbEdhbDMsY2F2 UG9yMyxtb25Eb201LHhlblRybzIsdGFlR3V0MSx6ZWJyYWZpc2gsZGFuUmVyNixkYW5SPQplcjcs Z2FzQWN1MSxBcGx5c2lhLFBsYXNtb2RpdW1fM0Q3X3YyLjEsUGxhc21vZGl1bV8zRDdfdjUuNSxQ bGFzbW9kaXVtXzYuMSw9ClBsYXNtb0RCXzcuMCxwdml2YXgsR1NNNTUyOTEwLHNhY0NlcjEsc2Fj Q2VyMixzazEsWTU1LHNhY0NlcjYyLHNwb21iZV83MDkscz0KcG9tYmVfMS41NSxjYW5kaWRhLG1n OCxzcHVyXzIuMSxzcHVyXzIuNSxzcHVyXzMuMCxXUzIwMSxjZTYsY2U0LGRtMyxkbTIsZG1lPQps XzUuOSxkbWVsX3I1LjIyLGRtZWxfcjUuMzMsdGNhc18yLjAsdGNhc18zLjAsbmNyYXNzYV92Myxu YzEwLEdsYW1ibGlhXzIuMCw9Cm1lNDksdGI5MjcsdGJnYW1iaSxsbWpyLGFuaWR1bGFuc180LjEs TkNfMDA5MDEyLFUwMDA5Ni4yLE5DXzAwMDkxMy4yLE5DXzAwMj0KNjU1LjIsQ1NhdmlnbnlpX3Yy LjEsdGFpcjgsdGFpcjksdGFpcjEwLE9fU2F0aXZhX3I2LG9zYXRpdmFfNi4xLEI3MyxabUI3M181 PQphLHBwYXRlbnNfMS4yLEQuZGlzY29pZGV1bQloZzE5LGIzNyxoZzE4LDFrZ19yZWYsaGcxNyxo ZzE2LG1tOSxtbTgsbW03LHBhblQ9CnJvMixyaGVNYWMyLHJuNCxjYW5GYW0yLGJvc1RhdTYsYm9z VGF1NCxib3NUYXUzLHN1c1Njcm9mYSxnYWxHYWwzLGNhdlBvcjMsbT0Kb25Eb201LHhlblRybzIs dGFlR3V0MSx6ZWJyYWZpc2gsZGFuUmVyNixkYW5SZXI3LGdhc0FjdTEsQXBseXNpYSxQbGFzbW9k aXVtPQpfM0Q3X3YyLjEsUGxhc21vZGl1bV8zRDdfdjUuNSxQbGFzbW9kaXVtXzYuMSxQbGFzbW9E Ql83LjAscHZpdmF4LEdTTTU1MjkxMCw9CnNhY0NlcjEsc2FjQ2VyMixzazEsWTU1LHNhY0NlcjYy LHNwb21iZV83MDksc3BvbWJlXzEuNTUsY2FuZGlkYSxtZzgsc3B1cl8yLj0KMSxzcHVyXzIuNSxz cHVyXzMuMCxXUzIwMSxjZTYsY2U0LGRtMyxkbTIsZG1lbF81LjksZG1lbF9yNS4yMixkbWVsX3I1 LjMzLHRjPQphc18yLjAsdGNhc18zLjAsbmNyYXNzYV92MyxuYzEwLEdsYW1ibGlhXzIuMCxtZTQ5 LHRiOTI3LHRiZ2FtYmksbG1qcixhbmlkdWw9CmFuc180LjEsTkNfMDA5MDEyLFUwMDA5Ni4yLE5D XzAwMDkxMy4yLE5DXzAwMjY1NS4yLENTYXZpZ255aV92Mi4xLHRhaXI4LHRhaT0KcjksdGFpcjEw LE9fU2F0aXZhX3I2LG9zYXRpdmFfNi4xLEI3MyxabUI3M181YSxwcGF0ZW5zXzEuMixELmRpc2Nv aWRldW0KK2xvY2FsX2RlZmF1bHQJbG9jYWwJaHR0cDovL2xvY2FsaG9zdDo2MDE1MS9sb2FkCWhn MzgsaGcxOSxoZ19nMWtfdjM3LGhnMTgsPQoxa2dfcmVmLGhnMTcsaGcxNixtbTksbW04LG1tNyxw YW5Ucm8yLHJoZU1hYzIscm40LGNhbkZhbTIsYm9zVGF1Nixib3NUYXU0LGI9Cm9zVGF1MyxzdXNT Y3JvZmEsZ2FsR2FsMyxjYXZQb3IzLG1vbkRvbTUseGVuVHJvMix0YWVHdXQxLHplYnJhZmlzaCxk YW5SZXI2LD0KZGFuUmVyNyxnYXNBY3UxLEFwbHlzaWEsUGxhc21vZGl1bV8zRDdfdjIuMSxQbGFz bW9kaXVtXzNEN192NS41LFBsYXNtb2RpdW1fPQo2LjEsUGxhc21vREJfNy4wLHB2aXZheCxHU001 NTI5MTAsc2FjQ2VyMSxzYWNDZXIyLHNrMSxZNTUsc2FjQ2VyNjIsc3BvbWJlXzc9CjA5LHNwb21i ZV8xLjU1LGNhbmRpZGEsbWc4LHNwdXJfMi4xLHNwdXJfMi41LHNwdXJfMy4wLFdTMjAxLGNlNixj ZTQsZG0zLGRtMj0KLGRtZWxfNS45LGRtZWxfcjUuMjIsZG1lbF9yNS4zMyx0Y2FzXzIuMCx0Y2Fz XzMuMCxuY3Jhc3NhX3YzLG5jMTAsR2xhbWJsaWFfPQoyLjAsbWU0OSx0YjkyNyx0YmdhbWJpLGxt anIsYW5pZHVsYW5zXzQuMSxOQ18wMDkwMTIsVTAwMDk2LjIsTkNfMDAwOTEzLjIsTkM9Cl8wMDI2 NTUuMixDU2F2aWdueWlfdjIuMSx0YWlyOCx0YWlyOSx0YWlyMTAsT19TYXRpdmFfcjYsb3NhdGl2 YV82LjEsQjczLFptQj0KNzNfNWEscHBhdGVuc18xLjIsRC5kaXNjb2lkZXVtCWhnMzgsaGcxOSxi MzcsaGcxOCwxa2dfcmVmLGhnMTcsaGcxNixtbTksbW04PQosbW03LHBhblRybzIscmhlTWFjMixy bjQsY2FuRmFtMixib3NUYXU2LGJvc1RhdTQsYm9zVGF1MyxzdXNTY3JvZmEsZ2FsR2FsMyw9CmNh dlBvcjMsbW9uRG9tNSx4ZW5Ucm8yLHRhZUd1dDEsemVicmFmaXNoLGRhblJlcjYsZGFuUmVyNyxn YXNBY3UxLEFwbHlzaWEsUD0KbGFzbW9kaXVtXzNEN192Mi4xLFBsYXNtb2RpdW1fM0Q3X3Y1LjUs UGxhc21vZGl1bV82LjEsUGxhc21vREJfNy4wLHB2aXZheCxHPQpTTTU1MjkxMCxzYWNDZXIxLHNh Y0NlcjIsc2sxLFk1NSxzYWNDZXI2MixzcG9tYmVfNzA5LHNwb21iZV8xLjU1LGNhbmRpZGEsbWc9 Cjgsc3B1cl8yLjEsc3B1cl8yLjUsc3B1cl8zLjAsV1MyMDEsY2U2LGNlNCxkbTMsZG0yLGRtZWxf NS45LGRtZWxfcjUuMjIsZG1lbD0KX3I1LjMzLHRjYXNfMi4wLHRjYXNfMy4wLG5jcmFzc2FfdjMs bmMxMCxHbGFtYmxpYV8yLjAsbWU0OSx0YjkyNyx0YmdhbWJpLGxtPQpqcixhbmlkdWxhbnNfNC4x LE5DXzAwOTAxMixVMDAwOTYuMixOQ18wMDA5MTMuMixOQ18wMDI2NTUuMixDU2F2aWdueWlfdjIu MSw9CnRhaXI4LHRhaXI5LHRhaXIxMCxPX1NhdGl2YV9yNixvc2F0aXZhXzYuMSxCNzMsWm1CNzNf NWEscHBhdGVuc18xLjIsRC5kaXNjbz0KaWRldW0KCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2Fs YXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvMjJiMWRhOTIzMThkLwpDaGFuZ2VzZXQ6ICAgMjJi MWRhOTIzMThkCkJyYW5jaDogICAgICByZWxlYXNlXzE1LjAzClVzZXI6ICAgICAgICBqbWNoaWx0 b24KRGF0ZTogICAgICAgIDIwMTUtMDQtMDYgMTY6Mzc6NDcrMDA6MDAKU3VtbWFyeTogICAgIEJ1 Z2ZpeGVzIGZvciBydW50aW1lIHBhcmFtZXRlciBoYW5kbGluZyBpbiB0aGUgd29ya2Zsb3cgcnVu IGZvPQpybS4KClRoZSBiZWhhdmlvciBvZiB0aGVzZSBmb3JtcyB3YXMgbW9kaWZpZWQgaW4gUFIg NDMzIChodHRwczovL2JpdGJ1Y2tldC5vcmcvZz0KYWxheHkvZ2FsYXh5LWNlbnRyYWwvcHVsbC1y ZXF1ZXN0LzQzMy9maXgtYWxsb3ctZWRpdGluZy13b3JrZmxvd3Mtb24tdGhlLWZsPQp5LWZvci9k aWZmIyAtIG5vdCBtZXJnZWQgYnkgbWUgOnwgKSAtIHNvIHRoYXQgdGhlIGVudGlyZSB3b3JrZmxv dyB3b3VsZCBiZSA9CnN1Ym1pdHRlZCBhcyBydW50aW1lIHBhcmFtZXRlcnMgb24gZWFjaCBzdWJt aXNzaW9uLgoKSW4gYWRkaXRpb24gdG8gdGhpcyBjYXVzaW5nIGJ1Z3MgcmVsYXRlZCB0byB1bnZh bGlkYXRlZCBwYXJhbWV0ZXJzIGh0dHBzOi8vPQp0cmVsbG8uY29tL2MvNzJXdVo4bXUgYW5kIG90 aGVyIHByb2JsZW1zIHdpdGggc2VsZWN0IHBhcmFtZXRlcnMgKGUuZy4gaHR0cDo9Ci8vZGV2Lmxp c3QuZ2FsYXh5cHJvamVjdC5vcmcvV29ya2Zsb3ctYnVnLXdoZW4tbG9jLWVudHJpZXMtYXJlLW1p c3NpbmctdGM0Nj0KNjY4NzUuaHRtbCkgLSBJIGp1c3QgZGlzY292ZXJlZCBpdCB3b3VsZCBhbHNv IGNhdXNlIHRoZSBtb2RpZmllZCB2YWx1ZSB0byBiPQplIHN1Ym1pdHRlZCBldmVuIGlmIHRoZSB1 c2VyIG9wdHMgdG8gdW5kbyB0aGUgc2VsZWN0aW9uIG9mIGEgcnVudGltZSB3b3JrZmw9Cm93IHBh cmFtZXRlciBhbmQgcmVzdG9yZSB0aGUgcHJldmlvdXMgc2VsZWN0aW9uIChpLmUuIHRoZSBmb3Jt IHdvdWxkIHNob3cgdD0KaGUgb3JpZ2luYWwgdmFsdWUgYnV0IHRoZSBuZXcgdmFsdWUgd291bGQg YmUgc3VibWl0dGVkKS4KClRoaXMgUFIgcmVzdG9yZXMgdGhlIHByZXZpb3VzIGJlaGF2aW9yIG9m IGdpdmluZyB0aGUgc3VibWl0dGVkIGZvcm0gZWxlbWVudD0KcyBhIHVuaXF1ZSBuYW1lIHNvIGV2 ZXJ5IHZhbHVlIGluIHRoZSB3b3JrZmxvdyBpcyBub3QgcmVwbGFjZWQgYXMgcGFydCBvZiB0PQpo ZSBzdWJtaXNzaW9uIC0gZml4aW5nIHRoZSBmb3JtZXIgcHJvYmxlbS4gVGhlIG5ldyB0ZWNobmlx dWUgYWxzbyBmaXhlcyB0aGU9CiBvdGhlciBwcm9ibGVtIGFzIHdlbGwuCkFmZmVjdGVkICM6ICAx IGZpbGUKCmRpZmYgLXIgY2U5N2E3YjIwOTRlMTc4NDQzNjUzODEwZTE5YzkxOTViOGQ5MTliZiAt ciAyMmIxZGE5MjMxOGRjZmZjY2FkMDA5OD0KYzkxYzc5YmZkNDJhOTU2MzEgdGVtcGxhdGVzL3dl YmFwcHMvZ2FsYXh5L3dvcmtmbG93L3J1bi5tYWtvCi0tLSBhL3RlbXBsYXRlcy93ZWJhcHBzL2dh bGF4eS93b3JrZmxvdy9ydW4ubWFrbworKysgYi90ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvd29y a2Zsb3cvcnVuLm1ha28KQEAgLTE1NCwxMSArMTU0LDExIEBACj0yMAogICAgICAgICAgJCgiLndv cmtmbG93LWVkaXQtYnV0dG9uIikub24oImNsaWNrIixmdW5jdGlvbigpewogICAgICAgICAgICAg ICAgIHZhciBzdGF0ZSA9M0QgJCh0aGlzKS5hdHRyKCJuYW1lIik7Ci0gICAgICAgICAgICAgICAg dmFyIHN0ZXBUb29sQm94ID0zRCAkKHRoaXMpLnBhcmVudCgpLmZpbmQoJ2lucHV0Om5vdChbY2xh cz0Kc10pOm5vdChbdHlwZT0zRCJoaWRkZW4iXSksIHNlbGVjdDpub3QoW2NsYXNzXSknKTsKLSAg ICAgICAgICAgICAgICB2YXIgbGFiZWxzID0zRCAkKHRoaXMpLnBhcmVudCgpLmZpbmQoJ2xhYmVs Jyk7CisgICAgICAgICAgICAgICAgdmFyIHN0ZXBUb29sQm94ID0zRCAkKHRoaXMpLnBhcmVudCgp LnBhcmVudCgpLmZpbmQoJy5lZGl0YT0KYmxlLXBhcmFtJykuZmluZCgnaW5wdXQ6bm90KFtjbGFz c10pOm5vdChbdHlwZT0zRCJoaWRkZW4iXSksIHNlbGVjdDpub3QoW2NsPQphc3NdKScpOworICAg ICAgICAgICAgICAgIHZhciBsYWJlbHMgPTNEICQodGhpcykucGFyZW50KCkucGFyZW50KCkuZmlu ZCgnLmVkaXRhYmxlLXA9CmFyYW0nKS5maW5kKCdsYWJlbCcpOwogICAgICAgICAgICAgICAgIHZh ciBzcGxpdF9uYW1lID0zRCBzdGVwVG9vbEJveC5hdHRyKCJuYW1lIikuc3BsaXQoInwiKTsKICAg ICAgICAgICAgICAgICB2YXIgc3RlcF9pZCA9M0Qgc3BsaXRfbmFtZVswXTsKLSAgICAgICAgICAg ICAgICB2YXIgc3RlcF9uYW1lID0zRCBzcGxpdF9uYW1lLnNsaWNlKDEsIHNwbGl0X25hbWUubGVu Z3RoKS5qPQpvaW4oInwiKTsKKyAgICAgICAgICAgICAgICB2YXIgc3RlcF9uYW1lID0zRCBzcGxp dF9uYW1lLnNsaWNlKDIsIHNwbGl0X25hbWUubGVuZ3RoKS5qPQpvaW4oInwiKTsKICAgICAgICAg ICAgICAgICB2YXIgaGlkZGVuX2h0bWwgPTNEICI8aW5wdXQgdHlwZT0zRCdoaWRkZW4nIG5hbWU9 M0QnIitzdGVwPQpfaWQrInxfX3J1bnRpbWVfXyIrc3RlcF9uYW1lKyInIHZhbHVlPTNEJ3RydWUn IC8+IjsKICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9M0QgIiI7CiAgICAgICAgICAgICAgICAg aWYgKHN0YXRlID0zRD0zRD0zRCAiZWRpdCIpewpAQCAtMTc5LDkgKzE3OSw5IEBACiAgICAgICAg ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICQo dGhpcykucGFyZW50KCkuZmluZCgiLmVkaXRhYmxlIikuaGlkZSgpOworICAgICAgICAgICAgICAg ICAgICAkKHRoaXMpLnBhcmVudCgpLmZpbmQoIi5lZGl0YWJsZSIpLmVtcHR5KCk7CiAgICAgICAg ICAgICAgICAgICAgICQodGhpcykucGFyZW50KCkucGFyZW50KCkuZmluZCgiLnVuZWRpdGFibGVf ZmllbGQiKS5zaD0Kb3coKTsKICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCJuYW1l IiwgImVkaXQiKTsKLSAgICAgICAgICAgICAgICAgICAgc3RlcFRvb2xCb3guaGlkZSgpOwogICAg ICAgICAgICAgICAgICAgICByZWFkeVBhcmFtZXRlcigkKHRoaXMpKTsKICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICB9KS5lYWNoKGZ1bmN0aW9uKGksIGljb24pIHsKQEAgLTI4MSw2ICsy ODEsOSBAQAogICAgIC5lZGl0YWJsZSB7CiAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgfQor ICAgIC5lZGl0YWJsZS1wYXJhbSB7CisgICAgICAgIGRpc3BsYXk6IG5vbmU7CisgICAgfQo9MjAK ICAgICAud29ya2Zsb3ctZWRpdC1idXR0b24tZWRpdGluZyB7CiAgICAgICAgIGNvbG9yOiBibGFj azsKQEAgLTQ0OCwxMSArNDUxLDE3IEBACiAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48c3Bh biBjbGFzcz0zRCJlZGl0YWJsZV9maWVsZCI+PHNwYW4gY2xhc3M9M0QiZT0KZGl0YWJsZSI+Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwYXJhbS5nZXRfaHRtbF9maWVsZCggdCwgdmFs dWUsIG90aGVyX3ZhbHVlcz0KKS5nZXRfaHRtbCggc3RyKHN0ZXAuaWQpICsgInwiKyBwcmVmaXgg KX0KICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj48aSBjbGFzcz0zRCJmYSB3b3JrZmxv dy1lZGl0LWJ1dHRvbiI+PC9pPjwvPQpzcGFuPgorICAgICAgICAgICAgICAgICAgICA8c3BhbiBj bGFzcz0zRCJlZGl0YWJsZS1wYXJhbSI+CisgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBy aXN0aW5lIHZhcmlhbnQgb2YgcGFyYW0sIHRoaXMgd2lsbCBiZSBjbG9uZWQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYW5kIG1vZGlmaWVkIHdoZW4gdGhlIHVzZXIgb3B0cyB0byBtYWtl IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGUuCisgICAgICAgICAg ICAgICAgICAgICAgICAtLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICR7cGFyYW0uZ2V0X2h0 bWxfZmllbGQoIHQsIHZhbHVlLCBvdGhlcl92YWx1ZXMpLmdlPQp0X2h0bWwoIHN0cihzdGVwLmlk KSArICJ8IisgImVkaXRhYmxlIiArICJ8IiArIHByZWZpeCApfQorICAgICAgICAgICAgICAgICAg ICA8L3NwYW4+PC9zcGFuPgogICAgICAgICAgICAgICAgICVlbmRpZgogICAgICAgICAgICAgJWVu ZGlmCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRz L2M4ZTU4MWQwZDVlYi8KQ2hhbmdlc2V0OiAgIGM4ZTU4MWQwZDVlYgpCcmFuY2g6ICAgICAgcmVs ZWFzZV8xNS4wMwpVc2VyOiAgICAgICAgY2FybGZlYmVyaGFyZApEYXRlOiAgICAgICAgMjAxNS0w NC0wNiAxODo0NDoyMSswMDowMApTdW1tYXJ5OiAgICAgRml4OiBkYXRhc2V0cy5wdXJnZV9hc3lu Yy9fcHVyZ2UgdG8gYWxsb3cgcHVyZ2luZyBoZGFzIHdpdGhpbiA9Cm5vbi1jdXJyZW50IGhpc3Rv cmllcwpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDIyYjFkYTkyMzE4ZGNmZmNjYWQwMDk4 YzkxYzc5YmZkNDJhOTU2MzEgLXIgYzhlNTgxZDBkNWViNTVlZjMzMjNjMTg9CjEwMDRmOWY3OGQz YjJhYzE3IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvZGF0YXNldC5weQot LS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2RhdGFzZXQucHkKKysr IGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9kYXRhc2V0LnB5CkBAIC04 NTIsMjIgKzg1MiwyNCBAQAogICAgICAgICBzdGF0dXMgPTNEICdkb25lJwogICAgICAgICB0cnk6 CiAgICAgICAgICAgICBpZCA9M0QgdHJhbnMuYXBwLnNlY3VyaXR5LmRlY29kZV9pZCggZGF0YXNl dF9pZCApCi0gICAgICAgICAgICBoaXN0b3J5ID0zRCB0cmFucy5nZXRfaGlzdG9yeSgpCiAgICAg ICAgICAgICB1c2VyID0zRCB0cmFucy5nZXRfdXNlcigpCiAgICAgICAgICAgICBoZGEgPTNEIHRy YW5zLnNhX3Nlc3Npb24ucXVlcnkoIHNlbGYuYXBwLm1vZGVsLkhpc3RvcnlEYXRhc2V0QT0Kc3Nv Y2lhdGlvbiApLmdldCggaWQgKQogICAgICAgICAgICAgIyBJbnZhbGlkIEhEQQogICAgICAgICAg ICAgYXNzZXJ0IGhkYSwgJ0ludmFsaWQgaGlzdG9yeSBkYXRhc2V0IElEJworCiAgICAgICAgICAg ICAjIFdhbGsgdXAgcGFyZW50IGRhdGFzZXRzIHRvIGZpbmQgdGhlIGNvbnRhaW5pbmcgaGlzdG9y eQorICAgICAgICAgICAgaGlzdG9yeSA9M0QgdHJhbnMuZ2V0X2hpc3RvcnkoKQogICAgICAgICAg ICAgdG9wbW9zdF9wYXJlbnQgPTNEIGhkYQogICAgICAgICAgICAgd2hpbGUgdG9wbW9zdF9wYXJl bnQucGFyZW50OgogICAgICAgICAgICAgICAgIHRvcG1vc3RfcGFyZW50ID0zRCB0b3Btb3N0X3Bh cmVudC5wYXJlbnQKLSAgICAgICAgICAgIGFzc2VydCB0b3Btb3N0X3BhcmVudCBpbiBoaXN0b3J5 LmRhdGFzZXRzLCAiRGF0YSBkb2VzIG5vdCBiZWxvPQpuZyB0byBjdXJyZW50IGhpc3RvcnkiCiAg ICAgICAgICAgICAjIElmIHRoZSB1c2VyIGlzIGFub255bW91cywgbWFrZSBzdXJlIHRoZSBIREEg aXMgb3duZWQgYnkgdGhlID0KY3VycmVudCBzZXNzaW9uLgogICAgICAgICAgICAgaWYgbm90IHVz ZXI6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHRyYW5zLmdhbGF4eV9zZXNzaW9uLmN1cnJlbnRf aGlzdG9yeV9pZCA9M0Q9M0QgdHJhbj0Kcy5oaXN0b3J5LmlkLCAnSW52YWxpZCBoaXN0b3J5IGRh dGFzZXQgSUQnCisgICAgICAgICAgICAgICAgY3VycmVudF9oaXN0b3J5X2lkID0zRCB0cmFucy5n YWxheHlfc2Vzc2lvbi5jdXJyZW50X2hpc3Rvcj0KeV9pZAorICAgICAgICAgICAgICAgIGFzc2Vy dCB0b3Btb3N0X3BhcmVudC5oaXN0b3J5LmlkID0zRD0zRCBjdXJyZW50X2hpc3RvcnlfaWQ9Ciwg J0RhdGEgZG9lcyBub3QgYmVsb25nIHRvIGN1cnJlbnQgdXNlcicKICAgICAgICAgICAgICMgSWYg dGhlIHVzZXIgaXMga25vd24sIG1ha2Ugc3VyZSB0aGUgSERBIGlzIG93bmVkIGJ5IHRoZSBjdXJy PQplbnQgdXNlci4KICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IHRv cG1vc3RfcGFyZW50Lmhpc3RvcnkudXNlciA9M0Q9M0QgdHJhbnMudXNlciwgJ0ludj0KYWxpZCBo aXN0b3J5IGRhdGFzZXQgSUQnCisgICAgICAgICAgICAgICAgYXNzZXJ0IHRvcG1vc3RfcGFyZW50 Lmhpc3RvcnkudXNlciA9M0Q9M0QgdXNlciwgJ0RhdGEgZG9lcz0KIG5vdCBiZWxvbmcgdG8gY3Vy cmVudCB1c2VyJworCiAgICAgICAgICAgICAjIEVuc3VyZSBIREEgaXMgZGVsZXRlZAogICAgICAg ICAgICAgaGRhLmRlbGV0ZWQgPTNEIFRydWUKICAgICAgICAgICAgICMgSERBIGlzIHB1cmdlYWJs ZQpAQCAtODkwLDggKzg5Miw4IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAg ICAgICAgICAgICBsb2cuZXhjZXB0aW9uKCAnVW5hYmxlIHRvIHB1cmdlIGRhdGFzZXQgKCVzKSBv biBwdXJnZSA9Cm9mIEhEQSAoJXMpOicgJSAoIGhkYS5kYXRhc2V0LmlkLCBoZGEuaWQgKSApCiAg ICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKLSAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbjoKLSAgICAgICAgICAgIG1zZyA9M0QgJ0hEQSBwdXJnZSBmYWlsZWQgKGVuY29kZWQ6ICVz LCBkZWNvZGVkOiAlcyknICUgKCBkYXRhPQpzZXRfaWQsIGlkICkKKyAgICAgICAgZXhjZXB0IEV4 Y2VwdGlvbiwgZXhjOgorICAgICAgICAgICAgbXNnID0zRCAnSERBIHB1cmdlIGZhaWxlZCAoZW5j b2RlZDogJXMsIGRlY29kZWQ6ICVzKTogJXMnICUgKCA9CmRhdGFzZXRfaWQsIGlkLCBleGMgKQog ICAgICAgICAgICAgbG9nLmV4Y2VwdGlvbiggbXNnICkKICAgICAgICAgICAgIHRyYW5zLmxvZ19l dmVudCggbXNnICkKICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdEYXRhc2V0IHJlbW92YWwgZnJv bSBkaXNrIGZhaWxlZCcKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50 cmFsL2NvbW1pdHMvN2IwYzMyODI4Mjk4LwpDaGFuZ2VzZXQ6ICAgN2IwYzMyODI4Mjk4CkJyYW5j aDogICAgICByZWxlYXNlXzE1LjAzClVzZXI6ICAgICAgICBndWVybGVyCkRhdGU6ICAgICAgICAy MDE1LTA0LTA3IDE4OjExOjM5KzAwOjAwClN1bW1hcnk6ICAgICBGaXggcmUtcnVuIG9wdGlvbiBm b3IgZGF0YSBtYW5hZ2VyIHRvb2xzCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgYzhlNTgx ZDBkNWViNTVlZjMzMjNjMTgxMDA0ZjlmNzhkM2IyYWMxNyAtciA3YjBjMzI4MjgyOTg0NDEwNjdh ZDZmMj0KMDNjMzgwNTA5Y2YxNjlkYzQgdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3Rvb2xfZm9y bS5tYWtvCi0tLSBhL3RlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS90b29sX2Zvcm0ubWFrbworKysg Yi90ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvdG9vbF9mb3JtLm1ha28KQEAgLTEwLDYgKzEwLDcg QEAKICAgICAgICAgIyMgVGhpcyBhdm9pZHMgbWFraW5nIHR3byBzZXBhcmF0ZSByZXF1ZXN0cyBz aW5jZSB0aGUgY2xhc3NpYyBmb3JtPQogcmVxdWlyZXMgdGhlIG1ha28gYW55d2F5LgogICAgICAg ICBwYXJhbXMgPTNEIGRpY3QodHJhbnMucmVxdWVzdC5wYXJhbXMpCiAgICAgICAgIHBhcmFtc1sn X19kYXRhc2V0X2lkX18nXSA9M0QgcGFyYW1zLmdldCgnaWQnLCBOb25lKQorICAgICAgICBwYXJh bXNbJ19fam9iX2lkX18nXSA9M0QgcGFyYW1zLmdldCgnam9iX2lkJywgTm9uZSkKICAgICAgICAg c2VsZi5mb3JtX2NvbmZpZyA9M0QgdG9vbC50b19qc29uKHRyYW5zLCBwYXJhbXMpCiAgICAgICAg IHNlbGYuZm9ybV9jb25maWcudXBkYXRlKHsKICAgICAgICAgICAgICdpZCcgICAgICAgICAgICAg ICAgOiB0b29sLmlkLAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRy YWwvY29tbWl0cy80YWU3OGU0MGQyNDcvCkNoYW5nZXNldDogICA0YWU3OGU0MGQyNDcKQnJhbmNo OiAgICAgIHJlbGVhc2VfMTUuMDMKVXNlcjogICAgICAgIGptY2hpbHRvbgpEYXRlOiAgICAgICAg MjAxNS0wNC0wOCAxMzo0NzoxMCswMDowMApTdW1tYXJ5OiAgICAgRml4IGRvY3VtZW50YXRpb24g Zm9yIHJlYWwgdXNlciBwYXJhbWV0ZXJzLgoKSSB0aGluayB3aGF0IHdhcyBkb2N1bWVudGVkIHdh cyB0aGUgaWRlYWwgY2FzZSAtIHdoaWNoIHdvdWxkIGJlIGdyZWF0IGlmIHRoPQplc2UgY291bGQg YmUgc2V0IHBlciBkZXN0aW5hdGlvbiAtIGJ1dCB0aGV5IGNhbm5vdCBiZSBzbyB0aGV5IHNob3Vs ZG4ndCBiZSA9CmRvY3VtZW50ZWQgdGhhdCB3YXkuCgpEb2N1bWVudGF0aW9uIGJyb2tlbiBpbiBo dHRwczovL2dpdGh1Yi5jb20vZ2FsYXh5cHJvamVjdC9nYWxheHkvY29tbWl0LzliNzc9Cjc1YmUw MzcyOGY3MjRjMDI1YTgzYmM3ZmZhOWUyOGMyYzkzMi4KQWZmZWN0ZWQgIzogIDIgZmlsZXMKCmRp ZmYgLXIgN2IwYzMyODI4Mjk4NDQxMDY3YWQ2ZjIwM2MzODA1MDljZjE2OWRjNCAtciA0YWU3OGU0 MGQyNDc1ZjUzNjMwMTRiZT0KYWQ2Y2M3NzJlZmM5OGQ0ZDUgY29uZmlnL2dhbGF4eS5pbmkuc2Ft cGxlCi0tLSBhL2NvbmZpZy9nYWxheHkuaW5pLnNhbXBsZQorKysgYi9jb25maWcvZ2FsYXh5Lmlu aS5zYW1wbGUKQEAgLTk2MCw2ICs5NjAsMTcgQEAKICMgYWx3YXlzLCBvbnN1Y2Nlc3MsIG5ldmVy CiAjY2xlYW51cF9qb2IgPTNEIGFsd2F5cwo9MjAKKyMgRm9yIHNpdGVzIHdoZXJlIGFsbCB1c2Vy cyBpbiBHYWxheHkgbWF0Y2ggdXNlcnMgb24gdGhlIHN5c3RlbSBvbiB3aGljaCBHPQphbGF4eQor IyBydW5zLCB0aGUgRFJNQUEgam9iIHJ1bm5lciBjYW4gYmUgY29uZmlndXJlZCB0byBzdWJtaXQg am9icyB0byB0aGUgRFJNIGE9CnMgdGhlCisjIGFjdHVhbCB1c2VyIGluc3RlYWQgb2YgYXMgdGhl IHVzZXIgcnVubmluZyB0aGUgR2FsYXh5IHNlcnZlciBwcm9jZXNzLiAgRj0Kb3IKKyMgZGV0YWls cyBvbiB0aGVzZSBvcHRpb25zLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gYXQ6CisjCisjIGh0dHA6 Ly9nYWxheHlwcm9qZWN0Lm9yZy93aWtpL0FkbWluL0NvbmZpZy9QZXJmb3JtYW5jZS9DbHVzdGVy CisjCisjZHJtYWFfZXh0ZXJuYWxfcnVuam9iX3NjcmlwdCA9M0Qgc2NyaXB0cy9kcm1hYV9leHRl cm5hbF9ydW5uZXIucHkKKyNkcm1hYV9leHRlcm5hbF9raWxsam9iX3NjcmlwdCA9M0Qgc2NyaXB0 cy9kcm1hYV9leHRlcm5hbF9raWxsZXIucHkKKyNleHRlcm5hbF9jaG93bl9zY3JpcHQgPTNEIHNj cmlwdHMvZXh0ZXJuYWxfY2hvd25fc2NyaXB0LnB5CisKICMgRmlsZSB0byBzb3VyY2UgdG8gc2V0 IHVwIHRoZSBlbnZpcm9ubWVudCB3aGVuIHJ1bm5pbmcgam9icy4gIEJ5IGRlZmF1bHQsPQogdGhl CiAjIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBHYWxheHkgc2VydmVyIHN0YXJ0cyBpcyB1c2Vk IHdoZW4gcnVubmluZyBqb2JzCiAjIGxvY2FsbHksIGFuZCB0aGUgZW52aXJvbm1lbnQgc2V0IHVw IHBlciB0aGUgRFJNJ3Mgc3VibWlzc2lvbiBtZXRob2QgYW5kCgpkaWZmIC1yIDdiMGMzMjgyODI5 ODQ0MTA2N2FkNmYyMDNjMzgwNTA5Y2YxNjlkYzQgLXIgNGFlNzhlNDBkMjQ3NWY1MzYzMDE0YmU9 CmFkNmNjNzcyZWZjOThkNGQ1IGNvbmZpZy9qb2JfY29uZi54bWwuc2FtcGxlX2FkdmFuY2VkCi0t LSBhL2NvbmZpZy9qb2JfY29uZi54bWwuc2FtcGxlX2FkdmFuY2VkCisrKyBiL2NvbmZpZy9qb2Jf Y29uZi54bWwuc2FtcGxlX2FkdmFuY2VkCkBAIC0yNTIsMTAgKzI1Miw3IEBACiAgICAgICAgICAg LS0+PC9kZXN0aW5hdGlvbj48ZGVzdGluYXRpb24gaWQ9M0QicmVhbF91c2VyX2NsdXN0ZXIiIHJ1 bm5lcj0zRD0KImRybWFhIj4KLSAgICAgICAgICAgIDwhLS0gVE9ETzogVGhlIHJlYWwgdXNlciBv cHRpb25zIHNob3VsZCBtYXliZSBub3QgYmUgY29uc2lkZXJlPQpkIHJ1bm5lciBwYXJhbXMuIC0t PgotICAgICAgICAgICAgPHBhcmFtIGlkPTNEImdhbGF4eV9leHRlcm5hbF9ydW5qb2Jfc2NyaXB0 Ij5zY3JpcHRzL2RybWFhX2V4dGU9CnJuYWxfcnVubmVyLnB5PC9wYXJhbT4KLSAgICAgICAgICAg IDxwYXJhbSBpZD0zRCJnYWxheHlfZXh0ZXJuYWxfa2lsbGpvYl9zY3JpcHQiPnNjcmlwdHMvZHJt YWFfZXh0PQplcm5hbF9raWxsZXIucHk8L3BhcmFtPgotICAgICAgICAgICAgPHBhcmFtIGlkPTNE ImdhbGF4eV9leHRlcm5hbF9jaG93bl9zY3JpcHQiPnNjcmlwdHMvZXh0ZXJuYWxfY2g9Cm93bl9z Y3JpcHQucHk8L3BhcmFtPgorICAgICAgICAgICAgPCEtLSBNYWtlIHN1cmUgdG8gc2V0dXAgMyBy ZWFsIHVzZXIgcGFyYW1ldGVycyBpbiBnYWxheHkuaW5pLiA9Ci0tPjwvZGVzdGluYXRpb24+PGRl c3RpbmF0aW9uIGlkPTNEImR5bmFtaWMiIHJ1bm5lcj0zRCJkeW5hbWljIj48IS0tIEEgZGVzdD0K aW5hdGlvbiB0aGF0IHJlcHJlc2VudHMgYSBtZXRob2QgaW4gdGhlIGR5bmFtaWMgcnVubmVyLiAt LT4KCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMv NDc0NDQ1MWEzNDA2LwpDaGFuZ2VzZXQ6ICAgNDc0NDQ1MWEzNDA2CkJyYW5jaDogICAgICByZWxl YXNlXzE1LjAzClVzZXI6ICAgICAgICBkYW5ub24KRGF0ZTogICAgICAgIDIwMTUtMDQtMDggMTY6 NTA6MzQrMDA6MDAKU3VtbWFyeTogICAgIFBvdGVudGlhbCBmaXggZm9yIHJlY2VudCB1d3NnaSB0 b29sc2hlZCBkYXRhYmFzZSBpc3N1ZXMuICBJbiBhPQpueSBldmVudCwgdGhpcyBjdXJyZW50IHBv b2wgZGlzcG9zYWwgaXMgZGVmaW5pdGVseSBicm9rZW4gKGFuZCBoaWRkZW4gZnJvbSA9CnZpZXcg ZHVlIHRvIGJsYW5rZXQgcGFzc2luZyBleGNlcHQpIGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0 aW9uLgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDRhZTc4ZTQwZDI0NzVmNTM2MzAxNGJl YWQ2Y2M3NzJlZmM5OGQ0ZDUgLXIgNDc0NDQ1MWEzNDA2MzhhNjMwMWZmMzA9CmQ3N2QyNGI1N2E0 MWJkZjIwIGxpYi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQvYnVpbGRhcHAucHkKLS0tIGEvbGli L2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9idWlsZGFwcC5weQorKysgYi9saWIvZ2FsYXh5L3dl YmFwcHMvdG9vbF9zaGVkL2J1aWxkYXBwLnB5CkBAIC0xNTMsOSArMTUzLDkgQEAKICAgICAgICAg ICAgIHdlYmFwcCA9M0Qgd3JhcF9pbl9zdGF0aWMoIHdlYmFwcCwgZ2xvYmFsX2NvbmYsICoqa3dh cmdzICkKICAgICAjIENsb3NlIGFueSBwb29sZWQgZGF0YWJhc2UgY29ubmVjdGlvbnMgYmVmb3Jl IGZvcmtpbmcKICAgICB0cnk6Ci0gICAgICAgIGdhbGF4eS53ZWJhcHBzLnRvb2xfc2hlZC5tb2Rl bC5tYXBwaW5nLm1ldGFkYXRhLmVuZ2luZS5jb25uZWN0aW9uXz0KcHJvdmlkZXIuX3Bvb2wuZGlz cG9zZSgpCisgICAgICAgIGdhbGF4eS53ZWJhcHBzLnRvb2xfc2hlZC5tb2RlbC5tYXBwaW5nLm1l dGFkYXRhLmJpbmQuZGlzcG9zZSgpCiAgICAgZXhjZXB0OgotICAgICAgICBwYXNzCisgICAgICAg IGxvZy5leGNlcHRpb24oIlVuYWJsZSB0byBkaXNwb3NlIG9mIHBvb2xlZCB0b29sX3NoZWQgbW9k ZWwgZGF0YWJhcz0KZSBjb25uZWN0aW9ucy4iKQogICAgICMgUmV0dXJuCiAgICAgcmV0dXJuIHdl YmFwcAo9MjAKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2Nv bW1pdHMvZGNlZTIwN2ViYWRhLwpDaGFuZ2VzZXQ6ICAgZGNlZTIwN2ViYWRhCkJyYW5jaDogICAg ICByZWxlYXNlXzE1LjAzClVzZXI6ICAgICAgICBkYW5ub24KRGF0ZTogICAgICAgIDIwMTUtMDQt MDggMTY6NTM6MzIrMDA6MDAKU3VtbWFyeTogICAgIFNpbWlsYXIgZml4IGFzIHRoZSBwcmV2aW91 cyAtLSBHYWxheHkgd2Fzbid0IGRpc3Bvc2luZyBvZiBwb29sPQplZCBjb25uZWN0aW9ucyBwcmlv ciB0byByZXR1cm5pbmcgd2ViYXBwIGFuZCAocG90ZW50aWFsKSBmb3JraW5nLgpBZmZlY3RlZCAj OiAgMSBmaWxlCgpkaWZmIC1yIDQ3NDQ0NTFhMzQwNjM4YTYzMDFmZjMwZDc3ZDI0YjU3YTQxYmRm MjAgLXIgZGNlZTIwN2ViYWRhNGI5YjNiYTM1ZTQ9CmI5N2VhMjQwMTg4YjFjNmNiIGxpYi9nYWxh eHkvd2ViYXBwcy9nYWxheHkvYnVpbGRhcHAucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dh bGF4eS9idWlsZGFwcC5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2J1aWxkYXBw LnB5CkBAIC0xMDYsMTMgKzEwNiwxMyBAQAogICAgICAgICBwYWNrX3NjcmlwdHMoKQogICAgICMg Q2xvc2UgYW55IHBvb2xlZCBkYXRhYmFzZSBjb25uZWN0aW9ucyBiZWZvcmUgZm9ya2luZwogICAg IHRyeToKLSAgICAgICAgZ2FsYXh5Lm1vZGVsLm1hcHBpbmcubWV0YWRhdGEuZW5naW5lLmNvbm5l Y3Rpb25fcHJvdmlkZXIuX3Bvb2wuZGlzPQpwb3NlKCkKKyAgICAgICAgZ2FsYXh5Lm1vZGVsLm1h cHBpbmcubWV0YWRhdGEuYmluZC5kaXNwb3NlKCkKICAgICBleGNlcHQ6Ci0gICAgICAgIHBhc3MK KyAgICAgICAgbG9nLmV4Y2VwdGlvbigiVW5hYmxlIHRvIGRpc3Bvc2Ugb2YgcG9vbGVkIGdhbGF4 eSBtb2RlbCBkYXRhYmFzZSBjPQpvbm5lY3Rpb25zLiIpCiAgICAgdHJ5OgotICAgICAgICBnYWxh eHkubW9kZWwudG9vbF9zaGVkX2luc3RhbGwubWFwcGluZy5tZXRhZGF0YS5lbmdpbmUuY29ubmVj dGlvbl89CnByb3ZpZGVyLl9wb29sLmRpc3Bvc2UoKQorICAgICAgICBnYWxheHkubW9kZWwudG9v bF9zaGVkX2luc3RhbGwubWFwcGluZy5tZXRhZGF0YS5iaW5kLmRpc3Bvc2UoKQogICAgIGV4Y2Vw dDoKLSAgICAgICAgcGFzcworICAgICAgICBsb2cuZXhjZXB0aW9uKCJVbmFibGUgdG8gZGlzcG9z ZSBvZiBwb29sZWQgdG9vbHNoZWQgaW5zdGFsbCBtb2RlbCA9CmRhdGFiYXNlIGNvbm5lY3Rpb25z LiIpCj0yMAogICAgIGlmIG5vdCBhcHAuY29uZmlnLmlzX3V3c2dpOgogICAgICAgICBwb3N0Zm9y a19zZXR1cCgpCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9j b21taXRzL2Y4OTFjZjVmNWFhNC8KQ2hhbmdlc2V0OiAgIGY4OTFjZjVmNWFhNApCcmFuY2g6ICAg ICAgcmVsZWFzZV8xNS4wMwpVc2VyOiAgICAgICAgZGFubm9uCkRhdGU6ICAgICAgICAyMDE1LTA0 LTA4IDE4OjQ2OjU1KzAwOjAwClN1bW1hcnk6ICAgICBBbm90aGVyIHBvb2wgZGlzcG9zYWwgZml4 LCBmb3IgcmVwb3J0cy4KQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciBkY2VlMjA3ZWJhZGE0 YjliM2JhMzVlNGI5N2VhMjQwMTg4YjFjNmNiIC1yIGY4OTFjZjVmNWFhNGE5ZGFjZTY0YzRkPQpl ZWMwYmM2NzhhM2FhYjk3MCBsaWIvZ2FsYXh5L3dlYmFwcHMvcmVwb3J0cy9idWlsZGFwcC5weQot LS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvcmVwb3J0cy9idWlsZGFwcC5weQorKysgYi9saWIvZ2Fs YXh5L3dlYmFwcHMvcmVwb3J0cy9idWlsZGFwcC5weQpAQCAtNzAsMTIgKzcwLDEzIEBACiAgICAg ICAgIHdlYmFwcCA9M0Qgd3JhcF9pbl9zdGF0aWMoIHdlYmFwcCwgZ2xvYmFsX2NvbmYsICoqa3dh cmdzICkKICAgICAjIENsb3NlIGFueSBwb29sZWQgZGF0YWJhc2UgY29ubmVjdGlvbnMgYmVmb3Jl IGZvcmtpbmcKICAgICB0cnk6Ci0gICAgICAgIGdhbGF4eS5tb2RlbC5tYXBwaW5nLm1ldGFkYXRh LmVuZ2luZS5jb25uZWN0aW9uX3Byb3ZpZGVyLl9wb29sLmRpcz0KcG9zZSgpCisgICAgICAgIGdh bGF4eS5tb2RlbC5tYXBwaW5nLm1ldGFkYXRhLmJpbmQuZGlzcG9zZSgpCiAgICAgZXhjZXB0Ogot ICAgICAgICBwYXNzCisgICAgICAgIGxvZy5leGNlcHRpb24oIlVuYWJsZSB0byBkaXNwb3NlIG9m IHBvb2xlZCBnYWxheHkgbW9kZWwgZGF0YWJhc2UgYz0Kb25uZWN0aW9ucy4iKQogICAgICMgUmV0 dXJuCiAgICAgcmV0dXJuIHdlYmFwcAo9MjAKKwogZGVmIHdyYXBfaW5fbWlkZGxld2FyZSggYXBw LCBnbG9iYWxfY29uZiwgKipsb2NhbF9jb25mICk6CiAgICAgIiIiQmFzZWQgb24gdGhlIGNvbmZp Z3VyYXRpb24gd3JhcCBgYXBwYCBpbiBhIHNldCBvZiBjb21tb24gYW5kIHVzZWZ1bD0KIG1pZGRs ZXdhcmUuIiIiCiAgICAgIyBNZXJnZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBjb25maWd1cmF0aW9u cwoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy85 NDM5Y2VkMGE1YzEvCkNoYW5nZXNldDogICA5NDM5Y2VkMGE1YzEKQnJhbmNoOiAgICAgIHJlbGVh c2VfMTUuMDMKVXNlcjogICAgICAgIG5hdGVmb28KRGF0ZTogICAgICAgIDIwMTUtMDQtMTAgMjA6 Mjk6MTgrMDA6MDAKU3VtbWFyeTogICAgIEVuYWJsZSB1c2Ugb2YgbmdpbnhfdXBsb2FkX21vZHVs ZSBmb3IgdGhlIGpvYiBmaWxlcyBhcGkuCkFmZmVjdGVkICM6ICA0IGZpbGVzCgpkaWZmIC1yIGY4 OTFjZjVmNWFhNGE5ZGFjZTY0YzRkZWVjMGJjNjc4YTNhYWI5NzAgLXIgOTQzOWNlZDBhNWMxYjFh Y2Q3ZjQ5ODc9CmY1ODIzYmI2YmM4MGVmNTdmIGNvbmZpZy9nYWxheHkuaW5pLnNhbXBsZQotLS0g YS9jb25maWcvZ2FsYXh5LmluaS5zYW1wbGUKKysrIGIvY29uZmlnL2dhbGF4eS5pbmkuc2FtcGxl CkBAIC01ODAsNiArNTgwLDEzIEBACiAjIHJlcXVlc3RzLgogI25naW54X3VwbG9hZF9wYXRoID0z RCBGYWxzZQo9MjAKKyMgR2FsYXh5IGNhbiBhbHNvIHVzZSBuZ2lueF91cGxvYWRfbW9kdWxlIHRv IHJlY2VpdmUgZmlsZXMgc3RhZ2VkIG91dCB1cG9uPQogam9iCisjIGNvbXBsZXRpb24gYnkgcmVt b3RlIGpvYiBydW5uZXJzIChpLmUuIFB1bHNhcikgdGhhdCBpbml0aWF0ZSBzdGFnaW5nCisjIG9w ZXJhdGlvbnMgb24gdGhlIHJlbW90ZSBlbmQuICBTZWUgdGhlIEdhbGF4eSBuZ2lueCBkb2N1bWVu dGF0aW9uIGZvciB0aGUKKyMgY29ycmVzcG9uZGluZyBuZ2lueCBjb25maWd1cmF0aW9uLgorI25n aW54X3VwbG9hZF9qb2JfZmlsZXNfc3RvcmUgPTNEIEZhbHNlCisjbmdpbnhfdXBsb2FkX2pvYl9m aWxlc19wYXRoID0zRCBGYWxzZQorCiAjIEhhdmUgR2FsYXh5IG1hbmFnZSBkeW5hbWljIHByb3h5 IGNvbXBvbmVudCBmb3Igcm91dGluZyByZXF1ZXN0cyB0byBvdGhlcgogIyBzZXJ2aWNlcyBiYXNl ZCBvbiBHYWxheHkncyBzZXNzaW9uIGNvb2tpZS4gIEl0IHdpbGwgYXR0ZW1wdCB0byBkbyB0aGlz IGJ5CiAjIGRlZmF1bHQgdGhvdWdoIHlvdSBkbyBuZWVkIHRvIGluc3RhbGwgbm9kZStucG0gYW5k IGRvIGFuIG5wbSBpbnN0YWxsIGZyb20KCmRpZmYgLXIgZjg5MWNmNWY1YWE0YTlkYWNlNjRjNGRl ZWMwYmM2NzhhM2FhYjk3MCAtciA5NDM5Y2VkMGE1YzFiMWFjZDdmNDk4Nz0KZjU4MjNiYjZiYzgw ZWY1N2YgbGliL2dhbGF4eS9jb25maWcucHkKLS0tIGEvbGliL2dhbGF4eS9jb25maWcucHkKKysr IGIvbGliL2dhbGF4eS9jb25maWcucHkKQEAgLTI5Myw2ICsyOTMsOCBAQAogICAgICAgICBzZWxm Lm5naW54X3hfYXJjaGl2ZV9maWxlc19iYXNlID0zRCBrd2FyZ3MuZ2V0KCAnbmdpbnhfeF9hcmNo aXZlX2Y9CmlsZXNfYmFzZScsIEZhbHNlICkKICAgICAgICAgc2VsZi5uZ2lueF91cGxvYWRfc3Rv cmUgPTNEIGt3YXJncy5nZXQoICduZ2lueF91cGxvYWRfc3RvcmUnLCBGYWxzPQplICkKICAgICAg ICAgc2VsZi5uZ2lueF91cGxvYWRfcGF0aCA9M0Qga3dhcmdzLmdldCggJ25naW54X3VwbG9hZF9w YXRoJywgRmFsc2UgKQorICAgICAgICBzZWxmLm5naW54X3VwbG9hZF9qb2JfZmlsZXNfc3RvcmUg PTNEIGt3YXJncy5nZXQoICduZ2lueF91cGxvYWRfam89CmJfZmlsZXNfc3RvcmUnLCBGYWxzZSAp CisgICAgICAgIHNlbGYubmdpbnhfdXBsb2FkX2pvYl9maWxlc19wYXRoID0zRCBrd2FyZ3MuZ2V0 KCAnbmdpbnhfdXBsb2FkX2pvYj0KX2ZpbGVzX3BhdGgnLCBGYWxzZSApCiAgICAgICAgIGlmIHNl bGYubmdpbnhfdXBsb2FkX3N0b3JlOgogICAgICAgICAgICAgc2VsZi5uZ2lueF91cGxvYWRfc3Rv cmUgPTNEIG9zLnBhdGguYWJzcGF0aCggc2VsZi5uZ2lueF91cGxvYWQ9Cl9zdG9yZSApCiAgICAg ICAgIHNlbGYub2JqZWN0X3N0b3JlID0zRCBrd2FyZ3MuZ2V0KCAnb2JqZWN0X3N0b3JlJywgJ2Rp c2snICkKCmRpZmYgLXIgZjg5MWNmNWY1YWE0YTlkYWNlNjRjNGRlZWMwYmM2NzhhM2FhYjk3MCAt ciA5NDM5Y2VkMGE1YzFiMWFjZDdmNDk4Nz0KZjU4MjNiYjZiYzgwZWY1N2YgbGliL2dhbGF4eS9q b2JzL3J1bm5lcnMvcHVsc2FyLnB5Ci0tLSBhL2xpYi9nYWxheHkvam9icy9ydW5uZXJzL3B1bHNh ci5weQorKysgYi9saWIvZ2FsYXh5L2pvYnMvcnVubmVycy9wdWxzYXIucHkKQEAgLTM0Miw3ICsz NDIsMTIgQEAKPTIwCiAgICAgICAgIGVuY29kZWRfam9iX2lkID0zRCBzZWxmLmFwcC5zZWN1cml0 eS5lbmNvZGVfaWQoam9iX2lkKQogICAgICAgICBqb2Jfa2V5ID0zRCBzZWxmLmFwcC5zZWN1cml0 eS5lbmNvZGVfaWQoIGpvYl9pZCwga2luZD0zRCJqb2JzX2ZpbGU9CnMiICkKLSAgICAgICAgZmls ZXNfZW5kcG9pbnQgPTNEICIlcy9hcGkvam9icy8lcy9maWxlcz9qb2Jfa2V5PTNEJXMiICUgKAor ICAgICAgICBlbmRwb2ludF9iYXNlID0zRCAiJXMvYXBpL2pvYnMvJXM/am9iX2tleT0zRCVzIgor ICAgICAgICBpZiBzZWxmLmFwcC5jb25maWcubmdpbnhfdXBsb2FkX2pvYl9maWxlc19wYXRoOgor ICAgICAgICAgICAgZW5kcG9pbnRfYmFzZSA9M0QgIiVzIiArIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLmFwcC5jb25maWcubmdpbnhfdXBsb2FkX2pvYl9maWxlc19wYXRoICsg XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICI/am9iX2lkPTNEJXMmam9iX2tleT0zRCVz IgorICAgICAgICBmaWxlc19lbmRwb2ludCA9M0QgZW5kcG9pbnRfYmFzZSAlICgKICAgICAgICAg ICAgIHNlbGYuZ2FsYXh5X3VybCwKICAgICAgICAgICAgIGVuY29kZWRfam9iX2lkLAogICAgICAg ICAgICAgam9iX2tleQoKZGlmZiAtciBmODkxY2Y1ZjVhYTRhOWRhY2U2NGM0ZGVlYzBiYzY3OGEz YWFiOTcwIC1yIDk0MzljZWQwYTVjMWIxYWNkN2Y0OTg3PQpmNTgyM2JiNmJjODBlZjU3ZiBsaWIv Z2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9qb2JfZmlsZXMucHkKLS0tIGEvbGliL2dhbGF4eS93 ZWJhcHBzL2dhbGF4eS9hcGkvam9iX2ZpbGVzLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9n YWxheHkvYXBpL2pvYl9maWxlcy5weQpAQCAtODMsNyArODMsMTkgQEAKICAgICAgICAgc2VsZi5f X2NoZWNrX2pvYl9jYW5fd3JpdGVfdG9fcGF0aCggdHJhbnMsIGpvYiwgcGF0aCApCj0yMAogICAg ICAgICAjIElzIHRoaXMgd3JpdGluZyBhbiB1bm5lZWRlZCBmaWxlPyBTaG91bGQgdGhpcyBqdXN0 IGNvcHkgaW4gUHl0aG89Cm4/Ci0gICAgICAgIGlucHV0X2ZpbGUgPTNEIHBheWxvYWQuZ2V0KCAi ZmlsZSIsIHBheWxvYWQuZ2V0KCAiX19maWxlIiwgTm9uZSApID0KKS5maWxlCisgICAgICAgIGlm ICdfX2ZpbGVfcGF0aCcgaW4gcGF5bG9hZDoKKyAgICAgICAgICAgIGZpbGVfcGF0aCA9M0QgcGF5 bG9hZC5nZXQoICdfX2ZpbGVfcGF0aCcgKQorICAgICAgICAgICAgdXBsb2FkX3N0b3JlID0zRCB0 cmFucy5hcHAuY29uZmlnLm5naW54X3VwbG9hZF9qb2JfZmlsZXNfc3RvcmUKKyAgICAgICAgICAg IGFzc2VydCB1cGxvYWRfc3RvcmUsICggIlJlcXVlc3QgYXBwZWFycyB0byBoYXZlIGJlZW4gcHJv Y2Vzc2VkPQogYnkiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgbmdpbnhf dXBsb2FkX21vZHVsZSBidXQgR2FsYXh5IGlzIG5vdCIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIiBjb25maWd1cmVkIHRvIHJlY29nbml6ZSBpdCIgKQorICAgICAgICAgICAg YXNzZXJ0IGZpbGVfcGF0aC5zdGFydHN3aXRoKCB1cGxvYWRfc3RvcmUgKSwgXAorICAgICAgICAg ICAgICAgICAgICAoICJGaWxlbmFtZSBwcm92aWRlZCBieSBuZ2lueCAoJXMpIGlzIG5vdCBpbiBj b3JyZWN0IgorICAgICAgICAgICAgICAgICAgICAgICIgZGlyZWN0b3J5ICglcykiICUgKCBmaWxl X3BhdGgsIHVwbG9hZF9zdG9yZSApICkKKyAgICAgICAgICAgIGlucHV0X2ZpbGUgPTNEIG9wZW4o IGZpbGVfcGF0aCApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpbnB1dF9maWxlID0zRCBw YXlsb2FkLmdldCggImZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYXlsb2FkLmdldCggIl9fZmlsZSIsIE5vbmUgKSApLmZpbGUKICAgICAgICAgdHJ5OgogICAg ICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKCBpbnB1dF9maWxlLm5hbWUsIHBhdGggKQogICAgICAg ICBmaW5hbGx5OgoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwv Y29tbWl0cy8wNjE1NDgwMmEzNzEvCkNoYW5nZXNldDogICAwNjE1NDgwMmEzNzEKQnJhbmNoOiAg ICAgIHJlbGVhc2VfMTUuMDMKVXNlcjogICAgICAgIG5hdGVmb28KRGF0ZTogICAgICAgIDIwMTUt MDQtMTAgMjA6MzA6MzErMDA6MDAKU3VtbWFyeTogICAgIE1vdmUsIHJhdGhlciB0aGFuIGNvcHkg ZmlsZXMgc3RhZ2VkIGJhY2sgdG8gR2FsYXh5IHZpYSB0aGUgam9iPQogZmlsZXMKYXBpLiBNb3Zp bmcgaXMgYSByZW5hbWUgd2hlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgb24gdGhl IHNhbWUKZmlsZXN5c3RlbSwgd2hpY2ggaXMgbmVhcmx5IGluc3RhbnRhbmVvdXMgYW5kIGdyZWF0 bHkgcmVkdWNlcyB0aGUKcG9zc2liaWxpdHkgZm9yIGZhaWx1cmUgZHVlIHRvIG1pZC1jb3B5IHJl c3RhcnRzLgpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDk0MzljZWQwYTVjMWIxYWNkN2Y0 OTg3ZjU4MjNiYjZiYzgwZWY1N2YgLXIgMDYxNTQ4MDJhMzcxYzZmMmFhMGZmMGU9CjEyNWU4OGYy NTQ3YjhmMTA5IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2pvYl9maWxlcy5weQotLS0g YS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9qb2JfZmlsZXMucHkKKysrIGIvbGliL2dh bGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvam9iX2ZpbGVzLnB5CkBAIC05Nyw3ICs5Nyw3IEBACiAg ICAgICAgICAgICBpbnB1dF9maWxlID0zRCBwYXlsb2FkLmdldCggImZpbGUiLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkLmdldCggIl9fZmlsZSIsIE5vbmUg KSApLmZpbGUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKCBpbnB1 dF9maWxlLm5hbWUsIHBhdGggKQorICAgICAgICAgICAgc2h1dGlsLm1vdmUoIGlucHV0X2ZpbGUu bmFtZSwgcGF0aCApCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBpbnB1dF9maWxlLmNs b3NlKCkKICAgICAgICAgcmV0dXJuIHsibWVzc2FnZSI6ICJvayJ9CgoKaHR0cHM6Ly9iaXRidWNr ZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzRiZWM2ZjAxMGE4OS8KQ2hhbmdl c2V0OiAgIDRiZWM2ZjAxMGE4OQpCcmFuY2g6ICAgICAgcmVsZWFzZV8xNS4wMwpVc2VyOiAgICAg ICAgZGFuCkRhdGU6ICAgICAgICAyMDE1LTAzLTE3IDE4OjA4OjA2KzAwOjAwClN1bW1hcnk6ICAg ICBTb21lIGJhc2ljIENhY2hpbmcgZm9yIHRoZSBHZW5vbWVTcGFjZSBFeHBvcnQgVG9vbCdzIGxp c3Qgb2YgYT0KdmFpbGFibGUgdGFyZ2V0IGRpcmVjdG9yaWVzLCBzbyB3ZSBkb24ndCBoYXZlIHRv IHJlbG9hZCBhbmQgZG93bmxvYWQgZXZlcnl0PQpoaW5nIGV2ZXJ5IHRpbWUsIGVzcGVjaWFsbHkg bm93IHRoYXQgd2UgYXJlIGNhbGxpbmcgdGhlIHBhcmFtZXRlcidzIGdldCBvcHQ9CmlvbnMgbWV0 aG9kIDUgdGltZXMgKDYgb24gcmVsb2FkKSB3aGVuIGEgdXNlciBsb2FkcyB0aGUgdG9vbCBpbnRl cmZhY2UuIEZvcj0KIG5vdywgd2UnbGwgdXNlIDMwIHNlY29uZHMgYXMgdGhlIGNhY2hlIHZhbGlk IHRpbWUgbGVuZ3RoLgoKKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZmViMGEyNmY4ZDI0YzZl YjAwOGMwMmYwMDIzMDc3N2Q5NzhhNjJjYikKQWZmZWN0ZWQgIzogIDEgZmlsZQoKZGlmZiAtciAw NjE1NDgwMmEzNzFjNmYyYWEwZmYwZTEyNWU4OGYyNTQ3YjhmMTA5IC1yIDRiZWM2ZjAxMGE4OWFi MGFjYzNkNjcyPQphYjBjZTIwNGUxZDFkNmViMiB0b29scy9nZW5vbWVzcGFjZS9nZW5vbWVzcGFj ZV9leHBvcnRlci5weQotLS0gYS90b29scy9nZW5vbWVzcGFjZS9nZW5vbWVzcGFjZV9leHBvcnRl ci5weQorKysgYi90b29scy9nZW5vbWVzcGFjZS9nZW5vbWVzcGFjZV9leHBvcnRlci5weQpAQCAt NCw2ICs0LDcgQEAKIGltcG9ydCBiaW5hc2NpaQogaW1wb3J0IGNnaQogaW1wb3J0IGNvb2tpZWxp YgoraW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IGpzb24KIGltcG9ydCBs b2dnaW5nCkBAIC0yMCw2ICsyMSwxMyBAQAo9MjAKIENIVU5LX1NJWkUgPTNEIDIqKjIwICMxbWIK PTIwCisjIFNvbWUgYmFzaWMgQ2FjaGluZywgc28gd2UgZG9uJ3QgaGF2ZSB0byByZWxvYWQgYW5k IGRvd25sb2FkIGV2ZXJ5dGhpbmcgZT0KdmVyeSB0aW1lLAorIyBlc3BlY2lhbGx5IG5vdyB0aGF0 IHdlIGFyZSBjYWxsaW5nIHRoZSBwYXJhbWV0ZXIncyBnZXQgb3B0aW9ucyBtZXRob2QgNSA9CnRp bWVzCisjICg2IG9uIHJlbG9hZCkgd2hlbiBhIHVzZXIgbG9hZHMgdGhlIHRvb2wgaW50ZXJmYWNl CisjIEZvciBub3csIHdlJ2xsIHVzZSAzMCBzZWNvbmRzIGFzIHRoZSBjYWNoZSB2YWxpZCB0aW1l CitDQUNIRV9USU1FID0zRCBkYXRldGltZS50aW1lZGVsdGEoIHNlY29uZHM9M0QzMCApCitHRU5P TUVTUEFDRV9ESVJFQ1RPUklFU19CWV9VU0VSID0zRCB7fQorCj0yMAogZGVmIGNodW5rX3dyaXRl KCBzb3VyY2Vfc3RyZWFtLCB0YXJnZXRfc3RyZWFtLCBzb3VyY2VfbWV0aG9kID0zRCAicmVhZCIs IHQ9CmFyZ2V0X21ldGhvZD0zRCJ3cml0ZSIgKToKICAgICBzb3VyY2VfbWV0aG9kID0zRCBnZXRh dHRyKCBzb3VyY2Vfc3RyZWFtLCBzb3VyY2VfbWV0aG9kICkKQEAgLTE1MCwxNCArMTU4LDMyIEBA CiAgICAgICAgIHVzZXJuYW1lID0zRCB0cmFucy51c2VyLnByZWZlcmVuY2VzLmdldCggJ2dlbm9t ZXNwYWNlX3VzZXJuYW1lJywgTj0Kb25lICkKICAgICAgICAgdG9rZW4gPTNEIHRyYW5zLnVzZXIu cHJlZmVyZW5jZXMuZ2V0KCAnZ2Vub21lc3BhY2VfdG9rZW4nLCBOb25lICkKICAgICAgICAgaWYg Tm9uZSBub3QgaW4gKCB1c2VybmFtZSwgdG9rZW4gKToKLSAgICAgICAgICAgIHVybF9vcGVuZXIg PTNEIGdldF9jb29raWVfb3BlbmVyKCB1c2VybmFtZSwgdG9rZW4gKQotICAgICAgICAgICAgZ2Vu b21lc3BhY2Vfc2l0ZV9kaWN0ID0zRCBnZXRfZ2Vub21lc3BhY2Vfc2l0ZV91cmxzKClbIGdlbm9t ZXM9CnBhY2Vfc2l0ZSBdCi0gICAgICAgICAgICBkbV91cmwgPTNEIGdlbm9tZXNwYWNlX3NpdGVf ZGljdFsnZG1TZXJ2ZXInXQotICAgICAgICAgICAgI2dldCBleHBvcnQgcm9vdCBkaXJlY3RvcnkK LSAgICAgICAgICAgICNkaXJlY3RvcnlfZGljdCA9M0QgZ2V0X2RlZmF1bHRfZGlyZWN0b3J5KCB1 cmxfb3BlbmVyLCBkbV91cmwgPQopLmdldCggJ2RpcmVjdG9yeScsIE5vbmUgKSAjVGhpcyBkaXJl Y3RvcnkgY29udGFpbnMgc2hhcmVzIGFuZCBvdGhlciBpdGVtcyA9Cm91dHNpZGUgb2YgdGhlIHVz ZXJzIGhvbWUKLSAgICAgICAgICAgIGRpcmVjdG9yeV9kaWN0ID0zRCBnZXRfcGVyc29uYWxfZGly ZWN0b3J5KCB1cmxfb3BlbmVyLCBkbV91cmwgPQopLmdldCggJ2RpcmVjdG9yeScsIE5vbmUgKSAj TGltaXQgZXhwb3J0IGxpc3QgdG8gb25seSB1c2VyJ3MgaG9tZSBkaXIKLSAgICAgICAgICAgIGlm IGRpcmVjdG9yeV9kaWN0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHJlY3Vyc2VfZGly ZWN0b3J5X2RpY3QoIHVybF9vcGVuZXIsIHJ2YWwsIGRpcmVjdG9yeV9kaWN0Lmc9CmV0KCAndXJs JyApICkKKyAgICAgICAgICAgICMgTkI6IGl0IGlzIHBvc3NpYmxlLCBidXQgdW5saWtlbHkgZm9y IGEgdXNlciB0byBzd2FwIEdlbm9tZVNwPQphY2UgYWNjb3VudHMgYXJvdW5kCisgICAgICAgICAg ICAjIGluIHRoZSBtaWRkbGUgb2YgaW50ZXJhY3Rpbmcgd2l0aCB0b29scywgc28gd2UnbGwgaGF2 ZSBzZXZlcj0KYWwgbGF5ZXJzIG9mIGNhY2hpbmcgYnkgaWRzL3ZhbHVlcworICAgICAgICAgICAg aWYgdHJhbnMudXNlciBpbiBHRU5PTUVTUEFDRV9ESVJFQ1RPUklFU19CWV9VU0VSOgorICAgICAg ICAgICAgICAgIGlmIHVzZXJuYW1lIGluIEdFTk9NRVNQQUNFX0RJUkVDVE9SSUVTX0JZX1VTRVJb IHRyYW5zLnVzZXI9CiBdOgorICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbiBpbiBHRU5PTUVT UEFDRV9ESVJFQ1RPUklFU19CWV9VU0VSWyB0cmFucy51c2U9CnIgXVsgdXNlcm5hbWUgXToKKyAg ICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX2RpY3QgPTNEIEdFTk9NRVNQQUNFX0RJUkVDVE9S SUVTX0JZX1VTRVJbIHRyPQphbnMudXNlciBdWyB1c2VybmFtZSBdWyB0b2tlbiBdCisgICAgICAg ICAgICAgICAgICAgICAgICBpZiBkYXRldGltZS5kYXRldGltZS5ub3coKSAtIGNhY2hlX2RpY3Qu Z2V0KCAndGltZT0KX2xvYWRlZCcgKSA+IENBQ0hFX1RJTUU6CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBjYWNoZSB0b28gb2xkLCBuZWVkIHRvIHJlbG9hZCwgd2UnbGwganVzdCBraT0K bGwgdGhlIHdob2xlIHRyYW5zLnVzZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWwg R0VOT01FU1BBQ0VfRElSRUNUT1JJRVNfQllfVVNFUlsgdHJhbnMudXNlPQpyIF0KKyAgICAgICAg ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnZhbCA9 M0QgY2FjaGVfZGljdC5nZXQoICdydmFsJyApCisgICAgICAgICAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgICAgICAgICBkZWwgR0VOT01FU1BBQ0VfRElSRUNUT1JJRVNfQllfVVNF UlsgdHJhbnMudXNlciBdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg ICAgZGVsIEdFTk9NRVNQQUNFX0RJUkVDVE9SSUVTX0JZX1VTRVJbIHRyYW5zLnVzZXIgXQorICAg ICAgICAgICAgaWYgbm90IHJ2YWw6CisgICAgICAgICAgICAgICAgdXJsX29wZW5lciA9M0QgZ2V0 X2Nvb2tpZV9vcGVuZXIoIHVzZXJuYW1lLCB0b2tlbiApCisgICAgICAgICAgICAgICAgZ2Vub21l c3BhY2Vfc2l0ZV9kaWN0ID0zRCBnZXRfZ2Vub21lc3BhY2Vfc2l0ZV91cmxzKClbIGdlbj0Kb21l c3BhY2Vfc2l0ZSBdCisgICAgICAgICAgICAgICAgZG1fdXJsID0zRCBnZW5vbWVzcGFjZV9zaXRl X2RpY3RbJ2RtU2VydmVyJ10KKyAgICAgICAgICAgICAgICAjZ2V0IGV4cG9ydCByb290IGRpcmVj dG9yeQorICAgICAgICAgICAgICAgICNkaXJlY3RvcnlfZGljdCA9M0QgZ2V0X2RlZmF1bHRfZGly ZWN0b3J5KCB1cmxfb3BlbmVyLCBkbV89CnVybCApLmdldCggJ2RpcmVjdG9yeScsIE5vbmUgKSAj VGhpcyBkaXJlY3RvcnkgY29udGFpbnMgc2hhcmVzIGFuZCBvdGhlciBpdD0KZW1zIG91dHNpZGUg b2YgdGhlIHVzZXJzIGhvbWUKKyAgICAgICAgICAgICAgICBkaXJlY3RvcnlfZGljdCA9M0QgZ2V0 X3BlcnNvbmFsX2RpcmVjdG9yeSggdXJsX29wZW5lciwgZG1fPQp1cmwgKS5nZXQoICdkaXJlY3Rv cnknLCBOb25lICkgI0xpbWl0IGV4cG9ydCBsaXN0IHRvIG9ubHkgdXNlcidzIGhvbWUgZGlyCisg ICAgICAgICAgICAgICAgaWYgZGlyZWN0b3J5X2RpY3QgaXMgbm90IE5vbmU6CisgICAgICAgICAg ICAgICAgICAgIHJlY3Vyc2VfZGlyZWN0b3J5X2RpY3QoIHVybF9vcGVuZXIsIHJ2YWwsIGRpcmVj dG9yeV9kaT0KY3QuZ2V0KCAndXJsJyApICkKKyAgICAgICAgICAgICAgICAjIFNhdmUgdGhlIGNh Y2hlCisgICAgICAgICAgICAgICAgR0VOT01FU1BBQ0VfRElSRUNUT1JJRVNfQllfVVNFUlsgdHJh bnMudXNlciBdID0zRCB7IHVzZXJuYT0KbWU6IHsgdG9rZW46IHsgJ3RpbWVfbG9hZGVkJzogZGF0 ZXRpbWUuZGF0ZXRpbWUubm93KCksICdydmFsJzogcnZhbCB9IH0gIH0KICAgICBpZiBub3QgcnZh bDoKICAgICAgICAgaWYgbm90IGJhc2VfdXJsOgogICAgICAgICAgICAgYmFzZV91cmwgPTNEICcu LicKQEAgLTE4MCw3ICsyMDYsNyBAQAogICAgICNnZXQgdXBsb2FkIHVybAogICAgIHVwbG9hZF91 cmwgPTNEICJ1cGxvYWR1cmwiCiAgICAgY29udGVudF9sZW5ndGggPTNEIG9zLnBhdGguZ2V0c2l6 ZSggc291cmNlX2ZpbGVuYW1lICkKLSAgICBpbnB1dF9maWxlID0zRCBvcGVuKCBzb3VyY2VfZmls ZW5hbWUgKQorICAgIGlucHV0X2ZpbGUgPTNEIG9wZW4oIHNvdXJjZV9maWxlbmFtZSwgJ3JiJyAp CiAgICAgY29udGVudF9tZDUgPTNEIGhhc2hsaWIubWQ1KCkKICAgICBjaHVua193cml0ZSggaW5w dXRfZmlsZSwgY29udGVudF9tZDUsIHRhcmdldF9tZXRob2Q9M0QidXBkYXRlIiApCiAgICAgaW5w dXRfZmlsZS5zZWVrKCAwICkgI2JhY2sgdG8gc3RhcnQsIGZvciB1cGxvYWRpbmcKCgpodHRwczov L2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvNTdiYmJlMTQ2M2Y2 LwpDaGFuZ2VzZXQ6ICAgNTdiYmJlMTQ2M2Y2CkJyYW5jaDogICAgICByZWxlYXNlXzE1LjAzClVz ZXI6ICAgICAgICBkYW4KRGF0ZTogICAgICAgIDIwMTUtMDQtMDIgMTU6MTY6MDIrMDA6MDAKU3Vt bWFyeTogICAgIEVuYWJsZSBtdWx0aS1wYXJ0IHVwbG9hZCBmb3IgdGhlIEdlbm9tZVNwYWNlIGV4 cG9ydCB0b29sLiBGaWxlPQpzIGdyZWF0ZXIgdGhhbiA1Z2IgY2FuIG9uY2UgYWdhaW4gYmUgc2Vu ZCB0byBHZW5vbWVTcGFjZSBmcm9tIEdhbGF4eS4KCihjaGVycnkgcGlja2VkIGZyb20gY29tbWl0 IDEyNmFlMDczYWZkMzlhODNkYjkwYjNmODAwMmY3MTRiZTlkZmRlYzIpCkFmZmVjdGVkICM6ICAy IGZpbGVzCgpkaWZmIC1yIDRiZWM2ZjAxMGE4OWFiMGFjYzNkNjcyYWIwY2UyMDRlMWQxZDZlYjIg LXIgNTdiYmJlMTQ2M2Y2MTZmOTg3OTNhODc9CmQ2YjNhYzBkNDM1NjgyNWY0IHRvb2xzL2dlbm9t ZXNwYWNlL2dlbm9tZXNwYWNlX2V4cG9ydGVyLnB5Ci0tLSBhL3Rvb2xzL2dlbm9tZXNwYWNlL2dl bm9tZXNwYWNlX2V4cG9ydGVyLnB5CisrKyBiL3Rvb2xzL2dlbm9tZXNwYWNlL2dlbm9tZXNwYWNl X2V4cG9ydGVyLnB5CkBAIC0xLDMgKzEsNCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAjRGFu IEJsYW5rZW5iZXJnCj0yMAogaW1wb3J0IGJhc2U2NApAQCAtMTAsMTcgKzExLDM3IEBACiBpbXBv cnQgbG9nZ2luZwogaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKK2ltcG9ydCB0ZW1wZmlsZQog aW1wb3J0IHVybGxpYgogaW1wb3J0IHVybGxpYjIKIGZyb20gdXJscGFyc2UgaW1wb3J0IHVybGpv aW4KPTIwCiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCAidG9vbHMuZ2Vub21lc3BhY2UuZ2Vu b21lc3BhY2VfZXhwb3J0ZXIiICkjKCBfXz0KbmFtZV9fICkKPTIwCit0cnk6CisgICAgZnJvbSBn YWxheHkgaW1wb3J0IGVnZ3MKKyAgICBlZ2dzLnJlcXVpcmUoJ2JvdG8nKQorZXhjZXB0IEltcG9y dEVycm9yOgorICAgIHBhc3MKKwordHJ5OgorICAgIGltcG9ydCBib3RvCisgICAgZnJvbSBib3Rv LnMzLmNvbm5lY3Rpb24gaW1wb3J0IFMzQ29ubmVjdGlvbgorZXhjZXB0IEltcG9ydEVycm9yOgor ICAgIGJvdG8gPTNEIE5vbmUKKwogR0VOT01FU1BBQ0VfQVBJX1ZFUlNJT05fU1RSSU5HID0zRCAi djEuMCIKIEdFTk9NRVNQQUNFX1NFUlZFUl9VUkxfUFJPUEVSVElFUyA9M0QgImh0dHBzOi8vZG0u Z2Vub21lc3BhY2Uub3JnL2NvbmZpZy8lPQpzL3NlcnZlcnVybC5wcm9wZXJ0aWVzIiAlICggR0VO T01FU1BBQ0VfQVBJX1ZFUlNJT05fU1RSSU5HICkKPTIwCiBDSFVOS19TSVpFID0zRCAyKioyMCAj MW1iCj0yMAorIyBUT0RPOiBUQVJHRVRfU1BMSVRfU0laRSBhbmQgVEFSR0VUX1NJTVBMRV9QVVRf VVBMT0FEX1NJWkUgYXJlIGFyYml0cmFyaWw9CnkgZGVmaW5lZAorIyB3ZSBzaG91bGQgcHJvZ3Jh bW1hdGljYWxseSBkZXRlcm1pbmUgdGhlc2UsIGJhc2VkIHVwb24gdGhlIGN1cnJlbnQgZW52aXI9 Cm9ubWVudD0yMAorVEFSR0VUX1NQTElUX1NJWkUgPTNEIDI1MCAqIDEwMjQgKiAxMDI0ICMgMjUw IG1iCitNSU5fTVVMVElQQVJUX1VQTE9BRF9TSVpFID0zRCA1ICogMTAyNCAqIDEwMjQgIyA1bWIK K01BWF9TSU1QTEVfUFVUX1VQTE9BRF9TSVpFID0zRCA1ICogMTAyNCAqIDEwMjQgKiAxMDI0ICMg NWdiCitUQVJHRVRfU0lNUExFX1BVVF9VUExPQURfU0laRSA9M0QgTUFYX1NJTVBMRV9QVVRfVVBM T0FEX1NJWkUgLyAyCisKICMgU29tZSBiYXNpYyBDYWNoaW5nLCBzbyB3ZSBkb24ndCBoYXZlIHRv IHJlbG9hZCBhbmQgZG93bmxvYWQgZXZlcnl0aGluZyBlPQp2ZXJ5IHRpbWUsCiAjIGVzcGVjaWFs bHkgbm93IHRoYXQgd2UgYXJlIGNhbGxpbmcgdGhlIHBhcmFtZXRlcidzIGdldCBvcHRpb25zIG1l dGhvZCA1ID0KdGltZXMKICMgKDYgb24gcmVsb2FkKSB3aGVuIGEgdXNlciBsb2FkcyB0aGUgdG9v bCBpbnRlcmZhY2UKQEAgLTIwMywyOCArMjI0LDY5IEBACiAgICAgICAgIGRpcmVjdG9yeV9kaWN0 ID0zRCBnZXRfcGVyc29uYWxfZGlyZWN0b3J5KCB1cmxfb3BlbmVyLCBkbV91cmwgKVsnZD0KaXJl Y3RvcnknXSAjdGhpcyBpcyB0aGUgYmFzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGdhbGF4eSBl eHBvcnQgZGlyZWN0b3JpPQplcwogICAgICN3aGF0IGRpcmVjdG9yeSB0byBzdHVmZiB0aGlzIGlu CiAgICAgdGFyZ2V0X2RpcmVjdG9yeV9kaWN0ID0zRCBjcmVhdGVfZGlyZWN0b3J5KCB1cmxfb3Bl bmVyLCBkaXJlY3RvcnlfZGljdD0KLCB0YXJnZXRfZGlyZWN0b3J5LCBkbV91cmwgKQotICAgICNn ZXQgdXBsb2FkIHVybAotICAgIHVwbG9hZF91cmwgPTNEICJ1cGxvYWR1cmwiCiAgICAgY29udGVu dF9sZW5ndGggPTNEIG9zLnBhdGguZ2V0c2l6ZSggc291cmNlX2ZpbGVuYW1lICkKICAgICBpbnB1 dF9maWxlID0zRCBvcGVuKCBzb3VyY2VfZmlsZW5hbWUsICdyYicgKQotICAgIGNvbnRlbnRfbWQ1 ID0zRCBoYXNobGliLm1kNSgpCi0gICAgY2h1bmtfd3JpdGUoIGlucHV0X2ZpbGUsIGNvbnRlbnRf bWQ1LCB0YXJnZXRfbWV0aG9kPTNEInVwZGF0ZSIgKQotICAgIGlucHV0X2ZpbGUuc2VlayggMCAp ICNiYWNrIHRvIHN0YXJ0LCBmb3IgdXBsb2FkaW5nCi0KLSAgICB1cGxvYWRfcGFyYW1zID0zRCB7 ICdDb250ZW50LUxlbmd0aCc6IGNvbnRlbnRfbGVuZ3RoLCAnQ29udGVudC1NRDUnOiBiPQphc2U2 NC5zdGFuZGFyZF9iNjRlbmNvZGUoIGNvbnRlbnRfbWQ1LmRpZ2VzdCgpICksICdDb250ZW50LVR5 cGUnOiBjb250ZW50X3Q9CnlwZSB9Ci0gICAgdXBsb2FkX3VybCA9M0QgIiVzLyVzLyVzJXMvJXM/ JXMiICUgKCBkbV91cmwsIEdFTk9NRVNQQUNFX0FQSV9WRVJTSU9OXz0KU1RSSU5HLCB1cGxvYWRf dXJsLCB0YXJnZXRfZGlyZWN0b3J5X2RpY3RbJ3BhdGgnXSwgdXJsbGliLnF1b3RlKCB0YXJnZXRf ZmlsPQplbmFtZSwgc2FmZT0zRCcnICksIHVybGxpYi51cmxlbmNvZGUoIHVwbG9hZF9wYXJhbXMg KSApCi0gICAgbmV3X2ZpbGVfcmVxdWVzdCA9M0QgdXJsbGliMi5SZXF1ZXN0KCB1cGxvYWRfdXJs ICkjLCBoZWFkZXJzID0zRCB7ICdDbz0KbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJywg J0FjY2VwdCc6ICdhcHBsaWNhdGlvbi90ZXh0JyB9ICkgI2FwcGFyZW50PQpseSBodHRwOi8vd3d3 Lmdlbm9tZXNwYWNlLm9yZy90ZWFtL3NwZWNzL3VwZGF0ZWQtZG0tcmVzdC1hcGk6IkV2ZXJ5IEhU VFAgcmU9CnF1ZXN0IHRvIHRoZSBEYXRhIE1hbmFnZXIgc2hvdWxkIGluY2x1ZGUgdGhlIEFjY2Vw dCBoZWFkZXIgd2l0aCBhIHByZWZlcmVuYz0KZSBmb3IgdGhlIG1lZGlhIHR5cGVzIGFwcGxpY2F0 aW9uL2pzb24gYW5kIGFwcGxpY2F0aW9uL3RleHQuIiBpcyBub3QgY29ycmVjPQp0PTIwCi0gICAg bmV3X2ZpbGVfcmVxdWVzdC5nZXRfbWV0aG9kID0zRCBsYW1iZGE6ICdHRVQnCi0gICAgI2dldCB1 cmwgdG8gdXBsb2FkIHRvCi0gICAgdGFyZ2V0X3VwbG9hZF91cmwgPTNEIHVybF9vcGVuZXIub3Bl biggbmV3X2ZpbGVfcmVxdWVzdCApLnJlYWQoKQotICAgICN1cGxvYWQgZmlsZSB0byBkZXRlcm1p bmVkIHVybAotICAgIHVwbG9hZF9oZWFkZXJzID0zRCBkaWN0KCB1cGxvYWRfcGFyYW1zICkKLSAg ICAjdXBsb2FkX2hlYWRlcnNbICd4LWFtei1tZXRhLW1kNS1oYXNoJyBdID0zRCBjb250ZW50X21k NS5oZXhkaWdlc3QoKQotICAgIHVwbG9hZF9oZWFkZXJzWyAnQWNjZXB0JyBdID0zRCAnYXBwbGlj YXRpb24vanNvbicKLSAgICB1cGxvYWRfZmlsZV9yZXF1ZXN0ID0zRCB1cmxsaWIyLlJlcXVlc3Qo IHRhcmdldF91cGxvYWRfdXJsLCBoZWFkZXJzID0KPTNEIHVwbG9hZF9oZWFkZXJzLCBkYXRhID0z RCBpbnB1dF9maWxlICkKLSAgICB1cGxvYWRfZmlsZV9yZXF1ZXN0LmdldF9tZXRob2QgPTNEIGxh bWJkYTogJ1BVVCcKLSAgICB1cGxvYWRfcmVzdWx0ID0zRCB1cmxsaWIyLnVybG9wZW4oIHVwbG9h ZF9maWxlX3JlcXVlc3QgKS5yZWFkKCkKKyAgICBpZiBjb250ZW50X2xlbmd0aCA+IFRBUkdFVF9T SU1QTEVfUFVUX1VQTE9BRF9TSVpFOgorICAgICAgICAjIERldGVybWluZSBzaXplcyBvZiBlYWNo IHBhcnQuCisgICAgICAgIHNwbGl0X2NvdW50ID0zRCBjb250ZW50X2xlbmd0aCAvIFRBUkdFVF9T UExJVF9TSVpFCisgICAgICAgIGxhc3Rfc2l6ZSA9M0QgY29udGVudF9sZW5ndGggLSAoIHNwbGl0 X2NvdW50ICogVEFSR0VUX1NQTElUX1NJWkUgKQorICAgICAgICBzaXplcyA9M0QgWyBUQVJHRVRf U1BMSVRfU0laRSBdICogc3BsaXRfY291bnQKKyAgICAgICAgaWYgbGFzdF9zaXplOgorICAgICAg ICAgICAgaWYgbGFzdF9zaXplIDwgTUlOX01VTFRJUEFSVF9VUExPQURfU0laRToKKyAgICAgICAg ICAgICAgICBpZiBzaXplczoKKyAgICAgICAgICAgICAgICAgICAgc2l6ZXNbLTFdID0zRCBzaXpl c1stMV0gKyBsYXN0X3NpemUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg ICAgICBzaXplcyA9M0QgWyBsYXN0X3NpemUgXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg ICAgICAgICBzaXplcy5hcHBlbmQoIGxhc3Rfc2l6ZSApCisgICAgICAgIHByaW50ICJQZXJmb3Jt aW5nIG11bHRpLXBhcnQgdXBsb2FkIGluICVpIHBhcnRzLiIgJSAoIGxlbiggc2l6ZXMgKT0KICkK KyAgICAgICAgI2dldCB1cGxvYWQgdXJsCisgICAgICAgIHVwbG9hZF91cmwgPTNEICJ1cGxvYWRp bmZvIgorICAgICAgICB1cGxvYWRfdXJsID0zRCAiJXMvJXMvJXMlcy8lcyIgJSAoIGRtX3VybCwg R0VOT01FU1BBQ0VfQVBJX1ZFUlNJT049Cl9TVFJJTkcsIHVwbG9hZF91cmwsIHRhcmdldF9kaXJl Y3RvcnlfZGljdFsncGF0aCddLCB1cmxsaWIucXVvdGUoIHRhcmdldF9maT0KbGVuYW1lLCBzYWZl PTNEJycgKSApCisgICAgICAgIHVwbG9hZF9yZXF1ZXN0ID0zRCB1cmxsaWIyLlJlcXVlc3QoIHVw bG9hZF91cmwsIGhlYWRlcnMgPTNEIHsgJ0Nvbj0KdGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pz b24nLCAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nIH0gKQorICAgICAgICB1cGxvYWRfcmVx dWVzdC5nZXRfbWV0aG9kID0zRCBsYW1iZGE6ICdHRVQnCisgICAgICAgIHVwbG9hZF9pbmZvID0z RCBqc29uLmxvYWRzKCB1cmxfb3BlbmVyLm9wZW4oIHVwbG9hZF9yZXF1ZXN0ICkucmVhZD0KKCkg KQorICAgICAgICBjb25uID0zRCBTM0Nvbm5lY3Rpb24oIGF3c19hY2Nlc3Nfa2V5X2lkPTNEdXBs b2FkX2luZm9bJ2FtYXpvbkNyZWQ9CmVudGlhbHMnXVsnYWNjZXNzS2V5J10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd3Nfc2VjcmV0X2FjY2Vzc19r ZXk9M0R1cD0KbG9hZF9pbmZvWydhbWF6b25DcmVkZW50aWFscyddWydzZWNyZXRLZXknXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3VyaXR5X3Rv a2VuPTNEdXBsb2FkX2luPQpmb1snYW1hem9uQ3JlZGVudGlhbHMnXVsnc2Vzc2lvblRva2VuJ10g KQorICAgICAgICAjIENhbm5vdCB1c2UgY29ubi5nZXRfYnVja2V0IGR1ZSB0byBwZXJtaXNzaW9u cywgbWFudWFsbHkgY3JlYXRlIGI9CnVja2V0IG9iamVjdAorICAgICAgICBidWNrZXQgPTNEIGJv dG8uczMuYnVja2V0LkJ1Y2tldCggY29ubmVjdGlvbj0zRGNvbm4sIG5hbWU9M0R1cGxvYWQ9Cl9p bmZvWydzM0J1Y2tldE5hbWUnXSApCisgICAgICAgIG1wID0zRCBidWNrZXQuaW5pdGlhdGVfbXVs dGlwYXJ0X3VwbG9hZCggdXBsb2FkX2luZm9bJ3MzT2JqZWN0S2V5Jz0KXSApCisgICAgICAgIGZv ciBpLHBhcnRfc2l6ZSBpbiBlbnVtZXJhdGUoIHNpemVzLCBzdGFydD0zRDEgKToKKyAgICAgICAg ICAgIGZoID0zRCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCAnd2IrJyApCisgICAgICAgICAgICB3 aGlsZSBwYXJ0X3NpemU6CisgICAgICAgICAgICAgICAgaWYgQ0hVTktfU0laRSA+IHBhcnRfc2l6 ZToKKyAgICAgICAgICAgICAgICAgICAgcmVhZF9zaXplID0zRCBwYXJ0X3NpemUKKyAgICAgICAg ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZWFkX3NpemUgPTNEIENIVU5LX1NJ WkUKKyAgICAgICAgICAgICAgICBjaHVuayA9M0QgaW5wdXRfZmlsZS5yZWFkKCByZWFkX3NpemUg KQorICAgICAgICAgICAgICAgIGZoLndyaXRlKCBjaHVuayApCisgICAgICAgICAgICAgICAgcGFy dF9zaXplID0zRCBwYXJ0X3NpemUgLSByZWFkX3NpemUKKyAgICAgICAgICAgIGZoLmZsdXNoKCkK KyAgICAgICAgICAgIGZoLnNlZWsoMCkKKyAgICAgICAgICAgIG1wLnVwbG9hZF9wYXJ0X2Zyb21f ZmlsZSggZmgsIGkgKQorICAgICAgICAgICAgZmguY2xvc2UoKQorICAgICAgICB1cGxvYWRfcmVz dWx0ID0zRCBtcC5jb21wbGV0ZV91cGxvYWQoKQorICAgIGVsc2U6CisgICAgICAgIHByaW50ICdQ ZXJmb3JtaW5nIHNpbXBsZSBwdXQgdXBsb2FkLicKKyAgICAgICAgdXBsb2FkX3VybCA9M0QgInVw bG9hZHVybCIKKyAgICAgICAgY29udGVudF9tZDUgPTNEIGhhc2hsaWIubWQ1KCkKKyAgICAgICAg Y2h1bmtfd3JpdGUoIGlucHV0X2ZpbGUsIGNvbnRlbnRfbWQ1LCB0YXJnZXRfbWV0aG9kPTNEInVw ZGF0ZSIgKQorICAgICAgICBpbnB1dF9maWxlLnNlZWsoIDAgKSAjYmFjayB0byBzdGFydCwgZm9y IHVwbG9hZGluZwogICAgPTIwCisgICAgICAgIHVwbG9hZF9wYXJhbXMgPTNEIHsgJ0NvbnRlbnQt TGVuZ3RoJzogY29udGVudF9sZW5ndGgsICdDb250ZW50LU1ENT0KJzogYmFzZTY0LnN0YW5kYXJk X2I2NGVuY29kZSggY29udGVudF9tZDUuZGlnZXN0KCkgKSwgJ0NvbnRlbnQtVHlwZSc6IGNvbnRl PQpudF90eXBlIH0KKyAgICAgICAgdXBsb2FkX3VybCA9M0QgIiVzLyVzLyVzJXMvJXM/JXMiICUg KCBkbV91cmwsIEdFTk9NRVNQQUNFX0FQSV9WRVJTPQpJT05fU1RSSU5HLCB1cGxvYWRfdXJsLCB0 YXJnZXRfZGlyZWN0b3J5X2RpY3RbJ3BhdGgnXSwgdXJsbGliLnF1b3RlKCB0YXJnZXQ9Cl9maWxl bmFtZSwgc2FmZT0zRCcnICksIHVybGxpYi51cmxlbmNvZGUoIHVwbG9hZF9wYXJhbXMgKSApCisg ICAgICAgIG5ld19maWxlX3JlcXVlc3QgPTNEIHVybGxpYjIuUmVxdWVzdCggdXBsb2FkX3VybCAp IywgaGVhZGVycyA9M0Qgez0KICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsICdB Y2NlcHQnOiAnYXBwbGljYXRpb24vdGV4dCcgfSApICNhcHBhPQpyZW50bHkgaHR0cDovL3d3dy5n ZW5vbWVzcGFjZS5vcmcvdGVhbS9zcGVjcy91cGRhdGVkLWRtLXJlc3QtYXBpOiJFdmVyeSBIVFQ9 ClAgcmVxdWVzdCB0byB0aGUgRGF0YSBNYW5hZ2VyIHNob3VsZCBpbmNsdWRlIHRoZSBBY2NlcHQg aGVhZGVyIHdpdGggYSBwcmVmZT0KcmVuY2UgZm9yIHRoZSBtZWRpYSB0eXBlcyBhcHBsaWNhdGlv bi9qc29uIGFuZCBhcHBsaWNhdGlvbi90ZXh0LiIgaXMgbm90IGNvPQpycmVjdD0yMAorICAgICAg ICBuZXdfZmlsZV9yZXF1ZXN0LmdldF9tZXRob2QgPTNEIGxhbWJkYTogJ0dFVCcKKyAgICAgICAg I2dldCB1cmwgdG8gdXBsb2FkIHRvCisgICAgICAgIHRhcmdldF91cGxvYWRfdXJsID0zRCB1cmxf b3BlbmVyLm9wZW4oIG5ld19maWxlX3JlcXVlc3QgKS5yZWFkKCkKKyAgICAgICAgI3VwbG9hZCBm aWxlIHRvIGRldGVybWluZWQgdXJsCisgICAgICAgIHVwbG9hZF9oZWFkZXJzID0zRCBkaWN0KCB1 cGxvYWRfcGFyYW1zICkKKyAgICAgICAgI3VwbG9hZF9oZWFkZXJzWyAneC1hbXotbWV0YS1tZDUt aGFzaCcgXSA9M0QgY29udGVudF9tZDUuaGV4ZGlnZXN0PQooKQorICAgICAgICB1cGxvYWRfaGVh ZGVyc1sgJ0FjY2VwdCcgXSA9M0QgJ2FwcGxpY2F0aW9uL2pzb24nCisgICAgICAgIHVwbG9hZF9m aWxlX3JlcXVlc3QgPTNEIHVybGxpYjIuUmVxdWVzdCggdGFyZ2V0X3VwbG9hZF91cmwsIGhlYWRl cj0KcyA9M0QgdXBsb2FkX2hlYWRlcnMsIGRhdGEgPTNEIGlucHV0X2ZpbGUgKQorICAgICAgICB1 cGxvYWRfZmlsZV9yZXF1ZXN0LmdldF9tZXRob2QgPTNEIGxhbWJkYTogJ1BVVCcKKyAgICAgICAg dXBsb2FkX3Jlc3VsdCA9M0QgdXJsbGliMi51cmxvcGVuKCB1cGxvYWRfZmlsZV9yZXF1ZXN0ICku cmVhZCgpCiAgICAgcmVzdWx0X3VybCA9M0QgIiVzLyVzIiAlICggdGFyZ2V0X2RpcmVjdG9yeV9k aWN0Wyd1cmwnXSwgdXJsbGliLnF1b3RlKD0KIHRhcmdldF9maWxlbmFtZSwgc2FmZT0zRCcnICkg KQogICAgICNkZXRlcm1pbmUgYXZhaWxhYmxlIGdzIGxhdW5jaCBhcHBzCiAgICAgd2ViX3Rvb2xz ID0zRCBnZXRfZ2Vub21lX3NwYWNlX2xhdW5jaF9hcHBzKCBnZW5vbWVzcGFjZV9zaXRlX2RpY3Rb J2F0bT0KU2VydmVyJ10sIHVybF9vcGVuZXIsIHJlc3VsdF91cmwsIGZpbGVfdHlwZSApCgpkaWZm IC1yIDRiZWM2ZjAxMGE4OWFiMGFjYzNkNjcyYWIwY2UyMDRlMWQxZDZlYjIgLXIgNTdiYmJlMTQ2 M2Y2MTZmOTg3OTNhODc9CmQ2YjNhYzBkNDM1NjgyNWY0IHRvb2xzL2dlbm9tZXNwYWNlL2dlbm9t ZXNwYWNlX2V4cG9ydGVyLnhtbAotLS0gYS90b29scy9nZW5vbWVzcGFjZS9nZW5vbWVzcGFjZV9l eHBvcnRlci54bWwKKysrIGIvdG9vbHMvZ2Vub21lc3BhY2UvZ2Vub21lc3BhY2VfZXhwb3J0ZXIu eG1sCkBAIC0xLDUgKzEsNSBAQAogPD94bWwgdmVyc2lvbj0zRCIxLjAiPz4KLTx0b29sIG5hbWU9 M0QiR2Vub21lU3BhY2UgRXhwb3J0ZXIiIGlkPTNEImdlbm9tZXNwYWNlX2V4cG9ydGVyIiByZXF1 aXJlX2xvPQpnaW49M0QiVHJ1ZSIgdmVyc2lvbj0zRCIwLjAuMiI+Cis8dG9vbCBuYW1lPTNEIkdl bm9tZVNwYWNlIEV4cG9ydGVyIiBpZD0zRCJnZW5vbWVzcGFjZV9leHBvcnRlciIgcmVxdWlyZV9s bz0KZ2luPTNEIlRydWUiIHZlcnNpb249M0QiMC4wLjMiPjxkZXNjcmlwdGlvbj4gLSBzZW5kIGRh dGEgdG8gR2Vub21lU3BhY2U8L2RlPQpzY3JpcHRpb24+PGNvbW1hbmQgaW50ZXJwcmV0ZXI9M0Qi cHl0aG9uIj5nZW5vbWVzcGFjZV9leHBvcnRlci5weT0yMAogICAgICAgICAtLWdlbm9tZXNwYWNl X3NpdGUgInByb2QiCkBAIC0zNiw3ICszNiw3IEBACiAgICAgICAgIDxwYXJhbSBmb3JtYXQ9M0Qi ZGF0YSIgbmFtZT0zRCJpbnB1dDEiIHR5cGU9M0QiZGF0YSIgbGFiZWw9M0QiU2VuZD0KIHRoaXMg ZGF0YXNldCB0byBHZW5vbWVTcGFjZSIgLz48cGFyYW0gbmFtZT0zRCJiYXNlX3VybCIgdHlwZT0z RCJiYXNldXJsIiAvPQo+PHBhcmFtIG5hbWU9M0Qic3ViZGlyZWN0b3J5IiB0eXBlPTNEImRyaWxs X2Rvd24iIGRpc3BsYXk9M0QicmFkaW8iIGhpZXJhcmM9Cmh5PTNEImV4YWN0IiBtdWx0aXBsZT0z RCJGYWxzZSIgb3B0aW9uYWw9M0QiVHJ1ZSIgbGFiZWw9M0QiQ2hvb3NlIFRhcmdldCBEaT0KcmVj dG9yeSIgZHluYW1pY19vcHRpb25zPTNEImdhbGF4eV9jb2RlX2dldF9nZW5vbWVzcGFjZV9mb2xk ZXJzKCBnZW5vbWVzcGFjPQplX3NpdGUgPTNEICdwcm9kJywgdHJhbnM9M0RfX3RyYW5zX18sIHZh bHVlPTNEX192YWx1ZV9fLCBpbnB1dF9kYXRhc2V0PTNEaW49CnB1dDEsIGJhc2VfdXJsPTNEYmFz ZV91cmwgKSIgaGVscD0zRCJMZWF2ZSBibGFuayB0byBnZW5lcmF0ZSBhdXRvbWF0aWNhbGx5Ij0K Lz4KLSAgICAgICAgPHBhcmFtIG5hbWU9M0QiZmlsZW5hbWUiIHR5cGU9M0QidGV4dCIgc2l6ZT0z RCI4MCIgaGVscD0zRCJMZWF2ZSBiPQpsYW5rIHRvIGdlbmVyYXRlIGF1dG9tYXRpY2FsbHkiIC8+ CisgICAgICAgIDxwYXJhbSBuYW1lPTNEImZpbGVuYW1lIiB0eXBlPTNEInRleHQiIHNpemU9M0Qi ODAiIGxhYmVsPTNEIkZpbGVuYT0KbWUiIGhlbHA9M0QiTGVhdmUgYmxhbmsgdG8gZ2VuZXJhdGUg YXV0b21hdGljYWxseSIgLz48L2lucHV0cz48b3V0cHV0cz48ZGF0PQphIGZvcm1hdD0zRCJodG1s IiBuYW1lPTNEIm91dHB1dF9sb2ciIC8+CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9n YWxheHktY2VudHJhbC9jb21taXRzL2RlOWQ1ZjY1YzE1ZS8KQ2hhbmdlc2V0OiAgIGRlOWQ1ZjY1 YzE1ZQpCcmFuY2g6ICAgICAgcmVsZWFzZV8xNC4wOApVc2VyOiAgICAgICAgbmF0ZWZvbwpEYXRl OiAgICAgICAgMjAxNS0wNC0yMCAxNToyODozNyswMDowMApTdW1tYXJ5OiAgICAgQ3JlYXRlIGJy YW5jaCByZWxlYXNlXzE0LjA4IGZyb20gbGF0ZXN0XzIwMTQuMDguMTEKQWZmZWN0ZWQgIzogIDAg ZmlsZXMKCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21t aXRzL2EyZmFkNDRkYTg0Ny8KQ2hhbmdlc2V0OiAgIGEyZmFkNDRkYTg0NwpCcmFuY2g6ICAgICAg cmVsZWFzZV8xNC4xMApVc2VyOiAgICAgICAgbmF0ZWZvbwpEYXRlOiAgICAgICAgMjAxNS0wNC0y MCAxNTozMDoyMSswMDowMApTdW1tYXJ5OiAgICAgQ3JlYXRlIGJyYW5jaCByZWxlYXNlXzE0LjEw IGZyb20gbGF0ZXN0XzIwMTQuMTAuMDYKQWZmZWN0ZWQgIzogIDAgZmlsZXMKCgoKaHR0cHM6Ly9i aXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzdhMDljMDVhZWQ3YS8K Q2hhbmdlc2V0OiAgIDdhMDljMDVhZWQ3YQpCcmFuY2g6ICAgICAgcmVsZWFzZV8xNS4wMQpVc2Vy OiAgICAgICAgbmF0ZWZvbwpEYXRlOiAgICAgICAgMjAxNS0wNC0yMCAxNTozMToyNSswMDowMApT dW1tYXJ5OiAgICAgQ3JlYXRlIGJyYW5jaCByZWxlYXNlXzE1LjAxIGZyb20gbGF0ZXN0XzIwMTUu MDEuMTMKQWZmZWN0ZWQgIzogIDAgZmlsZXMKClJlcG9zaXRvcnkgVVJMOiBodHRwczovL2JpdGJ1 Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsLwoKLS0KClRoaXMgaXMgYSBjb21taXQgbm90 aWZpY2F0aW9uIGZyb20gYml0YnVja2V0Lm9yZy4gWW91IGFyZSByZWNlaXZpbmcKdGhpcyBiZWNh dXNlIHlvdSBoYXZlIHRoZSBzZXJ2aWNlIGVuYWJsZWQsIGFkZHJlc3NpbmcgdGhlIHJlY2lwaWVu dCBvZgp0aGlzIGVtYWlsLgo
participants (1)
-
commits-noreply@bitbucket.org