From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Robert Scheck To: git-commits@fedoraproject.org Subject: [rpms/playonlinux] f43: Add patch to replace urllib.request.URLopener (#2403290) Date: Fri, 12 Jun 2026 22:38:34 GMT Message-ID: <178130391478.1.16851748874638869715.rpms-playonlinux-91959b62290c@fedoraproject.org> List-ID: X-Git-Repo: rpms/playonlinux X-Git-Branch: f43 X-Git-Rev: 91959b62290c886f57f98f151591de15b811c529 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvcGxheW9ubGludXgK QnJhbmNoIDogZjQzCkNvbW1pdCA6IDkxOTU5YjYyMjkwYzg4NmY1N2Y5OGYxNTE1OTFkZTE1Yjgx MWM1MjkKQXV0aG9yIDogUm9iZXJ0IFNjaGVjayA8cm9iZXJ0QGZlZG9yYXByb2plY3Qub3JnPgpE YXRlICAgOiAyMDI2LTA2LTEzVDAwOjM2OjI1KzAyOjAwClN0YXRzICA6ICs0OTIwLy00ODA1IGlu IDMgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL3Bs YXlvbmxpbnV4L2MvOTE5NTliNjIyOTBjODg2ZjU3Zjk4ZjE1MTU5MWRlMTViODExYzUyOT9icmFu Y2g9ZjQzCgpMb2c6CkFkZCBwYXRjaCB0byByZXBsYWNlIHVybGxpYi5yZXF1ZXN0LlVSTG9wZW5l ciAoIzI0MDMyOTApCgotLS0KZGlmZiAtLWdpdCBhL3BsYXlvbmxpbnV4LTQuNC1naXQ3NmE2NTgw LnBhdGNoIGIvcGxheW9ubGludXgtNC40LWdpdDc2YTY1ODAucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDVmODE1OGUuLjAwMDAwMDAKLS0tIGEvcGxheW9ubGludXgtNC40LWdp dDc2YTY1ODAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0ODAzICswLDAgQEAKLUZyb20gOWZm NGI3NjE2OGE3YzY0ZTRhMmRlN2JlNTE1ODYxOGZiYjEyNDJhMiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKLUZyb206ID0/VVRGLTg/cT9RdWVudGluPTIwUD1DMz1BMnJpcz89IDxnaXRodWJAcGxh eW9ubGludXguY29tPgotRGF0ZTogU3VuLCAxNyBNYXkgMjAyMCAxNjoxNTozMCArMDIwMAotU3Vi amVjdDogW1BBVENIIDAxLzMzXSBVcGRhdGUgQ0hBTkdFTE9HLm1kCi0KLS0tLQotIENIQU5HRUxP Ry5tZCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0t Z2l0IGEvQ0hBTkdFTE9HLm1kIGIvQ0hBTkdFTE9HLm1kCi1pbmRleCBhNTg5NjI1YzMuLmNkZTJk ODJjNCAxMDA2NDQKLS0tLSBhL0NIQU5HRUxPRy5tZAotKysrIGIvQ0hBTkdFTE9HLm1kCi1AQCAt MSwzICsxLDYgQEAKLSsjIDQuNAotKyogUHl0aG9uIDMgc3VwcG9ydCAKLSsKLSAjIDQuMy40Ci0g KiBGaXhlZCBzb21lIGJ1Z3MgaW4gdGhlIHdpbmV2ZXJzaW9uIHByb2Nlc3MKLSAqIEJlZ2luaW5n IG9mIGNvZGUgY2xlYW5pbmcgYW5kIHJlZmFjdG9yaW5nCi0KLUZyb20gNzg4ZmFkMTZlZmY0OTA0 MTkzZTRlOWM1MmIyMzY3MjUzNWEyM2MzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206 IEdpbGxlcyA8Z2lsbGVzLndpYmVyQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMzAgTWF5IDIwMjAg MTE6MTk6MzUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8zM10gUmVtb3ZpbmcgU2V0U3BhY2lu ZyBmdW50aW9uCi0KLS0tLQotIHB5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93 LnB5ICAgICAgICAgfCAyICstCi0gcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5k b3dOb3RlYm9vay5weSB8IDIgKy0KLSBweXRob24vZGVidWcucHkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMiArLQotIHB5dGhvbi9pbnN0YWxsL0luc3RhbGxXaW5kb3cucHkg ICAgICAgICAgICAgICAgICAgfCAyICstCi0gcHl0aG9uL21haW53aW5kb3cucHkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBweXRob24vb3B0aW9ucy5weSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIHB5dGhvbi9zZXR1cHdpbmRvdy9QT0xfU2V0 dXBGcmFtZS5weSAgICAgICAgICAgICAgfCAyICstCi0gcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2lu ZVZlcnNpb25zTm90ZWJvb2sucHkgICAgICB8IDQgKystLQotIDggZmlsZXMgY2hhbmdlZCwgOSBp bnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL2NvbmZp Z3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3cucHkgYi9weXRob24vY29uZmlndXJld2luZG93L0Nv bmZpZ3VyZVdpbmRvdy5weQotaW5kZXggMzBmNzc5ZGIxLi5hMjYzMjE0MzcgMTAwNzU1Ci0tLS0g YS9weXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvdy5weQotKysrIGIvcHl0aG9u L2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3cucHkKLUBAIC03NSw3ICs3NSw3IEBAIGRl ZiBfX2luaXRfXyhzZWxmLHBhcmVudCxpZCx0aXRsZSxzaG9ydGN1dCwgaXNQcmVmaXggPSBGYWxz ZSk6Ci0gICAgICAgICBzZWxmLkJpbmQod3guRVZUX0JVVFRPTiwgc2VsZi5EZWxldGVQcmVmaXgs IGlkPTEwMDIpCi0gCi0gCi0tICAgICAgICBzZWxmLmxpc3RfZ2FtZS5TZXRTcGFjaW5nKDApCi0r ICAgICAgICAjc2VsZi5saXN0X2dhbWUuU2V0U3BhY2luZygwKQotICAgICAgICAgc2VsZi5saXN0 X2dhbWUuU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VzKQotIAotIAotZGlmZiAtLWdpdCBhL3B5dGhv bi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJvb2sucHkgYi9weXRob24vY29u ZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29rLnB5Ci1pbmRleCA4YjRlMzg3ZWEu Ljk3M2Q5YmJkMyAxMDA2NDQKLS0tLSBhL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJl V2luZG93Tm90ZWJvb2sucHkKLSsrKyBiL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJl V2luZG93Tm90ZWJvb2sucHkKLUBAIC0yNjksNyArMjY5LDcgQEAgZGVmIFBhY2thZ2VzKHNlbGYs IG5vbSk6Ci0gCi0gICAgICAgICBzZWxmLk1lbnUgPSB3eC5UcmVlQ3RybChzZWxmLnBhbmVsUGFj a2FnZXMsIDk5LCBwb3M9KDE1LCA3NSksIHNpemU9KDUzMCwgMjYwKSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0eWxlPXd4LlRSX0hJREVfUk9PVCB8IHd4LlRSX0ZVTExfUk9X X0hJR0hMSUdIVCB8IFZhcmlhYmxlcy53aWRnZXRfYm9yZGVycykKLS0gICAgICAgIHNlbGYuTWVu dS5TZXRTcGFjaW5nKDApOwotKyAgICAgICAgI3NlbGYuTWVudS5TZXRTcGFjaW5nKDApOwotICAg ICAgICAgc2VsZi5NZW51LlNldEltYWdlTGlzdChzZWxmLmltYWdlUGFja2FnZXMpCi0gICAgICAg ICBzZWxmLmltYWdlUGFja2FnZXMuUmVtb3ZlQWxsKCkKLSAKLWRpZmYgLS1naXQgYS9weXRob24v ZGVidWcucHkgYi9weXRob24vZGVidWcucHkKLWluZGV4IDAyMjFlODljMC4uNDNlOGNmMDIxIDEw MDc1NQotLS0tIGEvcHl0aG9uL2RlYnVnLnB5Ci0rKysgYi9weXRob24vZGVidWcucHkKLUBAIC02 MCw3ICs2MCw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLHBhcmVudCxpZCx0aXRsZSxsb2djaGVjaz0i L2Rldi9udWxsIixsb2d0eXBlPU5vbmUpOgotICAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9UUkVF X1NFTF9DSEFOR0VELCBzZWxmLmFuYWx5c2VMb2csIGlkPTkwMCkKLSAKLSAKLS0gICAgICAgIHNl bGYubGlzdF9nYW1lLlNldFNwYWNpbmcoMCk7Ci0rICAgICAgICAjc2VsZi5saXN0X2dhbWUuU2V0 U3BhY2luZygwKTsKLSAgICAgICAgIHNlbGYubGlzdF9nYW1lLlNldEltYWdlTGlzdChzZWxmLmlt YWdlcykKLSAKLSAKLWRpZmYgLS1naXQgYS9weXRob24vaW5zdGFsbC9JbnN0YWxsV2luZG93LnB5 IGIvcHl0aG9uL2luc3RhbGwvSW5zdGFsbFdpbmRvdy5weQotaW5kZXggMjdhNmI1MWE1Li41YjU4 NDc3NGQgMTAwNzU1Ci0tLS0gYS9weXRob24vaW5zdGFsbC9JbnN0YWxsV2luZG93LnB5Ci0rKysg Yi9weXRob24vaW5zdGFsbC9JbnN0YWxsV2luZG93LnB5Ci1AQCAtMTgzLDcgKzE4Myw3IEBAIGRl ZiBfY3JlYXRlQXBwTmF2aWdhdGlvbihzZWxmKToKLSAgICAgICAgIHNlbGYuYXBwc0xpc3QgPSB3 eC5UcmVlQ3RybChzZWxmLmFwcE5hdmlnYXRpb25QYW5lbCwgMTA2LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXd4LlRSX0hJREVfUk9PVCB8IHd4LlRSX0ZVTExf Uk9XX0hJR0hMSUdIVCB8IFZhcmlhYmxlcy53aWRnZXRfYm9yZGVycykKLSAgICAgICAgIHNlbGYu YXBwc0xpc3QuU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VzYXBwcykKLS0gICAgICAgIHNlbGYuYXBw c0xpc3QuU2V0U3BhY2luZygwKQotKyAgICAgICAgI3NlbGYuYXBwc0xpc3QuU2V0U3BhY2luZygw KQotIAotICAgICAgICAgc2VsZi5hcHBOYXZpZ2F0aW9uU2l6ZXIuQWRkU3BhY2VyKDEwKQotICAg ICAgICAgc2VsZi5hcHBOYXZpZ2F0aW9uU2l6ZXIuQWRkKHNlbGYuYXBwc0xpc3QsIDQsIHd4LkVY UEFORCwgNSkKLWRpZmYgLS1naXQgYS9weXRob24vbWFpbndpbmRvdy5weSBiL3B5dGhvbi9tYWlu d2luZG93LnB5Ci1pbmRleCA3YzIxMTQyZGYuLjhkZjFmZjE0YiAxMDA3NTUKLS0tLSBhL3B5dGhv bi9tYWlud2luZG93LnB5Ci0rKysgYi9weXRob24vbWFpbndpbmRvdy5weQotQEAgLTI0MCw3ICsy NDAsNyBAQCBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCBpZCwgdGl0bGUpOgotIAotICAgICAg ICAgIyMgTGlzdCBnYW1lCi0gICAgICAgICBzZWxmLmxpc3RfZ2FtZSA9IHd4LlRyZWVDdHJsKHNl bGYsIDEwNSwgc3R5bGU9d3guVFJfSElERV9ST09UIHwgd3guVFJfRlVMTF9ST1dfSElHSExJR0hU KQotLSAgICAgICAgc2VsZi5saXN0X2dhbWUuU2V0U3BhY2luZygwKQotKyAgICAgICAgI3NlbGYu bGlzdF9nYW1lLlNldFNwYWNpbmcoMCkKLSAgICAgICAgIHNlbGYubGlzdF9nYW1lLlNldEluZGVu dCg1KQotICAgICAgICAgc2VsZi5saXN0X2dhbWUuU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VzKQot ICAgICAgICAgc2VsZi5tZW51X2dhdWNoZSA9IHd4LlBhbmVsKHNlbGYsIC0xKQotZGlmZiAtLWdp dCBhL3B5dGhvbi9vcHRpb25zLnB5IGIvcHl0aG9uL29wdGlvbnMucHkKLWluZGV4IGE1NGMxMTAw MC4uNzIzMDczY2U0IDEwMDc1NQotLS0tIGEvcHl0aG9uL29wdGlvbnMucHkKLSsrKyBiL3B5dGhv bi9vcHRpb25zLnB5Ci1AQCAtMTg3LDcgKzE4Nyw3IEBAIGRlZiBQbHVnaW5zKHNlbGYsIG5vbSk6 Ci0gICAgICAgICBzZWxmLnR4dFBsdWdpbiA9IHd4LlN0YXRpY1RleHQoc2VsZi5wYW5lbFBsdWdp bnMsIC0xLCBfKCJJbnN0YWxsZWQgcGx1Z2lucyIpLCBzaXplPXd4LkRlZmF1bHRTaXplKQotICAg ICAgICAgc2VsZi50eHRQbHVnaW4uU2V0Rm9udChzZWxmLmZvbnRUaXRsZSkKLSAgICAgICAgIHNl bGYucGx1Z2lubGlzdCA9IHd4LlRyZWVDdHJsKHNlbGYucGFuZWxQbHVnaW5zLCAyMjAsIHN0eWxl PVZhcmlhYmxlcy53aWRnZXRfYm9yZGVyc3x3eC5UUl9ISURFX1JPT1R8d3guVFJfRlVMTF9ST1df SElHSExJR0hUKQotLSAgICAgICAgc2VsZi5wbHVnaW5saXN0LlNldFNwYWNpbmcoMCkKLSsgICAg ICAgICNzZWxmLnBsdWdpbmxpc3QuU2V0U3BhY2luZygwKQotIAotICAgICAgICAgc2VsZi5wbHVn aW5JbWdMaXN0ID0gd3guSW1hZ2VMaXN0KDE2LDE2KQotIAotZGlmZiAtLWdpdCBhL3B5dGhvbi9z ZXR1cHdpbmRvdy9QT0xfU2V0dXBGcmFtZS5weSBiL3B5dGhvbi9zZXR1cHdpbmRvdy9QT0xfU2V0 dXBGcmFtZS5weQotaW5kZXggNjZiZWU4NTMzLi4zM2Q3M2QzOGEgMTAwNzU1Ci0tLS0gYS9weXRo b24vc2V0dXB3aW5kb3cvUE9MX1NldHVwRnJhbWUucHkKLSsrKyBiL3B5dGhvbi9zZXR1cHdpbmRv dy9QT0xfU2V0dXBGcmFtZS5weQotQEAgLTIxMiw3ICsyMTIsNyBAQCBkZWYgX2NyZWF0ZVVJKHNl bGYpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5UUl9I SURFX1JPT1QgfCB3eC5UUl9GVUxMX1JPV19ISUdITElHSFQgfCBWYXJpYWJsZXMud2lkZ2V0X2Jv cmRlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcz0oMjUsIDI1 KSwgc2l6ZT0oNDYwLCAyMjApKQotICAgICAgICAgc2VsZi5NZW51R2FtZXMuU2V0SW1hZ2VMaXN0 KHNlbGYuaW1hZ2VzKQotLSAgICAgICAgc2VsZi5NZW51R2FtZXMuU2V0U3BhY2luZygwKQotKyAg ICAgICAgI3NlbGYuTWVudUdhbWVzLlNldFNwYWNpbmcoMCkKLSAKLSAgICAgICAgICMgTG9naW4K LSAgICAgICAgIHNlbGYubG9naW4gPSB3eC5TdGF0aWNUZXh0KHNlbGYuY29udGVudFBhbmVsLCAt MSwgXygiTG9naW46ICIpLCBwb3M9KDIwLCA0MCksIHNpemU9KDQ2MCwgMjApKQotZGlmZiAtLWdp dCBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc05vdGVib29rLnB5IGIvcHl0aG9u L3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zTm90ZWJvb2sucHkKLWluZGV4IGUwODhhYmViMi4u ZWM1ZjEyNTM1IDEwMDY0NAotLS0tIGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25z Tm90ZWJvb2sucHkKLSsrKyBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc05vdGVi b29rLnB5Ci1AQCAtMzksNyArMzksNyBAQCBkZWYgX2NyZWF0ZUluc3RhbGxlZFdpbmVWZXJzaW9u c1BhbmVsKHNlbGYsIGFyY2gpOgotICAgICAgICAgc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNU cmVlU2VsZWN0b3JbYXJjaF0gPSB3eC5UcmVlQ3RybChpbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5l bCwgMTA3ICsgc2VsZi5jYWxjdWxhdGVFdmVudERlbHRhKGFyY2gpLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHls ZT13eC5UUl9ISURFX1JPT1QgfCB3eC5UUl9GVUxMX1JPV19ISUdITElHSFQgfCBWYXJpYWJsZXMu d2lkZ2V0X2JvcmRlcnMpCi0gICAgICAgICBzZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVT ZWxlY3RvclthcmNoXS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZXNhcHBzX2lbYXJjaF0pCi0tICAg ICAgICBzZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5TZXRTcGFj aW5nKDApCi0rICAgICAgICAjc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3Jb YXJjaF0uU2V0U3BhY2luZygwKQotICAgICAgICAgaW5zdGFsbGVkV2luZVZlcnNpb25zU2l6ZXIu QWRkKHNlbGYuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLCAxLCB3eC5F WFBBTkQpCi0gICAgICAgICBpbnN0YWxsZWRXaW5lVmVyc2lvbnNTaXplci5BZGRTcGFjZXIoMTAp Ci0gCi1AQCAtNTUsNyArNTUsNyBAQCBkZWYgX2NyZWF0ZUF2YWlsYWJsZVdpbmVWZXJzaW9uc1Bh bmVsKHNlbGYsIGFyY2gpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5UUl9ISURFX1JPT1QgfCB3eC5U Ul9GVUxMX1JPV19ISUdITElHSFQgfCBWYXJpYWJsZXMud2lkZ2V0X2JvcmRlcnMsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemU9KDMyMCwgMzAwKSwgcG9zPSgxMCwgMzUpKQotICAgICAgICAgc2VsZi5hdmFpbGFi bGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2Vz YXBwc1thcmNoXSkKLS0gICAgICAgIHNlbGYuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVj dG9yW2FyY2hdLlNldFNwYWNpbmcoMCkKLSsgICAgICAgICNzZWxmLmF2YWlsYWJsZVdpbmVWZXJz aW9uc1RyZWVTZWxlY3RvclthcmNoXS5TZXRTcGFjaW5nKDApCi0gICAgICAgICBhdmFpbGFibGVX aW5lVmVyc2lvbnNTaXplci5BZGQoc2VsZi5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0 b3JbYXJjaF0sIDEsIHd4LkVYUEFORCkKLSAgICAgICAgIGF2YWlsYWJsZVdpbmVWZXJzaW9uc1Np emVyLkFkZFNwYWNlcigxMCkKLSAKLQotRnJvbSA3N2EzY2EzYmUyOTNlYmNhZmEyNDAwNzAzYTVk ZDQwNzlhNWYyMDBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogR2lsbGVzIDxnaWxs ZXMud2liZXJAZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBNYXkgMjAyMCAxMTozMjoxMyArMDIw MAotU3ViamVjdDogW1BBVENIIDAzLzMzXSBTb2x2aW5nIHBsdWdpbmcgbWFuYWdlciBpc3N1ZSAo ZXh0ZW5zaW9uIG1hbmFnZW1lbnQpCi0KLS0tLQotIHB5dGhvbi9vcHRpb25zLnB5IHwgMTEgKysr KysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygt KQotCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL29wdGlvbnMucHkgYi9weXRob24vb3B0aW9ucy5weQot aW5kZXggNzIzMDczY2U0Li5mNDBmMjZhNzAgMTAwNzU1Ci0tLS0gYS9weXRob24vb3B0aW9ucy5w eQotKysrIGIvcHl0aG9uL29wdGlvbnMucHkKLUBAIC0yMjksOSArMjI5LDkgQEAgZGVmIGdlbmVy YXRlRXh0cyhzZWxmKToKLSAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJcbiIsIiIp Ci0gICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXQoIj0iKQotICAgICAgICAgICAgIGxpbmVy ID0gIkxpbmUgJXMiICUgaQotLSAgICAgICAgICAgIHNlbGYubGlzdF9leHQuSW5zZXJ0U3RyaW5n SXRlbShpLCBsaW5lcikKLS0gICAgICAgICAgICBzZWxmLmxpc3RfZXh0LlNldFN0cmluZ0l0ZW0o aSwgMCwgbGluZVswXSkKLS0gICAgICAgICAgICBzZWxmLmxpc3RfZXh0LlNldFN0cmluZ0l0ZW0o aSwgMSwgbGluZVsxXSkKLSsgICAgICAgICAgICBzZWxmLmxpc3RfZXh0Lkluc2VydEl0ZW0oaSwg bGluZXIpCi0rICAgICAgICAgICAgc2VsZi5saXN0X2V4dC5TZXRJdGVtKGksIDAsIGxpbmVbMF0p Ci0rICAgICAgICAgICAgc2VsZi5saXN0X2V4dC5TZXRJdGVtKGksIDEsIGxpbmVbMV0pCi0gICAg ICAgICAgICAgaSArPSAxCi0gICAgICAgICBzZWxmLmFwcF9pbnN0YWxsZWRfdGV4dC5IaWRlKCkK LSAgICAgICAgIHNlbGYuYXBwX2luc3RhbGxlZC5IaWRlKCkKLUBAIC0yNDksOCArMjQ5LDkgQEAg ZGVmIGVkaXRFeHQoc2VsZiwgZXZlbnQpOgotICAgICAgICAgc2VsZi5hcHBfaW5zdGFsbGVkLlNo b3coKQotICAgICAgICAgc2VsZi5kZWxldGVfZXh0LlNob3coKQotIAotLSAgICAgICAgc2VsZi5h cHBfc2VsZWN0ZWQgPSBzZWxmLmV4dHNbZXZlbnQubV9pdGVtSW5kZXhdLnNwbGl0KCI9IilbMV0K LS0gICAgICAgIHNlbGYuZXh0X3NlbGVjdGVkID0gc2VsZi5leHRzW2V2ZW50Lm1faXRlbUluZGV4 XS5zcGxpdCgiPSIpWzBdCi0rICAgICAgICBpbmQgPSBldmVudC5HZXRJbmRleCgpCi0rICAgICAg ICBzZWxmLmFwcF9zZWxlY3RlZCA9IHNlbGYubGlzdF9leHQuR2V0SXRlbShpbmQsMSkuR2V0VGV4 dCgpCi0rICAgICAgICBzZWxmLmV4dF9zZWxlY3RlZCA9IHNlbGYubGlzdF9leHQuR2V0SXRlbShp bmQsMCkuR2V0VGV4dCgpCi0gCi0gICAgICAgICBzZWxmLmFwcF9pbnN0YWxsZWQuU2V0VmFsdWUo c2VsZi5hcHBfc2VsZWN0ZWQucmVwbGFjZSgiXG4iLCIiKS5yZXBsYWNlKCJcciIsIiIpKQotIAot Ci1Gcm9tIGE2NTZmNWIyYmRkMjMzNzVlM2Q5NTQ3YTljMzhjY2Y5OWUyZGM2NzAgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCi1Gcm9tOiBHaWxsZXMgPGdpbGxlcy53aWJlckBnbWFpbC5jb20+Ci1E YXRlOiBTYXQsIDMwIE1heSAyMDIwIDE0OjM0OjI4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQv MzNdIFNvbHZpbmcgZGlmZmVyZW50IGlzc3VlIG9uIGRlYnVnIHdpbmRvdwotCi0tLS0KLSBweXRo b24vZGVidWcucHkgICAgICAgICB8IDcgKysrKy0tLQotIHB5dGhvbi9saWIvVmFyaWFibGVzLnB5 IHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQotCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL2RlYnVnLnB5IGIvcHl0aG9uL2RlYnVnLnB5Ci1pbmRl eCA0M2U4Y2YwMjEuLjFlMzQ0ZWRjOCAxMDA3NTUKLS0tLSBhL3B5dGhvbi9kZWJ1Zy5weQotKysr IGIvcHl0aG9uL2RlYnVnLnB5Ci1AQCAtMzgsNyArMzgsNyBAQCBkZWYgX19pbml0X18oc2VsZixw YXJlbnQsaWQsdGl0bGUsbG9nY2hlY2s9Ii9kZXYvbnVsbCIsbG9ndHlwZT1Ob25lKToKLSAKLSAg ICAgICAgIHd4LkZyYW1lLl9faW5pdF9fKHNlbGYsIHBhcmVudCwgLTEsIHRpdGxlLCBzaXplID0g KDgxMCwgNjAwK1ZhcmlhYmxlcy53aW5kb3dzX2FkZF9zaXplKSwgc3R5bGUgPSB3eC5DTE9TRV9C T1ggfCB3eC5DQVBUSU9OIHwgd3guTUlOSU1JWkVfQk9YKQotICAgICAgICAgc2VsZi5TZXRJY29u KHd4Lkljb24oVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudisiL2V0Yy9wbGF5b25saW51eC5wbmci LCB3eC5CSVRNQVBfVFlQRV9BTlkpKQotLSAgICAgICAgc2VsZi5TZXRUaXRsZShfKCd7MH0gZGVi dWdnZXInKS5mb3JtYXQob3MuZW52aXJvblsiQVBQTElDQVRJT05fVElUTEUiXSkpCi0rICAgICAg ICBzZWxmLlNldFRpdGxlKHRpdGxlKQotICAgICAgICAgI3NlbGYucGFuZWxGZW5wID0gd3guUGFu ZWwoc2VsZiwgLTEpCi0gCi0gICAgICAgICBzZWxmLnByZWZpeGVzX2l0ZW0gPSB7fQotQEAgLTc5 LDcgKzc5LDcgQEAgZGVmIF9faW5pdF9fKHNlbGYscGFyZW50LGlkLHRpdGxlLGxvZ2NoZWNrPSIv ZGV2L251bGwiLGxvZ3R5cGU9Tm9uZSk6Ci0gICAgICAgICBzZWxmLmxvZ19yZWFkZXIgPSB3eC5U ZXh0Q3RybChzZWxmLnBhbmVsVGV4dCwgMTAwLCAiIiwgc2l6ZT13eC5TaXplKDU5MCw1MDApLCBw b3M9KDIsMiksIHN0eWxlPVZhcmlhYmxlcy53aWRnZXRfYm9yZGVyc3x3eC5URV9SSUNIMnx3eC5U RV9SRUFET05MWXx3eC5URV9NVUxUSUxJTkUpCi0gICAgICAgICBzZWxmLmxvZ19yZWFkZXIuQmlu ZCh3eC5FVlRfU0VUX0ZPQ1VTLCBzZWxmLk9uRm9jdXMpCi0gICAgICAgICBzZWxmLm9wZW5UZXh0 RWRpdCA9IHd4LkJ1dHRvbihzZWxmLnBhbmVsTm90RW1wdHksIDEwMSwgXygiTG9jYXRlIHRoaXMg bG9nZmlsZSIpLCBzaXplPSg0MDAsMzApLCBwb3M9KDcwLDUxMikpCi0tICAgICAgICBzZWxmLnJl cG9ydFByb2JsZW0gPSB3eC5CdXR0b24oc2VsZi5wYW5lbE5vdEVtcHR5LCAxMDIsICIiLCBzaXpl PSg0MDAsMzApLCBwb3M9KDcwLDU1MikpCi0rICAgICAgICBzZWxmLnJlcG9ydFByb2JsZW0gPSB3 eC5CdXR0b24oc2VsZi5wYW5lbE5vdEVtcHR5LCAxMDIsIF8oIkJ1ZyByZXBvcnQiKSwgc2l6ZT0o NDAwLDMwKSwgcG9zPSg3MCw1NTIpKQotIAotICAgICAgICAgaWYobG9nY2hlY2sgPT0gIi9kZXYv bnVsbCIpOgotICAgICAgICAgICAgIHNlbGYuSGlkZUxvZ0ZpbGUoKQotQEAgLTk1LDcgKzk1LDgg QEAgZGVmIGJ1Z1JlcG9ydChzZWxmLCBldmVudCk6Ci0gICAgICAgICBuZXdfZW52ID0gb3MuZW52 aXJvbgotICAgICAgICAgbmV3X2VudlsiTE9HVElUTEUiXSA9IHNlbGYubG9nbmFtZQotICAgICAg ICAgc3VicHJvY2Vzcy5Qb3BlbihbImJhc2giLCBWYXJpYWJsZXMucGxheW9ubGludXhfZW52KyIv YmFzaC9idWdfcmVwb3J0Il0sIGVudj1uZXdfZW52KQotLSAgICAgICAgc2VsZi5yZXBvcnRQcm9i bGVtLkVuYWJsZShGYWxzZSkKLSsgICAgICAgICMgRG9lc24ndCB3b3JrIGlmIGNhbmNlbCBvbiBQ T0wgV2luZG93IDogbmVlZCB0byBmaW5kIGFub3RoZXIgd2F5IC4uLgotKyAgICAgICAgI3NlbGYu cmVwb3J0UHJvYmxlbS5FbmFibGUoRmFsc2UpCi0gCi0gICAgIGRlZiBsb2NhdGUoc2VsZiwgZXZl bnQpOgotICAgICAgICAgaWYoc2VsZi5sb2d0eXBlID09IDApOgotZGlmZiAtLWdpdCBhL3B5dGhv bi9saWIvVmFyaWFibGVzLnB5IGIvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkKLWluZGV4IDA1NWZl MTdmOS4uOGJlZDc2MDFiIDEwMDc1NQotLS0tIGEvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkKLSsr KyBiL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5Ci1AQCAtNTEsNyArNTEsNyBAQAotICAgICAgICAg d2luZG93c19hZGRfc2l6ZSA9IDAKLSAgICAgICAgIHdpbmRvd3NfYWRkX3BsYXlvbm1hYyA9IDAK LSAgICAgZWxzZToKLS0gICAgICAgIHdpbmRvd3NfYWRkX3NpemUgPSBkcGlGZXRjaGVyKCkuZmV0 Y2hfZXh0cmFfcGl4ZWwoKQotKyAgICAgICAgd2luZG93c19hZGRfc2l6ZSA9IGRwaUZldGNoZXIo KS5mZXRjaF9leHRyYV9waXhlbCgpKzYwCi0gICAgICAgICB3aW5kb3dzX2FkZF9wbGF5b25tYWMg PSAwCi0gCi0gICAgIHdpZGdldF9ib3JkZXJzID0gd3guUkFJU0VEX0JPUkRFUgotCi1Gcm9tIDAy YmVhYjA1ZDQyNTU4MDJjMjZkYjIwYTE4Nzg3MzQ5ZTliMTViYmMgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBHaWxsZXMgPGdpbGxlcy53aWJlckBnbWFpbC5jb20+Ci1EYXRlOiBTYXQs IDMwIE1heSAyMDIwIDE1OjE3OjMzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMzNdIFNvbHZp bmcgc21hbGwgYnVncwotCi0tLS0KLSBweXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdp bmRvd05vdGVib29rLnB5IHwgMiArKwotIHB5dGhvbi9pbnN0YWxsL0luc3RhbGxXaW5kb3cucHkg ICAgICAgICAgICAgICAgICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3B5dGhvbi9jb25maWd1cmV3aW5kb3cv Q29uZmlndXJlV2luZG93Tm90ZWJvb2sucHkgYi9weXRob24vY29uZmlndXJld2luZG93L0NvbmZp Z3VyZVdpbmRvd05vdGVib29rLnB5Ci1pbmRleCA5NzNkOWJiZDMuLjI5NjQ0M2U2NiAxMDA2NDQK LS0tLSBhL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJvb2sucHkK LSsrKyBiL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJvb2sucHkK LUBAIC00NjcsNiArNDY3LDggQEAgZGVmIG1pc2NfYnV0dG9uKHNlbGYsIGV2ZW50KToKLSAgICAg ICAgICAgICBzZWxmLkZpbGVEaWFsb2cuU2hvd01vZGFsKCkKLSAgICAgICAgICAgICBpZiAoc2Vs Zi5GaWxlRGlhbG9nLkdldFBhdGgoKSAhPSAiIik6Ci0gICAgICAgICAgICAgICAgIGZpbGVuYW1l ID0gc2VsZi5GaWxlRGlhbG9nLkdldFBhdGgoKQotKyAgICAgICAgICAgICAgICBpZiBub3Qgb3Mu cGF0aC5pc2ZpbGUoZmlsZW5hbWUpOgotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAg ICAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZW5hbWUpCi0gICAgICAg ICAgICAgICAgIGlmIChzZWxmLnNfaXNQcmVmaXggPT0gVHJ1ZSk6Ci0gICAgICAgICAgICAgICAg ICAgICBzdWJwcm9jZXNzLlBvcGVuKFsiYmFzaCIsIFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYg KyAiL2Jhc2gvUE9MX0NvbW1hbmQiLCAiLS1wcmVmaXgiLAotZGlmZiAtLWdpdCBhL3B5dGhvbi9p bnN0YWxsL0luc3RhbGxXaW5kb3cucHkgYi9weXRob24vaW5zdGFsbC9JbnN0YWxsV2luZG93LnB5 Ci1pbmRleCA1YjU4NDc3NGQuLjJlNDllNGExOCAxMDA3NTUKLS0tLSBhL3B5dGhvbi9pbnN0YWxs L0luc3RhbGxXaW5kb3cucHkKLSsrKyBiL3B5dGhvbi9pbnN0YWxsL0luc3RhbGxXaW5kb3cucHkK LUBAIC0zMzMsNyArMzMzLDcgQEAgZGVmIGNsb3NlYXBwKHNlbGYsIGV2ZW50KToKLSAKLSAgICAg ZGVmIG1hbnVhbChzZWxmLCBldmVudCk6Ci0gICAgICAgICBzZWxmLmxpdmUgPSAxCi0tICAgICAg ICBzZWxmLmluc3RhbGxhcHAoc2VsZikKLSsgICAgICAgIHNlbGYuaW5zdGFsbGFwcChldmVudCkK LSAKLSAgICAgZGVmIHNob3dTdGFycyhzZWxmLCBzdGFycyk6Ci0gICAgICAgICBzdGFyV2lkdGgg PSAyMAotCi1Gcm9tIGUzYTkyNGZjZjRmZjM0MDlkMzFmMDk1NmQzODAyZDZhNjU5NTZhZTIgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBvdmFyaSA8MTc0NjU4NzIrb3ZhcmlAdXNlcnMu bm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogRnJpLCAyNCBKdWwgMjAyMCAxOTo0Mjo1MCArMTAw MAotU3ViamVjdDogW1BBVENIIDA2LzMzXSBVcGRhdGUgUkVBRE1FLm1kCi0KLS0tLQotIFJFQURN RS5tZCB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0KLSAxIGZpbGUgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0K LWRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKLWluZGV4IDliNmNhMzFjYS4uOTc3 OTVjNDI3IDEwMDY0NAotLS0tIGEvUkVBRE1FLm1kCi0rKysgYi9SRUFETUUubWQKLUBAIC0xLDI4 ICsxLDQ3IEBACi0tUE9MLVBPTS00Ci0tPT09PT09PT09Ci0rIyBQbGF5T25MaW51eCBhbmQgUGxh eU9uTWFjIDQgKFBPTC1QT00tNCkKLSAKLS1QbGF5T25MaW51eCA0IHJlcG9zaXRvcnkKLS1Ob3Rl OiBQbGF5T25MaW51eCA1IGlzIGN1cnJlbnRseSB1bmRlciBkZXZlbG9wbWVudC4gUGxlYXNlIGNs b25lIFBPTC1QT00tNSByZXBvc2l0b3J5IGlmIHlvdSB3YW50IHRvIGNvbnRyaWJ1dGUKLStOb3Rl OiBbUGhvZW5pY2lzIFBsYXlPbkxpbnV4IGFuZCBQbGF5T25NYWMgNV0oaHR0cHM6Ly93d3cucGhv ZW5pY2lzLm9yZy8pIGlzIGN1cnJlbnRseSB1bmRlciBkZXZlbG9wbWVudC4gUGxlYXNlIGNsb25l IFtQaG9lbmljaXMgUGxheU9uTGludXggYW5kIFBsYXlPbk1hYyA1IHJlcG9zaXRvcnldKGh0dHBz Oi8vZ2l0aHViLmNvbS9QaG9lbmljaXNPcmcvcGhvZW5pY2lzKSBpZiB5b3Ugd2FudCB0byBjb250 cmlidXRlLgotIAotLVdoYXQgaXMgUGxheU9uTGludXg/Ci0tPT09PT09PT09PT09PT09PT09PT09 Ci0rUGxheU9uTGludXggYW5kIFBsYXlPbk1hYyA0IGFsbG93cyB5b3UgdG8gaW5zdGFsbCBhbmQg dXNlIG5vbi1uYXRpdmUgYXBwbGljYXRpb25zIG9uIHlvdXIgZmF2b3JpdGUgb3BlcmF0aW5nIHN5 c3RlbS4KLSsKLStTdXBwb3J0ZWQgb3BlcmF0aW5nIHN5c3RlbXM6Ci0rCi0rKiBMaW51eAotKyog TWFjIE9TWAotKwotK1N1cHBvcnRlZCBlbmdpbmVzOgotKwotKyogW1dpbmVdKGh0dHBzOi8vd3d3 LndpbmVocS5vcmcvKQotKwotKwotKyMgV2hhdCBpcyBQbGF5T25MaW51eD8KLSAKLSBQbGF5T25M aW51eCBpcyBhIHBpZWNlIG9mIHNvZnR3YXJlIHdoaWNoIGFsbG93cyB5b3UgdG8gZWFzaWx5IGlu c3RhbGwgYW5kIHVzZSBudW1lcm91cyBnYW1lcyBhbmQgYXBwcyBkZXNpZ25lZCB0byBydW4gd2l0 aCBNaWNyb3NvZnTCriBXaW5kb3dzwq4uCi0rCi0gRmV3IGdhbWVzIGFyZSBjb21wYXRpYmxlIHdp dGggR05VL0xpbnV4IGF0IHRoZSBtb21lbnQgYW5kIGl0IGNlcnRhaW5seSBpcyBhIGZhY3RvciBw cmV2ZW50aW5nIHRoZSBtaWdyYXRpb24gdG8gdGhpcyBzeXN0ZW0uIFBsYXlPbkxpbnV4IGJyaW5n cyBhIGNvc3QtZnJlZSwgYWNjZXNzaWJsZSBhbmQgZWZmaWNpZW50IHNvbHV0aW9uIHRvIHRoaXMg cHJvYmxlbS4KLSAKLSAKLS1XaGF0IGFyZSBQbGF5T25MaW51eCdzIGZlYXR1cmVzPwotLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIyBXaGF0IGFyZSBQbGF5T25MaW51eCdzIGZl YXR1cmVzPwotIAotIEhlcmUgaXMgYSBub24tZXhoYXVzdGl2ZSBsaXN0IG9mIHRoZSBpbnRlcmVz dGluZyBwb2ludHMgdG8ga25vdzoKLSsqIFlvdSBkb24ndCBoYXZlIHRvIG93biBhIFdpbmRvd3Mg bGljZW5zZSB0byB1c2UgUGxheU9uTGludXguCi0rKiBQbGF5T25MaW51eCBpcyBiYXNlZCBvbiBb V2luZV0oaHR0cHM6Ly93d3cud2luZWhxLm9yZy8pLCBhbmQgc28gcHJvZml0cyBmcm9tIGFsbCBp dHMgZmVhdHVyZXMgeWV0IGl0IGtlZXBzIHRoZSB1c2VyIGZyb20gaGF2aW5nIHRvIGRlYWwgd2l0 aCBpdHMgY29tcGxleGl0eS4KLSsqIFBsYXlPbkxpbnV4IGlzIGZyZWUgc29mdHdhcmUuCi0rKiBQ bGF5T25MaW51eCB1c2VzIFtCYXNoXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNo XyUyOFVuaXhfc2hlbGwlMjkpIGFuZCBbUHl0aG9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcv d2lraS9QeXRob25fKHByb2dyYW1taW5nX2xhbmd1YWdlKSkuCi0gCi0tWW91IGRvbid0IGhhdmUg dG8gb3duIGEgV2luZG93cyBsaWNlbnNlIHRvIHVzZSBQbGF5T25MaW51eC4KLS1QbGF5T25MaW51 eCBpcyBiYXNlZCBvbiBXaW5lLCBhbmQgc28gcHJvZml0cyBmcm9tIGFsbCBpdHMgZmVhdHVyZXMg eWV0IGl0IGtlZXBzIHRoZSB1c2VyIGZyb20gaGF2aW5nIHRvIGRlYWwgd2l0aCBpdHMgY29tcGxl eGl0eS4KLS1QbGF5T25MaW51eCBpcyBmcmVlIHNvZnR3YXJlLgotLVBsYXlPbkxpbnV4IHVzZXMg QmFzaCBhbmQgUHl0aG9uLgotIE5ldmVydGhlbGVzcywgUGxheU9uTGludXggaGFzIHNvbWUgYnVn cywgYXMgZXZlcnkgcGllY2Ugb2Ygc29mdHdhcmU6Ci0tCi0tT2NjYXNpb25hbCBwZXJmb3JtYW5j ZSBkZWNyZWFzZSAoaW1hZ2UgbWF5IGJlIGxlc3MgZmx1aWQgYW5kIGdyYXBoaWNzIGxlc3MgZGV0 YWlsZWQpLgotLU5vdCBhbGwgZ2FtZXMgYXJlIHN1cHBvcnRlZC4gTmV2ZXJ0aGVsZXNzLCB5b3Ug Y2FuIHVzZSBvdXIgbWFudWFsIGluc3RhbGxhdGlvbiBtb2R1bGUuCi0rKiBPY2Nhc2lvbmFsIHBl cmZvcm1hbmNlIGRlY3JlYXNlIChpbWFnZSBtYXkgYmUgbGVzcyBmbHVpZCBhbmQgZ3JhcGhpY3Mg bGVzcyBkZXRhaWxlZCkuCi0rKiBOb3QgYWxsIGdhbWVzIGFyZSBzdXBwb3J0ZWQuIE5ldmVydGhl bGVzcywgeW91IGNhbiB1c2Ugb3VyIG1hbnVhbCBpbnN0YWxsYXRpb24gbW9kdWxlLgotIAotIEZv ciBtb3JlIGluZm9ybWF0aW9uLCB2aXNpdCBodHRwOi8vd3d3LnBsYXlvbmxpbnV4LmNvbQotKwot KwotKyMjIFRyYW5zbGF0ZQotK1BsYXlPbkxpbnV4L1BsYXlPbk1hYyA0IGlzIGxvY2FsaXplZCB1 c2luZyBMYXVuY2hwYWQ6IGh0dHBzOi8vdHJhbnNsYXRpb25zLmxhdW5jaHBhZC5uZXQvcGxheW9u bGludXgKLStJZiB5b3VyIGxhbmd1YWdlIGlzIG5vdCBsaXN0ZWQsIHBsZWFzZSBjcmVhdGUgYW4g W2lzc3VlXShodHRwczovL2dpdGh1Yi5jb20vUGxheU9uTGludXgvUE9MLVBPTS00L2lzc3Vlcyku Ci0rCi0rCi0rIyMgQ29tbXVuaXR5Ci0rKiBJc3N1ZXMgb3IgaWRlYXM6IGh0dHBzOi8vZ2l0aHVi LmNvbS9QaG9lbmljaXNPcmcvcGhvZW5pY2lzL2lzc3VlcwotKyogRm9ydW1zIDogaHR0cDovL3d3 dy5wbGF5b25saW51eC5jb20vZW4vZm9ydW1zLmh0bWwKLSsqIFNsYWNrIDogaHR0cHM6Ly9qb2lu LnNsYWNrLmNvbS9waG9lbmljaXMtb3JnL3NoYXJlZF9pbnZpdGUvTVRrek1UTXdNak0zTWpjeExU RTBPVFkxTVRRek56a3RZMkl6T1RFMk5tRTNOQQotCi1Gcm9tIDJmYjEzZTMyODg2MTI2NGVlM2E0 ZjZkODk3OWJiMWVlMDE4Y2VhNzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBvdmFy aSA8MTc0NjU4NzIrb3ZhcmlAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogRnJpLCAy NCBKdWwgMjAyMCAxOTo0NDoxNiArMTAwMAotU3ViamVjdDogW1BBVENIIDA3LzMzXSBVcGRhdGUg UkVBRE1FLm1kCi0KLS0tLQotIFJFQURNRS5tZCB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAy IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9SRUFETUUubWQg Yi9SRUFETUUubWQKLWluZGV4IDk3Nzk1YzQyNy4uYzFlOWVkMDMzIDEwMDY0NAotLS0tIGEvUkVB RE1FLm1kCi0rKysgYi9SRUFETUUubWQKLUBAIC0yMSwxMCArMjEsMTAgQEAgUGxheU9uTGludXgg aXMgYSBwaWVjZSBvZiBzb2Z0d2FyZSB3aGljaCBhbGxvd3MgeW91IHRvIGVhc2lseSBpbnN0YWxs IGFuZCB1c2UgbnUKLSBGZXcgZ2FtZXMgYXJlIGNvbXBhdGlibGUgd2l0aCBHTlUvTGludXggYXQg dGhlIG1vbWVudCBhbmQgaXQgY2VydGFpbmx5IGlzIGEgZmFjdG9yIHByZXZlbnRpbmcgdGhlIG1p Z3JhdGlvbiB0byB0aGlzIHN5c3RlbS4gUGxheU9uTGludXggYnJpbmdzIGEgY29zdC1mcmVlLCBh Y2Nlc3NpYmxlIGFuZCBlZmZpY2llbnQgc29sdXRpb24gdG8gdGhpcyBwcm9ibGVtLgotIAotIAot LSMgV2hhdCBhcmUgUGxheU9uTGludXgncyBmZWF0dXJlcz8KLSsjIFdoYXQgYXJlIFBsYXlPbkxp bnV44oCZcyBmZWF0dXJlcz8KLSAKLSBIZXJlIGlzIGEgbm9uLWV4aGF1c3RpdmUgbGlzdCBvZiB0 aGUgaW50ZXJlc3RpbmcgcG9pbnRzIHRvIGtub3c6Ci0tKiBZb3UgZG9uJ3QgaGF2ZSB0byBvd24g YSBXaW5kb3dzIGxpY2Vuc2UgdG8gdXNlIFBsYXlPbkxpbnV4LgotKyogWW91IGRvbuKAmXQgaGF2 ZSB0byBvd24gYSBXaW5kb3dzIGxpY2Vuc2UgdG8gdXNlIFBsYXlPbkxpbnV4LgotICogUGxheU9u TGludXggaXMgYmFzZWQgb24gW1dpbmVdKGh0dHBzOi8vd3d3LndpbmVocS5vcmcvKSwgYW5kIHNv IHByb2ZpdHMgZnJvbSBhbGwgaXRzIGZlYXR1cmVzIHlldCBpdCBrZWVwcyB0aGUgdXNlciBmcm9t IGhhdmluZyB0byBkZWFsIHdpdGggaXRzIGNvbXBsZXhpdHkuCi0gKiBQbGF5T25MaW51eCBpcyBm cmVlIHNvZnR3YXJlLgotICogUGxheU9uTGludXggdXNlcyBbQmFzaF0oaHR0cHM6Ly9lbi53aWtp cGVkaWEub3JnL3dpa2kvQmFzaF8lMjhVbml4X3NoZWxsJTI5KSBhbmQgW1B5dGhvbl0oaHR0cHM6 Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHl0aG9uXyhwcm9ncmFtbWluZ19sYW5ndWFnZSkpLgot Ci1Gcm9tIGY0MjI5YWM4MzAxNWE1ODNkMGMwZTQ1NDQ1ZDI4ZWUzMzIzMjEzNTYgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCi1Gcm9tOiBvdmFyaSA8MTc0NjU4NzIrb3ZhcmlAdXNlcnMubm9yZXBs eS5naXRodWIuY29tPgotRGF0ZTogRnJpLCAyNCBKdWwgMjAyMCAxOTo0NToxMSArMTAwMAotU3Vi amVjdDogW1BBVENIIDA4LzMzXSBVcGRhdGUgUkVBRE1FLm1kCi0KLS0tLQotIFJFQURNRS5tZCB8 IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQotCi1kaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCi1pbmRleCBjMWU5ZWQwMzMu Ljc1ZmJjNWZhZSAxMDA2NDQKLS0tLSBhL1JFQURNRS5tZAotKysrIGIvUkVBRE1FLm1kCi1AQCAt Niw4ICs2LDkgQEAgUGxheU9uTGludXggYW5kIFBsYXlPbk1hYyA0IGFsbG93cyB5b3UgdG8gaW5z dGFsbCBhbmQgdXNlIG5vbi1uYXRpdmUgYXBwbGljYXRpb24KLSAKLSBTdXBwb3J0ZWQgb3BlcmF0 aW5nIHN5c3RlbXM6Ci0gCi0tKiBMaW51eAotLSogTWFjIE9TWAotKyogR05VL0xpbnV4Ci0rKiBN YWMgT1MgWAotKyogbWFjT1MKLSAKLSBTdXBwb3J0ZWQgZW5naW5lczoKLSAKLQotRnJvbSA2NDgw ZTY5NDE1NGY0ZjI0YzRiZjMxYmFiYzdlOTI3MTU3NGUwNGNhIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogb3ZhcmkgPDE3NDY1ODcyK292YXJpQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNv bT4KLURhdGU6IEZyaSwgMjQgSnVsIDIwMjAgMTk6NDk6MzEgKzEwMDAKLVN1YmplY3Q6IFtQQVRD SCAwOS8zM10gVXBkYXRlIFJFQURNRS5tZAotCi0tLS0KLSBSRUFETUUubWQgfCA3ICsrKy0tLS0K LSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZm IC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCi1pbmRleCA3NWZiYzVmYWUuLjBkNjRhNTk2 MiAxMDA2NDQKLS0tLSBhL1JFQURNRS5tZAotKysrIGIvUkVBRE1FLm1kCi1AQCAtNiw5ICs2LDgg QEAgUGxheU9uTGludXggYW5kIFBsYXlPbk1hYyA0IGFsbG93cyB5b3UgdG8gaW5zdGFsbCBhbmQg dXNlIG5vbi1uYXRpdmUgYXBwbGljYXRpb24KLSAKLSBTdXBwb3J0ZWQgb3BlcmF0aW5nIHN5c3Rl bXM6Ci0gCi0tKiBHTlUvTGludXgKLS0qIE1hYyBPUyBYCi0tKiBtYWNPUwotKyogW0dOVS9MaW51 eF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGludXgpCi0rKiBbbWFjT1NdKGh0dHBz Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FwcGxlX01hY2ludG9zaF9PU19YKQotIAotIFN1cHBv cnRlZCBlbmdpbmVzOgotIAotQEAgLTI1LDcgKzI0LDcgQEAgRmV3IGdhbWVzIGFyZSBjb21wYXRp YmxlIHdpdGggR05VL0xpbnV4IGF0IHRoZSBtb21lbnQgYW5kIGl0IGNlcnRhaW5seSBpcyBhIGZh Y3QKLSAjIFdoYXQgYXJlIFBsYXlPbkxpbnV44oCZcyBmZWF0dXJlcz8KLSAKLSBIZXJlIGlzIGEg bm9uLWV4aGF1c3RpdmUgbGlzdCBvZiB0aGUgaW50ZXJlc3RpbmcgcG9pbnRzIHRvIGtub3c6Ci0t KiBZb3UgZG9u4oCZdCBoYXZlIHRvIG93biBhIFdpbmRvd3MgbGljZW5zZSB0byB1c2UgUGxheU9u TGludXguCi0rKiBZb3UgZG9u4oCZdCBoYXZlIHRvIG93biBhIFtNaWNyb3NvZnQgV2luZG93c10o aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0X1dpbmRvd3MpIGxpY2Vuc2Ug dG8gdXNlIFBsYXlPbkxpbnV4LgotICogUGxheU9uTGludXggaXMgYmFzZWQgb24gW1dpbmVdKGh0 dHBzOi8vd3d3LndpbmVocS5vcmcvKSwgYW5kIHNvIHByb2ZpdHMgZnJvbSBhbGwgaXRzIGZlYXR1 cmVzIHlldCBpdCBrZWVwcyB0aGUgdXNlciBmcm9tIGhhdmluZyB0byBkZWFsIHdpdGggaXRzIGNv bXBsZXhpdHkuCi0gKiBQbGF5T25MaW51eCBpcyBmcmVlIHNvZnR3YXJlLgotICogUGxheU9uTGlu dXggdXNlcyBbQmFzaF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzaF8lMjhVbml4 X3NoZWxsJTI5KSBhbmQgW1B5dGhvbl0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHl0 aG9uXyhwcm9ncmFtbWluZ19sYW5ndWFnZSkpLgotCi1Gcm9tIGM0NjY5MzA1ZjI1NmM0YzE2YmM2 OGEzNTMyMzljYmM4YzVkYWU3YmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBvdmFy aSA8MTc0NjU4NzIrb3ZhcmlAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogRnJpLCAy NCBKdWwgMjAyMCAxOTo1MDozMSArMTAwMAotU3ViamVjdDogW1BBVENIIDEwLzMzXSBVcGRhdGUg UkVBRE1FLm1kCi0KLS0tLQotIFJFQURNRS5tZCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JF QURNRS5tZAotaW5kZXggMGQ2NGE1OTYyLi41N2ZhZGZiYjYgMTAwNjQ0Ci0tLS0gYS9SRUFETUUu bWQKLSsrKyBiL1JFQURNRS5tZAotQEAgLTI2LDcgKzI2LDcgQEAgRmV3IGdhbWVzIGFyZSBjb21w YXRpYmxlIHdpdGggR05VL0xpbnV4IGF0IHRoZSBtb21lbnQgYW5kIGl0IGNlcnRhaW5seSBpcyBh IGZhY3QKLSBIZXJlIGlzIGEgbm9uLWV4aGF1c3RpdmUgbGlzdCBvZiB0aGUgaW50ZXJlc3Rpbmcg cG9pbnRzIHRvIGtub3c6Ci0gKiBZb3UgZG9u4oCZdCBoYXZlIHRvIG93biBhIFtNaWNyb3NvZnQg V2luZG93c10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0X1dpbmRvd3Mp IGxpY2Vuc2UgdG8gdXNlIFBsYXlPbkxpbnV4LgotICogUGxheU9uTGludXggaXMgYmFzZWQgb24g W1dpbmVdKGh0dHBzOi8vd3d3LndpbmVocS5vcmcvKSwgYW5kIHNvIHByb2ZpdHMgZnJvbSBhbGwg aXRzIGZlYXR1cmVzIHlldCBpdCBrZWVwcyB0aGUgdXNlciBmcm9tIGhhdmluZyB0byBkZWFsIHdp dGggaXRzIGNvbXBsZXhpdHkuCi0tKiBQbGF5T25MaW51eCBpcyBmcmVlIHNvZnR3YXJlLgotKyog UGxheU9uTGludXggaXMgW2ZyZWUgc29mdHdhcmVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93 aWtpL0ZyZWVfc29mdHdhcmUpLgotICogUGxheU9uTGludXggdXNlcyBbQmFzaF0oaHR0cHM6Ly9l bi53aWtpcGVkaWEub3JnL3dpa2kvQmFzaF8lMjhVbml4X3NoZWxsJTI5KSBhbmQgW1B5dGhvbl0o aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHl0aG9uXyhwcm9ncmFtbWluZ19sYW5ndWFn ZSkpLgotIAotIE5ldmVydGhlbGVzcywgUGxheU9uTGludXggaGFzIHNvbWUgYnVncywgYXMgZXZl cnkgcGllY2Ugb2Ygc29mdHdhcmU6Ci0KLUZyb20gYTZjYzIzZDQzMzc1ZmNhMGUyOGU5MDBhMTEw ZDE5NWJlMjUxZWUyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG92YXJpIDwxNzQ2 NTg3MitvdmFyaUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBGcmksIDI0IEp1bCAy MDIwIDIwOjEyOjM2ICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMzNdIFVwZGF0ZSBSRUFETUUu bWQKLQotLS0tCi0gUkVBRE1FLm1kIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1k Ci1pbmRleCA1N2ZhZGZiYjYuLjBmZTc5ZjNmYSAxMDA2NDQKLS0tLSBhL1JFQURNRS5tZAotKysr IGIvUkVBRE1FLm1kCi1AQCAtNyw3ICs3LDcgQEAgUGxheU9uTGludXggYW5kIFBsYXlPbk1hYyA0 IGFsbG93cyB5b3UgdG8gaW5zdGFsbCBhbmQgdXNlIG5vbi1uYXRpdmUgYXBwbGljYXRpb24KLSBT dXBwb3J0ZWQgb3BlcmF0aW5nIHN5c3RlbXM6Ci0gCi0gKiBbR05VL0xpbnV4XShodHRwczovL2Vu Lndpa2lwZWRpYS5vcmcvd2lraS9MaW51eCkKLS0qIFttYWNPU10oaHR0cHM6Ly9lbi53aWtpcGVk aWEub3JnL3dpa2kvQXBwbGVfTWFjaW50b3NoX09TX1gpCi0rKiBbbWFjT1NdKGh0dHBzOi8vZW4u d2lraXBlZGlhLm9yZy93aWtpL01hY09TKQotIAotIFN1cHBvcnRlZCBlbmdpbmVzOgotIAotCi1G cm9tIDA4ZTg3ZWQwYTc4YjBjNzc0MzkzNWNkMzliMzU1ZGIzMDMxNTczNTQgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCi1Gcm9tOiBvdmFyaSA8MTc0NjU4NzIrb3ZhcmlAdXNlcnMubm9yZXBseS5n aXRodWIuY29tPgotRGF0ZTogU2F0LCAyNSBKdWwgMjAyMCAxODozMToxMCArMTAwMAotU3ViamVj dDogW1BBVENIIDEyLzMzXSBVcGRhdGUgUkVBRE1FLm1kCi0KLS0tLQotIFJFQURNRS5tZCB8IDgg KysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygt KQotCi1kaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCi1pbmRleCAwZmU3OWYzZmEu LjNkMDBlNjVjMSAxMDA2NDQKLS0tLSBhL1JFQURNRS5tZAotKysrIGIvUkVBRE1FLm1kCi1AQCAt Niw4ICs2LDggQEAgUGxheU9uTGludXggYW5kIFBsYXlPbk1hYyA0IGFsbG93cyB5b3UgdG8gaW5z dGFsbCBhbmQgdXNlIG5vbi1uYXRpdmUgYXBwbGljYXRpb24KLSAKLSBTdXBwb3J0ZWQgb3BlcmF0 aW5nIHN5c3RlbXM6Ci0gCi0tKiBbR05VL0xpbnV4XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcv d2lraS9MaW51eCkKLS0qIFttYWNPU10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFj T1MpCi0rKiBHTlUvTGludXgKLSsqIG1hY09TCi0gCi0gU3VwcG9ydGVkIGVuZ2luZXM6Ci0gCi1A QCAtMjQsMTAgKzI0LDEwIEBAIEZldyBnYW1lcyBhcmUgY29tcGF0aWJsZSB3aXRoIEdOVS9MaW51 eCBhdCB0aGUgbW9tZW50IGFuZCBpdCBjZXJ0YWlubHkgaXMgYSBmYWN0Ci0gIyBXaGF0IGFyZSBQ bGF5T25MaW51eOKAmXMgZmVhdHVyZXM/Ci0gCi0gSGVyZSBpcyBhIG5vbi1leGhhdXN0aXZlIGxp c3Qgb2YgdGhlIGludGVyZXN0aW5nIHBvaW50cyB0byBrbm93OgotLSogWW91IGRvbuKAmXQgaGF2 ZSB0byBvd24gYSBbTWljcm9zb2Z0IFdpbmRvd3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93 aWtpL01pY3Jvc29mdF9XaW5kb3dzKSBsaWNlbnNlIHRvIHVzZSBQbGF5T25MaW51eC4KLSsqIFlv dSBkb27igJl0IGhhdmUgdG8gb3duIGEgTWljcm9zb2Z0IFdpbmRvd3MgbGljZW5zZSB0byB1c2Ug UGxheU9uTGludXguCi0gKiBQbGF5T25MaW51eCBpcyBiYXNlZCBvbiBbV2luZV0oaHR0cHM6Ly93 d3cud2luZWhxLm9yZy8pLCBhbmQgc28gcHJvZml0cyBmcm9tIGFsbCBpdHMgZmVhdHVyZXMgeWV0 IGl0IGtlZXBzIHRoZSB1c2VyIGZyb20gaGF2aW5nIHRvIGRlYWwgd2l0aCBpdHMgY29tcGxleGl0 eS4KLSAqIFBsYXlPbkxpbnV4IGlzIFtmcmVlIHNvZnR3YXJlXShodHRwczovL2VuLndpa2lwZWRp YS5vcmcvd2lraS9GcmVlX3NvZnR3YXJlKS4KLS0qIFBsYXlPbkxpbnV4IHVzZXMgW0Jhc2hdKGh0 dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jhc2hfJTI4VW5peF9zaGVsbCUyOSkgYW5kIFtQ eXRob25dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1B5dGhvbl8ocHJvZ3JhbW1pbmdf bGFuZ3VhZ2UpKS4KLSsqIFBsYXlPbkxpbnV4IHVzZXMgQmFzaCBhbmQgUHl0aG9uLgotIAotIE5l dmVydGhlbGVzcywgUGxheU9uTGludXggaGFzIHNvbWUgYnVncywgYXMgZXZlcnkgcGllY2Ugb2Yg c29mdHdhcmU6Ci0gKiBPY2Nhc2lvbmFsIHBlcmZvcm1hbmNlIGRlY3JlYXNlIChpbWFnZSBtYXkg YmUgbGVzcyBmbHVpZCBhbmQgZ3JhcGhpY3MgbGVzcyBkZXRhaWxlZCkuCi0KLUZyb20gMmJmOWVk MmQzMjFhMjZiNDhkZTgzYTEzMDY0ZjdiOWYwZGIwZGNkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IHJheWRlcnVhIDxyYXlkZXIudWFAZ21haWwuY29tPgotRGF0ZTogTW9uLCA1IE9j dCAyMDIwIDE3OjE5OjQ3ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMzNdIGZpeCBzcGxpdCB2 ZXJzaW9uIHRvIGZpcnN0IDMgZWxlbWVudHMKLQotVmFsdWVFcnJvcjogaW52YWxpZCBsaXRlcmFs IGZvciBpbnQoKSB3aXRoIGJhc2UgMTA6ICdwb3N0MicKLQotVmVyc2lvbnMgY2FuIGNvbnRhaW4g bm90IG9ubHkgZGlnaXRzIChmb3IgZXhhbXBsZSB3eCByZWxlYXNlczogNC4wLjcsIDQuMC43LnBv c3QxLCA0LjAuNy5wb3N0MiwgNC4xLjApCi0tLS0KLSBweXRob24vbGliL3BsYXlvbmxpbnV4LnB5 IHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKLQotZGlmZiAtLWdpdCBhL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkgYi9weXRob24vbGli L3BsYXlvbmxpbnV4LnB5Ci1pbmRleCA4MjdkYjkyMDIuLjNlODdkOTBhYSAxMDA3NTUKLS0tLSBh L3B5dGhvbi9saWIvcGxheW9ubGludXgucHkKLSsrKyBiL3B5dGhvbi9saWIvcGxheW9ubGludXgu cHkKLUBAIC0yNzgsMTEgKzI3OCwxMSBAQCBkZWYgVmVyc2lvbkxvd2VyKHZlcnNpb24xLCB2ZXJz aW9uMik6Ci0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgIHJldHVybiBGYWxzZQotIAotLSAg ICB2ZXJzaW9uMSA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjFbMF0uc3BsaXQo Ii4iKSBdCi0rICAgIHZlcnNpb24xID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9u MVswXS5zcGxpdCgiLiIpWzozXSBdCi0gICAgIHdoaWxlIGxlbih2ZXJzaW9uMSkgPCAzOgotICAg ICAgICAgdmVyc2lvbjEuYXBwZW5kKDApCi0gCi0tICAgIHZlcnNpb24yID0gWyBpbnQoZGlnaXQp IGZvciBkaWdpdCBpbiB2ZXJzaW9uMlswXS5zcGxpdCgiLiIpIF0KLSsgICAgdmVyc2lvbjIgPSBb IGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24yWzBdLnNwbGl0KCIuIilbOjNdIF0KLSAg ICAgd2hpbGUgbGVuKHZlcnNpb24yKSA8IDM6Ci0gICAgICAgICB2ZXJzaW9uMi5hcHBlbmQoMCkK LSAKLQotRnJvbSA2YTliZmFhMWRjNGY1MzdmMmVlMDNiOWFjOTlhZGY2ZmU4ZjJmMDQ3IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hyaXNCODUgPGtyenlzenRvZi5ibGFjaG93aWN6 QGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjAgT2N0IDIwMjAgMTg6MTA6MzQgKzAyMDAKLVN1Ympl Y3Q6IFtQQVRDSCAxNC8zM10gUG9saXNoIHRyYW5zbGF0aW9ucwotCi0tLS0KLSBsYW5nL3BvL3Bs LnBvIHwgMTA5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tCi0gMSBmaWxlIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQot Ci1kaWZmIC0tZ2l0IGEvbGFuZy9wby9wbC5wbyBiL2xhbmcvcG8vcGwucG8KLWluZGV4IGFlNjlm NDk3ZS4uZjA0N2I1YjQ0IDEwMDY0NAotLS0tIGEvbGFuZy9wby9wbC5wbwotKysrIGIvbGFuZy9w by9wbC5wbwotQEAgLTExLDIyICsxMSwyMiBAQCBtc2dzdHIgIiIKLSAiUHJvamVjdC1JZC1WZXJz aW9uOiBwb2xcbiIKLSAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFRpbm91XG4iCi0gIlBPVC1DcmVh dGlvbi1EYXRlOiAyMDE1LTA4LTMxIDE5OjAwKzAyMDBcbiIKLS0iUE8tUmV2aXNpb24tRGF0ZTog MjAxNC0wNC0yMyAxMzozNSswMDAwXG4iCi0rIlBPLVJldmlzaW9uLURhdGU6IDIwMjAtMTAtMjAg MTg6MDkrMDIwMFxuIgotICJMYXN0LVRyYW5zbGF0b3I6IEFkYW0gTWHEh2tvd2lhayA8VW5rbm93 bj5cbiIKLSAiTGFuZ3VhZ2UtVGVhbTogcGxfUEwuVVRGLTggPExMQGxpLm9yZz5cbiIKLSAiTUlN RS1WZXJzaW9uOiAxLjBcbiIKLSAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVU Ri04XG4iCi0gIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKLSAiWC1MYXVuY2hw YWQtRXhwb3J0LURhdGU6IDIwMTUtMDktMDEgMDU6MTIrMDAwMFxuIgotLSJYLUdlbmVyYXRvcjog TGF1bmNocGFkIChidWlsZCAxNzY5MClcbiIKLSsiWC1HZW5lcmF0b3I6IFBvZWRpdCAyLjNcbiIK LSsiTGFuZ3VhZ2U6IHBsXG4iCi0gCi0gIzogQ2FwdHVyZSBwbHVnaW46MiwgRGV0b3VyIHBsdWdp bjo0Ci0gbXNnaWQgIldoaWNoIGFwcGxpY2F0aW9uIGRvIHlvdSB3YW50IHRvIGFwcGx5IHRoZSBt b2RpZmljYXRpb24gdG8/IgotIG1zZ3N0ciAiRG8gamFraWVqIGFwbGlrYWNqaSBjaGNlc3ogd3lr b25hxIcgbW9keWZpa2FjamU/IgotIAotICM6IENhcHR1cmUgcGx1Z2luOjMKLS1tc2dpZCAiIgot LSJUaGlzIHBsdWdpbiB3aWwgYWxsb3cgeW91IHRvIGNhcHR1cmUgeW91IGFwcGxpY2F0aW9ucyB1 bmRlciBQbGF5T25MaW51eCIKLSttc2dpZCAiVGhpcyBwbHVnaW4gd2lsIGFsbG93IHlvdSB0byBj YXB0dXJlIHlvdSBhcHBsaWNhdGlvbnMgdW5kZXIgUGxheU9uTGludXgiCi0gbXNnc3RyICJXdHlj emthIHVtb8W8bGl3aWEgcHJ6ZWNod3l0eXdhbmllIG9icmF6dSB6IGFwbGlrYWNqaSBwb2QgUGxh eU9uTGludXgiCi0gCi0gIzogQ2FwdHVyZSBwbHVnaW46NAotQEAgLTU2LDggKzU2LDggQEAgbXNn aWQgIiIKLSAic3RhcnQgYXV0b21hdGljYWxseSBhZnRlciA1IHNlY29uZHMuXFxuT25seSB2aWRl byB3aWxsIGJlIGNhcHR1cmVkLiIKLSBtc2dzdHIgIiIKLSAiUHJvc3rEmSB3Y2lzbsSFxIcgRGFs ZWosIG5hc3TEmXBuaWUga2xpa27EhcSHXFxudyBva25vIHByb2dyYW11LCBrdMOzcmUgY2hjZXN6 ICIKLS0icHJ6ZWNod3ljacSHLlxcbk5hZ3J5d2FuaWUgcm96cG9jem5pZSBzacSZIGF1dG9tYXR5 Y3puaWUgcG8gNSBzZWt1bmRhY2guXFwiCi0tIm5OYWdyYW55IHpvc3RhbmllIHd5xYLEhWN6bmll IG9icmF6LiIKLSsicHJ6ZWNod3ljacSHLlxcbk5hZ3J5d2FuaWUgcm96cG9jem5pZSBzacSZIGF1 dG9tYXR5Y3puaWUgcG8gNSBzZWt1bmRhY2guIgotKyJcXG5OYWdyYW55IHpvc3RhbmllIHd5xYLE hWN6bmllIG9icmF6LiIKLSAKLSAjOiBDYXB0dXJlIHBsdWdpbjoxMAotIG1zZ2lkICJDYXB0dXJl IHdpbGwgYmVnaW4uLi4iCi1AQCAtMzA5LDcgKzMwOSw3IEBAIG1zZ3N0ciAiRG9rxYJhZG55IG9w aXMgamVzdCB3eW1hZ2FueS4iCi0gIzogYmFzaC9idWdfcmVwb3J0OjEwMQotICMsIHNoLWZvcm1h dAotIG1zZ2lkICJUaGFuayB5b3UgIVxcblxcbllvdXIgcmVwb3J0IGhhcyBiZWVuIHNlbnQuIgot LW1zZ3N0ciAiIgotK21zZ3N0ciAiRHppxJlrdWplbXkgIVxcblxcblR3b2plIHpnxYJvc3plbmll IHpvc3RhxYJvIHd5c8WCYW5lLiIKLSAKLSAjOiBiYXNoL2NyZWF0ZV9wcmVmaXg6MjYKLSAjLCBz aC1mb3JtYXQKLUBAIC00NTgsNiArNDU4LDkgQEAgbXNnaWQgIiIKLSAiYWxsIHRoZSB0b29sc1xc blxcbldhcm5pbmc6IFdlIGFyZSB1bmFibGUgdG8gZ3VhcmFudGVlIHRoYXQgeW91ciBhcHBsaWNh dGlvbiAiCi0gIndpbGwgd29yayBwZXJmZWN0bHkuIgotIG1zZ3N0ciAiIgotKyJXaXRhbXkgdyBr cmVhdG9yemUgaW5zdGFsYWNqaSByxJljem5laiAkQVBQTElDQVRJT05fVElUTEUuXFxuXFxuS3Jl YXRvciB0ZW4gIgotKyJwb3p3b2xpIENpIHphaW5zdGFsb3dhxIcga2HFvGR5IHByb2dyYW0gdyAk QVBQTElDQVRJT05fVElUTEVcXG5cXG5Vd2FnYTogTmllICIKLSsibW/FvGVteSB6YWd3YXJhbnRv d2HEhywgxbxlIHR3b2phIGFwbGlrYWNqYSBixJlkemllIGR6aWHFgmHEhyBwb3ByYXduaWUuIgot IAotICM6IGJhc2gvbWFudWFsX2luc3RhbGw6MTAyCi0gIywgc2gtZm9ybWF0Ci1AQCAtNzA3LDgg KzcxMCw4IEBAIG1zZ2lkICIiCi0gInRvb2wgT05MWSBpZiB5b3UgQ0QtUk9NIGlzIGEgaHlicmlk ZSBDRC1ST00gKENvbXBhdGlibGUgd2l0aCBXaW5kb3dzIGFuZCAiCi0gIk1hY09TKSwgYW5kIGlm IHlvdSBhcmUgbm90IGFibGUgdG8gc2VlIHRoZSBXaW5kb3dzIHBhcnQiCi0gbXNnc3RyICIiCi0t IkR6acSZa2kgdGVtdSBuYXJ6xJlkemkgdHfDs2ogTWFjIGLEmWR6aWUgdyBzdGFuaWUgcHJ6ZWN6 eXRhxIcgY3rEmcWbxIcgQ0QtUk9NdVxcIgotLSJucHJ6ZXpuYWN6b25lZ28gZGxhIGtvbXB1dGVy w7N3IFBDLlxcblxcblXFvHlqIHRlZ28gbmFyesSZZHppYSBUWUxLTyBqZcW8ZWxpICIKLSsiRHpp xJlraSB0ZW11IG5hcnrEmWR6aSB0d8OzaiBNYWMgYsSZZHppZSB3IHN0YW5pZSBwcnplY3p5dGHE hyBjesSZxZvEhyBDRC1ST011IgotKyJcXG5wcnplem5hY3pvbmVnbyBkbGEga29tcHV0ZXLDs3cg UEMuXFxuXFxuVcW8eWogdGVnbyBuYXJ6xJlkemlhIFRZTEtPIGplxbxlbGkgIgotICJwb3NpYWRh c3ogaHlicnlkb3d5IENELVJPTSAoa29tcGF0eWJpbG55IHogV2luZG93cyBpIE1hY09TKVxcbmkg dHlsa28gd3RlZHkgIgotICJnZHkgbmllIGplc3RlxZsgdyBzdGFuaWUgem9iYWN6ecSHIGN6xJnF m2NpIGRsYSBXaW5kb3dzYS4iCi0gCi1AQCAtNzYyLDE2ICs3NjUsMTggQEAgbXNnaWQgIiIKLSAi JFBBQ0tBR0UgY3Jhc2hlZC5cXG5TZWxlY3QgaXRzIHNob3J0Y3V0IGFuZCBjbGljayBvbiBcIkRl YnVnXCIgaW4gdGhlIHNpZGUgIgotICJwYW5lbCB0byBnZXQgbW9yZSBkZXRhaWxzLiIKLSBtc2dz dHIgIiIKLSsiJFBBQ0tBR0UgdWxlZ8WCIGF3YXJpaS5cXG5aYXpuYWN6IGplZ28gc2tyw7N0IGkg a2xpa25paiBcIkRlYnVndWpcIiB3IHBhbmVsdSAiCi0rImJvY3pueW0gYWJ5IHBvem5hxIcgc3pj emVnw7PFgnkuIgotIAotICM6IGJhc2gvcnVuX2FwcDoxMjAKLSAjLCBzaC1mb3JtYXQKLSBtc2dp ZCAiJFBBQ0tBR0UgY3Jhc2hlZC4iCi0tbXNnc3RyICIkUEFDS0FHRSB6YXdpZXNpxYIgc2nEmS4i Ci0rbXNnc3RyICIkUEFDS0FHRSB1bGVnxYIgYXdhcmlpLiIKLSAKLSAjOiBiYXNoL3J1bl9leGU6 MzMKLSAjLCBzaC1mb3JtYXQKLSBtc2dpZCAiV2FpdGluZyBYUXVhcnR6IHRvIGJlIGluc3RhbGxl ZCIKLS1tc2dzdHIgIiIKLSttc2dzdHIgIk9jemVraXdhbmllIG5hIGluc3RhbGFjasSZIFhRdWFy dHoiCi0gCi0gIzogYmFzaC9ydW5fZXhlOjcwCi0gIywgc2gtZm9ybWF0Ci1AQCAtODE1LDEyICs4 MjAsMTIgQEAgbXNnc3RyICJJbnN0YWxhY2phIHpha2/FhGN6b25hIgotICM6IGJhc2gvc3RhcnR1 cF9hZnRlcl9zZXJ2ZXI6MzgKLSAjLCBzaC1mb3JtYXQKLSBtc2dpZCAiUGxheU9uTWFjIG5lZWRz IHRvIGluc3RhbGwgWFF1YXJ0eiB0byB3b3JrIHByb3Blcmx5LiIKLS1tc2dzdHIgIiIKLSttc2dz dHIgIlBsYXlPbk1hYyB3eW1hZ2EgemFpbnN0YWxvd2FuaWEgWFF1YXJ0eiBkbyBwb3ByYXduZWdv IGR6aWHFgmFuaWEuIgotIAotICM6IGJhc2gvc3RhcnR1cF9hZnRlcl9zZXJ2ZXI6MzkKLSAjLCBz aC1mb3JtYXQKLSBtc2dpZCAiUGxheU9uTWFjIHdpbGwgaGVscCB5b3UgdG8gc2ltcGxpZnkgdGhp cyBzdGVwIgotLW1zZ3N0ciAiIgotK21zZ3N0ciAiUGxheU9uTWFjIHBvbW/FvGUgY2kgdXByb8Wb Y2nEhyB0ZW4ga3JvayIKLSAKLSAjOiBiYXNoL3N0YXJ0dXBfYWZ0ZXJfc2VydmVyOjQyCi0gIywg c2gtZm9ybWF0Ci1AQCAtODYxLDYgKzg2Niw4IEBAIG1zZ3N0ciAiWFF1YXJ0eiB6b3N0YcWCIHph aW5zdGFsb3dhbnkuIgotICMsIHNoLWZvcm1hdAotIG1zZ2lkICJVbmFibGUgdG8gaW5zdGFsbCBY UXVhcnR6ISBZb3UgbXVzdCBpbnN0YWxsIGl0IHRvIHVzZSB3aW5lIHByb3Blcmx5LiIKLSBtc2dz dHIgIiIKLSsiTmllIHVkYcWCbyBzacSZIHphaW5zdGFsb3dhxIcgWFF1YXJ0eiEgSmVzdCBvbiB3 eW1hZ2FueSBkbyBwb3ByYXduZWdvIGR6aWHFgmFuaWEgIgotKyJXaW5lLiIKLSAKLSAjOiBiYXNo L3VuaW5zdGFsbDozMSBiYXNoL3VuaW5zdGFsbDo2NSBiYXNoL3VuaW5zdGFsbDo2OCBiYXNoL3Vu aW5zdGFsbDo3NQotICM6IGxpYi93aW5lLmxpYjo4NjcKLUBAIC05MzMsMTIgKzk0MCwxMiBAQCBt c2dzdHIgIiIKLSAjLCBzaC1mb3JtYXQKLSBtc2dpZCAiIgotICIkQVBQTElDQVRJT05fVElUTEUg aGFzIGVuY291bnRlcmVkIGFuIGVycm9yLiBJZiB0aGUgcHJvZ3JhbSB5b3UgYXJlICIKLS0iaW5z dGFsbGluZyBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSwgaXQgbWlnaHQgYmUgdGhlIGNhdXNlIG9m IHRoZSBwcm9ibGVtLlxcIgotLSJuVmlzaXQgd3d3LiRQT0xfRE5TIHRvIGdldCBmdXJ0aGVyIGlu Zm9ybWF0aW9uIgotKyJpbnN0YWxsaW5nIGRvZXMgbm90IHdvcmsgY29ycmVjdGx5LCBpdCBtaWdo dCBiZSB0aGUgY2F1c2Ugb2YgdGhlIHByb2JsZW0uIgotKyJcXG5WaXNpdCB3d3cuJFBPTF9ETlMg dG8gZ2V0IGZ1cnRoZXIgaW5mb3JtYXRpb24iCi0gbXNnc3RyICIiCi0gIiRBUFBMSUNBVElPTl9U SVRMRSBuYXBvdGthxYIgbmEgYsWCxIVkLiBKZcWbbGkgcHJvZ3JhbSwga3TDs3J5IGplc3QgaW5z dGFsb3dhbnkgIgotLSJuaWUgZHppYcWCYSBwcmF3aWTFgm93bywgdG8gbW/FvGUgYnnEhyBwcnp5 Y3p5bsSFIHByb2JsZW11LlxcbiBPZHdpZWTFuiAiCi0tInd3dy4kUE9MX0ROUyB3IGNlbHUgdXp5 c2thbmlhIGRhbHN6eWNoIGluZm9ybWFjamkiCi0rIm5pZSBkemlhxYJhIHByYXdpZMWCb3dvLCB0 byBtb8W8ZSBiecSHIHByenljenluxIUgcHJvYmxlbXUuXFxuIE9kd2llZMW6IHd3dy4iCi0rIiRQ T0xfRE5TIHcgY2VsdSB1enlza2FuaWEgZGFsc3p5Y2ggaW5mb3JtYWNqaSIKLSAKLSAjOiBsaWIv ZGVidWcubGliOjE1NQotICMsIHNoLWZvcm1hdAotQEAgLTk4MCw5ICs5ODcsOSBAQCBtc2dpZCAi IgotICJ2YWxpZFxcblxcblBsYXlPbkxpbnV4IGhhcyBub3QgYXBwcm92ZWQgdGhpcyBzY3JpcHQg YW5kIHdpbGwgbm90IGJlICIKLSAicmVzcG9uc2libGUgZnJvbSBpdC5cXG5QbGVhc2UgZW5zdXJl IHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyAhIgotIG1zZ3N0ciAiIgotLSJPc3RyemXFvGVu aWUhXFxuXFxuU3lnbmF0dXJhIHRlZ28gc2tyeXB0dSBOSUUgamVzdCBwcmF3aWTFgm93YVxcblxc IgotLSJuUGxheU9uTGludXggbmllIHphYWtjZXB0b3dhxYIgdGVnbyBza3J5cHR1IG5pZSBixJlk emllIG9kcG93aWVkemlhbG55IHphIGplZ28gIgotLSJixYLEmWRuZSBkemlhxYJhbmllLlxcbktv bnR5bnV1aiB0eWxrbyBqZcWbbGkgd2llc3ogY28gcm9iaXN6LiIKLSsiT3N0cnplxbxlbmllIVxc blxcblN5Z25hdHVyYSB0ZWdvIHNrcnlwdHUgTklFIGplc3QgcHJhd2lkxYJvd2FcXG4iCi0rIlxc blBsYXlPbkxpbnV4IG5pZSB6YWFrY2VwdG93YcWCIHRlZ28gc2tyeXB0dSBuaWUgYsSZZHppZSBv ZHBvd2llZHppYWxueSB6YSAiCi0rImplZ28gYsWCxJlkbmUgZHppYcWCYW5pZS5cXG5Lb250eW51 dWogdHlsa28gamXFm2xpIHdpZXN6IGNvIHJvYmlzei4iCi0gCi0gIzogbGliL3BsYXlvbmxpbnV4 LmxpYjozNDkgbGliL3BsYXlvbmxpbnV4LmxpYjozNzIKLSAjLCBzaC1mb3JtYXQKLUBAIC05OTYs OCArMTAwMyw4IEBAIG1zZ2lkICIiCi0gInZhbGlkXFxuXFxuJEFQUExJQ0FUSU9OX1RJVExFIGhh cyBub3QgYXBwcm92ZWQgdGhpcyBzY3JpcHQgYW5kIHdpbGwgbm90IGJlICIKLSAicmVzcG9uc2li bGUgZnJvbSBpdC5cXG5QbGVhc2UgZW5zdXJlIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyEi Ci0gbXNnc3RyICIiCi0tIk9zdHJ6ZcW8ZW5pZSFcXG5cXG5TeWduYXR1cmEgdGVnbyBza3J5cHR1 IE5JRSBqZXN0IHByYXdpZMWCb3dhXFxuXFwiCi0tIm4kQVBQTElDQVRJT05fVElUTEUgbmllIHph YWtjZXB0b3dhxYIgdGVnbyBza3J5cHR1IG5pZSBixJlkemllIG9kcG93aWVkemlhbG55ICIKLSsi T3N0cnplxbxlbmllIVxcblxcblN5Z25hdHVyYSB0ZWdvIHNrcnlwdHUgTklFIGplc3QgcHJhd2lk xYJvd2FcXG5cXG4iCi0rIiRBUFBMSUNBVElPTl9USVRMRSBuaWUgemFha2NlcHRvd2HFgiB0ZWdv IHNrcnlwdHUgbmllIGLEmWR6aWUgb2Rwb3dpZWR6aWFsbnkgIgotICJ6YSBqZWdvIGLFgsSZZG5l IGR6aWHFgmFuaWUuXFxuS29udHludXVqIHR5bGtvIGplxZtsaSB3aWVzeiBjbyByb2Jpc3ouIgot IAotICM6IGxpYi9wbGF5b25saW51eC5saWI6MzcyCi1AQCAtMTA1NCw5ICsxMDYxLDExIEBAIG1z Z3N0ciAiIgotICM6IGxpYi9wbGF5b25saW51eC5saWI6OTEzCi0gIywgc2gtZm9ybWF0Ci0gbXNn aWQgIiIKLS0iWW91ciBMaW51eCBrZXJuZWwgbWF5IG5vdCBiZSBjb25maWd1cmVkIHRvIHJ1biBX aW4xNiBwcm9ncmFtcyB1bmRlciBXaW5lXFwiCi0tIm5TZWUgJEVYUExBTkFUSU9OX1VSTCIKLSsi WW91ciBMaW51eCBrZXJuZWwgbWF5IG5vdCBiZSBjb25maWd1cmVkIHRvIHJ1biBXaW4xNiBwcm9n cmFtcyB1bmRlciBXaW5lIgotKyJcXG5TZWUgJEVYUExBTkFUSU9OX1VSTCIKLSBtc2dzdHIgIiIK LSsiSsSFZHJvIHR3b2plZ28gbGludWtzYSBtb8W8ZSBuaWUgYnnEhyBza29uZmlndXJvd2FuZSBk byB1cnVjaGFtaWFuaWEgcHJvZ3JhbcOzdyAiCi0rIldpbjE2IHcgV2luZVxcblNlZSAkRVhQTEFO QVRJT05fVVJMIgotIAotICM6IGxpYi9wbGF5b25saW51eC5saWI6OTE2Ci0gIywgc2gtZm9ybWF0 Ci1AQCAtMTA2NCw2ICsxMDczLDggQEAgbXNnaWQgIiIKLSAiWW91ciBrZXJuZWwgbWF5IGJlIGlu Y29tcGF0aWJsZSB3aXRoIHJ1bm5pbmcgV2luMTYgcHJvZ3JhbXMgdW5kZXIgV2luZVxcblNlZSAi Ci0gIiRFWFBMQU5BVElPTl9VUkwiCi0gbXNnc3RyICIiCi0rIkrEhWRybyB0d29qZWdvIGxpbnVr c2EgbW/FvGUgYnnEhyBuaWVrb21wYXR5YmlsbmUgeiBhcGxpa2FjamFtaSBXaW4xNiAiCi0rInVy dWNoYW1pYW55bWkgdyBXaW5lXFxuU2VlICRFWFBMQU5BVElPTl9VUkwiCi0gCi0gIzogbGliL3Bs dWdpbnMubGliOjYzCi0gIywgc2gtZm9ybWF0Ci1AQCAtMTEzMSw3ICsxMTQyLDcgQEAgbXNnc3Ry ICIiCi0gIzogbGliL3NjcmlwdHMubGliOjY5NiBsaWIvc2NyaXB0cy5saWI6NzA0Ci0gIywgc2gt Zm9ybWF0Ci0gbXNnaWQgIlBsZWFzZSB3YWl0IHdoaWxlICRBUFBMSUNBVElPTl9USVRMRSBpcyBo YW5kbGluZyBhcmNoaXZlLi4uIgotLW1zZ3N0ciAiIgotK21zZ3N0ciAiUHJvc3rEmSBjemVrYcSH LCAkQVBQTElDQVRJT05fVElUTEUgd3lwYWtvd3VqZSBhcmNoaXd1bS4uLiIKLSAKLSAjOiBsaWIv c2NyaXB0cy5saWI6NzI3Ci0gIywgc2gtZm9ybWF0Ci1AQCAtMTE2OSwxMSArMTE4MCwxMSBAQCBt c2dzdHIgIlJvem1pYXIgcGxpa3UgbmllIHpnYWR6YSBzacSZISIKLSAjOiBsaWIvc2NyaXB0cy5s aWI6OTU1Ci0gIywgc2gtZm9ybWF0Ci0gbXNnaWQgIiIKLS0iU29ycnksICRBUFBMSUNBVElPTl9U SVRMRSAkVkVSU0lPTiBpcyB0b28gb2xkIHRvIGNvbnRpbnVlLlxcIgotLSJuJEFQUExJQ0FUSU9O X1RJVExFICRORUVERUQgaXMgcmVxdWlyZWQuIgotKyJTb3JyeSwgJEFQUExJQ0FUSU9OX1RJVExF ICRWRVJTSU9OIGlzIHRvbyBvbGQgdG8gY29udGludWUuXFxuIgotKyIkQVBQTElDQVRJT05fVElU TEUgJE5FRURFRCBpcyByZXF1aXJlZC4iCi0gbXNnc3RyICIiCi0tIiRBUFBMSUNBVElPTl9USVRM RSAkVkVSU0lPTiBqZXN0IHpieXQgc3RhcnkgYWJ5IGtvbnR5bnVvd2HEhy5cXCIKLS0ibiRBUFBM SUNBVElPTl9USVRMRSAkTkVFREVEIGplc3Qgd3ltYWdhbnkuIgotKyIkQVBQTElDQVRJT05fVElU TEUgJFZFUlNJT04gamVzdCB6Ynl0IHN0YXJ5IGFieSBrb250eW51b3dhxIcuXFxuIgotKyIkQVBQ TElDQVRJT05fVElUTEUgJE5FRURFRCBqZXN0IHd5bWFnYW55LiIKLSAKLSAjOiBsaWIvc2NyaXB0 cy5saWI6OTcwCi0gIywgc2gtZm9ybWF0Ci1AQCAtMTI4NSw3ICsxMjk2LDcgQEAgbXNnc3RyICJX eXN6dWtpd2FuaWUgd2lydHVhbG5lZ28gZHlza3UgdHdhcmRlZ28uLi4iCi0gIzogbGliL3NldHVw d2luZG93LmxpYjo1ODIKLSAjLCBzaC1mb3JtYXQKLSBtc2dpZCAiSG93IG11Y2ggbWVtb3J5IChp biBNQikgZG9lcyB5b3VyIGdyYXBoaWNzIGJvYXJkIGhhdmU/IgotLW1zZ3N0ciAiIgotK21zZ3N0 ciAiSWxlIHBhbWnEmWNpICh3IE1CKSBwb3NpYWRhIHR3b2phIGthcnRhIGdyYWZpY3puYT8iCi0g Ci0gIzogbGliL3NldHVwd2luZG93LmxpYjo1OTEKLSAjLCBzaC1mb3JtYXQKLUBAIC0xMzY5LDcg KzEzODAsNyBAQCBtc2dzdHIgIlByemVnbMSFZGFqIgotICM6IGxpYi9zZXR1cHdpbmRvdy5saWI6 NzYzCi0gIywgc2gtZm9ybWF0Ci0gbXNnaWQgIkEgc2hvcnRjdXQgYnkgdGhhdCBuYW1lIGFscmVh ZHkgZXhpc3RzLCBvdmVyd3JpdGU/IgotLW1zZ3N0ciAiIgotK21zZ3N0ciAiU2tyw7N0IG8gdGVq IG5hendpZSBqdcW8IGlzdG5pZWplLCB6YXN0xIVwacSHIGdvPyIKLSAKLSAjOiBsaWIvd2Vic2l0 ZS5saWI6MjkKLSAjLCBzaC1mb3JtYXQKLUBAIC0xNDAzLDYgKzE0MTQsOCBAQCBtc2dzdHIgIld5 YmllcnogZ8WCw7N3bsSFIGthcnTEmSBncmFmaWN6bsSFIGt0w7NyxIUgd2luZSBtYSB6Z8WCYXN6 YcSHIGdyb20iCi0gbXNnaWQgIiIKLSAiU3RhcnRpbmcgNjQtYml0IHByb2Nlc3MgJEVYRUZJTEUg aXMgbm90IHN1cHBvcnRlZCBpbiAzMi1iaXQgdmlydHVhbCBkcml2ZXMiCi0gbXNnc3RyICIiCi0r IlVydWNoYW1pYW5pZSBwcm9jZXPDs3cgNjQtYml0b3d5Y2ggJEVYRUZJTEUgbmllIGplc3Qgb2Jz xYJ1Z2l3YW5lIHcgMzItIgotKyJiaXRvd3ljaCBkeXNrYWNoIHdpcnR1YWxueWNoIgotIAotICM6 IGxpYi93aW5lLmxpYjo1NzkKLSAjLCBzaC1mb3JtYXQKLUBAIC0xNjM4LDYgKzE2NTEsMTEgQEAg bXNnaWQgIiIKLSAiV2luZSB2ZXJzaW9uIGlzIGNoYW5nZWQuXG4iCi0gIkFyZSB5b3Ugc3VyZSB5 b3Ugd2FudCB0byBjb250aW51ZT8iCi0gbXNnc3RyICIiCi0rIlV3YWdhOlxuIgotKyJcbiIKLSsi S2HFvGRhIHVydWNob21pb25hIGFwbGlrYWNqYSB6bmFqZHVqxIVjYSBzacSZIG5hIHR5bSBkeXNr dSB3aXJ0dWFsbnltIHpvc3RhbmllICIKLSsiemF0cnp5bWFuYSBwcnplZCB6bWlhbsSFIHdlcnNq aSBXaW5lLlxuIgotKyJDenkgY2hjZXN6IGtvbnR5bnVvd2HEhz8iCi0gCi0gIzogcHl0aG9uL2Nv bmZpZ3VyZS5weTo2MDYKLSBtc2dpZCAiIgotQEAgLTE3NTIsNyArMTc3MCw3IEBAIG1zZ3N0ciAi WmdhZHphbSBzacSZIgotIAotICM6IHB5dGhvbi9ndWl2My5weToxNzkKLSBtc2dpZCAiRG9uJ3Qg cmVtaW5kIG1lIGFueW1vcmUiCi0tbXNnc3RyICIiCi0rbXNnc3RyICJOaWUgcHJ6eXBvbWluYWog bWkgd2nEmWNlaiIKLSAKLSAjOiBweXRob24vZ3VpdjMucHk6MTgwCi0gbXNnaWQgIlNob3cgdmly dHVhbCBkcml2ZXMiCi1AQCAtMTg3NSw3ICsxODkzLDcgQEAgbXNnc3RyICIiCi0gCi0gIzogcHl0 aG9uL2luc3RhbGwucHk6NTc3Ci0gbXNnaWQgIkF0dGVudGlvbiEiCi0tbXNnc3RyICIiCi0rbXNn c3RyICJVd2FnYSEiCi0gCi0gIzogcHl0aG9uL2luc3RhbGwucHk6NTc3Ci0gbXNnaWQgIiIKLUBA IC0xODg3LDYgKzE5MDUsMTMgQEAgbXNnaWQgIiIKLSAicGlyYWN5IGFuZCBhcyBzdWNoLCB3ZSB3 aWxsIG5vdCBvZmZlciBhbnkgc3VwcG9ydCBmb3IgaXNzdWVzIHJlc3VsdGluZyBmcm9tICIKLSAi dXNpbmcgdGhpcyBvcHRpb24uIgotIG1zZ3N0ciAiIgotKyJXxYLEhWN6YWrEhWMgdMSZIG9wY2rE mSwgbW/FvGVzeiBpbnN0YWxvd2HEhyBwcm9ncmFteSB1xbx5d2FqxIVjZSBzeXN0ZW11IHphcnrE hWR6YW5pYSAiCi0rInByYXdhbWkgY3lmcm93eW1pIChEUk0pLCBhbGUgbmllIHPEhSBvbmUgd3Nw aWVyYW5lIHByemV6IHswfSBpIG1vZ8SFIHd5bWFnYcSHICIKLSsib2JlasWbY2lhLlxuIgotKyJc biIKLSsiRnVua2NqYSB0YSBuaWUgcG93aW5uYSBiecSHIGludGVycHJldG93YW5hIGpha28gdWty eXRlIGx1YiBkb21uaWVtYW5lICIKLSsicHJ6eXp3b2xlbmllIG5hIHBpcmFjdHdvIGkgbmllIGLE mWR6aWVteSBvZmVyb3dhxIcgxbxhZG5lZ28gd3NwYXJjaWEgdyAiCi0rImt3ZXN0aWFjaCB3eW5p a2FqxIVjeWNoIHoga29yenlzdGFuaWEgeiB0ZWogb3BjamkuIgotIAotICM6IHB5dGhvbi9pbnN0 YWxsLnB5OjU4MAotIG1zZ2lkICIiCi1AQCAtMTk3NiwyMyArMjAwMSwyMyBAQCBtc2dzdHIgIk1l bmVkxbxlciB3dHljemVrIgotIAotICM6IHB5dGhvbi9tYWlud2luZG93LnB5OjI5NAotIG1zZ2lk ICJTdXBwb3J0ZWQgc29mdHdhcmUiCi0tbXNnc3RyICIiCi0rbXNnc3RyICJPYnPFgnVnaXdhbmUg b3Byb2dyYW1vd2FuaWUiCi0gCi0gIzogcHl0aG9uL21haW53aW5kb3cucHk6Mjk1Ci0gbXNnaWQg Ik5ld3MiCi0tbXNnc3RyICIiCi0rbXNnc3RyICJBa3R1YWxub8WbY2kiCi0gCi0gIzogcHl0aG9u L21haW53aW5kb3cucHk6Mjk2Ci0gbXNnaWQgIkRvY3VtZW50YXRpb24iCi0tbXNnc3RyICIiCi0r bXNnc3RyICJEb2t1bWVudGFjamEiCi0gCi0gIzogcHl0aG9uL21haW53aW5kb3cucHk6Mjk3Ci0g bXNnaWQgIkZvcnVtcyIKLS1tc2dzdHIgIiIKLSttc2dzdHIgIkZvcmEgZHlza3VzeWpuZSIKLSAK LSAjOiBweXRob24vbWFpbndpbmRvdy5weToyOTgKLSBtc2dpZCAiQnVncyIKLS1tc2dzdHIgIiIK LSttc2dzdHIgIkLFgsSZZHkiCi0gCi0gIzogcHl0aG9uL21haW53aW5kb3cucHk6MzAwCi0gbXNn aWQgIlR3aXR0ZXIiCi1AQCAtMjAyOCw3ICsyMDUzLDcgQEAgbXNnc3RyICJXdHljemtpIgotIAot ICM6IHB5dGhvbi9tYWlud2luZG93LnB5OjM2OQotIG1zZ2lkICJTdXBwb3J0IgotLW1zZ3N0ciAi IgotK21zZ3N0ciAiV3NwYXJjaWUiCi0gCi0gIzogcHl0aG9uL21haW53aW5kb3cucHk6MzgxIHB5 dGhvbi9tYWlud2luZG93LnB5Ojc3NwotIG1zZ2lkICJDbG9zZSIKLUBAIC0yMDgwLDcgKzIxMDUs NyBAQCBtc2dzdHIgIkRlYnVndWoiCi0gCi0gIzogcHl0aG9uL21haW53aW5kb3cucHk6Nzg1Ci0g bXNnaWQgIlNlbmQgYSBmZWVkYmFjayIKLS1tc2dzdHIgIiIKLSttc2dzdHIgIld5xZtsaWogemfF gm9zemVuaWUiCi0gCi0gIzogcHl0aG9uL21haW53aW5kb3cucHk6NzkwCi0gbXNnaWQgIkNyZWF0 ZSBhIHNob3J0Y3V0IgotQEAgLTIxMTcsNyArMjE0Miw3IEBAIG1zZ3N0ciAiV2lydHVhbG55IGR5 c2sgdHdhcmR5IHp3acSFemFueSB6IHswfSAoezF9KSBuaWUgaXN0bmllamUuIgotIAotICM6IHB5 dGhvbi9tYWlud2luZG93LnB5OjExMDIKLSBtc2dpZCAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRv IGNsb3NlIGFsbCB7MH0gd2luZG93cz8iCi0tbXNnc3RyICIiCi0rbXNnc3RyICJDenkgbmEgcGV3 bm8gY2hjZXN6IHphbWtuxIXEhyB3c3p5c3RraWUgezB9IG9rbmE/IgotIAotICM6IHB5dGhvbi9t YWlud2luZG93LnB5OjExMjQKLSBtc2dpZCAiUnVuIHlvdXIgV2luZG93cyBwcm9ncmFtcyBvbiAi Ci1AQCAtMjM0Miw3ICsyMzY3LDcgQEAgbXNnc3RyICJKZXN0ZcWbIHBld2llbiB6ZSBjaGNlc3og dXN1bsSFxIcgV2luZSB7MH0/IgotIAotICM6IHB5dGhvbi93aW5lX3ZlcnNpb25zLnB5OjMzNAot IG1zZ2lkICJUaGlzIHZlcnNpb24gaXMgQ1VSUkVOVExZIElOIFVTRSIKLS1tc2dzdHIgIiIKLStt c2dzdHIgIlRhIHdlcnNqYSBqZXN0IG9iZWNuaWUgdyB1xbx5Y2l1IgotIAotICM6IHB5dGhvbi93 cmFwcGVyLnB5OjEzNQotIG1zZ2lkICJ7MH0gaXMgbm90IGFibGUgdG8gc3RhcnQgUE9MX1NldHVw V2luZG93X3NlcnZlci4iCi0KLUZyb20gOGYwODI2MzJjMzBjODU0NjFjNzZmMGY5NWFjNzQ3Njc1 YmMwYWY5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFF1ZW50aW4gUEFSSVMgPGdp dEBxdWVudGluLnBhcmlzPgotRGF0ZTogU3VuLCAyNCBKYW4gMjAyMSAxNToyMTo1NCArMDEwMAot U3ViamVjdDogW1BBVENIIDE1LzMzXSBSZWFmY3RvcmluZyB3aW5lIHZlcnNpb24gbWFuYWdlciBj b2RlCi0KLS0tLQotIGJhc2gvc3RhcnR1cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgOCArCi0gbGliL3ZhcmlhYmxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgICAxICsKLSBsaWIvd2luZS5saWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDIxNTkgKysrKysrKysrLS0tLS0tLS0tCi0gcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkgICAgICAg ICAgICAgICAgICAgICAgfCAgICA5ICstCi0gcHl0aG9uL21haW53aW5kb3cucHkgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAyICstCi0gcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNp b25zRmV0Y2hlci5weSAgfCAgMTM5ICstCi0gcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNp b25zTm90ZWJvb2sucHkgfCAgMTM5ICstCi0gcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNp b25zVG9vbHMucHkgICAgfCAgIDI0ICstCi0gcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNp b25zV2luZG93LnB5ICAgfCAgMjYwICstLQotIDkgZmlsZXMgY2hhbmdlZCwgMTMxNSBpbnNlcnRp b25zKCspLCAxNDI2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmFzaC9zdGFydHVwIGIv YmFzaC9zdGFydHVwCi1pbmRleCBhYjBiNWRjYjUuLmZiNjJlN2E4YiAxMDA3NTUKLS0tLSBhL2Jh c2gvc3RhcnR1cAotKysrIGIvYmFzaC9zdGFydHVwCi1AQCAtMzEsNiArMzEsMTQgQEAgYnVpbGRf dXNlcl9zdGF0ZV9kaXJlY3RvcnkKLSAjIENsZWFuaW5nIHRtcCBkaXJlY3RvcnkKLSBjbGVhbl90 bXAKLSAKLSsjIE1hYyBPUyBDYXRhbGluYTogUmVtb3ZlIGxlZ2FjeSB3aW5lIHZlcnNpb25zCi0r aWYgW1sgIiRPU1hfVkVSU0lPTiIgLWdlIDE5IF1dOyB0aGVuCi0rICAgIGlmIFtbICEgLWUgIiRQ T0xfVVNFUl9ST09UL3dpbmUvZGFyd2luLXg4Ni1sZWdhY3kiIF1dOyB0aGVuCi0rICAgICAgICBb WyAtZSAiJFBPTF9VU0VSX1JPT1Qvd2luZS9kYXJ3aW4teDg2IiBdXSAmJiBtdiAiJFBPTF9VU0VS X1JPT1Qvd2luZS9kYXJ3aW4teDg2IiAiJFBPTF9VU0VSX1JPT1Qvd2luZS9kYXJ3aW4teDg2LWxl Z2FjeSIKLSsgICAgICAgIG1rZGlyIC1wICIkUE9MX1VTRVJfUk9PVC93aW5lL2Rhcndpbi14ODYt bGVnYWN5IgotKyAgICBmaQotK2ZpCi0rCi0gIyMjIE9wZXJhdGlvbnMgYmVsb3cgYXJlIGJhY2tn cm91bmQgYXN5bmNocm9ub3VzIHRhc2tzCi0gCi0gKAotZGlmZiAtLWdpdCBhL2xpYi92YXJpYWJs ZXMgYi9saWIvdmFyaWFibGVzCi1pbmRleCAzZGY0YjY3MDguLjljMTZmZTFhNyAxMDA3NTUKLS0t LSBhL2xpYi92YXJpYWJsZXMKLSsrKyBiL2xpYi92YXJpYWJsZXMKLUBAIC0yMSw2ICsyMSw3IEBA Ci0gIyMgSGFjayBmb3IgRWwgQ2FwaXRhaW4KLSBbICEgIiRXUklURV9MRCIgPSAiIiBdICYmIGV4 cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiRXUklURV9MRCIKLSBbICEgIiRXUklURV9EWUxEIiA9ICIi IF0gJiYgZXhwb3J0IERZTERfTElCUkFSWV9QQVRIPSIkV1JJVEVfRFlMRCIKLStbICEgIiRXUklU RV9EWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCIgPSAiIiBdICYmIGV4cG9ydCBEWUxEX0ZBTExC QUNLX0xJQlJBUllfUEFUSD0iJFdSSVRFX0RZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIIgotIAot ICMgVGhpcyBpcyBqdXN0IGEgY29weSBvZiBmdW5jdGlvbiBpbiBwbGF5b25saW51eCwgYnV0IHdl IG5lZWQgaXQgZWFybGllcgotIFsgIiRQT0xfT1MiID0gIk1hYyIgXSAmJiBleHBvcnQgTEFORz0i JFJMQU5HIgotZGlmZiAtLWdpdCBhL2xpYi93aW5lLmxpYiBiL2xpYi93aW5lLmxpYgotaW5kZXgg NzcxNzlkMTM3Li5kMjdkZTE1MDkgMTAwNzU1Ci0tLS0gYS9saWIvd2luZS5saWIKLSsrKyBiL2xp Yi93aW5lLmxpYgotQEAgLTIyLDgyICsyMiw4MyBAQAotICMKLSAjIFRoaXMgbGliIGNvbnRhaW5z IHdpbmUncyBhcGkKLSAKLS1QT0xfV2luZV9HZXRSZWdWYWx1ZSgpCi0tewotLQkjIEdldCBhIHZh bHVlIGluIHJlZ2lzdHJ5Ci0tCSMgRXhhbXBsZSA6IFBPTF9XaW5lX0dldFJlZ19WYWx1ZSBNdWx0 aXNhbXBsaW5nCi0tCSMKLS0JIyBSZWFkIGh0dHA6Ly93aWtpLndpbmVocS5vcmcvVXNlZnVsUmVn aXN0cnlLZXlzCi0tCi0tCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAi V0lORVBSRUZJWCBub3Qgc2V0IgotLQlsb2NhbCB2YWx1ZQotLQkjIHRyIC1kICdcMCcgaXMgYSB3 b3JrYXJvdW5kIGZvciBXaW5lIGJ1ZyAjMzc1NzUKLS0JWyAtZSAiJFdJTkVQUkVGSVgvdXNlci5y ZWciIF0gJiYgdmFsdWU9IiQoZ3JlcCAiXlwiJDFcIj0iICIkV0lORVBSRUZJWC91c2VyLnJlZyIg fCBoZWFkIC1uIDEgfCB0ciAtZCAnIicgfCBjdXQgLWQ9IC1mMi0gfCB0ciAtZCAnXDAnKSIKLS0J UE9MX0RlYnVnX01lc3NhZ2UgIkdldHRpbmcgcmVnaXN0cnkgdmFsdWUgJDEuIFJldHVybjogJHZh bHVlIgotLQllY2hvIC1uICIke3ZhbHVlOi1kZWZhdWx0fSIKLStQT0xfV2luZV9HZXRSZWdWYWx1 ZSgpIHsKLSsgICMgR2V0IGEgdmFsdWUgaW4gcmVnaXN0cnkKLSsgICMgRXhhbXBsZSA6IFBPTF9X aW5lX0dldFJlZ19WYWx1ZSBNdWx0aXNhbXBsaW5nCi0rICAjCi0rICAjIFJlYWQgaHR0cDovL3dp a2kud2luZWhxLm9yZy9Vc2VmdWxSZWdpc3RyeUtleXMKLSsKLSsgIFsgLXogIiRXSU5FUFJFRklY IiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotKyAgbG9jYWwgdmFs dWUKLSsgICMgdHIgLWQgJ1wwJyBpcyBhIHdvcmthcm91bmQgZm9yIFdpbmUgYnVnICMzNzU3NQot KyAgWyAtZSAiJFdJTkVQUkVGSVgvdXNlci5yZWciIF0gJiYgdmFsdWU9IiQoZ3JlcCAiXlwiJDFc Ij0iICIkV0lORVBSRUZJWC91c2VyLnJlZyIgfCBoZWFkIC1uIDEgfCB0ciAtZCAnIicgfCBjdXQg LWQ9IC1mMi0gfCB0ciAtZCAnXDAnKSIKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJHZXR0aW5nIHJl Z2lzdHJ5IHZhbHVlICQxLiBSZXR1cm46ICR2YWx1ZSIKLSsgIGVjaG8gLW4gIiR7dmFsdWU6LWRl ZmF1bHR9IgotIH0KLSAKLS1QT0xfV2luZV9VcGRhdGVSZWdpc3RyeSAoKQotLXsKLS0JIyBVc2Fn ZTogUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgcmVnYmFzZW5hbWUKLS0JIyByZWdpc3RyeSBmaWxl IG11c3QgYmUgcHJvdmlkZWQgdGhydSBzdGRpbgotLQkjIEZpbGUgc2lnbmF0dXJlICgiUkVHRURJ VDQiKSBpbiBhcHBlbmRlZCBhdXRvbWF0aWNhbGx5Ci0tCi0tCShlY2hvICJSRUdFRElUNCI7IGVj aG8gIiI7IGNhdCkgPiAiJFBPTF9VU0VSX1JPT1QvdG1wLyQxLnJlZyIKLS0JUE9MX1dpbmUgcmVn ZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wLyQxLnJlZyIgJiYKLS0Jcm0gIiRQT0xfVVNFUl9ST09U L3RtcC8kMS5yZWciCi0rUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkoKSB7Ci0rICAjIFVzYWdlOiBQ T0xfV2luZV9VcGRhdGVSZWdpc3RyeSByZWdiYXNlbmFtZQotKyAgIyByZWdpc3RyeSBmaWxlIG11 c3QgYmUgcHJvdmlkZWQgdGhydSBzdGRpbgotKyAgIyBGaWxlIHNpZ25hdHVyZSAoIlJFR0VESVQ0 IikgaW4gYXBwZW5kZWQgYXV0b21hdGljYWxseQotKwotKyAgKAotKyAgICBlY2hvICJSRUdFRElU NCIKLSsgICAgZWNobyAiIgotKyAgICBjYXQKLSsgICkgPiIkUE9MX1VTRVJfUk9PVC90bXAvJDEu cmVnIgotKyAgUE9MX1dpbmUgcmVnZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wLyQxLnJlZyIgJiYK LSsgICAgcm0gIiRQT0xfVVNFUl9ST09UL3RtcC8kMS5yZWciCi0gfQotIAotLVBPTF9XaW5lX1Vw ZGF0ZVJlZ2lzdHJ5UGFpciAoKQotLXsKLS0JIyBVc2FnZTogUE9MX1dpbmVfVXBkYXRlUmVnaXN0 cnlQYWlyIGtleSBuYW1lIFstLXN6fC0tYmluYXJ5fC0tZHdvcmR8LS1tdWx0aXN6XSBkYXRhCi0t CSMgZGF0YT0iZGVmYXVsdCI6IHJlbW92ZSB0aGUgbmFtZQotLSAgICAgICAgbG9jYWwga2V5PSIk MSIKLS0gICAgICAgIGxvY2FsIHN1YmtleT0iJDIiCi0tICAgICAgICBzaGlmdCAyCi0tICAgICAg ICBsb2NhbCB2YWx1ZQotLSAgICAgICAgY2FzZSAiJDEiIGluCi0tICAgICAgICAgIC0tc3p8LS1T WikKLS0gICAgICAgICAgICBzaGlmdAotLSAgICAgICAgICAgICMgYmFja3NsYXNoIFxzIGFuZCAi cz8KLS0gICAgICAgICAgICB2YWx1ZT0iXCIkMVwiIgotLSAgICAgICAgICAgIDs7Ci0tICAgICAg ICAgIC0tYmluYXJ5fC0tQklOQVJZKQotLSAgICAgICAgICAgIHNoaWZ0Ci0tICAgICAgICAgICAg dmFsdWU9ImhleDokMSIKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAtLWR3b3JkfC0tRFdP UkQpCi0tICAgICAgICAgICAgc2hpZnQKLS0gICAgICAgICAgICB2YWx1ZT0iZHdvcmQ6JDEiCi0t ICAgICAgICAgICAgOzsKLS0gICAgICAgICAgLS1tdWx0aXN6fC0tTVVMVElTWikKLS0gICAgICAg ICAgICBzaGlmdAotLSAgICAgICAgICAgIHZhbHVlPSJoZXgoNyk6JDEiCi0tICAgICAgICAgICAg OzsKLS0gICAgICAgICAgLS0qKQotLSAgICAgICAgICAgIFBPTF9EZWJ1Z19GYXRhbCAiVW5yZWNv Z25pemVkIHZhbHVlIHR5cGU6ICQxLCBzdXBwb3J0ZWQgYXJlIC0tc3ogLS1iaW5hcnkgLS1kd29y ZCAtLW11bHRpc3oiCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgICAgZGVmYXVsdCkKLS0gICAg ICAgICAgICB2YWx1ZT0iLSIKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAqKQotLSAgICAg ICAgICAgICMgYmFja3NsYXNoIFxzIGFuZCAicz8KLS0gICAgICAgICAgICB2YWx1ZT0iXCIkMVwi IgotLSAgICAgICAgZXNhYwotLQotLQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgcmVna2V5IDw8 LSBfRU9GSU5JXwotK1BPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5UGFpcigpIHsKLSsgICMgVXNhZ2U6 IFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5UGFpciBrZXkgbmFtZSBbLS1zenwtLWJpbmFyeXwtLWR3 b3JkfC0tbXVsdGlzel0gZGF0YQotKyAgIyBkYXRhPSJkZWZhdWx0IjogcmVtb3ZlIHRoZSBuYW1l Ci0rICBsb2NhbCBrZXk9IiQxIgotKyAgbG9jYWwgc3Via2V5PSIkMiIKLSsgIHNoaWZ0IDIKLSsg IGxvY2FsIHZhbHVlCi0rICBjYXNlICIkMSIgaW4KLSsgIC0tc3ogfCAtLVNaKQotKyAgICBzaGlm dAotKyAgICAjIGJhY2tzbGFzaCBccyBhbmQgInM/Ci0rICAgIHZhbHVlPSJcIiQxXCIiCi0rICAg IDs7Ci0rICAtLWJpbmFyeSB8IC0tQklOQVJZKQotKyAgICBzaGlmdAotKyAgICB2YWx1ZT0iaGV4 OiQxIgotKyAgICA7OwotKyAgLS1kd29yZCB8IC0tRFdPUkQpCi0rICAgIHNoaWZ0Ci0rICAgIHZh bHVlPSJkd29yZDokMSIKLSsgICAgOzsKLSsgIC0tbXVsdGlzeiB8IC0tTVVMVElTWikKLSsgICAg c2hpZnQKLSsgICAgdmFsdWU9ImhleCg3KTokMSIKLSsgICAgOzsKLSsgIC0tKikKLSsgICAgUE9M X0RlYnVnX0ZhdGFsICJVbnJlY29nbml6ZWQgdmFsdWUgdHlwZTogJDEsIHN1cHBvcnRlZCBhcmUg LS1zeiAtLWJpbmFyeSAtLWR3b3JkIC0tbXVsdGlzeiIKLSsgICAgOzsKLSsgIGRlZmF1bHQpCi0r ICAgIHZhbHVlPSItIgotKyAgICA7OwotKyAgKikKLSsgICAgIyBiYWNrc2xhc2ggXHMgYW5kICJz PwotKyAgICB2YWx1ZT0iXCIkMVwiIgotKyAgICA7OwotKyAgZXNhYwotKwotKyAgUE9MX1dpbmVf VXBkYXRlUmVnaXN0cnkgcmVna2V5IDw8LV9FT0ZJTklfCi0gCQlbJGtleV0KLSAJCSIkc3Via2V5 Ij0kdmFsdWUKLSAJCV9FT0ZJTklfCi0gfQotIAotLVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2lu ZVBhaXIgKCkKLS17Ci0tCSMgVXNhZ2U6IFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5UGFpciBzdWJr ZXkgbmFtZSBbLS1zenwtLWJpbmFyeXwtLWR3b3JkfC0tbXVsdGlzel0gZGF0YQotLQkjIGRhdGE9 ImRlZmF1bHQiOiByZW1vdmUgdGhlIG5hbWUKLStQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQ YWlyKCkgewotKyAgIyBVc2FnZTogUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlQYWlyIHN1YmtleSBu YW1lIFstLXN6fC0tYmluYXJ5fC0tZHdvcmR8LS1tdWx0aXN6XSBkYXRhCi0rICAjIGRhdGE9ImRl ZmF1bHQiOiByZW1vdmUgdGhlIG5hbWUKLSAKLS0JIyBQdXQgYSAiXCIgYmVmb3JlICQxIGlmIGl0 J3Mgbm90IGVtcHR5Ci0tCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5UGFpciAiSEtFWV9DVVJSRU5U X1VTRVJcXFNvZnR3YXJlXFxXaW5lJHsxOitcXCQxfSIgIiQyIiAiJDMiICIkNCIKLSsgICMgUHV0 IGEgIlwiIGJlZm9yZSAkMSBpZiBpdCdzIG5vdCBlbXB0eQotKyAgUE9MX1dpbmVfVXBkYXRlUmVn aXN0cnlQYWlyICJIS0VZX0NVUlJFTlRfVVNFUlxcU29mdHdhcmVcXFdpbmUkezE6K1xcJDF9IiAi JDIiICIkMyIgIiQ0IgotIH0KLSAKLSAjIEZvciBhbGwgZnVuY3Rpb25zIGJlbG93LCB0aGF0IGNh biBiZSBjYWxsZWQgZnJvbSB0aGUgY29udHJvbCBwYW5lbDoKLUBAIC0xMDUsMzYxICsxMDYsMzQ0 IEBAIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgKCkKLSAjICAgY2hhbmdlZCBXaW5l IHZlcnNpb24gb3V0IG9mIG91ciBjb250cm9sOwotICMgLSBLaWxsIHdpbmVzZXJ2ZXIgYWZ0ZXIg cmVnZWRpdCBzbyBjaGFuZ2UgdGFrZXMgZWZmZWN0IGltbWVkaWF0ZWx5Ci0gCi0tUE9MX1dpbmVf RGlyZWN0M0QgKCkKLS17Ci0tCSMgQ2hhbmdlIGEgRGlyZWN0M0QgdmFsdWUgaW4gcmVnaXN0cnkK LS0JIyBVc2FnZSBQT0xfV2luZV9EaXJlY3QzRCBLZXkgIFstLXN6fC0tYmluYXJ5fC0tZHdvcmR8 LS1tdWx0aXN6XSBWYWx1ZQotK1BPTF9XaW5lX0RpcmVjdDNEKCkgewotKyAgIyBDaGFuZ2UgYSBE aXJlY3QzRCB2YWx1ZSBpbiByZWdpc3RyeQotKyAgIyBVc2FnZSBQT0xfV2luZV9EaXJlY3QzRCBL ZXkgIFstLXN6fC0tYmluYXJ5fC0tZHdvcmR8LS1tdWx0aXN6XSBWYWx1ZQotIAotLQkjIEV4YW1w bGUgOjogUE9MX1dpbmVfRGlyZWN0M0QgVXNlR0xTTCBbZGVmYXVsdCAvIGVuYWJsZWQgLyBkaXNh YmxlZF0KLS0JIyBkZWZhdWx0OiByZW1vdmUgdGhlIGtleQotLQlQT0xfRGVidWdfTWVzc2FnZSAi U2V0dGluZyB3aW5lIERpcmVjdDNEICRXSU5FUFJFRklYICQxICQyICQzIgotLQlbIC16ICIkV0lO RVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLSsgICMg RXhhbXBsZSA6OiBQT0xfV2luZV9EaXJlY3QzRCBVc2VHTFNMIFtkZWZhdWx0IC8gZW5hYmxlZCAv IGRpc2FibGVkXQotKyAgIyBkZWZhdWx0OiByZW1vdmUgdGhlIGtleQotKyAgUE9MX0RlYnVnX01l c3NhZ2UgIlNldHRpbmcgd2luZSBEaXJlY3QzRCAkV0lORVBSRUZJWCAkMSAkMiAkMyIKLSsgIFsg LXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0 IgotIAotLQlQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgotLQl3aW5lc2VydmVyIC1rCi0tCVBP TF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdDNEJyAiJDEiICIkMiIgIiQzIgot LQl3aW5lc2VydmVyIC1rCi0rICBQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgotKyAgd2luZXNl cnZlciAtawotKyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0M0QnICIk MSIgIiQyIiAiJDMiCi0rICB3aW5lc2VydmVyIC1rCi0gfQotIAotLVBPTF9XaW5lX1gxMURydiAo KQotLXsKLS0JIyBDaGFuZ2UgYSBYMTFEcnYgdmFsdWUgaW4gcmVnaXN0cnkKLS0JIyBVc2FnZSBQ T0xfV2luZV9YMTFEcnYgS2V5IFstLXN6fC0tYmluYXJ5fC0tZHdvcmR8LS1tdWx0aXN6XSBWYWx1 ZQotK1BPTF9XaW5lX1gxMURydigpIHsKLSsgICMgQ2hhbmdlIGEgWDExRHJ2IHZhbHVlIGluIHJl Z2lzdHJ5Ci0rICAjIFVzYWdlIFBPTF9XaW5lX1gxMURydiBLZXkgWy0tc3p8LS1iaW5hcnl8LS1k d29yZHwtLW11bHRpc3pdIFZhbHVlCi0gCi0tCSMgRXhhbXBsZSA6OiBQT0xfV2luZV9YMTFEcnYg VXNlR0xTTCBbZGVmYXVsdCAvIGVuYWJsZWQgLyBkaXNhYmxlZF0KLS0JIyBkZWZhdWx0OiByZW1v dmUgdGhlIGtleQotLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIFgxMURydiAkV0lO RVBSRUZJWCAkMSAkMiAkMyIKLS0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0Zh dGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0rICAjIEV4YW1wbGUgOjogUE9MX1dpbmVfWDExRHJ2 IFVzZUdMU0wgW2RlZmF1bHQgLyBlbmFibGVkIC8gZGlzYWJsZWRdCi0rICAjIGRlZmF1bHQ6IHJl bW92ZSB0aGUga2V5Ci0rICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIFgxMURydiAk V0lORVBSRUZJWCAkMSAkMiAkMyIKLSsgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1 Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotIAotLQlQT0xfV2luZV9BdXRvU2V0VmVyc2lv bkVudgotLQl3aW5lc2VydmVyIC1rCi0tCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIg J1gxMSBEcml2ZXInICIkMSIgIiQyIiAiJDMiCi0tCXdpbmVzZXJ2ZXIgLWsKLSsgIFBPTF9XaW5l X0F1dG9TZXRWZXJzaW9uRW52Ci0rICB3aW5lc2VydmVyIC1rCi0rICBQT0xfV2luZV9VcGRhdGVS ZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAiJDEiICIkMiIgIiQzIgotKyAgd2luZXNlcnZl ciAtawotIH0KLSAKLS1QT0xfV2luZV9EaXJlY3RTb3VuZCAoKQotLXsKLS0JIyBTYW1lIHRoYXQg UE9MX1dpbmVfRGlyZWN0M0QsIGJ1dCBmb3IgRGlyZWN0U291bmQKLS0JUE9MX0RlYnVnX01lc3Nh Z2UgIlNldHRpbmcgd2luZSBEaXJlY3RTb3VuZCAkV0lORVBSRUZJWCAkMSAkMiAkMyIKLS0JWyAt eiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQi Ci0rUE9MX1dpbmVfRGlyZWN0U291bmQoKSB7Ci0rICAjIFNhbWUgdGhhdCBQT0xfV2luZV9EaXJl Y3QzRCwgYnV0IGZvciBEaXJlY3RTb3VuZAotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcg d2luZSBEaXJlY3RTb3VuZCAkV0lORVBSRUZJWCAkMSAkMiAkMyIKLSsgIFsgLXogIiRXSU5FUFJF RklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotIAotLQlQT0xf V2luZV9BdXRvU2V0VmVyc2lvbkVudgotLQl3aW5lc2VydmVyIC1rCi0tCVBPTF9XaW5lX1VwZGF0 ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNvdW5kJyAiJDEiICIkMiIgIiQzIgotLQl3aW5lc2Vy dmVyIC1rCi0rICBQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgotKyAgd2luZXNlcnZlciAtawot KyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0U291bmQnICIkMSIgIiQy IiAiJDMiCi0rICB3aW5lc2VydmVyIC1rCi0gfQotIAotLVBPTF9XaW5lX0RpcmVjdElucHV0ICgp Ci0tewotLQkjIFNhbWUgdGhhdCBQT0xfV2luZV9EaXJlY3QzRCwgYnV0IGZvciBEaXJlY3RJbnB1 dAotLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIERpcmVjdElucHV0ICRXSU5FUFJF RklYICQxICQyICQzIgotLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwg IldJTkVQUkVGSVggbm90IHNldCIKLStQT0xfV2luZV9EaXJlY3RJbnB1dCgpIHsKLSsgICMgU2Ft ZSB0aGF0IFBPTF9XaW5lX0RpcmVjdDNELCBidXQgZm9yIERpcmVjdElucHV0Ci0rICBQT0xfRGVi dWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIERpcmVjdElucHV0ICRXSU5FUFJFRklYICQxICQyICQz IgotKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklY IG5vdCBzZXQiCi0gCi0tCVBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52Ci0tCXdpbmVzZXJ2ZXIg LWsKLS0JUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0SW5wdXQnICIkMSIg IiQyIiAiJDMiCi0tCXdpbmVzZXJ2ZXIgLWsKLSsgIFBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52 Ci0rICB3aW5lc2VydmVyIC1rCi0rICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdE aXJlY3RJbnB1dCcgIiQxIiAiJDIiICIkMyIKLSsgIHdpbmVzZXJ2ZXIgLWsKLSB9Ci0gCi0tU2V0 X09TICgpCi0tewotLQkjIFNldCBmYWtlIHdpbmRvd3MgT1MKLS0JIyBVc2FnZTogU2V0X09TIFsx XSBbMl0KLS0JIwotLQkjIDE6IFBvc3NpYmxlIHZhbHVlczogd2luNywgd2luMjAwOCwgdmlzdGEs IHdpbjIwMDMsIHdpbnhwLCB3aW4yMDAwLCBudDQwLCB3aW5udDM1MSwgd2lubWUsIHdpbjk4LCB3 aW45NSwgd2luMzEsIHdpbjMwLCB3aW4yMAotLQkjIDI6IFNlcnZpY2UgUGFjazogc3AxLCBzcDIs IHNwMywgc3A0LCBzcDUKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgV2luZG93cyBPUyB0 byAkMSAkMiIKLS0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5F UFJFRklYIG5vdCBzZXQiCi0tCi0tCWlmIFsgLW4gIiQxIiBdOyB0aGVuCi0tCQlQT0xfV2luZV9V cGRhdGVSZWdpc3RyeVdpbmVQYWlyICcnICdWZXJzaW9uJyAiJDEiCi0tCWZpCi0tCi0tCWlmIFsg LW4gIiQyIiBdOyB0aGVuICMgTmVlZCBtb3JlIHRlc3RpbmcKLS0JCWxvY2FsIG4KLS0JCVsgIiQy IiA9ICJzcDEiIF0gJiYgbj0xCi0tCQlbICIkMiIgPSAic3AyIiBdICYmIG49MgotLQkJWyAiJDIi ID0gInNwMyIgXSAmJiBuPTMKLS0JCVsgIiQyIiA9ICJzcDQiIF0gJiYgbj00Ci0tCQlbICIkMiIg PSAic3A1IiBdICYmIG49NQotLQotLQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgc2V0b3MgPDwt IF9FT0ZJTklfCi0rU2V0X09TKCkgewotKyAgIyBTZXQgZmFrZSB3aW5kb3dzIE9TCi0rICAjIFVz YWdlOiBTZXRfT1MgWzFdIFsyXQotKyAgIwotKyAgIyAxOiBQb3NzaWJsZSB2YWx1ZXM6IHdpbjcs IHdpbjIwMDgsIHZpc3RhLCB3aW4yMDAzLCB3aW54cCwgd2luMjAwMCwgbnQ0MCwgd2lubnQzNTEs IHdpbm1lLCB3aW45OCwgd2luOTUsIHdpbjMxLCB3aW4zMCwgd2luMjAKLSsgICMgMjogU2Vydmlj ZSBQYWNrOiBzcDEsIHNwMiwgc3AzLCBzcDQsIHNwNQotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNl dHRpbmcgV2luZG93cyBPUyB0byAkMSAkMiIKLSsgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBP TF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotKwotKyAgaWYgWyAtbiAiJDEiIF07 IHRoZW4KLSsgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnJyAnVmVyc2lvbicg IiQxIgotKyAgZmkKLSsKLSsgIGlmIFsgLW4gIiQyIiBdOyB0aGVuICMgTmVlZCBtb3JlIHRlc3Rp bmcKLSsgICAgbG9jYWwgbgotKyAgICBbICIkMiIgPSAic3AxIiBdICYmIG49MQotKyAgICBbICIk MiIgPSAic3AyIiBdICYmIG49MgotKyAgICBbICIkMiIgPSAic3AzIiBdICYmIG49MwotKyAgICBb ICIkMiIgPSAic3A0IiBdICYmIG49NAotKyAgICBbICIkMiIgPSAic3A1IiBdICYmIG49NQotKwot KyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeSBzZXRvcyA8PC1fRU9GSU5JXwotIAkJW0hLRVlf TE9DQUxfTUFDSElORVxcU29mdHdhcmVcXE1pY3Jvc29mdFxcV2luZG93cyBOVFxcQ3VycmVudFZl cnNpb25dCi0gCQkiQ1NEVmVyc2lvbiI9IlNlcnZpY2UgUGFjayAkbiIKLSAJCVtIS0VZX0xPQ0FM X01BQ0hJTkVcXFN5c3RlbVxcQ3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXFdpbmRvd3NdCi0g CQkiQ1NEVmVyc2lvbiI9ZHdvcmQ6MDAwMDAke259MDAKLSAJCV9FT0ZJTklfCi0tCWZpCi0rICBm aQotIH0KLSAKLS1TZXRfTWFuYWdlZCAoKQotLXsKLS0JIyBMZXQgdGhlIHdpbmRvd3MgbWFuYWdl ciB0byBjb250cm9sIHdpbmUKLS0JIyBVc2FnZTogU2V0X01hbmFnZWQgKE9ufE9mZikKLS0KLS0J UE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBtYW5hZ2VkOiAkMSIKLS0JWyAteiAiJFdJ TkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0tCi0t CWxvY2FsIG4KLS0JWyAiJDEiID0gIk9uIiBdICYmIG49IlkiCi0tCVsgIiQxIiA9ICJPZmYiIF0g JiYgbj0iTiIKLS0JaWYgWyAtbiAiJG4iIF07IHRoZW4KLS0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lz dHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICJNYW5hZ2VkIiAiJG4iCi0tCWVsc2UKLS0JCVBPTF9E ZWJ1Z19XYXJuaW5nICJVbnJlY29nbml6ZWQgZmxhZyAnJDEnIgotLQlmaQotK1NldF9NYW5hZ2Vk KCkgewotKyAgIyBMZXQgdGhlIHdpbmRvd3MgbWFuYWdlciB0byBjb250cm9sIHdpbmUKLSsgICMg VXNhZ2U6IFNldF9NYW5hZ2VkIChPbnxPZmYpCi0rCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0 dGluZyB3aW5lIG1hbmFnZWQ6ICQxIgotKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0Rl YnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0rCi0rICBsb2NhbCBuCi0rICBbICIkMSIg PSAiT24iIF0gJiYgbj0iWSIKLSsgIFsgIiQxIiA9ICJPZmYiIF0gJiYgbj0iTiIKLSsgIGlmIFsg LW4gIiRuIiBdOyB0aGVuCi0rICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gx MSBEcml2ZXInICJNYW5hZ2VkIiAiJG4iCi0rICBlbHNlCi0rICAgIFBPTF9EZWJ1Z19XYXJuaW5n ICJVbnJlY29nbml6ZWQgZmxhZyAnJDEnIgotKyAgZmkKLSB9Ci0gCi0tU2V0X1NvdW5kRHJpdmVy ICgpCi0tewotLQkjIFNldCB0aGUgc291bmQgZHJpdmVyCi0tCSMgVXNhZ2U6IFNldF9Tb3VuZERy aXZlciBbRHJpdmVyXQotLQkjIFVzZSBhbiBlbXB0eSBzdHJpbmcgcGFyYW1ldGVyIHRvIGRpc2Fi bGUgc291bmQKLS0JIyBEaXNhYmxlZCBpbiBNYWMgT1MKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIlNl dHRpbmcgd2luZSBTb3VuZERyaXZlciAkQCIKLS0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9M X0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0tCi0tCWlmIFsgIiRQT0xfT1MiID0g IkxpbnV4IiBdOyB0aGVuCi0tCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEcml2 ZXJzJyAnQXVkaW8nICIkMSIKLS0JZWxzZQotLQkJUE9MX0RlYnVnX01lc3NhZ2UgIlNldF9Tb3Vu ZERyaXZlciBkaXNhYmxlZCBvbiAkUE9MX09TIgotLQlmaQotK1NldF9Tb3VuZERyaXZlcigpIHsK LSsgICMgU2V0IHRoZSBzb3VuZCBkcml2ZXIKLSsgICMgVXNhZ2U6IFNldF9Tb3VuZERyaXZlciBb RHJpdmVyXQotKyAgIyBVc2UgYW4gZW1wdHkgc3RyaW5nIHBhcmFtZXRlciB0byBkaXNhYmxlIHNv dW5kCi0rICAjIERpc2FibGVkIGluIE1hYyBPUwotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRp bmcgd2luZSBTb3VuZERyaXZlciAkQCIKLSsgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9E ZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotKwotKyAgaWYgWyAiJFBPTF9PUyIgPSAi TGludXgiIF07IHRoZW4KLSsgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRHJp dmVycycgJ0F1ZGlvJyAiJDEiCi0rICBlbHNlCi0rICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXRf U291bmREcml2ZXIgZGlzYWJsZWQgb24gJFBPTF9PUyIKLSsgIGZpCi0gfQotIAotLVNldF9EWEdy YWIgKCkKLS17Ci0tCSMgRW5hYmxlIG9yIGRpc2FibGUgRFhHcmFiCi0tCSMgVXNhZ2U6IFNldF9E WEdyYWIgKE9ufE9mZikKLS0JIyBPbiBvdSBPZmYKLS0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYg UE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0tCi0tCWxvY2FsIG4KLS0JWyAi JDEiID0gIk9uIiBdICYmIG49IlkiICYmIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIERYR3Jh YiIKLS0JWyAiJDEiID0gIk9mZiIgXSAmJiBuPSJOIiAmJiBQT0xfRGVidWdfTWVzc2FnZSAiVW5z ZXR0aW5nIERYR3JhYiIKLS0JaWYgWyAtbiAiJG4iIF07IHRoZW4KLS0JCVBPTF9XaW5lX1VwZGF0 ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICdEWEdyYWInICIkbiIKLS0JZWxzZQotLQkJ UE9MX0RlYnVnX1dhcm5pbmcgIlNldF9EWEdyYWI6IHVucmVjb2duaXplZCBmbGFnICckMSciCi0t CWZpCi0rU2V0X0RYR3JhYigpIHsKLSsgICMgRW5hYmxlIG9yIGRpc2FibGUgRFhHcmFiCi0rICAj IFVzYWdlOiBTZXRfRFhHcmFiIChPbnxPZmYpCi0rICAjIE9uIG91IE9mZgotKyAgWyAteiAiJFdJ TkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0rCi0r ICBsb2NhbCBuCi0rICBbICIkMSIgPSAiT24iIF0gJiYgbj0iWSIgJiYgUE9MX0RlYnVnX01lc3Nh Z2UgIlNldHRpbmcgRFhHcmFiIgotKyAgWyAiJDEiID0gIk9mZiIgXSAmJiBuPSJOIiAmJiBQT0xf RGVidWdfTWVzc2FnZSAiVW5zZXR0aW5nIERYR3JhYiIKLSsgIGlmIFsgLW4gIiRuIiBdOyB0aGVu Ci0rICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICdEWEdy YWInICIkbiIKLSsgIGVsc2UKLSsgICAgUE9MX0RlYnVnX1dhcm5pbmcgIlNldF9EWEdyYWI6IHVu cmVjb2duaXplZCBmbGFnICckMSciCi0rICBmaQotIH0KLSAKLS1TZXRfSWV4cGxvcmUgKCkKLS17 Ci0tCSMgTWFrZSBhIGZha2UgSUU2IGluc3RhbGxhdGlvbgotLQkjIFVzYWdlOiBTZXRfSWV4cGxv cmUKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIkZha2luZyBpZTYgaW5zdGFsbGF0aW9uIgotLQlbIC16 ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIK LStTZXRfSWV4cGxvcmUoKSB7Ci0rICAjIE1ha2UgYSBmYWtlIElFNiBpbnN0YWxsYXRpb24KLSsg ICMgVXNhZ2U6IFNldF9JZXhwbG9yZQotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkZha2luZyBpZTYg aW5zdGFsbGF0aW9uIgotKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFs ICJXSU5FUFJFRklYIG5vdCBzZXQiCi0gCi0tCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5IGllIDw8 LSBfRU9GSU5JXwotKyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgaWUgPDwtX0VPRklOSV8KLSAJ W0hLRVlfTE9DQUxfTUFDSElORVxcU29mdHdhcmVcXE1pY3Jvc29mdFxcSW50ZXJuZXQgRXhwbG9y ZXJdCi0gCSJWZXJzaW9uIj0iNi4wLjI5MDAuMjE4MCIKLSAJX0VPRklOSV8KLSB9Ci0gCi0tU2V0 X0Rlc2t0b3AgKCkKLS17Ci0tCSMgU2V0IGEgZGVza3RvcCBlbnZpcm9ubWVudAotLQkjIFVzYWdl OiBTZXRfRGVza3RvcCAob258b2ZmKSBbd2lkdGhdIFtoZWlnaHRdCi0tCi0tCVBPTF9EZWJ1Z19N ZXNzYWdlICJTZXR0aW5nIERlc2t0b3AgOiAkMSAkMiAkMyIKLS0JWyAteiAiJFdJTkVQUkVGSVgi IF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0tCi0tCWlmIFsgIiQx IiA9ICJPZmYiIF07IHRoZW4KLS0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gx MSBEcml2ZXInICdEZXNrdG9wJyAiLTEiCi0tCQkjIFJlbW92ZSBrZXkKLS0JCVBPTF9XaW5lX1Vw ZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0V4cGxvcmVyJyAnRGVza3RvcCcgJ2RlZmF1bHQnCi0tCWVs aWYgWyAiJDEiID0gIk9uIiBdOyB0aGVuCi0tCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQ YWlyICdYMTEgRHJpdmVyJyAnRGVza3RvcCcgIiQyeCQzIgotLQkJUE9MX1dpbmVfVXBkYXRlUmVn aXN0cnlXaW5lUGFpciAiRXhwbG9yZXJcXERlc2t0b3BzIiAnRGVmYXVsdCcgIiQyeCQzIgotLQkJ UE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRXhwbG9yZXInICdEZXNrdG9wJyAnRGVm YXVsdCcKLS0JZWxzZQotLQkJUE9MX0RlYnVnX1dhcm5pbmcgIlVucmVjb2duaXplZCBmbGFnICck MSciCi0tCWZpCi0rU2V0X0Rlc2t0b3AoKSB7Ci0rICAjIFNldCBhIGRlc2t0b3AgZW52aXJvbm1l bnQKLSsgICMgVXNhZ2U6IFNldF9EZXNrdG9wIChvbnxvZmYpIFt3aWR0aF0gW2hlaWdodF0KLSsK LSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIERlc2t0b3AgOiAkMSAkMiAkMyIKLSsgIFsg LXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0 IgotKwotKyAgaWYgWyAiJDEiID0gIk9mZiIgXTsgdGhlbgotKyAgICBQT0xfV2luZV9VcGRhdGVS ZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAnRGVza3RvcCcgIi0xIgotKyAgICAjIFJlbW92 ZSBrZXkKLSsgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRXhwbG9yZXInICdE ZXNrdG9wJyAnZGVmYXVsdCcKLSsgIGVsaWYgWyAiJDEiID0gIk9uIiBdOyB0aGVuCi0rICAgIFBP TF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICdEZXNrdG9wJyAiJDJ4 JDMiCi0rICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgIkV4cGxvcmVyXFxEZXNr dG9wcyIgJ0RlZmF1bHQnICIkMngkMyIKLSsgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5l UGFpciAnRXhwbG9yZXInICdEZXNrdG9wJyAnRGVmYXVsdCcKLSsgIGVsc2UKLSsgICAgUE9MX0Rl YnVnX1dhcm5pbmcgIlVucmVjb2duaXplZCBmbGFnICckMSciCi0rICBmaQotIH0KLSAKLS1TZXRf U291bmRTYW1wbGVSYXRlICgpCi0tewotLQkjIFNldCBTb3VuZCBzYW1wbGUgcmF0ZQotLQkjIFVz YWdlOiBTZXRfU291bmRTYW1wbGVSYXRlIFt2YWx1ZV0KLS0JIyB2YWx1ZXMgY2FuIGJlOiA0ODAw MCwgNDQxMDAsIDIyMDUwLCAxNjAwMCwgMTEwMjUsIDgwMDAKLS0JUE9MX0RlYnVnX01lc3NhZ2Ug IlNldHRpbmcgU291bmRTYW1wbGVSYXRlIHRvICQxIgotLQlbIC16ICIkV0lORVBSRUZJWCIgXSAm JiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLS0KLS0JaWYgWyAtbiAiJDEi IF07IHRoZW4KLS0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNvdW5k JyAnRGVmYXVsdFNhbXBsZVJhdGUnICIkMSIKLS0JZWxzZQotLQkJIyBGSVhNRTogc2hvdWxkIHdl IGRyb3AgdGhlIG5hbWUgaW5zdGVhZD8KLS0JCVBPTF9EZWJ1Z19XYXJuaW5nICJTYW1wbGUgcmF0 ZSBtaXNzaW5nLCBza2lwcGVkIgotLQlmaQotK1NldF9Tb3VuZFNhbXBsZVJhdGUoKSB7Ci0rICAj IFNldCBTb3VuZCBzYW1wbGUgcmF0ZQotKyAgIyBVc2FnZTogU2V0X1NvdW5kU2FtcGxlUmF0ZSBb dmFsdWVdCi0rICAjIHZhbHVlcyBjYW4gYmU6IDQ4MDAwLCA0NDEwMCwgMjIwNTAsIDE2MDAwLCAx MTAyNSwgODAwMAotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgU291bmRTYW1wbGVSYXRl IHRvICQxIgotKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5F UFJFRklYIG5vdCBzZXQiCi0rCi0rICBpZiBbIC1uICIkMSIgXTsgdGhlbgotKyAgICBQT0xfV2lu ZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RTb3VuZCcgJ0RlZmF1bHRTYW1wbGVSYXRl JyAiJDEiCi0rICBlbHNlCi0rICAgICMgRklYTUU6IHNob3VsZCB3ZSBkcm9wIHRoZSBuYW1lIGlu c3RlYWQ/Ci0rICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJTYW1wbGUgcmF0ZSBtaXNzaW5nLCBza2lw cGVkIgotKyAgZmkKLSB9Ci0gCi0tU2V0X1NvdW5kQml0c1BlclNhbXBsZSAoKQotLXsKLS0JIyBT ZXQgU291bmQgYml0cyBwZXIgc2FtcGxlIHJhdGUKLS0JIyBVc2FnZTogU2V0X1NvdW5kQml0c1Bl clNhcGxlIFt2YWx1ZV0KLS0JIyB2YWx1ZXM6IDgsIDE2Ci0tCVBPTF9EZWJ1Z19NZXNzYWdlICJT ZXR0aW5nIHNvdW5kIERlZmF1bHRzQml0c1BlclNhbXBsZSB0byAkMSIKLS0JWyAteiAiJFdJTkVQ UkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0tCi0tCWlm IFsgLW4gIiQxIiBdOyB0aGVuCi0tCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdE aXJlY3RTb3VuZCcgJ0RlZmF1bHRCaXRzUGVyU2FtcGxlJyAiJDEiCi0tCWVsc2UKLS0JCSMgRklY TUU6IHNob3VsZCB3ZSBkcm9wIHRoZSBuYW1lIGluc3RlYWQ/Ci0tCQlQT0xfRGVidWdfV2Fybmlu ZyAiQml0c1BlclNhbXBsZSBtaXNzaW5nLCBza2lwcGVkIgotLQlmaQotK1NldF9Tb3VuZEJpdHNQ ZXJTYW1wbGUoKSB7Ci0rICAjIFNldCBTb3VuZCBiaXRzIHBlciBzYW1wbGUgcmF0ZQotKyAgIyBV c2FnZTogU2V0X1NvdW5kQml0c1BlclNhcGxlIFt2YWx1ZV0KLSsgICMgdmFsdWVzOiA4LCAxNgot KyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgc291bmQgRGVmYXVsdHNCaXRzUGVyU2FtcGxl IHRvICQxIgotKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5F UFJFRklYIG5vdCBzZXQiCi0rCi0rICBpZiBbIC1uICIkMSIgXTsgdGhlbgotKyAgICBQT0xfV2lu ZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RTb3VuZCcgJ0RlZmF1bHRCaXRzUGVyU2Ft cGxlJyAiJDEiCi0rICBlbHNlCi0rICAgICMgRklYTUU6IHNob3VsZCB3ZSBkcm9wIHRoZSBuYW1l IGluc3RlYWQ/Ci0rICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJCaXRzUGVyU2FtcGxlIG1pc3Npbmcs IHNraXBwZWQiCi0rICBmaQotIH0KLSAKLS1QT0xfV2luZV9JbnN0YWxsRm9udHMoKQotLXsKLS0J IyBJbnN0YWxsIG1pY3Jvc29mdCBmb250cwotLQkjIFVzYWdlOiBQT0xfV2luZV9JbnN0YWxsRm9u dHMKLS0JcHVzaGQgLgotLQlQT0xfQ2FsbCBQT0xfSW5zdGFsbF9jb3JlZm9udHMKLS0gICAgICAg IHBvcGQKLStQT0xfV2luZV9JbnN0YWxsRm9udHMoKSB7Ci0rICAjIEluc3RhbGwgbWljcm9zb2Z0 IGZvbnRzCi0rICAjIFVzYWdlOiBQT0xfV2luZV9JbnN0YWxsRm9udHMKLSsgIHB1c2hkIC4KLSsg IFBPTF9DYWxsIFBPTF9JbnN0YWxsX2NvcmVmb250cwotKyAgcG9wZAotIH0KLSAKLS1TZXRfU291 bmRIYXJkd2FyZUFjY2VsZXJhdGlvbiAoKQotLXsKLS0JIyBTZXQgc291bmQgZHJpdmVyIGhhcmR3 YXJlIGFjY2VsZXJhdGlvbgotLQkjIFZhbHVlcyA6IEZ1bGwsIFN0YW5kYXJkLCBCYXNpYywgRW11 bGF0aW9uCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFNvdW5kIEhhcmR3YXJlQWNjZWxl cmF0aW9uIHRvICQxIgotLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwg IldJTkVQUkVGSVggbm90IHNldCIKLS0KLS0JaWYgWyAtbiAiJDEiIF07IHRoZW4KLS0JCVBPTF9X aW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNvdW5kJyAnSGFyZHdhcmVBY2NlbGVy YXRpb24nICIkMSIKLS0JZWxzZQotLQkJIyBGSVhNRTogc2hvdWxkIHdlIGRyb3AgdGhlIG5hbWUg aW5zdGVhZD8KLS0JCVBPTF9EZWJ1Z19XYXJuaW5nICJIYXJkd2FyZSBhY2NlbGVyYXRpb24gbW9k ZSBtaXNzaW5nLCBza2lwcGVkIgotLQlmaQotK1NldF9Tb3VuZEhhcmR3YXJlQWNjZWxlcmF0aW9u KCkgewotKyAgIyBTZXQgc291bmQgZHJpdmVyIGhhcmR3YXJlIGFjY2VsZXJhdGlvbgotKyAgIyBW YWx1ZXMgOiBGdWxsLCBTdGFuZGFyZCwgQmFzaWMsIEVtdWxhdGlvbgotKyAgUE9MX0RlYnVnX01l c3NhZ2UgIlNldHRpbmcgU291bmQgSGFyZHdhcmVBY2NlbGVyYXRpb24gdG8gJDEiCi0rICBbIC16 ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIK LSsKLSsgIGlmIFsgLW4gIiQxIiBdOyB0aGVuCi0rICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5 V2luZVBhaXIgJ0RpcmVjdFNvdW5kJyAnSGFyZHdhcmVBY2NlbGVyYXRpb24nICIkMSIKLSsgIGVs c2UKLSsgICAgIyBGSVhNRTogc2hvdWxkIHdlIGRyb3AgdGhlIG5hbWUgaW5zdGVhZD8KLSsgICAg UE9MX0RlYnVnX1dhcm5pbmcgIkhhcmR3YXJlIGFjY2VsZXJhdGlvbiBtb2RlIG1pc3NpbmcsIHNr aXBwZWQiCi0rICBmaQotIH0KLSAKLS1TZXRfU291bmRFbXVsRHJpdmVyICgpCi0tewotLQkjIFNl dCBzb3VuZCBlbXVsIGRyaXZlcgotLQkjIFVzYWdlOiBTZXRfU291bmRFbXVsRHJpdmVyKFl8TikK LS0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgU291bmQgRW11bERyaXZlciB0byAkMSIKLS0J WyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBz ZXQiCi0tCi0tCWlmIFsgLW4gIiQxIiBdOyB0aGVuCi0tCQlQT0xfV2luZV9VcGRhdGVSZWdpc3Ry eVdpbmVQYWlyICdEaXJlY3RTb3VuZCcgJ0VtdWxEcml2ZXInICIkMSIKLS0JZWxzZQotLQkJIyBG SVhNRTogc2hvdWxkIHdlIGRyb3AgdGhlIG5hbWUgaW5zdGVhZD8KLS0JCVBPTF9EZWJ1Z19XYXJu aW5nICJTb3VuZCBlbXVsYXRpb24gbW9kZSBtaXNzaW5nLCBza2lwcGVkIgotLQlmaQotK1NldF9T b3VuZEVtdWxEcml2ZXIoKSB7Ci0rICAjIFNldCBzb3VuZCBlbXVsIGRyaXZlcgotKyAgIyBVc2Fn ZTogU2V0X1NvdW5kRW11bERyaXZlcihZfE4pCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGlu ZyBTb3VuZCBFbXVsRHJpdmVyIHRvICQxIgotKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9M X0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0rCi0rICBpZiBbIC1uICIkMSIgXTsg dGhlbgotKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RTb3VuZCcg J0VtdWxEcml2ZXInICIkMSIKLSsgIGVsc2UKLSsgICAgIyBGSVhNRTogc2hvdWxkIHdlIGRyb3Ag dGhlIG5hbWUgaW5zdGVhZD8KLSsgICAgUE9MX0RlYnVnX1dhcm5pbmcgIlNvdW5kIGVtdWxhdGlv biBtb2RlIG1pc3NpbmcsIHNraXBwZWQiCi0rICBmaQotIH0KLSAKLS1QT0xfTG9hZFZhcl9QUk9H UkFNRklMRVMoKQotLXsKLS0JIyBHZXQgUHJvZ3JhbSBGaWxlcyBmb2xkZXIgbmFtZSBhbmQgc3Rv cmUgaXQgdG8gUFJPR1JBTUZJTEVTIHZhcmlhYmxlCi0tCSMgVXNhZ2U6IFBPTF9Mb2FkVmFyX1BS T0dSQU1GSUxFUwotLQlQT0xfRGVidWdfTWVzc2FnZSAiR2V0dGluZyBQcm9ncmFtIEZpbGVzIG5h bWUiCi0tCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJ WCBub3Qgc2V0IgotLQotLQlQUk9HUkFNRklMRVM9YFBPTF9XaW5lIGNtZCAvYyBlY2hvICIlUHJv Z3JhbUZpbGVzJSIgfHRyIC1kICdcMDE1XDAxMidgCi0tCWlmIFsgIiR7UFJPR1JBTUZJTEVTfSIg PSAiJVByb2dyYW1GaWxlcyUiIF0KLS0JdGhlbiAjIFZhciBpcyBub3QgZGVmaW5lZCBieSB3aW5l Ci0tCQlleHBvcnQgUFJPR1JBTUZJTEVTPSJQcm9ncmFtIEZpbGVzIgotLQllbHNlCi0tCQlleHBv cnQgUFJPR1JBTUZJTEVTPSIke1BST0dSQU1GSUxFUzozfSIKLS0JZmkKLStQT0xfTG9hZFZhcl9Q Uk9HUkFNRklMRVMoKSB7Ci0rICAjIEdldCBQcm9ncmFtIEZpbGVzIGZvbGRlciBuYW1lIGFuZCBz dG9yZSBpdCB0byBQUk9HUkFNRklMRVMgdmFyaWFibGUKLSsgICMgVXNhZ2U6IFBPTF9Mb2FkVmFy X1BST0dSQU1GSUxFUwotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkdldHRpbmcgUHJvZ3JhbSBGaWxl cyBuYW1lIgotKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5F UFJFRklYIG5vdCBzZXQiCi0rCi0rICBQUk9HUkFNRklMRVM9JChQT0xfV2luZSBjbWQgL2MgZWNo byAiJVByb2dyYW1GaWxlcyUiIHwgdHIgLWQgJ1wwMTVcMDEyJykKLSsgIGlmIFsgIiR7UFJPR1JB TUZJTEVTfSIgPSAiJVByb2dyYW1GaWxlcyUiIF07IHRoZW4gIyBWYXIgaXMgbm90IGRlZmluZWQg Ynkgd2luZQotKyAgICBleHBvcnQgUFJPR1JBTUZJTEVTPSJQcm9ncmFtIEZpbGVzIgotKyAgZWxz ZQotKyAgICBleHBvcnQgUFJPR1JBTUZJTEVTPSIke1BST0dSQU1GSUxFUzozfSIKLSsgIGZpCi0g fQotIAotLVNldF9XaW5lV2luZG93VGl0bGUgKCkKLS17Ci0tCSNuYW1lIG9mIHdpbmRvd2VkIHRp dGxlOiQxCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmRvdyB0aXRsZSIKLS0JWyAt eiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQi Ci0rU2V0X1dpbmVXaW5kb3dUaXRsZSgpIHsKLSsgICNuYW1lIG9mIHdpbmRvd2VkIHRpdGxlOiQx Ci0rICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5kb3cgdGl0bGUiCi0rICBbIC16ICIk V0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLSAK LS0JUE9MX0RlYnVnX1dhcm5pbmcgIlNldF9XaW5lV2luZG93VGl0bGUgaGFzIGJlZW4gZGVwcmVj YXRlZCAoIzUxMTgpIgotKyAgUE9MX0RlYnVnX1dhcm5pbmcgIlNldF9XaW5lV2luZG93VGl0bGUg aGFzIGJlZW4gZGVwcmVjYXRlZCAoIzUxMTgpIgotIH0KLSAKLS1QT0xfTG9hZFZhcl9EZXZpY2Ug KCkKLS17Ci0tCSMgR2V0IEdQVSBkZXZpY2UgaWQgYW5kIHZlbmRvciBpZAotLQkjIFVzYWdlOiBQ T0xfTG9hZFZhcl9EZXZpY2UgWy0tbm9uLWludGVyYWN0aXZlXQotLQkjIFJlc3VsdHMgYXJlIHN0 b3JlZCBpbiBWZW5kb3JJRCBhbmQgRGV2aWNlSUQgdmFyaWFibGVzCi0tCi0tCWxvY2FsIElOVEVS QUNUSVZFPTEKLS0JaWYgWyAiJDEiID0gIi0tbm9uLWludGVyYWN0aXZlIiBdOyB0aGVuCi0tCQlJ TlRFUkFDVElWRT0nJwotLQkJc2hpZnQKLS0JZmkKLS0KLS0JWyAiJElOVEVSQUNUSVZFIiBdICYm IFBPTF9TZXR1cFdpbmRvd193YWl0ICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUg JEFQUExJQ0FUSU9OX1RJVExFIGlzIHNjYW5uaW5nIHlvdXIgaGFyZHdhcmUnKSIgIiRUSVRMRSIK LS0JVkdBX0RFVklDRVM9IiQoUE9MX0RldGVjdFZpZGVvQ2FyZHMpIgotLQkjIE1vcmUgdGhhbiBv bmUgY2FyZCBhdmFpbGFibGU/Ci0tCWlmIGdyZXAgLXEgJ34nIDw8PCIkVkdBX0RFVklDRVMiOyB0 aGVuCi0tCQlpZiBbICIkSU5URVJBQ1RJVkUiIF07IHRoZW4KLS0JCQlsb2NhbCBPTERfQVBQX0FO U1dFUj0iJEFQUF9BTlNXRVIiCi0tCQkJUE9MX1NldHVwV2luZG93X21lbnUgIiQoZXZhbF9nZXR0 ZXh0ICdTZWxlY3QgdGhlIG1haW4gdmlkZW9jYXJkIHRvIHJlcG9ydDonKSIgIiRUSVRMRSIgIiRW R0FfREVWSUNFUyIgIn4iCi0tCQkJVkdBX0RFVklDRVM9IiRBUFBfQU5TV0VSIgotLQkJCUFQUF9B TlNXRVI9IiRPTERfQVBQX0FOU1dFUiIKLS0JCWVsc2UKLS0JCQkjIENhbid0IGFzayB1c2VyLCBw aWNrIGZpcnN0Ci0tCQkJVkdBX0RFVklDRVM9IiR7VkdBX0RFVklDRVMlJX4qfSIKLS0JCWZpCi0t CWZpCi0tCWV4cG9ydCBWZW5kb3JJRD1gY3V0IC1kJ3wnIC1mMiA8PDwiJFZHQV9ERVZJQ0VTImAK LS0JZXhwb3J0IERldmljZUlEPWBjdXQgLWQnfCcgLWYzIDw8PCIkVkdBX0RFVklDRVMiYAotLQlQ T0xfRGVidWdfTWVzc2FnZSAiVmVuZG9ySUQgOiAkVmVuZG9ySUQiCi0tCVBPTF9EZWJ1Z19NZXNz YWdlICJEZXZpY2VJRCA6ICREZXZpY2VJRCIKLStQT0xfTG9hZFZhcl9EZXZpY2UoKSB7Ci0rICAj IEdldCBHUFUgZGV2aWNlIGlkIGFuZCB2ZW5kb3IgaWQKLSsgICMgVXNhZ2U6IFBPTF9Mb2FkVmFy X0RldmljZSBbLS1ub24taW50ZXJhY3RpdmVdCi0rICAjIFJlc3VsdHMgYXJlIHN0b3JlZCBpbiBW ZW5kb3JJRCBhbmQgRGV2aWNlSUQgdmFyaWFibGVzCi0rCi0rICBsb2NhbCBJTlRFUkFDVElWRT0x Ci0rICBpZiBbICIkMSIgPSAiLS1ub24taW50ZXJhY3RpdmUiIF07IHRoZW4KLSsgICAgSU5URVJB Q1RJVkU9JycKLSsgICAgc2hpZnQKLSsgIGZpCi0rCi0rICBbICIkSU5URVJBQ1RJVkUiIF0gJiYg UE9MX1NldHVwV2luZG93X3dhaXQgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSAk QVBQTElDQVRJT05fVElUTEUgaXMgc2Nhbm5pbmcgeW91ciBoYXJkd2FyZScpIiAiJFRJVExFIgot KyAgVkdBX0RFVklDRVM9IiQoUE9MX0RldGVjdFZpZGVvQ2FyZHMpIgotKyAgIyBNb3JlIHRoYW4g b25lIGNhcmQgYXZhaWxhYmxlPwotKyAgaWYgZ3JlcCAtcSAnficgPDw8IiRWR0FfREVWSUNFUyI7 IHRoZW4KLSsgICAgaWYgWyAiJElOVEVSQUNUSVZFIiBdOyB0aGVuCi0rICAgICAgbG9jYWwgT0xE X0FQUF9BTlNXRVI9IiRBUFBfQU5TV0VSIgotKyAgICAgIFBPTF9TZXR1cFdpbmRvd19tZW51ICIk KGV2YWxfZ2V0dGV4dCAnU2VsZWN0IHRoZSBtYWluIHZpZGVvY2FyZCB0byByZXBvcnQ6JykiICIk VElUTEUiICIkVkdBX0RFVklDRVMiICJ+IgotKyAgICAgIFZHQV9ERVZJQ0VTPSIkQVBQX0FOU1dF UiIKLSsgICAgICBBUFBfQU5TV0VSPSIkT0xEX0FQUF9BTlNXRVIiCi0rICAgIGVsc2UKLSsgICAg ICAjIENhbid0IGFzayB1c2VyLCBwaWNrIGZpcnN0Ci0rICAgICAgVkdBX0RFVklDRVM9IiR7VkdB X0RFVklDRVMlJX4qfSIKLSsgICAgZmkKLSsgIGZpCi0rICBleHBvcnQgVmVuZG9ySUQ9JChjdXQg LWQnfCcgLWYyIDw8PCIkVkdBX0RFVklDRVMiKQotKyAgZXhwb3J0IERldmljZUlEPSQoY3V0IC1k J3wnIC1mMyA8PDwiJFZHQV9ERVZJQ0VTIikKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJWZW5kb3JJ RCA6ICRWZW5kb3JJRCIKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJEZXZpY2VJRCA6ICREZXZpY2VJ RCIKLSB9Ci0gCi0tUE9MX0RldGVjdFZpZGVvQ2FyZHMgKCkgewotLQkjIERldGVjdCBrbm93biB2 aWRlb2NhcmRzCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJHZXR0aW5ncyBHUFUgaW5mb3JtYXRpb25z IgotLSAgICAgICAgY2FzZSAiJFBPTF9PUyIgaW4KLS0gICAgICAgICAgICBMaW51eHxGcmVlQlNE KQotLQkJWyAteCAvdXNyL3NiaW4vbHNwY2kgXSAmJiBMU1BDST0vdXNyL3NiaW4vbHNwY2kgfHwg TFNQQ0k9bHNwY2kKLS0JCSMgRGV2aWNlIE5hbWV8VmVuZG9yIElEfERldmljZSBJRFxuLi4uCi0t ICAgICAgICAgICAgICAgICMgWzAzMDBdID0gVkdBIGNvbXBhdGlibGUgY29udHJvbGxlciwgWzAz MDJdID0gM0QgY29udHJvbGxlcgotLQkJVkdBX0RFVklDRVM9YCRMU1BDSSAtbm4gfCBwZXJsIC1u ZSAnaWYgKC9cWzAzMFswMl1cXS8pIHsgcy8uKlxdOiAoLiopIFxbKFswLTlhLWZdezR9KTooWzAt OWEtZl17NH0pXF0uKi9cMXxcMnxcMy87IHByaW50IH0nYAotLSAgICAgICAgICAgICAgICA7Owot LSAgICAgICAgICAgIE1hYykKLS0JCSMgRGV2aWNlIE5hbWV8VmVuZG9yIElEfERldmljZSBJRFxu Li4uCi0tCQlWR0FfREVWSUNFUz1gc3lzdGVtX3Byb2ZpbGVyIFNQRGlzcGxheXNEYXRhVHlwZSB8 IHBlcmwgLW5lICdzL15ccysvLzsgaWYoL0NoaXBzZXQgTW9kZWw6LykgeyBjaG9tcDsgcy9eW146 XSo6IC8vOyBwcmludCAiJF98IiB9IGVsc2lmKC9WZW5kb3I6LykgeyBjaG9tcDsgcy8uKlwoMHgo LiopXCkvXDEvOyBwcmludCAiJDF8IiB9IGVsc2lmICgvRGV2aWNlIElEOi8pIHsgcy9eW146XSo6 IDB4Ly87IHByaW50IH0nYAotLSAgICAgICAgICAgICAgICA7OwotLSAgICAgICAgICAgICopCi0t ICAgICAgICAgICAgICAgIFBPTF9EZWJ1Z19GYXRhbCAiVW5zdXBwb3NlZCBvcGVyYXRpbmcgc3lz dGVtOiAkUE9MX09TIgotLSAgICAgICAgZXNhYwotLQkjIE1vcmUgdGhhbiBvbmUgY2FyZCBhdmFp bGFibGU/Ci0tCWlmIFsgJCh3YyAtbCA8PDwiJFZHQV9ERVZJQ0VTIikgLWd0IDEgXTsgdGhlbgot LQkJIyBUcnkgdG8gcHV0IHdoYXQncyBwcm9iYWJseSB0aGUgbWFpbiBjYXJkIGZpcnN0Ci0tCQlW R0FfREVWSUNFUz1gZ3JlcCAtaUUgJ252aWRpYXxhdGl8YW1kJyA8PDwiJFZHQV9ERVZJQ0VTIjsg Z3JlcCAtaUV2ICdudmlkaWF8YXRpfGFtZCcgPDw8IiRWR0FfREVWSUNFUyJgCi0tCWZpCi0tCSMg RGV2aWNlIE5hbWV8VmVuZG9yIElEfERldmljZSBJRH4uLi4KLS0JZWNobyAtbiAiJFZHQV9ERVZJ Q0VTInx0ciAiXG4iICJ+IgotK1BPTF9EZXRlY3RWaWRlb0NhcmRzKCkgewotKyAgIyBEZXRlY3Qg a25vd24gdmlkZW9jYXJkcwotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkdldHRpbmdzIEdQVSBpbmZv cm1hdGlvbnMiCi0rICBjYXNlICIkUE9MX09TIiBpbgotKyAgTGludXggfCBGcmVlQlNEKQotKyAg ICBbIC14IC91c3Ivc2Jpbi9sc3BjaSBdICYmIExTUENJPS91c3Ivc2Jpbi9sc3BjaSB8fCBMU1BD ST1sc3BjaQotKyAgICAjIERldmljZSBOYW1lfFZlbmRvciBJRHxEZXZpY2UgSURcbi4uLgotKyAg ICAjIFswMzAwXSA9IFZHQSBjb21wYXRpYmxlIGNvbnRyb2xsZXIsIFswMzAyXSA9IDNEIGNvbnRy b2xsZXIKLSsgICAgVkdBX0RFVklDRVM9JCgkTFNQQ0kgLW5uIHwgcGVybCAtbmUgJ2lmICgvXFsw MzBbMDJdXF0vKSB7IHMvLipcXTogKC4qKSBcWyhbMC05YS1mXXs0fSk6KFswLTlhLWZdezR9KVxd LiovXDF8XDJ8XDMvOyBwcmludCB9JykKLSsgICAgOzsKLSsgIE1hYykKLSsgICAgIyBEZXZpY2Ug TmFtZXxWZW5kb3IgSUR8RGV2aWNlIElEXG4uLi4KLSsgICAgVkdBX0RFVklDRVM9JChzeXN0ZW1f cHJvZmlsZXIgU1BEaXNwbGF5c0RhdGFUeXBlIHwgcGVybCAtbmUgJ3MvXlxzKy8vOyBpZigvQ2hp cHNldCBNb2RlbDovKSB7IGNob21wOyBzL15bXjpdKjogLy87IHByaW50ICIkX3wiIH0gZWxzaWYo L1ZlbmRvcjovKSB7IGNob21wOyBzLy4qXCgweCguKilcKS9cMS87IHByaW50ICIkMXwiIH0gZWxz aWYgKC9EZXZpY2UgSUQ6LykgeyBzL15bXjpdKjogMHgvLzsgcHJpbnQgfScpCi0rICAgIDs7Ci0r ICAqKQotKyAgICBQT0xfRGVidWdfRmF0YWwgIlVuc3VwcG9zZWQgb3BlcmF0aW5nIHN5c3RlbTog JFBPTF9PUyIKLSsgICAgOzsKLSsgIGVzYWMKLSsgICMgTW9yZSB0aGFuIG9uZSBjYXJkIGF2YWls YWJsZT8KLSsgIGlmIFsgJCh3YyAtbCA8PDwiJFZHQV9ERVZJQ0VTIikgLWd0IDEgXTsgdGhlbgot KyAgICAjIFRyeSB0byBwdXQgd2hhdCdzIHByb2JhYmx5IHRoZSBtYWluIGNhcmQgZmlyc3QKLSsg ICAgVkdBX0RFVklDRVM9JCgKLSsgICAgICBncmVwIC1pRSAnbnZpZGlhfGF0aXxhbWQnIDw8PCIk VkdBX0RFVklDRVMiCi0rICAgICAgZ3JlcCAtaUV2ICdudmlkaWF8YXRpfGFtZCcgPDw8IiRWR0Ff REVWSUNFUyIKLSsgICAgKQotKyAgZmkKLSsgICMgRGV2aWNlIE5hbWV8VmVuZG9yIElEfERldmlj ZSBJRH4uLi4KLSsgIGVjaG8gLW4gIiRWR0FfREVWSUNFUyIgfCB0ciAiXG4iICJ+IgotIH0KLSAK LS1QT0xfTG9hZFZhcl9TY3JlZW5SZXNvbHV0aW9uICgpCi0tewotLQlpZiBbICIkUE9MX09TIiA9 ICJMaW51eCIgXSB8fCBbICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdOyB0aGVuCi0tCQlsb2NhbCBS RVNPTFVUSU9OPSIkKHhkcHlpbmZvIHwgZ3JlcCBkaW1lbnNpb25zIHwgYXdrICd7cHJpbnQgJDJ9 JykiCi0tCQlleHBvcnQgU2NyZWVuV2lkdGg9IiQoZWNobyAkUkVTT0xVVElPTiB8IGN1dCAtZHgg LWYxKSIKLS0JCWV4cG9ydCBTY3JlZW5IZWlnaHQ9IiQoZWNobyAkUkVTT0xVVElPTiB8IGN1dCAt ZHggLWYyKSIKLS0JZmkKLS0JaWYgWyAiJFBPTF9PUyIgPSAiTWFjIiBdOyB0aGVuCi0tCQlleHBv cnQgU2NyZWVuV2lkdGg9IiQoL3Vzci9zYmluL3N5c3RlbV9wcm9maWxlciBTUERpc3BsYXlzRGF0 YVR5cGUgfCBncmVwIFJlc29sdXRpb258IGF3ayAne3ByaW50ICQyfScpIgotLQkJZXhwb3J0IFNj cmVlbkhlaWdodD0iJCgvdXNyL3NiaW4vc3lzdGVtX3Byb2ZpbGVyIFNQRGlzcGxheXNEYXRhVHlw ZSB8IGdyZXAgUmVzb2x1dGlvbnwgYXdrICd7cHJpbnQgJDR9JykiCi0tCWZpCi0tCVBPTF9EZWJ1 Z19NZXNzYWdlICJTY3JlZW4gd2lkdGg6ICRTY3JlZW5XaWR0aCIKLS0JUE9MX0RlYnVnX01lc3Nh Z2UgIlNjcmVlbiBoZWlnaHQ6ICRTY3JlZW5IZWlnaHQiCi0rUE9MX0xvYWRWYXJfU2NyZWVuUmVz b2x1dGlvbigpIHsKLSsgIGlmIFsgIiRQT0xfT1MiID0gIkxpbnV4IiBdIHx8IFsgIiRQT0xfT1Mi ID0gIkZyZWVCU0QiIF07IHRoZW4KLSsgICAgbG9jYWwgUkVTT0xVVElPTj0iJCh4ZHB5aW5mbyB8 IGdyZXAgZGltZW5zaW9ucyB8IGF3ayAne3ByaW50ICQyfScpIgotKyAgICBleHBvcnQgU2NyZWVu V2lkdGg9IiQoZWNobyAkUkVTT0xVVElPTiB8IGN1dCAtZHggLWYxKSIKLSsgICAgZXhwb3J0IFNj cmVlbkhlaWdodD0iJChlY2hvICRSRVNPTFVUSU9OIHwgY3V0IC1keCAtZjIpIgotKyAgZmkKLSsg IGlmIFsgIiRQT0xfT1MiID0gIk1hYyIgXTsgdGhlbgotKyAgICBleHBvcnQgU2NyZWVuV2lkdGg9 IiQoL3Vzci9zYmluL3N5c3RlbV9wcm9maWxlciBTUERpc3BsYXlzRGF0YVR5cGUgfCBncmVwIFJl c29sdXRpb24gfCBhd2sgJ3twcmludCAkMn0nKSIKLSsgICAgZXhwb3J0IFNjcmVlbkhlaWdodD0i JCgvdXNyL3NiaW4vc3lzdGVtX3Byb2ZpbGVyIFNQRGlzcGxheXNEYXRhVHlwZSB8IGdyZXAgUmVz b2x1dGlvbiB8IGF3ayAne3ByaW50ICQ0fScpIgotKyAgZmkKLSsgIFBPTF9EZWJ1Z19NZXNzYWdl ICJTY3JlZW4gd2lkdGg6ICRTY3JlZW5XaWR0aCIKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJTY3Jl ZW4gaGVpZ2h0OiAkU2NyZWVuSGVpZ2h0IgotIH0KLSAKLS1QT0xfV2luZV9TZXRWaWRlb0RyaXZl cigpCi0tewotLQkjIFNldCB3aW5lIHZpZGVvIGRyaXZlcgotLQkjIFVzYWdlIFBPTF9XaW5lX1Nl dFZpZGVvRHJpdmVyCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXQgd2luZSB2aWRlbyBkcml2ZXIi Ci0tCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBu b3Qgc2V0IgotLQlQT0xfTG9hZFZhcl9EZXZpY2UKLS0JRFJWSUQ9InZnYS5kbGwiCi0tCVsgIiRW ZW5kb3JJRCIgPSAiMTBkZSIgXSAmJiBEUlZJRD0ibnY0X2Rpc3AuZGxsIgotLQlbICIkVmVuZG9y SUQiID0gIjEwMDIiIF0gJiYgRFJWSUQ9ImF0aTJkdmFnLmRsbCIKLS0JWyAiJFZlbmRvcklEIiA9 ICI4MDg2IiBdICYmIERSVklEPSJpZzRpY2QzMi5kbGwiCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJE ZXRlY3RlZCB2aWRlbyBkcml2ZXI6ICREUlZJRCIKLS0KLS0JUE9MX1dpbmVfVXBkYXRlUmVnaXN0 cnkgVkdBX0lEX2ZpeCA8PC0gX0VPRklOSV8KLStQT0xfV2luZV9TZXRWaWRlb0RyaXZlcigpIHsK LSsgICMgU2V0IHdpbmUgdmlkZW8gZHJpdmVyCi0rICAjIFVzYWdlIFBPTF9XaW5lX1NldFZpZGVv RHJpdmVyCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0IHdpbmUgdmlkZW8gZHJpdmVyIgotKyAg WyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBz ZXQiCi0rICBQT0xfTG9hZFZhcl9EZXZpY2UKLSsgIERSVklEPSJ2Z2EuZGxsIgotKyAgWyAiJFZl bmRvcklEIiA9ICIxMGRlIiBdICYmIERSVklEPSJudjRfZGlzcC5kbGwiCi0rICBbICIkVmVuZG9y SUQiID0gIjEwMDIiIF0gJiYgRFJWSUQ9ImF0aTJkdmFnLmRsbCIKLSsgIFsgIiRWZW5kb3JJRCIg PSAiODA4NiIgXSAmJiBEUlZJRD0iaWc0aWNkMzIuZGxsIgotKyAgUE9MX0RlYnVnX01lc3NhZ2Ug IkRldGVjdGVkIHZpZGVvIGRyaXZlcjogJERSVklEIgotKwotKyAgUE9MX1dpbmVfVXBkYXRlUmVn aXN0cnkgVkdBX0lEX2ZpeCA8PC1fRU9GSU5JXwotIAlbSEtFWV9DVVJSRU5UX1VTRVJcXFNvZnR3 YXJlXFxXaW5lXFxEaXJlY3QzRF0KLSAJIlZpZGVvUENJVmVuZG9ySUQiPWR3b3JkOjAwMDAkVmVu ZG9ySUQKLSAJIlZpZGVvUENJRGV2aWNlSUQiPWR3b3JkOjAwMDAkRGV2aWNlSUQKLUBAIC00Njcs ODAwICs0NTEsNzc3IEBAIFBPTF9XaW5lX1NldFZpZGVvRHJpdmVyKCkKLSAJX0VPRklOSV8KLSB9 Ci0gCi0tUE9MX1dpbmVfRGV0ZWN0Q2FyZCgpCi0tewotLQkjIFNldCB3aW5lIHZpZGVvIGRyaXZl cgotLQkjIFVzYWdlIFBPTF9XaW5lX0RldGVjdENhcmQKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIkRl dGVjdGluZyB2aWRlbyBjYXJkIgotLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdf RmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLS0JUE9MX0xvYWRWYXJfRGV2aWNlCi0tCURSVklE PSJPVEhFUiIKLS0JWyAiJFZlbmRvcklEIiA9ICIxMGRlIiBdICYmIERSVklEPSJOVklESUEiCi0t CVsgIiRWZW5kb3JJRCIgPSAiMTAwMiIgXSAmJiBEUlZJRD0iQVRJIgotLQlbICIkVmVuZG9ySUQi ID0gIjgwODYiIF0gJiYgRFJWSUQ9IklOVEVMIgotLQlQT0xfRGVidWdfTWVzc2FnZSAiRGV0ZWN0 ZWQgdmlkZW8gY2FyZDogJERSVklEIgotLQotLQllY2hvICREUlZJRAotK1BPTF9XaW5lX0RldGVj dENhcmQoKSB7Ci0rICAjIFNldCB3aW5lIHZpZGVvIGRyaXZlcgotKyAgIyBVc2FnZSBQT0xfV2lu ZV9EZXRlY3RDYXJkCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiRGV0ZWN0aW5nIHZpZGVvIGNhcmQi Ci0rICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVgg bm90IHNldCIKLSsgIFBPTF9Mb2FkVmFyX0RldmljZQotKyAgRFJWSUQ9Ik9USEVSIgotKyAgWyAi JFZlbmRvcklEIiA9ICIxMGRlIiBdICYmIERSVklEPSJOVklESUEiCi0rICBbICIkVmVuZG9ySUQi ID0gIjEwMDIiIF0gJiYgRFJWSUQ9IkFUSSIKLSsgIFsgIiRWZW5kb3JJRCIgPSAiODA4NiIgXSAm JiBEUlZJRD0iSU5URUwiCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiRGV0ZWN0ZWQgdmlkZW8gY2Fy ZDogJERSVklEIgotKwotKyAgZWNobyAkRFJWSUQKLSB9Ci0gCi0tCi0tCi0tUE9MX0F1dG9XaW5l ICgpCi0tewotLQkjIERldGVjdCBpZiB0aGUgZmlsZSBpcyBhIC5leGUgb3IgYSAubXNpIGZpbGUg YW5kIHJ1biBpdCB3aXRoIFBPTF9XaW5lCi0tCSMgU2FtZSB1c2FnZSB0aGFuICJ3aW5lIgotLQlT RVRVUF9QQVRIPSIkQCIKLS0JIyByZW1vdmUgZXZlcnl0aGluZyB1cCB0byB0aGUgbGFzdCBkb3QK LS0JZXh0ZW5zaW9uPSIke1NFVFVQX1BBVEgjIyoufSIKLS0JaWYgWyAiJGV4dGVuc2lvbiIgPSAi bXNpIiBdCi0tCXRoZW4KLS0JCVBPTF9XaW5lIG1zaWV4ZWMgL2kgIiRTRVRVUF9QQVRIIgotLQll bHNlCi0tCQkjIEZJWE1FIC91bml4PwotLQkJUE9MX1dpbmUgIiRTRVRVUF9QQVRIIgotLQlmaQot K1BPTF9BdXRvV2luZSgpIHsKLSsgICMgRGV0ZWN0IGlmIHRoZSBmaWxlIGlzIGEgLmV4ZSBvciBh IC5tc2kgZmlsZSBhbmQgcnVuIGl0IHdpdGggUE9MX1dpbmUKLSsgICMgU2FtZSB1c2FnZSB0aGFu ICJ3aW5lIgotKyAgU0VUVVBfUEFUSD0iJEAiCi0rICAjIHJlbW92ZSBldmVyeXRoaW5nIHVwIHRv IHRoZSBsYXN0IGRvdAotKyAgZXh0ZW5zaW9uPSIke1NFVFVQX1BBVEgjIyoufSIKLSsgIGlmIFsg IiRleHRlbnNpb24iID0gIm1zaSIgXTsgdGhlbgotKyAgICBQT0xfV2luZSBtc2lleGVjIC9pICIk U0VUVVBfUEFUSCIKLSsgIGVsc2UKLSsgICAgIyBGSVhNRSAvdW5peD8KLSsgICAgUE9MX1dpbmUg IiRTRVRVUF9QQVRIIgotKyAgZmkKLSB9Ci0gCi0tUE9MX1dpbmUgKCkKLS17Ci0tCSMgUnVuIHRo ZSBnb29kIHdpbmV2ZXJzaW9uIGFuZCBzdG9yZSB0aGUgcmVzdWx0IHRvIGEgbG9nZmlsZQotLQkj IFNhbWUgdXNhZ2UgdGhhbiAid2luZSIKLS0JbWtkaXIgLXAgIiRXSU5FUFJFRklYIgotLQl0b3Vj aCAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIgotLQlsb2NhbCBOb0Vycm9ycwotLQlpZiBb ICIkMSIgPSAiLS1pZ25vcmUtZXJyb3JzIiBdOyB0aGVuCi0tCQlOb0Vycm9ycz0iVHJ1ZSIKLS0J CXNoaWZ0Ci0tCWZpCi0tCi0tCWlmIFsgISAiJChQT0xfQ29uZmlnX1JlYWQgTk9fRlNDSEVDSyki ID0gIlRSVUUiIF07IHRoZW4KLS0JCWlmIFsgIiQxIiA9ICJzdGFydCIgXTsgdGhlbgotLQkJCWlm IFsgIiQyIiA9ICIvdW5peCIgXTsgdGhlbgotLQkJCQlQT0xfU3lzdGVtX0NoZWNrRlMgIiQzIgot LQkJCWVsc2UKLS0JCQkJUE9MX1N5c3RlbV9DaGVja0ZTICIkMiIKLS0JCQlmaQotLQkJZWxzZQot LQkJCVBPTF9TeXN0ZW1fQ2hlY2tGUyAiJDEiCi0tCQlmaQotLQllbHNlCi0tCQlQT0xfRGVidWdf TWVzc2FnZSAiKiogRmlsZXN5c3RlbSBjaGVja3MgZGlzYWJsZWQgKioiCi0tCWZpCi0tCi0tCVBP TF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52Ci0tCVBPTF9EZWJ1Z19NZXNzYWdlICJSdW5uaW5nIHdp bmUtJFBPTF9XSU5FVkVSU0lPTiAiJEAiIChXb3JraW5nIGRpcmVjdG9yeSA6ICRQV0QpIgotLQlQ T0xfRGVidWdfTG9nVG9QcmVmaXggIlJ1bm5pbmcgd2luZS0kUE9MX1dJTkVWRVJTSU9OICIkQCIg KFdvcmtpbmcgZGlyZWN0b3J5IDogJFBXRCkiCi0tCi0tICAgICAgICAjIEVpdGhlciB0aGF0IG9y IG1vbml0b3IgImVycjpwcm9jZXNzOmNyZWF0ZV9wcm9jZXNzIHN0YXJ0aW5nIDY0LWJpdCBwcm9j ZXNzIEwieHh4IiBub3Qgc3VwcG9ydGVkIGluIDMyLWJpdCB3aW5lcHJlZml4XG53aW5lOiBCYWQg RVhFIGZvcm1hdCBmb3IgeHh4LiIgaW4gbG9ncwotLSAgICAgICAgaWYgWyAiJFBPTF9BUkNIIiA9 ICJ4ODYiIC1hIC1lICIkMSIgXTsgdGhlbgotLSAgICAgICAgICAgIGxvY2FsIEVYRUZJTEU9IiQx IgotLSAgICAgICAgICAgIGlmIFBPTF9TeXN0ZW1faXM2NGJpdCAiJEVYRUZJTEUiOyB0aGVuCi0t ICAgICAgICAgICAgICAgIE5PQlVHUkVQT1JUPSJUUlVFIiAjIHVzZXIgbWlzdGFrZQotLSAgICAg ICAgICAgICAgICBQT0xfRGVidWdfRmF0YWwgIiQoZXZhbF9nZXR0ZXh0ICdTdGFydGluZyA2NC1i aXQgcHJvY2VzcyAkRVhFRklMRSBpcyBub3Qgc3VwcG9ydGVkIGluIDMyLWJpdCB2aXJ0dWFsIGRy aXZlcycpIgotLSAgICAgICAgICAgIGZpCi0tICAgICAgICBmaQotLQotLSAgICAgICAgaWYgWyAh ICIkV0lORU1FTlVCVUlMREVSX0FMRVJUIiBdOyB0aGVuCi0tCQlQT0xfRGVidWdfTWVzc2FnZSAi Tm90aWNlOiBQbGF5T25MaW51eCBkZWxpYmVyYXRlbHkgZGlzYWJsZXMgd2luZW1lbnVidWlsZGVy LiBTZWUgaHR0cDovL3d3dy5wbGF5b25saW51eC5jb20vZnIvcGFnZS0yNi1XaW5lbWVudWJ1aWxk ZXIuaHRtbCIKLS0JCVdJTkVNRU5VQlVJTERFUl9BTEVSVD0iRG9uZSIKLS0JZmkKLS0JaWYgWyAi JDEiID0gInJlZ2VkaXQiIC1hICEgIiQyIiA9ICIiIF07IHRoZW4KLS0JCWlmIFsgLWUgIiQyIiBd OyB0aGVuCi0tCQkJUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJDb250ZW50IG9mICQyIgotLQkJCShl Y2hvICctLS0tLS0tLS0tLScKLS0JCQkgY2F0ICIkMiIKLS0JCQkgZWNobyAnLS0tLS0tLS0tLS0n KSA+PiAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIgotLQkJZWxzZQotLQkJCVBPTF9EZWJ1 Z19Mb2dUb1ByZWZpeCAicmVnZWRpdCBwYXJhbWV0ZXIgJyQyJyBpcyBub3QgYSBmaWxlLCBub3Qg ZHVtcGVkIHRvIGxvZyIKLS0JCWZpCi0tCWVsaWYgWyAiJDEiID0gInJlZ2VkaXQiIF07IHRoZW4K LS0JCVBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAiVXNlciBtb2RpZmllZCBzb21ldGhpbmcgaW4gdGhl IHJlZ2lzdHJ5IG1hbnVhbGx5IgotLQlmaQotLQotLQotLQlpZiBbICIkUE9MX09TIiA9ICJMaW51 eCIgXSB8fCBbICIkUE9MX09TIiA9ICJNYWMiIF07Ci0tCXRoZW4KLS0JCWlmIFsgIiRMT0dGSUxF IiA9ICIvZGV2L251bGwiIF07IHRoZW4KLS0JCQkkQkVGT1JFX1dJTkUgJChQT0xfQ29uZmlnX1Jl YWQgQkVGT1JFX1dJTkUpIHdpbmUgIiRAIiAgMj4gPihncmVwIC12IG1lbnVidWlsZGVyIC0tbGlu ZS1idWZmZXJlZCB8IHRlZSAtYSAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIiA+JjIpID4g Pih0ZWUgLWEgIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIpCi0tCQkJZXJyb3JzPSQ/Ci0t CQllbHNlCi0tCQkJJEJFRk9SRV9XSU5FICQoUE9MX0NvbmZpZ19SZWFkIEJFRk9SRV9XSU5FKSB3 aW5lICIkQCIgMj4gPihncmVwIC12IG1lbnVidWlsZGVyIC0tbGluZS1idWZmZXJlZCB8IHRlZSAt YSAiJExPR0ZJTEUiICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciID4mMikgPiA+KHRlZSAt YSAiJExPR0ZJTEUiICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciKQotLQkJCWVycm9ycz0k PwotLQkJZmkKLS0JZWxzZQotLQkJIyBGSVhNRQotLQkJJEJFRk9SRV9XSU5FICQoUE9MX0NvbmZp Z19SZWFkIEJFRk9SRV9XSU5FKSB3aW5lICIkQCIgIDI+ICIkV0lORVBSRUZJWC9wbGF5b25saW51 eC5sb2ciID4gIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIKLS0JCWVycm9ycz0kPwotLQlm aQotLQotLQlpZiBbICIkZXJyb3JzIiAhPSAwIC1hICIkTm9FcnJvcnMiICE9ICJUcnVlIiAtYSAi JFBPTF9JZ25vcmVXaW5lRXJyb3JzIiAhPSAiVHJ1ZSIgXTsgdGhlbgotLQkJUE9MX0RlYnVnX0Vy cm9yICIkKGV2YWxfZ2V0dGV4dCAnV2luZSBzZWVtcyB0byBoYXZlIGNyYXNoZWRcblxuSWYgeW91 ciBwcm9ncmFtIGlzIHJ1bm5pbmcsIGp1c3QgaWdub3JlIHRoaXMgbWVzc2FnZScpIgotLQlmaQot LQlQT0xfRGVidWdfTWVzc2FnZSAiV2luZSByZXR1cm46ICRlcnJvcnMiCi0tCXJldHVybiAkZXJy b3JzCi0rUE9MX1dpbmUoKSB7Ci0rICAjIFJ1biB0aGUgZ29vZCB3aW5ldmVyc2lvbiBhbmQgc3Rv cmUgdGhlIHJlc3VsdCB0byBhIGxvZ2ZpbGUKLSsgICMgU2FtZSB1c2FnZSB0aGFuICJ3aW5lIgot KyAgbWtkaXIgLXAgIiRXSU5FUFJFRklYIgotKyAgdG91Y2ggIiRXSU5FUFJFRklYL3BsYXlvbmxp bnV4LmxvZyIKLSsgIGxvY2FsIE5vRXJyb3JzCi0rICBpZiBbICIkMSIgPSAiLS1pZ25vcmUtZXJy b3JzIiBdOyB0aGVuCi0rICAgIE5vRXJyb3JzPSJUcnVlIgotKyAgICBzaGlmdAotKyAgZmkKLSsK LSsgIGlmIFsgISAiJChQT0xfQ29uZmlnX1JlYWQgTk9fRlNDSEVDSykiID0gIlRSVUUiIF07IHRo ZW4KLSsgICAgaWYgWyAiJDEiID0gInN0YXJ0IiBdOyB0aGVuCi0rICAgICAgaWYgWyAiJDIiID0g Ii91bml4IiBdOyB0aGVuCi0rICAgICAgICBQT0xfU3lzdGVtX0NoZWNrRlMgIiQzIgotKyAgICAg IGVsc2UKLSsgICAgICAgIFBPTF9TeXN0ZW1fQ2hlY2tGUyAiJDIiCi0rICAgICAgZmkKLSsgICAg ZWxzZQotKyAgICAgIFBPTF9TeXN0ZW1fQ2hlY2tGUyAiJDEiCi0rICAgIGZpCi0rICBlbHNlCi0r ICAgIFBPTF9EZWJ1Z19NZXNzYWdlICIqKiBGaWxlc3lzdGVtIGNoZWNrcyBkaXNhYmxlZCAqKiIK LSsgIGZpCi0rCi0rICBQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgotKyAgUE9MX0RlYnVnX01l c3NhZ2UgIlJ1bm5pbmcgd2luZS0kUE9MX1dJTkVWRVJTSU9OICIkQCIgKFdvcmtpbmcgZGlyZWN0 b3J5IDogJFBXRCkiCi0rICBQT0xfRGVidWdfTG9nVG9QcmVmaXggIlJ1bm5pbmcgd2luZS0kUE9M X1dJTkVWRVJTSU9OICIkQCIgKFdvcmtpbmcgZGlyZWN0b3J5IDogJFBXRCkiCi0rCi0rICAjIEVp dGhlciB0aGF0IG9yIG1vbml0b3IgImVycjpwcm9jZXNzOmNyZWF0ZV9wcm9jZXNzIHN0YXJ0aW5n IDY0LWJpdCBwcm9jZXNzIEwieHh4IiBub3Qgc3VwcG9ydGVkIGluIDMyLWJpdCB3aW5lcHJlZml4 XG53aW5lOiBCYWQgRVhFIGZvcm1hdCBmb3IgeHh4LiIgaW4gbG9ncwotKyAgaWYgWyAiJFBPTF9B UkNIIiA9ICJ4ODYiIC1hIC1lICIkMSIgXTsgdGhlbgotKyAgICBsb2NhbCBFWEVGSUxFPSIkMSIK LSsgICAgaWYgUE9MX1N5c3RlbV9pczY0Yml0ICIkRVhFRklMRSI7IHRoZW4KLSsgICAgICBOT0JV R1JFUE9SVD0iVFJVRSIgIyB1c2VyIG1pc3Rha2UKLSsgICAgICBQT0xfRGVidWdfRmF0YWwgIiQo ZXZhbF9nZXR0ZXh0ICdTdGFydGluZyA2NC1iaXQgcHJvY2VzcyAkRVhFRklMRSBpcyBub3Qgc3Vw cG9ydGVkIGluIDMyLWJpdCB2aXJ0dWFsIGRyaXZlcycpIgotKyAgICBmaQotKyAgZmkKLSsKLSsg IGlmIFsgISAiJFdJTkVNRU5VQlVJTERFUl9BTEVSVCIgXTsgdGhlbgotKyAgICBQT0xfRGVidWdf TWVzc2FnZSAiTm90aWNlOiBQbGF5T25MaW51eCBkZWxpYmVyYXRlbHkgZGlzYWJsZXMgd2luZW1l bnVidWlsZGVyLiBTZWUgaHR0cDovL3d3dy5wbGF5b25saW51eC5jb20vZnIvcGFnZS0yNi1XaW5l bWVudWJ1aWxkZXIuaHRtbCIKLSsgICAgV0lORU1FTlVCVUlMREVSX0FMRVJUPSJEb25lIgotKyAg ZmkKLSsgIGlmIFsgIiQxIiA9ICJyZWdlZGl0IiAtYSAhICIkMiIgPSAiIiBdOyB0aGVuCi0rICAg IGlmIFsgLWUgIiQyIiBdOyB0aGVuCi0rICAgICAgUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJDb250 ZW50IG9mICQyIgotKyAgICAgICgKLSsgICAgICAgIGVjaG8gJy0tLS0tLS0tLS0tJwotKyAgICAg ICAgY2F0ICIkMiIKLSsgICAgICAgIGVjaG8gJy0tLS0tLS0tLS0tJwotKyAgICAgICkgPj4iJFdJ TkVQUkVGSVgvcGxheW9ubGludXgubG9nIgotKyAgICBlbHNlCi0rICAgICAgUE9MX0RlYnVnX0xv Z1RvUHJlZml4ICJyZWdlZGl0IHBhcmFtZXRlciAnJDInIGlzIG5vdCBhIGZpbGUsIG5vdCBkdW1w ZWQgdG8gbG9nIgotKyAgICBmaQotKyAgZWxpZiBbICIkMSIgPSAicmVnZWRpdCIgXTsgdGhlbgot KyAgICBQT0xfRGVidWdfTG9nVG9QcmVmaXggIlVzZXIgbW9kaWZpZWQgc29tZXRoaW5nIGluIHRo ZSByZWdpc3RyeSBtYW51YWxseSIKLSsgIGZpCi0rCi0rICBbWyAkT1NYX1ZFUlNJT04gLWdlIDE5 IF1dICYmIFdJTkVDTUQ9IndpbmUzMm9uNjQiIHx8IFdJTkVDTUQ9IndpbmUiCi0rICBbWyAkT1NY X1ZFUlNJT04gLWdlIDE5IF1dICYmIFtbIC1lICIkMSIgXV0gJiYgeGF0dHIgLWQgY29tLmFwcGxl LnF1YXJhbnRpbmUgIiQxIgotKyAgaWYgWyAiJFBPTF9PUyIgPSAiTGludXgiIF0gfHwgWyAiJFBP TF9PUyIgPSAiTWFjIiBdOyB0aGVuCi0rICAgIGlmIFsgIiRMT0dGSUxFIiA9ICIvZGV2L251bGwi IF07IHRoZW4KLSsgICAgICAkQkVGT1JFX1dJTkUgJChQT0xfQ29uZmlnX1JlYWQgQkVGT1JFX1dJ TkUpICRXSU5FQ01EICIkQCIgMj4gPihncmVwIC12IG1lbnVidWlsZGVyIC0tbGluZS1idWZmZXJl ZCB8IHRlZSAtYSAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIiA+JjIpID4gPih0ZWUgLWEg IiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIpCi0rICAgICAgZXJyb3JzPSQ/Ci0rICAgIGVs c2UKLSsgICAgICAkQkVGT1JFX1dJTkUgJChQT0xfQ29uZmlnX1JlYWQgQkVGT1JFX1dJTkUpICRX SU5FQ01EICIkQCIgMj4gPihncmVwIC12IG1lbnVidWlsZGVyIC0tbGluZS1idWZmZXJlZCB8IHRl ZSAtYSAiJExPR0ZJTEUiICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciID4mMikgPiA+KHRl ZSAtYSAiJExPR0ZJTEUiICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciKQotKyAgICAgIGVy cm9ycz0kPwotKyAgICBmaQotKyAgZWxzZQotKyAgICAjIEZJWE1FCi0rICAgICRCRUZPUkVfV0lO RSAkKFBPTF9Db25maWdfUmVhZCBCRUZPUkVfV0lORSkgJFdJTkVDTUQgIiRAIiAyPiIkV0lORVBS RUZJWC9wbGF5b25saW51eC5sb2ciID4iJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIgotKyAg ICBlcnJvcnM9JD8KLSsgIGZpCi0rCi0rICBpZiBbICIkZXJyb3JzIiAhPSAwIC1hICIkTm9FcnJv cnMiICE9ICJUcnVlIiAtYSAiJFBPTF9JZ25vcmVXaW5lRXJyb3JzIiAhPSAiVHJ1ZSIgXTsgdGhl bgotKyAgICBQT0xfRGVidWdfRXJyb3IgIiQoZXZhbF9nZXR0ZXh0ICdXaW5lIHNlZW1zIHRvIGhh dmUgY3Jhc2hlZFxuXG5JZiB5b3VyIHByb2dyYW0gaXMgcnVubmluZywganVzdCBpZ25vcmUgdGhp cyBtZXNzYWdlJykiCi0rICBmaQotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIldpbmUgcmV0dXJuOiAk ZXJyb3JzIgotKyAgcmV0dXJuICRlcnJvcnMKLSB9Ci0gCi0tUE9MX1dpbmVfU2VsZWN0UHJlZml4 KCkKLS17Ci0tCSMgU2VsZWN0IGEgd2luZXByZWZpeCBhbmQgcmVtb3ZlIHVuZXhwZWN0ZWQgY2hh cnMKLS0JIyBVc2FnZTogUE9MX1dpbmVfU2VsZWN0UHJlZml4IFtwcmVmaXhuYW1lXQotLQlQUkVG TkFNRT1gcHJpbnRmICIkMSJ8IHRyIC1jIFtbYS16QS1aMC05XVwuXSAnXydgCi0tCVBPTF9EZWJ1 Z19NZXNzYWdlICJTZWxlY3RpbmcgcHJlZml4OiAkUFJFRk5BTUUiCi0tICAgICAgICAjIEVtcHR5 IG5hbWUgaXMgZGFuZ2Vyb3VzCi0tICAgICAgICBbIC16ICIkUFJFRk5BTUUiIF0gJiYgUE9MX0Rl YnVnX0ZhdGFsICJCYWQgb3IgZW1wdHkgdmlydHVhbCBkcml2ZSBuYW1lIHNlbGVjdGVkIgotLQll eHBvcnQgV0lORVBSRUZJWD0iJFBPTF9VU0VSX1JPT1Qvd2luZXByZWZpeC8kUFJFRk5BTUUiCi0t CWV4cG9ydCBET1NQUkVGSVg9IiRXSU5FUFJFRklYIgotLQlpZiBbIC1lICIkV0lORVBSRUZJWC9w bGF5b25saW51eC5jZmciIF07IHRoZW4KLS0JCWV4cG9ydCBQT0xfV0lORVZFUlNJT049IiQoUE9M X0NvbmZpZ19QcmVmaXhSZWFkIFZFUlNJT04pIgotLQkJUE9MX1N5c3RlbV9TZXRBcmNoICIkKFBP TF9Db25maWdfUHJlZml4UmVhZCBBUkNIKSIgImRldGVjdGVkIgotLQllbHNlCi0tCQl0b3VjaCAi JFdJTkVQUkVGSVgvcGxheW9ubGludXguY2ZnIiAyPiAvZGV2L251bGwKLS0JZmkKLS0KLS0JIyMg SW4gZmFjdCBpdCdzIGEgYmFkIGlkZWEKLS0JI2lmIFsgIiQoUE9MX0NvbmZpZ19QcmVmaXhSZWFk IEFSQ0gpIiA9ICJ4ODYiIF07IHRoZW4gIyMgQ29tbWUgY2EsIHBhcyBkZSBjb25mbGl0cwotLQkj CWV4cG9ydCBXSU5FQVJDSD13aW4zMgotLQkjZmkKLStQT0xfV2luZV9TZWxlY3RQcmVmaXgoKSB7 Ci0rICAjIFNlbGVjdCBhIHdpbmVwcmVmaXggYW5kIHJlbW92ZSB1bmV4cGVjdGVkIGNoYXJzCi0r ICAjIFVzYWdlOiBQT0xfV2luZV9TZWxlY3RQcmVmaXggW3ByZWZpeG5hbWVdCi0rICBQUkVGTkFN RT0kKHByaW50ZiAiJDEiIHwgdHIgLWMgW1thLXpBLVowLTldXC5dICdfJykKLSsgIFBPTF9EZWJ1 Z19NZXNzYWdlICJTZWxlY3RpbmcgcHJlZml4OiAkUFJFRk5BTUUiCi0rICAjIEVtcHR5IG5hbWUg aXMgZGFuZ2Vyb3VzCi0rICBbIC16ICIkUFJFRk5BTUUiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJC YWQgb3IgZW1wdHkgdmlydHVhbCBkcml2ZSBuYW1lIHNlbGVjdGVkIgotKyAgZXhwb3J0IFdJTkVQ UkVGSVg9IiRQT0xfVVNFUl9ST09UL3dpbmVwcmVmaXgvJFBSRUZOQU1FIgotKyAgZXhwb3J0IERP U1BSRUZJWD0iJFdJTkVQUkVGSVgiCi0rICBpZiBbIC1lICIkV0lORVBSRUZJWC9wbGF5b25saW51 eC5jZmciIF07IHRoZW4KLSsgICAgZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJChQT0xfQ29uZmln X1ByZWZpeFJlYWQgVkVSU0lPTikiCi0rICAgIFBPTF9TeXN0ZW1fU2V0QXJjaCAiJChQT0xfQ29u ZmlnX1ByZWZpeFJlYWQgQVJDSCkiICJkZXRlY3RlZCIKLSsgIGVsc2UKLSsgICAgdG91Y2ggIiRX SU5FUFJFRklYL3BsYXlvbmxpbnV4LmNmZyIgMj4vZGV2L251bGwKLSsgIGZpCi0rCi0rICAjIyBJ biBmYWN0IGl0J3MgYSBiYWQgaWRlYQotKyAgI2lmIFsgIiQoUE9MX0NvbmZpZ19QcmVmaXhSZWFk IEFSQ0gpIiA9ICJ4ODYiIF07IHRoZW4gIyMgQ29tbWUgY2EsIHBhcyBkZSBjb25mbGl0cwotKyAg IwlleHBvcnQgV0lORUFSQ0g9d2luMzIKLSsgICNmaQotIH0KLS1QT0xfV2luZV9QcmVmaXhFeGlz dHMoKQotLXsKLS0JIyBDaGVja3MgaWYgYSBwcmVmaXggZXhpc3RzCi0tCSMgVXNhZ2U6IFBPTF9X aW5lX1ByZWZpeEV4aXN0cwotLQkjIFJldHVybiBUcnVlIG9yIEZhbHNlCi0tCVBSRUZOQU1FPWBw cmludGYgIiQxInwgdHIgLWMgW1thLXpBLVowLTldXC5dICdfJ2AKLS0JWyAtZCAiJFBPTF9VU0VS X1JPT1Qvd2luZXByZWZpeC8kUFJFRk5BTUUvZHJpdmVfYyIgXSAmJiBlY2hvICJUcnVlIiB8fCBl Y2hvICJGYWxzZSIKLStQT0xfV2luZV9QcmVmaXhFeGlzdHMoKSB7Ci0rICAjIENoZWNrcyBpZiBh IHByZWZpeCBleGlzdHMKLSsgICMgVXNhZ2U6IFBPTF9XaW5lX1ByZWZpeEV4aXN0cwotKyAgIyBS ZXR1cm4gVHJ1ZSBvciBGYWxzZQotKyAgUFJFRk5BTUU9JChwcmludGYgIiQxIiB8IHRyIC1jIFtb YS16QS1aMC05XVwuXSAnXycpCi0rICBbIC1kICIkUE9MX1VTRVJfUk9PVC93aW5lcHJlZml4LyRQ UkVGTkFNRS9kcml2ZV9jIiBdICYmIGVjaG8gIlRydWUiIHx8IGVjaG8gIkZhbHNlIgotIH0KLS1Q T0xfV2luZV9DaGVja1ByZWZpeEV4aXN0cygpCi0tewotLQkjIENoZWNrcyBpZiBhIHByZWZpeCBl eGlzdHMKLS0JIyBVc2FnZTogUE9MX1dpbmVfQ2hlY2tQcmVmaXhFeGlzdHMgW1BSRUZJWF0gW1RJ VExFX1JFUVVJUkVEXQotLQkjIFJldHVybiBhIG1lc3NhZ2UgaWYgbm90IGFuZCBxdWl0Ci0tCVBS RUZJWD0kMQotLQlUSVRMRV9SRVFVSVJFRD0iJDIiCi0tCWlmIFsgIiQoUE9MX1dpbmVfUHJlZml4 RXhpc3RzICIkUFJFRklYIikiID0gIkZhbHNlIiBdOyB0aGVuCi0tCQlQT0xfRGVidWdfV2Fybmlu ZyAiVGhlIHByZWZpeCAnJFBSRUZJWCcgZG9lcyBub3QgZXhpc3QiCi0tCQlQT0xfU2V0dXBXaW5k b3dfbWVzc2FnZSAiJChldmFsX2dldHRleHQgJ1RoaXMgaXMgYW4gaW5zdGFsbGVyIGZvciBhbiB1 cGRhdGUgb3IgYW4gYWRkb247XG5QbGVhc2UgaW5zdGFsbCAkVElUTEVfUkVRVUlSRUQgZmlyc3Qn KSIgIiRUSVRMRSIKLS0JCVBPTF9TZXR1cFdpbmRvd19DbG9zZQotLQkJZXhpdCAxCi0tCWZpCi0r UE9MX1dpbmVfQ2hlY2tQcmVmaXhFeGlzdHMoKSB7Ci0rICAjIENoZWNrcyBpZiBhIHByZWZpeCBl eGlzdHMKLSsgICMgVXNhZ2U6IFBPTF9XaW5lX0NoZWNrUHJlZml4RXhpc3RzIFtQUkVGSVhdIFtU SVRMRV9SRVFVSVJFRF0KLSsgICMgUmV0dXJuIGEgbWVzc2FnZSBpZiBub3QgYW5kIHF1aXQKLSsg IFBSRUZJWD0kMQotKyAgVElUTEVfUkVRVUlSRUQ9IiQyIgotKyAgaWYgWyAiJChQT0xfV2luZV9Q cmVmaXhFeGlzdHMgIiRQUkVGSVgiKSIgPSAiRmFsc2UiIF07IHRoZW4KLSsgICAgUE9MX0RlYnVn X1dhcm5pbmcgIlRoZSBwcmVmaXggJyRQUkVGSVgnIGRvZXMgbm90IGV4aXN0IgotKyAgICBQT0xf U2V0dXBXaW5kb3dfbWVzc2FnZSAiJChldmFsX2dldHRleHQgJ1RoaXMgaXMgYW4gaW5zdGFsbGVy IGZvciBhbiB1cGRhdGUgb3IgYW4gYWRkb247XG5QbGVhc2UgaW5zdGFsbCAkVElUTEVfUkVRVUlS RUQgZmlyc3QnKSIgIiRUSVRMRSIKLSsgICAgUE9MX1NldHVwV2luZG93X0Nsb3NlCi0rICAgIGV4 aXQgMQotKyAgZmkKLSB9Ci0tUE9MX1dpbmVfVmVyc2lvblNpZ25hdHVyZSgpCi0tewotLQkjIFJl dHVybiB0aGUgc2lnbmF0dXJlIG9mIGEgV2luZSBwYWNrYWdlCi0tCSMgVXNhZ2U6IFBPTF9XaW5l X1ZlcnNpb25TaWduYXR1cmUgW0RJUl0KLS0KLS0JIyBPbiBMaW51eCwgcmVzdWx0IHNob3VsZCBt YXRjaCB0aGUgb25lIG9mCi0tCSMgY2QgJERJUjsgZmluZCAqIC10eXBlIGZ8c29ydHx4YXJncyBt ZDVzdW18bWQ1c3VtIC18Y3V0IC1jMS0zMgotLQotLQlsb2NhbCBXSU5FUEtHUEFUSD0iJDEiCi0t CVsgLWQgIiRXSU5FUEtHUEFUSCIgXSB8fCByZXR1cm4KLS0JIyBbIC1lICIkV0lORVBLR1BBVEgv YmluL3dpbmUiIF0gfHwgcmV0dXJuCi0tCi0tCWxvY2FsIENVUlJTSUdWRVI9IiRXSU5FUEtHUEFU SC8uc2lnbmF0dXJlLnYxIiAjIGNhY2hlIHZlcnNpb24KLS0JbG9jYWwgV0lORVNJRwotLQlbIC1l ICIkQ1VSUlNJR1ZFUiIgXSAmJiByZWFkIFdJTkVTSUcgPCAiJENVUlJTSUdWRVIiCi0tCWlmIFsg LXogIiRXSU5FU0lHIiBdOyB0aGVuCi0tCQlsb2NhbCBNQU5JRkVTVEZJTEU9IiRQT0xfVVNFUl9S T09UL3RtcC9QT0xfV2luZV9WZXJzaW9uU2lnbmF0dXJlX21hbmlmZXN0JCQiCi0tCQkoY2QgIiRX SU5FUEtHUEFUSCIgJiYgZmluZCAqIC10eXBlIGYgfFwKLS0JCSAgc29ydCB8XAotLQkJICB3aGls ZSByZWFkIHNpZ2ZpbGVuYW1lOyBkbwotLQkJICAgIGVjaG8gIiQoUE9MX01ENV9maWxlICIkc2ln ZmlsZW5hbWUiKSAgJHNpZ2ZpbGVuYW1lIgotLQkJICBkb25lKSA+ICIkTUFOSUZFU1RGSUxFIgot LQkJV0lORVNJRz0iJChQT0xfTUQ1X2ZpbGUgIiRNQU5JRkVTVEZJTEUiKSIKLS0JCXJtIC1mICIk TUFOSUZFU1RGSUxFIgotLQkJZWNobyAiJFdJTkVTSUciID4gIiRDVVJSU0lHVkVSIgotLQlmaQot LQllY2hvICIkV0lORVNJRyIKLStQT0xfV2luZV9WZXJzaW9uU2lnbmF0dXJlKCkgewotKyAgIyBS ZXR1cm4gdGhlIHNpZ25hdHVyZSBvZiBhIFdpbmUgcGFja2FnZQotKyAgIyBVc2FnZTogUE9MX1dp bmVfVmVyc2lvblNpZ25hdHVyZSBbRElSXQotKwotKyAgIyBPbiBMaW51eCwgcmVzdWx0IHNob3Vs ZCBtYXRjaCB0aGUgb25lIG9mCi0rICAjIGNkICRESVI7IGZpbmQgKiAtdHlwZSBmfHNvcnR8eGFy Z3MgbWQ1c3VtfG1kNXN1bSAtfGN1dCAtYzEtMzIKLSsKLSsgIGxvY2FsIFdJTkVQS0dQQVRIPSIk MSIKLSsgIFsgLWQgIiRXSU5FUEtHUEFUSCIgXSB8fCByZXR1cm4KLSsgICMgWyAtZSAiJFdJTkVQ S0dQQVRIL2Jpbi93aW5lIiBdIHx8IHJldHVybgotKwotKyAgbG9jYWwgQ1VSUlNJR1ZFUj0iJFdJ TkVQS0dQQVRILy5zaWduYXR1cmUudjEiICMgY2FjaGUgdmVyc2lvbgotKyAgbG9jYWwgV0lORVNJ RwotKyAgWyAtZSAiJENVUlJTSUdWRVIiIF0gJiYgcmVhZCBXSU5FU0lHIDwiJENVUlJTSUdWRVIi Ci0rICBpZiBbIC16ICIkV0lORVNJRyIgXTsgdGhlbgotKyAgICBsb2NhbCBNQU5JRkVTVEZJTEU9 IiRQT0xfVVNFUl9ST09UL3RtcC9QT0xfV2luZV9WZXJzaW9uU2lnbmF0dXJlX21hbmlmZXN0JCQi Ci0rICAgIChjZCAiJFdJTkVQS0dQQVRIIiAmJiBmaW5kICogLXR5cGUgZiB8Ci0rICAgICAgc29y dCB8Ci0rICAgICAgd2hpbGUgcmVhZCBzaWdmaWxlbmFtZTsgZG8KLSsgICAgICAgIGVjaG8gIiQo UE9MX01ENV9maWxlICIkc2lnZmlsZW5hbWUiKSAgJHNpZ2ZpbGVuYW1lIgotKyAgICAgIGRvbmUp ID4iJE1BTklGRVNURklMRSIKLSsgICAgV0lORVNJRz0iJChQT0xfTUQ1X2ZpbGUgIiRNQU5JRkVT VEZJTEUiKSIKLSsgICAgcm0gLWYgIiRNQU5JRkVTVEZJTEUiCi0rICAgIGVjaG8gIiRXSU5FU0lH IiA+IiRDVVJSU0lHVkVSIgotKyAgZmkKLSsgIGVjaG8gIiRXSU5FU0lHIgotIH0KLS1QT0xfV2lu ZV9JbnN0YWxsVmVyc2lvbigpCi0tewotLQkjIEluc3RhbGwgYSB3aW5ldmVyc2lvbgotLQkjIFVz YWdlOiBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbiBbVkVSU0lPTl0KLS0JWyAhICIkMSIgPSAiIiBd ICYmIGV4cG9ydCBQT0xfV0lORVZFUlNJT049IiQxIgotLQlbICEgIiQyIiA9ICIiIF0gJiYgZXhw b3J0IFBPTF9XSU5FRElTVFJJQlVUSU9OPSIkMiIgfHwgZXhwb3J0IFBPTF9XSU5FRElTVFJJQlVU SU9OPSJ1cHN0cmVhbSIKLS0KLS0JaWYgW1sgIiRQT0xfV0lORVZFUlNJT04iID09ICoiLXN0YWdp bmciKiBdXTsgdGhlbgotLQkgICAgbG9jYWwgcG9sX3dpbmV2ZXJzaW9uPSIke1BPTF9XSU5FVkVS U0lPTi8tc3RhZ2luZy99IgotLQkJCVBPTF9XSU5FRElTVFJJQlVUSU9OPSJzdGFnaW5nIgotLQll bHNlCi0tCQkJbG9jYWwgcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGw9IiRQT0xfV0lORVZFUlNJT04i Ci0tCQkJbG9jYWwgcG9sX3dpbmV2ZXJzaW9uPSIkUE9MX1dJTkVWRVJTSU9OIgotLQlmaQotLQot LQlpZiBbICIkUE9MX1dJTkVESVNUUklCVVRJT04iID09ICJzdGFnaW5nIiBdOyB0aGVuCi0tCQls b2NhbCBwb2xfd2luZXZlcnNpb25faW5zdGFsbD0iJHBvbF93aW5ldmVyc2lvbi1zdGFnaW5nIgot LQlmaQotLQotLQlbICIkcG9sX3dpbmV2ZXJzaW9uIiA9ICIiIF0gJiYgUE9MX0RlYnVnX0ZhdGFs ICJObyBQT0xfV0lORVZFUlNJT04gc2V0IgotLQlbICIkUE9MX0FSQ0giID0gIiIgXSAmJiBQT0xf U3lzdGVtX1NldEFyY2ggImF1dG8iCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJJbnN0YWxsaW5nIHdp bmUgdmVyc2lvbiBwYXRoOiAkcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGwsICRQT0xfQVJDSCIKLS0J WyAiJFBPTF9PUyIgPSAiTWFjIiBdICYmIEFSQ0hfUFJFRklYPSJkYXJ3aW4iCi0tCVsgIiRQT0xf T1MiID0gIkZyZWVCU0QiIF0gJiYgQVJDSF9QUkVGSVg9ImZyZWVic2QiCi0tCVsgIiRQT0xfT1Mi ID0gIkxpbnV4IiBdICYmIEFSQ0hfUFJFRklYPSJsaW51eCIKLS0JT0xEUEFUSD0iJFBXRCIKLS0J V0lORV9TRUNUSU9OPSIkQVJDSF9QUkVGSVgtJFBPTF9BUkNIIgotLQlXSU5FRElSPSIkUE9MX1VT RVJfUk9PVC93aW5lLyRXSU5FX1NFQ1RJT04iCi0tCXRvdWNoICIkV0lORURJUi9pbnN0YWxsaW5n IgotLQlpZiBbICEgLWUgIiRQT0xfVVNFUl9ST09UL3dpbmUvJEFSQ0hfUFJFRklYLSRQT0xfQVJD SC8kcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGwiIF0KLS0JdGhlbgotLQkJUE9MX0RlYnVnX01lc3Nh Z2UgIldpbmUgc2l0ZTogJFdJTkVfU0lURSIKLS0JCWVjaG8gJFBPTF9XR0VUICIkV0lORV9TSVRF IiAtTy0KLS0JCVdJTkVEQVRBPSIkKCRQT0xfV0dFVCAiJFdJTkVfU0lURSIgLU8tIHxqcSAtciAi LltdIHwgc2VsZWN0KC5uYW1lPT1cIiRQT0xfV0lORURJU1RSSUJVVElPTi0kQVJDSF9QUkVGSVgt JFBPTF9BUkNIXCIpIHwgLnBhY2thZ2VzIHwgLltdIHwgc2VsZWN0KC52ZXJzaW9uPT1cIiRwb2xf d2luZXZlcnNpb25cIikiKSIKLS0JCVBPTF9EZWJ1Z19NZXNzYWdlICJXaW5lYnVpbGQgZGF0YTog JFdJTkVEQVRBIgotLQotLQkJV0lORV9BRERSRVNTPSIkKGVjaG8gIiRXSU5FREFUQSIgfCBqcSAn LnVybCcgLXIpIgotLQkJUE9MX0RlYnVnX01lc3NhZ2UgIldpbmUgYWRkcmVzcyBmb3VuZDogJFdJ TkVfQUREUkVTUyIKLS0JCSNXSU5FX0FERFJFU1M9JCgkUE9MX1dHRVQgIiRXSU5FX1NJVEUvJFdJ TkVfU0VDVElPTi5sc3QiIC1PLSB8IGdyZXAgIjskcG9sX3dpbmV2ZXJzaW9uOyIgfCB0YWlsIC1u IDEgfCBjdXQgLWQgIjsiIC1mMSkKLS0KLS0JCWlmIFsgIiRXSU5FX0FERFJFU1MiID0gIiIgXSAm JiBbICIkUE9MX0FSQ0giID0gImFtZDY0IiBdCi0tCQl0aGVuCi0tCQkJUE9MX0RlYnVnX1dhcm5p bmcgIldpbmUgJDEgYW1kNjQgZG9lcyBub3QgZXhpc3QuIFN3aXRjaGluZyB0byB4ODYiCi0tCQkJ UE9MX1N5c3RlbV9TZXRBcmNoICJ4ODYiCi0tCQkJUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24gIiQx IgotLQkJZWxzZQotLQkJCWlmIFsgIiRXSU5FX0FERFJFU1MiID0gIiIgXQotLQkJCXRoZW4KLS0J CQkJUE9MX0RlYnVnX0Vycm9yICIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIGZpbmQgdmVyc2lv bjogIikkcG9sX3dpbmV2ZXJzaW9uIgotLQkJCQlQT0xfU2V0dXBXaW5kb3dfQ2xvc2UKLS0JCQkJ ZXhpdAotLQkJCWZpCi0tCi0tCQkJY2QgIiRQT0xfVVNFUl9ST09UL3RtcCIKLS0JCQlmaWxlbmFt ZT0iJFBXRC9QbGF5T25MaW51eC13aW5lLSRwb2xfd2luZXZlcnNpb24tJFBPTF9XSU5FRElTVFJJ QlVUSU9OLSRBUkNIX1BSRUZJWC0kUE9MX0FSQ0gudGFyLmd6IgotLQkJCVBPTF9TZXR1cFdpbmRv d19kb3dubG9hZCAiJChldmFsX2dldHRleHQgIkRvd25sb2FkaW5nIFdpbmU6ICIpJHBvbF93aW5l dmVyc2lvbiIgIiRUSVRMRSIgIiRXSU5FX0FERFJFU1MiCi0tCQkJUE9MX1NldHVwV2luZG93X3dh aXRfbmV4dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0ICJEb3dubG9hZGluZyBXaW5lOiAiKSRwb2xf d2luZXZlcnNpb24iICIkVElUTEUiCi0tCQkJc2xlZXAgMQotLQkJCXNoYTE9IiQoZWNobyAiJFdJ TkVEQVRBIiB8IGpxICcuc2hhMXN1bScgLXIpIgotLQkJCXNoYTFfZmlsZT0kKHNoYXN1bSAiJGZp bGVuYW1lIiB8IGF3ayAne3ByaW50ICQxfScpCi0tCQkJZWNobyAiU2VydmVyIHNoYTEgOiAkc2hh MSIKLS0JCQllY2hvICJDbGllbnQgc2hhMSA6ICRzaGExX2ZpbGUiCi0tCi0tCQkJaWYgWyAhICIk c2hhMSIgPSAiJHNoYTFfZmlsZSIgXQotLQkJCXRoZW4KLS0JCQkJUE9MX1NldHVwV2luZG93X21l c3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdUaGUgZG93bmxvYWQgc2VlbXMgdG8gaGF2ZSBmYWlsZWQu JykiICIkVElUTEUiCi0tCQkJZWxzZQotLQkJCQlQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJChldmFs X2dldHRleHQgJ0V4dHJhY3RpbmcgV2luZS4uLicpIiAiJFRJVExFIgotLQkJCQlta2RpciAtcCAi JFBPTF9VU0VSX1JPT1Qvd2luZS8kQVJDSF9QUkVGSVgtJFBPTF9BUkNILyRwb2xfd2luZXZlcnNp b25faW5zdGFsbCIKLS0JCQkJY2QgIiRQT0xfVVNFUl9ST09UL3dpbmUvJEFSQ0hfUFJFRklYLSRQ T0xfQVJDSC8kcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGwiCi0tCQkJCXRhciAteHZmICIkZmlsZW5h bWUiCi0tCQkJZmkKLS0JCQlybSAiJGZpbGVuYW1lIgotLQkJCSMgUE9MX1dpbmVfSW5zdGFsbF9y ZXNvdXJjZXMgZ2Vja28gIiRwb2xfd2luZXZlcnNpb24iICIkUE9MX0FSQ0giCi0tCQkJIyBQT0xf V2luZV9JbnN0YWxsX3Jlc291cmNlcyBtb25vICIkcG9sX3dpbmV2ZXJzaW9uIiAiJFBPTF9BUkNI IgotLQkJZmkKLS0JZmkKLS0Jcm0gIiRXSU5FRElSL2luc3RhbGxpbmciCi0rUE9MX1dpbmVfSW5z dGFsbFZlcnNpb24oKSB7Ci0rICAjIEluc3RhbGwgYSB3aW5ldmVyc2lvbgotKyAgIyBVc2FnZTog UE9MX1dpbmVfSW5zdGFsbFZlcnNpb24gW1ZFUlNJT05dCi0rICBbICEgIiQxIiA9ICIiIF0gJiYg ZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCi0rICBbICEgIiQyIiA9ICIiIF0gJiYgZXhwb3J0 IFBPTF9XSU5FRElTVFJJQlVUSU9OPSIkMiIgfHwgZXhwb3J0IFBPTF9XSU5FRElTVFJJQlVUSU9O PSJ1cHN0cmVhbSIKLSsKLSsgIGlmIFtbICIkUE9MX1dJTkVWRVJTSU9OIiA9PSAqIi1zdGFnaW5n IiogXV07IHRoZW4KLSsgICAgbG9jYWwgcG9sX3dpbmV2ZXJzaW9uPSIke1BPTF9XSU5FVkVSU0lP Ti8tc3RhZ2luZy99IgotKyAgICBQT0xfV0lORURJU1RSSUJVVElPTj0ic3RhZ2luZyIKLSsgIGVs aWYgW1sgIiRQT0xfV0lORVZFUlNJT04iID09ICoiLWN4IiogXV07IHRoZW4KLSsgICAgbG9jYWwg cG9sX3dpbmV2ZXJzaW9uPSIke1BPTF9XSU5FVkVSU0lPTi8tY3gvfSIKLSsgICAgUE9MX1dJTkVE SVNUUklCVVRJT049ImN4IgotKyAgZWxzZQotKyAgICBsb2NhbCBwb2xfd2luZXZlcnNpb25faW5z dGFsbD0iJFBPTF9XSU5FVkVSU0lPTiIKLSsgICAgbG9jYWwgcG9sX3dpbmV2ZXJzaW9uPSIkUE9M X1dJTkVWRVJTSU9OIgotKyAgZmkKLSsKLSsgIGlmIFsgIiRQT0xfV0lORURJU1RSSUJVVElPTiIg PT0gInN0YWdpbmciIF07IHRoZW4KLSsgICAgbG9jYWwgcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGw9 IiRwb2xfd2luZXZlcnNpb24tc3RhZ2luZyIKLSsgIGZpCi0rCi0rICBpZiBbICIkUE9MX1dJTkVE SVNUUklCVVRJT04iID09ICJjeCIgXTsgdGhlbgotKyAgICBsb2NhbCBwb2xfd2luZXZlcnNpb25f aW5zdGFsbD0iJHBvbF93aW5ldmVyc2lvbi1jeCIKLSsgIGZpCi0rCi0rICBbICIkcG9sX3dpbmV2 ZXJzaW9uIiA9ICIiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJObyBQT0xfV0lORVZFUlNJT04gc2V0 IgotKyAgWyAiJFBPTF9BUkNIIiA9ICIiIF0gJiYgUE9MX1N5c3RlbV9TZXRBcmNoICJhdXRvIgot KyAgUE9MX0RlYnVnX01lc3NhZ2UgIkluc3RhbGxpbmcgd2luZSB2ZXJzaW9uIHBhdGg6ICRwb2xf d2luZXZlcnNpb25faW5zdGFsbCwgJFBPTF9BUkNIIgotKyAgWyAiJFBPTF9PUyIgPSAiTWFjIiBd ICYmIEFSQ0hfUFJFRklYPSJkYXJ3aW4iCi0rICBbICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdICYm IEFSQ0hfUFJFRklYPSJmcmVlYnNkIgotKyAgWyAiJFBPTF9PUyIgPSAiTGludXgiIF0gJiYgQVJD SF9QUkVGSVg9ImxpbnV4IgotKyAgT0xEUEFUSD0iJFBXRCIKLSsgIFdJTkVfU0VDVElPTj0iJEFS Q0hfUFJFRklYLSRQT0xfQVJDSCIKLSsgIFdJTkVESVI9IiRQT0xfVVNFUl9ST09UL3dpbmUvJFdJ TkVfU0VDVElPTiIKLSsgIHRvdWNoICIkV0lORURJUi9pbnN0YWxsaW5nIgotKyAgaWYgWyAhIC1l ICIkUE9MX1VTRVJfUk9PVC93aW5lLyRBUkNIX1BSRUZJWC0kUE9MX0FSQ0gvJHBvbF93aW5ldmVy c2lvbl9pbnN0YWxsIiBdOyB0aGVuCi0rICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJXaW5lIHNpdGU6 ICRXSU5FX1NJVEUiCi0rICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJ3Z2V0IGxpc3QgY29tbWFuZDog JFBPTF9XR0VUICRXSU5FX1NJVEUgLU8tIgotKyAgICBQT0xfRGVidWdfTWVzc2FnZSAiUE9MX0FS Q0g6ICRQT0xfQVJDSCIKLSsKLSsgICAgaWYgWyAiJFBPTF9BUkNIIiA9ICJ4ODYiIF07IHRoZW4K LSsgICAgICBbWyAiJE9TWF9WRVJTSU9OIiAtZ2UgMTkgXV0gJiYgc2l0ZV9hcmNoPSJ4ODZvbjY0 IiB8fCBzaXRlX2FyY2g9Ing4NiIKLSsgICAgZWxzZQotKyAgICAgIHNpdGVfYXJjaD0iJFBPTF9B UkNIIgotKyAgICBmaQotKyAgICBXSU5FREFUQT0iJCgkUE9MX1dHRVQgIiRXSU5FX1NJVEUiIC1P LSB8IGpxIC1yICIuW10gfCBzZWxlY3QoLm5hbWU9PVwiJFBPTF9XSU5FRElTVFJJQlVUSU9OLSRB UkNIX1BSRUZJWC0kc2l0ZV9hcmNoXCIpIHwgLnBhY2thZ2VzIHwgLltdIHwgc2VsZWN0KC52ZXJz aW9uPT1cIiRwb2xfd2luZXZlcnNpb25cIikiKSIKLSsgICAgUE9MX0RlYnVnX01lc3NhZ2UgIldp bmVidWlsZCBkYXRhOiAkV0lORURBVEEiCi0rCi0rICAgIFdJTkVfQUREUkVTUz0iJChlY2hvICIk V0lORURBVEEiIHwganEgJy51cmwnIC1yKSIKLSsgICAgUE9MX0RlYnVnX01lc3NhZ2UgIldpbmUg YWRkcmVzcyBmb3VuZDogJFdJTkVfQUREUkVTUyIKLSsgICAgI1dJTkVfQUREUkVTUz0kKCRQT0xf V0dFVCAiJFdJTkVfU0lURS8kV0lORV9TRUNUSU9OLmxzdCIgLU8tIHwgZ3JlcCAiOyRwb2xfd2lu ZXZlcnNpb247IiB8IHRhaWwgLW4gMSB8IGN1dCAtZCAiOyIgLWYxKQotKwotKyAgICBpZiBbICIk V0lORV9BRERSRVNTIiA9ICIiIF0gJiYgWyAiJFBPTF9BUkNIIiA9ICJhbWQ2NCIgXTsgdGhlbgot KyAgICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJXaW5lICQxIGFtZDY0IGRvZXMgbm90IGV4aXN0LiBT d2l0Y2hpbmcgdG8geDg2IgotKyAgICAgIFBPTF9TeXN0ZW1fU2V0QXJjaCAieDg2IgotKyAgICAg IFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uICIkMSIKLSsgICAgZWxzZQotKyAgICAgIGlmIFsgIiRX SU5FX0FERFJFU1MiID0gIiIgXTsgdGhlbgotKyAgICAgICAgaWYgW1sgJE9TWF9WRVJTSU9OIC1n ZSAxOSBdXTsgdGhlbgotKyAgICAgICAgICBQT0xfU2V0dXBXaW5kb3dfbWVzc2FnZSAiJChldmFs X2dldHRleHQgIm1hY09TIENhdGFsaW5hIHVzZXI6IDMyYml0cyB3aW5lIHZlcnNpb24gYXJlIG5v IGxvbmdlciBhdmFpbGFibGUuXG5XZSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBzeXN0ZW0gd2luZSB2 ZXJzaW9uIGluc3RlYWQiKSIKLSsgICAgICAgICAgcmV0dXJuIDIKLSsgICAgICAgIGVsc2UKLSsg ICAgICAgICAgUE9MX0RlYnVnX0Vycm9yICIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIGZpbmQg dmVyc2lvbjogIikkcG9sX3dpbmV2ZXJzaW9uIgotKyAgICAgICAgICBQT0xfU2V0dXBXaW5kb3df Q2xvc2UKLSsgICAgICAgICAgZXhpdAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKwotKyAgICAg IGNkICIkUE9MX1VTRVJfUk9PVC90bXAiCi0rICAgICAgZmlsZW5hbWU9IiRQV0QvUGxheU9uTGlu dXgtd2luZS0kcG9sX3dpbmV2ZXJzaW9uLSRQT0xfV0lORURJU1RSSUJVVElPTi0kQVJDSF9QUkVG SVgtJHNpdGVfYXJjaC50YXIuZ3oiCi0rICAgICAgUE9MX1NldHVwV2luZG93X2Rvd25sb2FkICIk KGV2YWxfZ2V0dGV4dCAiRG93bmxvYWRpbmcgV2luZTogIikkcG9sX3dpbmV2ZXJzaW9uIiAiJFRJ VExFIiAiJFdJTkVfQUREUkVTUyIKLSsgICAgICBQT0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0X3Np Z25hbCAiJChldmFsX2dldHRleHQgIkRvd25sb2FkaW5nIFdpbmU6ICIpJHBvbF93aW5ldmVyc2lv biIgIiRUSVRMRSIKLSsgICAgICBzbGVlcCAxCi0rICAgICAgc2hhMT0iJChlY2hvICIkV0lORURB VEEiIHwganEgJy5zaGExc3VtJyAtcikiCi0rICAgICAgc2hhMV9maWxlPSQoc2hhc3VtICIkZmls ZW5hbWUiIHwgYXdrICd7cHJpbnQgJDF9JykKLSsgICAgICBlY2hvICJTZXJ2ZXIgc2hhMSA6ICRz aGExIgotKyAgICAgIGVjaG8gIkNsaWVudCBzaGExIDogJHNoYTFfZmlsZSIKLSsKLSsgICAgICBp ZiBbICEgIiRzaGExIiA9ICIkc2hhMV9maWxlIiBdICYmIFtbICRPU1hfVkVSU0lPTiAtbHQgMTkg XV07IHRoZW4KLSsgICAgICAgIFBPTF9TZXR1cFdpbmRvd19tZXNzYWdlICIkKGV2YWxfZ2V0dGV4 dCAnVGhlIGRvd25sb2FkIHNlZW1zIHRvIGhhdmUgZmFpbGVkLicpIiAiJFRJVExFIgotKyAgICAg IGVsc2UKLSsgICAgICAgIFBPTF9TZXR1cFdpbmRvd193YWl0ICIkKGV2YWxfZ2V0dGV4dCAnRXh0 cmFjdGluZyBXaW5lLi4uJykiICIkVElUTEUiCi0rICAgICAgICBta2RpciAtcCAiJFBPTF9VU0VS X1JPT1Qvd2luZS8kQVJDSF9QUkVGSVgtJFBPTF9BUkNILyRwb2xfd2luZXZlcnNpb25faW5zdGFs bCIKLSsgICAgICAgIGNkICIkUE9MX1VTRVJfUk9PVC93aW5lLyRBUkNIX1BSRUZJWC0kUE9MX0FS Q0gvJHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsIgotKyAgICAgICAgdGFyIC14dmYgIiRmaWxlbmFt ZSIKLSsgICAgICBmaQotKyAgICAgIHJtICIkZmlsZW5hbWUiCi0rICAgICAgIyBQT0xfV2luZV9J bnN0YWxsX3Jlc291cmNlcyBnZWNrbyAiJHBvbF93aW5ldmVyc2lvbiIgIiRQT0xfQVJDSCIKLSsg ICAgICAjIFBPTF9XaW5lX0luc3RhbGxfcmVzb3VyY2VzIG1vbm8gIiRwb2xfd2luZXZlcnNpb24i ICIkUE9MX0FSQ0giCi0rICAgIGZpCi0rICBmaQotKyAgcm0gIiRXSU5FRElSL2luc3RhbGxpbmci Ci0gCi0gfQotIAotLVBPTF9XaW5lX0luc3RhbGxDRFJPTSgpCi0tewotLQlQT0xfV2luZV9JbnN0 YWxsQ0RST01DdXN0b20gIiQxIiAiJENEUk9NIgotK1BPTF9XaW5lX0luc3RhbGxDRFJPTSgpIHsK LSsgIFBPTF9XaW5lX0luc3RhbGxDRFJPTUN1c3RvbSAiJDEiICIkQ0RST00iCi0gfQotLVBPTF9X aW5lX0luc3RhbGxDRFJPTUN1c3RvbSgpCi0tewotLQlpZiBbICIkMSIgXTsgdGhlbgotLQkJbGV0 dGVyPSIkMToiCi0tCWVsc2UKLS0JCWxldHRlcj0icDoiCi0tCWZpCi0tCWlmIFsgIiRDRFJPTSIg XTsgdGhlbgotLQkJY2QgIiRXSU5FUFJFRklYL2Rvc2RldmljZXMiCi0tCQlybSAiJGxldHRlciIg Mj4gL2Rldi9udWxsCi0tCQlsbiAtcyAiJDIiICIkbGV0dGVyIgotLQlmaQotK1BPTF9XaW5lX0lu c3RhbGxDRFJPTUN1c3RvbSgpIHsKLSsgIGlmIFsgIiQxIiBdOyB0aGVuCi0rICAgIGxldHRlcj0i JDE6IgotKyAgZWxzZQotKyAgICBsZXR0ZXI9InA6IgotKyAgZmkKLSsgIGlmIFsgIiRDRFJPTSIg XTsgdGhlbgotKyAgICBjZCAiJFdJTkVQUkVGSVgvZG9zZGV2aWNlcyIKLSsgICAgcm0gIiRsZXR0 ZXIiIDI+L2Rldi9udWxsCi0rICAgIGxuIC1zICIkMiIgIiRsZXR0ZXIiCi0rICBmaQotIH0KLS1Q T0xfV2luZV9JbnN0YWxsX3Jlc291cmNlcygpCi0tewotLQkjIEluc3RhbGwgZ2Vja28gb3IgbW9u byBmb3Igc2VsZWN0ZWQgd2luZSB2ZXJzaW9uCi0tCSMgVXNhZ2UgOiBQT0xfV2luZV9JbnN0YWxs X3Jlc291cmNlcyAoZ2Vja298bW9ubykgWyBWZXJzaW9uIF0gKCBBcmNoICkKLS0JWyAteiAiJDEi IF0gJiYgcmV0dXJuIDEKLS0JWyAiJDEiID0gIm1vbm8iIF0gJiYgcmVzb3VyY2U9IiQxIiB8fCBy ZXNvdXJjZT0iZ2Vja28iCi0tCXdpbmVfdmVyc2lvbj0iJDIiCi0tCXVucGF0Y2hlZF92ZXJzaW9u PWBQT0xfV2luZV9HZXRCYXNlTmFtZSAiJDIiYAotLQlbICIkMyIgPSAiYW1kNjQiIF0gJiYgYXJj aD0iJDMiIHx8IGFyY2g9Ing4NiIKLS0KLS0JUE9MX0RlYnVnX01lc3NhZ2UgIkluc3RhbGxpbmcg JHJlc291cmNlIGZvciB3aW5lICR1bnBhdGNoZWRfdmVyc2lvbiAkYXJjaCIKLS0JcmVzb3VyY2Vf ZGlyPSIkUE9MX1VTRVJfUk9PVC93aW5lLyRyZXNvdXJjZSIKLS0JcmVzb3VyY2VfZmlsZT0iJFBP TF9VU0VSX1JPT1QvY29uZmlndXJhdGlvbnMvbGlzdGVzLyRyZXNvdXJjZS5sc3QiCi0tCWZvdW5k PSIkKGdyZXAgIl4ke3VucGF0Y2hlZF92ZXJzaW9uLy8uL1wufTsiICIkcmVzb3VyY2VfZmlsZSIp IgotLQlbICIkUE9MX09TIiA9ICJMaW51eCIgXSAmJiB3b3M9ImxpbnV4IgotLQlbICIkUE9MX09T IiA9ICJGcmVlQlNEIiBdICYmIHdvcz0iZnJlZWJzZCIKLS0JWyAiJFBPTF9PUyIgPSAiTWFjIiBd ICYmIHdvcz0iZGFyd2luIgotLQotLQlpZiBbICEgLUwgIiRQT0xfVVNFUl9ST09UL3dpbmUvJHdv cy0kYXJjaC8kd2luZV92ZXJzaW9uL3NoYXJlL3dpbmUvJHJlc291cmNlIiBdCi0tCXRoZW4KLS0J CVBPTF9EZWJ1Z19NZXNzYWdlICJMaW5raW5nICRyZXNvdXJjZSIKLS0JCWxuIC1zICIkUE9MX1VT RVJfUk9PVC93aW5lLyRyZXNvdXJjZS8iICIkUE9MX1VTRVJfUk9PVC93aW5lLyR3b3MtJGFyY2gv JHdpbmVfdmVyc2lvbi9zaGFyZS93aW5lLyRyZXNvdXJjZSIKLS0JZmkKLS0JaWYgWyAiJGZvdW5k IiBdOyB0aGVuCi0tCQlyZXNvdXJjZXg4Nj0iJChjdXQgLWQgJzsnIC1mMiA8PDwgJGZvdW5kKSIK LS0JCXJlc291cmNlYW1kNjQ9IiQoY3V0IC1kICc7JyAtZjMgPDw8ICRmb3VuZCkiCi0tCQltZDV4 ODY9IiQoY3V0IC1kICc7JyAtZjQgPDw8ICRmb3VuZCkiCi0tCQltZDVhbWQ2ND0iJChjdXQgLWQg JzsnIC1mNSA8PDwgJGZvdW5kKSIKLS0KLS0JCWNkICIkcmVzb3VyY2VfZGlyIgotLQkJaWYgWyAi JHJlc291cmNleDg2IiBdOyB0aGVuCi0tCQkJaWYgWyAtZSAiJHJlc291cmNleDg2IiBdOyB0aGVu Ci0tCQkJCVBPTF9EZWJ1Z19NZXNzYWdlICIkcmVzb3VyY2V4ODYgYWxyZWFkeSBpbnN0YWxsZWQu IFNraXBwaW5nIgotLQkJCWVsc2UKLS0JCQkJUE9MX0RlYnVnX01lc3NhZ2UgIkluc3RhbGxpbmcg JHJlc291cmNleDg2IgotLQkJCQlQT0xfRG93bmxvYWQgIiQocmVzb3VyY2VfZG93bmxvYWRfdXJs ICRyZXNvdXJjZSB4ODYgJHJlc291cmNleDg2KSIgIiRtZDV4ODYiCi0tCQkJZmkKLS0JCWZpCi0t Ci0tCQlpZiBbICIkYXJjaCIgPSAiYW1kNjQiIF07IHRoZW4KLS0JCQlpZiBbICIkcmVzb3VyY2Vh bWQ2NCIgXTsgdGhlbgotLQkJCQlpZiBbIC1lICIkcmVzb3VyY2VhbWQ2NCIgXTsgdGhlbgotLQkJ CQkJUE9MX0RlYnVnX01lc3NhZ2UgIiRyZXNvdXJjZWFtZDY0IGFscmVhZHkgaW5zdGFsbGVkLiBT a2lwcGluZyIKLS0JCQkJZWxzZQotLQkJCQkJUE9MX0RlYnVnX01lc3NhZ2UgIkluc3RhbGxpbmcg JHJlc291cmNlYW1kNjQiCi0tCQkJCQlQT0xfRG93bmxvYWQgIiQocmVzb3VyY2VfZG93bmxvYWRf dXJsICRyZXNvdXJjZSBhbWQ2NCAkcmVzb3VyY2VhbWQ2NCkiICIkbWQ1YW1kNjQiCi0tCQkJCWZp Ci0tCQkJZmkKLS0JCWZpCi0tCWZpCi0rUE9MX1dpbmVfSW5zdGFsbF9yZXNvdXJjZXMoKSB7Ci0r ICAjIEluc3RhbGwgZ2Vja28gb3IgbW9ubyBmb3Igc2VsZWN0ZWQgd2luZSB2ZXJzaW9uCi0rICAj IFVzYWdlIDogUE9MX1dpbmVfSW5zdGFsbF9yZXNvdXJjZXMgKGdlY2tvfG1vbm8pIFsgVmVyc2lv biBdICggQXJjaCApCi0rICBbIC16ICIkMSIgXSAmJiByZXR1cm4gMQotKyAgWyAiJDEiID0gIm1v bm8iIF0gJiYgcmVzb3VyY2U9IiQxIiB8fCByZXNvdXJjZT0iZ2Vja28iCi0rICB3aW5lX3ZlcnNp b249IiQyIgotKyAgdW5wYXRjaGVkX3ZlcnNpb249JChQT0xfV2luZV9HZXRCYXNlTmFtZSAiJDIi KQotKyAgWyAiJDMiID0gImFtZDY0IiBdICYmIGFyY2g9IiQzIiB8fCBhcmNoPSJ4ODYiCi0rCi0r ICBQT0xfRGVidWdfTWVzc2FnZSAiSW5zdGFsbGluZyAkcmVzb3VyY2UgZm9yIHdpbmUgJHVucGF0 Y2hlZF92ZXJzaW9uICRhcmNoIgotKyAgcmVzb3VyY2VfZGlyPSIkUE9MX1VTRVJfUk9PVC93aW5l LyRyZXNvdXJjZSIKLSsgIHJlc291cmNlX2ZpbGU9IiRQT0xfVVNFUl9ST09UL2NvbmZpZ3VyYXRp b25zL2xpc3Rlcy8kcmVzb3VyY2UubHN0IgotKyAgZm91bmQ9IiQoZ3JlcCAiXiR7dW5wYXRjaGVk X3ZlcnNpb24vLy4vXC59OyIgIiRyZXNvdXJjZV9maWxlIikiCi0rICBbICIkUE9MX09TIiA9ICJM aW51eCIgXSAmJiB3b3M9ImxpbnV4IgotKyAgWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIgXSAmJiB3 b3M9ImZyZWVic2QiCi0rICBbICIkUE9MX09TIiA9ICJNYWMiIF0gJiYgd29zPSJkYXJ3aW4iCi0r Ci0rICBpZiBbICEgLUwgIiRQT0xfVVNFUl9ST09UL3dpbmUvJHdvcy0kYXJjaC8kd2luZV92ZXJz aW9uL3NoYXJlL3dpbmUvJHJlc291cmNlIiBdOyB0aGVuCi0rICAgIFBPTF9EZWJ1Z19NZXNzYWdl ICJMaW5raW5nICRyZXNvdXJjZSIKLSsgICAgbG4gLXMgIiRQT0xfVVNFUl9ST09UL3dpbmUvJHJl c291cmNlLyIgIiRQT0xfVVNFUl9ST09UL3dpbmUvJHdvcy0kYXJjaC8kd2luZV92ZXJzaW9uL3No YXJlL3dpbmUvJHJlc291cmNlIgotKyAgZmkKLSsgIGlmIFsgIiRmb3VuZCIgXTsgdGhlbgotKyAg ICByZXNvdXJjZXg4Nj0iJChjdXQgLWQgJzsnIC1mMiA8PDwkZm91bmQpIgotKyAgICByZXNvdXJj ZWFtZDY0PSIkKGN1dCAtZCAnOycgLWYzIDw8PCRmb3VuZCkiCi0rICAgIG1kNXg4Nj0iJChjdXQg LWQgJzsnIC1mNCA8PDwkZm91bmQpIgotKyAgICBtZDVhbWQ2ND0iJChjdXQgLWQgJzsnIC1mNSA8 PDwkZm91bmQpIgotKwotKyAgICBjZCAiJHJlc291cmNlX2RpciIKLSsgICAgaWYgWyAiJHJlc291 cmNleDg2IiBdOyB0aGVuCi0rICAgICAgaWYgWyAtZSAiJHJlc291cmNleDg2IiBdOyB0aGVuCi0r ICAgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiJHJlc291cmNleDg2IGFscmVhZHkgaW5zdGFsbGVk LiBTa2lwcGluZyIKLSsgICAgICBlbHNlCi0rICAgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiSW5z dGFsbGluZyAkcmVzb3VyY2V4ODYiCi0rICAgICAgICBQT0xfRG93bmxvYWQgIiQocmVzb3VyY2Vf ZG93bmxvYWRfdXJsICRyZXNvdXJjZSB4ODYgJHJlc291cmNleDg2KSIgIiRtZDV4ODYiCi0rICAg ICAgZmkKLSsgICAgZmkKLSsKLSsgICAgaWYgWyAiJGFyY2giID0gImFtZDY0IiBdOyB0aGVuCi0r ICAgICAgaWYgWyAiJHJlc291cmNlYW1kNjQiIF07IHRoZW4KLSsgICAgICAgIGlmIFsgLWUgIiRy ZXNvdXJjZWFtZDY0IiBdOyB0aGVuCi0rICAgICAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICIkcmVz b3VyY2VhbWQ2NCBhbHJlYWR5IGluc3RhbGxlZC4gU2tpcHBpbmciCi0rICAgICAgICBlbHNlCi0r ICAgICAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJJbnN0YWxsaW5nICRyZXNvdXJjZWFtZDY0Igot KyAgICAgICAgICBQT0xfRG93bmxvYWQgIiQocmVzb3VyY2VfZG93bmxvYWRfdXJsICRyZXNvdXJj ZSBhbWQ2NCAkcmVzb3VyY2VhbWQ2NCkiICIkbWQ1YW1kNjQiCi0rICAgICAgICBmaQotKyAgICAg IGZpCi0rICAgIGZpCi0rICBmaQotIH0KLS1yZXNvdXJjZV9kb3dubG9hZF91cmwoKQotLXsKLS0J IyByZXNvdXJjZV9kb3dubG9hZF91cmwgKGdlY2tvfG1vbm8pIFsgQXJjaCBdIFsgRmlsZW5hbWUg XQotLQlpZiBbICIkMSIgPSAiZ2Vja28iIF07IHRoZW4KLS0JCWVjaG8gIiRHRUNLT19TSVRFLyQy LyQzIgotLQlmaQotLQlpZiBbICIkMSIgPSAibW9ubyIgXTsgdGhlbgotLSMJCWxvY2FsIHZlcnNp b249IiR7MyUubXNpfSIKLS0jCQl2ZXJzaW9uPSIke3ZlcnNpb24jd2luZS1tb25vLX0iCi0tIwkJ ZWNobyAiaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3dpbmVtb25vLnBocD92PSR7dmVyc2lvbn0i Ci0tIwkJZWNobyAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvd2luZS8kMyIKLS0j CQllY2hvICIkTU9OT19TSVRFLyQyLyQzIgotLQkJZWNobyAiJE1PTk9fU0lURS8kMyIKLS0JZmkK LStyZXNvdXJjZV9kb3dubG9hZF91cmwoKSB7Ci0rICAjIHJlc291cmNlX2Rvd25sb2FkX3VybCAo Z2Vja298bW9ubykgWyBBcmNoIF0gWyBGaWxlbmFtZSBdCi0rICBpZiBbICIkMSIgPSAiZ2Vja28i IF07IHRoZW4KLSsgICAgZWNobyAiJEdFQ0tPX1NJVEUvJDIvJDMiCi0rICBmaQotKyAgaWYgWyAi JDEiID0gIm1vbm8iIF07IHRoZW4KLSsgICAgIwkJbG9jYWwgdmVyc2lvbj0iJHszJS5tc2l9Igot KyAgICAjCQl2ZXJzaW9uPSIke3ZlcnNpb24jd2luZS1tb25vLX0iCi0rICAgICMJCWVjaG8gImh0 dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy93aW5lbW9uby5waHA/dj0ke3ZlcnNpb259IgotKyAgICAj CQllY2hvICJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC93aW5lLyQzIgotKyAgICAj CQllY2hvICIkTU9OT19TSVRFLyQyLyQzIgotKyAgICBlY2hvICIkTU9OT19TSVRFLyQzIgotKyAg ZmkKLSB9Ci0tUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYoKQotLXsKLS0JIyBHZXQgdGhlIGN1 cnJlbnQgcHJlZml4J3MgdmVyc2lvbiBhbmQgc2V0IFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUK LS0JIyBVc2FnZTogUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKLS0JWyAiJFdJTkVQUkVGSVgi ID0gIiIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggaXMgbm90IHNldCEiCi0tCVBP TF9XSU5FVkVSU0lPTj0iJChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgIlZFUlNJT04iKSIKLS0JUE9M X0FSQ0g9IiQoUE9MX0NvbmZpZ19QcmVmaXhSZWFkICJBUkNIIikiCi0tCVsgIiRQT0xfV0lORVZF UlNJT04iID0gIiIgXSB8fCBQT0xfV2luZV9TZXRWZXJzaW9uRW52Ci0rUE9MX1dpbmVfQXV0b1Nl dFZlcnNpb25FbnYoKSB7Ci0rICAjIEdldCB0aGUgY3VycmVudCBwcmVmaXgncyB2ZXJzaW9uIGFu ZCBzZXQgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZQotKyAgIyBVc2FnZTogUE9MX1dpbmVfQXV0 b1NldFZlcnNpb25FbnYKLSsgIFsgIiRXSU5FUFJFRklYIiA9ICIiIF0gJiYgUE9MX0RlYnVnX0Zh dGFsICJXSU5FUFJFRklYIGlzIG5vdCBzZXQhIgotKyAgUE9MX1dJTkVWRVJTSU9OPSIkKFBPTF9D b25maWdfUHJlZml4UmVhZCAiVkVSU0lPTiIpIgotKyAgUE9MX0FSQ0g9IiQoUE9MX0NvbmZpZ19Q cmVmaXhSZWFkICJBUkNIIikiCi0rICBbICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF0gfHwgUE9M X1dpbmVfU2V0VmVyc2lvbkVudgotIH0KLS1QT0xfV2luZV9TZXRWZXJzaW9uRW52KCkKLS17Ci0t CSMgVXNhZ2U6IFBPTF9XaW5lX1NldFdpbmVWZXJzaW9uIFtWRVJTSU9OXQotLQkjIEdldCBmaXJz dCBhcmd1bWVudCdzIHdpbmUgdmVyc2lvbiBhbmQgc2V0IFBBVEggZW52aXJvbm1lbnQgdmFyaWFi bGUKLS0JWyAhICIkMSIgPSAiIiBdICYmIGV4cG9ydCBQT0xfV0lORVZFUlNJT049IiQxIgotLQlb ICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF0gJiYgUE9MX0RlYnVnX1dhcm5pbmcgIk5vIFBPTF9X SU5FVkVSU0lPTiBzZXQsIGFzc3VtaW5nIGl0IGlzIHJlc2V0IgotLQlbICIkUE9MX1dJTkVWRVJT SU9OIiA9ICIiIF0gJiYgZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iLS1yZXNldCIKLS0JaWYgWyAh ICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF0KLS0JdGhlbgotLQkJWyAiJFBPTF9BUkNIIiA9ICIi IF0gJiYgUE9MX1N5c3RlbV9TZXRBcmNoICJhdXRvIgotLQkJI1BPTF9EZWJ1Z19NZXNzYWdlICJT ZXR0aW5nIHdpbmUgdmVyc2lvbiBwYXRoOiAkUE9MX1dJTkVWRVJTSU9OLCAkUE9MX0FSQ0giCi0t CQlbICIkUE9MX09TIiA9ICJNYWMiIF0gJiYgQVJDSF9QUkVGSVg9ImRhcndpbiIKLS0JCVsgIiRQ T0xfT1MiID0gIkZyZWVCU0QiIF0gJiYgQVJDSF9QUkVGSVg9ImZyZWVic2QiCi0tCQlbICIkUE9M X09TIiA9ICJMaW51eCIgXSAmJiBBUkNIX1BSRUZJWD0ibGludXgiCi0tCQlPTERQQVRIPSIkUFdE IgotLQkJV0lORURJUj0iJFBPTF9VU0VSX1JPT1Qvd2luZS8kQVJDSF9QUkVGSVgtJFBPTF9BUkNI IgotLQkJbWtkaXIgLXAgIiRXSU5FRElSIgotLQkJY2QgIiRXSU5FRElSIgotLQotLQkJaWYgWyAi JFBPTF9XSU5FVkVSU0lPTiIgPSAiLS1yZXNldCIgXQotLQkJdGhlbgotLQkJCWV4cG9ydCBQQVRI PSIkUEFUSF9PUklHSU4iCi0tCQkJZXhwb3J0IExEX0xJQlJBUllfUEFUSD0iJExEX1BBVEhfT1JJ R0lOIgotLQkJCVsgIiRQT0xfT1MiID0gIkZyZWVCU0QiIF0gJiYgZXhwb3J0IExEXzMyX0xJQlJB UllfUEFUSD0iJExEXzMyX1BBVEhfT1JJR0lOIgotLQkJCWV4cG9ydCBQT0xfV0lORVZFUlNJT049 IiIKLS0JCWVsc2UKLS0JCQlpZiBbICEgLWUgIiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04iIF0K LS0JCQl0aGVuCi0tCQkJCVBPTF9EZWJ1Z19NZXNzYWdlICJXaW5lICRQT0xfV0lORVZFUlNJT04g bm90IGluc3RhbGxlZC4gSW5zdGFsbGluZyBpdCIKLS0JCSAJCVBPTF9XaW5lX0luc3RhbGxWZXJz aW9uICIkUE9MX1dJTkVWRVJTSU9OIgotLQkJCWZpCi0tCQkJZXhwb3J0IFBBVEg9IiRXSU5FRElS LyRQT0xfV0lORVZFUlNJT04vYmluLzokUEFUSCIKLS0JCQlbICIkUE9MX09TIiA9ICJNYWMiIF0g JiYgZXhwb3J0IERZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIPSIkV0lORURJUi8kUE9MX1dJTkVW RVJTSU9OL2xpYi8iCi0tCQkJZXhwb3J0IEZSRUVUWVBFX1BST1BFUlRJRVM9InRydWV0eXBlOmlu dGVycHJldGVyLXZlcnNpb249MzUiCi0tCQkJZXhwb3J0IExEX0xJQlJBUllfUEFUSD0iJFdJTkVE SVIvJFBPTF9XSU5FVkVSU0lPTi9saWIvOiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04vbGliNjQv OiRMRF9MSUJSQVJZX1BBVEgiCi0tCQkJWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIgXSAmJiBleHBv cnQgTERfMzJfTElCUkFSWV9QQVRIPSIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2xpYi86JExE XzMyX0xJQlJBUllfUEFUSCIKLS0JCWZpCi0tCWVsc2UKLS0JCWlmIFsgIiRQT0xfT1MiID0gIk1h YyIgXTsgdGhlbgotLQkJCVsgIiREWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCIgPSAiIiBdICYm IGV4cG9ydCBEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSD0iJFJFU09VUkNFUEFUSC91bml4L3dp bmUvbGliLyIKLS0JCWZpCi0tCWZpCi0tCWNkICIkT0xEUEFUSCIKLStQT0xfV2luZV9TZXRWZXJz aW9uRW52KCkgewotKyAgIyBVc2FnZTogUE9MX1dpbmVfU2V0V2luZVZlcnNpb24gW1ZFUlNJT05d Ci0rICAjIEdldCBmaXJzdCBhcmd1bWVudCdzIHdpbmUgdmVyc2lvbiBhbmQgc2V0IFBBVEggZW52 aXJvbm1lbnQgdmFyaWFibGUKLSsgIFsgISAiJDEiID0gIiIgXSAmJiBleHBvcnQgUE9MX1dJTkVW RVJTSU9OPSIkMSIKLSsgIFsgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXSAmJiBQT0xfRGVidWdf V2FybmluZyAiTm8gUE9MX1dJTkVWRVJTSU9OIHNldCwgYXNzdW1pbmcgaXQgaXMgcmVzZXQiCi0r ICBbICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF0gJiYgZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0i LS1yZXNldCIKLSsgIGlmIFsgISAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdOyB0aGVuCi0rICAg IFsgIiRQT0xfQVJDSCIgPSAiIiBdICYmIFBPTF9TeXN0ZW1fU2V0QXJjaCAiYXV0byIKLSsgICAg I1BPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgdmVyc2lvbiBwYXRoOiAkUE9MX1dJTkVW RVJTSU9OLCAkUE9MX0FSQ0giCi0rICAgIFsgIiRQT0xfT1MiID0gIk1hYyIgXSAmJiBBUkNIX1BS RUZJWD0iZGFyd2luIgotKyAgICBbICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdICYmIEFSQ0hfUFJF RklYPSJmcmVlYnNkIgotKyAgICBbICIkUE9MX09TIiA9ICJMaW51eCIgXSAmJiBBUkNIX1BSRUZJ WD0ibGludXgiCi0rICAgIE9MRFBBVEg9IiRQV0QiCi0rICAgIFdJTkVESVI9IiRQT0xfVVNFUl9S T09UL3dpbmUvJEFSQ0hfUFJFRklYLSRQT0xfQVJDSCIKLSsgICAgbWtkaXIgLXAgIiRXSU5FRElS IgotKyAgICBjZCAiJFdJTkVESVIiCi0rCi0rICAgIGlmIFsgIiRQT0xfV0lORVZFUlNJT04iID0g Ii0tcmVzZXQiIF07IHRoZW4KLSsgICAgICBleHBvcnQgUEFUSD0iJFBBVEhfT1JJR0lOIgotKyAg ICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiRMRF9QQVRIX09SSUdJTiIKLSsgICAgICBbICIk UE9MX09TIiA9ICJGcmVlQlNEIiBdICYmIGV4cG9ydCBMRF8zMl9MSUJSQVJZX1BBVEg9IiRMRF8z Ml9QQVRIX09SSUdJTiIKLSsgICAgICBleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIiCi0rICAgIGVs c2UKLSsgICAgICBpZiBbICEgLWUgIiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04iIF07IHRoZW4K LSsgICAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJXaW5lICRQT0xfV0lORVZFUlNJT04gbm90IGlu c3RhbGxlZC4gSW5zdGFsbGluZyBpdCIKLSsgICAgICAgIFBPTF9XaW5lX0luc3RhbGxWZXJzaW9u ICIkUE9MX1dJTkVWRVJTSU9OIgotKyAgICAgICAgW1sgIiQ/IiA9PSAyIF1dICYmIHJldHVybiAw Ci0rICAgICAgZmkKLSsgICAgICBlY2hvICJTZXR0aW5nIHBhdGhzLi4uIgotKyAgICAgIGV4cG9y dCBQQVRIPSIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2Jpbi86JFBBVEgiCi0rICAgICAgWyAi JFBPTF9PUyIgPSAiTWFjIiBdICYmIGV4cG9ydCBEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSD0i JFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTi9saWIvIgotKyAgICAgIGV4cG9ydCBGUkVFVFlQRV9Q Uk9QRVJUSUVTPSJ0cnVldHlwZTppbnRlcnByZXRlci12ZXJzaW9uPTM1IgotKyAgICAgIGV4cG9y dCBMRF9MSUJSQVJZX1BBVEg9IiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04vbGliLzokV0lORURJ Ui8kUE9MX1dJTkVWRVJTSU9OL2xpYjY0LzokTERfTElCUkFSWV9QQVRIIgotKyAgICAgIFsgIiRQ T0xfT1MiID0gIkZyZWVCU0QiIF0gJiYgZXhwb3J0IExEXzMyX0xJQlJBUllfUEFUSD0iJFdJTkVE SVIvJFBPTF9XSU5FVkVSU0lPTi9saWIvOiRMRF8zMl9MSUJSQVJZX1BBVEgiCi0rICAgIGZpCi0r ICBlbHNlCi0rICAgIGlmIFsgIiRQT0xfT1MiID0gIk1hYyIgXTsgdGhlbgotKyAgICAgIFsgIiRE WUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCIgPSAiIiBdICYmIGV4cG9ydCBEWUxEX0ZBTExCQUNL X0xJQlJBUllfUEFUSD0iJFJFU09VUkNFUEFUSC91bml4L3dpbmUvbGliLyIKLSsgICAgZmkKLSsg IGZpCi0rICBjZCAiJE9MRFBBVEgiCi0gfQotLVBPTF9XaW5lX1NldFZlcnNpb25QcmVmaXgoKQot LXsKLS0JIyBVc2FnZTogUE9MX1dpbmVfU2V0VmVyc2lvblByZWZpeCBbVkVSU0lPTl0KLS0JIyBD aGFuZ2UgYSBwcmVmaXggd2luZSB2ZXJzaW9uCi0tCVsgISAiJDEiID0gIiIgXSAmJiBleHBvcnQg UE9MX1dJTkVWRVJTSU9OPSIkMSIKLS0JWyAiJFdJTkVQUkVGSVgiID0gIiIgXSAmJiBQT0xfRGVi dWdfRmF0YWwgIldJTkVQUkVGSVggaXMgbm90IHNldCEiCi0tCi0tCVBPTF9Db25maWdfUHJlZml4 V3JpdGUgIlZFUlNJT04iICIkUE9MX1dJTkVWRVJTSU9OIgotK1BPTF9XaW5lX1NldFZlcnNpb25Q cmVmaXgoKSB7Ci0rICAjIFVzYWdlOiBQT0xfV2luZV9TZXRWZXJzaW9uUHJlZml4IFtWRVJTSU9O XQotKyAgIyBDaGFuZ2UgYSBwcmVmaXggd2luZSB2ZXJzaW9uCi0rICBbICEgIiQxIiA9ICIiIF0g JiYgZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCi0rICBbICIkV0lORVBSRUZJWCIgPSAiIiBd ICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBpcyBub3Qgc2V0ISIKLSsKLSsgIFBPTF9D b25maWdfUHJlZml4V3JpdGUgIlZFUlNJT04iICIkUE9MX1dJTkVWRVJTSU9OIgotIH0KLS1QT0xf V2luZV9QcmVmaXhEZWxldGUoKQotLXsKLS0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0Rl YnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0tIAlsb2NhbCB3aW5lcHJlZml4PSIkV0lO RVBSRUZJWCIKLS0Jd2luZXByZWZpeD0ke3dpbmVwcmVmaXgvLyIvLyIvIi8ifQotLQlsb2NhbCBz aG9ydGN1dHM9KCkKLS0JbG9jYWwgT0xESUZTPSIkSUZTIgotLQlJRlM9JCdcbicKLS0JY2QgIiRQ T0xfVVNFUl9ST09UL3Nob3J0Y3V0cy8iICYmCi0tCWZvciBzaG9ydGN1dCBpbiAqCi0tCWRvCi0t CQlbICIkKGRldGVjdF93aW5lcHJlZml4ICIkc2hvcnRjdXQiKSIgPSAiJHdpbmVwcmVmaXgiIF0g JiYgc2hvcnRjdXRzKz0oIiRzaG9ydGN1dCIpCi0tCWRvbmUKLS0JSUZTPSIkT0xESUZTIgotLQot LQkjIGNmIE1haW5XaW5kb3cuRGVsZXRlUHJlZml4KCkKLS0JUE9MX1NldHVwV2luZG93X3dhaXRf bmV4dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0ICdVbmluc3RhbGxpbmcuLi4nKSIgIiQoZXZhbF9n ZXR0ZXh0ICckQVBQTElDQVRJT05fVElUTEUgVW5pbnN0YWxsZXInKSIKLS0JaWYgWyAiJHsjc2hv cnRjdXRzW0BdfSIgLWd0IDAgXTsgdGhlbgotLSAJCVBPTF9EZWJ1Z19XYXJuaW5nICIkd2luZXBy ZWZpeCBpcyBzdGlsbCBpbiB1c2UgYnkgJHsjc2hvcnRjdXRzW0BdfSBzaG9ydGN1dHMsIHJlbW92 aW5nIHRoZW0gZmlyc3QiCi0tCQlmb3Igc2hvcnRjdXQgaW4gIiR7c2hvcnRjdXRzW0BdfSI7IGRv Ci0tCQkJUE9MX0RlYnVnX01lc3NhZ2UgIlJlbW92aW5nIHNob3J0Y3V0ICRzaG9ydGN1dC4uLiIK LS0JCQliYXNoICIkUExBWU9OTElOVVgvYmFzaC91bmluc3RhbGwiIC0tbm9uLWludGVyYWN0aXZl ICIkc2hvcnRjdXQiCi0tCQlkb25lCi0tCWZpCi0tCi0tICAgICAgICBjbGVhbl93aW5lcHJlZml4 IC0tbm9uLWludGVyYWN0aXZlICIkV0lORVBSRUZJWCIKLStQT0xfV2luZV9QcmVmaXhEZWxldGUo KSB7Ci0rICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVG SVggbm90IHNldCIKLSsgIGxvY2FsIHdpbmVwcmVmaXg9IiRXSU5FUFJFRklYIgotKyAgd2luZXBy ZWZpeD0ke3dpbmVwcmVmaXgvLyIvLyIvIi8ifQotKyAgbG9jYWwgc2hvcnRjdXRzPSgpCi0rICBs b2NhbCBPTERJRlM9IiRJRlMiCi0rICBJRlM9JCdcbicKLSsgIGNkICIkUE9MX1VTRVJfUk9PVC9z aG9ydGN1dHMvIiAmJgotKyAgICBmb3Igc2hvcnRjdXQgaW4gKjsgZG8KLSsgICAgICBbICIkKGRl dGVjdF93aW5lcHJlZml4ICIkc2hvcnRjdXQiKSIgPSAiJHdpbmVwcmVmaXgiIF0gJiYgc2hvcnRj dXRzKz0oIiRzaG9ydGN1dCIpCi0rICAgIGRvbmUKLSsgIElGUz0iJE9MRElGUyIKLSsKLSsgICMg Y2YgTWFpbldpbmRvdy5EZWxldGVQcmVmaXgoKQotKyAgUE9MX1NldHVwV2luZG93X3dhaXRfbmV4 dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0ICdVbmluc3RhbGxpbmcuLi4nKSIgIiQoZXZhbF9nZXR0 ZXh0ICckQVBQTElDQVRJT05fVElUTEUgVW5pbnN0YWxsZXInKSIKLSsgIGlmIFsgIiR7I3Nob3J0 Y3V0c1tAXX0iIC1ndCAwIF07IHRoZW4KLSsgICAgUE9MX0RlYnVnX1dhcm5pbmcgIiR3aW5lcHJl Zml4IGlzIHN0aWxsIGluIHVzZSBieSAkeyNzaG9ydGN1dHNbQF19IHNob3J0Y3V0cywgcmVtb3Zp bmcgdGhlbSBmaXJzdCIKLSsgICAgZm9yIHNob3J0Y3V0IGluICIke3Nob3J0Y3V0c1tAXX0iOyBk bwotKyAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJSZW1vdmluZyBzaG9ydGN1dCAkc2hvcnRjdXQu Li4iCi0rICAgICAgYmFzaCAiJFBMQVlPTkxJTlVYL2Jhc2gvdW5pbnN0YWxsIiAtLW5vbi1pbnRl cmFjdGl2ZSAiJHNob3J0Y3V0IgotKyAgICBkb25lCi0rICBmaQotKwotKyAgY2xlYW5fd2luZXBy ZWZpeCAtLW5vbi1pbnRlcmFjdGl2ZSAiJFdJTkVQUkVGSVgiCi0gfQotLVBPTF9XaW5lX1ByZWZp eENyZWF0ZSgpCi0tewotLQkjIENyZWF0ZSBhIHdpbmVwcmVmaXgKLS0JIyBVc2FnZTogUE9MX1dp bmVfUHJlZml4Q3JlYXRlIFtWRVJTSU9OXQotLQlpZiBbICEgIiQxIiA9ICIiIF07IHRoZW4KLS0J CVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFBPTF9XSU5FVkVSU0lPTiB0byAkMSIKLS0JCWV4 cG9ydCBQT0xfV0lORVZFUlNJT049IiQxIgotLQllbGlmIFsgIiRQT0xfV0lORVZFUlNJT04iIF07 IHRoZW4KLS0JCVBPTF9EZWJ1Z19NZXNzYWdlICJQT0xfV0lORVZFUlNJT04gaXMgYWxyZWFkeSBz ZXQgdG8gJFBPTF9XSU5FVkVSU0lPTi4gVXNpbmcgaXQiCi0tCWVsc2UKLS0JCVBPTF9EZWJ1Z19N ZXNzYWdlICJObyB2ZXJzaW9uIHNwZWNpZmllZC4gVXNpbmcgc3lzdGVtIHZlcnNpb24gKCQod2lu ZSAtLXZlcnNpb24pKSIKLS0JZmkKLS0KLS0JUE9MX0RlYnVnX01lc3NhZ2UgIkNyZWF0aW5nIHBy ZWZpeCAoJFBPTF9XSU5FVkVSU0lPTikuLi4iCi0tCVsgIiRQT0xfQVJDSCIgPSAiIiBdICYmIFBP TF9TeXN0ZW1fU2V0QXJjaCAiYXV0byIKLS0JWyAiJFdJTkVQUkVGSVgiID0gIiIgXSAmJiBQT0xf RGVidWdfRmF0YWwgIldJTkVQUkVGSVggaXMgbm90IHNldCEiCi0tCi0tCWlmIFsgLWUgIiRXSU5F UFJFRklYIiBdOyB0aGVuCi0tCQlQT0xfRGVidWdfTWVzc2FnZSAiUHJlZml4IGFscmVhZHkgZXhp c3RzIgotLQkJTE5HX09WRVJXUklURT0iJChldmFsX2dldHRleHQgJ092ZXJ3cml0ZSAodXN1YWxs eSB3b3Jrcywgbm8gZ3VhcmFudGVlKScpIgotLQkJTE5HX0VSQVNFPSIkKGV2YWxfZ2V0dGV4dCAn RXJhc2UgKHZpcnR1YWwgZHJpdmUgY29udGVudCB3aWxsIGJlIGxvc3QpJykiCi0tCQlMTkdfQUJP UlQ9IiQoZXZhbF9nZXR0ZXh0ICdBYm9ydCBpbnN0YWxsYXRpb24nKSIKLS0KLS0JCU9MRF9BUkNI PSIiCi0tCQlbIC1lICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5jZmciIF0gJiYgT0xEX0FSQ0g9 JChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgIkFSQ0giKQotLQkJaWYgWyAiJE9MRF9BUkNIIiA9ICIk UE9MX1VTRVJfQVJDSCIgXTsgdGhlbgotLQkJCVBSRUZJWF9DSE9JQ0VTPSIkTE5HX09WRVJXUklU RX4kTE5HX0VSQVNFfiRMTkdfQUJPUlQiCi0tCQllbHNlCi0tCQkJIyBTZXR0aW5ncyBhcmUgbm90 IGNvbXBhdGlibGUsIG92ZXJ3cml0aW5nIGlzIG5vdCBhbiBvcHRpb24KLS0JCQlQUkVGSVhfQ0hP SUNFUz0iJExOR19FUkFTRX4kTE5HX0FCT1JUIgotLQkJZmkKLS0KLS0JCU9MRF9BUFBfQU5XU0VS PSIkQVBQX0FOU1dFUiIKLS0JCVBSRUZOQU1FPSIkKGJhc2VuYW1lICRXSU5FUFJFRklYKSIKLS0J CVBPTF9TZXR1cFdpbmRvd19tZW51ICIkKGV2YWxfZ2V0dGV4dCAnVGhlIHRhcmdldCB2aXJ0dWFs IGRyaXZlICRQUkVGTkFNRSBhbHJlYWR5IGV4aXN0czonKSIgIiRUSVRMRSIgIiRQUkVGSVhfQ0hP SUNFUyIgIn4iCi0tCQljYXNlICIkQVBQX0FOU1dFUiIgaW4KLS0JCQkiJExOR19PVkVSV1JJVEUi KQotLQkJCQkjIFByZWZpeCBjb250ZW50IGlzIG5vdCByZXByb2R1Y2libGUsIGl0J3MgdGVtcHRp bmcgdG8gZGlzYWxsb3cgcmVwb3J0cwotLQkJCQkjIE5PQlVHUkVQT1JUPSJUUlVFIgotLQkJCQlQ T0xfRGVidWdfTWVzc2FnZSAiT3ZlcndyaXRlIFByZWZpeCIKLS0JCQkJIyBTaG91bGQgd2UgcmV2 ZXJ0IHdoYXQgaGFzIGJlZW4gYXV0b2RldGVjdGVkIGJ5IFNlbGVjdFByZWZpeCBoZXJlIHRvbz8K LS0JCQkJOzsKLS0JCQkiJExOR19FUkFTRSIpCi0tCQkJCVBPTF9EZWJ1Z19NZXNzYWdlICJFcmFz ZSBQcmVmaXgiCi0tCQkJCVBPTF9XaW5lX1ByZWZpeERlbGV0ZQotLQkJCQkjIFJldmVydCB3aGF0 IGNvdWxkIGhhdmUgYmVlbiBhdXRvZGV0ZWN0ZWQgd2l0aCBTZWxlY3RQcmVmaXgKLS0JCQkJUE9M X0FSQ0g9IiRQT0xfVVNFUl9BUkNIIgotLQkJCQk7OwotLQkJCSopCi0tCQkJCU5PQlVHUkVQT1JU PSJUUlVFIgotLQkJCQlQT0xfRGVidWdfRmF0YWwgIiQoZXZhbF9nZXR0ZXh0ICdVc2VyIGFib3J0 JykiCi0tCQkJCTs7Ci0tCQllc2FjCi0tCQlBUFBfQU5TV0VSPSIkT0xEX0FQUF9BTldTRVIiCi0t CWZpCi0tCi0tCVBPTF9TZXR1cFdpbmRvd193YWl0ICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdh aXQgd2hpbGUgdGhlIHZpcnR1YWwgZHJpdmUgaXMgYmVpbmcgY3JlYXRlZC4uLicpIiAiJFRJVExF IgotLQlpZiBbIC1lICIkV0lORVBSRUZJWCIgXTsgdGhlbgotLQkJdG91Y2ggIiRXSU5FUFJFRklY L3BsYXlvbmxpbnV4LmNmZyIKLS0JCWlmIFsgISAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdOyB0 aGVuCi0tCQkJUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgdmVyc2lvbiB0byAkUE9MX1dJTkVW RVJTSU9OIgotLQkJCVBPTF9XaW5lX1NldFZlcnNpb25QcmVmaXggIiRQT0xfV0lORVZFUlNJT04i Ci0tCQkJUE9MX1dpbmVfU2V0VmVyc2lvbkVudgotLQkJZmkKLS0JZWxzZQkjIFByZWZpeCBkb2Vz IG5vdCBleGl0LCBsZXQncyBjcmVhdGUgaXQKLS0JCWlmIFsgIiRQT0xfV0lORVZFUlNJT04iID0g IiIgXTsgdGhlbgotLQkJCSMgU3lzdGVtIHdpbmV2ZXJzaW9uCi0tCQkJIyMgUmVhbGx5IGJhZCBp ZGVhCi0tCQkJIyMgZXhwb3J0IFdJTkVBUkNIPXdpbjMyCi0tCQkJaWYgWyAhICIkUE9MX0FSQ0gi ID0gIiIgXTsgdGhlbgotLQkJCQlpZiBbICIkUE9MX0FSQ0giID0gIng4NiIgXTsgdGhlbgotLQkJ CQkJZXhwb3J0IFdJTkVBUkNIPXdpbjMyCi0tCQkJCWVsc2UKLS0JCQkJCWV4cG9ydCBXSU5FQVJD SD13aW42NAotLQkJCQlmaQotLQkJCQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBXSU5FQVJD SCB0byAkV0lORUFSQ0giCi0tCQkJZmkKLS0KLS0JCQl3aW5lIHdpbmVib290Ci0tCQkJUE9MX0Rl YnVnX0luaXRQcmVmaXgKLS0KLS0JCQlpZiBbIC1lICIkV0lORVBSRUZJWC9kcml2ZV9jL3dpbmRv d3Mvc3lzd293NjQiIF0gIyBJdCBpcyBhIDY0IGJpdHMgcHJlZml4Ci0tCQkJdGhlbgotLQkJCQlQ T0xfQ29uZmlnX1ByZWZpeFdyaXRlICJBUkNIIiAiYW1kNjQiCi0tCQkJCVBPTF9EZWJ1Z19Mb2dU b1ByZWZpeCAiVGhpcyBpcyBhIDY0Yml0cyBwcmVmaXghIgotLQkJCQlQT0xfQ29uZmlnX1dyaXRl IFdJTkVfU1lTVEVNX0FSQ0ggYW1kNjQKLS0JCQllbHNlCi0tCQkJCVBPTF9Db25maWdfUHJlZml4 V3JpdGUgIkFSQ0giICJ4ODYiCi0tCQkJCVBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAiVGhpcyBpcyBh IDMyYml0cyBwcmVmaXghIgotLQkJCQlQT0xfQ29uZmlnX1dyaXRlIFdJTkVfU1lTVEVNX0FSQ0gg eDg2Ci0tCQkJZmkKLS0JCWVsc2UKLS0JCQlta2RpciAtcCAiJFdJTkVQUkVGSVgiCi0tCQkJUE9M X0RlYnVnX01lc3NhZ2UgIlVzaW5nIHdpbmUgJFBPTF9XSU5FVkVSU0lPTiIKLS0JCQlQT0xfV2lu ZV9JbnN0YWxsVmVyc2lvbiAiJFBPTF9XSU5FVkVSU0lPTiIKLS0JCQlQT0xfU2V0dXBXaW5kb3df d2FpdCAiJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlIHRoZSB2aXJ0dWFsIGRyaXZl IGlzIGJlaW5nIGNyZWF0ZWQuLi4nKSIgIiRUSVRMRSIKLS0JCQlQT0xfQ29uZmlnX1ByZWZpeFdy aXRlICJBUkNIIiAiJFBPTF9BUkNIIgotLQkJCVBPTF9Db25maWdfUHJlZml4V3JpdGUgIlZFUlNJ T04iICIkUE9MX1dJTkVWRVJTSU9OIgotLQkJCVBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52Ci0t Ci0tCQkJUE9MX0RlYnVnX0luaXRQcmVmaXgKLS0KLS0JCQl3aGljaCB3aW5lcHJlZml4Y3JlYXRl ICYmIFsgIiQoUE9MX01ENV9maWxlICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUpIikiICE9ICI1 YzBlZTkwNjgyNzQ2ZTgxMTY5OGE1MzQxNWI0NzY1ZCIgXSAmJiBbICEgIiQod2hpY2ggd2luZXBy ZWZpeGNyZWF0ZSB8IGdyZXAgJEFQUExJQ0FUSU9OX1RJVExFKSIgPSAiIiBdICYmIHdpbmUgd2lu ZXByZWZpeGNyZWF0ZQotLQkJCXdpbmUgd2luZWJvb3QKLS0JCWZpCi0tCWZpCi0tCi0tCSMgTWFr ZSBzdXJlIHRoYXQgLnJlZyBmaWxlcyBhcmUgY3JlYXRlZAotLQlpZiB3aGljaCB3aW5lc2VydmVy OyB0aGVuCi0tCQl3aW5lc2VydmVyIC13Ci0tCWVsc2UKLS0JCVBPTF9EZWJ1Z19NZXNzYWdlICJX YXJuaW5nLCB3aW5lc2VydmVyIG5vdCBmb3VuZCIKLS0JCXNsZWVwIDQKLS0JZmkKLS0JUE9MX0xv YWRWYXJfUFJPR1JBTUZJTEVTCi0tCVsgLWUgIiRQT0xfVVNFUl9ST09UL2NvbmZpZ3VyYXRpb25z L3Bvc3RfcHJlZml4Y3JlYXRlIiBdICYmIFwKLS0JICAgIHNvdXJjZSAiJFBPTF9VU0VSX1JPT1Qv Y29uZmlndXJhdGlvbnMvcG9zdF9wcmVmaXhjcmVhdGUiCi0rUE9MX1dpbmVfUHJlZml4Q3JlYXRl KCkgewotKyAgIyBDcmVhdGUgYSB3aW5lcHJlZml4Ci0rICAjIFVzYWdlOiBQT0xfV2luZV9QcmVm aXhDcmVhdGUgW1ZFUlNJT05dCi0rICBpZiBbICEgIiQxIiA9ICIiIF07IHRoZW4KLSsgICAgUE9M X0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgUE9MX1dJTkVWRVJTSU9OIHRvICQxIgotKyAgICBleHBv cnQgUE9MX1dJTkVWRVJTSU9OPSIkMSIKLSsgIGVsaWYgWyAiJFBPTF9XSU5FVkVSU0lPTiIgXTsg dGhlbgotKyAgICBQT0xfRGVidWdfTWVzc2FnZSAiUE9MX1dJTkVWRVJTSU9OIGlzIGFscmVhZHkg c2V0IHRvICRQT0xfV0lORVZFUlNJT04uIFVzaW5nIGl0IgotKyAgZWxzZQotKyAgICBQT0xfRGVi dWdfTWVzc2FnZSAiTm8gdmVyc2lvbiBzcGVjaWZpZWQuIFVzaW5nIHN5c3RlbSB2ZXJzaW9uICgk KHdpbmUgLS12ZXJzaW9uKSkiCi0rICBmaQotKwotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkNyZWF0 aW5nIHByZWZpeCAoJFBPTF9XSU5FVkVSU0lPTikuLi4iCi0rICBbICIkUE9MX0FSQ0giID0gIiIg XSAmJiBQT0xfU3lzdGVtX1NldEFyY2ggImF1dG8iCi0rICBbICIkV0lORVBSRUZJWCIgPSAiIiBd ICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBpcyBub3Qgc2V0ISIKLSsKLSsgIGlmIFsg LWUgIiRXSU5FUFJFRklYIiBdOyB0aGVuCi0rICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJQcmVmaXgg YWxyZWFkeSBleGlzdHMiCi0rICAgIExOR19PVkVSV1JJVEU9IiQoZXZhbF9nZXR0ZXh0ICdPdmVy d3JpdGUgKHVzdWFsbHkgd29ya3MsIG5vIGd1YXJhbnRlZSknKSIKLSsgICAgTE5HX0VSQVNFPSIk KGV2YWxfZ2V0dGV4dCAnRXJhc2UgKHZpcnR1YWwgZHJpdmUgY29udGVudCB3aWxsIGJlIGxvc3Qp JykiCi0rICAgIExOR19BQk9SVD0iJChldmFsX2dldHRleHQgJ0Fib3J0IGluc3RhbGxhdGlvbicp IgotKwotKyAgICBPTERfQVJDSD0iIgotKyAgICBbIC1lICIkV0lORVBSRUZJWC9wbGF5b25saW51 eC5jZmciIF0gJiYgT0xEX0FSQ0g9JChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgIkFSQ0giKQotKyAg ICBpZiBbICIkT0xEX0FSQ0giID0gIiRQT0xfVVNFUl9BUkNIIiBdOyB0aGVuCi0rICAgICAgUFJF RklYX0NIT0lDRVM9IiRMTkdfT1ZFUldSSVRFfiRMTkdfRVJBU0V+JExOR19BQk9SVCIKLSsgICAg ZWxzZQotKyAgICAgICMgU2V0dGluZ3MgYXJlIG5vdCBjb21wYXRpYmxlLCBvdmVyd3JpdGluZyBp cyBub3QgYW4gb3B0aW9uCi0rICAgICAgUFJFRklYX0NIT0lDRVM9IiRMTkdfRVJBU0V+JExOR19B Qk9SVCIKLSsgICAgZmkKLSsKLSsgICAgT0xEX0FQUF9BTldTRVI9IiRBUFBfQU5TV0VSIgotKyAg ICBQUkVGTkFNRT0iJChiYXNlbmFtZSAkV0lORVBSRUZJWCkiCi0rICAgIFBPTF9TZXR1cFdpbmRv d19tZW51ICIkKGV2YWxfZ2V0dGV4dCAnVGhlIHRhcmdldCB2aXJ0dWFsIGRyaXZlICRQUkVGTkFN RSBhbHJlYWR5IGV4aXN0czonKSIgIiRUSVRMRSIgIiRQUkVGSVhfQ0hPSUNFUyIgIn4iCi0rICAg IGNhc2UgIiRBUFBfQU5TV0VSIiBpbgotKyAgICAiJExOR19PVkVSV1JJVEUiKQotKyAgICAgICMg UHJlZml4IGNvbnRlbnQgaXMgbm90IHJlcHJvZHVjaWJsZSwgaXQncyB0ZW1wdGluZyB0byBkaXNh bGxvdyByZXBvcnRzCi0rICAgICAgIyBOT0JVR1JFUE9SVD0iVFJVRSIKLSsgICAgICBQT0xfRGVi dWdfTWVzc2FnZSAiT3ZlcndyaXRlIFByZWZpeCIKLSsgICAgICAjIFNob3VsZCB3ZSByZXZlcnQg d2hhdCBoYXMgYmVlbiBhdXRvZGV0ZWN0ZWQgYnkgU2VsZWN0UHJlZml4IGhlcmUgdG9vPwotKyAg ICAgIDs7Ci0rICAgICIkTE5HX0VSQVNFIikKLSsgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiRXJh c2UgUHJlZml4IgotKyAgICAgIFBPTF9XaW5lX1ByZWZpeERlbGV0ZQotKyAgICAgICMgUmV2ZXJ0 IHdoYXQgY291bGQgaGF2ZSBiZWVuIGF1dG9kZXRlY3RlZCB3aXRoIFNlbGVjdFByZWZpeAotKyAg ICAgIFBPTF9BUkNIPSIkUE9MX1VTRVJfQVJDSCIKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAg IE5PQlVHUkVQT1JUPSJUUlVFIgotKyAgICAgIFBPTF9EZWJ1Z19GYXRhbCAiJChldmFsX2dldHRl eHQgJ1VzZXIgYWJvcnQnKSIKLSsgICAgICA7OwotKyAgICBlc2FjCi0rICAgIEFQUF9BTlNXRVI9 IiRPTERfQVBQX0FOV1NFUiIKLSsgIGZpCi0rCi0rICBQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJChl dmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlIHRoZSB2aXJ0dWFsIGRyaXZlIGlzIGJlaW5n IGNyZWF0ZWQuLi4nKSIgIiRUSVRMRSIKLSsgIGlmIFsgLWUgIiRXSU5FUFJFRklYIiBdOyB0aGVu Ci0rICAgIHRvdWNoICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5jZmciCi0rICAgIGlmIFsgISAi JFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdOyB0aGVuCi0rICAgICAgUE9MX0RlYnVnX01lc3NhZ2Ug IlNldHRpbmcgdmVyc2lvbiB0byAkUE9MX1dJTkVWRVJTSU9OIgotKyAgICAgIFBPTF9XaW5lX1Nl dFZlcnNpb25QcmVmaXggIiRQT0xfV0lORVZFUlNJT04iCi0rICAgICAgUE9MX1dpbmVfU2V0VmVy c2lvbkVudgotKyAgICBmaQotKyAgZWxzZSAjIFByZWZpeCBkb2VzIG5vdCBleGl0LCBsZXQncyBj cmVhdGUgaXQKLSsgICAgaWYgWyAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdOyB0aGVuCi0rICAg ICAgIyBTeXN0ZW0gd2luZXZlcnNpb24KLSsgICAgICAjIyBSZWFsbHkgYmFkIGlkZWEKLSsgICAg ICAjIyBleHBvcnQgV0lORUFSQ0g9d2luMzIKLSsgICAgICBpZiBbICEgIiRQT0xfQVJDSCIgPSAi IiBdOyB0aGVuCi0rICAgICAgICBpZiBbICIkUE9MX0FSQ0giID0gIng4NiIgXTsgdGhlbgotKyAg ICAgICAgICBleHBvcnQgV0lORUFSQ0g9d2luMzIKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAg ZXhwb3J0IFdJTkVBUkNIPXdpbjY0Ci0rICAgICAgICBmaQotKyAgICAgICAgUE9MX0RlYnVnX01l c3NhZ2UgIlNldHRpbmcgV0lORUFSQ0ggdG8gJFdJTkVBUkNIIgotKyAgICAgIGZpCi0rCi0rICAg ICAgd2luZSB3aW5lYm9vdAotKyAgICAgIFBPTF9EZWJ1Z19Jbml0UHJlZml4Ci0rCi0rICAgICAg aWYgWyAtZSAiJFdJTkVQUkVGSVgvZHJpdmVfYy93aW5kb3dzL3N5c3dvdzY0IiBdOyB0aGVuICMg SXQgaXMgYSA2NCBiaXRzIHByZWZpeAotKyAgICAgICAgUE9MX0NvbmZpZ19QcmVmaXhXcml0ZSAi QVJDSCIgImFtZDY0IgotKyAgICAgICAgUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJUaGlzIGlzIGEg NjRiaXRzIHByZWZpeCEiCi0rICAgICAgICBQT0xfQ29uZmlnX1dyaXRlIFdJTkVfU1lTVEVNX0FS Q0ggYW1kNjQKLSsgICAgICBlbHNlCi0rICAgICAgICBQT0xfQ29uZmlnX1ByZWZpeFdyaXRlICJB UkNIIiAieDg2IgotKyAgICAgICAgUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJUaGlzIGlzIGEgMzJi aXRzIHByZWZpeCEiCi0rICAgICAgICBQT0xfQ29uZmlnX1dyaXRlIFdJTkVfU1lTVEVNX0FSQ0gg eDg2Ci0rICAgICAgZmkKLSsgICAgZWxzZQotKyAgICAgIG1rZGlyIC1wICIkV0lORVBSRUZJWCIK LSsgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiVXNpbmcgd2luZSAkUE9MX1dJTkVWRVJTSU9OIgot KyAgICAgIFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uICIkUE9MX1dJTkVWRVJTSU9OIgotKyAgICAg IGV4aXRDb2RlPSIkPyIKLSsgICAgICBQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJChldmFsX2dldHRl eHQgJ1BsZWFzZSB3YWl0IHdoaWxlIHRoZSB2aXJ0dWFsIGRyaXZlIGlzIGJlaW5nIGNyZWF0ZWQu Li4nKSIgIiRUSVRMRSIKLSsKLSsgICAgICBpZiBbWyAhICIkZXhpdENvZGUiID09ICIyIiBdXTsg dGhlbiAjIyBXaW5lIHZlcnNpb24gaXMgYWN0dWFsbHkgZm91bmQKLSsgICAgICAgIFBPTF9Db25m aWdfUHJlZml4V3JpdGUgIkFSQ0giICIkUE9MX0FSQ0giCi0rICAgICAgICBQT0xfQ29uZmlnX1By ZWZpeFdyaXRlICJWRVJTSU9OIiAiJFBPTF9XSU5FVkVSU0lPTiIKLSsgICAgICBmaQotKwotKyAg ICAgIFBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52Ci0rCi0rICAgICAgUE9MX0RlYnVnX0luaXRQ cmVmaXgKLSsKLSsgICAgICB3aGljaCB3aW5lcHJlZml4Y3JlYXRlICYmIFsgIiQoUE9MX01ENV9m aWxlICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUpIikiICE9ICI1YzBlZTkwNjgyNzQ2ZTgxMTY5 OGE1MzQxNWI0NzY1ZCIgXSAmJiBbICEgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSB8IGdyZXAg JEFQUExJQ0FUSU9OX1RJVExFKSIgPSAiIiBdICYmIHdpbmUgd2luZXByZWZpeGNyZWF0ZQotKyAg ICAgIHdpbmUgd2luZWJvb3QKLSsgICAgZmkKLSsgIGZpCi0rCi0rICAjIE1ha2Ugc3VyZSB0aGF0 IC5yZWcgZmlsZXMgYXJlIGNyZWF0ZWQKLSsgIGlmIHdoaWNoIHdpbmVzZXJ2ZXI7IHRoZW4KLSsg ICAgd2luZXNlcnZlciAtdwotKyAgZWxzZQotKyAgICBQT0xfRGVidWdfTWVzc2FnZSAiV2Fybmlu Zywgd2luZXNlcnZlciBub3QgZm91bmQiCi0rICAgIHNsZWVwIDQKLSsgIGZpCi0rICBQT0xfTG9h ZFZhcl9QUk9HUkFNRklMRVMKLSsgIFsgLWUgIiRQT0xfVVNFUl9ST09UL2NvbmZpZ3VyYXRpb25z L3Bvc3RfcHJlZml4Y3JlYXRlIiBdICYmCi0rICAgIHNvdXJjZSAiJFBPTF9VU0VSX1JPT1QvY29u ZmlndXJhdGlvbnMvcG9zdF9wcmVmaXhjcmVhdGUiCi0gfQotLVBPTF9XaW5lX092ZXJyaWRlRExM KCkKLS17Ci0tCSMgT3ZlcnJpZGUgRExMcwotLQlNT0RFPSQxCi0tCVsgIiRNT0RFIiA9ICJkaXNh YmxlZCIgXSAmJiB1bnNldCBNT0RFCi0tCXNoaWZ0Ci0tCi0tCShjYXQgPDwgJ0VPRicKLStQT0xf V2luZV9PdmVycmlkZURMTCgpIHsKLSsgICMgT3ZlcnJpZGUgRExMcwotKyAgTU9ERT0kMQotKyAg WyAiJE1PREUiID0gImRpc2FibGVkIiBdICYmIHVuc2V0IE1PREUKLSsgIHNoaWZ0Ci0rCi0rICAo Ci0rICAgIGNhdCA8PCdFT0YnCi0gUkVHRURJVDQKLSAKLSBbSEtFWV9DVVJSRU5UX1VTRVJcU29m dHdhcmVcV2luZVxEbGxPdmVycmlkZXNdCi0gRU9GCi0gCi0tCWZvciBETEwgaW4gIiRAIgotLQlk bwotLQkJZWNobyAiXCIqJERMTFwiPVwiJE1PREVcIiIKLS0JZG9uZSkgPiAiJFBPTF9VU0VSX1JP T1QvdG1wL292ZXJyaWRlLWRsbC5yZWciCi0rICAgIGZvciBETEwgaW4gIiRAIjsgZG8KLSsgICAg ICBlY2hvICJcIiokRExMXCI9XCIkTU9ERVwiIgotKyAgICBkb25lCi0rICApID4iJFBPTF9VU0VS X1JPT1QvdG1wL292ZXJyaWRlLWRsbC5yZWciCi0gCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJPdmVy cmlkaW5nIERMTHMiCi0tCVBPTF9TZXR1cFdpbmRvd193YWl0X25leHRfc2lnbmFsICIkKGV2YWxf Z2V0dGV4dCAnUGxlYXNlIHdhaXQuLi4nKSIgIiRUSVRMRSIKLS0JUE9MX1dpbmUgcmVnZWRpdCAi JFBPTF9VU0VSX1JPT1QvdG1wL292ZXJyaWRlLWRsbC5yZWciCi0tCXJtICIkUE9MX1VTRVJfUk9P VC90bXAvb3ZlcnJpZGUtZGxsLnJlZyIKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJPdmVycmlkaW5n IERMTHMiCi0rICBQT0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0X3NpZ25hbCAiJChldmFsX2dldHRl eHQgJ1BsZWFzZSB3YWl0Li4uJykiICIkVElUTEUiCi0rICBQT0xfV2luZSByZWdlZGl0ICIkUE9M X1VTRVJfUk9PVC90bXAvb3ZlcnJpZGUtZGxsLnJlZyIKLSsgIHJtICIkUE9MX1VTRVJfUk9PVC90 bXAvb3ZlcnJpZGUtZGxsLnJlZyIKLSB9Ci0tUE9MX1dpbmVfRGVsT3ZlcnJpZGVETEwoKQotLXsK LS0JIyBEZWxldGUgb3ZlcnJpZGUgRExMcwotLQkoY2F0IDw8ICdFT0YnCi0rUE9MX1dpbmVfRGVs T3ZlcnJpZGVETEwoKSB7Ci0rICAjIERlbGV0ZSBvdmVycmlkZSBETExzCi0rICAoCi0rICAgIGNh dCA8PCdFT0YnCi0gUkVHRURJVDQKLSAKLSBbSEtFWV9DVVJSRU5UX1VTRVJcU29mdHdhcmVcV2lu ZVxEbGxPdmVycmlkZXNdCi0gRU9GCi0gCi0tCWZvciBETEwgaW4gIiRAIgotLQlkbwotLQkJZWNo byAiXCIkRExMXCI9LSIKLS0JCWVjaG8gIlwiKiRETExcIj0tIgotLQlkb25lKSA+ICIkUE9MX1VT RVJfUk9PVC90bXAvZGVsLW92ZXJyaWRlLWRsbC5yZWciCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJE ZWxldGluZyBvdmVycmlkZXMgRExMcyIKLS0JUE9MX1NldHVwV2luZG93X3dhaXRfbmV4dF9zaWdu YWwgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdC4uLicpIiAiJFRJVExFIgotLQlQT0xfV2lu ZSByZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLW92ZXJyaWRlLWRsbC5yZWciCi0tCXJt ICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLW92ZXJyaWRlLWRsbC5yZWciCi0rICAgIGZvciBETEwg aW4gIiRAIjsgZG8KLSsgICAgICBlY2hvICJcIiRETExcIj0tIgotKyAgICAgIGVjaG8gIlwiKiRE TExcIj0tIgotKyAgICBkb25lCi0rICApID4iJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1vdmVycmlk ZS1kbGwucmVnIgotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkRlbGV0aW5nIG92ZXJyaWRlcyBETExz IgotKyAgUE9MX1NldHVwV2luZG93X3dhaXRfbmV4dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0ICdQ bGVhc2Ugd2FpdC4uLicpIiAiJFRJVExFIgotKyAgUE9MX1dpbmUgcmVnZWRpdCAiJFBPTF9VU0VS X1JPT1QvdG1wL2RlbC1vdmVycmlkZS1kbGwucmVnIgotKyAgcm0gIiRQT0xfVVNFUl9ST09UL3Rt cC9kZWwtb3ZlcnJpZGUtZGxsLnJlZyIKLSB9Ci0tUE9MX1dpbmVfT3ZlcnJpZGVETExfQXBwKCkK LS17Ci0tCSMgQXBwLXNwZWNpZmljIERMTCBvdmVycmlkZXMKLS0JQVBQPSIkMSIKLS0JTU9ERT0i JDIiCi0tCVsgIiRNT0RFIiA9ICJkaXNhYmxlZCIgXSAmJiB1bnNldCBNT0RFCi0tCXNoaWZ0IDIK LS0KLS0JKGNhdCA8PCBFT0YKLStQT0xfV2luZV9PdmVycmlkZURMTF9BcHAoKSB7Ci0rICAjIEFw cC1zcGVjaWZpYyBETEwgb3ZlcnJpZGVzCi0rICBBUFA9IiQxIgotKyAgTU9ERT0iJDIiCi0rICBb ICIkTU9ERSIgPSAiZGlzYWJsZWQiIF0gJiYgdW5zZXQgTU9ERQotKyAgc2hpZnQgMgotKwotKyAg KAotKyAgICBjYXQgPDxFT0YKLSBSRUdFRElUNAotIAotIFtIS0VZX0NVUlJFTlRfVVNFUlxcU29m dHdhcmVcXFdpbmVcXEFwcERlZmF1bHRzXFwkQVBQXFxEbGxPdmVycmlkZXNdCi0gRU9GCi0tCWZv ciBETEwgaW4gIiRAIgotLQlkbwotLQkJIyBXaG8ga25vd3Mgd2hhdCB0aGlzIGhhY2sgaXMgZm9y PwotLQkJaWYgWyAiJERMTCIgPSAiY29tY3RsMzIiIF07IHRoZW4KLS0JCQlybSAtcmYgIiRXSU5F UFJFRklYL3dpbnN4cy9tYW5pZmVzdHMveDg2X21pY3Jvc29mdC53aW5kb3dzLmNvbW1vbi1jb250 cm9sc182NTk1YjY0MTQ0Y2NmMWRmXzYuMC4yNjAwLjI5ODJfbm9uZV9kZWFkYmVlZi5tYW5pZmVz dCIKLS0JCWZpCi0tCQllY2hvICJcIiokRExMXCI9XCIkTU9ERVwiIgotLQlkb25lKSA+ICIkUE9M X1VTRVJfUk9PVC90bXAvYXBwLWRsbC1vdmVycmlkZS5yZWciCi0tCVBPTF9XaW5lIHJlZ2VkaXQg IiRQT0xfVVNFUl9ST09UL3RtcC9hcHAtZGxsLW92ZXJyaWRlLnJlZyIKLS0Jcm0gIiRQT0xfVVNF Ul9ST09UL3RtcC9hcHAtZGxsLW92ZXJyaWRlLnJlZyIKLSsgICAgZm9yIERMTCBpbiAiJEAiOyBk bwotKyAgICAgICMgV2hvIGtub3dzIHdoYXQgdGhpcyBoYWNrIGlzIGZvcj8KLSsgICAgICBpZiBb ICIkRExMIiA9ICJjb21jdGwzMiIgXTsgdGhlbgotKyAgICAgICAgcm0gLXJmICIkV0lORVBSRUZJ WC93aW5zeHMvbWFuaWZlc3RzL3g4Nl9taWNyb3NvZnQud2luZG93cy5jb21tb24tY29udHJvbHNf NjU5NWI2NDE0NGNjZjFkZl82LjAuMjYwMC4yOTgyX25vbmVfZGVhZGJlZWYubWFuaWZlc3QiCi0r ICAgICAgZmkKLSsgICAgICBlY2hvICJcIiokRExMXCI9XCIkTU9ERVwiIgotKyAgICBkb25lCi0r ICApID4iJFBPTF9VU0VSX1JPT1QvdG1wL2FwcC1kbGwtb3ZlcnJpZGUucmVnIgotKyAgUE9MX1dp bmUgcmVnZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wL2FwcC1kbGwtb3ZlcnJpZGUucmVnIgotKyAg cm0gIiRQT0xfVVNFUl9ST09UL3RtcC9hcHAtZGxsLW92ZXJyaWRlLnJlZyIKLSB9Ci0tUE9MX1dp bmVfRGVsT3ZlcnJpZGVETExfQXBwKCkKLS17Ci0tCSMgRGVsZXRlIGFwcC1zcGVjaWZpYyBETEwg b3ZlcnJpZGVzCi0tCUFQUD0iJDEiCi0tCXNoaWZ0Ci0rUE9MX1dpbmVfRGVsT3ZlcnJpZGVETExf QXBwKCkgewotKyAgIyBEZWxldGUgYXBwLXNwZWNpZmljIERMTCBvdmVycmlkZXMKLSsgIEFQUD0i JDEiCi0rICBzaGlmdAotIAotLQkoY2F0IDw8IEVPRgotKyAgKAotKyAgICBjYXQgPDxFT0YKLSBS RUdFRElUNAotIAotIFtIS0VZX0NVUlJFTlRfVVNFUlxcU29mdHdhcmVcXFdpbmVcXEFwcERlZmF1 bHRzXFwkQVBQXFxEbGxPdmVycmlkZXNdCi0gRU9GCi0tCWZvciBETEwgaW4gIiRAIgotLQlkbwot LQkJZWNobyAiXCIkRExMXCI9LSIKLS0JCWVjaG8gIlwiKiRETExcIj0tIgotLQlkb25lKSA+ICIk UE9MX1VTRVJfUk9PVC90bXAvZGVsLWFwcC1kbGwtb3ZlcnJpZGUucmVnIgotLQlQT0xfV2luZSBy ZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLWFwcC1kbGwtb3ZlcnJpZGUucmVnIgotLQly bSAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1hcHAtZGxsLW92ZXJyaWRlLnJlZyIKLSsgICAgZm9y IERMTCBpbiAiJEAiOyBkbwotKyAgICAgIGVjaG8gIlwiJERMTFwiPS0iCi0rICAgICAgZWNobyAi XCIqJERMTFwiPS0iCi0rICAgIGRvbmUKLSsgICkgPiIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLWFw cC1kbGwtb3ZlcnJpZGUucmVnIgotKyAgUE9MX1dpbmUgcmVnZWRpdCAiJFBPTF9VU0VSX1JPT1Qv dG1wL2RlbC1hcHAtZGxsLW92ZXJyaWRlLnJlZyIKLSsgIHJtICIkUE9MX1VTRVJfUk9PVC90bXAv ZGVsLWFwcC1kbGwtb3ZlcnJpZGUucmVnIgotIH0KLS1QT0xfV2luZV9SZWRpcmVjdERMTCgpCi0t ewotLSAgICAjIFJlZGlyZWN0IERMTHMgd2luZS1zdGFnaW5nIGZlYXR1cmUKLS0gICAgIyBodHRw czovL2dpdGh1Yi5jb20vd2luZS1jb21waG9saW8vd2luZS1zdGFnaW5nL3dpa2kvRExMLVJlZGly ZWN0cwotLSAgICBsb2NhbCBTT1VSQ0U9IiQxIgotLSAgICBsb2NhbCBUQVJHRVQ9IiQyIgotLSAg ICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEbGxSZWRpcmVjdHMnICIkU09VUkNF IiAiJFRBUkdFVCIKLStQT0xfV2luZV9SZWRpcmVjdERMTCgpIHsKLSsgICMgUmVkaXJlY3QgRExM cyB3aW5lLXN0YWdpbmcgZmVhdHVyZQotKyAgIyBodHRwczovL2dpdGh1Yi5jb20vd2luZS1jb21w aG9saW8vd2luZS1zdGFnaW5nL3dpa2kvRExMLVJlZGlyZWN0cwotKyAgbG9jYWwgU09VUkNFPSIk MSIKLSsgIGxvY2FsIFRBUkdFVD0iJDIiCi0rICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQ YWlyICdEbGxSZWRpcmVjdHMnICIkU09VUkNFIiAiJFRBUkdFVCIKLSB9Ci0tUE9MX1dpbmVfRGVs UmVkaXJlY3RETEwoKQotLXsKLS0gICAgbG9jYWwgU09VUkNFPSIkMSIKLS0gICAgUE9MX1dpbmVf VXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGxsUmVkaXJlY3RzJyAiJFNPVVJDRSIgJ2RlZmF1bHQn Ci0rUE9MX1dpbmVfRGVsUmVkaXJlY3RETEwoKSB7Ci0rICBsb2NhbCBTT1VSQ0U9IiQxIgotKyAg UE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGxsUmVkaXJlY3RzJyAiJFNPVVJDRSIg J2RlZmF1bHQnCi0gfQotLVBPTF9XaW5lX1JlZGlyZWN0RExMX0FwcCgpCi0tewotLSAgICAjIEFw cC1zcGVjaWZpYyBETEwgcmVkaXJlY3QKLS0gICAgbG9jYWwgQVBQPSIkMSIKLS0gICAgbG9jYWwg U09VUkNFPSIkMiIKLS0gICAgbG9jYWwgVEFSR0VUPSIkMyIKLS0gICAgUE9MX1dpbmVfVXBkYXRl UmVnaXN0cnlXaW5lUGFpciAiQXBwRGVmYXVsdHNcXCRBUFBcXERsbFJlZGlyZWN0cyIgIiRTT1VS Q0UiICIkVEFSR0VUIgotK1BPTF9XaW5lX1JlZGlyZWN0RExMX0FwcCgpIHsKLSsgICMgQXBwLXNw ZWNpZmljIERMTCByZWRpcmVjdAotKyAgbG9jYWwgQVBQPSIkMSIKLSsgIGxvY2FsIFNPVVJDRT0i JDIiCi0rICBsb2NhbCBUQVJHRVQ9IiQzIgotKyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5l UGFpciAiQXBwRGVmYXVsdHNcXCRBUFBcXERsbFJlZGlyZWN0cyIgIiRTT1VSQ0UiICIkVEFSR0VU IgotIH0KLS1QT0xfV2luZV9EZWxSZWRpcmVjdERMTF9BcHAoKQotLXsKLS0gICAgIyBBcHAtc3Bl Y2lmaWMgRExMIHJlZGlyZWN0Ci0tICAgIGxvY2FsIEFQUD0iJDEiCi0tICAgIGxvY2FsIFNPVVJD RT0iJDIiCi0tICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgIkFwcERlZmF1bHRz XFwkQVBQXFxEbGxSZWRpcmVjdHMiICIkU09VUkNFIiAnZGVmYXVsdCcKLStQT0xfV2luZV9EZWxS ZWRpcmVjdERMTF9BcHAoKSB7Ci0rICAjIEFwcC1zcGVjaWZpYyBETEwgcmVkaXJlY3QKLSsgIGxv Y2FsIEFQUD0iJDEiCi0rICBsb2NhbCBTT1VSQ0U9IiQyIgotKyAgUE9MX1dpbmVfVXBkYXRlUmVn aXN0cnlXaW5lUGFpciAiQXBwRGVmYXVsdHNcXCRBUFBcXERsbFJlZGlyZWN0cyIgIiRTT1VSQ0Ui ICdkZWZhdWx0JwotIH0KLS1QT0xfV2luZV9XYWl0QmVmb3JlICgpCi0tewotLQkjIExvY2sgYmFz aCBjb21tYW5kcyB1bnRpbCB3aW5lIGlzIGV4aXRlZAotLQkjIFVzYWdlIDogUE9MX1dpbmVfV2Fp dEJlZm9yZSBbUHJvZ3JhbSB0aXRsZV0gKC0tYWxsb3cta2lsbCkKLS0JU09GVE5BTUU9IiQxIgot LQlpZiBbICIkMiIgPSAiLS1hbGxvdy1raWxsIiBdCi0tCXRoZW4KLS0JCWFsbG93S2lsbD0idHJ1 ZSIKLS0JZWxzZQotLQkJYWxsb3dLaWxsPSJmYWxzZSIKLS0JZmkKLS0KLS0JWyAiJDEiID0gIiIg XSAmJiBtZXNzYWdlPSIkKGV2YWxfZ2V0dGV4dCAiUGxlYXNlIHdhaXQuLi4iKSIgfHwgbWVzc2Fn ZT0iJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlICRTT0ZUTkFNRSBpcyBpbnN0YWxs ZWQuLi4nKSIKLS0KLS0JaWYgWyAiJGFsbG93S2lsbCIgPSAidHJ1ZSIgXQotLQl0aGVuCi0tCQlQ T0xfU2V0dXBXaW5kb3dfd2FpdF9idXR0b24gIiRtZXNzYWdlIiAiJFRJVExFIiAiJChldmFsX2dl dHRleHQgJ0luc3RhbGwgaXMgZG9uZScpIiAid2luZXNlcnZlciAtayIgIiQoZXZhbF9nZXR0ZXh0 ICdCZSBjYXJlZnVsISBUaGlzIHdpbGwga2lsbCBpbnN0YWxsIHByb2Nlc3MuIElmIGl0IGlzIG5v dCBmaW5pc2hlZCwgeW91IHdpbGwgaGF2ZSB0byByZWluc3RhbGwgJFNPRlROQU1FJykiCi0tCWVs c2UKLS0JCVBPTF9TZXR1cFdpbmRvd193YWl0ICIkbWVzc2FnZSIgIiRUSVRMRSIKLS0JZmkKLStQ T0xfV2luZV9XYWl0QmVmb3JlKCkgewotKyAgIyBMb2NrIGJhc2ggY29tbWFuZHMgdW50aWwgd2lu ZSBpcyBleGl0ZWQKLSsgICMgVXNhZ2UgOiBQT0xfV2luZV9XYWl0QmVmb3JlIFtQcm9ncmFtIHRp dGxlXSAoLS1hbGxvdy1raWxsKQotKyAgU09GVE5BTUU9IiQxIgotKyAgaWYgWyAiJDIiID0gIi0t YWxsb3cta2lsbCIgXTsgdGhlbgotKyAgICBhbGxvd0tpbGw9InRydWUiCi0rICBlbHNlCi0rICAg IGFsbG93S2lsbD0iZmFsc2UiCi0rICBmaQotKwotKyAgWyAiJDEiID0gIiIgXSAmJiBtZXNzYWdl PSIkKGV2YWxfZ2V0dGV4dCAiUGxlYXNlIHdhaXQuLi4iKSIgfHwgbWVzc2FnZT0iJChldmFsX2dl dHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlICRTT0ZUTkFNRSBpcyBpbnN0YWxsZWQuLi4nKSIKLSsK LSsgIGlmIFsgIiRhbGxvd0tpbGwiID0gInRydWUiIF07IHRoZW4KLSsgICAgUE9MX1NldHVwV2lu ZG93X3dhaXRfYnV0dG9uICIkbWVzc2FnZSIgIiRUSVRMRSIgIiQoZXZhbF9nZXR0ZXh0ICdJbnN0 YWxsIGlzIGRvbmUnKSIgIndpbmVzZXJ2ZXIgLWsiICIkKGV2YWxfZ2V0dGV4dCAnQmUgY2FyZWZ1 bCEgVGhpcyB3aWxsIGtpbGwgaW5zdGFsbCBwcm9jZXNzLiBJZiBpdCBpcyBub3QgZmluaXNoZWQs IHlvdSB3aWxsIGhhdmUgdG8gcmVpbnN0YWxsICRTT0ZUTkFNRScpIgotKyAgZWxzZQotKyAgICBQ T0xfU2V0dXBXaW5kb3dfd2FpdCAiJG1lc3NhZ2UiICIkVElUTEUiCi0rICBmaQotIAotIH0KLS1Q T0xfV2luZV9XYWl0RXhpdCAoKQotLXsKLS0JIyBMb2NrIGJhc2ggY29tbWFuZHMgdW50aWwgd2lu ZSBpcyBleGl0ZWQKLS0JIyBVc2FnZSA6IFBPTF9XaW5lX1dhaXRFeGl0ICgtLWZvcmNlLWlucHV0 KSBbUHJvZ3JhbSB0aXRsZV0gKC0tYWxsb3cta2lsbCkKLS0JaWYgWyAiJDEiID0gIi0tZm9yY2Ut aW5wdXQiIF0KLS0JdGhlbgotLQkJZm9yY2VJbnB1dD0idHJ1ZSIKLS0JCXNoaWZ0Ci0tCWVsc2UK LS0JCWZvcmNlSW5wdXQ9ImZhbHNlIgotLQlmaQotLQotLQlTT0ZUTkFNRT0iJDEiCi0tCWlmIFsg IiQyIiA9ICItLWFsbG93LWtpbGwiIF0KLS0JdGhlbgotLQkJYWxsb3dLaWxsPSJ0cnVlIgotLQll bHNlCi0tCQlhbGxvd0tpbGw9ImZhbHNlIgotLQlmaQotLQotLQlbICIkMSIgPSAiIiBdICYmIG1l c3NhZ2U9IiQoZXZhbF9nZXR0ZXh0ICJQbGVhc2Ugd2FpdC4uLiIpIiB8fCBtZXNzYWdlPSIkKGV2 YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgJFNPRlROQU1FIGlzIGluc3RhbGxlZC4uLicp IgotLQlpZiBbICIkYWxsb3dLaWxsIiA9ICJ0cnVlIiBdCi0tCXRoZW4KLS0JCVBPTF9TZXR1cFdp bmRvd193YWl0X2J1dHRvbiAiJG1lc3NhZ2UiICIkVElUTEUiICIkKGV2YWxfZ2V0dGV4dCAnSW5z dGFsbCBpcyBkb25lJykiICJ3aW5lc2VydmVyIC1rIiAiJChldmFsX2dldHRleHQgJ0JlIGNhcmVm dWwhIFRoaXMgd2lsbCBraWxsIGluc3RhbGwgcHJvY2Vzcy4gSWYgaXQgaXMgbm90IGZpbmlzaGVk LCB5b3Ugd2lsbCBoYXZlIHRvIHJlaW5zdGFsbCAkU09GVE5BTUUnKSIKLS0JZWxzZQotLQkJUE9M X1NldHVwV2luZG93X3dhaXQgIiRtZXNzYWdlIiAiJFRJVExFIgotLQlmaQotLQl3aW5lc2VydmVy IC13IHx8IFBPTF9TZXR1cFdpbmRvd19tZXNzYWdlICIkKGV2YWxfZ2V0dGV4dCAnUHJlc3MgbmV4 dCBvbmx5IHdoZW4gdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzIGlzIGZpbmlzaGVkJykiICIkVElU TEUiCi0tCVsgIiRmb3JjZUlucHV0IiA9ICJ0cnVlIiBdICYmIFBPTF9TZXR1cFdpbmRvd19tZXNz YWdlICIkKGV2YWxfZ2V0dGV4dCAnUHJlc3MgbmV4dCBvbmx5IHdoZW4gdGhlIGluc3RhbGxhdGlv biBwcm9jZXNzIGlzIGZpbmlzaGVkJykiICIkVElUTEUiCi0rUE9MX1dpbmVfV2FpdEV4aXQoKSB7 Ci0rICAjIExvY2sgYmFzaCBjb21tYW5kcyB1bnRpbCB3aW5lIGlzIGV4aXRlZAotKyAgIyBVc2Fn ZSA6IFBPTF9XaW5lX1dhaXRFeGl0ICgtLWZvcmNlLWlucHV0KSBbUHJvZ3JhbSB0aXRsZV0gKC0t YWxsb3cta2lsbCkKLSsgIGlmIFsgIiQxIiA9ICItLWZvcmNlLWlucHV0IiBdOyB0aGVuCi0rICAg IGZvcmNlSW5wdXQ9InRydWUiCi0rICAgIHNoaWZ0Ci0rICBlbHNlCi0rICAgIGZvcmNlSW5wdXQ9 ImZhbHNlIgotKyAgZmkKLSsKLSsgIFNPRlROQU1FPSIkMSIKLSsgIGlmIFsgIiQyIiA9ICItLWFs bG93LWtpbGwiIF07IHRoZW4KLSsgICAgYWxsb3dLaWxsPSJ0cnVlIgotKyAgZWxzZQotKyAgICBh bGxvd0tpbGw9ImZhbHNlIgotKyAgZmkKLSsKLSsgIFsgIiQxIiA9ICIiIF0gJiYgbWVzc2FnZT0i JChldmFsX2dldHRleHQgIlBsZWFzZSB3YWl0Li4uIikiIHx8IG1lc3NhZ2U9IiQoZXZhbF9nZXR0 ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSAkU09GVE5BTUUgaXMgaW5zdGFsbGVkLi4uJykiCi0rICBp ZiBbICIkYWxsb3dLaWxsIiA9ICJ0cnVlIiBdOyB0aGVuCi0rICAgIFBPTF9TZXR1cFdpbmRvd193 YWl0X2J1dHRvbiAiJG1lc3NhZ2UiICIkVElUTEUiICIkKGV2YWxfZ2V0dGV4dCAnSW5zdGFsbCBp cyBkb25lJykiICJ3aW5lc2VydmVyIC1rIiAiJChldmFsX2dldHRleHQgJ0JlIGNhcmVmdWwhIFRo aXMgd2lsbCBraWxsIGluc3RhbGwgcHJvY2Vzcy4gSWYgaXQgaXMgbm90IGZpbmlzaGVkLCB5b3Ug d2lsbCBoYXZlIHRvIHJlaW5zdGFsbCAkU09GVE5BTUUnKSIKLSsgIGVsc2UKLSsgICAgUE9MX1Nl dHVwV2luZG93X3dhaXQgIiRtZXNzYWdlIiAiJFRJVExFIgotKyAgZmkKLSsgIHdpbmVzZXJ2ZXIg LXcgfHwgUE9MX1NldHVwV2luZG93X21lc3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdQcmVzcyBuZXh0 IG9ubHkgd2hlbiB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MgaXMgZmluaXNoZWQnKSIgIiRUSVRM RSIKLSsgIFsgIiRmb3JjZUlucHV0IiA9ICJ0cnVlIiBdICYmIFBPTF9TZXR1cFdpbmRvd19tZXNz YWdlICIkKGV2YWxfZ2V0dGV4dCAnUHJlc3MgbmV4dCBvbmx5IHdoZW4gdGhlIGluc3RhbGxhdGlv biBwcm9jZXNzIGlzIGZpbmlzaGVkJykiICIkVElUTEUiCi0gfQotIAotLQotLQotLVBPTF9XaW5l X3JlYm9vdCAoKQotLXsKLS0JIyBTaW11bGF0ZSB3aW5kb3dzIHJlYm9vdAotLQlQT0xfU2V0dXBX aW5kb3dfd2FpdF9uZXh0X3NpZ25hbCAiJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxl ICRBUFBMSUNBVElPTl9USVRMRSBpcyBzaW11bGF0aW5nIGEgcmVib290JykiICIkVElUTEUiCi0t CVBPTF9XaW5lIHdpbmVib290Ci0rUE9MX1dpbmVfcmVib290KCkgewotKyAgIyBTaW11bGF0ZSB3 aW5kb3dzIHJlYm9vdAotKyAgUE9MX1NldHVwV2luZG93X3dhaXRfbmV4dF9zaWduYWwgIiQoZXZh bF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSAkQVBQTElDQVRJT05fVElUTEUgaXMgc2ltdWxh dGluZyBhIHJlYm9vdCcpIiAiJFRJVExFIgotKyAgUE9MX1dpbmUgd2luZWJvb3QKLSB9Ci0tUE9M X1dpbmVfR2V0UHJlZml4RnJvbVBhdGggKCkKLS17Ci0tCSMgUmV0dXJuIHdpbmVwcmVmaXggZnJv bSBwYXRoCi0tCSMgVXNhZ2UgUE9MX1dpbmVfR2V0UHJlZml4RnJvbVBhdGggW0V4ZSBmaWxlXQot LQlsb2NhbCBwPSIkMSIKLS0JcD0iJHtwIyovd2luZXByZWZpeC99IgotLQlwPSIke3AlJS8qfSIK LS0JZWNobyAiJHAiCi0rUE9MX1dpbmVfR2V0UHJlZml4RnJvbVBhdGgoKSB7Ci0rICAjIFJldHVy biB3aW5lcHJlZml4IGZyb20gcGF0aAotKyAgIyBVc2FnZSBQT0xfV2luZV9HZXRQcmVmaXhGcm9t UGF0aCBbRXhlIGZpbGVdCi0rICBsb2NhbCBwPSIkMSIKLSsgIHA9IiR7cCMqL3dpbmVwcmVmaXgv fSIKLSsgIHA9IiR7cCUlLyp9IgotKyAgZWNobyAiJHAiCi0gfQotLVBPTF9XaW5lX0dldEJhc2VO YW1lKCkKLS17Ci0tCXBlcmwgLWUgJyRyZWxlYXNlPSRBUkdWWzBdOyAkcmVsZWFzZSA9fiBzL14o WzAtOV0rXC5bMC05XSsoXC5bMC05XSspPygtcmNbMC05XSspPyktPy4qJC8kMS87IHByaW50ICIk cmVsZWFzZVxuIicgIiQxIgotK1BPTF9XaW5lX0dldEJhc2VOYW1lKCkgewotKyAgcGVybCAtZSAn JHJlbGVhc2U9JEFSR1ZbMF07ICRyZWxlYXNlID1+IHMvXihbMC05XStcLlswLTldKyhcLlswLTld Kyk/KC1yY1swLTldKyk/KS0/LiokLyQxLzsgcHJpbnQgIiRyZWxlYXNlXG4iJyAiJDEiCi0gfQot LVBPTF9XaW5lX0dldFBhdGNoTmFtZSgpCi0tewotLQlwZXJsIC1lICckcmVsZWFzZT0kQVJHVlsw XTsgJHJlbGVhc2UgPX4gcy9eWzAtOV0rXC5bMC05XSsoXC5bMC05XSspPygtcmNbMC05XSspPy0/ Ly87IHByaW50ICIkcmVsZWFzZVxuIicgIiQxIgotK1BPTF9XaW5lX0dldFBhdGNoTmFtZSgpIHsK LSsgIHBlcmwgLWUgJyRyZWxlYXNlPSRBUkdWWzBdOyAkcmVsZWFzZSA9fiBzL15bMC05XStcLlsw LTldKyhcLlswLTldKyk/KC1yY1swLTldKyk/LT8vLzsgcHJpbnQgIiRyZWxlYXNlXG4iJyAiJDEi Ci0gfQotLVBPTF9MbmtfUmVhZCgpCi0tewotLQlkcml2ZV9jX2ZvdW5kPSJmYWxzZSIKLS0JZXhw b3J0IEFOU1dFUl9QQVRIPSIiCi0tCWV4cG9ydCBBTlNXRVJfUFJFRklYPSIiCi0tCWV4cG9ydCBB TlNXRVJfTkFNRT0iJDEiCi0tCUFOU1dFUl9OQU1FPSIke0FOU1dFUl9OQU1FLy5sbmsvfSIKLS0J d2hpbGUgcmVhZCBsaW5lOyBkbwotLQkJaWYgWyAiJGRyaXZlX2NfZm91bmQiID0gInRydWUiIF07 IHRoZW4KLS0JCQlpZiBbICIke2xpbmU6MToxfSIgPSAiOiIgXTsgdGhlbgotLQkJCQlicmVhawot LQkJCWZpCi0tCQkJaWYgWyAiJEFOU1dFUl9QQVRIIiA9ICIiIF07IHRoZW4KLS0JCQkJQU5TV0VS X1BBVEg9IiRsaW5lIgotLQkJCWVsc2UKLS0JCQkJQU5TV0VSX1BBVEg9IiRBTlNXRVJfUEFUSC8k bGluZSIKLS0JCQlmaQotLQkJZmkKLS0JCWlmIFsgIiRsaW5lIiA9ICJkcml2ZV9jIiBdOyB0aGVu Ci0tCQkJZHJpdmVfY19mb3VuZD0idHJ1ZSIKLS0JCQlBTlNXRVJfUFJFRklYPSIkbGFzdGxpbmUi Ci0tCQlmaQotLQkJbGFzdGxpbmU9IiRsaW5lIgotLQlkb25lIDwgPChzdHJpbmdzICIkMSIpCi0r UE9MX0xua19SZWFkKCkgewotKyAgZHJpdmVfY19mb3VuZD0iZmFsc2UiCi0rICBleHBvcnQgQU5T V0VSX1BBVEg9IiIKLSsgIGV4cG9ydCBBTlNXRVJfUFJFRklYPSIiCi0rICBleHBvcnQgQU5TV0VS X05BTUU9IiQxIgotKyAgQU5TV0VSX05BTUU9IiR7QU5TV0VSX05BTUUvLmxuay99IgotKyAgd2hp bGUgcmVhZCBsaW5lOyBkbwotKyAgICBpZiBbICIkZHJpdmVfY19mb3VuZCIgPSAidHJ1ZSIgXTsg dGhlbgotKyAgICAgIGlmIFsgIiR7bGluZToxOjF9IiA9ICI6IiBdOyB0aGVuCi0rICAgICAgICBi cmVhawotKyAgICAgIGZpCi0rICAgICAgaWYgWyAiJEFOU1dFUl9QQVRIIiA9ICIiIF07IHRoZW4K LSsgICAgICAgIEFOU1dFUl9QQVRIPSIkbGluZSIKLSsgICAgICBlbHNlCi0rICAgICAgICBBTlNX RVJfUEFUSD0iJEFOU1dFUl9QQVRILyRsaW5lIgotKyAgICAgIGZpCi0rICAgIGZpCi0rICAgIGlm IFsgIiRsaW5lIiA9ICJkcml2ZV9jIiBdOyB0aGVuCi0rICAgICAgZHJpdmVfY19mb3VuZD0idHJ1 ZSIKLSsgICAgICBBTlNXRVJfUFJFRklYPSIkbGFzdGxpbmUiCi0rICAgIGZpCi0rICAgIGxhc3Rs aW5lPSIkbGluZSIKLSsgIGRvbmUgPCA8KHN0cmluZ3MgIiQxIikKLSB9Ci0gCi0tUE9MX1dpbmVf ZXhlbmFtZSgpCi0tewotLQlFWEVOQU1FPSIkMSIKLS0Jd2hpbGUgWyAiJDEiIF07IGRvCi0tCQlb ICIkKGdyZXAgJy5leGUnIDw8PCAiJDEiKSIgXSAmJiBlY2hvICIkMSIgJiYgcmV0dXJuIDAKLS0J CXNoaWZ0Ci0tCWRvbmUKLS0JZWNobyAiJEVYRU5BTUUiCi0tCXJldHVybiAwCi0rUE9MX1dpbmVf ZXhlbmFtZSgpIHsKLSsgIEVYRU5BTUU9IiQxIgotKyAgd2hpbGUgWyAiJDEiIF07IGRvCi0rICAg IFsgIiQoZ3JlcCAnLmV4ZScgPDw8IiQxIikiIF0gJiYgZWNobyAiJDEiICYmIHJldHVybiAwCi0r ICAgIHNoaWZ0Ci0rICBkb25lCi0rICBlY2hvICIkRVhFTkFNRSIKLSsgIHJldHVybiAwCi0gfQot LVBPTF9XaW5lX0NvbW1vbk5hbWUoKQotLXsKLS0JY25hbWU9IiQoUE9MX1dpbmVfZXhlbmFtZSAi JEAiKSIKLS0JWyAiJGNuYW1lIiA9ICJ3aW5lY2ZnIiBdICYmIGNuYW1lPSJDb25maWd1cmUgd2lu ZSIKLS0JWyAiJGNuYW1lIiA9ICJyZWdlZGl0IiBdICYmIGNuYW1lPSJSZWdpc3RyeSBFZGl0b3Ii Ci0tCVsgIiRjbmFtZSIgPSAid2luZWJvb3QiIF0gJiYgY25hbWU9IlZpcnR1YWwgZHJpdmUgY3Jl YXRpb24iCi0tCWVjaG8gIiRjbmFtZSIKLStQT0xfV2luZV9Db21tb25OYW1lKCkgewotKyAgY25h bWU9IiQoUE9MX1dpbmVfZXhlbmFtZSAiJEAiKSIKLSsgIFsgIiRjbmFtZSIgPSAid2luZWNmZyIg XSAmJiBjbmFtZT0iQ29uZmlndXJlIHdpbmUiCi0rICBbICIkY25hbWUiID0gInJlZ2VkaXQiIF0g JiYgY25hbWU9IlJlZ2lzdHJ5IEVkaXRvciIKLSsgIFsgIiRjbmFtZSIgPSAid2luZWJvb3QiIF0g JiYgY25hbWU9IlZpcnR1YWwgZHJpdmUgY3JlYXRpb24iCi0rICBlY2hvICIkY25hbWUiCi0gfQot LVBPTF9XaW5lX0VuYWJsZU9TWE5hdGl2ZURvY2soKQotLXsKLS0JaWYgWyAiJFBPTF9PUyIgPSAi TWFjIiAtYSAiJChQT0xfQ29uZmlnX1JlYWQgIk9TWF9OQVRJVkVfTU9ERSIpIiA9ICJUUlVFIiBd OyB0aGVuCi0tCQlleHBvcnQgRk9SQ0VfT1NYX0RPQ0s9IlRSVUUiCi0tCWZpCi0rUE9MX1dpbmVf RW5hYmxlT1NYTmF0aXZlRG9jaygpIHsKLSsgIGlmIFsgIiRQT0xfT1MiID0gIk1hYyIgLWEgIiQo UE9MX0NvbmZpZ19SZWFkICJPU1hfTkFUSVZFX01PREUiKSIgPSAiVFJVRSIgXTsgdGhlbgotKyAg ICBleHBvcnQgRk9SQ0VfT1NYX0RPQ0s9IlRSVUUiCi0rICBmaQotIH0KLWRpZmYgLS1naXQgYS9w eXRob24vbGliL1ZhcmlhYmxlcy5weSBiL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5Ci1pbmRleCA4 YmVkNzYwMWIuLmRiZTJhYjcxOSAxMDA3NTUKLS0tLSBhL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5 Ci0rKysgYi9weXRob24vbGliL1ZhcmlhYmxlcy5weQotQEAgLTE3LDcgKzE3LDcgQEAKLSBvcy5l bnZpcm9uWyJQT0xfUE9SVCJdID0gIjAiCi0gb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSA9IG9z LnBhdGgucmVhbHBhdGgob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykrIi8uLi8uLi8uLi8iKQot IG9zLmVudmlyb25bIlNJVEUiXSA9ICJodHRwOi8vcmVwb3NpdG9yeS5wbGF5b25saW51eC5jb20i Ci0tb3MuZW52aXJvblsiVkVSU0lPTiJdID0gIjQuNCIKLStvcy5lbnZpcm9uWyJWRVJTSU9OIl0g PSAiNC40LjEiCi0gb3MuZW52aXJvblsiUE9MX0lEIl0gPSBzdHIocmFuZG9tLnJhbmRpbnQoMSwg MTAwMDAwMDAwKSkKLSBvcy5lbnZpcm9uWyJHRUNLT19TSVRFIl0gPSAiaHR0cDovL3dpbmUucGxh eW9ubGludXguY29tL2dlY2tvIgotIG9zLmVudmlyb25bIk1PTk9fU0lURSJdID0gImh0dHA6Ly93 aW5lLnBsYXlvbmxpbnV4LmNvbS9tb25vIgotQEAgLTExOSwxMSArMTE5LDEyIEBACi0gCi0gICAg IG9zLmVudmlyb25bIlBBVEgiXSA9IG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4 L3dpbmUvYmluOiIgKyBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC9pbWFnZV9t YWdpY2svYmluOiIgKyBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC90b29scy9i aW4vOiIgKyBvcy5lbnZpcm9uWyJQQVRIIl0KLSAKLS0gICAgb3MuZW52aXJvblsiV1JJVEVfTEQi XSA9ICBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC9pbWFnZV9tYWdpY2svbGli OiIrIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L3Rvb2xzL2xpYi9sZDovb3B0 L1gxMS9saWIvOiIgKyBvcy5lbnZpcm9uWyJMRF9MSUJSQVJZX1BBVEgiXQotLSAgICBvcy5lbnZp cm9uWyJEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCJdID0gIG9zLmVudmlyb25bIlBMQVlPTkxJ TlVYIl0rIi8uLi93aW5lL2xpYiIKLSsgICAgb3MuZW52aXJvblsiV1JJVEVfTEQiXSA9IG9zLmVu dmlyb25bIkxEX0xJQlJBUllfUEFUSCJdCi0rICAgIG9zLmVudmlyb25bIkRZTERfRkFMTEJBQ0tf TElCUkFSWV9QQVRIIl0gPSAgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvd2lu ZS9saWIiCi0rICAgIG9zLmVudmlyb25bIldSSVRFX0RZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRI Il0gPSAgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvd2luZS9saWIiCi0gICAg IG9zLmVudmlyb25bIkZSRUVUWVBFX1BST1BFUlRJRVMiXT0idHJ1ZXR5cGU6aW50ZXJwcmV0ZXIt dmVyc2lvbj0zNSIKLSAKLS0gICAgb3MuZW52aXJvblsiV1JJVEVfRFlMRCJdID0gb3MuZW52aXJv blsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvdG9vbHMvbGliL2R5bGQ6IiArIG9zLmVudmlyb25b IlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L2ltYWdlX21hZ2ljay9saWI6Iisgb3MuZW52aXJvblsi RFlMRF9MSUJSQVJZX1BBVEgiXQotKyAgICBvcy5lbnZpcm9uWyJXUklURV9EWUxEIl0gPSBvcy5l bnZpcm9uWyJEWUxEX0xJQlJBUllfUEFUSCJdCi0gZWxzZToKLSAgICAgIyBEZWJpYW4gbWFpbnRh aW5lciBkZWNpZGVkIGZvciBzb21lIHJlYXNvbiBub3QgdG8gbGV0IHdpbmVzZXJ2ZXIgYmluYXJ5 IGludG8gUEFUSC4uLgotICAgICBmb3Igd2luZXBhdGggaW4gKCcvdXNyL2xpYi9pMzg2LWxpbnV4 LWdudS93aW5lL2JpbicsICcvdXNyL2xpYi9pMzg2LWxpbnV4LWdudS93aW5lLXVuc3RhYmxlL2Jp bicsCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL21haW53aW5kb3cucHkgYi9weXRob24vbWFpbndpbmRv dy5weQotaW5kZXggOGRmMWZmMTRiLi5jOGZlMTExNjAgMTAwNzU1Ci0tLS0gYS9weXRob24vbWFp bndpbmRvdy5weQotKysrIGIvcHl0aG9uL21haW53aW5kb3cucHkKLUBAIC0yNTQsNyArMjU0LDcg QEAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgaWQsIHRpdGxlKToKLSAgICAgICAgIHNlbGYu ZmlsZW1lbnUgPSB3eC5NZW51KCkKLSAgICAgICAgICMjIyBPbiBNYWNPUyBYLCBwcmVmZXJlbmNl IGlzIGFsd2F5cyBvbiB0aGUgbWFpbiBtZW51Ci0gICAgICAgICBpZiAob3MuZW52aXJvblsiUE9M X09TIl0gPT0gIk1hYyIpOgotLSAgICAgICAgICAgIHByZWZJdGVtID0gc2VsZi5maWxlbWVudS5B cHBlbmQod3guSURfUFJFRkVSRU5DRVMsIHRleHQ9IiZQcmVmZXJlbmNlcyIpCi0rICAgICAgICAg ICAgcHJlZkl0ZW0gPSBzZWxmLmZpbGVtZW51LkFwcGVuZCh3eC5JRF9QUkVGRVJFTkNFUywgXygi JlByZWZlcmVuY2VzIikpCi0gICAgICAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9NRU5VLCBzZWxm Lk9wdGlvbnMsIHByZWZJdGVtKQotIAotICAgICAgICAgIyMjIEZpbGUgbWVudQotZGlmZiAtLWdp dCBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIucHkgYi9weXRob24v d2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNGZXRjaGVyLnB5Ci1pbmRleCAwZmRjNzZlMzguLmZk NzU4Nzk4ZSAxMDA2NDQKLS0tLSBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc0Zl dGNoZXIucHkKLSsrKyBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIu cHkKLUBAIC0xLDY3ICsxLDg4IEBACi0gaW1wb3J0IGpzb24KLSBpbXBvcnQgb3MKLSBpbXBvcnQg dGhyZWFkaW5nCi0taW1wb3J0IHRpbWUKLStpbXBvcnQgdHJhY2ViYWNrCi0gaW1wb3J0IHVybGxp Yi5yZXF1ZXN0Ci0taW1wb3J0IG5hdHNvcnQKLSAKLSBmcm9tIGxpYiBpbXBvcnQgVmFyaWFibGVz Ci0tZnJvbSB3aW5lX3ZlcnNpb25zLldpbmVWZXJzaW9uc1Rvb2xzIGltcG9ydCBmZXRjaFVzZXJP UwotLQotLWNsYXNzIFdpbmVWZXJzaW9uRmV0Y2hlcih0aHJlYWRpbmcuVGhyZWFkKToKLS0gICAg ZGVmIF9faW5pdF9fKHNlbGYsIGFyY2g9Ing4NiIpOgotLSAgICAgICAgdGhyZWFkaW5nLlRocmVh ZC5fX2luaXRfXyhzZWxmKQotLSAgICAgICAgc2VsZi50aHJlYWRfbWVzc2FnZSA9ICIjV0FJVCMi Ci0tICAgICAgICBzZWxmLnZlcnNpb25zID0gW10KLS0gICAgICAgIHNlbGYuYXJjaGl0ZWN0dXJl ID0gYXJjaAotLSAgICAgICAgc2VsZi5zdGFydCgpCi0tCi0tICAgIGRlZiBkb3dubG9hZChzZWxm LCBnYW1lKToKLS0gICAgICAgIHNlbGYuZ2V0RGVzY3JpcHRpb24gPSBnYW1lCi0tCi0tICAgIGRl ZiBydW4oc2VsZik6Ci0tICAgICAgICBzZWxmLnRocmVhZF9ydW5uaW5nID0gVHJ1ZQotLSAgICAg ICAgd2hpbGUoc2VsZi50aHJlYWRfcnVubmluZyk6Ci0tICAgICAgICAgICAgaWYoc2VsZi50aHJl YWRfbWVzc2FnZSA9PSAiZ2V0Iik6Ci0tICAgICAgICAgICAgICAgIHRyeSA6Ci0tICAgICAgICAg ICAgICAgICAgICB1cmwgPSBvcy5lbnZpcm9uWyJXSU5FX1NJVEUiXQotLSAgICAgICAgICAgICAg ICAgICAgd2ZvbGRlciA9ICItIi5qb2luKFtmZXRjaFVzZXJPUygpLCBzZWxmLmFyY2hpdGVjdHVy ZV0pCi0tCi0tCi0tICAgICAgICAgICAgICAgICAgICByZXEgPSB1cmxsaWIucmVxdWVzdC5SZXF1 ZXN0KHVybCwgTm9uZSwgeydVc2VyLUFnZW50JzogVmFyaWFibGVzLnVzZXJBZ2VudH0pCi0tICAg ICAgICAgICAgICAgICAgICBoYW5kbGUgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKHJlcSwgdGlt ZW91dCA9IDUpCi0tICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCi0tICAgICAgICAg ICAgICAgICAgICBhdmFpbGFibGVfZGlzdHJpYnV0aW9ucyA9IGpzb24ubG9hZHMoaGFuZGxlLnJl YWQoKSkKLS0gICAgICAgICAgICAgICAgICAgIHNlbGYudmVyc2lvbnNfID0gW10KLS0gICAgICAg ICAgICAgICAgICAgIGZvciBkaXN0cmlidXRpb24gaW4gYXZhaWxhYmxlX2Rpc3RyaWJ1dGlvbnM6 Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGlzdHJpYnV0aW9uWyJuYW1lIl0gPT0gIi0i LmpvaW4oWyJ1cHN0cmVhbSIsIGZldGNoVXNlck9TKCksIHNlbGYuYXJjaGl0ZWN0dXJlXSkpOgot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGFja2FnZSBpbiBkaXN0cmlidXRpb25b InBhY2thZ2VzIl06Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0g cGFja2FnZVsidmVyc2lvbiJdCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNr YWdlVXJsID0gcGFja2FnZVsidXJsIl0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNoYTFzdW0gPSBwYWNrYWdlWyJzaGExc3VtIl0KLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmKG5vdCBvcy5wYXRoLmV4aXN0cyhWYXJpYWJsZXMucGxheW9ubGludXhfcmVwKyIv d2luZS8iK3dmb2xkZXIrIi8iK3ZlcnNpb24pKToKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLnZlcnNpb25zXy5hcHBlbmQodmVyc2lvbikKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcHJpbnQoIkRpcmVjdG9yeTogJXMgZXhpc3RzIiAlIChWYXJpYWJsZXMucGxheW9ubGlu dXhfcmVwKyIvd2luZS8iK3dmb2xkZXIrIi8iK3ZlcnNpb24pKQotLSAgICAgICAgICAgICAgICAg ICAgICAgIGVsaWYoZGlzdHJpYnV0aW9uWyJuYW1lIl0gPT0gIi0iLmpvaW4oWyJzdGFnaW5nIiwg ZmV0Y2hVc2VyT1MoKSwgc2VsZi5hcmNoaXRlY3R1cmVdKSk6Ci0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZvciBwYWNrYWdlIGluIGRpc3RyaWJ1dGlvblsicGFja2FnZXMiXToKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSBwYWNrYWdlWyJ2ZXJzaW9uIl0K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5vdCBvcy5wYXRoLmV4aXN0cyhW YXJpYWJsZXMucGxheW9ubGludXhfcmVwKyIvd2luZS8iK3dmb2xkZXIrIi8iK3ZlcnNpb24rIi1z dGFnaW5nIikpOgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVy c2lvbnNfLmFwcGVuZCh2ZXJzaW9uKyItc3RhZ2luZyIpCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbHNlOgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy aW50KCJEaXJlY3Rvcnk6ICVzIGV4aXN0cyIgJSAoVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCsi L3dpbmUvIit3Zm9sZGVyKyIvIit2ZXJzaW9uKyItc3RhZ2luZyIpKQotLSAgICAgICAgICAgICAg ICAgICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGRpc3Ry aWJ1dGlvblsibmFtZSJdICsgIiBkb2VzIG5vdCBtYXRjaCIpCi0tCi0tICAgICAgICAgICAgICAg ICAgICBzZWxmLnZlcnNpb25zXy5zb3J0KGtleT1uYXRzb3J0Lm5hdHNvcnRfa2V5Z2VuKCkpCi0t ICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb25zXy5yZXZlcnNlKCkKLS0gICAgICAgICAg ICAgICAgICAgIHNlbGYudmVyc2lvbnMgPSBzZWxmLnZlcnNpb25zX1s6XQotLSAgICAgICAgICAg ICAgICAgICAgc2VsZi50aHJlYWRfbWVzc2FnZSA9ICJPayIKLS0gICAgICAgICAgICAgICAgZXhj ZXB0IEV4Y2VwdGlvbiBhcyBlOgotLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoZSkKLS0gICAg ICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKLS0gICAgICAgICAgICAgICAgICAgIHNlbGYu dGhyZWFkX21lc3NhZ2UgPSAiRXJyIgotLSAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9u cyA9IFsiV2luZSBwYWNrYWdlcyB3ZWJzaXRlIGlzIHVuYXZhaWxhYmxlIl0KLStmcm9tIHdpbmVf dmVyc2lvbnMuV2luZVZlcnNpb25zVG9vbHMgaW1wb3J0IGZldGNoVXNlck9TLCBmZXRjaF9zdXBw b3J0ZWRfYXJjaHMKLSAKLSsKLStjbGFzcyBXaW5lVmVyc2lvbkZldGNoZXIoKToKLSsgICAgZGVm IF9faW5pdF9fKHNlbGYsIG9wZXJhdGluZ19zeXN0ZW0pOgotKyAgICAgICAgc2VsZi5vcGVyYXRp bmdfc3lzdGVtID0gb3BlcmF0aW5nX3N5c3RlbQotKwotKyAgICBkZWYgZmV0Y2hfYWxsX2F2YWls YWJsZV93aW5lX3ZlcnNpb24oc2VsZiwgY2FsbGJhY2ssIGVycm9yKToKLSsgICAgICAgIHRocmVh ZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX3N5bmNfZmV0Y2hfYWxsX2F2YWlsYWJs ZV93aW5lX3ZlcnNpb25zLCBhcmdzPShjYWxsYmFjaywgZXJyb3IpKQotKyAgICAgICAgdGhyZWFk LnN0YXJ0KCkKLSsKLSsgICAgZGVmIF9zeW5jX2ZldGNoX2FsbF9hdmFpbGFibGVfd2luZV92ZXJz aW9ucyhzZWxmLCBjYWxsYmFjaywgZXJyb3IpOgotKyAgICAgICAgd2luZV92ZXJzaW9uX3VybCA9 ICJodHRwczovL3Bob2VuaWNpcy5wbGF5b25saW51eC5jb20vaW5kZXgucGhwL3dpbmU/b3M9JXMi ICUgc2VsZi5vcGVyYXRpbmdfc3lzdGVtCi0rICAgICAgICBwcmludCgiRG9ud2xvYWRpbmcgJXMg IiAlIHdpbmVfdmVyc2lvbl91cmwpCi0rICAgICAgICB0cnk6Ci0rICAgICAgICAgICAgcmVxdWVz dCA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3Qod2luZV92ZXJzaW9uX3VybCwgTm9uZSwgeydVc2Vy LUFnZW50JzogVmFyaWFibGVzLnVzZXJBZ2VudH0pCi0rICAgICAgICAgICAgaGFuZGxlID0gdXJs bGliLnJlcXVlc3QudXJsb3BlbihyZXF1ZXN0LCB0aW1lb3V0PTUpCi0rICAgICAgICAgICAgY2Fs bGJhY2soc2VsZi5fY29udmVydF9waG9lbmljaXNfd2luZV92ZXJzaW9uc190b192NChqc29uLmxv YWQoaGFuZGxlKSkpCi0rICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0rICAgICAgICAg ICAgZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSsKLSsgICAgZGVmIF9zeW5jX2ZldGNo X2FsbF9pbnN0YWxsZWRfd2luZV92ZXJzaW9uKHNlbGYpOgotKyAgICAgICAgYXJjaGl0ZWN0dXJl cyA9IHt9Ci0rICAgICAgICBmb3IgYXJjaGl0ZWN0dXJlIGluIGZldGNoX3N1cHBvcnRlZF9hcmNo cygpOgotKyAgICAgICAgICAgIHdpbmVfZm9sZGVyID0gZmV0Y2hVc2VyT1MoKSArICItIiArIGFy Y2hpdGVjdHVyZQotKwotKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKFZhcmlhYmxlcy5w bGF5b25saW51eF9yZXAgKyAiL3dpbmUvIiArIHdpbmVfZm9sZGVyKToKLSsgICAgICAgICAgICAg ICAgYXZhaWxhYmxlX3ZlcnNpb25zID0gW3sKLSsgICAgICAgICAgICAgICAgICAgICJuYW1lIjog dmVyc2lvbiwKLSsgICAgICAgICAgICAgICAgfSBmb3IgdmVyc2lvbiBpbiBvcy5saXN0ZGlyKFZh cmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiL3dpbmUvIiArIHdpbmVfZm9sZGVyKSBpZgotKyAg ICAgICAgICAgICAgICAgICAgdmVyc2lvbiAhPSAiaW5zdGFsbGluZyJdCi0gICAgICAgICAgICAg ZWxzZToKLS0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjIpCi0rICAgICAgICAgICAgICAg IGF2YWlsYWJsZV92ZXJzaW9ucyA9IFtdCi0rCi0rICAgICAgICAgICAgaWYgYXJjaGl0ZWN0dXJl IG5vdCBpbiBhcmNoaXRlY3R1cmVzOgotKyAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzW2Fy Y2hpdGVjdHVyZV0gPSBbXQotKwotKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZXNbYXJjaGl0ZWN0 dXJlXSArPSBhdmFpbGFibGVfdmVyc2lvbnMKLSsgICAgICAgIHJldHVybiBhcmNoaXRlY3R1cmVz Ci0rCi0rICAgIGRlZiBmZXRjaF9hbGxfaW5zdGFsbGVkX3dpbmVfdmVyc2lvbihzZWxmLCBjYWxs YmFjaywgZXJyb3IpOgotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMg PSBzZWxmLl9zeW5jX2ZldGNoX2FsbF9pbnN0YWxsZWRfd2luZV92ZXJzaW9uKCkKLSsKLSsgICAg ICAgICAgICBjYWxsYmFjayhhcmNoaXRlY3R1cmVzKQotKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgotKyAgICAgICAgICAgIGVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCi0rCi0r ICAgIGRlZiBfY29udmVydF9waG9lbmljaXNfd2luZV92ZXJzaW9uc190b192NChzZWxmLCB3aW5l X2Rpc3RyaWJ1dGlvbnMpOgotKyAgICAgICAgIiIiCi0rICAgICAgICBDb252ZXJ0cyB2ZXJzaW9u cyBmcm9tIHBob2VuaWNpcyBmb3JtYXQgaW50byBhIGZvcm1hdCB0aGF0IFBPTC9QT00gNCBjYW4g aGFuZGxlCi0rICAgICAgICAiIiIKLSsgICAgICAgIGFyY2hpdGVjdHVyZXMgPSB7fQotKyAgICAg ICAgZm9yIHdpbmVfZGlzdHJpYnV0aW9uIGluIHdpbmVfZGlzdHJpYnV0aW9uczoKLSsgICAgICAg ICAgICBuYW1lID0gd2luZV9kaXN0cmlidXRpb25bIm5hbWUiXQotKyAgICAgICAgICAgIGFyY2hp dGVjdHVyZSA9IG5hbWUuc3BsaXQoIi0iKVsyXQotKyAgICAgICAgICAgIGRpc3RyaWJ1dGlvbiA9 IG5hbWUuc3BsaXQoIi0iKVswXQotKwotKyAgICAgICAgICAgIGlmIGFyY2hpdGVjdHVyZSBub3Qg aW4gYXJjaGl0ZWN0dXJlczoKLSsgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlc1thcmNoaXRl Y3R1cmVdID0gW10KLSsKLSsgICAgICAgICAgICBmb3IgcGFja2FnZSBpbiB3aW5lX2Rpc3RyaWJ1 dGlvblsicGFja2FnZXMiXToKLSsgICAgICAgICAgICAgICAgaWYgZGlzdHJpYnV0aW9uID09ICJ1 cHN0cmVhbSI6Ci0rICAgICAgICAgICAgICAgICAgICBwYWNrYWdlX25hbWUgPSBwYWNrYWdlWyJ2 ZXJzaW9uIl0KLSsgICAgICAgICAgICAgICAgZWxzZToKLSsgICAgICAgICAgICAgICAgICAgIHBh Y2thZ2VfbmFtZSA9IHBhY2thZ2VbInZlcnNpb24iXSArICItIiArIGRpc3RyaWJ1dGlvbgotKwot KyAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzW2FyY2hpdGVjdHVyZV0gKz0gW3sKLSsgICAg ICAgICAgICAgICAgICAgICJuYW1lIjogcGFja2FnZV9uYW1lLAotKyAgICAgICAgICAgICAgICAg ICAgImFyY2hpdGVjdHVyZSI6IGFyY2hpdGVjdHVyZSwKLSsgICAgICAgICAgICAgICAgICAgICJz aGExc3VtIjogcGFja2FnZVsic2hhMXN1bSJdLAotKyAgICAgICAgICAgICAgICAgICAgInVybCI6 IHBhY2thZ2VbInVybCJdCi0rICAgICAgICAgICAgICAgIH1dCi0rCi0rCi0rICAgICAgICByZXR1 cm4gYXJjaGl0ZWN0dXJlcwotKwotKyAgICBkZWYgY2FsY3VsYXRlX2luc3RhbGxlZF9oYXNoKHNl bGYpOgotKyAgICAgICAgcmV0dXJuIGhhc2goanNvbi5kdW1wcygoc2VsZi5fc3luY19mZXRjaF9h bGxfaW5zdGFsbGVkX3dpbmVfdmVyc2lvbigpKSkpCi0rCi0rCi1kaWZmIC0tZ2l0IGEvcHl0aG9u L3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zTm90ZWJvb2sucHkgYi9weXRob24vd2luZV92ZXJz aW9ucy9XaW5lVmVyc2lvbnNOb3RlYm9vay5weQotaW5kZXggZWM1ZjEyNTM1Li5iNDNjMjVkYzkg MTAwNjQ0Ci0tLS0gYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNOb3RlYm9vay5w eQotKysrIGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zTm90ZWJvb2sucHkKLUBA IC0yLDg5ICsyLDEwNiBAQAotIAotIGZyb20gbGliIGltcG9ydCBWYXJpYWJsZXMKLSAKLS0KLSAj IyBGSVhNRTogUmVmYWN0b3IgdGhpcyBjb2RlIGxhdGVyCi0rZnJvbSB3aW5lX3ZlcnNpb25zLldp bmVWZXJzaW9uc1Rvb2xzIGltcG9ydCBmZXRjaF9zdXBwb3J0ZWRfYXJjaHMKLSsKLSsKLSBjbGFz cyBXaW5lVmVyc2lvbnNOb3RlYm9vayh3eC5Ob3RlYm9vayk6Ci0gICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBwYXJlbnQpOgotICAgICAgICAgc2VsZi5ub3RlYm9vayA9IHd4Lk5vdGVib29rLl9faW5p dF9fKHNlbGYsIHBhcmVudCwgLTEpCi0gICAgICAgICBzZWxmLmltYWdlc19vbmdsZXRzID0gd3gu SW1hZ2VMaXN0KDE2LCAxNikKLSAgICAgICAgIHNlbGYuaW1hZ2VzX29uZ2xldHMuQWRkKHd4LkJp dG1hcChWYXJpYWJsZXMucGxheW9ubGludXhfZW52ICsgIi9ldGMvb25nbGV0L3dpbmUucG5nIikp Ci0rCi0gICAgICAgICBzZWxmLlNldEltYWdlTGlzdChzZWxmLmltYWdlc19vbmdsZXRzKQotIAot ICAgICAgICAgc2VsZi5zaXplcnMgPSB7fQotLSAgICAgICAgc2VsZi5pbWFnZXNhcHBzID0ge30K LS0gICAgICAgIHNlbGYuaW1hZ2VzYXBwc19pID0ge30KLS0gICAgICAgIHNlbGYuYXZhaWxhYmxl V2luZVZlcnNpb25zVHJlZVNlbGVjdG9yID0ge30KLSsgICAgICAgIHNlbGYuaW1hZ2VfbGlzdCA9 IHNlbGYuX2NyZWF0ZV9pbWFnZV9saXN0KCkKLSsgICAgICAgIHNlbGYuYXZhaWxhYmxlX3dpbmVf dmVyc2lvbnNfdHJlZV9zZWxlY3RvciA9IHt9Ci0gICAgICAgICBzZWxmLndhaXRQYW5lbCA9IHt9 Ci0tICAgICAgICBzZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvciA9IHt9Ci0t ICAgICAgICBzZWxmLmJ1dHRvbl9ybSA9IHt9Ci0tICAgICAgICBzZWxmLmJ1dHRvbl9pbiA9IHt9 Ci0rICAgICAgICBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3IgPSB7 fQotKyAgICAgICAgc2VsZi5idXR0b25fdW5pbnN0YWxsID0ge30KLSsgICAgICAgIHNlbGYuYnV0 dG9uX2luc3RhbGwgPSB7fQotICAgICAgICAgc2VsZi5ib3hTaXplcnMgPSB7fQotICAgICAgICAg c2VsZi5wYW5lbHMgPSB7fQotLQotLSAgICBkZWYgY2FsY3VsYXRlRXZlbnREZWx0YShzZWxmLCBh cmNoKToKLS0gICAgICAgIGlmIChhcmNoID09ICJhbWQ2NCIpOgotLSAgICAgICAgICAgIHJldHVy biAxMDAKLS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgcmV0dXJuIDAKLS0KLS0gICAgZGVm IF9jcmVhdGVJbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbChzZWxmLCBhcmNoKToKLS0gICAgICAg IGluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsID0gd3guUGFuZWwoc2VsZi5wYW5lbHNbYXJjaF0s IC0xKQotKyAgICAgICAgc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9uX3Jvb3RzID0ge30KLSsg ICAgICAgIHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lvbl9yb290cyA9IHt9Ci0rICAgICAgICBz ZWxmLm51bWJlcl9vZl9hdmFpbGFibGVfdmVyc2lvbnMgPSB7fQotKyAgICAgICAgc2VsZi5udW1i ZXJfb2ZfaW5zdGFsbGVkX3ZlcnNpb25zID0ge30KLSsgICAgICAgIHNlbGYub25faW5zdGFsbF9o YW5kbGVyID0gTm9uZQotKyAgICAgICAgc2VsZi5vbl9yZW1vdmVfaGFuZGxlciA9IE5vbmUKLSsK LSsgICAgZGVmIF9jcmVhdGVfaW1hZ2VfbGlzdChzZWxmKToKLSsgICAgICAgIGltYWdlX2xpc3Qg PSB3eC5JbWFnZUxpc3QoMjIsIDIyKQotKyAgICAgICAgaW1hZ2VfbGlzdC5BZGQod3guQml0bWFw KFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAiL2V0Yy9pbnN0YWxsL3dpbmUtcGFja2FnZXMu cG5nIikpCi0rICAgICAgICBpbWFnZV9saXN0LkFkZCh3eC5CaXRtYXAoVmFyaWFibGVzLnBsYXlv bmxpbnV4X2VudiArICIvZXRjL2luc3RhbGwvd2luZS1pbi11c2UucG5nIikpCi0rICAgICAgICBy ZXR1cm4gaW1hZ2VfbGlzdAotKwotKyAgICBkZWYgX2NhbGN1bGF0ZV9ldmVudF9udW1iZXIoc2Vs ZiwgZXZlbnRfaWQsIGFyY2gpOgotKyAgICAgICAgcmV0dXJuIGV2ZW50X2lkICsgbGlzdChmZXRj aF9zdXBwb3J0ZWRfYXJjaHMoKSkuaW5kZXgoYXJjaCkgKiAxMDAKLSsKLSsgICAgZGVmIF9jcmVh dGVJbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbChzZWxmLCBhcmNoaXRlY3R1cmUpOgotKyAgICAg ICAgaW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWwgPSB3eC5QYW5lbChzZWxmLnBhbmVsc1thcmNo aXRlY3R1cmVdLCAtMSkKLSAgICAgICAgIGluc3RhbGxlZFdpbmVWZXJzaW9uc1NpemVyID0gd3gu Qm94U2l6ZXIod3guVkVSVElDQUwpCi0gICAgICAgICBpbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5l bC5TZXRTaXplcihpbnN0YWxsZWRXaW5lVmVyc2lvbnNTaXplcikKLS0gICAgICAgIHNlbGYuYm94 U2l6ZXJzW2FyY2hdLkFkZChpbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbCwgMywgd3guRVhQQU5E KQotKyAgICAgICAgc2VsZi5ib3hTaXplcnNbYXJjaGl0ZWN0dXJlXS5BZGQoaW5zdGFsbGVkV2lu ZVZlcnNpb25zUGFuZWwsIDMsIHd4LkVYUEFORCkKLSAgICAgICAgIGluc3RhbGxlZFdpbmVWZXJz aW9uc1NpemVyLkFkZFNwYWNlcigxMCkKLSAgICAgICAgIGluc3RhbGxlZFdpbmVWZXJzaW9uc1Np emVyLkFkZCh3eC5TdGF0aWNUZXh0KGluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsLCAtMSwgXygi SW5zdGFsbGVkIFdpbmUgdmVyc2lvbnM6ICIpKSwgMCkKLSAgICAgICAgIGluc3RhbGxlZFdpbmVW ZXJzaW9uc1NpemVyLkFkZFNwYWNlcigxMCkKLS0gICAgICAgIHNlbGYuaW5zdGFsbGVkV2luZVZl cnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdID0gd3guVHJlZUN0cmwoaW5zdGFsbGVkV2luZVZlcnNp b25zUGFuZWwsIDEwNyArIHNlbGYuY2FsY3VsYXRlRXZlbnREZWx0YShhcmNoKSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3R5bGU9d3guVFJfSElERV9ST09UIHwgd3guVFJfRlVMTF9ST1dfSElHSExJR0hUIHwgVmFy aWFibGVzLndpZGdldF9ib3JkZXJzKQotLSAgICAgICAgc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lv bnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VzYXBwc19pW2FyY2hd KQotLSAgICAgICAgI3NlbGYuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hd LlNldFNwYWNpbmcoMCkKLS0gICAgICAgIGluc3RhbGxlZFdpbmVWZXJzaW9uc1NpemVyLkFkZChz ZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXSwgMSwgd3guRVhQQU5E KQotKyAgICAgICAgc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2Fy Y2hpdGVjdHVyZV0gPSB3eC5UcmVlQ3RybChpbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsY3VsYXRlX2V2ZW50X251bWJlcigxMDcsIGFy Y2hpdGVjdHVyZSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXd4LlRSX0hJREVfUk9P VCB8IHd4LlRSX0ZVTExfUk9XX0hJR0hMSUdIVCB8IFZhcmlhYmxlcy53aWRnZXRfYm9yZGVycykK LSsgICAgICAgIHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNo aXRlY3R1cmVdLlNldEltYWdlTGlzdChzZWxmLmltYWdlX2xpc3QpCi0rICAgICAgICBzZWxmLkJp bmQod3guRVZUX1RSRUVfU0VMX0NIQU5HRUQsIGxhbWJkYSBldnQ6IHNlbGYuX29uX3NlbGVjdF9p bnN0YWxsZWRfd2luZV92ZXJzaW9uKGFyY2hpdGVjdHVyZSksIGlkPXNlbGYuX2NhbGN1bGF0ZV9l dmVudF9udW1iZXIoMTA3LCBhcmNoaXRlY3R1cmUpKQotKwotKyAgICAgICAgaW5zdGFsbGVkV2lu ZVZlcnNpb25zU2l6ZXIuQWRkKHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxl Y3RvclthcmNoaXRlY3R1cmVdLCAxLCB3eC5FWFBBTkQpCi0gICAgICAgICBpbnN0YWxsZWRXaW5l VmVyc2lvbnNTaXplci5BZGRTcGFjZXIoMTApCi0gCi0tICAgIGRlZiBfY3JlYXRlQXZhaWxhYmxl V2luZVZlcnNpb25zUGFuZWwoc2VsZiwgYXJjaCk6Ci0tICAgICAgICBhdmFpbGFibGVXaW5lVmVy c2lvbnNQYW5lbCA9IHd4LlBhbmVsKHNlbGYucGFuZWxzW2FyY2hdICwgLTEpCi0rICAgIGRlZiBf Y3JlYXRlQXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWwoc2VsZiwgYXJjaGl0ZWN0dXJlKToKLSsg ICAgICAgIGF2YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsID0gd3guUGFuZWwoc2VsZi5wYW5lbHNb YXJjaGl0ZWN0dXJlXSwgLTEpCi0gICAgICAgICBhdmFpbGFibGVXaW5lVmVyc2lvbnNTaXplciA9 IHd4LkJveFNpemVyKHd4LlZFUlRJQ0FMKQotICAgICAgICAgYXZhaWxhYmxlV2luZVZlcnNpb25z UGFuZWwuU2V0U2l6ZXIoYXZhaWxhYmxlV2luZVZlcnNpb25zU2l6ZXIpCi0tICAgICAgICBzZWxm LmJveFNpemVyc1thcmNoXS5BZGQoYXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWwsIDMsIHd4LkVY UEFORCkKLSsgICAgICAgIHNlbGYuYm94U2l6ZXJzW2FyY2hpdGVjdHVyZV0uQWRkKGF2YWlsYWJs ZVdpbmVWZXJzaW9uc1BhbmVsLCAzLCB3eC5FWFBBTkQpCi0gICAgICAgICBhdmFpbGFibGVXaW5l VmVyc2lvbnNTaXplci5BZGRTcGFjZXIoMTApCi0gICAgICAgICBhdmFpbGFibGVXaW5lVmVyc2lv bnNTaXplci5BZGQod3guU3RhdGljVGV4dChhdmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbCwgLTEs IF8oIkF2YWlsYWJsZSBXaW5lIHZlcnNpb25zOiAiKSwgKDUsIDEwKSksIDApCi0gICAgICAgICBh dmFpbGFibGVXaW5lVmVyc2lvbnNTaXplci5BZGRTcGFjZXIoMTApCi0tICAgICAgICBzZWxmLmF2 YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXSA9IHd4LlRyZWVDdHJsKGF2YWls YWJsZVdpbmVWZXJzaW9uc1BhbmVsLCAxMDYgKyBzZWxmLmNhbGN1bGF0ZUV2ZW50RGVsdGEoYXJj aCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0eWxlPXd4LlRSX0hJREVfUk9PVCB8IHd4LlRSX0ZVTExfUk9XX0hJ R0hMSUdIVCB8IFZhcmlhYmxlcy53aWRnZXRfYm9yZGVycywKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0oMzIw LCAzMDApLCBwb3M9KDEwLCAzNSkpCi0tICAgICAgICBzZWxmLmF2YWlsYWJsZVdpbmVWZXJzaW9u c1RyZWVTZWxlY3RvclthcmNoXS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZXNhcHBzW2FyY2hdKQot LSAgICAgICAgI3NlbGYuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNl dFNwYWNpbmcoMCkKLS0gICAgICAgIGF2YWlsYWJsZVdpbmVWZXJzaW9uc1NpemVyLkFkZChzZWxm LmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXSwgMSwgd3guRVhQQU5EKQot KyAgICAgICAgc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hp dGVjdHVyZV0gPSB3eC5UcmVlQ3RybChhdmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsY3VsYXRlX2V2ZW50X251bWJlcigxMDYsIGFyY2hp dGVjdHVyZSksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXd4LlRSX0hJREVfUk9PVCB8 IHd4LlRSX0ZVTExfUk9XX0hJR0hMSUdIVCB8IFZhcmlhYmxlcy53aWRnZXRfYm9yZGVycywKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZT0oMzIwLCAzMDApLCBwb3M9KDEwLCAzNSkpCi0rICAg ICAgICBzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaGl0ZWN0 dXJlXS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZV9saXN0KQotKyAgICAgICAgc2VsZi5CaW5kKHd4 LkVWVF9UUkVFX1NFTF9DSEFOR0VELCBsYW1iZGEgZXZ0OiBzZWxmLl9vbl9zZWxlY3RfYXZhaWxh YmxlX3dpbmVfdmVyc2lvbihhcmNoaXRlY3R1cmUpLCBpZD1zZWxmLl9jYWxjdWxhdGVfZXZlbnRf bnVtYmVyKDEwNiwgYXJjaGl0ZWN0dXJlKSkKLSsKLSsgICAgICAgIGF2YWlsYWJsZVdpbmVWZXJz aW9uc1NpemVyLkFkZChzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3Jb YXJjaGl0ZWN0dXJlXSwgMSwgd3guRVhQQU5EKQotICAgICAgICAgYXZhaWxhYmxlV2luZVZlcnNp b25zU2l6ZXIuQWRkU3BhY2VyKDEwKQotIAotLSAgICBkZWYgX2NyZWF0ZUJ1dHRvblBhbmVsKHNl bGYsIGFyY2gpOgotLSAgICAgICAgYnV0dG9uc1BhbmVsID0gd3guUGFuZWwoc2VsZi5wYW5lbHNb YXJjaF0gLCAtMSkKLSsgICAgZGVmIF9jcmVhdGVCdXR0b25QYW5lbChzZWxmLCBhcmNoaXRlY3R1 cmUpOgotKyAgICAgICAgYnV0dG9uc1BhbmVsID0gd3guUGFuZWwoc2VsZi5wYW5lbHNbYXJjaGl0 ZWN0dXJlXSwgLTEpCi0gICAgICAgICBidXR0b25zU2l6ZXIgPSB3eC5Cb3hTaXplcih3eC5WRVJU SUNBTCkKLSAgICAgICAgIGJ1dHRvbnNQYW5lbC5TZXRTaXplcihidXR0b25zU2l6ZXIpCi0gCi0t ICAgICAgICBzZWxmLmJ1dHRvbl9ybVthcmNoXSA9IHd4LkJ1dHRvbihidXR0b25zUGFuZWwsIDEw OCArIHNlbGYuY2FsY3VsYXRlRXZlbnREZWx0YShhcmNoKSwgIjwiKQotLSAgICAgICAgc2VsZi5i dXR0b25faW5bYXJjaF0gPSB3eC5CdXR0b24oYnV0dG9uc1BhbmVsLCAxMDkgKyBzZWxmLmNhbGN1 bGF0ZUV2ZW50RGVsdGEoYXJjaCksICI+IikKLSsgICAgICAgIHNlbGYuYnV0dG9uX3VuaW5zdGFs bFthcmNoaXRlY3R1cmVdID0gd3guQnV0dG9uKGJ1dHRvbnNQYW5lbCwgc2VsZi5fY2FsY3VsYXRl X2V2ZW50X251bWJlcigxMDgsIGFyY2hpdGVjdHVyZSksICI8IikKLSsgICAgICAgIHNlbGYuYnV0 dG9uX2luc3RhbGxbYXJjaGl0ZWN0dXJlXSA9IHd4LkJ1dHRvbihidXR0b25zUGFuZWwsIHNlbGYu X2NhbGN1bGF0ZV9ldmVudF9udW1iZXIoMTA5LCBhcmNoaXRlY3R1cmUpLCAiPiIpCi0gCi0gICAg ICAgICBidXR0b25zU2l6ZXIuQWRkU3RyZXRjaFNwYWNlcigpCi0tICAgICAgICBidXR0b25zU2l6 ZXIuQWRkKHNlbGYuYnV0dG9uX3JtW2FyY2hdLCAwLCB3eC5DRU5URVIpCi0rICAgICAgICBidXR0 b25zU2l6ZXIuQWRkKHNlbGYuYnV0dG9uX3VuaW5zdGFsbFthcmNoaXRlY3R1cmVdLCAwLCB3eC5D RU5URVIpCi0gICAgICAgICBidXR0b25zU2l6ZXIuQWRkU3BhY2VyKDEwKQotLSAgICAgICAgYnV0 dG9uc1NpemVyLkFkZChzZWxmLmJ1dHRvbl9pblthcmNoXSwgMCwgd3guQ0VOVEVSKQotKyAgICAg ICAgYnV0dG9uc1NpemVyLkFkZChzZWxmLmJ1dHRvbl9pbnN0YWxsW2FyY2hpdGVjdHVyZV0sIDAs IHd4LkNFTlRFUikKLSAgICAgICAgIGJ1dHRvbnNTaXplci5BZGRTdHJldGNoU3BhY2VyKCkKLSAK LS0gICAgICAgIHNlbGYuYnV0dG9uX3JtW2FyY2hdLkVuYWJsZShGYWxzZSkKLS0gICAgICAgIHNl bGYuYnV0dG9uX2luW2FyY2hdLkVuYWJsZShGYWxzZSkKLSsgICAgICAgIHNlbGYuYnV0dG9uX3Vu aW5zdGFsbFthcmNoaXRlY3R1cmVdLkVuYWJsZShGYWxzZSkKLSsgICAgICAgIHNlbGYuYnV0dG9u X2luc3RhbGxbYXJjaGl0ZWN0dXJlXS5FbmFibGUoRmFsc2UpCi0rCi0rICAgICAgICBzZWxmLkJp bmQod3guRVZUX0JVVFRPTiwgbGFtYmRhIGV2dDogc2VsZi5fb25fZGVsZXRlKGFyY2hpdGVjdHVy ZSksIGlkPXNlbGYuX2NhbGN1bGF0ZV9ldmVudF9udW1iZXIoMTA4LCBhcmNoaXRlY3R1cmUpKQot KyAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9CVVRUT04sIGxhbWJkYSBldnQ6IHNlbGYuX29uX2lu c3RhbGwoYXJjaGl0ZWN0dXJlKSwgaWQ9c2VsZi5fY2FsY3VsYXRlX2V2ZW50X251bWJlcigxMDks IGFyY2hpdGVjdHVyZSkpCi0gCi0tICAgICAgICBzZWxmLmJveFNpemVyc1thcmNoXS5BZGQoYnV0 dG9uc1BhbmVsLCAxLCB3eC5FWFBBTkQpCi0gCi0tICAgIGRlZiBsaXN0ZV92ZXJzaW9ucyhzZWxm LCBhcmNoPSJ4ODYiKToKLSsgICAgICAgIHNlbGYuYm94U2l6ZXJzW2FyY2hpdGVjdHVyZV0uQWRk KGJ1dHRvbnNQYW5lbCwgMSwgd3guRVhQQU5EKQotKwotKyAgICBkZWYgYWRkX2FyY2hpdGVjdHVy ZV90YWIoc2VsZiwgYXJjaD0ieDg2Iik6Ci0gICAgICAgICBzZWxmLnBhbmVsc1thcmNoXSA9IHd4 LlBhbmVsKHNlbGYsIC0xKQotIAotICAgICAgICAgc2VsZi5ib3hTaXplcnNbYXJjaF0gPSB3eC5C b3hTaXplcih3eC5IT1JJWk9OVEFMKQotICAgICAgICAgc2VsZi5wYW5lbHNbYXJjaF0uU2V0U2l6 ZXIoc2VsZi5ib3hTaXplcnNbYXJjaF0pCi0tICAgICAgICBzZWxmLmltYWdlc2FwcHNbYXJjaF0g PSB3eC5JbWFnZUxpc3QoMjIsIDIyKQotLSAgICAgICAgc2VsZi5pbWFnZXNhcHBzX2lbYXJjaF0g PSB3eC5JbWFnZUxpc3QoMjIsIDIyKQotIAotICAgICAgICAgc2VsZi5ib3hTaXplcnNbYXJjaF0u QWRkU3BhY2VyKDEwKQotICAgICAgICAgc2VsZi5fY3JlYXRlQXZhaWxhYmxlV2luZVZlcnNpb25z UGFuZWwoYXJjaCkKLUBAIC05MywzICsxMTAsMzkgQEAgZGVmIGxpc3RlX3ZlcnNpb25zKHNlbGYs IGFyY2g9Ing4NiIpOgotICAgICAgICAgc2VsZi5ib3hTaXplcnNbYXJjaF0uQWRkU3BhY2VyKDEw KQotIAotICAgICAgICAgc2VsZi5BZGRQYWdlKHNlbGYucGFuZWxzW2FyY2hdLCBfKCJXaW5lIHZl cnNpb25zIikgKyAiICgiICsgYXJjaCArICIpIiwgaW1hZ2VJZD0wKQotKwotKyAgICBkZWYgY2xl YW5fdmVyc2lvbl9vZl9hcmNoaXRlY3R1cmUoc2VsZiwgYXJjaCk6Ci0rICAgICAgICBzZWxmLmF2 YWlsYWJsZV93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaF0uRGVsZXRlQWxsSXRlbXMo KQotKyAgICAgICAgc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2Fy Y2hdLkRlbGV0ZUFsbEl0ZW1zKCkKLSsgICAgICAgIHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lv bl9yb290c1thcmNoXSA9IHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3Rv clthcmNoXS5BZGRSb290KCIiKQotKyAgICAgICAgc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9u X3Jvb3RzW2FyY2hdID0gc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9y W2FyY2hdLkFkZFJvb3QoIiIpCi0rICAgICAgICBzZWxmLm51bWJlcl9vZl9hdmFpbGFibGVfdmVy c2lvbnNbYXJjaF0gPSAwCi0rICAgICAgICBzZWxmLm51bWJlcl9vZl9pbnN0YWxsZWRfdmVyc2lv bnNbYXJjaF0gPSAwCi0rCi0rICAgIGRlZiBhZGRfYXZhaWxhYmxlX3ZlcnNpb24oc2VsZiwgYXJj aCwgdmVyc2lvbik6Ci0rICAgICAgICBzZWxmLm51bWJlcl9vZl9hdmFpbGFibGVfdmVyc2lvbnNb YXJjaF0gKz0gMQotKyAgICAgICAgc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9uc190cmVlX3Nl bGVjdG9yW2FyY2hdLkFwcGVuZEl0ZW0oc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9uX3Jvb3Rz W2FyY2hdLCB2ZXJzaW9uLCAwKQotKwotKyAgICBkZWYgYWRkX2luc3RhbGxlZF92ZXJzaW9uKHNl bGYsIGFyY2gsIHZlcnNpb24pOgotKyAgICAgICAgc2VsZi5udW1iZXJfb2ZfaW5zdGFsbGVkX3Zl cnNpb25zW2FyY2hdICs9IDEKLSsgICAgICAgIHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNf dHJlZV9zZWxlY3RvclthcmNoXS5BcHBlbmRJdGVtKHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lv bl9yb290c1thcmNoXSwgdmVyc2lvbiwgMCkKLSsKLSsgICAgZGVmIF9vbl9zZWxlY3RfaW5zdGFs bGVkX3dpbmVfdmVyc2lvbihzZWxmLCBhcmNoaXRlY3R1cmUpOgotKyAgICAgICAgc2VsZi5hdmFp bGFibGVfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hpdGVjdHVyZV0uVW5zZWxlY3RB bGwoKQotKyAgICAgICAgc2VsZi5idXR0b25fdW5pbnN0YWxsW2FyY2hpdGVjdHVyZV0uRW5hYmxl KFRydWUpCi0rICAgICAgICBzZWxmLmJ1dHRvbl9pbnN0YWxsW2FyY2hpdGVjdHVyZV0uRW5hYmxl KEZhbHNlKQotKwotKyAgICBkZWYgX29uX3NlbGVjdF9hdmFpbGFibGVfd2luZV92ZXJzaW9uKHNl bGYsIGFyY2hpdGVjdHVyZSk6Ci0rICAgICAgICBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNpb25z X3RyZWVfc2VsZWN0b3JbYXJjaGl0ZWN0dXJlXS5VbnNlbGVjdEFsbCgpCi0rICAgICAgICBzZWxm LmJ1dHRvbl91bmluc3RhbGxbYXJjaGl0ZWN0dXJlXS5FbmFibGUoRmFsc2UpCi0rICAgICAgICBz ZWxmLmJ1dHRvbl9pbnN0YWxsW2FyY2hpdGVjdHVyZV0uRW5hYmxlKFRydWUpCi0rCi0rICAgIGRl ZiBfb25faW5zdGFsbChzZWxmLCBhcmNoaXRlY3R1cmUpOgotKyAgICAgICAgc2VsZWN0ZWRfdmVy c2lvbiA9IHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNoaXRl Y3R1cmVdLkdldEl0ZW1UZXh0KHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxl Y3RvclthcmNoaXRlY3R1cmVdLkdldFNlbGVjdGlvbigpKQotKyAgICAgICAgaWYgc2VsZi5vbl9p bnN0YWxsX2hhbmRsZXIgaXMgbm90IE5vbmU6Ci0rICAgICAgICAgICAgc2VsZi5vbl9pbnN0YWxs X2hhbmRsZXIoYXJjaGl0ZWN0dXJlLCBzZWxlY3RlZF92ZXJzaW9uKQotKwotKyAgICBkZWYgX29u X2RlbGV0ZShzZWxmLCBhcmNoaXRlY3R1cmUpOgotKyAgICAgICAgc2VsZWN0ZWRfdmVyc2lvbiA9 IHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNoaXRlY3R1cmVd LkdldEl0ZW1UZXh0KHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3Rvclth cmNoaXRlY3R1cmVdLkdldFNlbGVjdGlvbigpKQotKyAgICAgICAgaWYgc2VsZi5vbl9yZW1vdmVf aGFuZGxlciBpcyBub3QgTm9uZToKLSsgICAgICAgICAgICBzZWxmLm9uX3JlbW92ZV9oYW5kbGVy KGFyY2hpdGVjdHVyZSwgc2VsZWN0ZWRfdmVyc2lvbikKLWRpZmYgLS1naXQgYS9weXRob24vd2lu ZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNUb29scy5weSBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dp bmVWZXJzaW9uc1Rvb2xzLnB5Ci1pbmRleCAwNmZiNDAxZTYuLjY5ZDRjZjJiMiAxMDA2NDQKLS0t LSBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xzLnB5Ci0rKysgYi9weXRo b24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNUb29scy5weQotQEAgLTEwLDIyICsxMCwxMCBA QCBkZWYgZmV0Y2hVc2VyT1MoKToKLSAgICAgZWxzZToKLSAgICAgICAgIHJldHVybiAiZnJlZWJz ZCIKLSAKLS1kZWYgR2V0V2luZVZlcnNpb24oZ2FtZSk6Ci0tICAgIGNmaWxlID0gVmFyaWFibGVz LnBsYXlvbmxpbnV4X3JlcCArICJzaG9ydGN1dHMvIiArIGdhbWUKLS0gICAgZmljaGllciA9IG9w ZW4oY2ZpbGUsICJyIikucmVhZGxpbmVzKCkKLS0gICAgaSA9IDAKLS0gICAgbGluZSA9ICIiCi0t ICAgIHdoaWxlIChpIDwgbGVuKGZpY2hpZXIpKToKLS0gICAgICAgIGZpY2hpZXJbaV0gPSBmaWNo aWVyW2ldLnJlcGxhY2UoIlxuIiwgIiIpCi0tICAgICAgICBpZiAoIlBBVEg9IiBpbiBmaWNoaWVy W2ldIGFuZCAiV2luZVZlcnNpb25zIiBpbiBmaWNoaWVyW2ldKToKLS0gICAgICAgICAgICBsaW5l ID0gZmljaGllcltpXS5yZXBsYWNlKCIvLyIsICIvIikKLS0gICAgICAgIGkgKz0gMQotK2RlZiBh cmNoaXRlY3R1cmVfaXNfc3VwcG9ydGVkKGFyY2hpdGVjdHVyZV9uYW1lKToKLSsgICAgcmV0dXJu IFRydWUgIyMgRklYTUUKLSAKLS0gICAgaWYgbGluZSA9PSAiIjoKLS0gICAgICAgIHZlcnNpb24g PSAiU3lzdGVtIgotLSAgICBlbHNlOgotLSAgICAgICAgdmVyc2lvbiA9IGxpbmUucmVwbGFjZSgi UEFUSD0iLCAiIikucmVwbGFjZSgiXCIiLCAiIikucmVwbGFjZShWYXJpYWJsZXMucGxheW9ubGlu dXhfcmVwLCAiIikucmVwbGFjZSgiLy8iLCAiLyIpCi0tICAgICAgICB2ZXJzaW9uID0gdmVyc2lv bi5zcGxpdCgiLyIpCi0tICAgICAgICB2ZXJzaW9uID0gdmVyc2lvblsxXQotLQotLSAgICByZXR1 cm4gdmVyc2lvbgotK2RlZiBmZXRjaF9zdXBwb3J0ZWRfYXJjaHMoKToKLSsgICAgZm9yIGF2YWls YWJsZV9hcmNoIGluIFsieDg2IiwgIng4Nm9uNjQiLCAiYW1kNjQiXToKLSsgICAgICAgIGlmIGFy Y2hpdGVjdHVyZV9pc19zdXBwb3J0ZWQoYXZhaWxhYmxlX2FyY2gpOgotKyAgICAgICAgICAgIHlp ZWxkIGF2YWlsYWJsZV9hcmNoCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2lu ZVZlcnNpb25zV2luZG93LnB5IGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zV2lu ZG93LnB5Ci1pbmRleCBlM2I4YjQxNjAuLmI3NmRiMGIyNSAxMDA3NTUKLS0tLSBhL3B5dGhvbi93 aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1dpbmRvdy5weQotKysrIGIvcHl0aG9uL3dpbmVfdmVy c2lvbnMvV2luZVZlcnNpb25zV2luZG93LnB5Ci1AQCAtMzAsMTgzICszMCw5NSBAQAotIGltcG9y dCBsaWIucGxheW9ubGludXggYXMgcGxheW9ubGludXgKLSBmcm9tIHdpbmVfdmVyc2lvbnMuV2lu ZVZlcnNpb25zRmV0Y2hlciBpbXBvcnQgV2luZVZlcnNpb25GZXRjaGVyCi0gZnJvbSB3aW5lX3Zl cnNpb25zLldpbmVWZXJzaW9uc05vdGVib29rIGltcG9ydCBXaW5lVmVyc2lvbnNOb3RlYm9vawot LWZyb20gd2luZV92ZXJzaW9ucy5XaW5lVmVyc2lvbnNUb29scyBpbXBvcnQgZmV0Y2hVc2VyT1MK LStmcm9tIHdpbmVfdmVyc2lvbnMuV2luZVZlcnNpb25zVG9vbHMgaW1wb3J0IGZldGNoVXNlck9T LCBmZXRjaF9zdXBwb3J0ZWRfYXJjaHMKLSAKLSBsaWIubG5nLkxhbmcoKQotIAotIAotLWRlZiBT ZXRXaW5lVmVyc2lvbihnYW1lLCB2ZXJzaW9uKToKLS0gICAgY2ZpbGUgPSBWYXJpYWJsZXMucGxh eW9ubGludXhfcmVwICsgInNob3J0Y3V0cy8iICsgZ2FtZQotLSAgICBmaWNoaWVyID0gb3Blbihj ZmlsZSwgInIiKS5yZWFkbGluZXMoKQotLSAgICBpID0gMAotLSAgICBsaW5lID0gW10KLS0gICAg d2hpbGUgKGkgPCBsZW4oZmljaGllcikpOiAgIyBPbiByZXRpcmUgbCdldmVudHVlbAotLSAgICAg ICAgZmljaGllcltpXSA9IGZpY2hpZXJbaV0ucmVwbGFjZSgiXG4iLCAiIikKLS0gICAgICAgIGlm ICgiUEFUSD0iIG5vdCBpbiBmaWNoaWVyW2ldIG9yICJXaW5lVmVyc2lvbnMiIG5vdCBpbiBmaWNo aWVyW2ldKToKLS0gICAgICAgICAgICBsaW5lLmFwcGVuZChmaWNoaWVyW2ldKQotLSAgICAgICAg aSArPSAxCi0tCi0tICAgIGZpY2hpZXJfd3JpdGUgPSBvcGVuKGNmaWxlLCAidyIpCi0rY2xhc3Mg V2luZVZlcnNpb25zV2luZG93KHd4LkZyYW1lKToKLSsgICAgZGVmIG9uX2F2YWlsYWJsZV93aW5l X3ZlcnNpb25zX2Rvd25sb2FkZWQoc2VsZiwgdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZSk6Ci0r ICAgICAgICBmb3IgYXJjaGl0ZWN0dXJlIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmU6Ci0r ICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zID0gW10KLSsgICAgICAgICAgICBmb3IgdmVy c2lvbiBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlW2FyY2hpdGVjdHVyZV06Ci0rICAgICAg ICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucy5hcHBlbmQodmVyc2lvblsibmFtZSJdKQotIAot LSAgICBpZiAodmVyc2lvbiAhPSAiU3lzdGVtIik6ICAjIE9uIGluc2VyZQotLSAgICAgICAgaWYg b3MuZW52aXJvblsiUE9MX09TIl0gPT0gIk1hYyI6Ci0tICAgICAgICAgICAgbGluZS5pbnNlcnQo MSwgIlBBVEg9XCIiICsgVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICJXaW5lVmVyc2lvbnMv IiArIHZlcnNpb24gKyAiL2Jpbi86JFBBVEhcIiIpCi0tICAgICAgICAgICAgbGluZS5pbnNlcnQo MSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAiTERfTElCUkFSWV9QQVRIPVwiIiArIFZhcmlh Ymxlcy5wbGF5b25saW51eF9yZXAgKyAiV2luZVZlcnNpb25zLyIgKyB2ZXJzaW9uICsgIi9saWIv OiRMRF9MSUJSQVJZX1BBVEhcIiIpCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIGxpbmUu aW5zZXJ0KDEsICJQQVRIPVwiIiArIFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiV2luZVZl cnNpb25zLyIgKyB2ZXJzaW9uICsgIi91c3IvYmluLzokUEFUSFwiIikKLS0gICAgICAgICAgICBs aW5lLmluc2VydCgxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICJMRF9MSUJSQVJZX1BBVEg9 XCIiICsgVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICJXaW5lVmVyc2lvbnMvIiArIHZlcnNp b24gKyAiL3Vzci9saWIvOiRMRF9MSUJSQVJZX1BBVEhcIiIpCi0rICAgICAgICAgICAgYXZhaWxh YmxlX3ZlcnNpb25zLnNvcnQoa2V5PW5hdHNvcnQubmF0c29ydF9rZXlnZW4oKSkKLSsgICAgICAg ICAgICBhdmFpbGFibGVfdmVyc2lvbnMucmV2ZXJzZSgpCi0rICAgICAgICAgICAgYXZhaWxhYmxl X3ZlcnNpb25zID0gYXZhaWxhYmxlX3ZlcnNpb25zWzpdCi0gCi0tICAgIGkgPSAwCi0tICAgIHdo aWxlIChpIDwgbGVuKGxpbmUpKTogICMgT24gZWNyaXQKLS0gICAgICAgIGZpY2hpZXJfd3JpdGUu d3JpdGUobGluZVtpXSArICJcbiIpCi0tICAgICAgICBpICs9IDEKLSsgICAgICAgICAgICBmb3Ig dmVyc2lvbiBpbiBhdmFpbGFibGVfdmVyc2lvbnM6Ci0rICAgICAgICAgICAgICAgIHd4LkNhbGxB ZnRlcihzZWxmLm5vdGVib29rLmFkZF9hdmFpbGFibGVfdmVyc2lvbiwgYXJjaGl0ZWN0dXJlLCB2 ZXJzaW9uKQotIAotKyAgICBkZWYgb25faW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNfZG93bmxvYWRl ZChzZWxmLCB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlKToKLSsgICAgICAgIGZvciBhcmNoaXRl Y3R1cmUgaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZToKLSsgICAgICAgICAgICBpbnN0YWxs ZWRfdmVyc2lvbnMgPSBbXQotKyAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIHZlcnNpb25zX3Bl cl9hcmNoaXRlY3R1cmVbYXJjaGl0ZWN0dXJlXToKLSsgICAgICAgICAgICAgICAgaW5zdGFsbGVk X3ZlcnNpb25zLmFwcGVuZCh2ZXJzaW9uWyJuYW1lIl0pCi0gCi0rICAgICAgICAgICAgaW5zdGFs bGVkX3ZlcnNpb25zLnNvcnQoa2V5PW5hdHNvcnQubmF0c29ydF9rZXlnZW4oKSkKLSsgICAgICAg ICAgICBpbnN0YWxsZWRfdmVyc2lvbnMucmV2ZXJzZSgpCi0rICAgICAgICAgICAgaW5zdGFsbGVk X3ZlcnNpb25zID0gaW5zdGFsbGVkX3ZlcnNpb25zWzpdCi0gCi0rICAgICAgICAgICAgZm9yIHZl cnNpb24gaW4gaW5zdGFsbGVkX3ZlcnNpb25zOgotKyAgICAgICAgICAgICAgICB3eC5DYWxsQWZ0 ZXIoc2VsZi5ub3RlYm9vay5hZGRfaW5zdGFsbGVkX3ZlcnNpb24sIGFyY2hpdGVjdHVyZSwgdmVy c2lvbikKLSAKLSsgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCBlcnJvcik6Ci0rICAgICAgICBw cmludChlcnJvcikKLSAKLS1jbGFzcyBXaW5lVmVyc2lvbnNXaW5kb3cod3guRnJhbWUpOgotICAg ICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCBpZCwgdGl0bGUpOgotLSAgICAgICAgc2VsZi5k b3dubG9hZDMyID0gV2luZVZlcnNpb25GZXRjaGVyKCJ4ODYiKQotLSAgICAgICAgaWYgKG9zLmVu dmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAiVHJ1ZSIpOgotLSAgICAgICAgICAgIHNlbGYu ZG93bmxvYWQ2NCA9IFdpbmVWZXJzaW9uRmV0Y2hlcigiYW1kNjQiKQotLQotLSAgICAgICAgd3gu RnJhbWUuX19pbml0X18oc2VsZiwgcGFyZW50LCAtMSwgdGl0bGUsIHNpemU9KDc1MCwgNDAwICsg VmFyaWFibGVzLndpbmRvd3NfYWRkX3NpemUpLAotKyAgICAgICAgd3guRnJhbWUuX19pbml0X18o c2VsZiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgIC0xLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplPSg3NTAsIDQwMCArIFZhcmlhYmxlcy53aW5kb3dz X2FkZF9zaXplKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXd4LkNMT1NFX0JP WCB8IHd4LkNBUFRJT04gfCB3eC5NSU5JTUlaRV9CT1gpCi0gICAgICAgICBzZWxmLnRpbWVyID0g d3guVGltZXIoc2VsZiwgMSkKLSAgICAgICAgIHNlbGYuU2V0SWNvbih3eC5JY29uKFZhcmlhYmxl cy5wbGF5b25saW51eF9lbnYgKyAiL2V0Yy9wbGF5b25saW51eC5wbmciLCB3eC5CSVRNQVBfVFlQ RV9BTlkpKQotLSAgICAgICAgIyBzZWxmLnBhbmVsID0gd3guUGFuZWwoc2VsZiwgLTEpCi0tCi0t ICAgICAgICBzZWxmLm9uZ2xldHMgPSBXaW5lVmVyc2lvbnNOb3RlYm9vayhzZWxmKQotLSAgICAg ICAgIyBzZWxmLnNpemVyID0gd3guQm94U2l6ZXIod3guVkVSVElDQUwpCi0tICAgICAgICAjIHNl bGYuc2l6ZXIuQWRkKHNlbGYub25nbGV0cywgMTUsIHd4LkVYUEFORHx3eC5BTEwsIDIpCi0rICAg ICAgICBzZWxmLndpbmVfdmVyc2lvbl9mZXRjaGVyID0gV2luZVZlcnNpb25GZXRjaGVyKGZldGNo VXNlck9TKCkpCi0gCi0tICAgICAgICBzZWxmLmdldFZlcnNpb25zKCJ4ODYiKQotLSAgICAgICAg aWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAiVHJ1ZSIpOgotLSAgICAgICAg ICAgIHNlbGYuZ2V0VmVyc2lvbnMoImFtZDY0IikKLS0gICAgICAgICMgc2VsZi5wYW5lbC5TZXRT aXplcihzZWxmLnNpemVyKQotLSAgICAgICAgIyBzZWxmLnBhbmVsLlNldEF1dG9MYXlvdXQoVHJ1 ZSkKLS0KLS0gICAgICAgIHNlbGYub25nbGV0cy5saXN0ZV92ZXJzaW9ucygpCi0tICAgICAgICBp ZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09ICJUcnVlIik6Ci0tICAgICAgICAg ICAgc2VsZi5vbmdsZXRzLmxpc3RlX3ZlcnNpb25zKCJhbWQ2NCIpCi0tICAgICAgICBzZWxmLm9s ZHJlbG9hZDMyID0gIiIKLSsgICAgICAgIHNlbGYubm90ZWJvb2sgPSBXaW5lVmVyc2lvbnNOb3Rl Ym9vayhzZWxmKQotKyAgICAgICAgc2VsZi5zaXplciA9IHd4LkJveFNpemVyKHd4LlZFUlRJQ0FM KQotKyAgICAgICAgc2VsZi5zaXplci5BZGQoc2VsZi5ub3RlYm9vaywgMTUsIHd4LkVYUEFORCB8 IHd4LkFMTCwgMikKLSAKLS0gICAgICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxF Il0gPT0gIlRydWUiKToKLS0gICAgICAgICAgICBzZWxmLm9sZHJlbG9hZDY0ID0gIiIKLSsgICAg ICAgIGZvciBhdmFpbGFibGVfYXJjaCBpbiBmZXRjaF9zdXBwb3J0ZWRfYXJjaHMoKToKLSsgICAg ICAgICAgICBzZWxmLm5vdGVib29rLmFkZF9hcmNoaXRlY3R1cmVfdGFiKGF2YWlsYWJsZV9hcmNo KQotIAotLSAgICAgICAgc2VsZi5vbGR2ZXJzaW9uczMyID0gW10KLSsgICAgICAgIHNlbGYubGFz dF9jaGVja3N1bSA9IE5vbmUKLSsgICAgICAgIHNlbGYubm90ZWJvb2sub25faW5zdGFsbF9oYW5k bGVyID0gc2VsZi5pbnN0YWxsX3dpbmVfdmVyc2lvbgotKyAgICAgICAgc2VsZi5ub3RlYm9vay5v bl9yZW1vdmVfaGFuZGxlciA9IHNlbGYucmVtb3ZlX3dpbmVfdmVyc2lvbgotIAotLSAgICAgICAg aWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAiVHJ1ZSIpOgotLSAgICAgICAg ICAgIHNlbGYub2xkdmVyc2lvbnM2NCA9IFtdCi0rICAgICAgICBzZWxmLkJpbmQod3guRVZUX1RJ TUVSLCBzZWxmLmRldGVjdF9jaGFuZ2VzLCBzZWxmLnRpbWVyKQotKyAgICAgICAgc2VsZi50aW1l ci5TdGFydCgxMDAwKQotIAotLSAgICAgICAgIyBzZWxmLmJ1dHRvbiA9IHd4LkJ1dHRvbihzZWxm LnBhbmVsc19idXR0b25zLCB3eC5JRF9DTE9TRSwgXygiQ2xvc2UiKSwgcG9zPSg1MTAsIDUpLCBz aXplPXd4LkRlZmF1bHRTaXplKQotKyAgICBkZWYgcmVmcmVzaChzZWxmKToKLSsgICAgICAgIGZv ciBhdmFpbGFibGVfYXJjaCBpbiBmZXRjaF9zdXBwb3J0ZWRfYXJjaHMoKToKLSsgICAgICAgICAg ICBzZWxmLm5vdGVib29rLmNsZWFuX3ZlcnNpb25fb2ZfYXJjaGl0ZWN0dXJlKGF2YWlsYWJsZV9h cmNoKQotIAotLSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9CVVRUT04sIHNlbGYuY2xvc2VhcHAs IGlkPXd4LklEX0NMT1NFKQotLSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9DTE9TRSwgc2VsZi5j bG9zZWFwcCkKLS0gICAgICAgIHNlbGYuQmluZCh3eC5FVlRfVFJFRV9TRUxfQ0hBTkdFRCwgc2Vs Zi51bnNlbGVjdDMyLCBpZD0xMDYpCi0tICAgICAgICBzZWxmLkJpbmQod3guRVZUX1RSRUVfU0VM X0NIQU5HRUQsIHNlbGYudW5zZWxlY3QzMiwgaWQ9MTA3KQotLSAgICAgICAgc2VsZi5CaW5kKHd4 LkVWVF9CVVRUT04sIHNlbGYuZGVsZXRlMzIsIGlkPTEwOCkKLS0gICAgICAgIHNlbGYuQmluZCh3 eC5FVlRfQlVUVE9OLCBzZWxmLmluc3RhbGwzMiwgaWQ9MTA5KQotKyAgICAgICAgc2VsZi53aW5l X3ZlcnNpb25fZmV0Y2hlci5mZXRjaF9hbGxfYXZhaWxhYmxlX3dpbmVfdmVyc2lvbihzZWxmLm9u X2F2YWlsYWJsZV93aW5lX3ZlcnNpb25zX2Rvd25sb2FkZWQsIHNlbGYuaGFuZGxlX2Vycm9yKQot KyAgICAgICAgc2VsZi53aW5lX3ZlcnNpb25fZmV0Y2hlci5mZXRjaF9hbGxfaW5zdGFsbGVkX3dp bmVfdmVyc2lvbihzZWxmLm9uX2luc3RhbGxlZF93aW5lX3ZlcnNpb25zX2Rvd25sb2FkZWQsIHNl bGYuaGFuZGxlX2Vycm9yKQotIAotLSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9UUkVFX1NFTF9D SEFOR0VELCBzZWxmLnVuc2VsZWN0NjQsIGlkPTIwNikKLS0gICAgICAgIHNlbGYuQmluZCh3eC5F VlRfVFJFRV9TRUxfQ0hBTkdFRCwgc2VsZi51bnNlbGVjdDY0LCBpZD0yMDcpCi0tICAgICAgICBz ZWxmLkJpbmQod3guRVZUX0JVVFRPTiwgc2VsZi5kZWxldGU2NCwgaWQ9MjA4KQotLSAgICAgICAg c2VsZi5CaW5kKHd4LkVWVF9CVVRUT04sIHNlbGYuaW5zdGFsbDY0LCBpZD0yMDkpCi0rICAgIGRl ZiBkZXRlY3RfY2hhbmdlcyhzZWxmLCBldmVudCk6Ci0rICAgICAgICBjaGVja3N1bSA9IHNlbGYu d2luZV92ZXJzaW9uX2ZldGNoZXIuY2FsY3VsYXRlX2luc3RhbGxlZF9oYXNoKCkKLSAKLS0gICAg ICAgIHNlbGYuQmluZCh3eC5FVlRfVElNRVIsIHNlbGYuQXV0b1JlbG9hZCwgc2VsZi50aW1lcikK LS0gICAgICAgIHNlbGYudGltZXIuU3RhcnQoMjAwKQotKyAgICAgICAgaWYgc2VsZi5sYXN0X2No ZWNrc3VtICE9IGNoZWNrc3VtOgotKyAgICAgICAgICAgIHNlbGYubGFzdF9jaGVja3N1bSA9IGNo ZWNrc3VtCi0rICAgICAgICAgICAgc2VsZi5yZWZyZXNoKCkKLSAKLS0gICAgZGVmIEF1dG9SZWxv YWQoc2VsZiwgZXZlbnQpOgotLSAgICAgICAgcmVsb2FkMzIgPSBvcy5saXN0ZGlyKFZhcmlhYmxl cy5wbGF5b25saW51eF9yZXAgKyAiL3dpbmUvIiArIGZldGNoVXNlck9TKCkgKyAiLXg4NiIpCi0t ICAgICAgICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09ICJUcnVlIik6Ci0t ICAgICAgICAgICAgcmVsb2FkNjQgPSBvcy5saXN0ZGlyKFZhcmlhYmxlcy5wbGF5b25saW51eF9y ZXAgKyAiL3dpbmUvIiArIGZldGNoVXNlck9TKCkgKyAiLWFtZDY0IikKLS0gICAgICAgIGlmIChz ZWxmLmRvd25sb2FkMzIudGhyZWFkX21lc3NhZ2UgPT0gIk9rIiBvciBzZWxmLmRvd25sb2FkMzIu dGhyZWFkX21lc3NhZ2UgPT0gIkVyciIpOgotLSAgICAgICAgICAgIHNlbGYuV3JpdGVWZXJzaW9u KCkKLS0gICAgICAgICAgICBzZWxmLmRvd25sb2FkMzIudGhyZWFkX21lc3NhZ2UgPSAiV2FpdCIK LSAKLS0gICAgICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRydWUi KToKLS0gICAgICAgICAgICBpZiAoc2VsZi5kb3dubG9hZDY0LnRocmVhZF9tZXNzYWdlID09ICJP ayIgb3Igc2VsZi5kb3dubG9hZDY0LnRocmVhZF9tZXNzYWdlID09ICJFcnIiKToKLS0gICAgICAg ICAgICAgICAgc2VsZi5Xcml0ZVZlcnNpb24oImFtZDY0IikKLS0gICAgICAgICAgICAgICAgc2Vs Zi5kb3dubG9hZDY0LnRocmVhZF9tZXNzYWdlID0gIldhaXQiCi0tCi0tICAgICAgICBpZiAob3Mu ZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09ICJUcnVlIik6Ci0tICAgICAgICAgICAgaWYg KHJlbG9hZDY0ICE9IHNlbGYub2xkcmVsb2FkNjQpOgotLSAgICAgICAgICAgICAgICBzZWxmLmdl dFZlcnNpb25zKCJhbWQ2NCIpCi0tICAgICAgICAgICAgICAgIHNlbGYub2xkcmVsb2FkNjQgPSBy ZWxvYWQ2NAotLQotLSAgICAgICAgaWYgKHJlbG9hZDMyICE9IHNlbGYub2xkcmVsb2FkMzIpOgot LSAgICAgICAgICAgIHNlbGYuZ2V0VmVyc2lvbnMoKQotLSAgICAgICAgICAgIHNlbGYub2xkcmVs b2FkMzIgPSByZWxvYWQzMgotLQotLSAgICAgICAgaWYgKHNlbGYuZG93bmxvYWQzMi52ZXJzaW9u cyAhPSBzZWxmLm9sZHZlcnNpb25zMzIpOgotLSAgICAgICAgICAgIHNlbGYub2xkdmVyc2lvbnMz MiA9IHNlbGYuZG93bmxvYWQzMi52ZXJzaW9uc1s6XQotLQotLSAgICAgICAgaWYgKG9zLmVudmly b25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAiVHJ1ZSIpOgotLSAgICAgICAgICAgIGlmIChzZWxm LmRvd25sb2FkNjQudmVyc2lvbnMgIT0gc2VsZi5vbGR2ZXJzaW9uczY0KToKLS0gICAgICAgICAg ICAgICAgc2VsZi5vbGR2ZXJzaW9uczY0ID0gc2VsZi5kb3dubG9hZDY0LnZlcnNpb25zWzpdCi0t Ci0tICAgIGRlZiBzaXplZGlyZWN0b3J5KHNlbGYsIHBhdGgpOgotLSAgICAgICAgc2l6ZSA9IDAK LS0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBhdGgpOgotLSAgICAg ICAgICAgIGZvciBmaWMgaW4gZmlsZXM6Ci0tICAgICAgICAgICAgICAgIHNpemUgKz0gb3MucGF0 aC5nZXRzaXplKG9zLnBhdGguam9pbihyb290LCBmaWMpKQotLSAgICAgICAgcmV0dXJuIHNpemUK LS0KLS0gICAgZGVmIHVuc2VsZWN0MzIoc2VsZiwgZXZlbnQpOgotLSAgICAgICAgaWYgKGV2ZW50 LkdldElkKCkgPT0gMTA2KToKLS0gICAgICAgICAgICBzZWxmLm9uZ2xldHMuaW5zdGFsbGVkV2lu ZVZlcnNpb25zVHJlZVNlbGVjdG9yWyJ4ODYiXS5VbnNlbGVjdEFsbCgpCi0tICAgICAgICAgICAg c2VsZi5vbmdsZXRzLmJ1dHRvbl9ybVsieDg2Il0uRW5hYmxlKEZhbHNlKQotLSAgICAgICAgICAg IHNlbGYub25nbGV0cy5idXR0b25faW5bIng4NiJdLkVuYWJsZShUcnVlKQotLSAgICAgICAgaWYg KGV2ZW50LkdldElkKCkgPT0gMTA3KToKLS0gICAgICAgICAgICBzZWxmLm9uZ2xldHMuYXZhaWxh YmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yWyJ4ODYiXS5VbnNlbGVjdEFsbCgpCi0tICAgICAg ICAgICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9ybVsieDg2Il0uRW5hYmxlKFRydWUpCi0tICAgICAg ICAgICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9pblsieDg2Il0uRW5hYmxlKEZhbHNlKQotLQotLSAg ICBkZWYgZGVsZXRlMzIoc2VsZiwgZXZlbnQpOgotLSAgICAgICAgc2VsZi5kZWxldGVfY29tbW9u KGV2ZW50LCAieDg2IikKLS0KLS0gICAgZGVmIGRlbGV0ZV9jb21tb24oc2VsZiwgZXZlbnQsIGFy Y2gpOgotLSAgICAgICAgdmVyc2lvbiA9IHNlbGYub25nbGV0cy5pbnN0YWxsZWRXaW5lVmVyc2lv bnNUcmVlU2VsZWN0b3JbYXJjaF0uR2V0SXRlbVRleHQoCi0tICAgICAgICAgICAgc2VsZi5vbmds ZXRzLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5HZXRTZWxlY3Rpb24o KSkKLS0gICAgICAgIHVzZWRfdmVyc2lvbiA9IHNlbGYuY2hlY2tWZXJzaW9uVXNlKGFyY2gpICAj IEdldCB0aGUgc2V0IG9mIHdpbmUgdmVyc2lvbiB1c2VkIGJ5IHdpbmVwcmVmaXgKLSsgICAgZGVm IHJlbW92ZV93aW5lX3ZlcnNpb24oc2VsZiwgYXJjaGl0ZWN0dXJlLCB2ZXJzaW9uKToKLSsgICAg ICAgIHVzZWRfdmVyc2lvbiA9IHNlbGYuY2hlY2tWZXJzaW9uVXNlKGFyY2hpdGVjdHVyZSkgICMg R2V0IHRoZSBzZXQgb2Ygd2luZSB2ZXJzaW9uIHVzZWQgYnkgd2luZXByZWZpeAotICAgICAgICAg bWVzc2FnZSA9IF8oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgd2luZSB7MH0/Jyku Zm9ybWF0KHZlcnNpb24pCi0gICAgICAgICBpZiB2ZXJzaW9uIGluIHVzZWRfdmVyc2lvbjoKLSAg ICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIgKyBfKCdUaGlzIHZlcnNpb24gaXMgQ1VSUkVOVExZ IElOIFVTRScpCi0gICAgICAgICBpZiAod3guWUVTID09IHd4Lk1lc3NhZ2VCb3gobWVzc2FnZSwg b3MuZW52aXJvblsiQVBQTElDQVRJT05fVElUTEUiXSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHlsZT13eC5ZRVNfTk8gfCB3eC5JQ09OX1FVRVNUSU9OKSk6Ci0tICAg ICAgICAgICAgc2h1dGlsLnJtdHJlZShWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgIi93aW5l LyIgKyBmZXRjaFVzZXJPUygpICsgIi0iICsgYXJjaCArICIvIiArIHZlcnNpb24pCi0tCi0tICAg IGRlZiBpbnN0YWxsMzIoc2VsZiwgZXZlbnQpOgotLSAgICAgICAgc2VsZi5pbnN0YWxsX2NvbW1v bihldmVudCwgIng4NiIpCi0tCi0tICAgIGRlZiBpbnN0YWxsX2NvbW1vbihzZWxmLCBldmVudCwg YXJjaCk6Ci0tICAgICAgICBpbnN0YWxsID0gc2VsZi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJz aW9uc1RyZWVTZWxlY3RvclthcmNoXS5HZXRJdGVtVGV4dChzZWxmLm9uZ2xldHMuYXZhaWxhYmxl V2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkdldFNlbGVjdGlvbigpKQotLSAgICAgICAg c3VicHJvY2Vzcy5Qb3BlbihbImJhc2giLCBWYXJpYWJsZXMucGxheW9ubGludXhfZW52ICsgIi9i YXNoL2luc3RhbGxfd3ZlciIsIGluc3RhbGwsIGFyY2hdKQotKyAgICAgICAgICAgIHNodXRpbC5y bXRyZWUoVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICIvd2luZS8iICsgZmV0Y2hVc2VyT1Mo KSArICItIiArIGFyY2hpdGVjdHVyZSArICIvIiArIHZlcnNpb24pCi0gCi0tICAgIGRlZiB1bnNl bGVjdDY0KHNlbGYsIGV2ZW50KToKLS0gICAgICAgIGlmIChldmVudC5HZXRJZCgpID09IDIwNik6 Ci0tICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxl Y3RvclsiYW1kNjQiXS5VbnNlbGVjdEFsbCgpCi0tICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmJ1 dHRvbl9ybVsiYW1kNjQiXS5FbmFibGUoRmFsc2UpCi0tICAgICAgICAgICAgc2VsZi5vbmdsZXRz LmJ1dHRvbl9pblsiYW1kNjQiXS5FbmFibGUoVHJ1ZSkKLS0gICAgICAgIGlmIChldmVudC5HZXRJ ZCgpID09IDIwNyk6Ci0tICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJz aW9uc1RyZWVTZWxlY3RvclsiYW1kNjQiXS5VbnNlbGVjdEFsbCgpCi0tICAgICAgICAgICAgc2Vs Zi5vbmdsZXRzLmJ1dHRvbl9ybVsiYW1kNjQiXS5FbmFibGUoVHJ1ZSkKLS0gICAgICAgICAgICBz ZWxmLm9uZ2xldHMuYnV0dG9uX2luWyJhbWQ2NCJdLkVuYWJsZShGYWxzZSkKLSAKLS0gICAgZGVm IGRlbGV0ZTY0KHNlbGYsIGV2ZW50KToKLS0gICAgICAgIHNlbGYuZGVsZXRlX2NvbW1vbihldmVu dCwgImFtZDY0IikKLSsgICAgZGVmIGluc3RhbGxfd2luZV92ZXJzaW9uKHNlbGYsIGFyY2hpdGVj dHVyZSwgdmVyc2lvbik6Ci0rICAgICAgICBwcmludCgiJXMgb2YgYXJjaGl0ZWN0dXJlICVzIHdp bGwgYmUgaW5zdGFsbGVkICIgJSAodmVyc2lvbiwgYXJjaGl0ZWN0dXJlKSkKLSsgICAgICAgIHN1 YnByb2Nlc3MuUG9wZW4oWyJiYXNoIiwgVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiArICIvYmFz aC9pbnN0YWxsX3d2ZXIiLCB2ZXJzaW9uLCBhcmNoaXRlY3R1cmVdKQotIAotLSAgICBkZWYgaW5z dGFsbDY0KHNlbGYsIGV2ZW50KToKLS0gICAgICAgIHNlbGYuaW5zdGFsbF9jb21tb24oZXZlbnQs ICJhbWQ2NCIpCi0tCi0tICAgIGRlZiBnZXRWZXJzaW9ucyhzZWxmLCBhcmNoPSJ4ODYiKToKLS0g ICAgICAgIGlmIChhcmNoID09ICJ4ODYiKToKLS0gICAgICAgICAgICBzZWxmLmRvd25sb2FkMzIu dGhyZWFkX21lc3NhZ2UgPSAiZ2V0IgotLSAgICAgICAgaWYgKGFyY2ggPT0gImFtZDY0Iik6Ci0t ICAgICAgICAgICAgc2VsZi5kb3dubG9hZDY0LnRocmVhZF9tZXNzYWdlID0gImdldCIKLSAKLSAg ICAgZGVmIGNoZWNrVmVyc2lvblVzZShzZWxmLCBhcmNoKTogICMgQ2hlY2sgdGhlIHdpbmUgdmVy c2lvbiB1c2UgYnkgd2luZXByZWZpeAotICAgICAgICAgdXNlZF92ZXJzaW9ucyA9IHNldChbXSkK LUBAIC0yMTgsNjQgKzEzMCw4IEBAIGRlZiBjaGVja1ZlcnNpb25Vc2Uoc2VsZiwgYXJjaCk6ICAj IENoZWNrIHRoZSB3aW5lIHZlcnNpb24gdXNlIGJ5IHdpbmVwcmVmaXgKLSAgICAgICAgICAgICAg ICAgdXNlZF92ZXJzaW9ucy5hZGQod2luZV92ZXJzaW9uKQotICAgICAgICAgcmV0dXJuICh1c2Vk X3ZlcnNpb25zKQotIAotLSAgICBkZWYgV3JpdGVWZXJzaW9uKHNlbGYsIGFyY2g9Ing4NiIpOgot LSAgICAgICAgc2VsZi5vbmdsZXRzLmltYWdlc2FwcHNbYXJjaF0uUmVtb3ZlQWxsKCkKLS0gICAg ICAgIHNlbGYub25nbGV0cy5pbWFnZXNhcHBzX2lbYXJjaF0uUmVtb3ZlQWxsKCkKLS0gICAgICAg IHNlbGYub25nbGV0cy5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uRGVs ZXRlQWxsSXRlbXMoKQotLSAgICAgICAgc2VsZi5vbmdsZXRzLmluc3RhbGxlZFdpbmVWZXJzaW9u c1RyZWVTZWxlY3RvclthcmNoXS5EZWxldGVBbGxJdGVtcygpCi0tCi0tICAgICAgICByb290ID0g c2VsZi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5BZGRS b290KCIiKQotLSAgICAgICAgc2VsZi5pID0gMAotLSAgICAgICAgaWYgKGFyY2ggPT0gIng4NiIp OgotLSAgICAgICAgICAgIHdoaWxlIChzZWxmLmkgPCBsZW4oc2VsZi5kb3dubG9hZDMyLnZlcnNp b25zKSk6Ci0tICAgICAgICAgICAgICAgIHNlbGYub25nbGV0cy5pbWFnZXNhcHBzW2FyY2hdLkFk ZCgKLS0gICAgICAgICAgICAgICAgICAgIHd4LkJpdG1hcChWYXJpYWJsZXMucGxheW9ubGludXhf ZW52ICsgIi9ldGMvaW5zdGFsbC93aW5lLXBhY2thZ2VzLnBuZyIpKQotLSAgICAgICAgICAgICAg ICBzZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkFw cGVuZEl0ZW0ocm9vdCwgc2VsZi5kb3dubG9hZDMyLnZlcnNpb25zW3NlbGYuaV0sIHNlbGYuaSkK LS0gICAgICAgICAgICAgICAgc2VsZi5pICs9IDEKLS0gICAgICAgIGlmIChhcmNoID09ICJhbWQ2 NCIpOgotLSAgICAgICAgICAgIHdoaWxlIChzZWxmLmkgPCBsZW4oc2VsZi5kb3dubG9hZDY0LnZl cnNpb25zKSk6Ci0tICAgICAgICAgICAgICAgIHNlbGYub25nbGV0cy5pbWFnZXNhcHBzW2FyY2hd LkFkZCgKLS0gICAgICAgICAgICAgICAgICAgIHd4LkJpdG1hcChWYXJpYWJsZXMucGxheW9ubGlu dXhfZW52ICsgIi9ldGMvaW5zdGFsbC93aW5lLXBhY2thZ2VzLnBuZyIpKQotLSAgICAgICAgICAg ICAgICBzZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hd LkFwcGVuZEl0ZW0ocm9vdCwgc2VsZi5kb3dubG9hZDY0LnZlcnNpb25zW3NlbGYuaV0sIHNlbGYu aSkKLS0gICAgICAgICAgICAgICAgc2VsZi5pICs9IDEKLS0KLS0gICAgICAgIHJvb3QyID0gc2Vs Zi5vbmdsZXRzLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5BZGRSb290 KCIiKQotLSAgICAgICAgd2ZvbGRlciA9IGZldGNoVXNlck9TKCkgKyAiLSIgKyBhcmNoCi0tCi0t ICAgICAgICB1c2VkX3ZlcnNpb24gPSBzZWxmLmNoZWNrVmVyc2lvblVzZShhcmNoKSAgIyBHZXQg dGhlIHNldCBvZiB3aW5lIHZlcnNpb24gdXNlZCBieSB3aW5lcHJlZml4Ci0tCi0tICAgICAgICBp bnN0YWxsZWRfdmVyc2lvbnMgPSBvcy5saXN0ZGlyKFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAg KyAiL3dpbmUvIiArIHdmb2xkZXIpCi0tICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMuc29ydChr ZXk9bmF0c29ydC5uYXRzb3J0X2tleWdlbigpKQotLSAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25z LnJldmVyc2UoKQotLSAgICAgICAgc2VsZi5pID0gMAotLSAgICAgICAgc2VsZi5qID0gMAotLSAg ICAgICAgYm9sZEZvbnQgPSBzZWxmLkdldEZvbnQoKQotLSAgICAgICAgYm9sZEZvbnQuU2V0V2Vp Z2h0KHd4LkJPTEQpCi0tICAgICAgICB3aGlsZSAoc2VsZi5pIDwgbGVuKGluc3RhbGxlZF92ZXJz aW9ucykpOgotLSAgICAgICAgICAgIGlmIChvcy5wYXRoLmlzZGlyKFZhcmlhYmxlcy5wbGF5b25s aW51eF9yZXAgKyAiL3dpbmUvIiArIHdmb2xkZXIgKyAiLyIgKyBpbnN0YWxsZWRfdmVyc2lvbnNb c2VsZi5pXSkpOgotLSAgICAgICAgICAgICAgICBpdGVtSWQgPSBzZWxmLm9uZ2xldHMuaW5zdGFs bGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkFwcGVuZEl0ZW0ocm9vdDIsIGluc3Rh bGxlZF92ZXJzaW9uc1tzZWxmLmldLCBzZWxmLmopCi0tICAgICAgICAgICAgICAgIGlmIChsZW4o b3MubGlzdGRpcigKLS0gICAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZXMucGxheW9ubGlu dXhfcmVwICsgIi93aW5lLyIgKyB3Zm9sZGVyICsgIi8iICsgaW5zdGFsbGVkX3ZlcnNpb25zW3Nl bGYuaV0pKSA9PSAwKToKLS0gICAgICAgICAgICAgICAgICAgIHNlbGYub25nbGV0cy5pbWFnZXNh cHBzX2lbYXJjaF0uQWRkKAotLSAgICAgICAgICAgICAgICAgICAgICAgIHd4LkJpdG1hcChWYXJp YWJsZXMucGxheW9ubGludXhfZW52ICsgIi9ldGMvaW5zdGFsbC93aW5lLXdhcm5pbmcucG5nIikp Ci0tICAgICAgICAgICAgICAgIGVsaWYgaW5zdGFsbGVkX3ZlcnNpb25zW3NlbGYuaV0gbm90IGlu IHVzZWRfdmVyc2lvbjoKLS0gICAgICAgICAgICAgICAgICAgIHNlbGYub25nbGV0cy5pbWFnZXNh cHBzX2lbYXJjaF0uQWRkKHd4LkJpdG1hcChWYXJpYWJsZXMucGxheW9ubGludXhfZW52ICsgIi9l dGMvaW5zdGFsbC93aW5lLnBuZyIpKQotLSAgICAgICAgICAgICAgICBlbHNlOiAgIyBDbGVhcmx5 IHNob3cgdGhlIHdpbmUgdmVyc2lvbiBpbiB1c2UKLS0gICAgICAgICAgICAgICAgICAgIHNlbGYu b25nbGV0cy5pbWFnZXNhcHBzX2lbYXJjaF0uQWRkKAotLSAgICAgICAgICAgICAgICAgICAgICAg IHd4LkJpdG1hcChWYXJpYWJsZXMucGxheW9ubGludXhfZW52ICsgIi9ldGMvaW5zdGFsbC93aW5l LWluLXVzZS5wbmciKSkKLS0gICAgICAgICAgICAgICAgICAgIHNlbGYub25nbGV0cy5pbnN0YWxs ZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0SXRlbUZvbnQoaXRlbUlkLCBib2xk Rm9udCkKLS0gICAgICAgICAgICAgICAgc2VsZi5qICs9IDEKLS0gICAgICAgICAgICBzZWxmLmkg Kz0gMQotLSAgICAgICAgdHJ5OgotLSAgICAgICAgICAgIGlmICh2ZXJzaW9uc1swXSA9PSAiV2lu ZSBwYWNrYWdlcyB3ZWJzaXRlIGlzIHVuYXZhaWxhYmxlIik6Ci0tICAgICAgICAgICAgICAgIHNl bGYub25nbGV0cy5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uRW5hYmxl KEZhbHNlKQotLSAgICAgICAgICAgICAgICBzZWxmLm9uZ2xldHMuaW1hZ2VzYXBwc1thcmNoXS5S ZW1vdmVBbGwoKQotLSAgICAgICAgZXhjZXB0OgotLSAgICAgICAgICAgIHBhc3MKLS0gICAgICAg IHNlbGYub25nbGV0cy5idXR0b25fcm1bYXJjaF0uRW5hYmxlKEZhbHNlKQotLSAgICAgICAgc2Vs Zi5vbmdsZXRzLmJ1dHRvbl9pblthcmNoXS5FbmFibGUoRmFsc2UpCi0tCi0tICAgIGRlZiBjbG9z ZWFwcChzZWxmLCBldmVudCk6Ci0rCi0rICAgIGRlZiBjbG9zZShzZWxmLCBldmVudCk6Ci0gICAg ICAgICBzZWxmLmRvd25sb2FkMzIudGhyZWFkX3J1bm5pbmcgPSBGYWxzZQotICAgICAgICAgaWYg KG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAiVHJ1ZSIpOgotICAgICAgICAgICAg IHNlbGYuZG93bmxvYWQ2NC50aHJlYWRfcnVubmluZyA9IEZhbHNlCi0KLUZyb20gOTcwNDI1OTIx YTQ5MzRhZDU4NDIzZTYxYzc5OWY0Nzg1ZmNkZThjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IFF1ZW50aW4gUEFSSVMgPGdpdEBxdWVudGluLnBhcmlzPgotRGF0ZTogU3VuLCAyNCBK YW4gMjAyMSAxNTo0MTozMiArMDEwMAotU3ViamVjdDogW1BBVENIIDE2LzMzXSBSZWFmY3Rvcmlu ZyB3aW5lIHZlcnNpb24gbWFuYWdlciBjb2RlCi0KLS0tLQotIGxpYi9zY3JpcHRzLmxpYiAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IDE5ICsrKysrKysrKy0tLQotIGxpYi93aW5lLmxpYiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLS0KLSBweXRob24vd2luZV92ZXJz aW9ucy9XaW5lVmVyc2lvbnNUb29scy5weSAgfCAxMCArKysrKystCi0gcHl0aG9uL3dpbmVfdmVy c2lvbnMvV2luZVZlcnNpb25zV2luZG93LnB5IHwgMzQgKysrKysrKysrKysrLS0tLS0tLS0tLQot IDQgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCi0KLWRp ZmYgLS1naXQgYS9saWIvc2NyaXB0cy5saWIgYi9saWIvc2NyaXB0cy5saWIKLWluZGV4IGZiZDM2 MzRjNC4uNGZkM2ZiNWM1IDEwMDc1NQotLS0tIGEvbGliL3NjcmlwdHMubGliCi0rKysgYi9saWIv c2NyaXB0cy5saWIKLUBAIC03NywxNyArNzcsMjggQEAgUE9MX1N5c3RlbV9TZXRBcmNoKCkKLSAJ IyBVc2FnZTogUE9MX1N5c3RlbV9TZXRBcmNoIChhdXRvfHg4NnxhbWQ2NCkKLSAJIyBJZiBhbWQ2 NCBpcyBzcGVjaWZpZWQgYW5kIG5vdCBzdXBwb3J0ZWQsIHRoZSBzY3JpcHQgd2lsbCBlbmQKLSAK LS0JIyAkMSA9IEF1dG8sIHg4NiwgYW1kNjQKLSsJIyAkMSA9IEF1dG8sIHg4NiwgYW1kNjQsIHg4 Nm9uNjQKLSAJIyAkMiA9IGRldGVjdGVkLCBpZiB0aGUgcmVzdWx0IG9mIGFuIGF1dG9tYXRpYyBz ZWxlY3Rpb24KLSAKLS0JaWYgWyAhICIkMSIgPT0gIng4NiIgXSAmJiBbICEgIiQxIiA9PSAiYW1k NjQiIF0KLSsJaWYgWyAhICIkMSIgPT0gIng4NiIgXSAmJiBbICEgIiQxIiA9PSAiYW1kNjQiIF0g JiYgWyAhICIkMSIgPT0gIng4Nm9uNjQiIF0KLSAJdGhlbgotLQkJWyAiJEFNRDY0X0NPTVBBVElC TEUiID09ICJUcnVlIiBdICYmIGV4cG9ydCBQT0xfQVJDSD0iYW1kNjQiIHx8IGV4cG9ydCBQT0xf QVJDSD0ieDg2IgotKwkgIGlmIFtbICIkT1NYX1ZFUlNJT04iIC1nZSAxOSBdXTsgdGhlbgotKwkg ICAgZXhwb3J0IFBPTF9BUkNIPSJ4ODZvbjY0IgotKwkgIGVsc2UKLSsgIAkJWyAiJEFNRDY0X0NP TVBBVElCTEUiID09ICJUcnVlIiBdICYmIGV4cG9ydCBQT0xfQVJDSD0iYW1kNjQiIHx8IGV4cG9y dCBQT0xfQVJDSD0ieDg2IgotKyAgCWZpCi0gCWZpCi0rCi0gCWlmIFsgIiQxIiA9PSAieDg2IiBd Ci0gCXRoZW4KLS0JCWV4cG9ydCBQT0xfQVJDSD0ieDg2IgotKwkJW1sgIiRPU1hfVkVSU0lPTiIg LWdlIDE5IF1dICYmIGV4cG9ydCBQT0xfQVJDSD0ieDg2b242NCIgfHwgZXhwb3J0IFBPTF9BUkNI PSJ4ODYiCi0gCWZpCi0rCi0rCWlmIFsgIiQxIiA9PSAieDg2b242NCIgXQotKwl0aGVuCi0rCQlb WyAiJE9TWF9WRVJTSU9OIiAtZ2UgMTkgXV0gJiYgZXhwb3J0IFBPTF9BUkNIPSJ4ODZvbjY0IiB8 fCBQT0xfRGVidWdfRmF0YWwgIng4Nm9uNjQgaXMgbm90IHN1cHBvcnRlZCBieSB5b3VyIHN5c3Rl bSIKLSsJZmkKLSsKLSAJaWYgWyAiJDEiID09ICJhbWQ2NCIgXQotIAl0aGVuCi0gCQlbICIkQU1E NjRfQ09NUEFUSUJMRSIgPT0gIlRydWUiIF0gJiYgZXhwb3J0IFBPTF9BUkNIPSJhbWQ2NCIgfHwg UE9MX0RlYnVnX0ZhdGFsICJhbWQ2NCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHlvdXIgc3lzdGVtIgot ZGlmZiAtLWdpdCBhL2xpYi93aW5lLmxpYiBiL2xpYi93aW5lLmxpYgotaW5kZXggZDI3ZGUxNTA5 Li40MzQ3NWYzMTAgMTAwNzU1Ci0tLS0gYS9saWIvd2luZS5saWIKLSsrKyBiL2xpYi93aW5lLmxp YgotQEAgLTY3OCw3ICs2NzgsNiBAQCBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbigpIHsKLSAKLSAg ICAgV0lORV9BRERSRVNTPSIkKGVjaG8gIiRXSU5FREFUQSIgfCBqcSAnLnVybCcgLXIpIgotICAg ICBQT0xfRGVidWdfTWVzc2FnZSAiV2luZSBhZGRyZXNzIGZvdW5kOiAkV0lORV9BRERSRVNTIgot LSAgICAjV0lORV9BRERSRVNTPSQoJFBPTF9XR0VUICIkV0lORV9TSVRFLyRXSU5FX1NFQ1RJT04u bHN0IiAtTy0gfCBncmVwICI7JHBvbF93aW5ldmVyc2lvbjsiIHwgdGFpbCAtbiAxIHwgY3V0IC1k ICI7IiAtZjEpCi0gCi0gICAgIGlmIFsgIiRXSU5FX0FERFJFU1MiID0gIiIgXSAmJiBbICIkUE9M X0FSQ0giID0gImFtZDY0IiBdOyB0aGVuCi0gICAgICAgUE9MX0RlYnVnX1dhcm5pbmcgIldpbmUg JDEgYW1kNjQgZG9lcyBub3QgZXhpc3QuIFN3aXRjaGluZyB0byB4ODYiCi1AQCAtNjk3LDcgKzY5 Niw4IEBAIFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uKCkgewotICAgICAgIGZpCi0gCi0gICAgICAg Y2QgIiRQT0xfVVNFUl9ST09UL3RtcCIKLS0gICAgICBmaWxlbmFtZT0iJFBXRC9QbGF5T25MaW51 eC13aW5lLSRwb2xfd2luZXZlcnNpb24tJFBPTF9XSU5FRElTVFJJQlVUSU9OLSRBUkNIX1BSRUZJ WC0kc2l0ZV9hcmNoLnRhci5neiIKLSsgICAgICBmaWxlbmFtZT0iJFBXRC8kKGJhc2VuYW1lICIk V0lORV9BRERSRVNTIikiCi0rICAgICAgZWNobyAiTG9jYWwgZmlsZSBuYW1lOiAkZmlsZW5hbWUi Ci0gICAgICAgUE9MX1NldHVwV2luZG93X2Rvd25sb2FkICIkKGV2YWxfZ2V0dGV4dCAiRG93bmxv YWRpbmcgV2luZTogIikkcG9sX3dpbmV2ZXJzaW9uIiAiJFRJVExFIiAiJFdJTkVfQUREUkVTUyIK LSAgICAgICBQT0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0X3NpZ25hbCAiJChldmFsX2dldHRleHQg IkRvd25sb2FkaW5nIFdpbmU6ICIpJHBvbF93aW5ldmVyc2lvbiIgIiRUSVRMRSIKLSAgICAgICBz bGVlcCAxCi1AQCAtNzA2LDcgKzcwNiw3IEBAIFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uKCkgewot ICAgICAgIGVjaG8gIlNlcnZlciBzaGExIDogJHNoYTEiCi0gICAgICAgZWNobyAiQ2xpZW50IHNo YTEgOiAkc2hhMV9maWxlIgotIAotLSAgICAgIGlmIFsgISAiJHNoYTEiID0gIiRzaGExX2ZpbGUi IF0gJiYgW1sgJE9TWF9WRVJTSU9OIC1sdCAxOSBdXTsgdGhlbgotKyAgICAgIGlmIFsgISAiJHNo YTEiID0gIiRzaGExX2ZpbGUiIF07IHRoZW4KLSAgICAgICAgIFBPTF9TZXR1cFdpbmRvd19tZXNz YWdlICIkKGV2YWxfZ2V0dGV4dCAnVGhlIGRvd25sb2FkIHNlZW1zIHRvIGhhdmUgZmFpbGVkLicp IiAiJFRJVExFIgotICAgICAgIGVsc2UKLSAgICAgICAgIFBPTF9TZXR1cFdpbmRvd193YWl0ICIk KGV2YWxfZ2V0dGV4dCAnRXh0cmFjdGluZyBXaW5lLi4uJykiICIkVElUTEUiCi1kaWZmIC0tZ2l0 IGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zVG9vbHMucHkgYi9weXRob24vd2lu ZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNUb29scy5weQotaW5kZXggNjlkNGNmMmIyLi4zNTkzNTU5 OWIgMTAwNjQ0Ci0tLS0gYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNUb29scy5w eQotKysrIGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zVG9vbHMucHkKLUBAIC0x LDYgKzEsNSBAQAotIGltcG9ydCBvcwotIAotLWZyb20gbGliIGltcG9ydCBWYXJpYWJsZXMKLSAK LSBkZWYgZmV0Y2hVc2VyT1MoKToKLSAgICAgaWYgKG9zLmVudmlyb25bIlBPTF9PUyJdID09ICJN YWMiKToKLUBAIC0xMCw3ICs5LDE2IEBAIGRlZiBmZXRjaFVzZXJPUygpOgotICAgICBlbHNlOgot ICAgICAgICAgcmV0dXJuICJmcmVlYnNkIgotIAotKwotIGRlZiBhcmNoaXRlY3R1cmVfaXNfc3Vw cG9ydGVkKGFyY2hpdGVjdHVyZV9uYW1lKToKLSsgICAgaWYgZmV0Y2hVc2VyT1MoKSA9PSAibGlu dXgiOgotKyAgICAgICAgcmV0dXJuIGFyY2hpdGVjdHVyZV9uYW1lIGluIFsieDg2IiwgImFtZDY0 Il0KLSsKLSsgICAgaWYgZmV0Y2hVc2VyT1MoKSA9PSAiZGFyd2luIjoKLSsgICAgICAgIGlmIGlu dChvcy5lbnZpcm9uLmdldCgiT1NYX1ZFUlNJT04iLCAwKSkgPj0gMTk6Ci0rICAgICAgICAgICAg cmV0dXJuIGFyY2hpdGVjdHVyZV9uYW1lIGluIFsieDg2b242NCIsICJhbWQ2NCJdCi0rICAgICAg ICBlbHNlOgotKyAgICAgICAgICAgIHJldHVybiBhcmNoaXRlY3R1cmVfbmFtZSBpbiBbIng4NiIs ICJhbWQ2NCJdCi0gICAgIHJldHVybiBUcnVlICMjIEZJWE1FCi0gCi0gZGVmIGZldGNoX3N1cHBv cnRlZF9hcmNocygpOgotZGlmZiAtLWdpdCBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJz aW9uc1dpbmRvdy5weSBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1dpbmRvdy5w eQotaW5kZXggYjc2ZGIwYjI1Li4yZWNhYzNmNTUgMTAwNzU1Ci0tLS0gYS9weXRob24vd2luZV92 ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkKLSsrKyBiL3B5dGhvbi93aW5lX3ZlcnNpb25z L1dpbmVWZXJzaW9uc1dpbmRvdy5weQotQEAgLTM4LDI5ICszOCwzMSBAQAotIGNsYXNzIFdpbmVW ZXJzaW9uc1dpbmRvdyh3eC5GcmFtZSk6Ci0gICAgIGRlZiBvbl9hdmFpbGFibGVfd2luZV92ZXJz aW9uc19kb3dubG9hZGVkKHNlbGYsIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmUpOgotICAgICAg ICAgZm9yIGFyY2hpdGVjdHVyZSBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlOgotLSAgICAg ICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucyA9IFtdCi0tICAgICAgICAgICAgZm9yIHZlcnNpb24g aW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZVthcmNoaXRlY3R1cmVdOgotLSAgICAgICAgICAg ICAgICBhdmFpbGFibGVfdmVyc2lvbnMuYXBwZW5kKHZlcnNpb25bIm5hbWUiXSkKLSsgICAgICAg ICAgICBpZiBhcmNoaXRlY3R1cmUgaW4gZmV0Y2hfc3VwcG9ydGVkX2FyY2hzKCk6Ci0rICAgICAg ICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucyA9IFtdCi0rICAgICAgICAgICAgICAgIGZvciB2 ZXJzaW9uIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmVbYXJjaGl0ZWN0dXJlXToKLSsgICAg ICAgICAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucy5hcHBlbmQodmVyc2lvblsibmFtZSJd KQotIAotLSAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucy5zb3J0KGtleT1uYXRzb3J0Lm5h dHNvcnRfa2V5Z2VuKCkpCi0tICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zLnJldmVyc2Uo KQotLSAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucyA9IGF2YWlsYWJsZV92ZXJzaW9uc1s6 XQotKyAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMuc29ydChrZXk9bmF0c29ydC5u YXRzb3J0X2tleWdlbigpKQotKyAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMucmV2 ZXJzZSgpCi0rICAgICAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucyA9IGF2YWlsYWJsZV92 ZXJzaW9uc1s6XQotIAotLSAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIGF2YWlsYWJsZV92ZXJz aW9uczoKLS0gICAgICAgICAgICAgICAgd3guQ2FsbEFmdGVyKHNlbGYubm90ZWJvb2suYWRkX2F2 YWlsYWJsZV92ZXJzaW9uLCBhcmNoaXRlY3R1cmUsIHZlcnNpb24pCi0rICAgICAgICAgICAgICAg IGZvciB2ZXJzaW9uIGluIGF2YWlsYWJsZV92ZXJzaW9uczoKLSsgICAgICAgICAgICAgICAgICAg IHd4LkNhbGxBZnRlcihzZWxmLm5vdGVib29rLmFkZF9hdmFpbGFibGVfdmVyc2lvbiwgYXJjaGl0 ZWN0dXJlLCB2ZXJzaW9uKQotIAotICAgICBkZWYgb25faW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNf ZG93bmxvYWRlZChzZWxmLCB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlKToKLSAgICAgICAgIGZv ciBhcmNoaXRlY3R1cmUgaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZToKLS0gICAgICAgICAg ICBpbnN0YWxsZWRfdmVyc2lvbnMgPSBbXQotLSAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIHZl cnNpb25zX3Blcl9hcmNoaXRlY3R1cmVbYXJjaGl0ZWN0dXJlXToKLS0gICAgICAgICAgICAgICAg aW5zdGFsbGVkX3ZlcnNpb25zLmFwcGVuZCh2ZXJzaW9uWyJuYW1lIl0pCi0rICAgICAgICAgICAg aWYgYXJjaGl0ZWN0dXJlIGluIGZldGNoX3N1cHBvcnRlZF9hcmNocygpOgotKyAgICAgICAgICAg ICAgICBpbnN0YWxsZWRfdmVyc2lvbnMgPSBbXQotKyAgICAgICAgICAgICAgICBmb3IgdmVyc2lv biBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlW2FyY2hpdGVjdHVyZV06Ci0rICAgICAgICAg ICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMuYXBwZW5kKHZlcnNpb25bIm5hbWUiXSkKLSAK LS0gICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMuc29ydChrZXk9bmF0c29ydC5uYXRzb3J0 X2tleWdlbigpKQotLSAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5yZXZlcnNlKCkKLS0g ICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMgPSBpbnN0YWxsZWRfdmVyc2lvbnNbOl0KLSsg ICAgICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLnNvcnQoa2V5PW5hdHNvcnQubmF0c29y dF9rZXlnZW4oKSkKLSsgICAgICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLnJldmVyc2Uo KQotKyAgICAgICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMgPSBpbnN0YWxsZWRfdmVyc2lv bnNbOl0KLSAKLS0gICAgICAgICAgICBmb3IgdmVyc2lvbiBpbiBpbnN0YWxsZWRfdmVyc2lvbnM6 Ci0tICAgICAgICAgICAgICAgIHd4LkNhbGxBZnRlcihzZWxmLm5vdGVib29rLmFkZF9pbnN0YWxs ZWRfdmVyc2lvbiwgYXJjaGl0ZWN0dXJlLCB2ZXJzaW9uKQotKyAgICAgICAgICAgICAgICBmb3Ig dmVyc2lvbiBpbiBpbnN0YWxsZWRfdmVyc2lvbnM6Ci0rICAgICAgICAgICAgICAgICAgICB3eC5D YWxsQWZ0ZXIoc2VsZi5ub3RlYm9vay5hZGRfaW5zdGFsbGVkX3ZlcnNpb24sIGFyY2hpdGVjdHVy ZSwgdmVyc2lvbikKLSAKLSAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCBlcnJvcik6Ci0gICAg ICAgICBwcmludChlcnJvcikKLQotRnJvbSA3NDk5MTdiMGQwYzZkNDM5ZjcxMDA0ZmRkOWJjNTY5 OTJiYjkxZjE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUXVlbnRpbiBQQVJJUyA8 Z2l0QHF1ZW50aW4ucGFyaXM+Ci1EYXRlOiBTdW4sIDI0IEphbiAyMDIxIDE1OjQ2OjQ0ICswMTAw Ci1TdWJqZWN0OiBbUEFUQ0ggMTcvMzNdIFJlYWZjdG9yaW5nIHdpbmUgdmVyc2lvbiBtYW5hZ2Vy IGNvZGUKLQotLS0tCi0gQ0hBTkdFTE9HLm1kIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBp bnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9DSEFOR0VMT0cubWQgYi9DSEFOR0VMT0cubWQK LWluZGV4IGNkZTJkODJjNC4uNzM1ZjYxMTRhIDEwMDY0NAotLS0tIGEvQ0hBTkdFTE9HLm1kCi0r KysgYi9DSEFOR0VMT0cubWQKLUBAIC0xLDMgKzEsNiBAQAotKyMgNC40LjIgCi0rKiBSZWZhY3Rv cmVkIHdpbmUgdmVyc2lvbiB3aW5kb3cgCi0rCi0gIyA0LjQKLSAqIFB5dGhvbiAzIHN1cHBvcnQg Ci0gCi0KLUZyb20gYzU5ZDAzYjU3MTcxNDNiNDEwMmI3MDE1OWEwZDIxODUwNDIyY2U2NCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNtMGszciA8MTE1NTg0OTkrNW0wazNyQHVzZXJz Lm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IFRodSwgMyBGZWIgMjAyMiAyMjo0MTowOSAtMDMw MAotU3ViamVjdDogW1BBVENIIDE4LzMzXSBVcGRhdGUgcGxheW9ubGludXgucHkKLQotQXZvaWQg c3RyaW5ncyBpbiB2ZXJzaW9uMSBhbmQgdmVyc2lvbjIgdmFyaWFibGVzIHdpdGggaXNudW1lcmlj KCkgZnVuY3Rpb24sIGFuZCBoYW5kbGluZyBlcnJvciB3aXRoIHRyeS1leGNlcHQgYmxvY2suCi0t LS0KLSBweXRob24vbGliL3BsYXlvbmxpbnV4LnB5IHwgMTAgKysrKysrKystLQotIDEgZmlsZSBj aGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9w eXRob24vbGliL3BsYXlvbmxpbnV4LnB5IGIvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weQotaW5k ZXggM2U4N2Q5MGFhLi45NjA3MDdkOTEgMTAwNzU1Ci0tLS0gYS9weXRob24vbGliL3BsYXlvbmxp bnV4LnB5Ci0rKysgYi9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5Ci1AQCAtMjc4LDExICsyNzgs MTcgQEAgZGVmIFZlcnNpb25Mb3dlcih2ZXJzaW9uMSwgdmVyc2lvbjIpOgotICAgICAgICAgZWxz ZToKLSAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAKLS0gICAgdmVyc2lvbjEgPSBbIGludChk aWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24xWzBdLnNwbGl0KCIuIilbOjNdIF0KLSsgICAgdHJ5 OgotKyAgICAgICAgdmVyc2lvbjEgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24x WzBdLnNwbGl0KCIuIikgXQotKyAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSsgICAgICAgIHZlcnNp b24xID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMVswXS5zcGxpdCgiLiIpIGlm IGRpZ2l0LmlzbnVtZXJpYygpIF0KLSAgICAgd2hpbGUgbGVuKHZlcnNpb24xKSA8IDM6Ci0gICAg ICAgICB2ZXJzaW9uMS5hcHBlbmQoMCkKLSAKLS0gICAgdmVyc2lvbjIgPSBbIGludChkaWdpdCkg Zm9yIGRpZ2l0IGluIHZlcnNpb24yWzBdLnNwbGl0KCIuIilbOjNdIF0KLSsgICAgdHJ5OgotKyAg ICAgICAgdmVyc2lvbjIgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24yWzBdLnNw bGl0KCIuIikgXQotKyAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSsgICAgICAgIHZlcnNpb24yID0g WyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMlswXS5zcGxpdCgiLiIpIGlmIGRpZ2l0 LmlzbnVtZXJpYygpIF0KLSAgICAgd2hpbGUgbGVuKHZlcnNpb24yKSA8IDM6Ci0gICAgICAgICB2 ZXJzaW9uMi5hcHBlbmQoMCkKLSAKLQotRnJvbSAyMTZjNDQ4OWFkNDE1NDZjNjE1ZmNkNTczMmQ2 YzljNWM4ZjMxNTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU20wazNyIDwxMTU1 ODQ5OSs1bTBrM3JAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogVGh1LCAzIEZlYiAy MDIyIDIyOjQ3OjU0IC0wMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTkvMzNdIFVwZGF0ZSBwbGF5b25s aW51eC5weQotCi1Xb3JrYXJvdW5kIGZvciBub24tbnVtZXJpYyBjaGFyYWN0ZXJzIGluIGxpc3Qg dmVyc2lvbjEgYW5kIHZlcnNpb24yIHdpdGhvdXQgZXJyb3IgaGFuZGxpbmcgdG8ga2VlcCBzaW1w bGUuCi0tLS0KLSBweXRob24vbGliL3BsYXlvbmxpbnV4LnB5IHwgMTAgKystLS0tLS0tLQotIDEg ZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1n aXQgYS9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5IGIvcHl0aG9uL2xpYi9wbGF5b25saW51eC5w eQotaW5kZXggOTYwNzA3ZDkxLi5mYTliOTBmYjkgMTAwNzU1Ci0tLS0gYS9weXRob24vbGliL3Bs YXlvbmxpbnV4LnB5Ci0rKysgYi9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5Ci1AQCAtMjc4LDE3 ICsyNzgsMTEgQEAgZGVmIFZlcnNpb25Mb3dlcih2ZXJzaW9uMSwgdmVyc2lvbjIpOgotICAgICAg ICAgZWxzZToKLSAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAKLS0gICAgdHJ5OgotLSAgICAg ICAgdmVyc2lvbjEgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24xWzBdLnNwbGl0 KCIuIikgXQotLSAgICBleGNlcHQgVmFsdWVFcnJvcjoKLS0gICAgICAgIHZlcnNpb24xID0gWyBp bnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMVswXS5zcGxpdCgiLiIpIGlmIGRpZ2l0Lmlz bnVtZXJpYygpIF0KLSsgICAgdmVyc2lvbjEgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZl cnNpb24xWzBdLnNwbGl0KCIuIikgaWYgZGlnaXQuaXNudW1lcmljKCkgXQotICAgICB3aGlsZSBs ZW4odmVyc2lvbjEpIDwgMzoKLSAgICAgICAgIHZlcnNpb24xLmFwcGVuZCgwKQotIAotLSAgICB0 cnk6Ci0tICAgICAgICB2ZXJzaW9uMiA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lv bjJbMF0uc3BsaXQoIi4iKSBdCi0tICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotLSAgICAgICAgdmVy c2lvbjIgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24yWzBdLnNwbGl0KCIuIikg aWYgZGlnaXQuaXNudW1lcmljKCkgXQotKyAgICB2ZXJzaW9uMiA9IFsgaW50KGRpZ2l0KSBmb3Ig ZGlnaXQgaW4gdmVyc2lvbjJbMF0uc3BsaXQoIi4iKSBpZiBkaWdpdC5pc251bWVyaWMoKSBdCi0g ICAgIHdoaWxlIGxlbih2ZXJzaW9uMikgPCAzOgotICAgICAgICAgdmVyc2lvbjIuYXBwZW5kKDAp Ci0gCi0KLUZyb20gNGUzMjM1YTViYjliMmRmNjFmMjg3ZjkzMjY4NTY1NDVmOWU1MzVhNSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVkdWFyZG8gTW96YXJ0IGRlIE9saXZlaXJhCi0g PDI5NzQ4OTUrZWR1YXJkb21vemFydEB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBU aHUsIDEyIE1heSAyMDIyIDA5OjE1OjU5IC0wMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjAvMzNdIEZp eCBYUXVhcnR6IFVSTAotCi1YUXVhcnR6IGZhaWxzIHRvIGluc3RhbGwgaW50byBtYWNPUwotLS0t Ci0gYmFzaC9zdGFydHVwX2FmdGVyX3NlcnZlciB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2Jhc2gvc3RhcnR1cF9h ZnRlcl9zZXJ2ZXIgYi9iYXNoL3N0YXJ0dXBfYWZ0ZXJfc2VydmVyCi1pbmRleCBhYTA3YTRlZTku LmU3NDg2MzM5YyAxMDA3NTUKLS0tLSBhL2Jhc2gvc3RhcnR1cF9hZnRlcl9zZXJ2ZXIKLSsrKyBi L2Jhc2gvc3RhcnR1cF9hZnRlcl9zZXJ2ZXIKLUBAIC0zMCw3ICszMCw3IEBAIGV4cG9ydCBYUVVB UlRaX1ZFUlNJT049IjIuNy4xMSIKLSBpbnN0YWxsX3gxMSgpCi0gewotIAotLQlYUXVhcnR6VXJs PSJodHRwOi8vZGwuYmludHJheS5jb20veHF1YXJ0ei9kb3dubG9hZHMvWFF1YXJ0ei0kWFFVQVJU Wl9WRVJTSU9OLmRtZyIKLSsJWFF1YXJ0elVybD0iaHR0cHM6Ly9naXRodWIuY29tL1hRdWFydHov WFF1YXJ0ei9yZWxlYXNlcy9kb3dubG9hZC9YUXVhcnR6LSRYUVVBUlRaX1ZFUlNJT04vWFF1YXJ0 ei0kWFFVQVJUWl9WRVJTSU9OLmRtZyIKLSAJRmlsZVByZWZpeD0iWFF1YXJ0eiIKLSAKLSAJU1RF UF9USVRMRT0iWFF1YXJ0eiIKLQotRnJvbSA4ZmYwMWYzNDE5MjVhMzY3M2Q0YTFkZTg1MTJkOWUy MzcyYTRkOWUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRWR1YXJkbyBNb3phcnQg ZGUgT2xpdmVpcmEKLSA8Mjk3NDg5NStlZHVhcmRvbW96YXJ0QHVzZXJzLm5vcmVwbHkuZ2l0aHVi LmNvbT4KLURhdGU6IFRodSwgMTIgTWF5IDIwMjIgMDk6NTM6MDkgLTAzMDAKLVN1YmplY3Q6IFtQ QVRDSCAyMS8zM10gVXBkYXRlIGxuZy5weQotCi1GaXggcGxheW9ubGludXgtYmFzaCBleGVjIG9u IG1hY09TIE1vbnRlcmV5Ci0tLS0KLSBweXRob24vbGliL2xuZy5weSB8IDE1ICsrKysrKysrKy0t LS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0K LWRpZmYgLS1naXQgYS9weXRob24vbGliL2xuZy5weSBiL3B5dGhvbi9saWIvbG5nLnB5Ci1pbmRl eCBhMzkwZDkyMGIuLjVmYjE2MWMzYyAxMDA3NTUKLS0tLSBhL3B5dGhvbi9saWIvbG5nLnB5Ci0r KysgYi9weXRob24vbGliL2xuZy5weQotQEAgLTE4LDEyICsxOCwxNSBAQCBkZWYgX19pbml0X18o c2VsZik6Ci0gICAgICAgICAgICAgbGFuZ3VhZ2VzID0gb3MubGlzdGRpcihWYXJpYWJsZXMucGxh eW9ubGludXhfZW52KycvbGFuZy9sb2NhbGUnKQotIAotICAgICAgICAgaWYob3MuZW52aXJvblsi UE9MX09TIl0gPT0gIk1hYyIpOgotLSAgICAgICAgICAgIHd4TG9jYWxlID0gd3guTG9jYWxlKCku RmluZExhbmd1YWdlSW5mbyhvcy5lbnZpcm9uWyJSTEFORyJdKQotLQotLSAgICAgICAgICAgIGlm IHd4TG9jYWxlIGlzIG5vdCBOb25lOgotLSAgICAgICAgICAgICAgICBsYW5naWQgPSB3eC5Mb2Nh bGUoKS5GaW5kTGFuZ3VhZ2VJbmZvKG9zLmVudmlyb25bIlJMQU5HIl0pLkxhbmd1YWdlCi0tICAg ICAgICAgICAgZWxzZToKLS0gICAgICAgICAgICAgICAgbGFuZ2lkID0gd3guTEFOR1VBR0VfREVG QVVMVAotKyAgICAgICAgICAgIHRyeToKLSsgICAgICAgICAgICAgICAgd3hMb2NhbGUgPSB3eC5M b2NhbGUoKS5GaW5kTGFuZ3VhZ2VJbmZvKG9zLmVudmlyb25bIlJMQU5HIl0pCi0rCi0rICAgICAg ICAgICAgICAgIGlmIHd4TG9jYWxlIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgICAgICAgICAg bGFuZ2lkID0gd3guTG9jYWxlKCkuRmluZExhbmd1YWdlSW5mbyhvcy5lbnZpcm9uWyJSTEFORyJd KS5MYW5ndWFnZQotKyAgICAgICAgICAgICAgICBlbHNlOgotKyAgICAgICAgICAgICAgICAgICAg bGFuZ2lkID0gd3guTEFOR1VBR0VfREVGQVVMVAotKyAgICAgICAgICAgIGV4Y2VwdDoKLSsgICAg ICAgICAgICAgICAgbGFuZ2lkID0gd3guTEFOR1VBR0VfREVGQVVMVCAKLSAgICAgICAgIGVsc2U6 Ci0gICAgICAgICAgICAgbGFuZ2lkID0gd3guTEFOR1VBR0VfREVGQVVMVAotIAotCi1Gcm9tIDlh MjdjOGY0ZjFjMTQ1ODM4OGFlMDQ2OGNjZGJkNzU4MTY5YThlZTYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBFZHVhcmRvIE1vemFydCBkZSBPbGl2ZWlyYQotIDwyOTc0ODk1K2VkdWFy ZG9tb3phcnRAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogVGh1LCAxMiBNYXkgMjAy MiAxNTo1Mzo1NCAtMDMwMAotU3ViamVjdDogW1BBVENIIDIyLzMzXSBVcGRhdGUgTWFrZWZpbGUg dG8gbWFjT1MKLQotTm93IG1hY09TIGNhbiBhbHNvIHJ1biB0aGUgbWFrZSBjb21tYW5kCi0tLS0K LSBNYWtlZmlsZSB8IDE4ICsrKysrKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNCBp bnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9N YWtlZmlsZQotaW5kZXggYThkODFiODkyLi4xMTVkMjY5OGMgMTAwNjQ0Ci0tLS0gYS9NYWtlZmls ZQotKysrIGIvTWFrZWZpbGUKLUBAIC0yMCw5ICsyMCwxOCBAQAotICMgREVTVERJUiAtLSBXaGVy ZSB5b3Ugd2FudCB0byBpbnN0YWxsCi0gIwotIAotLUNGTEFHUyA/PSAtTzIKLStpZmVxICgkKHNo ZWxsIHVuYW1lIC1zKSxEYXJ3aW4pCi0rICAgIENGTEFHUyA/PSAtTzIgLUkvb3B0L1gxMS9pbmNs dWRlCi0rICAgIExGTEFHUyA/PSAtTC9vcHQvWDExL2xpYiAtbEdMIC1sWDExCi0rICAgIFBZVEhP TiA9IHB5dGhvbjIuNyAtbSBweV9jb21waWxlCi0rICAgIFNFRCA9IHNlZCAtaSAnJyAtZQotK2Vs c2UKLSsgICAgQ0ZMQUdTID89IC1PMiAKLSsgICAgQ0ZMQUdTID89IC1sR0wgLWxYMTEKLSsgICAg UFlUSE9OID0gcHl0aG9uMiAtbSBweV9jb21waWxlCi0rICAgIFNFRCA9IHNlZCAtaQotK2VuZGlm Ci0gQ0MgPSBnY2MgJChDRkxBR1MpCi0tUFlUSE9OID0gcHl0aG9uMiAtbSBweV9jb21waWxlCi0g R1pJUCA9IGd6aXAKLSBTSEVMTCA6PSAvYmluL2Jhc2gKLSAKLUBAIC00NSwxNCArNTQsMTQgQEAg Y2xlYW46Ci0gCSQoUk0pIC4vQ2hhbmdlTG9nCi0gCi0gYnVpbGQ6Ci0tCSQoQ0MpIC4vc3JjL2No ZWNrX2RpcmVjdF9yZW5kZXJpbmcuYyAtbyAuL2Jpbi9wbGF5b25saW51eC1jaGVja19kZCAtbEdM IC1sWDExCi0rCSQoQ0MpIC4vc3JjL2NoZWNrX2RpcmVjdF9yZW5kZXJpbmcuYyAtbyAuL2Jpbi9w bGF5b25saW51eC1jaGVja19kZCAkKExGTEFHUykKLSAJJChQWVRIT04pIC4vcHl0aG9uLyoucHkK LSAJJChQWVRIT04pIC4vcHl0aG9uL2xpYi8qLnB5Ci0gCWVjaG8gLWUgJyMhL2Jpbi9iYXNoXG5H REtfQkFDS0VORD14MTEgJHtzaGFyZWRpcn0vcGxheW9ubGludXgvcGxheW9ubGludXggIiQkQCJc bmV4aXQgMCcgPiAuL2Jpbi9wbGF5b25saW51eAotIAllY2hvIC1lICcjIS9iaW4vYmFzaFxuJHtz aGFyZWRpcn0vcGxheW9ubGludXgvcGxheW9ubGludXgtcGtnICIkJEAiXG5leGl0IDAnID4gLi9i aW4vcGxheW9ubGludXgtcGtnCi0gCWNobW9kICt4IC4vYmluL3BsYXlvbmxpbnV4Ci0gCWNobW9k ICt4IC4vYmluL3BsYXlvbmxpbnV4LXBrZwotLQlzZWQgLWkgJ3MvXChcWyJERUJJQU5fUEFDS0FH RSJcXVxzKj1ccypcKSJGQUxTRSIvXDEiVFJVRSIvJyBcCi0rCSQoU0VEKSAncy9cKFxbIkRFQklB Tl9QQUNLQUdFIlxdXHMqPVxzKlwpIkZBTFNFIi9cMSJUUlVFIi8nIFwKLSAJCS4vcHl0aG9uL2xp Yi9WYXJpYWJsZXMucHkKLSAKLSBpbnN0YWxsOgotQEAgLTgxLDMgKzkwLDQgQEAgY2hhbmdlbG9n OgotIAkoR0lUX0RJUj0uZ2l0IGdpdCBsb2cgPiAuY2hhbmdlbG9nLnRtcCAmJiBtdiAuY2hhbmdl bG9nLnRtcCBDaGFuZ2VMb2c7IHJtIC1mIC5jaGFuZ2Vsb2cudG1wKSB8fCAodG91Y2ggQ2hhbmdl TG9nOyBlY2hvICdnaXQgZGlyZWN0b3J5IG5vdCBmb3VuZDogaW5zdGFsbGluZyBwb3NzaWJseSBl bXB0eSBjaGFuZ2Vsb2cuJyA+JjIpCi0gCi0gLlBIT05ZOiBhbGwgY2xlYW4gYnVpbGQgaW5zdGFs bCBjaGFuZ2Vsb2cKLSsKLQotRnJvbSA1YzczZWQxZWUyM2JhMmU1MTcwMTA5NGUzNjZmNWNiY2Vk MWZlYmI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0aGlldSBQYXJlbnQgPG1h dGgucGFyZW50QGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjAgRGVjIDIwMjIgMTA6MjA6MjUgKzAx MDAKLVN1YmplY3Q6IFtQQVRDSCAyMy8zM10gVXNlIG1vcmUgcG93ZXJmdWwgZGlzY3JldGUgR1BV IGlmIGF2YWlsYWJsZQotCi1TZWUgaHR0cHM6Ly9zcGVjaWZpY2F0aW9ucy5mcmVlZGVza3RvcC5v cmcvZGVza3RvcC1lbnRyeS1zcGVjL2xhdGVzdC9hcjAxczA2Lmh0bWwKLS0tLQotIGV0Yy9QbGF5 T25MaW51eC5kZXNrdG9wIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0K LWRpZmYgLS1naXQgYS9ldGMvUGxheU9uTGludXguZGVza3RvcCBiL2V0Yy9QbGF5T25MaW51eC5k ZXNrdG9wCi1pbmRleCA0OTAxMDhjMTEuLjUzY2Q0MmY5NCAxMDA2NDQKLS0tLSBhL2V0Yy9QbGF5 T25MaW51eC5kZXNrdG9wCi0rKysgYi9ldGMvUGxheU9uTGludXguZGVza3RvcAotQEAgLTYsMyAr Niw0IEBAIFR5cGU9QXBwbGljYXRpb24KLSBFeGVjPXBsYXlvbmxpbnV4ICVGCi0gSWNvbj1wbGF5 b25saW51eAotIENhdGVnb3JpZXM9VXRpbGl0eTtFbXVsYXRvcjsKLStQcmVmZXJzTm9uRGVmYXVs dEdQVT10cnVlCi0KLUZyb20gNzNmZjFkZjkyNGMxYjdiZGM0ZTkzYTVhMzI4YjI4NzA5N2Q4Y2Nj NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGFuZHJleSA8MzI5ODgzMDUrdm9zdG9r MDFAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogU2F0LCAzMSBEZWMgMjAyMiAyMzox NjoxOCArMDMwMAotU3ViamVjdDogW1BBVENIIDI0LzMzXSBCVUcgRklYOiBDRkxBR1MgcmVuYW1l ZCB0byBMRkxBR1MgaW4gTWFrZWZpbGUuCi0KLS0tLQotIE1ha2VmaWxlIHwgMiArLQotIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEv TWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggMTE1ZDI2OThjLi40YzA4YTk2ZmUgMTAwNjQ0Ci0t LS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0yNyw3ICsyNyw3IEBAIGlmZXEgKCQo c2hlbGwgdW5hbWUgLXMpLERhcndpbikKLSAgICAgU0VEID0gc2VkIC1pICcnIC1lCi0gZWxzZQot ICAgICBDRkxBR1MgPz0gLU8yIAotLSAgICBDRkxBR1MgPz0gLWxHTCAtbFgxMQotKyAgICBMRkxB R1MgPz0gLWxHTCAtbFgxMQotICAgICBQWVRIT04gPSBweXRob24yIC1tIHB5X2NvbXBpbGUKLSAg ICAgU0VEID0gc2VkIC1pCi0gZW5kaWYKLQotRnJvbSBkNmNkN2ZmNjkyMjhkYTg4YWQ5MDc0M2M3 ZDY1MjI4MTk0OTM4MDM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTnJlemlub3Ju IDxucmV6aW5vcm5AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxOSBKdW4gMjAyMyAwNzo0OToyMyAt MDcwMAotU3ViamVjdDogW1BBVENIIDI1LzMzXSBGaXggTWFjIFdJTkUgVmVyc2lvbkZldGNoZXIg YW5kIGJ1bXAgdmVyc2lvbmluZyB0bwotIDQuNC4zCi0KLS0tLQotIHB5dGhvbi9saWIvVmFyaWFi bGVzLnB5ICAgICAgICAgICAgICAgICAgICAgfCA1ICsrKy0tCi0gcHl0aG9uL3dpbmVfdmVyc2lv bnMvV2luZVZlcnNpb25zRmV0Y2hlci5weSB8IDcgKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwg OCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL2xp Yi9WYXJpYWJsZXMucHkgYi9weXRob24vbGliL1ZhcmlhYmxlcy5weQotaW5kZXggZGJlMmFiNzE5 Li4yNmUyMzRhNTMgMTAwNzU1Ci0tLS0gYS9weXRob24vbGliL1ZhcmlhYmxlcy5weQotKysrIGIv cHl0aG9uL2xpYi9WYXJpYWJsZXMucHkKLUBAIC0xNyw3ICsxNyw3IEBACi0gb3MuZW52aXJvblsi UE9MX1BPUlQiXSA9ICIwIgotIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0gPSBvcy5wYXRoLnJl YWxwYXRoKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKyIvLi4vLi4vLi4vIikKLSBvcy5lbnZp cm9uWyJTSVRFIl0gPSAiaHR0cDovL3JlcG9zaXRvcnkucGxheW9ubGludXguY29tIgotLW9zLmVu dmlyb25bIlZFUlNJT04iXSA9ICI0LjQuMSIKLStvcy5lbnZpcm9uWyJWRVJTSU9OIl0gPSAiNC40 LjMiCi0gb3MuZW52aXJvblsiUE9MX0lEIl0gPSBzdHIocmFuZG9tLnJhbmRpbnQoMSwgMTAwMDAw MDAwKSkKLSBvcy5lbnZpcm9uWyJHRUNLT19TSVRFIl0gPSAiaHR0cDovL3dpbmUucGxheW9ubGlu dXguY29tL2dlY2tvIgotIG9zLmVudmlyb25bIk1PTk9fU0lURSJdID0gImh0dHA6Ly93aW5lLnBs YXlvbmxpbnV4LmNvbS9tb25vIgotQEAgLTM5LDYgKzM5LDcgQEAKLSAgICAgd2luZG93c19hZGRf cGxheW9ubWFjID0gMQotICAgICB3aWRnZXRfYm9yZGVycyA9IHd4LlNJTVBMRV9CT1JERVIKLSAg ICAgb3NfbmFtZSA9ICJkYXJ3aW4iCi0rICAgIGNhX2ZpbGUgPSAnLi4vLi4vbGliL3B5dGhvbjMu OC9jZXJ0aWZpL2NhY2VydC5wZW0nIAotICAgICBvcy5lbnZpcm9uWyJQT0xfV0dFVCJdID0gIndn ZXQgLS1wcmVmZXItZmFtaWx5PUlQdjQgLXEgLS1uby1jaGVjay1jZXJ0aWZpY2F0ZSIKLSAKLSAj IFZhcmlhYmxlcyBQbGF5T25MaW51eAotQEAgLTExOSw3ICsxMjAsNyBAQAotIAotICAgICBvcy5l bnZpcm9uWyJQQVRIIl0gPSBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC93aW5l L2JpbjoiICsgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvaW1hZ2VfbWFnaWNr L2JpbjoiICsgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvdG9vbHMvYmluLzoi ICsgb3MuZW52aXJvblsiUEFUSCJdCi0gCi0tICAgIG9zLmVudmlyb25bIldSSVRFX0xEIl0gPSBv cy5lbnZpcm9uWyJMRF9MSUJSQVJZX1BBVEgiXQotKyAgICBvcy5lbnZpcm9uWyJXUklURV9MRCJd ID0gb3MuZW52aXJvblsiTERfTElCUkFSWV9QQVRIIl0gKyAiOiIgKyBvcy5lbnZpcm9uWyJQTEFZ T05MSU5VWCJdKyIvLi4vdW5peC93aW5lL2xpYiIKLSAgICAgb3MuZW52aXJvblsiRFlMRF9GQUxM QkFDS19MSUJSQVJZX1BBVEgiXSA9ICBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5p eC93aW5lL2xpYiIKLSAgICAgb3MuZW52aXJvblsiV1JJVEVfRFlMRF9GQUxMQkFDS19MSUJSQVJZ X1BBVEgiXSA9ICBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC93aW5lL2xpYiIK LSAgICAgb3MuZW52aXJvblsiRlJFRVRZUEVfUFJPUEVSVElFUyJdPSJ0cnVldHlwZTppbnRlcnBy ZXRlci12ZXJzaW9uPTM1IgotZGlmZiAtLWdpdCBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVW ZXJzaW9uc0ZldGNoZXIucHkgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNGZXRj aGVyLnB5Ci1pbmRleCBmZDc1ODc5OGUuLjYxNjA1MjI3YyAxMDA2NDQKLS0tLSBhL3B5dGhvbi93 aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIucHkKLSsrKyBiL3B5dGhvbi93aW5lX3Zl cnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIucHkKLUBAIC0xOCwxMCArMTgsMTMgQEAgZGVmIGZl dGNoX2FsbF9hdmFpbGFibGVfd2luZV92ZXJzaW9uKHNlbGYsIGNhbGxiYWNrLCBlcnJvcik6Ci0g Ci0gICAgIGRlZiBfc3luY19mZXRjaF9hbGxfYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnMoc2VsZiwg Y2FsbGJhY2ssIGVycm9yKToKLSAgICAgICAgIHdpbmVfdmVyc2lvbl91cmwgPSAiaHR0cHM6Ly9w aG9lbmljaXMucGxheW9ubGludXguY29tL2luZGV4LnBocC93aW5lP29zPSVzIiAlIHNlbGYub3Bl cmF0aW5nX3N5c3RlbQotLSAgICAgICAgcHJpbnQoIkRvbndsb2FkaW5nICVzICIgJSB3aW5lX3Zl cnNpb25fdXJsKQotKyAgICAgICAgcHJpbnQoIkRvd25sb2FkaW5nICVzICIgJSB3aW5lX3ZlcnNp b25fdXJsKQotICAgICAgICAgdHJ5OgotICAgICAgICAgICAgIHJlcXVlc3QgPSB1cmxsaWIucmVx dWVzdC5SZXF1ZXN0KHdpbmVfdmVyc2lvbl91cmwsIE5vbmUsIHsnVXNlci1BZ2VudCc6IFZhcmlh Ymxlcy51c2VyQWdlbnR9KQotLSAgICAgICAgICAgIGhhbmRsZSA9IHVybGxpYi5yZXF1ZXN0LnVy bG9wZW4ocmVxdWVzdCwgdGltZW91dD01KQotKyAgICAgICAgICAgIGlmIHNlbGYub3BlcmF0aW5n X3N5c3RlbSA9PSAnZGFyd2luJzoKLSsgICAgICAgICAgICAgICAgaGFuZGxlID0gdXJsbGliLnJl cXVlc3QudXJsb3BlbihyZXF1ZXN0LCBjYWZpbGU9Jy4uLy4uL2xpYi9weXRob24zLjgvY2VydGlm aS9jYWNlcnQucGVtJywgdGltZW91dD01KQotKyAgICAgICAgICAgIGVsc2U6Ci0rICAgICAgICAg ICAgICAgIGhhbmRsZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4ocmVxdWVzdCwgdGltZW91dD01 KQotICAgICAgICAgICAgIGNhbGxiYWNrKHNlbGYuX2NvbnZlcnRfcGhvZW5pY2lzX3dpbmVfdmVy c2lvbnNfdG9fdjQoanNvbi5sb2FkKGhhbmRsZSkpKQotICAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgotICAgICAgICAgICAgIGVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCi0KLUZy b20gZDMyYzAxMmFjNzRiNmIwNWRmODE1ZGFjNWRhOTQ4YjY0OGQwOTkwOCBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206ICJEci4gTmljayIgPGRhcy1pbnRlbnNpdHlAdXNlcnMubm9yZXBs eS5naXRodWIuY29tPgotRGF0ZTogU3VuLCAyIEp1bCAyMDIzIDE3OjMxOjI2IC0wNDAwCi1TdWJq ZWN0OiBbUEFUQ0ggMjYvMzNdIEZpeGVkIGRlYnVnIG1lc3NhZ2UgaW4gUE9MX1dpbmVfU2V0VmVy c2lvbkVudiB0byBsb2cKLSB1c2luZyBQT0xfRGVidWdfTWVzc2FnZQotCi0tLS0KLSBsaWIvd2lu ZS5saWIgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9u KC0pCi0KLWRpZmYgLS1naXQgYS9saWIvd2luZS5saWIgYi9saWIvd2luZS5saWIKLWluZGV4IDQz NDc1ZjMxMC4uM2JmMTE4NzY1IDEwMDc1NQotLS0tIGEvbGliL3dpbmUubGliCi0rKysgYi9saWIv d2luZS5saWIKLUBAIC04MzcsNyArODM3LDcgQEAgUE9MX1dpbmVfU2V0VmVyc2lvbkVudigpIHsK LSAgICAgICAgIFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uICIkUE9MX1dJTkVWRVJTSU9OIgotICAg ICAgICAgW1sgIiQ/IiA9PSAyIF1dICYmIHJldHVybiAwCi0gICAgICAgZmkKLS0gICAgICBlY2hv ICJTZXR0aW5nIHBhdGhzLi4uIgotKyAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHBh dGhzLi4uIgotICAgICAgIGV4cG9ydCBQQVRIPSIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2Jp bi86JFBBVEgiCi0gICAgICAgWyAiJFBPTF9PUyIgPSAiTWFjIiBdICYmIGV4cG9ydCBEWUxEX0ZB TExCQUNLX0xJQlJBUllfUEFUSD0iJFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTi9saWIvIgotICAg ICAgIGV4cG9ydCBGUkVFVFlQRV9QUk9QRVJUSUVTPSJ0cnVldHlwZTppbnRlcnByZXRlci12ZXJz aW9uPTM1IgotCi1Gcm9tIGZiODgxMzcyODY3OThkNDkyNjkxYTk1ZWEwYzM2YjMxNDhmZDAyOTAg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKaS1IbyBMZWUgPHNlYXJjaDVAZ21haWwu Y29tPgotRGF0ZTogVGh1LCAxMCBBdWcgMjAyMyAxNzoyOToxOSArMDkwMAotU3ViamVjdDogW1BB VENIIDI3LzMzXSBQYXRjaCBmdW5jdGlvbiBleGVjdXRpb24gZXJyb3IgY2F1c2VkIGJ5IHRoZSBk ZWxldGlvbgotIG9mIHRoZSB3aGljaCBjb21tYW5kIGluIERlYmlhbiAxMgotCi0tLS0KLSBiYXNo L2ZpbmRfcHl0aG9uICAgICB8IDIgKy0KLSBsaWIvcGxheW9ubGludXgubGliICB8IDggKysrKy0t LS0KLSBsaWIvc2NyaXB0cy5saWIgICAgICB8IDIgKy0KLSBsaWIvdmFyaWFibGVzICAgICAgICB8 IDYgKysrLS0tCi0gbGliL3dpbmUubGliICAgICAgICAgfCA0ICsrLS0KLSBweXRob24vbWFpbndp bmRvdy5weSB8IDMgKystCi0gNiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxMiBk ZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Jhc2gvZmluZF9weXRob24gYi9iYXNoL2ZpbmRf cHl0aG9uCi1pbmRleCA4MTFiNmMwNDQuLjVjY2YxOTEyNSAxMDA3NTUKLS0tLSBhL2Jhc2gvZmlu ZF9weXRob24KLSsrKyBiL2Jhc2gvZmluZF9weXRob24KLUBAIC0yNiw3ICsyNiw3IEBAIHNlYXJj aF9weXRob24gKCkgewotIAkJZmkgICAgICAgICAgICAgICAgICAgCi0gCQotIAkJZWNobyAtbiAi TG9va2luZyBmb3IgJFBPTF9QWVRIT04uLi4gIiAxPiYyCi0tCQlpZiBbICIkKHdoaWNoICRQT0xf UFlUSE9OKSIgXTsgdGhlbgotKwkJaWYgWyAiJChjb21tYW5kIC12ICRQT0xfUFlUSE9OKSIgXTsg dGhlbgotIAkJCWxvY2FsIFZlcnNpb249JCgkUE9MX1BZVEhPTiAtLXZlcnNpb24gMj4mMSB8dGFp bCAtbiAxfHNlZCAtZSAncy9eUHl0aG9uIC8vJykKLSAJCQllY2hvIC1uICIkVmVyc2lvbiAtICIg MT4mMgotIAkJCWNhc2UgIiRWZXJzaW9uIiBpbgotZGlmZiAtLWdpdCBhL2xpYi9wbGF5b25saW51 eC5saWIgYi9saWIvcGxheW9ubGludXgubGliCi1pbmRleCAxMGJlNmI0ODguLmQyODQ2NmY4ZSAx MDA3NTUKLS0tLSBhL2xpYi9wbGF5b25saW51eC5saWIKLSsrKyBiL2xpYi9wbGF5b25saW51eC5s aWIKLUBAIC05MTYsMTYgKzkxNiwxNiBAQCBQT0xfU3VkbygpCi0gCQlmaQotIAkJaWYgWyAiJFBP TF9PUyIgPSAiTGludXgiIF07IHRoZW4KLSAJCQkjIE5vdywgd2UgZGV0ZWN0IHdoYXQgc3VkbyB0 byB1c2UKLS0JCQlpZiB3aGljaCBna3N1ZG87IHRoZW4KLSsJCQlpZiBjb21tYW5kIC12IGdrc3Vk bzsgdGhlbgotIAkJCQlTVURPX0NPTU1BTkQ9Imdrc3VkbyAtLSIKLSAJCQkJdW5zZXQgZ2tzdWRv Ci0tCQkJZWxpZiB3aGljaCBna3N1OyB0aGVuCi0rCQkJZWxpZiBjb21tYW5kIC12IGdrc3U7IHRo ZW4KLSAJCQkJU1VET19DT01NQU5EPSJna3N1IC0tIgotIAkJCQl1bnNldCBna3N1Ci0tCQkJZWxp ZiB3aGljaCBrZGVzdTsgdGhlbgotKwkJCWVsaWYgY29tbWFuZCAtdiBrZGVzdTsgdGhlbgotIAkJ CQlTVURPX0NPTU1BTkQ9ImtkZXN1IC0tIgotIAkJCQl1bnNldCBrZGVzdQotLQkJCWVsaWYgd2hp Y2ggc3VkbzsgdGhlbgotKwkJCWVsaWYgY29tbWFuZCAtdiBzdWRvOyB0aGVuCi0gCQkJCVNVRE9f Q09NTUFORD0iJFBPTF9URVJNIC1lIHN1ZG8iCi0gCQkJCXVuc2V0IHN1ZG8KLSAJCQllbHNlCi1k aWZmIC0tZ2l0IGEvbGliL3NjcmlwdHMubGliIGIvbGliL3NjcmlwdHMubGliCi1pbmRleCA0ZmQz ZmI1YzUuLjIzYzU3NjYxMyAxMDA3NTUKLS0tLSBhL2xpYi9zY3JpcHRzLmxpYgotKysrIGIvbGli L3NjcmlwdHMubGliCi1AQCAtNzM3LDcgKzczNyw3IEBAIFBPTF9TeXN0ZW1fRXh0cmFjdFNpbmds ZUZpbGUgKCkKLSAgICAgbG9jYWwgYXJjaGl2ZW5hbWU9YGJhc2VuYW1lICIkYXJjaGl2ZSJgCi0g ICAgIGxvY2FsIGZpbGVuYW1lPWBiYXNlbmFtZSAiJGZpbGUiYAotICAgICBsb2NhbCBzenBpZAot LSAgICBsb2NhbCBzemlwPWB3aGljaCA3emAKLSsgICAgbG9jYWwgc3ppcD1gY29tbWFuZCAtdiA3 emAKLSAKLSAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIkV4dHJhY3Rpbmcgc2luZ2xlIGZpbGUgOiBc IiRhcmNoaXZlXCIsIFwiJGZpbGVcIiwgXCIkZGVzdFwiIgotIAotZGlmZiAtLWdpdCBhL2xpYi92 YXJpYWJsZXMgYi9saWIvdmFyaWFibGVzCi1pbmRleCA5YzE2ZmUxYTcuLjEzMGFjYzg1NiAxMDA3 NTUKLS0tLSBhL2xpYi92YXJpYWJsZXMKLSsrKyBiL2xpYi92YXJpYWJsZXMKLUBAIC0zMSw3ICsz MSw3IEBAIFBPTF9Db25maWdfcFJlYWQgKCl7IGNhdCAiJFBPTF9VU0VSX1JPT1QvcGxheW9ubGlu dXguY2ZnIiAyPiAvZGV2L251bGwgfCBncmVwICJeCi0gYWxpYXMgZmluZD0iZmluZCAtSCIKLSAK LSAjIyMgU2VjdXJpdHkgZmVhdHVyZQotLVsgIiQod2hpY2ggc3VkbykiIF0gJiYgc3VkbyAtayAy PiAvZGV2L251bGwKLStbICIkKGNvbW1hbmQgLXYgc3VkbykiIF0gJiYgc3VkbyAtayAyPiAvZGV2 L251bGwKLSAKLSAjIyMgVGVybWluYWwKLSAjIFVzZXIgb3ZlcnJpZGUsIG11c3Qgc3VwcG9ydCAt VCB0byBzZXQgdGl0bGUgYW5kIC1lIHRvIHJ1biBhIGNvbW1hbmQKLUBAIC01Myw3ICs1Myw3IEBA IGZpCi0gZXhwb3J0IFBPTF9URVJNCi0gCi0gIyMjIERlc2t0b3AKLS1bICIkKHdoaWNoIHhkZy11 c2VyLWRpcikiIF0gJiYgZXhwb3J0IERFU0tUT1A9IiQoeGRnLXVzZXItZGlyIERFU0tUT1ApIiB8 fCBleHBvcnQgREVTS1RPUD0iJEhPTUUvRGVza3RvcCIKLStbICIkKGNvbW1hbmQgLXYgeGRnLXVz ZXItZGlyKSIgXSAmJiBleHBvcnQgREVTS1RPUD0iJCh4ZGctdXNlci1kaXIgREVTS1RPUCkiIHx8 IGV4cG9ydCBERVNLVE9QPSIkSE9NRS9EZXNrdG9wIgotIAotICMjIyBPdmVycmlkZSB+Ly53Z2V0 cmMKLSBleHBvcnQgV0dFVFJDPSIkUE9MX1VTRVJfUk9PVC9jb25maWd1cmF0aW9ucy93Z2V0cmMi Ci1AQCAtNzAsNyArNzAsNyBAQCBlbHNlCi0gCWV2YWxfZ2V0dGV4dCgpIHsgcHJpbnRmICIkQCI7 IH0KLSBmaQotIAotLXdoaWNoIHNoYXN1bSA+IC9kZXYvbnVsbCAyPiAvZGV2L251bGwgfHwgc2hh c3VtICgpIHsgc2hhMXN1bSAiJEAiOyB9Ci0rY29tbWFuZCAtdiBzaGFzdW0gPiAvZGV2L251bGwg Mj4gL2Rldi9udWxsIHx8IHNoYXN1bSAoKSB7IHNoYTFzdW0gIiRAIjsgfQotIAotIAotIGlmIFsg IiRQT0xfT1MiID09ICJMaW51eCIgXQotZGlmZiAtLWdpdCBhL2xpYi93aW5lLmxpYiBiL2xpYi93 aW5lLmxpYgotaW5kZXggM2JmMTE4NzY1Li44NzU2Y2RjZDMgMTAwNzU1Ci0tLS0gYS9saWIvd2lu ZS5saWIKLSsrKyBiL2xpYi93aW5lLmxpYgotQEAgLTk4OSwxMyArOTg5LDEzIEBAIFBPTF9XaW5l X1ByZWZpeENyZWF0ZSgpIHsKLSAKLSAgICAgICBQT0xfRGVidWdfSW5pdFByZWZpeAotIAotLSAg ICAgIHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUgJiYgWyAiJChQT0xfTUQ1X2ZpbGUgIiQod2hpY2gg d2luZXByZWZpeGNyZWF0ZSkiKSIgIT0gIjVjMGVlOTA2ODI3NDZlODExNjk4YTUzNDE1YjQ3NjVk IiBdICYmIFsgISAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRlIHwgZ3JlcCAkQVBQTElDQVRJT05f VElUTEUpIiA9ICIiIF0gJiYgd2luZSB3aW5lcHJlZml4Y3JlYXRlCi0rICAgICAgY29tbWFuZCAt diB3aW5lcHJlZml4Y3JlYXRlICYmIFsgIiQoUE9MX01ENV9maWxlICIkKHdoaWNoIHdpbmVwcmVm aXhjcmVhdGUpIikiICE9ICI1YzBlZTkwNjgyNzQ2ZTgxMTY5OGE1MzQxNWI0NzY1ZCIgXSAmJiBb ICEgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSB8IGdyZXAgJEFQUExJQ0FUSU9OX1RJVExFKSIg PSAiIiBdICYmIHdpbmUgd2luZXByZWZpeGNyZWF0ZQotICAgICAgIHdpbmUgd2luZWJvb3QKLSAg ICAgZmkKLSAgIGZpCi0gCi0gICAjIE1ha2Ugc3VyZSB0aGF0IC5yZWcgZmlsZXMgYXJlIGNyZWF0 ZWQKLS0gIGlmIHdoaWNoIHdpbmVzZXJ2ZXI7IHRoZW4KLSsgIGlmIGNvbW1hbmQgLXYgd2luZXNl cnZlcjsgdGhlbgotICAgICB3aW5lc2VydmVyIC13Ci0gICBlbHNlCi0gICAgIFBPTF9EZWJ1Z19N ZXNzYWdlICJXYXJuaW5nLCB3aW5lc2VydmVyIG5vdCBmb3VuZCIKLWRpZmYgLS1naXQgYS9weXRo b24vbWFpbndpbmRvdy5weSBiL3B5dGhvbi9tYWlud2luZG93LnB5Ci1pbmRleCBjOGZlMTExNjAu LmMzNzlkMmFlNSAxMDA3NTUKLS0tLSBhL3B5dGhvbi9tYWlud2luZG93LnB5Ci0rKysgYi9weXRo b24vbWFpbndpbmRvdy5weQotQEAgLTEyMTYsNyArMTIxNiw4IEBAIGRlZiBPbkluaXQoc2VsZik6 Ci0gICAgIGRlZiBfZXhlY3V0YWJsZUZvdW5kKHNlbGYsIGV4ZWN1dGFibGUpOgotICAgICAgICAg ZGV2bnVsbCA9IG9wZW4oJy9kZXYvbnVsbCcsICd3YicpCi0gICAgICAgICB0cnk6Ci0tICAgICAg ICAgICAgcmV0dXJuY29kZSA9IHN1YnByb2Nlc3MuY2FsbChbIndoaWNoIiwgZXhlY3V0YWJsZV0s IHN0ZG91dD1kZXZudWxsKQotKyAgICAgICAgICAgIGV4ZWN1dGFibGVfcGF0aCA9IHNodXRpbC53 aGljaChleGVjdXRhYmxlKQotKyAgICAgICAgICAgIHJldHVybmNvZGUgPSBzdWJwcm9jZXNzLmNh bGwoZXhlY3V0YWJsZV9wYXRoLCBzdGRvdXQ9ZGV2bnVsbCkKLSAgICAgICAgICAgICByZXR1cm4g KHJldHVybmNvZGUgPT0gMCkKLSAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICByZXR1cm4g RmFsc2UKLQotRnJvbSA1YTI5MjFlZTE5ZDM1MmRmZTI1YThjMGMyMTBjZGMyNDA0ZmJmMDE3IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmlobyBQZXJzeSBMZWUgPHNlYXJjaDVAZ21h aWwuY29tPgotRGF0ZTogVGh1LCAxMCBBdWcgMjAyMyAxNzo1NTo1MyArMDkwMAotU3ViamVjdDog W1BBVENIIDI4LzMzXSBVcGRhdGUgbWFpbndpbmRvdy5weQotCi1taXNzaW5nIGltcG9ydCBhZGQK LS0tLQotIHB5dGhvbi9tYWlud2luZG93LnB5IHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9weXRob24vbWFpbndpbmRvdy5weSBiL3B5dGhvbi9t YWlud2luZG93LnB5Ci1pbmRleCBjMzc5ZDJhZTUuLmNiYjc2ZGRhMSAxMDA3NTUKLS0tLSBhL3B5 dGhvbi9tYWlud2luZG93LnB5Ci0rKysgYi9weXRob24vbWFpbndpbmRvdy5weQotQEAgLTI3LDYg KzI3LDcgQEAKLSBpbXBvcnQgdGltZQotIGltcG9ydCB1cmxsaWIucGFyc2UKLSBpbXBvcnQgd2Vi YnJvd3NlcgotK2ltcG9ydCBzaHRpbAotIAotIHRyeToKLSAgICAgb3MuZW52aXJvblsiUE9MX09T Il0KLQotRnJvbSA1YzI2M2JmMGMzMmI5OTljZGI2MzY1NTVkMGRlODRhZjY2NTczOTZlIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmlobyBQZXJzeSBMZWUgPHNlYXJjaDVAZ21haWwu Y29tPgotRGF0ZTogVGh1LCAxMCBBdWcgMjAyMyAxNzo1Njo1NCArMDkwMAotU3ViamVjdDogW1BB VENIIDI5LzMzXSBVcGRhdGUgbWFpbndpbmRvdy5weQotCi1taXNzaW5nIG1vZHVsZSBpbXBvcnQg YW5kIGltcG9ydCBuYW1lIGZpeC4KLS0tLQotIHB5dGhvbi9tYWlud2luZG93LnB5IHwgMiArLQot IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0t Z2l0IGEvcHl0aG9uL21haW53aW5kb3cucHkgYi9weXRob24vbWFpbndpbmRvdy5weQotaW5kZXgg Y2JiNzZkZGExLi43YmM2OTVhOTggMTAwNzU1Ci0tLS0gYS9weXRob24vbWFpbndpbmRvdy5weQot KysrIGIvcHl0aG9uL21haW53aW5kb3cucHkKLUBAIC0yNyw3ICsyNyw3IEBACi0gaW1wb3J0IHRp bWUKLSBpbXBvcnQgdXJsbGliLnBhcnNlCi0gaW1wb3J0IHdlYmJyb3dzZXIKLS1pbXBvcnQgc2h0 aWwKLStpbXBvcnQgc2h1dGlsCi0gCi0gdHJ5OgotICAgICBvcy5lbnZpcm9uWyJQT0xfT1MiXQot Ci1Gcm9tIDM5OWZmMjhkYTE1OTM2YzQ0ZGRjMTI5MDU3N2I4NDdkMDVjYjcxYjIgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKaWhvIFBlcnN5IExlZSA8c2VhcmNoNUBnbWFpbC5jb20+ Ci1EYXRlOiBUdWUsIDE1IEF1ZyAyMDIzIDE1OjA0OjQ2ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0gg MzAvMzNdIFVwZGF0ZSB3aW5lLmxpYgotCi1maXggbWlzc2luZyB3aGljaCBjb21tYW5kCi0tLS0K LSBsaWIvd2luZS5saWIgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvd2luZS5saWIgYi9saWIvd2luZS5saWIK LWluZGV4IDg3NTZjZGNkMy4uM2FlOTE2YjE3IDEwMDc1NQotLS0tIGEvbGliL3dpbmUubGliCi0r KysgYi9saWIvd2luZS5saWIKLUBAIC05ODksNyArOTg5LDcgQEAgUE9MX1dpbmVfUHJlZml4Q3Jl YXRlKCkgewotIAotICAgICAgIFBPTF9EZWJ1Z19Jbml0UHJlZml4Ci0gCi0tICAgICAgY29tbWFu ZCAtdiB3aW5lcHJlZml4Y3JlYXRlICYmIFsgIiQoUE9MX01ENV9maWxlICIkKHdoaWNoIHdpbmVw cmVmaXhjcmVhdGUpIikiICE9ICI1YzBlZTkwNjgyNzQ2ZTgxMTY5OGE1MzQxNWI0NzY1ZCIgXSAm JiBbICEgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSB8IGdyZXAgJEFQUExJQ0FUSU9OX1RJVExF KSIgPSAiIiBdICYmIHdpbmUgd2luZXByZWZpeGNyZWF0ZQotKyAgICAgIGNvbW1hbmQgLXYgd2lu ZXByZWZpeGNyZWF0ZSAmJiBbICIkKFBPTF9NRDVfZmlsZSAiJChjb21tYW5kIC12IHdpbmVwcmVm aXhjcmVhdGUpIikiICE9ICI1YzBlZTkwNjgyNzQ2ZTgxMTY5OGE1MzQxNWI0NzY1ZCIgXSAmJiBb ICEgIiQoY29tbWFuZCAtdiB3aW5lcHJlZml4Y3JlYXRlIHwgZ3JlcCAkQVBQTElDQVRJT05fVElU TEUpIiA9ICIiIF0gJiYgd2luZSB3aW5lcHJlZml4Y3JlYXRlCi0gICAgICAgd2luZSB3aW5lYm9v dAotICAgICBmaQotICAgZmkKLQotRnJvbSA3OWM1MTNmYThhMTkzOGU1NWJlMGEyMzkxMjExNzZm MTQxNTA0OWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFNjaGVjayA8 cm9iZXJ0LXNjaGVja0B1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBTdW4sIDI2IE1h eSAyMDI0IDIwOjMyOjUzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMzEvMzNdIFJlbW92ZSB1bnVz ZWQgaW1wb3J0IG9mIGRlcHJlY2F0ZWQgUHl0aG9uCi0gYXN5bmNvcmUuZGlzcGF0Y2hlcgotCi0t LS0KLSBweXRob24vb3B0aW9ucy5weSB8IDEgLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9u KC0pCi0KLWRpZmYgLS1naXQgYS9weXRob24vb3B0aW9ucy5weSBiL3B5dGhvbi9vcHRpb25zLnB5 Ci1pbmRleCBmNDBmMjZhNzAuLmUxOGRkYjMyYiAxMDA3NTUKLS0tLSBhL3B5dGhvbi9vcHRpb25z LnB5Ci0rKysgYi9weXRob24vb3B0aW9ucy5weQotQEAgLTE4LDcgKzE4LDYgQEAKLSAjIHdpdGgg dGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4sCi0gIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B IDAyMTEwLTEzMDEgVVNBLgotIAotLWZyb20gYXN5bmNvcmUgaW1wb3J0IGRpc3BhdGNoZXIKLSBp bXBvcnQgb3MsIHN1YnByb2Nlc3MsIGdldG9wdCwgc3lzLCB1cmxsaWIucmVxdWVzdCwgc2lnbmFs LCBzb2NrZXQKLSBpbXBvcnQgd3gsIHRpbWUsIHJlCi0gaW1wb3J0IHdlYmJyb3dzZXIsIHNodXRp bAotCi1Gcm9tIDIyOTU5NDhiMzU2Zjg0NjFjNTY0MmNmOTZkYmI0M2QwM2M2MjkyMTAgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgU2NoZWNrIDxyb2JlcnQtc2NoZWNrQHVz ZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IFN1biwgMjYgTWF5IDIwMjQgMjE6NTM6MzQg KzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzMi8zM10gUmV0dXJuIGJhc2VkIG9uIHNodXRpbC53aGlj aCgpIGluc3RlYWQgb2YKLSBzdWJwcm9jZXNzLmNhbGwoKQotCi0tLS0KLSBweXRob24vbWFpbndp bmRvdy5weSB8IDUgKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDQgZGVs ZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9weXRob24vbWFpbndpbmRvdy5weSBiL3B5dGhvbi9t YWlud2luZG93LnB5Ci1pbmRleCA3YmM2OTVhOTguLjMzMTI5N2Y3OCAxMDA3NTUKLS0tLSBhL3B5 dGhvbi9tYWlud2luZG93LnB5Ci0rKysgYi9weXRob24vbWFpbndpbmRvdy5weQotQEAgLTEyMTUs MTEgKzEyMTUsOCBAQCBkZWYgT25Jbml0KHNlbGYpOgotICAgICAgICAgcmV0dXJuIFRydWUKLSAK LSAgICAgZGVmIF9leGVjdXRhYmxlRm91bmQoc2VsZiwgZXhlY3V0YWJsZSk6Ci0tICAgICAgICBk ZXZudWxsID0gb3BlbignL2Rldi9udWxsJywgJ3diJykKLSAgICAgICAgIHRyeToKLS0gICAgICAg ICAgICBleGVjdXRhYmxlX3BhdGggPSBzaHV0aWwud2hpY2goZXhlY3V0YWJsZSkKLS0gICAgICAg ICAgICByZXR1cm5jb2RlID0gc3VicHJvY2Vzcy5jYWxsKGV4ZWN1dGFibGVfcGF0aCwgc3Rkb3V0 PWRldm51bGwpCi0tICAgICAgICAgICAgcmV0dXJuIChyZXR1cm5jb2RlID09IDApCi0rICAgICAg ICAgICAgcmV0dXJuIChzaHV0aWwud2hpY2goZXhlY3V0YWJsZSkgaXMgbm90IE5vbmUpCi0gICAg ICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gCi0KLUZyb20gMTBmNzg1 M2M4NGY0NTZmMTkyODljMjJmZTE5YTlhOTlmOTRkOWRkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IFJvYmVydCBTY2hlY2sgPHJvYmVydEBmZWRvcmFwcm9qZWN0Lm9yZz4KLURhdGU6 IE1vbiwgMTQgT2N0IDIwMjQgMDA6MDA6NTIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzMy8zM10g UmVwbGFjZSBwaXBlcy5xdW90ZSgpIGZyb20gZGVwcmVjYXRlZCBQeXRob24gcGlwZXMKLQotLS0t Ci0gcHl0aG9uL2xpYi9wbGF5b25saW51eC5weSB8IDYgKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQs IDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3B5dGhvbi9s aWIvcGxheW9ubGludXgucHkgYi9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5Ci1pbmRleCBmYTli OTBmYjkuLmIzOWY4YTlhOSAxMDA3NTUKLS0tLSBhL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkK LSsrKyBiL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkKLUBAIC01LDcgKzUsNyBAQAotIAotIGZy b20gLiBpbXBvcnQgVmFyaWFibGVzCi0gaW1wb3J0IG9zCi0taW1wb3J0IHN1YnByb2Nlc3MsIHNo bGV4LCBwaXBlcywgd3gKLStpbXBvcnQgc3VicHJvY2Vzcywgc2hsZXgsIHd4Ci0gaW1wb3J0IG5h dHNvcnQKLSAKLSBkZWYgd2lucGF0aChzY3JpcHQsIHBhdGgpOgotQEAgLTM3Myw3ICszNzMsNyBA QCBkZWYgZ2V0QXJncyhzaG9ydGN1dCk6ICMgR2V0IHByZWZpeCBuYW1lIGZyb20gc2hvcnRjdXQK LSAgICAgdHJ5OgotICAgICAgICAgYXJncyA9IHNobGV4LnNwbGl0KGZpY2hpZXJbaV0pWzI6LTFd Ci0gICAgICAgICAjcHJpbnQgYXJncwotLSAgICAgICAgYXJncyA9ICIgIi5qb2luKFsgcGlwZXMu cXVvdGUoeCkgZm9yIHggaW4gYXJnc10pCi0rICAgICAgICBhcmdzID0gIiAiLmpvaW4oWyBzaGxl eC5xdW90ZSh4KSBmb3IgeCBpbiBhcmdzXSkKLSAgICAgICAgICNwcmludCBhcmdzCi0gICAgIGV4 Y2VwdDoKLSAgICAgICAgIGFyZ3MgPSAiIgotQEAgLTQzMiw3ICs0MzIsNyBAQCBkZWYgd3JpdGVB cmdzKGdhbWUsIGFyZ3MpOgotICAgICAgICAgICAgICAgICBvbGRfc3RyaW5nID0gc2hsZXguc3Bs aXQoZmljaGllcltpXSkKLSAgICAgICAgICAgICAgICAgbmV3X3N0cmluZyA9IHNobGV4LnNwbGl0 KHN0cihhcmdzKSkKLSAgICAgICAgICAgICAgICAgbmV3X3N0cmluZyA9IG9sZF9zdHJpbmdbMDoy XSArIG5ld19zdHJpbmcKLS0gICAgICAgICAgICAgICAgbmV3X3N0cmluZyA9ICIgIi5qb2luKFsg cGlwZXMucXVvdGUoeCkgZm9yIHggaW4gbmV3X3N0cmluZ10pCi0rICAgICAgICAgICAgICAgIG5l d19zdHJpbmcgPSAiICIuam9pbihbIHNobGV4LnF1b3RlKHgpIGZvciB4IGluIG5ld19zdHJpbmdd KQotIAotICAgICAgICAgICAgICAgICBuZXdfc3RyaW5nID0gbmV3X3N0cmluZysnICIkQCInCi0g ICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kKG5ld19zdHJpbmcpCgpkaWZmIC0tZ2l0IGEvcGxh eW9ubGludXgtNC40LWdpdGZkZTAwZmUucGF0Y2ggYi9wbGF5b25saW51eC00LjQtZ2l0ZmRlMDBm ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGU5NDFjCi0tLSAv ZGV2L251bGwKKysrIGIvcGxheW9ubGludXgtNC40LWdpdGZkZTAwZmUucGF0Y2gKQEAgLTAsMCAr MSw0OTE1IEBACitGcm9tIDlmZjRiNzYxNjhhN2M2NGU0YTJkZTdiZTUxNTg2MThmYmIxMjQyYTIg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/UXVlbnRpbj0yMFA9QzM9 QTJyaXM/PSA8Z2l0aHViQHBsYXlvbmxpbnV4LmNvbT4KK0RhdGU6IFN1biwgMTcgTWF5IDIwMjAg MTY6MTU6MzAgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAwMS8zN10gVXBkYXRlIENIQU5HRUxPRy5t ZAorCistLS0KKyBDSEFOR0VMT0cubWQgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2Vy dGlvbnMoKykKKworZGlmZiAtLWdpdCBhL0NIQU5HRUxPRy5tZCBiL0NIQU5HRUxPRy5tZAoraW5k ZXggYTU4OTYyNWMzLi5jZGUyZDgyYzQgMTAwNjQ0CistLS0gYS9DSEFOR0VMT0cubWQKKysrKyBi L0NIQU5HRUxPRy5tZAorQEAgLTEsMyArMSw2IEBACisrIyA0LjQKKysqIFB5dGhvbiAzIHN1cHBv cnQgCisrCisgIyA0LjMuNAorICogRml4ZWQgc29tZSBidWdzIGluIHRoZSB3aW5ldmVyc2lvbiBw cm9jZXNzCisgKiBCZWdpbmluZyBvZiBjb2RlIGNsZWFuaW5nIGFuZCByZWZhY3RvcmluZworCitG cm9tIDc4OGZhZDE2ZWZmNDkwNDE5M2U0ZTljNTJiMjM2NzI1MzVhMjNjMzMgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBHaWxsZXMgPGdpbGxlcy53aWJlckBnbWFpbC5jb20+CitEYXRl OiBTYXQsIDMwIE1heSAyMDIwIDExOjE5OjM1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMDIvMzdd IFJlbW92aW5nIFNldFNwYWNpbmcgZnVudGlvbgorCistLS0KKyBweXRob24vY29uZmlndXJld2lu ZG93L0NvbmZpZ3VyZVdpbmRvdy5weSAgICAgICAgIHwgMiArLQorIHB5dGhvbi9jb25maWd1cmV3 aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJvb2sucHkgfCAyICstCisgcHl0aG9uL2RlYnVnLnB5 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBweXRob24vaW5zdGFs bC9JbnN0YWxsV2luZG93LnB5ICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHB5dGhvbi9tYWlu d2luZG93LnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgcHl0aG9uL29w dGlvbnMucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBweXRob24v c2V0dXB3aW5kb3cvUE9MX1NldHVwRnJhbWUucHkgICAgICAgICAgICAgIHwgMiArLQorIHB5dGhv bi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc05vdGVib29rLnB5ICAgICAgfCA0ICsrLS0KKyA4 IGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAt LWdpdCBhL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93LnB5IGIvcHl0aG9u L2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3cucHkKK2luZGV4IDMwZjc3OWRiMS4uYTI2 MzIxNDM3IDEwMDc1NQorLS0tIGEvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5k b3cucHkKKysrKyBiL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93LnB5CitA QCAtNzUsNyArNzUsNyBAQCBkZWYgX19pbml0X18oc2VsZixwYXJlbnQsaWQsdGl0bGUsc2hvcnRj dXQsIGlzUHJlZml4ID0gRmFsc2UpOgorICAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9CVVRUT04s IHNlbGYuRGVsZXRlUHJlZml4LCBpZD0xMDAyKQorIAorIAorLSAgICAgICAgc2VsZi5saXN0X2dh bWUuU2V0U3BhY2luZygwKQorKyAgICAgICAgI3NlbGYubGlzdF9nYW1lLlNldFNwYWNpbmcoMCkK KyAgICAgICAgIHNlbGYubGlzdF9nYW1lLlNldEltYWdlTGlzdChzZWxmLmltYWdlcykKKyAKKyAK K2RpZmYgLS1naXQgYS9weXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVi b29rLnB5IGIvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5w eQoraW5kZXggOGI0ZTM4N2VhLi45NzNkOWJiZDMgMTAwNjQ0CistLS0gYS9weXRob24vY29uZmln dXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29rLnB5CisrKysgYi9weXRob24vY29uZmln dXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29rLnB5CitAQCAtMjY5LDcgKzI2OSw3IEBA IGRlZiBQYWNrYWdlcyhzZWxmLCBub20pOgorIAorICAgICAgICAgc2VsZi5NZW51ID0gd3guVHJl ZUN0cmwoc2VsZi5wYW5lbFBhY2thZ2VzLCA5OSwgcG9zPSgxNSwgNzUpLCBzaXplPSg1MzAsIDI2 MCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5UUl9ISURFX1JP T1QgfCB3eC5UUl9GVUxMX1JPV19ISUdITElHSFQgfCBWYXJpYWJsZXMud2lkZ2V0X2JvcmRlcnMp CistICAgICAgICBzZWxmLk1lbnUuU2V0U3BhY2luZygwKTsKKysgICAgICAgICNzZWxmLk1lbnUu U2V0U3BhY2luZygwKTsKKyAgICAgICAgIHNlbGYuTWVudS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFn ZVBhY2thZ2VzKQorICAgICAgICAgc2VsZi5pbWFnZVBhY2thZ2VzLlJlbW92ZUFsbCgpCisgCitk aWZmIC0tZ2l0IGEvcHl0aG9uL2RlYnVnLnB5IGIvcHl0aG9uL2RlYnVnLnB5CitpbmRleCAwMjIx ZTg5YzAuLjQzZThjZjAyMSAxMDA3NTUKKy0tLSBhL3B5dGhvbi9kZWJ1Zy5weQorKysrIGIvcHl0 aG9uL2RlYnVnLnB5CitAQCAtNjAsNyArNjAsNyBAQCBkZWYgX19pbml0X18oc2VsZixwYXJlbnQs aWQsdGl0bGUsbG9nY2hlY2s9Ii9kZXYvbnVsbCIsbG9ndHlwZT1Ob25lKToKKyAgICAgICAgIHNl bGYuQmluZCh3eC5FVlRfVFJFRV9TRUxfQ0hBTkdFRCwgc2VsZi5hbmFseXNlTG9nLCBpZD05MDAp CisgCisgCistICAgICAgICBzZWxmLmxpc3RfZ2FtZS5TZXRTcGFjaW5nKDApOworKyAgICAgICAg I3NlbGYubGlzdF9nYW1lLlNldFNwYWNpbmcoMCk7CisgICAgICAgICBzZWxmLmxpc3RfZ2FtZS5T ZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZXMpCisgCisgCitkaWZmIC0tZ2l0IGEvcHl0aG9uL2luc3Rh bGwvSW5zdGFsbFdpbmRvdy5weSBiL3B5dGhvbi9pbnN0YWxsL0luc3RhbGxXaW5kb3cucHkKK2lu ZGV4IDI3YTZiNTFhNS4uNWI1ODQ3NzRkIDEwMDc1NQorLS0tIGEvcHl0aG9uL2luc3RhbGwvSW5z dGFsbFdpbmRvdy5weQorKysrIGIvcHl0aG9uL2luc3RhbGwvSW5zdGFsbFdpbmRvdy5weQorQEAg LTE4Myw3ICsxODMsNyBAQCBkZWYgX2NyZWF0ZUFwcE5hdmlnYXRpb24oc2VsZik6CisgICAgICAg ICBzZWxmLmFwcHNMaXN0ID0gd3guVHJlZUN0cmwoc2VsZi5hcHBOYXZpZ2F0aW9uUGFuZWwsIDEw NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5UUl9ISURF X1JPT1QgfCB3eC5UUl9GVUxMX1JPV19ISUdITElHSFQgfCBWYXJpYWJsZXMud2lkZ2V0X2JvcmRl cnMpCisgICAgICAgICBzZWxmLmFwcHNMaXN0LlNldEltYWdlTGlzdChzZWxmLmltYWdlc2FwcHMp CistICAgICAgICBzZWxmLmFwcHNMaXN0LlNldFNwYWNpbmcoMCkKKysgICAgICAgICNzZWxmLmFw cHNMaXN0LlNldFNwYWNpbmcoMCkKKyAKKyAgICAgICAgIHNlbGYuYXBwTmF2aWdhdGlvblNpemVy LkFkZFNwYWNlcigxMCkKKyAgICAgICAgIHNlbGYuYXBwTmF2aWdhdGlvblNpemVyLkFkZChzZWxm LmFwcHNMaXN0LCA0LCB3eC5FWFBBTkQsIDUpCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21haW53aW5k b3cucHkgYi9weXRob24vbWFpbndpbmRvdy5weQoraW5kZXggN2MyMTE0MmRmLi44ZGYxZmYxNGIg MTAwNzU1CistLS0gYS9weXRob24vbWFpbndpbmRvdy5weQorKysrIGIvcHl0aG9uL21haW53aW5k b3cucHkKK0BAIC0yNDAsNyArMjQwLDcgQEAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgaWQs IHRpdGxlKToKKyAKKyAgICAgICAgICMjIExpc3QgZ2FtZQorICAgICAgICAgc2VsZi5saXN0X2dh bWUgPSB3eC5UcmVlQ3RybChzZWxmLCAxMDUsIHN0eWxlPXd4LlRSX0hJREVfUk9PVCB8IHd4LlRS X0ZVTExfUk9XX0hJR0hMSUdIVCkKKy0gICAgICAgIHNlbGYubGlzdF9nYW1lLlNldFNwYWNpbmco MCkKKysgICAgICAgICNzZWxmLmxpc3RfZ2FtZS5TZXRTcGFjaW5nKDApCisgICAgICAgICBzZWxm Lmxpc3RfZ2FtZS5TZXRJbmRlbnQoNSkKKyAgICAgICAgIHNlbGYubGlzdF9nYW1lLlNldEltYWdl TGlzdChzZWxmLmltYWdlcykKKyAgICAgICAgIHNlbGYubWVudV9nYXVjaGUgPSB3eC5QYW5lbChz ZWxmLCAtMSkKK2RpZmYgLS1naXQgYS9weXRob24vb3B0aW9ucy5weSBiL3B5dGhvbi9vcHRpb25z LnB5CitpbmRleCBhNTRjMTEwMDAuLjcyMzA3M2NlNCAxMDA3NTUKKy0tLSBhL3B5dGhvbi9vcHRp b25zLnB5CisrKysgYi9weXRob24vb3B0aW9ucy5weQorQEAgLTE4Nyw3ICsxODcsNyBAQCBkZWYg UGx1Z2lucyhzZWxmLCBub20pOgorICAgICAgICAgc2VsZi50eHRQbHVnaW4gPSB3eC5TdGF0aWNU ZXh0KHNlbGYucGFuZWxQbHVnaW5zLCAtMSwgXygiSW5zdGFsbGVkIHBsdWdpbnMiKSwgc2l6ZT13 eC5EZWZhdWx0U2l6ZSkKKyAgICAgICAgIHNlbGYudHh0UGx1Z2luLlNldEZvbnQoc2VsZi5mb250 VGl0bGUpCisgICAgICAgICBzZWxmLnBsdWdpbmxpc3QgPSB3eC5UcmVlQ3RybChzZWxmLnBhbmVs UGx1Z2lucywgMjIwLCBzdHlsZT1WYXJpYWJsZXMud2lkZ2V0X2JvcmRlcnN8d3guVFJfSElERV9S T09UfHd4LlRSX0ZVTExfUk9XX0hJR0hMSUdIVCkKKy0gICAgICAgIHNlbGYucGx1Z2lubGlzdC5T ZXRTcGFjaW5nKDApCisrICAgICAgICAjc2VsZi5wbHVnaW5saXN0LlNldFNwYWNpbmcoMCkKKyAK KyAgICAgICAgIHNlbGYucGx1Z2luSW1nTGlzdCA9IHd4LkltYWdlTGlzdCgxNiwxNikKKyAKK2Rp ZmYgLS1naXQgYS9weXRob24vc2V0dXB3aW5kb3cvUE9MX1NldHVwRnJhbWUucHkgYi9weXRob24v c2V0dXB3aW5kb3cvUE9MX1NldHVwRnJhbWUucHkKK2luZGV4IDY2YmVlODUzMy4uMzNkNzNkMzhh IDEwMDc1NQorLS0tIGEvcHl0aG9uL3NldHVwd2luZG93L1BPTF9TZXR1cEZyYW1lLnB5CisrKysg Yi9weXRob24vc2V0dXB3aW5kb3cvUE9MX1NldHVwRnJhbWUucHkKK0BAIC0yMTIsNyArMjEyLDcg QEAgZGVmIF9jcmVhdGVVSShzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3R5bGU9d3guVFJfSElERV9ST09UIHwgd3guVFJfRlVMTF9ST1dfSElHSExJR0hUIHwg VmFyaWFibGVzLndpZGdldF9ib3JkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwb3M9KDI1LCAyNSksIHNpemU9KDQ2MCwgMjIwKSkKKyAgICAgICAgIHNlbGYuTWVu dUdhbWVzLlNldEltYWdlTGlzdChzZWxmLmltYWdlcykKKy0gICAgICAgIHNlbGYuTWVudUdhbWVz LlNldFNwYWNpbmcoMCkKKysgICAgICAgICNzZWxmLk1lbnVHYW1lcy5TZXRTcGFjaW5nKDApCisg CisgICAgICAgICAjIExvZ2luCisgICAgICAgICBzZWxmLmxvZ2luID0gd3guU3RhdGljVGV4dChz ZWxmLmNvbnRlbnRQYW5lbCwgLTEsIF8oIkxvZ2luOiAiKSwgcG9zPSgyMCwgNDApLCBzaXplPSg0 NjAsIDIwKSkKK2RpZmYgLS1naXQgYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNO b3RlYm9vay5weSBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc05vdGVib29rLnB5 CitpbmRleCBlMDg4YWJlYjIuLmVjNWYxMjUzNSAxMDA2NDQKKy0tLSBhL3B5dGhvbi93aW5lX3Zl cnNpb25zL1dpbmVWZXJzaW9uc05vdGVib29rLnB5CisrKysgYi9weXRob24vd2luZV92ZXJzaW9u cy9XaW5lVmVyc2lvbnNOb3RlYm9vay5weQorQEAgLTM5LDcgKzM5LDcgQEAgZGVmIF9jcmVhdGVJ bnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbChzZWxmLCBhcmNoKToKKyAgICAgICAgIHNlbGYuaW5z dGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdID0gd3guVHJlZUN0cmwoaW5zdGFs bGVkV2luZVZlcnNpb25zUGFuZWwsIDEwNyArIHNlbGYuY2FsY3VsYXRlRXZlbnREZWx0YShhcmNo KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3R5bGU9d3guVFJfSElERV9ST09UIHwgd3guVFJfRlVMTF9ST1dfSElH SExJR0hUIHwgVmFyaWFibGVzLndpZGdldF9ib3JkZXJzKQorICAgICAgICAgc2VsZi5pbnN0YWxs ZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2Vz YXBwc19pW2FyY2hdKQorLSAgICAgICAgc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2Vs ZWN0b3JbYXJjaF0uU2V0U3BhY2luZygwKQorKyAgICAgICAgI3NlbGYuaW5zdGFsbGVkV2luZVZl cnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldFNwYWNpbmcoMCkKKyAgICAgICAgIGluc3RhbGxl ZFdpbmVWZXJzaW9uc1NpemVyLkFkZChzZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxl Y3RvclthcmNoXSwgMSwgd3guRVhQQU5EKQorICAgICAgICAgaW5zdGFsbGVkV2luZVZlcnNpb25z U2l6ZXIuQWRkU3BhY2VyKDEwKQorIAorQEAgLTU1LDcgKzU1LDcgQEAgZGVmIF9jcmVhdGVBdmFp bGFibGVXaW5lVmVyc2lvbnNQYW5lbChzZWxmLCBhcmNoKToKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3gu VFJfSElERV9ST09UIHwgd3guVFJfRlVMTF9ST1dfSElHSExJR0hUIHwgVmFyaWFibGVzLndpZGdl dF9ib3JkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplPSgzMjAsIDMwMCksIHBvcz0oMTAsIDM1KSkKKyAg ICAgICAgIHNlbGYuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldElt YWdlTGlzdChzZWxmLmltYWdlc2FwcHNbYXJjaF0pCistICAgICAgICBzZWxmLmF2YWlsYWJsZVdp bmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5TZXRTcGFjaW5nKDApCisrICAgICAgICAjc2Vs Zi5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0U3BhY2luZygwKQor ICAgICAgICAgYXZhaWxhYmxlV2luZVZlcnNpb25zU2l6ZXIuQWRkKHNlbGYuYXZhaWxhYmxlV2lu ZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLCAxLCB3eC5FWFBBTkQpCisgICAgICAgICBhdmFp bGFibGVXaW5lVmVyc2lvbnNTaXplci5BZGRTcGFjZXIoMTApCisgCisKK0Zyb20gNzdhM2NhM2Jl MjkzZWJjYWZhMjQwMDcwM2E1ZGQ0MDc5YTVmMjAwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IEdpbGxlcyA8Z2lsbGVzLndpYmVyQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMzAgTWF5 IDIwMjAgMTE6MzI6MTMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8zN10gU29sdmluZyBwbHVn aW5nIG1hbmFnZXIgaXNzdWUgKGV4dGVuc2lvbiBtYW5hZ2VtZW50KQorCistLS0KKyBweXRob24v b3B0aW9ucy5weSB8IDExICsrKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9u cygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3B5dGhvbi9vcHRpb25zLnB5IGIv cHl0aG9uL29wdGlvbnMucHkKK2luZGV4IDcyMzA3M2NlNC4uZjQwZjI2YTcwIDEwMDc1NQorLS0t IGEvcHl0aG9uL29wdGlvbnMucHkKKysrKyBiL3B5dGhvbi9vcHRpb25zLnB5CitAQCAtMjI5LDkg KzIyOSw5IEBAIGRlZiBnZW5lcmF0ZUV4dHMoc2VsZik6CisgICAgICAgICAgICAgbGluZSA9IGxp bmUucmVwbGFjZSgiXG4iLCIiKQorICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCI9IikK KyAgICAgICAgICAgICBsaW5lciA9ICJMaW5lICVzIiAlIGkKKy0gICAgICAgICAgICBzZWxmLmxp c3RfZXh0Lkluc2VydFN0cmluZ0l0ZW0oaSwgbGluZXIpCistICAgICAgICAgICAgc2VsZi5saXN0 X2V4dC5TZXRTdHJpbmdJdGVtKGksIDAsIGxpbmVbMF0pCistICAgICAgICAgICAgc2VsZi5saXN0 X2V4dC5TZXRTdHJpbmdJdGVtKGksIDEsIGxpbmVbMV0pCisrICAgICAgICAgICAgc2VsZi5saXN0 X2V4dC5JbnNlcnRJdGVtKGksIGxpbmVyKQorKyAgICAgICAgICAgIHNlbGYubGlzdF9leHQuU2V0 SXRlbShpLCAwLCBsaW5lWzBdKQorKyAgICAgICAgICAgIHNlbGYubGlzdF9leHQuU2V0SXRlbShp LCAxLCBsaW5lWzFdKQorICAgICAgICAgICAgIGkgKz0gMQorICAgICAgICAgc2VsZi5hcHBfaW5z dGFsbGVkX3RleHQuSGlkZSgpCisgICAgICAgICBzZWxmLmFwcF9pbnN0YWxsZWQuSGlkZSgpCitA QCAtMjQ5LDggKzI0OSw5IEBAIGRlZiBlZGl0RXh0KHNlbGYsIGV2ZW50KToKKyAgICAgICAgIHNl bGYuYXBwX2luc3RhbGxlZC5TaG93KCkKKyAgICAgICAgIHNlbGYuZGVsZXRlX2V4dC5TaG93KCkK KyAKKy0gICAgICAgIHNlbGYuYXBwX3NlbGVjdGVkID0gc2VsZi5leHRzW2V2ZW50Lm1faXRlbUlu ZGV4XS5zcGxpdCgiPSIpWzFdCistICAgICAgICBzZWxmLmV4dF9zZWxlY3RlZCA9IHNlbGYuZXh0 c1tldmVudC5tX2l0ZW1JbmRleF0uc3BsaXQoIj0iKVswXQorKyAgICAgICAgaW5kID0gZXZlbnQu R2V0SW5kZXgoKQorKyAgICAgICAgc2VsZi5hcHBfc2VsZWN0ZWQgPSBzZWxmLmxpc3RfZXh0Lkdl dEl0ZW0oaW5kLDEpLkdldFRleHQoKQorKyAgICAgICAgc2VsZi5leHRfc2VsZWN0ZWQgPSBzZWxm Lmxpc3RfZXh0LkdldEl0ZW0oaW5kLDApLkdldFRleHQoKQorIAorICAgICAgICAgc2VsZi5hcHBf aW5zdGFsbGVkLlNldFZhbHVlKHNlbGYuYXBwX3NlbGVjdGVkLnJlcGxhY2UoIlxuIiwiIikucmVw bGFjZSgiXHIiLCIiKSkKKyAKKworRnJvbSBhNjU2ZjViMmJkZDIzMzc1ZTNkOTU0N2E5YzM4Y2Nm OTllMmRjNjcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogR2lsbGVzIDxnaWxsZXMu d2liZXJAZ21haWwuY29tPgorRGF0ZTogU2F0LCAzMCBNYXkgMjAyMCAxNDozNDoyOCArMDIwMAor U3ViamVjdDogW1BBVENIIDA0LzM3XSBTb2x2aW5nIGRpZmZlcmVudCBpc3N1ZSBvbiBkZWJ1ZyB3 aW5kb3cKKworLS0tCisgcHl0aG9uL2RlYnVnLnB5ICAgICAgICAgfCA3ICsrKystLS0KKyBweXRo b24vbGliL1ZhcmlhYmxlcy5weSB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9u cygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3B5dGhvbi9kZWJ1Zy5weSBiL3B5 dGhvbi9kZWJ1Zy5weQoraW5kZXggNDNlOGNmMDIxLi4xZTM0NGVkYzggMTAwNzU1CistLS0gYS9w eXRob24vZGVidWcucHkKKysrKyBiL3B5dGhvbi9kZWJ1Zy5weQorQEAgLTM4LDcgKzM4LDcgQEAg ZGVmIF9faW5pdF9fKHNlbGYscGFyZW50LGlkLHRpdGxlLGxvZ2NoZWNrPSIvZGV2L251bGwiLGxv Z3R5cGU9Tm9uZSk6CisgCisgICAgICAgICB3eC5GcmFtZS5fX2luaXRfXyhzZWxmLCBwYXJlbnQs IC0xLCB0aXRsZSwgc2l6ZSA9ICg4MTAsIDYwMCtWYXJpYWJsZXMud2luZG93c19hZGRfc2l6ZSks IHN0eWxlID0gd3guQ0xPU0VfQk9YIHwgd3guQ0FQVElPTiB8IHd4Lk1JTklNSVpFX0JPWCkKKyAg ICAgICAgIHNlbGYuU2V0SWNvbih3eC5JY29uKFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYrIi9l dGMvcGxheW9ubGludXgucG5nIiwgd3guQklUTUFQX1RZUEVfQU5ZKSkKKy0gICAgICAgIHNlbGYu U2V0VGl0bGUoXygnezB9IGRlYnVnZ2VyJykuZm9ybWF0KG9zLmVudmlyb25bIkFQUExJQ0FUSU9O X1RJVExFIl0pKQorKyAgICAgICAgc2VsZi5TZXRUaXRsZSh0aXRsZSkKKyAgICAgICAgICNzZWxm LnBhbmVsRmVucCA9IHd4LlBhbmVsKHNlbGYsIC0xKQorIAorICAgICAgICAgc2VsZi5wcmVmaXhl c19pdGVtID0ge30KK0BAIC03OSw3ICs3OSw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLHBhcmVudCxp ZCx0aXRsZSxsb2djaGVjaz0iL2Rldi9udWxsIixsb2d0eXBlPU5vbmUpOgorICAgICAgICAgc2Vs Zi5sb2dfcmVhZGVyID0gd3guVGV4dEN0cmwoc2VsZi5wYW5lbFRleHQsIDEwMCwgIiIsIHNpemU9 d3guU2l6ZSg1OTAsNTAwKSwgcG9zPSgyLDIpLCBzdHlsZT1WYXJpYWJsZXMud2lkZ2V0X2JvcmRl cnN8d3guVEVfUklDSDJ8d3guVEVfUkVBRE9OTFl8d3guVEVfTVVMVElMSU5FKQorICAgICAgICAg c2VsZi5sb2dfcmVhZGVyLkJpbmQod3guRVZUX1NFVF9GT0NVUywgc2VsZi5PbkZvY3VzKQorICAg ICAgICAgc2VsZi5vcGVuVGV4dEVkaXQgPSB3eC5CdXR0b24oc2VsZi5wYW5lbE5vdEVtcHR5LCAx MDEsIF8oIkxvY2F0ZSB0aGlzIGxvZ2ZpbGUiKSwgc2l6ZT0oNDAwLDMwKSwgcG9zPSg3MCw1MTIp KQorLSAgICAgICAgc2VsZi5yZXBvcnRQcm9ibGVtID0gd3guQnV0dG9uKHNlbGYucGFuZWxOb3RF bXB0eSwgMTAyLCAiIiwgc2l6ZT0oNDAwLDMwKSwgcG9zPSg3MCw1NTIpKQorKyAgICAgICAgc2Vs Zi5yZXBvcnRQcm9ibGVtID0gd3guQnV0dG9uKHNlbGYucGFuZWxOb3RFbXB0eSwgMTAyLCBfKCJC dWcgcmVwb3J0IiksIHNpemU9KDQwMCwzMCksIHBvcz0oNzAsNTUyKSkKKyAKKyAgICAgICAgIGlm KGxvZ2NoZWNrID09ICIvZGV2L251bGwiKToKKyAgICAgICAgICAgICBzZWxmLkhpZGVMb2dGaWxl KCkKK0BAIC05NSw3ICs5NSw4IEBAIGRlZiBidWdSZXBvcnQoc2VsZiwgZXZlbnQpOgorICAgICAg ICAgbmV3X2VudiA9IG9zLmVudmlyb24KKyAgICAgICAgIG5ld19lbnZbIkxPR1RJVExFIl0gPSBz ZWxmLmxvZ25hbWUKKyAgICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oWyJiYXNoIiwgVmFyaWFibGVz LnBsYXlvbmxpbnV4X2VudisiL2Jhc2gvYnVnX3JlcG9ydCJdLCBlbnY9bmV3X2VudikKKy0gICAg ICAgIHNlbGYucmVwb3J0UHJvYmxlbS5FbmFibGUoRmFsc2UpCisrICAgICAgICAjIERvZXNuJ3Qg d29yayBpZiBjYW5jZWwgb24gUE9MIFdpbmRvdyA6IG5lZWQgdG8gZmluZCBhbm90aGVyIHdheSAu Li4KKysgICAgICAgICNzZWxmLnJlcG9ydFByb2JsZW0uRW5hYmxlKEZhbHNlKQorIAorICAgICBk ZWYgbG9jYXRlKHNlbGYsIGV2ZW50KToKKyAgICAgICAgIGlmKHNlbGYubG9ndHlwZSA9PSAwKToK K2RpZmYgLS1naXQgYS9weXRob24vbGliL1ZhcmlhYmxlcy5weSBiL3B5dGhvbi9saWIvVmFyaWFi bGVzLnB5CitpbmRleCAwNTVmZTE3ZjkuLjhiZWQ3NjAxYiAxMDA3NTUKKy0tLSBhL3B5dGhvbi9s aWIvVmFyaWFibGVzLnB5CisrKysgYi9weXRob24vbGliL1ZhcmlhYmxlcy5weQorQEAgLTUxLDcg KzUxLDcgQEAKKyAgICAgICAgIHdpbmRvd3NfYWRkX3NpemUgPSAwCisgICAgICAgICB3aW5kb3dz X2FkZF9wbGF5b25tYWMgPSAwCisgICAgIGVsc2U6CistICAgICAgICB3aW5kb3dzX2FkZF9zaXpl ID0gZHBpRmV0Y2hlcigpLmZldGNoX2V4dHJhX3BpeGVsKCkKKysgICAgICAgIHdpbmRvd3NfYWRk X3NpemUgPSBkcGlGZXRjaGVyKCkuZmV0Y2hfZXh0cmFfcGl4ZWwoKSs2MAorICAgICAgICAgd2lu ZG93c19hZGRfcGxheW9ubWFjID0gMAorIAorICAgICB3aWRnZXRfYm9yZGVycyA9IHd4LlJBSVNF RF9CT1JERVIKKworRnJvbSAwMmJlYWIwNWQ0MjU1ODAyYzI2ZGIyMGExODc4NzM0OWU5YjE1YmJj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogR2lsbGVzIDxnaWxsZXMud2liZXJAZ21h aWwuY29tPgorRGF0ZTogU2F0LCAzMCBNYXkgMjAyMCAxNToxNzozMyArMDIwMAorU3ViamVjdDog W1BBVENIIDA1LzM3XSBTb2x2aW5nIHNtYWxsIGJ1Z3MKKworLS0tCisgcHl0aG9uL2NvbmZpZ3Vy ZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5weSB8IDIgKysKKyBweXRob24vaW5zdGFs bC9JbnN0YWxsV2luZG93LnB5ICAgICAgICAgICAgICAgICAgIHwgMiArLQorIDIgZmlsZXMgY2hh bmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9weXRo b24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29rLnB5IGIvcHl0aG9uL2Nv bmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5weQoraW5kZXggOTczZDliYmQz Li4yOTY0NDNlNjYgMTAwNjQ0CistLS0gYS9weXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3Vy ZVdpbmRvd05vdGVib29rLnB5CisrKysgYi9weXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3Vy ZVdpbmRvd05vdGVib29rLnB5CitAQCAtNDY3LDYgKzQ2Nyw4IEBAIGRlZiBtaXNjX2J1dHRvbihz ZWxmLCBldmVudCk6CisgICAgICAgICAgICAgc2VsZi5GaWxlRGlhbG9nLlNob3dNb2RhbCgpCisg ICAgICAgICAgICAgaWYgKHNlbGYuRmlsZURpYWxvZy5HZXRQYXRoKCkgIT0gIiIpOgorICAgICAg ICAgICAgICAgICBmaWxlbmFtZSA9IHNlbGYuRmlsZURpYWxvZy5HZXRQYXRoKCkKKysgICAgICAg ICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKKysgICAgICAgICAgICAg ICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1l KGZpbGVuYW1lKQorICAgICAgICAgICAgICAgICBpZiAoc2VsZi5zX2lzUHJlZml4ID09IFRydWUp OgorICAgICAgICAgICAgICAgICAgICAgc3VicHJvY2Vzcy5Qb3BlbihbImJhc2giLCBWYXJpYWJs ZXMucGxheW9ubGludXhfZW52ICsgIi9iYXNoL1BPTF9Db21tYW5kIiwgIi0tcHJlZml4IiwKK2Rp ZmYgLS1naXQgYS9weXRob24vaW5zdGFsbC9JbnN0YWxsV2luZG93LnB5IGIvcHl0aG9uL2luc3Rh bGwvSW5zdGFsbFdpbmRvdy5weQoraW5kZXggNWI1ODQ3NzRkLi4yZTQ5ZTRhMTggMTAwNzU1Cist LS0gYS9weXRob24vaW5zdGFsbC9JbnN0YWxsV2luZG93LnB5CisrKysgYi9weXRob24vaW5zdGFs bC9JbnN0YWxsV2luZG93LnB5CitAQCAtMzMzLDcgKzMzMyw3IEBAIGRlZiBjbG9zZWFwcChzZWxm LCBldmVudCk6CisgCisgICAgIGRlZiBtYW51YWwoc2VsZiwgZXZlbnQpOgorICAgICAgICAgc2Vs Zi5saXZlID0gMQorLSAgICAgICAgc2VsZi5pbnN0YWxsYXBwKHNlbGYpCisrICAgICAgICBzZWxm Lmluc3RhbGxhcHAoZXZlbnQpCisgCisgICAgIGRlZiBzaG93U3RhcnMoc2VsZiwgc3RhcnMpOgor ICAgICAgICAgc3RhcldpZHRoID0gMjAKKworRnJvbSBlM2E5MjRmY2Y0ZmYzNDA5ZDMxZjA5NTZk MzgwMmQ2YTY1OTU2YWUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogb3ZhcmkgPDE3 NDY1ODcyK292YXJpQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IEZyaSwgMjQgSnVs IDIwMjAgMTk6NDI6NTAgKzEwMDAKK1N1YmplY3Q6IFtQQVRDSCAwNi8zN10gVXBkYXRlIFJFQURN RS5tZAorCistLS0KKyBSRUFETUUubWQgfCA0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyks IDE1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCitp bmRleCA5YjZjYTMxY2EuLjk3Nzk1YzQyNyAxMDA2NDQKKy0tLSBhL1JFQURNRS5tZAorKysrIGIv UkVBRE1FLm1kCitAQCAtMSwyOCArMSw0NyBAQAorLVBPTC1QT00tNAorLT09PT09PT09PQorKyMg UGxheU9uTGludXggYW5kIFBsYXlPbk1hYyA0IChQT0wtUE9NLTQpCisgCistUGxheU9uTGludXgg NCByZXBvc2l0b3J5CistTm90ZTogUGxheU9uTGludXggNSBpcyBjdXJyZW50bHkgdW5kZXIgZGV2 ZWxvcG1lbnQuIFBsZWFzZSBjbG9uZSBQT0wtUE9NLTUgcmVwb3NpdG9yeSBpZiB5b3Ugd2FudCB0 byBjb250cmlidXRlCisrTm90ZTogW1Bob2VuaWNpcyBQbGF5T25MaW51eCBhbmQgUGxheU9uTWFj IDVdKGh0dHBzOi8vd3d3LnBob2VuaWNpcy5vcmcvKSBpcyBjdXJyZW50bHkgdW5kZXIgZGV2ZWxv cG1lbnQuIFBsZWFzZSBjbG9uZSBbUGhvZW5pY2lzIFBsYXlPbkxpbnV4IGFuZCBQbGF5T25NYWMg NSByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vUGhvZW5pY2lzT3JnL3Bob2VuaWNpcykg aWYgeW91IHdhbnQgdG8gY29udHJpYnV0ZS4KKyAKKy1XaGF0IGlzIFBsYXlPbkxpbnV4PworLT09 PT09PT09PT09PT09PT09PT09PQorK1BsYXlPbkxpbnV4IGFuZCBQbGF5T25NYWMgNCBhbGxvd3Mg eW91IHRvIGluc3RhbGwgYW5kIHVzZSBub24tbmF0aXZlIGFwcGxpY2F0aW9ucyBvbiB5b3VyIGZh dm9yaXRlIG9wZXJhdGluZyBzeXN0ZW0uCisrCisrU3VwcG9ydGVkIG9wZXJhdGluZyBzeXN0ZW1z OgorKworKyogTGludXgKKysqIE1hYyBPU1gKKysKKytTdXBwb3J0ZWQgZW5naW5lczoKKysKKysq IFtXaW5lXShodHRwczovL3d3dy53aW5laHEub3JnLykKKysKKysKKysjIFdoYXQgaXMgUGxheU9u TGludXg/CisgCisgUGxheU9uTGludXggaXMgYSBwaWVjZSBvZiBzb2Z0d2FyZSB3aGljaCBhbGxv d3MgeW91IHRvIGVhc2lseSBpbnN0YWxsIGFuZCB1c2UgbnVtZXJvdXMgZ2FtZXMgYW5kIGFwcHMg ZGVzaWduZWQgdG8gcnVuIHdpdGggTWljcm9zb2Z0wq4gV2luZG93c8KuLgorKworIEZldyBnYW1l cyBhcmUgY29tcGF0aWJsZSB3aXRoIEdOVS9MaW51eCBhdCB0aGUgbW9tZW50IGFuZCBpdCBjZXJ0 YWlubHkgaXMgYSBmYWN0b3IgcHJldmVudGluZyB0aGUgbWlncmF0aW9uIHRvIHRoaXMgc3lzdGVt LiBQbGF5T25MaW51eCBicmluZ3MgYSBjb3N0LWZyZWUsIGFjY2Vzc2libGUgYW5kIGVmZmljaWVu dCBzb2x1dGlvbiB0byB0aGlzIHByb2JsZW0uCisgCisgCistV2hhdCBhcmUgUGxheU9uTGludXgn cyBmZWF0dXJlcz8KKy09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyMgV2hhdCBh cmUgUGxheU9uTGludXgncyBmZWF0dXJlcz8KKyAKKyBIZXJlIGlzIGEgbm9uLWV4aGF1c3RpdmUg bGlzdCBvZiB0aGUgaW50ZXJlc3RpbmcgcG9pbnRzIHRvIGtub3c6CisrKiBZb3UgZG9uJ3QgaGF2 ZSB0byBvd24gYSBXaW5kb3dzIGxpY2Vuc2UgdG8gdXNlIFBsYXlPbkxpbnV4LgorKyogUGxheU9u TGludXggaXMgYmFzZWQgb24gW1dpbmVdKGh0dHBzOi8vd3d3LndpbmVocS5vcmcvKSwgYW5kIHNv IHByb2ZpdHMgZnJvbSBhbGwgaXRzIGZlYXR1cmVzIHlldCBpdCBrZWVwcyB0aGUgdXNlciBmcm9t IGhhdmluZyB0byBkZWFsIHdpdGggaXRzIGNvbXBsZXhpdHkuCisrKiBQbGF5T25MaW51eCBpcyBm cmVlIHNvZnR3YXJlLgorKyogUGxheU9uTGludXggdXNlcyBbQmFzaF0oaHR0cHM6Ly9lbi53aWtp cGVkaWEub3JnL3dpa2kvQmFzaF8lMjhVbml4X3NoZWxsJTI5KSBhbmQgW1B5dGhvbl0oaHR0cHM6 Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHl0aG9uXyhwcm9ncmFtbWluZ19sYW5ndWFnZSkpLgor IAorLVlvdSBkb24ndCBoYXZlIHRvIG93biBhIFdpbmRvd3MgbGljZW5zZSB0byB1c2UgUGxheU9u TGludXguCistUGxheU9uTGludXggaXMgYmFzZWQgb24gV2luZSwgYW5kIHNvIHByb2ZpdHMgZnJv bSBhbGwgaXRzIGZlYXR1cmVzIHlldCBpdCBrZWVwcyB0aGUgdXNlciBmcm9tIGhhdmluZyB0byBk ZWFsIHdpdGggaXRzIGNvbXBsZXhpdHkuCistUGxheU9uTGludXggaXMgZnJlZSBzb2Z0d2FyZS4K Ky1QbGF5T25MaW51eCB1c2VzIEJhc2ggYW5kIFB5dGhvbi4KKyBOZXZlcnRoZWxlc3MsIFBsYXlP bkxpbnV4IGhhcyBzb21lIGJ1Z3MsIGFzIGV2ZXJ5IHBpZWNlIG9mIHNvZnR3YXJlOgorLQorLU9j Y2FzaW9uYWwgcGVyZm9ybWFuY2UgZGVjcmVhc2UgKGltYWdlIG1heSBiZSBsZXNzIGZsdWlkIGFu ZCBncmFwaGljcyBsZXNzIGRldGFpbGVkKS4KKy1Ob3QgYWxsIGdhbWVzIGFyZSBzdXBwb3J0ZWQu IE5ldmVydGhlbGVzcywgeW91IGNhbiB1c2Ugb3VyIG1hbnVhbCBpbnN0YWxsYXRpb24gbW9kdWxl LgorKyogT2NjYXNpb25hbCBwZXJmb3JtYW5jZSBkZWNyZWFzZSAoaW1hZ2UgbWF5IGJlIGxlc3Mg Zmx1aWQgYW5kIGdyYXBoaWNzIGxlc3MgZGV0YWlsZWQpLgorKyogTm90IGFsbCBnYW1lcyBhcmUg c3VwcG9ydGVkLiBOZXZlcnRoZWxlc3MsIHlvdSBjYW4gdXNlIG91ciBtYW51YWwgaW5zdGFsbGF0 aW9uIG1vZHVsZS4KKyAKKyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgdmlzaXQgaHR0cDovL3d3dy5w bGF5b25saW51eC5jb20KKysKKysKKysjIyBUcmFuc2xhdGUKKytQbGF5T25MaW51eC9QbGF5T25N YWMgNCBpcyBsb2NhbGl6ZWQgdXNpbmcgTGF1bmNocGFkOiBodHRwczovL3RyYW5zbGF0aW9ucy5s YXVuY2hwYWQubmV0L3BsYXlvbmxpbnV4CisrSWYgeW91ciBsYW5ndWFnZSBpcyBub3QgbGlzdGVk LCBwbGVhc2UgY3JlYXRlIGFuIFtpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL1BsYXlPbkxpbnV4 L1BPTC1QT00tNC9pc3N1ZXMpLgorKworKworKyMjIENvbW11bml0eQorKyogSXNzdWVzIG9yIGlk ZWFzOiBodHRwczovL2dpdGh1Yi5jb20vUGhvZW5pY2lzT3JnL3Bob2VuaWNpcy9pc3N1ZXMKKysq IEZvcnVtcyA6IGh0dHA6Ly93d3cucGxheW9ubGludXguY29tL2VuL2ZvcnVtcy5odG1sCisrKiBT bGFjayA6IGh0dHBzOi8vam9pbi5zbGFjay5jb20vcGhvZW5pY2lzLW9yZy9zaGFyZWRfaW52aXRl L01Ua3pNVE13TWpNM01qY3hMVEUwT1RZMU1UUXpOemt0WTJJek9URTJObUUzTkEKKworRnJvbSAy ZmIxM2UzMjg4NjEyNjRlZTNhNGY2ZDg5NzliYjFlZTAxOGNlYTc5IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQorRnJvbTogb3ZhcmkgPDE3NDY1ODcyK292YXJpQHVzZXJzLm5vcmVwbHkuZ2l0aHVi LmNvbT4KK0RhdGU6IEZyaSwgMjQgSnVsIDIwMjAgMTk6NDQ6MTYgKzEwMDAKK1N1YmplY3Q6IFtQ QVRDSCAwNy8zN10gVXBkYXRlIFJFQURNRS5tZAorCistLS0KKyBSRUFETUUubWQgfCA0ICsrLS0K KyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCitpbmRleCA5Nzc5NWM0MjcuLmMxZTllZDAz MyAxMDA2NDQKKy0tLSBhL1JFQURNRS5tZAorKysrIGIvUkVBRE1FLm1kCitAQCAtMjEsMTAgKzIx LDEwIEBAIFBsYXlPbkxpbnV4IGlzIGEgcGllY2Ugb2Ygc29mdHdhcmUgd2hpY2ggYWxsb3dzIHlv dSB0byBlYXNpbHkgaW5zdGFsbCBhbmQgdXNlIG51CisgRmV3IGdhbWVzIGFyZSBjb21wYXRpYmxl IHdpdGggR05VL0xpbnV4IGF0IHRoZSBtb21lbnQgYW5kIGl0IGNlcnRhaW5seSBpcyBhIGZhY3Rv ciBwcmV2ZW50aW5nIHRoZSBtaWdyYXRpb24gdG8gdGhpcyBzeXN0ZW0uIFBsYXlPbkxpbnV4IGJy aW5ncyBhIGNvc3QtZnJlZSwgYWNjZXNzaWJsZSBhbmQgZWZmaWNpZW50IHNvbHV0aW9uIHRvIHRo aXMgcHJvYmxlbS4KKyAKKyAKKy0jIFdoYXQgYXJlIFBsYXlPbkxpbnV4J3MgZmVhdHVyZXM/Cisr IyBXaGF0IGFyZSBQbGF5T25MaW51eOKAmXMgZmVhdHVyZXM/CisgCisgSGVyZSBpcyBhIG5vbi1l eGhhdXN0aXZlIGxpc3Qgb2YgdGhlIGludGVyZXN0aW5nIHBvaW50cyB0byBrbm93OgorLSogWW91 IGRvbid0IGhhdmUgdG8gb3duIGEgV2luZG93cyBsaWNlbnNlIHRvIHVzZSBQbGF5T25MaW51eC4K KysqIFlvdSBkb27igJl0IGhhdmUgdG8gb3duIGEgV2luZG93cyBsaWNlbnNlIHRvIHVzZSBQbGF5 T25MaW51eC4KKyAqIFBsYXlPbkxpbnV4IGlzIGJhc2VkIG9uIFtXaW5lXShodHRwczovL3d3dy53 aW5laHEub3JnLyksIGFuZCBzbyBwcm9maXRzIGZyb20gYWxsIGl0cyBmZWF0dXJlcyB5ZXQgaXQg a2VlcHMgdGhlIHVzZXIgZnJvbSBoYXZpbmcgdG8gZGVhbCB3aXRoIGl0cyBjb21wbGV4aXR5Lgor ICogUGxheU9uTGludXggaXMgZnJlZSBzb2Z0d2FyZS4KKyAqIFBsYXlPbkxpbnV4IHVzZXMgW0Jh c2hdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jhc2hfJTI4VW5peF9zaGVsbCUyOSkg YW5kIFtQeXRob25dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1B5dGhvbl8ocHJvZ3Jh bW1pbmdfbGFuZ3VhZ2UpKS4KKworRnJvbSBmNDIyOWFjODMwMTVhNTgzZDBjMGU0NTQ0NWQyOGVl MzMyMzIxMzU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogb3ZhcmkgPDE3NDY1ODcy K292YXJpQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IEZyaSwgMjQgSnVsIDIwMjAg MTk6NDU6MTEgKzEwMDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8zN10gVXBkYXRlIFJFQURNRS5tZAor CistLS0KKyBSRUFETUUubWQgfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9u cygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5t ZAoraW5kZXggYzFlOWVkMDMzLi43NWZiYzVmYWUgMTAwNjQ0CistLS0gYS9SRUFETUUubWQKKysr KyBiL1JFQURNRS5tZAorQEAgLTYsOCArNiw5IEBAIFBsYXlPbkxpbnV4IGFuZCBQbGF5T25NYWMg NCBhbGxvd3MgeW91IHRvIGluc3RhbGwgYW5kIHVzZSBub24tbmF0aXZlIGFwcGxpY2F0aW9uCisg CisgU3VwcG9ydGVkIG9wZXJhdGluZyBzeXN0ZW1zOgorIAorLSogTGludXgKKy0qIE1hYyBPU1gK KysqIEdOVS9MaW51eAorKyogTWFjIE9TIFgKKysqIG1hY09TCisgCisgU3VwcG9ydGVkIGVuZ2lu ZXM6CisgCisKK0Zyb20gNjQ4MGU2OTQxNTRmNGYyNGM0YmYzMWJhYmM3ZTkyNzE1NzRlMDRjYSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IG92YXJpIDwxNzQ2NTg3MitvdmFyaUB1c2Vy cy5ub3JlcGx5LmdpdGh1Yi5jb20+CitEYXRlOiBGcmksIDI0IEp1bCAyMDIwIDE5OjQ5OjMxICsx MDAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMzddIFVwZGF0ZSBSRUFETUUubWQKKworLS0tCisgUkVB RE1FLm1kIHwgNyArKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBk ZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAoraW5kZXgg NzVmYmM1ZmFlLi4wZDY0YTU5NjIgMTAwNjQ0CistLS0gYS9SRUFETUUubWQKKysrKyBiL1JFQURN RS5tZAorQEAgLTYsOSArNiw4IEBAIFBsYXlPbkxpbnV4IGFuZCBQbGF5T25NYWMgNCBhbGxvd3Mg eW91IHRvIGluc3RhbGwgYW5kIHVzZSBub24tbmF0aXZlIGFwcGxpY2F0aW9uCisgCisgU3VwcG9y dGVkIG9wZXJhdGluZyBzeXN0ZW1zOgorIAorLSogR05VL0xpbnV4CistKiBNYWMgT1MgWAorLSog bWFjT1MKKysqIFtHTlUvTGludXhdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpbnV4 KQorKyogW21hY09TXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcHBsZV9NYWNpbnRv c2hfT1NfWCkKKyAKKyBTdXBwb3J0ZWQgZW5naW5lczoKKyAKK0BAIC0yNSw3ICsyNCw3IEBAIEZl dyBnYW1lcyBhcmUgY29tcGF0aWJsZSB3aXRoIEdOVS9MaW51eCBhdCB0aGUgbW9tZW50IGFuZCBp dCBjZXJ0YWlubHkgaXMgYSBmYWN0CisgIyBXaGF0IGFyZSBQbGF5T25MaW51eOKAmXMgZmVhdHVy ZXM/CisgCisgSGVyZSBpcyBhIG5vbi1leGhhdXN0aXZlIGxpc3Qgb2YgdGhlIGludGVyZXN0aW5n IHBvaW50cyB0byBrbm93OgorLSogWW91IGRvbuKAmXQgaGF2ZSB0byBvd24gYSBXaW5kb3dzIGxp Y2Vuc2UgdG8gdXNlIFBsYXlPbkxpbnV4LgorKyogWW91IGRvbuKAmXQgaGF2ZSB0byBvd24gYSBb TWljcm9zb2Z0IFdpbmRvd3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pY3Jvc29m dF9XaW5kb3dzKSBsaWNlbnNlIHRvIHVzZSBQbGF5T25MaW51eC4KKyAqIFBsYXlPbkxpbnV4IGlz IGJhc2VkIG9uIFtXaW5lXShodHRwczovL3d3dy53aW5laHEub3JnLyksIGFuZCBzbyBwcm9maXRz IGZyb20gYWxsIGl0cyBmZWF0dXJlcyB5ZXQgaXQga2VlcHMgdGhlIHVzZXIgZnJvbSBoYXZpbmcg dG8gZGVhbCB3aXRoIGl0cyBjb21wbGV4aXR5LgorICogUGxheU9uTGludXggaXMgZnJlZSBzb2Z0 d2FyZS4KKyAqIFBsYXlPbkxpbnV4IHVzZXMgW0Jhc2hdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9y Zy93aWtpL0Jhc2hfJTI4VW5peF9zaGVsbCUyOSkgYW5kIFtQeXRob25dKGh0dHBzOi8vZW4ud2lr aXBlZGlhLm9yZy93aWtpL1B5dGhvbl8ocHJvZ3JhbW1pbmdfbGFuZ3VhZ2UpKS4KKworRnJvbSBj NDY2OTMwNWYyNTZjNGMxNmJjNjhhMzUzMjM5Y2JjOGM1ZGFlN2JhIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQorRnJvbTogb3ZhcmkgPDE3NDY1ODcyK292YXJpQHVzZXJzLm5vcmVwbHkuZ2l0aHVi LmNvbT4KK0RhdGU6IEZyaSwgMjQgSnVsIDIwMjAgMTk6NTA6MzEgKzEwMDAKK1N1YmplY3Q6IFtQ QVRDSCAxMC8zN10gVXBkYXRlIFJFQURNRS5tZAorCistLS0KKyBSRUFETUUubWQgfCAyICstCisg MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1n aXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKK2luZGV4IDBkNjRhNTk2Mi4uNTdmYWRmYmI2IDEw MDY0NAorLS0tIGEvUkVBRE1FLm1kCisrKysgYi9SRUFETUUubWQKK0BAIC0yNiw3ICsyNiw3IEBA IEZldyBnYW1lcyBhcmUgY29tcGF0aWJsZSB3aXRoIEdOVS9MaW51eCBhdCB0aGUgbW9tZW50IGFu ZCBpdCBjZXJ0YWlubHkgaXMgYSBmYWN0CisgSGVyZSBpcyBhIG5vbi1leGhhdXN0aXZlIGxpc3Qg b2YgdGhlIGludGVyZXN0aW5nIHBvaW50cyB0byBrbm93OgorICogWW91IGRvbuKAmXQgaGF2ZSB0 byBvd24gYSBbTWljcm9zb2Z0IFdpbmRvd3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp L01pY3Jvc29mdF9XaW5kb3dzKSBsaWNlbnNlIHRvIHVzZSBQbGF5T25MaW51eC4KKyAqIFBsYXlP bkxpbnV4IGlzIGJhc2VkIG9uIFtXaW5lXShodHRwczovL3d3dy53aW5laHEub3JnLyksIGFuZCBz byBwcm9maXRzIGZyb20gYWxsIGl0cyBmZWF0dXJlcyB5ZXQgaXQga2VlcHMgdGhlIHVzZXIgZnJv bSBoYXZpbmcgdG8gZGVhbCB3aXRoIGl0cyBjb21wbGV4aXR5LgorLSogUGxheU9uTGludXggaXMg ZnJlZSBzb2Z0d2FyZS4KKysqIFBsYXlPbkxpbnV4IGlzIFtmcmVlIHNvZnR3YXJlXShodHRwczov L2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmVlX3NvZnR3YXJlKS4KKyAqIFBsYXlPbkxpbnV4IHVz ZXMgW0Jhc2hdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jhc2hfJTI4VW5peF9zaGVs bCUyOSkgYW5kIFtQeXRob25dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1B5dGhvbl8o cHJvZ3JhbW1pbmdfbGFuZ3VhZ2UpKS4KKyAKKyBOZXZlcnRoZWxlc3MsIFBsYXlPbkxpbnV4IGhh cyBzb21lIGJ1Z3MsIGFzIGV2ZXJ5IHBpZWNlIG9mIHNvZnR3YXJlOgorCitGcm9tIGE2Y2MyM2Q0 MzM3NWZjYTBlMjhlOTAwYTExMGQxOTViZTI1MWVlMjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBvdmFyaSA8MTc0NjU4NzIrb3ZhcmlAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgor RGF0ZTogRnJpLCAyNCBKdWwgMjAyMCAyMDoxMjozNiArMTAwMAorU3ViamVjdDogW1BBVENIIDEx LzM3XSBVcGRhdGUgUkVBRE1FLm1kCisKKy0tLQorIFJFQURNRS5tZCB8IDIgKy0KKyAxIGZpbGUg Y2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL1JF QURNRS5tZCBiL1JFQURNRS5tZAoraW5kZXggNTdmYWRmYmI2Li4wZmU3OWYzZmEgMTAwNjQ0Cist LS0gYS9SRUFETUUubWQKKysrKyBiL1JFQURNRS5tZAorQEAgLTcsNyArNyw3IEBAIFBsYXlPbkxp bnV4IGFuZCBQbGF5T25NYWMgNCBhbGxvd3MgeW91IHRvIGluc3RhbGwgYW5kIHVzZSBub24tbmF0 aXZlIGFwcGxpY2F0aW9uCisgU3VwcG9ydGVkIG9wZXJhdGluZyBzeXN0ZW1zOgorIAorICogW0dO VS9MaW51eF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGludXgpCistKiBbbWFjT1Nd KGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FwcGxlX01hY2ludG9zaF9PU19YKQorKyog W21hY09TXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNPUykKKyAKKyBTdXBwb3J0 ZWQgZW5naW5lczoKKyAKKworRnJvbSAwOGU4N2VkMGE3OGIwYzc3NDM5MzVjZDM5YjM1NWRiMzAz MTU3MzU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogb3ZhcmkgPDE3NDY1ODcyK292 YXJpQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IFNhdCwgMjUgSnVsIDIwMjAgMTg6 MzE6MTAgKzEwMDAKK1N1YmplY3Q6IFtQQVRDSCAxMi8zN10gVXBkYXRlIFJFQURNRS5tZAorCist LS0KKyBSRUFETUUubWQgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9u cygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5t ZAoraW5kZXggMGZlNzlmM2ZhLi4zZDAwZTY1YzEgMTAwNjQ0CistLS0gYS9SRUFETUUubWQKKysr KyBiL1JFQURNRS5tZAorQEAgLTYsOCArNiw4IEBAIFBsYXlPbkxpbnV4IGFuZCBQbGF5T25NYWMg NCBhbGxvd3MgeW91IHRvIGluc3RhbGwgYW5kIHVzZSBub24tbmF0aXZlIGFwcGxpY2F0aW9uCisg CisgU3VwcG9ydGVkIG9wZXJhdGluZyBzeXN0ZW1zOgorIAorLSogW0dOVS9MaW51eF0oaHR0cHM6 Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGludXgpCistKiBbbWFjT1NdKGh0dHBzOi8vZW4ud2lr aXBlZGlhLm9yZy93aWtpL01hY09TKQorKyogR05VL0xpbnV4CisrKiBtYWNPUworIAorIFN1cHBv cnRlZCBlbmdpbmVzOgorIAorQEAgLTI0LDEwICsyNCwxMCBAQCBGZXcgZ2FtZXMgYXJlIGNvbXBh dGlibGUgd2l0aCBHTlUvTGludXggYXQgdGhlIG1vbWVudCBhbmQgaXQgY2VydGFpbmx5IGlzIGEg ZmFjdAorICMgV2hhdCBhcmUgUGxheU9uTGludXjigJlzIGZlYXR1cmVzPworIAorIEhlcmUgaXMg YSBub24tZXhoYXVzdGl2ZSBsaXN0IG9mIHRoZSBpbnRlcmVzdGluZyBwb2ludHMgdG8ga25vdzoK Ky0qIFlvdSBkb27igJl0IGhhdmUgdG8gb3duIGEgW01pY3Jvc29mdCBXaW5kb3dzXShodHRwczov L2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWNyb3NvZnRfV2luZG93cykgbGljZW5zZSB0byB1c2Ug UGxheU9uTGludXguCisrKiBZb3UgZG9u4oCZdCBoYXZlIHRvIG93biBhIE1pY3Jvc29mdCBXaW5k b3dzIGxpY2Vuc2UgdG8gdXNlIFBsYXlPbkxpbnV4LgorICogUGxheU9uTGludXggaXMgYmFzZWQg b24gW1dpbmVdKGh0dHBzOi8vd3d3LndpbmVocS5vcmcvKSwgYW5kIHNvIHByb2ZpdHMgZnJvbSBh bGwgaXRzIGZlYXR1cmVzIHlldCBpdCBrZWVwcyB0aGUgdXNlciBmcm9tIGhhdmluZyB0byBkZWFs IHdpdGggaXRzIGNvbXBsZXhpdHkuCisgKiBQbGF5T25MaW51eCBpcyBbZnJlZSBzb2Z0d2FyZV0o aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJlZV9zb2Z0d2FyZSkuCistKiBQbGF5T25M aW51eCB1c2VzIFtCYXNoXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNoXyUyOFVu aXhfc2hlbGwlMjkpIGFuZCBbUHl0aG9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Q eXRob25fKHByb2dyYW1taW5nX2xhbmd1YWdlKSkuCisrKiBQbGF5T25MaW51eCB1c2VzIEJhc2gg YW5kIFB5dGhvbi4KKyAKKyBOZXZlcnRoZWxlc3MsIFBsYXlPbkxpbnV4IGhhcyBzb21lIGJ1Z3Ms IGFzIGV2ZXJ5IHBpZWNlIG9mIHNvZnR3YXJlOgorICogT2NjYXNpb25hbCBwZXJmb3JtYW5jZSBk ZWNyZWFzZSAoaW1hZ2UgbWF5IGJlIGxlc3MgZmx1aWQgYW5kIGdyYXBoaWNzIGxlc3MgZGV0YWls ZWQpLgorCitGcm9tIDJiZjllZDJkMzIxYTI2YjQ4ZGU4M2ExMzA2NGY3YjlmMGRiMGRjZDcgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiByYXlkZXJ1YSA8cmF5ZGVyLnVhQGdtYWlsLmNv bT4KK0RhdGU6IE1vbiwgNSBPY3QgMjAyMCAxNzoxOTo0NyArMDMwMAorU3ViamVjdDogW1BBVENI IDEzLzM3XSBmaXggc3BsaXQgdmVyc2lvbiB0byBmaXJzdCAzIGVsZW1lbnRzCisKK1ZhbHVlRXJy b3I6IGludmFsaWQgbGl0ZXJhbCBmb3IgaW50KCkgd2l0aCBiYXNlIDEwOiAncG9zdDInCisKK1Zl cnNpb25zIGNhbiBjb250YWluIG5vdCBvbmx5IGRpZ2l0cyAoZm9yIGV4YW1wbGUgd3ggcmVsZWFz ZXM6IDQuMC43LCA0LjAuNy5wb3N0MSwgNC4wLjcucG9zdDIsIDQuMS4wKQorLS0tCisgcHl0aG9u L2xpYi9wbGF5b25saW51eC5weSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9weXRob24vbGliL3BsYXlvbmxp bnV4LnB5IGIvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weQoraW5kZXggODI3ZGI5MjAyLi4zZTg3 ZDkwYWEgMTAwNzU1CistLS0gYS9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5CisrKysgYi9weXRo b24vbGliL3BsYXlvbmxpbnV4LnB5CitAQCAtMjc4LDExICsyNzgsMTEgQEAgZGVmIFZlcnNpb25M b3dlcih2ZXJzaW9uMSwgdmVyc2lvbjIpOgorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBy ZXR1cm4gRmFsc2UKKyAKKy0gICAgdmVyc2lvbjEgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGlu IHZlcnNpb24xWzBdLnNwbGl0KCIuIikgXQorKyAgICB2ZXJzaW9uMSA9IFsgaW50KGRpZ2l0KSBm b3IgZGlnaXQgaW4gdmVyc2lvbjFbMF0uc3BsaXQoIi4iKVs6M10gXQorICAgICB3aGlsZSBsZW4o dmVyc2lvbjEpIDwgMzoKKyAgICAgICAgIHZlcnNpb24xLmFwcGVuZCgwKQorIAorLSAgICB2ZXJz aW9uMiA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjJbMF0uc3BsaXQoIi4iKSBd CisrICAgIHZlcnNpb24yID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMlswXS5z cGxpdCgiLiIpWzozXSBdCisgICAgIHdoaWxlIGxlbih2ZXJzaW9uMikgPCAzOgorICAgICAgICAg dmVyc2lvbjIuYXBwZW5kKDApCisgCisKK0Zyb20gNmE5YmZhYTFkYzRmNTM3ZjJlZTAzYjlhYzk5 YWRmNmZlOGYyZjA0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocmlzQjg1IDxr cnp5c3p0b2YuYmxhY2hvd2ljekBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDIwIE9jdCAyMDIwIDE4 OjEwOjM0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMTQvMzddIFBvbGlzaCB0cmFuc2xhdGlvbnMK KworLS0tCisgbGFuZy9wby9wbC5wbyB8IDEwOSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2NyBpbnNlcnRpb25zKCsp LCA0MiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xhbmcvcG8vcGwucG8gYi9sYW5nL3Bv L3BsLnBvCitpbmRleCBhZTY5ZjQ5N2UuLmYwNDdiNWI0NCAxMDA2NDQKKy0tLSBhL2xhbmcvcG8v cGwucG8KKysrKyBiL2xhbmcvcG8vcGwucG8KK0BAIC0xMSwyMiArMTEsMjIgQEAgbXNnc3RyICIi CisgIlByb2plY3QtSWQtVmVyc2lvbjogcG9sXG4iCisgIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBU aW5vdVxuIgorICJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNS0wOC0zMSAxOTowMCswMjAwXG4iCist IlBPLVJldmlzaW9uLURhdGU6IDIwMTQtMDQtMjMgMTM6MzUrMDAwMFxuIgorKyJQTy1SZXZpc2lv bi1EYXRlOiAyMDIwLTEwLTIwIDE4OjA5KzAyMDBcbiIKKyAiTGFzdC1UcmFuc2xhdG9yOiBBZGFt IE1hxIdrb3dpYWsgPFVua25vd24+XG4iCisgIkxhbmd1YWdlLVRlYW06IHBsX1BMLlVURi04IDxM TEBsaS5vcmc+XG4iCisgIk1JTUUtVmVyc2lvbjogMS4wXG4iCisgIkNvbnRlbnQtVHlwZTogdGV4 dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgorICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4 Yml0XG4iCisgIlgtTGF1bmNocGFkLUV4cG9ydC1EYXRlOiAyMDE1LTA5LTAxIDA1OjEyKzAwMDBc biIKKy0iWC1HZW5lcmF0b3I6IExhdW5jaHBhZCAoYnVpbGQgMTc2OTApXG4iCisrIlgtR2VuZXJh dG9yOiBQb2VkaXQgMi4zXG4iCisrIkxhbmd1YWdlOiBwbFxuIgorIAorICM6IENhcHR1cmUgcGx1 Z2luOjIsIERldG91ciBwbHVnaW46NAorIG1zZ2lkICJXaGljaCBhcHBsaWNhdGlvbiBkbyB5b3Ug d2FudCB0byBhcHBseSB0aGUgbW9kaWZpY2F0aW9uIHRvPyIKKyBtc2dzdHIgIkRvIGpha2llaiBh cGxpa2FjamkgY2hjZXN6IHd5a29uYcSHIG1vZHlmaWthY2plPyIKKyAKKyAjOiBDYXB0dXJlIHBs dWdpbjozCistbXNnaWQgIiIKKy0iVGhpcyBwbHVnaW4gd2lsIGFsbG93IHlvdSB0byBjYXB0dXJl IHlvdSBhcHBsaWNhdGlvbnMgdW5kZXIgUGxheU9uTGludXgiCisrbXNnaWQgIlRoaXMgcGx1Z2lu IHdpbCBhbGxvdyB5b3UgdG8gY2FwdHVyZSB5b3UgYXBwbGljYXRpb25zIHVuZGVyIFBsYXlPbkxp bnV4IgorIG1zZ3N0ciAiV3R5Y3prYSB1bW/FvGxpd2lhIHByemVjaHd5dHl3YW5pZSBvYnJhenUg eiBhcGxpa2FjamkgcG9kIFBsYXlPbkxpbnV4IgorIAorICM6IENhcHR1cmUgcGx1Z2luOjQKK0BA IC01Niw4ICs1Niw4IEBAIG1zZ2lkICIiCisgInN0YXJ0IGF1dG9tYXRpY2FsbHkgYWZ0ZXIgNSBz ZWNvbmRzLlxcbk9ubHkgdmlkZW8gd2lsbCBiZSBjYXB0dXJlZC4iCisgbXNnc3RyICIiCisgIlBy b3N6xJkgd2Npc27EhcSHIERhbGVqLCBuYXN0xJlwbmllIGtsaWtuxIXEh1xcbncgb2tubyBwcm9n cmFtdSwga3TDs3JlIGNoY2VzeiAiCistInByemVjaHd5Y2nEhy5cXG5OYWdyeXdhbmllIHJvenBv Y3puaWUgc2nEmSBhdXRvbWF0eWN6bmllIHBvIDUgc2VrdW5kYWNoLlxcIgorLSJuTmFncmFueSB6 b3N0YW5pZSB3ecWCxIVjem5pZSBvYnJhei4iCisrInByemVjaHd5Y2nEhy5cXG5OYWdyeXdhbmll IHJvenBvY3puaWUgc2nEmSBhdXRvbWF0eWN6bmllIHBvIDUgc2VrdW5kYWNoLiIKKysiXFxuTmFn cmFueSB6b3N0YW5pZSB3ecWCxIVjem5pZSBvYnJhei4iCisgCisgIzogQ2FwdHVyZSBwbHVnaW46 MTAKKyBtc2dpZCAiQ2FwdHVyZSB3aWxsIGJlZ2luLi4uIgorQEAgLTMwOSw3ICszMDksNyBAQCBt c2dzdHIgIkRva8WCYWRueSBvcGlzIGplc3Qgd3ltYWdhbnkuIgorICM6IGJhc2gvYnVnX3JlcG9y dDoxMDEKKyAjLCBzaC1mb3JtYXQKKyBtc2dpZCAiVGhhbmsgeW91ICFcXG5cXG5Zb3VyIHJlcG9y dCBoYXMgYmVlbiBzZW50LiIKKy1tc2dzdHIgIiIKKyttc2dzdHIgIkR6acSZa3VqZW15ICFcXG5c XG5Ud29qZSB6Z8WCb3N6ZW5pZSB6b3N0YcWCbyB3eXPFgmFuZS4iCisgCisgIzogYmFzaC9jcmVh dGVfcHJlZml4OjI2CisgIywgc2gtZm9ybWF0CitAQCAtNDU4LDYgKzQ1OCw5IEBAIG1zZ2lkICIi CisgImFsbCB0aGUgdG9vbHNcXG5cXG5XYXJuaW5nOiBXZSBhcmUgdW5hYmxlIHRvIGd1YXJhbnRl ZSB0aGF0IHlvdXIgYXBwbGljYXRpb24gIgorICJ3aWxsIHdvcmsgcGVyZmVjdGx5LiIKKyBtc2dz dHIgIiIKKysiV2l0YW15IHcga3JlYXRvcnplIGluc3RhbGFjamkgcsSZY3puZWogJEFQUExJQ0FU SU9OX1RJVExFLlxcblxcbktyZWF0b3IgdGVuICIKKysicG96d29saSBDaSB6YWluc3RhbG93YcSH IGthxbxkeSBwcm9ncmFtIHcgJEFQUExJQ0FUSU9OX1RJVExFXFxuXFxuVXdhZ2E6IE5pZSAiCisr Im1vxbxlbXkgemFnd2FyYW50b3dhxIcsIMW8ZSB0d29qYSBhcGxpa2FjamEgYsSZZHppZSBkemlh xYJhxIcgcG9wcmF3bmllLiIKKyAKKyAjOiBiYXNoL21hbnVhbF9pbnN0YWxsOjEwMgorICMsIHNo LWZvcm1hdAorQEAgLTcwNyw4ICs3MTAsOCBAQCBtc2dpZCAiIgorICJ0b29sIE9OTFkgaWYgeW91 IENELVJPTSBpcyBhIGh5YnJpZGUgQ0QtUk9NIChDb21wYXRpYmxlIHdpdGggV2luZG93cyBhbmQg IgorICJNYWNPUyksIGFuZCBpZiB5b3UgYXJlIG5vdCBhYmxlIHRvIHNlZSB0aGUgV2luZG93cyBw YXJ0IgorIG1zZ3N0ciAiIgorLSJEemnEmWtpIHRlbXUgbmFyesSZZHppIHR3w7NqIE1hYyBixJlk emllIHcgc3RhbmllIHByemVjenl0YcSHIGN6xJnFm8SHIENELVJPTXVcXCIKKy0ibnByemV6bmFj em9uZWdvIGRsYSBrb21wdXRlcsOzdyBQQy5cXG5cXG5Vxbx5aiB0ZWdvIG5hcnrEmWR6aWEgVFlM S08gamXFvGVsaSAiCisrIkR6acSZa2kgdGVtdSBuYXJ6xJlkemkgdHfDs2ogTWFjIGLEmWR6aWUg dyBzdGFuaWUgcHJ6ZWN6eXRhxIcgY3rEmcWbxIcgQ0QtUk9NdSIKKysiXFxucHJ6ZXpuYWN6b25l Z28gZGxhIGtvbXB1dGVyw7N3IFBDLlxcblxcblXFvHlqIHRlZ28gbmFyesSZZHppYSBUWUxLTyBq ZcW8ZWxpICIKKyAicG9zaWFkYXN6IGh5YnJ5ZG93eSBDRC1ST00gKGtvbXBhdHliaWxueSB6IFdp bmRvd3MgaSBNYWNPUylcXG5pIHR5bGtvIHd0ZWR5ICIKKyAiZ2R5IG5pZSBqZXN0ZcWbIHcgc3Rh bmllIHpvYmFjennEhyBjesSZxZtjaSBkbGEgV2luZG93c2EuIgorIAorQEAgLTc2MiwxNiArNzY1 LDE4IEBAIG1zZ2lkICIiCisgIiRQQUNLQUdFIGNyYXNoZWQuXFxuU2VsZWN0IGl0cyBzaG9ydGN1 dCBhbmQgY2xpY2sgb24gXCJEZWJ1Z1wiIGluIHRoZSBzaWRlICIKKyAicGFuZWwgdG8gZ2V0IG1v cmUgZGV0YWlscy4iCisgbXNnc3RyICIiCisrIiRQQUNLQUdFIHVsZWfFgiBhd2FyaWkuXFxuWmF6 bmFjeiBqZWdvIHNrcsOzdCBpIGtsaWtuaWogXCJEZWJ1Z3VqXCIgdyBwYW5lbHUgIgorKyJib2N6 bnltIGFieSBwb3puYcSHIHN6Y3plZ8OzxYJ5LiIKKyAKKyAjOiBiYXNoL3J1bl9hcHA6MTIwCisg Iywgc2gtZm9ybWF0CisgbXNnaWQgIiRQQUNLQUdFIGNyYXNoZWQuIgorLW1zZ3N0ciAiJFBBQ0tB R0UgemF3aWVzacWCIHNpxJkuIgorK21zZ3N0ciAiJFBBQ0tBR0UgdWxlZ8WCIGF3YXJpaS4iCisg CisgIzogYmFzaC9ydW5fZXhlOjMzCisgIywgc2gtZm9ybWF0CisgbXNnaWQgIldhaXRpbmcgWFF1 YXJ0eiB0byBiZSBpbnN0YWxsZWQiCistbXNnc3RyICIiCisrbXNnc3RyICJPY3pla2l3YW5pZSBu YSBpbnN0YWxhY2rEmSBYUXVhcnR6IgorIAorICM6IGJhc2gvcnVuX2V4ZTo3MAorICMsIHNoLWZv cm1hdAorQEAgLTgxNSwxMiArODIwLDEyIEBAIG1zZ3N0ciAiSW5zdGFsYWNqYSB6YWtvxYRjem9u YSIKKyAjOiBiYXNoL3N0YXJ0dXBfYWZ0ZXJfc2VydmVyOjM4CisgIywgc2gtZm9ybWF0CisgbXNn aWQgIlBsYXlPbk1hYyBuZWVkcyB0byBpbnN0YWxsIFhRdWFydHogdG8gd29yayBwcm9wZXJseS4i CistbXNnc3RyICIiCisrbXNnc3RyICJQbGF5T25NYWMgd3ltYWdhIHphaW5zdGFsb3dhbmlhIFhR dWFydHogZG8gcG9wcmF3bmVnbyBkemlhxYJhbmlhLiIKKyAKKyAjOiBiYXNoL3N0YXJ0dXBfYWZ0 ZXJfc2VydmVyOjM5CisgIywgc2gtZm9ybWF0CisgbXNnaWQgIlBsYXlPbk1hYyB3aWxsIGhlbHAg eW91IHRvIHNpbXBsaWZ5IHRoaXMgc3RlcCIKKy1tc2dzdHIgIiIKKyttc2dzdHIgIlBsYXlPbk1h YyBwb21vxbxlIGNpIHVwcm/Fm2NpxIcgdGVuIGtyb2siCisgCisgIzogYmFzaC9zdGFydHVwX2Fm dGVyX3NlcnZlcjo0MgorICMsIHNoLWZvcm1hdAorQEAgLTg2MSw2ICs4NjYsOCBAQCBtc2dzdHIg IlhRdWFydHogem9zdGHFgiB6YWluc3RhbG93YW55LiIKKyAjLCBzaC1mb3JtYXQKKyBtc2dpZCAi VW5hYmxlIHRvIGluc3RhbGwgWFF1YXJ0eiEgWW91IG11c3QgaW5zdGFsbCBpdCB0byB1c2Ugd2lu ZSBwcm9wZXJseS4iCisgbXNnc3RyICIiCisrIk5pZSB1ZGHFgm8gc2nEmSB6YWluc3RhbG93YcSH IFhRdWFydHohIEplc3Qgb24gd3ltYWdhbnkgZG8gcG9wcmF3bmVnbyBkemlhxYJhbmlhICIKKysi V2luZS4iCisgCisgIzogYmFzaC91bmluc3RhbGw6MzEgYmFzaC91bmluc3RhbGw6NjUgYmFzaC91 bmluc3RhbGw6NjggYmFzaC91bmluc3RhbGw6NzUKKyAjOiBsaWIvd2luZS5saWI6ODY3CitAQCAt OTMzLDEyICs5NDAsMTIgQEAgbXNnc3RyICIiCisgIywgc2gtZm9ybWF0CisgbXNnaWQgIiIKKyAi JEFQUExJQ0FUSU9OX1RJVExFIGhhcyBlbmNvdW50ZXJlZCBhbiBlcnJvci4gSWYgdGhlIHByb2dy YW0geW91IGFyZSAiCistImluc3RhbGxpbmcgZG9lcyBub3Qgd29yayBjb3JyZWN0bHksIGl0IG1p Z2h0IGJlIHRoZSBjYXVzZSBvZiB0aGUgcHJvYmxlbS5cXCIKKy0iblZpc2l0IHd3dy4kUE9MX0RO UyB0byBnZXQgZnVydGhlciBpbmZvcm1hdGlvbiIKKysiaW5zdGFsbGluZyBkb2VzIG5vdCB3b3Jr IGNvcnJlY3RseSwgaXQgbWlnaHQgYmUgdGhlIGNhdXNlIG9mIHRoZSBwcm9ibGVtLiIKKysiXFxu VmlzaXQgd3d3LiRQT0xfRE5TIHRvIGdldCBmdXJ0aGVyIGluZm9ybWF0aW9uIgorIG1zZ3N0ciAi IgorICIkQVBQTElDQVRJT05fVElUTEUgbmFwb3RrYcWCIG5hIGLFgsSFZC4gSmXFm2xpIHByb2dy YW0sIGt0w7NyeSBqZXN0IGluc3RhbG93YW55ICIKKy0ibmllIGR6aWHFgmEgcHJhd2lkxYJvd28s IHRvIG1vxbxlIGJ5xIcgcHJ6eWN6eW7EhSBwcm9ibGVtdS5cXG4gT2R3aWVkxbogIgorLSJ3d3cu JFBPTF9ETlMgdyBjZWx1IHV6eXNrYW5pYSBkYWxzenljaCBpbmZvcm1hY2ppIgorKyJuaWUgZHpp YcWCYSBwcmF3aWTFgm93bywgdG8gbW/FvGUgYnnEhyBwcnp5Y3p5bsSFIHByb2JsZW11LlxcbiBP ZHdpZWTFuiB3d3cuIgorKyIkUE9MX0ROUyB3IGNlbHUgdXp5c2thbmlhIGRhbHN6eWNoIGluZm9y bWFjamkiCisgCisgIzogbGliL2RlYnVnLmxpYjoxNTUKKyAjLCBzaC1mb3JtYXQKK0BAIC05ODAs OSArOTg3LDkgQEAgbXNnaWQgIiIKKyAidmFsaWRcXG5cXG5QbGF5T25MaW51eCBoYXMgbm90IGFw cHJvdmVkIHRoaXMgc2NyaXB0IGFuZCB3aWxsIG5vdCBiZSAiCisgInJlc3BvbnNpYmxlIGZyb20g aXQuXFxuUGxlYXNlIGVuc3VyZSB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcgISIKKyBtc2dz dHIgIiIKKy0iT3N0cnplxbxlbmllIVxcblxcblN5Z25hdHVyYSB0ZWdvIHNrcnlwdHUgTklFIGpl c3QgcHJhd2lkxYJvd2FcXG5cXCIKKy0iblBsYXlPbkxpbnV4IG5pZSB6YWFrY2VwdG93YcWCIHRl Z28gc2tyeXB0dSBuaWUgYsSZZHppZSBvZHBvd2llZHppYWxueSB6YSBqZWdvICIKKy0iYsWCxJlk bmUgZHppYcWCYW5pZS5cXG5Lb250eW51dWogdHlsa28gamXFm2xpIHdpZXN6IGNvIHJvYmlzei4i CisrIk9zdHJ6ZcW8ZW5pZSFcXG5cXG5TeWduYXR1cmEgdGVnbyBza3J5cHR1IE5JRSBqZXN0IHBy YXdpZMWCb3dhXFxuIgorKyJcXG5QbGF5T25MaW51eCBuaWUgemFha2NlcHRvd2HFgiB0ZWdvIHNr cnlwdHUgbmllIGLEmWR6aWUgb2Rwb3dpZWR6aWFsbnkgemEgIgorKyJqZWdvIGLFgsSZZG5lIGR6 aWHFgmFuaWUuXFxuS29udHludXVqIHR5bGtvIGplxZtsaSB3aWVzeiBjbyByb2Jpc3ouIgorIAor ICM6IGxpYi9wbGF5b25saW51eC5saWI6MzQ5IGxpYi9wbGF5b25saW51eC5saWI6MzcyCisgIywg c2gtZm9ybWF0CitAQCAtOTk2LDggKzEwMDMsOCBAQCBtc2dpZCAiIgorICJ2YWxpZFxcblxcbiRB UFBMSUNBVElPTl9USVRMRSBoYXMgbm90IGFwcHJvdmVkIHRoaXMgc2NyaXB0IGFuZCB3aWxsIG5v dCBiZSAiCisgInJlc3BvbnNpYmxlIGZyb20gaXQuXFxuUGxlYXNlIGVuc3VyZSB5b3Uga25vdyB3 aGF0IHlvdSBhcmUgZG9pbmchIgorIG1zZ3N0ciAiIgorLSJPc3RyemXFvGVuaWUhXFxuXFxuU3ln bmF0dXJhIHRlZ28gc2tyeXB0dSBOSUUgamVzdCBwcmF3aWTFgm93YVxcblxcIgorLSJuJEFQUExJ Q0FUSU9OX1RJVExFIG5pZSB6YWFrY2VwdG93YcWCIHRlZ28gc2tyeXB0dSBuaWUgYsSZZHppZSBv ZHBvd2llZHppYWxueSAiCisrIk9zdHJ6ZcW8ZW5pZSFcXG5cXG5TeWduYXR1cmEgdGVnbyBza3J5 cHR1IE5JRSBqZXN0IHByYXdpZMWCb3dhXFxuXFxuIgorKyIkQVBQTElDQVRJT05fVElUTEUgbmll IHphYWtjZXB0b3dhxYIgdGVnbyBza3J5cHR1IG5pZSBixJlkemllIG9kcG93aWVkemlhbG55ICIK KyAiemEgamVnbyBixYLEmWRuZSBkemlhxYJhbmllLlxcbktvbnR5bnV1aiB0eWxrbyBqZcWbbGkg d2llc3ogY28gcm9iaXN6LiIKKyAKKyAjOiBsaWIvcGxheW9ubGludXgubGliOjM3MgorQEAgLTEw NTQsOSArMTA2MSwxMSBAQCBtc2dzdHIgIiIKKyAjOiBsaWIvcGxheW9ubGludXgubGliOjkxMwor ICMsIHNoLWZvcm1hdAorIG1zZ2lkICIiCistIllvdXIgTGludXgga2VybmVsIG1heSBub3QgYmUg Y29uZmlndXJlZCB0byBydW4gV2luMTYgcHJvZ3JhbXMgdW5kZXIgV2luZVxcIgorLSJuU2VlICRF WFBMQU5BVElPTl9VUkwiCisrIllvdXIgTGludXgga2VybmVsIG1heSBub3QgYmUgY29uZmlndXJl ZCB0byBydW4gV2luMTYgcHJvZ3JhbXMgdW5kZXIgV2luZSIKKysiXFxuU2VlICRFWFBMQU5BVElP Tl9VUkwiCisgbXNnc3RyICIiCisrIkrEhWRybyB0d29qZWdvIGxpbnVrc2EgbW/FvGUgbmllIGJ5 xIcgc2tvbmZpZ3Vyb3dhbmUgZG8gdXJ1Y2hhbWlhbmlhIHByb2dyYW3Ds3cgIgorKyJXaW4xNiB3 IFdpbmVcXG5TZWUgJEVYUExBTkFUSU9OX1VSTCIKKyAKKyAjOiBsaWIvcGxheW9ubGludXgubGli OjkxNgorICMsIHNoLWZvcm1hdAorQEAgLTEwNjQsNiArMTA3Myw4IEBAIG1zZ2lkICIiCisgIllv dXIga2VybmVsIG1heSBiZSBpbmNvbXBhdGlibGUgd2l0aCBydW5uaW5nIFdpbjE2IHByb2dyYW1z IHVuZGVyIFdpbmVcXG5TZWUgIgorICIkRVhQTEFOQVRJT05fVVJMIgorIG1zZ3N0ciAiIgorKyJK xIVkcm8gdHdvamVnbyBsaW51a3NhIG1vxbxlIGJ5xIcgbmlla29tcGF0eWJpbG5lIHogYXBsaWth Y2phbWkgV2luMTYgIgorKyJ1cnVjaGFtaWFueW1pIHcgV2luZVxcblNlZSAkRVhQTEFOQVRJT05f VVJMIgorIAorICM6IGxpYi9wbHVnaW5zLmxpYjo2MworICMsIHNoLWZvcm1hdAorQEAgLTExMzEs NyArMTE0Miw3IEBAIG1zZ3N0ciAiIgorICM6IGxpYi9zY3JpcHRzLmxpYjo2OTYgbGliL3Njcmlw dHMubGliOjcwNAorICMsIHNoLWZvcm1hdAorIG1zZ2lkICJQbGVhc2Ugd2FpdCB3aGlsZSAkQVBQ TElDQVRJT05fVElUTEUgaXMgaGFuZGxpbmcgYXJjaGl2ZS4uLiIKKy1tc2dzdHIgIiIKKyttc2dz dHIgIlByb3N6xJkgY3pla2HEhywgJEFQUExJQ0FUSU9OX1RJVExFIHd5cGFrb3d1amUgYXJjaGl3 dW0uLi4iCisgCisgIzogbGliL3NjcmlwdHMubGliOjcyNworICMsIHNoLWZvcm1hdAorQEAgLTEx NjksMTEgKzExODAsMTEgQEAgbXNnc3RyICJSb3ptaWFyIHBsaWt1IG5pZSB6Z2FkemEgc2nEmSEi CisgIzogbGliL3NjcmlwdHMubGliOjk1NQorICMsIHNoLWZvcm1hdAorIG1zZ2lkICIiCistIlNv cnJ5LCAkQVBQTElDQVRJT05fVElUTEUgJFZFUlNJT04gaXMgdG9vIG9sZCB0byBjb250aW51ZS5c XCIKKy0ibiRBUFBMSUNBVElPTl9USVRMRSAkTkVFREVEIGlzIHJlcXVpcmVkLiIKKysiU29ycnks ICRBUFBMSUNBVElPTl9USVRMRSAkVkVSU0lPTiBpcyB0b28gb2xkIHRvIGNvbnRpbnVlLlxcbiIK KysiJEFQUExJQ0FUSU9OX1RJVExFICRORUVERUQgaXMgcmVxdWlyZWQuIgorIG1zZ3N0ciAiIgor LSIkQVBQTElDQVRJT05fVElUTEUgJFZFUlNJT04gamVzdCB6Ynl0IHN0YXJ5IGFieSBrb250eW51 b3dhxIcuXFwiCistIm4kQVBQTElDQVRJT05fVElUTEUgJE5FRURFRCBqZXN0IHd5bWFnYW55LiIK KysiJEFQUExJQ0FUSU9OX1RJVExFICRWRVJTSU9OIGplc3QgemJ5dCBzdGFyeSBhYnkga29udHlu dW93YcSHLlxcbiIKKysiJEFQUExJQ0FUSU9OX1RJVExFICRORUVERUQgamVzdCB3eW1hZ2FueS4i CisgCisgIzogbGliL3NjcmlwdHMubGliOjk3MAorICMsIHNoLWZvcm1hdAorQEAgLTEyODUsNyAr MTI5Niw3IEBAIG1zZ3N0ciAiV3lzenVraXdhbmllIHdpcnR1YWxuZWdvIGR5c2t1IHR3YXJkZWdv Li4uIgorICM6IGxpYi9zZXR1cHdpbmRvdy5saWI6NTgyCisgIywgc2gtZm9ybWF0CisgbXNnaWQg IkhvdyBtdWNoIG1lbW9yeSAoaW4gTUIpIGRvZXMgeW91ciBncmFwaGljcyBib2FyZCBoYXZlPyIK Ky1tc2dzdHIgIiIKKyttc2dzdHIgIklsZSBwYW1pxJljaSAodyBNQikgcG9zaWFkYSB0d29qYSBr YXJ0YSBncmFmaWN6bmE/IgorIAorICM6IGxpYi9zZXR1cHdpbmRvdy5saWI6NTkxCisgIywgc2gt Zm9ybWF0CitAQCAtMTM2OSw3ICsxMzgwLDcgQEAgbXNnc3RyICJQcnplZ2zEhWRhaiIKKyAjOiBs aWIvc2V0dXB3aW5kb3cubGliOjc2MworICMsIHNoLWZvcm1hdAorIG1zZ2lkICJBIHNob3J0Y3V0 IGJ5IHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0cywgb3ZlcndyaXRlPyIKKy1tc2dzdHIgIiIKKytt c2dzdHIgIlNrcsOzdCBvIHRlaiBuYXp3aWUganXFvCBpc3RuaWVqZSwgemFzdMSFcGnEhyBnbz8i CisgCisgIzogbGliL3dlYnNpdGUubGliOjI5CisgIywgc2gtZm9ybWF0CitAQCAtMTQwMyw2ICsx NDE0LDggQEAgbXNnc3RyICJXeWJpZXJ6IGfFgsOzd27EhSBrYXJ0xJkgZ3JhZmljem7EhSBrdMOz csSFIHdpbmUgbWEgemfFgmFzemHEhyBncm9tIgorIG1zZ2lkICIiCisgIlN0YXJ0aW5nIDY0LWJp dCBwcm9jZXNzICRFWEVGSUxFIGlzIG5vdCBzdXBwb3J0ZWQgaW4gMzItYml0IHZpcnR1YWwgZHJp dmVzIgorIG1zZ3N0ciAiIgorKyJVcnVjaGFtaWFuaWUgcHJvY2Vzw7N3IDY0LWJpdG93eWNoICRF WEVGSUxFIG5pZSBqZXN0IG9ic8WCdWdpd2FuZSB3IDMyLSIKKysiYml0b3d5Y2ggZHlza2FjaCB3 aXJ0dWFsbnljaCIKKyAKKyAjOiBsaWIvd2luZS5saWI6NTc5CisgIywgc2gtZm9ybWF0CitAQCAt MTYzOCw2ICsxNjUxLDExIEBAIG1zZ2lkICIiCisgIldpbmUgdmVyc2lvbiBpcyBjaGFuZ2VkLlxu IgorICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY29udGludWU/IgorIG1zZ3N0ciAiIgorKyJV d2FnYTpcbiIKKysiXG4iCisrIkthxbxkYSB1cnVjaG9taW9uYSBhcGxpa2FjamEgem5hamR1asSF Y2Egc2nEmSBuYSB0eW0gZHlza3Ugd2lydHVhbG55bSB6b3N0YW5pZSAiCisrInphdHJ6eW1hbmEg cHJ6ZWQgem1pYW7EhSB3ZXJzamkgV2luZS5cbiIKKysiQ3p5IGNoY2VzeiBrb250eW51b3dhxIc/ IgorIAorICM6IHB5dGhvbi9jb25maWd1cmUucHk6NjA2CisgbXNnaWQgIiIKK0BAIC0xNzUyLDcg KzE3NzAsNyBAQCBtc2dzdHIgIlpnYWR6YW0gc2nEmSIKKyAKKyAjOiBweXRob24vZ3VpdjMucHk6 MTc5CisgbXNnaWQgIkRvbid0IHJlbWluZCBtZSBhbnltb3JlIgorLW1zZ3N0ciAiIgorK21zZ3N0 ciAiTmllIHByenlwb21pbmFqIG1pIHdpxJljZWoiCisgCisgIzogcHl0aG9uL2d1aXYzLnB5OjE4 MAorIG1zZ2lkICJTaG93IHZpcnR1YWwgZHJpdmVzIgorQEAgLTE4NzUsNyArMTg5Myw3IEBAIG1z Z3N0ciAiIgorIAorICM6IHB5dGhvbi9pbnN0YWxsLnB5OjU3NworIG1zZ2lkICJBdHRlbnRpb24h IgorLW1zZ3N0ciAiIgorK21zZ3N0ciAiVXdhZ2EhIgorIAorICM6IHB5dGhvbi9pbnN0YWxsLnB5 OjU3NworIG1zZ2lkICIiCitAQCAtMTg4Nyw2ICsxOTA1LDEzIEBAIG1zZ2lkICIiCisgInBpcmFj eSBhbmQgYXMgc3VjaCwgd2Ugd2lsbCBub3Qgb2ZmZXIgYW55IHN1cHBvcnQgZm9yIGlzc3VlcyBy ZXN1bHRpbmcgZnJvbSAiCisgInVzaW5nIHRoaXMgb3B0aW9uLiIKKyBtc2dzdHIgIiIKKysiV8WC xIVjemFqxIVjIHTEmSBvcGNqxJksIG1vxbxlc3ogaW5zdGFsb3dhxIcgcHJvZ3JhbXkgdcW8eXdh asSFY2Ugc3lzdGVtdSB6YXJ6xIVkemFuaWEgIgorKyJwcmF3YW1pIGN5ZnJvd3ltaSAoRFJNKSwg YWxlIG5pZSBzxIUgb25lIHdzcGllcmFuZSBwcnpleiB7MH0gaSBtb2fEhSB3eW1hZ2HEhyAiCisr Im9iZWrFm2NpYS5cbiIKKysiXG4iCisrIkZ1bmtjamEgdGEgbmllIHBvd2lubmEgYnnEhyBpbnRl cnByZXRvd2FuYSBqYWtvIHVrcnl0ZSBsdWIgZG9tbmllbWFuZSAiCisrInByenl6d29sZW5pZSBu YSBwaXJhY3R3byBpIG5pZSBixJlkemllbXkgb2Zlcm93YcSHIMW8YWRuZWdvIHdzcGFyY2lhIHcg IgorKyJrd2VzdGlhY2ggd3luaWthasSFY3ljaCB6IGtvcnp5c3RhbmlhIHogdGVqIG9wY2ppLiIK KyAKKyAjOiBweXRob24vaW5zdGFsbC5weTo1ODAKKyBtc2dpZCAiIgorQEAgLTE5NzYsMjMgKzIw MDEsMjMgQEAgbXNnc3RyICJNZW5lZMW8ZXIgd3R5Y3playIKKyAKKyAjOiBweXRob24vbWFpbndp bmRvdy5weToyOTQKKyBtc2dpZCAiU3VwcG9ydGVkIHNvZnR3YXJlIgorLW1zZ3N0ciAiIgorK21z Z3N0ciAiT2JzxYJ1Z2l3YW5lIG9wcm9ncmFtb3dhbmllIgorIAorICM6IHB5dGhvbi9tYWlud2lu ZG93LnB5OjI5NQorIG1zZ2lkICJOZXdzIgorLW1zZ3N0ciAiIgorK21zZ3N0ciAiQWt0dWFsbm/F m2NpIgorIAorICM6IHB5dGhvbi9tYWlud2luZG93LnB5OjI5NgorIG1zZ2lkICJEb2N1bWVudGF0 aW9uIgorLW1zZ3N0ciAiIgorK21zZ3N0ciAiRG9rdW1lbnRhY2phIgorIAorICM6IHB5dGhvbi9t YWlud2luZG93LnB5OjI5NworIG1zZ2lkICJGb3J1bXMiCistbXNnc3RyICIiCisrbXNnc3RyICJG b3JhIGR5c2t1c3lqbmUiCisgCisgIzogcHl0aG9uL21haW53aW5kb3cucHk6Mjk4CisgbXNnaWQg IkJ1Z3MiCistbXNnc3RyICIiCisrbXNnc3RyICJCxYLEmWR5IgorIAorICM6IHB5dGhvbi9tYWlu d2luZG93LnB5OjMwMAorIG1zZ2lkICJUd2l0dGVyIgorQEAgLTIwMjgsNyArMjA1Myw3IEBAIG1z Z3N0ciAiV3R5Y3praSIKKyAKKyAjOiBweXRob24vbWFpbndpbmRvdy5weTozNjkKKyBtc2dpZCAi U3VwcG9ydCIKKy1tc2dzdHIgIiIKKyttc2dzdHIgIldzcGFyY2llIgorIAorICM6IHB5dGhvbi9t YWlud2luZG93LnB5OjM4MSBweXRob24vbWFpbndpbmRvdy5weTo3NzcKKyBtc2dpZCAiQ2xvc2Ui CitAQCAtMjA4MCw3ICsyMTA1LDcgQEAgbXNnc3RyICJEZWJ1Z3VqIgorIAorICM6IHB5dGhvbi9t YWlud2luZG93LnB5Ojc4NQorIG1zZ2lkICJTZW5kIGEgZmVlZGJhY2siCistbXNnc3RyICIiCisr bXNnc3RyICJXecWbbGlqIHpnxYJvc3plbmllIgorIAorICM6IHB5dGhvbi9tYWlud2luZG93LnB5 Ojc5MAorIG1zZ2lkICJDcmVhdGUgYSBzaG9ydGN1dCIKK0BAIC0yMTE3LDcgKzIxNDIsNyBAQCBt c2dzdHIgIldpcnR1YWxueSBkeXNrIHR3YXJkeSB6d2nEhXphbnkgeiB7MH0gKHsxfSkgbmllIGlz dG5pZWplLiIKKyAKKyAjOiBweXRob24vbWFpbndpbmRvdy5weToxMTAyCisgbXNnaWQgIkFyZSB5 b3Ugc3VyZSB5b3Ugd2FudCB0byBjbG9zZSBhbGwgezB9IHdpbmRvd3M/IgorLW1zZ3N0ciAiIgor K21zZ3N0ciAiQ3p5IG5hIHBld25vIGNoY2VzeiB6YW1rbsSFxIcgd3N6eXN0a2llIHswfSBva25h PyIKKyAKKyAjOiBweXRob24vbWFpbndpbmRvdy5weToxMTI0CisgbXNnaWQgIlJ1biB5b3VyIFdp bmRvd3MgcHJvZ3JhbXMgb24gIgorQEAgLTIzNDIsNyArMjM2Nyw3IEBAIG1zZ3N0ciAiSmVzdGXF myBwZXdpZW4gemUgY2hjZXN6IHVzdW7EhcSHIFdpbmUgezB9PyIKKyAKKyAjOiBweXRob24vd2lu ZV92ZXJzaW9ucy5weTozMzQKKyBtc2dpZCAiVGhpcyB2ZXJzaW9uIGlzIENVUlJFTlRMWSBJTiBV U0UiCistbXNnc3RyICIiCisrbXNnc3RyICJUYSB3ZXJzamEgamVzdCBvYmVjbmllIHcgdcW8eWNp dSIKKyAKKyAjOiBweXRob24vd3JhcHBlci5weToxMzUKKyBtc2dpZCAiezB9IGlzIG5vdCBhYmxl IHRvIHN0YXJ0IFBPTF9TZXR1cFdpbmRvd19zZXJ2ZXIuIgorCitGcm9tIDhmMDgyNjMyYzMwYzg1 NDYxYzc2ZjBmOTVhYzc0NzY3NWJjMGFmOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9t OiBRdWVudGluIFBBUklTIDxnaXRAcXVlbnRpbi5wYXJpcz4KK0RhdGU6IFN1biwgMjQgSmFuIDIw MjEgMTU6MjE6NTQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxNS8zN10gUmVhZmN0b3Jpbmcgd2lu ZSB2ZXJzaW9uIG1hbmFnZXIgY29kZQorCistLS0KKyBiYXNoL3N0YXJ0dXAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgIDggKworIGxpYi92YXJpYWJsZXMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgMSArCisgbGliL3dpbmUubGliICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAyMTU5ICsrKysrKysrKy0tLS0tLS0tLQorIHB5dGhvbi9saWIv VmFyaWFibGVzLnB5ICAgICAgICAgICAgICAgICAgICAgIHwgICAgOSArLQorIHB5dGhvbi9tYWlu d2luZG93LnB5ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQorIHB5dGhvbi93aW5l X3ZlcnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIucHkgIHwgIDEzOSArLQorIHB5dGhvbi93aW5l X3ZlcnNpb25zL1dpbmVWZXJzaW9uc05vdGVib29rLnB5IHwgIDEzOSArLQorIHB5dGhvbi93aW5l X3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xzLnB5ICAgIHwgICAyNCArLQorIHB5dGhvbi93aW5l X3ZlcnNpb25zL1dpbmVWZXJzaW9uc1dpbmRvdy5weSAgIHwgIDI2MCArLS0KKyA5IGZpbGVzIGNo YW5nZWQsIDEzMTUgaW5zZXJ0aW9ucygrKSwgMTQyNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdp dCBhL2Jhc2gvc3RhcnR1cCBiL2Jhc2gvc3RhcnR1cAoraW5kZXggYWIwYjVkY2I1Li5mYjYyZTdh OGIgMTAwNzU1CistLS0gYS9iYXNoL3N0YXJ0dXAKKysrKyBiL2Jhc2gvc3RhcnR1cAorQEAgLTMx LDYgKzMxLDE0IEBAIGJ1aWxkX3VzZXJfc3RhdGVfZGlyZWN0b3J5CisgIyBDbGVhbmluZyB0bXAg ZGlyZWN0b3J5CisgY2xlYW5fdG1wCisgCisrIyBNYWMgT1MgQ2F0YWxpbmE6IFJlbW92ZSBsZWdh Y3kgd2luZSB2ZXJzaW9ucworK2lmIFtbICIkT1NYX1ZFUlNJT04iIC1nZSAxOSBdXTsgdGhlbgor KyAgICBpZiBbWyAhIC1lICIkUE9MX1VTRVJfUk9PVC93aW5lL2Rhcndpbi14ODYtbGVnYWN5IiBd XTsgdGhlbgorKyAgICAgICAgW1sgLWUgIiRQT0xfVVNFUl9ST09UL3dpbmUvZGFyd2luLXg4NiIg XV0gJiYgbXYgIiRQT0xfVVNFUl9ST09UL3dpbmUvZGFyd2luLXg4NiIgIiRQT0xfVVNFUl9ST09U L3dpbmUvZGFyd2luLXg4Ni1sZWdhY3kiCisrICAgICAgICBta2RpciAtcCAiJFBPTF9VU0VSX1JP T1Qvd2luZS9kYXJ3aW4teDg2LWxlZ2FjeSIKKysgICAgZmkKKytmaQorKworICMjIyBPcGVyYXRp b25zIGJlbG93IGFyZSBiYWNrZ3JvdW5kIGFzeW5jaHJvbm91cyB0YXNrcworIAorICgKK2RpZmYg LS1naXQgYS9saWIvdmFyaWFibGVzIGIvbGliL3ZhcmlhYmxlcworaW5kZXggM2RmNGI2NzA4Li45 YzE2ZmUxYTcgMTAwNzU1CistLS0gYS9saWIvdmFyaWFibGVzCisrKysgYi9saWIvdmFyaWFibGVz CitAQCAtMjEsNiArMjEsNyBAQAorICMjIEhhY2sgZm9yIEVsIENhcGl0YWluCisgWyAhICIkV1JJ VEVfTEQiID0gIiIgXSAmJiBleHBvcnQgTERfTElCUkFSWV9QQVRIPSIkV1JJVEVfTEQiCisgWyAh ICIkV1JJVEVfRFlMRCIgPSAiIiBdICYmIGV4cG9ydCBEWUxEX0xJQlJBUllfUEFUSD0iJFdSSVRF X0RZTEQiCisrWyAhICIkV1JJVEVfRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEgiID0gIiIgXSAm JiBleHBvcnQgRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEg9IiRXUklURV9EWUxEX0ZBTExCQUNL X0xJQlJBUllfUEFUSCIKKyAKKyAjIFRoaXMgaXMganVzdCBhIGNvcHkgb2YgZnVuY3Rpb24gaW4g cGxheW9ubGludXgsIGJ1dCB3ZSBuZWVkIGl0IGVhcmxpZXIKKyBbICIkUE9MX09TIiA9ICJNYWMi IF0gJiYgZXhwb3J0IExBTkc9IiRSTEFORyIKK2RpZmYgLS1naXQgYS9saWIvd2luZS5saWIgYi9s aWIvd2luZS5saWIKK2luZGV4IDc3MTc5ZDEzNy4uZDI3ZGUxNTA5IDEwMDc1NQorLS0tIGEvbGli L3dpbmUubGliCisrKysgYi9saWIvd2luZS5saWIKK0BAIC0yMiw4MiArMjIsODMgQEAKKyAjCisg IyBUaGlzIGxpYiBjb250YWlucyB3aW5lJ3MgYXBpCisgCistUE9MX1dpbmVfR2V0UmVnVmFsdWUo KQorLXsKKy0JIyBHZXQgYSB2YWx1ZSBpbiByZWdpc3RyeQorLQkjIEV4YW1wbGUgOiBQT0xfV2lu ZV9HZXRSZWdfVmFsdWUgTXVsdGlzYW1wbGluZworLQkjCistCSMgUmVhZCBodHRwOi8vd2lraS53 aW5laHEub3JnL1VzZWZ1bFJlZ2lzdHJ5S2V5cworLQorLQlbIC16ICIkV0lORVBSRUZJWCIgXSAm JiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKy0JbG9jYWwgdmFsdWUKKy0J IyB0ciAtZCAnXDAnIGlzIGEgd29ya2Fyb3VuZCBmb3IgV2luZSBidWcgIzM3NTc1CistCVsgLWUg IiRXSU5FUFJFRklYL3VzZXIucmVnIiBdICYmIHZhbHVlPSIkKGdyZXAgIl5cIiQxXCI9IiAiJFdJ TkVQUkVGSVgvdXNlci5yZWciIHwgaGVhZCAtbiAxIHwgdHIgLWQgJyInIHwgY3V0IC1kPSAtZjIt IHwgdHIgLWQgJ1wwJykiCistCVBPTF9EZWJ1Z19NZXNzYWdlICJHZXR0aW5nIHJlZ2lzdHJ5IHZh bHVlICQxLiBSZXR1cm46ICR2YWx1ZSIKKy0JZWNobyAtbiAiJHt2YWx1ZTotZGVmYXVsdH0iCisr UE9MX1dpbmVfR2V0UmVnVmFsdWUoKSB7CisrICAjIEdldCBhIHZhbHVlIGluIHJlZ2lzdHJ5Cisr ICAjIEV4YW1wbGUgOiBQT0xfV2luZV9HZXRSZWdfVmFsdWUgTXVsdGlzYW1wbGluZworKyAgIwor KyAgIyBSZWFkIGh0dHA6Ly93aWtpLndpbmVocS5vcmcvVXNlZnVsUmVnaXN0cnlLZXlzCisrCisr ICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90 IHNldCIKKysgIGxvY2FsIHZhbHVlCisrICAjIHRyIC1kICdcMCcgaXMgYSB3b3JrYXJvdW5kIGZv ciBXaW5lIGJ1ZyAjMzc1NzUKKysgIFsgLWUgIiRXSU5FUFJFRklYL3VzZXIucmVnIiBdICYmIHZh bHVlPSIkKGdyZXAgIl5cIiQxXCI9IiAiJFdJTkVQUkVGSVgvdXNlci5yZWciIHwgaGVhZCAtbiAx IHwgdHIgLWQgJyInIHwgY3V0IC1kPSAtZjItIHwgdHIgLWQgJ1wwJykiCisrICBQT0xfRGVidWdf TWVzc2FnZSAiR2V0dGluZyByZWdpc3RyeSB2YWx1ZSAkMS4gUmV0dXJuOiAkdmFsdWUiCisrICBl Y2hvIC1uICIke3ZhbHVlOi1kZWZhdWx0fSIKKyB9CisgCistUE9MX1dpbmVfVXBkYXRlUmVnaXN0 cnkgKCkKKy17CistCSMgVXNhZ2U6IFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5IHJlZ2Jhc2VuYW1l CistCSMgcmVnaXN0cnkgZmlsZSBtdXN0IGJlIHByb3ZpZGVkIHRocnUgc3RkaW4KKy0JIyBGaWxl IHNpZ25hdHVyZSAoIlJFR0VESVQ0IikgaW4gYXBwZW5kZWQgYXV0b21hdGljYWxseQorLQorLQko ZWNobyAiUkVHRURJVDQiOyBlY2hvICIiOyBjYXQpID4gIiRQT0xfVVNFUl9ST09UL3RtcC8kMS5y ZWciCistCVBPTF9XaW5lIHJlZ2VkaXQgIiRQT0xfVVNFUl9ST09UL3RtcC8kMS5yZWciICYmCist CXJtICIkUE9MX1VTRVJfUk9PVC90bXAvJDEucmVnIgorK1BPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5 KCkgeworKyAgIyBVc2FnZTogUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgcmVnYmFzZW5hbWUKKysg ICMgcmVnaXN0cnkgZmlsZSBtdXN0IGJlIHByb3ZpZGVkIHRocnUgc3RkaW4KKysgICMgRmlsZSBz aWduYXR1cmUgKCJSRUdFRElUNCIpIGluIGFwcGVuZGVkIGF1dG9tYXRpY2FsbHkKKysKKysgICgK KysgICAgZWNobyAiUkVHRURJVDQiCisrICAgIGVjaG8gIiIKKysgICAgY2F0CisrICApID4iJFBP TF9VU0VSX1JPT1QvdG1wLyQxLnJlZyIKKysgIFBPTF9XaW5lIHJlZ2VkaXQgIiRQT0xfVVNFUl9S T09UL3RtcC8kMS5yZWciICYmCisrICAgIHJtICIkUE9MX1VTRVJfUk9PVC90bXAvJDEucmVnIgor IH0KKyAKKy1QT0xfV2luZV9VcGRhdGVSZWdpc3RyeVBhaXIgKCkKKy17CistCSMgVXNhZ2U6IFBP TF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5UGFpciBrZXkgbmFtZSBbLS1zenwtLWJpbmFyeXwtLWR3b3Jk fC0tbXVsdGlzel0gZGF0YQorLQkjIGRhdGE9ImRlZmF1bHQiOiByZW1vdmUgdGhlIG5hbWUKKy0g ICAgICAgIGxvY2FsIGtleT0iJDEiCistICAgICAgICBsb2NhbCBzdWJrZXk9IiQyIgorLSAgICAg ICAgc2hpZnQgMgorLSAgICAgICAgbG9jYWwgdmFsdWUKKy0gICAgICAgIGNhc2UgIiQxIiBpbgor LSAgICAgICAgICAtLXN6fC0tU1opCistICAgICAgICAgICAgc2hpZnQKKy0gICAgICAgICAgICAj IGJhY2tzbGFzaCBccyBhbmQgInM/CistICAgICAgICAgICAgdmFsdWU9IlwiJDFcIiIKKy0gICAg ICAgICAgICA7OworLSAgICAgICAgICAtLWJpbmFyeXwtLUJJTkFSWSkKKy0gICAgICAgICAgICBz aGlmdAorLSAgICAgICAgICAgIHZhbHVlPSJoZXg6JDEiCistICAgICAgICAgICAgOzsKKy0gICAg ICAgICAgLS1kd29yZHwtLURXT1JEKQorLSAgICAgICAgICAgIHNoaWZ0CistICAgICAgICAgICAg dmFsdWU9ImR3b3JkOiQxIgorLSAgICAgICAgICAgIDs7CistICAgICAgICAgIC0tbXVsdGlzenwt LU1VTFRJU1opCistICAgICAgICAgICAgc2hpZnQKKy0gICAgICAgICAgICB2YWx1ZT0iaGV4KDcp OiQxIgorLSAgICAgICAgICAgIDs7CistICAgICAgICAgIC0tKikKKy0gICAgICAgICAgICBQT0xf RGVidWdfRmF0YWwgIlVucmVjb2duaXplZCB2YWx1ZSB0eXBlOiAkMSwgc3VwcG9ydGVkIGFyZSAt LXN6IC0tYmluYXJ5IC0tZHdvcmQgLS1tdWx0aXN6IgorLSAgICAgICAgICAgIDs7CistICAgICAg ICAgIGRlZmF1bHQpCistICAgICAgICAgICAgdmFsdWU9Ii0iCistICAgICAgICAgICAgOzsKKy0g ICAgICAgICAgKikKKy0gICAgICAgICAgICAjIGJhY2tzbGFzaCBccyBhbmQgInM/CistICAgICAg ICAgICAgdmFsdWU9IlwiJDFcIiIKKy0gICAgICAgIGVzYWMKKy0KKy0JCVBPTF9XaW5lX1VwZGF0 ZVJlZ2lzdHJ5IHJlZ2tleSA8PC0gX0VPRklOSV8KKytQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVBh aXIoKSB7CisrICAjIFVzYWdlOiBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVBhaXIga2V5IG5hbWUg Wy0tc3p8LS1iaW5hcnl8LS1kd29yZHwtLW11bHRpc3pdIGRhdGEKKysgICMgZGF0YT0iZGVmYXVs dCI6IHJlbW92ZSB0aGUgbmFtZQorKyAgbG9jYWwga2V5PSIkMSIKKysgIGxvY2FsIHN1YmtleT0i JDIiCisrICBzaGlmdCAyCisrICBsb2NhbCB2YWx1ZQorKyAgY2FzZSAiJDEiIGluCisrICAtLXN6 IHwgLS1TWikKKysgICAgc2hpZnQKKysgICAgIyBiYWNrc2xhc2ggXHMgYW5kICJzPworKyAgICB2 YWx1ZT0iXCIkMVwiIgorKyAgICA7OworKyAgLS1iaW5hcnkgfCAtLUJJTkFSWSkKKysgICAgc2hp ZnQKKysgICAgdmFsdWU9ImhleDokMSIKKysgICAgOzsKKysgIC0tZHdvcmQgfCAtLURXT1JEKQor KyAgICBzaGlmdAorKyAgICB2YWx1ZT0iZHdvcmQ6JDEiCisrICAgIDs7CisrICAtLW11bHRpc3og fCAtLU1VTFRJU1opCisrICAgIHNoaWZ0CisrICAgIHZhbHVlPSJoZXgoNyk6JDEiCisrICAgIDs7 CisrICAtLSopCisrICAgIFBPTF9EZWJ1Z19GYXRhbCAiVW5yZWNvZ25pemVkIHZhbHVlIHR5cGU6 ICQxLCBzdXBwb3J0ZWQgYXJlIC0tc3ogLS1iaW5hcnkgLS1kd29yZCAtLW11bHRpc3oiCisrICAg IDs7CisrICBkZWZhdWx0KQorKyAgICB2YWx1ZT0iLSIKKysgICAgOzsKKysgICopCisrICAgICMg YmFja3NsYXNoIFxzIGFuZCAicz8KKysgICAgdmFsdWU9IlwiJDFcIiIKKysgICAgOzsKKysgIGVz YWMKKysKKysgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5IHJlZ2tleSA8PC1fRU9GSU5JXworIAkJ WyRrZXldCisgCQkiJHN1YmtleSI9JHZhbHVlCisgCQlfRU9GSU5JXworIH0KKyAKKy1QT0xfV2lu ZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICgpCisteworLQkjIFVzYWdlOiBQT0xfV2luZV9VcGRh dGVSZWdpc3RyeVBhaXIgc3Via2V5IG5hbWUgWy0tc3p8LS1iaW5hcnl8LS1kd29yZHwtLW11bHRp c3pdIGRhdGEKKy0JIyBkYXRhPSJkZWZhdWx0IjogcmVtb3ZlIHRoZSBuYW1lCisrUE9MX1dpbmVf VXBkYXRlUmVnaXN0cnlXaW5lUGFpcigpIHsKKysgICMgVXNhZ2U6IFBPTF9XaW5lX1VwZGF0ZVJl Z2lzdHJ5UGFpciBzdWJrZXkgbmFtZSBbLS1zenwtLWJpbmFyeXwtLWR3b3JkfC0tbXVsdGlzel0g ZGF0YQorKyAgIyBkYXRhPSJkZWZhdWx0IjogcmVtb3ZlIHRoZSBuYW1lCisgCistCSMgUHV0IGEg IlwiIGJlZm9yZSAkMSBpZiBpdCdzIG5vdCBlbXB0eQorLQlQT0xfV2luZV9VcGRhdGVSZWdpc3Ry eVBhaXIgIkhLRVlfQ1VSUkVOVF9VU0VSXFxTb2Z0d2FyZVxcV2luZSR7MTorXFwkMX0iICIkMiIg IiQzIiAiJDQiCisrICAjIFB1dCBhICJcIiBiZWZvcmUgJDEgaWYgaXQncyBub3QgZW1wdHkKKysg IFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5UGFpciAiSEtFWV9DVVJSRU5UX1VTRVJcXFNvZnR3YXJl XFxXaW5lJHsxOitcXCQxfSIgIiQyIiAiJDMiICIkNCIKKyB9CisgCisgIyBGb3IgYWxsIGZ1bmN0 aW9ucyBiZWxvdywgdGhhdCBjYW4gYmUgY2FsbGVkIGZyb20gdGhlIGNvbnRyb2wgcGFuZWw6CitA QCAtMTA1LDM2MSArMTA2LDM0NCBAQCBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICgp CisgIyAgIGNoYW5nZWQgV2luZSB2ZXJzaW9uIG91dCBvZiBvdXIgY29udHJvbDsKKyAjIC0gS2ls bCB3aW5lc2VydmVyIGFmdGVyIHJlZ2VkaXQgc28gY2hhbmdlIHRha2VzIGVmZmVjdCBpbW1lZGlh dGVseQorIAorLVBPTF9XaW5lX0RpcmVjdDNEICgpCisteworLQkjIENoYW5nZSBhIERpcmVjdDNE IHZhbHVlIGluIHJlZ2lzdHJ5CistCSMgVXNhZ2UgUE9MX1dpbmVfRGlyZWN0M0QgS2V5ICBbLS1z enwtLWJpbmFyeXwtLWR3b3JkfC0tbXVsdGlzel0gVmFsdWUKKytQT0xfV2luZV9EaXJlY3QzRCgp IHsKKysgICMgQ2hhbmdlIGEgRGlyZWN0M0QgdmFsdWUgaW4gcmVnaXN0cnkKKysgICMgVXNhZ2Ug UE9MX1dpbmVfRGlyZWN0M0QgS2V5ICBbLS1zenwtLWJpbmFyeXwtLWR3b3JkfC0tbXVsdGlzel0g VmFsdWUKKyAKKy0JIyBFeGFtcGxlIDo6IFBPTF9XaW5lX0RpcmVjdDNEIFVzZUdMU0wgW2RlZmF1 bHQgLyBlbmFibGVkIC8gZGlzYWJsZWRdCistCSMgZGVmYXVsdDogcmVtb3ZlIHRoZSBrZXkKKy0J UE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBEaXJlY3QzRCAkV0lORVBSRUZJWCAkMSAk MiAkMyIKKy0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJF RklYIG5vdCBzZXQiCisrICAjIEV4YW1wbGUgOjogUE9MX1dpbmVfRGlyZWN0M0QgVXNlR0xTTCBb ZGVmYXVsdCAvIGVuYWJsZWQgLyBkaXNhYmxlZF0KKysgICMgZGVmYXVsdDogcmVtb3ZlIHRoZSBr ZXkKKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgRGlyZWN0M0QgJFdJTkVQUkVG SVggJDEgJDIgJDMiCisrICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwg IldJTkVQUkVGSVggbm90IHNldCIKKyAKKy0JUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKKy0J d2luZXNlcnZlciAtaworLQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3Qz RCcgIiQxIiAiJDIiICIkMyIKKy0Jd2luZXNlcnZlciAtaworKyAgUE9MX1dpbmVfQXV0b1NldFZl cnNpb25FbnYKKysgIHdpbmVzZXJ2ZXIgLWsKKysgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2lu ZVBhaXIgJ0RpcmVjdDNEJyAiJDEiICIkMiIgIiQzIgorKyAgd2luZXNlcnZlciAtaworIH0KKyAK Ky1QT0xfV2luZV9YMTFEcnYgKCkKKy17CistCSMgQ2hhbmdlIGEgWDExRHJ2IHZhbHVlIGluIHJl Z2lzdHJ5CistCSMgVXNhZ2UgUE9MX1dpbmVfWDExRHJ2IEtleSBbLS1zenwtLWJpbmFyeXwtLWR3 b3JkfC0tbXVsdGlzel0gVmFsdWUKKytQT0xfV2luZV9YMTFEcnYoKSB7CisrICAjIENoYW5nZSBh IFgxMURydiB2YWx1ZSBpbiByZWdpc3RyeQorKyAgIyBVc2FnZSBQT0xfV2luZV9YMTFEcnYgS2V5 IFstLXN6fC0tYmluYXJ5fC0tZHdvcmR8LS1tdWx0aXN6XSBWYWx1ZQorIAorLQkjIEV4YW1wbGUg OjogUE9MX1dpbmVfWDExRHJ2IFVzZUdMU0wgW2RlZmF1bHQgLyBlbmFibGVkIC8gZGlzYWJsZWRd CistCSMgZGVmYXVsdDogcmVtb3ZlIHRoZSBrZXkKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRp bmcgd2luZSBYMTFEcnYgJFdJTkVQUkVGSVggJDEgJDIgJDMiCistCVsgLXogIiRXSU5FUFJFRklY IiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorKyAgIyBFeGFtcGxl IDo6IFBPTF9XaW5lX1gxMURydiBVc2VHTFNMIFtkZWZhdWx0IC8gZW5hYmxlZCAvIGRpc2FibGVk XQorKyAgIyBkZWZhdWx0OiByZW1vdmUgdGhlIGtleQorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNl dHRpbmcgd2luZSBYMTFEcnYgJFdJTkVQUkVGSVggJDEgJDIgJDMiCisrICBbIC16ICIkV0lORVBS RUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKyAKKy0JUE9M X1dpbmVfQXV0b1NldFZlcnNpb25FbnYKKy0Jd2luZXNlcnZlciAtaworLQlQT0xfV2luZV9VcGRh dGVSZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAiJDEiICIkMiIgIiQzIgorLQl3aW5lc2Vy dmVyIC1rCisrICBQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgorKyAgd2luZXNlcnZlciAtawor KyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgIiQxIiAiJDIi ICIkMyIKKysgIHdpbmVzZXJ2ZXIgLWsKKyB9CisgCistUE9MX1dpbmVfRGlyZWN0U291bmQgKCkK Ky17CistCSMgU2FtZSB0aGF0IFBPTF9XaW5lX0RpcmVjdDNELCBidXQgZm9yIERpcmVjdFNvdW5k CistCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgRGlyZWN0U291bmQgJFdJTkVQUkVG SVggJDEgJDIgJDMiCistCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAi V0lORVBSRUZJWCBub3Qgc2V0IgorK1BPTF9XaW5lX0RpcmVjdFNvdW5kKCkgeworKyAgIyBTYW1l IHRoYXQgUE9MX1dpbmVfRGlyZWN0M0QsIGJ1dCBmb3IgRGlyZWN0U291bmQKKysgIFBPTF9EZWJ1 Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgRGlyZWN0U291bmQgJFdJTkVQUkVGSVggJDEgJDIgJDMi CisrICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVgg bm90IHNldCIKKyAKKy0JUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKKy0Jd2luZXNlcnZlciAt aworLQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RTb3VuZCcgIiQxIiAi JDIiICIkMyIKKy0Jd2luZXNlcnZlciAtaworKyAgUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYK KysgIHdpbmVzZXJ2ZXIgLWsKKysgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0Rp cmVjdFNvdW5kJyAiJDEiICIkMiIgIiQzIgorKyAgd2luZXNlcnZlciAtaworIH0KKyAKKy1QT0xf V2luZV9EaXJlY3RJbnB1dCAoKQorLXsKKy0JIyBTYW1lIHRoYXQgUE9MX1dpbmVfRGlyZWN0M0Qs IGJ1dCBmb3IgRGlyZWN0SW5wdXQKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBE aXJlY3RJbnB1dCAkV0lORVBSRUZJWCAkMSAkMiAkMyIKKy0JWyAteiAiJFdJTkVQUkVGSVgiIF0g JiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisrUE9MX1dpbmVfRGlyZWN0 SW5wdXQoKSB7CisrICAjIFNhbWUgdGhhdCBQT0xfV2luZV9EaXJlY3QzRCwgYnV0IGZvciBEaXJl Y3RJbnB1dAorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBEaXJlY3RJbnB1dCAk V0lORVBSRUZJWCAkMSAkMiAkMyIKKysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1 Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorIAorLQlQT0xfV2luZV9BdXRvU2V0VmVyc2lv bkVudgorLQl3aW5lc2VydmVyIC1rCistCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIg J0RpcmVjdElucHV0JyAiJDEiICIkMiIgIiQzIgorLQl3aW5lc2VydmVyIC1rCisrICBQT0xfV2lu ZV9BdXRvU2V0VmVyc2lvbkVudgorKyAgd2luZXNlcnZlciAtaworKyAgUE9MX1dpbmVfVXBkYXRl UmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0SW5wdXQnICIkMSIgIiQyIiAiJDMiCisrICB3aW5lc2Vy dmVyIC1rCisgfQorIAorLVNldF9PUyAoKQorLXsKKy0JIyBTZXQgZmFrZSB3aW5kb3dzIE9TCist CSMgVXNhZ2U6IFNldF9PUyBbMV0gWzJdCistCSMKKy0JIyAxOiBQb3NzaWJsZSB2YWx1ZXM6IHdp bjcsIHdpbjIwMDgsIHZpc3RhLCB3aW4yMDAzLCB3aW54cCwgd2luMjAwMCwgbnQ0MCwgd2lubnQz NTEsIHdpbm1lLCB3aW45OCwgd2luOTUsIHdpbjMxLCB3aW4zMCwgd2luMjAKKy0JIyAyOiBTZXJ2 aWNlIFBhY2s6IHNwMSwgc3AyLCBzcDMsIHNwNCwgc3A1CistCVBPTF9EZWJ1Z19NZXNzYWdlICJT ZXR0aW5nIFdpbmRvd3MgT1MgdG8gJDEgJDIiCistCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBP TF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorLQorLQlpZiBbIC1uICIkMSIgXTsg dGhlbgorLQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnJyAnVmVyc2lvbicgIiQx IgorLQlmaQorLQorLQlpZiBbIC1uICIkMiIgXTsgdGhlbiAjIE5lZWQgbW9yZSB0ZXN0aW5nCist CQlsb2NhbCBuCistCQlbICIkMiIgPSAic3AxIiBdICYmIG49MQorLQkJWyAiJDIiID0gInNwMiIg XSAmJiBuPTIKKy0JCVsgIiQyIiA9ICJzcDMiIF0gJiYgbj0zCistCQlbICIkMiIgPSAic3A0IiBd ICYmIG49NAorLQkJWyAiJDIiID0gInNwNSIgXSAmJiBuPTUKKy0KKy0JCVBPTF9XaW5lX1VwZGF0 ZVJlZ2lzdHJ5IHNldG9zIDw8LSBfRU9GSU5JXworK1NldF9PUygpIHsKKysgICMgU2V0IGZha2Ug d2luZG93cyBPUworKyAgIyBVc2FnZTogU2V0X09TIFsxXSBbMl0KKysgICMKKysgICMgMTogUG9z c2libGUgdmFsdWVzOiB3aW43LCB3aW4yMDA4LCB2aXN0YSwgd2luMjAwMywgd2lueHAsIHdpbjIw MDAsIG50NDAsIHdpbm50MzUxLCB3aW5tZSwgd2luOTgsIHdpbjk1LCB3aW4zMSwgd2luMzAsIHdp bjIwCisrICAjIDI6IFNlcnZpY2UgUGFjazogc3AxLCBzcDIsIHNwMywgc3A0LCBzcDUKKysgIFBP TF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFdpbmRvd3MgT1MgdG8gJDEgJDIiCisrICBbIC16ICIk V0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKysK KysgIGlmIFsgLW4gIiQxIiBdOyB0aGVuCisrICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2lu ZVBhaXIgJycgJ1ZlcnNpb24nICIkMSIKKysgIGZpCisrCisrICBpZiBbIC1uICIkMiIgXTsgdGhl biAjIE5lZWQgbW9yZSB0ZXN0aW5nCisrICAgIGxvY2FsIG4KKysgICAgWyAiJDIiID0gInNwMSIg XSAmJiBuPTEKKysgICAgWyAiJDIiID0gInNwMiIgXSAmJiBuPTIKKysgICAgWyAiJDIiID0gInNw MyIgXSAmJiBuPTMKKysgICAgWyAiJDIiID0gInNwNCIgXSAmJiBuPTQKKysgICAgWyAiJDIiID0g InNwNSIgXSAmJiBuPTUKKysKKysgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgc2V0b3MgPDwt X0VPRklOSV8KKyAJCVtIS0VZX0xPQ0FMX01BQ0hJTkVcXFNvZnR3YXJlXFxNaWNyb3NvZnRcXFdp bmRvd3MgTlRcXEN1cnJlbnRWZXJzaW9uXQorIAkJIkNTRFZlcnNpb24iPSJTZXJ2aWNlIFBhY2sg JG4iCisgCQlbSEtFWV9MT0NBTF9NQUNISU5FXFxTeXN0ZW1cXEN1cnJlbnRDb250cm9sU2V0XFxD b250cm9sXFxXaW5kb3dzXQorIAkJIkNTRFZlcnNpb24iPWR3b3JkOjAwMDAwJHtufTAwCisgCQlf RU9GSU5JXworLQlmaQorKyAgZmkKKyB9CisgCistU2V0X01hbmFnZWQgKCkKKy17CistCSMgTGV0 IHRoZSB3aW5kb3dzIG1hbmFnZXIgdG8gY29udHJvbCB3aW5lCistCSMgVXNhZ2U6IFNldF9NYW5h Z2VkIChPbnxPZmYpCistCistCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgbWFuYWdl ZDogJDEiCistCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBS RUZJWCBub3Qgc2V0IgorLQorLQlsb2NhbCBuCistCVsgIiQxIiA9ICJPbiIgXSAmJiBuPSJZIgor LQlbICIkMSIgPSAiT2ZmIiBdICYmIG49Ik4iCistCWlmIFsgLW4gIiRuIiBdOyB0aGVuCistCQlQ T0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAiTWFuYWdlZCIgIiRu IgorLQllbHNlCistCQlQT0xfRGVidWdfV2FybmluZyAiVW5yZWNvZ25pemVkIGZsYWcgJyQxJyIK Ky0JZmkKKytTZXRfTWFuYWdlZCgpIHsKKysgICMgTGV0IHRoZSB3aW5kb3dzIG1hbmFnZXIgdG8g Y29udHJvbCB3aW5lCisrICAjIFVzYWdlOiBTZXRfTWFuYWdlZCAoT258T2ZmKQorKworKyAgUE9M X0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBtYW5hZ2VkOiAkMSIKKysgIFsgLXogIiRXSU5F UFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorKworKyAg bG9jYWwgbgorKyAgWyAiJDEiID0gIk9uIiBdICYmIG49IlkiCisrICBbICIkMSIgPSAiT2ZmIiBd ICYmIG49Ik4iCisrICBpZiBbIC1uICIkbiIgXTsgdGhlbgorKyAgICBQT0xfV2luZV9VcGRhdGVS ZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAiTWFuYWdlZCIgIiRuIgorKyAgZWxzZQorKyAg ICBQT0xfRGVidWdfV2FybmluZyAiVW5yZWNvZ25pemVkIGZsYWcgJyQxJyIKKysgIGZpCisgfQor IAorLVNldF9Tb3VuZERyaXZlciAoKQorLXsKKy0JIyBTZXQgdGhlIHNvdW5kIGRyaXZlcgorLQkj IFVzYWdlOiBTZXRfU291bmREcml2ZXIgW0RyaXZlcl0KKy0JIyBVc2UgYW4gZW1wdHkgc3RyaW5n IHBhcmFtZXRlciB0byBkaXNhYmxlIHNvdW5kCistCSMgRGlzYWJsZWQgaW4gTWFjIE9TCistCVBP TF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgU291bmREcml2ZXIgJEAiCistCVsgLXogIiRX SU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorLQor LQlpZiBbICIkUE9MX09TIiA9ICJMaW51eCIgXTsgdGhlbgorLQkJUE9MX1dpbmVfVXBkYXRlUmVn aXN0cnlXaW5lUGFpciAnRHJpdmVycycgJ0F1ZGlvJyAiJDEiCistCWVsc2UKKy0JCVBPTF9EZWJ1 Z19NZXNzYWdlICJTZXRfU291bmREcml2ZXIgZGlzYWJsZWQgb24gJFBPTF9PUyIKKy0JZmkKKytT ZXRfU291bmREcml2ZXIoKSB7CisrICAjIFNldCB0aGUgc291bmQgZHJpdmVyCisrICAjIFVzYWdl OiBTZXRfU291bmREcml2ZXIgW0RyaXZlcl0KKysgICMgVXNlIGFuIGVtcHR5IHN0cmluZyBwYXJh bWV0ZXIgdG8gZGlzYWJsZSBzb3VuZAorKyAgIyBEaXNhYmxlZCBpbiBNYWMgT1MKKysgIFBPTF9E ZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgU291bmREcml2ZXIgJEAiCisrICBbIC16ICIkV0lO RVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKysKKysg IGlmIFsgIiRQT0xfT1MiID0gIkxpbnV4IiBdOyB0aGVuCisrICAgIFBPTF9XaW5lX1VwZGF0ZVJl Z2lzdHJ5V2luZVBhaXIgJ0RyaXZlcnMnICdBdWRpbycgIiQxIgorKyAgZWxzZQorKyAgICBQT0xf RGVidWdfTWVzc2FnZSAiU2V0X1NvdW5kRHJpdmVyIGRpc2FibGVkIG9uICRQT0xfT1MiCisrICBm aQorIH0KKyAKKy1TZXRfRFhHcmFiICgpCisteworLQkjIEVuYWJsZSBvciBkaXNhYmxlIERYR3Jh YgorLQkjIFVzYWdlOiBTZXRfRFhHcmFiIChPbnxPZmYpCistCSMgT24gb3UgT2ZmCistCVsgLXog IiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0Igor LQorLQlsb2NhbCBuCistCVsgIiQxIiA9ICJPbiIgXSAmJiBuPSJZIiAmJiBQT0xfRGVidWdfTWVz c2FnZSAiU2V0dGluZyBEWEdyYWIiCistCVsgIiQxIiA9ICJPZmYiIF0gJiYgbj0iTiIgJiYgUE9M X0RlYnVnX01lc3NhZ2UgIlVuc2V0dGluZyBEWEdyYWIiCistCWlmIFsgLW4gIiRuIiBdOyB0aGVu CistCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAnRFhHcmFi JyAiJG4iCistCWVsc2UKKy0JCVBPTF9EZWJ1Z19XYXJuaW5nICJTZXRfRFhHcmFiOiB1bnJlY29n bml6ZWQgZmxhZyAnJDEnIgorLQlmaQorK1NldF9EWEdyYWIoKSB7CisrICAjIEVuYWJsZSBvciBk aXNhYmxlIERYR3JhYgorKyAgIyBVc2FnZTogU2V0X0RYR3JhYiAoT258T2ZmKQorKyAgIyBPbiBv dSBPZmYKKysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBS RUZJWCBub3Qgc2V0IgorKworKyAgbG9jYWwgbgorKyAgWyAiJDEiID0gIk9uIiBdICYmIG49Ilki ICYmIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIERYR3JhYiIKKysgIFsgIiQxIiA9ICJPZmYi IF0gJiYgbj0iTiIgJiYgUE9MX0RlYnVnX01lc3NhZ2UgIlVuc2V0dGluZyBEWEdyYWIiCisrICBp ZiBbIC1uICIkbiIgXTsgdGhlbgorKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWly ICdYMTEgRHJpdmVyJyAnRFhHcmFiJyAiJG4iCisrICBlbHNlCisrICAgIFBPTF9EZWJ1Z19XYXJu aW5nICJTZXRfRFhHcmFiOiB1bnJlY29nbml6ZWQgZmxhZyAnJDEnIgorKyAgZmkKKyB9CisgCist U2V0X0lleHBsb3JlICgpCisteworLQkjIE1ha2UgYSBmYWtlIElFNiBpbnN0YWxsYXRpb24KKy0J IyBVc2FnZTogU2V0X0lleHBsb3JlCistCVBPTF9EZWJ1Z19NZXNzYWdlICJGYWtpbmcgaWU2IGlu c3RhbGxhdGlvbiIKKy0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJX SU5FUFJFRklYIG5vdCBzZXQiCisrU2V0X0lleHBsb3JlKCkgeworKyAgIyBNYWtlIGEgZmFrZSBJ RTYgaW5zdGFsbGF0aW9uCisrICAjIFVzYWdlOiBTZXRfSWV4cGxvcmUKKysgIFBPTF9EZWJ1Z19N ZXNzYWdlICJGYWtpbmcgaWU2IGluc3RhbGxhdGlvbiIKKysgIFsgLXogIiRXSU5FUFJFRklYIiBd ICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorIAorLQlQT0xfV2luZV9V cGRhdGVSZWdpc3RyeSBpZSA8PC0gX0VPRklOSV8KKysgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5 IGllIDw8LV9FT0ZJTklfCisgCVtIS0VZX0xPQ0FMX01BQ0hJTkVcXFNvZnR3YXJlXFxNaWNyb3Nv ZnRcXEludGVybmV0IEV4cGxvcmVyXQorIAkiVmVyc2lvbiI9IjYuMC4yOTAwLjIxODAiCisgCV9F T0ZJTklfCisgfQorIAorLVNldF9EZXNrdG9wICgpCisteworLQkjIFNldCBhIGRlc2t0b3AgZW52 aXJvbm1lbnQKKy0JIyBVc2FnZTogU2V0X0Rlc2t0b3AgKG9ufG9mZikgW3dpZHRoXSBbaGVpZ2h0 XQorLQorLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBEZXNrdG9wIDogJDEgJDIgJDMiCist CVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qg c2V0IgorLQorLQlpZiBbICIkMSIgPSAiT2ZmIiBdOyB0aGVuCistCQlQT0xfV2luZV9VcGRhdGVS ZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAnRGVza3RvcCcgIi0xIgorLQkJIyBSZW1vdmUg a2V5CistCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdFeHBsb3JlcicgJ0Rlc2t0 b3AnICdkZWZhdWx0JworLQllbGlmIFsgIiQxIiA9ICJPbiIgXTsgdGhlbgorLQkJUE9MX1dpbmVf VXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgJ0Rlc2t0b3AnICIkMngkMyIKKy0J CVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgIkV4cGxvcmVyXFxEZXNrdG9wcyIgJ0Rl ZmF1bHQnICIkMngkMyIKKy0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0V4cGxv cmVyJyAnRGVza3RvcCcgJ0RlZmF1bHQnCistCWVsc2UKKy0JCVBPTF9EZWJ1Z19XYXJuaW5nICJV bnJlY29nbml6ZWQgZmxhZyAnJDEnIgorLQlmaQorK1NldF9EZXNrdG9wKCkgeworKyAgIyBTZXQg YSBkZXNrdG9wIGVudmlyb25tZW50CisrICAjIFVzYWdlOiBTZXRfRGVza3RvcCAob258b2ZmKSBb d2lkdGhdIFtoZWlnaHRdCisrCisrICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBEZXNrdG9w IDogJDEgJDIgJDMiCisrICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwg IldJTkVQUkVGSVggbm90IHNldCIKKysKKysgIGlmIFsgIiQxIiA9ICJPZmYiIF07IHRoZW4KKysg ICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgJ0Rlc2t0b3An ICItMSIKKysgICAgIyBSZW1vdmUga2V5CisrICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2lu ZVBhaXIgJ0V4cGxvcmVyJyAnRGVza3RvcCcgJ2RlZmF1bHQnCisrICBlbGlmIFsgIiQxIiA9ICJP biIgXTsgdGhlbgorKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJp dmVyJyAnRGVza3RvcCcgIiQyeCQzIgorKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQ YWlyICJFeHBsb3JlclxcRGVza3RvcHMiICdEZWZhdWx0JyAiJDJ4JDMiCisrICAgIFBPTF9XaW5l X1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0V4cGxvcmVyJyAnRGVza3RvcCcgJ0RlZmF1bHQnCisr ICBlbHNlCisrICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJVbnJlY29nbml6ZWQgZmxhZyAnJDEnIgor KyAgZmkKKyB9CisgCistU2V0X1NvdW5kU2FtcGxlUmF0ZSAoKQorLXsKKy0JIyBTZXQgU291bmQg c2FtcGxlIHJhdGUKKy0JIyBVc2FnZTogU2V0X1NvdW5kU2FtcGxlUmF0ZSBbdmFsdWVdCistCSMg dmFsdWVzIGNhbiBiZTogNDgwMDAsIDQ0MTAwLCAyMjA1MCwgMTYwMDAsIDExMDI1LCA4MDAwCist CVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFNvdW5kU2FtcGxlUmF0ZSB0byAkMSIKKy0JWyAt eiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQi CistCistCWlmIFsgLW4gIiQxIiBdOyB0aGVuCistCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdp bmVQYWlyICdEaXJlY3RTb3VuZCcgJ0RlZmF1bHRTYW1wbGVSYXRlJyAiJDEiCistCWVsc2UKKy0J CSMgRklYTUU6IHNob3VsZCB3ZSBkcm9wIHRoZSBuYW1lIGluc3RlYWQ/CistCQlQT0xfRGVidWdf V2FybmluZyAiU2FtcGxlIHJhdGUgbWlzc2luZywgc2tpcHBlZCIKKy0JZmkKKytTZXRfU291bmRT YW1wbGVSYXRlKCkgeworKyAgIyBTZXQgU291bmQgc2FtcGxlIHJhdGUKKysgICMgVXNhZ2U6IFNl dF9Tb3VuZFNhbXBsZVJhdGUgW3ZhbHVlXQorKyAgIyB2YWx1ZXMgY2FuIGJlOiA0ODAwMCwgNDQx MDAsIDIyMDUwLCAxNjAwMCwgMTEwMjUsIDgwMDAKKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0 aW5nIFNvdW5kU2FtcGxlUmF0ZSB0byAkMSIKKysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBP TF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorKworKyAgaWYgWyAtbiAiJDEiIF07 IHRoZW4KKysgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0U291bmQn ICdEZWZhdWx0U2FtcGxlUmF0ZScgIiQxIgorKyAgZWxzZQorKyAgICAjIEZJWE1FOiBzaG91bGQg d2UgZHJvcCB0aGUgbmFtZSBpbnN0ZWFkPworKyAgICBQT0xfRGVidWdfV2FybmluZyAiU2FtcGxl IHJhdGUgbWlzc2luZywgc2tpcHBlZCIKKysgIGZpCisgfQorIAorLVNldF9Tb3VuZEJpdHNQZXJT YW1wbGUgKCkKKy17CistCSMgU2V0IFNvdW5kIGJpdHMgcGVyIHNhbXBsZSByYXRlCistCSMgVXNh Z2U6IFNldF9Tb3VuZEJpdHNQZXJTYXBsZSBbdmFsdWVdCistCSMgdmFsdWVzOiA4LCAxNgorLQlQ T0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBzb3VuZCBEZWZhdWx0c0JpdHNQZXJTYW1wbGUgdG8g JDEiCistCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJ WCBub3Qgc2V0IgorLQorLQlpZiBbIC1uICIkMSIgXTsgdGhlbgorLQkJUE9MX1dpbmVfVXBkYXRl UmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0U291bmQnICdEZWZhdWx0Qml0c1BlclNhbXBsZScgIiQx IgorLQllbHNlCistCQkjIEZJWE1FOiBzaG91bGQgd2UgZHJvcCB0aGUgbmFtZSBpbnN0ZWFkPwor LQkJUE9MX0RlYnVnX1dhcm5pbmcgIkJpdHNQZXJTYW1wbGUgbWlzc2luZywgc2tpcHBlZCIKKy0J ZmkKKytTZXRfU291bmRCaXRzUGVyU2FtcGxlKCkgeworKyAgIyBTZXQgU291bmQgYml0cyBwZXIg c2FtcGxlIHJhdGUKKysgICMgVXNhZ2U6IFNldF9Tb3VuZEJpdHNQZXJTYXBsZSBbdmFsdWVdCisr ICAjIHZhbHVlczogOCwgMTYKKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHNvdW5kIERl ZmF1bHRzQml0c1BlclNhbXBsZSB0byAkMSIKKysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBP TF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorKworKyAgaWYgWyAtbiAiJDEiIF07 IHRoZW4KKysgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0U291bmQn ICdEZWZhdWx0Qml0c1BlclNhbXBsZScgIiQxIgorKyAgZWxzZQorKyAgICAjIEZJWE1FOiBzaG91 bGQgd2UgZHJvcCB0aGUgbmFtZSBpbnN0ZWFkPworKyAgICBQT0xfRGVidWdfV2FybmluZyAiQml0 c1BlclNhbXBsZSBtaXNzaW5nLCBza2lwcGVkIgorKyAgZmkKKyB9CisgCistUE9MX1dpbmVfSW5z dGFsbEZvbnRzKCkKKy17CistCSMgSW5zdGFsbCBtaWNyb3NvZnQgZm9udHMKKy0JIyBVc2FnZTog UE9MX1dpbmVfSW5zdGFsbEZvbnRzCistCXB1c2hkIC4KKy0JUE9MX0NhbGwgUE9MX0luc3RhbGxf Y29yZWZvbnRzCistICAgICAgICBwb3BkCisrUE9MX1dpbmVfSW5zdGFsbEZvbnRzKCkgeworKyAg IyBJbnN0YWxsIG1pY3Jvc29mdCBmb250cworKyAgIyBVc2FnZTogUE9MX1dpbmVfSW5zdGFsbEZv bnRzCisrICBwdXNoZCAuCisrICBQT0xfQ2FsbCBQT0xfSW5zdGFsbF9jb3JlZm9udHMKKysgIHBv cGQKKyB9CisgCistU2V0X1NvdW5kSGFyZHdhcmVBY2NlbGVyYXRpb24gKCkKKy17CistCSMgU2V0 IHNvdW5kIGRyaXZlciBoYXJkd2FyZSBhY2NlbGVyYXRpb24KKy0JIyBWYWx1ZXMgOiBGdWxsLCBT dGFuZGFyZCwgQmFzaWMsIEVtdWxhdGlvbgorLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBT b3VuZCBIYXJkd2FyZUFjY2VsZXJhdGlvbiB0byAkMSIKKy0JWyAteiAiJFdJTkVQUkVGSVgiIF0g JiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCistCistCWlmIFsgLW4gIiQx IiBdOyB0aGVuCistCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RTb3Vu ZCcgJ0hhcmR3YXJlQWNjZWxlcmF0aW9uJyAiJDEiCistCWVsc2UKKy0JCSMgRklYTUU6IHNob3Vs ZCB3ZSBkcm9wIHRoZSBuYW1lIGluc3RlYWQ/CistCQlQT0xfRGVidWdfV2FybmluZyAiSGFyZHdh cmUgYWNjZWxlcmF0aW9uIG1vZGUgbWlzc2luZywgc2tpcHBlZCIKKy0JZmkKKytTZXRfU291bmRI YXJkd2FyZUFjY2VsZXJhdGlvbigpIHsKKysgICMgU2V0IHNvdW5kIGRyaXZlciBoYXJkd2FyZSBh Y2NlbGVyYXRpb24KKysgICMgVmFsdWVzIDogRnVsbCwgU3RhbmRhcmQsIEJhc2ljLCBFbXVsYXRp b24KKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFNvdW5kIEhhcmR3YXJlQWNjZWxlcmF0 aW9uIHRvICQxIgorKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJX SU5FUFJFRklYIG5vdCBzZXQiCisrCisrICBpZiBbIC1uICIkMSIgXTsgdGhlbgorKyAgICBQT0xf V2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RTb3VuZCcgJ0hhcmR3YXJlQWNjZWxl cmF0aW9uJyAiJDEiCisrICBlbHNlCisrICAgICMgRklYTUU6IHNob3VsZCB3ZSBkcm9wIHRoZSBu YW1lIGluc3RlYWQ/CisrICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJIYXJkd2FyZSBhY2NlbGVyYXRp b24gbW9kZSBtaXNzaW5nLCBza2lwcGVkIgorKyAgZmkKKyB9CisgCistU2V0X1NvdW5kRW11bERy aXZlciAoKQorLXsKKy0JIyBTZXQgc291bmQgZW11bCBkcml2ZXIKKy0JIyBVc2FnZTogU2V0X1Nv dW5kRW11bERyaXZlcihZfE4pCistCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFNvdW5kIEVt dWxEcml2ZXIgdG8gJDEiCistCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRh bCAiV0lORVBSRUZJWCBub3Qgc2V0IgorLQorLQlpZiBbIC1uICIkMSIgXTsgdGhlbgorLQkJUE9M X1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0U291bmQnICdFbXVsRHJpdmVyJyAi JDEiCistCWVsc2UKKy0JCSMgRklYTUU6IHNob3VsZCB3ZSBkcm9wIHRoZSBuYW1lIGluc3RlYWQ/ CistCQlQT0xfRGVidWdfV2FybmluZyAiU291bmQgZW11bGF0aW9uIG1vZGUgbWlzc2luZywgc2tp cHBlZCIKKy0JZmkKKytTZXRfU291bmRFbXVsRHJpdmVyKCkgeworKyAgIyBTZXQgc291bmQgZW11 bCBkcml2ZXIKKysgICMgVXNhZ2U6IFNldF9Tb3VuZEVtdWxEcml2ZXIoWXxOKQorKyAgUE9MX0Rl YnVnX01lc3NhZ2UgIlNldHRpbmcgU291bmQgRW11bERyaXZlciB0byAkMSIKKysgIFsgLXogIiRX SU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorKwor KyAgaWYgWyAtbiAiJDEiIF07IHRoZW4KKysgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5l UGFpciAnRGlyZWN0U291bmQnICdFbXVsRHJpdmVyJyAiJDEiCisrICBlbHNlCisrICAgICMgRklY TUU6IHNob3VsZCB3ZSBkcm9wIHRoZSBuYW1lIGluc3RlYWQ/CisrICAgIFBPTF9EZWJ1Z19XYXJu aW5nICJTb3VuZCBlbXVsYXRpb24gbW9kZSBtaXNzaW5nLCBza2lwcGVkIgorKyAgZmkKKyB9Cisg CistUE9MX0xvYWRWYXJfUFJPR1JBTUZJTEVTKCkKKy17CistCSMgR2V0IFByb2dyYW0gRmlsZXMg Zm9sZGVyIG5hbWUgYW5kIHN0b3JlIGl0IHRvIFBST0dSQU1GSUxFUyB2YXJpYWJsZQorLQkjIFVz YWdlOiBQT0xfTG9hZFZhcl9QUk9HUkFNRklMRVMKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIkdldHRp bmcgUHJvZ3JhbSBGaWxlcyBuYW1lIgorLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVi dWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKy0KKy0JUFJPR1JBTUZJTEVTPWBQT0xfV2lu ZSBjbWQgL2MgZWNobyAiJVByb2dyYW1GaWxlcyUiIHx0ciAtZCAnXDAxNVwwMTInYAorLQlpZiBb ICIke1BST0dSQU1GSUxFU30iID0gIiVQcm9ncmFtRmlsZXMlIiBdCistCXRoZW4gIyBWYXIgaXMg bm90IGRlZmluZWQgYnkgd2luZQorLQkJZXhwb3J0IFBST0dSQU1GSUxFUz0iUHJvZ3JhbSBGaWxl cyIKKy0JZWxzZQorLQkJZXhwb3J0IFBST0dSQU1GSUxFUz0iJHtQUk9HUkFNRklMRVM6M30iCist CWZpCisrUE9MX0xvYWRWYXJfUFJPR1JBTUZJTEVTKCkgeworKyAgIyBHZXQgUHJvZ3JhbSBGaWxl cyBmb2xkZXIgbmFtZSBhbmQgc3RvcmUgaXQgdG8gUFJPR1JBTUZJTEVTIHZhcmlhYmxlCisrICAj IFVzYWdlOiBQT0xfTG9hZFZhcl9QUk9HUkFNRklMRVMKKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJH ZXR0aW5nIFByb2dyYW0gRmlsZXMgbmFtZSIKKysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBP TF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorKworKyAgUFJPR1JBTUZJTEVTPSQo UE9MX1dpbmUgY21kIC9jIGVjaG8gIiVQcm9ncmFtRmlsZXMlIiB8IHRyIC1kICdcMDE1XDAxMicp CisrICBpZiBbICIke1BST0dSQU1GSUxFU30iID0gIiVQcm9ncmFtRmlsZXMlIiBdOyB0aGVuICMg VmFyIGlzIG5vdCBkZWZpbmVkIGJ5IHdpbmUKKysgICAgZXhwb3J0IFBST0dSQU1GSUxFUz0iUHJv Z3JhbSBGaWxlcyIKKysgIGVsc2UKKysgICAgZXhwb3J0IFBST0dSQU1GSUxFUz0iJHtQUk9HUkFN RklMRVM6M30iCisrICBmaQorIH0KKyAKKy1TZXRfV2luZVdpbmRvd1RpdGxlICgpCisteworLQkj bmFtZSBvZiB3aW5kb3dlZCB0aXRsZTokMQorLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3 aW5kb3cgdGl0bGUiCistCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAi V0lORVBSRUZJWCBub3Qgc2V0IgorK1NldF9XaW5lV2luZG93VGl0bGUoKSB7CisrICAjbmFtZSBv ZiB3aW5kb3dlZCB0aXRsZTokMQorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZG93 IHRpdGxlIgorKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5F UFJFRklYIG5vdCBzZXQiCisgCistCVBPTF9EZWJ1Z19XYXJuaW5nICJTZXRfV2luZVdpbmRvd1Rp dGxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgKCM1MTE4KSIKKysgIFBPTF9EZWJ1Z19XYXJuaW5nICJT ZXRfV2luZVdpbmRvd1RpdGxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgKCM1MTE4KSIKKyB9CisgCist UE9MX0xvYWRWYXJfRGV2aWNlICgpCisteworLQkjIEdldCBHUFUgZGV2aWNlIGlkIGFuZCB2ZW5k b3IgaWQKKy0JIyBVc2FnZTogUE9MX0xvYWRWYXJfRGV2aWNlIFstLW5vbi1pbnRlcmFjdGl2ZV0K Ky0JIyBSZXN1bHRzIGFyZSBzdG9yZWQgaW4gVmVuZG9ySUQgYW5kIERldmljZUlEIHZhcmlhYmxl cworLQorLQlsb2NhbCBJTlRFUkFDVElWRT0xCistCWlmIFsgIiQxIiA9ICItLW5vbi1pbnRlcmFj dGl2ZSIgXTsgdGhlbgorLQkJSU5URVJBQ1RJVkU9JycKKy0JCXNoaWZ0CistCWZpCistCistCVsg IiRJTlRFUkFDVElWRSIgXSAmJiBQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJChldmFsX2dldHRleHQg J1BsZWFzZSB3YWl0IHdoaWxlICRBUFBMSUNBVElPTl9USVRMRSBpcyBzY2FubmluZyB5b3VyIGhh cmR3YXJlJykiICIkVElUTEUiCistCVZHQV9ERVZJQ0VTPSIkKFBPTF9EZXRlY3RWaWRlb0NhcmRz KSIKKy0JIyBNb3JlIHRoYW4gb25lIGNhcmQgYXZhaWxhYmxlPworLQlpZiBncmVwIC1xICd+JyA8 PDwiJFZHQV9ERVZJQ0VTIjsgdGhlbgorLQkJaWYgWyAiJElOVEVSQUNUSVZFIiBdOyB0aGVuCist CQkJbG9jYWwgT0xEX0FQUF9BTlNXRVI9IiRBUFBfQU5TV0VSIgorLQkJCVBPTF9TZXR1cFdpbmRv d19tZW51ICIkKGV2YWxfZ2V0dGV4dCAnU2VsZWN0IHRoZSBtYWluIHZpZGVvY2FyZCB0byByZXBv cnQ6JykiICIkVElUTEUiICIkVkdBX0RFVklDRVMiICJ+IgorLQkJCVZHQV9ERVZJQ0VTPSIkQVBQ X0FOU1dFUiIKKy0JCQlBUFBfQU5TV0VSPSIkT0xEX0FQUF9BTlNXRVIiCistCQllbHNlCistCQkJ IyBDYW4ndCBhc2sgdXNlciwgcGljayBmaXJzdAorLQkJCVZHQV9ERVZJQ0VTPSIke1ZHQV9ERVZJ Q0VTJSV+Kn0iCistCQlmaQorLQlmaQorLQlleHBvcnQgVmVuZG9ySUQ9YGN1dCAtZCd8JyAtZjIg PDw8IiRWR0FfREVWSUNFUyJgCistCWV4cG9ydCBEZXZpY2VJRD1gY3V0IC1kJ3wnIC1mMyA8PDwi JFZHQV9ERVZJQ0VTImAKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIlZlbmRvcklEIDogJFZlbmRvcklE IgorLQlQT0xfRGVidWdfTWVzc2FnZSAiRGV2aWNlSUQgOiAkRGV2aWNlSUQiCisrUE9MX0xvYWRW YXJfRGV2aWNlKCkgeworKyAgIyBHZXQgR1BVIGRldmljZSBpZCBhbmQgdmVuZG9yIGlkCisrICAj IFVzYWdlOiBQT0xfTG9hZFZhcl9EZXZpY2UgWy0tbm9uLWludGVyYWN0aXZlXQorKyAgIyBSZXN1 bHRzIGFyZSBzdG9yZWQgaW4gVmVuZG9ySUQgYW5kIERldmljZUlEIHZhcmlhYmxlcworKworKyAg bG9jYWwgSU5URVJBQ1RJVkU9MQorKyAgaWYgWyAiJDEiID0gIi0tbm9uLWludGVyYWN0aXZlIiBd OyB0aGVuCisrICAgIElOVEVSQUNUSVZFPScnCisrICAgIHNoaWZ0CisrICBmaQorKworKyAgWyAi JElOVEVSQUNUSVZFIiBdICYmIFBPTF9TZXR1cFdpbmRvd193YWl0ICIkKGV2YWxfZ2V0dGV4dCAn UGxlYXNlIHdhaXQgd2hpbGUgJEFQUExJQ0FUSU9OX1RJVExFIGlzIHNjYW5uaW5nIHlvdXIgaGFy ZHdhcmUnKSIgIiRUSVRMRSIKKysgIFZHQV9ERVZJQ0VTPSIkKFBPTF9EZXRlY3RWaWRlb0NhcmRz KSIKKysgICMgTW9yZSB0aGFuIG9uZSBjYXJkIGF2YWlsYWJsZT8KKysgIGlmIGdyZXAgLXEgJ34n IDw8PCIkVkdBX0RFVklDRVMiOyB0aGVuCisrICAgIGlmIFsgIiRJTlRFUkFDVElWRSIgXTsgdGhl bgorKyAgICAgIGxvY2FsIE9MRF9BUFBfQU5TV0VSPSIkQVBQX0FOU1dFUiIKKysgICAgICBQT0xf U2V0dXBXaW5kb3dfbWVudSAiJChldmFsX2dldHRleHQgJ1NlbGVjdCB0aGUgbWFpbiB2aWRlb2Nh cmQgdG8gcmVwb3J0OicpIiAiJFRJVExFIiAiJFZHQV9ERVZJQ0VTIiAifiIKKysgICAgICBWR0Ff REVWSUNFUz0iJEFQUF9BTlNXRVIiCisrICAgICAgQVBQX0FOU1dFUj0iJE9MRF9BUFBfQU5TV0VS IgorKyAgICBlbHNlCisrICAgICAgIyBDYW4ndCBhc2sgdXNlciwgcGljayBmaXJzdAorKyAgICAg IFZHQV9ERVZJQ0VTPSIke1ZHQV9ERVZJQ0VTJSV+Kn0iCisrICAgIGZpCisrICBmaQorKyAgZXhw b3J0IFZlbmRvcklEPSQoY3V0IC1kJ3wnIC1mMiA8PDwiJFZHQV9ERVZJQ0VTIikKKysgIGV4cG9y dCBEZXZpY2VJRD0kKGN1dCAtZCd8JyAtZjMgPDw8IiRWR0FfREVWSUNFUyIpCisrICBQT0xfRGVi dWdfTWVzc2FnZSAiVmVuZG9ySUQgOiAkVmVuZG9ySUQiCisrICBQT0xfRGVidWdfTWVzc2FnZSAi RGV2aWNlSUQgOiAkRGV2aWNlSUQiCisgfQorIAorLVBPTF9EZXRlY3RWaWRlb0NhcmRzICgpIHsK Ky0JIyBEZXRlY3Qga25vd24gdmlkZW9jYXJkcworLQlQT0xfRGVidWdfTWVzc2FnZSAiR2V0dGlu Z3MgR1BVIGluZm9ybWF0aW9ucyIKKy0gICAgICAgIGNhc2UgIiRQT0xfT1MiIGluCistICAgICAg ICAgICAgTGludXh8RnJlZUJTRCkKKy0JCVsgLXggL3Vzci9zYmluL2xzcGNpIF0gJiYgTFNQQ0k9 L3Vzci9zYmluL2xzcGNpIHx8IExTUENJPWxzcGNpCistCQkjIERldmljZSBOYW1lfFZlbmRvciBJ RHxEZXZpY2UgSURcbi4uLgorLSAgICAgICAgICAgICAgICAjIFswMzAwXSA9IFZHQSBjb21wYXRp YmxlIGNvbnRyb2xsZXIsIFswMzAyXSA9IDNEIGNvbnRyb2xsZXIKKy0JCVZHQV9ERVZJQ0VTPWAk TFNQQ0kgLW5uIHwgcGVybCAtbmUgJ2lmICgvXFswMzBbMDJdXF0vKSB7IHMvLipcXTogKC4qKSBc WyhbMC05YS1mXXs0fSk6KFswLTlhLWZdezR9KVxdLiovXDF8XDJ8XDMvOyBwcmludCB9J2AKKy0g ICAgICAgICAgICAgICAgOzsKKy0gICAgICAgICAgICBNYWMpCistCQkjIERldmljZSBOYW1lfFZl bmRvciBJRHxEZXZpY2UgSURcbi4uLgorLQkJVkdBX0RFVklDRVM9YHN5c3RlbV9wcm9maWxlciBT UERpc3BsYXlzRGF0YVR5cGUgfCBwZXJsIC1uZSAncy9eXHMrLy87IGlmKC9DaGlwc2V0IE1vZGVs Oi8pIHsgY2hvbXA7IHMvXlteOl0qOiAvLzsgcHJpbnQgIiRffCIgfSBlbHNpZigvVmVuZG9yOi8p IHsgY2hvbXA7IHMvLipcKDB4KC4qKVwpL1wxLzsgcHJpbnQgIiQxfCIgfSBlbHNpZiAoL0Rldmlj ZSBJRDovKSB7IHMvXlteOl0qOiAweC8vOyBwcmludCB9J2AKKy0gICAgICAgICAgICAgICAgOzsK Ky0gICAgICAgICAgICAqKQorLSAgICAgICAgICAgICAgICBQT0xfRGVidWdfRmF0YWwgIlVuc3Vw cG9zZWQgb3BlcmF0aW5nIHN5c3RlbTogJFBPTF9PUyIKKy0gICAgICAgIGVzYWMKKy0JIyBNb3Jl IHRoYW4gb25lIGNhcmQgYXZhaWxhYmxlPworLQlpZiBbICQod2MgLWwgPDw8IiRWR0FfREVWSUNF UyIpIC1ndCAxIF07IHRoZW4KKy0JCSMgVHJ5IHRvIHB1dCB3aGF0J3MgcHJvYmFibHkgdGhlIG1h aW4gY2FyZCBmaXJzdAorLQkJVkdBX0RFVklDRVM9YGdyZXAgLWlFICdudmlkaWF8YXRpfGFtZCcg PDw8IiRWR0FfREVWSUNFUyI7IGdyZXAgLWlFdiAnbnZpZGlhfGF0aXxhbWQnIDw8PCIkVkdBX0RF VklDRVMiYAorLQlmaQorLQkjIERldmljZSBOYW1lfFZlbmRvciBJRHxEZXZpY2UgSUR+Li4uCist CWVjaG8gLW4gIiRWR0FfREVWSUNFUyJ8dHIgIlxuIiAifiIKKytQT0xfRGV0ZWN0VmlkZW9DYXJk cygpIHsKKysgICMgRGV0ZWN0IGtub3duIHZpZGVvY2FyZHMKKysgIFBPTF9EZWJ1Z19NZXNzYWdl ICJHZXR0aW5ncyBHUFUgaW5mb3JtYXRpb25zIgorKyAgY2FzZSAiJFBPTF9PUyIgaW4KKysgIExp bnV4IHwgRnJlZUJTRCkKKysgICAgWyAteCAvdXNyL3NiaW4vbHNwY2kgXSAmJiBMU1BDST0vdXNy L3NiaW4vbHNwY2kgfHwgTFNQQ0k9bHNwY2kKKysgICAgIyBEZXZpY2UgTmFtZXxWZW5kb3IgSUR8 RGV2aWNlIElEXG4uLi4KKysgICAgIyBbMDMwMF0gPSBWR0EgY29tcGF0aWJsZSBjb250cm9sbGVy LCBbMDMwMl0gPSAzRCBjb250cm9sbGVyCisrICAgIFZHQV9ERVZJQ0VTPSQoJExTUENJIC1ubiB8 IHBlcmwgLW5lICdpZiAoL1xbMDMwWzAyXVxdLykgeyBzLy4qXF06ICguKikgXFsoWzAtOWEtZl17 NH0pOihbMC05YS1mXXs0fSlcXS4qL1wxfFwyfFwzLzsgcHJpbnQgfScpCisrICAgIDs7CisrICBN YWMpCisrICAgICMgRGV2aWNlIE5hbWV8VmVuZG9yIElEfERldmljZSBJRFxuLi4uCisrICAgIFZH QV9ERVZJQ0VTPSQoc3lzdGVtX3Byb2ZpbGVyIFNQRGlzcGxheXNEYXRhVHlwZSB8IHBlcmwgLW5l ICdzL15ccysvLzsgaWYoL0NoaXBzZXQgTW9kZWw6LykgeyBjaG9tcDsgcy9eW146XSo6IC8vOyBw cmludCAiJF98IiB9IGVsc2lmKC9WZW5kb3I6LykgeyBjaG9tcDsgcy8uKlwoMHgoLiopXCkvXDEv OyBwcmludCAiJDF8IiB9IGVsc2lmICgvRGV2aWNlIElEOi8pIHsgcy9eW146XSo6IDB4Ly87IHBy aW50IH0nKQorKyAgICA7OworKyAgKikKKysgICAgUE9MX0RlYnVnX0ZhdGFsICJVbnN1cHBvc2Vk IG9wZXJhdGluZyBzeXN0ZW06ICRQT0xfT1MiCisrICAgIDs7CisrICBlc2FjCisrICAjIE1vcmUg dGhhbiBvbmUgY2FyZCBhdmFpbGFibGU/CisrICBpZiBbICQod2MgLWwgPDw8IiRWR0FfREVWSUNF UyIpIC1ndCAxIF07IHRoZW4KKysgICAgIyBUcnkgdG8gcHV0IHdoYXQncyBwcm9iYWJseSB0aGUg bWFpbiBjYXJkIGZpcnN0CisrICAgIFZHQV9ERVZJQ0VTPSQoCisrICAgICAgZ3JlcCAtaUUgJ252 aWRpYXxhdGl8YW1kJyA8PDwiJFZHQV9ERVZJQ0VTIgorKyAgICAgIGdyZXAgLWlFdiAnbnZpZGlh fGF0aXxhbWQnIDw8PCIkVkdBX0RFVklDRVMiCisrICAgICkKKysgIGZpCisrICAjIERldmljZSBO YW1lfFZlbmRvciBJRHxEZXZpY2UgSUR+Li4uCisrICBlY2hvIC1uICIkVkdBX0RFVklDRVMiIHwg dHIgIlxuIiAifiIKKyB9CisgCistUE9MX0xvYWRWYXJfU2NyZWVuUmVzb2x1dGlvbiAoKQorLXsK Ky0JaWYgWyAiJFBPTF9PUyIgPSAiTGludXgiIF0gfHwgWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIg XTsgdGhlbgorLQkJbG9jYWwgUkVTT0xVVElPTj0iJCh4ZHB5aW5mbyB8IGdyZXAgZGltZW5zaW9u cyB8IGF3ayAne3ByaW50ICQyfScpIgorLQkJZXhwb3J0IFNjcmVlbldpZHRoPSIkKGVjaG8gJFJF U09MVVRJT04gfCBjdXQgLWR4IC1mMSkiCistCQlleHBvcnQgU2NyZWVuSGVpZ2h0PSIkKGVjaG8g JFJFU09MVVRJT04gfCBjdXQgLWR4IC1mMikiCistCWZpCistCWlmIFsgIiRQT0xfT1MiID0gIk1h YyIgXTsgdGhlbgorLQkJZXhwb3J0IFNjcmVlbldpZHRoPSIkKC91c3Ivc2Jpbi9zeXN0ZW1fcHJv ZmlsZXIgU1BEaXNwbGF5c0RhdGFUeXBlIHwgZ3JlcCBSZXNvbHV0aW9ufCBhd2sgJ3twcmludCAk Mn0nKSIKKy0JCWV4cG9ydCBTY3JlZW5IZWlnaHQ9IiQoL3Vzci9zYmluL3N5c3RlbV9wcm9maWxl ciBTUERpc3BsYXlzRGF0YVR5cGUgfCBncmVwIFJlc29sdXRpb258IGF3ayAne3ByaW50ICQ0fScp IgorLQlmaQorLQlQT0xfRGVidWdfTWVzc2FnZSAiU2NyZWVuIHdpZHRoOiAkU2NyZWVuV2lkdGgi CistCVBPTF9EZWJ1Z19NZXNzYWdlICJTY3JlZW4gaGVpZ2h0OiAkU2NyZWVuSGVpZ2h0IgorK1BP TF9Mb2FkVmFyX1NjcmVlblJlc29sdXRpb24oKSB7CisrICBpZiBbICIkUE9MX09TIiA9ICJMaW51 eCIgXSB8fCBbICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdOyB0aGVuCisrICAgIGxvY2FsIFJFU09M VVRJT049IiQoeGRweWluZm8gfCBncmVwIGRpbWVuc2lvbnMgfCBhd2sgJ3twcmludCAkMn0nKSIK KysgICAgZXhwb3J0IFNjcmVlbldpZHRoPSIkKGVjaG8gJFJFU09MVVRJT04gfCBjdXQgLWR4IC1m MSkiCisrICAgIGV4cG9ydCBTY3JlZW5IZWlnaHQ9IiQoZWNobyAkUkVTT0xVVElPTiB8IGN1dCAt ZHggLWYyKSIKKysgIGZpCisrICBpZiBbICIkUE9MX09TIiA9ICJNYWMiIF07IHRoZW4KKysgICAg ZXhwb3J0IFNjcmVlbldpZHRoPSIkKC91c3Ivc2Jpbi9zeXN0ZW1fcHJvZmlsZXIgU1BEaXNwbGF5 c0RhdGFUeXBlIHwgZ3JlcCBSZXNvbHV0aW9uIHwgYXdrICd7cHJpbnQgJDJ9JykiCisrICAgIGV4 cG9ydCBTY3JlZW5IZWlnaHQ9IiQoL3Vzci9zYmluL3N5c3RlbV9wcm9maWxlciBTUERpc3BsYXlz RGF0YVR5cGUgfCBncmVwIFJlc29sdXRpb24gfCBhd2sgJ3twcmludCAkNH0nKSIKKysgIGZpCisr ICBQT0xfRGVidWdfTWVzc2FnZSAiU2NyZWVuIHdpZHRoOiAkU2NyZWVuV2lkdGgiCisrICBQT0xf RGVidWdfTWVzc2FnZSAiU2NyZWVuIGhlaWdodDogJFNjcmVlbkhlaWdodCIKKyB9CisgCistUE9M X1dpbmVfU2V0VmlkZW9Ecml2ZXIoKQorLXsKKy0JIyBTZXQgd2luZSB2aWRlbyBkcml2ZXIKKy0J IyBVc2FnZSBQT0xfV2luZV9TZXRWaWRlb0RyaXZlcgorLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0 IHdpbmUgdmlkZW8gZHJpdmVyIgorLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdf RmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKy0JUE9MX0xvYWRWYXJfRGV2aWNlCistCURSVklE PSJ2Z2EuZGxsIgorLQlbICIkVmVuZG9ySUQiID0gIjEwZGUiIF0gJiYgRFJWSUQ9Im52NF9kaXNw LmRsbCIKKy0JWyAiJFZlbmRvcklEIiA9ICIxMDAyIiBdICYmIERSVklEPSJhdGkyZHZhZy5kbGwi CistCVsgIiRWZW5kb3JJRCIgPSAiODA4NiIgXSAmJiBEUlZJRD0iaWc0aWNkMzIuZGxsIgorLQlQ T0xfRGVidWdfTWVzc2FnZSAiRGV0ZWN0ZWQgdmlkZW8gZHJpdmVyOiAkRFJWSUQiCistCistCVBP TF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5IFZHQV9JRF9maXggPDwtIF9FT0ZJTklfCisrUE9MX1dpbmVf U2V0VmlkZW9Ecml2ZXIoKSB7CisrICAjIFNldCB3aW5lIHZpZGVvIGRyaXZlcgorKyAgIyBVc2Fn ZSBQT0xfV2luZV9TZXRWaWRlb0RyaXZlcgorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldCB3aW5l IHZpZGVvIGRyaXZlciIKKysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRh bCAiV0lORVBSRUZJWCBub3Qgc2V0IgorKyAgUE9MX0xvYWRWYXJfRGV2aWNlCisrICBEUlZJRD0i dmdhLmRsbCIKKysgIFsgIiRWZW5kb3JJRCIgPSAiMTBkZSIgXSAmJiBEUlZJRD0ibnY0X2Rpc3Au ZGxsIgorKyAgWyAiJFZlbmRvcklEIiA9ICIxMDAyIiBdICYmIERSVklEPSJhdGkyZHZhZy5kbGwi CisrICBbICIkVmVuZG9ySUQiID0gIjgwODYiIF0gJiYgRFJWSUQ9ImlnNGljZDMyLmRsbCIKKysg IFBPTF9EZWJ1Z19NZXNzYWdlICJEZXRlY3RlZCB2aWRlbyBkcml2ZXI6ICREUlZJRCIKKysKKysg IFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5IFZHQV9JRF9maXggPDwtX0VPRklOSV8KKyAJW0hLRVlf Q1VSUkVOVF9VU0VSXFxTb2Z0d2FyZVxcV2luZVxcRGlyZWN0M0RdCisgCSJWaWRlb1BDSVZlbmRv cklEIj1kd29yZDowMDAwJFZlbmRvcklECisgCSJWaWRlb1BDSURldmljZUlEIj1kd29yZDowMDAw JERldmljZUlECitAQCAtNDY3LDgwMCArNDUxLDc3NyBAQCBQT0xfV2luZV9TZXRWaWRlb0RyaXZl cigpCisgCV9FT0ZJTklfCisgfQorIAorLVBPTF9XaW5lX0RldGVjdENhcmQoKQorLXsKKy0JIyBT ZXQgd2luZSB2aWRlbyBkcml2ZXIKKy0JIyBVc2FnZSBQT0xfV2luZV9EZXRlY3RDYXJkCistCVBP TF9EZWJ1Z19NZXNzYWdlICJEZXRlY3RpbmcgdmlkZW8gY2FyZCIKKy0JWyAteiAiJFdJTkVQUkVG SVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCistCVBPTF9Mb2Fk VmFyX0RldmljZQorLQlEUlZJRD0iT1RIRVIiCistCVsgIiRWZW5kb3JJRCIgPSAiMTBkZSIgXSAm JiBEUlZJRD0iTlZJRElBIgorLQlbICIkVmVuZG9ySUQiID0gIjEwMDIiIF0gJiYgRFJWSUQ9IkFU SSIKKy0JWyAiJFZlbmRvcklEIiA9ICI4MDg2IiBdICYmIERSVklEPSJJTlRFTCIKKy0JUE9MX0Rl YnVnX01lc3NhZ2UgIkRldGVjdGVkIHZpZGVvIGNhcmQ6ICREUlZJRCIKKy0KKy0JZWNobyAkRFJW SUQKKytQT0xfV2luZV9EZXRlY3RDYXJkKCkgeworKyAgIyBTZXQgd2luZSB2aWRlbyBkcml2ZXIK KysgICMgVXNhZ2UgUE9MX1dpbmVfRGV0ZWN0Q2FyZAorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkRl dGVjdGluZyB2aWRlbyBjYXJkIgorKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVn X0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisrICBQT0xfTG9hZFZhcl9EZXZpY2UKKysgIERS VklEPSJPVEhFUiIKKysgIFsgIiRWZW5kb3JJRCIgPSAiMTBkZSIgXSAmJiBEUlZJRD0iTlZJRElB IgorKyAgWyAiJFZlbmRvcklEIiA9ICIxMDAyIiBdICYmIERSVklEPSJBVEkiCisrICBbICIkVmVu ZG9ySUQiID0gIjgwODYiIF0gJiYgRFJWSUQ9IklOVEVMIgorKyAgUE9MX0RlYnVnX01lc3NhZ2Ug IkRldGVjdGVkIHZpZGVvIGNhcmQ6ICREUlZJRCIKKysKKysgIGVjaG8gJERSVklECisgfQorIAor LQorLQorLVBPTF9BdXRvV2luZSAoKQorLXsKKy0JIyBEZXRlY3QgaWYgdGhlIGZpbGUgaXMgYSAu ZXhlIG9yIGEgLm1zaSBmaWxlIGFuZCBydW4gaXQgd2l0aCBQT0xfV2luZQorLQkjIFNhbWUgdXNh Z2UgdGhhbiAid2luZSIKKy0JU0VUVVBfUEFUSD0iJEAiCistCSMgcmVtb3ZlIGV2ZXJ5dGhpbmcg dXAgdG8gdGhlIGxhc3QgZG90CistCWV4dGVuc2lvbj0iJHtTRVRVUF9QQVRIIyMqLn0iCistCWlm IFsgIiRleHRlbnNpb24iID0gIm1zaSIgXQorLQl0aGVuCistCQlQT0xfV2luZSBtc2lleGVjIC9p ICIkU0VUVVBfUEFUSCIKKy0JZWxzZQorLQkJIyBGSVhNRSAvdW5peD8KKy0JCVBPTF9XaW5lICIk U0VUVVBfUEFUSCIKKy0JZmkKKytQT0xfQXV0b1dpbmUoKSB7CisrICAjIERldGVjdCBpZiB0aGUg ZmlsZSBpcyBhIC5leGUgb3IgYSAubXNpIGZpbGUgYW5kIHJ1biBpdCB3aXRoIFBPTF9XaW5lCisr ICAjIFNhbWUgdXNhZ2UgdGhhbiAid2luZSIKKysgIFNFVFVQX1BBVEg9IiRAIgorKyAgIyByZW1v dmUgZXZlcnl0aGluZyB1cCB0byB0aGUgbGFzdCBkb3QKKysgIGV4dGVuc2lvbj0iJHtTRVRVUF9Q QVRIIyMqLn0iCisrICBpZiBbICIkZXh0ZW5zaW9uIiA9ICJtc2kiIF07IHRoZW4KKysgICAgUE9M X1dpbmUgbXNpZXhlYyAvaSAiJFNFVFVQX1BBVEgiCisrICBlbHNlCisrICAgICMgRklYTUUgL3Vu aXg/CisrICAgIFBPTF9XaW5lICIkU0VUVVBfUEFUSCIKKysgIGZpCisgfQorIAorLVBPTF9XaW5l ICgpCisteworLQkjIFJ1biB0aGUgZ29vZCB3aW5ldmVyc2lvbiBhbmQgc3RvcmUgdGhlIHJlc3Vs dCB0byBhIGxvZ2ZpbGUKKy0JIyBTYW1lIHVzYWdlIHRoYW4gIndpbmUiCistCW1rZGlyIC1wICIk V0lORVBSRUZJWCIKKy0JdG91Y2ggIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIKKy0JbG9j YWwgTm9FcnJvcnMKKy0JaWYgWyAiJDEiID0gIi0taWdub3JlLWVycm9ycyIgXTsgdGhlbgorLQkJ Tm9FcnJvcnM9IlRydWUiCistCQlzaGlmdAorLQlmaQorLQorLQlpZiBbICEgIiQoUE9MX0NvbmZp Z19SZWFkIE5PX0ZTQ0hFQ0spIiA9ICJUUlVFIiBdOyB0aGVuCistCQlpZiBbICIkMSIgPSAic3Rh cnQiIF07IHRoZW4KKy0JCQlpZiBbICIkMiIgPSAiL3VuaXgiIF07IHRoZW4KKy0JCQkJUE9MX1N5 c3RlbV9DaGVja0ZTICIkMyIKKy0JCQllbHNlCistCQkJCVBPTF9TeXN0ZW1fQ2hlY2tGUyAiJDIi CistCQkJZmkKKy0JCWVsc2UKKy0JCQlQT0xfU3lzdGVtX0NoZWNrRlMgIiQxIgorLQkJZmkKKy0J ZWxzZQorLQkJUE9MX0RlYnVnX01lc3NhZ2UgIioqIEZpbGVzeXN0ZW0gY2hlY2tzIGRpc2FibGVk ICoqIgorLQlmaQorLQorLQlQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgorLQlQT0xfRGVidWdf TWVzc2FnZSAiUnVubmluZyB3aW5lLSRQT0xfV0lORVZFUlNJT04gIiRAIiAoV29ya2luZyBkaXJl Y3RvcnkgOiAkUFdEKSIKKy0JUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJSdW5uaW5nIHdpbmUtJFBP TF9XSU5FVkVSU0lPTiAiJEAiIChXb3JraW5nIGRpcmVjdG9yeSA6ICRQV0QpIgorLQorLSAgICAg ICAgIyBFaXRoZXIgdGhhdCBvciBtb25pdG9yICJlcnI6cHJvY2VzczpjcmVhdGVfcHJvY2VzcyBz dGFydGluZyA2NC1iaXQgcHJvY2VzcyBMInh4eCIgbm90IHN1cHBvcnRlZCBpbiAzMi1iaXQgd2lu ZXByZWZpeFxud2luZTogQmFkIEVYRSBmb3JtYXQgZm9yIHh4eC4iIGluIGxvZ3MKKy0gICAgICAg IGlmIFsgIiRQT0xfQVJDSCIgPSAieDg2IiAtYSAtZSAiJDEiIF07IHRoZW4KKy0gICAgICAgICAg ICBsb2NhbCBFWEVGSUxFPSIkMSIKKy0gICAgICAgICAgICBpZiBQT0xfU3lzdGVtX2lzNjRiaXQg IiRFWEVGSUxFIjsgdGhlbgorLSAgICAgICAgICAgICAgICBOT0JVR1JFUE9SVD0iVFJVRSIgIyB1 c2VyIG1pc3Rha2UKKy0gICAgICAgICAgICAgICAgUE9MX0RlYnVnX0ZhdGFsICIkKGV2YWxfZ2V0 dGV4dCAnU3RhcnRpbmcgNjQtYml0IHByb2Nlc3MgJEVYRUZJTEUgaXMgbm90IHN1cHBvcnRlZCBp biAzMi1iaXQgdmlydHVhbCBkcml2ZXMnKSIKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgZmkK Ky0KKy0gICAgICAgIGlmIFsgISAiJFdJTkVNRU5VQlVJTERFUl9BTEVSVCIgXTsgdGhlbgorLQkJ UE9MX0RlYnVnX01lc3NhZ2UgIk5vdGljZTogUGxheU9uTGludXggZGVsaWJlcmF0ZWx5IGRpc2Fi bGVzIHdpbmVtZW51YnVpbGRlci4gU2VlIGh0dHA6Ly93d3cucGxheW9ubGludXguY29tL2ZyL3Bh Z2UtMjYtV2luZW1lbnVidWlsZGVyLmh0bWwiCistCQlXSU5FTUVOVUJVSUxERVJfQUxFUlQ9IkRv bmUiCistCWZpCistCWlmIFsgIiQxIiA9ICJyZWdlZGl0IiAtYSAhICIkMiIgPSAiIiBdOyB0aGVu CistCQlpZiBbIC1lICIkMiIgXTsgdGhlbgorLQkJCVBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAiQ29u dGVudCBvZiAkMiIKKy0JCQkoZWNobyAnLS0tLS0tLS0tLS0nCistCQkJIGNhdCAiJDIiCistCQkJ IGVjaG8gJy0tLS0tLS0tLS0tJykgPj4gIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIKKy0J CWVsc2UKKy0JCQlQT0xfRGVidWdfTG9nVG9QcmVmaXggInJlZ2VkaXQgcGFyYW1ldGVyICckMicg aXMgbm90IGEgZmlsZSwgbm90IGR1bXBlZCB0byBsb2ciCistCQlmaQorLQllbGlmIFsgIiQxIiA9 ICJyZWdlZGl0IiBdOyB0aGVuCistCQlQT0xfRGVidWdfTG9nVG9QcmVmaXggIlVzZXIgbW9kaWZp ZWQgc29tZXRoaW5nIGluIHRoZSByZWdpc3RyeSBtYW51YWxseSIKKy0JZmkKKy0KKy0KKy0JaWYg WyAiJFBPTF9PUyIgPSAiTGludXgiIF0gfHwgWyAiJFBPTF9PUyIgPSAiTWFjIiBdOworLQl0aGVu CistCQlpZiBbICIkTE9HRklMRSIgPSAiL2Rldi9udWxsIiBdOyB0aGVuCistCQkJJEJFRk9SRV9X SU5FICQoUE9MX0NvbmZpZ19SZWFkIEJFRk9SRV9XSU5FKSB3aW5lICIkQCIgIDI+ID4oZ3JlcCAt diBtZW51YnVpbGRlciAtLWxpbmUtYnVmZmVyZWQgfCB0ZWUgLWEgIiRXSU5FUFJFRklYL3BsYXlv bmxpbnV4LmxvZyIgPiYyKSA+ID4odGVlIC1hICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ci KQorLQkJCWVycm9ycz0kPworLQkJZWxzZQorLQkJCSRCRUZPUkVfV0lORSAkKFBPTF9Db25maWdf UmVhZCBCRUZPUkVfV0lORSkgd2luZSAiJEAiIDI+ID4oZ3JlcCAtdiBtZW51YnVpbGRlciAtLWxp bmUtYnVmZmVyZWQgfCB0ZWUgLWEgIiRMT0dGSUxFIiAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgu bG9nIiA+JjIpID4gPih0ZWUgLWEgIiRMT0dGSUxFIiAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgu bG9nIikKKy0JCQllcnJvcnM9JD8KKy0JCWZpCistCWVsc2UKKy0JCSMgRklYTUUKKy0JCSRCRUZP UkVfV0lORSAkKFBPTF9Db25maWdfUmVhZCBCRUZPUkVfV0lORSkgd2luZSAiJEAiICAyPiAiJFdJ TkVQUkVGSVgvcGxheW9ubGludXgubG9nIiA+ICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ci CistCQllcnJvcnM9JD8KKy0JZmkKKy0KKy0JaWYgWyAiJGVycm9ycyIgIT0gMCAtYSAiJE5vRXJy b3JzIiAhPSAiVHJ1ZSIgLWEgIiRQT0xfSWdub3JlV2luZUVycm9ycyIgIT0gIlRydWUiIF07IHRo ZW4KKy0JCVBPTF9EZWJ1Z19FcnJvciAiJChldmFsX2dldHRleHQgJ1dpbmUgc2VlbXMgdG8gaGF2 ZSBjcmFzaGVkXG5cbklmIHlvdXIgcHJvZ3JhbSBpcyBydW5uaW5nLCBqdXN0IGlnbm9yZSB0aGlz IG1lc3NhZ2UnKSIKKy0JZmkKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIldpbmUgcmV0dXJuOiAkZXJy b3JzIgorLQlyZXR1cm4gJGVycm9ycworK1BPTF9XaW5lKCkgeworKyAgIyBSdW4gdGhlIGdvb2Qg d2luZXZlcnNpb24gYW5kIHN0b3JlIHRoZSByZXN1bHQgdG8gYSBsb2dmaWxlCisrICAjIFNhbWUg dXNhZ2UgdGhhbiAid2luZSIKKysgIG1rZGlyIC1wICIkV0lORVBSRUZJWCIKKysgIHRvdWNoICIk V0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciCisrICBsb2NhbCBOb0Vycm9ycworKyAgaWYgWyAi JDEiID0gIi0taWdub3JlLWVycm9ycyIgXTsgdGhlbgorKyAgICBOb0Vycm9ycz0iVHJ1ZSIKKysg ICAgc2hpZnQKKysgIGZpCisrCisrICBpZiBbICEgIiQoUE9MX0NvbmZpZ19SZWFkIE5PX0ZTQ0hF Q0spIiA9ICJUUlVFIiBdOyB0aGVuCisrICAgIGlmIFsgIiQxIiA9ICJzdGFydCIgXTsgdGhlbgor KyAgICAgIGlmIFsgIiQyIiA9ICIvdW5peCIgXTsgdGhlbgorKyAgICAgICAgUE9MX1N5c3RlbV9D aGVja0ZTICIkMyIKKysgICAgICBlbHNlCisrICAgICAgICBQT0xfU3lzdGVtX0NoZWNrRlMgIiQy IgorKyAgICAgIGZpCisrICAgIGVsc2UKKysgICAgICBQT0xfU3lzdGVtX0NoZWNrRlMgIiQxIgor KyAgICBmaQorKyAgZWxzZQorKyAgICBQT0xfRGVidWdfTWVzc2FnZSAiKiogRmlsZXN5c3RlbSBj aGVja3MgZGlzYWJsZWQgKioiCisrICBmaQorKworKyAgUE9MX1dpbmVfQXV0b1NldFZlcnNpb25F bnYKKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJSdW5uaW5nIHdpbmUtJFBPTF9XSU5FVkVSU0lPTiAi JEAiIChXb3JraW5nIGRpcmVjdG9yeSA6ICRQV0QpIgorKyAgUE9MX0RlYnVnX0xvZ1RvUHJlZml4 ICJSdW5uaW5nIHdpbmUtJFBPTF9XSU5FVkVSU0lPTiAiJEAiIChXb3JraW5nIGRpcmVjdG9yeSA6 ICRQV0QpIgorKworKyAgIyBFaXRoZXIgdGhhdCBvciBtb25pdG9yICJlcnI6cHJvY2VzczpjcmVh dGVfcHJvY2VzcyBzdGFydGluZyA2NC1iaXQgcHJvY2VzcyBMInh4eCIgbm90IHN1cHBvcnRlZCBp biAzMi1iaXQgd2luZXByZWZpeFxud2luZTogQmFkIEVYRSBmb3JtYXQgZm9yIHh4eC4iIGluIGxv Z3MKKysgIGlmIFsgIiRQT0xfQVJDSCIgPSAieDg2IiAtYSAtZSAiJDEiIF07IHRoZW4KKysgICAg bG9jYWwgRVhFRklMRT0iJDEiCisrICAgIGlmIFBPTF9TeXN0ZW1faXM2NGJpdCAiJEVYRUZJTEUi OyB0aGVuCisrICAgICAgTk9CVUdSRVBPUlQ9IlRSVUUiICMgdXNlciBtaXN0YWtlCisrICAgICAg UE9MX0RlYnVnX0ZhdGFsICIkKGV2YWxfZ2V0dGV4dCAnU3RhcnRpbmcgNjQtYml0IHByb2Nlc3Mg JEVYRUZJTEUgaXMgbm90IHN1cHBvcnRlZCBpbiAzMi1iaXQgdmlydHVhbCBkcml2ZXMnKSIKKysg ICAgZmkKKysgIGZpCisrCisrICBpZiBbICEgIiRXSU5FTUVOVUJVSUxERVJfQUxFUlQiIF07IHRo ZW4KKysgICAgUE9MX0RlYnVnX01lc3NhZ2UgIk5vdGljZTogUGxheU9uTGludXggZGVsaWJlcmF0 ZWx5IGRpc2FibGVzIHdpbmVtZW51YnVpbGRlci4gU2VlIGh0dHA6Ly93d3cucGxheW9ubGludXgu Y29tL2ZyL3BhZ2UtMjYtV2luZW1lbnVidWlsZGVyLmh0bWwiCisrICAgIFdJTkVNRU5VQlVJTERF Ul9BTEVSVD0iRG9uZSIKKysgIGZpCisrICBpZiBbICIkMSIgPSAicmVnZWRpdCIgLWEgISAiJDIi ID0gIiIgXTsgdGhlbgorKyAgICBpZiBbIC1lICIkMiIgXTsgdGhlbgorKyAgICAgIFBPTF9EZWJ1 Z19Mb2dUb1ByZWZpeCAiQ29udGVudCBvZiAkMiIKKysgICAgICAoCisrICAgICAgICBlY2hvICct LS0tLS0tLS0tLScKKysgICAgICAgIGNhdCAiJDIiCisrICAgICAgICBlY2hvICctLS0tLS0tLS0t LScKKysgICAgICApID4+IiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIKKysgICAgZWxzZQor KyAgICAgIFBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAicmVnZWRpdCBwYXJhbWV0ZXIgJyQyJyBpcyBu b3QgYSBmaWxlLCBub3QgZHVtcGVkIHRvIGxvZyIKKysgICAgZmkKKysgIGVsaWYgWyAiJDEiID0g InJlZ2VkaXQiIF07IHRoZW4KKysgICAgUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJVc2VyIG1vZGlm aWVkIHNvbWV0aGluZyBpbiB0aGUgcmVnaXN0cnkgbWFudWFsbHkiCisrICBmaQorKworKyAgW1sg JE9TWF9WRVJTSU9OIC1nZSAxOSBdXSAmJiBXSU5FQ01EPSJ3aW5lMzJvbjY0IiB8fCBXSU5FQ01E PSJ3aW5lIgorKyAgW1sgJE9TWF9WRVJTSU9OIC1nZSAxOSBdXSAmJiBbWyAtZSAiJDEiIF1dICYm IHhhdHRyIC1kIGNvbS5hcHBsZS5xdWFyYW50aW5lICIkMSIKKysgIGlmIFsgIiRQT0xfT1MiID0g IkxpbnV4IiBdIHx8IFsgIiRQT0xfT1MiID0gIk1hYyIgXTsgdGhlbgorKyAgICBpZiBbICIkTE9H RklMRSIgPSAiL2Rldi9udWxsIiBdOyB0aGVuCisrICAgICAgJEJFRk9SRV9XSU5FICQoUE9MX0Nv bmZpZ19SZWFkIEJFRk9SRV9XSU5FKSAkV0lORUNNRCAiJEAiIDI+ID4oZ3JlcCAtdiBtZW51YnVp bGRlciAtLWxpbmUtYnVmZmVyZWQgfCB0ZWUgLWEgIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4Lmxv ZyIgPiYyKSA+ID4odGVlIC1hICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciKQorKyAgICAg IGVycm9ycz0kPworKyAgICBlbHNlCisrICAgICAgJEJFRk9SRV9XSU5FICQoUE9MX0NvbmZpZ19S ZWFkIEJFRk9SRV9XSU5FKSAkV0lORUNNRCAiJEAiIDI+ID4oZ3JlcCAtdiBtZW51YnVpbGRlciAt LWxpbmUtYnVmZmVyZWQgfCB0ZWUgLWEgIiRMT0dGSUxFIiAiJFdJTkVQUkVGSVgvcGxheW9ubGlu dXgubG9nIiA+JjIpID4gPih0ZWUgLWEgIiRMT0dGSUxFIiAiJFdJTkVQUkVGSVgvcGxheW9ubGlu dXgubG9nIikKKysgICAgICBlcnJvcnM9JD8KKysgICAgZmkKKysgIGVsc2UKKysgICAgIyBGSVhN RQorKyAgICAkQkVGT1JFX1dJTkUgJChQT0xfQ29uZmlnX1JlYWQgQkVGT1JFX1dJTkUpICRXSU5F Q01EICIkQCIgMj4iJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIiA+IiRXSU5FUFJFRklYL3Bs YXlvbmxpbnV4LmxvZyIKKysgICAgZXJyb3JzPSQ/CisrICBmaQorKworKyAgaWYgWyAiJGVycm9y cyIgIT0gMCAtYSAiJE5vRXJyb3JzIiAhPSAiVHJ1ZSIgLWEgIiRQT0xfSWdub3JlV2luZUVycm9y cyIgIT0gIlRydWUiIF07IHRoZW4KKysgICAgUE9MX0RlYnVnX0Vycm9yICIkKGV2YWxfZ2V0dGV4 dCAnV2luZSBzZWVtcyB0byBoYXZlIGNyYXNoZWRcblxuSWYgeW91ciBwcm9ncmFtIGlzIHJ1bm5p bmcsIGp1c3QgaWdub3JlIHRoaXMgbWVzc2FnZScpIgorKyAgZmkKKysgIFBPTF9EZWJ1Z19NZXNz YWdlICJXaW5lIHJldHVybjogJGVycm9ycyIKKysgIHJldHVybiAkZXJyb3JzCisgfQorIAorLVBP TF9XaW5lX1NlbGVjdFByZWZpeCgpCisteworLQkjIFNlbGVjdCBhIHdpbmVwcmVmaXggYW5kIHJl bW92ZSB1bmV4cGVjdGVkIGNoYXJzCistCSMgVXNhZ2U6IFBPTF9XaW5lX1NlbGVjdFByZWZpeCBb cHJlZml4bmFtZV0KKy0JUFJFRk5BTUU9YHByaW50ZiAiJDEifCB0ciAtYyBbW2EtekEtWjAtOV1c Ll0gJ18nYAorLQlQT0xfRGVidWdfTWVzc2FnZSAiU2VsZWN0aW5nIHByZWZpeDogJFBSRUZOQU1F IgorLSAgICAgICAgIyBFbXB0eSBuYW1lIGlzIGRhbmdlcm91cworLSAgICAgICAgWyAteiAiJFBS RUZOQU1FIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiQmFkIG9yIGVtcHR5IHZpcnR1YWwgZHJpdmUg bmFtZSBzZWxlY3RlZCIKKy0JZXhwb3J0IFdJTkVQUkVGSVg9IiRQT0xfVVNFUl9ST09UL3dpbmVw cmVmaXgvJFBSRUZOQU1FIgorLQlleHBvcnQgRE9TUFJFRklYPSIkV0lORVBSRUZJWCIKKy0JaWYg WyAtZSAiJFdJTkVQUkVGSVgvcGxheW9ubGludXguY2ZnIiBdOyB0aGVuCistCQlleHBvcnQgUE9M X1dJTkVWRVJTSU9OPSIkKFBPTF9Db25maWdfUHJlZml4UmVhZCBWRVJTSU9OKSIKKy0JCVBPTF9T eXN0ZW1fU2V0QXJjaCAiJChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgQVJDSCkiICJkZXRlY3RlZCIK Ky0JZWxzZQorLQkJdG91Y2ggIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmNmZyIgMj4gL2Rldi9u dWxsCistCWZpCistCistCSMjIEluIGZhY3QgaXQncyBhIGJhZCBpZGVhCistCSNpZiBbICIkKFBP TF9Db25maWdfUHJlZml4UmVhZCBBUkNIKSIgPSAieDg2IiBdOyB0aGVuICMjIENvbW1lIGNhLCBw YXMgZGUgY29uZmxpdHMKKy0JIwlleHBvcnQgV0lORUFSQ0g9d2luMzIKKy0JI2ZpCisrUE9MX1dp bmVfU2VsZWN0UHJlZml4KCkgeworKyAgIyBTZWxlY3QgYSB3aW5lcHJlZml4IGFuZCByZW1vdmUg dW5leHBlY3RlZCBjaGFycworKyAgIyBVc2FnZTogUE9MX1dpbmVfU2VsZWN0UHJlZml4IFtwcmVm aXhuYW1lXQorKyAgUFJFRk5BTUU9JChwcmludGYgIiQxIiB8IHRyIC1jIFtbYS16QS1aMC05XVwu XSAnXycpCisrICBQT0xfRGVidWdfTWVzc2FnZSAiU2VsZWN0aW5nIHByZWZpeDogJFBSRUZOQU1F IgorKyAgIyBFbXB0eSBuYW1lIGlzIGRhbmdlcm91cworKyAgWyAteiAiJFBSRUZOQU1FIiBdICYm IFBPTF9EZWJ1Z19GYXRhbCAiQmFkIG9yIGVtcHR5IHZpcnR1YWwgZHJpdmUgbmFtZSBzZWxlY3Rl ZCIKKysgIGV4cG9ydCBXSU5FUFJFRklYPSIkUE9MX1VTRVJfUk9PVC93aW5lcHJlZml4LyRQUkVG TkFNRSIKKysgIGV4cG9ydCBET1NQUkVGSVg9IiRXSU5FUFJFRklYIgorKyAgaWYgWyAtZSAiJFdJ TkVQUkVGSVgvcGxheW9ubGludXguY2ZnIiBdOyB0aGVuCisrICAgIGV4cG9ydCBQT0xfV0lORVZF UlNJT049IiQoUE9MX0NvbmZpZ19QcmVmaXhSZWFkIFZFUlNJT04pIgorKyAgICBQT0xfU3lzdGVt X1NldEFyY2ggIiQoUE9MX0NvbmZpZ19QcmVmaXhSZWFkIEFSQ0gpIiAiZGV0ZWN0ZWQiCisrICBl bHNlCisrICAgIHRvdWNoICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5jZmciIDI+L2Rldi9udWxs CisrICBmaQorKworKyAgIyMgSW4gZmFjdCBpdCdzIGEgYmFkIGlkZWEKKysgICNpZiBbICIkKFBP TF9Db25maWdfUHJlZml4UmVhZCBBUkNIKSIgPSAieDg2IiBdOyB0aGVuICMjIENvbW1lIGNhLCBw YXMgZGUgY29uZmxpdHMKKysgICMJZXhwb3J0IFdJTkVBUkNIPXdpbjMyCisrICAjZmkKKyB9Cist UE9MX1dpbmVfUHJlZml4RXhpc3RzKCkKKy17CistCSMgQ2hlY2tzIGlmIGEgcHJlZml4IGV4aXN0 cworLQkjIFVzYWdlOiBQT0xfV2luZV9QcmVmaXhFeGlzdHMKKy0JIyBSZXR1cm4gVHJ1ZSBvciBG YWxzZQorLQlQUkVGTkFNRT1gcHJpbnRmICIkMSJ8IHRyIC1jIFtbYS16QS1aMC05XVwuXSAnXydg CistCVsgLWQgIiRQT0xfVVNFUl9ST09UL3dpbmVwcmVmaXgvJFBSRUZOQU1FL2RyaXZlX2MiIF0g JiYgZWNobyAiVHJ1ZSIgfHwgZWNobyAiRmFsc2UiCisrUE9MX1dpbmVfUHJlZml4RXhpc3RzKCkg eworKyAgIyBDaGVja3MgaWYgYSBwcmVmaXggZXhpc3RzCisrICAjIFVzYWdlOiBQT0xfV2luZV9Q cmVmaXhFeGlzdHMKKysgICMgUmV0dXJuIFRydWUgb3IgRmFsc2UKKysgIFBSRUZOQU1FPSQocHJp bnRmICIkMSIgfCB0ciAtYyBbW2EtekEtWjAtOV1cLl0gJ18nKQorKyAgWyAtZCAiJFBPTF9VU0VS X1JPT1Qvd2luZXByZWZpeC8kUFJFRk5BTUUvZHJpdmVfYyIgXSAmJiBlY2hvICJUcnVlIiB8fCBl Y2hvICJGYWxzZSIKKyB9CistUE9MX1dpbmVfQ2hlY2tQcmVmaXhFeGlzdHMoKQorLXsKKy0JIyBD aGVja3MgaWYgYSBwcmVmaXggZXhpc3RzCistCSMgVXNhZ2U6IFBPTF9XaW5lX0NoZWNrUHJlZml4 RXhpc3RzIFtQUkVGSVhdIFtUSVRMRV9SRVFVSVJFRF0KKy0JIyBSZXR1cm4gYSBtZXNzYWdlIGlm IG5vdCBhbmQgcXVpdAorLQlQUkVGSVg9JDEKKy0JVElUTEVfUkVRVUlSRUQ9IiQyIgorLQlpZiBb ICIkKFBPTF9XaW5lX1ByZWZpeEV4aXN0cyAiJFBSRUZJWCIpIiA9ICJGYWxzZSIgXTsgdGhlbgor LQkJUE9MX0RlYnVnX1dhcm5pbmcgIlRoZSBwcmVmaXggJyRQUkVGSVgnIGRvZXMgbm90IGV4aXN0 IgorLQkJUE9MX1NldHVwV2luZG93X21lc3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdUaGlzIGlzIGFu IGluc3RhbGxlciBmb3IgYW4gdXBkYXRlIG9yIGFuIGFkZG9uO1xuUGxlYXNlIGluc3RhbGwgJFRJ VExFX1JFUVVJUkVEIGZpcnN0JykiICIkVElUTEUiCistCQlQT0xfU2V0dXBXaW5kb3dfQ2xvc2UK Ky0JCWV4aXQgMQorLQlmaQorK1BPTF9XaW5lX0NoZWNrUHJlZml4RXhpc3RzKCkgeworKyAgIyBD aGVja3MgaWYgYSBwcmVmaXggZXhpc3RzCisrICAjIFVzYWdlOiBQT0xfV2luZV9DaGVja1ByZWZp eEV4aXN0cyBbUFJFRklYXSBbVElUTEVfUkVRVUlSRURdCisrICAjIFJldHVybiBhIG1lc3NhZ2Ug aWYgbm90IGFuZCBxdWl0CisrICBQUkVGSVg9JDEKKysgIFRJVExFX1JFUVVJUkVEPSIkMiIKKysg IGlmIFsgIiQoUE9MX1dpbmVfUHJlZml4RXhpc3RzICIkUFJFRklYIikiID0gIkZhbHNlIiBdOyB0 aGVuCisrICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJUaGUgcHJlZml4ICckUFJFRklYJyBkb2VzIG5v dCBleGlzdCIKKysgICAgUE9MX1NldHVwV2luZG93X21lc3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdU aGlzIGlzIGFuIGluc3RhbGxlciBmb3IgYW4gdXBkYXRlIG9yIGFuIGFkZG9uO1xuUGxlYXNlIGlu c3RhbGwgJFRJVExFX1JFUVVJUkVEIGZpcnN0JykiICIkVElUTEUiCisrICAgIFBPTF9TZXR1cFdp bmRvd19DbG9zZQorKyAgICBleGl0IDEKKysgIGZpCisgfQorLVBPTF9XaW5lX1ZlcnNpb25TaWdu YXR1cmUoKQorLXsKKy0JIyBSZXR1cm4gdGhlIHNpZ25hdHVyZSBvZiBhIFdpbmUgcGFja2FnZQor LQkjIFVzYWdlOiBQT0xfV2luZV9WZXJzaW9uU2lnbmF0dXJlIFtESVJdCistCistCSMgT24gTGlu dXgsIHJlc3VsdCBzaG91bGQgbWF0Y2ggdGhlIG9uZSBvZgorLQkjIGNkICRESVI7IGZpbmQgKiAt dHlwZSBmfHNvcnR8eGFyZ3MgbWQ1c3VtfG1kNXN1bSAtfGN1dCAtYzEtMzIKKy0KKy0JbG9jYWwg V0lORVBLR1BBVEg9IiQxIgorLQlbIC1kICIkV0lORVBLR1BBVEgiIF0gfHwgcmV0dXJuCistCSMg WyAtZSAiJFdJTkVQS0dQQVRIL2Jpbi93aW5lIiBdIHx8IHJldHVybgorLQorLQlsb2NhbCBDVVJS U0lHVkVSPSIkV0lORVBLR1BBVEgvLnNpZ25hdHVyZS52MSIgIyBjYWNoZSB2ZXJzaW9uCistCWxv Y2FsIFdJTkVTSUcKKy0JWyAtZSAiJENVUlJTSUdWRVIiIF0gJiYgcmVhZCBXSU5FU0lHIDwgIiRD VVJSU0lHVkVSIgorLQlpZiBbIC16ICIkV0lORVNJRyIgXTsgdGhlbgorLQkJbG9jYWwgTUFOSUZF U1RGSUxFPSIkUE9MX1VTRVJfUk9PVC90bXAvUE9MX1dpbmVfVmVyc2lvblNpZ25hdHVyZV9tYW5p ZmVzdCQkIgorLQkJKGNkICIkV0lORVBLR1BBVEgiICYmIGZpbmQgKiAtdHlwZSBmIHxcCistCQkg IHNvcnQgfFwKKy0JCSAgd2hpbGUgcmVhZCBzaWdmaWxlbmFtZTsgZG8KKy0JCSAgICBlY2hvICIk KFBPTF9NRDVfZmlsZSAiJHNpZ2ZpbGVuYW1lIikgICRzaWdmaWxlbmFtZSIKKy0JCSAgZG9uZSkg PiAiJE1BTklGRVNURklMRSIKKy0JCVdJTkVTSUc9IiQoUE9MX01ENV9maWxlICIkTUFOSUZFU1RG SUxFIikiCistCQlybSAtZiAiJE1BTklGRVNURklMRSIKKy0JCWVjaG8gIiRXSU5FU0lHIiA+ICIk Q1VSUlNJR1ZFUiIKKy0JZmkKKy0JZWNobyAiJFdJTkVTSUciCisrUE9MX1dpbmVfVmVyc2lvblNp Z25hdHVyZSgpIHsKKysgICMgUmV0dXJuIHRoZSBzaWduYXR1cmUgb2YgYSBXaW5lIHBhY2thZ2UK KysgICMgVXNhZ2U6IFBPTF9XaW5lX1ZlcnNpb25TaWduYXR1cmUgW0RJUl0KKysKKysgICMgT24g TGludXgsIHJlc3VsdCBzaG91bGQgbWF0Y2ggdGhlIG9uZSBvZgorKyAgIyBjZCAkRElSOyBmaW5k ICogLXR5cGUgZnxzb3J0fHhhcmdzIG1kNXN1bXxtZDVzdW0gLXxjdXQgLWMxLTMyCisrCisrICBs b2NhbCBXSU5FUEtHUEFUSD0iJDEiCisrICBbIC1kICIkV0lORVBLR1BBVEgiIF0gfHwgcmV0dXJu CisrICAjIFsgLWUgIiRXSU5FUEtHUEFUSC9iaW4vd2luZSIgXSB8fCByZXR1cm4KKysKKysgIGxv Y2FsIENVUlJTSUdWRVI9IiRXSU5FUEtHUEFUSC8uc2lnbmF0dXJlLnYxIiAjIGNhY2hlIHZlcnNp b24KKysgIGxvY2FsIFdJTkVTSUcKKysgIFsgLWUgIiRDVVJSU0lHVkVSIiBdICYmIHJlYWQgV0lO RVNJRyA8IiRDVVJSU0lHVkVSIgorKyAgaWYgWyAteiAiJFdJTkVTSUciIF07IHRoZW4KKysgICAg bG9jYWwgTUFOSUZFU1RGSUxFPSIkUE9MX1VTRVJfUk9PVC90bXAvUE9MX1dpbmVfVmVyc2lvblNp Z25hdHVyZV9tYW5pZmVzdCQkIgorKyAgICAoY2QgIiRXSU5FUEtHUEFUSCIgJiYgZmluZCAqIC10 eXBlIGYgfAorKyAgICAgIHNvcnQgfAorKyAgICAgIHdoaWxlIHJlYWQgc2lnZmlsZW5hbWU7IGRv CisrICAgICAgICBlY2hvICIkKFBPTF9NRDVfZmlsZSAiJHNpZ2ZpbGVuYW1lIikgICRzaWdmaWxl bmFtZSIKKysgICAgICBkb25lKSA+IiRNQU5JRkVTVEZJTEUiCisrICAgIFdJTkVTSUc9IiQoUE9M X01ENV9maWxlICIkTUFOSUZFU1RGSUxFIikiCisrICAgIHJtIC1mICIkTUFOSUZFU1RGSUxFIgor KyAgICBlY2hvICIkV0lORVNJRyIgPiIkQ1VSUlNJR1ZFUiIKKysgIGZpCisrICBlY2hvICIkV0lO RVNJRyIKKyB9CistUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24oKQorLXsKKy0JIyBJbnN0YWxsIGEg d2luZXZlcnNpb24KKy0JIyBVc2FnZTogUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24gW1ZFUlNJT05d CistCVsgISAiJDEiID0gIiIgXSAmJiBleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIkMSIKKy0JWyAh ICIkMiIgPSAiIiBdICYmIGV4cG9ydCBQT0xfV0lORURJU1RSSUJVVElPTj0iJDIiIHx8IGV4cG9y dCBQT0xfV0lORURJU1RSSUJVVElPTj0idXBzdHJlYW0iCistCistCWlmIFtbICIkUE9MX1dJTkVW RVJTSU9OIiA9PSAqIi1zdGFnaW5nIiogXV07IHRoZW4KKy0JICAgIGxvY2FsIHBvbF93aW5ldmVy c2lvbj0iJHtQT0xfV0lORVZFUlNJT04vLXN0YWdpbmcvfSIKKy0JCQlQT0xfV0lORURJU1RSSUJV VElPTj0ic3RhZ2luZyIKKy0JZWxzZQorLQkJCWxvY2FsIHBvbF93aW5ldmVyc2lvbl9pbnN0YWxs PSIkUE9MX1dJTkVWRVJTSU9OIgorLQkJCWxvY2FsIHBvbF93aW5ldmVyc2lvbj0iJFBPTF9XSU5F VkVSU0lPTiIKKy0JZmkKKy0KKy0JaWYgWyAiJFBPTF9XSU5FRElTVFJJQlVUSU9OIiA9PSAic3Rh Z2luZyIgXTsgdGhlbgorLQkJbG9jYWwgcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGw9IiRwb2xfd2lu ZXZlcnNpb24tc3RhZ2luZyIKKy0JZmkKKy0KKy0JWyAiJHBvbF93aW5ldmVyc2lvbiIgPSAiIiBd ICYmIFBPTF9EZWJ1Z19GYXRhbCAiTm8gUE9MX1dJTkVWRVJTSU9OIHNldCIKKy0JWyAiJFBPTF9B UkNIIiA9ICIiIF0gJiYgUE9MX1N5c3RlbV9TZXRBcmNoICJhdXRvIgorLQlQT0xfRGVidWdfTWVz c2FnZSAiSW5zdGFsbGluZyB3aW5lIHZlcnNpb24gcGF0aDogJHBvbF93aW5ldmVyc2lvbl9pbnN0 YWxsLCAkUE9MX0FSQ0giCistCVsgIiRQT0xfT1MiID0gIk1hYyIgXSAmJiBBUkNIX1BSRUZJWD0i ZGFyd2luIgorLQlbICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdICYmIEFSQ0hfUFJFRklYPSJmcmVl YnNkIgorLQlbICIkUE9MX09TIiA9ICJMaW51eCIgXSAmJiBBUkNIX1BSRUZJWD0ibGludXgiCist CU9MRFBBVEg9IiRQV0QiCistCVdJTkVfU0VDVElPTj0iJEFSQ0hfUFJFRklYLSRQT0xfQVJDSCIK Ky0JV0lORURJUj0iJFBPTF9VU0VSX1JPT1Qvd2luZS8kV0lORV9TRUNUSU9OIgorLQl0b3VjaCAi JFdJTkVESVIvaW5zdGFsbGluZyIKKy0JaWYgWyAhIC1lICIkUE9MX1VTRVJfUk9PVC93aW5lLyRB UkNIX1BSRUZJWC0kUE9MX0FSQ0gvJHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsIiBdCistCXRoZW4K Ky0JCVBPTF9EZWJ1Z19NZXNzYWdlICJXaW5lIHNpdGU6ICRXSU5FX1NJVEUiCistCQllY2hvICRQ T0xfV0dFVCAiJFdJTkVfU0lURSIgLU8tCistCQlXSU5FREFUQT0iJCgkUE9MX1dHRVQgIiRXSU5F X1NJVEUiIC1PLSB8anEgLXIgIi5bXSB8IHNlbGVjdCgubmFtZT09XCIkUE9MX1dJTkVESVNUUklC VVRJT04tJEFSQ0hfUFJFRklYLSRQT0xfQVJDSFwiKSB8IC5wYWNrYWdlcyB8IC5bXSB8IHNlbGVj dCgudmVyc2lvbj09XCIkcG9sX3dpbmV2ZXJzaW9uXCIpIikiCistCQlQT0xfRGVidWdfTWVzc2Fn ZSAiV2luZWJ1aWxkIGRhdGE6ICRXSU5FREFUQSIKKy0KKy0JCVdJTkVfQUREUkVTUz0iJChlY2hv ICIkV0lORURBVEEiIHwganEgJy51cmwnIC1yKSIKKy0JCVBPTF9EZWJ1Z19NZXNzYWdlICJXaW5l IGFkZHJlc3MgZm91bmQ6ICRXSU5FX0FERFJFU1MiCistCQkjV0lORV9BRERSRVNTPSQoJFBPTF9X R0VUICIkV0lORV9TSVRFLyRXSU5FX1NFQ1RJT04ubHN0IiAtTy0gfCBncmVwICI7JHBvbF93aW5l dmVyc2lvbjsiIHwgdGFpbCAtbiAxIHwgY3V0IC1kICI7IiAtZjEpCistCistCQlpZiBbICIkV0lO RV9BRERSRVNTIiA9ICIiIF0gJiYgWyAiJFBPTF9BUkNIIiA9ICJhbWQ2NCIgXQorLQkJdGhlbgor LQkJCVBPTF9EZWJ1Z19XYXJuaW5nICJXaW5lICQxIGFtZDY0IGRvZXMgbm90IGV4aXN0LiBTd2l0 Y2hpbmcgdG8geDg2IgorLQkJCVBPTF9TeXN0ZW1fU2V0QXJjaCAieDg2IgorLQkJCVBPTF9XaW5l X0luc3RhbGxWZXJzaW9uICIkMSIKKy0JCWVsc2UKKy0JCQlpZiBbICIkV0lORV9BRERSRVNTIiA9 ICIiIF0KKy0JCQl0aGVuCistCQkJCVBPTF9EZWJ1Z19FcnJvciAiJChldmFsX2dldHRleHQgIlVu YWJsZSB0byBmaW5kIHZlcnNpb246ICIpJHBvbF93aW5ldmVyc2lvbiIKKy0JCQkJUE9MX1NldHVw V2luZG93X0Nsb3NlCistCQkJCWV4aXQKKy0JCQlmaQorLQorLQkJCWNkICIkUE9MX1VTRVJfUk9P VC90bXAiCistCQkJZmlsZW5hbWU9IiRQV0QvUGxheU9uTGludXgtd2luZS0kcG9sX3dpbmV2ZXJz aW9uLSRQT0xfV0lORURJU1RSSUJVVElPTi0kQVJDSF9QUkVGSVgtJFBPTF9BUkNILnRhci5neiIK Ky0JCQlQT0xfU2V0dXBXaW5kb3dfZG93bmxvYWQgIiQoZXZhbF9nZXR0ZXh0ICJEb3dubG9hZGlu ZyBXaW5lOiAiKSRwb2xfd2luZXZlcnNpb24iICIkVElUTEUiICIkV0lORV9BRERSRVNTIgorLQkJ CVBPTF9TZXR1cFdpbmRvd193YWl0X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAiRG93bmxv YWRpbmcgV2luZTogIikkcG9sX3dpbmV2ZXJzaW9uIiAiJFRJVExFIgorLQkJCXNsZWVwIDEKKy0J CQlzaGExPSIkKGVjaG8gIiRXSU5FREFUQSIgfCBqcSAnLnNoYTFzdW0nIC1yKSIKKy0JCQlzaGEx X2ZpbGU9JChzaGFzdW0gIiRmaWxlbmFtZSIgfCBhd2sgJ3twcmludCAkMX0nKQorLQkJCWVjaG8g IlNlcnZlciBzaGExIDogJHNoYTEiCistCQkJZWNobyAiQ2xpZW50IHNoYTEgOiAkc2hhMV9maWxl IgorLQorLQkJCWlmIFsgISAiJHNoYTEiID0gIiRzaGExX2ZpbGUiIF0KKy0JCQl0aGVuCistCQkJ CVBPTF9TZXR1cFdpbmRvd19tZXNzYWdlICIkKGV2YWxfZ2V0dGV4dCAnVGhlIGRvd25sb2FkIHNl ZW1zIHRvIGhhdmUgZmFpbGVkLicpIiAiJFRJVExFIgorLQkJCWVsc2UKKy0JCQkJUE9MX1NldHVw V2luZG93X3dhaXQgIiQoZXZhbF9nZXR0ZXh0ICdFeHRyYWN0aW5nIFdpbmUuLi4nKSIgIiRUSVRM RSIKKy0JCQkJbWtkaXIgLXAgIiRQT0xfVVNFUl9ST09UL3dpbmUvJEFSQ0hfUFJFRklYLSRQT0xf QVJDSC8kcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGwiCistCQkJCWNkICIkUE9MX1VTRVJfUk9PVC93 aW5lLyRBUkNIX1BSRUZJWC0kUE9MX0FSQ0gvJHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsIgorLQkJ CQl0YXIgLXh2ZiAiJGZpbGVuYW1lIgorLQkJCWZpCistCQkJcm0gIiRmaWxlbmFtZSIKKy0JCQkj IFBPTF9XaW5lX0luc3RhbGxfcmVzb3VyY2VzIGdlY2tvICIkcG9sX3dpbmV2ZXJzaW9uIiAiJFBP TF9BUkNIIgorLQkJCSMgUE9MX1dpbmVfSW5zdGFsbF9yZXNvdXJjZXMgbW9ubyAiJHBvbF93aW5l dmVyc2lvbiIgIiRQT0xfQVJDSCIKKy0JCWZpCistCWZpCistCXJtICIkV0lORURJUi9pbnN0YWxs aW5nIgorK1BPTF9XaW5lX0luc3RhbGxWZXJzaW9uKCkgeworKyAgIyBJbnN0YWxsIGEgd2luZXZl cnNpb24KKysgICMgVXNhZ2U6IFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uIFtWRVJTSU9OXQorKyAg WyAhICIkMSIgPSAiIiBdICYmIGV4cG9ydCBQT0xfV0lORVZFUlNJT049IiQxIgorKyAgWyAhICIk MiIgPSAiIiBdICYmIGV4cG9ydCBQT0xfV0lORURJU1RSSUJVVElPTj0iJDIiIHx8IGV4cG9ydCBQ T0xfV0lORURJU1RSSUJVVElPTj0idXBzdHJlYW0iCisrCisrICBpZiBbWyAiJFBPTF9XSU5FVkVS U0lPTiIgPT0gKiItc3RhZ2luZyIqIF1dOyB0aGVuCisrICAgIGxvY2FsIHBvbF93aW5ldmVyc2lv bj0iJHtQT0xfV0lORVZFUlNJT04vLXN0YWdpbmcvfSIKKysgICAgUE9MX1dJTkVESVNUUklCVVRJ T049InN0YWdpbmciCisrICBlbGlmIFtbICIkUE9MX1dJTkVWRVJTSU9OIiA9PSAqIi1jeCIqIF1d OyB0aGVuCisrICAgIGxvY2FsIHBvbF93aW5ldmVyc2lvbj0iJHtQT0xfV0lORVZFUlNJT04vLWN4 L30iCisrICAgIFBPTF9XSU5FRElTVFJJQlVUSU9OPSJjeCIKKysgIGVsc2UKKysgICAgbG9jYWwg cG9sX3dpbmV2ZXJzaW9uX2luc3RhbGw9IiRQT0xfV0lORVZFUlNJT04iCisrICAgIGxvY2FsIHBv bF93aW5ldmVyc2lvbj0iJFBPTF9XSU5FVkVSU0lPTiIKKysgIGZpCisrCisrICBpZiBbICIkUE9M X1dJTkVESVNUUklCVVRJT04iID09ICJzdGFnaW5nIiBdOyB0aGVuCisrICAgIGxvY2FsIHBvbF93 aW5ldmVyc2lvbl9pbnN0YWxsPSIkcG9sX3dpbmV2ZXJzaW9uLXN0YWdpbmciCisrICBmaQorKwor KyAgaWYgWyAiJFBPTF9XSU5FRElTVFJJQlVUSU9OIiA9PSAiY3giIF07IHRoZW4KKysgICAgbG9j YWwgcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGw9IiRwb2xfd2luZXZlcnNpb24tY3giCisrICBmaQor KworKyAgWyAiJHBvbF93aW5ldmVyc2lvbiIgPSAiIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiTm8g UE9MX1dJTkVWRVJTSU9OIHNldCIKKysgIFsgIiRQT0xfQVJDSCIgPSAiIiBdICYmIFBPTF9TeXN0 ZW1fU2V0QXJjaCAiYXV0byIKKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJJbnN0YWxsaW5nIHdpbmUg dmVyc2lvbiBwYXRoOiAkcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGwsICRQT0xfQVJDSCIKKysgIFsg IiRQT0xfT1MiID0gIk1hYyIgXSAmJiBBUkNIX1BSRUZJWD0iZGFyd2luIgorKyAgWyAiJFBPTF9P UyIgPSAiRnJlZUJTRCIgXSAmJiBBUkNIX1BSRUZJWD0iZnJlZWJzZCIKKysgIFsgIiRQT0xfT1Mi ID0gIkxpbnV4IiBdICYmIEFSQ0hfUFJFRklYPSJsaW51eCIKKysgIE9MRFBBVEg9IiRQV0QiCisr ICBXSU5FX1NFQ1RJT049IiRBUkNIX1BSRUZJWC0kUE9MX0FSQ0giCisrICBXSU5FRElSPSIkUE9M X1VTRVJfUk9PVC93aW5lLyRXSU5FX1NFQ1RJT04iCisrICB0b3VjaCAiJFdJTkVESVIvaW5zdGFs bGluZyIKKysgIGlmIFsgISAtZSAiJFBPTF9VU0VSX1JPT1Qvd2luZS8kQVJDSF9QUkVGSVgtJFBP TF9BUkNILyRwb2xfd2luZXZlcnNpb25faW5zdGFsbCIgXTsgdGhlbgorKyAgICBQT0xfRGVidWdf TWVzc2FnZSAiV2luZSBzaXRlOiAkV0lORV9TSVRFIgorKyAgICBQT0xfRGVidWdfTWVzc2FnZSAi d2dldCBsaXN0IGNvbW1hbmQ6ICRQT0xfV0dFVCAkV0lORV9TSVRFIC1PLSIKKysgICAgUE9MX0Rl YnVnX01lc3NhZ2UgIlBPTF9BUkNIOiAkUE9MX0FSQ0giCisrCisrICAgIGlmIFsgIiRQT0xfQVJD SCIgPSAieDg2IiBdOyB0aGVuCisrICAgICAgW1sgIiRPU1hfVkVSU0lPTiIgLWdlIDE5IF1dICYm IHNpdGVfYXJjaD0ieDg2b242NCIgfHwgc2l0ZV9hcmNoPSJ4ODYiCisrICAgIGVsc2UKKysgICAg ICBzaXRlX2FyY2g9IiRQT0xfQVJDSCIKKysgICAgZmkKKysgICAgV0lORURBVEE9IiQoJFBPTF9X R0VUICIkV0lORV9TSVRFIiAtTy0gfCBqcSAtciAiLltdIHwgc2VsZWN0KC5uYW1lPT1cIiRQT0xf V0lORURJU1RSSUJVVElPTi0kQVJDSF9QUkVGSVgtJHNpdGVfYXJjaFwiKSB8IC5wYWNrYWdlcyB8 IC5bXSB8IHNlbGVjdCgudmVyc2lvbj09XCIkcG9sX3dpbmV2ZXJzaW9uXCIpIikiCisrICAgIFBP TF9EZWJ1Z19NZXNzYWdlICJXaW5lYnVpbGQgZGF0YTogJFdJTkVEQVRBIgorKworKyAgICBXSU5F X0FERFJFU1M9IiQoZWNobyAiJFdJTkVEQVRBIiB8IGpxICcudXJsJyAtcikiCisrICAgIFBPTF9E ZWJ1Z19NZXNzYWdlICJXaW5lIGFkZHJlc3MgZm91bmQ6ICRXSU5FX0FERFJFU1MiCisrICAgICNX SU5FX0FERFJFU1M9JCgkUE9MX1dHRVQgIiRXSU5FX1NJVEUvJFdJTkVfU0VDVElPTi5sc3QiIC1P LSB8IGdyZXAgIjskcG9sX3dpbmV2ZXJzaW9uOyIgfCB0YWlsIC1uIDEgfCBjdXQgLWQgIjsiIC1m MSkKKysKKysgICAgaWYgWyAiJFdJTkVfQUREUkVTUyIgPSAiIiBdICYmIFsgIiRQT0xfQVJDSCIg PSAiYW1kNjQiIF07IHRoZW4KKysgICAgICBQT0xfRGVidWdfV2FybmluZyAiV2luZSAkMSBhbWQ2 NCBkb2VzIG5vdCBleGlzdC4gU3dpdGNoaW5nIHRvIHg4NiIKKysgICAgICBQT0xfU3lzdGVtX1Nl dEFyY2ggIng4NiIKKysgICAgICBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbiAiJDEiCisrICAgIGVs c2UKKysgICAgICBpZiBbICIkV0lORV9BRERSRVNTIiA9ICIiIF07IHRoZW4KKysgICAgICAgIGlm IFtbICRPU1hfVkVSU0lPTiAtZ2UgMTkgXV07IHRoZW4KKysgICAgICAgICAgUE9MX1NldHVwV2lu ZG93X21lc3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICJtYWNPUyBDYXRhbGluYSB1c2VyOiAzMmJpdHMg d2luZSB2ZXJzaW9uIGFyZSBubyBsb25nZXIgYXZhaWxhYmxlLlxuV2UgYXJlIGdvaW5nIHRvIHVz ZSB0aGUgc3lzdGVtIHdpbmUgdmVyc2lvbiBpbnN0ZWFkIikiCisrICAgICAgICAgIHJldHVybiAy CisrICAgICAgICBlbHNlCisrICAgICAgICAgIFBPTF9EZWJ1Z19FcnJvciAiJChldmFsX2dldHRl eHQgIlVuYWJsZSB0byBmaW5kIHZlcnNpb246ICIpJHBvbF93aW5ldmVyc2lvbiIKKysgICAgICAg ICAgUE9MX1NldHVwV2luZG93X0Nsb3NlCisrICAgICAgICAgIGV4aXQKKysgICAgICAgIGZpCisr ICAgICAgZmkKKysKKysgICAgICBjZCAiJFBPTF9VU0VSX1JPT1QvdG1wIgorKyAgICAgIGZpbGVu YW1lPSIkUFdEL1BsYXlPbkxpbnV4LXdpbmUtJHBvbF93aW5ldmVyc2lvbi0kUE9MX1dJTkVESVNU UklCVVRJT04tJEFSQ0hfUFJFRklYLSRzaXRlX2FyY2gudGFyLmd6IgorKyAgICAgIFBPTF9TZXR1 cFdpbmRvd19kb3dubG9hZCAiJChldmFsX2dldHRleHQgIkRvd25sb2FkaW5nIFdpbmU6ICIpJHBv bF93aW5ldmVyc2lvbiIgIiRUSVRMRSIgIiRXSU5FX0FERFJFU1MiCisrICAgICAgUE9MX1NldHVw V2luZG93X3dhaXRfbmV4dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0ICJEb3dubG9hZGluZyBXaW5l OiAiKSRwb2xfd2luZXZlcnNpb24iICIkVElUTEUiCisrICAgICAgc2xlZXAgMQorKyAgICAgIHNo YTE9IiQoZWNobyAiJFdJTkVEQVRBIiB8IGpxICcuc2hhMXN1bScgLXIpIgorKyAgICAgIHNoYTFf ZmlsZT0kKHNoYXN1bSAiJGZpbGVuYW1lIiB8IGF3ayAne3ByaW50ICQxfScpCisrICAgICAgZWNo byAiU2VydmVyIHNoYTEgOiAkc2hhMSIKKysgICAgICBlY2hvICJDbGllbnQgc2hhMSA6ICRzaGEx X2ZpbGUiCisrCisrICAgICAgaWYgWyAhICIkc2hhMSIgPSAiJHNoYTFfZmlsZSIgXSAmJiBbWyAk T1NYX1ZFUlNJT04gLWx0IDE5IF1dOyB0aGVuCisrICAgICAgICBQT0xfU2V0dXBXaW5kb3dfbWVz c2FnZSAiJChldmFsX2dldHRleHQgJ1RoZSBkb3dubG9hZCBzZWVtcyB0byBoYXZlIGZhaWxlZC4n KSIgIiRUSVRMRSIKKysgICAgICBlbHNlCisrICAgICAgICBQT0xfU2V0dXBXaW5kb3dfd2FpdCAi JChldmFsX2dldHRleHQgJ0V4dHJhY3RpbmcgV2luZS4uLicpIiAiJFRJVExFIgorKyAgICAgICAg bWtkaXIgLXAgIiRQT0xfVVNFUl9ST09UL3dpbmUvJEFSQ0hfUFJFRklYLSRQT0xfQVJDSC8kcG9s X3dpbmV2ZXJzaW9uX2luc3RhbGwiCisrICAgICAgICBjZCAiJFBPTF9VU0VSX1JPT1Qvd2luZS8k QVJDSF9QUkVGSVgtJFBPTF9BUkNILyRwb2xfd2luZXZlcnNpb25faW5zdGFsbCIKKysgICAgICAg IHRhciAteHZmICIkZmlsZW5hbWUiCisrICAgICAgZmkKKysgICAgICBybSAiJGZpbGVuYW1lIgor KyAgICAgICMgUE9MX1dpbmVfSW5zdGFsbF9yZXNvdXJjZXMgZ2Vja28gIiRwb2xfd2luZXZlcnNp b24iICIkUE9MX0FSQ0giCisrICAgICAgIyBQT0xfV2luZV9JbnN0YWxsX3Jlc291cmNlcyBtb25v ICIkcG9sX3dpbmV2ZXJzaW9uIiAiJFBPTF9BUkNIIgorKyAgICBmaQorKyAgZmkKKysgIHJtICIk V0lORURJUi9pbnN0YWxsaW5nIgorIAorIH0KKyAKKy1QT0xfV2luZV9JbnN0YWxsQ0RST00oKQor LXsKKy0JUE9MX1dpbmVfSW5zdGFsbENEUk9NQ3VzdG9tICIkMSIgIiRDRFJPTSIKKytQT0xfV2lu ZV9JbnN0YWxsQ0RST00oKSB7CisrICBQT0xfV2luZV9JbnN0YWxsQ0RST01DdXN0b20gIiQxIiAi JENEUk9NIgorIH0KKy1QT0xfV2luZV9JbnN0YWxsQ0RST01DdXN0b20oKQorLXsKKy0JaWYgWyAi JDEiIF07IHRoZW4KKy0JCWxldHRlcj0iJDE6IgorLQllbHNlCistCQlsZXR0ZXI9InA6IgorLQlm aQorLQlpZiBbICIkQ0RST00iIF07IHRoZW4KKy0JCWNkICIkV0lORVBSRUZJWC9kb3NkZXZpY2Vz IgorLQkJcm0gIiRsZXR0ZXIiIDI+IC9kZXYvbnVsbAorLQkJbG4gLXMgIiQyIiAiJGxldHRlciIK Ky0JZmkKKytQT0xfV2luZV9JbnN0YWxsQ0RST01DdXN0b20oKSB7CisrICBpZiBbICIkMSIgXTsg dGhlbgorKyAgICBsZXR0ZXI9IiQxOiIKKysgIGVsc2UKKysgICAgbGV0dGVyPSJwOiIKKysgIGZp CisrICBpZiBbICIkQ0RST00iIF07IHRoZW4KKysgICAgY2QgIiRXSU5FUFJFRklYL2Rvc2Rldmlj ZXMiCisrICAgIHJtICIkbGV0dGVyIiAyPi9kZXYvbnVsbAorKyAgICBsbiAtcyAiJDIiICIkbGV0 dGVyIgorKyAgZmkKKyB9CistUE9MX1dpbmVfSW5zdGFsbF9yZXNvdXJjZXMoKQorLXsKKy0JIyBJ bnN0YWxsIGdlY2tvIG9yIG1vbm8gZm9yIHNlbGVjdGVkIHdpbmUgdmVyc2lvbgorLQkjIFVzYWdl IDogUE9MX1dpbmVfSW5zdGFsbF9yZXNvdXJjZXMgKGdlY2tvfG1vbm8pIFsgVmVyc2lvbiBdICgg QXJjaCApCistCVsgLXogIiQxIiBdICYmIHJldHVybiAxCistCVsgIiQxIiA9ICJtb25vIiBdICYm IHJlc291cmNlPSIkMSIgfHwgcmVzb3VyY2U9ImdlY2tvIgorLQl3aW5lX3ZlcnNpb249IiQyIgor LQl1bnBhdGNoZWRfdmVyc2lvbj1gUE9MX1dpbmVfR2V0QmFzZU5hbWUgIiQyImAKKy0JWyAiJDMi ID0gImFtZDY0IiBdICYmIGFyY2g9IiQzIiB8fCBhcmNoPSJ4ODYiCistCistCVBPTF9EZWJ1Z19N ZXNzYWdlICJJbnN0YWxsaW5nICRyZXNvdXJjZSBmb3Igd2luZSAkdW5wYXRjaGVkX3ZlcnNpb24g JGFyY2giCistCXJlc291cmNlX2Rpcj0iJFBPTF9VU0VSX1JPT1Qvd2luZS8kcmVzb3VyY2UiCist CXJlc291cmNlX2ZpbGU9IiRQT0xfVVNFUl9ST09UL2NvbmZpZ3VyYXRpb25zL2xpc3Rlcy8kcmVz b3VyY2UubHN0IgorLQlmb3VuZD0iJChncmVwICJeJHt1bnBhdGNoZWRfdmVyc2lvbi8vLi9cLn07 IiAiJHJlc291cmNlX2ZpbGUiKSIKKy0JWyAiJFBPTF9PUyIgPSAiTGludXgiIF0gJiYgd29zPSJs aW51eCIKKy0JWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIgXSAmJiB3b3M9ImZyZWVic2QiCistCVsg IiRQT0xfT1MiID0gIk1hYyIgXSAmJiB3b3M9ImRhcndpbiIKKy0KKy0JaWYgWyAhIC1MICIkUE9M X1VTRVJfUk9PVC93aW5lLyR3b3MtJGFyY2gvJHdpbmVfdmVyc2lvbi9zaGFyZS93aW5lLyRyZXNv dXJjZSIgXQorLQl0aGVuCistCQlQT0xfRGVidWdfTWVzc2FnZSAiTGlua2luZyAkcmVzb3VyY2Ui CistCQlsbiAtcyAiJFBPTF9VU0VSX1JPT1Qvd2luZS8kcmVzb3VyY2UvIiAiJFBPTF9VU0VSX1JP T1Qvd2luZS8kd29zLSRhcmNoLyR3aW5lX3ZlcnNpb24vc2hhcmUvd2luZS8kcmVzb3VyY2UiCist CWZpCistCWlmIFsgIiRmb3VuZCIgXTsgdGhlbgorLQkJcmVzb3VyY2V4ODY9IiQoY3V0IC1kICc7 JyAtZjIgPDw8ICRmb3VuZCkiCistCQlyZXNvdXJjZWFtZDY0PSIkKGN1dCAtZCAnOycgLWYzIDw8 PCAkZm91bmQpIgorLQkJbWQ1eDg2PSIkKGN1dCAtZCAnOycgLWY0IDw8PCAkZm91bmQpIgorLQkJ bWQ1YW1kNjQ9IiQoY3V0IC1kICc7JyAtZjUgPDw8ICRmb3VuZCkiCistCistCQljZCAiJHJlc291 cmNlX2RpciIKKy0JCWlmIFsgIiRyZXNvdXJjZXg4NiIgXTsgdGhlbgorLQkJCWlmIFsgLWUgIiRy ZXNvdXJjZXg4NiIgXTsgdGhlbgorLQkJCQlQT0xfRGVidWdfTWVzc2FnZSAiJHJlc291cmNleDg2 IGFscmVhZHkgaW5zdGFsbGVkLiBTa2lwcGluZyIKKy0JCQllbHNlCistCQkJCVBPTF9EZWJ1Z19N ZXNzYWdlICJJbnN0YWxsaW5nICRyZXNvdXJjZXg4NiIKKy0JCQkJUE9MX0Rvd25sb2FkICIkKHJl c291cmNlX2Rvd25sb2FkX3VybCAkcmVzb3VyY2UgeDg2ICRyZXNvdXJjZXg4NikiICIkbWQ1eDg2 IgorLQkJCWZpCistCQlmaQorLQorLQkJaWYgWyAiJGFyY2giID0gImFtZDY0IiBdOyB0aGVuCist CQkJaWYgWyAiJHJlc291cmNlYW1kNjQiIF07IHRoZW4KKy0JCQkJaWYgWyAtZSAiJHJlc291cmNl YW1kNjQiIF07IHRoZW4KKy0JCQkJCVBPTF9EZWJ1Z19NZXNzYWdlICIkcmVzb3VyY2VhbWQ2NCBh bHJlYWR5IGluc3RhbGxlZC4gU2tpcHBpbmciCistCQkJCWVsc2UKKy0JCQkJCVBPTF9EZWJ1Z19N ZXNzYWdlICJJbnN0YWxsaW5nICRyZXNvdXJjZWFtZDY0IgorLQkJCQkJUE9MX0Rvd25sb2FkICIk KHJlc291cmNlX2Rvd25sb2FkX3VybCAkcmVzb3VyY2UgYW1kNjQgJHJlc291cmNlYW1kNjQpIiAi JG1kNWFtZDY0IgorLQkJCQlmaQorLQkJCWZpCistCQlmaQorLQlmaQorK1BPTF9XaW5lX0luc3Rh bGxfcmVzb3VyY2VzKCkgeworKyAgIyBJbnN0YWxsIGdlY2tvIG9yIG1vbm8gZm9yIHNlbGVjdGVk IHdpbmUgdmVyc2lvbgorKyAgIyBVc2FnZSA6IFBPTF9XaW5lX0luc3RhbGxfcmVzb3VyY2VzIChn ZWNrb3xtb25vKSBbIFZlcnNpb24gXSAoIEFyY2ggKQorKyAgWyAteiAiJDEiIF0gJiYgcmV0dXJu IDEKKysgIFsgIiQxIiA9ICJtb25vIiBdICYmIHJlc291cmNlPSIkMSIgfHwgcmVzb3VyY2U9Imdl Y2tvIgorKyAgd2luZV92ZXJzaW9uPSIkMiIKKysgIHVucGF0Y2hlZF92ZXJzaW9uPSQoUE9MX1dp bmVfR2V0QmFzZU5hbWUgIiQyIikKKysgIFsgIiQzIiA9ICJhbWQ2NCIgXSAmJiBhcmNoPSIkMyIg fHwgYXJjaD0ieDg2IgorKworKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkluc3RhbGxpbmcgJHJlc291 cmNlIGZvciB3aW5lICR1bnBhdGNoZWRfdmVyc2lvbiAkYXJjaCIKKysgIHJlc291cmNlX2Rpcj0i JFBPTF9VU0VSX1JPT1Qvd2luZS8kcmVzb3VyY2UiCisrICByZXNvdXJjZV9maWxlPSIkUE9MX1VT RVJfUk9PVC9jb25maWd1cmF0aW9ucy9saXN0ZXMvJHJlc291cmNlLmxzdCIKKysgIGZvdW5kPSIk KGdyZXAgIl4ke3VucGF0Y2hlZF92ZXJzaW9uLy8uL1wufTsiICIkcmVzb3VyY2VfZmlsZSIpIgor KyAgWyAiJFBPTF9PUyIgPSAiTGludXgiIF0gJiYgd29zPSJsaW51eCIKKysgIFsgIiRQT0xfT1Mi ID0gIkZyZWVCU0QiIF0gJiYgd29zPSJmcmVlYnNkIgorKyAgWyAiJFBPTF9PUyIgPSAiTWFjIiBd ICYmIHdvcz0iZGFyd2luIgorKworKyAgaWYgWyAhIC1MICIkUE9MX1VTRVJfUk9PVC93aW5lLyR3 b3MtJGFyY2gvJHdpbmVfdmVyc2lvbi9zaGFyZS93aW5lLyRyZXNvdXJjZSIgXTsgdGhlbgorKyAg ICBQT0xfRGVidWdfTWVzc2FnZSAiTGlua2luZyAkcmVzb3VyY2UiCisrICAgIGxuIC1zICIkUE9M X1VTRVJfUk9PVC93aW5lLyRyZXNvdXJjZS8iICIkUE9MX1VTRVJfUk9PVC93aW5lLyR3b3MtJGFy Y2gvJHdpbmVfdmVyc2lvbi9zaGFyZS93aW5lLyRyZXNvdXJjZSIKKysgIGZpCisrICBpZiBbICIk Zm91bmQiIF07IHRoZW4KKysgICAgcmVzb3VyY2V4ODY9IiQoY3V0IC1kICc7JyAtZjIgPDw8JGZv dW5kKSIKKysgICAgcmVzb3VyY2VhbWQ2ND0iJChjdXQgLWQgJzsnIC1mMyA8PDwkZm91bmQpIgor KyAgICBtZDV4ODY9IiQoY3V0IC1kICc7JyAtZjQgPDw8JGZvdW5kKSIKKysgICAgbWQ1YW1kNjQ9 IiQoY3V0IC1kICc7JyAtZjUgPDw8JGZvdW5kKSIKKysKKysgICAgY2QgIiRyZXNvdXJjZV9kaXIi CisrICAgIGlmIFsgIiRyZXNvdXJjZXg4NiIgXTsgdGhlbgorKyAgICAgIGlmIFsgLWUgIiRyZXNv dXJjZXg4NiIgXTsgdGhlbgorKyAgICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIiRyZXNvdXJjZXg4 NiBhbHJlYWR5IGluc3RhbGxlZC4gU2tpcHBpbmciCisrICAgICAgZWxzZQorKyAgICAgICAgUE9M X0RlYnVnX01lc3NhZ2UgIkluc3RhbGxpbmcgJHJlc291cmNleDg2IgorKyAgICAgICAgUE9MX0Rv d25sb2FkICIkKHJlc291cmNlX2Rvd25sb2FkX3VybCAkcmVzb3VyY2UgeDg2ICRyZXNvdXJjZXg4 NikiICIkbWQ1eDg2IgorKyAgICAgIGZpCisrICAgIGZpCisrCisrICAgIGlmIFsgIiRhcmNoIiA9 ICJhbWQ2NCIgXTsgdGhlbgorKyAgICAgIGlmIFsgIiRyZXNvdXJjZWFtZDY0IiBdOyB0aGVuCisr ICAgICAgICBpZiBbIC1lICIkcmVzb3VyY2VhbWQ2NCIgXTsgdGhlbgorKyAgICAgICAgICBQT0xf RGVidWdfTWVzc2FnZSAiJHJlc291cmNlYW1kNjQgYWxyZWFkeSBpbnN0YWxsZWQuIFNraXBwaW5n IgorKyAgICAgICAgZWxzZQorKyAgICAgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiSW5zdGFsbGlu ZyAkcmVzb3VyY2VhbWQ2NCIKKysgICAgICAgICAgUE9MX0Rvd25sb2FkICIkKHJlc291cmNlX2Rv d25sb2FkX3VybCAkcmVzb3VyY2UgYW1kNjQgJHJlc291cmNlYW1kNjQpIiAiJG1kNWFtZDY0Igor KyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICBmaQorKyAgZmkKKyB9CistcmVzb3VyY2VfZG93 bmxvYWRfdXJsKCkKKy17CistCSMgcmVzb3VyY2VfZG93bmxvYWRfdXJsIChnZWNrb3xtb25vKSBb IEFyY2ggXSBbIEZpbGVuYW1lIF0KKy0JaWYgWyAiJDEiID0gImdlY2tvIiBdOyB0aGVuCistCQll Y2hvICIkR0VDS09fU0lURS8kMi8kMyIKKy0JZmkKKy0JaWYgWyAiJDEiID0gIm1vbm8iIF07IHRo ZW4KKy0jCQlsb2NhbCB2ZXJzaW9uPSIkezMlLm1zaX0iCistIwkJdmVyc2lvbj0iJHt2ZXJzaW9u I3dpbmUtbW9uby19IgorLSMJCWVjaG8gImh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy93aW5lbW9u by5waHA/dj0ke3ZlcnNpb259IgorLSMJCWVjaG8gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9y Z2UubmV0L3dpbmUvJDMiCistIwkJZWNobyAiJE1PTk9fU0lURS8kMi8kMyIKKy0JCWVjaG8gIiRN T05PX1NJVEUvJDMiCistCWZpCisrcmVzb3VyY2VfZG93bmxvYWRfdXJsKCkgeworKyAgIyByZXNv dXJjZV9kb3dubG9hZF91cmwgKGdlY2tvfG1vbm8pIFsgQXJjaCBdIFsgRmlsZW5hbWUgXQorKyAg aWYgWyAiJDEiID0gImdlY2tvIiBdOyB0aGVuCisrICAgIGVjaG8gIiRHRUNLT19TSVRFLyQyLyQz IgorKyAgZmkKKysgIGlmIFsgIiQxIiA9ICJtb25vIiBdOyB0aGVuCisrICAgICMJCWxvY2FsIHZl cnNpb249IiR7MyUubXNpfSIKKysgICAgIwkJdmVyc2lvbj0iJHt2ZXJzaW9uI3dpbmUtbW9uby19 IgorKyAgICAjCQllY2hvICJodHRwOi8vc291cmNlLndpbmVocS5vcmcvd2luZW1vbm8ucGhwP3Y9 JHt2ZXJzaW9ufSIKKysgICAgIwkJZWNobyAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5u ZXQvd2luZS8kMyIKKysgICAgIwkJZWNobyAiJE1PTk9fU0lURS8kMi8kMyIKKysgICAgZWNobyAi JE1PTk9fU0lURS8kMyIKKysgIGZpCisgfQorLVBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52KCkK Ky17CistCSMgR2V0IHRoZSBjdXJyZW50IHByZWZpeCdzIHZlcnNpb24gYW5kIHNldCBQQVRIIGVu dmlyb25tZW50IHZhcmlhYmxlCistCSMgVXNhZ2U6IFBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52 CistCVsgIiRXSU5FUFJFRklYIiA9ICIiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklY IGlzIG5vdCBzZXQhIgorLQlQT0xfV0lORVZFUlNJT049IiQoUE9MX0NvbmZpZ19QcmVmaXhSZWFk ICJWRVJTSU9OIikiCistCVBPTF9BUkNIPSIkKFBPTF9Db25maWdfUHJlZml4UmVhZCAiQVJDSCIp IgorLQlbICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF0gfHwgUE9MX1dpbmVfU2V0VmVyc2lvbkVu dgorK1BPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52KCkgeworKyAgIyBHZXQgdGhlIGN1cnJlbnQg cHJlZml4J3MgdmVyc2lvbiBhbmQgc2V0IFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUKKysgICMg VXNhZ2U6IFBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52CisrICBbICIkV0lORVBSRUZJWCIgPSAi IiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBpcyBub3Qgc2V0ISIKKysgIFBPTF9X SU5FVkVSU0lPTj0iJChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgIlZFUlNJT04iKSIKKysgIFBPTF9B UkNIPSIkKFBPTF9Db25maWdfUHJlZml4UmVhZCAiQVJDSCIpIgorKyAgWyAiJFBPTF9XSU5FVkVS U0lPTiIgPSAiIiBdIHx8IFBPTF9XaW5lX1NldFZlcnNpb25FbnYKKyB9CistUE9MX1dpbmVfU2V0 VmVyc2lvbkVudigpCisteworLQkjIFVzYWdlOiBQT0xfV2luZV9TZXRXaW5lVmVyc2lvbiBbVkVS U0lPTl0KKy0JIyBHZXQgZmlyc3QgYXJndW1lbnQncyB3aW5lIHZlcnNpb24gYW5kIHNldCBQQVRI IGVudmlyb25tZW50IHZhcmlhYmxlCistCVsgISAiJDEiID0gIiIgXSAmJiBleHBvcnQgUE9MX1dJ TkVWRVJTSU9OPSIkMSIKKy0JWyAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdICYmIFBPTF9EZWJ1 Z19XYXJuaW5nICJObyBQT0xfV0lORVZFUlNJT04gc2V0LCBhc3N1bWluZyBpdCBpcyByZXNldCIK Ky0JWyAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdICYmIGV4cG9ydCBQT0xfV0lORVZFUlNJT049 Ii0tcmVzZXQiCistCWlmIFsgISAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdCistCXRoZW4KKy0J CVsgIiRQT0xfQVJDSCIgPSAiIiBdICYmIFBPTF9TeXN0ZW1fU2V0QXJjaCAiYXV0byIKKy0JCSNQ T0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIHZlcnNpb24gcGF0aDogJFBPTF9XSU5FVkVS U0lPTiwgJFBPTF9BUkNIIgorLQkJWyAiJFBPTF9PUyIgPSAiTWFjIiBdICYmIEFSQ0hfUFJFRklY PSJkYXJ3aW4iCistCQlbICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdICYmIEFSQ0hfUFJFRklYPSJm cmVlYnNkIgorLQkJWyAiJFBPTF9PUyIgPSAiTGludXgiIF0gJiYgQVJDSF9QUkVGSVg9ImxpbnV4 IgorLQkJT0xEUEFUSD0iJFBXRCIKKy0JCVdJTkVESVI9IiRQT0xfVVNFUl9ST09UL3dpbmUvJEFS Q0hfUFJFRklYLSRQT0xfQVJDSCIKKy0JCW1rZGlyIC1wICIkV0lORURJUiIKKy0JCWNkICIkV0lO RURJUiIKKy0KKy0JCWlmIFsgIiRQT0xfV0lORVZFUlNJT04iID0gIi0tcmVzZXQiIF0KKy0JCXRo ZW4KKy0JCQlleHBvcnQgUEFUSD0iJFBBVEhfT1JJR0lOIgorLQkJCWV4cG9ydCBMRF9MSUJSQVJZ X1BBVEg9IiRMRF9QQVRIX09SSUdJTiIKKy0JCQlbICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdICYm IGV4cG9ydCBMRF8zMl9MSUJSQVJZX1BBVEg9IiRMRF8zMl9QQVRIX09SSUdJTiIKKy0JCQlleHBv cnQgUE9MX1dJTkVWRVJTSU9OPSIiCistCQllbHNlCistCQkJaWYgWyAhIC1lICIkV0lORURJUi8k UE9MX1dJTkVWRVJTSU9OIiBdCistCQkJdGhlbgorLQkJCQlQT0xfRGVidWdfTWVzc2FnZSAiV2lu ZSAkUE9MX1dJTkVWRVJTSU9OIG5vdCBpbnN0YWxsZWQuIEluc3RhbGxpbmcgaXQiCistCQkgCQlQ T0xfV2luZV9JbnN0YWxsVmVyc2lvbiAiJFBPTF9XSU5FVkVSU0lPTiIKKy0JCQlmaQorLQkJCWV4 cG9ydCBQQVRIPSIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2Jpbi86JFBBVEgiCistCQkJWyAi JFBPTF9PUyIgPSAiTWFjIiBdICYmIGV4cG9ydCBEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSD0i JFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTi9saWIvIgorLQkJCWV4cG9ydCBGUkVFVFlQRV9QUk9Q RVJUSUVTPSJ0cnVldHlwZTppbnRlcnByZXRlci12ZXJzaW9uPTM1IgorLQkJCWV4cG9ydCBMRF9M SUJSQVJZX1BBVEg9IiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04vbGliLzokV0lORURJUi8kUE9M X1dJTkVWRVJTSU9OL2xpYjY0LzokTERfTElCUkFSWV9QQVRIIgorLQkJCVsgIiRQT0xfT1MiID0g IkZyZWVCU0QiIF0gJiYgZXhwb3J0IExEXzMyX0xJQlJBUllfUEFUSD0iJFdJTkVESVIvJFBPTF9X SU5FVkVSU0lPTi9saWIvOiRMRF8zMl9MSUJSQVJZX1BBVEgiCistCQlmaQorLQllbHNlCistCQlp ZiBbICIkUE9MX09TIiA9ICJNYWMiIF07IHRoZW4KKy0JCQlbICIkRFlMRF9GQUxMQkFDS19MSUJS QVJZX1BBVEgiID0gIiIgXSAmJiBleHBvcnQgRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEg9IiRS RVNPVVJDRVBBVEgvdW5peC93aW5lL2xpYi8iCistCQlmaQorLQlmaQorLQljZCAiJE9MRFBBVEgi CisrUE9MX1dpbmVfU2V0VmVyc2lvbkVudigpIHsKKysgICMgVXNhZ2U6IFBPTF9XaW5lX1NldFdp bmVWZXJzaW9uIFtWRVJTSU9OXQorKyAgIyBHZXQgZmlyc3QgYXJndW1lbnQncyB3aW5lIHZlcnNp b24gYW5kIHNldCBQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlCisrICBbICEgIiQxIiA9ICIiIF0g JiYgZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCisrICBbICIkUE9MX1dJTkVWRVJTSU9OIiA9 ICIiIF0gJiYgUE9MX0RlYnVnX1dhcm5pbmcgIk5vIFBPTF9XSU5FVkVSU0lPTiBzZXQsIGFzc3Vt aW5nIGl0IGlzIHJlc2V0IgorKyAgWyAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdICYmIGV4cG9y dCBQT0xfV0lORVZFUlNJT049Ii0tcmVzZXQiCisrICBpZiBbICEgIiRQT0xfV0lORVZFUlNJT04i ID0gIiIgXTsgdGhlbgorKyAgICBbICIkUE9MX0FSQ0giID0gIiIgXSAmJiBQT0xfU3lzdGVtX1Nl dEFyY2ggImF1dG8iCisrICAgICNQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIHZlcnNp b24gcGF0aDogJFBPTF9XSU5FVkVSU0lPTiwgJFBPTF9BUkNIIgorKyAgICBbICIkUE9MX09TIiA9 ICJNYWMiIF0gJiYgQVJDSF9QUkVGSVg9ImRhcndpbiIKKysgICAgWyAiJFBPTF9PUyIgPSAiRnJl ZUJTRCIgXSAmJiBBUkNIX1BSRUZJWD0iZnJlZWJzZCIKKysgICAgWyAiJFBPTF9PUyIgPSAiTGlu dXgiIF0gJiYgQVJDSF9QUkVGSVg9ImxpbnV4IgorKyAgICBPTERQQVRIPSIkUFdEIgorKyAgICBX SU5FRElSPSIkUE9MX1VTRVJfUk9PVC93aW5lLyRBUkNIX1BSRUZJWC0kUE9MX0FSQ0giCisrICAg IG1rZGlyIC1wICIkV0lORURJUiIKKysgICAgY2QgIiRXSU5FRElSIgorKworKyAgICBpZiBbICIk UE9MX1dJTkVWRVJTSU9OIiA9ICItLXJlc2V0IiBdOyB0aGVuCisrICAgICAgZXhwb3J0IFBBVEg9 IiRQQVRIX09SSUdJTiIKKysgICAgICBleHBvcnQgTERfTElCUkFSWV9QQVRIPSIkTERfUEFUSF9P UklHSU4iCisrICAgICAgWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIgXSAmJiBleHBvcnQgTERfMzJf TElCUkFSWV9QQVRIPSIkTERfMzJfUEFUSF9PUklHSU4iCisrICAgICAgZXhwb3J0IFBPTF9XSU5F VkVSU0lPTj0iIgorKyAgICBlbHNlCisrICAgICAgaWYgWyAhIC1lICIkV0lORURJUi8kUE9MX1dJ TkVWRVJTSU9OIiBdOyB0aGVuCisrICAgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiV2luZSAkUE9M X1dJTkVWRVJTSU9OIG5vdCBpbnN0YWxsZWQuIEluc3RhbGxpbmcgaXQiCisrICAgICAgICBQT0xf V2luZV9JbnN0YWxsVmVyc2lvbiAiJFBPTF9XSU5FVkVSU0lPTiIKKysgICAgICAgIFtbICIkPyIg PT0gMiBdXSAmJiByZXR1cm4gMAorKyAgICAgIGZpCisrICAgICAgZWNobyAiU2V0dGluZyBwYXRo cy4uLiIKKysgICAgICBleHBvcnQgUEFUSD0iJFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTi9iaW4v OiRQQVRIIgorKyAgICAgIFsgIiRQT0xfT1MiID0gIk1hYyIgXSAmJiBleHBvcnQgRFlMRF9GQUxM QkFDS19MSUJSQVJZX1BBVEg9IiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04vbGliLyIKKysgICAg ICBleHBvcnQgRlJFRVRZUEVfUFJPUEVSVElFUz0idHJ1ZXR5cGU6aW50ZXJwcmV0ZXItdmVyc2lv bj0zNSIKKysgICAgICBleHBvcnQgTERfTElCUkFSWV9QQVRIPSIkV0lORURJUi8kUE9MX1dJTkVW RVJTSU9OL2xpYi86JFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTi9saWI2NC86JExEX0xJQlJBUllf UEFUSCIKKysgICAgICBbICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdICYmIGV4cG9ydCBMRF8zMl9M SUJSQVJZX1BBVEg9IiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04vbGliLzokTERfMzJfTElCUkFS WV9QQVRIIgorKyAgICBmaQorKyAgZWxzZQorKyAgICBpZiBbICIkUE9MX09TIiA9ICJNYWMiIF07 IHRoZW4KKysgICAgICBbICIkRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEgiID0gIiIgXSAmJiBl eHBvcnQgRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEg9IiRSRVNPVVJDRVBBVEgvdW5peC93aW5l L2xpYi8iCisrICAgIGZpCisrICBmaQorKyAgY2QgIiRPTERQQVRIIgorIH0KKy1QT0xfV2luZV9T ZXRWZXJzaW9uUHJlZml4KCkKKy17CistCSMgVXNhZ2U6IFBPTF9XaW5lX1NldFZlcnNpb25QcmVm aXggW1ZFUlNJT05dCistCSMgQ2hhbmdlIGEgcHJlZml4IHdpbmUgdmVyc2lvbgorLQlbICEgIiQx IiA9ICIiIF0gJiYgZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCistCVsgIiRXSU5FUFJFRklY IiA9ICIiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIGlzIG5vdCBzZXQhIgorLQor LQlQT0xfQ29uZmlnX1ByZWZpeFdyaXRlICJWRVJTSU9OIiAiJFBPTF9XSU5FVkVSU0lPTiIKKytQ T0xfV2luZV9TZXRWZXJzaW9uUHJlZml4KCkgeworKyAgIyBVc2FnZTogUE9MX1dpbmVfU2V0VmVy c2lvblByZWZpeCBbVkVSU0lPTl0KKysgICMgQ2hhbmdlIGEgcHJlZml4IHdpbmUgdmVyc2lvbgor KyAgWyAhICIkMSIgPSAiIiBdICYmIGV4cG9ydCBQT0xfV0lORVZFUlNJT049IiQxIgorKyAgWyAi JFdJTkVQUkVGSVgiID0gIiIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggaXMgbm90 IHNldCEiCisrCisrICBQT0xfQ29uZmlnX1ByZWZpeFdyaXRlICJWRVJTSU9OIiAiJFBPTF9XSU5F VkVSU0lPTiIKKyB9CistUE9MX1dpbmVfUHJlZml4RGVsZXRlKCkKKy17CistCVsgLXogIiRXSU5F UFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorLSAJbG9j YWwgd2luZXByZWZpeD0iJFdJTkVQUkVGSVgiCistCXdpbmVwcmVmaXg9JHt3aW5lcHJlZml4Ly8i Ly8iLyIvIn0KKy0JbG9jYWwgc2hvcnRjdXRzPSgpCistCWxvY2FsIE9MRElGUz0iJElGUyIKKy0J SUZTPSQnXG4nCistCWNkICIkUE9MX1VTRVJfUk9PVC9zaG9ydGN1dHMvIiAmJgorLQlmb3Igc2hv cnRjdXQgaW4gKgorLQlkbworLQkJWyAiJChkZXRlY3Rfd2luZXByZWZpeCAiJHNob3J0Y3V0Iiki ID0gIiR3aW5lcHJlZml4IiBdICYmIHNob3J0Y3V0cys9KCIkc2hvcnRjdXQiKQorLQlkb25lCist CUlGUz0iJE9MRElGUyIKKy0KKy0JIyBjZiBNYWluV2luZG93LkRlbGV0ZVByZWZpeCgpCistCVBP TF9TZXR1cFdpbmRvd193YWl0X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAnVW5pbnN0YWxs aW5nLi4uJykiICIkKGV2YWxfZ2V0dGV4dCAnJEFQUExJQ0FUSU9OX1RJVExFIFVuaW5zdGFsbGVy JykiCistCWlmIFsgIiR7I3Nob3J0Y3V0c1tAXX0iIC1ndCAwIF07IHRoZW4KKy0gCQlQT0xfRGVi dWdfV2FybmluZyAiJHdpbmVwcmVmaXggaXMgc3RpbGwgaW4gdXNlIGJ5ICR7I3Nob3J0Y3V0c1tA XX0gc2hvcnRjdXRzLCByZW1vdmluZyB0aGVtIGZpcnN0IgorLQkJZm9yIHNob3J0Y3V0IGluICIk e3Nob3J0Y3V0c1tAXX0iOyBkbworLQkJCVBPTF9EZWJ1Z19NZXNzYWdlICJSZW1vdmluZyBzaG9y dGN1dCAkc2hvcnRjdXQuLi4iCistCQkJYmFzaCAiJFBMQVlPTkxJTlVYL2Jhc2gvdW5pbnN0YWxs IiAtLW5vbi1pbnRlcmFjdGl2ZSAiJHNob3J0Y3V0IgorLQkJZG9uZQorLQlmaQorLQorLSAgICAg ICAgY2xlYW5fd2luZXByZWZpeCAtLW5vbi1pbnRlcmFjdGl2ZSAiJFdJTkVQUkVGSVgiCisrUE9M X1dpbmVfUHJlZml4RGVsZXRlKCkgeworKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0Rl YnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisrICBsb2NhbCB3aW5lcHJlZml4PSIkV0lO RVBSRUZJWCIKKysgIHdpbmVwcmVmaXg9JHt3aW5lcHJlZml4Ly8iLy8iLyIvIn0KKysgIGxvY2Fs IHNob3J0Y3V0cz0oKQorKyAgbG9jYWwgT0xESUZTPSIkSUZTIgorKyAgSUZTPSQnXG4nCisrICBj ZCAiJFBPTF9VU0VSX1JPT1Qvc2hvcnRjdXRzLyIgJiYKKysgICAgZm9yIHNob3J0Y3V0IGluICo7 IGRvCisrICAgICAgWyAiJChkZXRlY3Rfd2luZXByZWZpeCAiJHNob3J0Y3V0IikiID0gIiR3aW5l cHJlZml4IiBdICYmIHNob3J0Y3V0cys9KCIkc2hvcnRjdXQiKQorKyAgICBkb25lCisrICBJRlM9 IiRPTERJRlMiCisrCisrICAjIGNmIE1haW5XaW5kb3cuRGVsZXRlUHJlZml4KCkKKysgIFBPTF9T ZXR1cFdpbmRvd193YWl0X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAnVW5pbnN0YWxsaW5n Li4uJykiICIkKGV2YWxfZ2V0dGV4dCAnJEFQUExJQ0FUSU9OX1RJVExFIFVuaW5zdGFsbGVyJyki CisrICBpZiBbICIkeyNzaG9ydGN1dHNbQF19IiAtZ3QgMCBdOyB0aGVuCisrICAgIFBPTF9EZWJ1 Z19XYXJuaW5nICIkd2luZXByZWZpeCBpcyBzdGlsbCBpbiB1c2UgYnkgJHsjc2hvcnRjdXRzW0Bd fSBzaG9ydGN1dHMsIHJlbW92aW5nIHRoZW0gZmlyc3QiCisrICAgIGZvciBzaG9ydGN1dCBpbiAi JHtzaG9ydGN1dHNbQF19IjsgZG8KKysgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiUmVtb3Zpbmcg c2hvcnRjdXQgJHNob3J0Y3V0Li4uIgorKyAgICAgIGJhc2ggIiRQTEFZT05MSU5VWC9iYXNoL3Vu aW5zdGFsbCIgLS1ub24taW50ZXJhY3RpdmUgIiRzaG9ydGN1dCIKKysgICAgZG9uZQorKyAgZmkK KysKKysgIGNsZWFuX3dpbmVwcmVmaXggLS1ub24taW50ZXJhY3RpdmUgIiRXSU5FUFJFRklYIgor IH0KKy1QT0xfV2luZV9QcmVmaXhDcmVhdGUoKQorLXsKKy0JIyBDcmVhdGUgYSB3aW5lcHJlZml4 CistCSMgVXNhZ2U6IFBPTF9XaW5lX1ByZWZpeENyZWF0ZSBbVkVSU0lPTl0KKy0JaWYgWyAhICIk MSIgPSAiIiBdOyB0aGVuCistCQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBQT0xfV0lORVZF UlNJT04gdG8gJDEiCistCQlleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIkMSIKKy0JZWxpZiBbICIk UE9MX1dJTkVWRVJTSU9OIiBdOyB0aGVuCistCQlQT0xfRGVidWdfTWVzc2FnZSAiUE9MX1dJTkVW RVJTSU9OIGlzIGFscmVhZHkgc2V0IHRvICRQT0xfV0lORVZFUlNJT04uIFVzaW5nIGl0IgorLQll bHNlCistCQlQT0xfRGVidWdfTWVzc2FnZSAiTm8gdmVyc2lvbiBzcGVjaWZpZWQuIFVzaW5nIHN5 c3RlbSB2ZXJzaW9uICgkKHdpbmUgLS12ZXJzaW9uKSkiCistCWZpCistCistCVBPTF9EZWJ1Z19N ZXNzYWdlICJDcmVhdGluZyBwcmVmaXggKCRQT0xfV0lORVZFUlNJT04pLi4uIgorLQlbICIkUE9M X0FSQ0giID0gIiIgXSAmJiBQT0xfU3lzdGVtX1NldEFyY2ggImF1dG8iCistCVsgIiRXSU5FUFJF RklYIiA9ICIiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIGlzIG5vdCBzZXQhIgor LQorLQlpZiBbIC1lICIkV0lORVBSRUZJWCIgXTsgdGhlbgorLQkJUE9MX0RlYnVnX01lc3NhZ2Ug IlByZWZpeCBhbHJlYWR5IGV4aXN0cyIKKy0JCUxOR19PVkVSV1JJVEU9IiQoZXZhbF9nZXR0ZXh0 ICdPdmVyd3JpdGUgKHVzdWFsbHkgd29ya3MsIG5vIGd1YXJhbnRlZSknKSIKKy0JCUxOR19FUkFT RT0iJChldmFsX2dldHRleHQgJ0VyYXNlICh2aXJ0dWFsIGRyaXZlIGNvbnRlbnQgd2lsbCBiZSBs b3N0KScpIgorLQkJTE5HX0FCT1JUPSIkKGV2YWxfZ2V0dGV4dCAnQWJvcnQgaW5zdGFsbGF0aW9u JykiCistCistCQlPTERfQVJDSD0iIgorLQkJWyAtZSAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgu Y2ZnIiBdICYmIE9MRF9BUkNIPSQoUE9MX0NvbmZpZ19QcmVmaXhSZWFkICJBUkNIIikKKy0JCWlm IFsgIiRPTERfQVJDSCIgPSAiJFBPTF9VU0VSX0FSQ0giIF07IHRoZW4KKy0JCQlQUkVGSVhfQ0hP SUNFUz0iJExOR19PVkVSV1JJVEV+JExOR19FUkFTRX4kTE5HX0FCT1JUIgorLQkJZWxzZQorLQkJ CSMgU2V0dGluZ3MgYXJlIG5vdCBjb21wYXRpYmxlLCBvdmVyd3JpdGluZyBpcyBub3QgYW4gb3B0 aW9uCistCQkJUFJFRklYX0NIT0lDRVM9IiRMTkdfRVJBU0V+JExOR19BQk9SVCIKKy0JCWZpCist CistCQlPTERfQVBQX0FOV1NFUj0iJEFQUF9BTlNXRVIiCistCQlQUkVGTkFNRT0iJChiYXNlbmFt ZSAkV0lORVBSRUZJWCkiCistCQlQT0xfU2V0dXBXaW5kb3dfbWVudSAiJChldmFsX2dldHRleHQg J1RoZSB0YXJnZXQgdmlydHVhbCBkcml2ZSAkUFJFRk5BTUUgYWxyZWFkeSBleGlzdHM6JykiICIk VElUTEUiICIkUFJFRklYX0NIT0lDRVMiICJ+IgorLQkJY2FzZSAiJEFQUF9BTlNXRVIiIGluCist CQkJIiRMTkdfT1ZFUldSSVRFIikKKy0JCQkJIyBQcmVmaXggY29udGVudCBpcyBub3QgcmVwcm9k dWNpYmxlLCBpdCdzIHRlbXB0aW5nIHRvIGRpc2FsbG93IHJlcG9ydHMKKy0JCQkJIyBOT0JVR1JF UE9SVD0iVFJVRSIKKy0JCQkJUE9MX0RlYnVnX01lc3NhZ2UgIk92ZXJ3cml0ZSBQcmVmaXgiCist CQkJCSMgU2hvdWxkIHdlIHJldmVydCB3aGF0IGhhcyBiZWVuIGF1dG9kZXRlY3RlZCBieSBTZWxl Y3RQcmVmaXggaGVyZSB0b28/CistCQkJCTs7CistCQkJIiRMTkdfRVJBU0UiKQorLQkJCQlQT0xf RGVidWdfTWVzc2FnZSAiRXJhc2UgUHJlZml4IgorLQkJCQlQT0xfV2luZV9QcmVmaXhEZWxldGUK Ky0JCQkJIyBSZXZlcnQgd2hhdCBjb3VsZCBoYXZlIGJlZW4gYXV0b2RldGVjdGVkIHdpdGggU2Vs ZWN0UHJlZml4CistCQkJCVBPTF9BUkNIPSIkUE9MX1VTRVJfQVJDSCIKKy0JCQkJOzsKKy0JCQkq KQorLQkJCQlOT0JVR1JFUE9SVD0iVFJVRSIKKy0JCQkJUE9MX0RlYnVnX0ZhdGFsICIkKGV2YWxf Z2V0dGV4dCAnVXNlciBhYm9ydCcpIgorLQkJCQk7OworLQkJZXNhYworLQkJQVBQX0FOU1dFUj0i JE9MRF9BUFBfQU5XU0VSIgorLQlmaQorLQorLQlQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJChldmFs X2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlIHRoZSB2aXJ0dWFsIGRyaXZlIGlzIGJlaW5nIGNy ZWF0ZWQuLi4nKSIgIiRUSVRMRSIKKy0JaWYgWyAtZSAiJFdJTkVQUkVGSVgiIF07IHRoZW4KKy0J CXRvdWNoICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5jZmciCistCQlpZiBbICEgIiRQT0xfV0lO RVZFUlNJT04iID0gIiIgXTsgdGhlbgorLQkJCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHZl cnNpb24gdG8gJFBPTF9XSU5FVkVSU0lPTiIKKy0JCQlQT0xfV2luZV9TZXRWZXJzaW9uUHJlZml4 ICIkUE9MX1dJTkVWRVJTSU9OIgorLQkJCVBPTF9XaW5lX1NldFZlcnNpb25FbnYKKy0JCWZpCist CWVsc2UJIyBQcmVmaXggZG9lcyBub3QgZXhpdCwgbGV0J3MgY3JlYXRlIGl0CistCQlpZiBbICIk UE9MX1dJTkVWRVJTSU9OIiA9ICIiIF07IHRoZW4KKy0JCQkjIFN5c3RlbSB3aW5ldmVyc2lvbgor LQkJCSMjIFJlYWxseSBiYWQgaWRlYQorLQkJCSMjIGV4cG9ydCBXSU5FQVJDSD13aW4zMgorLQkJ CWlmIFsgISAiJFBPTF9BUkNIIiA9ICIiIF07IHRoZW4KKy0JCQkJaWYgWyAiJFBPTF9BUkNIIiA9 ICJ4ODYiIF07IHRoZW4KKy0JCQkJCWV4cG9ydCBXSU5FQVJDSD13aW4zMgorLQkJCQllbHNlCist CQkJCQlleHBvcnQgV0lORUFSQ0g9d2luNjQKKy0JCQkJZmkKKy0JCQkJUE9MX0RlYnVnX01lc3Nh Z2UgIlNldHRpbmcgV0lORUFSQ0ggdG8gJFdJTkVBUkNIIgorLQkJCWZpCistCistCQkJd2luZSB3 aW5lYm9vdAorLQkJCVBPTF9EZWJ1Z19Jbml0UHJlZml4CistCistCQkJaWYgWyAtZSAiJFdJTkVQ UkVGSVgvZHJpdmVfYy93aW5kb3dzL3N5c3dvdzY0IiBdICMgSXQgaXMgYSA2NCBiaXRzIHByZWZp eAorLQkJCXRoZW4KKy0JCQkJUE9MX0NvbmZpZ19QcmVmaXhXcml0ZSAiQVJDSCIgImFtZDY0Igor LQkJCQlQT0xfRGVidWdfTG9nVG9QcmVmaXggIlRoaXMgaXMgYSA2NGJpdHMgcHJlZml4ISIKKy0J CQkJUE9MX0NvbmZpZ19Xcml0ZSBXSU5FX1NZU1RFTV9BUkNIIGFtZDY0CistCQkJZWxzZQorLQkJ CQlQT0xfQ29uZmlnX1ByZWZpeFdyaXRlICJBUkNIIiAieDg2IgorLQkJCQlQT0xfRGVidWdfTG9n VG9QcmVmaXggIlRoaXMgaXMgYSAzMmJpdHMgcHJlZml4ISIKKy0JCQkJUE9MX0NvbmZpZ19Xcml0 ZSBXSU5FX1NZU1RFTV9BUkNIIHg4NgorLQkJCWZpCistCQllbHNlCistCQkJbWtkaXIgLXAgIiRX SU5FUFJFRklYIgorLQkJCVBPTF9EZWJ1Z19NZXNzYWdlICJVc2luZyB3aW5lICRQT0xfV0lORVZF UlNJT04iCistCQkJUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24gIiRQT0xfV0lORVZFUlNJT04iCist CQkJUE9MX1NldHVwV2luZG93X3dhaXQgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGls ZSB0aGUgdmlydHVhbCBkcml2ZSBpcyBiZWluZyBjcmVhdGVkLi4uJykiICIkVElUTEUiCistCQkJ UE9MX0NvbmZpZ19QcmVmaXhXcml0ZSAiQVJDSCIgIiRQT0xfQVJDSCIKKy0JCQlQT0xfQ29uZmln X1ByZWZpeFdyaXRlICJWRVJTSU9OIiAiJFBPTF9XSU5FVkVSU0lPTiIKKy0JCQlQT0xfV2luZV9B dXRvU2V0VmVyc2lvbkVudgorLQorLQkJCVBPTF9EZWJ1Z19Jbml0UHJlZml4CistCistCQkJd2hp Y2ggd2luZXByZWZpeGNyZWF0ZSAmJiBbICIkKFBPTF9NRDVfZmlsZSAiJCh3aGljaCB3aW5lcHJl Zml4Y3JlYXRlKSIpIiAhPSAiNWMwZWU5MDY4Mjc0NmU4MTE2OThhNTM0MTViNDc2NWQiIF0gJiYg WyAhICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUgfCBncmVwICRBUFBMSUNBVElPTl9USVRMRSki ID0gIiIgXSAmJiB3aW5lIHdpbmVwcmVmaXhjcmVhdGUKKy0JCQl3aW5lIHdpbmVib290CistCQlm aQorLQlmaQorLQorLQkjIE1ha2Ugc3VyZSB0aGF0IC5yZWcgZmlsZXMgYXJlIGNyZWF0ZWQKKy0J aWYgd2hpY2ggd2luZXNlcnZlcjsgdGhlbgorLQkJd2luZXNlcnZlciAtdworLQllbHNlCistCQlQ T0xfRGVidWdfTWVzc2FnZSAiV2FybmluZywgd2luZXNlcnZlciBub3QgZm91bmQiCistCQlzbGVl cCA0CistCWZpCistCVBPTF9Mb2FkVmFyX1BST0dSQU1GSUxFUworLQlbIC1lICIkUE9MX1VTRVJf Uk9PVC9jb25maWd1cmF0aW9ucy9wb3N0X3ByZWZpeGNyZWF0ZSIgXSAmJiBcCistCSAgICBzb3Vy Y2UgIiRQT0xfVVNFUl9ST09UL2NvbmZpZ3VyYXRpb25zL3Bvc3RfcHJlZml4Y3JlYXRlIgorK1BP TF9XaW5lX1ByZWZpeENyZWF0ZSgpIHsKKysgICMgQ3JlYXRlIGEgd2luZXByZWZpeAorKyAgIyBV c2FnZTogUE9MX1dpbmVfUHJlZml4Q3JlYXRlIFtWRVJTSU9OXQorKyAgaWYgWyAhICIkMSIgPSAi IiBdOyB0aGVuCisrICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFBPTF9XSU5FVkVSU0lP TiB0byAkMSIKKysgICAgZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCisrICBlbGlmIFsgIiRQ T0xfV0lORVZFUlNJT04iIF07IHRoZW4KKysgICAgUE9MX0RlYnVnX01lc3NhZ2UgIlBPTF9XSU5F VkVSU0lPTiBpcyBhbHJlYWR5IHNldCB0byAkUE9MX1dJTkVWRVJTSU9OLiBVc2luZyBpdCIKKysg IGVsc2UKKysgICAgUE9MX0RlYnVnX01lc3NhZ2UgIk5vIHZlcnNpb24gc3BlY2lmaWVkLiBVc2lu ZyBzeXN0ZW0gdmVyc2lvbiAoJCh3aW5lIC0tdmVyc2lvbikpIgorKyAgZmkKKysKKysgIFBPTF9E ZWJ1Z19NZXNzYWdlICJDcmVhdGluZyBwcmVmaXggKCRQT0xfV0lORVZFUlNJT04pLi4uIgorKyAg WyAiJFBPTF9BUkNIIiA9ICIiIF0gJiYgUE9MX1N5c3RlbV9TZXRBcmNoICJhdXRvIgorKyAgWyAi JFdJTkVQUkVGSVgiID0gIiIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggaXMgbm90 IHNldCEiCisrCisrICBpZiBbIC1lICIkV0lORVBSRUZJWCIgXTsgdGhlbgorKyAgICBQT0xfRGVi dWdfTWVzc2FnZSAiUHJlZml4IGFscmVhZHkgZXhpc3RzIgorKyAgICBMTkdfT1ZFUldSSVRFPSIk KGV2YWxfZ2V0dGV4dCAnT3ZlcndyaXRlICh1c3VhbGx5IHdvcmtzLCBubyBndWFyYW50ZWUpJyki CisrICAgIExOR19FUkFTRT0iJChldmFsX2dldHRleHQgJ0VyYXNlICh2aXJ0dWFsIGRyaXZlIGNv bnRlbnQgd2lsbCBiZSBsb3N0KScpIgorKyAgICBMTkdfQUJPUlQ9IiQoZXZhbF9nZXR0ZXh0ICdB Ym9ydCBpbnN0YWxsYXRpb24nKSIKKysKKysgICAgT0xEX0FSQ0g9IiIKKysgICAgWyAtZSAiJFdJ TkVQUkVGSVgvcGxheW9ubGludXguY2ZnIiBdICYmIE9MRF9BUkNIPSQoUE9MX0NvbmZpZ19QcmVm aXhSZWFkICJBUkNIIikKKysgICAgaWYgWyAiJE9MRF9BUkNIIiA9ICIkUE9MX1VTRVJfQVJDSCIg XTsgdGhlbgorKyAgICAgIFBSRUZJWF9DSE9JQ0VTPSIkTE5HX09WRVJXUklURX4kTE5HX0VSQVNF fiRMTkdfQUJPUlQiCisrICAgIGVsc2UKKysgICAgICAjIFNldHRpbmdzIGFyZSBub3QgY29tcGF0 aWJsZSwgb3ZlcndyaXRpbmcgaXMgbm90IGFuIG9wdGlvbgorKyAgICAgIFBSRUZJWF9DSE9JQ0VT PSIkTE5HX0VSQVNFfiRMTkdfQUJPUlQiCisrICAgIGZpCisrCisrICAgIE9MRF9BUFBfQU5XU0VS PSIkQVBQX0FOU1dFUiIKKysgICAgUFJFRk5BTUU9IiQoYmFzZW5hbWUgJFdJTkVQUkVGSVgpIgor KyAgICBQT0xfU2V0dXBXaW5kb3dfbWVudSAiJChldmFsX2dldHRleHQgJ1RoZSB0YXJnZXQgdmly dHVhbCBkcml2ZSAkUFJFRk5BTUUgYWxyZWFkeSBleGlzdHM6JykiICIkVElUTEUiICIkUFJFRklY X0NIT0lDRVMiICJ+IgorKyAgICBjYXNlICIkQVBQX0FOU1dFUiIgaW4KKysgICAgIiRMTkdfT1ZF UldSSVRFIikKKysgICAgICAjIFByZWZpeCBjb250ZW50IGlzIG5vdCByZXByb2R1Y2libGUsIGl0 J3MgdGVtcHRpbmcgdG8gZGlzYWxsb3cgcmVwb3J0cworKyAgICAgICMgTk9CVUdSRVBPUlQ9IlRS VUUiCisrICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIk92ZXJ3cml0ZSBQcmVmaXgiCisrICAgICAg IyBTaG91bGQgd2UgcmV2ZXJ0IHdoYXQgaGFzIGJlZW4gYXV0b2RldGVjdGVkIGJ5IFNlbGVjdFBy ZWZpeCBoZXJlIHRvbz8KKysgICAgICA7OworKyAgICAiJExOR19FUkFTRSIpCisrICAgICAgUE9M X0RlYnVnX01lc3NhZ2UgIkVyYXNlIFByZWZpeCIKKysgICAgICBQT0xfV2luZV9QcmVmaXhEZWxl dGUKKysgICAgICAjIFJldmVydCB3aGF0IGNvdWxkIGhhdmUgYmVlbiBhdXRvZGV0ZWN0ZWQgd2l0 aCBTZWxlY3RQcmVmaXgKKysgICAgICBQT0xfQVJDSD0iJFBPTF9VU0VSX0FSQ0giCisrICAgICAg OzsKKysgICAgKikKKysgICAgICBOT0JVR1JFUE9SVD0iVFJVRSIKKysgICAgICBQT0xfRGVidWdf RmF0YWwgIiQoZXZhbF9nZXR0ZXh0ICdVc2VyIGFib3J0JykiCisrICAgICAgOzsKKysgICAgZXNh YworKyAgICBBUFBfQU5TV0VSPSIkT0xEX0FQUF9BTldTRVIiCisrICBmaQorKworKyAgUE9MX1Nl dHVwV2luZG93X3dhaXQgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgdmly dHVhbCBkcml2ZSBpcyBiZWluZyBjcmVhdGVkLi4uJykiICIkVElUTEUiCisrICBpZiBbIC1lICIk V0lORVBSRUZJWCIgXTsgdGhlbgorKyAgICB0b3VjaCAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgu Y2ZnIgorKyAgICBpZiBbICEgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXTsgdGhlbgorKyAgICAg IFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHZlcnNpb24gdG8gJFBPTF9XSU5FVkVSU0lPTiIK KysgICAgICBQT0xfV2luZV9TZXRWZXJzaW9uUHJlZml4ICIkUE9MX1dJTkVWRVJTSU9OIgorKyAg ICAgIFBPTF9XaW5lX1NldFZlcnNpb25FbnYKKysgICAgZmkKKysgIGVsc2UgIyBQcmVmaXggZG9l cyBub3QgZXhpdCwgbGV0J3MgY3JlYXRlIGl0CisrICAgIGlmIFsgIiRQT0xfV0lORVZFUlNJT04i ID0gIiIgXTsgdGhlbgorKyAgICAgICMgU3lzdGVtIHdpbmV2ZXJzaW9uCisrICAgICAgIyMgUmVh bGx5IGJhZCBpZGVhCisrICAgICAgIyMgZXhwb3J0IFdJTkVBUkNIPXdpbjMyCisrICAgICAgaWYg WyAhICIkUE9MX0FSQ0giID0gIiIgXTsgdGhlbgorKyAgICAgICAgaWYgWyAiJFBPTF9BUkNIIiA9 ICJ4ODYiIF07IHRoZW4KKysgICAgICAgICAgZXhwb3J0IFdJTkVBUkNIPXdpbjMyCisrICAgICAg ICBlbHNlCisrICAgICAgICAgIGV4cG9ydCBXSU5FQVJDSD13aW42NAorKyAgICAgICAgZmkKKysg ICAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFdJTkVBUkNIIHRvICRXSU5FQVJDSCIK KysgICAgICBmaQorKworKyAgICAgIHdpbmUgd2luZWJvb3QKKysgICAgICBQT0xfRGVidWdfSW5p dFByZWZpeAorKworKyAgICAgIGlmIFsgLWUgIiRXSU5FUFJFRklYL2RyaXZlX2Mvd2luZG93cy9z eXN3b3c2NCIgXTsgdGhlbiAjIEl0IGlzIGEgNjQgYml0cyBwcmVmaXgKKysgICAgICAgIFBPTF9D b25maWdfUHJlZml4V3JpdGUgIkFSQ0giICJhbWQ2NCIKKysgICAgICAgIFBPTF9EZWJ1Z19Mb2dU b1ByZWZpeCAiVGhpcyBpcyBhIDY0Yml0cyBwcmVmaXghIgorKyAgICAgICAgUE9MX0NvbmZpZ19X cml0ZSBXSU5FX1NZU1RFTV9BUkNIIGFtZDY0CisrICAgICAgZWxzZQorKyAgICAgICAgUE9MX0Nv bmZpZ19QcmVmaXhXcml0ZSAiQVJDSCIgIng4NiIKKysgICAgICAgIFBPTF9EZWJ1Z19Mb2dUb1By ZWZpeCAiVGhpcyBpcyBhIDMyYml0cyBwcmVmaXghIgorKyAgICAgICAgUE9MX0NvbmZpZ19Xcml0 ZSBXSU5FX1NZU1RFTV9BUkNIIHg4NgorKyAgICAgIGZpCisrICAgIGVsc2UKKysgICAgICBta2Rp ciAtcCAiJFdJTkVQUkVGSVgiCisrICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIlVzaW5nIHdpbmUg JFBPTF9XSU5FVkVSU0lPTiIKKysgICAgICBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbiAiJFBPTF9X SU5FVkVSU0lPTiIKKysgICAgICBleGl0Q29kZT0iJD8iCisrICAgICAgUE9MX1NldHVwV2luZG93 X3dhaXQgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgdmlydHVhbCBkcml2 ZSBpcyBiZWluZyBjcmVhdGVkLi4uJykiICIkVElUTEUiCisrCisrICAgICAgaWYgW1sgISAiJGV4 aXRDb2RlIiA9PSAiMiIgXV07IHRoZW4gIyMgV2luZSB2ZXJzaW9uIGlzIGFjdHVhbGx5IGZvdW5k CisrICAgICAgICBQT0xfQ29uZmlnX1ByZWZpeFdyaXRlICJBUkNIIiAiJFBPTF9BUkNIIgorKyAg ICAgICAgUE9MX0NvbmZpZ19QcmVmaXhXcml0ZSAiVkVSU0lPTiIgIiRQT0xfV0lORVZFUlNJT04i CisrICAgICAgZmkKKysKKysgICAgICBQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgorKworKyAg ICAgIFBPTF9EZWJ1Z19Jbml0UHJlZml4CisrCisrICAgICAgd2hpY2ggd2luZXByZWZpeGNyZWF0 ZSAmJiBbICIkKFBPTF9NRDVfZmlsZSAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRlKSIpIiAhPSAi NWMwZWU5MDY4Mjc0NmU4MTE2OThhNTM0MTViNDc2NWQiIF0gJiYgWyAhICIkKHdoaWNoIHdpbmVw cmVmaXhjcmVhdGUgfCBncmVwICRBUFBMSUNBVElPTl9USVRMRSkiID0gIiIgXSAmJiB3aW5lIHdp bmVwcmVmaXhjcmVhdGUKKysgICAgICB3aW5lIHdpbmVib290CisrICAgIGZpCisrICBmaQorKwor KyAgIyBNYWtlIHN1cmUgdGhhdCAucmVnIGZpbGVzIGFyZSBjcmVhdGVkCisrICBpZiB3aGljaCB3 aW5lc2VydmVyOyB0aGVuCisrICAgIHdpbmVzZXJ2ZXIgLXcKKysgIGVsc2UKKysgICAgUE9MX0Rl YnVnX01lc3NhZ2UgIldhcm5pbmcsIHdpbmVzZXJ2ZXIgbm90IGZvdW5kIgorKyAgICBzbGVlcCA0 CisrICBmaQorKyAgUE9MX0xvYWRWYXJfUFJPR1JBTUZJTEVTCisrICBbIC1lICIkUE9MX1VTRVJf Uk9PVC9jb25maWd1cmF0aW9ucy9wb3N0X3ByZWZpeGNyZWF0ZSIgXSAmJgorKyAgICBzb3VyY2Ug IiRQT0xfVVNFUl9ST09UL2NvbmZpZ3VyYXRpb25zL3Bvc3RfcHJlZml4Y3JlYXRlIgorIH0KKy1Q T0xfV2luZV9PdmVycmlkZURMTCgpCisteworLQkjIE92ZXJyaWRlIERMTHMKKy0JTU9ERT0kMQor LQlbICIkTU9ERSIgPSAiZGlzYWJsZWQiIF0gJiYgdW5zZXQgTU9ERQorLQlzaGlmdAorLQorLQko Y2F0IDw8ICdFT0YnCisrUE9MX1dpbmVfT3ZlcnJpZGVETEwoKSB7CisrICAjIE92ZXJyaWRlIERM THMKKysgIE1PREU9JDEKKysgIFsgIiRNT0RFIiA9ICJkaXNhYmxlZCIgXSAmJiB1bnNldCBNT0RF CisrICBzaGlmdAorKworKyAgKAorKyAgICBjYXQgPDwnRU9GJworIFJFR0VESVQ0CisgCisgW0hL RVlfQ1VSUkVOVF9VU0VSXFNvZnR3YXJlXFdpbmVcRGxsT3ZlcnJpZGVzXQorIEVPRgorIAorLQlm b3IgRExMIGluICIkQCIKKy0JZG8KKy0JCWVjaG8gIlwiKiRETExcIj1cIiRNT0RFXCIiCistCWRv bmUpID4gIiRQT0xfVVNFUl9ST09UL3RtcC9vdmVycmlkZS1kbGwucmVnIgorKyAgICBmb3IgRExM IGluICIkQCI7IGRvCisrICAgICAgZWNobyAiXCIqJERMTFwiPVwiJE1PREVcIiIKKysgICAgZG9u ZQorKyAgKSA+IiRQT0xfVVNFUl9ST09UL3RtcC9vdmVycmlkZS1kbGwucmVnIgorIAorLQlQT0xf RGVidWdfTWVzc2FnZSAiT3ZlcnJpZGluZyBETExzIgorLQlQT0xfU2V0dXBXaW5kb3dfd2FpdF9u ZXh0X3NpZ25hbCAiJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0Li4uJykiICIkVElUTEUiCist CVBPTF9XaW5lIHJlZ2VkaXQgIiRQT0xfVVNFUl9ST09UL3RtcC9vdmVycmlkZS1kbGwucmVnIgor LQlybSAiJFBPTF9VU0VSX1JPT1QvdG1wL292ZXJyaWRlLWRsbC5yZWciCisrICBQT0xfRGVidWdf TWVzc2FnZSAiT3ZlcnJpZGluZyBETExzIgorKyAgUE9MX1NldHVwV2luZG93X3dhaXRfbmV4dF9z aWduYWwgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdC4uLicpIiAiJFRJVExFIgorKyAgUE9M X1dpbmUgcmVnZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wL292ZXJyaWRlLWRsbC5yZWciCisrICBy bSAiJFBPTF9VU0VSX1JPT1QvdG1wL292ZXJyaWRlLWRsbC5yZWciCisgfQorLVBPTF9XaW5lX0Rl bE92ZXJyaWRlRExMKCkKKy17CistCSMgRGVsZXRlIG92ZXJyaWRlIERMTHMKKy0JKGNhdCA8PCAn RU9GJworK1BPTF9XaW5lX0RlbE92ZXJyaWRlRExMKCkgeworKyAgIyBEZWxldGUgb3ZlcnJpZGUg RExMcworKyAgKAorKyAgICBjYXQgPDwnRU9GJworIFJFR0VESVQ0CisgCisgW0hLRVlfQ1VSUkVO VF9VU0VSXFNvZnR3YXJlXFdpbmVcRGxsT3ZlcnJpZGVzXQorIEVPRgorIAorLQlmb3IgRExMIGlu ICIkQCIKKy0JZG8KKy0JCWVjaG8gIlwiJERMTFwiPS0iCistCQllY2hvICJcIiokRExMXCI9LSIK Ky0JZG9uZSkgPiAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1vdmVycmlkZS1kbGwucmVnIgorLQlQ T0xfRGVidWdfTWVzc2FnZSAiRGVsZXRpbmcgb3ZlcnJpZGVzIERMTHMiCistCVBPTF9TZXR1cFdp bmRvd193YWl0X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQuLi4nKSIg IiRUSVRMRSIKKy0JUE9MX1dpbmUgcmVnZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1vdmVy cmlkZS1kbGwucmVnIgorLQlybSAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1vdmVycmlkZS1kbGwu cmVnIgorKyAgICBmb3IgRExMIGluICIkQCI7IGRvCisrICAgICAgZWNobyAiXCIkRExMXCI9LSIK KysgICAgICBlY2hvICJcIiokRExMXCI9LSIKKysgICAgZG9uZQorKyAgKSA+IiRQT0xfVVNFUl9S T09UL3RtcC9kZWwtb3ZlcnJpZGUtZGxsLnJlZyIKKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJEZWxl dGluZyBvdmVycmlkZXMgRExMcyIKKysgIFBPTF9TZXR1cFdpbmRvd193YWl0X25leHRfc2lnbmFs ICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQuLi4nKSIgIiRUSVRMRSIKKysgIFBPTF9XaW5l IHJlZ2VkaXQgIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtb3ZlcnJpZGUtZGxsLnJlZyIKKysgIHJt ICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLW92ZXJyaWRlLWRsbC5yZWciCisgfQorLVBPTF9XaW5l X092ZXJyaWRlRExMX0FwcCgpCisteworLQkjIEFwcC1zcGVjaWZpYyBETEwgb3ZlcnJpZGVzCist CUFQUD0iJDEiCistCU1PREU9IiQyIgorLQlbICIkTU9ERSIgPSAiZGlzYWJsZWQiIF0gJiYgdW5z ZXQgTU9ERQorLQlzaGlmdCAyCistCistCShjYXQgPDwgRU9GCisrUE9MX1dpbmVfT3ZlcnJpZGVE TExfQXBwKCkgeworKyAgIyBBcHAtc3BlY2lmaWMgRExMIG92ZXJyaWRlcworKyAgQVBQPSIkMSIK KysgIE1PREU9IiQyIgorKyAgWyAiJE1PREUiID0gImRpc2FibGVkIiBdICYmIHVuc2V0IE1PREUK KysgIHNoaWZ0IDIKKysKKysgICgKKysgICAgY2F0IDw8RU9GCisgUkVHRURJVDQKKyAKKyBbSEtF WV9DVVJSRU5UX1VTRVJcXFNvZnR3YXJlXFxXaW5lXFxBcHBEZWZhdWx0c1xcJEFQUFxcRGxsT3Zl cnJpZGVzXQorIEVPRgorLQlmb3IgRExMIGluICIkQCIKKy0JZG8KKy0JCSMgV2hvIGtub3dzIHdo YXQgdGhpcyBoYWNrIGlzIGZvcj8KKy0JCWlmIFsgIiRETEwiID0gImNvbWN0bDMyIiBdOyB0aGVu CistCQkJcm0gLXJmICIkV0lORVBSRUZJWC93aW5zeHMvbWFuaWZlc3RzL3g4Nl9taWNyb3NvZnQu d2luZG93cy5jb21tb24tY29udHJvbHNfNjU5NWI2NDE0NGNjZjFkZl82LjAuMjYwMC4yOTgyX25v bmVfZGVhZGJlZWYubWFuaWZlc3QiCistCQlmaQorLQkJZWNobyAiXCIqJERMTFwiPVwiJE1PREVc IiIKKy0JZG9uZSkgPiAiJFBPTF9VU0VSX1JPT1QvdG1wL2FwcC1kbGwtb3ZlcnJpZGUucmVnIgor LQlQT0xfV2luZSByZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvYXBwLWRsbC1vdmVycmlkZS5y ZWciCistCXJtICIkUE9MX1VTRVJfUk9PVC90bXAvYXBwLWRsbC1vdmVycmlkZS5yZWciCisrICAg IGZvciBETEwgaW4gIiRAIjsgZG8KKysgICAgICAjIFdobyBrbm93cyB3aGF0IHRoaXMgaGFjayBp cyBmb3I/CisrICAgICAgaWYgWyAiJERMTCIgPSAiY29tY3RsMzIiIF07IHRoZW4KKysgICAgICAg IHJtIC1yZiAiJFdJTkVQUkVGSVgvd2luc3hzL21hbmlmZXN0cy94ODZfbWljcm9zb2Z0LndpbmRv d3MuY29tbW9uLWNvbnRyb2xzXzY1OTViNjQxNDRjY2YxZGZfNi4wLjI2MDAuMjk4Ml9ub25lX2Rl YWRiZWVmLm1hbmlmZXN0IgorKyAgICAgIGZpCisrICAgICAgZWNobyAiXCIqJERMTFwiPVwiJE1P REVcIiIKKysgICAgZG9uZQorKyAgKSA+IiRQT0xfVVNFUl9ST09UL3RtcC9hcHAtZGxsLW92ZXJy aWRlLnJlZyIKKysgIFBPTF9XaW5lIHJlZ2VkaXQgIiRQT0xfVVNFUl9ST09UL3RtcC9hcHAtZGxs LW92ZXJyaWRlLnJlZyIKKysgIHJtICIkUE9MX1VTRVJfUk9PVC90bXAvYXBwLWRsbC1vdmVycmlk ZS5yZWciCisgfQorLVBPTF9XaW5lX0RlbE92ZXJyaWRlRExMX0FwcCgpCisteworLQkjIERlbGV0 ZSBhcHAtc3BlY2lmaWMgRExMIG92ZXJyaWRlcworLQlBUFA9IiQxIgorLQlzaGlmdAorK1BPTF9X aW5lX0RlbE92ZXJyaWRlRExMX0FwcCgpIHsKKysgICMgRGVsZXRlIGFwcC1zcGVjaWZpYyBETEwg b3ZlcnJpZGVzCisrICBBUFA9IiQxIgorKyAgc2hpZnQKKyAKKy0JKGNhdCA8PCBFT0YKKysgICgK KysgICAgY2F0IDw8RU9GCisgUkVHRURJVDQKKyAKKyBbSEtFWV9DVVJSRU5UX1VTRVJcXFNvZnR3 YXJlXFxXaW5lXFxBcHBEZWZhdWx0c1xcJEFQUFxcRGxsT3ZlcnJpZGVzXQorIEVPRgorLQlmb3Ig RExMIGluICIkQCIKKy0JZG8KKy0JCWVjaG8gIlwiJERMTFwiPS0iCistCQllY2hvICJcIiokRExM XCI9LSIKKy0JZG9uZSkgPiAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1hcHAtZGxsLW92ZXJyaWRl LnJlZyIKKy0JUE9MX1dpbmUgcmVnZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1hcHAtZGxs LW92ZXJyaWRlLnJlZyIKKy0Jcm0gIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtYXBwLWRsbC1vdmVy cmlkZS5yZWciCisrICAgIGZvciBETEwgaW4gIiRAIjsgZG8KKysgICAgICBlY2hvICJcIiRETExc Ij0tIgorKyAgICAgIGVjaG8gIlwiKiRETExcIj0tIgorKyAgICBkb25lCisrICApID4iJFBPTF9V U0VSX1JPT1QvdG1wL2RlbC1hcHAtZGxsLW92ZXJyaWRlLnJlZyIKKysgIFBPTF9XaW5lIHJlZ2Vk aXQgIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtYXBwLWRsbC1vdmVycmlkZS5yZWciCisrICBybSAi JFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1hcHAtZGxsLW92ZXJyaWRlLnJlZyIKKyB9CistUE9MX1dp bmVfUmVkaXJlY3RETEwoKQorLXsKKy0gICAgIyBSZWRpcmVjdCBETExzIHdpbmUtc3RhZ2luZyBm ZWF0dXJlCistICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3dpbmUtY29tcGhvbGlvL3dpbmUtc3Rh Z2luZy93aWtpL0RMTC1SZWRpcmVjdHMKKy0gICAgbG9jYWwgU09VUkNFPSIkMSIKKy0gICAgbG9j YWwgVEFSR0VUPSIkMiIKKy0gICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGxs UmVkaXJlY3RzJyAiJFNPVVJDRSIgIiRUQVJHRVQiCisrUE9MX1dpbmVfUmVkaXJlY3RETEwoKSB7 CisrICAjIFJlZGlyZWN0IERMTHMgd2luZS1zdGFnaW5nIGZlYXR1cmUKKysgICMgaHR0cHM6Ly9n aXRodWIuY29tL3dpbmUtY29tcGhvbGlvL3dpbmUtc3RhZ2luZy93aWtpL0RMTC1SZWRpcmVjdHMK KysgIGxvY2FsIFNPVVJDRT0iJDEiCisrICBsb2NhbCBUQVJHRVQ9IiQyIgorKyAgUE9MX1dpbmVf VXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGxsUmVkaXJlY3RzJyAiJFNPVVJDRSIgIiRUQVJHRVQi CisgfQorLVBPTF9XaW5lX0RlbFJlZGlyZWN0RExMKCkKKy17CistICAgIGxvY2FsIFNPVVJDRT0i JDEiCistICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RsbFJlZGlyZWN0cycg IiRTT1VSQ0UiICdkZWZhdWx0JworK1BPTF9XaW5lX0RlbFJlZGlyZWN0RExMKCkgeworKyAgbG9j YWwgU09VUkNFPSIkMSIKKysgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RsbFJl ZGlyZWN0cycgIiRTT1VSQ0UiICdkZWZhdWx0JworIH0KKy1QT0xfV2luZV9SZWRpcmVjdERMTF9B cHAoKQorLXsKKy0gICAgIyBBcHAtc3BlY2lmaWMgRExMIHJlZGlyZWN0CistICAgIGxvY2FsIEFQ UD0iJDEiCistICAgIGxvY2FsIFNPVVJDRT0iJDIiCistICAgIGxvY2FsIFRBUkdFVD0iJDMiCist ICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgIkFwcERlZmF1bHRzXFwkQVBQXFxE bGxSZWRpcmVjdHMiICIkU09VUkNFIiAiJFRBUkdFVCIKKytQT0xfV2luZV9SZWRpcmVjdERMTF9B cHAoKSB7CisrICAjIEFwcC1zcGVjaWZpYyBETEwgcmVkaXJlY3QKKysgIGxvY2FsIEFQUD0iJDEi CisrICBsb2NhbCBTT1VSQ0U9IiQyIgorKyAgbG9jYWwgVEFSR0VUPSIkMyIKKysgIFBPTF9XaW5l X1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgIkFwcERlZmF1bHRzXFwkQVBQXFxEbGxSZWRpcmVjdHMi ICIkU09VUkNFIiAiJFRBUkdFVCIKKyB9CistUE9MX1dpbmVfRGVsUmVkaXJlY3RETExfQXBwKCkK Ky17CistICAgICMgQXBwLXNwZWNpZmljIERMTCByZWRpcmVjdAorLSAgICBsb2NhbCBBUFA9IiQx IgorLSAgICBsb2NhbCBTT1VSQ0U9IiQyIgorLSAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdp bmVQYWlyICJBcHBEZWZhdWx0c1xcJEFQUFxcRGxsUmVkaXJlY3RzIiAiJFNPVVJDRSIgJ2RlZmF1 bHQnCisrUE9MX1dpbmVfRGVsUmVkaXJlY3RETExfQXBwKCkgeworKyAgIyBBcHAtc3BlY2lmaWMg RExMIHJlZGlyZWN0CisrICBsb2NhbCBBUFA9IiQxIgorKyAgbG9jYWwgU09VUkNFPSIkMiIKKysg IFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgIkFwcERlZmF1bHRzXFwkQVBQXFxEbGxS ZWRpcmVjdHMiICIkU09VUkNFIiAnZGVmYXVsdCcKKyB9CistUE9MX1dpbmVfV2FpdEJlZm9yZSAo KQorLXsKKy0JIyBMb2NrIGJhc2ggY29tbWFuZHMgdW50aWwgd2luZSBpcyBleGl0ZWQKKy0JIyBV c2FnZSA6IFBPTF9XaW5lX1dhaXRCZWZvcmUgW1Byb2dyYW0gdGl0bGVdICgtLWFsbG93LWtpbGwp CistCVNPRlROQU1FPSIkMSIKKy0JaWYgWyAiJDIiID0gIi0tYWxsb3cta2lsbCIgXQorLQl0aGVu CistCQlhbGxvd0tpbGw9InRydWUiCistCWVsc2UKKy0JCWFsbG93S2lsbD0iZmFsc2UiCistCWZp CistCistCVsgIiQxIiA9ICIiIF0gJiYgbWVzc2FnZT0iJChldmFsX2dldHRleHQgIlBsZWFzZSB3 YWl0Li4uIikiIHx8IG1lc3NhZ2U9IiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSAk U09GVE5BTUUgaXMgaW5zdGFsbGVkLi4uJykiCistCistCWlmIFsgIiRhbGxvd0tpbGwiID0gInRy dWUiIF0KKy0JdGhlbgorLQkJUE9MX1NldHVwV2luZG93X3dhaXRfYnV0dG9uICIkbWVzc2FnZSIg IiRUSVRMRSIgIiQoZXZhbF9nZXR0ZXh0ICdJbnN0YWxsIGlzIGRvbmUnKSIgIndpbmVzZXJ2ZXIg LWsiICIkKGV2YWxfZ2V0dGV4dCAnQmUgY2FyZWZ1bCEgVGhpcyB3aWxsIGtpbGwgaW5zdGFsbCBw cm9jZXNzLiBJZiBpdCBpcyBub3QgZmluaXNoZWQsIHlvdSB3aWxsIGhhdmUgdG8gcmVpbnN0YWxs ICRTT0ZUTkFNRScpIgorLQllbHNlCistCQlQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJG1lc3NhZ2Ui ICIkVElUTEUiCistCWZpCisrUE9MX1dpbmVfV2FpdEJlZm9yZSgpIHsKKysgICMgTG9jayBiYXNo IGNvbW1hbmRzIHVudGlsIHdpbmUgaXMgZXhpdGVkCisrICAjIFVzYWdlIDogUE9MX1dpbmVfV2Fp dEJlZm9yZSBbUHJvZ3JhbSB0aXRsZV0gKC0tYWxsb3cta2lsbCkKKysgIFNPRlROQU1FPSIkMSIK KysgIGlmIFsgIiQyIiA9ICItLWFsbG93LWtpbGwiIF07IHRoZW4KKysgICAgYWxsb3dLaWxsPSJ0 cnVlIgorKyAgZWxzZQorKyAgICBhbGxvd0tpbGw9ImZhbHNlIgorKyAgZmkKKysKKysgIFsgIiQx IiA9ICIiIF0gJiYgbWVzc2FnZT0iJChldmFsX2dldHRleHQgIlBsZWFzZSB3YWl0Li4uIikiIHx8 IG1lc3NhZ2U9IiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSAkU09GVE5BTUUgaXMg aW5zdGFsbGVkLi4uJykiCisrCisrICBpZiBbICIkYWxsb3dLaWxsIiA9ICJ0cnVlIiBdOyB0aGVu CisrICAgIFBPTF9TZXR1cFdpbmRvd193YWl0X2J1dHRvbiAiJG1lc3NhZ2UiICIkVElUTEUiICIk KGV2YWxfZ2V0dGV4dCAnSW5zdGFsbCBpcyBkb25lJykiICJ3aW5lc2VydmVyIC1rIiAiJChldmFs X2dldHRleHQgJ0JlIGNhcmVmdWwhIFRoaXMgd2lsbCBraWxsIGluc3RhbGwgcHJvY2Vzcy4gSWYg aXQgaXMgbm90IGZpbmlzaGVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJlaW5zdGFsbCAkU09GVE5BTUUn KSIKKysgIGVsc2UKKysgICAgUE9MX1NldHVwV2luZG93X3dhaXQgIiRtZXNzYWdlIiAiJFRJVExF IgorKyAgZmkKKyAKKyB9CistUE9MX1dpbmVfV2FpdEV4aXQgKCkKKy17CistCSMgTG9jayBiYXNo IGNvbW1hbmRzIHVudGlsIHdpbmUgaXMgZXhpdGVkCistCSMgVXNhZ2UgOiBQT0xfV2luZV9XYWl0 RXhpdCAoLS1mb3JjZS1pbnB1dCkgW1Byb2dyYW0gdGl0bGVdICgtLWFsbG93LWtpbGwpCistCWlm IFsgIiQxIiA9ICItLWZvcmNlLWlucHV0IiBdCistCXRoZW4KKy0JCWZvcmNlSW5wdXQ9InRydWUi CistCQlzaGlmdAorLQllbHNlCistCQlmb3JjZUlucHV0PSJmYWxzZSIKKy0JZmkKKy0KKy0JU09G VE5BTUU9IiQxIgorLQlpZiBbICIkMiIgPSAiLS1hbGxvdy1raWxsIiBdCistCXRoZW4KKy0JCWFs bG93S2lsbD0idHJ1ZSIKKy0JZWxzZQorLQkJYWxsb3dLaWxsPSJmYWxzZSIKKy0JZmkKKy0KKy0J WyAiJDEiID0gIiIgXSAmJiBtZXNzYWdlPSIkKGV2YWxfZ2V0dGV4dCAiUGxlYXNlIHdhaXQuLi4i KSIgfHwgbWVzc2FnZT0iJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlICRTT0ZUTkFN RSBpcyBpbnN0YWxsZWQuLi4nKSIKKy0JaWYgWyAiJGFsbG93S2lsbCIgPSAidHJ1ZSIgXQorLQl0 aGVuCistCQlQT0xfU2V0dXBXaW5kb3dfd2FpdF9idXR0b24gIiRtZXNzYWdlIiAiJFRJVExFIiAi JChldmFsX2dldHRleHQgJ0luc3RhbGwgaXMgZG9uZScpIiAid2luZXNlcnZlciAtayIgIiQoZXZh bF9nZXR0ZXh0ICdCZSBjYXJlZnVsISBUaGlzIHdpbGwga2lsbCBpbnN0YWxsIHByb2Nlc3MuIElm IGl0IGlzIG5vdCBmaW5pc2hlZCwgeW91IHdpbGwgaGF2ZSB0byByZWluc3RhbGwgJFNPRlROQU1F JykiCistCWVsc2UKKy0JCVBPTF9TZXR1cFdpbmRvd193YWl0ICIkbWVzc2FnZSIgIiRUSVRMRSIK Ky0JZmkKKy0Jd2luZXNlcnZlciAtdyB8fCBQT0xfU2V0dXBXaW5kb3dfbWVzc2FnZSAiJChldmFs X2dldHRleHQgJ1ByZXNzIG5leHQgb25seSB3aGVuIHRoZSBpbnN0YWxsYXRpb24gcHJvY2VzcyBp cyBmaW5pc2hlZCcpIiAiJFRJVExFIgorLQlbICIkZm9yY2VJbnB1dCIgPSAidHJ1ZSIgXSAmJiBQ T0xfU2V0dXBXaW5kb3dfbWVzc2FnZSAiJChldmFsX2dldHRleHQgJ1ByZXNzIG5leHQgb25seSB3 aGVuIHRoZSBpbnN0YWxsYXRpb24gcHJvY2VzcyBpcyBmaW5pc2hlZCcpIiAiJFRJVExFIgorK1BP TF9XaW5lX1dhaXRFeGl0KCkgeworKyAgIyBMb2NrIGJhc2ggY29tbWFuZHMgdW50aWwgd2luZSBp cyBleGl0ZWQKKysgICMgVXNhZ2UgOiBQT0xfV2luZV9XYWl0RXhpdCAoLS1mb3JjZS1pbnB1dCkg W1Byb2dyYW0gdGl0bGVdICgtLWFsbG93LWtpbGwpCisrICBpZiBbICIkMSIgPSAiLS1mb3JjZS1p bnB1dCIgXTsgdGhlbgorKyAgICBmb3JjZUlucHV0PSJ0cnVlIgorKyAgICBzaGlmdAorKyAgZWxz ZQorKyAgICBmb3JjZUlucHV0PSJmYWxzZSIKKysgIGZpCisrCisrICBTT0ZUTkFNRT0iJDEiCisr ICBpZiBbICIkMiIgPSAiLS1hbGxvdy1raWxsIiBdOyB0aGVuCisrICAgIGFsbG93S2lsbD0idHJ1 ZSIKKysgIGVsc2UKKysgICAgYWxsb3dLaWxsPSJmYWxzZSIKKysgIGZpCisrCisrICBbICIkMSIg PSAiIiBdICYmIG1lc3NhZ2U9IiQoZXZhbF9nZXR0ZXh0ICJQbGVhc2Ugd2FpdC4uLiIpIiB8fCBt ZXNzYWdlPSIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgJFNPRlROQU1FIGlzIGlu c3RhbGxlZC4uLicpIgorKyAgaWYgWyAiJGFsbG93S2lsbCIgPSAidHJ1ZSIgXTsgdGhlbgorKyAg ICBQT0xfU2V0dXBXaW5kb3dfd2FpdF9idXR0b24gIiRtZXNzYWdlIiAiJFRJVExFIiAiJChldmFs X2dldHRleHQgJ0luc3RhbGwgaXMgZG9uZScpIiAid2luZXNlcnZlciAtayIgIiQoZXZhbF9nZXR0 ZXh0ICdCZSBjYXJlZnVsISBUaGlzIHdpbGwga2lsbCBpbnN0YWxsIHByb2Nlc3MuIElmIGl0IGlz IG5vdCBmaW5pc2hlZCwgeW91IHdpbGwgaGF2ZSB0byByZWluc3RhbGwgJFNPRlROQU1FJykiCisr ICBlbHNlCisrICAgIFBPTF9TZXR1cFdpbmRvd193YWl0ICIkbWVzc2FnZSIgIiRUSVRMRSIKKysg IGZpCisrICB3aW5lc2VydmVyIC13IHx8IFBPTF9TZXR1cFdpbmRvd19tZXNzYWdlICIkKGV2YWxf Z2V0dGV4dCAnUHJlc3MgbmV4dCBvbmx5IHdoZW4gdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzIGlz IGZpbmlzaGVkJykiICIkVElUTEUiCisrICBbICIkZm9yY2VJbnB1dCIgPSAidHJ1ZSIgXSAmJiBQ T0xfU2V0dXBXaW5kb3dfbWVzc2FnZSAiJChldmFsX2dldHRleHQgJ1ByZXNzIG5leHQgb25seSB3 aGVuIHRoZSBpbnN0YWxsYXRpb24gcHJvY2VzcyBpcyBmaW5pc2hlZCcpIiAiJFRJVExFIgorIH0K KyAKKy0KKy0KKy1QT0xfV2luZV9yZWJvb3QgKCkKKy17CistCSMgU2ltdWxhdGUgd2luZG93cyBy ZWJvb3QKKy0JUE9MX1NldHVwV2luZG93X3dhaXRfbmV4dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0 ICdQbGVhc2Ugd2FpdCB3aGlsZSAkQVBQTElDQVRJT05fVElUTEUgaXMgc2ltdWxhdGluZyBhIHJl Ym9vdCcpIiAiJFRJVExFIgorLQlQT0xfV2luZSB3aW5lYm9vdAorK1BPTF9XaW5lX3JlYm9vdCgp IHsKKysgICMgU2ltdWxhdGUgd2luZG93cyByZWJvb3QKKysgIFBPTF9TZXR1cFdpbmRvd193YWl0 X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgJEFQUExJQ0FU SU9OX1RJVExFIGlzIHNpbXVsYXRpbmcgYSByZWJvb3QnKSIgIiRUSVRMRSIKKysgIFBPTF9XaW5l IHdpbmVib290CisgfQorLVBPTF9XaW5lX0dldFByZWZpeEZyb21QYXRoICgpCisteworLQkjIFJl dHVybiB3aW5lcHJlZml4IGZyb20gcGF0aAorLQkjIFVzYWdlIFBPTF9XaW5lX0dldFByZWZpeEZy b21QYXRoIFtFeGUgZmlsZV0KKy0JbG9jYWwgcD0iJDEiCistCXA9IiR7cCMqL3dpbmVwcmVmaXgv fSIKKy0JcD0iJHtwJSUvKn0iCistCWVjaG8gIiRwIgorK1BPTF9XaW5lX0dldFByZWZpeEZyb21Q YXRoKCkgeworKyAgIyBSZXR1cm4gd2luZXByZWZpeCBmcm9tIHBhdGgKKysgICMgVXNhZ2UgUE9M X1dpbmVfR2V0UHJlZml4RnJvbVBhdGggW0V4ZSBmaWxlXQorKyAgbG9jYWwgcD0iJDEiCisrICBw PSIke3AjKi93aW5lcHJlZml4L30iCisrICBwPSIke3AlJS8qfSIKKysgIGVjaG8gIiRwIgorIH0K Ky1QT0xfV2luZV9HZXRCYXNlTmFtZSgpCisteworLQlwZXJsIC1lICckcmVsZWFzZT0kQVJHVlsw XTsgJHJlbGVhc2UgPX4gcy9eKFswLTldK1wuWzAtOV0rKFwuWzAtOV0rKT8oLXJjWzAtOV0rKT8p LT8uKiQvJDEvOyBwcmludCAiJHJlbGVhc2VcbiInICIkMSIKKytQT0xfV2luZV9HZXRCYXNlTmFt ZSgpIHsKKysgIHBlcmwgLWUgJyRyZWxlYXNlPSRBUkdWWzBdOyAkcmVsZWFzZSA9fiBzL14oWzAt OV0rXC5bMC05XSsoXC5bMC05XSspPygtcmNbMC05XSspPyktPy4qJC8kMS87IHByaW50ICIkcmVs ZWFzZVxuIicgIiQxIgorIH0KKy1QT0xfV2luZV9HZXRQYXRjaE5hbWUoKQorLXsKKy0JcGVybCAt ZSAnJHJlbGVhc2U9JEFSR1ZbMF07ICRyZWxlYXNlID1+IHMvXlswLTldK1wuWzAtOV0rKFwuWzAt OV0rKT8oLXJjWzAtOV0rKT8tPy8vOyBwcmludCAiJHJlbGVhc2VcbiInICIkMSIKKytQT0xfV2lu ZV9HZXRQYXRjaE5hbWUoKSB7CisrICBwZXJsIC1lICckcmVsZWFzZT0kQVJHVlswXTsgJHJlbGVh c2UgPX4gcy9eWzAtOV0rXC5bMC05XSsoXC5bMC05XSspPygtcmNbMC05XSspPy0/Ly87IHByaW50 ICIkcmVsZWFzZVxuIicgIiQxIgorIH0KKy1QT0xfTG5rX1JlYWQoKQorLXsKKy0JZHJpdmVfY19m b3VuZD0iZmFsc2UiCistCWV4cG9ydCBBTlNXRVJfUEFUSD0iIgorLQlleHBvcnQgQU5TV0VSX1BS RUZJWD0iIgorLQlleHBvcnQgQU5TV0VSX05BTUU9IiQxIgorLQlBTlNXRVJfTkFNRT0iJHtBTlNX RVJfTkFNRS8ubG5rL30iCistCXdoaWxlIHJlYWQgbGluZTsgZG8KKy0JCWlmIFsgIiRkcml2ZV9j X2ZvdW5kIiA9ICJ0cnVlIiBdOyB0aGVuCistCQkJaWYgWyAiJHtsaW5lOjE6MX0iID0gIjoiIF07 IHRoZW4KKy0JCQkJYnJlYWsKKy0JCQlmaQorLQkJCWlmIFsgIiRBTlNXRVJfUEFUSCIgPSAiIiBd OyB0aGVuCistCQkJCUFOU1dFUl9QQVRIPSIkbGluZSIKKy0JCQllbHNlCistCQkJCUFOU1dFUl9Q QVRIPSIkQU5TV0VSX1BBVEgvJGxpbmUiCistCQkJZmkKKy0JCWZpCistCQlpZiBbICIkbGluZSIg PSAiZHJpdmVfYyIgXTsgdGhlbgorLQkJCWRyaXZlX2NfZm91bmQ9InRydWUiCistCQkJQU5TV0VS X1BSRUZJWD0iJGxhc3RsaW5lIgorLQkJZmkKKy0JCWxhc3RsaW5lPSIkbGluZSIKKy0JZG9uZSA8 IDwoc3RyaW5ncyAiJDEiKQorK1BPTF9MbmtfUmVhZCgpIHsKKysgIGRyaXZlX2NfZm91bmQ9ImZh bHNlIgorKyAgZXhwb3J0IEFOU1dFUl9QQVRIPSIiCisrICBleHBvcnQgQU5TV0VSX1BSRUZJWD0i IgorKyAgZXhwb3J0IEFOU1dFUl9OQU1FPSIkMSIKKysgIEFOU1dFUl9OQU1FPSIke0FOU1dFUl9O QU1FLy5sbmsvfSIKKysgIHdoaWxlIHJlYWQgbGluZTsgZG8KKysgICAgaWYgWyAiJGRyaXZlX2Nf Zm91bmQiID0gInRydWUiIF07IHRoZW4KKysgICAgICBpZiBbICIke2xpbmU6MToxfSIgPSAiOiIg XTsgdGhlbgorKyAgICAgICAgYnJlYWsKKysgICAgICBmaQorKyAgICAgIGlmIFsgIiRBTlNXRVJf UEFUSCIgPSAiIiBdOyB0aGVuCisrICAgICAgICBBTlNXRVJfUEFUSD0iJGxpbmUiCisrICAgICAg ZWxzZQorKyAgICAgICAgQU5TV0VSX1BBVEg9IiRBTlNXRVJfUEFUSC8kbGluZSIKKysgICAgICBm aQorKyAgICBmaQorKyAgICBpZiBbICIkbGluZSIgPSAiZHJpdmVfYyIgXTsgdGhlbgorKyAgICAg IGRyaXZlX2NfZm91bmQ9InRydWUiCisrICAgICAgQU5TV0VSX1BSRUZJWD0iJGxhc3RsaW5lIgor KyAgICBmaQorKyAgICBsYXN0bGluZT0iJGxpbmUiCisrICBkb25lIDwgPChzdHJpbmdzICIkMSIp CisgfQorIAorLVBPTF9XaW5lX2V4ZW5hbWUoKQorLXsKKy0JRVhFTkFNRT0iJDEiCistCXdoaWxl IFsgIiQxIiBdOyBkbworLQkJWyAiJChncmVwICcuZXhlJyA8PDwgIiQxIikiIF0gJiYgZWNobyAi JDEiICYmIHJldHVybiAwCistCQlzaGlmdAorLQlkb25lCistCWVjaG8gIiRFWEVOQU1FIgorLQly ZXR1cm4gMAorK1BPTF9XaW5lX2V4ZW5hbWUoKSB7CisrICBFWEVOQU1FPSIkMSIKKysgIHdoaWxl IFsgIiQxIiBdOyBkbworKyAgICBbICIkKGdyZXAgJy5leGUnIDw8PCIkMSIpIiBdICYmIGVjaG8g IiQxIiAmJiByZXR1cm4gMAorKyAgICBzaGlmdAorKyAgZG9uZQorKyAgZWNobyAiJEVYRU5BTUUi CisrICByZXR1cm4gMAorIH0KKy1QT0xfV2luZV9Db21tb25OYW1lKCkKKy17CistCWNuYW1lPSIk KFBPTF9XaW5lX2V4ZW5hbWUgIiRAIikiCistCVsgIiRjbmFtZSIgPSAid2luZWNmZyIgXSAmJiBj bmFtZT0iQ29uZmlndXJlIHdpbmUiCistCVsgIiRjbmFtZSIgPSAicmVnZWRpdCIgXSAmJiBjbmFt ZT0iUmVnaXN0cnkgRWRpdG9yIgorLQlbICIkY25hbWUiID0gIndpbmVib290IiBdICYmIGNuYW1l PSJWaXJ0dWFsIGRyaXZlIGNyZWF0aW9uIgorLQllY2hvICIkY25hbWUiCisrUE9MX1dpbmVfQ29t bW9uTmFtZSgpIHsKKysgIGNuYW1lPSIkKFBPTF9XaW5lX2V4ZW5hbWUgIiRAIikiCisrICBbICIk Y25hbWUiID0gIndpbmVjZmciIF0gJiYgY25hbWU9IkNvbmZpZ3VyZSB3aW5lIgorKyAgWyAiJGNu YW1lIiA9ICJyZWdlZGl0IiBdICYmIGNuYW1lPSJSZWdpc3RyeSBFZGl0b3IiCisrICBbICIkY25h bWUiID0gIndpbmVib290IiBdICYmIGNuYW1lPSJWaXJ0dWFsIGRyaXZlIGNyZWF0aW9uIgorKyAg ZWNobyAiJGNuYW1lIgorIH0KKy1QT0xfV2luZV9FbmFibGVPU1hOYXRpdmVEb2NrKCkKKy17Cist CWlmIFsgIiRQT0xfT1MiID0gIk1hYyIgLWEgIiQoUE9MX0NvbmZpZ19SZWFkICJPU1hfTkFUSVZF X01PREUiKSIgPSAiVFJVRSIgXTsgdGhlbgorLQkJZXhwb3J0IEZPUkNFX09TWF9ET0NLPSJUUlVF IgorLQlmaQorK1BPTF9XaW5lX0VuYWJsZU9TWE5hdGl2ZURvY2soKSB7CisrICBpZiBbICIkUE9M X09TIiA9ICJNYWMiIC1hICIkKFBPTF9Db25maWdfUmVhZCAiT1NYX05BVElWRV9NT0RFIikiID0g IlRSVUUiIF07IHRoZW4KKysgICAgZXhwb3J0IEZPUkNFX09TWF9ET0NLPSJUUlVFIgorKyAgZmkK KyB9CitkaWZmIC0tZ2l0IGEvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkgYi9weXRob24vbGliL1Zh cmlhYmxlcy5weQoraW5kZXggOGJlZDc2MDFiLi5kYmUyYWI3MTkgMTAwNzU1CistLS0gYS9weXRo b24vbGliL1ZhcmlhYmxlcy5weQorKysrIGIvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkKK0BAIC0x Nyw3ICsxNyw3IEBACisgb3MuZW52aXJvblsiUE9MX1BPUlQiXSA9ICIwIgorIG9zLmVudmlyb25b IlBMQVlPTkxJTlVYIl0gPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGgucmVhbHBhdGgoX19maWxl X18pKyIvLi4vLi4vLi4vIikKKyBvcy5lbnZpcm9uWyJTSVRFIl0gPSAiaHR0cDovL3JlcG9zaXRv cnkucGxheW9ubGludXguY29tIgorLW9zLmVudmlyb25bIlZFUlNJT04iXSA9ICI0LjQiCisrb3Mu ZW52aXJvblsiVkVSU0lPTiJdID0gIjQuNC4xIgorIG9zLmVudmlyb25bIlBPTF9JRCJdID0gc3Ry KHJhbmRvbS5yYW5kaW50KDEsIDEwMDAwMDAwMCkpCisgb3MuZW52aXJvblsiR0VDS09fU0lURSJd ID0gImh0dHA6Ly93aW5lLnBsYXlvbmxpbnV4LmNvbS9nZWNrbyIKKyBvcy5lbnZpcm9uWyJNT05P X1NJVEUiXSA9ICJodHRwOi8vd2luZS5wbGF5b25saW51eC5jb20vbW9ubyIKK0BAIC0xMTksMTEg KzExOSwxMiBAQAorIAorICAgICBvcy5lbnZpcm9uWyJQQVRIIl0gPSBvcy5lbnZpcm9uWyJQTEFZ T05MSU5VWCJdKyIvLi4vdW5peC93aW5lL2JpbjoiICsgb3MuZW52aXJvblsiUExBWU9OTElOVVgi XSsiLy4uL3VuaXgvaW1hZ2VfbWFnaWNrL2JpbjoiICsgb3MuZW52aXJvblsiUExBWU9OTElOVVgi XSsiLy4uL3VuaXgvdG9vbHMvYmluLzoiICsgb3MuZW52aXJvblsiUEFUSCJdCisgCistICAgIG9z LmVudmlyb25bIldSSVRFX0xEIl0gPSAgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3Vu aXgvaW1hZ2VfbWFnaWNrL2xpYjoiKyBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5p eC90b29scy9saWIvbGQ6L29wdC9YMTEvbGliLzoiICsgb3MuZW52aXJvblsiTERfTElCUkFSWV9Q QVRIIl0KKy0gICAgb3MuZW52aXJvblsiRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEgiXSA9ICBv cy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vd2luZS9saWIiCisrICAgIG9zLmVudmlyb25b IldSSVRFX0xEIl0gPSBvcy5lbnZpcm9uWyJMRF9MSUJSQVJZX1BBVEgiXQorKyAgICBvcy5lbnZp cm9uWyJEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCJdID0gIG9zLmVudmlyb25bIlBMQVlPTkxJ TlVYIl0rIi8uLi91bml4L3dpbmUvbGliIgorKyAgICBvcy5lbnZpcm9uWyJXUklURV9EWUxEX0ZB TExCQUNLX0xJQlJBUllfUEFUSCJdID0gIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91 bml4L3dpbmUvbGliIgorICAgICBvcy5lbnZpcm9uWyJGUkVFVFlQRV9QUk9QRVJUSUVTIl09InRy dWV0eXBlOmludGVycHJldGVyLXZlcnNpb249MzUiCisgCistICAgIG9zLmVudmlyb25bIldSSVRF X0RZTEQiXSA9IG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L3Rvb2xzL2xpYi9k eWxkOiIgKyBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC9pbWFnZV9tYWdpY2sv bGliOiIrIG9zLmVudmlyb25bIkRZTERfTElCUkFSWV9QQVRIIl0KKysgICAgb3MuZW52aXJvblsi V1JJVEVfRFlMRCJdID0gb3MuZW52aXJvblsiRFlMRF9MSUJSQVJZX1BBVEgiXQorIGVsc2U6Cisg ICAgICMgRGViaWFuIG1haW50YWluZXIgZGVjaWRlZCBmb3Igc29tZSByZWFzb24gbm90IHRvIGxl dCB3aW5lc2VydmVyIGJpbmFyeSBpbnRvIFBBVEguLi4KKyAgICAgZm9yIHdpbmVwYXRoIGluICgn L3Vzci9saWIvaTM4Ni1saW51eC1nbnUvd2luZS9iaW4nLCAnL3Vzci9saWIvaTM4Ni1saW51eC1n bnUvd2luZS11bnN0YWJsZS9iaW4nLAorZGlmZiAtLWdpdCBhL3B5dGhvbi9tYWlud2luZG93LnB5 IGIvcHl0aG9uL21haW53aW5kb3cucHkKK2luZGV4IDhkZjFmZjE0Yi4uYzhmZTExMTYwIDEwMDc1 NQorLS0tIGEvcHl0aG9uL21haW53aW5kb3cucHkKKysrKyBiL3B5dGhvbi9tYWlud2luZG93LnB5 CitAQCAtMjU0LDcgKzI1NCw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGlkLCB0aXRs ZSk6CisgICAgICAgICBzZWxmLmZpbGVtZW51ID0gd3guTWVudSgpCisgICAgICAgICAjIyMgT24g TWFjT1MgWCwgcHJlZmVyZW5jZSBpcyBhbHdheXMgb24gdGhlIG1haW4gbWVudQorICAgICAgICAg aWYgKG9zLmVudmlyb25bIlBPTF9PUyJdID09ICJNYWMiKToKKy0gICAgICAgICAgICBwcmVmSXRl bSA9IHNlbGYuZmlsZW1lbnUuQXBwZW5kKHd4LklEX1BSRUZFUkVOQ0VTLCB0ZXh0PSImUHJlZmVy ZW5jZXMiKQorKyAgICAgICAgICAgIHByZWZJdGVtID0gc2VsZi5maWxlbWVudS5BcHBlbmQod3gu SURfUFJFRkVSRU5DRVMsIF8oIiZQcmVmZXJlbmNlcyIpKQorICAgICAgICAgICAgIHNlbGYuQmlu ZCh3eC5FVlRfTUVOVSwgc2VsZi5PcHRpb25zLCBwcmVmSXRlbSkKKyAKKyAgICAgICAgICMjIyBG aWxlIG1lbnUKK2RpZmYgLS1naXQgYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNG ZXRjaGVyLnB5IGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zRmV0Y2hlci5weQor aW5kZXggMGZkYzc2ZTM4Li5mZDc1ODc5OGUgMTAwNjQ0CistLS0gYS9weXRob24vd2luZV92ZXJz aW9ucy9XaW5lVmVyc2lvbnNGZXRjaGVyLnB5CisrKysgYi9weXRob24vd2luZV92ZXJzaW9ucy9X aW5lVmVyc2lvbnNGZXRjaGVyLnB5CitAQCAtMSw2NyArMSw4OCBAQAorIGltcG9ydCBqc29uCisg aW1wb3J0IG9zCisgaW1wb3J0IHRocmVhZGluZworLWltcG9ydCB0aW1lCisraW1wb3J0IHRyYWNl YmFjaworIGltcG9ydCB1cmxsaWIucmVxdWVzdAorLWltcG9ydCBuYXRzb3J0CisgCisgZnJvbSBs aWIgaW1wb3J0IFZhcmlhYmxlcworLWZyb20gd2luZV92ZXJzaW9ucy5XaW5lVmVyc2lvbnNUb29s cyBpbXBvcnQgZmV0Y2hVc2VyT1MKKy0KKy1jbGFzcyBXaW5lVmVyc2lvbkZldGNoZXIodGhyZWFk aW5nLlRocmVhZCk6CistICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmNoPSJ4ODYiKToKKy0gICAg ICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKKy0gICAgICAgIHNlbGYudGhyZWFk X21lc3NhZ2UgPSAiI1dBSVQjIgorLSAgICAgICAgc2VsZi52ZXJzaW9ucyA9IFtdCistICAgICAg ICBzZWxmLmFyY2hpdGVjdHVyZSA9IGFyY2gKKy0gICAgICAgIHNlbGYuc3RhcnQoKQorLQorLSAg ICBkZWYgZG93bmxvYWQoc2VsZiwgZ2FtZSk6CistICAgICAgICBzZWxmLmdldERlc2NyaXB0aW9u ID0gZ2FtZQorLQorLSAgICBkZWYgcnVuKHNlbGYpOgorLSAgICAgICAgc2VsZi50aHJlYWRfcnVu bmluZyA9IFRydWUKKy0gICAgICAgIHdoaWxlKHNlbGYudGhyZWFkX3J1bm5pbmcpOgorLSAgICAg ICAgICAgIGlmKHNlbGYudGhyZWFkX21lc3NhZ2UgPT0gImdldCIpOgorLSAgICAgICAgICAgICAg ICB0cnkgOgorLSAgICAgICAgICAgICAgICAgICAgdXJsID0gb3MuZW52aXJvblsiV0lORV9TSVRF Il0KKy0gICAgICAgICAgICAgICAgICAgIHdmb2xkZXIgPSAiLSIuam9pbihbZmV0Y2hVc2VyT1Mo KSwgc2VsZi5hcmNoaXRlY3R1cmVdKQorLQorLQorLSAgICAgICAgICAgICAgICAgICAgcmVxID0g dXJsbGliLnJlcXVlc3QuUmVxdWVzdCh1cmwsIE5vbmUsIHsnVXNlci1BZ2VudCc6IFZhcmlhYmxl cy51c2VyQWdlbnR9KQorLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0gdXJsbGliLnJlcXVl c3QudXJsb3BlbihyZXEsIHRpbWVvdXQgPSA1KQorLSAgICAgICAgICAgICAgICAgICAgdGltZS5z bGVlcCgxKQorLSAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlX2Rpc3RyaWJ1dGlvbnMgPSBq c29uLmxvYWRzKGhhbmRsZS5yZWFkKCkpCistICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcnNp b25zXyA9IFtdCistICAgICAgICAgICAgICAgICAgICBmb3IgZGlzdHJpYnV0aW9uIGluIGF2YWls YWJsZV9kaXN0cmlidXRpb25zOgorLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRpc3RyaWJ1 dGlvblsibmFtZSJdID09ICItIi5qb2luKFsidXBzdHJlYW0iLCBmZXRjaFVzZXJPUygpLCBzZWxm LmFyY2hpdGVjdHVyZV0pKToKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhY2th Z2UgaW4gZGlzdHJpYnV0aW9uWyJwYWNrYWdlcyJdOgorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdmVyc2lvbiA9IHBhY2thZ2VbInZlcnNpb24iXQorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGFja2FnZVVybCA9IHBhY2thZ2VbInVybCJdCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaGExc3VtID0gcGFja2FnZVsic2hhMXN1bSJdCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZihub3Qgb3MucGF0aC5leGlzdHMoVmFyaWFibGVz LnBsYXlvbmxpbnV4X3JlcCsiL3dpbmUvIit3Zm9sZGVyKyIvIit2ZXJzaW9uKSk6CistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uc18uYXBwZW5kKHZlcnNp b24pCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJEaXJlY3Rvcnk6ICVzIGV4aXN0cyIgJSAo VmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCsiL3dpbmUvIit3Zm9sZGVyKyIvIit2ZXJzaW9uKSkK Ky0gICAgICAgICAgICAgICAgICAgICAgICBlbGlmKGRpc3RyaWJ1dGlvblsibmFtZSJdID09ICIt Ii5qb2luKFsic3RhZ2luZyIsIGZldGNoVXNlck9TKCksIHNlbGYuYXJjaGl0ZWN0dXJlXSkpOgor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGFja2FnZSBpbiBkaXN0cmlidXRpb25b InBhY2thZ2VzIl06CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0g cGFja2FnZVsidmVyc2lvbiJdCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihu b3Qgb3MucGF0aC5leGlzdHMoVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCsiL3dpbmUvIit3Zm9s ZGVyKyIvIit2ZXJzaW9uKyItc3RhZ2luZyIpKToKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLnZlcnNpb25zXy5hcHBlbmQodmVyc2lvbisiLXN0YWdpbmciKQorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcmludCgiRGlyZWN0b3J5OiAlcyBleGlzdHMiICUgKFZhcmlhYmxl cy5wbGF5b25saW51eF9yZXArIi93aW5lLyIrd2ZvbGRlcisiLyIrdmVyc2lvbisiLXN0YWdpbmci KSkKKy0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcmludChkaXN0cmlidXRpb25bIm5hbWUiXSArICIgZG9lcyBub3QgbWF0Y2giKQor LQorLSAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uc18uc29ydChrZXk9bmF0c29ydC5u YXRzb3J0X2tleWdlbigpKQorLSAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uc18ucmV2 ZXJzZSgpCistICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb25zID0gc2VsZi52ZXJzaW9u c19bOl0KKy0gICAgICAgICAgICAgICAgICAgIHNlbGYudGhyZWFkX21lc3NhZ2UgPSAiT2siCist ICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKy0gICAgICAgICAgICAgICAg ICAgIHByaW50KGUpCistICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCistICAgICAg ICAgICAgICAgICAgICBzZWxmLnRocmVhZF9tZXNzYWdlID0gIkVyciIKKy0gICAgICAgICAgICAg ICAgICAgIHNlbGYudmVyc2lvbnMgPSBbIldpbmUgcGFja2FnZXMgd2Vic2l0ZSBpcyB1bmF2YWls YWJsZSJdCisrZnJvbSB3aW5lX3ZlcnNpb25zLldpbmVWZXJzaW9uc1Rvb2xzIGltcG9ydCBmZXRj aFVzZXJPUywgZmV0Y2hfc3VwcG9ydGVkX2FyY2hzCisgCisrCisrY2xhc3MgV2luZVZlcnNpb25G ZXRjaGVyKCk6CisrICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcGVyYXRpbmdfc3lzdGVtKToKKysg ICAgICAgIHNlbGYub3BlcmF0aW5nX3N5c3RlbSA9IG9wZXJhdGluZ19zeXN0ZW0KKysKKysgICAg ZGVmIGZldGNoX2FsbF9hdmFpbGFibGVfd2luZV92ZXJzaW9uKHNlbGYsIGNhbGxiYWNrLCBlcnJv cik6CisrICAgICAgICB0aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9zeW5j X2ZldGNoX2FsbF9hdmFpbGFibGVfd2luZV92ZXJzaW9ucywgYXJncz0oY2FsbGJhY2ssIGVycm9y KSkKKysgICAgICAgIHRocmVhZC5zdGFydCgpCisrCisrICAgIGRlZiBfc3luY19mZXRjaF9hbGxf YXZhaWxhYmxlX3dpbmVfdmVyc2lvbnMoc2VsZiwgY2FsbGJhY2ssIGVycm9yKToKKysgICAgICAg IHdpbmVfdmVyc2lvbl91cmwgPSAiaHR0cHM6Ly9waG9lbmljaXMucGxheW9ubGludXguY29tL2lu ZGV4LnBocC93aW5lP29zPSVzIiAlIHNlbGYub3BlcmF0aW5nX3N5c3RlbQorKyAgICAgICAgcHJp bnQoIkRvbndsb2FkaW5nICVzICIgJSB3aW5lX3ZlcnNpb25fdXJsKQorKyAgICAgICAgdHJ5Ogor KyAgICAgICAgICAgIHJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KHdpbmVfdmVyc2lv bl91cmwsIE5vbmUsIHsnVXNlci1BZ2VudCc6IFZhcmlhYmxlcy51c2VyQWdlbnR9KQorKyAgICAg ICAgICAgIGhhbmRsZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4ocmVxdWVzdCwgdGltZW91dD01 KQorKyAgICAgICAgICAgIGNhbGxiYWNrKHNlbGYuX2NvbnZlcnRfcGhvZW5pY2lzX3dpbmVfdmVy c2lvbnNfdG9fdjQoanNvbi5sb2FkKGhhbmRsZSkpKQorKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorKyAgICAgICAgICAgIGVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCisrCisr ICAgIGRlZiBfc3luY19mZXRjaF9hbGxfaW5zdGFsbGVkX3dpbmVfdmVyc2lvbihzZWxmKToKKysg ICAgICAgIGFyY2hpdGVjdHVyZXMgPSB7fQorKyAgICAgICAgZm9yIGFyY2hpdGVjdHVyZSBpbiBm ZXRjaF9zdXBwb3J0ZWRfYXJjaHMoKToKKysgICAgICAgICAgICB3aW5lX2ZvbGRlciA9IGZldGNo VXNlck9TKCkgKyAiLSIgKyBhcmNoaXRlY3R1cmUKKysKKysgICAgICAgICAgICBpZiBvcy5wYXRo LmV4aXN0cyhWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgIi93aW5lLyIgKyB3aW5lX2ZvbGRl cik6CisrICAgICAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucyA9IFt7CisrICAgICAgICAg ICAgICAgICAgICAibmFtZSI6IHZlcnNpb24sCisrICAgICAgICAgICAgICAgIH0gZm9yIHZlcnNp b24gaW4gb3MubGlzdGRpcihWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgIi93aW5lLyIgKyB3 aW5lX2ZvbGRlcikgaWYKKysgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gIT0gImluc3RhbGxp bmciXQorICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4y KQorKyAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBbXQorKworKyAgICAgICAg ICAgIGlmIGFyY2hpdGVjdHVyZSBub3QgaW4gYXJjaGl0ZWN0dXJlczoKKysgICAgICAgICAgICAg ICAgYXJjaGl0ZWN0dXJlc1thcmNoaXRlY3R1cmVdID0gW10KKysKKysgICAgICAgICAgICBhcmNo aXRlY3R1cmVzW2FyY2hpdGVjdHVyZV0gKz0gYXZhaWxhYmxlX3ZlcnNpb25zCisrICAgICAgICBy ZXR1cm4gYXJjaGl0ZWN0dXJlcworKworKyAgICBkZWYgZmV0Y2hfYWxsX2luc3RhbGxlZF93aW5l X3ZlcnNpb24oc2VsZiwgY2FsbGJhY2ssIGVycm9yKToKKysgICAgICAgIHRyeToKKysgICAgICAg ICAgICBhcmNoaXRlY3R1cmVzID0gc2VsZi5fc3luY19mZXRjaF9hbGxfaW5zdGFsbGVkX3dpbmVf dmVyc2lvbigpCisrCisrICAgICAgICAgICAgY2FsbGJhY2soYXJjaGl0ZWN0dXJlcykKKysgICAg ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKysgICAgICAgICAgICBlcnJvcih0cmFjZWJhY2su Zm9ybWF0X2V4YygpKQorKworKyAgICBkZWYgX2NvbnZlcnRfcGhvZW5pY2lzX3dpbmVfdmVyc2lv bnNfdG9fdjQoc2VsZiwgd2luZV9kaXN0cmlidXRpb25zKToKKysgICAgICAgICIiIgorKyAgICAg ICAgQ29udmVydHMgdmVyc2lvbnMgZnJvbSBwaG9lbmljaXMgZm9ybWF0IGludG8gYSBmb3JtYXQg dGhhdCBQT0wvUE9NIDQgY2FuIGhhbmRsZQorKyAgICAgICAgIiIiCisrICAgICAgICBhcmNoaXRl Y3R1cmVzID0ge30KKysgICAgICAgIGZvciB3aW5lX2Rpc3RyaWJ1dGlvbiBpbiB3aW5lX2Rpc3Ry aWJ1dGlvbnM6CisrICAgICAgICAgICAgbmFtZSA9IHdpbmVfZGlzdHJpYnV0aW9uWyJuYW1lIl0K KysgICAgICAgICAgICBhcmNoaXRlY3R1cmUgPSBuYW1lLnNwbGl0KCItIilbMl0KKysgICAgICAg ICAgICBkaXN0cmlidXRpb24gPSBuYW1lLnNwbGl0KCItIilbMF0KKysKKysgICAgICAgICAgICBp ZiBhcmNoaXRlY3R1cmUgbm90IGluIGFyY2hpdGVjdHVyZXM6CisrICAgICAgICAgICAgICAgIGFy Y2hpdGVjdHVyZXNbYXJjaGl0ZWN0dXJlXSA9IFtdCisrCisrICAgICAgICAgICAgZm9yIHBhY2th Z2UgaW4gd2luZV9kaXN0cmlidXRpb25bInBhY2thZ2VzIl06CisrICAgICAgICAgICAgICAgIGlm IGRpc3RyaWJ1dGlvbiA9PSAidXBzdHJlYW0iOgorKyAgICAgICAgICAgICAgICAgICAgcGFja2Fn ZV9uYW1lID0gcGFja2FnZVsidmVyc2lvbiJdCisrICAgICAgICAgICAgICAgIGVsc2U6CisrICAg ICAgICAgICAgICAgICAgICBwYWNrYWdlX25hbWUgPSBwYWNrYWdlWyJ2ZXJzaW9uIl0gKyAiLSIg KyBkaXN0cmlidXRpb24KKysKKysgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlc1thcmNoaXRl Y3R1cmVdICs9IFt7CisrICAgICAgICAgICAgICAgICAgICAibmFtZSI6IHBhY2thZ2VfbmFtZSwK KysgICAgICAgICAgICAgICAgICAgICJhcmNoaXRlY3R1cmUiOiBhcmNoaXRlY3R1cmUsCisrICAg ICAgICAgICAgICAgICAgICAic2hhMXN1bSI6IHBhY2thZ2VbInNoYTFzdW0iXSwKKysgICAgICAg ICAgICAgICAgICAgICJ1cmwiOiBwYWNrYWdlWyJ1cmwiXQorKyAgICAgICAgICAgICAgICB9XQor KworKworKyAgICAgICAgcmV0dXJuIGFyY2hpdGVjdHVyZXMKKysKKysgICAgZGVmIGNhbGN1bGF0 ZV9pbnN0YWxsZWRfaGFzaChzZWxmKToKKysgICAgICAgIHJldHVybiBoYXNoKGpzb24uZHVtcHMo KHNlbGYuX3N5bmNfZmV0Y2hfYWxsX2luc3RhbGxlZF93aW5lX3ZlcnNpb24oKSkpKQorKworKwor ZGlmZiAtLWdpdCBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc05vdGVib29rLnB5 IGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zTm90ZWJvb2sucHkKK2luZGV4IGVj NWYxMjUzNS4uYjQzYzI1ZGM5IDEwMDY0NAorLS0tIGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2lu ZVZlcnNpb25zTm90ZWJvb2sucHkKKysrKyBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJz aW9uc05vdGVib29rLnB5CitAQCAtMiw4OSArMiwxMDYgQEAKKyAKKyBmcm9tIGxpYiBpbXBvcnQg VmFyaWFibGVzCisgCistCisgIyMgRklYTUU6IFJlZmFjdG9yIHRoaXMgY29kZSBsYXRlcgorK2Zy b20gd2luZV92ZXJzaW9ucy5XaW5lVmVyc2lvbnNUb29scyBpbXBvcnQgZmV0Y2hfc3VwcG9ydGVk X2FyY2hzCisrCisrCisgY2xhc3MgV2luZVZlcnNpb25zTm90ZWJvb2sod3guTm90ZWJvb2spOgor ICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgIHNlbGYubm90ZWJvb2sg PSB3eC5Ob3RlYm9vay5fX2luaXRfXyhzZWxmLCBwYXJlbnQsIC0xKQorICAgICAgICAgc2VsZi5p bWFnZXNfb25nbGV0cyA9IHd4LkltYWdlTGlzdCgxNiwgMTYpCisgICAgICAgICBzZWxmLmltYWdl c19vbmdsZXRzLkFkZCh3eC5CaXRtYXAoVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiArICIvZXRj L29uZ2xldC93aW5lLnBuZyIpKQorKworICAgICAgICAgc2VsZi5TZXRJbWFnZUxpc3Qoc2VsZi5p bWFnZXNfb25nbGV0cykKKyAKKyAgICAgICAgIHNlbGYuc2l6ZXJzID0ge30KKy0gICAgICAgIHNl bGYuaW1hZ2VzYXBwcyA9IHt9CistICAgICAgICBzZWxmLmltYWdlc2FwcHNfaSA9IHt9CistICAg ICAgICBzZWxmLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvciA9IHt9CisrICAgICAg ICBzZWxmLmltYWdlX2xpc3QgPSBzZWxmLl9jcmVhdGVfaW1hZ2VfbGlzdCgpCisrICAgICAgICBz ZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3IgPSB7fQorICAgICAgICAg c2VsZi53YWl0UGFuZWwgPSB7fQorLSAgICAgICAgc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNU cmVlU2VsZWN0b3IgPSB7fQorLSAgICAgICAgc2VsZi5idXR0b25fcm0gPSB7fQorLSAgICAgICAg c2VsZi5idXR0b25faW4gPSB7fQorKyAgICAgICAgc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9u c190cmVlX3NlbGVjdG9yID0ge30KKysgICAgICAgIHNlbGYuYnV0dG9uX3VuaW5zdGFsbCA9IHt9 CisrICAgICAgICBzZWxmLmJ1dHRvbl9pbnN0YWxsID0ge30KKyAgICAgICAgIHNlbGYuYm94U2l6 ZXJzID0ge30KKyAgICAgICAgIHNlbGYucGFuZWxzID0ge30KKy0KKy0gICAgZGVmIGNhbGN1bGF0 ZUV2ZW50RGVsdGEoc2VsZiwgYXJjaCk6CistICAgICAgICBpZiAoYXJjaCA9PSAiYW1kNjQiKToK Ky0gICAgICAgICAgICByZXR1cm4gMTAwCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHJl dHVybiAwCistCistICAgIGRlZiBfY3JlYXRlSW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWwoc2Vs ZiwgYXJjaCk6CistICAgICAgICBpbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbCA9IHd4LlBhbmVs KHNlbGYucGFuZWxzW2FyY2hdLCAtMSkKKysgICAgICAgIHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVy c2lvbl9yb290cyA9IHt9CisrICAgICAgICBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNpb25fcm9v dHMgPSB7fQorKyAgICAgICAgc2VsZi5udW1iZXJfb2ZfYXZhaWxhYmxlX3ZlcnNpb25zID0ge30K KysgICAgICAgIHNlbGYubnVtYmVyX29mX2luc3RhbGxlZF92ZXJzaW9ucyA9IHt9CisrICAgICAg ICBzZWxmLm9uX2luc3RhbGxfaGFuZGxlciA9IE5vbmUKKysgICAgICAgIHNlbGYub25fcmVtb3Zl X2hhbmRsZXIgPSBOb25lCisrCisrICAgIGRlZiBfY3JlYXRlX2ltYWdlX2xpc3Qoc2VsZik6Cisr ICAgICAgICBpbWFnZV9saXN0ID0gd3guSW1hZ2VMaXN0KDIyLCAyMikKKysgICAgICAgIGltYWdl X2xpc3QuQWRkKHd4LkJpdG1hcChWYXJpYWJsZXMucGxheW9ubGludXhfZW52ICsgIi9ldGMvaW5z dGFsbC93aW5lLXBhY2thZ2VzLnBuZyIpKQorKyAgICAgICAgaW1hZ2VfbGlzdC5BZGQod3guQml0 bWFwKFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAiL2V0Yy9pbnN0YWxsL3dpbmUtaW4tdXNl LnBuZyIpKQorKyAgICAgICAgcmV0dXJuIGltYWdlX2xpc3QKKysKKysgICAgZGVmIF9jYWxjdWxh dGVfZXZlbnRfbnVtYmVyKHNlbGYsIGV2ZW50X2lkLCBhcmNoKToKKysgICAgICAgIHJldHVybiBl dmVudF9pZCArIGxpc3QoZmV0Y2hfc3VwcG9ydGVkX2FyY2hzKCkpLmluZGV4KGFyY2gpICogMTAw CisrCisrICAgIGRlZiBfY3JlYXRlSW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWwoc2VsZiwgYXJj aGl0ZWN0dXJlKToKKysgICAgICAgIGluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsID0gd3guUGFu ZWwoc2VsZi5wYW5lbHNbYXJjaGl0ZWN0dXJlXSwgLTEpCisgICAgICAgICBpbnN0YWxsZWRXaW5l VmVyc2lvbnNTaXplciA9IHd4LkJveFNpemVyKHd4LlZFUlRJQ0FMKQorICAgICAgICAgaW5zdGFs bGVkV2luZVZlcnNpb25zUGFuZWwuU2V0U2l6ZXIoaW5zdGFsbGVkV2luZVZlcnNpb25zU2l6ZXIp CistICAgICAgICBzZWxmLmJveFNpemVyc1thcmNoXS5BZGQoaW5zdGFsbGVkV2luZVZlcnNpb25z UGFuZWwsIDMsIHd4LkVYUEFORCkKKysgICAgICAgIHNlbGYuYm94U2l6ZXJzW2FyY2hpdGVjdHVy ZV0uQWRkKGluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsLCAzLCB3eC5FWFBBTkQpCisgICAgICAg ICBpbnN0YWxsZWRXaW5lVmVyc2lvbnNTaXplci5BZGRTcGFjZXIoMTApCisgICAgICAgICBpbnN0 YWxsZWRXaW5lVmVyc2lvbnNTaXplci5BZGQod3guU3RhdGljVGV4dChpbnN0YWxsZWRXaW5lVmVy c2lvbnNQYW5lbCwgLTEsIF8oIkluc3RhbGxlZCBXaW5lIHZlcnNpb25zOiAiKSksIDApCisgICAg ICAgICBpbnN0YWxsZWRXaW5lVmVyc2lvbnNTaXplci5BZGRTcGFjZXIoMTApCistICAgICAgICBz ZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXSA9IHd4LlRyZWVDdHJs KGluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsLCAxMDcgKyBzZWxmLmNhbGN1bGF0ZUV2ZW50RGVs dGEoYXJjaCksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXd4LlRSX0hJREVfUk9PVCB8IHd4LlRSX0ZVTExf Uk9XX0hJR0hMSUdIVCB8IFZhcmlhYmxlcy53aWRnZXRfYm9yZGVycykKKy0gICAgICAgIHNlbGYu aW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldEltYWdlTGlzdChzZWxm LmltYWdlc2FwcHNfaVthcmNoXSkKKy0gICAgICAgICNzZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9u c1RyZWVTZWxlY3RvclthcmNoXS5TZXRTcGFjaW5nKDApCistICAgICAgICBpbnN0YWxsZWRXaW5l VmVyc2lvbnNTaXplci5BZGQoc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3Jb YXJjaF0sIDEsIHd4LkVYUEFORCkKKysgICAgICAgIHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lv bnNfdHJlZV9zZWxlY3RvclthcmNoaXRlY3R1cmVdID0gd3guVHJlZUN0cmwoaW5zdGFsbGVkV2lu ZVZlcnNpb25zUGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGN1bGF0ZV9l dmVudF9udW1iZXIoMTA3LCBhcmNoaXRlY3R1cmUpLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHlsZT13eC5UUl9ISURFX1JPT1QgfCB3eC5UUl9GVUxMX1JPV19ISUdITElHSFQgfCBWYXJpYWJs ZXMud2lkZ2V0X2JvcmRlcnMpCisrICAgICAgICBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNpb25z X3RyZWVfc2VsZWN0b3JbYXJjaGl0ZWN0dXJlXS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZV9saXN0 KQorKyAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9UUkVFX1NFTF9DSEFOR0VELCBsYW1iZGEgZXZ0 OiBzZWxmLl9vbl9zZWxlY3RfaW5zdGFsbGVkX3dpbmVfdmVyc2lvbihhcmNoaXRlY3R1cmUpLCBp ZD1zZWxmLl9jYWxjdWxhdGVfZXZlbnRfbnVtYmVyKDEwNywgYXJjaGl0ZWN0dXJlKSkKKysKKysg ICAgICAgIGluc3RhbGxlZFdpbmVWZXJzaW9uc1NpemVyLkFkZChzZWxmLmluc3RhbGxlZF93aW5l X3ZlcnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaGl0ZWN0dXJlXSwgMSwgd3guRVhQQU5EKQorICAg ICAgICAgaW5zdGFsbGVkV2luZVZlcnNpb25zU2l6ZXIuQWRkU3BhY2VyKDEwKQorIAorLSAgICBk ZWYgX2NyZWF0ZUF2YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsKHNlbGYsIGFyY2gpOgorLSAgICAg ICAgYXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWwgPSB3eC5QYW5lbChzZWxmLnBhbmVsc1thcmNo XSAsIC0xKQorKyAgICBkZWYgX2NyZWF0ZUF2YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsKHNlbGYs IGFyY2hpdGVjdHVyZSk6CisrICAgICAgICBhdmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbCA9IHd4 LlBhbmVsKHNlbGYucGFuZWxzW2FyY2hpdGVjdHVyZV0sIC0xKQorICAgICAgICAgYXZhaWxhYmxl V2luZVZlcnNpb25zU2l6ZXIgPSB3eC5Cb3hTaXplcih3eC5WRVJUSUNBTCkKKyAgICAgICAgIGF2 YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsLlNldFNpemVyKGF2YWlsYWJsZVdpbmVWZXJzaW9uc1Np emVyKQorLSAgICAgICAgc2VsZi5ib3hTaXplcnNbYXJjaF0uQWRkKGF2YWlsYWJsZVdpbmVWZXJz aW9uc1BhbmVsLCAzLCB3eC5FWFBBTkQpCisrICAgICAgICBzZWxmLmJveFNpemVyc1thcmNoaXRl Y3R1cmVdLkFkZChhdmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbCwgMywgd3guRVhQQU5EKQorICAg ICAgICAgYXZhaWxhYmxlV2luZVZlcnNpb25zU2l6ZXIuQWRkU3BhY2VyKDEwKQorICAgICAgICAg YXZhaWxhYmxlV2luZVZlcnNpb25zU2l6ZXIuQWRkKHd4LlN0YXRpY1RleHQoYXZhaWxhYmxlV2lu ZVZlcnNpb25zUGFuZWwsIC0xLCBfKCJBdmFpbGFibGUgV2luZSB2ZXJzaW9uczogIiksICg1LCAx MCkpLCAwKQorICAgICAgICAgYXZhaWxhYmxlV2luZVZlcnNpb25zU2l6ZXIuQWRkU3BhY2VyKDEw KQorLSAgICAgICAgc2VsZi5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0g PSB3eC5UcmVlQ3RybChhdmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbCwgMTA2ICsgc2VsZi5jYWxj dWxhdGVFdmVudERlbHRhKGFyY2gpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5UUl9ISURFX1JPT1Qg fCB3eC5UUl9GVUxMX1JPV19ISUdITElHSFQgfCBWYXJpYWJsZXMud2lkZ2V0X2JvcmRlcnMsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemU9KDMyMCwgMzAwKSwgcG9zPSgxMCwgMzUpKQorLSAgICAgICAgc2VsZi5h dmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0SW1hZ2VMaXN0KHNlbGYu aW1hZ2VzYXBwc1thcmNoXSkKKy0gICAgICAgICNzZWxmLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1Ry ZWVTZWxlY3RvclthcmNoXS5TZXRTcGFjaW5nKDApCistICAgICAgICBhdmFpbGFibGVXaW5lVmVy c2lvbnNTaXplci5BZGQoc2VsZi5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJj aF0sIDEsIHd4LkVYUEFORCkKKysgICAgICAgIHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNf dHJlZV9zZWxlY3RvclthcmNoaXRlY3R1cmVdID0gd3guVHJlZUN0cmwoYXZhaWxhYmxlV2luZVZl cnNpb25zUGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGN1bGF0ZV9ldmVu dF9udW1iZXIoMTA2LCBhcmNoaXRlY3R1cmUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHls ZT13eC5UUl9ISURFX1JPT1QgfCB3eC5UUl9GVUxMX1JPV19ISUdITElHSFQgfCBWYXJpYWJsZXMu d2lkZ2V0X2JvcmRlcnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9KDMyMCwgMzAwKSwg cG9zPSgxMCwgMzUpKQorKyAgICAgICAgc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9uc190cmVl X3NlbGVjdG9yW2FyY2hpdGVjdHVyZV0uU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VfbGlzdCkKKysg ICAgICAgIHNlbGYuQmluZCh3eC5FVlRfVFJFRV9TRUxfQ0hBTkdFRCwgbGFtYmRhIGV2dDogc2Vs Zi5fb25fc2VsZWN0X2F2YWlsYWJsZV93aW5lX3ZlcnNpb24oYXJjaGl0ZWN0dXJlKSwgaWQ9c2Vs Zi5fY2FsY3VsYXRlX2V2ZW50X251bWJlcigxMDYsIGFyY2hpdGVjdHVyZSkpCisrCisrICAgICAg ICBhdmFpbGFibGVXaW5lVmVyc2lvbnNTaXplci5BZGQoc2VsZi5hdmFpbGFibGVfd2luZV92ZXJz aW9uc190cmVlX3NlbGVjdG9yW2FyY2hpdGVjdHVyZV0sIDEsIHd4LkVYUEFORCkKKyAgICAgICAg IGF2YWlsYWJsZVdpbmVWZXJzaW9uc1NpemVyLkFkZFNwYWNlcigxMCkKKyAKKy0gICAgZGVmIF9j cmVhdGVCdXR0b25QYW5lbChzZWxmLCBhcmNoKToKKy0gICAgICAgIGJ1dHRvbnNQYW5lbCA9IHd4 LlBhbmVsKHNlbGYucGFuZWxzW2FyY2hdICwgLTEpCisrICAgIGRlZiBfY3JlYXRlQnV0dG9uUGFu ZWwoc2VsZiwgYXJjaGl0ZWN0dXJlKToKKysgICAgICAgIGJ1dHRvbnNQYW5lbCA9IHd4LlBhbmVs KHNlbGYucGFuZWxzW2FyY2hpdGVjdHVyZV0sIC0xKQorICAgICAgICAgYnV0dG9uc1NpemVyID0g d3guQm94U2l6ZXIod3guVkVSVElDQUwpCisgICAgICAgICBidXR0b25zUGFuZWwuU2V0U2l6ZXIo YnV0dG9uc1NpemVyKQorIAorLSAgICAgICAgc2VsZi5idXR0b25fcm1bYXJjaF0gPSB3eC5CdXR0 b24oYnV0dG9uc1BhbmVsLCAxMDggKyBzZWxmLmNhbGN1bGF0ZUV2ZW50RGVsdGEoYXJjaCksICI8 IikKKy0gICAgICAgIHNlbGYuYnV0dG9uX2luW2FyY2hdID0gd3guQnV0dG9uKGJ1dHRvbnNQYW5l bCwgMTA5ICsgc2VsZi5jYWxjdWxhdGVFdmVudERlbHRhKGFyY2gpLCAiPiIpCisrICAgICAgICBz ZWxmLmJ1dHRvbl91bmluc3RhbGxbYXJjaGl0ZWN0dXJlXSA9IHd4LkJ1dHRvbihidXR0b25zUGFu ZWwsIHNlbGYuX2NhbGN1bGF0ZV9ldmVudF9udW1iZXIoMTA4LCBhcmNoaXRlY3R1cmUpLCAiPCIp CisrICAgICAgICBzZWxmLmJ1dHRvbl9pbnN0YWxsW2FyY2hpdGVjdHVyZV0gPSB3eC5CdXR0b24o YnV0dG9uc1BhbmVsLCBzZWxmLl9jYWxjdWxhdGVfZXZlbnRfbnVtYmVyKDEwOSwgYXJjaGl0ZWN0 dXJlKSwgIj4iKQorIAorICAgICAgICAgYnV0dG9uc1NpemVyLkFkZFN0cmV0Y2hTcGFjZXIoKQor LSAgICAgICAgYnV0dG9uc1NpemVyLkFkZChzZWxmLmJ1dHRvbl9ybVthcmNoXSwgMCwgd3guQ0VO VEVSKQorKyAgICAgICAgYnV0dG9uc1NpemVyLkFkZChzZWxmLmJ1dHRvbl91bmluc3RhbGxbYXJj aGl0ZWN0dXJlXSwgMCwgd3guQ0VOVEVSKQorICAgICAgICAgYnV0dG9uc1NpemVyLkFkZFNwYWNl cigxMCkKKy0gICAgICAgIGJ1dHRvbnNTaXplci5BZGQoc2VsZi5idXR0b25faW5bYXJjaF0sIDAs IHd4LkNFTlRFUikKKysgICAgICAgIGJ1dHRvbnNTaXplci5BZGQoc2VsZi5idXR0b25faW5zdGFs bFthcmNoaXRlY3R1cmVdLCAwLCB3eC5DRU5URVIpCisgICAgICAgICBidXR0b25zU2l6ZXIuQWRk U3RyZXRjaFNwYWNlcigpCisgCistICAgICAgICBzZWxmLmJ1dHRvbl9ybVthcmNoXS5FbmFibGUo RmFsc2UpCistICAgICAgICBzZWxmLmJ1dHRvbl9pblthcmNoXS5FbmFibGUoRmFsc2UpCisrICAg ICAgICBzZWxmLmJ1dHRvbl91bmluc3RhbGxbYXJjaGl0ZWN0dXJlXS5FbmFibGUoRmFsc2UpCisr ICAgICAgICBzZWxmLmJ1dHRvbl9pbnN0YWxsW2FyY2hpdGVjdHVyZV0uRW5hYmxlKEZhbHNlKQor KworKyAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9CVVRUT04sIGxhbWJkYSBldnQ6IHNlbGYuX29u X2RlbGV0ZShhcmNoaXRlY3R1cmUpLCBpZD1zZWxmLl9jYWxjdWxhdGVfZXZlbnRfbnVtYmVyKDEw OCwgYXJjaGl0ZWN0dXJlKSkKKysgICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQlVUVE9OLCBsYW1i ZGEgZXZ0OiBzZWxmLl9vbl9pbnN0YWxsKGFyY2hpdGVjdHVyZSksIGlkPXNlbGYuX2NhbGN1bGF0 ZV9ldmVudF9udW1iZXIoMTA5LCBhcmNoaXRlY3R1cmUpKQorIAorLSAgICAgICAgc2VsZi5ib3hT aXplcnNbYXJjaF0uQWRkKGJ1dHRvbnNQYW5lbCwgMSwgd3guRVhQQU5EKQorIAorLSAgICBkZWYg bGlzdGVfdmVyc2lvbnMoc2VsZiwgYXJjaD0ieDg2Iik6CisrICAgICAgICBzZWxmLmJveFNpemVy c1thcmNoaXRlY3R1cmVdLkFkZChidXR0b25zUGFuZWwsIDEsIHd4LkVYUEFORCkKKysKKysgICAg ZGVmIGFkZF9hcmNoaXRlY3R1cmVfdGFiKHNlbGYsIGFyY2g9Ing4NiIpOgorICAgICAgICAgc2Vs Zi5wYW5lbHNbYXJjaF0gPSB3eC5QYW5lbChzZWxmLCAtMSkKKyAKKyAgICAgICAgIHNlbGYuYm94 U2l6ZXJzW2FyY2hdID0gd3guQm94U2l6ZXIod3guSE9SSVpPTlRBTCkKKyAgICAgICAgIHNlbGYu cGFuZWxzW2FyY2hdLlNldFNpemVyKHNlbGYuYm94U2l6ZXJzW2FyY2hdKQorLSAgICAgICAgc2Vs Zi5pbWFnZXNhcHBzW2FyY2hdID0gd3guSW1hZ2VMaXN0KDIyLCAyMikKKy0gICAgICAgIHNlbGYu aW1hZ2VzYXBwc19pW2FyY2hdID0gd3guSW1hZ2VMaXN0KDIyLCAyMikKKyAKKyAgICAgICAgIHNl bGYuYm94U2l6ZXJzW2FyY2hdLkFkZFNwYWNlcigxMCkKKyAgICAgICAgIHNlbGYuX2NyZWF0ZUF2 YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsKGFyY2gpCitAQCAtOTMsMyArMTEwLDM5IEBAIGRlZiBs aXN0ZV92ZXJzaW9ucyhzZWxmLCBhcmNoPSJ4ODYiKToKKyAgICAgICAgIHNlbGYuYm94U2l6ZXJz W2FyY2hdLkFkZFNwYWNlcigxMCkKKyAKKyAgICAgICAgIHNlbGYuQWRkUGFnZShzZWxmLnBhbmVs c1thcmNoXSwgXygiV2luZSB2ZXJzaW9ucyIpICsgIiAoIiArIGFyY2ggKyAiKSIsIGltYWdlSWQ9 MCkKKysKKysgICAgZGVmIGNsZWFuX3ZlcnNpb25fb2ZfYXJjaGl0ZWN0dXJlKHNlbGYsIGFyY2gp OgorKyAgICAgICAgc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2Fy Y2hdLkRlbGV0ZUFsbEl0ZW1zKCkKKysgICAgICAgIHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lv bnNfdHJlZV9zZWxlY3RvclthcmNoXS5EZWxldGVBbGxJdGVtcygpCisrICAgICAgICBzZWxmLmF2 YWlsYWJsZV93aW5lX3ZlcnNpb25fcm9vdHNbYXJjaF0gPSBzZWxmLmF2YWlsYWJsZV93aW5lX3Zl cnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaF0uQWRkUm9vdCgiIikKKysgICAgICAgIHNlbGYuaW5z dGFsbGVkX3dpbmVfdmVyc2lvbl9yb290c1thcmNoXSA9IHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVy c2lvbnNfdHJlZV9zZWxlY3RvclthcmNoXS5BZGRSb290KCIiKQorKyAgICAgICAgc2VsZi5udW1i ZXJfb2ZfYXZhaWxhYmxlX3ZlcnNpb25zW2FyY2hdID0gMAorKyAgICAgICAgc2VsZi5udW1iZXJf b2ZfaW5zdGFsbGVkX3ZlcnNpb25zW2FyY2hdID0gMAorKworKyAgICBkZWYgYWRkX2F2YWlsYWJs ZV92ZXJzaW9uKHNlbGYsIGFyY2gsIHZlcnNpb24pOgorKyAgICAgICAgc2VsZi5udW1iZXJfb2Zf YXZhaWxhYmxlX3ZlcnNpb25zW2FyY2hdICs9IDEKKysgICAgICAgIHNlbGYuYXZhaWxhYmxlX3dp bmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNoXS5BcHBlbmRJdGVtKHNlbGYuYXZhaWxhYmxl X3dpbmVfdmVyc2lvbl9yb290c1thcmNoXSwgdmVyc2lvbiwgMCkKKysKKysgICAgZGVmIGFkZF9p bnN0YWxsZWRfdmVyc2lvbihzZWxmLCBhcmNoLCB2ZXJzaW9uKToKKysgICAgICAgIHNlbGYubnVt YmVyX29mX2luc3RhbGxlZF92ZXJzaW9uc1thcmNoXSArPSAxCisrICAgICAgICBzZWxmLmluc3Rh bGxlZF93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaF0uQXBwZW5kSXRlbShzZWxmLmlu c3RhbGxlZF93aW5lX3ZlcnNpb25fcm9vdHNbYXJjaF0sIHZlcnNpb24sIDApCisrCisrICAgIGRl ZiBfb25fc2VsZWN0X2luc3RhbGxlZF93aW5lX3ZlcnNpb24oc2VsZiwgYXJjaGl0ZWN0dXJlKToK KysgICAgICAgIHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNo aXRlY3R1cmVdLlVuc2VsZWN0QWxsKCkKKysgICAgICAgIHNlbGYuYnV0dG9uX3VuaW5zdGFsbFth cmNoaXRlY3R1cmVdLkVuYWJsZShUcnVlKQorKyAgICAgICAgc2VsZi5idXR0b25faW5zdGFsbFth cmNoaXRlY3R1cmVdLkVuYWJsZShGYWxzZSkKKysKKysgICAgZGVmIF9vbl9zZWxlY3RfYXZhaWxh YmxlX3dpbmVfdmVyc2lvbihzZWxmLCBhcmNoaXRlY3R1cmUpOgorKyAgICAgICAgc2VsZi5pbnN0 YWxsZWRfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hpdGVjdHVyZV0uVW5zZWxlY3RB bGwoKQorKyAgICAgICAgc2VsZi5idXR0b25fdW5pbnN0YWxsW2FyY2hpdGVjdHVyZV0uRW5hYmxl KEZhbHNlKQorKyAgICAgICAgc2VsZi5idXR0b25faW5zdGFsbFthcmNoaXRlY3R1cmVdLkVuYWJs ZShUcnVlKQorKworKyAgICBkZWYgX29uX2luc3RhbGwoc2VsZiwgYXJjaGl0ZWN0dXJlKToKKysg ICAgICAgIHNlbGVjdGVkX3ZlcnNpb24gPSBzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25zX3Ry ZWVfc2VsZWN0b3JbYXJjaGl0ZWN0dXJlXS5HZXRJdGVtVGV4dChzZWxmLmF2YWlsYWJsZV93aW5l X3ZlcnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaGl0ZWN0dXJlXS5HZXRTZWxlY3Rpb24oKSkKKysg ICAgICAgIGlmIHNlbGYub25faW5zdGFsbF9oYW5kbGVyIGlzIG5vdCBOb25lOgorKyAgICAgICAg ICAgIHNlbGYub25faW5zdGFsbF9oYW5kbGVyKGFyY2hpdGVjdHVyZSwgc2VsZWN0ZWRfdmVyc2lv bikKKysKKysgICAgZGVmIF9vbl9kZWxldGUoc2VsZiwgYXJjaGl0ZWN0dXJlKToKKysgICAgICAg IHNlbGVjdGVkX3ZlcnNpb24gPSBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNpb25zX3RyZWVfc2Vs ZWN0b3JbYXJjaGl0ZWN0dXJlXS5HZXRJdGVtVGV4dChzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNp b25zX3RyZWVfc2VsZWN0b3JbYXJjaGl0ZWN0dXJlXS5HZXRTZWxlY3Rpb24oKSkKKysgICAgICAg IGlmIHNlbGYub25fcmVtb3ZlX2hhbmRsZXIgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgc2Vs Zi5vbl9yZW1vdmVfaGFuZGxlcihhcmNoaXRlY3R1cmUsIHNlbGVjdGVkX3ZlcnNpb24pCitkaWZm IC0tZ2l0IGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zVG9vbHMucHkgYi9weXRo b24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNUb29scy5weQoraW5kZXggMDZmYjQwMWU2Li42 OWQ0Y2YyYjIgMTAwNjQ0CistLS0gYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNU b29scy5weQorKysrIGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zVG9vbHMucHkK K0BAIC0xMCwyMiArMTAsMTAgQEAgZGVmIGZldGNoVXNlck9TKCk6CisgICAgIGVsc2U6CisgICAg ICAgICByZXR1cm4gImZyZWVic2QiCisgCistZGVmIEdldFdpbmVWZXJzaW9uKGdhbWUpOgorLSAg ICBjZmlsZSA9IFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAic2hvcnRjdXRzLyIgKyBnYW1l CistICAgIGZpY2hpZXIgPSBvcGVuKGNmaWxlLCAiciIpLnJlYWRsaW5lcygpCistICAgIGkgPSAw CistICAgIGxpbmUgPSAiIgorLSAgICB3aGlsZSAoaSA8IGxlbihmaWNoaWVyKSk6CistICAgICAg ICBmaWNoaWVyW2ldID0gZmljaGllcltpXS5yZXBsYWNlKCJcbiIsICIiKQorLSAgICAgICAgaWYg KCJQQVRIPSIgaW4gZmljaGllcltpXSBhbmQgIldpbmVWZXJzaW9ucyIgaW4gZmljaGllcltpXSk6 CistICAgICAgICAgICAgbGluZSA9IGZpY2hpZXJbaV0ucmVwbGFjZSgiLy8iLCAiLyIpCistICAg ICAgICBpICs9IDEKKytkZWYgYXJjaGl0ZWN0dXJlX2lzX3N1cHBvcnRlZChhcmNoaXRlY3R1cmVf bmFtZSk6CisrICAgIHJldHVybiBUcnVlICMjIEZJWE1FCisgCistICAgIGlmIGxpbmUgPT0gIiI6 CistICAgICAgICB2ZXJzaW9uID0gIlN5c3RlbSIKKy0gICAgZWxzZToKKy0gICAgICAgIHZlcnNp b24gPSBsaW5lLnJlcGxhY2UoIlBBVEg9IiwgIiIpLnJlcGxhY2UoIlwiIiwgIiIpLnJlcGxhY2Uo VmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCwgIiIpLnJlcGxhY2UoIi8vIiwgIi8iKQorLSAgICAg ICAgdmVyc2lvbiA9IHZlcnNpb24uc3BsaXQoIi8iKQorLSAgICAgICAgdmVyc2lvbiA9IHZlcnNp b25bMV0KKy0KKy0gICAgcmV0dXJuIHZlcnNpb24KKytkZWYgZmV0Y2hfc3VwcG9ydGVkX2FyY2hz KCk6CisrICAgIGZvciBhdmFpbGFibGVfYXJjaCBpbiBbIng4NiIsICJ4ODZvbjY0IiwgImFtZDY0 Il06CisrICAgICAgICBpZiBhcmNoaXRlY3R1cmVfaXNfc3VwcG9ydGVkKGF2YWlsYWJsZV9hcmNo KToKKysgICAgICAgICAgICB5aWVsZCBhdmFpbGFibGVfYXJjaAorZGlmZiAtLWdpdCBhL3B5dGhv bi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1dpbmRvdy5weSBiL3B5dGhvbi93aW5lX3ZlcnNp b25zL1dpbmVWZXJzaW9uc1dpbmRvdy5weQoraW5kZXggZTNiOGI0MTYwLi5iNzZkYjBiMjUgMTAw NzU1CistLS0gYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkKKysr KyBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1dpbmRvdy5weQorQEAgLTMwLDE4 MyArMzAsOTUgQEAKKyBpbXBvcnQgbGliLnBsYXlvbmxpbnV4IGFzIHBsYXlvbmxpbnV4CisgZnJv bSB3aW5lX3ZlcnNpb25zLldpbmVWZXJzaW9uc0ZldGNoZXIgaW1wb3J0IFdpbmVWZXJzaW9uRmV0 Y2hlcgorIGZyb20gd2luZV92ZXJzaW9ucy5XaW5lVmVyc2lvbnNOb3RlYm9vayBpbXBvcnQgV2lu ZVZlcnNpb25zTm90ZWJvb2sKKy1mcm9tIHdpbmVfdmVyc2lvbnMuV2luZVZlcnNpb25zVG9vbHMg aW1wb3J0IGZldGNoVXNlck9TCisrZnJvbSB3aW5lX3ZlcnNpb25zLldpbmVWZXJzaW9uc1Rvb2xz IGltcG9ydCBmZXRjaFVzZXJPUywgZmV0Y2hfc3VwcG9ydGVkX2FyY2hzCisgCisgbGliLmxuZy5M YW5nKCkKKyAKKyAKKy1kZWYgU2V0V2luZVZlcnNpb24oZ2FtZSwgdmVyc2lvbik6CistICAgIGNm aWxlID0gVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICJzaG9ydGN1dHMvIiArIGdhbWUKKy0g ICAgZmljaGllciA9IG9wZW4oY2ZpbGUsICJyIikucmVhZGxpbmVzKCkKKy0gICAgaSA9IDAKKy0g ICAgbGluZSA9IFtdCistICAgIHdoaWxlIChpIDwgbGVuKGZpY2hpZXIpKTogICMgT24gcmV0aXJl IGwnZXZlbnR1ZWwKKy0gICAgICAgIGZpY2hpZXJbaV0gPSBmaWNoaWVyW2ldLnJlcGxhY2UoIlxu IiwgIiIpCistICAgICAgICBpZiAoIlBBVEg9IiBub3QgaW4gZmljaGllcltpXSBvciAiV2luZVZl cnNpb25zIiBub3QgaW4gZmljaGllcltpXSk6CistICAgICAgICAgICAgbGluZS5hcHBlbmQoZmlj aGllcltpXSkKKy0gICAgICAgIGkgKz0gMQorLQorLSAgICBmaWNoaWVyX3dyaXRlID0gb3Blbihj ZmlsZSwgInciKQorK2NsYXNzIFdpbmVWZXJzaW9uc1dpbmRvdyh3eC5GcmFtZSk6CisrICAgIGRl ZiBvbl9hdmFpbGFibGVfd2luZV92ZXJzaW9uc19kb3dubG9hZGVkKHNlbGYsIHZlcnNpb25zX3Bl cl9hcmNoaXRlY3R1cmUpOgorKyAgICAgICAgZm9yIGFyY2hpdGVjdHVyZSBpbiB2ZXJzaW9uc19w ZXJfYXJjaGl0ZWN0dXJlOgorKyAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucyA9IFtdCisr ICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZVthcmNo aXRlY3R1cmVdOgorKyAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMuYXBwZW5kKHZl cnNpb25bIm5hbWUiXSkKKyAKKy0gICAgaWYgKHZlcnNpb24gIT0gIlN5c3RlbSIpOiAgIyBPbiBp bnNlcmUKKy0gICAgICAgIGlmIG9zLmVudmlyb25bIlBPTF9PUyJdID09ICJNYWMiOgorLSAgICAg ICAgICAgIGxpbmUuaW5zZXJ0KDEsICJQQVRIPVwiIiArIFZhcmlhYmxlcy5wbGF5b25saW51eF9y ZXAgKyAiV2luZVZlcnNpb25zLyIgKyB2ZXJzaW9uICsgIi9iaW4vOiRQQVRIXCIiKQorLSAgICAg ICAgICAgIGxpbmUuaW5zZXJ0KDEsCistICAgICAgICAgICAgICAgICAgICAgICAgIkxEX0xJQlJB UllfUEFUSD1cIiIgKyBWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgIldpbmVWZXJzaW9ucy8i ICsgdmVyc2lvbiArICIvbGliLzokTERfTElCUkFSWV9QQVRIXCIiKQorLSAgICAgICAgZWxzZToK Ky0gICAgICAgICAgICBsaW5lLmluc2VydCgxLCAiUEFUSD1cIiIgKyBWYXJpYWJsZXMucGxheW9u bGludXhfcmVwICsgIldpbmVWZXJzaW9ucy8iICsgdmVyc2lvbiArICIvdXNyL2Jpbi86JFBBVEhc IiIpCistICAgICAgICAgICAgbGluZS5pbnNlcnQoMSwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAiTERfTElCUkFSWV9QQVRIPVwiIiArIFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiV2lu ZVZlcnNpb25zLyIgKyB2ZXJzaW9uICsgIi91c3IvbGliLzokTERfTElCUkFSWV9QQVRIXCIiKQor KyAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucy5zb3J0KGtleT1uYXRzb3J0Lm5hdHNvcnRf a2V5Z2VuKCkpCisrICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zLnJldmVyc2UoKQorKyAg ICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucyA9IGF2YWlsYWJsZV92ZXJzaW9uc1s6XQorIAor LSAgICBpID0gMAorLSAgICB3aGlsZSAoaSA8IGxlbihsaW5lKSk6ICAjIE9uIGVjcml0CistICAg ICAgICBmaWNoaWVyX3dyaXRlLndyaXRlKGxpbmVbaV0gKyAiXG4iKQorLSAgICAgICAgaSArPSAx CisrICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gYXZhaWxhYmxlX3ZlcnNpb25zOgorKyAgICAg ICAgICAgICAgICB3eC5DYWxsQWZ0ZXIoc2VsZi5ub3RlYm9vay5hZGRfYXZhaWxhYmxlX3ZlcnNp b24sIGFyY2hpdGVjdHVyZSwgdmVyc2lvbikKKyAKKysgICAgZGVmIG9uX2luc3RhbGxlZF93aW5l X3ZlcnNpb25zX2Rvd25sb2FkZWQoc2VsZiwgdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZSk6Cisr ICAgICAgICBmb3IgYXJjaGl0ZWN0dXJlIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmU6Cisr ICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zID0gW10KKysgICAgICAgICAgICBmb3IgdmVy c2lvbiBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlW2FyY2hpdGVjdHVyZV06CisrICAgICAg ICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5hcHBlbmQodmVyc2lvblsibmFtZSJdKQorIAor KyAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5zb3J0KGtleT1uYXRzb3J0Lm5hdHNvcnRf a2V5Z2VuKCkpCisrICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLnJldmVyc2UoKQorKyAg ICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucyA9IGluc3RhbGxlZF92ZXJzaW9uc1s6XQorIAor KyAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIGluc3RhbGxlZF92ZXJzaW9uczoKKysgICAgICAg ICAgICAgICAgd3guQ2FsbEFmdGVyKHNlbGYubm90ZWJvb2suYWRkX2luc3RhbGxlZF92ZXJzaW9u LCBhcmNoaXRlY3R1cmUsIHZlcnNpb24pCisgCisrICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwg ZXJyb3IpOgorKyAgICAgICAgcHJpbnQoZXJyb3IpCisgCistY2xhc3MgV2luZVZlcnNpb25zV2lu ZG93KHd4LkZyYW1lKToKKyAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgaWQsIHRpdGxl KToKKy0gICAgICAgIHNlbGYuZG93bmxvYWQzMiA9IFdpbmVWZXJzaW9uRmV0Y2hlcigieDg2IikK Ky0gICAgICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRydWUiKToK Ky0gICAgICAgICAgICBzZWxmLmRvd25sb2FkNjQgPSBXaW5lVmVyc2lvbkZldGNoZXIoImFtZDY0 IikKKy0KKy0gICAgICAgIHd4LkZyYW1lLl9faW5pdF9fKHNlbGYsIHBhcmVudCwgLTEsIHRpdGxl LCBzaXplPSg3NTAsIDQwMCArIFZhcmlhYmxlcy53aW5kb3dzX2FkZF9zaXplKSwKKysgICAgICAg IHd4LkZyYW1lLl9faW5pdF9fKHNlbGYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJl bnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgIHRpdGxlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0oNzUwLCA0MDAg KyBWYXJpYWJsZXMud2luZG93c19hZGRfc2l6ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHlsZT13eC5DTE9TRV9CT1ggfCB3eC5DQVBUSU9OIHwgd3guTUlOSU1JWkVfQk9YKQorICAg ICAgICAgc2VsZi50aW1lciA9IHd4LlRpbWVyKHNlbGYsIDEpCisgICAgICAgICBzZWxmLlNldElj b24od3guSWNvbihWYXJpYWJsZXMucGxheW9ubGludXhfZW52ICsgIi9ldGMvcGxheW9ubGludXgu cG5nIiwgd3guQklUTUFQX1RZUEVfQU5ZKSkKKy0gICAgICAgICMgc2VsZi5wYW5lbCA9IHd4LlBh bmVsKHNlbGYsIC0xKQorLQorLSAgICAgICAgc2VsZi5vbmdsZXRzID0gV2luZVZlcnNpb25zTm90 ZWJvb2soc2VsZikKKy0gICAgICAgICMgc2VsZi5zaXplciA9IHd4LkJveFNpemVyKHd4LlZFUlRJ Q0FMKQorLSAgICAgICAgIyBzZWxmLnNpemVyLkFkZChzZWxmLm9uZ2xldHMsIDE1LCB3eC5FWFBB TkR8d3guQUxMLCAyKQorKyAgICAgICAgc2VsZi53aW5lX3ZlcnNpb25fZmV0Y2hlciA9IFdpbmVW ZXJzaW9uRmV0Y2hlcihmZXRjaFVzZXJPUygpKQorIAorLSAgICAgICAgc2VsZi5nZXRWZXJzaW9u cygieDg2IikKKy0gICAgICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0g IlRydWUiKToKKy0gICAgICAgICAgICBzZWxmLmdldFZlcnNpb25zKCJhbWQ2NCIpCistICAgICAg ICAjIHNlbGYucGFuZWwuU2V0U2l6ZXIoc2VsZi5zaXplcikKKy0gICAgICAgICMgc2VsZi5wYW5l bC5TZXRBdXRvTGF5b3V0KFRydWUpCistCistICAgICAgICBzZWxmLm9uZ2xldHMubGlzdGVfdmVy c2lvbnMoKQorLSAgICAgICAgaWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAi VHJ1ZSIpOgorLSAgICAgICAgICAgIHNlbGYub25nbGV0cy5saXN0ZV92ZXJzaW9ucygiYW1kNjQi KQorLSAgICAgICAgc2VsZi5vbGRyZWxvYWQzMiA9ICIiCisrICAgICAgICBzZWxmLm5vdGVib29r ID0gV2luZVZlcnNpb25zTm90ZWJvb2soc2VsZikKKysgICAgICAgIHNlbGYuc2l6ZXIgPSB3eC5C b3hTaXplcih3eC5WRVJUSUNBTCkKKysgICAgICAgIHNlbGYuc2l6ZXIuQWRkKHNlbGYubm90ZWJv b2ssIDE1LCB3eC5FWFBBTkQgfCB3eC5BTEwsIDIpCisgCistICAgICAgICBpZiAob3MuZW52aXJv blsiQU1ENjRfQ09NUEFUSUJMRSJdID09ICJUcnVlIik6CistICAgICAgICAgICAgc2VsZi5vbGRy ZWxvYWQ2NCA9ICIiCisrICAgICAgICBmb3IgYXZhaWxhYmxlX2FyY2ggaW4gZmV0Y2hfc3VwcG9y dGVkX2FyY2hzKCk6CisrICAgICAgICAgICAgc2VsZi5ub3RlYm9vay5hZGRfYXJjaGl0ZWN0dXJl X3RhYihhdmFpbGFibGVfYXJjaCkKKyAKKy0gICAgICAgIHNlbGYub2xkdmVyc2lvbnMzMiA9IFtd CisrICAgICAgICBzZWxmLmxhc3RfY2hlY2tzdW0gPSBOb25lCisrICAgICAgICBzZWxmLm5vdGVi b29rLm9uX2luc3RhbGxfaGFuZGxlciA9IHNlbGYuaW5zdGFsbF93aW5lX3ZlcnNpb24KKysgICAg ICAgIHNlbGYubm90ZWJvb2sub25fcmVtb3ZlX2hhbmRsZXIgPSBzZWxmLnJlbW92ZV93aW5lX3Zl cnNpb24KKyAKKy0gICAgICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0g IlRydWUiKToKKy0gICAgICAgICAgICBzZWxmLm9sZHZlcnNpb25zNjQgPSBbXQorKyAgICAgICAg c2VsZi5CaW5kKHd4LkVWVF9USU1FUiwgc2VsZi5kZXRlY3RfY2hhbmdlcywgc2VsZi50aW1lcikK KysgICAgICAgIHNlbGYudGltZXIuU3RhcnQoMTAwMCkKKyAKKy0gICAgICAgICMgc2VsZi5idXR0 b24gPSB3eC5CdXR0b24oc2VsZi5wYW5lbHNfYnV0dG9ucywgd3guSURfQ0xPU0UsIF8oIkNsb3Nl IiksIHBvcz0oNTEwLCA1KSwgc2l6ZT13eC5EZWZhdWx0U2l6ZSkKKysgICAgZGVmIHJlZnJlc2go c2VsZik6CisrICAgICAgICBmb3IgYXZhaWxhYmxlX2FyY2ggaW4gZmV0Y2hfc3VwcG9ydGVkX2Fy Y2hzKCk6CisrICAgICAgICAgICAgc2VsZi5ub3RlYm9vay5jbGVhbl92ZXJzaW9uX29mX2FyY2hp dGVjdHVyZShhdmFpbGFibGVfYXJjaCkKKyAKKy0gICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQlVU VE9OLCBzZWxmLmNsb3NlYXBwLCBpZD13eC5JRF9DTE9TRSkKKy0gICAgICAgIHNlbGYuQmluZCh3 eC5FVlRfQ0xPU0UsIHNlbGYuY2xvc2VhcHApCistICAgICAgICBzZWxmLkJpbmQod3guRVZUX1RS RUVfU0VMX0NIQU5HRUQsIHNlbGYudW5zZWxlY3QzMiwgaWQ9MTA2KQorLSAgICAgICAgc2VsZi5C aW5kKHd4LkVWVF9UUkVFX1NFTF9DSEFOR0VELCBzZWxmLnVuc2VsZWN0MzIsIGlkPTEwNykKKy0g ICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQlVUVE9OLCBzZWxmLmRlbGV0ZTMyLCBpZD0xMDgpCist ICAgICAgICBzZWxmLkJpbmQod3guRVZUX0JVVFRPTiwgc2VsZi5pbnN0YWxsMzIsIGlkPTEwOSkK KysgICAgICAgIHNlbGYud2luZV92ZXJzaW9uX2ZldGNoZXIuZmV0Y2hfYWxsX2F2YWlsYWJsZV93 aW5lX3ZlcnNpb24oc2VsZi5vbl9hdmFpbGFibGVfd2luZV92ZXJzaW9uc19kb3dubG9hZGVkLCBz ZWxmLmhhbmRsZV9lcnJvcikKKysgICAgICAgIHNlbGYud2luZV92ZXJzaW9uX2ZldGNoZXIuZmV0 Y2hfYWxsX2luc3RhbGxlZF93aW5lX3ZlcnNpb24oc2VsZi5vbl9pbnN0YWxsZWRfd2luZV92ZXJz aW9uc19kb3dubG9hZGVkLCBzZWxmLmhhbmRsZV9lcnJvcikKKyAKKy0gICAgICAgIHNlbGYuQmlu ZCh3eC5FVlRfVFJFRV9TRUxfQ0hBTkdFRCwgc2VsZi51bnNlbGVjdDY0LCBpZD0yMDYpCistICAg ICAgICBzZWxmLkJpbmQod3guRVZUX1RSRUVfU0VMX0NIQU5HRUQsIHNlbGYudW5zZWxlY3Q2NCwg aWQ9MjA3KQorLSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9CVVRUT04sIHNlbGYuZGVsZXRlNjQs IGlkPTIwOCkKKy0gICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQlVUVE9OLCBzZWxmLmluc3RhbGw2 NCwgaWQ9MjA5KQorKyAgICBkZWYgZGV0ZWN0X2NoYW5nZXMoc2VsZiwgZXZlbnQpOgorKyAgICAg ICAgY2hlY2tzdW0gPSBzZWxmLndpbmVfdmVyc2lvbl9mZXRjaGVyLmNhbGN1bGF0ZV9pbnN0YWxs ZWRfaGFzaCgpCisgCistICAgICAgICBzZWxmLkJpbmQod3guRVZUX1RJTUVSLCBzZWxmLkF1dG9S ZWxvYWQsIHNlbGYudGltZXIpCistICAgICAgICBzZWxmLnRpbWVyLlN0YXJ0KDIwMCkKKysgICAg ICAgIGlmIHNlbGYubGFzdF9jaGVja3N1bSAhPSBjaGVja3N1bToKKysgICAgICAgICAgICBzZWxm Lmxhc3RfY2hlY2tzdW0gPSBjaGVja3N1bQorKyAgICAgICAgICAgIHNlbGYucmVmcmVzaCgpCisg CistICAgIGRlZiBBdXRvUmVsb2FkKHNlbGYsIGV2ZW50KToKKy0gICAgICAgIHJlbG9hZDMyID0g b3MubGlzdGRpcihWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgIi93aW5lLyIgKyBmZXRjaFVz ZXJPUygpICsgIi14ODYiKQorLSAgICAgICAgaWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElC TEUiXSA9PSAiVHJ1ZSIpOgorLSAgICAgICAgICAgIHJlbG9hZDY0ID0gb3MubGlzdGRpcihWYXJp YWJsZXMucGxheW9ubGludXhfcmVwICsgIi93aW5lLyIgKyBmZXRjaFVzZXJPUygpICsgIi1hbWQ2 NCIpCistICAgICAgICBpZiAoc2VsZi5kb3dubG9hZDMyLnRocmVhZF9tZXNzYWdlID09ICJPayIg b3Igc2VsZi5kb3dubG9hZDMyLnRocmVhZF9tZXNzYWdlID09ICJFcnIiKToKKy0gICAgICAgICAg ICBzZWxmLldyaXRlVmVyc2lvbigpCistICAgICAgICAgICAgc2VsZi5kb3dubG9hZDMyLnRocmVh ZF9tZXNzYWdlID0gIldhaXQiCisgCistICAgICAgICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09N UEFUSUJMRSJdID09ICJUcnVlIik6CistICAgICAgICAgICAgaWYgKHNlbGYuZG93bmxvYWQ2NC50 aHJlYWRfbWVzc2FnZSA9PSAiT2siIG9yIHNlbGYuZG93bmxvYWQ2NC50aHJlYWRfbWVzc2FnZSA9 PSAiRXJyIik6CistICAgICAgICAgICAgICAgIHNlbGYuV3JpdGVWZXJzaW9uKCJhbWQ2NCIpCist ICAgICAgICAgICAgICAgIHNlbGYuZG93bmxvYWQ2NC50aHJlYWRfbWVzc2FnZSA9ICJXYWl0Igor LQorLSAgICAgICAgaWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAiVHJ1ZSIp OgorLSAgICAgICAgICAgIGlmIChyZWxvYWQ2NCAhPSBzZWxmLm9sZHJlbG9hZDY0KToKKy0gICAg ICAgICAgICAgICAgc2VsZi5nZXRWZXJzaW9ucygiYW1kNjQiKQorLSAgICAgICAgICAgICAgICBz ZWxmLm9sZHJlbG9hZDY0ID0gcmVsb2FkNjQKKy0KKy0gICAgICAgIGlmIChyZWxvYWQzMiAhPSBz ZWxmLm9sZHJlbG9hZDMyKToKKy0gICAgICAgICAgICBzZWxmLmdldFZlcnNpb25zKCkKKy0gICAg ICAgICAgICBzZWxmLm9sZHJlbG9hZDMyID0gcmVsb2FkMzIKKy0KKy0gICAgICAgIGlmIChzZWxm LmRvd25sb2FkMzIudmVyc2lvbnMgIT0gc2VsZi5vbGR2ZXJzaW9uczMyKToKKy0gICAgICAgICAg ICBzZWxmLm9sZHZlcnNpb25zMzIgPSBzZWxmLmRvd25sb2FkMzIudmVyc2lvbnNbOl0KKy0KKy0g ICAgICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRydWUiKToKKy0g ICAgICAgICAgICBpZiAoc2VsZi5kb3dubG9hZDY0LnZlcnNpb25zICE9IHNlbGYub2xkdmVyc2lv bnM2NCk6CistICAgICAgICAgICAgICAgIHNlbGYub2xkdmVyc2lvbnM2NCA9IHNlbGYuZG93bmxv YWQ2NC52ZXJzaW9uc1s6XQorLQorLSAgICBkZWYgc2l6ZWRpcmVjdG9yeShzZWxmLCBwYXRoKToK Ky0gICAgICAgIHNpemUgPSAwCistICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mu d2FsayhwYXRoKToKKy0gICAgICAgICAgICBmb3IgZmljIGluIGZpbGVzOgorLSAgICAgICAgICAg ICAgICBzaXplICs9IG9zLnBhdGguZ2V0c2l6ZShvcy5wYXRoLmpvaW4ocm9vdCwgZmljKSkKKy0g ICAgICAgIHJldHVybiBzaXplCistCistICAgIGRlZiB1bnNlbGVjdDMyKHNlbGYsIGV2ZW50KToK Ky0gICAgICAgIGlmIChldmVudC5HZXRJZCgpID09IDEwNik6CistICAgICAgICAgICAgc2VsZi5v bmdsZXRzLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclsieDg2Il0uVW5zZWxlY3RB bGwoKQorLSAgICAgICAgICAgIHNlbGYub25nbGV0cy5idXR0b25fcm1bIng4NiJdLkVuYWJsZShG YWxzZSkKKy0gICAgICAgICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX2luWyJ4ODYiXS5FbmFibGUo VHJ1ZSkKKy0gICAgICAgIGlmIChldmVudC5HZXRJZCgpID09IDEwNyk6CistICAgICAgICAgICAg c2VsZi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclsieDg2Il0uVW5z ZWxlY3RBbGwoKQorLSAgICAgICAgICAgIHNlbGYub25nbGV0cy5idXR0b25fcm1bIng4NiJdLkVu YWJsZShUcnVlKQorLSAgICAgICAgICAgIHNlbGYub25nbGV0cy5idXR0b25faW5bIng4NiJdLkVu YWJsZShGYWxzZSkKKy0KKy0gICAgZGVmIGRlbGV0ZTMyKHNlbGYsIGV2ZW50KToKKy0gICAgICAg IHNlbGYuZGVsZXRlX2NvbW1vbihldmVudCwgIng4NiIpCistCistICAgIGRlZiBkZWxldGVfY29t bW9uKHNlbGYsIGV2ZW50LCBhcmNoKToKKy0gICAgICAgIHZlcnNpb24gPSBzZWxmLm9uZ2xldHMu aW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkdldEl0ZW1UZXh0KAorLSAg ICAgICAgICAgIHNlbGYub25nbGV0cy5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3Jb YXJjaF0uR2V0U2VsZWN0aW9uKCkpCistICAgICAgICB1c2VkX3ZlcnNpb24gPSBzZWxmLmNoZWNr VmVyc2lvblVzZShhcmNoKSAgIyBHZXQgdGhlIHNldCBvZiB3aW5lIHZlcnNpb24gdXNlZCBieSB3 aW5lcHJlZml4CisrICAgIGRlZiByZW1vdmVfd2luZV92ZXJzaW9uKHNlbGYsIGFyY2hpdGVjdHVy ZSwgdmVyc2lvbik6CisrICAgICAgICB1c2VkX3ZlcnNpb24gPSBzZWxmLmNoZWNrVmVyc2lvblVz ZShhcmNoaXRlY3R1cmUpICAjIEdldCB0aGUgc2V0IG9mIHdpbmUgdmVyc2lvbiB1c2VkIGJ5IHdp bmVwcmVmaXgKKyAgICAgICAgIG1lc3NhZ2UgPSBfKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8g ZGVsZXRlIHdpbmUgezB9PycpLmZvcm1hdCh2ZXJzaW9uKQorICAgICAgICAgaWYgdmVyc2lvbiBp biB1c2VkX3ZlcnNpb246CisgICAgICAgICAgICAgbWVzc2FnZSArPSAiXG4iICsgXygnVGhpcyB2 ZXJzaW9uIGlzIENVUlJFTlRMWSBJTiBVU0UnKQorICAgICAgICAgaWYgKHd4LllFUyA9PSB3eC5N ZXNzYWdlQm94KG1lc3NhZ2UsIG9zLmVudmlyb25bIkFQUExJQ0FUSU9OX1RJVExFIl0sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3guWUVTX05PIHwgd3guSUNP Tl9RVUVTVElPTikpOgorLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVmFyaWFibGVzLnBsYXlv bmxpbnV4X3JlcCArICIvd2luZS8iICsgZmV0Y2hVc2VyT1MoKSArICItIiArIGFyY2ggKyAiLyIg KyB2ZXJzaW9uKQorLQorLSAgICBkZWYgaW5zdGFsbDMyKHNlbGYsIGV2ZW50KToKKy0gICAgICAg IHNlbGYuaW5zdGFsbF9jb21tb24oZXZlbnQsICJ4ODYiKQorLQorLSAgICBkZWYgaW5zdGFsbF9j b21tb24oc2VsZiwgZXZlbnQsIGFyY2gpOgorLSAgICAgICAgaW5zdGFsbCA9IHNlbGYub25nbGV0 cy5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uR2V0SXRlbVRleHQoc2Vs Zi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5HZXRTZWxl Y3Rpb24oKSkKKy0gICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oWyJiYXNoIiwgVmFyaWFibGVzLnBs YXlvbmxpbnV4X2VudiArICIvYmFzaC9pbnN0YWxsX3d2ZXIiLCBpbnN0YWxsLCBhcmNoXSkKKysg ICAgICAgICAgICBzaHV0aWwucm10cmVlKFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiL3dp bmUvIiArIGZldGNoVXNlck9TKCkgKyAiLSIgKyBhcmNoaXRlY3R1cmUgKyAiLyIgKyB2ZXJzaW9u KQorIAorLSAgICBkZWYgdW5zZWxlY3Q2NChzZWxmLCBldmVudCk6CistICAgICAgICBpZiAoZXZl bnQuR2V0SWQoKSA9PSAyMDYpOgorLSAgICAgICAgICAgIHNlbGYub25nbGV0cy5pbnN0YWxsZWRX aW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbImFtZDY0Il0uVW5zZWxlY3RBbGwoKQorLSAgICAgICAg ICAgIHNlbGYub25nbGV0cy5idXR0b25fcm1bImFtZDY0Il0uRW5hYmxlKEZhbHNlKQorLSAgICAg ICAgICAgIHNlbGYub25nbGV0cy5idXR0b25faW5bImFtZDY0Il0uRW5hYmxlKFRydWUpCistICAg ICAgICBpZiAoZXZlbnQuR2V0SWQoKSA9PSAyMDcpOgorLSAgICAgICAgICAgIHNlbGYub25nbGV0 cy5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbImFtZDY0Il0uVW5zZWxlY3RBbGwo KQorLSAgICAgICAgICAgIHNlbGYub25nbGV0cy5idXR0b25fcm1bImFtZDY0Il0uRW5hYmxlKFRy dWUpCistICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9pblsiYW1kNjQiXS5FbmFibGUo RmFsc2UpCisgCistICAgIGRlZiBkZWxldGU2NChzZWxmLCBldmVudCk6CistICAgICAgICBzZWxm LmRlbGV0ZV9jb21tb24oZXZlbnQsICJhbWQ2NCIpCisrICAgIGRlZiBpbnN0YWxsX3dpbmVfdmVy c2lvbihzZWxmLCBhcmNoaXRlY3R1cmUsIHZlcnNpb24pOgorKyAgICAgICAgcHJpbnQoIiVzIG9m IGFyY2hpdGVjdHVyZSAlcyB3aWxsIGJlIGluc3RhbGxlZCAiICUgKHZlcnNpb24sIGFyY2hpdGVj dHVyZSkpCisrICAgICAgICBzdWJwcm9jZXNzLlBvcGVuKFsiYmFzaCIsIFZhcmlhYmxlcy5wbGF5 b25saW51eF9lbnYgKyAiL2Jhc2gvaW5zdGFsbF93dmVyIiwgdmVyc2lvbiwgYXJjaGl0ZWN0dXJl XSkKKyAKKy0gICAgZGVmIGluc3RhbGw2NChzZWxmLCBldmVudCk6CistICAgICAgICBzZWxmLmlu c3RhbGxfY29tbW9uKGV2ZW50LCAiYW1kNjQiKQorLQorLSAgICBkZWYgZ2V0VmVyc2lvbnMoc2Vs ZiwgYXJjaD0ieDg2Iik6CistICAgICAgICBpZiAoYXJjaCA9PSAieDg2Iik6CistICAgICAgICAg ICAgc2VsZi5kb3dubG9hZDMyLnRocmVhZF9tZXNzYWdlID0gImdldCIKKy0gICAgICAgIGlmIChh cmNoID09ICJhbWQ2NCIpOgorLSAgICAgICAgICAgIHNlbGYuZG93bmxvYWQ2NC50aHJlYWRfbWVz c2FnZSA9ICJnZXQiCisgCisgICAgIGRlZiBjaGVja1ZlcnNpb25Vc2Uoc2VsZiwgYXJjaCk6ICAj IENoZWNrIHRoZSB3aW5lIHZlcnNpb24gdXNlIGJ5IHdpbmVwcmVmaXgKKyAgICAgICAgIHVzZWRf dmVyc2lvbnMgPSBzZXQoW10pCitAQCAtMjE4LDY0ICsxMzAsOCBAQCBkZWYgY2hlY2tWZXJzaW9u VXNlKHNlbGYsIGFyY2gpOiAgIyBDaGVjayB0aGUgd2luZSB2ZXJzaW9uIHVzZSBieSB3aW5lcHJl Zml4CisgICAgICAgICAgICAgICAgIHVzZWRfdmVyc2lvbnMuYWRkKHdpbmVfdmVyc2lvbikKKyAg ICAgICAgIHJldHVybiAodXNlZF92ZXJzaW9ucykKKyAKKy0gICAgZGVmIFdyaXRlVmVyc2lvbihz ZWxmLCBhcmNoPSJ4ODYiKToKKy0gICAgICAgIHNlbGYub25nbGV0cy5pbWFnZXNhcHBzW2FyY2hd LlJlbW92ZUFsbCgpCistICAgICAgICBzZWxmLm9uZ2xldHMuaW1hZ2VzYXBwc19pW2FyY2hdLlJl bW92ZUFsbCgpCistICAgICAgICBzZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJl ZVNlbGVjdG9yW2FyY2hdLkRlbGV0ZUFsbEl0ZW1zKCkKKy0gICAgICAgIHNlbGYub25nbGV0cy5p bnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uRGVsZXRlQWxsSXRlbXMoKQor LQorLSAgICAgICAgcm9vdCA9IHNlbGYub25nbGV0cy5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVl U2VsZWN0b3JbYXJjaF0uQWRkUm9vdCgiIikKKy0gICAgICAgIHNlbGYuaSA9IDAKKy0gICAgICAg IGlmIChhcmNoID09ICJ4ODYiKToKKy0gICAgICAgICAgICB3aGlsZSAoc2VsZi5pIDwgbGVuKHNl bGYuZG93bmxvYWQzMi52ZXJzaW9ucykpOgorLSAgICAgICAgICAgICAgICBzZWxmLm9uZ2xldHMu aW1hZ2VzYXBwc1thcmNoXS5BZGQoCistICAgICAgICAgICAgICAgICAgICB3eC5CaXRtYXAoVmFy aWFibGVzLnBsYXlvbmxpbnV4X2VudiArICIvZXRjL2luc3RhbGwvd2luZS1wYWNrYWdlcy5wbmci KSkKKy0gICAgICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1Ry ZWVTZWxlY3RvclthcmNoXS5BcHBlbmRJdGVtKHJvb3QsIHNlbGYuZG93bmxvYWQzMi52ZXJzaW9u c1tzZWxmLmldLCBzZWxmLmkpCistICAgICAgICAgICAgICAgIHNlbGYuaSArPSAxCistICAgICAg ICBpZiAoYXJjaCA9PSAiYW1kNjQiKToKKy0gICAgICAgICAgICB3aGlsZSAoc2VsZi5pIDwgbGVu KHNlbGYuZG93bmxvYWQ2NC52ZXJzaW9ucykpOgorLSAgICAgICAgICAgICAgICBzZWxmLm9uZ2xl dHMuaW1hZ2VzYXBwc1thcmNoXS5BZGQoCistICAgICAgICAgICAgICAgICAgICB3eC5CaXRtYXAo VmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiArICIvZXRjL2luc3RhbGwvd2luZS1wYWNrYWdlcy5w bmciKSkKKy0gICAgICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9u c1RyZWVTZWxlY3RvclthcmNoXS5BcHBlbmRJdGVtKHJvb3QsIHNlbGYuZG93bmxvYWQ2NC52ZXJz aW9uc1tzZWxmLmldLCBzZWxmLmkpCistICAgICAgICAgICAgICAgIHNlbGYuaSArPSAxCistCist ICAgICAgICByb290MiA9IHNlbGYub25nbGV0cy5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2Vs ZWN0b3JbYXJjaF0uQWRkUm9vdCgiIikKKy0gICAgICAgIHdmb2xkZXIgPSBmZXRjaFVzZXJPUygp ICsgIi0iICsgYXJjaAorLQorLSAgICAgICAgdXNlZF92ZXJzaW9uID0gc2VsZi5jaGVja1ZlcnNp b25Vc2UoYXJjaCkgICMgR2V0IHRoZSBzZXQgb2Ygd2luZSB2ZXJzaW9uIHVzZWQgYnkgd2luZXBy ZWZpeAorLQorLSAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zID0gb3MubGlzdGRpcihWYXJpYWJs ZXMucGxheW9ubGludXhfcmVwICsgIi93aW5lLyIgKyB3Zm9sZGVyKQorLSAgICAgICAgaW5zdGFs bGVkX3ZlcnNpb25zLnNvcnQoa2V5PW5hdHNvcnQubmF0c29ydF9rZXlnZW4oKSkKKy0gICAgICAg IGluc3RhbGxlZF92ZXJzaW9ucy5yZXZlcnNlKCkKKy0gICAgICAgIHNlbGYuaSA9IDAKKy0gICAg ICAgIHNlbGYuaiA9IDAKKy0gICAgICAgIGJvbGRGb250ID0gc2VsZi5HZXRGb250KCkKKy0gICAg ICAgIGJvbGRGb250LlNldFdlaWdodCh3eC5CT0xEKQorLSAgICAgICAgd2hpbGUgKHNlbGYuaSA8 IGxlbihpbnN0YWxsZWRfdmVyc2lvbnMpKToKKy0gICAgICAgICAgICBpZiAob3MucGF0aC5pc2Rp cihWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgIi93aW5lLyIgKyB3Zm9sZGVyICsgIi8iICsg aW5zdGFsbGVkX3ZlcnNpb25zW3NlbGYuaV0pKToKKy0gICAgICAgICAgICAgICAgaXRlbUlkID0g c2VsZi5vbmdsZXRzLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5BcHBl bmRJdGVtKHJvb3QyLCBpbnN0YWxsZWRfdmVyc2lvbnNbc2VsZi5pXSwgc2VsZi5qKQorLSAgICAg ICAgICAgICAgICBpZiAobGVuKG9zLmxpc3RkaXIoCistICAgICAgICAgICAgICAgICAgICAgICAg VmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICIvd2luZS8iICsgd2ZvbGRlciArICIvIiArIGlu c3RhbGxlZF92ZXJzaW9uc1tzZWxmLmldKSkgPT0gMCk6CistICAgICAgICAgICAgICAgICAgICBz ZWxmLm9uZ2xldHMuaW1hZ2VzYXBwc19pW2FyY2hdLkFkZCgKKy0gICAgICAgICAgICAgICAgICAg ICAgICB3eC5CaXRtYXAoVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiArICIvZXRjL2luc3RhbGwv d2luZS13YXJuaW5nLnBuZyIpKQorLSAgICAgICAgICAgICAgICBlbGlmIGluc3RhbGxlZF92ZXJz aW9uc1tzZWxmLmldIG5vdCBpbiB1c2VkX3ZlcnNpb246CistICAgICAgICAgICAgICAgICAgICBz ZWxmLm9uZ2xldHMuaW1hZ2VzYXBwc19pW2FyY2hdLkFkZCh3eC5CaXRtYXAoVmFyaWFibGVzLnBs YXlvbmxpbnV4X2VudiArICIvZXRjL2luc3RhbGwvd2luZS5wbmciKSkKKy0gICAgICAgICAgICAg ICAgZWxzZTogICMgQ2xlYXJseSBzaG93IHRoZSB3aW5lIHZlcnNpb24gaW4gdXNlCistICAgICAg ICAgICAgICAgICAgICBzZWxmLm9uZ2xldHMuaW1hZ2VzYXBwc19pW2FyY2hdLkFkZCgKKy0gICAg ICAgICAgICAgICAgICAgICAgICB3eC5CaXRtYXAoVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiAr ICIvZXRjL2luc3RhbGwvd2luZS1pbi11c2UucG5nIikpCistICAgICAgICAgICAgICAgICAgICBz ZWxmLm9uZ2xldHMuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldEl0 ZW1Gb250KGl0ZW1JZCwgYm9sZEZvbnQpCistICAgICAgICAgICAgICAgIHNlbGYuaiArPSAxCist ICAgICAgICAgICAgc2VsZi5pICs9IDEKKy0gICAgICAgIHRyeToKKy0gICAgICAgICAgICBpZiAo dmVyc2lvbnNbMF0gPT0gIldpbmUgcGFja2FnZXMgd2Vic2l0ZSBpcyB1bmF2YWlsYWJsZSIpOgor LSAgICAgICAgICAgICAgICBzZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNl bGVjdG9yW2FyY2hdLkVuYWJsZShGYWxzZSkKKy0gICAgICAgICAgICAgICAgc2VsZi5vbmdsZXRz LmltYWdlc2FwcHNbYXJjaF0uUmVtb3ZlQWxsKCkKKy0gICAgICAgIGV4Y2VwdDoKKy0gICAgICAg ICAgICBwYXNzCistICAgICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX3JtW2FyY2hdLkVuYWJsZShG YWxzZSkKKy0gICAgICAgIHNlbGYub25nbGV0cy5idXR0b25faW5bYXJjaF0uRW5hYmxlKEZhbHNl KQorLQorLSAgICBkZWYgY2xvc2VhcHAoc2VsZiwgZXZlbnQpOgorKworKyAgICBkZWYgY2xvc2Uo c2VsZiwgZXZlbnQpOgorICAgICAgICAgc2VsZi5kb3dubG9hZDMyLnRocmVhZF9ydW5uaW5nID0g RmFsc2UKKyAgICAgICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRy dWUiKToKKyAgICAgICAgICAgICBzZWxmLmRvd25sb2FkNjQudGhyZWFkX3J1bm5pbmcgPSBGYWxz ZQorCitGcm9tIDk3MDQyNTkyMWE0OTM0YWQ1ODQyM2U2MWM3OTlmNDc4NWZjZGU4YzIgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBRdWVudGluIFBBUklTIDxnaXRAcXVlbnRpbi5wYXJp cz4KK0RhdGU6IFN1biwgMjQgSmFuIDIwMjEgMTU6NDE6MzIgKzAxMDAKK1N1YmplY3Q6IFtQQVRD SCAxNi8zN10gUmVhZmN0b3Jpbmcgd2luZSB2ZXJzaW9uIG1hbmFnZXIgY29kZQorCistLS0KKyBs aWIvc2NyaXB0cy5saWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxOSArKysrKysrKyst LS0KKyBsaWIvd2luZS5saWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKy0t CisgcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zVG9vbHMucHkgIHwgMTAgKysrKysr LQorIHB5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1dpbmRvdy5weSB8IDM0ICsrKysr KysrKysrKy0tLS0tLS0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDI0 IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL3NjcmlwdHMubGliIGIvbGliL3Njcmlw dHMubGliCitpbmRleCBmYmQzNjM0YzQuLjRmZDNmYjVjNSAxMDA3NTUKKy0tLSBhL2xpYi9zY3Jp cHRzLmxpYgorKysrIGIvbGliL3NjcmlwdHMubGliCitAQCAtNzcsMTcgKzc3LDI4IEBAIFBPTF9T eXN0ZW1fU2V0QXJjaCgpCisgCSMgVXNhZ2U6IFBPTF9TeXN0ZW1fU2V0QXJjaCAoYXV0b3x4ODZ8 YW1kNjQpCisgCSMgSWYgYW1kNjQgaXMgc3BlY2lmaWVkIGFuZCBub3Qgc3VwcG9ydGVkLCB0aGUg c2NyaXB0IHdpbGwgZW5kCisgCistCSMgJDEgPSBBdXRvLCB4ODYsIGFtZDY0CisrCSMgJDEgPSBB dXRvLCB4ODYsIGFtZDY0LCB4ODZvbjY0CisgCSMgJDIgPSBkZXRlY3RlZCwgaWYgdGhlIHJlc3Vs dCBvZiBhbiBhdXRvbWF0aWMgc2VsZWN0aW9uCisgCistCWlmIFsgISAiJDEiID09ICJ4ODYiIF0g JiYgWyAhICIkMSIgPT0gImFtZDY0IiBdCisrCWlmIFsgISAiJDEiID09ICJ4ODYiIF0gJiYgWyAh ICIkMSIgPT0gImFtZDY0IiBdICYmIFsgISAiJDEiID09ICJ4ODZvbjY0IiBdCisgCXRoZW4KKy0J CVsgIiRBTUQ2NF9DT01QQVRJQkxFIiA9PSAiVHJ1ZSIgXSAmJiBleHBvcnQgUE9MX0FSQ0g9ImFt ZDY0IiB8fCBleHBvcnQgUE9MX0FSQ0g9Ing4NiIKKysJICBpZiBbWyAiJE9TWF9WRVJTSU9OIiAt Z2UgMTkgXV07IHRoZW4KKysJICAgIGV4cG9ydCBQT0xfQVJDSD0ieDg2b242NCIKKysJICBlbHNl CisrICAJCVsgIiRBTUQ2NF9DT01QQVRJQkxFIiA9PSAiVHJ1ZSIgXSAmJiBleHBvcnQgUE9MX0FS Q0g9ImFtZDY0IiB8fCBleHBvcnQgUE9MX0FSQ0g9Ing4NiIKKysgIAlmaQorIAlmaQorKworIAlp ZiBbICIkMSIgPT0gIng4NiIgXQorIAl0aGVuCistCQlleHBvcnQgUE9MX0FSQ0g9Ing4NiIKKysJ CVtbICIkT1NYX1ZFUlNJT04iIC1nZSAxOSBdXSAmJiBleHBvcnQgUE9MX0FSQ0g9Ing4Nm9uNjQi IHx8IGV4cG9ydCBQT0xfQVJDSD0ieDg2IgorIAlmaQorKworKwlpZiBbICIkMSIgPT0gIng4Nm9u NjQiIF0KKysJdGhlbgorKwkJW1sgIiRPU1hfVkVSU0lPTiIgLWdlIDE5IF1dICYmIGV4cG9ydCBQ T0xfQVJDSD0ieDg2b242NCIgfHwgUE9MX0RlYnVnX0ZhdGFsICJ4ODZvbjY0IGlzIG5vdCBzdXBw b3J0ZWQgYnkgeW91ciBzeXN0ZW0iCisrCWZpCisrCisgCWlmIFsgIiQxIiA9PSAiYW1kNjQiIF0K KyAJdGhlbgorIAkJWyAiJEFNRDY0X0NPTVBBVElCTEUiID09ICJUcnVlIiBdICYmIGV4cG9ydCBQ T0xfQVJDSD0iYW1kNjQiIHx8IFBPTF9EZWJ1Z19GYXRhbCAiYW1kNjQgaXMgbm90IHN1cHBvcnRl ZCBieSB5b3VyIHN5c3RlbSIKK2RpZmYgLS1naXQgYS9saWIvd2luZS5saWIgYi9saWIvd2luZS5s aWIKK2luZGV4IGQyN2RlMTUwOS4uNDM0NzVmMzEwIDEwMDc1NQorLS0tIGEvbGliL3dpbmUubGli CisrKysgYi9saWIvd2luZS5saWIKK0BAIC02NzgsNyArNjc4LDYgQEAgUE9MX1dpbmVfSW5zdGFs bFZlcnNpb24oKSB7CisgCisgICAgIFdJTkVfQUREUkVTUz0iJChlY2hvICIkV0lORURBVEEiIHwg anEgJy51cmwnIC1yKSIKKyAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIldpbmUgYWRkcmVzcyBmb3Vu ZDogJFdJTkVfQUREUkVTUyIKKy0gICAgI1dJTkVfQUREUkVTUz0kKCRQT0xfV0dFVCAiJFdJTkVf U0lURS8kV0lORV9TRUNUSU9OLmxzdCIgLU8tIHwgZ3JlcCAiOyRwb2xfd2luZXZlcnNpb247IiB8 IHRhaWwgLW4gMSB8IGN1dCAtZCAiOyIgLWYxKQorIAorICAgICBpZiBbICIkV0lORV9BRERSRVNT IiA9ICIiIF0gJiYgWyAiJFBPTF9BUkNIIiA9ICJhbWQ2NCIgXTsgdGhlbgorICAgICAgIFBPTF9E ZWJ1Z19XYXJuaW5nICJXaW5lICQxIGFtZDY0IGRvZXMgbm90IGV4aXN0LiBTd2l0Y2hpbmcgdG8g eDg2IgorQEAgLTY5Nyw3ICs2OTYsOCBAQCBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbigpIHsKKyAg ICAgICBmaQorIAorICAgICAgIGNkICIkUE9MX1VTRVJfUk9PVC90bXAiCistICAgICAgZmlsZW5h bWU9IiRQV0QvUGxheU9uTGludXgtd2luZS0kcG9sX3dpbmV2ZXJzaW9uLSRQT0xfV0lORURJU1RS SUJVVElPTi0kQVJDSF9QUkVGSVgtJHNpdGVfYXJjaC50YXIuZ3oiCisrICAgICAgZmlsZW5hbWU9 IiRQV0QvJChiYXNlbmFtZSAiJFdJTkVfQUREUkVTUyIpIgorKyAgICAgIGVjaG8gIkxvY2FsIGZp bGUgbmFtZTogJGZpbGVuYW1lIgorICAgICAgIFBPTF9TZXR1cFdpbmRvd19kb3dubG9hZCAiJChl dmFsX2dldHRleHQgIkRvd25sb2FkaW5nIFdpbmU6ICIpJHBvbF93aW5ldmVyc2lvbiIgIiRUSVRM RSIgIiRXSU5FX0FERFJFU1MiCisgICAgICAgUE9MX1NldHVwV2luZG93X3dhaXRfbmV4dF9zaWdu YWwgIiQoZXZhbF9nZXR0ZXh0ICJEb3dubG9hZGluZyBXaW5lOiAiKSRwb2xfd2luZXZlcnNpb24i ICIkVElUTEUiCisgICAgICAgc2xlZXAgMQorQEAgLTcwNiw3ICs3MDYsNyBAQCBQT0xfV2luZV9J bnN0YWxsVmVyc2lvbigpIHsKKyAgICAgICBlY2hvICJTZXJ2ZXIgc2hhMSA6ICRzaGExIgorICAg ICAgIGVjaG8gIkNsaWVudCBzaGExIDogJHNoYTFfZmlsZSIKKyAKKy0gICAgICBpZiBbICEgIiRz aGExIiA9ICIkc2hhMV9maWxlIiBdICYmIFtbICRPU1hfVkVSU0lPTiAtbHQgMTkgXV07IHRoZW4K KysgICAgICBpZiBbICEgIiRzaGExIiA9ICIkc2hhMV9maWxlIiBdOyB0aGVuCisgICAgICAgICBQ T0xfU2V0dXBXaW5kb3dfbWVzc2FnZSAiJChldmFsX2dldHRleHQgJ1RoZSBkb3dubG9hZCBzZWVt cyB0byBoYXZlIGZhaWxlZC4nKSIgIiRUSVRMRSIKKyAgICAgICBlbHNlCisgICAgICAgICBQT0xf U2V0dXBXaW5kb3dfd2FpdCAiJChldmFsX2dldHRleHQgJ0V4dHJhY3RpbmcgV2luZS4uLicpIiAi JFRJVExFIgorZGlmZiAtLWdpdCBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rv b2xzLnB5IGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zVG9vbHMucHkKK2luZGV4 IDY5ZDRjZjJiMi4uMzU5MzU1OTliIDEwMDY0NAorLS0tIGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMv V2luZVZlcnNpb25zVG9vbHMucHkKKysrKyBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJz aW9uc1Rvb2xzLnB5CitAQCAtMSw2ICsxLDUgQEAKKyBpbXBvcnQgb3MKKyAKKy1mcm9tIGxpYiBp bXBvcnQgVmFyaWFibGVzCisgCisgZGVmIGZldGNoVXNlck9TKCk6CisgICAgIGlmIChvcy5lbnZp cm9uWyJQT0xfT1MiXSA9PSAiTWFjIik6CitAQCAtMTAsNyArOSwxNiBAQCBkZWYgZmV0Y2hVc2Vy T1MoKToKKyAgICAgZWxzZToKKyAgICAgICAgIHJldHVybiAiZnJlZWJzZCIKKyAKKysKKyBkZWYg YXJjaGl0ZWN0dXJlX2lzX3N1cHBvcnRlZChhcmNoaXRlY3R1cmVfbmFtZSk6CisrICAgIGlmIGZl dGNoVXNlck9TKCkgPT0gImxpbnV4IjoKKysgICAgICAgIHJldHVybiBhcmNoaXRlY3R1cmVfbmFt ZSBpbiBbIng4NiIsICJhbWQ2NCJdCisrCisrICAgIGlmIGZldGNoVXNlck9TKCkgPT0gImRhcndp biI6CisrICAgICAgICBpZiBpbnQob3MuZW52aXJvbi5nZXQoIk9TWF9WRVJTSU9OIiwgMCkpID49 IDE5OgorKyAgICAgICAgICAgIHJldHVybiBhcmNoaXRlY3R1cmVfbmFtZSBpbiBbIng4Nm9uNjQi LCAiYW1kNjQiXQorKyAgICAgICAgZWxzZToKKysgICAgICAgICAgICByZXR1cm4gYXJjaGl0ZWN0 dXJlX25hbWUgaW4gWyJ4ODYiLCAiYW1kNjQiXQorICAgICByZXR1cm4gVHJ1ZSAjIyBGSVhNRQor IAorIGRlZiBmZXRjaF9zdXBwb3J0ZWRfYXJjaHMoKToKK2RpZmYgLS1naXQgYS9weXRob24vd2lu ZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkgYi9weXRob24vd2luZV92ZXJzaW9ucy9X aW5lVmVyc2lvbnNXaW5kb3cucHkKK2luZGV4IGI3NmRiMGIyNS4uMmVjYWMzZjU1IDEwMDc1NQor LS0tIGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zV2luZG93LnB5CisrKysgYi9w eXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkKK0BAIC0zOCwyOSArMzgs MzEgQEAKKyBjbGFzcyBXaW5lVmVyc2lvbnNXaW5kb3cod3guRnJhbWUpOgorICAgICBkZWYgb25f YXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfZG93bmxvYWRlZChzZWxmLCB2ZXJzaW9uc19wZXJfYXJj aGl0ZWN0dXJlKToKKyAgICAgICAgIGZvciBhcmNoaXRlY3R1cmUgaW4gdmVyc2lvbnNfcGVyX2Fy Y2hpdGVjdHVyZToKKy0gICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBbXQorLSAgICAg ICAgICAgIGZvciB2ZXJzaW9uIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmVbYXJjaGl0ZWN0 dXJlXToKKy0gICAgICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zLmFwcGVuZCh2ZXJzaW9u WyJuYW1lIl0pCisrICAgICAgICAgICAgaWYgYXJjaGl0ZWN0dXJlIGluIGZldGNoX3N1cHBvcnRl ZF9hcmNocygpOgorKyAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBbXQorKyAg ICAgICAgICAgICAgICBmb3IgdmVyc2lvbiBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlW2Fy Y2hpdGVjdHVyZV06CisrICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMuYXBw ZW5kKHZlcnNpb25bIm5hbWUiXSkKKyAKKy0gICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMu c29ydChrZXk9bmF0c29ydC5uYXRzb3J0X2tleWdlbigpKQorLSAgICAgICAgICAgIGF2YWlsYWJs ZV92ZXJzaW9ucy5yZXZlcnNlKCkKKy0gICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBh dmFpbGFibGVfdmVyc2lvbnNbOl0KKysgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25z LnNvcnQoa2V5PW5hdHNvcnQubmF0c29ydF9rZXlnZW4oKSkKKysgICAgICAgICAgICAgICAgYXZh aWxhYmxlX3ZlcnNpb25zLnJldmVyc2UoKQorKyAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVy c2lvbnMgPSBhdmFpbGFibGVfdmVyc2lvbnNbOl0KKyAKKy0gICAgICAgICAgICBmb3IgdmVyc2lv biBpbiBhdmFpbGFibGVfdmVyc2lvbnM6CistICAgICAgICAgICAgICAgIHd4LkNhbGxBZnRlcihz ZWxmLm5vdGVib29rLmFkZF9hdmFpbGFibGVfdmVyc2lvbiwgYXJjaGl0ZWN0dXJlLCB2ZXJzaW9u KQorKyAgICAgICAgICAgICAgICBmb3IgdmVyc2lvbiBpbiBhdmFpbGFibGVfdmVyc2lvbnM6Cisr ICAgICAgICAgICAgICAgICAgICB3eC5DYWxsQWZ0ZXIoc2VsZi5ub3RlYm9vay5hZGRfYXZhaWxh YmxlX3ZlcnNpb24sIGFyY2hpdGVjdHVyZSwgdmVyc2lvbikKKyAKKyAgICAgZGVmIG9uX2luc3Rh bGxlZF93aW5lX3ZlcnNpb25zX2Rvd25sb2FkZWQoc2VsZiwgdmVyc2lvbnNfcGVyX2FyY2hpdGVj dHVyZSk6CisgICAgICAgICBmb3IgYXJjaGl0ZWN0dXJlIGluIHZlcnNpb25zX3Blcl9hcmNoaXRl Y3R1cmU6CistICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zID0gW10KKy0gICAgICAgICAg ICBmb3IgdmVyc2lvbiBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlW2FyY2hpdGVjdHVyZV06 CistICAgICAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5hcHBlbmQodmVyc2lvblsibmFt ZSJdKQorKyAgICAgICAgICAgIGlmIGFyY2hpdGVjdHVyZSBpbiBmZXRjaF9zdXBwb3J0ZWRfYXJj aHMoKToKKysgICAgICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zID0gW10KKysgICAgICAg ICAgICAgICAgZm9yIHZlcnNpb24gaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZVthcmNoaXRl Y3R1cmVdOgorKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLmFwcGVuZCh2 ZXJzaW9uWyJuYW1lIl0pCisgCistICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLnNvcnQo a2V5PW5hdHNvcnQubmF0c29ydF9rZXlnZW4oKSkKKy0gICAgICAgICAgICBpbnN0YWxsZWRfdmVy c2lvbnMucmV2ZXJzZSgpCistICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zID0gaW5zdGFs bGVkX3ZlcnNpb25zWzpdCisrICAgICAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5zb3J0 KGtleT1uYXRzb3J0Lm5hdHNvcnRfa2V5Z2VuKCkpCisrICAgICAgICAgICAgICAgIGluc3RhbGxl ZF92ZXJzaW9ucy5yZXZlcnNlKCkKKysgICAgICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25z ID0gaW5zdGFsbGVkX3ZlcnNpb25zWzpdCisgCistICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4g aW5zdGFsbGVkX3ZlcnNpb25zOgorLSAgICAgICAgICAgICAgICB3eC5DYWxsQWZ0ZXIoc2VsZi5u b3RlYm9vay5hZGRfaW5zdGFsbGVkX3ZlcnNpb24sIGFyY2hpdGVjdHVyZSwgdmVyc2lvbikKKysg ICAgICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gaW5zdGFsbGVkX3ZlcnNpb25zOgorKyAgICAg ICAgICAgICAgICAgICAgd3guQ2FsbEFmdGVyKHNlbGYubm90ZWJvb2suYWRkX2luc3RhbGxlZF92 ZXJzaW9uLCBhcmNoaXRlY3R1cmUsIHZlcnNpb24pCisgCisgICAgIGRlZiBoYW5kbGVfZXJyb3Io c2VsZiwgZXJyb3IpOgorICAgICAgICAgcHJpbnQoZXJyb3IpCisKK0Zyb20gNzQ5OTE3YjBkMGM2 ZDQzOWY3MTAwNGZkZDliYzU2OTkyYmI5MWYxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IFF1ZW50aW4gUEFSSVMgPGdpdEBxdWVudGluLnBhcmlzPgorRGF0ZTogU3VuLCAyNCBKYW4g MjAyMSAxNTo0Njo0NCArMDEwMAorU3ViamVjdDogW1BBVENIIDE3LzM3XSBSZWFmY3RvcmluZyB3 aW5lIHZlcnNpb24gbWFuYWdlciBjb2RlCisKKy0tLQorIENIQU5HRUxPRy5tZCB8IDMgKysrCisg MSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvQ0hBTkdFTE9H Lm1kIGIvQ0hBTkdFTE9HLm1kCitpbmRleCBjZGUyZDgyYzQuLjczNWY2MTE0YSAxMDA2NDQKKy0t LSBhL0NIQU5HRUxPRy5tZAorKysrIGIvQ0hBTkdFTE9HLm1kCitAQCAtMSwzICsxLDYgQEAKKysj IDQuNC4yIAorKyogUmVmYWN0b3JlZCB3aW5lIHZlcnNpb24gd2luZG93IAorKworICMgNC40Cisg KiBQeXRob24gMyBzdXBwb3J0IAorIAorCitGcm9tIGM1OWQwM2I1NzE3MTQzYjQxMDJiNzAxNTlh MGQyMTg1MDQyMmNlNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTbTBrM3IgPDEx NTU4NDk5KzVtMGszckB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+CitEYXRlOiBUaHUsIDMgRmVi IDIwMjIgMjI6NDE6MDkgLTAzMDAKK1N1YmplY3Q6IFtQQVRDSCAxOC8zN10gVXBkYXRlIHBsYXlv bmxpbnV4LnB5CisKK0F2b2lkIHN0cmluZ3MgaW4gdmVyc2lvbjEgYW5kIHZlcnNpb24yIHZhcmlh YmxlcyB3aXRoIGlzbnVtZXJpYygpIGZ1bmN0aW9uLCBhbmQgaGFuZGxpbmcgZXJyb3Igd2l0aCB0 cnktZXhjZXB0IGJsb2NrLgorLS0tCisgcHl0aG9uL2xpYi9wbGF5b25saW51eC5weSB8IDEwICsr KysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQorCitkaWZmIC0tZ2l0IGEvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weSBiL3B5dGhvbi9saWIv cGxheW9ubGludXgucHkKK2luZGV4IDNlODdkOTBhYS4uOTYwNzA3ZDkxIDEwMDc1NQorLS0tIGEv cHl0aG9uL2xpYi9wbGF5b25saW51eC5weQorKysrIGIvcHl0aG9uL2xpYi9wbGF5b25saW51eC5w eQorQEAgLTI3OCwxMSArMjc4LDE3IEBAIGRlZiBWZXJzaW9uTG93ZXIodmVyc2lvbjEsIHZlcnNp b24yKToKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgCistICAg IHZlcnNpb24xID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMVswXS5zcGxpdCgi LiIpWzozXSBdCisrICAgIHRyeToKKysgICAgICAgIHZlcnNpb24xID0gWyBpbnQoZGlnaXQpIGZv ciBkaWdpdCBpbiB2ZXJzaW9uMVswXS5zcGxpdCgiLiIpIF0KKysgICAgZXhjZXB0IFZhbHVlRXJy b3I6CisrICAgICAgICB2ZXJzaW9uMSA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lv bjFbMF0uc3BsaXQoIi4iKSBpZiBkaWdpdC5pc251bWVyaWMoKSBdCisgICAgIHdoaWxlIGxlbih2 ZXJzaW9uMSkgPCAzOgorICAgICAgICAgdmVyc2lvbjEuYXBwZW5kKDApCisgCistICAgIHZlcnNp b24yID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMlswXS5zcGxpdCgiLiIpWzoz XSBdCisrICAgIHRyeToKKysgICAgICAgIHZlcnNpb24yID0gWyBpbnQoZGlnaXQpIGZvciBkaWdp dCBpbiB2ZXJzaW9uMlswXS5zcGxpdCgiLiIpIF0KKysgICAgZXhjZXB0IFZhbHVlRXJyb3I6Cisr ICAgICAgICB2ZXJzaW9uMiA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjJbMF0u c3BsaXQoIi4iKSBpZiBkaWdpdC5pc251bWVyaWMoKSBdCisgICAgIHdoaWxlIGxlbih2ZXJzaW9u MikgPCAzOgorICAgICAgICAgdmVyc2lvbjIuYXBwZW5kKDApCisgCisKK0Zyb20gMjE2YzQ0ODlh ZDQxNTQ2YzYxNWZjZDU3MzJkNmM5YzVjOGYzMTUzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IFNtMGszciA8MTE1NTg0OTkrNW0wazNyQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4K K0RhdGU6IFRodSwgMyBGZWIgMjAyMiAyMjo0Nzo1NCAtMDMwMAorU3ViamVjdDogW1BBVENIIDE5 LzM3XSBVcGRhdGUgcGxheW9ubGludXgucHkKKworV29ya2Fyb3VuZCBmb3Igbm9uLW51bWVyaWMg Y2hhcmFjdGVycyBpbiBsaXN0IHZlcnNpb24xIGFuZCB2ZXJzaW9uMiB3aXRob3V0IGVycm9yIGhh bmRsaW5nIHRvIGtlZXAgc2ltcGxlLgorLS0tCisgcHl0aG9uL2xpYi9wbGF5b25saW51eC5weSB8 IDEwICsrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA4IGRlbGV0 aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weSBiL3B5dGhv bi9saWIvcGxheW9ubGludXgucHkKK2luZGV4IDk2MDcwN2Q5MS4uZmE5YjkwZmI5IDEwMDc1NQor LS0tIGEvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weQorKysrIGIvcHl0aG9uL2xpYi9wbGF5b25s aW51eC5weQorQEAgLTI3OCwxNyArMjc4LDExIEBAIGRlZiBWZXJzaW9uTG93ZXIodmVyc2lvbjEs IHZlcnNpb24yKToKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisg CistICAgIHRyeToKKy0gICAgICAgIHZlcnNpb24xID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBp biB2ZXJzaW9uMVswXS5zcGxpdCgiLiIpIF0KKy0gICAgZXhjZXB0IFZhbHVlRXJyb3I6CistICAg ICAgICB2ZXJzaW9uMSA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjFbMF0uc3Bs aXQoIi4iKSBpZiBkaWdpdC5pc251bWVyaWMoKSBdCisrICAgIHZlcnNpb24xID0gWyBpbnQoZGln aXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMVswXS5zcGxpdCgiLiIpIGlmIGRpZ2l0LmlzbnVtZXJp YygpIF0KKyAgICAgd2hpbGUgbGVuKHZlcnNpb24xKSA8IDM6CisgICAgICAgICB2ZXJzaW9uMS5h cHBlbmQoMCkKKyAKKy0gICAgdHJ5OgorLSAgICAgICAgdmVyc2lvbjIgPSBbIGludChkaWdpdCkg Zm9yIGRpZ2l0IGluIHZlcnNpb24yWzBdLnNwbGl0KCIuIikgXQorLSAgICBleGNlcHQgVmFsdWVF cnJvcjoKKy0gICAgICAgIHZlcnNpb24yID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJz aW9uMlswXS5zcGxpdCgiLiIpIGlmIGRpZ2l0LmlzbnVtZXJpYygpIF0KKysgICAgdmVyc2lvbjIg PSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24yWzBdLnNwbGl0KCIuIikgaWYgZGln aXQuaXNudW1lcmljKCkgXQorICAgICB3aGlsZSBsZW4odmVyc2lvbjIpIDwgMzoKKyAgICAgICAg IHZlcnNpb24yLmFwcGVuZCgwKQorIAorCitGcm9tIDRlMzIzNWE1YmI5YjJkZjYxZjI4N2Y5MzI2 ODU2NTQ1ZjllNTM1YTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFZHVhcmRvIE1v emFydCBkZSBPbGl2ZWlyYQorIDwyOTc0ODk1K2VkdWFyZG9tb3phcnRAdXNlcnMubm9yZXBseS5n aXRodWIuY29tPgorRGF0ZTogVGh1LCAxMiBNYXkgMjAyMiAwOToxNTo1OSAtMDMwMAorU3ViamVj dDogW1BBVENIIDIwLzM3XSBGaXggWFF1YXJ0eiBVUkwKKworWFF1YXJ0eiBmYWlscyB0byBpbnN0 YWxsIGludG8gbWFjT1MKKy0tLQorIGJhc2gvc3RhcnR1cF9hZnRlcl9zZXJ2ZXIgfCAyICstCisg MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1n aXQgYS9iYXNoL3N0YXJ0dXBfYWZ0ZXJfc2VydmVyIGIvYmFzaC9zdGFydHVwX2FmdGVyX3NlcnZl cgoraW5kZXggYWEwN2E0ZWU5Li5lNzQ4NjMzOWMgMTAwNzU1CistLS0gYS9iYXNoL3N0YXJ0dXBf YWZ0ZXJfc2VydmVyCisrKysgYi9iYXNoL3N0YXJ0dXBfYWZ0ZXJfc2VydmVyCitAQCAtMzAsNyAr MzAsNyBAQCBleHBvcnQgWFFVQVJUWl9WRVJTSU9OPSIyLjcuMTEiCisgaW5zdGFsbF94MTEoKQor IHsKKyAKKy0JWFF1YXJ0elVybD0iaHR0cDovL2RsLmJpbnRyYXkuY29tL3hxdWFydHovZG93bmxv YWRzL1hRdWFydHotJFhRVUFSVFpfVkVSU0lPTi5kbWciCisrCVhRdWFydHpVcmw9Imh0dHBzOi8v Z2l0aHViLmNvbS9YUXVhcnR6L1hRdWFydHovcmVsZWFzZXMvZG93bmxvYWQvWFF1YXJ0ei0kWFFV QVJUWl9WRVJTSU9OL1hRdWFydHotJFhRVUFSVFpfVkVSU0lPTi5kbWciCisgCUZpbGVQcmVmaXg9 IlhRdWFydHoiCisgCisgCVNURVBfVElUTEU9IlhRdWFydHoiCisKK0Zyb20gOGZmMDFmMzQxOTI1 YTM2NzNkNGExZGU4NTEyZDllMjM3MmE0ZDllMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IEVkdWFyZG8gTW96YXJ0IGRlIE9saXZlaXJhCisgPDI5NzQ4OTUrZWR1YXJkb21vemFydEB1 c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+CitEYXRlOiBUaHUsIDEyIE1heSAyMDIyIDA5OjUzOjA5 IC0wMzAwCitTdWJqZWN0OiBbUEFUQ0ggMjEvMzddIFVwZGF0ZSBsbmcucHkKKworRml4IHBsYXlv bmxpbnV4LWJhc2ggZXhlYyBvbiBtYWNPUyBNb250ZXJleQorLS0tCisgcHl0aG9uL2xpYi9sbmcu cHkgfCAxNSArKysrKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCsp LCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHl0aG9uL2xpYi9sbmcucHkgYi9weXRo b24vbGliL2xuZy5weQoraW5kZXggYTM5MGQ5MjBiLi41ZmIxNjFjM2MgMTAwNzU1CistLS0gYS9w eXRob24vbGliL2xuZy5weQorKysrIGIvcHl0aG9uL2xpYi9sbmcucHkKK0BAIC0xOCwxMiArMTgs MTUgQEAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgIGxhbmd1YWdlcyA9IG9zLmxp c3RkaXIoVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudisnL2xhbmcvbG9jYWxlJykKKyAKKyAgICAg ICAgIGlmKG9zLmVudmlyb25bIlBPTF9PUyJdID09ICJNYWMiKToKKy0gICAgICAgICAgICB3eExv Y2FsZSA9IHd4LkxvY2FsZSgpLkZpbmRMYW5ndWFnZUluZm8ob3MuZW52aXJvblsiUkxBTkciXSkK Ky0KKy0gICAgICAgICAgICBpZiB3eExvY2FsZSBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAg ICAgbGFuZ2lkID0gd3guTG9jYWxlKCkuRmluZExhbmd1YWdlSW5mbyhvcy5lbnZpcm9uWyJSTEFO RyJdKS5MYW5ndWFnZQorLSAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIGxhbmdp ZCA9IHd4LkxBTkdVQUdFX0RFRkFVTFQKKysgICAgICAgICAgICB0cnk6CisrICAgICAgICAgICAg ICAgIHd4TG9jYWxlID0gd3guTG9jYWxlKCkuRmluZExhbmd1YWdlSW5mbyhvcy5lbnZpcm9uWyJS TEFORyJdKQorKworKyAgICAgICAgICAgICAgICBpZiB3eExvY2FsZSBpcyBub3QgTm9uZToKKysg ICAgICAgICAgICAgICAgICAgIGxhbmdpZCA9IHd4LkxvY2FsZSgpLkZpbmRMYW5ndWFnZUluZm8o b3MuZW52aXJvblsiUkxBTkciXSkuTGFuZ3VhZ2UKKysgICAgICAgICAgICAgICAgZWxzZToKKysg ICAgICAgICAgICAgICAgICAgIGxhbmdpZCA9IHd4LkxBTkdVQUdFX0RFRkFVTFQKKysgICAgICAg ICAgICBleGNlcHQ6CisrICAgICAgICAgICAgICAgIGxhbmdpZCA9IHd4LkxBTkdVQUdFX0RFRkFV TFQgCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGxhbmdpZCA9IHd4LkxBTkdVQUdFX0RF RkFVTFQKKyAKKworRnJvbSA5YTI3YzhmNGYxYzE0NTgzODhhZTA0NjhjY2RiZDc1ODE2OWE4ZWU2 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRWR1YXJkbyBNb3phcnQgZGUgT2xpdmVp cmEKKyA8Mjk3NDg5NStlZHVhcmRvbW96YXJ0QHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0Rh dGU6IFRodSwgMTIgTWF5IDIwMjIgMTU6NTM6NTQgLTAzMDAKK1N1YmplY3Q6IFtQQVRDSCAyMi8z N10gVXBkYXRlIE1ha2VmaWxlIHRvIG1hY09TCisKK05vdyBtYWNPUyBjYW4gYWxzbyBydW4gdGhl IG1ha2UgY29tbWFuZAorLS0tCisgTWFrZWZpbGUgfCAxOCArKysrKysrKysrKysrKy0tLS0KKyAx IGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAt LWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGE4ZDgxYjg5Mi4uMTE1ZDI2OThjIDEw MDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMjAsOSArMjAsMTggQEAK KyAjIERFU1RESVIgLS0gV2hlcmUgeW91IHdhbnQgdG8gaW5zdGFsbAorICMKKyAKKy1DRkxBR1Mg Pz0gLU8yCisraWZlcSAoJChzaGVsbCB1bmFtZSAtcyksRGFyd2luKQorKyAgICBDRkxBR1MgPz0g LU8yIC1JL29wdC9YMTEvaW5jbHVkZQorKyAgICBMRkxBR1MgPz0gLUwvb3B0L1gxMS9saWIgLWxH TCAtbFgxMQorKyAgICBQWVRIT04gPSBweXRob24yLjcgLW0gcHlfY29tcGlsZQorKyAgICBTRUQg PSBzZWQgLWkgJycgLWUKKytlbHNlCisrICAgIENGTEFHUyA/PSAtTzIgCisrICAgIENGTEFHUyA/ PSAtbEdMIC1sWDExCisrICAgIFBZVEhPTiA9IHB5dGhvbjIgLW0gcHlfY29tcGlsZQorKyAgICBT RUQgPSBzZWQgLWkKKytlbmRpZgorIENDID0gZ2NjICQoQ0ZMQUdTKQorLVBZVEhPTiA9IHB5dGhv bjIgLW0gcHlfY29tcGlsZQorIEdaSVAgPSBnemlwCisgU0hFTEwgOj0gL2Jpbi9iYXNoCisgCitA QCAtNDUsMTQgKzU0LDE0IEBAIGNsZWFuOgorIAkkKFJNKSAuL0NoYW5nZUxvZworIAorIGJ1aWxk OgorLQkkKENDKSAuL3NyYy9jaGVja19kaXJlY3RfcmVuZGVyaW5nLmMgLW8gLi9iaW4vcGxheW9u bGludXgtY2hlY2tfZGQgLWxHTCAtbFgxMQorKwkkKENDKSAuL3NyYy9jaGVja19kaXJlY3RfcmVu ZGVyaW5nLmMgLW8gLi9iaW4vcGxheW9ubGludXgtY2hlY2tfZGQgJChMRkxBR1MpCisgCSQoUFlU SE9OKSAuL3B5dGhvbi8qLnB5CisgCSQoUFlUSE9OKSAuL3B5dGhvbi9saWIvKi5weQorIAllY2hv IC1lICcjIS9iaW4vYmFzaFxuR0RLX0JBQ0tFTkQ9eDExICR7c2hhcmVkaXJ9L3BsYXlvbmxpbnV4 L3BsYXlvbmxpbnV4ICIkJEAiXG5leGl0IDAnID4gLi9iaW4vcGxheW9ubGludXgKKyAJZWNobyAt ZSAnIyEvYmluL2Jhc2hcbiR7c2hhcmVkaXJ9L3BsYXlvbmxpbnV4L3BsYXlvbmxpbnV4LXBrZyAi JCRAIlxuZXhpdCAwJyA+IC4vYmluL3BsYXlvbmxpbnV4LXBrZworIAljaG1vZCAreCAuL2Jpbi9w bGF5b25saW51eAorIAljaG1vZCAreCAuL2Jpbi9wbGF5b25saW51eC1wa2cKKy0Jc2VkIC1pICdz L1woXFsiREVCSUFOX1BBQ0tBR0UiXF1ccyo9XHMqXCkiRkFMU0UiL1wxIlRSVUUiLycgXAorKwkk KFNFRCkgJ3MvXChcWyJERUJJQU5fUEFDS0FHRSJcXVxzKj1ccypcKSJGQUxTRSIvXDEiVFJVRSIv JyBcCisgCQkuL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5CisgCisgaW5zdGFsbDoKK0BAIC04MSwz ICs5MCw0IEBAIGNoYW5nZWxvZzoKKyAJKEdJVF9ESVI9LmdpdCBnaXQgbG9nID4gLmNoYW5nZWxv Zy50bXAgJiYgbXYgLmNoYW5nZWxvZy50bXAgQ2hhbmdlTG9nOyBybSAtZiAuY2hhbmdlbG9nLnRt cCkgfHwgKHRvdWNoIENoYW5nZUxvZzsgZWNobyAnZ2l0IGRpcmVjdG9yeSBub3QgZm91bmQ6IGlu c3RhbGxpbmcgcG9zc2libHkgZW1wdHkgY2hhbmdlbG9nLicgPiYyKQorIAorIC5QSE9OWTogYWxs IGNsZWFuIGJ1aWxkIGluc3RhbGwgY2hhbmdlbG9nCisrCisKK0Zyb20gNWM3M2VkMWVlMjNiYTJl NTE3MDEwOTRlMzY2ZjVjYmNlZDFmZWJiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IE1hdGhpZXUgUGFyZW50IDxtYXRoLnBhcmVudEBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDIwIERl YyAyMDIyIDEwOjIwOjI1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMjMvMzddIFVzZSBtb3JlIHBv d2VyZnVsIGRpc2NyZXRlIEdQVSBpZiBhdmFpbGFibGUKKworU2VlIGh0dHBzOi8vc3BlY2lmaWNh dGlvbnMuZnJlZWRlc2t0b3Aub3JnL2Rlc2t0b3AtZW50cnktc3BlYy9sYXRlc3QvYXIwMXMwNi5o dG1sCistLS0KKyBldGMvUGxheU9uTGludXguZGVza3RvcCB8IDEgKworIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZXRjL1BsYXlPbkxpbnV4LmRlc2t0b3Ag Yi9ldGMvUGxheU9uTGludXguZGVza3RvcAoraW5kZXggNDkwMTA4YzExLi41M2NkNDJmOTQgMTAw NjQ0CistLS0gYS9ldGMvUGxheU9uTGludXguZGVza3RvcAorKysrIGIvZXRjL1BsYXlPbkxpbnV4 LmRlc2t0b3AKK0BAIC02LDMgKzYsNCBAQCBUeXBlPUFwcGxpY2F0aW9uCisgRXhlYz1wbGF5b25s aW51eCAlRgorIEljb249cGxheW9ubGludXgKKyBDYXRlZ29yaWVzPVV0aWxpdHk7RW11bGF0b3I7 CisrUHJlZmVyc05vbkRlZmF1bHRHUFU9dHJ1ZQorCitGcm9tIDczZmYxZGY5MjRjMWI3YmRjNGU5 M2E1YTMyOGIyODcwOTdkOGNjYzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBhbmRy ZXkgPDMyOTg4MzA1K3Zvc3RvazAxQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IFNh dCwgMzEgRGVjIDIwMjIgMjM6MTY6MTggKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAyNC8zN10gQlVH IEZJWDogQ0ZMQUdTIHJlbmFtZWQgdG8gTEZMQUdTIGluIE1ha2VmaWxlLgorCistLS0KKyBNYWtl ZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDExNWQyNjk4Yy4u NGMwOGE5NmZlIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMjcs NyArMjcsNyBAQCBpZmVxICgkKHNoZWxsIHVuYW1lIC1zKSxEYXJ3aW4pCisgICAgIFNFRCA9IHNl ZCAtaSAnJyAtZQorIGVsc2UKKyAgICAgQ0ZMQUdTID89IC1PMiAKKy0gICAgQ0ZMQUdTID89IC1s R0wgLWxYMTEKKysgICAgTEZMQUdTID89IC1sR0wgLWxYMTEKKyAgICAgUFlUSE9OID0gcHl0aG9u MiAtbSBweV9jb21waWxlCisgICAgIFNFRCA9IHNlZCAtaQorIGVuZGlmCisKK0Zyb20gZDZjZDdm ZjY5MjI4ZGE4OGFkOTA3NDNjN2Q2NTIyODE5NDkzODAzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb206IE5yZXppbm9ybiA8bnJlemlub3JuQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTkg SnVuIDIwMjMgMDc6NDk6MjMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyNS8zN10gRml4IE1hYyBX SU5FIFZlcnNpb25GZXRjaGVyIGFuZCBidW1wIHZlcnNpb25pbmcgdG8KKyA0LjQuMworCistLS0K KyBweXRob24vbGliL1ZhcmlhYmxlcy5weSAgICAgICAgICAgICAgICAgICAgIHwgNSArKystLQor IHB5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIucHkgfCA3ICsrKysrLS0K KyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlm ZiAtLWdpdCBhL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5IGIvcHl0aG9uL2xpYi9WYXJpYWJsZXMu cHkKK2luZGV4IGRiZTJhYjcxOS4uMjZlMjM0YTUzIDEwMDc1NQorLS0tIGEvcHl0aG9uL2xpYi9W YXJpYWJsZXMucHkKKysrKyBiL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5CitAQCAtMTcsNyArMTcs NyBAQAorIG9zLmVudmlyb25bIlBPTF9QT1JUIl0gPSAiMCIKKyBvcy5lbnZpcm9uWyJQTEFZT05M SU5VWCJdID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSsiLy4u Ly4uLy4uLyIpCisgb3MuZW52aXJvblsiU0lURSJdID0gImh0dHA6Ly9yZXBvc2l0b3J5LnBsYXlv bmxpbnV4LmNvbSIKKy1vcy5lbnZpcm9uWyJWRVJTSU9OIl0gPSAiNC40LjEiCisrb3MuZW52aXJv blsiVkVSU0lPTiJdID0gIjQuNC4zIgorIG9zLmVudmlyb25bIlBPTF9JRCJdID0gc3RyKHJhbmRv bS5yYW5kaW50KDEsIDEwMDAwMDAwMCkpCisgb3MuZW52aXJvblsiR0VDS09fU0lURSJdID0gImh0 dHA6Ly93aW5lLnBsYXlvbmxpbnV4LmNvbS9nZWNrbyIKKyBvcy5lbnZpcm9uWyJNT05PX1NJVEUi XSA9ICJodHRwOi8vd2luZS5wbGF5b25saW51eC5jb20vbW9ubyIKK0BAIC0zOSw2ICszOSw3IEBA CisgICAgIHdpbmRvd3NfYWRkX3BsYXlvbm1hYyA9IDEKKyAgICAgd2lkZ2V0X2JvcmRlcnMgPSB3 eC5TSU1QTEVfQk9SREVSCisgICAgIG9zX25hbWUgPSAiZGFyd2luIgorKyAgICBjYV9maWxlID0g Jy4uLy4uL2xpYi9weXRob24zLjgvY2VydGlmaS9jYWNlcnQucGVtJyAKKyAgICAgb3MuZW52aXJv blsiUE9MX1dHRVQiXSA9ICJ3Z2V0IC0tcHJlZmVyLWZhbWlseT1JUHY0IC1xIC0tbm8tY2hlY2st Y2VydGlmaWNhdGUiCisgCisgIyBWYXJpYWJsZXMgUGxheU9uTGludXgKK0BAIC0xMTksNyArMTIw LDcgQEAKKyAKKyAgICAgb3MuZW52aXJvblsiUEFUSCJdID0gb3MuZW52aXJvblsiUExBWU9OTElO VVgiXSsiLy4uL3VuaXgvd2luZS9iaW46IiArIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8u Li91bml4L2ltYWdlX21hZ2ljay9iaW46IiArIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8u Li91bml4L3Rvb2xzL2Jpbi86IiArIG9zLmVudmlyb25bIlBBVEgiXQorIAorLSAgICBvcy5lbnZp cm9uWyJXUklURV9MRCJdID0gb3MuZW52aXJvblsiTERfTElCUkFSWV9QQVRIIl0KKysgICAgb3Mu ZW52aXJvblsiV1JJVEVfTEQiXSA9IG9zLmVudmlyb25bIkxEX0xJQlJBUllfUEFUSCJdICsgIjoi ICsgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvd2luZS9saWIiCisgICAgIG9z LmVudmlyb25bIkRZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIIl0gPSAgb3MuZW52aXJvblsiUExB WU9OTElOVVgiXSsiLy4uL3VuaXgvd2luZS9saWIiCisgICAgIG9zLmVudmlyb25bIldSSVRFX0RZ TERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIIl0gPSAgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsi Ly4uL3VuaXgvd2luZS9saWIiCisgICAgIG9zLmVudmlyb25bIkZSRUVUWVBFX1BST1BFUlRJRVMi XT0idHJ1ZXR5cGU6aW50ZXJwcmV0ZXItdmVyc2lvbj0zNSIKK2RpZmYgLS1naXQgYS9weXRob24v d2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNGZXRjaGVyLnB5IGIvcHl0aG9uL3dpbmVfdmVyc2lv bnMvV2luZVZlcnNpb25zRmV0Y2hlci5weQoraW5kZXggZmQ3NTg3OThlLi42MTYwNTIyN2MgMTAw NjQ0CistLS0gYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNGZXRjaGVyLnB5Cisr KysgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNGZXRjaGVyLnB5CitAQCAtMTgs MTAgKzE4LDEzIEBAIGRlZiBmZXRjaF9hbGxfYXZhaWxhYmxlX3dpbmVfdmVyc2lvbihzZWxmLCBj YWxsYmFjaywgZXJyb3IpOgorIAorICAgICBkZWYgX3N5bmNfZmV0Y2hfYWxsX2F2YWlsYWJsZV93 aW5lX3ZlcnNpb25zKHNlbGYsIGNhbGxiYWNrLCBlcnJvcik6CisgICAgICAgICB3aW5lX3ZlcnNp b25fdXJsID0gImh0dHBzOi8vcGhvZW5pY2lzLnBsYXlvbmxpbnV4LmNvbS9pbmRleC5waHAvd2lu ZT9vcz0lcyIgJSBzZWxmLm9wZXJhdGluZ19zeXN0ZW0KKy0gICAgICAgIHByaW50KCJEb253bG9h ZGluZyAlcyAiICUgd2luZV92ZXJzaW9uX3VybCkKKysgICAgICAgIHByaW50KCJEb3dubG9hZGlu ZyAlcyAiICUgd2luZV92ZXJzaW9uX3VybCkKKyAgICAgICAgIHRyeToKKyAgICAgICAgICAgICBy ZXF1ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdCh3aW5lX3ZlcnNpb25fdXJsLCBOb25lLCB7 J1VzZXItQWdlbnQnOiBWYXJpYWJsZXMudXNlckFnZW50fSkKKy0gICAgICAgICAgICBoYW5kbGUg PSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKHJlcXVlc3QsIHRpbWVvdXQ9NSkKKysgICAgICAgICAg ICBpZiBzZWxmLm9wZXJhdGluZ19zeXN0ZW0gPT0gJ2Rhcndpbic6CisrICAgICAgICAgICAgICAg IGhhbmRsZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4ocmVxdWVzdCwgY2FmaWxlPScuLi8uLi9s aWIvcHl0aG9uMy44L2NlcnRpZmkvY2FjZXJ0LnBlbScsIHRpbWVvdXQ9NSkKKysgICAgICAgICAg ICBlbHNlOgorKyAgICAgICAgICAgICAgICBoYW5kbGUgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVu KHJlcXVlc3QsIHRpbWVvdXQ9NSkKKyAgICAgICAgICAgICBjYWxsYmFjayhzZWxmLl9jb252ZXJ0 X3Bob2VuaWNpc193aW5lX3ZlcnNpb25zX3RvX3Y0KGpzb24ubG9hZChoYW5kbGUpKSkKKyAgICAg ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICBlcnJvcih0cmFjZWJhY2su Zm9ybWF0X2V4YygpKQorCitGcm9tIGQzMmMwMTJhYzc0YjZiMDVkZjgxNWRhYzVkYTk0OGI2NDhk MDk5MDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiRHIuIE5pY2siIDxkYXMtaW50 ZW5zaXR5QHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IFN1biwgMiBKdWwgMjAyMyAx NzozMToyNiAtMDQwMAorU3ViamVjdDogW1BBVENIIDI2LzM3XSBGaXhlZCBkZWJ1ZyBtZXNzYWdl IGluIFBPTF9XaW5lX1NldFZlcnNpb25FbnYgdG8gbG9nCisgdXNpbmcgUE9MX0RlYnVnX01lc3Nh Z2UKKworLS0tCisgbGliL3dpbmUubGliIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2Vy dGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL3dpbmUubGliIGIvbGli L3dpbmUubGliCitpbmRleCA0MzQ3NWYzMTAuLjNiZjExODc2NSAxMDA3NTUKKy0tLSBhL2xpYi93 aW5lLmxpYgorKysrIGIvbGliL3dpbmUubGliCitAQCAtODM3LDcgKzgzNyw3IEBAIFBPTF9XaW5l X1NldFZlcnNpb25FbnYoKSB7CisgICAgICAgICBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbiAiJFBP TF9XSU5FVkVSU0lPTiIKKyAgICAgICAgIFtbICIkPyIgPT0gMiBdXSAmJiByZXR1cm4gMAorICAg ICAgIGZpCistICAgICAgZWNobyAiU2V0dGluZyBwYXRocy4uLiIKKysgICAgICBQT0xfRGVidWdf TWVzc2FnZSAiU2V0dGluZyBwYXRocy4uLiIKKyAgICAgICBleHBvcnQgUEFUSD0iJFdJTkVESVIv JFBPTF9XSU5FVkVSU0lPTi9iaW4vOiRQQVRIIgorICAgICAgIFsgIiRQT0xfT1MiID0gIk1hYyIg XSAmJiBleHBvcnQgRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEg9IiRXSU5FRElSLyRQT0xfV0lO RVZFUlNJT04vbGliLyIKKyAgICAgICBleHBvcnQgRlJFRVRZUEVfUFJPUEVSVElFUz0idHJ1ZXR5 cGU6aW50ZXJwcmV0ZXItdmVyc2lvbj0zNSIKKworRnJvbSBmYjg4MTM3Mjg2Nzk4ZDQ5MjY5MWE5 NWVhMGMzNmIzMTQ4ZmQwMjkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmktSG8g TGVlIDxzZWFyY2g1QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTAgQXVnIDIwMjMgMTc6Mjk6MTkg KzA5MDAKK1N1YmplY3Q6IFtQQVRDSCAyNy8zN10gUGF0Y2ggZnVuY3Rpb24gZXhlY3V0aW9uIGVy cm9yIGNhdXNlZCBieSB0aGUgZGVsZXRpb24KKyBvZiB0aGUgd2hpY2ggY29tbWFuZCBpbiBEZWJp YW4gMTIKKworLS0tCisgYmFzaC9maW5kX3B5dGhvbiAgICAgfCAyICstCisgbGliL3BsYXlvbmxp bnV4LmxpYiAgfCA4ICsrKystLS0tCisgbGliL3NjcmlwdHMubGliICAgICAgfCAyICstCisgbGli L3ZhcmlhYmxlcyAgICAgICAgfCA2ICsrKy0tLQorIGxpYi93aW5lLmxpYiAgICAgICAgIHwgNCAr Ky0tCisgcHl0aG9uL21haW53aW5kb3cucHkgfCAzICsrLQorIDYgZmlsZXMgY2hhbmdlZCwgMTMg aW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9iYXNoL2ZpbmRf cHl0aG9uIGIvYmFzaC9maW5kX3B5dGhvbgoraW5kZXggODExYjZjMDQ0Li41Y2NmMTkxMjUgMTAw NzU1CistLS0gYS9iYXNoL2ZpbmRfcHl0aG9uCisrKysgYi9iYXNoL2ZpbmRfcHl0aG9uCitAQCAt MjYsNyArMjYsNyBAQCBzZWFyY2hfcHl0aG9uICgpIHsKKyAJCWZpICAgICAgICAgICAgICAgICAg IAorIAkKKyAJCWVjaG8gLW4gIkxvb2tpbmcgZm9yICRQT0xfUFlUSE9OLi4uICIgMT4mMgorLQkJ aWYgWyAiJCh3aGljaCAkUE9MX1BZVEhPTikiIF07IHRoZW4KKysJCWlmIFsgIiQoY29tbWFuZCAt diAkUE9MX1BZVEhPTikiIF07IHRoZW4KKyAJCQlsb2NhbCBWZXJzaW9uPSQoJFBPTF9QWVRIT04g LS12ZXJzaW9uIDI+JjEgfHRhaWwgLW4gMXxzZWQgLWUgJ3MvXlB5dGhvbiAvLycpCisgCQkJZWNo byAtbiAiJFZlcnNpb24gLSAiIDE+JjIKKyAJCQljYXNlICIkVmVyc2lvbiIgaW4KK2RpZmYgLS1n aXQgYS9saWIvcGxheW9ubGludXgubGliIGIvbGliL3BsYXlvbmxpbnV4LmxpYgoraW5kZXggMTBi ZTZiNDg4Li5kMjg0NjZmOGUgMTAwNzU1CistLS0gYS9saWIvcGxheW9ubGludXgubGliCisrKysg Yi9saWIvcGxheW9ubGludXgubGliCitAQCAtOTE2LDE2ICs5MTYsMTYgQEAgUE9MX1N1ZG8oKQor IAkJZmkKKyAJCWlmIFsgIiRQT0xfT1MiID0gIkxpbnV4IiBdOyB0aGVuCisgCQkJIyBOb3csIHdl IGRldGVjdCB3aGF0IHN1ZG8gdG8gdXNlCistCQkJaWYgd2hpY2ggZ2tzdWRvOyB0aGVuCisrCQkJ aWYgY29tbWFuZCAtdiBna3N1ZG87IHRoZW4KKyAJCQkJU1VET19DT01NQU5EPSJna3N1ZG8gLS0i CisgCQkJCXVuc2V0IGdrc3VkbworLQkJCWVsaWYgd2hpY2ggZ2tzdTsgdGhlbgorKwkJCWVsaWYg Y29tbWFuZCAtdiBna3N1OyB0aGVuCisgCQkJCVNVRE9fQ09NTUFORD0iZ2tzdSAtLSIKKyAJCQkJ dW5zZXQgZ2tzdQorLQkJCWVsaWYgd2hpY2gga2Rlc3U7IHRoZW4KKysJCQllbGlmIGNvbW1hbmQg LXYga2Rlc3U7IHRoZW4KKyAJCQkJU1VET19DT01NQU5EPSJrZGVzdSAtLSIKKyAJCQkJdW5zZXQg a2Rlc3UKKy0JCQllbGlmIHdoaWNoIHN1ZG87IHRoZW4KKysJCQllbGlmIGNvbW1hbmQgLXYgc3Vk bzsgdGhlbgorIAkJCQlTVURPX0NPTU1BTkQ9IiRQT0xfVEVSTSAtZSBzdWRvIgorIAkJCQl1bnNl dCBzdWRvCisgCQkJZWxzZQorZGlmZiAtLWdpdCBhL2xpYi9zY3JpcHRzLmxpYiBiL2xpYi9zY3Jp cHRzLmxpYgoraW5kZXggNGZkM2ZiNWM1Li4yM2M1NzY2MTMgMTAwNzU1CistLS0gYS9saWIvc2Ny aXB0cy5saWIKKysrKyBiL2xpYi9zY3JpcHRzLmxpYgorQEAgLTczNyw3ICs3MzcsNyBAQCBQT0xf U3lzdGVtX0V4dHJhY3RTaW5nbGVGaWxlICgpCisgICAgIGxvY2FsIGFyY2hpdmVuYW1lPWBiYXNl bmFtZSAiJGFyY2hpdmUiYAorICAgICBsb2NhbCBmaWxlbmFtZT1gYmFzZW5hbWUgIiRmaWxlImAK KyAgICAgbG9jYWwgc3pwaWQKKy0gICAgbG9jYWwgc3ppcD1gd2hpY2ggN3pgCisrICAgIGxvY2Fs IHN6aXA9YGNvbW1hbmQgLXYgN3pgCisgCisgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJFeHRyYWN0 aW5nIHNpbmdsZSBmaWxlIDogXCIkYXJjaGl2ZVwiLCBcIiRmaWxlXCIsIFwiJGRlc3RcIiIKKyAK K2RpZmYgLS1naXQgYS9saWIvdmFyaWFibGVzIGIvbGliL3ZhcmlhYmxlcworaW5kZXggOWMxNmZl MWE3Li4xMzBhY2M4NTYgMTAwNzU1CistLS0gYS9saWIvdmFyaWFibGVzCisrKysgYi9saWIvdmFy aWFibGVzCitAQCAtMzEsNyArMzEsNyBAQCBQT0xfQ29uZmlnX3BSZWFkICgpeyBjYXQgIiRQT0xf VVNFUl9ST09UL3BsYXlvbmxpbnV4LmNmZyIgMj4gL2Rldi9udWxsIHwgZ3JlcCAiXgorIGFsaWFz IGZpbmQ9ImZpbmQgLUgiCisgCisgIyMjIFNlY3VyaXR5IGZlYXR1cmUKKy1bICIkKHdoaWNoIHN1 ZG8pIiBdICYmIHN1ZG8gLWsgMj4gL2Rldi9udWxsCisrWyAiJChjb21tYW5kIC12IHN1ZG8pIiBd ICYmIHN1ZG8gLWsgMj4gL2Rldi9udWxsCisgCisgIyMjIFRlcm1pbmFsCisgIyBVc2VyIG92ZXJy aWRlLCBtdXN0IHN1cHBvcnQgLVQgdG8gc2V0IHRpdGxlIGFuZCAtZSB0byBydW4gYSBjb21tYW5k CitAQCAtNTMsNyArNTMsNyBAQCBmaQorIGV4cG9ydCBQT0xfVEVSTQorIAorICMjIyBEZXNrdG9w CistWyAiJCh3aGljaCB4ZGctdXNlci1kaXIpIiBdICYmIGV4cG9ydCBERVNLVE9QPSIkKHhkZy11 c2VyLWRpciBERVNLVE9QKSIgfHwgZXhwb3J0IERFU0tUT1A9IiRIT01FL0Rlc2t0b3AiCisrWyAi JChjb21tYW5kIC12IHhkZy11c2VyLWRpcikiIF0gJiYgZXhwb3J0IERFU0tUT1A9IiQoeGRnLXVz ZXItZGlyIERFU0tUT1ApIiB8fCBleHBvcnQgREVTS1RPUD0iJEhPTUUvRGVza3RvcCIKKyAKKyAj IyMgT3ZlcnJpZGUgfi8ud2dldHJjCisgZXhwb3J0IFdHRVRSQz0iJFBPTF9VU0VSX1JPT1QvY29u ZmlndXJhdGlvbnMvd2dldHJjIgorQEAgLTcwLDcgKzcwLDcgQEAgZWxzZQorIAlldmFsX2dldHRl eHQoKSB7IHByaW50ZiAiJEAiOyB9CisgZmkKKyAKKy13aGljaCBzaGFzdW0gPiAvZGV2L251bGwg Mj4gL2Rldi9udWxsIHx8IHNoYXN1bSAoKSB7IHNoYTFzdW0gIiRAIjsgfQorK2NvbW1hbmQgLXYg c2hhc3VtID4gL2Rldi9udWxsIDI+IC9kZXYvbnVsbCB8fCBzaGFzdW0gKCkgeyBzaGExc3VtICIk QCI7IH0KKyAKKyAKKyBpZiBbICIkUE9MX09TIiA9PSAiTGludXgiIF0KK2RpZmYgLS1naXQgYS9s aWIvd2luZS5saWIgYi9saWIvd2luZS5saWIKK2luZGV4IDNiZjExODc2NS4uODc1NmNkY2QzIDEw MDc1NQorLS0tIGEvbGliL3dpbmUubGliCisrKysgYi9saWIvd2luZS5saWIKK0BAIC05ODksMTMg Kzk4OSwxMyBAQCBQT0xfV2luZV9QcmVmaXhDcmVhdGUoKSB7CisgCisgICAgICAgUE9MX0RlYnVn X0luaXRQcmVmaXgKKyAKKy0gICAgICB3aGljaCB3aW5lcHJlZml4Y3JlYXRlICYmIFsgIiQoUE9M X01ENV9maWxlICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUpIikiICE9ICI1YzBlZTkwNjgyNzQ2 ZTgxMTY5OGE1MzQxNWI0NzY1ZCIgXSAmJiBbICEgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSB8 IGdyZXAgJEFQUExJQ0FUSU9OX1RJVExFKSIgPSAiIiBdICYmIHdpbmUgd2luZXByZWZpeGNyZWF0 ZQorKyAgICAgIGNvbW1hbmQgLXYgd2luZXByZWZpeGNyZWF0ZSAmJiBbICIkKFBPTF9NRDVfZmls ZSAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRlKSIpIiAhPSAiNWMwZWU5MDY4Mjc0NmU4MTE2OThh NTM0MTViNDc2NWQiIF0gJiYgWyAhICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUgfCBncmVwICRB UFBMSUNBVElPTl9USVRMRSkiID0gIiIgXSAmJiB3aW5lIHdpbmVwcmVmaXhjcmVhdGUKKyAgICAg ICB3aW5lIHdpbmVib290CisgICAgIGZpCisgICBmaQorIAorICAgIyBNYWtlIHN1cmUgdGhhdCAu cmVnIGZpbGVzIGFyZSBjcmVhdGVkCistICBpZiB3aGljaCB3aW5lc2VydmVyOyB0aGVuCisrICBp ZiBjb21tYW5kIC12IHdpbmVzZXJ2ZXI7IHRoZW4KKyAgICAgd2luZXNlcnZlciAtdworICAgZWxz ZQorICAgICBQT0xfRGVidWdfTWVzc2FnZSAiV2FybmluZywgd2luZXNlcnZlciBub3QgZm91bmQi CitkaWZmIC0tZ2l0IGEvcHl0aG9uL21haW53aW5kb3cucHkgYi9weXRob24vbWFpbndpbmRvdy5w eQoraW5kZXggYzhmZTExMTYwLi5jMzc5ZDJhZTUgMTAwNzU1CistLS0gYS9weXRob24vbWFpbndp bmRvdy5weQorKysrIGIvcHl0aG9uL21haW53aW5kb3cucHkKK0BAIC0xMjE2LDcgKzEyMTYsOCBA QCBkZWYgT25Jbml0KHNlbGYpOgorICAgICBkZWYgX2V4ZWN1dGFibGVGb3VuZChzZWxmLCBleGVj dXRhYmxlKToKKyAgICAgICAgIGRldm51bGwgPSBvcGVuKCcvZGV2L251bGwnLCAnd2InKQorICAg ICAgICAgdHJ5OgorLSAgICAgICAgICAgIHJldHVybmNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoWyJ3 aGljaCIsIGV4ZWN1dGFibGVdLCBzdGRvdXQ9ZGV2bnVsbCkKKysgICAgICAgICAgICBleGVjdXRh YmxlX3BhdGggPSBzaHV0aWwud2hpY2goZXhlY3V0YWJsZSkKKysgICAgICAgICAgICByZXR1cm5j b2RlID0gc3VicHJvY2Vzcy5jYWxsKGV4ZWN1dGFibGVfcGF0aCwgc3Rkb3V0PWRldm51bGwpCisg ICAgICAgICAgICAgcmV0dXJuIChyZXR1cm5jb2RlID09IDApCisgICAgICAgICBleGNlcHQ6Cisg ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKK0Zyb20gNWEyOTIxZWUxOWQzNTJkZmUyNWE4YzBj MjEwY2RjMjQwNGZiZjAxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEppaG8gUGVy c3kgTGVlIDxzZWFyY2g1QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTAgQXVnIDIwMjMgMTc6NTU6 NTMgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSCAyOC8zN10gVXBkYXRlIG1haW53aW5kb3cucHkKKwor bWlzc2luZyBpbXBvcnQgYWRkCistLS0KKyBweXRob24vbWFpbndpbmRvdy5weSB8IDEgKworIDEg ZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21haW53 aW5kb3cucHkgYi9weXRob24vbWFpbndpbmRvdy5weQoraW5kZXggYzM3OWQyYWU1Li5jYmI3NmRk YTEgMTAwNzU1CistLS0gYS9weXRob24vbWFpbndpbmRvdy5weQorKysrIGIvcHl0aG9uL21haW53 aW5kb3cucHkKK0BAIC0yNyw2ICsyNyw3IEBACisgaW1wb3J0IHRpbWUKKyBpbXBvcnQgdXJsbGli LnBhcnNlCisgaW1wb3J0IHdlYmJyb3dzZXIKKytpbXBvcnQgc2h0aWwKKyAKKyB0cnk6CisgICAg IG9zLmVudmlyb25bIlBPTF9PUyJdCisKK0Zyb20gNWMyNjNiZjBjMzJiOTk5Y2RiNjM2NTU1ZDBk ZTg0YWY2NjU3Mzk2ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEppaG8gUGVyc3kg TGVlIDxzZWFyY2g1QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTAgQXVnIDIwMjMgMTc6NTY6NTQg KzA5MDAKK1N1YmplY3Q6IFtQQVRDSCAyOS8zN10gVXBkYXRlIG1haW53aW5kb3cucHkKKworbWlz c2luZyBtb2R1bGUgaW1wb3J0IGFuZCBpbXBvcnQgbmFtZSBmaXguCistLS0KKyBweXRob24vbWFp bndpbmRvdy5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVs ZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3B5dGhvbi9tYWlud2luZG93LnB5IGIvcHl0aG9uL21h aW53aW5kb3cucHkKK2luZGV4IGNiYjc2ZGRhMS4uN2JjNjk1YTk4IDEwMDc1NQorLS0tIGEvcHl0 aG9uL21haW53aW5kb3cucHkKKysrKyBiL3B5dGhvbi9tYWlud2luZG93LnB5CitAQCAtMjcsNyAr MjcsNyBAQAorIGltcG9ydCB0aW1lCisgaW1wb3J0IHVybGxpYi5wYXJzZQorIGltcG9ydCB3ZWJi cm93c2VyCistaW1wb3J0IHNodGlsCisraW1wb3J0IHNodXRpbAorIAorIHRyeToKKyAgICAgb3Mu ZW52aXJvblsiUE9MX09TIl0KKworRnJvbSAzOTlmZjI4ZGExNTkzNmM0NGRkYzEyOTA1NzdiODQ3 ZDA1Y2I3MWIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmlobyBQZXJzeSBMZWUg PHNlYXJjaDVAZ21haWwuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAyMyAxNTowNDo0NiArMDkw MAorU3ViamVjdDogW1BBVENIIDMwLzM3XSBVcGRhdGUgd2luZS5saWIKKworZml4IG1pc3Npbmcg d2hpY2ggY29tbWFuZAorLS0tCisgbGliL3dpbmUubGliIHwgMiArLQorIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL3dpbmUu bGliIGIvbGliL3dpbmUubGliCitpbmRleCA4NzU2Y2RjZDMuLjNhZTkxNmIxNyAxMDA3NTUKKy0t LSBhL2xpYi93aW5lLmxpYgorKysrIGIvbGliL3dpbmUubGliCitAQCAtOTg5LDcgKzk4OSw3IEBA IFBPTF9XaW5lX1ByZWZpeENyZWF0ZSgpIHsKKyAKKyAgICAgICBQT0xfRGVidWdfSW5pdFByZWZp eAorIAorLSAgICAgIGNvbW1hbmQgLXYgd2luZXByZWZpeGNyZWF0ZSAmJiBbICIkKFBPTF9NRDVf ZmlsZSAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRlKSIpIiAhPSAiNWMwZWU5MDY4Mjc0NmU4MTE2 OThhNTM0MTViNDc2NWQiIF0gJiYgWyAhICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUgfCBncmVw ICRBUFBMSUNBVElPTl9USVRMRSkiID0gIiIgXSAmJiB3aW5lIHdpbmVwcmVmaXhjcmVhdGUKKysg ICAgICBjb21tYW5kIC12IHdpbmVwcmVmaXhjcmVhdGUgJiYgWyAiJChQT0xfTUQ1X2ZpbGUgIiQo Y29tbWFuZCAtdiB3aW5lcHJlZml4Y3JlYXRlKSIpIiAhPSAiNWMwZWU5MDY4Mjc0NmU4MTE2OThh NTM0MTViNDc2NWQiIF0gJiYgWyAhICIkKGNvbW1hbmQgLXYgd2luZXByZWZpeGNyZWF0ZSB8IGdy ZXAgJEFQUExJQ0FUSU9OX1RJVExFKSIgPSAiIiBdICYmIHdpbmUgd2luZXByZWZpeGNyZWF0ZQor ICAgICAgIHdpbmUgd2luZWJvb3QKKyAgICAgZmkKKyAgIGZpCisKK0Zyb20gNzljNTEzZmE4YTE5 MzhlNTViZTBhMjM5MTIxMTc2ZjE0MTUwNDlmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IFJvYmVydCBTY2hlY2sgPHJvYmVydC1zY2hlY2tAdXNlcnMubm9yZXBseS5naXRodWIuY29t PgorRGF0ZTogU3VuLCAyNiBNYXkgMjAyNCAyMDozMjo1MyArMDIwMAorU3ViamVjdDogW1BBVENI IDMxLzM3XSBSZW1vdmUgdW51c2VkIGltcG9ydCBvZiBkZXByZWNhdGVkIFB5dGhvbgorIGFzeW5j b3JlLmRpc3BhdGNoZXIKKworLS0tCisgcHl0aG9uL29wdGlvbnMucHkgfCAxIC0KKyAxIGZpbGUg Y2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcHl0aG9uL29wdGlvbnMucHkg Yi9weXRob24vb3B0aW9ucy5weQoraW5kZXggZjQwZjI2YTcwLi5lMThkZGIzMmIgMTAwNzU1Cist LS0gYS9weXRob24vb3B0aW9ucy5weQorKysrIGIvcHl0aG9uL29wdGlvbnMucHkKK0BAIC0xOCw3 ICsxOCw2IEBACisgIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KKyAKKy1mcm9tIGFzeW5jb3JlIGlt cG9ydCBkaXNwYXRjaGVyCisgaW1wb3J0IG9zLCBzdWJwcm9jZXNzLCBnZXRvcHQsIHN5cywgdXJs bGliLnJlcXVlc3QsIHNpZ25hbCwgc29ja2V0CisgaW1wb3J0IHd4LCB0aW1lLCByZQorIGltcG9y dCB3ZWJicm93c2VyLCBzaHV0aWwKKworRnJvbSAyMjk1OTQ4YjM1NmY4NDYxYzU2NDJjZjk2ZGJi NDNkMDNjNjI5MjEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFNjaGVj ayA8cm9iZXJ0LXNjaGVja0B1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+CitEYXRlOiBTdW4sIDI2 IE1heSAyMDI0IDIxOjUzOjM0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMzIvMzddIFJldHVybiBi YXNlZCBvbiBzaHV0aWwud2hpY2goKSBpbnN0ZWFkIG9mCisgc3VicHJvY2Vzcy5jYWxsKCkKKwor LS0tCisgcHl0aG9uL21haW53aW5kb3cucHkgfCA1ICstLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEg aW5zZXJ0aW9uKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21haW53 aW5kb3cucHkgYi9weXRob24vbWFpbndpbmRvdy5weQoraW5kZXggN2JjNjk1YTk4Li4zMzEyOTdm NzggMTAwNzU1CistLS0gYS9weXRob24vbWFpbndpbmRvdy5weQorKysrIGIvcHl0aG9uL21haW53 aW5kb3cucHkKK0BAIC0xMjE1LDExICsxMjE1LDggQEAgZGVmIE9uSW5pdChzZWxmKToKKyAgICAg ICAgIHJldHVybiBUcnVlCisgCisgICAgIGRlZiBfZXhlY3V0YWJsZUZvdW5kKHNlbGYsIGV4ZWN1 dGFibGUpOgorLSAgICAgICAgZGV2bnVsbCA9IG9wZW4oJy9kZXYvbnVsbCcsICd3YicpCisgICAg ICAgICB0cnk6CistICAgICAgICAgICAgZXhlY3V0YWJsZV9wYXRoID0gc2h1dGlsLndoaWNoKGV4 ZWN1dGFibGUpCistICAgICAgICAgICAgcmV0dXJuY29kZSA9IHN1YnByb2Nlc3MuY2FsbChleGVj dXRhYmxlX3BhdGgsIHN0ZG91dD1kZXZudWxsKQorLSAgICAgICAgICAgIHJldHVybiAocmV0dXJu Y29kZSA9PSAwKQorKyAgICAgICAgICAgIHJldHVybiAoc2h1dGlsLndoaWNoKGV4ZWN1dGFibGUp IGlzIG5vdCBOb25lKQorICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgIHJldHVybiBGYWxz ZQorIAorCitGcm9tIDEwZjc4NTNjODRmNDU2ZjE5Mjg5YzIyZmUxOWE5YTk5Zjk0ZDlkZGEgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgU2NoZWNrIDxyb2JlcnRAZmVkb3Jh cHJvamVjdC5vcmc+CitEYXRlOiBNb24sIDE0IE9jdCAyMDI0IDAwOjAwOjUyICswMjAwCitTdWJq ZWN0OiBbUEFUQ0ggMzMvMzddIFJlcGxhY2UgcGlwZXMucXVvdGUoKSBmcm9tIGRlcHJlY2F0ZWQg UHl0aG9uIHBpcGVzCisKKy0tLQorIHB5dGhvbi9saWIvcGxheW9ubGludXgucHkgfCA2ICsrKy0t LQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2Rp ZmYgLS1naXQgYS9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5IGIvcHl0aG9uL2xpYi9wbGF5b25s aW51eC5weQoraW5kZXggZmE5YjkwZmI5Li5iMzlmOGE5YTkgMTAwNzU1CistLS0gYS9weXRob24v bGliL3BsYXlvbmxpbnV4LnB5CisrKysgYi9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5CitAQCAt NSw3ICs1LDcgQEAKKyAKKyBmcm9tIC4gaW1wb3J0IFZhcmlhYmxlcworIGltcG9ydCBvcworLWlt cG9ydCBzdWJwcm9jZXNzLCBzaGxleCwgcGlwZXMsIHd4CisraW1wb3J0IHN1YnByb2Nlc3MsIHNo bGV4LCB3eAorIGltcG9ydCBuYXRzb3J0CisgCisgZGVmIHdpbnBhdGgoc2NyaXB0LCBwYXRoKToK K0BAIC0zNzMsNyArMzczLDcgQEAgZGVmIGdldEFyZ3Moc2hvcnRjdXQpOiAjIEdldCBwcmVmaXgg bmFtZSBmcm9tIHNob3J0Y3V0CisgICAgIHRyeToKKyAgICAgICAgIGFyZ3MgPSBzaGxleC5zcGxp dChmaWNoaWVyW2ldKVsyOi0xXQorICAgICAgICAgI3ByaW50IGFyZ3MKKy0gICAgICAgIGFyZ3Mg PSAiICIuam9pbihbIHBpcGVzLnF1b3RlKHgpIGZvciB4IGluIGFyZ3NdKQorKyAgICAgICAgYXJn cyA9ICIgIi5qb2luKFsgc2hsZXgucXVvdGUoeCkgZm9yIHggaW4gYXJnc10pCisgICAgICAgICAj cHJpbnQgYXJncworICAgICBleGNlcHQ6CisgICAgICAgICBhcmdzID0gIiIKK0BAIC00MzIsNyAr NDMyLDcgQEAgZGVmIHdyaXRlQXJncyhnYW1lLCBhcmdzKToKKyAgICAgICAgICAgICAgICAgb2xk X3N0cmluZyA9IHNobGV4LnNwbGl0KGZpY2hpZXJbaV0pCisgICAgICAgICAgICAgICAgIG5ld19z dHJpbmcgPSBzaGxleC5zcGxpdChzdHIoYXJncykpCisgICAgICAgICAgICAgICAgIG5ld19zdHJp bmcgPSBvbGRfc3RyaW5nWzA6Ml0gKyBuZXdfc3RyaW5nCistICAgICAgICAgICAgICAgIG5ld19z dHJpbmcgPSAiICIuam9pbihbIHBpcGVzLnF1b3RlKHgpIGZvciB4IGluIG5ld19zdHJpbmddKQor KyAgICAgICAgICAgICAgICBuZXdfc3RyaW5nID0gIiAiLmpvaW4oWyBzaGxleC5xdW90ZSh4KSBm b3IgeCBpbiBuZXdfc3RyaW5nXSkKKyAKKyAgICAgICAgICAgICAgICAgbmV3X3N0cmluZyA9IG5l d19zdHJpbmcrJyAiJEAiJworICAgICAgICAgICAgICAgICBsaW5lLmFwcGVuZChuZXdfc3RyaW5n KQorCitGcm9tIGViOWVlMTQ0M2ZlNmUzYzYzYTJjOTYwNGNkOGM4YWNkMmVlNjc4YjMgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaXRhbGlpIDxjdWJlY29kZS5uZXRAZ21haWwuY29t PgorRGF0ZTogRnJpLCAxMyBEZWMgMjAyNCAxMTowNToxMSArMDEwMAorU3ViamVjdDogW1BBVENI IDM0LzM3XSBGaXggZm9yIFN5bnRheFdhcm5pbmc6IGludmFsaWQgZXNjYXBlIHNlcXVlbmNlCisK Ky0tLQorIHB5dGhvbi9tYWlud2luZG93LnB5IHwgMTYgKysrKysrKysrLS0tLS0tLQorIDEgZmls ZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9weXRob24vbWFpbndpbmRvdy5weSBiL3B5dGhvbi9tYWlud2luZG93LnB5CitpbmRleCAzMzEy OTdmNzguLjQwODU2ODUzZCAxMDA3NTUKKy0tLSBhL3B5dGhvbi9tYWlud2luZG93LnB5CisrKysg Yi9weXRob24vbWFpbndpbmRvdy5weQorQEAgLTcwNiwxMyArNzA2LDE1IEBAIGRlZiBHb1RvQXBw RGlyKHNlbGYsIGV2ZW50KToKKyAKKyAgICAgZGVmIENoYW5nZUljb24oc2VsZiwgZXZlbnQpOgor ICAgICAgICAgc2VsZi5JY29uRGlyID0gVmFyaWFibGVzLmhvbWVkaXIgKyAiLy5sb2NhbC9zaGFy ZS9pY29ucy8iCistICAgICAgICBzZWxmLlN1cHByb3RlZEljb25FeHQgPSAiQWxsfCoueHBtOyou WFBNOyoucG5nOyouUE5HOyouaWNvOyouSUNPOyouanBnOyouSlBHOyouanBlZzsqLkpQRUc7Ki5i bXA7Ki5CTVBcCistICAgICAgICBcfFhQTSAoKi54cG0pfCoueHBtOyouWFBNXAorLSAgICAgICAg XHxQTkcgKCoucG5nKXwqLnBuZzsqLlBOR1wKKy0gICAgICAgIFx8SUNPICgqLmljbyl8Ki5pY287 Ki5JQ09cCistICAgICAgICBcfEpQRyAoKi5qcGcpfCouanBnOyouSlBHXAorLSAgICAgICAgXHxC TVAgKCouYm1wKXwqLmJtcDsqLkJNUFwKKy0gICAgICAgIFx8SlBFRyAoKi5qcGVnKXwqLmpwZWc7 KkpQRUciCisrICAgICAgICBzZWxmLlN1cHByb3RlZEljb25FeHQgPSAoCisrICAgICAgICAgICAg IkFsbHwqLnhwbTsqLlhQTTsqLnBuZzsqLlBORzsqLmljbzsqLklDTzsqLmpwZzsqLkpQRzsqLmpw ZWc7Ki5KUEVHOyouYm1wOyouQk1QfCIKKysgICAgICAgICAgICAiWFBNICgqLnhwbSl8Ki54cG07 Ki5YUE18IgorKyAgICAgICAgICAgICJQTkcgKCoucG5nKXwqLnBuZzsqLlBOR3wiCisrICAgICAg ICAgICAgIklDTyAoKi5pY28pfCouaWNvOyouSUNPfCIKKysgICAgICAgICAgICAiSlBHICgqLmpw Zyl8Ki5qcGc7Ki5KUEd8IgorKyAgICAgICAgICAgICJCTVAgKCouYm1wKXwqLmJtcDsqLkJNUHwi CisrICAgICAgICAgICAgIkpQRUcgKCouanBlZyl8Ki5qcGVnOyouSlBFRyIKKysgICAgICAgICkK KyAgICAgICAgIHNlbGYuSWNvbkRpYWxvZyA9IHd4LkZpbGVEaWFsb2coc2VsZiwgIkNob29zZSBh IGljb24gZmlsZSIsIHNlbGYuSWNvbkRpciwgIiIsIHNlbGYuU3VwcHJvdGVkSWNvbkV4dCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3guT1BFTiB8IHd4LkZEX1BS RVZJRVcpCisgICAgICAgICBpZiBzZWxmLkljb25EaWFsb2cuU2hvd01vZGFsKCkgPT0gd3guSURf T0s6CisKK0Zyb20gZjAxYmQ1ZmVmZmNhMTliMGQyZmI2ZjA1OWQzNjdjYzkwZWEzYTM0ZCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGJyaWFuYmFkbCA8bW9oYW1tYWRicmlhbmFiZGls bGFoQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjggRGVjIDIwMjQgMDc6NDk6MzAgKzA3MDAKK1N1 YmplY3Q6IFtQQVRDSCAzNS8zN10gRml4IFN5bnRheDogaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UK KworLS0tCisgcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5w eSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCisKK2RpZmYgLS1naXQgYS9weXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRv d05vdGVib29rLnB5IGIvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3Rl Ym9vay5weQoraW5kZXggMjk2NDQzZTY2Li41MDViNDc2OTMgMTAwNjQ0CistLS0gYS9weXRob24v Y29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29rLnB5CisrKysgYi9weXRob24v Y29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29rLnB5CitAQCAtNDYxLDggKzQ2 MSw4IEBAIGRlZiBtaXNjX2J1dHRvbihzZWxmLCBldmVudCk6CisgICAgICAgICAgICAgc2VsZi5G aWxlRGlhbG9nID0gd3guRmlsZURpYWxvZyhzZWxmKQorICAgICAgICAgICAgIHNlbGYuRmlsZURp YWxvZy5TZXREaXJlY3RvcnkoIn4iKQorICAgICAgICAgICAgIHNlbGYuc3VwcG9ydGVkX2ZpbGVz ID0gIkFsbHwqLmV4ZTsqLkVYRTsqLm1zaTsqLk1TSVwKKy0gICAgICAgICAgICBcfFdpbmRvd3Mg ZXhlY3V0YWJsZSAoKi5leGUpfCouZXhlOyouRVhFXAorLSAgICAgICAgICAgIFx8V2luZG93cyBp bnN0YWxsIGZpbGUgKCoubXNpKXwqLm1zaTsqTVNJIgorKyAgICAgICAgICAgIHxXaW5kb3dzIGV4 ZWN1dGFibGUgKCouZXhlKXwqLmV4ZTsqLkVYRVwKKysgICAgICAgICAgICB8V2luZG93cyBpbnN0 YWxsIGZpbGUgKCoubXNpKXwqLm1zaTsqTVNJIgorICAgICAgICAgICAgIHNlbGYuRmlsZURpYWxv Zy5TZXRXaWxkY2FyZChzZWxmLnN1cHBvcnRlZF9maWxlcykKKyAgICAgICAgICAgICBzZWxmLkZp bGVEaWFsb2cuU2hvd01vZGFsKCkKKyAgICAgICAgICAgICBpZiAoc2VsZi5GaWxlRGlhbG9nLkdl dFBhdGgoKSAhPSAiIik6CisKK0Zyb20gMjU3OGE2MDVkOGNiMDIwMWZiMTI1ZDZlZGJkZGFiMTdi NTdiODQ1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdGV1c3ogS29uaWVjem55 IDxtYXRrb25pZWN6QGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNCBOb3YgMjAyNSAxMjowMzozMCAr MDEwMAorU3ViamVjdDogW1BBVENIIDM2LzM3XSByZW1vdmUgZGVhZCBsaW5rCisKK1JlcGxhY2lu ZyBgIFNlZSBodHRwOi8vd3d3LnBsYXlvbmxpbnV4LmNvbS9mci9wYWdlLTI2LVdpbmVtZW51YnVp bGRlci5odG1sYCB3aXRoIHdvcmtpbmcgbGluayB3b3VsZCBiZSBuaWNlciwgYnV0IEkgYW0gbm90 IHN1cmUgd2hhdCBpcyBzdXBwb3NlZCB0byBiZSBsaW5rZWQKKy0tLQorIGxpYi93aW5lLmxpYiB8 IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKwor ZGlmZiAtLWdpdCBhL2xpYi93aW5lLmxpYiBiL2xpYi93aW5lLmxpYgoraW5kZXggM2FlOTE2YjE3 Li5lZDRlZDNhMjYgMTAwNzU1CistLS0gYS9saWIvd2luZS5saWIKKysrKyBiL2xpYi93aW5lLmxp YgorQEAgLTUxOSw3ICs1MTksNyBAQCBQT0xfV2luZSgpIHsKKyAgIGZpCisgCisgICBpZiBbICEg IiRXSU5FTUVOVUJVSUxERVJfQUxFUlQiIF07IHRoZW4KKy0gICAgUE9MX0RlYnVnX01lc3NhZ2Ug Ik5vdGljZTogUGxheU9uTGludXggZGVsaWJlcmF0ZWx5IGRpc2FibGVzIHdpbmVtZW51YnVpbGRl ci4gU2VlIGh0dHA6Ly93d3cucGxheW9ubGludXguY29tL2ZyL3BhZ2UtMjYtV2luZW1lbnVidWls ZGVyLmh0bWwiCisrICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJOb3RpY2U6IFBsYXlPbkxpbnV4IGRl bGliZXJhdGVseSBkaXNhYmxlcyB3aW5lbWVudWJ1aWxkZXIuIgorICAgICBXSU5FTUVOVUJVSUxE RVJfQUxFUlQ9IkRvbmUiCisgICBmaQorICAgaWYgWyAiJDEiID0gInJlZ2VkaXQiIC1hICEgIiQy IiA9ICIiIF07IHRoZW4KKworRnJvbSBjYWM4NzAxYzgwNmFlM2Y4Zjk0ZjhjMzgzZTA1OTk2ZWZh YTUzZDU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQm9yaXNsYXYgU2FiZXYgPEJv cmlzbGF2U2FiZXZAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgorRGF0ZTogTW9uLCA1IEphbiAy MDI2IDE1OjAzOjQ5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMzcvMzddIFVwZGF0ZSBQT0xfU2V0 dXBGcmFtZS5weSAtIEZpeCBzeW50YXggd2FybmluZyB3aXRoCisgUHl0aG9uID49IDMuMTAKKwor LS0tCisgcHl0aG9uL3NldHVwd2luZG93L1BPTF9TZXR1cEZyYW1lLnB5IHwgNCArKystCisgMSBm aWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0 IGEvcHl0aG9uL3NldHVwd2luZG93L1BPTF9TZXR1cEZyYW1lLnB5IGIvcHl0aG9uL3NldHVwd2lu ZG93L1BPTF9TZXR1cEZyYW1lLnB5CitpbmRleCAzM2Q3M2QzOGEuLjVhMmZlYWYxMSAxMDA3NTUK Ky0tLSBhL3B5dGhvbi9zZXR1cHdpbmRvdy9QT0xfU2V0dXBGcmFtZS5weQorKysrIGIvcHl0aG9u L3NldHVwd2luZG93L1BPTF9TZXR1cEZyYW1lLnB5CitAQCAtMzMsNyArMzMsOSBAQAorIGltcG9y dCBsaWIucGxheW9ubGludXggYXMgcGxheW9ubGludXgKKyAKKyBsaWIubG5nLkxhbmcoKQorLXVy bGxpYi5yZXF1ZXN0LlVSTG9wZW5lci52ZXJzaW9uID0gVmFyaWFibGVzLnVzZXJBZ2VudCAgIyBB cmcgLi4uCisrb3BlbmVyID0gdXJsbGliLnJlcXVlc3QuYnVpbGRfb3BlbmVyKCkKKytvcGVuZXIu YWRkaGVhZGVycyA9IFsoJ1VzZXItQWdlbnQnLCBWYXJpYWJsZXMudXNlckFnZW50KV0KKyt1cmxs aWIucmVxdWVzdC5fdXJsb3BlbmVyID0gb3BlbmVyCisgCisgZnJvbSB1aS5QbGF5T25MaW51eFdp bmRvdyBpbXBvcnQgUGxheU9uTGludXhXaW5kb3cKKyBmcm9tIHNldHVwd2luZG93LkRvd25sb2Fk ZXIgaW1wb3J0IERvd25sb2FkZXIKCmRpZmYgLS1naXQgYS9wbGF5b25saW51eC5zcGVjIGIvcGxh eW9ubGludXguc3BlYwppbmRleCBmNDc2NmRhLi5hODNkZTAwIDEwMDY0NAotLS0gYS9wbGF5b25s aW51eC5zcGVjCisrKyBiL3BsYXlvbmxpbnV4LnNwZWMKQEAgLTEsNyArMSw3IEBACiBTdW1tYXJ5 OiAgICAgICBHcmFwaGljYWwgZnJvbnQtZW5kIGZvciBXaW5lCiBOYW1lOiAgICAgICAgICBwbGF5 b25saW51eAogVmVyc2lvbjogICAgICAgNC40Ci1SZWxlYXNlOiAgICAgICAxOCV7P2Rpc3R9CitS ZWxlYXNlOiAgICAgICAxOSV7P2Rpc3R9CiAjIHBsYXlvbmxpbnV4IGl0c2VsZiBpcyBHUEwtMy4w LW9ubHkgYnV0IHVzZXMgb3RoZXIgc291cmNlIGNvZGVzLCBicmVha2Rvd246CiAjIEdQTC0yLjAt b3ItbGF0ZXI6IHB5dGhvbi97Y29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvdyxkZWJ1Zyxt YWlud2luZG93LG9wdGlvbnMsd3JhcHBlcn0ucHkKICMgR1BMLTIuMC1vci1sYXRlcjogcHl0aG9u L3tpbnN0YWxsL0luc3RhbGxXaW5kb3csc2V0dXB3aW5kb3cve1BPTF9TZXR1cEZyYW1lLGd1aV9z ZXJ2ZXJ9fS5weQpAQCAtMTEsNyArMTEsNyBAQCBMaWNlbnNlOiAgICAgICBHUEwtMy4wLW9ubHkg QU5EIEdQTC0yLjAtb3ItbGF0ZXIgQU5EIE1JVAogVVJMOiAgICAgICAgICAgaHR0cHM6Ly93d3cu cGxheW9ubGludXguY29tLwogU291cmNlMDogICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1BsYXlP bkxpbnV4L1BPTC1QT00tNC9hcmNoaXZlLyV7dmVyc2lvbn0vUE9MLVBPTS00LSV7dmVyc2lvbn0u dGFyLmd6CiAjIFVwc3RyZWFtIGNoYW5nZXMgc2luY2UgbGFzdCByZWxlYXNlCi1QYXRjaDA6ICAg ICAgICBodHRwczovL2dpdGh1Yi5jb20vUGxheU9uTGludXgvUE9MLVBPTS00L2NvbXBhcmUvNC40 Li4uNzZhNjU4MC5wYXRjaCMvcGxheW9ubGludXgtNC40LWdpdDc2YTY1ODAucGF0Y2gKK1BhdGNo MDogICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9QbGF5T25MaW51eC9QT0wtUE9NLTQvY29tcGFy ZS80LjQuLi5mZGUwMGZlLnBhdGNoIy9wbGF5b25saW51eC00LjQtZ2l0ZmRlMDBmZS5wYXRjaAog QnVpbGRSZXF1aXJlczogZ2NjCiBCdWlsZFJlcXVpcmVzOiBtYWtlCiBCdWlsZFJlcXVpcmVzOiBn emlwCkBAIC0xMDAsNiArMTAwLDkgQEAgYXBwc3RyZWFtLXV0aWwgdmFsaWRhdGUtcmVsYXggLS1u b25ldCAle2J1aWxkcm9vdH0le19kYXRhZGlyfS9hcHBkYXRhL1BsYXlPbkxpbnUKICV7X21hbmRp cn0vbWFuMS8le25hbWV9LXBrZy4xKgogCiAlY2hhbmdlbG9nCisqIFNhdCBKdW4gMTMgMjAyNiBS b2JlcnQgU2NoZWNrIDxyb2JlcnRAZmVkb3JhcHJvamVjdC5vcmc+IDQuNC0xOQorLSBBZGQgcGF0 Y2ggdG8gcmVwbGFjZSB1cmxsaWIucmVxdWVzdC5VUkxvcGVuZXIgKCMyNDAzMjkwKQorCiAqIFNh dCBKYW4gMTcgMjAyNiBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXBy b2plY3Qub3JnPiAtIDQuNC0xOAogLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qu b3JnL3dpa2kvRmVkb3JhXzQ0X01hc3NfUmVidWlsZAogCg==