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] main: Add patch to replace urllib.request.URLopener (#2403290) Date: Fri, 12 Jun 2026 22:38:09 GMT Message-ID: <178130388917.1.2701495930315911648.rpms-playonlinux-91959b62290c@fedoraproject.org> List-ID: X-Git-Repo: rpms/playonlinux X-Git-Branch: main X-Git-Rev: 91959b62290c886f57f98f151591de15b811c529 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvcGxheW9ubGludXgK QnJhbmNoIDogbWFpbgpDb21taXQgOiA5MTk1OWI2MjI5MGM4ODZmNTdmOThmMTUxNTkxZGUxNWI4 MTFjNTI5CkF1dGhvciA6IFJvYmVydCBTY2hlY2sgPHJvYmVydEBmZWRvcmFwcm9qZWN0Lm9yZz4K RGF0ZSAgIDogMjAyNi0wNi0xM1QwMDozNjoyNSswMjowMApTdGF0cyAgOiArNDkyMC8tNDgwNSBp biAzIGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9w bGF5b25saW51eC9jLzkxOTU5YjYyMjkwYzg4NmY1N2Y5OGYxNTE1OTFkZTE1YjgxMWM1Mjk/YnJh bmNoPW1haW4KCkxvZzoKQWRkIHBhdGNoIHRvIHJlcGxhY2UgdXJsbGliLnJlcXVlc3QuVVJMb3Bl bmVyICgjMjQwMzI5MCkKCi0tLQpkaWZmIC0tZ2l0IGEvcGxheW9ubGludXgtNC40LWdpdDc2YTY1 ODAucGF0Y2ggYi9wbGF5b25saW51eC00LjQtZ2l0NzZhNjU4MC5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggNWY4MTU4ZS4uMDAwMDAwMAotLS0gYS9wbGF5b25saW51eC00LjQt Z2l0NzZhNjU4MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4MDMgKzAsMCBAQAotRnJvbSA5 ZmY0Yjc2MTY4YTdjNjRlNGEyZGU3YmU1MTU4NjE4ZmJiMTI0MmEyIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP1F1ZW50aW49MjBQPUMzPUEycmlzPz0gPGdpdGh1YkBw bGF5b25saW51eC5jb20+Ci1EYXRlOiBTdW4sIDE3IE1heSAyMDIwIDE2OjE1OjMwICswMjAwCi1T dWJqZWN0OiBbUEFUQ0ggMDEvMzNdIFVwZGF0ZSBDSEFOR0VMT0cubWQKLQotLS0tCi0gQ0hBTkdF TE9HLm1kIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYg LS1naXQgYS9DSEFOR0VMT0cubWQgYi9DSEFOR0VMT0cubWQKLWluZGV4IGE1ODk2MjVjMy4uY2Rl MmQ4MmM0IDEwMDY0NAotLS0tIGEvQ0hBTkdFTE9HLm1kCi0rKysgYi9DSEFOR0VMT0cubWQKLUBA IC0xLDMgKzEsNiBAQAotKyMgNC40Ci0rKiBQeXRob24gMyBzdXBwb3J0IAotKwotICMgNC4zLjQK LSAqIEZpeGVkIHNvbWUgYnVncyBpbiB0aGUgd2luZXZlcnNpb24gcHJvY2VzcwotICogQmVnaW5p bmcgb2YgY29kZSBjbGVhbmluZyBhbmQgcmVmYWN0b3JpbmcKLQotRnJvbSA3ODhmYWQxNmVmZjQ5 MDQxOTNlNGU5YzUyYjIzNjcyNTM1YTIzYzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJv bTogR2lsbGVzIDxnaWxsZXMud2liZXJAZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBNYXkgMjAy MCAxMToxOTozNSArMDIwMAotU3ViamVjdDogW1BBVENIIDAyLzMzXSBSZW1vdmluZyBTZXRTcGFj aW5nIGZ1bnRpb24KLQotLS0tCi0gcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5k b3cucHkgICAgICAgICB8IDIgKy0KLSBweXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdp bmRvd05vdGVib29rLnB5IHwgMiArLQotIHB5dGhvbi9kZWJ1Zy5weSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAyICstCi0gcHl0aG9uL2luc3RhbGwvSW5zdGFsbFdpbmRvdy5w eSAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBweXRob24vbWFpbndpbmRvdy5weSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIHB5dGhvbi9vcHRpb25zLnB5ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gcHl0aG9uL3NldHVwd2luZG93L1BPTF9T ZXR1cEZyYW1lLnB5ICAgICAgICAgICAgICB8IDIgKy0KLSBweXRob24vd2luZV92ZXJzaW9ucy9X aW5lVmVyc2lvbnNOb3RlYm9vay5weSAgICAgIHwgNCArKy0tCi0gOCBmaWxlcyBjaGFuZ2VkLCA5 IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9weXRob24vY29u ZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvdy5weSBiL3B5dGhvbi9jb25maWd1cmV3aW5kb3cv Q29uZmlndXJlV2luZG93LnB5Ci1pbmRleCAzMGY3NzlkYjEuLmEyNjMyMTQzNyAxMDA3NTUKLS0t LSBhL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93LnB5Ci0rKysgYi9weXRo b24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvdy5weQotQEAgLTc1LDcgKzc1LDcgQEAg ZGVmIF9faW5pdF9fKHNlbGYscGFyZW50LGlkLHRpdGxlLHNob3J0Y3V0LCBpc1ByZWZpeCA9IEZh bHNlKToKLSAgICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQlVUVE9OLCBzZWxmLkRlbGV0ZVByZWZp eCwgaWQ9MTAwMikKLSAKLSAKLS0gICAgICAgIHNlbGYubGlzdF9nYW1lLlNldFNwYWNpbmcoMCkK LSsgICAgICAgICNzZWxmLmxpc3RfZ2FtZS5TZXRTcGFjaW5nKDApCi0gICAgICAgICBzZWxmLmxp c3RfZ2FtZS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZXMpCi0gCi0gCi1kaWZmIC0tZ2l0IGEvcHl0 aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5weSBiL3B5dGhvbi9j b25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJvb2sucHkKLWluZGV4IDhiNGUzODdl YS4uOTczZDliYmQzIDEwMDY0NAotLS0tIGEvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1 cmVXaW5kb3dOb3RlYm9vay5weQotKysrIGIvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1 cmVXaW5kb3dOb3RlYm9vay5weQotQEAgLTI2OSw3ICsyNjksNyBAQCBkZWYgUGFja2FnZXMoc2Vs Ziwgbm9tKToKLSAKLSAgICAgICAgIHNlbGYuTWVudSA9IHd4LlRyZWVDdHJsKHNlbGYucGFuZWxQ YWNrYWdlcywgOTksIHBvcz0oMTUsIDc1KSwgc2l6ZT0oNTMwLCAyNjApLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3guVFJfSElERV9ST09UIHwgd3guVFJfRlVMTF9S T1dfSElHSExJR0hUIHwgVmFyaWFibGVzLndpZGdldF9ib3JkZXJzKQotLSAgICAgICAgc2VsZi5N ZW51LlNldFNwYWNpbmcoMCk7Ci0rICAgICAgICAjc2VsZi5NZW51LlNldFNwYWNpbmcoMCk7Ci0g ICAgICAgICBzZWxmLk1lbnUuU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VQYWNrYWdlcykKLSAgICAg ICAgIHNlbGYuaW1hZ2VQYWNrYWdlcy5SZW1vdmVBbGwoKQotIAotZGlmZiAtLWdpdCBhL3B5dGhv bi9kZWJ1Zy5weSBiL3B5dGhvbi9kZWJ1Zy5weQotaW5kZXggMDIyMWU4OWMwLi40M2U4Y2YwMjEg MTAwNzU1Ci0tLS0gYS9weXRob24vZGVidWcucHkKLSsrKyBiL3B5dGhvbi9kZWJ1Zy5weQotQEAg LTYwLDcgKzYwLDcgQEAgZGVmIF9faW5pdF9fKHNlbGYscGFyZW50LGlkLHRpdGxlLGxvZ2NoZWNr PSIvZGV2L251bGwiLGxvZ3R5cGU9Tm9uZSk6Ci0gICAgICAgICBzZWxmLkJpbmQod3guRVZUX1RS RUVfU0VMX0NIQU5HRUQsIHNlbGYuYW5hbHlzZUxvZywgaWQ9OTAwKQotIAotIAotLSAgICAgICAg c2VsZi5saXN0X2dhbWUuU2V0U3BhY2luZygwKTsKLSsgICAgICAgICNzZWxmLmxpc3RfZ2FtZS5T ZXRTcGFjaW5nKDApOwotICAgICAgICAgc2VsZi5saXN0X2dhbWUuU2V0SW1hZ2VMaXN0KHNlbGYu aW1hZ2VzKQotIAotIAotZGlmZiAtLWdpdCBhL3B5dGhvbi9pbnN0YWxsL0luc3RhbGxXaW5kb3cu cHkgYi9weXRob24vaW5zdGFsbC9JbnN0YWxsV2luZG93LnB5Ci1pbmRleCAyN2E2YjUxYTUuLjVi NTg0Nzc0ZCAxMDA3NTUKLS0tLSBhL3B5dGhvbi9pbnN0YWxsL0luc3RhbGxXaW5kb3cucHkKLSsr KyBiL3B5dGhvbi9pbnN0YWxsL0luc3RhbGxXaW5kb3cucHkKLUBAIC0xODMsNyArMTgzLDcgQEAg ZGVmIF9jcmVhdGVBcHBOYXZpZ2F0aW9uKHNlbGYpOgotICAgICAgICAgc2VsZi5hcHBzTGlzdCA9 IHd4LlRyZWVDdHJsKHNlbGYuYXBwTmF2aWdhdGlvblBhbmVsLCAxMDYsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3guVFJfSElERV9ST09UIHwgd3guVFJfRlVM TF9ST1dfSElHSExJR0hUIHwgVmFyaWFibGVzLndpZGdldF9ib3JkZXJzKQotICAgICAgICAgc2Vs Zi5hcHBzTGlzdC5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZXNhcHBzKQotLSAgICAgICAgc2VsZi5h cHBzTGlzdC5TZXRTcGFjaW5nKDApCi0rICAgICAgICAjc2VsZi5hcHBzTGlzdC5TZXRTcGFjaW5n KDApCi0gCi0gICAgICAgICBzZWxmLmFwcE5hdmlnYXRpb25TaXplci5BZGRTcGFjZXIoMTApCi0g ICAgICAgICBzZWxmLmFwcE5hdmlnYXRpb25TaXplci5BZGQoc2VsZi5hcHBzTGlzdCwgNCwgd3gu RVhQQU5ELCA1KQotZGlmZiAtLWdpdCBhL3B5dGhvbi9tYWlud2luZG93LnB5IGIvcHl0aG9uL21h aW53aW5kb3cucHkKLWluZGV4IDdjMjExNDJkZi4uOGRmMWZmMTRiIDEwMDc1NQotLS0tIGEvcHl0 aG9uL21haW53aW5kb3cucHkKLSsrKyBiL3B5dGhvbi9tYWlud2luZG93LnB5Ci1AQCAtMjQwLDcg KzI0MCw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGlkLCB0aXRsZSk6Ci0gCi0gICAg ICAgICAjIyBMaXN0IGdhbWUKLSAgICAgICAgIHNlbGYubGlzdF9nYW1lID0gd3guVHJlZUN0cmwo c2VsZiwgMTA1LCBzdHlsZT13eC5UUl9ISURFX1JPT1QgfCB3eC5UUl9GVUxMX1JPV19ISUdITElH SFQpCi0tICAgICAgICBzZWxmLmxpc3RfZ2FtZS5TZXRTcGFjaW5nKDApCi0rICAgICAgICAjc2Vs Zi5saXN0X2dhbWUuU2V0U3BhY2luZygwKQotICAgICAgICAgc2VsZi5saXN0X2dhbWUuU2V0SW5k ZW50KDUpCi0gICAgICAgICBzZWxmLmxpc3RfZ2FtZS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZXMp Ci0gICAgICAgICBzZWxmLm1lbnVfZ2F1Y2hlID0gd3guUGFuZWwoc2VsZiwgLTEpCi1kaWZmIC0t Z2l0IGEvcHl0aG9uL29wdGlvbnMucHkgYi9weXRob24vb3B0aW9ucy5weQotaW5kZXggYTU0YzEx MDAwLi43MjMwNzNjZTQgMTAwNzU1Ci0tLS0gYS9weXRob24vb3B0aW9ucy5weQotKysrIGIvcHl0 aG9uL29wdGlvbnMucHkKLUBAIC0xODcsNyArMTg3LDcgQEAgZGVmIFBsdWdpbnMoc2VsZiwgbm9t KToKLSAgICAgICAgIHNlbGYudHh0UGx1Z2luID0gd3guU3RhdGljVGV4dChzZWxmLnBhbmVsUGx1 Z2lucywgLTEsIF8oIkluc3RhbGxlZCBwbHVnaW5zIiksIHNpemU9d3guRGVmYXVsdFNpemUpCi0g ICAgICAgICBzZWxmLnR4dFBsdWdpbi5TZXRGb250KHNlbGYuZm9udFRpdGxlKQotICAgICAgICAg c2VsZi5wbHVnaW5saXN0ID0gd3guVHJlZUN0cmwoc2VsZi5wYW5lbFBsdWdpbnMsIDIyMCwgc3R5 bGU9VmFyaWFibGVzLndpZGdldF9ib3JkZXJzfHd4LlRSX0hJREVfUk9PVHx3eC5UUl9GVUxMX1JP V19ISUdITElHSFQpCi0tICAgICAgICBzZWxmLnBsdWdpbmxpc3QuU2V0U3BhY2luZygwKQotKyAg ICAgICAgI3NlbGYucGx1Z2lubGlzdC5TZXRTcGFjaW5nKDApCi0gCi0gICAgICAgICBzZWxmLnBs dWdpbkltZ0xpc3QgPSB3eC5JbWFnZUxpc3QoMTYsMTYpCi0gCi1kaWZmIC0tZ2l0IGEvcHl0aG9u L3NldHVwd2luZG93L1BPTF9TZXR1cEZyYW1lLnB5IGIvcHl0aG9uL3NldHVwd2luZG93L1BPTF9T ZXR1cEZyYW1lLnB5Ci1pbmRleCA2NmJlZTg1MzMuLjMzZDczZDM4YSAxMDA3NTUKLS0tLSBhL3B5 dGhvbi9zZXR1cHdpbmRvdy9QT0xfU2V0dXBGcmFtZS5weQotKysrIGIvcHl0aG9uL3NldHVwd2lu ZG93L1BPTF9TZXR1cEZyYW1lLnB5Ci1AQCAtMjEyLDcgKzIxMiw3IEBAIGRlZiBfY3JlYXRlVUko c2VsZik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXd4LlRS X0hJREVfUk9PVCB8IHd4LlRSX0ZVTExfUk9XX0hJR0hMSUdIVCB8IFZhcmlhYmxlcy53aWRnZXRf Ym9yZGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zPSgyNSwg MjUpLCBzaXplPSg0NjAsIDIyMCkpCi0gICAgICAgICBzZWxmLk1lbnVHYW1lcy5TZXRJbWFnZUxp c3Qoc2VsZi5pbWFnZXMpCi0tICAgICAgICBzZWxmLk1lbnVHYW1lcy5TZXRTcGFjaW5nKDApCi0r ICAgICAgICAjc2VsZi5NZW51R2FtZXMuU2V0U3BhY2luZygwKQotIAotICAgICAgICAgIyBMb2dp bgotICAgICAgICAgc2VsZi5sb2dpbiA9IHd4LlN0YXRpY1RleHQoc2VsZi5jb250ZW50UGFuZWws IC0xLCBfKCJMb2dpbjogIiksIHBvcz0oMjAsIDQwKSwgc2l6ZT0oNDYwLCAyMCkpCi1kaWZmIC0t Z2l0IGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zTm90ZWJvb2sucHkgYi9weXRo b24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNOb3RlYm9vay5weQotaW5kZXggZTA4OGFiZWIy Li5lYzVmMTI1MzUgMTAwNjQ0Ci0tLS0gYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lv bnNOb3RlYm9vay5weQotKysrIGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zTm90 ZWJvb2sucHkKLUBAIC0zOSw3ICszOSw3IEBAIGRlZiBfY3JlYXRlSW5zdGFsbGVkV2luZVZlcnNp b25zUGFuZWwoc2VsZiwgYXJjaCk6Ci0gICAgICAgICBzZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9u c1RyZWVTZWxlY3RvclthcmNoXSA9IHd4LlRyZWVDdHJsKGluc3RhbGxlZFdpbmVWZXJzaW9uc1Bh bmVsLCAxMDcgKyBzZWxmLmNhbGN1bGF0ZUV2ZW50RGVsdGEoYXJjaCksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 eWxlPXd4LlRSX0hJREVfUk9PVCB8IHd4LlRSX0ZVTExfUk9XX0hJR0hMSUdIVCB8IFZhcmlhYmxl cy53aWRnZXRfYm9yZGVycykKLSAgICAgICAgIHNlbGYuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJl ZVNlbGVjdG9yW2FyY2hdLlNldEltYWdlTGlzdChzZWxmLmltYWdlc2FwcHNfaVthcmNoXSkKLS0g ICAgICAgIHNlbGYuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldFNw YWNpbmcoMCkKLSsgICAgICAgICNzZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3Rv clthcmNoXS5TZXRTcGFjaW5nKDApCi0gICAgICAgICBpbnN0YWxsZWRXaW5lVmVyc2lvbnNTaXpl ci5BZGQoc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0sIDEsIHd4 LkVYUEFORCkKLSAgICAgICAgIGluc3RhbGxlZFdpbmVWZXJzaW9uc1NpemVyLkFkZFNwYWNlcigx MCkKLSAKLUBAIC01NSw3ICs1NSw3IEBAIGRlZiBfY3JlYXRlQXZhaWxhYmxlV2luZVZlcnNpb25z UGFuZWwoc2VsZiwgYXJjaCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXd4LlRSX0hJREVfUk9PVCB8IHd4 LlRSX0ZVTExfUk9XX0hJR0hMSUdIVCB8IFZhcmlhYmxlcy53aWRnZXRfYm9yZGVycywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZT0oMzIwLCAzMDApLCBwb3M9KDEwLCAzNSkpCi0gICAgICAgICBzZWxmLmF2YWls YWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFn ZXNhcHBzW2FyY2hdKQotLSAgICAgICAgc2VsZi5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2Vs ZWN0b3JbYXJjaF0uU2V0U3BhY2luZygwKQotKyAgICAgICAgI3NlbGYuYXZhaWxhYmxlV2luZVZl cnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldFNwYWNpbmcoMCkKLSAgICAgICAgIGF2YWlsYWJs ZVdpbmVWZXJzaW9uc1NpemVyLkFkZChzZWxmLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxl Y3RvclthcmNoXSwgMSwgd3guRVhQQU5EKQotICAgICAgICAgYXZhaWxhYmxlV2luZVZlcnNpb25z U2l6ZXIuQWRkU3BhY2VyKDEwKQotIAotCi1Gcm9tIDc3YTNjYTNiZTI5M2ViY2FmYTI0MDA3MDNh NWRkNDA3OWE1ZjIwMGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBHaWxsZXMgPGdp bGxlcy53aWJlckBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDMwIE1heSAyMDIwIDExOjMyOjEzICsw MjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMzNdIFNvbHZpbmcgcGx1Z2luZyBtYW5hZ2VyIGlzc3Vl IChleHRlbnNpb24gbWFuYWdlbWVudCkKLQotLS0tCi0gcHl0aG9uL29wdGlvbnMucHkgfCAxMSAr KysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9weXRob24vb3B0aW9ucy5weSBiL3B5dGhvbi9vcHRpb25zLnB5 Ci1pbmRleCA3MjMwNzNjZTQuLmY0MGYyNmE3MCAxMDA3NTUKLS0tLSBhL3B5dGhvbi9vcHRpb25z LnB5Ci0rKysgYi9weXRob24vb3B0aW9ucy5weQotQEAgLTIyOSw5ICsyMjksOSBAQCBkZWYgZ2Vu ZXJhdGVFeHRzKHNlbGYpOgotICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIlxuIiwi IikKLSAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgiPSIpCi0gICAgICAgICAgICAgbGlu ZXIgPSAiTGluZSAlcyIgJSBpCi0tICAgICAgICAgICAgc2VsZi5saXN0X2V4dC5JbnNlcnRTdHJp bmdJdGVtKGksIGxpbmVyKQotLSAgICAgICAgICAgIHNlbGYubGlzdF9leHQuU2V0U3RyaW5nSXRl bShpLCAwLCBsaW5lWzBdKQotLSAgICAgICAgICAgIHNlbGYubGlzdF9leHQuU2V0U3RyaW5nSXRl bShpLCAxLCBsaW5lWzFdKQotKyAgICAgICAgICAgIHNlbGYubGlzdF9leHQuSW5zZXJ0SXRlbShp LCBsaW5lcikKLSsgICAgICAgICAgICBzZWxmLmxpc3RfZXh0LlNldEl0ZW0oaSwgMCwgbGluZVsw XSkKLSsgICAgICAgICAgICBzZWxmLmxpc3RfZXh0LlNldEl0ZW0oaSwgMSwgbGluZVsxXSkKLSAg ICAgICAgICAgICBpICs9IDEKLSAgICAgICAgIHNlbGYuYXBwX2luc3RhbGxlZF90ZXh0LkhpZGUo KQotICAgICAgICAgc2VsZi5hcHBfaW5zdGFsbGVkLkhpZGUoKQotQEAgLTI0OSw4ICsyNDksOSBA QCBkZWYgZWRpdEV4dChzZWxmLCBldmVudCk6Ci0gICAgICAgICBzZWxmLmFwcF9pbnN0YWxsZWQu U2hvdygpCi0gICAgICAgICBzZWxmLmRlbGV0ZV9leHQuU2hvdygpCi0gCi0tICAgICAgICBzZWxm LmFwcF9zZWxlY3RlZCA9IHNlbGYuZXh0c1tldmVudC5tX2l0ZW1JbmRleF0uc3BsaXQoIj0iKVsx XQotLSAgICAgICAgc2VsZi5leHRfc2VsZWN0ZWQgPSBzZWxmLmV4dHNbZXZlbnQubV9pdGVtSW5k ZXhdLnNwbGl0KCI9IilbMF0KLSsgICAgICAgIGluZCA9IGV2ZW50LkdldEluZGV4KCkKLSsgICAg ICAgIHNlbGYuYXBwX3NlbGVjdGVkID0gc2VsZi5saXN0X2V4dC5HZXRJdGVtKGluZCwxKS5HZXRU ZXh0KCkKLSsgICAgICAgIHNlbGYuZXh0X3NlbGVjdGVkID0gc2VsZi5saXN0X2V4dC5HZXRJdGVt KGluZCwwKS5HZXRUZXh0KCkKLSAKLSAgICAgICAgIHNlbGYuYXBwX2luc3RhbGxlZC5TZXRWYWx1 ZShzZWxmLmFwcF9zZWxlY3RlZC5yZXBsYWNlKCJcbiIsIiIpLnJlcGxhY2UoIlxyIiwiIikpCi0g Ci0KLUZyb20gYTY1NmY1YjJiZGQyMzM3NWUzZDk1NDdhOWMzOGNjZjk5ZTJkYzY3MCBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEdpbGxlcyA8Z2lsbGVzLndpYmVyQGdtYWlsLmNvbT4K LURhdGU6IFNhdCwgMzAgTWF5IDIwMjAgMTQ6MzQ6MjggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAw NC8zM10gU29sdmluZyBkaWZmZXJlbnQgaXNzdWUgb24gZGVidWcgd2luZG93Ci0KLS0tLQotIHB5 dGhvbi9kZWJ1Zy5weSAgICAgICAgIHwgNyArKysrLS0tCi0gcHl0aG9uL2xpYi9WYXJpYWJsZXMu cHkgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9weXRob24vZGVidWcucHkgYi9weXRob24vZGVidWcucHkKLWlu ZGV4IDQzZThjZjAyMS4uMWUzNDRlZGM4IDEwMDc1NQotLS0tIGEvcHl0aG9uL2RlYnVnLnB5Ci0r KysgYi9weXRob24vZGVidWcucHkKLUBAIC0zOCw3ICszOCw3IEBAIGRlZiBfX2luaXRfXyhzZWxm LHBhcmVudCxpZCx0aXRsZSxsb2djaGVjaz0iL2Rldi9udWxsIixsb2d0eXBlPU5vbmUpOgotIAot ICAgICAgICAgd3guRnJhbWUuX19pbml0X18oc2VsZiwgcGFyZW50LCAtMSwgdGl0bGUsIHNpemUg PSAoODEwLCA2MDArVmFyaWFibGVzLndpbmRvd3NfYWRkX3NpemUpLCBzdHlsZSA9IHd4LkNMT1NF X0JPWCB8IHd4LkNBUFRJT04gfCB3eC5NSU5JTUlaRV9CT1gpCi0gICAgICAgICBzZWxmLlNldElj b24od3guSWNvbihWYXJpYWJsZXMucGxheW9ubGludXhfZW52KyIvZXRjL3BsYXlvbmxpbnV4LnBu ZyIsIHd4LkJJVE1BUF9UWVBFX0FOWSkpCi0tICAgICAgICBzZWxmLlNldFRpdGxlKF8oJ3swfSBk ZWJ1Z2dlcicpLmZvcm1hdChvcy5lbnZpcm9uWyJBUFBMSUNBVElPTl9USVRMRSJdKSkKLSsgICAg ICAgIHNlbGYuU2V0VGl0bGUodGl0bGUpCi0gICAgICAgICAjc2VsZi5wYW5lbEZlbnAgPSB3eC5Q YW5lbChzZWxmLCAtMSkKLSAKLSAgICAgICAgIHNlbGYucHJlZml4ZXNfaXRlbSA9IHt9Ci1AQCAt NzksNyArNzksNyBAQCBkZWYgX19pbml0X18oc2VsZixwYXJlbnQsaWQsdGl0bGUsbG9nY2hlY2s9 Ii9kZXYvbnVsbCIsbG9ndHlwZT1Ob25lKToKLSAgICAgICAgIHNlbGYubG9nX3JlYWRlciA9IHd4 LlRleHRDdHJsKHNlbGYucGFuZWxUZXh0LCAxMDAsICIiLCBzaXplPXd4LlNpemUoNTkwLDUwMCks IHBvcz0oMiwyKSwgc3R5bGU9VmFyaWFibGVzLndpZGdldF9ib3JkZXJzfHd4LlRFX1JJQ0gyfHd4 LlRFX1JFQURPTkxZfHd4LlRFX01VTFRJTElORSkKLSAgICAgICAgIHNlbGYubG9nX3JlYWRlci5C aW5kKHd4LkVWVF9TRVRfRk9DVVMsIHNlbGYuT25Gb2N1cykKLSAgICAgICAgIHNlbGYub3BlblRl eHRFZGl0ID0gd3guQnV0dG9uKHNlbGYucGFuZWxOb3RFbXB0eSwgMTAxLCBfKCJMb2NhdGUgdGhp cyBsb2dmaWxlIiksIHNpemU9KDQwMCwzMCksIHBvcz0oNzAsNTEyKSkKLS0gICAgICAgIHNlbGYu cmVwb3J0UHJvYmxlbSA9IHd4LkJ1dHRvbihzZWxmLnBhbmVsTm90RW1wdHksIDEwMiwgIiIsIHNp emU9KDQwMCwzMCksIHBvcz0oNzAsNTUyKSkKLSsgICAgICAgIHNlbGYucmVwb3J0UHJvYmxlbSA9 IHd4LkJ1dHRvbihzZWxmLnBhbmVsTm90RW1wdHksIDEwMiwgXygiQnVnIHJlcG9ydCIpLCBzaXpl PSg0MDAsMzApLCBwb3M9KDcwLDU1MikpCi0gCi0gICAgICAgICBpZihsb2djaGVjayA9PSAiL2Rl di9udWxsIik6Ci0gICAgICAgICAgICAgc2VsZi5IaWRlTG9nRmlsZSgpCi1AQCAtOTUsNyArOTUs OCBAQCBkZWYgYnVnUmVwb3J0KHNlbGYsIGV2ZW50KToKLSAgICAgICAgIG5ld19lbnYgPSBvcy5l bnZpcm9uCi0gICAgICAgICBuZXdfZW52WyJMT0dUSVRMRSJdID0gc2VsZi5sb2duYW1lCi0gICAg ICAgICBzdWJwcm9jZXNzLlBvcGVuKFsiYmFzaCIsIFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYr Ii9iYXNoL2J1Z19yZXBvcnQiXSwgZW52PW5ld19lbnYpCi0tICAgICAgICBzZWxmLnJlcG9ydFBy b2JsZW0uRW5hYmxlKEZhbHNlKQotKyAgICAgICAgIyBEb2Vzbid0IHdvcmsgaWYgY2FuY2VsIG9u IFBPTCBXaW5kb3cgOiBuZWVkIHRvIGZpbmQgYW5vdGhlciB3YXkgLi4uCi0rICAgICAgICAjc2Vs Zi5yZXBvcnRQcm9ibGVtLkVuYWJsZShGYWxzZSkKLSAKLSAgICAgZGVmIGxvY2F0ZShzZWxmLCBl dmVudCk6Ci0gICAgICAgICBpZihzZWxmLmxvZ3R5cGUgPT0gMCk6Ci1kaWZmIC0tZ2l0IGEvcHl0 aG9uL2xpYi9WYXJpYWJsZXMucHkgYi9weXRob24vbGliL1ZhcmlhYmxlcy5weQotaW5kZXggMDU1 ZmUxN2Y5Li44YmVkNzYwMWIgMTAwNzU1Ci0tLS0gYS9weXRob24vbGliL1ZhcmlhYmxlcy5weQot KysrIGIvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkKLUBAIC01MSw3ICs1MSw3IEBACi0gICAgICAg ICB3aW5kb3dzX2FkZF9zaXplID0gMAotICAgICAgICAgd2luZG93c19hZGRfcGxheW9ubWFjID0g MAotICAgICBlbHNlOgotLSAgICAgICAgd2luZG93c19hZGRfc2l6ZSA9IGRwaUZldGNoZXIoKS5m ZXRjaF9leHRyYV9waXhlbCgpCi0rICAgICAgICB3aW5kb3dzX2FkZF9zaXplID0gZHBpRmV0Y2hl cigpLmZldGNoX2V4dHJhX3BpeGVsKCkrNjAKLSAgICAgICAgIHdpbmRvd3NfYWRkX3BsYXlvbm1h YyA9IDAKLSAKLSAgICAgd2lkZ2V0X2JvcmRlcnMgPSB3eC5SQUlTRURfQk9SREVSCi0KLUZyb20g MDJiZWFiMDVkNDI1NTgwMmMyNmRiMjBhMTg3ODczNDllOWIxNWJiYyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IEdpbGxlcyA8Z2lsbGVzLndpYmVyQGdtYWlsLmNvbT4KLURhdGU6IFNh dCwgMzAgTWF5IDIwMjAgMTU6MTc6MzMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8zM10gU29s dmluZyBzbWFsbCBidWdzCi0KLS0tLQotIHB5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJl V2luZG93Tm90ZWJvb2sucHkgfCAyICsrCi0gcHl0aG9uL2luc3RhbGwvSW5zdGFsbFdpbmRvdy5w eSAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9u cygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL2NvbmZpZ3VyZXdpbmRv dy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5weSBiL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29u ZmlndXJlV2luZG93Tm90ZWJvb2sucHkKLWluZGV4IDk3M2Q5YmJkMy4uMjk2NDQzZTY2IDEwMDY0 NAotLS0tIGEvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5w eQotKysrIGIvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5w eQotQEAgLTQ2Nyw2ICs0NjcsOCBAQCBkZWYgbWlzY19idXR0b24oc2VsZiwgZXZlbnQpOgotICAg ICAgICAgICAgIHNlbGYuRmlsZURpYWxvZy5TaG93TW9kYWwoKQotICAgICAgICAgICAgIGlmIChz ZWxmLkZpbGVEaWFsb2cuR2V0UGF0aCgpICE9ICIiKToKLSAgICAgICAgICAgICAgICAgZmlsZW5h bWUgPSBzZWxmLkZpbGVEaWFsb2cuR2V0UGF0aCgpCi0rICAgICAgICAgICAgICAgIGlmIG5vdCBv cy5wYXRoLmlzZmlsZShmaWxlbmFtZSk6Ci0rICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAg ICAgICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKLSAgICAg ICAgICAgICAgICAgaWYgKHNlbGYuc19pc1ByZWZpeCA9PSBUcnVlKToKLSAgICAgICAgICAgICAg ICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oWyJiYXNoIiwgVmFyaWFibGVzLnBsYXlvbmxpbnV4X2Vu diArICIvYmFzaC9QT0xfQ29tbWFuZCIsICItLXByZWZpeCIsCi1kaWZmIC0tZ2l0IGEvcHl0aG9u L2luc3RhbGwvSW5zdGFsbFdpbmRvdy5weSBiL3B5dGhvbi9pbnN0YWxsL0luc3RhbGxXaW5kb3cu cHkKLWluZGV4IDViNTg0Nzc0ZC4uMmU0OWU0YTE4IDEwMDc1NQotLS0tIGEvcHl0aG9uL2luc3Rh bGwvSW5zdGFsbFdpbmRvdy5weQotKysrIGIvcHl0aG9uL2luc3RhbGwvSW5zdGFsbFdpbmRvdy5w eQotQEAgLTMzMyw3ICszMzMsNyBAQCBkZWYgY2xvc2VhcHAoc2VsZiwgZXZlbnQpOgotIAotICAg ICBkZWYgbWFudWFsKHNlbGYsIGV2ZW50KToKLSAgICAgICAgIHNlbGYubGl2ZSA9IDEKLS0gICAg ICAgIHNlbGYuaW5zdGFsbGFwcChzZWxmKQotKyAgICAgICAgc2VsZi5pbnN0YWxsYXBwKGV2ZW50 KQotIAotICAgICBkZWYgc2hvd1N0YXJzKHNlbGYsIHN0YXJzKToKLSAgICAgICAgIHN0YXJXaWR0 aCA9IDIwCi0KLUZyb20gZTNhOTI0ZmNmNGZmMzQwOWQzMWYwOTU2ZDM4MDJkNmE2NTk1NmFlMiBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG92YXJpIDwxNzQ2NTg3MitvdmFyaUB1c2Vy cy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBGcmksIDI0IEp1bCAyMDIwIDE5OjQyOjUwICsx MDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMzNdIFVwZGF0ZSBSRUFETUUubWQKLQotLS0tCi0gUkVB RE1FLm1kIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkK LQotZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAotaW5kZXggOWI2Y2EzMWNhLi45 Nzc5NWM0MjcgMTAwNjQ0Ci0tLS0gYS9SRUFETUUubWQKLSsrKyBiL1JFQURNRS5tZAotQEAgLTEs MjggKzEsNDcgQEAKLS1QT0wtUE9NLTQKLS09PT09PT09PT0KLSsjIFBsYXlPbkxpbnV4IGFuZCBQ bGF5T25NYWMgNCAoUE9MLVBPTS00KQotIAotLVBsYXlPbkxpbnV4IDQgcmVwb3NpdG9yeQotLU5v dGU6IFBsYXlPbkxpbnV4IDUgaXMgY3VycmVudGx5IHVuZGVyIGRldmVsb3BtZW50LiBQbGVhc2Ug Y2xvbmUgUE9MLVBPTS01IHJlcG9zaXRvcnkgaWYgeW91IHdhbnQgdG8gY29udHJpYnV0ZQotK05v dGU6IFtQaG9lbmljaXMgUGxheU9uTGludXggYW5kIFBsYXlPbk1hYyA1XShodHRwczovL3d3dy5w aG9lbmljaXMub3JnLykgaXMgY3VycmVudGx5IHVuZGVyIGRldmVsb3BtZW50LiBQbGVhc2UgY2xv bmUgW1Bob2VuaWNpcyBQbGF5T25MaW51eCBhbmQgUGxheU9uTWFjIDUgcmVwb3NpdG9yeV0oaHR0 cHM6Ly9naXRodWIuY29tL1Bob2VuaWNpc09yZy9waG9lbmljaXMpIGlmIHlvdSB3YW50IHRvIGNv bnRyaWJ1dGUuCi0gCi0tV2hhdCBpcyBQbGF5T25MaW51eD8KLS09PT09PT09PT09PT09PT09PT09 PT0KLStQbGF5T25MaW51eCBhbmQgUGxheU9uTWFjIDQgYWxsb3dzIHlvdSB0byBpbnN0YWxsIGFu ZCB1c2Ugbm9uLW5hdGl2ZSBhcHBsaWNhdGlvbnMgb24geW91ciBmYXZvcml0ZSBvcGVyYXRpbmcg c3lzdGVtLgotKwotK1N1cHBvcnRlZCBvcGVyYXRpbmcgc3lzdGVtczoKLSsKLSsqIExpbnV4Ci0r KiBNYWMgT1NYCi0rCi0rU3VwcG9ydGVkIGVuZ2luZXM6Ci0rCi0rKiBbV2luZV0oaHR0cHM6Ly93 d3cud2luZWhxLm9yZy8pCi0rCi0rCi0rIyBXaGF0IGlzIFBsYXlPbkxpbnV4PwotIAotIFBsYXlP bkxpbnV4IGlzIGEgcGllY2Ugb2Ygc29mdHdhcmUgd2hpY2ggYWxsb3dzIHlvdSB0byBlYXNpbHkg aW5zdGFsbCBhbmQgdXNlIG51bWVyb3VzIGdhbWVzIGFuZCBhcHBzIGRlc2lnbmVkIHRvIHJ1biB3 aXRoIE1pY3Jvc29mdMKuIFdpbmRvd3PCri4KLSsKLSBGZXcgZ2FtZXMgYXJlIGNvbXBhdGlibGUg d2l0aCBHTlUvTGludXggYXQgdGhlIG1vbWVudCBhbmQgaXQgY2VydGFpbmx5IGlzIGEgZmFjdG9y IHByZXZlbnRpbmcgdGhlIG1pZ3JhdGlvbiB0byB0aGlzIHN5c3RlbS4gUGxheU9uTGludXggYnJp bmdzIGEgY29zdC1mcmVlLCBhY2Nlc3NpYmxlIGFuZCBlZmZpY2llbnQgc29sdXRpb24gdG8gdGhp cyBwcm9ibGVtLgotIAotIAotLVdoYXQgYXJlIFBsYXlPbkxpbnV4J3MgZmVhdHVyZXM/Ci0tPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsjIFdoYXQgYXJlIFBsYXlPbkxpbnV4J3Mg ZmVhdHVyZXM/Ci0gCi0gSGVyZSBpcyBhIG5vbi1leGhhdXN0aXZlIGxpc3Qgb2YgdGhlIGludGVy ZXN0aW5nIHBvaW50cyB0byBrbm93OgotKyogWW91IGRvbid0IGhhdmUgdG8gb3duIGEgV2luZG93 cyBsaWNlbnNlIHRvIHVzZSBQbGF5T25MaW51eC4KLSsqIFBsYXlPbkxpbnV4IGlzIGJhc2VkIG9u IFtXaW5lXShodHRwczovL3d3dy53aW5laHEub3JnLyksIGFuZCBzbyBwcm9maXRzIGZyb20gYWxs IGl0cyBmZWF0dXJlcyB5ZXQgaXQga2VlcHMgdGhlIHVzZXIgZnJvbSBoYXZpbmcgdG8gZGVhbCB3 aXRoIGl0cyBjb21wbGV4aXR5LgotKyogUGxheU9uTGludXggaXMgZnJlZSBzb2Z0d2FyZS4KLSsq IFBsYXlPbkxpbnV4IHVzZXMgW0Jhc2hdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jh c2hfJTI4VW5peF9zaGVsbCUyOSkgYW5kIFtQeXRob25dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9y Zy93aWtpL1B5dGhvbl8ocHJvZ3JhbW1pbmdfbGFuZ3VhZ2UpKS4KLSAKLS1Zb3UgZG9uJ3QgaGF2 ZSB0byBvd24gYSBXaW5kb3dzIGxpY2Vuc2UgdG8gdXNlIFBsYXlPbkxpbnV4LgotLVBsYXlPbkxp bnV4IGlzIGJhc2VkIG9uIFdpbmUsIGFuZCBzbyBwcm9maXRzIGZyb20gYWxsIGl0cyBmZWF0dXJl cyB5ZXQgaXQga2VlcHMgdGhlIHVzZXIgZnJvbSBoYXZpbmcgdG8gZGVhbCB3aXRoIGl0cyBjb21w bGV4aXR5LgotLVBsYXlPbkxpbnV4IGlzIGZyZWUgc29mdHdhcmUuCi0tUGxheU9uTGludXggdXNl cyBCYXNoIGFuZCBQeXRob24uCi0gTmV2ZXJ0aGVsZXNzLCBQbGF5T25MaW51eCBoYXMgc29tZSBi dWdzLCBhcyBldmVyeSBwaWVjZSBvZiBzb2Z0d2FyZToKLS0KLS1PY2Nhc2lvbmFsIHBlcmZvcm1h bmNlIGRlY3JlYXNlIChpbWFnZSBtYXkgYmUgbGVzcyBmbHVpZCBhbmQgZ3JhcGhpY3MgbGVzcyBk ZXRhaWxlZCkuCi0tTm90IGFsbCBnYW1lcyBhcmUgc3VwcG9ydGVkLiBOZXZlcnRoZWxlc3MsIHlv dSBjYW4gdXNlIG91ciBtYW51YWwgaW5zdGFsbGF0aW9uIG1vZHVsZS4KLSsqIE9jY2FzaW9uYWwg cGVyZm9ybWFuY2UgZGVjcmVhc2UgKGltYWdlIG1heSBiZSBsZXNzIGZsdWlkIGFuZCBncmFwaGlj cyBsZXNzIGRldGFpbGVkKS4KLSsqIE5vdCBhbGwgZ2FtZXMgYXJlIHN1cHBvcnRlZC4gTmV2ZXJ0 aGVsZXNzLCB5b3UgY2FuIHVzZSBvdXIgbWFudWFsIGluc3RhbGxhdGlvbiBtb2R1bGUuCi0gCi0g Rm9yIG1vcmUgaW5mb3JtYXRpb24sIHZpc2l0IGh0dHA6Ly93d3cucGxheW9ubGludXguY29tCi0r Ci0rCi0rIyMgVHJhbnNsYXRlCi0rUGxheU9uTGludXgvUGxheU9uTWFjIDQgaXMgbG9jYWxpemVk IHVzaW5nIExhdW5jaHBhZDogaHR0cHM6Ly90cmFuc2xhdGlvbnMubGF1bmNocGFkLm5ldC9wbGF5 b25saW51eAotK0lmIHlvdXIgbGFuZ3VhZ2UgaXMgbm90IGxpc3RlZCwgcGxlYXNlIGNyZWF0ZSBh biBbaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9QbGF5T25MaW51eC9QT0wtUE9NLTQvaXNzdWVz KS4KLSsKLSsKLSsjIyBDb21tdW5pdHkKLSsqIElzc3VlcyBvciBpZGVhczogaHR0cHM6Ly9naXRo dWIuY29tL1Bob2VuaWNpc09yZy9waG9lbmljaXMvaXNzdWVzCi0rKiBGb3J1bXMgOiBodHRwOi8v d3d3LnBsYXlvbmxpbnV4LmNvbS9lbi9mb3J1bXMuaHRtbAotKyogU2xhY2sgOiBodHRwczovL2pv aW4uc2xhY2suY29tL3Bob2VuaWNpcy1vcmcvc2hhcmVkX2ludml0ZS9NVGt6TVRNd01qTTNNamN4 TFRFME9UWTFNVFF6TnprdFkySXpPVEUyTm1FM05BCi0KLUZyb20gMmZiMTNlMzI4ODYxMjY0ZWUz YTRmNmQ4OTc5YmIxZWUwMThjZWE3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG92 YXJpIDwxNzQ2NTg3MitvdmFyaUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBGcmks IDI0IEp1bCAyMDIwIDE5OjQ0OjE2ICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMzNdIFVwZGF0 ZSBSRUFETUUubWQKLQotLS0tCi0gUkVBRE1FLm1kIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQs IDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL1JFQURNRS5t ZCBiL1JFQURNRS5tZAotaW5kZXggOTc3OTVjNDI3Li5jMWU5ZWQwMzMgMTAwNjQ0Ci0tLS0gYS9S RUFETUUubWQKLSsrKyBiL1JFQURNRS5tZAotQEAgLTIxLDEwICsyMSwxMCBAQCBQbGF5T25MaW51 eCBpcyBhIHBpZWNlIG9mIHNvZnR3YXJlIHdoaWNoIGFsbG93cyB5b3UgdG8gZWFzaWx5IGluc3Rh bGwgYW5kIHVzZSBudQotIEZldyBnYW1lcyBhcmUgY29tcGF0aWJsZSB3aXRoIEdOVS9MaW51eCBh dCB0aGUgbW9tZW50IGFuZCBpdCBjZXJ0YWlubHkgaXMgYSBmYWN0b3IgcHJldmVudGluZyB0aGUg bWlncmF0aW9uIHRvIHRoaXMgc3lzdGVtLiBQbGF5T25MaW51eCBicmluZ3MgYSBjb3N0LWZyZWUs IGFjY2Vzc2libGUgYW5kIGVmZmljaWVudCBzb2x1dGlvbiB0byB0aGlzIHByb2JsZW0uCi0gCi0g Ci0tIyBXaGF0IGFyZSBQbGF5T25MaW51eCdzIGZlYXR1cmVzPwotKyMgV2hhdCBhcmUgUGxheU9u TGludXjigJlzIGZlYXR1cmVzPwotIAotIEhlcmUgaXMgYSBub24tZXhoYXVzdGl2ZSBsaXN0IG9m IHRoZSBpbnRlcmVzdGluZyBwb2ludHMgdG8ga25vdzoKLS0qIFlvdSBkb24ndCBoYXZlIHRvIG93 biBhIFdpbmRvd3MgbGljZW5zZSB0byB1c2UgUGxheU9uTGludXguCi0rKiBZb3UgZG9u4oCZdCBo YXZlIHRvIG93biBhIFdpbmRvd3MgbGljZW5zZSB0byB1c2UgUGxheU9uTGludXguCi0gKiBQbGF5 T25MaW51eCBpcyBiYXNlZCBvbiBbV2luZV0oaHR0cHM6Ly93d3cud2luZWhxLm9yZy8pLCBhbmQg c28gcHJvZml0cyBmcm9tIGFsbCBpdHMgZmVhdHVyZXMgeWV0IGl0IGtlZXBzIHRoZSB1c2VyIGZy b20gaGF2aW5nIHRvIGRlYWwgd2l0aCBpdHMgY29tcGxleGl0eS4KLSAqIFBsYXlPbkxpbnV4IGlz IGZyZWUgc29mdHdhcmUuCi0gKiBQbGF5T25MaW51eCB1c2VzIFtCYXNoXShodHRwczovL2VuLndp a2lwZWRpYS5vcmcvd2lraS9CYXNoXyUyOFVuaXhfc2hlbGwlMjkpIGFuZCBbUHl0aG9uXShodHRw czovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QeXRob25fKHByb2dyYW1taW5nX2xhbmd1YWdlKSku Ci0KLUZyb20gZjQyMjlhYzgzMDE1YTU4M2QwYzBlNDU0NDVkMjhlZTMzMjMyMTM1NiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG92YXJpIDwxNzQ2NTg3MitvdmFyaUB1c2Vycy5ub3Jl cGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBGcmksIDI0IEp1bCAyMDIwIDE5OjQ1OjExICsxMDAwCi1T dWJqZWN0OiBbUEFUQ0ggMDgvMzNdIFVwZGF0ZSBSRUFETUUubWQKLQotLS0tCi0gUkVBRE1FLm1k IHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKLWluZGV4IGMxZTllZDAz My4uNzVmYmM1ZmFlIDEwMDY0NAotLS0tIGEvUkVBRE1FLm1kCi0rKysgYi9SRUFETUUubWQKLUBA IC02LDggKzYsOSBAQCBQbGF5T25MaW51eCBhbmQgUGxheU9uTWFjIDQgYWxsb3dzIHlvdSB0byBp bnN0YWxsIGFuZCB1c2Ugbm9uLW5hdGl2ZSBhcHBsaWNhdGlvbgotIAotIFN1cHBvcnRlZCBvcGVy YXRpbmcgc3lzdGVtczoKLSAKLS0qIExpbnV4Ci0tKiBNYWMgT1NYCi0rKiBHTlUvTGludXgKLSsq IE1hYyBPUyBYCi0rKiBtYWNPUwotIAotIFN1cHBvcnRlZCBlbmdpbmVzOgotIAotCi1Gcm9tIDY0 ODBlNjk0MTU0ZjRmMjRjNGJmMzFiYWJjN2U5MjcxNTc0ZTA0Y2EgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBvdmFyaSA8MTc0NjU4NzIrb3ZhcmlAdXNlcnMubm9yZXBseS5naXRodWIu Y29tPgotRGF0ZTogRnJpLCAyNCBKdWwgMjAyMCAxOTo0OTozMSArMTAwMAotU3ViamVjdDogW1BB VENIIDA5LzMzXSBVcGRhdGUgUkVBRE1FLm1kCi0KLS0tLQotIFJFQURNRS5tZCB8IDcgKysrLS0t LQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRp ZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKLWluZGV4IDc1ZmJjNWZhZS4uMGQ2NGE1 OTYyIDEwMDY0NAotLS0tIGEvUkVBRE1FLm1kCi0rKysgYi9SRUFETUUubWQKLUBAIC02LDkgKzYs OCBAQCBQbGF5T25MaW51eCBhbmQgUGxheU9uTWFjIDQgYWxsb3dzIHlvdSB0byBpbnN0YWxsIGFu ZCB1c2Ugbm9uLW5hdGl2ZSBhcHBsaWNhdGlvbgotIAotIFN1cHBvcnRlZCBvcGVyYXRpbmcgc3lz dGVtczoKLSAKLS0qIEdOVS9MaW51eAotLSogTWFjIE9TIFgKLS0qIG1hY09TCi0rKiBbR05VL0xp bnV4XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW51eCkKLSsqIFttYWNPU10oaHR0 cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXBwbGVfTWFjaW50b3NoX09TX1gpCi0gCi0gU3Vw cG9ydGVkIGVuZ2luZXM6Ci0gCi1AQCAtMjUsNyArMjQsNyBAQCBGZXcgZ2FtZXMgYXJlIGNvbXBh dGlibGUgd2l0aCBHTlUvTGludXggYXQgdGhlIG1vbWVudCBhbmQgaXQgY2VydGFpbmx5IGlzIGEg ZmFjdAotICMgV2hhdCBhcmUgUGxheU9uTGludXjigJlzIGZlYXR1cmVzPwotIAotIEhlcmUgaXMg YSBub24tZXhoYXVzdGl2ZSBsaXN0IG9mIHRoZSBpbnRlcmVzdGluZyBwb2ludHMgdG8ga25vdzoK LS0qIFlvdSBkb27igJl0IGhhdmUgdG8gb3duIGEgV2luZG93cyBsaWNlbnNlIHRvIHVzZSBQbGF5 T25MaW51eC4KLSsqIFlvdSBkb27igJl0IGhhdmUgdG8gb3duIGEgW01pY3Jvc29mdCBXaW5kb3dz XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWNyb3NvZnRfV2luZG93cykgbGljZW5z ZSB0byB1c2UgUGxheU9uTGludXguCi0gKiBQbGF5T25MaW51eCBpcyBiYXNlZCBvbiBbV2luZV0o aHR0cHM6Ly93d3cud2luZWhxLm9yZy8pLCBhbmQgc28gcHJvZml0cyBmcm9tIGFsbCBpdHMgZmVh dHVyZXMgeWV0IGl0IGtlZXBzIHRoZSB1c2VyIGZyb20gaGF2aW5nIHRvIGRlYWwgd2l0aCBpdHMg Y29tcGxleGl0eS4KLSAqIFBsYXlPbkxpbnV4IGlzIGZyZWUgc29mdHdhcmUuCi0gKiBQbGF5T25M aW51eCB1c2VzIFtCYXNoXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNoXyUyOFVu aXhfc2hlbGwlMjkpIGFuZCBbUHl0aG9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Q eXRob25fKHByb2dyYW1taW5nX2xhbmd1YWdlKSkuCi0KLUZyb20gYzQ2NjkzMDVmMjU2YzRjMTZi YzY4YTM1MzIzOWNiYzhjNWRhZTdiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG92 YXJpIDwxNzQ2NTg3MitvdmFyaUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBGcmks IDI0IEp1bCAyMDIwIDE5OjUwOjMxICsxMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMzNdIFVwZGF0 ZSBSRUFETUUubWQKLQotLS0tCi0gUkVBRE1FLm1kIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIv UkVBRE1FLm1kCi1pbmRleCAwZDY0YTU5NjIuLjU3ZmFkZmJiNiAxMDA2NDQKLS0tLSBhL1JFQURN RS5tZAotKysrIGIvUkVBRE1FLm1kCi1AQCAtMjYsNyArMjYsNyBAQCBGZXcgZ2FtZXMgYXJlIGNv bXBhdGlibGUgd2l0aCBHTlUvTGludXggYXQgdGhlIG1vbWVudCBhbmQgaXQgY2VydGFpbmx5IGlz IGEgZmFjdAotIEhlcmUgaXMgYSBub24tZXhoYXVzdGl2ZSBsaXN0IG9mIHRoZSBpbnRlcmVzdGlu ZyBwb2ludHMgdG8ga25vdzoKLSAqIFlvdSBkb27igJl0IGhhdmUgdG8gb3duIGEgW01pY3Jvc29m dCBXaW5kb3dzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWNyb3NvZnRfV2luZG93 cykgbGljZW5zZSB0byB1c2UgUGxheU9uTGludXguCi0gKiBQbGF5T25MaW51eCBpcyBiYXNlZCBv biBbV2luZV0oaHR0cHM6Ly93d3cud2luZWhxLm9yZy8pLCBhbmQgc28gcHJvZml0cyBmcm9tIGFs bCBpdHMgZmVhdHVyZXMgeWV0IGl0IGtlZXBzIHRoZSB1c2VyIGZyb20gaGF2aW5nIHRvIGRlYWwg d2l0aCBpdHMgY29tcGxleGl0eS4KLS0qIFBsYXlPbkxpbnV4IGlzIGZyZWUgc29mdHdhcmUuCi0r KiBQbGF5T25MaW51eCBpcyBbZnJlZSBzb2Z0d2FyZV0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3Jn L3dpa2kvRnJlZV9zb2Z0d2FyZSkuCi0gKiBQbGF5T25MaW51eCB1c2VzIFtCYXNoXShodHRwczov L2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNoXyUyOFVuaXhfc2hlbGwlMjkpIGFuZCBbUHl0aG9u XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QeXRob25fKHByb2dyYW1taW5nX2xhbmd1 YWdlKSkuCi0gCi0gTmV2ZXJ0aGVsZXNzLCBQbGF5T25MaW51eCBoYXMgc29tZSBidWdzLCBhcyBl dmVyeSBwaWVjZSBvZiBzb2Z0d2FyZToKLQotRnJvbSBhNmNjMjNkNDMzNzVmY2EwZTI4ZTkwMGEx MTBkMTk1YmUyNTFlZTIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogb3ZhcmkgPDE3 NDY1ODcyK292YXJpQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IEZyaSwgMjQgSnVs IDIwMjAgMjA6MTI6MzYgKzEwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8zM10gVXBkYXRlIFJFQURN RS5tZAotCi0tLS0KLSBSRUFETUUubWQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0 aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUu bWQKLWluZGV4IDU3ZmFkZmJiNi4uMGZlNzlmM2ZhIDEwMDY0NAotLS0tIGEvUkVBRE1FLm1kCi0r KysgYi9SRUFETUUubWQKLUBAIC03LDcgKzcsNyBAQCBQbGF5T25MaW51eCBhbmQgUGxheU9uTWFj IDQgYWxsb3dzIHlvdSB0byBpbnN0YWxsIGFuZCB1c2Ugbm9uLW5hdGl2ZSBhcHBsaWNhdGlvbgot IFN1cHBvcnRlZCBvcGVyYXRpbmcgc3lzdGVtczoKLSAKLSAqIFtHTlUvTGludXhdKGh0dHBzOi8v ZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpbnV4KQotLSogW21hY09TXShodHRwczovL2VuLndpa2lw ZWRpYS5vcmcvd2lraS9BcHBsZV9NYWNpbnRvc2hfT1NfWCkKLSsqIFttYWNPU10oaHR0cHM6Ly9l bi53aWtpcGVkaWEub3JnL3dpa2kvTWFjT1MpCi0gCi0gU3VwcG9ydGVkIGVuZ2luZXM6Ci0gCi0K LUZyb20gMDhlODdlZDBhNzhiMGM3NzQzOTM1Y2QzOWIzNTVkYjMwMzE1NzM1NCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IG92YXJpIDwxNzQ2NTg3MitvdmFyaUB1c2Vycy5ub3JlcGx5 LmdpdGh1Yi5jb20+Ci1EYXRlOiBTYXQsIDI1IEp1bCAyMDIwIDE4OjMxOjEwICsxMDAwCi1TdWJq ZWN0OiBbUEFUQ0ggMTIvMzNdIFVwZGF0ZSBSRUFETUUubWQKLQotLS0tCi0gUkVBRE1FLm1kIHwg OCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25z KC0pCi0KLWRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKLWluZGV4IDBmZTc5ZjNm YS4uM2QwMGU2NWMxIDEwMDY0NAotLS0tIGEvUkVBRE1FLm1kCi0rKysgYi9SRUFETUUubWQKLUBA IC02LDggKzYsOCBAQCBQbGF5T25MaW51eCBhbmQgUGxheU9uTWFjIDQgYWxsb3dzIHlvdSB0byBp bnN0YWxsIGFuZCB1c2Ugbm9uLW5hdGl2ZSBhcHBsaWNhdGlvbgotIAotIFN1cHBvcnRlZCBvcGVy YXRpbmcgc3lzdGVtczoKLSAKLS0qIFtHTlUvTGludXhdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9y Zy93aWtpL0xpbnV4KQotLSogW21hY09TXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9N YWNPUykKLSsqIEdOVS9MaW51eAotKyogbWFjT1MKLSAKLSBTdXBwb3J0ZWQgZW5naW5lczoKLSAK LUBAIC0yNCwxMCArMjQsMTAgQEAgRmV3IGdhbWVzIGFyZSBjb21wYXRpYmxlIHdpdGggR05VL0xp bnV4IGF0IHRoZSBtb21lbnQgYW5kIGl0IGNlcnRhaW5seSBpcyBhIGZhY3QKLSAjIFdoYXQgYXJl IFBsYXlPbkxpbnV44oCZcyBmZWF0dXJlcz8KLSAKLSBIZXJlIGlzIGEgbm9uLWV4aGF1c3RpdmUg bGlzdCBvZiB0aGUgaW50ZXJlc3RpbmcgcG9pbnRzIHRvIGtub3c6Ci0tKiBZb3UgZG9u4oCZdCBo YXZlIHRvIG93biBhIFtNaWNyb3NvZnQgV2luZG93c10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3Jn L3dpa2kvTWljcm9zb2Z0X1dpbmRvd3MpIGxpY2Vuc2UgdG8gdXNlIFBsYXlPbkxpbnV4LgotKyog WW91IGRvbuKAmXQgaGF2ZSB0byBvd24gYSBNaWNyb3NvZnQgV2luZG93cyBsaWNlbnNlIHRvIHVz ZSBQbGF5T25MaW51eC4KLSAqIFBsYXlPbkxpbnV4IGlzIGJhc2VkIG9uIFtXaW5lXShodHRwczov L3d3dy53aW5laHEub3JnLyksIGFuZCBzbyBwcm9maXRzIGZyb20gYWxsIGl0cyBmZWF0dXJlcyB5 ZXQgaXQga2VlcHMgdGhlIHVzZXIgZnJvbSBoYXZpbmcgdG8gZGVhbCB3aXRoIGl0cyBjb21wbGV4 aXR5LgotICogUGxheU9uTGludXggaXMgW2ZyZWUgc29mdHdhcmVdKGh0dHBzOi8vZW4ud2lraXBl ZGlhLm9yZy93aWtpL0ZyZWVfc29mdHdhcmUpLgotLSogUGxheU9uTGludXggdXNlcyBbQmFzaF0o aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzaF8lMjhVbml4X3NoZWxsJTI5KSBhbmQg W1B5dGhvbl0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHl0aG9uXyhwcm9ncmFtbWlu Z19sYW5ndWFnZSkpLgotKyogUGxheU9uTGludXggdXNlcyBCYXNoIGFuZCBQeXRob24uCi0gCi0g TmV2ZXJ0aGVsZXNzLCBQbGF5T25MaW51eCBoYXMgc29tZSBidWdzLCBhcyBldmVyeSBwaWVjZSBv ZiBzb2Z0d2FyZToKLSAqIE9jY2FzaW9uYWwgcGVyZm9ybWFuY2UgZGVjcmVhc2UgKGltYWdlIG1h eSBiZSBsZXNzIGZsdWlkIGFuZCBncmFwaGljcyBsZXNzIGRldGFpbGVkKS4KLQotRnJvbSAyYmY5 ZWQyZDMyMWEyNmI0OGRlODNhMTMwNjRmN2I5ZjBkYjBkY2Q3IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogcmF5ZGVydWEgPHJheWRlci51YUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDUg T2N0IDIwMjAgMTc6MTk6NDcgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8zM10gZml4IHNwbGl0 IHZlcnNpb24gdG8gZmlyc3QgMyBlbGVtZW50cwotCi1WYWx1ZUVycm9yOiBpbnZhbGlkIGxpdGVy YWwgZm9yIGludCgpIHdpdGggYmFzZSAxMDogJ3Bvc3QyJwotCi1WZXJzaW9ucyBjYW4gY29udGFp biBub3Qgb25seSBkaWdpdHMgKGZvciBleGFtcGxlIHd4IHJlbGVhc2VzOiA0LjAuNywgNC4wLjcu cG9zdDEsIDQuMC43LnBvc3QyLCA0LjEuMCkKLS0tLQotIHB5dGhvbi9saWIvcGxheW9ubGludXgu cHkgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQotCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weSBiL3B5dGhvbi9s aWIvcGxheW9ubGludXgucHkKLWluZGV4IDgyN2RiOTIwMi4uM2U4N2Q5MGFhIDEwMDc1NQotLS0t IGEvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weQotKysrIGIvcHl0aG9uL2xpYi9wbGF5b25saW51 eC5weQotQEAgLTI3OCwxMSArMjc4LDExIEBAIGRlZiBWZXJzaW9uTG93ZXIodmVyc2lvbjEsIHZl cnNpb24yKToKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gCi0t ICAgIHZlcnNpb24xID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMVswXS5zcGxp dCgiLiIpIF0KLSsgICAgdmVyc2lvbjEgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNp b24xWzBdLnNwbGl0KCIuIilbOjNdIF0KLSAgICAgd2hpbGUgbGVuKHZlcnNpb24xKSA8IDM6Ci0g ICAgICAgICB2ZXJzaW9uMS5hcHBlbmQoMCkKLSAKLS0gICAgdmVyc2lvbjIgPSBbIGludChkaWdp dCkgZm9yIGRpZ2l0IGluIHZlcnNpb24yWzBdLnNwbGl0KCIuIikgXQotKyAgICB2ZXJzaW9uMiA9 IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjJbMF0uc3BsaXQoIi4iKVs6M10gXQot ICAgICB3aGlsZSBsZW4odmVyc2lvbjIpIDwgMzoKLSAgICAgICAgIHZlcnNpb24yLmFwcGVuZCgw KQotIAotCi1Gcm9tIDZhOWJmYWExZGM0ZjUzN2YyZWUwM2I5YWM5OWFkZjZmZThmMmYwNDcgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpc0I4NSA8a3J6eXN6dG9mLmJsYWNob3dp Y3pAZ21haWwuY29tPgotRGF0ZTogVHVlLCAyMCBPY3QgMjAyMCAxODoxMDozNCArMDIwMAotU3Vi amVjdDogW1BBVENIIDE0LzMzXSBQb2xpc2ggdHJhbnNsYXRpb25zCi0KLS0tLQotIGxhbmcvcG8v cGwucG8gfCAxMDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0p Ci0KLWRpZmYgLS1naXQgYS9sYW5nL3BvL3BsLnBvIGIvbGFuZy9wby9wbC5wbwotaW5kZXggYWU2 OWY0OTdlLi5mMDQ3YjViNDQgMTAwNjQ0Ci0tLS0gYS9sYW5nL3BvL3BsLnBvCi0rKysgYi9sYW5n L3BvL3BsLnBvCi1AQCAtMTEsMjIgKzExLDIyIEBAIG1zZ3N0ciAiIgotICJQcm9qZWN0LUlkLVZl cnNpb246IHBvbFxuIgotICJSZXBvcnQtTXNnaWQtQnVncy1UbzogVGlub3VcbiIKLSAiUE9ULUNy ZWF0aW9uLURhdGU6IDIwMTUtMDgtMzEgMTk6MDArMDIwMFxuIgotLSJQTy1SZXZpc2lvbi1EYXRl OiAyMDE0LTA0LTIzIDEzOjM1KzAwMDBcbiIKLSsiUE8tUmV2aXNpb24tRGF0ZTogMjAyMC0xMC0y MCAxODowOSswMjAwXG4iCi0gIkxhc3QtVHJhbnNsYXRvcjogQWRhbSBNYcSHa293aWFrIDxVbmtu b3duPlxuIgotICJMYW5ndWFnZS1UZWFtOiBwbF9QTC5VVEYtOCA8TExAbGkub3JnPlxuIgotICJN SU1FLVZlcnNpb246IDEuMFxuIgotICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9 VVRGLThcbiIKLSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgotICJYLUxhdW5j aHBhZC1FeHBvcnQtRGF0ZTogMjAxNS0wOS0wMSAwNToxMiswMDAwXG4iCi0tIlgtR2VuZXJhdG9y OiBMYXVuY2hwYWQgKGJ1aWxkIDE3NjkwKVxuIgotKyJYLUdlbmVyYXRvcjogUG9lZGl0IDIuM1xu IgotKyJMYW5ndWFnZTogcGxcbiIKLSAKLSAjOiBDYXB0dXJlIHBsdWdpbjoyLCBEZXRvdXIgcGx1 Z2luOjQKLSBtc2dpZCAiV2hpY2ggYXBwbGljYXRpb24gZG8geW91IHdhbnQgdG8gYXBwbHkgdGhl IG1vZGlmaWNhdGlvbiB0bz8iCi0gbXNnc3RyICJEbyBqYWtpZWogYXBsaWthY2ppIGNoY2VzeiB3 eWtvbmHEhyBtb2R5ZmlrYWNqZT8iCi0gCi0gIzogQ2FwdHVyZSBwbHVnaW46MwotLW1zZ2lkICIi Ci0tIlRoaXMgcGx1Z2luIHdpbCBhbGxvdyB5b3UgdG8gY2FwdHVyZSB5b3UgYXBwbGljYXRpb25z IHVuZGVyIFBsYXlPbkxpbnV4IgotK21zZ2lkICJUaGlzIHBsdWdpbiB3aWwgYWxsb3cgeW91IHRv IGNhcHR1cmUgeW91IGFwcGxpY2F0aW9ucyB1bmRlciBQbGF5T25MaW51eCIKLSBtc2dzdHIgIld0 eWN6a2EgdW1vxbxsaXdpYSBwcnplY2h3eXR5d2FuaWUgb2JyYXp1IHogYXBsaWthY2ppIHBvZCBQ bGF5T25MaW51eCIKLSAKLSAjOiBDYXB0dXJlIHBsdWdpbjo0Ci1AQCAtNTYsOCArNTYsOCBAQCBt c2dpZCAiIgotICJzdGFydCBhdXRvbWF0aWNhbGx5IGFmdGVyIDUgc2Vjb25kcy5cXG5Pbmx5IHZp ZGVvIHdpbGwgYmUgY2FwdHVyZWQuIgotIG1zZ3N0ciAiIgotICJQcm9zesSZIHdjaXNuxIXEhyBE YWxlaiwgbmFzdMSZcG5pZSBrbGlrbsSFxIdcXG53IG9rbm8gcHJvZ3JhbXUsIGt0w7NyZSBjaGNl c3ogIgotLSJwcnplY2h3eWNpxIcuXFxuTmFncnl3YW5pZSByb3pwb2N6bmllIHNpxJkgYXV0b21h dHljem5pZSBwbyA1IHNla3VuZGFjaC5cXCIKLS0ibk5hZ3Jhbnkgem9zdGFuaWUgd3nFgsSFY3pu aWUgb2JyYXouIgotKyJwcnplY2h3eWNpxIcuXFxuTmFncnl3YW5pZSByb3pwb2N6bmllIHNpxJkg YXV0b21hdHljem5pZSBwbyA1IHNla3VuZGFjaC4iCi0rIlxcbk5hZ3Jhbnkgem9zdGFuaWUgd3nF gsSFY3puaWUgb2JyYXouIgotIAotICM6IENhcHR1cmUgcGx1Z2luOjEwCi0gbXNnaWQgIkNhcHR1 cmUgd2lsbCBiZWdpbi4uLiIKLUBAIC0zMDksNyArMzA5LDcgQEAgbXNnc3RyICJEb2vFgmFkbnkg b3BpcyBqZXN0IHd5bWFnYW55LiIKLSAjOiBiYXNoL2J1Z19yZXBvcnQ6MTAxCi0gIywgc2gtZm9y bWF0Ci0gbXNnaWQgIlRoYW5rIHlvdSAhXFxuXFxuWW91ciByZXBvcnQgaGFzIGJlZW4gc2VudC4i Ci0tbXNnc3RyICIiCi0rbXNnc3RyICJEemnEmWt1amVteSAhXFxuXFxuVHdvamUgemfFgm9zemVu aWUgem9zdGHFgm8gd3lzxYJhbmUuIgotIAotICM6IGJhc2gvY3JlYXRlX3ByZWZpeDoyNgotICMs IHNoLWZvcm1hdAotQEAgLTQ1OCw2ICs0NTgsOSBAQCBtc2dpZCAiIgotICJhbGwgdGhlIHRvb2xz XFxuXFxuV2FybmluZzogV2UgYXJlIHVuYWJsZSB0byBndWFyYW50ZWUgdGhhdCB5b3VyIGFwcGxp Y2F0aW9uICIKLSAid2lsbCB3b3JrIHBlcmZlY3RseS4iCi0gbXNnc3RyICIiCi0rIldpdGFteSB3 IGtyZWF0b3J6ZSBpbnN0YWxhY2ppIHLEmWN6bmVqICRBUFBMSUNBVElPTl9USVRMRS5cXG5cXG5L cmVhdG9yIHRlbiAiCi0rInBvendvbGkgQ2kgemFpbnN0YWxvd2HEhyBrYcW8ZHkgcHJvZ3JhbSB3 ICRBUFBMSUNBVElPTl9USVRMRVxcblxcblV3YWdhOiBOaWUgIgotKyJtb8W8ZW15IHphZ3dhcmFu dG93YcSHLCDFvGUgdHdvamEgYXBsaWthY2phIGLEmWR6aWUgZHppYcWCYcSHIHBvcHJhd25pZS4i Ci0gCi0gIzogYmFzaC9tYW51YWxfaW5zdGFsbDoxMDIKLSAjLCBzaC1mb3JtYXQKLUBAIC03MDcs OCArNzEwLDggQEAgbXNnaWQgIiIKLSAidG9vbCBPTkxZIGlmIHlvdSBDRC1ST00gaXMgYSBoeWJy aWRlIENELVJPTSAoQ29tcGF0aWJsZSB3aXRoIFdpbmRvd3MgYW5kICIKLSAiTWFjT1MpLCBhbmQg aWYgeW91IGFyZSBub3QgYWJsZSB0byBzZWUgdGhlIFdpbmRvd3MgcGFydCIKLSBtc2dzdHIgIiIK LS0iRHppxJlraSB0ZW11IG5hcnrEmWR6aSB0d8OzaiBNYWMgYsSZZHppZSB3IHN0YW5pZSBwcnpl Y3p5dGHEhyBjesSZxZvEhyBDRC1ST011XFwiCi0tIm5wcnplem5hY3pvbmVnbyBkbGEga29tcHV0 ZXLDs3cgUEMuXFxuXFxuVcW8eWogdGVnbyBuYXJ6xJlkemlhIFRZTEtPIGplxbxlbGkgIgotKyJE emnEmWtpIHRlbXUgbmFyesSZZHppIHR3w7NqIE1hYyBixJlkemllIHcgc3RhbmllIHByemVjenl0 YcSHIGN6xJnFm8SHIENELVJPTXUiCi0rIlxcbnByemV6bmFjem9uZWdvIGRsYSBrb21wdXRlcsOz dyBQQy5cXG5cXG5Vxbx5aiB0ZWdvIG5hcnrEmWR6aWEgVFlMS08gamXFvGVsaSAiCi0gInBvc2lh ZGFzeiBoeWJyeWRvd3kgQ0QtUk9NIChrb21wYXR5YmlsbnkgeiBXaW5kb3dzIGkgTWFjT1MpXFxu aSB0eWxrbyB3dGVkeSAiCi0gImdkeSBuaWUgamVzdGXFmyB3IHN0YW5pZSB6b2JhY3p5xIcgY3rE mcWbY2kgZGxhIFdpbmRvd3NhLiIKLSAKLUBAIC03NjIsMTYgKzc2NSwxOCBAQCBtc2dpZCAiIgot ICIkUEFDS0FHRSBjcmFzaGVkLlxcblNlbGVjdCBpdHMgc2hvcnRjdXQgYW5kIGNsaWNrIG9uIFwi RGVidWdcIiBpbiB0aGUgc2lkZSAiCi0gInBhbmVsIHRvIGdldCBtb3JlIGRldGFpbHMuIgotIG1z Z3N0ciAiIgotKyIkUEFDS0FHRSB1bGVnxYIgYXdhcmlpLlxcblphem5hY3ogamVnbyBza3LDs3Qg aSBrbGlrbmlqIFwiRGVidWd1alwiIHcgcGFuZWx1ICIKLSsiYm9jem55bSBhYnkgcG96bmHEhyBz emN6ZWfDs8WCeS4iCi0gCi0gIzogYmFzaC9ydW5fYXBwOjEyMAotICMsIHNoLWZvcm1hdAotIG1z Z2lkICIkUEFDS0FHRSBjcmFzaGVkLiIKLS1tc2dzdHIgIiRQQUNLQUdFIHphd2llc2nFgiBzacSZ LiIKLSttc2dzdHIgIiRQQUNLQUdFIHVsZWfFgiBhd2FyaWkuIgotIAotICM6IGJhc2gvcnVuX2V4 ZTozMwotICMsIHNoLWZvcm1hdAotIG1zZ2lkICJXYWl0aW5nIFhRdWFydHogdG8gYmUgaW5zdGFs bGVkIgotLW1zZ3N0ciAiIgotK21zZ3N0ciAiT2N6ZWtpd2FuaWUgbmEgaW5zdGFsYWNqxJkgWFF1 YXJ0eiIKLSAKLSAjOiBiYXNoL3J1bl9leGU6NzAKLSAjLCBzaC1mb3JtYXQKLUBAIC04MTUsMTIg KzgyMCwxMiBAQCBtc2dzdHIgIkluc3RhbGFjamEgemFrb8WEY3pvbmEiCi0gIzogYmFzaC9zdGFy dHVwX2FmdGVyX3NlcnZlcjozOAotICMsIHNoLWZvcm1hdAotIG1zZ2lkICJQbGF5T25NYWMgbmVl ZHMgdG8gaW5zdGFsbCBYUXVhcnR6IHRvIHdvcmsgcHJvcGVybHkuIgotLW1zZ3N0ciAiIgotK21z Z3N0ciAiUGxheU9uTWFjIHd5bWFnYSB6YWluc3RhbG93YW5pYSBYUXVhcnR6IGRvIHBvcHJhd25l Z28gZHppYcWCYW5pYS4iCi0gCi0gIzogYmFzaC9zdGFydHVwX2FmdGVyX3NlcnZlcjozOQotICMs IHNoLWZvcm1hdAotIG1zZ2lkICJQbGF5T25NYWMgd2lsbCBoZWxwIHlvdSB0byBzaW1wbGlmeSB0 aGlzIHN0ZXAiCi0tbXNnc3RyICIiCi0rbXNnc3RyICJQbGF5T25NYWMgcG9tb8W8ZSBjaSB1cHJv xZtjacSHIHRlbiBrcm9rIgotIAotICM6IGJhc2gvc3RhcnR1cF9hZnRlcl9zZXJ2ZXI6NDIKLSAj LCBzaC1mb3JtYXQKLUBAIC04NjEsNiArODY2LDggQEAgbXNnc3RyICJYUXVhcnR6IHpvc3RhxYIg emFpbnN0YWxvd2FueS4iCi0gIywgc2gtZm9ybWF0Ci0gbXNnaWQgIlVuYWJsZSB0byBpbnN0YWxs IFhRdWFydHohIFlvdSBtdXN0IGluc3RhbGwgaXQgdG8gdXNlIHdpbmUgcHJvcGVybHkuIgotIG1z Z3N0ciAiIgotKyJOaWUgdWRhxYJvIHNpxJkgemFpbnN0YWxvd2HEhyBYUXVhcnR6ISBKZXN0IG9u IHd5bWFnYW55IGRvIHBvcHJhd25lZ28gZHppYcWCYW5pYSAiCi0rIldpbmUuIgotIAotICM6IGJh c2gvdW5pbnN0YWxsOjMxIGJhc2gvdW5pbnN0YWxsOjY1IGJhc2gvdW5pbnN0YWxsOjY4IGJhc2gv dW5pbnN0YWxsOjc1Ci0gIzogbGliL3dpbmUubGliOjg2NwotQEAgLTkzMywxMiArOTQwLDEyIEBA IG1zZ3N0ciAiIgotICMsIHNoLWZvcm1hdAotIG1zZ2lkICIiCi0gIiRBUFBMSUNBVElPTl9USVRM RSBoYXMgZW5jb3VudGVyZWQgYW4gZXJyb3IuIElmIHRoZSBwcm9ncmFtIHlvdSBhcmUgIgotLSJp bnN0YWxsaW5nIGRvZXMgbm90IHdvcmsgY29ycmVjdGx5LCBpdCBtaWdodCBiZSB0aGUgY2F1c2Ug b2YgdGhlIHByb2JsZW0uXFwiCi0tIm5WaXNpdCB3d3cuJFBPTF9ETlMgdG8gZ2V0IGZ1cnRoZXIg aW5mb3JtYXRpb24iCi0rImluc3RhbGxpbmcgZG9lcyBub3Qgd29yayBjb3JyZWN0bHksIGl0IG1p Z2h0IGJlIHRoZSBjYXVzZSBvZiB0aGUgcHJvYmxlbS4iCi0rIlxcblZpc2l0IHd3dy4kUE9MX0RO UyB0byBnZXQgZnVydGhlciBpbmZvcm1hdGlvbiIKLSBtc2dzdHIgIiIKLSAiJEFQUExJQ0FUSU9O X1RJVExFIG5hcG90a2HFgiBuYSBixYLEhWQuIEplxZtsaSBwcm9ncmFtLCBrdMOzcnkgamVzdCBp bnN0YWxvd2FueSAiCi0tIm5pZSBkemlhxYJhIHByYXdpZMWCb3dvLCB0byBtb8W8ZSBiecSHIHBy enljenluxIUgcHJvYmxlbXUuXFxuIE9kd2llZMW6ICIKLS0id3d3LiRQT0xfRE5TIHcgY2VsdSB1 enlza2FuaWEgZGFsc3p5Y2ggaW5mb3JtYWNqaSIKLSsibmllIGR6aWHFgmEgcHJhd2lkxYJvd28s IHRvIG1vxbxlIGJ5xIcgcHJ6eWN6eW7EhSBwcm9ibGVtdS5cXG4gT2R3aWVkxbogd3d3LiIKLSsi JFBPTF9ETlMgdyBjZWx1IHV6eXNrYW5pYSBkYWxzenljaCBpbmZvcm1hY2ppIgotIAotICM6IGxp Yi9kZWJ1Zy5saWI6MTU1Ci0gIywgc2gtZm9ybWF0Ci1AQCAtOTgwLDkgKzk4Nyw5IEBAIG1zZ2lk ICIiCi0gInZhbGlkXFxuXFxuUGxheU9uTGludXggaGFzIG5vdCBhcHByb3ZlZCB0aGlzIHNjcmlw dCBhbmQgd2lsbCBub3QgYmUgIgotICJyZXNwb25zaWJsZSBmcm9tIGl0LlxcblBsZWFzZSBlbnN1 cmUgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nICEiCi0gbXNnc3RyICIiCi0tIk9zdHJ6ZcW8 ZW5pZSFcXG5cXG5TeWduYXR1cmEgdGVnbyBza3J5cHR1IE5JRSBqZXN0IHByYXdpZMWCb3dhXFxu XFwiCi0tIm5QbGF5T25MaW51eCBuaWUgemFha2NlcHRvd2HFgiB0ZWdvIHNrcnlwdHUgbmllIGLE mWR6aWUgb2Rwb3dpZWR6aWFsbnkgemEgamVnbyAiCi0tImLFgsSZZG5lIGR6aWHFgmFuaWUuXFxu S29udHludXVqIHR5bGtvIGplxZtsaSB3aWVzeiBjbyByb2Jpc3ouIgotKyJPc3RyemXFvGVuaWUh XFxuXFxuU3lnbmF0dXJhIHRlZ28gc2tyeXB0dSBOSUUgamVzdCBwcmF3aWTFgm93YVxcbiIKLSsi XFxuUGxheU9uTGludXggbmllIHphYWtjZXB0b3dhxYIgdGVnbyBza3J5cHR1IG5pZSBixJlkemll IG9kcG93aWVkemlhbG55IHphICIKLSsiamVnbyBixYLEmWRuZSBkemlhxYJhbmllLlxcbktvbnR5 bnV1aiB0eWxrbyBqZcWbbGkgd2llc3ogY28gcm9iaXN6LiIKLSAKLSAjOiBsaWIvcGxheW9ubGlu dXgubGliOjM0OSBsaWIvcGxheW9ubGludXgubGliOjM3MgotICMsIHNoLWZvcm1hdAotQEAgLTk5 Niw4ICsxMDAzLDggQEAgbXNnaWQgIiIKLSAidmFsaWRcXG5cXG4kQVBQTElDQVRJT05fVElUTEUg aGFzIG5vdCBhcHByb3ZlZCB0aGlzIHNjcmlwdCBhbmQgd2lsbCBub3QgYmUgIgotICJyZXNwb25z aWJsZSBmcm9tIGl0LlxcblBsZWFzZSBlbnN1cmUgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5n ISIKLSBtc2dzdHIgIiIKLS0iT3N0cnplxbxlbmllIVxcblxcblN5Z25hdHVyYSB0ZWdvIHNrcnlw dHUgTklFIGplc3QgcHJhd2lkxYJvd2FcXG5cXCIKLS0ibiRBUFBMSUNBVElPTl9USVRMRSBuaWUg emFha2NlcHRvd2HFgiB0ZWdvIHNrcnlwdHUgbmllIGLEmWR6aWUgb2Rwb3dpZWR6aWFsbnkgIgot KyJPc3RyemXFvGVuaWUhXFxuXFxuU3lnbmF0dXJhIHRlZ28gc2tyeXB0dSBOSUUgamVzdCBwcmF3 aWTFgm93YVxcblxcbiIKLSsiJEFQUExJQ0FUSU9OX1RJVExFIG5pZSB6YWFrY2VwdG93YcWCIHRl Z28gc2tyeXB0dSBuaWUgYsSZZHppZSBvZHBvd2llZHppYWxueSAiCi0gInphIGplZ28gYsWCxJlk bmUgZHppYcWCYW5pZS5cXG5Lb250eW51dWogdHlsa28gamXFm2xpIHdpZXN6IGNvIHJvYmlzei4i Ci0gCi0gIzogbGliL3BsYXlvbmxpbnV4LmxpYjozNzIKLUBAIC0xMDU0LDkgKzEwNjEsMTEgQEAg bXNnc3RyICIiCi0gIzogbGliL3BsYXlvbmxpbnV4LmxpYjo5MTMKLSAjLCBzaC1mb3JtYXQKLSBt c2dpZCAiIgotLSJZb3VyIExpbnV4IGtlcm5lbCBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgdG8gcnVu IFdpbjE2IHByb2dyYW1zIHVuZGVyIFdpbmVcXCIKLS0iblNlZSAkRVhQTEFOQVRJT05fVVJMIgot KyJZb3VyIExpbnV4IGtlcm5lbCBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgdG8gcnVuIFdpbjE2IHBy b2dyYW1zIHVuZGVyIFdpbmUiCi0rIlxcblNlZSAkRVhQTEFOQVRJT05fVVJMIgotIG1zZ3N0ciAi IgotKyJKxIVkcm8gdHdvamVnbyBsaW51a3NhIG1vxbxlIG5pZSBiecSHIHNrb25maWd1cm93YW5l IGRvIHVydWNoYW1pYW5pYSBwcm9ncmFtw7N3ICIKLSsiV2luMTYgdyBXaW5lXFxuU2VlICRFWFBM QU5BVElPTl9VUkwiCi0gCi0gIzogbGliL3BsYXlvbmxpbnV4LmxpYjo5MTYKLSAjLCBzaC1mb3Jt YXQKLUBAIC0xMDY0LDYgKzEwNzMsOCBAQCBtc2dpZCAiIgotICJZb3VyIGtlcm5lbCBtYXkgYmUg aW5jb21wYXRpYmxlIHdpdGggcnVubmluZyBXaW4xNiBwcm9ncmFtcyB1bmRlciBXaW5lXFxuU2Vl ICIKLSAiJEVYUExBTkFUSU9OX1VSTCIKLSBtc2dzdHIgIiIKLSsiSsSFZHJvIHR3b2plZ28gbGlu dWtzYSBtb8W8ZSBiecSHIG5pZWtvbXBhdHliaWxuZSB6IGFwbGlrYWNqYW1pIFdpbjE2ICIKLSsi dXJ1Y2hhbWlhbnltaSB3IFdpbmVcXG5TZWUgJEVYUExBTkFUSU9OX1VSTCIKLSAKLSAjOiBsaWIv cGx1Z2lucy5saWI6NjMKLSAjLCBzaC1mb3JtYXQKLUBAIC0xMTMxLDcgKzExNDIsNyBAQCBtc2dz dHIgIiIKLSAjOiBsaWIvc2NyaXB0cy5saWI6Njk2IGxpYi9zY3JpcHRzLmxpYjo3MDQKLSAjLCBz aC1mb3JtYXQKLSBtc2dpZCAiUGxlYXNlIHdhaXQgd2hpbGUgJEFQUExJQ0FUSU9OX1RJVExFIGlz IGhhbmRsaW5nIGFyY2hpdmUuLi4iCi0tbXNnc3RyICIiCi0rbXNnc3RyICJQcm9zesSZIGN6ZWth xIcsICRBUFBMSUNBVElPTl9USVRMRSB3eXBha293dWplIGFyY2hpd3VtLi4uIgotIAotICM6IGxp Yi9zY3JpcHRzLmxpYjo3MjcKLSAjLCBzaC1mb3JtYXQKLUBAIC0xMTY5LDExICsxMTgwLDExIEBA IG1zZ3N0ciAiUm96bWlhciBwbGlrdSBuaWUgemdhZHphIHNpxJkhIgotICM6IGxpYi9zY3JpcHRz LmxpYjo5NTUKLSAjLCBzaC1mb3JtYXQKLSBtc2dpZCAiIgotLSJTb3JyeSwgJEFQUExJQ0FUSU9O X1RJVExFICRWRVJTSU9OIGlzIHRvbyBvbGQgdG8gY29udGludWUuXFwiCi0tIm4kQVBQTElDQVRJ T05fVElUTEUgJE5FRURFRCBpcyByZXF1aXJlZC4iCi0rIlNvcnJ5LCAkQVBQTElDQVRJT05fVElU TEUgJFZFUlNJT04gaXMgdG9vIG9sZCB0byBjb250aW51ZS5cXG4iCi0rIiRBUFBMSUNBVElPTl9U SVRMRSAkTkVFREVEIGlzIHJlcXVpcmVkLiIKLSBtc2dzdHIgIiIKLS0iJEFQUExJQ0FUSU9OX1RJ VExFICRWRVJTSU9OIGplc3QgemJ5dCBzdGFyeSBhYnkga29udHludW93YcSHLlxcIgotLSJuJEFQ UExJQ0FUSU9OX1RJVExFICRORUVERUQgamVzdCB3eW1hZ2FueS4iCi0rIiRBUFBMSUNBVElPTl9U SVRMRSAkVkVSU0lPTiBqZXN0IHpieXQgc3RhcnkgYWJ5IGtvbnR5bnVvd2HEhy5cXG4iCi0rIiRB UFBMSUNBVElPTl9USVRMRSAkTkVFREVEIGplc3Qgd3ltYWdhbnkuIgotIAotICM6IGxpYi9zY3Jp cHRzLmxpYjo5NzAKLSAjLCBzaC1mb3JtYXQKLUBAIC0xMjg1LDcgKzEyOTYsNyBAQCBtc2dzdHIg Ild5c3p1a2l3YW5pZSB3aXJ0dWFsbmVnbyBkeXNrdSB0d2FyZGVnby4uLiIKLSAjOiBsaWIvc2V0 dXB3aW5kb3cubGliOjU4MgotICMsIHNoLWZvcm1hdAotIG1zZ2lkICJIb3cgbXVjaCBtZW1vcnkg KGluIE1CKSBkb2VzIHlvdXIgZ3JhcGhpY3MgYm9hcmQgaGF2ZT8iCi0tbXNnc3RyICIiCi0rbXNn c3RyICJJbGUgcGFtacSZY2kgKHcgTUIpIHBvc2lhZGEgdHdvamEga2FydGEgZ3JhZmljem5hPyIK LSAKLSAjOiBsaWIvc2V0dXB3aW5kb3cubGliOjU5MQotICMsIHNoLWZvcm1hdAotQEAgLTEzNjks NyArMTM4MCw3IEBAIG1zZ3N0ciAiUHJ6ZWdsxIVkYWoiCi0gIzogbGliL3NldHVwd2luZG93Lmxp Yjo3NjMKLSAjLCBzaC1mb3JtYXQKLSBtc2dpZCAiQSBzaG9ydGN1dCBieSB0aGF0IG5hbWUgYWxy ZWFkeSBleGlzdHMsIG92ZXJ3cml0ZT8iCi0tbXNnc3RyICIiCi0rbXNnc3RyICJTa3LDs3QgbyB0 ZWogbmF6d2llIGp1xbwgaXN0bmllamUsIHphc3TEhXBpxIcgZ28/IgotIAotICM6IGxpYi93ZWJz aXRlLmxpYjoyOQotICMsIHNoLWZvcm1hdAotQEAgLTE0MDMsNiArMTQxNCw4IEBAIG1zZ3N0ciAi V3liaWVyeiBnxYLDs3duxIUga2FydMSZIGdyYWZpY3puxIUga3TDs3LEhSB3aW5lIG1hIHpnxYJh c3phxIcgZ3JvbSIKLSBtc2dpZCAiIgotICJTdGFydGluZyA2NC1iaXQgcHJvY2VzcyAkRVhFRklM RSBpcyBub3Qgc3VwcG9ydGVkIGluIDMyLWJpdCB2aXJ0dWFsIGRyaXZlcyIKLSBtc2dzdHIgIiIK LSsiVXJ1Y2hhbWlhbmllIHByb2Nlc8OzdyA2NC1iaXRvd3ljaCAkRVhFRklMRSBuaWUgamVzdCBv YnPFgnVnaXdhbmUgdyAzMi0iCi0rImJpdG93eWNoIGR5c2thY2ggd2lydHVhbG55Y2giCi0gCi0g IzogbGliL3dpbmUubGliOjU3OQotICMsIHNoLWZvcm1hdAotQEAgLTE2MzgsNiArMTY1MSwxMSBA QCBtc2dpZCAiIgotICJXaW5lIHZlcnNpb24gaXMgY2hhbmdlZC5cbiIKLSAiQXJlIHlvdSBzdXJl IHlvdSB3YW50IHRvIGNvbnRpbnVlPyIKLSBtc2dzdHIgIiIKLSsiVXdhZ2E6XG4iCi0rIlxuIgot KyJLYcW8ZGEgdXJ1Y2hvbWlvbmEgYXBsaWthY2phIHpuYWpkdWrEhWNhIHNpxJkgbmEgdHltIGR5 c2t1IHdpcnR1YWxueW0gem9zdGFuaWUgIgotKyJ6YXRyenltYW5hIHByemVkIHptaWFuxIUgd2Vy c2ppIFdpbmUuXG4iCi0rIkN6eSBjaGNlc3oga29udHludW93YcSHPyIKLSAKLSAjOiBweXRob24v Y29uZmlndXJlLnB5OjYwNgotIG1zZ2lkICIiCi1AQCAtMTc1Miw3ICsxNzcwLDcgQEAgbXNnc3Ry ICJaZ2FkemFtIHNpxJkiCi0gCi0gIzogcHl0aG9uL2d1aXYzLnB5OjE3OQotIG1zZ2lkICJEb24n dCByZW1pbmQgbWUgYW55bW9yZSIKLS1tc2dzdHIgIiIKLSttc2dzdHIgIk5pZSBwcnp5cG9taW5h aiBtaSB3acSZY2VqIgotIAotICM6IHB5dGhvbi9ndWl2My5weToxODAKLSBtc2dpZCAiU2hvdyB2 aXJ0dWFsIGRyaXZlcyIKLUBAIC0xODc1LDcgKzE4OTMsNyBAQCBtc2dzdHIgIiIKLSAKLSAjOiBw eXRob24vaW5zdGFsbC5weTo1NzcKLSBtc2dpZCAiQXR0ZW50aW9uISIKLS1tc2dzdHIgIiIKLStt c2dzdHIgIlV3YWdhISIKLSAKLSAjOiBweXRob24vaW5zdGFsbC5weTo1NzcKLSBtc2dpZCAiIgot QEAgLTE4ODcsNiArMTkwNSwxMyBAQCBtc2dpZCAiIgotICJwaXJhY3kgYW5kIGFzIHN1Y2gsIHdl IHdpbGwgbm90IG9mZmVyIGFueSBzdXBwb3J0IGZvciBpc3N1ZXMgcmVzdWx0aW5nIGZyb20gIgot ICJ1c2luZyB0aGlzIG9wdGlvbi4iCi0gbXNnc3RyICIiCi0rIlfFgsSFY3phasSFYyB0xJkgb3Bj asSZLCBtb8W8ZXN6IGluc3RhbG93YcSHIHByb2dyYW15IHXFvHl3YWrEhWNlIHN5c3RlbXUgemFy esSFZHphbmlhICIKLSsicHJhd2FtaSBjeWZyb3d5bWkgKERSTSksIGFsZSBuaWUgc8SFIG9uZSB3 c3BpZXJhbmUgcHJ6ZXogezB9IGkgbW9nxIUgd3ltYWdhxIcgIgotKyJvYmVqxZtjaWEuXG4iCi0r IlxuIgotKyJGdW5rY2phIHRhIG5pZSBwb3dpbm5hIGJ5xIcgaW50ZXJwcmV0b3dhbmEgamFrbyB1 a3J5dGUgbHViIGRvbW5pZW1hbmUgIgotKyJwcnp5endvbGVuaWUgbmEgcGlyYWN0d28gaSBuaWUg YsSZZHppZW15IG9mZXJvd2HEhyDFvGFkbmVnbyB3c3BhcmNpYSB3ICIKLSsia3dlc3RpYWNoIHd5 bmlrYWrEhWN5Y2ggeiBrb3J6eXN0YW5pYSB6IHRlaiBvcGNqaS4iCi0gCi0gIzogcHl0aG9uL2lu c3RhbGwucHk6NTgwCi0gbXNnaWQgIiIKLUBAIC0xOTc2LDIzICsyMDAxLDIzIEBAIG1zZ3N0ciAi TWVuZWTFvGVyIHd0eWN6ZWsiCi0gCi0gIzogcHl0aG9uL21haW53aW5kb3cucHk6Mjk0Ci0gbXNn aWQgIlN1cHBvcnRlZCBzb2Z0d2FyZSIKLS1tc2dzdHIgIiIKLSttc2dzdHIgIk9ic8WCdWdpd2Fu ZSBvcHJvZ3JhbW93YW5pZSIKLSAKLSAjOiBweXRob24vbWFpbndpbmRvdy5weToyOTUKLSBtc2dp ZCAiTmV3cyIKLS1tc2dzdHIgIiIKLSttc2dzdHIgIkFrdHVhbG5vxZtjaSIKLSAKLSAjOiBweXRo b24vbWFpbndpbmRvdy5weToyOTYKLSBtc2dpZCAiRG9jdW1lbnRhdGlvbiIKLS1tc2dzdHIgIiIK LSttc2dzdHIgIkRva3VtZW50YWNqYSIKLSAKLSAjOiBweXRob24vbWFpbndpbmRvdy5weToyOTcK LSBtc2dpZCAiRm9ydW1zIgotLW1zZ3N0ciAiIgotK21zZ3N0ciAiRm9yYSBkeXNrdXN5am5lIgot IAotICM6IHB5dGhvbi9tYWlud2luZG93LnB5OjI5OAotIG1zZ2lkICJCdWdzIgotLW1zZ3N0ciAi IgotK21zZ3N0ciAiQsWCxJlkeSIKLSAKLSAjOiBweXRob24vbWFpbndpbmRvdy5weTozMDAKLSBt c2dpZCAiVHdpdHRlciIKLUBAIC0yMDI4LDcgKzIwNTMsNyBAQCBtc2dzdHIgIld0eWN6a2kiCi0g Ci0gIzogcHl0aG9uL21haW53aW5kb3cucHk6MzY5Ci0gbXNnaWQgIlN1cHBvcnQiCi0tbXNnc3Ry ICIiCi0rbXNnc3RyICJXc3BhcmNpZSIKLSAKLSAjOiBweXRob24vbWFpbndpbmRvdy5weTozODEg cHl0aG9uL21haW53aW5kb3cucHk6Nzc3Ci0gbXNnaWQgIkNsb3NlIgotQEAgLTIwODAsNyArMjEw NSw3IEBAIG1zZ3N0ciAiRGVidWd1aiIKLSAKLSAjOiBweXRob24vbWFpbndpbmRvdy5weTo3ODUK LSBtc2dpZCAiU2VuZCBhIGZlZWRiYWNrIgotLW1zZ3N0ciAiIgotK21zZ3N0ciAiV3nFm2xpaiB6 Z8WCb3N6ZW5pZSIKLSAKLSAjOiBweXRob24vbWFpbndpbmRvdy5weTo3OTAKLSBtc2dpZCAiQ3Jl YXRlIGEgc2hvcnRjdXQiCi1AQCAtMjExNyw3ICsyMTQyLDcgQEAgbXNnc3RyICJXaXJ0dWFsbnkg ZHlzayB0d2FyZHkgendpxIV6YW55IHogezB9ICh7MX0pIG5pZSBpc3RuaWVqZS4iCi0gCi0gIzog cHl0aG9uL21haW53aW5kb3cucHk6MTEwMgotIG1zZ2lkICJBcmUgeW91IHN1cmUgeW91IHdhbnQg dG8gY2xvc2UgYWxsIHswfSB3aW5kb3dzPyIKLS1tc2dzdHIgIiIKLSttc2dzdHIgIkN6eSBuYSBw ZXdubyBjaGNlc3ogemFta27EhcSHIHdzenlzdGtpZSB7MH0gb2tuYT8iCi0gCi0gIzogcHl0aG9u L21haW53aW5kb3cucHk6MTEyNAotIG1zZ2lkICJSdW4geW91ciBXaW5kb3dzIHByb2dyYW1zIG9u ICIKLUBAIC0yMzQyLDcgKzIzNjcsNyBAQCBtc2dzdHIgIkplc3RlxZsgcGV3aWVuIHplIGNoY2Vz eiB1c3VuxIXEhyBXaW5lIHswfT8iCi0gCi0gIzogcHl0aG9uL3dpbmVfdmVyc2lvbnMucHk6MzM0 Ci0gbXNnaWQgIlRoaXMgdmVyc2lvbiBpcyBDVVJSRU5UTFkgSU4gVVNFIgotLW1zZ3N0ciAiIgot K21zZ3N0ciAiVGEgd2Vyc2phIGplc3Qgb2JlY25pZSB3IHXFvHljaXUiCi0gCi0gIzogcHl0aG9u L3dyYXBwZXIucHk6MTM1Ci0gbXNnaWQgInswfSBpcyBub3QgYWJsZSB0byBzdGFydCBQT0xfU2V0 dXBXaW5kb3dfc2VydmVyLiIKLQotRnJvbSA4ZjA4MjYzMmMzMGM4NTQ2MWM3NmYwZjk1YWM3NDc2 NzViYzBhZjk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUXVlbnRpbiBQQVJJUyA8 Z2l0QHF1ZW50aW4ucGFyaXM+Ci1EYXRlOiBTdW4sIDI0IEphbiAyMDIxIDE1OjIxOjU0ICswMTAw Ci1TdWJqZWN0OiBbUEFUQ0ggMTUvMzNdIFJlYWZjdG9yaW5nIHdpbmUgdmVyc2lvbiBtYW5hZ2Vy IGNvZGUKLQotLS0tCi0gYmFzaC9zdGFydHVwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICA4ICsKLSBsaWIvdmFyaWFibGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDEgKwotIGxpYi93aW5lLmxpYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMjE1OSArKysrKysrKystLS0tLS0tLS0KLSBweXRob24vbGliL1ZhcmlhYmxlcy5weSAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDkgKy0KLSBweXRob24vbWFpbndpbmRvdy5weSAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KLSBweXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVy c2lvbnNGZXRjaGVyLnB5ICB8ICAxMzkgKy0KLSBweXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVy c2lvbnNOb3RlYm9vay5weSB8ICAxMzkgKy0KLSBweXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVy c2lvbnNUb29scy5weSAgICB8ICAgMjQgKy0KLSBweXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVy c2lvbnNXaW5kb3cucHkgICB8ICAyNjAgKy0tCi0gOSBmaWxlcyBjaGFuZ2VkLCAxMzE1IGluc2Vy dGlvbnMoKyksIDE0MjYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iYXNoL3N0YXJ0dXAg Yi9iYXNoL3N0YXJ0dXAKLWluZGV4IGFiMGI1ZGNiNS4uZmI2MmU3YThiIDEwMDc1NQotLS0tIGEv YmFzaC9zdGFydHVwCi0rKysgYi9iYXNoL3N0YXJ0dXAKLUBAIC0zMSw2ICszMSwxNCBAQCBidWls ZF91c2VyX3N0YXRlX2RpcmVjdG9yeQotICMgQ2xlYW5pbmcgdG1wIGRpcmVjdG9yeQotIGNsZWFu X3RtcAotIAotKyMgTWFjIE9TIENhdGFsaW5hOiBSZW1vdmUgbGVnYWN5IHdpbmUgdmVyc2lvbnMK LStpZiBbWyAiJE9TWF9WRVJTSU9OIiAtZ2UgMTkgXV07IHRoZW4KLSsgICAgaWYgW1sgISAtZSAi JFBPTF9VU0VSX1JPT1Qvd2luZS9kYXJ3aW4teDg2LWxlZ2FjeSIgXV07IHRoZW4KLSsgICAgICAg IFtbIC1lICIkUE9MX1VTRVJfUk9PVC93aW5lL2Rhcndpbi14ODYiIF1dICYmIG12ICIkUE9MX1VT RVJfUk9PVC93aW5lL2Rhcndpbi14ODYiICIkUE9MX1VTRVJfUk9PVC93aW5lL2Rhcndpbi14ODYt bGVnYWN5IgotKyAgICAgICAgbWtkaXIgLXAgIiRQT0xfVVNFUl9ST09UL3dpbmUvZGFyd2luLXg4 Ni1sZWdhY3kiCi0rICAgIGZpCi0rZmkKLSsKLSAjIyMgT3BlcmF0aW9ucyBiZWxvdyBhcmUgYmFj a2dyb3VuZCBhc3luY2hyb25vdXMgdGFza3MKLSAKLSAoCi1kaWZmIC0tZ2l0IGEvbGliL3Zhcmlh YmxlcyBiL2xpYi92YXJpYWJsZXMKLWluZGV4IDNkZjRiNjcwOC4uOWMxNmZlMWE3IDEwMDc1NQot LS0tIGEvbGliL3ZhcmlhYmxlcwotKysrIGIvbGliL3ZhcmlhYmxlcwotQEAgLTIxLDYgKzIxLDcg QEAKLSAjIyBIYWNrIGZvciBFbCBDYXBpdGFpbgotIFsgISAiJFdSSVRFX0xEIiA9ICIiIF0gJiYg ZXhwb3J0IExEX0xJQlJBUllfUEFUSD0iJFdSSVRFX0xEIgotIFsgISAiJFdSSVRFX0RZTEQiID0g IiIgXSAmJiBleHBvcnQgRFlMRF9MSUJSQVJZX1BBVEg9IiRXUklURV9EWUxEIgotK1sgISAiJFdS SVRFX0RZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIIiA9ICIiIF0gJiYgZXhwb3J0IERZTERfRkFM TEJBQ0tfTElCUkFSWV9QQVRIPSIkV1JJVEVfRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEgiCi0g Ci0gIyBUaGlzIGlzIGp1c3QgYSBjb3B5IG9mIGZ1bmN0aW9uIGluIHBsYXlvbmxpbnV4LCBidXQg d2UgbmVlZCBpdCBlYXJsaWVyCi0gWyAiJFBPTF9PUyIgPSAiTWFjIiBdICYmIGV4cG9ydCBMQU5H PSIkUkxBTkciCi1kaWZmIC0tZ2l0IGEvbGliL3dpbmUubGliIGIvbGliL3dpbmUubGliCi1pbmRl eCA3NzE3OWQxMzcuLmQyN2RlMTUwOSAxMDA3NTUKLS0tLSBhL2xpYi93aW5lLmxpYgotKysrIGIv bGliL3dpbmUubGliCi1AQCAtMjIsODIgKzIyLDgzIEBACi0gIwotICMgVGhpcyBsaWIgY29udGFp bnMgd2luZSdzIGFwaQotIAotLVBPTF9XaW5lX0dldFJlZ1ZhbHVlKCkKLS17Ci0tCSMgR2V0IGEg dmFsdWUgaW4gcmVnaXN0cnkKLS0JIyBFeGFtcGxlIDogUE9MX1dpbmVfR2V0UmVnX1ZhbHVlIE11 bHRpc2FtcGxpbmcKLS0JIwotLQkjIFJlYWQgaHR0cDovL3dpa2kud2luZWhxLm9yZy9Vc2VmdWxS ZWdpc3RyeUtleXMKLS0KLS0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFs ICJXSU5FUFJFRklYIG5vdCBzZXQiCi0tCWxvY2FsIHZhbHVlCi0tCSMgdHIgLWQgJ1wwJyBpcyBh IHdvcmthcm91bmQgZm9yIFdpbmUgYnVnICMzNzU3NQotLQlbIC1lICIkV0lORVBSRUZJWC91c2Vy LnJlZyIgXSAmJiB2YWx1ZT0iJChncmVwICJeXCIkMVwiPSIgIiRXSU5FUFJFRklYL3VzZXIucmVn IiB8IGhlYWQgLW4gMSB8IHRyIC1kICciJyB8IGN1dCAtZD0gLWYyLSB8IHRyIC1kICdcMCcpIgot LQlQT0xfRGVidWdfTWVzc2FnZSAiR2V0dGluZyByZWdpc3RyeSB2YWx1ZSAkMS4gUmV0dXJuOiAk dmFsdWUiCi0tCWVjaG8gLW4gIiR7dmFsdWU6LWRlZmF1bHR9IgotK1BPTF9XaW5lX0dldFJlZ1Zh bHVlKCkgewotKyAgIyBHZXQgYSB2YWx1ZSBpbiByZWdpc3RyeQotKyAgIyBFeGFtcGxlIDogUE9M X1dpbmVfR2V0UmVnX1ZhbHVlIE11bHRpc2FtcGxpbmcKLSsgICMKLSsgICMgUmVhZCBodHRwOi8v d2lraS53aW5laHEub3JnL1VzZWZ1bFJlZ2lzdHJ5S2V5cwotKwotKyAgWyAteiAiJFdJTkVQUkVG SVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0rICBsb2NhbCB2 YWx1ZQotKyAgIyB0ciAtZCAnXDAnIGlzIGEgd29ya2Fyb3VuZCBmb3IgV2luZSBidWcgIzM3NTc1 Ci0rICBbIC1lICIkV0lORVBSRUZJWC91c2VyLnJlZyIgXSAmJiB2YWx1ZT0iJChncmVwICJeXCIk MVwiPSIgIiRXSU5FUFJFRklYL3VzZXIucmVnIiB8IGhlYWQgLW4gMSB8IHRyIC1kICciJyB8IGN1 dCAtZD0gLWYyLSB8IHRyIC1kICdcMCcpIgotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkdldHRpbmcg cmVnaXN0cnkgdmFsdWUgJDEuIFJldHVybjogJHZhbHVlIgotKyAgZWNobyAtbiAiJHt2YWx1ZTot ZGVmYXVsdH0iCi0gfQotIAotLVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5ICgpCi0tewotLQkjIFVz YWdlOiBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeSByZWdiYXNlbmFtZQotLQkjIHJlZ2lzdHJ5IGZp bGUgbXVzdCBiZSBwcm92aWRlZCB0aHJ1IHN0ZGluCi0tCSMgRmlsZSBzaWduYXR1cmUgKCJSRUdF RElUNCIpIGluIGFwcGVuZGVkIGF1dG9tYXRpY2FsbHkKLS0KLS0JKGVjaG8gIlJFR0VESVQ0Ijsg ZWNobyAiIjsgY2F0KSA+ICIkUE9MX1VTRVJfUk9PVC90bXAvJDEucmVnIgotLQlQT0xfV2luZSBy ZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvJDEucmVnIiAmJgotLQlybSAiJFBPTF9VU0VSX1JP T1QvdG1wLyQxLnJlZyIKLStQT0xfV2luZV9VcGRhdGVSZWdpc3RyeSgpIHsKLSsgICMgVXNhZ2U6 IFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5IHJlZ2Jhc2VuYW1lCi0rICAjIHJlZ2lzdHJ5IGZpbGUg bXVzdCBiZSBwcm92aWRlZCB0aHJ1IHN0ZGluCi0rICAjIEZpbGUgc2lnbmF0dXJlICgiUkVHRURJ VDQiKSBpbiBhcHBlbmRlZCBhdXRvbWF0aWNhbGx5Ci0rCi0rICAoCi0rICAgIGVjaG8gIlJFR0VE SVQ0IgotKyAgICBlY2hvICIiCi0rICAgIGNhdAotKyAgKSA+IiRQT0xfVVNFUl9ST09UL3RtcC8k MS5yZWciCi0rICBQT0xfV2luZSByZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvJDEucmVnIiAm JgotKyAgICBybSAiJFBPTF9VU0VSX1JPT1QvdG1wLyQxLnJlZyIKLSB9Ci0gCi0tUE9MX1dpbmVf VXBkYXRlUmVnaXN0cnlQYWlyICgpCi0tewotLQkjIFVzYWdlOiBQT0xfV2luZV9VcGRhdGVSZWdp c3RyeVBhaXIga2V5IG5hbWUgWy0tc3p8LS1iaW5hcnl8LS1kd29yZHwtLW11bHRpc3pdIGRhdGEK LS0JIyBkYXRhPSJkZWZhdWx0IjogcmVtb3ZlIHRoZSBuYW1lCi0tICAgICAgICBsb2NhbCBrZXk9 IiQxIgotLSAgICAgICAgbG9jYWwgc3Via2V5PSIkMiIKLS0gICAgICAgIHNoaWZ0IDIKLS0gICAg ICAgIGxvY2FsIHZhbHVlCi0tICAgICAgICBjYXNlICIkMSIgaW4KLS0gICAgICAgICAgLS1zenwt LVNaKQotLSAgICAgICAgICAgIHNoaWZ0Ci0tICAgICAgICAgICAgIyBiYWNrc2xhc2ggXHMgYW5k ICJzPwotLSAgICAgICAgICAgIHZhbHVlPSJcIiQxXCIiCi0tICAgICAgICAgICAgOzsKLS0gICAg ICAgICAgLS1iaW5hcnl8LS1CSU5BUlkpCi0tICAgICAgICAgICAgc2hpZnQKLS0gICAgICAgICAg ICB2YWx1ZT0iaGV4OiQxIgotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgIC0tZHdvcmR8LS1E V09SRCkKLS0gICAgICAgICAgICBzaGlmdAotLSAgICAgICAgICAgIHZhbHVlPSJkd29yZDokMSIK LS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAtLW11bHRpc3p8LS1NVUxUSVNaKQotLSAgICAg ICAgICAgIHNoaWZ0Ci0tICAgICAgICAgICAgdmFsdWU9ImhleCg3KTokMSIKLS0gICAgICAgICAg ICA7OwotLSAgICAgICAgICAtLSopCi0tICAgICAgICAgICAgUE9MX0RlYnVnX0ZhdGFsICJVbnJl Y29nbml6ZWQgdmFsdWUgdHlwZTogJDEsIHN1cHBvcnRlZCBhcmUgLS1zeiAtLWJpbmFyeSAtLWR3 b3JkIC0tbXVsdGlzeiIKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICBkZWZhdWx0KQotLSAg ICAgICAgICAgIHZhbHVlPSItIgotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgICopCi0tICAg ICAgICAgICAgIyBiYWNrc2xhc2ggXHMgYW5kICJzPwotLSAgICAgICAgICAgIHZhbHVlPSJcIiQx XCIiCi0tICAgICAgICBlc2FjCi0tCi0tCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeSByZWdrZXkg PDwtIF9FT0ZJTklfCi0rUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlQYWlyKCkgewotKyAgIyBVc2Fn ZTogUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlQYWlyIGtleSBuYW1lIFstLXN6fC0tYmluYXJ5fC0t ZHdvcmR8LS1tdWx0aXN6XSBkYXRhCi0rICAjIGRhdGE9ImRlZmF1bHQiOiByZW1vdmUgdGhlIG5h bWUKLSsgIGxvY2FsIGtleT0iJDEiCi0rICBsb2NhbCBzdWJrZXk9IiQyIgotKyAgc2hpZnQgMgot KyAgbG9jYWwgdmFsdWUKLSsgIGNhc2UgIiQxIiBpbgotKyAgLS1zeiB8IC0tU1opCi0rICAgIHNo aWZ0Ci0rICAgICMgYmFja3NsYXNoIFxzIGFuZCAicz8KLSsgICAgdmFsdWU9IlwiJDFcIiIKLSsg ICAgOzsKLSsgIC0tYmluYXJ5IHwgLS1CSU5BUlkpCi0rICAgIHNoaWZ0Ci0rICAgIHZhbHVlPSJo ZXg6JDEiCi0rICAgIDs7Ci0rICAtLWR3b3JkIHwgLS1EV09SRCkKLSsgICAgc2hpZnQKLSsgICAg dmFsdWU9ImR3b3JkOiQxIgotKyAgICA7OwotKyAgLS1tdWx0aXN6IHwgLS1NVUxUSVNaKQotKyAg ICBzaGlmdAotKyAgICB2YWx1ZT0iaGV4KDcpOiQxIgotKyAgICA7OwotKyAgLS0qKQotKyAgICBQ T0xfRGVidWdfRmF0YWwgIlVucmVjb2duaXplZCB2YWx1ZSB0eXBlOiAkMSwgc3VwcG9ydGVkIGFy ZSAtLXN6IC0tYmluYXJ5IC0tZHdvcmQgLS1tdWx0aXN6IgotKyAgICA7OwotKyAgZGVmYXVsdCkK LSsgICAgdmFsdWU9Ii0iCi0rICAgIDs7Ci0rICAqKQotKyAgICAjIGJhY2tzbGFzaCBccyBhbmQg InM/Ci0rICAgIHZhbHVlPSJcIiQxXCIiCi0rICAgIDs7Ci0rICBlc2FjCi0rCi0rICBQT0xfV2lu ZV9VcGRhdGVSZWdpc3RyeSByZWdrZXkgPDwtX0VPRklOSV8KLSAJCVska2V5XQotIAkJIiRzdWJr ZXkiPSR2YWx1ZQotIAkJX0VPRklOSV8KLSB9Ci0gCi0tUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlX aW5lUGFpciAoKQotLXsKLS0JIyBVc2FnZTogUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlQYWlyIHN1 YmtleSBuYW1lIFstLXN6fC0tYmluYXJ5fC0tZHdvcmR8LS1tdWx0aXN6XSBkYXRhCi0tCSMgZGF0 YT0iZGVmYXVsdCI6IHJlbW92ZSB0aGUgbmFtZQotK1BPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2lu ZVBhaXIoKSB7Ci0rICAjIFVzYWdlOiBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVBhaXIgc3Via2V5 IG5hbWUgWy0tc3p8LS1iaW5hcnl8LS1kd29yZHwtLW11bHRpc3pdIGRhdGEKLSsgICMgZGF0YT0i ZGVmYXVsdCI6IHJlbW92ZSB0aGUgbmFtZQotIAotLQkjIFB1dCBhICJcIiBiZWZvcmUgJDEgaWYg aXQncyBub3QgZW1wdHkKLS0JUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlQYWlyICJIS0VZX0NVUlJF TlRfVVNFUlxcU29mdHdhcmVcXFdpbmUkezE6K1xcJDF9IiAiJDIiICIkMyIgIiQ0IgotKyAgIyBQ dXQgYSAiXCIgYmVmb3JlICQxIGlmIGl0J3Mgbm90IGVtcHR5Ci0rICBQT0xfV2luZV9VcGRhdGVS ZWdpc3RyeVBhaXIgIkhLRVlfQ1VSUkVOVF9VU0VSXFxTb2Z0d2FyZVxcV2luZSR7MTorXFwkMX0i ICIkMiIgIiQzIiAiJDQiCi0gfQotIAotICMgRm9yIGFsbCBmdW5jdGlvbnMgYmVsb3csIHRoYXQg Y2FuIGJlIGNhbGxlZCBmcm9tIHRoZSBjb250cm9sIHBhbmVsOgotQEAgLTEwNSwzNjEgKzEwNiwz NDQgQEAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAoKQotICMgICBjaGFuZ2VkIFdp bmUgdmVyc2lvbiBvdXQgb2Ygb3VyIGNvbnRyb2w7Ci0gIyAtIEtpbGwgd2luZXNlcnZlciBhZnRl ciByZWdlZGl0IHNvIGNoYW5nZSB0YWtlcyBlZmZlY3QgaW1tZWRpYXRlbHkKLSAKLS1QT0xfV2lu ZV9EaXJlY3QzRCAoKQotLXsKLS0JIyBDaGFuZ2UgYSBEaXJlY3QzRCB2YWx1ZSBpbiByZWdpc3Ry eQotLQkjIFVzYWdlIFBPTF9XaW5lX0RpcmVjdDNEIEtleSAgWy0tc3p8LS1iaW5hcnl8LS1kd29y ZHwtLW11bHRpc3pdIFZhbHVlCi0rUE9MX1dpbmVfRGlyZWN0M0QoKSB7Ci0rICAjIENoYW5nZSBh IERpcmVjdDNEIHZhbHVlIGluIHJlZ2lzdHJ5Ci0rICAjIFVzYWdlIFBPTF9XaW5lX0RpcmVjdDNE IEtleSAgWy0tc3p8LS1iaW5hcnl8LS1kd29yZHwtLW11bHRpc3pdIFZhbHVlCi0gCi0tCSMgRXhh bXBsZSA6OiBQT0xfV2luZV9EaXJlY3QzRCBVc2VHTFNMIFtkZWZhdWx0IC8gZW5hYmxlZCAvIGRp c2FibGVkXQotLQkjIGRlZmF1bHQ6IHJlbW92ZSB0aGUga2V5Ci0tCVBPTF9EZWJ1Z19NZXNzYWdl ICJTZXR0aW5nIHdpbmUgRGlyZWN0M0QgJFdJTkVQUkVGSVggJDEgJDIgJDMiCi0tCVsgLXogIiRX SU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotKyAg IyBFeGFtcGxlIDo6IFBPTF9XaW5lX0RpcmVjdDNEIFVzZUdMU0wgW2RlZmF1bHQgLyBlbmFibGVk IC8gZGlzYWJsZWRdCi0rICAjIGRlZmF1bHQ6IHJlbW92ZSB0aGUga2V5Ci0rICBQT0xfRGVidWdf TWVzc2FnZSAiU2V0dGluZyB3aW5lIERpcmVjdDNEICRXSU5FUFJFRklYICQxICQyICQzIgotKyAg WyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBz ZXQiCi0gCi0tCVBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52Ci0tCXdpbmVzZXJ2ZXIgLWsKLS0J UE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0M0QnICIkMSIgIiQyIiAiJDMi Ci0tCXdpbmVzZXJ2ZXIgLWsKLSsgIFBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52Ci0rICB3aW5l c2VydmVyIC1rCi0rICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3QzRCcg IiQxIiAiJDIiICIkMyIKLSsgIHdpbmVzZXJ2ZXIgLWsKLSB9Ci0gCi0tUE9MX1dpbmVfWDExRHJ2 ICgpCi0tewotLQkjIENoYW5nZSBhIFgxMURydiB2YWx1ZSBpbiByZWdpc3RyeQotLQkjIFVzYWdl IFBPTF9XaW5lX1gxMURydiBLZXkgWy0tc3p8LS1iaW5hcnl8LS1kd29yZHwtLW11bHRpc3pdIFZh bHVlCi0rUE9MX1dpbmVfWDExRHJ2KCkgewotKyAgIyBDaGFuZ2UgYSBYMTFEcnYgdmFsdWUgaW4g cmVnaXN0cnkKLSsgICMgVXNhZ2UgUE9MX1dpbmVfWDExRHJ2IEtleSBbLS1zenwtLWJpbmFyeXwt LWR3b3JkfC0tbXVsdGlzel0gVmFsdWUKLSAKLS0JIyBFeGFtcGxlIDo6IFBPTF9XaW5lX1gxMURy diBVc2VHTFNMIFtkZWZhdWx0IC8gZW5hYmxlZCAvIGRpc2FibGVkXQotLQkjIGRlZmF1bHQ6IHJl bW92ZSB0aGUga2V5Ci0tCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgWDExRHJ2ICRX SU5FUFJFRklYICQxICQyICQzIgotLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdf RmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLSsgICMgRXhhbXBsZSA6OiBQT0xfV2luZV9YMTFE cnYgVXNlR0xTTCBbZGVmYXVsdCAvIGVuYWJsZWQgLyBkaXNhYmxlZF0KLSsgICMgZGVmYXVsdDog cmVtb3ZlIHRoZSBrZXkKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgWDExRHJ2 ICRXSU5FUFJFRklYICQxICQyICQzIgotKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0Rl YnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0gCi0tCVBPTF9XaW5lX0F1dG9TZXRWZXJz aW9uRW52Ci0tCXdpbmVzZXJ2ZXIgLWsKLS0JUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFp ciAnWDExIERyaXZlcicgIiQxIiAiJDIiICIkMyIKLS0Jd2luZXNlcnZlciAtawotKyAgUE9MX1dp bmVfQXV0b1NldFZlcnNpb25FbnYKLSsgIHdpbmVzZXJ2ZXIgLWsKLSsgIFBPTF9XaW5lX1VwZGF0 ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICIkMSIgIiQyIiAiJDMiCi0rICB3aW5lc2Vy dmVyIC1rCi0gfQotIAotLVBPTF9XaW5lX0RpcmVjdFNvdW5kICgpCi0tewotLQkjIFNhbWUgdGhh dCBQT0xfV2luZV9EaXJlY3QzRCwgYnV0IGZvciBEaXJlY3RTb3VuZAotLQlQT0xfRGVidWdfTWVz c2FnZSAiU2V0dGluZyB3aW5lIERpcmVjdFNvdW5kICRXSU5FUFJFRklYICQxICQyICQzIgotLQlb IC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNl dCIKLStQT0xfV2luZV9EaXJlY3RTb3VuZCgpIHsKLSsgICMgU2FtZSB0aGF0IFBPTF9XaW5lX0Rp cmVjdDNELCBidXQgZm9yIERpcmVjdFNvdW5kCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGlu ZyB3aW5lIERpcmVjdFNvdW5kICRXSU5FUFJFRklYICQxICQyICQzIgotKyAgWyAteiAiJFdJTkVQ UkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0gCi0tCVBP TF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52Ci0tCXdpbmVzZXJ2ZXIgLWsKLS0JUE9MX1dpbmVfVXBk YXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0U291bmQnICIkMSIgIiQyIiAiJDMiCi0tCXdpbmVz ZXJ2ZXIgLWsKLSsgIFBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52Ci0rICB3aW5lc2VydmVyIC1r Ci0rICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RTb3VuZCcgIiQxIiAi JDIiICIkMyIKLSsgIHdpbmVzZXJ2ZXIgLWsKLSB9Ci0gCi0tUE9MX1dpbmVfRGlyZWN0SW5wdXQg KCkKLS17Ci0tCSMgU2FtZSB0aGF0IFBPTF9XaW5lX0RpcmVjdDNELCBidXQgZm9yIERpcmVjdElu cHV0Ci0tCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgRGlyZWN0SW5wdXQgJFdJTkVQ UkVGSVggJDEgJDIgJDMiCi0tCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRh bCAiV0lORVBSRUZJWCBub3Qgc2V0IgotK1BPTF9XaW5lX0RpcmVjdElucHV0KCkgewotKyAgIyBT YW1lIHRoYXQgUE9MX1dpbmVfRGlyZWN0M0QsIGJ1dCBmb3IgRGlyZWN0SW5wdXQKLSsgIFBPTF9E ZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgRGlyZWN0SW5wdXQgJFdJTkVQUkVGSVggJDEgJDIg JDMiCi0rICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVG SVggbm90IHNldCIKLSAKLS0JUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKLS0Jd2luZXNlcnZl ciAtawotLQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RJbnB1dCcgIiQx IiAiJDIiICIkMyIKLS0Jd2luZXNlcnZlciAtawotKyAgUE9MX1dpbmVfQXV0b1NldFZlcnNpb25F bnYKLSsgIHdpbmVzZXJ2ZXIgLWsKLSsgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIg J0RpcmVjdElucHV0JyAiJDEiICIkMiIgIiQzIgotKyAgd2luZXNlcnZlciAtawotIH0KLSAKLS1T ZXRfT1MgKCkKLS17Ci0tCSMgU2V0IGZha2Ugd2luZG93cyBPUwotLQkjIFVzYWdlOiBTZXRfT1Mg WzFdIFsyXQotLQkjCi0tCSMgMTogUG9zc2libGUgdmFsdWVzOiB3aW43LCB3aW4yMDA4LCB2aXN0 YSwgd2luMjAwMywgd2lueHAsIHdpbjIwMDAsIG50NDAsIHdpbm50MzUxLCB3aW5tZSwgd2luOTgs IHdpbjk1LCB3aW4zMSwgd2luMzAsIHdpbjIwCi0tCSMgMjogU2VydmljZSBQYWNrOiBzcDEsIHNw Miwgc3AzLCBzcDQsIHNwNQotLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBXaW5kb3dzIE9T IHRvICQxICQyIgotLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJ TkVQUkVGSVggbm90IHNldCIKLS0KLS0JaWYgWyAtbiAiJDEiIF07IHRoZW4KLS0JCVBPTF9XaW5l X1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJycgJ1ZlcnNpb24nICIkMSIKLS0JZmkKLS0KLS0JaWYg WyAtbiAiJDIiIF07IHRoZW4gIyBOZWVkIG1vcmUgdGVzdGluZwotLQkJbG9jYWwgbgotLQkJWyAi JDIiID0gInNwMSIgXSAmJiBuPTEKLS0JCVsgIiQyIiA9ICJzcDIiIF0gJiYgbj0yCi0tCQlbICIk MiIgPSAic3AzIiBdICYmIG49MwotLQkJWyAiJDIiID0gInNwNCIgXSAmJiBuPTQKLS0JCVsgIiQy IiA9ICJzcDUiIF0gJiYgbj01Ci0tCi0tCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeSBzZXRvcyA8 PC0gX0VPRklOSV8KLStTZXRfT1MoKSB7Ci0rICAjIFNldCBmYWtlIHdpbmRvd3MgT1MKLSsgICMg VXNhZ2U6IFNldF9PUyBbMV0gWzJdCi0rICAjCi0rICAjIDE6IFBvc3NpYmxlIHZhbHVlczogd2lu Nywgd2luMjAwOCwgdmlzdGEsIHdpbjIwMDMsIHdpbnhwLCB3aW4yMDAwLCBudDQwLCB3aW5udDM1 MSwgd2lubWUsIHdpbjk4LCB3aW45NSwgd2luMzEsIHdpbjMwLCB3aW4yMAotKyAgIyAyOiBTZXJ2 aWNlIFBhY2s6IHNwMSwgc3AyLCBzcDMsIHNwNCwgc3A1Ci0rICBQT0xfRGVidWdfTWVzc2FnZSAi U2V0dGluZyBXaW5kb3dzIE9TIHRvICQxICQyIgotKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYg UE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0rCi0rICBpZiBbIC1uICIkMSIg XTsgdGhlbgotKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICcnICdWZXJzaW9u JyAiJDEiCi0rICBmaQotKwotKyAgaWYgWyAtbiAiJDIiIF07IHRoZW4gIyBOZWVkIG1vcmUgdGVz dGluZwotKyAgICBsb2NhbCBuCi0rICAgIFsgIiQyIiA9ICJzcDEiIF0gJiYgbj0xCi0rICAgIFsg IiQyIiA9ICJzcDIiIF0gJiYgbj0yCi0rICAgIFsgIiQyIiA9ICJzcDMiIF0gJiYgbj0zCi0rICAg IFsgIiQyIiA9ICJzcDQiIF0gJiYgbj00Ci0rICAgIFsgIiQyIiA9ICJzcDUiIF0gJiYgbj01Ci0r Ci0rICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5IHNldG9zIDw8LV9FT0ZJTklfCi0gCQlbSEtF WV9MT0NBTF9NQUNISU5FXFxTb2Z0d2FyZVxcTWljcm9zb2Z0XFxXaW5kb3dzIE5UXFxDdXJyZW50 VmVyc2lvbl0KLSAJCSJDU0RWZXJzaW9uIj0iU2VydmljZSBQYWNrICRuIgotIAkJW0hLRVlfTE9D QUxfTUFDSElORVxcU3lzdGVtXFxDdXJyZW50Q29udHJvbFNldFxcQ29udHJvbFxcV2luZG93c10K LSAJCSJDU0RWZXJzaW9uIj1kd29yZDowMDAwMCR7bn0wMAotIAkJX0VPRklOSV8KLS0JZmkKLSsg IGZpCi0gfQotIAotLVNldF9NYW5hZ2VkICgpCi0tewotLQkjIExldCB0aGUgd2luZG93cyBtYW5h Z2VyIHRvIGNvbnRyb2wgd2luZQotLQkjIFVzYWdlOiBTZXRfTWFuYWdlZCAoT258T2ZmKQotLQot LQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIG1hbmFnZWQ6ICQxIgotLQlbIC16ICIk V0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLS0K LS0JbG9jYWwgbgotLQlbICIkMSIgPSAiT24iIF0gJiYgbj0iWSIKLS0JWyAiJDEiID0gIk9mZiIg XSAmJiBuPSJOIgotLQlpZiBbIC1uICIkbiIgXTsgdGhlbgotLQkJUE9MX1dpbmVfVXBkYXRlUmVn aXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgIk1hbmFnZWQiICIkbiIKLS0JZWxzZQotLQkJUE9M X0RlYnVnX1dhcm5pbmcgIlVucmVjb2duaXplZCBmbGFnICckMSciCi0tCWZpCi0rU2V0X01hbmFn ZWQoKSB7Ci0rICAjIExldCB0aGUgd2luZG93cyBtYW5hZ2VyIHRvIGNvbnRyb2wgd2luZQotKyAg IyBVc2FnZTogU2V0X01hbmFnZWQgKE9ufE9mZikKLSsKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJT ZXR0aW5nIHdpbmUgbWFuYWdlZDogJDEiCi0rICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xf RGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLSsKLSsgIGxvY2FsIG4KLSsgIFsgIiQx IiA9ICJPbiIgXSAmJiBuPSJZIgotKyAgWyAiJDEiID0gIk9mZiIgXSAmJiBuPSJOIgotKyAgaWYg WyAtbiAiJG4iIF07IHRoZW4KLSsgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAn WDExIERyaXZlcicgIk1hbmFnZWQiICIkbiIKLSsgIGVsc2UKLSsgICAgUE9MX0RlYnVnX1dhcm5p bmcgIlVucmVjb2duaXplZCBmbGFnICckMSciCi0rICBmaQotIH0KLSAKLS1TZXRfU291bmREcml2 ZXIgKCkKLS17Ci0tCSMgU2V0IHRoZSBzb3VuZCBkcml2ZXIKLS0JIyBVc2FnZTogU2V0X1NvdW5k RHJpdmVyIFtEcml2ZXJdCi0tCSMgVXNlIGFuIGVtcHR5IHN0cmluZyBwYXJhbWV0ZXIgdG8gZGlz YWJsZSBzb3VuZAotLQkjIERpc2FibGVkIGluIE1hYyBPUwotLQlQT0xfRGVidWdfTWVzc2FnZSAi U2V0dGluZyB3aW5lIFNvdW5kRHJpdmVyICRAIgotLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQ T0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLS0KLS0JaWYgWyAiJFBPTF9PUyIg PSAiTGludXgiIF07IHRoZW4KLS0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0Ry aXZlcnMnICdBdWRpbycgIiQxIgotLQllbHNlCi0tCQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0X1Nv dW5kRHJpdmVyIGRpc2FibGVkIG9uICRQT0xfT1MiCi0tCWZpCi0rU2V0X1NvdW5kRHJpdmVyKCkg ewotKyAgIyBTZXQgdGhlIHNvdW5kIGRyaXZlcgotKyAgIyBVc2FnZTogU2V0X1NvdW5kRHJpdmVy IFtEcml2ZXJdCi0rICAjIFVzZSBhbiBlbXB0eSBzdHJpbmcgcGFyYW1ldGVyIHRvIGRpc2FibGUg c291bmQKLSsgICMgRGlzYWJsZWQgaW4gTWFjIE9TCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0 dGluZyB3aW5lIFNvdW5kRHJpdmVyICRAIgotKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9M X0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0rCi0rICBpZiBbICIkUE9MX09TIiA9 ICJMaW51eCIgXTsgdGhlbgotKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdE cml2ZXJzJyAnQXVkaW8nICIkMSIKLSsgIGVsc2UKLSsgICAgUE9MX0RlYnVnX01lc3NhZ2UgIlNl dF9Tb3VuZERyaXZlciBkaXNhYmxlZCBvbiAkUE9MX09TIgotKyAgZmkKLSB9Ci0gCi0tU2V0X0RY R3JhYiAoKQotLXsKLS0JIyBFbmFibGUgb3IgZGlzYWJsZSBEWEdyYWIKLS0JIyBVc2FnZTogU2V0 X0RYR3JhYiAoT258T2ZmKQotLQkjIE9uIG91IE9mZgotLQlbIC16ICIkV0lORVBSRUZJWCIgXSAm JiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLS0KLS0JbG9jYWwgbgotLQlb ICIkMSIgPSAiT24iIF0gJiYgbj0iWSIgJiYgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgRFhH cmFiIgotLQlbICIkMSIgPSAiT2ZmIiBdICYmIG49Ik4iICYmIFBPTF9EZWJ1Z19NZXNzYWdlICJV bnNldHRpbmcgRFhHcmFiIgotLQlpZiBbIC1uICIkbiIgXTsgdGhlbgotLQkJUE9MX1dpbmVfVXBk YXRlUmVnaXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgJ0RYR3JhYicgIiRuIgotLQllbHNlCi0t CQlQT0xfRGVidWdfV2FybmluZyAiU2V0X0RYR3JhYjogdW5yZWNvZ25pemVkIGZsYWcgJyQxJyIK LS0JZmkKLStTZXRfRFhHcmFiKCkgewotKyAgIyBFbmFibGUgb3IgZGlzYWJsZSBEWEdyYWIKLSsg ICMgVXNhZ2U6IFNldF9EWEdyYWIgKE9ufE9mZikKLSsgICMgT24gb3UgT2ZmCi0rICBbIC16ICIk V0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLSsK LSsgIGxvY2FsIG4KLSsgIFsgIiQxIiA9ICJPbiIgXSAmJiBuPSJZIiAmJiBQT0xfRGVidWdfTWVz c2FnZSAiU2V0dGluZyBEWEdyYWIiCi0rICBbICIkMSIgPSAiT2ZmIiBdICYmIG49Ik4iICYmIFBP TF9EZWJ1Z19NZXNzYWdlICJVbnNldHRpbmcgRFhHcmFiIgotKyAgaWYgWyAtbiAiJG4iIF07IHRo ZW4KLSsgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgJ0RY R3JhYicgIiRuIgotKyAgZWxzZQotKyAgICBQT0xfRGVidWdfV2FybmluZyAiU2V0X0RYR3JhYjog dW5yZWNvZ25pemVkIGZsYWcgJyQxJyIKLSsgIGZpCi0gfQotIAotLVNldF9JZXhwbG9yZSAoKQot LXsKLS0JIyBNYWtlIGEgZmFrZSBJRTYgaW5zdGFsbGF0aW9uCi0tCSMgVXNhZ2U6IFNldF9JZXhw bG9yZQotLQlQT0xfRGVidWdfTWVzc2FnZSAiRmFraW5nIGllNiBpbnN0YWxsYXRpb24iCi0tCVsg LXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0 IgotK1NldF9JZXhwbG9yZSgpIHsKLSsgICMgTWFrZSBhIGZha2UgSUU2IGluc3RhbGxhdGlvbgot KyAgIyBVc2FnZTogU2V0X0lleHBsb3JlCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiRmFraW5nIGll NiBpbnN0YWxsYXRpb24iCi0rICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0 YWwgIldJTkVQUkVGSVggbm90IHNldCIKLSAKLS0JUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgaWUg PDwtIF9FT0ZJTklfCi0rICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeSBpZSA8PC1fRU9GSU5JXwot IAlbSEtFWV9MT0NBTF9NQUNISU5FXFxTb2Z0d2FyZVxcTWljcm9zb2Z0XFxJbnRlcm5ldCBFeHBs b3Jlcl0KLSAJIlZlcnNpb24iPSI2LjAuMjkwMC4yMTgwIgotIAlfRU9GSU5JXwotIH0KLSAKLS1T ZXRfRGVza3RvcCAoKQotLXsKLS0JIyBTZXQgYSBkZXNrdG9wIGVudmlyb25tZW50Ci0tCSMgVXNh Z2U6IFNldF9EZXNrdG9wIChvbnxvZmYpIFt3aWR0aF0gW2hlaWdodF0KLS0KLS0JUE9MX0RlYnVn X01lc3NhZ2UgIlNldHRpbmcgRGVza3RvcCA6ICQxICQyICQzIgotLQlbIC16ICIkV0lORVBSRUZJ WCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLS0KLS0JaWYgWyAi JDEiID0gIk9mZiIgXTsgdGhlbgotLQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAn WDExIERyaXZlcicgJ0Rlc2t0b3AnICItMSIKLS0JCSMgUmVtb3ZlIGtleQotLQkJUE9MX1dpbmVf VXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRXhwbG9yZXInICdEZXNrdG9wJyAnZGVmYXVsdCcKLS0J ZWxpZiBbICIkMSIgPSAiT24iIF07IHRoZW4KLS0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2lu ZVBhaXIgJ1gxMSBEcml2ZXInICdEZXNrdG9wJyAiJDJ4JDMiCi0tCQlQT0xfV2luZV9VcGRhdGVS ZWdpc3RyeVdpbmVQYWlyICJFeHBsb3JlclxcRGVza3RvcHMiICdEZWZhdWx0JyAiJDJ4JDMiCi0t CQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdFeHBsb3JlcicgJ0Rlc2t0b3AnICdE ZWZhdWx0JwotLQllbHNlCi0tCQlQT0xfRGVidWdfV2FybmluZyAiVW5yZWNvZ25pemVkIGZsYWcg JyQxJyIKLS0JZmkKLStTZXRfRGVza3RvcCgpIHsKLSsgICMgU2V0IGEgZGVza3RvcCBlbnZpcm9u bWVudAotKyAgIyBVc2FnZTogU2V0X0Rlc2t0b3AgKG9ufG9mZikgW3dpZHRoXSBbaGVpZ2h0XQot KwotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgRGVza3RvcCA6ICQxICQyICQzIgotKyAg WyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBz ZXQiCi0rCi0rICBpZiBbICIkMSIgPSAiT2ZmIiBdOyB0aGVuCi0rICAgIFBPTF9XaW5lX1VwZGF0 ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICdEZXNrdG9wJyAiLTEiCi0rICAgICMgUmVt b3ZlIGtleQotKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdFeHBsb3Jlcicg J0Rlc2t0b3AnICdkZWZhdWx0JwotKyAgZWxpZiBbICIkMSIgPSAiT24iIF07IHRoZW4KLSsgICAg UE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgJ0Rlc2t0b3AnICIk MngkMyIKLSsgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAiRXhwbG9yZXJcXERl c2t0b3BzIiAnRGVmYXVsdCcgIiQyeCQzIgotKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdp bmVQYWlyICdFeHBsb3JlcicgJ0Rlc2t0b3AnICdEZWZhdWx0JwotKyAgZWxzZQotKyAgICBQT0xf RGVidWdfV2FybmluZyAiVW5yZWNvZ25pemVkIGZsYWcgJyQxJyIKLSsgIGZpCi0gfQotIAotLVNl dF9Tb3VuZFNhbXBsZVJhdGUgKCkKLS17Ci0tCSMgU2V0IFNvdW5kIHNhbXBsZSByYXRlCi0tCSMg VXNhZ2U6IFNldF9Tb3VuZFNhbXBsZVJhdGUgW3ZhbHVlXQotLQkjIHZhbHVlcyBjYW4gYmU6IDQ4 MDAwLCA0NDEwMCwgMjIwNTAsIDE2MDAwLCAxMTAyNSwgODAwMAotLQlQT0xfRGVidWdfTWVzc2Fn ZSAiU2V0dGluZyBTb3VuZFNhbXBsZVJhdGUgdG8gJDEiCi0tCVsgLXogIiRXSU5FUFJFRklYIiBd ICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotLQotLQlpZiBbIC1uICIk MSIgXTsgdGhlbgotLQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0U291 bmQnICdEZWZhdWx0U2FtcGxlUmF0ZScgIiQxIgotLQllbHNlCi0tCQkjIEZJWE1FOiBzaG91bGQg d2UgZHJvcCB0aGUgbmFtZSBpbnN0ZWFkPwotLQkJUE9MX0RlYnVnX1dhcm5pbmcgIlNhbXBsZSBy YXRlIG1pc3NpbmcsIHNraXBwZWQiCi0tCWZpCi0rU2V0X1NvdW5kU2FtcGxlUmF0ZSgpIHsKLSsg ICMgU2V0IFNvdW5kIHNhbXBsZSByYXRlCi0rICAjIFVzYWdlOiBTZXRfU291bmRTYW1wbGVSYXRl IFt2YWx1ZV0KLSsgICMgdmFsdWVzIGNhbiBiZTogNDgwMDAsIDQ0MTAwLCAyMjA1MCwgMTYwMDAs IDExMDI1LCA4MDAwCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBTb3VuZFNhbXBsZVJh dGUgdG8gJDEiCi0rICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJ TkVQUkVGSVggbm90IHNldCIKLSsKLSsgIGlmIFsgLW4gIiQxIiBdOyB0aGVuCi0rICAgIFBPTF9X aW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNvdW5kJyAnRGVmYXVsdFNhbXBsZVJh dGUnICIkMSIKLSsgIGVsc2UKLSsgICAgIyBGSVhNRTogc2hvdWxkIHdlIGRyb3AgdGhlIG5hbWUg aW5zdGVhZD8KLSsgICAgUE9MX0RlYnVnX1dhcm5pbmcgIlNhbXBsZSByYXRlIG1pc3NpbmcsIHNr aXBwZWQiCi0rICBmaQotIH0KLSAKLS1TZXRfU291bmRCaXRzUGVyU2FtcGxlICgpCi0tewotLQkj IFNldCBTb3VuZCBiaXRzIHBlciBzYW1wbGUgcmF0ZQotLQkjIFVzYWdlOiBTZXRfU291bmRCaXRz UGVyU2FwbGUgW3ZhbHVlXQotLQkjIHZhbHVlczogOCwgMTYKLS0JUE9MX0RlYnVnX01lc3NhZ2Ug IlNldHRpbmcgc291bmQgRGVmYXVsdHNCaXRzUGVyU2FtcGxlIHRvICQxIgotLQlbIC16ICIkV0lO RVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLS0KLS0J aWYgWyAtbiAiJDEiIF07IHRoZW4KLS0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIg J0RpcmVjdFNvdW5kJyAnRGVmYXVsdEJpdHNQZXJTYW1wbGUnICIkMSIKLS0JZWxzZQotLQkJIyBG SVhNRTogc2hvdWxkIHdlIGRyb3AgdGhlIG5hbWUgaW5zdGVhZD8KLS0JCVBPTF9EZWJ1Z19XYXJu aW5nICJCaXRzUGVyU2FtcGxlIG1pc3NpbmcsIHNraXBwZWQiCi0tCWZpCi0rU2V0X1NvdW5kQml0 c1BlclNhbXBsZSgpIHsKLSsgICMgU2V0IFNvdW5kIGJpdHMgcGVyIHNhbXBsZSByYXRlCi0rICAj IFVzYWdlOiBTZXRfU291bmRCaXRzUGVyU2FwbGUgW3ZhbHVlXQotKyAgIyB2YWx1ZXM6IDgsIDE2 Ci0rICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBzb3VuZCBEZWZhdWx0c0JpdHNQZXJTYW1w bGUgdG8gJDEiCi0rICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJ TkVQUkVGSVggbm90IHNldCIKLSsKLSsgIGlmIFsgLW4gIiQxIiBdOyB0aGVuCi0rICAgIFBPTF9X aW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNvdW5kJyAnRGVmYXVsdEJpdHNQZXJT YW1wbGUnICIkMSIKLSsgIGVsc2UKLSsgICAgIyBGSVhNRTogc2hvdWxkIHdlIGRyb3AgdGhlIG5h bWUgaW5zdGVhZD8KLSsgICAgUE9MX0RlYnVnX1dhcm5pbmcgIkJpdHNQZXJTYW1wbGUgbWlzc2lu Zywgc2tpcHBlZCIKLSsgIGZpCi0gfQotIAotLVBPTF9XaW5lX0luc3RhbGxGb250cygpCi0tewot LQkjIEluc3RhbGwgbWljcm9zb2Z0IGZvbnRzCi0tCSMgVXNhZ2U6IFBPTF9XaW5lX0luc3RhbGxG b250cwotLQlwdXNoZCAuCi0tCVBPTF9DYWxsIFBPTF9JbnN0YWxsX2NvcmVmb250cwotLSAgICAg ICAgcG9wZAotK1BPTF9XaW5lX0luc3RhbGxGb250cygpIHsKLSsgICMgSW5zdGFsbCBtaWNyb3Nv ZnQgZm9udHMKLSsgICMgVXNhZ2U6IFBPTF9XaW5lX0luc3RhbGxGb250cwotKyAgcHVzaGQgLgot KyAgUE9MX0NhbGwgUE9MX0luc3RhbGxfY29yZWZvbnRzCi0rICBwb3BkCi0gfQotIAotLVNldF9T b3VuZEhhcmR3YXJlQWNjZWxlcmF0aW9uICgpCi0tewotLQkjIFNldCBzb3VuZCBkcml2ZXIgaGFy ZHdhcmUgYWNjZWxlcmF0aW9uCi0tCSMgVmFsdWVzIDogRnVsbCwgU3RhbmRhcmQsIEJhc2ljLCBF bXVsYXRpb24KLS0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgU291bmQgSGFyZHdhcmVBY2Nl bGVyYXRpb24gdG8gJDEiCi0tCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRh bCAiV0lORVBSRUZJWCBub3Qgc2V0IgotLQotLQlpZiBbIC1uICIkMSIgXTsgdGhlbgotLQkJUE9M X1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0U291bmQnICdIYXJkd2FyZUFjY2Vs ZXJhdGlvbicgIiQxIgotLQllbHNlCi0tCQkjIEZJWE1FOiBzaG91bGQgd2UgZHJvcCB0aGUgbmFt ZSBpbnN0ZWFkPwotLQkJUE9MX0RlYnVnX1dhcm5pbmcgIkhhcmR3YXJlIGFjY2VsZXJhdGlvbiBt b2RlIG1pc3NpbmcsIHNraXBwZWQiCi0tCWZpCi0rU2V0X1NvdW5kSGFyZHdhcmVBY2NlbGVyYXRp b24oKSB7Ci0rICAjIFNldCBzb3VuZCBkcml2ZXIgaGFyZHdhcmUgYWNjZWxlcmF0aW9uCi0rICAj IFZhbHVlcyA6IEZ1bGwsIFN0YW5kYXJkLCBCYXNpYywgRW11bGF0aW9uCi0rICBQT0xfRGVidWdf TWVzc2FnZSAiU2V0dGluZyBTb3VuZCBIYXJkd2FyZUFjY2VsZXJhdGlvbiB0byAkMSIKLSsgIFsg LXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0 IgotKwotKyAgaWYgWyAtbiAiJDEiIF07IHRoZW4KLSsgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0 cnlXaW5lUGFpciAnRGlyZWN0U291bmQnICdIYXJkd2FyZUFjY2VsZXJhdGlvbicgIiQxIgotKyAg ZWxzZQotKyAgICAjIEZJWE1FOiBzaG91bGQgd2UgZHJvcCB0aGUgbmFtZSBpbnN0ZWFkPwotKyAg ICBQT0xfRGVidWdfV2FybmluZyAiSGFyZHdhcmUgYWNjZWxlcmF0aW9uIG1vZGUgbWlzc2luZywg c2tpcHBlZCIKLSsgIGZpCi0gfQotIAotLVNldF9Tb3VuZEVtdWxEcml2ZXIgKCkKLS17Ci0tCSMg U2V0IHNvdW5kIGVtdWwgZHJpdmVyCi0tCSMgVXNhZ2U6IFNldF9Tb3VuZEVtdWxEcml2ZXIoWXxO KQotLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBTb3VuZCBFbXVsRHJpdmVyIHRvICQxIgot LQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90 IHNldCIKLS0KLS0JaWYgWyAtbiAiJDEiIF07IHRoZW4KLS0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lz dHJ5V2luZVBhaXIgJ0RpcmVjdFNvdW5kJyAnRW11bERyaXZlcicgIiQxIgotLQllbHNlCi0tCQkj IEZJWE1FOiBzaG91bGQgd2UgZHJvcCB0aGUgbmFtZSBpbnN0ZWFkPwotLQkJUE9MX0RlYnVnX1dh cm5pbmcgIlNvdW5kIGVtdWxhdGlvbiBtb2RlIG1pc3NpbmcsIHNraXBwZWQiCi0tCWZpCi0rU2V0 X1NvdW5kRW11bERyaXZlcigpIHsKLSsgICMgU2V0IHNvdW5kIGVtdWwgZHJpdmVyCi0rICAjIFVz YWdlOiBTZXRfU291bmRFbXVsRHJpdmVyKFl8TikKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0 aW5nIFNvdW5kIEVtdWxEcml2ZXIgdG8gJDEiCi0rICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQ T0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLSsKLSsgIGlmIFsgLW4gIiQxIiBd OyB0aGVuCi0rICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNvdW5k JyAnRW11bERyaXZlcicgIiQxIgotKyAgZWxzZQotKyAgICAjIEZJWE1FOiBzaG91bGQgd2UgZHJv cCB0aGUgbmFtZSBpbnN0ZWFkPwotKyAgICBQT0xfRGVidWdfV2FybmluZyAiU291bmQgZW11bGF0 aW9uIG1vZGUgbWlzc2luZywgc2tpcHBlZCIKLSsgIGZpCi0gfQotIAotLVBPTF9Mb2FkVmFyX1BS T0dSQU1GSUxFUygpCi0tewotLQkjIEdldCBQcm9ncmFtIEZpbGVzIGZvbGRlciBuYW1lIGFuZCBz dG9yZSBpdCB0byBQUk9HUkFNRklMRVMgdmFyaWFibGUKLS0JIyBVc2FnZTogUE9MX0xvYWRWYXJf UFJPR1JBTUZJTEVTCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJHZXR0aW5nIFByb2dyYW0gRmlsZXMg bmFtZSIKLS0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJF RklYIG5vdCBzZXQiCi0tCi0tCVBST0dSQU1GSUxFUz1gUE9MX1dpbmUgY21kIC9jIGVjaG8gIiVQ cm9ncmFtRmlsZXMlIiB8dHIgLWQgJ1wwMTVcMDEyJ2AKLS0JaWYgWyAiJHtQUk9HUkFNRklMRVN9 IiA9ICIlUHJvZ3JhbUZpbGVzJSIgXQotLQl0aGVuICMgVmFyIGlzIG5vdCBkZWZpbmVkIGJ5IHdp bmUKLS0JCWV4cG9ydCBQUk9HUkFNRklMRVM9IlByb2dyYW0gRmlsZXMiCi0tCWVsc2UKLS0JCWV4 cG9ydCBQUk9HUkFNRklMRVM9IiR7UFJPR1JBTUZJTEVTOjN9IgotLQlmaQotK1BPTF9Mb2FkVmFy X1BST0dSQU1GSUxFUygpIHsKLSsgICMgR2V0IFByb2dyYW0gRmlsZXMgZm9sZGVyIG5hbWUgYW5k IHN0b3JlIGl0IHRvIFBST0dSQU1GSUxFUyB2YXJpYWJsZQotKyAgIyBVc2FnZTogUE9MX0xvYWRW YXJfUFJPR1JBTUZJTEVTCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiR2V0dGluZyBQcm9ncmFtIEZp bGVzIG5hbWUiCi0rICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJ TkVQUkVGSVggbm90IHNldCIKLSsKLSsgIFBST0dSQU1GSUxFUz0kKFBPTF9XaW5lIGNtZCAvYyBl Y2hvICIlUHJvZ3JhbUZpbGVzJSIgfCB0ciAtZCAnXDAxNVwwMTInKQotKyAgaWYgWyAiJHtQUk9H UkFNRklMRVN9IiA9ICIlUHJvZ3JhbUZpbGVzJSIgXTsgdGhlbiAjIFZhciBpcyBub3QgZGVmaW5l ZCBieSB3aW5lCi0rICAgIGV4cG9ydCBQUk9HUkFNRklMRVM9IlByb2dyYW0gRmlsZXMiCi0rICBl bHNlCi0rICAgIGV4cG9ydCBQUk9HUkFNRklMRVM9IiR7UFJPR1JBTUZJTEVTOjN9IgotKyAgZmkK LSB9Ci0gCi0tU2V0X1dpbmVXaW5kb3dUaXRsZSAoKQotLXsKLS0JI25hbWUgb2Ygd2luZG93ZWQg dGl0bGU6JDEKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZG93IHRpdGxlIgotLQlb IC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNl dCIKLStTZXRfV2luZVdpbmRvd1RpdGxlKCkgewotKyAgI25hbWUgb2Ygd2luZG93ZWQgdGl0bGU6 JDEKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmRvdyB0aXRsZSIKLSsgIFsgLXog IiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0Igot IAotLQlQT0xfRGVidWdfV2FybmluZyAiU2V0X1dpbmVXaW5kb3dUaXRsZSBoYXMgYmVlbiBkZXBy ZWNhdGVkICgjNTExOCkiCi0rICBQT0xfRGVidWdfV2FybmluZyAiU2V0X1dpbmVXaW5kb3dUaXRs ZSBoYXMgYmVlbiBkZXByZWNhdGVkICgjNTExOCkiCi0gfQotIAotLVBPTF9Mb2FkVmFyX0Rldmlj ZSAoKQotLXsKLS0JIyBHZXQgR1BVIGRldmljZSBpZCBhbmQgdmVuZG9yIGlkCi0tCSMgVXNhZ2U6 IFBPTF9Mb2FkVmFyX0RldmljZSBbLS1ub24taW50ZXJhY3RpdmVdCi0tCSMgUmVzdWx0cyBhcmUg c3RvcmVkIGluIFZlbmRvcklEIGFuZCBEZXZpY2VJRCB2YXJpYWJsZXMKLS0KLS0JbG9jYWwgSU5U RVJBQ1RJVkU9MQotLQlpZiBbICIkMSIgPSAiLS1ub24taW50ZXJhY3RpdmUiIF07IHRoZW4KLS0J CUlOVEVSQUNUSVZFPScnCi0tCQlzaGlmdAotLQlmaQotLQotLQlbICIkSU5URVJBQ1RJVkUiIF0g JiYgUE9MX1NldHVwV2luZG93X3dhaXQgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGls ZSAkQVBQTElDQVRJT05fVElUTEUgaXMgc2Nhbm5pbmcgeW91ciBoYXJkd2FyZScpIiAiJFRJVExF IgotLQlWR0FfREVWSUNFUz0iJChQT0xfRGV0ZWN0VmlkZW9DYXJkcykiCi0tCSMgTW9yZSB0aGFu IG9uZSBjYXJkIGF2YWlsYWJsZT8KLS0JaWYgZ3JlcCAtcSAnficgPDw8IiRWR0FfREVWSUNFUyI7 IHRoZW4KLS0JCWlmIFsgIiRJTlRFUkFDVElWRSIgXTsgdGhlbgotLQkJCWxvY2FsIE9MRF9BUFBf QU5TV0VSPSIkQVBQX0FOU1dFUiIKLS0JCQlQT0xfU2V0dXBXaW5kb3dfbWVudSAiJChldmFsX2dl dHRleHQgJ1NlbGVjdCB0aGUgbWFpbiB2aWRlb2NhcmQgdG8gcmVwb3J0OicpIiAiJFRJVExFIiAi JFZHQV9ERVZJQ0VTIiAifiIKLS0JCQlWR0FfREVWSUNFUz0iJEFQUF9BTlNXRVIiCi0tCQkJQVBQ X0FOU1dFUj0iJE9MRF9BUFBfQU5TV0VSIgotLQkJZWxzZQotLQkJCSMgQ2FuJ3QgYXNrIHVzZXIs IHBpY2sgZmlyc3QKLS0JCQlWR0FfREVWSUNFUz0iJHtWR0FfREVWSUNFUyUlfip9IgotLQkJZmkK LS0JZmkKLS0JZXhwb3J0IFZlbmRvcklEPWBjdXQgLWQnfCcgLWYyIDw8PCIkVkdBX0RFVklDRVMi YAotLQlleHBvcnQgRGV2aWNlSUQ9YGN1dCAtZCd8JyAtZjMgPDw8IiRWR0FfREVWSUNFUyJgCi0t CVBPTF9EZWJ1Z19NZXNzYWdlICJWZW5kb3JJRCA6ICRWZW5kb3JJRCIKLS0JUE9MX0RlYnVnX01l c3NhZ2UgIkRldmljZUlEIDogJERldmljZUlEIgotK1BPTF9Mb2FkVmFyX0RldmljZSgpIHsKLSsg ICMgR2V0IEdQVSBkZXZpY2UgaWQgYW5kIHZlbmRvciBpZAotKyAgIyBVc2FnZTogUE9MX0xvYWRW YXJfRGV2aWNlIFstLW5vbi1pbnRlcmFjdGl2ZV0KLSsgICMgUmVzdWx0cyBhcmUgc3RvcmVkIGlu IFZlbmRvcklEIGFuZCBEZXZpY2VJRCB2YXJpYWJsZXMKLSsKLSsgIGxvY2FsIElOVEVSQUNUSVZF PTEKLSsgIGlmIFsgIiQxIiA9ICItLW5vbi1pbnRlcmFjdGl2ZSIgXTsgdGhlbgotKyAgICBJTlRF UkFDVElWRT0nJwotKyAgICBzaGlmdAotKyAgZmkKLSsKLSsgIFsgIiRJTlRFUkFDVElWRSIgXSAm JiBQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxl ICRBUFBMSUNBVElPTl9USVRMRSBpcyBzY2FubmluZyB5b3VyIGhhcmR3YXJlJykiICIkVElUTEUi Ci0rICBWR0FfREVWSUNFUz0iJChQT0xfRGV0ZWN0VmlkZW9DYXJkcykiCi0rICAjIE1vcmUgdGhh biBvbmUgY2FyZCBhdmFpbGFibGU/Ci0rICBpZiBncmVwIC1xICd+JyA8PDwiJFZHQV9ERVZJQ0VT IjsgdGhlbgotKyAgICBpZiBbICIkSU5URVJBQ1RJVkUiIF07IHRoZW4KLSsgICAgICBsb2NhbCBP TERfQVBQX0FOU1dFUj0iJEFQUF9BTlNXRVIiCi0rICAgICAgUE9MX1NldHVwV2luZG93X21lbnUg IiQoZXZhbF9nZXR0ZXh0ICdTZWxlY3QgdGhlIG1haW4gdmlkZW9jYXJkIHRvIHJlcG9ydDonKSIg IiRUSVRMRSIgIiRWR0FfREVWSUNFUyIgIn4iCi0rICAgICAgVkdBX0RFVklDRVM9IiRBUFBfQU5T V0VSIgotKyAgICAgIEFQUF9BTlNXRVI9IiRPTERfQVBQX0FOU1dFUiIKLSsgICAgZWxzZQotKyAg ICAgICMgQ2FuJ3QgYXNrIHVzZXIsIHBpY2sgZmlyc3QKLSsgICAgICBWR0FfREVWSUNFUz0iJHtW R0FfREVWSUNFUyUlfip9IgotKyAgICBmaQotKyAgZmkKLSsgIGV4cG9ydCBWZW5kb3JJRD0kKGN1 dCAtZCd8JyAtZjIgPDw8IiRWR0FfREVWSUNFUyIpCi0rICBleHBvcnQgRGV2aWNlSUQ9JChjdXQg LWQnfCcgLWYzIDw8PCIkVkdBX0RFVklDRVMiKQotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlZlbmRv cklEIDogJFZlbmRvcklEIgotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkRldmljZUlEIDogJERldmlj ZUlEIgotIH0KLSAKLS1QT0xfRGV0ZWN0VmlkZW9DYXJkcyAoKSB7Ci0tCSMgRGV0ZWN0IGtub3du IHZpZGVvY2FyZHMKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIkdldHRpbmdzIEdQVSBpbmZvcm1hdGlv bnMiCi0tICAgICAgICBjYXNlICIkUE9MX09TIiBpbgotLSAgICAgICAgICAgIExpbnV4fEZyZWVC U0QpCi0tCQlbIC14IC91c3Ivc2Jpbi9sc3BjaSBdICYmIExTUENJPS91c3Ivc2Jpbi9sc3BjaSB8 fCBMU1BDST1sc3BjaQotLQkJIyBEZXZpY2UgTmFtZXxWZW5kb3IgSUR8RGV2aWNlIElEXG4uLi4K LS0gICAgICAgICAgICAgICAgIyBbMDMwMF0gPSBWR0EgY29tcGF0aWJsZSBjb250cm9sbGVyLCBb MDMwMl0gPSAzRCBjb250cm9sbGVyCi0tCQlWR0FfREVWSUNFUz1gJExTUENJIC1ubiB8IHBlcmwg LW5lICdpZiAoL1xbMDMwWzAyXVxdLykgeyBzLy4qXF06ICguKikgXFsoWzAtOWEtZl17NH0pOihb MC05YS1mXXs0fSlcXS4qL1wxfFwyfFwzLzsgcHJpbnQgfSdgCi0tICAgICAgICAgICAgICAgIDs7 Ci0tICAgICAgICAgICAgTWFjKQotLQkJIyBEZXZpY2UgTmFtZXxWZW5kb3IgSUR8RGV2aWNlIElE XG4uLi4KLS0JCVZHQV9ERVZJQ0VTPWBzeXN0ZW1fcHJvZmlsZXIgU1BEaXNwbGF5c0RhdGFUeXBl IHwgcGVybCAtbmUgJ3MvXlxzKy8vOyBpZigvQ2hpcHNldCBNb2RlbDovKSB7IGNob21wOyBzL15b XjpdKjogLy87IHByaW50ICIkX3wiIH0gZWxzaWYoL1ZlbmRvcjovKSB7IGNob21wOyBzLy4qXCgw eCguKilcKS9cMS87IHByaW50ICIkMXwiIH0gZWxzaWYgKC9EZXZpY2UgSUQ6LykgeyBzL15bXjpd KjogMHgvLzsgcHJpbnQgfSdgCi0tICAgICAgICAgICAgICAgIDs7Ci0tICAgICAgICAgICAgKikK LS0gICAgICAgICAgICAgICAgUE9MX0RlYnVnX0ZhdGFsICJVbnN1cHBvc2VkIG9wZXJhdGluZyBz eXN0ZW06ICRQT0xfT1MiCi0tICAgICAgICBlc2FjCi0tCSMgTW9yZSB0aGFuIG9uZSBjYXJkIGF2 YWlsYWJsZT8KLS0JaWYgWyAkKHdjIC1sIDw8PCIkVkdBX0RFVklDRVMiKSAtZ3QgMSBdOyB0aGVu Ci0tCQkjIFRyeSB0byBwdXQgd2hhdCdzIHByb2JhYmx5IHRoZSBtYWluIGNhcmQgZmlyc3QKLS0J CVZHQV9ERVZJQ0VTPWBncmVwIC1pRSAnbnZpZGlhfGF0aXxhbWQnIDw8PCIkVkdBX0RFVklDRVMi OyBncmVwIC1pRXYgJ252aWRpYXxhdGl8YW1kJyA8PDwiJFZHQV9ERVZJQ0VTImAKLS0JZmkKLS0J IyBEZXZpY2UgTmFtZXxWZW5kb3IgSUR8RGV2aWNlIElEfi4uLgotLQllY2hvIC1uICIkVkdBX0RF VklDRVMifHRyICJcbiIgIn4iCi0rUE9MX0RldGVjdFZpZGVvQ2FyZHMoKSB7Ci0rICAjIERldGVj dCBrbm93biB2aWRlb2NhcmRzCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiR2V0dGluZ3MgR1BVIGlu Zm9ybWF0aW9ucyIKLSsgIGNhc2UgIiRQT0xfT1MiIGluCi0rICBMaW51eCB8IEZyZWVCU0QpCi0r ICAgIFsgLXggL3Vzci9zYmluL2xzcGNpIF0gJiYgTFNQQ0k9L3Vzci9zYmluL2xzcGNpIHx8IExT UENJPWxzcGNpCi0rICAgICMgRGV2aWNlIE5hbWV8VmVuZG9yIElEfERldmljZSBJRFxuLi4uCi0r ICAgICMgWzAzMDBdID0gVkdBIGNvbXBhdGlibGUgY29udHJvbGxlciwgWzAzMDJdID0gM0QgY29u dHJvbGxlcgotKyAgICBWR0FfREVWSUNFUz0kKCRMU1BDSSAtbm4gfCBwZXJsIC1uZSAnaWYgKC9c WzAzMFswMl1cXS8pIHsgcy8uKlxdOiAoLiopIFxbKFswLTlhLWZdezR9KTooWzAtOWEtZl17NH0p XF0uKi9cMXxcMnxcMy87IHByaW50IH0nKQotKyAgICA7OwotKyAgTWFjKQotKyAgICAjIERldmlj ZSBOYW1lfFZlbmRvciBJRHxEZXZpY2UgSURcbi4uLgotKyAgICBWR0FfREVWSUNFUz0kKHN5c3Rl bV9wcm9maWxlciBTUERpc3BsYXlzRGF0YVR5cGUgfCBwZXJsIC1uZSAncy9eXHMrLy87IGlmKC9D aGlwc2V0IE1vZGVsOi8pIHsgY2hvbXA7IHMvXlteOl0qOiAvLzsgcHJpbnQgIiRffCIgfSBlbHNp ZigvVmVuZG9yOi8pIHsgY2hvbXA7IHMvLipcKDB4KC4qKVwpL1wxLzsgcHJpbnQgIiQxfCIgfSBl bHNpZiAoL0RldmljZSBJRDovKSB7IHMvXlteOl0qOiAweC8vOyBwcmludCB9JykKLSsgICAgOzsK LSsgICopCi0rICAgIFBPTF9EZWJ1Z19GYXRhbCAiVW5zdXBwb3NlZCBvcGVyYXRpbmcgc3lzdGVt OiAkUE9MX09TIgotKyAgICA7OwotKyAgZXNhYwotKyAgIyBNb3JlIHRoYW4gb25lIGNhcmQgYXZh aWxhYmxlPwotKyAgaWYgWyAkKHdjIC1sIDw8PCIkVkdBX0RFVklDRVMiKSAtZ3QgMSBdOyB0aGVu Ci0rICAgICMgVHJ5IHRvIHB1dCB3aGF0J3MgcHJvYmFibHkgdGhlIG1haW4gY2FyZCBmaXJzdAot KyAgICBWR0FfREVWSUNFUz0kKAotKyAgICAgIGdyZXAgLWlFICdudmlkaWF8YXRpfGFtZCcgPDw8 IiRWR0FfREVWSUNFUyIKLSsgICAgICBncmVwIC1pRXYgJ252aWRpYXxhdGl8YW1kJyA8PDwiJFZH QV9ERVZJQ0VTIgotKyAgICApCi0rICBmaQotKyAgIyBEZXZpY2UgTmFtZXxWZW5kb3IgSUR8RGV2 aWNlIElEfi4uLgotKyAgZWNobyAtbiAiJFZHQV9ERVZJQ0VTIiB8IHRyICJcbiIgIn4iCi0gfQot IAotLVBPTF9Mb2FkVmFyX1NjcmVlblJlc29sdXRpb24gKCkKLS17Ci0tCWlmIFsgIiRQT0xfT1Mi ID0gIkxpbnV4IiBdIHx8IFsgIiRQT0xfT1MiID0gIkZyZWVCU0QiIF07IHRoZW4KLS0JCWxvY2Fs IFJFU09MVVRJT049IiQoeGRweWluZm8gfCBncmVwIGRpbWVuc2lvbnMgfCBhd2sgJ3twcmludCAk Mn0nKSIKLS0JCWV4cG9ydCBTY3JlZW5XaWR0aD0iJChlY2hvICRSRVNPTFVUSU9OIHwgY3V0IC1k eCAtZjEpIgotLQkJZXhwb3J0IFNjcmVlbkhlaWdodD0iJChlY2hvICRSRVNPTFVUSU9OIHwgY3V0 IC1keCAtZjIpIgotLQlmaQotLQlpZiBbICIkUE9MX09TIiA9ICJNYWMiIF07IHRoZW4KLS0JCWV4 cG9ydCBTY3JlZW5XaWR0aD0iJCgvdXNyL3NiaW4vc3lzdGVtX3Byb2ZpbGVyIFNQRGlzcGxheXNE YXRhVHlwZSB8IGdyZXAgUmVzb2x1dGlvbnwgYXdrICd7cHJpbnQgJDJ9JykiCi0tCQlleHBvcnQg U2NyZWVuSGVpZ2h0PSIkKC91c3Ivc2Jpbi9zeXN0ZW1fcHJvZmlsZXIgU1BEaXNwbGF5c0RhdGFU eXBlIHwgZ3JlcCBSZXNvbHV0aW9ufCBhd2sgJ3twcmludCAkNH0nKSIKLS0JZmkKLS0JUE9MX0Rl YnVnX01lc3NhZ2UgIlNjcmVlbiB3aWR0aDogJFNjcmVlbldpZHRoIgotLQlQT0xfRGVidWdfTWVz c2FnZSAiU2NyZWVuIGhlaWdodDogJFNjcmVlbkhlaWdodCIKLStQT0xfTG9hZFZhcl9TY3JlZW5S ZXNvbHV0aW9uKCkgewotKyAgaWYgWyAiJFBPTF9PUyIgPSAiTGludXgiIF0gfHwgWyAiJFBPTF9P UyIgPSAiRnJlZUJTRCIgXTsgdGhlbgotKyAgICBsb2NhbCBSRVNPTFVUSU9OPSIkKHhkcHlpbmZv IHwgZ3JlcCBkaW1lbnNpb25zIHwgYXdrICd7cHJpbnQgJDJ9JykiCi0rICAgIGV4cG9ydCBTY3Jl ZW5XaWR0aD0iJChlY2hvICRSRVNPTFVUSU9OIHwgY3V0IC1keCAtZjEpIgotKyAgICBleHBvcnQg U2NyZWVuSGVpZ2h0PSIkKGVjaG8gJFJFU09MVVRJT04gfCBjdXQgLWR4IC1mMikiCi0rICBmaQot KyAgaWYgWyAiJFBPTF9PUyIgPSAiTWFjIiBdOyB0aGVuCi0rICAgIGV4cG9ydCBTY3JlZW5XaWR0 aD0iJCgvdXNyL3NiaW4vc3lzdGVtX3Byb2ZpbGVyIFNQRGlzcGxheXNEYXRhVHlwZSB8IGdyZXAg UmVzb2x1dGlvbiB8IGF3ayAne3ByaW50ICQyfScpIgotKyAgICBleHBvcnQgU2NyZWVuSGVpZ2h0 PSIkKC91c3Ivc2Jpbi9zeXN0ZW1fcHJvZmlsZXIgU1BEaXNwbGF5c0RhdGFUeXBlIHwgZ3JlcCBS ZXNvbHV0aW9uIHwgYXdrICd7cHJpbnQgJDR9JykiCi0rICBmaQotKyAgUE9MX0RlYnVnX01lc3Nh Z2UgIlNjcmVlbiB3aWR0aDogJFNjcmVlbldpZHRoIgotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNj cmVlbiBoZWlnaHQ6ICRTY3JlZW5IZWlnaHQiCi0gfQotIAotLVBPTF9XaW5lX1NldFZpZGVvRHJp dmVyKCkKLS17Ci0tCSMgU2V0IHdpbmUgdmlkZW8gZHJpdmVyCi0tCSMgVXNhZ2UgUE9MX1dpbmVf U2V0VmlkZW9Ecml2ZXIKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldCB3aW5lIHZpZGVvIGRyaXZl ciIKLS0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklY IG5vdCBzZXQiCi0tCVBPTF9Mb2FkVmFyX0RldmljZQotLQlEUlZJRD0idmdhLmRsbCIKLS0JWyAi JFZlbmRvcklEIiA9ICIxMGRlIiBdICYmIERSVklEPSJudjRfZGlzcC5kbGwiCi0tCVsgIiRWZW5k b3JJRCIgPSAiMTAwMiIgXSAmJiBEUlZJRD0iYXRpMmR2YWcuZGxsIgotLQlbICIkVmVuZG9ySUQi ID0gIjgwODYiIF0gJiYgRFJWSUQ9ImlnNGljZDMyLmRsbCIKLS0JUE9MX0RlYnVnX01lc3NhZ2Ug IkRldGVjdGVkIHZpZGVvIGRyaXZlcjogJERSVklEIgotLQotLQlQT0xfV2luZV9VcGRhdGVSZWdp c3RyeSBWR0FfSURfZml4IDw8LSBfRU9GSU5JXwotK1BPTF9XaW5lX1NldFZpZGVvRHJpdmVyKCkg ewotKyAgIyBTZXQgd2luZSB2aWRlbyBkcml2ZXIKLSsgICMgVXNhZ2UgUE9MX1dpbmVfU2V0Vmlk ZW9Ecml2ZXIKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXQgd2luZSB2aWRlbyBkcml2ZXIiCi0r ICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90 IHNldCIKLSsgIFBPTF9Mb2FkVmFyX0RldmljZQotKyAgRFJWSUQ9InZnYS5kbGwiCi0rICBbICIk VmVuZG9ySUQiID0gIjEwZGUiIF0gJiYgRFJWSUQ9Im52NF9kaXNwLmRsbCIKLSsgIFsgIiRWZW5k b3JJRCIgPSAiMTAwMiIgXSAmJiBEUlZJRD0iYXRpMmR2YWcuZGxsIgotKyAgWyAiJFZlbmRvcklE IiA9ICI4MDg2IiBdICYmIERSVklEPSJpZzRpY2QzMi5kbGwiCi0rICBQT0xfRGVidWdfTWVzc2Fn ZSAiRGV0ZWN0ZWQgdmlkZW8gZHJpdmVyOiAkRFJWSUQiCi0rCi0rICBQT0xfV2luZV9VcGRhdGVS ZWdpc3RyeSBWR0FfSURfZml4IDw8LV9FT0ZJTklfCi0gCVtIS0VZX0NVUlJFTlRfVVNFUlxcU29m dHdhcmVcXFdpbmVcXERpcmVjdDNEXQotIAkiVmlkZW9QQ0lWZW5kb3JJRCI9ZHdvcmQ6MDAwMCRW ZW5kb3JJRAotIAkiVmlkZW9QQ0lEZXZpY2VJRCI9ZHdvcmQ6MDAwMCREZXZpY2VJRAotQEAgLTQ2 Nyw4MDAgKzQ1MSw3NzcgQEAgUE9MX1dpbmVfU2V0VmlkZW9Ecml2ZXIoKQotIAlfRU9GSU5JXwot IH0KLSAKLS1QT0xfV2luZV9EZXRlY3RDYXJkKCkKLS17Ci0tCSMgU2V0IHdpbmUgdmlkZW8gZHJp dmVyCi0tCSMgVXNhZ2UgUE9MX1dpbmVfRGV0ZWN0Q2FyZAotLQlQT0xfRGVidWdfTWVzc2FnZSAi RGV0ZWN0aW5nIHZpZGVvIGNhcmQiCi0tCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1 Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotLQlQT0xfTG9hZFZhcl9EZXZpY2UKLS0JRFJW SUQ9Ik9USEVSIgotLQlbICIkVmVuZG9ySUQiID0gIjEwZGUiIF0gJiYgRFJWSUQ9Ik5WSURJQSIK LS0JWyAiJFZlbmRvcklEIiA9ICIxMDAyIiBdICYmIERSVklEPSJBVEkiCi0tCVsgIiRWZW5kb3JJ RCIgPSAiODA4NiIgXSAmJiBEUlZJRD0iSU5URUwiCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJEZXRl Y3RlZCB2aWRlbyBjYXJkOiAkRFJWSUQiCi0tCi0tCWVjaG8gJERSVklECi0rUE9MX1dpbmVfRGV0 ZWN0Q2FyZCgpIHsKLSsgICMgU2V0IHdpbmUgdmlkZW8gZHJpdmVyCi0rICAjIFVzYWdlIFBPTF9X aW5lX0RldGVjdENhcmQKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJEZXRlY3RpbmcgdmlkZW8gY2Fy ZCIKLSsgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJ WCBub3Qgc2V0IgotKyAgUE9MX0xvYWRWYXJfRGV2aWNlCi0rICBEUlZJRD0iT1RIRVIiCi0rICBb ICIkVmVuZG9ySUQiID0gIjEwZGUiIF0gJiYgRFJWSUQ9Ik5WSURJQSIKLSsgIFsgIiRWZW5kb3JJ RCIgPSAiMTAwMiIgXSAmJiBEUlZJRD0iQVRJIgotKyAgWyAiJFZlbmRvcklEIiA9ICI4MDg2IiBd ICYmIERSVklEPSJJTlRFTCIKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJEZXRlY3RlZCB2aWRlbyBj YXJkOiAkRFJWSUQiCi0rCi0rICBlY2hvICREUlZJRAotIH0KLSAKLS0KLS0KLS1QT0xfQXV0b1dp bmUgKCkKLS17Ci0tCSMgRGV0ZWN0IGlmIHRoZSBmaWxlIGlzIGEgLmV4ZSBvciBhIC5tc2kgZmls ZSBhbmQgcnVuIGl0IHdpdGggUE9MX1dpbmUKLS0JIyBTYW1lIHVzYWdlIHRoYW4gIndpbmUiCi0t CVNFVFVQX1BBVEg9IiRAIgotLQkjIHJlbW92ZSBldmVyeXRoaW5nIHVwIHRvIHRoZSBsYXN0IGRv dAotLQlleHRlbnNpb249IiR7U0VUVVBfUEFUSCMjKi59IgotLQlpZiBbICIkZXh0ZW5zaW9uIiA9 ICJtc2kiIF0KLS0JdGhlbgotLQkJUE9MX1dpbmUgbXNpZXhlYyAvaSAiJFNFVFVQX1BBVEgiCi0t CWVsc2UKLS0JCSMgRklYTUUgL3VuaXg/Ci0tCQlQT0xfV2luZSAiJFNFVFVQX1BBVEgiCi0tCWZp Ci0rUE9MX0F1dG9XaW5lKCkgewotKyAgIyBEZXRlY3QgaWYgdGhlIGZpbGUgaXMgYSAuZXhlIG9y IGEgLm1zaSBmaWxlIGFuZCBydW4gaXQgd2l0aCBQT0xfV2luZQotKyAgIyBTYW1lIHVzYWdlIHRo YW4gIndpbmUiCi0rICBTRVRVUF9QQVRIPSIkQCIKLSsgICMgcmVtb3ZlIGV2ZXJ5dGhpbmcgdXAg dG8gdGhlIGxhc3QgZG90Ci0rICBleHRlbnNpb249IiR7U0VUVVBfUEFUSCMjKi59IgotKyAgaWYg WyAiJGV4dGVuc2lvbiIgPSAibXNpIiBdOyB0aGVuCi0rICAgIFBPTF9XaW5lIG1zaWV4ZWMgL2kg IiRTRVRVUF9QQVRIIgotKyAgZWxzZQotKyAgICAjIEZJWE1FIC91bml4PwotKyAgICBQT0xfV2lu ZSAiJFNFVFVQX1BBVEgiCi0rICBmaQotIH0KLSAKLS1QT0xfV2luZSAoKQotLXsKLS0JIyBSdW4g dGhlIGdvb2Qgd2luZXZlcnNpb24gYW5kIHN0b3JlIHRoZSByZXN1bHQgdG8gYSBsb2dmaWxlCi0t CSMgU2FtZSB1c2FnZSB0aGFuICJ3aW5lIgotLQlta2RpciAtcCAiJFdJTkVQUkVGSVgiCi0tCXRv dWNoICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciCi0tCWxvY2FsIE5vRXJyb3JzCi0tCWlm IFsgIiQxIiA9ICItLWlnbm9yZS1lcnJvcnMiIF07IHRoZW4KLS0JCU5vRXJyb3JzPSJUcnVlIgot LQkJc2hpZnQKLS0JZmkKLS0KLS0JaWYgWyAhICIkKFBPTF9Db25maWdfUmVhZCBOT19GU0NIRUNL KSIgPSAiVFJVRSIgXTsgdGhlbgotLQkJaWYgWyAiJDEiID0gInN0YXJ0IiBdOyB0aGVuCi0tCQkJ aWYgWyAiJDIiID0gIi91bml4IiBdOyB0aGVuCi0tCQkJCVBPTF9TeXN0ZW1fQ2hlY2tGUyAiJDMi Ci0tCQkJZWxzZQotLQkJCQlQT0xfU3lzdGVtX0NoZWNrRlMgIiQyIgotLQkJCWZpCi0tCQllbHNl Ci0tCQkJUE9MX1N5c3RlbV9DaGVja0ZTICIkMSIKLS0JCWZpCi0tCWVsc2UKLS0JCVBPTF9EZWJ1 Z19NZXNzYWdlICIqKiBGaWxlc3lzdGVtIGNoZWNrcyBkaXNhYmxlZCAqKiIKLS0JZmkKLS0KLS0J UE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIlJ1bm5pbmcg d2luZS0kUE9MX1dJTkVWRVJTSU9OICIkQCIgKFdvcmtpbmcgZGlyZWN0b3J5IDogJFBXRCkiCi0t CVBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAiUnVubmluZyB3aW5lLSRQT0xfV0lORVZFUlNJT04gIiRA IiAoV29ya2luZyBkaXJlY3RvcnkgOiAkUFdEKSIKLS0KLS0gICAgICAgICMgRWl0aGVyIHRoYXQg b3IgbW9uaXRvciAiZXJyOnByb2Nlc3M6Y3JlYXRlX3Byb2Nlc3Mgc3RhcnRpbmcgNjQtYml0IHBy b2Nlc3MgTCJ4eHgiIG5vdCBzdXBwb3J0ZWQgaW4gMzItYml0IHdpbmVwcmVmaXhcbndpbmU6IEJh ZCBFWEUgZm9ybWF0IGZvciB4eHguIiBpbiBsb2dzCi0tICAgICAgICBpZiBbICIkUE9MX0FSQ0gi ID0gIng4NiIgLWEgLWUgIiQxIiBdOyB0aGVuCi0tICAgICAgICAgICAgbG9jYWwgRVhFRklMRT0i JDEiCi0tICAgICAgICAgICAgaWYgUE9MX1N5c3RlbV9pczY0Yml0ICIkRVhFRklMRSI7IHRoZW4K LS0gICAgICAgICAgICAgICAgTk9CVUdSRVBPUlQ9IlRSVUUiICMgdXNlciBtaXN0YWtlCi0tICAg ICAgICAgICAgICAgIFBPTF9EZWJ1Z19GYXRhbCAiJChldmFsX2dldHRleHQgJ1N0YXJ0aW5nIDY0 LWJpdCBwcm9jZXNzICRFWEVGSUxFIGlzIG5vdCBzdXBwb3J0ZWQgaW4gMzItYml0IHZpcnR1YWwg ZHJpdmVzJykiCi0tICAgICAgICAgICAgZmkKLS0gICAgICAgIGZpCi0tCi0tICAgICAgICBpZiBb ICEgIiRXSU5FTUVOVUJVSUxERVJfQUxFUlQiIF07IHRoZW4KLS0JCVBPTF9EZWJ1Z19NZXNzYWdl ICJOb3RpY2U6IFBsYXlPbkxpbnV4IGRlbGliZXJhdGVseSBkaXNhYmxlcyB3aW5lbWVudWJ1aWxk ZXIuIFNlZSBodHRwOi8vd3d3LnBsYXlvbmxpbnV4LmNvbS9mci9wYWdlLTI2LVdpbmVtZW51YnVp bGRlci5odG1sIgotLQkJV0lORU1FTlVCVUlMREVSX0FMRVJUPSJEb25lIgotLQlmaQotLQlpZiBb ICIkMSIgPSAicmVnZWRpdCIgLWEgISAiJDIiID0gIiIgXTsgdGhlbgotLQkJaWYgWyAtZSAiJDIi IF07IHRoZW4KLS0JCQlQT0xfRGVidWdfTG9nVG9QcmVmaXggIkNvbnRlbnQgb2YgJDIiCi0tCQkJ KGVjaG8gJy0tLS0tLS0tLS0tJwotLQkJCSBjYXQgIiQyIgotLQkJCSBlY2hvICctLS0tLS0tLS0t LScpID4+ICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciCi0tCQllbHNlCi0tCQkJUE9MX0Rl YnVnX0xvZ1RvUHJlZml4ICJyZWdlZGl0IHBhcmFtZXRlciAnJDInIGlzIG5vdCBhIGZpbGUsIG5v dCBkdW1wZWQgdG8gbG9nIgotLQkJZmkKLS0JZWxpZiBbICIkMSIgPSAicmVnZWRpdCIgXTsgdGhl bgotLQkJUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJVc2VyIG1vZGlmaWVkIHNvbWV0aGluZyBpbiB0 aGUgcmVnaXN0cnkgbWFudWFsbHkiCi0tCWZpCi0tCi0tCi0tCWlmIFsgIiRQT0xfT1MiID0gIkxp bnV4IiBdIHx8IFsgIiRQT0xfT1MiID0gIk1hYyIgXTsKLS0JdGhlbgotLQkJaWYgWyAiJExPR0ZJ TEUiID0gIi9kZXYvbnVsbCIgXTsgdGhlbgotLQkJCSRCRUZPUkVfV0lORSAkKFBPTF9Db25maWdf UmVhZCBCRUZPUkVfV0lORSkgd2luZSAiJEAiICAyPiA+KGdyZXAgLXYgbWVudWJ1aWxkZXIgLS1s aW5lLWJ1ZmZlcmVkIHwgdGVlIC1hICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciID4mMikg PiA+KHRlZSAtYSAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIikKLS0JCQllcnJvcnM9JD8K LS0JCWVsc2UKLS0JCQkkQkVGT1JFX1dJTkUgJChQT0xfQ29uZmlnX1JlYWQgQkVGT1JFX1dJTkUp IHdpbmUgIiRAIiAyPiA+KGdyZXAgLXYgbWVudWJ1aWxkZXIgLS1saW5lLWJ1ZmZlcmVkIHwgdGVl IC1hICIkTE9HRklMRSIgIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIgPiYyKSA+ID4odGVl IC1hICIkTE9HRklMRSIgIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIpCi0tCQkJZXJyb3Jz PSQ/Ci0tCQlmaQotLQllbHNlCi0tCQkjIEZJWE1FCi0tCQkkQkVGT1JFX1dJTkUgJChQT0xfQ29u ZmlnX1JlYWQgQkVGT1JFX1dJTkUpIHdpbmUgIiRAIiAgMj4gIiRXSU5FUFJFRklYL3BsYXlvbmxp bnV4LmxvZyIgPiAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIgotLQkJZXJyb3JzPSQ/Ci0t CWZpCi0tCi0tCWlmIFsgIiRlcnJvcnMiICE9IDAgLWEgIiROb0Vycm9ycyIgIT0gIlRydWUiIC1h ICIkUE9MX0lnbm9yZVdpbmVFcnJvcnMiICE9ICJUcnVlIiBdOyB0aGVuCi0tCQlQT0xfRGVidWdf RXJyb3IgIiQoZXZhbF9nZXR0ZXh0ICdXaW5lIHNlZW1zIHRvIGhhdmUgY3Jhc2hlZFxuXG5JZiB5 b3VyIHByb2dyYW0gaXMgcnVubmluZywganVzdCBpZ25vcmUgdGhpcyBtZXNzYWdlJykiCi0tCWZp Ci0tCVBPTF9EZWJ1Z19NZXNzYWdlICJXaW5lIHJldHVybjogJGVycm9ycyIKLS0JcmV0dXJuICRl cnJvcnMKLStQT0xfV2luZSgpIHsKLSsgICMgUnVuIHRoZSBnb29kIHdpbmV2ZXJzaW9uIGFuZCBz dG9yZSB0aGUgcmVzdWx0IHRvIGEgbG9nZmlsZQotKyAgIyBTYW1lIHVzYWdlIHRoYW4gIndpbmUi Ci0rICBta2RpciAtcCAiJFdJTkVQUkVGSVgiCi0rICB0b3VjaCAiJFdJTkVQUkVGSVgvcGxheW9u bGludXgubG9nIgotKyAgbG9jYWwgTm9FcnJvcnMKLSsgIGlmIFsgIiQxIiA9ICItLWlnbm9yZS1l cnJvcnMiIF07IHRoZW4KLSsgICAgTm9FcnJvcnM9IlRydWUiCi0rICAgIHNoaWZ0Ci0rICBmaQot KwotKyAgaWYgWyAhICIkKFBPTF9Db25maWdfUmVhZCBOT19GU0NIRUNLKSIgPSAiVFJVRSIgXTsg dGhlbgotKyAgICBpZiBbICIkMSIgPSAic3RhcnQiIF07IHRoZW4KLSsgICAgICBpZiBbICIkMiIg PSAiL3VuaXgiIF07IHRoZW4KLSsgICAgICAgIFBPTF9TeXN0ZW1fQ2hlY2tGUyAiJDMiCi0rICAg ICAgZWxzZQotKyAgICAgICAgUE9MX1N5c3RlbV9DaGVja0ZTICIkMiIKLSsgICAgICBmaQotKyAg ICBlbHNlCi0rICAgICAgUE9MX1N5c3RlbV9DaGVja0ZTICIkMSIKLSsgICAgZmkKLSsgIGVsc2UK LSsgICAgUE9MX0RlYnVnX01lc3NhZ2UgIioqIEZpbGVzeXN0ZW0gY2hlY2tzIGRpc2FibGVkICoq IgotKyAgZmkKLSsKLSsgIFBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52Ci0rICBQT0xfRGVidWdf TWVzc2FnZSAiUnVubmluZyB3aW5lLSRQT0xfV0lORVZFUlNJT04gIiRAIiAoV29ya2luZyBkaXJl Y3RvcnkgOiAkUFdEKSIKLSsgIFBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAiUnVubmluZyB3aW5lLSRQ T0xfV0lORVZFUlNJT04gIiRAIiAoV29ya2luZyBkaXJlY3RvcnkgOiAkUFdEKSIKLSsKLSsgICMg RWl0aGVyIHRoYXQgb3IgbW9uaXRvciAiZXJyOnByb2Nlc3M6Y3JlYXRlX3Byb2Nlc3Mgc3RhcnRp bmcgNjQtYml0IHByb2Nlc3MgTCJ4eHgiIG5vdCBzdXBwb3J0ZWQgaW4gMzItYml0IHdpbmVwcmVm aXhcbndpbmU6IEJhZCBFWEUgZm9ybWF0IGZvciB4eHguIiBpbiBsb2dzCi0rICBpZiBbICIkUE9M X0FSQ0giID0gIng4NiIgLWEgLWUgIiQxIiBdOyB0aGVuCi0rICAgIGxvY2FsIEVYRUZJTEU9IiQx IgotKyAgICBpZiBQT0xfU3lzdGVtX2lzNjRiaXQgIiRFWEVGSUxFIjsgdGhlbgotKyAgICAgIE5P QlVHUkVQT1JUPSJUUlVFIiAjIHVzZXIgbWlzdGFrZQotKyAgICAgIFBPTF9EZWJ1Z19GYXRhbCAi JChldmFsX2dldHRleHQgJ1N0YXJ0aW5nIDY0LWJpdCBwcm9jZXNzICRFWEVGSUxFIGlzIG5vdCBz dXBwb3J0ZWQgaW4gMzItYml0IHZpcnR1YWwgZHJpdmVzJykiCi0rICAgIGZpCi0rICBmaQotKwot KyAgaWYgWyAhICIkV0lORU1FTlVCVUlMREVSX0FMRVJUIiBdOyB0aGVuCi0rICAgIFBPTF9EZWJ1 Z19NZXNzYWdlICJOb3RpY2U6IFBsYXlPbkxpbnV4IGRlbGliZXJhdGVseSBkaXNhYmxlcyB3aW5l bWVudWJ1aWxkZXIuIFNlZSBodHRwOi8vd3d3LnBsYXlvbmxpbnV4LmNvbS9mci9wYWdlLTI2LVdp bmVtZW51YnVpbGRlci5odG1sIgotKyAgICBXSU5FTUVOVUJVSUxERVJfQUxFUlQ9IkRvbmUiCi0r ICBmaQotKyAgaWYgWyAiJDEiID0gInJlZ2VkaXQiIC1hICEgIiQyIiA9ICIiIF07IHRoZW4KLSsg ICAgaWYgWyAtZSAiJDIiIF07IHRoZW4KLSsgICAgICBQT0xfRGVidWdfTG9nVG9QcmVmaXggIkNv bnRlbnQgb2YgJDIiCi0rICAgICAgKAotKyAgICAgICAgZWNobyAnLS0tLS0tLS0tLS0nCi0rICAg ICAgICBjYXQgIiQyIgotKyAgICAgICAgZWNobyAnLS0tLS0tLS0tLS0nCi0rICAgICAgKSA+PiIk V0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciCi0rICAgIGVsc2UKLSsgICAgICBQT0xfRGVidWdf TG9nVG9QcmVmaXggInJlZ2VkaXQgcGFyYW1ldGVyICckMicgaXMgbm90IGEgZmlsZSwgbm90IGR1 bXBlZCB0byBsb2ciCi0rICAgIGZpCi0rICBlbGlmIFsgIiQxIiA9ICJyZWdlZGl0IiBdOyB0aGVu Ci0rICAgIFBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAiVXNlciBtb2RpZmllZCBzb21ldGhpbmcgaW4g dGhlIHJlZ2lzdHJ5IG1hbnVhbGx5IgotKyAgZmkKLSsKLSsgIFtbICRPU1hfVkVSU0lPTiAtZ2Ug MTkgXV0gJiYgV0lORUNNRD0id2luZTMyb242NCIgfHwgV0lORUNNRD0id2luZSIKLSsgIFtbICRP U1hfVkVSU0lPTiAtZ2UgMTkgXV0gJiYgW1sgLWUgIiQxIiBdXSAmJiB4YXR0ciAtZCBjb20uYXBw bGUucXVhcmFudGluZSAiJDEiCi0rICBpZiBbICIkUE9MX09TIiA9ICJMaW51eCIgXSB8fCBbICIk UE9MX09TIiA9ICJNYWMiIF07IHRoZW4KLSsgICAgaWYgWyAiJExPR0ZJTEUiID0gIi9kZXYvbnVs bCIgXTsgdGhlbgotKyAgICAgICRCRUZPUkVfV0lORSAkKFBPTF9Db25maWdfUmVhZCBCRUZPUkVf V0lORSkgJFdJTkVDTUQgIiRAIiAyPiA+KGdyZXAgLXYgbWVudWJ1aWxkZXIgLS1saW5lLWJ1ZmZl cmVkIHwgdGVlIC1hICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciID4mMikgPiA+KHRlZSAt YSAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIikKLSsgICAgICBlcnJvcnM9JD8KLSsgICAg ZWxzZQotKyAgICAgICRCRUZPUkVfV0lORSAkKFBPTF9Db25maWdfUmVhZCBCRUZPUkVfV0lORSkg JFdJTkVDTUQgIiRAIiAyPiA+KGdyZXAgLXYgbWVudWJ1aWxkZXIgLS1saW5lLWJ1ZmZlcmVkIHwg dGVlIC1hICIkTE9HRklMRSIgIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIgPiYyKSA+ID4o dGVlIC1hICIkTE9HRklMRSIgIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIpCi0rICAgICAg ZXJyb3JzPSQ/Ci0rICAgIGZpCi0rICBlbHNlCi0rICAgICMgRklYTUUKLSsgICAgJEJFRk9SRV9X SU5FICQoUE9MX0NvbmZpZ19SZWFkIEJFRk9SRV9XSU5FKSAkV0lORUNNRCAiJEAiIDI+IiRXSU5F UFJFRklYL3BsYXlvbmxpbnV4LmxvZyIgPiIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciCi0r ICAgIGVycm9ycz0kPwotKyAgZmkKLSsKLSsgIGlmIFsgIiRlcnJvcnMiICE9IDAgLWEgIiROb0Vy cm9ycyIgIT0gIlRydWUiIC1hICIkUE9MX0lnbm9yZVdpbmVFcnJvcnMiICE9ICJUcnVlIiBdOyB0 aGVuCi0rICAgIFBPTF9EZWJ1Z19FcnJvciAiJChldmFsX2dldHRleHQgJ1dpbmUgc2VlbXMgdG8g aGF2ZSBjcmFzaGVkXG5cbklmIHlvdXIgcHJvZ3JhbSBpcyBydW5uaW5nLCBqdXN0IGlnbm9yZSB0 aGlzIG1lc3NhZ2UnKSIKLSsgIGZpCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiV2luZSByZXR1cm46 ICRlcnJvcnMiCi0rICByZXR1cm4gJGVycm9ycwotIH0KLSAKLS1QT0xfV2luZV9TZWxlY3RQcmVm aXgoKQotLXsKLS0JIyBTZWxlY3QgYSB3aW5lcHJlZml4IGFuZCByZW1vdmUgdW5leHBlY3RlZCBj aGFycwotLQkjIFVzYWdlOiBQT0xfV2luZV9TZWxlY3RQcmVmaXggW3ByZWZpeG5hbWVdCi0tCVBS RUZOQU1FPWBwcmludGYgIiQxInwgdHIgLWMgW1thLXpBLVowLTldXC5dICdfJ2AKLS0JUE9MX0Rl YnVnX01lc3NhZ2UgIlNlbGVjdGluZyBwcmVmaXg6ICRQUkVGTkFNRSIKLS0gICAgICAgICMgRW1w dHkgbmFtZSBpcyBkYW5nZXJvdXMKLS0gICAgICAgIFsgLXogIiRQUkVGTkFNRSIgXSAmJiBQT0xf RGVidWdfRmF0YWwgIkJhZCBvciBlbXB0eSB2aXJ0dWFsIGRyaXZlIG5hbWUgc2VsZWN0ZWQiCi0t CWV4cG9ydCBXSU5FUFJFRklYPSIkUE9MX1VTRVJfUk9PVC93aW5lcHJlZml4LyRQUkVGTkFNRSIK LS0JZXhwb3J0IERPU1BSRUZJWD0iJFdJTkVQUkVGSVgiCi0tCWlmIFsgLWUgIiRXSU5FUFJFRklY L3BsYXlvbmxpbnV4LmNmZyIgXTsgdGhlbgotLQkJZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJChQ T0xfQ29uZmlnX1ByZWZpeFJlYWQgVkVSU0lPTikiCi0tCQlQT0xfU3lzdGVtX1NldEFyY2ggIiQo UE9MX0NvbmZpZ19QcmVmaXhSZWFkIEFSQ0gpIiAiZGV0ZWN0ZWQiCi0tCWVsc2UKLS0JCXRvdWNo ICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5jZmciIDI+IC9kZXYvbnVsbAotLQlmaQotLQotLQkj IyBJbiBmYWN0IGl0J3MgYSBiYWQgaWRlYQotLQkjaWYgWyAiJChQT0xfQ29uZmlnX1ByZWZpeFJl YWQgQVJDSCkiID0gIng4NiIgXTsgdGhlbiAjIyBDb21tZSBjYSwgcGFzIGRlIGNvbmZsaXRzCi0t CSMJZXhwb3J0IFdJTkVBUkNIPXdpbjMyCi0tCSNmaQotK1BPTF9XaW5lX1NlbGVjdFByZWZpeCgp IHsKLSsgICMgU2VsZWN0IGEgd2luZXByZWZpeCBhbmQgcmVtb3ZlIHVuZXhwZWN0ZWQgY2hhcnMK LSsgICMgVXNhZ2U6IFBPTF9XaW5lX1NlbGVjdFByZWZpeCBbcHJlZml4bmFtZV0KLSsgIFBSRUZO QU1FPSQocHJpbnRmICIkMSIgfCB0ciAtYyBbW2EtekEtWjAtOV1cLl0gJ18nKQotKyAgUE9MX0Rl YnVnX01lc3NhZ2UgIlNlbGVjdGluZyBwcmVmaXg6ICRQUkVGTkFNRSIKLSsgICMgRW1wdHkgbmFt ZSBpcyBkYW5nZXJvdXMKLSsgIFsgLXogIiRQUkVGTkFNRSIgXSAmJiBQT0xfRGVidWdfRmF0YWwg IkJhZCBvciBlbXB0eSB2aXJ0dWFsIGRyaXZlIG5hbWUgc2VsZWN0ZWQiCi0rICBleHBvcnQgV0lO RVBSRUZJWD0iJFBPTF9VU0VSX1JPT1Qvd2luZXByZWZpeC8kUFJFRk5BTUUiCi0rICBleHBvcnQg RE9TUFJFRklYPSIkV0lORVBSRUZJWCIKLSsgIGlmIFsgLWUgIiRXSU5FUFJFRklYL3BsYXlvbmxp bnV4LmNmZyIgXTsgdGhlbgotKyAgICBleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIkKFBPTF9Db25m aWdfUHJlZml4UmVhZCBWRVJTSU9OKSIKLSsgICAgUE9MX1N5c3RlbV9TZXRBcmNoICIkKFBPTF9D b25maWdfUHJlZml4UmVhZCBBUkNIKSIgImRldGVjdGVkIgotKyAgZWxzZQotKyAgICB0b3VjaCAi JFdJTkVQUkVGSVgvcGxheW9ubGludXguY2ZnIiAyPi9kZXYvbnVsbAotKyAgZmkKLSsKLSsgICMj IEluIGZhY3QgaXQncyBhIGJhZCBpZGVhCi0rICAjaWYgWyAiJChQT0xfQ29uZmlnX1ByZWZpeFJl YWQgQVJDSCkiID0gIng4NiIgXTsgdGhlbiAjIyBDb21tZSBjYSwgcGFzIGRlIGNvbmZsaXRzCi0r ICAjCWV4cG9ydCBXSU5FQVJDSD13aW4zMgotKyAgI2ZpCi0gfQotLVBPTF9XaW5lX1ByZWZpeEV4 aXN0cygpCi0tewotLQkjIENoZWNrcyBpZiBhIHByZWZpeCBleGlzdHMKLS0JIyBVc2FnZTogUE9M X1dpbmVfUHJlZml4RXhpc3RzCi0tCSMgUmV0dXJuIFRydWUgb3IgRmFsc2UKLS0JUFJFRk5BTUU9 YHByaW50ZiAiJDEifCB0ciAtYyBbW2EtekEtWjAtOV1cLl0gJ18nYAotLQlbIC1kICIkUE9MX1VT RVJfUk9PVC93aW5lcHJlZml4LyRQUkVGTkFNRS9kcml2ZV9jIiBdICYmIGVjaG8gIlRydWUiIHx8 IGVjaG8gIkZhbHNlIgotK1BPTF9XaW5lX1ByZWZpeEV4aXN0cygpIHsKLSsgICMgQ2hlY2tzIGlm IGEgcHJlZml4IGV4aXN0cwotKyAgIyBVc2FnZTogUE9MX1dpbmVfUHJlZml4RXhpc3RzCi0rICAj IFJldHVybiBUcnVlIG9yIEZhbHNlCi0rICBQUkVGTkFNRT0kKHByaW50ZiAiJDEiIHwgdHIgLWMg W1thLXpBLVowLTldXC5dICdfJykKLSsgIFsgLWQgIiRQT0xfVVNFUl9ST09UL3dpbmVwcmVmaXgv JFBSRUZOQU1FL2RyaXZlX2MiIF0gJiYgZWNobyAiVHJ1ZSIgfHwgZWNobyAiRmFsc2UiCi0gfQot LVBPTF9XaW5lX0NoZWNrUHJlZml4RXhpc3RzKCkKLS17Ci0tCSMgQ2hlY2tzIGlmIGEgcHJlZml4 IGV4aXN0cwotLQkjIFVzYWdlOiBQT0xfV2luZV9DaGVja1ByZWZpeEV4aXN0cyBbUFJFRklYXSBb VElUTEVfUkVRVUlSRURdCi0tCSMgUmV0dXJuIGEgbWVzc2FnZSBpZiBub3QgYW5kIHF1aXQKLS0J UFJFRklYPSQxCi0tCVRJVExFX1JFUVVJUkVEPSIkMiIKLS0JaWYgWyAiJChQT0xfV2luZV9QcmVm aXhFeGlzdHMgIiRQUkVGSVgiKSIgPSAiRmFsc2UiIF07IHRoZW4KLS0JCVBPTF9EZWJ1Z19XYXJu aW5nICJUaGUgcHJlZml4ICckUFJFRklYJyBkb2VzIG5vdCBleGlzdCIKLS0JCVBPTF9TZXR1cFdp bmRvd19tZXNzYWdlICIkKGV2YWxfZ2V0dGV4dCAnVGhpcyBpcyBhbiBpbnN0YWxsZXIgZm9yIGFu IHVwZGF0ZSBvciBhbiBhZGRvbjtcblBsZWFzZSBpbnN0YWxsICRUSVRMRV9SRVFVSVJFRCBmaXJz dCcpIiAiJFRJVExFIgotLQkJUE9MX1NldHVwV2luZG93X0Nsb3NlCi0tCQlleGl0IDEKLS0JZmkK LStQT0xfV2luZV9DaGVja1ByZWZpeEV4aXN0cygpIHsKLSsgICMgQ2hlY2tzIGlmIGEgcHJlZml4 IGV4aXN0cwotKyAgIyBVc2FnZTogUE9MX1dpbmVfQ2hlY2tQcmVmaXhFeGlzdHMgW1BSRUZJWF0g W1RJVExFX1JFUVVJUkVEXQotKyAgIyBSZXR1cm4gYSBtZXNzYWdlIGlmIG5vdCBhbmQgcXVpdAot KyAgUFJFRklYPSQxCi0rICBUSVRMRV9SRVFVSVJFRD0iJDIiCi0rICBpZiBbICIkKFBPTF9XaW5l X1ByZWZpeEV4aXN0cyAiJFBSRUZJWCIpIiA9ICJGYWxzZSIgXTsgdGhlbgotKyAgICBQT0xfRGVi dWdfV2FybmluZyAiVGhlIHByZWZpeCAnJFBSRUZJWCcgZG9lcyBub3QgZXhpc3QiCi0rICAgIFBP TF9TZXR1cFdpbmRvd19tZXNzYWdlICIkKGV2YWxfZ2V0dGV4dCAnVGhpcyBpcyBhbiBpbnN0YWxs ZXIgZm9yIGFuIHVwZGF0ZSBvciBhbiBhZGRvbjtcblBsZWFzZSBpbnN0YWxsICRUSVRMRV9SRVFV SVJFRCBmaXJzdCcpIiAiJFRJVExFIgotKyAgICBQT0xfU2V0dXBXaW5kb3dfQ2xvc2UKLSsgICAg ZXhpdCAxCi0rICBmaQotIH0KLS1QT0xfV2luZV9WZXJzaW9uU2lnbmF0dXJlKCkKLS17Ci0tCSMg UmV0dXJuIHRoZSBzaWduYXR1cmUgb2YgYSBXaW5lIHBhY2thZ2UKLS0JIyBVc2FnZTogUE9MX1dp bmVfVmVyc2lvblNpZ25hdHVyZSBbRElSXQotLQotLQkjIE9uIExpbnV4LCByZXN1bHQgc2hvdWxk IG1hdGNoIHRoZSBvbmUgb2YKLS0JIyBjZCAkRElSOyBmaW5kICogLXR5cGUgZnxzb3J0fHhhcmdz IG1kNXN1bXxtZDVzdW0gLXxjdXQgLWMxLTMyCi0tCi0tCWxvY2FsIFdJTkVQS0dQQVRIPSIkMSIK LS0JWyAtZCAiJFdJTkVQS0dQQVRIIiBdIHx8IHJldHVybgotLQkjIFsgLWUgIiRXSU5FUEtHUEFU SC9iaW4vd2luZSIgXSB8fCByZXR1cm4KLS0KLS0JbG9jYWwgQ1VSUlNJR1ZFUj0iJFdJTkVQS0dQ QVRILy5zaWduYXR1cmUudjEiICMgY2FjaGUgdmVyc2lvbgotLQlsb2NhbCBXSU5FU0lHCi0tCVsg LWUgIiRDVVJSU0lHVkVSIiBdICYmIHJlYWQgV0lORVNJRyA8ICIkQ1VSUlNJR1ZFUiIKLS0JaWYg WyAteiAiJFdJTkVTSUciIF07IHRoZW4KLS0JCWxvY2FsIE1BTklGRVNURklMRT0iJFBPTF9VU0VS X1JPT1QvdG1wL1BPTF9XaW5lX1ZlcnNpb25TaWduYXR1cmVfbWFuaWZlc3QkJCIKLS0JCShjZCAi JFdJTkVQS0dQQVRIIiAmJiBmaW5kICogLXR5cGUgZiB8XAotLQkJICBzb3J0IHxcCi0tCQkgIHdo aWxlIHJlYWQgc2lnZmlsZW5hbWU7IGRvCi0tCQkgICAgZWNobyAiJChQT0xfTUQ1X2ZpbGUgIiRz aWdmaWxlbmFtZSIpICAkc2lnZmlsZW5hbWUiCi0tCQkgIGRvbmUpID4gIiRNQU5JRkVTVEZJTEUi Ci0tCQlXSU5FU0lHPSIkKFBPTF9NRDVfZmlsZSAiJE1BTklGRVNURklMRSIpIgotLQkJcm0gLWYg IiRNQU5JRkVTVEZJTEUiCi0tCQllY2hvICIkV0lORVNJRyIgPiAiJENVUlJTSUdWRVIiCi0tCWZp Ci0tCWVjaG8gIiRXSU5FU0lHIgotK1BPTF9XaW5lX1ZlcnNpb25TaWduYXR1cmUoKSB7Ci0rICAj IFJldHVybiB0aGUgc2lnbmF0dXJlIG9mIGEgV2luZSBwYWNrYWdlCi0rICAjIFVzYWdlOiBQT0xf V2luZV9WZXJzaW9uU2lnbmF0dXJlIFtESVJdCi0rCi0rICAjIE9uIExpbnV4LCByZXN1bHQgc2hv dWxkIG1hdGNoIHRoZSBvbmUgb2YKLSsgICMgY2QgJERJUjsgZmluZCAqIC10eXBlIGZ8c29ydHx4 YXJncyBtZDVzdW18bWQ1c3VtIC18Y3V0IC1jMS0zMgotKwotKyAgbG9jYWwgV0lORVBLR1BBVEg9 IiQxIgotKyAgWyAtZCAiJFdJTkVQS0dQQVRIIiBdIHx8IHJldHVybgotKyAgIyBbIC1lICIkV0lO RVBLR1BBVEgvYmluL3dpbmUiIF0gfHwgcmV0dXJuCi0rCi0rICBsb2NhbCBDVVJSU0lHVkVSPSIk V0lORVBLR1BBVEgvLnNpZ25hdHVyZS52MSIgIyBjYWNoZSB2ZXJzaW9uCi0rICBsb2NhbCBXSU5F U0lHCi0rICBbIC1lICIkQ1VSUlNJR1ZFUiIgXSAmJiByZWFkIFdJTkVTSUcgPCIkQ1VSUlNJR1ZF UiIKLSsgIGlmIFsgLXogIiRXSU5FU0lHIiBdOyB0aGVuCi0rICAgIGxvY2FsIE1BTklGRVNURklM RT0iJFBPTF9VU0VSX1JPT1QvdG1wL1BPTF9XaW5lX1ZlcnNpb25TaWduYXR1cmVfbWFuaWZlc3Qk JCIKLSsgICAgKGNkICIkV0lORVBLR1BBVEgiICYmIGZpbmQgKiAtdHlwZSBmIHwKLSsgICAgICBz b3J0IHwKLSsgICAgICB3aGlsZSByZWFkIHNpZ2ZpbGVuYW1lOyBkbwotKyAgICAgICAgZWNobyAi JChQT0xfTUQ1X2ZpbGUgIiRzaWdmaWxlbmFtZSIpICAkc2lnZmlsZW5hbWUiCi0rICAgICAgZG9u ZSkgPiIkTUFOSUZFU1RGSUxFIgotKyAgICBXSU5FU0lHPSIkKFBPTF9NRDVfZmlsZSAiJE1BTklG RVNURklMRSIpIgotKyAgICBybSAtZiAiJE1BTklGRVNURklMRSIKLSsgICAgZWNobyAiJFdJTkVT SUciID4iJENVUlJTSUdWRVIiCi0rICBmaQotKyAgZWNobyAiJFdJTkVTSUciCi0gfQotLVBPTF9X aW5lX0luc3RhbGxWZXJzaW9uKCkKLS17Ci0tCSMgSW5zdGFsbCBhIHdpbmV2ZXJzaW9uCi0tCSMg VXNhZ2U6IFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uIFtWRVJTSU9OXQotLQlbICEgIiQxIiA9ICIi IF0gJiYgZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCi0tCVsgISAiJDIiID0gIiIgXSAmJiBl eHBvcnQgUE9MX1dJTkVESVNUUklCVVRJT049IiQyIiB8fCBleHBvcnQgUE9MX1dJTkVESVNUUklC VVRJT049InVwc3RyZWFtIgotLQotLQlpZiBbWyAiJFBPTF9XSU5FVkVSU0lPTiIgPT0gKiItc3Rh Z2luZyIqIF1dOyB0aGVuCi0tCSAgICBsb2NhbCBwb2xfd2luZXZlcnNpb249IiR7UE9MX1dJTkVW RVJTSU9OLy1zdGFnaW5nL30iCi0tCQkJUE9MX1dJTkVESVNUUklCVVRJT049InN0YWdpbmciCi0t CWVsc2UKLS0JCQlsb2NhbCBwb2xfd2luZXZlcnNpb25faW5zdGFsbD0iJFBPTF9XSU5FVkVSU0lP TiIKLS0JCQlsb2NhbCBwb2xfd2luZXZlcnNpb249IiRQT0xfV0lORVZFUlNJT04iCi0tCWZpCi0t Ci0tCWlmIFsgIiRQT0xfV0lORURJU1RSSUJVVElPTiIgPT0gInN0YWdpbmciIF07IHRoZW4KLS0J CWxvY2FsIHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsPSIkcG9sX3dpbmV2ZXJzaW9uLXN0YWdpbmci Ci0tCWZpCi0tCi0tCVsgIiRwb2xfd2luZXZlcnNpb24iID0gIiIgXSAmJiBQT0xfRGVidWdfRmF0 YWwgIk5vIFBPTF9XSU5FVkVSU0lPTiBzZXQiCi0tCVsgIiRQT0xfQVJDSCIgPSAiIiBdICYmIFBP TF9TeXN0ZW1fU2V0QXJjaCAiYXV0byIKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIkluc3RhbGxpbmcg d2luZSB2ZXJzaW9uIHBhdGg6ICRwb2xfd2luZXZlcnNpb25faW5zdGFsbCwgJFBPTF9BUkNIIgot LQlbICIkUE9MX09TIiA9ICJNYWMiIF0gJiYgQVJDSF9QUkVGSVg9ImRhcndpbiIKLS0JWyAiJFBP TF9PUyIgPSAiRnJlZUJTRCIgXSAmJiBBUkNIX1BSRUZJWD0iZnJlZWJzZCIKLS0JWyAiJFBPTF9P UyIgPSAiTGludXgiIF0gJiYgQVJDSF9QUkVGSVg9ImxpbnV4IgotLQlPTERQQVRIPSIkUFdEIgot LQlXSU5FX1NFQ1RJT049IiRBUkNIX1BSRUZJWC0kUE9MX0FSQ0giCi0tCVdJTkVESVI9IiRQT0xf VVNFUl9ST09UL3dpbmUvJFdJTkVfU0VDVElPTiIKLS0JdG91Y2ggIiRXSU5FRElSL2luc3RhbGxp bmciCi0tCWlmIFsgISAtZSAiJFBPTF9VU0VSX1JPT1Qvd2luZS8kQVJDSF9QUkVGSVgtJFBPTF9B UkNILyRwb2xfd2luZXZlcnNpb25faW5zdGFsbCIgXQotLQl0aGVuCi0tCQlQT0xfRGVidWdfTWVz c2FnZSAiV2luZSBzaXRlOiAkV0lORV9TSVRFIgotLQkJZWNobyAkUE9MX1dHRVQgIiRXSU5FX1NJ VEUiIC1PLQotLQkJV0lORURBVEE9IiQoJFBPTF9XR0VUICIkV0lORV9TSVRFIiAtTy0gfGpxIC1y ICIuW10gfCBzZWxlY3QoLm5hbWU9PVwiJFBPTF9XSU5FRElTVFJJQlVUSU9OLSRBUkNIX1BSRUZJ WC0kUE9MX0FSQ0hcIikgfCAucGFja2FnZXMgfCAuW10gfCBzZWxlY3QoLnZlcnNpb249PVwiJHBv bF93aW5ldmVyc2lvblwiKSIpIgotLQkJUE9MX0RlYnVnX01lc3NhZ2UgIldpbmVidWlsZCBkYXRh OiAkV0lORURBVEEiCi0tCi0tCQlXSU5FX0FERFJFU1M9IiQoZWNobyAiJFdJTkVEQVRBIiB8IGpx ICcudXJsJyAtcikiCi0tCQlQT0xfRGVidWdfTWVzc2FnZSAiV2luZSBhZGRyZXNzIGZvdW5kOiAk V0lORV9BRERSRVNTIgotLQkJI1dJTkVfQUREUkVTUz0kKCRQT0xfV0dFVCAiJFdJTkVfU0lURS8k V0lORV9TRUNUSU9OLmxzdCIgLU8tIHwgZ3JlcCAiOyRwb2xfd2luZXZlcnNpb247IiB8IHRhaWwg LW4gMSB8IGN1dCAtZCAiOyIgLWYxKQotLQotLQkJaWYgWyAiJFdJTkVfQUREUkVTUyIgPSAiIiBd ICYmIFsgIiRQT0xfQVJDSCIgPSAiYW1kNjQiIF0KLS0JCXRoZW4KLS0JCQlQT0xfRGVidWdfV2Fy bmluZyAiV2luZSAkMSBhbWQ2NCBkb2VzIG5vdCBleGlzdC4gU3dpdGNoaW5nIHRvIHg4NiIKLS0J CQlQT0xfU3lzdGVtX1NldEFyY2ggIng4NiIKLS0JCQlQT0xfV2luZV9JbnN0YWxsVmVyc2lvbiAi JDEiCi0tCQllbHNlCi0tCQkJaWYgWyAiJFdJTkVfQUREUkVTUyIgPSAiIiBdCi0tCQkJdGhlbgot LQkJCQlQT0xfRGVidWdfRXJyb3IgIiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gZmluZCB2ZXJz aW9uOiAiKSRwb2xfd2luZXZlcnNpb24iCi0tCQkJCVBPTF9TZXR1cFdpbmRvd19DbG9zZQotLQkJ CQlleGl0Ci0tCQkJZmkKLS0KLS0JCQljZCAiJFBPTF9VU0VSX1JPT1QvdG1wIgotLQkJCWZpbGVu YW1lPSIkUFdEL1BsYXlPbkxpbnV4LXdpbmUtJHBvbF93aW5ldmVyc2lvbi0kUE9MX1dJTkVESVNU UklCVVRJT04tJEFSQ0hfUFJFRklYLSRQT0xfQVJDSC50YXIuZ3oiCi0tCQkJUE9MX1NldHVwV2lu ZG93X2Rvd25sb2FkICIkKGV2YWxfZ2V0dGV4dCAiRG93bmxvYWRpbmcgV2luZTogIikkcG9sX3dp bmV2ZXJzaW9uIiAiJFRJVExFIiAiJFdJTkVfQUREUkVTUyIKLS0JCQlQT0xfU2V0dXBXaW5kb3df d2FpdF9uZXh0X3NpZ25hbCAiJChldmFsX2dldHRleHQgIkRvd25sb2FkaW5nIFdpbmU6ICIpJHBv bF93aW5ldmVyc2lvbiIgIiRUSVRMRSIKLS0JCQlzbGVlcCAxCi0tCQkJc2hhMT0iJChlY2hvICIk V0lORURBVEEiIHwganEgJy5zaGExc3VtJyAtcikiCi0tCQkJc2hhMV9maWxlPSQoc2hhc3VtICIk ZmlsZW5hbWUiIHwgYXdrICd7cHJpbnQgJDF9JykKLS0JCQllY2hvICJTZXJ2ZXIgc2hhMSA6ICRz aGExIgotLQkJCWVjaG8gIkNsaWVudCBzaGExIDogJHNoYTFfZmlsZSIKLS0KLS0JCQlpZiBbICEg IiRzaGExIiA9ICIkc2hhMV9maWxlIiBdCi0tCQkJdGhlbgotLQkJCQlQT0xfU2V0dXBXaW5kb3df bWVzc2FnZSAiJChldmFsX2dldHRleHQgJ1RoZSBkb3dubG9hZCBzZWVtcyB0byBoYXZlIGZhaWxl ZC4nKSIgIiRUSVRMRSIKLS0JCQllbHNlCi0tCQkJCVBPTF9TZXR1cFdpbmRvd193YWl0ICIkKGV2 YWxfZ2V0dGV4dCAnRXh0cmFjdGluZyBXaW5lLi4uJykiICIkVElUTEUiCi0tCQkJCW1rZGlyIC1w ICIkUE9MX1VTRVJfUk9PVC93aW5lLyRBUkNIX1BSRUZJWC0kUE9MX0FSQ0gvJHBvbF93aW5ldmVy c2lvbl9pbnN0YWxsIgotLQkJCQljZCAiJFBPTF9VU0VSX1JPT1Qvd2luZS8kQVJDSF9QUkVGSVgt JFBPTF9BUkNILyRwb2xfd2luZXZlcnNpb25faW5zdGFsbCIKLS0JCQkJdGFyIC14dmYgIiRmaWxl bmFtZSIKLS0JCQlmaQotLQkJCXJtICIkZmlsZW5hbWUiCi0tCQkJIyBQT0xfV2luZV9JbnN0YWxs X3Jlc291cmNlcyBnZWNrbyAiJHBvbF93aW5ldmVyc2lvbiIgIiRQT0xfQVJDSCIKLS0JCQkjIFBP TF9XaW5lX0luc3RhbGxfcmVzb3VyY2VzIG1vbm8gIiRwb2xfd2luZXZlcnNpb24iICIkUE9MX0FS Q0giCi0tCQlmaQotLQlmaQotLQlybSAiJFdJTkVESVIvaW5zdGFsbGluZyIKLStQT0xfV2luZV9J bnN0YWxsVmVyc2lvbigpIHsKLSsgICMgSW5zdGFsbCBhIHdpbmV2ZXJzaW9uCi0rICAjIFVzYWdl OiBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbiBbVkVSU0lPTl0KLSsgIFsgISAiJDEiID0gIiIgXSAm JiBleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIkMSIKLSsgIFsgISAiJDIiID0gIiIgXSAmJiBleHBv cnQgUE9MX1dJTkVESVNUUklCVVRJT049IiQyIiB8fCBleHBvcnQgUE9MX1dJTkVESVNUUklCVVRJ T049InVwc3RyZWFtIgotKwotKyAgaWYgW1sgIiRQT0xfV0lORVZFUlNJT04iID09ICoiLXN0YWdp bmciKiBdXTsgdGhlbgotKyAgICBsb2NhbCBwb2xfd2luZXZlcnNpb249IiR7UE9MX1dJTkVWRVJT SU9OLy1zdGFnaW5nL30iCi0rICAgIFBPTF9XSU5FRElTVFJJQlVUSU9OPSJzdGFnaW5nIgotKyAg ZWxpZiBbWyAiJFBPTF9XSU5FVkVSU0lPTiIgPT0gKiItY3giKiBdXTsgdGhlbgotKyAgICBsb2Nh bCBwb2xfd2luZXZlcnNpb249IiR7UE9MX1dJTkVWRVJTSU9OLy1jeC99IgotKyAgICBQT0xfV0lO RURJU1RSSUJVVElPTj0iY3giCi0rICBlbHNlCi0rICAgIGxvY2FsIHBvbF93aW5ldmVyc2lvbl9p bnN0YWxsPSIkUE9MX1dJTkVWRVJTSU9OIgotKyAgICBsb2NhbCBwb2xfd2luZXZlcnNpb249IiRQ T0xfV0lORVZFUlNJT04iCi0rICBmaQotKwotKyAgaWYgWyAiJFBPTF9XSU5FRElTVFJJQlVUSU9O IiA9PSAic3RhZ2luZyIgXTsgdGhlbgotKyAgICBsb2NhbCBwb2xfd2luZXZlcnNpb25faW5zdGFs bD0iJHBvbF93aW5ldmVyc2lvbi1zdGFnaW5nIgotKyAgZmkKLSsKLSsgIGlmIFsgIiRQT0xfV0lO RURJU1RSSUJVVElPTiIgPT0gImN4IiBdOyB0aGVuCi0rICAgIGxvY2FsIHBvbF93aW5ldmVyc2lv bl9pbnN0YWxsPSIkcG9sX3dpbmV2ZXJzaW9uLWN4IgotKyAgZmkKLSsKLSsgIFsgIiRwb2xfd2lu ZXZlcnNpb24iID0gIiIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIk5vIFBPTF9XSU5FVkVSU0lPTiBz ZXQiCi0rICBbICIkUE9MX0FSQ0giID0gIiIgXSAmJiBQT0xfU3lzdGVtX1NldEFyY2ggImF1dG8i Ci0rICBQT0xfRGVidWdfTWVzc2FnZSAiSW5zdGFsbGluZyB3aW5lIHZlcnNpb24gcGF0aDogJHBv bF93aW5ldmVyc2lvbl9pbnN0YWxsLCAkUE9MX0FSQ0giCi0rICBbICIkUE9MX09TIiA9ICJNYWMi IF0gJiYgQVJDSF9QUkVGSVg9ImRhcndpbiIKLSsgIFsgIiRQT0xfT1MiID0gIkZyZWVCU0QiIF0g JiYgQVJDSF9QUkVGSVg9ImZyZWVic2QiCi0rICBbICIkUE9MX09TIiA9ICJMaW51eCIgXSAmJiBB UkNIX1BSRUZJWD0ibGludXgiCi0rICBPTERQQVRIPSIkUFdEIgotKyAgV0lORV9TRUNUSU9OPSIk QVJDSF9QUkVGSVgtJFBPTF9BUkNIIgotKyAgV0lORURJUj0iJFBPTF9VU0VSX1JPT1Qvd2luZS8k V0lORV9TRUNUSU9OIgotKyAgdG91Y2ggIiRXSU5FRElSL2luc3RhbGxpbmciCi0rICBpZiBbICEg LWUgIiRQT0xfVVNFUl9ST09UL3dpbmUvJEFSQ0hfUFJFRklYLSRQT0xfQVJDSC8kcG9sX3dpbmV2 ZXJzaW9uX2luc3RhbGwiIF07IHRoZW4KLSsgICAgUE9MX0RlYnVnX01lc3NhZ2UgIldpbmUgc2l0 ZTogJFdJTkVfU0lURSIKLSsgICAgUE9MX0RlYnVnX01lc3NhZ2UgIndnZXQgbGlzdCBjb21tYW5k OiAkUE9MX1dHRVQgJFdJTkVfU0lURSAtTy0iCi0rICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJQT0xf QVJDSDogJFBPTF9BUkNIIgotKwotKyAgICBpZiBbICIkUE9MX0FSQ0giID0gIng4NiIgXTsgdGhl bgotKyAgICAgIFtbICIkT1NYX1ZFUlNJT04iIC1nZSAxOSBdXSAmJiBzaXRlX2FyY2g9Ing4Nm9u NjQiIHx8IHNpdGVfYXJjaD0ieDg2IgotKyAgICBlbHNlCi0rICAgICAgc2l0ZV9hcmNoPSIkUE9M X0FSQ0giCi0rICAgIGZpCi0rICAgIFdJTkVEQVRBPSIkKCRQT0xfV0dFVCAiJFdJTkVfU0lURSIg LU8tIHwganEgLXIgIi5bXSB8IHNlbGVjdCgubmFtZT09XCIkUE9MX1dJTkVESVNUUklCVVRJT04t JEFSQ0hfUFJFRklYLSRzaXRlX2FyY2hcIikgfCAucGFja2FnZXMgfCAuW10gfCBzZWxlY3QoLnZl cnNpb249PVwiJHBvbF93aW5ldmVyc2lvblwiKSIpIgotKyAgICBQT0xfRGVidWdfTWVzc2FnZSAi V2luZWJ1aWxkIGRhdGE6ICRXSU5FREFUQSIKLSsKLSsgICAgV0lORV9BRERSRVNTPSIkKGVjaG8g IiRXSU5FREFUQSIgfCBqcSAnLnVybCcgLXIpIgotKyAgICBQT0xfRGVidWdfTWVzc2FnZSAiV2lu ZSBhZGRyZXNzIGZvdW5kOiAkV0lORV9BRERSRVNTIgotKyAgICAjV0lORV9BRERSRVNTPSQoJFBP TF9XR0VUICIkV0lORV9TSVRFLyRXSU5FX1NFQ1RJT04ubHN0IiAtTy0gfCBncmVwICI7JHBvbF93 aW5ldmVyc2lvbjsiIHwgdGFpbCAtbiAxIHwgY3V0IC1kICI7IiAtZjEpCi0rCi0rICAgIGlmIFsg IiRXSU5FX0FERFJFU1MiID0gIiIgXSAmJiBbICIkUE9MX0FSQ0giID0gImFtZDY0IiBdOyB0aGVu Ci0rICAgICAgUE9MX0RlYnVnX1dhcm5pbmcgIldpbmUgJDEgYW1kNjQgZG9lcyBub3QgZXhpc3Qu IFN3aXRjaGluZyB0byB4ODYiCi0rICAgICAgUE9MX1N5c3RlbV9TZXRBcmNoICJ4ODYiCi0rICAg ICAgUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24gIiQxIgotKyAgICBlbHNlCi0rICAgICAgaWYgWyAi JFdJTkVfQUREUkVTUyIgPSAiIiBdOyB0aGVuCi0rICAgICAgICBpZiBbWyAkT1NYX1ZFUlNJT04g LWdlIDE5IF1dOyB0aGVuCi0rICAgICAgICAgIFBPTF9TZXR1cFdpbmRvd19tZXNzYWdlICIkKGV2 YWxfZ2V0dGV4dCAibWFjT1MgQ2F0YWxpbmEgdXNlcjogMzJiaXRzIHdpbmUgdmVyc2lvbiBhcmUg bm8gbG9uZ2VyIGF2YWlsYWJsZS5cbldlIGFyZSBnb2luZyB0byB1c2UgdGhlIHN5c3RlbSB3aW5l IHZlcnNpb24gaW5zdGVhZCIpIgotKyAgICAgICAgICByZXR1cm4gMgotKyAgICAgICAgZWxzZQot KyAgICAgICAgICBQT0xfRGVidWdfRXJyb3IgIiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gZmlu ZCB2ZXJzaW9uOiAiKSRwb2xfd2luZXZlcnNpb24iCi0rICAgICAgICAgIFBPTF9TZXR1cFdpbmRv d19DbG9zZQotKyAgICAgICAgICBleGl0Ci0rICAgICAgICBmaQotKyAgICAgIGZpCi0rCi0rICAg ICAgY2QgIiRQT0xfVVNFUl9ST09UL3RtcCIKLSsgICAgICBmaWxlbmFtZT0iJFBXRC9QbGF5T25M aW51eC13aW5lLSRwb2xfd2luZXZlcnNpb24tJFBPTF9XSU5FRElTVFJJQlVUSU9OLSRBUkNIX1BS RUZJWC0kc2l0ZV9hcmNoLnRhci5neiIKLSsgICAgICBQT0xfU2V0dXBXaW5kb3dfZG93bmxvYWQg IiQoZXZhbF9nZXR0ZXh0ICJEb3dubG9hZGluZyBXaW5lOiAiKSRwb2xfd2luZXZlcnNpb24iICIk VElUTEUiICIkV0lORV9BRERSRVNTIgotKyAgICAgIFBPTF9TZXR1cFdpbmRvd193YWl0X25leHRf c2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAiRG93bmxvYWRpbmcgV2luZTogIikkcG9sX3dpbmV2ZXJz aW9uIiAiJFRJVExFIgotKyAgICAgIHNsZWVwIDEKLSsgICAgICBzaGExPSIkKGVjaG8gIiRXSU5F REFUQSIgfCBqcSAnLnNoYTFzdW0nIC1yKSIKLSsgICAgICBzaGExX2ZpbGU9JChzaGFzdW0gIiRm aWxlbmFtZSIgfCBhd2sgJ3twcmludCAkMX0nKQotKyAgICAgIGVjaG8gIlNlcnZlciBzaGExIDog JHNoYTEiCi0rICAgICAgZWNobyAiQ2xpZW50IHNoYTEgOiAkc2hhMV9maWxlIgotKwotKyAgICAg IGlmIFsgISAiJHNoYTEiID0gIiRzaGExX2ZpbGUiIF0gJiYgW1sgJE9TWF9WRVJTSU9OIC1sdCAx OSBdXTsgdGhlbgotKyAgICAgICAgUE9MX1NldHVwV2luZG93X21lc3NhZ2UgIiQoZXZhbF9nZXR0 ZXh0ICdUaGUgZG93bmxvYWQgc2VlbXMgdG8gaGF2ZSBmYWlsZWQuJykiICIkVElUTEUiCi0rICAg ICAgZWxzZQotKyAgICAgICAgUE9MX1NldHVwV2luZG93X3dhaXQgIiQoZXZhbF9nZXR0ZXh0ICdF eHRyYWN0aW5nIFdpbmUuLi4nKSIgIiRUSVRMRSIKLSsgICAgICAgIG1rZGlyIC1wICIkUE9MX1VT RVJfUk9PVC93aW5lLyRBUkNIX1BSRUZJWC0kUE9MX0FSQ0gvJHBvbF93aW5ldmVyc2lvbl9pbnN0 YWxsIgotKyAgICAgICAgY2QgIiRQT0xfVVNFUl9ST09UL3dpbmUvJEFSQ0hfUFJFRklYLSRQT0xf QVJDSC8kcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGwiCi0rICAgICAgICB0YXIgLXh2ZiAiJGZpbGVu YW1lIgotKyAgICAgIGZpCi0rICAgICAgcm0gIiRmaWxlbmFtZSIKLSsgICAgICAjIFBPTF9XaW5l X0luc3RhbGxfcmVzb3VyY2VzIGdlY2tvICIkcG9sX3dpbmV2ZXJzaW9uIiAiJFBPTF9BUkNIIgot KyAgICAgICMgUE9MX1dpbmVfSW5zdGFsbF9yZXNvdXJjZXMgbW9ubyAiJHBvbF93aW5ldmVyc2lv biIgIiRQT0xfQVJDSCIKLSsgICAgZmkKLSsgIGZpCi0rICBybSAiJFdJTkVESVIvaW5zdGFsbGlu ZyIKLSAKLSB9Ci0gCi0tUE9MX1dpbmVfSW5zdGFsbENEUk9NKCkKLS17Ci0tCVBPTF9XaW5lX0lu c3RhbGxDRFJPTUN1c3RvbSAiJDEiICIkQ0RST00iCi0rUE9MX1dpbmVfSW5zdGFsbENEUk9NKCkg ewotKyAgUE9MX1dpbmVfSW5zdGFsbENEUk9NQ3VzdG9tICIkMSIgIiRDRFJPTSIKLSB9Ci0tUE9M X1dpbmVfSW5zdGFsbENEUk9NQ3VzdG9tKCkKLS17Ci0tCWlmIFsgIiQxIiBdOyB0aGVuCi0tCQls ZXR0ZXI9IiQxOiIKLS0JZWxzZQotLQkJbGV0dGVyPSJwOiIKLS0JZmkKLS0JaWYgWyAiJENEUk9N IiBdOyB0aGVuCi0tCQljZCAiJFdJTkVQUkVGSVgvZG9zZGV2aWNlcyIKLS0JCXJtICIkbGV0dGVy IiAyPiAvZGV2L251bGwKLS0JCWxuIC1zICIkMiIgIiRsZXR0ZXIiCi0tCWZpCi0rUE9MX1dpbmVf SW5zdGFsbENEUk9NQ3VzdG9tKCkgewotKyAgaWYgWyAiJDEiIF07IHRoZW4KLSsgICAgbGV0dGVy PSIkMToiCi0rICBlbHNlCi0rICAgIGxldHRlcj0icDoiCi0rICBmaQotKyAgaWYgWyAiJENEUk9N IiBdOyB0aGVuCi0rICAgIGNkICIkV0lORVBSRUZJWC9kb3NkZXZpY2VzIgotKyAgICBybSAiJGxl dHRlciIgMj4vZGV2L251bGwKLSsgICAgbG4gLXMgIiQyIiAiJGxldHRlciIKLSsgIGZpCi0gfQot LVBPTF9XaW5lX0luc3RhbGxfcmVzb3VyY2VzKCkKLS17Ci0tCSMgSW5zdGFsbCBnZWNrbyBvciBt b25vIGZvciBzZWxlY3RlZCB3aW5lIHZlcnNpb24KLS0JIyBVc2FnZSA6IFBPTF9XaW5lX0luc3Rh bGxfcmVzb3VyY2VzIChnZWNrb3xtb25vKSBbIFZlcnNpb24gXSAoIEFyY2ggKQotLQlbIC16ICIk MSIgXSAmJiByZXR1cm4gMQotLQlbICIkMSIgPSAibW9ubyIgXSAmJiByZXNvdXJjZT0iJDEiIHx8 IHJlc291cmNlPSJnZWNrbyIKLS0Jd2luZV92ZXJzaW9uPSIkMiIKLS0JdW5wYXRjaGVkX3ZlcnNp b249YFBPTF9XaW5lX0dldEJhc2VOYW1lICIkMiJgCi0tCVsgIiQzIiA9ICJhbWQ2NCIgXSAmJiBh cmNoPSIkMyIgfHwgYXJjaD0ieDg2IgotLQotLQlQT0xfRGVidWdfTWVzc2FnZSAiSW5zdGFsbGlu ZyAkcmVzb3VyY2UgZm9yIHdpbmUgJHVucGF0Y2hlZF92ZXJzaW9uICRhcmNoIgotLQlyZXNvdXJj ZV9kaXI9IiRQT0xfVVNFUl9ST09UL3dpbmUvJHJlc291cmNlIgotLQlyZXNvdXJjZV9maWxlPSIk UE9MX1VTRVJfUk9PVC9jb25maWd1cmF0aW9ucy9saXN0ZXMvJHJlc291cmNlLmxzdCIKLS0JZm91 bmQ9IiQoZ3JlcCAiXiR7dW5wYXRjaGVkX3ZlcnNpb24vLy4vXC59OyIgIiRyZXNvdXJjZV9maWxl IikiCi0tCVsgIiRQT0xfT1MiID0gIkxpbnV4IiBdICYmIHdvcz0ibGludXgiCi0tCVsgIiRQT0xf T1MiID0gIkZyZWVCU0QiIF0gJiYgd29zPSJmcmVlYnNkIgotLQlbICIkUE9MX09TIiA9ICJNYWMi IF0gJiYgd29zPSJkYXJ3aW4iCi0tCi0tCWlmIFsgISAtTCAiJFBPTF9VU0VSX1JPT1Qvd2luZS8k d29zLSRhcmNoLyR3aW5lX3ZlcnNpb24vc2hhcmUvd2luZS8kcmVzb3VyY2UiIF0KLS0JdGhlbgot LQkJUE9MX0RlYnVnX01lc3NhZ2UgIkxpbmtpbmcgJHJlc291cmNlIgotLQkJbG4gLXMgIiRQT0xf VVNFUl9ST09UL3dpbmUvJHJlc291cmNlLyIgIiRQT0xfVVNFUl9ST09UL3dpbmUvJHdvcy0kYXJj aC8kd2luZV92ZXJzaW9uL3NoYXJlL3dpbmUvJHJlc291cmNlIgotLQlmaQotLQlpZiBbICIkZm91 bmQiIF07IHRoZW4KLS0JCXJlc291cmNleDg2PSIkKGN1dCAtZCAnOycgLWYyIDw8PCAkZm91bmQp IgotLQkJcmVzb3VyY2VhbWQ2ND0iJChjdXQgLWQgJzsnIC1mMyA8PDwgJGZvdW5kKSIKLS0JCW1k NXg4Nj0iJChjdXQgLWQgJzsnIC1mNCA8PDwgJGZvdW5kKSIKLS0JCW1kNWFtZDY0PSIkKGN1dCAt ZCAnOycgLWY1IDw8PCAkZm91bmQpIgotLQotLQkJY2QgIiRyZXNvdXJjZV9kaXIiCi0tCQlpZiBb ICIkcmVzb3VyY2V4ODYiIF07IHRoZW4KLS0JCQlpZiBbIC1lICIkcmVzb3VyY2V4ODYiIF07IHRo ZW4KLS0JCQkJUE9MX0RlYnVnX01lc3NhZ2UgIiRyZXNvdXJjZXg4NiBhbHJlYWR5IGluc3RhbGxl ZC4gU2tpcHBpbmciCi0tCQkJZWxzZQotLQkJCQlQT0xfRGVidWdfTWVzc2FnZSAiSW5zdGFsbGlu ZyAkcmVzb3VyY2V4ODYiCi0tCQkJCVBPTF9Eb3dubG9hZCAiJChyZXNvdXJjZV9kb3dubG9hZF91 cmwgJHJlc291cmNlIHg4NiAkcmVzb3VyY2V4ODYpIiAiJG1kNXg4NiIKLS0JCQlmaQotLQkJZmkK LS0KLS0JCWlmIFsgIiRhcmNoIiA9ICJhbWQ2NCIgXTsgdGhlbgotLQkJCWlmIFsgIiRyZXNvdXJj ZWFtZDY0IiBdOyB0aGVuCi0tCQkJCWlmIFsgLWUgIiRyZXNvdXJjZWFtZDY0IiBdOyB0aGVuCi0t CQkJCQlQT0xfRGVidWdfTWVzc2FnZSAiJHJlc291cmNlYW1kNjQgYWxyZWFkeSBpbnN0YWxsZWQu IFNraXBwaW5nIgotLQkJCQllbHNlCi0tCQkJCQlQT0xfRGVidWdfTWVzc2FnZSAiSW5zdGFsbGlu ZyAkcmVzb3VyY2VhbWQ2NCIKLS0JCQkJCVBPTF9Eb3dubG9hZCAiJChyZXNvdXJjZV9kb3dubG9h ZF91cmwgJHJlc291cmNlIGFtZDY0ICRyZXNvdXJjZWFtZDY0KSIgIiRtZDVhbWQ2NCIKLS0JCQkJ ZmkKLS0JCQlmaQotLQkJZmkKLS0JZmkKLStQT0xfV2luZV9JbnN0YWxsX3Jlc291cmNlcygpIHsK LSsgICMgSW5zdGFsbCBnZWNrbyBvciBtb25vIGZvciBzZWxlY3RlZCB3aW5lIHZlcnNpb24KLSsg ICMgVXNhZ2UgOiBQT0xfV2luZV9JbnN0YWxsX3Jlc291cmNlcyAoZ2Vja298bW9ubykgWyBWZXJz aW9uIF0gKCBBcmNoICkKLSsgIFsgLXogIiQxIiBdICYmIHJldHVybiAxCi0rICBbICIkMSIgPSAi bW9ubyIgXSAmJiByZXNvdXJjZT0iJDEiIHx8IHJlc291cmNlPSJnZWNrbyIKLSsgIHdpbmVfdmVy c2lvbj0iJDIiCi0rICB1bnBhdGNoZWRfdmVyc2lvbj0kKFBPTF9XaW5lX0dldEJhc2VOYW1lICIk MiIpCi0rICBbICIkMyIgPSAiYW1kNjQiIF0gJiYgYXJjaD0iJDMiIHx8IGFyY2g9Ing4NiIKLSsK LSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJJbnN0YWxsaW5nICRyZXNvdXJjZSBmb3Igd2luZSAkdW5w YXRjaGVkX3ZlcnNpb24gJGFyY2giCi0rICByZXNvdXJjZV9kaXI9IiRQT0xfVVNFUl9ST09UL3dp bmUvJHJlc291cmNlIgotKyAgcmVzb3VyY2VfZmlsZT0iJFBPTF9VU0VSX1JPT1QvY29uZmlndXJh dGlvbnMvbGlzdGVzLyRyZXNvdXJjZS5sc3QiCi0rICBmb3VuZD0iJChncmVwICJeJHt1bnBhdGNo ZWRfdmVyc2lvbi8vLi9cLn07IiAiJHJlc291cmNlX2ZpbGUiKSIKLSsgIFsgIiRQT0xfT1MiID0g IkxpbnV4IiBdICYmIHdvcz0ibGludXgiCi0rICBbICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdICYm IHdvcz0iZnJlZWJzZCIKLSsgIFsgIiRQT0xfT1MiID0gIk1hYyIgXSAmJiB3b3M9ImRhcndpbiIK LSsKLSsgIGlmIFsgISAtTCAiJFBPTF9VU0VSX1JPT1Qvd2luZS8kd29zLSRhcmNoLyR3aW5lX3Zl cnNpb24vc2hhcmUvd2luZS8kcmVzb3VyY2UiIF07IHRoZW4KLSsgICAgUE9MX0RlYnVnX01lc3Nh Z2UgIkxpbmtpbmcgJHJlc291cmNlIgotKyAgICBsbiAtcyAiJFBPTF9VU0VSX1JPT1Qvd2luZS8k cmVzb3VyY2UvIiAiJFBPTF9VU0VSX1JPT1Qvd2luZS8kd29zLSRhcmNoLyR3aW5lX3ZlcnNpb24v c2hhcmUvd2luZS8kcmVzb3VyY2UiCi0rICBmaQotKyAgaWYgWyAiJGZvdW5kIiBdOyB0aGVuCi0r ICAgIHJlc291cmNleDg2PSIkKGN1dCAtZCAnOycgLWYyIDw8PCRmb3VuZCkiCi0rICAgIHJlc291 cmNlYW1kNjQ9IiQoY3V0IC1kICc7JyAtZjMgPDw8JGZvdW5kKSIKLSsgICAgbWQ1eDg2PSIkKGN1 dCAtZCAnOycgLWY0IDw8PCRmb3VuZCkiCi0rICAgIG1kNWFtZDY0PSIkKGN1dCAtZCAnOycgLWY1 IDw8PCRmb3VuZCkiCi0rCi0rICAgIGNkICIkcmVzb3VyY2VfZGlyIgotKyAgICBpZiBbICIkcmVz b3VyY2V4ODYiIF07IHRoZW4KLSsgICAgICBpZiBbIC1lICIkcmVzb3VyY2V4ODYiIF07IHRoZW4K LSsgICAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICIkcmVzb3VyY2V4ODYgYWxyZWFkeSBpbnN0YWxs ZWQuIFNraXBwaW5nIgotKyAgICAgIGVsc2UKLSsgICAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJJ bnN0YWxsaW5nICRyZXNvdXJjZXg4NiIKLSsgICAgICAgIFBPTF9Eb3dubG9hZCAiJChyZXNvdXJj ZV9kb3dubG9hZF91cmwgJHJlc291cmNlIHg4NiAkcmVzb3VyY2V4ODYpIiAiJG1kNXg4NiIKLSsg ICAgICBmaQotKyAgICBmaQotKwotKyAgICBpZiBbICIkYXJjaCIgPSAiYW1kNjQiIF07IHRoZW4K LSsgICAgICBpZiBbICIkcmVzb3VyY2VhbWQ2NCIgXTsgdGhlbgotKyAgICAgICAgaWYgWyAtZSAi JHJlc291cmNlYW1kNjQiIF07IHRoZW4KLSsgICAgICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIiRy ZXNvdXJjZWFtZDY0IGFscmVhZHkgaW5zdGFsbGVkLiBTa2lwcGluZyIKLSsgICAgICAgIGVsc2UK LSsgICAgICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIkluc3RhbGxpbmcgJHJlc291cmNlYW1kNjQi Ci0rICAgICAgICAgIFBPTF9Eb3dubG9hZCAiJChyZXNvdXJjZV9kb3dubG9hZF91cmwgJHJlc291 cmNlIGFtZDY0ICRyZXNvdXJjZWFtZDY0KSIgIiRtZDVhbWQ2NCIKLSsgICAgICAgIGZpCi0rICAg ICAgZmkKLSsgICAgZmkKLSsgIGZpCi0gfQotLXJlc291cmNlX2Rvd25sb2FkX3VybCgpCi0tewot LQkjIHJlc291cmNlX2Rvd25sb2FkX3VybCAoZ2Vja298bW9ubykgWyBBcmNoIF0gWyBGaWxlbmFt ZSBdCi0tCWlmIFsgIiQxIiA9ICJnZWNrbyIgXTsgdGhlbgotLQkJZWNobyAiJEdFQ0tPX1NJVEUv JDIvJDMiCi0tCWZpCi0tCWlmIFsgIiQxIiA9ICJtb25vIiBdOyB0aGVuCi0tIwkJbG9jYWwgdmVy c2lvbj0iJHszJS5tc2l9IgotLSMJCXZlcnNpb249IiR7dmVyc2lvbiN3aW5lLW1vbm8tfSIKLS0j CQllY2hvICJodHRwOi8vc291cmNlLndpbmVocS5vcmcvd2luZW1vbm8ucGhwP3Y9JHt2ZXJzaW9u fSIKLS0jCQllY2hvICJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC93aW5lLyQzIgot LSMJCWVjaG8gIiRNT05PX1NJVEUvJDIvJDMiCi0tCQllY2hvICIkTU9OT19TSVRFLyQzIgotLQlm aQotK3Jlc291cmNlX2Rvd25sb2FkX3VybCgpIHsKLSsgICMgcmVzb3VyY2VfZG93bmxvYWRfdXJs IChnZWNrb3xtb25vKSBbIEFyY2ggXSBbIEZpbGVuYW1lIF0KLSsgIGlmIFsgIiQxIiA9ICJnZWNr byIgXTsgdGhlbgotKyAgICBlY2hvICIkR0VDS09fU0lURS8kMi8kMyIKLSsgIGZpCi0rICBpZiBb ICIkMSIgPSAibW9ubyIgXTsgdGhlbgotKyAgICAjCQlsb2NhbCB2ZXJzaW9uPSIkezMlLm1zaX0i Ci0rICAgICMJCXZlcnNpb249IiR7dmVyc2lvbiN3aW5lLW1vbm8tfSIKLSsgICAgIwkJZWNobyAi aHR0cDovL3NvdXJjZS53aW5laHEub3JnL3dpbmVtb25vLnBocD92PSR7dmVyc2lvbn0iCi0rICAg ICMJCWVjaG8gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3dpbmUvJDMiCi0rICAg ICMJCWVjaG8gIiRNT05PX1NJVEUvJDIvJDMiCi0rICAgIGVjaG8gIiRNT05PX1NJVEUvJDMiCi0r ICBmaQotIH0KLS1QT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudigpCi0tewotLQkjIEdldCB0aGUg Y3VycmVudCBwcmVmaXgncyB2ZXJzaW9uIGFuZCBzZXQgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJs ZQotLQkjIFVzYWdlOiBQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgotLQlbICIkV0lORVBSRUZJ WCIgPSAiIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBpcyBub3Qgc2V0ISIKLS0J UE9MX1dJTkVWRVJTSU9OPSIkKFBPTF9Db25maWdfUHJlZml4UmVhZCAiVkVSU0lPTiIpIgotLQlQ T0xfQVJDSD0iJChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgIkFSQ0giKSIKLS0JWyAiJFBPTF9XSU5F VkVSU0lPTiIgPSAiIiBdIHx8IFBPTF9XaW5lX1NldFZlcnNpb25FbnYKLStQT0xfV2luZV9BdXRv U2V0VmVyc2lvbkVudigpIHsKLSsgICMgR2V0IHRoZSBjdXJyZW50IHByZWZpeCdzIHZlcnNpb24g YW5kIHNldCBQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlCi0rICAjIFVzYWdlOiBQT0xfV2luZV9B dXRvU2V0VmVyc2lvbkVudgotKyAgWyAiJFdJTkVQUkVGSVgiID0gIiIgXSAmJiBQT0xfRGVidWdf RmF0YWwgIldJTkVQUkVGSVggaXMgbm90IHNldCEiCi0rICBQT0xfV0lORVZFUlNJT049IiQoUE9M X0NvbmZpZ19QcmVmaXhSZWFkICJWRVJTSU9OIikiCi0rICBQT0xfQVJDSD0iJChQT0xfQ29uZmln X1ByZWZpeFJlYWQgIkFSQ0giKSIKLSsgIFsgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXSB8fCBQ T0xfV2luZV9TZXRWZXJzaW9uRW52Ci0gfQotLVBPTF9XaW5lX1NldFZlcnNpb25FbnYoKQotLXsK LS0JIyBVc2FnZTogUE9MX1dpbmVfU2V0V2luZVZlcnNpb24gW1ZFUlNJT05dCi0tCSMgR2V0IGZp cnN0IGFyZ3VtZW50J3Mgd2luZSB2ZXJzaW9uIGFuZCBzZXQgUEFUSCBlbnZpcm9ubWVudCB2YXJp YWJsZQotLQlbICEgIiQxIiA9ICIiIF0gJiYgZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCi0t CVsgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXSAmJiBQT0xfRGVidWdfV2FybmluZyAiTm8gUE9M X1dJTkVWRVJTSU9OIHNldCwgYXNzdW1pbmcgaXQgaXMgcmVzZXQiCi0tCVsgIiRQT0xfV0lORVZF UlNJT04iID0gIiIgXSAmJiBleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSItLXJlc2V0IgotLQlpZiBb ICEgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXQotLQl0aGVuCi0tCQlbICIkUE9MX0FSQ0giID0g IiIgXSAmJiBQT0xfU3lzdGVtX1NldEFyY2ggImF1dG8iCi0tCQkjUE9MX0RlYnVnX01lc3NhZ2Ug IlNldHRpbmcgd2luZSB2ZXJzaW9uIHBhdGg6ICRQT0xfV0lORVZFUlNJT04sICRQT0xfQVJDSCIK LS0JCVsgIiRQT0xfT1MiID0gIk1hYyIgXSAmJiBBUkNIX1BSRUZJWD0iZGFyd2luIgotLQkJWyAi JFBPTF9PUyIgPSAiRnJlZUJTRCIgXSAmJiBBUkNIX1BSRUZJWD0iZnJlZWJzZCIKLS0JCVsgIiRQ T0xfT1MiID0gIkxpbnV4IiBdICYmIEFSQ0hfUFJFRklYPSJsaW51eCIKLS0JCU9MRFBBVEg9IiRQ V0QiCi0tCQlXSU5FRElSPSIkUE9MX1VTRVJfUk9PVC93aW5lLyRBUkNIX1BSRUZJWC0kUE9MX0FS Q0giCi0tCQlta2RpciAtcCAiJFdJTkVESVIiCi0tCQljZCAiJFdJTkVESVIiCi0tCi0tCQlpZiBb ICIkUE9MX1dJTkVWRVJTSU9OIiA9ICItLXJlc2V0IiBdCi0tCQl0aGVuCi0tCQkJZXhwb3J0IFBB VEg9IiRQQVRIX09SSUdJTiIKLS0JCQlleHBvcnQgTERfTElCUkFSWV9QQVRIPSIkTERfUEFUSF9P UklHSU4iCi0tCQkJWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIgXSAmJiBleHBvcnQgTERfMzJfTElC UkFSWV9QQVRIPSIkTERfMzJfUEFUSF9PUklHSU4iCi0tCQkJZXhwb3J0IFBPTF9XSU5FVkVSU0lP Tj0iIgotLQkJZWxzZQotLQkJCWlmIFsgISAtZSAiJFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTiIg XQotLQkJCXRoZW4KLS0JCQkJUE9MX0RlYnVnX01lc3NhZ2UgIldpbmUgJFBPTF9XSU5FVkVSU0lP TiBub3QgaW5zdGFsbGVkLiBJbnN0YWxsaW5nIGl0IgotLQkJIAkJUE9MX1dpbmVfSW5zdGFsbFZl cnNpb24gIiRQT0xfV0lORVZFUlNJT04iCi0tCQkJZmkKLS0JCQlleHBvcnQgUEFUSD0iJFdJTkVE SVIvJFBPTF9XSU5FVkVSU0lPTi9iaW4vOiRQQVRIIgotLQkJCVsgIiRQT0xfT1MiID0gIk1hYyIg XSAmJiBleHBvcnQgRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEg9IiRXSU5FRElSLyRQT0xfV0lO RVZFUlNJT04vbGliLyIKLS0JCQlleHBvcnQgRlJFRVRZUEVfUFJPUEVSVElFUz0idHJ1ZXR5cGU6 aW50ZXJwcmV0ZXItdmVyc2lvbj0zNSIKLS0JCQlleHBvcnQgTERfTElCUkFSWV9QQVRIPSIkV0lO RURJUi8kUE9MX1dJTkVWRVJTSU9OL2xpYi86JFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTi9saWI2 NC86JExEX0xJQlJBUllfUEFUSCIKLS0JCQlbICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdICYmIGV4 cG9ydCBMRF8zMl9MSUJSQVJZX1BBVEg9IiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04vbGliLzok TERfMzJfTElCUkFSWV9QQVRIIgotLQkJZmkKLS0JZWxzZQotLQkJaWYgWyAiJFBPTF9PUyIgPSAi TWFjIiBdOyB0aGVuCi0tCQkJWyAiJERZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIIiA9ICIiIF0g JiYgZXhwb3J0IERZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIPSIkUkVTT1VSQ0VQQVRIL3VuaXgv d2luZS9saWIvIgotLQkJZmkKLS0JZmkKLS0JY2QgIiRPTERQQVRIIgotK1BPTF9XaW5lX1NldFZl cnNpb25FbnYoKSB7Ci0rICAjIFVzYWdlOiBQT0xfV2luZV9TZXRXaW5lVmVyc2lvbiBbVkVSU0lP Tl0KLSsgICMgR2V0IGZpcnN0IGFyZ3VtZW50J3Mgd2luZSB2ZXJzaW9uIGFuZCBzZXQgUEFUSCBl bnZpcm9ubWVudCB2YXJpYWJsZQotKyAgWyAhICIkMSIgPSAiIiBdICYmIGV4cG9ydCBQT0xfV0lO RVZFUlNJT049IiQxIgotKyAgWyAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdICYmIFBPTF9EZWJ1 Z19XYXJuaW5nICJObyBQT0xfV0lORVZFUlNJT04gc2V0LCBhc3N1bWluZyBpdCBpcyByZXNldCIK LSsgIFsgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXSAmJiBleHBvcnQgUE9MX1dJTkVWRVJTSU9O PSItLXJlc2V0IgotKyAgaWYgWyAhICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF07IHRoZW4KLSsg ICAgWyAiJFBPTF9BUkNIIiA9ICIiIF0gJiYgUE9MX1N5c3RlbV9TZXRBcmNoICJhdXRvIgotKyAg ICAjUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSB2ZXJzaW9uIHBhdGg6ICRQT0xfV0lO RVZFUlNJT04sICRQT0xfQVJDSCIKLSsgICAgWyAiJFBPTF9PUyIgPSAiTWFjIiBdICYmIEFSQ0hf UFJFRklYPSJkYXJ3aW4iCi0rICAgIFsgIiRQT0xfT1MiID0gIkZyZWVCU0QiIF0gJiYgQVJDSF9Q UkVGSVg9ImZyZWVic2QiCi0rICAgIFsgIiRQT0xfT1MiID0gIkxpbnV4IiBdICYmIEFSQ0hfUFJF RklYPSJsaW51eCIKLSsgICAgT0xEUEFUSD0iJFBXRCIKLSsgICAgV0lORURJUj0iJFBPTF9VU0VS X1JPT1Qvd2luZS8kQVJDSF9QUkVGSVgtJFBPTF9BUkNIIgotKyAgICBta2RpciAtcCAiJFdJTkVE SVIiCi0rICAgIGNkICIkV0lORURJUiIKLSsKLSsgICAgaWYgWyAiJFBPTF9XSU5FVkVSU0lPTiIg PSAiLS1yZXNldCIgXTsgdGhlbgotKyAgICAgIGV4cG9ydCBQQVRIPSIkUEFUSF9PUklHSU4iCi0r ICAgICAgZXhwb3J0IExEX0xJQlJBUllfUEFUSD0iJExEX1BBVEhfT1JJR0lOIgotKyAgICAgIFsg IiRQT0xfT1MiID0gIkZyZWVCU0QiIF0gJiYgZXhwb3J0IExEXzMyX0xJQlJBUllfUEFUSD0iJExE XzMyX1BBVEhfT1JJR0lOIgotKyAgICAgIGV4cG9ydCBQT0xfV0lORVZFUlNJT049IiIKLSsgICAg ZWxzZQotKyAgICAgIGlmIFsgISAtZSAiJFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTiIgXTsgdGhl bgotKyAgICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIldpbmUgJFBPTF9XSU5FVkVSU0lPTiBub3Qg aW5zdGFsbGVkLiBJbnN0YWxsaW5nIGl0IgotKyAgICAgICAgUE9MX1dpbmVfSW5zdGFsbFZlcnNp b24gIiRQT0xfV0lORVZFUlNJT04iCi0rICAgICAgICBbWyAiJD8iID09IDIgXV0gJiYgcmV0dXJu IDAKLSsgICAgICBmaQotKyAgICAgIGVjaG8gIlNldHRpbmcgcGF0aHMuLi4iCi0rICAgICAgZXhw b3J0IFBBVEg9IiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04vYmluLzokUEFUSCIKLSsgICAgICBb ICIkUE9MX09TIiA9ICJNYWMiIF0gJiYgZXhwb3J0IERZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRI PSIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2xpYi8iCi0rICAgICAgZXhwb3J0IEZSRUVUWVBF X1BST1BFUlRJRVM9InRydWV0eXBlOmludGVycHJldGVyLXZlcnNpb249MzUiCi0rICAgICAgZXhw b3J0IExEX0xJQlJBUllfUEFUSD0iJFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTi9saWIvOiRXSU5F RElSLyRQT0xfV0lORVZFUlNJT04vbGliNjQvOiRMRF9MSUJSQVJZX1BBVEgiCi0rICAgICAgWyAi JFBPTF9PUyIgPSAiRnJlZUJTRCIgXSAmJiBleHBvcnQgTERfMzJfTElCUkFSWV9QQVRIPSIkV0lO RURJUi8kUE9MX1dJTkVWRVJTSU9OL2xpYi86JExEXzMyX0xJQlJBUllfUEFUSCIKLSsgICAgZmkK LSsgIGVsc2UKLSsgICAgaWYgWyAiJFBPTF9PUyIgPSAiTWFjIiBdOyB0aGVuCi0rICAgICAgWyAi JERZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIIiA9ICIiIF0gJiYgZXhwb3J0IERZTERfRkFMTEJB Q0tfTElCUkFSWV9QQVRIPSIkUkVTT1VSQ0VQQVRIL3VuaXgvd2luZS9saWIvIgotKyAgICBmaQot KyAgZmkKLSsgIGNkICIkT0xEUEFUSCIKLSB9Ci0tUE9MX1dpbmVfU2V0VmVyc2lvblByZWZpeCgp Ci0tewotLQkjIFVzYWdlOiBQT0xfV2luZV9TZXRWZXJzaW9uUHJlZml4IFtWRVJTSU9OXQotLQkj IENoYW5nZSBhIHByZWZpeCB3aW5lIHZlcnNpb24KLS0JWyAhICIkMSIgPSAiIiBdICYmIGV4cG9y dCBQT0xfV0lORVZFUlNJT049IiQxIgotLQlbICIkV0lORVBSRUZJWCIgPSAiIiBdICYmIFBPTF9E ZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBpcyBub3Qgc2V0ISIKLS0KLS0JUE9MX0NvbmZpZ19QcmVm aXhXcml0ZSAiVkVSU0lPTiIgIiRQT0xfV0lORVZFUlNJT04iCi0rUE9MX1dpbmVfU2V0VmVyc2lv blByZWZpeCgpIHsKLSsgICMgVXNhZ2U6IFBPTF9XaW5lX1NldFZlcnNpb25QcmVmaXggW1ZFUlNJ T05dCi0rICAjIENoYW5nZSBhIHByZWZpeCB3aW5lIHZlcnNpb24KLSsgIFsgISAiJDEiID0gIiIg XSAmJiBleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIkMSIKLSsgIFsgIiRXSU5FUFJFRklYIiA9ICIi IF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIGlzIG5vdCBzZXQhIgotKwotKyAgUE9M X0NvbmZpZ19QcmVmaXhXcml0ZSAiVkVSU0lPTiIgIiRQT0xfV0lORVZFUlNJT04iCi0gfQotLVBP TF9XaW5lX1ByZWZpeERlbGV0ZSgpCi0tewotLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xf RGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLS0gCWxvY2FsIHdpbmVwcmVmaXg9IiRX SU5FUFJFRklYIgotLQl3aW5lcHJlZml4PSR7d2luZXByZWZpeC8vIi8vIi8iLyJ9Ci0tCWxvY2Fs IHNob3J0Y3V0cz0oKQotLQlsb2NhbCBPTERJRlM9IiRJRlMiCi0tCUlGUz0kJ1xuJwotLQljZCAi JFBPTF9VU0VSX1JPT1Qvc2hvcnRjdXRzLyIgJiYKLS0JZm9yIHNob3J0Y3V0IGluICoKLS0JZG8K LS0JCVsgIiQoZGV0ZWN0X3dpbmVwcmVmaXggIiRzaG9ydGN1dCIpIiA9ICIkd2luZXByZWZpeCIg XSAmJiBzaG9ydGN1dHMrPSgiJHNob3J0Y3V0IikKLS0JZG9uZQotLQlJRlM9IiRPTERJRlMiCi0t Ci0tCSMgY2YgTWFpbldpbmRvdy5EZWxldGVQcmVmaXgoKQotLQlQT0xfU2V0dXBXaW5kb3dfd2Fp dF9uZXh0X3NpZ25hbCAiJChldmFsX2dldHRleHQgJ1VuaW5zdGFsbGluZy4uLicpIiAiJChldmFs X2dldHRleHQgJyRBUFBMSUNBVElPTl9USVRMRSBVbmluc3RhbGxlcicpIgotLQlpZiBbICIkeyNz aG9ydGN1dHNbQF19IiAtZ3QgMCBdOyB0aGVuCi0tIAkJUE9MX0RlYnVnX1dhcm5pbmcgIiR3aW5l cHJlZml4IGlzIHN0aWxsIGluIHVzZSBieSAkeyNzaG9ydGN1dHNbQF19IHNob3J0Y3V0cywgcmVt b3ZpbmcgdGhlbSBmaXJzdCIKLS0JCWZvciBzaG9ydGN1dCBpbiAiJHtzaG9ydGN1dHNbQF19Ijsg ZG8KLS0JCQlQT0xfRGVidWdfTWVzc2FnZSAiUmVtb3Zpbmcgc2hvcnRjdXQgJHNob3J0Y3V0Li4u IgotLQkJCWJhc2ggIiRQTEFZT05MSU5VWC9iYXNoL3VuaW5zdGFsbCIgLS1ub24taW50ZXJhY3Rp dmUgIiRzaG9ydGN1dCIKLS0JCWRvbmUKLS0JZmkKLS0KLS0gICAgICAgIGNsZWFuX3dpbmVwcmVm aXggLS1ub24taW50ZXJhY3RpdmUgIiRXSU5FUFJFRklYIgotK1BPTF9XaW5lX1ByZWZpeERlbGV0 ZSgpIHsKLSsgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBS RUZJWCBub3Qgc2V0IgotKyAgbG9jYWwgd2luZXByZWZpeD0iJFdJTkVQUkVGSVgiCi0rICB3aW5l cHJlZml4PSR7d2luZXByZWZpeC8vIi8vIi8iLyJ9Ci0rICBsb2NhbCBzaG9ydGN1dHM9KCkKLSsg IGxvY2FsIE9MRElGUz0iJElGUyIKLSsgIElGUz0kJ1xuJwotKyAgY2QgIiRQT0xfVVNFUl9ST09U L3Nob3J0Y3V0cy8iICYmCi0rICAgIGZvciBzaG9ydGN1dCBpbiAqOyBkbwotKyAgICAgIFsgIiQo ZGV0ZWN0X3dpbmVwcmVmaXggIiRzaG9ydGN1dCIpIiA9ICIkd2luZXByZWZpeCIgXSAmJiBzaG9y dGN1dHMrPSgiJHNob3J0Y3V0IikKLSsgICAgZG9uZQotKyAgSUZTPSIkT0xESUZTIgotKwotKyAg IyBjZiBNYWluV2luZG93LkRlbGV0ZVByZWZpeCgpCi0rICBQT0xfU2V0dXBXaW5kb3dfd2FpdF9u ZXh0X3NpZ25hbCAiJChldmFsX2dldHRleHQgJ1VuaW5zdGFsbGluZy4uLicpIiAiJChldmFsX2dl dHRleHQgJyRBUFBMSUNBVElPTl9USVRMRSBVbmluc3RhbGxlcicpIgotKyAgaWYgWyAiJHsjc2hv cnRjdXRzW0BdfSIgLWd0IDAgXTsgdGhlbgotKyAgICBQT0xfRGVidWdfV2FybmluZyAiJHdpbmVw cmVmaXggaXMgc3RpbGwgaW4gdXNlIGJ5ICR7I3Nob3J0Y3V0c1tAXX0gc2hvcnRjdXRzLCByZW1v dmluZyB0aGVtIGZpcnN0IgotKyAgICBmb3Igc2hvcnRjdXQgaW4gIiR7c2hvcnRjdXRzW0BdfSI7 IGRvCi0rICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIlJlbW92aW5nIHNob3J0Y3V0ICRzaG9ydGN1 dC4uLiIKLSsgICAgICBiYXNoICIkUExBWU9OTElOVVgvYmFzaC91bmluc3RhbGwiIC0tbm9uLWlu dGVyYWN0aXZlICIkc2hvcnRjdXQiCi0rICAgIGRvbmUKLSsgIGZpCi0rCi0rICBjbGVhbl93aW5l cHJlZml4IC0tbm9uLWludGVyYWN0aXZlICIkV0lORVBSRUZJWCIKLSB9Ci0tUE9MX1dpbmVfUHJl Zml4Q3JlYXRlKCkKLS17Ci0tCSMgQ3JlYXRlIGEgd2luZXByZWZpeAotLQkjIFVzYWdlOiBQT0xf V2luZV9QcmVmaXhDcmVhdGUgW1ZFUlNJT05dCi0tCWlmIFsgISAiJDEiID0gIiIgXTsgdGhlbgot LQkJUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgUE9MX1dJTkVWRVJTSU9OIHRvICQxIgotLQkJ ZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCi0tCWVsaWYgWyAiJFBPTF9XSU5FVkVSU0lPTiIg XTsgdGhlbgotLQkJUE9MX0RlYnVnX01lc3NhZ2UgIlBPTF9XSU5FVkVSU0lPTiBpcyBhbHJlYWR5 IHNldCB0byAkUE9MX1dJTkVWRVJTSU9OLiBVc2luZyBpdCIKLS0JZWxzZQotLQkJUE9MX0RlYnVn X01lc3NhZ2UgIk5vIHZlcnNpb24gc3BlY2lmaWVkLiBVc2luZyBzeXN0ZW0gdmVyc2lvbiAoJCh3 aW5lIC0tdmVyc2lvbikpIgotLQlmaQotLQotLQlQT0xfRGVidWdfTWVzc2FnZSAiQ3JlYXRpbmcg cHJlZml4ICgkUE9MX1dJTkVWRVJTSU9OKS4uLiIKLS0JWyAiJFBPTF9BUkNIIiA9ICIiIF0gJiYg UE9MX1N5c3RlbV9TZXRBcmNoICJhdXRvIgotLQlbICIkV0lORVBSRUZJWCIgPSAiIiBdICYmIFBP TF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBpcyBub3Qgc2V0ISIKLS0KLS0JaWYgWyAtZSAiJFdJ TkVQUkVGSVgiIF07IHRoZW4KLS0JCVBPTF9EZWJ1Z19NZXNzYWdlICJQcmVmaXggYWxyZWFkeSBl eGlzdHMiCi0tCQlMTkdfT1ZFUldSSVRFPSIkKGV2YWxfZ2V0dGV4dCAnT3ZlcndyaXRlICh1c3Vh bGx5IHdvcmtzLCBubyBndWFyYW50ZWUpJykiCi0tCQlMTkdfRVJBU0U9IiQoZXZhbF9nZXR0ZXh0 ICdFcmFzZSAodmlydHVhbCBkcml2ZSBjb250ZW50IHdpbGwgYmUgbG9zdCknKSIKLS0JCUxOR19B Qk9SVD0iJChldmFsX2dldHRleHQgJ0Fib3J0IGluc3RhbGxhdGlvbicpIgotLQotLQkJT0xEX0FS Q0g9IiIKLS0JCVsgLWUgIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmNmZyIgXSAmJiBPTERfQVJD SD0kKFBPTF9Db25maWdfUHJlZml4UmVhZCAiQVJDSCIpCi0tCQlpZiBbICIkT0xEX0FSQ0giID0g IiRQT0xfVVNFUl9BUkNIIiBdOyB0aGVuCi0tCQkJUFJFRklYX0NIT0lDRVM9IiRMTkdfT1ZFUldS SVRFfiRMTkdfRVJBU0V+JExOR19BQk9SVCIKLS0JCWVsc2UKLS0JCQkjIFNldHRpbmdzIGFyZSBu b3QgY29tcGF0aWJsZSwgb3ZlcndyaXRpbmcgaXMgbm90IGFuIG9wdGlvbgotLQkJCVBSRUZJWF9D SE9JQ0VTPSIkTE5HX0VSQVNFfiRMTkdfQUJPUlQiCi0tCQlmaQotLQotLQkJT0xEX0FQUF9BTldT RVI9IiRBUFBfQU5TV0VSIgotLQkJUFJFRk5BTUU9IiQoYmFzZW5hbWUgJFdJTkVQUkVGSVgpIgot LQkJUE9MX1NldHVwV2luZG93X21lbnUgIiQoZXZhbF9nZXR0ZXh0ICdUaGUgdGFyZ2V0IHZpcnR1 YWwgZHJpdmUgJFBSRUZOQU1FIGFscmVhZHkgZXhpc3RzOicpIiAiJFRJVExFIiAiJFBSRUZJWF9D SE9JQ0VTIiAifiIKLS0JCWNhc2UgIiRBUFBfQU5TV0VSIiBpbgotLQkJCSIkTE5HX09WRVJXUklU RSIpCi0tCQkJCSMgUHJlZml4IGNvbnRlbnQgaXMgbm90IHJlcHJvZHVjaWJsZSwgaXQncyB0ZW1w dGluZyB0byBkaXNhbGxvdyByZXBvcnRzCi0tCQkJCSMgTk9CVUdSRVBPUlQ9IlRSVUUiCi0tCQkJ CVBPTF9EZWJ1Z19NZXNzYWdlICJPdmVyd3JpdGUgUHJlZml4IgotLQkJCQkjIFNob3VsZCB3ZSBy ZXZlcnQgd2hhdCBoYXMgYmVlbiBhdXRvZGV0ZWN0ZWQgYnkgU2VsZWN0UHJlZml4IGhlcmUgdG9v PwotLQkJCQk7OwotLQkJCSIkTE5HX0VSQVNFIikKLS0JCQkJUE9MX0RlYnVnX01lc3NhZ2UgIkVy YXNlIFByZWZpeCIKLS0JCQkJUE9MX1dpbmVfUHJlZml4RGVsZXRlCi0tCQkJCSMgUmV2ZXJ0IHdo YXQgY291bGQgaGF2ZSBiZWVuIGF1dG9kZXRlY3RlZCB3aXRoIFNlbGVjdFByZWZpeAotLQkJCQlQ T0xfQVJDSD0iJFBPTF9VU0VSX0FSQ0giCi0tCQkJCTs7Ci0tCQkJKikKLS0JCQkJTk9CVUdSRVBP UlQ9IlRSVUUiCi0tCQkJCVBPTF9EZWJ1Z19GYXRhbCAiJChldmFsX2dldHRleHQgJ1VzZXIgYWJv cnQnKSIKLS0JCQkJOzsKLS0JCWVzYWMKLS0JCUFQUF9BTlNXRVI9IiRPTERfQVBQX0FOV1NFUiIK LS0JZmkKLS0KLS0JUE9MX1NldHVwV2luZG93X3dhaXQgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ug d2FpdCB3aGlsZSB0aGUgdmlydHVhbCBkcml2ZSBpcyBiZWluZyBjcmVhdGVkLi4uJykiICIkVElU TEUiCi0tCWlmIFsgLWUgIiRXSU5FUFJFRklYIiBdOyB0aGVuCi0tCQl0b3VjaCAiJFdJTkVQUkVG SVgvcGxheW9ubGludXguY2ZnIgotLQkJaWYgWyAhICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF07 IHRoZW4KLS0JCQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB2ZXJzaW9uIHRvICRQT0xfV0lO RVZFUlNJT04iCi0tCQkJUE9MX1dpbmVfU2V0VmVyc2lvblByZWZpeCAiJFBPTF9XSU5FVkVSU0lP TiIKLS0JCQlQT0xfV2luZV9TZXRWZXJzaW9uRW52Ci0tCQlmaQotLQllbHNlCSMgUHJlZml4IGRv ZXMgbm90IGV4aXQsIGxldCdzIGNyZWF0ZSBpdAotLQkJaWYgWyAiJFBPTF9XSU5FVkVSU0lPTiIg PSAiIiBdOyB0aGVuCi0tCQkJIyBTeXN0ZW0gd2luZXZlcnNpb24KLS0JCQkjIyBSZWFsbHkgYmFk IGlkZWEKLS0JCQkjIyBleHBvcnQgV0lORUFSQ0g9d2luMzIKLS0JCQlpZiBbICEgIiRQT0xfQVJD SCIgPSAiIiBdOyB0aGVuCi0tCQkJCWlmIFsgIiRQT0xfQVJDSCIgPSAieDg2IiBdOyB0aGVuCi0t CQkJCQlleHBvcnQgV0lORUFSQ0g9d2luMzIKLS0JCQkJZWxzZQotLQkJCQkJZXhwb3J0IFdJTkVB UkNIPXdpbjY0Ci0tCQkJCWZpCi0tCQkJCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFdJTkVB UkNIIHRvICRXSU5FQVJDSCIKLS0JCQlmaQotLQotLQkJCXdpbmUgd2luZWJvb3QKLS0JCQlQT0xf RGVidWdfSW5pdFByZWZpeAotLQotLQkJCWlmIFsgLWUgIiRXSU5FUFJFRklYL2RyaXZlX2Mvd2lu ZG93cy9zeXN3b3c2NCIgXSAjIEl0IGlzIGEgNjQgYml0cyBwcmVmaXgKLS0JCQl0aGVuCi0tCQkJ CVBPTF9Db25maWdfUHJlZml4V3JpdGUgIkFSQ0giICJhbWQ2NCIKLS0JCQkJUE9MX0RlYnVnX0xv Z1RvUHJlZml4ICJUaGlzIGlzIGEgNjRiaXRzIHByZWZpeCEiCi0tCQkJCVBPTF9Db25maWdfV3Jp dGUgV0lORV9TWVNURU1fQVJDSCBhbWQ2NAotLQkJCWVsc2UKLS0JCQkJUE9MX0NvbmZpZ19QcmVm aXhXcml0ZSAiQVJDSCIgIng4NiIKLS0JCQkJUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJUaGlzIGlz IGEgMzJiaXRzIHByZWZpeCEiCi0tCQkJCVBPTF9Db25maWdfV3JpdGUgV0lORV9TWVNURU1fQVJD SCB4ODYKLS0JCQlmaQotLQkJZWxzZQotLQkJCW1rZGlyIC1wICIkV0lORVBSRUZJWCIKLS0JCQlQ T0xfRGVidWdfTWVzc2FnZSAiVXNpbmcgd2luZSAkUE9MX1dJTkVWRVJTSU9OIgotLQkJCVBPTF9X aW5lX0luc3RhbGxWZXJzaW9uICIkUE9MX1dJTkVWRVJTSU9OIgotLQkJCVBPTF9TZXR1cFdpbmRv d193YWl0ICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgdGhlIHZpcnR1YWwgZHJp dmUgaXMgYmVpbmcgY3JlYXRlZC4uLicpIiAiJFRJVExFIgotLQkJCVBPTF9Db25maWdfUHJlZml4 V3JpdGUgIkFSQ0giICIkUE9MX0FSQ0giCi0tCQkJUE9MX0NvbmZpZ19QcmVmaXhXcml0ZSAiVkVS U0lPTiIgIiRQT0xfV0lORVZFUlNJT04iCi0tCQkJUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYK LS0KLS0JCQlQT0xfRGVidWdfSW5pdFByZWZpeAotLQotLQkJCXdoaWNoIHdpbmVwcmVmaXhjcmVh dGUgJiYgWyAiJChQT0xfTUQ1X2ZpbGUgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSkiKSIgIT0g IjVjMGVlOTA2ODI3NDZlODExNjk4YTUzNDE1YjQ3NjVkIiBdICYmIFsgISAiJCh3aGljaCB3aW5l cHJlZml4Y3JlYXRlIHwgZ3JlcCAkQVBQTElDQVRJT05fVElUTEUpIiA9ICIiIF0gJiYgd2luZSB3 aW5lcHJlZml4Y3JlYXRlCi0tCQkJd2luZSB3aW5lYm9vdAotLQkJZmkKLS0JZmkKLS0KLS0JIyBN YWtlIHN1cmUgdGhhdCAucmVnIGZpbGVzIGFyZSBjcmVhdGVkCi0tCWlmIHdoaWNoIHdpbmVzZXJ2 ZXI7IHRoZW4KLS0JCXdpbmVzZXJ2ZXIgLXcKLS0JZWxzZQotLQkJUE9MX0RlYnVnX01lc3NhZ2Ug Ildhcm5pbmcsIHdpbmVzZXJ2ZXIgbm90IGZvdW5kIgotLQkJc2xlZXAgNAotLQlmaQotLQlQT0xf TG9hZFZhcl9QUk9HUkFNRklMRVMKLS0JWyAtZSAiJFBPTF9VU0VSX1JPT1QvY29uZmlndXJhdGlv bnMvcG9zdF9wcmVmaXhjcmVhdGUiIF0gJiYgXAotLQkgICAgc291cmNlICIkUE9MX1VTRVJfUk9P VC9jb25maWd1cmF0aW9ucy9wb3N0X3ByZWZpeGNyZWF0ZSIKLStQT0xfV2luZV9QcmVmaXhDcmVh dGUoKSB7Ci0rICAjIENyZWF0ZSBhIHdpbmVwcmVmaXgKLSsgICMgVXNhZ2U6IFBPTF9XaW5lX1By ZWZpeENyZWF0ZSBbVkVSU0lPTl0KLSsgIGlmIFsgISAiJDEiID0gIiIgXTsgdGhlbgotKyAgICBQ T0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBQT0xfV0lORVZFUlNJT04gdG8gJDEiCi0rICAgIGV4 cG9ydCBQT0xfV0lORVZFUlNJT049IiQxIgotKyAgZWxpZiBbICIkUE9MX1dJTkVWRVJTSU9OIiBd OyB0aGVuCi0rICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJQT0xfV0lORVZFUlNJT04gaXMgYWxyZWFk eSBzZXQgdG8gJFBPTF9XSU5FVkVSU0lPTi4gVXNpbmcgaXQiCi0rICBlbHNlCi0rICAgIFBPTF9E ZWJ1Z19NZXNzYWdlICJObyB2ZXJzaW9uIHNwZWNpZmllZC4gVXNpbmcgc3lzdGVtIHZlcnNpb24g KCQod2luZSAtLXZlcnNpb24pKSIKLSsgIGZpCi0rCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiQ3Jl YXRpbmcgcHJlZml4ICgkUE9MX1dJTkVWRVJTSU9OKS4uLiIKLSsgIFsgIiRQT0xfQVJDSCIgPSAi IiBdICYmIFBPTF9TeXN0ZW1fU2V0QXJjaCAiYXV0byIKLSsgIFsgIiRXSU5FUFJFRklYIiA9ICIi IF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIGlzIG5vdCBzZXQhIgotKwotKyAgaWYg WyAtZSAiJFdJTkVQUkVGSVgiIF07IHRoZW4KLSsgICAgUE9MX0RlYnVnX01lc3NhZ2UgIlByZWZp eCBhbHJlYWR5IGV4aXN0cyIKLSsgICAgTE5HX09WRVJXUklURT0iJChldmFsX2dldHRleHQgJ092 ZXJ3cml0ZSAodXN1YWxseSB3b3Jrcywgbm8gZ3VhcmFudGVlKScpIgotKyAgICBMTkdfRVJBU0U9 IiQoZXZhbF9nZXR0ZXh0ICdFcmFzZSAodmlydHVhbCBkcml2ZSBjb250ZW50IHdpbGwgYmUgbG9z dCknKSIKLSsgICAgTE5HX0FCT1JUPSIkKGV2YWxfZ2V0dGV4dCAnQWJvcnQgaW5zdGFsbGF0aW9u JykiCi0rCi0rICAgIE9MRF9BUkNIPSIiCi0rICAgIFsgLWUgIiRXSU5FUFJFRklYL3BsYXlvbmxp bnV4LmNmZyIgXSAmJiBPTERfQVJDSD0kKFBPTF9Db25maWdfUHJlZml4UmVhZCAiQVJDSCIpCi0r ICAgIGlmIFsgIiRPTERfQVJDSCIgPSAiJFBPTF9VU0VSX0FSQ0giIF07IHRoZW4KLSsgICAgICBQ UkVGSVhfQ0hPSUNFUz0iJExOR19PVkVSV1JJVEV+JExOR19FUkFTRX4kTE5HX0FCT1JUIgotKyAg ICBlbHNlCi0rICAgICAgIyBTZXR0aW5ncyBhcmUgbm90IGNvbXBhdGlibGUsIG92ZXJ3cml0aW5n IGlzIG5vdCBhbiBvcHRpb24KLSsgICAgICBQUkVGSVhfQ0hPSUNFUz0iJExOR19FUkFTRX4kTE5H X0FCT1JUIgotKyAgICBmaQotKwotKyAgICBPTERfQVBQX0FOV1NFUj0iJEFQUF9BTlNXRVIiCi0r ICAgIFBSRUZOQU1FPSIkKGJhc2VuYW1lICRXSU5FUFJFRklYKSIKLSsgICAgUE9MX1NldHVwV2lu ZG93X21lbnUgIiQoZXZhbF9nZXR0ZXh0ICdUaGUgdGFyZ2V0IHZpcnR1YWwgZHJpdmUgJFBSRUZO QU1FIGFscmVhZHkgZXhpc3RzOicpIiAiJFRJVExFIiAiJFBSRUZJWF9DSE9JQ0VTIiAifiIKLSsg ICAgY2FzZSAiJEFQUF9BTlNXRVIiIGluCi0rICAgICIkTE5HX09WRVJXUklURSIpCi0rICAgICAg IyBQcmVmaXggY29udGVudCBpcyBub3QgcmVwcm9kdWNpYmxlLCBpdCdzIHRlbXB0aW5nIHRvIGRp c2FsbG93IHJlcG9ydHMKLSsgICAgICAjIE5PQlVHUkVQT1JUPSJUUlVFIgotKyAgICAgIFBPTF9E ZWJ1Z19NZXNzYWdlICJPdmVyd3JpdGUgUHJlZml4IgotKyAgICAgICMgU2hvdWxkIHdlIHJldmVy dCB3aGF0IGhhcyBiZWVuIGF1dG9kZXRlY3RlZCBieSBTZWxlY3RQcmVmaXggaGVyZSB0b28/Ci0r ICAgICAgOzsKLSsgICAgIiRMTkdfRVJBU0UiKQotKyAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJF cmFzZSBQcmVmaXgiCi0rICAgICAgUE9MX1dpbmVfUHJlZml4RGVsZXRlCi0rICAgICAgIyBSZXZl cnQgd2hhdCBjb3VsZCBoYXZlIGJlZW4gYXV0b2RldGVjdGVkIHdpdGggU2VsZWN0UHJlZml4Ci0r ICAgICAgUE9MX0FSQ0g9IiRQT0xfVVNFUl9BUkNIIgotKyAgICAgIDs7Ci0rICAgICopCi0rICAg ICAgTk9CVUdSRVBPUlQ9IlRSVUUiCi0rICAgICAgUE9MX0RlYnVnX0ZhdGFsICIkKGV2YWxfZ2V0 dGV4dCAnVXNlciBhYm9ydCcpIgotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgQVBQX0FOU1dF Uj0iJE9MRF9BUFBfQU5XU0VSIgotKyAgZmkKLSsKLSsgIFBPTF9TZXR1cFdpbmRvd193YWl0ICIk KGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgdGhlIHZpcnR1YWwgZHJpdmUgaXMgYmVp bmcgY3JlYXRlZC4uLicpIiAiJFRJVExFIgotKyAgaWYgWyAtZSAiJFdJTkVQUkVGSVgiIF07IHRo ZW4KLSsgICAgdG91Y2ggIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmNmZyIKLSsgICAgaWYgWyAh ICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF07IHRoZW4KLSsgICAgICBQT0xfRGVidWdfTWVzc2Fn ZSAiU2V0dGluZyB2ZXJzaW9uIHRvICRQT0xfV0lORVZFUlNJT04iCi0rICAgICAgUE9MX1dpbmVf U2V0VmVyc2lvblByZWZpeCAiJFBPTF9XSU5FVkVSU0lPTiIKLSsgICAgICBQT0xfV2luZV9TZXRW ZXJzaW9uRW52Ci0rICAgIGZpCi0rICBlbHNlICMgUHJlZml4IGRvZXMgbm90IGV4aXQsIGxldCdz IGNyZWF0ZSBpdAotKyAgICBpZiBbICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF07IHRoZW4KLSsg ICAgICAjIFN5c3RlbSB3aW5ldmVyc2lvbgotKyAgICAgICMjIFJlYWxseSBiYWQgaWRlYQotKyAg ICAgICMjIGV4cG9ydCBXSU5FQVJDSD13aW4zMgotKyAgICAgIGlmIFsgISAiJFBPTF9BUkNIIiA9 ICIiIF07IHRoZW4KLSsgICAgICAgIGlmIFsgIiRQT0xfQVJDSCIgPSAieDg2IiBdOyB0aGVuCi0r ICAgICAgICAgIGV4cG9ydCBXSU5FQVJDSD13aW4zMgotKyAgICAgICAgZWxzZQotKyAgICAgICAg ICBleHBvcnQgV0lORUFSQ0g9d2luNjQKLSsgICAgICAgIGZpCi0rICAgICAgICBQT0xfRGVidWdf TWVzc2FnZSAiU2V0dGluZyBXSU5FQVJDSCB0byAkV0lORUFSQ0giCi0rICAgICAgZmkKLSsKLSsg ICAgICB3aW5lIHdpbmVib290Ci0rICAgICAgUE9MX0RlYnVnX0luaXRQcmVmaXgKLSsKLSsgICAg ICBpZiBbIC1lICIkV0lORVBSRUZJWC9kcml2ZV9jL3dpbmRvd3Mvc3lzd293NjQiIF07IHRoZW4g IyBJdCBpcyBhIDY0IGJpdHMgcHJlZml4Ci0rICAgICAgICBQT0xfQ29uZmlnX1ByZWZpeFdyaXRl ICJBUkNIIiAiYW1kNjQiCi0rICAgICAgICBQT0xfRGVidWdfTG9nVG9QcmVmaXggIlRoaXMgaXMg YSA2NGJpdHMgcHJlZml4ISIKLSsgICAgICAgIFBPTF9Db25maWdfV3JpdGUgV0lORV9TWVNURU1f QVJDSCBhbWQ2NAotKyAgICAgIGVsc2UKLSsgICAgICAgIFBPTF9Db25maWdfUHJlZml4V3JpdGUg IkFSQ0giICJ4ODYiCi0rICAgICAgICBQT0xfRGVidWdfTG9nVG9QcmVmaXggIlRoaXMgaXMgYSAz MmJpdHMgcHJlZml4ISIKLSsgICAgICAgIFBPTF9Db25maWdfV3JpdGUgV0lORV9TWVNURU1fQVJD SCB4ODYKLSsgICAgICBmaQotKyAgICBlbHNlCi0rICAgICAgbWtkaXIgLXAgIiRXSU5FUFJFRklY IgotKyAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJVc2luZyB3aW5lICRQT0xfV0lORVZFUlNJT04i Ci0rICAgICAgUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24gIiRQT0xfV0lORVZFUlNJT04iCi0rICAg ICAgZXhpdENvZGU9IiQ/IgotKyAgICAgIFBPTF9TZXR1cFdpbmRvd193YWl0ICIkKGV2YWxfZ2V0 dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgdGhlIHZpcnR1YWwgZHJpdmUgaXMgYmVpbmcgY3JlYXRl ZC4uLicpIiAiJFRJVExFIgotKwotKyAgICAgIGlmIFtbICEgIiRleGl0Q29kZSIgPT0gIjIiIF1d OyB0aGVuICMjIFdpbmUgdmVyc2lvbiBpcyBhY3R1YWxseSBmb3VuZAotKyAgICAgICAgUE9MX0Nv bmZpZ19QcmVmaXhXcml0ZSAiQVJDSCIgIiRQT0xfQVJDSCIKLSsgICAgICAgIFBPTF9Db25maWdf UHJlZml4V3JpdGUgIlZFUlNJT04iICIkUE9MX1dJTkVWRVJTSU9OIgotKyAgICAgIGZpCi0rCi0r ICAgICAgUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKLSsKLSsgICAgICBQT0xfRGVidWdfSW5p dFByZWZpeAotKwotKyAgICAgIHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUgJiYgWyAiJChQT0xfTUQ1 X2ZpbGUgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSkiKSIgIT0gIjVjMGVlOTA2ODI3NDZlODEx Njk4YTUzNDE1YjQ3NjVkIiBdICYmIFsgISAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRlIHwgZ3Jl cCAkQVBQTElDQVRJT05fVElUTEUpIiA9ICIiIF0gJiYgd2luZSB3aW5lcHJlZml4Y3JlYXRlCi0r ICAgICAgd2luZSB3aW5lYm9vdAotKyAgICBmaQotKyAgZmkKLSsKLSsgICMgTWFrZSBzdXJlIHRo YXQgLnJlZyBmaWxlcyBhcmUgY3JlYXRlZAotKyAgaWYgd2hpY2ggd2luZXNlcnZlcjsgdGhlbgot KyAgICB3aW5lc2VydmVyIC13Ci0rICBlbHNlCi0rICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJXYXJu aW5nLCB3aW5lc2VydmVyIG5vdCBmb3VuZCIKLSsgICAgc2xlZXAgNAotKyAgZmkKLSsgIFBPTF9M b2FkVmFyX1BST0dSQU1GSUxFUwotKyAgWyAtZSAiJFBPTF9VU0VSX1JPT1QvY29uZmlndXJhdGlv bnMvcG9zdF9wcmVmaXhjcmVhdGUiIF0gJiYKLSsgICAgc291cmNlICIkUE9MX1VTRVJfUk9PVC9j b25maWd1cmF0aW9ucy9wb3N0X3ByZWZpeGNyZWF0ZSIKLSB9Ci0tUE9MX1dpbmVfT3ZlcnJpZGVE TEwoKQotLXsKLS0JIyBPdmVycmlkZSBETExzCi0tCU1PREU9JDEKLS0JWyAiJE1PREUiID0gImRp c2FibGVkIiBdICYmIHVuc2V0IE1PREUKLS0Jc2hpZnQKLS0KLS0JKGNhdCA8PCAnRU9GJwotK1BP TF9XaW5lX092ZXJyaWRlRExMKCkgewotKyAgIyBPdmVycmlkZSBETExzCi0rICBNT0RFPSQxCi0r ICBbICIkTU9ERSIgPSAiZGlzYWJsZWQiIF0gJiYgdW5zZXQgTU9ERQotKyAgc2hpZnQKLSsKLSsg ICgKLSsgICAgY2F0IDw8J0VPRicKLSBSRUdFRElUNAotIAotIFtIS0VZX0NVUlJFTlRfVVNFUlxT b2Z0d2FyZVxXaW5lXERsbE92ZXJyaWRlc10KLSBFT0YKLSAKLS0JZm9yIERMTCBpbiAiJEAiCi0t CWRvCi0tCQllY2hvICJcIiokRExMXCI9XCIkTU9ERVwiIgotLQlkb25lKSA+ICIkUE9MX1VTRVJf Uk9PVC90bXAvb3ZlcnJpZGUtZGxsLnJlZyIKLSsgICAgZm9yIERMTCBpbiAiJEAiOyBkbwotKyAg ICAgIGVjaG8gIlwiKiRETExcIj1cIiRNT0RFXCIiCi0rICAgIGRvbmUKLSsgICkgPiIkUE9MX1VT RVJfUk9PVC90bXAvb3ZlcnJpZGUtZGxsLnJlZyIKLSAKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIk92 ZXJyaWRpbmcgRExMcyIKLS0JUE9MX1NldHVwV2luZG93X3dhaXRfbmV4dF9zaWduYWwgIiQoZXZh bF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdC4uLicpIiAiJFRJVExFIgotLQlQT0xfV2luZSByZWdlZGl0 ICIkUE9MX1VTRVJfUk9PVC90bXAvb3ZlcnJpZGUtZGxsLnJlZyIKLS0Jcm0gIiRQT0xfVVNFUl9S T09UL3RtcC9vdmVycmlkZS1kbGwucmVnIgotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIk92ZXJyaWRp bmcgRExMcyIKLSsgIFBPTF9TZXR1cFdpbmRvd193YWl0X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0 dGV4dCAnUGxlYXNlIHdhaXQuLi4nKSIgIiRUSVRMRSIKLSsgIFBPTF9XaW5lIHJlZ2VkaXQgIiRQ T0xfVVNFUl9ST09UL3RtcC9vdmVycmlkZS1kbGwucmVnIgotKyAgcm0gIiRQT0xfVVNFUl9ST09U L3RtcC9vdmVycmlkZS1kbGwucmVnIgotIH0KLS1QT0xfV2luZV9EZWxPdmVycmlkZURMTCgpCi0t ewotLQkjIERlbGV0ZSBvdmVycmlkZSBETExzCi0tCShjYXQgPDwgJ0VPRicKLStQT0xfV2luZV9E ZWxPdmVycmlkZURMTCgpIHsKLSsgICMgRGVsZXRlIG92ZXJyaWRlIERMTHMKLSsgICgKLSsgICAg Y2F0IDw8J0VPRicKLSBSRUdFRElUNAotIAotIFtIS0VZX0NVUlJFTlRfVVNFUlxTb2Z0d2FyZVxX aW5lXERsbE92ZXJyaWRlc10KLSBFT0YKLSAKLS0JZm9yIERMTCBpbiAiJEAiCi0tCWRvCi0tCQll Y2hvICJcIiRETExcIj0tIgotLQkJZWNobyAiXCIqJERMTFwiPS0iCi0tCWRvbmUpID4gIiRQT0xf VVNFUl9ST09UL3RtcC9kZWwtb3ZlcnJpZGUtZGxsLnJlZyIKLS0JUE9MX0RlYnVnX01lc3NhZ2Ug IkRlbGV0aW5nIG92ZXJyaWRlcyBETExzIgotLQlQT0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0X3Np Z25hbCAiJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0Li4uJykiICIkVElUTEUiCi0tCVBPTF9X aW5lIHJlZ2VkaXQgIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtb3ZlcnJpZGUtZGxsLnJlZyIKLS0J cm0gIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtb3ZlcnJpZGUtZGxsLnJlZyIKLSsgICAgZm9yIERM TCBpbiAiJEAiOyBkbwotKyAgICAgIGVjaG8gIlwiJERMTFwiPS0iCi0rICAgICAgZWNobyAiXCIq JERMTFwiPS0iCi0rICAgIGRvbmUKLSsgICkgPiIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLW92ZXJy aWRlLWRsbC5yZWciCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiRGVsZXRpbmcgb3ZlcnJpZGVzIERM THMiCi0rICBQT0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0X3NpZ25hbCAiJChldmFsX2dldHRleHQg J1BsZWFzZSB3YWl0Li4uJykiICIkVElUTEUiCi0rICBQT0xfV2luZSByZWdlZGl0ICIkUE9MX1VT RVJfUk9PVC90bXAvZGVsLW92ZXJyaWRlLWRsbC5yZWciCi0rICBybSAiJFBPTF9VU0VSX1JPT1Qv dG1wL2RlbC1vdmVycmlkZS1kbGwucmVnIgotIH0KLS1QT0xfV2luZV9PdmVycmlkZURMTF9BcHAo KQotLXsKLS0JIyBBcHAtc3BlY2lmaWMgRExMIG92ZXJyaWRlcwotLQlBUFA9IiQxIgotLQlNT0RF PSIkMiIKLS0JWyAiJE1PREUiID0gImRpc2FibGVkIiBdICYmIHVuc2V0IE1PREUKLS0Jc2hpZnQg MgotLQotLQkoY2F0IDw8IEVPRgotK1BPTF9XaW5lX092ZXJyaWRlRExMX0FwcCgpIHsKLSsgICMg QXBwLXNwZWNpZmljIERMTCBvdmVycmlkZXMKLSsgIEFQUD0iJDEiCi0rICBNT0RFPSIkMiIKLSsg IFsgIiRNT0RFIiA9ICJkaXNhYmxlZCIgXSAmJiB1bnNldCBNT0RFCi0rICBzaGlmdCAyCi0rCi0r ICAoCi0rICAgIGNhdCA8PEVPRgotIFJFR0VESVQ0Ci0gCi0gW0hLRVlfQ1VSUkVOVF9VU0VSXFxT b2Z0d2FyZVxcV2luZVxcQXBwRGVmYXVsdHNcXCRBUFBcXERsbE92ZXJyaWRlc10KLSBFT0YKLS0J Zm9yIERMTCBpbiAiJEAiCi0tCWRvCi0tCQkjIFdobyBrbm93cyB3aGF0IHRoaXMgaGFjayBpcyBm b3I/Ci0tCQlpZiBbICIkRExMIiA9ICJjb21jdGwzMiIgXTsgdGhlbgotLQkJCXJtIC1yZiAiJFdJ TkVQUkVGSVgvd2luc3hzL21hbmlmZXN0cy94ODZfbWljcm9zb2Z0LndpbmRvd3MuY29tbW9uLWNv bnRyb2xzXzY1OTViNjQxNDRjY2YxZGZfNi4wLjI2MDAuMjk4Ml9ub25lX2RlYWRiZWVmLm1hbmlm ZXN0IgotLQkJZmkKLS0JCWVjaG8gIlwiKiRETExcIj1cIiRNT0RFXCIiCi0tCWRvbmUpID4gIiRQ T0xfVVNFUl9ST09UL3RtcC9hcHAtZGxsLW92ZXJyaWRlLnJlZyIKLS0JUE9MX1dpbmUgcmVnZWRp dCAiJFBPTF9VU0VSX1JPT1QvdG1wL2FwcC1kbGwtb3ZlcnJpZGUucmVnIgotLQlybSAiJFBPTF9V U0VSX1JPT1QvdG1wL2FwcC1kbGwtb3ZlcnJpZGUucmVnIgotKyAgICBmb3IgRExMIGluICIkQCI7 IGRvCi0rICAgICAgIyBXaG8ga25vd3Mgd2hhdCB0aGlzIGhhY2sgaXMgZm9yPwotKyAgICAgIGlm IFsgIiRETEwiID0gImNvbWN0bDMyIiBdOyB0aGVuCi0rICAgICAgICBybSAtcmYgIiRXSU5FUFJF RklYL3dpbnN4cy9tYW5pZmVzdHMveDg2X21pY3Jvc29mdC53aW5kb3dzLmNvbW1vbi1jb250cm9s c182NTk1YjY0MTQ0Y2NmMWRmXzYuMC4yNjAwLjI5ODJfbm9uZV9kZWFkYmVlZi5tYW5pZmVzdCIK LSsgICAgICBmaQotKyAgICAgIGVjaG8gIlwiKiRETExcIj1cIiRNT0RFXCIiCi0rICAgIGRvbmUK LSsgICkgPiIkUE9MX1VTRVJfUk9PVC90bXAvYXBwLWRsbC1vdmVycmlkZS5yZWciCi0rICBQT0xf V2luZSByZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvYXBwLWRsbC1vdmVycmlkZS5yZWciCi0r ICBybSAiJFBPTF9VU0VSX1JPT1QvdG1wL2FwcC1kbGwtb3ZlcnJpZGUucmVnIgotIH0KLS1QT0xf V2luZV9EZWxPdmVycmlkZURMTF9BcHAoKQotLXsKLS0JIyBEZWxldGUgYXBwLXNwZWNpZmljIERM TCBvdmVycmlkZXMKLS0JQVBQPSIkMSIKLS0Jc2hpZnQKLStQT0xfV2luZV9EZWxPdmVycmlkZURM TF9BcHAoKSB7Ci0rICAjIERlbGV0ZSBhcHAtc3BlY2lmaWMgRExMIG92ZXJyaWRlcwotKyAgQVBQ PSIkMSIKLSsgIHNoaWZ0Ci0gCi0tCShjYXQgPDwgRU9GCi0rICAoCi0rICAgIGNhdCA8PEVPRgot IFJFR0VESVQ0Ci0gCi0gW0hLRVlfQ1VSUkVOVF9VU0VSXFxTb2Z0d2FyZVxcV2luZVxcQXBwRGVm YXVsdHNcXCRBUFBcXERsbE92ZXJyaWRlc10KLSBFT0YKLS0JZm9yIERMTCBpbiAiJEAiCi0tCWRv Ci0tCQllY2hvICJcIiRETExcIj0tIgotLQkJZWNobyAiXCIqJERMTFwiPS0iCi0tCWRvbmUpID4g IiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtYXBwLWRsbC1vdmVycmlkZS5yZWciCi0tCVBPTF9XaW5l IHJlZ2VkaXQgIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtYXBwLWRsbC1vdmVycmlkZS5yZWciCi0t CXJtICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLWFwcC1kbGwtb3ZlcnJpZGUucmVnIgotKyAgICBm b3IgRExMIGluICIkQCI7IGRvCi0rICAgICAgZWNobyAiXCIkRExMXCI9LSIKLSsgICAgICBlY2hv ICJcIiokRExMXCI9LSIKLSsgICAgZG9uZQotKyAgKSA+IiRQT0xfVVNFUl9ST09UL3RtcC9kZWwt YXBwLWRsbC1vdmVycmlkZS5yZWciCi0rICBQT0xfV2luZSByZWdlZGl0ICIkUE9MX1VTRVJfUk9P VC90bXAvZGVsLWFwcC1kbGwtb3ZlcnJpZGUucmVnIgotKyAgcm0gIiRQT0xfVVNFUl9ST09UL3Rt cC9kZWwtYXBwLWRsbC1vdmVycmlkZS5yZWciCi0gfQotLVBPTF9XaW5lX1JlZGlyZWN0RExMKCkK LS17Ci0tICAgICMgUmVkaXJlY3QgRExMcyB3aW5lLXN0YWdpbmcgZmVhdHVyZQotLSAgICAjIGh0 dHBzOi8vZ2l0aHViLmNvbS93aW5lLWNvbXBob2xpby93aW5lLXN0YWdpbmcvd2lraS9ETEwtUmVk aXJlY3RzCi0tICAgIGxvY2FsIFNPVVJDRT0iJDEiCi0tICAgIGxvY2FsIFRBUkdFVD0iJDIiCi0t ICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RsbFJlZGlyZWN0cycgIiRTT1VS Q0UiICIkVEFSR0VUIgotK1BPTF9XaW5lX1JlZGlyZWN0RExMKCkgewotKyAgIyBSZWRpcmVjdCBE TExzIHdpbmUtc3RhZ2luZyBmZWF0dXJlCi0rICAjIGh0dHBzOi8vZ2l0aHViLmNvbS93aW5lLWNv bXBob2xpby93aW5lLXN0YWdpbmcvd2lraS9ETEwtUmVkaXJlY3RzCi0rICBsb2NhbCBTT1VSQ0U9 IiQxIgotKyAgbG9jYWwgVEFSR0VUPSIkMiIKLSsgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2lu ZVBhaXIgJ0RsbFJlZGlyZWN0cycgIiRTT1VSQ0UiICIkVEFSR0VUIgotIH0KLS1QT0xfV2luZV9E ZWxSZWRpcmVjdERMTCgpCi0tewotLSAgICBsb2NhbCBTT1VSQ0U9IiQxIgotLSAgICBQT0xfV2lu ZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEbGxSZWRpcmVjdHMnICIkU09VUkNFIiAnZGVmYXVs dCcKLStQT0xfV2luZV9EZWxSZWRpcmVjdERMTCgpIHsKLSsgIGxvY2FsIFNPVVJDRT0iJDEiCi0r ICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEbGxSZWRpcmVjdHMnICIkU09VUkNF IiAnZGVmYXVsdCcKLSB9Ci0tUE9MX1dpbmVfUmVkaXJlY3RETExfQXBwKCkKLS17Ci0tICAgICMg QXBwLXNwZWNpZmljIERMTCByZWRpcmVjdAotLSAgICBsb2NhbCBBUFA9IiQxIgotLSAgICBsb2Nh bCBTT1VSQ0U9IiQyIgotLSAgICBsb2NhbCBUQVJHRVQ9IiQzIgotLSAgICBQT0xfV2luZV9VcGRh dGVSZWdpc3RyeVdpbmVQYWlyICJBcHBEZWZhdWx0c1xcJEFQUFxcRGxsUmVkaXJlY3RzIiAiJFNP VVJDRSIgIiRUQVJHRVQiCi0rUE9MX1dpbmVfUmVkaXJlY3RETExfQXBwKCkgewotKyAgIyBBcHAt c3BlY2lmaWMgRExMIHJlZGlyZWN0Ci0rICBsb2NhbCBBUFA9IiQxIgotKyAgbG9jYWwgU09VUkNF PSIkMiIKLSsgIGxvY2FsIFRBUkdFVD0iJDMiCi0rICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdp bmVQYWlyICJBcHBEZWZhdWx0c1xcJEFQUFxcRGxsUmVkaXJlY3RzIiAiJFNPVVJDRSIgIiRUQVJH RVQiCi0gfQotLVBPTF9XaW5lX0RlbFJlZGlyZWN0RExMX0FwcCgpCi0tewotLSAgICAjIEFwcC1z cGVjaWZpYyBETEwgcmVkaXJlY3QKLS0gICAgbG9jYWwgQVBQPSIkMSIKLS0gICAgbG9jYWwgU09V UkNFPSIkMiIKLS0gICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAiQXBwRGVmYXVs dHNcXCRBUFBcXERsbFJlZGlyZWN0cyIgIiRTT1VSQ0UiICdkZWZhdWx0JwotK1BPTF9XaW5lX0Rl bFJlZGlyZWN0RExMX0FwcCgpIHsKLSsgICMgQXBwLXNwZWNpZmljIERMTCByZWRpcmVjdAotKyAg bG9jYWwgQVBQPSIkMSIKLSsgIGxvY2FsIFNPVVJDRT0iJDIiCi0rICBQT0xfV2luZV9VcGRhdGVS ZWdpc3RyeVdpbmVQYWlyICJBcHBEZWZhdWx0c1xcJEFQUFxcRGxsUmVkaXJlY3RzIiAiJFNPVVJD RSIgJ2RlZmF1bHQnCi0gfQotLVBPTF9XaW5lX1dhaXRCZWZvcmUgKCkKLS17Ci0tCSMgTG9jayBi YXNoIGNvbW1hbmRzIHVudGlsIHdpbmUgaXMgZXhpdGVkCi0tCSMgVXNhZ2UgOiBQT0xfV2luZV9X YWl0QmVmb3JlIFtQcm9ncmFtIHRpdGxlXSAoLS1hbGxvdy1raWxsKQotLQlTT0ZUTkFNRT0iJDEi Ci0tCWlmIFsgIiQyIiA9ICItLWFsbG93LWtpbGwiIF0KLS0JdGhlbgotLQkJYWxsb3dLaWxsPSJ0 cnVlIgotLQllbHNlCi0tCQlhbGxvd0tpbGw9ImZhbHNlIgotLQlmaQotLQotLQlbICIkMSIgPSAi IiBdICYmIG1lc3NhZ2U9IiQoZXZhbF9nZXR0ZXh0ICJQbGVhc2Ugd2FpdC4uLiIpIiB8fCBtZXNz YWdlPSIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgJFNPRlROQU1FIGlzIGluc3Rh bGxlZC4uLicpIgotLQotLQlpZiBbICIkYWxsb3dLaWxsIiA9ICJ0cnVlIiBdCi0tCXRoZW4KLS0J CVBPTF9TZXR1cFdpbmRvd193YWl0X2J1dHRvbiAiJG1lc3NhZ2UiICIkVElUTEUiICIkKGV2YWxf Z2V0dGV4dCAnSW5zdGFsbCBpcyBkb25lJykiICJ3aW5lc2VydmVyIC1rIiAiJChldmFsX2dldHRl eHQgJ0JlIGNhcmVmdWwhIFRoaXMgd2lsbCBraWxsIGluc3RhbGwgcHJvY2Vzcy4gSWYgaXQgaXMg bm90IGZpbmlzaGVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJlaW5zdGFsbCAkU09GVE5BTUUnKSIKLS0J ZWxzZQotLQkJUE9MX1NldHVwV2luZG93X3dhaXQgIiRtZXNzYWdlIiAiJFRJVExFIgotLQlmaQot K1BPTF9XaW5lX1dhaXRCZWZvcmUoKSB7Ci0rICAjIExvY2sgYmFzaCBjb21tYW5kcyB1bnRpbCB3 aW5lIGlzIGV4aXRlZAotKyAgIyBVc2FnZSA6IFBPTF9XaW5lX1dhaXRCZWZvcmUgW1Byb2dyYW0g dGl0bGVdICgtLWFsbG93LWtpbGwpCi0rICBTT0ZUTkFNRT0iJDEiCi0rICBpZiBbICIkMiIgPSAi LS1hbGxvdy1raWxsIiBdOyB0aGVuCi0rICAgIGFsbG93S2lsbD0idHJ1ZSIKLSsgIGVsc2UKLSsg ICAgYWxsb3dLaWxsPSJmYWxzZSIKLSsgIGZpCi0rCi0rICBbICIkMSIgPSAiIiBdICYmIG1lc3Nh Z2U9IiQoZXZhbF9nZXR0ZXh0ICJQbGVhc2Ugd2FpdC4uLiIpIiB8fCBtZXNzYWdlPSIkKGV2YWxf Z2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgJFNPRlROQU1FIGlzIGluc3RhbGxlZC4uLicpIgot KwotKyAgaWYgWyAiJGFsbG93S2lsbCIgPSAidHJ1ZSIgXTsgdGhlbgotKyAgICBQT0xfU2V0dXBX aW5kb3dfd2FpdF9idXR0b24gIiRtZXNzYWdlIiAiJFRJVExFIiAiJChldmFsX2dldHRleHQgJ0lu c3RhbGwgaXMgZG9uZScpIiAid2luZXNlcnZlciAtayIgIiQoZXZhbF9nZXR0ZXh0ICdCZSBjYXJl ZnVsISBUaGlzIHdpbGwga2lsbCBpbnN0YWxsIHByb2Nlc3MuIElmIGl0IGlzIG5vdCBmaW5pc2hl ZCwgeW91IHdpbGwgaGF2ZSB0byByZWluc3RhbGwgJFNPRlROQU1FJykiCi0rICBlbHNlCi0rICAg IFBPTF9TZXR1cFdpbmRvd193YWl0ICIkbWVzc2FnZSIgIiRUSVRMRSIKLSsgIGZpCi0gCi0gfQot LVBPTF9XaW5lX1dhaXRFeGl0ICgpCi0tewotLQkjIExvY2sgYmFzaCBjb21tYW5kcyB1bnRpbCB3 aW5lIGlzIGV4aXRlZAotLQkjIFVzYWdlIDogUE9MX1dpbmVfV2FpdEV4aXQgKC0tZm9yY2UtaW5w dXQpIFtQcm9ncmFtIHRpdGxlXSAoLS1hbGxvdy1raWxsKQotLQlpZiBbICIkMSIgPSAiLS1mb3Jj ZS1pbnB1dCIgXQotLQl0aGVuCi0tCQlmb3JjZUlucHV0PSJ0cnVlIgotLQkJc2hpZnQKLS0JZWxz ZQotLQkJZm9yY2VJbnB1dD0iZmFsc2UiCi0tCWZpCi0tCi0tCVNPRlROQU1FPSIkMSIKLS0JaWYg WyAiJDIiID0gIi0tYWxsb3cta2lsbCIgXQotLQl0aGVuCi0tCQlhbGxvd0tpbGw9InRydWUiCi0t CWVsc2UKLS0JCWFsbG93S2lsbD0iZmFsc2UiCi0tCWZpCi0tCi0tCVsgIiQxIiA9ICIiIF0gJiYg bWVzc2FnZT0iJChldmFsX2dldHRleHQgIlBsZWFzZSB3YWl0Li4uIikiIHx8IG1lc3NhZ2U9IiQo ZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSAkU09GVE5BTUUgaXMgaW5zdGFsbGVkLi4u JykiCi0tCWlmIFsgIiRhbGxvd0tpbGwiID0gInRydWUiIF0KLS0JdGhlbgotLQkJUE9MX1NldHVw V2luZG93X3dhaXRfYnV0dG9uICIkbWVzc2FnZSIgIiRUSVRMRSIgIiQoZXZhbF9nZXR0ZXh0ICdJ bnN0YWxsIGlzIGRvbmUnKSIgIndpbmVzZXJ2ZXIgLWsiICIkKGV2YWxfZ2V0dGV4dCAnQmUgY2Fy ZWZ1bCEgVGhpcyB3aWxsIGtpbGwgaW5zdGFsbCBwcm9jZXNzLiBJZiBpdCBpcyBub3QgZmluaXNo ZWQsIHlvdSB3aWxsIGhhdmUgdG8gcmVpbnN0YWxsICRTT0ZUTkFNRScpIgotLQllbHNlCi0tCQlQ T0xfU2V0dXBXaW5kb3dfd2FpdCAiJG1lc3NhZ2UiICIkVElUTEUiCi0tCWZpCi0tCXdpbmVzZXJ2 ZXIgLXcgfHwgUE9MX1NldHVwV2luZG93X21lc3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdQcmVzcyBu ZXh0IG9ubHkgd2hlbiB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MgaXMgZmluaXNoZWQnKSIgIiRU SVRMRSIKLS0JWyAiJGZvcmNlSW5wdXQiID0gInRydWUiIF0gJiYgUE9MX1NldHVwV2luZG93X21l c3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdQcmVzcyBuZXh0IG9ubHkgd2hlbiB0aGUgaW5zdGFsbGF0 aW9uIHByb2Nlc3MgaXMgZmluaXNoZWQnKSIgIiRUSVRMRSIKLStQT0xfV2luZV9XYWl0RXhpdCgp IHsKLSsgICMgTG9jayBiYXNoIGNvbW1hbmRzIHVudGlsIHdpbmUgaXMgZXhpdGVkCi0rICAjIFVz YWdlIDogUE9MX1dpbmVfV2FpdEV4aXQgKC0tZm9yY2UtaW5wdXQpIFtQcm9ncmFtIHRpdGxlXSAo LS1hbGxvdy1raWxsKQotKyAgaWYgWyAiJDEiID0gIi0tZm9yY2UtaW5wdXQiIF07IHRoZW4KLSsg ICAgZm9yY2VJbnB1dD0idHJ1ZSIKLSsgICAgc2hpZnQKLSsgIGVsc2UKLSsgICAgZm9yY2VJbnB1 dD0iZmFsc2UiCi0rICBmaQotKwotKyAgU09GVE5BTUU9IiQxIgotKyAgaWYgWyAiJDIiID0gIi0t YWxsb3cta2lsbCIgXTsgdGhlbgotKyAgICBhbGxvd0tpbGw9InRydWUiCi0rICBlbHNlCi0rICAg IGFsbG93S2lsbD0iZmFsc2UiCi0rICBmaQotKwotKyAgWyAiJDEiID0gIiIgXSAmJiBtZXNzYWdl PSIkKGV2YWxfZ2V0dGV4dCAiUGxlYXNlIHdhaXQuLi4iKSIgfHwgbWVzc2FnZT0iJChldmFsX2dl dHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlICRTT0ZUTkFNRSBpcyBpbnN0YWxsZWQuLi4nKSIKLSsg IGlmIFsgIiRhbGxvd0tpbGwiID0gInRydWUiIF07IHRoZW4KLSsgICAgUE9MX1NldHVwV2luZG93 X3dhaXRfYnV0dG9uICIkbWVzc2FnZSIgIiRUSVRMRSIgIiQoZXZhbF9nZXR0ZXh0ICdJbnN0YWxs IGlzIGRvbmUnKSIgIndpbmVzZXJ2ZXIgLWsiICIkKGV2YWxfZ2V0dGV4dCAnQmUgY2FyZWZ1bCEg VGhpcyB3aWxsIGtpbGwgaW5zdGFsbCBwcm9jZXNzLiBJZiBpdCBpcyBub3QgZmluaXNoZWQsIHlv dSB3aWxsIGhhdmUgdG8gcmVpbnN0YWxsICRTT0ZUTkFNRScpIgotKyAgZWxzZQotKyAgICBQT0xf U2V0dXBXaW5kb3dfd2FpdCAiJG1lc3NhZ2UiICIkVElUTEUiCi0rICBmaQotKyAgd2luZXNlcnZl ciAtdyB8fCBQT0xfU2V0dXBXaW5kb3dfbWVzc2FnZSAiJChldmFsX2dldHRleHQgJ1ByZXNzIG5l eHQgb25seSB3aGVuIHRoZSBpbnN0YWxsYXRpb24gcHJvY2VzcyBpcyBmaW5pc2hlZCcpIiAiJFRJ VExFIgotKyAgWyAiJGZvcmNlSW5wdXQiID0gInRydWUiIF0gJiYgUE9MX1NldHVwV2luZG93X21l c3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdQcmVzcyBuZXh0IG9ubHkgd2hlbiB0aGUgaW5zdGFsbGF0 aW9uIHByb2Nlc3MgaXMgZmluaXNoZWQnKSIgIiRUSVRMRSIKLSB9Ci0gCi0tCi0tCi0tUE9MX1dp bmVfcmVib290ICgpCi0tewotLQkjIFNpbXVsYXRlIHdpbmRvd3MgcmVib290Ci0tCVBPTF9TZXR1 cFdpbmRvd193YWl0X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hp bGUgJEFQUExJQ0FUSU9OX1RJVExFIGlzIHNpbXVsYXRpbmcgYSByZWJvb3QnKSIgIiRUSVRMRSIK LS0JUE9MX1dpbmUgd2luZWJvb3QKLStQT0xfV2luZV9yZWJvb3QoKSB7Ci0rICAjIFNpbXVsYXRl IHdpbmRvd3MgcmVib290Ci0rICBQT0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0X3NpZ25hbCAiJChl dmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlICRBUFBMSUNBVElPTl9USVRMRSBpcyBzaW11 bGF0aW5nIGEgcmVib290JykiICIkVElUTEUiCi0rICBQT0xfV2luZSB3aW5lYm9vdAotIH0KLS1Q T0xfV2luZV9HZXRQcmVmaXhGcm9tUGF0aCAoKQotLXsKLS0JIyBSZXR1cm4gd2luZXByZWZpeCBm cm9tIHBhdGgKLS0JIyBVc2FnZSBQT0xfV2luZV9HZXRQcmVmaXhGcm9tUGF0aCBbRXhlIGZpbGVd Ci0tCWxvY2FsIHA9IiQxIgotLQlwPSIke3AjKi93aW5lcHJlZml4L30iCi0tCXA9IiR7cCUlLyp9 IgotLQllY2hvICIkcCIKLStQT0xfV2luZV9HZXRQcmVmaXhGcm9tUGF0aCgpIHsKLSsgICMgUmV0 dXJuIHdpbmVwcmVmaXggZnJvbSBwYXRoCi0rICAjIFVzYWdlIFBPTF9XaW5lX0dldFByZWZpeEZy b21QYXRoIFtFeGUgZmlsZV0KLSsgIGxvY2FsIHA9IiQxIgotKyAgcD0iJHtwIyovd2luZXByZWZp eC99IgotKyAgcD0iJHtwJSUvKn0iCi0rICBlY2hvICIkcCIKLSB9Ci0tUE9MX1dpbmVfR2V0QmFz ZU5hbWUoKQotLXsKLS0JcGVybCAtZSAnJHJlbGVhc2U9JEFSR1ZbMF07ICRyZWxlYXNlID1+IHMv XihbMC05XStcLlswLTldKyhcLlswLTldKyk/KC1yY1swLTldKyk/KS0/LiokLyQxLzsgcHJpbnQg IiRyZWxlYXNlXG4iJyAiJDEiCi0rUE9MX1dpbmVfR2V0QmFzZU5hbWUoKSB7Ci0rICBwZXJsIC1l ICckcmVsZWFzZT0kQVJHVlswXTsgJHJlbGVhc2UgPX4gcy9eKFswLTldK1wuWzAtOV0rKFwuWzAt OV0rKT8oLXJjWzAtOV0rKT8pLT8uKiQvJDEvOyBwcmludCAiJHJlbGVhc2VcbiInICIkMSIKLSB9 Ci0tUE9MX1dpbmVfR2V0UGF0Y2hOYW1lKCkKLS17Ci0tCXBlcmwgLWUgJyRyZWxlYXNlPSRBUkdW WzBdOyAkcmVsZWFzZSA9fiBzL15bMC05XStcLlswLTldKyhcLlswLTldKyk/KC1yY1swLTldKyk/ LT8vLzsgcHJpbnQgIiRyZWxlYXNlXG4iJyAiJDEiCi0rUE9MX1dpbmVfR2V0UGF0Y2hOYW1lKCkg ewotKyAgcGVybCAtZSAnJHJlbGVhc2U9JEFSR1ZbMF07ICRyZWxlYXNlID1+IHMvXlswLTldK1wu WzAtOV0rKFwuWzAtOV0rKT8oLXJjWzAtOV0rKT8tPy8vOyBwcmludCAiJHJlbGVhc2VcbiInICIk MSIKLSB9Ci0tUE9MX0xua19SZWFkKCkKLS17Ci0tCWRyaXZlX2NfZm91bmQ9ImZhbHNlIgotLQll eHBvcnQgQU5TV0VSX1BBVEg9IiIKLS0JZXhwb3J0IEFOU1dFUl9QUkVGSVg9IiIKLS0JZXhwb3J0 IEFOU1dFUl9OQU1FPSIkMSIKLS0JQU5TV0VSX05BTUU9IiR7QU5TV0VSX05BTUUvLmxuay99Igot LQl3aGlsZSByZWFkIGxpbmU7IGRvCi0tCQlpZiBbICIkZHJpdmVfY19mb3VuZCIgPSAidHJ1ZSIg XTsgdGhlbgotLQkJCWlmIFsgIiR7bGluZToxOjF9IiA9ICI6IiBdOyB0aGVuCi0tCQkJCWJyZWFr Ci0tCQkJZmkKLS0JCQlpZiBbICIkQU5TV0VSX1BBVEgiID0gIiIgXTsgdGhlbgotLQkJCQlBTlNX RVJfUEFUSD0iJGxpbmUiCi0tCQkJZWxzZQotLQkJCQlBTlNXRVJfUEFUSD0iJEFOU1dFUl9QQVRI LyRsaW5lIgotLQkJCWZpCi0tCQlmaQotLQkJaWYgWyAiJGxpbmUiID0gImRyaXZlX2MiIF07IHRo ZW4KLS0JCQlkcml2ZV9jX2ZvdW5kPSJ0cnVlIgotLQkJCUFOU1dFUl9QUkVGSVg9IiRsYXN0bGlu ZSIKLS0JCWZpCi0tCQlsYXN0bGluZT0iJGxpbmUiCi0tCWRvbmUgPCA8KHN0cmluZ3MgIiQxIikK LStQT0xfTG5rX1JlYWQoKSB7Ci0rICBkcml2ZV9jX2ZvdW5kPSJmYWxzZSIKLSsgIGV4cG9ydCBB TlNXRVJfUEFUSD0iIgotKyAgZXhwb3J0IEFOU1dFUl9QUkVGSVg9IiIKLSsgIGV4cG9ydCBBTlNX RVJfTkFNRT0iJDEiCi0rICBBTlNXRVJfTkFNRT0iJHtBTlNXRVJfTkFNRS8ubG5rL30iCi0rICB3 aGlsZSByZWFkIGxpbmU7IGRvCi0rICAgIGlmIFsgIiRkcml2ZV9jX2ZvdW5kIiA9ICJ0cnVlIiBd OyB0aGVuCi0rICAgICAgaWYgWyAiJHtsaW5lOjE6MX0iID0gIjoiIF07IHRoZW4KLSsgICAgICAg IGJyZWFrCi0rICAgICAgZmkKLSsgICAgICBpZiBbICIkQU5TV0VSX1BBVEgiID0gIiIgXTsgdGhl bgotKyAgICAgICAgQU5TV0VSX1BBVEg9IiRsaW5lIgotKyAgICAgIGVsc2UKLSsgICAgICAgIEFO U1dFUl9QQVRIPSIkQU5TV0VSX1BBVEgvJGxpbmUiCi0rICAgICAgZmkKLSsgICAgZmkKLSsgICAg aWYgWyAiJGxpbmUiID0gImRyaXZlX2MiIF07IHRoZW4KLSsgICAgICBkcml2ZV9jX2ZvdW5kPSJ0 cnVlIgotKyAgICAgIEFOU1dFUl9QUkVGSVg9IiRsYXN0bGluZSIKLSsgICAgZmkKLSsgICAgbGFz dGxpbmU9IiRsaW5lIgotKyAgZG9uZSA8IDwoc3RyaW5ncyAiJDEiKQotIH0KLSAKLS1QT0xfV2lu ZV9leGVuYW1lKCkKLS17Ci0tCUVYRU5BTUU9IiQxIgotLQl3aGlsZSBbICIkMSIgXTsgZG8KLS0J CVsgIiQoZ3JlcCAnLmV4ZScgPDw8ICIkMSIpIiBdICYmIGVjaG8gIiQxIiAmJiByZXR1cm4gMAot LQkJc2hpZnQKLS0JZG9uZQotLQllY2hvICIkRVhFTkFNRSIKLS0JcmV0dXJuIDAKLStQT0xfV2lu ZV9leGVuYW1lKCkgewotKyAgRVhFTkFNRT0iJDEiCi0rICB3aGlsZSBbICIkMSIgXTsgZG8KLSsg ICAgWyAiJChncmVwICcuZXhlJyA8PDwiJDEiKSIgXSAmJiBlY2hvICIkMSIgJiYgcmV0dXJuIDAK LSsgICAgc2hpZnQKLSsgIGRvbmUKLSsgIGVjaG8gIiRFWEVOQU1FIgotKyAgcmV0dXJuIDAKLSB9 Ci0tUE9MX1dpbmVfQ29tbW9uTmFtZSgpCi0tewotLQljbmFtZT0iJChQT0xfV2luZV9leGVuYW1l ICIkQCIpIgotLQlbICIkY25hbWUiID0gIndpbmVjZmciIF0gJiYgY25hbWU9IkNvbmZpZ3VyZSB3 aW5lIgotLQlbICIkY25hbWUiID0gInJlZ2VkaXQiIF0gJiYgY25hbWU9IlJlZ2lzdHJ5IEVkaXRv ciIKLS0JWyAiJGNuYW1lIiA9ICJ3aW5lYm9vdCIgXSAmJiBjbmFtZT0iVmlydHVhbCBkcml2ZSBj cmVhdGlvbiIKLS0JZWNobyAiJGNuYW1lIgotK1BPTF9XaW5lX0NvbW1vbk5hbWUoKSB7Ci0rICBj bmFtZT0iJChQT0xfV2luZV9leGVuYW1lICIkQCIpIgotKyAgWyAiJGNuYW1lIiA9ICJ3aW5lY2Zn IiBdICYmIGNuYW1lPSJDb25maWd1cmUgd2luZSIKLSsgIFsgIiRjbmFtZSIgPSAicmVnZWRpdCIg XSAmJiBjbmFtZT0iUmVnaXN0cnkgRWRpdG9yIgotKyAgWyAiJGNuYW1lIiA9ICJ3aW5lYm9vdCIg XSAmJiBjbmFtZT0iVmlydHVhbCBkcml2ZSBjcmVhdGlvbiIKLSsgIGVjaG8gIiRjbmFtZSIKLSB9 Ci0tUE9MX1dpbmVfRW5hYmxlT1NYTmF0aXZlRG9jaygpCi0tewotLQlpZiBbICIkUE9MX09TIiA9 ICJNYWMiIC1hICIkKFBPTF9Db25maWdfUmVhZCAiT1NYX05BVElWRV9NT0RFIikiID0gIlRSVUUi IF07IHRoZW4KLS0JCWV4cG9ydCBGT1JDRV9PU1hfRE9DSz0iVFJVRSIKLS0JZmkKLStQT0xfV2lu ZV9FbmFibGVPU1hOYXRpdmVEb2NrKCkgewotKyAgaWYgWyAiJFBPTF9PUyIgPSAiTWFjIiAtYSAi JChQT0xfQ29uZmlnX1JlYWQgIk9TWF9OQVRJVkVfTU9ERSIpIiA9ICJUUlVFIiBdOyB0aGVuCi0r ICAgIGV4cG9ydCBGT1JDRV9PU1hfRE9DSz0iVFJVRSIKLSsgIGZpCi0gfQotZGlmZiAtLWdpdCBh L3B5dGhvbi9saWIvVmFyaWFibGVzLnB5IGIvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkKLWluZGV4 IDhiZWQ3NjAxYi4uZGJlMmFiNzE5IDEwMDc1NQotLS0tIGEvcHl0aG9uL2xpYi9WYXJpYWJsZXMu cHkKLSsrKyBiL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5Ci1AQCAtMTcsNyArMTcsNyBAQAotIG9z LmVudmlyb25bIlBPTF9QT1JUIl0gPSAiMCIKLSBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdID0g b3MucGF0aC5yZWFscGF0aChvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSsiLy4uLy4uLy4uLyIp Ci0gb3MuZW52aXJvblsiU0lURSJdID0gImh0dHA6Ly9yZXBvc2l0b3J5LnBsYXlvbmxpbnV4LmNv bSIKLS1vcy5lbnZpcm9uWyJWRVJTSU9OIl0gPSAiNC40IgotK29zLmVudmlyb25bIlZFUlNJT04i XSA9ICI0LjQuMSIKLSBvcy5lbnZpcm9uWyJQT0xfSUQiXSA9IHN0cihyYW5kb20ucmFuZGludCgx LCAxMDAwMDAwMDApKQotIG9zLmVudmlyb25bIkdFQ0tPX1NJVEUiXSA9ICJodHRwOi8vd2luZS5w bGF5b25saW51eC5jb20vZ2Vja28iCi0gb3MuZW52aXJvblsiTU9OT19TSVRFIl0gPSAiaHR0cDov L3dpbmUucGxheW9ubGludXguY29tL21vbm8iCi1AQCAtMTE5LDExICsxMTksMTIgQEAKLSAKLSAg ICAgb3MuZW52aXJvblsiUEFUSCJdID0gb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3Vu aXgvd2luZS9iaW46IiArIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L2ltYWdl X21hZ2ljay9iaW46IiArIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L3Rvb2xz L2Jpbi86IiArIG9zLmVudmlyb25bIlBBVEgiXQotIAotLSAgICBvcy5lbnZpcm9uWyJXUklURV9M RCJdID0gIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L2ltYWdlX21hZ2ljay9s aWI6Iisgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvdG9vbHMvbGliL2xkOi9v cHQvWDExL2xpYi86IiArIG9zLmVudmlyb25bIkxEX0xJQlJBUllfUEFUSCJdCi0tICAgIG9zLmVu dmlyb25bIkRZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIIl0gPSAgb3MuZW52aXJvblsiUExBWU9O TElOVVgiXSsiLy4uL3dpbmUvbGliIgotKyAgICBvcy5lbnZpcm9uWyJXUklURV9MRCJdID0gb3Mu ZW52aXJvblsiTERfTElCUkFSWV9QQVRIIl0KLSsgICAgb3MuZW52aXJvblsiRFlMRF9GQUxMQkFD S19MSUJSQVJZX1BBVEgiXSA9ICBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC93 aW5lL2xpYiIKLSsgICAgb3MuZW52aXJvblsiV1JJVEVfRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BB VEgiXSA9ICBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC93aW5lL2xpYiIKLSAg ICAgb3MuZW52aXJvblsiRlJFRVRZUEVfUFJPUEVSVElFUyJdPSJ0cnVldHlwZTppbnRlcnByZXRl ci12ZXJzaW9uPTM1IgotIAotLSAgICBvcy5lbnZpcm9uWyJXUklURV9EWUxEIl0gPSBvcy5lbnZp cm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC90b29scy9saWIvZHlsZDoiICsgb3MuZW52aXJv blsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvaW1hZ2VfbWFnaWNrL2xpYjoiKyBvcy5lbnZpcm9u WyJEWUxEX0xJQlJBUllfUEFUSCJdCi0rICAgIG9zLmVudmlyb25bIldSSVRFX0RZTEQiXSA9IG9z LmVudmlyb25bIkRZTERfTElCUkFSWV9QQVRIIl0KLSBlbHNlOgotICAgICAjIERlYmlhbiBtYWlu dGFpbmVyIGRlY2lkZWQgZm9yIHNvbWUgcmVhc29uIG5vdCB0byBsZXQgd2luZXNlcnZlciBiaW5h cnkgaW50byBQQVRILi4uCi0gICAgIGZvciB3aW5lcGF0aCBpbiAoJy91c3IvbGliL2kzODYtbGlu dXgtZ251L3dpbmUvYmluJywgJy91c3IvbGliL2kzODYtbGludXgtZ251L3dpbmUtdW5zdGFibGUv YmluJywKLWRpZmYgLS1naXQgYS9weXRob24vbWFpbndpbmRvdy5weSBiL3B5dGhvbi9tYWlud2lu ZG93LnB5Ci1pbmRleCA4ZGYxZmYxNGIuLmM4ZmUxMTE2MCAxMDA3NTUKLS0tLSBhL3B5dGhvbi9t YWlud2luZG93LnB5Ci0rKysgYi9weXRob24vbWFpbndpbmRvdy5weQotQEAgLTI1NCw3ICsyNTQs NyBAQCBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCBpZCwgdGl0bGUpOgotICAgICAgICAgc2Vs Zi5maWxlbWVudSA9IHd4Lk1lbnUoKQotICAgICAgICAgIyMjIE9uIE1hY09TIFgsIHByZWZlcmVu Y2UgaXMgYWx3YXlzIG9uIHRoZSBtYWluIG1lbnUKLSAgICAgICAgIGlmIChvcy5lbnZpcm9uWyJQ T0xfT1MiXSA9PSAiTWFjIik6Ci0tICAgICAgICAgICAgcHJlZkl0ZW0gPSBzZWxmLmZpbGVtZW51 LkFwcGVuZCh3eC5JRF9QUkVGRVJFTkNFUywgdGV4dD0iJlByZWZlcmVuY2VzIikKLSsgICAgICAg ICAgICBwcmVmSXRlbSA9IHNlbGYuZmlsZW1lbnUuQXBwZW5kKHd4LklEX1BSRUZFUkVOQ0VTLCBf KCImUHJlZmVyZW5jZXMiKSkKLSAgICAgICAgICAgICBzZWxmLkJpbmQod3guRVZUX01FTlUsIHNl bGYuT3B0aW9ucywgcHJlZkl0ZW0pCi0gCi0gICAgICAgICAjIyMgRmlsZSBtZW51Ci1kaWZmIC0t Z2l0IGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zRmV0Y2hlci5weSBiL3B5dGhv bi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIucHkKLWluZGV4IDBmZGM3NmUzOC4u ZmQ3NTg3OThlIDEwMDY0NAotLS0tIGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25z RmV0Y2hlci5weQotKysrIGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zRmV0Y2hl ci5weQotQEAgLTEsNjcgKzEsODggQEAKLSBpbXBvcnQganNvbgotIGltcG9ydCBvcwotIGltcG9y dCB0aHJlYWRpbmcKLS1pbXBvcnQgdGltZQotK2ltcG9ydCB0cmFjZWJhY2sKLSBpbXBvcnQgdXJs bGliLnJlcXVlc3QKLS1pbXBvcnQgbmF0c29ydAotIAotIGZyb20gbGliIGltcG9ydCBWYXJpYWJs ZXMKLS1mcm9tIHdpbmVfdmVyc2lvbnMuV2luZVZlcnNpb25zVG9vbHMgaW1wb3J0IGZldGNoVXNl ck9TCi0tCi0tY2xhc3MgV2luZVZlcnNpb25GZXRjaGVyKHRocmVhZGluZy5UaHJlYWQpOgotLSAg ICBkZWYgX19pbml0X18oc2VsZiwgYXJjaD0ieDg2Iik6Ci0tICAgICAgICB0aHJlYWRpbmcuVGhy ZWFkLl9faW5pdF9fKHNlbGYpCi0tICAgICAgICBzZWxmLnRocmVhZF9tZXNzYWdlID0gIiNXQUlU IyIKLS0gICAgICAgIHNlbGYudmVyc2lvbnMgPSBbXQotLSAgICAgICAgc2VsZi5hcmNoaXRlY3R1 cmUgPSBhcmNoCi0tICAgICAgICBzZWxmLnN0YXJ0KCkKLS0KLS0gICAgZGVmIGRvd25sb2FkKHNl bGYsIGdhbWUpOgotLSAgICAgICAgc2VsZi5nZXREZXNjcmlwdGlvbiA9IGdhbWUKLS0KLS0gICAg ZGVmIHJ1bihzZWxmKToKLS0gICAgICAgIHNlbGYudGhyZWFkX3J1bm5pbmcgPSBUcnVlCi0tICAg ICAgICB3aGlsZShzZWxmLnRocmVhZF9ydW5uaW5nKToKLS0gICAgICAgICAgICBpZihzZWxmLnRo cmVhZF9tZXNzYWdlID09ICJnZXQiKToKLS0gICAgICAgICAgICAgICAgdHJ5IDoKLS0gICAgICAg ICAgICAgICAgICAgIHVybCA9IG9zLmVudmlyb25bIldJTkVfU0lURSJdCi0tICAgICAgICAgICAg ICAgICAgICB3Zm9sZGVyID0gIi0iLmpvaW4oW2ZldGNoVXNlck9TKCksIHNlbGYuYXJjaGl0ZWN0 dXJlXSkKLS0KLS0KLS0gICAgICAgICAgICAgICAgICAgIHJlcSA9IHVybGxpYi5yZXF1ZXN0LlJl cXVlc3QodXJsLCBOb25lLCB7J1VzZXItQWdlbnQnOiBWYXJpYWJsZXMudXNlckFnZW50fSkKLS0g ICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4ocmVxLCB0 aW1lb3V0ID0gNSkKLS0gICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKLS0gICAgICAg ICAgICAgICAgICAgIGF2YWlsYWJsZV9kaXN0cmlidXRpb25zID0ganNvbi5sb2FkcyhoYW5kbGUu cmVhZCgpKQotLSAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uc18gPSBbXQotLSAgICAg ICAgICAgICAgICAgICAgZm9yIGRpc3RyaWJ1dGlvbiBpbiBhdmFpbGFibGVfZGlzdHJpYnV0aW9u czoKLS0gICAgICAgICAgICAgICAgICAgICAgICBpZihkaXN0cmlidXRpb25bIm5hbWUiXSA9PSAi LSIuam9pbihbInVwc3RyZWFtIiwgZmV0Y2hVc2VyT1MoKSwgc2VsZi5hcmNoaXRlY3R1cmVdKSk6 Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwYWNrYWdlIGluIGRpc3RyaWJ1dGlv blsicGFja2FnZXMiXToKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24g PSBwYWNrYWdlWyJ2ZXJzaW9uIl0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh Y2thZ2VVcmwgPSBwYWNrYWdlWyJ1cmwiXQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2hhMXN1bSA9IHBhY2thZ2VbInNoYTFzdW0iXQotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYobm90IG9zLnBhdGguZXhpc3RzKFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAr Ii93aW5lLyIrd2ZvbGRlcisiLyIrdmVyc2lvbikpOgotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYudmVyc2lvbnNfLmFwcGVuZCh2ZXJzaW9uKQotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZWxzZToKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwcmludCgiRGlyZWN0b3J5OiAlcyBleGlzdHMiICUgKFZhcmlhYmxlcy5wbGF5b25s aW51eF9yZXArIi93aW5lLyIrd2ZvbGRlcisiLyIrdmVyc2lvbikpCi0tICAgICAgICAgICAgICAg ICAgICAgICAgZWxpZihkaXN0cmlidXRpb25bIm5hbWUiXSA9PSAiLSIuam9pbihbInN0YWdpbmci LCBmZXRjaFVzZXJPUygpLCBzZWxmLmFyY2hpdGVjdHVyZV0pKToKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgZm9yIHBhY2thZ2UgaW4gZGlzdHJpYnV0aW9uWyJwYWNrYWdlcyJdOgotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHBhY2thZ2VbInZlcnNpb24i XQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobm90IG9zLnBhdGguZXhpc3Rz KFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXArIi93aW5lLyIrd2ZvbGRlcisiLyIrdmVyc2lvbisi LXN0YWdpbmciKSk6Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52 ZXJzaW9uc18uYXBwZW5kKHZlcnNpb24rIi1zdGFnaW5nIikKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cHJpbnQoIkRpcmVjdG9yeTogJXMgZXhpc3RzIiAlIChWYXJpYWJsZXMucGxheW9ubGludXhfcmVw KyIvd2luZS8iK3dmb2xkZXIrIi8iK3ZlcnNpb24rIi1zdGFnaW5nIikpCi0tICAgICAgICAgICAg ICAgICAgICAgICAgZWxzZToKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoZGlz dHJpYnV0aW9uWyJuYW1lIl0gKyAiIGRvZXMgbm90IG1hdGNoIikKLS0KLS0gICAgICAgICAgICAg ICAgICAgIHNlbGYudmVyc2lvbnNfLnNvcnQoa2V5PW5hdHNvcnQubmF0c29ydF9rZXlnZW4oKSkK LS0gICAgICAgICAgICAgICAgICAgIHNlbGYudmVyc2lvbnNfLnJldmVyc2UoKQotLSAgICAgICAg ICAgICAgICAgICAgc2VsZi52ZXJzaW9ucyA9IHNlbGYudmVyc2lvbnNfWzpdCi0tICAgICAgICAg ICAgICAgICAgICBzZWxmLnRocmVhZF9tZXNzYWdlID0gIk9rIgotLSAgICAgICAgICAgICAgICBl eGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0tICAgICAgICAgICAgICAgICAgICBwcmludChlKQotLSAg ICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgxKQotLSAgICAgICAgICAgICAgICAgICAgc2Vs Zi50aHJlYWRfbWVzc2FnZSA9ICJFcnIiCi0tICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcnNp b25zID0gWyJXaW5lIHBhY2thZ2VzIHdlYnNpdGUgaXMgdW5hdmFpbGFibGUiXQotK2Zyb20gd2lu ZV92ZXJzaW9ucy5XaW5lVmVyc2lvbnNUb29scyBpbXBvcnQgZmV0Y2hVc2VyT1MsIGZldGNoX3N1 cHBvcnRlZF9hcmNocwotIAotKwotK2NsYXNzIFdpbmVWZXJzaW9uRmV0Y2hlcigpOgotKyAgICBk ZWYgX19pbml0X18oc2VsZiwgb3BlcmF0aW5nX3N5c3RlbSk6Ci0rICAgICAgICBzZWxmLm9wZXJh dGluZ19zeXN0ZW0gPSBvcGVyYXRpbmdfc3lzdGVtCi0rCi0rICAgIGRlZiBmZXRjaF9hbGxfYXZh aWxhYmxlX3dpbmVfdmVyc2lvbihzZWxmLCBjYWxsYmFjaywgZXJyb3IpOgotKyAgICAgICAgdGhy ZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fc3luY19mZXRjaF9hbGxfYXZhaWxh YmxlX3dpbmVfdmVyc2lvbnMsIGFyZ3M9KGNhbGxiYWNrLCBlcnJvcikpCi0rICAgICAgICB0aHJl YWQuc3RhcnQoKQotKwotKyAgICBkZWYgX3N5bmNfZmV0Y2hfYWxsX2F2YWlsYWJsZV93aW5lX3Zl cnNpb25zKHNlbGYsIGNhbGxiYWNrLCBlcnJvcik6Ci0rICAgICAgICB3aW5lX3ZlcnNpb25fdXJs ID0gImh0dHBzOi8vcGhvZW5pY2lzLnBsYXlvbmxpbnV4LmNvbS9pbmRleC5waHAvd2luZT9vcz0l cyIgJSBzZWxmLm9wZXJhdGluZ19zeXN0ZW0KLSsgICAgICAgIHByaW50KCJEb253bG9hZGluZyAl cyAiICUgd2luZV92ZXJzaW9uX3VybCkKLSsgICAgICAgIHRyeToKLSsgICAgICAgICAgICByZXF1 ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdCh3aW5lX3ZlcnNpb25fdXJsLCBOb25lLCB7J1Vz ZXItQWdlbnQnOiBWYXJpYWJsZXMudXNlckFnZW50fSkKLSsgICAgICAgICAgICBoYW5kbGUgPSB1 cmxsaWIucmVxdWVzdC51cmxvcGVuKHJlcXVlc3QsIHRpbWVvdXQ9NSkKLSsgICAgICAgICAgICBj YWxsYmFjayhzZWxmLl9jb252ZXJ0X3Bob2VuaWNpc193aW5lX3ZlcnNpb25zX3RvX3Y0KGpzb24u bG9hZChoYW5kbGUpKSkKLSsgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSsgICAgICAg ICAgICBlcnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YygpKQotKwotKyAgICBkZWYgX3N5bmNfZmV0 Y2hfYWxsX2luc3RhbGxlZF93aW5lX3ZlcnNpb24oc2VsZik6Ci0rICAgICAgICBhcmNoaXRlY3R1 cmVzID0ge30KLSsgICAgICAgIGZvciBhcmNoaXRlY3R1cmUgaW4gZmV0Y2hfc3VwcG9ydGVkX2Fy Y2hzKCk6Ci0rICAgICAgICAgICAgd2luZV9mb2xkZXIgPSBmZXRjaFVzZXJPUygpICsgIi0iICsg YXJjaGl0ZWN0dXJlCi0rCi0rICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoVmFyaWFibGVz LnBsYXlvbmxpbnV4X3JlcCArICIvd2luZS8iICsgd2luZV9mb2xkZXIpOgotKyAgICAgICAgICAg ICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBbewotKyAgICAgICAgICAgICAgICAgICAgIm5hbWUi OiB2ZXJzaW9uLAotKyAgICAgICAgICAgICAgICB9IGZvciB2ZXJzaW9uIGluIG9zLmxpc3RkaXIo VmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICIvd2luZS8iICsgd2luZV9mb2xkZXIpIGlmCi0r ICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uICE9ICJpbnN0YWxsaW5nIl0KLSAgICAgICAgICAg ICBlbHNlOgotLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMikKLSsgICAgICAgICAgICAg ICAgYXZhaWxhYmxlX3ZlcnNpb25zID0gW10KLSsKLSsgICAgICAgICAgICBpZiBhcmNoaXRlY3R1 cmUgbm90IGluIGFyY2hpdGVjdHVyZXM6Ci0rICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXNb YXJjaGl0ZWN0dXJlXSA9IFtdCi0rCi0rICAgICAgICAgICAgYXJjaGl0ZWN0dXJlc1thcmNoaXRl Y3R1cmVdICs9IGF2YWlsYWJsZV92ZXJzaW9ucwotKyAgICAgICAgcmV0dXJuIGFyY2hpdGVjdHVy ZXMKLSsKLSsgICAgZGVmIGZldGNoX2FsbF9pbnN0YWxsZWRfd2luZV92ZXJzaW9uKHNlbGYsIGNh bGxiYWNrLCBlcnJvcik6Ci0rICAgICAgICB0cnk6Ci0rICAgICAgICAgICAgYXJjaGl0ZWN0dXJl cyA9IHNlbGYuX3N5bmNfZmV0Y2hfYWxsX2luc3RhbGxlZF93aW5lX3ZlcnNpb24oKQotKwotKyAg ICAgICAgICAgIGNhbGxiYWNrKGFyY2hpdGVjdHVyZXMpCi0rICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6Ci0rICAgICAgICAgICAgZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSsK LSsgICAgZGVmIF9jb252ZXJ0X3Bob2VuaWNpc193aW5lX3ZlcnNpb25zX3RvX3Y0KHNlbGYsIHdp bmVfZGlzdHJpYnV0aW9ucyk6Ci0rICAgICAgICAiIiIKLSsgICAgICAgIENvbnZlcnRzIHZlcnNp b25zIGZyb20gcGhvZW5pY2lzIGZvcm1hdCBpbnRvIGEgZm9ybWF0IHRoYXQgUE9ML1BPTSA0IGNh biBoYW5kbGUKLSsgICAgICAgICIiIgotKyAgICAgICAgYXJjaGl0ZWN0dXJlcyA9IHt9Ci0rICAg ICAgICBmb3Igd2luZV9kaXN0cmlidXRpb24gaW4gd2luZV9kaXN0cmlidXRpb25zOgotKyAgICAg ICAgICAgIG5hbWUgPSB3aW5lX2Rpc3RyaWJ1dGlvblsibmFtZSJdCi0rICAgICAgICAgICAgYXJj aGl0ZWN0dXJlID0gbmFtZS5zcGxpdCgiLSIpWzJdCi0rICAgICAgICAgICAgZGlzdHJpYnV0aW9u ID0gbmFtZS5zcGxpdCgiLSIpWzBdCi0rCi0rICAgICAgICAgICAgaWYgYXJjaGl0ZWN0dXJlIG5v dCBpbiBhcmNoaXRlY3R1cmVzOgotKyAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzW2FyY2hp dGVjdHVyZV0gPSBbXQotKwotKyAgICAgICAgICAgIGZvciBwYWNrYWdlIGluIHdpbmVfZGlzdHJp YnV0aW9uWyJwYWNrYWdlcyJdOgotKyAgICAgICAgICAgICAgICBpZiBkaXN0cmlidXRpb24gPT0g InVwc3RyZWFtIjoKLSsgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VfbmFtZSA9IHBhY2thZ2Vb InZlcnNpb24iXQotKyAgICAgICAgICAgICAgICBlbHNlOgotKyAgICAgICAgICAgICAgICAgICAg cGFja2FnZV9uYW1lID0gcGFja2FnZVsidmVyc2lvbiJdICsgIi0iICsgZGlzdHJpYnV0aW9uCi0r Ci0rICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXNbYXJjaGl0ZWN0dXJlXSArPSBbewotKyAg ICAgICAgICAgICAgICAgICAgIm5hbWUiOiBwYWNrYWdlX25hbWUsCi0rICAgICAgICAgICAgICAg ICAgICAiYXJjaGl0ZWN0dXJlIjogYXJjaGl0ZWN0dXJlLAotKyAgICAgICAgICAgICAgICAgICAg InNoYTFzdW0iOiBwYWNrYWdlWyJzaGExc3VtIl0sCi0rICAgICAgICAgICAgICAgICAgICAidXJs IjogcGFja2FnZVsidXJsIl0KLSsgICAgICAgICAgICAgICAgfV0KLSsKLSsKLSsgICAgICAgIHJl dHVybiBhcmNoaXRlY3R1cmVzCi0rCi0rICAgIGRlZiBjYWxjdWxhdGVfaW5zdGFsbGVkX2hhc2go c2VsZik6Ci0rICAgICAgICByZXR1cm4gaGFzaChqc29uLmR1bXBzKChzZWxmLl9zeW5jX2ZldGNo X2FsbF9pbnN0YWxsZWRfd2luZV92ZXJzaW9uKCkpKSkKLSsKLSsKLWRpZmYgLS1naXQgYS9weXRo b24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNOb3RlYm9vay5weSBiL3B5dGhvbi93aW5lX3Zl cnNpb25zL1dpbmVWZXJzaW9uc05vdGVib29rLnB5Ci1pbmRleCBlYzVmMTI1MzUuLmI0M2MyNWRj OSAxMDA2NDQKLS0tLSBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc05vdGVib29r LnB5Ci0rKysgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNOb3RlYm9vay5weQot QEAgLTIsODkgKzIsMTA2IEBACi0gCi0gZnJvbSBsaWIgaW1wb3J0IFZhcmlhYmxlcwotIAotLQot ICMjIEZJWE1FOiBSZWZhY3RvciB0aGlzIGNvZGUgbGF0ZXIKLStmcm9tIHdpbmVfdmVyc2lvbnMu V2luZVZlcnNpb25zVG9vbHMgaW1wb3J0IGZldGNoX3N1cHBvcnRlZF9hcmNocwotKwotKwotIGNs YXNzIFdpbmVWZXJzaW9uc05vdGVib29rKHd4Lk5vdGVib29rKToKLSAgICAgZGVmIF9faW5pdF9f KHNlbGYsIHBhcmVudCk6Ci0gICAgICAgICBzZWxmLm5vdGVib29rID0gd3guTm90ZWJvb2suX19p bml0X18oc2VsZiwgcGFyZW50LCAtMSkKLSAgICAgICAgIHNlbGYuaW1hZ2VzX29uZ2xldHMgPSB3 eC5JbWFnZUxpc3QoMTYsIDE2KQotICAgICAgICAgc2VsZi5pbWFnZXNfb25nbGV0cy5BZGQod3gu Qml0bWFwKFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAiL2V0Yy9vbmdsZXQvd2luZS5wbmci KSkKLSsKLSAgICAgICAgIHNlbGYuU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VzX29uZ2xldHMpCi0g Ci0gICAgICAgICBzZWxmLnNpemVycyA9IHt9Ci0tICAgICAgICBzZWxmLmltYWdlc2FwcHMgPSB7 fQotLSAgICAgICAgc2VsZi5pbWFnZXNhcHBzX2kgPSB7fQotLSAgICAgICAgc2VsZi5hdmFpbGFi bGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3IgPSB7fQotKyAgICAgICAgc2VsZi5pbWFnZV9saXN0 ID0gc2VsZi5fY3JlYXRlX2ltYWdlX2xpc3QoKQotKyAgICAgICAgc2VsZi5hdmFpbGFibGVfd2lu ZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yID0ge30KLSAgICAgICAgIHNlbGYud2FpdFBhbmVsID0g e30KLS0gICAgICAgIHNlbGYuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yID0ge30K LS0gICAgICAgIHNlbGYuYnV0dG9uX3JtID0ge30KLS0gICAgICAgIHNlbGYuYnV0dG9uX2luID0g e30KLSsgICAgICAgIHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvciA9 IHt9Ci0rICAgICAgICBzZWxmLmJ1dHRvbl91bmluc3RhbGwgPSB7fQotKyAgICAgICAgc2VsZi5i dXR0b25faW5zdGFsbCA9IHt9Ci0gICAgICAgICBzZWxmLmJveFNpemVycyA9IHt9Ci0gICAgICAg ICBzZWxmLnBhbmVscyA9IHt9Ci0tCi0tICAgIGRlZiBjYWxjdWxhdGVFdmVudERlbHRhKHNlbGYs IGFyY2gpOgotLSAgICAgICAgaWYgKGFyY2ggPT0gImFtZDY0Iik6Ci0tICAgICAgICAgICAgcmV0 dXJuIDEwMAotLSAgICAgICAgZWxzZToKLS0gICAgICAgICAgICByZXR1cm4gMAotLQotLSAgICBk ZWYgX2NyZWF0ZUluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsKHNlbGYsIGFyY2gpOgotLSAgICAg ICAgaW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWwgPSB3eC5QYW5lbChzZWxmLnBhbmVsc1thcmNo XSwgLTEpCi0rICAgICAgICBzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25fcm9vdHMgPSB7fQot KyAgICAgICAgc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9uX3Jvb3RzID0ge30KLSsgICAgICAg IHNlbGYubnVtYmVyX29mX2F2YWlsYWJsZV92ZXJzaW9ucyA9IHt9Ci0rICAgICAgICBzZWxmLm51 bWJlcl9vZl9pbnN0YWxsZWRfdmVyc2lvbnMgPSB7fQotKyAgICAgICAgc2VsZi5vbl9pbnN0YWxs X2hhbmRsZXIgPSBOb25lCi0rICAgICAgICBzZWxmLm9uX3JlbW92ZV9oYW5kbGVyID0gTm9uZQot KwotKyAgICBkZWYgX2NyZWF0ZV9pbWFnZV9saXN0KHNlbGYpOgotKyAgICAgICAgaW1hZ2VfbGlz dCA9IHd4LkltYWdlTGlzdCgyMiwgMjIpCi0rICAgICAgICBpbWFnZV9saXN0LkFkZCh3eC5CaXRt YXAoVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiArICIvZXRjL2luc3RhbGwvd2luZS1wYWNrYWdl cy5wbmciKSkKLSsgICAgICAgIGltYWdlX2xpc3QuQWRkKHd4LkJpdG1hcChWYXJpYWJsZXMucGxh eW9ubGludXhfZW52ICsgIi9ldGMvaW5zdGFsbC93aW5lLWluLXVzZS5wbmciKSkKLSsgICAgICAg IHJldHVybiBpbWFnZV9saXN0Ci0rCi0rICAgIGRlZiBfY2FsY3VsYXRlX2V2ZW50X251bWJlcihz ZWxmLCBldmVudF9pZCwgYXJjaCk6Ci0rICAgICAgICByZXR1cm4gZXZlbnRfaWQgKyBsaXN0KGZl dGNoX3N1cHBvcnRlZF9hcmNocygpKS5pbmRleChhcmNoKSAqIDEwMAotKwotKyAgICBkZWYgX2Ny ZWF0ZUluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsKHNlbGYsIGFyY2hpdGVjdHVyZSk6Ci0rICAg ICAgICBpbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbCA9IHd4LlBhbmVsKHNlbGYucGFuZWxzW2Fy Y2hpdGVjdHVyZV0sIC0xKQotICAgICAgICAgaW5zdGFsbGVkV2luZVZlcnNpb25zU2l6ZXIgPSB3 eC5Cb3hTaXplcih3eC5WRVJUSUNBTCkKLSAgICAgICAgIGluc3RhbGxlZFdpbmVWZXJzaW9uc1Bh bmVsLlNldFNpemVyKGluc3RhbGxlZFdpbmVWZXJzaW9uc1NpemVyKQotLSAgICAgICAgc2VsZi5i b3hTaXplcnNbYXJjaF0uQWRkKGluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsLCAzLCB3eC5FWFBB TkQpCi0rICAgICAgICBzZWxmLmJveFNpemVyc1thcmNoaXRlY3R1cmVdLkFkZChpbnN0YWxsZWRX aW5lVmVyc2lvbnNQYW5lbCwgMywgd3guRVhQQU5EKQotICAgICAgICAgaW5zdGFsbGVkV2luZVZl cnNpb25zU2l6ZXIuQWRkU3BhY2VyKDEwKQotICAgICAgICAgaW5zdGFsbGVkV2luZVZlcnNpb25z U2l6ZXIuQWRkKHd4LlN0YXRpY1RleHQoaW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWwsIC0xLCBf KCJJbnN0YWxsZWQgV2luZSB2ZXJzaW9uczogIikpLCAwKQotICAgICAgICAgaW5zdGFsbGVkV2lu ZVZlcnNpb25zU2l6ZXIuQWRkU3BhY2VyKDEwKQotLSAgICAgICAgc2VsZi5pbnN0YWxsZWRXaW5l VmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0gPSB3eC5UcmVlQ3RybChpbnN0YWxsZWRXaW5lVmVy c2lvbnNQYW5lbCwgMTA3ICsgc2VsZi5jYWxjdWxhdGVFdmVudERlbHRhKGFyY2gpLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHlsZT13eC5UUl9ISURFX1JPT1QgfCB3eC5UUl9GVUxMX1JPV19ISUdITElHSFQgfCBW YXJpYWJsZXMud2lkZ2V0X2JvcmRlcnMpCi0tICAgICAgICBzZWxmLmluc3RhbGxlZFdpbmVWZXJz aW9uc1RyZWVTZWxlY3RvclthcmNoXS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZXNhcHBzX2lbYXJj aF0pCi0tICAgICAgICAjc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJj aF0uU2V0U3BhY2luZygwKQotLSAgICAgICAgaW5zdGFsbGVkV2luZVZlcnNpb25zU2l6ZXIuQWRk KHNlbGYuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLCAxLCB3eC5FWFBB TkQpCi0rICAgICAgICBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3Jb YXJjaGl0ZWN0dXJlXSA9IHd4LlRyZWVDdHJsKGluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxjdWxhdGVfZXZlbnRfbnVtYmVyKDEwNywg YXJjaGl0ZWN0dXJlKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3guVFJfSElERV9S T09UIHwgd3guVFJfRlVMTF9ST1dfSElHSExJR0hUIHwgVmFyaWFibGVzLndpZGdldF9ib3JkZXJz KQotKyAgICAgICAgc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2Fy Y2hpdGVjdHVyZV0uU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VfbGlzdCkKLSsgICAgICAgIHNlbGYu QmluZCh3eC5FVlRfVFJFRV9TRUxfQ0hBTkdFRCwgbGFtYmRhIGV2dDogc2VsZi5fb25fc2VsZWN0 X2luc3RhbGxlZF93aW5lX3ZlcnNpb24oYXJjaGl0ZWN0dXJlKSwgaWQ9c2VsZi5fY2FsY3VsYXRl X2V2ZW50X251bWJlcigxMDcsIGFyY2hpdGVjdHVyZSkpCi0rCi0rICAgICAgICBpbnN0YWxsZWRX aW5lVmVyc2lvbnNTaXplci5BZGQoc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9uc190cmVlX3Nl bGVjdG9yW2FyY2hpdGVjdHVyZV0sIDEsIHd4LkVYUEFORCkKLSAgICAgICAgIGluc3RhbGxlZFdp bmVWZXJzaW9uc1NpemVyLkFkZFNwYWNlcigxMCkKLSAKLS0gICAgZGVmIF9jcmVhdGVBdmFpbGFi bGVXaW5lVmVyc2lvbnNQYW5lbChzZWxmLCBhcmNoKToKLS0gICAgICAgIGF2YWlsYWJsZVdpbmVW ZXJzaW9uc1BhbmVsID0gd3guUGFuZWwoc2VsZi5wYW5lbHNbYXJjaF0gLCAtMSkKLSsgICAgZGVm IF9jcmVhdGVBdmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbChzZWxmLCBhcmNoaXRlY3R1cmUpOgot KyAgICAgICAgYXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWwgPSB3eC5QYW5lbChzZWxmLnBhbmVs c1thcmNoaXRlY3R1cmVdLCAtMSkKLSAgICAgICAgIGF2YWlsYWJsZVdpbmVWZXJzaW9uc1NpemVy ID0gd3guQm94U2l6ZXIod3guVkVSVElDQUwpCi0gICAgICAgICBhdmFpbGFibGVXaW5lVmVyc2lv bnNQYW5lbC5TZXRTaXplcihhdmFpbGFibGVXaW5lVmVyc2lvbnNTaXplcikKLS0gICAgICAgIHNl bGYuYm94U2l6ZXJzW2FyY2hdLkFkZChhdmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbCwgMywgd3gu RVhQQU5EKQotKyAgICAgICAgc2VsZi5ib3hTaXplcnNbYXJjaGl0ZWN0dXJlXS5BZGQoYXZhaWxh YmxlV2luZVZlcnNpb25zUGFuZWwsIDMsIHd4LkVYUEFORCkKLSAgICAgICAgIGF2YWlsYWJsZVdp bmVWZXJzaW9uc1NpemVyLkFkZFNwYWNlcigxMCkKLSAgICAgICAgIGF2YWlsYWJsZVdpbmVWZXJz aW9uc1NpemVyLkFkZCh3eC5TdGF0aWNUZXh0KGF2YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsLCAt MSwgXygiQXZhaWxhYmxlIFdpbmUgdmVyc2lvbnM6ICIpLCAoNSwgMTApKSwgMCkKLSAgICAgICAg IGF2YWlsYWJsZVdpbmVWZXJzaW9uc1NpemVyLkFkZFNwYWNlcigxMCkKLS0gICAgICAgIHNlbGYu YXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdID0gd3guVHJlZUN0cmwoYXZh aWxhYmxlV2luZVZlcnNpb25zUGFuZWwsIDEwNiArIHNlbGYuY2FsY3VsYXRlRXZlbnREZWx0YShh cmNoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3R5bGU9d3guVFJfSElERV9ST09UIHwgd3guVFJfRlVMTF9ST1df SElHSExJR0hUIHwgVmFyaWFibGVzLndpZGdldF9ib3JkZXJzLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPSgz MjAsIDMwMCksIHBvcz0oMTAsIDM1KSkKLS0gICAgICAgIHNlbGYuYXZhaWxhYmxlV2luZVZlcnNp b25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldEltYWdlTGlzdChzZWxmLmltYWdlc2FwcHNbYXJjaF0p Ci0tICAgICAgICAjc2VsZi5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0u U2V0U3BhY2luZygwKQotLSAgICAgICAgYXZhaWxhYmxlV2luZVZlcnNpb25zU2l6ZXIuQWRkKHNl bGYuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLCAxLCB3eC5FWFBBTkQp Ci0rICAgICAgICBzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3JbYXJj aGl0ZWN0dXJlXSA9IHd4LlRyZWVDdHJsKGF2YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxjdWxhdGVfZXZlbnRfbnVtYmVyKDEwNiwgYXJj aGl0ZWN0dXJlKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3guVFJfSElERV9ST09U IHwgd3guVFJfRlVMTF9ST1dfSElHSExJR0hUIHwgVmFyaWFibGVzLndpZGdldF9ib3JkZXJzLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplPSgzMjAsIDMwMCksIHBvcz0oMTAsIDM1KSkKLSsg ICAgICAgIHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNoaXRl Y3R1cmVdLlNldEltYWdlTGlzdChzZWxmLmltYWdlX2xpc3QpCi0rICAgICAgICBzZWxmLkJpbmQo d3guRVZUX1RSRUVfU0VMX0NIQU5HRUQsIGxhbWJkYSBldnQ6IHNlbGYuX29uX3NlbGVjdF9hdmFp bGFibGVfd2luZV92ZXJzaW9uKGFyY2hpdGVjdHVyZSksIGlkPXNlbGYuX2NhbGN1bGF0ZV9ldmVu dF9udW1iZXIoMTA2LCBhcmNoaXRlY3R1cmUpKQotKwotKyAgICAgICAgYXZhaWxhYmxlV2luZVZl cnNpb25zU2l6ZXIuQWRkKHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3Rv clthcmNoaXRlY3R1cmVdLCAxLCB3eC5FWFBBTkQpCi0gICAgICAgICBhdmFpbGFibGVXaW5lVmVy c2lvbnNTaXplci5BZGRTcGFjZXIoMTApCi0gCi0tICAgIGRlZiBfY3JlYXRlQnV0dG9uUGFuZWwo c2VsZiwgYXJjaCk6Ci0tICAgICAgICBidXR0b25zUGFuZWwgPSB3eC5QYW5lbChzZWxmLnBhbmVs c1thcmNoXSAsIC0xKQotKyAgICBkZWYgX2NyZWF0ZUJ1dHRvblBhbmVsKHNlbGYsIGFyY2hpdGVj dHVyZSk6Ci0rICAgICAgICBidXR0b25zUGFuZWwgPSB3eC5QYW5lbChzZWxmLnBhbmVsc1thcmNo aXRlY3R1cmVdLCAtMSkKLSAgICAgICAgIGJ1dHRvbnNTaXplciA9IHd4LkJveFNpemVyKHd4LlZF UlRJQ0FMKQotICAgICAgICAgYnV0dG9uc1BhbmVsLlNldFNpemVyKGJ1dHRvbnNTaXplcikKLSAK LS0gICAgICAgIHNlbGYuYnV0dG9uX3JtW2FyY2hdID0gd3guQnV0dG9uKGJ1dHRvbnNQYW5lbCwg MTA4ICsgc2VsZi5jYWxjdWxhdGVFdmVudERlbHRhKGFyY2gpLCAiPCIpCi0tICAgICAgICBzZWxm LmJ1dHRvbl9pblthcmNoXSA9IHd4LkJ1dHRvbihidXR0b25zUGFuZWwsIDEwOSArIHNlbGYuY2Fs Y3VsYXRlRXZlbnREZWx0YShhcmNoKSwgIj4iKQotKyAgICAgICAgc2VsZi5idXR0b25fdW5pbnN0 YWxsW2FyY2hpdGVjdHVyZV0gPSB3eC5CdXR0b24oYnV0dG9uc1BhbmVsLCBzZWxmLl9jYWxjdWxh dGVfZXZlbnRfbnVtYmVyKDEwOCwgYXJjaGl0ZWN0dXJlKSwgIjwiKQotKyAgICAgICAgc2VsZi5i dXR0b25faW5zdGFsbFthcmNoaXRlY3R1cmVdID0gd3guQnV0dG9uKGJ1dHRvbnNQYW5lbCwgc2Vs Zi5fY2FsY3VsYXRlX2V2ZW50X251bWJlcigxMDksIGFyY2hpdGVjdHVyZSksICI+IikKLSAKLSAg ICAgICAgIGJ1dHRvbnNTaXplci5BZGRTdHJldGNoU3BhY2VyKCkKLS0gICAgICAgIGJ1dHRvbnNT aXplci5BZGQoc2VsZi5idXR0b25fcm1bYXJjaF0sIDAsIHd4LkNFTlRFUikKLSsgICAgICAgIGJ1 dHRvbnNTaXplci5BZGQoc2VsZi5idXR0b25fdW5pbnN0YWxsW2FyY2hpdGVjdHVyZV0sIDAsIHd4 LkNFTlRFUikKLSAgICAgICAgIGJ1dHRvbnNTaXplci5BZGRTcGFjZXIoMTApCi0tICAgICAgICBi dXR0b25zU2l6ZXIuQWRkKHNlbGYuYnV0dG9uX2luW2FyY2hdLCAwLCB3eC5DRU5URVIpCi0rICAg ICAgICBidXR0b25zU2l6ZXIuQWRkKHNlbGYuYnV0dG9uX2luc3RhbGxbYXJjaGl0ZWN0dXJlXSwg MCwgd3guQ0VOVEVSKQotICAgICAgICAgYnV0dG9uc1NpemVyLkFkZFN0cmV0Y2hTcGFjZXIoKQot IAotLSAgICAgICAgc2VsZi5idXR0b25fcm1bYXJjaF0uRW5hYmxlKEZhbHNlKQotLSAgICAgICAg c2VsZi5idXR0b25faW5bYXJjaF0uRW5hYmxlKEZhbHNlKQotKyAgICAgICAgc2VsZi5idXR0b25f dW5pbnN0YWxsW2FyY2hpdGVjdHVyZV0uRW5hYmxlKEZhbHNlKQotKyAgICAgICAgc2VsZi5idXR0 b25faW5zdGFsbFthcmNoaXRlY3R1cmVdLkVuYWJsZShGYWxzZSkKLSsKLSsgICAgICAgIHNlbGYu QmluZCh3eC5FVlRfQlVUVE9OLCBsYW1iZGEgZXZ0OiBzZWxmLl9vbl9kZWxldGUoYXJjaGl0ZWN0 dXJlKSwgaWQ9c2VsZi5fY2FsY3VsYXRlX2V2ZW50X251bWJlcigxMDgsIGFyY2hpdGVjdHVyZSkp Ci0rICAgICAgICBzZWxmLkJpbmQod3guRVZUX0JVVFRPTiwgbGFtYmRhIGV2dDogc2VsZi5fb25f aW5zdGFsbChhcmNoaXRlY3R1cmUpLCBpZD1zZWxmLl9jYWxjdWxhdGVfZXZlbnRfbnVtYmVyKDEw OSwgYXJjaGl0ZWN0dXJlKSkKLSAKLS0gICAgICAgIHNlbGYuYm94U2l6ZXJzW2FyY2hdLkFkZChi dXR0b25zUGFuZWwsIDEsIHd4LkVYUEFORCkKLSAKLS0gICAgZGVmIGxpc3RlX3ZlcnNpb25zKHNl bGYsIGFyY2g9Ing4NiIpOgotKyAgICAgICAgc2VsZi5ib3hTaXplcnNbYXJjaGl0ZWN0dXJlXS5B ZGQoYnV0dG9uc1BhbmVsLCAxLCB3eC5FWFBBTkQpCi0rCi0rICAgIGRlZiBhZGRfYXJjaGl0ZWN0 dXJlX3RhYihzZWxmLCBhcmNoPSJ4ODYiKToKLSAgICAgICAgIHNlbGYucGFuZWxzW2FyY2hdID0g d3guUGFuZWwoc2VsZiwgLTEpCi0gCi0gICAgICAgICBzZWxmLmJveFNpemVyc1thcmNoXSA9IHd4 LkJveFNpemVyKHd4LkhPUklaT05UQUwpCi0gICAgICAgICBzZWxmLnBhbmVsc1thcmNoXS5TZXRT aXplcihzZWxmLmJveFNpemVyc1thcmNoXSkKLS0gICAgICAgIHNlbGYuaW1hZ2VzYXBwc1thcmNo XSA9IHd4LkltYWdlTGlzdCgyMiwgMjIpCi0tICAgICAgICBzZWxmLmltYWdlc2FwcHNfaVthcmNo XSA9IHd4LkltYWdlTGlzdCgyMiwgMjIpCi0gCi0gICAgICAgICBzZWxmLmJveFNpemVyc1thcmNo XS5BZGRTcGFjZXIoMTApCi0gICAgICAgICBzZWxmLl9jcmVhdGVBdmFpbGFibGVXaW5lVmVyc2lv bnNQYW5lbChhcmNoKQotQEAgLTkzLDMgKzExMCwzOSBAQCBkZWYgbGlzdGVfdmVyc2lvbnMoc2Vs ZiwgYXJjaD0ieDg2Iik6Ci0gICAgICAgICBzZWxmLmJveFNpemVyc1thcmNoXS5BZGRTcGFjZXIo MTApCi0gCi0gICAgICAgICBzZWxmLkFkZFBhZ2Uoc2VsZi5wYW5lbHNbYXJjaF0sIF8oIldpbmUg dmVyc2lvbnMiKSArICIgKCIgKyBhcmNoICsgIikiLCBpbWFnZUlkPTApCi0rCi0rICAgIGRlZiBj bGVhbl92ZXJzaW9uX29mX2FyY2hpdGVjdHVyZShzZWxmLCBhcmNoKToKLSsgICAgICAgIHNlbGYu YXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNoXS5EZWxldGVBbGxJdGVt cygpCi0rICAgICAgICBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3Jb YXJjaF0uRGVsZXRlQWxsSXRlbXMoKQotKyAgICAgICAgc2VsZi5hdmFpbGFibGVfd2luZV92ZXJz aW9uX3Jvb3RzW2FyY2hdID0gc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9uc190cmVlX3NlbGVj dG9yW2FyY2hdLkFkZFJvb3QoIiIpCi0rICAgICAgICBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNp b25fcm9vdHNbYXJjaF0gPSBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0 b3JbYXJjaF0uQWRkUm9vdCgiIikKLSsgICAgICAgIHNlbGYubnVtYmVyX29mX2F2YWlsYWJsZV92 ZXJzaW9uc1thcmNoXSA9IDAKLSsgICAgICAgIHNlbGYubnVtYmVyX29mX2luc3RhbGxlZF92ZXJz aW9uc1thcmNoXSA9IDAKLSsKLSsgICAgZGVmIGFkZF9hdmFpbGFibGVfdmVyc2lvbihzZWxmLCBh cmNoLCB2ZXJzaW9uKToKLSsgICAgICAgIHNlbGYubnVtYmVyX29mX2F2YWlsYWJsZV92ZXJzaW9u c1thcmNoXSArPSAxCi0rICAgICAgICBzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25zX3RyZWVf c2VsZWN0b3JbYXJjaF0uQXBwZW5kSXRlbShzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25fcm9v dHNbYXJjaF0sIHZlcnNpb24sIDApCi0rCi0rICAgIGRlZiBhZGRfaW5zdGFsbGVkX3ZlcnNpb24o c2VsZiwgYXJjaCwgdmVyc2lvbik6Ci0rICAgICAgICBzZWxmLm51bWJlcl9vZl9pbnN0YWxsZWRf dmVyc2lvbnNbYXJjaF0gKz0gMQotKyAgICAgICAgc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9u c190cmVlX3NlbGVjdG9yW2FyY2hdLkFwcGVuZEl0ZW0oc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJz aW9uX3Jvb3RzW2FyY2hdLCB2ZXJzaW9uLCAwKQotKwotKyAgICBkZWYgX29uX3NlbGVjdF9pbnN0 YWxsZWRfd2luZV92ZXJzaW9uKHNlbGYsIGFyY2hpdGVjdHVyZSk6Ci0rICAgICAgICBzZWxmLmF2 YWlsYWJsZV93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaGl0ZWN0dXJlXS5VbnNlbGVj dEFsbCgpCi0rICAgICAgICBzZWxmLmJ1dHRvbl91bmluc3RhbGxbYXJjaGl0ZWN0dXJlXS5FbmFi bGUoVHJ1ZSkKLSsgICAgICAgIHNlbGYuYnV0dG9uX2luc3RhbGxbYXJjaGl0ZWN0dXJlXS5FbmFi bGUoRmFsc2UpCi0rCi0rICAgIGRlZiBfb25fc2VsZWN0X2F2YWlsYWJsZV93aW5lX3ZlcnNpb24o c2VsZiwgYXJjaGl0ZWN0dXJlKToKLSsgICAgICAgIHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lv bnNfdHJlZV9zZWxlY3RvclthcmNoaXRlY3R1cmVdLlVuc2VsZWN0QWxsKCkKLSsgICAgICAgIHNl bGYuYnV0dG9uX3VuaW5zdGFsbFthcmNoaXRlY3R1cmVdLkVuYWJsZShGYWxzZSkKLSsgICAgICAg IHNlbGYuYnV0dG9uX2luc3RhbGxbYXJjaGl0ZWN0dXJlXS5FbmFibGUoVHJ1ZSkKLSsKLSsgICAg ZGVmIF9vbl9pbnN0YWxsKHNlbGYsIGFyY2hpdGVjdHVyZSk6Ci0rICAgICAgICBzZWxlY3RlZF92 ZXJzaW9uID0gc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hp dGVjdHVyZV0uR2V0SXRlbVRleHQoc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9uc190cmVlX3Nl bGVjdG9yW2FyY2hpdGVjdHVyZV0uR2V0U2VsZWN0aW9uKCkpCi0rICAgICAgICBpZiBzZWxmLm9u X2luc3RhbGxfaGFuZGxlciBpcyBub3QgTm9uZToKLSsgICAgICAgICAgICBzZWxmLm9uX2luc3Rh bGxfaGFuZGxlcihhcmNoaXRlY3R1cmUsIHNlbGVjdGVkX3ZlcnNpb24pCi0rCi0rICAgIGRlZiBf b25fZGVsZXRlKHNlbGYsIGFyY2hpdGVjdHVyZSk6Ci0rICAgICAgICBzZWxlY3RlZF92ZXJzaW9u ID0gc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hpdGVjdHVy ZV0uR2V0SXRlbVRleHQoc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9y W2FyY2hpdGVjdHVyZV0uR2V0U2VsZWN0aW9uKCkpCi0rICAgICAgICBpZiBzZWxmLm9uX3JlbW92 ZV9oYW5kbGVyIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgIHNlbGYub25fcmVtb3ZlX2hhbmRs ZXIoYXJjaGl0ZWN0dXJlLCBzZWxlY3RlZF92ZXJzaW9uKQotZGlmZiAtLWdpdCBhL3B5dGhvbi93 aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xzLnB5IGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMv V2luZVZlcnNpb25zVG9vbHMucHkKLWluZGV4IDA2ZmI0MDFlNi4uNjlkNGNmMmIyIDEwMDY0NAot LS0tIGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zVG9vbHMucHkKLSsrKyBiL3B5 dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xzLnB5Ci1AQCAtMTAsMjIgKzEwLDEw IEBAIGRlZiBmZXRjaFVzZXJPUygpOgotICAgICBlbHNlOgotICAgICAgICAgcmV0dXJuICJmcmVl YnNkIgotIAotLWRlZiBHZXRXaW5lVmVyc2lvbihnYW1lKToKLS0gICAgY2ZpbGUgPSBWYXJpYWJs ZXMucGxheW9ubGludXhfcmVwICsgInNob3J0Y3V0cy8iICsgZ2FtZQotLSAgICBmaWNoaWVyID0g b3BlbihjZmlsZSwgInIiKS5yZWFkbGluZXMoKQotLSAgICBpID0gMAotLSAgICBsaW5lID0gIiIK LS0gICAgd2hpbGUgKGkgPCBsZW4oZmljaGllcikpOgotLSAgICAgICAgZmljaGllcltpXSA9IGZp Y2hpZXJbaV0ucmVwbGFjZSgiXG4iLCAiIikKLS0gICAgICAgIGlmICgiUEFUSD0iIGluIGZpY2hp ZXJbaV0gYW5kICJXaW5lVmVyc2lvbnMiIGluIGZpY2hpZXJbaV0pOgotLSAgICAgICAgICAgIGxp bmUgPSBmaWNoaWVyW2ldLnJlcGxhY2UoIi8vIiwgIi8iKQotLSAgICAgICAgaSArPSAxCi0rZGVm IGFyY2hpdGVjdHVyZV9pc19zdXBwb3J0ZWQoYXJjaGl0ZWN0dXJlX25hbWUpOgotKyAgICByZXR1 cm4gVHJ1ZSAjIyBGSVhNRQotIAotLSAgICBpZiBsaW5lID09ICIiOgotLSAgICAgICAgdmVyc2lv biA9ICJTeXN0ZW0iCi0tICAgIGVsc2U6Ci0tICAgICAgICB2ZXJzaW9uID0gbGluZS5yZXBsYWNl KCJQQVRIPSIsICIiKS5yZXBsYWNlKCJcIiIsICIiKS5yZXBsYWNlKFZhcmlhYmxlcy5wbGF5b25s aW51eF9yZXAsICIiKS5yZXBsYWNlKCIvLyIsICIvIikKLS0gICAgICAgIHZlcnNpb24gPSB2ZXJz aW9uLnNwbGl0KCIvIikKLS0gICAgICAgIHZlcnNpb24gPSB2ZXJzaW9uWzFdCi0tCi0tICAgIHJl dHVybiB2ZXJzaW9uCi0rZGVmIGZldGNoX3N1cHBvcnRlZF9hcmNocygpOgotKyAgICBmb3IgYXZh aWxhYmxlX2FyY2ggaW4gWyJ4ODYiLCAieDg2b242NCIsICJhbWQ2NCJdOgotKyAgICAgICAgaWYg YXJjaGl0ZWN0dXJlX2lzX3N1cHBvcnRlZChhdmFpbGFibGVfYXJjaCk6Ci0rICAgICAgICAgICAg eWllbGQgYXZhaWxhYmxlX2FyY2gKLWRpZmYgLS1naXQgYS9weXRob24vd2luZV92ZXJzaW9ucy9X aW5lVmVyc2lvbnNXaW5kb3cucHkgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNX aW5kb3cucHkKLWluZGV4IGUzYjhiNDE2MC4uYjc2ZGIwYjI1IDEwMDc1NQotLS0tIGEvcHl0aG9u L3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zV2luZG93LnB5Ci0rKysgYi9weXRob24vd2luZV92 ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkKLUBAIC0zMCwxODMgKzMwLDk1IEBACi0gaW1w b3J0IGxpYi5wbGF5b25saW51eCBhcyBwbGF5b25saW51eAotIGZyb20gd2luZV92ZXJzaW9ucy5X aW5lVmVyc2lvbnNGZXRjaGVyIGltcG9ydCBXaW5lVmVyc2lvbkZldGNoZXIKLSBmcm9tIHdpbmVf dmVyc2lvbnMuV2luZVZlcnNpb25zTm90ZWJvb2sgaW1wb3J0IFdpbmVWZXJzaW9uc05vdGVib29r Ci0tZnJvbSB3aW5lX3ZlcnNpb25zLldpbmVWZXJzaW9uc1Rvb2xzIGltcG9ydCBmZXRjaFVzZXJP UwotK2Zyb20gd2luZV92ZXJzaW9ucy5XaW5lVmVyc2lvbnNUb29scyBpbXBvcnQgZmV0Y2hVc2Vy T1MsIGZldGNoX3N1cHBvcnRlZF9hcmNocwotIAotIGxpYi5sbmcuTGFuZygpCi0gCi0gCi0tZGVm IFNldFdpbmVWZXJzaW9uKGdhbWUsIHZlcnNpb24pOgotLSAgICBjZmlsZSA9IFZhcmlhYmxlcy5w bGF5b25saW51eF9yZXAgKyAic2hvcnRjdXRzLyIgKyBnYW1lCi0tICAgIGZpY2hpZXIgPSBvcGVu KGNmaWxlLCAiciIpLnJlYWRsaW5lcygpCi0tICAgIGkgPSAwCi0tICAgIGxpbmUgPSBbXQotLSAg ICB3aGlsZSAoaSA8IGxlbihmaWNoaWVyKSk6ICAjIE9uIHJldGlyZSBsJ2V2ZW50dWVsCi0tICAg ICAgICBmaWNoaWVyW2ldID0gZmljaGllcltpXS5yZXBsYWNlKCJcbiIsICIiKQotLSAgICAgICAg aWYgKCJQQVRIPSIgbm90IGluIGZpY2hpZXJbaV0gb3IgIldpbmVWZXJzaW9ucyIgbm90IGluIGZp Y2hpZXJbaV0pOgotLSAgICAgICAgICAgIGxpbmUuYXBwZW5kKGZpY2hpZXJbaV0pCi0tICAgICAg ICBpICs9IDEKLS0KLS0gICAgZmljaGllcl93cml0ZSA9IG9wZW4oY2ZpbGUsICJ3IikKLStjbGFz cyBXaW5lVmVyc2lvbnNXaW5kb3cod3guRnJhbWUpOgotKyAgICBkZWYgb25fYXZhaWxhYmxlX3dp bmVfdmVyc2lvbnNfZG93bmxvYWRlZChzZWxmLCB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlKToK LSsgICAgICAgIGZvciBhcmNoaXRlY3R1cmUgaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZToK LSsgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBbXQotKyAgICAgICAgICAgIGZvciB2 ZXJzaW9uIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmVbYXJjaGl0ZWN0dXJlXToKLSsgICAg ICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zLmFwcGVuZCh2ZXJzaW9uWyJuYW1lIl0pCi0g Ci0tICAgIGlmICh2ZXJzaW9uICE9ICJTeXN0ZW0iKTogICMgT24gaW5zZXJlCi0tICAgICAgICBp ZiBvcy5lbnZpcm9uWyJQT0xfT1MiXSA9PSAiTWFjIjoKLS0gICAgICAgICAgICBsaW5lLmluc2Vy dCgxLCAiUEFUSD1cIiIgKyBWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgIldpbmVWZXJzaW9u cy8iICsgdmVyc2lvbiArICIvYmluLzokUEFUSFwiIikKLS0gICAgICAgICAgICBsaW5lLmluc2Vy dCgxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICJMRF9MSUJSQVJZX1BBVEg9XCIiICsgVmFy aWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICJXaW5lVmVyc2lvbnMvIiArIHZlcnNpb24gKyAiL2xp Yi86JExEX0xJQlJBUllfUEFUSFwiIikKLS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgbGlu ZS5pbnNlcnQoMSwgIlBBVEg9XCIiICsgVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICJXaW5l VmVyc2lvbnMvIiArIHZlcnNpb24gKyAiL3Vzci9iaW4vOiRQQVRIXCIiKQotLSAgICAgICAgICAg IGxpbmUuaW5zZXJ0KDEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIkxEX0xJQlJBUllfUEFU SD1cIiIgKyBWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgIldpbmVWZXJzaW9ucy8iICsgdmVy c2lvbiArICIvdXNyL2xpYi86JExEX0xJQlJBUllfUEFUSFwiIikKLSsgICAgICAgICAgICBhdmFp bGFibGVfdmVyc2lvbnMuc29ydChrZXk9bmF0c29ydC5uYXRzb3J0X2tleWdlbigpKQotKyAgICAg ICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucy5yZXZlcnNlKCkKLSsgICAgICAgICAgICBhdmFpbGFi bGVfdmVyc2lvbnMgPSBhdmFpbGFibGVfdmVyc2lvbnNbOl0KLSAKLS0gICAgaSA9IDAKLS0gICAg d2hpbGUgKGkgPCBsZW4obGluZSkpOiAgIyBPbiBlY3JpdAotLSAgICAgICAgZmljaGllcl93cml0 ZS53cml0ZShsaW5lW2ldICsgIlxuIikKLS0gICAgICAgIGkgKz0gMQotKyAgICAgICAgICAgIGZv ciB2ZXJzaW9uIGluIGF2YWlsYWJsZV92ZXJzaW9uczoKLSsgICAgICAgICAgICAgICAgd3guQ2Fs bEFmdGVyKHNlbGYubm90ZWJvb2suYWRkX2F2YWlsYWJsZV92ZXJzaW9uLCBhcmNoaXRlY3R1cmUs IHZlcnNpb24pCi0gCi0rICAgIGRlZiBvbl9pbnN0YWxsZWRfd2luZV92ZXJzaW9uc19kb3dubG9h ZGVkKHNlbGYsIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmUpOgotKyAgICAgICAgZm9yIGFyY2hp dGVjdHVyZSBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlOgotKyAgICAgICAgICAgIGluc3Rh bGxlZF92ZXJzaW9ucyA9IFtdCi0rICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gdmVyc2lvbnNf cGVyX2FyY2hpdGVjdHVyZVthcmNoaXRlY3R1cmVdOgotKyAgICAgICAgICAgICAgICBpbnN0YWxs ZWRfdmVyc2lvbnMuYXBwZW5kKHZlcnNpb25bIm5hbWUiXSkKLSAKLSsgICAgICAgICAgICBpbnN0 YWxsZWRfdmVyc2lvbnMuc29ydChrZXk9bmF0c29ydC5uYXRzb3J0X2tleWdlbigpKQotKyAgICAg ICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5yZXZlcnNlKCkKLSsgICAgICAgICAgICBpbnN0YWxs ZWRfdmVyc2lvbnMgPSBpbnN0YWxsZWRfdmVyc2lvbnNbOl0KLSAKLSsgICAgICAgICAgICBmb3Ig dmVyc2lvbiBpbiBpbnN0YWxsZWRfdmVyc2lvbnM6Ci0rICAgICAgICAgICAgICAgIHd4LkNhbGxB ZnRlcihzZWxmLm5vdGVib29rLmFkZF9pbnN0YWxsZWRfdmVyc2lvbiwgYXJjaGl0ZWN0dXJlLCB2 ZXJzaW9uKQotIAotKyAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIGVycm9yKToKLSsgICAgICAg IHByaW50KGVycm9yKQotIAotLWNsYXNzIFdpbmVWZXJzaW9uc1dpbmRvdyh3eC5GcmFtZSk6Ci0g ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGlkLCB0aXRsZSk6Ci0tICAgICAgICBzZWxm LmRvd25sb2FkMzIgPSBXaW5lVmVyc2lvbkZldGNoZXIoIng4NiIpCi0tICAgICAgICBpZiAob3Mu ZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09ICJUcnVlIik6Ci0tICAgICAgICAgICAgc2Vs Zi5kb3dubG9hZDY0ID0gV2luZVZlcnNpb25GZXRjaGVyKCJhbWQ2NCIpCi0tCi0tICAgICAgICB3 eC5GcmFtZS5fX2luaXRfXyhzZWxmLCBwYXJlbnQsIC0xLCB0aXRsZSwgc2l6ZT0oNzUwLCA0MDAg KyBWYXJpYWJsZXMud2luZG93c19hZGRfc2l6ZSksCi0rICAgICAgICB3eC5GcmFtZS5fX2luaXRf XyhzZWxmLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgLTEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9KDc1MCwgNDAwICsgVmFyaWFibGVzLndpbmRv d3NfYWRkX3NpemUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3guQ0xPU0Vf Qk9YIHwgd3guQ0FQVElPTiB8IHd4Lk1JTklNSVpFX0JPWCkKLSAgICAgICAgIHNlbGYudGltZXIg PSB3eC5UaW1lcihzZWxmLCAxKQotICAgICAgICAgc2VsZi5TZXRJY29uKHd4Lkljb24oVmFyaWFi bGVzLnBsYXlvbmxpbnV4X2VudiArICIvZXRjL3BsYXlvbmxpbnV4LnBuZyIsIHd4LkJJVE1BUF9U WVBFX0FOWSkpCi0tICAgICAgICAjIHNlbGYucGFuZWwgPSB3eC5QYW5lbChzZWxmLCAtMSkKLS0K LS0gICAgICAgIHNlbGYub25nbGV0cyA9IFdpbmVWZXJzaW9uc05vdGVib29rKHNlbGYpCi0tICAg ICAgICAjIHNlbGYuc2l6ZXIgPSB3eC5Cb3hTaXplcih3eC5WRVJUSUNBTCkKLS0gICAgICAgICMg c2VsZi5zaXplci5BZGQoc2VsZi5vbmdsZXRzLCAxNSwgd3guRVhQQU5EfHd4LkFMTCwgMikKLSsg ICAgICAgIHNlbGYud2luZV92ZXJzaW9uX2ZldGNoZXIgPSBXaW5lVmVyc2lvbkZldGNoZXIoZmV0 Y2hVc2VyT1MoKSkKLSAKLS0gICAgICAgIHNlbGYuZ2V0VmVyc2lvbnMoIng4NiIpCi0tICAgICAg ICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09ICJUcnVlIik6Ci0tICAgICAg ICAgICAgc2VsZi5nZXRWZXJzaW9ucygiYW1kNjQiKQotLSAgICAgICAgIyBzZWxmLnBhbmVsLlNl dFNpemVyKHNlbGYuc2l6ZXIpCi0tICAgICAgICAjIHNlbGYucGFuZWwuU2V0QXV0b0xheW91dChU cnVlKQotLQotLSAgICAgICAgc2VsZi5vbmdsZXRzLmxpc3RlX3ZlcnNpb25zKCkKLS0gICAgICAg IGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRydWUiKToKLS0gICAgICAg ICAgICBzZWxmLm9uZ2xldHMubGlzdGVfdmVyc2lvbnMoImFtZDY0IikKLS0gICAgICAgIHNlbGYu b2xkcmVsb2FkMzIgPSAiIgotKyAgICAgICAgc2VsZi5ub3RlYm9vayA9IFdpbmVWZXJzaW9uc05v dGVib29rKHNlbGYpCi0rICAgICAgICBzZWxmLnNpemVyID0gd3guQm94U2l6ZXIod3guVkVSVElD QUwpCi0rICAgICAgICBzZWxmLnNpemVyLkFkZChzZWxmLm5vdGVib29rLCAxNSwgd3guRVhQQU5E IHwgd3guQUxMLCAyKQotIAotLSAgICAgICAgaWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElC TEUiXSA9PSAiVHJ1ZSIpOgotLSAgICAgICAgICAgIHNlbGYub2xkcmVsb2FkNjQgPSAiIgotKyAg ICAgICAgZm9yIGF2YWlsYWJsZV9hcmNoIGluIGZldGNoX3N1cHBvcnRlZF9hcmNocygpOgotKyAg ICAgICAgICAgIHNlbGYubm90ZWJvb2suYWRkX2FyY2hpdGVjdHVyZV90YWIoYXZhaWxhYmxlX2Fy Y2gpCi0gCi0tICAgICAgICBzZWxmLm9sZHZlcnNpb25zMzIgPSBbXQotKyAgICAgICAgc2VsZi5s YXN0X2NoZWNrc3VtID0gTm9uZQotKyAgICAgICAgc2VsZi5ub3RlYm9vay5vbl9pbnN0YWxsX2hh bmRsZXIgPSBzZWxmLmluc3RhbGxfd2luZV92ZXJzaW9uCi0rICAgICAgICBzZWxmLm5vdGVib29r Lm9uX3JlbW92ZV9oYW5kbGVyID0gc2VsZi5yZW1vdmVfd2luZV92ZXJzaW9uCi0gCi0tICAgICAg ICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09ICJUcnVlIik6Ci0tICAgICAg ICAgICAgc2VsZi5vbGR2ZXJzaW9uczY0ID0gW10KLSsgICAgICAgIHNlbGYuQmluZCh3eC5FVlRf VElNRVIsIHNlbGYuZGV0ZWN0X2NoYW5nZXMsIHNlbGYudGltZXIpCi0rICAgICAgICBzZWxmLnRp bWVyLlN0YXJ0KDEwMDApCi0gCi0tICAgICAgICAjIHNlbGYuYnV0dG9uID0gd3guQnV0dG9uKHNl bGYucGFuZWxzX2J1dHRvbnMsIHd4LklEX0NMT1NFLCBfKCJDbG9zZSIpLCBwb3M9KDUxMCwgNSks IHNpemU9d3guRGVmYXVsdFNpemUpCi0rICAgIGRlZiByZWZyZXNoKHNlbGYpOgotKyAgICAgICAg Zm9yIGF2YWlsYWJsZV9hcmNoIGluIGZldGNoX3N1cHBvcnRlZF9hcmNocygpOgotKyAgICAgICAg ICAgIHNlbGYubm90ZWJvb2suY2xlYW5fdmVyc2lvbl9vZl9hcmNoaXRlY3R1cmUoYXZhaWxhYmxl X2FyY2gpCi0gCi0tICAgICAgICBzZWxmLkJpbmQod3guRVZUX0JVVFRPTiwgc2VsZi5jbG9zZWFw cCwgaWQ9d3guSURfQ0xPU0UpCi0tICAgICAgICBzZWxmLkJpbmQod3guRVZUX0NMT1NFLCBzZWxm LmNsb3NlYXBwKQotLSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9UUkVFX1NFTF9DSEFOR0VELCBz ZWxmLnVuc2VsZWN0MzIsIGlkPTEwNikKLS0gICAgICAgIHNlbGYuQmluZCh3eC5FVlRfVFJFRV9T RUxfQ0hBTkdFRCwgc2VsZi51bnNlbGVjdDMyLCBpZD0xMDcpCi0tICAgICAgICBzZWxmLkJpbmQo d3guRVZUX0JVVFRPTiwgc2VsZi5kZWxldGUzMiwgaWQ9MTA4KQotLSAgICAgICAgc2VsZi5CaW5k KHd4LkVWVF9CVVRUT04sIHNlbGYuaW5zdGFsbDMyLCBpZD0xMDkpCi0rICAgICAgICBzZWxmLndp bmVfdmVyc2lvbl9mZXRjaGVyLmZldGNoX2FsbF9hdmFpbGFibGVfd2luZV92ZXJzaW9uKHNlbGYu b25fYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfZG93bmxvYWRlZCwgc2VsZi5oYW5kbGVfZXJyb3Ip Ci0rICAgICAgICBzZWxmLndpbmVfdmVyc2lvbl9mZXRjaGVyLmZldGNoX2FsbF9pbnN0YWxsZWRf d2luZV92ZXJzaW9uKHNlbGYub25faW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNfZG93bmxvYWRlZCwg c2VsZi5oYW5kbGVfZXJyb3IpCi0gCi0tICAgICAgICBzZWxmLkJpbmQod3guRVZUX1RSRUVfU0VM X0NIQU5HRUQsIHNlbGYudW5zZWxlY3Q2NCwgaWQ9MjA2KQotLSAgICAgICAgc2VsZi5CaW5kKHd4 LkVWVF9UUkVFX1NFTF9DSEFOR0VELCBzZWxmLnVuc2VsZWN0NjQsIGlkPTIwNykKLS0gICAgICAg IHNlbGYuQmluZCh3eC5FVlRfQlVUVE9OLCBzZWxmLmRlbGV0ZTY0LCBpZD0yMDgpCi0tICAgICAg ICBzZWxmLkJpbmQod3guRVZUX0JVVFRPTiwgc2VsZi5pbnN0YWxsNjQsIGlkPTIwOSkKLSsgICAg ZGVmIGRldGVjdF9jaGFuZ2VzKHNlbGYsIGV2ZW50KToKLSsgICAgICAgIGNoZWNrc3VtID0gc2Vs Zi53aW5lX3ZlcnNpb25fZmV0Y2hlci5jYWxjdWxhdGVfaW5zdGFsbGVkX2hhc2goKQotIAotLSAg ICAgICAgc2VsZi5CaW5kKHd4LkVWVF9USU1FUiwgc2VsZi5BdXRvUmVsb2FkLCBzZWxmLnRpbWVy KQotLSAgICAgICAgc2VsZi50aW1lci5TdGFydCgyMDApCi0rICAgICAgICBpZiBzZWxmLmxhc3Rf Y2hlY2tzdW0gIT0gY2hlY2tzdW06Ci0rICAgICAgICAgICAgc2VsZi5sYXN0X2NoZWNrc3VtID0g Y2hlY2tzdW0KLSsgICAgICAgICAgICBzZWxmLnJlZnJlc2goKQotIAotLSAgICBkZWYgQXV0b1Jl bG9hZChzZWxmLCBldmVudCk6Ci0tICAgICAgICByZWxvYWQzMiA9IG9zLmxpc3RkaXIoVmFyaWFi bGVzLnBsYXlvbmxpbnV4X3JlcCArICIvd2luZS8iICsgZmV0Y2hVc2VyT1MoKSArICIteDg2IikK LS0gICAgICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRydWUiKToK LS0gICAgICAgICAgICByZWxvYWQ2NCA9IG9zLmxpc3RkaXIoVmFyaWFibGVzLnBsYXlvbmxpbnV4 X3JlcCArICIvd2luZS8iICsgZmV0Y2hVc2VyT1MoKSArICItYW1kNjQiKQotLSAgICAgICAgaWYg KHNlbGYuZG93bmxvYWQzMi50aHJlYWRfbWVzc2FnZSA9PSAiT2siIG9yIHNlbGYuZG93bmxvYWQz Mi50aHJlYWRfbWVzc2FnZSA9PSAiRXJyIik6Ci0tICAgICAgICAgICAgc2VsZi5Xcml0ZVZlcnNp b24oKQotLSAgICAgICAgICAgIHNlbGYuZG93bmxvYWQzMi50aHJlYWRfbWVzc2FnZSA9ICJXYWl0 IgotIAotLSAgICAgICAgaWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAiVHJ1 ZSIpOgotLSAgICAgICAgICAgIGlmIChzZWxmLmRvd25sb2FkNjQudGhyZWFkX21lc3NhZ2UgPT0g Ik9rIiBvciBzZWxmLmRvd25sb2FkNjQudGhyZWFkX21lc3NhZ2UgPT0gIkVyciIpOgotLSAgICAg ICAgICAgICAgICBzZWxmLldyaXRlVmVyc2lvbigiYW1kNjQiKQotLSAgICAgICAgICAgICAgICBz ZWxmLmRvd25sb2FkNjQudGhyZWFkX21lc3NhZ2UgPSAiV2FpdCIKLS0KLS0gICAgICAgIGlmIChv cy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRydWUiKToKLS0gICAgICAgICAgICBp ZiAocmVsb2FkNjQgIT0gc2VsZi5vbGRyZWxvYWQ2NCk6Ci0tICAgICAgICAgICAgICAgIHNlbGYu Z2V0VmVyc2lvbnMoImFtZDY0IikKLS0gICAgICAgICAgICAgICAgc2VsZi5vbGRyZWxvYWQ2NCA9 IHJlbG9hZDY0Ci0tCi0tICAgICAgICBpZiAocmVsb2FkMzIgIT0gc2VsZi5vbGRyZWxvYWQzMik6 Ci0tICAgICAgICAgICAgc2VsZi5nZXRWZXJzaW9ucygpCi0tICAgICAgICAgICAgc2VsZi5vbGRy ZWxvYWQzMiA9IHJlbG9hZDMyCi0tCi0tICAgICAgICBpZiAoc2VsZi5kb3dubG9hZDMyLnZlcnNp b25zICE9IHNlbGYub2xkdmVyc2lvbnMzMik6Ci0tICAgICAgICAgICAgc2VsZi5vbGR2ZXJzaW9u czMyID0gc2VsZi5kb3dubG9hZDMyLnZlcnNpb25zWzpdCi0tCi0tICAgICAgICBpZiAob3MuZW52 aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09ICJUcnVlIik6Ci0tICAgICAgICAgICAgaWYgKHNl bGYuZG93bmxvYWQ2NC52ZXJzaW9ucyAhPSBzZWxmLm9sZHZlcnNpb25zNjQpOgotLSAgICAgICAg ICAgICAgICBzZWxmLm9sZHZlcnNpb25zNjQgPSBzZWxmLmRvd25sb2FkNjQudmVyc2lvbnNbOl0K LS0KLS0gICAgZGVmIHNpemVkaXJlY3Rvcnkoc2VsZiwgcGF0aCk6Ci0tICAgICAgICBzaXplID0g MAotLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocGF0aCk6Ci0tICAg ICAgICAgICAgZm9yIGZpYyBpbiBmaWxlczoKLS0gICAgICAgICAgICAgICAgc2l6ZSArPSBvcy5w YXRoLmdldHNpemUob3MucGF0aC5qb2luKHJvb3QsIGZpYykpCi0tICAgICAgICByZXR1cm4gc2l6 ZQotLQotLSAgICBkZWYgdW5zZWxlY3QzMihzZWxmLCBldmVudCk6Ci0tICAgICAgICBpZiAoZXZl bnQuR2V0SWQoKSA9PSAxMDYpOgotLSAgICAgICAgICAgIHNlbGYub25nbGV0cy5pbnN0YWxsZWRX aW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbIng4NiJdLlVuc2VsZWN0QWxsKCkKLS0gICAgICAgICAg ICBzZWxmLm9uZ2xldHMuYnV0dG9uX3JtWyJ4ODYiXS5FbmFibGUoRmFsc2UpCi0tICAgICAgICAg ICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9pblsieDg2Il0uRW5hYmxlKFRydWUpCi0tICAgICAgICBp ZiAoZXZlbnQuR2V0SWQoKSA9PSAxMDcpOgotLSAgICAgICAgICAgIHNlbGYub25nbGV0cy5hdmFp bGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbIng4NiJdLlVuc2VsZWN0QWxsKCkKLS0gICAg ICAgICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX3JtWyJ4ODYiXS5FbmFibGUoVHJ1ZSkKLS0gICAg ICAgICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX2luWyJ4ODYiXS5FbmFibGUoRmFsc2UpCi0tCi0t ICAgIGRlZiBkZWxldGUzMihzZWxmLCBldmVudCk6Ci0tICAgICAgICBzZWxmLmRlbGV0ZV9jb21t b24oZXZlbnQsICJ4ODYiKQotLQotLSAgICBkZWYgZGVsZXRlX2NvbW1vbihzZWxmLCBldmVudCwg YXJjaCk6Ci0tICAgICAgICB2ZXJzaW9uID0gc2VsZi5vbmdsZXRzLmluc3RhbGxlZFdpbmVWZXJz aW9uc1RyZWVTZWxlY3RvclthcmNoXS5HZXRJdGVtVGV4dCgKLS0gICAgICAgICAgICBzZWxmLm9u Z2xldHMuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkdldFNlbGVjdGlv bigpKQotLSAgICAgICAgdXNlZF92ZXJzaW9uID0gc2VsZi5jaGVja1ZlcnNpb25Vc2UoYXJjaCkg ICMgR2V0IHRoZSBzZXQgb2Ygd2luZSB2ZXJzaW9uIHVzZWQgYnkgd2luZXByZWZpeAotKyAgICBk ZWYgcmVtb3ZlX3dpbmVfdmVyc2lvbihzZWxmLCBhcmNoaXRlY3R1cmUsIHZlcnNpb24pOgotKyAg ICAgICAgdXNlZF92ZXJzaW9uID0gc2VsZi5jaGVja1ZlcnNpb25Vc2UoYXJjaGl0ZWN0dXJlKSAg IyBHZXQgdGhlIHNldCBvZiB3aW5lIHZlcnNpb24gdXNlZCBieSB3aW5lcHJlZml4Ci0gICAgICAg ICBtZXNzYWdlID0gXygnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB3aW5lIHswfT8n KS5mb3JtYXQodmVyc2lvbikKLSAgICAgICAgIGlmIHZlcnNpb24gaW4gdXNlZF92ZXJzaW9uOgot ICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIiArIF8oJ1RoaXMgdmVyc2lvbiBpcyBDVVJSRU5U TFkgSU4gVVNFJykKLSAgICAgICAgIGlmICh3eC5ZRVMgPT0gd3guTWVzc2FnZUJveChtZXNzYWdl LCBvcy5lbnZpcm9uWyJBUFBMSUNBVElPTl9USVRMRSJdLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0eWxlPXd4LllFU19OTyB8IHd4LklDT05fUVVFU1RJT04pKToKLS0g ICAgICAgICAgICBzaHV0aWwucm10cmVlKFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiL3dp bmUvIiArIGZldGNoVXNlck9TKCkgKyAiLSIgKyBhcmNoICsgIi8iICsgdmVyc2lvbikKLS0KLS0g ICAgZGVmIGluc3RhbGwzMihzZWxmLCBldmVudCk6Ci0tICAgICAgICBzZWxmLmluc3RhbGxfY29t bW9uKGV2ZW50LCAieDg2IikKLS0KLS0gICAgZGVmIGluc3RhbGxfY29tbW9uKHNlbGYsIGV2ZW50 LCBhcmNoKToKLS0gICAgICAgIGluc3RhbGwgPSBzZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZl cnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkdldEl0ZW1UZXh0KHNlbGYub25nbGV0cy5hdmFpbGFi bGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uR2V0U2VsZWN0aW9uKCkpCi0tICAgICAg ICBzdWJwcm9jZXNzLlBvcGVuKFsiYmFzaCIsIFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAi L2Jhc2gvaW5zdGFsbF93dmVyIiwgaW5zdGFsbCwgYXJjaF0pCi0rICAgICAgICAgICAgc2h1dGls LnJtdHJlZShWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgIi93aW5lLyIgKyBmZXRjaFVzZXJP UygpICsgIi0iICsgYXJjaGl0ZWN0dXJlICsgIi8iICsgdmVyc2lvbikKLSAKLS0gICAgZGVmIHVu c2VsZWN0NjQoc2VsZiwgZXZlbnQpOgotLSAgICAgICAgaWYgKGV2ZW50LkdldElkKCkgPT0gMjA2 KToKLS0gICAgICAgICAgICBzZWxmLm9uZ2xldHMuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNl bGVjdG9yWyJhbWQ2NCJdLlVuc2VsZWN0QWxsKCkKLS0gICAgICAgICAgICBzZWxmLm9uZ2xldHMu YnV0dG9uX3JtWyJhbWQ2NCJdLkVuYWJsZShGYWxzZSkKLS0gICAgICAgICAgICBzZWxmLm9uZ2xl dHMuYnV0dG9uX2luWyJhbWQ2NCJdLkVuYWJsZShUcnVlKQotLSAgICAgICAgaWYgKGV2ZW50Lkdl dElkKCkgPT0gMjA3KToKLS0gICAgICAgICAgICBzZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZl cnNpb25zVHJlZVNlbGVjdG9yWyJhbWQ2NCJdLlVuc2VsZWN0QWxsKCkKLS0gICAgICAgICAgICBz ZWxmLm9uZ2xldHMuYnV0dG9uX3JtWyJhbWQ2NCJdLkVuYWJsZShUcnVlKQotLSAgICAgICAgICAg IHNlbGYub25nbGV0cy5idXR0b25faW5bImFtZDY0Il0uRW5hYmxlKEZhbHNlKQotIAotLSAgICBk ZWYgZGVsZXRlNjQoc2VsZiwgZXZlbnQpOgotLSAgICAgICAgc2VsZi5kZWxldGVfY29tbW9uKGV2 ZW50LCAiYW1kNjQiKQotKyAgICBkZWYgaW5zdGFsbF93aW5lX3ZlcnNpb24oc2VsZiwgYXJjaGl0 ZWN0dXJlLCB2ZXJzaW9uKToKLSsgICAgICAgIHByaW50KCIlcyBvZiBhcmNoaXRlY3R1cmUgJXMg d2lsbCBiZSBpbnN0YWxsZWQgIiAlICh2ZXJzaW9uLCBhcmNoaXRlY3R1cmUpKQotKyAgICAgICAg c3VicHJvY2Vzcy5Qb3BlbihbImJhc2giLCBWYXJpYWJsZXMucGxheW9ubGludXhfZW52ICsgIi9i YXNoL2luc3RhbGxfd3ZlciIsIHZlcnNpb24sIGFyY2hpdGVjdHVyZV0pCi0gCi0tICAgIGRlZiBp bnN0YWxsNjQoc2VsZiwgZXZlbnQpOgotLSAgICAgICAgc2VsZi5pbnN0YWxsX2NvbW1vbihldmVu dCwgImFtZDY0IikKLS0KLS0gICAgZGVmIGdldFZlcnNpb25zKHNlbGYsIGFyY2g9Ing4NiIpOgot LSAgICAgICAgaWYgKGFyY2ggPT0gIng4NiIpOgotLSAgICAgICAgICAgIHNlbGYuZG93bmxvYWQz Mi50aHJlYWRfbWVzc2FnZSA9ICJnZXQiCi0tICAgICAgICBpZiAoYXJjaCA9PSAiYW1kNjQiKToK LS0gICAgICAgICAgICBzZWxmLmRvd25sb2FkNjQudGhyZWFkX21lc3NhZ2UgPSAiZ2V0IgotIAot ICAgICBkZWYgY2hlY2tWZXJzaW9uVXNlKHNlbGYsIGFyY2gpOiAgIyBDaGVjayB0aGUgd2luZSB2 ZXJzaW9uIHVzZSBieSB3aW5lcHJlZml4Ci0gICAgICAgICB1c2VkX3ZlcnNpb25zID0gc2V0KFtd KQotQEAgLTIxOCw2NCArMTMwLDggQEAgZGVmIGNoZWNrVmVyc2lvblVzZShzZWxmLCBhcmNoKTog ICMgQ2hlY2sgdGhlIHdpbmUgdmVyc2lvbiB1c2UgYnkgd2luZXByZWZpeAotICAgICAgICAgICAg ICAgICB1c2VkX3ZlcnNpb25zLmFkZCh3aW5lX3ZlcnNpb24pCi0gICAgICAgICByZXR1cm4gKHVz ZWRfdmVyc2lvbnMpCi0gCi0tICAgIGRlZiBXcml0ZVZlcnNpb24oc2VsZiwgYXJjaD0ieDg2Iik6 Ci0tICAgICAgICBzZWxmLm9uZ2xldHMuaW1hZ2VzYXBwc1thcmNoXS5SZW1vdmVBbGwoKQotLSAg ICAgICAgc2VsZi5vbmdsZXRzLmltYWdlc2FwcHNfaVthcmNoXS5SZW1vdmVBbGwoKQotLSAgICAg ICAgc2VsZi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5E ZWxldGVBbGxJdGVtcygpCi0tICAgICAgICBzZWxmLm9uZ2xldHMuaW5zdGFsbGVkV2luZVZlcnNp b25zVHJlZVNlbGVjdG9yW2FyY2hdLkRlbGV0ZUFsbEl0ZW1zKCkKLS0KLS0gICAgICAgIHJvb3Qg PSBzZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkFk ZFJvb3QoIiIpCi0tICAgICAgICBzZWxmLmkgPSAwCi0tICAgICAgICBpZiAoYXJjaCA9PSAieDg2 Iik6Ci0tICAgICAgICAgICAgd2hpbGUgKHNlbGYuaSA8IGxlbihzZWxmLmRvd25sb2FkMzIudmVy c2lvbnMpKToKLS0gICAgICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmltYWdlc2FwcHNbYXJjaF0u QWRkKAotLSAgICAgICAgICAgICAgICAgICAgd3guQml0bWFwKFZhcmlhYmxlcy5wbGF5b25saW51 eF9lbnYgKyAiL2V0Yy9pbnN0YWxsL3dpbmUtcGFja2FnZXMucG5nIikpCi0tICAgICAgICAgICAg ICAgIHNlbGYub25nbGV0cy5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0u QXBwZW5kSXRlbShyb290LCBzZWxmLmRvd25sb2FkMzIudmVyc2lvbnNbc2VsZi5pXSwgc2VsZi5p KQotLSAgICAgICAgICAgICAgICBzZWxmLmkgKz0gMQotLSAgICAgICAgaWYgKGFyY2ggPT0gImFt ZDY0Iik6Ci0tICAgICAgICAgICAgd2hpbGUgKHNlbGYuaSA8IGxlbihzZWxmLmRvd25sb2FkNjQu dmVyc2lvbnMpKToKLS0gICAgICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmltYWdlc2FwcHNbYXJj aF0uQWRkKAotLSAgICAgICAgICAgICAgICAgICAgd3guQml0bWFwKFZhcmlhYmxlcy5wbGF5b25s aW51eF9lbnYgKyAiL2V0Yy9pbnN0YWxsL3dpbmUtcGFja2FnZXMucG5nIikpCi0tICAgICAgICAg ICAgICAgIHNlbGYub25nbGV0cy5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJj aF0uQXBwZW5kSXRlbShyb290LCBzZWxmLmRvd25sb2FkNjQudmVyc2lvbnNbc2VsZi5pXSwgc2Vs Zi5pKQotLSAgICAgICAgICAgICAgICBzZWxmLmkgKz0gMQotLQotLSAgICAgICAgcm9vdDIgPSBz ZWxmLm9uZ2xldHMuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkFkZFJv b3QoIiIpCi0tICAgICAgICB3Zm9sZGVyID0gZmV0Y2hVc2VyT1MoKSArICItIiArIGFyY2gKLS0K LS0gICAgICAgIHVzZWRfdmVyc2lvbiA9IHNlbGYuY2hlY2tWZXJzaW9uVXNlKGFyY2gpICAjIEdl dCB0aGUgc2V0IG9mIHdpbmUgdmVyc2lvbiB1c2VkIGJ5IHdpbmVwcmVmaXgKLS0KLS0gICAgICAg IGluc3RhbGxlZF92ZXJzaW9ucyA9IG9zLmxpc3RkaXIoVmFyaWFibGVzLnBsYXlvbmxpbnV4X3Jl cCArICIvd2luZS8iICsgd2ZvbGRlcikKLS0gICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5zb3J0 KGtleT1uYXRzb3J0Lm5hdHNvcnRfa2V5Z2VuKCkpCi0tICAgICAgICBpbnN0YWxsZWRfdmVyc2lv bnMucmV2ZXJzZSgpCi0tICAgICAgICBzZWxmLmkgPSAwCi0tICAgICAgICBzZWxmLmogPSAwCi0t ICAgICAgICBib2xkRm9udCA9IHNlbGYuR2V0Rm9udCgpCi0tICAgICAgICBib2xkRm9udC5TZXRX ZWlnaHQod3guQk9MRCkKLS0gICAgICAgIHdoaWxlIChzZWxmLmkgPCBsZW4oaW5zdGFsbGVkX3Zl cnNpb25zKSk6Ci0tICAgICAgICAgICAgaWYgKG9zLnBhdGguaXNkaXIoVmFyaWFibGVzLnBsYXlv bmxpbnV4X3JlcCArICIvd2luZS8iICsgd2ZvbGRlciArICIvIiArIGluc3RhbGxlZF92ZXJzaW9u c1tzZWxmLmldKSk6Ci0tICAgICAgICAgICAgICAgIGl0ZW1JZCA9IHNlbGYub25nbGV0cy5pbnN0 YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uQXBwZW5kSXRlbShyb290MiwgaW5z dGFsbGVkX3ZlcnNpb25zW3NlbGYuaV0sIHNlbGYuaikKLS0gICAgICAgICAgICAgICAgaWYgKGxl bihvcy5saXN0ZGlyKAotLSAgICAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlcy5wbGF5b25s aW51eF9yZXAgKyAiL3dpbmUvIiArIHdmb2xkZXIgKyAiLyIgKyBpbnN0YWxsZWRfdmVyc2lvbnNb c2VsZi5pXSkpID09IDApOgotLSAgICAgICAgICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmltYWdl c2FwcHNfaVthcmNoXS5BZGQoCi0tICAgICAgICAgICAgICAgICAgICAgICAgd3guQml0bWFwKFZh cmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAiL2V0Yy9pbnN0YWxsL3dpbmUtd2FybmluZy5wbmci KSkKLS0gICAgICAgICAgICAgICAgZWxpZiBpbnN0YWxsZWRfdmVyc2lvbnNbc2VsZi5pXSBub3Qg aW4gdXNlZF92ZXJzaW9uOgotLSAgICAgICAgICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmltYWdl c2FwcHNfaVthcmNoXS5BZGQod3guQml0bWFwKFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAi L2V0Yy9pbnN0YWxsL3dpbmUucG5nIikpCi0tICAgICAgICAgICAgICAgIGVsc2U6ICAjIENsZWFy bHkgc2hvdyB0aGUgd2luZSB2ZXJzaW9uIGluIHVzZQotLSAgICAgICAgICAgICAgICAgICAgc2Vs Zi5vbmdsZXRzLmltYWdlc2FwcHNfaVthcmNoXS5BZGQoCi0tICAgICAgICAgICAgICAgICAgICAg ICAgd3guQml0bWFwKFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAiL2V0Yy9pbnN0YWxsL3dp bmUtaW4tdXNlLnBuZyIpKQotLSAgICAgICAgICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmluc3Rh bGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5TZXRJdGVtRm9udChpdGVtSWQsIGJv bGRGb250KQotLSAgICAgICAgICAgICAgICBzZWxmLmogKz0gMQotLSAgICAgICAgICAgIHNlbGYu aSArPSAxCi0tICAgICAgICB0cnk6Ci0tICAgICAgICAgICAgaWYgKHZlcnNpb25zWzBdID09ICJX aW5lIHBhY2thZ2VzIHdlYnNpdGUgaXMgdW5hdmFpbGFibGUiKToKLS0gICAgICAgICAgICAgICAg c2VsZi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5FbmFi bGUoRmFsc2UpCi0tICAgICAgICAgICAgICAgIHNlbGYub25nbGV0cy5pbWFnZXNhcHBzW2FyY2hd LlJlbW92ZUFsbCgpCi0tICAgICAgICBleGNlcHQ6Ci0tICAgICAgICAgICAgcGFzcwotLSAgICAg ICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9ybVthcmNoXS5FbmFibGUoRmFsc2UpCi0tICAgICAgICBz ZWxmLm9uZ2xldHMuYnV0dG9uX2luW2FyY2hdLkVuYWJsZShGYWxzZSkKLS0KLS0gICAgZGVmIGNs b3NlYXBwKHNlbGYsIGV2ZW50KToKLSsKLSsgICAgZGVmIGNsb3NlKHNlbGYsIGV2ZW50KToKLSAg ICAgICAgIHNlbGYuZG93bmxvYWQzMi50aHJlYWRfcnVubmluZyA9IEZhbHNlCi0gICAgICAgICBp ZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09ICJUcnVlIik6Ci0gICAgICAgICAg ICAgc2VsZi5kb3dubG9hZDY0LnRocmVhZF9ydW5uaW5nID0gRmFsc2UKLQotRnJvbSA5NzA0MjU5 MjFhNDkzNGFkNTg0MjNlNjFjNzk5ZjQ3ODVmY2RlOGMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotRnJvbTogUXVlbnRpbiBQQVJJUyA8Z2l0QHF1ZW50aW4ucGFyaXM+Ci1EYXRlOiBTdW4sIDI0 IEphbiAyMDIxIDE1OjQxOjMyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvMzNdIFJlYWZjdG9y aW5nIHdpbmUgdmVyc2lvbiBtYW5hZ2VyIGNvZGUKLQotLS0tCi0gbGliL3NjcmlwdHMubGliICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTkgKysrKysrKysrLS0tCi0gbGliL3dpbmUubGli ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYgKystLQotIHB5dGhvbi93aW5lX3Zl cnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xzLnB5ICB8IDEwICsrKysrKy0KLSBweXRob24vd2luZV92 ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkgfCAzNCArKysrKysrKysrKystLS0tLS0tLS0t Ci0gNCBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKLQot ZGlmZiAtLWdpdCBhL2xpYi9zY3JpcHRzLmxpYiBiL2xpYi9zY3JpcHRzLmxpYgotaW5kZXggZmJk MzYzNGM0Li40ZmQzZmI1YzUgMTAwNzU1Ci0tLS0gYS9saWIvc2NyaXB0cy5saWIKLSsrKyBiL2xp Yi9zY3JpcHRzLmxpYgotQEAgLTc3LDE3ICs3NywyOCBAQCBQT0xfU3lzdGVtX1NldEFyY2goKQot IAkjIFVzYWdlOiBQT0xfU3lzdGVtX1NldEFyY2ggKGF1dG98eDg2fGFtZDY0KQotIAkjIElmIGFt ZDY0IGlzIHNwZWNpZmllZCBhbmQgbm90IHN1cHBvcnRlZCwgdGhlIHNjcmlwdCB3aWxsIGVuZAot IAotLQkjICQxID0gQXV0bywgeDg2LCBhbWQ2NAotKwkjICQxID0gQXV0bywgeDg2LCBhbWQ2NCwg eDg2b242NAotIAkjICQyID0gZGV0ZWN0ZWQsIGlmIHRoZSByZXN1bHQgb2YgYW4gYXV0b21hdGlj IHNlbGVjdGlvbgotIAotLQlpZiBbICEgIiQxIiA9PSAieDg2IiBdICYmIFsgISAiJDEiID09ICJh bWQ2NCIgXQotKwlpZiBbICEgIiQxIiA9PSAieDg2IiBdICYmIFsgISAiJDEiID09ICJhbWQ2NCIg XSAmJiBbICEgIiQxIiA9PSAieDg2b242NCIgXQotIAl0aGVuCi0tCQlbICIkQU1ENjRfQ09NUEFU SUJMRSIgPT0gIlRydWUiIF0gJiYgZXhwb3J0IFBPTF9BUkNIPSJhbWQ2NCIgfHwgZXhwb3J0IFBP TF9BUkNIPSJ4ODYiCi0rCSAgaWYgW1sgIiRPU1hfVkVSU0lPTiIgLWdlIDE5IF1dOyB0aGVuCi0r CSAgICBleHBvcnQgUE9MX0FSQ0g9Ing4Nm9uNjQiCi0rCSAgZWxzZQotKyAgCQlbICIkQU1ENjRf Q09NUEFUSUJMRSIgPT0gIlRydWUiIF0gJiYgZXhwb3J0IFBPTF9BUkNIPSJhbWQ2NCIgfHwgZXhw b3J0IFBPTF9BUkNIPSJ4ODYiCi0rICAJZmkKLSAJZmkKLSsKLSAJaWYgWyAiJDEiID09ICJ4ODYi IF0KLSAJdGhlbgotLQkJZXhwb3J0IFBPTF9BUkNIPSJ4ODYiCi0rCQlbWyAiJE9TWF9WRVJTSU9O IiAtZ2UgMTkgXV0gJiYgZXhwb3J0IFBPTF9BUkNIPSJ4ODZvbjY0IiB8fCBleHBvcnQgUE9MX0FS Q0g9Ing4NiIKLSAJZmkKLSsKLSsJaWYgWyAiJDEiID09ICJ4ODZvbjY0IiBdCi0rCXRoZW4KLSsJ CVtbICIkT1NYX1ZFUlNJT04iIC1nZSAxOSBdXSAmJiBleHBvcnQgUE9MX0FSQ0g9Ing4Nm9uNjQi IHx8IFBPTF9EZWJ1Z19GYXRhbCAieDg2b242NCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHlvdXIgc3lz dGVtIgotKwlmaQotKwotIAlpZiBbICIkMSIgPT0gImFtZDY0IiBdCi0gCXRoZW4KLSAJCVsgIiRB TUQ2NF9DT01QQVRJQkxFIiA9PSAiVHJ1ZSIgXSAmJiBleHBvcnQgUE9MX0FSQ0g9ImFtZDY0IiB8 fCBQT0xfRGVidWdfRmF0YWwgImFtZDY0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciBzeXN0ZW0i Ci1kaWZmIC0tZ2l0IGEvbGliL3dpbmUubGliIGIvbGliL3dpbmUubGliCi1pbmRleCBkMjdkZTE1 MDkuLjQzNDc1ZjMxMCAxMDA3NTUKLS0tLSBhL2xpYi93aW5lLmxpYgotKysrIGIvbGliL3dpbmUu bGliCi1AQCAtNjc4LDcgKzY3OCw2IEBAIFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uKCkgewotIAot ICAgICBXSU5FX0FERFJFU1M9IiQoZWNobyAiJFdJTkVEQVRBIiB8IGpxICcudXJsJyAtcikiCi0g ICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJXaW5lIGFkZHJlc3MgZm91bmQ6ICRXSU5FX0FERFJFU1Mi Ci0tICAgICNXSU5FX0FERFJFU1M9JCgkUE9MX1dHRVQgIiRXSU5FX1NJVEUvJFdJTkVfU0VDVElP Ti5sc3QiIC1PLSB8IGdyZXAgIjskcG9sX3dpbmV2ZXJzaW9uOyIgfCB0YWlsIC1uIDEgfCBjdXQg LWQgIjsiIC1mMSkKLSAKLSAgICAgaWYgWyAiJFdJTkVfQUREUkVTUyIgPSAiIiBdICYmIFsgIiRQ T0xfQVJDSCIgPSAiYW1kNjQiIF07IHRoZW4KLSAgICAgICBQT0xfRGVidWdfV2FybmluZyAiV2lu ZSAkMSBhbWQ2NCBkb2VzIG5vdCBleGlzdC4gU3dpdGNoaW5nIHRvIHg4NiIKLUBAIC02OTcsNyAr Njk2LDggQEAgUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24oKSB7Ci0gICAgICAgZmkKLSAKLSAgICAg ICBjZCAiJFBPTF9VU0VSX1JPT1QvdG1wIgotLSAgICAgIGZpbGVuYW1lPSIkUFdEL1BsYXlPbkxp bnV4LXdpbmUtJHBvbF93aW5ldmVyc2lvbi0kUE9MX1dJTkVESVNUUklCVVRJT04tJEFSQ0hfUFJF RklYLSRzaXRlX2FyY2gudGFyLmd6IgotKyAgICAgIGZpbGVuYW1lPSIkUFdELyQoYmFzZW5hbWUg IiRXSU5FX0FERFJFU1MiKSIKLSsgICAgICBlY2hvICJMb2NhbCBmaWxlIG5hbWU6ICRmaWxlbmFt ZSIKLSAgICAgICBQT0xfU2V0dXBXaW5kb3dfZG93bmxvYWQgIiQoZXZhbF9nZXR0ZXh0ICJEb3du bG9hZGluZyBXaW5lOiAiKSRwb2xfd2luZXZlcnNpb24iICIkVElUTEUiICIkV0lORV9BRERSRVNT IgotICAgICAgIFBPTF9TZXR1cFdpbmRvd193YWl0X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4 dCAiRG93bmxvYWRpbmcgV2luZTogIikkcG9sX3dpbmV2ZXJzaW9uIiAiJFRJVExFIgotICAgICAg IHNsZWVwIDEKLUBAIC03MDYsNyArNzA2LDcgQEAgUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24oKSB7 Ci0gICAgICAgZWNobyAiU2VydmVyIHNoYTEgOiAkc2hhMSIKLSAgICAgICBlY2hvICJDbGllbnQg c2hhMSA6ICRzaGExX2ZpbGUiCi0gCi0tICAgICAgaWYgWyAhICIkc2hhMSIgPSAiJHNoYTFfZmls ZSIgXSAmJiBbWyAkT1NYX1ZFUlNJT04gLWx0IDE5IF1dOyB0aGVuCi0rICAgICAgaWYgWyAhICIk c2hhMSIgPSAiJHNoYTFfZmlsZSIgXTsgdGhlbgotICAgICAgICAgUE9MX1NldHVwV2luZG93X21l c3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdUaGUgZG93bmxvYWQgc2VlbXMgdG8gaGF2ZSBmYWlsZWQu JykiICIkVElUTEUiCi0gICAgICAgZWxzZQotICAgICAgICAgUE9MX1NldHVwV2luZG93X3dhaXQg IiQoZXZhbF9nZXR0ZXh0ICdFeHRyYWN0aW5nIFdpbmUuLi4nKSIgIiRUSVRMRSIKLWRpZmYgLS1n aXQgYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNUb29scy5weSBiL3B5dGhvbi93 aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xzLnB5Ci1pbmRleCA2OWQ0Y2YyYjIuLjM1OTM1 NTk5YiAxMDA2NDQKLS0tLSBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xz LnB5Ci0rKysgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNUb29scy5weQotQEAg LTEsNiArMSw1IEBACi0gaW1wb3J0IG9zCi0gCi0tZnJvbSBsaWIgaW1wb3J0IFZhcmlhYmxlcwot IAotIGRlZiBmZXRjaFVzZXJPUygpOgotICAgICBpZiAob3MuZW52aXJvblsiUE9MX09TIl0gPT0g Ik1hYyIpOgotQEAgLTEwLDcgKzksMTYgQEAgZGVmIGZldGNoVXNlck9TKCk6Ci0gICAgIGVsc2U6 Ci0gICAgICAgICByZXR1cm4gImZyZWVic2QiCi0gCi0rCi0gZGVmIGFyY2hpdGVjdHVyZV9pc19z dXBwb3J0ZWQoYXJjaGl0ZWN0dXJlX25hbWUpOgotKyAgICBpZiBmZXRjaFVzZXJPUygpID09ICJs aW51eCI6Ci0rICAgICAgICByZXR1cm4gYXJjaGl0ZWN0dXJlX25hbWUgaW4gWyJ4ODYiLCAiYW1k NjQiXQotKwotKyAgICBpZiBmZXRjaFVzZXJPUygpID09ICJkYXJ3aW4iOgotKyAgICAgICAgaWYg aW50KG9zLmVudmlyb24uZ2V0KCJPU1hfVkVSU0lPTiIsIDApKSA+PSAxOToKLSsgICAgICAgICAg ICByZXR1cm4gYXJjaGl0ZWN0dXJlX25hbWUgaW4gWyJ4ODZvbjY0IiwgImFtZDY0Il0KLSsgICAg ICAgIGVsc2U6Ci0rICAgICAgICAgICAgcmV0dXJuIGFyY2hpdGVjdHVyZV9uYW1lIGluIFsieDg2 IiwgImFtZDY0Il0KLSAgICAgcmV0dXJuIFRydWUgIyMgRklYTUUKLSAKLSBkZWYgZmV0Y2hfc3Vw cG9ydGVkX2FyY2hzKCk6Ci1kaWZmIC0tZ2l0IGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZl cnNpb25zV2luZG93LnB5IGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zV2luZG93 LnB5Ci1pbmRleCBiNzZkYjBiMjUuLjJlY2FjM2Y1NSAxMDA3NTUKLS0tLSBhL3B5dGhvbi93aW5l X3ZlcnNpb25zL1dpbmVWZXJzaW9uc1dpbmRvdy5weQotKysrIGIvcHl0aG9uL3dpbmVfdmVyc2lv bnMvV2luZVZlcnNpb25zV2luZG93LnB5Ci1AQCAtMzgsMjkgKzM4LDMxIEBACi0gY2xhc3MgV2lu ZVZlcnNpb25zV2luZG93KHd4LkZyYW1lKToKLSAgICAgZGVmIG9uX2F2YWlsYWJsZV93aW5lX3Zl cnNpb25zX2Rvd25sb2FkZWQoc2VsZiwgdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZSk6Ci0gICAg ICAgICBmb3IgYXJjaGl0ZWN0dXJlIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmU6Ci0tICAg ICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zID0gW10KLS0gICAgICAgICAgICBmb3IgdmVyc2lv biBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlW2FyY2hpdGVjdHVyZV06Ci0tICAgICAgICAg ICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucy5hcHBlbmQodmVyc2lvblsibmFtZSJdKQotKyAgICAg ICAgICAgIGlmIGFyY2hpdGVjdHVyZSBpbiBmZXRjaF9zdXBwb3J0ZWRfYXJjaHMoKToKLSsgICAg ICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zID0gW10KLSsgICAgICAgICAgICAgICAgZm9y IHZlcnNpb24gaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZVthcmNoaXRlY3R1cmVdOgotKyAg ICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zLmFwcGVuZCh2ZXJzaW9uWyJuYW1l Il0pCi0gCi0tICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zLnNvcnQoa2V5PW5hdHNvcnQu bmF0c29ydF9rZXlnZW4oKSkKLS0gICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMucmV2ZXJz ZSgpCi0tICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zID0gYXZhaWxhYmxlX3ZlcnNpb25z WzpdCi0rICAgICAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucy5zb3J0KGtleT1uYXRzb3J0 Lm5hdHNvcnRfa2V5Z2VuKCkpCi0rICAgICAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucy5y ZXZlcnNlKCkKLSsgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zID0gYXZhaWxhYmxl X3ZlcnNpb25zWzpdCi0gCi0tICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gYXZhaWxhYmxlX3Zl cnNpb25zOgotLSAgICAgICAgICAgICAgICB3eC5DYWxsQWZ0ZXIoc2VsZi5ub3RlYm9vay5hZGRf YXZhaWxhYmxlX3ZlcnNpb24sIGFyY2hpdGVjdHVyZSwgdmVyc2lvbikKLSsgICAgICAgICAgICAg ICAgZm9yIHZlcnNpb24gaW4gYXZhaWxhYmxlX3ZlcnNpb25zOgotKyAgICAgICAgICAgICAgICAg ICAgd3guQ2FsbEFmdGVyKHNlbGYubm90ZWJvb2suYWRkX2F2YWlsYWJsZV92ZXJzaW9uLCBhcmNo aXRlY3R1cmUsIHZlcnNpb24pCi0gCi0gICAgIGRlZiBvbl9pbnN0YWxsZWRfd2luZV92ZXJzaW9u c19kb3dubG9hZGVkKHNlbGYsIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmUpOgotICAgICAgICAg Zm9yIGFyY2hpdGVjdHVyZSBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlOgotLSAgICAgICAg ICAgIGluc3RhbGxlZF92ZXJzaW9ucyA9IFtdCi0tICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4g dmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZVthcmNoaXRlY3R1cmVdOgotLSAgICAgICAgICAgICAg ICBpbnN0YWxsZWRfdmVyc2lvbnMuYXBwZW5kKHZlcnNpb25bIm5hbWUiXSkKLSsgICAgICAgICAg ICBpZiBhcmNoaXRlY3R1cmUgaW4gZmV0Y2hfc3VwcG9ydGVkX2FyY2hzKCk6Ci0rICAgICAgICAg ICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucyA9IFtdCi0rICAgICAgICAgICAgICAgIGZvciB2ZXJz aW9uIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmVbYXJjaGl0ZWN0dXJlXToKLSsgICAgICAg ICAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5hcHBlbmQodmVyc2lvblsibmFtZSJdKQot IAotLSAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5zb3J0KGtleT1uYXRzb3J0Lm5hdHNv cnRfa2V5Z2VuKCkpCi0tICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLnJldmVyc2UoKQot LSAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucyA9IGluc3RhbGxlZF92ZXJzaW9uc1s6XQot KyAgICAgICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMuc29ydChrZXk9bmF0c29ydC5uYXRz b3J0X2tleWdlbigpKQotKyAgICAgICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMucmV2ZXJz ZSgpCi0rICAgICAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucyA9IGluc3RhbGxlZF92ZXJz aW9uc1s6XQotIAotLSAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIGluc3RhbGxlZF92ZXJzaW9u czoKLS0gICAgICAgICAgICAgICAgd3guQ2FsbEFmdGVyKHNlbGYubm90ZWJvb2suYWRkX2luc3Rh bGxlZF92ZXJzaW9uLCBhcmNoaXRlY3R1cmUsIHZlcnNpb24pCi0rICAgICAgICAgICAgICAgIGZv ciB2ZXJzaW9uIGluIGluc3RhbGxlZF92ZXJzaW9uczoKLSsgICAgICAgICAgICAgICAgICAgIHd4 LkNhbGxBZnRlcihzZWxmLm5vdGVib29rLmFkZF9pbnN0YWxsZWRfdmVyc2lvbiwgYXJjaGl0ZWN0 dXJlLCB2ZXJzaW9uKQotIAotICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIGVycm9yKToKLSAg ICAgICAgIHByaW50KGVycm9yKQotCi1Gcm9tIDc0OTkxN2IwZDBjNmQ0MzlmNzEwMDRmZGQ5YmM1 Njk5MmJiOTFmMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBRdWVudGluIFBBUklT IDxnaXRAcXVlbnRpbi5wYXJpcz4KLURhdGU6IFN1biwgMjQgSmFuIDIwMjEgMTU6NDY6NDQgKzAx MDAKLVN1YmplY3Q6IFtQQVRDSCAxNy8zM10gUmVhZmN0b3Jpbmcgd2luZSB2ZXJzaW9uIG1hbmFn ZXIgY29kZQotCi0tLS0KLSBDSEFOR0VMT0cubWQgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAz IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL0NIQU5HRUxPRy5tZCBiL0NIQU5HRUxPRy5t ZAotaW5kZXggY2RlMmQ4MmM0Li43MzVmNjExNGEgMTAwNjQ0Ci0tLS0gYS9DSEFOR0VMT0cubWQK LSsrKyBiL0NIQU5HRUxPRy5tZAotQEAgLTEsMyArMSw2IEBACi0rIyA0LjQuMiAKLSsqIFJlZmFj dG9yZWQgd2luZSB2ZXJzaW9uIHdpbmRvdyAKLSsKLSAjIDQuNAotICogUHl0aG9uIDMgc3VwcG9y dCAKLSAKLQotRnJvbSBjNTlkMDNiNTcxNzE0M2I0MTAyYjcwMTU5YTBkMjE4NTA0MjJjZTY0IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU20wazNyIDwxMTU1ODQ5OSs1bTBrM3JAdXNl cnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogVGh1LCAzIEZlYiAyMDIyIDIyOjQxOjA5IC0w MzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTgvMzNdIFVwZGF0ZSBwbGF5b25saW51eC5weQotCi1Bdm9p ZCBzdHJpbmdzIGluIHZlcnNpb24xIGFuZCB2ZXJzaW9uMiB2YXJpYWJsZXMgd2l0aCBpc251bWVy aWMoKSBmdW5jdGlvbiwgYW5kIGhhbmRsaW5nIGVycm9yIHdpdGggdHJ5LWV4Y2VwdCBibG9jay4K LS0tLQotIHB5dGhvbi9saWIvcGxheW9ubGludXgucHkgfCAxMCArKysrKysrKy0tCi0gMSBmaWxl IGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBh L3B5dGhvbi9saWIvcGxheW9ubGludXgucHkgYi9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5Ci1p bmRleCAzZTg3ZDkwYWEuLjk2MDcwN2Q5MSAxMDA3NTUKLS0tLSBhL3B5dGhvbi9saWIvcGxheW9u bGludXgucHkKLSsrKyBiL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkKLUBAIC0yNzgsMTEgKzI3 OCwxNyBAQCBkZWYgVmVyc2lvbkxvd2VyKHZlcnNpb24xLCB2ZXJzaW9uMik6Ci0gICAgICAgICBl bHNlOgotICAgICAgICAgICAgIHJldHVybiBGYWxzZQotIAotLSAgICB2ZXJzaW9uMSA9IFsgaW50 KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjFbMF0uc3BsaXQoIi4iKVs6M10gXQotKyAgICB0 cnk6Ci0rICAgICAgICB2ZXJzaW9uMSA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lv bjFbMF0uc3BsaXQoIi4iKSBdCi0rICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotKyAgICAgICAgdmVy c2lvbjEgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24xWzBdLnNwbGl0KCIuIikg aWYgZGlnaXQuaXNudW1lcmljKCkgXQotICAgICB3aGlsZSBsZW4odmVyc2lvbjEpIDwgMzoKLSAg ICAgICAgIHZlcnNpb24xLmFwcGVuZCgwKQotIAotLSAgICB2ZXJzaW9uMiA9IFsgaW50KGRpZ2l0 KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjJbMF0uc3BsaXQoIi4iKVs6M10gXQotKyAgICB0cnk6Ci0r ICAgICAgICB2ZXJzaW9uMiA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjJbMF0u c3BsaXQoIi4iKSBdCi0rICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotKyAgICAgICAgdmVyc2lvbjIg PSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24yWzBdLnNwbGl0KCIuIikgaWYgZGln aXQuaXNudW1lcmljKCkgXQotICAgICB3aGlsZSBsZW4odmVyc2lvbjIpIDwgMzoKLSAgICAgICAg IHZlcnNpb24yLmFwcGVuZCgwKQotIAotCi1Gcm9tIDIxNmM0NDg5YWQ0MTU0NmM2MTVmY2Q1NzMy ZDZjOWM1YzhmMzE1MzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTbTBrM3IgPDEx NTU4NDk5KzVtMGszckB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBUaHUsIDMgRmVi IDIwMjIgMjI6NDc6NTQgLTAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxOS8zM10gVXBkYXRlIHBsYXlv bmxpbnV4LnB5Ci0KLVdvcmthcm91bmQgZm9yIG5vbi1udW1lcmljIGNoYXJhY3RlcnMgaW4gbGlz dCB2ZXJzaW9uMSBhbmQgdmVyc2lvbjIgd2l0aG91dCBlcnJvciBoYW5kbGluZyB0byBrZWVwIHNp bXBsZS4KLS0tLQotIHB5dGhvbi9saWIvcGxheW9ubGludXgucHkgfCAxMCArKy0tLS0tLS0tCi0g MSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAt LWdpdCBhL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkgYi9weXRob24vbGliL3BsYXlvbmxpbnV4 LnB5Ci1pbmRleCA5NjA3MDdkOTEuLmZhOWI5MGZiOSAxMDA3NTUKLS0tLSBhL3B5dGhvbi9saWIv cGxheW9ubGludXgucHkKLSsrKyBiL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkKLUBAIC0yNzgs MTcgKzI3OCwxMSBAQCBkZWYgVmVyc2lvbkxvd2VyKHZlcnNpb24xLCB2ZXJzaW9uMik6Ci0gICAg ICAgICBlbHNlOgotICAgICAgICAgICAgIHJldHVybiBGYWxzZQotIAotLSAgICB0cnk6Ci0tICAg ICAgICB2ZXJzaW9uMSA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjFbMF0uc3Bs aXQoIi4iKSBdCi0tICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotLSAgICAgICAgdmVyc2lvbjEgPSBb IGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24xWzBdLnNwbGl0KCIuIikgaWYgZGlnaXQu aXNudW1lcmljKCkgXQotKyAgICB2ZXJzaW9uMSA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4g dmVyc2lvbjFbMF0uc3BsaXQoIi4iKSBpZiBkaWdpdC5pc251bWVyaWMoKSBdCi0gICAgIHdoaWxl IGxlbih2ZXJzaW9uMSkgPCAzOgotICAgICAgICAgdmVyc2lvbjEuYXBwZW5kKDApCi0gCi0tICAg IHRyeToKLS0gICAgICAgIHZlcnNpb24yID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJz aW9uMlswXS5zcGxpdCgiLiIpIF0KLS0gICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0tICAgICAgICB2 ZXJzaW9uMiA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjJbMF0uc3BsaXQoIi4i KSBpZiBkaWdpdC5pc251bWVyaWMoKSBdCi0rICAgIHZlcnNpb24yID0gWyBpbnQoZGlnaXQpIGZv ciBkaWdpdCBpbiB2ZXJzaW9uMlswXS5zcGxpdCgiLiIpIGlmIGRpZ2l0LmlzbnVtZXJpYygpIF0K LSAgICAgd2hpbGUgbGVuKHZlcnNpb24yKSA8IDM6Ci0gICAgICAgICB2ZXJzaW9uMi5hcHBlbmQo MCkKLSAKLQotRnJvbSA0ZTMyMzVhNWJiOWIyZGY2MWYyODdmOTMyNjg1NjU0NWY5ZTUzNWE1IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRWR1YXJkbyBNb3phcnQgZGUgT2xpdmVpcmEK LSA8Mjk3NDg5NStlZHVhcmRvbW96YXJ0QHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6 IFRodSwgMTIgTWF5IDIwMjIgMDk6MTU6NTkgLTAzMDAKLVN1YmplY3Q6IFtQQVRDSCAyMC8zM10g Rml4IFhRdWFydHogVVJMCi0KLVhRdWFydHogZmFpbHMgdG8gaW5zdGFsbCBpbnRvIG1hY09TCi0t LS0KLSBiYXNoL3N0YXJ0dXBfYWZ0ZXJfc2VydmVyIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYmFzaC9zdGFydHVw X2FmdGVyX3NlcnZlciBiL2Jhc2gvc3RhcnR1cF9hZnRlcl9zZXJ2ZXIKLWluZGV4IGFhMDdhNGVl OS4uZTc0ODYzMzljIDEwMDc1NQotLS0tIGEvYmFzaC9zdGFydHVwX2FmdGVyX3NlcnZlcgotKysr IGIvYmFzaC9zdGFydHVwX2FmdGVyX3NlcnZlcgotQEAgLTMwLDcgKzMwLDcgQEAgZXhwb3J0IFhR VUFSVFpfVkVSU0lPTj0iMi43LjExIgotIGluc3RhbGxfeDExKCkKLSB7Ci0gCi0tCVhRdWFydHpV cmw9Imh0dHA6Ly9kbC5iaW50cmF5LmNvbS94cXVhcnR6L2Rvd25sb2Fkcy9YUXVhcnR6LSRYUVVB UlRaX1ZFUlNJT04uZG1nIgotKwlYUXVhcnR6VXJsPSJodHRwczovL2dpdGh1Yi5jb20vWFF1YXJ0 ei9YUXVhcnR6L3JlbGVhc2VzL2Rvd25sb2FkL1hRdWFydHotJFhRVUFSVFpfVkVSU0lPTi9YUXVh cnR6LSRYUVVBUlRaX1ZFUlNJT04uZG1nIgotIAlGaWxlUHJlZml4PSJYUXVhcnR6IgotIAotIAlT VEVQX1RJVExFPSJYUXVhcnR6IgotCi1Gcm9tIDhmZjAxZjM0MTkyNWEzNjczZDRhMWRlODUxMmQ5 ZTIzNzJhNGQ5ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFZHVhcmRvIE1vemFy dCBkZSBPbGl2ZWlyYQotIDwyOTc0ODk1K2VkdWFyZG9tb3phcnRAdXNlcnMubm9yZXBseS5naXRo dWIuY29tPgotRGF0ZTogVGh1LCAxMiBNYXkgMjAyMiAwOTo1MzowOSAtMDMwMAotU3ViamVjdDog W1BBVENIIDIxLzMzXSBVcGRhdGUgbG5nLnB5Ci0KLUZpeCBwbGF5b25saW51eC1iYXNoIGV4ZWMg b24gbWFjT1MgTW9udGVyZXkKLS0tLQotIHB5dGhvbi9saWIvbG5nLnB5IHwgMTUgKysrKysrKysr LS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkK LQotZGlmZiAtLWdpdCBhL3B5dGhvbi9saWIvbG5nLnB5IGIvcHl0aG9uL2xpYi9sbmcucHkKLWlu ZGV4IGEzOTBkOTIwYi4uNWZiMTYxYzNjIDEwMDc1NQotLS0tIGEvcHl0aG9uL2xpYi9sbmcucHkK LSsrKyBiL3B5dGhvbi9saWIvbG5nLnB5Ci1AQCAtMTgsMTIgKzE4LDE1IEBAIGRlZiBfX2luaXRf XyhzZWxmKToKLSAgICAgICAgICAgICBsYW5ndWFnZXMgPSBvcy5saXN0ZGlyKFZhcmlhYmxlcy5w bGF5b25saW51eF9lbnYrJy9sYW5nL2xvY2FsZScpCi0gCi0gICAgICAgICBpZihvcy5lbnZpcm9u WyJQT0xfT1MiXSA9PSAiTWFjIik6Ci0tICAgICAgICAgICAgd3hMb2NhbGUgPSB3eC5Mb2NhbGUo KS5GaW5kTGFuZ3VhZ2VJbmZvKG9zLmVudmlyb25bIlJMQU5HIl0pCi0tCi0tICAgICAgICAgICAg aWYgd3hMb2NhbGUgaXMgbm90IE5vbmU6Ci0tICAgICAgICAgICAgICAgIGxhbmdpZCA9IHd4Lkxv Y2FsZSgpLkZpbmRMYW5ndWFnZUluZm8ob3MuZW52aXJvblsiUkxBTkciXSkuTGFuZ3VhZ2UKLS0g ICAgICAgICAgICBlbHNlOgotLSAgICAgICAgICAgICAgICBsYW5naWQgPSB3eC5MQU5HVUFHRV9E RUZBVUxUCi0rICAgICAgICAgICAgdHJ5OgotKyAgICAgICAgICAgICAgICB3eExvY2FsZSA9IHd4 LkxvY2FsZSgpLkZpbmRMYW5ndWFnZUluZm8ob3MuZW52aXJvblsiUkxBTkciXSkKLSsKLSsgICAg ICAgICAgICAgICAgaWYgd3hMb2NhbGUgaXMgbm90IE5vbmU6Ci0rICAgICAgICAgICAgICAgICAg ICBsYW5naWQgPSB3eC5Mb2NhbGUoKS5GaW5kTGFuZ3VhZ2VJbmZvKG9zLmVudmlyb25bIlJMQU5H Il0pLkxhbmd1YWdlCi0rICAgICAgICAgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgICAgICAg ICBsYW5naWQgPSB3eC5MQU5HVUFHRV9ERUZBVUxUCi0rICAgICAgICAgICAgZXhjZXB0OgotKyAg ICAgICAgICAgICAgICBsYW5naWQgPSB3eC5MQU5HVUFHRV9ERUZBVUxUIAotICAgICAgICAgZWxz ZToKLSAgICAgICAgICAgICBsYW5naWQgPSB3eC5MQU5HVUFHRV9ERUZBVUxUCi0gCi0KLUZyb20g OWEyN2M4ZjRmMWMxNDU4Mzg4YWUwNDY4Y2NkYmQ3NTgxNjlhOGVlNiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IEVkdWFyZG8gTW96YXJ0IGRlIE9saXZlaXJhCi0gPDI5NzQ4OTUrZWR1 YXJkb21vemFydEB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBUaHUsIDEyIE1heSAy MDIyIDE1OjUzOjU0IC0wMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjIvMzNdIFVwZGF0ZSBNYWtlZmls ZSB0byBtYWNPUwotCi1Ob3cgbWFjT1MgY2FuIGFsc28gcnVuIHRoZSBtYWtlIGNvbW1hbmQKLS0t LQotIE1ha2VmaWxlIHwgMTggKysrKysrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE0 IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBi L01ha2VmaWxlCi1pbmRleCBhOGQ4MWI4OTIuLjExNWQyNjk4YyAxMDA2NDQKLS0tLSBhL01ha2Vm aWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTIwLDkgKzIwLDE4IEBACi0gIyBERVNURElSIC0tIFdo ZXJlIHlvdSB3YW50IHRvIGluc3RhbGwKLSAjCi0gCi0tQ0ZMQUdTID89IC1PMgotK2lmZXEgKCQo c2hlbGwgdW5hbWUgLXMpLERhcndpbikKLSsgICAgQ0ZMQUdTID89IC1PMiAtSS9vcHQvWDExL2lu Y2x1ZGUKLSsgICAgTEZMQUdTID89IC1ML29wdC9YMTEvbGliIC1sR0wgLWxYMTEKLSsgICAgUFlU SE9OID0gcHl0aG9uMi43IC1tIHB5X2NvbXBpbGUKLSsgICAgU0VEID0gc2VkIC1pICcnIC1lCi0r ZWxzZQotKyAgICBDRkxBR1MgPz0gLU8yIAotKyAgICBDRkxBR1MgPz0gLWxHTCAtbFgxMQotKyAg ICBQWVRIT04gPSBweXRob24yIC1tIHB5X2NvbXBpbGUKLSsgICAgU0VEID0gc2VkIC1pCi0rZW5k aWYKLSBDQyA9IGdjYyAkKENGTEFHUykKLS1QWVRIT04gPSBweXRob24yIC1tIHB5X2NvbXBpbGUK LSBHWklQID0gZ3ppcAotIFNIRUxMIDo9IC9iaW4vYmFzaAotIAotQEAgLTQ1LDE0ICs1NCwxNCBA QCBjbGVhbjoKLSAJJChSTSkgLi9DaGFuZ2VMb2cKLSAKLSBidWlsZDoKLS0JJChDQykgLi9zcmMv Y2hlY2tfZGlyZWN0X3JlbmRlcmluZy5jIC1vIC4vYmluL3BsYXlvbmxpbnV4LWNoZWNrX2RkIC1s R0wgLWxYMTEKLSsJJChDQykgLi9zcmMvY2hlY2tfZGlyZWN0X3JlbmRlcmluZy5jIC1vIC4vYmlu L3BsYXlvbmxpbnV4LWNoZWNrX2RkICQoTEZMQUdTKQotIAkkKFBZVEhPTikgLi9weXRob24vKi5w eQotIAkkKFBZVEhPTikgLi9weXRob24vbGliLyoucHkKLSAJZWNobyAtZSAnIyEvYmluL2Jhc2hc bkdES19CQUNLRU5EPXgxMSAke3NoYXJlZGlyfS9wbGF5b25saW51eC9wbGF5b25saW51eCAiJCRA IlxuZXhpdCAwJyA+IC4vYmluL3BsYXlvbmxpbnV4Ci0gCWVjaG8gLWUgJyMhL2Jpbi9iYXNoXG4k e3NoYXJlZGlyfS9wbGF5b25saW51eC9wbGF5b25saW51eC1wa2cgIiQkQCJcbmV4aXQgMCcgPiAu L2Jpbi9wbGF5b25saW51eC1wa2cKLSAJY2htb2QgK3ggLi9iaW4vcGxheW9ubGludXgKLSAJY2ht b2QgK3ggLi9iaW4vcGxheW9ubGludXgtcGtnCi0tCXNlZCAtaSAncy9cKFxbIkRFQklBTl9QQUNL QUdFIlxdXHMqPVxzKlwpIkZBTFNFIi9cMSJUUlVFIi8nIFwKLSsJJChTRUQpICdzL1woXFsiREVC SUFOX1BBQ0tBR0UiXF1ccyo9XHMqXCkiRkFMU0UiL1wxIlRSVUUiLycgXAotIAkJLi9weXRob24v bGliL1ZhcmlhYmxlcy5weQotIAotIGluc3RhbGw6Ci1AQCAtODEsMyArOTAsNCBAQCBjaGFuZ2Vs b2c6Ci0gCShHSVRfRElSPS5naXQgZ2l0IGxvZyA+IC5jaGFuZ2Vsb2cudG1wICYmIG12IC5jaGFu Z2Vsb2cudG1wIENoYW5nZUxvZzsgcm0gLWYgLmNoYW5nZWxvZy50bXApIHx8ICh0b3VjaCBDaGFu Z2VMb2c7IGVjaG8gJ2dpdCBkaXJlY3Rvcnkgbm90IGZvdW5kOiBpbnN0YWxsaW5nIHBvc3NpYmx5 IGVtcHR5IGNoYW5nZWxvZy4nID4mMikKLSAKLSAuUEhPTlk6IGFsbCBjbGVhbiBidWlsZCBpbnN0 YWxsIGNoYW5nZWxvZwotKwotCi1Gcm9tIDVjNzNlZDFlZTIzYmEyZTUxNzAxMDk0ZTM2NmY1Y2Jj ZWQxZmViYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXRoaWV1IFBhcmVudCA8 bWF0aC5wYXJlbnRAZ21haWwuY29tPgotRGF0ZTogVHVlLCAyMCBEZWMgMjAyMiAxMDoyMDoyNSAr MDEwMAotU3ViamVjdDogW1BBVENIIDIzLzMzXSBVc2UgbW9yZSBwb3dlcmZ1bCBkaXNjcmV0ZSBH UFUgaWYgYXZhaWxhYmxlCi0KLVNlZSBodHRwczovL3NwZWNpZmljYXRpb25zLmZyZWVkZXNrdG9w Lm9yZy9kZXNrdG9wLWVudHJ5LXNwZWMvbGF0ZXN0L2FyMDFzMDYuaHRtbAotLS0tCi0gZXRjL1Bs YXlPbkxpbnV4LmRlc2t0b3AgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykK LQotZGlmZiAtLWdpdCBhL2V0Yy9QbGF5T25MaW51eC5kZXNrdG9wIGIvZXRjL1BsYXlPbkxpbnV4 LmRlc2t0b3AKLWluZGV4IDQ5MDEwOGMxMS4uNTNjZDQyZjk0IDEwMDY0NAotLS0tIGEvZXRjL1Bs YXlPbkxpbnV4LmRlc2t0b3AKLSsrKyBiL2V0Yy9QbGF5T25MaW51eC5kZXNrdG9wCi1AQCAtNiwz ICs2LDQgQEAgVHlwZT1BcHBsaWNhdGlvbgotIEV4ZWM9cGxheW9ubGludXggJUYKLSBJY29uPXBs YXlvbmxpbnV4Ci0gQ2F0ZWdvcmllcz1VdGlsaXR5O0VtdWxhdG9yOwotK1ByZWZlcnNOb25EZWZh dWx0R1BVPXRydWUKLQotRnJvbSA3M2ZmMWRmOTI0YzFiN2JkYzRlOTNhNWEzMjhiMjg3MDk3ZDhj Y2M0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogYW5kcmV5IDwzMjk4ODMwNSt2b3N0 b2swMUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBTYXQsIDMxIERlYyAyMDIyIDIz OjE2OjE4ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjQvMzNdIEJVRyBGSVg6IENGTEFHUyByZW5h bWVkIHRvIExGTEFHUyBpbiBNYWtlZmlsZS4KLQotLS0tCi0gTWFrZWZpbGUgfCAyICstCi0gMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQg YS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAxMTVkMjY5OGMuLjRjMDhhOTZmZSAxMDA2NDQK LS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTI3LDcgKzI3LDcgQEAgaWZlcSAo JChzaGVsbCB1bmFtZSAtcyksRGFyd2luKQotICAgICBTRUQgPSBzZWQgLWkgJycgLWUKLSBlbHNl Ci0gICAgIENGTEFHUyA/PSAtTzIgCi0tICAgIENGTEFHUyA/PSAtbEdMIC1sWDExCi0rICAgIExG TEFHUyA/PSAtbEdMIC1sWDExCi0gICAgIFBZVEhPTiA9IHB5dGhvbjIgLW0gcHlfY29tcGlsZQot ICAgICBTRUQgPSBzZWQgLWkKLSBlbmRpZgotCi1Gcm9tIGQ2Y2Q3ZmY2OTIyOGRhODhhZDkwNzQz YzdkNjUyMjgxOTQ5MzgwMzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOcmV6aW5v cm4gPG5yZXppbm9ybkBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE5IEp1biAyMDIzIDA3OjQ5OjIz IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjUvMzNdIEZpeCBNYWMgV0lORSBWZXJzaW9uRmV0Y2hl ciBhbmQgYnVtcCB2ZXJzaW9uaW5nIHRvCi0gNC40LjMKLQotLS0tCi0gcHl0aG9uL2xpYi9WYXJp YWJsZXMucHkgICAgICAgICAgICAgICAgICAgICB8IDUgKysrLS0KLSBweXRob24vd2luZV92ZXJz aW9ucy9XaW5lVmVyc2lvbnNGZXRjaGVyLnB5IHwgNyArKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2Vk LCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9weXRob24v bGliL1ZhcmlhYmxlcy5weSBiL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5Ci1pbmRleCBkYmUyYWI3 MTkuLjI2ZTIzNGE1MyAxMDA3NTUKLS0tLSBhL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5Ci0rKysg Yi9weXRob24vbGliL1ZhcmlhYmxlcy5weQotQEAgLTE3LDcgKzE3LDcgQEAKLSBvcy5lbnZpcm9u WyJQT0xfUE9SVCJdID0gIjAiCi0gb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSA9IG9zLnBhdGgu cmVhbHBhdGgob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykrIi8uLi8uLi8uLi8iKQotIG9zLmVu dmlyb25bIlNJVEUiXSA9ICJodHRwOi8vcmVwb3NpdG9yeS5wbGF5b25saW51eC5jb20iCi0tb3Mu ZW52aXJvblsiVkVSU0lPTiJdID0gIjQuNC4xIgotK29zLmVudmlyb25bIlZFUlNJT04iXSA9ICI0 LjQuMyIKLSBvcy5lbnZpcm9uWyJQT0xfSUQiXSA9IHN0cihyYW5kb20ucmFuZGludCgxLCAxMDAw MDAwMDApKQotIG9zLmVudmlyb25bIkdFQ0tPX1NJVEUiXSA9ICJodHRwOi8vd2luZS5wbGF5b25s aW51eC5jb20vZ2Vja28iCi0gb3MuZW52aXJvblsiTU9OT19TSVRFIl0gPSAiaHR0cDovL3dpbmUu cGxheW9ubGludXguY29tL21vbm8iCi1AQCAtMzksNiArMzksNyBAQAotICAgICB3aW5kb3dzX2Fk ZF9wbGF5b25tYWMgPSAxCi0gICAgIHdpZGdldF9ib3JkZXJzID0gd3guU0lNUExFX0JPUkRFUgot ICAgICBvc19uYW1lID0gImRhcndpbiIKLSsgICAgY2FfZmlsZSA9ICcuLi8uLi9saWIvcHl0aG9u My44L2NlcnRpZmkvY2FjZXJ0LnBlbScgCi0gICAgIG9zLmVudmlyb25bIlBPTF9XR0VUIl0gPSAi d2dldCAtLXByZWZlci1mYW1pbHk9SVB2NCAtcSAtLW5vLWNoZWNrLWNlcnRpZmljYXRlIgotIAot ICMgVmFyaWFibGVzIFBsYXlPbkxpbnV4Ci1AQCAtMTE5LDcgKzEyMCw3IEBACi0gCi0gICAgIG9z LmVudmlyb25bIlBBVEgiXSA9IG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L3dp bmUvYmluOiIgKyBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC9pbWFnZV9tYWdp Y2svYmluOiIgKyBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC90b29scy9iaW4v OiIgKyBvcy5lbnZpcm9uWyJQQVRIIl0KLSAKLS0gICAgb3MuZW52aXJvblsiV1JJVEVfTEQiXSA9 IG9zLmVudmlyb25bIkxEX0xJQlJBUllfUEFUSCJdCi0rICAgIG9zLmVudmlyb25bIldSSVRFX0xE Il0gPSBvcy5lbnZpcm9uWyJMRF9MSUJSQVJZX1BBVEgiXSArICI6IiArIG9zLmVudmlyb25bIlBM QVlPTkxJTlVYIl0rIi8uLi91bml4L3dpbmUvbGliIgotICAgICBvcy5lbnZpcm9uWyJEWUxEX0ZB TExCQUNLX0xJQlJBUllfUEFUSCJdID0gIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91 bml4L3dpbmUvbGliIgotICAgICBvcy5lbnZpcm9uWyJXUklURV9EWUxEX0ZBTExCQUNLX0xJQlJB UllfUEFUSCJdID0gIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L3dpbmUvbGli IgotICAgICBvcy5lbnZpcm9uWyJGUkVFVFlQRV9QUk9QRVJUSUVTIl09InRydWV0eXBlOmludGVy cHJldGVyLXZlcnNpb249MzUiCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2lu ZVZlcnNpb25zRmV0Y2hlci5weSBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc0Zl dGNoZXIucHkKLWluZGV4IGZkNzU4Nzk4ZS4uNjE2MDUyMjdjIDEwMDY0NAotLS0tIGEvcHl0aG9u L3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zRmV0Y2hlci5weQotKysrIGIvcHl0aG9uL3dpbmVf dmVyc2lvbnMvV2luZVZlcnNpb25zRmV0Y2hlci5weQotQEAgLTE4LDEwICsxOCwxMyBAQCBkZWYg ZmV0Y2hfYWxsX2F2YWlsYWJsZV93aW5lX3ZlcnNpb24oc2VsZiwgY2FsbGJhY2ssIGVycm9yKToK LSAKLSAgICAgZGVmIF9zeW5jX2ZldGNoX2FsbF9hdmFpbGFibGVfd2luZV92ZXJzaW9ucyhzZWxm LCBjYWxsYmFjaywgZXJyb3IpOgotICAgICAgICAgd2luZV92ZXJzaW9uX3VybCA9ICJodHRwczov L3Bob2VuaWNpcy5wbGF5b25saW51eC5jb20vaW5kZXgucGhwL3dpbmU/b3M9JXMiICUgc2VsZi5v cGVyYXRpbmdfc3lzdGVtCi0tICAgICAgICBwcmludCgiRG9ud2xvYWRpbmcgJXMgIiAlIHdpbmVf dmVyc2lvbl91cmwpCi0rICAgICAgICBwcmludCgiRG93bmxvYWRpbmcgJXMgIiAlIHdpbmVfdmVy c2lvbl91cmwpCi0gICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgcmVxdWVzdCA9IHVybGxpYi5y ZXF1ZXN0LlJlcXVlc3Qod2luZV92ZXJzaW9uX3VybCwgTm9uZSwgeydVc2VyLUFnZW50JzogVmFy aWFibGVzLnVzZXJBZ2VudH0pCi0tICAgICAgICAgICAgaGFuZGxlID0gdXJsbGliLnJlcXVlc3Qu dXJsb3BlbihyZXF1ZXN0LCB0aW1lb3V0PTUpCi0rICAgICAgICAgICAgaWYgc2VsZi5vcGVyYXRp bmdfc3lzdGVtID09ICdkYXJ3aW4nOgotKyAgICAgICAgICAgICAgICBoYW5kbGUgPSB1cmxsaWIu cmVxdWVzdC51cmxvcGVuKHJlcXVlc3QsIGNhZmlsZT0nLi4vLi4vbGliL3B5dGhvbjMuOC9jZXJ0 aWZpL2NhY2VydC5wZW0nLCB0aW1lb3V0PTUpCi0rICAgICAgICAgICAgZWxzZToKLSsgICAgICAg ICAgICAgICAgaGFuZGxlID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXF1ZXN0LCB0aW1lb3V0 PTUpCi0gICAgICAgICAgICAgY2FsbGJhY2soc2VsZi5fY29udmVydF9waG9lbmljaXNfd2luZV92 ZXJzaW9uc190b192NChqc29uLmxvYWQoaGFuZGxlKSkpCi0gICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6Ci0gICAgICAgICAgICAgZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLQot RnJvbSBkMzJjMDEyYWM3NGI2YjA1ZGY4MTVkYWM1ZGE5NDhiNjQ4ZDA5OTA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogIkRyLiBOaWNrIiA8ZGFzLWludGVuc2l0eUB1c2Vycy5ub3Jl cGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBTdW4sIDIgSnVsIDIwMjMgMTc6MzE6MjYgLTA0MDAKLVN1 YmplY3Q6IFtQQVRDSCAyNi8zM10gRml4ZWQgZGVidWcgbWVzc2FnZSBpbiBQT0xfV2luZV9TZXRW ZXJzaW9uRW52IHRvIGxvZwotIHVzaW5nIFBPTF9EZWJ1Z19NZXNzYWdlCi0KLS0tLQotIGxpYi93 aW5lLmxpYiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRp b24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYi93aW5lLmxpYiBiL2xpYi93aW5lLmxpYgotaW5kZXgg NDM0NzVmMzEwLi4zYmYxMTg3NjUgMTAwNzU1Ci0tLS0gYS9saWIvd2luZS5saWIKLSsrKyBiL2xp Yi93aW5lLmxpYgotQEAgLTgzNyw3ICs4MzcsNyBAQCBQT0xfV2luZV9TZXRWZXJzaW9uRW52KCkg ewotICAgICAgICAgUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24gIiRQT0xfV0lORVZFUlNJT04iCi0g ICAgICAgICBbWyAiJD8iID09IDIgXV0gJiYgcmV0dXJuIDAKLSAgICAgICBmaQotLSAgICAgIGVj aG8gIlNldHRpbmcgcGF0aHMuLi4iCi0rICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcg cGF0aHMuLi4iCi0gICAgICAgZXhwb3J0IFBBVEg9IiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04v YmluLzokUEFUSCIKLSAgICAgICBbICIkUE9MX09TIiA9ICJNYWMiIF0gJiYgZXhwb3J0IERZTERf RkFMTEJBQ0tfTElCUkFSWV9QQVRIPSIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2xpYi8iCi0g ICAgICAgZXhwb3J0IEZSRUVUWVBFX1BST1BFUlRJRVM9InRydWV0eXBlOmludGVycHJldGVyLXZl cnNpb249MzUiCi0KLUZyb20gZmI4ODEzNzI4Njc5OGQ0OTI2OTFhOTVlYTBjMzZiMzE0OGZkMDI5 MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEppLUhvIExlZSA8c2VhcmNoNUBnbWFp bC5jb20+Ci1EYXRlOiBUaHUsIDEwIEF1ZyAyMDIzIDE3OjI5OjE5ICswOTAwCi1TdWJqZWN0OiBb UEFUQ0ggMjcvMzNdIFBhdGNoIGZ1bmN0aW9uIGV4ZWN1dGlvbiBlcnJvciBjYXVzZWQgYnkgdGhl IGRlbGV0aW9uCi0gb2YgdGhlIHdoaWNoIGNvbW1hbmQgaW4gRGViaWFuIDEyCi0KLS0tLQotIGJh c2gvZmluZF9weXRob24gICAgIHwgMiArLQotIGxpYi9wbGF5b25saW51eC5saWIgIHwgOCArKysr LS0tLQotIGxpYi9zY3JpcHRzLmxpYiAgICAgIHwgMiArLQotIGxpYi92YXJpYWJsZXMgICAgICAg IHwgNiArKystLS0KLSBsaWIvd2luZS5saWIgICAgICAgICB8IDQgKystLQotIHB5dGhvbi9tYWlu d2luZG93LnB5IHwgMyArKy0KLSA2IGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEy IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmFzaC9maW5kX3B5dGhvbiBiL2Jhc2gvZmlu ZF9weXRob24KLWluZGV4IDgxMWI2YzA0NC4uNWNjZjE5MTI1IDEwMDc1NQotLS0tIGEvYmFzaC9m aW5kX3B5dGhvbgotKysrIGIvYmFzaC9maW5kX3B5dGhvbgotQEAgLTI2LDcgKzI2LDcgQEAgc2Vh cmNoX3B5dGhvbiAoKSB7Ci0gCQlmaSAgICAgICAgICAgICAgICAgICAKLSAJCi0gCQllY2hvIC1u ICJMb29raW5nIGZvciAkUE9MX1BZVEhPTi4uLiAiIDE+JjIKLS0JCWlmIFsgIiQod2hpY2ggJFBP TF9QWVRIT04pIiBdOyB0aGVuCi0rCQlpZiBbICIkKGNvbW1hbmQgLXYgJFBPTF9QWVRIT04pIiBd OyB0aGVuCi0gCQkJbG9jYWwgVmVyc2lvbj0kKCRQT0xfUFlUSE9OIC0tdmVyc2lvbiAyPiYxIHx0 YWlsIC1uIDF8c2VkIC1lICdzL15QeXRob24gLy8nKQotIAkJCWVjaG8gLW4gIiRWZXJzaW9uIC0g IiAxPiYyCi0gCQkJY2FzZSAiJFZlcnNpb24iIGluCi1kaWZmIC0tZ2l0IGEvbGliL3BsYXlvbmxp bnV4LmxpYiBiL2xpYi9wbGF5b25saW51eC5saWIKLWluZGV4IDEwYmU2YjQ4OC4uZDI4NDY2Zjhl IDEwMDc1NQotLS0tIGEvbGliL3BsYXlvbmxpbnV4LmxpYgotKysrIGIvbGliL3BsYXlvbmxpbnV4 LmxpYgotQEAgLTkxNiwxNiArOTE2LDE2IEBAIFBPTF9TdWRvKCkKLSAJCWZpCi0gCQlpZiBbICIk UE9MX09TIiA9ICJMaW51eCIgXTsgdGhlbgotIAkJCSMgTm93LCB3ZSBkZXRlY3Qgd2hhdCBzdWRv IHRvIHVzZQotLQkJCWlmIHdoaWNoIGdrc3VkbzsgdGhlbgotKwkJCWlmIGNvbW1hbmQgLXYgZ2tz dWRvOyB0aGVuCi0gCQkJCVNVRE9fQ09NTUFORD0iZ2tzdWRvIC0tIgotIAkJCQl1bnNldCBna3N1 ZG8KLS0JCQllbGlmIHdoaWNoIGdrc3U7IHRoZW4KLSsJCQllbGlmIGNvbW1hbmQgLXYgZ2tzdTsg dGhlbgotIAkJCQlTVURPX0NPTU1BTkQ9Imdrc3UgLS0iCi0gCQkJCXVuc2V0IGdrc3UKLS0JCQll bGlmIHdoaWNoIGtkZXN1OyB0aGVuCi0rCQkJZWxpZiBjb21tYW5kIC12IGtkZXN1OyB0aGVuCi0g CQkJCVNVRE9fQ09NTUFORD0ia2Rlc3UgLS0iCi0gCQkJCXVuc2V0IGtkZXN1Ci0tCQkJZWxpZiB3 aGljaCBzdWRvOyB0aGVuCi0rCQkJZWxpZiBjb21tYW5kIC12IHN1ZG87IHRoZW4KLSAJCQkJU1VE T19DT01NQU5EPSIkUE9MX1RFUk0gLWUgc3VkbyIKLSAJCQkJdW5zZXQgc3VkbwotIAkJCWVsc2UK LWRpZmYgLS1naXQgYS9saWIvc2NyaXB0cy5saWIgYi9saWIvc2NyaXB0cy5saWIKLWluZGV4IDRm ZDNmYjVjNS4uMjNjNTc2NjEzIDEwMDc1NQotLS0tIGEvbGliL3NjcmlwdHMubGliCi0rKysgYi9s aWIvc2NyaXB0cy5saWIKLUBAIC03MzcsNyArNzM3LDcgQEAgUE9MX1N5c3RlbV9FeHRyYWN0U2lu Z2xlRmlsZSAoKQotICAgICBsb2NhbCBhcmNoaXZlbmFtZT1gYmFzZW5hbWUgIiRhcmNoaXZlImAK LSAgICAgbG9jYWwgZmlsZW5hbWU9YGJhc2VuYW1lICIkZmlsZSJgCi0gICAgIGxvY2FsIHN6cGlk Ci0tICAgIGxvY2FsIHN6aXA9YHdoaWNoIDd6YAotKyAgICBsb2NhbCBzemlwPWBjb21tYW5kIC12 IDd6YAotIAotICAgICBQT0xfRGVidWdfTWVzc2FnZSAiRXh0cmFjdGluZyBzaW5nbGUgZmlsZSA6 IFwiJGFyY2hpdmVcIiwgXCIkZmlsZVwiLCBcIiRkZXN0XCIiCi0gCi1kaWZmIC0tZ2l0IGEvbGli L3ZhcmlhYmxlcyBiL2xpYi92YXJpYWJsZXMKLWluZGV4IDljMTZmZTFhNy4uMTMwYWNjODU2IDEw MDc1NQotLS0tIGEvbGliL3ZhcmlhYmxlcwotKysrIGIvbGliL3ZhcmlhYmxlcwotQEAgLTMxLDcg KzMxLDcgQEAgUE9MX0NvbmZpZ19wUmVhZCAoKXsgY2F0ICIkUE9MX1VTRVJfUk9PVC9wbGF5b25s aW51eC5jZmciIDI+IC9kZXYvbnVsbCB8IGdyZXAgIl4KLSBhbGlhcyBmaW5kPSJmaW5kIC1IIgot IAotICMjIyBTZWN1cml0eSBmZWF0dXJlCi0tWyAiJCh3aGljaCBzdWRvKSIgXSAmJiBzdWRvIC1r IDI+IC9kZXYvbnVsbAotK1sgIiQoY29tbWFuZCAtdiBzdWRvKSIgXSAmJiBzdWRvIC1rIDI+IC9k ZXYvbnVsbAotIAotICMjIyBUZXJtaW5hbAotICMgVXNlciBvdmVycmlkZSwgbXVzdCBzdXBwb3J0 IC1UIHRvIHNldCB0aXRsZSBhbmQgLWUgdG8gcnVuIGEgY29tbWFuZAotQEAgLTUzLDcgKzUzLDcg QEAgZmkKLSBleHBvcnQgUE9MX1RFUk0KLSAKLSAjIyMgRGVza3RvcAotLVsgIiQod2hpY2ggeGRn LXVzZXItZGlyKSIgXSAmJiBleHBvcnQgREVTS1RPUD0iJCh4ZGctdXNlci1kaXIgREVTS1RPUCki IHx8IGV4cG9ydCBERVNLVE9QPSIkSE9NRS9EZXNrdG9wIgotK1sgIiQoY29tbWFuZCAtdiB4ZGct dXNlci1kaXIpIiBdICYmIGV4cG9ydCBERVNLVE9QPSIkKHhkZy11c2VyLWRpciBERVNLVE9QKSIg fHwgZXhwb3J0IERFU0tUT1A9IiRIT01FL0Rlc2t0b3AiCi0gCi0gIyMjIE92ZXJyaWRlIH4vLndn ZXRyYwotIGV4cG9ydCBXR0VUUkM9IiRQT0xfVVNFUl9ST09UL2NvbmZpZ3VyYXRpb25zL3dnZXRy YyIKLUBAIC03MCw3ICs3MCw3IEBAIGVsc2UKLSAJZXZhbF9nZXR0ZXh0KCkgeyBwcmludGYgIiRA IjsgfQotIGZpCi0gCi0td2hpY2ggc2hhc3VtID4gL2Rldi9udWxsIDI+IC9kZXYvbnVsbCB8fCBz aGFzdW0gKCkgeyBzaGExc3VtICIkQCI7IH0KLStjb21tYW5kIC12IHNoYXN1bSA+IC9kZXYvbnVs bCAyPiAvZGV2L251bGwgfHwgc2hhc3VtICgpIHsgc2hhMXN1bSAiJEAiOyB9Ci0gCi0gCi0gaWYg WyAiJFBPTF9PUyIgPT0gIkxpbnV4IiBdCi1kaWZmIC0tZ2l0IGEvbGliL3dpbmUubGliIGIvbGli L3dpbmUubGliCi1pbmRleCAzYmYxMTg3NjUuLjg3NTZjZGNkMyAxMDA3NTUKLS0tLSBhL2xpYi93 aW5lLmxpYgotKysrIGIvbGliL3dpbmUubGliCi1AQCAtOTg5LDEzICs5ODksMTMgQEAgUE9MX1dp bmVfUHJlZml4Q3JlYXRlKCkgewotIAotICAgICAgIFBPTF9EZWJ1Z19Jbml0UHJlZml4Ci0gCi0t ICAgICAgd2hpY2ggd2luZXByZWZpeGNyZWF0ZSAmJiBbICIkKFBPTF9NRDVfZmlsZSAiJCh3aGlj aCB3aW5lcHJlZml4Y3JlYXRlKSIpIiAhPSAiNWMwZWU5MDY4Mjc0NmU4MTE2OThhNTM0MTViNDc2 NWQiIF0gJiYgWyAhICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUgfCBncmVwICRBUFBMSUNBVElP Tl9USVRMRSkiID0gIiIgXSAmJiB3aW5lIHdpbmVwcmVmaXhjcmVhdGUKLSsgICAgICBjb21tYW5k IC12IHdpbmVwcmVmaXhjcmVhdGUgJiYgWyAiJChQT0xfTUQ1X2ZpbGUgIiQod2hpY2ggd2luZXBy ZWZpeGNyZWF0ZSkiKSIgIT0gIjVjMGVlOTA2ODI3NDZlODExNjk4YTUzNDE1YjQ3NjVkIiBdICYm IFsgISAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRlIHwgZ3JlcCAkQVBQTElDQVRJT05fVElUTEUp IiA9ICIiIF0gJiYgd2luZSB3aW5lcHJlZml4Y3JlYXRlCi0gICAgICAgd2luZSB3aW5lYm9vdAot ICAgICBmaQotICAgZmkKLSAKLSAgICMgTWFrZSBzdXJlIHRoYXQgLnJlZyBmaWxlcyBhcmUgY3Jl YXRlZAotLSAgaWYgd2hpY2ggd2luZXNlcnZlcjsgdGhlbgotKyAgaWYgY29tbWFuZCAtdiB3aW5l c2VydmVyOyB0aGVuCi0gICAgIHdpbmVzZXJ2ZXIgLXcKLSAgIGVsc2UKLSAgICAgUE9MX0RlYnVn X01lc3NhZ2UgIldhcm5pbmcsIHdpbmVzZXJ2ZXIgbm90IGZvdW5kIgotZGlmZiAtLWdpdCBhL3B5 dGhvbi9tYWlud2luZG93LnB5IGIvcHl0aG9uL21haW53aW5kb3cucHkKLWluZGV4IGM4ZmUxMTE2 MC4uYzM3OWQyYWU1IDEwMDc1NQotLS0tIGEvcHl0aG9uL21haW53aW5kb3cucHkKLSsrKyBiL3B5 dGhvbi9tYWlud2luZG93LnB5Ci1AQCAtMTIxNiw3ICsxMjE2LDggQEAgZGVmIE9uSW5pdChzZWxm KToKLSAgICAgZGVmIF9leGVjdXRhYmxlRm91bmQoc2VsZiwgZXhlY3V0YWJsZSk6Ci0gICAgICAg ICBkZXZudWxsID0gb3BlbignL2Rldi9udWxsJywgJ3diJykKLSAgICAgICAgIHRyeToKLS0gICAg ICAgICAgICByZXR1cm5jb2RlID0gc3VicHJvY2Vzcy5jYWxsKFsid2hpY2giLCBleGVjdXRhYmxl XSwgc3Rkb3V0PWRldm51bGwpCi0rICAgICAgICAgICAgZXhlY3V0YWJsZV9wYXRoID0gc2h1dGls LndoaWNoKGV4ZWN1dGFibGUpCi0rICAgICAgICAgICAgcmV0dXJuY29kZSA9IHN1YnByb2Nlc3Mu Y2FsbChleGVjdXRhYmxlX3BhdGgsIHN0ZG91dD1kZXZudWxsKQotICAgICAgICAgICAgIHJldHVy biAocmV0dXJuY29kZSA9PSAwKQotICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgIHJldHVy biBGYWxzZQotCi1Gcm9tIDVhMjkyMWVlMTlkMzUyZGZlMjVhOGMwYzIxMGNkYzI0MDRmYmYwMTcg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKaWhvIFBlcnN5IExlZSA8c2VhcmNoNUBn bWFpbC5jb20+Ci1EYXRlOiBUaHUsIDEwIEF1ZyAyMDIzIDE3OjU1OjUzICswOTAwCi1TdWJqZWN0 OiBbUEFUQ0ggMjgvMzNdIFVwZGF0ZSBtYWlud2luZG93LnB5Ci0KLW1pc3NpbmcgaW1wb3J0IGFk ZAotLS0tCi0gcHl0aG9uL21haW53aW5kb3cucHkgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3B5dGhvbi9tYWlud2luZG93LnB5IGIvcHl0aG9u L21haW53aW5kb3cucHkKLWluZGV4IGMzNzlkMmFlNS4uY2JiNzZkZGExIDEwMDc1NQotLS0tIGEv cHl0aG9uL21haW53aW5kb3cucHkKLSsrKyBiL3B5dGhvbi9tYWlud2luZG93LnB5Ci1AQCAtMjcs NiArMjcsNyBAQAotIGltcG9ydCB0aW1lCi0gaW1wb3J0IHVybGxpYi5wYXJzZQotIGltcG9ydCB3 ZWJicm93c2VyCi0raW1wb3J0IHNodGlsCi0gCi0gdHJ5OgotICAgICBvcy5lbnZpcm9uWyJQT0xf T1MiXQotCi1Gcm9tIDVjMjYzYmYwYzMyYjk5OWNkYjYzNjU1NWQwZGU4NGFmNjY1NzM5NmUgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKaWhvIFBlcnN5IExlZSA8c2VhcmNoNUBnbWFp bC5jb20+Ci1EYXRlOiBUaHUsIDEwIEF1ZyAyMDIzIDE3OjU2OjU0ICswOTAwCi1TdWJqZWN0OiBb UEFUQ0ggMjkvMzNdIFVwZGF0ZSBtYWlud2luZG93LnB5Ci0KLW1pc3NpbmcgbW9kdWxlIGltcG9y dCBhbmQgaW1wb3J0IG5hbWUgZml4LgotLS0tCi0gcHl0aG9uL21haW53aW5kb3cucHkgfCAyICst Ci0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYg LS1naXQgYS9weXRob24vbWFpbndpbmRvdy5weSBiL3B5dGhvbi9tYWlud2luZG93LnB5Ci1pbmRl eCBjYmI3NmRkYTEuLjdiYzY5NWE5OCAxMDA3NTUKLS0tLSBhL3B5dGhvbi9tYWlud2luZG93LnB5 Ci0rKysgYi9weXRob24vbWFpbndpbmRvdy5weQotQEAgLTI3LDcgKzI3LDcgQEAKLSBpbXBvcnQg dGltZQotIGltcG9ydCB1cmxsaWIucGFyc2UKLSBpbXBvcnQgd2ViYnJvd3NlcgotLWltcG9ydCBz aHRpbAotK2ltcG9ydCBzaHV0aWwKLSAKLSB0cnk6Ci0gICAgIG9zLmVudmlyb25bIlBPTF9PUyJd Ci0KLUZyb20gMzk5ZmYyOGRhMTU5MzZjNDRkZGMxMjkwNTc3Yjg0N2QwNWNiNzFiMiBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEppaG8gUGVyc3kgTGVlIDxzZWFyY2g1QGdtYWlsLmNv bT4KLURhdGU6IFR1ZSwgMTUgQXVnIDIwMjMgMTU6MDQ6NDYgKzA5MDAKLVN1YmplY3Q6IFtQQVRD SCAzMC8zM10gVXBkYXRlIHdpbmUubGliCi0KLWZpeCBtaXNzaW5nIHdoaWNoIGNvbW1hbmQKLS0t LQotIGxpYi93aW5lLmxpYiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYi93aW5lLmxpYiBiL2xpYi93aW5lLmxp YgotaW5kZXggODc1NmNkY2QzLi4zYWU5MTZiMTcgMTAwNzU1Ci0tLS0gYS9saWIvd2luZS5saWIK LSsrKyBiL2xpYi93aW5lLmxpYgotQEAgLTk4OSw3ICs5ODksNyBAQCBQT0xfV2luZV9QcmVmaXhD cmVhdGUoKSB7Ci0gCi0gICAgICAgUE9MX0RlYnVnX0luaXRQcmVmaXgKLSAKLS0gICAgICBjb21t YW5kIC12IHdpbmVwcmVmaXhjcmVhdGUgJiYgWyAiJChQT0xfTUQ1X2ZpbGUgIiQod2hpY2ggd2lu ZXByZWZpeGNyZWF0ZSkiKSIgIT0gIjVjMGVlOTA2ODI3NDZlODExNjk4YTUzNDE1YjQ3NjVkIiBd ICYmIFsgISAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRlIHwgZ3JlcCAkQVBQTElDQVRJT05fVElU TEUpIiA9ICIiIF0gJiYgd2luZSB3aW5lcHJlZml4Y3JlYXRlCi0rICAgICAgY29tbWFuZCAtdiB3 aW5lcHJlZml4Y3JlYXRlICYmIFsgIiQoUE9MX01ENV9maWxlICIkKGNvbW1hbmQgLXYgd2luZXBy ZWZpeGNyZWF0ZSkiKSIgIT0gIjVjMGVlOTA2ODI3NDZlODExNjk4YTUzNDE1YjQ3NjVkIiBdICYm IFsgISAiJChjb21tYW5kIC12IHdpbmVwcmVmaXhjcmVhdGUgfCBncmVwICRBUFBMSUNBVElPTl9U SVRMRSkiID0gIiIgXSAmJiB3aW5lIHdpbmVwcmVmaXhjcmVhdGUKLSAgICAgICB3aW5lIHdpbmVi b290Ci0gICAgIGZpCi0gICBmaQotCi1Gcm9tIDc5YzUxM2ZhOGExOTM4ZTU1YmUwYTIzOTEyMTE3 NmYxNDE1MDQ5ZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgU2NoZWNr IDxyb2JlcnQtc2NoZWNrQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IFN1biwgMjYg TWF5IDIwMjQgMjA6MzI6NTMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzMS8zM10gUmVtb3ZlIHVu dXNlZCBpbXBvcnQgb2YgZGVwcmVjYXRlZCBQeXRob24KLSBhc3luY29yZS5kaXNwYXRjaGVyCi0K LS0tLQotIHB5dGhvbi9vcHRpb25zLnB5IHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRp b24oLSkKLQotZGlmZiAtLWdpdCBhL3B5dGhvbi9vcHRpb25zLnB5IGIvcHl0aG9uL29wdGlvbnMu cHkKLWluZGV4IGY0MGYyNmE3MC4uZTE4ZGRiMzJiIDEwMDc1NQotLS0tIGEvcHl0aG9uL29wdGlv bnMucHkKLSsrKyBiL3B5dGhvbi9vcHRpb25zLnB5Ci1AQCAtMTgsNyArMTgsNiBAQAotICMgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLiwKLSAjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg TUEgMDIxMTAtMTMwMSBVU0EuCi0gCi0tZnJvbSBhc3luY29yZSBpbXBvcnQgZGlzcGF0Y2hlcgot IGltcG9ydCBvcywgc3VicHJvY2VzcywgZ2V0b3B0LCBzeXMsIHVybGxpYi5yZXF1ZXN0LCBzaWdu YWwsIHNvY2tldAotIGltcG9ydCB3eCwgdGltZSwgcmUKLSBpbXBvcnQgd2ViYnJvd3Nlciwgc2h1 dGlsCi0KLUZyb20gMjI5NTk0OGIzNTZmODQ2MWM1NjQyY2Y5NmRiYjQzZDAzYzYyOTIxMCBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBTY2hlY2sgPHJvYmVydC1zY2hlY2tA dXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogU3VuLCAyNiBNYXkgMjAyNCAyMTo1Mzoz NCArMDIwMAotU3ViamVjdDogW1BBVENIIDMyLzMzXSBSZXR1cm4gYmFzZWQgb24gc2h1dGlsLndo aWNoKCkgaW5zdGVhZCBvZgotIHN1YnByb2Nlc3MuY2FsbCgpCi0KLS0tLQotIHB5dGhvbi9tYWlu d2luZG93LnB5IHwgNSArLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNCBk ZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3B5dGhvbi9tYWlud2luZG93LnB5IGIvcHl0aG9u L21haW53aW5kb3cucHkKLWluZGV4IDdiYzY5NWE5OC4uMzMxMjk3Zjc4IDEwMDc1NQotLS0tIGEv cHl0aG9uL21haW53aW5kb3cucHkKLSsrKyBiL3B5dGhvbi9tYWlud2luZG93LnB5Ci1AQCAtMTIx NSwxMSArMTIxNSw4IEBAIGRlZiBPbkluaXQoc2VsZik6Ci0gICAgICAgICByZXR1cm4gVHJ1ZQot IAotICAgICBkZWYgX2V4ZWN1dGFibGVGb3VuZChzZWxmLCBleGVjdXRhYmxlKToKLS0gICAgICAg IGRldm51bGwgPSBvcGVuKCcvZGV2L251bGwnLCAnd2InKQotICAgICAgICAgdHJ5OgotLSAgICAg ICAgICAgIGV4ZWN1dGFibGVfcGF0aCA9IHNodXRpbC53aGljaChleGVjdXRhYmxlKQotLSAgICAg ICAgICAgIHJldHVybmNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoZXhlY3V0YWJsZV9wYXRoLCBzdGRv dXQ9ZGV2bnVsbCkKLS0gICAgICAgICAgICByZXR1cm4gKHJldHVybmNvZGUgPT0gMCkKLSsgICAg ICAgICAgICByZXR1cm4gKHNodXRpbC53aGljaChleGVjdXRhYmxlKSBpcyBub3QgTm9uZSkKLSAg ICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAKLQotRnJvbSAxMGY3 ODUzYzg0ZjQ1NmYxOTI4OWMyMmZlMTlhOWE5OWY5NGQ5ZGRhIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogUm9iZXJ0IFNjaGVjayA8cm9iZXJ0QGZlZG9yYXByb2plY3Qub3JnPgotRGF0 ZTogTW9uLCAxNCBPY3QgMjAyNCAwMDowMDo1MiArMDIwMAotU3ViamVjdDogW1BBVENIIDMzLzMz XSBSZXBsYWNlIHBpcGVzLnF1b3RlKCkgZnJvbSBkZXByZWNhdGVkIFB5dGhvbiBwaXBlcwotCi0t LS0KLSBweXRob24vbGliL3BsYXlvbmxpbnV4LnB5IHwgNiArKystLS0KLSAxIGZpbGUgY2hhbmdl ZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcHl0aG9u L2xpYi9wbGF5b25saW51eC5weSBiL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkKLWluZGV4IGZh OWI5MGZiOS4uYjM5ZjhhOWE5IDEwMDc1NQotLS0tIGEvcHl0aG9uL2xpYi9wbGF5b25saW51eC5w eQotKysrIGIvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weQotQEAgLTUsNyArNSw3IEBACi0gCi0g ZnJvbSAuIGltcG9ydCBWYXJpYWJsZXMKLSBpbXBvcnQgb3MKLS1pbXBvcnQgc3VicHJvY2Vzcywg c2hsZXgsIHBpcGVzLCB3eAotK2ltcG9ydCBzdWJwcm9jZXNzLCBzaGxleCwgd3gKLSBpbXBvcnQg bmF0c29ydAotIAotIGRlZiB3aW5wYXRoKHNjcmlwdCwgcGF0aCk6Ci1AQCAtMzczLDcgKzM3Myw3 IEBAIGRlZiBnZXRBcmdzKHNob3J0Y3V0KTogIyBHZXQgcHJlZml4IG5hbWUgZnJvbSBzaG9ydGN1 dAotICAgICB0cnk6Ci0gICAgICAgICBhcmdzID0gc2hsZXguc3BsaXQoZmljaGllcltpXSlbMjot MV0KLSAgICAgICAgICNwcmludCBhcmdzCi0tICAgICAgICBhcmdzID0gIiAiLmpvaW4oWyBwaXBl cy5xdW90ZSh4KSBmb3IgeCBpbiBhcmdzXSkKLSsgICAgICAgIGFyZ3MgPSAiICIuam9pbihbIHNo bGV4LnF1b3RlKHgpIGZvciB4IGluIGFyZ3NdKQotICAgICAgICAgI3ByaW50IGFyZ3MKLSAgICAg ZXhjZXB0OgotICAgICAgICAgYXJncyA9ICIiCi1AQCAtNDMyLDcgKzQzMiw3IEBAIGRlZiB3cml0 ZUFyZ3MoZ2FtZSwgYXJncyk6Ci0gICAgICAgICAgICAgICAgIG9sZF9zdHJpbmcgPSBzaGxleC5z cGxpdChmaWNoaWVyW2ldKQotICAgICAgICAgICAgICAgICBuZXdfc3RyaW5nID0gc2hsZXguc3Bs aXQoc3RyKGFyZ3MpKQotICAgICAgICAgICAgICAgICBuZXdfc3RyaW5nID0gb2xkX3N0cmluZ1sw OjJdICsgbmV3X3N0cmluZwotLSAgICAgICAgICAgICAgICBuZXdfc3RyaW5nID0gIiAiLmpvaW4o WyBwaXBlcy5xdW90ZSh4KSBmb3IgeCBpbiBuZXdfc3RyaW5nXSkKLSsgICAgICAgICAgICAgICAg bmV3X3N0cmluZyA9ICIgIi5qb2luKFsgc2hsZXgucXVvdGUoeCkgZm9yIHggaW4gbmV3X3N0cmlu Z10pCi0gCi0gICAgICAgICAgICAgICAgIG5ld19zdHJpbmcgPSBuZXdfc3RyaW5nKycgIiRAIicK LSAgICAgICAgICAgICAgICAgbGluZS5hcHBlbmQobmV3X3N0cmluZykKCmRpZmYgLS1naXQgYS9w bGF5b25saW51eC00LjQtZ2l0ZmRlMDBmZS5wYXRjaCBiL3BsYXlvbmxpbnV4LTQuNC1naXRmZGUw MGZlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZTk0MWMKLS0t IC9kZXYvbnVsbAorKysgYi9wbGF5b25saW51eC00LjQtZ2l0ZmRlMDBmZS5wYXRjaApAQCAtMCww ICsxLDQ5MTUgQEAKK0Zyb20gOWZmNGI3NjE2OGE3YzY0ZTRhMmRlN2JlNTE1ODYxOGZiYjEyNDJh MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9RdWVudGluPTIwUD1D Mz1BMnJpcz89IDxnaXRodWJAcGxheW9ubGludXguY29tPgorRGF0ZTogU3VuLCAxNyBNYXkgMjAy MCAxNjoxNTozMCArMDIwMAorU3ViamVjdDogW1BBVENIIDAxLzM3XSBVcGRhdGUgQ0hBTkdFTE9H Lm1kCisKKy0tLQorIENIQU5HRUxPRy5tZCB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5z ZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvQ0hBTkdFTE9HLm1kIGIvQ0hBTkdFTE9HLm1kCitp bmRleCBhNTg5NjI1YzMuLmNkZTJkODJjNCAxMDA2NDQKKy0tLSBhL0NIQU5HRUxPRy5tZAorKysr IGIvQ0hBTkdFTE9HLm1kCitAQCAtMSwzICsxLDYgQEAKKysjIDQuNAorKyogUHl0aG9uIDMgc3Vw cG9ydCAKKysKKyAjIDQuMy40CisgKiBGaXhlZCBzb21lIGJ1Z3MgaW4gdGhlIHdpbmV2ZXJzaW9u IHByb2Nlc3MKKyAqIEJlZ2luaW5nIG9mIGNvZGUgY2xlYW5pbmcgYW5kIHJlZmFjdG9yaW5nCisK K0Zyb20gNzg4ZmFkMTZlZmY0OTA0MTkzZTRlOWM1MmIyMzY3MjUzNWEyM2MzMyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdpbGxlcyA8Z2lsbGVzLndpYmVyQGdtYWlsLmNvbT4KK0Rh dGU6IFNhdCwgMzAgTWF5IDIwMjAgMTE6MTk6MzUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAwMi8z N10gUmVtb3ZpbmcgU2V0U3BhY2luZyBmdW50aW9uCisKKy0tLQorIHB5dGhvbi9jb25maWd1cmV3 aW5kb3cvQ29uZmlndXJlV2luZG93LnB5ICAgICAgICAgfCAyICstCisgcHl0aG9uL2NvbmZpZ3Vy ZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5weSB8IDIgKy0KKyBweXRob24vZGVidWcu cHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHB5dGhvbi9pbnN0 YWxsL0luc3RhbGxXaW5kb3cucHkgICAgICAgICAgICAgICAgICAgfCAyICstCisgcHl0aG9uL21h aW53aW5kb3cucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBweXRob24v b3B0aW9ucy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHB5dGhv bi9zZXR1cHdpbmRvdy9QT0xfU2V0dXBGcmFtZS5weSAgICAgICAgICAgICAgfCAyICstCisgcHl0 aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zTm90ZWJvb2sucHkgICAgICB8IDQgKystLQor IDggZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3cucHkgYi9weXRo b24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvdy5weQoraW5kZXggMzBmNzc5ZGIxLi5h MjYzMjE0MzcgMTAwNzU1CistLS0gYS9weXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdp bmRvdy5weQorKysrIGIvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3cucHkK K0BAIC03NSw3ICs3NSw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLHBhcmVudCxpZCx0aXRsZSxzaG9y dGN1dCwgaXNQcmVmaXggPSBGYWxzZSk6CisgICAgICAgICBzZWxmLkJpbmQod3guRVZUX0JVVFRP Tiwgc2VsZi5EZWxldGVQcmVmaXgsIGlkPTEwMDIpCisgCisgCistICAgICAgICBzZWxmLmxpc3Rf Z2FtZS5TZXRTcGFjaW5nKDApCisrICAgICAgICAjc2VsZi5saXN0X2dhbWUuU2V0U3BhY2luZygw KQorICAgICAgICAgc2VsZi5saXN0X2dhbWUuU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VzKQorIAor IAorZGlmZiAtLWdpdCBhL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90 ZWJvb2sucHkgYi9weXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29r LnB5CitpbmRleCA4YjRlMzg3ZWEuLjk3M2Q5YmJkMyAxMDA2NDQKKy0tLSBhL3B5dGhvbi9jb25m aWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJvb2sucHkKKysrKyBiL3B5dGhvbi9jb25m aWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJvb2sucHkKK0BAIC0yNjksNyArMjY5LDcg QEAgZGVmIFBhY2thZ2VzKHNlbGYsIG5vbSk6CisgCisgICAgICAgICBzZWxmLk1lbnUgPSB3eC5U cmVlQ3RybChzZWxmLnBhbmVsUGFja2FnZXMsIDk5LCBwb3M9KDE1LCA3NSksIHNpemU9KDUzMCwg MjYwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXd4LlRSX0hJREVf Uk9PVCB8IHd4LlRSX0ZVTExfUk9XX0hJR0hMSUdIVCB8IFZhcmlhYmxlcy53aWRnZXRfYm9yZGVy cykKKy0gICAgICAgIHNlbGYuTWVudS5TZXRTcGFjaW5nKDApOworKyAgICAgICAgI3NlbGYuTWVu dS5TZXRTcGFjaW5nKDApOworICAgICAgICAgc2VsZi5NZW51LlNldEltYWdlTGlzdChzZWxmLmlt YWdlUGFja2FnZXMpCisgICAgICAgICBzZWxmLmltYWdlUGFja2FnZXMuUmVtb3ZlQWxsKCkKKyAK K2RpZmYgLS1naXQgYS9weXRob24vZGVidWcucHkgYi9weXRob24vZGVidWcucHkKK2luZGV4IDAy MjFlODljMC4uNDNlOGNmMDIxIDEwMDc1NQorLS0tIGEvcHl0aG9uL2RlYnVnLnB5CisrKysgYi9w eXRob24vZGVidWcucHkKK0BAIC02MCw3ICs2MCw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLHBhcmVu dCxpZCx0aXRsZSxsb2djaGVjaz0iL2Rldi9udWxsIixsb2d0eXBlPU5vbmUpOgorICAgICAgICAg c2VsZi5CaW5kKHd4LkVWVF9UUkVFX1NFTF9DSEFOR0VELCBzZWxmLmFuYWx5c2VMb2csIGlkPTkw MCkKKyAKKyAKKy0gICAgICAgIHNlbGYubGlzdF9nYW1lLlNldFNwYWNpbmcoMCk7CisrICAgICAg ICAjc2VsZi5saXN0X2dhbWUuU2V0U3BhY2luZygwKTsKKyAgICAgICAgIHNlbGYubGlzdF9nYW1l LlNldEltYWdlTGlzdChzZWxmLmltYWdlcykKKyAKKyAKK2RpZmYgLS1naXQgYS9weXRob24vaW5z dGFsbC9JbnN0YWxsV2luZG93LnB5IGIvcHl0aG9uL2luc3RhbGwvSW5zdGFsbFdpbmRvdy5weQor aW5kZXggMjdhNmI1MWE1Li41YjU4NDc3NGQgMTAwNzU1CistLS0gYS9weXRob24vaW5zdGFsbC9J bnN0YWxsV2luZG93LnB5CisrKysgYi9weXRob24vaW5zdGFsbC9JbnN0YWxsV2luZG93LnB5CitA QCAtMTgzLDcgKzE4Myw3IEBAIGRlZiBfY3JlYXRlQXBwTmF2aWdhdGlvbihzZWxmKToKKyAgICAg ICAgIHNlbGYuYXBwc0xpc3QgPSB3eC5UcmVlQ3RybChzZWxmLmFwcE5hdmlnYXRpb25QYW5lbCwg MTA2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXd4LlRSX0hJ REVfUk9PVCB8IHd4LlRSX0ZVTExfUk9XX0hJR0hMSUdIVCB8IFZhcmlhYmxlcy53aWRnZXRfYm9y ZGVycykKKyAgICAgICAgIHNlbGYuYXBwc0xpc3QuU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VzYXBw cykKKy0gICAgICAgIHNlbGYuYXBwc0xpc3QuU2V0U3BhY2luZygwKQorKyAgICAgICAgI3NlbGYu YXBwc0xpc3QuU2V0U3BhY2luZygwKQorIAorICAgICAgICAgc2VsZi5hcHBOYXZpZ2F0aW9uU2l6 ZXIuQWRkU3BhY2VyKDEwKQorICAgICAgICAgc2VsZi5hcHBOYXZpZ2F0aW9uU2l6ZXIuQWRkKHNl bGYuYXBwc0xpc3QsIDQsIHd4LkVYUEFORCwgNSkKK2RpZmYgLS1naXQgYS9weXRob24vbWFpbndp bmRvdy5weSBiL3B5dGhvbi9tYWlud2luZG93LnB5CitpbmRleCA3YzIxMTQyZGYuLjhkZjFmZjE0 YiAxMDA3NTUKKy0tLSBhL3B5dGhvbi9tYWlud2luZG93LnB5CisrKysgYi9weXRob24vbWFpbndp bmRvdy5weQorQEAgLTI0MCw3ICsyNDAsNyBAQCBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCBp ZCwgdGl0bGUpOgorIAorICAgICAgICAgIyMgTGlzdCBnYW1lCisgICAgICAgICBzZWxmLmxpc3Rf Z2FtZSA9IHd4LlRyZWVDdHJsKHNlbGYsIDEwNSwgc3R5bGU9d3guVFJfSElERV9ST09UIHwgd3gu VFJfRlVMTF9ST1dfSElHSExJR0hUKQorLSAgICAgICAgc2VsZi5saXN0X2dhbWUuU2V0U3BhY2lu ZygwKQorKyAgICAgICAgI3NlbGYubGlzdF9nYW1lLlNldFNwYWNpbmcoMCkKKyAgICAgICAgIHNl bGYubGlzdF9nYW1lLlNldEluZGVudCg1KQorICAgICAgICAgc2VsZi5saXN0X2dhbWUuU2V0SW1h Z2VMaXN0KHNlbGYuaW1hZ2VzKQorICAgICAgICAgc2VsZi5tZW51X2dhdWNoZSA9IHd4LlBhbmVs KHNlbGYsIC0xKQorZGlmZiAtLWdpdCBhL3B5dGhvbi9vcHRpb25zLnB5IGIvcHl0aG9uL29wdGlv bnMucHkKK2luZGV4IGE1NGMxMTAwMC4uNzIzMDczY2U0IDEwMDc1NQorLS0tIGEvcHl0aG9uL29w dGlvbnMucHkKKysrKyBiL3B5dGhvbi9vcHRpb25zLnB5CitAQCAtMTg3LDcgKzE4Nyw3IEBAIGRl ZiBQbHVnaW5zKHNlbGYsIG5vbSk6CisgICAgICAgICBzZWxmLnR4dFBsdWdpbiA9IHd4LlN0YXRp Y1RleHQoc2VsZi5wYW5lbFBsdWdpbnMsIC0xLCBfKCJJbnN0YWxsZWQgcGx1Z2lucyIpLCBzaXpl PXd4LkRlZmF1bHRTaXplKQorICAgICAgICAgc2VsZi50eHRQbHVnaW4uU2V0Rm9udChzZWxmLmZv bnRUaXRsZSkKKyAgICAgICAgIHNlbGYucGx1Z2lubGlzdCA9IHd4LlRyZWVDdHJsKHNlbGYucGFu ZWxQbHVnaW5zLCAyMjAsIHN0eWxlPVZhcmlhYmxlcy53aWRnZXRfYm9yZGVyc3x3eC5UUl9ISURF X1JPT1R8d3guVFJfRlVMTF9ST1dfSElHSExJR0hUKQorLSAgICAgICAgc2VsZi5wbHVnaW5saXN0 LlNldFNwYWNpbmcoMCkKKysgICAgICAgICNzZWxmLnBsdWdpbmxpc3QuU2V0U3BhY2luZygwKQor IAorICAgICAgICAgc2VsZi5wbHVnaW5JbWdMaXN0ID0gd3guSW1hZ2VMaXN0KDE2LDE2KQorIAor ZGlmZiAtLWdpdCBhL3B5dGhvbi9zZXR1cHdpbmRvdy9QT0xfU2V0dXBGcmFtZS5weSBiL3B5dGhv bi9zZXR1cHdpbmRvdy9QT0xfU2V0dXBGcmFtZS5weQoraW5kZXggNjZiZWU4NTMzLi4zM2Q3M2Qz OGEgMTAwNzU1CistLS0gYS9weXRob24vc2V0dXB3aW5kb3cvUE9MX1NldHVwRnJhbWUucHkKKysr KyBiL3B5dGhvbi9zZXR1cHdpbmRvdy9QT0xfU2V0dXBGcmFtZS5weQorQEAgLTIxMiw3ICsyMTIs NyBAQCBkZWYgX2NyZWF0ZVVJKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHlsZT13eC5UUl9ISURFX1JPT1QgfCB3eC5UUl9GVUxMX1JPV19ISUdITElHSFQg fCBWYXJpYWJsZXMud2lkZ2V0X2JvcmRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBvcz0oMjUsIDI1KSwgc2l6ZT0oNDYwLCAyMjApKQorICAgICAgICAgc2VsZi5N ZW51R2FtZXMuU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VzKQorLSAgICAgICAgc2VsZi5NZW51R2Ft ZXMuU2V0U3BhY2luZygwKQorKyAgICAgICAgI3NlbGYuTWVudUdhbWVzLlNldFNwYWNpbmcoMCkK KyAKKyAgICAgICAgICMgTG9naW4KKyAgICAgICAgIHNlbGYubG9naW4gPSB3eC5TdGF0aWNUZXh0 KHNlbGYuY29udGVudFBhbmVsLCAtMSwgXygiTG9naW46ICIpLCBwb3M9KDIwLCA0MCksIHNpemU9 KDQ2MCwgMjApKQorZGlmZiAtLWdpdCBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9u c05vdGVib29rLnB5IGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zTm90ZWJvb2su cHkKK2luZGV4IGUwODhhYmViMi4uZWM1ZjEyNTM1IDEwMDY0NAorLS0tIGEvcHl0aG9uL3dpbmVf dmVyc2lvbnMvV2luZVZlcnNpb25zTm90ZWJvb2sucHkKKysrKyBiL3B5dGhvbi93aW5lX3ZlcnNp b25zL1dpbmVWZXJzaW9uc05vdGVib29rLnB5CitAQCAtMzksNyArMzksNyBAQCBkZWYgX2NyZWF0 ZUluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsKHNlbGYsIGFyY2gpOgorICAgICAgICAgc2VsZi5p bnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0gPSB3eC5UcmVlQ3RybChpbnN0 YWxsZWRXaW5lVmVyc2lvbnNQYW5lbCwgMTA3ICsgc2VsZi5jYWxjdWxhdGVFdmVudERlbHRhKGFy Y2gpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHlsZT13eC5UUl9ISURFX1JPT1QgfCB3eC5UUl9GVUxMX1JPV19I SUdITElHSFQgfCBWYXJpYWJsZXMud2lkZ2V0X2JvcmRlcnMpCisgICAgICAgICBzZWxmLmluc3Rh bGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFn ZXNhcHBzX2lbYXJjaF0pCistICAgICAgICBzZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVT ZWxlY3RvclthcmNoXS5TZXRTcGFjaW5nKDApCisrICAgICAgICAjc2VsZi5pbnN0YWxsZWRXaW5l VmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0U3BhY2luZygwKQorICAgICAgICAgaW5zdGFs bGVkV2luZVZlcnNpb25zU2l6ZXIuQWRkKHNlbGYuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNl bGVjdG9yW2FyY2hdLCAxLCB3eC5FWFBBTkQpCisgICAgICAgICBpbnN0YWxsZWRXaW5lVmVyc2lv bnNTaXplci5BZGRTcGFjZXIoMTApCisgCitAQCAtNTUsNyArNTUsNyBAQCBkZWYgX2NyZWF0ZUF2 YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsKHNlbGYsIGFyY2gpOgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13 eC5UUl9ISURFX1JPT1QgfCB3eC5UUl9GVUxMX1JPV19ISUdITElHSFQgfCBWYXJpYWJsZXMud2lk Z2V0X2JvcmRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9KDMyMCwgMzAwKSwgcG9zPSgxMCwgMzUpKQor ICAgICAgICAgc2VsZi5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0 SW1hZ2VMaXN0KHNlbGYuaW1hZ2VzYXBwc1thcmNoXSkKKy0gICAgICAgIHNlbGYuYXZhaWxhYmxl V2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldFNwYWNpbmcoMCkKKysgICAgICAgICNz ZWxmLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5TZXRTcGFjaW5nKDAp CisgICAgICAgICBhdmFpbGFibGVXaW5lVmVyc2lvbnNTaXplci5BZGQoc2VsZi5hdmFpbGFibGVX aW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0sIDEsIHd4LkVYUEFORCkKKyAgICAgICAgIGF2 YWlsYWJsZVdpbmVWZXJzaW9uc1NpemVyLkFkZFNwYWNlcigxMCkKKyAKKworRnJvbSA3N2EzY2Ez YmUyOTNlYmNhZmEyNDAwNzAzYTVkZDQwNzlhNWYyMDBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogR2lsbGVzIDxnaWxsZXMud2liZXJAZ21haWwuY29tPgorRGF0ZTogU2F0LCAzMCBN YXkgMjAyMCAxMTozMjoxMyArMDIwMAorU3ViamVjdDogW1BBVENIIDAzLzM3XSBTb2x2aW5nIHBs dWdpbmcgbWFuYWdlciBpc3N1ZSAoZXh0ZW5zaW9uIG1hbmFnZW1lbnQpCisKKy0tLQorIHB5dGhv bi9vcHRpb25zLnB5IHwgMTEgKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRp b25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHl0aG9uL29wdGlvbnMucHkg Yi9weXRob24vb3B0aW9ucy5weQoraW5kZXggNzIzMDczY2U0Li5mNDBmMjZhNzAgMTAwNzU1Cist LS0gYS9weXRob24vb3B0aW9ucy5weQorKysrIGIvcHl0aG9uL29wdGlvbnMucHkKK0BAIC0yMjks OSArMjI5LDkgQEAgZGVmIGdlbmVyYXRlRXh0cyhzZWxmKToKKyAgICAgICAgICAgICBsaW5lID0g bGluZS5yZXBsYWNlKCJcbiIsIiIpCisgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXQoIj0i KQorICAgICAgICAgICAgIGxpbmVyID0gIkxpbmUgJXMiICUgaQorLSAgICAgICAgICAgIHNlbGYu bGlzdF9leHQuSW5zZXJ0U3RyaW5nSXRlbShpLCBsaW5lcikKKy0gICAgICAgICAgICBzZWxmLmxp c3RfZXh0LlNldFN0cmluZ0l0ZW0oaSwgMCwgbGluZVswXSkKKy0gICAgICAgICAgICBzZWxmLmxp c3RfZXh0LlNldFN0cmluZ0l0ZW0oaSwgMSwgbGluZVsxXSkKKysgICAgICAgICAgICBzZWxmLmxp c3RfZXh0Lkluc2VydEl0ZW0oaSwgbGluZXIpCisrICAgICAgICAgICAgc2VsZi5saXN0X2V4dC5T ZXRJdGVtKGksIDAsIGxpbmVbMF0pCisrICAgICAgICAgICAgc2VsZi5saXN0X2V4dC5TZXRJdGVt KGksIDEsIGxpbmVbMV0pCisgICAgICAgICAgICAgaSArPSAxCisgICAgICAgICBzZWxmLmFwcF9p bnN0YWxsZWRfdGV4dC5IaWRlKCkKKyAgICAgICAgIHNlbGYuYXBwX2luc3RhbGxlZC5IaWRlKCkK K0BAIC0yNDksOCArMjQ5LDkgQEAgZGVmIGVkaXRFeHQoc2VsZiwgZXZlbnQpOgorICAgICAgICAg c2VsZi5hcHBfaW5zdGFsbGVkLlNob3coKQorICAgICAgICAgc2VsZi5kZWxldGVfZXh0LlNob3co KQorIAorLSAgICAgICAgc2VsZi5hcHBfc2VsZWN0ZWQgPSBzZWxmLmV4dHNbZXZlbnQubV9pdGVt SW5kZXhdLnNwbGl0KCI9IilbMV0KKy0gICAgICAgIHNlbGYuZXh0X3NlbGVjdGVkID0gc2VsZi5l eHRzW2V2ZW50Lm1faXRlbUluZGV4XS5zcGxpdCgiPSIpWzBdCisrICAgICAgICBpbmQgPSBldmVu dC5HZXRJbmRleCgpCisrICAgICAgICBzZWxmLmFwcF9zZWxlY3RlZCA9IHNlbGYubGlzdF9leHQu R2V0SXRlbShpbmQsMSkuR2V0VGV4dCgpCisrICAgICAgICBzZWxmLmV4dF9zZWxlY3RlZCA9IHNl bGYubGlzdF9leHQuR2V0SXRlbShpbmQsMCkuR2V0VGV4dCgpCisgCisgICAgICAgICBzZWxmLmFw cF9pbnN0YWxsZWQuU2V0VmFsdWUoc2VsZi5hcHBfc2VsZWN0ZWQucmVwbGFjZSgiXG4iLCIiKS5y ZXBsYWNlKCJcciIsIiIpKQorIAorCitGcm9tIGE2NTZmNWIyYmRkMjMzNzVlM2Q5NTQ3YTljMzhj Y2Y5OWUyZGM2NzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBHaWxsZXMgPGdpbGxl cy53aWJlckBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIE1heSAyMDIwIDE0OjM0OjI4ICswMjAw CitTdWJqZWN0OiBbUEFUQ0ggMDQvMzddIFNvbHZpbmcgZGlmZmVyZW50IGlzc3VlIG9uIGRlYnVn IHdpbmRvdworCistLS0KKyBweXRob24vZGVidWcucHkgICAgICAgICB8IDcgKysrKy0tLQorIHB5 dGhvbi9saWIvVmFyaWFibGVzLnB5IHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRp b25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHl0aG9uL2RlYnVnLnB5IGIv cHl0aG9uL2RlYnVnLnB5CitpbmRleCA0M2U4Y2YwMjEuLjFlMzQ0ZWRjOCAxMDA3NTUKKy0tLSBh L3B5dGhvbi9kZWJ1Zy5weQorKysrIGIvcHl0aG9uL2RlYnVnLnB5CitAQCAtMzgsNyArMzgsNyBA QCBkZWYgX19pbml0X18oc2VsZixwYXJlbnQsaWQsdGl0bGUsbG9nY2hlY2s9Ii9kZXYvbnVsbCIs bG9ndHlwZT1Ob25lKToKKyAKKyAgICAgICAgIHd4LkZyYW1lLl9faW5pdF9fKHNlbGYsIHBhcmVu dCwgLTEsIHRpdGxlLCBzaXplID0gKDgxMCwgNjAwK1ZhcmlhYmxlcy53aW5kb3dzX2FkZF9zaXpl KSwgc3R5bGUgPSB3eC5DTE9TRV9CT1ggfCB3eC5DQVBUSU9OIHwgd3guTUlOSU1JWkVfQk9YKQor ICAgICAgICAgc2VsZi5TZXRJY29uKHd4Lkljb24oVmFyaWFibGVzLnBsYXlvbmxpbnV4X2Vudisi L2V0Yy9wbGF5b25saW51eC5wbmciLCB3eC5CSVRNQVBfVFlQRV9BTlkpKQorLSAgICAgICAgc2Vs Zi5TZXRUaXRsZShfKCd7MH0gZGVidWdnZXInKS5mb3JtYXQob3MuZW52aXJvblsiQVBQTElDQVRJ T05fVElUTEUiXSkpCisrICAgICAgICBzZWxmLlNldFRpdGxlKHRpdGxlKQorICAgICAgICAgI3Nl bGYucGFuZWxGZW5wID0gd3guUGFuZWwoc2VsZiwgLTEpCisgCisgICAgICAgICBzZWxmLnByZWZp eGVzX2l0ZW0gPSB7fQorQEAgLTc5LDcgKzc5LDcgQEAgZGVmIF9faW5pdF9fKHNlbGYscGFyZW50 LGlkLHRpdGxlLGxvZ2NoZWNrPSIvZGV2L251bGwiLGxvZ3R5cGU9Tm9uZSk6CisgICAgICAgICBz ZWxmLmxvZ19yZWFkZXIgPSB3eC5UZXh0Q3RybChzZWxmLnBhbmVsVGV4dCwgMTAwLCAiIiwgc2l6 ZT13eC5TaXplKDU5MCw1MDApLCBwb3M9KDIsMiksIHN0eWxlPVZhcmlhYmxlcy53aWRnZXRfYm9y ZGVyc3x3eC5URV9SSUNIMnx3eC5URV9SRUFET05MWXx3eC5URV9NVUxUSUxJTkUpCisgICAgICAg ICBzZWxmLmxvZ19yZWFkZXIuQmluZCh3eC5FVlRfU0VUX0ZPQ1VTLCBzZWxmLk9uRm9jdXMpCisg ICAgICAgICBzZWxmLm9wZW5UZXh0RWRpdCA9IHd4LkJ1dHRvbihzZWxmLnBhbmVsTm90RW1wdHks IDEwMSwgXygiTG9jYXRlIHRoaXMgbG9nZmlsZSIpLCBzaXplPSg0MDAsMzApLCBwb3M9KDcwLDUx MikpCistICAgICAgICBzZWxmLnJlcG9ydFByb2JsZW0gPSB3eC5CdXR0b24oc2VsZi5wYW5lbE5v dEVtcHR5LCAxMDIsICIiLCBzaXplPSg0MDAsMzApLCBwb3M9KDcwLDU1MikpCisrICAgICAgICBz ZWxmLnJlcG9ydFByb2JsZW0gPSB3eC5CdXR0b24oc2VsZi5wYW5lbE5vdEVtcHR5LCAxMDIsIF8o IkJ1ZyByZXBvcnQiKSwgc2l6ZT0oNDAwLDMwKSwgcG9zPSg3MCw1NTIpKQorIAorICAgICAgICAg aWYobG9nY2hlY2sgPT0gIi9kZXYvbnVsbCIpOgorICAgICAgICAgICAgIHNlbGYuSGlkZUxvZ0Zp bGUoKQorQEAgLTk1LDcgKzk1LDggQEAgZGVmIGJ1Z1JlcG9ydChzZWxmLCBldmVudCk6CisgICAg ICAgICBuZXdfZW52ID0gb3MuZW52aXJvbgorICAgICAgICAgbmV3X2VudlsiTE9HVElUTEUiXSA9 IHNlbGYubG9nbmFtZQorICAgICAgICAgc3VicHJvY2Vzcy5Qb3BlbihbImJhc2giLCBWYXJpYWJs ZXMucGxheW9ubGludXhfZW52KyIvYmFzaC9idWdfcmVwb3J0Il0sIGVudj1uZXdfZW52KQorLSAg ICAgICAgc2VsZi5yZXBvcnRQcm9ibGVtLkVuYWJsZShGYWxzZSkKKysgICAgICAgICMgRG9lc24n dCB3b3JrIGlmIGNhbmNlbCBvbiBQT0wgV2luZG93IDogbmVlZCB0byBmaW5kIGFub3RoZXIgd2F5 IC4uLgorKyAgICAgICAgI3NlbGYucmVwb3J0UHJvYmxlbS5FbmFibGUoRmFsc2UpCisgCisgICAg IGRlZiBsb2NhdGUoc2VsZiwgZXZlbnQpOgorICAgICAgICAgaWYoc2VsZi5sb2d0eXBlID09IDAp OgorZGlmZiAtLWdpdCBhL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5IGIvcHl0aG9uL2xpYi9WYXJp YWJsZXMucHkKK2luZGV4IDA1NWZlMTdmOS4uOGJlZDc2MDFiIDEwMDc1NQorLS0tIGEvcHl0aG9u L2xpYi9WYXJpYWJsZXMucHkKKysrKyBiL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5CitAQCAtNTEs NyArNTEsNyBAQAorICAgICAgICAgd2luZG93c19hZGRfc2l6ZSA9IDAKKyAgICAgICAgIHdpbmRv d3NfYWRkX3BsYXlvbm1hYyA9IDAKKyAgICAgZWxzZToKKy0gICAgICAgIHdpbmRvd3NfYWRkX3Np emUgPSBkcGlGZXRjaGVyKCkuZmV0Y2hfZXh0cmFfcGl4ZWwoKQorKyAgICAgICAgd2luZG93c19h ZGRfc2l6ZSA9IGRwaUZldGNoZXIoKS5mZXRjaF9leHRyYV9waXhlbCgpKzYwCisgICAgICAgICB3 aW5kb3dzX2FkZF9wbGF5b25tYWMgPSAwCisgCisgICAgIHdpZGdldF9ib3JkZXJzID0gd3guUkFJ U0VEX0JPUkRFUgorCitGcm9tIDAyYmVhYjA1ZDQyNTU4MDJjMjZkYjIwYTE4Nzg3MzQ5ZTliMTVi YmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBHaWxsZXMgPGdpbGxlcy53aWJlckBn bWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIE1heSAyMDIwIDE1OjE3OjMzICswMjAwCitTdWJqZWN0 OiBbUEFUQ0ggMDUvMzddIFNvbHZpbmcgc21hbGwgYnVncworCistLS0KKyBweXRob24vY29uZmln dXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29rLnB5IHwgMiArKworIHB5dGhvbi9pbnN0 YWxsL0luc3RhbGxXaW5kb3cucHkgICAgICAgICAgICAgICAgICAgfCAyICstCisgMiBmaWxlcyBj aGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3B5 dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJvb2sucHkgYi9weXRob24v Y29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29rLnB5CitpbmRleCA5NzNkOWJi ZDMuLjI5NjQ0M2U2NiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmln dXJlV2luZG93Tm90ZWJvb2sucHkKKysrKyBiL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmln dXJlV2luZG93Tm90ZWJvb2sucHkKK0BAIC00NjcsNiArNDY3LDggQEAgZGVmIG1pc2NfYnV0dG9u KHNlbGYsIGV2ZW50KToKKyAgICAgICAgICAgICBzZWxmLkZpbGVEaWFsb2cuU2hvd01vZGFsKCkK KyAgICAgICAgICAgICBpZiAoc2VsZi5GaWxlRGlhbG9nLkdldFBhdGgoKSAhPSAiIik6CisgICAg ICAgICAgICAgICAgIGZpbGVuYW1lID0gc2VsZi5GaWxlRGlhbG9nLkdldFBhdGgoKQorKyAgICAg ICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUpOgorKyAgICAgICAgICAg ICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5h bWUoZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgIGlmIChzZWxmLnNfaXNQcmVmaXggPT0gVHJ1 ZSk6CisgICAgICAgICAgICAgICAgICAgICBzdWJwcm9jZXNzLlBvcGVuKFsiYmFzaCIsIFZhcmlh Ymxlcy5wbGF5b25saW51eF9lbnYgKyAiL2Jhc2gvUE9MX0NvbW1hbmQiLCAiLS1wcmVmaXgiLAor ZGlmZiAtLWdpdCBhL3B5dGhvbi9pbnN0YWxsL0luc3RhbGxXaW5kb3cucHkgYi9weXRob24vaW5z dGFsbC9JbnN0YWxsV2luZG93LnB5CitpbmRleCA1YjU4NDc3NGQuLjJlNDllNGExOCAxMDA3NTUK Ky0tLSBhL3B5dGhvbi9pbnN0YWxsL0luc3RhbGxXaW5kb3cucHkKKysrKyBiL3B5dGhvbi9pbnN0 YWxsL0luc3RhbGxXaW5kb3cucHkKK0BAIC0zMzMsNyArMzMzLDcgQEAgZGVmIGNsb3NlYXBwKHNl bGYsIGV2ZW50KToKKyAKKyAgICAgZGVmIG1hbnVhbChzZWxmLCBldmVudCk6CisgICAgICAgICBz ZWxmLmxpdmUgPSAxCistICAgICAgICBzZWxmLmluc3RhbGxhcHAoc2VsZikKKysgICAgICAgIHNl bGYuaW5zdGFsbGFwcChldmVudCkKKyAKKyAgICAgZGVmIHNob3dTdGFycyhzZWxmLCBzdGFycyk6 CisgICAgICAgICBzdGFyV2lkdGggPSAyMAorCitGcm9tIGUzYTkyNGZjZjRmZjM0MDlkMzFmMDk1 NmQzODAyZDZhNjU5NTZhZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBvdmFyaSA8 MTc0NjU4NzIrb3ZhcmlAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgorRGF0ZTogRnJpLCAyNCBK dWwgMjAyMCAxOTo0Mjo1MCArMTAwMAorU3ViamVjdDogW1BBVENIIDA2LzM3XSBVcGRhdGUgUkVB RE1FLm1kCisKKy0tLQorIFJFQURNRS5tZCB8IDQ5ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygr KSwgMTUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQK K2luZGV4IDliNmNhMzFjYS4uOTc3OTVjNDI3IDEwMDY0NAorLS0tIGEvUkVBRE1FLm1kCisrKysg Yi9SRUFETUUubWQKK0BAIC0xLDI4ICsxLDQ3IEBACistUE9MLVBPTS00CistPT09PT09PT09Cisr IyBQbGF5T25MaW51eCBhbmQgUGxheU9uTWFjIDQgKFBPTC1QT00tNCkKKyAKKy1QbGF5T25MaW51 eCA0IHJlcG9zaXRvcnkKKy1Ob3RlOiBQbGF5T25MaW51eCA1IGlzIGN1cnJlbnRseSB1bmRlciBk ZXZlbG9wbWVudC4gUGxlYXNlIGNsb25lIFBPTC1QT00tNSByZXBvc2l0b3J5IGlmIHlvdSB3YW50 IHRvIGNvbnRyaWJ1dGUKKytOb3RlOiBbUGhvZW5pY2lzIFBsYXlPbkxpbnV4IGFuZCBQbGF5T25N YWMgNV0oaHR0cHM6Ly93d3cucGhvZW5pY2lzLm9yZy8pIGlzIGN1cnJlbnRseSB1bmRlciBkZXZl bG9wbWVudC4gUGxlYXNlIGNsb25lIFtQaG9lbmljaXMgUGxheU9uTGludXggYW5kIFBsYXlPbk1h YyA1IHJlcG9zaXRvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS9QaG9lbmljaXNPcmcvcGhvZW5pY2lz KSBpZiB5b3Ugd2FudCB0byBjb250cmlidXRlLgorIAorLVdoYXQgaXMgUGxheU9uTGludXg/Cist PT09PT09PT09PT09PT09PT09PT09CisrUGxheU9uTGludXggYW5kIFBsYXlPbk1hYyA0IGFsbG93 cyB5b3UgdG8gaW5zdGFsbCBhbmQgdXNlIG5vbi1uYXRpdmUgYXBwbGljYXRpb25zIG9uIHlvdXIg ZmF2b3JpdGUgb3BlcmF0aW5nIHN5c3RlbS4KKysKKytTdXBwb3J0ZWQgb3BlcmF0aW5nIHN5c3Rl bXM6CisrCisrKiBMaW51eAorKyogTWFjIE9TWAorKworK1N1cHBvcnRlZCBlbmdpbmVzOgorKwor KyogW1dpbmVdKGh0dHBzOi8vd3d3LndpbmVocS5vcmcvKQorKworKworKyMgV2hhdCBpcyBQbGF5 T25MaW51eD8KKyAKKyBQbGF5T25MaW51eCBpcyBhIHBpZWNlIG9mIHNvZnR3YXJlIHdoaWNoIGFs bG93cyB5b3UgdG8gZWFzaWx5IGluc3RhbGwgYW5kIHVzZSBudW1lcm91cyBnYW1lcyBhbmQgYXBw cyBkZXNpZ25lZCB0byBydW4gd2l0aCBNaWNyb3NvZnTCriBXaW5kb3dzwq4uCisrCisgRmV3IGdh bWVzIGFyZSBjb21wYXRpYmxlIHdpdGggR05VL0xpbnV4IGF0IHRoZSBtb21lbnQgYW5kIGl0IGNl cnRhaW5seSBpcyBhIGZhY3RvciBwcmV2ZW50aW5nIHRoZSBtaWdyYXRpb24gdG8gdGhpcyBzeXN0 ZW0uIFBsYXlPbkxpbnV4IGJyaW5ncyBhIGNvc3QtZnJlZSwgYWNjZXNzaWJsZSBhbmQgZWZmaWNp ZW50IHNvbHV0aW9uIHRvIHRoaXMgcHJvYmxlbS4KKyAKKyAKKy1XaGF0IGFyZSBQbGF5T25MaW51 eCdzIGZlYXR1cmVzPworLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrIyBXaGF0 IGFyZSBQbGF5T25MaW51eCdzIGZlYXR1cmVzPworIAorIEhlcmUgaXMgYSBub24tZXhoYXVzdGl2 ZSBsaXN0IG9mIHRoZSBpbnRlcmVzdGluZyBwb2ludHMgdG8ga25vdzoKKysqIFlvdSBkb24ndCBo YXZlIHRvIG93biBhIFdpbmRvd3MgbGljZW5zZSB0byB1c2UgUGxheU9uTGludXguCisrKiBQbGF5 T25MaW51eCBpcyBiYXNlZCBvbiBbV2luZV0oaHR0cHM6Ly93d3cud2luZWhxLm9yZy8pLCBhbmQg c28gcHJvZml0cyBmcm9tIGFsbCBpdHMgZmVhdHVyZXMgeWV0IGl0IGtlZXBzIHRoZSB1c2VyIGZy b20gaGF2aW5nIHRvIGRlYWwgd2l0aCBpdHMgY29tcGxleGl0eS4KKysqIFBsYXlPbkxpbnV4IGlz IGZyZWUgc29mdHdhcmUuCisrKiBQbGF5T25MaW51eCB1c2VzIFtCYXNoXShodHRwczovL2VuLndp a2lwZWRpYS5vcmcvd2lraS9CYXNoXyUyOFVuaXhfc2hlbGwlMjkpIGFuZCBbUHl0aG9uXShodHRw czovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QeXRob25fKHByb2dyYW1taW5nX2xhbmd1YWdlKSku CisgCistWW91IGRvbid0IGhhdmUgdG8gb3duIGEgV2luZG93cyBsaWNlbnNlIHRvIHVzZSBQbGF5 T25MaW51eC4KKy1QbGF5T25MaW51eCBpcyBiYXNlZCBvbiBXaW5lLCBhbmQgc28gcHJvZml0cyBm cm9tIGFsbCBpdHMgZmVhdHVyZXMgeWV0IGl0IGtlZXBzIHRoZSB1c2VyIGZyb20gaGF2aW5nIHRv IGRlYWwgd2l0aCBpdHMgY29tcGxleGl0eS4KKy1QbGF5T25MaW51eCBpcyBmcmVlIHNvZnR3YXJl LgorLVBsYXlPbkxpbnV4IHVzZXMgQmFzaCBhbmQgUHl0aG9uLgorIE5ldmVydGhlbGVzcywgUGxh eU9uTGludXggaGFzIHNvbWUgYnVncywgYXMgZXZlcnkgcGllY2Ugb2Ygc29mdHdhcmU6CistCist T2NjYXNpb25hbCBwZXJmb3JtYW5jZSBkZWNyZWFzZSAoaW1hZ2UgbWF5IGJlIGxlc3MgZmx1aWQg YW5kIGdyYXBoaWNzIGxlc3MgZGV0YWlsZWQpLgorLU5vdCBhbGwgZ2FtZXMgYXJlIHN1cHBvcnRl ZC4gTmV2ZXJ0aGVsZXNzLCB5b3UgY2FuIHVzZSBvdXIgbWFudWFsIGluc3RhbGxhdGlvbiBtb2R1 bGUuCisrKiBPY2Nhc2lvbmFsIHBlcmZvcm1hbmNlIGRlY3JlYXNlIChpbWFnZSBtYXkgYmUgbGVz cyBmbHVpZCBhbmQgZ3JhcGhpY3MgbGVzcyBkZXRhaWxlZCkuCisrKiBOb3QgYWxsIGdhbWVzIGFy ZSBzdXBwb3J0ZWQuIE5ldmVydGhlbGVzcywgeW91IGNhbiB1c2Ugb3VyIG1hbnVhbCBpbnN0YWxs YXRpb24gbW9kdWxlLgorIAorIEZvciBtb3JlIGluZm9ybWF0aW9uLCB2aXNpdCBodHRwOi8vd3d3 LnBsYXlvbmxpbnV4LmNvbQorKworKworKyMjIFRyYW5zbGF0ZQorK1BsYXlPbkxpbnV4L1BsYXlP bk1hYyA0IGlzIGxvY2FsaXplZCB1c2luZyBMYXVuY2hwYWQ6IGh0dHBzOi8vdHJhbnNsYXRpb25z LmxhdW5jaHBhZC5uZXQvcGxheW9ubGludXgKKytJZiB5b3VyIGxhbmd1YWdlIGlzIG5vdCBsaXN0 ZWQsIHBsZWFzZSBjcmVhdGUgYW4gW2lzc3VlXShodHRwczovL2dpdGh1Yi5jb20vUGxheU9uTGlu dXgvUE9MLVBPTS00L2lzc3VlcykuCisrCisrCisrIyMgQ29tbXVuaXR5CisrKiBJc3N1ZXMgb3Ig aWRlYXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9QaG9lbmljaXNPcmcvcGhvZW5pY2lzL2lzc3Vlcwor KyogRm9ydW1zIDogaHR0cDovL3d3dy5wbGF5b25saW51eC5jb20vZW4vZm9ydW1zLmh0bWwKKysq IFNsYWNrIDogaHR0cHM6Ly9qb2luLnNsYWNrLmNvbS9waG9lbmljaXMtb3JnL3NoYXJlZF9pbnZp dGUvTVRrek1UTXdNak0zTWpjeExURTBPVFkxTVRRek56a3RZMkl6T1RFMk5tRTNOQQorCitGcm9t IDJmYjEzZTMyODg2MTI2NGVlM2E0ZjZkODk3OWJiMWVlMDE4Y2VhNzkgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBvdmFyaSA8MTc0NjU4NzIrb3ZhcmlAdXNlcnMubm9yZXBseS5naXRo dWIuY29tPgorRGF0ZTogRnJpLCAyNCBKdWwgMjAyMCAxOTo0NDoxNiArMTAwMAorU3ViamVjdDog W1BBVENIIDA3LzM3XSBVcGRhdGUgUkVBRE1FLm1kCisKKy0tLQorIFJFQURNRS5tZCB8IDQgKyst LQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2Rp ZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKK2luZGV4IDk3Nzk1YzQyNy4uYzFlOWVk MDMzIDEwMDY0NAorLS0tIGEvUkVBRE1FLm1kCisrKysgYi9SRUFETUUubWQKK0BAIC0yMSwxMCAr MjEsMTAgQEAgUGxheU9uTGludXggaXMgYSBwaWVjZSBvZiBzb2Z0d2FyZSB3aGljaCBhbGxvd3Mg eW91IHRvIGVhc2lseSBpbnN0YWxsIGFuZCB1c2UgbnUKKyBGZXcgZ2FtZXMgYXJlIGNvbXBhdGli bGUgd2l0aCBHTlUvTGludXggYXQgdGhlIG1vbWVudCBhbmQgaXQgY2VydGFpbmx5IGlzIGEgZmFj dG9yIHByZXZlbnRpbmcgdGhlIG1pZ3JhdGlvbiB0byB0aGlzIHN5c3RlbS4gUGxheU9uTGludXgg YnJpbmdzIGEgY29zdC1mcmVlLCBhY2Nlc3NpYmxlIGFuZCBlZmZpY2llbnQgc29sdXRpb24gdG8g dGhpcyBwcm9ibGVtLgorIAorIAorLSMgV2hhdCBhcmUgUGxheU9uTGludXgncyBmZWF0dXJlcz8K KysjIFdoYXQgYXJlIFBsYXlPbkxpbnV44oCZcyBmZWF0dXJlcz8KKyAKKyBIZXJlIGlzIGEgbm9u LWV4aGF1c3RpdmUgbGlzdCBvZiB0aGUgaW50ZXJlc3RpbmcgcG9pbnRzIHRvIGtub3c6CistKiBZ b3UgZG9uJ3QgaGF2ZSB0byBvd24gYSBXaW5kb3dzIGxpY2Vuc2UgdG8gdXNlIFBsYXlPbkxpbnV4 LgorKyogWW91IGRvbuKAmXQgaGF2ZSB0byBvd24gYSBXaW5kb3dzIGxpY2Vuc2UgdG8gdXNlIFBs YXlPbkxpbnV4LgorICogUGxheU9uTGludXggaXMgYmFzZWQgb24gW1dpbmVdKGh0dHBzOi8vd3d3 LndpbmVocS5vcmcvKSwgYW5kIHNvIHByb2ZpdHMgZnJvbSBhbGwgaXRzIGZlYXR1cmVzIHlldCBp dCBrZWVwcyB0aGUgdXNlciBmcm9tIGhhdmluZyB0byBkZWFsIHdpdGggaXRzIGNvbXBsZXhpdHku CisgKiBQbGF5T25MaW51eCBpcyBmcmVlIHNvZnR3YXJlLgorICogUGxheU9uTGludXggdXNlcyBb QmFzaF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzaF8lMjhVbml4X3NoZWxsJTI5 KSBhbmQgW1B5dGhvbl0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHl0aG9uXyhwcm9n cmFtbWluZ19sYW5ndWFnZSkpLgorCitGcm9tIGY0MjI5YWM4MzAxNWE1ODNkMGMwZTQ1NDQ1ZDI4 ZWUzMzIzMjEzNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBvdmFyaSA8MTc0NjU4 NzIrb3ZhcmlAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgorRGF0ZTogRnJpLCAyNCBKdWwgMjAy MCAxOTo0NToxMSArMTAwMAorU3ViamVjdDogW1BBVENIIDA4LzM3XSBVcGRhdGUgUkVBRE1FLm1k CisKKy0tLQorIFJFQURNRS5tZCB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1F Lm1kCitpbmRleCBjMWU5ZWQwMzMuLjc1ZmJjNWZhZSAxMDA2NDQKKy0tLSBhL1JFQURNRS5tZAor KysrIGIvUkVBRE1FLm1kCitAQCAtNiw4ICs2LDkgQEAgUGxheU9uTGludXggYW5kIFBsYXlPbk1h YyA0IGFsbG93cyB5b3UgdG8gaW5zdGFsbCBhbmQgdXNlIG5vbi1uYXRpdmUgYXBwbGljYXRpb24K KyAKKyBTdXBwb3J0ZWQgb3BlcmF0aW5nIHN5c3RlbXM6CisgCistKiBMaW51eAorLSogTWFjIE9T WAorKyogR05VL0xpbnV4CisrKiBNYWMgT1MgWAorKyogbWFjT1MKKyAKKyBTdXBwb3J0ZWQgZW5n aW5lczoKKyAKKworRnJvbSA2NDgwZTY5NDE1NGY0ZjI0YzRiZjMxYmFiYzdlOTI3MTU3NGUwNGNh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogb3ZhcmkgPDE3NDY1ODcyK292YXJpQHVz ZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IEZyaSwgMjQgSnVsIDIwMjAgMTk6NDk6MzEg KzEwMDAKK1N1YmplY3Q6IFtQQVRDSCAwOS8zN10gVXBkYXRlIFJFQURNRS5tZAorCistLS0KKyBS RUFETUUubWQgfCA3ICsrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0 IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCitpbmRl eCA3NWZiYzVmYWUuLjBkNjRhNTk2MiAxMDA2NDQKKy0tLSBhL1JFQURNRS5tZAorKysrIGIvUkVB RE1FLm1kCitAQCAtNiw5ICs2LDggQEAgUGxheU9uTGludXggYW5kIFBsYXlPbk1hYyA0IGFsbG93 cyB5b3UgdG8gaW5zdGFsbCBhbmQgdXNlIG5vbi1uYXRpdmUgYXBwbGljYXRpb24KKyAKKyBTdXBw b3J0ZWQgb3BlcmF0aW5nIHN5c3RlbXM6CisgCistKiBHTlUvTGludXgKKy0qIE1hYyBPUyBYCist KiBtYWNPUworKyogW0dOVS9MaW51eF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlu dXgpCisrKiBbbWFjT1NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FwcGxlX01hY2lu dG9zaF9PU19YKQorIAorIFN1cHBvcnRlZCBlbmdpbmVzOgorIAorQEAgLTI1LDcgKzI0LDcgQEAg RmV3IGdhbWVzIGFyZSBjb21wYXRpYmxlIHdpdGggR05VL0xpbnV4IGF0IHRoZSBtb21lbnQgYW5k IGl0IGNlcnRhaW5seSBpcyBhIGZhY3QKKyAjIFdoYXQgYXJlIFBsYXlPbkxpbnV44oCZcyBmZWF0 dXJlcz8KKyAKKyBIZXJlIGlzIGEgbm9uLWV4aGF1c3RpdmUgbGlzdCBvZiB0aGUgaW50ZXJlc3Rp bmcgcG9pbnRzIHRvIGtub3c6CistKiBZb3UgZG9u4oCZdCBoYXZlIHRvIG93biBhIFdpbmRvd3Mg bGljZW5zZSB0byB1c2UgUGxheU9uTGludXguCisrKiBZb3UgZG9u4oCZdCBoYXZlIHRvIG93biBh IFtNaWNyb3NvZnQgV2luZG93c10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9z b2Z0X1dpbmRvd3MpIGxpY2Vuc2UgdG8gdXNlIFBsYXlPbkxpbnV4LgorICogUGxheU9uTGludXgg aXMgYmFzZWQgb24gW1dpbmVdKGh0dHBzOi8vd3d3LndpbmVocS5vcmcvKSwgYW5kIHNvIHByb2Zp dHMgZnJvbSBhbGwgaXRzIGZlYXR1cmVzIHlldCBpdCBrZWVwcyB0aGUgdXNlciBmcm9tIGhhdmlu ZyB0byBkZWFsIHdpdGggaXRzIGNvbXBsZXhpdHkuCisgKiBQbGF5T25MaW51eCBpcyBmcmVlIHNv ZnR3YXJlLgorICogUGxheU9uTGludXggdXNlcyBbQmFzaF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEu b3JnL3dpa2kvQmFzaF8lMjhVbml4X3NoZWxsJTI5KSBhbmQgW1B5dGhvbl0oaHR0cHM6Ly9lbi53 aWtpcGVkaWEub3JnL3dpa2kvUHl0aG9uXyhwcm9ncmFtbWluZ19sYW5ndWFnZSkpLgorCitGcm9t IGM0NjY5MzA1ZjI1NmM0YzE2YmM2OGEzNTMyMzljYmM4YzVkYWU3YmEgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBvdmFyaSA8MTc0NjU4NzIrb3ZhcmlAdXNlcnMubm9yZXBseS5naXRo dWIuY29tPgorRGF0ZTogRnJpLCAyNCBKdWwgMjAyMCAxOTo1MDozMSArMTAwMAorU3ViamVjdDog W1BBVENIIDEwLzM3XSBVcGRhdGUgUkVBRE1FLm1kCisKKy0tLQorIFJFQURNRS5tZCB8IDIgKy0K KyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAt LWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAoraW5kZXggMGQ2NGE1OTYyLi41N2ZhZGZiYjYg MTAwNjQ0CistLS0gYS9SRUFETUUubWQKKysrKyBiL1JFQURNRS5tZAorQEAgLTI2LDcgKzI2LDcg QEAgRmV3IGdhbWVzIGFyZSBjb21wYXRpYmxlIHdpdGggR05VL0xpbnV4IGF0IHRoZSBtb21lbnQg YW5kIGl0IGNlcnRhaW5seSBpcyBhIGZhY3QKKyBIZXJlIGlzIGEgbm9uLWV4aGF1c3RpdmUgbGlz dCBvZiB0aGUgaW50ZXJlc3RpbmcgcG9pbnRzIHRvIGtub3c6CisgKiBZb3UgZG9u4oCZdCBoYXZl IHRvIG93biBhIFtNaWNyb3NvZnQgV2luZG93c10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dp a2kvTWljcm9zb2Z0X1dpbmRvd3MpIGxpY2Vuc2UgdG8gdXNlIFBsYXlPbkxpbnV4LgorICogUGxh eU9uTGludXggaXMgYmFzZWQgb24gW1dpbmVdKGh0dHBzOi8vd3d3LndpbmVocS5vcmcvKSwgYW5k IHNvIHByb2ZpdHMgZnJvbSBhbGwgaXRzIGZlYXR1cmVzIHlldCBpdCBrZWVwcyB0aGUgdXNlciBm cm9tIGhhdmluZyB0byBkZWFsIHdpdGggaXRzIGNvbXBsZXhpdHkuCistKiBQbGF5T25MaW51eCBp cyBmcmVlIHNvZnR3YXJlLgorKyogUGxheU9uTGludXggaXMgW2ZyZWUgc29mdHdhcmVdKGh0dHBz Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZyZWVfc29mdHdhcmUpLgorICogUGxheU9uTGludXgg dXNlcyBbQmFzaF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzaF8lMjhVbml4X3No ZWxsJTI5KSBhbmQgW1B5dGhvbl0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUHl0aG9u Xyhwcm9ncmFtbWluZ19sYW5ndWFnZSkpLgorIAorIE5ldmVydGhlbGVzcywgUGxheU9uTGludXgg aGFzIHNvbWUgYnVncywgYXMgZXZlcnkgcGllY2Ugb2Ygc29mdHdhcmU6CisKK0Zyb20gYTZjYzIz ZDQzMzc1ZmNhMGUyOGU5MDBhMTEwZDE5NWJlMjUxZWUyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb206IG92YXJpIDwxNzQ2NTg3MitvdmFyaUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+ CitEYXRlOiBGcmksIDI0IEp1bCAyMDIwIDIwOjEyOjM2ICsxMDAwCitTdWJqZWN0OiBbUEFUQ0gg MTEvMzddIFVwZGF0ZSBSRUFETUUubWQKKworLS0tCisgUkVBRE1FLm1kIHwgMiArLQorIDEgZmls ZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEv UkVBRE1FLm1kIGIvUkVBRE1FLm1kCitpbmRleCA1N2ZhZGZiYjYuLjBmZTc5ZjNmYSAxMDA2NDQK Ky0tLSBhL1JFQURNRS5tZAorKysrIGIvUkVBRE1FLm1kCitAQCAtNyw3ICs3LDcgQEAgUGxheU9u TGludXggYW5kIFBsYXlPbk1hYyA0IGFsbG93cyB5b3UgdG8gaW5zdGFsbCBhbmQgdXNlIG5vbi1u YXRpdmUgYXBwbGljYXRpb24KKyBTdXBwb3J0ZWQgb3BlcmF0aW5nIHN5c3RlbXM6CisgCisgKiBb R05VL0xpbnV4XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW51eCkKKy0qIFttYWNP U10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXBwbGVfTWFjaW50b3NoX09TX1gpCisr KiBbbWFjT1NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01hY09TKQorIAorIFN1cHBv cnRlZCBlbmdpbmVzOgorIAorCitGcm9tIDA4ZTg3ZWQwYTc4YjBjNzc0MzkzNWNkMzliMzU1ZGIz MDMxNTczNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBvdmFyaSA8MTc0NjU4NzIr b3ZhcmlAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgorRGF0ZTogU2F0LCAyNSBKdWwgMjAyMCAx ODozMToxMCArMTAwMAorU3ViamVjdDogW1BBVENIIDEyLzM3XSBVcGRhdGUgUkVBRE1FLm1kCisK Ky0tLQorIFJFQURNRS5tZCB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRp b25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1F Lm1kCitpbmRleCAwZmU3OWYzZmEuLjNkMDBlNjVjMSAxMDA2NDQKKy0tLSBhL1JFQURNRS5tZAor KysrIGIvUkVBRE1FLm1kCitAQCAtNiw4ICs2LDggQEAgUGxheU9uTGludXggYW5kIFBsYXlPbk1h YyA0IGFsbG93cyB5b3UgdG8gaW5zdGFsbCBhbmQgdXNlIG5vbi1uYXRpdmUgYXBwbGljYXRpb24K KyAKKyBTdXBwb3J0ZWQgb3BlcmF0aW5nIHN5c3RlbXM6CisgCistKiBbR05VL0xpbnV4XShodHRw czovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaW51eCkKKy0qIFttYWNPU10oaHR0cHM6Ly9lbi53 aWtpcGVkaWEub3JnL3dpa2kvTWFjT1MpCisrKiBHTlUvTGludXgKKysqIG1hY09TCisgCisgU3Vw cG9ydGVkIGVuZ2luZXM6CisgCitAQCAtMjQsMTAgKzI0LDEwIEBAIEZldyBnYW1lcyBhcmUgY29t cGF0aWJsZSB3aXRoIEdOVS9MaW51eCBhdCB0aGUgbW9tZW50IGFuZCBpdCBjZXJ0YWlubHkgaXMg YSBmYWN0CisgIyBXaGF0IGFyZSBQbGF5T25MaW51eOKAmXMgZmVhdHVyZXM/CisgCisgSGVyZSBp cyBhIG5vbi1leGhhdXN0aXZlIGxpc3Qgb2YgdGhlIGludGVyZXN0aW5nIHBvaW50cyB0byBrbm93 OgorLSogWW91IGRvbuKAmXQgaGF2ZSB0byBvd24gYSBbTWljcm9zb2Z0IFdpbmRvd3NdKGh0dHBz Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pY3Jvc29mdF9XaW5kb3dzKSBsaWNlbnNlIHRvIHVz ZSBQbGF5T25MaW51eC4KKysqIFlvdSBkb27igJl0IGhhdmUgdG8gb3duIGEgTWljcm9zb2Z0IFdp bmRvd3MgbGljZW5zZSB0byB1c2UgUGxheU9uTGludXguCisgKiBQbGF5T25MaW51eCBpcyBiYXNl ZCBvbiBbV2luZV0oaHR0cHM6Ly93d3cud2luZWhxLm9yZy8pLCBhbmQgc28gcHJvZml0cyBmcm9t IGFsbCBpdHMgZmVhdHVyZXMgeWV0IGl0IGtlZXBzIHRoZSB1c2VyIGZyb20gaGF2aW5nIHRvIGRl YWwgd2l0aCBpdHMgY29tcGxleGl0eS4KKyAqIFBsYXlPbkxpbnV4IGlzIFtmcmVlIHNvZnR3YXJl XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GcmVlX3NvZnR3YXJlKS4KKy0qIFBsYXlP bkxpbnV4IHVzZXMgW0Jhc2hdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jhc2hfJTI4 VW5peF9zaGVsbCUyOSkgYW5kIFtQeXRob25dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp L1B5dGhvbl8ocHJvZ3JhbW1pbmdfbGFuZ3VhZ2UpKS4KKysqIFBsYXlPbkxpbnV4IHVzZXMgQmFz aCBhbmQgUHl0aG9uLgorIAorIE5ldmVydGhlbGVzcywgUGxheU9uTGludXggaGFzIHNvbWUgYnVn cywgYXMgZXZlcnkgcGllY2Ugb2Ygc29mdHdhcmU6CisgKiBPY2Nhc2lvbmFsIHBlcmZvcm1hbmNl IGRlY3JlYXNlIChpbWFnZSBtYXkgYmUgbGVzcyBmbHVpZCBhbmQgZ3JhcGhpY3MgbGVzcyBkZXRh aWxlZCkuCisKK0Zyb20gMmJmOWVkMmQzMjFhMjZiNDhkZTgzYTEzMDY0ZjdiOWYwZGIwZGNkNyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHJheWRlcnVhIDxyYXlkZXIudWFAZ21haWwu Y29tPgorRGF0ZTogTW9uLCA1IE9jdCAyMDIwIDE3OjE5OjQ3ICswMzAwCitTdWJqZWN0OiBbUEFU Q0ggMTMvMzddIGZpeCBzcGxpdCB2ZXJzaW9uIHRvIGZpcnN0IDMgZWxlbWVudHMKKworVmFsdWVF cnJvcjogaW52YWxpZCBsaXRlcmFsIGZvciBpbnQoKSB3aXRoIGJhc2UgMTA6ICdwb3N0MicKKwor VmVyc2lvbnMgY2FuIGNvbnRhaW4gbm90IG9ubHkgZGlnaXRzIChmb3IgZXhhbXBsZSB3eCByZWxl YXNlczogNC4wLjcsIDQuMC43LnBvc3QxLCA0LjAuNy5wb3N0MiwgNC4xLjApCistLS0KKyBweXRo b24vbGliL3BsYXlvbmxpbnV4LnB5IHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3B5dGhvbi9saWIvcGxheW9u bGludXgucHkgYi9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5CitpbmRleCA4MjdkYjkyMDIuLjNl ODdkOTBhYSAxMDA3NTUKKy0tLSBhL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkKKysrKyBiL3B5 dGhvbi9saWIvcGxheW9ubGludXgucHkKK0BAIC0yNzgsMTEgKzI3OCwxMSBAQCBkZWYgVmVyc2lv bkxvd2VyKHZlcnNpb24xLCB2ZXJzaW9uMik6CisgICAgICAgICBlbHNlOgorICAgICAgICAgICAg IHJldHVybiBGYWxzZQorIAorLSAgICB2ZXJzaW9uMSA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQg aW4gdmVyc2lvbjFbMF0uc3BsaXQoIi4iKSBdCisrICAgIHZlcnNpb24xID0gWyBpbnQoZGlnaXQp IGZvciBkaWdpdCBpbiB2ZXJzaW9uMVswXS5zcGxpdCgiLiIpWzozXSBdCisgICAgIHdoaWxlIGxl bih2ZXJzaW9uMSkgPCAzOgorICAgICAgICAgdmVyc2lvbjEuYXBwZW5kKDApCisgCistICAgIHZl cnNpb24yID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMlswXS5zcGxpdCgiLiIp IF0KKysgICAgdmVyc2lvbjIgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24yWzBd LnNwbGl0KCIuIilbOjNdIF0KKyAgICAgd2hpbGUgbGVuKHZlcnNpb24yKSA8IDM6CisgICAgICAg ICB2ZXJzaW9uMi5hcHBlbmQoMCkKKyAKKworRnJvbSA2YTliZmFhMWRjNGY1MzdmMmVlMDNiOWFj OTlhZGY2ZmU4ZjJmMDQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXNCODUg PGtyenlzenRvZi5ibGFjaG93aWN6QGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjAgT2N0IDIwMjAg MTg6MTA6MzQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAxNC8zN10gUG9saXNoIHRyYW5zbGF0aW9u cworCistLS0KKyBsYW5nL3BvL3BsLnBvIHwgMTA5ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDY3IGluc2VydGlvbnMo KyksIDQyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGFuZy9wby9wbC5wbyBiL2xhbmcv cG8vcGwucG8KK2luZGV4IGFlNjlmNDk3ZS4uZjA0N2I1YjQ0IDEwMDY0NAorLS0tIGEvbGFuZy9w by9wbC5wbworKysrIGIvbGFuZy9wby9wbC5wbworQEAgLTExLDIyICsxMSwyMiBAQCBtc2dzdHIg IiIKKyAiUHJvamVjdC1JZC1WZXJzaW9uOiBwb2xcbiIKKyAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86 IFRpbm91XG4iCisgIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE1LTA4LTMxIDE5OjAwKzAyMDBcbiIK Ky0iUE8tUmV2aXNpb24tRGF0ZTogMjAxNC0wNC0yMyAxMzozNSswMDAwXG4iCisrIlBPLVJldmlz aW9uLURhdGU6IDIwMjAtMTAtMjAgMTg6MDkrMDIwMFxuIgorICJMYXN0LVRyYW5zbGF0b3I6IEFk YW0gTWHEh2tvd2lhayA8VW5rbm93bj5cbiIKKyAiTGFuZ3VhZ2UtVGVhbTogcGxfUEwuVVRGLTgg PExMQGxpLm9yZz5cbiIKKyAiTUlNRS1WZXJzaW9uOiAxLjBcbiIKKyAiQ29udGVudC1UeXBlOiB0 ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCisgIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6 IDhiaXRcbiIKKyAiWC1MYXVuY2hwYWQtRXhwb3J0LURhdGU6IDIwMTUtMDktMDEgMDU6MTIrMDAw MFxuIgorLSJYLUdlbmVyYXRvcjogTGF1bmNocGFkIChidWlsZCAxNzY5MClcbiIKKysiWC1HZW5l cmF0b3I6IFBvZWRpdCAyLjNcbiIKKysiTGFuZ3VhZ2U6IHBsXG4iCisgCisgIzogQ2FwdHVyZSBw bHVnaW46MiwgRGV0b3VyIHBsdWdpbjo0CisgbXNnaWQgIldoaWNoIGFwcGxpY2F0aW9uIGRvIHlv dSB3YW50IHRvIGFwcGx5IHRoZSBtb2RpZmljYXRpb24gdG8/IgorIG1zZ3N0ciAiRG8gamFraWVq IGFwbGlrYWNqaSBjaGNlc3ogd3lrb25hxIcgbW9keWZpa2FjamU/IgorIAorICM6IENhcHR1cmUg cGx1Z2luOjMKKy1tc2dpZCAiIgorLSJUaGlzIHBsdWdpbiB3aWwgYWxsb3cgeW91IHRvIGNhcHR1 cmUgeW91IGFwcGxpY2F0aW9ucyB1bmRlciBQbGF5T25MaW51eCIKKyttc2dpZCAiVGhpcyBwbHVn aW4gd2lsIGFsbG93IHlvdSB0byBjYXB0dXJlIHlvdSBhcHBsaWNhdGlvbnMgdW5kZXIgUGxheU9u TGludXgiCisgbXNnc3RyICJXdHljemthIHVtb8W8bGl3aWEgcHJ6ZWNod3l0eXdhbmllIG9icmF6 dSB6IGFwbGlrYWNqaSBwb2QgUGxheU9uTGludXgiCisgCisgIzogQ2FwdHVyZSBwbHVnaW46NAor QEAgLTU2LDggKzU2LDggQEAgbXNnaWQgIiIKKyAic3RhcnQgYXV0b21hdGljYWxseSBhZnRlciA1 IHNlY29uZHMuXFxuT25seSB2aWRlbyB3aWxsIGJlIGNhcHR1cmVkLiIKKyBtc2dzdHIgIiIKKyAi UHJvc3rEmSB3Y2lzbsSFxIcgRGFsZWosIG5hc3TEmXBuaWUga2xpa27EhcSHXFxudyBva25vIHBy b2dyYW11LCBrdMOzcmUgY2hjZXN6ICIKKy0icHJ6ZWNod3ljacSHLlxcbk5hZ3J5d2FuaWUgcm96 cG9jem5pZSBzacSZIGF1dG9tYXR5Y3puaWUgcG8gNSBzZWt1bmRhY2guXFwiCistIm5OYWdyYW55 IHpvc3RhbmllIHd5xYLEhWN6bmllIG9icmF6LiIKKysicHJ6ZWNod3ljacSHLlxcbk5hZ3J5d2Fu aWUgcm96cG9jem5pZSBzacSZIGF1dG9tYXR5Y3puaWUgcG8gNSBzZWt1bmRhY2guIgorKyJcXG5O YWdyYW55IHpvc3RhbmllIHd5xYLEhWN6bmllIG9icmF6LiIKKyAKKyAjOiBDYXB0dXJlIHBsdWdp bjoxMAorIG1zZ2lkICJDYXB0dXJlIHdpbGwgYmVnaW4uLi4iCitAQCAtMzA5LDcgKzMwOSw3IEBA IG1zZ3N0ciAiRG9rxYJhZG55IG9waXMgamVzdCB3eW1hZ2FueS4iCisgIzogYmFzaC9idWdfcmVw b3J0OjEwMQorICMsIHNoLWZvcm1hdAorIG1zZ2lkICJUaGFuayB5b3UgIVxcblxcbllvdXIgcmVw b3J0IGhhcyBiZWVuIHNlbnQuIgorLW1zZ3N0ciAiIgorK21zZ3N0ciAiRHppxJlrdWplbXkgIVxc blxcblR3b2plIHpnxYJvc3plbmllIHpvc3RhxYJvIHd5c8WCYW5lLiIKKyAKKyAjOiBiYXNoL2Ny ZWF0ZV9wcmVmaXg6MjYKKyAjLCBzaC1mb3JtYXQKK0BAIC00NTgsNiArNDU4LDkgQEAgbXNnaWQg IiIKKyAiYWxsIHRoZSB0b29sc1xcblxcbldhcm5pbmc6IFdlIGFyZSB1bmFibGUgdG8gZ3VhcmFu dGVlIHRoYXQgeW91ciBhcHBsaWNhdGlvbiAiCisgIndpbGwgd29yayBwZXJmZWN0bHkuIgorIG1z Z3N0ciAiIgorKyJXaXRhbXkgdyBrcmVhdG9yemUgaW5zdGFsYWNqaSByxJljem5laiAkQVBQTElD QVRJT05fVElUTEUuXFxuXFxuS3JlYXRvciB0ZW4gIgorKyJwb3p3b2xpIENpIHphaW5zdGFsb3dh xIcga2HFvGR5IHByb2dyYW0gdyAkQVBQTElDQVRJT05fVElUTEVcXG5cXG5Vd2FnYTogTmllICIK KysibW/FvGVteSB6YWd3YXJhbnRvd2HEhywgxbxlIHR3b2phIGFwbGlrYWNqYSBixJlkemllIGR6 aWHFgmHEhyBwb3ByYXduaWUuIgorIAorICM6IGJhc2gvbWFudWFsX2luc3RhbGw6MTAyCisgIywg c2gtZm9ybWF0CitAQCAtNzA3LDggKzcxMCw4IEBAIG1zZ2lkICIiCisgInRvb2wgT05MWSBpZiB5 b3UgQ0QtUk9NIGlzIGEgaHlicmlkZSBDRC1ST00gKENvbXBhdGlibGUgd2l0aCBXaW5kb3dzIGFu ZCAiCisgIk1hY09TKSwgYW5kIGlmIHlvdSBhcmUgbm90IGFibGUgdG8gc2VlIHRoZSBXaW5kb3dz IHBhcnQiCisgbXNnc3RyICIiCistIkR6acSZa2kgdGVtdSBuYXJ6xJlkemkgdHfDs2ogTWFjIGLE mWR6aWUgdyBzdGFuaWUgcHJ6ZWN6eXRhxIcgY3rEmcWbxIcgQ0QtUk9NdVxcIgorLSJucHJ6ZXpu YWN6b25lZ28gZGxhIGtvbXB1dGVyw7N3IFBDLlxcblxcblXFvHlqIHRlZ28gbmFyesSZZHppYSBU WUxLTyBqZcW8ZWxpICIKKysiRHppxJlraSB0ZW11IG5hcnrEmWR6aSB0d8OzaiBNYWMgYsSZZHpp ZSB3IHN0YW5pZSBwcnplY3p5dGHEhyBjesSZxZvEhyBDRC1ST011IgorKyJcXG5wcnplem5hY3pv bmVnbyBkbGEga29tcHV0ZXLDs3cgUEMuXFxuXFxuVcW8eWogdGVnbyBuYXJ6xJlkemlhIFRZTEtP IGplxbxlbGkgIgorICJwb3NpYWRhc3ogaHlicnlkb3d5IENELVJPTSAoa29tcGF0eWJpbG55IHog V2luZG93cyBpIE1hY09TKVxcbmkgdHlsa28gd3RlZHkgIgorICJnZHkgbmllIGplc3RlxZsgdyBz dGFuaWUgem9iYWN6ecSHIGN6xJnFm2NpIGRsYSBXaW5kb3dzYS4iCisgCitAQCAtNzYyLDE2ICs3 NjUsMTggQEAgbXNnaWQgIiIKKyAiJFBBQ0tBR0UgY3Jhc2hlZC5cXG5TZWxlY3QgaXRzIHNob3J0 Y3V0IGFuZCBjbGljayBvbiBcIkRlYnVnXCIgaW4gdGhlIHNpZGUgIgorICJwYW5lbCB0byBnZXQg bW9yZSBkZXRhaWxzLiIKKyBtc2dzdHIgIiIKKysiJFBBQ0tBR0UgdWxlZ8WCIGF3YXJpaS5cXG5a YXpuYWN6IGplZ28gc2tyw7N0IGkga2xpa25paiBcIkRlYnVndWpcIiB3IHBhbmVsdSAiCisrImJv Y3pueW0gYWJ5IHBvem5hxIcgc3pjemVnw7PFgnkuIgorIAorICM6IGJhc2gvcnVuX2FwcDoxMjAK KyAjLCBzaC1mb3JtYXQKKyBtc2dpZCAiJFBBQ0tBR0UgY3Jhc2hlZC4iCistbXNnc3RyICIkUEFD S0FHRSB6YXdpZXNpxYIgc2nEmS4iCisrbXNnc3RyICIkUEFDS0FHRSB1bGVnxYIgYXdhcmlpLiIK KyAKKyAjOiBiYXNoL3J1bl9leGU6MzMKKyAjLCBzaC1mb3JtYXQKKyBtc2dpZCAiV2FpdGluZyBY UXVhcnR6IHRvIGJlIGluc3RhbGxlZCIKKy1tc2dzdHIgIiIKKyttc2dzdHIgIk9jemVraXdhbmll IG5hIGluc3RhbGFjasSZIFhRdWFydHoiCisgCisgIzogYmFzaC9ydW5fZXhlOjcwCisgIywgc2gt Zm9ybWF0CitAQCAtODE1LDEyICs4MjAsMTIgQEAgbXNnc3RyICJJbnN0YWxhY2phIHpha2/FhGN6 b25hIgorICM6IGJhc2gvc3RhcnR1cF9hZnRlcl9zZXJ2ZXI6MzgKKyAjLCBzaC1mb3JtYXQKKyBt c2dpZCAiUGxheU9uTWFjIG5lZWRzIHRvIGluc3RhbGwgWFF1YXJ0eiB0byB3b3JrIHByb3Blcmx5 LiIKKy1tc2dzdHIgIiIKKyttc2dzdHIgIlBsYXlPbk1hYyB3eW1hZ2EgemFpbnN0YWxvd2FuaWEg WFF1YXJ0eiBkbyBwb3ByYXduZWdvIGR6aWHFgmFuaWEuIgorIAorICM6IGJhc2gvc3RhcnR1cF9h ZnRlcl9zZXJ2ZXI6MzkKKyAjLCBzaC1mb3JtYXQKKyBtc2dpZCAiUGxheU9uTWFjIHdpbGwgaGVs cCB5b3UgdG8gc2ltcGxpZnkgdGhpcyBzdGVwIgorLW1zZ3N0ciAiIgorK21zZ3N0ciAiUGxheU9u TWFjIHBvbW/FvGUgY2kgdXByb8WbY2nEhyB0ZW4ga3JvayIKKyAKKyAjOiBiYXNoL3N0YXJ0dXBf YWZ0ZXJfc2VydmVyOjQyCisgIywgc2gtZm9ybWF0CitAQCAtODYxLDYgKzg2Niw4IEBAIG1zZ3N0 ciAiWFF1YXJ0eiB6b3N0YcWCIHphaW5zdGFsb3dhbnkuIgorICMsIHNoLWZvcm1hdAorIG1zZ2lk ICJVbmFibGUgdG8gaW5zdGFsbCBYUXVhcnR6ISBZb3UgbXVzdCBpbnN0YWxsIGl0IHRvIHVzZSB3 aW5lIHByb3Blcmx5LiIKKyBtc2dzdHIgIiIKKysiTmllIHVkYcWCbyBzacSZIHphaW5zdGFsb3dh xIcgWFF1YXJ0eiEgSmVzdCBvbiB3eW1hZ2FueSBkbyBwb3ByYXduZWdvIGR6aWHFgmFuaWEgIgor KyJXaW5lLiIKKyAKKyAjOiBiYXNoL3VuaW5zdGFsbDozMSBiYXNoL3VuaW5zdGFsbDo2NSBiYXNo L3VuaW5zdGFsbDo2OCBiYXNoL3VuaW5zdGFsbDo3NQorICM6IGxpYi93aW5lLmxpYjo4NjcKK0BA IC05MzMsMTIgKzk0MCwxMiBAQCBtc2dzdHIgIiIKKyAjLCBzaC1mb3JtYXQKKyBtc2dpZCAiIgor ICIkQVBQTElDQVRJT05fVElUTEUgaGFzIGVuY291bnRlcmVkIGFuIGVycm9yLiBJZiB0aGUgcHJv Z3JhbSB5b3UgYXJlICIKKy0iaW5zdGFsbGluZyBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSwgaXQg bWlnaHQgYmUgdGhlIGNhdXNlIG9mIHRoZSBwcm9ibGVtLlxcIgorLSJuVmlzaXQgd3d3LiRQT0xf RE5TIHRvIGdldCBmdXJ0aGVyIGluZm9ybWF0aW9uIgorKyJpbnN0YWxsaW5nIGRvZXMgbm90IHdv cmsgY29ycmVjdGx5LCBpdCBtaWdodCBiZSB0aGUgY2F1c2Ugb2YgdGhlIHByb2JsZW0uIgorKyJc XG5WaXNpdCB3d3cuJFBPTF9ETlMgdG8gZ2V0IGZ1cnRoZXIgaW5mb3JtYXRpb24iCisgbXNnc3Ry ICIiCisgIiRBUFBMSUNBVElPTl9USVRMRSBuYXBvdGthxYIgbmEgYsWCxIVkLiBKZcWbbGkgcHJv Z3JhbSwga3TDs3J5IGplc3QgaW5zdGFsb3dhbnkgIgorLSJuaWUgZHppYcWCYSBwcmF3aWTFgm93 bywgdG8gbW/FvGUgYnnEhyBwcnp5Y3p5bsSFIHByb2JsZW11LlxcbiBPZHdpZWTFuiAiCistInd3 dy4kUE9MX0ROUyB3IGNlbHUgdXp5c2thbmlhIGRhbHN6eWNoIGluZm9ybWFjamkiCisrIm5pZSBk emlhxYJhIHByYXdpZMWCb3dvLCB0byBtb8W8ZSBiecSHIHByenljenluxIUgcHJvYmxlbXUuXFxu IE9kd2llZMW6IHd3dy4iCisrIiRQT0xfRE5TIHcgY2VsdSB1enlza2FuaWEgZGFsc3p5Y2ggaW5m b3JtYWNqaSIKKyAKKyAjOiBsaWIvZGVidWcubGliOjE1NQorICMsIHNoLWZvcm1hdAorQEAgLTk4 MCw5ICs5ODcsOSBAQCBtc2dpZCAiIgorICJ2YWxpZFxcblxcblBsYXlPbkxpbnV4IGhhcyBub3Qg YXBwcm92ZWQgdGhpcyBzY3JpcHQgYW5kIHdpbGwgbm90IGJlICIKKyAicmVzcG9uc2libGUgZnJv bSBpdC5cXG5QbGVhc2UgZW5zdXJlIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyAhIgorIG1z Z3N0ciAiIgorLSJPc3RyemXFvGVuaWUhXFxuXFxuU3lnbmF0dXJhIHRlZ28gc2tyeXB0dSBOSUUg amVzdCBwcmF3aWTFgm93YVxcblxcIgorLSJuUGxheU9uTGludXggbmllIHphYWtjZXB0b3dhxYIg dGVnbyBza3J5cHR1IG5pZSBixJlkemllIG9kcG93aWVkemlhbG55IHphIGplZ28gIgorLSJixYLE mWRuZSBkemlhxYJhbmllLlxcbktvbnR5bnV1aiB0eWxrbyBqZcWbbGkgd2llc3ogY28gcm9iaXN6 LiIKKysiT3N0cnplxbxlbmllIVxcblxcblN5Z25hdHVyYSB0ZWdvIHNrcnlwdHUgTklFIGplc3Qg cHJhd2lkxYJvd2FcXG4iCisrIlxcblBsYXlPbkxpbnV4IG5pZSB6YWFrY2VwdG93YcWCIHRlZ28g c2tyeXB0dSBuaWUgYsSZZHppZSBvZHBvd2llZHppYWxueSB6YSAiCisrImplZ28gYsWCxJlkbmUg ZHppYcWCYW5pZS5cXG5Lb250eW51dWogdHlsa28gamXFm2xpIHdpZXN6IGNvIHJvYmlzei4iCisg CisgIzogbGliL3BsYXlvbmxpbnV4LmxpYjozNDkgbGliL3BsYXlvbmxpbnV4LmxpYjozNzIKKyAj LCBzaC1mb3JtYXQKK0BAIC05OTYsOCArMTAwMyw4IEBAIG1zZ2lkICIiCisgInZhbGlkXFxuXFxu JEFQUExJQ0FUSU9OX1RJVExFIGhhcyBub3QgYXBwcm92ZWQgdGhpcyBzY3JpcHQgYW5kIHdpbGwg bm90IGJlICIKKyAicmVzcG9uc2libGUgZnJvbSBpdC5cXG5QbGVhc2UgZW5zdXJlIHlvdSBrbm93 IHdoYXQgeW91IGFyZSBkb2luZyEiCisgbXNnc3RyICIiCistIk9zdHJ6ZcW8ZW5pZSFcXG5cXG5T eWduYXR1cmEgdGVnbyBza3J5cHR1IE5JRSBqZXN0IHByYXdpZMWCb3dhXFxuXFwiCistIm4kQVBQ TElDQVRJT05fVElUTEUgbmllIHphYWtjZXB0b3dhxYIgdGVnbyBza3J5cHR1IG5pZSBixJlkemll IG9kcG93aWVkemlhbG55ICIKKysiT3N0cnplxbxlbmllIVxcblxcblN5Z25hdHVyYSB0ZWdvIHNr cnlwdHUgTklFIGplc3QgcHJhd2lkxYJvd2FcXG5cXG4iCisrIiRBUFBMSUNBVElPTl9USVRMRSBu aWUgemFha2NlcHRvd2HFgiB0ZWdvIHNrcnlwdHUgbmllIGLEmWR6aWUgb2Rwb3dpZWR6aWFsbnkg IgorICJ6YSBqZWdvIGLFgsSZZG5lIGR6aWHFgmFuaWUuXFxuS29udHludXVqIHR5bGtvIGplxZts aSB3aWVzeiBjbyByb2Jpc3ouIgorIAorICM6IGxpYi9wbGF5b25saW51eC5saWI6MzcyCitAQCAt MTA1NCw5ICsxMDYxLDExIEBAIG1zZ3N0ciAiIgorICM6IGxpYi9wbGF5b25saW51eC5saWI6OTEz CisgIywgc2gtZm9ybWF0CisgbXNnaWQgIiIKKy0iWW91ciBMaW51eCBrZXJuZWwgbWF5IG5vdCBi ZSBjb25maWd1cmVkIHRvIHJ1biBXaW4xNiBwcm9ncmFtcyB1bmRlciBXaW5lXFwiCistIm5TZWUg JEVYUExBTkFUSU9OX1VSTCIKKysiWW91ciBMaW51eCBrZXJuZWwgbWF5IG5vdCBiZSBjb25maWd1 cmVkIHRvIHJ1biBXaW4xNiBwcm9ncmFtcyB1bmRlciBXaW5lIgorKyJcXG5TZWUgJEVYUExBTkFU SU9OX1VSTCIKKyBtc2dzdHIgIiIKKysiSsSFZHJvIHR3b2plZ28gbGludWtzYSBtb8W8ZSBuaWUg YnnEhyBza29uZmlndXJvd2FuZSBkbyB1cnVjaGFtaWFuaWEgcHJvZ3JhbcOzdyAiCisrIldpbjE2 IHcgV2luZVxcblNlZSAkRVhQTEFOQVRJT05fVVJMIgorIAorICM6IGxpYi9wbGF5b25saW51eC5s aWI6OTE2CisgIywgc2gtZm9ybWF0CitAQCAtMTA2NCw2ICsxMDczLDggQEAgbXNnaWQgIiIKKyAi WW91ciBrZXJuZWwgbWF5IGJlIGluY29tcGF0aWJsZSB3aXRoIHJ1bm5pbmcgV2luMTYgcHJvZ3Jh bXMgdW5kZXIgV2luZVxcblNlZSAiCisgIiRFWFBMQU5BVElPTl9VUkwiCisgbXNnc3RyICIiCisr IkrEhWRybyB0d29qZWdvIGxpbnVrc2EgbW/FvGUgYnnEhyBuaWVrb21wYXR5YmlsbmUgeiBhcGxp a2FjamFtaSBXaW4xNiAiCisrInVydWNoYW1pYW55bWkgdyBXaW5lXFxuU2VlICRFWFBMQU5BVElP Tl9VUkwiCisgCisgIzogbGliL3BsdWdpbnMubGliOjYzCisgIywgc2gtZm9ybWF0CitAQCAtMTEz MSw3ICsxMTQyLDcgQEAgbXNnc3RyICIiCisgIzogbGliL3NjcmlwdHMubGliOjY5NiBsaWIvc2Ny aXB0cy5saWI6NzA0CisgIywgc2gtZm9ybWF0CisgbXNnaWQgIlBsZWFzZSB3YWl0IHdoaWxlICRB UFBMSUNBVElPTl9USVRMRSBpcyBoYW5kbGluZyBhcmNoaXZlLi4uIgorLW1zZ3N0ciAiIgorK21z Z3N0ciAiUHJvc3rEmSBjemVrYcSHLCAkQVBQTElDQVRJT05fVElUTEUgd3lwYWtvd3VqZSBhcmNo aXd1bS4uLiIKKyAKKyAjOiBsaWIvc2NyaXB0cy5saWI6NzI3CisgIywgc2gtZm9ybWF0CitAQCAt MTE2OSwxMSArMTE4MCwxMSBAQCBtc2dzdHIgIlJvem1pYXIgcGxpa3UgbmllIHpnYWR6YSBzacSZ ISIKKyAjOiBsaWIvc2NyaXB0cy5saWI6OTU1CisgIywgc2gtZm9ybWF0CisgbXNnaWQgIiIKKy0i U29ycnksICRBUFBMSUNBVElPTl9USVRMRSAkVkVSU0lPTiBpcyB0b28gb2xkIHRvIGNvbnRpbnVl LlxcIgorLSJuJEFQUExJQ0FUSU9OX1RJVExFICRORUVERUQgaXMgcmVxdWlyZWQuIgorKyJTb3Jy eSwgJEFQUExJQ0FUSU9OX1RJVExFICRWRVJTSU9OIGlzIHRvbyBvbGQgdG8gY29udGludWUuXFxu IgorKyIkQVBQTElDQVRJT05fVElUTEUgJE5FRURFRCBpcyByZXF1aXJlZC4iCisgbXNnc3RyICIi CistIiRBUFBMSUNBVElPTl9USVRMRSAkVkVSU0lPTiBqZXN0IHpieXQgc3RhcnkgYWJ5IGtvbnR5 bnVvd2HEhy5cXCIKKy0ibiRBUFBMSUNBVElPTl9USVRMRSAkTkVFREVEIGplc3Qgd3ltYWdhbnku IgorKyIkQVBQTElDQVRJT05fVElUTEUgJFZFUlNJT04gamVzdCB6Ynl0IHN0YXJ5IGFieSBrb250 eW51b3dhxIcuXFxuIgorKyIkQVBQTElDQVRJT05fVElUTEUgJE5FRURFRCBqZXN0IHd5bWFnYW55 LiIKKyAKKyAjOiBsaWIvc2NyaXB0cy5saWI6OTcwCisgIywgc2gtZm9ybWF0CitAQCAtMTI4NSw3 ICsxMjk2LDcgQEAgbXNnc3RyICJXeXN6dWtpd2FuaWUgd2lydHVhbG5lZ28gZHlza3UgdHdhcmRl Z28uLi4iCisgIzogbGliL3NldHVwd2luZG93LmxpYjo1ODIKKyAjLCBzaC1mb3JtYXQKKyBtc2dp ZCAiSG93IG11Y2ggbWVtb3J5IChpbiBNQikgZG9lcyB5b3VyIGdyYXBoaWNzIGJvYXJkIGhhdmU/ IgorLW1zZ3N0ciAiIgorK21zZ3N0ciAiSWxlIHBhbWnEmWNpICh3IE1CKSBwb3NpYWRhIHR3b2ph IGthcnRhIGdyYWZpY3puYT8iCisgCisgIzogbGliL3NldHVwd2luZG93LmxpYjo1OTEKKyAjLCBz aC1mb3JtYXQKK0BAIC0xMzY5LDcgKzEzODAsNyBAQCBtc2dzdHIgIlByemVnbMSFZGFqIgorICM6 IGxpYi9zZXR1cHdpbmRvdy5saWI6NzYzCisgIywgc2gtZm9ybWF0CisgbXNnaWQgIkEgc2hvcnRj dXQgYnkgdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzLCBvdmVyd3JpdGU/IgorLW1zZ3N0ciAiIgor K21zZ3N0ciAiU2tyw7N0IG8gdGVqIG5hendpZSBqdcW8IGlzdG5pZWplLCB6YXN0xIVwacSHIGdv PyIKKyAKKyAjOiBsaWIvd2Vic2l0ZS5saWI6MjkKKyAjLCBzaC1mb3JtYXQKK0BAIC0xNDAzLDYg KzE0MTQsOCBAQCBtc2dzdHIgIld5YmllcnogZ8WCw7N3bsSFIGthcnTEmSBncmFmaWN6bsSFIGt0 w7NyxIUgd2luZSBtYSB6Z8WCYXN6YcSHIGdyb20iCisgbXNnaWQgIiIKKyAiU3RhcnRpbmcgNjQt Yml0IHByb2Nlc3MgJEVYRUZJTEUgaXMgbm90IHN1cHBvcnRlZCBpbiAzMi1iaXQgdmlydHVhbCBk cml2ZXMiCisgbXNnc3RyICIiCisrIlVydWNoYW1pYW5pZSBwcm9jZXPDs3cgNjQtYml0b3d5Y2gg JEVYRUZJTEUgbmllIGplc3Qgb2JzxYJ1Z2l3YW5lIHcgMzItIgorKyJiaXRvd3ljaCBkeXNrYWNo IHdpcnR1YWxueWNoIgorIAorICM6IGxpYi93aW5lLmxpYjo1NzkKKyAjLCBzaC1mb3JtYXQKK0BA IC0xNjM4LDYgKzE2NTEsMTEgQEAgbXNnaWQgIiIKKyAiV2luZSB2ZXJzaW9uIGlzIGNoYW5nZWQu XG4iCisgIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb250aW51ZT8iCisgbXNnc3RyICIiCisr IlV3YWdhOlxuIgorKyJcbiIKKysiS2HFvGRhIHVydWNob21pb25hIGFwbGlrYWNqYSB6bmFqZHVq xIVjYSBzacSZIG5hIHR5bSBkeXNrdSB3aXJ0dWFsbnltIHpvc3RhbmllICIKKysiemF0cnp5bWFu YSBwcnplZCB6bWlhbsSFIHdlcnNqaSBXaW5lLlxuIgorKyJDenkgY2hjZXN6IGtvbnR5bnVvd2HE hz8iCisgCisgIzogcHl0aG9uL2NvbmZpZ3VyZS5weTo2MDYKKyBtc2dpZCAiIgorQEAgLTE3NTIs NyArMTc3MCw3IEBAIG1zZ3N0ciAiWmdhZHphbSBzacSZIgorIAorICM6IHB5dGhvbi9ndWl2My5w eToxNzkKKyBtc2dpZCAiRG9uJ3QgcmVtaW5kIG1lIGFueW1vcmUiCistbXNnc3RyICIiCisrbXNn c3RyICJOaWUgcHJ6eXBvbWluYWogbWkgd2nEmWNlaiIKKyAKKyAjOiBweXRob24vZ3VpdjMucHk6 MTgwCisgbXNnaWQgIlNob3cgdmlydHVhbCBkcml2ZXMiCitAQCAtMTg3NSw3ICsxODkzLDcgQEAg bXNnc3RyICIiCisgCisgIzogcHl0aG9uL2luc3RhbGwucHk6NTc3CisgbXNnaWQgIkF0dGVudGlv biEiCistbXNnc3RyICIiCisrbXNnc3RyICJVd2FnYSEiCisgCisgIzogcHl0aG9uL2luc3RhbGwu cHk6NTc3CisgbXNnaWQgIiIKK0BAIC0xODg3LDYgKzE5MDUsMTMgQEAgbXNnaWQgIiIKKyAicGly YWN5IGFuZCBhcyBzdWNoLCB3ZSB3aWxsIG5vdCBvZmZlciBhbnkgc3VwcG9ydCBmb3IgaXNzdWVz IHJlc3VsdGluZyBmcm9tICIKKyAidXNpbmcgdGhpcyBvcHRpb24uIgorIG1zZ3N0ciAiIgorKyJX xYLEhWN6YWrEhWMgdMSZIG9wY2rEmSwgbW/FvGVzeiBpbnN0YWxvd2HEhyBwcm9ncmFteSB1xbx5 d2FqxIVjZSBzeXN0ZW11IHphcnrEhWR6YW5pYSAiCisrInByYXdhbWkgY3lmcm93eW1pIChEUk0p LCBhbGUgbmllIHPEhSBvbmUgd3NwaWVyYW5lIHByemV6IHswfSBpIG1vZ8SFIHd5bWFnYcSHICIK Kysib2JlasWbY2lhLlxuIgorKyJcbiIKKysiRnVua2NqYSB0YSBuaWUgcG93aW5uYSBiecSHIGlu dGVycHJldG93YW5hIGpha28gdWtyeXRlIGx1YiBkb21uaWVtYW5lICIKKysicHJ6eXp3b2xlbmll IG5hIHBpcmFjdHdvIGkgbmllIGLEmWR6aWVteSBvZmVyb3dhxIcgxbxhZG5lZ28gd3NwYXJjaWEg dyAiCisrImt3ZXN0aWFjaCB3eW5pa2FqxIVjeWNoIHoga29yenlzdGFuaWEgeiB0ZWogb3Bjamku IgorIAorICM6IHB5dGhvbi9pbnN0YWxsLnB5OjU4MAorIG1zZ2lkICIiCitAQCAtMTk3NiwyMyAr MjAwMSwyMyBAQCBtc2dzdHIgIk1lbmVkxbxlciB3dHljemVrIgorIAorICM6IHB5dGhvbi9tYWlu d2luZG93LnB5OjI5NAorIG1zZ2lkICJTdXBwb3J0ZWQgc29mdHdhcmUiCistbXNnc3RyICIiCisr bXNnc3RyICJPYnPFgnVnaXdhbmUgb3Byb2dyYW1vd2FuaWUiCisgCisgIzogcHl0aG9uL21haW53 aW5kb3cucHk6Mjk1CisgbXNnaWQgIk5ld3MiCistbXNnc3RyICIiCisrbXNnc3RyICJBa3R1YWxu b8WbY2kiCisgCisgIzogcHl0aG9uL21haW53aW5kb3cucHk6Mjk2CisgbXNnaWQgIkRvY3VtZW50 YXRpb24iCistbXNnc3RyICIiCisrbXNnc3RyICJEb2t1bWVudGFjamEiCisgCisgIzogcHl0aG9u L21haW53aW5kb3cucHk6Mjk3CisgbXNnaWQgIkZvcnVtcyIKKy1tc2dzdHIgIiIKKyttc2dzdHIg IkZvcmEgZHlza3VzeWpuZSIKKyAKKyAjOiBweXRob24vbWFpbndpbmRvdy5weToyOTgKKyBtc2dp ZCAiQnVncyIKKy1tc2dzdHIgIiIKKyttc2dzdHIgIkLFgsSZZHkiCisgCisgIzogcHl0aG9uL21h aW53aW5kb3cucHk6MzAwCisgbXNnaWQgIlR3aXR0ZXIiCitAQCAtMjAyOCw3ICsyMDUzLDcgQEAg bXNnc3RyICJXdHljemtpIgorIAorICM6IHB5dGhvbi9tYWlud2luZG93LnB5OjM2OQorIG1zZ2lk ICJTdXBwb3J0IgorLW1zZ3N0ciAiIgorK21zZ3N0ciAiV3NwYXJjaWUiCisgCisgIzogcHl0aG9u L21haW53aW5kb3cucHk6MzgxIHB5dGhvbi9tYWlud2luZG93LnB5Ojc3NworIG1zZ2lkICJDbG9z ZSIKK0BAIC0yMDgwLDcgKzIxMDUsNyBAQCBtc2dzdHIgIkRlYnVndWoiCisgCisgIzogcHl0aG9u L21haW53aW5kb3cucHk6Nzg1CisgbXNnaWQgIlNlbmQgYSBmZWVkYmFjayIKKy1tc2dzdHIgIiIK Kyttc2dzdHIgIld5xZtsaWogemfFgm9zemVuaWUiCisgCisgIzogcHl0aG9uL21haW53aW5kb3cu cHk6NzkwCisgbXNnaWQgIkNyZWF0ZSBhIHNob3J0Y3V0IgorQEAgLTIxMTcsNyArMjE0Miw3IEBA IG1zZ3N0ciAiV2lydHVhbG55IGR5c2sgdHdhcmR5IHp3acSFemFueSB6IHswfSAoezF9KSBuaWUg aXN0bmllamUuIgorIAorICM6IHB5dGhvbi9tYWlud2luZG93LnB5OjExMDIKKyBtc2dpZCAiQXJl IHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIGFsbCB7MH0gd2luZG93cz8iCistbXNnc3RyICIi CisrbXNnc3RyICJDenkgbmEgcGV3bm8gY2hjZXN6IHphbWtuxIXEhyB3c3p5c3RraWUgezB9IG9r bmE/IgorIAorICM6IHB5dGhvbi9tYWlud2luZG93LnB5OjExMjQKKyBtc2dpZCAiUnVuIHlvdXIg V2luZG93cyBwcm9ncmFtcyBvbiAiCitAQCAtMjM0Miw3ICsyMzY3LDcgQEAgbXNnc3RyICJKZXN0 ZcWbIHBld2llbiB6ZSBjaGNlc3ogdXN1bsSFxIcgV2luZSB7MH0/IgorIAorICM6IHB5dGhvbi93 aW5lX3ZlcnNpb25zLnB5OjMzNAorIG1zZ2lkICJUaGlzIHZlcnNpb24gaXMgQ1VSUkVOVExZIElO IFVTRSIKKy1tc2dzdHIgIiIKKyttc2dzdHIgIlRhIHdlcnNqYSBqZXN0IG9iZWNuaWUgdyB1xbx5 Y2l1IgorIAorICM6IHB5dGhvbi93cmFwcGVyLnB5OjEzNQorIG1zZ2lkICJ7MH0gaXMgbm90IGFi bGUgdG8gc3RhcnQgUE9MX1NldHVwV2luZG93X3NlcnZlci4iCisKK0Zyb20gOGYwODI2MzJjMzBj ODU0NjFjNzZmMGY5NWFjNzQ3Njc1YmMwYWY5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IFF1ZW50aW4gUEFSSVMgPGdpdEBxdWVudGluLnBhcmlzPgorRGF0ZTogU3VuLCAyNCBKYW4g MjAyMSAxNToyMTo1NCArMDEwMAorU3ViamVjdDogW1BBVENIIDE1LzM3XSBSZWFmY3RvcmluZyB3 aW5lIHZlcnNpb24gbWFuYWdlciBjb2RlCisKKy0tLQorIGJhc2gvc3RhcnR1cCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCArCisgbGliL3ZhcmlhYmxlcyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKKyBsaWIvd2luZS5saWIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDIxNTkgKysrKysrKysrLS0tLS0tLS0tCisgcHl0aG9uL2xp Yi9WYXJpYWJsZXMucHkgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICstCisgcHl0aG9uL21h aW53aW5kb3cucHkgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICstCisgcHl0aG9uL3dp bmVfdmVyc2lvbnMvV2luZVZlcnNpb25zRmV0Y2hlci5weSAgfCAgMTM5ICstCisgcHl0aG9uL3dp bmVfdmVyc2lvbnMvV2luZVZlcnNpb25zTm90ZWJvb2sucHkgfCAgMTM5ICstCisgcHl0aG9uL3dp bmVfdmVyc2lvbnMvV2luZVZlcnNpb25zVG9vbHMucHkgICAgfCAgIDI0ICstCisgcHl0aG9uL3dp bmVfdmVyc2lvbnMvV2luZVZlcnNpb25zV2luZG93LnB5ICAgfCAgMjYwICstLQorIDkgZmlsZXMg Y2hhbmdlZCwgMTMxNSBpbnNlcnRpb25zKCspLCAxNDI2IGRlbGV0aW9ucygtKQorCitkaWZmIC0t Z2l0IGEvYmFzaC9zdGFydHVwIGIvYmFzaC9zdGFydHVwCitpbmRleCBhYjBiNWRjYjUuLmZiNjJl N2E4YiAxMDA3NTUKKy0tLSBhL2Jhc2gvc3RhcnR1cAorKysrIGIvYmFzaC9zdGFydHVwCitAQCAt MzEsNiArMzEsMTQgQEAgYnVpbGRfdXNlcl9zdGF0ZV9kaXJlY3RvcnkKKyAjIENsZWFuaW5nIHRt cCBkaXJlY3RvcnkKKyBjbGVhbl90bXAKKyAKKysjIE1hYyBPUyBDYXRhbGluYTogUmVtb3ZlIGxl Z2FjeSB3aW5lIHZlcnNpb25zCisraWYgW1sgIiRPU1hfVkVSU0lPTiIgLWdlIDE5IF1dOyB0aGVu CisrICAgIGlmIFtbICEgLWUgIiRQT0xfVVNFUl9ST09UL3dpbmUvZGFyd2luLXg4Ni1sZWdhY3ki IF1dOyB0aGVuCisrICAgICAgICBbWyAtZSAiJFBPTF9VU0VSX1JPT1Qvd2luZS9kYXJ3aW4teDg2 IiBdXSAmJiBtdiAiJFBPTF9VU0VSX1JPT1Qvd2luZS9kYXJ3aW4teDg2IiAiJFBPTF9VU0VSX1JP T1Qvd2luZS9kYXJ3aW4teDg2LWxlZ2FjeSIKKysgICAgICAgIG1rZGlyIC1wICIkUE9MX1VTRVJf Uk9PVC93aW5lL2Rhcndpbi14ODYtbGVnYWN5IgorKyAgICBmaQorK2ZpCisrCisgIyMjIE9wZXJh dGlvbnMgYmVsb3cgYXJlIGJhY2tncm91bmQgYXN5bmNocm9ub3VzIHRhc2tzCisgCisgKAorZGlm ZiAtLWdpdCBhL2xpYi92YXJpYWJsZXMgYi9saWIvdmFyaWFibGVzCitpbmRleCAzZGY0YjY3MDgu LjljMTZmZTFhNyAxMDA3NTUKKy0tLSBhL2xpYi92YXJpYWJsZXMKKysrKyBiL2xpYi92YXJpYWJs ZXMKK0BAIC0yMSw2ICsyMSw3IEBACisgIyMgSGFjayBmb3IgRWwgQ2FwaXRhaW4KKyBbICEgIiRX UklURV9MRCIgPSAiIiBdICYmIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiRXUklURV9MRCIKKyBb ICEgIiRXUklURV9EWUxEIiA9ICIiIF0gJiYgZXhwb3J0IERZTERfTElCUkFSWV9QQVRIPSIkV1JJ VEVfRFlMRCIKKytbICEgIiRXUklURV9EWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCIgPSAiIiBd ICYmIGV4cG9ydCBEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSD0iJFdSSVRFX0RZTERfRkFMTEJB Q0tfTElCUkFSWV9QQVRIIgorIAorICMgVGhpcyBpcyBqdXN0IGEgY29weSBvZiBmdW5jdGlvbiBp biBwbGF5b25saW51eCwgYnV0IHdlIG5lZWQgaXQgZWFybGllcgorIFsgIiRQT0xfT1MiID0gIk1h YyIgXSAmJiBleHBvcnQgTEFORz0iJFJMQU5HIgorZGlmZiAtLWdpdCBhL2xpYi93aW5lLmxpYiBi L2xpYi93aW5lLmxpYgoraW5kZXggNzcxNzlkMTM3Li5kMjdkZTE1MDkgMTAwNzU1CistLS0gYS9s aWIvd2luZS5saWIKKysrKyBiL2xpYi93aW5lLmxpYgorQEAgLTIyLDgyICsyMiw4MyBAQAorICMK KyAjIFRoaXMgbGliIGNvbnRhaW5zIHdpbmUncyBhcGkKKyAKKy1QT0xfV2luZV9HZXRSZWdWYWx1 ZSgpCisteworLQkjIEdldCBhIHZhbHVlIGluIHJlZ2lzdHJ5CistCSMgRXhhbXBsZSA6IFBPTF9X aW5lX0dldFJlZ19WYWx1ZSBNdWx0aXNhbXBsaW5nCistCSMKKy0JIyBSZWFkIGh0dHA6Ly93aWtp LndpbmVocS5vcmcvVXNlZnVsUmVnaXN0cnlLZXlzCistCistCVsgLXogIiRXSU5FUFJFRklYIiBd ICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorLQlsb2NhbCB2YWx1ZQor LQkjIHRyIC1kICdcMCcgaXMgYSB3b3JrYXJvdW5kIGZvciBXaW5lIGJ1ZyAjMzc1NzUKKy0JWyAt ZSAiJFdJTkVQUkVGSVgvdXNlci5yZWciIF0gJiYgdmFsdWU9IiQoZ3JlcCAiXlwiJDFcIj0iICIk V0lORVBSRUZJWC91c2VyLnJlZyIgfCBoZWFkIC1uIDEgfCB0ciAtZCAnIicgfCBjdXQgLWQ9IC1m Mi0gfCB0ciAtZCAnXDAnKSIKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIkdldHRpbmcgcmVnaXN0cnkg dmFsdWUgJDEuIFJldHVybjogJHZhbHVlIgorLQllY2hvIC1uICIke3ZhbHVlOi1kZWZhdWx0fSIK KytQT0xfV2luZV9HZXRSZWdWYWx1ZSgpIHsKKysgICMgR2V0IGEgdmFsdWUgaW4gcmVnaXN0cnkK KysgICMgRXhhbXBsZSA6IFBPTF9XaW5lX0dldFJlZ19WYWx1ZSBNdWx0aXNhbXBsaW5nCisrICAj CisrICAjIFJlYWQgaHR0cDovL3dpa2kud2luZWhxLm9yZy9Vc2VmdWxSZWdpc3RyeUtleXMKKysK KysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBu b3Qgc2V0IgorKyAgbG9jYWwgdmFsdWUKKysgICMgdHIgLWQgJ1wwJyBpcyBhIHdvcmthcm91bmQg Zm9yIFdpbmUgYnVnICMzNzU3NQorKyAgWyAtZSAiJFdJTkVQUkVGSVgvdXNlci5yZWciIF0gJiYg dmFsdWU9IiQoZ3JlcCAiXlwiJDFcIj0iICIkV0lORVBSRUZJWC91c2VyLnJlZyIgfCBoZWFkIC1u IDEgfCB0ciAtZCAnIicgfCBjdXQgLWQ9IC1mMi0gfCB0ciAtZCAnXDAnKSIKKysgIFBPTF9EZWJ1 Z19NZXNzYWdlICJHZXR0aW5nIHJlZ2lzdHJ5IHZhbHVlICQxLiBSZXR1cm46ICR2YWx1ZSIKKysg IGVjaG8gLW4gIiR7dmFsdWU6LWRlZmF1bHR9IgorIH0KKyAKKy1QT0xfV2luZV9VcGRhdGVSZWdp c3RyeSAoKQorLXsKKy0JIyBVc2FnZTogUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgcmVnYmFzZW5h bWUKKy0JIyByZWdpc3RyeSBmaWxlIG11c3QgYmUgcHJvdmlkZWQgdGhydSBzdGRpbgorLQkjIEZp bGUgc2lnbmF0dXJlICgiUkVHRURJVDQiKSBpbiBhcHBlbmRlZCBhdXRvbWF0aWNhbGx5CistCist CShlY2hvICJSRUdFRElUNCI7IGVjaG8gIiI7IGNhdCkgPiAiJFBPTF9VU0VSX1JPT1QvdG1wLyQx LnJlZyIKKy0JUE9MX1dpbmUgcmVnZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wLyQxLnJlZyIgJiYK Ky0Jcm0gIiRQT0xfVVNFUl9ST09UL3RtcC8kMS5yZWciCisrUE9MX1dpbmVfVXBkYXRlUmVnaXN0 cnkoKSB7CisrICAjIFVzYWdlOiBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeSByZWdiYXNlbmFtZQor KyAgIyByZWdpc3RyeSBmaWxlIG11c3QgYmUgcHJvdmlkZWQgdGhydSBzdGRpbgorKyAgIyBGaWxl IHNpZ25hdHVyZSAoIlJFR0VESVQ0IikgaW4gYXBwZW5kZWQgYXV0b21hdGljYWxseQorKworKyAg KAorKyAgICBlY2hvICJSRUdFRElUNCIKKysgICAgZWNobyAiIgorKyAgICBjYXQKKysgICkgPiIk UE9MX1VTRVJfUk9PVC90bXAvJDEucmVnIgorKyAgUE9MX1dpbmUgcmVnZWRpdCAiJFBPTF9VU0VS X1JPT1QvdG1wLyQxLnJlZyIgJiYKKysgICAgcm0gIiRQT0xfVVNFUl9ST09UL3RtcC8kMS5yZWci CisgfQorIAorLVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5UGFpciAoKQorLXsKKy0JIyBVc2FnZTog UE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlQYWlyIGtleSBuYW1lIFstLXN6fC0tYmluYXJ5fC0tZHdv cmR8LS1tdWx0aXN6XSBkYXRhCistCSMgZGF0YT0iZGVmYXVsdCI6IHJlbW92ZSB0aGUgbmFtZQor LSAgICAgICAgbG9jYWwga2V5PSIkMSIKKy0gICAgICAgIGxvY2FsIHN1YmtleT0iJDIiCistICAg ICAgICBzaGlmdCAyCistICAgICAgICBsb2NhbCB2YWx1ZQorLSAgICAgICAgY2FzZSAiJDEiIGlu CistICAgICAgICAgIC0tc3p8LS1TWikKKy0gICAgICAgICAgICBzaGlmdAorLSAgICAgICAgICAg ICMgYmFja3NsYXNoIFxzIGFuZCAicz8KKy0gICAgICAgICAgICB2YWx1ZT0iXCIkMVwiIgorLSAg ICAgICAgICAgIDs7CistICAgICAgICAgIC0tYmluYXJ5fC0tQklOQVJZKQorLSAgICAgICAgICAg IHNoaWZ0CistICAgICAgICAgICAgdmFsdWU9ImhleDokMSIKKy0gICAgICAgICAgICA7OworLSAg ICAgICAgICAtLWR3b3JkfC0tRFdPUkQpCistICAgICAgICAgICAgc2hpZnQKKy0gICAgICAgICAg ICB2YWx1ZT0iZHdvcmQ6JDEiCistICAgICAgICAgICAgOzsKKy0gICAgICAgICAgLS1tdWx0aXN6 fC0tTVVMVElTWikKKy0gICAgICAgICAgICBzaGlmdAorLSAgICAgICAgICAgIHZhbHVlPSJoZXgo Nyk6JDEiCistICAgICAgICAgICAgOzsKKy0gICAgICAgICAgLS0qKQorLSAgICAgICAgICAgIFBP TF9EZWJ1Z19GYXRhbCAiVW5yZWNvZ25pemVkIHZhbHVlIHR5cGU6ICQxLCBzdXBwb3J0ZWQgYXJl IC0tc3ogLS1iaW5hcnkgLS1kd29yZCAtLW11bHRpc3oiCistICAgICAgICAgICAgOzsKKy0gICAg ICAgICAgZGVmYXVsdCkKKy0gICAgICAgICAgICB2YWx1ZT0iLSIKKy0gICAgICAgICAgICA7Owor LSAgICAgICAgICAqKQorLSAgICAgICAgICAgICMgYmFja3NsYXNoIFxzIGFuZCAicz8KKy0gICAg ICAgICAgICB2YWx1ZT0iXCIkMVwiIgorLSAgICAgICAgZXNhYworLQorLQkJUE9MX1dpbmVfVXBk YXRlUmVnaXN0cnkgcmVna2V5IDw8LSBfRU9GSU5JXworK1BPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5 UGFpcigpIHsKKysgICMgVXNhZ2U6IFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5UGFpciBrZXkgbmFt ZSBbLS1zenwtLWJpbmFyeXwtLWR3b3JkfC0tbXVsdGlzel0gZGF0YQorKyAgIyBkYXRhPSJkZWZh dWx0IjogcmVtb3ZlIHRoZSBuYW1lCisrICBsb2NhbCBrZXk9IiQxIgorKyAgbG9jYWwgc3Via2V5 PSIkMiIKKysgIHNoaWZ0IDIKKysgIGxvY2FsIHZhbHVlCisrICBjYXNlICIkMSIgaW4KKysgIC0t c3ogfCAtLVNaKQorKyAgICBzaGlmdAorKyAgICAjIGJhY2tzbGFzaCBccyBhbmQgInM/CisrICAg IHZhbHVlPSJcIiQxXCIiCisrICAgIDs7CisrICAtLWJpbmFyeSB8IC0tQklOQVJZKQorKyAgICBz aGlmdAorKyAgICB2YWx1ZT0iaGV4OiQxIgorKyAgICA7OworKyAgLS1kd29yZCB8IC0tRFdPUkQp CisrICAgIHNoaWZ0CisrICAgIHZhbHVlPSJkd29yZDokMSIKKysgICAgOzsKKysgIC0tbXVsdGlz eiB8IC0tTVVMVElTWikKKysgICAgc2hpZnQKKysgICAgdmFsdWU9ImhleCg3KTokMSIKKysgICAg OzsKKysgIC0tKikKKysgICAgUE9MX0RlYnVnX0ZhdGFsICJVbnJlY29nbml6ZWQgdmFsdWUgdHlw ZTogJDEsIHN1cHBvcnRlZCBhcmUgLS1zeiAtLWJpbmFyeSAtLWR3b3JkIC0tbXVsdGlzeiIKKysg ICAgOzsKKysgIGRlZmF1bHQpCisrICAgIHZhbHVlPSItIgorKyAgICA7OworKyAgKikKKysgICAg IyBiYWNrc2xhc2ggXHMgYW5kICJzPworKyAgICB2YWx1ZT0iXCIkMVwiIgorKyAgICA7OworKyAg ZXNhYworKworKyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgcmVna2V5IDw8LV9FT0ZJTklfCisg CQlbJGtleV0KKyAJCSIkc3Via2V5Ij0kdmFsdWUKKyAJCV9FT0ZJTklfCisgfQorIAorLVBPTF9X aW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgKCkKKy17CistCSMgVXNhZ2U6IFBPTF9XaW5lX1Vw ZGF0ZVJlZ2lzdHJ5UGFpciBzdWJrZXkgbmFtZSBbLS1zenwtLWJpbmFyeXwtLWR3b3JkfC0tbXVs dGlzel0gZGF0YQorLQkjIGRhdGE9ImRlZmF1bHQiOiByZW1vdmUgdGhlIG5hbWUKKytQT0xfV2lu ZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyKCkgeworKyAgIyBVc2FnZTogUE9MX1dpbmVfVXBkYXRl UmVnaXN0cnlQYWlyIHN1YmtleSBuYW1lIFstLXN6fC0tYmluYXJ5fC0tZHdvcmR8LS1tdWx0aXN6 XSBkYXRhCisrICAjIGRhdGE9ImRlZmF1bHQiOiByZW1vdmUgdGhlIG5hbWUKKyAKKy0JIyBQdXQg YSAiXCIgYmVmb3JlICQxIGlmIGl0J3Mgbm90IGVtcHR5CistCVBPTF9XaW5lX1VwZGF0ZVJlZ2lz dHJ5UGFpciAiSEtFWV9DVVJSRU5UX1VTRVJcXFNvZnR3YXJlXFxXaW5lJHsxOitcXCQxfSIgIiQy IiAiJDMiICIkNCIKKysgICMgUHV0IGEgIlwiIGJlZm9yZSAkMSBpZiBpdCdzIG5vdCBlbXB0eQor KyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlQYWlyICJIS0VZX0NVUlJFTlRfVVNFUlxcU29mdHdh cmVcXFdpbmUkezE6K1xcJDF9IiAiJDIiICIkMyIgIiQ0IgorIH0KKyAKKyAjIEZvciBhbGwgZnVu Y3Rpb25zIGJlbG93LCB0aGF0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgY29udHJvbCBwYW5lbDoK K0BAIC0xMDUsMzYxICsxMDYsMzQ0IEBAIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIg KCkKKyAjICAgY2hhbmdlZCBXaW5lIHZlcnNpb24gb3V0IG9mIG91ciBjb250cm9sOworICMgLSBL aWxsIHdpbmVzZXJ2ZXIgYWZ0ZXIgcmVnZWRpdCBzbyBjaGFuZ2UgdGFrZXMgZWZmZWN0IGltbWVk aWF0ZWx5CisgCistUE9MX1dpbmVfRGlyZWN0M0QgKCkKKy17CistCSMgQ2hhbmdlIGEgRGlyZWN0 M0QgdmFsdWUgaW4gcmVnaXN0cnkKKy0JIyBVc2FnZSBQT0xfV2luZV9EaXJlY3QzRCBLZXkgIFst LXN6fC0tYmluYXJ5fC0tZHdvcmR8LS1tdWx0aXN6XSBWYWx1ZQorK1BPTF9XaW5lX0RpcmVjdDNE KCkgeworKyAgIyBDaGFuZ2UgYSBEaXJlY3QzRCB2YWx1ZSBpbiByZWdpc3RyeQorKyAgIyBVc2Fn ZSBQT0xfV2luZV9EaXJlY3QzRCBLZXkgIFstLXN6fC0tYmluYXJ5fC0tZHdvcmR8LS1tdWx0aXN6 XSBWYWx1ZQorIAorLQkjIEV4YW1wbGUgOjogUE9MX1dpbmVfRGlyZWN0M0QgVXNlR0xTTCBbZGVm YXVsdCAvIGVuYWJsZWQgLyBkaXNhYmxlZF0KKy0JIyBkZWZhdWx0OiByZW1vdmUgdGhlIGtleQor LQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIERpcmVjdDNEICRXSU5FUFJFRklYICQx ICQyICQzIgorLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQ UkVGSVggbm90IHNldCIKKysgICMgRXhhbXBsZSA6OiBQT0xfV2luZV9EaXJlY3QzRCBVc2VHTFNM IFtkZWZhdWx0IC8gZW5hYmxlZCAvIGRpc2FibGVkXQorKyAgIyBkZWZhdWx0OiByZW1vdmUgdGhl IGtleQorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBEaXJlY3QzRCAkV0lORVBS RUZJWCAkMSAkMiAkMyIKKysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRh bCAiV0lORVBSRUZJWCBub3Qgc2V0IgorIAorLQlQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgor LQl3aW5lc2VydmVyIC1rCistCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVj dDNEJyAiJDEiICIkMiIgIiQzIgorLQl3aW5lc2VydmVyIC1rCisrICBQT0xfV2luZV9BdXRvU2V0 VmVyc2lvbkVudgorKyAgd2luZXNlcnZlciAtaworKyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlX aW5lUGFpciAnRGlyZWN0M0QnICIkMSIgIiQyIiAiJDMiCisrICB3aW5lc2VydmVyIC1rCisgfQor IAorLVBPTF9XaW5lX1gxMURydiAoKQorLXsKKy0JIyBDaGFuZ2UgYSBYMTFEcnYgdmFsdWUgaW4g cmVnaXN0cnkKKy0JIyBVc2FnZSBQT0xfV2luZV9YMTFEcnYgS2V5IFstLXN6fC0tYmluYXJ5fC0t ZHdvcmR8LS1tdWx0aXN6XSBWYWx1ZQorK1BPTF9XaW5lX1gxMURydigpIHsKKysgICMgQ2hhbmdl IGEgWDExRHJ2IHZhbHVlIGluIHJlZ2lzdHJ5CisrICAjIFVzYWdlIFBPTF9XaW5lX1gxMURydiBL ZXkgWy0tc3p8LS1iaW5hcnl8LS1kd29yZHwtLW11bHRpc3pdIFZhbHVlCisgCistCSMgRXhhbXBs ZSA6OiBQT0xfV2luZV9YMTFEcnYgVXNlR0xTTCBbZGVmYXVsdCAvIGVuYWJsZWQgLyBkaXNhYmxl ZF0KKy0JIyBkZWZhdWx0OiByZW1vdmUgdGhlIGtleQorLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0 dGluZyB3aW5lIFgxMURydiAkV0lORVBSRUZJWCAkMSAkMiAkMyIKKy0JWyAteiAiJFdJTkVQUkVG SVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisrICAjIEV4YW1w bGUgOjogUE9MX1dpbmVfWDExRHJ2IFVzZUdMU0wgW2RlZmF1bHQgLyBlbmFibGVkIC8gZGlzYWJs ZWRdCisrICAjIGRlZmF1bHQ6IHJlbW92ZSB0aGUga2V5CisrICBQT0xfRGVidWdfTWVzc2FnZSAi U2V0dGluZyB3aW5lIFgxMURydiAkV0lORVBSRUZJWCAkMSAkMiAkMyIKKysgIFsgLXogIiRXSU5F UFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorIAorLQlQ T0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgorLQl3aW5lc2VydmVyIC1rCistCVBPTF9XaW5lX1Vw ZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICIkMSIgIiQyIiAiJDMiCistCXdpbmVz ZXJ2ZXIgLWsKKysgIFBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52CisrICB3aW5lc2VydmVyIC1r CisrICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAiJDEiICIk MiIgIiQzIgorKyAgd2luZXNlcnZlciAtaworIH0KKyAKKy1QT0xfV2luZV9EaXJlY3RTb3VuZCAo KQorLXsKKy0JIyBTYW1lIHRoYXQgUE9MX1dpbmVfRGlyZWN0M0QsIGJ1dCBmb3IgRGlyZWN0U291 bmQKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBEaXJlY3RTb3VuZCAkV0lORVBS RUZJWCAkMSAkMiAkMyIKKy0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFs ICJXSU5FUFJFRklYIG5vdCBzZXQiCisrUE9MX1dpbmVfRGlyZWN0U291bmQoKSB7CisrICAjIFNh bWUgdGhhdCBQT0xfV2luZV9EaXJlY3QzRCwgYnV0IGZvciBEaXJlY3RTb3VuZAorKyAgUE9MX0Rl YnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBEaXJlY3RTb3VuZCAkV0lORVBSRUZJWCAkMSAkMiAk MyIKKysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJ WCBub3Qgc2V0IgorIAorLQlQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgorLQl3aW5lc2VydmVy IC1rCistCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNvdW5kJyAiJDEi ICIkMiIgIiQzIgorLQl3aW5lc2VydmVyIC1rCisrICBQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVu dgorKyAgd2luZXNlcnZlciAtaworKyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAn RGlyZWN0U291bmQnICIkMSIgIiQyIiAiJDMiCisrICB3aW5lc2VydmVyIC1rCisgfQorIAorLVBP TF9XaW5lX0RpcmVjdElucHV0ICgpCisteworLQkjIFNhbWUgdGhhdCBQT0xfV2luZV9EaXJlY3Qz RCwgYnV0IGZvciBEaXJlY3RJbnB1dAorLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5l IERpcmVjdElucHV0ICRXSU5FUFJFRklYICQxICQyICQzIgorLQlbIC16ICIkV0lORVBSRUZJWCIg XSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKytQT0xfV2luZV9EaXJl Y3RJbnB1dCgpIHsKKysgICMgU2FtZSB0aGF0IFBPTF9XaW5lX0RpcmVjdDNELCBidXQgZm9yIERp cmVjdElucHV0CisrICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIERpcmVjdElucHV0 ICRXSU5FUFJFRklYICQxICQyICQzIgorKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0Rl YnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisgCistCVBPTF9XaW5lX0F1dG9TZXRWZXJz aW9uRW52CistCXdpbmVzZXJ2ZXIgLWsKKy0JUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFp ciAnRGlyZWN0SW5wdXQnICIkMSIgIiQyIiAiJDMiCistCXdpbmVzZXJ2ZXIgLWsKKysgIFBPTF9X aW5lX0F1dG9TZXRWZXJzaW9uRW52CisrICB3aW5lc2VydmVyIC1rCisrICBQT0xfV2luZV9VcGRh dGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RJbnB1dCcgIiQxIiAiJDIiICIkMyIKKysgIHdpbmVz ZXJ2ZXIgLWsKKyB9CisgCistU2V0X09TICgpCisteworLQkjIFNldCBmYWtlIHdpbmRvd3MgT1MK Ky0JIyBVc2FnZTogU2V0X09TIFsxXSBbMl0KKy0JIworLQkjIDE6IFBvc3NpYmxlIHZhbHVlczog d2luNywgd2luMjAwOCwgdmlzdGEsIHdpbjIwMDMsIHdpbnhwLCB3aW4yMDAwLCBudDQwLCB3aW5u dDM1MSwgd2lubWUsIHdpbjk4LCB3aW45NSwgd2luMzEsIHdpbjMwLCB3aW4yMAorLQkjIDI6IFNl cnZpY2UgUGFjazogc3AxLCBzcDIsIHNwMywgc3A0LCBzcDUKKy0JUE9MX0RlYnVnX01lc3NhZ2Ug IlNldHRpbmcgV2luZG93cyBPUyB0byAkMSAkMiIKKy0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYg UE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCistCistCWlmIFsgLW4gIiQxIiBd OyB0aGVuCistCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICcnICdWZXJzaW9uJyAi JDEiCistCWZpCistCistCWlmIFsgLW4gIiQyIiBdOyB0aGVuICMgTmVlZCBtb3JlIHRlc3RpbmcK Ky0JCWxvY2FsIG4KKy0JCVsgIiQyIiA9ICJzcDEiIF0gJiYgbj0xCistCQlbICIkMiIgPSAic3Ay IiBdICYmIG49MgorLQkJWyAiJDIiID0gInNwMyIgXSAmJiBuPTMKKy0JCVsgIiQyIiA9ICJzcDQi IF0gJiYgbj00CistCQlbICIkMiIgPSAic3A1IiBdICYmIG49NQorLQorLQkJUE9MX1dpbmVfVXBk YXRlUmVnaXN0cnkgc2V0b3MgPDwtIF9FT0ZJTklfCisrU2V0X09TKCkgeworKyAgIyBTZXQgZmFr ZSB3aW5kb3dzIE9TCisrICAjIFVzYWdlOiBTZXRfT1MgWzFdIFsyXQorKyAgIworKyAgIyAxOiBQ b3NzaWJsZSB2YWx1ZXM6IHdpbjcsIHdpbjIwMDgsIHZpc3RhLCB3aW4yMDAzLCB3aW54cCwgd2lu MjAwMCwgbnQ0MCwgd2lubnQzNTEsIHdpbm1lLCB3aW45OCwgd2luOTUsIHdpbjMxLCB3aW4zMCwg d2luMjAKKysgICMgMjogU2VydmljZSBQYWNrOiBzcDEsIHNwMiwgc3AzLCBzcDQsIHNwNQorKyAg UE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgV2luZG93cyBPUyB0byAkMSAkMiIKKysgIFsgLXog IiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0Igor KworKyAgaWYgWyAtbiAiJDEiIF07IHRoZW4KKysgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlX aW5lUGFpciAnJyAnVmVyc2lvbicgIiQxIgorKyAgZmkKKysKKysgIGlmIFsgLW4gIiQyIiBdOyB0 aGVuICMgTmVlZCBtb3JlIHRlc3RpbmcKKysgICAgbG9jYWwgbgorKyAgICBbICIkMiIgPSAic3Ax IiBdICYmIG49MQorKyAgICBbICIkMiIgPSAic3AyIiBdICYmIG49MgorKyAgICBbICIkMiIgPSAi c3AzIiBdICYmIG49MworKyAgICBbICIkMiIgPSAic3A0IiBdICYmIG49NAorKyAgICBbICIkMiIg PSAic3A1IiBdICYmIG49NQorKworKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeSBzZXRvcyA8 PC1fRU9GSU5JXworIAkJW0hLRVlfTE9DQUxfTUFDSElORVxcU29mdHdhcmVcXE1pY3Jvc29mdFxc V2luZG93cyBOVFxcQ3VycmVudFZlcnNpb25dCisgCQkiQ1NEVmVyc2lvbiI9IlNlcnZpY2UgUGFj ayAkbiIKKyAJCVtIS0VZX0xPQ0FMX01BQ0hJTkVcXFN5c3RlbVxcQ3VycmVudENvbnRyb2xTZXRc XENvbnRyb2xcXFdpbmRvd3NdCisgCQkiQ1NEVmVyc2lvbiI9ZHdvcmQ6MDAwMDAke259MDAKKyAJ CV9FT0ZJTklfCistCWZpCisrICBmaQorIH0KKyAKKy1TZXRfTWFuYWdlZCAoKQorLXsKKy0JIyBM ZXQgdGhlIHdpbmRvd3MgbWFuYWdlciB0byBjb250cm9sIHdpbmUKKy0JIyBVc2FnZTogU2V0X01h bmFnZWQgKE9ufE9mZikKKy0KKy0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBtYW5h Z2VkOiAkMSIKKy0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5F UFJFRklYIG5vdCBzZXQiCistCistCWxvY2FsIG4KKy0JWyAiJDEiID0gIk9uIiBdICYmIG49Ilki CistCVsgIiQxIiA9ICJPZmYiIF0gJiYgbj0iTiIKKy0JaWYgWyAtbiAiJG4iIF07IHRoZW4KKy0J CVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICJNYW5hZ2VkIiAi JG4iCistCWVsc2UKKy0JCVBPTF9EZWJ1Z19XYXJuaW5nICJVbnJlY29nbml6ZWQgZmxhZyAnJDEn IgorLQlmaQorK1NldF9NYW5hZ2VkKCkgeworKyAgIyBMZXQgdGhlIHdpbmRvd3MgbWFuYWdlciB0 byBjb250cm9sIHdpbmUKKysgICMgVXNhZ2U6IFNldF9NYW5hZ2VkIChPbnxPZmYpCisrCisrICBQ T0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIG1hbmFnZWQ6ICQxIgorKyAgWyAteiAiJFdJ TkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisrCisr ICBsb2NhbCBuCisrICBbICIkMSIgPSAiT24iIF0gJiYgbj0iWSIKKysgIFsgIiQxIiA9ICJPZmYi IF0gJiYgbj0iTiIKKysgIGlmIFsgLW4gIiRuIiBdOyB0aGVuCisrICAgIFBPTF9XaW5lX1VwZGF0 ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICJNYW5hZ2VkIiAiJG4iCisrICBlbHNlCisr ICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJVbnJlY29nbml6ZWQgZmxhZyAnJDEnIgorKyAgZmkKKyB9 CisgCistU2V0X1NvdW5kRHJpdmVyICgpCisteworLQkjIFNldCB0aGUgc291bmQgZHJpdmVyCist CSMgVXNhZ2U6IFNldF9Tb3VuZERyaXZlciBbRHJpdmVyXQorLQkjIFVzZSBhbiBlbXB0eSBzdHJp bmcgcGFyYW1ldGVyIHRvIGRpc2FibGUgc291bmQKKy0JIyBEaXNhYmxlZCBpbiBNYWMgT1MKKy0J UE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBTb3VuZERyaXZlciAkQCIKKy0JWyAteiAi JFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCist CistCWlmIFsgIiRQT0xfT1MiID0gIkxpbnV4IiBdOyB0aGVuCistCQlQT0xfV2luZV9VcGRhdGVS ZWdpc3RyeVdpbmVQYWlyICdEcml2ZXJzJyAnQXVkaW8nICIkMSIKKy0JZWxzZQorLQkJUE9MX0Rl YnVnX01lc3NhZ2UgIlNldF9Tb3VuZERyaXZlciBkaXNhYmxlZCBvbiAkUE9MX09TIgorLQlmaQor K1NldF9Tb3VuZERyaXZlcigpIHsKKysgICMgU2V0IHRoZSBzb3VuZCBkcml2ZXIKKysgICMgVXNh Z2U6IFNldF9Tb3VuZERyaXZlciBbRHJpdmVyXQorKyAgIyBVc2UgYW4gZW1wdHkgc3RyaW5nIHBh cmFtZXRlciB0byBkaXNhYmxlIHNvdW5kCisrICAjIERpc2FibGVkIGluIE1hYyBPUworKyAgUE9M X0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBTb3VuZERyaXZlciAkQCIKKysgIFsgLXogIiRX SU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorKwor KyAgaWYgWyAiJFBPTF9PUyIgPSAiTGludXgiIF07IHRoZW4KKysgICAgUE9MX1dpbmVfVXBkYXRl UmVnaXN0cnlXaW5lUGFpciAnRHJpdmVycycgJ0F1ZGlvJyAiJDEiCisrICBlbHNlCisrICAgIFBP TF9EZWJ1Z19NZXNzYWdlICJTZXRfU291bmREcml2ZXIgZGlzYWJsZWQgb24gJFBPTF9PUyIKKysg IGZpCisgfQorIAorLVNldF9EWEdyYWIgKCkKKy17CistCSMgRW5hYmxlIG9yIGRpc2FibGUgRFhH cmFiCistCSMgVXNhZ2U6IFNldF9EWEdyYWIgKE9ufE9mZikKKy0JIyBPbiBvdSBPZmYKKy0JWyAt eiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQi CistCistCWxvY2FsIG4KKy0JWyAiJDEiID0gIk9uIiBdICYmIG49IlkiICYmIFBPTF9EZWJ1Z19N ZXNzYWdlICJTZXR0aW5nIERYR3JhYiIKKy0JWyAiJDEiID0gIk9mZiIgXSAmJiBuPSJOIiAmJiBQ T0xfRGVidWdfTWVzc2FnZSAiVW5zZXR0aW5nIERYR3JhYiIKKy0JaWYgWyAtbiAiJG4iIF07IHRo ZW4KKy0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICdEWEdy YWInICIkbiIKKy0JZWxzZQorLQkJUE9MX0RlYnVnX1dhcm5pbmcgIlNldF9EWEdyYWI6IHVucmVj b2duaXplZCBmbGFnICckMSciCistCWZpCisrU2V0X0RYR3JhYigpIHsKKysgICMgRW5hYmxlIG9y IGRpc2FibGUgRFhHcmFiCisrICAjIFVzYWdlOiBTZXRfRFhHcmFiIChPbnxPZmYpCisrICAjIE9u IG91IE9mZgorKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5F UFJFRklYIG5vdCBzZXQiCisrCisrICBsb2NhbCBuCisrICBbICIkMSIgPSAiT24iIF0gJiYgbj0i WSIgJiYgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgRFhHcmFiIgorKyAgWyAiJDEiID0gIk9m ZiIgXSAmJiBuPSJOIiAmJiBQT0xfRGVidWdfTWVzc2FnZSAiVW5zZXR0aW5nIERYR3JhYiIKKysg IGlmIFsgLW4gIiRuIiBdOyB0aGVuCisrICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBh aXIgJ1gxMSBEcml2ZXInICdEWEdyYWInICIkbiIKKysgIGVsc2UKKysgICAgUE9MX0RlYnVnX1dh cm5pbmcgIlNldF9EWEdyYWI6IHVucmVjb2duaXplZCBmbGFnICckMSciCisrICBmaQorIH0KKyAK Ky1TZXRfSWV4cGxvcmUgKCkKKy17CistCSMgTWFrZSBhIGZha2UgSUU2IGluc3RhbGxhdGlvbgor LQkjIFVzYWdlOiBTZXRfSWV4cGxvcmUKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIkZha2luZyBpZTYg aW5zdGFsbGF0aW9uIgorLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwg IldJTkVQUkVGSVggbm90IHNldCIKKytTZXRfSWV4cGxvcmUoKSB7CisrICAjIE1ha2UgYSBmYWtl IElFNiBpbnN0YWxsYXRpb24KKysgICMgVXNhZ2U6IFNldF9JZXhwbG9yZQorKyAgUE9MX0RlYnVn X01lc3NhZ2UgIkZha2luZyBpZTYgaW5zdGFsbGF0aW9uIgorKyAgWyAteiAiJFdJTkVQUkVGSVgi IF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisgCistCVBPTF9XaW5l X1VwZGF0ZVJlZ2lzdHJ5IGllIDw8LSBfRU9GSU5JXworKyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0 cnkgaWUgPDwtX0VPRklOSV8KKyAJW0hLRVlfTE9DQUxfTUFDSElORVxcU29mdHdhcmVcXE1pY3Jv c29mdFxcSW50ZXJuZXQgRXhwbG9yZXJdCisgCSJWZXJzaW9uIj0iNi4wLjI5MDAuMjE4MCIKKyAJ X0VPRklOSV8KKyB9CisgCistU2V0X0Rlc2t0b3AgKCkKKy17CistCSMgU2V0IGEgZGVza3RvcCBl bnZpcm9ubWVudAorLQkjIFVzYWdlOiBTZXRfRGVza3RvcCAob258b2ZmKSBbd2lkdGhdIFtoZWln aHRdCistCistCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIERlc2t0b3AgOiAkMSAkMiAkMyIK Ky0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5v dCBzZXQiCistCistCWlmIFsgIiQxIiA9ICJPZmYiIF07IHRoZW4KKy0JCVBPTF9XaW5lX1VwZGF0 ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICdEZXNrdG9wJyAiLTEiCistCQkjIFJlbW92 ZSBrZXkKKy0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0V4cGxvcmVyJyAnRGVz a3RvcCcgJ2RlZmF1bHQnCistCWVsaWYgWyAiJDEiID0gIk9uIiBdOyB0aGVuCistCQlQT0xfV2lu ZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAnRGVza3RvcCcgIiQyeCQzIgor LQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAiRXhwbG9yZXJcXERlc2t0b3BzIiAn RGVmYXVsdCcgIiQyeCQzIgorLQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRXhw bG9yZXInICdEZXNrdG9wJyAnRGVmYXVsdCcKKy0JZWxzZQorLQkJUE9MX0RlYnVnX1dhcm5pbmcg IlVucmVjb2duaXplZCBmbGFnICckMSciCistCWZpCisrU2V0X0Rlc2t0b3AoKSB7CisrICAjIFNl dCBhIGRlc2t0b3AgZW52aXJvbm1lbnQKKysgICMgVXNhZ2U6IFNldF9EZXNrdG9wIChvbnxvZmYp IFt3aWR0aF0gW2hlaWdodF0KKysKKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIERlc2t0 b3AgOiAkMSAkMiAkMyIKKysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRh bCAiV0lORVBSRUZJWCBub3Qgc2V0IgorKworKyAgaWYgWyAiJDEiID0gIk9mZiIgXTsgdGhlbgor KyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAnRGVza3Rv cCcgIi0xIgorKyAgICAjIFJlbW92ZSBrZXkKKysgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlX aW5lUGFpciAnRXhwbG9yZXInICdEZXNrdG9wJyAnZGVmYXVsdCcKKysgIGVsaWYgWyAiJDEiID0g Ik9uIiBdOyB0aGVuCisrICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBE cml2ZXInICdEZXNrdG9wJyAiJDJ4JDMiCisrICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2lu ZVBhaXIgIkV4cGxvcmVyXFxEZXNrdG9wcyIgJ0RlZmF1bHQnICIkMngkMyIKKysgICAgUE9MX1dp bmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRXhwbG9yZXInICdEZXNrdG9wJyAnRGVmYXVsdCcK KysgIGVsc2UKKysgICAgUE9MX0RlYnVnX1dhcm5pbmcgIlVucmVjb2duaXplZCBmbGFnICckMSci CisrICBmaQorIH0KKyAKKy1TZXRfU291bmRTYW1wbGVSYXRlICgpCisteworLQkjIFNldCBTb3Vu ZCBzYW1wbGUgcmF0ZQorLQkjIFVzYWdlOiBTZXRfU291bmRTYW1wbGVSYXRlIFt2YWx1ZV0KKy0J IyB2YWx1ZXMgY2FuIGJlOiA0ODAwMCwgNDQxMDAsIDIyMDUwLCAxNjAwMCwgMTEwMjUsIDgwMDAK Ky0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgU291bmRTYW1wbGVSYXRlIHRvICQxIgorLQlb IC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNl dCIKKy0KKy0JaWYgWyAtbiAiJDEiIF07IHRoZW4KKy0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5 V2luZVBhaXIgJ0RpcmVjdFNvdW5kJyAnRGVmYXVsdFNhbXBsZVJhdGUnICIkMSIKKy0JZWxzZQor LQkJIyBGSVhNRTogc2hvdWxkIHdlIGRyb3AgdGhlIG5hbWUgaW5zdGVhZD8KKy0JCVBPTF9EZWJ1 Z19XYXJuaW5nICJTYW1wbGUgcmF0ZSBtaXNzaW5nLCBza2lwcGVkIgorLQlmaQorK1NldF9Tb3Vu ZFNhbXBsZVJhdGUoKSB7CisrICAjIFNldCBTb3VuZCBzYW1wbGUgcmF0ZQorKyAgIyBVc2FnZTog U2V0X1NvdW5kU2FtcGxlUmF0ZSBbdmFsdWVdCisrICAjIHZhbHVlcyBjYW4gYmU6IDQ4MDAwLCA0 NDEwMCwgMjIwNTAsIDE2MDAwLCAxMTAyNSwgODAwMAorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNl dHRpbmcgU291bmRTYW1wbGVSYXRlIHRvICQxIgorKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYg UE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisrCisrICBpZiBbIC1uICIkMSIg XTsgdGhlbgorKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RTb3Vu ZCcgJ0RlZmF1bHRTYW1wbGVSYXRlJyAiJDEiCisrICBlbHNlCisrICAgICMgRklYTUU6IHNob3Vs ZCB3ZSBkcm9wIHRoZSBuYW1lIGluc3RlYWQ/CisrICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJTYW1w bGUgcmF0ZSBtaXNzaW5nLCBza2lwcGVkIgorKyAgZmkKKyB9CisgCistU2V0X1NvdW5kQml0c1Bl clNhbXBsZSAoKQorLXsKKy0JIyBTZXQgU291bmQgYml0cyBwZXIgc2FtcGxlIHJhdGUKKy0JIyBV c2FnZTogU2V0X1NvdW5kQml0c1BlclNhcGxlIFt2YWx1ZV0KKy0JIyB2YWx1ZXM6IDgsIDE2Cist CVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHNvdW5kIERlZmF1bHRzQml0c1BlclNhbXBsZSB0 byAkMSIKKy0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJF RklYIG5vdCBzZXQiCistCistCWlmIFsgLW4gIiQxIiBdOyB0aGVuCistCQlQT0xfV2luZV9VcGRh dGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RTb3VuZCcgJ0RlZmF1bHRCaXRzUGVyU2FtcGxlJyAi JDEiCistCWVsc2UKKy0JCSMgRklYTUU6IHNob3VsZCB3ZSBkcm9wIHRoZSBuYW1lIGluc3RlYWQ/ CistCQlQT0xfRGVidWdfV2FybmluZyAiQml0c1BlclNhbXBsZSBtaXNzaW5nLCBza2lwcGVkIgor LQlmaQorK1NldF9Tb3VuZEJpdHNQZXJTYW1wbGUoKSB7CisrICAjIFNldCBTb3VuZCBiaXRzIHBl ciBzYW1wbGUgcmF0ZQorKyAgIyBVc2FnZTogU2V0X1NvdW5kQml0c1BlclNhcGxlIFt2YWx1ZV0K KysgICMgdmFsdWVzOiA4LCAxNgorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgc291bmQg RGVmYXVsdHNCaXRzUGVyU2FtcGxlIHRvICQxIgorKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYg UE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisrCisrICBpZiBbIC1uICIkMSIg XTsgdGhlbgorKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RTb3Vu ZCcgJ0RlZmF1bHRCaXRzUGVyU2FtcGxlJyAiJDEiCisrICBlbHNlCisrICAgICMgRklYTUU6IHNo b3VsZCB3ZSBkcm9wIHRoZSBuYW1lIGluc3RlYWQ/CisrICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJC aXRzUGVyU2FtcGxlIG1pc3NpbmcsIHNraXBwZWQiCisrICBmaQorIH0KKyAKKy1QT0xfV2luZV9J bnN0YWxsRm9udHMoKQorLXsKKy0JIyBJbnN0YWxsIG1pY3Jvc29mdCBmb250cworLQkjIFVzYWdl OiBQT0xfV2luZV9JbnN0YWxsRm9udHMKKy0JcHVzaGQgLgorLQlQT0xfQ2FsbCBQT0xfSW5zdGFs bF9jb3JlZm9udHMKKy0gICAgICAgIHBvcGQKKytQT0xfV2luZV9JbnN0YWxsRm9udHMoKSB7Cisr ICAjIEluc3RhbGwgbWljcm9zb2Z0IGZvbnRzCisrICAjIFVzYWdlOiBQT0xfV2luZV9JbnN0YWxs Rm9udHMKKysgIHB1c2hkIC4KKysgIFBPTF9DYWxsIFBPTF9JbnN0YWxsX2NvcmVmb250cworKyAg cG9wZAorIH0KKyAKKy1TZXRfU291bmRIYXJkd2FyZUFjY2VsZXJhdGlvbiAoKQorLXsKKy0JIyBT ZXQgc291bmQgZHJpdmVyIGhhcmR3YXJlIGFjY2VsZXJhdGlvbgorLQkjIFZhbHVlcyA6IEZ1bGws IFN0YW5kYXJkLCBCYXNpYywgRW11bGF0aW9uCistCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5n IFNvdW5kIEhhcmR3YXJlQWNjZWxlcmF0aW9uIHRvICQxIgorLQlbIC16ICIkV0lORVBSRUZJWCIg XSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKy0KKy0JaWYgWyAtbiAi JDEiIF07IHRoZW4KKy0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNv dW5kJyAnSGFyZHdhcmVBY2NlbGVyYXRpb24nICIkMSIKKy0JZWxzZQorLQkJIyBGSVhNRTogc2hv dWxkIHdlIGRyb3AgdGhlIG5hbWUgaW5zdGVhZD8KKy0JCVBPTF9EZWJ1Z19XYXJuaW5nICJIYXJk d2FyZSBhY2NlbGVyYXRpb24gbW9kZSBtaXNzaW5nLCBza2lwcGVkIgorLQlmaQorK1NldF9Tb3Vu ZEhhcmR3YXJlQWNjZWxlcmF0aW9uKCkgeworKyAgIyBTZXQgc291bmQgZHJpdmVyIGhhcmR3YXJl IGFjY2VsZXJhdGlvbgorKyAgIyBWYWx1ZXMgOiBGdWxsLCBTdGFuZGFyZCwgQmFzaWMsIEVtdWxh dGlvbgorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgU291bmQgSGFyZHdhcmVBY2NlbGVy YXRpb24gdG8gJDEiCisrICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwg IldJTkVQUkVGSVggbm90IHNldCIKKysKKysgIGlmIFsgLW4gIiQxIiBdOyB0aGVuCisrICAgIFBP TF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNvdW5kJyAnSGFyZHdhcmVBY2Nl bGVyYXRpb24nICIkMSIKKysgIGVsc2UKKysgICAgIyBGSVhNRTogc2hvdWxkIHdlIGRyb3AgdGhl IG5hbWUgaW5zdGVhZD8KKysgICAgUE9MX0RlYnVnX1dhcm5pbmcgIkhhcmR3YXJlIGFjY2VsZXJh dGlvbiBtb2RlIG1pc3NpbmcsIHNraXBwZWQiCisrICBmaQorIH0KKyAKKy1TZXRfU291bmRFbXVs RHJpdmVyICgpCisteworLQkjIFNldCBzb3VuZCBlbXVsIGRyaXZlcgorLQkjIFVzYWdlOiBTZXRf U291bmRFbXVsRHJpdmVyKFl8TikKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgU291bmQg RW11bERyaXZlciB0byAkMSIKKy0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0Zh dGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCistCistCWlmIFsgLW4gIiQxIiBdOyB0aGVuCistCQlQ T0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RTb3VuZCcgJ0VtdWxEcml2ZXIn ICIkMSIKKy0JZWxzZQorLQkJIyBGSVhNRTogc2hvdWxkIHdlIGRyb3AgdGhlIG5hbWUgaW5zdGVh ZD8KKy0JCVBPTF9EZWJ1Z19XYXJuaW5nICJTb3VuZCBlbXVsYXRpb24gbW9kZSBtaXNzaW5nLCBz a2lwcGVkIgorLQlmaQorK1NldF9Tb3VuZEVtdWxEcml2ZXIoKSB7CisrICAjIFNldCBzb3VuZCBl bXVsIGRyaXZlcgorKyAgIyBVc2FnZTogU2V0X1NvdW5kRW11bERyaXZlcihZfE4pCisrICBQT0xf RGVidWdfTWVzc2FnZSAiU2V0dGluZyBTb3VuZCBFbXVsRHJpdmVyIHRvICQxIgorKyAgWyAteiAi JFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisr CisrICBpZiBbIC1uICIkMSIgXTsgdGhlbgorKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdp bmVQYWlyICdEaXJlY3RTb3VuZCcgJ0VtdWxEcml2ZXInICIkMSIKKysgIGVsc2UKKysgICAgIyBG SVhNRTogc2hvdWxkIHdlIGRyb3AgdGhlIG5hbWUgaW5zdGVhZD8KKysgICAgUE9MX0RlYnVnX1dh cm5pbmcgIlNvdW5kIGVtdWxhdGlvbiBtb2RlIG1pc3NpbmcsIHNraXBwZWQiCisrICBmaQorIH0K KyAKKy1QT0xfTG9hZFZhcl9QUk9HUkFNRklMRVMoKQorLXsKKy0JIyBHZXQgUHJvZ3JhbSBGaWxl cyBmb2xkZXIgbmFtZSBhbmQgc3RvcmUgaXQgdG8gUFJPR1JBTUZJTEVTIHZhcmlhYmxlCistCSMg VXNhZ2U6IFBPTF9Mb2FkVmFyX1BST0dSQU1GSUxFUworLQlQT0xfRGVidWdfTWVzc2FnZSAiR2V0 dGluZyBQcm9ncmFtIEZpbGVzIG5hbWUiCistCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9E ZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorLQorLQlQUk9HUkFNRklMRVM9YFBPTF9X aW5lIGNtZCAvYyBlY2hvICIlUHJvZ3JhbUZpbGVzJSIgfHRyIC1kICdcMDE1XDAxMidgCistCWlm IFsgIiR7UFJPR1JBTUZJTEVTfSIgPSAiJVByb2dyYW1GaWxlcyUiIF0KKy0JdGhlbiAjIFZhciBp cyBub3QgZGVmaW5lZCBieSB3aW5lCistCQlleHBvcnQgUFJPR1JBTUZJTEVTPSJQcm9ncmFtIEZp bGVzIgorLQllbHNlCistCQlleHBvcnQgUFJPR1JBTUZJTEVTPSIke1BST0dSQU1GSUxFUzozfSIK Ky0JZmkKKytQT0xfTG9hZFZhcl9QUk9HUkFNRklMRVMoKSB7CisrICAjIEdldCBQcm9ncmFtIEZp bGVzIGZvbGRlciBuYW1lIGFuZCBzdG9yZSBpdCB0byBQUk9HUkFNRklMRVMgdmFyaWFibGUKKysg ICMgVXNhZ2U6IFBPTF9Mb2FkVmFyX1BST0dSQU1GSUxFUworKyAgUE9MX0RlYnVnX01lc3NhZ2Ug IkdldHRpbmcgUHJvZ3JhbSBGaWxlcyBuYW1lIgorKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYg UE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisrCisrICBQUk9HUkFNRklMRVM9 JChQT0xfV2luZSBjbWQgL2MgZWNobyAiJVByb2dyYW1GaWxlcyUiIHwgdHIgLWQgJ1wwMTVcMDEy JykKKysgIGlmIFsgIiR7UFJPR1JBTUZJTEVTfSIgPSAiJVByb2dyYW1GaWxlcyUiIF07IHRoZW4g IyBWYXIgaXMgbm90IGRlZmluZWQgYnkgd2luZQorKyAgICBleHBvcnQgUFJPR1JBTUZJTEVTPSJQ cm9ncmFtIEZpbGVzIgorKyAgZWxzZQorKyAgICBleHBvcnQgUFJPR1JBTUZJTEVTPSIke1BST0dS QU1GSUxFUzozfSIKKysgIGZpCisgfQorIAorLVNldF9XaW5lV2luZG93VGl0bGUgKCkKKy17Cist CSNuYW1lIG9mIHdpbmRvd2VkIHRpdGxlOiQxCistCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5n IHdpbmRvdyB0aXRsZSIKKy0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFs ICJXSU5FUFJFRklYIG5vdCBzZXQiCisrU2V0X1dpbmVXaW5kb3dUaXRsZSgpIHsKKysgICNuYW1l IG9mIHdpbmRvd2VkIHRpdGxlOiQxCisrICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5k b3cgdGl0bGUiCisrICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJ TkVQUkVGSVggbm90IHNldCIKKyAKKy0JUE9MX0RlYnVnX1dhcm5pbmcgIlNldF9XaW5lV2luZG93 VGl0bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCAoIzUxMTgpIgorKyAgUE9MX0RlYnVnX1dhcm5pbmcg IlNldF9XaW5lV2luZG93VGl0bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCAoIzUxMTgpIgorIH0KKyAK Ky1QT0xfTG9hZFZhcl9EZXZpY2UgKCkKKy17CistCSMgR2V0IEdQVSBkZXZpY2UgaWQgYW5kIHZl bmRvciBpZAorLQkjIFVzYWdlOiBQT0xfTG9hZFZhcl9EZXZpY2UgWy0tbm9uLWludGVyYWN0aXZl XQorLQkjIFJlc3VsdHMgYXJlIHN0b3JlZCBpbiBWZW5kb3JJRCBhbmQgRGV2aWNlSUQgdmFyaWFi bGVzCistCistCWxvY2FsIElOVEVSQUNUSVZFPTEKKy0JaWYgWyAiJDEiID0gIi0tbm9uLWludGVy YWN0aXZlIiBdOyB0aGVuCistCQlJTlRFUkFDVElWRT0nJworLQkJc2hpZnQKKy0JZmkKKy0KKy0J WyAiJElOVEVSQUNUSVZFIiBdICYmIFBPTF9TZXR1cFdpbmRvd193YWl0ICIkKGV2YWxfZ2V0dGV4 dCAnUGxlYXNlIHdhaXQgd2hpbGUgJEFQUExJQ0FUSU9OX1RJVExFIGlzIHNjYW5uaW5nIHlvdXIg aGFyZHdhcmUnKSIgIiRUSVRMRSIKKy0JVkdBX0RFVklDRVM9IiQoUE9MX0RldGVjdFZpZGVvQ2Fy ZHMpIgorLQkjIE1vcmUgdGhhbiBvbmUgY2FyZCBhdmFpbGFibGU/CistCWlmIGdyZXAgLXEgJ34n IDw8PCIkVkdBX0RFVklDRVMiOyB0aGVuCistCQlpZiBbICIkSU5URVJBQ1RJVkUiIF07IHRoZW4K Ky0JCQlsb2NhbCBPTERfQVBQX0FOU1dFUj0iJEFQUF9BTlNXRVIiCistCQkJUE9MX1NldHVwV2lu ZG93X21lbnUgIiQoZXZhbF9nZXR0ZXh0ICdTZWxlY3QgdGhlIG1haW4gdmlkZW9jYXJkIHRvIHJl cG9ydDonKSIgIiRUSVRMRSIgIiRWR0FfREVWSUNFUyIgIn4iCistCQkJVkdBX0RFVklDRVM9IiRB UFBfQU5TV0VSIgorLQkJCUFQUF9BTlNXRVI9IiRPTERfQVBQX0FOU1dFUiIKKy0JCWVsc2UKKy0J CQkjIENhbid0IGFzayB1c2VyLCBwaWNrIGZpcnN0CistCQkJVkdBX0RFVklDRVM9IiR7VkdBX0RF VklDRVMlJX4qfSIKKy0JCWZpCistCWZpCistCWV4cG9ydCBWZW5kb3JJRD1gY3V0IC1kJ3wnIC1m MiA8PDwiJFZHQV9ERVZJQ0VTImAKKy0JZXhwb3J0IERldmljZUlEPWBjdXQgLWQnfCcgLWYzIDw8 PCIkVkdBX0RFVklDRVMiYAorLQlQT0xfRGVidWdfTWVzc2FnZSAiVmVuZG9ySUQgOiAkVmVuZG9y SUQiCistCVBPTF9EZWJ1Z19NZXNzYWdlICJEZXZpY2VJRCA6ICREZXZpY2VJRCIKKytQT0xfTG9h ZFZhcl9EZXZpY2UoKSB7CisrICAjIEdldCBHUFUgZGV2aWNlIGlkIGFuZCB2ZW5kb3IgaWQKKysg ICMgVXNhZ2U6IFBPTF9Mb2FkVmFyX0RldmljZSBbLS1ub24taW50ZXJhY3RpdmVdCisrICAjIFJl c3VsdHMgYXJlIHN0b3JlZCBpbiBWZW5kb3JJRCBhbmQgRGV2aWNlSUQgdmFyaWFibGVzCisrCisr ICBsb2NhbCBJTlRFUkFDVElWRT0xCisrICBpZiBbICIkMSIgPSAiLS1ub24taW50ZXJhY3RpdmUi IF07IHRoZW4KKysgICAgSU5URVJBQ1RJVkU9JycKKysgICAgc2hpZnQKKysgIGZpCisrCisrICBb ICIkSU5URVJBQ1RJVkUiIF0gJiYgUE9MX1NldHVwV2luZG93X3dhaXQgIiQoZXZhbF9nZXR0ZXh0 ICdQbGVhc2Ugd2FpdCB3aGlsZSAkQVBQTElDQVRJT05fVElUTEUgaXMgc2Nhbm5pbmcgeW91ciBo YXJkd2FyZScpIiAiJFRJVExFIgorKyAgVkdBX0RFVklDRVM9IiQoUE9MX0RldGVjdFZpZGVvQ2Fy ZHMpIgorKyAgIyBNb3JlIHRoYW4gb25lIGNhcmQgYXZhaWxhYmxlPworKyAgaWYgZ3JlcCAtcSAn ficgPDw8IiRWR0FfREVWSUNFUyI7IHRoZW4KKysgICAgaWYgWyAiJElOVEVSQUNUSVZFIiBdOyB0 aGVuCisrICAgICAgbG9jYWwgT0xEX0FQUF9BTlNXRVI9IiRBUFBfQU5TV0VSIgorKyAgICAgIFBP TF9TZXR1cFdpbmRvd19tZW51ICIkKGV2YWxfZ2V0dGV4dCAnU2VsZWN0IHRoZSBtYWluIHZpZGVv Y2FyZCB0byByZXBvcnQ6JykiICIkVElUTEUiICIkVkdBX0RFVklDRVMiICJ+IgorKyAgICAgIFZH QV9ERVZJQ0VTPSIkQVBQX0FOU1dFUiIKKysgICAgICBBUFBfQU5TV0VSPSIkT0xEX0FQUF9BTlNX RVIiCisrICAgIGVsc2UKKysgICAgICAjIENhbid0IGFzayB1c2VyLCBwaWNrIGZpcnN0CisrICAg ICAgVkdBX0RFVklDRVM9IiR7VkdBX0RFVklDRVMlJX4qfSIKKysgICAgZmkKKysgIGZpCisrICBl eHBvcnQgVmVuZG9ySUQ9JChjdXQgLWQnfCcgLWYyIDw8PCIkVkdBX0RFVklDRVMiKQorKyAgZXhw b3J0IERldmljZUlEPSQoY3V0IC1kJ3wnIC1mMyA8PDwiJFZHQV9ERVZJQ0VTIikKKysgIFBPTF9E ZWJ1Z19NZXNzYWdlICJWZW5kb3JJRCA6ICRWZW5kb3JJRCIKKysgIFBPTF9EZWJ1Z19NZXNzYWdl ICJEZXZpY2VJRCA6ICREZXZpY2VJRCIKKyB9CisgCistUE9MX0RldGVjdFZpZGVvQ2FyZHMgKCkg eworLQkjIERldGVjdCBrbm93biB2aWRlb2NhcmRzCistCVBPTF9EZWJ1Z19NZXNzYWdlICJHZXR0 aW5ncyBHUFUgaW5mb3JtYXRpb25zIgorLSAgICAgICAgY2FzZSAiJFBPTF9PUyIgaW4KKy0gICAg ICAgICAgICBMaW51eHxGcmVlQlNEKQorLQkJWyAteCAvdXNyL3NiaW4vbHNwY2kgXSAmJiBMU1BD ST0vdXNyL3NiaW4vbHNwY2kgfHwgTFNQQ0k9bHNwY2kKKy0JCSMgRGV2aWNlIE5hbWV8VmVuZG9y IElEfERldmljZSBJRFxuLi4uCistICAgICAgICAgICAgICAgICMgWzAzMDBdID0gVkdBIGNvbXBh dGlibGUgY29udHJvbGxlciwgWzAzMDJdID0gM0QgY29udHJvbGxlcgorLQkJVkdBX0RFVklDRVM9 YCRMU1BDSSAtbm4gfCBwZXJsIC1uZSAnaWYgKC9cWzAzMFswMl1cXS8pIHsgcy8uKlxdOiAoLiop IFxbKFswLTlhLWZdezR9KTooWzAtOWEtZl17NH0pXF0uKi9cMXxcMnxcMy87IHByaW50IH0nYAor LSAgICAgICAgICAgICAgICA7OworLSAgICAgICAgICAgIE1hYykKKy0JCSMgRGV2aWNlIE5hbWV8 VmVuZG9yIElEfERldmljZSBJRFxuLi4uCistCQlWR0FfREVWSUNFUz1gc3lzdGVtX3Byb2ZpbGVy IFNQRGlzcGxheXNEYXRhVHlwZSB8IHBlcmwgLW5lICdzL15ccysvLzsgaWYoL0NoaXBzZXQgTW9k ZWw6LykgeyBjaG9tcDsgcy9eW146XSo6IC8vOyBwcmludCAiJF98IiB9IGVsc2lmKC9WZW5kb3I6 LykgeyBjaG9tcDsgcy8uKlwoMHgoLiopXCkvXDEvOyBwcmludCAiJDF8IiB9IGVsc2lmICgvRGV2 aWNlIElEOi8pIHsgcy9eW146XSo6IDB4Ly87IHByaW50IH0nYAorLSAgICAgICAgICAgICAgICA7 OworLSAgICAgICAgICAgICopCistICAgICAgICAgICAgICAgIFBPTF9EZWJ1Z19GYXRhbCAiVW5z dXBwb3NlZCBvcGVyYXRpbmcgc3lzdGVtOiAkUE9MX09TIgorLSAgICAgICAgZXNhYworLQkjIE1v cmUgdGhhbiBvbmUgY2FyZCBhdmFpbGFibGU/CistCWlmIFsgJCh3YyAtbCA8PDwiJFZHQV9ERVZJ Q0VTIikgLWd0IDEgXTsgdGhlbgorLQkJIyBUcnkgdG8gcHV0IHdoYXQncyBwcm9iYWJseSB0aGUg bWFpbiBjYXJkIGZpcnN0CistCQlWR0FfREVWSUNFUz1gZ3JlcCAtaUUgJ252aWRpYXxhdGl8YW1k JyA8PDwiJFZHQV9ERVZJQ0VTIjsgZ3JlcCAtaUV2ICdudmlkaWF8YXRpfGFtZCcgPDw8IiRWR0Ff REVWSUNFUyJgCistCWZpCistCSMgRGV2aWNlIE5hbWV8VmVuZG9yIElEfERldmljZSBJRH4uLi4K Ky0JZWNobyAtbiAiJFZHQV9ERVZJQ0VTInx0ciAiXG4iICJ+IgorK1BPTF9EZXRlY3RWaWRlb0Nh cmRzKCkgeworKyAgIyBEZXRlY3Qga25vd24gdmlkZW9jYXJkcworKyAgUE9MX0RlYnVnX01lc3Nh Z2UgIkdldHRpbmdzIEdQVSBpbmZvcm1hdGlvbnMiCisrICBjYXNlICIkUE9MX09TIiBpbgorKyAg TGludXggfCBGcmVlQlNEKQorKyAgICBbIC14IC91c3Ivc2Jpbi9sc3BjaSBdICYmIExTUENJPS91 c3Ivc2Jpbi9sc3BjaSB8fCBMU1BDST1sc3BjaQorKyAgICAjIERldmljZSBOYW1lfFZlbmRvciBJ RHxEZXZpY2UgSURcbi4uLgorKyAgICAjIFswMzAwXSA9IFZHQSBjb21wYXRpYmxlIGNvbnRyb2xs ZXIsIFswMzAyXSA9IDNEIGNvbnRyb2xsZXIKKysgICAgVkdBX0RFVklDRVM9JCgkTFNQQ0kgLW5u IHwgcGVybCAtbmUgJ2lmICgvXFswMzBbMDJdXF0vKSB7IHMvLipcXTogKC4qKSBcWyhbMC05YS1m XXs0fSk6KFswLTlhLWZdezR9KVxdLiovXDF8XDJ8XDMvOyBwcmludCB9JykKKysgICAgOzsKKysg IE1hYykKKysgICAgIyBEZXZpY2UgTmFtZXxWZW5kb3IgSUR8RGV2aWNlIElEXG4uLi4KKysgICAg VkdBX0RFVklDRVM9JChzeXN0ZW1fcHJvZmlsZXIgU1BEaXNwbGF5c0RhdGFUeXBlIHwgcGVybCAt bmUgJ3MvXlxzKy8vOyBpZigvQ2hpcHNldCBNb2RlbDovKSB7IGNob21wOyBzL15bXjpdKjogLy87 IHByaW50ICIkX3wiIH0gZWxzaWYoL1ZlbmRvcjovKSB7IGNob21wOyBzLy4qXCgweCguKilcKS9c MS87IHByaW50ICIkMXwiIH0gZWxzaWYgKC9EZXZpY2UgSUQ6LykgeyBzL15bXjpdKjogMHgvLzsg cHJpbnQgfScpCisrICAgIDs7CisrICAqKQorKyAgICBQT0xfRGVidWdfRmF0YWwgIlVuc3VwcG9z ZWQgb3BlcmF0aW5nIHN5c3RlbTogJFBPTF9PUyIKKysgICAgOzsKKysgIGVzYWMKKysgICMgTW9y ZSB0aGFuIG9uZSBjYXJkIGF2YWlsYWJsZT8KKysgIGlmIFsgJCh3YyAtbCA8PDwiJFZHQV9ERVZJ Q0VTIikgLWd0IDEgXTsgdGhlbgorKyAgICAjIFRyeSB0byBwdXQgd2hhdCdzIHByb2JhYmx5IHRo ZSBtYWluIGNhcmQgZmlyc3QKKysgICAgVkdBX0RFVklDRVM9JCgKKysgICAgICBncmVwIC1pRSAn bnZpZGlhfGF0aXxhbWQnIDw8PCIkVkdBX0RFVklDRVMiCisrICAgICAgZ3JlcCAtaUV2ICdudmlk aWF8YXRpfGFtZCcgPDw8IiRWR0FfREVWSUNFUyIKKysgICAgKQorKyAgZmkKKysgICMgRGV2aWNl IE5hbWV8VmVuZG9yIElEfERldmljZSBJRH4uLi4KKysgIGVjaG8gLW4gIiRWR0FfREVWSUNFUyIg fCB0ciAiXG4iICJ+IgorIH0KKyAKKy1QT0xfTG9hZFZhcl9TY3JlZW5SZXNvbHV0aW9uICgpCist eworLQlpZiBbICIkUE9MX09TIiA9ICJMaW51eCIgXSB8fCBbICIkUE9MX09TIiA9ICJGcmVlQlNE IiBdOyB0aGVuCistCQlsb2NhbCBSRVNPTFVUSU9OPSIkKHhkcHlpbmZvIHwgZ3JlcCBkaW1lbnNp b25zIHwgYXdrICd7cHJpbnQgJDJ9JykiCistCQlleHBvcnQgU2NyZWVuV2lkdGg9IiQoZWNobyAk UkVTT0xVVElPTiB8IGN1dCAtZHggLWYxKSIKKy0JCWV4cG9ydCBTY3JlZW5IZWlnaHQ9IiQoZWNo byAkUkVTT0xVVElPTiB8IGN1dCAtZHggLWYyKSIKKy0JZmkKKy0JaWYgWyAiJFBPTF9PUyIgPSAi TWFjIiBdOyB0aGVuCistCQlleHBvcnQgU2NyZWVuV2lkdGg9IiQoL3Vzci9zYmluL3N5c3RlbV9w cm9maWxlciBTUERpc3BsYXlzRGF0YVR5cGUgfCBncmVwIFJlc29sdXRpb258IGF3ayAne3ByaW50 ICQyfScpIgorLQkJZXhwb3J0IFNjcmVlbkhlaWdodD0iJCgvdXNyL3NiaW4vc3lzdGVtX3Byb2Zp bGVyIFNQRGlzcGxheXNEYXRhVHlwZSB8IGdyZXAgUmVzb2x1dGlvbnwgYXdrICd7cHJpbnQgJDR9 JykiCistCWZpCistCVBPTF9EZWJ1Z19NZXNzYWdlICJTY3JlZW4gd2lkdGg6ICRTY3JlZW5XaWR0 aCIKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIlNjcmVlbiBoZWlnaHQ6ICRTY3JlZW5IZWlnaHQiCisr UE9MX0xvYWRWYXJfU2NyZWVuUmVzb2x1dGlvbigpIHsKKysgIGlmIFsgIiRQT0xfT1MiID0gIkxp bnV4IiBdIHx8IFsgIiRQT0xfT1MiID0gIkZyZWVCU0QiIF07IHRoZW4KKysgICAgbG9jYWwgUkVT T0xVVElPTj0iJCh4ZHB5aW5mbyB8IGdyZXAgZGltZW5zaW9ucyB8IGF3ayAne3ByaW50ICQyfScp IgorKyAgICBleHBvcnQgU2NyZWVuV2lkdGg9IiQoZWNobyAkUkVTT0xVVElPTiB8IGN1dCAtZHgg LWYxKSIKKysgICAgZXhwb3J0IFNjcmVlbkhlaWdodD0iJChlY2hvICRSRVNPTFVUSU9OIHwgY3V0 IC1keCAtZjIpIgorKyAgZmkKKysgIGlmIFsgIiRQT0xfT1MiID0gIk1hYyIgXTsgdGhlbgorKyAg ICBleHBvcnQgU2NyZWVuV2lkdGg9IiQoL3Vzci9zYmluL3N5c3RlbV9wcm9maWxlciBTUERpc3Bs YXlzRGF0YVR5cGUgfCBncmVwIFJlc29sdXRpb24gfCBhd2sgJ3twcmludCAkMn0nKSIKKysgICAg ZXhwb3J0IFNjcmVlbkhlaWdodD0iJCgvdXNyL3NiaW4vc3lzdGVtX3Byb2ZpbGVyIFNQRGlzcGxh eXNEYXRhVHlwZSB8IGdyZXAgUmVzb2x1dGlvbiB8IGF3ayAne3ByaW50ICQ0fScpIgorKyAgZmkK KysgIFBPTF9EZWJ1Z19NZXNzYWdlICJTY3JlZW4gd2lkdGg6ICRTY3JlZW5XaWR0aCIKKysgIFBP TF9EZWJ1Z19NZXNzYWdlICJTY3JlZW4gaGVpZ2h0OiAkU2NyZWVuSGVpZ2h0IgorIH0KKyAKKy1Q T0xfV2luZV9TZXRWaWRlb0RyaXZlcigpCisteworLQkjIFNldCB3aW5lIHZpZGVvIGRyaXZlcgor LQkjIFVzYWdlIFBPTF9XaW5lX1NldFZpZGVvRHJpdmVyCistCVBPTF9EZWJ1Z19NZXNzYWdlICJT ZXQgd2luZSB2aWRlbyBkcml2ZXIiCistCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1 Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorLQlQT0xfTG9hZFZhcl9EZXZpY2UKKy0JRFJW SUQ9InZnYS5kbGwiCistCVsgIiRWZW5kb3JJRCIgPSAiMTBkZSIgXSAmJiBEUlZJRD0ibnY0X2Rp c3AuZGxsIgorLQlbICIkVmVuZG9ySUQiID0gIjEwMDIiIF0gJiYgRFJWSUQ9ImF0aTJkdmFnLmRs bCIKKy0JWyAiJFZlbmRvcklEIiA9ICI4MDg2IiBdICYmIERSVklEPSJpZzRpY2QzMi5kbGwiCist CVBPTF9EZWJ1Z19NZXNzYWdlICJEZXRlY3RlZCB2aWRlbyBkcml2ZXI6ICREUlZJRCIKKy0KKy0J UE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgVkdBX0lEX2ZpeCA8PC0gX0VPRklOSV8KKytQT0xfV2lu ZV9TZXRWaWRlb0RyaXZlcigpIHsKKysgICMgU2V0IHdpbmUgdmlkZW8gZHJpdmVyCisrICAjIFVz YWdlIFBPTF9XaW5lX1NldFZpZGVvRHJpdmVyCisrICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0IHdp bmUgdmlkZW8gZHJpdmVyIgorKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0Zh dGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisrICBQT0xfTG9hZFZhcl9EZXZpY2UKKysgIERSVklE PSJ2Z2EuZGxsIgorKyAgWyAiJFZlbmRvcklEIiA9ICIxMGRlIiBdICYmIERSVklEPSJudjRfZGlz cC5kbGwiCisrICBbICIkVmVuZG9ySUQiID0gIjEwMDIiIF0gJiYgRFJWSUQ9ImF0aTJkdmFnLmRs bCIKKysgIFsgIiRWZW5kb3JJRCIgPSAiODA4NiIgXSAmJiBEUlZJRD0iaWc0aWNkMzIuZGxsIgor KyAgUE9MX0RlYnVnX01lc3NhZ2UgIkRldGVjdGVkIHZpZGVvIGRyaXZlcjogJERSVklEIgorKwor KyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgVkdBX0lEX2ZpeCA8PC1fRU9GSU5JXworIAlbSEtF WV9DVVJSRU5UX1VTRVJcXFNvZnR3YXJlXFxXaW5lXFxEaXJlY3QzRF0KKyAJIlZpZGVvUENJVmVu ZG9ySUQiPWR3b3JkOjAwMDAkVmVuZG9ySUQKKyAJIlZpZGVvUENJRGV2aWNlSUQiPWR3b3JkOjAw MDAkRGV2aWNlSUQKK0BAIC00NjcsODAwICs0NTEsNzc3IEBAIFBPTF9XaW5lX1NldFZpZGVvRHJp dmVyKCkKKyAJX0VPRklOSV8KKyB9CisgCistUE9MX1dpbmVfRGV0ZWN0Q2FyZCgpCisteworLQkj IFNldCB3aW5lIHZpZGVvIGRyaXZlcgorLQkjIFVzYWdlIFBPTF9XaW5lX0RldGVjdENhcmQKKy0J UE9MX0RlYnVnX01lc3NhZ2UgIkRldGVjdGluZyB2aWRlbyBjYXJkIgorLQlbIC16ICIkV0lORVBS RUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKy0JUE9MX0xv YWRWYXJfRGV2aWNlCistCURSVklEPSJPVEhFUiIKKy0JWyAiJFZlbmRvcklEIiA9ICIxMGRlIiBd ICYmIERSVklEPSJOVklESUEiCistCVsgIiRWZW5kb3JJRCIgPSAiMTAwMiIgXSAmJiBEUlZJRD0i QVRJIgorLQlbICIkVmVuZG9ySUQiID0gIjgwODYiIF0gJiYgRFJWSUQ9IklOVEVMIgorLQlQT0xf RGVidWdfTWVzc2FnZSAiRGV0ZWN0ZWQgdmlkZW8gY2FyZDogJERSVklEIgorLQorLQllY2hvICRE UlZJRAorK1BPTF9XaW5lX0RldGVjdENhcmQoKSB7CisrICAjIFNldCB3aW5lIHZpZGVvIGRyaXZl cgorKyAgIyBVc2FnZSBQT0xfV2luZV9EZXRlY3RDYXJkCisrICBQT0xfRGVidWdfTWVzc2FnZSAi RGV0ZWN0aW5nIHZpZGVvIGNhcmQiCisrICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVi dWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKysgIFBPTF9Mb2FkVmFyX0RldmljZQorKyAg RFJWSUQ9Ik9USEVSIgorKyAgWyAiJFZlbmRvcklEIiA9ICIxMGRlIiBdICYmIERSVklEPSJOVklE SUEiCisrICBbICIkVmVuZG9ySUQiID0gIjEwMDIiIF0gJiYgRFJWSUQ9IkFUSSIKKysgIFsgIiRW ZW5kb3JJRCIgPSAiODA4NiIgXSAmJiBEUlZJRD0iSU5URUwiCisrICBQT0xfRGVidWdfTWVzc2Fn ZSAiRGV0ZWN0ZWQgdmlkZW8gY2FyZDogJERSVklEIgorKworKyAgZWNobyAkRFJWSUQKKyB9Cisg CistCistCistUE9MX0F1dG9XaW5lICgpCisteworLQkjIERldGVjdCBpZiB0aGUgZmlsZSBpcyBh IC5leGUgb3IgYSAubXNpIGZpbGUgYW5kIHJ1biBpdCB3aXRoIFBPTF9XaW5lCistCSMgU2FtZSB1 c2FnZSB0aGFuICJ3aW5lIgorLQlTRVRVUF9QQVRIPSIkQCIKKy0JIyByZW1vdmUgZXZlcnl0aGlu ZyB1cCB0byB0aGUgbGFzdCBkb3QKKy0JZXh0ZW5zaW9uPSIke1NFVFVQX1BBVEgjIyoufSIKKy0J aWYgWyAiJGV4dGVuc2lvbiIgPSAibXNpIiBdCistCXRoZW4KKy0JCVBPTF9XaW5lIG1zaWV4ZWMg L2kgIiRTRVRVUF9QQVRIIgorLQllbHNlCistCQkjIEZJWE1FIC91bml4PworLQkJUE9MX1dpbmUg IiRTRVRVUF9QQVRIIgorLQlmaQorK1BPTF9BdXRvV2luZSgpIHsKKysgICMgRGV0ZWN0IGlmIHRo ZSBmaWxlIGlzIGEgLmV4ZSBvciBhIC5tc2kgZmlsZSBhbmQgcnVuIGl0IHdpdGggUE9MX1dpbmUK KysgICMgU2FtZSB1c2FnZSB0aGFuICJ3aW5lIgorKyAgU0VUVVBfUEFUSD0iJEAiCisrICAjIHJl bW92ZSBldmVyeXRoaW5nIHVwIHRvIHRoZSBsYXN0IGRvdAorKyAgZXh0ZW5zaW9uPSIke1NFVFVQ X1BBVEgjIyoufSIKKysgIGlmIFsgIiRleHRlbnNpb24iID0gIm1zaSIgXTsgdGhlbgorKyAgICBQ T0xfV2luZSBtc2lleGVjIC9pICIkU0VUVVBfUEFUSCIKKysgIGVsc2UKKysgICAgIyBGSVhNRSAv dW5peD8KKysgICAgUE9MX1dpbmUgIiRTRVRVUF9QQVRIIgorKyAgZmkKKyB9CisgCistUE9MX1dp bmUgKCkKKy17CistCSMgUnVuIHRoZSBnb29kIHdpbmV2ZXJzaW9uIGFuZCBzdG9yZSB0aGUgcmVz dWx0IHRvIGEgbG9nZmlsZQorLQkjIFNhbWUgdXNhZ2UgdGhhbiAid2luZSIKKy0JbWtkaXIgLXAg IiRXSU5FUFJFRklYIgorLQl0b3VjaCAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIgorLQls b2NhbCBOb0Vycm9ycworLQlpZiBbICIkMSIgPSAiLS1pZ25vcmUtZXJyb3JzIiBdOyB0aGVuCist CQlOb0Vycm9ycz0iVHJ1ZSIKKy0JCXNoaWZ0CistCWZpCistCistCWlmIFsgISAiJChQT0xfQ29u ZmlnX1JlYWQgTk9fRlNDSEVDSykiID0gIlRSVUUiIF07IHRoZW4KKy0JCWlmIFsgIiQxIiA9ICJz dGFydCIgXTsgdGhlbgorLQkJCWlmIFsgIiQyIiA9ICIvdW5peCIgXTsgdGhlbgorLQkJCQlQT0xf U3lzdGVtX0NoZWNrRlMgIiQzIgorLQkJCWVsc2UKKy0JCQkJUE9MX1N5c3RlbV9DaGVja0ZTICIk MiIKKy0JCQlmaQorLQkJZWxzZQorLQkJCVBPTF9TeXN0ZW1fQ2hlY2tGUyAiJDEiCistCQlmaQor LQllbHNlCistCQlQT0xfRGVidWdfTWVzc2FnZSAiKiogRmlsZXN5c3RlbSBjaGVja3MgZGlzYWJs ZWQgKioiCistCWZpCistCistCVBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52CistCVBPTF9EZWJ1 Z19NZXNzYWdlICJSdW5uaW5nIHdpbmUtJFBPTF9XSU5FVkVSU0lPTiAiJEAiIChXb3JraW5nIGRp cmVjdG9yeSA6ICRQV0QpIgorLQlQT0xfRGVidWdfTG9nVG9QcmVmaXggIlJ1bm5pbmcgd2luZS0k UE9MX1dJTkVWRVJTSU9OICIkQCIgKFdvcmtpbmcgZGlyZWN0b3J5IDogJFBXRCkiCistCistICAg ICAgICAjIEVpdGhlciB0aGF0IG9yIG1vbml0b3IgImVycjpwcm9jZXNzOmNyZWF0ZV9wcm9jZXNz IHN0YXJ0aW5nIDY0LWJpdCBwcm9jZXNzIEwieHh4IiBub3Qgc3VwcG9ydGVkIGluIDMyLWJpdCB3 aW5lcHJlZml4XG53aW5lOiBCYWQgRVhFIGZvcm1hdCBmb3IgeHh4LiIgaW4gbG9ncworLSAgICAg ICAgaWYgWyAiJFBPTF9BUkNIIiA9ICJ4ODYiIC1hIC1lICIkMSIgXTsgdGhlbgorLSAgICAgICAg ICAgIGxvY2FsIEVYRUZJTEU9IiQxIgorLSAgICAgICAgICAgIGlmIFBPTF9TeXN0ZW1faXM2NGJp dCAiJEVYRUZJTEUiOyB0aGVuCistICAgICAgICAgICAgICAgIE5PQlVHUkVQT1JUPSJUUlVFIiAj IHVzZXIgbWlzdGFrZQorLSAgICAgICAgICAgICAgICBQT0xfRGVidWdfRmF0YWwgIiQoZXZhbF9n ZXR0ZXh0ICdTdGFydGluZyA2NC1iaXQgcHJvY2VzcyAkRVhFRklMRSBpcyBub3Qgc3VwcG9ydGVk IGluIDMyLWJpdCB2aXJ0dWFsIGRyaXZlcycpIgorLSAgICAgICAgICAgIGZpCistICAgICAgICBm aQorLQorLSAgICAgICAgaWYgWyAhICIkV0lORU1FTlVCVUlMREVSX0FMRVJUIiBdOyB0aGVuCist CQlQT0xfRGVidWdfTWVzc2FnZSAiTm90aWNlOiBQbGF5T25MaW51eCBkZWxpYmVyYXRlbHkgZGlz YWJsZXMgd2luZW1lbnVidWlsZGVyLiBTZWUgaHR0cDovL3d3dy5wbGF5b25saW51eC5jb20vZnIv cGFnZS0yNi1XaW5lbWVudWJ1aWxkZXIuaHRtbCIKKy0JCVdJTkVNRU5VQlVJTERFUl9BTEVSVD0i RG9uZSIKKy0JZmkKKy0JaWYgWyAiJDEiID0gInJlZ2VkaXQiIC1hICEgIiQyIiA9ICIiIF07IHRo ZW4KKy0JCWlmIFsgLWUgIiQyIiBdOyB0aGVuCistCQkJUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJD b250ZW50IG9mICQyIgorLQkJCShlY2hvICctLS0tLS0tLS0tLScKKy0JCQkgY2F0ICIkMiIKKy0J CQkgZWNobyAnLS0tLS0tLS0tLS0nKSA+PiAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIgor LQkJZWxzZQorLQkJCVBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAicmVnZWRpdCBwYXJhbWV0ZXIgJyQy JyBpcyBub3QgYSBmaWxlLCBub3QgZHVtcGVkIHRvIGxvZyIKKy0JCWZpCistCWVsaWYgWyAiJDEi ID0gInJlZ2VkaXQiIF07IHRoZW4KKy0JCVBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAiVXNlciBtb2Rp ZmllZCBzb21ldGhpbmcgaW4gdGhlIHJlZ2lzdHJ5IG1hbnVhbGx5IgorLQlmaQorLQorLQorLQlp ZiBbICIkUE9MX09TIiA9ICJMaW51eCIgXSB8fCBbICIkUE9MX09TIiA9ICJNYWMiIF07CistCXRo ZW4KKy0JCWlmIFsgIiRMT0dGSUxFIiA9ICIvZGV2L251bGwiIF07IHRoZW4KKy0JCQkkQkVGT1JF X1dJTkUgJChQT0xfQ29uZmlnX1JlYWQgQkVGT1JFX1dJTkUpIHdpbmUgIiRAIiAgMj4gPihncmVw IC12IG1lbnVidWlsZGVyIC0tbGluZS1idWZmZXJlZCB8IHRlZSAtYSAiJFdJTkVQUkVGSVgvcGxh eW9ubGludXgubG9nIiA+JjIpID4gPih0ZWUgLWEgIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4Lmxv ZyIpCistCQkJZXJyb3JzPSQ/CistCQllbHNlCistCQkJJEJFRk9SRV9XSU5FICQoUE9MX0NvbmZp Z19SZWFkIEJFRk9SRV9XSU5FKSB3aW5lICIkQCIgMj4gPihncmVwIC12IG1lbnVidWlsZGVyIC0t bGluZS1idWZmZXJlZCB8IHRlZSAtYSAiJExPR0ZJTEUiICIkV0lORVBSRUZJWC9wbGF5b25saW51 eC5sb2ciID4mMikgPiA+KHRlZSAtYSAiJExPR0ZJTEUiICIkV0lORVBSRUZJWC9wbGF5b25saW51 eC5sb2ciKQorLQkJCWVycm9ycz0kPworLQkJZmkKKy0JZWxzZQorLQkJIyBGSVhNRQorLQkJJEJF Rk9SRV9XSU5FICQoUE9MX0NvbmZpZ19SZWFkIEJFRk9SRV9XSU5FKSB3aW5lICIkQCIgIDI+ICIk V0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciID4gIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4Lmxv ZyIKKy0JCWVycm9ycz0kPworLQlmaQorLQorLQlpZiBbICIkZXJyb3JzIiAhPSAwIC1hICIkTm9F cnJvcnMiICE9ICJUcnVlIiAtYSAiJFBPTF9JZ25vcmVXaW5lRXJyb3JzIiAhPSAiVHJ1ZSIgXTsg dGhlbgorLQkJUE9MX0RlYnVnX0Vycm9yICIkKGV2YWxfZ2V0dGV4dCAnV2luZSBzZWVtcyB0byBo YXZlIGNyYXNoZWRcblxuSWYgeW91ciBwcm9ncmFtIGlzIHJ1bm5pbmcsIGp1c3QgaWdub3JlIHRo aXMgbWVzc2FnZScpIgorLQlmaQorLQlQT0xfRGVidWdfTWVzc2FnZSAiV2luZSByZXR1cm46ICRl cnJvcnMiCistCXJldHVybiAkZXJyb3JzCisrUE9MX1dpbmUoKSB7CisrICAjIFJ1biB0aGUgZ29v ZCB3aW5ldmVyc2lvbiBhbmQgc3RvcmUgdGhlIHJlc3VsdCB0byBhIGxvZ2ZpbGUKKysgICMgU2Ft ZSB1c2FnZSB0aGFuICJ3aW5lIgorKyAgbWtkaXIgLXAgIiRXSU5FUFJFRklYIgorKyAgdG91Y2gg IiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIKKysgIGxvY2FsIE5vRXJyb3JzCisrICBpZiBb ICIkMSIgPSAiLS1pZ25vcmUtZXJyb3JzIiBdOyB0aGVuCisrICAgIE5vRXJyb3JzPSJUcnVlIgor KyAgICBzaGlmdAorKyAgZmkKKysKKysgIGlmIFsgISAiJChQT0xfQ29uZmlnX1JlYWQgTk9fRlND SEVDSykiID0gIlRSVUUiIF07IHRoZW4KKysgICAgaWYgWyAiJDEiID0gInN0YXJ0IiBdOyB0aGVu CisrICAgICAgaWYgWyAiJDIiID0gIi91bml4IiBdOyB0aGVuCisrICAgICAgICBQT0xfU3lzdGVt X0NoZWNrRlMgIiQzIgorKyAgICAgIGVsc2UKKysgICAgICAgIFBPTF9TeXN0ZW1fQ2hlY2tGUyAi JDIiCisrICAgICAgZmkKKysgICAgZWxzZQorKyAgICAgIFBPTF9TeXN0ZW1fQ2hlY2tGUyAiJDEi CisrICAgIGZpCisrICBlbHNlCisrICAgIFBPTF9EZWJ1Z19NZXNzYWdlICIqKiBGaWxlc3lzdGVt IGNoZWNrcyBkaXNhYmxlZCAqKiIKKysgIGZpCisrCisrICBQT0xfV2luZV9BdXRvU2V0VmVyc2lv bkVudgorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlJ1bm5pbmcgd2luZS0kUE9MX1dJTkVWRVJTSU9O ICIkQCIgKFdvcmtpbmcgZGlyZWN0b3J5IDogJFBXRCkiCisrICBQT0xfRGVidWdfTG9nVG9QcmVm aXggIlJ1bm5pbmcgd2luZS0kUE9MX1dJTkVWRVJTSU9OICIkQCIgKFdvcmtpbmcgZGlyZWN0b3J5 IDogJFBXRCkiCisrCisrICAjIEVpdGhlciB0aGF0IG9yIG1vbml0b3IgImVycjpwcm9jZXNzOmNy ZWF0ZV9wcm9jZXNzIHN0YXJ0aW5nIDY0LWJpdCBwcm9jZXNzIEwieHh4IiBub3Qgc3VwcG9ydGVk IGluIDMyLWJpdCB3aW5lcHJlZml4XG53aW5lOiBCYWQgRVhFIGZvcm1hdCBmb3IgeHh4LiIgaW4g bG9ncworKyAgaWYgWyAiJFBPTF9BUkNIIiA9ICJ4ODYiIC1hIC1lICIkMSIgXTsgdGhlbgorKyAg ICBsb2NhbCBFWEVGSUxFPSIkMSIKKysgICAgaWYgUE9MX1N5c3RlbV9pczY0Yml0ICIkRVhFRklM RSI7IHRoZW4KKysgICAgICBOT0JVR1JFUE9SVD0iVFJVRSIgIyB1c2VyIG1pc3Rha2UKKysgICAg ICBQT0xfRGVidWdfRmF0YWwgIiQoZXZhbF9nZXR0ZXh0ICdTdGFydGluZyA2NC1iaXQgcHJvY2Vz cyAkRVhFRklMRSBpcyBub3Qgc3VwcG9ydGVkIGluIDMyLWJpdCB2aXJ0dWFsIGRyaXZlcycpIgor KyAgICBmaQorKyAgZmkKKysKKysgIGlmIFsgISAiJFdJTkVNRU5VQlVJTERFUl9BTEVSVCIgXTsg dGhlbgorKyAgICBQT0xfRGVidWdfTWVzc2FnZSAiTm90aWNlOiBQbGF5T25MaW51eCBkZWxpYmVy YXRlbHkgZGlzYWJsZXMgd2luZW1lbnVidWlsZGVyLiBTZWUgaHR0cDovL3d3dy5wbGF5b25saW51 eC5jb20vZnIvcGFnZS0yNi1XaW5lbWVudWJ1aWxkZXIuaHRtbCIKKysgICAgV0lORU1FTlVCVUlM REVSX0FMRVJUPSJEb25lIgorKyAgZmkKKysgIGlmIFsgIiQxIiA9ICJyZWdlZGl0IiAtYSAhICIk MiIgPSAiIiBdOyB0aGVuCisrICAgIGlmIFsgLWUgIiQyIiBdOyB0aGVuCisrICAgICAgUE9MX0Rl YnVnX0xvZ1RvUHJlZml4ICJDb250ZW50IG9mICQyIgorKyAgICAgICgKKysgICAgICAgIGVjaG8g Jy0tLS0tLS0tLS0tJworKyAgICAgICAgY2F0ICIkMiIKKysgICAgICAgIGVjaG8gJy0tLS0tLS0t LS0tJworKyAgICAgICkgPj4iJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIgorKyAgICBlbHNl CisrICAgICAgUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJyZWdlZGl0IHBhcmFtZXRlciAnJDInIGlz IG5vdCBhIGZpbGUsIG5vdCBkdW1wZWQgdG8gbG9nIgorKyAgICBmaQorKyAgZWxpZiBbICIkMSIg PSAicmVnZWRpdCIgXTsgdGhlbgorKyAgICBQT0xfRGVidWdfTG9nVG9QcmVmaXggIlVzZXIgbW9k aWZpZWQgc29tZXRoaW5nIGluIHRoZSByZWdpc3RyeSBtYW51YWxseSIKKysgIGZpCisrCisrICBb WyAkT1NYX1ZFUlNJT04gLWdlIDE5IF1dICYmIFdJTkVDTUQ9IndpbmUzMm9uNjQiIHx8IFdJTkVD TUQ9IndpbmUiCisrICBbWyAkT1NYX1ZFUlNJT04gLWdlIDE5IF1dICYmIFtbIC1lICIkMSIgXV0g JiYgeGF0dHIgLWQgY29tLmFwcGxlLnF1YXJhbnRpbmUgIiQxIgorKyAgaWYgWyAiJFBPTF9PUyIg PSAiTGludXgiIF0gfHwgWyAiJFBPTF9PUyIgPSAiTWFjIiBdOyB0aGVuCisrICAgIGlmIFsgIiRM T0dGSUxFIiA9ICIvZGV2L251bGwiIF07IHRoZW4KKysgICAgICAkQkVGT1JFX1dJTkUgJChQT0xf Q29uZmlnX1JlYWQgQkVGT1JFX1dJTkUpICRXSU5FQ01EICIkQCIgMj4gPihncmVwIC12IG1lbnVi dWlsZGVyIC0tbGluZS1idWZmZXJlZCB8IHRlZSAtYSAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgu bG9nIiA+JjIpID4gPih0ZWUgLWEgIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIpCisrICAg ICAgZXJyb3JzPSQ/CisrICAgIGVsc2UKKysgICAgICAkQkVGT1JFX1dJTkUgJChQT0xfQ29uZmln X1JlYWQgQkVGT1JFX1dJTkUpICRXSU5FQ01EICIkQCIgMj4gPihncmVwIC12IG1lbnVidWlsZGVy IC0tbGluZS1idWZmZXJlZCB8IHRlZSAtYSAiJExPR0ZJTEUiICIkV0lORVBSRUZJWC9wbGF5b25s aW51eC5sb2ciID4mMikgPiA+KHRlZSAtYSAiJExPR0ZJTEUiICIkV0lORVBSRUZJWC9wbGF5b25s aW51eC5sb2ciKQorKyAgICAgIGVycm9ycz0kPworKyAgICBmaQorKyAgZWxzZQorKyAgICAjIEZJ WE1FCisrICAgICRCRUZPUkVfV0lORSAkKFBPTF9Db25maWdfUmVhZCBCRUZPUkVfV0lORSkgJFdJ TkVDTUQgIiRAIiAyPiIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciID4iJFdJTkVQUkVGSVgv cGxheW9ubGludXgubG9nIgorKyAgICBlcnJvcnM9JD8KKysgIGZpCisrCisrICBpZiBbICIkZXJy b3JzIiAhPSAwIC1hICIkTm9FcnJvcnMiICE9ICJUcnVlIiAtYSAiJFBPTF9JZ25vcmVXaW5lRXJy b3JzIiAhPSAiVHJ1ZSIgXTsgdGhlbgorKyAgICBQT0xfRGVidWdfRXJyb3IgIiQoZXZhbF9nZXR0 ZXh0ICdXaW5lIHNlZW1zIHRvIGhhdmUgY3Jhc2hlZFxuXG5JZiB5b3VyIHByb2dyYW0gaXMgcnVu bmluZywganVzdCBpZ25vcmUgdGhpcyBtZXNzYWdlJykiCisrICBmaQorKyAgUE9MX0RlYnVnX01l c3NhZ2UgIldpbmUgcmV0dXJuOiAkZXJyb3JzIgorKyAgcmV0dXJuICRlcnJvcnMKKyB9CisgCist UE9MX1dpbmVfU2VsZWN0UHJlZml4KCkKKy17CistCSMgU2VsZWN0IGEgd2luZXByZWZpeCBhbmQg cmVtb3ZlIHVuZXhwZWN0ZWQgY2hhcnMKKy0JIyBVc2FnZTogUE9MX1dpbmVfU2VsZWN0UHJlZml4 IFtwcmVmaXhuYW1lXQorLQlQUkVGTkFNRT1gcHJpbnRmICIkMSJ8IHRyIC1jIFtbYS16QS1aMC05 XVwuXSAnXydgCistCVBPTF9EZWJ1Z19NZXNzYWdlICJTZWxlY3RpbmcgcHJlZml4OiAkUFJFRk5B TUUiCistICAgICAgICAjIEVtcHR5IG5hbWUgaXMgZGFuZ2Vyb3VzCistICAgICAgICBbIC16ICIk UFJFRk5BTUUiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJCYWQgb3IgZW1wdHkgdmlydHVhbCBkcml2 ZSBuYW1lIHNlbGVjdGVkIgorLQlleHBvcnQgV0lORVBSRUZJWD0iJFBPTF9VU0VSX1JPT1Qvd2lu ZXByZWZpeC8kUFJFRk5BTUUiCistCWV4cG9ydCBET1NQUkVGSVg9IiRXSU5FUFJFRklYIgorLQlp ZiBbIC1lICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5jZmciIF07IHRoZW4KKy0JCWV4cG9ydCBQ T0xfV0lORVZFUlNJT049IiQoUE9MX0NvbmZpZ19QcmVmaXhSZWFkIFZFUlNJT04pIgorLQkJUE9M X1N5c3RlbV9TZXRBcmNoICIkKFBPTF9Db25maWdfUHJlZml4UmVhZCBBUkNIKSIgImRldGVjdGVk IgorLQllbHNlCistCQl0b3VjaCAiJFdJTkVQUkVGSVgvcGxheW9ubGludXguY2ZnIiAyPiAvZGV2 L251bGwKKy0JZmkKKy0KKy0JIyMgSW4gZmFjdCBpdCdzIGEgYmFkIGlkZWEKKy0JI2lmIFsgIiQo UE9MX0NvbmZpZ19QcmVmaXhSZWFkIEFSQ0gpIiA9ICJ4ODYiIF07IHRoZW4gIyMgQ29tbWUgY2Es IHBhcyBkZSBjb25mbGl0cworLQkjCWV4cG9ydCBXSU5FQVJDSD13aW4zMgorLQkjZmkKKytQT0xf V2luZV9TZWxlY3RQcmVmaXgoKSB7CisrICAjIFNlbGVjdCBhIHdpbmVwcmVmaXggYW5kIHJlbW92 ZSB1bmV4cGVjdGVkIGNoYXJzCisrICAjIFVzYWdlOiBQT0xfV2luZV9TZWxlY3RQcmVmaXggW3By ZWZpeG5hbWVdCisrICBQUkVGTkFNRT0kKHByaW50ZiAiJDEiIHwgdHIgLWMgW1thLXpBLVowLTld XC5dICdfJykKKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZWxlY3RpbmcgcHJlZml4OiAkUFJFRk5B TUUiCisrICAjIEVtcHR5IG5hbWUgaXMgZGFuZ2Vyb3VzCisrICBbIC16ICIkUFJFRk5BTUUiIF0g JiYgUE9MX0RlYnVnX0ZhdGFsICJCYWQgb3IgZW1wdHkgdmlydHVhbCBkcml2ZSBuYW1lIHNlbGVj dGVkIgorKyAgZXhwb3J0IFdJTkVQUkVGSVg9IiRQT0xfVVNFUl9ST09UL3dpbmVwcmVmaXgvJFBS RUZOQU1FIgorKyAgZXhwb3J0IERPU1BSRUZJWD0iJFdJTkVQUkVGSVgiCisrICBpZiBbIC1lICIk V0lORVBSRUZJWC9wbGF5b25saW51eC5jZmciIF07IHRoZW4KKysgICAgZXhwb3J0IFBPTF9XSU5F VkVSU0lPTj0iJChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgVkVSU0lPTikiCisrICAgIFBPTF9TeXN0 ZW1fU2V0QXJjaCAiJChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgQVJDSCkiICJkZXRlY3RlZCIKKysg IGVsc2UKKysgICAgdG91Y2ggIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmNmZyIgMj4vZGV2L251 bGwKKysgIGZpCisrCisrICAjIyBJbiBmYWN0IGl0J3MgYSBiYWQgaWRlYQorKyAgI2lmIFsgIiQo UE9MX0NvbmZpZ19QcmVmaXhSZWFkIEFSQ0gpIiA9ICJ4ODYiIF07IHRoZW4gIyMgQ29tbWUgY2Es IHBhcyBkZSBjb25mbGl0cworKyAgIwlleHBvcnQgV0lORUFSQ0g9d2luMzIKKysgICNmaQorIH0K Ky1QT0xfV2luZV9QcmVmaXhFeGlzdHMoKQorLXsKKy0JIyBDaGVja3MgaWYgYSBwcmVmaXggZXhp c3RzCistCSMgVXNhZ2U6IFBPTF9XaW5lX1ByZWZpeEV4aXN0cworLQkjIFJldHVybiBUcnVlIG9y IEZhbHNlCistCVBSRUZOQU1FPWBwcmludGYgIiQxInwgdHIgLWMgW1thLXpBLVowLTldXC5dICdf J2AKKy0JWyAtZCAiJFBPTF9VU0VSX1JPT1Qvd2luZXByZWZpeC8kUFJFRk5BTUUvZHJpdmVfYyIg XSAmJiBlY2hvICJUcnVlIiB8fCBlY2hvICJGYWxzZSIKKytQT0xfV2luZV9QcmVmaXhFeGlzdHMo KSB7CisrICAjIENoZWNrcyBpZiBhIHByZWZpeCBleGlzdHMKKysgICMgVXNhZ2U6IFBPTF9XaW5l X1ByZWZpeEV4aXN0cworKyAgIyBSZXR1cm4gVHJ1ZSBvciBGYWxzZQorKyAgUFJFRk5BTUU9JChw cmludGYgIiQxIiB8IHRyIC1jIFtbYS16QS1aMC05XVwuXSAnXycpCisrICBbIC1kICIkUE9MX1VT RVJfUk9PVC93aW5lcHJlZml4LyRQUkVGTkFNRS9kcml2ZV9jIiBdICYmIGVjaG8gIlRydWUiIHx8 IGVjaG8gIkZhbHNlIgorIH0KKy1QT0xfV2luZV9DaGVja1ByZWZpeEV4aXN0cygpCisteworLQkj IENoZWNrcyBpZiBhIHByZWZpeCBleGlzdHMKKy0JIyBVc2FnZTogUE9MX1dpbmVfQ2hlY2tQcmVm aXhFeGlzdHMgW1BSRUZJWF0gW1RJVExFX1JFUVVJUkVEXQorLQkjIFJldHVybiBhIG1lc3NhZ2Ug aWYgbm90IGFuZCBxdWl0CistCVBSRUZJWD0kMQorLQlUSVRMRV9SRVFVSVJFRD0iJDIiCistCWlm IFsgIiQoUE9MX1dpbmVfUHJlZml4RXhpc3RzICIkUFJFRklYIikiID0gIkZhbHNlIiBdOyB0aGVu CistCQlQT0xfRGVidWdfV2FybmluZyAiVGhlIHByZWZpeCAnJFBSRUZJWCcgZG9lcyBub3QgZXhp c3QiCistCQlQT0xfU2V0dXBXaW5kb3dfbWVzc2FnZSAiJChldmFsX2dldHRleHQgJ1RoaXMgaXMg YW4gaW5zdGFsbGVyIGZvciBhbiB1cGRhdGUgb3IgYW4gYWRkb247XG5QbGVhc2UgaW5zdGFsbCAk VElUTEVfUkVRVUlSRUQgZmlyc3QnKSIgIiRUSVRMRSIKKy0JCVBPTF9TZXR1cFdpbmRvd19DbG9z ZQorLQkJZXhpdCAxCistCWZpCisrUE9MX1dpbmVfQ2hlY2tQcmVmaXhFeGlzdHMoKSB7CisrICAj IENoZWNrcyBpZiBhIHByZWZpeCBleGlzdHMKKysgICMgVXNhZ2U6IFBPTF9XaW5lX0NoZWNrUHJl Zml4RXhpc3RzIFtQUkVGSVhdIFtUSVRMRV9SRVFVSVJFRF0KKysgICMgUmV0dXJuIGEgbWVzc2Fn ZSBpZiBub3QgYW5kIHF1aXQKKysgIFBSRUZJWD0kMQorKyAgVElUTEVfUkVRVUlSRUQ9IiQyIgor KyAgaWYgWyAiJChQT0xfV2luZV9QcmVmaXhFeGlzdHMgIiRQUkVGSVgiKSIgPSAiRmFsc2UiIF07 IHRoZW4KKysgICAgUE9MX0RlYnVnX1dhcm5pbmcgIlRoZSBwcmVmaXggJyRQUkVGSVgnIGRvZXMg bm90IGV4aXN0IgorKyAgICBQT0xfU2V0dXBXaW5kb3dfbWVzc2FnZSAiJChldmFsX2dldHRleHQg J1RoaXMgaXMgYW4gaW5zdGFsbGVyIGZvciBhbiB1cGRhdGUgb3IgYW4gYWRkb247XG5QbGVhc2Ug aW5zdGFsbCAkVElUTEVfUkVRVUlSRUQgZmlyc3QnKSIgIiRUSVRMRSIKKysgICAgUE9MX1NldHVw V2luZG93X0Nsb3NlCisrICAgIGV4aXQgMQorKyAgZmkKKyB9CistUE9MX1dpbmVfVmVyc2lvblNp Z25hdHVyZSgpCisteworLQkjIFJldHVybiB0aGUgc2lnbmF0dXJlIG9mIGEgV2luZSBwYWNrYWdl CistCSMgVXNhZ2U6IFBPTF9XaW5lX1ZlcnNpb25TaWduYXR1cmUgW0RJUl0KKy0KKy0JIyBPbiBM aW51eCwgcmVzdWx0IHNob3VsZCBtYXRjaCB0aGUgb25lIG9mCistCSMgY2QgJERJUjsgZmluZCAq IC10eXBlIGZ8c29ydHx4YXJncyBtZDVzdW18bWQ1c3VtIC18Y3V0IC1jMS0zMgorLQorLQlsb2Nh bCBXSU5FUEtHUEFUSD0iJDEiCistCVsgLWQgIiRXSU5FUEtHUEFUSCIgXSB8fCByZXR1cm4KKy0J IyBbIC1lICIkV0lORVBLR1BBVEgvYmluL3dpbmUiIF0gfHwgcmV0dXJuCistCistCWxvY2FsIENV UlJTSUdWRVI9IiRXSU5FUEtHUEFUSC8uc2lnbmF0dXJlLnYxIiAjIGNhY2hlIHZlcnNpb24KKy0J bG9jYWwgV0lORVNJRworLQlbIC1lICIkQ1VSUlNJR1ZFUiIgXSAmJiByZWFkIFdJTkVTSUcgPCAi JENVUlJTSUdWRVIiCistCWlmIFsgLXogIiRXSU5FU0lHIiBdOyB0aGVuCistCQlsb2NhbCBNQU5J RkVTVEZJTEU9IiRQT0xfVVNFUl9ST09UL3RtcC9QT0xfV2luZV9WZXJzaW9uU2lnbmF0dXJlX21h bmlmZXN0JCQiCistCQkoY2QgIiRXSU5FUEtHUEFUSCIgJiYgZmluZCAqIC10eXBlIGYgfFwKKy0J CSAgc29ydCB8XAorLQkJICB3aGlsZSByZWFkIHNpZ2ZpbGVuYW1lOyBkbworLQkJICAgIGVjaG8g IiQoUE9MX01ENV9maWxlICIkc2lnZmlsZW5hbWUiKSAgJHNpZ2ZpbGVuYW1lIgorLQkJICBkb25l KSA+ICIkTUFOSUZFU1RGSUxFIgorLQkJV0lORVNJRz0iJChQT0xfTUQ1X2ZpbGUgIiRNQU5JRkVT VEZJTEUiKSIKKy0JCXJtIC1mICIkTUFOSUZFU1RGSUxFIgorLQkJZWNobyAiJFdJTkVTSUciID4g IiRDVVJSU0lHVkVSIgorLQlmaQorLQllY2hvICIkV0lORVNJRyIKKytQT0xfV2luZV9WZXJzaW9u U2lnbmF0dXJlKCkgeworKyAgIyBSZXR1cm4gdGhlIHNpZ25hdHVyZSBvZiBhIFdpbmUgcGFja2Fn ZQorKyAgIyBVc2FnZTogUE9MX1dpbmVfVmVyc2lvblNpZ25hdHVyZSBbRElSXQorKworKyAgIyBP biBMaW51eCwgcmVzdWx0IHNob3VsZCBtYXRjaCB0aGUgb25lIG9mCisrICAjIGNkICRESVI7IGZp bmQgKiAtdHlwZSBmfHNvcnR8eGFyZ3MgbWQ1c3VtfG1kNXN1bSAtfGN1dCAtYzEtMzIKKysKKysg IGxvY2FsIFdJTkVQS0dQQVRIPSIkMSIKKysgIFsgLWQgIiRXSU5FUEtHUEFUSCIgXSB8fCByZXR1 cm4KKysgICMgWyAtZSAiJFdJTkVQS0dQQVRIL2Jpbi93aW5lIiBdIHx8IHJldHVybgorKworKyAg bG9jYWwgQ1VSUlNJR1ZFUj0iJFdJTkVQS0dQQVRILy5zaWduYXR1cmUudjEiICMgY2FjaGUgdmVy c2lvbgorKyAgbG9jYWwgV0lORVNJRworKyAgWyAtZSAiJENVUlJTSUdWRVIiIF0gJiYgcmVhZCBX SU5FU0lHIDwiJENVUlJTSUdWRVIiCisrICBpZiBbIC16ICIkV0lORVNJRyIgXTsgdGhlbgorKyAg ICBsb2NhbCBNQU5JRkVTVEZJTEU9IiRQT0xfVVNFUl9ST09UL3RtcC9QT0xfV2luZV9WZXJzaW9u U2lnbmF0dXJlX21hbmlmZXN0JCQiCisrICAgIChjZCAiJFdJTkVQS0dQQVRIIiAmJiBmaW5kICog LXR5cGUgZiB8CisrICAgICAgc29ydCB8CisrICAgICAgd2hpbGUgcmVhZCBzaWdmaWxlbmFtZTsg ZG8KKysgICAgICAgIGVjaG8gIiQoUE9MX01ENV9maWxlICIkc2lnZmlsZW5hbWUiKSAgJHNpZ2Zp bGVuYW1lIgorKyAgICAgIGRvbmUpID4iJE1BTklGRVNURklMRSIKKysgICAgV0lORVNJRz0iJChQ T0xfTUQ1X2ZpbGUgIiRNQU5JRkVTVEZJTEUiKSIKKysgICAgcm0gLWYgIiRNQU5JRkVTVEZJTEUi CisrICAgIGVjaG8gIiRXSU5FU0lHIiA+IiRDVVJSU0lHVkVSIgorKyAgZmkKKysgIGVjaG8gIiRX SU5FU0lHIgorIH0KKy1QT0xfV2luZV9JbnN0YWxsVmVyc2lvbigpCisteworLQkjIEluc3RhbGwg YSB3aW5ldmVyc2lvbgorLQkjIFVzYWdlOiBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbiBbVkVSU0lP Tl0KKy0JWyAhICIkMSIgPSAiIiBdICYmIGV4cG9ydCBQT0xfV0lORVZFUlNJT049IiQxIgorLQlb ICEgIiQyIiA9ICIiIF0gJiYgZXhwb3J0IFBPTF9XSU5FRElTVFJJQlVUSU9OPSIkMiIgfHwgZXhw b3J0IFBPTF9XSU5FRElTVFJJQlVUSU9OPSJ1cHN0cmVhbSIKKy0KKy0JaWYgW1sgIiRQT0xfV0lO RVZFUlNJT04iID09ICoiLXN0YWdpbmciKiBdXTsgdGhlbgorLQkgICAgbG9jYWwgcG9sX3dpbmV2 ZXJzaW9uPSIke1BPTF9XSU5FVkVSU0lPTi8tc3RhZ2luZy99IgorLQkJCVBPTF9XSU5FRElTVFJJ QlVUSU9OPSJzdGFnaW5nIgorLQllbHNlCistCQkJbG9jYWwgcG9sX3dpbmV2ZXJzaW9uX2luc3Rh bGw9IiRQT0xfV0lORVZFUlNJT04iCistCQkJbG9jYWwgcG9sX3dpbmV2ZXJzaW9uPSIkUE9MX1dJ TkVWRVJTSU9OIgorLQlmaQorLQorLQlpZiBbICIkUE9MX1dJTkVESVNUUklCVVRJT04iID09ICJz dGFnaW5nIiBdOyB0aGVuCistCQlsb2NhbCBwb2xfd2luZXZlcnNpb25faW5zdGFsbD0iJHBvbF93 aW5ldmVyc2lvbi1zdGFnaW5nIgorLQlmaQorLQorLQlbICIkcG9sX3dpbmV2ZXJzaW9uIiA9ICIi IF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJObyBQT0xfV0lORVZFUlNJT04gc2V0IgorLQlbICIkUE9M X0FSQ0giID0gIiIgXSAmJiBQT0xfU3lzdGVtX1NldEFyY2ggImF1dG8iCistCVBPTF9EZWJ1Z19N ZXNzYWdlICJJbnN0YWxsaW5nIHdpbmUgdmVyc2lvbiBwYXRoOiAkcG9sX3dpbmV2ZXJzaW9uX2lu c3RhbGwsICRQT0xfQVJDSCIKKy0JWyAiJFBPTF9PUyIgPSAiTWFjIiBdICYmIEFSQ0hfUFJFRklY PSJkYXJ3aW4iCistCVsgIiRQT0xfT1MiID0gIkZyZWVCU0QiIF0gJiYgQVJDSF9QUkVGSVg9ImZy ZWVic2QiCistCVsgIiRQT0xfT1MiID0gIkxpbnV4IiBdICYmIEFSQ0hfUFJFRklYPSJsaW51eCIK Ky0JT0xEUEFUSD0iJFBXRCIKKy0JV0lORV9TRUNUSU9OPSIkQVJDSF9QUkVGSVgtJFBPTF9BUkNI IgorLQlXSU5FRElSPSIkUE9MX1VTRVJfUk9PVC93aW5lLyRXSU5FX1NFQ1RJT04iCistCXRvdWNo ICIkV0lORURJUi9pbnN0YWxsaW5nIgorLQlpZiBbICEgLWUgIiRQT0xfVVNFUl9ST09UL3dpbmUv JEFSQ0hfUFJFRklYLSRQT0xfQVJDSC8kcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGwiIF0KKy0JdGhl bgorLQkJUE9MX0RlYnVnX01lc3NhZ2UgIldpbmUgc2l0ZTogJFdJTkVfU0lURSIKKy0JCWVjaG8g JFBPTF9XR0VUICIkV0lORV9TSVRFIiAtTy0KKy0JCVdJTkVEQVRBPSIkKCRQT0xfV0dFVCAiJFdJ TkVfU0lURSIgLU8tIHxqcSAtciAiLltdIHwgc2VsZWN0KC5uYW1lPT1cIiRQT0xfV0lORURJU1RS SUJVVElPTi0kQVJDSF9QUkVGSVgtJFBPTF9BUkNIXCIpIHwgLnBhY2thZ2VzIHwgLltdIHwgc2Vs ZWN0KC52ZXJzaW9uPT1cIiRwb2xfd2luZXZlcnNpb25cIikiKSIKKy0JCVBPTF9EZWJ1Z19NZXNz YWdlICJXaW5lYnVpbGQgZGF0YTogJFdJTkVEQVRBIgorLQorLQkJV0lORV9BRERSRVNTPSIkKGVj aG8gIiRXSU5FREFUQSIgfCBqcSAnLnVybCcgLXIpIgorLQkJUE9MX0RlYnVnX01lc3NhZ2UgIldp bmUgYWRkcmVzcyBmb3VuZDogJFdJTkVfQUREUkVTUyIKKy0JCSNXSU5FX0FERFJFU1M9JCgkUE9M X1dHRVQgIiRXSU5FX1NJVEUvJFdJTkVfU0VDVElPTi5sc3QiIC1PLSB8IGdyZXAgIjskcG9sX3dp bmV2ZXJzaW9uOyIgfCB0YWlsIC1uIDEgfCBjdXQgLWQgIjsiIC1mMSkKKy0KKy0JCWlmIFsgIiRX SU5FX0FERFJFU1MiID0gIiIgXSAmJiBbICIkUE9MX0FSQ0giID0gImFtZDY0IiBdCistCQl0aGVu CistCQkJUE9MX0RlYnVnX1dhcm5pbmcgIldpbmUgJDEgYW1kNjQgZG9lcyBub3QgZXhpc3QuIFN3 aXRjaGluZyB0byB4ODYiCistCQkJUE9MX1N5c3RlbV9TZXRBcmNoICJ4ODYiCistCQkJUE9MX1dp bmVfSW5zdGFsbFZlcnNpb24gIiQxIgorLQkJZWxzZQorLQkJCWlmIFsgIiRXSU5FX0FERFJFU1Mi ID0gIiIgXQorLQkJCXRoZW4KKy0JCQkJUE9MX0RlYnVnX0Vycm9yICIkKGV2YWxfZ2V0dGV4dCAi VW5hYmxlIHRvIGZpbmQgdmVyc2lvbjogIikkcG9sX3dpbmV2ZXJzaW9uIgorLQkJCQlQT0xfU2V0 dXBXaW5kb3dfQ2xvc2UKKy0JCQkJZXhpdAorLQkJCWZpCistCistCQkJY2QgIiRQT0xfVVNFUl9S T09UL3RtcCIKKy0JCQlmaWxlbmFtZT0iJFBXRC9QbGF5T25MaW51eC13aW5lLSRwb2xfd2luZXZl cnNpb24tJFBPTF9XSU5FRElTVFJJQlVUSU9OLSRBUkNIX1BSRUZJWC0kUE9MX0FSQ0gudGFyLmd6 IgorLQkJCVBPTF9TZXR1cFdpbmRvd19kb3dubG9hZCAiJChldmFsX2dldHRleHQgIkRvd25sb2Fk aW5nIFdpbmU6ICIpJHBvbF93aW5ldmVyc2lvbiIgIiRUSVRMRSIgIiRXSU5FX0FERFJFU1MiCist CQkJUE9MX1NldHVwV2luZG93X3dhaXRfbmV4dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0ICJEb3du bG9hZGluZyBXaW5lOiAiKSRwb2xfd2luZXZlcnNpb24iICIkVElUTEUiCistCQkJc2xlZXAgMQor LQkJCXNoYTE9IiQoZWNobyAiJFdJTkVEQVRBIiB8IGpxICcuc2hhMXN1bScgLXIpIgorLQkJCXNo YTFfZmlsZT0kKHNoYXN1bSAiJGZpbGVuYW1lIiB8IGF3ayAne3ByaW50ICQxfScpCistCQkJZWNo byAiU2VydmVyIHNoYTEgOiAkc2hhMSIKKy0JCQllY2hvICJDbGllbnQgc2hhMSA6ICRzaGExX2Zp bGUiCistCistCQkJaWYgWyAhICIkc2hhMSIgPSAiJHNoYTFfZmlsZSIgXQorLQkJCXRoZW4KKy0J CQkJUE9MX1NldHVwV2luZG93X21lc3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdUaGUgZG93bmxvYWQg c2VlbXMgdG8gaGF2ZSBmYWlsZWQuJykiICIkVElUTEUiCistCQkJZWxzZQorLQkJCQlQT0xfU2V0 dXBXaW5kb3dfd2FpdCAiJChldmFsX2dldHRleHQgJ0V4dHJhY3RpbmcgV2luZS4uLicpIiAiJFRJ VExFIgorLQkJCQlta2RpciAtcCAiJFBPTF9VU0VSX1JPT1Qvd2luZS8kQVJDSF9QUkVGSVgtJFBP TF9BUkNILyRwb2xfd2luZXZlcnNpb25faW5zdGFsbCIKKy0JCQkJY2QgIiRQT0xfVVNFUl9ST09U L3dpbmUvJEFSQ0hfUFJFRklYLSRQT0xfQVJDSC8kcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGwiCist CQkJCXRhciAteHZmICIkZmlsZW5hbWUiCistCQkJZmkKKy0JCQlybSAiJGZpbGVuYW1lIgorLQkJ CSMgUE9MX1dpbmVfSW5zdGFsbF9yZXNvdXJjZXMgZ2Vja28gIiRwb2xfd2luZXZlcnNpb24iICIk UE9MX0FSQ0giCistCQkJIyBQT0xfV2luZV9JbnN0YWxsX3Jlc291cmNlcyBtb25vICIkcG9sX3dp bmV2ZXJzaW9uIiAiJFBPTF9BUkNIIgorLQkJZmkKKy0JZmkKKy0Jcm0gIiRXSU5FRElSL2luc3Rh bGxpbmciCisrUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24oKSB7CisrICAjIEluc3RhbGwgYSB3aW5l dmVyc2lvbgorKyAgIyBVc2FnZTogUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24gW1ZFUlNJT05dCisr ICBbICEgIiQxIiA9ICIiIF0gJiYgZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCisrICBbICEg IiQyIiA9ICIiIF0gJiYgZXhwb3J0IFBPTF9XSU5FRElTVFJJQlVUSU9OPSIkMiIgfHwgZXhwb3J0 IFBPTF9XSU5FRElTVFJJQlVUSU9OPSJ1cHN0cmVhbSIKKysKKysgIGlmIFtbICIkUE9MX1dJTkVW RVJTSU9OIiA9PSAqIi1zdGFnaW5nIiogXV07IHRoZW4KKysgICAgbG9jYWwgcG9sX3dpbmV2ZXJz aW9uPSIke1BPTF9XSU5FVkVSU0lPTi8tc3RhZ2luZy99IgorKyAgICBQT0xfV0lORURJU1RSSUJV VElPTj0ic3RhZ2luZyIKKysgIGVsaWYgW1sgIiRQT0xfV0lORVZFUlNJT04iID09ICoiLWN4Iiog XV07IHRoZW4KKysgICAgbG9jYWwgcG9sX3dpbmV2ZXJzaW9uPSIke1BPTF9XSU5FVkVSU0lPTi8t Y3gvfSIKKysgICAgUE9MX1dJTkVESVNUUklCVVRJT049ImN4IgorKyAgZWxzZQorKyAgICBsb2Nh bCBwb2xfd2luZXZlcnNpb25faW5zdGFsbD0iJFBPTF9XSU5FVkVSU0lPTiIKKysgICAgbG9jYWwg cG9sX3dpbmV2ZXJzaW9uPSIkUE9MX1dJTkVWRVJTSU9OIgorKyAgZmkKKysKKysgIGlmIFsgIiRQ T0xfV0lORURJU1RSSUJVVElPTiIgPT0gInN0YWdpbmciIF07IHRoZW4KKysgICAgbG9jYWwgcG9s X3dpbmV2ZXJzaW9uX2luc3RhbGw9IiRwb2xfd2luZXZlcnNpb24tc3RhZ2luZyIKKysgIGZpCisr CisrICBpZiBbICIkUE9MX1dJTkVESVNUUklCVVRJT04iID09ICJjeCIgXTsgdGhlbgorKyAgICBs b2NhbCBwb2xfd2luZXZlcnNpb25faW5zdGFsbD0iJHBvbF93aW5ldmVyc2lvbi1jeCIKKysgIGZp CisrCisrICBbICIkcG9sX3dpbmV2ZXJzaW9uIiA9ICIiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJO byBQT0xfV0lORVZFUlNJT04gc2V0IgorKyAgWyAiJFBPTF9BUkNIIiA9ICIiIF0gJiYgUE9MX1N5 c3RlbV9TZXRBcmNoICJhdXRvIgorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkluc3RhbGxpbmcgd2lu ZSB2ZXJzaW9uIHBhdGg6ICRwb2xfd2luZXZlcnNpb25faW5zdGFsbCwgJFBPTF9BUkNIIgorKyAg WyAiJFBPTF9PUyIgPSAiTWFjIiBdICYmIEFSQ0hfUFJFRklYPSJkYXJ3aW4iCisrICBbICIkUE9M X09TIiA9ICJGcmVlQlNEIiBdICYmIEFSQ0hfUFJFRklYPSJmcmVlYnNkIgorKyAgWyAiJFBPTF9P UyIgPSAiTGludXgiIF0gJiYgQVJDSF9QUkVGSVg9ImxpbnV4IgorKyAgT0xEUEFUSD0iJFBXRCIK KysgIFdJTkVfU0VDVElPTj0iJEFSQ0hfUFJFRklYLSRQT0xfQVJDSCIKKysgIFdJTkVESVI9IiRQ T0xfVVNFUl9ST09UL3dpbmUvJFdJTkVfU0VDVElPTiIKKysgIHRvdWNoICIkV0lORURJUi9pbnN0 YWxsaW5nIgorKyAgaWYgWyAhIC1lICIkUE9MX1VTRVJfUk9PVC93aW5lLyRBUkNIX1BSRUZJWC0k UE9MX0FSQ0gvJHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsIiBdOyB0aGVuCisrICAgIFBPTF9EZWJ1 Z19NZXNzYWdlICJXaW5lIHNpdGU6ICRXSU5FX1NJVEUiCisrICAgIFBPTF9EZWJ1Z19NZXNzYWdl ICJ3Z2V0IGxpc3QgY29tbWFuZDogJFBPTF9XR0VUICRXSU5FX1NJVEUgLU8tIgorKyAgICBQT0xf RGVidWdfTWVzc2FnZSAiUE9MX0FSQ0g6ICRQT0xfQVJDSCIKKysKKysgICAgaWYgWyAiJFBPTF9B UkNIIiA9ICJ4ODYiIF07IHRoZW4KKysgICAgICBbWyAiJE9TWF9WRVJTSU9OIiAtZ2UgMTkgXV0g JiYgc2l0ZV9hcmNoPSJ4ODZvbjY0IiB8fCBzaXRlX2FyY2g9Ing4NiIKKysgICAgZWxzZQorKyAg ICAgIHNpdGVfYXJjaD0iJFBPTF9BUkNIIgorKyAgICBmaQorKyAgICBXSU5FREFUQT0iJCgkUE9M X1dHRVQgIiRXSU5FX1NJVEUiIC1PLSB8IGpxIC1yICIuW10gfCBzZWxlY3QoLm5hbWU9PVwiJFBP TF9XSU5FRElTVFJJQlVUSU9OLSRBUkNIX1BSRUZJWC0kc2l0ZV9hcmNoXCIpIHwgLnBhY2thZ2Vz IHwgLltdIHwgc2VsZWN0KC52ZXJzaW9uPT1cIiRwb2xfd2luZXZlcnNpb25cIikiKSIKKysgICAg UE9MX0RlYnVnX01lc3NhZ2UgIldpbmVidWlsZCBkYXRhOiAkV0lORURBVEEiCisrCisrICAgIFdJ TkVfQUREUkVTUz0iJChlY2hvICIkV0lORURBVEEiIHwganEgJy51cmwnIC1yKSIKKysgICAgUE9M X0RlYnVnX01lc3NhZ2UgIldpbmUgYWRkcmVzcyBmb3VuZDogJFdJTkVfQUREUkVTUyIKKysgICAg I1dJTkVfQUREUkVTUz0kKCRQT0xfV0dFVCAiJFdJTkVfU0lURS8kV0lORV9TRUNUSU9OLmxzdCIg LU8tIHwgZ3JlcCAiOyRwb2xfd2luZXZlcnNpb247IiB8IHRhaWwgLW4gMSB8IGN1dCAtZCAiOyIg LWYxKQorKworKyAgICBpZiBbICIkV0lORV9BRERSRVNTIiA9ICIiIF0gJiYgWyAiJFBPTF9BUkNI IiA9ICJhbWQ2NCIgXTsgdGhlbgorKyAgICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJXaW5lICQxIGFt ZDY0IGRvZXMgbm90IGV4aXN0LiBTd2l0Y2hpbmcgdG8geDg2IgorKyAgICAgIFBPTF9TeXN0ZW1f U2V0QXJjaCAieDg2IgorKyAgICAgIFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uICIkMSIKKysgICAg ZWxzZQorKyAgICAgIGlmIFsgIiRXSU5FX0FERFJFU1MiID0gIiIgXTsgdGhlbgorKyAgICAgICAg aWYgW1sgJE9TWF9WRVJTSU9OIC1nZSAxOSBdXTsgdGhlbgorKyAgICAgICAgICBQT0xfU2V0dXBX aW5kb3dfbWVzc2FnZSAiJChldmFsX2dldHRleHQgIm1hY09TIENhdGFsaW5hIHVzZXI6IDMyYml0 cyB3aW5lIHZlcnNpb24gYXJlIG5vIGxvbmdlciBhdmFpbGFibGUuXG5XZSBhcmUgZ29pbmcgdG8g dXNlIHRoZSBzeXN0ZW0gd2luZSB2ZXJzaW9uIGluc3RlYWQiKSIKKysgICAgICAgICAgcmV0dXJu IDIKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgUE9MX0RlYnVnX0Vycm9yICIkKGV2YWxfZ2V0 dGV4dCAiVW5hYmxlIHRvIGZpbmQgdmVyc2lvbjogIikkcG9sX3dpbmV2ZXJzaW9uIgorKyAgICAg ICAgICBQT0xfU2V0dXBXaW5kb3dfQ2xvc2UKKysgICAgICAgICAgZXhpdAorKyAgICAgICAgZmkK KysgICAgICBmaQorKworKyAgICAgIGNkICIkUE9MX1VTRVJfUk9PVC90bXAiCisrICAgICAgZmls ZW5hbWU9IiRQV0QvUGxheU9uTGludXgtd2luZS0kcG9sX3dpbmV2ZXJzaW9uLSRQT0xfV0lORURJ U1RSSUJVVElPTi0kQVJDSF9QUkVGSVgtJHNpdGVfYXJjaC50YXIuZ3oiCisrICAgICAgUE9MX1Nl dHVwV2luZG93X2Rvd25sb2FkICIkKGV2YWxfZ2V0dGV4dCAiRG93bmxvYWRpbmcgV2luZTogIikk cG9sX3dpbmV2ZXJzaW9uIiAiJFRJVExFIiAiJFdJTkVfQUREUkVTUyIKKysgICAgICBQT0xfU2V0 dXBXaW5kb3dfd2FpdF9uZXh0X3NpZ25hbCAiJChldmFsX2dldHRleHQgIkRvd25sb2FkaW5nIFdp bmU6ICIpJHBvbF93aW5ldmVyc2lvbiIgIiRUSVRMRSIKKysgICAgICBzbGVlcCAxCisrICAgICAg c2hhMT0iJChlY2hvICIkV0lORURBVEEiIHwganEgJy5zaGExc3VtJyAtcikiCisrICAgICAgc2hh MV9maWxlPSQoc2hhc3VtICIkZmlsZW5hbWUiIHwgYXdrICd7cHJpbnQgJDF9JykKKysgICAgICBl Y2hvICJTZXJ2ZXIgc2hhMSA6ICRzaGExIgorKyAgICAgIGVjaG8gIkNsaWVudCBzaGExIDogJHNo YTFfZmlsZSIKKysKKysgICAgICBpZiBbICEgIiRzaGExIiA9ICIkc2hhMV9maWxlIiBdICYmIFtb ICRPU1hfVkVSU0lPTiAtbHQgMTkgXV07IHRoZW4KKysgICAgICAgIFBPTF9TZXR1cFdpbmRvd19t ZXNzYWdlICIkKGV2YWxfZ2V0dGV4dCAnVGhlIGRvd25sb2FkIHNlZW1zIHRvIGhhdmUgZmFpbGVk LicpIiAiJFRJVExFIgorKyAgICAgIGVsc2UKKysgICAgICAgIFBPTF9TZXR1cFdpbmRvd193YWl0 ICIkKGV2YWxfZ2V0dGV4dCAnRXh0cmFjdGluZyBXaW5lLi4uJykiICIkVElUTEUiCisrICAgICAg ICBta2RpciAtcCAiJFBPTF9VU0VSX1JPT1Qvd2luZS8kQVJDSF9QUkVGSVgtJFBPTF9BUkNILyRw b2xfd2luZXZlcnNpb25faW5zdGFsbCIKKysgICAgICAgIGNkICIkUE9MX1VTRVJfUk9PVC93aW5l LyRBUkNIX1BSRUZJWC0kUE9MX0FSQ0gvJHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsIgorKyAgICAg ICAgdGFyIC14dmYgIiRmaWxlbmFtZSIKKysgICAgICBmaQorKyAgICAgIHJtICIkZmlsZW5hbWUi CisrICAgICAgIyBQT0xfV2luZV9JbnN0YWxsX3Jlc291cmNlcyBnZWNrbyAiJHBvbF93aW5ldmVy c2lvbiIgIiRQT0xfQVJDSCIKKysgICAgICAjIFBPTF9XaW5lX0luc3RhbGxfcmVzb3VyY2VzIG1v bm8gIiRwb2xfd2luZXZlcnNpb24iICIkUE9MX0FSQ0giCisrICAgIGZpCisrICBmaQorKyAgcm0g IiRXSU5FRElSL2luc3RhbGxpbmciCisgCisgfQorIAorLVBPTF9XaW5lX0luc3RhbGxDRFJPTSgp CisteworLQlQT0xfV2luZV9JbnN0YWxsQ0RST01DdXN0b20gIiQxIiAiJENEUk9NIgorK1BPTF9X aW5lX0luc3RhbGxDRFJPTSgpIHsKKysgIFBPTF9XaW5lX0luc3RhbGxDRFJPTUN1c3RvbSAiJDEi ICIkQ0RST00iCisgfQorLVBPTF9XaW5lX0luc3RhbGxDRFJPTUN1c3RvbSgpCisteworLQlpZiBb ICIkMSIgXTsgdGhlbgorLQkJbGV0dGVyPSIkMToiCistCWVsc2UKKy0JCWxldHRlcj0icDoiCist CWZpCistCWlmIFsgIiRDRFJPTSIgXTsgdGhlbgorLQkJY2QgIiRXSU5FUFJFRklYL2Rvc2Rldmlj ZXMiCistCQlybSAiJGxldHRlciIgMj4gL2Rldi9udWxsCistCQlsbiAtcyAiJDIiICIkbGV0dGVy IgorLQlmaQorK1BPTF9XaW5lX0luc3RhbGxDRFJPTUN1c3RvbSgpIHsKKysgIGlmIFsgIiQxIiBd OyB0aGVuCisrICAgIGxldHRlcj0iJDE6IgorKyAgZWxzZQorKyAgICBsZXR0ZXI9InA6IgorKyAg ZmkKKysgIGlmIFsgIiRDRFJPTSIgXTsgdGhlbgorKyAgICBjZCAiJFdJTkVQUkVGSVgvZG9zZGV2 aWNlcyIKKysgICAgcm0gIiRsZXR0ZXIiIDI+L2Rldi9udWxsCisrICAgIGxuIC1zICIkMiIgIiRs ZXR0ZXIiCisrICBmaQorIH0KKy1QT0xfV2luZV9JbnN0YWxsX3Jlc291cmNlcygpCisteworLQkj IEluc3RhbGwgZ2Vja28gb3IgbW9ubyBmb3Igc2VsZWN0ZWQgd2luZSB2ZXJzaW9uCistCSMgVXNh Z2UgOiBQT0xfV2luZV9JbnN0YWxsX3Jlc291cmNlcyAoZ2Vja298bW9ubykgWyBWZXJzaW9uIF0g KCBBcmNoICkKKy0JWyAteiAiJDEiIF0gJiYgcmV0dXJuIDEKKy0JWyAiJDEiID0gIm1vbm8iIF0g JiYgcmVzb3VyY2U9IiQxIiB8fCByZXNvdXJjZT0iZ2Vja28iCistCXdpbmVfdmVyc2lvbj0iJDIi CistCXVucGF0Y2hlZF92ZXJzaW9uPWBQT0xfV2luZV9HZXRCYXNlTmFtZSAiJDIiYAorLQlbICIk MyIgPSAiYW1kNjQiIF0gJiYgYXJjaD0iJDMiIHx8IGFyY2g9Ing4NiIKKy0KKy0JUE9MX0RlYnVn X01lc3NhZ2UgIkluc3RhbGxpbmcgJHJlc291cmNlIGZvciB3aW5lICR1bnBhdGNoZWRfdmVyc2lv biAkYXJjaCIKKy0JcmVzb3VyY2VfZGlyPSIkUE9MX1VTRVJfUk9PVC93aW5lLyRyZXNvdXJjZSIK Ky0JcmVzb3VyY2VfZmlsZT0iJFBPTF9VU0VSX1JPT1QvY29uZmlndXJhdGlvbnMvbGlzdGVzLyRy ZXNvdXJjZS5sc3QiCistCWZvdW5kPSIkKGdyZXAgIl4ke3VucGF0Y2hlZF92ZXJzaW9uLy8uL1wu fTsiICIkcmVzb3VyY2VfZmlsZSIpIgorLQlbICIkUE9MX09TIiA9ICJMaW51eCIgXSAmJiB3b3M9 ImxpbnV4IgorLQlbICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdICYmIHdvcz0iZnJlZWJzZCIKKy0J WyAiJFBPTF9PUyIgPSAiTWFjIiBdICYmIHdvcz0iZGFyd2luIgorLQorLQlpZiBbICEgLUwgIiRQ T0xfVVNFUl9ST09UL3dpbmUvJHdvcy0kYXJjaC8kd2luZV92ZXJzaW9uL3NoYXJlL3dpbmUvJHJl c291cmNlIiBdCistCXRoZW4KKy0JCVBPTF9EZWJ1Z19NZXNzYWdlICJMaW5raW5nICRyZXNvdXJj ZSIKKy0JCWxuIC1zICIkUE9MX1VTRVJfUk9PVC93aW5lLyRyZXNvdXJjZS8iICIkUE9MX1VTRVJf Uk9PVC93aW5lLyR3b3MtJGFyY2gvJHdpbmVfdmVyc2lvbi9zaGFyZS93aW5lLyRyZXNvdXJjZSIK Ky0JZmkKKy0JaWYgWyAiJGZvdW5kIiBdOyB0aGVuCistCQlyZXNvdXJjZXg4Nj0iJChjdXQgLWQg JzsnIC1mMiA8PDwgJGZvdW5kKSIKKy0JCXJlc291cmNlYW1kNjQ9IiQoY3V0IC1kICc7JyAtZjMg PDw8ICRmb3VuZCkiCistCQltZDV4ODY9IiQoY3V0IC1kICc7JyAtZjQgPDw8ICRmb3VuZCkiCist CQltZDVhbWQ2ND0iJChjdXQgLWQgJzsnIC1mNSA8PDwgJGZvdW5kKSIKKy0KKy0JCWNkICIkcmVz b3VyY2VfZGlyIgorLQkJaWYgWyAiJHJlc291cmNleDg2IiBdOyB0aGVuCistCQkJaWYgWyAtZSAi JHJlc291cmNleDg2IiBdOyB0aGVuCistCQkJCVBPTF9EZWJ1Z19NZXNzYWdlICIkcmVzb3VyY2V4 ODYgYWxyZWFkeSBpbnN0YWxsZWQuIFNraXBwaW5nIgorLQkJCWVsc2UKKy0JCQkJUE9MX0RlYnVn X01lc3NhZ2UgIkluc3RhbGxpbmcgJHJlc291cmNleDg2IgorLQkJCQlQT0xfRG93bmxvYWQgIiQo cmVzb3VyY2VfZG93bmxvYWRfdXJsICRyZXNvdXJjZSB4ODYgJHJlc291cmNleDg2KSIgIiRtZDV4 ODYiCistCQkJZmkKKy0JCWZpCistCistCQlpZiBbICIkYXJjaCIgPSAiYW1kNjQiIF07IHRoZW4K Ky0JCQlpZiBbICIkcmVzb3VyY2VhbWQ2NCIgXTsgdGhlbgorLQkJCQlpZiBbIC1lICIkcmVzb3Vy Y2VhbWQ2NCIgXTsgdGhlbgorLQkJCQkJUE9MX0RlYnVnX01lc3NhZ2UgIiRyZXNvdXJjZWFtZDY0 IGFscmVhZHkgaW5zdGFsbGVkLiBTa2lwcGluZyIKKy0JCQkJZWxzZQorLQkJCQkJUE9MX0RlYnVn X01lc3NhZ2UgIkluc3RhbGxpbmcgJHJlc291cmNlYW1kNjQiCistCQkJCQlQT0xfRG93bmxvYWQg IiQocmVzb3VyY2VfZG93bmxvYWRfdXJsICRyZXNvdXJjZSBhbWQ2NCAkcmVzb3VyY2VhbWQ2NCki ICIkbWQ1YW1kNjQiCistCQkJCWZpCistCQkJZmkKKy0JCWZpCistCWZpCisrUE9MX1dpbmVfSW5z dGFsbF9yZXNvdXJjZXMoKSB7CisrICAjIEluc3RhbGwgZ2Vja28gb3IgbW9ubyBmb3Igc2VsZWN0 ZWQgd2luZSB2ZXJzaW9uCisrICAjIFVzYWdlIDogUE9MX1dpbmVfSW5zdGFsbF9yZXNvdXJjZXMg KGdlY2tvfG1vbm8pIFsgVmVyc2lvbiBdICggQXJjaCApCisrICBbIC16ICIkMSIgXSAmJiByZXR1 cm4gMQorKyAgWyAiJDEiID0gIm1vbm8iIF0gJiYgcmVzb3VyY2U9IiQxIiB8fCByZXNvdXJjZT0i Z2Vja28iCisrICB3aW5lX3ZlcnNpb249IiQyIgorKyAgdW5wYXRjaGVkX3ZlcnNpb249JChQT0xf V2luZV9HZXRCYXNlTmFtZSAiJDIiKQorKyAgWyAiJDMiID0gImFtZDY0IiBdICYmIGFyY2g9IiQz IiB8fCBhcmNoPSJ4ODYiCisrCisrICBQT0xfRGVidWdfTWVzc2FnZSAiSW5zdGFsbGluZyAkcmVz b3VyY2UgZm9yIHdpbmUgJHVucGF0Y2hlZF92ZXJzaW9uICRhcmNoIgorKyAgcmVzb3VyY2VfZGly PSIkUE9MX1VTRVJfUk9PVC93aW5lLyRyZXNvdXJjZSIKKysgIHJlc291cmNlX2ZpbGU9IiRQT0xf VVNFUl9ST09UL2NvbmZpZ3VyYXRpb25zL2xpc3Rlcy8kcmVzb3VyY2UubHN0IgorKyAgZm91bmQ9 IiQoZ3JlcCAiXiR7dW5wYXRjaGVkX3ZlcnNpb24vLy4vXC59OyIgIiRyZXNvdXJjZV9maWxlIiki CisrICBbICIkUE9MX09TIiA9ICJMaW51eCIgXSAmJiB3b3M9ImxpbnV4IgorKyAgWyAiJFBPTF9P UyIgPSAiRnJlZUJTRCIgXSAmJiB3b3M9ImZyZWVic2QiCisrICBbICIkUE9MX09TIiA9ICJNYWMi IF0gJiYgd29zPSJkYXJ3aW4iCisrCisrICBpZiBbICEgLUwgIiRQT0xfVVNFUl9ST09UL3dpbmUv JHdvcy0kYXJjaC8kd2luZV92ZXJzaW9uL3NoYXJlL3dpbmUvJHJlc291cmNlIiBdOyB0aGVuCisr ICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJMaW5raW5nICRyZXNvdXJjZSIKKysgICAgbG4gLXMgIiRQ T0xfVVNFUl9ST09UL3dpbmUvJHJlc291cmNlLyIgIiRQT0xfVVNFUl9ST09UL3dpbmUvJHdvcy0k YXJjaC8kd2luZV92ZXJzaW9uL3NoYXJlL3dpbmUvJHJlc291cmNlIgorKyAgZmkKKysgIGlmIFsg IiRmb3VuZCIgXTsgdGhlbgorKyAgICByZXNvdXJjZXg4Nj0iJChjdXQgLWQgJzsnIC1mMiA8PDwk Zm91bmQpIgorKyAgICByZXNvdXJjZWFtZDY0PSIkKGN1dCAtZCAnOycgLWYzIDw8PCRmb3VuZCki CisrICAgIG1kNXg4Nj0iJChjdXQgLWQgJzsnIC1mNCA8PDwkZm91bmQpIgorKyAgICBtZDVhbWQ2 ND0iJChjdXQgLWQgJzsnIC1mNSA8PDwkZm91bmQpIgorKworKyAgICBjZCAiJHJlc291cmNlX2Rp ciIKKysgICAgaWYgWyAiJHJlc291cmNleDg2IiBdOyB0aGVuCisrICAgICAgaWYgWyAtZSAiJHJl c291cmNleDg2IiBdOyB0aGVuCisrICAgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiJHJlc291cmNl eDg2IGFscmVhZHkgaW5zdGFsbGVkLiBTa2lwcGluZyIKKysgICAgICBlbHNlCisrICAgICAgICBQ T0xfRGVidWdfTWVzc2FnZSAiSW5zdGFsbGluZyAkcmVzb3VyY2V4ODYiCisrICAgICAgICBQT0xf RG93bmxvYWQgIiQocmVzb3VyY2VfZG93bmxvYWRfdXJsICRyZXNvdXJjZSB4ODYgJHJlc291cmNl eDg2KSIgIiRtZDV4ODYiCisrICAgICAgZmkKKysgICAgZmkKKysKKysgICAgaWYgWyAiJGFyY2gi ID0gImFtZDY0IiBdOyB0aGVuCisrICAgICAgaWYgWyAiJHJlc291cmNlYW1kNjQiIF07IHRoZW4K KysgICAgICAgIGlmIFsgLWUgIiRyZXNvdXJjZWFtZDY0IiBdOyB0aGVuCisrICAgICAgICAgIFBP TF9EZWJ1Z19NZXNzYWdlICIkcmVzb3VyY2VhbWQ2NCBhbHJlYWR5IGluc3RhbGxlZC4gU2tpcHBp bmciCisrICAgICAgICBlbHNlCisrICAgICAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJJbnN0YWxs aW5nICRyZXNvdXJjZWFtZDY0IgorKyAgICAgICAgICBQT0xfRG93bmxvYWQgIiQocmVzb3VyY2Vf ZG93bmxvYWRfdXJsICRyZXNvdXJjZSBhbWQ2NCAkcmVzb3VyY2VhbWQ2NCkiICIkbWQ1YW1kNjQi CisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgIGZpCisrICBmaQorIH0KKy1yZXNvdXJjZV9k b3dubG9hZF91cmwoKQorLXsKKy0JIyByZXNvdXJjZV9kb3dubG9hZF91cmwgKGdlY2tvfG1vbm8p IFsgQXJjaCBdIFsgRmlsZW5hbWUgXQorLQlpZiBbICIkMSIgPSAiZ2Vja28iIF07IHRoZW4KKy0J CWVjaG8gIiRHRUNLT19TSVRFLyQyLyQzIgorLQlmaQorLQlpZiBbICIkMSIgPSAibW9ubyIgXTsg dGhlbgorLSMJCWxvY2FsIHZlcnNpb249IiR7MyUubXNpfSIKKy0jCQl2ZXJzaW9uPSIke3ZlcnNp b24jd2luZS1tb25vLX0iCistIwkJZWNobyAiaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3dpbmVt b25vLnBocD92PSR7dmVyc2lvbn0iCistIwkJZWNobyAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vm b3JnZS5uZXQvd2luZS8kMyIKKy0jCQllY2hvICIkTU9OT19TSVRFLyQyLyQzIgorLQkJZWNobyAi JE1PTk9fU0lURS8kMyIKKy0JZmkKKytyZXNvdXJjZV9kb3dubG9hZF91cmwoKSB7CisrICAjIHJl c291cmNlX2Rvd25sb2FkX3VybCAoZ2Vja298bW9ubykgWyBBcmNoIF0gWyBGaWxlbmFtZSBdCisr ICBpZiBbICIkMSIgPSAiZ2Vja28iIF07IHRoZW4KKysgICAgZWNobyAiJEdFQ0tPX1NJVEUvJDIv JDMiCisrICBmaQorKyAgaWYgWyAiJDEiID0gIm1vbm8iIF07IHRoZW4KKysgICAgIwkJbG9jYWwg dmVyc2lvbj0iJHszJS5tc2l9IgorKyAgICAjCQl2ZXJzaW9uPSIke3ZlcnNpb24jd2luZS1tb25v LX0iCisrICAgICMJCWVjaG8gImh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy93aW5lbW9uby5waHA/ dj0ke3ZlcnNpb259IgorKyAgICAjCQllY2hvICJodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdl Lm5ldC93aW5lLyQzIgorKyAgICAjCQllY2hvICIkTU9OT19TSVRFLyQyLyQzIgorKyAgICBlY2hv ICIkTU9OT19TSVRFLyQzIgorKyAgZmkKKyB9CistUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYo KQorLXsKKy0JIyBHZXQgdGhlIGN1cnJlbnQgcHJlZml4J3MgdmVyc2lvbiBhbmQgc2V0IFBBVEgg ZW52aXJvbm1lbnQgdmFyaWFibGUKKy0JIyBVc2FnZTogUE9MX1dpbmVfQXV0b1NldFZlcnNpb25F bnYKKy0JWyAiJFdJTkVQUkVGSVgiID0gIiIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVG SVggaXMgbm90IHNldCEiCistCVBPTF9XSU5FVkVSU0lPTj0iJChQT0xfQ29uZmlnX1ByZWZpeFJl YWQgIlZFUlNJT04iKSIKKy0JUE9MX0FSQ0g9IiQoUE9MX0NvbmZpZ19QcmVmaXhSZWFkICJBUkNI IikiCistCVsgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXSB8fCBQT0xfV2luZV9TZXRWZXJzaW9u RW52CisrUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYoKSB7CisrICAjIEdldCB0aGUgY3VycmVu dCBwcmVmaXgncyB2ZXJzaW9uIGFuZCBzZXQgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZQorKyAg IyBVc2FnZTogUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKKysgIFsgIiRXSU5FUFJFRklYIiA9 ICIiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIGlzIG5vdCBzZXQhIgorKyAgUE9M X1dJTkVWRVJTSU9OPSIkKFBPTF9Db25maWdfUHJlZml4UmVhZCAiVkVSU0lPTiIpIgorKyAgUE9M X0FSQ0g9IiQoUE9MX0NvbmZpZ19QcmVmaXhSZWFkICJBUkNIIikiCisrICBbICIkUE9MX1dJTkVW RVJTSU9OIiA9ICIiIF0gfHwgUE9MX1dpbmVfU2V0VmVyc2lvbkVudgorIH0KKy1QT0xfV2luZV9T ZXRWZXJzaW9uRW52KCkKKy17CistCSMgVXNhZ2U6IFBPTF9XaW5lX1NldFdpbmVWZXJzaW9uIFtW RVJTSU9OXQorLQkjIEdldCBmaXJzdCBhcmd1bWVudCdzIHdpbmUgdmVyc2lvbiBhbmQgc2V0IFBB VEggZW52aXJvbm1lbnQgdmFyaWFibGUKKy0JWyAhICIkMSIgPSAiIiBdICYmIGV4cG9ydCBQT0xf V0lORVZFUlNJT049IiQxIgorLQlbICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF0gJiYgUE9MX0Rl YnVnX1dhcm5pbmcgIk5vIFBPTF9XSU5FVkVSU0lPTiBzZXQsIGFzc3VtaW5nIGl0IGlzIHJlc2V0 IgorLQlbICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF0gJiYgZXhwb3J0IFBPTF9XSU5FVkVSU0lP Tj0iLS1yZXNldCIKKy0JaWYgWyAhICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF0KKy0JdGhlbgor LQkJWyAiJFBPTF9BUkNIIiA9ICIiIF0gJiYgUE9MX1N5c3RlbV9TZXRBcmNoICJhdXRvIgorLQkJ I1BPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgdmVyc2lvbiBwYXRoOiAkUE9MX1dJTkVW RVJTSU9OLCAkUE9MX0FSQ0giCistCQlbICIkUE9MX09TIiA9ICJNYWMiIF0gJiYgQVJDSF9QUkVG SVg9ImRhcndpbiIKKy0JCVsgIiRQT0xfT1MiID0gIkZyZWVCU0QiIF0gJiYgQVJDSF9QUkVGSVg9 ImZyZWVic2QiCistCQlbICIkUE9MX09TIiA9ICJMaW51eCIgXSAmJiBBUkNIX1BSRUZJWD0ibGlu dXgiCistCQlPTERQQVRIPSIkUFdEIgorLQkJV0lORURJUj0iJFBPTF9VU0VSX1JPT1Qvd2luZS8k QVJDSF9QUkVGSVgtJFBPTF9BUkNIIgorLQkJbWtkaXIgLXAgIiRXSU5FRElSIgorLQkJY2QgIiRX SU5FRElSIgorLQorLQkJaWYgWyAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiLS1yZXNldCIgXQorLQkJ dGhlbgorLQkJCWV4cG9ydCBQQVRIPSIkUEFUSF9PUklHSU4iCistCQkJZXhwb3J0IExEX0xJQlJB UllfUEFUSD0iJExEX1BBVEhfT1JJR0lOIgorLQkJCVsgIiRQT0xfT1MiID0gIkZyZWVCU0QiIF0g JiYgZXhwb3J0IExEXzMyX0xJQlJBUllfUEFUSD0iJExEXzMyX1BBVEhfT1JJR0lOIgorLQkJCWV4 cG9ydCBQT0xfV0lORVZFUlNJT049IiIKKy0JCWVsc2UKKy0JCQlpZiBbICEgLWUgIiRXSU5FRElS LyRQT0xfV0lORVZFUlNJT04iIF0KKy0JCQl0aGVuCistCQkJCVBPTF9EZWJ1Z19NZXNzYWdlICJX aW5lICRQT0xfV0lORVZFUlNJT04gbm90IGluc3RhbGxlZC4gSW5zdGFsbGluZyBpdCIKKy0JCSAJ CVBPTF9XaW5lX0luc3RhbGxWZXJzaW9uICIkUE9MX1dJTkVWRVJTSU9OIgorLQkJCWZpCistCQkJ ZXhwb3J0IFBBVEg9IiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04vYmluLzokUEFUSCIKKy0JCQlb ICIkUE9MX09TIiA9ICJNYWMiIF0gJiYgZXhwb3J0IERZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRI PSIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2xpYi8iCistCQkJZXhwb3J0IEZSRUVUWVBFX1BS T1BFUlRJRVM9InRydWV0eXBlOmludGVycHJldGVyLXZlcnNpb249MzUiCistCQkJZXhwb3J0IExE X0xJQlJBUllfUEFUSD0iJFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTi9saWIvOiRXSU5FRElSLyRQ T0xfV0lORVZFUlNJT04vbGliNjQvOiRMRF9MSUJSQVJZX1BBVEgiCistCQkJWyAiJFBPTF9PUyIg PSAiRnJlZUJTRCIgXSAmJiBleHBvcnQgTERfMzJfTElCUkFSWV9QQVRIPSIkV0lORURJUi8kUE9M X1dJTkVWRVJTSU9OL2xpYi86JExEXzMyX0xJQlJBUllfUEFUSCIKKy0JCWZpCistCWVsc2UKKy0J CWlmIFsgIiRQT0xfT1MiID0gIk1hYyIgXTsgdGhlbgorLQkJCVsgIiREWUxEX0ZBTExCQUNLX0xJ QlJBUllfUEFUSCIgPSAiIiBdICYmIGV4cG9ydCBEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSD0i JFJFU09VUkNFUEFUSC91bml4L3dpbmUvbGliLyIKKy0JCWZpCistCWZpCistCWNkICIkT0xEUEFU SCIKKytQT0xfV2luZV9TZXRWZXJzaW9uRW52KCkgeworKyAgIyBVc2FnZTogUE9MX1dpbmVfU2V0 V2luZVZlcnNpb24gW1ZFUlNJT05dCisrICAjIEdldCBmaXJzdCBhcmd1bWVudCdzIHdpbmUgdmVy c2lvbiBhbmQgc2V0IFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUKKysgIFsgISAiJDEiID0gIiIg XSAmJiBleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIkMSIKKysgIFsgIiRQT0xfV0lORVZFUlNJT04i ID0gIiIgXSAmJiBQT0xfRGVidWdfV2FybmluZyAiTm8gUE9MX1dJTkVWRVJTSU9OIHNldCwgYXNz dW1pbmcgaXQgaXMgcmVzZXQiCisrICBbICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF0gJiYgZXhw b3J0IFBPTF9XSU5FVkVSU0lPTj0iLS1yZXNldCIKKysgIGlmIFsgISAiJFBPTF9XSU5FVkVSU0lP TiIgPSAiIiBdOyB0aGVuCisrICAgIFsgIiRQT0xfQVJDSCIgPSAiIiBdICYmIFBPTF9TeXN0ZW1f U2V0QXJjaCAiYXV0byIKKysgICAgI1BPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgdmVy c2lvbiBwYXRoOiAkUE9MX1dJTkVWRVJTSU9OLCAkUE9MX0FSQ0giCisrICAgIFsgIiRQT0xfT1Mi ID0gIk1hYyIgXSAmJiBBUkNIX1BSRUZJWD0iZGFyd2luIgorKyAgICBbICIkUE9MX09TIiA9ICJG cmVlQlNEIiBdICYmIEFSQ0hfUFJFRklYPSJmcmVlYnNkIgorKyAgICBbICIkUE9MX09TIiA9ICJM aW51eCIgXSAmJiBBUkNIX1BSRUZJWD0ibGludXgiCisrICAgIE9MRFBBVEg9IiRQV0QiCisrICAg IFdJTkVESVI9IiRQT0xfVVNFUl9ST09UL3dpbmUvJEFSQ0hfUFJFRklYLSRQT0xfQVJDSCIKKysg ICAgbWtkaXIgLXAgIiRXSU5FRElSIgorKyAgICBjZCAiJFdJTkVESVIiCisrCisrICAgIGlmIFsg IiRQT0xfV0lORVZFUlNJT04iID0gIi0tcmVzZXQiIF07IHRoZW4KKysgICAgICBleHBvcnQgUEFU SD0iJFBBVEhfT1JJR0lOIgorKyAgICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiRMRF9QQVRI X09SSUdJTiIKKysgICAgICBbICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdICYmIGV4cG9ydCBMRF8z Ml9MSUJSQVJZX1BBVEg9IiRMRF8zMl9QQVRIX09SSUdJTiIKKysgICAgICBleHBvcnQgUE9MX1dJ TkVWRVJTSU9OPSIiCisrICAgIGVsc2UKKysgICAgICBpZiBbICEgLWUgIiRXSU5FRElSLyRQT0xf V0lORVZFUlNJT04iIF07IHRoZW4KKysgICAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJXaW5lICRQ T0xfV0lORVZFUlNJT04gbm90IGluc3RhbGxlZC4gSW5zdGFsbGluZyBpdCIKKysgICAgICAgIFBP TF9XaW5lX0luc3RhbGxWZXJzaW9uICIkUE9MX1dJTkVWRVJTSU9OIgorKyAgICAgICAgW1sgIiQ/ IiA9PSAyIF1dICYmIHJldHVybiAwCisrICAgICAgZmkKKysgICAgICBlY2hvICJTZXR0aW5nIHBh dGhzLi4uIgorKyAgICAgIGV4cG9ydCBQQVRIPSIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2Jp bi86JFBBVEgiCisrICAgICAgWyAiJFBPTF9PUyIgPSAiTWFjIiBdICYmIGV4cG9ydCBEWUxEX0ZB TExCQUNLX0xJQlJBUllfUEFUSD0iJFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTi9saWIvIgorKyAg ICAgIGV4cG9ydCBGUkVFVFlQRV9QUk9QRVJUSUVTPSJ0cnVldHlwZTppbnRlcnByZXRlci12ZXJz aW9uPTM1IgorKyAgICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiRXSU5FRElSLyRQT0xfV0lO RVZFUlNJT04vbGliLzokV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2xpYjY0LzokTERfTElCUkFS WV9QQVRIIgorKyAgICAgIFsgIiRQT0xfT1MiID0gIkZyZWVCU0QiIF0gJiYgZXhwb3J0IExEXzMy X0xJQlJBUllfUEFUSD0iJFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTi9saWIvOiRMRF8zMl9MSUJS QVJZX1BBVEgiCisrICAgIGZpCisrICBlbHNlCisrICAgIGlmIFsgIiRQT0xfT1MiID0gIk1hYyIg XTsgdGhlbgorKyAgICAgIFsgIiREWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCIgPSAiIiBdICYm IGV4cG9ydCBEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSD0iJFJFU09VUkNFUEFUSC91bml4L3dp bmUvbGliLyIKKysgICAgZmkKKysgIGZpCisrICBjZCAiJE9MRFBBVEgiCisgfQorLVBPTF9XaW5l X1NldFZlcnNpb25QcmVmaXgoKQorLXsKKy0JIyBVc2FnZTogUE9MX1dpbmVfU2V0VmVyc2lvblBy ZWZpeCBbVkVSU0lPTl0KKy0JIyBDaGFuZ2UgYSBwcmVmaXggd2luZSB2ZXJzaW9uCistCVsgISAi JDEiID0gIiIgXSAmJiBleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIkMSIKKy0JWyAiJFdJTkVQUkVG SVgiID0gIiIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggaXMgbm90IHNldCEiCist CistCVBPTF9Db25maWdfUHJlZml4V3JpdGUgIlZFUlNJT04iICIkUE9MX1dJTkVWRVJTSU9OIgor K1BPTF9XaW5lX1NldFZlcnNpb25QcmVmaXgoKSB7CisrICAjIFVzYWdlOiBQT0xfV2luZV9TZXRW ZXJzaW9uUHJlZml4IFtWRVJTSU9OXQorKyAgIyBDaGFuZ2UgYSBwcmVmaXggd2luZSB2ZXJzaW9u CisrICBbICEgIiQxIiA9ICIiIF0gJiYgZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCisrICBb ICIkV0lORVBSRUZJWCIgPSAiIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBpcyBu b3Qgc2V0ISIKKysKKysgIFBPTF9Db25maWdfUHJlZml4V3JpdGUgIlZFUlNJT04iICIkUE9MX1dJ TkVWRVJTSU9OIgorIH0KKy1QT0xfV2luZV9QcmVmaXhEZWxldGUoKQorLXsKKy0JWyAteiAiJFdJ TkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCistIAls b2NhbCB3aW5lcHJlZml4PSIkV0lORVBSRUZJWCIKKy0Jd2luZXByZWZpeD0ke3dpbmVwcmVmaXgv LyIvLyIvIi8ifQorLQlsb2NhbCBzaG9ydGN1dHM9KCkKKy0JbG9jYWwgT0xESUZTPSIkSUZTIgor LQlJRlM9JCdcbicKKy0JY2QgIiRQT0xfVVNFUl9ST09UL3Nob3J0Y3V0cy8iICYmCistCWZvciBz aG9ydGN1dCBpbiAqCistCWRvCistCQlbICIkKGRldGVjdF93aW5lcHJlZml4ICIkc2hvcnRjdXQi KSIgPSAiJHdpbmVwcmVmaXgiIF0gJiYgc2hvcnRjdXRzKz0oIiRzaG9ydGN1dCIpCistCWRvbmUK Ky0JSUZTPSIkT0xESUZTIgorLQorLQkjIGNmIE1haW5XaW5kb3cuRGVsZXRlUHJlZml4KCkKKy0J UE9MX1NldHVwV2luZG93X3dhaXRfbmV4dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0ICdVbmluc3Rh bGxpbmcuLi4nKSIgIiQoZXZhbF9nZXR0ZXh0ICckQVBQTElDQVRJT05fVElUTEUgVW5pbnN0YWxs ZXInKSIKKy0JaWYgWyAiJHsjc2hvcnRjdXRzW0BdfSIgLWd0IDAgXTsgdGhlbgorLSAJCVBPTF9E ZWJ1Z19XYXJuaW5nICIkd2luZXByZWZpeCBpcyBzdGlsbCBpbiB1c2UgYnkgJHsjc2hvcnRjdXRz W0BdfSBzaG9ydGN1dHMsIHJlbW92aW5nIHRoZW0gZmlyc3QiCistCQlmb3Igc2hvcnRjdXQgaW4g IiR7c2hvcnRjdXRzW0BdfSI7IGRvCistCQkJUE9MX0RlYnVnX01lc3NhZ2UgIlJlbW92aW5nIHNo b3J0Y3V0ICRzaG9ydGN1dC4uLiIKKy0JCQliYXNoICIkUExBWU9OTElOVVgvYmFzaC91bmluc3Rh bGwiIC0tbm9uLWludGVyYWN0aXZlICIkc2hvcnRjdXQiCistCQlkb25lCistCWZpCistCistICAg ICAgICBjbGVhbl93aW5lcHJlZml4IC0tbm9uLWludGVyYWN0aXZlICIkV0lORVBSRUZJWCIKKytQ T0xfV2luZV9QcmVmaXhEZWxldGUoKSB7CisrICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xf RGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKysgIGxvY2FsIHdpbmVwcmVmaXg9IiRX SU5FUFJFRklYIgorKyAgd2luZXByZWZpeD0ke3dpbmVwcmVmaXgvLyIvLyIvIi8ifQorKyAgbG9j YWwgc2hvcnRjdXRzPSgpCisrICBsb2NhbCBPTERJRlM9IiRJRlMiCisrICBJRlM9JCdcbicKKysg IGNkICIkUE9MX1VTRVJfUk9PVC9zaG9ydGN1dHMvIiAmJgorKyAgICBmb3Igc2hvcnRjdXQgaW4g KjsgZG8KKysgICAgICBbICIkKGRldGVjdF93aW5lcHJlZml4ICIkc2hvcnRjdXQiKSIgPSAiJHdp bmVwcmVmaXgiIF0gJiYgc2hvcnRjdXRzKz0oIiRzaG9ydGN1dCIpCisrICAgIGRvbmUKKysgIElG Uz0iJE9MRElGUyIKKysKKysgICMgY2YgTWFpbldpbmRvdy5EZWxldGVQcmVmaXgoKQorKyAgUE9M X1NldHVwV2luZG93X3dhaXRfbmV4dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0ICdVbmluc3RhbGxp bmcuLi4nKSIgIiQoZXZhbF9nZXR0ZXh0ICckQVBQTElDQVRJT05fVElUTEUgVW5pbnN0YWxsZXIn KSIKKysgIGlmIFsgIiR7I3Nob3J0Y3V0c1tAXX0iIC1ndCAwIF07IHRoZW4KKysgICAgUE9MX0Rl YnVnX1dhcm5pbmcgIiR3aW5lcHJlZml4IGlzIHN0aWxsIGluIHVzZSBieSAkeyNzaG9ydGN1dHNb QF19IHNob3J0Y3V0cywgcmVtb3ZpbmcgdGhlbSBmaXJzdCIKKysgICAgZm9yIHNob3J0Y3V0IGlu ICIke3Nob3J0Y3V0c1tAXX0iOyBkbworKyAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJSZW1vdmlu ZyBzaG9ydGN1dCAkc2hvcnRjdXQuLi4iCisrICAgICAgYmFzaCAiJFBMQVlPTkxJTlVYL2Jhc2gv dW5pbnN0YWxsIiAtLW5vbi1pbnRlcmFjdGl2ZSAiJHNob3J0Y3V0IgorKyAgICBkb25lCisrICBm aQorKworKyAgY2xlYW5fd2luZXByZWZpeCAtLW5vbi1pbnRlcmFjdGl2ZSAiJFdJTkVQUkVGSVgi CisgfQorLVBPTF9XaW5lX1ByZWZpeENyZWF0ZSgpCisteworLQkjIENyZWF0ZSBhIHdpbmVwcmVm aXgKKy0JIyBVc2FnZTogUE9MX1dpbmVfUHJlZml4Q3JlYXRlIFtWRVJTSU9OXQorLQlpZiBbICEg IiQxIiA9ICIiIF07IHRoZW4KKy0JCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFBPTF9XSU5F VkVSU0lPTiB0byAkMSIKKy0JCWV4cG9ydCBQT0xfV0lORVZFUlNJT049IiQxIgorLQllbGlmIFsg IiRQT0xfV0lORVZFUlNJT04iIF07IHRoZW4KKy0JCVBPTF9EZWJ1Z19NZXNzYWdlICJQT0xfV0lO RVZFUlNJT04gaXMgYWxyZWFkeSBzZXQgdG8gJFBPTF9XSU5FVkVSU0lPTi4gVXNpbmcgaXQiCist CWVsc2UKKy0JCVBPTF9EZWJ1Z19NZXNzYWdlICJObyB2ZXJzaW9uIHNwZWNpZmllZC4gVXNpbmcg c3lzdGVtIHZlcnNpb24gKCQod2luZSAtLXZlcnNpb24pKSIKKy0JZmkKKy0KKy0JUE9MX0RlYnVn X01lc3NhZ2UgIkNyZWF0aW5nIHByZWZpeCAoJFBPTF9XSU5FVkVSU0lPTikuLi4iCistCVsgIiRQ T0xfQVJDSCIgPSAiIiBdICYmIFBPTF9TeXN0ZW1fU2V0QXJjaCAiYXV0byIKKy0JWyAiJFdJTkVQ UkVGSVgiID0gIiIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggaXMgbm90IHNldCEi CistCistCWlmIFsgLWUgIiRXSU5FUFJFRklYIiBdOyB0aGVuCistCQlQT0xfRGVidWdfTWVzc2Fn ZSAiUHJlZml4IGFscmVhZHkgZXhpc3RzIgorLQkJTE5HX09WRVJXUklURT0iJChldmFsX2dldHRl eHQgJ092ZXJ3cml0ZSAodXN1YWxseSB3b3Jrcywgbm8gZ3VhcmFudGVlKScpIgorLQkJTE5HX0VS QVNFPSIkKGV2YWxfZ2V0dGV4dCAnRXJhc2UgKHZpcnR1YWwgZHJpdmUgY29udGVudCB3aWxsIGJl IGxvc3QpJykiCistCQlMTkdfQUJPUlQ9IiQoZXZhbF9nZXR0ZXh0ICdBYm9ydCBpbnN0YWxsYXRp b24nKSIKKy0KKy0JCU9MRF9BUkNIPSIiCistCQlbIC1lICIkV0lORVBSRUZJWC9wbGF5b25saW51 eC5jZmciIF0gJiYgT0xEX0FSQ0g9JChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgIkFSQ0giKQorLQkJ aWYgWyAiJE9MRF9BUkNIIiA9ICIkUE9MX1VTRVJfQVJDSCIgXTsgdGhlbgorLQkJCVBSRUZJWF9D SE9JQ0VTPSIkTE5HX09WRVJXUklURX4kTE5HX0VSQVNFfiRMTkdfQUJPUlQiCistCQllbHNlCist CQkJIyBTZXR0aW5ncyBhcmUgbm90IGNvbXBhdGlibGUsIG92ZXJ3cml0aW5nIGlzIG5vdCBhbiBv cHRpb24KKy0JCQlQUkVGSVhfQ0hPSUNFUz0iJExOR19FUkFTRX4kTE5HX0FCT1JUIgorLQkJZmkK Ky0KKy0JCU9MRF9BUFBfQU5XU0VSPSIkQVBQX0FOU1dFUiIKKy0JCVBSRUZOQU1FPSIkKGJhc2Vu YW1lICRXSU5FUFJFRklYKSIKKy0JCVBPTF9TZXR1cFdpbmRvd19tZW51ICIkKGV2YWxfZ2V0dGV4 dCAnVGhlIHRhcmdldCB2aXJ0dWFsIGRyaXZlICRQUkVGTkFNRSBhbHJlYWR5IGV4aXN0czonKSIg IiRUSVRMRSIgIiRQUkVGSVhfQ0hPSUNFUyIgIn4iCistCQljYXNlICIkQVBQX0FOU1dFUiIgaW4K Ky0JCQkiJExOR19PVkVSV1JJVEUiKQorLQkJCQkjIFByZWZpeCBjb250ZW50IGlzIG5vdCByZXBy b2R1Y2libGUsIGl0J3MgdGVtcHRpbmcgdG8gZGlzYWxsb3cgcmVwb3J0cworLQkJCQkjIE5PQlVH UkVQT1JUPSJUUlVFIgorLQkJCQlQT0xfRGVidWdfTWVzc2FnZSAiT3ZlcndyaXRlIFByZWZpeCIK Ky0JCQkJIyBTaG91bGQgd2UgcmV2ZXJ0IHdoYXQgaGFzIGJlZW4gYXV0b2RldGVjdGVkIGJ5IFNl bGVjdFByZWZpeCBoZXJlIHRvbz8KKy0JCQkJOzsKKy0JCQkiJExOR19FUkFTRSIpCistCQkJCVBP TF9EZWJ1Z19NZXNzYWdlICJFcmFzZSBQcmVmaXgiCistCQkJCVBPTF9XaW5lX1ByZWZpeERlbGV0 ZQorLQkJCQkjIFJldmVydCB3aGF0IGNvdWxkIGhhdmUgYmVlbiBhdXRvZGV0ZWN0ZWQgd2l0aCBT ZWxlY3RQcmVmaXgKKy0JCQkJUE9MX0FSQ0g9IiRQT0xfVVNFUl9BUkNIIgorLQkJCQk7OworLQkJ CSopCistCQkJCU5PQlVHUkVQT1JUPSJUUlVFIgorLQkJCQlQT0xfRGVidWdfRmF0YWwgIiQoZXZh bF9nZXR0ZXh0ICdVc2VyIGFib3J0JykiCistCQkJCTs7CistCQllc2FjCistCQlBUFBfQU5TV0VS PSIkT0xEX0FQUF9BTldTRVIiCistCWZpCistCistCVBPTF9TZXR1cFdpbmRvd193YWl0ICIkKGV2 YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgdGhlIHZpcnR1YWwgZHJpdmUgaXMgYmVpbmcg Y3JlYXRlZC4uLicpIiAiJFRJVExFIgorLQlpZiBbIC1lICIkV0lORVBSRUZJWCIgXTsgdGhlbgor LQkJdG91Y2ggIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmNmZyIKKy0JCWlmIFsgISAiJFBPTF9X SU5FVkVSU0lPTiIgPSAiIiBdOyB0aGVuCistCQkJUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcg dmVyc2lvbiB0byAkUE9MX1dJTkVWRVJTSU9OIgorLQkJCVBPTF9XaW5lX1NldFZlcnNpb25QcmVm aXggIiRQT0xfV0lORVZFUlNJT04iCistCQkJUE9MX1dpbmVfU2V0VmVyc2lvbkVudgorLQkJZmkK Ky0JZWxzZQkjIFByZWZpeCBkb2VzIG5vdCBleGl0LCBsZXQncyBjcmVhdGUgaXQKKy0JCWlmIFsg IiRQT0xfV0lORVZFUlNJT04iID0gIiIgXTsgdGhlbgorLQkJCSMgU3lzdGVtIHdpbmV2ZXJzaW9u CistCQkJIyMgUmVhbGx5IGJhZCBpZGVhCistCQkJIyMgZXhwb3J0IFdJTkVBUkNIPXdpbjMyCist CQkJaWYgWyAhICIkUE9MX0FSQ0giID0gIiIgXTsgdGhlbgorLQkJCQlpZiBbICIkUE9MX0FSQ0gi ID0gIng4NiIgXTsgdGhlbgorLQkJCQkJZXhwb3J0IFdJTkVBUkNIPXdpbjMyCistCQkJCWVsc2UK Ky0JCQkJCWV4cG9ydCBXSU5FQVJDSD13aW42NAorLQkJCQlmaQorLQkJCQlQT0xfRGVidWdfTWVz c2FnZSAiU2V0dGluZyBXSU5FQVJDSCB0byAkV0lORUFSQ0giCistCQkJZmkKKy0KKy0JCQl3aW5l IHdpbmVib290CistCQkJUE9MX0RlYnVnX0luaXRQcmVmaXgKKy0KKy0JCQlpZiBbIC1lICIkV0lO RVBSRUZJWC9kcml2ZV9jL3dpbmRvd3Mvc3lzd293NjQiIF0gIyBJdCBpcyBhIDY0IGJpdHMgcHJl Zml4CistCQkJdGhlbgorLQkJCQlQT0xfQ29uZmlnX1ByZWZpeFdyaXRlICJBUkNIIiAiYW1kNjQi CistCQkJCVBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAiVGhpcyBpcyBhIDY0Yml0cyBwcmVmaXghIgor LQkJCQlQT0xfQ29uZmlnX1dyaXRlIFdJTkVfU1lTVEVNX0FSQ0ggYW1kNjQKKy0JCQllbHNlCist CQkJCVBPTF9Db25maWdfUHJlZml4V3JpdGUgIkFSQ0giICJ4ODYiCistCQkJCVBPTF9EZWJ1Z19M b2dUb1ByZWZpeCAiVGhpcyBpcyBhIDMyYml0cyBwcmVmaXghIgorLQkJCQlQT0xfQ29uZmlnX1dy aXRlIFdJTkVfU1lTVEVNX0FSQ0ggeDg2CistCQkJZmkKKy0JCWVsc2UKKy0JCQlta2RpciAtcCAi JFdJTkVQUkVGSVgiCistCQkJUE9MX0RlYnVnX01lc3NhZ2UgIlVzaW5nIHdpbmUgJFBPTF9XSU5F VkVSU0lPTiIKKy0JCQlQT0xfV2luZV9JbnN0YWxsVmVyc2lvbiAiJFBPTF9XSU5FVkVSU0lPTiIK Ky0JCQlQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdo aWxlIHRoZSB2aXJ0dWFsIGRyaXZlIGlzIGJlaW5nIGNyZWF0ZWQuLi4nKSIgIiRUSVRMRSIKKy0J CQlQT0xfQ29uZmlnX1ByZWZpeFdyaXRlICJBUkNIIiAiJFBPTF9BUkNIIgorLQkJCVBPTF9Db25m aWdfUHJlZml4V3JpdGUgIlZFUlNJT04iICIkUE9MX1dJTkVWRVJTSU9OIgorLQkJCVBPTF9XaW5l X0F1dG9TZXRWZXJzaW9uRW52CistCistCQkJUE9MX0RlYnVnX0luaXRQcmVmaXgKKy0KKy0JCQl3 aGljaCB3aW5lcHJlZml4Y3JlYXRlICYmIFsgIiQoUE9MX01ENV9maWxlICIkKHdoaWNoIHdpbmVw cmVmaXhjcmVhdGUpIikiICE9ICI1YzBlZTkwNjgyNzQ2ZTgxMTY5OGE1MzQxNWI0NzY1ZCIgXSAm JiBbICEgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSB8IGdyZXAgJEFQUExJQ0FUSU9OX1RJVExF KSIgPSAiIiBdICYmIHdpbmUgd2luZXByZWZpeGNyZWF0ZQorLQkJCXdpbmUgd2luZWJvb3QKKy0J CWZpCistCWZpCistCistCSMgTWFrZSBzdXJlIHRoYXQgLnJlZyBmaWxlcyBhcmUgY3JlYXRlZAor LQlpZiB3aGljaCB3aW5lc2VydmVyOyB0aGVuCistCQl3aW5lc2VydmVyIC13CistCWVsc2UKKy0J CVBPTF9EZWJ1Z19NZXNzYWdlICJXYXJuaW5nLCB3aW5lc2VydmVyIG5vdCBmb3VuZCIKKy0JCXNs ZWVwIDQKKy0JZmkKKy0JUE9MX0xvYWRWYXJfUFJPR1JBTUZJTEVTCistCVsgLWUgIiRQT0xfVVNF Ul9ST09UL2NvbmZpZ3VyYXRpb25zL3Bvc3RfcHJlZml4Y3JlYXRlIiBdICYmIFwKKy0JICAgIHNv dXJjZSAiJFBPTF9VU0VSX1JPT1QvY29uZmlndXJhdGlvbnMvcG9zdF9wcmVmaXhjcmVhdGUiCisr UE9MX1dpbmVfUHJlZml4Q3JlYXRlKCkgeworKyAgIyBDcmVhdGUgYSB3aW5lcHJlZml4CisrICAj IFVzYWdlOiBQT0xfV2luZV9QcmVmaXhDcmVhdGUgW1ZFUlNJT05dCisrICBpZiBbICEgIiQxIiA9 ICIiIF07IHRoZW4KKysgICAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgUE9MX1dJTkVWRVJT SU9OIHRvICQxIgorKyAgICBleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIkMSIKKysgIGVsaWYgWyAi JFBPTF9XSU5FVkVSU0lPTiIgXTsgdGhlbgorKyAgICBQT0xfRGVidWdfTWVzc2FnZSAiUE9MX1dJ TkVWRVJTSU9OIGlzIGFscmVhZHkgc2V0IHRvICRQT0xfV0lORVZFUlNJT04uIFVzaW5nIGl0Igor KyAgZWxzZQorKyAgICBQT0xfRGVidWdfTWVzc2FnZSAiTm8gdmVyc2lvbiBzcGVjaWZpZWQuIFVz aW5nIHN5c3RlbSB2ZXJzaW9uICgkKHdpbmUgLS12ZXJzaW9uKSkiCisrICBmaQorKworKyAgUE9M X0RlYnVnX01lc3NhZ2UgIkNyZWF0aW5nIHByZWZpeCAoJFBPTF9XSU5FVkVSU0lPTikuLi4iCisr ICBbICIkUE9MX0FSQ0giID0gIiIgXSAmJiBQT0xfU3lzdGVtX1NldEFyY2ggImF1dG8iCisrICBb ICIkV0lORVBSRUZJWCIgPSAiIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBpcyBu b3Qgc2V0ISIKKysKKysgIGlmIFsgLWUgIiRXSU5FUFJFRklYIiBdOyB0aGVuCisrICAgIFBPTF9E ZWJ1Z19NZXNzYWdlICJQcmVmaXggYWxyZWFkeSBleGlzdHMiCisrICAgIExOR19PVkVSV1JJVEU9 IiQoZXZhbF9nZXR0ZXh0ICdPdmVyd3JpdGUgKHVzdWFsbHkgd29ya3MsIG5vIGd1YXJhbnRlZSkn KSIKKysgICAgTE5HX0VSQVNFPSIkKGV2YWxfZ2V0dGV4dCAnRXJhc2UgKHZpcnR1YWwgZHJpdmUg Y29udGVudCB3aWxsIGJlIGxvc3QpJykiCisrICAgIExOR19BQk9SVD0iJChldmFsX2dldHRleHQg J0Fib3J0IGluc3RhbGxhdGlvbicpIgorKworKyAgICBPTERfQVJDSD0iIgorKyAgICBbIC1lICIk V0lORVBSRUZJWC9wbGF5b25saW51eC5jZmciIF0gJiYgT0xEX0FSQ0g9JChQT0xfQ29uZmlnX1By ZWZpeFJlYWQgIkFSQ0giKQorKyAgICBpZiBbICIkT0xEX0FSQ0giID0gIiRQT0xfVVNFUl9BUkNI IiBdOyB0aGVuCisrICAgICAgUFJFRklYX0NIT0lDRVM9IiRMTkdfT1ZFUldSSVRFfiRMTkdfRVJB U0V+JExOR19BQk9SVCIKKysgICAgZWxzZQorKyAgICAgICMgU2V0dGluZ3MgYXJlIG5vdCBjb21w YXRpYmxlLCBvdmVyd3JpdGluZyBpcyBub3QgYW4gb3B0aW9uCisrICAgICAgUFJFRklYX0NIT0lD RVM9IiRMTkdfRVJBU0V+JExOR19BQk9SVCIKKysgICAgZmkKKysKKysgICAgT0xEX0FQUF9BTldT RVI9IiRBUFBfQU5TV0VSIgorKyAgICBQUkVGTkFNRT0iJChiYXNlbmFtZSAkV0lORVBSRUZJWCki CisrICAgIFBPTF9TZXR1cFdpbmRvd19tZW51ICIkKGV2YWxfZ2V0dGV4dCAnVGhlIHRhcmdldCB2 aXJ0dWFsIGRyaXZlICRQUkVGTkFNRSBhbHJlYWR5IGV4aXN0czonKSIgIiRUSVRMRSIgIiRQUkVG SVhfQ0hPSUNFUyIgIn4iCisrICAgIGNhc2UgIiRBUFBfQU5TV0VSIiBpbgorKyAgICAiJExOR19P VkVSV1JJVEUiKQorKyAgICAgICMgUHJlZml4IGNvbnRlbnQgaXMgbm90IHJlcHJvZHVjaWJsZSwg aXQncyB0ZW1wdGluZyB0byBkaXNhbGxvdyByZXBvcnRzCisrICAgICAgIyBOT0JVR1JFUE9SVD0i VFJVRSIKKysgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiT3ZlcndyaXRlIFByZWZpeCIKKysgICAg ICAjIFNob3VsZCB3ZSByZXZlcnQgd2hhdCBoYXMgYmVlbiBhdXRvZGV0ZWN0ZWQgYnkgU2VsZWN0 UHJlZml4IGhlcmUgdG9vPworKyAgICAgIDs7CisrICAgICIkTE5HX0VSQVNFIikKKysgICAgICBQ T0xfRGVidWdfTWVzc2FnZSAiRXJhc2UgUHJlZml4IgorKyAgICAgIFBPTF9XaW5lX1ByZWZpeERl bGV0ZQorKyAgICAgICMgUmV2ZXJ0IHdoYXQgY291bGQgaGF2ZSBiZWVuIGF1dG9kZXRlY3RlZCB3 aXRoIFNlbGVjdFByZWZpeAorKyAgICAgIFBPTF9BUkNIPSIkUE9MX1VTRVJfQVJDSCIKKysgICAg ICA7OworKyAgICAqKQorKyAgICAgIE5PQlVHUkVQT1JUPSJUUlVFIgorKyAgICAgIFBPTF9EZWJ1 Z19GYXRhbCAiJChldmFsX2dldHRleHQgJ1VzZXIgYWJvcnQnKSIKKysgICAgICA7OworKyAgICBl c2FjCisrICAgIEFQUF9BTlNXRVI9IiRPTERfQVBQX0FOV1NFUiIKKysgIGZpCisrCisrICBQT0xf U2V0dXBXaW5kb3dfd2FpdCAiJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlIHRoZSB2 aXJ0dWFsIGRyaXZlIGlzIGJlaW5nIGNyZWF0ZWQuLi4nKSIgIiRUSVRMRSIKKysgIGlmIFsgLWUg IiRXSU5FUFJFRklYIiBdOyB0aGVuCisrICAgIHRvdWNoICIkV0lORVBSRUZJWC9wbGF5b25saW51 eC5jZmciCisrICAgIGlmIFsgISAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdOyB0aGVuCisrICAg ICAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgdmVyc2lvbiB0byAkUE9MX1dJTkVWRVJTSU9O IgorKyAgICAgIFBPTF9XaW5lX1NldFZlcnNpb25QcmVmaXggIiRQT0xfV0lORVZFUlNJT04iCisr ICAgICAgUE9MX1dpbmVfU2V0VmVyc2lvbkVudgorKyAgICBmaQorKyAgZWxzZSAjIFByZWZpeCBk b2VzIG5vdCBleGl0LCBsZXQncyBjcmVhdGUgaXQKKysgICAgaWYgWyAiJFBPTF9XSU5FVkVSU0lP TiIgPSAiIiBdOyB0aGVuCisrICAgICAgIyBTeXN0ZW0gd2luZXZlcnNpb24KKysgICAgICAjIyBS ZWFsbHkgYmFkIGlkZWEKKysgICAgICAjIyBleHBvcnQgV0lORUFSQ0g9d2luMzIKKysgICAgICBp ZiBbICEgIiRQT0xfQVJDSCIgPSAiIiBdOyB0aGVuCisrICAgICAgICBpZiBbICIkUE9MX0FSQ0gi ID0gIng4NiIgXTsgdGhlbgorKyAgICAgICAgICBleHBvcnQgV0lORUFSQ0g9d2luMzIKKysgICAg ICAgIGVsc2UKKysgICAgICAgICAgZXhwb3J0IFdJTkVBUkNIPXdpbjY0CisrICAgICAgICBmaQor KyAgICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgV0lORUFSQ0ggdG8gJFdJTkVBUkNI IgorKyAgICAgIGZpCisrCisrICAgICAgd2luZSB3aW5lYm9vdAorKyAgICAgIFBPTF9EZWJ1Z19J bml0UHJlZml4CisrCisrICAgICAgaWYgWyAtZSAiJFdJTkVQUkVGSVgvZHJpdmVfYy93aW5kb3dz L3N5c3dvdzY0IiBdOyB0aGVuICMgSXQgaXMgYSA2NCBiaXRzIHByZWZpeAorKyAgICAgICAgUE9M X0NvbmZpZ19QcmVmaXhXcml0ZSAiQVJDSCIgImFtZDY0IgorKyAgICAgICAgUE9MX0RlYnVnX0xv Z1RvUHJlZml4ICJUaGlzIGlzIGEgNjRiaXRzIHByZWZpeCEiCisrICAgICAgICBQT0xfQ29uZmln X1dyaXRlIFdJTkVfU1lTVEVNX0FSQ0ggYW1kNjQKKysgICAgICBlbHNlCisrICAgICAgICBQT0xf Q29uZmlnX1ByZWZpeFdyaXRlICJBUkNIIiAieDg2IgorKyAgICAgICAgUE9MX0RlYnVnX0xvZ1Rv UHJlZml4ICJUaGlzIGlzIGEgMzJiaXRzIHByZWZpeCEiCisrICAgICAgICBQT0xfQ29uZmlnX1dy aXRlIFdJTkVfU1lTVEVNX0FSQ0ggeDg2CisrICAgICAgZmkKKysgICAgZWxzZQorKyAgICAgIG1r ZGlyIC1wICIkV0lORVBSRUZJWCIKKysgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiVXNpbmcgd2lu ZSAkUE9MX1dJTkVWRVJTSU9OIgorKyAgICAgIFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uICIkUE9M X1dJTkVWRVJTSU9OIgorKyAgICAgIGV4aXRDb2RlPSIkPyIKKysgICAgICBQT0xfU2V0dXBXaW5k b3dfd2FpdCAiJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlIHRoZSB2aXJ0dWFsIGRy aXZlIGlzIGJlaW5nIGNyZWF0ZWQuLi4nKSIgIiRUSVRMRSIKKysKKysgICAgICBpZiBbWyAhICIk ZXhpdENvZGUiID09ICIyIiBdXTsgdGhlbiAjIyBXaW5lIHZlcnNpb24gaXMgYWN0dWFsbHkgZm91 bmQKKysgICAgICAgIFBPTF9Db25maWdfUHJlZml4V3JpdGUgIkFSQ0giICIkUE9MX0FSQ0giCisr ICAgICAgICBQT0xfQ29uZmlnX1ByZWZpeFdyaXRlICJWRVJTSU9OIiAiJFBPTF9XSU5FVkVSU0lP TiIKKysgICAgICBmaQorKworKyAgICAgIFBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52CisrCisr ICAgICAgUE9MX0RlYnVnX0luaXRQcmVmaXgKKysKKysgICAgICB3aGljaCB3aW5lcHJlZml4Y3Jl YXRlICYmIFsgIiQoUE9MX01ENV9maWxlICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUpIikiICE9 ICI1YzBlZTkwNjgyNzQ2ZTgxMTY5OGE1MzQxNWI0NzY1ZCIgXSAmJiBbICEgIiQod2hpY2ggd2lu ZXByZWZpeGNyZWF0ZSB8IGdyZXAgJEFQUExJQ0FUSU9OX1RJVExFKSIgPSAiIiBdICYmIHdpbmUg d2luZXByZWZpeGNyZWF0ZQorKyAgICAgIHdpbmUgd2luZWJvb3QKKysgICAgZmkKKysgIGZpCisr CisrICAjIE1ha2Ugc3VyZSB0aGF0IC5yZWcgZmlsZXMgYXJlIGNyZWF0ZWQKKysgIGlmIHdoaWNo IHdpbmVzZXJ2ZXI7IHRoZW4KKysgICAgd2luZXNlcnZlciAtdworKyAgZWxzZQorKyAgICBQT0xf RGVidWdfTWVzc2FnZSAiV2FybmluZywgd2luZXNlcnZlciBub3QgZm91bmQiCisrICAgIHNsZWVw IDQKKysgIGZpCisrICBQT0xfTG9hZFZhcl9QUk9HUkFNRklMRVMKKysgIFsgLWUgIiRQT0xfVVNF Ul9ST09UL2NvbmZpZ3VyYXRpb25zL3Bvc3RfcHJlZml4Y3JlYXRlIiBdICYmCisrICAgIHNvdXJj ZSAiJFBPTF9VU0VSX1JPT1QvY29uZmlndXJhdGlvbnMvcG9zdF9wcmVmaXhjcmVhdGUiCisgfQor LVBPTF9XaW5lX092ZXJyaWRlRExMKCkKKy17CistCSMgT3ZlcnJpZGUgRExMcworLQlNT0RFPSQx CistCVsgIiRNT0RFIiA9ICJkaXNhYmxlZCIgXSAmJiB1bnNldCBNT0RFCistCXNoaWZ0CistCist CShjYXQgPDwgJ0VPRicKKytQT0xfV2luZV9PdmVycmlkZURMTCgpIHsKKysgICMgT3ZlcnJpZGUg RExMcworKyAgTU9ERT0kMQorKyAgWyAiJE1PREUiID0gImRpc2FibGVkIiBdICYmIHVuc2V0IE1P REUKKysgIHNoaWZ0CisrCisrICAoCisrICAgIGNhdCA8PCdFT0YnCisgUkVHRURJVDQKKyAKKyBb SEtFWV9DVVJSRU5UX1VTRVJcU29mdHdhcmVcV2luZVxEbGxPdmVycmlkZXNdCisgRU9GCisgCist CWZvciBETEwgaW4gIiRAIgorLQlkbworLQkJZWNobyAiXCIqJERMTFwiPVwiJE1PREVcIiIKKy0J ZG9uZSkgPiAiJFBPTF9VU0VSX1JPT1QvdG1wL292ZXJyaWRlLWRsbC5yZWciCisrICAgIGZvciBE TEwgaW4gIiRAIjsgZG8KKysgICAgICBlY2hvICJcIiokRExMXCI9XCIkTU9ERVwiIgorKyAgICBk b25lCisrICApID4iJFBPTF9VU0VSX1JPT1QvdG1wL292ZXJyaWRlLWRsbC5yZWciCisgCistCVBP TF9EZWJ1Z19NZXNzYWdlICJPdmVycmlkaW5nIERMTHMiCistCVBPTF9TZXR1cFdpbmRvd193YWl0 X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQuLi4nKSIgIiRUSVRMRSIK Ky0JUE9MX1dpbmUgcmVnZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wL292ZXJyaWRlLWRsbC5yZWci CistCXJtICIkUE9MX1VTRVJfUk9PVC90bXAvb3ZlcnJpZGUtZGxsLnJlZyIKKysgIFBPTF9EZWJ1 Z19NZXNzYWdlICJPdmVycmlkaW5nIERMTHMiCisrICBQT0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0 X3NpZ25hbCAiJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0Li4uJykiICIkVElUTEUiCisrICBQ T0xfV2luZSByZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvb3ZlcnJpZGUtZGxsLnJlZyIKKysg IHJtICIkUE9MX1VTRVJfUk9PVC90bXAvb3ZlcnJpZGUtZGxsLnJlZyIKKyB9CistUE9MX1dpbmVf RGVsT3ZlcnJpZGVETEwoKQorLXsKKy0JIyBEZWxldGUgb3ZlcnJpZGUgRExMcworLQkoY2F0IDw8 ICdFT0YnCisrUE9MX1dpbmVfRGVsT3ZlcnJpZGVETEwoKSB7CisrICAjIERlbGV0ZSBvdmVycmlk ZSBETExzCisrICAoCisrICAgIGNhdCA8PCdFT0YnCisgUkVHRURJVDQKKyAKKyBbSEtFWV9DVVJS RU5UX1VTRVJcU29mdHdhcmVcV2luZVxEbGxPdmVycmlkZXNdCisgRU9GCisgCistCWZvciBETEwg aW4gIiRAIgorLQlkbworLQkJZWNobyAiXCIkRExMXCI9LSIKKy0JCWVjaG8gIlwiKiRETExcIj0t IgorLQlkb25lKSA+ICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLW92ZXJyaWRlLWRsbC5yZWciCist CVBPTF9EZWJ1Z19NZXNzYWdlICJEZWxldGluZyBvdmVycmlkZXMgRExMcyIKKy0JUE9MX1NldHVw V2luZG93X3dhaXRfbmV4dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdC4uLicp IiAiJFRJVExFIgorLQlQT0xfV2luZSByZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLW92 ZXJyaWRlLWRsbC5yZWciCistCXJtICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLW92ZXJyaWRlLWRs bC5yZWciCisrICAgIGZvciBETEwgaW4gIiRAIjsgZG8KKysgICAgICBlY2hvICJcIiRETExcIj0t IgorKyAgICAgIGVjaG8gIlwiKiRETExcIj0tIgorKyAgICBkb25lCisrICApID4iJFBPTF9VU0VS X1JPT1QvdG1wL2RlbC1vdmVycmlkZS1kbGwucmVnIgorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkRl bGV0aW5nIG92ZXJyaWRlcyBETExzIgorKyAgUE9MX1NldHVwV2luZG93X3dhaXRfbmV4dF9zaWdu YWwgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdC4uLicpIiAiJFRJVExFIgorKyAgUE9MX1dp bmUgcmVnZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1vdmVycmlkZS1kbGwucmVnIgorKyAg cm0gIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtb3ZlcnJpZGUtZGxsLnJlZyIKKyB9CistUE9MX1dp bmVfT3ZlcnJpZGVETExfQXBwKCkKKy17CistCSMgQXBwLXNwZWNpZmljIERMTCBvdmVycmlkZXMK Ky0JQVBQPSIkMSIKKy0JTU9ERT0iJDIiCistCVsgIiRNT0RFIiA9ICJkaXNhYmxlZCIgXSAmJiB1 bnNldCBNT0RFCistCXNoaWZ0IDIKKy0KKy0JKGNhdCA8PCBFT0YKKytQT0xfV2luZV9PdmVycmlk ZURMTF9BcHAoKSB7CisrICAjIEFwcC1zcGVjaWZpYyBETEwgb3ZlcnJpZGVzCisrICBBUFA9IiQx IgorKyAgTU9ERT0iJDIiCisrICBbICIkTU9ERSIgPSAiZGlzYWJsZWQiIF0gJiYgdW5zZXQgTU9E RQorKyAgc2hpZnQgMgorKworKyAgKAorKyAgICBjYXQgPDxFT0YKKyBSRUdFRElUNAorIAorIFtI S0VZX0NVUlJFTlRfVVNFUlxcU29mdHdhcmVcXFdpbmVcXEFwcERlZmF1bHRzXFwkQVBQXFxEbGxP dmVycmlkZXNdCisgRU9GCistCWZvciBETEwgaW4gIiRAIgorLQlkbworLQkJIyBXaG8ga25vd3Mg d2hhdCB0aGlzIGhhY2sgaXMgZm9yPworLQkJaWYgWyAiJERMTCIgPSAiY29tY3RsMzIiIF07IHRo ZW4KKy0JCQlybSAtcmYgIiRXSU5FUFJFRklYL3dpbnN4cy9tYW5pZmVzdHMveDg2X21pY3Jvc29m dC53aW5kb3dzLmNvbW1vbi1jb250cm9sc182NTk1YjY0MTQ0Y2NmMWRmXzYuMC4yNjAwLjI5ODJf bm9uZV9kZWFkYmVlZi5tYW5pZmVzdCIKKy0JCWZpCistCQllY2hvICJcIiokRExMXCI9XCIkTU9E RVwiIgorLQlkb25lKSA+ICIkUE9MX1VTRVJfUk9PVC90bXAvYXBwLWRsbC1vdmVycmlkZS5yZWci CistCVBPTF9XaW5lIHJlZ2VkaXQgIiRQT0xfVVNFUl9ST09UL3RtcC9hcHAtZGxsLW92ZXJyaWRl LnJlZyIKKy0Jcm0gIiRQT0xfVVNFUl9ST09UL3RtcC9hcHAtZGxsLW92ZXJyaWRlLnJlZyIKKysg ICAgZm9yIERMTCBpbiAiJEAiOyBkbworKyAgICAgICMgV2hvIGtub3dzIHdoYXQgdGhpcyBoYWNr IGlzIGZvcj8KKysgICAgICBpZiBbICIkRExMIiA9ICJjb21jdGwzMiIgXTsgdGhlbgorKyAgICAg ICAgcm0gLXJmICIkV0lORVBSRUZJWC93aW5zeHMvbWFuaWZlc3RzL3g4Nl9taWNyb3NvZnQud2lu ZG93cy5jb21tb24tY29udHJvbHNfNjU5NWI2NDE0NGNjZjFkZl82LjAuMjYwMC4yOTgyX25vbmVf ZGVhZGJlZWYubWFuaWZlc3QiCisrICAgICAgZmkKKysgICAgICBlY2hvICJcIiokRExMXCI9XCIk TU9ERVwiIgorKyAgICBkb25lCisrICApID4iJFBPTF9VU0VSX1JPT1QvdG1wL2FwcC1kbGwtb3Zl cnJpZGUucmVnIgorKyAgUE9MX1dpbmUgcmVnZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wL2FwcC1k bGwtb3ZlcnJpZGUucmVnIgorKyAgcm0gIiRQT0xfVVNFUl9ST09UL3RtcC9hcHAtZGxsLW92ZXJy aWRlLnJlZyIKKyB9CistUE9MX1dpbmVfRGVsT3ZlcnJpZGVETExfQXBwKCkKKy17CistCSMgRGVs ZXRlIGFwcC1zcGVjaWZpYyBETEwgb3ZlcnJpZGVzCistCUFQUD0iJDEiCistCXNoaWZ0CisrUE9M X1dpbmVfRGVsT3ZlcnJpZGVETExfQXBwKCkgeworKyAgIyBEZWxldGUgYXBwLXNwZWNpZmljIERM TCBvdmVycmlkZXMKKysgIEFQUD0iJDEiCisrICBzaGlmdAorIAorLQkoY2F0IDw8IEVPRgorKyAg KAorKyAgICBjYXQgPDxFT0YKKyBSRUdFRElUNAorIAorIFtIS0VZX0NVUlJFTlRfVVNFUlxcU29m dHdhcmVcXFdpbmVcXEFwcERlZmF1bHRzXFwkQVBQXFxEbGxPdmVycmlkZXNdCisgRU9GCistCWZv ciBETEwgaW4gIiRAIgorLQlkbworLQkJZWNobyAiXCIkRExMXCI9LSIKKy0JCWVjaG8gIlwiKiRE TExcIj0tIgorLQlkb25lKSA+ICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLWFwcC1kbGwtb3ZlcnJp ZGUucmVnIgorLQlQT0xfV2luZSByZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLWFwcC1k bGwtb3ZlcnJpZGUucmVnIgorLQlybSAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1hcHAtZGxsLW92 ZXJyaWRlLnJlZyIKKysgICAgZm9yIERMTCBpbiAiJEAiOyBkbworKyAgICAgIGVjaG8gIlwiJERM TFwiPS0iCisrICAgICAgZWNobyAiXCIqJERMTFwiPS0iCisrICAgIGRvbmUKKysgICkgPiIkUE9M X1VTRVJfUk9PVC90bXAvZGVsLWFwcC1kbGwtb3ZlcnJpZGUucmVnIgorKyAgUE9MX1dpbmUgcmVn ZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1hcHAtZGxsLW92ZXJyaWRlLnJlZyIKKysgIHJt ICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLWFwcC1kbGwtb3ZlcnJpZGUucmVnIgorIH0KKy1QT0xf V2luZV9SZWRpcmVjdERMTCgpCisteworLSAgICAjIFJlZGlyZWN0IERMTHMgd2luZS1zdGFnaW5n IGZlYXR1cmUKKy0gICAgIyBodHRwczovL2dpdGh1Yi5jb20vd2luZS1jb21waG9saW8vd2luZS1z dGFnaW5nL3dpa2kvRExMLVJlZGlyZWN0cworLSAgICBsb2NhbCBTT1VSQ0U9IiQxIgorLSAgICBs b2NhbCBUQVJHRVQ9IiQyIgorLSAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdE bGxSZWRpcmVjdHMnICIkU09VUkNFIiAiJFRBUkdFVCIKKytQT0xfV2luZV9SZWRpcmVjdERMTCgp IHsKKysgICMgUmVkaXJlY3QgRExMcyB3aW5lLXN0YWdpbmcgZmVhdHVyZQorKyAgIyBodHRwczov L2dpdGh1Yi5jb20vd2luZS1jb21waG9saW8vd2luZS1zdGFnaW5nL3dpa2kvRExMLVJlZGlyZWN0 cworKyAgbG9jYWwgU09VUkNFPSIkMSIKKysgIGxvY2FsIFRBUkdFVD0iJDIiCisrICBQT0xfV2lu ZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEbGxSZWRpcmVjdHMnICIkU09VUkNFIiAiJFRBUkdF VCIKKyB9CistUE9MX1dpbmVfRGVsUmVkaXJlY3RETEwoKQorLXsKKy0gICAgbG9jYWwgU09VUkNF PSIkMSIKKy0gICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGxsUmVkaXJlY3Rz JyAiJFNPVVJDRSIgJ2RlZmF1bHQnCisrUE9MX1dpbmVfRGVsUmVkaXJlY3RETEwoKSB7CisrICBs b2NhbCBTT1VSQ0U9IiQxIgorKyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGxs UmVkaXJlY3RzJyAiJFNPVVJDRSIgJ2RlZmF1bHQnCisgfQorLVBPTF9XaW5lX1JlZGlyZWN0RExM X0FwcCgpCisteworLSAgICAjIEFwcC1zcGVjaWZpYyBETEwgcmVkaXJlY3QKKy0gICAgbG9jYWwg QVBQPSIkMSIKKy0gICAgbG9jYWwgU09VUkNFPSIkMiIKKy0gICAgbG9jYWwgVEFSR0VUPSIkMyIK Ky0gICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAiQXBwRGVmYXVsdHNcXCRBUFBc XERsbFJlZGlyZWN0cyIgIiRTT1VSQ0UiICIkVEFSR0VUIgorK1BPTF9XaW5lX1JlZGlyZWN0RExM X0FwcCgpIHsKKysgICMgQXBwLXNwZWNpZmljIERMTCByZWRpcmVjdAorKyAgbG9jYWwgQVBQPSIk MSIKKysgIGxvY2FsIFNPVVJDRT0iJDIiCisrICBsb2NhbCBUQVJHRVQ9IiQzIgorKyAgUE9MX1dp bmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAiQXBwRGVmYXVsdHNcXCRBUFBcXERsbFJlZGlyZWN0 cyIgIiRTT1VSQ0UiICIkVEFSR0VUIgorIH0KKy1QT0xfV2luZV9EZWxSZWRpcmVjdERMTF9BcHAo KQorLXsKKy0gICAgIyBBcHAtc3BlY2lmaWMgRExMIHJlZGlyZWN0CistICAgIGxvY2FsIEFQUD0i JDEiCistICAgIGxvY2FsIFNPVVJDRT0iJDIiCistICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5 V2luZVBhaXIgIkFwcERlZmF1bHRzXFwkQVBQXFxEbGxSZWRpcmVjdHMiICIkU09VUkNFIiAnZGVm YXVsdCcKKytQT0xfV2luZV9EZWxSZWRpcmVjdERMTF9BcHAoKSB7CisrICAjIEFwcC1zcGVjaWZp YyBETEwgcmVkaXJlY3QKKysgIGxvY2FsIEFQUD0iJDEiCisrICBsb2NhbCBTT1VSQ0U9IiQyIgor KyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAiQXBwRGVmYXVsdHNcXCRBUFBcXERs bFJlZGlyZWN0cyIgIiRTT1VSQ0UiICdkZWZhdWx0JworIH0KKy1QT0xfV2luZV9XYWl0QmVmb3Jl ICgpCisteworLQkjIExvY2sgYmFzaCBjb21tYW5kcyB1bnRpbCB3aW5lIGlzIGV4aXRlZAorLQkj IFVzYWdlIDogUE9MX1dpbmVfV2FpdEJlZm9yZSBbUHJvZ3JhbSB0aXRsZV0gKC0tYWxsb3cta2ls bCkKKy0JU09GVE5BTUU9IiQxIgorLQlpZiBbICIkMiIgPSAiLS1hbGxvdy1raWxsIiBdCistCXRo ZW4KKy0JCWFsbG93S2lsbD0idHJ1ZSIKKy0JZWxzZQorLQkJYWxsb3dLaWxsPSJmYWxzZSIKKy0J ZmkKKy0KKy0JWyAiJDEiID0gIiIgXSAmJiBtZXNzYWdlPSIkKGV2YWxfZ2V0dGV4dCAiUGxlYXNl IHdhaXQuLi4iKSIgfHwgbWVzc2FnZT0iJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxl ICRTT0ZUTkFNRSBpcyBpbnN0YWxsZWQuLi4nKSIKKy0KKy0JaWYgWyAiJGFsbG93S2lsbCIgPSAi dHJ1ZSIgXQorLQl0aGVuCistCQlQT0xfU2V0dXBXaW5kb3dfd2FpdF9idXR0b24gIiRtZXNzYWdl IiAiJFRJVExFIiAiJChldmFsX2dldHRleHQgJ0luc3RhbGwgaXMgZG9uZScpIiAid2luZXNlcnZl ciAtayIgIiQoZXZhbF9nZXR0ZXh0ICdCZSBjYXJlZnVsISBUaGlzIHdpbGwga2lsbCBpbnN0YWxs IHByb2Nlc3MuIElmIGl0IGlzIG5vdCBmaW5pc2hlZCwgeW91IHdpbGwgaGF2ZSB0byByZWluc3Rh bGwgJFNPRlROQU1FJykiCistCWVsc2UKKy0JCVBPTF9TZXR1cFdpbmRvd193YWl0ICIkbWVzc2Fn ZSIgIiRUSVRMRSIKKy0JZmkKKytQT0xfV2luZV9XYWl0QmVmb3JlKCkgeworKyAgIyBMb2NrIGJh c2ggY29tbWFuZHMgdW50aWwgd2luZSBpcyBleGl0ZWQKKysgICMgVXNhZ2UgOiBQT0xfV2luZV9X YWl0QmVmb3JlIFtQcm9ncmFtIHRpdGxlXSAoLS1hbGxvdy1raWxsKQorKyAgU09GVE5BTUU9IiQx IgorKyAgaWYgWyAiJDIiID0gIi0tYWxsb3cta2lsbCIgXTsgdGhlbgorKyAgICBhbGxvd0tpbGw9 InRydWUiCisrICBlbHNlCisrICAgIGFsbG93S2lsbD0iZmFsc2UiCisrICBmaQorKworKyAgWyAi JDEiID0gIiIgXSAmJiBtZXNzYWdlPSIkKGV2YWxfZ2V0dGV4dCAiUGxlYXNlIHdhaXQuLi4iKSIg fHwgbWVzc2FnZT0iJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlICRTT0ZUTkFNRSBp cyBpbnN0YWxsZWQuLi4nKSIKKysKKysgIGlmIFsgIiRhbGxvd0tpbGwiID0gInRydWUiIF07IHRo ZW4KKysgICAgUE9MX1NldHVwV2luZG93X3dhaXRfYnV0dG9uICIkbWVzc2FnZSIgIiRUSVRMRSIg IiQoZXZhbF9nZXR0ZXh0ICdJbnN0YWxsIGlzIGRvbmUnKSIgIndpbmVzZXJ2ZXIgLWsiICIkKGV2 YWxfZ2V0dGV4dCAnQmUgY2FyZWZ1bCEgVGhpcyB3aWxsIGtpbGwgaW5zdGFsbCBwcm9jZXNzLiBJ ZiBpdCBpcyBub3QgZmluaXNoZWQsIHlvdSB3aWxsIGhhdmUgdG8gcmVpbnN0YWxsICRTT0ZUTkFN RScpIgorKyAgZWxzZQorKyAgICBQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJG1lc3NhZ2UiICIkVElU TEUiCisrICBmaQorIAorIH0KKy1QT0xfV2luZV9XYWl0RXhpdCAoKQorLXsKKy0JIyBMb2NrIGJh c2ggY29tbWFuZHMgdW50aWwgd2luZSBpcyBleGl0ZWQKKy0JIyBVc2FnZSA6IFBPTF9XaW5lX1dh aXRFeGl0ICgtLWZvcmNlLWlucHV0KSBbUHJvZ3JhbSB0aXRsZV0gKC0tYWxsb3cta2lsbCkKKy0J aWYgWyAiJDEiID0gIi0tZm9yY2UtaW5wdXQiIF0KKy0JdGhlbgorLQkJZm9yY2VJbnB1dD0idHJ1 ZSIKKy0JCXNoaWZ0CistCWVsc2UKKy0JCWZvcmNlSW5wdXQ9ImZhbHNlIgorLQlmaQorLQorLQlT T0ZUTkFNRT0iJDEiCistCWlmIFsgIiQyIiA9ICItLWFsbG93LWtpbGwiIF0KKy0JdGhlbgorLQkJ YWxsb3dLaWxsPSJ0cnVlIgorLQllbHNlCistCQlhbGxvd0tpbGw9ImZhbHNlIgorLQlmaQorLQor LQlbICIkMSIgPSAiIiBdICYmIG1lc3NhZ2U9IiQoZXZhbF9nZXR0ZXh0ICJQbGVhc2Ugd2FpdC4u LiIpIiB8fCBtZXNzYWdlPSIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgJFNPRlRO QU1FIGlzIGluc3RhbGxlZC4uLicpIgorLQlpZiBbICIkYWxsb3dLaWxsIiA9ICJ0cnVlIiBdCist CXRoZW4KKy0JCVBPTF9TZXR1cFdpbmRvd193YWl0X2J1dHRvbiAiJG1lc3NhZ2UiICIkVElUTEUi ICIkKGV2YWxfZ2V0dGV4dCAnSW5zdGFsbCBpcyBkb25lJykiICJ3aW5lc2VydmVyIC1rIiAiJChl dmFsX2dldHRleHQgJ0JlIGNhcmVmdWwhIFRoaXMgd2lsbCBraWxsIGluc3RhbGwgcHJvY2Vzcy4g SWYgaXQgaXMgbm90IGZpbmlzaGVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJlaW5zdGFsbCAkU09GVE5B TUUnKSIKKy0JZWxzZQorLQkJUE9MX1NldHVwV2luZG93X3dhaXQgIiRtZXNzYWdlIiAiJFRJVExF IgorLQlmaQorLQl3aW5lc2VydmVyIC13IHx8IFBPTF9TZXR1cFdpbmRvd19tZXNzYWdlICIkKGV2 YWxfZ2V0dGV4dCAnUHJlc3MgbmV4dCBvbmx5IHdoZW4gdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNz IGlzIGZpbmlzaGVkJykiICIkVElUTEUiCistCVsgIiRmb3JjZUlucHV0IiA9ICJ0cnVlIiBdICYm IFBPTF9TZXR1cFdpbmRvd19tZXNzYWdlICIkKGV2YWxfZ2V0dGV4dCAnUHJlc3MgbmV4dCBvbmx5 IHdoZW4gdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzIGlzIGZpbmlzaGVkJykiICIkVElUTEUiCisr UE9MX1dpbmVfV2FpdEV4aXQoKSB7CisrICAjIExvY2sgYmFzaCBjb21tYW5kcyB1bnRpbCB3aW5l IGlzIGV4aXRlZAorKyAgIyBVc2FnZSA6IFBPTF9XaW5lX1dhaXRFeGl0ICgtLWZvcmNlLWlucHV0 KSBbUHJvZ3JhbSB0aXRsZV0gKC0tYWxsb3cta2lsbCkKKysgIGlmIFsgIiQxIiA9ICItLWZvcmNl LWlucHV0IiBdOyB0aGVuCisrICAgIGZvcmNlSW5wdXQ9InRydWUiCisrICAgIHNoaWZ0CisrICBl bHNlCisrICAgIGZvcmNlSW5wdXQ9ImZhbHNlIgorKyAgZmkKKysKKysgIFNPRlROQU1FPSIkMSIK KysgIGlmIFsgIiQyIiA9ICItLWFsbG93LWtpbGwiIF07IHRoZW4KKysgICAgYWxsb3dLaWxsPSJ0 cnVlIgorKyAgZWxzZQorKyAgICBhbGxvd0tpbGw9ImZhbHNlIgorKyAgZmkKKysKKysgIFsgIiQx IiA9ICIiIF0gJiYgbWVzc2FnZT0iJChldmFsX2dldHRleHQgIlBsZWFzZSB3YWl0Li4uIikiIHx8 IG1lc3NhZ2U9IiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSAkU09GVE5BTUUgaXMg aW5zdGFsbGVkLi4uJykiCisrICBpZiBbICIkYWxsb3dLaWxsIiA9ICJ0cnVlIiBdOyB0aGVuCisr ICAgIFBPTF9TZXR1cFdpbmRvd193YWl0X2J1dHRvbiAiJG1lc3NhZ2UiICIkVElUTEUiICIkKGV2 YWxfZ2V0dGV4dCAnSW5zdGFsbCBpcyBkb25lJykiICJ3aW5lc2VydmVyIC1rIiAiJChldmFsX2dl dHRleHQgJ0JlIGNhcmVmdWwhIFRoaXMgd2lsbCBraWxsIGluc3RhbGwgcHJvY2Vzcy4gSWYgaXQg aXMgbm90IGZpbmlzaGVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJlaW5zdGFsbCAkU09GVE5BTUUnKSIK KysgIGVsc2UKKysgICAgUE9MX1NldHVwV2luZG93X3dhaXQgIiRtZXNzYWdlIiAiJFRJVExFIgor KyAgZmkKKysgIHdpbmVzZXJ2ZXIgLXcgfHwgUE9MX1NldHVwV2luZG93X21lc3NhZ2UgIiQoZXZh bF9nZXR0ZXh0ICdQcmVzcyBuZXh0IG9ubHkgd2hlbiB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3Mg aXMgZmluaXNoZWQnKSIgIiRUSVRMRSIKKysgIFsgIiRmb3JjZUlucHV0IiA9ICJ0cnVlIiBdICYm IFBPTF9TZXR1cFdpbmRvd19tZXNzYWdlICIkKGV2YWxfZ2V0dGV4dCAnUHJlc3MgbmV4dCBvbmx5 IHdoZW4gdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzIGlzIGZpbmlzaGVkJykiICIkVElUTEUiCisg fQorIAorLQorLQorLVBPTF9XaW5lX3JlYm9vdCAoKQorLXsKKy0JIyBTaW11bGF0ZSB3aW5kb3dz IHJlYm9vdAorLQlQT0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0X3NpZ25hbCAiJChldmFsX2dldHRl eHQgJ1BsZWFzZSB3YWl0IHdoaWxlICRBUFBMSUNBVElPTl9USVRMRSBpcyBzaW11bGF0aW5nIGEg cmVib290JykiICIkVElUTEUiCistCVBPTF9XaW5lIHdpbmVib290CisrUE9MX1dpbmVfcmVib290 KCkgeworKyAgIyBTaW11bGF0ZSB3aW5kb3dzIHJlYm9vdAorKyAgUE9MX1NldHVwV2luZG93X3dh aXRfbmV4dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSAkQVBQTElD QVRJT05fVElUTEUgaXMgc2ltdWxhdGluZyBhIHJlYm9vdCcpIiAiJFRJVExFIgorKyAgUE9MX1dp bmUgd2luZWJvb3QKKyB9CistUE9MX1dpbmVfR2V0UHJlZml4RnJvbVBhdGggKCkKKy17CistCSMg UmV0dXJuIHdpbmVwcmVmaXggZnJvbSBwYXRoCistCSMgVXNhZ2UgUE9MX1dpbmVfR2V0UHJlZml4 RnJvbVBhdGggW0V4ZSBmaWxlXQorLQlsb2NhbCBwPSIkMSIKKy0JcD0iJHtwIyovd2luZXByZWZp eC99IgorLQlwPSIke3AlJS8qfSIKKy0JZWNobyAiJHAiCisrUE9MX1dpbmVfR2V0UHJlZml4RnJv bVBhdGgoKSB7CisrICAjIFJldHVybiB3aW5lcHJlZml4IGZyb20gcGF0aAorKyAgIyBVc2FnZSBQ T0xfV2luZV9HZXRQcmVmaXhGcm9tUGF0aCBbRXhlIGZpbGVdCisrICBsb2NhbCBwPSIkMSIKKysg IHA9IiR7cCMqL3dpbmVwcmVmaXgvfSIKKysgIHA9IiR7cCUlLyp9IgorKyAgZWNobyAiJHAiCisg fQorLVBPTF9XaW5lX0dldEJhc2VOYW1lKCkKKy17CistCXBlcmwgLWUgJyRyZWxlYXNlPSRBUkdW WzBdOyAkcmVsZWFzZSA9fiBzL14oWzAtOV0rXC5bMC05XSsoXC5bMC05XSspPygtcmNbMC05XSsp PyktPy4qJC8kMS87IHByaW50ICIkcmVsZWFzZVxuIicgIiQxIgorK1BPTF9XaW5lX0dldEJhc2VO YW1lKCkgeworKyAgcGVybCAtZSAnJHJlbGVhc2U9JEFSR1ZbMF07ICRyZWxlYXNlID1+IHMvXihb MC05XStcLlswLTldKyhcLlswLTldKyk/KC1yY1swLTldKyk/KS0/LiokLyQxLzsgcHJpbnQgIiRy ZWxlYXNlXG4iJyAiJDEiCisgfQorLVBPTF9XaW5lX0dldFBhdGNoTmFtZSgpCisteworLQlwZXJs IC1lICckcmVsZWFzZT0kQVJHVlswXTsgJHJlbGVhc2UgPX4gcy9eWzAtOV0rXC5bMC05XSsoXC5b MC05XSspPygtcmNbMC05XSspPy0/Ly87IHByaW50ICIkcmVsZWFzZVxuIicgIiQxIgorK1BPTF9X aW5lX0dldFBhdGNoTmFtZSgpIHsKKysgIHBlcmwgLWUgJyRyZWxlYXNlPSRBUkdWWzBdOyAkcmVs ZWFzZSA9fiBzL15bMC05XStcLlswLTldKyhcLlswLTldKyk/KC1yY1swLTldKyk/LT8vLzsgcHJp bnQgIiRyZWxlYXNlXG4iJyAiJDEiCisgfQorLVBPTF9MbmtfUmVhZCgpCisteworLQlkcml2ZV9j X2ZvdW5kPSJmYWxzZSIKKy0JZXhwb3J0IEFOU1dFUl9QQVRIPSIiCistCWV4cG9ydCBBTlNXRVJf UFJFRklYPSIiCistCWV4cG9ydCBBTlNXRVJfTkFNRT0iJDEiCistCUFOU1dFUl9OQU1FPSIke0FO U1dFUl9OQU1FLy5sbmsvfSIKKy0Jd2hpbGUgcmVhZCBsaW5lOyBkbworLQkJaWYgWyAiJGRyaXZl X2NfZm91bmQiID0gInRydWUiIF07IHRoZW4KKy0JCQlpZiBbICIke2xpbmU6MToxfSIgPSAiOiIg XTsgdGhlbgorLQkJCQlicmVhaworLQkJCWZpCistCQkJaWYgWyAiJEFOU1dFUl9QQVRIIiA9ICIi IF07IHRoZW4KKy0JCQkJQU5TV0VSX1BBVEg9IiRsaW5lIgorLQkJCWVsc2UKKy0JCQkJQU5TV0VS X1BBVEg9IiRBTlNXRVJfUEFUSC8kbGluZSIKKy0JCQlmaQorLQkJZmkKKy0JCWlmIFsgIiRsaW5l IiA9ICJkcml2ZV9jIiBdOyB0aGVuCistCQkJZHJpdmVfY19mb3VuZD0idHJ1ZSIKKy0JCQlBTlNX RVJfUFJFRklYPSIkbGFzdGxpbmUiCistCQlmaQorLQkJbGFzdGxpbmU9IiRsaW5lIgorLQlkb25l IDwgPChzdHJpbmdzICIkMSIpCisrUE9MX0xua19SZWFkKCkgeworKyAgZHJpdmVfY19mb3VuZD0i ZmFsc2UiCisrICBleHBvcnQgQU5TV0VSX1BBVEg9IiIKKysgIGV4cG9ydCBBTlNXRVJfUFJFRklY PSIiCisrICBleHBvcnQgQU5TV0VSX05BTUU9IiQxIgorKyAgQU5TV0VSX05BTUU9IiR7QU5TV0VS X05BTUUvLmxuay99IgorKyAgd2hpbGUgcmVhZCBsaW5lOyBkbworKyAgICBpZiBbICIkZHJpdmVf Y19mb3VuZCIgPSAidHJ1ZSIgXTsgdGhlbgorKyAgICAgIGlmIFsgIiR7bGluZToxOjF9IiA9ICI6 IiBdOyB0aGVuCisrICAgICAgICBicmVhaworKyAgICAgIGZpCisrICAgICAgaWYgWyAiJEFOU1dF Ul9QQVRIIiA9ICIiIF07IHRoZW4KKysgICAgICAgIEFOU1dFUl9QQVRIPSIkbGluZSIKKysgICAg ICBlbHNlCisrICAgICAgICBBTlNXRVJfUEFUSD0iJEFOU1dFUl9QQVRILyRsaW5lIgorKyAgICAg IGZpCisrICAgIGZpCisrICAgIGlmIFsgIiRsaW5lIiA9ICJkcml2ZV9jIiBdOyB0aGVuCisrICAg ICAgZHJpdmVfY19mb3VuZD0idHJ1ZSIKKysgICAgICBBTlNXRVJfUFJFRklYPSIkbGFzdGxpbmUi CisrICAgIGZpCisrICAgIGxhc3RsaW5lPSIkbGluZSIKKysgIGRvbmUgPCA8KHN0cmluZ3MgIiQx IikKKyB9CisgCistUE9MX1dpbmVfZXhlbmFtZSgpCisteworLQlFWEVOQU1FPSIkMSIKKy0Jd2hp bGUgWyAiJDEiIF07IGRvCistCQlbICIkKGdyZXAgJy5leGUnIDw8PCAiJDEiKSIgXSAmJiBlY2hv ICIkMSIgJiYgcmV0dXJuIDAKKy0JCXNoaWZ0CistCWRvbmUKKy0JZWNobyAiJEVYRU5BTUUiCist CXJldHVybiAwCisrUE9MX1dpbmVfZXhlbmFtZSgpIHsKKysgIEVYRU5BTUU9IiQxIgorKyAgd2hp bGUgWyAiJDEiIF07IGRvCisrICAgIFsgIiQoZ3JlcCAnLmV4ZScgPDw8IiQxIikiIF0gJiYgZWNo byAiJDEiICYmIHJldHVybiAwCisrICAgIHNoaWZ0CisrICBkb25lCisrICBlY2hvICIkRVhFTkFN RSIKKysgIHJldHVybiAwCisgfQorLVBPTF9XaW5lX0NvbW1vbk5hbWUoKQorLXsKKy0JY25hbWU9 IiQoUE9MX1dpbmVfZXhlbmFtZSAiJEAiKSIKKy0JWyAiJGNuYW1lIiA9ICJ3aW5lY2ZnIiBdICYm IGNuYW1lPSJDb25maWd1cmUgd2luZSIKKy0JWyAiJGNuYW1lIiA9ICJyZWdlZGl0IiBdICYmIGNu YW1lPSJSZWdpc3RyeSBFZGl0b3IiCistCVsgIiRjbmFtZSIgPSAid2luZWJvb3QiIF0gJiYgY25h bWU9IlZpcnR1YWwgZHJpdmUgY3JlYXRpb24iCistCWVjaG8gIiRjbmFtZSIKKytQT0xfV2luZV9D b21tb25OYW1lKCkgeworKyAgY25hbWU9IiQoUE9MX1dpbmVfZXhlbmFtZSAiJEAiKSIKKysgIFsg IiRjbmFtZSIgPSAid2luZWNmZyIgXSAmJiBjbmFtZT0iQ29uZmlndXJlIHdpbmUiCisrICBbICIk Y25hbWUiID0gInJlZ2VkaXQiIF0gJiYgY25hbWU9IlJlZ2lzdHJ5IEVkaXRvciIKKysgIFsgIiRj bmFtZSIgPSAid2luZWJvb3QiIF0gJiYgY25hbWU9IlZpcnR1YWwgZHJpdmUgY3JlYXRpb24iCisr ICBlY2hvICIkY25hbWUiCisgfQorLVBPTF9XaW5lX0VuYWJsZU9TWE5hdGl2ZURvY2soKQorLXsK Ky0JaWYgWyAiJFBPTF9PUyIgPSAiTWFjIiAtYSAiJChQT0xfQ29uZmlnX1JlYWQgIk9TWF9OQVRJ VkVfTU9ERSIpIiA9ICJUUlVFIiBdOyB0aGVuCistCQlleHBvcnQgRk9SQ0VfT1NYX0RPQ0s9IlRS VUUiCistCWZpCisrUE9MX1dpbmVfRW5hYmxlT1NYTmF0aXZlRG9jaygpIHsKKysgIGlmIFsgIiRQ T0xfT1MiID0gIk1hYyIgLWEgIiQoUE9MX0NvbmZpZ19SZWFkICJPU1hfTkFUSVZFX01PREUiKSIg PSAiVFJVRSIgXTsgdGhlbgorKyAgICBleHBvcnQgRk9SQ0VfT1NYX0RPQ0s9IlRSVUUiCisrICBm aQorIH0KK2RpZmYgLS1naXQgYS9weXRob24vbGliL1ZhcmlhYmxlcy5weSBiL3B5dGhvbi9saWIv VmFyaWFibGVzLnB5CitpbmRleCA4YmVkNzYwMWIuLmRiZTJhYjcxOSAxMDA3NTUKKy0tLSBhL3B5 dGhvbi9saWIvVmFyaWFibGVzLnB5CisrKysgYi9weXRob24vbGliL1ZhcmlhYmxlcy5weQorQEAg LTE3LDcgKzE3LDcgQEAKKyBvcy5lbnZpcm9uWyJQT0xfUE9SVCJdID0gIjAiCisgb3MuZW52aXJv blsiUExBWU9OTElOVVgiXSA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5yZWFscGF0aChfX2Zp bGVfXykrIi8uLi8uLi8uLi8iKQorIG9zLmVudmlyb25bIlNJVEUiXSA9ICJodHRwOi8vcmVwb3Np dG9yeS5wbGF5b25saW51eC5jb20iCistb3MuZW52aXJvblsiVkVSU0lPTiJdID0gIjQuNCIKKytv cy5lbnZpcm9uWyJWRVJTSU9OIl0gPSAiNC40LjEiCisgb3MuZW52aXJvblsiUE9MX0lEIl0gPSBz dHIocmFuZG9tLnJhbmRpbnQoMSwgMTAwMDAwMDAwKSkKKyBvcy5lbnZpcm9uWyJHRUNLT19TSVRF Il0gPSAiaHR0cDovL3dpbmUucGxheW9ubGludXguY29tL2dlY2tvIgorIG9zLmVudmlyb25bIk1P Tk9fU0lURSJdID0gImh0dHA6Ly93aW5lLnBsYXlvbmxpbnV4LmNvbS9tb25vIgorQEAgLTExOSwx MSArMTE5LDEyIEBACisgCisgICAgIG9zLmVudmlyb25bIlBBVEgiXSA9IG9zLmVudmlyb25bIlBM QVlPTkxJTlVYIl0rIi8uLi91bml4L3dpbmUvYmluOiIgKyBvcy5lbnZpcm9uWyJQTEFZT05MSU5V WCJdKyIvLi4vdW5peC9pbWFnZV9tYWdpY2svYmluOiIgKyBvcy5lbnZpcm9uWyJQTEFZT05MSU5V WCJdKyIvLi4vdW5peC90b29scy9iaW4vOiIgKyBvcy5lbnZpcm9uWyJQQVRIIl0KKyAKKy0gICAg b3MuZW52aXJvblsiV1JJVEVfTEQiXSA9ICBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4v dW5peC9pbWFnZV9tYWdpY2svbGliOiIrIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91 bml4L3Rvb2xzL2xpYi9sZDovb3B0L1gxMS9saWIvOiIgKyBvcy5lbnZpcm9uWyJMRF9MSUJSQVJZ X1BBVEgiXQorLSAgICBvcy5lbnZpcm9uWyJEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCJdID0g IG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi93aW5lL2xpYiIKKysgICAgb3MuZW52aXJv blsiV1JJVEVfTEQiXSA9IG9zLmVudmlyb25bIkxEX0xJQlJBUllfUEFUSCJdCisrICAgIG9zLmVu dmlyb25bIkRZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIIl0gPSAgb3MuZW52aXJvblsiUExBWU9O TElOVVgiXSsiLy4uL3VuaXgvd2luZS9saWIiCisrICAgIG9zLmVudmlyb25bIldSSVRFX0RZTERf RkFMTEJBQ0tfTElCUkFSWV9QQVRIIl0gPSAgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4u L3VuaXgvd2luZS9saWIiCisgICAgIG9zLmVudmlyb25bIkZSRUVUWVBFX1BST1BFUlRJRVMiXT0i dHJ1ZXR5cGU6aW50ZXJwcmV0ZXItdmVyc2lvbj0zNSIKKyAKKy0gICAgb3MuZW52aXJvblsiV1JJ VEVfRFlMRCJdID0gb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvdG9vbHMvbGli L2R5bGQ6IiArIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L2ltYWdlX21hZ2lj ay9saWI6Iisgb3MuZW52aXJvblsiRFlMRF9MSUJSQVJZX1BBVEgiXQorKyAgICBvcy5lbnZpcm9u WyJXUklURV9EWUxEIl0gPSBvcy5lbnZpcm9uWyJEWUxEX0xJQlJBUllfUEFUSCJdCisgZWxzZToK KyAgICAgIyBEZWJpYW4gbWFpbnRhaW5lciBkZWNpZGVkIGZvciBzb21lIHJlYXNvbiBub3QgdG8g bGV0IHdpbmVzZXJ2ZXIgYmluYXJ5IGludG8gUEFUSC4uLgorICAgICBmb3Igd2luZXBhdGggaW4g KCcvdXNyL2xpYi9pMzg2LWxpbnV4LWdudS93aW5lL2JpbicsICcvdXNyL2xpYi9pMzg2LWxpbnV4 LWdudS93aW5lLXVuc3RhYmxlL2JpbicsCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21haW53aW5kb3cu cHkgYi9weXRob24vbWFpbndpbmRvdy5weQoraW5kZXggOGRmMWZmMTRiLi5jOGZlMTExNjAgMTAw NzU1CistLS0gYS9weXRob24vbWFpbndpbmRvdy5weQorKysrIGIvcHl0aG9uL21haW53aW5kb3cu cHkKK0BAIC0yNTQsNyArMjU0LDcgQEAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgaWQsIHRp dGxlKToKKyAgICAgICAgIHNlbGYuZmlsZW1lbnUgPSB3eC5NZW51KCkKKyAgICAgICAgICMjIyBP biBNYWNPUyBYLCBwcmVmZXJlbmNlIGlzIGFsd2F5cyBvbiB0aGUgbWFpbiBtZW51CisgICAgICAg ICBpZiAob3MuZW52aXJvblsiUE9MX09TIl0gPT0gIk1hYyIpOgorLSAgICAgICAgICAgIHByZWZJ dGVtID0gc2VsZi5maWxlbWVudS5BcHBlbmQod3guSURfUFJFRkVSRU5DRVMsIHRleHQ9IiZQcmVm ZXJlbmNlcyIpCisrICAgICAgICAgICAgcHJlZkl0ZW0gPSBzZWxmLmZpbGVtZW51LkFwcGVuZCh3 eC5JRF9QUkVGRVJFTkNFUywgXygiJlByZWZlcmVuY2VzIikpCisgICAgICAgICAgICAgc2VsZi5C aW5kKHd4LkVWVF9NRU5VLCBzZWxmLk9wdGlvbnMsIHByZWZJdGVtKQorIAorICAgICAgICAgIyMj IEZpbGUgbWVudQorZGlmZiAtLWdpdCBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9u c0ZldGNoZXIucHkgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNGZXRjaGVyLnB5 CitpbmRleCAwZmRjNzZlMzguLmZkNzU4Nzk4ZSAxMDA2NDQKKy0tLSBhL3B5dGhvbi93aW5lX3Zl cnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIucHkKKysrKyBiL3B5dGhvbi93aW5lX3ZlcnNpb25z L1dpbmVWZXJzaW9uc0ZldGNoZXIucHkKK0BAIC0xLDY3ICsxLDg4IEBACisgaW1wb3J0IGpzb24K KyBpbXBvcnQgb3MKKyBpbXBvcnQgdGhyZWFkaW5nCistaW1wb3J0IHRpbWUKKytpbXBvcnQgdHJh Y2ViYWNrCisgaW1wb3J0IHVybGxpYi5yZXF1ZXN0CistaW1wb3J0IG5hdHNvcnQKKyAKKyBmcm9t IGxpYiBpbXBvcnQgVmFyaWFibGVzCistZnJvbSB3aW5lX3ZlcnNpb25zLldpbmVWZXJzaW9uc1Rv b2xzIGltcG9ydCBmZXRjaFVzZXJPUworLQorLWNsYXNzIFdpbmVWZXJzaW9uRmV0Y2hlcih0aHJl YWRpbmcuVGhyZWFkKToKKy0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFyY2g9Ing4NiIpOgorLSAg ICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQorLSAgICAgICAgc2VsZi50aHJl YWRfbWVzc2FnZSA9ICIjV0FJVCMiCistICAgICAgICBzZWxmLnZlcnNpb25zID0gW10KKy0gICAg ICAgIHNlbGYuYXJjaGl0ZWN0dXJlID0gYXJjaAorLSAgICAgICAgc2VsZi5zdGFydCgpCistCist ICAgIGRlZiBkb3dubG9hZChzZWxmLCBnYW1lKToKKy0gICAgICAgIHNlbGYuZ2V0RGVzY3JpcHRp b24gPSBnYW1lCistCistICAgIGRlZiBydW4oc2VsZik6CistICAgICAgICBzZWxmLnRocmVhZF9y dW5uaW5nID0gVHJ1ZQorLSAgICAgICAgd2hpbGUoc2VsZi50aHJlYWRfcnVubmluZyk6CistICAg ICAgICAgICAgaWYoc2VsZi50aHJlYWRfbWVzc2FnZSA9PSAiZ2V0Iik6CistICAgICAgICAgICAg ICAgIHRyeSA6CistICAgICAgICAgICAgICAgICAgICB1cmwgPSBvcy5lbnZpcm9uWyJXSU5FX1NJ VEUiXQorLSAgICAgICAgICAgICAgICAgICAgd2ZvbGRlciA9ICItIi5qb2luKFtmZXRjaFVzZXJP UygpLCBzZWxmLmFyY2hpdGVjdHVyZV0pCistCistCistICAgICAgICAgICAgICAgICAgICByZXEg PSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KHVybCwgTm9uZSwgeydVc2VyLUFnZW50JzogVmFyaWFi bGVzLnVzZXJBZ2VudH0pCistICAgICAgICAgICAgICAgICAgICBoYW5kbGUgPSB1cmxsaWIucmVx dWVzdC51cmxvcGVuKHJlcSwgdGltZW91dCA9IDUpCistICAgICAgICAgICAgICAgICAgICB0aW1l LnNsZWVwKDEpCistICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVfZGlzdHJpYnV0aW9ucyA9 IGpzb24ubG9hZHMoaGFuZGxlLnJlYWQoKSkKKy0gICAgICAgICAgICAgICAgICAgIHNlbGYudmVy c2lvbnNfID0gW10KKy0gICAgICAgICAgICAgICAgICAgIGZvciBkaXN0cmlidXRpb24gaW4gYXZh aWxhYmxlX2Rpc3RyaWJ1dGlvbnM6CistICAgICAgICAgICAgICAgICAgICAgICAgaWYoZGlzdHJp YnV0aW9uWyJuYW1lIl0gPT0gIi0iLmpvaW4oWyJ1cHN0cmVhbSIsIGZldGNoVXNlck9TKCksIHNl bGYuYXJjaGl0ZWN0dXJlXSkpOgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGFj a2FnZSBpbiBkaXN0cmlidXRpb25bInBhY2thZ2VzIl06CistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2ZXJzaW9uID0gcGFja2FnZVsidmVyc2lvbiJdCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYWNrYWdlVXJsID0gcGFja2FnZVsidXJsIl0KKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNoYTFzdW0gPSBwYWNrYWdlWyJzaGExc3VtIl0KKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKG5vdCBvcy5wYXRoLmV4aXN0cyhWYXJpYWJs ZXMucGxheW9ubGludXhfcmVwKyIvd2luZS8iK3dmb2xkZXIrIi8iK3ZlcnNpb24pKToKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb25zXy5hcHBlbmQodmVy c2lvbikKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkRpcmVjdG9yeTogJXMgZXhpc3RzIiAl IChWYXJpYWJsZXMucGxheW9ubGludXhfcmVwKyIvd2luZS8iK3dmb2xkZXIrIi8iK3ZlcnNpb24p KQorLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYoZGlzdHJpYnV0aW9uWyJuYW1lIl0gPT0g Ii0iLmpvaW4oWyJzdGFnaW5nIiwgZmV0Y2hVc2VyT1MoKSwgc2VsZi5hcmNoaXRlY3R1cmVdKSk6 CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwYWNrYWdlIGluIGRpc3RyaWJ1dGlv blsicGFja2FnZXMiXToKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24g PSBwYWNrYWdlWyJ2ZXJzaW9uIl0KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm KG5vdCBvcy5wYXRoLmV4aXN0cyhWYXJpYWJsZXMucGxheW9ubGludXhfcmVwKyIvd2luZS8iK3dm b2xkZXIrIi8iK3ZlcnNpb24rIi1zdGFnaW5nIikpOgorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYudmVyc2lvbnNfLmFwcGVuZCh2ZXJzaW9uKyItc3RhZ2luZyIpCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHByaW50KCJEaXJlY3Rvcnk6ICVzIGV4aXN0cyIgJSAoVmFyaWFi bGVzLnBsYXlvbmxpbnV4X3JlcCsiL3dpbmUvIit3Zm9sZGVyKyIvIit2ZXJzaW9uKyItc3RhZ2lu ZyIpKQorLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHByaW50KGRpc3RyaWJ1dGlvblsibmFtZSJdICsgIiBkb2VzIG5vdCBtYXRjaCIp CistCistICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb25zXy5zb3J0KGtleT1uYXRzb3J0 Lm5hdHNvcnRfa2V5Z2VuKCkpCistICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb25zXy5y ZXZlcnNlKCkKKy0gICAgICAgICAgICAgICAgICAgIHNlbGYudmVyc2lvbnMgPSBzZWxmLnZlcnNp b25zX1s6XQorLSAgICAgICAgICAgICAgICAgICAgc2VsZi50aHJlYWRfbWVzc2FnZSA9ICJPayIK Ky0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorLSAgICAgICAgICAgICAg ICAgICAgcHJpbnQoZSkKKy0gICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKy0gICAg ICAgICAgICAgICAgICAgIHNlbGYudGhyZWFkX21lc3NhZ2UgPSAiRXJyIgorLSAgICAgICAgICAg ICAgICAgICAgc2VsZi52ZXJzaW9ucyA9IFsiV2luZSBwYWNrYWdlcyB3ZWJzaXRlIGlzIHVuYXZh aWxhYmxlIl0KKytmcm9tIHdpbmVfdmVyc2lvbnMuV2luZVZlcnNpb25zVG9vbHMgaW1wb3J0IGZl dGNoVXNlck9TLCBmZXRjaF9zdXBwb3J0ZWRfYXJjaHMKKyAKKysKKytjbGFzcyBXaW5lVmVyc2lv bkZldGNoZXIoKToKKysgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wZXJhdGluZ19zeXN0ZW0pOgor KyAgICAgICAgc2VsZi5vcGVyYXRpbmdfc3lzdGVtID0gb3BlcmF0aW5nX3N5c3RlbQorKworKyAg ICBkZWYgZmV0Y2hfYWxsX2F2YWlsYWJsZV93aW5lX3ZlcnNpb24oc2VsZiwgY2FsbGJhY2ssIGVy cm9yKToKKysgICAgICAgIHRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX3N5 bmNfZmV0Y2hfYWxsX2F2YWlsYWJsZV93aW5lX3ZlcnNpb25zLCBhcmdzPShjYWxsYmFjaywgZXJy b3IpKQorKyAgICAgICAgdGhyZWFkLnN0YXJ0KCkKKysKKysgICAgZGVmIF9zeW5jX2ZldGNoX2Fs bF9hdmFpbGFibGVfd2luZV92ZXJzaW9ucyhzZWxmLCBjYWxsYmFjaywgZXJyb3IpOgorKyAgICAg ICAgd2luZV92ZXJzaW9uX3VybCA9ICJodHRwczovL3Bob2VuaWNpcy5wbGF5b25saW51eC5jb20v aW5kZXgucGhwL3dpbmU/b3M9JXMiICUgc2VsZi5vcGVyYXRpbmdfc3lzdGVtCisrICAgICAgICBw cmludCgiRG9ud2xvYWRpbmcgJXMgIiAlIHdpbmVfdmVyc2lvbl91cmwpCisrICAgICAgICB0cnk6 CisrICAgICAgICAgICAgcmVxdWVzdCA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3Qod2luZV92ZXJz aW9uX3VybCwgTm9uZSwgeydVc2VyLUFnZW50JzogVmFyaWFibGVzLnVzZXJBZ2VudH0pCisrICAg ICAgICAgICAgaGFuZGxlID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXF1ZXN0LCB0aW1lb3V0 PTUpCisrICAgICAgICAgICAgY2FsbGJhY2soc2VsZi5fY29udmVydF9waG9lbmljaXNfd2luZV92 ZXJzaW9uc190b192NChqc29uLmxvYWQoaGFuZGxlKSkpCisrICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6CisrICAgICAgICAgICAgZXJyb3IodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKysK KysgICAgZGVmIF9zeW5jX2ZldGNoX2FsbF9pbnN0YWxsZWRfd2luZV92ZXJzaW9uKHNlbGYpOgor KyAgICAgICAgYXJjaGl0ZWN0dXJlcyA9IHt9CisrICAgICAgICBmb3IgYXJjaGl0ZWN0dXJlIGlu IGZldGNoX3N1cHBvcnRlZF9hcmNocygpOgorKyAgICAgICAgICAgIHdpbmVfZm9sZGVyID0gZmV0 Y2hVc2VyT1MoKSArICItIiArIGFyY2hpdGVjdHVyZQorKworKyAgICAgICAgICAgIGlmIG9zLnBh dGguZXhpc3RzKFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiL3dpbmUvIiArIHdpbmVfZm9s ZGVyKToKKysgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zID0gW3sKKysgICAgICAg ICAgICAgICAgICAgICJuYW1lIjogdmVyc2lvbiwKKysgICAgICAgICAgICAgICAgfSBmb3IgdmVy c2lvbiBpbiBvcy5saXN0ZGlyKFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiL3dpbmUvIiAr IHdpbmVfZm9sZGVyKSBpZgorKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiAhPSAiaW5zdGFs bGluZyJdCisgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgw LjIpCisrICAgICAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucyA9IFtdCisrCisrICAgICAg ICAgICAgaWYgYXJjaGl0ZWN0dXJlIG5vdCBpbiBhcmNoaXRlY3R1cmVzOgorKyAgICAgICAgICAg ICAgICBhcmNoaXRlY3R1cmVzW2FyY2hpdGVjdHVyZV0gPSBbXQorKworKyAgICAgICAgICAgIGFy Y2hpdGVjdHVyZXNbYXJjaGl0ZWN0dXJlXSArPSBhdmFpbGFibGVfdmVyc2lvbnMKKysgICAgICAg IHJldHVybiBhcmNoaXRlY3R1cmVzCisrCisrICAgIGRlZiBmZXRjaF9hbGxfaW5zdGFsbGVkX3dp bmVfdmVyc2lvbihzZWxmLCBjYWxsYmFjaywgZXJyb3IpOgorKyAgICAgICAgdHJ5OgorKyAgICAg ICAgICAgIGFyY2hpdGVjdHVyZXMgPSBzZWxmLl9zeW5jX2ZldGNoX2FsbF9pbnN0YWxsZWRfd2lu ZV92ZXJzaW9uKCkKKysKKysgICAgICAgICAgICBjYWxsYmFjayhhcmNoaXRlY3R1cmVzKQorKyAg ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorKyAgICAgICAgICAgIGVycm9yKHRyYWNlYmFj ay5mb3JtYXRfZXhjKCkpCisrCisrICAgIGRlZiBfY29udmVydF9waG9lbmljaXNfd2luZV92ZXJz aW9uc190b192NChzZWxmLCB3aW5lX2Rpc3RyaWJ1dGlvbnMpOgorKyAgICAgICAgIiIiCisrICAg ICAgICBDb252ZXJ0cyB2ZXJzaW9ucyBmcm9tIHBob2VuaWNpcyBmb3JtYXQgaW50byBhIGZvcm1h dCB0aGF0IFBPTC9QT00gNCBjYW4gaGFuZGxlCisrICAgICAgICAiIiIKKysgICAgICAgIGFyY2hp dGVjdHVyZXMgPSB7fQorKyAgICAgICAgZm9yIHdpbmVfZGlzdHJpYnV0aW9uIGluIHdpbmVfZGlz dHJpYnV0aW9uczoKKysgICAgICAgICAgICBuYW1lID0gd2luZV9kaXN0cmlidXRpb25bIm5hbWUi XQorKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZSA9IG5hbWUuc3BsaXQoIi0iKVsyXQorKyAgICAg ICAgICAgIGRpc3RyaWJ1dGlvbiA9IG5hbWUuc3BsaXQoIi0iKVswXQorKworKyAgICAgICAgICAg IGlmIGFyY2hpdGVjdHVyZSBub3QgaW4gYXJjaGl0ZWN0dXJlczoKKysgICAgICAgICAgICAgICAg YXJjaGl0ZWN0dXJlc1thcmNoaXRlY3R1cmVdID0gW10KKysKKysgICAgICAgICAgICBmb3IgcGFj a2FnZSBpbiB3aW5lX2Rpc3RyaWJ1dGlvblsicGFja2FnZXMiXToKKysgICAgICAgICAgICAgICAg aWYgZGlzdHJpYnV0aW9uID09ICJ1cHN0cmVhbSI6CisrICAgICAgICAgICAgICAgICAgICBwYWNr YWdlX25hbWUgPSBwYWNrYWdlWyJ2ZXJzaW9uIl0KKysgICAgICAgICAgICAgICAgZWxzZToKKysg ICAgICAgICAgICAgICAgICAgIHBhY2thZ2VfbmFtZSA9IHBhY2thZ2VbInZlcnNpb24iXSArICIt IiArIGRpc3RyaWJ1dGlvbgorKworKyAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzW2FyY2hp dGVjdHVyZV0gKz0gW3sKKysgICAgICAgICAgICAgICAgICAgICJuYW1lIjogcGFja2FnZV9uYW1l LAorKyAgICAgICAgICAgICAgICAgICAgImFyY2hpdGVjdHVyZSI6IGFyY2hpdGVjdHVyZSwKKysg ICAgICAgICAgICAgICAgICAgICJzaGExc3VtIjogcGFja2FnZVsic2hhMXN1bSJdLAorKyAgICAg ICAgICAgICAgICAgICAgInVybCI6IHBhY2thZ2VbInVybCJdCisrICAgICAgICAgICAgICAgIH1d CisrCisrCisrICAgICAgICByZXR1cm4gYXJjaGl0ZWN0dXJlcworKworKyAgICBkZWYgY2FsY3Vs YXRlX2luc3RhbGxlZF9oYXNoKHNlbGYpOgorKyAgICAgICAgcmV0dXJuIGhhc2goanNvbi5kdW1w cygoc2VsZi5fc3luY19mZXRjaF9hbGxfaW5zdGFsbGVkX3dpbmVfdmVyc2lvbigpKSkpCisrCisr CitkaWZmIC0tZ2l0IGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zTm90ZWJvb2su cHkgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNOb3RlYm9vay5weQoraW5kZXgg ZWM1ZjEyNTM1Li5iNDNjMjVkYzkgMTAwNjQ0CistLS0gYS9weXRob24vd2luZV92ZXJzaW9ucy9X aW5lVmVyc2lvbnNOb3RlYm9vay5weQorKysrIGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZl cnNpb25zTm90ZWJvb2sucHkKK0BAIC0yLDg5ICsyLDEwNiBAQAorIAorIGZyb20gbGliIGltcG9y dCBWYXJpYWJsZXMKKyAKKy0KKyAjIyBGSVhNRTogUmVmYWN0b3IgdGhpcyBjb2RlIGxhdGVyCisr ZnJvbSB3aW5lX3ZlcnNpb25zLldpbmVWZXJzaW9uc1Rvb2xzIGltcG9ydCBmZXRjaF9zdXBwb3J0 ZWRfYXJjaHMKKysKKysKKyBjbGFzcyBXaW5lVmVyc2lvbnNOb3RlYm9vayh3eC5Ob3RlYm9vayk6 CisgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICAgc2VsZi5ub3RlYm9v ayA9IHd4Lk5vdGVib29rLl9faW5pdF9fKHNlbGYsIHBhcmVudCwgLTEpCisgICAgICAgICBzZWxm LmltYWdlc19vbmdsZXRzID0gd3guSW1hZ2VMaXN0KDE2LCAxNikKKyAgICAgICAgIHNlbGYuaW1h Z2VzX29uZ2xldHMuQWRkKHd4LkJpdG1hcChWYXJpYWJsZXMucGxheW9ubGludXhfZW52ICsgIi9l dGMvb25nbGV0L3dpbmUucG5nIikpCisrCisgICAgICAgICBzZWxmLlNldEltYWdlTGlzdChzZWxm LmltYWdlc19vbmdsZXRzKQorIAorICAgICAgICAgc2VsZi5zaXplcnMgPSB7fQorLSAgICAgICAg c2VsZi5pbWFnZXNhcHBzID0ge30KKy0gICAgICAgIHNlbGYuaW1hZ2VzYXBwc19pID0ge30KKy0g ICAgICAgIHNlbGYuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yID0ge30KKysgICAg ICAgIHNlbGYuaW1hZ2VfbGlzdCA9IHNlbGYuX2NyZWF0ZV9pbWFnZV9saXN0KCkKKysgICAgICAg IHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvciA9IHt9CisgICAgICAg ICBzZWxmLndhaXRQYW5lbCA9IHt9CistICAgICAgICBzZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9u c1RyZWVTZWxlY3RvciA9IHt9CistICAgICAgICBzZWxmLmJ1dHRvbl9ybSA9IHt9CistICAgICAg ICBzZWxmLmJ1dHRvbl9pbiA9IHt9CisrICAgICAgICBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNp b25zX3RyZWVfc2VsZWN0b3IgPSB7fQorKyAgICAgICAgc2VsZi5idXR0b25fdW5pbnN0YWxsID0g e30KKysgICAgICAgIHNlbGYuYnV0dG9uX2luc3RhbGwgPSB7fQorICAgICAgICAgc2VsZi5ib3hT aXplcnMgPSB7fQorICAgICAgICAgc2VsZi5wYW5lbHMgPSB7fQorLQorLSAgICBkZWYgY2FsY3Vs YXRlRXZlbnREZWx0YShzZWxmLCBhcmNoKToKKy0gICAgICAgIGlmIChhcmNoID09ICJhbWQ2NCIp OgorLSAgICAgICAgICAgIHJldHVybiAxMDAKKy0gICAgICAgIGVsc2U6CistICAgICAgICAgICAg cmV0dXJuIDAKKy0KKy0gICAgZGVmIF9jcmVhdGVJbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbChz ZWxmLCBhcmNoKToKKy0gICAgICAgIGluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsID0gd3guUGFu ZWwoc2VsZi5wYW5lbHNbYXJjaF0sIC0xKQorKyAgICAgICAgc2VsZi5hdmFpbGFibGVfd2luZV92 ZXJzaW9uX3Jvb3RzID0ge30KKysgICAgICAgIHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lvbl9y b290cyA9IHt9CisrICAgICAgICBzZWxmLm51bWJlcl9vZl9hdmFpbGFibGVfdmVyc2lvbnMgPSB7 fQorKyAgICAgICAgc2VsZi5udW1iZXJfb2ZfaW5zdGFsbGVkX3ZlcnNpb25zID0ge30KKysgICAg ICAgIHNlbGYub25faW5zdGFsbF9oYW5kbGVyID0gTm9uZQorKyAgICAgICAgc2VsZi5vbl9yZW1v dmVfaGFuZGxlciA9IE5vbmUKKysKKysgICAgZGVmIF9jcmVhdGVfaW1hZ2VfbGlzdChzZWxmKToK KysgICAgICAgIGltYWdlX2xpc3QgPSB3eC5JbWFnZUxpc3QoMjIsIDIyKQorKyAgICAgICAgaW1h Z2VfbGlzdC5BZGQod3guQml0bWFwKFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAiL2V0Yy9p bnN0YWxsL3dpbmUtcGFja2FnZXMucG5nIikpCisrICAgICAgICBpbWFnZV9saXN0LkFkZCh3eC5C aXRtYXAoVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiArICIvZXRjL2luc3RhbGwvd2luZS1pbi11 c2UucG5nIikpCisrICAgICAgICByZXR1cm4gaW1hZ2VfbGlzdAorKworKyAgICBkZWYgX2NhbGN1 bGF0ZV9ldmVudF9udW1iZXIoc2VsZiwgZXZlbnRfaWQsIGFyY2gpOgorKyAgICAgICAgcmV0dXJu IGV2ZW50X2lkICsgbGlzdChmZXRjaF9zdXBwb3J0ZWRfYXJjaHMoKSkuaW5kZXgoYXJjaCkgKiAx MDAKKysKKysgICAgZGVmIF9jcmVhdGVJbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbChzZWxmLCBh cmNoaXRlY3R1cmUpOgorKyAgICAgICAgaW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWwgPSB3eC5Q YW5lbChzZWxmLnBhbmVsc1thcmNoaXRlY3R1cmVdLCAtMSkKKyAgICAgICAgIGluc3RhbGxlZFdp bmVWZXJzaW9uc1NpemVyID0gd3guQm94U2l6ZXIod3guVkVSVElDQUwpCisgICAgICAgICBpbnN0 YWxsZWRXaW5lVmVyc2lvbnNQYW5lbC5TZXRTaXplcihpbnN0YWxsZWRXaW5lVmVyc2lvbnNTaXpl cikKKy0gICAgICAgIHNlbGYuYm94U2l6ZXJzW2FyY2hdLkFkZChpbnN0YWxsZWRXaW5lVmVyc2lv bnNQYW5lbCwgMywgd3guRVhQQU5EKQorKyAgICAgICAgc2VsZi5ib3hTaXplcnNbYXJjaGl0ZWN0 dXJlXS5BZGQoaW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWwsIDMsIHd4LkVYUEFORCkKKyAgICAg ICAgIGluc3RhbGxlZFdpbmVWZXJzaW9uc1NpemVyLkFkZFNwYWNlcigxMCkKKyAgICAgICAgIGlu c3RhbGxlZFdpbmVWZXJzaW9uc1NpemVyLkFkZCh3eC5TdGF0aWNUZXh0KGluc3RhbGxlZFdpbmVW ZXJzaW9uc1BhbmVsLCAtMSwgXygiSW5zdGFsbGVkIFdpbmUgdmVyc2lvbnM6ICIpKSwgMCkKKyAg ICAgICAgIGluc3RhbGxlZFdpbmVWZXJzaW9uc1NpemVyLkFkZFNwYWNlcigxMCkKKy0gICAgICAg IHNlbGYuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdID0gd3guVHJlZUN0 cmwoaW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWwsIDEwNyArIHNlbGYuY2FsY3VsYXRlRXZlbnRE ZWx0YShhcmNoKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3guVFJfSElERV9ST09UIHwgd3guVFJfRlVM TF9ST1dfSElHSExJR0hUIHwgVmFyaWFibGVzLndpZGdldF9ib3JkZXJzKQorLSAgICAgICAgc2Vs Zi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0SW1hZ2VMaXN0KHNl bGYuaW1hZ2VzYXBwc19pW2FyY2hdKQorLSAgICAgICAgI3NlbGYuaW5zdGFsbGVkV2luZVZlcnNp b25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldFNwYWNpbmcoMCkKKy0gICAgICAgIGluc3RhbGxlZFdp bmVWZXJzaW9uc1NpemVyLkFkZChzZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3Rv clthcmNoXSwgMSwgd3guRVhQQU5EKQorKyAgICAgICAgc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJz aW9uc190cmVlX3NlbGVjdG9yW2FyY2hpdGVjdHVyZV0gPSB3eC5UcmVlQ3RybChpbnN0YWxsZWRX aW5lVmVyc2lvbnNQYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsY3VsYXRl X2V2ZW50X251bWJlcigxMDcsIGFyY2hpdGVjdHVyZSksCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0eWxlPXd4LlRSX0hJREVfUk9PVCB8IHd4LlRSX0ZVTExfUk9XX0hJR0hMSUdIVCB8IFZhcmlh Ymxlcy53aWRnZXRfYm9yZGVycykKKysgICAgICAgIHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lv bnNfdHJlZV9zZWxlY3RvclthcmNoaXRlY3R1cmVdLlNldEltYWdlTGlzdChzZWxmLmltYWdlX2xp c3QpCisrICAgICAgICBzZWxmLkJpbmQod3guRVZUX1RSRUVfU0VMX0NIQU5HRUQsIGxhbWJkYSBl dnQ6IHNlbGYuX29uX3NlbGVjdF9pbnN0YWxsZWRfd2luZV92ZXJzaW9uKGFyY2hpdGVjdHVyZSks IGlkPXNlbGYuX2NhbGN1bGF0ZV9ldmVudF9udW1iZXIoMTA3LCBhcmNoaXRlY3R1cmUpKQorKwor KyAgICAgICAgaW5zdGFsbGVkV2luZVZlcnNpb25zU2l6ZXIuQWRkKHNlbGYuaW5zdGFsbGVkX3dp bmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNoaXRlY3R1cmVdLCAxLCB3eC5FWFBBTkQpCisg ICAgICAgICBpbnN0YWxsZWRXaW5lVmVyc2lvbnNTaXplci5BZGRTcGFjZXIoMTApCisgCistICAg IGRlZiBfY3JlYXRlQXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWwoc2VsZiwgYXJjaCk6CistICAg ICAgICBhdmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbCA9IHd4LlBhbmVsKHNlbGYucGFuZWxzW2Fy Y2hdICwgLTEpCisrICAgIGRlZiBfY3JlYXRlQXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWwoc2Vs ZiwgYXJjaGl0ZWN0dXJlKToKKysgICAgICAgIGF2YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsID0g d3guUGFuZWwoc2VsZi5wYW5lbHNbYXJjaGl0ZWN0dXJlXSwgLTEpCisgICAgICAgICBhdmFpbGFi bGVXaW5lVmVyc2lvbnNTaXplciA9IHd4LkJveFNpemVyKHd4LlZFUlRJQ0FMKQorICAgICAgICAg YXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWwuU2V0U2l6ZXIoYXZhaWxhYmxlV2luZVZlcnNpb25z U2l6ZXIpCistICAgICAgICBzZWxmLmJveFNpemVyc1thcmNoXS5BZGQoYXZhaWxhYmxlV2luZVZl cnNpb25zUGFuZWwsIDMsIHd4LkVYUEFORCkKKysgICAgICAgIHNlbGYuYm94U2l6ZXJzW2FyY2hp dGVjdHVyZV0uQWRkKGF2YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsLCAzLCB3eC5FWFBBTkQpCisg ICAgICAgICBhdmFpbGFibGVXaW5lVmVyc2lvbnNTaXplci5BZGRTcGFjZXIoMTApCisgICAgICAg ICBhdmFpbGFibGVXaW5lVmVyc2lvbnNTaXplci5BZGQod3guU3RhdGljVGV4dChhdmFpbGFibGVX aW5lVmVyc2lvbnNQYW5lbCwgLTEsIF8oIkF2YWlsYWJsZSBXaW5lIHZlcnNpb25zOiAiKSwgKDUs IDEwKSksIDApCisgICAgICAgICBhdmFpbGFibGVXaW5lVmVyc2lvbnNTaXplci5BZGRTcGFjZXIo MTApCistICAgICAgICBzZWxmLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNo XSA9IHd4LlRyZWVDdHJsKGF2YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsLCAxMDYgKyBzZWxmLmNh bGN1bGF0ZUV2ZW50RGVsdGEoYXJjaCksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXd4LlRSX0hJREVfUk9P VCB8IHd4LlRSX0ZVTExfUk9XX0hJR0hMSUdIVCB8IFZhcmlhYmxlcy53aWRnZXRfYm9yZGVycywK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZT0oMzIwLCAzMDApLCBwb3M9KDEwLCAzNSkpCistICAgICAgICBzZWxm LmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5TZXRJbWFnZUxpc3Qoc2Vs Zi5pbWFnZXNhcHBzW2FyY2hdKQorLSAgICAgICAgI3NlbGYuYXZhaWxhYmxlV2luZVZlcnNpb25z VHJlZVNlbGVjdG9yW2FyY2hdLlNldFNwYWNpbmcoMCkKKy0gICAgICAgIGF2YWlsYWJsZVdpbmVW ZXJzaW9uc1NpemVyLkFkZChzZWxmLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3Rvclth cmNoXSwgMSwgd3guRVhQQU5EKQorKyAgICAgICAgc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9u c190cmVlX3NlbGVjdG9yW2FyY2hpdGVjdHVyZV0gPSB3eC5UcmVlQ3RybChhdmFpbGFibGVXaW5l VmVyc2lvbnNQYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsY3VsYXRlX2V2 ZW50X251bWJlcigxMDYsIGFyY2hpdGVjdHVyZSksCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 eWxlPXd4LlRSX0hJREVfUk9PVCB8IHd4LlRSX0ZVTExfUk9XX0hJR0hMSUdIVCB8IFZhcmlhYmxl cy53aWRnZXRfYm9yZGVycywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0oMzIwLCAzMDAp LCBwb3M9KDEwLCAzNSkpCisrICAgICAgICBzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25zX3Ry ZWVfc2VsZWN0b3JbYXJjaGl0ZWN0dXJlXS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZV9saXN0KQor KyAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9UUkVFX1NFTF9DSEFOR0VELCBsYW1iZGEgZXZ0OiBz ZWxmLl9vbl9zZWxlY3RfYXZhaWxhYmxlX3dpbmVfdmVyc2lvbihhcmNoaXRlY3R1cmUpLCBpZD1z ZWxmLl9jYWxjdWxhdGVfZXZlbnRfbnVtYmVyKDEwNiwgYXJjaGl0ZWN0dXJlKSkKKysKKysgICAg ICAgIGF2YWlsYWJsZVdpbmVWZXJzaW9uc1NpemVyLkFkZChzZWxmLmF2YWlsYWJsZV93aW5lX3Zl cnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaGl0ZWN0dXJlXSwgMSwgd3guRVhQQU5EKQorICAgICAg ICAgYXZhaWxhYmxlV2luZVZlcnNpb25zU2l6ZXIuQWRkU3BhY2VyKDEwKQorIAorLSAgICBkZWYg X2NyZWF0ZUJ1dHRvblBhbmVsKHNlbGYsIGFyY2gpOgorLSAgICAgICAgYnV0dG9uc1BhbmVsID0g d3guUGFuZWwoc2VsZi5wYW5lbHNbYXJjaF0gLCAtMSkKKysgICAgZGVmIF9jcmVhdGVCdXR0b25Q YW5lbChzZWxmLCBhcmNoaXRlY3R1cmUpOgorKyAgICAgICAgYnV0dG9uc1BhbmVsID0gd3guUGFu ZWwoc2VsZi5wYW5lbHNbYXJjaGl0ZWN0dXJlXSwgLTEpCisgICAgICAgICBidXR0b25zU2l6ZXIg PSB3eC5Cb3hTaXplcih3eC5WRVJUSUNBTCkKKyAgICAgICAgIGJ1dHRvbnNQYW5lbC5TZXRTaXpl cihidXR0b25zU2l6ZXIpCisgCistICAgICAgICBzZWxmLmJ1dHRvbl9ybVthcmNoXSA9IHd4LkJ1 dHRvbihidXR0b25zUGFuZWwsIDEwOCArIHNlbGYuY2FsY3VsYXRlRXZlbnREZWx0YShhcmNoKSwg IjwiKQorLSAgICAgICAgc2VsZi5idXR0b25faW5bYXJjaF0gPSB3eC5CdXR0b24oYnV0dG9uc1Bh bmVsLCAxMDkgKyBzZWxmLmNhbGN1bGF0ZUV2ZW50RGVsdGEoYXJjaCksICI+IikKKysgICAgICAg IHNlbGYuYnV0dG9uX3VuaW5zdGFsbFthcmNoaXRlY3R1cmVdID0gd3guQnV0dG9uKGJ1dHRvbnNQ YW5lbCwgc2VsZi5fY2FsY3VsYXRlX2V2ZW50X251bWJlcigxMDgsIGFyY2hpdGVjdHVyZSksICI8 IikKKysgICAgICAgIHNlbGYuYnV0dG9uX2luc3RhbGxbYXJjaGl0ZWN0dXJlXSA9IHd4LkJ1dHRv bihidXR0b25zUGFuZWwsIHNlbGYuX2NhbGN1bGF0ZV9ldmVudF9udW1iZXIoMTA5LCBhcmNoaXRl Y3R1cmUpLCAiPiIpCisgCisgICAgICAgICBidXR0b25zU2l6ZXIuQWRkU3RyZXRjaFNwYWNlcigp CistICAgICAgICBidXR0b25zU2l6ZXIuQWRkKHNlbGYuYnV0dG9uX3JtW2FyY2hdLCAwLCB3eC5D RU5URVIpCisrICAgICAgICBidXR0b25zU2l6ZXIuQWRkKHNlbGYuYnV0dG9uX3VuaW5zdGFsbFth cmNoaXRlY3R1cmVdLCAwLCB3eC5DRU5URVIpCisgICAgICAgICBidXR0b25zU2l6ZXIuQWRkU3Bh Y2VyKDEwKQorLSAgICAgICAgYnV0dG9uc1NpemVyLkFkZChzZWxmLmJ1dHRvbl9pblthcmNoXSwg MCwgd3guQ0VOVEVSKQorKyAgICAgICAgYnV0dG9uc1NpemVyLkFkZChzZWxmLmJ1dHRvbl9pbnN0 YWxsW2FyY2hpdGVjdHVyZV0sIDAsIHd4LkNFTlRFUikKKyAgICAgICAgIGJ1dHRvbnNTaXplci5B ZGRTdHJldGNoU3BhY2VyKCkKKyAKKy0gICAgICAgIHNlbGYuYnV0dG9uX3JtW2FyY2hdLkVuYWJs ZShGYWxzZSkKKy0gICAgICAgIHNlbGYuYnV0dG9uX2luW2FyY2hdLkVuYWJsZShGYWxzZSkKKysg ICAgICAgIHNlbGYuYnV0dG9uX3VuaW5zdGFsbFthcmNoaXRlY3R1cmVdLkVuYWJsZShGYWxzZSkK KysgICAgICAgIHNlbGYuYnV0dG9uX2luc3RhbGxbYXJjaGl0ZWN0dXJlXS5FbmFibGUoRmFsc2Up CisrCisrICAgICAgICBzZWxmLkJpbmQod3guRVZUX0JVVFRPTiwgbGFtYmRhIGV2dDogc2VsZi5f b25fZGVsZXRlKGFyY2hpdGVjdHVyZSksIGlkPXNlbGYuX2NhbGN1bGF0ZV9ldmVudF9udW1iZXIo MTA4LCBhcmNoaXRlY3R1cmUpKQorKyAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9CVVRUT04sIGxh bWJkYSBldnQ6IHNlbGYuX29uX2luc3RhbGwoYXJjaGl0ZWN0dXJlKSwgaWQ9c2VsZi5fY2FsY3Vs YXRlX2V2ZW50X251bWJlcigxMDksIGFyY2hpdGVjdHVyZSkpCisgCistICAgICAgICBzZWxmLmJv eFNpemVyc1thcmNoXS5BZGQoYnV0dG9uc1BhbmVsLCAxLCB3eC5FWFBBTkQpCisgCistICAgIGRl ZiBsaXN0ZV92ZXJzaW9ucyhzZWxmLCBhcmNoPSJ4ODYiKToKKysgICAgICAgIHNlbGYuYm94U2l6 ZXJzW2FyY2hpdGVjdHVyZV0uQWRkKGJ1dHRvbnNQYW5lbCwgMSwgd3guRVhQQU5EKQorKworKyAg ICBkZWYgYWRkX2FyY2hpdGVjdHVyZV90YWIoc2VsZiwgYXJjaD0ieDg2Iik6CisgICAgICAgICBz ZWxmLnBhbmVsc1thcmNoXSA9IHd4LlBhbmVsKHNlbGYsIC0xKQorIAorICAgICAgICAgc2VsZi5i b3hTaXplcnNbYXJjaF0gPSB3eC5Cb3hTaXplcih3eC5IT1JJWk9OVEFMKQorICAgICAgICAgc2Vs Zi5wYW5lbHNbYXJjaF0uU2V0U2l6ZXIoc2VsZi5ib3hTaXplcnNbYXJjaF0pCistICAgICAgICBz ZWxmLmltYWdlc2FwcHNbYXJjaF0gPSB3eC5JbWFnZUxpc3QoMjIsIDIyKQorLSAgICAgICAgc2Vs Zi5pbWFnZXNhcHBzX2lbYXJjaF0gPSB3eC5JbWFnZUxpc3QoMjIsIDIyKQorIAorICAgICAgICAg c2VsZi5ib3hTaXplcnNbYXJjaF0uQWRkU3BhY2VyKDEwKQorICAgICAgICAgc2VsZi5fY3JlYXRl QXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWwoYXJjaCkKK0BAIC05MywzICsxMTAsMzkgQEAgZGVm IGxpc3RlX3ZlcnNpb25zKHNlbGYsIGFyY2g9Ing4NiIpOgorICAgICAgICAgc2VsZi5ib3hTaXpl cnNbYXJjaF0uQWRkU3BhY2VyKDEwKQorIAorICAgICAgICAgc2VsZi5BZGRQYWdlKHNlbGYucGFu ZWxzW2FyY2hdLCBfKCJXaW5lIHZlcnNpb25zIikgKyAiICgiICsgYXJjaCArICIpIiwgaW1hZ2VJ ZD0wKQorKworKyAgICBkZWYgY2xlYW5fdmVyc2lvbl9vZl9hcmNoaXRlY3R1cmUoc2VsZiwgYXJj aCk6CisrICAgICAgICBzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3Jb YXJjaF0uRGVsZXRlQWxsSXRlbXMoKQorKyAgICAgICAgc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJz aW9uc190cmVlX3NlbGVjdG9yW2FyY2hdLkRlbGV0ZUFsbEl0ZW1zKCkKKysgICAgICAgIHNlbGYu YXZhaWxhYmxlX3dpbmVfdmVyc2lvbl9yb290c1thcmNoXSA9IHNlbGYuYXZhaWxhYmxlX3dpbmVf dmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNoXS5BZGRSb290KCIiKQorKyAgICAgICAgc2VsZi5p bnN0YWxsZWRfd2luZV92ZXJzaW9uX3Jvb3RzW2FyY2hdID0gc2VsZi5pbnN0YWxsZWRfd2luZV92 ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hdLkFkZFJvb3QoIiIpCisrICAgICAgICBzZWxmLm51 bWJlcl9vZl9hdmFpbGFibGVfdmVyc2lvbnNbYXJjaF0gPSAwCisrICAgICAgICBzZWxmLm51bWJl cl9vZl9pbnN0YWxsZWRfdmVyc2lvbnNbYXJjaF0gPSAwCisrCisrICAgIGRlZiBhZGRfYXZhaWxh YmxlX3ZlcnNpb24oc2VsZiwgYXJjaCwgdmVyc2lvbik6CisrICAgICAgICBzZWxmLm51bWJlcl9v Zl9hdmFpbGFibGVfdmVyc2lvbnNbYXJjaF0gKz0gMQorKyAgICAgICAgc2VsZi5hdmFpbGFibGVf d2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hdLkFwcGVuZEl0ZW0oc2VsZi5hdmFpbGFi bGVfd2luZV92ZXJzaW9uX3Jvb3RzW2FyY2hdLCB2ZXJzaW9uLCAwKQorKworKyAgICBkZWYgYWRk X2luc3RhbGxlZF92ZXJzaW9uKHNlbGYsIGFyY2gsIHZlcnNpb24pOgorKyAgICAgICAgc2VsZi5u dW1iZXJfb2ZfaW5zdGFsbGVkX3ZlcnNpb25zW2FyY2hdICs9IDEKKysgICAgICAgIHNlbGYuaW5z dGFsbGVkX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNoXS5BcHBlbmRJdGVtKHNlbGYu aW5zdGFsbGVkX3dpbmVfdmVyc2lvbl9yb290c1thcmNoXSwgdmVyc2lvbiwgMCkKKysKKysgICAg ZGVmIF9vbl9zZWxlY3RfaW5zdGFsbGVkX3dpbmVfdmVyc2lvbihzZWxmLCBhcmNoaXRlY3R1cmUp OgorKyAgICAgICAgc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2Fy Y2hpdGVjdHVyZV0uVW5zZWxlY3RBbGwoKQorKyAgICAgICAgc2VsZi5idXR0b25fdW5pbnN0YWxs W2FyY2hpdGVjdHVyZV0uRW5hYmxlKFRydWUpCisrICAgICAgICBzZWxmLmJ1dHRvbl9pbnN0YWxs W2FyY2hpdGVjdHVyZV0uRW5hYmxlKEZhbHNlKQorKworKyAgICBkZWYgX29uX3NlbGVjdF9hdmFp bGFibGVfd2luZV92ZXJzaW9uKHNlbGYsIGFyY2hpdGVjdHVyZSk6CisrICAgICAgICBzZWxmLmlu c3RhbGxlZF93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaGl0ZWN0dXJlXS5VbnNlbGVj dEFsbCgpCisrICAgICAgICBzZWxmLmJ1dHRvbl91bmluc3RhbGxbYXJjaGl0ZWN0dXJlXS5FbmFi bGUoRmFsc2UpCisrICAgICAgICBzZWxmLmJ1dHRvbl9pbnN0YWxsW2FyY2hpdGVjdHVyZV0uRW5h YmxlKFRydWUpCisrCisrICAgIGRlZiBfb25faW5zdGFsbChzZWxmLCBhcmNoaXRlY3R1cmUpOgor KyAgICAgICAgc2VsZWN0ZWRfdmVyc2lvbiA9IHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNf dHJlZV9zZWxlY3RvclthcmNoaXRlY3R1cmVdLkdldEl0ZW1UZXh0KHNlbGYuYXZhaWxhYmxlX3dp bmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNoaXRlY3R1cmVdLkdldFNlbGVjdGlvbigpKQor KyAgICAgICAgaWYgc2VsZi5vbl9pbnN0YWxsX2hhbmRsZXIgaXMgbm90IE5vbmU6CisrICAgICAg ICAgICAgc2VsZi5vbl9pbnN0YWxsX2hhbmRsZXIoYXJjaGl0ZWN0dXJlLCBzZWxlY3RlZF92ZXJz aW9uKQorKworKyAgICBkZWYgX29uX2RlbGV0ZShzZWxmLCBhcmNoaXRlY3R1cmUpOgorKyAgICAg ICAgc2VsZWN0ZWRfdmVyc2lvbiA9IHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNfdHJlZV9z ZWxlY3RvclthcmNoaXRlY3R1cmVdLkdldEl0ZW1UZXh0KHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVy c2lvbnNfdHJlZV9zZWxlY3RvclthcmNoaXRlY3R1cmVdLkdldFNlbGVjdGlvbigpKQorKyAgICAg ICAgaWYgc2VsZi5vbl9yZW1vdmVfaGFuZGxlciBpcyBub3QgTm9uZToKKysgICAgICAgICAgICBz ZWxmLm9uX3JlbW92ZV9oYW5kbGVyKGFyY2hpdGVjdHVyZSwgc2VsZWN0ZWRfdmVyc2lvbikKK2Rp ZmYgLS1naXQgYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNUb29scy5weSBiL3B5 dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xzLnB5CitpbmRleCAwNmZiNDAxZTYu LjY5ZDRjZjJiMiAxMDA2NDQKKy0tLSBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9u c1Rvb2xzLnB5CisrKysgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNUb29scy5w eQorQEAgLTEwLDIyICsxMCwxMCBAQCBkZWYgZmV0Y2hVc2VyT1MoKToKKyAgICAgZWxzZToKKyAg ICAgICAgIHJldHVybiAiZnJlZWJzZCIKKyAKKy1kZWYgR2V0V2luZVZlcnNpb24oZ2FtZSk6Cist ICAgIGNmaWxlID0gVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICJzaG9ydGN1dHMvIiArIGdh bWUKKy0gICAgZmljaGllciA9IG9wZW4oY2ZpbGUsICJyIikucmVhZGxpbmVzKCkKKy0gICAgaSA9 IDAKKy0gICAgbGluZSA9ICIiCistICAgIHdoaWxlIChpIDwgbGVuKGZpY2hpZXIpKToKKy0gICAg ICAgIGZpY2hpZXJbaV0gPSBmaWNoaWVyW2ldLnJlcGxhY2UoIlxuIiwgIiIpCistICAgICAgICBp ZiAoIlBBVEg9IiBpbiBmaWNoaWVyW2ldIGFuZCAiV2luZVZlcnNpb25zIiBpbiBmaWNoaWVyW2ld KToKKy0gICAgICAgICAgICBsaW5lID0gZmljaGllcltpXS5yZXBsYWNlKCIvLyIsICIvIikKKy0g ICAgICAgIGkgKz0gMQorK2RlZiBhcmNoaXRlY3R1cmVfaXNfc3VwcG9ydGVkKGFyY2hpdGVjdHVy ZV9uYW1lKToKKysgICAgcmV0dXJuIFRydWUgIyMgRklYTUUKKyAKKy0gICAgaWYgbGluZSA9PSAi IjoKKy0gICAgICAgIHZlcnNpb24gPSAiU3lzdGVtIgorLSAgICBlbHNlOgorLSAgICAgICAgdmVy c2lvbiA9IGxpbmUucmVwbGFjZSgiUEFUSD0iLCAiIikucmVwbGFjZSgiXCIiLCAiIikucmVwbGFj ZShWYXJpYWJsZXMucGxheW9ubGludXhfcmVwLCAiIikucmVwbGFjZSgiLy8iLCAiLyIpCistICAg ICAgICB2ZXJzaW9uID0gdmVyc2lvbi5zcGxpdCgiLyIpCistICAgICAgICB2ZXJzaW9uID0gdmVy c2lvblsxXQorLQorLSAgICByZXR1cm4gdmVyc2lvbgorK2RlZiBmZXRjaF9zdXBwb3J0ZWRfYXJj aHMoKToKKysgICAgZm9yIGF2YWlsYWJsZV9hcmNoIGluIFsieDg2IiwgIng4Nm9uNjQiLCAiYW1k NjQiXToKKysgICAgICAgIGlmIGFyY2hpdGVjdHVyZV9pc19zdXBwb3J0ZWQoYXZhaWxhYmxlX2Fy Y2gpOgorKyAgICAgICAgICAgIHlpZWxkIGF2YWlsYWJsZV9hcmNoCitkaWZmIC0tZ2l0IGEvcHl0 aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zV2luZG93LnB5IGIvcHl0aG9uL3dpbmVfdmVy c2lvbnMvV2luZVZlcnNpb25zV2luZG93LnB5CitpbmRleCBlM2I4YjQxNjAuLmI3NmRiMGIyNSAx MDA3NTUKKy0tLSBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1dpbmRvdy5weQor KysrIGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zV2luZG93LnB5CitAQCAtMzAs MTgzICszMCw5NSBAQAorIGltcG9ydCBsaWIucGxheW9ubGludXggYXMgcGxheW9ubGludXgKKyBm cm9tIHdpbmVfdmVyc2lvbnMuV2luZVZlcnNpb25zRmV0Y2hlciBpbXBvcnQgV2luZVZlcnNpb25G ZXRjaGVyCisgZnJvbSB3aW5lX3ZlcnNpb25zLldpbmVWZXJzaW9uc05vdGVib29rIGltcG9ydCBX aW5lVmVyc2lvbnNOb3RlYm9vaworLWZyb20gd2luZV92ZXJzaW9ucy5XaW5lVmVyc2lvbnNUb29s cyBpbXBvcnQgZmV0Y2hVc2VyT1MKKytmcm9tIHdpbmVfdmVyc2lvbnMuV2luZVZlcnNpb25zVG9v bHMgaW1wb3J0IGZldGNoVXNlck9TLCBmZXRjaF9zdXBwb3J0ZWRfYXJjaHMKKyAKKyBsaWIubG5n LkxhbmcoKQorIAorIAorLWRlZiBTZXRXaW5lVmVyc2lvbihnYW1lLCB2ZXJzaW9uKToKKy0gICAg Y2ZpbGUgPSBWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgInNob3J0Y3V0cy8iICsgZ2FtZQor LSAgICBmaWNoaWVyID0gb3BlbihjZmlsZSwgInIiKS5yZWFkbGluZXMoKQorLSAgICBpID0gMAor LSAgICBsaW5lID0gW10KKy0gICAgd2hpbGUgKGkgPCBsZW4oZmljaGllcikpOiAgIyBPbiByZXRp cmUgbCdldmVudHVlbAorLSAgICAgICAgZmljaGllcltpXSA9IGZpY2hpZXJbaV0ucmVwbGFjZSgi XG4iLCAiIikKKy0gICAgICAgIGlmICgiUEFUSD0iIG5vdCBpbiBmaWNoaWVyW2ldIG9yICJXaW5l VmVyc2lvbnMiIG5vdCBpbiBmaWNoaWVyW2ldKToKKy0gICAgICAgICAgICBsaW5lLmFwcGVuZChm aWNoaWVyW2ldKQorLSAgICAgICAgaSArPSAxCistCistICAgIGZpY2hpZXJfd3JpdGUgPSBvcGVu KGNmaWxlLCAidyIpCisrY2xhc3MgV2luZVZlcnNpb25zV2luZG93KHd4LkZyYW1lKToKKysgICAg ZGVmIG9uX2F2YWlsYWJsZV93aW5lX3ZlcnNpb25zX2Rvd25sb2FkZWQoc2VsZiwgdmVyc2lvbnNf cGVyX2FyY2hpdGVjdHVyZSk6CisrICAgICAgICBmb3IgYXJjaGl0ZWN0dXJlIGluIHZlcnNpb25z X3Blcl9hcmNoaXRlY3R1cmU6CisrICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zID0gW10K KysgICAgICAgICAgICBmb3IgdmVyc2lvbiBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlW2Fy Y2hpdGVjdHVyZV06CisrICAgICAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucy5hcHBlbmQo dmVyc2lvblsibmFtZSJdKQorIAorLSAgICBpZiAodmVyc2lvbiAhPSAiU3lzdGVtIik6ICAjIE9u IGluc2VyZQorLSAgICAgICAgaWYgb3MuZW52aXJvblsiUE9MX09TIl0gPT0gIk1hYyI6CistICAg ICAgICAgICAgbGluZS5pbnNlcnQoMSwgIlBBVEg9XCIiICsgVmFyaWFibGVzLnBsYXlvbmxpbnV4 X3JlcCArICJXaW5lVmVyc2lvbnMvIiArIHZlcnNpb24gKyAiL2Jpbi86JFBBVEhcIiIpCistICAg ICAgICAgICAgbGluZS5pbnNlcnQoMSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAiTERfTElC UkFSWV9QQVRIPVwiIiArIFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiV2luZVZlcnNpb25z LyIgKyB2ZXJzaW9uICsgIi9saWIvOiRMRF9MSUJSQVJZX1BBVEhcIiIpCistICAgICAgICBlbHNl OgorLSAgICAgICAgICAgIGxpbmUuaW5zZXJ0KDEsICJQQVRIPVwiIiArIFZhcmlhYmxlcy5wbGF5 b25saW51eF9yZXAgKyAiV2luZVZlcnNpb25zLyIgKyB2ZXJzaW9uICsgIi91c3IvYmluLzokUEFU SFwiIikKKy0gICAgICAgICAgICBsaW5lLmluc2VydCgxLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICJMRF9MSUJSQVJZX1BBVEg9XCIiICsgVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICJX aW5lVmVyc2lvbnMvIiArIHZlcnNpb24gKyAiL3Vzci9saWIvOiRMRF9MSUJSQVJZX1BBVEhcIiIp CisrICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zLnNvcnQoa2V5PW5hdHNvcnQubmF0c29y dF9rZXlnZW4oKSkKKysgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMucmV2ZXJzZSgpCisr ICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zID0gYXZhaWxhYmxlX3ZlcnNpb25zWzpdCisg CistICAgIGkgPSAwCistICAgIHdoaWxlIChpIDwgbGVuKGxpbmUpKTogICMgT24gZWNyaXQKKy0g ICAgICAgIGZpY2hpZXJfd3JpdGUud3JpdGUobGluZVtpXSArICJcbiIpCistICAgICAgICBpICs9 IDEKKysgICAgICAgICAgICBmb3IgdmVyc2lvbiBpbiBhdmFpbGFibGVfdmVyc2lvbnM6CisrICAg ICAgICAgICAgICAgIHd4LkNhbGxBZnRlcihzZWxmLm5vdGVib29rLmFkZF9hdmFpbGFibGVfdmVy c2lvbiwgYXJjaGl0ZWN0dXJlLCB2ZXJzaW9uKQorIAorKyAgICBkZWYgb25faW5zdGFsbGVkX3dp bmVfdmVyc2lvbnNfZG93bmxvYWRlZChzZWxmLCB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlKToK KysgICAgICAgIGZvciBhcmNoaXRlY3R1cmUgaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZToK KysgICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMgPSBbXQorKyAgICAgICAgICAgIGZvciB2 ZXJzaW9uIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmVbYXJjaGl0ZWN0dXJlXToKKysgICAg ICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLmFwcGVuZCh2ZXJzaW9uWyJuYW1lIl0pCisg CisrICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLnNvcnQoa2V5PW5hdHNvcnQubmF0c29y dF9rZXlnZW4oKSkKKysgICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMucmV2ZXJzZSgpCisr ICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zID0gaW5zdGFsbGVkX3ZlcnNpb25zWzpdCisg CisrICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gaW5zdGFsbGVkX3ZlcnNpb25zOgorKyAgICAg ICAgICAgICAgICB3eC5DYWxsQWZ0ZXIoc2VsZi5ub3RlYm9vay5hZGRfaW5zdGFsbGVkX3ZlcnNp b24sIGFyY2hpdGVjdHVyZSwgdmVyc2lvbikKKyAKKysgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxm LCBlcnJvcik6CisrICAgICAgICBwcmludChlcnJvcikKKyAKKy1jbGFzcyBXaW5lVmVyc2lvbnNX aW5kb3cod3guRnJhbWUpOgorICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCBpZCwgdGl0 bGUpOgorLSAgICAgICAgc2VsZi5kb3dubG9hZDMyID0gV2luZVZlcnNpb25GZXRjaGVyKCJ4ODYi KQorLSAgICAgICAgaWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAiVHJ1ZSIp OgorLSAgICAgICAgICAgIHNlbGYuZG93bmxvYWQ2NCA9IFdpbmVWZXJzaW9uRmV0Y2hlcigiYW1k NjQiKQorLQorLSAgICAgICAgd3guRnJhbWUuX19pbml0X18oc2VsZiwgcGFyZW50LCAtMSwgdGl0 bGUsIHNpemU9KDc1MCwgNDAwICsgVmFyaWFibGVzLndpbmRvd3NfYWRkX3NpemUpLAorKyAgICAg ICAgd3guRnJhbWUuX19pbml0X18oc2VsZiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHBh cmVudCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIC0xLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgdGl0bGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPSg3NTAsIDQw MCArIFZhcmlhYmxlcy53aW5kb3dzX2FkZF9zaXplKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0eWxlPXd4LkNMT1NFX0JPWCB8IHd4LkNBUFRJT04gfCB3eC5NSU5JTUlaRV9CT1gpCisg ICAgICAgICBzZWxmLnRpbWVyID0gd3guVGltZXIoc2VsZiwgMSkKKyAgICAgICAgIHNlbGYuU2V0 SWNvbih3eC5JY29uKFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAiL2V0Yy9wbGF5b25saW51 eC5wbmciLCB3eC5CSVRNQVBfVFlQRV9BTlkpKQorLSAgICAgICAgIyBzZWxmLnBhbmVsID0gd3gu UGFuZWwoc2VsZiwgLTEpCistCistICAgICAgICBzZWxmLm9uZ2xldHMgPSBXaW5lVmVyc2lvbnNO b3RlYm9vayhzZWxmKQorLSAgICAgICAgIyBzZWxmLnNpemVyID0gd3guQm94U2l6ZXIod3guVkVS VElDQUwpCistICAgICAgICAjIHNlbGYuc2l6ZXIuQWRkKHNlbGYub25nbGV0cywgMTUsIHd4LkVY UEFORHx3eC5BTEwsIDIpCisrICAgICAgICBzZWxmLndpbmVfdmVyc2lvbl9mZXRjaGVyID0gV2lu ZVZlcnNpb25GZXRjaGVyKGZldGNoVXNlck9TKCkpCisgCistICAgICAgICBzZWxmLmdldFZlcnNp b25zKCJ4ODYiKQorLSAgICAgICAgaWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9 PSAiVHJ1ZSIpOgorLSAgICAgICAgICAgIHNlbGYuZ2V0VmVyc2lvbnMoImFtZDY0IikKKy0gICAg ICAgICMgc2VsZi5wYW5lbC5TZXRTaXplcihzZWxmLnNpemVyKQorLSAgICAgICAgIyBzZWxmLnBh bmVsLlNldEF1dG9MYXlvdXQoVHJ1ZSkKKy0KKy0gICAgICAgIHNlbGYub25nbGV0cy5saXN0ZV92 ZXJzaW9ucygpCistICAgICAgICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09 ICJUcnVlIik6CistICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmxpc3RlX3ZlcnNpb25zKCJhbWQ2 NCIpCistICAgICAgICBzZWxmLm9sZHJlbG9hZDMyID0gIiIKKysgICAgICAgIHNlbGYubm90ZWJv b2sgPSBXaW5lVmVyc2lvbnNOb3RlYm9vayhzZWxmKQorKyAgICAgICAgc2VsZi5zaXplciA9IHd4 LkJveFNpemVyKHd4LlZFUlRJQ0FMKQorKyAgICAgICAgc2VsZi5zaXplci5BZGQoc2VsZi5ub3Rl Ym9vaywgMTUsIHd4LkVYUEFORCB8IHd4LkFMTCwgMikKKyAKKy0gICAgICAgIGlmIChvcy5lbnZp cm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRydWUiKToKKy0gICAgICAgICAgICBzZWxmLm9s ZHJlbG9hZDY0ID0gIiIKKysgICAgICAgIGZvciBhdmFpbGFibGVfYXJjaCBpbiBmZXRjaF9zdXBw b3J0ZWRfYXJjaHMoKToKKysgICAgICAgICAgICBzZWxmLm5vdGVib29rLmFkZF9hcmNoaXRlY3R1 cmVfdGFiKGF2YWlsYWJsZV9hcmNoKQorIAorLSAgICAgICAgc2VsZi5vbGR2ZXJzaW9uczMyID0g W10KKysgICAgICAgIHNlbGYubGFzdF9jaGVja3N1bSA9IE5vbmUKKysgICAgICAgIHNlbGYubm90 ZWJvb2sub25faW5zdGFsbF9oYW5kbGVyID0gc2VsZi5pbnN0YWxsX3dpbmVfdmVyc2lvbgorKyAg ICAgICAgc2VsZi5ub3RlYm9vay5vbl9yZW1vdmVfaGFuZGxlciA9IHNlbGYucmVtb3ZlX3dpbmVf dmVyc2lvbgorIAorLSAgICAgICAgaWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9 PSAiVHJ1ZSIpOgorLSAgICAgICAgICAgIHNlbGYub2xkdmVyc2lvbnM2NCA9IFtdCisrICAgICAg ICBzZWxmLkJpbmQod3guRVZUX1RJTUVSLCBzZWxmLmRldGVjdF9jaGFuZ2VzLCBzZWxmLnRpbWVy KQorKyAgICAgICAgc2VsZi50aW1lci5TdGFydCgxMDAwKQorIAorLSAgICAgICAgIyBzZWxmLmJ1 dHRvbiA9IHd4LkJ1dHRvbihzZWxmLnBhbmVsc19idXR0b25zLCB3eC5JRF9DTE9TRSwgXygiQ2xv c2UiKSwgcG9zPSg1MTAsIDUpLCBzaXplPXd4LkRlZmF1bHRTaXplKQorKyAgICBkZWYgcmVmcmVz aChzZWxmKToKKysgICAgICAgIGZvciBhdmFpbGFibGVfYXJjaCBpbiBmZXRjaF9zdXBwb3J0ZWRf YXJjaHMoKToKKysgICAgICAgICAgICBzZWxmLm5vdGVib29rLmNsZWFuX3ZlcnNpb25fb2ZfYXJj aGl0ZWN0dXJlKGF2YWlsYWJsZV9hcmNoKQorIAorLSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9C VVRUT04sIHNlbGYuY2xvc2VhcHAsIGlkPXd4LklEX0NMT1NFKQorLSAgICAgICAgc2VsZi5CaW5k KHd4LkVWVF9DTE9TRSwgc2VsZi5jbG9zZWFwcCkKKy0gICAgICAgIHNlbGYuQmluZCh3eC5FVlRf VFJFRV9TRUxfQ0hBTkdFRCwgc2VsZi51bnNlbGVjdDMyLCBpZD0xMDYpCistICAgICAgICBzZWxm LkJpbmQod3guRVZUX1RSRUVfU0VMX0NIQU5HRUQsIHNlbGYudW5zZWxlY3QzMiwgaWQ9MTA3KQor LSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9CVVRUT04sIHNlbGYuZGVsZXRlMzIsIGlkPTEwOCkK Ky0gICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQlVUVE9OLCBzZWxmLmluc3RhbGwzMiwgaWQ9MTA5 KQorKyAgICAgICAgc2VsZi53aW5lX3ZlcnNpb25fZmV0Y2hlci5mZXRjaF9hbGxfYXZhaWxhYmxl X3dpbmVfdmVyc2lvbihzZWxmLm9uX2F2YWlsYWJsZV93aW5lX3ZlcnNpb25zX2Rvd25sb2FkZWQs IHNlbGYuaGFuZGxlX2Vycm9yKQorKyAgICAgICAgc2VsZi53aW5lX3ZlcnNpb25fZmV0Y2hlci5m ZXRjaF9hbGxfaW5zdGFsbGVkX3dpbmVfdmVyc2lvbihzZWxmLm9uX2luc3RhbGxlZF93aW5lX3Zl cnNpb25zX2Rvd25sb2FkZWQsIHNlbGYuaGFuZGxlX2Vycm9yKQorIAorLSAgICAgICAgc2VsZi5C aW5kKHd4LkVWVF9UUkVFX1NFTF9DSEFOR0VELCBzZWxmLnVuc2VsZWN0NjQsIGlkPTIwNikKKy0g ICAgICAgIHNlbGYuQmluZCh3eC5FVlRfVFJFRV9TRUxfQ0hBTkdFRCwgc2VsZi51bnNlbGVjdDY0 LCBpZD0yMDcpCistICAgICAgICBzZWxmLkJpbmQod3guRVZUX0JVVFRPTiwgc2VsZi5kZWxldGU2 NCwgaWQ9MjA4KQorLSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9CVVRUT04sIHNlbGYuaW5zdGFs bDY0LCBpZD0yMDkpCisrICAgIGRlZiBkZXRlY3RfY2hhbmdlcyhzZWxmLCBldmVudCk6CisrICAg ICAgICBjaGVja3N1bSA9IHNlbGYud2luZV92ZXJzaW9uX2ZldGNoZXIuY2FsY3VsYXRlX2luc3Rh bGxlZF9oYXNoKCkKKyAKKy0gICAgICAgIHNlbGYuQmluZCh3eC5FVlRfVElNRVIsIHNlbGYuQXV0 b1JlbG9hZCwgc2VsZi50aW1lcikKKy0gICAgICAgIHNlbGYudGltZXIuU3RhcnQoMjAwKQorKyAg ICAgICAgaWYgc2VsZi5sYXN0X2NoZWNrc3VtICE9IGNoZWNrc3VtOgorKyAgICAgICAgICAgIHNl bGYubGFzdF9jaGVja3N1bSA9IGNoZWNrc3VtCisrICAgICAgICAgICAgc2VsZi5yZWZyZXNoKCkK KyAKKy0gICAgZGVmIEF1dG9SZWxvYWQoc2VsZiwgZXZlbnQpOgorLSAgICAgICAgcmVsb2FkMzIg PSBvcy5saXN0ZGlyKFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiL3dpbmUvIiArIGZldGNo VXNlck9TKCkgKyAiLXg4NiIpCistICAgICAgICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFU SUJMRSJdID09ICJUcnVlIik6CistICAgICAgICAgICAgcmVsb2FkNjQgPSBvcy5saXN0ZGlyKFZh cmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiL3dpbmUvIiArIGZldGNoVXNlck9TKCkgKyAiLWFt ZDY0IikKKy0gICAgICAgIGlmIChzZWxmLmRvd25sb2FkMzIudGhyZWFkX21lc3NhZ2UgPT0gIk9r IiBvciBzZWxmLmRvd25sb2FkMzIudGhyZWFkX21lc3NhZ2UgPT0gIkVyciIpOgorLSAgICAgICAg ICAgIHNlbGYuV3JpdGVWZXJzaW9uKCkKKy0gICAgICAgICAgICBzZWxmLmRvd25sb2FkMzIudGhy ZWFkX21lc3NhZ2UgPSAiV2FpdCIKKyAKKy0gICAgICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9D T01QQVRJQkxFIl0gPT0gIlRydWUiKToKKy0gICAgICAgICAgICBpZiAoc2VsZi5kb3dubG9hZDY0 LnRocmVhZF9tZXNzYWdlID09ICJPayIgb3Igc2VsZi5kb3dubG9hZDY0LnRocmVhZF9tZXNzYWdl ID09ICJFcnIiKToKKy0gICAgICAgICAgICAgICAgc2VsZi5Xcml0ZVZlcnNpb24oImFtZDY0IikK Ky0gICAgICAgICAgICAgICAgc2VsZi5kb3dubG9hZDY0LnRocmVhZF9tZXNzYWdlID0gIldhaXQi CistCistICAgICAgICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09ICJUcnVl Iik6CistICAgICAgICAgICAgaWYgKHJlbG9hZDY0ICE9IHNlbGYub2xkcmVsb2FkNjQpOgorLSAg ICAgICAgICAgICAgICBzZWxmLmdldFZlcnNpb25zKCJhbWQ2NCIpCistICAgICAgICAgICAgICAg IHNlbGYub2xkcmVsb2FkNjQgPSByZWxvYWQ2NAorLQorLSAgICAgICAgaWYgKHJlbG9hZDMyICE9 IHNlbGYub2xkcmVsb2FkMzIpOgorLSAgICAgICAgICAgIHNlbGYuZ2V0VmVyc2lvbnMoKQorLSAg ICAgICAgICAgIHNlbGYub2xkcmVsb2FkMzIgPSByZWxvYWQzMgorLQorLSAgICAgICAgaWYgKHNl bGYuZG93bmxvYWQzMi52ZXJzaW9ucyAhPSBzZWxmLm9sZHZlcnNpb25zMzIpOgorLSAgICAgICAg ICAgIHNlbGYub2xkdmVyc2lvbnMzMiA9IHNlbGYuZG93bmxvYWQzMi52ZXJzaW9uc1s6XQorLQor LSAgICAgICAgaWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAiVHJ1ZSIpOgor LSAgICAgICAgICAgIGlmIChzZWxmLmRvd25sb2FkNjQudmVyc2lvbnMgIT0gc2VsZi5vbGR2ZXJz aW9uczY0KToKKy0gICAgICAgICAgICAgICAgc2VsZi5vbGR2ZXJzaW9uczY0ID0gc2VsZi5kb3du bG9hZDY0LnZlcnNpb25zWzpdCistCistICAgIGRlZiBzaXplZGlyZWN0b3J5KHNlbGYsIHBhdGgp OgorLSAgICAgICAgc2l6ZSA9IDAKKy0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBv cy53YWxrKHBhdGgpOgorLSAgICAgICAgICAgIGZvciBmaWMgaW4gZmlsZXM6CistICAgICAgICAg ICAgICAgIHNpemUgKz0gb3MucGF0aC5nZXRzaXplKG9zLnBhdGguam9pbihyb290LCBmaWMpKQor LSAgICAgICAgcmV0dXJuIHNpemUKKy0KKy0gICAgZGVmIHVuc2VsZWN0MzIoc2VsZiwgZXZlbnQp OgorLSAgICAgICAgaWYgKGV2ZW50LkdldElkKCkgPT0gMTA2KToKKy0gICAgICAgICAgICBzZWxm Lm9uZ2xldHMuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yWyJ4ODYiXS5VbnNlbGVj dEFsbCgpCistICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9ybVsieDg2Il0uRW5hYmxl KEZhbHNlKQorLSAgICAgICAgICAgIHNlbGYub25nbGV0cy5idXR0b25faW5bIng4NiJdLkVuYWJs ZShUcnVlKQorLSAgICAgICAgaWYgKGV2ZW50LkdldElkKCkgPT0gMTA3KToKKy0gICAgICAgICAg ICBzZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yWyJ4ODYiXS5V bnNlbGVjdEFsbCgpCistICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9ybVsieDg2Il0u RW5hYmxlKFRydWUpCistICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9pblsieDg2Il0u RW5hYmxlKEZhbHNlKQorLQorLSAgICBkZWYgZGVsZXRlMzIoc2VsZiwgZXZlbnQpOgorLSAgICAg ICAgc2VsZi5kZWxldGVfY29tbW9uKGV2ZW50LCAieDg2IikKKy0KKy0gICAgZGVmIGRlbGV0ZV9j b21tb24oc2VsZiwgZXZlbnQsIGFyY2gpOgorLSAgICAgICAgdmVyc2lvbiA9IHNlbGYub25nbGV0 cy5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uR2V0SXRlbVRleHQoCist ICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3Rv clthcmNoXS5HZXRTZWxlY3Rpb24oKSkKKy0gICAgICAgIHVzZWRfdmVyc2lvbiA9IHNlbGYuY2hl Y2tWZXJzaW9uVXNlKGFyY2gpICAjIEdldCB0aGUgc2V0IG9mIHdpbmUgdmVyc2lvbiB1c2VkIGJ5 IHdpbmVwcmVmaXgKKysgICAgZGVmIHJlbW92ZV93aW5lX3ZlcnNpb24oc2VsZiwgYXJjaGl0ZWN0 dXJlLCB2ZXJzaW9uKToKKysgICAgICAgIHVzZWRfdmVyc2lvbiA9IHNlbGYuY2hlY2tWZXJzaW9u VXNlKGFyY2hpdGVjdHVyZSkgICMgR2V0IHRoZSBzZXQgb2Ygd2luZSB2ZXJzaW9uIHVzZWQgYnkg d2luZXByZWZpeAorICAgICAgICAgbWVzc2FnZSA9IF8oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0 byBkZWxldGUgd2luZSB7MH0/JykuZm9ybWF0KHZlcnNpb24pCisgICAgICAgICBpZiB2ZXJzaW9u IGluIHVzZWRfdmVyc2lvbjoKKyAgICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIgKyBfKCdUaGlz IHZlcnNpb24gaXMgQ1VSUkVOVExZIElOIFVTRScpCisgICAgICAgICBpZiAod3guWUVTID09IHd4 Lk1lc3NhZ2VCb3gobWVzc2FnZSwgb3MuZW52aXJvblsiQVBQTElDQVRJT05fVElUTEUiXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5ZRVNfTk8gfCB3eC5J Q09OX1FVRVNUSU9OKSk6CistICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShWYXJpYWJsZXMucGxh eW9ubGludXhfcmVwICsgIi93aW5lLyIgKyBmZXRjaFVzZXJPUygpICsgIi0iICsgYXJjaCArICIv IiArIHZlcnNpb24pCistCistICAgIGRlZiBpbnN0YWxsMzIoc2VsZiwgZXZlbnQpOgorLSAgICAg ICAgc2VsZi5pbnN0YWxsX2NvbW1vbihldmVudCwgIng4NiIpCistCistICAgIGRlZiBpbnN0YWxs X2NvbW1vbihzZWxmLCBldmVudCwgYXJjaCk6CistICAgICAgICBpbnN0YWxsID0gc2VsZi5vbmds ZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5HZXRJdGVtVGV4dChz ZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkdldFNl bGVjdGlvbigpKQorLSAgICAgICAgc3VicHJvY2Vzcy5Qb3BlbihbImJhc2giLCBWYXJpYWJsZXMu cGxheW9ubGludXhfZW52ICsgIi9iYXNoL2luc3RhbGxfd3ZlciIsIGluc3RhbGwsIGFyY2hdKQor KyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICIv d2luZS8iICsgZmV0Y2hVc2VyT1MoKSArICItIiArIGFyY2hpdGVjdHVyZSArICIvIiArIHZlcnNp b24pCisgCistICAgIGRlZiB1bnNlbGVjdDY0KHNlbGYsIGV2ZW50KToKKy0gICAgICAgIGlmIChl dmVudC5HZXRJZCgpID09IDIwNik6CistICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmluc3RhbGxl ZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclsiYW1kNjQiXS5VbnNlbGVjdEFsbCgpCistICAgICAg ICAgICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9ybVsiYW1kNjQiXS5FbmFibGUoRmFsc2UpCistICAg ICAgICAgICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9pblsiYW1kNjQiXS5FbmFibGUoVHJ1ZSkKKy0g ICAgICAgIGlmIChldmVudC5HZXRJZCgpID09IDIwNyk6CistICAgICAgICAgICAgc2VsZi5vbmds ZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclsiYW1kNjQiXS5VbnNlbGVjdEFs bCgpCistICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9ybVsiYW1kNjQiXS5FbmFibGUo VHJ1ZSkKKy0gICAgICAgICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX2luWyJhbWQ2NCJdLkVuYWJs ZShGYWxzZSkKKyAKKy0gICAgZGVmIGRlbGV0ZTY0KHNlbGYsIGV2ZW50KToKKy0gICAgICAgIHNl bGYuZGVsZXRlX2NvbW1vbihldmVudCwgImFtZDY0IikKKysgICAgZGVmIGluc3RhbGxfd2luZV92 ZXJzaW9uKHNlbGYsIGFyY2hpdGVjdHVyZSwgdmVyc2lvbik6CisrICAgICAgICBwcmludCgiJXMg b2YgYXJjaGl0ZWN0dXJlICVzIHdpbGwgYmUgaW5zdGFsbGVkICIgJSAodmVyc2lvbiwgYXJjaGl0 ZWN0dXJlKSkKKysgICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oWyJiYXNoIiwgVmFyaWFibGVzLnBs YXlvbmxpbnV4X2VudiArICIvYmFzaC9pbnN0YWxsX3d2ZXIiLCB2ZXJzaW9uLCBhcmNoaXRlY3R1 cmVdKQorIAorLSAgICBkZWYgaW5zdGFsbDY0KHNlbGYsIGV2ZW50KToKKy0gICAgICAgIHNlbGYu aW5zdGFsbF9jb21tb24oZXZlbnQsICJhbWQ2NCIpCistCistICAgIGRlZiBnZXRWZXJzaW9ucyhz ZWxmLCBhcmNoPSJ4ODYiKToKKy0gICAgICAgIGlmIChhcmNoID09ICJ4ODYiKToKKy0gICAgICAg ICAgICBzZWxmLmRvd25sb2FkMzIudGhyZWFkX21lc3NhZ2UgPSAiZ2V0IgorLSAgICAgICAgaWYg KGFyY2ggPT0gImFtZDY0Iik6CistICAgICAgICAgICAgc2VsZi5kb3dubG9hZDY0LnRocmVhZF9t ZXNzYWdlID0gImdldCIKKyAKKyAgICAgZGVmIGNoZWNrVmVyc2lvblVzZShzZWxmLCBhcmNoKTog ICMgQ2hlY2sgdGhlIHdpbmUgdmVyc2lvbiB1c2UgYnkgd2luZXByZWZpeAorICAgICAgICAgdXNl ZF92ZXJzaW9ucyA9IHNldChbXSkKK0BAIC0yMTgsNjQgKzEzMCw4IEBAIGRlZiBjaGVja1ZlcnNp b25Vc2Uoc2VsZiwgYXJjaCk6ICAjIENoZWNrIHRoZSB3aW5lIHZlcnNpb24gdXNlIGJ5IHdpbmVw cmVmaXgKKyAgICAgICAgICAgICAgICAgdXNlZF92ZXJzaW9ucy5hZGQod2luZV92ZXJzaW9uKQor ICAgICAgICAgcmV0dXJuICh1c2VkX3ZlcnNpb25zKQorIAorLSAgICBkZWYgV3JpdGVWZXJzaW9u KHNlbGYsIGFyY2g9Ing4NiIpOgorLSAgICAgICAgc2VsZi5vbmdsZXRzLmltYWdlc2FwcHNbYXJj aF0uUmVtb3ZlQWxsKCkKKy0gICAgICAgIHNlbGYub25nbGV0cy5pbWFnZXNhcHBzX2lbYXJjaF0u UmVtb3ZlQWxsKCkKKy0gICAgICAgIHNlbGYub25nbGV0cy5hdmFpbGFibGVXaW5lVmVyc2lvbnNU cmVlU2VsZWN0b3JbYXJjaF0uRGVsZXRlQWxsSXRlbXMoKQorLSAgICAgICAgc2VsZi5vbmdsZXRz Lmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5EZWxldGVBbGxJdGVtcygp CistCistICAgICAgICByb290ID0gc2VsZi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1Ry ZWVTZWxlY3RvclthcmNoXS5BZGRSb290KCIiKQorLSAgICAgICAgc2VsZi5pID0gMAorLSAgICAg ICAgaWYgKGFyY2ggPT0gIng4NiIpOgorLSAgICAgICAgICAgIHdoaWxlIChzZWxmLmkgPCBsZW4o c2VsZi5kb3dubG9hZDMyLnZlcnNpb25zKSk6CistICAgICAgICAgICAgICAgIHNlbGYub25nbGV0 cy5pbWFnZXNhcHBzW2FyY2hdLkFkZCgKKy0gICAgICAgICAgICAgICAgICAgIHd4LkJpdG1hcChW YXJpYWJsZXMucGxheW9ubGludXhfZW52ICsgIi9ldGMvaW5zdGFsbC93aW5lLXBhY2thZ2VzLnBu ZyIpKQorLSAgICAgICAgICAgICAgICBzZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZlcnNpb25z VHJlZVNlbGVjdG9yW2FyY2hdLkFwcGVuZEl0ZW0ocm9vdCwgc2VsZi5kb3dubG9hZDMyLnZlcnNp b25zW3NlbGYuaV0sIHNlbGYuaSkKKy0gICAgICAgICAgICAgICAgc2VsZi5pICs9IDEKKy0gICAg ICAgIGlmIChhcmNoID09ICJhbWQ2NCIpOgorLSAgICAgICAgICAgIHdoaWxlIChzZWxmLmkgPCBs ZW4oc2VsZi5kb3dubG9hZDY0LnZlcnNpb25zKSk6CistICAgICAgICAgICAgICAgIHNlbGYub25n bGV0cy5pbWFnZXNhcHBzW2FyY2hdLkFkZCgKKy0gICAgICAgICAgICAgICAgICAgIHd4LkJpdG1h cChWYXJpYWJsZXMucGxheW9ubGludXhfZW52ICsgIi9ldGMvaW5zdGFsbC93aW5lLXBhY2thZ2Vz LnBuZyIpKQorLSAgICAgICAgICAgICAgICBzZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZlcnNp b25zVHJlZVNlbGVjdG9yW2FyY2hdLkFwcGVuZEl0ZW0ocm9vdCwgc2VsZi5kb3dubG9hZDY0LnZl cnNpb25zW3NlbGYuaV0sIHNlbGYuaSkKKy0gICAgICAgICAgICAgICAgc2VsZi5pICs9IDEKKy0K Ky0gICAgICAgIHJvb3QyID0gc2VsZi5vbmdsZXRzLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVT ZWxlY3RvclthcmNoXS5BZGRSb290KCIiKQorLSAgICAgICAgd2ZvbGRlciA9IGZldGNoVXNlck9T KCkgKyAiLSIgKyBhcmNoCistCistICAgICAgICB1c2VkX3ZlcnNpb24gPSBzZWxmLmNoZWNrVmVy c2lvblVzZShhcmNoKSAgIyBHZXQgdGhlIHNldCBvZiB3aW5lIHZlcnNpb24gdXNlZCBieSB3aW5l cHJlZml4CistCistICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMgPSBvcy5saXN0ZGlyKFZhcmlh Ymxlcy5wbGF5b25saW51eF9yZXAgKyAiL3dpbmUvIiArIHdmb2xkZXIpCistICAgICAgICBpbnN0 YWxsZWRfdmVyc2lvbnMuc29ydChrZXk9bmF0c29ydC5uYXRzb3J0X2tleWdlbigpKQorLSAgICAg ICAgaW5zdGFsbGVkX3ZlcnNpb25zLnJldmVyc2UoKQorLSAgICAgICAgc2VsZi5pID0gMAorLSAg ICAgICAgc2VsZi5qID0gMAorLSAgICAgICAgYm9sZEZvbnQgPSBzZWxmLkdldEZvbnQoKQorLSAg ICAgICAgYm9sZEZvbnQuU2V0V2VpZ2h0KHd4LkJPTEQpCistICAgICAgICB3aGlsZSAoc2VsZi5p IDwgbGVuKGluc3RhbGxlZF92ZXJzaW9ucykpOgorLSAgICAgICAgICAgIGlmIChvcy5wYXRoLmlz ZGlyKFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiL3dpbmUvIiArIHdmb2xkZXIgKyAiLyIg KyBpbnN0YWxsZWRfdmVyc2lvbnNbc2VsZi5pXSkpOgorLSAgICAgICAgICAgICAgICBpdGVtSWQg PSBzZWxmLm9uZ2xldHMuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkFw cGVuZEl0ZW0ocm9vdDIsIGluc3RhbGxlZF92ZXJzaW9uc1tzZWxmLmldLCBzZWxmLmopCistICAg ICAgICAgICAgICAgIGlmIChsZW4ob3MubGlzdGRpcigKKy0gICAgICAgICAgICAgICAgICAgICAg ICBWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgIi93aW5lLyIgKyB3Zm9sZGVyICsgIi8iICsg aW5zdGFsbGVkX3ZlcnNpb25zW3NlbGYuaV0pKSA9PSAwKToKKy0gICAgICAgICAgICAgICAgICAg IHNlbGYub25nbGV0cy5pbWFnZXNhcHBzX2lbYXJjaF0uQWRkKAorLSAgICAgICAgICAgICAgICAg ICAgICAgIHd4LkJpdG1hcChWYXJpYWJsZXMucGxheW9ubGludXhfZW52ICsgIi9ldGMvaW5zdGFs bC93aW5lLXdhcm5pbmcucG5nIikpCistICAgICAgICAgICAgICAgIGVsaWYgaW5zdGFsbGVkX3Zl cnNpb25zW3NlbGYuaV0gbm90IGluIHVzZWRfdmVyc2lvbjoKKy0gICAgICAgICAgICAgICAgICAg IHNlbGYub25nbGV0cy5pbWFnZXNhcHBzX2lbYXJjaF0uQWRkKHd4LkJpdG1hcChWYXJpYWJsZXMu cGxheW9ubGludXhfZW52ICsgIi9ldGMvaW5zdGFsbC93aW5lLnBuZyIpKQorLSAgICAgICAgICAg ICAgICBlbHNlOiAgIyBDbGVhcmx5IHNob3cgdGhlIHdpbmUgdmVyc2lvbiBpbiB1c2UKKy0gICAg ICAgICAgICAgICAgICAgIHNlbGYub25nbGV0cy5pbWFnZXNhcHBzX2lbYXJjaF0uQWRkKAorLSAg ICAgICAgICAgICAgICAgICAgICAgIHd4LkJpdG1hcChWYXJpYWJsZXMucGxheW9ubGludXhfZW52 ICsgIi9ldGMvaW5zdGFsbC93aW5lLWluLXVzZS5wbmciKSkKKy0gICAgICAgICAgICAgICAgICAg IHNlbGYub25nbGV0cy5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0 SXRlbUZvbnQoaXRlbUlkLCBib2xkRm9udCkKKy0gICAgICAgICAgICAgICAgc2VsZi5qICs9IDEK Ky0gICAgICAgICAgICBzZWxmLmkgKz0gMQorLSAgICAgICAgdHJ5OgorLSAgICAgICAgICAgIGlm ICh2ZXJzaW9uc1swXSA9PSAiV2luZSBwYWNrYWdlcyB3ZWJzaXRlIGlzIHVuYXZhaWxhYmxlIik6 CistICAgICAgICAgICAgICAgIHNlbGYub25nbGV0cy5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVl U2VsZWN0b3JbYXJjaF0uRW5hYmxlKEZhbHNlKQorLSAgICAgICAgICAgICAgICBzZWxmLm9uZ2xl dHMuaW1hZ2VzYXBwc1thcmNoXS5SZW1vdmVBbGwoKQorLSAgICAgICAgZXhjZXB0OgorLSAgICAg ICAgICAgIHBhc3MKKy0gICAgICAgIHNlbGYub25nbGV0cy5idXR0b25fcm1bYXJjaF0uRW5hYmxl KEZhbHNlKQorLSAgICAgICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9pblthcmNoXS5FbmFibGUoRmFs c2UpCistCistICAgIGRlZiBjbG9zZWFwcChzZWxmLCBldmVudCk6CisrCisrICAgIGRlZiBjbG9z ZShzZWxmLCBldmVudCk6CisgICAgICAgICBzZWxmLmRvd25sb2FkMzIudGhyZWFkX3J1bm5pbmcg PSBGYWxzZQorICAgICAgICAgaWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAi VHJ1ZSIpOgorICAgICAgICAgICAgIHNlbGYuZG93bmxvYWQ2NC50aHJlYWRfcnVubmluZyA9IEZh bHNlCisKK0Zyb20gOTcwNDI1OTIxYTQ5MzRhZDU4NDIzZTYxYzc5OWY0Nzg1ZmNkZThjMiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFF1ZW50aW4gUEFSSVMgPGdpdEBxdWVudGluLnBh cmlzPgorRGF0ZTogU3VuLCAyNCBKYW4gMjAyMSAxNTo0MTozMiArMDEwMAorU3ViamVjdDogW1BB VENIIDE2LzM3XSBSZWFmY3RvcmluZyB3aW5lIHZlcnNpb24gbWFuYWdlciBjb2RlCisKKy0tLQor IGxpYi9zY3JpcHRzLmxpYiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE5ICsrKysrKysr Ky0tLQorIGxpYi93aW5lLmxpYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsr LS0KKyBweXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNUb29scy5weSAgfCAxMCArKysr KystCisgcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zV2luZG93LnB5IHwgMzQgKysr KysrKysrKysrLS0tLS0tLS0tLQorIDQgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwg MjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvc2NyaXB0cy5saWIgYi9saWIvc2Ny aXB0cy5saWIKK2luZGV4IGZiZDM2MzRjNC4uNGZkM2ZiNWM1IDEwMDc1NQorLS0tIGEvbGliL3Nj cmlwdHMubGliCisrKysgYi9saWIvc2NyaXB0cy5saWIKK0BAIC03NywxNyArNzcsMjggQEAgUE9M X1N5c3RlbV9TZXRBcmNoKCkKKyAJIyBVc2FnZTogUE9MX1N5c3RlbV9TZXRBcmNoIChhdXRvfHg4 NnxhbWQ2NCkKKyAJIyBJZiBhbWQ2NCBpcyBzcGVjaWZpZWQgYW5kIG5vdCBzdXBwb3J0ZWQsIHRo ZSBzY3JpcHQgd2lsbCBlbmQKKyAKKy0JIyAkMSA9IEF1dG8sIHg4NiwgYW1kNjQKKysJIyAkMSA9 IEF1dG8sIHg4NiwgYW1kNjQsIHg4Nm9uNjQKKyAJIyAkMiA9IGRldGVjdGVkLCBpZiB0aGUgcmVz dWx0IG9mIGFuIGF1dG9tYXRpYyBzZWxlY3Rpb24KKyAKKy0JaWYgWyAhICIkMSIgPT0gIng4NiIg XSAmJiBbICEgIiQxIiA9PSAiYW1kNjQiIF0KKysJaWYgWyAhICIkMSIgPT0gIng4NiIgXSAmJiBb ICEgIiQxIiA9PSAiYW1kNjQiIF0gJiYgWyAhICIkMSIgPT0gIng4Nm9uNjQiIF0KKyAJdGhlbgor LQkJWyAiJEFNRDY0X0NPTVBBVElCTEUiID09ICJUcnVlIiBdICYmIGV4cG9ydCBQT0xfQVJDSD0i YW1kNjQiIHx8IGV4cG9ydCBQT0xfQVJDSD0ieDg2IgorKwkgIGlmIFtbICIkT1NYX1ZFUlNJT04i IC1nZSAxOSBdXTsgdGhlbgorKwkgICAgZXhwb3J0IFBPTF9BUkNIPSJ4ODZvbjY0IgorKwkgIGVs c2UKKysgIAkJWyAiJEFNRDY0X0NPTVBBVElCTEUiID09ICJUcnVlIiBdICYmIGV4cG9ydCBQT0xf QVJDSD0iYW1kNjQiIHx8IGV4cG9ydCBQT0xfQVJDSD0ieDg2IgorKyAgCWZpCisgCWZpCisrCisg CWlmIFsgIiQxIiA9PSAieDg2IiBdCisgCXRoZW4KKy0JCWV4cG9ydCBQT0xfQVJDSD0ieDg2Igor KwkJW1sgIiRPU1hfVkVSU0lPTiIgLWdlIDE5IF1dICYmIGV4cG9ydCBQT0xfQVJDSD0ieDg2b242 NCIgfHwgZXhwb3J0IFBPTF9BUkNIPSJ4ODYiCisgCWZpCisrCisrCWlmIFsgIiQxIiA9PSAieDg2 b242NCIgXQorKwl0aGVuCisrCQlbWyAiJE9TWF9WRVJTSU9OIiAtZ2UgMTkgXV0gJiYgZXhwb3J0 IFBPTF9BUkNIPSJ4ODZvbjY0IiB8fCBQT0xfRGVidWdfRmF0YWwgIng4Nm9uNjQgaXMgbm90IHN1 cHBvcnRlZCBieSB5b3VyIHN5c3RlbSIKKysJZmkKKysKKyAJaWYgWyAiJDEiID09ICJhbWQ2NCIg XQorIAl0aGVuCisgCQlbICIkQU1ENjRfQ09NUEFUSUJMRSIgPT0gIlRydWUiIF0gJiYgZXhwb3J0 IFBPTF9BUkNIPSJhbWQ2NCIgfHwgUE9MX0RlYnVnX0ZhdGFsICJhbWQ2NCBpcyBub3Qgc3VwcG9y dGVkIGJ5IHlvdXIgc3lzdGVtIgorZGlmZiAtLWdpdCBhL2xpYi93aW5lLmxpYiBiL2xpYi93aW5l LmxpYgoraW5kZXggZDI3ZGUxNTA5Li40MzQ3NWYzMTAgMTAwNzU1CistLS0gYS9saWIvd2luZS5s aWIKKysrKyBiL2xpYi93aW5lLmxpYgorQEAgLTY3OCw3ICs2NzgsNiBAQCBQT0xfV2luZV9JbnN0 YWxsVmVyc2lvbigpIHsKKyAKKyAgICAgV0lORV9BRERSRVNTPSIkKGVjaG8gIiRXSU5FREFUQSIg fCBqcSAnLnVybCcgLXIpIgorICAgICBQT0xfRGVidWdfTWVzc2FnZSAiV2luZSBhZGRyZXNzIGZv dW5kOiAkV0lORV9BRERSRVNTIgorLSAgICAjV0lORV9BRERSRVNTPSQoJFBPTF9XR0VUICIkV0lO RV9TSVRFLyRXSU5FX1NFQ1RJT04ubHN0IiAtTy0gfCBncmVwICI7JHBvbF93aW5ldmVyc2lvbjsi IHwgdGFpbCAtbiAxIHwgY3V0IC1kICI7IiAtZjEpCisgCisgICAgIGlmIFsgIiRXSU5FX0FERFJF U1MiID0gIiIgXSAmJiBbICIkUE9MX0FSQ0giID0gImFtZDY0IiBdOyB0aGVuCisgICAgICAgUE9M X0RlYnVnX1dhcm5pbmcgIldpbmUgJDEgYW1kNjQgZG9lcyBub3QgZXhpc3QuIFN3aXRjaGluZyB0 byB4ODYiCitAQCAtNjk3LDcgKzY5Niw4IEBAIFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uKCkgewor ICAgICAgIGZpCisgCisgICAgICAgY2QgIiRQT0xfVVNFUl9ST09UL3RtcCIKKy0gICAgICBmaWxl bmFtZT0iJFBXRC9QbGF5T25MaW51eC13aW5lLSRwb2xfd2luZXZlcnNpb24tJFBPTF9XSU5FRElT VFJJQlVUSU9OLSRBUkNIX1BSRUZJWC0kc2l0ZV9hcmNoLnRhci5neiIKKysgICAgICBmaWxlbmFt ZT0iJFBXRC8kKGJhc2VuYW1lICIkV0lORV9BRERSRVNTIikiCisrICAgICAgZWNobyAiTG9jYWwg ZmlsZSBuYW1lOiAkZmlsZW5hbWUiCisgICAgICAgUE9MX1NldHVwV2luZG93X2Rvd25sb2FkICIk KGV2YWxfZ2V0dGV4dCAiRG93bmxvYWRpbmcgV2luZTogIikkcG9sX3dpbmV2ZXJzaW9uIiAiJFRJ VExFIiAiJFdJTkVfQUREUkVTUyIKKyAgICAgICBQT0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0X3Np Z25hbCAiJChldmFsX2dldHRleHQgIkRvd25sb2FkaW5nIFdpbmU6ICIpJHBvbF93aW5ldmVyc2lv biIgIiRUSVRMRSIKKyAgICAgICBzbGVlcCAxCitAQCAtNzA2LDcgKzcwNiw3IEBAIFBPTF9XaW5l X0luc3RhbGxWZXJzaW9uKCkgeworICAgICAgIGVjaG8gIlNlcnZlciBzaGExIDogJHNoYTEiCisg ICAgICAgZWNobyAiQ2xpZW50IHNoYTEgOiAkc2hhMV9maWxlIgorIAorLSAgICAgIGlmIFsgISAi JHNoYTEiID0gIiRzaGExX2ZpbGUiIF0gJiYgW1sgJE9TWF9WRVJTSU9OIC1sdCAxOSBdXTsgdGhl bgorKyAgICAgIGlmIFsgISAiJHNoYTEiID0gIiRzaGExX2ZpbGUiIF07IHRoZW4KKyAgICAgICAg IFBPTF9TZXR1cFdpbmRvd19tZXNzYWdlICIkKGV2YWxfZ2V0dGV4dCAnVGhlIGRvd25sb2FkIHNl ZW1zIHRvIGhhdmUgZmFpbGVkLicpIiAiJFRJVExFIgorICAgICAgIGVsc2UKKyAgICAgICAgIFBP TF9TZXR1cFdpbmRvd193YWl0ICIkKGV2YWxfZ2V0dGV4dCAnRXh0cmFjdGluZyBXaW5lLi4uJyki ICIkVElUTEUiCitkaWZmIC0tZ2l0IGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25z VG9vbHMucHkgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNUb29scy5weQoraW5k ZXggNjlkNGNmMmIyLi4zNTkzNTU5OWIgMTAwNjQ0CistLS0gYS9weXRob24vd2luZV92ZXJzaW9u cy9XaW5lVmVyc2lvbnNUb29scy5weQorKysrIGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZl cnNpb25zVG9vbHMucHkKK0BAIC0xLDYgKzEsNSBAQAorIGltcG9ydCBvcworIAorLWZyb20gbGli IGltcG9ydCBWYXJpYWJsZXMKKyAKKyBkZWYgZmV0Y2hVc2VyT1MoKToKKyAgICAgaWYgKG9zLmVu dmlyb25bIlBPTF9PUyJdID09ICJNYWMiKToKK0BAIC0xMCw3ICs5LDE2IEBAIGRlZiBmZXRjaFVz ZXJPUygpOgorICAgICBlbHNlOgorICAgICAgICAgcmV0dXJuICJmcmVlYnNkIgorIAorKworIGRl ZiBhcmNoaXRlY3R1cmVfaXNfc3VwcG9ydGVkKGFyY2hpdGVjdHVyZV9uYW1lKToKKysgICAgaWYg ZmV0Y2hVc2VyT1MoKSA9PSAibGludXgiOgorKyAgICAgICAgcmV0dXJuIGFyY2hpdGVjdHVyZV9u YW1lIGluIFsieDg2IiwgImFtZDY0Il0KKysKKysgICAgaWYgZmV0Y2hVc2VyT1MoKSA9PSAiZGFy d2luIjoKKysgICAgICAgIGlmIGludChvcy5lbnZpcm9uLmdldCgiT1NYX1ZFUlNJT04iLCAwKSkg Pj0gMTk6CisrICAgICAgICAgICAgcmV0dXJuIGFyY2hpdGVjdHVyZV9uYW1lIGluIFsieDg2b242 NCIsICJhbWQ2NCJdCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIHJldHVybiBhcmNoaXRl Y3R1cmVfbmFtZSBpbiBbIng4NiIsICJhbWQ2NCJdCisgICAgIHJldHVybiBUcnVlICMjIEZJWE1F CisgCisgZGVmIGZldGNoX3N1cHBvcnRlZF9hcmNocygpOgorZGlmZiAtLWdpdCBhL3B5dGhvbi93 aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1dpbmRvdy5weSBiL3B5dGhvbi93aW5lX3ZlcnNpb25z L1dpbmVWZXJzaW9uc1dpbmRvdy5weQoraW5kZXggYjc2ZGIwYjI1Li4yZWNhYzNmNTUgMTAwNzU1 CistLS0gYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkKKysrKyBi L3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1dpbmRvdy5weQorQEAgLTM4LDI5ICsz OCwzMSBAQAorIGNsYXNzIFdpbmVWZXJzaW9uc1dpbmRvdyh3eC5GcmFtZSk6CisgICAgIGRlZiBv bl9hdmFpbGFibGVfd2luZV92ZXJzaW9uc19kb3dubG9hZGVkKHNlbGYsIHZlcnNpb25zX3Blcl9h cmNoaXRlY3R1cmUpOgorICAgICAgICAgZm9yIGFyY2hpdGVjdHVyZSBpbiB2ZXJzaW9uc19wZXJf YXJjaGl0ZWN0dXJlOgorLSAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucyA9IFtdCistICAg ICAgICAgICAgZm9yIHZlcnNpb24gaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZVthcmNoaXRl Y3R1cmVdOgorLSAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMuYXBwZW5kKHZlcnNp b25bIm5hbWUiXSkKKysgICAgICAgICAgICBpZiBhcmNoaXRlY3R1cmUgaW4gZmV0Y2hfc3VwcG9y dGVkX2FyY2hzKCk6CisrICAgICAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucyA9IFtdCisr ICAgICAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmVb YXJjaGl0ZWN0dXJlXToKKysgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucy5h cHBlbmQodmVyc2lvblsibmFtZSJdKQorIAorLSAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9u cy5zb3J0KGtleT1uYXRzb3J0Lm5hdHNvcnRfa2V5Z2VuKCkpCistICAgICAgICAgICAgYXZhaWxh YmxlX3ZlcnNpb25zLnJldmVyc2UoKQorLSAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucyA9 IGF2YWlsYWJsZV92ZXJzaW9uc1s6XQorKyAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lv bnMuc29ydChrZXk9bmF0c29ydC5uYXRzb3J0X2tleWdlbigpKQorKyAgICAgICAgICAgICAgICBh dmFpbGFibGVfdmVyc2lvbnMucmV2ZXJzZSgpCisrICAgICAgICAgICAgICAgIGF2YWlsYWJsZV92 ZXJzaW9ucyA9IGF2YWlsYWJsZV92ZXJzaW9uc1s6XQorIAorLSAgICAgICAgICAgIGZvciB2ZXJz aW9uIGluIGF2YWlsYWJsZV92ZXJzaW9uczoKKy0gICAgICAgICAgICAgICAgd3guQ2FsbEFmdGVy KHNlbGYubm90ZWJvb2suYWRkX2F2YWlsYWJsZV92ZXJzaW9uLCBhcmNoaXRlY3R1cmUsIHZlcnNp b24pCisrICAgICAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIGF2YWlsYWJsZV92ZXJzaW9uczoK KysgICAgICAgICAgICAgICAgICAgIHd4LkNhbGxBZnRlcihzZWxmLm5vdGVib29rLmFkZF9hdmFp bGFibGVfdmVyc2lvbiwgYXJjaGl0ZWN0dXJlLCB2ZXJzaW9uKQorIAorICAgICBkZWYgb25faW5z dGFsbGVkX3dpbmVfdmVyc2lvbnNfZG93bmxvYWRlZChzZWxmLCB2ZXJzaW9uc19wZXJfYXJjaGl0 ZWN0dXJlKToKKyAgICAgICAgIGZvciBhcmNoaXRlY3R1cmUgaW4gdmVyc2lvbnNfcGVyX2FyY2hp dGVjdHVyZToKKy0gICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMgPSBbXQorLSAgICAgICAg ICAgIGZvciB2ZXJzaW9uIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmVbYXJjaGl0ZWN0dXJl XToKKy0gICAgICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLmFwcGVuZCh2ZXJzaW9uWyJu YW1lIl0pCisrICAgICAgICAgICAgaWYgYXJjaGl0ZWN0dXJlIGluIGZldGNoX3N1cHBvcnRlZF9h cmNocygpOgorKyAgICAgICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMgPSBbXQorKyAgICAg ICAgICAgICAgICBmb3IgdmVyc2lvbiBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlW2FyY2hp dGVjdHVyZV06CisrICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMuYXBwZW5k KHZlcnNpb25bIm5hbWUiXSkKKyAKKy0gICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMuc29y dChrZXk9bmF0c29ydC5uYXRzb3J0X2tleWdlbigpKQorLSAgICAgICAgICAgIGluc3RhbGxlZF92 ZXJzaW9ucy5yZXZlcnNlKCkKKy0gICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMgPSBpbnN0 YWxsZWRfdmVyc2lvbnNbOl0KKysgICAgICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLnNv cnQoa2V5PW5hdHNvcnQubmF0c29ydF9rZXlnZW4oKSkKKysgICAgICAgICAgICAgICAgaW5zdGFs bGVkX3ZlcnNpb25zLnJldmVyc2UoKQorKyAgICAgICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lv bnMgPSBpbnN0YWxsZWRfdmVyc2lvbnNbOl0KKyAKKy0gICAgICAgICAgICBmb3IgdmVyc2lvbiBp biBpbnN0YWxsZWRfdmVyc2lvbnM6CistICAgICAgICAgICAgICAgIHd4LkNhbGxBZnRlcihzZWxm Lm5vdGVib29rLmFkZF9pbnN0YWxsZWRfdmVyc2lvbiwgYXJjaGl0ZWN0dXJlLCB2ZXJzaW9uKQor KyAgICAgICAgICAgICAgICBmb3IgdmVyc2lvbiBpbiBpbnN0YWxsZWRfdmVyc2lvbnM6CisrICAg ICAgICAgICAgICAgICAgICB3eC5DYWxsQWZ0ZXIoc2VsZi5ub3RlYm9vay5hZGRfaW5zdGFsbGVk X3ZlcnNpb24sIGFyY2hpdGVjdHVyZSwgdmVyc2lvbikKKyAKKyAgICAgZGVmIGhhbmRsZV9lcnJv cihzZWxmLCBlcnJvcik6CisgICAgICAgICBwcmludChlcnJvcikKKworRnJvbSA3NDk5MTdiMGQw YzZkNDM5ZjcxMDA0ZmRkOWJjNTY5OTJiYjkxZjE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogUXVlbnRpbiBQQVJJUyA8Z2l0QHF1ZW50aW4ucGFyaXM+CitEYXRlOiBTdW4sIDI0IEph biAyMDIxIDE1OjQ2OjQ0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMTcvMzddIFJlYWZjdG9yaW5n IHdpbmUgdmVyc2lvbiBtYW5hZ2VyIGNvZGUKKworLS0tCisgQ0hBTkdFTE9HLm1kIHwgMyArKysK KyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9DSEFOR0VM T0cubWQgYi9DSEFOR0VMT0cubWQKK2luZGV4IGNkZTJkODJjNC4uNzM1ZjYxMTRhIDEwMDY0NAor LS0tIGEvQ0hBTkdFTE9HLm1kCisrKysgYi9DSEFOR0VMT0cubWQKK0BAIC0xLDMgKzEsNiBAQAor KyMgNC40LjIgCisrKiBSZWZhY3RvcmVkIHdpbmUgdmVyc2lvbiB3aW5kb3cgCisrCisgIyA0LjQK KyAqIFB5dGhvbiAzIHN1cHBvcnQgCisgCisKK0Zyb20gYzU5ZDAzYjU3MTcxNDNiNDEwMmI3MDE1 OWEwZDIxODUwNDIyY2U2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNtMGszciA8 MTE1NTg0OTkrNW0wazNyQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IFRodSwgMyBG ZWIgMjAyMiAyMjo0MTowOSAtMDMwMAorU3ViamVjdDogW1BBVENIIDE4LzM3XSBVcGRhdGUgcGxh eW9ubGludXgucHkKKworQXZvaWQgc3RyaW5ncyBpbiB2ZXJzaW9uMSBhbmQgdmVyc2lvbjIgdmFy aWFibGVzIHdpdGggaXNudW1lcmljKCkgZnVuY3Rpb24sIGFuZCBoYW5kbGluZyBlcnJvciB3aXRo IHRyeS1leGNlcHQgYmxvY2suCistLS0KKyBweXRob24vbGliL3BsYXlvbmxpbnV4LnB5IHwgMTAg KysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCisKK2RpZmYgLS1naXQgYS9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5IGIvcHl0aG9uL2xp Yi9wbGF5b25saW51eC5weQoraW5kZXggM2U4N2Q5MGFhLi45NjA3MDdkOTEgMTAwNzU1CistLS0g YS9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5CisrKysgYi9weXRob24vbGliL3BsYXlvbmxpbnV4 LnB5CitAQCAtMjc4LDExICsyNzgsMTcgQEAgZGVmIFZlcnNpb25Mb3dlcih2ZXJzaW9uMSwgdmVy c2lvbjIpOgorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAKKy0g ICAgdmVyc2lvbjEgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24xWzBdLnNwbGl0 KCIuIilbOjNdIF0KKysgICAgdHJ5OgorKyAgICAgICAgdmVyc2lvbjEgPSBbIGludChkaWdpdCkg Zm9yIGRpZ2l0IGluIHZlcnNpb24xWzBdLnNwbGl0KCIuIikgXQorKyAgICBleGNlcHQgVmFsdWVF cnJvcjoKKysgICAgICAgIHZlcnNpb24xID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJz aW9uMVswXS5zcGxpdCgiLiIpIGlmIGRpZ2l0LmlzbnVtZXJpYygpIF0KKyAgICAgd2hpbGUgbGVu KHZlcnNpb24xKSA8IDM6CisgICAgICAgICB2ZXJzaW9uMS5hcHBlbmQoMCkKKyAKKy0gICAgdmVy c2lvbjIgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24yWzBdLnNwbGl0KCIuIilb OjNdIF0KKysgICAgdHJ5OgorKyAgICAgICAgdmVyc2lvbjIgPSBbIGludChkaWdpdCkgZm9yIGRp Z2l0IGluIHZlcnNpb24yWzBdLnNwbGl0KCIuIikgXQorKyAgICBleGNlcHQgVmFsdWVFcnJvcjoK KysgICAgICAgIHZlcnNpb24yID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMlsw XS5zcGxpdCgiLiIpIGlmIGRpZ2l0LmlzbnVtZXJpYygpIF0KKyAgICAgd2hpbGUgbGVuKHZlcnNp b24yKSA8IDM6CisgICAgICAgICB2ZXJzaW9uMi5hcHBlbmQoMCkKKyAKKworRnJvbSAyMTZjNDQ4 OWFkNDE1NDZjNjE1ZmNkNTczMmQ2YzljNWM4ZjMxNTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQorRnJvbTogU20wazNyIDwxMTU1ODQ5OSs1bTBrM3JAdXNlcnMubm9yZXBseS5naXRodWIuY29t PgorRGF0ZTogVGh1LCAzIEZlYiAyMDIyIDIyOjQ3OjU0IC0wMzAwCitTdWJqZWN0OiBbUEFUQ0gg MTkvMzddIFVwZGF0ZSBwbGF5b25saW51eC5weQorCitXb3JrYXJvdW5kIGZvciBub24tbnVtZXJp YyBjaGFyYWN0ZXJzIGluIGxpc3QgdmVyc2lvbjEgYW5kIHZlcnNpb24yIHdpdGhvdXQgZXJyb3Ig aGFuZGxpbmcgdG8ga2VlcCBzaW1wbGUuCistLS0KKyBweXRob24vbGliL3BsYXlvbmxpbnV4LnB5 IHwgMTAgKystLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5IGIvcHl0 aG9uL2xpYi9wbGF5b25saW51eC5weQoraW5kZXggOTYwNzA3ZDkxLi5mYTliOTBmYjkgMTAwNzU1 CistLS0gYS9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5CisrKysgYi9weXRob24vbGliL3BsYXlv bmxpbnV4LnB5CitAQCAtMjc4LDE3ICsyNzgsMTEgQEAgZGVmIFZlcnNpb25Mb3dlcih2ZXJzaW9u MSwgdmVyc2lvbjIpOgorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICByZXR1cm4gRmFsc2UK KyAKKy0gICAgdHJ5OgorLSAgICAgICAgdmVyc2lvbjEgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0 IGluIHZlcnNpb24xWzBdLnNwbGl0KCIuIikgXQorLSAgICBleGNlcHQgVmFsdWVFcnJvcjoKKy0g ICAgICAgIHZlcnNpb24xID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMVswXS5z cGxpdCgiLiIpIGlmIGRpZ2l0LmlzbnVtZXJpYygpIF0KKysgICAgdmVyc2lvbjEgPSBbIGludChk aWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24xWzBdLnNwbGl0KCIuIikgaWYgZGlnaXQuaXNudW1l cmljKCkgXQorICAgICB3aGlsZSBsZW4odmVyc2lvbjEpIDwgMzoKKyAgICAgICAgIHZlcnNpb24x LmFwcGVuZCgwKQorIAorLSAgICB0cnk6CistICAgICAgICB2ZXJzaW9uMiA9IFsgaW50KGRpZ2l0 KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjJbMF0uc3BsaXQoIi4iKSBdCistICAgIGV4Y2VwdCBWYWx1 ZUVycm9yOgorLSAgICAgICAgdmVyc2lvbjIgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZl cnNpb24yWzBdLnNwbGl0KCIuIikgaWYgZGlnaXQuaXNudW1lcmljKCkgXQorKyAgICB2ZXJzaW9u MiA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjJbMF0uc3BsaXQoIi4iKSBpZiBk aWdpdC5pc251bWVyaWMoKSBdCisgICAgIHdoaWxlIGxlbih2ZXJzaW9uMikgPCAzOgorICAgICAg ICAgdmVyc2lvbjIuYXBwZW5kKDApCisgCisKK0Zyb20gNGUzMjM1YTViYjliMmRmNjFmMjg3Zjkz MjY4NTY1NDVmOWU1MzVhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVkdWFyZG8g TW96YXJ0IGRlIE9saXZlaXJhCisgPDI5NzQ4OTUrZWR1YXJkb21vemFydEB1c2Vycy5ub3JlcGx5 LmdpdGh1Yi5jb20+CitEYXRlOiBUaHUsIDEyIE1heSAyMDIyIDA5OjE1OjU5IC0wMzAwCitTdWJq ZWN0OiBbUEFUQ0ggMjAvMzddIEZpeCBYUXVhcnR6IFVSTAorCitYUXVhcnR6IGZhaWxzIHRvIGlu c3RhbGwgaW50byBtYWNPUworLS0tCisgYmFzaC9zdGFydHVwX2FmdGVyX3NlcnZlciB8IDIgKy0K KyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAt LWdpdCBhL2Jhc2gvc3RhcnR1cF9hZnRlcl9zZXJ2ZXIgYi9iYXNoL3N0YXJ0dXBfYWZ0ZXJfc2Vy dmVyCitpbmRleCBhYTA3YTRlZTkuLmU3NDg2MzM5YyAxMDA3NTUKKy0tLSBhL2Jhc2gvc3RhcnR1 cF9hZnRlcl9zZXJ2ZXIKKysrKyBiL2Jhc2gvc3RhcnR1cF9hZnRlcl9zZXJ2ZXIKK0BAIC0zMCw3 ICszMCw3IEBAIGV4cG9ydCBYUVVBUlRaX1ZFUlNJT049IjIuNy4xMSIKKyBpbnN0YWxsX3gxMSgp CisgeworIAorLQlYUXVhcnR6VXJsPSJodHRwOi8vZGwuYmludHJheS5jb20veHF1YXJ0ei9kb3du bG9hZHMvWFF1YXJ0ei0kWFFVQVJUWl9WRVJTSU9OLmRtZyIKKysJWFF1YXJ0elVybD0iaHR0cHM6 Ly9naXRodWIuY29tL1hRdWFydHovWFF1YXJ0ei9yZWxlYXNlcy9kb3dubG9hZC9YUXVhcnR6LSRY UVVBUlRaX1ZFUlNJT04vWFF1YXJ0ei0kWFFVQVJUWl9WRVJTSU9OLmRtZyIKKyAJRmlsZVByZWZp eD0iWFF1YXJ0eiIKKyAKKyAJU1RFUF9USVRMRT0iWFF1YXJ0eiIKKworRnJvbSA4ZmYwMWYzNDE5 MjVhMzY3M2Q0YTFkZTg1MTJkOWUyMzcyYTRkOWUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogRWR1YXJkbyBNb3phcnQgZGUgT2xpdmVpcmEKKyA8Mjk3NDg5NStlZHVhcmRvbW96YXJ0 QHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IFRodSwgMTIgTWF5IDIwMjIgMDk6NTM6 MDkgLTAzMDAKK1N1YmplY3Q6IFtQQVRDSCAyMS8zN10gVXBkYXRlIGxuZy5weQorCitGaXggcGxh eW9ubGludXgtYmFzaCBleGVjIG9uIG1hY09TIE1vbnRlcmV5CistLS0KKyBweXRob24vbGliL2xu Zy5weSB8IDE1ICsrKysrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMo KyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9weXRob24vbGliL2xuZy5weSBiL3B5 dGhvbi9saWIvbG5nLnB5CitpbmRleCBhMzkwZDkyMGIuLjVmYjE2MWMzYyAxMDA3NTUKKy0tLSBh L3B5dGhvbi9saWIvbG5nLnB5CisrKysgYi9weXRob24vbGliL2xuZy5weQorQEAgLTE4LDEyICsx OCwxNSBAQCBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgbGFuZ3VhZ2VzID0gb3Mu bGlzdGRpcihWYXJpYWJsZXMucGxheW9ubGludXhfZW52KycvbGFuZy9sb2NhbGUnKQorIAorICAg ICAgICAgaWYob3MuZW52aXJvblsiUE9MX09TIl0gPT0gIk1hYyIpOgorLSAgICAgICAgICAgIHd4 TG9jYWxlID0gd3guTG9jYWxlKCkuRmluZExhbmd1YWdlSW5mbyhvcy5lbnZpcm9uWyJSTEFORyJd KQorLQorLSAgICAgICAgICAgIGlmIHd4TG9jYWxlIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAg ICAgICBsYW5naWQgPSB3eC5Mb2NhbGUoKS5GaW5kTGFuZ3VhZ2VJbmZvKG9zLmVudmlyb25bIlJM QU5HIl0pLkxhbmd1YWdlCistICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgbGFu Z2lkID0gd3guTEFOR1VBR0VfREVGQVVMVAorKyAgICAgICAgICAgIHRyeToKKysgICAgICAgICAg ICAgICAgd3hMb2NhbGUgPSB3eC5Mb2NhbGUoKS5GaW5kTGFuZ3VhZ2VJbmZvKG9zLmVudmlyb25b IlJMQU5HIl0pCisrCisrICAgICAgICAgICAgICAgIGlmIHd4TG9jYWxlIGlzIG5vdCBOb25lOgor KyAgICAgICAgICAgICAgICAgICAgbGFuZ2lkID0gd3guTG9jYWxlKCkuRmluZExhbmd1YWdlSW5m byhvcy5lbnZpcm9uWyJSTEFORyJdKS5MYW5ndWFnZQorKyAgICAgICAgICAgICAgICBlbHNlOgor KyAgICAgICAgICAgICAgICAgICAgbGFuZ2lkID0gd3guTEFOR1VBR0VfREVGQVVMVAorKyAgICAg ICAgICAgIGV4Y2VwdDoKKysgICAgICAgICAgICAgICAgbGFuZ2lkID0gd3guTEFOR1VBR0VfREVG QVVMVCAKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgbGFuZ2lkID0gd3guTEFOR1VBR0Vf REVGQVVMVAorIAorCitGcm9tIDlhMjdjOGY0ZjFjMTQ1ODM4OGFlMDQ2OGNjZGJkNzU4MTY5YThl ZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFZHVhcmRvIE1vemFydCBkZSBPbGl2 ZWlyYQorIDwyOTc0ODk1K2VkdWFyZG9tb3phcnRAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgor RGF0ZTogVGh1LCAxMiBNYXkgMjAyMiAxNTo1Mzo1NCAtMDMwMAorU3ViamVjdDogW1BBVENIIDIy LzM3XSBVcGRhdGUgTWFrZWZpbGUgdG8gbWFjT1MKKworTm93IG1hY09TIGNhbiBhbHNvIHJ1biB0 aGUgbWFrZSBjb21tYW5kCistLS0KKyBNYWtlZmlsZSB8IDE4ICsrKysrKysrKysrKysrLS0tLQor IDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggYThkODFiODkyLi4xMTVkMjY5OGMg MTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0yMCw5ICsyMCwxOCBA QAorICMgREVTVERJUiAtLSBXaGVyZSB5b3Ugd2FudCB0byBpbnN0YWxsCisgIworIAorLUNGTEFH UyA/PSAtTzIKKytpZmVxICgkKHNoZWxsIHVuYW1lIC1zKSxEYXJ3aW4pCisrICAgIENGTEFHUyA/ PSAtTzIgLUkvb3B0L1gxMS9pbmNsdWRlCisrICAgIExGTEFHUyA/PSAtTC9vcHQvWDExL2xpYiAt bEdMIC1sWDExCisrICAgIFBZVEhPTiA9IHB5dGhvbjIuNyAtbSBweV9jb21waWxlCisrICAgIFNF RCA9IHNlZCAtaSAnJyAtZQorK2Vsc2UKKysgICAgQ0ZMQUdTID89IC1PMiAKKysgICAgQ0ZMQUdT ID89IC1sR0wgLWxYMTEKKysgICAgUFlUSE9OID0gcHl0aG9uMiAtbSBweV9jb21waWxlCisrICAg IFNFRCA9IHNlZCAtaQorK2VuZGlmCisgQ0MgPSBnY2MgJChDRkxBR1MpCistUFlUSE9OID0gcHl0 aG9uMiAtbSBweV9jb21waWxlCisgR1pJUCA9IGd6aXAKKyBTSEVMTCA6PSAvYmluL2Jhc2gKKyAK K0BAIC00NSwxNCArNTQsMTQgQEAgY2xlYW46CisgCSQoUk0pIC4vQ2hhbmdlTG9nCisgCisgYnVp bGQ6CistCSQoQ0MpIC4vc3JjL2NoZWNrX2RpcmVjdF9yZW5kZXJpbmcuYyAtbyAuL2Jpbi9wbGF5 b25saW51eC1jaGVja19kZCAtbEdMIC1sWDExCisrCSQoQ0MpIC4vc3JjL2NoZWNrX2RpcmVjdF9y ZW5kZXJpbmcuYyAtbyAuL2Jpbi9wbGF5b25saW51eC1jaGVja19kZCAkKExGTEFHUykKKyAJJChQ WVRIT04pIC4vcHl0aG9uLyoucHkKKyAJJChQWVRIT04pIC4vcHl0aG9uL2xpYi8qLnB5CisgCWVj aG8gLWUgJyMhL2Jpbi9iYXNoXG5HREtfQkFDS0VORD14MTEgJHtzaGFyZWRpcn0vcGxheW9ubGlu dXgvcGxheW9ubGludXggIiQkQCJcbmV4aXQgMCcgPiAuL2Jpbi9wbGF5b25saW51eAorIAllY2hv IC1lICcjIS9iaW4vYmFzaFxuJHtzaGFyZWRpcn0vcGxheW9ubGludXgvcGxheW9ubGludXgtcGtn ICIkJEAiXG5leGl0IDAnID4gLi9iaW4vcGxheW9ubGludXgtcGtnCisgCWNobW9kICt4IC4vYmlu L3BsYXlvbmxpbnV4CisgCWNobW9kICt4IC4vYmluL3BsYXlvbmxpbnV4LXBrZworLQlzZWQgLWkg J3MvXChcWyJERUJJQU5fUEFDS0FHRSJcXVxzKj1ccypcKSJGQUxTRSIvXDEiVFJVRSIvJyBcCisr CSQoU0VEKSAncy9cKFxbIkRFQklBTl9QQUNLQUdFIlxdXHMqPVxzKlwpIkZBTFNFIi9cMSJUUlVF Ii8nIFwKKyAJCS4vcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkKKyAKKyBpbnN0YWxsOgorQEAgLTgx LDMgKzkwLDQgQEAgY2hhbmdlbG9nOgorIAkoR0lUX0RJUj0uZ2l0IGdpdCBsb2cgPiAuY2hhbmdl bG9nLnRtcCAmJiBtdiAuY2hhbmdlbG9nLnRtcCBDaGFuZ2VMb2c7IHJtIC1mIC5jaGFuZ2Vsb2cu dG1wKSB8fCAodG91Y2ggQ2hhbmdlTG9nOyBlY2hvICdnaXQgZGlyZWN0b3J5IG5vdCBmb3VuZDog aW5zdGFsbGluZyBwb3NzaWJseSBlbXB0eSBjaGFuZ2Vsb2cuJyA+JjIpCisgCisgLlBIT05ZOiBh bGwgY2xlYW4gYnVpbGQgaW5zdGFsbCBjaGFuZ2Vsb2cKKysKKworRnJvbSA1YzczZWQxZWUyM2Jh MmU1MTcwMTA5NGUzNjZmNWNiY2VkMWZlYmI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJv bTogTWF0aGlldSBQYXJlbnQgPG1hdGgucGFyZW50QGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjAg RGVjIDIwMjIgMTA6MjA6MjUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyMy8zN10gVXNlIG1vcmUg cG93ZXJmdWwgZGlzY3JldGUgR1BVIGlmIGF2YWlsYWJsZQorCitTZWUgaHR0cHM6Ly9zcGVjaWZp Y2F0aW9ucy5mcmVlZGVza3RvcC5vcmcvZGVza3RvcC1lbnRyeS1zcGVjL2xhdGVzdC9hcjAxczA2 Lmh0bWwKKy0tLQorIGV0Yy9QbGF5T25MaW51eC5kZXNrdG9wIHwgMSArCisgMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9ldGMvUGxheU9uTGludXguZGVza3Rv cCBiL2V0Yy9QbGF5T25MaW51eC5kZXNrdG9wCitpbmRleCA0OTAxMDhjMTEuLjUzY2Q0MmY5NCAx MDA2NDQKKy0tLSBhL2V0Yy9QbGF5T25MaW51eC5kZXNrdG9wCisrKysgYi9ldGMvUGxheU9uTGlu dXguZGVza3RvcAorQEAgLTYsMyArNiw0IEBAIFR5cGU9QXBwbGljYXRpb24KKyBFeGVjPXBsYXlv bmxpbnV4ICVGCisgSWNvbj1wbGF5b25saW51eAorIENhdGVnb3JpZXM9VXRpbGl0eTtFbXVsYXRv cjsKKytQcmVmZXJzTm9uRGVmYXVsdEdQVT10cnVlCisKK0Zyb20gNzNmZjFkZjkyNGMxYjdiZGM0 ZTkzYTVhMzI4YjI4NzA5N2Q4Y2NjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGFu ZHJleSA8MzI5ODgzMDUrdm9zdG9rMDFAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgorRGF0ZTog U2F0LCAzMSBEZWMgMjAyMiAyMzoxNjoxOCArMDMwMAorU3ViamVjdDogW1BBVENIIDI0LzM3XSBC VUcgRklYOiBDRkxBR1MgcmVuYW1lZCB0byBMRkxBR1MgaW4gTWFrZWZpbGUuCisKKy0tLQorIE1h a2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggMTE1ZDI2OThj Li40YzA4YTk2ZmUgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0y Nyw3ICsyNyw3IEBAIGlmZXEgKCQoc2hlbGwgdW5hbWUgLXMpLERhcndpbikKKyAgICAgU0VEID0g c2VkIC1pICcnIC1lCisgZWxzZQorICAgICBDRkxBR1MgPz0gLU8yIAorLSAgICBDRkxBR1MgPz0g LWxHTCAtbFgxMQorKyAgICBMRkxBR1MgPz0gLWxHTCAtbFgxMQorICAgICBQWVRIT04gPSBweXRo b24yIC1tIHB5X2NvbXBpbGUKKyAgICAgU0VEID0gc2VkIC1pCisgZW5kaWYKKworRnJvbSBkNmNk N2ZmNjkyMjhkYTg4YWQ5MDc0M2M3ZDY1MjI4MTk0OTM4MDM2IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogTnJlemlub3JuIDxucmV6aW5vcm5AZ21haWwuY29tPgorRGF0ZTogTW9uLCAx OSBKdW4gMjAyMyAwNzo0OToyMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDI1LzM3XSBGaXggTWFj IFdJTkUgVmVyc2lvbkZldGNoZXIgYW5kIGJ1bXAgdmVyc2lvbmluZyB0bworIDQuNC4zCisKKy0t LQorIHB5dGhvbi9saWIvVmFyaWFibGVzLnB5ICAgICAgICAgICAgICAgICAgICAgfCA1ICsrKy0t CisgcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zRmV0Y2hlci5weSB8IDcgKysrKyst LQorIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitk aWZmIC0tZ2l0IGEvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkgYi9weXRob24vbGliL1ZhcmlhYmxl cy5weQoraW5kZXggZGJlMmFiNzE5Li4yNmUyMzRhNTMgMTAwNzU1CistLS0gYS9weXRob24vbGli L1ZhcmlhYmxlcy5weQorKysrIGIvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkKK0BAIC0xNyw3ICsx Nyw3IEBACisgb3MuZW52aXJvblsiUE9MX1BPUlQiXSA9ICIwIgorIG9zLmVudmlyb25bIlBMQVlP TkxJTlVYIl0gPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKyIv Li4vLi4vLi4vIikKKyBvcy5lbnZpcm9uWyJTSVRFIl0gPSAiaHR0cDovL3JlcG9zaXRvcnkucGxh eW9ubGludXguY29tIgorLW9zLmVudmlyb25bIlZFUlNJT04iXSA9ICI0LjQuMSIKKytvcy5lbnZp cm9uWyJWRVJTSU9OIl0gPSAiNC40LjMiCisgb3MuZW52aXJvblsiUE9MX0lEIl0gPSBzdHIocmFu ZG9tLnJhbmRpbnQoMSwgMTAwMDAwMDAwKSkKKyBvcy5lbnZpcm9uWyJHRUNLT19TSVRFIl0gPSAi aHR0cDovL3dpbmUucGxheW9ubGludXguY29tL2dlY2tvIgorIG9zLmVudmlyb25bIk1PTk9fU0lU RSJdID0gImh0dHA6Ly93aW5lLnBsYXlvbmxpbnV4LmNvbS9tb25vIgorQEAgLTM5LDYgKzM5LDcg QEAKKyAgICAgd2luZG93c19hZGRfcGxheW9ubWFjID0gMQorICAgICB3aWRnZXRfYm9yZGVycyA9 IHd4LlNJTVBMRV9CT1JERVIKKyAgICAgb3NfbmFtZSA9ICJkYXJ3aW4iCisrICAgIGNhX2ZpbGUg PSAnLi4vLi4vbGliL3B5dGhvbjMuOC9jZXJ0aWZpL2NhY2VydC5wZW0nIAorICAgICBvcy5lbnZp cm9uWyJQT0xfV0dFVCJdID0gIndnZXQgLS1wcmVmZXItZmFtaWx5PUlQdjQgLXEgLS1uby1jaGVj ay1jZXJ0aWZpY2F0ZSIKKyAKKyAjIFZhcmlhYmxlcyBQbGF5T25MaW51eAorQEAgLTExOSw3ICsx MjAsNyBAQAorIAorICAgICBvcy5lbnZpcm9uWyJQQVRIIl0gPSBvcy5lbnZpcm9uWyJQTEFZT05M SU5VWCJdKyIvLi4vdW5peC93aW5lL2JpbjoiICsgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsi Ly4uL3VuaXgvaW1hZ2VfbWFnaWNrL2JpbjoiICsgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsi Ly4uL3VuaXgvdG9vbHMvYmluLzoiICsgb3MuZW52aXJvblsiUEFUSCJdCisgCistICAgIG9zLmVu dmlyb25bIldSSVRFX0xEIl0gPSBvcy5lbnZpcm9uWyJMRF9MSUJSQVJZX1BBVEgiXQorKyAgICBv cy5lbnZpcm9uWyJXUklURV9MRCJdID0gb3MuZW52aXJvblsiTERfTElCUkFSWV9QQVRIIl0gKyAi OiIgKyBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC93aW5lL2xpYiIKKyAgICAg b3MuZW52aXJvblsiRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEgiXSA9ICBvcy5lbnZpcm9uWyJQ TEFZT05MSU5VWCJdKyIvLi4vdW5peC93aW5lL2xpYiIKKyAgICAgb3MuZW52aXJvblsiV1JJVEVf RFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEgiXSA9ICBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJd KyIvLi4vdW5peC93aW5lL2xpYiIKKyAgICAgb3MuZW52aXJvblsiRlJFRVRZUEVfUFJPUEVSVElF UyJdPSJ0cnVldHlwZTppbnRlcnByZXRlci12ZXJzaW9uPTM1IgorZGlmZiAtLWdpdCBhL3B5dGhv bi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIucHkgYi9weXRob24vd2luZV92ZXJz aW9ucy9XaW5lVmVyc2lvbnNGZXRjaGVyLnB5CitpbmRleCBmZDc1ODc5OGUuLjYxNjA1MjI3YyAx MDA2NDQKKy0tLSBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIucHkK KysrKyBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIucHkKK0BAIC0x OCwxMCArMTgsMTMgQEAgZGVmIGZldGNoX2FsbF9hdmFpbGFibGVfd2luZV92ZXJzaW9uKHNlbGYs IGNhbGxiYWNrLCBlcnJvcik6CisgCisgICAgIGRlZiBfc3luY19mZXRjaF9hbGxfYXZhaWxhYmxl X3dpbmVfdmVyc2lvbnMoc2VsZiwgY2FsbGJhY2ssIGVycm9yKToKKyAgICAgICAgIHdpbmVfdmVy c2lvbl91cmwgPSAiaHR0cHM6Ly9waG9lbmljaXMucGxheW9ubGludXguY29tL2luZGV4LnBocC93 aW5lP29zPSVzIiAlIHNlbGYub3BlcmF0aW5nX3N5c3RlbQorLSAgICAgICAgcHJpbnQoIkRvbnds b2FkaW5nICVzICIgJSB3aW5lX3ZlcnNpb25fdXJsKQorKyAgICAgICAgcHJpbnQoIkRvd25sb2Fk aW5nICVzICIgJSB3aW5lX3ZlcnNpb25fdXJsKQorICAgICAgICAgdHJ5OgorICAgICAgICAgICAg IHJlcXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KHdpbmVfdmVyc2lvbl91cmwsIE5vbmUs IHsnVXNlci1BZ2VudCc6IFZhcmlhYmxlcy51c2VyQWdlbnR9KQorLSAgICAgICAgICAgIGhhbmRs ZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4ocmVxdWVzdCwgdGltZW91dD01KQorKyAgICAgICAg ICAgIGlmIHNlbGYub3BlcmF0aW5nX3N5c3RlbSA9PSAnZGFyd2luJzoKKysgICAgICAgICAgICAg ICAgaGFuZGxlID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXF1ZXN0LCBjYWZpbGU9Jy4uLy4u L2xpYi9weXRob24zLjgvY2VydGlmaS9jYWNlcnQucGVtJywgdGltZW91dD01KQorKyAgICAgICAg ICAgIGVsc2U6CisrICAgICAgICAgICAgICAgIGhhbmRsZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9w ZW4ocmVxdWVzdCwgdGltZW91dD01KQorICAgICAgICAgICAgIGNhbGxiYWNrKHNlbGYuX2NvbnZl cnRfcGhvZW5pY2lzX3dpbmVfdmVyc2lvbnNfdG9fdjQoanNvbi5sb2FkKGhhbmRsZSkpKQorICAg ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgIGVycm9yKHRyYWNlYmFj ay5mb3JtYXRfZXhjKCkpCisKK0Zyb20gZDMyYzAxMmFjNzRiNmIwNWRmODE1ZGFjNWRhOTQ4YjY0 OGQwOTkwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJEci4gTmljayIgPGRhcy1p bnRlbnNpdHlAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgorRGF0ZTogU3VuLCAyIEp1bCAyMDIz IDE3OjMxOjI2IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMjYvMzddIEZpeGVkIGRlYnVnIG1lc3Nh Z2UgaW4gUE9MX1dpbmVfU2V0VmVyc2lvbkVudiB0byBsb2cKKyB1c2luZyBQT0xfRGVidWdfTWVz c2FnZQorCistLS0KKyBsaWIvd2luZS5saWIgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5z ZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWIvd2luZS5saWIgYi9s aWIvd2luZS5saWIKK2luZGV4IDQzNDc1ZjMxMC4uM2JmMTE4NzY1IDEwMDc1NQorLS0tIGEvbGli L3dpbmUubGliCisrKysgYi9saWIvd2luZS5saWIKK0BAIC04MzcsNyArODM3LDcgQEAgUE9MX1dp bmVfU2V0VmVyc2lvbkVudigpIHsKKyAgICAgICAgIFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uICIk UE9MX1dJTkVWRVJTSU9OIgorICAgICAgICAgW1sgIiQ/IiA9PSAyIF1dICYmIHJldHVybiAwCisg ICAgICAgZmkKKy0gICAgICBlY2hvICJTZXR0aW5nIHBhdGhzLi4uIgorKyAgICAgIFBPTF9EZWJ1 Z19NZXNzYWdlICJTZXR0aW5nIHBhdGhzLi4uIgorICAgICAgIGV4cG9ydCBQQVRIPSIkV0lORURJ Ui8kUE9MX1dJTkVWRVJTSU9OL2Jpbi86JFBBVEgiCisgICAgICAgWyAiJFBPTF9PUyIgPSAiTWFj IiBdICYmIGV4cG9ydCBEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSD0iJFdJTkVESVIvJFBPTF9X SU5FVkVSU0lPTi9saWIvIgorICAgICAgIGV4cG9ydCBGUkVFVFlQRV9QUk9QRVJUSUVTPSJ0cnVl dHlwZTppbnRlcnByZXRlci12ZXJzaW9uPTM1IgorCitGcm9tIGZiODgxMzcyODY3OThkNDkyNjkx YTk1ZWEwYzM2YjMxNDhmZDAyOTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaS1I byBMZWUgPHNlYXJjaDVAZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMCBBdWcgMjAyMyAxNzoyOTox OSArMDkwMAorU3ViamVjdDogW1BBVENIIDI3LzM3XSBQYXRjaCBmdW5jdGlvbiBleGVjdXRpb24g ZXJyb3IgY2F1c2VkIGJ5IHRoZSBkZWxldGlvbgorIG9mIHRoZSB3aGljaCBjb21tYW5kIGluIERl YmlhbiAxMgorCistLS0KKyBiYXNoL2ZpbmRfcHl0aG9uICAgICB8IDIgKy0KKyBsaWIvcGxheW9u bGludXgubGliICB8IDggKysrKy0tLS0KKyBsaWIvc2NyaXB0cy5saWIgICAgICB8IDIgKy0KKyBs aWIvdmFyaWFibGVzICAgICAgICB8IDYgKysrLS0tCisgbGliL3dpbmUubGliICAgICAgICAgfCA0 ICsrLS0KKyBweXRob24vbWFpbndpbmRvdy5weSB8IDMgKystCisgNiBmaWxlcyBjaGFuZ2VkLCAx MyBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Jhc2gvZmlu ZF9weXRob24gYi9iYXNoL2ZpbmRfcHl0aG9uCitpbmRleCA4MTFiNmMwNDQuLjVjY2YxOTEyNSAx MDA3NTUKKy0tLSBhL2Jhc2gvZmluZF9weXRob24KKysrKyBiL2Jhc2gvZmluZF9weXRob24KK0BA IC0yNiw3ICsyNiw3IEBAIHNlYXJjaF9weXRob24gKCkgeworIAkJZmkgICAgICAgICAgICAgICAg ICAgCisgCQorIAkJZWNobyAtbiAiTG9va2luZyBmb3IgJFBPTF9QWVRIT04uLi4gIiAxPiYyCist CQlpZiBbICIkKHdoaWNoICRQT0xfUFlUSE9OKSIgXTsgdGhlbgorKwkJaWYgWyAiJChjb21tYW5k IC12ICRQT0xfUFlUSE9OKSIgXTsgdGhlbgorIAkJCWxvY2FsIFZlcnNpb249JCgkUE9MX1BZVEhP TiAtLXZlcnNpb24gMj4mMSB8dGFpbCAtbiAxfHNlZCAtZSAncy9eUHl0aG9uIC8vJykKKyAJCQll Y2hvIC1uICIkVmVyc2lvbiAtICIgMT4mMgorIAkJCWNhc2UgIiRWZXJzaW9uIiBpbgorZGlmZiAt LWdpdCBhL2xpYi9wbGF5b25saW51eC5saWIgYi9saWIvcGxheW9ubGludXgubGliCitpbmRleCAx MGJlNmI0ODguLmQyODQ2NmY4ZSAxMDA3NTUKKy0tLSBhL2xpYi9wbGF5b25saW51eC5saWIKKysr KyBiL2xpYi9wbGF5b25saW51eC5saWIKK0BAIC05MTYsMTYgKzkxNiwxNiBAQCBQT0xfU3Vkbygp CisgCQlmaQorIAkJaWYgWyAiJFBPTF9PUyIgPSAiTGludXgiIF07IHRoZW4KKyAJCQkjIE5vdywg d2UgZGV0ZWN0IHdoYXQgc3VkbyB0byB1c2UKKy0JCQlpZiB3aGljaCBna3N1ZG87IHRoZW4KKysJ CQlpZiBjb21tYW5kIC12IGdrc3VkbzsgdGhlbgorIAkJCQlTVURPX0NPTU1BTkQ9Imdrc3VkbyAt LSIKKyAJCQkJdW5zZXQgZ2tzdWRvCistCQkJZWxpZiB3aGljaCBna3N1OyB0aGVuCisrCQkJZWxp ZiBjb21tYW5kIC12IGdrc3U7IHRoZW4KKyAJCQkJU1VET19DT01NQU5EPSJna3N1IC0tIgorIAkJ CQl1bnNldCBna3N1CistCQkJZWxpZiB3aGljaCBrZGVzdTsgdGhlbgorKwkJCWVsaWYgY29tbWFu ZCAtdiBrZGVzdTsgdGhlbgorIAkJCQlTVURPX0NPTU1BTkQ9ImtkZXN1IC0tIgorIAkJCQl1bnNl dCBrZGVzdQorLQkJCWVsaWYgd2hpY2ggc3VkbzsgdGhlbgorKwkJCWVsaWYgY29tbWFuZCAtdiBz dWRvOyB0aGVuCisgCQkJCVNVRE9fQ09NTUFORD0iJFBPTF9URVJNIC1lIHN1ZG8iCisgCQkJCXVu c2V0IHN1ZG8KKyAJCQllbHNlCitkaWZmIC0tZ2l0IGEvbGliL3NjcmlwdHMubGliIGIvbGliL3Nj cmlwdHMubGliCitpbmRleCA0ZmQzZmI1YzUuLjIzYzU3NjYxMyAxMDA3NTUKKy0tLSBhL2xpYi9z Y3JpcHRzLmxpYgorKysrIGIvbGliL3NjcmlwdHMubGliCitAQCAtNzM3LDcgKzczNyw3IEBAIFBP TF9TeXN0ZW1fRXh0cmFjdFNpbmdsZUZpbGUgKCkKKyAgICAgbG9jYWwgYXJjaGl2ZW5hbWU9YGJh c2VuYW1lICIkYXJjaGl2ZSJgCisgICAgIGxvY2FsIGZpbGVuYW1lPWBiYXNlbmFtZSAiJGZpbGUi YAorICAgICBsb2NhbCBzenBpZAorLSAgICBsb2NhbCBzemlwPWB3aGljaCA3emAKKysgICAgbG9j YWwgc3ppcD1gY29tbWFuZCAtdiA3emAKKyAKKyAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIkV4dHJh Y3Rpbmcgc2luZ2xlIGZpbGUgOiBcIiRhcmNoaXZlXCIsIFwiJGZpbGVcIiwgXCIkZGVzdFwiIgor IAorZGlmZiAtLWdpdCBhL2xpYi92YXJpYWJsZXMgYi9saWIvdmFyaWFibGVzCitpbmRleCA5YzE2 ZmUxYTcuLjEzMGFjYzg1NiAxMDA3NTUKKy0tLSBhL2xpYi92YXJpYWJsZXMKKysrKyBiL2xpYi92 YXJpYWJsZXMKK0BAIC0zMSw3ICszMSw3IEBAIFBPTF9Db25maWdfcFJlYWQgKCl7IGNhdCAiJFBP TF9VU0VSX1JPT1QvcGxheW9ubGludXguY2ZnIiAyPiAvZGV2L251bGwgfCBncmVwICJeCisgYWxp YXMgZmluZD0iZmluZCAtSCIKKyAKKyAjIyMgU2VjdXJpdHkgZmVhdHVyZQorLVsgIiQod2hpY2gg c3VkbykiIF0gJiYgc3VkbyAtayAyPiAvZGV2L251bGwKKytbICIkKGNvbW1hbmQgLXYgc3Vkbyki IF0gJiYgc3VkbyAtayAyPiAvZGV2L251bGwKKyAKKyAjIyMgVGVybWluYWwKKyAjIFVzZXIgb3Zl cnJpZGUsIG11c3Qgc3VwcG9ydCAtVCB0byBzZXQgdGl0bGUgYW5kIC1lIHRvIHJ1biBhIGNvbW1h bmQKK0BAIC01Myw3ICs1Myw3IEBAIGZpCisgZXhwb3J0IFBPTF9URVJNCisgCisgIyMjIERlc2t0 b3AKKy1bICIkKHdoaWNoIHhkZy11c2VyLWRpcikiIF0gJiYgZXhwb3J0IERFU0tUT1A9IiQoeGRn LXVzZXItZGlyIERFU0tUT1ApIiB8fCBleHBvcnQgREVTS1RPUD0iJEhPTUUvRGVza3RvcCIKKytb ICIkKGNvbW1hbmQgLXYgeGRnLXVzZXItZGlyKSIgXSAmJiBleHBvcnQgREVTS1RPUD0iJCh4ZGct dXNlci1kaXIgREVTS1RPUCkiIHx8IGV4cG9ydCBERVNLVE9QPSIkSE9NRS9EZXNrdG9wIgorIAor ICMjIyBPdmVycmlkZSB+Ly53Z2V0cmMKKyBleHBvcnQgV0dFVFJDPSIkUE9MX1VTRVJfUk9PVC9j b25maWd1cmF0aW9ucy93Z2V0cmMiCitAQCAtNzAsNyArNzAsNyBAQCBlbHNlCisgCWV2YWxfZ2V0 dGV4dCgpIHsgcHJpbnRmICIkQCI7IH0KKyBmaQorIAorLXdoaWNoIHNoYXN1bSA+IC9kZXYvbnVs bCAyPiAvZGV2L251bGwgfHwgc2hhc3VtICgpIHsgc2hhMXN1bSAiJEAiOyB9CisrY29tbWFuZCAt diBzaGFzdW0gPiAvZGV2L251bGwgMj4gL2Rldi9udWxsIHx8IHNoYXN1bSAoKSB7IHNoYTFzdW0g IiRAIjsgfQorIAorIAorIGlmIFsgIiRQT0xfT1MiID09ICJMaW51eCIgXQorZGlmZiAtLWdpdCBh L2xpYi93aW5lLmxpYiBiL2xpYi93aW5lLmxpYgoraW5kZXggM2JmMTE4NzY1Li44NzU2Y2RjZDMg MTAwNzU1CistLS0gYS9saWIvd2luZS5saWIKKysrKyBiL2xpYi93aW5lLmxpYgorQEAgLTk4OSwx MyArOTg5LDEzIEBAIFBPTF9XaW5lX1ByZWZpeENyZWF0ZSgpIHsKKyAKKyAgICAgICBQT0xfRGVi dWdfSW5pdFByZWZpeAorIAorLSAgICAgIHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUgJiYgWyAiJChQ T0xfTUQ1X2ZpbGUgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSkiKSIgIT0gIjVjMGVlOTA2ODI3 NDZlODExNjk4YTUzNDE1YjQ3NjVkIiBdICYmIFsgISAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRl IHwgZ3JlcCAkQVBQTElDQVRJT05fVElUTEUpIiA9ICIiIF0gJiYgd2luZSB3aW5lcHJlZml4Y3Jl YXRlCisrICAgICAgY29tbWFuZCAtdiB3aW5lcHJlZml4Y3JlYXRlICYmIFsgIiQoUE9MX01ENV9m aWxlICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUpIikiICE9ICI1YzBlZTkwNjgyNzQ2ZTgxMTY5 OGE1MzQxNWI0NzY1ZCIgXSAmJiBbICEgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSB8IGdyZXAg JEFQUExJQ0FUSU9OX1RJVExFKSIgPSAiIiBdICYmIHdpbmUgd2luZXByZWZpeGNyZWF0ZQorICAg ICAgIHdpbmUgd2luZWJvb3QKKyAgICAgZmkKKyAgIGZpCisgCisgICAjIE1ha2Ugc3VyZSB0aGF0 IC5yZWcgZmlsZXMgYXJlIGNyZWF0ZWQKKy0gIGlmIHdoaWNoIHdpbmVzZXJ2ZXI7IHRoZW4KKysg IGlmIGNvbW1hbmQgLXYgd2luZXNlcnZlcjsgdGhlbgorICAgICB3aW5lc2VydmVyIC13CisgICBl bHNlCisgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJXYXJuaW5nLCB3aW5lc2VydmVyIG5vdCBmb3Vu ZCIKK2RpZmYgLS1naXQgYS9weXRob24vbWFpbndpbmRvdy5weSBiL3B5dGhvbi9tYWlud2luZG93 LnB5CitpbmRleCBjOGZlMTExNjAuLmMzNzlkMmFlNSAxMDA3NTUKKy0tLSBhL3B5dGhvbi9tYWlu d2luZG93LnB5CisrKysgYi9weXRob24vbWFpbndpbmRvdy5weQorQEAgLTEyMTYsNyArMTIxNiw4 IEBAIGRlZiBPbkluaXQoc2VsZik6CisgICAgIGRlZiBfZXhlY3V0YWJsZUZvdW5kKHNlbGYsIGV4 ZWN1dGFibGUpOgorICAgICAgICAgZGV2bnVsbCA9IG9wZW4oJy9kZXYvbnVsbCcsICd3YicpCisg ICAgICAgICB0cnk6CistICAgICAgICAgICAgcmV0dXJuY29kZSA9IHN1YnByb2Nlc3MuY2FsbChb IndoaWNoIiwgZXhlY3V0YWJsZV0sIHN0ZG91dD1kZXZudWxsKQorKyAgICAgICAgICAgIGV4ZWN1 dGFibGVfcGF0aCA9IHNodXRpbC53aGljaChleGVjdXRhYmxlKQorKyAgICAgICAgICAgIHJldHVy bmNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoZXhlY3V0YWJsZV9wYXRoLCBzdGRvdXQ9ZGV2bnVsbCkK KyAgICAgICAgICAgICByZXR1cm4gKHJldHVybmNvZGUgPT0gMCkKKyAgICAgICAgIGV4Y2VwdDoK KyAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworRnJvbSA1YTI5MjFlZTE5ZDM1MmRmZTI1YThj MGMyMTBjZGMyNDA0ZmJmMDE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmlobyBQ ZXJzeSBMZWUgPHNlYXJjaDVAZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMCBBdWcgMjAyMyAxNzo1 NTo1MyArMDkwMAorU3ViamVjdDogW1BBVENIIDI4LzM3XSBVcGRhdGUgbWFpbndpbmRvdy5weQor CittaXNzaW5nIGltcG9ydCBhZGQKKy0tLQorIHB5dGhvbi9tYWlud2luZG93LnB5IHwgMSArCisg MSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9weXRob24vbWFp bndpbmRvdy5weSBiL3B5dGhvbi9tYWlud2luZG93LnB5CitpbmRleCBjMzc5ZDJhZTUuLmNiYjc2 ZGRhMSAxMDA3NTUKKy0tLSBhL3B5dGhvbi9tYWlud2luZG93LnB5CisrKysgYi9weXRob24vbWFp bndpbmRvdy5weQorQEAgLTI3LDYgKzI3LDcgQEAKKyBpbXBvcnQgdGltZQorIGltcG9ydCB1cmxs aWIucGFyc2UKKyBpbXBvcnQgd2ViYnJvd3NlcgorK2ltcG9ydCBzaHRpbAorIAorIHRyeToKKyAg ICAgb3MuZW52aXJvblsiUE9MX09TIl0KKworRnJvbSA1YzI2M2JmMGMzMmI5OTljZGI2MzY1NTVk MGRlODRhZjY2NTczOTZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmlobyBQZXJz eSBMZWUgPHNlYXJjaDVAZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMCBBdWcgMjAyMyAxNzo1Njo1 NCArMDkwMAorU3ViamVjdDogW1BBVENIIDI5LzM3XSBVcGRhdGUgbWFpbndpbmRvdy5weQorCitt aXNzaW5nIG1vZHVsZSBpbXBvcnQgYW5kIGltcG9ydCBuYW1lIGZpeC4KKy0tLQorIHB5dGhvbi9t YWlud2luZG93LnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21haW53aW5kb3cucHkgYi9weXRob24v bWFpbndpbmRvdy5weQoraW5kZXggY2JiNzZkZGExLi43YmM2OTVhOTggMTAwNzU1CistLS0gYS9w eXRob24vbWFpbndpbmRvdy5weQorKysrIGIvcHl0aG9uL21haW53aW5kb3cucHkKK0BAIC0yNyw3 ICsyNyw3IEBACisgaW1wb3J0IHRpbWUKKyBpbXBvcnQgdXJsbGliLnBhcnNlCisgaW1wb3J0IHdl YmJyb3dzZXIKKy1pbXBvcnQgc2h0aWwKKytpbXBvcnQgc2h1dGlsCisgCisgdHJ5OgorICAgICBv cy5lbnZpcm9uWyJQT0xfT1MiXQorCitGcm9tIDM5OWZmMjhkYTE1OTM2YzQ0ZGRjMTI5MDU3N2I4 NDdkMDVjYjcxYjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWhvIFBlcnN5IExl ZSA8c2VhcmNoNUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDIzIDE1OjA0OjQ2ICsw OTAwCitTdWJqZWN0OiBbUEFUQ0ggMzAvMzddIFVwZGF0ZSB3aW5lLmxpYgorCitmaXggbWlzc2lu ZyB3aGljaCBjb21tYW5kCistLS0KKyBsaWIvd2luZS5saWIgfCAyICstCisgMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWIvd2lu ZS5saWIgYi9saWIvd2luZS5saWIKK2luZGV4IDg3NTZjZGNkMy4uM2FlOTE2YjE3IDEwMDc1NQor LS0tIGEvbGliL3dpbmUubGliCisrKysgYi9saWIvd2luZS5saWIKK0BAIC05ODksNyArOTg5LDcg QEAgUE9MX1dpbmVfUHJlZml4Q3JlYXRlKCkgeworIAorICAgICAgIFBPTF9EZWJ1Z19Jbml0UHJl Zml4CisgCistICAgICAgY29tbWFuZCAtdiB3aW5lcHJlZml4Y3JlYXRlICYmIFsgIiQoUE9MX01E NV9maWxlICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUpIikiICE9ICI1YzBlZTkwNjgyNzQ2ZTgx MTY5OGE1MzQxNWI0NzY1ZCIgXSAmJiBbICEgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSB8IGdy ZXAgJEFQUExJQ0FUSU9OX1RJVExFKSIgPSAiIiBdICYmIHdpbmUgd2luZXByZWZpeGNyZWF0ZQor KyAgICAgIGNvbW1hbmQgLXYgd2luZXByZWZpeGNyZWF0ZSAmJiBbICIkKFBPTF9NRDVfZmlsZSAi JChjb21tYW5kIC12IHdpbmVwcmVmaXhjcmVhdGUpIikiICE9ICI1YzBlZTkwNjgyNzQ2ZTgxMTY5 OGE1MzQxNWI0NzY1ZCIgXSAmJiBbICEgIiQoY29tbWFuZCAtdiB3aW5lcHJlZml4Y3JlYXRlIHwg Z3JlcCAkQVBQTElDQVRJT05fVElUTEUpIiA9ICIiIF0gJiYgd2luZSB3aW5lcHJlZml4Y3JlYXRl CisgICAgICAgd2luZSB3aW5lYm9vdAorICAgICBmaQorICAgZmkKKworRnJvbSA3OWM1MTNmYThh MTkzOGU1NWJlMGEyMzkxMjExNzZmMTQxNTA0OWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogUm9iZXJ0IFNjaGVjayA8cm9iZXJ0LXNjaGVja0B1c2Vycy5ub3JlcGx5LmdpdGh1Yi5j b20+CitEYXRlOiBTdW4sIDI2IE1heSAyMDI0IDIwOjMyOjUzICswMjAwCitTdWJqZWN0OiBbUEFU Q0ggMzEvMzddIFJlbW92ZSB1bnVzZWQgaW1wb3J0IG9mIGRlcHJlY2F0ZWQgUHl0aG9uCisgYXN5 bmNvcmUuZGlzcGF0Y2hlcgorCistLS0KKyBweXRob24vb3B0aW9ucy5weSB8IDEgLQorIDEgZmls ZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9weXRob24vb3B0aW9ucy5w eSBiL3B5dGhvbi9vcHRpb25zLnB5CitpbmRleCBmNDBmMjZhNzAuLmUxOGRkYjMyYiAxMDA3NTUK Ky0tLSBhL3B5dGhvbi9vcHRpb25zLnB5CisrKysgYi9weXRob24vb3B0aW9ucy5weQorQEAgLTE4 LDcgKzE4LDYgQEAKKyAjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisgIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgorIAorLWZyb20gYXN5bmNvcmUg aW1wb3J0IGRpc3BhdGNoZXIKKyBpbXBvcnQgb3MsIHN1YnByb2Nlc3MsIGdldG9wdCwgc3lzLCB1 cmxsaWIucmVxdWVzdCwgc2lnbmFsLCBzb2NrZXQKKyBpbXBvcnQgd3gsIHRpbWUsIHJlCisgaW1w b3J0IHdlYmJyb3dzZXIsIHNodXRpbAorCitGcm9tIDIyOTU5NDhiMzU2Zjg0NjFjNTY0MmNmOTZk YmI0M2QwM2M2MjkyMTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgU2No ZWNrIDxyb2JlcnQtc2NoZWNrQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IFN1biwg MjYgTWF5IDIwMjQgMjE6NTM6MzQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAzMi8zN10gUmV0dXJu IGJhc2VkIG9uIHNodXRpbC53aGljaCgpIGluc3RlYWQgb2YKKyBzdWJwcm9jZXNzLmNhbGwoKQor CistLS0KKyBweXRob24vbWFpbndpbmRvdy5weSB8IDUgKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9weXRob24vbWFp bndpbmRvdy5weSBiL3B5dGhvbi9tYWlud2luZG93LnB5CitpbmRleCA3YmM2OTVhOTguLjMzMTI5 N2Y3OCAxMDA3NTUKKy0tLSBhL3B5dGhvbi9tYWlud2luZG93LnB5CisrKysgYi9weXRob24vbWFp bndpbmRvdy5weQorQEAgLTEyMTUsMTEgKzEyMTUsOCBAQCBkZWYgT25Jbml0KHNlbGYpOgorICAg ICAgICAgcmV0dXJuIFRydWUKKyAKKyAgICAgZGVmIF9leGVjdXRhYmxlRm91bmQoc2VsZiwgZXhl Y3V0YWJsZSk6CistICAgICAgICBkZXZudWxsID0gb3BlbignL2Rldi9udWxsJywgJ3diJykKKyAg ICAgICAgIHRyeToKKy0gICAgICAgICAgICBleGVjdXRhYmxlX3BhdGggPSBzaHV0aWwud2hpY2go ZXhlY3V0YWJsZSkKKy0gICAgICAgICAgICByZXR1cm5jb2RlID0gc3VicHJvY2Vzcy5jYWxsKGV4 ZWN1dGFibGVfcGF0aCwgc3Rkb3V0PWRldm51bGwpCistICAgICAgICAgICAgcmV0dXJuIChyZXR1 cm5jb2RlID09IDApCisrICAgICAgICAgICAgcmV0dXJuIChzaHV0aWwud2hpY2goZXhlY3V0YWJs ZSkgaXMgbm90IE5vbmUpCisgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgcmV0dXJuIEZh bHNlCisgCisKK0Zyb20gMTBmNzg1M2M4NGY0NTZmMTkyODljMjJmZTE5YTlhOTlmOTRkOWRkYSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBTY2hlY2sgPHJvYmVydEBmZWRv cmFwcm9qZWN0Lm9yZz4KK0RhdGU6IE1vbiwgMTQgT2N0IDIwMjQgMDA6MDA6NTIgKzAyMDAKK1N1 YmplY3Q6IFtQQVRDSCAzMy8zN10gUmVwbGFjZSBwaXBlcy5xdW90ZSgpIGZyb20gZGVwcmVjYXRl ZCBQeXRob24gcGlwZXMKKworLS0tCisgcHl0aG9uL2xpYi9wbGF5b25saW51eC5weSB8IDYgKysr LS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKwor ZGlmZiAtLWdpdCBhL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkgYi9weXRob24vbGliL3BsYXlv bmxpbnV4LnB5CitpbmRleCBmYTliOTBmYjkuLmIzOWY4YTlhOSAxMDA3NTUKKy0tLSBhL3B5dGhv bi9saWIvcGxheW9ubGludXgucHkKKysrKyBiL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkKK0BA IC01LDcgKzUsNyBAQAorIAorIGZyb20gLiBpbXBvcnQgVmFyaWFibGVzCisgaW1wb3J0IG9zCist aW1wb3J0IHN1YnByb2Nlc3MsIHNobGV4LCBwaXBlcywgd3gKKytpbXBvcnQgc3VicHJvY2Vzcywg c2hsZXgsIHd4CisgaW1wb3J0IG5hdHNvcnQKKyAKKyBkZWYgd2lucGF0aChzY3JpcHQsIHBhdGgp OgorQEAgLTM3Myw3ICszNzMsNyBAQCBkZWYgZ2V0QXJncyhzaG9ydGN1dCk6ICMgR2V0IHByZWZp eCBuYW1lIGZyb20gc2hvcnRjdXQKKyAgICAgdHJ5OgorICAgICAgICAgYXJncyA9IHNobGV4LnNw bGl0KGZpY2hpZXJbaV0pWzI6LTFdCisgICAgICAgICAjcHJpbnQgYXJncworLSAgICAgICAgYXJn cyA9ICIgIi5qb2luKFsgcGlwZXMucXVvdGUoeCkgZm9yIHggaW4gYXJnc10pCisrICAgICAgICBh cmdzID0gIiAiLmpvaW4oWyBzaGxleC5xdW90ZSh4KSBmb3IgeCBpbiBhcmdzXSkKKyAgICAgICAg ICNwcmludCBhcmdzCisgICAgIGV4Y2VwdDoKKyAgICAgICAgIGFyZ3MgPSAiIgorQEAgLTQzMiw3 ICs0MzIsNyBAQCBkZWYgd3JpdGVBcmdzKGdhbWUsIGFyZ3MpOgorICAgICAgICAgICAgICAgICBv bGRfc3RyaW5nID0gc2hsZXguc3BsaXQoZmljaGllcltpXSkKKyAgICAgICAgICAgICAgICAgbmV3 X3N0cmluZyA9IHNobGV4LnNwbGl0KHN0cihhcmdzKSkKKyAgICAgICAgICAgICAgICAgbmV3X3N0 cmluZyA9IG9sZF9zdHJpbmdbMDoyXSArIG5ld19zdHJpbmcKKy0gICAgICAgICAgICAgICAgbmV3 X3N0cmluZyA9ICIgIi5qb2luKFsgcGlwZXMucXVvdGUoeCkgZm9yIHggaW4gbmV3X3N0cmluZ10p CisrICAgICAgICAgICAgICAgIG5ld19zdHJpbmcgPSAiICIuam9pbihbIHNobGV4LnF1b3RlKHgp IGZvciB4IGluIG5ld19zdHJpbmddKQorIAorICAgICAgICAgICAgICAgICBuZXdfc3RyaW5nID0g bmV3X3N0cmluZysnICIkQCInCisgICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kKG5ld19zdHJp bmcpCisKK0Zyb20gZWI5ZWUxNDQzZmU2ZTNjNjNhMmM5NjA0Y2Q4YzhhY2QyZWU2NzhiMyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpdGFsaWkgPGN1YmVjb2RlLm5ldEBnbWFpbC5j b20+CitEYXRlOiBGcmksIDEzIERlYyAyMDI0IDExOjA1OjExICswMTAwCitTdWJqZWN0OiBbUEFU Q0ggMzQvMzddIEZpeCBmb3IgU3ludGF4V2FybmluZzogaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UK KworLS0tCisgcHl0aG9uL21haW53aW5kb3cucHkgfCAxNiArKysrKysrKystLS0tLS0tCisgMSBm aWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdp dCBhL3B5dGhvbi9tYWlud2luZG93LnB5IGIvcHl0aG9uL21haW53aW5kb3cucHkKK2luZGV4IDMz MTI5N2Y3OC4uNDA4NTY4NTNkIDEwMDc1NQorLS0tIGEvcHl0aG9uL21haW53aW5kb3cucHkKKysr KyBiL3B5dGhvbi9tYWlud2luZG93LnB5CitAQCAtNzA2LDEzICs3MDYsMTUgQEAgZGVmIEdvVG9B cHBEaXIoc2VsZiwgZXZlbnQpOgorIAorICAgICBkZWYgQ2hhbmdlSWNvbihzZWxmLCBldmVudCk6 CisgICAgICAgICBzZWxmLkljb25EaXIgPSBWYXJpYWJsZXMuaG9tZWRpciArICIvLmxvY2FsL3No YXJlL2ljb25zLyIKKy0gICAgICAgIHNlbGYuU3VwcHJvdGVkSWNvbkV4dCA9ICJBbGx8Ki54cG07 Ki5YUE07Ki5wbmc7Ki5QTkc7Ki5pY287Ki5JQ087Ki5qcGc7Ki5KUEc7Ki5qcGVnOyouSlBFRzsq LmJtcDsqLkJNUFwKKy0gICAgICAgIFx8WFBNICgqLnhwbSl8Ki54cG07Ki5YUE1cCistICAgICAg ICBcfFBORyAoKi5wbmcpfCoucG5nOyouUE5HXAorLSAgICAgICAgXHxJQ08gKCouaWNvKXwqLmlj bzsqLklDT1wKKy0gICAgICAgIFx8SlBHICgqLmpwZyl8Ki5qcGc7Ki5KUEdcCistICAgICAgICBc fEJNUCAoKi5ibXApfCouYm1wOyouQk1QXAorLSAgICAgICAgXHxKUEVHICgqLmpwZWcpfCouanBl ZzsqSlBFRyIKKysgICAgICAgIHNlbGYuU3VwcHJvdGVkSWNvbkV4dCA9ICgKKysgICAgICAgICAg ICAiQWxsfCoueHBtOyouWFBNOyoucG5nOyouUE5HOyouaWNvOyouSUNPOyouanBnOyouSlBHOyou anBlZzsqLkpQRUc7Ki5ibXA7Ki5CTVB8IgorKyAgICAgICAgICAgICJYUE0gKCoueHBtKXwqLnhw bTsqLlhQTXwiCisrICAgICAgICAgICAgIlBORyAoKi5wbmcpfCoucG5nOyouUE5HfCIKKysgICAg ICAgICAgICAiSUNPICgqLmljbyl8Ki5pY287Ki5JQ098IgorKyAgICAgICAgICAgICJKUEcgKCou anBnKXwqLmpwZzsqLkpQR3wiCisrICAgICAgICAgICAgIkJNUCAoKi5ibXApfCouYm1wOyouQk1Q fCIKKysgICAgICAgICAgICAiSlBFRyAoKi5qcGVnKXwqLmpwZWc7Ki5KUEVHIgorKyAgICAgICAg KQorICAgICAgICAgc2VsZi5JY29uRGlhbG9nID0gd3guRmlsZURpYWxvZyhzZWxmLCAiQ2hvb3Nl IGEgaWNvbiBmaWxlIiwgc2VsZi5JY29uRGlyLCAiIiwgc2VsZi5TdXBwcm90ZWRJY29uRXh0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eC5PUEVOIHwgd3guRkRf UFJFVklFVykKKyAgICAgICAgIGlmIHNlbGYuSWNvbkRpYWxvZy5TaG93TW9kYWwoKSA9PSB3eC5J RF9PSzoKKworRnJvbSBmMDFiZDVmZWZmY2ExOWIwZDJmYjZmMDU5ZDM2N2NjOTBlYTNhMzRkIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogYnJpYW5iYWRsIDxtb2hhbW1hZGJyaWFuYWJk aWxsYWhAZ21haWwuY29tPgorRGF0ZTogU2F0LCAyOCBEZWMgMjAyNCAwNzo0OTozMCArMDcwMAor U3ViamVjdDogW1BBVENIIDM1LzM3XSBGaXggU3ludGF4OiBpbnZhbGlkIGVzY2FwZSBzZXF1ZW5j ZQorCistLS0KKyBweXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29r LnB5IHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKKworZGlmZiAtLWdpdCBhL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2lu ZG93Tm90ZWJvb2sucHkgYi9weXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05v dGVib29rLnB5CitpbmRleCAyOTY0NDNlNjYuLjUwNWI0NzY5MyAxMDA2NDQKKy0tLSBhL3B5dGhv bi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJvb2sucHkKKysrKyBiL3B5dGhv bi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJvb2sucHkKK0BAIC00NjEsOCAr NDYxLDggQEAgZGVmIG1pc2NfYnV0dG9uKHNlbGYsIGV2ZW50KToKKyAgICAgICAgICAgICBzZWxm LkZpbGVEaWFsb2cgPSB3eC5GaWxlRGlhbG9nKHNlbGYpCisgICAgICAgICAgICAgc2VsZi5GaWxl RGlhbG9nLlNldERpcmVjdG9yeSgifiIpCisgICAgICAgICAgICAgc2VsZi5zdXBwb3J0ZWRfZmls ZXMgPSAiQWxsfCouZXhlOyouRVhFOyoubXNpOyouTVNJXAorLSAgICAgICAgICAgIFx8V2luZG93 cyBleGVjdXRhYmxlICgqLmV4ZSl8Ki5leGU7Ki5FWEVcCistICAgICAgICAgICAgXHxXaW5kb3dz IGluc3RhbGwgZmlsZSAoKi5tc2kpfCoubXNpOypNU0kiCisrICAgICAgICAgICAgfFdpbmRvd3Mg ZXhlY3V0YWJsZSAoKi5leGUpfCouZXhlOyouRVhFXAorKyAgICAgICAgICAgIHxXaW5kb3dzIGlu c3RhbGwgZmlsZSAoKi5tc2kpfCoubXNpOypNU0kiCisgICAgICAgICAgICAgc2VsZi5GaWxlRGlh bG9nLlNldFdpbGRjYXJkKHNlbGYuc3VwcG9ydGVkX2ZpbGVzKQorICAgICAgICAgICAgIHNlbGYu RmlsZURpYWxvZy5TaG93TW9kYWwoKQorICAgICAgICAgICAgIGlmIChzZWxmLkZpbGVEaWFsb2cu R2V0UGF0aCgpICE9ICIiKToKKworRnJvbSAyNTc4YTYwNWQ4Y2IwMjAxZmIxMjVkNmVkYmRkYWIx N2I1N2I4NDUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0ZXVzeiBLb25pZWN6 bnkgPG1hdGtvbmllY3pAZ21haWwuY29tPgorRGF0ZTogVHVlLCA0IE5vdiAyMDI1IDEyOjAzOjMw ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMzYvMzddIHJlbW92ZSBkZWFkIGxpbmsKKworUmVwbGFj aW5nIGAgU2VlIGh0dHA6Ly93d3cucGxheW9ubGludXguY29tL2ZyL3BhZ2UtMjYtV2luZW1lbnVi dWlsZGVyLmh0bWxgIHdpdGggd29ya2luZyBsaW5rIHdvdWxkIGJlIG5pY2VyLCBidXQgSSBhbSBu b3Qgc3VyZSB3aGF0IGlzIHN1cHBvc2VkIHRvIGJlIGxpbmtlZAorLS0tCisgbGliL3dpbmUubGli IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQor CitkaWZmIC0tZ2l0IGEvbGliL3dpbmUubGliIGIvbGliL3dpbmUubGliCitpbmRleCAzYWU5MTZi MTcuLmVkNGVkM2EyNiAxMDA3NTUKKy0tLSBhL2xpYi93aW5lLmxpYgorKysrIGIvbGliL3dpbmUu bGliCitAQCAtNTE5LDcgKzUxOSw3IEBAIFBPTF9XaW5lKCkgeworICAgZmkKKyAKKyAgIGlmIFsg ISAiJFdJTkVNRU5VQlVJTERFUl9BTEVSVCIgXTsgdGhlbgorLSAgICBQT0xfRGVidWdfTWVzc2Fn ZSAiTm90aWNlOiBQbGF5T25MaW51eCBkZWxpYmVyYXRlbHkgZGlzYWJsZXMgd2luZW1lbnVidWls ZGVyLiBTZWUgaHR0cDovL3d3dy5wbGF5b25saW51eC5jb20vZnIvcGFnZS0yNi1XaW5lbWVudWJ1 aWxkZXIuaHRtbCIKKysgICAgUE9MX0RlYnVnX01lc3NhZ2UgIk5vdGljZTogUGxheU9uTGludXgg ZGVsaWJlcmF0ZWx5IGRpc2FibGVzIHdpbmVtZW51YnVpbGRlci4iCisgICAgIFdJTkVNRU5VQlVJ TERFUl9BTEVSVD0iRG9uZSIKKyAgIGZpCisgICBpZiBbICIkMSIgPSAicmVnZWRpdCIgLWEgISAi JDIiID0gIiIgXTsgdGhlbgorCitGcm9tIGNhYzg3MDFjODA2YWUzZjhmOTRmOGMzODNlMDU5OTZl ZmFhNTNkNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCb3Jpc2xhdiBTYWJldiA8 Qm9yaXNsYXZTYWJldkB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+CitEYXRlOiBNb24sIDUgSmFu IDIwMjYgMTU6MDM6NDkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAzNy8zN10gVXBkYXRlIFBPTF9T ZXR1cEZyYW1lLnB5IC0gRml4IHN5bnRheCB3YXJuaW5nIHdpdGgKKyBQeXRob24gPj0gMy4xMAor CistLS0KKyBweXRob24vc2V0dXB3aW5kb3cvUE9MX1NldHVwRnJhbWUucHkgfCA0ICsrKy0KKyAx IGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1n aXQgYS9weXRob24vc2V0dXB3aW5kb3cvUE9MX1NldHVwRnJhbWUucHkgYi9weXRob24vc2V0dXB3 aW5kb3cvUE9MX1NldHVwRnJhbWUucHkKK2luZGV4IDMzZDczZDM4YS4uNWEyZmVhZjExIDEwMDc1 NQorLS0tIGEvcHl0aG9uL3NldHVwd2luZG93L1BPTF9TZXR1cEZyYW1lLnB5CisrKysgYi9weXRo b24vc2V0dXB3aW5kb3cvUE9MX1NldHVwRnJhbWUucHkKK0BAIC0zMyw3ICszMyw5IEBACisgaW1w b3J0IGxpYi5wbGF5b25saW51eCBhcyBwbGF5b25saW51eAorIAorIGxpYi5sbmcuTGFuZygpCist dXJsbGliLnJlcXVlc3QuVVJMb3BlbmVyLnZlcnNpb24gPSBWYXJpYWJsZXMudXNlckFnZW50ICAj IEFyZyAuLi4KKytvcGVuZXIgPSB1cmxsaWIucmVxdWVzdC5idWlsZF9vcGVuZXIoKQorK29wZW5l ci5hZGRoZWFkZXJzID0gWygnVXNlci1BZ2VudCcsIFZhcmlhYmxlcy51c2VyQWdlbnQpXQorK3Vy bGxpYi5yZXF1ZXN0Ll91cmxvcGVuZXIgPSBvcGVuZXIKKyAKKyBmcm9tIHVpLlBsYXlPbkxpbnV4 V2luZG93IGltcG9ydCBQbGF5T25MaW51eFdpbmRvdworIGZyb20gc2V0dXB3aW5kb3cuRG93bmxv YWRlciBpbXBvcnQgRG93bmxvYWRlcgoKZGlmZiAtLWdpdCBhL3BsYXlvbmxpbnV4LnNwZWMgYi9w bGF5b25saW51eC5zcGVjCmluZGV4IGY0NzY2ZGEuLmE4M2RlMDAgMTAwNjQ0Ci0tLSBhL3BsYXlv bmxpbnV4LnNwZWMKKysrIGIvcGxheW9ubGludXguc3BlYwpAQCAtMSw3ICsxLDcgQEAKIFN1bW1h cnk6ICAgICAgIEdyYXBoaWNhbCBmcm9udC1lbmQgZm9yIFdpbmUKIE5hbWU6ICAgICAgICAgIHBs YXlvbmxpbnV4CiBWZXJzaW9uOiAgICAgICA0LjQKLVJlbGVhc2U6ICAgICAgIDE4JXs/ZGlzdH0K K1JlbGVhc2U6ICAgICAgIDE5JXs/ZGlzdH0KICMgcGxheW9ubGludXggaXRzZWxmIGlzIEdQTC0z LjAtb25seSBidXQgdXNlcyBvdGhlciBzb3VyY2UgY29kZXMsIGJyZWFrZG93bjoKICMgR1BMLTIu MC1vci1sYXRlcjogcHl0aG9uL3tjb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93LGRlYnVn LG1haW53aW5kb3csb3B0aW9ucyx3cmFwcGVyfS5weQogIyBHUEwtMi4wLW9yLWxhdGVyOiBweXRo b24ve2luc3RhbGwvSW5zdGFsbFdpbmRvdyxzZXR1cHdpbmRvdy97UE9MX1NldHVwRnJhbWUsZ3Vp X3NlcnZlcn19LnB5CkBAIC0xMSw3ICsxMSw3IEBAIExpY2Vuc2U6ICAgICAgIEdQTC0zLjAtb25s eSBBTkQgR1BMLTIuMC1vci1sYXRlciBBTkQgTUlUCiBVUkw6ICAgICAgICAgICBodHRwczovL3d3 dy5wbGF5b25saW51eC5jb20vCiBTb3VyY2UwOiAgICAgICBodHRwczovL2dpdGh1Yi5jb20vUGxh eU9uTGludXgvUE9MLVBPTS00L2FyY2hpdmUvJXt2ZXJzaW9ufS9QT0wtUE9NLTQtJXt2ZXJzaW9u fS50YXIuZ3oKICMgVXBzdHJlYW0gY2hhbmdlcyBzaW5jZSBsYXN0IHJlbGVhc2UKLVBhdGNoMDog ICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9QbGF5T25MaW51eC9QT0wtUE9NLTQvY29tcGFyZS80 LjQuLi43NmE2NTgwLnBhdGNoIy9wbGF5b25saW51eC00LjQtZ2l0NzZhNjU4MC5wYXRjaAorUGF0 Y2gwOiAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1BsYXlPbkxpbnV4L1BPTC1QT00tNC9jb21w YXJlLzQuNC4uLmZkZTAwZmUucGF0Y2gjL3BsYXlvbmxpbnV4LTQuNC1naXRmZGUwMGZlLnBhdGNo CiBCdWlsZFJlcXVpcmVzOiBnY2MKIEJ1aWxkUmVxdWlyZXM6IG1ha2UKIEJ1aWxkUmVxdWlyZXM6 IGd6aXAKQEAgLTEwMCw2ICsxMDAsOSBAQCBhcHBzdHJlYW0tdXRpbCB2YWxpZGF0ZS1yZWxheCAt LW5vbmV0ICV7YnVpbGRyb290fSV7X2RhdGFkaXJ9L2FwcGRhdGEvUGxheU9uTGludQogJXtfbWFu ZGlyfS9tYW4xLyV7bmFtZX0tcGtnLjEqCiAKICVjaGFuZ2Vsb2cKKyogU2F0IEp1biAxMyAyMDI2 IFJvYmVydCBTY2hlY2sgPHJvYmVydEBmZWRvcmFwcm9qZWN0Lm9yZz4gNC40LTE5CistIEFkZCBw YXRjaCB0byByZXBsYWNlIHVybGxpYi5yZXF1ZXN0LlVSTG9wZW5lciAoIzI0MDMyOTApCisKICog U2F0IEphbiAxNyAyMDI2IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3Jh cHJvamVjdC5vcmc+IC0gNC40LTE4CiAtIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVj dC5vcmcvd2lraS9GZWRvcmFfNDRfTWFzc19SZWJ1aWxkCiAK