commit/galaxy-central: 6 new changesets
NiBuZXcgY29tbWl0cyBpbiBnYWxheHktY2VudHJhbDoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9n YWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8yYTgyYTdiYzkxZTcvCkNoYW5nZXNldDogICAy YTgyYTdiYzkxZTcKQnJhbmNoOiAgICAgIHJlbGVhc2VfMTUuMDMKVXNlcjogICAgICAgIGRhbm5v bgpEYXRlOiAgICAgICAgMjAxNS0wMi0yMyAxNjoyODowNyswMDowMApTdW1tYXJ5OiAgICAgQ2xv bmUgLmdpdGlnbm9yZQpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDk4ZWNkMzA1ZTNkM2Yw MmFmNzhjOWY2MTI5N2Y4Mjk5OTY2YTUxODcgLXIgMmE4MmE3YmM5MWU3ZWYxYmFhZjI4MjA9Cjg5 MjNlOGIzZmRjZTNmZGJiIC5naXRpZ25vcmUKLS0tIC9kZXYvbnVsbAorKysgYi8uZ2l0aWdub3Jl CkBAIC0wLDAgKzEsMTE4IEBACisuaGcqCisjIERvd25sb2FkZWQgYW5kIGxvY2FsbHkgYnVpbHQg ZWdncworZWdncworc2NyaXB0cy9zY3JhbWJsZS9idWlsZAorc2NyaXB0cy9zY3JhbWJsZS9saWIK K3NjcmlwdHMvc2NyYW1ibGUvYXJjaGl2ZXMKKworIyBQeXRob24gdmlydHVhbGVudgorLnZlbnYK KworIyBEYXRhYmFzZSBzdHVmZgorZGF0YWJhc2UvYmVha2VyX3Nlc3Npb25zCitkYXRhYmFzZS9j aXRhdGlvbnMKK2RhdGFiYXNlL2NvbW11bml0eV9maWxlcworZGF0YWJhc2UvY29tcGlsZWRfdGVt cGxhdGVzCitkYXRhYmFzZS9maWxlcworZGF0YWJhc2Uvam9iX3dvcmtpbmdfZGlyZWN0b3J5Citk YXRhYmFzZS9wYnMKK2RhdGFiYXNlL3RtcAorZGF0YWJhc2UvKi5zcWxpdGUKK2RhdGFiYXNlL29w ZW5pZF9jb25zdW1lcl9jYWNoZQorCisjIFB5dGhvbiBieXRlY29kZQorKi5weWMKKworIyBHYWxh eHkgUnVudGltZSBGaWxlcworKi5sb2NrCisqLmxvZworKi5waWQKKworIyBUb29sIFNoZWQgUnVu dGltZSBGaWxlcwordG9vbF9zaGVkX3dlYmFwcC5sb2NrCit0b29sX3NoZWRfd2ViYXBwLmxvZwor dG9vbF9zaGVkX3dlYmFwcC5waWQKK2hnd2ViLmNvbmZpZyoKK2xpYi90b29sX3NoZWQvc2NyaXB0 cy9ib290c3RyYXBfdG9vbF9zaGVkL3VzZXJfaW5mby54bWwKKworIyBSZXBvcnRzIFJ1bnRpbWUg RmlsZXMKK3JlcG9ydHNfd2ViYXBwLmxvY2sKK3JlcG9ydHNfd2ViYXBwLmxvZworcmVwb3J0c193 ZWJhcHAucGlkCisKKyMgQ29uZmlnIGZpbGVzCit1bml2ZXJzZV93c2dpLmluaQorcmVwb3J0c193 c2dpLmluaQordG9vbF9zaGVkX3dzZ2kuaW5pCisKKyMgQ29uZmlnIGZpbGVzLgorZGF0YXR5cGVz X2NvbmYueG1sCit0b29sX2NvbmYueG1sCitleHRlcm5hbF9zZXJ2aWNlX3R5cGVzX2NvbmYueG1s CittaWdyYXRlZF90b29sc19jb25mLnhtbAorc2hlZF90b29sX2NvbmYueG1sCit0b29sX2RhdGFf dGFibGVfY29uZi54bWwKK3Rvb2xfc2hlZHNfY29uZi54bWwKK2ludGVncmF0ZWRfdG9vbF9wYW5l bC54bWwKK29wZW5pZF9jb25mLnhtbAorc2hlZF90b29sX2RhdGFfdGFibGVfY29uZi54bWwKK2pv Yl9jb25mLnhtbAorZGF0YV9tYW5hZ2VyX2NvbmYueG1sCitzaGVkX2RhdGFfbWFuYWdlcl9jb25m LnhtbAorb2JqZWN0X3N0b3JlX2NvbmYueG1sCitqb2JfbWV0cmljc19jb25mLnhtbAord29ya2Zs b3dfc2NoZWR1bGVyc19jb25mLnhtbAorY29uZmlnLyoKK3N0YXRpYy93ZWxjb21lLmh0bWwuKgor c3RhdGljL3dlbGNvbWUuaHRtbAorCisjIFRvb2wgZGF0YS4KK3Rvb2wtZGF0YS9hbm5vdGF0aW9u X3Byb2ZpbGVyX29wdGlvbnMueG1sCit0b29sLWRhdGEvYW5ub3RhdGlvbl9wcm9maWxlcl92YWxp ZF9idWlsZHMudHh0Cit0b29sLWRhdGEvZ2F0a19hbm5vdGF0aW9ucy50eHQKK3Rvb2wtZGF0YS9n ZC5yZXN0cmljdGlvbl9lbnp5bWVzLnR4dAordG9vbC1kYXRhL2dkLnNwZWNpZXMudHh0Cit0b29s LWRhdGEvc2hhcmVkL2lndi9pZ3ZfYnVpbGRfc2l0ZXMudHh0Cit0b29sLWRhdGEvc2hhcmVkL3J2 aWV3ZXIvcnZpZXdlcl9idWlsZF9zaXRlcy50eHQKK3Rvb2wtZGF0YS9zaGFyZWQvbmNiaS9idWls ZHMudHh0Cit0b29sLWRhdGEvc2hhcmVkL3Vjc2MvYnVpbGRzLnR4dAordG9vbC1kYXRhL3NoYXJl ZC9lbnNlbWJsL2J1aWxkcy50eHQKK3Rvb2wtZGF0YS9zaGFyZWQvdWNzYy9wdWJsaWNidWlsZHMu dHh0Cit0b29sLWRhdGEvc2hhcmVkL3Vjc2MvdWNzY19idWlsZF9zaXRlcy50eHQKK3Rvb2wtZGF0 YS8qLmxvYwordG9vbC1kYXRhL2dlbm9tZS8qCisKKyMgVGVzdCBvdXRwdXQKK3Rlc3QtZGF0YS1j YWNoZQorcnVuX2Z1bmN0aW9uYWxfdGVzdHMuaHRtbAordGVzdC90b29sX3NoZWQvdG1wLyoKKy5j b3ZlcmFnZQoraHRtbGNvdgorcnVuX3VuaXRfdGVzdHMuaHRtbAordGVzdC91bml0LyoqLmxvZwor CisjIFByb2plY3QgZmlsZXMKKyoua3BmCisKKyMgQ2hyb20gbGVuIGZpbGVzCisqLmxlbgorCisj IEphcnMKK3Rvb2wtZGF0YS9zaGFyZWQvamFycy8KKworIyBDU1MgYnVpbGQgYXJ0aWZhY3RzLgor c3ByaXRlLSoubGVzcworCisjIExvY2FsIG5vZGVfbW9kdWxlcyBhbmQgYm93ZXJfY29tcG9uZW50 cyBkaXJlY3Rvcmllcworbm9kZV9tb2R1bGVzCitib3dlcl9jb21wb25lbnRzCisKKyMgRG9jdW1l bnRhdGlvbiBidWlsZCBmaWxlcy4KK2RvYy9idWlsZAorCisjIE1pc2MKKyoub3JpZworLkRTX1N0 b3JlCisqLnJlagorKn4KKwoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNl bnRyYWwvY29tbWl0cy80ZDg4M2RhMjE4MTEvCkNoYW5nZXNldDogICA0ZDg4M2RhMjE4MTEKQnJh bmNoOiAgICAgIHJlbGVhc2VfMTUuMDMKVXNlcjogICAgICAgIGd1ZXJsZXIKRGF0ZTogICAgICAg IDIwMTUtMDItMjMgMTc6NTA6MjcrMDA6MDAKU3VtbWFyeTogICAgIFNlbGVjdDIgZml4CkFmZmVj dGVkICM6ICAyMSBmaWxlcwoKZGlmZiAtciAyYTgyYTdiYzkxZTdlZjFiYWFmMjgyMDg5MjNlOGIz ZmRjZTNmZGJiIC1yIDRkODgzZGEyMTgxMTlmOGFkOTIzMmI2PQoxMWJjZjBiZGY4NmNlNzZjOSBj bGllbnQvZ2FsYXh5L3NjcmlwdHMvbGlicy9qcXVlcnkvc2VsZWN0Mi5qcwotLS0gYS9jbGllbnQv Z2FsYXh5L3NjcmlwdHMvbGlicy9qcXVlcnkvc2VsZWN0Mi5qcworKysgYi9jbGllbnQvZ2FsYXh5 L3NjcmlwdHMvbGlicy9qcXVlcnkvc2VsZWN0Mi5qcwpAQCAtMSw3ICsxLDcgQEAKIC8qCiBDb3B5 cmlnaHQgMjAxMiBJZ29yIFZheW5iZXJnCj0yMAotVmVyc2lvbjogMy40LjMgVGltZXN0YW1wOiBU dWUgU2VwIDE3IDA2OjQ3OjE0IFBEVCAyMDEzCitWZXJzaW9uOiAzLjUuMSBUaW1lc3RhbXA6IFR1 ZSBKdWwgMjIgMTg6NTg6NTYgRURUIDIwMTQKPTIwCiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2Vk IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiQXBhYz0KaGUgTGlj ZW5zZSIpIG9yIHRoZSBHTlUKIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyICh0aGUg IkdQTCBMaWNlbnNlIikuIFlvdSBtYXkgY2hvb3NlIGVpdGhlPQpyIGxpY2Vuc2UgdG8gZ292ZXJu IHlvdXIKQEAgLTE0LDcgKzE0LDcgQEAKICAgICBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Z3BsLTIuMC5odG1sCj0yMAogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFn cmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSBkaXN0cmk9CmJ1dGVkIHVuZGVyIHRoZQotQXBh Y2hlIExpY2Vuc2Ugb3IgdGhlIEdQTCBMaWNlc25zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMg SVMiIEJBU0lTLCBXSVQ9CkhPVVQgV0FSUkFOVElFUyBPUgorQXBhY2hlIExpY2Vuc2Ugb3IgdGhl IEdQTCBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEg9Ck9V VCBXQVJSQU5USUVTIE9SCiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv ciBpbXBsaWVkLiBTZWUgdGhlIEFwYWNoZSBMaWNlbnNlID0KYW5kIHRoZSBHUEwgTGljZW5zZSBm b3IKIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0 YXRpb25zIHVuZGVyIHRoZSBBcGFjPQpoZSBMaWNlbnNlIGFuZCB0aGUgR1BMIExpY2Vuc2UuCiAq LwpAQCAtOTgsMjQgKzk4LDI4IEBACiAgICAgfSwKICAgICBNRUFTVVJFX1NDUk9MTEJBUl9URU1Q TEFURSA9M0QgIjxkaXYgY2xhc3M9M0Qnc2VsZWN0Mi1tZWFzdXJlLXNjcm9sbGJhPQpyJz48L2Rp dj4iLAo9MjAKLSAgICBESUFDUklUSUNTID0zRCB7Ilx1MjRCNiI6IkEiLCJcdUZGMjEiOiJBIiwi XHUwMEMwIjoiQSIsIlx1MDBDMSI6IkEiLCJcPQp1MDBDMiI6IkEiLCJcdTFFQTYiOiJBIiwiXHUx RUE0IjoiQSIsIlx1MUVBQSI6IkEiLCJcdTFFQTgiOiJBIiwiXHUwMEMzIjoiQSI9CiwiXHUwMTAw IjoiQSIsIlx1MDEwMiI6IkEiLCJcdTFFQjAiOiJBIiwiXHUxRUFFIjoiQSIsIlx1MUVCNCI6IkEi LCJcdTFFQjIiOj0KIkEiLCJcdTAyMjYiOiJBIiwiXHUwMUUwIjoiQSIsIlx1MDBDNCI6IkEiLCJc dTAxREUiOiJBIiwiXHUxRUEyIjoiQSIsIlx1MDBDPQo1IjoiQSIsIlx1MDFGQSI6IkEiLCJcdTAx Q0QiOiJBIiwiXHUwMjAwIjoiQSIsIlx1MDIwMiI6IkEiLCJcdTFFQTAiOiJBIiwiXHU9CjFFQUMi OiJBIiwiXHUxRUI2IjoiQSIsIlx1MUUwMCI6IkEiLCJcdTAxMDQiOiJBIiwiXHUwMjNBIjoiQSIs Ilx1MkM2RiI6IkEiLD0KIlx1QTczMiI6IkFBIiwiXHUwMEM2IjoiQUUiLCJcdTAxRkMiOiJBRSIs Ilx1MDFFMiI6IkFFIiwiXHVBNzM0IjoiQU8iLCJcdUE3PQozNiI6IkFVIiwiXHVBNzM4IjoiQVYi LCJcdUE3M0EiOiJBViIsIlx1QTczQyI6IkFZIiwiXHUyNEI3IjoiQiIsIlx1RkYyMiI6IkI9CiIs Ilx1MUUwMiI6IkIiLCJcdTFFMDQiOiJCIiwiXHUxRTA2IjoiQiIsIlx1MDI0MyI6IkIiLCJcdTAx ODIiOiJCIiwiXHUwMTgxIj0KOiJCIiwiXHUyNEI4IjoiQyIsIlx1RkYyMyI6IkMiLCJcdTAxMDYi OiJDIiwiXHUwMTA4IjoiQyIsIlx1MDEwQSI6IkMiLCJcdTAxPQowQyI6IkMiLCJcdTAwQzciOiJD IiwiXHUxRTA4IjoiQyIsIlx1MDE4NyI6IkMiLCJcdTAyM0IiOiJDIiwiXHVBNzNFIjoiQyIsIlw9 CnUyNEI5IjoiRCIsIlx1RkYyNCI6IkQiLCJcdTFFMEEiOiJEIiwiXHUwMTBFIjoiRCIsIlx1MUUw QyI6IkQiLCJcdTFFMTAiOiJEIj0KLCJcdTFFMTIiOiJEIiwiXHUxRTBFIjoiRCIsIlx1MDExMCI6 IkQiLCJcdTAxOEIiOiJEIiwiXHUwMThBIjoiRCIsIlx1MDE4OSI6PQoiRCIsIlx1QTc3OSI6IkQi LCJcdTAxRjEiOiJEWiIsIlx1MDFDNCI6IkRaIiwiXHUwMUYyIjoiRHoiLCJcdTAxQzUiOiJEeiIs Ilw9CnUyNEJBIjoiRSIsIlx1RkYyNSI6IkUiLCJcdTAwQzgiOiJFIiwiXHUwMEM5IjoiRSIsIlx1 MDBDQSI6IkUiLCJcdTFFQzAiOiJFIj0KLCJcdTFFQkUiOiJFIiwiXHUxRUM0IjoiRSIsIlx1MUVD MiI6IkUiLCJcdTFFQkMiOiJFIiwiXHUwMTEyIjoiRSIsIlx1MUUxNCI6PQoiRSIsIlx1MUUxNiI6 IkUiLCJcdTAxMTQiOiJFIiwiXHUwMTE2IjoiRSIsIlx1MDBDQiI6IkUiLCJcdTFFQkEiOiJFIiwi XHUwMTE9CkEiOiJFIiwiXHUwMjA0IjoiRSIsIlx1MDIwNiI6IkUiLCJcdTFFQjgiOiJFIiwiXHUx RUM2IjoiRSIsIlx1MDIyOCI6IkUiLCJcdT0KMUUxQyI6IkUiLCJcdTAxMTgiOiJFIiwiXHUxRTE4 IjoiRSIsIlx1MUUxQSI6IkUiLCJcdTAxOTAiOiJFIiwiXHUwMThFIjoiRSIsPQoiXHUyNEJCIjoi RiIsIlx1RkYyNiI6IkYiLCJcdTFFMUUiOiJGIiwiXHUwMTkxIjoiRiIsIlx1QTc3QiI6IkYiLCJc dTI0QkMiOiI9CkciLCJcdUZGMjciOiJHIiwiXHUwMUY0IjoiRyIsIlx1MDExQyI6IkciLCJcdTFF MjAiOiJHIiwiXHUwMTFFIjoiRyIsIlx1MDEyMD0KIjoiRyIsIlx1MDFFNiI6IkciLCJcdTAxMjIi OiJHIiwiXHUwMUU0IjoiRyIsIlx1MDE5MyI6IkciLCJcdUE3QTAiOiJHIiwiXHVBPQo3N0QiOiJH IiwiXHVBNzdFIjoiRyIsIlx1MjRCRCI6IkgiLCJcdUZGMjgiOiJIIiwiXHUwMTI0IjoiSCIsIlx1 MUUyMiI6IkgiLCI9Clx1MUUyNiI6IkgiLCJcdTAyMUUiOiJIIiwiXHUxRTI0IjoiSCIsIlx1MUUy OCI6IkgiLCJcdTFFMkEiOiJIIiwiXHUwMTI2IjoiSD0KIiwiXHUyQzY3IjoiSCIsIlx1MkM3NSI6 IkgiLCJcdUE3OEQiOiJIIiwiXHUyNEJFIjoiSSIsIlx1RkYyOSI6IkkiLCJcdTAwQ0MiPQo6Ikki LCJcdTAwQ0QiOiJJIiwiXHUwMENFIjoiSSIsIlx1MDEyOCI6IkkiLCJcdTAxMkEiOiJJIiwiXHUw MTJDIjoiSSIsIlx1MDE9CjMwIjoiSSIsIlx1MDBDRiI6IkkiLCJcdTFFMkUiOiJJIiwiXHUxRUM4 IjoiSSIsIlx1MDFDRiI6IkkiLCJcdTAyMDgiOiJJIiwiXD0KdTAyMEEiOiJJIiwiXHUxRUNBIjoi SSIsIlx1MDEyRSI6IkkiLCJcdTFFMkMiOiJJIiwiXHUwMTk3IjoiSSIsIlx1MjRCRiI6IkoiPQos Ilx1RkYyQSI6IkoiLCJcdTAxMzQiOiJKIiwiXHUwMjQ4IjoiSiIsIlx1MjRDMCI6IksiLCJcdUZG MkIiOiJLIiwiXHUxRTMwIjo9CiJLIiwiXHUwMUU4IjoiSyIsIlx1MUUzMiI6IksiLCJcdTAxMzYi OiJLIiwiXHUxRTM0IjoiSyIsIlx1MDE5OCI6IksiLCJcdTJDNj0KOSI6IksiLCJcdUE3NDAiOiJL IiwiXHVBNzQyIjoiSyIsIlx1QTc0NCI6IksiLCJcdUE3QTIiOiJLIiwiXHUyNEMxIjoiTCIsIlx1 PQpGRjJDIjoiTCIsIlx1MDEzRiI6IkwiLCJcdTAxMzkiOiJMIiwiXHUwMTNEIjoiTCIsIlx1MUUz NiI6IkwiLCJcdTFFMzgiOiJMIiw9CiJcdTAxM0IiOiJMIiwiXHUxRTNDIjoiTCIsIlx1MUUzQSI6 IkwiLCJcdTAxNDEiOiJMIiwiXHUwMjNEIjoiTCIsIlx1MkM2MiI6Ij0KTCIsIlx1MkM2MCI6Ikwi LCJcdUE3NDgiOiJMIiwiXHVBNzQ2IjoiTCIsIlx1QTc4MCI6IkwiLCJcdTAxQzciOiJMSiIsIlx1 MDFDPQo4IjoiTGoiLCJcdTI0QzIiOiJNIiwiXHVGRjJEIjoiTSIsIlx1MUUzRSI6Ik0iLCJcdTFF NDAiOiJNIiwiXHUxRTQyIjoiTSIsIlw9CnUyQzZFIjoiTSIsIlx1MDE5QyI6Ik0iLCJcdTI0QzMi OiJOIiwiXHVGRjJFIjoiTiIsIlx1MDFGOCI6Ik4iLCJcdTAxNDMiOiJOIj0KLCJcdTAwRDEiOiJO IiwiXHUxRTQ0IjoiTiIsIlx1MDE0NyI6Ik4iLCJcdTFFNDYiOiJOIiwiXHUwMTQ1IjoiTiIsIlx1 MUU0QSI6PQoiTiIsIlx1MUU0OCI6Ik4iLCJcdTAyMjAiOiJOIiwiXHUwMTlEIjoiTiIsIlx1QTc5 MCI6Ik4iLCJcdUE3QTQiOiJOIiwiXHUwMUM9CkEiOiJOSiIsIlx1MDFDQiI6Ik5qIiwiXHUyNEM0 IjoiTyIsIlx1RkYyRiI6Ik8iLCJcdTAwRDIiOiJPIiwiXHUwMEQzIjoiTyIsIj0KXHUwMEQ0Ijoi TyIsIlx1MUVEMiI6Ik8iLCJcdTFFRDAiOiJPIiwiXHUxRUQ2IjoiTyIsIlx1MUVENCI6Ik8iLCJc dTAwRDUiOiJPPQoiLCJcdTFFNEMiOiJPIiwiXHUwMjJDIjoiTyIsIlx1MUU0RSI6Ik8iLCJcdTAx NEMiOiJPIiwiXHUxRTUwIjoiTyIsIlx1MUU1MiI9CjoiTyIsIlx1MDE0RSI6Ik8iLCJcdTAyMkUi OiJPIiwiXHUwMjMwIjoiTyIsIlx1MDBENiI6Ik8iLCJcdTAyMkEiOiJPIiwiXHUxRT0KQ0UiOiJP IiwiXHUwMTUwIjoiTyIsIlx1MDFEMSI6Ik8iLCJcdTAyMEMiOiJPIiwiXHUwMjBFIjoiTyIsIlx1 MDFBMCI6Ik8iLCJcPQp1MUVEQyI6Ik8iLCJcdTFFREEiOiJPIiwiXHUxRUUwIjoiTyIsIlx1MUVE RSI6Ik8iLCJcdTFFRTIiOiJPIiwiXHUxRUNDIjoiTyI9CiwiXHUxRUQ4IjoiTyIsIlx1MDFFQSI6 Ik8iLCJcdTAxRUMiOiJPIiwiXHUwMEQ4IjoiTyIsIlx1MDFGRSI6Ik8iLCJcdTAxODYiOj0KIk8i LCJcdTAxOUYiOiJPIiwiXHVBNzRBIjoiTyIsIlx1QTc0QyI6Ik8iLCJcdTAxQTIiOiJPSSIsIlx1 QTc0RSI6Ik9PIiwiXHUwPQoyMjIiOiJPVSIsIlx1MjRDNSI6IlAiLCJcdUZGMzAiOiJQIiwiXHUx RTU0IjoiUCIsIlx1MUU1NiI6IlAiLCJcdTAxQTQiOiJQIiw9CiJcdTJDNjMiOiJQIiwiXHVBNzUw IjoiUCIsIlx1QTc1MiI6IlAiLCJcdUE3NTQiOiJQIiwiXHUyNEM2IjoiUSIsIlx1RkYzMSI6Ij0K USIsIlx1QTc1NiI6IlEiLCJcdUE3NTgiOiJRIiwiXHUwMjRBIjoiUSIsIlx1MjRDNyI6IlIiLCJc dUZGMzIiOiJSIiwiXHUwMTU0PQoiOiJSIiwiXHUxRTU4IjoiUiIsIlx1MDE1OCI6IlIiLCJcdTAy MTAiOiJSIiwiXHUwMjEyIjoiUiIsIlx1MUU1QSI6IlIiLCJcdTE9CkU1QyI6IlIiLCJcdTAxNTYi OiJSIiwiXHUxRTVFIjoiUiIsIlx1MDI0QyI6IlIiLCJcdTJDNjQiOiJSIiwiXHVBNzVBIjoiUiIs Ij0KXHVBN0E2IjoiUiIsIlx1QTc4MiI6IlIiLCJcdTI0QzgiOiJTIiwiXHVGRjMzIjoiUyIsIlx1 MUU5RSI6IlMiLCJcdTAxNUEiOiJTPQoiLCJcdTFFNjQiOiJTIiwiXHUwMTVDIjoiUyIsIlx1MUU2 MCI6IlMiLCJcdTAxNjAiOiJTIiwiXHUxRTY2IjoiUyIsIlx1MUU2MiI9CjoiUyIsIlx1MUU2OCI6 IlMiLCJcdTAyMTgiOiJTIiwiXHUwMTVFIjoiUyIsIlx1MkM3RSI6IlMiLCJcdUE3QTgiOiJTIiwi XHVBNz0KODQiOiJTIiwiXHUyNEM5IjoiVCIsIlx1RkYzNCI6IlQiLCJcdTFFNkEiOiJUIiwiXHUw MTY0IjoiVCIsIlx1MUU2QyI6IlQiLCJcPQp1MDIxQSI6IlQiLCJcdTAxNjIiOiJUIiwiXHUxRTcw IjoiVCIsIlx1MUU2RSI6IlQiLCJcdTAxNjYiOiJUIiwiXHUwMUFDIjoiVCI9CiwiXHUwMUFFIjoi VCIsIlx1MDIzRSI6IlQiLCJcdUE3ODYiOiJUIiwiXHVBNzI4IjoiVFoiLCJcdTI0Q0EiOiJVIiwi XHVGRjM1Ij0KOiJVIiwiXHUwMEQ5IjoiVSIsIlx1MDBEQSI6IlUiLCJcdTAwREIiOiJVIiwiXHUw MTY4IjoiVSIsIlx1MUU3OCI6IlUiLCJcdTAxPQo2QSI6IlUiLCJcdTFFN0EiOiJVIiwiXHUwMTZD IjoiVSIsIlx1MDBEQyI6IlUiLCJcdTAxREIiOiJVIiwiXHUwMUQ3IjoiVSIsIlw9CnUwMUQ1Ijoi VSIsIlx1MDFEOSI6IlUiLCJcdTFFRTYiOiJVIiwiXHUwMTZFIjoiVSIsIlx1MDE3MCI6IlUiLCJc dTAxRDMiOiJVIj0KLCJcdTAyMTQiOiJVIiwiXHUwMjE2IjoiVSIsIlx1MDFBRiI6IlUiLCJcdTFF RUEiOiJVIiwiXHUxRUU4IjoiVSIsIlx1MUVFRSI6PQoiVSIsIlx1MUVFQyI6IlUiLCJcdTFFRjAi OiJVIiwiXHUxRUU0IjoiVSIsIlx1MUU3MiI6IlUiLCJcdTAxNzIiOiJVIiwiXHUxRTc9CjYiOiJV IiwiXHUxRTc0IjoiVSIsIlx1MDI0NCI6IlUiLCJcdTI0Q0IiOiJWIiwiXHVGRjM2IjoiViIsIlx1 MUU3QyI6IlYiLCJcdT0KMUU3RSI6IlYiLCJcdTAxQjIiOiJWIiwiXHVBNzVFIjoiViIsIlx1MDI0 NSI6IlYiLCJcdUE3NjAiOiJWWSIsIlx1MjRDQyI6IlciPQosIlx1RkYzNyI6IlciLCJcdTFFODAi OiJXIiwiXHUxRTgyIjoiVyIsIlx1MDE3NCI6IlciLCJcdTFFODYiOiJXIiwiXHUxRTg0Ijo9CiJX IiwiXHUxRTg4IjoiVyIsIlx1MkM3MiI6IlciLCJcdTI0Q0QiOiJYIiwiXHVGRjM4IjoiWCIsIlx1 MUU4QSI6IlgiLCJcdTFFOD0KQyI6IlgiLCJcdTI0Q0UiOiJZIiwiXHVGRjM5IjoiWSIsIlx1MUVG MiI6IlkiLCJcdTAwREQiOiJZIiwiXHUwMTc2IjoiWSIsIlx1PQoxRUY4IjoiWSIsIlx1MDIzMiI6 IlkiLCJcdTFFOEUiOiJZIiwiXHUwMTc4IjoiWSIsIlx1MUVGNiI6IlkiLCJcdTFFRjQiOiJZIiw9 CiJcdTAxQjMiOiJZIiwiXHUwMjRFIjoiWSIsIlx1MUVGRSI6IlkiLCJcdTI0Q0YiOiJaIiwiXHVG RjNBIjoiWiIsIlx1MDE3OSI6Ij0KWiIsIlx1MUU5MCI6IloiLCJcdTAxN0IiOiJaIiwiXHUwMTdE IjoiWiIsIlx1MUU5MiI6IloiLCJcdTFFOTQiOiJaIiwiXHUwMUI1PQoiOiJaIiwiXHUwMjI0Ijoi WiIsIlx1MkM3RiI6IloiLCJcdTJDNkIiOiJaIiwiXHVBNzYyIjoiWiIsIlx1MjREMCI6ImEiLCJc dUY9CkY0MSI6ImEiLCJcdTFFOUEiOiJhIiwiXHUwMEUwIjoiYSIsIlx1MDBFMSI6ImEiLCJcdTAw RTIiOiJhIiwiXHUxRUE3IjoiYSIsIj0KXHUxRUE1IjoiYSIsIlx1MUVBQiI6ImEiLCJcdTFFQTki OiJhIiwiXHUwMEUzIjoiYSIsIlx1MDEwMSI6ImEiLCJcdTAxMDMiOiJhPQoiLCJcdTFFQjEiOiJh IiwiXHUxRUFGIjoiYSIsIlx1MUVCNSI6ImEiLCJcdTFFQjMiOiJhIiwiXHUwMjI3IjoiYSIsIlx1 MDFFMSI9CjoiYSIsIlx1MDBFNCI6ImEiLCJcdTAxREYiOiJhIiwiXHUxRUEzIjoiYSIsIlx1MDBF NSI6ImEiLCJcdTAxRkIiOiJhIiwiXHUwMT0KQ0UiOiJhIiwiXHUwMjAxIjoiYSIsIlx1MDIwMyI6 ImEiLCJcdTFFQTEiOiJhIiwiXHUxRUFEIjoiYSIsIlx1MUVCNyI6ImEiLCJcPQp1MUUwMSI6ImEi LCJcdTAxMDUiOiJhIiwiXHUyQzY1IjoiYSIsIlx1MDI1MCI6ImEiLCJcdUE3MzMiOiJhYSIsIlx1 MDBFNiI6ImE9CmUiLCJcdTAxRkQiOiJhZSIsIlx1MDFFMyI6ImFlIiwiXHVBNzM1IjoiYW8iLCJc dUE3MzciOiJhdSIsIlx1QTczOSI6ImF2IiwiXD0KdUE3M0IiOiJhdiIsIlx1QTczRCI6ImF5Iiwi XHUyNEQxIjoiYiIsIlx1RkY0MiI6ImIiLCJcdTFFMDMiOiJiIiwiXHUxRTA1IjoiPQpiIiwiXHUx RTA3IjoiYiIsIlx1MDE4MCI6ImIiLCJcdTAxODMiOiJiIiwiXHUwMjUzIjoiYiIsIlx1MjREMiI6 ImMiLCJcdUZGNDM9CiI6ImMiLCJcdTAxMDciOiJjIiwiXHUwMTA5IjoiYyIsIlx1MDEwQiI6ImMi LCJcdTAxMEQiOiJjIiwiXHUwMEU3IjoiYyIsIlx1MT0KRTA5IjoiYyIsIlx1MDE4OCI6ImMiLCJc dTAyM0MiOiJjIiwiXHVBNzNGIjoiYyIsIlx1MjE4NCI6ImMiLCJcdTI0RDMiOiJkIiwiPQpcdUZG NDQiOiJkIiwiXHUxRTBCIjoiZCIsIlx1MDEwRiI6ImQiLCJcdTFFMEQiOiJkIiwiXHUxRTExIjoi ZCIsIlx1MUUxMyI6ImQ9CiIsIlx1MUUwRiI6ImQiLCJcdTAxMTEiOiJkIiwiXHUwMThDIjoiZCIs Ilx1MDI1NiI6ImQiLCJcdTAyNTciOiJkIiwiXHVBNzdBIj0KOiJkIiwiXHUwMUYzIjoiZHoiLCJc dTAxQzYiOiJkeiIsIlx1MjRENCI6ImUiLCJcdUZGNDUiOiJlIiwiXHUwMEU4IjoiZSIsIlx1PQow MEU5IjoiZSIsIlx1MDBFQSI6ImUiLCJcdTFFQzEiOiJlIiwiXHUxRUJGIjoiZSIsIlx1MUVDNSI6 ImUiLCJcdTFFQzMiOiJlIiw9CiJcdTFFQkQiOiJlIiwiXHUwMTEzIjoiZSIsIlx1MUUxNSI6ImUi LCJcdTFFMTciOiJlIiwiXHUwMTE1IjoiZSIsIlx1MDExNyI6Ij0KZSIsIlx1MDBFQiI6ImUiLCJc dTFFQkIiOiJlIiwiXHUwMTFCIjoiZSIsIlx1MDIwNSI6ImUiLCJcdTAyMDciOiJlIiwiXHUxRUI5 PQoiOiJlIiwiXHUxRUM3IjoiZSIsIlx1MDIyOSI6ImUiLCJcdTFFMUQiOiJlIiwiXHUwMTE5Ijoi ZSIsIlx1MUUxOSI6ImUiLCJcdTE9CkUxQiI6ImUiLCJcdTAyNDciOiJlIiwiXHUwMjVCIjoiZSIs Ilx1MDFERCI6ImUiLCJcdTI0RDUiOiJmIiwiXHVGRjQ2IjoiZiIsIj0KXHUxRTFGIjoiZiIsIlx1 MDE5MiI6ImYiLCJcdUE3N0MiOiJmIiwiXHUyNEQ2IjoiZyIsIlx1RkY0NyI6ImciLCJcdTAxRjUi OiJnPQoiLCJcdTAxMUQiOiJnIiwiXHUxRTIxIjoiZyIsIlx1MDExRiI6ImciLCJcdTAxMjEiOiJn IiwiXHUwMUU3IjoiZyIsIlx1MDEyMyI9CjoiZyIsIlx1MDFFNSI6ImciLCJcdTAyNjAiOiJnIiwi XHVBN0ExIjoiZyIsIlx1MUQ3OSI6ImciLCJcdUE3N0YiOiJnIiwiXHUyND0KRDciOiJoIiwiXHVG RjQ4IjoiaCIsIlx1MDEyNSI6ImgiLCJcdTFFMjMiOiJoIiwiXHUxRTI3IjoiaCIsIlx1MDIxRiI6 ImgiLCJcPQp1MUUyNSI6ImgiLCJcdTFFMjkiOiJoIiwiXHUxRTJCIjoiaCIsIlx1MUU5NiI6Imgi LCJcdTAxMjciOiJoIiwiXHUyQzY4IjoiaCI9CiwiXHUyQzc2IjoiaCIsIlx1MDI2NSI6ImgiLCJc dTAxOTUiOiJodiIsIlx1MjREOCI6ImkiLCJcdUZGNDkiOiJpIiwiXHUwMEVDIj0KOiJpIiwiXHUw MEVEIjoiaSIsIlx1MDBFRSI6ImkiLCJcdTAxMjkiOiJpIiwiXHUwMTJCIjoiaSIsIlx1MDEyRCI6 ImkiLCJcdTAwPQpFRiI6ImkiLCJcdTFFMkYiOiJpIiwiXHUxRUM5IjoiaSIsIlx1MDFEMCI6Imki LCJcdTAyMDkiOiJpIiwiXHUwMjBCIjoiaSIsIlw9CnUxRUNCIjoiaSIsIlx1MDEyRiI6ImkiLCJc dTFFMkQiOiJpIiwiXHUwMjY4IjoiaSIsIlx1MDEzMSI6ImkiLCJcdTI0RDkiOiJqIj0KLCJcdUZG NEEiOiJqIiwiXHUwMTM1IjoiaiIsIlx1MDFGMCI6ImoiLCJcdTAyNDkiOiJqIiwiXHUyNERBIjoi ayIsIlx1RkY0QiI6PQoiayIsIlx1MUUzMSI6ImsiLCJcdTAxRTkiOiJrIiwiXHUxRTMzIjoiayIs Ilx1MDEzNyI6ImsiLCJcdTFFMzUiOiJrIiwiXHUwMTk9CjkiOiJrIiwiXHUyQzZBIjoiayIsIlx1 QTc0MSI6ImsiLCJcdUE3NDMiOiJrIiwiXHVBNzQ1IjoiayIsIlx1QTdBMyI6ImsiLCJcdT0KMjRE QiI6ImwiLCJcdUZGNEMiOiJsIiwiXHUwMTQwIjoibCIsIlx1MDEzQSI6ImwiLCJcdTAxM0UiOiJs IiwiXHUxRTM3IjoibCIsPQoiXHUxRTM5IjoibCIsIlx1MDEzQyI6ImwiLCJcdTFFM0QiOiJsIiwi XHUxRTNCIjoibCIsIlx1MDE3RiI6ImwiLCJcdTAxNDIiOiI9CmwiLCJcdTAxOUEiOiJsIiwiXHUw MjZCIjoibCIsIlx1MkM2MSI6ImwiLCJcdUE3NDkiOiJsIiwiXHVBNzgxIjoibCIsIlx1QTc0Nz0K IjoibCIsIlx1MDFDOSI6ImxqIiwiXHUyNERDIjoibSIsIlx1RkY0RCI6Im0iLCJcdTFFM0YiOiJt IiwiXHUxRTQxIjoibSIsIlx1PQoxRTQzIjoibSIsIlx1MDI3MSI6Im0iLCJcdTAyNkYiOiJtIiwi XHUyNEREIjoibiIsIlx1RkY0RSI6Im4iLCJcdTAxRjkiOiJuIiw9CiJcdTAxNDQiOiJuIiwiXHUw MEYxIjoibiIsIlx1MUU0NSI6Im4iLCJcdTAxNDgiOiJuIiwiXHUxRTQ3IjoibiIsIlx1MDE0NiI6 Ij0KbiIsIlx1MUU0QiI6Im4iLCJcdTFFNDkiOiJuIiwiXHUwMTlFIjoibiIsIlx1MDI3MiI6Im4i LCJcdTAxNDkiOiJuIiwiXHVBNzkxPQoiOiJuIiwiXHVBN0E1IjoibiIsIlx1MDFDQyI6Im5qIiwi XHUyNERFIjoibyIsIlx1RkY0RiI6Im8iLCJcdTAwRjIiOiJvIiwiXHU9CjAwRjMiOiJvIiwiXHUw MEY0IjoibyIsIlx1MUVEMyI6Im8iLCJcdTFFRDEiOiJvIiwiXHUxRUQ3IjoibyIsIlx1MUVENSI6 Im8iLD0KIlx1MDBGNSI6Im8iLCJcdTFFNEQiOiJvIiwiXHUwMjJEIjoibyIsIlx1MUU0RiI6Im8i LCJcdTAxNEQiOiJvIiwiXHUxRTUxIjoiPQpvIiwiXHUxRTUzIjoibyIsIlx1MDE0RiI6Im8iLCJc dTAyMkYiOiJvIiwiXHUwMjMxIjoibyIsIlx1MDBGNiI6Im8iLCJcdTAyMkI9CiI6Im8iLCJcdTFF Q0YiOiJvIiwiXHUwMTUxIjoibyIsIlx1MDFEMiI6Im8iLCJcdTAyMEQiOiJvIiwiXHUwMjBGIjoi byIsIlx1MD0KMUExIjoibyIsIlx1MUVERCI6Im8iLCJcdTFFREIiOiJvIiwiXHUxRUUxIjoibyIs Ilx1MUVERiI6Im8iLCJcdTFFRTMiOiJvIiwiPQpcdTFFQ0QiOiJvIiwiXHUxRUQ5IjoibyIsIlx1 MDFFQiI6Im8iLCJcdTAxRUQiOiJvIiwiXHUwMEY4IjoibyIsIlx1MDFGRiI6Im89CiIsIlx1MDI1 NCI6Im8iLCJcdUE3NEIiOiJvIiwiXHVBNzREIjoibyIsIlx1MDI3NSI6Im8iLCJcdTAxQTMiOiJv aSIsIlx1MDIyMz0KIjoib3UiLCJcdUE3NEYiOiJvbyIsIlx1MjRERiI6InAiLCJcdUZGNTAiOiJw IiwiXHUxRTU1IjoicCIsIlx1MUU1NyI6InAiLCJcPQp1MDFBNSI6InAiLCJcdTFEN0QiOiJwIiwi XHVBNzUxIjoicCIsIlx1QTc1MyI6InAiLCJcdUE3NTUiOiJwIiwiXHUyNEUwIjoicSI9CiwiXHVG RjUxIjoicSIsIlx1MDI0QiI6InEiLCJcdUE3NTciOiJxIiwiXHVBNzU5IjoicSIsIlx1MjRFMSI6 InIiLCJcdUZGNTIiOj0KInIiLCJcdTAxNTUiOiJyIiwiXHUxRTU5IjoiciIsIlx1MDE1OSI6InIi LCJcdTAyMTEiOiJyIiwiXHUwMjEzIjoiciIsIlx1MUU1PQpCIjoiciIsIlx1MUU1RCI6InIiLCJc dTAxNTciOiJyIiwiXHUxRTVGIjoiciIsIlx1MDI0RCI6InIiLCJcdTAyN0QiOiJyIiwiXHU9CkE3 NUIiOiJyIiwiXHVBN0E3IjoiciIsIlx1QTc4MyI6InIiLCJcdTI0RTIiOiJzIiwiXHVGRjUzIjoi cyIsIlx1MDBERiI6InMiLD0KIlx1MDE1QiI6InMiLCJcdTFFNjUiOiJzIiwiXHUwMTVEIjoicyIs Ilx1MUU2MSI6InMiLCJcdTAxNjEiOiJzIiwiXHUxRTY3IjoiPQpzIiwiXHUxRTYzIjoicyIsIlx1 MUU2OSI6InMiLCJcdTAyMTkiOiJzIiwiXHUwMTVGIjoicyIsIlx1MDIzRiI6InMiLCJcdUE3QTk9 CiI6InMiLCJcdUE3ODUiOiJzIiwiXHUxRTlCIjoicyIsIlx1MjRFMyI6InQiLCJcdUZGNTQiOiJ0 IiwiXHUxRTZCIjoidCIsIlx1MT0KRTk3IjoidCIsIlx1MDE2NSI6InQiLCJcdTFFNkQiOiJ0Iiwi XHUwMjFCIjoidCIsIlx1MDE2MyI6InQiLCJcdTFFNzEiOiJ0IiwiPQpcdTFFNkYiOiJ0IiwiXHUw MTY3IjoidCIsIlx1MDFBRCI6InQiLCJcdTAyODgiOiJ0IiwiXHUyQzY2IjoidCIsIlx1QTc4NyI6 InQ9CiIsIlx1QTcyOSI6InR6IiwiXHUyNEU0IjoidSIsIlx1RkY1NSI6InUiLCJcdTAwRjkiOiJ1 IiwiXHUwMEZBIjoidSIsIlx1MDBGQj0KIjoidSIsIlx1MDE2OSI6InUiLCJcdTFFNzkiOiJ1Iiwi XHUwMTZCIjoidSIsIlx1MUU3QiI6InUiLCJcdTAxNkQiOiJ1IiwiXHUwPQowRkMiOiJ1IiwiXHUw MURDIjoidSIsIlx1MDFEOCI6InUiLCJcdTAxRDYiOiJ1IiwiXHUwMURBIjoidSIsIlx1MUVFNyI6 InUiLCI9Clx1MDE2RiI6InUiLCJcdTAxNzEiOiJ1IiwiXHUwMUQ0IjoidSIsIlx1MDIxNSI6InUi LCJcdTAyMTciOiJ1IiwiXHUwMUIwIjoidT0KIiwiXHUxRUVCIjoidSIsIlx1MUVFOSI6InUiLCJc dTFFRUYiOiJ1IiwiXHUxRUVEIjoidSIsIlx1MUVGMSI6InUiLCJcdTFFRTUiPQo6InUiLCJcdTFF NzMiOiJ1IiwiXHUwMTczIjoidSIsIlx1MUU3NyI6InUiLCJcdTFFNzUiOiJ1IiwiXHUwMjg5Ijoi dSIsIlx1MjQ9CkU1IjoidiIsIlx1RkY1NiI6InYiLCJcdTFFN0QiOiJ2IiwiXHUxRTdGIjoidiIs Ilx1MDI4QiI6InYiLCJcdUE3NUYiOiJ2IiwiXD0KdTAyOEMiOiJ2IiwiXHVBNzYxIjoidnkiLCJc dTI0RTYiOiJ3IiwiXHVGRjU3IjoidyIsIlx1MUU4MSI6InciLCJcdTFFODMiOiJ3PQoiLCJcdTAx NzUiOiJ3IiwiXHUxRTg3IjoidyIsIlx1MUU4NSI6InciLCJcdTFFOTgiOiJ3IiwiXHUxRTg5Ijoi dyIsIlx1MkM3MyI9CjoidyIsIlx1MjRFNyI6IngiLCJcdUZGNTgiOiJ4IiwiXHUxRThCIjoieCIs Ilx1MUU4RCI6IngiLCJcdTI0RTgiOiJ5IiwiXHVGRj0KNTkiOiJ5IiwiXHUxRUYzIjoieSIsIlx1 MDBGRCI6InkiLCJcdTAxNzciOiJ5IiwiXHUxRUY5IjoieSIsIlx1MDIzMyI6InkiLCJcPQp1MUU4 RiI6InkiLCJcdTAwRkYiOiJ5IiwiXHUxRUY3IjoieSIsIlx1MUU5OSI6InkiLCJcdTFFRjUiOiJ5 IiwiXHUwMUI0IjoieSI9CiwiXHUwMjRGIjoieSIsIlx1MUVGRiI6InkiLCJcdTI0RTkiOiJ6Iiwi XHVGRjVBIjoieiIsIlx1MDE3QSI6InoiLCJcdTFFOTEiOj0KInoiLCJcdTAxN0MiOiJ6IiwiXHUw MTdFIjoieiIsIlx1MUU5MyI6InoiLCJcdTFFOTUiOiJ6IiwiXHUwMUI2IjoieiIsIlx1MDIyPQo1 IjoieiIsIlx1MDI0MCI6InoiLCJcdTJDNkMiOiJ6IiwiXHVBNzYzIjoieiJ9OworICAgIERJQUNS SVRJQ1MgPTNEIHsiXHUyNEI2IjoiQSIsIlx1RkYyMSI6IkEiLCJcdTAwQzAiOiJBIiwiXHUwMEMx IjoiQSIsIlw9CnUwMEMyIjoiQSIsIlx1MUVBNiI6IkEiLCJcdTFFQTQiOiJBIiwiXHUxRUFBIjoi QSIsIlx1MUVBOCI6IkEiLCJcdTAwQzMiOiJBIj0KLCJcdTAxMDAiOiJBIiwiXHUwMTAyIjoiQSIs Ilx1MUVCMCI6IkEiLCJcdTFFQUUiOiJBIiwiXHUxRUI0IjoiQSIsIlx1MUVCMiI6PQoiQSIsIlx1 MDIyNiI6IkEiLCJcdTAxRTAiOiJBIiwiXHUwMEM0IjoiQSIsIlx1MDFERSI6IkEiLCJcdTFFQTIi OiJBIiwiXHUwMEM9CjUiOiJBIiwiXHUwMUZBIjoiQSIsIlx1MDFDRCI6IkEiLCJcdTAyMDAiOiJB IiwiXHUwMjAyIjoiQSIsIlx1MUVBMCI6IkEiLCJcdT0KMUVBQyI6IkEiLCJcdTFFQjYiOiJBIiwi XHUxRTAwIjoiQSIsIlx1MDEwNCI6IkEiLCJcdTAyM0EiOiJBIiwiXHUyQzZGIjoiQSIsPQoiXHVB NzMyIjoiQUEiLCJcdTAwQzYiOiJBRSIsIlx1MDFGQyI6IkFFIiwiXHUwMUUyIjoiQUUiLCJcdUE3 MzQiOiJBTyIsIlx1QTc9CjM2IjoiQVUiLCJcdUE3MzgiOiJBViIsIlx1QTczQSI6IkFWIiwiXHVB NzNDIjoiQVkiLCJcdTI0QjciOiJCIiwiXHVGRjIyIjoiQj0KIiwiXHUxRTAyIjoiQiIsIlx1MUUw NCI6IkIiLCJcdTFFMDYiOiJCIiwiXHUwMjQzIjoiQiIsIlx1MDE4MiI6IkIiLCJcdTAxODEiPQo6 IkIiLCJcdTI0QjgiOiJDIiwiXHVGRjIzIjoiQyIsIlx1MDEwNiI6IkMiLCJcdTAxMDgiOiJDIiwi XHUwMTBBIjoiQyIsIlx1MDE9CjBDIjoiQyIsIlx1MDBDNyI6IkMiLCJcdTFFMDgiOiJDIiwiXHUw MTg3IjoiQyIsIlx1MDIzQiI6IkMiLCJcdUE3M0UiOiJDIiwiXD0KdTI0QjkiOiJEIiwiXHVGRjI0 IjoiRCIsIlx1MUUwQSI6IkQiLCJcdTAxMEUiOiJEIiwiXHUxRTBDIjoiRCIsIlx1MUUxMCI6IkQi PQosIlx1MUUxMiI6IkQiLCJcdTFFMEUiOiJEIiwiXHUwMTEwIjoiRCIsIlx1MDE4QiI6IkQiLCJc dTAxOEEiOiJEIiwiXHUwMTg5Ijo9CiJEIiwiXHVBNzc5IjoiRCIsIlx1MDFGMSI6IkRaIiwiXHUw MUM0IjoiRFoiLCJcdTAxRjIiOiJEeiIsIlx1MDFDNSI6IkR6IiwiXD0KdTI0QkEiOiJFIiwiXHVG RjI1IjoiRSIsIlx1MDBDOCI6IkUiLCJcdTAwQzkiOiJFIiwiXHUwMENBIjoiRSIsIlx1MUVDMCI6 IkUiPQosIlx1MUVCRSI6IkUiLCJcdTFFQzQiOiJFIiwiXHUxRUMyIjoiRSIsIlx1MUVCQyI6IkUi LCJcdTAxMTIiOiJFIiwiXHUxRTE0Ijo9CiJFIiwiXHUxRTE2IjoiRSIsIlx1MDExNCI6IkUiLCJc dTAxMTYiOiJFIiwiXHUwMENCIjoiRSIsIlx1MUVCQSI6IkUiLCJcdTAxMT0KQSI6IkUiLCJcdTAy MDQiOiJFIiwiXHUwMjA2IjoiRSIsIlx1MUVCOCI6IkUiLCJcdTFFQzYiOiJFIiwiXHUwMjI4Ijoi RSIsIlx1PQoxRTFDIjoiRSIsIlx1MDExOCI6IkUiLCJcdTFFMTgiOiJFIiwiXHUxRTFBIjoiRSIs Ilx1MDE5MCI6IkUiLCJcdTAxOEUiOiJFIiw9CiJcdTI0QkIiOiJGIiwiXHVGRjI2IjoiRiIsIlx1 MUUxRSI6IkYiLCJcdTAxOTEiOiJGIiwiXHVBNzdCIjoiRiIsIlx1MjRCQyI6Ij0KRyIsIlx1RkYy NyI6IkciLCJcdTAxRjQiOiJHIiwiXHUwMTFDIjoiRyIsIlx1MUUyMCI6IkciLCJcdTAxMUUiOiJH IiwiXHUwMTIwPQoiOiJHIiwiXHUwMUU2IjoiRyIsIlx1MDEyMiI6IkciLCJcdTAxRTQiOiJHIiwi XHUwMTkzIjoiRyIsIlx1QTdBMCI6IkciLCJcdUE9Cjc3RCI6IkciLCJcdUE3N0UiOiJHIiwiXHUy NEJEIjoiSCIsIlx1RkYyOCI6IkgiLCJcdTAxMjQiOiJIIiwiXHUxRTIyIjoiSCIsIj0KXHUxRTI2 IjoiSCIsIlx1MDIxRSI6IkgiLCJcdTFFMjQiOiJIIiwiXHUxRTI4IjoiSCIsIlx1MUUyQSI6Ikgi LCJcdTAxMjYiOiJIPQoiLCJcdTJDNjciOiJIIiwiXHUyQzc1IjoiSCIsIlx1QTc4RCI6IkgiLCJc dTI0QkUiOiJJIiwiXHVGRjI5IjoiSSIsIlx1MDBDQyI9CjoiSSIsIlx1MDBDRCI6IkkiLCJcdTAw Q0UiOiJJIiwiXHUwMTI4IjoiSSIsIlx1MDEyQSI6IkkiLCJcdTAxMkMiOiJJIiwiXHUwMT0KMzAi OiJJIiwiXHUwMENGIjoiSSIsIlx1MUUyRSI6IkkiLCJcdTFFQzgiOiJJIiwiXHUwMUNGIjoiSSIs Ilx1MDIwOCI6IkkiLCJcPQp1MDIwQSI6IkkiLCJcdTFFQ0EiOiJJIiwiXHUwMTJFIjoiSSIsIlx1 MUUyQyI6IkkiLCJcdTAxOTciOiJJIiwiXHUyNEJGIjoiSiI9CiwiXHVGRjJBIjoiSiIsIlx1MDEz NCI6IkoiLCJcdTAyNDgiOiJKIiwiXHUyNEMwIjoiSyIsIlx1RkYyQiI6IksiLCJcdTFFMzAiOj0K IksiLCJcdTAxRTgiOiJLIiwiXHUxRTMyIjoiSyIsIlx1MDEzNiI6IksiLCJcdTFFMzQiOiJLIiwi XHUwMTk4IjoiSyIsIlx1MkM2PQo5IjoiSyIsIlx1QTc0MCI6IksiLCJcdUE3NDIiOiJLIiwiXHVB NzQ0IjoiSyIsIlx1QTdBMiI6IksiLCJcdTI0QzEiOiJMIiwiXHU9CkZGMkMiOiJMIiwiXHUwMTNG IjoiTCIsIlx1MDEzOSI6IkwiLCJcdTAxM0QiOiJMIiwiXHUxRTM2IjoiTCIsIlx1MUUzOCI6Ikwi LD0KIlx1MDEzQiI6IkwiLCJcdTFFM0MiOiJMIiwiXHUxRTNBIjoiTCIsIlx1MDE0MSI6IkwiLCJc dTAyM0QiOiJMIiwiXHUyQzYyIjoiPQpMIiwiXHUyQzYwIjoiTCIsIlx1QTc0OCI6IkwiLCJcdUE3 NDYiOiJMIiwiXHVBNzgwIjoiTCIsIlx1MDFDNyI6IkxKIiwiXHUwMUM9CjgiOiJMaiIsIlx1MjRD MiI6Ik0iLCJcdUZGMkQiOiJNIiwiXHUxRTNFIjoiTSIsIlx1MUU0MCI6Ik0iLCJcdTFFNDIiOiJN IiwiXD0KdTJDNkUiOiJNIiwiXHUwMTlDIjoiTSIsIlx1MjRDMyI6Ik4iLCJcdUZGMkUiOiJOIiwi XHUwMUY4IjoiTiIsIlx1MDE0MyI6Ik4iPQosIlx1MDBEMSI6Ik4iLCJcdTFFNDQiOiJOIiwiXHUw MTQ3IjoiTiIsIlx1MUU0NiI6Ik4iLCJcdTAxNDUiOiJOIiwiXHUxRTRBIjo9CiJOIiwiXHUxRTQ4 IjoiTiIsIlx1MDIyMCI6Ik4iLCJcdTAxOUQiOiJOIiwiXHVBNzkwIjoiTiIsIlx1QTdBNCI6Ik4i LCJcdTAxQz0KQSI6Ik5KIiwiXHUwMUNCIjoiTmoiLCJcdTI0QzQiOiJPIiwiXHVGRjJGIjoiTyIs Ilx1MDBEMiI6Ik8iLCJcdTAwRDMiOiJPIiwiPQpcdTAwRDQiOiJPIiwiXHUxRUQyIjoiTyIsIlx1 MUVEMCI6Ik8iLCJcdTFFRDYiOiJPIiwiXHUxRUQ0IjoiTyIsIlx1MDBENSI6Ik89CiIsIlx1MUU0 QyI6Ik8iLCJcdTAyMkMiOiJPIiwiXHUxRTRFIjoiTyIsIlx1MDE0QyI6Ik8iLCJcdTFFNTAiOiJP IiwiXHUxRTUyIj0KOiJPIiwiXHUwMTRFIjoiTyIsIlx1MDIyRSI6Ik8iLCJcdTAyMzAiOiJPIiwi XHUwMEQ2IjoiTyIsIlx1MDIyQSI6Ik8iLCJcdTFFPQpDRSI6Ik8iLCJcdTAxNTAiOiJPIiwiXHUw MUQxIjoiTyIsIlx1MDIwQyI6Ik8iLCJcdTAyMEUiOiJPIiwiXHUwMUEwIjoiTyIsIlw9CnUxRURD IjoiTyIsIlx1MUVEQSI6Ik8iLCJcdTFFRTAiOiJPIiwiXHUxRURFIjoiTyIsIlx1MUVFMiI6Ik8i LCJcdTFFQ0MiOiJPIj0KLCJcdTFFRDgiOiJPIiwiXHUwMUVBIjoiTyIsIlx1MDFFQyI6Ik8iLCJc dTAwRDgiOiJPIiwiXHUwMUZFIjoiTyIsIlx1MDE4NiI6PQoiTyIsIlx1MDE5RiI6Ik8iLCJcdUE3 NEEiOiJPIiwiXHVBNzRDIjoiTyIsIlx1MDFBMiI6Ik9JIiwiXHVBNzRFIjoiT08iLCJcdTA9CjIy MiI6Ik9VIiwiXHUyNEM1IjoiUCIsIlx1RkYzMCI6IlAiLCJcdTFFNTQiOiJQIiwiXHUxRTU2Ijoi UCIsIlx1MDFBNCI6IlAiLD0KIlx1MkM2MyI6IlAiLCJcdUE3NTAiOiJQIiwiXHVBNzUyIjoiUCIs Ilx1QTc1NCI6IlAiLCJcdTI0QzYiOiJRIiwiXHVGRjMxIjoiPQpRIiwiXHVBNzU2IjoiUSIsIlx1 QTc1OCI6IlEiLCJcdTAyNEEiOiJRIiwiXHUyNEM3IjoiUiIsIlx1RkYzMiI6IlIiLCJcdTAxNTQ9 CiI6IlIiLCJcdTFFNTgiOiJSIiwiXHUwMTU4IjoiUiIsIlx1MDIxMCI6IlIiLCJcdTAyMTIiOiJS IiwiXHUxRTVBIjoiUiIsIlx1MT0KRTVDIjoiUiIsIlx1MDE1NiI6IlIiLCJcdTFFNUUiOiJSIiwi XHUwMjRDIjoiUiIsIlx1MkM2NCI6IlIiLCJcdUE3NUEiOiJSIiwiPQpcdUE3QTYiOiJSIiwiXHVB NzgyIjoiUiIsIlx1MjRDOCI6IlMiLCJcdUZGMzMiOiJTIiwiXHUxRTlFIjoiUyIsIlx1MDE1QSI6 IlM9CiIsIlx1MUU2NCI6IlMiLCJcdTAxNUMiOiJTIiwiXHUxRTYwIjoiUyIsIlx1MDE2MCI6IlMi LCJcdTFFNjYiOiJTIiwiXHUxRTYyIj0KOiJTIiwiXHUxRTY4IjoiUyIsIlx1MDIxOCI6IlMiLCJc dTAxNUUiOiJTIiwiXHUyQzdFIjoiUyIsIlx1QTdBOCI6IlMiLCJcdUE3PQo4NCI6IlMiLCJcdTI0 QzkiOiJUIiwiXHVGRjM0IjoiVCIsIlx1MUU2QSI6IlQiLCJcdTAxNjQiOiJUIiwiXHUxRTZDIjoi VCIsIlw9CnUwMjFBIjoiVCIsIlx1MDE2MiI6IlQiLCJcdTFFNzAiOiJUIiwiXHUxRTZFIjoiVCIs Ilx1MDE2NiI6IlQiLCJcdTAxQUMiOiJUIj0KLCJcdTAxQUUiOiJUIiwiXHUwMjNFIjoiVCIsIlx1 QTc4NiI6IlQiLCJcdUE3MjgiOiJUWiIsIlx1MjRDQSI6IlUiLCJcdUZGMzUiPQo6IlUiLCJcdTAw RDkiOiJVIiwiXHUwMERBIjoiVSIsIlx1MDBEQiI6IlUiLCJcdTAxNjgiOiJVIiwiXHUxRTc4Ijoi VSIsIlx1MDE9CjZBIjoiVSIsIlx1MUU3QSI6IlUiLCJcdTAxNkMiOiJVIiwiXHUwMERDIjoiVSIs Ilx1MDFEQiI6IlUiLCJcdTAxRDciOiJVIiwiXD0KdTAxRDUiOiJVIiwiXHUwMUQ5IjoiVSIsIlx1 MUVFNiI6IlUiLCJcdTAxNkUiOiJVIiwiXHUwMTcwIjoiVSIsIlx1MDFEMyI6IlUiPQosIlx1MDIx NCI6IlUiLCJcdTAyMTYiOiJVIiwiXHUwMUFGIjoiVSIsIlx1MUVFQSI6IlUiLCJcdTFFRTgiOiJV IiwiXHUxRUVFIjo9CiJVIiwiXHUxRUVDIjoiVSIsIlx1MUVGMCI6IlUiLCJcdTFFRTQiOiJVIiwi XHUxRTcyIjoiVSIsIlx1MDE3MiI6IlUiLCJcdTFFNz0KNiI6IlUiLCJcdTFFNzQiOiJVIiwiXHUw MjQ0IjoiVSIsIlx1MjRDQiI6IlYiLCJcdUZGMzYiOiJWIiwiXHUxRTdDIjoiViIsIlx1PQoxRTdF IjoiViIsIlx1MDFCMiI6IlYiLCJcdUE3NUUiOiJWIiwiXHUwMjQ1IjoiViIsIlx1QTc2MCI6IlZZ IiwiXHUyNENDIjoiVyI9CiwiXHVGRjM3IjoiVyIsIlx1MUU4MCI6IlciLCJcdTFFODIiOiJXIiwi XHUwMTc0IjoiVyIsIlx1MUU4NiI6IlciLCJcdTFFODQiOj0KIlciLCJcdTFFODgiOiJXIiwiXHUy QzcyIjoiVyIsIlx1MjRDRCI6IlgiLCJcdUZGMzgiOiJYIiwiXHUxRThBIjoiWCIsIlx1MUU4PQpD IjoiWCIsIlx1MjRDRSI6IlkiLCJcdUZGMzkiOiJZIiwiXHUxRUYyIjoiWSIsIlx1MDBERCI6Ilki LCJcdTAxNzYiOiJZIiwiXHU9CjFFRjgiOiJZIiwiXHUwMjMyIjoiWSIsIlx1MUU4RSI6IlkiLCJc dTAxNzgiOiJZIiwiXHUxRUY2IjoiWSIsIlx1MUVGNCI6IlkiLD0KIlx1MDFCMyI6IlkiLCJcdTAy NEUiOiJZIiwiXHUxRUZFIjoiWSIsIlx1MjRDRiI6IloiLCJcdUZGM0EiOiJaIiwiXHUwMTc5Ijoi PQpaIiwiXHUxRTkwIjoiWiIsIlx1MDE3QiI6IloiLCJcdTAxN0QiOiJaIiwiXHUxRTkyIjoiWiIs Ilx1MUU5NCI6IloiLCJcdTAxQjU9CiI6IloiLCJcdTAyMjQiOiJaIiwiXHUyQzdGIjoiWiIsIlx1 MkM2QiI6IloiLCJcdUE3NjIiOiJaIiwiXHUyNEQwIjoiYSIsIlx1Rj0KRjQxIjoiYSIsIlx1MUU5 QSI6ImEiLCJcdTAwRTAiOiJhIiwiXHUwMEUxIjoiYSIsIlx1MDBFMiI6ImEiLCJcdTFFQTciOiJh IiwiPQpcdTFFQTUiOiJhIiwiXHUxRUFCIjoiYSIsIlx1MUVBOSI6ImEiLCJcdTAwRTMiOiJhIiwi XHUwMTAxIjoiYSIsIlx1MDEwMyI6ImE9CiIsIlx1MUVCMSI6ImEiLCJcdTFFQUYiOiJhIiwiXHUx RUI1IjoiYSIsIlx1MUVCMyI6ImEiLCJcdTAyMjciOiJhIiwiXHUwMUUxIj0KOiJhIiwiXHUwMEU0 IjoiYSIsIlx1MDFERiI6ImEiLCJcdTFFQTMiOiJhIiwiXHUwMEU1IjoiYSIsIlx1MDFGQiI6ImEi LCJcdTAxPQpDRSI6ImEiLCJcdTAyMDEiOiJhIiwiXHUwMjAzIjoiYSIsIlx1MUVBMSI6ImEiLCJc dTFFQUQiOiJhIiwiXHUxRUI3IjoiYSIsIlw9CnUxRTAxIjoiYSIsIlx1MDEwNSI6ImEiLCJcdTJD NjUiOiJhIiwiXHUwMjUwIjoiYSIsIlx1QTczMyI6ImFhIiwiXHUwMEU2IjoiYT0KZSIsIlx1MDFG RCI6ImFlIiwiXHUwMUUzIjoiYWUiLCJcdUE3MzUiOiJhbyIsIlx1QTczNyI6ImF1IiwiXHVBNzM5 IjoiYXYiLCJcPQp1QTczQiI6ImF2IiwiXHVBNzNEIjoiYXkiLCJcdTI0RDEiOiJiIiwiXHVGRjQy IjoiYiIsIlx1MUUwMyI6ImIiLCJcdTFFMDUiOiI9CmIiLCJcdTFFMDciOiJiIiwiXHUwMTgwIjoi YiIsIlx1MDE4MyI6ImIiLCJcdTAyNTMiOiJiIiwiXHUyNEQyIjoiYyIsIlx1RkY0Mz0KIjoiYyIs Ilx1MDEwNyI6ImMiLCJcdTAxMDkiOiJjIiwiXHUwMTBCIjoiYyIsIlx1MDEwRCI6ImMiLCJcdTAw RTciOiJjIiwiXHUxPQpFMDkiOiJjIiwiXHUwMTg4IjoiYyIsIlx1MDIzQyI6ImMiLCJcdUE3M0Yi OiJjIiwiXHUyMTg0IjoiYyIsIlx1MjREMyI6ImQiLCI9Clx1RkY0NCI6ImQiLCJcdTFFMEIiOiJk IiwiXHUwMTBGIjoiZCIsIlx1MUUwRCI6ImQiLCJcdTFFMTEiOiJkIiwiXHUxRTEzIjoiZD0KIiwi XHUxRTBGIjoiZCIsIlx1MDExMSI6ImQiLCJcdTAxOEMiOiJkIiwiXHUwMjU2IjoiZCIsIlx1MDI1 NyI6ImQiLCJcdUE3N0EiPQo6ImQiLCJcdTAxRjMiOiJkeiIsIlx1MDFDNiI6ImR6IiwiXHUyNEQ0 IjoiZSIsIlx1RkY0NSI6ImUiLCJcdTAwRTgiOiJlIiwiXHU9CjAwRTkiOiJlIiwiXHUwMEVBIjoi ZSIsIlx1MUVDMSI6ImUiLCJcdTFFQkYiOiJlIiwiXHUxRUM1IjoiZSIsIlx1MUVDMyI6ImUiLD0K Ilx1MUVCRCI6ImUiLCJcdTAxMTMiOiJlIiwiXHUxRTE1IjoiZSIsIlx1MUUxNyI6ImUiLCJcdTAx MTUiOiJlIiwiXHUwMTE3IjoiPQplIiwiXHUwMEVCIjoiZSIsIlx1MUVCQiI6ImUiLCJcdTAxMUIi OiJlIiwiXHUwMjA1IjoiZSIsIlx1MDIwNyI6ImUiLCJcdTFFQjk9CiI6ImUiLCJcdTFFQzciOiJl IiwiXHUwMjI5IjoiZSIsIlx1MUUxRCI6ImUiLCJcdTAxMTkiOiJlIiwiXHUxRTE5IjoiZSIsIlx1 MT0KRTFCIjoiZSIsIlx1MDI0NyI6ImUiLCJcdTAyNUIiOiJlIiwiXHUwMUREIjoiZSIsIlx1MjRE NSI6ImYiLCJcdUZGNDYiOiJmIiwiPQpcdTFFMUYiOiJmIiwiXHUwMTkyIjoiZiIsIlx1QTc3QyI6 ImYiLCJcdTI0RDYiOiJnIiwiXHVGRjQ3IjoiZyIsIlx1MDFGNSI6Imc9CiIsIlx1MDExRCI6Imci LCJcdTFFMjEiOiJnIiwiXHUwMTFGIjoiZyIsIlx1MDEyMSI6ImciLCJcdTAxRTciOiJnIiwiXHUw MTIzIj0KOiJnIiwiXHUwMUU1IjoiZyIsIlx1MDI2MCI6ImciLCJcdUE3QTEiOiJnIiwiXHUxRDc5 IjoiZyIsIlx1QTc3RiI6ImciLCJcdTI0PQpENyI6ImgiLCJcdUZGNDgiOiJoIiwiXHUwMTI1Ijoi aCIsIlx1MUUyMyI6ImgiLCJcdTFFMjciOiJoIiwiXHUwMjFGIjoiaCIsIlw9CnUxRTI1IjoiaCIs Ilx1MUUyOSI6ImgiLCJcdTFFMkIiOiJoIiwiXHUxRTk2IjoiaCIsIlx1MDEyNyI6ImgiLCJcdTJD NjgiOiJoIj0KLCJcdTJDNzYiOiJoIiwiXHUwMjY1IjoiaCIsIlx1MDE5NSI6Imh2IiwiXHUyNEQ4 IjoiaSIsIlx1RkY0OSI6ImkiLCJcdTAwRUMiPQo6ImkiLCJcdTAwRUQiOiJpIiwiXHUwMEVFIjoi aSIsIlx1MDEyOSI6ImkiLCJcdTAxMkIiOiJpIiwiXHUwMTJEIjoiaSIsIlx1MDA9CkVGIjoiaSIs Ilx1MUUyRiI6ImkiLCJcdTFFQzkiOiJpIiwiXHUwMUQwIjoiaSIsIlx1MDIwOSI6ImkiLCJcdTAy MEIiOiJpIiwiXD0KdTFFQ0IiOiJpIiwiXHUwMTJGIjoiaSIsIlx1MUUyRCI6ImkiLCJcdTAyNjgi OiJpIiwiXHUwMTMxIjoiaSIsIlx1MjREOSI6ImoiPQosIlx1RkY0QSI6ImoiLCJcdTAxMzUiOiJq IiwiXHUwMUYwIjoiaiIsIlx1MDI0OSI6ImoiLCJcdTI0REEiOiJrIiwiXHVGRjRCIjo9CiJrIiwi XHUxRTMxIjoiayIsIlx1MDFFOSI6ImsiLCJcdTFFMzMiOiJrIiwiXHUwMTM3IjoiayIsIlx1MUUz NSI6ImsiLCJcdTAxOT0KOSI6ImsiLCJcdTJDNkEiOiJrIiwiXHVBNzQxIjoiayIsIlx1QTc0MyI6 ImsiLCJcdUE3NDUiOiJrIiwiXHVBN0EzIjoiayIsIlx1PQoyNERCIjoibCIsIlx1RkY0QyI6Imwi LCJcdTAxNDAiOiJsIiwiXHUwMTNBIjoibCIsIlx1MDEzRSI6ImwiLCJcdTFFMzciOiJsIiw9CiJc dTFFMzkiOiJsIiwiXHUwMTNDIjoibCIsIlx1MUUzRCI6ImwiLCJcdTFFM0IiOiJsIiwiXHUwMTdG IjoibCIsIlx1MDE0MiI6Ij0KbCIsIlx1MDE5QSI6ImwiLCJcdTAyNkIiOiJsIiwiXHUyQzYxIjoi bCIsIlx1QTc0OSI6ImwiLCJcdUE3ODEiOiJsIiwiXHVBNzQ3PQoiOiJsIiwiXHUwMUM5IjoibGoi LCJcdTI0REMiOiJtIiwiXHVGRjREIjoibSIsIlx1MUUzRiI6Im0iLCJcdTFFNDEiOiJtIiwiXHU9 CjFFNDMiOiJtIiwiXHUwMjcxIjoibSIsIlx1MDI2RiI6Im0iLCJcdTI0REQiOiJuIiwiXHVGRjRF IjoibiIsIlx1MDFGOSI6Im4iLD0KIlx1MDE0NCI6Im4iLCJcdTAwRjEiOiJuIiwiXHUxRTQ1Ijoi biIsIlx1MDE0OCI6Im4iLCJcdTFFNDciOiJuIiwiXHUwMTQ2IjoiPQpuIiwiXHUxRTRCIjoibiIs Ilx1MUU0OSI6Im4iLCJcdTAxOUUiOiJuIiwiXHUwMjcyIjoibiIsIlx1MDE0OSI6Im4iLCJcdUE3 OTE9CiI6Im4iLCJcdUE3QTUiOiJuIiwiXHUwMUNDIjoibmoiLCJcdTI0REUiOiJvIiwiXHVGRjRG IjoibyIsIlx1MDBGMiI6Im8iLCJcdT0KMDBGMyI6Im8iLCJcdTAwRjQiOiJvIiwiXHUxRUQzIjoi byIsIlx1MUVEMSI6Im8iLCJcdTFFRDciOiJvIiwiXHUxRUQ1IjoibyIsPQoiXHUwMEY1IjoibyIs Ilx1MUU0RCI6Im8iLCJcdTAyMkQiOiJvIiwiXHUxRTRGIjoibyIsIlx1MDE0RCI6Im8iLCJcdTFF NTEiOiI9Cm8iLCJcdTFFNTMiOiJvIiwiXHUwMTRGIjoibyIsIlx1MDIyRiI6Im8iLCJcdTAyMzEi OiJvIiwiXHUwMEY2IjoibyIsIlx1MDIyQj0KIjoibyIsIlx1MUVDRiI6Im8iLCJcdTAxNTEiOiJv IiwiXHUwMUQyIjoibyIsIlx1MDIwRCI6Im8iLCJcdTAyMEYiOiJvIiwiXHUwPQoxQTEiOiJvIiwi XHUxRUREIjoibyIsIlx1MUVEQiI6Im8iLCJcdTFFRTEiOiJvIiwiXHUxRURGIjoibyIsIlx1MUVF MyI6Im8iLCI9Clx1MUVDRCI6Im8iLCJcdTFFRDkiOiJvIiwiXHUwMUVCIjoibyIsIlx1MDFFRCI6 Im8iLCJcdTAwRjgiOiJvIiwiXHUwMUZGIjoibz0KIiwiXHUwMjU0IjoibyIsIlx1QTc0QiI6Im8i LCJcdUE3NEQiOiJvIiwiXHUwMjc1IjoibyIsIlx1MDFBMyI6Im9pIiwiXHUwMjIzPQoiOiJvdSIs Ilx1QTc0RiI6Im9vIiwiXHUyNERGIjoicCIsIlx1RkY1MCI6InAiLCJcdTFFNTUiOiJwIiwiXHUx RTU3IjoicCIsIlw9CnUwMUE1IjoicCIsIlx1MUQ3RCI6InAiLCJcdUE3NTEiOiJwIiwiXHVBNzUz IjoicCIsIlx1QTc1NSI6InAiLCJcdTI0RTAiOiJxIj0KLCJcdUZGNTEiOiJxIiwiXHUwMjRCIjoi cSIsIlx1QTc1NyI6InEiLCJcdUE3NTkiOiJxIiwiXHUyNEUxIjoiciIsIlx1RkY1MiI6PQoiciIs Ilx1MDE1NSI6InIiLCJcdTFFNTkiOiJyIiwiXHUwMTU5IjoiciIsIlx1MDIxMSI6InIiLCJcdTAy MTMiOiJyIiwiXHUxRTU9CkIiOiJyIiwiXHUxRTVEIjoiciIsIlx1MDE1NyI6InIiLCJcdTFFNUYi OiJyIiwiXHUwMjREIjoiciIsIlx1MDI3RCI6InIiLCJcdT0KQTc1QiI6InIiLCJcdUE3QTciOiJy IiwiXHVBNzgzIjoiciIsIlx1MjRFMiI6InMiLCJcdUZGNTMiOiJzIiwiXHUwMERGIjoicyIsPQoi XHUwMTVCIjoicyIsIlx1MUU2NSI6InMiLCJcdTAxNUQiOiJzIiwiXHUxRTYxIjoicyIsIlx1MDE2 MSI6InMiLCJcdTFFNjciOiI9CnMiLCJcdTFFNjMiOiJzIiwiXHUxRTY5IjoicyIsIlx1MDIxOSI6 InMiLCJcdTAxNUYiOiJzIiwiXHUwMjNGIjoicyIsIlx1QTdBOT0KIjoicyIsIlx1QTc4NSI6InMi LCJcdTFFOUIiOiJzIiwiXHUyNEUzIjoidCIsIlx1RkY1NCI6InQiLCJcdTFFNkIiOiJ0IiwiXHUx PQpFOTciOiJ0IiwiXHUwMTY1IjoidCIsIlx1MUU2RCI6InQiLCJcdTAyMUIiOiJ0IiwiXHUwMTYz IjoidCIsIlx1MUU3MSI6InQiLCI9Clx1MUU2RiI6InQiLCJcdTAxNjciOiJ0IiwiXHUwMUFEIjoi dCIsIlx1MDI4OCI6InQiLCJcdTJDNjYiOiJ0IiwiXHVBNzg3IjoidD0KIiwiXHVBNzI5IjoidHoi LCJcdTI0RTQiOiJ1IiwiXHVGRjU1IjoidSIsIlx1MDBGOSI6InUiLCJcdTAwRkEiOiJ1IiwiXHUw MEZCPQoiOiJ1IiwiXHUwMTY5IjoidSIsIlx1MUU3OSI6InUiLCJcdTAxNkIiOiJ1IiwiXHUxRTdC IjoidSIsIlx1MDE2RCI6InUiLCJcdTA9CjBGQyI6InUiLCJcdTAxREMiOiJ1IiwiXHUwMUQ4Ijoi dSIsIlx1MDFENiI6InUiLCJcdTAxREEiOiJ1IiwiXHUxRUU3IjoidSIsIj0KXHUwMTZGIjoidSIs Ilx1MDE3MSI6InUiLCJcdTAxRDQiOiJ1IiwiXHUwMjE1IjoidSIsIlx1MDIxNyI6InUiLCJcdTAx QjAiOiJ1PQoiLCJcdTFFRUIiOiJ1IiwiXHUxRUU5IjoidSIsIlx1MUVFRiI6InUiLCJcdTFFRUQi OiJ1IiwiXHUxRUYxIjoidSIsIlx1MUVFNSI9CjoidSIsIlx1MUU3MyI6InUiLCJcdTAxNzMiOiJ1 IiwiXHUxRTc3IjoidSIsIlx1MUU3NSI6InUiLCJcdTAyODkiOiJ1IiwiXHUyND0KRTUiOiJ2Iiwi XHVGRjU2IjoidiIsIlx1MUU3RCI6InYiLCJcdTFFN0YiOiJ2IiwiXHUwMjhCIjoidiIsIlx1QTc1 RiI6InYiLCJcPQp1MDI4QyI6InYiLCJcdUE3NjEiOiJ2eSIsIlx1MjRFNiI6InciLCJcdUZGNTci OiJ3IiwiXHUxRTgxIjoidyIsIlx1MUU4MyI6Inc9CiIsIlx1MDE3NSI6InciLCJcdTFFODciOiJ3 IiwiXHUxRTg1IjoidyIsIlx1MUU5OCI6InciLCJcdTFFODkiOiJ3IiwiXHUyQzczIj0KOiJ3Iiwi XHUyNEU3IjoieCIsIlx1RkY1OCI6IngiLCJcdTFFOEIiOiJ4IiwiXHUxRThEIjoieCIsIlx1MjRF OCI6InkiLCJcdUZGPQo1OSI6InkiLCJcdTFFRjMiOiJ5IiwiXHUwMEZEIjoieSIsIlx1MDE3NyI6 InkiLCJcdTFFRjkiOiJ5IiwiXHUwMjMzIjoieSIsIlw9CnUxRThGIjoieSIsIlx1MDBGRiI6Inki LCJcdTFFRjciOiJ5IiwiXHUxRTk5IjoieSIsIlx1MUVGNSI6InkiLCJcdTAxQjQiOiJ5Ij0KLCJc dTAyNEYiOiJ5IiwiXHUxRUZGIjoieSIsIlx1MjRFOSI6InoiLCJcdUZGNUEiOiJ6IiwiXHUwMTdB IjoieiIsIlx1MUU5MSI6PQoieiIsIlx1MDE3QyI6InoiLCJcdTAxN0UiOiJ6IiwiXHUxRTkzIjoi eiIsIlx1MUU5NSI6InoiLCJcdTAxQjYiOiJ6IiwiXHUwMjI9CjUiOiJ6IiwiXHUwMjQwIjoieiIs Ilx1MkM2QyI6InoiLCJcdUE3NjMiOiJ6IiwiXHUwMzg2IjoiXHUwMzkxIiwiXHUwMzg4IjoiXD0K dTAzOTUiLCJcdTAzODkiOiJcdTAzOTciLCJcdTAzOEEiOiJcdTAzOTkiLCJcdTAzQUEiOiJcdTAz OTkiLCJcdTAzOEMiOiJcdTAzPQo5RiIsIlx1MDM4RSI6Ilx1MDNBNSIsIlx1MDNBQiI6Ilx1MDNB NSIsIlx1MDM4RiI6Ilx1MDNBOSIsIlx1MDNBQyI6Ilx1MDNCMSI9CiwiXHUwM0FEIjoiXHUwM0I1 IiwiXHUwM0FFIjoiXHUwM0I3IiwiXHUwM0FGIjoiXHUwM0I5IiwiXHUwM0NBIjoiXHUwM0I5Iiwi XD0KdTAzOTAiOiJcdTAzQjkiLCJcdTAzQ0MiOiJcdTAzQkYiLCJcdTAzQ0QiOiJcdTAzQzUiLCJc dTAzQ0IiOiJcdTAzQzUiLCJcdTAzPQpCMCI6Ilx1MDNDNSIsIlx1MDNDOSI6Ilx1MDNDOSIsIlx1 MDNDMiI6Ilx1MDNDMyJ9Owo9MjAKICAgICAkZG9jdW1lbnQgPTNEICQoZG9jdW1lbnQpOwo9MjAK ICAgICBuZXh0VWlkPTNEKGZ1bmN0aW9uKCkgeyB2YXIgY291bnRlcj0zRDE7IHJldHVybiBmdW5j dGlvbigpIHsgcmV0dXJuIGNvPQp1bnRlcisrOyB9OyB9KCkpOwo9MjAKPTIwCisgICAgZnVuY3Rp b24gcmVpbnNlcnRFbGVtZW50KGVsZW1lbnQpIHsKKyAgICAgICAgdmFyIHBsYWNlaG9sZGVyID0z RCAkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKSk7CisKKyAgICAgICAgZWxlbWVudC5iZWZv cmUocGxhY2Vob2xkZXIpOworICAgICAgICBwbGFjZWhvbGRlci5iZWZvcmUoZWxlbWVudCk7Cisg ICAgICAgIHBsYWNlaG9sZGVyLnJlbW92ZSgpOworICAgIH0KKwogICAgIGZ1bmN0aW9uIHN0cmlw RGlhY3JpdGljcyhzdHIpIHsKLSAgICAgICAgdmFyIHJldCwgaSwgbCwgYzsKLQotICAgICAgICBp ZiAoIXN0ciB8fCBzdHIubGVuZ3RoIDwgMSkgcmV0dXJuIHN0cjsKLQotICAgICAgICByZXQgPTNE ICIiOwotICAgICAgICBmb3IgKGkgPTNEIDAsIGwgPTNEIHN0ci5sZW5ndGg7IGkgPCBsOyBpKysp IHsKLSAgICAgICAgICAgIGMgPTNEIHN0ci5jaGFyQXQoaSk7Ci0gICAgICAgICAgICByZXQgKz0z RCBESUFDUklUSUNTW2NdIHx8IGM7CisgICAgICAgIC8vIFVzZWQgJ3VuaSByYW5nZSArIG5hbWVk IGZ1bmN0aW9uJyBmcm9tIGh0dHA6Ly9qc3BlcmYuY29tL2RpYWNyaT0KdGljcy8xOAorICAgICAg ICBmdW5jdGlvbiBtYXRjaChhKSB7CisgICAgICAgICAgICByZXR1cm4gRElBQ1JJVElDU1thXSB8 fCBhOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXQ7CisKKyAgICAgICAgcmV0dXJuIHN0 ci5yZXBsYWNlKC9bXlx1MDAwMC1cdTAwN0VdL2csIG1hdGNoKTsKICAgICB9Cj0yMAogICAgIGZ1 bmN0aW9uIGluZGV4T2YodmFsdWUsIGFycmF5KSB7CkBAIC0xODksMTAgKzE5Myw2IEBACiAgICAg ICAgIH0pOwogICAgIH0KPTIwCi0gICAgJGRvY3VtZW50Lm9uKCJtb3VzZW1vdmUiLCBmdW5jdGlv biAoZSkgewotICAgICAgICBsYXN0TW91c2VQb3NpdGlvbi54ID0zRCBlLnBhZ2VYOwotICAgICAg ICBsYXN0TW91c2VQb3NpdGlvbi55ID0zRCBlLnBhZ2VZOwotICAgIH0pOwo9MjAKICAgICAvKioK ICAgICAgKiBmaWx0ZXJzIG1vdXNlIGV2ZW50cyBzbyBhbiBldmVudCBpcyBmaXJlZCBvbmx5IGlm IHRoZSBtb3VzZSBtb3ZlZC4KQEAgLTIzMCwyMCArMjMwLDYgQEAKICAgICAgICAgfTsKICAgICB9 Cj0yMAotICAgIC8qKgotICAgICAqIEEgc2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIGEgdGh1bmsK LSAgICAgKiBAcGFyYW0gZm9ybXVsYSBmdW5jdGlvbiB1c2VkIHRvIGxhemlseSBpbml0aWFsaXpl IHRoZSB0aHVuawotICAgICAqIEByZXR1cm4ge0Z1bmN0aW9ufQotICAgICAqLwotICAgIGZ1bmN0 aW9uIHRodW5rKGZvcm11bGEpIHsKLSAgICAgICAgdmFyIGV2YWx1YXRlZCA9M0QgZmFsc2UsCi0g ICAgICAgICAgICB2YWx1ZTsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgewotICAgICAgICAg ICAgaWYgKGV2YWx1YXRlZCA9M0Q9M0Q9M0QgZmFsc2UpIHsgdmFsdWUgPTNEIGZvcm11bGEoKTsg ZXZhbHVhdGU9CmQgPTNEIHRydWU7IH0KLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAg ICAgfTsKLSAgICB9OwotCiAgICAgZnVuY3Rpb24gaW5zdGFsbERlYm91bmNlZFNjcm9sbCh0aHJl c2hvbGQsIGVsZW1lbnQpIHsKICAgICAgICAgdmFyIG5vdGlmeSA9M0QgZGVib3VuY2UodGhyZXNo b2xkLCBmdW5jdGlvbiAoZSkgeyBlbGVtZW50LnRyaWdnZXIoPQoic2Nyb2xsLWRlYm91bmNlZCIs IGUpO30pOwogICAgICAgICBlbGVtZW50Lm9uKCJzY3JvbGwiLCBmdW5jdGlvbiAoZSkgewpAQCAt MjYzLDggKzI0OSw5IEBACiAgICAgICAgICAgICAkZWwuZm9jdXMoKTsKPTIwCiAgICAgICAgICAg ICAvKiBtYWtlIHN1cmUgZWwgcmVjZWl2ZWQgZm9jdXMgc28gd2UgZG8gbm90IGVycm9yIG91dCB3 aGVuIHRyeT0KaW5nIHRvIG1hbmlwdWxhdGUgdGhlIGNhcmV0LgotICAgICAgICAgICAgICAgIHNv bWV0aW1lcyBtb2RhbHMgb3Igb3RoZXJzIGxpc3RlbmVycyBtYXkgc3RlYWwgaXQgYWZ0ZXIgaXQ9 CidzIHNldCAqLwotICAgICAgICAgICAgaWYgKCRlbC5pcygiOnZpc2libGUiKSAmJiBlbCA9M0Q9 M0Q9M0QgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCk9CiB7CisgICAgICAgICAgICAgICAgc29tZXRp bWVzIG1vZGFscyBvciBvdGhlcnMgbGlzdGVuZXJzIG1heSBzdGVhbCBpdCBhZnRlciBpdD0KcyBz ZXQgKi8KKyAgICAgICAgICAgIHZhciBpc1Zpc2libGUgPTNEIChlbC5vZmZzZXRXaWR0aCA+IDAg fHwgZWwub2Zmc2V0SGVpZ2h0ID4gMCk7CisgICAgICAgICAgICBpZiAoaXNWaXNpYmxlICYmIGVs ID0zRD0zRD0zRCBkb2N1bWVudC5hY3RpdmVFbGVtZW50KSB7Cj0yMAogICAgICAgICAgICAgICAg IC8qIGFmdGVyIHRoZSBmb2N1cyBpcyBzZXQgbW92ZSB0aGUgY2FyZXQgdG8gdGhlIGVuZCwgbmVj ZXM9CnNhcnkgd2hlbiB3ZSB2YWwoKQogICAgICAgICAgICAgICAgICAgICBqdXN0IGJlZm9yZSBz ZXR0aW5nIGZvY3VzICovCkBAIC0zMzMsMjcgKzMyMCwzNCBAQAogICAgIGZ1bmN0aW9uIHN5bmND c3NDbGFzc2VzKGRlc3QsIHNyYywgYWRhcHRlcikgewogICAgICAgICB2YXIgY2xhc3NlcywgcmVw bGFjZW1lbnRzID0zRCBbXSwgYWRhcHRlZDsKPTIwCi0gICAgICAgIGNsYXNzZXMgPTNEIGRlc3Qu YXR0cigiY2xhc3MiKTsKKyAgICAgICAgY2xhc3NlcyA9M0QgJC50cmltKGRlc3QuYXR0cigiY2xh c3MiKSk7CisKICAgICAgICAgaWYgKGNsYXNzZXMpIHsKICAgICAgICAgICAgIGNsYXNzZXMgPTNE ICcnICsgY2xhc3NlczsgLy8gZm9yIElFIHdoaWNoIHJldHVybnMgb2JqZWN0Ci0gICAgICAgICAg ICAkKGNsYXNzZXMuc3BsaXQoIiAiKSkuZWFjaDIoZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAg ICQoY2xhc3Nlcy5zcGxpdCgvXHMrLykpLmVhY2gyKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg ICAgIGlmICh0aGlzLmluZGV4T2YoInNlbGVjdDItIikgPTNEPTNEPTNEIDApIHsKICAgICAgICAg ICAgICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2godGhpcyk7CiAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KLSAgICAgICAgY2xhc3NlcyA9M0Qgc3JjLmF0dHIo ImNsYXNzIik7CisKKyAgICAgICAgY2xhc3NlcyA9M0QgJC50cmltKHNyYy5hdHRyKCJjbGFzcyIp KTsKKwogICAgICAgICBpZiAoY2xhc3NlcykgewogICAgICAgICAgICAgY2xhc3NlcyA9M0QgJycg KyBjbGFzc2VzOyAvLyBmb3IgSUUgd2hpY2ggcmV0dXJucyBvYmplY3QKLSAgICAgICAgICAgICQo Y2xhc3Nlcy5zcGxpdCgiICIpKS5lYWNoMihmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgJChj bGFzc2VzLnNwbGl0KC9ccysvKSkuZWFjaDIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAg aWYgKHRoaXMuaW5kZXhPZigic2VsZWN0Mi0iKSAhPTNEPTNEIDApIHsKICAgICAgICAgICAgICAg ICAgICAgYWRhcHRlZCA9M0QgYWRhcHRlcih0aGlzKTsKKwogICAgICAgICAgICAgICAgICAgICBp ZiAoYWRhcHRlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2go dGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudHMucHVzaChhZGFwdGVk KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg IH0pOwogICAgICAgICB9CisKICAgICAgICAgZGVzdC5hdHRyKCJjbGFzcyIsIHJlcGxhY2VtZW50 cy5qb2luKCIgIikpOwogICAgIH0KPTIwCkBAIC0zOTMsMTQgKzM4NywxNCBAQAogICAgIC8qKgog ICAgICAqIFByb2R1Y2VzIGFuIGFqYXgtYmFzZWQgcXVlcnkgZnVuY3Rpb24KICAgICAgKgotICAg ICAqIEBwYXJhbSBvcHRpb25zIG9iamVjdCBjb250YWluaW5nIGNvbmZpZ3VyYXRpb24gcGFyYW10 ZXJzCisgICAgICogQHBhcmFtIG9wdGlvbnMgb2JqZWN0IGNvbnRhaW5pbmcgY29uZmlndXJhdGlv biBwYXJhbWV0ZXJzCiAgICAgICogQHBhcmFtIG9wdGlvbnMucGFyYW1zIHBhcmFtZXRlciBtYXAg Zm9yIHRoZSB0cmFuc3BvcnQgYWpheCBjYWxsLCBjYT0KbiBjb250YWluIHN1Y2ggb3B0aW9ucyBh cyBjYWNoZSwganNvbnBDYWxsYmFjaywgZXRjLiBzZWUgJC5hamF4CiAgICAgICogQHBhcmFtIG9w dGlvbnMudHJhbnNwb3J0IGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhl ID0KYWpheCByZXF1ZXN0LiBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCBwYXJhbWV0ZXJzIHN1cHBv cnRlZCBieSAkLmFqYXgKICAgICAgKiBAcGFyYW0gb3B0aW9ucy51cmwgdXJsIGZvciB0aGUgZGF0 YQogICAgICAqIEBwYXJhbSBvcHRpb25zLmRhdGEgYSBmdW5jdGlvbihzZWFyY2hUZXJtLCBwYWdl TnVtYmVyLCBjb250ZXh0KSB0aGE9CnQgc2hvdWxkIHJldHVybiBhbiBvYmplY3QgY29udGFpbmlu ZyBxdWVyeSBzdHJpbmcgcGFyYW1ldGVycyBmb3IgdGhlIGFib3ZlID0KdXJsLgotICAgICAqIEBw YXJhbSBvcHRpb25zLmRhdGFUeXBlIHJlcXVlc3QgZGF0YSB0eXBlOiBhamF4LCBqc29ucCwgb3Ro ZXIgZGF0YXQ9CmF0eXBlcyBzdXBwb3J0ZWQgYnkgalF1ZXJ5J3MgJC5hamF4IGZ1bmN0aW9uIG9y IHRoZSB0cmFuc3BvcnQgZnVuY3Rpb24gaWYgcz0KcGVjaWZpZWQKKyAgICAgKiBAcGFyYW0gb3B0 aW9ucy5kYXRhVHlwZSByZXF1ZXN0IGRhdGEgdHlwZTogYWpheCwganNvbnAsIG90aGVyIGRhdGF0 PQp5cGVzIHN1cHBvcnRlZCBieSBqUXVlcnkncyAkLmFqYXggZnVuY3Rpb24gb3IgdGhlIHRyYW5z cG9ydCBmdW5jdGlvbiBpZiBzcGU9CmNpZmllZAogICAgICAqIEBwYXJhbSBvcHRpb25zLnF1aWV0 TWlsbGlzIChvcHRpb25hbCkgbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIG09CmFraW5nIHRo ZSBhamF4UmVxdWVzdCwgaGVscHMgZGVib3VuY2UgdGhlIGFqYXggZnVuY3Rpb24gaWYgaW52b2tl ZCB0b28gb2Z0ZW4KLSAgICAgKiBAcGFyYW0gb3B0aW9ucy5yZXN1bHRzIGEgZnVuY3Rpb24ocmVt b3RlRGF0YSwgcGFnZU51bWJlcikgdGhhdCBjb252PQplcnRzIGRhdGEgcmV0dXJuZWQgZm9ybSB0 aGUgcmVtb3RlIHJlcXVlc3QgdG8gdGhlIGZvcm1hdCBleHBlY3RlZCBieSBTZWxlY3Q9CjIuCisg ICAgICogQHBhcmFtIG9wdGlvbnMucmVzdWx0cyBhIGZ1bmN0aW9uKHJlbW90ZURhdGEsIHBhZ2VO dW1iZXIsIHF1ZXJ5KSB0aD0KYXQgY29udmVydHMgZGF0YSByZXR1cm5lZCBmb3JtIHRoZSByZW1v dGUgcmVxdWVzdCB0byB0aGUgZm9ybWF0IGV4cGVjdGVkIGJ5PQogU2VsZWN0Mi4KICAgICAgKiAg ICAgIFRoZSBleHBlY3RlZCBmb3JtYXQgaXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvbGxv d2luZyBrZXlzOgogICAgICAqICAgICAgcmVzdWx0cyBhcnJheSBvZiBvYmplY3RzIHRoYXQgd2ls bCBiZSB1c2VkIGFzIGNob2ljZXMKICAgICAgKiAgICAgIG1vcmUgKG9wdGlvbmFsKSBib29sZWFu IGluZGljYXRpbmcgd2hldGhlciB0aGVyZSBhcmUgbW9yZSByZXN1PQpsdHMgYXZhaWxhYmxlCkBA IC00MzEsNyArNDI1LDcgQEAKICAgICAgICAgICAgICAgICBkYXRhID0zRCBkYXRhID8gZGF0YS5j YWxsKHNlbGYsIHF1ZXJ5LnRlcm0sIHF1ZXJ5LnBhZ2UsIHF1PQplcnkuY29udGV4dCkgOiBudWxs OwogICAgICAgICAgICAgICAgIHVybCA9M0QgKHR5cGVvZiB1cmwgPTNEPTNEPTNEICdmdW5jdGlv bicpID8gdXJsLmNhbGwoc2VsZiw9CiBxdWVyeS50ZXJtLCBxdWVyeS5wYWdlLCBxdWVyeS5jb250 ZXh0KSA6IHVybDsKPTIwCi0gICAgICAgICAgICAgICAgaWYgKGhhbmRsZXIpIHsgaGFuZGxlci5h Ym9ydCgpOyB9CisgICAgICAgICAgICAgICAgaWYgKGhhbmRsZXIgJiYgdHlwZW9mIGhhbmRsZXIu YWJvcnQgPTNEPTNEPTNEICJmdW5jdGlvbiIpID0KeyBoYW5kbGVyLmFib3J0KCk7IH0KPTIwCiAg ICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMucGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgICAg IGlmICgkLmlzRnVuY3Rpb24ob3B0aW9ucy5wYXJhbXMpKSB7CkBAIC00NDcsNyArNDQxLDE4IEBA CiAgICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgICAgICAgICAgICAgIHN1 Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RP IC0gcmVwbGFjZSBxdWVyeS5wYWdlIHdpdGggcXVlcnkgc28gdXNlcnMgaD0KYXZlIGFjY2VzcyB0 byB0ZXJtLCBwYWdlLCBldGMuCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9 M0Qgb3B0aW9ucy5yZXN1bHRzKGRhdGEsIHF1ZXJ5LnBhZ2UpOworICAgICAgICAgICAgICAgICAg ICAgICAgLy8gYWRkZWQgcXVlcnkgYXMgdGhpcmQgcGFyYW10ZXIgdG8ga2VlcCBiYWNrd2FyZHM9 CiBjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0cyA9M0Qg b3B0aW9ucy5yZXN1bHRzKGRhdGEsIHF1ZXJ5LnBhZ2UsID0KcXVlcnkpOworICAgICAgICAgICAg ICAgICAgICAgICAgcXVlcnkuY2FsbGJhY2socmVzdWx0cyk7CisgICAgICAgICAgICAgICAgICAg IH0sCisgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbihqcVhIUiwgdGV4dFN0YXR1 cywgZXJyb3JUaHJvd24peworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdHMgPTNE IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcjogdHJ1ZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBqcVhIUjoganFYSFIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdGV4dFN0YXR1czogdGV4dFN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlcnJvclRocm93bjogZXJyb3JUaHJvd24sCisgICAgICAgICAgICAgICAgICAgICAgICB9Owor CiAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeS5jYWxsYmFjayhyZXN1bHRzKTsKICAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0pOwpAQCAtNDY0LDcgKzQ2OSw3IEBA CiAgICAgICoKICAgICAgKiBJZiB0aGUgYXJyYXkgZm9ybSBpcyB1c2VkIGl0IGlzIGFzc3VtZWQg dGhhdCBpdCBjb250YWlucyBvYmplY3RzIHdpPQp0aCAnaWQnIGFuZCAndGV4dCcga2V5cy4KICAg ICAgKgotICAgICAqIElmIHRoZSBvYmplY3QgZm9ybSBpcyB1c2VkIHRpIGlzIGFzc3VtZWQgdGhh dCBpdCBjb250YWlucyAnZGF0YScgYW49CmQgJ3RleHQnIGtleXMuIFRoZSAnZGF0YScga2V5IHNo b3VsZCBjb250YWluCisgICAgICogSWYgdGhlIG9iamVjdCBmb3JtIGlzIHVzZWQgaXQgaXMgYXNz dW1lZCB0aGF0IGl0IGNvbnRhaW5zICdkYXRhJyBhbj0KZCAndGV4dCcga2V5cy4gVGhlICdkYXRh JyBrZXkgc2hvdWxkIGNvbnRhaW4KICAgICAgKiBhbiBhcnJheSBvZiBvYmplY3RzIHRoYXQgd2ls bCBiZSB1c2VkIGFzIGNob2ljZXMuIFRoZXNlIG9iamVjdHMgbXVzPQp0IGNvbnRhaW4gYXQgbGVh c3QgYW4gJ2lkJyBrZXkuIFRoZSAndGV4dCcKICAgICAgKiBrZXkgY2FuIGVpdGhlciBiZSBhIFN0 cmluZyBpbiB3aGljaCBjYXNlIGl0IGlzIGV4cGVjdGVkIHRoYXQgZWFjaCBlPQpsZW1lbnQgaW4g dGhlICdkYXRhJyBhcnJheSBoYXMgYSBrZXkgd2l0aCB0aGUKICAgICAgKiB2YWx1ZSBvZiAndGV4 dCcgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIG1hdGNoIGNob2ljZXMuIEFsdGVybmF0aXZlbHksPQog dGV4dCBjYW4gYmUgYSBmdW5jdGlvbihpdGVtKSB0aGF0IGNhbiBleHRyYWN0CkBAIC01MzMsMTQg KzUzOCwxNyBAQAogICAgICAgICB2YXIgaXNGdW5jID0zRCAkLmlzRnVuY3Rpb24oZGF0YSk7CiAg ICAgICAgIHJldHVybiBmdW5jdGlvbiAocXVlcnkpIHsKICAgICAgICAgICAgIHZhciB0ID0zRCBx dWVyeS50ZXJtLCBmaWx0ZXJlZCA9M0Qge3Jlc3VsdHM6IFtdfTsKLSAgICAgICAgICAgICQoaXNG dW5jID8gZGF0YSgpIDogZGF0YSkuZWFjaChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAg dmFyIGlzT2JqZWN0ID0zRCB0aGlzLnRleHQgIT0zRD0zRCB1bmRlZmluZWQsCi0gICAgICAgICAg ICAgICAgICAgIHRleHQgPTNEIGlzT2JqZWN0ID8gdGhpcy50ZXh0IDogdGhpczsKLSAgICAgICAg ICAgICAgICBpZiAodCA9M0Q9M0Q9M0QgIiIgfHwgcXVlcnkubWF0Y2hlcih0LCB0ZXh0KSkgewot ICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZC5yZXN1bHRzLnB1c2goaXNPYmplY3QgPyB0aGlz IDoge2lkOiB0aGlzLCB0ZXg9CnQ6IHRoaXN9KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICB9KTsKLSAgICAgICAgICAgIHF1ZXJ5LmNhbGxiYWNrKGZpbHRlcmVkKTsKKyAgICAgICAg ICAgIHZhciByZXN1bHQgPTNEIGlzRnVuYyA/IGRhdGEocXVlcnkpIDogZGF0YTsKKyAgICAgICAg ICAgIGlmICgkLmlzQXJyYXkocmVzdWx0KSkgeworICAgICAgICAgICAgICAgICQocmVzdWx0KS5l YWNoKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGlzT2JqZWN0ID0zRCB0 aGlzLnRleHQgIT0zRD0zRCB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0 ID0zRCBpc09iamVjdCA/IHRoaXMudGV4dCA6IHRoaXM7CisgICAgICAgICAgICAgICAgICAgIGlm ICh0ID0zRD0zRD0zRCAiIiB8fCBxdWVyeS5tYXRjaGVyKHQsIHRleHQpKSB7CisgICAgICAgICAg ICAgICAgICAgICAgICBmaWx0ZXJlZC5yZXN1bHRzLnB1c2goaXNPYmplY3QgPyB0aGlzIDoge2lk OiB0aGlzLD0KIHRleHQ6IHRoaXN9KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgIH0pOworICAgICAgICAgICAgICAgIHF1ZXJ5LmNhbGxiYWNrKGZpbHRlcmVkKTsKKyAg ICAgICAgICAgIH0KICAgICAgICAgfTsKICAgICB9Cj0yMApAQCAtNTU1LDExICs1NjMsMjQgQEAK ICAgICBmdW5jdGlvbiBjaGVja0Zvcm1hdHRlcihmb3JtYXR0ZXIsIGZvcm1hdHRlck5hbWUpIHsK ICAgICAgICAgaWYgKCQuaXNGdW5jdGlvbihmb3JtYXR0ZXIpKSByZXR1cm4gdHJ1ZTsKICAgICAg ICAgaWYgKCFmb3JtYXR0ZXIpIHJldHVybiBmYWxzZTsKLSAgICAgICAgdGhyb3cgbmV3IEVycm9y KGZvcm1hdHRlck5hbWUgKyIgbXVzdCBiZSBhIGZ1bmN0aW9uIG9yIGEgZmFsc3kgdmFsPQp1ZSIp OworICAgICAgICBpZiAodHlwZW9mKGZvcm1hdHRlcikgPTNEPTNEPTNEICdzdHJpbmcnKSByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGZvcm1hdHRlck5hbWUgKyIgbXVzdCBi ZSBhIHN0cmluZywgZnVuY3Rpb24sIG9yIGZhPQpsc3kgdmFsdWUiKTsKICAgICB9Cj0yMAotICAg IGZ1bmN0aW9uIGV2YWx1YXRlKHZhbCkgewotICAgICAgICByZXR1cm4gJC5pc0Z1bmN0aW9uKHZh bCkgPyB2YWwoKSA6IHZhbDsKKyAgLyoqCisgICAqIFJldHVybnMgYSBnaXZlbiB2YWx1ZQorICAg KiBJZiBnaXZlbiBhIGZ1bmN0aW9uLCByZXR1cm5zIGl0cyBvdXRwdXQKKyAgICoKKyAgICogQHBh cmFtIHZhbCBzdHJpbmd8ZnVuY3Rpb24KKyAgICogQHBhcmFtIGNvbnRleHQgdmFsdWUgb2YgInRo aXMiIHRvIGJlIHBhc3NlZCB0byBmdW5jdGlvbgorICAgKiBAcmV0dXJucyB7Kn0KKyAgICovCisg ICAgZnVuY3Rpb24gZXZhbHVhdGUodmFsLCBjb250ZXh0KSB7CisgICAgICAgIGlmICgkLmlzRnVu Y3Rpb24odmFsKSkgeworICAgICAgICAgICAgdmFyIGFyZ3MgPTNEIEFycmF5LnByb3RvdHlwZS5z bGljZS5jYWxsKGFyZ3VtZW50cywgMik7CisgICAgICAgICAgICByZXR1cm4gdmFsLmFwcGx5KGNv bnRleHQsIGFyZ3MpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWw7CiAgICAgfQo9MjAK ICAgICBmdW5jdGlvbiBjb3VudFJlc3VsdHMocmVzdWx0cykgewpAQCAtNjI3LDYgKzY0OCwxNSBA QAogICAgICAgICBpZiAob3JpZ2luYWwhPTNEPTNEaW5wdXQpIHJldHVybiBpbnB1dDsKICAgICB9 Cj0yMAorICAgIGZ1bmN0aW9uIGNsZWFudXBKUXVlcnlFbGVtZW50cygpIHsKKyAgICAgICAgdmFy IHNlbGYgPTNEIHRoaXM7CisKKyAgICAgICAgJC5lYWNoKGFyZ3VtZW50cywgZnVuY3Rpb24gKGks IGVsZW1lbnQpIHsKKyAgICAgICAgICAgIHNlbGZbZWxlbWVudF0ucmVtb3ZlKCk7CisgICAgICAg ICAgICBzZWxmW2VsZW1lbnRdID0zRCBudWxsOworICAgICAgICB9KTsKKyAgICB9CisKICAgICAv KioKICAgICAgKiBDcmVhdGVzIGEgbmV3IGNsYXNzCiAgICAgICoKQEAgLTY1NCw3ICs2ODQsNyBA QAo9MjAKICAgICAgICAgLy8gYWJzdHJhY3QKICAgICAgICAgaW5pdDogZnVuY3Rpb24gKG9wdHMp IHsKLSAgICAgICAgICAgIHZhciByZXN1bHRzLCBzZWFyY2gsIHJlc3VsdHNTZWxlY3RvciA9M0Qg Ii5zZWxlY3QyLXJlc3VsdHMiLCBkPQppc2FibGVkLCByZWFkb25seTsKKyAgICAgICAgICAgIHZh ciByZXN1bHRzLCBzZWFyY2gsIHJlc3VsdHNTZWxlY3RvciA9M0QgIi5zZWxlY3QyLXJlc3VsdHMi Owo9MjAKICAgICAgICAgICAgIC8vIHByZXBhcmUgb3B0aW9ucwogICAgICAgICAgICAgdGhpcy5v cHRzID0zRCBvcHRzID0zRCB0aGlzLnByZXBhcmVPcHRzKG9wdHMpOwpAQCAtNjY5LDE4ICs2OTks MjggQEAKPTIwCiAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9M0QgdGhpcy5jcmVhdGVDb250 YWluZXIoKTsKPTIwCisgICAgICAgICAgICB0aGlzLmxpdmVSZWdpb24gPTNEICQoIjxzcGFuPiIs IHsKKyAgICAgICAgICAgICAgICAgICAgcm9sZTogInN0YXR1cyIsCisgICAgICAgICAgICAgICAg ICAgICJhcmlhLWxpdmUiOiAicG9saXRlIgorICAgICAgICAgICAgICAgIH0pCisgICAgICAgICAg ICAgICAgLmFkZENsYXNzKCJzZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlIikKKyAgICAgICAgICAg ICAgICAuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSk7CisKICAgICAgICAgICAgIHRoaXMuY29udGFp bmVySWQ9M0QiczJpZF8iKyhvcHRzLmVsZW1lbnQuYXR0cigiaWQiKSB8fCAiYXV0b2dlPQpuIitu ZXh0VWlkKCkpOwotICAgICAgICAgICAgdGhpcy5jb250YWluZXJTZWxlY3Rvcj0zRCIjIit0aGlz LmNvbnRhaW5lcklkLnJlcGxhY2UoLyhbOyYsXC49ClwrXCpcfic6IlwhXF4jJCVAXFtcXVwoXCk9 M0Q+XHxdKS9nLCAnXFwkMScpOworICAgICAgICAgICAgdGhpcy5jb250YWluZXJFdmVudE5hbWU9 M0QgdGhpcy5jb250YWluZXJJZAorICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oWy5dKS9nLCAn XycpCisgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyhbOyYsXC1cLlwrXCpcfic6IlwhXF4jJCVA XFtcXVwoXCk9M0Q+XHxdKS9nLCAnXD0KXCQxJyk7CiAgICAgICAgICAgICB0aGlzLmNvbnRhaW5l ci5hdHRyKCJpZCIsIHRoaXMuY29udGFpbmVySWQpOwo9MjAKLSAgICAgICAgICAgIC8vIGNhY2hl IHRoZSBib2R5IHNvIGZ1dHVyZSBsb29rdXBzIGFyZSBjaGVhcAotICAgICAgICAgICAgdGhpcy5i b2R5ID0zRCB0aHVuayhmdW5jdGlvbigpIHsgcmV0dXJuIG9wdHMuZWxlbWVudC5jbG9zZXN0KCI9 CmJvZHkiKTsgfSk7CisgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hdHRyKCJ0aXRsZSIsIG9w dHMuZWxlbWVudC5hdHRyKCJ0aXRsZSIpKTsKKworICAgICAgICAgICAgdGhpcy5ib2R5ID0zRCAk KCJib2R5Iik7Cj0yMAogICAgICAgICAgICAgc3luY0Nzc0NsYXNzZXModGhpcy5jb250YWluZXIs IHRoaXMub3B0cy5lbGVtZW50LCB0aGlzLm9wdHMuYWQ9CmFwdENvbnRhaW5lckNzc0NsYXNzKTsK PTIwCiAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hdHRyKCJzdHlsZSIsIG9wdHMuZWxlbWVu dC5hdHRyKCJzdHlsZSIpKTsKLSAgICAgICAgICAgIHRoaXMuY29udGFpbmVyLmNzcyhldmFsdWF0 ZShvcHRzLmNvbnRhaW5lckNzcykpOwotICAgICAgICAgICAgdGhpcy5jb250YWluZXIuYWRkQ2xh c3MoZXZhbHVhdGUob3B0cy5jb250YWluZXJDc3NDbGFzcykpOworICAgICAgICAgICAgdGhpcy5j b250YWluZXIuY3NzKGV2YWx1YXRlKG9wdHMuY29udGFpbmVyQ3NzLCB0aGlzLm9wdHMuZWxlbWU9 Cm50KSk7CisgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hZGRDbGFzcyhldmFsdWF0ZShvcHRz LmNvbnRhaW5lckNzc0NsYXNzLCB0aGlzLj0Kb3B0cy5lbGVtZW50KSk7Cj0yMAogICAgICAgICAg ICAgdGhpcy5lbGVtZW50VGFiSW5kZXggPTNEIHRoaXMub3B0cy5lbGVtZW50LmF0dHIoInRhYmlu ZGV4Iik7Cj0yMApAQCAtNjk3LDcgKzczNyw3IEBACj0yMAogICAgICAgICAgICAgc3luY0Nzc0Ns YXNzZXModGhpcy5kcm9wZG93biwgdGhpcy5vcHRzLmVsZW1lbnQsIHRoaXMub3B0cy5hZGE9CnB0 RHJvcGRvd25Dc3NDbGFzcyk7Cj0yMAotICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5hZGRDbGFz cyhldmFsdWF0ZShvcHRzLmRyb3Bkb3duQ3NzQ2xhc3MpKTsKKyAgICAgICAgICAgIHRoaXMuZHJv cGRvd24uYWRkQ2xhc3MoZXZhbHVhdGUob3B0cy5kcm9wZG93bkNzc0NsYXNzLCB0aGlzLm9wPQp0 cy5lbGVtZW50KSk7CiAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duLmRhdGEoInNlbGVjdDIiLCB0 aGlzKTsKICAgICAgICAgICAgIHRoaXMuZHJvcGRvd24ub24oImNsaWNrIiwga2lsbEV2ZW50KTsK PTIwCkBAIC03MTQsNyArNzU0LDIzIEBACiAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5vbigi Y2xpY2siLCBraWxsRXZlbnQpOwo9MjAKICAgICAgICAgICAgIGluc3RhbGxGaWx0ZXJlZE1vdXNl TW92ZSh0aGlzLnJlc3VsdHMpOwotICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5vbigibW91c2Vt b3ZlLWZpbHRlcmVkIHRvdWNoc3RhcnQgdG91Y2htb3ZlIHRvdWM9CmhlbmQiLCByZXN1bHRzU2Vs ZWN0b3IsIHRoaXMuYmluZCh0aGlzLmhpZ2hsaWdodFVuZGVyRXZlbnQpKTsKKworICAgICAgICAg ICAgdGhpcy5kcm9wZG93bi5vbigibW91c2Vtb3ZlLWZpbHRlcmVkIiwgcmVzdWx0c1NlbGVjdG9y LCB0aGlzLmI9CmluZCh0aGlzLmhpZ2hsaWdodFVuZGVyRXZlbnQpKTsKKyAgICAgICAgICAgIHRo aXMuZHJvcGRvd24ub24oInRvdWNoc3RhcnQgdG91Y2htb3ZlIHRvdWNoZW5kIiwgcmVzdWx0c1Nl bGVjPQp0b3IsIHRoaXMuYmluZChmdW5jdGlvbiAoZXZlbnQpIHsKKyAgICAgICAgICAgICAgICB0 aGlzLl90b3VjaEV2ZW50ID0zRCB0cnVlOworICAgICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0 VW5kZXJFdmVudChldmVudCk7CisgICAgICAgICAgICB9KSk7CisgICAgICAgICAgICB0aGlzLmRy b3Bkb3duLm9uKCJ0b3VjaG1vdmUiLCByZXN1bHRzU2VsZWN0b3IsIHRoaXMuYmluZCh0aGlzLj0K dG91Y2hNb3ZlZCkpOworICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5vbigidG91Y2hzdGFydCB0 b3VjaGVuZCIsIHJlc3VsdHNTZWxlY3RvciwgdGhpcy49CmJpbmQodGhpcy5jbGVhclRvdWNoTW92 ZWQpKTsKKworICAgICAgICAgICAgLy8gV2FpdGluZyBmb3IgYSBjbGljayBldmVudCBvbiB0b3Vj aCBkZXZpY2VzIHRvIHNlbGVjdCBvcHRpb249CiBhbmQgaGlkZSBkcm9wZG93bgorICAgICAgICAg ICAgLy8gb3RoZXJ3aXNlIGNsaWNrIHdpbGwgYmUgdHJpZ2dlcmVkIG9uIGFuIHVuZGVybHlpbmcg ZWxlbWVudAorICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5vbignY2xpY2snLCB0aGlzLmJpbmQo ZnVuY3Rpb24gKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RvdWNoRXZlbnQp IHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG91Y2hFdmVudCA9M0QgZmFsc2U7CisgICAg ICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SGlnaGxpZ2h0ZWQoKTsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICB9KSk7Cj0yMAogICAgICAgICAgICAgaW5zdGFsbERlYm91bmNlZFNj cm9sbCg4MCwgdGhpcy5yZXN1bHRzKTsKICAgICAgICAgICAgIHRoaXMuZHJvcGRvd24ub24oInNj cm9sbC1kZWJvdW5jZWQiLCByZXN1bHRzU2VsZWN0b3IsIHRoaXMuYmluPQpkKHRoaXMubG9hZE1v cmVJZk5lZWRlZCkpOwpAQCAtNzI2LDcgKzc4Miw3IEBACiAgICAgICAgICAgICAvLyBpZiBqcXVl cnkubW91c2V3aGVlbCBwbHVnaW4gaXMgaW5zdGFsbGVkIHdlIGNhbiBwcmV2ZW50IG91dD0KLW9m LWJvdW5kcyBzY3JvbGxpbmcgb2YgcmVzdWx0cyB2aWEgbW91c2V3aGVlbAogICAgICAgICAgICAg aWYgKCQuZm4ubW91c2V3aGVlbCkgewogICAgICAgICAgICAgICAgIHJlc3VsdHMubW91c2V3aGVl bChmdW5jdGlvbiAoZSwgZGVsdGEsIGRlbHRhWCwgZGVsdGFZKSB7Ci0gICAgICAgICAgICAgICAg ICAgIHZhciB0b3AgPTNEIHJlc3VsdHMuc2Nyb2xsVG9wKCksIGhlaWdodDsKKyAgICAgICAgICAg ICAgICAgICAgdmFyIHRvcCA9M0QgcmVzdWx0cy5zY3JvbGxUb3AoKTsKICAgICAgICAgICAgICAg ICAgICAgaWYgKGRlbHRhWSA+IDAgJiYgdG9wIC0gZGVsdGFZIDw9M0QgMCkgewogICAgICAgICAg ICAgICAgICAgICAgICAgcmVzdWx0cy5zY3JvbGxUb3AoMCk7CiAgICAgICAgICAgICAgICAgICAg ICAgICBraWxsRXZlbnQoZSk7CkBAIC03NTIsNyArODA4LDEwIEBACiAgICAgICAgICAgICAvLyB0 cmFwIGFsbCBtb3VzZSBldmVudHMgZnJvbSBsZWF2aW5nIHRoZSBkcm9wZG93bi4gc29tZXRpbWVz ID0KdGhlcmUgbWF5IGJlIGEgbW9kYWwgdGhhdCBpcyBsaXN0ZW5pbmcKICAgICAgICAgICAgIC8v IGZvciBtb3VzZSBldmVudHMgb3V0c2lkZSBvZiBpdHNlbGYgc28gaXQgY2FuIGNsb3NlIGl0c2Vs Zi4gPQpzaW5jZSB0aGUgZHJvcGRvd24gaXMgbm93IG91dHNpZGUgdGhlIHNlbGVjdDIncwogICAg ICAgICAgICAgLy8gZG9tIGl0IHdpbGwgdHJpZ2dlciB0aGUgcG9wdXAgY2xvc2UsIHdoaWNoIGlz IG5vdCB3aGF0IHdlIHc9CmFudAotICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5vbigiY2xpY2sg bW91c2V1cCBtb3VzZWRvd24iLCBmdW5jdGlvbiAoZSkgeyBlLnM9CnRvcFByb3BhZ2F0aW9uKCk7 IH0pOworICAgICAgICAgICAgLy8gZm9jdXNpbiBjYW4gY2F1c2UgZm9jdXMgd2FycyBiZXR3ZWVu IG1vZGFscyBhbmQgc2VsZWN0MiBzaW49CmNlIHRoZSBkcm9wZG93biBpcyBvdXRzaWRlIHRoZSBt b2RhbC4KKyAgICAgICAgICAgIHRoaXMuZHJvcGRvd24ub24oImNsaWNrIG1vdXNldXAgbW91c2Vk b3duIHRvdWNoc3RhcnQgdG91Y2hlbmQgPQpmb2N1c2luIiwgZnVuY3Rpb24gKGUpIHsgZS5zdG9w UHJvcGFnYXRpb24oKTsgfSk7CisKKyAgICAgICAgICAgIHRoaXMubmV4dFNlYXJjaFRlcm0gPTNE IHVuZGVmaW5lZDsKPTIwCiAgICAgICAgICAgICBpZiAoJC5pc0Z1bmN0aW9uKHRoaXMub3B0cy5p bml0U2VsZWN0aW9uKSkgewogICAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemUgc2VsZWN0aW9u IGJhc2VkIG9uIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSA9CnNvdXJjZSBlbGVtZW50CkBAIC03 ODIsMTkgKzg0MSwyOSBAQAogICAgICAgICAgICAgb3B0cy5lbGVtZW50LnByb3AoImF1dG9mb2N1 cyIsIGZhbHNlKTsKICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9mb2N1cykgdGhpcy5mb2N1cygp Owo9MjAKLSAgICAgICAgICAgIHRoaXMubmV4dFNlYXJjaFRlcm0gPTNEIHVuZGVmaW5lZDsKKyAg ICAgICAgICAgIHRoaXMuc2VhcmNoLmF0dHIoInBsYWNlaG9sZGVyIiwgb3B0cy5zZWFyY2hJbnB1 dFBsYWNlaG9sZGVyKTsKICAgICAgICAgfSwKPTIwCiAgICAgICAgIC8vIGFic3RyYWN0CiAgICAg ICAgIGRlc3Ryb3k6IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHZhciBlbGVtZW50PTNEdGhp cy5vcHRzLmVsZW1lbnQsIHNlbGVjdDIgPTNEIGVsZW1lbnQuZGF0YSgic2VsPQplY3QyIik7Cisg ICAgICAgICAgICB2YXIgZWxlbWVudD0zRHRoaXMub3B0cy5lbGVtZW50LCBzZWxlY3QyID0zRCBl bGVtZW50LmRhdGEoInNlbD0KZWN0MiIpLCBzZWxmID0zRCB0aGlzOwo9MjAKICAgICAgICAgICAg IHRoaXMuY2xvc2UoKTsKPTIwCi0gICAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eU9ic2VydmVy KSB7IGRlbGV0ZSB0aGlzLnByb3BlcnR5T2JzZXJ2ZXI7IHRoaT0Kcy5wcm9wZXJ0eU9ic2VydmVy ID0zRCBudWxsOyB9CisgICAgICAgICAgICBpZiAoZWxlbWVudC5sZW5ndGggJiYgZWxlbWVudFsw XS5kZXRhY2hFdmVudCkgeworICAgICAgICAgICAgICAgIGVsZW1lbnQuZWFjaChmdW5jdGlvbiAo KSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFu Z2UiLCBzZWxmLl9zeW5jKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIGlmICh0aGlzLnByb3BlcnR5T2JzZXJ2ZXIpIHsKKyAgICAgICAgICAgICAgICB0 aGlzLnByb3BlcnR5T2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICAgICAgICAgIHRoaXMu cHJvcGVydHlPYnNlcnZlciA9M0QgbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRo aXMuX3N5bmMgPTNEIG51bGw7Cj0yMAogICAgICAgICAgICAgaWYgKHNlbGVjdDIgIT0zRD0zRCB1 bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICBzZWxlY3QyLmNvbnRhaW5lci5yZW1vdmUoKTsK KyAgICAgICAgICAgICAgICBzZWxlY3QyLmxpdmVSZWdpb24ucmVtb3ZlKCk7CiAgICAgICAgICAg ICAgICAgc2VsZWN0Mi5kcm9wZG93bi5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICBlbGVtZW50 CiAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygic2VsZWN0Mi1vZmZzY3JlZW4iKQpA QCAtODA4LDYgKzg3NywxNCBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBl bGVtZW50LnNob3coKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2xlYW51cEpRdWVy eUVsZW1lbnRzLmNhbGwodGhpcywKKyAgICAgICAgICAgICAgICAiY29udGFpbmVyIiwKKyAgICAg ICAgICAgICAgICAibGl2ZVJlZ2lvbiIsCisgICAgICAgICAgICAgICAgImRyb3Bkb3duIiwKKyAg ICAgICAgICAgICAgICAicmVzdWx0cyIsCisgICAgICAgICAgICAgICAgInNlYXJjaCIKKyAgICAg ICAgICAgICk7CiAgICAgICAgIH0sCj0yMAogICAgICAgICAvLyBhYnN0cmFjdApAQCAtODUyLDcg KzkyOSw3IEBACj0yMAogICAgICAgICAgICAgb3B0cyA9M0QgJC5leHRlbmQoe30sIHsKICAgICAg ICAgICAgICAgICBwb3B1bGF0ZVJlc3VsdHM6IGZ1bmN0aW9uKGNvbnRhaW5lciwgcmVzdWx0cywg cXVlcnkpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHBvcHVsYXRlLCAgZGF0YSwgcmVzdWx0 LCBjaGlsZHJlbiwgaWQ9M0R0aGlzLm9wdHMuPQppZDsKKyAgICAgICAgICAgICAgICAgICAgdmFy IHBvcHVsYXRlLCBpZD0zRHRoaXMub3B0cy5pZCwgbGl2ZVJlZ2lvbj0zRHRoaXMubGl2PQplUmVn aW9uOwo9MjAKICAgICAgICAgICAgICAgICAgICAgcG9wdWxhdGU9M0RmdW5jdGlvbihyZXN1bHRz LCBjb250YWluZXIsIGRlcHRoKSB7Cj0yMApAQCAtODYwLDYgKzkzNyw4IEBACj0yMAogICAgICAg ICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9M0Qgb3B0cy5zb3J0UmVzdWx0cyhyZXN1bHRzLCBj b250YWluZXIsIHE9CnVlcnkpOwo9MjAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbGxl Y3QgdGhlIGNyZWF0ZWQgbm9kZXMgZm9yIGJ1bGsgYXBwZW5kCisgICAgICAgICAgICAgICAgICAg ICAgICB2YXIgbm9kZXMgPTNEIFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0z RCAwLCBsID0zRCByZXN1bHRzLmxlbmd0aDsgaSA8IGw7IGkgPTNEIGk9CiArIDEpIHsKPTIwCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PTNEcmVzdWx0c1tpXTsKQEAgLTg3Niwx NiArOTU1LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpc2FibGVkKSB7 IG5vZGUuYWRkQ2xhc3MoInNlbGVjdDItZGlzYWJsZT0KZCIpOyB9CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaWYgKGNvbXBvdW5kKSB7IG5vZGUuYWRkQ2xhc3MoInNlbGVjdDItcmVzdWx0 LT0Kd2l0aC1jaGlsZHJlbiIpOyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5h ZGRDbGFzcyhzZWxmLm9wdHMuZm9ybWF0UmVzdWx0Q3NzQ2xhc3Mocj0KZXN1bHQpKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBub2RlLmF0dHIoInJvbGUiLCAicHJlc2VudGF0aW9uIik7 Cj0yMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPTNEJChkb2N1bWVudC5jcmVh dGVFbGVtZW50KCJkaXYiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwuYWRk Q2xhc3MoInNlbGVjdDItcmVzdWx0LWxhYmVsIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGFiZWwuYXR0cigiaWQiLCAic2VsZWN0Mi1yZXN1bHQtbGFiZWwtIiArIG5leD0KdFVpZCgp KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC5hdHRyKCJyb2xlIiwgIm9wdGlv biIpOwo9MjAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQ9M0RvcHRzLmZv cm1hdFJlc3VsdChyZXN1bHQsIGxhYmVsLCBxPQp1ZXJ5LCBzZWxmLm9wdHMuZXNjYXBlTWFya3Vw KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9ybWF0dGVkIT0zRD0zRHVuZGVm aW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbC5odG1sKGZvcm1h dHRlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuYXBwZW5kKGxhYmVs KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cj0yMAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5vZGUuYXBwZW5kKGxhYmVsKTsKPTIwCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgKGNvbXBvdW5kKSB7Cj0yMApAQCAtODk2LDggKzk3OCwxMiBAQAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0KPTIwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k ZS5kYXRhKCJzZWxlY3QyLWRhdGEiLCByZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRhaW5lci5hcHBlbmQobm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg bm9kZXMucHVzaChub2RlWzBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg ICAgICAgICAgICAgICAgICAgLy8gYnVsayBhcHBlbmQgdGhlIGNyZWF0ZWQgbm9kZXMKKyAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQobm9kZXMpOworICAgICAgICAgICAg ICAgICAgICAgICAgbGl2ZVJlZ2lvbi50ZXh0KG9wdHMuZm9ybWF0TWF0Y2hlcyhyZXN1bHRzLmxl bmd0aCk9Cik7CiAgICAgICAgICAgICAgICAgICAgIH07Cj0yMAogICAgICAgICAgICAgICAgICAg ICBwb3B1bGF0ZShyZXN1bHRzLCBjb250YWluZXIsIDApOwpAQCAtOTUxLDkgKzEwMzcsOCBAQAo9 MjAKICAgICAgICAgICAgICAgICAgICAgcXVlcnkuY2FsbGJhY2soZGF0YSk7CiAgICAgICAgICAg ICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBpbnNp ZGUgdmFsKCkgd2UgY29uc3RydWN0IGNob2ljZT0KcyBmcm9tIG9wdGlvbnMgYW5kIHRoZXJlIGlk IGlzIGhhcmRjb2RlZAorICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ug aW5zaWRlIHZhbCgpIHdlIGNvbnN0cnVjdCBjaG9pY2U9CnMgZnJvbSBvcHRpb25zIGFuZCB0aGVp ciBpZCBpcyBoYXJkY29kZWQKICAgICAgICAgICAgICAgICBvcHRzLmlkPTNEZnVuY3Rpb24oZSkg eyByZXR1cm4gZS5pZDsgfTsKLSAgICAgICAgICAgICAgICBvcHRzLmZvcm1hdFJlc3VsdENzc0Ns YXNzID0zRCBmdW5jdGlvbihkYXRhKSB7IHJldHVybiBkYXRhPQouY3NzOyB9OwogICAgICAgICAg ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoISgicXVlcnkiIGluIG9wdHMpKSB7Cj0y MApAQCAtOTkxLDYgKzEwNzYsMTYgQEAKICAgICAgICAgICAgICAgICB0aHJvdyAicXVlcnkgZnVu Y3Rpb24gbm90IGRlZmluZWQgZm9yIFNlbGVjdDIgIiArIG9wdHMuZWxlPQptZW50LmF0dHIoImlk Iik7CiAgICAgICAgICAgICB9Cj0yMAorICAgICAgICAgICAgaWYgKG9wdHMuY3JlYXRlU2VhcmNo Q2hvaWNlUG9zaXRpb24gPTNEPTNEPTNEICd0b3AnKSB7CisgICAgICAgICAgICAgICAgb3B0cy5j cmVhdGVTZWFyY2hDaG9pY2VQb3NpdGlvbiA9M0QgZnVuY3Rpb24obGlzdCwgaXRlbSkgez0KIGxp c3QudW5zaGlmdChpdGVtKTsgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYg KG9wdHMuY3JlYXRlU2VhcmNoQ2hvaWNlUG9zaXRpb24gPTNEPTNEPTNEICdib3R0b20nKSB7Cisg ICAgICAgICAgICAgICAgb3B0cy5jcmVhdGVTZWFyY2hDaG9pY2VQb3NpdGlvbiA9M0QgZnVuY3Rp b24obGlzdCwgaXRlbSkgez0KIGxpc3QucHVzaChpdGVtKTsgfTsKKyAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZihvcHRzLmNyZWF0ZVNlYXJjaENob2ljZVBvc2l0aW9u KSAhPTNEPTNEICJmdW5jPQp0aW9uIikgIHsKKyAgICAgICAgICAgICAgICB0aHJvdyAiaW52YWxp ZCBjcmVhdGVTZWFyY2hDaG9pY2VQb3NpdGlvbiBvcHRpb24gbXVzdCBiZSAnPQp0b3AnLCAnYm90 dG9tJyBvciBhIGN1c3RvbSBmdW5jdGlvbiI7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAg IHJldHVybiBvcHRzOwogICAgICAgICB9LAo9MjAKQEAgLTk5OSw3ICsxMDk0LDcgQEAKICAgICAg ICAgICovCiAgICAgICAgIC8vIGFic3RyYWN0CiAgICAgICAgIG1vbml0b3JTb3VyY2U6IGZ1bmN0 aW9uICgpIHsKLSAgICAgICAgICAgIHZhciBlbCA9M0QgdGhpcy5vcHRzLmVsZW1lbnQsIHN5bmM7 CisgICAgICAgICAgICB2YXIgZWwgPTNEIHRoaXMub3B0cy5lbGVtZW50LCBvYnNlcnZlciwgc2Vs ZiA9M0QgdGhpczsKPTIwCiAgICAgICAgICAgICBlbC5vbigiY2hhbmdlLnNlbGVjdDIiLCB0aGlz LmJpbmQoZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRzLmVsZW1l bnQuZGF0YSgic2VsZWN0Mi1jaGFuZ2UtdHJpZ2dlcmVkIikgIT0KPTNEPTNEIHRydWUpIHsKQEAg LTEwMDcsOSArMTEwMiw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSkpOwo9 MjAKLSAgICAgICAgICAgIHN5bmMgPTNEIHRoaXMuYmluZChmdW5jdGlvbiAoKSB7Ci0KLSAgICAg ICAgICAgICAgICB2YXIgZW5hYmxlZCwgcmVhZG9ubHksIHNlbGYgPTNEIHRoaXM7CisgICAgICAg ICAgICB0aGlzLl9zeW5jID0zRCB0aGlzLmJpbmQoZnVuY3Rpb24gKCkgewo9MjAKICAgICAgICAg ICAgICAgICAvLyBzeW5jIGVuYWJsZWQgc3RhdGUKICAgICAgICAgICAgICAgICB2YXIgZGlzYWJs ZWQgPTNEIGVsLnByb3AoImRpc2FibGVkIik7CkBAIC0xMDIxLDM1ICsxMTE0LDM0IEBACiAgICAg ICAgICAgICAgICAgdGhpcy5yZWFkb25seShyZWFkb25seSk7Cj0yMAogICAgICAgICAgICAgICAg IHN5bmNDc3NDbGFzc2VzKHRoaXMuY29udGFpbmVyLCB0aGlzLm9wdHMuZWxlbWVudCwgdGhpcy5v cHQ9CnMuYWRhcHRDb250YWluZXJDc3NDbGFzcyk7Ci0gICAgICAgICAgICAgICAgdGhpcy5jb250 YWluZXIuYWRkQ2xhc3MoZXZhbHVhdGUodGhpcy5vcHRzLmNvbnRhaW5lckNzc0NsYT0Kc3MpKTsK KyAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hZGRDbGFzcyhldmFsdWF0ZSh0aGlzLm9w dHMuY29udGFpbmVyQ3NzQ2xhPQpzcywgdGhpcy5vcHRzLmVsZW1lbnQpKTsKPTIwCiAgICAgICAg ICAgICAgICAgc3luY0Nzc0NsYXNzZXModGhpcy5kcm9wZG93biwgdGhpcy5vcHRzLmVsZW1lbnQs IHRoaXMub3B0cz0KLmFkYXB0RHJvcGRvd25Dc3NDbGFzcyk7Ci0gICAgICAgICAgICAgICAgdGhp cy5kcm9wZG93bi5hZGRDbGFzcyhldmFsdWF0ZSh0aGlzLm9wdHMuZHJvcGRvd25Dc3NDbGFzcz0K KSk7CisgICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5hZGRDbGFzcyhldmFsdWF0ZSh0aGlz Lm9wdHMuZHJvcGRvd25Dc3NDbGFzcz0KLCB0aGlzLm9wdHMuZWxlbWVudCkpOwo9MjAKICAgICAg ICAgICAgIH0pOwo9MjAKLSAgICAgICAgICAgIC8vIG1vemlsbGEgYW5kIElFCi0gICAgICAgICAg ICBlbC5vbigicHJvcGVydHljaGFuZ2Uuc2VsZWN0MiBET01BdHRyTW9kaWZpZWQuc2VsZWN0MiIs IHN5bmMpOwotCi0KLSAgICAgICAgICAgIC8vIGhvbGQgb250byBhIHJlZmVyZW5jZSBvZiB0aGUg Y2FsbGJhY2sgdG8gd29yayBhcm91bmQgYSBjaHJvPQptaXVtIGJ1ZwotICAgICAgICAgICAgaWYg KHRoaXMubXV0YXRpb25DYWxsYmFjayA9M0Q9M0Q9M0QgdW5kZWZpbmVkKSB7Ci0gICAgICAgICAg ICAgICAgdGhpcy5tdXRhdGlvbkNhbGxiYWNrID0zRCBmdW5jdGlvbiAobXV0YXRpb25zKSB7Ci0g ICAgICAgICAgICAgICAgICAgIG11dGF0aW9ucy5mb3JFYWNoKHN5bmMpOwotICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIC8vIElFOC0xMCAoSUU5LzEwIHdvbid0IGZpcmUgcHJvcGVydHlD aGFuZ2UgdmlhIGF0dGFjaEV2ZW50TGlzPQp0ZW5lcikKKyAgICAgICAgICAgIGlmIChlbC5sZW5n dGggJiYgZWxbMF0uYXR0YWNoRXZlbnQpIHsKKyAgICAgICAgICAgICAgICBlbC5lYWNoKGZ1bmN0 aW9uKCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5 Y2hhbmdlIiwgc2VsZi5fc3luYyk7CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9 Cj0yMAotICAgICAgICAgICAgLy8gc2FmYXJpIGFuZCBjaHJvbWUKLSAgICAgICAgICAgIGlmICh0 eXBlb2YgV2ViS2l0TXV0YXRpb25PYnNlcnZlciAhPTNEPTNEICJ1bmRlZmluZWQiKSB7CisgICAg ICAgICAgICAvLyBzYWZhcmksIGNocm9tZSwgZmlyZWZveCwgSUUxMQorICAgICAgICAgICAgb2Jz ZXJ2ZXIgPTNEIHdpbmRvdy5NdXRhdGlvbk9ic2VydmVyIHx8IHdpbmRvdy5XZWJLaXRNdXRhdGlv bk89CmJzZXJ2ZXJ8fCB3aW5kb3cuTW96TXV0YXRpb25PYnNlcnZlcjsKKyAgICAgICAgICAgIGlm IChvYnNlcnZlciAhPTNEPTNEIHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgIGlmICh0aGlz LnByb3BlcnR5T2JzZXJ2ZXIpIHsgZGVsZXRlIHRoaXMucHJvcGVydHlPYnNlcnZlcjs9CiB0aGlz LnByb3BlcnR5T2JzZXJ2ZXIgPTNEIG51bGw7IH0KLSAgICAgICAgICAgICAgICB0aGlzLnByb3Bl cnR5T2JzZXJ2ZXIgPTNEIG5ldyBXZWJLaXRNdXRhdGlvbk9ic2VydmVyKHRoaXMuPQptdXRhdGlv bkNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICB0aGlzLnByb3BlcnR5T2JzZXJ2ZXIgPTNEIG5l dyBvYnNlcnZlcihmdW5jdGlvbiAobXV0YXRpb25zPQopIHsKKyAgICAgICAgICAgICAgICAgICAg JC5lYWNoKG11dGF0aW9ucywgc2VsZi5fc3luYyk7CisgICAgICAgICAgICAgICAgfSk7CiAgICAg ICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eU9ic2VydmVyLm9ic2VydmUoZWwuZ2V0KDApLCB7IGF0 dHJpYnV0ZXM6dHJ1ZT0KLCBzdWJ0cmVlOmZhbHNlIH0pOwogICAgICAgICAgICAgfQogICAgICAg ICB9LAo9MjAKICAgICAgICAgLy8gYWJzdHJhY3QKICAgICAgICAgdHJpZ2dlclNlbGVjdDogZnVu Y3Rpb24oZGF0YSkgewotICAgICAgICAgICAgdmFyIGV2dCA9M0QgJC5FdmVudCgic2VsZWN0Mi1z ZWxlY3RpbmciLCB7IHZhbDogdGhpcy5pZChkYXRhKSw9CiBvYmplY3Q6IGRhdGEgfSk7CisgICAg ICAgICAgICB2YXIgZXZ0ID0zRCAkLkV2ZW50KCJzZWxlY3QyLXNlbGVjdGluZyIsIHsgdmFsOiB0 aGlzLmlkKGRhdGEpLD0KIG9iamVjdDogZGF0YSwgY2hvaWNlOiBkYXRhIH0pOwogICAgICAgICAg ICAgdGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcihldnQpOwogICAgICAgICAgICAgcmV0dXJuICFl dnQuaXNEZWZhdWx0UHJldmVudGVkKCk7CiAgICAgICAgIH0sCkBAIC0xMDcxLDcgKzExNjMsNyBA QAogICAgICAgICAgICAgLy8gc28gaGVyZSB3ZSB0cmlnZ2VyIHRoZSBjbGljayBldmVudCBtYW51 YWxseQogICAgICAgICAgICAgdGhpcy5vcHRzLmVsZW1lbnQuY2xpY2soKTsKPTIwCi0gICAgICAg ICAgICAvLyBWYWxpZGF0aW9uRW5naW5lIGlnbm9yZWEgdGhlIGNoYW5nZSBldmVudCBhbmQgbGlz dGVucyBpbnN0ZT0KYWQgdG8gYmx1cgorICAgICAgICAgICAgLy8gVmFsaWRhdGlvbkVuZ2luZSBp Z25vcmVzIHRoZSBjaGFuZ2UgZXZlbnQgYW5kIGxpc3RlbnMgaW5zdGU9CmFkIHRvIGJsdXIKICAg ICAgICAgICAgIC8vIHNvIGhlcmUgd2UgdHJpZ2dlciB0aGUgYmx1ciBldmVudCBtYW51YWxseSBp ZiBzbyBkZXNpcmVkCiAgICAgICAgICAgICBpZiAodGhpcy5vcHRzLmJsdXJPbkNoYW5nZSkKICAg ICAgICAgICAgICAgICB0aGlzLm9wdHMuZWxlbWVudC5ibHVyKCk7CkBAIC0xMTE1LDE3ICsxMjA3 LDE2IEBACiAgICAgICAgIC8vIGFic3RyYWN0CiAgICAgICAgIHJlYWRvbmx5OiBmdW5jdGlvbihl bmFibGVkKSB7CiAgICAgICAgICAgICBpZiAoZW5hYmxlZCA9M0Q9M0Q9M0QgdW5kZWZpbmVkKSBl bmFibGVkID0zRCBmYWxzZTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9yZWFkb25seSA9M0Q9M0Q9 M0QgZW5hYmxlZCkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKHRoaXMuX3JlYWRvbmx5 ID0zRD0zRD0zRCBlbmFibGVkKSByZXR1cm47CiAgICAgICAgICAgICB0aGlzLl9yZWFkb25seSA9 M0QgZW5hYmxlZDsKPTIwCiAgICAgICAgICAgICB0aGlzLm9wdHMuZWxlbWVudC5wcm9wKCJyZWFk b25seSIsIGVuYWJsZWQpOwogICAgICAgICAgICAgdGhpcy5lbmFibGVJbnRlcmZhY2UoKTsKLSAg ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9LAo9MjAKICAgICAgICAgLy8gYWJzdHJh Y3QKICAgICAgICAgb3BlbmVkOiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhp cy5jb250YWluZXIuaGFzQ2xhc3MoInNlbGVjdDItZHJvcGRvd24tb3BlbiIpOworICAgICAgICAg ICAgcmV0dXJuICh0aGlzLmNvbnRhaW5lcikgPyB0aGlzLmNvbnRhaW5lci5oYXNDbGFzcygic2Vs ZWN0Mi1kcm89CnBkb3duLW9wZW4iKSA6IGZhbHNlOwogICAgICAgICB9LAo9MjAKICAgICAgICAg Ly8gYWJzdHJhY3QKQEAgLTExMzUsMjAgKzEyMjYsNTggQEAKICAgICAgICAgICAgICAgICBoZWln aHQgPTNEIHRoaXMuY29udGFpbmVyLm91dGVySGVpZ2h0KGZhbHNlKSwKICAgICAgICAgICAgICAg ICB3aWR0aCA9M0QgdGhpcy5jb250YWluZXIub3V0ZXJXaWR0aChmYWxzZSksCiAgICAgICAgICAg ICAgICAgZHJvcEhlaWdodCA9M0QgJGRyb3Bkb3duLm91dGVySGVpZ2h0KGZhbHNlKSwKLSAgICAg ICAgICAgICAgICB2aWV3UG9ydFJpZ2h0ID0zRCAkKHdpbmRvdykuc2Nyb2xsTGVmdCgpICsgJCh3 aW5kb3cpLndpZHRoPQooKSwKLSAgICAgICAgICAgICAgICB2aWV3cG9ydEJvdHRvbSA9M0QgJCh3 aW5kb3cpLnNjcm9sbFRvcCgpICsgJCh3aW5kb3cpLmhlaWdoPQp0KCksCisgICAgICAgICAgICAg ICAgJHdpbmRvdyA9M0QgJCh3aW5kb3cpLAorICAgICAgICAgICAgICAgIHdpbmRvd1dpZHRoID0z RCAkd2luZG93LndpZHRoKCksCisgICAgICAgICAgICAgICAgd2luZG93SGVpZ2h0ID0zRCAkd2lu ZG93LmhlaWdodCgpLAorICAgICAgICAgICAgICAgIHZpZXdQb3J0UmlnaHQgPTNEICR3aW5kb3cu c2Nyb2xsTGVmdCgpICsgd2luZG93V2lkdGgsCisgICAgICAgICAgICAgICAgdmlld3BvcnRCb3R0 b20gPTNEICR3aW5kb3cuc2Nyb2xsVG9wKCkgKyB3aW5kb3dIZWlnaHQsCiAgICAgICAgICAgICAg ICAgZHJvcFRvcCA9M0Qgb2Zmc2V0LnRvcCArIGhlaWdodCwKICAgICAgICAgICAgICAgICBkcm9w TGVmdCA9M0Qgb2Zmc2V0LmxlZnQsCiAgICAgICAgICAgICAgICAgZW5vdWdoUm9vbUJlbG93ID0z RCBkcm9wVG9wICsgZHJvcEhlaWdodCA8PTNEIHZpZXdwb3J0Qm90dD0Kb20sCi0gICAgICAgICAg ICAgICAgZW5vdWdoUm9vbUFib3ZlID0zRCAob2Zmc2V0LnRvcCAtIGRyb3BIZWlnaHQpID49M0Qg dGhpcy5ibz0KZHkoKS5zY3JvbGxUb3AoKSwKKyAgICAgICAgICAgICAgICBlbm91Z2hSb29tQWJv dmUgPTNEIChvZmZzZXQudG9wIC0gZHJvcEhlaWdodCkgPj0zRCAkd2luZG93PQouc2Nyb2xsVG9w KCksCiAgICAgICAgICAgICAgICAgZHJvcFdpZHRoID0zRCAkZHJvcGRvd24ub3V0ZXJXaWR0aChm YWxzZSksCiAgICAgICAgICAgICAgICAgZW5vdWdoUm9vbU9uUmlnaHQgPTNEIGRyb3BMZWZ0ICsg ZHJvcFdpZHRoIDw9M0Qgdmlld1BvcnRSaT0KZ2h0LAogICAgICAgICAgICAgICAgIGFib3ZlTm93 ID0zRCAkZHJvcGRvd24uaGFzQ2xhc3MoInNlbGVjdDItZHJvcC1hYm92ZSIpLAogICAgICAgICAg ICAgICAgIGJvZHlPZmZzZXQsCiAgICAgICAgICAgICAgICAgYWJvdmUsCisgICAgICAgICAgICAg ICAgY2hhbmdlRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgIGNzcywKICAgICAgICAgICAgICAg ICByZXN1bHRzTGlzdE5vZGU7Cj0yMAorICAgICAgICAgICAgLy8gYWx3YXlzIHByZWZlciB0aGUg Y3VycmVudCBhYm92ZS9iZWxvdyBhbGlnbm1lbnQsIHVubGVzcyB0aGU9CnJlIGlzIG5vdCBlbm91 Z2ggcm9vbQorICAgICAgICAgICAgaWYgKGFib3ZlTm93KSB7CisgICAgICAgICAgICAgICAgYWJv dmUgPTNEIHRydWU7CisgICAgICAgICAgICAgICAgaWYgKCFlbm91Z2hSb29tQWJvdmUgJiYgZW5v dWdoUm9vbUJlbG93KSB7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZURpcmVjdGlvbiA9M0Qg dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWJvdmUgPTNEIGZhbHNlOworICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYWJvdmUgPTNEIGZh bHNlOworICAgICAgICAgICAgICAgIGlmICghZW5vdWdoUm9vbUJlbG93ICYmIGVub3VnaFJvb21B Ym92ZSkgeworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VEaXJlY3Rpb24gPTNEIHRydWU7Cisg ICAgICAgICAgICAgICAgICAgIGFib3ZlID0zRCB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy9pZiB3ZSBhcmUgY2hhbmdpbmcgZGlyZWN0aW9u IHdlIG5lZWQgdG8gZ2V0IHBvc2l0aW9ucyB3aGVuIGQ9CnJvcGRvd24gaXMgaGlkZGVuOworICAg ICAgICAgICAgaWYgKGNoYW5nZURpcmVjdGlvbikgeworICAgICAgICAgICAgICAgICRkcm9wZG93 bi5oaWRlKCk7CisgICAgICAgICAgICAgICAgb2Zmc2V0ID0zRCB0aGlzLmNvbnRhaW5lci5vZmZz ZXQoKTsKKyAgICAgICAgICAgICAgICBoZWlnaHQgPTNEIHRoaXMuY29udGFpbmVyLm91dGVySGVp Z2h0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICB3aWR0aCA9M0QgdGhpcy5jb250YWluZXIub3V0 ZXJXaWR0aChmYWxzZSk7CisgICAgICAgICAgICAgICAgZHJvcEhlaWdodCA9M0QgJGRyb3Bkb3du Lm91dGVySGVpZ2h0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICB2aWV3UG9ydFJpZ2h0ID0zRCAk d2luZG93LnNjcm9sbExlZnQoKSArIHdpbmRvd1dpZHRoOworICAgICAgICAgICAgICAgIHZpZXdw b3J0Qm90dG9tID0zRCAkd2luZG93LnNjcm9sbFRvcCgpICsgd2luZG93SGVpZ2h0OworICAgICAg ICAgICAgICAgIGRyb3BUb3AgPTNEIG9mZnNldC50b3AgKyBoZWlnaHQ7CisgICAgICAgICAgICAg ICAgZHJvcExlZnQgPTNEIG9mZnNldC5sZWZ0OworICAgICAgICAgICAgICAgIGRyb3BXaWR0aCA9 M0QgJGRyb3Bkb3duLm91dGVyV2lkdGgoZmFsc2UpOworICAgICAgICAgICAgICAgIGVub3VnaFJv b21PblJpZ2h0ID0zRCBkcm9wTGVmdCArIGRyb3BXaWR0aCA8PTNEIHZpZXdQb3J0Umk9CmdodDsK KyAgICAgICAgICAgICAgICAkZHJvcGRvd24uc2hvdygpOworCisgICAgICAgICAgICAgICAgLy8g Zml4IHNvIHRoZSBjdXJzb3IgZG9lcyBub3QgbW92ZSB0byB0aGUgbGVmdCB3aXRoaW4gdGhlID0K c2VhcmNoLXRleHRib3ggaW4gSUUKKyAgICAgICAgICAgICAgICB0aGlzLmZvY3VzU2VhcmNoKCk7 CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmICh0aGlzLm9wdHMuZHJvcGRvd25BdXRv V2lkdGgpIHsKICAgICAgICAgICAgICAgICByZXN1bHRzTGlzdE5vZGUgPTNEICQoJy5zZWxlY3Qy LXJlc3VsdHMnLCAkZHJvcGRvd24pWzBdOwogICAgICAgICAgICAgICAgICRkcm9wZG93bi5hZGRD bGFzcygnc2VsZWN0Mi1kcm9wLWF1dG8td2lkdGgnKTsKQEAgLTExNTYsNiArMTI4NSw3IEBACiAg ICAgICAgICAgICAgICAgLy8gQWRkIHNjcm9sbGJhciB3aWR0aCB0byBkcm9wZG93biBpZiB2ZXJ0 aWNhbCBzY3JvbGxiYXIgaT0KcyBwcmVzZW50CiAgICAgICAgICAgICAgICAgZHJvcFdpZHRoID0z RCAkZHJvcGRvd24ub3V0ZXJXaWR0aChmYWxzZSkgKyAocmVzdWx0c0xpc3RObz0KZGUuc2Nyb2xs SGVpZ2h0ID0zRD0zRD0zRCByZXN1bHRzTGlzdE5vZGUuY2xpZW50SGVpZ2h0ID8gMCA6IHNjcm9s bEJhckRpbWVuPQpzaW9ucy53aWR0aCk7CiAgICAgICAgICAgICAgICAgZHJvcFdpZHRoID4gd2lk dGggPyB3aWR0aCA9M0QgZHJvcFdpZHRoIDogZHJvcFdpZHRoID0zRCB3aT0KZHRoOworICAgICAg ICAgICAgICAgIGRyb3BIZWlnaHQgPTNEICRkcm9wZG93bi5vdXRlckhlaWdodChmYWxzZSk7CiAg ICAgICAgICAgICAgICAgZW5vdWdoUm9vbU9uUmlnaHQgPTNEIGRyb3BMZWZ0ICsgZHJvcFdpZHRo IDw9M0Qgdmlld1BvcnRSaT0KZ2h0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7 CkBAIC0xMTYzLDQzICsxMjkzLDM3IEBACiAgICAgICAgICAgICB9Cj0yMAogICAgICAgICAgICAg Ly9jb25zb2xlLmxvZygiYmVsb3cvIGRyb3B0b3A6IiwgZHJvcFRvcCwgImRyb3BIZWlnaHQiLCBk cm9wSGU9CmlnaHQsICJzdW0iLCAoZHJvcFRvcCtkcm9wSGVpZ2h0KSsiIHZpZXdwb3J0IGJvdHRv bSIsIHZpZXdwb3J0Qm90dG9tLCAiZW5vdT0KZ2g/IiwgZW5vdWdoUm9vbUJlbG93KTsKLSAgICAg ICAgICAgIC8vY29uc29sZS5sb2coImFib3ZlLyBvZmZzZXQudG9wIiwgb2Zmc2V0LnRvcCwgImRy b3BIZWlnaHQiLCBkPQpyb3BIZWlnaHQsICJ0b3AiLCAob2Zmc2V0LnRvcC1kcm9wSGVpZ2h0KSwg InNjcm9sbFRvcCIsIHRoaXMuYm9keSgpLnNjcm9sbFQ9Cm9wKCksICJlbm91Z2g/IiwgZW5vdWdo Um9vbUFib3ZlKTsKKyAgICAgICAgICAgIC8vY29uc29sZS5sb2coImFib3ZlLyBvZmZzZXQudG9w Iiwgb2Zmc2V0LnRvcCwgImRyb3BIZWlnaHQiLCBkPQpyb3BIZWlnaHQsICJ0b3AiLCAob2Zmc2V0 LnRvcC1kcm9wSGVpZ2h0KSwgInNjcm9sbFRvcCIsIHRoaXMuYm9keS5zY3JvbGxUb3A9CigpLCAi ZW5vdWdoPyIsIGVub3VnaFJvb21BYm92ZSk7Cj0yMAogICAgICAgICAgICAgLy8gZml4IHBvc2l0 aW9uaW5nIHdoZW4gYm9keSBoYXMgYW4gb2Zmc2V0IGFuZCBpcyBub3QgcG9zaXRpb249Cjogc3Rh dGljCi0gICAgICAgICAgICBpZiAodGhpcy5ib2R5KCkuY3NzKCdwb3NpdGlvbicpICE9M0Q9M0Qg J3N0YXRpYycpIHsKLSAgICAgICAgICAgICAgICBib2R5T2Zmc2V0ID0zRCB0aGlzLmJvZHkoKS5v ZmZzZXQoKTsKKyAgICAgICAgICAgIGlmICh0aGlzLmJvZHkuY3NzKCdwb3NpdGlvbicpICE9M0Q9 M0QgJ3N0YXRpYycpIHsKKyAgICAgICAgICAgICAgICBib2R5T2Zmc2V0ID0zRCB0aGlzLmJvZHku b2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgZHJvcFRvcCAtPTNEIGJvZHlPZmZzZXQudG9wOwog ICAgICAgICAgICAgICAgIGRyb3BMZWZ0IC09M0QgYm9keU9mZnNldC5sZWZ0OwogICAgICAgICAg ICAgfQo9MjAKLSAgICAgICAgICAgIC8vIGFsd2F5cyBwcmVmZXIgdGhlIGN1cnJlbnQgYWJvdmUv YmVsb3cgYWxpZ25tZW50LCB1bmxlc3MgdGhlPQpyZSBpcyBub3QgZW5vdWdoIHJvb20KLSAgICAg ICAgICAgIGlmIChhYm92ZU5vdykgewotICAgICAgICAgICAgICAgIGFib3ZlID0zRCB0cnVlOwot ICAgICAgICAgICAgICAgIGlmICghZW5vdWdoUm9vbUFib3ZlICYmIGVub3VnaFJvb21CZWxvdykg YWJvdmUgPTNEIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBh Ym92ZSA9M0QgZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKCFlbm91Z2hSb29tQmVsb3cgJiYg ZW5vdWdoUm9vbUFib3ZlKSBhYm92ZSA9M0QgdHJ1ZTsKKyAgICAgICAgICAgIGlmICghZW5vdWdo Um9vbU9uUmlnaHQpIHsKKyAgICAgICAgICAgICAgICBkcm9wTGVmdCA9M0Qgb2Zmc2V0LmxlZnQg KyB0aGlzLmNvbnRhaW5lci5vdXRlcldpZHRoKGZhbHNlPQopIC0gZHJvcFdpZHRoOwogICAgICAg ICAgICAgfQo9MjAKLSAgICAgICAgICAgIGlmICghZW5vdWdoUm9vbU9uUmlnaHQpIHsKLSAgICAg ICAgICAgICAgIGRyb3BMZWZ0ID0zRCBvZmZzZXQubGVmdCArIHdpZHRoIC0gZHJvcFdpZHRoOwot ICAgICAgICAgICAgfQorICAgICAgICAgICAgY3NzID0zRCAgeworICAgICAgICAgICAgICAgIGxl ZnQ6IGRyb3BMZWZ0LAorICAgICAgICAgICAgICAgIHdpZHRoOiB3aWR0aAorICAgICAgICAgICAg fTsKPTIwCiAgICAgICAgICAgICBpZiAoYWJvdmUpIHsKLSAgICAgICAgICAgICAgICBkcm9wVG9w ID0zRCBvZmZzZXQudG9wIC0gZHJvcEhlaWdodDsKKyAgICAgICAgICAgICAgICBjc3MudG9wID0z RCBvZmZzZXQudG9wIC0gZHJvcEhlaWdodDsKKyAgICAgICAgICAgICAgICBjc3MuYm90dG9tID0z RCAnYXV0byc7CiAgICAgICAgICAgICAgICAgdGhpcy5jb250YWluZXIuYWRkQ2xhc3MoInNlbGVj dDItZHJvcC1hYm92ZSIpOwogICAgICAgICAgICAgICAgICRkcm9wZG93bi5hZGRDbGFzcygic2Vs ZWN0Mi1kcm9wLWFib3ZlIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKKyAg ICAgICAgICAgICAgICBjc3MudG9wID0zRCBkcm9wVG9wOworICAgICAgICAgICAgICAgIGNzcy5i b3R0b20gPTNEICdhdXRvJzsKICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5yZW1vdmVD bGFzcygic2VsZWN0Mi1kcm9wLWFib3ZlIik7CiAgICAgICAgICAgICAgICAgJGRyb3Bkb3duLnJl bW92ZUNsYXNzKCJzZWxlY3QyLWRyb3AtYWJvdmUiKTsKICAgICAgICAgICAgIH0KLQotICAgICAg ICAgICAgY3NzID0zRCAkLmV4dGVuZCh7Ci0gICAgICAgICAgICAgICAgdG9wOiBkcm9wVG9wLAot ICAgICAgICAgICAgICAgIGxlZnQ6IGRyb3BMZWZ0LAotICAgICAgICAgICAgICAgIHdpZHRoOiB3 aWR0aAotICAgICAgICAgICAgfSwgZXZhbHVhdGUodGhpcy5vcHRzLmRyb3Bkb3duQ3NzKSk7Cisg ICAgICAgICAgICBjc3MgPTNEICQuZXh0ZW5kKGNzcywgZXZhbHVhdGUodGhpcy5vcHRzLmRyb3Bk b3duQ3NzLCB0aGlzLm9wdD0Kcy5lbGVtZW50KSk7Cj0yMAogICAgICAgICAgICAgJGRyb3Bkb3du LmNzcyhjc3MpOwogICAgICAgICB9LApAQCAtMTIzNyw2ICsxMzYxLDEyIEBACj0yMAogICAgICAg ICAgICAgdGhpcy5vcGVuaW5nKCk7Cj0yMAorICAgICAgICAgICAgLy8gT25seSBiaW5kIHRoZSBk b2N1bWVudCBtb3VzZW1vdmUgd2hlbiB0aGUgZHJvcGRvd24gaXMgdmlzaWI9CmxlCisgICAgICAg ICAgICAkZG9jdW1lbnQub24oIm1vdXNlbW92ZS5zZWxlY3QyRXZlbnQiLCBmdW5jdGlvbiAoZSkg eworICAgICAgICAgICAgICAgIGxhc3RNb3VzZVBvc2l0aW9uLnggPTNEIGUucGFnZVg7CisgICAg ICAgICAgICAgICAgbGFzdE1vdXNlUG9zaXRpb24ueSA9M0QgZS5wYWdlWTsKKyAgICAgICAgICAg IH0pOworCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSwKPTIwCkBAIC0xMjQ1 LDM1ICsxMzc1LDM4IEBACiAgICAgICAgICAqLwogICAgICAgICAvLyBhYnN0cmFjdAogICAgICAg ICBvcGVuaW5nOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZhciBjaWQgPTNEIHRoaXMuY29u dGFpbmVySWQsCisgICAgICAgICAgICB2YXIgY2lkID0zRCB0aGlzLmNvbnRhaW5lckV2ZW50TmFt ZSwKICAgICAgICAgICAgICAgICBzY3JvbGwgPTNEICJzY3JvbGwuIiArIGNpZCwKICAgICAgICAg ICAgICAgICByZXNpemUgPTNEICJyZXNpemUuIitjaWQsCiAgICAgICAgICAgICAgICAgb3JpZW50 ID0zRCAib3JpZW50YXRpb25jaGFuZ2UuIitjaWQsCi0gICAgICAgICAgICAgICAgbWFzaywgbWFz a0NzczsKKyAgICAgICAgICAgICAgICBtYXNrOwo9MjAKICAgICAgICAgICAgIHRoaXMuY29udGFp bmVyLmFkZENsYXNzKCJzZWxlY3QyLWRyb3Bkb3duLW9wZW4iKS5hZGRDbGFzcygic2VsPQplY3Qy LWNvbnRhaW5lci1hY3RpdmUiKTsKPTIwCiAgICAgICAgICAgICB0aGlzLmNsZWFyRHJvcGRvd25B bGlnbm1lbnRQcmVmZXJlbmNlKCk7Cj0yMAotICAgICAgICAgICAgaWYodGhpcy5kcm9wZG93blsw XSAhPTNEPTNEIHRoaXMuYm9keSgpLmNoaWxkcmVuKCkubGFzdCgpWzBdKSB7Ci0gICAgICAgICAg ICAgICAgdGhpcy5kcm9wZG93bi5kZXRhY2goKS5hcHBlbmRUbyh0aGlzLmJvZHkoKSk7CisgICAg ICAgICAgICBpZih0aGlzLmRyb3Bkb3duWzBdICE9M0Q9M0QgdGhpcy5ib2R5LmNoaWxkcmVuKCku bGFzdCgpWzBdKSB7CisgICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5kZXRhY2goKS5hcHBl bmRUbyh0aGlzLmJvZHkpOwogICAgICAgICAgICAgfQo9MjAKLSAgICAgICAgICAgIC8vIGNyZWF0 ZSB0aGUgZHJvcGRvd24gbWFzayBpZiBkb2VzbnQgYWxyZWFkeSBleGlzdAorICAgICAgICAgICAg Ly8gY3JlYXRlIHRoZSBkcm9wZG93biBtYXNrIGlmIGRvZXNuJ3QgYWxyZWFkeSBleGlzdAogICAg ICAgICAgICAgbWFzayA9M0QgJCgiI3NlbGVjdDItZHJvcC1tYXNrIik7CiAgICAgICAgICAgICBp ZiAobWFzay5sZW5ndGggPTNEPTNEIDApIHsKICAgICAgICAgICAgICAgICBtYXNrID0zRCAkKGRv Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAgICAgICAgICAgICAgICBtYXNrLmF0dHIo ImlkIiwic2VsZWN0Mi1kcm9wLW1hc2siKS5hdHRyKCJjbGFzcyIsInNlbGVjdDItPQpkcm9wLW1h c2siKTsKICAgICAgICAgICAgICAgICBtYXNrLmhpZGUoKTsKLSAgICAgICAgICAgICAgICBtYXNr LmFwcGVuZFRvKHRoaXMuYm9keSgpKTsKKyAgICAgICAgICAgICAgICBtYXNrLmFwcGVuZFRvKHRo aXMuYm9keSk7CiAgICAgICAgICAgICAgICAgbWFzay5vbigibW91c2Vkb3duIHRvdWNoc3RhcnQg Y2xpY2siLCBmdW5jdGlvbiAoZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBQcmV2ZW50IElF IGZyb20gZ2VuZXJhdGluZyBhIGNsaWNrIGV2ZW50IG9uIHRoZSBib2R5CisgICAgICAgICAgICAg ICAgICAgIHJlaW5zZXJ0RWxlbWVudChtYXNrKTsKKwogICAgICAgICAgICAgICAgICAgICB2YXIg ZHJvcGRvd24gPTNEICQoIiNzZWxlY3QyLWRyb3AiKSwgc2VsZjsKICAgICAgICAgICAgICAgICAg ICAgaWYgKGRyb3Bkb3duLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGY9M0Rkcm9wZG93bi5kYXRhKCJzZWxlY3QyIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoc2VsZi5vcHRzLnNlbGVjdE9uQmx1cikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc2VsZWN0SGlnaGxpZ2h0ZWQoe25vRm9jdXM6IHRydWV9KTsKICAgICAgICAgICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xvc2Uoe2ZvY3VzOmZh bHNlfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7CiAgICAgICAgICAg ICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgICAg ICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xMzAzLDcg KzE0MzYsNyBAQAogICAgICAgICAgICAgdmFyIHRoYXQgPTNEIHRoaXM7CiAgICAgICAgICAgICB0 aGlzLmNvbnRhaW5lci5wYXJlbnRzKCkuYWRkKHdpbmRvdykuZWFjaChmdW5jdGlvbiAoKSB7CiAg ICAgICAgICAgICAgICAgJCh0aGlzKS5vbihyZXNpemUrIiAiK3Njcm9sbCsiICIrb3JpZW50LCBm dW5jdGlvbiAoZSkgewotICAgICAgICAgICAgICAgICAgICB0aGF0LnBvc2l0aW9uRHJvcGRvd24o KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoYXQub3BlbmVkKCkpIHRoYXQucG9zaXRpb25E cm9wZG93bigpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7Cj0yMApAQCAt MTMxNCw3ICsxNDQ3LDcgQEAKICAgICAgICAgY2xvc2U6IGZ1bmN0aW9uICgpIHsKICAgICAgICAg ICAgIGlmICghdGhpcy5vcGVuZWQoKSkgcmV0dXJuOwo9MjAKLSAgICAgICAgICAgIHZhciBjaWQg PTNEIHRoaXMuY29udGFpbmVySWQsCisgICAgICAgICAgICB2YXIgY2lkID0zRCB0aGlzLmNvbnRh aW5lckV2ZW50TmFtZSwKICAgICAgICAgICAgICAgICBzY3JvbGwgPTNEICJzY3JvbGwuIiArIGNp ZCwKICAgICAgICAgICAgICAgICByZXNpemUgPTNEICJyZXNpemUuIitjaWQsCiAgICAgICAgICAg ICAgICAgb3JpZW50ID0zRCAib3JpZW50YXRpb25jaGFuZ2UuIitjaWQ7CkBAIC0xMzMwLDYgKzE0 NjMsOCBAQAogICAgICAgICAgICAgdGhpcy5jb250YWluZXIucmVtb3ZlQ2xhc3MoInNlbGVjdDIt ZHJvcGRvd24tb3BlbiIpLnJlbW92ZUNsYXM9CnMoInNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSIp OwogICAgICAgICAgICAgdGhpcy5yZXN1bHRzLmVtcHR5KCk7Cj0yMAorICAgICAgICAgICAgLy8g Tm93IHRoYXQgdGhlIGRyb3Bkb3duIGlzIGNsb3NlZCwgdW5iaW5kIHRoZSBnbG9iYWwgZG9jdW1l bnQ9CiBtb3VzZW1vdmUgZXZlbnQKKyAgICAgICAgICAgICRkb2N1bWVudC5vZmYoIm1vdXNlbW92 ZS5zZWxlY3QyRXZlbnQiKTsKPTIwCiAgICAgICAgICAgICB0aGlzLmNsZWFyU2VhcmNoKCk7CiAg ICAgICAgICAgICB0aGlzLnNlYXJjaC5yZW1vdmVDbGFzcygic2VsZWN0Mi1hY3RpdmUiKTsKQEAg LTEzNTMsMTIgKzE0ODgsMTIgQEAKPTIwCiAgICAgICAgIC8vYWJzdHJhY3QKICAgICAgICAgZ2V0 TWF4aW11bVNlbGVjdGlvblNpemU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcmV0dXJuIGV2 YWx1YXRlKHRoaXMub3B0cy5tYXhpbXVtU2VsZWN0aW9uU2l6ZSk7CisgICAgICAgICAgICByZXR1 cm4gZXZhbHVhdGUodGhpcy5vcHRzLm1heGltdW1TZWxlY3Rpb25TaXplLCB0aGlzLm9wdHMuZWxl bT0KZW50KTsKICAgICAgICAgfSwKPTIwCiAgICAgICAgIC8vIGFic3RyYWN0CiAgICAgICAgIGVu c3VyZUhpZ2hsaWdodFZpc2libGU6IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHZhciByZXN1 bHRzID0zRCB0aGlzLnJlc3VsdHMsIGNoaWxkcmVuLCBpbmRleCwgY2hpbGQsIGhiLCByYiwgPQp5 LCBtb3JlOworICAgICAgICAgICAgdmFyIHJlc3VsdHMgPTNEIHRoaXMucmVzdWx0cywgY2hpbGRy ZW4sIGluZGV4LCBjaGlsZCwgaGIsIHJiLCA9CnksIG1vcmUsIHRvcE9mZnNldDsKPTIwCiAgICAg ICAgICAgICBpbmRleCA9M0QgdGhpcy5oaWdobGlnaHQoKTsKPTIwCkBAIC0xMzc4LDcgKzE1MTMs OSBAQAo9MjAKICAgICAgICAgICAgIGNoaWxkID0zRCAkKGNoaWxkcmVuW2luZGV4XSk7Cj0yMAot ICAgICAgICAgICAgaGIgPTNEIGNoaWxkLm9mZnNldCgpLnRvcCArIGNoaWxkLm91dGVySGVpZ2h0 KHRydWUpOworICAgICAgICAgICAgdG9wT2Zmc2V0ID0zRCAoY2hpbGQub2Zmc2V0KCkgfHwge30p LnRvcCB8fCAwOworCisgICAgICAgICAgICBoYiA9M0QgdG9wT2Zmc2V0ICsgY2hpbGQub3V0ZXJI ZWlnaHQodHJ1ZSk7Cj0yMAogICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyB0aGUgbGFzdCBjaGls ZCBsZXRzIGFsc28gbWFrZSBzdXJlIHNlbGVjdDItbW9yZS09CnJlc3VsdHMgaXMgdmlzaWJsZQog ICAgICAgICAgICAgaWYgKGluZGV4ID0zRD0zRD0zRCBjaGlsZHJlbi5sZW5ndGggLSAxKSB7CkBA IC0xMzkyLDcgKzE1MjksNyBAQAogICAgICAgICAgICAgaWYgKGhiID4gcmIpIHsKICAgICAgICAg ICAgICAgICByZXN1bHRzLnNjcm9sbFRvcChyZXN1bHRzLnNjcm9sbFRvcCgpICsgKGhiIC0gcmIp KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHkgPTNEIGNoaWxkLm9mZnNldCgpLnRvcCAt IHJlc3VsdHMub2Zmc2V0KCkudG9wOworICAgICAgICAgICAgeSA9M0QgdG9wT2Zmc2V0IC0gcmVz dWx0cy5vZmZzZXQoKS50b3A7Cj0yMAogICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZSB0b3Ag b2YgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZQogICAgICAgICAgICAgaWYgKHkgPCAwICYmIGNoaWxk LmNzcygnZGlzcGxheScpICE9M0QgJ25vbmUnICkgewpAQCAtMTQwMiw3ICsxNTM5LDcgQEAKPTIw CiAgICAgICAgIC8vIGFic3RyYWN0CiAgICAgICAgIGZpbmRIaWdobGlnaHRhYmxlQ2hvaWNlczog ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRzLmZpbmQoIi5zZWxl Y3QyLXJlc3VsdC1zZWxlY3RhYmxlOm5vdCguc2VsZT0KY3QyLWRpc2FibGVkKSIpOworICAgICAg ICAgICAgcmV0dXJuIHRoaXMucmVzdWx0cy5maW5kKCIuc2VsZWN0Mi1yZXN1bHQtc2VsZWN0YWJs ZTpub3QoLnNlbGU9CmN0Mi1kaXNhYmxlZCk6bm90KC5zZWxlY3QyLXNlbGVjdGVkKSIpOwogICAg ICAgICB9LAo9MjAKICAgICAgICAgLy8gYWJzdHJhY3QKQEAgLTE0MzgsOCArMTU3NSwxMyBAQAog ICAgICAgICAgICAgY2hvaWNlID0zRCAkKGNob2ljZXNbaW5kZXhdKTsKICAgICAgICAgICAgIGNo b2ljZS5hZGRDbGFzcygic2VsZWN0Mi1oaWdobGlnaHRlZCIpOwo9MjAKKyAgICAgICAgICAgIC8v IGVuc3VyZSBhc3Npc3RpdmUgdGVjaG5vbG9neSBjYW4gZGV0ZXJtaW5lIHRoZSBhY3RpdmUgY2hv aWNlCisgICAgICAgICAgICB0aGlzLnNlYXJjaC5hdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQi LCBjaG9pY2UuZmluZCgiLnNlbGVjdD0KMi1yZXN1bHQtbGFiZWwiKS5hdHRyKCJpZCIpKTsKKwog ICAgICAgICAgICAgdGhpcy5lbnN1cmVIaWdobGlnaHRWaXNpYmxlKCk7Cj0yMAorICAgICAgICAg ICAgdGhpcy5saXZlUmVnaW9uLnRleHQoY2hvaWNlLnRleHQoKSk7CisKICAgICAgICAgICAgIGRh dGEgPTNEIGNob2ljZS5kYXRhKCJzZWxlY3QyLWRhdGEiKTsKICAgICAgICAgICAgIGlmIChkYXRh KSB7CiAgICAgICAgICAgICAgICAgdGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcih7IHR5cGU6ICJz ZWxlY3QyLWhpZ2hsaWdodCIsIHZhbD0KOiB0aGlzLmlkKGRhdGEpLCBjaG9pY2U6IGRhdGEgfSk7 CkBAIC0xNDUwLDYgKzE1OTIsMTQgQEAKICAgICAgICAgICAgIHRoaXMucmVzdWx0cy5maW5kKCIu c2VsZWN0Mi1oaWdobGlnaHRlZCIpLnJlbW92ZUNsYXNzKCJzZWxlY3QyPQotaGlnaGxpZ2h0ZWQi KTsKICAgICAgICAgfSwKPTIwCisgICAgICAgIHRvdWNoTW92ZWQ6IGZ1bmN0aW9uKCkgeworICAg ICAgICAgICAgdGhpcy5fdG91Y2hNb3ZlZCA9M0QgdHJ1ZTsKKyAgICAgICAgfSwKKworICAgICAg ICBjbGVhclRvdWNoTW92ZWQ6IGZ1bmN0aW9uKCkgeworICAgICAgICAgIHRoaXMuX3RvdWNoTW92 ZWQgPTNEIGZhbHNlOworICAgICAgICB9LAorCiAgICAgICAgIC8vIGFic3RyYWN0CiAgICAgICAg IGNvdW50U2VsZWN0YWJsZVJlc3VsdHM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgcmV0dXJu IHRoaXMuZmluZEhpZ2hsaWdodGFibGVDaG9pY2VzKCkubGVuZ3RoOwpAQCAtMTQ3Miw3ICsxNjIy LDYgQEAKICAgICAgICAgICAgIHZhciByZXN1bHRzID0zRCB0aGlzLnJlc3VsdHMsCiAgICAgICAg ICAgICAgICAgbW9yZSA9M0QgcmVzdWx0cy5maW5kKCJsaS5zZWxlY3QyLW1vcmUtcmVzdWx0cyIp LAogICAgICAgICAgICAgICAgIGJlbG93LCAvLyBwaXhlbHMgdGhlIGVsZW1lbnQgaXMgYmVsb3cg dGhlIHNjcm9sbCBmb2xkLCBiZWw9Cm93PTNEPTNEMCBpcyB3aGVuIHRoZSBlbGVtZW50IGlzIHN0 YXJ0aW5nIHRvIGJlIHZpc2libGUKLSAgICAgICAgICAgICAgICBvZmZzZXQgPTNEIC0xLCAvLyBp bmRleCBvZiBmaXJzdCBlbGVtZW50IHdpdGhvdXQgZGF0YQogICAgICAgICAgICAgICAgIHBhZ2Ug PTNEIHRoaXMucmVzdWx0c1BhZ2UgKyAxLAogICAgICAgICAgICAgICAgIHNlbGY9M0R0aGlzLAog ICAgICAgICAgICAgICAgIHRlcm09M0R0aGlzLnNlYXJjaC52YWwoKSwKQEAgLTE0OTksNyArMTY0 OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdHByb2Nlc3NSZXN1bHRzKGRhdGEs IGZhbHNlLCBmYWxzZSk7Cj0yMAogICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5tb3JlPTNE PTNEPTNEdHJ1ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbW9yZS5kZXRhY2goKS5hcHBl bmRUbyhyZXN1bHRzKS50ZXh0KHNlbGYub3B0cy5mb3I9Cm1hdExvYWRNb3JlKHBhZ2UrMSkpOwor ICAgICAgICAgICAgICAgICAgICAgICAgbW9yZS5kZXRhY2goKS5hcHBlbmRUbyhyZXN1bHRzKS50 ZXh0KGV2YWx1YXRlKHNlbGY9Ci5vcHRzLmZvcm1hdExvYWRNb3JlLCBzZWxmLm9wdHMuZWxlbWVu dCwgcGFnZSsxKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dChm dW5jdGlvbigpIHsgc2VsZi5sb2FkTW9yZUlmTmVlZD0KZWQoKTsgfSwgMTApOwogICAgICAgICAg ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgbW9yZS5yZW1vdmUo KTsKQEAgLTE1NDgsNiArMTY5NywxMiBAQAogICAgICAgICAgICAgZnVuY3Rpb24gcG9zdFJlbmRl cigpIHsKICAgICAgICAgICAgICAgICBzZWFyY2gucmVtb3ZlQ2xhc3MoInNlbGVjdDItYWN0aXZl Iik7CiAgICAgICAgICAgICAgICAgc2VsZi5wb3NpdGlvbkRyb3Bkb3duKCk7CisgICAgICAgICAg ICAgICAgaWYgKHJlc3VsdHMuZmluZCgnLnNlbGVjdDItbm8tcmVzdWx0cywuc2VsZWN0Mi1zZWxl Y3Rpb24tbD0KaW1pdCwuc2VsZWN0Mi1zZWFyY2hpbmcnKS5sZW5ndGgpIHsKKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5saXZlUmVnaW9uLnRleHQocmVzdWx0cy50ZXh0KCkpOworICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2Vs Zi5saXZlUmVnaW9uLnRleHQoc2VsZi5vcHRzLmZvcm1hdE1hdGNoZXMocmVzdWx0cy5mPQppbmQo Jy5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlJykubGVuZ3RoKSk7CisgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgfQo9MjAKICAgICAgICAgICAgIGZ1bmN0aW9uIHJlbmRlcihodG1sKSB7 CkBAIC0xNTYxLDE0ICsxNzE2LDE0IEBACiAgICAgICAgICAgICBpZiAobWF4U2VsU2l6ZSA+PTNE MSkgewogICAgICAgICAgICAgICAgIGRhdGEgPTNEIHRoaXMuZGF0YSgpOwogICAgICAgICAgICAg ICAgIGlmICgkLmlzQXJyYXkoZGF0YSkgJiYgZGF0YS5sZW5ndGggPj0zRCBtYXhTZWxTaXplICYm IGNoZWM9CmtGb3JtYXR0ZXIob3B0cy5mb3JtYXRTZWxlY3Rpb25Ub29CaWcsICJmb3JtYXRTZWxl Y3Rpb25Ub29CaWciKSkgewotICAgICAgICAgICAgICAgICAgICByZW5kZXIoIjxsaSBjbGFzcz0z RCdzZWxlY3QyLXNlbGVjdGlvbi1saW1pdCc+IiArIG9wdHM9Ci5mb3JtYXRTZWxlY3Rpb25Ub29C aWcobWF4U2VsU2l6ZSkgKyAiPC9saT4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmVuZGVyKCI8 bGkgY2xhc3M9M0Qnc2VsZWN0Mi1zZWxlY3Rpb24tbGltaXQnPiIgKyBldmFsPQp1YXRlKG9wdHMu Zm9ybWF0U2VsZWN0aW9uVG9vQmlnLCBvcHRzLmVsZW1lbnQsIG1heFNlbFNpemUpICsgIjwvbGk+ Iik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAg ICAgICAgICB9Cj0yMAogICAgICAgICAgICAgaWYgKHNlYXJjaC52YWwoKS5sZW5ndGggPCBvcHRz Lm1pbmltdW1JbnB1dExlbmd0aCkgewogICAgICAgICAgICAgICAgIGlmIChjaGVja0Zvcm1hdHRl cihvcHRzLmZvcm1hdElucHV0VG9vU2hvcnQsICJmb3JtYXRJbnB1dFQ9Cm9vU2hvcnQiKSkgewot ICAgICAgICAgICAgICAgICAgICByZW5kZXIoIjxsaSBjbGFzcz0zRCdzZWxlY3QyLW5vLXJlc3Vs dHMnPiIgKyBvcHRzLmZvcm09CmF0SW5wdXRUb29TaG9ydChzZWFyY2gudmFsKCksIG9wdHMubWlu aW11bUlucHV0TGVuZ3RoKSArICI8L2xpPiIpOworICAgICAgICAgICAgICAgICAgICByZW5kZXIo IjxsaSBjbGFzcz0zRCdzZWxlY3QyLW5vLXJlc3VsdHMnPiIgKyBldmFsdWF0ZSg9Cm9wdHMuZm9y bWF0SW5wdXRUb29TaG9ydCwgb3B0cy5lbGVtZW50LCBzZWFyY2gudmFsKCksIG9wdHMubWluaW11 bUlucHV0TGVuZz0KdGgpICsgIjwvbGk+Iik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg ICAgICAgICAgICAgICAgICAgcmVuZGVyKCIiKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xNTc4 LDcgKzE3MzMsNyBAQAo9MjAKICAgICAgICAgICAgIGlmIChvcHRzLm1heGltdW1JbnB1dExlbmd0 aCAmJiBzZWFyY2gudmFsKCkubGVuZ3RoID4gb3B0cy5tYXhpPQptdW1JbnB1dExlbmd0aCkgewog ICAgICAgICAgICAgICAgIGlmIChjaGVja0Zvcm1hdHRlcihvcHRzLmZvcm1hdElucHV0VG9vTG9u ZywgImZvcm1hdElucHV0VG89Cm9Mb25nIikpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVuZGVy KCI8bGkgY2xhc3M9M0Qnc2VsZWN0Mi1uby1yZXN1bHRzJz4iICsgb3B0cy5mb3JtPQphdElucHV0 VG9vTG9uZyhzZWFyY2gudmFsKCksIG9wdHMubWF4aW11bUlucHV0TGVuZ3RoKSArICI8L2xpPiIp OworICAgICAgICAgICAgICAgICAgICByZW5kZXIoIjxsaSBjbGFzcz0zRCdzZWxlY3QyLW5vLXJl c3VsdHMnPiIgKyBldmFsdWF0ZSg9Cm9wdHMuZm9ybWF0SW5wdXRUb29Mb25nLCBvcHRzLmVsZW1l bnQsIHNlYXJjaC52YWwoKSwgb3B0cy5tYXhpbXVtSW5wdXRMZW5ndD0KaCkgKyAiPC9saT4iKTsK ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICByZW5kZXIoIiIp OwogICAgICAgICAgICAgICAgIH0KQEAgLTE1ODYsNyArMTc0MSw3IEBACiAgICAgICAgICAgICB9 Cj0yMAogICAgICAgICAgICAgaWYgKG9wdHMuZm9ybWF0U2VhcmNoaW5nICYmIHRoaXMuZmluZEhp Z2hsaWdodGFibGVDaG9pY2VzKCkubGU9Cm5ndGggPTNEPTNEPTNEIDApIHsKLSAgICAgICAgICAg ICAgICByZW5kZXIoIjxsaSBjbGFzcz0zRCdzZWxlY3QyLXNlYXJjaGluZyc+IiArIG9wdHMuZm9y bWF0U2VhPQpyY2hpbmcoKSArICI8L2xpPiIpOworICAgICAgICAgICAgICAgIHJlbmRlcigiPGxp IGNsYXNzPTNEJ3NlbGVjdDItc2VhcmNoaW5nJz4iICsgZXZhbHVhdGUob3B0cy49CmZvcm1hdFNl YXJjaGluZywgb3B0cy5lbGVtZW50KSArICI8L2xpPiIpOwogICAgICAgICAgICAgfQo9MjAKICAg ICAgICAgICAgIHNlYXJjaC5hZGRDbGFzcygic2VsZWN0Mi1hY3RpdmUiKTsKQEAgLTE2MjEsNiAr MTc3NiwxMiBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg fQo9MjAKKyAgICAgICAgICAgICAgICAvLyBoYW5kbGUgYWpheCBlcnJvcgorICAgICAgICAgICAg ICAgIGlmKGRhdGEuaGFzRXJyb3IgIT0zRD0zRCB1bmRlZmluZWQgJiYgY2hlY2tGb3JtYXR0ZXIo b3B0cy49CmZvcm1hdEFqYXhFcnJvciwgImZvcm1hdEFqYXhFcnJvciIpKSB7CisgICAgICAgICAg ICAgICAgICAgIHJlbmRlcigiPGxpIGNsYXNzPTNEJ3NlbGVjdDItYWpheC1lcnJvcic+IiArIGV2 YWx1YXRlKD0Kb3B0cy5mb3JtYXRBamF4RXJyb3IsIG9wdHMuZWxlbWVudCwgZGF0YS5qcVhIUiwg ZGF0YS50ZXh0U3RhdHVzLCBkYXRhLmVycm9yPQpUaHJvd24pICsgIjwvbGk+Iik7CisgICAgICAg ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAg ICAvLyBzYXZlIGNvbnRleHQsIGlmIGFueQogICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9 M0QgKGRhdGEuY29udGV4dD0zRD0zRD0zRHVuZGVmaW5lZCkgPyBudWxsIDo9CiBkYXRhLmNvbnRl eHQ7CiAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIGEgZGVmYXVsdCBjaG9pY2UgYW5kIHByZXBl bmQgaXQgdG8gdGhlIGxpc3QKQEAgLTE2MzEsMTMgKzE3OTIsMTMgQEAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBlcXVhbChzZWxmLmlkKHRoaXMpLCBzZWxmLmlkKGRlZikpOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIH0pLmxlbmd0aCA9M0Q9M0Q9M0QgMCkgewotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGEucmVzdWx0cy51bnNoaWZ0KGRlZik7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGhpcy5vcHRzLmNyZWF0ZVNlYXJjaENob2ljZVBvc2l0aW9uKGRhdGEu cmVzdT0KbHRzLCBkZWYpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQo9MjAKICAgICAgICAgICAgICAgICBpZiAoZGF0 YS5yZXN1bHRzLmxlbmd0aCA9M0Q9M0Q9M0QgMCAmJiBjaGVja0Zvcm1hdHRlcihvcHRzPQouZm9y bWF0Tm9NYXRjaGVzLCAiZm9ybWF0Tm9NYXRjaGVzIikpIHsKLSAgICAgICAgICAgICAgICAgICAg cmVuZGVyKCI8bGkgY2xhc3M9M0Qnc2VsZWN0Mi1uby1yZXN1bHRzJz4iICsgb3B0cy5mb3JtPQph dE5vTWF0Y2hlcyhzZWFyY2gudmFsKCkpICsgIjwvbGk+Iik7CisgICAgICAgICAgICAgICAgICAg IHJlbmRlcigiPGxpIGNsYXNzPTNEJ3NlbGVjdDItbm8tcmVzdWx0cyc+IiArIGV2YWx1YXRlKD0K b3B0cy5mb3JtYXROb01hdGNoZXMsIG9wdHMuZWxlbWVudCwgc2VhcmNoLnZhbCgpKSArICI8L2xp PiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQo9MjAK QEAgLTE2NDUsNyArMTgwNiw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5vcHRzLnBvcHVsYXRl UmVzdWx0cy5jYWxsKHRoaXMsIHJlc3VsdHMsIGRhdGEucmVzdWx0cz0KLCB7dGVybTogc2VhcmNo LnZhbCgpLCBwYWdlOiB0aGlzLnJlc3VsdHNQYWdlLCBjb250ZXh0Om51bGx9KTsKPTIwCiAgICAg ICAgICAgICAgICAgaWYgKGRhdGEubW9yZSA9M0Q9M0Q9M0QgdHJ1ZSAmJiBjaGVja0Zvcm1hdHRl cihvcHRzLmZvcm1hdD0KTG9hZE1vcmUsICJmb3JtYXRMb2FkTW9yZSIpKSB7Ci0gICAgICAgICAg ICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKCI8bGkgY2xhc3M9M0Qnc2VsZWN0Mi1tb3JlLXJlc3Vs dHMnPiIgKz0KIHNlbGYub3B0cy5lc2NhcGVNYXJrdXAob3B0cy5mb3JtYXRMb2FkTW9yZSh0aGlz LnJlc3VsdHNQYWdlKSkgKyAiPC9saT4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5h cHBlbmQoIjxsaSBjbGFzcz0zRCdzZWxlY3QyLW1vcmUtcmVzdWx0cyc+IiArPQogb3B0cy5lc2Nh cGVNYXJrdXAoZXZhbHVhdGUob3B0cy5mb3JtYXRMb2FkTW9yZSwgb3B0cy5lbGVtZW50LCB0aGlz LnJlc3VsdHM9ClBhZ2UpKSArICI8L2xpPiIpOwogICAgICAgICAgICAgICAgICAgICB3aW5kb3cu c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2VsZi5sb2FkTW9yZUlmTmVlZGVkKCk9CjsgfSwgMTAp OwogICAgICAgICAgICAgICAgIH0KPTIwCkBAIC0xNjgzLDYgKzE4NDQsMTAgQEAKPTIwCiAgICAg ICAgIC8vIGFic3RyYWN0CiAgICAgICAgIHNlbGVjdEhpZ2hsaWdodGVkOiBmdW5jdGlvbiAob3B0 aW9ucykgeworICAgICAgICAgICAgaWYgKHRoaXMuX3RvdWNoTW92ZWQpIHsKKyAgICAgICAgICAg ICAgdGhpcy5jbGVhclRvdWNoTW92ZWQoKTsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg ICAgICAgfQogICAgICAgICAgICAgdmFyIGluZGV4PTNEdGhpcy5oaWdobGlnaHQoKSwKICAgICAg ICAgICAgICAgICBoaWdobGlnaHRlZD0zRHRoaXMucmVzdWx0cy5maW5kKCIuc2VsZWN0Mi1oaWdo bGlnaHRlZCIpLAogICAgICAgICAgICAgICAgIGRhdGEgPTNEIGhpZ2hsaWdodGVkLmNsb3Nlc3Qo Jy5zZWxlY3QyLXJlc3VsdCcpLmRhdGEoInNlbGU9CmN0Mi1kYXRhIik7CkBAIC0xNzA4LDEyICsx ODczLDEyIEBACiAgICAgICAgIC8vIGFic3RyYWN0CiAgICAgICAgIGdldFBsYWNlaG9sZGVyT3B0 aW9uOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdCkgewotICAgICAg ICAgICAgICAgIHZhciBmaXJzdE9wdGlvbiA9M0QgdGhpcy5zZWxlY3QuY2hpbGRyZW4oKS5maXJz dCgpOworICAgICAgICAgICAgICAgIHZhciBmaXJzdE9wdGlvbiA9M0QgdGhpcy5zZWxlY3QuY2hp bGRyZW4oJ29wdGlvbicpLmZpcnN0KCk7CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0cy5w bGFjZWhvbGRlck9wdGlvbiAhPTNEPTNEIHVuZGVmaW5lZCApIHsKICAgICAgICAgICAgICAgICAg ICAgLy9EZXRlcm1pbmUgdGhlIHBsYWNlaG9sZGVyIG9wdGlvbiBiYXNlZCBvbiB0aGUgc3BlY2lm PQppZWQgcGxhY2Vob2xkZXJPcHRpb24gc2V0dGluZwogICAgICAgICAgICAgICAgICAgICByZXR1 cm4gKHRoaXMub3B0cy5wbGFjZWhvbGRlck9wdGlvbiA9M0Q9M0Q9M0QgImZpcnN0IiA9CiYmIGZp cnN0T3B0aW9uKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiB0aGlzLm9w dHMucGxhY2Vob2xkZXJPcHRpb24gPTNEPTNEPTNEICI9CmZ1bmN0aW9uIiAmJiB0aGlzLm9wdHMu cGxhY2Vob2xkZXJPcHRpb24odGhpcy5zZWxlY3QpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug aWYgKGZpcnN0T3B0aW9uLnRleHQoKSA9M0Q9M0Q9M0QgIiIgJiYgZmlyc3RPcHRpb24uPQp2YWwo KSA9M0Q9M0Q9M0QgIiIpIHsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQudHJpbShmaXJz dE9wdGlvbi50ZXh0KCkpID0zRD0zRD0zRCAiIiAmJiBmaXJzPQp0T3B0aW9uLnZhbCgpID0zRD0z RD0zRCAiIikgewogICAgICAgICAgICAgICAgICAgICAvL05vIGV4cGxpY2l0IHBsYWNlaG9sZGVy IG9wdGlvbiBzcGVjaWZpZWQsIHVzZSB0aGUgZmk9CnJzdCBpZiBpdCdzIGJsYW5rCiAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBmaXJzdE9wdGlvbjsKICAgICAgICAgICAgICAgICB9CkBAIC0x NzI5LDcgKzE4OTQsNyBAQAogICAgICAgICAvLyBhYnN0cmFjdAogICAgICAgICBpbml0Q29udGFp bmVyV2lkdGg6IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgIGZ1bmN0aW9uIHJlc29sdmVDb250 YWluZXJXaWR0aCgpIHsKLSAgICAgICAgICAgICAgICB2YXIgc3R5bGUsIGF0dHJzLCBtYXRjaGVz LCBpLCBsOworICAgICAgICAgICAgICAgIHZhciBzdHlsZSwgYXR0cnMsIG1hdGNoZXMsIGksIGws IGF0dHI7Cj0yMAogICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdHMud2lkdGggPTNEPTNEPTNE ICJvZmYiKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtMTc0MSw4ICsx OTA2LDggQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlICE9M0Q9M0QgdW5kZWZpbmVk KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBhdHRycyA9M0Qgc3R5bGUuc3BsaXQoJzsnKTsK ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9M0QgMCwgbCA9M0QgYXR0cnMubGVuZ3Ro OyBpIDwgbDsgaSA9M0QgaSArPQogMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h dGNoZXMgPTNEIGF0dHJzW2ldLnJlcGxhY2UoL1xzL2csICcnKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAubWF0Y2goL1teLV13aWR0aDooKFstK10/KFswLTldKlwuKT9bMC05XSs9 CikocHh8ZW18ZXh8JXxpbnxjbXxtbXxwdHxwYykpL2kpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGF0dHIgPTNEIGF0dHJzW2ldLnJlcGxhY2UoL1xzL2csICcnKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtYXRjaGVzID0zRCBhdHRyLm1hdGNoKC9ed2lkdGg6KChbLStdPyhb MC05XSpcPQouKT9bMC05XSspKHB4fGVtfGV4fCV8aW58Y218bW18cHR8cGMpKS9pKTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hlcyAhPTNEPTNEIG51bGwgJiYgbWF0Y2hl cy5sZW5ndGggPj0KPTNEIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBtYXRjaGVzWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTc4MSwxNiArMTk0 NiwxOSBAQAogICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9M0QgJChkb2N1bWVudC5jcmVhdGVF bGVtZW50KCJkaXYiKSkuYXR0cih7CiAgICAgICAgICAgICAgICAgImNsYXNzIjogInNlbGVjdDIt Y29udGFpbmVyIgogICAgICAgICAgICAgfSkuaHRtbChbCi0gICAgICAgICAgICAgICAgIjxhIGhy ZWY9M0QnamF2YXNjcmlwdDp2b2lkKDApJyBvbmNsaWNrPTNEJ3JldHVybiBmYWxzZTsnID0KY2xh c3M9M0Qnc2VsZWN0Mi1jaG9pY2UnIHRhYmluZGV4PTNEJy0xJz4iLAotICAgICAgICAgICAgICAg ICIgICA8c3BhbiBjbGFzcz0zRCdzZWxlY3QyLWNob3Nlbic+Jm5ic3A7PC9zcGFuPjxhYmJyIGNs YXM9CnM9M0Qnc2VsZWN0Mi1zZWFyY2gtY2hvaWNlLWNsb3NlJz48L2FiYnI+IiwKLSAgICAgICAg ICAgICAgICAiICAgPHNwYW4gY2xhc3M9M0Qnc2VsZWN0Mi1hcnJvdyc+PGI+PC9iPjwvc3Bhbj4i LAorICAgICAgICAgICAgICAgICI8YSBocmVmPTNEJ2phdmFzY3JpcHQ6dm9pZCgwKScgY2xhc3M9 M0Qnc2VsZWN0Mi1jaG9pY2UnIHQ9CmFiaW5kZXg9M0QnLTEnPiIsCisgICAgICAgICAgICAgICAg IiAgIDxzcGFuIGNsYXNzPTNEJ3NlbGVjdDItY2hvc2VuJz4mIzE2MDs8L3NwYW4+PGFiYnIgY2xh cz0Kcz0zRCdzZWxlY3QyLXNlYXJjaC1jaG9pY2UtY2xvc2UnPjwvYWJicj4iLAorICAgICAgICAg ICAgICAgICIgICA8c3BhbiBjbGFzcz0zRCdzZWxlY3QyLWFycm93JyByb2xlPTNEJ3ByZXNlbnRh dGlvbic+PGI9CiByb2xlPTNEJ3ByZXNlbnRhdGlvbic+PC9iPjwvc3Bhbj4iLAogICAgICAgICAg ICAgICAgICI8L2E+IiwKLSAgICAgICAgICAgICAgICAiPGlucHV0IGNsYXNzPTNEJ3NlbGVjdDIt Zm9jdXNzZXIgc2VsZWN0Mi1vZmZzY3JlZW4nIHR5cGU9Cj0zRCd0ZXh0Jy8+IiwKKyAgICAgICAg ICAgICAgICAiPGxhYmVsIGZvcj0zRCcnIGNsYXNzPTNEJ3NlbGVjdDItb2Zmc2NyZWVuJz48L2xh YmVsPiIsCisgICAgICAgICAgICAgICAgIjxpbnB1dCBjbGFzcz0zRCdzZWxlY3QyLWZvY3Vzc2Vy IHNlbGVjdDItb2Zmc2NyZWVuJyB0eXBlPQo9M0QndGV4dCcgYXJpYS1oYXNwb3B1cD0zRCd0cnVl JyByb2xlPTNEJ2J1dHRvbicgLz4iLAogICAgICAgICAgICAgICAgICI8ZGl2IGNsYXNzPTNEJ3Nl bGVjdDItZHJvcCBzZWxlY3QyLWRpc3BsYXktbm9uZSc+IiwKICAgICAgICAgICAgICAgICAiICAg PGRpdiBjbGFzcz0zRCdzZWxlY3QyLXNlYXJjaCc+IiwKLSAgICAgICAgICAgICAgICAiICAgICAg IDxpbnB1dCB0eXBlPTNEJ3RleHQnIGF1dG9jb21wbGV0ZT0zRCdvZmYnIGF1dG9jb3JyPQplY3Q9 M0Qnb2ZmJyBhdXRvY2FwaXRhbGl6ZT0zRCdvZmYnIHNwZWxsY2hlY2s9M0QnZmFsc2UnIGNsYXNz PTNEJ3NlbGVjdDItaW49CnB1dCcvPiIsCisgICAgICAgICAgICAgICAgIiAgICAgICA8bGFiZWwg Zm9yPTNEJycgY2xhc3M9M0Qnc2VsZWN0Mi1vZmZzY3JlZW4nPjwvbGFiZT0KbD4iLAorICAgICAg ICAgICAgICAgICIgICAgICAgPGlucHV0IHR5cGU9M0QndGV4dCcgYXV0b2NvbXBsZXRlPTNEJ29m ZicgYXV0b2NvcnI9CmVjdD0zRCdvZmYnIGF1dG9jYXBpdGFsaXplPTNEJ29mZicgc3BlbGxjaGVj az0zRCdmYWxzZScgY2xhc3M9M0Qnc2VsZWN0Mi1pbj0KcHV0JyByb2xlPTNEJ2NvbWJvYm94JyBh cmlhLWV4cGFuZGVkPTNEJ3RydWUnIiwKKyAgICAgICAgICAgICAgICAiICAgICAgIGFyaWEtYXV0 b2NvbXBsZXRlPTNEJ2xpc3QnIC8+IiwKICAgICAgICAgICAgICAgICAiICAgPC9kaXY+IiwKLSAg ICAgICAgICAgICAgICAiICAgPHVsIGNsYXNzPTNEJ3NlbGVjdDItcmVzdWx0cyc+IiwKKyAgICAg ICAgICAgICAgICAiICAgPHVsIGNsYXNzPTNEJ3NlbGVjdDItcmVzdWx0cycgcm9sZT0zRCdsaXN0 Ym94Jz4iLAogICAgICAgICAgICAgICAgICIgICA8L3VsPiIsCiAgICAgICAgICAgICAgICAgIjwv ZGl2PiJdLmpvaW4oIiIpKTsKICAgICAgICAgICAgIHJldHVybiBjb250YWluZXI7CkBAIC0xODE5 LDE3ICsxOTg3LDE5IEBACj0yMAogICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoLnZhbCh0aGlz LmZvY3Vzc2VyLnZhbCgpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuc2VhcmNo LmZvY3VzKCk7Ci0gICAgICAgICAgICAvLyBtb3ZlIHRoZSBjdXJzb3IgdG8gdGhlIGVuZCBhZnRl ciBmb2N1c3NpbmcsIG90aGVyd2lzZSBpdCB3aT0KbGwgYmUgYXQgdGhlIGJlZ2lubmluZyBhbmQK LSAgICAgICAgICAgIC8vIG5ldyB0ZXh0IHdpbGwgYXBwZWFyICpiZWZvcmUqIGZvY3Vzc2VyLnZh bCgpCi0gICAgICAgICAgICBlbCA9M0QgdGhpcy5zZWFyY2guZ2V0KDApOwotICAgICAgICAgICAg aWYgKGVsLmNyZWF0ZVRleHRSYW5nZSkgewotICAgICAgICAgICAgICAgIHJhbmdlID0zRCBlbC5j cmVhdGVUZXh0UmFuZ2UoKTsKLSAgICAgICAgICAgICAgICByYW5nZS5jb2xsYXBzZShmYWxzZSk7 Ci0gICAgICAgICAgICAgICAgcmFuZ2Uuc2VsZWN0KCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg KGVsLnNldFNlbGVjdGlvblJhbmdlKSB7Ci0gICAgICAgICAgICAgICAgbGVuID0zRCB0aGlzLnNl YXJjaC52YWwoKS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgZWwuc2V0U2VsZWN0aW9uUmFuZ2Uo bGVuLCBsZW4pOworICAgICAgICAgICAgaWYgKHRoaXMub3B0cy5zaG91bGRGb2N1c0lucHV0KHRo aXMpKSB7CisgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2guZm9jdXMoKTsKKyAgICAgICAgICAg ICAgICAvLyBtb3ZlIHRoZSBjdXJzb3IgdG8gdGhlIGVuZCBhZnRlciBmb2N1c3NpbmcsIG90aGVy d2lzZSBpPQp0IHdpbGwgYmUgYXQgdGhlIGJlZ2lubmluZyBhbmQKKyAgICAgICAgICAgICAgICAv LyBuZXcgdGV4dCB3aWxsIGFwcGVhciAqYmVmb3JlKiBmb2N1c3Nlci52YWwoKQorICAgICAgICAg ICAgICAgIGVsID0zRCB0aGlzLnNlYXJjaC5nZXQoMCk7CisgICAgICAgICAgICAgICAgaWYgKGVs LmNyZWF0ZVRleHRSYW5nZSkgeworICAgICAgICAgICAgICAgICAgICByYW5nZSA9M0QgZWwuY3Jl YXRlVGV4dFJhbmdlKCk7CisgICAgICAgICAgICAgICAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNl KTsKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2Uuc2VsZWN0KCk7CisgICAgICAgICAgICAgICAg fSBlbHNlIGlmIChlbC5zZXRTZWxlY3Rpb25SYW5nZSkgeworICAgICAgICAgICAgICAgICAgICBs ZW4gPTNEIHRoaXMuc2VhcmNoLnZhbCgpLmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgZWwu c2V0U2VsZWN0aW9uUmFuZ2UobGVuLCBsZW4pOworICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgIH0KPTIwCiAgICAgICAgICAgICAvLyBpbml0aWFsaXplcyBzZWFyY2gncyB2YWx1ZSB3aXRo IG5leHRTZWFyY2hUZXJtIChpZiBkZWZpbmVkID0KYnkgdXNlcikKQEAgLTE4NDcsMTQgKzIwMTcs MTMgQEAKICAgICAgICAgfSwKPTIwCiAgICAgICAgIC8vIHNpbmdsZQotICAgICAgICBjbG9zZTog ZnVuY3Rpb24gKHBhcmFtcykgeworICAgICAgICBjbG9zZTogZnVuY3Rpb24gKCkgewogICAgICAg ICAgICAgaWYgKCF0aGlzLm9wZW5lZCgpKSByZXR1cm47CiAgICAgICAgICAgICB0aGlzLnBhcmVu dC5jbG9zZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwo9MjAKLSAgICAgICAgICAgIHBhcmFtcyA9 M0QgcGFyYW1zIHx8IHtmb2N1czogdHJ1ZX07Ci0gICAgICAgICAgICB0aGlzLmZvY3Vzc2VyLnJl bW92ZUF0dHIoImRpc2FibGVkIik7Ci0KLSAgICAgICAgICAgIGlmIChwYXJhbXMuZm9jdXMpIHsK KyAgICAgICAgICAgIHRoaXMuZm9jdXNzZXIucHJvcCgiZGlzYWJsZWQiLCBmYWxzZSk7CisKKyAg ICAgICAgICAgIGlmICh0aGlzLm9wdHMuc2hvdWxkRm9jdXNJbnB1dCh0aGlzKSkgewogICAgICAg ICAgICAgICAgIHRoaXMuZm9jdXNzZXIuZm9jdXMoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg fSwKQEAgLTE4NjQsOCArMjAzMywxMCBAQAogICAgICAgICAgICAgaWYgKHRoaXMub3BlbmVkKCkp IHsKICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7CiAgICAgICAgICAgICB9IGVsc2Ugewot ICAgICAgICAgICAgICAgIHRoaXMuZm9jdXNzZXIucmVtb3ZlQXR0cigiZGlzYWJsZWQiKTsKLSAg ICAgICAgICAgICAgICB0aGlzLmZvY3Vzc2VyLmZvY3VzKCk7CisgICAgICAgICAgICAgICAgdGhp cy5mb2N1c3Nlci5wcm9wKCJkaXNhYmxlZCIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAo dGhpcy5vcHRzLnNob3VsZEZvY3VzSW5wdXQodGhpcykpIHsKKyAgICAgICAgICAgICAgICAgICAg dGhpcy5mb2N1c3Nlci5mb2N1cygpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K ICAgICAgICAgfSwKPTIwCkBAIC0xODc3LDggKzIwNDgsMTEgQEAKICAgICAgICAgLy8gc2luZ2xl CiAgICAgICAgIGNhbmNlbDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgdGhpcy5wYXJlbnQu Y2FuY2VsLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICB0aGlzLmZvY3Vzc2Vy LnJlbW92ZUF0dHIoImRpc2FibGVkIik7Ci0gICAgICAgICAgICB0aGlzLmZvY3Vzc2VyLmZvY3Vz KCk7CisgICAgICAgICAgICB0aGlzLmZvY3Vzc2VyLnByb3AoImRpc2FibGVkIiwgZmFsc2UpOwor CisgICAgICAgICAgICBpZiAodGhpcy5vcHRzLnNob3VsZEZvY3VzSW5wdXQodGhpcykpIHsKKyAg ICAgICAgICAgICAgICB0aGlzLmZvY3Vzc2VyLmZvY3VzKCk7CisgICAgICAgICAgICB9CiAgICAg ICAgIH0sCj0yMAogICAgICAgICAvLyBzaW5nbGUKQEAgLTE4ODYsNiArMjA2MCwxMSBAQAogICAg ICAgICAgICAgJCgibGFiZWxbZm9yPTNEJyIgKyB0aGlzLmZvY3Vzc2VyLmF0dHIoJ2lkJykgKyAi J10iKQogICAgICAgICAgICAgICAgIC5hdHRyKCdmb3InLCB0aGlzLm9wdHMuZWxlbWVudC5hdHRy KCJpZCIpKTsKICAgICAgICAgICAgIHRoaXMucGFyZW50LmRlc3Ryb3kuYXBwbHkodGhpcywgYXJn dW1lbnRzKTsKKworICAgICAgICAgICAgY2xlYW51cEpRdWVyeUVsZW1lbnRzLmNhbGwodGhpcywK KyAgICAgICAgICAgICAgICAic2VsZWN0aW9uIiwKKyAgICAgICAgICAgICAgICAiZm9jdXNzZXIi CisgICAgICAgICAgICApOwogICAgICAgICB9LAo9MjAKICAgICAgICAgLy8gc2luZ2xlCkBAIC0x ODkzLDcgKzIwNzIsOSBAQAo9MjAKICAgICAgICAgICAgIHZhciBzZWxlY3Rpb24sCiAgICAgICAg ICAgICAgICAgY29udGFpbmVyID0zRCB0aGlzLmNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICBk cm9wZG93biA9M0QgdGhpcy5kcm9wZG93bjsKKyAgICAgICAgICAgICAgICBkcm9wZG93biA9M0Qg dGhpcy5kcm9wZG93biwKKyAgICAgICAgICAgICAgICBpZFN1ZmZpeCA9M0QgbmV4dFVpZCgpLAor ICAgICAgICAgICAgICAgIGVsZW1lbnRMYWJlbDsKPTIwCiAgICAgICAgICAgICBpZiAodGhpcy5v cHRzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoIDwgMCkgewogICAgICAgICAgICAgICAgIHRoaXMu c2hvd1NlYXJjaChmYWxzZSk7CkBAIC0xOTA1LDE3ICsyMDg2LDQwIEBACj0yMAogICAgICAgICAg ICAgdGhpcy5mb2N1c3NlciA9M0QgY29udGFpbmVyLmZpbmQoIi5zZWxlY3QyLWZvY3Vzc2VyIik7 Cj0yMAorICAgICAgICAgICAgLy8gYWRkIGFyaWEgYXNzb2NpYXRpb25zCisgICAgICAgICAgICBz ZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItY2hvc2VuIikuYXR0cigiaWQiLCAic2VsZWN0Mi1jaG9z ZW4tIj0KK2lkU3VmZml4KTsKKyAgICAgICAgICAgIHRoaXMuZm9jdXNzZXIuYXR0cigiYXJpYS1s YWJlbGxlZGJ5IiwgInNlbGVjdDItY2hvc2VuLSIraWRTdWZmPQppeCk7CisgICAgICAgICAgICB0 aGlzLnJlc3VsdHMuYXR0cigiaWQiLCAic2VsZWN0Mi1yZXN1bHRzLSIraWRTdWZmaXgpOworICAg ICAgICAgICAgdGhpcy5zZWFyY2guYXR0cigiYXJpYS1vd25zIiwgInNlbGVjdDItcmVzdWx0cy0i K2lkU3VmZml4KTsKKwogICAgICAgICAgICAgLy8gcmV3cml0ZSBsYWJlbHMgZnJvbSBvcmlnaW5h bCBlbGVtZW50IHRvIGZvY3Vzc2VyCi0gICAgICAgICAgICB0aGlzLmZvY3Vzc2VyLmF0dHIoImlk IiwgInMyaWRfYXV0b2dlbiIrbmV4dFVpZCgpKTsKLQotICAgICAgICAgICAgJCgibGFiZWxbZm9y PTNEJyIgKyB0aGlzLm9wdHMuZWxlbWVudC5hdHRyKCJpZCIpICsgIiddIikKKyAgICAgICAgICAg IHRoaXMuZm9jdXNzZXIuYXR0cigiaWQiLCAiczJpZF9hdXRvZ2VuIitpZFN1ZmZpeCk7CisKKyAg ICAgICAgICAgIGVsZW1lbnRMYWJlbCA9M0QgJCgibGFiZWxbZm9yPTNEJyIgKyB0aGlzLm9wdHMu ZWxlbWVudC5hdHRyKCJpPQpkIikgKyAiJ10iKTsKKworICAgICAgICAgICAgdGhpcy5mb2N1c3Nl ci5wcmV2KCkKKyAgICAgICAgICAgICAgICAudGV4dChlbGVtZW50TGFiZWwudGV4dCgpKQogICAg ICAgICAgICAgICAgIC5hdHRyKCdmb3InLCB0aGlzLmZvY3Vzc2VyLmF0dHIoJ2lkJykpOwo9MjAK KyAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgb3JpZ2luYWwgZWxlbWVudCByZXRhaW5zIGFuIGFj Y2Vzc2libGUgbmFtZQorICAgICAgICAgICAgdmFyIG9yaWdpbmFsVGl0bGUgPTNEIHRoaXMub3B0 cy5lbGVtZW50LmF0dHIoInRpdGxlIik7CisgICAgICAgICAgICB0aGlzLm9wdHMuZWxlbWVudC5h dHRyKCJ0aXRsZSIsIChvcmlnaW5hbFRpdGxlIHx8IGVsZW1lbnRMYWJlbD0KLnRleHQoKSkpOwor CiAgICAgICAgICAgICB0aGlzLmZvY3Vzc2VyLmF0dHIoInRhYmluZGV4IiwgdGhpcy5lbGVtZW50 VGFiSW5kZXgpOwo9MjAKKyAgICAgICAgICAgIC8vIHdyaXRlIGxhYmVsIGZvciBzZWFyY2ggZmll bGQgdXNpbmcgdGhlIGxhYmVsIGZyb20gdGhlIGZvY3VzPQpzZXIgZWxlbWVudAorICAgICAgICAg ICAgdGhpcy5zZWFyY2guYXR0cigiaWQiLCB0aGlzLmZvY3Vzc2VyLmF0dHIoJ2lkJykgKyAnX3Nl YXJjaCcpOworCisgICAgICAgICAgICB0aGlzLnNlYXJjaC5wcmV2KCkKKyAgICAgICAgICAgICAg ICAudGV4dCgkKCJsYWJlbFtmb3I9M0QnIiArIHRoaXMuZm9jdXNzZXIuYXR0cignaWQnKSArICIn XSIpPQoudGV4dCgpKQorICAgICAgICAgICAgICAgIC5hdHRyKCdmb3InLCB0aGlzLnNlYXJjaC5h dHRyKCdpZCcpKTsKKwogICAgICAgICAgICAgdGhpcy5zZWFyY2gub24oImtleWRvd24iLCB0aGlz LmJpbmQoZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNJbnRlcmZh Y2VFbmFibGVkKCkpIHJldHVybjsKPTIwCisgICAgICAgICAgICAgICAgLy8gZmlsdGVyIDIyOSBr ZXlDb2RlcyAoaW5wdXQgbWV0aG9kIGVkaXRvciBpcyBwcm9jZXNzaW5nID0Ka2V5IGlucHV0KQor ICAgICAgICAgICAgICAgIGlmICgyMjkgPTNEPTNEIGUua2V5Q29kZSkgcmV0dXJuOworCiAgICAg ICAgICAgICAgICAgaWYgKGUud2hpY2ggPTNEPTNEPTNEIEtFWS5QQUdFX1VQIHx8IGUud2hpY2gg PTNEPTNEPTNEIEtFWT0KLlBBR0VfRE9XTikgewogICAgICAgICAgICAgICAgICAgICAvLyBwcmV2 ZW50IHRoZSBwYWdlIGZyb20gc2Nyb2xsaW5nCiAgICAgICAgICAgICAgICAgICAgIGtpbGxFdmVu dChlKTsKQEAgLTE5NDUsOSArMjE0OSwxMSBAQAogICAgICAgICAgICAgdGhpcy5zZWFyY2gub24o ImJsdXIiLCB0aGlzLmJpbmQoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIC8vIGEgd29y a2Fyb3VuZCBmb3IgY2hyb21lIHRvIGtlZXAgdGhlIHNlYXJjaCBmaWVsZCBmb2N1c3M9CmVkIHdo ZW4gdGhlIHNjcm9sbCBiYXIgaXMgdXNlZCB0byBzY3JvbGwgdGhlIGRyb3Bkb3duLgogICAgICAg ICAgICAgICAgIC8vIHdpdGhvdXQgdGhpcyB0aGUgc2VhcmNoIGZpZWxkIGxvc2VzIGZvY3VzIHdo aWNoIGlzIGFubm89CnlpbmcKLSAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxl bWVudCA9M0Q9M0Q9M0QgdGhpcy5ib2R5KCkuZ2V0KDApKSB7CisgICAgICAgICAgICAgICAgaWYg KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPTNEPTNEPTNEIHRoaXMuYm9keS5nZXQoMCkpIHsKICAg ICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQodGhpcy5iaW5kKGZ1bmN0aW9uKCkg ewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2guZm9jdXMoKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wZW5lZCgpKSB7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGhpcy5zZWFyY2guZm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K ICAgICAgICAgICAgICAgICAgICAgfSksIDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgIH0pKTsKQEAgLTE5OTMsNyArMjE5OSw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAg ICAgICAgfSkpOwo9MjAKLSAgICAgICAgICAgIHNlbGVjdGlvbi5vbigibW91c2Vkb3duIiwgImFi YnIiLCB0aGlzLmJpbmQoZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5vbigi bW91c2Vkb3duIHRvdWNoc3RhcnQiLCAiYWJiciIsIHRoaXMuYmluZChmdW5jdGlvPQpuIChlKSB7 CiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpKSByZXR1cm47 CiAgICAgICAgICAgICAgICAgdGhpcy5jbGVhcigpOwogICAgICAgICAgICAgICAgIGtpbGxFdmVu dEltbWVkaWF0ZWx5KGUpOwpAQCAtMjAwMSw3ICsyMjA3LDkgQEAKICAgICAgICAgICAgICAgICB0 aGlzLnNlbGVjdGlvbi5mb2N1cygpOwogICAgICAgICAgICAgfSkpOwo9MjAKLSAgICAgICAgICAg IHNlbGVjdGlvbi5vbigibW91c2Vkb3duIiwgdGhpcy5iaW5kKGZ1bmN0aW9uIChlKSB7CisgICAg ICAgICAgICBzZWxlY3Rpb24ub24oIm1vdXNlZG93biB0b3VjaHN0YXJ0IiwgdGhpcy5iaW5kKGZ1 bmN0aW9uIChlKSB7CisgICAgICAgICAgICAgICAgLy8gUHJldmVudCBJRSBmcm9tIGdlbmVyYXRp bmcgYSBjbGljayBldmVudCBvbiB0aGUgYm9keQorICAgICAgICAgICAgICAgIHJlaW5zZXJ0RWxl bWVudChzZWxlY3Rpb24pOwo9MjAKICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY29udGFpbmVy Lmhhc0NsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKSkgewogICAgICAgICAgICAgICAg ICAgICB0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKCQuRXZlbnQoInNlbGVjdDItZm9jdXMiKSk7 CkBAIC0yMDE2LDcgKzIyMjQsMTEgQEAKICAgICAgICAgICAgICAgICBraWxsRXZlbnQoZSk7CiAg ICAgICAgICAgICB9KSk7Cj0yMAotICAgICAgICAgICAgZHJvcGRvd24ub24oIm1vdXNlZG93biIs IHRoaXMuYmluZChmdW5jdGlvbigpIHsgdGhpcy5zZWFyY2guZm89CmN1cygpOyB9KSk7CisgICAg ICAgICAgICBkcm9wZG93bi5vbigibW91c2Vkb3duIHRvdWNoc3RhcnQiLCB0aGlzLmJpbmQoZnVu Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0cy5zaG91bGRGb2N1c0lucHV0 KHRoaXMpKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoLmZvY3VzKCk7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSkpOwo9MjAKICAgICAgICAgICAgIHNlbGVjdGlv bi5vbigiZm9jdXMiLCB0aGlzLmJpbmQoZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgIGtp bGxFdmVudChlKTsKQEAgLTIwODUsNiArMjI5Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLnVwZGF0ZVNlbGVjdGlvbihzZWxlY3RlZCk7CiAgICAgICAgICAgICAgICAgICAgICAg ICBzZWxmLmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNldFBsYWNlaG9s ZGVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5leHRTZWFyY2hUZXJtID0zRCBz ZWxmLm9wdHMubmV4dFNlYXJjaFRlcm0ocz0KZWxlY3RlZCwgc2VsZi5zZWFyY2gudmFsKCkpOwog ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9 CkBAIC0yMDkyLDggKzIzMDUsOCBAQAo9MjAKICAgICAgICAgaXNQbGFjZWhvbGRlck9wdGlvblNl bGVjdGVkOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHZhciBwbGFjZWhvbGRlck9wdGlvbjsK LSAgICAgICAgICAgIGlmICghdGhpcy5nZXRQbGFjZWhvbGRlcigpKSByZXR1cm4gZmFsc2U7IC8v IG5vIHBsYWNlaG9sZGVyIHNwPQplY2lmaWVkIHNvIG5vIG9wdGlvbiBzaG91bGQgYmUgY29uc2lk ZXJlZAotICAgICAgICAgICAgcmV0dXJuICgocGxhY2Vob2xkZXJPcHRpb24gPTNEIHRoaXMuZ2V0 UGxhY2Vob2xkZXJPcHRpb24oKSkgIT0KPTNEPTNEIHVuZGVmaW5lZCAmJiBwbGFjZWhvbGRlck9w dGlvbi5pcygnOnNlbGVjdGVkJykpCisgICAgICAgICAgICBpZiAodGhpcy5nZXRQbGFjZWhvbGRl cigpID0zRD0zRD0zRCB1bmRlZmluZWQpIHJldHVybiBmYWxzZTsgLz0KLyBubyBwbGFjZWhvbGRl ciBzcGVjaWZpZWQgc28gbm8gb3B0aW9uIHNob3VsZCBiZSBjb25zaWRlcmVkCisgICAgICAgICAg ICByZXR1cm4gKChwbGFjZWhvbGRlck9wdGlvbiA9M0QgdGhpcy5nZXRQbGFjZWhvbGRlck9wdGlv bigpKSAhPQo9M0Q9M0QgdW5kZWZpbmVkICYmIHBsYWNlaG9sZGVyT3B0aW9uLnByb3AoInNlbGVj dGVkIikpCiAgICAgICAgICAgICAgICAgfHwgKHRoaXMub3B0cy5lbGVtZW50LnZhbCgpID0zRD0z RD0zRCAiIikKICAgICAgICAgICAgICAgICB8fCAodGhpcy5vcHRzLmVsZW1lbnQudmFsKCkgPTNE PTNEPTNEIHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICB8fCAodGhpcy5vcHRzLmVsZW1lbnQu dmFsKCkgPTNEPTNEPTNEIG51bGwpOwpAQCAtMjEwNyw3ICsyMzIwLDcgQEAKICAgICAgICAgICAg IGlmIChvcHRzLmVsZW1lbnQuZ2V0KDApLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9M0Q9M0Q9M0Qg InNlbGVjPQp0IikgewogICAgICAgICAgICAgICAgIC8vIGluc3RhbGwgdGhlIHNlbGVjdGlvbiBp bml0aWFsaXplcgogICAgICAgICAgICAgICAgIG9wdHMuaW5pdFNlbGVjdGlvbiA9M0QgZnVuY3Rp b24gKGVsZW1lbnQsIGNhbGxiYWNrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3Rl ZCA9M0QgZWxlbWVudC5maW5kKCI6c2VsZWN0ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgdmFy IHNlbGVjdGVkID0zRCBlbGVtZW50LmZpbmQoIm9wdGlvbiIpLmZpbHRlcihmdW5jdGlvPQpuKCkg eyByZXR1cm4gdGhpcy5zZWxlY3RlZCAmJiAhdGhpcy5kaXNhYmxlZCB9KTsKICAgICAgICAgICAg ICAgICAgICAgLy8gYSBzaW5nbGUgc2VsZWN0IGJveCBhbHdheXMgaGFzIGEgdmFsdWUsIG5vIG5l ZWQgdG8gPQpudWxsIGNoZWNrICdzZWxlY3RlZCcKICAgICAgICAgICAgICAgICAgICAgY2FsbGJh Y2soc2VsZi5vcHRpb25Ub0RhdGEoc2VsZWN0ZWQpKTsKICAgICAgICAgICAgICAgICB9OwpAQCAt MjIyNCwxMCArMjQzNywxMyBAQAogICAgICAgICAgICAgdGhpcy5uZXh0U2VhcmNoVGVybSA9M0Qg dGhpcy5vcHRzLm5leHRTZWFyY2hUZXJtKGRhdGEsIHRoaXMuc2U9CmFyY2gudmFsKCkpOwogICAg ICAgICAgICAgdGhpcy5jbG9zZSgpOwo9MjAKLSAgICAgICAgICAgIGlmICghb3B0aW9ucyB8fCAh b3B0aW9ucy5ub0ZvY3VzKQorICAgICAgICAgICAgaWYgKCghb3B0aW9ucyB8fCAhb3B0aW9ucy5u b0ZvY3VzKSAmJiB0aGlzLm9wdHMuc2hvdWxkRm9jdXNJbnA9CnV0KHRoaXMpKSB7CiAgICAgICAg ICAgICAgICAgdGhpcy5mb2N1c3Nlci5mb2N1cygpOwotCi0gICAgICAgICAgICBpZiAoIWVxdWFs KG9sZCwgdGhpcy5pZChkYXRhKSkpIHsgdGhpcy50cmlnZ2VyQ2hhbmdlKHthZGRlZDpkYT0KdGEs cmVtb3ZlZDpvbGREYXRhfSk7IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFl cXVhbChvbGQsIHRoaXMuaWQoZGF0YSkpKSB7CisgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2Vy Q2hhbmdlKHsgYWRkZWQ6IGRhdGEsIHJlbW92ZWQ6IG9sZERhdGEgfSk7CisgICAgICAgICAgICB9 CiAgICAgICAgIH0sCj0yMAogICAgICAgICAvLyBzaW5nbGUKQEAgLTIyNzcsNyArMjQ5Myw3IEBA CiAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3QpIHsKICAgICAgICAgICAgICAgICB0aGlzLnNl bGVjdAogICAgICAgICAgICAgICAgICAgICAudmFsKHZhbCkKLSAgICAgICAgICAgICAgICAgICAg LmZpbmQoIjpzZWxlY3RlZCIpLmVhY2gyKGZ1bmN0aW9uIChpLCBlbG0pIHsKKyAgICAgICAgICAg ICAgICAgICAgLmZpbmQoIm9wdGlvbiIpLmZpbHRlcihmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMu c2VsZWN0PQplZCB9KS5lYWNoMihmdW5jdGlvbiAoaSwgZWxtKSB7CiAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhID0zRCBzZWxmLm9wdGlvblRvRGF0YShlbG0pOwogICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICB9KTsKQEAgLTIzNDks NiArMjU2NSw3IEBACiAgICAgICAgICAgICB9KS5odG1sKFsKICAgICAgICAgICAgICAgICAiPHVs IGNsYXNzPTNEJ3NlbGVjdDItY2hvaWNlcyc+IiwKICAgICAgICAgICAgICAgICAiICA8bGkgY2xh c3M9M0Qnc2VsZWN0Mi1zZWFyY2gtZmllbGQnPiIsCisgICAgICAgICAgICAgICAgIiAgICA8bGFi ZWwgZm9yPTNEJycgY2xhc3M9M0Qnc2VsZWN0Mi1vZmZzY3JlZW4nPjwvbGFiZWw+IiwKICAgICAg ICAgICAgICAgICAiICAgIDxpbnB1dCB0eXBlPTNEJ3RleHQnIGF1dG9jb21wbGV0ZT0zRCdvZmYn IGF1dG9jb3JyZWN0PQo9M0Qnb2ZmJyBhdXRvY2FwaXRhbGl6ZT0zRCdvZmYnIHNwZWxsY2hlY2s9 M0QnZmFsc2UnIGNsYXNzPTNEJ3NlbGVjdDItaW5wdXQ9Cic+IiwKICAgICAgICAgICAgICAgICAi ICA8L2xpPiIsCiAgICAgICAgICAgICAgICAgIjwvdWw+IiwKQEAgLTIzNjcsMTIgKzI1ODQsMTIg QEAKICAgICAgICAgICAgIC8vIFRPRE8gdmFsaWRhdGUgcGxhY2Vob2xkZXIgaXMgYSBzdHJpbmcg aWYgc3BlY2lmaWVkCj0yMAogICAgICAgICAgICAgaWYgKG9wdHMuZWxlbWVudC5nZXQoMCkudGFn TmFtZS50b0xvd2VyQ2FzZSgpID0zRD0zRD0zRCAic2VsZWM9CnQiKSB7Ci0gICAgICAgICAgICAg ICAgLy8gaW5zdGFsbCBzdGhlIHNlbGVjdGlvbiBpbml0aWFsaXplcgorICAgICAgICAgICAgICAg IC8vIGluc3RhbGwgdGhlIHNlbGVjdGlvbiBpbml0aWFsaXplcgogICAgICAgICAgICAgICAgIG9w dHMuaW5pdFNlbGVjdGlvbiA9M0QgZnVuY3Rpb24gKGVsZW1lbnQsIGNhbGxiYWNrKSB7Cj0yMAog ICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9M0QgW107Cj0yMAotICAgICAgICAgICAgICAg ICAgICBlbGVtZW50LmZpbmQoIjpzZWxlY3RlZCIpLmVhY2gyKGZ1bmN0aW9uIChpLCBlbG0pIHsK KyAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5maW5kKCJvcHRpb24iKS5maWx0ZXIoZnVuY3Rp b24oKSB7IHJldHVybiB0aGlzPQouc2VsZWN0ZWQgJiYgIXRoaXMuZGlzYWJsZWQgfSkuZWFjaDIo ZnVuY3Rpb24gKGksIGVsbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKHNl bGYub3B0aW9uVG9EYXRhKGVsbSkpOwogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg ICAgICAgICAgICAgY2FsbGJhY2soZGF0YSk7CkBAIC0yNDE3LDYgKzI2MzQsNyBAQAogICAgICAg ICAgICAgcmV0dXJuIG9wdHM7CiAgICAgICAgIH0sCj0yMAorICAgICAgICAvLyBtdWx0aQogICAg ICAgICBzZWxlY3RDaG9pY2U6IGZ1bmN0aW9uIChjaG9pY2UpIHsKPTIwCiAgICAgICAgICAgICB2 YXIgc2VsZWN0ZWQgPTNEIHRoaXMuY29udGFpbmVyLmZpbmQoIi5zZWxlY3QyLXNlYXJjaC1jaG9p Y2UtZj0Kb2N1cyIpOwpAQCAtMjQ0MCw2ICsyNjU4LDExIEBACiAgICAgICAgICAgICAkKCJsYWJl bFtmb3I9M0QnIiArIHRoaXMuc2VhcmNoLmF0dHIoJ2lkJykgKyAiJ10iKQogICAgICAgICAgICAg ICAgIC5hdHRyKCdmb3InLCB0aGlzLm9wdHMuZWxlbWVudC5hdHRyKCJpZCIpKTsKICAgICAgICAg ICAgIHRoaXMucGFyZW50LmRlc3Ryb3kuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKworICAgICAg ICAgICAgY2xlYW51cEpRdWVyeUVsZW1lbnRzLmNhbGwodGhpcywKKyAgICAgICAgICAgICAgICAi c2VhcmNoQ29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAic2VsZWN0aW9uIgorICAgICAgICAg ICAgKTsKICAgICAgICAgfSwKPTIwCiAgICAgICAgIC8vIG11bHRpCkBAIC0yNDU5LDEwICsyNjgy LDEzIEBACj0yMAogICAgICAgICAgICAgLy8gcmV3cml0ZSBsYWJlbHMgZnJvbSBvcmlnaW5hbCBl bGVtZW50IHRvIGZvY3Vzc2VyCiAgICAgICAgICAgICB0aGlzLnNlYXJjaC5hdHRyKCJpZCIsICJz MmlkX2F1dG9nZW4iK25leHRVaWQoKSk7Ci0gICAgICAgICAgICAkKCJsYWJlbFtmb3I9M0QnIiAr IHRoaXMub3B0cy5lbGVtZW50LmF0dHIoImlkIikgKyAiJ10iKQorCisgICAgICAgICAgICB0aGlz LnNlYXJjaC5wcmV2KCkKKyAgICAgICAgICAgICAgICAudGV4dCgkKCJsYWJlbFtmb3I9M0QnIiAr IHRoaXMub3B0cy5lbGVtZW50LmF0dHIoImlkIikgKyAiPQonXSIpLnRleHQoKSkKICAgICAgICAg ICAgICAgICAuYXR0cignZm9yJywgdGhpcy5zZWFyY2guYXR0cignaWQnKSk7Cj0yMAogICAgICAg ICAgICAgdGhpcy5zZWFyY2gub24oImlucHV0IHBhc3RlIiwgdGhpcy5iaW5kKGZ1bmN0aW9uKCkg eworICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlYXJjaC5hdHRyKCdwbGFjZWhvbGRlcicpICYm IHRoaXMuc2VhcmNoLnZhbCgpLmw9CmVuZ3RoID0zRD0zRCAwKSByZXR1cm47CiAgICAgICAgICAg ICAgICAgaWYgKCF0aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpKSByZXR1cm47CiAgICAgICAgICAg ICAgICAgaWYgKCF0aGlzLm9wZW5lZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMub3Bl bigpOwpAQCAtMjQ5MSwxMyArMjcxNywxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc2Vs ZWN0ZWRDaG9pY2UgPTNEIG5leHQubGVuZ3RoID8gbmV4dCA6IG51bGw7CiAgICAgICAgICAgICAg ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZS53aGljaCA9M0Q9M0Q9M0Qg S0VZLkJBQ0tTUEFDRSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51bnNlbGVjdChz ZWxlY3RlZC5maXJzdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoLndp ZHRoKDEwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hvaWNlID0zRCBwcmV2 Lmxlbmd0aCA/IHByZXYgOiBuZXh0OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMu dW5zZWxlY3Qoc2VsZWN0ZWQuZmlyc3QoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aGlzLnNlYXJjaC53aWR0aCgxMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs ZWN0ZWRDaG9pY2UgPTNEIHByZXYubGVuZ3RoID8gcHJldiA6IG5leHQ7CisgICAgICAgICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS53aGljaCA9M0Q9 M0QgS0VZLkRFTEVURSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51bnNlbGVjdChz ZWxlY3RlZC5maXJzdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoLndp ZHRoKDEwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ2hvaWNlID0zRCBuZXh0 Lmxlbmd0aCA/IG5leHQgOiBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMu dW5zZWxlY3Qoc2VsZWN0ZWQuZmlyc3QoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aGlzLnNlYXJjaC53aWR0aCgxMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs ZWN0ZWRDaG9pY2UgPTNEIG5leHQubGVuZ3RoID8gbmV4dCA6IG51bGw7CisgICAgICAgICAgICAg ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS53aGljaCA9M0Q9 M0QgS0VZLkVOVEVSKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZENob2ljZSA9 M0QgbnVsbDsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjY3NSw4ICsyOTAzLDE5IEBACj0y MAogICAgICAgICAgICAgdGhpcy5mb2N1c1NlYXJjaCgpOwo9MjAKKyAgICAgICAgICAgIC8vIGlu aXRpYWxpemVzIHNlYXJjaCdzIHZhbHVlIHdpdGggbmV4dFNlYXJjaFRlcm0gKGlmIGRlZmluZWQg PQpieSB1c2VyKQorICAgICAgICAgICAgLy8gaWdub3JlIG5leHRTZWFyY2hUZXJtIGlmIHRoZSBk cm9wZG93biBpcyBvcGVuZWQgYnkgdGhlIHVzZXI9CiBwcmVzc2luZyBhIGxldHRlcgorICAgICAg ICAgICAgaWYodGhpcy5zZWFyY2gudmFsKCkgPTNEPTNEPTNEICIiKSB7CisgICAgICAgICAgICAg ICAgaWYodGhpcy5uZXh0U2VhcmNoVGVybSAhPTNEIHVuZGVmaW5lZCl7CisgICAgICAgICAgICAg ICAgICAgIHRoaXMuc2VhcmNoLnZhbCh0aGlzLm5leHRTZWFyY2hUZXJtKTsKKyAgICAgICAgICAg ICAgICAgICAgdGhpcy5zZWFyY2guc2VsZWN0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfQorCiAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJlc3VsdHModHJ1ZSk7Ci0gICAgICAg ICAgICB0aGlzLnNlYXJjaC5mb2N1cygpOworICAgICAgICAgICAgaWYgKHRoaXMub3B0cy5zaG91 bGRGb2N1c0lucHV0KHRoaXMpKSB7CisgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2guZm9jdXMo KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIo JC5FdmVudCgic2VsZWN0Mi1vcGVuIikpOwogICAgICAgICB9LAo9MjAKQEAgLTI3MzMsMTIgKzI5 NzIsMTggQEAKICAgICAgICAgLy8gbXVsdGkKICAgICAgICAgb25TZWxlY3Q6IGZ1bmN0aW9uIChk YXRhLCBvcHRpb25zKSB7Cj0yMAotICAgICAgICAgICAgaWYgKCF0aGlzLnRyaWdnZXJTZWxlY3Qo ZGF0YSkpIHsgcmV0dXJuOyB9CisgICAgICAgICAgICBpZiAoIXRoaXMudHJpZ2dlclNlbGVjdChk YXRhKSB8fCBkYXRhLnRleHQgPTNEPTNEPTNEICIiKSB7IHJldD0KdXJuOyB9Cj0yMAogICAgICAg ICAgICAgdGhpcy5hZGRTZWxlY3RlZENob2ljZShkYXRhKTsKPTIwCiAgICAgICAgICAgICB0aGlz Lm9wdHMuZWxlbWVudC50cmlnZ2VyKHsgdHlwZTogInNlbGVjdGVkIiwgdmFsOiB0aGlzLmlkKGRh dD0KYSksIGNob2ljZTogZGF0YSB9KTsKPTIwCisgICAgICAgICAgICAvLyBrZWVwIHRyYWNrIG9m IHRoZSBzZWFyY2gncyB2YWx1ZSBiZWZvcmUgaXQgZ2V0cyBjbGVhcmVkCisgICAgICAgICAgICB0 aGlzLm5leHRTZWFyY2hUZXJtID0zRCB0aGlzLm9wdHMubmV4dFNlYXJjaFRlcm0oZGF0YSwgdGhp cy5zZT0KYXJjaC52YWwoKSk7CisKKyAgICAgICAgICAgIHRoaXMuY2xlYXJTZWFyY2goKTsKKyAg ICAgICAgICAgIHRoaXMudXBkYXRlUmVzdWx0cygpOworCiAgICAgICAgICAgICBpZiAodGhpcy5z ZWxlY3QgfHwgIXRoaXMub3B0cy5jbG9zZU9uU2VsZWN0KSB0aGlzLnBvc3Rwcm9jZXNzUj0KZXN1 bHRzKGRhdGEsIGZhbHNlLCB0aGlzLm9wdHMuY2xvc2VPblNlbGVjdD0zRD0zRD0zRHRydWUpOwo9 MjAKICAgICAgICAgICAgIGlmICh0aGlzLm9wdHMuY2xvc2VPblNlbGVjdCkgewpAQCAtMjc1Miw2 ICsyOTk3LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSByZWFjaGVkIG1h eCBzZWxlY3Rpb24gc2l6ZSByZXBhaW50IHRoZSByZT0Kc3VsdHMgc28gY2hvaWNlcwogICAgICAg ICAgICAgICAgICAgICAgICAgLy8gYXJlIHJlcGxhY2VkIHdpdGggdGhlIG1heCBzZWxlY3Rpb24g cmVhY2hlZCBtZXM9CnNhZ2UKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUmVz dWx0cyh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIC8vIGluaXRpYWxpemVzIHNlYXJjaCdzIHZhbHVlIHdpdGggbmV4dFNlYXJjaFRl cm0gPQphbmQgdXBkYXRlIHNlYXJjaCByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm KHRoaXMubmV4dFNlYXJjaFRlcm0gIT0zRCB1bmRlZmluZWQpeworICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRoaXMuc2VhcmNoLnZhbCh0aGlzLm5leHRTZWFyY2hUZXJtKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJlc3VsdHMoKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aGlzLnNlYXJjaC5zZWxlY3QoKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB0aGlzLnBv c2l0aW9uRHJvcGRvd24oKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjc2MSw3ICsz MDEzLDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Cj0yMAotICAgICAgICAg ICAgLy8gc2luY2UgaXQncyBub3QgcG9zc2libGUgdG8gc2VsZWN0IGFuIGVsZW1lbnQgdGhhdCBo YXMgYWxyZWE9CmR5IGJlZW4KKyAgICAgICAgICAgIC8vIHNpbmNlIGl0cyBub3QgcG9zc2libGUg dG8gc2VsZWN0IGFuIGVsZW1lbnQgdGhhdCBoYXMgYWxyZWFkPQp5IGJlZW4KICAgICAgICAgICAg IC8vIGFkZGVkIHdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGlmIHRoaXMgaXMgYSBuZXcgZWxlbWVu dCBiZWZvPQpyZSBmaXJpbmcgY2hhbmdlCiAgICAgICAgICAgICB0aGlzLnRyaWdnZXJDaGFuZ2Uo eyBhZGRlZDogZGF0YSB9KTsKPTIwCkBAIC0yNzgwLDcgKzMwMzIsNyBAQAogICAgICAgICAgICAg ICAgIGVuYWJsZWRJdGVtID0zRCAkKAogICAgICAgICAgICAgICAgICAgICAiPGxpIGNsYXNzPTNE J3NlbGVjdDItc2VhcmNoLWNob2ljZSc+IiArCiAgICAgICAgICAgICAgICAgICAgICIgICAgPGRp dj48L2Rpdj4iICsKLSAgICAgICAgICAgICAgICAgICAgIiAgICA8YSBocmVmPTNEJyMnIG9uY2xp Y2s9M0QncmV0dXJuIGZhbHNlOycgY2xhc3M9M0QnPQpzZWxlY3QyLXNlYXJjaC1jaG9pY2UtY2xv c2UnIHRhYmluZGV4PTNEJy0xJz48L2E+IiArCisgICAgICAgICAgICAgICAgICAgICIgICAgPGEg aHJlZj0zRCcjJyBjbGFzcz0zRCdzZWxlY3QyLXNlYXJjaC1jaG9pY2UtY2xvcz0KZScgdGFiaW5k ZXg9M0QnLTEnPjwvYT4iICsKICAgICAgICAgICAgICAgICAgICAgIjwvbGk+IiksCiAgICAgICAg ICAgICAgICAgZGlzYWJsZWRJdGVtID0zRCAkKAogICAgICAgICAgICAgICAgICAgICAiPGxpIGNs YXNzPTNEJ3NlbGVjdDItc2VhcmNoLWNob2ljZSBzZWxlY3QyLWxvY2tlZCc+IiArCkBAIC0yODA3 LDEzICszMDU5LDExIEBACiAgICAgICAgICAgICAgICAgICAub24oImNsaWNrIGRibGNsaWNrIiwg dGhpcy5iaW5kKGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNJ bnRlcmZhY2VFbmFibGVkKCkpIHJldHVybjsKPTIwCi0gICAgICAgICAgICAgICAgICAkKGUudGFy Z2V0KS5jbG9zZXN0KCIuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlIikuZmFkZU91dCgnZj0KYXN0Jywg dGhpcy5iaW5kKGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICAgICAgICAgICAgdGhpcy51bnNlbGVj dCgkKGUudGFyZ2V0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uZmlu ZCgiLnNlbGVjdDItc2VhcmNoLWNob2ljZS1mb2N1cyIpLj0KcmVtb3ZlQ2xhc3MoInNlbGVjdDIt c2VhcmNoLWNob2ljZS1mb2N1cyIpOwotICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2Uo KTsKLSAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzU2VhcmNoKCk7Ci0gICAgICAgICAg ICAgICAgICB9KSkuZGVxdWV1ZSgpOworICAgICAgICAgICAgICAgICAgdGhpcy51bnNlbGVjdCgk KGUudGFyZ2V0KSk7CisgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5maW5kKCIuc2Vs ZWN0Mi1zZWFyY2gtY2hvaWNlLWZvY3VzIikucmVtbz0KdmVDbGFzcygic2VsZWN0Mi1zZWFyY2gt Y2hvaWNlLWZvY3VzIik7CiAgICAgICAgICAgICAgICAgICBraWxsRXZlbnQoZSk7CisgICAgICAg ICAgICAgICAgICB0aGlzLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzU2Vh cmNoKCk7CiAgICAgICAgICAgICAgIH0pKS5vbigiZm9jdXMiLCB0aGlzLmJpbmQoZnVuY3Rpb24g KCkgewogICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpKSBy ZXR1cm47CiAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hZGRDbGFzcygic2VsZWN0 Mi1jb250YWluZXItYWN0aXZlIik7CkBAIC0yODMzLDcgKzMwODMsNiBAQAogICAgICAgICAgICAg dmFyIHZhbCA9M0QgdGhpcy5nZXRWYWwoKSwKICAgICAgICAgICAgICAgICBkYXRhLAogICAgICAg ICAgICAgICAgIGluZGV4OwotCiAgICAgICAgICAgICBzZWxlY3RlZCA9M0Qgc2VsZWN0ZWQuY2xv c2VzdCgiLnNlbGVjdDItc2VhcmNoLWNob2ljZSIpOwo9MjAKICAgICAgICAgICAgIGlmIChzZWxl Y3RlZC5sZW5ndGggPTNEPTNEPTNEIDApIHsKQEAgLTI4NDgsMTUgKzMwOTcsMjcgQEAKICAgICAg ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Cj0yMAorICAgICAgICAgICAgdmFyIGV2 dCA9M0QgJC5FdmVudCgic2VsZWN0Mi1yZW1vdmluZyIpOworICAgICAgICAgICAgZXZ0LnZhbCA9 M0QgdGhpcy5pZChkYXRhKTsKKyAgICAgICAgICAgIGV2dC5jaG9pY2UgPTNEIGRhdGE7CisgICAg ICAgICAgICB0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKGV2dCk7CisKKyAgICAgICAgICAgIGlm IChldnQuaXNEZWZhdWx0UHJldmVudGVkKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHdoaWxlKChpbmRleCA9M0QgaW5kZXhP Zih0aGlzLmlkKGRhdGEpLCB2YWwpKSA+PTNEIDApIHsKICAgICAgICAgICAgICAgICB2YWwuc3Bs aWNlKGluZGV4LCAxKTsKICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbCh2YWwpOwogICAgICAg ICAgICAgICAgIGlmICh0aGlzLnNlbGVjdCkgdGhpcy5wb3N0cHJvY2Vzc1Jlc3VsdHMoKTsKICAg ICAgICAgICAgIH0KKwogICAgICAgICAgICAgc2VsZWN0ZWQucmVtb3ZlKCk7Cj0yMAotICAgICAg ICAgICAgdGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcih7IHR5cGU6ICJyZW1vdmVkIiwgdmFsOiB0 aGlzLmlkKGRhdGE9CiksIGNob2ljZTogZGF0YSB9KTsKKyAgICAgICAgICAgIHRoaXMub3B0cy5l bGVtZW50LnRyaWdnZXIoeyB0eXBlOiAic2VsZWN0Mi1yZW1vdmVkIiwgdmFsOiB0aGlzPQouaWQo ZGF0YSksIGNob2ljZTogZGF0YSB9KTsKICAgICAgICAgICAgIHRoaXMudHJpZ2dlckNoYW5nZSh7 IHJlbW92ZWQ6IGRhdGEgfSk7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9 LAo9MjAKICAgICAgICAgLy8gbXVsdGkKQEAgLTI4NzYsNyArMzEzNyw3IEBACiAgICAgICAgICAg ICB9KTsKPTIwCiAgICAgICAgICAgICBjb21wb3VuZC5lYWNoMihmdW5jdGlvbihpLCBjaG9pY2Up IHsKLSAgICAgICAgICAgICAgICAvLyBoaWRlIGFuIG9wdGdyb3VwIGlmIGl0IGRvZXNudCBoYXZl IGFueSBzZWxlY3RhYmxlIGNoaWxkPQpyZW4KKyAgICAgICAgICAgICAgICAvLyBoaWRlIGFuIG9w dGdyb3VwIGlmIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgc2VsZWN0YWJsZSBjaGlsPQpkcmVuCiAgICAg ICAgICAgICAgICAgaWYgKCFjaG9pY2UuaXMoJy5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlJykK ICAgICAgICAgICAgICAgICAgICAgJiYgY2hvaWNlLmZpbmQoIi5zZWxlY3QyLXJlc3VsdC1zZWxl Y3RhYmxlOm5vdCguc2VsZWN0PQoyLXNlbGVjdGVkKSIpLmxlbmd0aCA9M0Q9M0Q9M0QgMCkgewog ICAgICAgICAgICAgICAgICAgICBjaG9pY2UuYWRkQ2xhc3MoInNlbGVjdDItc2VsZWN0ZWQiKTsK QEAgLTI4ODcsMTEgKzMxNDgsMTEgQEAKICAgICAgICAgICAgICAgICBzZWxmLmhpZ2hsaWdodCgw KTsKICAgICAgICAgICAgIH0KPTIwCi0gICAgICAgICAgICAvL0lmIGFsbCByZXN1bHRzIGFyZSBj aG9zZW4gcmVuZGVyIGZvcm1hdE5vTUF0Y2hlcworICAgICAgICAgICAgLy9JZiBhbGwgcmVzdWx0 cyBhcmUgY2hvc2VuIHJlbmRlciBmb3JtYXROb01hdGNoZXMKICAgICAgICAgICAgIGlmKCF0aGlz Lm9wdHMuY3JlYXRlU2VhcmNoQ2hvaWNlICYmICFjaG9pY2VzLmZpbHRlcignLnNlbGVjdDItPQpy ZXN1bHQ6bm90KC5zZWxlY3QyLXNlbGVjdGVkKScpLmxlbmd0aCA+IDApewogICAgICAgICAgICAg ICAgIGlmKCFkYXRhIHx8IGRhdGEgJiYgIWRhdGEubW9yZSAmJiB0aGlzLnJlc3VsdHMuZmluZCgi LnNlbGU9CmN0Mi1uby1yZXN1bHRzIikubGVuZ3RoID0zRD0zRD0zRCAwKSB7CiAgICAgICAgICAg ICAgICAgICAgIGlmIChjaGVja0Zvcm1hdHRlcihzZWxmLm9wdHMuZm9ybWF0Tm9NYXRjaGVzLCAi Zm9ybWF0Tj0Kb01hdGNoZXMiKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1 bHRzLmFwcGVuZCgiPGxpIGNsYXNzPTNEJ3NlbGVjdDItbm8tcmVzdWw9CnRzJz4iICsgc2VsZi5v cHRzLmZvcm1hdE5vTWF0Y2hlcyhzZWxmLnNlYXJjaC52YWwoKSkgKyAiPC9saT4iKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0cy5hcHBlbmQoIjxsaSBjbGFzcz0zRCdzZWxl Y3QyLW5vLXJlc3VsPQp0cyc+IiArIGV2YWx1YXRlKHNlbGYub3B0cy5mb3JtYXROb01hdGNoZXMs IHNlbGYub3B0cy5lbGVtZW50LCBzZWxmLnNlYXJjaC49CnZhbCgpKSArICI8L2xpPiIpOwogICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAt Mjk2OSw3ICszMjMwLDkgQEAKICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0zRCAwOyBqIDwg b2xkLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlcXVhbCh0aGlzLm9w dHMuaWQoY3VycmVudFtpXSksIHRoaXMub3B0cy5pZChvbGRbaj0KXSkpKSB7CiAgICAgICAgICAg ICAgICAgICAgICAgICBjdXJyZW50LnNwbGljZShpLCAxKTsKLSAgICAgICAgICAgICAgICAgICAg ICAgIGktLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKGk+MCl7CisgICAgICAgICAgICAg ICAgICAgICAgICAJaS0tOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgICAgICAgICAgb2xkLnNwbGljZShqLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGot LTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjk4Miw3ICszMjQ1LDcgQEAKPTIwCiAgICAg ICAgIC8vIG11bHRpCiAgICAgICAgIHZhbDogZnVuY3Rpb24gKHZhbCwgdHJpZ2dlckNoYW5nZSkg ewotICAgICAgICAgICAgdmFyIG9sZERhdGEsIHNlbGY9M0R0aGlzLCBjaGFuZ2VEZXRhaWxzOwor ICAgICAgICAgICAgdmFyIG9sZERhdGEsIHNlbGY9M0R0aGlzOwo9MjAKICAgICAgICAgICAgIGlm IChhcmd1bWVudHMubGVuZ3RoID0zRD0zRD0zRCAwKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJu IHRoaXMuZ2V0VmFsKCk7CkBAIC0zMDIxLDcgKzMyODQsNyBAQAogICAgICAgICAgICAgICAgICAg ICBzZWxmLnVwZGF0ZVNlbGVjdGlvbihkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgc2VsZi5j bGVhclNlYXJjaCgpOwogICAgICAgICAgICAgICAgICAgICBpZiAodHJpZ2dlckNoYW5nZSkgewot ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50cmlnZ2VyQ2hhbmdlKHNlbGYuYnVpbGRDaGFu Z2VEZXRhaWxzKG9sZERhdGE9CiwgdGhpcy5kYXRhKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYudHJpZ2dlckNoYW5nZShzZWxmLmJ1aWxkQ2hhbmdlRGV0YWlscyhvbGREYXRhPQos IHNlbGYuZGF0YSgpKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9 KTsKICAgICAgICAgICAgIH0KQEAgLTMwNjUsNyArMzMyOCw3IEBACiAgICAgICAgICAgICB2YXIg c2VsZj0zRHRoaXMsIGlkcywgb2xkOwogICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGgg PTNEPTNEPTNEIDApIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uCi0g ICAgICAgICAgICAgICAgICAgICAuZmluZCgiLnNlbGVjdDItc2VhcmNoLWNob2ljZSIpCisgICAg ICAgICAgICAgICAgICAgICAuY2hpbGRyZW4oIi5zZWxlY3QyLXNlYXJjaC1jaG9pY2UiKQogICAg ICAgICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbigpIHsgcmV0dXJuICQodGhpcykuZGF0YSgi c2VsZWN0Mi1kYXRhIik9CjsgfSkKICAgICAgICAgICAgICAgICAgICAgIC5nZXQoKTsKICAgICAg ICAgICAgIH0gZWxzZSB7CkBAIC0zMTA1LDcgKzMzNjgsNyBAQAogICAgICAgICAgICAgICAgICAg ICBpZiAoInRhZ3MiIGluIG9wdHMpIHtvcHRzLm11bHRpcGxlID0zRCBtdWx0aXBsZSA9M0QgdHI9 CnVlO30KICAgICAgICAgICAgICAgICB9Cj0yMAotICAgICAgICAgICAgICAgIHNlbGVjdDIgPTNE IG11bHRpcGxlID8gbmV3IE11bHRpU2VsZWN0MigpIDogbmV3IFNpbmdsZVNlbGU9CmN0MigpOwor ICAgICAgICAgICAgICAgIHNlbGVjdDIgPTNEIG11bHRpcGxlID8gbmV3IHdpbmRvdy5TZWxlY3Qy WyJjbGFzcyJdLm11bHRpKCk9CiA6IG5ldyB3aW5kb3cuU2VsZWN0MlsiY2xhc3MiXS5zaW5nbGUo KTsKICAgICAgICAgICAgICAgICBzZWxlY3QyLmluaXQob3B0cyk7CiAgICAgICAgICAgICB9IGVs c2UgaWYgKHR5cGVvZihhcmdzWzBdKSA9M0Q9M0Q9M0QgInN0cmluZyIpIHsKPTIwCkBAIC0zMTI5 LDcgKzMzOTIsNyBAQAogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9M0Qgc2VsZWN0MlttZXRo b2RdLmFwcGx5KHNlbGVjdDIsIGFyZ3Muc2xpY2UoMSk9Cik7CiAgICAgICAgICAgICAgICAgfQog ICAgICAgICAgICAgICAgIGlmIChpbmRleE9mKGFyZ3NbMF0sIHZhbHVlTWV0aG9kcykgPj0zRCAw Ci0gICAgICAgICAgICAgICAgICAgIHx8IChpbmRleE9mKGFyZ3NbMF0sIHByb3BlcnR5TWV0aG9k cykgJiYgYXJncy5sZW5ndGggPQo9M0Q9M0QgMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgfHwg KGluZGV4T2YoYXJnc1swXSwgcHJvcGVydHlNZXRob2RzKSA+PTNEIDAgJiYgYXJncy5sPQplbmd0 aCA9M0Q9M0QgMSkpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhYm9y dCB0aGUgaXRlcmF0aW9uLCByZWFkeSB0byByZXR1cm4gPQpmaXJzdCBtYXRjaGVkIHZhbHVlCiAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTMxNjAsMTkgKzM0MjMs MTMgQEAKICAgICAgICAgc29ydFJlc3VsdHM6IGZ1bmN0aW9uIChyZXN1bHRzLCBjb250YWluZXIs IHF1ZXJ5KSB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICAgfSwKLSAgICAg ICAgZm9ybWF0UmVzdWx0Q3NzQ2xhc3M6IGZ1bmN0aW9uKGRhdGEpIHtyZXR1cm4gdW5kZWZpbmVk O30sCisgICAgICAgIGZvcm1hdFJlc3VsdENzc0NsYXNzOiBmdW5jdGlvbihkYXRhKSB7cmV0dXJu IGRhdGEuY3NzO30sCiAgICAgICAgIGZvcm1hdFNlbGVjdGlvbkNzc0NsYXNzOiBmdW5jdGlvbihk YXRhLCBjb250YWluZXIpIHtyZXR1cm4gdW5kZWZpbj0KZWQ7fSwKLSAgICAgICAgZm9ybWF0Tm9N YXRjaGVzOiBmdW5jdGlvbiAoKSB7IHJldHVybiAiTm8gbWF0Y2hlcyBmb3VuZCI7IH0sCi0gICAg ICAgIGZvcm1hdElucHV0VG9vU2hvcnQ6IGZ1bmN0aW9uIChpbnB1dCwgbWluKSB7IHZhciBuID0z RCBtaW4gLSBpbnB1dD0KLmxlbmd0aDsgcmV0dXJuICJQbGVhc2UgZW50ZXIgIiArIG4gKyAiIG1v cmUgY2hhcmFjdGVyIiArIChuID0zRD0zRCAxPyAiIiA6PQogInMiKTsgfSwKLSAgICAgICAgZm9y bWF0SW5wdXRUb29Mb25nOiBmdW5jdGlvbiAoaW5wdXQsIG1heCkgeyB2YXIgbiA9M0QgaW5wdXQu bGVuZ3RoPQogLSBtYXg7IHJldHVybiAiUGxlYXNlIGRlbGV0ZSAiICsgbiArICIgY2hhcmFjdGVy IiArIChuID0zRD0zRCAxPyAiIiA6ICJzIik9CjsgfSwKLSAgICAgICAgZm9ybWF0U2VsZWN0aW9u VG9vQmlnOiBmdW5jdGlvbiAobGltaXQpIHsgcmV0dXJuICJZb3UgY2FuIG9ubHkgc2VsPQplY3Qg IiArIGxpbWl0ICsgIiBpdGVtIiArIChsaW1pdCA9M0Q9M0QgMSA/ICIiIDogInMiKTsgfSwKLSAg ICAgICAgZm9ybWF0TG9hZE1vcmU6IGZ1bmN0aW9uIChwYWdlTnVtYmVyKSB7IHJldHVybiAiTG9h ZGluZyBtb3JlIHJlc3VsPQp0cy4uLiI7IH0sCi0gICAgICAgIGZvcm1hdFNlYXJjaGluZzogZnVu Y3Rpb24gKCkgeyByZXR1cm4gIlNlYXJjaGluZy4uLiI7IH0sCiAgICAgICAgIG1pbmltdW1SZXN1 bHRzRm9yU2VhcmNoOiAwLAogICAgICAgICBtaW5pbXVtSW5wdXRMZW5ndGg6IDAsCiAgICAgICAg IG1heGltdW1JbnB1dExlbmd0aDogbnVsbCwKICAgICAgICAgbWF4aW11bVNlbGVjdGlvblNpemU6 IDAsCi0gICAgICAgIGlkOiBmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5pZDsgfSwKKyAgICAgICAg aWQ6IGZ1bmN0aW9uIChlKSB7IHJldHVybiBlID0zRD0zRCB1bmRlZmluZWQgPyBudWxsIDogZS5p ZDsgfSwKICAgICAgICAgbWF0Y2hlcjogZnVuY3Rpb24odGVybSwgdGV4dCkgewogICAgICAgICAg ICAgcmV0dXJuIHN0cmlwRGlhY3JpdGljcygnJyt0ZXh0KS50b1VwcGVyQ2FzZSgpLmluZGV4T2Yo c3RyaXBEaWE9CmNyaXRpY3MoJycrdGVybSkudG9VcHBlckNhc2UoKSkgPj0zRCAwOwogICAgICAg ICB9LApAQCAtMzE4NCw5ICszNDQxLDQzIEBACiAgICAgICAgIHNlbGVjdE9uQmx1cjogZmFsc2Us CiAgICAgICAgIGFkYXB0Q29udGFpbmVyQ3NzQ2xhc3M6IGZ1bmN0aW9uKGMpIHsgcmV0dXJuIGM7 IH0sCiAgICAgICAgIGFkYXB0RHJvcGRvd25Dc3NDbGFzczogZnVuY3Rpb24oYykgeyByZXR1cm4g bnVsbDsgfSwKLSAgICAgICAgbmV4dFNlYXJjaFRlcm06IGZ1bmN0aW9uKHNlbGVjdGVkT2JqZWN0 LCBjdXJyZW50U2VhcmNoVGVybSkgeyByZXR1PQpybiB1bmRlZmluZWQ7IH0KKyAgICAgICAgbmV4 dFNlYXJjaFRlcm06IGZ1bmN0aW9uKHNlbGVjdGVkT2JqZWN0LCBjdXJyZW50U2VhcmNoVGVybSkg eyByZXR1PQpybiB1bmRlZmluZWQ7IH0sCisgICAgICAgIHNlYXJjaElucHV0UGxhY2Vob2xkZXI6 ICcnLAorICAgICAgICBjcmVhdGVTZWFyY2hDaG9pY2VQb3NpdGlvbjogJ3RvcCcsCisgICAgICAg IHNob3VsZEZvY3VzSW5wdXQ6IGZ1bmN0aW9uIChpbnN0YW5jZSkgeworICAgICAgICAgICAgLy8g QXR0ZW1wdCB0byBkZXRlY3QgdG91Y2ggZGV2aWNlcworICAgICAgICAgICAgdmFyIHN1cHBvcnRz VG91Y2hFdmVudHMgPTNEICgoJ29udG91Y2hzdGFydCcgaW4gd2luZG93KSB8fAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRz ID4gMCkpOworCisgICAgICAgICAgICAvLyBPbmx5IGRldmljZXMgd2hpY2ggc3VwcG9ydCB0b3Vj aCBldmVudHMgc2hvdWxkIGJlIHNwZWNpYWwgYz0KYXNlZAorICAgICAgICAgICAgaWYgKCFzdXBw b3J0c1RvdWNoRXZlbnRzKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgIC8vIE5ldmVyIGZvY3VzIHRoZSBpbnB1dCBpZiBzZWFyY2gg aXMgZGlzYWJsZWQKKyAgICAgICAgICAgIGlmIChpbnN0YW5jZS5vcHRzLm1pbmltdW1SZXN1bHRz Rm9yU2VhcmNoIDwgMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICB9Owo9MjAK KyAgICAkLmZuLnNlbGVjdDIubG9jYWxlcyA9M0QgW107CisKKyAgICAkLmZuLnNlbGVjdDIubG9j YWxlc1snZW4nXSA9M0QgeworICAgICAgICAgZm9ybWF0TWF0Y2hlczogZnVuY3Rpb24gKG1hdGNo ZXMpIHsgaWYgKG1hdGNoZXMgPTNEPTNEPTNEIDEpIHsgcmU9CnR1cm4gIk9uZSByZXN1bHQgaXMg YXZhaWxhYmxlLCBwcmVzcyBlbnRlciB0byBzZWxlY3QgaXQuIjsgfSByZXR1cm4gbWF0Y2hlcz0K ICsgIiByZXN1bHRzIGFyZSBhdmFpbGFibGUsIHVzZSB1cCBhbmQgZG93biBhcnJvdyBrZXlzIHRv IG5hdmlnYXRlLiI7IH0sCisgICAgICAgICBmb3JtYXROb01hdGNoZXM6IGZ1bmN0aW9uICgpIHsg cmV0dXJuICJObyBtYXRjaGVzIGZvdW5kIjsgfSwKKyAgICAgICAgIGZvcm1hdEFqYXhFcnJvcjog ZnVuY3Rpb24gKGpxWEhSLCB0ZXh0U3RhdHVzLCBlcnJvclRocm93bikgeyByZXR1PQpybiAiTG9h ZGluZyBmYWlsZWQiOyB9LAorICAgICAgICAgZm9ybWF0SW5wdXRUb29TaG9ydDogZnVuY3Rpb24g KGlucHV0LCBtaW4pIHsgdmFyIG4gPTNEIG1pbiAtIGlucHU9CnQubGVuZ3RoOyByZXR1cm4gIlBs ZWFzZSBlbnRlciAiICsgbiArICIgb3IgbW9yZSBjaGFyYWN0ZXIiICsgKG4gPTNEPTNEIDEgPz0K ICIiIDogInMiKTsgfSwKKyAgICAgICAgIGZvcm1hdElucHV0VG9vTG9uZzogZnVuY3Rpb24gKGlu cHV0LCBtYXgpIHsgdmFyIG4gPTNEIGlucHV0Lmxlbmd0PQpoIC0gbWF4OyByZXR1cm4gIlBsZWFz ZSBkZWxldGUgIiArIG4gKyAiIGNoYXJhY3RlciIgKyAobiA9M0Q9M0QgMSA/ICIiIDogInM9CiIp OyB9LAorICAgICAgICAgZm9ybWF0U2VsZWN0aW9uVG9vQmlnOiBmdW5jdGlvbiAobGltaXQpIHsg cmV0dXJuICJZb3UgY2FuIG9ubHkgc2U9CmxlY3QgIiArIGxpbWl0ICsgIiBpdGVtIiArIChsaW1p dCA9M0Q9M0QgMSA/ICIiIDogInMiKTsgfSwKKyAgICAgICAgIGZvcm1hdExvYWRNb3JlOiBmdW5j dGlvbiAocGFnZU51bWJlcikgeyByZXR1cm4gIkxvYWRpbmcgbW9yZSByZXN1PQpsdHM9RTI9ODA9 QTYiOyB9LAorICAgICAgICAgZm9ybWF0U2VhcmNoaW5nOiBmdW5jdGlvbiAoKSB7IHJldHVybiAi U2VhcmNoaW5nPUUyPTgwPUE2IjsgfSwKKyAgICB9OworCisgICAgJC5leHRlbmQoJC5mbi5zZWxl Y3QyLmRlZmF1bHRzLCAkLmZuLnNlbGVjdDIubG9jYWxlc1snZW4nXSk7CisKICAgICAkLmZuLnNl bGVjdDIuYWpheERlZmF1bHRzID0zRCB7CiAgICAgICAgIHRyYW5zcG9ydDogJC5hamF4LAogICAg ICAgICBwYXJhbXM6IHsKCmRpZmYgLXIgMmE4MmE3YmM5MWU3ZWYxYmFhZjI4MjA4OTIzZThiM2Zk Y2UzZmRiYiAtciA0ZDg4M2RhMjE4MTE5ZjhhZDkyMzJiNj0KMTFiY2YwYmRmODZjZTc2YzkgY2xp ZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLWJhc2UuanMKLS0tIGEvY2xp ZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLWJhc2UuanMKKysrIGIvY2xp ZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLWJhc2UuanMKQEAgLTE0MSw3 ICsxNDEsNyBAQAogICAgICAgICAgICA9MjAKICAgICAgICAgICAgICAgICAvLyBzY3JvbGwgdG8g Zmlyc3QgaW5wdXQgZWxlbWVudAogICAgICAgICAgICAgICAgIGlmICghc2lsZW50KSB7Ci0gICAg ICAgICAgICAgICAgICAgICQodGhpcy5jb250YWluZXIpLmFuaW1hdGUoeworICAgICAgICAgICAg ICAgICAgICAkKCdodG1sLCBib2R5JykuYW5pbWF0ZSh7CiAgICAgICAgICAgICAgICAgICAgICAg ICBzY3JvbGxUb3A6IGlucHV0X2VsZW1lbnQuJGVsLm9mZnNldCgpLnRvcCAtIDIwCiAgICAgICAg ICAgICAgICAgICAgIH0sIDUwMCk7CiAgICAgICAgICAgICAgICAgfQoKZGlmZiAtciAyYTgyYTdi YzkxZTdlZjFiYWFmMjgyMDg5MjNlOGIzZmRjZTNmZGJiIC1yIDRkODgzZGEyMTgxMTlmOGFkOTIz MmI2PQoxMWJjZjBiZGY4NmNlNzZjOSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rv b2xzLWZvcm0td29ya2Zsb3cuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29s cy90b29scy1mb3JtLXdvcmtmbG93LmpzCisrKyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMv dG9vbHMvdG9vbHMtZm9ybS13b3JrZmxvdy5qcwpAQCAtMTMzLDcgKzEzMyw3IEBACiAgICAgICAg ICAgICB9KTsKICAgICAgICAgICAgIGV4dGVuc2lvbnMudW5zaGlmdCh7CiAgICAgICAgICAgICAg ICAgMCA6ICdMZWF2ZSB1bmNoYW5nZWQnLAotICAgICAgICAgICAgICAgIDEgOiAnJworICAgICAg ICAgICAgICAgIDEgOiAnX19lbXB0eV9fJwogICAgICAgICAgICAgfSk7Cj0yMAogICAgICAgICAg ICAgLy8gY3JlYXRlIGN1c3RvbSBzdWIgc2VjdGlvbgpAQCAtMTUzLDcgKzE1Myw4IEBACiAgICAg ICAgICAgICAgICAgICAgIGFyZ3VtZW50ICAgIDogJ25ld3R5cGUnLAogICAgICAgICAgICAgICAg ICAgICBsYWJlbCAgICAgICA6ICdDaGFuZ2UgZGF0YXR5cGUnLAogICAgICAgICAgICAgICAgICAg ICB0eXBlICAgICAgICA6ICdzZWxlY3QnLAotICAgICAgICAgICAgICAgICAgICBpZ25vcmUgICAg ICA6ICcnLAorICAgICAgICAgICAgICAgICAgICBpZ25vcmUgICAgICA6ICdfX2VtcHR5X18nLAor ICAgICAgICAgICAgICAgICAgICB2YWx1ZSAgICAgICA6ICdfX2VtcHR5X18nLAogICAgICAgICAg ICAgICAgICAgICBvcHRpb25zICAgICA6IGV4dGVuc2lvbnMsCiAgICAgICAgICAgICAgICAgICAg IGhlbHAgICAgICAgIDogJ1RoaXMgYWN0aW9uIHdpbGwgY2hhbmdlIHRoZSBkYXRhdHlwZSBvZj0K IHRoZSBvdXRwdXQgdG8gdGhlIGluZGljYXRlZCB2YWx1ZS4nCiAgICAgICAgICAgICAgICAgfSx7 CgpkaWZmIC1yIDJhODJhN2JjOTFlN2VmMWJhYWYyODIwODkyM2U4YjNmZGNlM2ZkYmIgLXIgNGQ4 ODNkYTIxODExOWY4YWQ5MjMyYjY9CjExYmNmMGJkZjg2Y2U3NmM5IGNsaWVudC9nYWxheHkvc2Ny aXB0cy9tdmMvdG9vbHMvdG9vbHMtc2VsZWN0LWNvbnRlbnQuanMKLS0tIGEvY2xpZW50L2dhbGF4 eS9zY3JpcHRzL212Yy90b29scy90b29scy1zZWxlY3QtY29udGVudC5qcworKysgYi9jbGllbnQv Z2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXNlbGVjdC1jb250ZW50LmpzCkBAIC03NSw2 ICs3NSw3IEBACiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHRoaXMuc2VsZWN0X211bHRp cGxlID0zRCBuZXcgVWkuU2VsZWN0LlZpZXcoewogICAgICAgICAgICAgICAgIG11bHRpcGxlICAg IDogdHJ1ZSwKKyAgICAgICAgICAgICAgICBzZWFyY2hhYmxlICA6IGZhbHNlLAogICAgICAgICAg ICAgICAgIGVycm9yX3RleHQgIDogaGRhX2Vycm9yLAogICAgICAgICAgICAgICAgIG9uY2hhbmdl ICAgIDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgIHNlbGYudHJpZ2dlcignY2hh bmdlJyk7CgpUaGlzIGRpZmYgaXMgc28gYmlnIHRoYXQgd2UgbmVlZGVkIHRvIHRydW5jYXRlIHRo ZSByZW1haW5kZXIuCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFs L2NvbW1pdHMvMDgxODY1YjViYTFjLwpDaGFuZ2VzZXQ6ICAgMDgxODY1YjViYTFjCkJyYW5jaDog ICAgICByZWxlYXNlXzE1LjAzClVzZXI6ICAgICAgICBtYXJ0ZW5zb24KRGF0ZTogICAgICAgIDIw MTUtMDItMjMgMTg6NTM6MTMrMDA6MDAKU3VtbWFyeTogICAgIGZpeCBlcnJvciBwcmV2ZW50aW5n IGNoYW5nZSBvZiB1c2VybmFtZSBpbiBUUwpBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIDRk ODgzZGEyMTgxMTlmOGFkOTIzMmI2MTFiY2YwYmRmODZjZTc2YzkgLXIgMDgxODY1YjViYTFjYTkw YmU5OTljY2Y9CjFjNWRhY2JmZjVlM2YxZmRiIHRlbXBsYXRlcy91c2VyL2luZm8ubWFrbwotLS0g YS90ZW1wbGF0ZXMvdXNlci9pbmZvLm1ha28KKysrIGIvdGVtcGxhdGVzL3VzZXIvaW5mby5tYWtv CkBAIC05OSwxMyArOTksMTMgQEAKICAgICAgICAgICAgICAgICA8bGFiZWw+UHVibGljIG5hbWU6 PC9sYWJlbD4KICAgICAgICAgICAgICAgICAlaWYgdC53ZWJhcHAubmFtZSA9M0Q9M0QgJ3Rvb2xf c2hlZCc6CiAgICAgICAgICAgICAgICAgICAgICVpZiB1c2VyLmFjdGl2ZV9yZXBvc2l0b3JpZXM6 Ci0gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0zRCJoaWRkZW4iIG5hbWU9M0Qi dXNlcm5hbWUiIHZhbHVlPTNEIj0KJHt1c2VybmFtZSB8IGh9Ii8+CisgICAgICAgICAgICAgICAg ICAgICAgICA8aW5wdXQgdHlwZT0zRCJoaWRkZW4iIGlkPTNEIm5hbWVfaW5wdXQiIG5hbWU9M0Qi dT0Kc2VybmFtZSIgdmFsdWU9M0QiJHt1c2VybmFtZSB8IGh9Ii8+CiAgICAgICAgICAgICAgICAg ICAgICAgICAke3VzZXJuYW1lIHwgaH0KICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh c3M9M0QidG9vbFBhcmFtSGVscCIgc3R5bGU9M0QiY2xlYXI6IGJvdGg7PQoiPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFlvdSBjYW5ub3QgY2hhbmdlIHlvdXIgcHVibGljIG5hbWUgYWZ0 ZXIgeW91IGg9CmF2ZSBjcmVhdGVkIGEgcmVwb3NpdG9yeSBpbiB0aGlzIHRvb2wgc2hlZC4KICAg ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAlZWxzZToK LSAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPTNEInRleHQiIG5hbWU9M0QidXNl cm5hbWUiIHNpemU9M0QiNDAiPQogdmFsdWU9M0QiJHt1c2VybmFtZSB8IGh9Ii8+CisgICAgICAg ICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0zRCJ0ZXh0IiBpZD0zRCJuYW1lX2lucHV0IiBu YW1lPTNEInVzZT0Kcm5hbWUiIHNpemU9M0QiNDAiIHZhbHVlPTNEIiR7dXNlcm5hbWUgfCBofSIv PjxkaXYgY2xhc3M9M0QidG9vbFBhcmFtSGVscCIgPQpzdHlsZT0zRCJjbGVhcjogYm90aDsiPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdXIgcHVibGljIG5hbWUgcHJvdmlkZXMgYSBt ZWFucyBvZiBpZGVudGlmeWk9Cm5nIHlvdSBwdWJsaWNseSB3aXRoaW4gdGhpcyB0b29sIHNoZWQu IFB1YmxpYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzIG11c3QgYmUgYXQgbGVh c3QgZm91ciBjaGFyYWN0ZXJzIGluIGxlbmc9CnRoIGFuZCBjb250YWluIG9ubHkgbG93ZXItY2Fz ZSBsZXR0ZXJzLCBudW1iZXJzLAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5 LWNlbnRyYWwvY29tbWl0cy9jYjIwMDUwNGJmZTIvCkNoYW5nZXNldDogICBjYjIwMDUwNGJmZTIK QnJhbmNoOiAgICAgIHJlbGVhc2VfMTUuMDMKVXNlcjogICAgICAgIGRhbm5vbgpEYXRlOiAgICAg ICAgMjAxNS0wMi0yMyAyMDowNzo1OCswMDowMApTdW1tYXJ5OiAgICAgQnVnZml4IGZvciBjbGlj a2luZyBjYW5jZWwgaW4gYSBtZW51IGFuZCBoYXZpbmcgdGhlIGFjdGlvbiBoYXA9CnBlbiBhbnl3 YXkuCkFmZmVjdGVkICM6ICAzIGZpbGVzCgpkaWZmIC1yIDA4MTg2NWI1YmExY2E5MGJlOTk5Y2Nm MWM1ZGFjYmZmNWUzZjFmZGIgLXIgY2IyMDA1MDRiZmUyZjQ3NTViN2FhNjk9CmFiNGJlZmQxMzFi ZmNkNTUxIGNsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdWkvcG9wdXAtbWVudS5qcwotLS0gYS9j bGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3VpL3BvcHVwLW1lbnUuanMKKysrIGIvY2xpZW50L2dh bGF4eS9zY3JpcHRzL212Yy91aS9wb3B1cC1tZW51LmpzCkBAIC01NSw4ICs1NSwxMSBAQAogICAg ICAgICAgICAgICAgIGlmKCBvcHRpb24uZnVuYyApewogICAgICAgICAgICAgICAgICAgICAkKCB0 aGlzICkuY2hpbGRyZW4oICdhLnBvcHVwbWVudS1vcHRpb24nICkuY2xpY2soIGZ1bmM9CnRpb24o IGV2ZW50ICl7CiAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uZnVuYy5jYWxsKCBtZW51 LCBldmVudCwgb3B0aW9uICk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBtdXN0IHBy ZXZlbnREZWZhdWx0IG90aGVyd2lzZSBjbGlja2luZyAiY2FuYz0KZWwiCisgICAgICAgICAgICAg ICAgICAgICAgICAvLyBvbiBhIHB1cmdlIG9yIHNvbWV0aGluZyBzdGlsbCBuYXZpZ2F0ZXMgYW5k IGNhdT0Kc2VzCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYWN0aW9uLgorICAgICAg ICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAg ICAgICAgICAgIC8vIGJ1YmJsZSB1cCBzbyB0aGF0IGFuIG9wdGlvbiBjbGljayB3aWxsIGNhbGwg dGhlPQogY2xvc2UgYmVoYXZpb3IKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vcmV0dXJuIGZh bHNlOwogICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICB9KTsKCmRpZmYgLXIgMDgxODY1YjViYTFjYTkwYmU5OTljY2YxYzVkYWNiZmY1ZTNmMWZk YiAtciBjYjIwMDUwNGJmZTJmNDc1NWI3YWE2OT0KYWI0YmVmZDEzMWJmY2Q1NTEgc3RhdGljL3Nj cmlwdHMvbXZjL3VpL3BvcHVwLW1lbnUuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvbXZjL3VpL3Bv cHVwLW1lbnUuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL3VpL3BvcHVwLW1lbnUuanMKQEAg LTU1LDggKzU1LDExIEBACiAgICAgICAgICAgICAgICAgaWYoIG9wdGlvbi5mdW5jICl7CiAgICAg ICAgICAgICAgICAgICAgICQoIHRoaXMgKS5jaGlsZHJlbiggJ2EucG9wdXBtZW51LW9wdGlvbicg KS5jbGljayggZnVuYz0KdGlvbiggZXZlbnQgKXsKICAgICAgICAgICAgICAgICAgICAgICAgIG9w dGlvbi5mdW5jLmNhbGwoIG1lbnUsIGV2ZW50LCBvcHRpb24gKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgIC8vIFdlIG11c3QgcHJldmVudERlZmF1bHQgb3RoZXJ3aXNlIGNsaWNraW5nICJjYW5j PQplbCIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9uIGEgcHVyZ2Ugb3Igc29tZXRoaW5n IHN0aWxsIG5hdmlnYXRlcyBhbmQgY2F1PQpzZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v IHRoZSBhY3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVs dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnViYmxlIHVwIHNvIHRoYXQgYW4gb3B0 aW9uIGNsaWNrIHdpbGwgY2FsbCB0aGU9CiBjbG9zZSBiZWhhdmlvcgotICAgICAgICAgICAgICAg ICAgICAgICAgLy9yZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwoKZGlmZiAtciAwODE4NjViNWJhMWNhOTBiZTk5 OWNjZjFjNWRhY2JmZjVlM2YxZmRiIC1yIGNiMjAwNTA0YmZlMmY0NzU1YjdhYTY5PQphYjRiZWZk MTMxYmZjZDU1MSBzdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3VpL3BvcHVwLW1lbnUuanMKLS0t IGEvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy91aS9wb3B1cC1tZW51LmpzCisrKyBiL3N0YXRp Yy9zY3JpcHRzL3BhY2tlZC9tdmMvdWkvcG9wdXAtbWVudS5qcwpAQCAtMSwxICsxLDEgQEAKLWRl ZmluZShbXSxmdW5jdGlvbigpe3ZhciBhPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxp emU6ZnVuY3Rpb24oZCxjPQope3RoaXMuJGJ1dHRvbj0zRGQ7aWYoIXRoaXMuJGJ1dHRvbi5zaXpl KCkpe3RoaXMuJGJ1dHRvbj0zRCQoIjxkaXYvPiIpfXRoaXM9Ci5vcHRpb25zPTNEY3x8W107dmFy IGU9M0R0aGlzO3RoaXMuJGJ1dHRvbi5jbGljayhmdW5jdGlvbihmKXskKCIucG9wbWVudS13cj0K YXBwZXIiKS5yZW1vdmUoKTtlLl9yZW5kZXJBbmRTaG93KGYpO3JldHVybiBmYWxzZX0pfSxfcmVu ZGVyQW5kU2hvdzpmdW5jdGlvPQpuKGMpe3RoaXMucmVuZGVyKCk7dGhpcy4kZWwuYXBwZW5kVG8o ImJvZHkiKS5jc3ModGhpcy5fZ2V0U2hvd25Qb3NpdGlvbihjKSk9Ci5zaG93KCk7dGhpcy5fc2V0 VXBDbG9zZUJlaGF2aW9yKCl9LHJlbmRlcjpmdW5jdGlvbigpe3RoaXMuJGVsLmFkZENsYXNzKCJw bz0KcG1lbnUtd3JhcHBlciIpLmhpZGUoKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSJ9KS5odG1s KHRoaXMudGVtcGxhdGUodGhpcy4kPQpidXR0b24uYXR0cigiaWQiKSx0aGlzLm9wdGlvbnMpKTtp Zih0aGlzLm9wdGlvbnMubGVuZ3RoKXt2YXIgYz0zRHRoaXM7dGhpcy49CiRlbC5maW5kKCJsaSIp LmVhY2goZnVuY3Rpb24oZSxkKXt2YXIgZj0zRGMub3B0aW9uc1tlXTtpZihmLmZ1bmMpeyQodGhp cykuYz0KaGlsZHJlbigiYS5wb3B1cG1lbnUtb3B0aW9uIikuY2xpY2soZnVuY3Rpb24oZyl7Zi5m dW5jLmNhbGwoYyxnLGYpfSl9fSl9cmV0PQp1cm4gdGhpc30sdGVtcGxhdGU6ZnVuY3Rpb24oZCxj KXtyZXR1cm5bJzx1bCBpZD0zRCInLGQsJy1tZW51IiBjbGFzcz0zRCJkcm89CnBkb3duLW1lbnUi PicsdGhpcy5fdGVtcGxhdGVPcHRpb25zKGMpLCI8L3VsPiJdLmpvaW4oIiIpfSxfdGVtcGxhdGVP cHRpb25zOj0KZnVuY3Rpb24oYyl7aWYoIWMubGVuZ3RoKXtyZXR1cm4iPGxpPihubyBvcHRpb25z KTwvbGk+In1yZXR1cm4gXy5tYXAoYyxmdW5jPQp0aW9uKGYpe2lmKGYuZGl2aWRlcil7cmV0dXJu JzxsaSBjbGFzcz0zRCJkaXZpZGVyIj48L2xpPid9ZWxzZXtpZihmLmhlYWRlcik9CntyZXR1cm5b JzxsaSBjbGFzcz0zRCJoZWFkIj48YSBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKTsiPicsZi5o dG1sLCI8L2E+PD0KL2xpPiJdLmpvaW4oIiIpfX12YXIgZT0zRGYuaHJlZnx8ImphdmFzY3JpcHQ6 dm9pZCgwKTsiLGc9M0QoZi50YXJnZXQpPygnIHRhPQpyZ2V0PTNEIicrZi50YXJnZXQrJyInKToo IiIpLGQ9M0QoZi5jaGVja2VkKT8oJzxzcGFuIGNsYXNzPTNEImZhIGZhLWNoZWNrIj49Cjwvc3Bh bj4nKTooIiIpO3JldHVyblsnPGxpPjxhIGNsYXNzPTNEInBvcHVwbWVudS1vcHRpb24iIGhyZWY9 M0QiJyxlLCciJyxnLD0KIj4iLGQsZi5odG1sLCI8L2E+PC9saT4iXS5qb2luKCIiKX0pLmpvaW4o IiIpfSxfZ2V0U2hvd25Qb3NpdGlvbjpmdW5jdGlvbihkPQope3ZhciBlPTNEdGhpcy4kZWwud2lk dGgoKTt2YXIgYz0zRGQucGFnZVgtZS8yO2M9M0RNYXRoLm1pbihjLCQoZG9jdW1lbnQpLnM9CmNy b2xsTGVmdCgpKyQod2luZG93KS53aWR0aCgpLWUtNSk7Yz0zRE1hdGgubWF4KGMsJChkb2N1bWVu dCkuc2Nyb2xsTGVmdCgpKz0KNSk7cmV0dXJue3RvcDpkLnBhZ2VZLGxlZnQ6Y319LF9zZXRVcENs b3NlQmVoYXZpb3I6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXM7PQpmdW5jdGlvbiBjKGcpeyQoZG9j dW1lbnQpLm9mZigiY2xpY2suY2xvc2VfcG9wdXAiKTtpZih3aW5kb3cucGFyZW50IT0zRD0zRHc9 CmluZG93KXt0cnl7JCh3aW5kb3cucGFyZW50LmRvY3VtZW50KS5vZmYoImNsaWNrLmNsb3NlX3Bv cHVwIil9Y2F0Y2goZil7fX1lbD0Kc2V7dHJ5eyQoImlmcmFtZSNnYWxheHlfbWFpbiIpLmNvbnRl bnRzKCkub2ZmKCJjbGljay5jbG9zZV9wb3B1cCIpfWNhdGNoKGYpPQp7fX1lLnJlbW92ZSgpfSQo Imh0bWwiKS5vbmUoImNsaWNrLmNsb3NlX3BvcHVwIixjKTtpZih3aW5kb3cucGFyZW50IT0zRD0z RHc9CmluZG93KXt0cnl7JCh3aW5kb3cucGFyZW50LmRvY3VtZW50KS5maW5kKCJodG1sIikub25l KCJjbGljay5jbG9zZV9wb3B1cCIsYz0KKX1jYXRjaChkKXt9fWVsc2V7dHJ5eyQoImlmcmFtZSNn YWxheHlfbWFpbiIpLmNvbnRlbnRzKCkub25lKCJjbGljay5jbG9zZV9wPQpvcHVwIixjKX1jYXRj aChkKXt9fX0sYWRkSXRlbTpmdW5jdGlvbihkLGMpe2M9M0QoYz49M0QwKT9jOnRoaXMub3B0aW9u cy5sZW49Cmd0aDt0aGlzLm9wdGlvbnMuc3BsaWNlKGMsMCxkKTtyZXR1cm4gdGhpc30scmVtb3Zl SXRlbTpmdW5jdGlvbihjKXtpZihjPj0zRD0KMCl7dGhpcy5vcHRpb25zLnNwbGljZShjLDEpfXJl dHVybiB0aGlzfSxmaW5kSW5kZXhCeUh0bWw6ZnVuY3Rpb24oZCl7Zm9yKHZhPQpyIGM9M0QwO2M8 dGhpcy5vcHRpb25zLmxlbmd0aDtjKyspe2lmKF8uaGFzKHRoaXMub3B0aW9uc1tjXSwiaHRtbCIp JiYodGhpcy49Cm9wdGlvbnNbY10uaHRtbD0zRD0zRD0zRGQpKXtyZXR1cm4gY319cmV0dXJuIG51 bGx9LGZpbmRJdGVtQnlIdG1sOmZ1bmN0aW9uKD0KYyl7cmV0dXJuIHRoaXMub3B0aW9uc1sodGhp cy5maW5kSW5kZXhCeUh0bWwoYykpXX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1PQpybiJQb3B1 cE1lbnUifX0pO2EuY3JlYXRlPTNEZnVuY3Rpb24gYihkLGMpe3JldHVybiBuZXcgYShkLGMpfTth Lm1ha2VfcG9wdXA9Cm1lbnU9M0RmdW5jdGlvbihkLGUpe3ZhciBjPTNEW107Xy5lYWNoKGUsZnVu Y3Rpb24oaCxmKXt2YXIgZz0zRHtodG1sOmZ9O2lmKD0KaD0zRD0zRD0zRG51bGwpe2cuaGVhZGVy PTNEdHJ1ZX1lbHNle2lmKGpRdWVyeS50eXBlKGgpPTNEPTNEPTNEImZ1bmN0aW9uIil7PQpnLmZ1 bmM9M0RofX1jLnB1c2goZyl9KTtyZXR1cm4gbmV3IGEoJChkKSxjKX07YS5jb252ZXJ0TGlua3NU b09wdGlvbnM9M0RmdW49CmN0aW9uKGUsYyl7ZT0zRCQoZSk7Yz0zRGN8fCJhIjt2YXIgZD0zRFtd O2UuZmluZChjKS5lYWNoKGZ1bmN0aW9uKGosZyl7dmFyID0KaD0zRHt9LGY9M0QkKGopO2guaHRt bD0zRGYudGV4dCgpO2lmKGYuYXR0cigiaHJlZiIpKXt2YXIgbD0zRGYuYXR0cigiaHJlZiIpPQos bT0zRGYuYXR0cigidGFyZ2V0Iiksaz0zRGYuYXR0cigiY29uZmlybSIpO2guZnVuYz0zRGZ1bmN0 aW9uKCl7aWYoKGspJiYoIWM9Cm9uZmlybShrKSkpe3JldHVybn1zd2l0Y2gobSl7Y2FzZSJfcGFy ZW50Ijp3aW5kb3cucGFyZW50LmxvY2F0aW9uPTNEbDticmVhaz0KO2Nhc2UiX3RvcCI6d2luZG93 LnRvcC5sb2NhdGlvbj0zRGw7YnJlYWs7ZGVmYXVsdDp3aW5kb3cubG9jYXRpb249M0RsfX19ZC5w PQp1c2goaCl9KTtyZXR1cm4gZH07YS5mcm9tRXhpc3RpbmdEb209M0RmdW5jdGlvbihmLGUsYyl7 Zj0zRCQoZik7ZT0zRCQoZSk7dmE9CnIgZD0zRGEuY29udmVydExpbmtzVG9PcHRpb25zKGUsYyk7 ZS5yZW1vdmUoKTtyZXR1cm4gbmV3IGEoZixkKX07YS5tYWtlX3BvcD0KdXBfbWVudXM9M0RmdW5j dGlvbihlLGQsZil7ZT0zRGV8fGRvY3VtZW50O2Q9M0RkfHwiZGl2W3BvcHVwbWVudV0iO2Y9M0Rm fHxmPQp1bmN0aW9uKGcsaCl7cmV0dXJuIiMiK2cuYXR0cigicG9wdXBtZW51Iil9O3ZhciBjPTNE W107JChlKS5maW5kKGQpLmVhY2goZnU9Cm5jdGlvbigpe3ZhciBnPTNEJCh0aGlzKSxoPTNEJChl KS5maW5kKGYoZyxlKSk7Yy5wdXNoKGEuZnJvbURvbShoLGcpKTtoLmFkZD0KQ2xhc3MoInBvcHVw Iil9KTtyZXR1cm4gY307cmV0dXJuIGF9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitk ZWZpbmUoW10sZnVuY3Rpb24oKXt2YXIgYT0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFs aXplOmZ1bmN0aW9uKGQsYz0KKXt0aGlzLiRidXR0b249M0RkO2lmKCF0aGlzLiRidXR0b24uc2l6 ZSgpKXt0aGlzLiRidXR0b249M0QkKCI8ZGl2Lz4iKX10aGlzPQoub3B0aW9ucz0zRGN8fFtdO3Zh ciBlPTNEdGhpczt0aGlzLiRidXR0b24uY2xpY2soZnVuY3Rpb24oZil7JCgiLnBvcG1lbnUtd3I9 CmFwcGVyIikucmVtb3ZlKCk7ZS5fcmVuZGVyQW5kU2hvdyhmKTtyZXR1cm4gZmFsc2V9KX0sX3Jl bmRlckFuZFNob3c6ZnVuY3Rpbz0KbihjKXt0aGlzLnJlbmRlcigpO3RoaXMuJGVsLmFwcGVuZFRv KCJib2R5IikuY3NzKHRoaXMuX2dldFNob3duUG9zaXRpb24oYykpPQouc2hvdygpO3RoaXMuX3Nl dFVwQ2xvc2VCZWhhdmlvcigpfSxyZW5kZXI6ZnVuY3Rpb24oKXt0aGlzLiRlbC5hZGRDbGFzcygi cG89CnBtZW51LXdyYXBwZXIiKS5oaWRlKCkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUifSkuaHRt bCh0aGlzLnRlbXBsYXRlKHRoaXMuJD0KYnV0dG9uLmF0dHIoImlkIiksdGhpcy5vcHRpb25zKSk7 aWYodGhpcy5vcHRpb25zLmxlbmd0aCl7dmFyIGM9M0R0aGlzO3RoaXMuPQokZWwuZmluZCgibGki KS5lYWNoKGZ1bmN0aW9uKGUsZCl7dmFyIGY9M0RjLm9wdGlvbnNbZV07aWYoZi5mdW5jKXskKHRo aXMpLmM9CmhpbGRyZW4oImEucG9wdXBtZW51LW9wdGlvbiIpLmNsaWNrKGZ1bmN0aW9uKGcpe2Yu ZnVuYy5jYWxsKGMsZyxmKTtnLnByZXZlbj0KdERlZmF1bHQoKX0pfX0pfXJldHVybiB0aGlzfSx0 ZW1wbGF0ZTpmdW5jdGlvbihkLGMpe3JldHVyblsnPHVsIGlkPTNEIicsZCwnPQotbWVudSIgY2xh c3M9M0QiZHJvcGRvd24tbWVudSI+Jyx0aGlzLl90ZW1wbGF0ZU9wdGlvbnMoYyksIjwvdWw+Il0u am9pbigiIik9Cn0sX3RlbXBsYXRlT3B0aW9uczpmdW5jdGlvbihjKXtpZighYy5sZW5ndGgpe3Jl dHVybiI8bGk+KG5vIG9wdGlvbnMpPC9saT4ifT0KcmV0dXJuIF8ubWFwKGMsZnVuY3Rpb24oZil7 aWYoZi5kaXZpZGVyKXtyZXR1cm4nPGxpIGNsYXNzPTNEImRpdmlkZXIiPjwvbGk+PQonfWVsc2V7 aWYoZi5oZWFkZXIpe3JldHVyblsnPGxpIGNsYXNzPTNEImhlYWQiPjxhIGhyZWY9M0QiamF2YXNj cmlwdDp2b2lkKDA9Cik7Ij4nLGYuaHRtbCwiPC9hPjwvbGk+Il0uam9pbigiIil9fXZhciBlPTNE Zi5ocmVmfHwiamF2YXNjcmlwdDp2b2lkKDApOyIsZz0KPTNEKGYudGFyZ2V0KT8oJyB0YXJnZXQ9 M0QiJytmLnRhcmdldCsnIicpOigiIiksZD0zRChmLmNoZWNrZWQpPygnPHNwYW4gY2xhPQpzcz0z RCJmYSBmYS1jaGVjayI+PC9zcGFuPicpOigiIik7cmV0dXJuWyc8bGk+PGEgY2xhc3M9M0QicG9w dXBtZW51LW9wdGlvbiI9CiBocmVmPTNEIicsZSwnIicsZywiPiIsZCxmLmh0bWwsIjwvYT48L2xp PiJdLmpvaW4oIiIpfSkuam9pbigiIil9LF9nZXRTaG93bj0KUG9zaXRpb246ZnVuY3Rpb24oZCl7 dmFyIGU9M0R0aGlzLiRlbC53aWR0aCgpO3ZhciBjPTNEZC5wYWdlWC1lLzI7Yz0zRE1hdGguPQpt aW4oYywkKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkrJCh3aW5kb3cpLndpZHRoKCktZS01KTtjPTNE TWF0aC5tYXgoYywkKGRvY3U9Cm1lbnQpLnNjcm9sbExlZnQoKSs1KTtyZXR1cm57dG9wOmQucGFn ZVksbGVmdDpjfX0sX3NldFVwQ2xvc2VCZWhhdmlvcjpmdW5jdD0KaW9uKCl7dmFyIGU9M0R0aGlz O2Z1bmN0aW9uIGMoZyl7JChkb2N1bWVudCkub2ZmKCJjbGljay5jbG9zZV9wb3B1cCIpO2lmKHdp PQpuZG93LnBhcmVudCE9M0Q9M0R3aW5kb3cpe3RyeXskKHdpbmRvdy5wYXJlbnQuZG9jdW1lbnQp Lm9mZigiY2xpY2suY2xvc2VfcG89CnB1cCIpfWNhdGNoKGYpe319ZWxzZXt0cnl7JCgiaWZyYW1l I2dhbGF4eV9tYWluIikuY29udGVudHMoKS5vZmYoImNsaWNrLmNsbz0Kc2VfcG9wdXAiKX1jYXRj aChmKXt9fWUucmVtb3ZlKCl9JCgiaHRtbCIpLm9uZSgiY2xpY2suY2xvc2VfcG9wdXAiLGMpO2lm KHdpPQpuZG93LnBhcmVudCE9M0Q9M0R3aW5kb3cpe3RyeXskKHdpbmRvdy5wYXJlbnQuZG9jdW1l bnQpLmZpbmQoImh0bWwiKS5vbmUoImM9CmxpY2suY2xvc2VfcG9wdXAiLGMpfWNhdGNoKGQpe319 ZWxzZXt0cnl7JCgiaWZyYW1lI2dhbGF4eV9tYWluIikuY29udGVudHMoKT0KLm9uZSgiY2xpY2su Y2xvc2VfcG9wdXAiLGMpfWNhdGNoKGQpe319fSxhZGRJdGVtOmZ1bmN0aW9uKGQsYyl7Yz0zRChj Pj0zRDApPQo/Yzp0aGlzLm9wdGlvbnMubGVuZ3RoO3RoaXMub3B0aW9ucy5zcGxpY2UoYywwLGQp O3JldHVybiB0aGlzfSxyZW1vdmVJdGVtOmY9CnVuY3Rpb24oYyl7aWYoYz49M0QwKXt0aGlzLm9w dGlvbnMuc3BsaWNlKGMsMSl9cmV0dXJuIHRoaXN9LGZpbmRJbmRleEJ5SHRtbD0KOmZ1bmN0aW9u KGQpe2Zvcih2YXIgYz0zRDA7Yzx0aGlzLm9wdGlvbnMubGVuZ3RoO2MrKyl7aWYoXy5oYXModGhp cy5vcHRpb25zPQpbY10sImh0bWwiKSYmKHRoaXMub3B0aW9uc1tjXS5odG1sPTNEPTNEPTNEZCkp e3JldHVybiBjfX1yZXR1cm4gbnVsbH0sZmluZEk9CnRlbUJ5SHRtbDpmdW5jdGlvbihjKXtyZXR1 cm4gdGhpcy5vcHRpb25zWyh0aGlzLmZpbmRJbmRleEJ5SHRtbChjKSldfSx0b1N0cj0KaW5nOmZ1 bmN0aW9uKCl7cmV0dXJuIlBvcHVwTWVudSJ9fSk7YS5jcmVhdGU9M0RmdW5jdGlvbiBiKGQsYyl7 cmV0dXJuIG5ldyBhPQooZCxjKX07YS5tYWtlX3BvcHVwbWVudT0zRGZ1bmN0aW9uKGQsZSl7dmFy IGM9M0RbXTtfLmVhY2goZSxmdW5jdGlvbihoLGYpe3Y9CmFyIGc9M0R7aHRtbDpmfTtpZihoPTNE PTNEPTNEbnVsbCl7Zy5oZWFkZXI9M0R0cnVlfWVsc2V7aWYoalF1ZXJ5LnR5cGUoaCk9Cj0zRD0z RD0zRCJmdW5jdGlvbiIpe2cuZnVuYz0zRGh9fWMucHVzaChnKX0pO3JldHVybiBuZXcgYSgkKGQp LGMpfTthLmNvbnZlcj0KdExpbmtzVG9PcHRpb25zPTNEZnVuY3Rpb24oZSxjKXtlPTNEJChlKTtj PTNEY3x8ImEiO3ZhciBkPTNEW107ZS5maW5kKGMpLmVhPQpjaChmdW5jdGlvbihqLGcpe3ZhciBo PTNEe30sZj0zRCQoaik7aC5odG1sPTNEZi50ZXh0KCk7aWYoZi5hdHRyKCJocmVmIikpe3Y9CmFy IGw9M0RmLmF0dHIoImhyZWYiKSxtPTNEZi5hdHRyKCJ0YXJnZXQiKSxrPTNEZi5hdHRyKCJjb25m aXJtIik7aC5mdW5jPTNEZj0KdW5jdGlvbigpe2lmKChrKSYmKCFjb25maXJtKGspKSl7cmV0dXJu fXN3aXRjaChtKXtjYXNlIl9wYXJlbnQiOndpbmRvdy5wYXJlPQpudC5sb2NhdGlvbj0zRGw7YnJl YWs7Y2FzZSJfdG9wIjp3aW5kb3cudG9wLmxvY2F0aW9uPTNEbDticmVhaztkZWZhdWx0OndpbmQ9 Cm93LmxvY2F0aW9uPTNEbH19fWQucHVzaChoKX0pO3JldHVybiBkfTthLmZyb21FeGlzdGluZ0Rv bT0zRGZ1bmN0aW9uKGYsZSxjKT0Ke2Y9M0QkKGYpO2U9M0QkKGUpO3ZhciBkPTNEYS5jb252ZXJ0 TGlua3NUb09wdGlvbnMoZSxjKTtlLnJlbW92ZSgpO3JldHVybiBuPQpldyBhKGYsZCl9O2EubWFr ZV9wb3B1cF9tZW51cz0zRGZ1bmN0aW9uKGUsZCxmKXtlPTNEZXx8ZG9jdW1lbnQ7ZD0zRGR8fCJk aXY9Cltwb3B1cG1lbnVdIjtmPTNEZnx8ZnVuY3Rpb24oZyxoKXtyZXR1cm4iIyIrZy5hdHRyKCJw b3B1cG1lbnUiKX07dmFyIGM9M0RbXT0KOyQoZSkuZmluZChkKS5lYWNoKGZ1bmN0aW9uKCl7dmFy IGc9M0QkKHRoaXMpLGg9M0QkKGUpLmZpbmQoZihnLGUpKTtjLnB1c2goPQphLmZyb21Eb20oaCxn KSk7aC5hZGRDbGFzcygicG9wdXAiKX0pO3JldHVybiBjfTtyZXR1cm4gYX0pOwpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1j ZW50cmFsL2NvbW1pdHMvOTM4MDFkNmZhN2JkLwpDaGFuZ2VzZXQ6ICAgOTM4MDFkNmZhN2JkCkJy YW5jaDogICAgICByZWxlYXNlXzE1LjAzClVzZXI6ICAgICAgICBkYW5ub24KRGF0ZTogICAgICAg IDIwMTUtMDItMjMgMjE6Mjg6MDErMDA6MDAKU3VtbWFyeTogICAgIFZlcmlmeSBhbmQgYXBwbHkg QGptY2hpbHRvbidzIGZpeCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qbWNoPQppbHRvbi9nYWxh eHktY2VudHJhbC9jb21taXQvMzA2YTg2NTU4YTdlZTdiZTFiYzJkNjhjZDkzOWIxNmI1ZjE4NjNk NCB0byBuZXg9CnQtc3RhYmxlLiAgU2hvdWxkIGJlIHJlZmFjdG9yZWQgaW50byB1c2luZyB0aGUg c2FtZSBnYWxheHkubWVudS5qcyBvYmplY3RzID0KLS0gSSdtIGFzc3VtaW5nIHRoYXQncyB3aHkg dGhpbmdzIGxpa2UgUG9wdXBNZW51LmZyb21FeGlzdGluZ0RvbSBleGlzdCBhbmQgPQphcmUgb3Ro ZXJ3aXNlIHVudXNlZC4KQWZmZWN0ZWQgIzogIDMgZmlsZXMKCmRpZmYgLXIgY2IyMDA1MDRiZmUy ZjQ3NTViN2FhNjlhYjRiZWZkMTMxYmZjZDU1MSAtciA5MzgwMWQ2ZmE3YmQzMmE4MWRlMzk3MT0K Mzc5NTMzMTJjY2E3YTQzYTEgY2xpZW50L2dhbGF4eS9zY3JpcHRzL2dhbGF4eS5iYXNlLmpzCi0t LSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9nYWxheHkuYmFzZS5qcworKysgYi9jbGllbnQvZ2Fs YXh5L3NjcmlwdHMvZ2FsYXh5LmJhc2UuanMKQEAgLTE3MSw3ICsxNzEsNyBAQAogICAgICAgICAg ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBvcHRpb25zWyBsaW5rLnRleHQoKSBdID0zRCB7 CiAgICAgICAgICAgICAgICAgICAgIHVybDogaHJlZiwKLSAgICAgICAgICAgICAgICAgICAgYWN0 aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbigg ZXZlbnQgKSB7Cj0yMAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmVzIGNvbmZp cm0gdGV4dCwgc2VuZCB0aGUgZGlhbG9nCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICFj b25maXJtdGV4dCB8fCBjb25maXJtKCBjb25maXJtdGV4dCApICkgewpAQCAtMTg1LDcgKzE4NSwx MCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAg ICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfTsKICAg ICAgICAgICAgIH0KCmRpZmYgLXIgY2IyMDA1MDRiZmUyZjQ3NTViN2FhNjlhYjRiZWZkMTMxYmZj ZDU1MSAtciA5MzgwMWQ2ZmE3YmQzMmE4MWRlMzk3MT0KMzc5NTMzMTJjY2E3YTQzYTEgc3RhdGlj L3NjcmlwdHMvZ2FsYXh5LmJhc2UuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvZ2FsYXh5LmJhc2Uu anMKKysrIGIvc3RhdGljL3NjcmlwdHMvZ2FsYXh5LmJhc2UuanMKQEAgLTE3MSw3ICsxNzEsNyBA QAogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBvcHRpb25zWyBsaW5rLnRl eHQoKSBdID0zRCB7CiAgICAgICAgICAgICAgICAgICAgIHVybDogaHJlZiwKLSAgICAgICAgICAg ICAgICAgICAgYWN0aW9uOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9u OiBmdW5jdGlvbiggZXZlbnQgKSB7Cj0yMAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYg dGhlcmVzIGNvbmZpcm0gdGV4dCwgc2VuZCB0aGUgZGlhbG9nCiAgICAgICAgICAgICAgICAgICAg ICAgICBpZiAoICFjb25maXJtdGV4dCB8fCBjb25maXJtKCBjb25maXJtdGV4dCApICkgewpAQCAt MTg1LDcgKzE4NSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAg ICAgICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg ICAgICAgfTsKICAgICAgICAgICAgIH0KCmRpZmYgLXIgY2IyMDA1MDRiZmUyZjQ3NTViN2FhNjlh YjRiZWZkMTMxYmZjZDU1MSAtciA5MzgwMWQ2ZmE3YmQzMmE4MWRlMzk3MT0KMzc5NTMzMTJjY2E3 YTQzYTEgc3RhdGljL3NjcmlwdHMvcGFja2VkL2dhbGF4eS5iYXNlLmpzCi0tLSBhL3N0YXRpYy9z Y3JpcHRzL3BhY2tlZC9nYWxheHkuYmFzZS5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9wYWNrZWQv Z2FsYXh5LmJhc2UuanMKQEAgLTEsMSArMSwxIEBACi0oZnVuY3Rpb24oKXt2YXIgYj0zRDA7dmFy IGM9M0RbIm1zIiwibW96Iiwid2Via2l0IiwibyJdO2Zvcih2YXIgYT0zRDA7YTxjLj0KbGVuZ3Ro JiYhd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTsrK2Epe3dpbmRvdy5yZXF1ZXN0QW5pbWF0 aW9uRnJhbWU9M0R3PQppbmRvd1tjW2FdKyJSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXTt3aW5kb3cu Y2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lPTNEd2k9Cm5kb3dbY1thXSsiQ2FuY2VsUmVxdWVz dEFuaW1hdGlvbkZyYW1lIl19aWYoIXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpez0Kd2lu ZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT0zRGZ1bmN0aW9uKGgsZSl7dmFyIGQ9M0RuZXcgRGF0 ZSgpLmdldFRpbWUoKTt2PQphciBmPTNETWF0aC5tYXgoMCwxNi0oZC1iKSk7dmFyIGc9M0R3aW5k b3cuc2V0VGltZW91dChmdW5jdGlvbigpe2goZCtmKX0sZik9CjtiPTNEZCtmO3JldHVybiBnfX1p Zighd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRj0K cmFtZT0zRGZ1bmN0aW9uKGQpe2NsZWFyVGltZW91dChkKX19fSgpKTtpZighQXJyYXkuaW5kZXhP Zil7QXJyYXkucHJvdG90eXBlPQouaW5kZXhPZj0zRGZ1bmN0aW9uKGMpe2Zvcih2YXIgYj0zRDAs YT0zRHRoaXMubGVuZ3RoO2I8YTtiKyspe2lmKHRoaXNbYl09M0Q9Cj0zRGMpe3JldHVybiBifX1y ZXR1cm4gLTF9fWZ1bmN0aW9uIG9ial9sZW5ndGgoYyl7aWYoYy5sZW5ndGghPTNEPTNEdW5kZWZp bj0KZWQpe3JldHVybiBjLmxlbmd0aH12YXIgYj0zRDA7Zm9yKHZhciBhIGluIGMpe2IrK31yZXR1 cm4gYn0kLmZuLm1ha2VBYnNvbHV0PQplPTNEZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChm dW5jdGlvbigpe3ZhciBiPTNEJCh0aGlzKTt2YXIgYz0zRGIucG9zaXQ9CmlvbigpO2IuY3NzKHtw b3NpdGlvbjoiYWJzb2x1dGUiLG1hcmdpbkxlZnQ6MCxtYXJnaW5Ub3A6MCx0b3A6Yy50b3AsbGVm dDpjLj0KbGVmdCxyaWdodDokKHdpbmRvdykud2lkdGgoKS0oYy5sZWZ0K2Iud2lkdGgoKSl9KTtp ZihhKXtiLnJlbW92ZSgpLmFwcGVuZFRvPQooImJvZHkiKX19KX07ZnVuY3Rpb24gbWFrZV9wb3B1 cG1lbnUoYixjKXt2YXIgYT0zRChiLmRhdGEoIm1lbnVfb3B0aW9ucyIpKTs9CmIuZGF0YSgibWVu dV9vcHRpb25zIixjKTtpZihhKXtyZXR1cm59Yi5iaW5kKCJjbGljay5zaG93X3BvcHVwIixmdW5j dGlvbihkKT0KeyQoIi5wb3BtZW51LXdyYXBwZXIiKS5yZW1vdmUoKTtzZXRUaW1lb3V0KGZ1bmN0 aW9uKCl7dmFyIGc9M0QkKCI8dWwgY2xhc3M9Cj0zRCdkcm9wZG93bi1tZW51JyBpZD0zRCciK2Iu YXR0cigiaWQiKSsiLW1lbnUnPjwvdWw+Iik7dmFyIGY9M0RiLmRhdGEoIm1lbj0KdV9vcHRpb25z Iik7aWYob2JqX2xlbmd0aChmKTw9M0QwKXskKCI8bGk+Tm8gT3B0aW9ucy48L2xpPiIpLmFwcGVu ZFRvKGcpfSQuPQplYWNoKGYsZnVuY3Rpb24oaixpKXtpZihpKXt2YXIgbD0zRGkuYWN0aW9ufHxp O2cuYXBwZW5kKCQoIjxsaT48L2xpPiIpLmFwcGU9Cm5kKCQoIjxhPiIpLmF0dHIoImhyZWYiLGku dXJsKS5odG1sKGopLmNsaWNrKGwpKSl9ZWxzZXtnLmFwcGVuZCgkKCI8bGk+PC9saT0KPiIpLmFk ZENsYXNzKCJoZWFkIikuYXBwZW5kKCQoIjxhIGhyZWY9M0QnIyc+PC9hPiIpLmh0bWwoaikpKX19 KTt2YXIgaD0zRCQoPQoiPGRpdiBjbGFzcz0zRCdwb3BtZW51LXdyYXBwZXInIHN0eWxlPTNEJ3Bv c2l0aW9uOiBhYnNvbHV0ZTtsZWZ0OiAwOyB0b3A6IC09CjEwMDA7Jz48L2Rpdj4iKS5hcHBlbmQo ZykuYXBwZW5kVG8oImJvZHkiKTt2YXIgZT0zRGQucGFnZVgtaC53aWR0aCgpLzI7ZT0zRD0KTWF0 aC5taW4oZSwkKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkrJCh3aW5kb3cpLndpZHRoKCktJChoKS53 aWR0aCgpLTUpO2U9M0RNPQphdGgubWF4KGUsJChkb2N1bWVudCkuc2Nyb2xsTGVmdCgpKzUpO2gu Y3NzKHt0b3A6ZC5wYWdlWSxsZWZ0OmV9KX0sMTApO3NldFQ9CmltZW91dChmdW5jdGlvbigpe3Zh ciBmPTNEZnVuY3Rpb24oaCl7JChoKS5iaW5kKCJjbGljay5jbG9zZV9wb3B1cCIsZnVuY3Rpbz0K bigpeyQoIi5wb3BtZW51LXdyYXBwZXIiKS5yZW1vdmUoKTtoLnVuYmluZCgiY2xpY2suY2xvc2Vf cG9wdXAiKX0pfTtmKCQod2luPQpkb3cuZG9jdW1lbnQpKTtmKCQod2luZG93LnRvcC5kb2N1bWVu dCkpO2Zvcih2YXIgZT0zRHdpbmRvdy50b3AuZnJhbWVzLmxlbmc9CnRoO2UtLTspe3ZhciBnPTNE JCh3aW5kb3cudG9wLmZyYW1lc1tlXS5kb2N1bWVudCk7ZihnKX19LDUwKTtyZXR1cm4gZmFsc2V9 KT0KfWZ1bmN0aW9uIG1ha2VfcG9wdXBfbWVudXMoYSl7YT0zRGF8fGRvY3VtZW50OyQoYSkuZmlu ZCgiZGl2W3BvcHVwbWVudV0iKS5lPQphY2goZnVuY3Rpb24oKXt2YXIgYj0zRHt9O3ZhciBkPTNE JCh0aGlzKTtkLmZpbmQoImEiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGc9Cj0zRCQodGhpcyksaT0z RGcuZ2V0KDApLGU9M0RpLmdldEF0dHJpYnV0ZSgiY29uZmlybSIpLGY9M0RpLmdldEF0dHJpYnV0 ZSgiaD0KcmVmIiksaD0zRGkuZ2V0QXR0cmlidXRlKCJ0YXJnZXQiKTtpZighZil7YltnLnRleHQo KV09M0RudWxsfWVsc2V7YltnLnRleHQoPQopXT0zRHt1cmw6ZixhY3Rpb246ZnVuY3Rpb24oKXtp ZighZXx8Y29uZmlybShlKSl7aWYoaCl7d2luZG93Lm9wZW4oZixoKTtyZXQ9CnVybiBmYWxzZX1l bHNle2cuY2xpY2soKX19fX19fSk7dmFyIGM9M0QkKGEpLmZpbmQoIiMiK2QuYXR0cigicG9wdXBt ZW51IikpOz0KYy5maW5kKCJhIikuYmluZCgiY2xpY2siLGZ1bmN0aW9uKGYpe2Yuc3RvcFByb3Bh Z2F0aW9uKCk7cmV0dXJuIHRydWV9KTttYWtlPQpfcG9wdXBtZW51KGMsYik7Yy5hZGRDbGFzcygi cG9wdXAiKTtkLnJlbW92ZSgpfSl9JC5mbi5yZWZyZXNoX3NlbGVjdDI9M0RmdW49CmN0aW9uKCl7 dmFyIGI9M0QkKHRoaXMpO3ZhciBhPTNEe3BsYWNlaG9sZGVyOiJDbGljayB0byBzZWxlY3QiLGNs b3NlT25TZWxlYz0KdDohYi5pcygiW01VTFRJUExFXSIpLGRyb3Bkb3duQXV0b1dpZHRoOnRydWUs Y29udGFpbmVyQ3NzQ2xhc3M6InNlbGVjdDItbWluPQp3aWR0aCJ9O3JldHVybiBiLnNlbGVjdDIo YSl9O2Z1bmN0aW9uIHJlcGxhY2VfYmlnX3NlbGVjdF9pbnB1dHMoYSxjLGIpe2lmKCE9CmpRdWVy eS5mbi5zZWxlY3QyKXtyZXR1cm59aWYoYT0zRD0zRD0zRHVuZGVmaW5lZCl7YT0zRDIwfWlmKGM9 M0Q9M0Q9M0R1bmRlZj0KaW5lZCl7Yz0zRDMwMDB9Yj0zRGJ8fCQoInNlbGVjdCIpO2IuZWFjaChm dW5jdGlvbigpe3ZhciBlPTNEJCh0aGlzKS5ub3QoIlttPQp1bHRpcGxlXSIpO3ZhciBkPTNEZS5m aW5kKCJvcHRpb24iKS5sZW5ndGg7aWYoKGQ8YSl8fChkPmMpKXtyZXR1cm59aWYoZS5oYXM9CkNs YXNzKCJuby1hdXRvY29tcGxldGUiKSl7cmV0dXJufWUucmVmcmVzaF9zZWxlY3QyKCl9KX0kLmZu Lm1ha2VfdGV4dF9lZGl0YT0KYmxlPTNEZnVuY3Rpb24oZyl7dmFyIGQ9M0QoIm51bV9jb2xzIiBp biBnP2cubnVtX2NvbHM6MzApLGM9M0QoIm51bV9yb3dzIiBpPQpuIGc/Zy5udW1fcm93czo0KSxl PTNEKCJ1c2VfdGV4dGFyZWEiIGluIGc/Zy51c2VfdGV4dGFyZWE6ZmFsc2UpLGI9M0QoIm9uX2Y9 CmluaXNoIiBpbiBnP2cub25fZmluaXNoOm51bGwpLGY9M0QoImhlbHBfdGV4dCIgaW4gZz9nLmhl bHBfdGV4dDpudWxsKTt2YXIgYT0KPTNEJCh0aGlzKTthLmFkZENsYXNzKCJlZGl0YWJsZS10ZXh0 IikuY2xpY2soZnVuY3Rpb24obCl7aWYoJCh0aGlzKS5jaGlsZHJlPQpuKCI6aW5wdXQiKS5sZW5n dGg+MCl7cmV0dXJufWEucmVtb3ZlQ2xhc3MoImVkaXRhYmxlLXRleHQiKTt2YXIgaT0zRGZ1bmN0 aW89Cm4obSl7YS5maW5kKCI6aW5wdXQiKS5yZW1vdmUoKTtpZihtIT0zRD0zRCIiKXthLnRleHQo bSl9ZWxzZXthLmh0bWwoIjxicj4iKT0KfWEuYWRkQ2xhc3MoImVkaXRhYmxlLXRleHQiKTtpZihi KXtiKG0pfX07dmFyIGg9M0QoImN1cl90ZXh0IiBpbiBnP2cuY3VyX3RlPQp4dDphLnRleHQoKSks ayxqO2lmKGUpe2s9M0QkKCI8dGV4dGFyZWEvPiIpLmF0dHIoe3Jvd3M6Yyxjb2xzOmR9KS50ZXh0 KCQudHI9CmltKGgpKS5rZXl1cChmdW5jdGlvbihtKXtpZihtLmtleUNvZGU9M0Q9M0Q9M0QyNyl7 aShoKX19KTtqPTNEJCgiPGJ1dHRvbi8+Ij0KKS50ZXh0KCJEb25lIikuY2xpY2soZnVuY3Rpb24o KXtpKGsudmFsKCkpO3JldHVybiBmYWxzZX0pfWVsc2V7az0zRCQoIjxpbnB1PQp0IHR5cGU9M0Qn dGV4dCcvPiIpLmF0dHIoe3ZhbHVlOiQudHJpbShoKSxzaXplOmR9KS5ibHVyKGZ1bmN0aW9uKCl7 aShoKX0pLms9CmV5dXAoZnVuY3Rpb24obSl7aWYobS5rZXlDb2RlPTNEPTNEPTNEMjcpeyQodGhp cykudHJpZ2dlcigiYmx1ciIpfWVsc2V7aWYobT0KLmtleUNvZGU9M0Q9M0Q9M0QxMyl7aSgkKHRo aXMpLnZhbCgpKX19bS5zdG9wUHJvcGFnYXRpb24oKX0pfWEudGV4dCgiIik7YS5hPQpwcGVuZChr KTtpZihqKXthLmFwcGVuZChqKX1rLmZvY3VzKCk7ay5zZWxlY3QoKTtsLnN0b3BQcm9wYWdhdGlv bigpfSk7aWYoZik9CnthLmF0dHIoInRpdGxlIixmKS50b29sdGlwKCl9cmV0dXJuIGF9O2Z1bmN0 aW9uIGFzeW5jX3NhdmVfdGV4dChkLGYsZSxhLGMsaD0KLGksZyxiKXtpZihjPTNEPTNEPTNEdW5k ZWZpbmVkKXtjPTNEMzB9aWYoaT0zRD0zRD0zRHVuZGVmaW5lZCl7aT0zRDR9JCgiIyIrPQpkKS5j bGljayhmdW5jdGlvbigpe2lmKCQoIiNyZW5hbWluZy1hY3RpdmUiKS5sZW5ndGg+MCl7cmV0dXJu fXZhciBsPTNEJCgiIyI9CitmKSxrPTNEbC50ZXh0KCksajtpZihoKXtqPTNEJCgiPHRleHRhcmVh PjwvdGV4dGFyZWE+IikuYXR0cih7cm93czppLGNvbHM6Yz0KfSkudGV4dCgkLnRyaW0oaykpfWVs c2V7aj0zRCQoIjxpbnB1dCB0eXBlPTNEJ3RleHQnPjwvaW5wdXQ+IikuYXR0cih7dmFsdWU6PQok LnRyaW0oayksc2l6ZTpjfSl9ai5hdHRyKCJpZCIsInJlbmFtaW5nLWFjdGl2ZSIpO2ouYmx1cihm dW5jdGlvbigpeyQodGhpcyk9Ci5yZW1vdmUoKTtsLnNob3coKTtpZihiKXtiKGopfX0pO2oua2V5 dXAoZnVuY3Rpb24obil7aWYobi5rZXlDb2RlPTNEPTNEPTNEMj0KNyl7JCh0aGlzKS50cmlnZ2Vy KCJibHVyIil9ZWxzZXtpZihuLmtleUNvZGU9M0Q9M0Q9M0QxMyl7dmFyIG09M0R7fTttW2FdPTNE PQokKHRoaXMpLnZhbCgpOyQodGhpcykudHJpZ2dlcigiYmx1ciIpOyQuYWpheCh7dXJsOmUsZGF0 YTptLGVycm9yOmZ1bmN0aW9uKCk9CnthbGVydCgiVGV4dCBlZGl0aW5nIGZvciBlbHQgIitmKyIg ZmFpbGVkIil9LHN1Y2Nlc3M6ZnVuY3Rpb24obyl7aWYobyE9M0Q9Cj0zRCIiKXtsLnRleHQobyl9 ZWxzZXtsLmh0bWwoIjxlbT5Ob25lPC9lbT4iKX1pZihiKXtiKGopfX19KX19fSk7aWYoZyl7Zyhq KT0KfWwuaGlkZSgpO2ouaW5zZXJ0QWZ0ZXIobCk7ai5mb2N1cygpO2ouc2VsZWN0KCk7cmV0dXJu fSl9ZnVuY3Rpb24gY29tbWF0aXplPQooYil7Yis9M0QiIjt2YXIgYT0zRC8oXGQrKShcZHszfSkv O3doaWxlKGEudGVzdChiKSl7Yj0zRGIucmVwbGFjZShhLCIkMSwkMiI9Cil9cmV0dXJuIGJ9ZnVu Y3Rpb24gcmVzZXRfdG9vbF9zZWFyY2goYSl7dmFyIGM9M0QkKCIjZ2FsYXh5X3Rvb2xzIikuY29u dGVudD0KcygpO2lmKGMubGVuZ3RoPTNEPTNEPTNEMCl7Yz0zRCQoZG9jdW1lbnQpfSQodGhpcyku cmVtb3ZlQ2xhc3MoInNlYXJjaF9hY3RpPQp2ZSIpO2MuZmluZCgiLnRvb2xUaXRsZSIpLnJlbW92 ZUNsYXNzKCJzZWFyY2hfbWF0Y2giKTtjLmZpbmQoIi50b29sU2VjdGlvbkI9Cm9keSIpLmhpZGUo KTtjLmZpbmQoIi50b29sVGl0bGUiKS5zaG93KCk7Yy5maW5kKCIudG9vbFBhbmVsTGFiZWwiKS5z aG93KCk7Yz0KLmZpbmQoIi50b29sU2VjdGlvbldyYXBwZXIiKS5lYWNoKGZ1bmN0aW9uKCl7aWYo JCh0aGlzKS5hdHRyKCJpZCIpIT0zRD0zRCJyPQplY2VudGx5X3VzZWRfd3JhcHBlciIpeyQodGhp cykuc2hvdygpfWVsc2V7aWYoJCh0aGlzKS5oYXNDbGFzcygidXNlcl9wcmVmX3Y9CmlzaWJsZSIp KXskKHRoaXMpLnNob3coKX19fSk7Yy5maW5kKCIjc2VhcmNoLW5vLXJlc3VsdHMiKS5oaWRlKCk7 Yy5maW5kKCIjcz0KZWFyY2gtc3Bpbm5lciIpLmhpZGUoKTtpZihhKXt2YXIgYj0zRGMuZmluZCgi I3Rvb2wtc2VhcmNoLXF1ZXJ5Iik7Yi52YWwoInNlPQphcmNoIHRvb2xzIil9fXZhciBHYWxheHlB c3luYz0zRGZ1bmN0aW9uKGEpe3RoaXMudXJsX2RpY3Q9M0R7fTt0aGlzLmxvZ19hY3Q9Cmlvbj0z RChhPTNEPTNEPTNEdW5kZWZpbmVkP2ZhbHNlOmEpfTtHYWxheHlBc3luYy5wcm90b3R5cGUuc2V0 X2Z1bmNfdXJsPTNEZj0KdW5jdGlvbihhLGIpe3RoaXMudXJsX2RpY3RbYV09M0RifTtHYWxheHlB c3luYy5wcm90b3R5cGUuc2V0X3VzZXJfcHJlZj0zRGZ1PQpuY3Rpb24oYSxiKXt2YXIgYz0zRHRo aXMudXJsX2RpY3RbYXJndW1lbnRzLmNhbGxlZV07aWYoYz0zRD0zRD0zRHVuZGVmaW5lZCk9Cnty ZXR1cm4gZmFsc2V9JC5hamF4KHt1cmw6YyxkYXRhOntwcmVmX25hbWU6YSxwcmVmX3ZhbHVlOmJ9 LGVycm9yOmZ1bmN0aW9uKD0KKXtyZXR1cm4gZmFsc2V9LHN1Y2Nlc3M6ZnVuY3Rpb24oKXtyZXR1 cm4gdHJ1ZX19KX07R2FsYXh5QXN5bmMucHJvdG90eXBlLmxvPQpnX3VzZXJfYWN0aW9uPTNEZnVu Y3Rpb24oYyxiLGQpe2lmKCF0aGlzLmxvZ19hY3Rpb24pe3JldHVybn12YXIgYT0zRHRoaXMudXI9 CmxfZGljdFthcmd1bWVudHMuY2FsbGVlXTtpZihhPTNEPTNEPTNEdW5kZWZpbmVkKXtyZXR1cm4g ZmFsc2V9JC5hamF4KHt1cmw6YT0KLGRhdGE6e2FjdGlvbjpjLGNvbnRleHQ6YixwYXJhbXM6ZH0s ZXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9LHN1Y2Nlc3M6PQpmdW5jdGlvbigpe3JldHVy biB0cnVlfX0pfTtmdW5jdGlvbiBpbml0X3JlZnJlc2hfb25fY2hhbmdlKCl7JCgic2VsZWN0W3Jl ZnI9CmVzaF9vbl9jaGFuZ2U9M0QndHJ1ZSddIikub2ZmKCJjaGFuZ2UiKS5jaGFuZ2UoZnVuY3Rp b24oKXt2YXIgYT0zRCQodGhpcyksZT0KPTNEYS52YWwoKSxkPTNEZmFsc2UsYz0zRGEuYXR0cigi cmVmcmVzaF9vbl9jaGFuZ2VfdmFsdWVzIik7aWYoYyl7Yz0zRGMuc3BsPQppdCgiLCIpO3ZhciBi PTNEYS5hdHRyKCJsYXN0X3NlbGVjdGVkX3ZhbHVlIik7aWYoJC5pbkFycmF5KGUsYyk9M0Q9M0Q9 M0QtMSY9CiYkLmluQXJyYXkoYixjKT0zRD0zRD0zRC0xKXtyZXR1cm59fSQod2luZG93KS50cmln Z2VyKCJyZWZyZXNoX29uX2NoYW5nZSIpOz0KJChkb2N1bWVudCkudHJpZ2dlcigiY29udmVydF90 b192YWx1ZXMiKTthLmdldCgwKS5mb3JtLnN1Ym1pdCgpfSk7JCgiOmNoZWNrPQpib3hbcmVmcmVz aF9vbl9jaGFuZ2U9M0QndHJ1ZSddIikub2ZmKCJjbGljayIpLmNsaWNrKGZ1bmN0aW9uKCl7dmFy IGE9M0QkKHQ9CmhpcyksZT0zRGEudmFsKCksZD0zRGZhbHNlLGM9M0RhLmF0dHIoInJlZnJlc2hf b25fY2hhbmdlX3ZhbHVlcyIpO2lmKGMpe2M9Cj0zRGMuc3BsaXQoIiwiKTt2YXIgYj0zRGEuYXR0 cigibGFzdF9zZWxlY3RlZF92YWx1ZSIpO2lmKCQuaW5BcnJheShlLGMpPTNEPQo9M0Q9M0QtMSYm JC5pbkFycmF5KGIsYyk9M0Q9M0Q9M0QtMSl7cmV0dXJufX0kKHdpbmRvdykudHJpZ2dlcigicmVm cmVzaF9vbl89CmNoYW5nZSIpO2EuZ2V0KDApLmZvcm0uc3VibWl0KCl9KTskKCJhW2NvbmZpcm1d Iikub2ZmKCJjbGljayIpLmNsaWNrKGZ1bmN0aT0Kb24oKXtyZXR1cm4gY29uZmlybSgkKHRoaXMp LmF0dHIoImNvbmZpcm0iKSl9KX1qUXVlcnkuZm4ucHJldmVudERvdWJsZVN1Ym1pPQpzc2lvbj0z RGZ1bmN0aW9uKCl7JCh0aGlzKS5vbigic3VibWl0IixmdW5jdGlvbihiKXt2YXIgYT0zRCQodGhp cyk7aWYoYS5kYXQ9CmEoInN1Ym1pdHRlZCIpPTNEPTNEPTNEdHJ1ZSl7Yi5wcmV2ZW50RGVmYXVs dCgpfWVsc2V7YS5kYXRhKCJzdWJtaXR0ZWQiLHRydT0KZSl9fSk7cmV0dXJuIHRoaXN9OyQoZG9j dW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7aW5pdF9yZWZyZXNoX29uX2NoYW5nZSgpO2lmPQooJC5m bi50b29sdGlwKXskKCIudW5pZmllZC1wYW5lbC1oZWFkZXIgW3RpdGxlXSIpLnRvb2x0aXAoe3Bs YWNlbWVudDoiYm90dG89Cm0ifSk7JCgiW3RpdGxlXSIpLnRvb2x0aXAoKX1tYWtlX3BvcHVwX21l bnVzKCk7cmVwbGFjZV9iaWdfc2VsZWN0X2lucHV0cygyMD0KLDE1MDApOyQoImEiKS5jbGljayhm dW5jdGlvbigpe3ZhciBiPTNEJCh0aGlzKTt2YXIgYz0zRChwYXJlbnQuZnJhbWVzJiZwYXJlPQpu dC5mcmFtZXMuZ2FsYXh5X21haW4pO2lmKChiLmF0dHIoInRhcmdldCIpPTNEPTNEImdhbGF4eV9t YWluIikmJighYykpe3ZhciA9CmE9M0RiLmF0dHIoImhyZWYiKTtpZihhLmluZGV4T2YoIj8iKT0z RD0zRC0xKXthKz0zRCI/In1lbHNle2ErPTNEIiYifWErPTNEIj0KdXNlX3BhbmVscz0zRFRydWUi O2IuYXR0cigiaHJlZiIsYSk7Yi5hdHRyKCJ0YXJnZXQiLCJfc2VsZiIpfXJldHVybiBifSl9KTsK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisoZnVuY3Rpb24oKXt2YXIgYj0zRDA7dmFyIGM9 M0RbIm1zIiwibW96Iiwid2Via2l0IiwibyJdO2Zvcih2YXIgYT0zRDA7YTxjLj0KbGVuZ3RoJiYh d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZTsrK2Epe3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9u RnJhbWU9M0R3PQppbmRvd1tjW2FdKyJSZXF1ZXN0QW5pbWF0aW9uRnJhbWUiXTt3aW5kb3cuY2Fu Y2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lPTNEd2k9Cm5kb3dbY1thXSsiQ2FuY2VsUmVxdWVzdEFu aW1hdGlvbkZyYW1lIl19aWYoIXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUpez0Kd2luZG93 LnJlcXVlc3RBbmltYXRpb25GcmFtZT0zRGZ1bmN0aW9uKGgsZSl7dmFyIGQ9M0RuZXcgRGF0ZSgp LmdldFRpbWUoKTt2PQphciBmPTNETWF0aC5tYXgoMCwxNi0oZC1iKSk7dmFyIGc9M0R3aW5kb3cu c2V0VGltZW91dChmdW5jdGlvbigpe2goZCtmKX0sZik9CjtiPTNEZCtmO3JldHVybiBnfX1pZigh d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lKXt3aW5kb3cuY2FuY2VsQW5pbWF0aW9uRj0KcmFt ZT0zRGZ1bmN0aW9uKGQpe2NsZWFyVGltZW91dChkKX19fSgpKTtpZighQXJyYXkuaW5kZXhPZil7 QXJyYXkucHJvdG90eXBlPQouaW5kZXhPZj0zRGZ1bmN0aW9uKGMpe2Zvcih2YXIgYj0zRDAsYT0z RHRoaXMubGVuZ3RoO2I8YTtiKyspe2lmKHRoaXNbYl09M0Q9Cj0zRGMpe3JldHVybiBifX1yZXR1 cm4gLTF9fWZ1bmN0aW9uIG9ial9sZW5ndGgoYyl7aWYoYy5sZW5ndGghPTNEPTNEdW5kZWZpbj0K ZWQpe3JldHVybiBjLmxlbmd0aH12YXIgYj0zRDA7Zm9yKHZhciBhIGluIGMpe2IrK31yZXR1cm4g Yn0kLmZuLm1ha2VBYnNvbHV0PQplPTNEZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5j dGlvbigpe3ZhciBiPTNEJCh0aGlzKTt2YXIgYz0zRGIucG9zaXQ9CmlvbigpO2IuY3NzKHtwb3Np dGlvbjoiYWJzb2x1dGUiLG1hcmdpbkxlZnQ6MCxtYXJnaW5Ub3A6MCx0b3A6Yy50b3AsbGVmdDpj Lj0KbGVmdCxyaWdodDokKHdpbmRvdykud2lkdGgoKS0oYy5sZWZ0K2Iud2lkdGgoKSl9KTtpZihh KXtiLnJlbW92ZSgpLmFwcGVuZFRvPQooImJvZHkiKX19KX07ZnVuY3Rpb24gbWFrZV9wb3B1cG1l bnUoYixjKXt2YXIgYT0zRChiLmRhdGEoIm1lbnVfb3B0aW9ucyIpKTs9CmIuZGF0YSgibWVudV9v cHRpb25zIixjKTtpZihhKXtyZXR1cm59Yi5iaW5kKCJjbGljay5zaG93X3BvcHVwIixmdW5jdGlv bihkKT0KeyQoIi5wb3BtZW51LXdyYXBwZXIiKS5yZW1vdmUoKTtzZXRUaW1lb3V0KGZ1bmN0aW9u KCl7dmFyIGc9M0QkKCI8dWwgY2xhc3M9Cj0zRCdkcm9wZG93bi1tZW51JyBpZD0zRCciK2IuYXR0 cigiaWQiKSsiLW1lbnUnPjwvdWw+Iik7dmFyIGY9M0RiLmRhdGEoIm1lbj0KdV9vcHRpb25zIik7 aWYob2JqX2xlbmd0aChmKTw9M0QwKXskKCI8bGk+Tm8gT3B0aW9ucy48L2xpPiIpLmFwcGVuZFRv KGcpfSQuPQplYWNoKGYsZnVuY3Rpb24oaixpKXtpZihpKXt2YXIgbD0zRGkuYWN0aW9ufHxpO2cu YXBwZW5kKCQoIjxsaT48L2xpPiIpLmFwcGU9Cm5kKCQoIjxhPiIpLmF0dHIoImhyZWYiLGkudXJs KS5odG1sKGopLmNsaWNrKGwpKSl9ZWxzZXtnLmFwcGVuZCgkKCI8bGk+PC9saT0KPiIpLmFkZENs YXNzKCJoZWFkIikuYXBwZW5kKCQoIjxhIGhyZWY9M0QnIyc+PC9hPiIpLmh0bWwoaikpKX19KTt2 YXIgaD0zRCQoPQoiPGRpdiBjbGFzcz0zRCdwb3BtZW51LXdyYXBwZXInIHN0eWxlPTNEJ3Bvc2l0 aW9uOiBhYnNvbHV0ZTtsZWZ0OiAwOyB0b3A6IC09CjEwMDA7Jz48L2Rpdj4iKS5hcHBlbmQoZyku YXBwZW5kVG8oImJvZHkiKTt2YXIgZT0zRGQucGFnZVgtaC53aWR0aCgpLzI7ZT0zRD0KTWF0aC5t aW4oZSwkKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkrJCh3aW5kb3cpLndpZHRoKCktJChoKS53aWR0 aCgpLTUpO2U9M0RNPQphdGgubWF4KGUsJChkb2N1bWVudCkuc2Nyb2xsTGVmdCgpKzUpO2guY3Nz KHt0b3A6ZC5wYWdlWSxsZWZ0OmV9KX0sMTApO3NldFQ9CmltZW91dChmdW5jdGlvbigpe3ZhciBm PTNEZnVuY3Rpb24oaCl7JChoKS5iaW5kKCJjbGljay5jbG9zZV9wb3B1cCIsZnVuY3Rpbz0Kbigp eyQoIi5wb3BtZW51LXdyYXBwZXIiKS5yZW1vdmUoKTtoLnVuYmluZCgiY2xpY2suY2xvc2VfcG9w dXAiKX0pfTtmKCQod2luPQpkb3cuZG9jdW1lbnQpKTtmKCQod2luZG93LnRvcC5kb2N1bWVudCkp O2Zvcih2YXIgZT0zRHdpbmRvdy50b3AuZnJhbWVzLmxlbmc9CnRoO2UtLTspe3ZhciBnPTNEJCh3 aW5kb3cudG9wLmZyYW1lc1tlXS5kb2N1bWVudCk7ZihnKX19LDUwKTtyZXR1cm4gZmFsc2V9KT0K fWZ1bmN0aW9uIG1ha2VfcG9wdXBfbWVudXMoYSl7YT0zRGF8fGRvY3VtZW50OyQoYSkuZmluZCgi ZGl2W3BvcHVwbWVudV0iKS5lPQphY2goZnVuY3Rpb24oKXt2YXIgYj0zRHt9O3ZhciBkPTNEJCh0 aGlzKTtkLmZpbmQoImEiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGc9Cj0zRCQodGhpcyksaT0zRGcu Z2V0KDApLGU9M0RpLmdldEF0dHJpYnV0ZSgiY29uZmlybSIpLGY9M0RpLmdldEF0dHJpYnV0ZSgi aD0KcmVmIiksaD0zRGkuZ2V0QXR0cmlidXRlKCJ0YXJnZXQiKTtpZighZil7YltnLnRleHQoKV09 M0RudWxsfWVsc2V7YltnLnRleHQoPQopXT0zRHt1cmw6ZixhY3Rpb246ZnVuY3Rpb24oail7aWYo IWV8fGNvbmZpcm0oZSkpe2lmKGgpe3dpbmRvdy5vcGVuKGYsaCk7cmU9CnR1cm4gZmFsc2V9ZWxz ZXtnLmNsaWNrKCl9fWVsc2V7ai5wcmV2ZW50RGVmYXVsdCgpfX19fX0pO3ZhciBjPTNEJChhKS5m aW5kKD0KIiMiK2QuYXR0cigicG9wdXBtZW51IikpO2MuZmluZCgiYSIpLmJpbmQoImNsaWNrIixm dW5jdGlvbihmKXtmLnN0b3BQcm9wYWdhPQp0aW9uKCk7cmV0dXJuIHRydWV9KTttYWtlX3BvcHVw bWVudShjLGIpO2MuYWRkQ2xhc3MoInBvcHVwIik7ZC5yZW1vdmUoKX0pfSQ9Ci5mbi5yZWZyZXNo X3NlbGVjdDI9M0RmdW5jdGlvbigpe3ZhciBiPTNEJCh0aGlzKTt2YXIgYT0zRHtwbGFjZWhvbGRl cjoiQ2xpYz0KayB0byBzZWxlY3QiLGNsb3NlT25TZWxlY3Q6IWIuaXMoIltNVUxUSVBMRV0iKSxk cm9wZG93bkF1dG9XaWR0aDp0cnVlLGNvbnRhPQppbmVyQ3NzQ2xhc3M6InNlbGVjdDItbWlud2lk dGgifTtyZXR1cm4gYi5zZWxlY3QyKGEpfTtmdW5jdGlvbiByZXBsYWNlX2JpZ189CnNlbGVjdF9p bnB1dHMoYSxjLGIpe2lmKCFqUXVlcnkuZm4uc2VsZWN0Mil7cmV0dXJufWlmKGE9M0Q9M0Q9M0R1 bmRlZmluZWQpez0KYT0zRDIwfWlmKGM9M0Q9M0Q9M0R1bmRlZmluZWQpe2M9M0QzMDAwfWI9M0Ri fHwkKCJzZWxlY3QiKTtiLmVhY2goZnVuY3Rpb24oPQope3ZhciBlPTNEJCh0aGlzKS5ub3QoIltt dWx0aXBsZV0iKTt2YXIgZD0zRGUuZmluZCgib3B0aW9uIikubGVuZ3RoO2lmKChkPGE9Cil8fChk PmMpKXtyZXR1cm59aWYoZS5oYXNDbGFzcygibm8tYXV0b2NvbXBsZXRlIikpe3JldHVybn1lLnJl ZnJlc2hfc2VsZWN0Mj0KKCl9KX0kLmZuLm1ha2VfdGV4dF9lZGl0YWJsZT0zRGZ1bmN0aW9uKGcp e3ZhciBkPTNEKCJudW1fY29scyIgaW4gZz9nLm51bV9jPQpvbHM6MzApLGM9M0QoIm51bV9yb3dz IiBpbiBnP2cubnVtX3Jvd3M6NCksZT0zRCgidXNlX3RleHRhcmVhIiBpbiBnP2cudXNlX3Q9CmV4 dGFyZWE6ZmFsc2UpLGI9M0QoIm9uX2ZpbmlzaCIgaW4gZz9nLm9uX2ZpbmlzaDpudWxsKSxmPTNE KCJoZWxwX3RleHQiIGluID0KZz9nLmhlbHBfdGV4dDpudWxsKTt2YXIgYT0zRCQodGhpcyk7YS5h ZGRDbGFzcygiZWRpdGFibGUtdGV4dCIpLmNsaWNrKGZ1bmN0PQppb24obCl7aWYoJCh0aGlzKS5j aGlsZHJlbigiOmlucHV0IikubGVuZ3RoPjApe3JldHVybn1hLnJlbW92ZUNsYXNzKCJlZGl0YWI9 CmxlLXRleHQiKTt2YXIgaT0zRGZ1bmN0aW9uKG0pe2EuZmluZCgiOmlucHV0IikucmVtb3ZlKCk7 aWYobSE9M0Q9M0QiIil7YS50ZT0KeHQobSl9ZWxzZXthLmh0bWwoIjxicj4iKX1hLmFkZENsYXNz KCJlZGl0YWJsZS10ZXh0Iik7aWYoYil7YihtKX19O3ZhciBoPTNEPQooImN1cl90ZXh0IiBpbiBn P2cuY3VyX3RleHQ6YS50ZXh0KCkpLGssajtpZihlKXtrPTNEJCgiPHRleHRhcmVhLz4iKS5hdHRy KHs9CnJvd3M6Yyxjb2xzOmR9KS50ZXh0KCQudHJpbShoKSkua2V5dXAoZnVuY3Rpb24obSl7aWYo bS5rZXlDb2RlPTNEPTNEPTNEMjcpez0KaShoKX19KTtqPTNEJCgiPGJ1dHRvbi8+IikudGV4dCgi RG9uZSIpLmNsaWNrKGZ1bmN0aW9uKCl7aShrLnZhbCgpKTtyZXR1cm4gPQpmYWxzZX0pfWVsc2V7 az0zRCQoIjxpbnB1dCB0eXBlPTNEJ3RleHQnLz4iKS5hdHRyKHt2YWx1ZTokLnRyaW0oaCksc2l6 ZTpkfSk9Ci5ibHVyKGZ1bmN0aW9uKCl7aShoKX0pLmtleXVwKGZ1bmN0aW9uKG0pe2lmKG0ua2V5 Q29kZT0zRD0zRD0zRDI3KXskKHRoaXMpLj0KdHJpZ2dlcigiYmx1ciIpfWVsc2V7aWYobS5rZXlD b2RlPTNEPTNEPTNEMTMpe2koJCh0aGlzKS52YWwoKSl9fW0uc3RvcFByb3BhPQpnYXRpb24oKX0p fWEudGV4dCgiIik7YS5hcHBlbmQoayk7aWYoail7YS5hcHBlbmQoail9ay5mb2N1cygpO2suc2Vs ZWN0KCk7bC49CnN0b3BQcm9wYWdhdGlvbigpfSk7aWYoZil7YS5hdHRyKCJ0aXRsZSIsZikudG9v bHRpcCgpfXJldHVybiBhfTtmdW5jdGlvbiBhcz0KeW5jX3NhdmVfdGV4dChkLGYsZSxhLGMsaCxp LGcsYil7aWYoYz0zRD0zRD0zRHVuZGVmaW5lZCl7Yz0zRDMwfWlmKGk9M0Q9M0Q9Cj0zRHVuZGVm aW5lZCl7aT0zRDR9JCgiIyIrZCkuY2xpY2soZnVuY3Rpb24oKXtpZigkKCIjcmVuYW1pbmctYWN0 aXZlIikubGVuZz0KdGg+MCl7cmV0dXJufXZhciBsPTNEJCgiIyIrZiksaz0zRGwudGV4dCgpLGo7 aWYoaCl7aj0zRCQoIjx0ZXh0YXJlYT48L3RleHRhPQpyZWE+IikuYXR0cih7cm93czppLGNvbHM6 Y30pLnRleHQoJC50cmltKGspKX1lbHNle2o9M0QkKCI8aW5wdXQgdHlwZT0zRCd0ZXg9CnQnPjwv aW5wdXQ+IikuYXR0cih7dmFsdWU6JC50cmltKGspLHNpemU6Y30pfWouYXR0cigiaWQiLCJyZW5h bWluZy1hY3RpdmUiKT0KO2ouYmx1cihmdW5jdGlvbigpeyQodGhpcykucmVtb3ZlKCk7bC5zaG93 KCk7aWYoYil7YihqKX19KTtqLmtleXVwKGZ1bmN0aW9uPQoobil7aWYobi5rZXlDb2RlPTNEPTNE PTNEMjcpeyQodGhpcykudHJpZ2dlcigiYmx1ciIpfWVsc2V7aWYobi5rZXlDb2RlPTNEPQo9M0Q9 M0QxMyl7dmFyIG09M0R7fTttW2FdPTNEJCh0aGlzKS52YWwoKTskKHRoaXMpLnRyaWdnZXIoImJs dXIiKTskLmFqYXgoe3U9CnJsOmUsZGF0YTptLGVycm9yOmZ1bmN0aW9uKCl7YWxlcnQoIlRleHQg ZWRpdGluZyBmb3IgZWx0ICIrZisiIGZhaWxlZCIpfSxzdT0KY2Nlc3M6ZnVuY3Rpb24obyl7aWYo byE9M0Q9M0QiIil7bC50ZXh0KG8pfWVsc2V7bC5odG1sKCI8ZW0+Tm9uZTwvZW0+Iil9aWYoPQpi KXtiKGopfX19KX19fSk7aWYoZyl7ZyhqKX1sLmhpZGUoKTtqLmluc2VydEFmdGVyKGwpO2ouZm9j dXMoKTtqLnNlbGVjdCgpO3I9CmV0dXJufSl9ZnVuY3Rpb24gY29tbWF0aXplKGIpe2IrPTNEIiI7 dmFyIGE9M0QvKFxkKykoXGR7M30pLzt3aGlsZShhLnRlc3QoYj0KKSl7Yj0zRGIucmVwbGFjZShh LCIkMSwkMiIpfXJldHVybiBifWZ1bmN0aW9uIHJlc2V0X3Rvb2xfc2VhcmNoKGEpe3ZhciBjPTNE PQokKCIjZ2FsYXh5X3Rvb2xzIikuY29udGVudHMoKTtpZihjLmxlbmd0aD0zRD0zRD0zRDApe2M9 M0QkKGRvY3VtZW50KX0kKHRoaXM9CikucmVtb3ZlQ2xhc3MoInNlYXJjaF9hY3RpdmUiKTtjLmZp bmQoIi50b29sVGl0bGUiKS5yZW1vdmVDbGFzcygic2VhcmNoX21hdD0KY2giKTtjLmZpbmQoIi50 b29sU2VjdGlvbkJvZHkiKS5oaWRlKCk7Yy5maW5kKCIudG9vbFRpdGxlIikuc2hvdygpO2MuZmlu ZCgiPQoudG9vbFBhbmVsTGFiZWwiKS5zaG93KCk7Yy5maW5kKCIudG9vbFNlY3Rpb25XcmFwcGVy IikuZWFjaChmdW5jdGlvbigpe2lmKCQ9Cih0aGlzKS5hdHRyKCJpZCIpIT0zRD0zRCJyZWNlbnRs eV91c2VkX3dyYXBwZXIiKXskKHRoaXMpLnNob3coKX1lbHNle2lmKCQodD0KaGlzKS5oYXNDbGFz cygidXNlcl9wcmVmX3Zpc2libGUiKSl7JCh0aGlzKS5zaG93KCl9fX0pO2MuZmluZCgiI3NlYXJj aC1uby1yPQplc3VsdHMiKS5oaWRlKCk7Yy5maW5kKCIjc2VhcmNoLXNwaW5uZXIiKS5oaWRlKCk7 aWYoYSl7dmFyIGI9M0RjLmZpbmQoIiN0b289Cmwtc2VhcmNoLXF1ZXJ5Iik7Yi52YWwoInNlYXJj aCB0b29scyIpfX12YXIgR2FsYXh5QXN5bmM9M0RmdW5jdGlvbihhKXt0aGlzLj0KdXJsX2RpY3Q9 M0R7fTt0aGlzLmxvZ19hY3Rpb249M0QoYT0zRD0zRD0zRHVuZGVmaW5lZD9mYWxzZTphKX07R2Fs YXh5QXN5bmMuPQpwcm90b3R5cGUuc2V0X2Z1bmNfdXJsPTNEZnVuY3Rpb24oYSxiKXt0aGlzLnVy bF9kaWN0W2FdPTNEYn07R2FsYXh5QXN5bmMucHI9Cm90b3R5cGUuc2V0X3VzZXJfcHJlZj0zRGZ1 bmN0aW9uKGEsYil7dmFyIGM9M0R0aGlzLnVybF9kaWN0W2FyZ3VtZW50cy5jYWxsZT0KZV07aWYo Yz0zRD0zRD0zRHVuZGVmaW5lZCl7cmV0dXJuIGZhbHNlfSQuYWpheCh7dXJsOmMsZGF0YTp7cHJl Zl9uYW1lOmEscHJlPQpmX3ZhbHVlOmJ9LGVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfSxz dWNjZXNzOmZ1bmN0aW9uKCl7cmV0dXJuIHRydWV9fSk9Cn07R2FsYXh5QXN5bmMucHJvdG90eXBl LmxvZ191c2VyX2FjdGlvbj0zRGZ1bmN0aW9uKGMsYixkKXtpZighdGhpcy5sb2dfYWN0aT0Kb24p e3JldHVybn12YXIgYT0zRHRoaXMudXJsX2RpY3RbYXJndW1lbnRzLmNhbGxlZV07aWYoYT0zRD0z RD0zRHVuZGVmaW5lZCl7PQpyZXR1cm4gZmFsc2V9JC5hamF4KHt1cmw6YSxkYXRhOnthY3Rpb246 Yyxjb250ZXh0OmIscGFyYW1zOmR9LGVycm9yOmZ1bmN0aW89Cm4oKXtyZXR1cm4gZmFsc2V9LHN1 Y2Nlc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdHJ1ZX19KX07ZnVuY3Rpb24gaW5pdF9yZWZyZXNoXz0K b25fY2hhbmdlKCl7JCgic2VsZWN0W3JlZnJlc2hfb25fY2hhbmdlPTNEJ3RydWUnXSIpLm9mZigi Y2hhbmdlIikuY2hhbmdlKGZ1PQpuY3Rpb24oKXt2YXIgYT0zRCQodGhpcyksZT0zRGEudmFsKCks ZD0zRGZhbHNlLGM9M0RhLmF0dHIoInJlZnJlc2hfb25fY2hhbmc9CmVfdmFsdWVzIik7aWYoYyl7 Yz0zRGMuc3BsaXQoIiwiKTt2YXIgYj0zRGEuYXR0cigibGFzdF9zZWxlY3RlZF92YWx1ZSIpO2lm KD0KJC5pbkFycmF5KGUsYyk9M0Q9M0Q9M0QtMSYmJC5pbkFycmF5KGIsYyk9M0Q9M0Q9M0QtMSl7 cmV0dXJufX0kKHdpbmRvdykudHJpPQpnZ2VyKCJyZWZyZXNoX29uX2NoYW5nZSIpOyQoZG9jdW1l bnQpLnRyaWdnZXIoImNvbnZlcnRfdG9fdmFsdWVzIik7YS5nZXQoMCk9Ci5mb3JtLnN1Ym1pdCgp fSk7JCgiOmNoZWNrYm94W3JlZnJlc2hfb25fY2hhbmdlPTNEJ3RydWUnXSIpLm9mZigiY2xpY2si KS5jbD0KaWNrKGZ1bmN0aW9uKCl7dmFyIGE9M0QkKHRoaXMpLGU9M0RhLnZhbCgpLGQ9M0RmYWxz ZSxjPTNEYS5hdHRyKCJyZWZyZXNoX29uPQpfY2hhbmdlX3ZhbHVlcyIpO2lmKGMpe2M9M0RjLnNw bGl0KCIsIik7dmFyIGI9M0RhLmF0dHIoImxhc3Rfc2VsZWN0ZWRfdmFsdWU9CiIpO2lmKCQuaW5B cnJheShlLGMpPTNEPTNEPTNELTEmJiQuaW5BcnJheShiLGMpPTNEPTNEPTNELTEpe3JldHVybn19 JCh3aW5kbz0KdykudHJpZ2dlcigicmVmcmVzaF9vbl9jaGFuZ2UiKTthLmdldCgwKS5mb3JtLnN1 Ym1pdCgpfSk7JCgiYVtjb25maXJtXSIpLm9mPQpmKCJjbGljayIpLmNsaWNrKGZ1bmN0aW9uKCl7 cmV0dXJuIGNvbmZpcm0oJCh0aGlzKS5hdHRyKCJjb25maXJtIikpfSl9alF1ZXI9CnkuZm4ucHJl dmVudERvdWJsZVN1Ym1pc3Npb249M0RmdW5jdGlvbigpeyQodGhpcykub24oInN1Ym1pdCIsZnVu Y3Rpb24oYil7dj0KYXIgYT0zRCQodGhpcyk7aWYoYS5kYXRhKCJzdWJtaXR0ZWQiKT0zRD0zRD0z RHRydWUpe2IucHJldmVudERlZmF1bHQoKX1lbHNlPQp7YS5kYXRhKCJzdWJtaXR0ZWQiLHRydWUp fX0pO3JldHVybiB0aGlzfTskKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe2luaXQ9Cl9yZWZy ZXNoX29uX2NoYW5nZSgpO2lmKCQuZm4udG9vbHRpcCl7JCgiLnVuaWZpZWQtcGFuZWwtaGVhZGVy IFt0aXRsZV0iKS50bz0Kb2x0aXAoe3BsYWNlbWVudDoiYm90dG9tIn0pOyQoIlt0aXRsZV0iKS50 b29sdGlwKCl9bWFrZV9wb3B1cF9tZW51cygpO3JlcGxhPQpjZV9iaWdfc2VsZWN0X2lucHV0cygy MCwxNTAwKTskKCJhIikuY2xpY2soZnVuY3Rpb24oKXt2YXIgYj0zRCQodGhpcyk7dmFyIGM9Cj0z RChwYXJlbnQuZnJhbWVzJiZwYXJlbnQuZnJhbWVzLmdhbGF4eV9tYWluKTtpZigoYi5hdHRyKCJ0 YXJnZXQiKT0zRD0zRCJnYT0KbGF4eV9tYWluIikmJighYykpe3ZhciBhPTNEYi5hdHRyKCJocmVm Iik7aWYoYS5pbmRleE9mKCI/Iik9M0Q9M0QtMSl7YSs9M0QiPQo/In1lbHNle2ErPTNEIiYifWEr PTNEInVzZV9wYW5lbHM9M0RUcnVlIjtiLmF0dHIoImhyZWYiLGEpO2IuYXR0cigidGFyZ2V0Iiw9 CiJfc2VsZiIpfXJldHVybiBifSl9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgoKaHR0 cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzMzZmQ0M2Y3 NTkwZi8KQ2hhbmdlc2V0OiAgIDMzZmQ0M2Y3NTkwZgpCcmFuY2g6ICAgICAgcmVsZWFzZV8xNS4w MwpVc2VyOiAgICAgICAgY2FybGZlYmVyaGFyZApEYXRlOiAgICAgICAgMjAxNS0wMi0yMyAyMjox NDozNyswMDowMApTdW1tYXJ5OiAgICAgVUksIGhpc3RvcnkgcGFuZWw6IGNvcnJlY3RseSBkZWZh dWx0IGNsZWFyTWVzc2FnZXMgdGFyZ2V0IHdoZW49CiBubyBldmVudCBpcyBnaXZlbgpBZmZlY3Rl ZCAjOiAgOCBmaWxlcwoKZGlmZiAtciA5MzgwMWQ2ZmE3YmQzMmE4MWRlMzk3MTM3OTUzMzEyY2Nh N2E0M2ExIC1yIDMzZmQ0M2Y3NTkwZjE3ZWQ2MTFjZTA3PQoxNzhjYWU4YzJiNzA1MjVkMCBjbGll bnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2hpc3RvcnkvaGlzdG9yeS1wYW5lbC1lZGl0LWN1cnI9CmVu dC5qcwotLS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL2hpc3RvcnkvaGlzdG9yeS1wYW5l bC1lZGl0LWN1cnJlbnQuanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9oaXN0b3J5 L2hpc3RvcnktcGFuZWwtZWRpdC1jdXJyZW50LmpzCkBAIC0zNzksMjEgKzM3OSwzMSBAQAogICAg IH0sCj0yMAogLy9UT0RPOiB0aGlzIHNlZW1zIG1vcmUgbGlrZSBhIHBlciB1c2VyIG1lc3NhZ2Ug dGhhbiBhIGhpc3RvcnkgbWVzc2FnZTsgSU89ClcsIHRoaXMgZG9lc24ndCBiZWxvbmcgaGVyZQor ICAgIC8qKiBPdmVycmlkZSB0byBwcmVzZXJ2ZSB0aGUgcXVvdGEgbWVzc2FnZSAqLworICAgIGNs ZWFyTWVzc2FnZXMgOiBmdW5jdGlvbiggZXYgKXsKKyAgICAgICAgdmFyICR0YXJnZXQgPTNEICFf LmlzVW5kZWZpbmVkKCBldiApPworICAgICAgICAgICAgJCggZXYuY3VycmVudFRhcmdldCApCisg ICAgICAgICAgICA6dGhpcy4kbWVzc2FnZXMoKS5jaGlsZHJlbiggJ1tjbGFzcyQ9M0QibWVzc2Fn ZSJdJyApOworICAgICAgICAkdGFyZ2V0ID0zRCAkdGFyZ2V0Lm5vdCggJy5xdW90YS1tZXNzYWdl JyApOworICAgICAgICAkdGFyZ2V0LmZhZGVPdXQoIHRoaXMuZnhTcGVlZCwgZnVuY3Rpb24oKXsK KyAgICAgICAgICAgICQoIHRoaXMgKS5yZW1vdmUoKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJl dHVybiB0aGlzOworICAgIH0sCisKICAgICAvKiogU2hvdyB0aGUgb3ZlciBxdW90YSBtZXNzYWdl ICh3aGljaCBoYXBwZW5zIHRvIGJlIGluIHRoZSBoaXN0b3J5IHBhPQpuZWwpLgogICAgICAqLwog ICAgIHNob3dRdW90YU1lc3NhZ2UgOiBmdW5jdGlvbigpewotICAgICAgICB2YXIgbXNnID0zRCB0 aGlzLiRlbC5maW5kKCAnLnF1b3RhLW1lc3NhZ2UnICk7Ci0gICAgICAgIC8vdGhpcy5sb2coIHRo aXMgKyAnIHNob3dpbmcgcXVvdGEgbWVzc2FnZTonLCBtc2csIHVzZXJEYXRhICk7Ci0gICAgICAg IGlmKCBtc2cuaXMoICc6aGlkZGVuJyApICl7IG1zZy5zbGlkZURvd24oIHRoaXMuZnhTcGVlZCAp OyB9CisgICAgICAgIHZhciAkbXNnID0zRCB0aGlzLiQoICcucXVvdGEtbWVzc2FnZScgKTsKKyAg ICAgICAgaWYoICRtc2cuaXMoICc6aGlkZGVuJyApICl7ICRtc2cuc2xpZGVEb3duKCB0aGlzLmZ4 U3BlZWQgKTsgfQogICAgIH0sCj0yMAogLy9UT0RPOiB0aGlzIHNlZW1zIG1vcmUgbGlrZSBhIHBl ciB1c2VyIG1lc3NhZ2UgdGhhbiBhIGhpc3RvcnkgbWVzc2FnZQogICAgIC8qKiBIaWRlIHRoZSBv dmVyIHF1b3RhIG1lc3NhZ2UgKHdoaWNoIGhhcHBlbnMgdG8gYmUgaW4gdGhlIGhpc3RvcnkgcGE9 Cm5lbCkuCiAgICAgICovCiAgICAgaGlkZVF1b3RhTWVzc2FnZSA6IGZ1bmN0aW9uKCl7Ci0gICAg ICAgIHZhciBtc2cgPTNEIHRoaXMuJGVsLmZpbmQoICcucXVvdGEtbWVzc2FnZScgKTsKLSAgICAg ICAgLy90aGlzLmxvZyggdGhpcyArICcgaGlkaW5nIHF1b3RhIG1lc3NhZ2U6JywgbXNnLCB1c2Vy RGF0YSApOwotICAgICAgICBpZiggIW1zZy5pcyggJzpoaWRkZW4nICkgKXsgbXNnLnNsaWRlVXAo IHRoaXMuZnhTcGVlZCApOyB9CisgICAgICAgIHZhciAkbXNnID0zRCB0aGlzLiQoICcucXVvdGEt bWVzc2FnZScgKTsKKyAgICAgICAgaWYoICEkbXNnLmlzKCAnOmhpZGRlbicgKSApeyAkbXNnLnNs aWRlVXAoIHRoaXMuZnhTcGVlZCApOyB9CiAgICAgfSwKPTIwCiAgICAgLyoqIFJldHVybiBhIHN0 cmluZyByZXAgb2YgdGhlIGhpc3RvcnkKCmRpZmYgLXIgOTM4MDFkNmZhN2JkMzJhODFkZTM5NzEz Nzk1MzMxMmNjYTdhNDNhMSAtciAzM2ZkNDNmNzU5MGYxN2VkNjExY2UwNz0KMTc4Y2FlOGMyYjcw NTI1ZDAgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9oaXN0b3J5L2hpc3RvcnktcGFuZWwuanMK LS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9oaXN0b3J5L2hpc3RvcnktcGFuZWwuanMK KysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9oaXN0b3J5L2hpc3RvcnktcGFuZWwuanMK QEAgLTM4MSwxMiArMzgxLDkgQEAKICAgICAvKiogZXZlbnQgbWFwICovCiAgICAgZXZlbnRzIDog Xy5leHRlbmQoIF8uY2xvbmUoIF9zdXBlci5wcm90b3R5cGUuZXZlbnRzICksIHsKICAgICAgICAg Ly8gdG9nZ2xlIGxpc3QgaXRlbSBzZWxlY3RvcnMKLSAgICAgICAgJ2NsaWNrIC5zaG93LXNlbGVj dG9ycy1idG4nICAgICAgICAgICAgICAgICA6ICd0b2dnbGVTZWxlY3RvcnMnCisgICAgICAgICdj bGljayAuc2hvdy1zZWxlY3RvcnMtYnRuJyAgICAgICAgIDogJ3RvZ2dsZVNlbGVjdG9ycycsCiAg ICAgICAgIC8vIGFsbG93IChlcnJvcikgbWVzc2FnZXMgdG8gYmUgY2xpY2tlZCBhd2F5Ci0vL1RP RE86IHN3aXRjaCB0byBjb21tb24gY2xvc2UgKFgpIGlkaW9tCi0gICAgICAgIC8vJ2NsaWNrIC5t ZXNzYWdlcycgICAgICAgICAgICAgICA6ICdjbGVhck1lc3NhZ2VzJywKLS8vVE9ETzogcmVtb3Zl Ci0gICAgICAgIC8vJ2NsaWNrIC5oaXN0b3J5LXNlYXJjaC1idG4nICAgICA6ICd0b2dnbGVTZWFy Y2hDb250cm9scycKKyAgICAgICAgJ2NsaWNrIC5tZXNzYWdlcyBbY2xhc3MkPTNEbWVzc2FnZV0n ICA6ICdjbGVhck1lc3NhZ2VzJwogICAgIH0pLAo9MjAKICAgICAvKiogSGFuZGxlIHRoZSB1c2Vy IHRvZ2dsaW5nIHRoZSBkZWxldGVkIHZpc2liaWxpdHkgYnk6CkBAIC00NTcsMTQgKzQ1NCwxNCBA QAogICAgICAqLwogICAgIGVycm9ySGFuZGxlciA6IGZ1bmN0aW9uKCBtb2RlbCwgeGhyLCBvcHRp b25zLCBtc2csIGRldGFpbHMgKXsKICAgICAgICAgdGhpcy5lcnJvciggbW9kZWwsIHhociwgb3B0 aW9ucywgbXNnLCBkZXRhaWxzICk7Ci0vL1RPRE86IGdldHRpbmcgSlNPTiBwYXJzZSBlcnJvcnMg ZnJvbSBqcSBtaWdyYXRlCj0yMAogICAgICAgICAvLyBpbnRlcnJ1cHRlZCBhamF4CiAgICAgICAg IGlmKCB4aHIgJiYgeGhyLnN0YXR1cyA9M0Q9M0Q9M0QgMCAmJiB4aHIucmVhZHlTdGF0ZSA9M0Q9 M0Q9M0QgMCApeworICAgICAgICAgICAgLy9UT0RPOiBnbWFpbCBzdHlsZSAncmV0cnlpbmcgaW4g TnMnCj0yMAogICAgICAgICAvLyBiYWQgZ2F0ZXdheQogICAgICAgICB9IGVsc2UgaWYoIHhociAm JiB4aHIuc3RhdHVzID0zRD0zRD0zRCA1MDIgKXsKLS8vVE9ETzogZ21haWwgc3R5bGUgJ3JlY29u bmVjdGluZyBpbiBOcycKKyAgICAgICAgICAgIC8vVE9ETzogZ21haWwgc3R5bGUgJ3JldHJ5aW5n IGluIE5zJwo9MjAKICAgICAgICAgLy8gb3RoZXJ3aXNlLCBzaG93IGFuIGVycm9yIG1lc3NhZ2Ug aW5zaWRlIHRoZSBwYW5lbAogICAgICAgICB9IGVsc2UgewpAQCAtNTUxLDcgKzU0OCw3IEBACiAg ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAkbXNnLmFwcGVuZCggJyAnLCAkZGV0YWls c0xpbmsgKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gJG1zZ0NvbnRhaW5lci5odG1sKCAk bXNnICk7CisgICAgICAgIHJldHVybiAkbXNnQ29udGFpbmVyLmFwcGVuZCggJG1zZyApOwogICAg IH0sCj0yMAogICAgIC8qKiBjb252ZXJ0IG1zZyBhbmQgZGV0YWlscyBpbnRvIG1vZGFsIG9wdGlv bnMgdXNhYmxlIGJ5IEdhbGF4eS5tb2RhbCA9CiovCkBAIC01ODIsMTAgKzU3OSwxMiBAQAo9MjAK ICAgICAvKiogUmVtb3ZlIGFsbCBtZXNzYWdlcyBmcm9tIHRoZSBwYW5lbC4gKi8KICAgICBjbGVh ck1lc3NhZ2VzIDogZnVuY3Rpb24oIGV2ICl7Ci0gICAgICAgICQoIGV2LmN1cnJlbnRUYXJnZXQg KS5mYWRlT3V0KCB0aGlzLmZ4U3BlZWQsIGZ1bmN0aW9uKCl7CisgICAgICAgIHZhciAkdGFyZ2V0 ID0zRCAhXy5pc1VuZGVmaW5lZCggZXYgKT8KKyAgICAgICAgICAgICQoIGV2LmN1cnJlbnRUYXJn ZXQgKQorICAgICAgICAgICAgOnRoaXMuJG1lc3NhZ2VzKCkuY2hpbGRyZW4oICdbY2xhc3MkPTNE Im1lc3NhZ2UiXScgKTsKKyAgICAgICAgJHRhcmdldC5mYWRlT3V0KCB0aGlzLmZ4U3BlZWQsIGZ1 bmN0aW9uKCl7CiAgICAgICAgICAgICAkKCB0aGlzICkucmVtb3ZlKCk7CiAgICAgICAgIH0pOwot ICAgICAgICAvL3RoaXMuJG1lc3NhZ2VzKCkuY2hpbGRyZW4oKS5ub3QoICcucXVvdGEtbWVzc2Fn ZScgKS5yZW1vdmUoKTsKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgfSwKPTIwCgpkaWZmIC1y IDkzODAxZDZmYTdiZDMyYTgxZGUzOTcxMzc5NTMzMTJjY2E3YTQzYTEgLXIgMzNmZDQzZjc1OTBm MTdlZDYxMWNlMDc9CjE3OGNhZThjMmI3MDUyNWQwIGNsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMv bGlzdC9saXN0LXBhbmVsLmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvbGlzdC9s aXN0LXBhbmVsLmpzCisrKyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvbGlzdC9saXN0LXBh bmVsLmpzCkBAIC0xMTksNiArMTE5LDggQEAKICAgICBfc2V0VXBMaXN0ZW5lcnMgOiBmdW5jdGlv bigpewogICAgICAgICB0aGlzLm9mZigpOwo9MjAKKyAgICAgICAgLy9UT0RPOiBtb3ZlIGVycm9y SGFuZGxlciBkb3duIGludG8gbGlzdC1wYW5lbCBmcm9tIGhpc3RvcnktcGFuZWwgPQpvcgorICAg ICAgICAvLyAgcGFzcyB0byBnbG9iYWwgZXJyb3IgaGFuZGxlciAoR2FsYXh5KQogICAgICAgICB0 aGlzLm9uKCAnZXJyb3InLCBmdW5jdGlvbiggbW9kZWwsIHhociwgb3B0aW9ucywgbXNnLCBkZXRh aWxzICl7CiAgICAgICAgICAgICAvL3RoaXMuZXJyb3JIYW5kbGVyKCBtb2RlbCwgeGhyLCBvcHRp b25zLCBtc2csIGRldGFpbHMgKTsKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIG1vZGVsLCB4 aHIsIG9wdGlvbnMsIG1zZywgZGV0YWlscyApOwoKZGlmZiAtciA5MzgwMWQ2ZmE3YmQzMmE4MWRl Mzk3MTM3OTUzMzEyY2NhN2E0M2ExIC1yIDMzZmQ0M2Y3NTkwZjE3ZWQ2MTFjZTA3PQoxNzhjYWU4 YzJiNzA1MjVkMCBzdGF0aWMvc2NyaXB0cy9tdmMvaGlzdG9yeS9oaXN0b3J5LXBhbmVsLWVkaXQt Y3VycmVudC5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9tdmMvaGlzdG9yeS9oaXN0b3J5LXBhbmVs LWVkaXQtY3VycmVudC5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9tdmMvaGlzdG9yeS9oaXN0b3J5 LXBhbmVsLWVkaXQtY3VycmVudC5qcwpAQCAtMzc5LDIxICszNzksMzEgQEAKICAgICB9LAo9MjAK IC8vVE9ETzogdGhpcyBzZWVtcyBtb3JlIGxpa2UgYSBwZXIgdXNlciBtZXNzYWdlIHRoYW4gYSBo aXN0b3J5IG1lc3NhZ2U7IElPPQpXLCB0aGlzIGRvZXNuJ3QgYmVsb25nIGhlcmUKKyAgICAvKiog T3ZlcnJpZGUgdG8gcHJlc2VydmUgdGhlIHF1b3RhIG1lc3NhZ2UgKi8KKyAgICBjbGVhck1lc3Nh Z2VzIDogZnVuY3Rpb24oIGV2ICl7CisgICAgICAgIHZhciAkdGFyZ2V0ID0zRCAhXy5pc1VuZGVm aW5lZCggZXYgKT8KKyAgICAgICAgICAgICQoIGV2LmN1cnJlbnRUYXJnZXQgKQorICAgICAgICAg ICAgOnRoaXMuJG1lc3NhZ2VzKCkuY2hpbGRyZW4oICdbY2xhc3MkPTNEIm1lc3NhZ2UiXScgKTsK KyAgICAgICAgJHRhcmdldCA9M0QgJHRhcmdldC5ub3QoICcucXVvdGEtbWVzc2FnZScgKTsKKyAg ICAgICAgJHRhcmdldC5mYWRlT3V0KCB0aGlzLmZ4U3BlZWQsIGZ1bmN0aW9uKCl7CisgICAgICAg ICAgICAkKCB0aGlzICkucmVtb3ZlKCk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gdGhp czsKKyAgICB9LAorCiAgICAgLyoqIFNob3cgdGhlIG92ZXIgcXVvdGEgbWVzc2FnZSAod2hpY2gg aGFwcGVucyB0byBiZSBpbiB0aGUgaGlzdG9yeSBwYT0KbmVsKS4KICAgICAgKi8KICAgICBzaG93 UXVvdGFNZXNzYWdlIDogZnVuY3Rpb24oKXsKLSAgICAgICAgdmFyIG1zZyA9M0QgdGhpcy4kZWwu ZmluZCggJy5xdW90YS1tZXNzYWdlJyApOwotICAgICAgICAvL3RoaXMubG9nKCB0aGlzICsgJyBz aG93aW5nIHF1b3RhIG1lc3NhZ2U6JywgbXNnLCB1c2VyRGF0YSApOwotICAgICAgICBpZiggbXNn LmlzKCAnOmhpZGRlbicgKSApeyBtc2cuc2xpZGVEb3duKCB0aGlzLmZ4U3BlZWQgKTsgfQorICAg ICAgICB2YXIgJG1zZyA9M0QgdGhpcy4kKCAnLnF1b3RhLW1lc3NhZ2UnICk7CisgICAgICAgIGlm KCAkbXNnLmlzKCAnOmhpZGRlbicgKSApeyAkbXNnLnNsaWRlRG93biggdGhpcy5meFNwZWVkICk7 IH0KICAgICB9LAo9MjAKIC8vVE9ETzogdGhpcyBzZWVtcyBtb3JlIGxpa2UgYSBwZXIgdXNlciBt ZXNzYWdlIHRoYW4gYSBoaXN0b3J5IG1lc3NhZ2UKICAgICAvKiogSGlkZSB0aGUgb3ZlciBxdW90 YSBtZXNzYWdlICh3aGljaCBoYXBwZW5zIHRvIGJlIGluIHRoZSBoaXN0b3J5IHBhPQpuZWwpLgog ICAgICAqLwogICAgIGhpZGVRdW90YU1lc3NhZ2UgOiBmdW5jdGlvbigpewotICAgICAgICB2YXIg bXNnID0zRCB0aGlzLiRlbC5maW5kKCAnLnF1b3RhLW1lc3NhZ2UnICk7Ci0gICAgICAgIC8vdGhp cy5sb2coIHRoaXMgKyAnIGhpZGluZyBxdW90YSBtZXNzYWdlOicsIG1zZywgdXNlckRhdGEgKTsK LSAgICAgICAgaWYoICFtc2cuaXMoICc6aGlkZGVuJyApICl7IG1zZy5zbGlkZVVwKCB0aGlzLmZ4 U3BlZWQgKTsgfQorICAgICAgICB2YXIgJG1zZyA9M0QgdGhpcy4kKCAnLnF1b3RhLW1lc3NhZ2Un ICk7CisgICAgICAgIGlmKCAhJG1zZy5pcyggJzpoaWRkZW4nICkgKXsgJG1zZy5zbGlkZVVwKCB0 aGlzLmZ4U3BlZWQgKTsgfQogICAgIH0sCj0yMAogICAgIC8qKiBSZXR1cm4gYSBzdHJpbmcgcmVw IG9mIHRoZSBoaXN0b3J5CgpkaWZmIC1yIDkzODAxZDZmYTdiZDMyYTgxZGUzOTcxMzc5NTMzMTJj Y2E3YTQzYTEgLXIgMzNmZDQzZjc1OTBmMTdlZDYxMWNlMDc9CjE3OGNhZThjMmI3MDUyNWQwIHN0 YXRpYy9zY3JpcHRzL212Yy9oaXN0b3J5L2hpc3RvcnktcGFuZWwuanMKLS0tIGEvc3RhdGljL3Nj cmlwdHMvbXZjL2hpc3RvcnkvaGlzdG9yeS1wYW5lbC5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9t dmMvaGlzdG9yeS9oaXN0b3J5LXBhbmVsLmpzCkBAIC0zODEsMTIgKzM4MSw5IEBACiAgICAgLyoq IGV2ZW50IG1hcCAqLwogICAgIGV2ZW50cyA6IF8uZXh0ZW5kKCBfLmNsb25lKCBfc3VwZXIucHJv dG90eXBlLmV2ZW50cyApLCB7CiAgICAgICAgIC8vIHRvZ2dsZSBsaXN0IGl0ZW0gc2VsZWN0b3Jz Ci0gICAgICAgICdjbGljayAuc2hvdy1zZWxlY3RvcnMtYnRuJyAgICAgICAgICAgICAgICAgOiAn dG9nZ2xlU2VsZWN0b3JzJworICAgICAgICAnY2xpY2sgLnNob3ctc2VsZWN0b3JzLWJ0bicgICAg ICAgICA6ICd0b2dnbGVTZWxlY3RvcnMnLAogICAgICAgICAvLyBhbGxvdyAoZXJyb3IpIG1lc3Nh Z2VzIHRvIGJlIGNsaWNrZWQgYXdheQotLy9UT0RPOiBzd2l0Y2ggdG8gY29tbW9uIGNsb3NlIChY KSBpZGlvbQotICAgICAgICAvLydjbGljayAubWVzc2FnZXMnICAgICAgICAgICAgICAgOiAnY2xl YXJNZXNzYWdlcycsCi0vL1RPRE86IHJlbW92ZQotICAgICAgICAvLydjbGljayAuaGlzdG9yeS1z ZWFyY2gtYnRuJyAgICAgOiAndG9nZ2xlU2VhcmNoQ29udHJvbHMnCisgICAgICAgICdjbGljayAu bWVzc2FnZXMgW2NsYXNzJD0zRG1lc3NhZ2VdJyAgOiAnY2xlYXJNZXNzYWdlcycKICAgICB9KSwK PTIwCiAgICAgLyoqIEhhbmRsZSB0aGUgdXNlciB0b2dnbGluZyB0aGUgZGVsZXRlZCB2aXNpYmls aXR5IGJ5OgpAQCAtNDU3LDE0ICs0NTQsMTQgQEAKICAgICAgKi8KICAgICBlcnJvckhhbmRsZXIg OiBmdW5jdGlvbiggbW9kZWwsIHhociwgb3B0aW9ucywgbXNnLCBkZXRhaWxzICl7CiAgICAgICAg IHRoaXMuZXJyb3IoIG1vZGVsLCB4aHIsIG9wdGlvbnMsIG1zZywgZGV0YWlscyApOwotLy9UT0RP OiBnZXR0aW5nIEpTT04gcGFyc2UgZXJyb3JzIGZyb20ganEgbWlncmF0ZQo9MjAKICAgICAgICAg Ly8gaW50ZXJydXB0ZWQgYWpheAogICAgICAgICBpZiggeGhyICYmIHhoci5zdGF0dXMgPTNEPTNE PTNEIDAgJiYgeGhyLnJlYWR5U3RhdGUgPTNEPTNEPTNEIDAgKXsKKyAgICAgICAgICAgIC8vVE9E TzogZ21haWwgc3R5bGUgJ3JldHJ5aW5nIGluIE5zJwo9MjAKICAgICAgICAgLy8gYmFkIGdhdGV3 YXkKICAgICAgICAgfSBlbHNlIGlmKCB4aHIgJiYgeGhyLnN0YXR1cyA9M0Q9M0Q9M0QgNTAyICl7 Ci0vL1RPRE86IGdtYWlsIHN0eWxlICdyZWNvbm5lY3RpbmcgaW4gTnMnCisgICAgICAgICAgICAv L1RPRE86IGdtYWlsIHN0eWxlICdyZXRyeWluZyBpbiBOcycKPTIwCiAgICAgICAgIC8vIG90aGVy d2lzZSwgc2hvdyBhbiBlcnJvciBtZXNzYWdlIGluc2lkZSB0aGUgcGFuZWwKICAgICAgICAgfSBl bHNlIHsKQEAgLTU1MSw3ICs1NDgsNyBAQAogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg ICAgJG1zZy5hcHBlbmQoICcgJywgJGRldGFpbHNMaW5rICk7CiAgICAgICAgIH0KLSAgICAgICAg cmV0dXJuICRtc2dDb250YWluZXIuaHRtbCggJG1zZyApOworICAgICAgICByZXR1cm4gJG1zZ0Nv bnRhaW5lci5hcHBlbmQoICRtc2cgKTsKICAgICB9LAo9MjAKICAgICAvKiogY29udmVydCBtc2cg YW5kIGRldGFpbHMgaW50byBtb2RhbCBvcHRpb25zIHVzYWJsZSBieSBHYWxheHkubW9kYWwgPQoq LwpAQCAtNTgyLDEwICs1NzksMTIgQEAKPTIwCiAgICAgLyoqIFJlbW92ZSBhbGwgbWVzc2FnZXMg ZnJvbSB0aGUgcGFuZWwuICovCiAgICAgY2xlYXJNZXNzYWdlcyA6IGZ1bmN0aW9uKCBldiApewot ICAgICAgICAkKCBldi5jdXJyZW50VGFyZ2V0ICkuZmFkZU91dCggdGhpcy5meFNwZWVkLCBmdW5j dGlvbigpeworICAgICAgICB2YXIgJHRhcmdldCA9M0QgIV8uaXNVbmRlZmluZWQoIGV2ICk/Cisg ICAgICAgICAgICAkKCBldi5jdXJyZW50VGFyZ2V0ICkKKyAgICAgICAgICAgIDp0aGlzLiRtZXNz YWdlcygpLmNoaWxkcmVuKCAnW2NsYXNzJD0zRCJtZXNzYWdlIl0nICk7CisgICAgICAgICR0YXJn ZXQuZmFkZU91dCggdGhpcy5meFNwZWVkLCBmdW5jdGlvbigpewogICAgICAgICAgICAgJCggdGhp cyApLnJlbW92ZSgpOwogICAgICAgICB9KTsKLSAgICAgICAgLy90aGlzLiRtZXNzYWdlcygpLmNo aWxkcmVuKCkubm90KCAnLnF1b3RhLW1lc3NhZ2UnICkucmVtb3ZlKCk7CiAgICAgICAgIHJldHVy biB0aGlzOwogICAgIH0sCj0yMAoKZGlmZiAtciA5MzgwMWQ2ZmE3YmQzMmE4MWRlMzk3MTM3OTUz MzEyY2NhN2E0M2ExIC1yIDMzZmQ0M2Y3NTkwZjE3ZWQ2MTFjZTA3PQoxNzhjYWU4YzJiNzA1MjVk MCBzdGF0aWMvc2NyaXB0cy9tdmMvbGlzdC9saXN0LXBhbmVsLmpzCi0tLSBhL3N0YXRpYy9zY3Jp cHRzL212Yy9saXN0L2xpc3QtcGFuZWwuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL2xpc3Qv bGlzdC1wYW5lbC5qcwpAQCAtMTE5LDYgKzExOSw4IEBACiAgICAgX3NldFVwTGlzdGVuZXJzIDog ZnVuY3Rpb24oKXsKICAgICAgICAgdGhpcy5vZmYoKTsKPTIwCisgICAgICAgIC8vVE9ETzogbW92 ZSBlcnJvckhhbmRsZXIgZG93biBpbnRvIGxpc3QtcGFuZWwgZnJvbSBoaXN0b3J5LXBhbmVsID0K b3IKKyAgICAgICAgLy8gIHBhc3MgdG8gZ2xvYmFsIGVycm9yIGhhbmRsZXIgKEdhbGF4eSkKICAg ICAgICAgdGhpcy5vbiggJ2Vycm9yJywgZnVuY3Rpb24oIG1vZGVsLCB4aHIsIG9wdGlvbnMsIG1z ZywgZGV0YWlscyApewogICAgICAgICAgICAgLy90aGlzLmVycm9ySGFuZGxlciggbW9kZWwsIHho ciwgb3B0aW9ucywgbXNnLCBkZXRhaWxzICk7CiAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCBt b2RlbCwgeGhyLCBvcHRpb25zLCBtc2csIGRldGFpbHMgKTsKCmRpZmYgLXIgOTM4MDFkNmZhN2Jk MzJhODFkZTM5NzEzNzk1MzMxMmNjYTdhNDNhMSAtciAzM2ZkNDNmNzU5MGYxN2VkNjExY2UwNz0K MTc4Y2FlOGMyYjcwNTI1ZDAgc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9oaXN0b3J5L2hpc3Rv cnktcGFuZWwtZWRpdC1jdXJyPQplbnQuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvcGFja2VkL212 Yy9oaXN0b3J5L2hpc3RvcnktcGFuZWwtZWRpdC1jdXJyZW50LmpzCisrKyBiL3N0YXRpYy9zY3Jp cHRzL3BhY2tlZC9tdmMvaGlzdG9yeS9oaXN0b3J5LXBhbmVsLWVkaXQtY3VycmVudC5qcwpAQCAt MSwxICsxLDEgQEAKLWRlZmluZShbIm12Yy9oaXN0b3J5L2hpc3RvcnktbW9kZWwiLCJtdmMvaGlz dG9yeS9oaXN0b3J5LXBhbmVsLWVkaXQiLCJtdmMvPQpjb2xsZWN0aW9uL2NvbGxlY3Rpb24tcGFu ZWwiLCJtdmMvYmFzZS1tdmMiLCJ1dGlscy9sb2NhbGl6YXRpb24iXSxmdW5jdGlvbig9CmQsYyxh LGgsYil7dmFyIGU9M0RoLlNlc3Npb25TdG9yYWdlTW9kZWwuZXh0ZW5kKHtkZWZhdWx0czp7dGFn c0VkaXRvclNob3duOj0KZmFsc2UsYW5ub3RhdGlvbkVkaXRvclNob3duOmZhbHNlLHNjcm9sbFBv c2l0aW9uOjB9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0PQp1cm4iSGlzdG9yeVBhbmVsUHJlZnMo IitKU09OLnN0cmluZ2lmeSh0aGlzLnRvSlNPTigpKSsiKSJ9fSk7ZS5zdG9yYWdlS2V5PQo9M0Rm dW5jdGlvbiBmKCl7cmV0dXJuKCJoaXN0b3J5LXBhbmVsIil9O3ZhciBnPTNEYy5IaXN0b3J5UGFu ZWxFZGl0O3ZhciBpPQo9M0RnLmV4dGVuZCh7Y2xhc3NOYW1lOmcucHJvdG90eXBlLmNsYXNzTmFt ZSsiIGN1cnJlbnQtaGlzdG9yeS1wYW5lbCIsZW1wdHk9Ck1zZzpiKCJUaGlzIGhpc3RvcnkgaXMg ZW1wdHkuIENsaWNrICdHZXQgRGF0YScgb24gdGhlIGxlZnQgdG9vbCBtZW51IHRvIHN0YT0KcnQi KSxub25lRm91bmRNc2c6YigiTm8gbWF0Y2hpbmcgZGF0YXNldHMgZm91bmQiKSxIRENBVmlld0Ns YXNzOmcucHJvdG90eXBlPQouSERDQVZpZXdDbGFzcy5leHRlbmQoe2ZvbGRvdXRTdHlsZToiZHJp bGxkb3duIn0pLGluaXRpYWxpemU6ZnVuY3Rpb24oail7aj0KPTNEanx8e307dGhpcy5wcmVmZXJl bmNlcz0zRG5ldyBlKF8uZXh0ZW5kKHtpZDplLnN0b3JhZ2VLZXkoKX0sXy5waWNrKGosXy5rPQpl eXMoZS5wcm90b3R5cGUuZGVmYXVsdHMpKSkpO2cucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0 aGlzLGopO3RoaXMucGFuZWw9ClN0YWNrPTNEW107dGhpcy5jdXJyZW50Q29udGVudElkPTNEai5j dXJyZW50Q29udGVudElkfHxudWxsfSxfc2V0VXBMaXN0ZW5lcj0KczpmdW5jdGlvbigpe2cucHJv dG90eXBlLl9zZXRVcExpc3RlbmVycy5jYWxsKHRoaXMpO3ZhciBqPTNEdGhpczt0aGlzLiRzY3Jv PQpsbENvbnRhaW5lcigpLm9uKCJzY3JvbGwiLGZ1bmN0aW9uKGspe2lmKGouJGVsLmlzKCI6dmlz aWJsZSIpKXtqLnByZWZlcmVuY2U9CnMuc2V0KCJzY3JvbGxQb3NpdGlvbiIsJCh0aGlzKS5zY3Jv bGxUb3AoKSl9fSk7dGhpcy5vbigibmV3LW1vZGVsIixmdW5jdGlvbj0KKCl7ai5wcmVmZXJlbmNl cy5zZXQoInNjcm9sbFBvc2l0aW9uIiwwKX0pfSxsb2FkQ3VycmVudEhpc3Rvcnk6ZnVuY3Rpb24o ayl7PQp0aGlzLmRlYnVnKHRoaXMrIi5sb2FkQ3VycmVudEhpc3RvcnkiKTt2YXIgaj0zRHRoaXM7 cmV0dXJuIHRoaXMubG9hZEhpc3Rvcnk9CldpdGhEZXRhaWxzKCJjdXJyZW50IixrKS50aGVuKGZ1 bmN0aW9uKG0sbCl7ai50cmlnZ2VyKCJjdXJyZW50LWhpc3RvcnkiLGopfT0KKX0sc3dpdGNoVG9I aXN0b3J5OmZ1bmN0aW9uKG0sbCl7dmFyIGo9M0R0aGlzLGs9M0RmdW5jdGlvbigpe3JldHVybiBq UXVlcnkuPQpnZXRKU09OKGdhbGF4eV9jb25maWcucm9vdCsiaGlzdG9yeS9zZXRfYXNfY3VycmVu dD9pZD0zRCIrbSl9O3JldHVybiB0aGlzLmw9Cm9hZEhpc3RvcnlXaXRoRGV0YWlscyhtLGwsayku dGhlbihmdW5jdGlvbihvLG4pe2oudHJpZ2dlcigic3dpdGNoZWQtaGlzdG9yeT0KIixqKX0pfSxj cmVhdGVOZXdIaXN0b3J5OmZ1bmN0aW9uKGwpe2lmKCFHYWxheHl8fCFHYWxheHkuY3VyclVzZXJ8 fEdhbGF4eS5jPQp1cnJVc2VyLmlzQW5vbnltb3VzKCkpe3RoaXMuZGlzcGxheU1lc3NhZ2UoImVy cm9yIixiKCJZb3UgbXVzdCBiZSBsb2dnZWQgaW49CiB0byBjcmVhdGUgaGlzdG9yaWVzIikpO3Jl dHVybiAkLndoZW4oKX12YXIgaj0zRHRoaXMsaz0zRGZ1bmN0aW9uKCl7cmV0dXJuID0KalF1ZXJ5 LmdldEpTT04oZ2FsYXh5X2NvbmZpZy5yb290KyJoaXN0b3J5L2NyZWF0ZV9uZXdfY3VycmVudCIp fTtyZXR1cm4gdGhpPQpzLmxvYWRIaXN0b3J5KHVuZGVmaW5lZCxsLGspLnRoZW4oZnVuY3Rpb24o bixtKXtqLnRyaWdnZXIoIm5ldy1oaXN0b3J5IixqKX09Cil9LHNldE1vZGVsOmZ1bmN0aW9uKGss aixsKXtnLnByb3RvdHlwZS5zZXRNb2RlbC5jYWxsKHRoaXMsayxqLGwpO2lmKHRoaXMubT0Kb2Rl bCl7dGhpcy5sb2coImNoZWNraW5nIGZvciB1cGRhdGVzIik7dGhpcy5tb2RlbC5jaGVja0ZvclVw ZGF0ZXMoKX1yZXR1cm4gPQp0aGlzfSxfc2V0VXBDb2xsZWN0aW9uTGlzdGVuZXJzOmZ1bmN0aW9u KCl7Zy5wcm90b3R5cGUuX3NldFVwQ29sbGVjdGlvbkxpc3Q9CmVuZXJzLmNhbGwodGhpcyk7dGhp cy5jb2xsZWN0aW9uLm9uKCJzdGF0ZTpyZWFkeSIsZnVuY3Rpb24oayxsLGope2lmKCghay5nZT0K dCgidmlzaWJsZSIpKSYmKCF0aGlzLnN0b3JhZ2UuZ2V0KCJzaG93X2hpZGRlbiIpKSl7dGhpcy5y ZW1vdmVJdGVtVmlldyhrKX19PQosdGhpcyl9LF9zZXRVcE1vZGVsTGlzdGVuZXJzOmZ1bmN0aW9u KCl7Zy5wcm90b3R5cGUuX3NldFVwTW9kZWxMaXN0ZW5lcnMuY2E9CmxsKHRoaXMpO2lmKEdhbGF4 eSYmR2FsYXh5LnF1b3RhTWV0ZXIpe3RoaXMubGlzdGVuVG8odGhpcy5tb2RlbCwiY2hhbmdlOm5p Yz0KZV9zaXplIixmdW5jdGlvbigpe0dhbGF4eS5xdW90YU1ldGVyLnVwZGF0ZSgpfSl9fSxfYnVp bGROZXdSZW5kZXI6ZnVuY3Rpb24oPQope2lmKCF0aGlzLm1vZGVsKXtyZXR1cm4gJCgpfXZhciBq PTNEZy5wcm90b3R5cGUuX2J1aWxkTmV3UmVuZGVyLmNhbGwodGhpcyk9CjtqLmZpbmQoIi5zZWFy Y2giKS5wcmVwZW5kVG8oai5maW5kKCIuY29udHJvbHMiKSk7dGhpcy5fcmVuZGVyUXVvdGFNZXNz YWdlKD0Kaik7cmV0dXJuIGp9LF9yZW5kZXJRdW90YU1lc3NhZ2U6ZnVuY3Rpb24oail7aj0zRGp8 fHRoaXMuJGVsO3JldHVybiAkKHRoaXMuPQp0ZW1wbGF0ZXMucXVvdGFNc2coe30sdGhpcykpLnBy ZXBlbmRUbyhqLmZpbmQoIi5tZXNzYWdlcyIpKX0sX3JlbmRlckVtcHR5TWU9CnNzYWdlOmZ1bmN0 aW9uKGwpe3ZhciBrPTNEdGhpcyxqPTNEay4kZW1wdHlNZXNzYWdlKGwpLG09M0QkKCIudG9vbE1l bnVDb250YT0KaW5lciIpO2lmKChfLmlzRW1wdHkoay52aWV3cykmJiFrLnNlYXJjaEZvcikmJihH YWxheHkmJkdhbGF4eS51cGxvYWQmJm0uc2l6PQplKCkpKXtqLmVtcHR5KCk7ai5odG1sKFtiKCJU aGlzIGhpc3RvcnkgaXMgZW1wdHkiKSwiLiAiLGIoIllvdSBjYW4gIiksJzxhIGM9Cmxhc3M9M0Qi dXBsb2FkZXItbGluayIgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCkiPicsYigibG9hZCB5b3Vy IG93biBkYXRhIj0KKSwiPC9hPiIsYigiIG9yICIpLCc8YSBjbGFzcz0zRCJnZXQtZGF0YS1saW5r IiBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKSI+PQonLGIoImdldCBkYXRhIGZyb20gYW4gZXh0 ZXJuYWwgc291cmNlIiksIjwvYT4iXS5qb2luKCIiKSk7ai5maW5kKCIudXBsb2FkZXI9Ci1saW5r IikuY2xpY2soZnVuY3Rpb24obil7R2FsYXh5LnVwbG9hZC5zaG93KG4pfSk7ai5maW5kKCIuZ2V0 LWRhdGEtbGluayIpLj0KY2xpY2soZnVuY3Rpb24obil7bS5wYXJlbnQoKS5zY3JvbGxUb3AoMCk7 bS5maW5kKCdzcGFuOmNvbnRhaW5zKCJHZXQgRGF0YSIpPQonKS5jbGljaygpfSk7cmV0dXJuIGou c2hvdygpfXJldHVybiBnLnByb3RvdHlwZS5fcmVuZGVyRW1wdHlNZXNzYWdlLmNhbGwodGg9Cmlz LGwpfSxfcmVuZGVyVGFnczpmdW5jdGlvbihqKXt2YXIgaz0zRHRoaXM7Zy5wcm90b3R5cGUuX3Jl bmRlclRhZ3MuY2FsbCh0aD0KaXMsaik7aWYodGhpcy5wcmVmZXJlbmNlcy5nZXQoInRhZ3NFZGl0 b3JTaG93biIpKXt0aGlzLnRhZ3NFZGl0b3IudG9nZ2xlKHRyPQp1ZSl9dGhpcy50YWdzRWRpdG9y Lm9uKCJoaWRkZW5VbnRpbEFjdGl2YXRlZDpzaG93biBoaWRkZW5VbnRpbEFjdGl2YXRlZDpoaWQ9 CmRlbiIsZnVuY3Rpb24obCl7ay5wcmVmZXJlbmNlcy5zZXQoInRhZ3NFZGl0b3JTaG93biIsbC5o aWRkZW4pfSl9LF9yZW5kZXJBbj0Kbm90YXRpb246ZnVuY3Rpb24oail7dmFyIGs9M0R0aGlzO2cu cHJvdG90eXBlLl9yZW5kZXJBbm5vdGF0aW9uLmNhbGwodGhpcyxqPQopO2lmKHRoaXMucHJlZmVy ZW5jZXMuZ2V0KCJhbm5vdGF0aW9uRWRpdG9yU2hvd24iKSl7dGhpcy5hbm5vdGF0aW9uRWRpdG9y LnQ9Cm9nZ2xlKHRydWUpfXRoaXMuYW5ub3RhdGlvbkVkaXRvci5vbigiaGlkZGVuVW50aWxBY3Rp dmF0ZWQ6c2hvd24gaGlkZGVuVW50aT0KbEFjdGl2YXRlZDpoaWRkZW4iLGZ1bmN0aW9uKGwpe2su cHJlZmVyZW5jZXMuc2V0KCJhbm5vdGF0aW9uRWRpdG9yU2hvd24iLGwuPQpoaWRkZW4pfSl9LF9z d2FwTmV3UmVuZGVyOmZ1bmN0aW9uKGspe2cucHJvdG90eXBlLl9zd2FwTmV3UmVuZGVyLmNhbGwo dGhpcyw9CmspO3ZhciBqPTNEdGhpcztfLmRlbGF5KGZ1bmN0aW9uKCl7dmFyIGw9M0RqLnByZWZl cmVuY2VzLmdldCgic2Nyb2xsUG9zaXRpbz0KbiIpO2lmKGwpe2ouc2Nyb2xsVG8obCl9fSwxMCk7 cmV0dXJuIHRoaXN9LF9hdHRhY2hJdGVtczpmdW5jdGlvbihrKXtnLnByb3RvPQp0eXBlLl9hdHRh Y2hJdGVtcy5jYWxsKHRoaXMsayk7dmFyIGo9M0R0aGlzLGw7aWYoai5jdXJyZW50Q29udGVudElk JiYobD0zRGo9Ci52aWV3RnJvbU1vZGVsSWQoai5jdXJyZW50Q29udGVudElkKSkpe2ouc2V0Q3Vy cmVudENvbnRlbnQobCl9cmV0dXJuIHRoaXN9LD0KYWRkSXRlbVZpZXc6ZnVuY3Rpb24obCxtLGsp e3ZhciBqPTNEZy5wcm90b3R5cGUuYWRkSXRlbVZpZXcuY2FsbCh0aGlzLGwsbSxrPQopO2lmKCFq KXtyZXR1cm4gan1pZih0aGlzLnBhbmVsU3RhY2subGVuZ3RoKXtyZXR1cm4gdGhpcy5fY29sbGFw c2VEcmlsbGRvd249ClBhbmVsKCl9cmV0dXJuIGp9LF9zZXRVcEl0ZW1WaWV3TGlzdGVuZXJzOmZ1 bmN0aW9uKGspe3ZhciBqPTNEdGhpcztnLnByb3RvdD0KeXBlLl9zZXRVcEl0ZW1WaWV3TGlzdGVu ZXJzLmNhbGwoaixrKTtrLm9uKCJleHBhbmRlZDpkcmlsbGRvd24iLGZ1bmN0aW9uKG0sPQpsKXt0 aGlzLl9leHBhbmREcmlsbGRvd25QYW5lbChsKX0sdGhpcyk7ay5vbigiY29sbGFwc2VkOmRyaWxs ZG93biIsZnVuY3Rpb249CihtLGwpe3RoaXMuX2NvbGxhcHNlRHJpbGxkb3duUGFuZWwobCl9LHRo aXMpO2sub24oImRpc3BsYXkgZWRpdCBwYXJhbXMgcmVydT0KbiByZXBvcnQtZXJyIHZpc3VhbGl6 ZSIsZnVuY3Rpb24obCxtKXt0aGlzLnNldEN1cnJlbnRDb250ZW50KGwpfSx0aGlzKTtyZXR1PQpy biB0aGlzfSxzZXRDdXJyZW50Q29udGVudDpmdW5jdGlvbihqKXt0aGlzLiQoIi5oaXN0b3J5LWNv bnRlbnQuY3VycmVudC1jb249CnRlbnQiKS5yZW1vdmVDbGFzcygiY3VycmVudC1jb250ZW50Iik7 aWYoail7ai4kZWwuYWRkQ2xhc3MoImN1cnJlbnQtY29udGVudD0KIik7dGhpcy5jdXJyZW50Q29u dGVudElkPTNEai5tb2RlbC5pZH1lbHNle3RoaXMuY3VycmVudENvbnRlbnRJZD0zRG51bGx9fSxf PQpleHBhbmREcmlsbGRvd25QYW5lbDpmdW5jdGlvbihqKXt0aGlzLnBhbmVsU3RhY2sucHVzaChq KTt0aGlzLiQoIj4gLmNvbnRyb2w9CnMiKS5hZGQodGhpcy4kbGlzdCgpKS5oaWRlKCk7ai5wYXJl bnROYW1lPTNEdGhpcy5tb2RlbC5nZXQoIm5hbWUiKTt0aGlzLiRlbD0KLmFwcGVuZChqLnJlbmRl cigpLiRlbCl9LF9jb2xsYXBzZURyaWxsZG93blBhbmVsOmZ1bmN0aW9uKGope3RoaXMucGFuZWxT dGFjPQprLnBvcCgpO3RoaXMucmVuZGVyKCl9LGNvbm5lY3RUb1F1b3RhTWV0ZXI6ZnVuY3Rpb24o ail7aWYoIWope3JldHVybiB0aGlzfXQ9Cmhpcy5saXN0ZW5UbyhqLCJxdW90YTpvdmVyIix0aGlz LnNob3dRdW90YU1lc3NhZ2UpO3RoaXMubGlzdGVuVG8oaiwicXVvdGE6dT0KbmRlciIsdGhpcy5o aWRlUXVvdGFNZXNzYWdlKTt0aGlzLm9uKCJyZW5kZXJlZCByZW5kZXJlZDppbml0aWFsIixmdW5j dGlvbigpPQp7aWYoaiYmai5pc092ZXJRdW90YSgpKXt0aGlzLnNob3dRdW90YU1lc3NhZ2UoKX19 KTtyZXR1cm4gdGhpc30sc2hvd1F1b3RhTWU9CnNzYWdlOmZ1bmN0aW9uKCl7dmFyIGo9M0R0aGlz LiRlbC5maW5kKCIucXVvdGEtbWVzc2FnZSIpO2lmKGouaXMoIjpoaWRkZW4iKT0KKXtqLnNsaWRl RG93bih0aGlzLmZ4U3BlZWQpfX0saGlkZVF1b3RhTWVzc2FnZTpmdW5jdGlvbigpe3ZhciBqPTNE dGhpcy4kZWwuPQpmaW5kKCIucXVvdGEtbWVzc2FnZSIpO2lmKCFqLmlzKCI6aGlkZGVuIikpe2ou c2xpZGVVcCh0aGlzLmZ4U3BlZWQpfX0sdG9TdHI9CmluZzpmdW5jdGlvbigpe3JldHVybiJDdXJy ZW50SGlzdG9yeVBhbmVsKCIrKCh0aGlzLm1vZGVsKT8odGhpcy5tb2RlbC5nZXQoIj0KbmFtZSIp KTooIiIpKSsiKSJ9fSk7aS5wcm90b3R5cGUudGVtcGxhdGVzPTNEKGZ1bmN0aW9uKCl7dmFyIGo9 M0RoLndyYXBUZW1wPQpsYXRlKFsnPGRpdiBjbGFzcz0zRCJxdW90YS1tZXNzYWdlIGVycm9ybWVz c2FnZSI+JyxiKCJZb3UgYXJlIG92ZXIgeW91ciBkaXM9CmsgcXVvdGEiKSwiLiAiLGIoIlRvb2wg ZXhlY3V0aW9uIGlzIG9uIGhvbGQgdW50aWwgeW91ciBkaXNrIHVzYWdlIGRyb3BzIGJlbD0Kb3cg eW91ciBhbGxvY2F0ZWQgcXVvdGEiKSwiLiIsIjwvZGl2PiJdLCJoaXN0b3J5Iik7cmV0dXJuIF8u ZXh0ZW5kKF8uY2xvbmUoPQpnLnByb3RvdHlwZS50ZW1wbGF0ZXMpLHtxdW90YU1zZzpqfSl9KCkp O3JldHVybntDdXJyZW50SGlzdG9yeVBhbmVsOml9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQorZGVmaW5lKFsibXZjL2hpc3RvcnkvaGlzdG9yeS1tb2RlbCIsIm12Yy9oaXN0b3J5L2hp c3RvcnktcGFuZWwtZWRpdCIsIm12Yy89CmNvbGxlY3Rpb24vY29sbGVjdGlvbi1wYW5lbCIsIm12 Yy9iYXNlLW12YyIsInV0aWxzL2xvY2FsaXphdGlvbiJdLGZ1bmN0aW9uKD0KZCxjLGEsaCxiKXt2 YXIgZT0zRGguU2Vzc2lvblN0b3JhZ2VNb2RlbC5leHRlbmQoe2RlZmF1bHRzOnt0YWdzRWRpdG9y U2hvd246PQpmYWxzZSxhbm5vdGF0aW9uRWRpdG9yU2hvd246ZmFsc2Usc2Nyb2xsUG9zaXRpb246 MH0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXQ9CnVybiJIaXN0b3J5UGFuZWxQcmVmcygiK0pTT04u c3RyaW5naWZ5KHRoaXMudG9KU09OKCkpKyIpIn19KTtlLnN0b3JhZ2VLZXk9Cj0zRGZ1bmN0aW9u IGYoKXtyZXR1cm4oImhpc3RvcnktcGFuZWwiKX07dmFyIGc9M0RjLkhpc3RvcnlQYW5lbEVkaXQ7 dmFyIGk9Cj0zRGcuZXh0ZW5kKHtjbGFzc05hbWU6Zy5wcm90b3R5cGUuY2xhc3NOYW1lKyIgY3Vy cmVudC1oaXN0b3J5LXBhbmVsIixlbXB0eT0KTXNnOmIoIlRoaXMgaGlzdG9yeSBpcyBlbXB0eS4g Q2xpY2sgJ0dldCBEYXRhJyBvbiB0aGUgbGVmdCB0b29sIG1lbnUgdG8gc3RhPQpydCIpLG5vbmVG b3VuZE1zZzpiKCJObyBtYXRjaGluZyBkYXRhc2V0cyBmb3VuZCIpLEhEQ0FWaWV3Q2xhc3M6Zy5w cm90b3R5cGU9Ci5IRENBVmlld0NsYXNzLmV4dGVuZCh7Zm9sZG91dFN0eWxlOiJkcmlsbGRvd24i fSksaW5pdGlhbGl6ZTpmdW5jdGlvbihqKXtqPQo9M0RqfHx7fTt0aGlzLnByZWZlcmVuY2VzPTNE bmV3IGUoXy5leHRlbmQoe2lkOmUuc3RvcmFnZUtleSgpfSxfLnBpY2soaixfLms9CmV5cyhlLnBy b3RvdHlwZS5kZWZhdWx0cykpKSk7Zy5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsaik7 dGhpcy5wYW5lbD0KU3RhY2s9M0RbXTt0aGlzLmN1cnJlbnRDb250ZW50SWQ9M0RqLmN1cnJlbnRD b250ZW50SWR8fG51bGx9LF9zZXRVcExpc3RlbmVyPQpzOmZ1bmN0aW9uKCl7Zy5wcm90b3R5cGUu X3NldFVwTGlzdGVuZXJzLmNhbGwodGhpcyk7dmFyIGo9M0R0aGlzO3RoaXMuJHNjcm89CmxsQ29u dGFpbmVyKCkub24oInNjcm9sbCIsZnVuY3Rpb24oayl7aWYoai4kZWwuaXMoIjp2aXNpYmxlIikp e2oucHJlZmVyZW5jZT0Kcy5zZXQoInNjcm9sbFBvc2l0aW9uIiwkKHRoaXMpLnNjcm9sbFRvcCgp KX19KTt0aGlzLm9uKCJuZXctbW9kZWwiLGZ1bmN0aW9uPQooKXtqLnByZWZlcmVuY2VzLnNldCgi c2Nyb2xsUG9zaXRpb24iLDApfSl9LGxvYWRDdXJyZW50SGlzdG9yeTpmdW5jdGlvbihrKXs9CnRo aXMuZGVidWcodGhpcysiLmxvYWRDdXJyZW50SGlzdG9yeSIpO3ZhciBqPTNEdGhpcztyZXR1cm4g dGhpcy5sb2FkSGlzdG9yeT0KV2l0aERldGFpbHMoImN1cnJlbnQiLGspLnRoZW4oZnVuY3Rpb24o bSxsKXtqLnRyaWdnZXIoImN1cnJlbnQtaGlzdG9yeSIsail9PQopfSxzd2l0Y2hUb0hpc3Rvcnk6 ZnVuY3Rpb24obSxsKXt2YXIgaj0zRHRoaXMsaz0zRGZ1bmN0aW9uKCl7cmV0dXJuIGpRdWVyeS49 CmdldEpTT04oZ2FsYXh5X2NvbmZpZy5yb290KyJoaXN0b3J5L3NldF9hc19jdXJyZW50P2lkPTNE IittKX07cmV0dXJuIHRoaXMubD0Kb2FkSGlzdG9yeVdpdGhEZXRhaWxzKG0sbCxrKS50aGVuKGZ1 bmN0aW9uKG8sbil7ai50cmlnZ2VyKCJzd2l0Y2hlZC1oaXN0b3J5PQoiLGopfSl9LGNyZWF0ZU5l d0hpc3Rvcnk6ZnVuY3Rpb24obCl7aWYoIUdhbGF4eXx8IUdhbGF4eS5jdXJyVXNlcnx8R2FsYXh5 LmM9CnVyclVzZXIuaXNBbm9ueW1vdXMoKSl7dGhpcy5kaXNwbGF5TWVzc2FnZSgiZXJyb3IiLGIo IllvdSBtdXN0IGJlIGxvZ2dlZCBpbj0KIHRvIGNyZWF0ZSBoaXN0b3JpZXMiKSk7cmV0dXJuICQu d2hlbigpfXZhciBqPTNEdGhpcyxrPTNEZnVuY3Rpb24oKXtyZXR1cm4gPQpqUXVlcnkuZ2V0SlNP TihnYWxheHlfY29uZmlnLnJvb3QrImhpc3RvcnkvY3JlYXRlX25ld19jdXJyZW50Iil9O3JldHVy biB0aGk9CnMubG9hZEhpc3RvcnkodW5kZWZpbmVkLGwsaykudGhlbihmdW5jdGlvbihuLG0pe2ou dHJpZ2dlcigibmV3LWhpc3RvcnkiLGopfT0KKX0sc2V0TW9kZWw6ZnVuY3Rpb24oayxqLGwpe2cu cHJvdG90eXBlLnNldE1vZGVsLmNhbGwodGhpcyxrLGosbCk7aWYodGhpcy5tPQpvZGVsKXt0aGlz LmxvZygiY2hlY2tpbmcgZm9yIHVwZGF0ZXMiKTt0aGlzLm1vZGVsLmNoZWNrRm9yVXBkYXRlcygp fXJldHVybiA9CnRoaXN9LF9zZXRVcENvbGxlY3Rpb25MaXN0ZW5lcnM6ZnVuY3Rpb24oKXtnLnBy b3RvdHlwZS5fc2V0VXBDb2xsZWN0aW9uTGlzdD0KZW5lcnMuY2FsbCh0aGlzKTt0aGlzLmNvbGxl Y3Rpb24ub24oInN0YXRlOnJlYWR5IixmdW5jdGlvbihrLGwsail7aWYoKCFrLmdlPQp0KCJ2aXNp YmxlIikpJiYoIXRoaXMuc3RvcmFnZS5nZXQoInNob3dfaGlkZGVuIikpKXt0aGlzLnJlbW92ZUl0 ZW1WaWV3KGspfX09Cix0aGlzKX0sX3NldFVwTW9kZWxMaXN0ZW5lcnM6ZnVuY3Rpb24oKXtnLnBy b3RvdHlwZS5fc2V0VXBNb2RlbExpc3RlbmVycy5jYT0KbGwodGhpcyk7aWYoR2FsYXh5JiZHYWxh eHkucXVvdGFNZXRlcil7dGhpcy5saXN0ZW5Ubyh0aGlzLm1vZGVsLCJjaGFuZ2U6bmljPQplX3Np emUiLGZ1bmN0aW9uKCl7R2FsYXh5LnF1b3RhTWV0ZXIudXBkYXRlKCl9KX19LF9idWlsZE5ld1Jl bmRlcjpmdW5jdGlvbig9Cil7aWYoIXRoaXMubW9kZWwpe3JldHVybiAkKCl9dmFyIGo9M0RnLnBy b3RvdHlwZS5fYnVpbGROZXdSZW5kZXIuY2FsbCh0aGlzKT0KO2ouZmluZCgiLnNlYXJjaCIpLnBy ZXBlbmRUbyhqLmZpbmQoIi5jb250cm9scyIpKTt0aGlzLl9yZW5kZXJRdW90YU1lc3NhZ2UoPQpq KTtyZXR1cm4gan0sX3JlbmRlclF1b3RhTWVzc2FnZTpmdW5jdGlvbihqKXtqPTNEanx8dGhpcy4k ZWw7cmV0dXJuICQodGhpcy49CnRlbXBsYXRlcy5xdW90YU1zZyh7fSx0aGlzKSkucHJlcGVuZFRv KGouZmluZCgiLm1lc3NhZ2VzIikpfSxfcmVuZGVyRW1wdHlNZT0Kc3NhZ2U6ZnVuY3Rpb24obCl7 dmFyIGs9M0R0aGlzLGo9M0RrLiRlbXB0eU1lc3NhZ2UobCksbT0zRCQoIi50b29sTWVudUNvbnRh PQppbmVyIik7aWYoKF8uaXNFbXB0eShrLnZpZXdzKSYmIWsuc2VhcmNoRm9yKSYmKEdhbGF4eSYm R2FsYXh5LnVwbG9hZCYmbS5zaXo9CmUoKSkpe2ouZW1wdHkoKTtqLmh0bWwoW2IoIlRoaXMgaGlz dG9yeSBpcyBlbXB0eSIpLCIuICIsYigiWW91IGNhbiAiKSwnPGEgYz0KbGFzcz0zRCJ1cGxvYWRl ci1saW5rIiBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKSI+JyxiKCJsb2FkIHlvdXIgb3duIGRh dGEiPQopLCI8L2E+IixiKCIgb3IgIiksJzxhIGNsYXNzPTNEImdldC1kYXRhLWxpbmsiIGhyZWY9 M0QiamF2YXNjcmlwdDp2b2lkKDApIj49CicsYigiZ2V0IGRhdGEgZnJvbSBhbiBleHRlcm5hbCBz b3VyY2UiKSwiPC9hPiJdLmpvaW4oIiIpKTtqLmZpbmQoIi51cGxvYWRlcj0KLWxpbmsiKS5jbGlj ayhmdW5jdGlvbihuKXtHYWxheHkudXBsb2FkLnNob3cobil9KTtqLmZpbmQoIi5nZXQtZGF0YS1s aW5rIikuPQpjbGljayhmdW5jdGlvbihuKXttLnBhcmVudCgpLnNjcm9sbFRvcCgwKTttLmZpbmQo J3NwYW46Y29udGFpbnMoIkdldCBEYXRhIik9CicpLmNsaWNrKCl9KTtyZXR1cm4gai5zaG93KCl9 cmV0dXJuIGcucHJvdG90eXBlLl9yZW5kZXJFbXB0eU1lc3NhZ2UuY2FsbCh0aD0KaXMsbCl9LF9y ZW5kZXJUYWdzOmZ1bmN0aW9uKGope3ZhciBrPTNEdGhpcztnLnByb3RvdHlwZS5fcmVuZGVyVGFn cy5jYWxsKHRoPQppcyxqKTtpZih0aGlzLnByZWZlcmVuY2VzLmdldCgidGFnc0VkaXRvclNob3du Iikpe3RoaXMudGFnc0VkaXRvci50b2dnbGUodHI9CnVlKX10aGlzLnRhZ3NFZGl0b3Iub24oImhp ZGRlblVudGlsQWN0aXZhdGVkOnNob3duIGhpZGRlblVudGlsQWN0aXZhdGVkOmhpZD0KZGVuIixm dW5jdGlvbihsKXtrLnByZWZlcmVuY2VzLnNldCgidGFnc0VkaXRvclNob3duIixsLmhpZGRlbil9 KX0sX3JlbmRlckFuPQpub3RhdGlvbjpmdW5jdGlvbihqKXt2YXIgaz0zRHRoaXM7Zy5wcm90b3R5 cGUuX3JlbmRlckFubm90YXRpb24uY2FsbCh0aGlzLGo9Cik7aWYodGhpcy5wcmVmZXJlbmNlcy5n ZXQoImFubm90YXRpb25FZGl0b3JTaG93biIpKXt0aGlzLmFubm90YXRpb25FZGl0b3IudD0Kb2dn bGUodHJ1ZSl9dGhpcy5hbm5vdGF0aW9uRWRpdG9yLm9uKCJoaWRkZW5VbnRpbEFjdGl2YXRlZDpz aG93biBoaWRkZW5VbnRpPQpsQWN0aXZhdGVkOmhpZGRlbiIsZnVuY3Rpb24obCl7ay5wcmVmZXJl bmNlcy5zZXQoImFubm90YXRpb25FZGl0b3JTaG93biIsbC49CmhpZGRlbil9KX0sX3N3YXBOZXdS ZW5kZXI6ZnVuY3Rpb24oayl7Zy5wcm90b3R5cGUuX3N3YXBOZXdSZW5kZXIuY2FsbCh0aGlzLD0K ayk7dmFyIGo9M0R0aGlzO18uZGVsYXkoZnVuY3Rpb24oKXt2YXIgbD0zRGoucHJlZmVyZW5jZXMu Z2V0KCJzY3JvbGxQb3NpdGlvPQpuIik7aWYobCl7ai5zY3JvbGxUbyhsKX19LDEwKTtyZXR1cm4g dGhpc30sX2F0dGFjaEl0ZW1zOmZ1bmN0aW9uKGspe2cucHJvdG89CnR5cGUuX2F0dGFjaEl0ZW1z LmNhbGwodGhpcyxrKTt2YXIgaj0zRHRoaXMsbDtpZihqLmN1cnJlbnRDb250ZW50SWQmJihsPTNE aj0KLnZpZXdGcm9tTW9kZWxJZChqLmN1cnJlbnRDb250ZW50SWQpKSl7ai5zZXRDdXJyZW50Q29u dGVudChsKX1yZXR1cm4gdGhpc30sPQphZGRJdGVtVmlldzpmdW5jdGlvbihsLG0sayl7dmFyIGo9 M0RnLnByb3RvdHlwZS5hZGRJdGVtVmlldy5jYWxsKHRoaXMsbCxtLGs9Cik7aWYoIWope3JldHVy biBqfWlmKHRoaXMucGFuZWxTdGFjay5sZW5ndGgpe3JldHVybiB0aGlzLl9jb2xsYXBzZURyaWxs ZG93bj0KUGFuZWwoKX1yZXR1cm4gan0sX3NldFVwSXRlbVZpZXdMaXN0ZW5lcnM6ZnVuY3Rpb24o ayl7dmFyIGo9M0R0aGlzO2cucHJvdG90PQp5cGUuX3NldFVwSXRlbVZpZXdMaXN0ZW5lcnMuY2Fs bChqLGspO2sub24oImV4cGFuZGVkOmRyaWxsZG93biIsZnVuY3Rpb24obSw9Cmwpe3RoaXMuX2V4 cGFuZERyaWxsZG93blBhbmVsKGwpfSx0aGlzKTtrLm9uKCJjb2xsYXBzZWQ6ZHJpbGxkb3duIixm dW5jdGlvbj0KKG0sbCl7dGhpcy5fY29sbGFwc2VEcmlsbGRvd25QYW5lbChsKX0sdGhpcyk7ay5v bigiZGlzcGxheSBlZGl0IHBhcmFtcyByZXJ1PQpuIHJlcG9ydC1lcnIgdmlzdWFsaXplIixmdW5j dGlvbihsLG0pe3RoaXMuc2V0Q3VycmVudENvbnRlbnQobCl9LHRoaXMpO3JldHU9CnJuIHRoaXN9 LHNldEN1cnJlbnRDb250ZW50OmZ1bmN0aW9uKGope3RoaXMuJCgiLmhpc3RvcnktY29udGVudC5j dXJyZW50LWNvbj0KdGVudCIpLnJlbW92ZUNsYXNzKCJjdXJyZW50LWNvbnRlbnQiKTtpZihqKXtq LiRlbC5hZGRDbGFzcygiY3VycmVudC1jb250ZW50PQoiKTt0aGlzLmN1cnJlbnRDb250ZW50SWQ9 M0RqLm1vZGVsLmlkfWVsc2V7dGhpcy5jdXJyZW50Q29udGVudElkPTNEbnVsbH19LF89CmV4cGFu ZERyaWxsZG93blBhbmVsOmZ1bmN0aW9uKGope3RoaXMucGFuZWxTdGFjay5wdXNoKGopO3RoaXMu JCgiPiAuY29udHJvbD0KcyIpLmFkZCh0aGlzLiRsaXN0KCkpLmhpZGUoKTtqLnBhcmVudE5hbWU9 M0R0aGlzLm1vZGVsLmdldCgibmFtZSIpO3RoaXMuJGVsPQouYXBwZW5kKGoucmVuZGVyKCkuJGVs KX0sX2NvbGxhcHNlRHJpbGxkb3duUGFuZWw6ZnVuY3Rpb24oail7dGhpcy5wYW5lbFN0YWM9Cmsu cG9wKCk7dGhpcy5yZW5kZXIoKX0sY29ubmVjdFRvUXVvdGFNZXRlcjpmdW5jdGlvbihqKXtpZigh ail7cmV0dXJuIHRoaXN9dD0KaGlzLmxpc3RlblRvKGosInF1b3RhOm92ZXIiLHRoaXMuc2hvd1F1 b3RhTWVzc2FnZSk7dGhpcy5saXN0ZW5UbyhqLCJxdW90YTp1PQpuZGVyIix0aGlzLmhpZGVRdW90 YU1lc3NhZ2UpO3RoaXMub24oInJlbmRlcmVkIHJlbmRlcmVkOmluaXRpYWwiLGZ1bmN0aW9uKCk9 CntpZihqJiZqLmlzT3ZlclF1b3RhKCkpe3RoaXMuc2hvd1F1b3RhTWVzc2FnZSgpfX0pO3JldHVy biB0aGlzfSxjbGVhck1lc3NhZz0KZXM6ZnVuY3Rpb24oayl7dmFyIGo9M0QhXy5pc1VuZGVmaW5l ZChrKT8kKGsuY3VycmVudFRhcmdldCk6dGhpcy4kbWVzc2FnZXMoPQopLmNoaWxkcmVuKCdbY2xh c3MkPTNEIm1lc3NhZ2UiXScpO2o9M0RqLm5vdCgiLnF1b3RhLW1lc3NhZ2UiKTtqLmZhZGVPdXQo dGg9CmlzLmZ4U3BlZWQsZnVuY3Rpb24oKXskKHRoaXMpLnJlbW92ZSgpfSk7cmV0dXJuIHRoaXN9 LHNob3dRdW90YU1lc3NhZ2U6ZnVuYz0KdGlvbigpe3ZhciBqPTNEdGhpcy4kKCIucXVvdGEtbWVz c2FnZSIpO2lmKGouaXMoIjpoaWRkZW4iKSl7ai5zbGlkZURvd24odGhpPQpzLmZ4U3BlZWQpfX0s aGlkZVF1b3RhTWVzc2FnZTpmdW5jdGlvbigpe3ZhciBqPTNEdGhpcy4kKCIucXVvdGEtbWVzc2Fn ZSIpO2k9CmYoIWouaXMoIjpoaWRkZW4iKSl7ai5zbGlkZVVwKHRoaXMuZnhTcGVlZCl9fSx0b1N0 cmluZzpmdW5jdGlvbigpe3JldHVybiJDdT0KcnJlbnRIaXN0b3J5UGFuZWwoIisoKHRoaXMubW9k ZWwpPyh0aGlzLm1vZGVsLmdldCgibmFtZSIpKTooIiIpKSsiKSJ9fSk7aS5wPQpyb3RvdHlwZS50 ZW1wbGF0ZXM9M0QoZnVuY3Rpb24oKXt2YXIgaj0zRGgud3JhcFRlbXBsYXRlKFsnPGRpdiBjbGFz cz0zRCJxdW89CnRhLW1lc3NhZ2UgZXJyb3JtZXNzYWdlIj4nLGIoIllvdSBhcmUgb3ZlciB5b3Vy IGRpc2sgcXVvdGEiKSwiLiAiLGIoIlRvb2wgZT0KeGVjdXRpb24gaXMgb24gaG9sZCB1bnRpbCB5 b3VyIGRpc2sgdXNhZ2UgZHJvcHMgYmVsb3cgeW91ciBhbGxvY2F0ZWQgcXVvdGEiPQopLCIuIiwi PC9kaXY+Il0sImhpc3RvcnkiKTtyZXR1cm4gXy5leHRlbmQoXy5jbG9uZShnLnByb3RvdHlwZS50 ZW1wbGF0ZXMpLHs9CnF1b3RhTXNnOmp9KX0oKSk7cmV0dXJue0N1cnJlbnRIaXN0b3J5UGFuZWw6 aX19KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1yIDkzODAxZDZmYTdiZDMy YTgxZGUzOTcxMzc5NTMzMTJjY2E3YTQzYTEgLXIgMzNmZDQzZjc1OTBmMTdlZDYxMWNlMDc9CjE3 OGNhZThjMmI3MDUyNWQwIHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvaGlzdG9yeS9oaXN0b3J5 LXBhbmVsLmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvaGlzdG9yeS9oaXN0b3J5 LXBhbmVsLmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvaGlzdG9yeS9oaXN0b3J5 LXBhbmVsLmpzCkBAIC0xLDEgKzEsMSBAQAotZGVmaW5lKFsibXZjL2xpc3QvbGlzdC1wYW5lbCIs Im12Yy9oaXN0b3J5L2hpc3RvcnktbW9kZWwiLCJtdmMvaGlzdG9yeS9oaXM9CnRvcnktY29udGVu dHMiLCJtdmMvaGlzdG9yeS9oZGEtbGkiLCJtdmMvaGlzdG9yeS9oZGNhLWxpIiwibXZjL2NvbGxl Y3Rpb24vYz0Kb2xsZWN0aW9uLXBhbmVsIiwibXZjL3VzZXIvdXNlci1tb2RlbCIsInVpL2ZhLWlj b24tYnV0dG9uIiwibXZjL3VpL3BvcHVwLW1lPQpudSIsIm12Yy9iYXNlLW12YyIsInV0aWxzL2xv Y2FsaXphdGlvbiIsInVpL3NlYXJjaC1pbnB1dCJdLGZ1bmN0aW9uKGYsaCxuLGQ9CixiLG8saSxj LGEscSxnKXt2YXIgbD0zRHEuU2Vzc2lvblN0b3JhZ2VNb2RlbC5leHRlbmQoe2RlZmF1bHRzOntl eHBhbmRlZElkcz0KOnt9LHNob3dfZGVsZXRlZDpmYWxzZSxzaG93X2hpZGRlbjpmYWxzZX0sYWRk RXhwYW5kZWQ6ZnVuY3Rpb24ocil7dmFyIHM9M0QiPQpleHBhbmRlZElkcyI7dGhpcy5zYXZlKHMs Xy5leHRlbmQodGhpcy5nZXQocyksXy5vYmplY3QoW3IuaWRdLFtyLmdldCgiaWQiKV09CikpKX0s cmVtb3ZlRXhwYW5kZWQ6ZnVuY3Rpb24ocil7dmFyIHM9M0QiZXhwYW5kZWRJZHMiO3RoaXMuc2F2 ZShzLF8ub21pdCh0aD0KaXMuZ2V0KHMpLHIuaWQpKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1 cm4iSGlzdG9yeVByZWZzKCIrdGhpcy5pZCsiKSJ9fSk7PQpsLnN0b3JhZ2VLZXlQcmVmaXg9M0Qi aGlzdG9yeToiO2wuaGlzdG9yeVN0b3JhZ2VLZXk9M0RmdW5jdGlvbiBqKHIpe2lmKCFyKXs9CnRo cm93IG5ldyBFcnJvcigiSGlzdG9yeVByZWZzLmhpc3RvcnlTdG9yYWdlS2V5IG5lZWRzIHZhbGlk IGlkOiAiK3IpfXJldHVybj0KKGwuc3RvcmFnZUtleVByZWZpeCtyKX07bC5nZXQ9M0RmdW5jdGlv biBlKHIpe3JldHVybiBuZXcgbCh7aWQ6bC5oaXN0b3J5U3RvPQpyYWdlS2V5KHIpfSl9O2wuY2xl YXJBbGw9M0RmdW5jdGlvbiBrKHMpe2Zvcih2YXIgciBpbiBzZXNzaW9uU3RvcmFnZSl7aWYoci49 CmluZGV4T2YobC5zdG9yYWdlS2V5UHJlZml4KT0zRD0zRD0zRDApe3Nlc3Npb25TdG9yYWdlLnJl bW92ZUl0ZW0ocil9fX07dmFyID0KcD0zRGYuTW9kZWxMaXN0UGFuZWw7dmFyIG09M0RwLmV4dGVu ZCh7SERBVmlld0NsYXNzOmQuSERBTGlzdEl0ZW1WaWV3LEhEQ0FWPQppZXdDbGFzczpiLkhEQ0FM aXN0SXRlbVZpZXcsY29sbGVjdGlvbkNsYXNzOm4uSGlzdG9yeUNvbnRlbnRzLG1vZGVsQ29sbGVj dGk9Cm9uS2V5OiJjb250ZW50cyIsdGFnTmFtZToiZGl2IixjbGFzc05hbWU6cC5wcm90b3R5cGUu Y2xhc3NOYW1lKyIgaGlzdG9yeS1wYT0KbmVsIixlbXB0eU1zZzpnKCJUaGlzIGhpc3RvcnkgaXMg ZW1wdHkiKSxub25lRm91bmRNc2c6ZygiTm8gbWF0Y2hpbmcgZGF0YXNlPQp0cyBmb3VuZCIpLHNl YXJjaFBsYWNlaG9sZGVyOmcoInNlYXJjaCBkYXRhc2V0cyIpLGluaXRpYWxpemU6ZnVuY3Rpb24o cil7cC49CnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyxyKTt0aGlzLmxpbmtUYXJnZXQ9 M0RyLmxpbmtUYXJnZXR8fCJfYmxhbmsifT0KLGZyZWVNb2RlbDpmdW5jdGlvbigpe3AucHJvdG90 eXBlLmZyZWVNb2RlbC5jYWxsKHRoaXMpO2lmKHRoaXMubW9kZWwpe3RoaXMuPQptb2RlbC5jbGVh clVwZGF0ZVRpbWVvdXQoKX1yZXR1cm4gdGhpc30sX3NldFVwTGlzdGVuZXJzOmZ1bmN0aW9uKCl7 cC5wcm90b3Q9CnlwZS5fc2V0VXBMaXN0ZW5lcnMuY2FsbCh0aGlzKTt0aGlzLm9uKCJlcnJvciIs ZnVuY3Rpb24ocyx2LHIsdSx0KXt0aGlzLmVycj0Kb3JIYW5kbGVyKHMsdixyLHUsdCl9KTt0aGlz Lm9uKCJsb2FkaW5nLWRvbmUiLGZ1bmN0aW9uKCl7aWYoIXRoaXMudmlld3MubGVuPQpndGgpe3Ro aXMudHJpZ2dlcigiZW1wdHktaGlzdG9yeSIsdGhpcyl9fSl9LGxvYWRIaXN0b3J5V2l0aERldGFp bHM6ZnVuY3Rpb249Cih1LHQscyx2KXt0aGlzLmluZm8oImxvYWRIaXN0b3J5V2l0aERldGFpbHM6 Iix1LHQscyx2KTt2YXIgcj0zRGZ1bmN0aW9uKHcpez0KcmV0dXJuIF8udmFsdWVzKGwuZ2V0KHcu aWQpLmdldCgiZXhwYW5kZWRJZHMiKSl9O3JldHVybiB0aGlzLmxvYWRIaXN0b3J5KHUsPQp0LHMs dixyKX0sbG9hZEhpc3Rvcnk6ZnVuY3Rpb24odix1LHQsdyxyKXt0aGlzLmluZm8oImxvYWRIaXN0 b3J5OiIsdix1LHQsdyw9CnIpO3ZhciBzPTNEdGhpczt1PTNEdXx8e307cy50cmlnZ2VyKCJsb2Fk aW5nIixzKTt2YXIgeD0zRGguSGlzdG9yeS5nZXRIaXN0bz0KcnlEYXRhKHYse2hpc3RvcnlGbjp0 LGNvbnRlbnRzRm46dyxkZXRhaWxJZHNGbjp1LmluaXRpYWxseUV4cGFuZGVkfHxyfSk7cmV0PQp1 cm4gcy5fbG9hZEhpc3RvcnlGcm9tWEhSKHgsdSkuZmFpbChmdW5jdGlvbihBLHkseil7cy50cmln Z2VyKCJlcnJvciIscyxBLHU9CixnKCJBbiBlcnJvciB3YXMgZW5jb3VudGVyZWQgd2hpbGUgIit5 KSx7aGlzdG9yeUlkOnYsaGlzdG9yeTp6fHx7fX0pfSkuYWx3YT0KeXMoZnVuY3Rpb24oKXtzLnRy aWdnZXIoImxvYWRpbmctZG9uZSIscyl9KX0sX2xvYWRIaXN0b3J5RnJvbVhIUjpmdW5jdGlvbih0 PQoscyl7dmFyIHI9M0R0aGlzO3QudGhlbihmdW5jdGlvbih1LHYpe3IuSlNPTlRvTW9kZWwodSx2 LHMpO3IucmVuZGVyKCl9KTt0LmY9CmFpbChmdW5jdGlvbih2LHUpe3IucmVuZGVyKCl9KTtyZXR1 cm4gdH0scmVmcmVzaENvbnRlbnRzOmZ1bmN0aW9uKHMscil7aWYodD0KaGlzLm1vZGVsKXtyZXR1 cm4gdGhpcy5tb2RlbC5yZWZyZXNoKHMscil9cmV0dXJuICQud2hlbigpfSxKU09OVG9Nb2RlbDpm dW5jPQp0aW9uKHUscixzKXt0aGlzLmxvZygiSlNPTlRvTW9kZWw6Iix1LHIscyk7cz0zRHN8fHt9 O3ZhciB0PTNEbmV3IGguSGlzdG9yeSg9CnUscixzKTt0aGlzLnNldE1vZGVsKHQpO3JldHVybiB0 fSxzZXRNb2RlbDpmdW5jdGlvbihzLHIpe3I9M0RyfHx7fTtwLnByb3RvdD0KeXBlLnNldE1vZGVs LmNhbGwodGhpcyxzLHIpO2lmKHRoaXMubW9kZWwpe3RoaXMuX3NldFVwV2ViU3RvcmFnZShyLmlu aXRpYWxsPQp5RXhwYW5kZWQsci5zaG93X2RlbGV0ZWQsci5zaG93X2hpZGRlbil9fSxfc2V0VXBX ZWJTdG9yYWdlOmZ1bmN0aW9uKHMscix0KXs9CmlmKHRoaXMuc3RvcmFnZSl7dGhpcy5zdG9wTGlz dGVuaW5nKHRoaXMuc3RvcmFnZSl9dGhpcy5zdG9yYWdlPTNEbmV3IGwoe2lkOj0KbC5oaXN0b3J5 U3RvcmFnZUtleSh0aGlzLm1vZGVsLmdldCgiaWQiKSl9KTtpZihfLmlzT2JqZWN0KHMpKXt0aGlz LnN0b3JhZ2UuPQpzZXQoImV4cGFuZGVkSWRzIixzKX1pZihfLmlzQm9vbGVhbihyKSl7dGhpcy5z dG9yYWdlLnNldCgic2hvd19kZWxldGVkIixyKX09CmlmKF8uaXNCb29sZWFuKHQpKXt0aGlzLnN0 b3JhZ2Uuc2V0KCJzaG93X2hpZGRlbiIsdCl9dGhpcy50cmlnZ2VyKCJuZXctc3Rvcj0KYWdlIix0 aGlzLnN0b3JhZ2UsdGhpcyk7dGhpcy5sb2codGhpcysiIChpbml0J2QpIHN0b3JhZ2U6Iix0aGlz LnN0b3JhZ2UuZ2V0PQooKSk7dGhpcy5saXN0ZW5Ubyh0aGlzLnN0b3JhZ2UseyJjaGFuZ2U6c2hv d19kZWxldGVkIjpmdW5jdGlvbih1LHYpe3RoaXMuc2g9Cm93RGVsZXRlZD0zRHZ9LCJjaGFuZ2U6 c2hvd19oaWRkZW4iOmZ1bmN0aW9uKHUsdil7dGhpcy5zaG93SGlkZGVuPTNEdn19LHRoaT0Kcyk7 dGhpcy5zaG93RGVsZXRlZD0zRChyIT0zRD0zRHVuZGVmaW5lZCk/cjp0aGlzLnN0b3JhZ2UuZ2V0 KCJzaG93X2RlbGV0ZWQiPQopO3RoaXMuc2hvd0hpZGRlbj0zRCh0IT0zRD0zRHVuZGVmaW5lZCk/ dDp0aGlzLnN0b3JhZ2UuZ2V0KCJzaG93X2hpZGRlbiIpO3I9CmV0dXJuIHRoaXN9LF9idWlsZE5l d1JlbmRlcjpmdW5jdGlvbigpe3ZhciByPTNEcC5wcm90b3R5cGUuX2J1aWxkTmV3UmVuZGVyLj0K Y2FsbCh0aGlzKTtpZih0aGlzLm11bHRpc2VsZWN0QWN0aW9ucygpLmxlbmd0aCl7ci5maW5kKCIu Y29udHJvbHMgLmFjdGlvbnMiPQopLnByZXBlbmQodGhpcy5fcmVuZGVyU2VsZWN0QnV0dG9uKCkp fXJldHVybiByfSxfcmVuZGVyU2VsZWN0QnV0dG9uOmZ1bmN0aW89Cm4ocil7cmV0dXJuIGMoe3Rp dGxlOmcoIk9wZXJhdGlvbnMgb24gbXVsdGlwbGUgZGF0YXNldHMiKSxjbGFzc2VzOiJzaG93LXNl bD0KZWN0b3JzLWJ0biIsZmFJY29uOiJmYS1jaGVjay1zcXVhcmUtbyJ9KX0sX2dldEl0ZW1WaWV3 Q2xhc3M6ZnVuY3Rpb24ocil7dmFyPQogcz0zRHIuZ2V0KCJoaXN0b3J5X2NvbnRlbnRfdHlwZSIp O3N3aXRjaChzKXtjYXNlImRhdGFzZXQiOnJldHVybiB0aGlzLkhEQVY9Cmlld0NsYXNzO2Nhc2Ui ZGF0YXNldF9jb2xsZWN0aW9uIjpyZXR1cm4gdGhpcy5IRENBVmlld0NsYXNzfXRocm93IG5ldyBU eXBlRT0KcnJvcigiVW5rbm93biBoaXN0b3J5X2NvbnRlbnRfdHlwZTogIitzKX0sX2ZpbHRlckl0 ZW06ZnVuY3Rpb24ocyl7dmFyIHI9M0R0PQpoaXM7cmV0dXJuKHAucHJvdG90eXBlLl9maWx0ZXJJ dGVtLmNhbGwocixzKSYmKCFzLmhpZGRlbigpfHxyLnNob3dIaWRkZW4pJiY9Cighcy5pc0RlbGV0 ZWRPclB1cmdlZCgpfHxyLnNob3dEZWxldGVkKSl9LF9nZXRJdGVtVmlld09wdGlvbnM6ZnVuY3Rp b24ocyl7dj0KYXIgcj0zRHAucHJvdG90eXBlLl9nZXRJdGVtVmlld09wdGlvbnMuY2FsbCh0aGlz LHMpO3JldHVybiBfLmV4dGVuZChyLHtsaW5rPQpUYXJnZXQ6dGhpcy5saW5rVGFyZ2V0LGV4cGFu ZGVkOiEhdGhpcy5zdG9yYWdlLmdldCgiZXhwYW5kZWRJZHMiKVtzLmlkXSxoYXM9ClVzZXI6dGhp cy5tb2RlbC5vd25lZEJ5Q3VyclVzZXIoKX0pfSxfc2V0VXBJdGVtVmlld0xpc3RlbmVyczpmdW5j dGlvbihzKXt2YT0KciByPTNEdGhpcztwLnByb3RvdHlwZS5fc2V0VXBJdGVtVmlld0xpc3RlbmVy cy5jYWxsKHIscyk7cy5vbigiZXhwYW5kZWQiLGZ1PQpuY3Rpb24odCl7ci5zdG9yYWdlLmFkZEV4 cGFuZGVkKHQubW9kZWwpfSk7cy5vbigiY29sbGFwc2VkIixmdW5jdGlvbih0KXtyLnM9CnRvcmFn ZS5yZW1vdmVFeHBhbmRlZCh0Lm1vZGVsKX0pO3JldHVybiB0aGlzfSxnZXRTZWxlY3RlZE1vZGVs czpmdW5jdGlvbigpez0KdmFyIHI9M0RwLnByb3RvdHlwZS5nZXRTZWxlY3RlZE1vZGVscy5jYWxs KHRoaXMpO3IuaGlzdG9yeUlkPTNEdGhpcy5jb2xsZWN0PQppb24uaGlzdG9yeUlkO3JldHVybiBy fSxldmVudHM6Xy5leHRlbmQoXy5jbG9uZShwLnByb3RvdHlwZS5ldmVudHMpLHsiY2xpY2s9CiAu c2hvdy1zZWxlY3RvcnMtYnRuIjoidG9nZ2xlU2VsZWN0b3JzIn0pLHRvZ2dsZVNob3dEZWxldGVk OmZ1bmN0aW9uKHIscyl7cj0KPTNEKHIhPTNEPTNEdW5kZWZpbmVkKT8ocik6KCF0aGlzLnNob3dE ZWxldGVkKTtzPTNEKHMhPTNEPTNEdW5kZWZpbmVkKT8ocyk6PQoodHJ1ZSk7dGhpcy5zaG93RGVs ZXRlZD0zRHI7aWYocyl7dGhpcy5zdG9yYWdlLnNldCgic2hvd19kZWxldGVkIixyKX10aGlzLnQ9 CnJpZ2dlcigic2hvdy1oaWRkZW4iLHIpO3RoaXMucmVuZGVySXRlbXMoKTtyZXR1cm4gdGhpcy5z aG93RGVsZXRlZH0sdG9nZ2xlUz0KaG93SGlkZGVuOmZ1bmN0aW9uKHIscyl7cj0zRChyIT0zRD0z RHVuZGVmaW5lZCk/KHIpOighdGhpcy5zaG93SGlkZGVuKTtzPTNEPQoocyE9M0Q9M0R1bmRlZmlu ZWQpPyhzKToodHJ1ZSk7dGhpcy5zaG93SGlkZGVuPTNEcjtpZihzKXt0aGlzLnN0b3JhZ2Uuc2V0 KCI9CnNob3dfaGlkZGVuIixyKX10aGlzLnRyaWdnZXIoInNob3ctaGlkZGVuIixyKTt0aGlzLnJl bmRlckl0ZW1zKCk7cmV0dXJuIHRoaT0Kcy5zaG93SGlkZGVufSxfZmlyc3RTZWFyY2g6ZnVuY3Rp b24ocil7dmFyIHM9M0R0aGlzLHQ9M0QiLmhpc3Rvcnktc2VhcmNoLWluPQpwdXQiO3RoaXMubG9n KCJvbkZpcnN0U2VhcmNoIixyKTtpZihzLm1vZGVsLmNvbnRlbnRzLmhhdmVEZXRhaWxzKCkpe3Mu c2VhcmM9CmhJdGVtcyhyKTtyZXR1cm59cy4kZWwuZmluZCh0KS5zZWFyY2hJbnB1dCgidG9nZ2xl LWxvYWRpbmciKTtzLm1vZGVsLmNvbnRlbj0KdHMuZmV0Y2hBbGxEZXRhaWxzKHtzaWxlbnQ6dHJ1 ZX0pLmFsd2F5cyhmdW5jdGlvbigpe3MuJGVsLmZpbmQodCkuc2VhcmNoSW5wPQp1dCgidG9nZ2xl LWxvYWRpbmciKX0pLmRvbmUoZnVuY3Rpb24oKXtzLnNlYXJjaEl0ZW1zKHIpfSl9LGVycm9ySGFu ZGxlcjpmdW49CmN0aW9uKHQsdyxzLHYsdSl7dGhpcy5lcnJvcih0LHcscyx2LHUpO2lmKHcmJncu c3RhdHVzPTNEPTNEPTNEMCYmdy5yZWFkeVN0YT0KdGU9M0Q9M0Q9M0QwKXt9ZWxzZXtpZih3JiZ3 LnN0YXR1cz0zRD0zRD0zRDUwMil7fWVsc2V7dmFyIHI9M0R0aGlzLl9wYXJzZUVyPQpyb3JNZXNz YWdlKHQsdyxzLHYsdSk7aWYoIXRoaXMuJG1lc3NhZ2VzKCkuaXMoIjp2aXNpYmxlIikpe3RoaXMu b25jZSgicmVuZGU9CnJlZCIsZnVuY3Rpb24oKXt0aGlzLmRpc3BsYXlNZXNzYWdlKCJlcnJvciIs ci5tZXNzYWdlLHIuZGV0YWlscyl9KX1lbHNle3RoaT0Kcy5kaXNwbGF5TWVzc2FnZSgiZXJyb3Ii LHIubWVzc2FnZSxyLmRldGFpbHMpfX19fSxfcGFyc2VFcnJvck1lc3NhZ2U6ZnVuY3RpPQpvbih2 LHkseix0LHIsdyl7dmFyIHU9M0RHYWxheHkuY3VyclVzZXIseD0zRHttZXNzYWdlOnRoaXMuX2Jl UG9saXRlKHQpLGRldGE9Cmlsczp7bWVzc2FnZTp0LHJhdmVuOih3aW5kb3cuUmF2ZW4mJl8uaXNG dW5jdGlvbihSYXZlbi5sYXN0RXZlbnRJZCkpPyhSYXZlbj0KLmxhc3RFdmVudElkKCkpOih1bmRl ZmluZWQpLGFnZW50Om5hdmlnYXRvci51c2VyQWdlbnQsdXJsOih3aW5kb3cuR2FsYXh5KT8oPQpH YWxheHkubGFzdEFqYXgudXJsKToodW5kZWZpbmVkKSxkYXRhOih3aW5kb3cuR2FsYXh5KT8oR2Fs YXh5Lmxhc3RBamF4LmRhdGE9Cik6KHVuZGVmaW5lZCksb3B0aW9uczooeSk/KF8ub21pdCh6LCJ4 aHIiKSk6KHopLHhocjp5LHNvdXJjZTooXy5pc0Z1bmN0aW9uKD0Kdi50b0pTT04pKT8odi50b0pT T04oKSk6KHYrIiIpLHVzZXI6KHUgaW5zdGFuY2VvZiBpLlVzZXIpPyh1LnRvSlNPTigpKToodSsi PQoiKX19O18uZXh0ZW5kKHguZGV0YWlscyxyfHx7fSk7aWYoeSYmXy5pc0Z1bmN0aW9uKHkuZ2V0 QWxsUmVzcG9uc2VIZWFkZXJzKSk9Cnt2YXIgcz0zRHkuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7 cz0zRF8uY29tcGFjdChzLnNwbGl0KCJcbiIpKTtzPTNEXy5tYXAocz0KLGZ1bmN0aW9uKEEpe3Jl dHVybiBBLnNwbGl0KCI6ICIpfSk7eC5kZXRhaWxzLnhoci5yZXNwb25zZUhlYWRlcnM9M0RfLm9i amVjPQp0KHMpfXJldHVybiB4fSxfYmVQb2xpdGU6ZnVuY3Rpb24ocil7cj0zRHJ8fGcoIkFuIGVy cm9yIG9jY3VycmVkIHdoaWxlIGdldHQ9CmluZyB1cGRhdGVzIGZyb20gdGhlIHNlcnZlciIpO3Jl dHVybiByKyIuICIrZygiUGxlYXNlIGNvbnRhY3QgYSBHYWxheHkgYWRtaT0KbmlzdHJhdG9yIGlm IHRoZSBwcm9ibGVtIHBlcnNpc3RzIikrIi4ifSxkaXNwbGF5TWVzc2FnZTpmdW5jdGlvbih3LHgs dil7dmFyPQogdD0zRHRoaXM7dGhpcy5zY3JvbGxUb1RvcCgpO3ZhciB1PTNEdGhpcy4kbWVzc2Fn ZXMoKSxyPTNEJCgiPGRpdi8+IikuYWRkQ2w9CmFzcyh3KyJtZXNzYWdlIikuaHRtbCh4KTtpZigh Xy5pc0VtcHR5KHYpKXt2YXIgcz0zRCQoJzxhIGhyZWY9M0QiamF2YXNjcmlwdD0KOnZvaWQoMCki PkRldGFpbHM8L2E+JykuY2xpY2soZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuc2hvdyh0Ll9tZXNz YWdlVG9Nb2RhPQpsT3B0aW9ucyh3LHgsdikpO3JldHVybiBmYWxzZX0pO3IuYXBwZW5kKCIgIixz KX1yZXR1cm4gdS5odG1sKHIpfSxfbWVzc2FnZVQ9Cm9Nb2RhbE9wdGlvbnM6ZnVuY3Rpb24odSx4 LHQpe3ZhciByPTNEdGhpcyxzPTNEe3RpdGxlOiJEZXRhaWxzIn07aWYoXy5pc09iaj0KZWN0KHQp KXt0PTNEXy5vbWl0KHQsXy5mdW5jdGlvbnModCkpO3ZhciB3PTNESlNPTi5zdHJpbmdpZnkodCxu dWxsLCIgICIpLHY9Cj0zRCQoIjxwcmUvPiIpLnRleHQodyk7cy5ib2R5PTNEJCgiPGRpdi8+Iiku YXBwZW5kKHYpfWVsc2V7cy5ib2R5PTNEJCgiPGRpdj0KLz4iKS5odG1sKHQpfXMuYnV0dG9ucz0z RHtPazpmdW5jdGlvbigpe0dhbGF4eS5tb2RhbC5oaWRlKCk7ci5jbGVhck1lc3NhZ2VzPQooKX19 O3JldHVybiBzfSxjbGVhck1lc3NhZ2VzOmZ1bmN0aW9uKHIpeyQoci5jdXJyZW50VGFyZ2V0KS5m YWRlT3V0KHRoaXMuZng9ClNwZWVkLGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmUoKX0pO3JldHVy biB0aGlzfSxzY3JvbGxUb0hpZDpmdW5jdGlvbihyKXtyZT0KdHVybiB0aGlzLnNjcm9sbFRvSXRl bShfLmZpcnN0KHRoaXMudmlld3NXaGVyZU1vZGVsKHtoaWQ6cn0pKSl9LHRvU3RyaW5nOmZ1PQpu Y3Rpb24oKXtyZXR1cm4iSGlzdG9yeVBhbmVsKCIrKCh0aGlzLm1vZGVsKT8odGhpcy5tb2RlbC5n ZXQoIm5hbWUiKSk6KCIiKSk9CisiKSJ9fSk7bS5wcm90b3R5cGUudGVtcGxhdGVzPTNEKGZ1bmN0 aW9uKCl7dmFyIHI9M0RxLndyYXBUZW1wbGF0ZShbJzxkaXYgYz0KbGFzcz0zRCJjb250cm9scyI+ JywnPGRpdiBjbGFzcz0zRCJ0aXRsZSI+JywnPGRpdiBjbGFzcz0zRCJuYW1lIj48JT0zRCBoaXN0 PQpvcnkubmFtZSAlPjwvZGl2PicsIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0Qic3VidGl0bGUiPjwv ZGl2PicsJzxkaXYgY2xhc3M9M0Q9CiJoaXN0b3J5LXNpemUiPjwlPTNEIGhpc3RvcnkubmljZV9z aXplICU+PC9kaXY+JywnPGRpdiBjbGFzcz0zRCJhY3Rpb25zIj48Lz0KZGl2PicsJzxkaXYgY2xh c3M9M0QibWVzc2FnZXMiPicsIjwlIGlmKCBoaXN0b3J5LmRlbGV0ZWQgJiYgaGlzdG9yeS5wdXJn ZWQgPQopeyAlPiIsJzxkaXYgY2xhc3M9M0QiZGVsZXRlZC1tc2cgd2FybmluZ21lc3NhZ2VzbWFs bCI+JyxnKCJUaGlzIGhpc3RvcnkgaGE9CnMgYmVlbiBwdXJnZWQgYW5kIGRlbGV0ZWQiKSwiPC9k aXY+IiwiPCUgfSBlbHNlIGlmKCBoaXN0b3J5LmRlbGV0ZWQgKXsgJT4iLD0KJzxkaXYgY2xhc3M9 M0QiZGVsZXRlZC1tc2cgd2FybmluZ21lc3NhZ2VzbWFsbCI+JyxnKCJUaGlzIGhpc3RvcnkgaGFz IGJlZW4gPQpkZWxldGVkIiksIjwvZGl2PiIsIjwlIH0gZWxzZSBpZiggaGlzdG9yeS5wdXJnZWQg KXsgJT4iLCc8ZGl2IGNsYXNzPTNEImRlbGU9CnRlZC1tc2cgd2FybmluZ21lc3NhZ2VzbWFsbCI+ JyxnKCJUaGlzIGhpc3RvcnkgaGFzIGJlZW4gcHVyZ2VkIiksIjwvZGl2PiIsIj0KPCUgfSAlPiIs IjwlIGlmKCBoaXN0b3J5Lm1lc3NhZ2UgKXsgJT4iLCc8ZGl2IGNsYXNzPTNEIjwlPTNEIGhpc3Rv cnkubWVzc2FnPQplLmxldmVsIHx8ICJpbmZvIiAlPm1lc3NhZ2VzbWFsbCI+JywiPCU9M0QgaGlz dG9yeS5tZXNzYWdlLnRleHQgJT4iLCI8L2Rpdj49CiIsIjwlIH0gJT4iLCI8L2Rpdj4iLCc8ZGl2 IGNsYXNzPTNEInRhZ3MtZGlzcGxheSI+PC9kaXY+JywnPGRpdiBjbGFzcz0zRCJhbj0Kbm90YXRp b24tZGlzcGxheSI+PC9kaXY+JywnPGRpdiBjbGFzcz0zRCJzZWFyY2giPicsJzxkaXYgY2xhc3M9 M0Qic2VhcmNoLWluPQpwdXQiPjwvZGl2PicsIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0QibGlzdC1h Y3Rpb25zIj4nLCc8ZGl2IGNsYXNzPTNEImJ0bi1ncm89CnVwIj4nLCc8YnV0dG9uIGNsYXNzPTNE InNlbGVjdC1hbGwgYnRuIGJ0bi1kZWZhdWx0IicsJ2RhdGEtbW9kZT0zRCJzZWxlY3QiPj0KJyxn KCJBbGwiKSwiPC9idXR0b24+IiwnPGJ1dHRvbiBjbGFzcz0zRCJkZXNlbGVjdC1hbGwgYnRuIGJ0 bi1kZWZhdWx0IicsJ2RhPQp0YS1tb2RlPTNEInNlbGVjdCI+JyxnKCJOb25lIiksIjwvYnV0dG9u PiIsIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0QibGlzdC1hY3Q9Cmlvbi1tZW51IGJ0bi1ncm91cCI+ JywiPC9kaXY+IiwiPC9kaXY+IiwiPC9kaXY+Il0sImhpc3RvcnkiKTtyZXR1cm4gXy5leHRlbj0K ZChfLmNsb25lKHAucHJvdG90eXBlLnRlbXBsYXRlcykse2NvbnRyb2xzOnJ9KX0oKSk7cmV0dXJu e0hpc3RvcnlQYW5lbDptfX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RlZmluZShb Im12Yy9saXN0L2xpc3QtcGFuZWwiLCJtdmMvaGlzdG9yeS9oaXN0b3J5LW1vZGVsIiwibXZjL2hp c3RvcnkvaGlzPQp0b3J5LWNvbnRlbnRzIiwibXZjL2hpc3RvcnkvaGRhLWxpIiwibXZjL2hpc3Rv cnkvaGRjYS1saSIsIm12Yy9jb2xsZWN0aW9uL2M9Cm9sbGVjdGlvbi1wYW5lbCIsIm12Yy91c2Vy L3VzZXItbW9kZWwiLCJ1aS9mYS1pY29uLWJ1dHRvbiIsIm12Yy91aS9wb3B1cC1tZT0KbnUiLCJt dmMvYmFzZS1tdmMiLCJ1dGlscy9sb2NhbGl6YXRpb24iLCJ1aS9zZWFyY2gtaW5wdXQiXSxmdW5j dGlvbihmLGgsbixkPQosYixvLGksYyxhLHEsZyl7dmFyIGw9M0RxLlNlc3Npb25TdG9yYWdlTW9k ZWwuZXh0ZW5kKHtkZWZhdWx0czp7ZXhwYW5kZWRJZHM9Cjp7fSxzaG93X2RlbGV0ZWQ6ZmFsc2Us c2hvd19oaWRkZW46ZmFsc2V9LGFkZEV4cGFuZGVkOmZ1bmN0aW9uKHIpe3ZhciBzPTNEIj0KZXhw YW5kZWRJZHMiO3RoaXMuc2F2ZShzLF8uZXh0ZW5kKHRoaXMuZ2V0KHMpLF8ub2JqZWN0KFtyLmlk XSxbci5nZXQoImlkIildPQopKSl9LHJlbW92ZUV4cGFuZGVkOmZ1bmN0aW9uKHIpe3ZhciBzPTNE ImV4cGFuZGVkSWRzIjt0aGlzLnNhdmUocyxfLm9taXQodGg9CmlzLmdldChzKSxyLmlkKSl9LHRv U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIkhpc3RvcnlQcmVmcygiK3RoaXMuaWQrIikifX0pOz0K bC5zdG9yYWdlS2V5UHJlZml4PTNEImhpc3Rvcnk6IjtsLmhpc3RvcnlTdG9yYWdlS2V5PTNEZnVu Y3Rpb24gaihyKXtpZighcil7PQp0aHJvdyBuZXcgRXJyb3IoIkhpc3RvcnlQcmVmcy5oaXN0b3J5 U3RvcmFnZUtleSBuZWVkcyB2YWxpZCBpZDogIityKX1yZXR1cm49CihsLnN0b3JhZ2VLZXlQcmVm aXgrcil9O2wuZ2V0PTNEZnVuY3Rpb24gZShyKXtyZXR1cm4gbmV3IGwoe2lkOmwuaGlzdG9yeVN0 bz0KcmFnZUtleShyKX0pfTtsLmNsZWFyQWxsPTNEZnVuY3Rpb24gayhzKXtmb3IodmFyIHIgaW4g c2Vzc2lvblN0b3JhZ2Upe2lmKHIuPQppbmRleE9mKGwuc3RvcmFnZUtleVByZWZpeCk9M0Q9M0Q9 M0QwKXtzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKHIpfX19O3ZhciA9CnA9M0RmLk1vZGVsTGlz dFBhbmVsO3ZhciBtPTNEcC5leHRlbmQoe0hEQVZpZXdDbGFzczpkLkhEQUxpc3RJdGVtVmlldyxI RENBVj0KaWV3Q2xhc3M6Yi5IRENBTGlzdEl0ZW1WaWV3LGNvbGxlY3Rpb25DbGFzczpuLkhpc3Rv cnlDb250ZW50cyxtb2RlbENvbGxlY3RpPQpvbktleToiY29udGVudHMiLHRhZ05hbWU6ImRpdiIs Y2xhc3NOYW1lOnAucHJvdG90eXBlLmNsYXNzTmFtZSsiIGhpc3RvcnktcGE9Cm5lbCIsZW1wdHlN c2c6ZygiVGhpcyBoaXN0b3J5IGlzIGVtcHR5Iiksbm9uZUZvdW5kTXNnOmcoIk5vIG1hdGNoaW5n IGRhdGFzZT0KdHMgZm91bmQiKSxzZWFyY2hQbGFjZWhvbGRlcjpnKCJzZWFyY2ggZGF0YXNldHMi KSxpbml0aWFsaXplOmZ1bmN0aW9uKHIpe3AuPQpwcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRo aXMscik7dGhpcy5saW5rVGFyZ2V0PTNEci5saW5rVGFyZ2V0fHwiX2JsYW5rIn09CixmcmVlTW9k ZWw6ZnVuY3Rpb24oKXtwLnByb3RvdHlwZS5mcmVlTW9kZWwuY2FsbCh0aGlzKTtpZih0aGlzLm1v ZGVsKXt0aGlzLj0KbW9kZWwuY2xlYXJVcGRhdGVUaW1lb3V0KCl9cmV0dXJuIHRoaXN9LF9zZXRV cExpc3RlbmVyczpmdW5jdGlvbigpe3AucHJvdG90PQp5cGUuX3NldFVwTGlzdGVuZXJzLmNhbGwo dGhpcyk7dGhpcy5vbigiZXJyb3IiLGZ1bmN0aW9uKHMsdixyLHUsdCl7dGhpcy5lcnI9Cm9ySGFu ZGxlcihzLHYscix1LHQpfSk7dGhpcy5vbigibG9hZGluZy1kb25lIixmdW5jdGlvbigpe2lmKCF0 aGlzLnZpZXdzLmxlbj0KZ3RoKXt0aGlzLnRyaWdnZXIoImVtcHR5LWhpc3RvcnkiLHRoaXMpfX0p fSxsb2FkSGlzdG9yeVdpdGhEZXRhaWxzOmZ1bmN0aW9uPQoodSx0LHMsdil7dGhpcy5pbmZvKCJs b2FkSGlzdG9yeVdpdGhEZXRhaWxzOiIsdSx0LHMsdik7dmFyIHI9M0RmdW5jdGlvbih3KXs9CnJl dHVybiBfLnZhbHVlcyhsLmdldCh3LmlkKS5nZXQoImV4cGFuZGVkSWRzIikpfTtyZXR1cm4gdGhp cy5sb2FkSGlzdG9yeSh1LD0KdCxzLHYscil9LGxvYWRIaXN0b3J5OmZ1bmN0aW9uKHYsdSx0LHcs cil7dGhpcy5pbmZvKCJsb2FkSGlzdG9yeToiLHYsdSx0LHcsPQpyKTt2YXIgcz0zRHRoaXM7dT0z RHV8fHt9O3MudHJpZ2dlcigibG9hZGluZyIscyk7dmFyIHg9M0RoLkhpc3RvcnkuZ2V0SGlzdG89 CnJ5RGF0YSh2LHtoaXN0b3J5Rm46dCxjb250ZW50c0ZuOncsZGV0YWlsSWRzRm46dS5pbml0aWFs bHlFeHBhbmRlZHx8cn0pO3JldD0KdXJuIHMuX2xvYWRIaXN0b3J5RnJvbVhIUih4LHUpLmZhaWwo ZnVuY3Rpb24oQSx5LHope3MudHJpZ2dlcigiZXJyb3IiLHMsQSx1PQosZygiQW4gZXJyb3Igd2Fz IGVuY291bnRlcmVkIHdoaWxlICIreSkse2hpc3RvcnlJZDp2LGhpc3Rvcnk6enx8e319KX0pLmFs d2E9CnlzKGZ1bmN0aW9uKCl7cy50cmlnZ2VyKCJsb2FkaW5nLWRvbmUiLHMpfSl9LF9sb2FkSGlz dG9yeUZyb21YSFI6ZnVuY3Rpb24odD0KLHMpe3ZhciByPTNEdGhpczt0LnRoZW4oZnVuY3Rpb24o dSx2KXtyLkpTT05Ub01vZGVsKHUsdixzKTtyLnJlbmRlcigpfSk7dC5mPQphaWwoZnVuY3Rpb24o dix1KXtyLnJlbmRlcigpfSk7cmV0dXJuIHR9LHJlZnJlc2hDb250ZW50czpmdW5jdGlvbihzLHIp e2lmKHQ9Cmhpcy5tb2RlbCl7cmV0dXJuIHRoaXMubW9kZWwucmVmcmVzaChzLHIpfXJldHVybiAk LndoZW4oKX0sSlNPTlRvTW9kZWw6ZnVuYz0KdGlvbih1LHIscyl7dGhpcy5sb2coIkpTT05Ub01v ZGVsOiIsdSxyLHMpO3M9M0RzfHx7fTt2YXIgdD0zRG5ldyBoLkhpc3RvcnkoPQp1LHIscyk7dGhp cy5zZXRNb2RlbCh0KTtyZXR1cm4gdH0sc2V0TW9kZWw6ZnVuY3Rpb24ocyxyKXtyPTNEcnx8e307 cC5wcm90b3Q9CnlwZS5zZXRNb2RlbC5jYWxsKHRoaXMscyxyKTtpZih0aGlzLm1vZGVsKXt0aGlz Ll9zZXRVcFdlYlN0b3JhZ2Uoci5pbml0aWFsbD0KeUV4cGFuZGVkLHIuc2hvd19kZWxldGVkLHIu c2hvd19oaWRkZW4pfX0sX3NldFVwV2ViU3RvcmFnZTpmdW5jdGlvbihzLHIsdCl7PQppZih0aGlz LnN0b3JhZ2Upe3RoaXMuc3RvcExpc3RlbmluZyh0aGlzLnN0b3JhZ2UpfXRoaXMuc3RvcmFnZT0z RG5ldyBsKHtpZDo9CmwuaGlzdG9yeVN0b3JhZ2VLZXkodGhpcy5tb2RlbC5nZXQoImlkIikpfSk7 aWYoXy5pc09iamVjdChzKSl7dGhpcy5zdG9yYWdlLj0Kc2V0KCJleHBhbmRlZElkcyIscyl9aWYo Xy5pc0Jvb2xlYW4ocikpe3RoaXMuc3RvcmFnZS5zZXQoInNob3dfZGVsZXRlZCIscil9PQppZihf LmlzQm9vbGVhbih0KSl7dGhpcy5zdG9yYWdlLnNldCgic2hvd19oaWRkZW4iLHQpfXRoaXMudHJp Z2dlcigibmV3LXN0b3I9CmFnZSIsdGhpcy5zdG9yYWdlLHRoaXMpO3RoaXMubG9nKHRoaXMrIiAo aW5pdCdkKSBzdG9yYWdlOiIsdGhpcy5zdG9yYWdlLmdldD0KKCkpO3RoaXMubGlzdGVuVG8odGhp cy5zdG9yYWdlLHsiY2hhbmdlOnNob3dfZGVsZXRlZCI6ZnVuY3Rpb24odSx2KXt0aGlzLnNoPQpv d0RlbGV0ZWQ9M0R2fSwiY2hhbmdlOnNob3dfaGlkZGVuIjpmdW5jdGlvbih1LHYpe3RoaXMuc2hv d0hpZGRlbj0zRHZ9fSx0aGk9CnMpO3RoaXMuc2hvd0RlbGV0ZWQ9M0QociE9M0Q9M0R1bmRlZmlu ZWQpP3I6dGhpcy5zdG9yYWdlLmdldCgic2hvd19kZWxldGVkIj0KKTt0aGlzLnNob3dIaWRkZW49 M0QodCE9M0Q9M0R1bmRlZmluZWQpP3Q6dGhpcy5zdG9yYWdlLmdldCgic2hvd19oaWRkZW4iKTty PQpldHVybiB0aGlzfSxfYnVpbGROZXdSZW5kZXI6ZnVuY3Rpb24oKXt2YXIgcj0zRHAucHJvdG90 eXBlLl9idWlsZE5ld1JlbmRlci49CmNhbGwodGhpcyk7aWYodGhpcy5tdWx0aXNlbGVjdEFjdGlv bnMoKS5sZW5ndGgpe3IuZmluZCgiLmNvbnRyb2xzIC5hY3Rpb25zIj0KKS5wcmVwZW5kKHRoaXMu X3JlbmRlclNlbGVjdEJ1dHRvbigpKX1yZXR1cm4gcn0sX3JlbmRlclNlbGVjdEJ1dHRvbjpmdW5j dGlvPQpuKHIpe3JldHVybiBjKHt0aXRsZTpnKCJPcGVyYXRpb25zIG9uIG11bHRpcGxlIGRhdGFz ZXRzIiksY2xhc3Nlczoic2hvdy1zZWw9CmVjdG9ycy1idG4iLGZhSWNvbjoiZmEtY2hlY2stc3F1 YXJlLW8ifSl9LF9nZXRJdGVtVmlld0NsYXNzOmZ1bmN0aW9uKHIpe3Zhcj0KIHM9M0RyLmdldCgi aGlzdG9yeV9jb250ZW50X3R5cGUiKTtzd2l0Y2gocyl7Y2FzZSJkYXRhc2V0IjpyZXR1cm4gdGhp cy5IREFWPQppZXdDbGFzcztjYXNlImRhdGFzZXRfY29sbGVjdGlvbiI6cmV0dXJuIHRoaXMuSERD QVZpZXdDbGFzc310aHJvdyBuZXcgVHlwZUU9CnJyb3IoIlVua25vd24gaGlzdG9yeV9jb250ZW50 X3R5cGU6ICIrcyl9LF9maWx0ZXJJdGVtOmZ1bmN0aW9uKHMpe3ZhciByPTNEdD0KaGlzO3JldHVy bihwLnByb3RvdHlwZS5fZmlsdGVySXRlbS5jYWxsKHIscykmJighcy5oaWRkZW4oKXx8ci5zaG93 SGlkZGVuKSYmPQooIXMuaXNEZWxldGVkT3JQdXJnZWQoKXx8ci5zaG93RGVsZXRlZCkpfSxfZ2V0 SXRlbVZpZXdPcHRpb25zOmZ1bmN0aW9uKHMpe3Y9CmFyIHI9M0RwLnByb3RvdHlwZS5fZ2V0SXRl bVZpZXdPcHRpb25zLmNhbGwodGhpcyxzKTtyZXR1cm4gXy5leHRlbmQocix7bGluaz0KVGFyZ2V0 OnRoaXMubGlua1RhcmdldCxleHBhbmRlZDohIXRoaXMuc3RvcmFnZS5nZXQoImV4cGFuZGVkSWRz Iilbcy5pZF0saGFzPQpVc2VyOnRoaXMubW9kZWwub3duZWRCeUN1cnJVc2VyKCl9KX0sX3NldFVw SXRlbVZpZXdMaXN0ZW5lcnM6ZnVuY3Rpb24ocyl7dmE9CnIgcj0zRHRoaXM7cC5wcm90b3R5cGUu X3NldFVwSXRlbVZpZXdMaXN0ZW5lcnMuY2FsbChyLHMpO3Mub24oImV4cGFuZGVkIixmdT0KbmN0 aW9uKHQpe3Iuc3RvcmFnZS5hZGRFeHBhbmRlZCh0Lm1vZGVsKX0pO3Mub24oImNvbGxhcHNlZCIs ZnVuY3Rpb24odCl7ci5zPQp0b3JhZ2UucmVtb3ZlRXhwYW5kZWQodC5tb2RlbCl9KTtyZXR1cm4g dGhpc30sZ2V0U2VsZWN0ZWRNb2RlbHM6ZnVuY3Rpb24oKXs9CnZhciByPTNEcC5wcm90b3R5cGUu Z2V0U2VsZWN0ZWRNb2RlbHMuY2FsbCh0aGlzKTtyLmhpc3RvcnlJZD0zRHRoaXMuY29sbGVjdD0K aW9uLmhpc3RvcnlJZDtyZXR1cm4gcn0sZXZlbnRzOl8uZXh0ZW5kKF8uY2xvbmUocC5wcm90b3R5 cGUuZXZlbnRzKSx7ImNsaWNrPQogLnNob3ctc2VsZWN0b3JzLWJ0biI6InRvZ2dsZVNlbGVjdG9y cyIsImNsaWNrIC5tZXNzYWdlcyBbY2xhc3MkPTNEbWVzc2FnZV09CiI6ImNsZWFyTWVzc2FnZXMi fSksdG9nZ2xlU2hvd0RlbGV0ZWQ6ZnVuY3Rpb24ocixzKXtyPTNEKHIhPTNEPTNEdW5kZWZpbmVk KT0KPyhyKTooIXRoaXMuc2hvd0RlbGV0ZWQpO3M9M0QocyE9M0Q9M0R1bmRlZmluZWQpPyhzKToo dHJ1ZSk7dGhpcy5zaG93RGVsZXRlPQpkPTNEcjtpZihzKXt0aGlzLnN0b3JhZ2Uuc2V0KCJzaG93 X2RlbGV0ZWQiLHIpfXRoaXMudHJpZ2dlcigic2hvdy1oaWRkZW4iLHI9Cik7dGhpcy5yZW5kZXJJ dGVtcygpO3JldHVybiB0aGlzLnNob3dEZWxldGVkfSx0b2dnbGVTaG93SGlkZGVuOmZ1bmN0aW9u KHIscz0KKXtyPTNEKHIhPTNEPTNEdW5kZWZpbmVkKT8ocik6KCF0aGlzLnNob3dIaWRkZW4pO3M9 M0QocyE9M0Q9M0R1bmRlZmluZWQpPyhzPQopOih0cnVlKTt0aGlzLnNob3dIaWRkZW49M0RyO2lm KHMpe3RoaXMuc3RvcmFnZS5zZXQoInNob3dfaGlkZGVuIixyKX10aGlzLnQ9CnJpZ2dlcigic2hv dy1oaWRkZW4iLHIpO3RoaXMucmVuZGVySXRlbXMoKTtyZXR1cm4gdGhpcy5zaG93SGlkZGVufSxf Zmlyc3RTZT0KYXJjaDpmdW5jdGlvbihyKXt2YXIgcz0zRHRoaXMsdD0zRCIuaGlzdG9yeS1zZWFy Y2gtaW5wdXQiO3RoaXMubG9nKCJvbkZpcnN0PQpTZWFyY2giLHIpO2lmKHMubW9kZWwuY29udGVu dHMuaGF2ZURldGFpbHMoKSl7cy5zZWFyY2hJdGVtcyhyKTtyZXR1cm59cy4kZWw9Ci5maW5kKHQp LnNlYXJjaElucHV0KCJ0b2dnbGUtbG9hZGluZyIpO3MubW9kZWwuY29udGVudHMuZmV0Y2hBbGxE ZXRhaWxzKHtzaT0KbGVudDp0cnVlfSkuYWx3YXlzKGZ1bmN0aW9uKCl7cy4kZWwuZmluZCh0KS5z ZWFyY2hJbnB1dCgidG9nZ2xlLWxvYWRpbmciKX0pPQouZG9uZShmdW5jdGlvbigpe3Muc2VhcmNo SXRlbXMocil9KX0sZXJyb3JIYW5kbGVyOmZ1bmN0aW9uKHQsdyxzLHYsdSl7dGhpcy49CmVycm9y KHQsdyxzLHYsdSk7aWYodyYmdy5zdGF0dXM9M0Q9M0Q9M0QwJiZ3LnJlYWR5U3RhdGU9M0Q9M0Q9 M0QwKXt9ZWxzZXtpZj0KKHcmJncuc3RhdHVzPTNEPTNEPTNENTAyKXt9ZWxzZXt2YXIgcj0zRHRo aXMuX3BhcnNlRXJyb3JNZXNzYWdlKHQsdyxzLHYsdSk7PQppZighdGhpcy4kbWVzc2FnZXMoKS5p cygiOnZpc2libGUiKSl7dGhpcy5vbmNlKCJyZW5kZXJlZCIsZnVuY3Rpb24oKXt0aGlzLmQ9Cmlz cGxheU1lc3NhZ2UoImVycm9yIixyLm1lc3NhZ2Usci5kZXRhaWxzKX0pfWVsc2V7dGhpcy5kaXNw bGF5TWVzc2FnZSgiZXJybz0KciIsci5tZXNzYWdlLHIuZGV0YWlscyl9fX19LF9wYXJzZUVycm9y TWVzc2FnZTpmdW5jdGlvbih2LHkseix0LHIsdyl7dmFyIHU9Cj0zREdhbGF4eS5jdXJyVXNlcix4 PTNEe21lc3NhZ2U6dGhpcy5fYmVQb2xpdGUodCksZGV0YWlsczp7bWVzc2FnZTp0LHJhdmVuOj0K KHdpbmRvdy5SYXZlbiYmXy5pc0Z1bmN0aW9uKFJhdmVuLmxhc3RFdmVudElkKSk/KFJhdmVuLmxh c3RFdmVudElkKCkpOih1bmRlPQpmaW5lZCksYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudCx1cmw6 KHdpbmRvdy5HYWxheHkpPyhHYWxheHkubGFzdEFqYXgudXJsKTo9Cih1bmRlZmluZWQpLGRhdGE6 KHdpbmRvdy5HYWxheHkpPyhHYWxheHkubGFzdEFqYXguZGF0YSk6KHVuZGVmaW5lZCksb3B0aW9u cz0KOih5KT8oXy5vbWl0KHosInhociIpKTooeikseGhyOnksc291cmNlOihfLmlzRnVuY3Rpb24o di50b0pTT04pKT8odi50b0pTT04oPQopKToodisiIiksdXNlcjoodSBpbnN0YW5jZW9mIGkuVXNl cik/KHUudG9KU09OKCkpOih1KyIiKX19O18uZXh0ZW5kKHguZGV0YWk9CmxzLHJ8fHt9KTtpZih5 JiZfLmlzRnVuY3Rpb24oeS5nZXRBbGxSZXNwb25zZUhlYWRlcnMpKXt2YXIgcz0zRHkuZ2V0QWxs UmVzcD0Kb25zZUhlYWRlcnMoKTtzPTNEXy5jb21wYWN0KHMuc3BsaXQoIlxuIikpO3M9M0RfLm1h cChzLGZ1bmN0aW9uKEEpe3JldHVybiBBPQouc3BsaXQoIjogIil9KTt4LmRldGFpbHMueGhyLnJl c3BvbnNlSGVhZGVycz0zRF8ub2JqZWN0KHMpfXJldHVybiB4fSxfYmVQb2w9Cml0ZTpmdW5jdGlv bihyKXtyPTNEcnx8ZygiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZ2V0dGluZyB1cGRhdGVzIGZy b20gdGhlID0Kc2VydmVyIik7cmV0dXJuIHIrIi4gIitnKCJQbGVhc2UgY29udGFjdCBhIEdhbGF4 eSBhZG1pbmlzdHJhdG9yIGlmIHRoZSBwcm9iPQpsZW0gcGVyc2lzdHMiKSsiLiJ9LGRpc3BsYXlN ZXNzYWdlOmZ1bmN0aW9uKHcseCx2KXt2YXIgdD0zRHRoaXM7dGhpcy5zY3JvbGw9ClRvVG9wKCk7 dmFyIHU9M0R0aGlzLiRtZXNzYWdlcygpLHI9M0QkKCI8ZGl2Lz4iKS5hZGRDbGFzcyh3KyJtZXNz YWdlIikuaHRtbD0KKHgpO2lmKCFfLmlzRW1wdHkodikpe3ZhciBzPTNEJCgnPGEgaHJlZj0zRCJq YXZhc2NyaXB0OnZvaWQoMCkiPkRldGFpbHM8L2E+PQonKS5jbGljayhmdW5jdGlvbigpe0dhbGF4 eS5tb2RhbC5zaG93KHQuX21lc3NhZ2VUb01vZGFsT3B0aW9ucyh3LHgsdikpO3JldHU9CnJuIGZh bHNlfSk7ci5hcHBlbmQoIiAiLHMpfXJldHVybiB1LmFwcGVuZChyKX0sX21lc3NhZ2VUb01vZGFs T3B0aW9uczpmdW5jdD0KaW9uKHUseCx0KXt2YXIgcj0zRHRoaXMscz0zRHt0aXRsZToiRGV0YWls cyJ9O2lmKF8uaXNPYmplY3QodCkpe3Q9M0RfLm9taXQoPQp0LF8uZnVuY3Rpb25zKHQpKTt2YXIg dz0zREpTT04uc3RyaW5naWZ5KHQsbnVsbCwiICAiKSx2PTNEJCgiPHByZS8+IikudGV4dCg9Cncp O3MuYm9keT0zRCQoIjxkaXYvPiIpLmFwcGVuZCh2KX1lbHNle3MuYm9keT0zRCQoIjxkaXYvPiIp Lmh0bWwodCl9cy5idXR0bz0KbnM9M0R7T2s6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlkZSgp O3IuY2xlYXJNZXNzYWdlcygpfX07cmV0dXJuIHN9LGNsZWFyPQpNZXNzYWdlczpmdW5jdGlvbihz KXt2YXIgcj0zRCFfLmlzVW5kZWZpbmVkKHMpPyQocy5jdXJyZW50VGFyZ2V0KTp0aGlzLiRtZXM9 CnNhZ2VzKCkuY2hpbGRyZW4oJ1tjbGFzcyQ9M0QibWVzc2FnZSJdJyk7ci5mYWRlT3V0KHRoaXMu ZnhTcGVlZCxmdW5jdGlvbigpez0KJCh0aGlzKS5yZW1vdmUoKX0pO3JldHVybiB0aGlzfSxzY3Jv bGxUb0hpZDpmdW5jdGlvbihyKXtyZXR1cm4gdGhpcy5zY3JvbGxUPQpvSXRlbShfLmZpcnN0KHRo aXMudmlld3NXaGVyZU1vZGVsKHtoaWQ6cn0pKSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJu Ikg9CmlzdG9yeVBhbmVsKCIrKCh0aGlzLm1vZGVsKT8odGhpcy5tb2RlbC5nZXQoIm5hbWUiKSk6 KCIiKSkrIikifX0pO20ucHJvdG90eT0KcGUudGVtcGxhdGVzPTNEKGZ1bmN0aW9uKCl7dmFyIHI9 M0RxLndyYXBUZW1wbGF0ZShbJzxkaXYgY2xhc3M9M0QiY29udHJvbHMiPQo+JywnPGRpdiBjbGFz cz0zRCJ0aXRsZSI+JywnPGRpdiBjbGFzcz0zRCJuYW1lIj48JT0zRCBoaXN0b3J5Lm5hbWUgJT48 L2Rpdj49CicsIjwvZGl2PiIsJzxkaXYgY2xhc3M9M0Qic3VidGl0bGUiPjwvZGl2PicsJzxkaXYg Y2xhc3M9M0QiaGlzdG9yeS1zaXplIj48JT0KPTNEIGhpc3RvcnkubmljZV9zaXplICU+PC9kaXY+ JywnPGRpdiBjbGFzcz0zRCJhY3Rpb25zIj48L2Rpdj4nLCc8ZGl2IGNsYXNzPQo9M0QibWVzc2Fn ZXMiPicsIjwlIGlmKCBoaXN0b3J5LmRlbGV0ZWQgJiYgaGlzdG9yeS5wdXJnZWQgKXsgJT4iLCc8 ZGl2IGNsYXM9CnM9M0QiZGVsZXRlZC1tc2cgd2FybmluZ21lc3NhZ2VzbWFsbCI+JyxnKCJUaGlz IGhpc3RvcnkgaGFzIGJlZW4gcHVyZ2VkIGFuZD0KIGRlbGV0ZWQiKSwiPC9kaXY+IiwiPCUgfSBl bHNlIGlmKCBoaXN0b3J5LmRlbGV0ZWQgKXsgJT4iLCc8ZGl2IGNsYXNzPTNEImRlPQpsZXRlZC1t c2cgd2FybmluZ21lc3NhZ2VzbWFsbCI+JyxnKCJUaGlzIGhpc3RvcnkgaGFzIGJlZW4gZGVsZXRl ZCIpLCI8L2Rpdj49CiIsIjwlIH0gZWxzZSBpZiggaGlzdG9yeS5wdXJnZWQgKXsgJT4iLCc8ZGl2 IGNsYXNzPTNEImRlbGV0ZWQtbXNnIHdhcm5pbmdtZT0Kc3NhZ2VzbWFsbCI+JyxnKCJUaGlzIGhp c3RvcnkgaGFzIGJlZW4gcHVyZ2VkIiksIjwvZGl2PiIsIjwlIH0gJT4iLCI8JSBpZiggPQpoaXN0 b3J5Lm1lc3NhZ2UgKXsgJT4iLCc8ZGl2IGNsYXNzPTNEIjwlPTNEIGhpc3RvcnkubWVzc2FnZS5s ZXZlbCB8fCAiaW5mbyI9CiAlPm1lc3NhZ2VzbWFsbCI+JywiPCU9M0QgaGlzdG9yeS5tZXNzYWdl LnRleHQgJT4iLCI8L2Rpdj4iLCI8JSB9ICU+IiwiPC9kaT0Kdj4iLCc8ZGl2IGNsYXNzPTNEInRh Z3MtZGlzcGxheSI+PC9kaXY+JywnPGRpdiBjbGFzcz0zRCJhbm5vdGF0aW9uLWRpc3BsYXkiPQo+ PC9kaXY+JywnPGRpdiBjbGFzcz0zRCJzZWFyY2giPicsJzxkaXYgY2xhc3M9M0Qic2VhcmNoLWlu cHV0Ij48L2Rpdj4nLCI8L2Q9Cml2PiIsJzxkaXYgY2xhc3M9M0QibGlzdC1hY3Rpb25zIj4nLCc8 ZGl2IGNsYXNzPTNEImJ0bi1ncm91cCI+JywnPGJ1dHRvbiBjbD0KYXNzPTNEInNlbGVjdC1hbGwg YnRuIGJ0bi1kZWZhdWx0IicsJ2RhdGEtbW9kZT0zRCJzZWxlY3QiPicsZygiQWxsIiksIjwvYnV0 PQp0b24+IiwnPGJ1dHRvbiBjbGFzcz0zRCJkZXNlbGVjdC1hbGwgYnRuIGJ0bi1kZWZhdWx0Iics J2RhdGEtbW9kZT0zRCJzZWxlY3Q9CiI+JyxnKCJOb25lIiksIjwvYnV0dG9uPiIsIjwvZGl2PiIs JzxkaXYgY2xhc3M9M0QibGlzdC1hY3Rpb24tbWVudSBidG4tZ3JvdT0KcCI+JywiPC9kaXY+Iiwi PC9kaXY+IiwiPC9kaXY+Il0sImhpc3RvcnkiKTtyZXR1cm4gXy5leHRlbmQoXy5jbG9uZShwLnBy b3RvPQp0eXBlLnRlbXBsYXRlcykse2NvbnRyb2xzOnJ9KX0oKSk7cmV0dXJue0hpc3RvcnlQYW5l bDptfX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKClJlcG9zaXRvcnkgVVJMOiBodHRw czovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsLwoKLS0KClRoaXMgaXMgYSBj b21taXQgbm90aWZpY2F0aW9uIGZyb20gYml0YnVja2V0Lm9yZy4gWW91IGFyZSByZWNlaXZpbmcK dGhpcyBiZWNhdXNlIHlvdSBoYXZlIHRoZSBzZXJ2aWNlIGVuYWJsZWQsIGFkZHJlc3NpbmcgdGhl IHJlY2lwaWVudCBvZgp0aGlzIGVtYWlsLgo
participants (1)
-
commits-noreply@bitbucket.org