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: Richard W.M. Jones To: git-commits@fedoraproject.org Subject: [rpms/coccinelle] f45: New version 1.3.3 (RHBZ#2519492) Date: Thu, 24 Sep 2026 16:34:15 GMT Message-ID: <179026765581.1.3766927179227587387.rpms-coccinelle-fdc6f37097ce@fedoraproject.org> List-ID: X-Git-Repo: rpms/coccinelle X-Git-Branch: f45 X-Git-Rev: fdc6f37097ce284b477965033e55a5cea97edb89 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvY29jY2luZWxsZQogICAgICAgICAgICBCcmFuY2ggOiBmNDUKICAgICAgICAg ICAgQ29tbWl0IDogZmRjNmYzNzA5N2NlMjg0YjQ3Nzk2NTAzM2U1NWE1Y2VhOTdlZGI4OQogICAg ICAgICAgICBBdXRob3IgOiBSaWNoYXJkIFcuTS4gSm9uZXMgPHJqb25lc0ByZWRoYXQuY29tPgog ICAgICAgICAgICBEYXRlICAgOiAyMDI2LTA5LTA0VDExOjA2OjI4KzAxOjAwCiAgICAgICAgICAg IFN0YXRzICA6ICs5Ly05ODU4IGluIDEyIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0 cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9jb2NjaW5lbGxlL2MvZmRjNmYzNzA5N2Nl Mjg0YjQ3Nzk2NTAzM2U1NWE1Y2VhOTdlZGI4OT9icmFuY2g9ZjQ1CgogICAgICAgICAgICBMb2c6 CiAgICAgICAgICAgIE5ldyB2ZXJzaW9uIDEuMy4zIChSSEJaIzI1MTk0OTIpCgpEcm9wIG9jYW1s LXBjcmUyLCBlZ3JlcCBwYXRjaGVzIHdoaWNoIGFyZSBub3cgdXBzdHJlYW0uCgotLS0KZGlmZiAt LWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDMxZWEzODcuLmQ2YWJmZDYgMTAw NjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMSwzICsxLDQgQEAKIC9j b2NjaW5lbGxlLSoudGd6CiAvY29jY2luZWxsZS0qLnRhci5negogL2NvY2NpbmVsbGUtMS4zLjEu dGFyLmJ6MgorL2NvY2NpbmVsbGUtMS4zLjMudGFyLmJ6MgoKZGlmZiAtLWdpdCBhLzAwMDEtcmVw bGFjZS1wY3JlLXdpdGgtcGNyZTIucGF0Y2ggYi8wMDAxLXJlcGxhY2UtcGNyZS13aXRoLXBjcmUy LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODZkY2Y3Li4wMDAwMDAwCi0t LSBhLzAwMDEtcmVwbGFjZS1wY3JlLXdpdGgtcGNyZTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwyNzIgKzAsMCBAQAotRnJvbSA1MWY1MTYyZGE5Zjc3M2FkNGVmZTQ1NzJmYTQ5YzQzMzRmZDM1 YTExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogT2xhZiBIZXJpbmcgPG9sYWZAYWVw ZmxlLmRlPgotRGF0ZTogV2VkLCAxOSBNYXIgMjAyNSAwOToxNDozNSArMDEwMAotU3ViamVjdDog W1BBVENIIDEvOV0gcmVwbGFjZSBwY3JlIHdpdGggcGNyZTIKLQotU2luY2UgcGNyZSBpcyB1bm1h aW50YWluZWQsIHRoZSB1c2FnZSBvZiBvY2FtbC1wY3JlIHdpbGwgYmUgcmVwbGFjZWQKLXdpdGgg b2NhbWwtcGNyZTIuIFdoaWxlIG90aGVyIHJlZ3VsYXIgZXhwZXNzaW9uIGxpYnJhcmllcyBmb3Ig T0NhbWwKLWV4aXN0cywgdGhleSBhcmUgbm90IGFzIGZlYXR1cmUgY29tcGxldGUgYXMgcGNyZTIg aXMuCi0KLVRoaXMgaXMgdGhlIG1pbmltYWwgY2hhbmdlIHRvIHVzZSB0aGUgc3lzdGVtIG9jYW1s LXBjcmUyLiBUbyByZWR1Y2UgdGhlCi1zaXplIG9mIHRoaXMgcGF0Y2gsIGEgc2VwYXJhdGUgY29t bWl0IG1pZ2h0IGJlIHJlcXVpcmVkIHRvIGltcG9ydAotcGNyZTItb2NhbWwuZ2l0IGludG8gYnVu ZGxlcyBhbmQgdXNlIGl0IGluIHRoZSBidWlsZCBzeXN0ZW0uCi0KLVNpZ25lZC1vZmYtYnk6IE9s YWYgSGVyaW5nIDxvbGFmQGFlcGZsZS5kZT4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDBh ZjMzNDM4MzQyNWI0ZGUxOGYxZDlhMDg3ZTM4ODM4Yzc1YzJjNGQpCi0tLS0KLSBNYWtlZmlsZSAg ICAgICAgICAgICAgIHwgIDQgKystLQotIE1ha2VmaWxlLmNvbmZpZy5pbiAgICAgfCAxOCArKysr KysrKystLS0tLS0tLS0KLSBNYWtlZmlsZS5saWJzICAgICAgICAgIHwgMTggKysrKysrKysrLS0t LS0tLS0tCi0gY29jY2luZWxsZS5vcGFtICAgICAgICB8ICAyICstCi0gY29uZmlndXJlLmFjICAg ICAgICAgICB8IDE2ICsrKysrKysrLS0tLS0tLS0KLSBnbG9iYWxzL3JlZ2V4cF9wY3JlLm1sIHwg IDYgKysrLS0tCi0gc2V0dXAvZmFrZS1zdWJzdC5zaCAgICB8ICA2ICsrKy0tLQotIDcgZmlsZXMg Y2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQg YS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAwZjZiMjMxM2YuLjZiNjI0ZTM3OCAxMDA2NDQK LS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTEwMSw3ICsxMDEsNyBAQCBQUkVG SVhfc3BnZW4gOj0gdG9vbHMvc3BnZW4vc291cmNlLwotIENPUkVfTElCUyA6PSB1bml4IHN0ciBv Y2FtbGNvbW1vbiBcCi0gCSQoU1REQ09NUEFURElSKS9zdGRjb21wYXQgXAotIAkkKHBhdHN1YnN0 ICUsYnl0ZXMsJChCWVRFU0RJUikpIFwKLS0JJChwYXRzdWJzdCAlLHBjcmUsJChmaWx0ZXIgJS9w Y3JlLmNtYSwkKExOS0xJQlMpKSkKLSsJJChwYXRzdWJzdCAlLHBjcmUyLCQoZmlsdGVyICUvcGNy ZTIuY21hLCQoTE5LTElCUykpKQotIAotIGlmZXEgKCQoT0NBTUxBVExFQVNUNTApLG5vKQotIENP UkVfTElCUyArPSBiaWdhcnJheQotQEAgLTIxNCw3ICsyMTQsNyBAQCBNRU5ISVJfTElCIDo9IFwK LSAJJChhZGRzdWZmaXggL21lbmhpckxpYiQoTElCU1VGRklYKSwkKGZpbHRlciAlL21lbmhpckxp YiwkKE1BS0VMSUJTKSkpCi0gUEFSTUFQX0xJQiA6PSAkKGFkZHN1ZmZpeCAvcGFybWFwJChMSUJT VUZGSVgpLCQoZmlsdGVyICUvcGFybWFwLCQoTUFLRUxJQlMpKSkKLSBQWU1MX0xJQiA6PSAkKGFk ZHN1ZmZpeCAvcHltbCQoTElCU1VGRklYKSwkKGZpbHRlciAlL3B5bWwsJChNQUtFTElCUykpKQot LVBDUkVfTElCIDo9ICQoYWRkc3VmZml4IC9wY3JlJChMSUJTVUZGSVgpLCQoZmlsdGVyICUvcGNy ZSwkKE1BS0VMSUJTKSkpCi0rUENSRV9MSUIgOj0gJChhZGRzdWZmaXggL3BjcmUyJChMSUJTVUZG SVgpLCQoZmlsdGVyICUvcGNyZTIsJChNQUtFTElCUykpKQotIFNURENPTVBBVF9MSUIgOj0gJChT VERDT01QQVRESVIpL3N0ZGNvbXBhdCQoTElCU1VGRklYKQotIAotIFNURENPTVBBVF9VU0VSUyA6 PSBwYXJzaW5nX2MvdHlwZV9hbm5vdGVyX2MgY29jY2kgcGFyc2luZ19jb2NjaS9jaGVja19tZXRh IFwKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5jb25maWcuaW4gYi9NYWtlZmlsZS5jb25maWcuaW4K LWluZGV4IGRiYWZhMzVhNS4uNmJhZDFhN2E2IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuY29uZmln LmluCi0rKysgYi9NYWtlZmlsZS5jb25maWcuaW4KLUBAIC01LDE4ICs1LDE4IEBACi0gVkVSU0lP Tj1AUEFDS0FHRV9WRVJTSU9OQAotIAotICMgKiBmb3IgZWFjaCBsaWJyYXJ5ICQxLCBhZGQgYW5v dGhlciBlbnRyeSBpbiB0aGUgc2FtZSBtYW5uZXIKLS1NQUtFTElCUz1ATUFLRV9keW5saW5rQCBA TUFLRV9tZW5oaXJMaWJAIEBNQUtFX3B5bWxAIEBNQUtFX3BjcmVAIFwKLStNQUtFTElCUz1ATUFL RV9keW5saW5rQCBATUFLRV9tZW5oaXJMaWJAIEBNQUtFX3B5bWxAIEBNQUtFX3BjcmUyQCBcCi0g ICBATUFLRV9wYXJtYXBACi0tTE5LTElCUz1ATU9EVUxFU19keW5saW5rQCBATU9EVUxFU19tZW5o aXJMaWJAIEBNT0RVTEVTX3BjcmVAIEBNT0RVTEVTX3B5bWxAIFwKLStMTktMSUJTPUBNT0RVTEVT X2R5bmxpbmtAIEBNT0RVTEVTX21lbmhpckxpYkAgQE1PRFVMRVNfcGNyZTJAIEBNT0RVTEVTX3B5 bWxAIFwKLSAgIEBNT0RVTEVTX3Bhcm1hcEAKLSBPUFRMTktMSUJTPUBNT0RVTEVTT1BUX2R5bmxp bmtAIEBNT0RVTEVTT1BUX21lbmhpckxpYkAgQE1PRFVMRVNPUFRfcHltbEAgXAotLSAgQE1PRFVM RVNPUFRfcGNyZUAgQE1PRFVMRVNPUFRfcGFybWFwQAotLUlOQ0xJQlM9QFBBVEhfZHlubGlua0Ag QFBBVEhfbWVuaGlyTGliQCBAUEFUSF9weW1sQCBAUEFUSF9wY3JlQCBcCi0rICBATU9EVUxFU09Q VF9wY3JlMkAgQE1PRFVMRVNPUFRfcGFybWFwQAotK0lOQ0xJQlM9QFBBVEhfZHlubGlua0AgQFBB VEhfbWVuaGlyTGliQCBAUEFUSF9weW1sQCBAUEFUSF9wY3JlMkAgXAotICAgQFBBVEhfcGFybWFw QAotLUZMQUdTTElCUz1ARkxBR1NfZHlubGlua0AgQEZMQUdTX21lbmhpckxpYkAgQEZMQUdTX3B5 bWxAIEBGTEFHU19wY3JlQCBcCi0rRkxBR1NMSUJTPUBGTEFHU19keW5saW5rQCBARkxBR1NfbWVu aGlyTGliQCBARkxBR1NfcHltbEAgQEZMQUdTX3BjcmUyQCBcCi0gICBARkxBR1NfcGFybWFwQAot IE9QVEZMQUdTTElCUz1AT1BURkxBR1NfZHlubGlua0AgQE9QVEZMQUdTX21lbmhpckxpYkAgQE9Q VEZMQUdTX3B5bWxAIFwKLS0gIEBPUFRGTEFHU19wY3JlQCBAT1BURkxBR1NfcGFybWFwQAotKyAg QE9QVEZMQUdTX3BjcmUyQCBAT1BURkxBR1NfcGFybWFwQAotICMgKiBlbmQgb2YgbGlicmFyeSB2 YXJpYWJsZXMKLSAKLSAjIHN5c3RlbSBwYWNrYWdlcyBpbmMgbGlicwotQEAgLTEwNiw3ICsxMDYs NyBAQCBNRVRBSU5GT19ESVI9QE1FVEFJTkZPX0RJUkAKLSAKLSAjIHNlbGVjdGVkIGxpYnJhcmll cwotIEZFQVRVUkVfbWVuaGlyTGliPUBGRUFUVVJFX21lbmhpckxpYkAKLS1GRUFUVVJFX3BjcmU9 QEZFQVRVUkVfcGNyZUAKLStGRUFUVVJFX3BjcmU9QEZFQVRVUkVfcGNyZTJACi0gCi0gIyBGZWF0 dXJlcwotIEZFQVRVUkVfUFlUSE9OPUBGRUFUVVJFX1BZVEhPTkAKLUBAIC0xMTQsNyArMTE0LDcg QEAgRkVBVFVSRV9PQ0FNTD1ARkVBVFVSRV9PQ0FNTEAKLSBOT19PQ0FNTEZJTkQ9QFNVQlNUSVRV VEVEX09DQU1MRklOREAKLSAKLSAjIEluY2x1ZGUgcGF0aHMKLS1QQ1JFRElSPUBQQVRIX3BjcmVA Ci0rUENSRURJUj1AUEFUSF9wY3JlMkAKLSBQQVJNQVBESVI9QFBBVEhfcGFybWFwQAotIFBZTUxE SVI9QFBBVEhfcHltbEAKLSBNRU5ISVJESVI9QFBBVEhfbWVuaGlyTGliQAotQEAgLTEyOSw0ICsx MjksNCBAQCBSRUdFWFBfRklMRT1AUkVHRVhQX0ZJTEVACi0gCi0gTUVOSElSX0ZMQUdTPUBERUZB VUxUX01FTkhJUl9GTEFHU0AKLSAKLS1PQ0FNTEFUTEVBU1Q1MD1AT0NBTUxBVExFQVNUNTBACi1c IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLStPQ0FNTEFUTEVBU1Q1MD1AT0NBTUxBVExFQVNU NTBACi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUubGlicyBiL01ha2VmaWxlLmxpYnMKLWluZGV4IDk2 ZTA1ZDI2Zi4uZWQ2Y2UzMDJmIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUubGlicwotKysrIGIvTWFr ZWZpbGUubGlicwotQEAgLTM2LDE1ICszNiwxNSBAQCBPUFRGTEFHU19weW1sICA9ICQoQ0ZMQUdT X3B5bWw6JT0tY2NvcHQgJSkgLWNjbGliIC1scHltbF9zdHVicwotIAotICMgcGNyZSBsaWJyYXJ5 Ci0gIyBOb3RlOiBzZWUgdGhlIGNvbW1lbnQgb2YgdGhlIHB5Y2FtbCBsaWJyYXJ5IGFib3V0IHRo ZSBkb3VibGUgYXBwZWFyYW5jZSBvZiB0aGUgc3R1YnMgbGlicmFyeS4KLS1MT0NBTF9wY3JlICAg ICA9ICQoQllURVNESVI6PS9ieXRlcy5jbWEpICQoUENSRURJUikvcGNyZS5jbWEKLS1MT0NBTE9Q VF9wY3JlICA9ICQoQllURVNESVI6PS9ieXRlcy5jbXhhKSAkKFBDUkVESVIpL3BjcmUuY214YQot LUdMT0JBTF9wY3JlICAgID0gJChCWVRFU0RJUjo9L2J5dGVzLmNtYSkgJChQQ1JFRElSKS9wY3Jl LmNtYQotLUdMT0JBTE9QVF9wY3JlID0gJChCWVRFU0RJUjo9L2J5dGVzLmNteGEpICQoUENSRURJ UikvcGNyZS5jbXhhCi0tRkxBR1NfcGNyZSAgICAgPSBcCi0tCSQoUENSRV9MSUJTOiU9LWNjb3B0 ICUpIC1jY2xpYiAtTCQoUENSRURJUikgLWRsbGliIC1scGNyZV9zdHVicyBcCi0tCS1jY2xpYiAt bHBjcmVfc3R1YnMKLS1PUFRGTEFHU19wY3JlICA9IFwKLS0JJChQQ1JFX0xJQlM6JT0tY2NvcHQg JSkgLWNjbGliIC1MJChQQ1JFRElSKSAtY2NsaWIgLWxwY3JlX3N0dWJzCi0rTE9DQUxfcGNyZTIg ICAgID0gJChCWVRFU0RJUjo9L2J5dGVzLmNtYSkgJChQQ1JFRElSKS9wY3JlMi5jbWEKLStMT0NB TE9QVF9wY3JlMiAgPSAkKEJZVEVTRElSOj0vYnl0ZXMuY214YSkgJChQQ1JFRElSKS9wY3JlMi5j bXhhCi0rR0xPQkFMX3BjcmUyICAgID0gJChCWVRFU0RJUjo9L2J5dGVzLmNtYSkgJChQQ1JFRElS KS9wY3JlMi5jbWEKLStHTE9CQUxPUFRfcGNyZTIgPSAkKEJZVEVTRElSOj0vYnl0ZXMuY214YSkg JChQQ1JFRElSKS9wY3JlMi5jbXhhCi0rRkxBR1NfcGNyZTIgICAgID0gXAotKwkkKFBDUkVfTElC UzolPS1jY29wdCAlKSAtY2NsaWIgLUwkKFBDUkVESVIpIC1kbGxpYiAtbHBjcmUyX3N0dWJzIFwK LSsJLWNjbGliIC1scGNyZTJfc3R1YnMKLStPUFRGTEFHU19wY3JlMiAgPSBcCi0rCSQoUENSRV9M SUJTOiU9LWNjb3B0ICUpIC1jY2xpYiAtTCQoUENSRURJUikgLWNjbGliIC1scGNyZTJfc3R1YnMK LSAKLSAjIGR5bmxpbmsgbGlicmFyeQotIExPQ0FMX2R5bmxpbmsgICAgID0KLWRpZmYgLS1naXQg YS9jb2NjaW5lbGxlLm9wYW0gYi9jb2NjaW5lbGxlLm9wYW0KLWluZGV4IGNlNzQ4NWM3YS4uYzA3 ZWJjZTBkIDEwMDY0NAotLS0tIGEvY29jY2luZWxsZS5vcGFtCi0rKysgYi9jb2NjaW5lbGxlLm9w YW0KLUBAIC0xOCw3ICsxOCw3IEBAIGRlcGVuZHM6IFsKLSAgICJvY2FtbCIKLSAgICJtZW5oaXIi Ci0gICAib2NhbWxmaW5kIgotLSAgInBjcmUiCi0rICAicGNyZTIiCi0gICAic3RkY29tcGF0Igot ICAgInB5bWwiIHsgPj0gIjIwMTcxMTE3IiB9Ci0gICAiY29uZi1wa2ctY29uZmlnIgotZGlmZiAt LWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTEwNmJjNzA0Li5jZDkw MDVhODcgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAg LTE0NCw3ICsxNDQsNyBAQCBkbmwgIGFkZCBhIGxpbmUgZm9yIGVhY2ggcGFja2FnZSB0aGF0IGlz Ci0gZG5sICBjb25maWd1cmVkIHZpYSBBQ19DSEVDS19DT0NDSV9FWFRQS0cKLSBkbmwgIG9yIEFD X1JFUV9DT0NDSV9FWFRQS0cKLSBBQ19DT0NDSV9JTklUX1BLR19FTVBUWShbZHlubGlua10pCi0t QUNfQ09DQ0lfSU5JVF9QS0dfRU1QVFkoW3BjcmVdKQotK0FDX0NPQ0NJX0lOSVRfUEtHX0VNUFRZ KFtwY3JlMl0pCi0gQUNfQ09DQ0lfSU5JVF9QS0dfRU1QVFkoW2J5dGVzXSkgZG5sIGZvciByZWNl bnQgdmVyc2lvbnMgb2YgcGNyZSBvbiBvbGQgT0NhbWwKLSBBQ19DT0NDSV9JTklUX1BLR19FTVBU WShbcHltbF0pCi0gQUNfQ09DQ0lfSU5JVF9QS0dfRU1QVFkoW3N0ZGNvbXBhdF0pCi1AQCAtMzY4 LDE4ICszNjgsMTggQEAgZG5sICAgIE9DQU1MX1BLR19wY3JlOiBpZiAibG9jYWwiIHVzZSBzdHIg cGFja2FnZQotIEFDX0FSR19FTkFCTEUoW3BjcmUtc3ludGF4XSwgQVNfSEVMUF9TVFJJTkcoWy0t ZW5hYmxlLXBjcmUtc3ludGF4XSwgW2VuYWJsZSBwY3JlIHJlZ3VsYXIgZXhwcmVzc2lvbiBzeW50 YXggKGRlZmF1bHQ6IGF1dG8pXSkpCi0gQVNfSUYoW3Rlc3QgIngkZW5hYmxlX3BjcmVfc3ludGF4 IiAhPSAieG5vIl0sCi0gW2RubAotLSAgUEtHX0NIRUNLX01PRFVMRVMoW1BDUkVdLCBbbGlicGNy ZV0sW0FDX1NVQlNUKFtIQVZFX1BDUkVdLFt5ZXNdKV0sW0FDX1NVQlNUKFtIQVZFX1BDUkVdLFtu b10pXSkKLSsgIFBLR19DSEVDS19NT0RVTEVTKFtQQ1JFXSwgW2xpYnBjcmUyLThdLFtBQ19TVUJT VChbSEFWRV9QQ1JFXSxbeWVzXSldLFtBQ19TVUJTVChbSEFWRV9QQ1JFXSxbbm9dKV0pCi0gICBB U19JRihbdGVzdCAteiAiJGVuYWJsZV9wY3JlX3N5bnRheCIgLWEgIngkSEFWRV9QQ1JFIiAhPSB4 eWVzXSwKLSAgIFtkbmwKLSAgICAgQUNfU1VCU1QoW2VuYWJsZV9wY3JlX3N5bnRheF0sIFtub10p Ci0gICBdLAotICAgW2RubAotICAgICBBU19JRihbdGVzdCAieCRlbmFibGVfcGNyZSIgPSAieG5v Il0sIFtBQ19TVUJTVChbZW5hYmxlX3BjcmVdLCBbbG9jYWxdKV0pCi0tICAgIEFDX0NIRUNLX0NP Q0NJX0VYVFBLRyhbcGNyZV0pICBkbmwgIHdpbGwgc2V0ICRlbmFibGVfcGNyZSB0byAneWVzJywg J25vJywgb3IgJ2xvY2FsJwotKyAgICBBQ19DSEVDS19DT0NDSV9FWFRQS0coW3BjcmUyXSkgIGRu bCAgd2lsbCBzZXQgJGVuYWJsZV9wY3JlIHRvICd5ZXMnLCAnbm8nLCBvciAnbG9jYWwnCi0gICAg IEFTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9wY3JlIiA9ICJ4eWVzIl0sCi0gICAgIFtkbmwKLSAgICAg ICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIHBjcmUgZGVwZW5kcyBvbiBieXRlc10pCi0tICAgICAgQVNf SUYoW3Rlc3QgInhgJE9DQU1MRklORCBxdWVyeSAtciAtZm9ybWF0ICclcCcgcGNyZSAyPi9kZXYv bnVsbCB8IGdyZXAgYnl0ZXNgIiA9ICJ4Ynl0ZXMiXSwKLSsgICAgICBBU19JRihbdGVzdCAieGAk T0NBTUxGSU5EIHF1ZXJ5IC1yIC1mb3JtYXQgJyVwJyBwY3JlMiAyPi9kZXYvbnVsbCB8IGdyZXAg Ynl0ZXNgIiA9ICJ4Ynl0ZXMiXSwKLSAgICAgICBbZG5sCi0gICAgICAgICBBQ19NU0dfUkVTVUxU KFt5ZXNdKQotICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtpZiBieXRlcyBpcyBhbiBhY3R1YWwg bW9kdWxlXSkKLUBAIC00MDYsMTQgKzQwNiwxNCBAQCBBU19JRihbdGVzdCAieCRlbmFibGVfcGNy ZV9zeW50YXgiICE9IHhub10sCi0gICAgIEFDX01TR19OT1RJQ0UoW3N1cHBvcnQgZm9yIHBjcmUg c3ludGF4IGlzIGVuYWJsZWRdKQotICAgXSwKLSAgIFtkbmwKLS0gICAgQUNfTVNHX0VSUk9SKFt0 aGUgcGNyZSBmZWF0dXJlIGlzIGVuYWJsZWQgYnV0IHRoZSBwa2ctY29uZmlnIGxpYnBjcmUgbGli cmFyeSBpcyBub3QgZm91bmRdKQotKyAgICBBQ19NU0dfRVJST1IoW3RoZSBwY3JlIGZlYXR1cmUg aXMgZW5hYmxlZCBidXQgdGhlIHBrZy1jb25maWcgbGlicGNyZTItOCBsaWJyYXJ5IGlzIG5vdCBm b3VuZF0pCi0gICBdKQotIAotICAgQUNfU1VCU1QoW1JFR0VYUF9NT0RVTEVdLCBbUmVnZXhwX3Bj cmVdKQotICAgQUNfU1VCU1QoW1JFR0VYUF9GSUxFXSwgW3JlZ2V4cF9wY3JlLm1sXSkKLSBdLAot IFtkbmwKLS0gIEFDX0NPQ0NJX0lOSVRfUEtHX0VNUFRZKFtwY3JlXSkKLSsgIEFDX0NPQ0NJX0lO SVRfUEtHX0VNUFRZKFtwY3JlMl0pCi0gICBBQ19TVUJTVChbUkVHRVhQX01PRFVMRV0sIFtSZWdl eHBfc3RyXSkKLSAgIEFDX1NVQlNUKFtSRUdFWFBfRklMRV0sIFtyZWdleHBfc3RyLm1sXSkKLSBd KQotQEAgLTU3MCw3ICs1NzAsNyBAQCBBU19JRihbdGVzdCAiJE1BS0Vfc3RkY29tcGF0Il0sCi0g QVNfSUYoW3Rlc3QgIiRNQUtFX3Bhcm1hcCJdLAotICAgQUNfQ09ORklHX1NVQkRJUlMoYnVuZGxl cy9wYXJtYXApKQotIAotLUFTX0lGKFt0ZXN0ICIkTUFLRV9wY3JlIl0sCi0rQVNfSUYoW3Rlc3Qg IiRNQUtFX3BjcmUyIl0sCi0gICBbQVNfSUYoW3Rlc3QgIngkT0NBTUxBVExFQVNUNDAzMCIgPSB4 bm8gIF0sCi0gICAgIFtBQ19TVUJTVChbQ0FNTG5vcmV0dXJuX3N0YXJ0XSwgW10pCi0gICAgICBB Q19TVUJTVChbQ0FNTG5vcmV0dXJuX2VuZF0sIFtdKV0sCi1AQCAtNjMyLDcgKzYzMiw3IEBAIHB5 dGhvbiBzY3JpcHRpbmc6ICRlbmFibGVfcHl0aG9uCShvdmVycmlkYWJsZSB3aXRoIC0tZW5hYmxl LXB5dGhvbikKLSAKLSBwY3JlIHJlZ2V4ZXM6ICAgICAkZW5hYmxlX3BjcmVfc3ludGF4CShvdmVy cmlkYWJsZSB3aXRoIC0tZW5hYmxlLXBjcmUtc3ludGF4KQotIHBjcmUgbW9kdWxlOiAgICAgICRl bmFibGVfcGNyZQkoZm9yIGxvY2FsIHBhY2thZ2UgdXNlIC0tZGlzYWJsZS1wY3JlKQotLXBjcmUg bGlicmFyeTogICAgICRIQVZFX1BDUkUJKHJlcXVpcmVzIHRoZSBsaWJwY3JlLW9jYW1sLWRldiBw YWNrYWdlKQotK3BjcmUgbGlicmFyeTogICAgICRIQVZFX1BDUkUJKHJlcXVpcmVzIHRoZSBsaWJw Y3JlMi1vY2FtbC1kZXYgcGFja2FnZSkKLSAKLSBvcHRpbWl6ZWQgc3BhdGNoOiAkZW5hYmxlX29w dAkob3ZlcnJpZGFibGUgd2l0aCAtLWRpc2FibGUtb3B0KQotIAotZGlmZiAtLWdpdCBhL2dsb2Jh bHMvcmVnZXhwX3BjcmUubWwgYi9nbG9iYWxzL3JlZ2V4cF9wY3JlLm1sCi1pbmRleCBkMDlmODUy OGYuLjkzMDczNzU4ZiAxMDA2NDQKLS0tLSBhL2dsb2JhbHMvcmVnZXhwX3BjcmUubWwKLSsrKyBi L2dsb2JhbHMvcmVnZXhwX3BjcmUubWwKLUBAIC01LDcgKzUsNyBAQAotICAqKQotIAotIHR5cGUg cmVnZXhwID0KLS0gICAgUGNyZSBvZiBpbnQgKCogUGNyZS5yZWdleHAgKikKLSsgICAgUGNyZSBv ZiBpbnQgKCogUGNyZTIucmVnZXhwICopCi0gICB8IFN0ciBvZiBTdHIucmVnZXhwCi0gCi0gKCog QSB0YWJsZSBpcyB1c2VkIGJlY2F1c2UgUENSRSByZWd1bGFyIGV4cHJlc3Npb25zIGFyZSBub3Qg Y29tcGFyYWJsZS4KLUBAIC0yNiw3ICsyNiw3IEBAIGxldCByZWdleHAgc3RyaW5nID0KLSAgICAg YmVnaW4KLSAgICAgICBsZXQgYyA9ICFwY3JlX2N0ciBpbgotICAgICAgIHBjcmVfY3RyIDo9ICFw Y3JlX2N0ciArIDE7Ci0tICAgICAgSGFzaHRibC5hZGQgcGNyZV90YWJsZSBjIChQY3JlLnJlZ2V4 cCBzdHJpbmcpOwotKyAgICAgIEhhc2h0YmwuYWRkIHBjcmVfdGFibGUgYyAoUGNyZTIucmVnZXhw IHN0cmluZyk7Ci0gICAgICAgUGNyZSBjCi0gICAgIGVuZAotICAgZWxzZSBTdHIgKFN0ci5yZWdl eHAgc3RyaW5nKQotQEAgLTM1LDcgKzM1LDcgQEAgbGV0IHN0cmluZ19tYXRjaCByZWdleHAgc3Ry aW5nID0KLSAgIG1hdGNoIHJlZ2V4cCB3aXRoCi0gICAgICAgUGNyZSByZWdleHAgLT4KLSAJbGV0 IHJlZ2V4cCA9IEhhc2h0YmwuZmluZCBwY3JlX3RhYmxlIHJlZ2V4cCBpbgotLQlQY3JlLnBtYXRj aCB+cmV4OnJlZ2V4cCBzdHJpbmcKLSsJUGNyZTIucG1hdGNoIH5yZXg6cmVnZXhwIHN0cmluZwot ICAgICB8IFN0ciByZWdleHAgLT4KLSAgICAgICB0cnkKLSAJaWdub3JlKFN0ci5zZWFyY2hfZm9y d2FyZCByZWdleHAgc3RyaW5nIDApOwotZGlmZiAtLWdpdCBhL3NldHVwL2Zha2Utc3Vic3Quc2gg Yi9zZXR1cC9mYWtlLXN1YnN0LnNoCi1pbmRleCBlYjk5OWQzZWMuLjJhYTJhMjcwMiAxMDA3NTUK LS0tLSBhL3NldHVwL2Zha2Utc3Vic3Quc2gKLSsrKyBiL3NldHVwL2Zha2Utc3Vic3Quc2gKLUBA IC0xOSw3ICsxOSw3IEBAIHNldCAtZQotICMgdGhlIG5leHQgbGluZXMgaW4gdGhlIGZpbGUuCi0g Ci0gIyB0aGUgcmVwbGllcyBmaWxlIGFzc3VtZXMgdGhhdCB0aGUKLS0jIGxpYnBjcmUgYW5kIHB5 dGhvbiBsaWJyYXJpZXMgYXJlIGluc3RhbGxlZCwgYW5kCi0rIyBsaWJwY3JlMiBhbmQgcHl0aG9u IGxpYnJhcmllcyBhcmUgaW5zdGFsbGVkLCBhbmQKLSAjIHRoYXQgbm9uZSBvZiB0aGUgb3B0aW9u YWwgb2NhbWwgbGlicmFyaWVzIGFyZQotICMgaW5zdGFsbGVkLgotIAotQEAgLTEwMiw5ICsxMDIs OSBAQCBweXRob25saWJzKCkgewotICAgZWNobyAiLUwke3ByZWZpeH0vbGliIC1scHl0aG9uJHt2 ZXJzaW9ufSIKLSB9Ci0gCi0tIyBzdWNjZWVkcyBvbmx5IGlmICIvdXNyL2luY2x1ZGUvcGNyZS5o IiBleGlzdHMKLSsjIHN1Y2NlZWRzIG9ubHkgaWYgIi91c3IvaW5jbHVkZS9wY3JlMi5oIiBleGlz dHMKLSBjaGVja3BjcmUoKSB7Ci0tICB0ZXN0IC1mIC91c3IvaW5jbHVkZS9wY3JlLmgKLSsgIHRl c3QgLWYgL3Vzci9pbmNsdWRlL3BjcmUyLmgKLSB9Ci0gCi0gIyBpdGVyYXRlIHRocm91Z2ggcGF0 dGVybi1yZXNwb25zZSBwYWlycwotLS0gCi0yLjUyLjAKLQoKZGlmZiAtLWdpdCBhLzAwMDItdXNl LXBjcmUyLWluc3RlYWQtb2YtcGNyZS1pbi1zb21lLW1vcmUtcGxhY2VzLnBhdGNoIGIvMDAwMi11 c2UtcGNyZTItaW5zdGVhZC1vZi1wY3JlLWluLXNvbWUtbW9yZS1wbGFjZXMucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0MGQyZGIuLjAwMDAwMDAKLS0tIGEvMDAwMi11c2Ut cGNyZTItaW5zdGVhZC1vZi1wY3JlLWluLXNvbWUtbW9yZS1wbGFjZXMucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDMyMWY2YzEzMTdkNTNjMzI2M2E0ZTBmMzVkMmE0 M2YyYWI4NWY1NmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgR2FtYmll ciA8dmljdG9yLmdhbWJpZXJAaW5yaWEuZnI+Ci1EYXRlOiBXZWQsIDE3IERlYyAyMDI1IDEzOjI4 OjA2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi85XSB1c2UgcGNyZTIgaW5zdGVhZCBvZiBwY3Jl IGluIHNvbWUgbW9yZSBwbGFjZXMKLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZmEwNjJm YjM2NjBiMTIzN2QzMmQyN2ZiNTAyN2NiNjhmNGM1YWFlMSkKLS0tLQotIE1ha2VmaWxlIHwgMTIg KysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlv bnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDZiNjI0ZTM3 OC4uY2RkYjgxY2U2IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAt MTIxLDcgKzEyMSw3IEBAIExJQlJBUklFU19zcGF0Y2ggOj0gJChMSUJSQVJJRVMpCi0gCi0gTElC UkFSSUVTX3NwZ2VuIDo9ICQoQ09SRV9MSUJSQVJJRVMpCi0gCi0tQ09SRV9CVU5ETEVTPXN0ZGNv bXBhdCBtZW5oaXJMaWIgcGNyZQotK0NPUkVfQlVORExFUz1zdGRjb21wYXQgbWVuaGlyTGliIHBj cmUyCi0gCi0gQUxMX0JVTkRMRVM9JChDT1JFX0JVTkRMRVMpIHBhcm1hcCBweW1sCi0gCi1AQCAt MzE5LDggKzMxOSw4IEBAIGluc3RhbGwtc3BhdGNoIDogc3BhdGNoJChUT09MU19TVUZGSVgpCi0g CQkkKElOU1RBTExfUFJPR1JBTSkgYnVuZGxlcy9weW1sL2RsbHB5bWxfc3R1YnMuc28gXAotIAkJ CSQoREVTVERJUikkKExJQkRJUik7IFwKLSAJZmkKLS0JaWYgdGVzdCAtZiBidW5kbGVzL3BjcmUv ZGxscGNyZV9zdHVicy5zbzsgdGhlbiBcCi0tCQkkKElOU1RBTExfUFJPR1JBTSkgYnVuZGxlcy9w Y3JlL2RsbHBjcmVfc3R1YnMuc28gXAotKwlpZiB0ZXN0IC1mIGJ1bmRsZXMvcGNyZTIvZGxscGNy ZTJfc3R1YnMuc287IHRoZW4gXAotKwkJJChJTlNUQUxMX1BST0dSQU0pIGJ1bmRsZXMvcGNyZTIv ZGxscGNyZTJfc3R1YnMuc28gXAotIAkJCSQoREVTVERJUikkKExJQkRJUik7IFwKLSAJZmkKLSAJ JChJTlNUQUxMX1BST0dSQU0pIHNwYXRjaCQoVE9PTFNfU1VGRklYKSAkKERFU1RESVIpJChCSU5E SVIpL3NwYXRjaAotQEAgLTUyMSwxMSArNTIxLDExIEBAIGVuZGlmCi0gaWZuZXEgKCQoUENSRV9M SUIpLCkKLSBpZmVxICgkKE5BVElWRSkseWVzKQotICQoUENSRV9MSUIpOiAkKFNURENPTVBBVF9M SUIpCi0tCSQoTUFLRSkgLUMgYnVuZGxlcy9wY3JlIGFsbAotLQkkKE1BS0UpIC1DIGJ1bmRsZXMv cGNyZSBhbGwub3B0Ci0rCSQoTUFLRSkgLUMgYnVuZGxlcy9wY3JlMiBhbGwKLSsJJChNQUtFKSAt QyBidW5kbGVzL3BjcmUyIGFsbC5vcHQKLSBlbHNlCi0gJChQQ1JFX0xJQik6ICQoU1REQ09NUEFU X0xJQikKLS0JJChNQUtFKSAtQyBidW5kbGVzL3BjcmUgYWxsCi0rCSQoTUFLRSkgLUMgYnVuZGxl cy9wY3JlMiBhbGwKLSBlbmRpZgotIGVuZGlmCi0gCi0tLSAKLTIuNTIuMAotCgpkaWZmIC0tZ2l0 IGEvMDAwMy1yZXBsYWNlLXBjcmUtd2l0aC1wY3JlMi1pbi1pbnN0YWxsLnR4dC1pbnN0cnVjdGlv bnMucGF0Y2ggYi8wMDAzLXJlcGxhY2UtcGNyZS13aXRoLXBjcmUyLWluLWluc3RhbGwudHh0LWlu c3RydWN0aW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhkNDZjNC4u MDAwMDAwMAotLS0gYS8wMDAzLXJlcGxhY2UtcGNyZS13aXRoLXBjcmUyLWluLWluc3RhbGwudHh0 LWluc3RydWN0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLUZyb20g ZDM1ZjhiMDhkZTg1MGY1OTE0MDhhMGY2Y2RkNWRlMjVmMTc1MTk0NyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IFZpY3RvciBHYW1iaWVyIDx2aWN0b3IuZ2FtYmllckBpbnJpYS5mcj4K LURhdGU6IFdlZCwgMTcgRGVjIDIwMjUgMTE6Mzk6MTIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAz LzldIHJlcGxhY2UgcGNyZSB3aXRoIHBjcmUyIGluIGluc3RhbGwudHh0IGluc3RydWN0aW9ucwot Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAwZmFjZDQwM2YxNjhhYWJlMjFhZTE5YjBmMGQ5 NDkxYTM2MjcxYjRiKQotLS0tCi0gaW5zdGFsbC50eHQgfCAyMCArKysrKysrKysrLS0tLS0tLS0t LQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQot ZGlmZiAtLWdpdCBhL2luc3RhbGwudHh0IGIvaW5zdGFsbC50eHQKLWluZGV4IDBhZTlhMzg4OS4u MTNhZWU5YWU3IDEwMDY0NAotLS0tIGEvaW5zdGFsbC50eHQKLSsrKyBiL2luc3RhbGwudHh0Ci1A QCAtMzAsMTQgKzMwLDE0IEBAIE9uIERlYmlhbi9VYnVudHUsIGluc3RhbGwgdGhlIGZvbGxvd2lu ZyBwYWNrYWdlczoKLSAgICAgSWYgeW91IGRvIG5vdCBpbnN0YWxsIGxpYnBhcm1hcC1vY2FtbC1k ZXYsIHRoZW4geW91IHdpbGwgYXV0b21hdGljYWxseSB1c2UKLSAgICAgdGhlIGJ1bmRsZSBpbnN0 ZWFkLiBIb3dldmVyLCBpZiB5b3UgdXNlZCBvcGFtIHRvIHN3aXRjaCB0byBhIGRpZmZlcmVudAot ICAgICB2ZXJzaW9uIG9mIE9DYW1sLCB5b3UgbXVzdCB1bmluc3RhbGwgbGlicGFybWFwLW9jYW1s LWRldiAvIGxpYnBhcm1hcC1vY2FtbC4KLS0gLSBsaWJwY3JlLW9jYW1sLWRldiAob3B0aW9uYWws IGZvciBQQ1JFIHN1cHBvcnQsIGJ1bmRsZWQpCi0tICAgIElmIHlvdSBkbyBub3QgaW5zdGFsbCBs aWJwY3JlLW9jYW1sLWRldiwgdGhlbiB5b3Ugd2lsbCBhdXRvbWF0aWNhbGx5IHVzZQotKyAtIGxp YnBjcmUyLW9jYW1sLWRldiAob3B0aW9uYWwsIGZvciBQQ1JFIHN1cHBvcnQsIGJ1bmRsZWQpCi0r ICAgIElmIHlvdSBkbyBub3QgaW5zdGFsbCBsaWJwY3JlMi1vY2FtbC1kZXYsIHRoZW4geW91IHdp bGwgYXV0b21hdGljYWxseSB1c2UKLSAgICAgdGhlIGJ1bmRsZSBpbnN0ZWFkLiBIb3dldmVyLCBp biBvcmRlciBmb3IgdGhlIGJ1bmRsZSB0byB3b3JrLCB5b3UgYWxzbwotICAgICBuZWVkOgotLSAg LSBsaWJwY3JlMy1kZXYgKG9wdGlvbmFsLCBub3QgYnVuZGxlZCkKLSsgIC0gbGlicGNyZTItZGV2 IChvcHRpb25hbCwgbm90IGJ1bmRsZWQpCi0gICAgICBBZGRpdGlvbmFsbHksIGlmIHlvdSB1c2Vk IG9wYW0gdG8gc3dpdGNoIHRvIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgT0NhbWwKLS0gICAgIGFu ZCB3YW50IFBDUkUgc3VwcG9ydCwgdGhlbiBtYWtlIHN1cmUgeW91IGhhdmUgbGlicGNyZS1vY2Ft bC1kZXYgLwotLSAgICAgbGlicGNyZS1vY2FtbCB1bmluc3RhbGxlZCBhbmQgbGlicGNyZTMtZGV2 IGluc3RhbGxlZCwgb3RoZXJ3aXNlIENvY2NpbmVsbGUKLSsgICAgIGFuZCB3YW50IFBDUkUgc3Vw cG9ydCwgdGhlbiBtYWtlIHN1cmUgeW91IGhhdmUgbGlicGNyZTItb2NhbWwtZGV2IC8KLSsgICAg IGxpYnBjcmUyLW9jYW1sIHVuaW5zdGFsbGVkIGFuZCBsaWJwY3JlMi1kZXYgaW5zdGFsbGVkLCBv dGhlcndpc2UgQ29jY2luZWxsZQotICAgICAgd2lsbCBub3QgY29tcGlsZS4KLSAKLSBPbiBGZWRv cmEsIGluc3RhbGwgdGhlIGZvbGxvd2luZyBwYWNrYWdlczoKLUBAIC00OSwxNiArNDksMTYgQEAg T24gRmVkb3JhLCBpbnN0YWxsIHRoZSBmb2xsb3dpbmcgcGFja2FnZXM6Ci0gIC0gb2NhbWwtZmlu ZGxpYi1kZXZlbAotICAtIG9jYW1sLW9jYW1sZG9jCi0gIC0gb2NhbWwtbWVuaGlyIChvcHRpb25h bCwgYnVuZGxlZCkKLS0gLSBvY2FtbC1wY3JlLWRldmVsIChvcHRpb25hbCwgYnVuZGxlZCkKLSsg LSBvY2FtbC1wY3JlMi1kZXZlbCAob3B0aW9uYWwsIGJ1bmRsZWQpCi0gICAgIE5vdGU6IGlmIHlv dSB1c2VkIG9wYW0gdG8gc3dpdGNoIHRvIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgT0NhbWwsCi0t ICAgIGluc3RhbGxpbmcgb2NhbWwtcGNyZS1kZXZlbCB3aWxsIG1ha2UgY29tcGlsYXRpb24gaW1w b3NzaWJsZS4gQWRkaXRpb25hbGx5LAotKyAgICBpbnN0YWxsaW5nIG9jYW1sLXBjcmUyLWRldmVs IHdpbGwgbWFrZSBjb21waWxhdGlvbiBpbXBvc3NpYmxlLiBBZGRpdGlvbmFsbHksCi0gICAgIFBD UkUgc3VwcG9ydCBhbmQgT0NhbWwgc2NyaXB0aW5nIHdpbGwgYmUgaW1wb3NzaWJsZS4KLSBJZiB5 b3Ugd2FudCBQeXRob24gc2NyaXB0aW5nOiBDb2NjaW5lbGxlIGlzIG5vdCBjb21wYXRpYmxlIHdp dGggUHl0aG9uIDMuMTMsCi0gd2hpY2ggaXMgdGhlIGRlZmF1bHQgb24gRmVkb3JhIGFzIG9mIDIw MjQtMTItMTkuIENvbnNpZGVyIHN3aXRjaGluZyB0byBQeXRob24KLSAzLjEyLCBmb3IgZXhhbXBs ZS4KLSAKLSBPbiBBcmNoIExpbnV4LCBpbnN0YWxsIHRoZSBmb2xsb3dpbmcgcGFja2FnZXM6Ci0t JCBwYWNtYW4gLVN5dSBwa2ctY29uZmlnIG9jYW1sIG9jYW1sLWZpbmRsaWIgYXV0b2NvbmYgYXV0 b21ha2UgcGNyZSBtYWtlCi0rJCBwYWNtYW4gLVN5dSBwa2ctY29uZmlnIG9jYW1sIG9jYW1sLWZp bmRsaWIgYXV0b2NvbmYgYXV0b21ha2UgcGNyZTIgbWFrZQotIGFzIHdlbGwgYXMgdGhlIEMgY29t cGlsZXIgb2YgeW91ciBjaG9pY2UuCi0gTm90ZTogaWYgeW91IHVzZWQgb3BhbSB0byBzd2l0Y2gg dG8gYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBPQ2FtbCwgT0NhbWwKLSBzY3JpcHRpbmcgd2lsbCBi ZSBpbXBvc3NpYmxlLgotQEAgLTcwLDEyICs3MCwxMiBAQCBidW5kbGVzKToKLSAgIGRldi1idWls ZC9saWJ0b29sCi0gICBkZXYtbGFuZy9vY2FtbAotICAgZGV2LWxhbmcvcHl0aG9uCi0tICBkZXYt bGlicy9saWJwY3JlCi0rICBkZXYtbGlicy9saWJwY3JlMgotICAgZGV2LW1sL2NhbWxwNAotICAg ZGV2LW1sL2ZpbmRsaWIKLSAgIGRldi1tbC9tZW5oaXIKLSAgIGRldi1tbC9wYXJtYXAKLS0gIGRl di1tbC9wY3JlLW9jYW1sCi0rICBkZXYtbWwvcGNyZTItb2NhbWwKLSAgIGRldi1tbC9zdGRjb21w YXQKLSBZb3UgbWF5IGFsc28gbmVlZDoKLSAgIGRldi1tbC9zZXhwbGliCi0tLSAKLTIuNTIuMAot CgpkaWZmIC0tZ2l0IGEvMDAwNC1yZXBsYWNlLXBjcmUtYnVuZGxlLXdpdGgtcGNyZTItYnVuZGxl LnBhdGNoIGIvMDAwNC1yZXBsYWNlLXBjcmUtYnVuZGxlLXdpdGgtcGNyZTItYnVuZGxlLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDlhNTg3Li4wMDAwMDAwCi0tLSBhLzAw MDQtcmVwbGFjZS1wY3JlLWJ1bmRsZS13aXRoLXBjcmUyLWJ1bmRsZS5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDkyMzUgKzAsMCBAQAotRnJvbSBiZDFhZGM3ZmFmOTA5MzllNzk2Y2EwNTNiOTBm N2Q0NWRhMmNiZDVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmljdG9yIEdhbWJp ZXIgPHZpY3Rvci5nYW1iaWVyQGlucmlhLmZyPgotRGF0ZTogV2VkLCAxNCBKYW4gMjAyNiAxMjow Mzo0OCArMDEwMAotU3ViamVjdDogW1BBVENIIDQvOV0gcmVwbGFjZSBwY3JlIGJ1bmRsZSB3aXRo IHBjcmUyIGJ1bmRsZQotCi1Tb3VyY2UgZm9yIHBjcmUyIGNvZGU6Ci1odHRwczovL2dpdGh1Yi5j b20vY2FtbHA1L3BjcmUyLW9jYW1sL3RyZWUvNGM5MzJmY2I0ZDlkMjdhMDc3ZDAyMzY5MTk2YWIz ZjBhNTc3NDM2MgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBkMWE2N2VhYjdhYTRhMTBl NTRhMTVmZjUxNTE3M2FhZTc2YjNiM2Q3KQotLS0tCi0gYnVuZGxlcy9wY3JlLy5naXRpZ25vcmUg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCAtCi0gYnVuZGxlcy9wY3JlL2J5dGVzX2NvbXBh dC5tbCAgICAgICAgICAgICAgICAgIHwgICAgNSAtCi0gYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwv Q0hBTkdFUy5tZCAgICAgICAgICAgIHwgICAyOSAtCi0gYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwv TWFrZWZpbGUgICAgICAgICAgICAgIHwgICAxMCAtCi0gYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwv UkVBRE1FLm1kICAgICAgICAgICAgIHwgIDExMCAtLQotIGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1s L2R1bmUgICAgICAgICAgICAgICAgICB8ICAgIDQgLQotIGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1s L2R1bmUtcHJvamVjdCAgICAgICAgICB8ICAgIDIgLQotIGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1s L2V4YW1wbGVzL01ha2VmaWxlICAgICB8ICAgIDkgLQotIGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1s L2V4YW1wbGVzL1JFQURNRS5tZCAgICB8ICAgMjggLQotIGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1s L2V4YW1wbGVzL2R1bmUgICAgICAgICB8ICAgIDQgLQotIGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1s L2V4YW1wbGVzL3BjcmVncmVwLm1sICB8ICAxMTMgLS0KLSBidW5kbGVzL3BjcmUvcGNyZS1vY2Ft bC9leGFtcGxlcy9zdWJzdC5tbCAgICAgfCAgIDU0IC0KLSBidW5kbGVzL3BjcmUvcGNyZS1vY2Ft bC9wY3JlLm9wYW0gICAgICAgICAgICAgfCAgIDI3IC0KLSAuLi4vcGNyZS9wY3JlLW9jYW1sL3By ZS12Ny4zLjAtQ0hBTkdFUy50eHQgICAgfCAgNjk4IC0tLS0tLS0tLS0KLSBidW5kbGVzL3BjcmUv cGNyZS1vY2FtbC9zcmMvLmdpdGlnbm9yZSAgICAgICAgfCAgICAxIC0KLSBidW5kbGVzL3BjcmUv cGNyZS1vY2FtbC9zcmMvTWFrZWZpbGUgICAgICAgICAgfCAgICA5IC0KLSAuLi4vcGNyZS9wY3Jl LW9jYW1sL3NyYy9jb25maWcvZGlzY292ZXIubWwgICAgfCAgIDE1IC0KLSBidW5kbGVzL3BjcmUv cGNyZS1vY2FtbC9zcmMvY29uZmlnL2R1bmUgICAgICAgfCAgICA0IC0KLSBidW5kbGVzL3BjcmUv cGNyZS1vY2FtbC9zcmMvZHVuZSAgICAgICAgICAgICAgfCAgIDE2IC0KLSBidW5kbGVzL3BjcmUv cGNyZS1vY2FtbC9zcmMvcGNyZS5tbC5pbiAgICAgICAgfCAxMDU1IC0tLS0tLS0tLS0tLS0tCi0g YnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL3BjcmUubWxpICAgICAgICAgIHwgIDkzMCAtLS0t LS0tLS0tLS0tCi0gYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL3BjcmVfc3R1YnMuYy5pbiAg IHwgIDg2MiAtLS0tLS0tLS0tLS0KLSAuLi4vcGNyZTItb2NhbWx9Ly5naXRpZ25vcmUgICAgICAg ICAgICAgICAgICAgfCAgICAwCi0gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9DSEFOR0VMT0cu bWQgICAgICAgIHwgICA2OSArCi0gLi4uL3BjcmUyLW9jYW1sfS9MSUNFTlNFLm1kICAgICAgICAg ICAgICAgICAgIHwgICAgNCArLQotIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvTWFrZWZpbGUg ICAgICAgICAgICB8ICAgMTUgKwotIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvUkVBRE1FLm1k ICAgICAgICAgICB8ICAxMzggKysKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2R1bmUgICAg ICAgICAgICAgICAgfCAgICA5ICsKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2R1bmUtcHJv amVjdCAgICAgICAgfCAgIDMyICsKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVz L01ha2VmaWxlICAgfCAgICA5ICsKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVz L1JFQURNRS5tZCAgfCAgIDQ4ICsKLSAuLi4vcGNyZTItb2NhbWx9L2V4YW1wbGVzL2Nsb2MubWwg ICAgICAgICAgICAgfCAgICAyICstCi0gLi4uL3BjcmUyLW9jYW1sfS9leGFtcGxlcy9jb3VudF9o YXNoLm1sICAgICAgIHwgICAgNiArLQotIC4uLi9wY3JlMi9wY3JlMi1vY2FtbC9leGFtcGxlcy9k ZmFfcmVzdGFydC5tbCB8ICAgNDAgKwotIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBs ZXMvZHVuZSAgICAgICB8ICAgIDQgKwotIC4uLi9wY3JlMi9wY3JlMi1vY2FtbC9leGFtcGxlcy9w Y3JlMmdyZXAubWwgICB8ICAxMjggKysKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1w bGVzL3N1YnN0Lm1sICAgfCAgIDU3ICsKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9N YWtlZmlsZSAgICAgICAgfCAgIDE1ICsKLSAuLi4vcGNyZTItb2NhbWwvbGlifS9jb25maWcvTWFr ZWZpbGUgICAgICAgICAgfCAgICAwCi0gLi4uL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9jb25maWcv ZGlzY292ZXIubWwgIHwgICAxNCArCi0gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIvY29u ZmlnL2R1bmUgICAgIHwgICAgNCArCi0gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIvZHVu ZSAgICAgICAgICAgIHwgICAxOCArCi0gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIvcGNy ZTIubWwgICAgICAgIHwgMTIzMSArKysrKysrKysrKysrKysrKwotIGJ1bmRsZXMvcGNyZTIvcGNy ZTItb2NhbWwvbGliL3BjcmUyLm1saSAgICAgICB8IDEwNjggKysrKysrKysrKysrKysKLSBidW5k bGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9wY3JlMl9zdHVicy5jICAgfCAgODA3ICsrKysrKysr KysrCi0gLi4uL3BjcmUyL3BjcmUyLW9jYW1sL3BhX3BweF90ZXN0L01ha2VmaWxlICAgIHwgICAx MSArCi0gLi4uL3BjcmUyLW9jYW1sL3BhX3BweF90ZXN0L3BjcmUyX3Rlc3RzLm1sICAgIHwgIDI0 OSArKysrCi0gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9wY3JlMi5vcGFtICAgICAgICAgIHwg ICAzNyArCi0gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC90ZXN0L2R1bmUgICAgICAgICAgIHwg ICAxNCArCi0gLi4uL3BjcmUyL3BjcmUyLW9jYW1sL3Rlc3Qvb2xkX3BjcmUyX3Rlc3RzLm1sIHwg ICAyNCArCi0gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC90ZXN0L3BjcmUyX3Rlc3RzLm1sIHwg IDc0NiArKysrKysrKysrCi0gNTEgZmlsZXMgY2hhbmdlZCwgNDc5NCBpbnNlcnRpb25zKCspLCAz OTk0IGRlbGV0aW9ucygtKQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUvLmdpdGln bm9yZQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUvYnl0ZXNfY29tcGF0Lm1sCi0g ZGVsZXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL0NIQU5HRVMubWQKLSBk ZWxldGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvTWFrZWZpbGUKLSBkZWxl dGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvUkVBRE1FLm1kCi0gZGVsZXRl IG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2R1bmUKLSBkZWxldGUgbW9kZSAx MDA2NDQgYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZHVuZS1wcm9qZWN0Ci0gZGVsZXRlIG1vZGUg MTAwNjQ0IGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1wbGVzL01ha2VmaWxlCi0gZGVsZXRl IG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1wbGVzL1JFQURNRS5tZAot IGRlbGV0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9leGFtcGxlcy9kdW5l Ci0gZGVsZXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1wbGVzL3Bj cmVncmVwLm1sCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4 YW1wbGVzL3N1YnN0Lm1sCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZS9wY3JlLW9j YW1sL3BjcmUub3BhbQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUvcGNyZS1vY2Ft bC9wcmUtdjcuMy4wLUNIQU5HRVMudHh0Ci0gZGVsZXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNy ZS9wY3JlLW9jYW1sL3NyYy8uZ2l0aWdub3JlCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMv cGNyZS9wY3JlLW9jYW1sL3NyYy9NYWtlZmlsZQotIGRlbGV0ZSBtb2RlIDEwMDY0NCBidW5kbGVz L3BjcmUvcGNyZS1vY2FtbC9zcmMvY29uZmlnL2Rpc2NvdmVyLm1sCi0gZGVsZXRlIG1vZGUgMTAw NjQ0IGJ1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9jb25maWcvZHVuZQotIGRlbGV0ZSBtb2Rl IDEwMDY0NCBidW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvZHVuZQotIGRlbGV0ZSBtb2RlIDEw MDY0NCBidW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvcGNyZS5tbC5pbgotIGRlbGV0ZSBtb2Rl IDEwMDY0NCBidW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvcGNyZS5tbGkKLSBkZWxldGUgbW9k ZSAxMDA2NDQgYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL3BjcmVfc3R1YnMuYy5pbgotIHJl bmFtZSBidW5kbGVzL3twY3JlL3BjcmUtb2NhbWwgPT4gcGNyZTIvcGNyZTItb2NhbWx9Ly5naXRp Z25vcmUgKDEwMCUpCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZTIvcGNyZTItb2Nh bWwvQ0hBTkdFTE9HLm1kCi0gcmVuYW1lIGJ1bmRsZXMve3BjcmUvcGNyZS1vY2FtbCA9PiBwY3Jl Mi9wY3JlMi1vY2FtbH0vTElDRU5TRS5tZCAoOTklKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5k bGVzL3BjcmUyL3BjcmUyLW9jYW1sL01ha2VmaWxlCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1bmRs ZXMvcGNyZTIvcGNyZTItb2NhbWwvUkVBRE1FLm1kCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1bmRs ZXMvcGNyZTIvcGNyZTItb2NhbWwvZHVuZQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3Bj cmUyL3BjcmUyLW9jYW1sL2R1bmUtcHJvamVjdAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVz L3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVzL01ha2VmaWxlCi0gY3JlYXRlIG1vZGUgMTAwNjQ0 IGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvUkVBRE1FLm1kCi0gcmVuYW1lIGJ1 bmRsZXMve3BjcmUvcGNyZS1vY2FtbCA9PiBwY3JlMi9wY3JlMi1vY2FtbH0vZXhhbXBsZXMvY2xv Yy5tbCAoOTclKQotIHJlbmFtZSBidW5kbGVzL3twY3JlL3BjcmUtb2NhbWwgPT4gcGNyZTIvcGNy ZTItb2NhbWx9L2V4YW1wbGVzL2NvdW50X2hhc2gubWwgKDYyJSkKLSBjcmVhdGUgbW9kZSAxMDA2 NDQgYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9leGFtcGxlcy9kZmFfcmVzdGFydC5tbAotIGNy ZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVzL2R1bmUK LSBjcmVhdGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9leGFtcGxlcy9w Y3JlMmdyZXAubWwKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2Ft bC9leGFtcGxlcy9zdWJzdC5tbAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUyL3Bj cmUyLW9jYW1sL2xpYi9NYWtlZmlsZQotIHJlbmFtZSBidW5kbGVzL3twY3JlL3BjcmUtb2NhbWwv c3JjID0+IHBjcmUyL3BjcmUyLW9jYW1sL2xpYn0vY29uZmlnL01ha2VmaWxlICgxMDAlKQotIGNy ZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9jb25maWcvZGlz Y292ZXIubWwKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9s aWIvY29uZmlnL2R1bmUKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlMi9wY3JlMi1v Y2FtbC9saWIvZHVuZQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUyL3BjcmUyLW9j YW1sL2xpYi9wY3JlMi5tbAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVzL3BjcmUyL3BjcmUy LW9jYW1sL2xpYi9wY3JlMi5tbGkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlMi9w Y3JlMi1vY2FtbC9saWIvcGNyZTJfc3R1YnMuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBidW5kbGVz L3BjcmUyL3BjcmUyLW9jYW1sL3BhX3BweF90ZXN0L01ha2VmaWxlCi0gY3JlYXRlIG1vZGUgMTAw NjQ0IGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvcGFfcHB4X3Rlc3QvcGNyZTJfdGVzdHMubWwK LSBjcmVhdGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9wY3JlMi5vcGFt Ci0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvdGVzdC9kdW5l Ci0gY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvdGVzdC9vbGRf cGNyZTJfdGVzdHMubWwKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYnVuZGxlcy9wY3JlMi9wY3JlMi1v Y2FtbC90ZXN0L3BjcmUyX3Rlc3RzLm1sCi0KLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUvLmdp dGlnbm9yZSBiL2J1bmRsZXMvcGNyZS8uZ2l0aWdub3JlCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDIzODg5MTlhMS4uMDAwMDAwMDAwCi0tLS0gYS9idW5kbGVzL3BjcmUvLmdpdGln bm9yZQotKysrIC9kZXYvbnVsbAotQEAgLTEsNCArMCwwIEBACi0tTUVUQQotLW1tb3R0bC1wY3Jl LW9jYW1sLTI1OGI3MmMKLS0ucHJlcGFyZQotLXBjcmUtb2NhbWwvc3JjL3BjcmUubWwKLVwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9ieXRlc19j b21wYXQubWwgYi9idW5kbGVzL3BjcmUvYnl0ZXNfY29tcGF0Lm1sCi1kZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IGZkN2MyYzhiOS4uMDAwMDAwMDAwCi0tLS0gYS9idW5kbGVzL3BjcmUv Ynl0ZXNfY29tcGF0Lm1sCi0rKysgL2Rldi9udWxsCi1AQCAtMSw1ICswLDAgQEAKLS1pbmNsdWRl IFN0cmluZwotLQotLWV4dGVybmFsIHVuc2FmZV90b19zdHJpbmc6IHQgLT4gc3RyaW5nID0gIiVp ZGVudGl0eSIKLS0KLS1leHRlcm5hbCB1bnNhZmVfb2Zfc3RyaW5nOiBzdHJpbmcgLT4gdCA9ICIl aWRlbnRpdHkiCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvQ0hBTkdFUy5t ZCBiL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL0NIQU5HRVMubWQKLWRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMGIwZjViYTkyLi4wMDAwMDAwMDAKLS0tLSBhL2J1bmRsZXMvcGNyZS9w Y3JlLW9jYW1sL0NIQU5HRVMubWQKLSsrKyAvZGV2L251bGwKLUBAIC0xLDI5ICswLDAgQEAKLS0j IyMgNy4zLjUgKDIwMTgtMTAtMjUpCi0tCi0tICAqIFN3aXRjaGVkIHRvIGR1bmUsIGR1bmUtcmVs ZWFzZSwgYW5kIE9QQU0gMi4wCi0tCi0tCi0tIyMjIDcuMy40ICgyMDE3LTExLTIyKQotLQotLSAg KiBJbXByb3ZlZCBmaW5hbGl6YXRpb24gb2YgcmVndWxhciBleHByZXNzaW9ucyBhbmQgdGFibGVz IGZvciBiZXR0ZXIKLS0gICAgcGVyZm9ybWFuY2UKLS0KLS0KLS0jIyMgNy4zLjMgKDIwMTctMTAt MTcpCi0tCi0tICAqIEZpeGVkIGV4dGVybmFsIGRlY2xhcmF0aW9uIGJ1ZyBpbiBpbnRlcm5hbCBy ZWdleHAgY29tcGlsZSBmdW5jdGlvbgotLQotLQotLSMjIyA3LjMuMiAoMjAxNy0xMC0xMCkKLS0K LS0gICogSW1wcm92ZWQgY29tcGF0aWJpbGl0eSB3aXRoIE1TVkMKLS0KLS0KLS0jIyMgNy4zLjEg KDIwMTctMTAtMDgpCi0tCi0tICAqIFVzZWQgdW50YWdnZWQgaW50ZWdlcnMgd2hlbiBkZWNsYXJp bmcgZXh0ZXJuYWwgZnVuY3Rpb25zCi0tCi0tCi0tIyMjIDcuMy4wICgyMDE3LTA3LTI3KQotLQot LSAgKiBTd2l0Y2hlZCB0byBqYnVpbGRlciBhbmQgdG9wa2cKLWRpZmYgLS1naXQgYS9idW5kbGVz L3BjcmUvcGNyZS1vY2FtbC9NYWtlZmlsZSBiL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL01ha2Vm aWxlCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDhhNWZiMDczYy4uMDAwMDAwMDAw Ci0tLS0gYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9NYWtlZmlsZQotKysrIC9kZXYvbnVsbAot QEAgLTEsMTAgKzAsMCBAQAotLS5QSE9OWTogYWxsIGNsZWFuIGRvYwotLQotLWFsbDoKLS0JZHVu ZSBidWlsZCBAaW5zdGFsbAotLQotLWNsZWFuOgotLQlkdW5lIGNsZWFuCi0tCi0tZG9jOgotLQlk dW5lIGJ1aWxkIEBkb2MKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9SRUFE TUUubWQgYi9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9SRUFETUUubWQKLWRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggYjExZTA0MTE2Li4wMDAwMDAwMDAKLS0tLSBhL2J1bmRsZXMvcGNy ZS9wY3JlLW9jYW1sL1JFQURNRS5tZAotKysrIC9kZXYvbnVsbAotQEAgLTEsMTEwICswLDAgQEAK LS0jIyBQQ1JFLU9DYW1sIC0gUGVybCBDb21wYXRpYmlsaXR5IFJlZ3VsYXIgRXhwcmVzc2lvbnMg Zm9yIE9DYW1sCi0tCi0tVGhpcyBbT0NhbWxdKGh0dHA6Ly93d3cub2NhbWwub3JnKS1saWJyYXJ5 IGludGVyZmFjZXMgdGhlIEMtbGlicmFyeQotLVtQQ1JFXShodHRwOi8vd3d3LnBjcmUub3JnKSAo UGVybC1jb21wYXRpYmlsaXR5IFJlZ3VsYXIgRXhwcmVzc2lvbnMpLiAgSXQgY2FuIGJlCi0tdXNl ZCBmb3Igc3RyaW5nIG1hdGNoaW5nIHdpdGggIlBFUkwiLXN0eWxlIHJlZ3VsYXIgZXhwcmVzc2lv bnMuCi0tCi0tIyMjIEZlYXR1cmVzCi0tCi0tUENSRS1PQ2FtbCBvZmZlcnMgdGhlIGZvbGxvd2lu ZyBmdW5jdGlvbmFsaXR5IGZvciBvcGVyYXRpbmcgb24gc3RyaW5nczoKLS0KLS0gICogU2VhcmNo aW5nIGZvciBwYXR0ZXJucwotLSAgKiBFeHRyYWN0aW5nIHN1YnBhdHRlcm5zCi0tICAqIFNwbGl0 dGluZyBzdHJpbmdzIGFjY29yZGluZyB0byBwYXR0ZXJucwotLSAgKiBQYXR0ZXJuIHN1YnN0aXR1 dGlvbgotLQotLU90aGVyIHJlYXNvbnMgdG8gdXNlIFBDUkUtT0NhbWw6Ci0tCi0tICAqIFRoZSBQ Q1JFLWxpYnJhcnkgYnkgUGhpbGlwIEhhemVsIGhhcyBiZWVuIHVuZGVyIGRldmVsb3BtZW50IGZv ciBtYW55Ci0tICAgIHllYXJzIGFuZCBpcyBmYWlybHkgYWR2YW5jZWQgYW5kIHN0YWJsZS4gIEl0 IGltcGxlbWVudHMganVzdCBhYm91dCBhbGwKLS0gICAgb2YgdGhlIGZ1bmN0aW9uYWxpdHkgdGhh dCBjYW4gYmUgZm91bmQgaW4gUEVSTCByZWd1bGFyIGV4cHJlc3Npb25zLgotLSAgICBUaGUgaGln aGVyLWxldmVsIGZ1bmN0aW9ucyB3cml0dGVuIGluIE9DYW1sIChzcGxpdCwgcmVwbGFjZSwgZXRj LiksCi0tICAgIHRvbywgYXJlIGNvbXBhdGlibGUgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBQRVJM LWZ1bmN0aW9ucyB0byB0aGUgZXh0ZW50Ci0tICAgIHRoYXQgT0NhbWwgYWxsb3dzLiAgTW9zdCBw ZW9wbGUgZmluZCB0aGUgc3ludGF4IG9mIFBFUkwtc3R5bGUgcmVndWxhcgotLSAgICBleHByZXNz aW9ucyBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCBhbmQgcG93ZXJmdWwgdGhhbiB0aGUgRW1hY3Mtc3R5 bGUgcmVndWxhcgotLSAgICBleHByZXNzaW9ucyB1c2VkIGluIHRoZSBgU3RyYC1tb2R1bGUgaW4g dGhlIHN0YW5kYXJkIE9DYW1sIGRpc3RyaWJ1dGlvbi4KLS0KLS0gICogUENSRS1PQ2FtbCBpcyBy ZWVudHJhbnQgYW5kIHRodXMgdGhyZWFkLXNhZmUsIHdoaWNoIGlzIG5vdCB0aGUgY2FzZQotLSAg ICBmb3IgdGhlIGBTdHJgLW1vZHVsZSBpbiB0aGUgT0NhbWwgc3RhbmRhcmQgbGlicmFyeS4gIFVz aW5nIHJlZW50cmFudAotLSAgICBsaWJyYXJpZXMgYWxzbyBtZWFucyBtb3JlIGNvbnZlbmllbmNl IGZvciBwcm9ncmFtbWVycy4gIFRoZXkgZG8gbm90Ci0tICAgIGhhdmUgdG8gcmVhc29uIGFib3V0 IHN0YXRlcyBpbiB3aGljaCB0aGUgbGlicmFyeSBtaWdodCBiZSBpbi4KLS0KLS0gICogVGhlIGhp Z2gtbGV2ZWwgZnVuY3Rpb25zIGZvciByZXBsYWNlbWVudCBhbmQgc3Vic3RpdHV0aW9uLCB3aGlj aCBhcmUgYWxsCi0tICAgIGltcGxlbWVudGVkIGluIE9DYW1sLCBhcmUgbXVjaCBmYXN0ZXIgdGhh biB0aGUgb25lcyBpbiB0aGUgYFN0cmAtbW9kdWxlLgotLSAgICBJbiBmYWN0LCB3aGVuIGNvbXBp bGVkIHRvIG5hdGl2ZSBjb2RlLCB0aGV5IGV2ZW4gc2VlbSB0byBiZSBzaWduaWZpY2FudGx5Ci0t ICAgIGZhc3RlciB0aGFuIHRob3NlIGZvdW5kIGluIFBFUkwgKFBFUkwgaXMgd3JpdHRlbiBpbiBD KS4KLS0KLS0gICogWW91IGNhbiByZWx5IG9uIHRoZSBkYXRhIHJldHVybmVkIGJlaW5nIHVuaXF1 ZS4gIEluIG90aGVyIHRlcm1zOiBpZgotLSAgICB0aGUgcmVzdWx0IG9mIGEgZnVuY3Rpb24gaXMg YSBzdHJpbmcsIHlvdSBjYW4gc2FmZWx5IHVzZSBkZXN0cnVjdGl2ZQotLSAgICB1cGRhdGVzIG9u IGl0IHdpdGhvdXQgaGF2aW5nIHRvIGZlYXIgc2lkZSBlZmZlY3RzLgotLQotLSAgKiBUaGUgaW50 ZXJmYWNlIHRvIHRoZSBsaWJyYXJ5IG1ha2VzIHVzZSBvZiBsYWJlbHMgYW5kIGRlZmF1bHQgYXJn dW1lbnRzCi0tICAgIHRvIGdpdmUgeW91IGEgaGlnaCBkZWdyZWUgb2YgcHJvZ3JhbW1pbmcgY29t Zm9ydC4KLS0KLS0jIyMgVXNhZ2UKLS0KLS1QbGVhc2UgY29uc3VsdCB0aGUgW0FQSV0oaHR0cHM6 Ly9tbW90dGwuZ2l0aHViLmlvL3BjcmUtb2NhbWwvYXBpL3BjcmUpCi0tZm9yIGRldGFpbHMuCi0t Ci0tQSBnZW5lcmFsIGNvbmNlcHQgdGhlIHVzZXIgbWF5IG5lZWQgdG8gdW5kZXJzdGFuZCBpcyB0 aGF0IG1vc3QgZnVuY3Rpb25zCi0tYWxsb3cgZm9yIHR3byBkaWZmZXJlbnQga2luZHMgb2YgZmxh Z3M6Ci0tCi0tICAxLiAiQ29udmVuaWVuY2UiLWZsYWdzIHRoYXQgbWFrZSBmb3IgcmVhZGFibGUg YW5kIGNvbmNpc2UgY29kZSwgYnV0IHdoaWNoCi0tICAgICBuZWVkIHRvIGJlIHRyYW5zbGF0ZWQg dG8gYW4gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb24gZWFjaCBjYWxsLgotLSAgICAgRXhhbXBs ZToKLS0KLS0gICAgIGBgYG9jYW1sCi0tICAgICBsZXQgcmV4ID0gUGNyZS5yZWdleHAgfmZsYWdz OltgQU5DSE9SRUQ7IGBDQVNFTEVTU10gInNvbWUgcGF0dGVybiIgaW4KLS0gICAgICgqIC4uLiAq KQotLSAgICAgYGBgCi0tCi0tICAgICBUaGlzIG1ha2VzIGl0IGVhc3kgdG8gcGFzcyBmbGFncyBv biB0aGUgZmx5LiAgVGhleSB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8KLS0gICAgIHRoZSBpbnRlcm5h bCBmb3JtYXQgYXV0b21hdGljYWxseS4gIEhvd2V2ZXIsIGlmIHRoaXMgaGFwcGVucyB0byBiZSBp biBhCi0tICAgICBsb29wLCB0aGlzIHRyYW5zbGF0aW9uIHdpbGwgb2NjdXIgb24gZWFjaCBpdGVy YXRpb24uICBJZiB5b3UgcmVhbGx5IG5lZWQKLS0gICAgIHRvIHNhdmUgYXMgbXVjaCBwZXJmb3Jt YW5jZSBhcyBwb3NzaWJsZSwgeW91IHNob3VsZCB1c2UgdGhlIG5leHQgYXBwcm9hY2guCi0tCi0t ICAyLiAiSW50ZXJuYWwiIGZsYWdzIHRoYXQgbmVlZCB0byBiZSBkZWZpbmVkIGFuZCB0cmFuc2xh dGVkIGZyb20KLS0gICAgICJjb252ZW5pZW5jZSItZmxhZ3MgYmVmb3JlIGZ1bmN0aW9uIGNhbGxz LCBidXQgd2hpY2ggYWxsb3cgZm9yIG9wdGltdW0KLS0gICAgIHBlcmZvcm1hbmNlIGluIGxvb3Bz LiAgRXhhbXBsZToKLS0KLS0gICAgIGBgYG9jYW1sCi0tICAgICBsZXQgaWZsYWdzID0gUGNyZS5j ZmxhZ3MgW2BBTkNIT1JFRDsgYENBU0VMRVNTXSBpbgotLSAgICAgZm9yIGkgPSAxIHRvIDEwMDAg ZG8KLS0gICAgICAgbGV0IHJleCA9IFBjcmUucmVnZXhwIH5pZmxhZ3MgInNvbWUgcGF0dGVybiBj b25zdHJ1Y3RlZCBhdCBydW50aW1lIiBpbgotLSAgICAgICAoKiAuLi4gKikKLS0gICAgIGRvbmUK LS0gICAgIGBgYAotLQotLSAgICAgIEZhY3RvcmluZyBvdXQgdGhlIHRyYW5zbGF0aW9uIG9mIGZs YWdzIGZvciByZWd1bGFyIGV4cHJlc3Npb25zIG1heQotLSAgICAgIHNhdmUgc29tZSBjeWNsZXMs IGJ1dCBkb24ndCBleHBlY3QgdG9vIG11Y2guICBZb3UgY2FuIHNhdmUgbW9yZSBDUFUKLS0gICAg ICB0aW1lIHdoZW4gbGlmdGluZyB0aGUgY3JlYXRpb24gb2YgcmVndWxhciBleHByZXNzaW9ucyBv dXQgb2YgbG9vcHMuCi0tICAgICAgRXhhbXBsZSBmb3Igd2hhdCBub3QgdG8gZG86Ci0tCi0tICAg ICAgYGBgb2NhbWwKLS0gICAgICBmb3IgaSA9IDEgdG8gMTAwMCBkbwotLSAgICAgICAgbGV0IGNo dW5rcyA9IFBjcmUuc3BsaXQgfnBhdDoiWyBcdF0rIiAiZm9vIGJhciIgaW4KLS0gICAgICAgICgq IC4uLiAqKQotLSAgICAgIGRvbmUKLS0gICAgICBgYGAKLS0KLS0gICAgICBCZXR0ZXI6Ci0tCi0t ICAgICAgYGBgb2NhbWwKLS0gICAgICBsZXQgcmV4ID0gUGNyZS5yZWdleHAgIlsgXHRdKyIgaW4K LS0gICAgICBmb3IgaSA9IDEgdG8gMTAwMCBkbwotLSAgICAgICAgbGV0IGNodW5rcyA9IFBjcmUu c3BsaXQgfnJleCAiZm9vIGJhciIgaW4KLS0gICAgICAgICgqIC4uLiAqKQotLSAgICAgIGRvbmUK LS0gICAgICBgYGAKLS0KLS1UaGUgcHJvdmlkZWQgZnVuY3Rpb25zIHVzZSBvcHRpb25hbCBhcmd1 bWVudHMgd2l0aCBpbnR1aXRpdmUgZGVmYXVsdHMuICBGb3IKLS1leGFtcGxlLCB0aGUgYFBjcmUu c3BsaXRgLWZ1bmN0aW9uIHdpbGwgYXNzdW1lIHdoaXRlc3BhY2UgYXMgcGF0dGVybi4gIFRoZQot LWBleGFtcGxlc2AtZGlyZWN0b3J5IGNvbnRhaW5zIGEgZmV3IGV4YW1wbGUgYXBwbGljYXRpb25z IGRlbW9uc3RyYXRpbmcgdGhlCi0tZnVuY3Rpb25hbGl0eSBvZiBQQ1JFLU9DYW1sLgotLQotLSMj IyBDb250YWN0IEluZm9ybWF0aW9uIGFuZCBDb250cmlidXRpbmcKLS0KLS1QbGVhc2Ugc3VibWl0 IGJ1Z3MgcmVwb3J0cywgZmVhdHVyZSByZXF1ZXN0cywgY29udHJpYnV0aW9ucyBhbmQgc2ltaWxh ciB0bwotLXRoZSBbR2l0SHViIGlzc3VlIHRyYWNrZXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9tbW90 dGwvcGNyZS1vY2FtbC9pc3N1ZXMpLgotLQotLVVwLXRvLWRhdGUgaW5mb3JtYXRpb24gaXMgYXZh aWxhYmxlIGF0OiA8aHR0cHM6Ly9tbW90dGwuZ2l0aHViLmlvL3BjcmUtb2NhbWw+Ci1kaWZmIC0t Z2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZHVuZSBiL2J1bmRsZXMvcGNyZS9wY3JlLW9j YW1sL2R1bmUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNjY5ODRhZDdlLi4wMDAw MDAwMDAKLS0tLSBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2R1bmUKLSsrKyAvZGV2L251bGwK LUBAIC0xLDQgKzAsMCBAQAotLShlbnYKLS0gIChkZXYgKGZsYWdzICg6c3RhbmRhcmQgLXcgLTkg LXByaW5jaXBhbCkpKQotLSAgKHJlbGVhc2UgKG9jYW1sb3B0X2ZsYWdzICg6c3RhbmRhcmQgLU8z KSkpCi0tKQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2R1bmUtcHJvamVj dCBiL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2R1bmUtcHJvamVjdAotZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCBlMTRjZWIwZDEuLjAwMDAwMDAwMAotLS0tIGEvYnVuZGxlcy9wY3Jl L3BjcmUtb2NhbWwvZHVuZS1wcm9qZWN0Ci0rKysgL2Rldi9udWxsCi1AQCAtMSwyICswLDAgQEAK LS0obGFuZyBkdW5lIDEuMSkKLS0obmFtZSBwY3JlKQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNy ZS9wY3JlLW9jYW1sL2V4YW1wbGVzL01ha2VmaWxlIGIvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwv ZXhhbXBsZXMvTWFrZWZpbGUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNTQwYmM5 ZjhiLi4wMDAwMDAwMDAKLS0tLSBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1wbGVzL01h a2VmaWxlCi0rKysgL2Rldi9udWxsCi1AQCAtMSw5ICswLDAgQEAKLS1UQVJHRVRTID0gJChhZGRz dWZmaXggLmJjLCBjbG9jIGNvdW50X2hhc2ggcGNyZWdyZXAgc3Vic3QpCi0tCi0tLlBIT05ZOiBh bGwgY2xlYW4KLS0KLS1hbGw6Ci0tCUBkdW5lIGJ1aWxkICQoVEFSR0VUUykKLS0KLS1jbGVhbjoK LS0JQGR1bmUgY2xlYW4KLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9leGFt cGxlcy9SRUFETUUubWQgYi9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9leGFtcGxlcy9SRUFETUUu bWQKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMTkxNjMxMGIzLi4wMDAwMDAwMDAK LS0tLSBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1wbGVzL1JFQURNRS5tZAotKysrIC9k ZXYvbnVsbAotQEAgLTEsMjggKzAsMCBAQAotLSMjIEV4YW1wbGVzCi0tCi0tIyMjIGNsb2MKLS0K LS1UaGlzIHByb2dyYW0gcmVhZHMgQy1zb3VyY2VzIGZyb20gc3RkaW4gYW5kIHByaW50cyB0aGVt IHRvIHN0ZG91dCB3aXRoCi0tY29tbWVudHMgYW5kIGVtcHR5IGxpbmVzIHJlbW92ZWQuICBVc2Vm dWwgZm9yIGNvdW50aW5nIExPQ3MuCi0tCi0tIyMjIGNvdW50X2hhc2gKLS0KLS1UaGlzIHByb2dy YW0gcmVhZHMgdGV4dCBmcm9tIHN0ZGluLCBjb3VudHMgYWxsIGVxdWFsIHdvcmRzIHRoYXQgYXJl IHNlcGFyYXRlZCBieQotLXdoaXRlc3BhY2UgYW5kIHByaW50cyB0aGUgcmVzdWx0IHRvIHN0ZG91 dC4KLS0KLS0jIyMgcGNyZWdyZXAKLS0KLS1BIGdyZXAtbGlrZSBwcm9ncmFtIHVzaW5nIFBlcmwt Y29tcGF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zLiAgU3RhcnQgdGhlCi0tcHJvZ3JhbSB3aXRo IGFyZ3VtZW50IGAtaGVscGAgdG8gc2VlIHdoYXQgaXQgZG9lcyEKLS0KLS0jIyMgc3Vic3QKLS0K LS1TdWJzdGl0dXRlcyB0ZXh0IGluIGZpbGVzIHVzaW5nIFBlcmwtY29tcGF0aWJsZSByZWd1bGFy IGV4cHJlc3Npb25zIGFuZAotLXN1YnN0aXR1dGlvbiBwYXR0ZXJucy4gIFN0YXJ0IHRoZSBwcm9n cmFtIHdpdGggYXJndW1lbnQgYC1oZWxwYCB0byBzZWUgd2hhdCBpdAotLWRvZXMhCi0tCi0tRXhh bXBsZSBpbnZvY2F0aW9uOgotLQotLWBgYHNoCi0tc3Vic3QgJyhbVHRdKWVybWNhcCcgJyQxZXJt Q2FwJyA8IC9ldGMvdGVybWNhcAotLWBgYAotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9wY3Jl LW9jYW1sL2V4YW1wbGVzL2R1bmUgYi9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9leGFtcGxlcy9k dW5lCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDcyOWM2ZTRkMS4uMDAwMDAwMDAw Ci0tLS0gYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9leGFtcGxlcy9kdW5lCi0rKysgL2Rldi9u dWxsCi1AQCAtMSw0ICswLDAgQEAKLS0oZXhlY3V0YWJsZXMKLS0gIChuYW1lcyBjbG9jIGNvdW50 X2hhc2ggcGNyZWdyZXAgc3Vic3QpCi0tICAobGlicmFyaWVzIHBjcmUpCi0tKQotZGlmZiAtLWdp dCBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1wbGVzL3BjcmVncmVwLm1sIGIvYnVuZGxl cy9wY3JlL3BjcmUtb2NhbWwvZXhhbXBsZXMvcGNyZWdyZXAubWwKLWRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMWMzMTUyOGU1Li4wMDAwMDAwMDAKLS0tLSBhL2J1bmRsZXMvcGNyZS9w Y3JlLW9jYW1sL2V4YW1wbGVzL3BjcmVncmVwLm1sCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxMTMg KzAsMCBAQAotLW9wZW4gUGNyZQotLW9wZW4gUHJpbnRmCi0tCi0tbGV0IGZpbGVuYW1lcyAgICAg ID0gcmVmIHRydWUKLS1hbmQgZmlsZW5hbWVzX29ubHkgPSByZWYgZmFsc2UKLS1hbmQgY291bnRf b25seSAgICAgPSByZWYgZmFsc2UKLS1hbmQgaW52ZXJ0ICAgICAgICAgPSByZWYgZmFsc2UKLS1h bmQgbnVtYmVyICAgICAgICAgPSByZWYgZmFsc2UKLS1hbmQgc2lsZW50ICAgICAgICAgPSByZWYg ZmFsc2UKLS1hbmQgd2hvbGVfbGluZXMgICAgPSByZWYgZmFsc2UKLS0KLS1sZXQgcGFyc2VfYXJn cyAoKSA9Ci0tICBsZXQgaWdub3JlX2Nhc2UgPSByZWYgZmFsc2UKLS0KLS0gIGFuZCBwYXQgICAg PSByZWYgTm9uZQotLSAgYW5kIGZpbGVzICA9IHJlZiBbXSBpbgotLQotLSAgbGV0IGMgPSAiLWMi LCBBcmcuU2V0IGNvdW50X29ubHksICJDb3VudCBsaW5lcyBvbmx5LiIKLS0gIGFuZCBoID0gIi1o IiwgQXJnLkNsZWFyIGZpbGVuYW1lcywKLS0gICAgICAgICAgIlN1cHByZXNzIHByaW50aW5nIG9m IGZpbGVuYW1lcyB3aGVuIHNlYXJjaGluZyBtdWx0aXBsZSBmaWxlcy4iCi0tICBhbmQgaSA9ICIt aSIsIEFyZy5TZXQgaWdub3JlX2Nhc2UsICJJZ25vcmUgY2FzZS4iCi0tICBhbmQgbCA9ICItbCIs IEFyZy5TZXQgZmlsZW5hbWVzX29ubHksCi0tICAgICAgICAgICJPbmx5IHByaW50IG5hbWVzIG9m IGZpbGVzIGNvbnRhaW5pbmcgbWF0Y2hpbmcgbGluZXMgKG9uY2UpLiIKLS0gIGFuZCBuID0gIi1u IiwgQXJnLlNldCBudW1iZXIsCi0tICAgICAgICAgICJQcmVjZWRlIGVhY2ggbGluZSBieSBpdHMg bGluZSBudW1iZXIgaW4gdGhlIGZpbGUuIgotLSAgYW5kIHMgPSAiLXMiLCBBcmcuU2V0IHNpbGVu dCwKLS0gICAgICAgICAgIkRpc3BsYXkgbm90aGluZyBidXQgZXJyb3IgbWVzc2FnZXMuIEV4aXQg c3RhdHVzIGluZGljYXRlcyBtYXRjaC4iCi0tICBhbmQgdiA9ICItdiIsIEFyZy5TZXQgaW52ZXJ0 LAotLSAgICAgICAgICAiSW52ZXJ0IHNlbnNlIG9mIHRoZSBtYXRjaDogZmluZHMgbm9ubWF0Y2hp bmcgbGluZXMuIgotLSAgYW5kIHggPSAiLXgiLCBBcmcuU2V0IHdob2xlX2xpbmVzLAotLSAgICAg ICAgICAiRm9yY2UgdGhlIHBhdHRlcm4gdG8gYmUgYW5jaG9yZWQgYW5kIHRvIG1hdGNoIHRoZSBl bnRpcmUgbGluZS4iCi0tICBhbmQgdXNhZ2UgPQotLSAgICAiVXNhZ2U6IHBjcmVncmVwIFtvcHRp b25zXSBwYXR0ZXJuIFtmaWxlXSAuLi5cblxuXAotLSAgICAgU2VhcmNoZXMgZmlsZXMgZm9yIGNo YXJhY3RlciBwYXR0ZXJucy5cbiIKLS0gIGFuZCBhbm9uX2FyZyBhcmcgPQotLSAgICBpZiAhcGF0 ID0gTm9uZSB0aGVuIHBhdCA6PSBTb21lIGFyZwotLSAgICBlbHNlIGZpbGVzIDo9IGFyZyA6OiAh ZmlsZXMgaW4KLS0KLS0gIGxldCBhcmdzID0gW2M7IGg7IGk7IGw7IG47IHM7IHY7IHhdIGluCi0t ICBBcmcucGFyc2UgYXJncyBhbm9uX2FyZyB1c2FnZTsKLS0KLS0gIGxldCBmbGFncyA9Ci0tICAg IGxldCBmbGFnX2xpc3QgPSBpZiAhaWdub3JlX2Nhc2UgdGhlbiBbYENBU0VMRVNTXSBlbHNlIFtd IGluCi0tICAgIGlmICF3aG9sZV9saW5lcyB0aGVuIGBBTkNIT1JFRCA6OiBmbGFnX2xpc3QgZWxz ZSBmbGFnX2xpc3QgaW4KLS0KLS0gIGxldCByZXggPSAKLS0gICAgbWF0Y2ggIXBhdCB3aXRoCi0t ICAgIHwgU29tZSBwYXQgLT4gcmVnZXhwIH5mbGFncyBwYXQKLS0gICAgfCBOb25lIC0+IGVwcmlu dGYgIiVzOiBub3QgZW5vdWdoIGFyZ3VtZW50cyFcbiIgU3lzLmFyZ3YuKDApOwotLSAgICAgICAg ICAgICAgQXJnLnVzYWdlIGFyZ3MgdXNhZ2U7IGV4aXQgMiBpbgotLSAgcmV4LCBMaXN0LnJldiAh ZmlsZXMKLS0KLS1sZXQgXyA9Ci0tICBsZXQgcmV4LCBmaWxlcyA9IHBhcnNlX2FyZ3MgKCkKLS0g IGFuZCByZmwgPSByZmxhZ3MgW10gaW4KLS0KLS0gIGxldCBfLCBvdmVjdG9yID0gbWFrZV9vdmVj dG9yIHJleCBpbgotLQotLSAgbGV0IHBjcmVncmVwIGZpbGUgbmFtZSA9Ci0tICAgIGxldCByZXRf Y29kZSA9IHJlZiAxCi0tICAgIGFuZCBsaW5lbnVtYmVyID0gcmVmIDAKLS0gICAgYW5kIGNvdW50 ID0gcmVmIDAKLS0KLS0gICAgYW5kIHN0ZGluX3ByaW50X25hbWUgKCkgPQotLSAgICAgIG1hdGNo IG5hbWUgd2l0aAotLSAgICAgIHwgU29tZSBmaWxlbmFtZSAtPiBwcmludF9lbmRsaW5lIGZpbGVu YW1lCi0tICAgICAgfCBOb25lIC0+IHByaW50X2VuZGxpbmUgIjxzdGRpbj4iCi0tCi0tICAgIGFu ZCBwcmludF9uYW1lICgpID0KLS0gICAgICBtYXRjaCBuYW1lIHdpdGggU29tZSBuYW1lIC0+IHBy aW50ZiAiJXM6IiBuYW1lIHwgTm9uZSAtPiAoKSBpbgotLQotLSAgICBsZXQgdHJ5X21hdGNoIGxp bmUgPQotLSAgICAgIGxldCBtYXRjaGVkID0KLS0gICAgICAgIHRyeQotLSAgICAgICAgICB1bnNh ZmVfcGNyZV9leGVjIHJmbCByZXggfnBvczowIH5zdWJqX3N0YXJ0OjAgfnN1Ymo6bGluZSBvdmVj dG9yIE5vbmU7Ci0tICAgICAgICAgIGlmICF3aG9sZV9saW5lcyAmJiBvdmVjdG9yLigxKSA8PiBT dHJpbmcubGVuZ3RoIGxpbmUgdGhlbiBmYWxzZQotLSAgICAgICAgICBlbHNlIHRydWUKLS0gICAg ICAgIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlIGluCi0tCi0tICAgICAgaW5jciBsaW5lbnVtYmVy OwotLQotLSAgICAgIGlmIG1hdGNoZWQgPD4gIWludmVydCB0aGVuIGJlZ2luCi0tICAgICAgICBp ZiAhY291bnRfb25seSB0aGVuIGluY3IgY291bnQKLS0gICAgICAgIGVsc2UgaWYgIWZpbGVuYW1l c19vbmx5IHRoZW4gYmVnaW4gc3RkaW5fcHJpbnRfbmFtZSAoKTsgcmFpc2UgRXhpdCBlbmQKLS0g ICAgICAgIGVsc2UgaWYgIXNpbGVudCB0aGVuIHJhaXNlIEV4aXQKLS0gICAgICAgIGVsc2UgYmVn aW4KLS0gICAgICAgICAgcHJpbnRfbmFtZSAoKTsKLS0gICAgICAgICAgaWYgIW51bWJlciB0aGVu IHByaW50ZiAiJWQ6IiAhbGluZW51bWJlcjsKLS0gICAgICAgICAgcHJpbnRfZW5kbGluZSBsaW5l Ci0tICAgICAgICBlbmQ7Ci0tICAgICAgICByZXRfY29kZSA6PSAwIGVuZCBpbgotLQotLSAgICB0 cnkKLS0gICAgICBmb3JlYWNoX2xpbmUgfmljOmZpbGUgdHJ5X21hdGNoOwotLSAgICAgIGlmICFj b3VudF9vbmx5IHRoZW4gYmVnaW4KLS0gICAgICAgIHByaW50X25hbWUgKCk7Ci0tICAgICAgICBw cmludGYgIiVkXG4iICFjb3VudCBlbmQ7Ci0tICAgICAgIXJldF9jb2RlCi0tICAgIHdpdGggRXhp dCAtPiAwIGluCi0tCi0tICBpZiBmaWxlcyA9IFtdIHRoZW4gZXhpdCAocGNyZWdyZXAgc3RkaW4g Tm9uZSk7Ci0tCi0tICBpZiBMaXN0Lmxlbmd0aCBmaWxlcyA9IDEgdGhlbiBmaWxlbmFtZXMgOj0g ZmFsc2U7Ci0tICBpZiAhZmlsZW5hbWVzX29ubHkgdGhlbiBmaWxlbmFtZXMgOj0gdHJ1ZTsKLS0K LS0gIGxldCBjb2xsZWN0IHJldF9jb2RlIGZpbGVuYW1lID0KLS0gICAgdHJ5Ci0tICAgICAgbGV0 IGZpbGUgPSBvcGVuX2luIGZpbGVuYW1lIGluCi0tICAgICAgbGV0IGZyYyA9IHBjcmVncmVwIGZp bGUgKGlmICFmaWxlbmFtZXMgdGhlbiBTb21lIGZpbGVuYW1lIGVsc2UgTm9uZSkgaW4KLS0gICAg ICBjbG9zZV9pbiBmaWxlOwotLSAgICAgIGlmIGZyYyA9IDAgJiYgcmV0X2NvZGUgPSAxIHRoZW4g MCBlbHNlIHJldF9jb2RlCi0tICAgIHdpdGggU3lzX2Vycm9yIG1zZyAtPiBwcmVycl9lbmRsaW5l IG1zZzsgMiBpbgotLSAgZXhpdCAoTGlzdC5mb2xkX2xlZnQgY29sbGVjdCAxIGZpbGVzKQotZGlm ZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1wbGVzL3N1YnN0Lm1sIGIvYnVu ZGxlcy9wY3JlL3BjcmUtb2NhbWwvZXhhbXBsZXMvc3Vic3QubWwKLWRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMjQ3MDFkZGExLi4wMDAwMDAwMDAKLS0tLSBhL2J1bmRsZXMvcGNyZS9w Y3JlLW9jYW1sL2V4YW1wbGVzL3N1YnN0Lm1sCi0rKysgL2Rldi9udWxsCi1AQCAtMSw1NCArMCww IEBACi0tb3BlbiBQY3JlCi0tCi0tbGV0IHBhcnNlX2FyZ3MgKCkgPQotLSAgbGV0IHF1aWNrICAg ICAgID0gcmVmIGZhbHNlCi0tICBhbmQgZmlyc3QgICAgICAgPSByZWYgZmFsc2UKLS0gIGFuZCBp Z25vcmVfY2FzZSA9IHJlZiBmYWxzZQotLSAgYW5kIG9mZnNldCAgICAgID0gcmVmIDAKLS0KLS0g IGFuZCBwYXQgICAgPSByZWYgTm9uZQotLSAgYW5kIHN1YnN0ciA9IHJlZiBOb25lIGluCi0tCi0t ICBsZXQgcSAgID0gIi1xIiwgQXJnLlNldCBxdWljaywKLS0gICAgICAgICAgICAiUXVpY2sgcmVw bGFjZW1lbnQuIEludGVycHJldGVzIHN1YnN0aXR1dGlvbiBhcyBwbGFpbiB0ZXh0LiIKLS0gIGFu ZCBmICAgPSAiLWYiLCBBcmcuU2V0IGZpcnN0LCAiUmVwbGFjZSBmaXJzdCBvY2N1cnJlbmNlIGlu IGxpbmUgb25seS4iCi0tICBhbmQgaSAgID0gIi1pIiwgQXJnLlNldCBpZ25vcmVfY2FzZSwgIkln bm9yZSBjYXNlLiIKLS0gIGFuZCBvZnMgPSAiLW9mcyIsIEFyZy5JbnQgKGZ1biBuIC0+IG9mZnNl dCA6PSBuKSwKLS0gICAgICAgICAgICAiU3RhcnQgbWF0Y2hpbmcgYXQgY29sdW1uIG4uIgotLQot LSAgYW5kIHVzYWdlID0KLS0gICAgIlVzYWdlOiBzdWJzdCBbLXFdIFstZl0gWy1pXSBbLW9mcyBv ZmZzZXRdIHBhdHRlcm4gc3Vic3RpdHV0aW9uXG5cblwKLS0gICAgIFJlYWRzIGxpbmVzIGZyb20g c3RhbmRhcmQgaW5wdXQgYW5kIHJlcGxhY2VzIG9jY3VycmVuY2VzIG9mXG5cCi0tICAgICB0aGUg UEVSTC1zdHlsZSByZWd1bGFyIGV4cHJlc3Npb24gXCJwYXR0ZXJuXCIgd2l0aCBcInN1YnN0aXR1 dGlvblwiLFxuXAotLSAgICAgcHJpbnRpbmcgdGhlIHJlc3VsdCB0byBzdGFuZGFyZCBvdXRwdXQu XG5cCi0tICAgICBJbiBkZWZhdWx0IG1vZGUgdGhlIGNvbnRlbnRzIG9mIFwic3Vic3RpdHV0aW9u XCIgd2lsbCBiZSBpbnRlcnByZXRlZFxuXAotLSAgICAgc2ltaWxhcmx5IHRvIGl0cyBlcXVpdmFs ZW50IGluIFBFUkwuXG4iCi0tCi0tICBhbmQgYW5vbl9hcmcgYXJnID0KLS0gICAgbWF0Y2ggIXBh dCwgIXN1YnN0ciB3aXRoCi0tICAgIHwgTm9uZSwgXyAtPiBwYXQgOj0gU29tZSBhcmcKLS0gICAg fCBfLCBOb25lIC0+IHN1YnN0ciA6PSBTb21lIGFyZwotLSAgICB8IF8gICAgICAgLT4gcmFpc2Ug KEFyZy5CYWQgInRvbyBtYW55IGFyZ3VtZW50cyEiKSBpbgotLQotLSAgbGV0IGFyZ3MgPSBbcTsg ZjsgaTsgb2ZzXSBpbgotLSAgQXJnLnBhcnNlIGFyZ3MgYW5vbl9hcmcgdXNhZ2U7Ci0tCi0tICBs ZXQgZmxhZ3MgPSBpZiAhaWdub3JlX2Nhc2UgdGhlbiBbYENBU0VMRVNTXSBlbHNlIFtdIGluCi0t Ci0tICBsZXQgcmV4LCBzc3RyID0KLS0gICAgbWF0Y2ggIXBhdCwgIXN1YnN0ciB3aXRoCi0tICAg ICAgfCBTb21lIHJleCwgU29tZSBzc3RyIC0+IHJlZ2V4cCB+ZmxhZ3MgcmV4LCBzc3RyCi0tICAg ICAgfCBfIC0+IHByZXJyX2VuZGxpbmUgKFN5cy5hcmd2LigwKSBeICI6IG5vdCBlbm91Z2ggYXJn dW1lbnRzISIpOwotLSAgICAgICAgICAgICBBcmcudXNhZ2UgYXJncyB1c2FnZTsgZXhpdCAxIGlu Ci0tCi0tICBtYXRjaCAhcXVpY2ssICFmaXJzdCB3aXRoCi0tICB8IGZhbHNlLCBmYWxzZSAtPiBm dW4gcyAtPiByZXBsYWNlIH5yZXggfnBvczohb2Zmc2V0IH50ZW1wbDpzc3RyIHMKLS0gIHwgdHJ1 ZSwgZmFsc2UgIC0+IGZ1biBzIC0+IHFyZXBsYWNlIH5yZXggfnBvczohb2Zmc2V0IH50ZW1wbDpz c3RyIHMKLS0gIHwgZmFsc2UsIHRydWUgIC0+IGZ1biBzIC0+IHJlcGxhY2VfZmlyc3QgfnJleCB+ cG9zOiFvZmZzZXQgfnRlbXBsOnNzdHIgcwotLSAgfCB0cnVlLCB0cnVlICAgLT4gZnVuIHMgLT4g cXJlcGxhY2VfZmlyc3QgfnJleCB+cG9zOiFvZmZzZXQgfnRlbXBsOnNzdHIgcwotLQotLWxldCBf ID0KLS0gIGxldCBzdWJzdGl0dXRlID0gcGFyc2VfYXJncyAoKSBpbgotLSAgZm9yZWFjaF9saW5l IChmdW4gbGluZSAtPgotLSAgICB0cnkgcHJpbnRfZW5kbGluZSAoc3Vic3RpdHV0ZSBsaW5lKQot LSAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBwcmludF9lbmRsaW5lIGxpbmUpCi1kaWZm IC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvcGNyZS5vcGFtIGIvYnVuZGxlcy9wY3Jl L3BjcmUtb2NhbWwvcGNyZS5vcGFtCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDRl ZjFlNzdlOS4uMDAwMDAwMDAwCi0tLS0gYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9wY3JlLm9w YW0KLSsrKyAvZGV2L251bGwKLUBAIC0xLDI3ICswLDAgQEAKLS1vcGFtLXZlcnNpb246ICIyLjAi Ci0tbWFpbnRhaW5lcjogIk1hcmt1cyBNb3R0bCA8bWFya3VzLm1vdHRsQGdtYWlsLmNvbT4iCi0t YXV0aG9yczogWyAiTWFya3VzIE1vdHRsIDxtYXJrdXMubW90dGxAZ21haWwuY29tPiIgXQotLWxp Y2Vuc2U6ICJMR1BMLTIuMSsgd2l0aCBPQ2FtbCBsaW5raW5nIGV4Y2VwdGlvbiIKLS1ob21lcGFn ZTogImh0dHBzOi8vbW1vdHRsLmdpdGh1Yi5pby9wY3JlLW9jYW1sIgotLWRvYzogImh0dHBzOi8v bW1vdHRsLmdpdGh1Yi5pby9wY3JlLW9jYW1sL2FwaSIKLS1kZXYtcmVwbzogImdpdCtodHRwczov L2dpdGh1Yi5jb20vbW1vdHRsL3BjcmUtb2NhbWwuZ2l0IgotLWJ1Zy1yZXBvcnRzOiAiaHR0cHM6 Ly9naXRodWIuY29tL21tb3R0bC9wY3JlLW9jYW1sL2lzc3VlcyIKLS0KLS1idWlsZDogWwotLSAg WyJkdW5lIiAic3Vic3QiXSB7cGlubmVkfQotLSAgWyJkdW5lIiAiYnVpbGQiICItcCIgbmFtZSAi LWoiIGpvYnNdCi0tXQotLQotLWRlcGVuZHM6IFsKLS0gICJvY2FtbCIgez49ICI0LjA0In0KLS0g ICJkdW5lIiB7YnVpbGQgJiA+PSAiMS40LjAifQotLSAgImNvbmYtbGlicGNyZSIge2J1aWxkfQot LSAgImJhc2UiIHtidWlsZH0KLS0gICJiYXNlLWJ5dGVzIgotLV0KLS0KLS1zeW5vcHNpczogIkJp bmRpbmdzIHRvIHRoZSBQZXJsIENvbXBhdGliaWxpdHkgUmVndWxhciBFeHByZXNzaW9ucyBsaWJy YXJ5IgotLQotLWRlc2NyaXB0aW9uOiAiIiIKLS1wY3JlLW9jYW1sIG9mZmVycyBsaWJyYXJ5IGZ1 bmN0aW9ucyBmb3Igc3RyaW5nIHBhdHRlcm4gbWF0Y2hpbmcgYW5kCi0tc3Vic3RpdHV0aW9uLCBz aW1pbGFyIHRvIHRoZSBmdW5jdGlvbmFsaXR5IG9mZmVyZWQgYnkgdGhlIFBlcmwgbGFuZ3VhZ2Uu IiIiCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvcHJlLXY3LjMuMC1DSEFO R0VTLnR4dCBiL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3ByZS12Ny4zLjAtQ0hBTkdFUy50eHQK LWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggOWJjOTg3NWYwLi4wMDAwMDAwMDAKLS0t LSBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3ByZS12Ny4zLjAtQ0hBTkdFUy50eHQKLSsrKyAv ZGV2L251bGwKLUBAIC0xLDY5OCArMCwwIEBACi0tMjAxNi0wMi0yNTogIE1pbm9yIHZlcnNpb24g cmVsZWFzZSB2Ny4yLjM6Ci0tCi0tICAgICAgICAgICAgICAgRml4ZWQgY2FsbG91dCBidWcgaW50 cm9kdWNlZCB3aXRoIHY3LjIuMC4KLS0KLS0gICAgICAgICAgICAgVGhhbmtzIHRvIFJhbWFuIFZh cmFiZXRzIGZvciB0aGUgYnVnIHJlcG9ydCEKLS0KLS0yMDE2LTAyLTIzOiAgRml4ZWQgbGlua2lu ZyBwcm9ibGVtIHdpdGggb2xkIHZlcnNpb25zIG9mIFBDUkUgKDwgOC4yMCkuCi0tCi0tICAgICAg ICAgICAgIEZpeGVkIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUgd2l0aCBPQ2FtbCA8PSAz LjEyLgotLQotLTIwMTYtMDItMjI6ICBGaXhlZCBhIHN1Ymdyb3VwIG1hdGNoaW5nIGJ1Zy4KLS0K LS0gICAgICAgICAgICAgVGhhbmtzIHRvIENoZW5nIExvdSBmb3IgdGhlIGJ1ZyByZXBvcnQhCi0t Ci0tMjAxNS0wOC0yMTogIE1hZGUgR0MgbGVzcyBhZ2dyZXNzaXZlIHJlY2xhaW1pbmcgcmVnZXhw cyBhbmQgY2hhcnRhYmxlcy4KLS0KLS0yMDE0LTEyLTEwOiAgRml4ZWQgYW5vdGhlciBsaW1pdCBo YW5kbGluZyBidWcgaW4gdGhlIGZ1bGxfc3BsaXQgZnVuY3Rpb24uCi0tCi0tMjAxNC0xMi0wMjog IEZpeGVkIGEgbGltaXQgaGFuZGxpbmcgYnVnIGluIHRoZSBmdWxsX3NwbGl0IGZ1bmN0aW9uLgot LQotLSAgICAgICAgICAgICBUaGFua3MgdG8gUnVkaSBHcmluYmVyZyA8cnVkaS5ncmluYmVyZ0Bn bWFpbC5jb20+IGZvciB0aGUgcmVwb3J0IQotLQotLTIwMTQtMTAtMjM6ICBGaXhlZCBzdHJpbmcg aGFuZGxpbmcgZm9yIG5ldyBPQ2FtbCB2ZXJzaW9uIDQuMDIgKFN0cmluZy9CeXRlcwotLSAgICAg ICAgICAgICBtb2R1bGVzKS4gIFJlcXVpcmVzIG5ldyBmaW5kbGliIHZlcnNpb24gKD49IDEuNSku Ci0tCi0tMjAxNC0wNy0wNjogIE1vdmVkIHRvIEdpdEh1Yi4KLS0KLS0yMDE0LTA2LTA0OiAgTXVs dGlwbGUgYnVnIGZpeGVzOgotLQotLSAgICAgICAgICAgICAgICogQWxsY2F0aW9uIGJ1ZyB3aGVu IHBlcmZvcm1pbmcgY2FsbG91dHMKLS0gICAgICAgICAgICAgICAqIFVucHJvdGVjdGVkIHJvb3Qg d2hlbiBwZXJmb3JtaW5nIGNhbGxvdXRzCi0tICAgICAgICAgICAgICAgKiBNb3JlIHBvcnRhYmxl IG9mZnNldCBjb3B5aW5nIGluIHRoZSBDLXN0dWJzCi0tICAgICAgICAgICAgICAgKiBGaXhlZCBh IFBFUkwtY29tcGF0aWJpbGl0eSBidWcgaW4gdGhlIHNwbGl0dGluZyByb3V0aW5lcwotLQotLSAg ICAgICAgICAgIFRoZSBidWcgZml4ZXMgcmVxdWlyZWQgYSBtaW5vciBBUEktY2hhbmdlIGluIGFu IHVuc2FmZSBmdW5jdGlvbiwKLS0gICAgICAgICAgICB3aGljaCBpcyBhbG1vc3Qgc3VyZWx5IG5v dCBkaXJlY3RseSBjYWxsZWQgYnkgYW55IHVzZXJzLgotLQotLTIwMTItMDctMjA6ICBEb3duZ3Jh ZGVkIGZpbmRsaWIgdmVyc2lvbiByZXF1aXJlbWVudCB0byBzdXBwb3J0IHRoZSBEZWJpYW4KLS0g ICAgICAgICAgICAgdGVzdGluZyBicmFuY2guCi0tCi0tICAgICAgICAgICAgIEFkZGVkIC0td2l0 aC1wY3JlLWNvbmZpZyBmbGFnIHRvIGNvbmZpZ3VyZSBsb2NhdGlvbiBvZiBQQ1JFCi0tICAgICAg ICAgICAgIGNvbmZpZ3VyYXRpb24gZ2VuZXJhdG9yLgotLQotLTIwMTItMDctMTU6ICBOZXcgbWFq b3IgcmVsZWFzZSB2ZXJzaW9uIDcuMC4wOgotLQotLSAgICAgICAgICAgICAgICogVXBncmFkZWQg dG8gT0NhbWwgNC4wMAotLSAgICAgICAgICAgICAgICogU3dpdGNoZWQgdG8gT2FzaXMgZm9yIHBh Y2thZ2luZwotLSAgICAgICAgICAgICAgICogU3dpdGNoZWQgdG8gT0NhbWxCdWlsZCBmb3IgdGhl IGJ1aWxkIHByb2Nlc3MKLS0gICAgICAgICAgICAgICAqIFJld3JvdGUgUkVBRE1FIGluIE1hcmtk b3duCi0tICAgICAgICAgICAgICAgKiBBZGRlZCBzdHJpY3RlciBjb21waWxhdGlvbiBmbGFncwot LSAgICAgICAgICAgICAgICogTWlub3IgYnVnZml4ZXMKLS0KLS0yMDEyLTAxLTA0OiAgRml4ZWQg bmF0aXZlIGNvZGUgZGVidWcgYnVpbGQgdGFyZ2V0IGJ5IHVwZGF0aW5nIE9DYW1sTWFrZWZpbGUu Ci0tCi0tICAgICAgICAgICAgIFRoYW5rcyB0byBTdMOpcGhhbmUgR2xvbmR1IDxnbG9uZHVAZGVi aWFuLm9yZz4gZm9yIHRoZSBwYXRjaCEKLS0KLS0yMDExLTEyLTE1OiAgIEZpeGVkIGEgV2luZG93 cyBwb3J0YWJpbGl0eSBidWcgaW4gdGhlIEMtYmluZGluZ3MuCi0tCi0tICAgICAgICAgICAgIFRo YW5rcyB0byBFdmdlbmlpIExlcGlraGluIDxqb2hubGVwaWtoaW5AZ21haWwuY29tPiBmb3IgdGhl IHBhdGNoIQotLQotLTIwMTEtMTEtMDk6ICBVcGRhdGVkIE9DYW1sTWFrZWZpbGUgdG8gZml4IGxp bmtpbmcgb3JkZXIuCi0tCi0tMjAxMS0wMS0xNjogIEFkZGVkIHN1cHBvcnQgZm9yIGxpbWl0IHJl Y3Vyc2lvbiBmbGFnLgotLQotLSAgICAgICAgICAgICBUaGFua3MgdG8gRGVscGhpbiBMZWN1Y3Eg PERlbHBoaW4uTEVDVUNRQDNkcy5jb20+IGZvciB0aGUgcGF0Y2ghCi0tCi0tMjAxMC0xMC0zMTog IEltcHJvdmVkIFdpbmRvd3Mgc3VwcG9ydCB3aXRoIE1TVkMuCi0tCi0tICAgICAgICAgICAgIFRo YW5rcyB0byBTeWx2YWluIExlIEdhbGwgPHN5bHZhaW5AbGUtZ2FsbC5uZXQ+IGZvciB0aGUgcGF0 Y2ghCi0tCi0tMjAxMC0wNC0wMTogIEFkZGVkIG5ldyBmdW5jdGlvbjoKLS0KLS0gICAgICAgICAg ICAgICAqIHJlZ2V4cF9vcgotLQotLTIwMDktMDYtMjA6ICBGaXhlZCBidWcgaW4gY29uZmlndXJh dGlvbiBmdW5jdGlvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIGEgc2VnZmF1bHQuCi0tCi0tICAgICAg ICAgICAgIFRoYW5rcyB0byBHZXJkIFN0b2xwbWFubiA8Z2VyZEBnZXJkLXN0b2xwbWFubi5kZT4g Zm9yIHRoZSBwYXRjaCEKLS0KLS0yMDA5LTA1LTA3OiAgQ2hhbmdlZCBBUEkgd3J0LiBlcnJvciBo YW5kbGluZyBhbmQgdGh1cyBtYWRlIGEgbWFqb3IgcmVsZWFzZS4KLS0KLS0gICAgICAgICAgICAg SW1wcm92ZWQgYmVoYXZpb3IgaW4gdGhlIHByZXNlbmNlIG9mIHJlY3Vyc2lvbiBsaW1pdCBlcnJv cnMuCi0tICAgICAgICAgICAgIFRoYW5rcyB0byBNYXJ0aW4gSmFtYm9uIDxtYXJ0aW5qQG15bGlm ZS5jb20+IGZvciB0aGlzIHBhdGNoIQotLQotLTIwMDktMDQtMjM6ICBGaXhlZCBidWlsZCBwcm9i bGVtIG9uIE1pbkdXLgotLQotLSAgICAgICAgICAgICBUaGFua3MgdG8gR2VyZCBTdG9scG1hbm4g PGdlcmRAZ2VyZC1zdG9scG1hbm4uZGU+IGZvciB0aGUgcGF0Y2ghCi0tCi0tMjAwOS0wMy0wODog IEZpeGVkIGJ1aWxkIHByb2JsZW0gb24gTWFjIE9TIFggd2l0aCBtYWNwb3J0cy4KLS0KLS0gICAg ICAgICAgICAgVGhhbmtzIHRvIFJhbHBoIERvdWdsYXNzIDxyYWxwaEBncmF5c2tpZXMubmV0PiBm b3IgdGhlCi0tICAgICAgICAgICAgIGluaXRpYWwgcGF0Y2guCi0tCi0tICAgICAgICAgICAgIFVw ZGF0ZSBPQ2FtbE1ha2VmaWxlLgotLQotLSAgICAgICAgICAgICBJbXByb3ZlZCBHb2RpLWRpc3Ry aWJ1dGlvbi4KLS0KLS0yMDA4LTA1LTA2OiAgRml4ZWQgYnVpbGQgcHJvYmxlbSB3aXRoIG5ld2Vy IHZlcnNpb25zIG9mIFBDUkUuCi0tCi0tMjAwOC0wMy0xNDogIFN5bmNlZCB3aXRoIEphbmUgU3Ry ZWV0IHRyZWUuCi0tCi0tMjAwOC0wMS0yNTogIEFkZGVkIG5ldyBmdW5jdGlvbjoKLS0KLS0gICAg ICAgICAgICAgICAqIG5hbWVzCi0tCi0tICAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJu cyB0aGUgbmFtZXMgb2YgYWxsIG5hbWVkIHN1YnN0cmluZ3MgaW4gYQotLSAgICAgICAgICAgICBy ZWd1bGFyIGV4cHJlc3Npb24uCi0tCi0tICAgICAgICAgICAgIFRoYW5rcyB0byBCZW5lZGlrdCBH cnVuZG1hbm4gPGJncnVuZG1hbm5AamFuZXN0cmVldC5jb20+Ci0tICAgICAgICAgICAgIGZvciB0 aGUgcGF0Y2ghCi0tCi0tMjAwNy0wNy0xMjogIEltcHJvdmVkIGJ1aWxkIHNjcmlwdHMgZm9yIFdp bmRvd3MuCi0tCi0tICAgICAgICAgICAgIFRoYW5rcyB0byBDaHJpc3RvcGhlIFRyb2VzdGxlcgot LSAgICAgICAgICAgICA8Q2hyaXN0b3BoZS5Ucm9lc3RsZXJAdW1oLmFjLmJlPiBmb3IgdGhlIHBh dGNoIQotLQotLTIwMDctMDctMTI6ICBJbXByb3ZlZCBkb2N1bWVudGF0aW9uIGZvciBXaW4zMiBi dWlsZHMsIGFuZCBhZGRlZCBzb21lIGJ1aWxkCi0tICAgICAgICAgICAgIHNjcmlwdHMgdXNhYmxl IG9uIFdpbmRvd3MuCi0tCi0tICAgICAgICAgICAgIFRoYW5rcyB0byBDaHJpc3RvcGhlIFRyb2Vz dGxlcgotLSAgICAgICAgICAgICA8Q2hyaXN0b3BoZS5Ucm9lc3RsZXJAdW1oLmFjLmJlPiBmb3Ig dGhpcyBjb250cmlidXRpb24hCi0tCi0tMjAwNy0wNC0yMzogIGNhbGxiYWNrX2V4biAtPiBjYW1s X2NhbGxiYWNrX2V4bi4KLS0KLS0gICAgICAgICAgICAgVXBkYXRlZCBPQ2FtbE1ha2VmaWxlLgot LQotLTIwMDYtMTEtMjI6ICBVcGRhdGVkIE9DYW1sTWFrZWZpbGUuCi0tCi0tMjAwNi0wNi0xMTog IFVwZGF0ZWQgdG8gcGNyZS01LjAhCi0tCi0tICAgICAgICAgICAgIE5ldyByZXByZXNlbnRhdGlv biBmb3IgY2FsbGJhY2tzOiB0aGV5IG5vdyB0YWtlIG9ubHkgb25lCi0tICAgICAgICAgICAgIGFy Z3VtZW50IChhIHJlY29yZCBvZiB0aGUgY2FsbGJhY2sgZGF0YSkuCi0tCi0tICAgICAgICAgICAg IEFkZGVkIHBhcnRpYWwgbWF0Y2hpbmcgYW5kIGF1dG8gY2FsbG91dHMuCi0tCi0tMjAwNi0wMS0x NjogIFVwZGF0ZWQgT0NhbWxNYWtlZmlsZS4KLS0KLS0gICAgICAgICAgICAgUmVtb3ZlZCBhIHN1 cGVyZmx1b3VzIGJpbmRpbmcuCi0tCi0tMjAwNS0wOC0xODogIEZpeGVkIGEgc21hbGwgY29tcGls YXRpb24gcHJvYmxlbSBvbiByYXJlIHBsYXRmb3JtcyBieQotLSAgICAgICAgICAgICB1cGdyYWRp bmcgT0NhbWxNYWtlZmlsZS4KLS0KLS0yMDA1LTA2LTA4OiAgUmVsYXhlZCBsaWNlbnNlLiAgRml4 ZWQgY29weXJpZ2h0IGhlYWRlcnMuCi0tCi0tMjAwNS0wNS0zMTogIEZpeGVkIHNvbWUgdW5jbGVh bmxpbmVzcyByZXBvcnRlZCBieSBTYWZmaXJlIChGRkktdHlwZSBjaGVja2VyKS4KLS0KLS0yMDA0 LTA5LTE3OiAgRml4ZWQgYSBidWcgY29uY2VybmluZyBudWxsIHBhdHRlcm5zIGluIGV4ZWNfYWxs IChleHRyYWN0X2FsbAotLSAgICAgICAgICAgICBhbmQgZXh0cmFjdF9hbGxfb3B0IGFyZSBhbHNv IGFmZmVjdGVkKS4KLS0KLS0gICAgICAgICAgICAgVXBkYXRlZCBPQ2FtbE1ha2VmaWxlLgotLQot LTIwMDQtMDUtMTk6ICBVcGRhdGVkIE1ha2VmaWxlLm1pbmd3LgotLSAgICAgICAgICAgICBUaGFu a3MgdG8gSmVmZiBIZW5yaWtzb24gPGplaGVucmlrQHlhaG9vLmNvbT4gZm9yIHRoZSBwYXRjaCEK LS0KLS0gICAgICAgICAgICAgVXBkYXRlZCBPQ2FtbE1ha2VmaWxlLgotLQotLTIwMDQtMDQtMjk6 ICBDaGFuZ2VkIGJlaGF2aW91ciBvZiAiZ2V0X3N1YnN0cmluZyIhISEKLS0KLS0gICAgICAgICAg ICAgSXQgbm93IGRvZXMgbm90IHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIGFueW1vcmUgaWYgYW4K LS0gICAgICAgICAgICAgYWNjZXNzZWQgc3Vic3RyaW5nIHdhcyBub3QgY2FwdHVyZWQuICBJdCBy YWlzZXMgdGhlIGV4Y2VwdGlvbgotLSAgICAgICAgICAgICAiTm90X2ZvdW5kIiBpbnN0ZWFkLgot LQotLSAgICAgICAgICAgICBUaHJlZSBuZXcgZnVuY3Rpb25zOgotLQotLSAgICAgICAgICAgICAg ICogZ2V0X29wdF9zdWJzdHJpbmdzCi0tICAgICAgICAgICAgICAgKiBleHRyYWN0X29wdAotLSAg ICAgICAgICAgICAgICogZXh0cmFjdF9hbGxfb3B0Ci0tCi0tICAgICAgICAgICAgIFRoZXNlIGJl aGF2ZSBsaWtlIHRoZSBmdW5jdGlvbnMgd2l0aG91dCAib3B0IiwgYnV0IHJldHVybgotLSAgICAg ICAgICAgICAiU29tZSBzdWJzdHJpbmciIGlmIGEgc3Vic3RyaW5nIHdhcyBjYXB0dXJlZCwgYW5k ICJOb25lIgotLSAgICAgICAgICAgICBvdGhlcndpc2UuCi0tCi0tMjAwNC0wNC0yNzogIFVwZGF0 ZWQgT0NhbWxNYWtlZmlsZS4KLS0KLS0yMDA0LTA0LTI0OiAgVXBkYXRlZCBPQ2FtbE1ha2VmaWxl LgotLQotLTIwMDQtMDMtMjg6ICBDaGFuZ2VkIGludGVyZmFjZSB0byBidWlsZC10aW1lIGNvbmZp Z3VyYXRpb24gZnVuY3Rpb25zCi0tICAgICAgICAgICAgIG9mIFBDUkUuCi0tCi0tICAgICAgICAg ICAgIFVwZGF0ZWQgT0NhbWxNYWtlZmlsZS4KLS0KLS0yMDA0LTAyLTIxOiAgQWRkZWQgQ0FNTHBy aW0gaW4gdGhlIEMtaW50ZXJmYWNlIHdoZXJlIGFwcHJvcHJpYXRlLgotLQotLTIwMDQtMDItMDg6 ICBGaXhlZCBhIG1pbm9yIGJ1ZyBjb25jZXJuaW5nIHJldHVybmluZyB1bml0IHZhbHVlcyBmcm9t IEMuCi0tCi0tMjAwNC0wMS0zMTogIEFkZGVkIHBjcmVfbWFrZS53aW4zMi9NYWtlZmlsZS5taW5n dy4gVGhhbmtzIHRvIEplZmZyZXkKLS0gICAgICAgICAgICAgSGVucmlrc29uIDxKRUZIRU5AU0FG RUNPLmNvbT4gZm9yIHRoaXMgY29udHJpYnV0aW9uIQotLQotLSAgICAgICAgICAgICBVcGRhdGUg T0NhbWxNYWtlZmlsZS4KLS0KLS0yMDA0LTAxLTEzOiAgVXBkYXRlZCBwY3JlX21ha2Uud2luMzIv cGNyZS5oLgotLQotLTIwMDMtMTItMzA6ICBGaXhlZCBkb2N1bWVudGF0aW9uLgotLQotLTIwMDMt MTItMjE6ICBVcGRhdGVkIHRvIHBjcmUtNC41IQotLQotLSAgICAgICAgICAgICBOZXcgZnVuY3Rp b246Ci0tCi0tICAgICAgICAgICAgICAgKiBjb25maWdfc3RhY2tyZWN1cnNlCi0tCi0tICAgICAg ICAgICAgIE5ldyBleGNlcHRpb246Ci0tCi0tICAgICAgICAgICAgICAgKiBCYWRVVEY4T2Zmc2V0 Ci0tCi0tICAgICAgICAgICAgIFVwZGF0ZWQgT0NhbWxNYWtlZmlsZS4KLS0KLS0yMDAzLTEyLTE5 OiAgRml4ZWQgYSBzbWFsbCAoYnV0IHByb2JhYmx5IHVubm90aWNhYmxlKSBidWcgY29uY2Vybmlu ZwotLSAgICAgICAgICAgICBhbGxvY2F0aW9uIG9mIG9wdGlvbmFsIHZhbHVlcyBpbiB0aGUgQy1z dHVicy4KLS0KLS0yMDAzLTEyLTEyOiAgVXBkYXRlZCBPQ2FtbE1ha2VmaWxlLiBSZW5hbWVkIHN0 dWJzIChpbnZpc2libGUgdG8gdXNlcnMpLgotLQotLTIwMDMtMTEtMTY6ICBVcGRhdGVkIHBjcmVf bWFrZS53aW4zMi9wY3JlLmggdG8gcmVmbGVjdCBuZXdlc3QgUENSRS12ZXJzaW9uLgotLSAgICAg ICAgICAgICBNYXkgaGVscCBXaW5kb3dzIHVzZXJzLgotLQotLTIwMDMtMTAtMDg6ICBVcGdyYWRl ZCB0byBwY3JlLTQuNCEKLS0KLS0gICAgICAgICAgICAgTmV3IGZsYWcgZm9yIGNvbXBpbGluZyBw YXR0ZXJuczogTk9fVVRGOF9DSEVDSwotLSAgICAgICAgICAgICBOZXcgZXhjZXB0aW9uOiBCYWRV VEY4Ci0tCi0tICAgICAgICAgICAgIFVwZGF0ZWQgT0NhbWxNYWtlZmlsZS4KLS0KLS0yMDAzLTA5 LTMwOiAgRml4ZWQgYSBidWcgaW4gdGhlIGRvY3VtZW50YXRpb24uCi0tICAgICAgICAgICAgIFVw ZGF0ZWQgT0NhbWxNYWtlZmlsZS4KLS0KLS0yMDAzLTA2LTE3OiAgRml4ZWQgYSBidWcgaW4gdGhl IGRvY3VtZW50YXRpb24uCi0tICAgICAgICAgICAgIFVwZGF0ZWQgT0NhbWxNYWtlZmlsZS4KLS0K LS0yMDAzLTA1LTI5OiAgVXBkYXRlZCB0byBwY3JlLTQuMyEKLS0KLS0gICAgICAgICAgICAgTWFq b3IgY2hhbmdlOiBjYWxsb3V0cyBhcmUgbm93IGZ1bGx5IHN1cHBvcnRlZCEgVGhpcyBhbGxvd3MK LS0gICAgICAgICAgICAgdGhlIG1hdGNoaW5nIGVuZ2luZSBjYWxsIE9DYW1sLWNvZGUgd2hpbGUg bWF0Y2hpbmcgLSBxdWl0ZQotLSAgICAgICAgICAgICBwb3dlcmZ1bCEgUGxlYXNlIHNlZSB0aGUg aW50ZXJmYWNlIHNwZWNpZmljYXRpb24gZm9yIG1vcmUKLS0gICAgICAgICAgICAgaW5mb3JtYXRp b24uCi0tCi0tICAgICAgICAgICAgIE1hbnkgc21hbGwgY2hhbmdlcyAoaW1wcm92ZW1lbnRzKSBp biBDLWNvZGUuIFVwZGF0ZWQKLS0gICAgICAgICAgICAgZG9jdW1lbnRhdGlvbi4KLS0KLS0yMDAz LTA0LTA4OiAgVXBkYXRlZCBPQ2FtbE1ha2VmaWxlLiBSZWZvcm1hdHRlZCBkb2N1bWVudGF0aW9u LgotLQotLTIwMDMtMDMtMjA6ICBBZGRlZCBuZXcgZnVuY3Rpb24gImdldF9zdWJqZWN0Ii4gUGF0 Y2hlZCBPQ2FtbE1ha2VmaWxlLgotLQotLTIwMDMtMDMtMTg6ICBNYWpvciB1cGRhdGU6IHVwZ3Jh ZGVkIHRvIHBjcmUtNC4xIQotLQotLSAgICAgICAgICAgICBCZXR0ZXIgVVRGOC1zdXBwb3J0Lgot LSAgICAgICAgICAgICBOZXcgZmxhZyAiTk9fQVVUT19DQVBUVVJFIi4KLS0KLS0gICAgICAgICAg ICAgTmV3IHZhbHVlczoKLS0KLS0gICAgICAgICAgICAgICAqIGNvbmZpZ191dGY4Ci0tICAgICAg ICAgICAgICAgKiBjb25maWdfbmV3bGluZQotLSAgICAgICAgICAgICAgICogY29uZmlnX2xpbmtf c2l6ZQotLSAgICAgICAgICAgICAgICogY29uZmlnX21hdGNoX2xpbWl0Ci0tCi0tICAgICAgICAg ICAgIFJlbmFtZWQgYWxsIG9jY3VycmVuY2VzIG9mICJmaXJzdGNoYXIiIHRvICJmaXJzdGJ5dGUi LgotLQotLSAgICAgICAgICAgICBOZXcgZnVuY3Rpb25zOgotLQotLSAgICAgICAgICAgICAgICog c3R1ZHlzaXplCi0tICAgICAgICAgICAgICAgKiBuYW1lY291bnQKLS0gICAgICAgICAgICAgICAq IG5hbWVlbnRyeXNpemUKLS0gICAgICAgICAgICAgICAqIGdldF9zdHJpbmdudW1iZXIKLS0KLS0g ICAgICAgICAgICAgVXBkYXRlZCBPQ2FtbE1ha2VmaWxlLgotLQotLTIwMDMtMDEtMDc6ICBVcGRh dGVkIE9DYW1sTWFrZWZpbGUgdG8gbWFrZSB1c2Ugb2YgImZpbmRsaWIiLgotLQotLSAgICAgICAg ICAgICBBZGRlZCBzdXBwb3J0IGZvciBVVEYtOCBjaGFyYWN0ZXIgZW5jb2RpbmdzLgotLQotLSAg ICAgICAgICAgICBCZXR0ZXIgaW5zdGFsbGF0aW9uIGFuZCBkb2N1bWVudGF0aW9uIGZvciBXaW4z Mi4KLS0KLS0gICAgICAgICAgICAgVGhhbmtzIHRvIEFydGVtIFByaXN5em51ayA8dGVtYUBzaXQu a2lldi51YT4gZm9yIHRoZSBhYm92ZQotLSAgICAgICAgICAgICBwYXRjaGVzIQotLQotLTIwMDIt MTItMTQ6ICBGaXhlZCBhIGJ1ZyBjb25jZXJuaW5nIHplcm8tc2l6ZWQgbWF0Y2hlcyBlZmZlY3Rp bmcKLS0gICAgICAgICAgICAgInJlcGxhY2UiLCAicXJlcGxhY2UiLCAic3Vic3RpdHV0ZV9zdWJz dHJpbmdzIiBhbmQKLS0gICAgICAgICAgICAgInN1YnN0aXR1dGUiLgotLQotLSAgICAgICAgICAg ICBVcGRhdGVkIE9DYW1sTWFrZWZpbGUuCi0tCi0tMjAwMi0xMi0wODogIEltcHJvdmVkIGRvY3Vt ZW50YXRpb24gb2YgInBjcmVfZXhlYyIuCi0tCi0tMjAwMi0xMS0yNDogIEZpeGVkIGEgYnVnIGlu ICJmdWxsX3NwbGl0IiBjb25jZXJuaW5nIG1hdGNoZWQgc3ViZ3JvdXBzLgotLQotLTIwMDItMTEt MTI6ICBBZGRlZCBhIG5ldyBmdW5jdGlvbiAiZXh0cmFjdF9hbGwiIChzZWUgaW50ZXJmYWNlCi0t ICAgICAgICAgICAgIGRvY3VtZW50YXRpb24pLgotLQotLTIwMDItMDgtMTY6ICBGaXhlZCBhIGJ1 ZyBpbiB0aGUgInNwbGl0Ii1mdW5jdGlvbjoKLS0KLS0gICAgICAgICAgICAgVGhlIFBlcmwtc3Bs aXR0aW5nIHNlbWFudGljcyB3YXMgbm90IGNvbXBsZXRlbHkgYWRoZXJlZCB0bzoKLS0gICAgICAg ICAgICAgbGVhZGluZyB3aGl0ZXNwYWNlIHdhcyBzdHJpcHBlZCBhZnRlciB0aGUgbWF0Y2hpbmcg cHJvY2VzcwotLSAgICAgICAgICAgICByYXRoZXIgdGhhbiBiZWZvcmUsIHdoaWNoIGxlYWQgdG8g aW5jb21wYXRpYmxlIGJlaGF2aW91cgotLSAgICAgICAgICAgICB3aGVuIGEgbWF4aW11bSBib3Vu ZCB3YXMgdXNlZC4KLS0KLS0gICAgICAgICAgICAgVGhhbmtzIHRvIFl1dGFrYSBPaXdhIDxvaXdh QHlsLmlzLnMudS10b2t5by5hYy5qcD4gZm9yIHRoZQotLSAgICAgICAgICAgICBidWcgcmVwb3J0 IQotLQotLSAgICAgICAgICAgICBVcGRhdGVkIE9DYW1sTWFrZWZpbGUuCi0tCi0tMjAwMi0wNy0z MTogIEZpeGVkIGEgYnVnIGluIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgotLQotLSAgICAgICAg ICAgICAgICogcmVwbGFjZQotLSAgICAgICAgICAgICAgICogcXJlcGxhY2UKLS0gICAgICAgICAg ICAgICAqIHN1YnN0aXR1dGVfc3Vic3RyaW5ncwotLQotLSAgICAgICAgICAgICBUcmFuc2Zvcm1l ZCBtb3N0IHBhcnQgb2YgdGhlIGxpYnJhcnkgdG8gbWFrZSBpdCBzbGlnaHRseQotLSAgICAgICAg ICAgICBtb3JlIGVmZmljaWVudCBhbmQgc2ltcGxlLiBUaGUgaW50ZXJmYWNlIGlzIHN0aWxsIHRo ZSBzYW1lIQotLQotLSAgICAgICAgICAgICBVcGRhdGVkIE9DYW1sTWFrZWZpbGUgKyBkb2N1bWVu dGF0aW9uLgotLQotLTIwMDItMDctMTU6ICBGaXhlZCBhIG1pc3Rha2UgaW4gdGhlIGRvY3VtZW50 YXRpb24uCi0tCi0tMjAwMi0wNS0wNTogIEZpeGVkIGEgYnVnIHdpdGggdGhlIGdlbmVyYXRpb24g b2YgYnl0ZS1jb2RlIGxpYnJhcmllcyB0aGF0Ci0tICAgICAgICAgICAgIGR5bmFtaWNhbGx5IGxp bmsgdGhlIFBDUkUuCi0tCi0tMjAwMi0wNS0wMTogIFJlbW92ZWQgQy1saWJyYXJ5IGZyb20gZGlz dHJpYnV0aW9uISBVc2VycyBtdXN0IGluc3RhbGwgaXQKLS0gICAgICAgICAgICAgb24gdGhlaXIg b3duIG5vdy4gUmVvcmdhbml6ZWQgd2hvbGUgZGlzdHJpYnV0aW9uIGFuZCB1cGRhdGVkCi0tICAg ICAgICAgICAgIE9DYW1sTWFrZWZpbGUgYWdhaW4gZm9yIGJldHRlciBzdXBwb3J0IG9mIGR5bmFt aWMgYW5kL29yCi0tICAgICAgICAgICAgIHN0YXRpYyBsaWJyYXJpZXMuCi0tCi0tMjAwMi0wNC0z MDogIFVwZGF0ZWQgT2NhbWxNYWtlZmlsZTogaXQgZG9lcyBub3QgYXNrIGZvciBjb25maXJtYXRp b24KLS0gICAgICAgICAgICAgZHVyaW5nIGluc3RhbGxhdGlvbiBhbnltb3JlIQotLQotLTIwMDIt MDMtMDY6ICBVcGdyYWRlZCB0byBwY3JlLTMuOS4gVGhpcyBzaG91bGQgbm90IGNoYW5nZSBhbnl0 aGluZyBmb3IKLS0gICAgICAgICAgICAgT0NhbWwtdXNlcnMuCi0tCi0tMjAwMi0wMy0wMTogIFVw ZGF0ZWQgT2NhbWxNYWtlZmlsZS4KLS0KLS0yMDAyLTAyLTI0OiAgU2VwYXJhdGVkIGNvbXBpbGF0 aW9uIG9mIGxpYnJhcnkgYW5kIGV4YW1wbGVzIHRvIHByZXZlbnQKLS0gICAgICAgICAgICAgY29u ZnVzaW9ucyB3aGVuIHRoZSBsaWJyYXJ5IG5lZWRzIHRvIGJlIGluc3RhbGxlZCBiZWZvcmUKLS0g ICAgICAgICAgICAgb25lIGNhbiBidWlsZCB0aGUgZXhhbXBsZXMuCi0tCi0tMjAwMi0wMi0xNTog IEZpeGVkIGEgYnVnIGluIHRoZSBwY3JlX2V4ZWMtZnVuY3Rpb24gd2hpY2ggd2FzIGludHJvZHVj ZWQKLS0gICAgICAgICAgICAgdGVuIGRheXMgYWdvIGR1cmluZyBjb3JyZWN0aW9uIG9mIGFub3Ro ZXIgYnVnICh0aGFua3MgdG8KLS0gICAgICAgICAgICAgR2VyZCBTdG9scG1hbm4gZm9yIHRoZSBy ZXBvcnQhKS4KLS0KLS0yMDAyLTAyLTE1OiAgQWRkZWQgdGhlIG9wdGlvbiB0byBjb21waWxlIHRo ZSBsaWJyYXJ5IHN0YXRpY2FsbHkgb25seS4KLS0KLS0gICAgICAgICAgICAgVXBkYXRlZCBJTlNU QUxMLW5vdGVzIHRvIGV4cGxhaW4gcG9zc2libGUgaW5zdGFsbGF0aW9uCi0tICAgICAgICAgICAg IHByb2JsZW1zIGFzc29jaWF0ZWQgd2l0aCBzdXBwb3J0IG9mIGR5bmFtaWMgbGlua2luZy4KLS0K LS0gICAgICAgICAgICAgQWRkZWQgTUVUQS1maWxlIGZvciBmaW5kbGliLgotLQotLTIwMDItMDIt MTI6ICBSZXdyb3RlIGludGVyZmFjZSBkb2N1bWVudGF0aW9uIHRvIHN1cHBvcnQgT0NhbWxkb2Mu Ci0tCi0tICAgICAgICAgICAgIEZpeGVkIGEgcG9ydGFiaWxpdHkgYnVnIHdpdGggc2hhcmVkIGxp YnJhcmllcy4KLS0KLS0yMDAyLTAyLTEwOiAgUmVtb3ZlZCBwcm9qZWN0IGZyb20gU291cmNlZm9y Z2UgZm9yIHNpbXBsZXIgbWFpbnRhaW5hbmNlLgotLQotLTIwMDItMDItMDc6ICBJbXBvcnRhbnQg bmV3czogbGlicmFyeSBpcyBsaW5rZWQgZHluYW1pY2FsbHkgbm93IGJ5IGRlZmF1bHQuCi0tCi0t MjAwMi0wMi0wNjogIEZpeGVkIGEgc3R1cGlkIGJ1ZyBhZmZlY3RpbmcgdGhlIGZvbGxvd2luZyBm dW5jdGlvbnMKLS0gICAgICAgICAgICAgKHRoYW5rcyB0byBKYWNlayBDaHJ6YXN6Y3ogZm9yIHRo ZSBidWcgcmVwb3J0ISk6Ci0tCi0tICAgICAgICAgICAgICAgKiBudW1fb2Zfc3VicwotLSAgICAg ICAgICAgICAgICogZ2V0X3N1YnN0cmluZwotLSAgICAgICAgICAgICAgICogZ2V0X3N1YnN0cmlu Z19vZnMKLS0gICAgICAgICAgICAgICAqIGdldF9zdWJzdHJpbmdzCi0tICAgICAgICAgICAgICAg KiBleHRyYWN0Ci0tCi0tICAgICAgICAgICAgIEFsc28gZG9uZTogY29udmVydGVkIGxpdGVyYWwg cGF0dGVybiBzdHJpbmdzIGluIHRoZSBsaWJyYXJ5Ci0tICAgICAgICAgICAgIGFuZCB0aGUgY2xv Yy1leGFtcGxlIHNvIHRoYXQgdGhlIGVzY2FwZSBjaGFyIChiYWNrc2xhc2gpIGRvZXMKLS0gICAg ICAgICAgICAgbm90IGNhdXNlIHdhcm5pbmdzIGFueW1vcmUgd2l0aCB0aGUgbmV3IE9DYW1sLXJl bGVhc2UuIFRoZQotLSAgICAgICAgICAgICBsYXR0ZXIgaXMgbW9yZSBwYXJhbm9pZCBhYm91dCB1 bmtub3duIGVzY2FwZSBjb21iaW5hdGlvbnMsCi0tICAgICAgICAgICAgIHJlcXVpcmluZyB0aGUg dXNlciB0byBhZGQgZXh0cmEgYmFja3NsYXNoZXMuCi0tCi0tMjAwMi0wMS0wNzogIEZpeGVkIGEg c3R1cGlkIGJ1ZzogdGhlIHBvc2l0aW9uIGFyZ3VtZW50IChvZmZzZXQpIHdhcwotLSAgICAgICAg ICAgICBub3QgY29ycmVjdGx5IGhhbmRsZWQgaW4gcmVwbGFjZW1lbnQgYW5kIHN1YnN0aXR1dGlv bgotLSAgICAgICAgICAgICBmdW5jdGlvbnMsIGxlYWRpbmcgdG8gd3JvbmcgcmVzdWx0cy4gQXMg aXQgc2VlbXMsIHBlb3BsZQotLSAgICAgICAgICAgICBzZWxkb20gdXNlIGFyZ3VtZW50cyBvdGhl ciB0aGFuIHplcm8uLi4KLS0KLS0gICAgICAgICAgICAgVGhlICJzdWJzdCItZXhhbXBsZSBub3cg YXNzdW1lcyB0aGF0IG9mZnNldHMgb3RoZXIgdGhhbiB6ZXJvCi0tICAgICAgICAgICAgIHNob3Vs ZCBub3QgbGVhZCB0byBhbiBlcnJvciBpZiBpdCBleGNlZWRzIHRoZSBsaW5lIGxlbmd0aC4KLS0g ICAgICAgICAgICAgVGhlIGxpbmUgaXMganVzdCBjb3BpZWQgaW5zdGVhZC4KLS0KLS0yMDAxLTEy LTI4OiAgQWRkZWQgUkVBRE1FLndpbjMyIChjb3VydGVzeSBvZiBKb2huIFcuIFNtYWxsKS4KLS0K LS0gICAgICAgICAgICAgVXBkYXRlZCBSRUFETUUgc28gdGhhdCBpdCBpcyBnZW5lcmF0ZWQgYnkg SGV2ZWEuCi0tCi0tMjAwMS0xMS0xOTogIFVwZ3JhZGVkIHRvIHRoZSBuZXdlc3QgcmVsZWFzZSBv ZiB0aGUgdW5kZXJseWluZyBDLWxpYnJhcnkKLS0gICAgICAgICAgICAgKFBDUkUtMy43KS4KLS0K LS0gICAgICAgICAgICAgQWRkZWQgYSB0aW55IHBhdGNoIHRvIHNhdGlzZnkgdGhlIFZpc3VhbCBD KysgY29tcGlsZXIgdW5kZXIKLS0gICAgICAgICAgICAgVzJLICh0aGFua3MgdG8gSm9obiBXLiBT bWFsbCEpLgotLQotLSAgICAgICAgICAgICBVcGRhdGVkIGNvbnRhY3QgYWRkcmVzcy4KLS0KLS0y MDAxLTExLTE3OiAgVXBkYXRlZCBPY2FtbE1ha2VmaWxlLgotLQotLTIwMDEtMDktMTU6ICBVcGdy YWRlZCB0byB0aGUgbmV3ZXN0IHJlbGVhc2Ugb2YgdGhlIHVuZGVybHlpbmcgQy1saWJyYXJ5Ci0t ICAgICAgICAgICAgIChQQ1JFLTMuNSkuCi0tCi0tICAgICAgICAgICAgIEFkZGVkIGEgbmV3IGZ1 bmN0aW9uOiBzdWJzdGl0dXRlX3N1YnN0cmluZ3MKLS0KLS0gICAgICAgICAgICAgSXQgaXMgc2lt aWxhciB0byAic3Vic3RpdHV0ZSIsIGJ1dCB0YWtlcyB0aGUgZnVsbCBzdWJzdHJpbmcKLS0gICAg ICAgICAgICAgaW5mb3JtYXRpb24gb2YgdGhlIG1hdGNoIHJhdGhlciB0aGFuIHRoZSBtYXRjaGlu ZyBzdHJpbmcuCi0tICAgICAgICAgICAgIFRoYW5rcyB0byBQYXRyaWNrIE0uIERvYW5lIGZvciBw cm9wb3NpbmcgdGhpcyBtaXNzaW5nIGZlYXR1cmUhCi0tCi0tMjAwMS0wOS0wNzogIFVwZGF0ZWQg T2NhbWxNYWtlZmlsZQotLQotLTIwMDEtMDgtMjc6ICBGaXhlZCBhIGJ1ZyBpbiB0aGUgc3BsaXR0 aW5nIGZ1bmN0aW9uOiBsZWFkaW5nIHdoaXRlc3BhY2Ugd2FzCi0tICAgICAgICAgICAgIGFjY2lk ZW50bHkgYWx3YXlzIHJlbW92ZWQgd2hlbiB1c2luZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbgotLSAg ICAgICAgICAgICByYXRoZXIgdGhhbiBhIHBhdHRlcm4uIFRoaXMgYmVoYXZpb3VyIHNob3VsZCBv bmx5IGhhcHBlbgotLSAgICAgICAgICAgICBmb3IgdGhlIGRlZmF1bHQgd2hpdGVzcGFjZSBwYXR0 ZXJuLCB3aGljaCBpcyB1c2VkIGlmIHlvdQotLSAgICAgICAgICAgICBkbyBub3Qgc3BlY2lmeSBh bnkgcGF0dGVybiBvciByZWdleHAgaW4gdGhlIGZ1bmN0aW9uIGNhbGwuCi0tCi0tMjAwMS0wNi0z MDogIFJlbW92ZWQgIlByaW50ZXhjLmNhdGNoIiBmcm9tIGV4YW1wbGVzOiBpcyBnb2luZyB0byBi ZQotLSAgICAgICAgICAgICBkZXByZWNhdGVkIGluIHVwY29taW5nIE9DYW1sLXJlbGVhc2UuCi0t Ci0tMjAwMS0wNS0yMjogIEZpeGVkIHR5cG8gaW4gZG9jdW1lbnRhdGlvbi4KLS0KLS0yMDAxLTA0 LTI1OiAgQWRkZWQgYSBuZXcgZnVuY3Rpb246IGFzcGxpdAotLQotLSAgICAgICAgICAgICBJdCBp cyBpZGVudGljYWwgdG8gInNwbGl0IiB3aXRoIHRoZSBleGNlcHRpb24gdGhhdCBpdAotLSAgICAg ICAgICAgICByZXR1cm5zIGEgc3RyaW5nIGFycmF5IGluc3RlYWQgb2YgYSBzdHJpbmcgbGlzdC4g VGhpcyBtYWtlcwotLSAgICAgICAgICAgICBpdCBlYXNpZXIgZm9yIHRoZSB1c2VyIHRvIGFjY2Vz cyBzdHJpbmdzIGJ5IGluZGV4LgotLQotLSAgICAgICAgICAgICBBZGRlZCBhIG5ldyBvcHRpb24g dG8gImdldF9zdWJzdHJpbmdzIiBhbmQgImV4dHJhY3QiOiBmdWxsX21hdGNoCi0tCi0tICAgICAg ICAgICAgIFdoZW4gImZ1bGxfbWF0Y2giIGlzIHRydWUgKGRlZmF1bHQ6IHllcyksIHRoZW4gdGhl IHJlc3VsdGluZwotLSAgICAgICAgICAgICBzdHJpbmcgYXJyYXkgd2lsbCBjb250YWluIHRoZSBm dWxsIG1hdGNoIGF0IGluZGV4IDAsCi0tICAgICAgICAgICAgIG90aGVyd2lzZSB0aGUgcmVzdWx0 IHdpbGwgb25seSBjb250YWluIGNhcHR1cmVkIHN1YnN0cmluZ3MuCi0tCi0tICAgICAgICAgICAg IFJlbW92ZWQgc3VwZXJmbHVvdXMgY29tbWVudHMgaW4gInBjcmUubWwiOiB0aGV5IGFyZSBhbHJl YWR5Ci0tICAgICAgICAgICAgIHByZXNlbnQgaW4gdGhlIGludGVyZmFjZSBkb2N1bWVudGF0aW9u IGFueXdheS4KLS0KLS0yMDAxLTA0LTA4OiAgU21hbGwgcGF0Y2ggdGhhdCBtYWtlcyB0aGlzIGxp YnJhcnkgY29tcGlsZSBvbiBPcGVuQlNELCB0b28uCi0tCi0tMjAwMS0wMS0zMDogIE1hZGUgTWFr ZWZpbGUgbW9yZSBnZW5lcmFsIChhbGxvd3Mgc2ltcGxlciBhZGRpdGlvbiBvZgotLSAgICAgICAg ICAgICBmdXJ0aGVyIGV4YW1wbGVzKS4KLS0KLS0yMDAxLTAxLTI0OiAgVXBkYXRlZCBPY2FtbE1h a2VmaWxlOiBtYWRlIGRlZmF1bHQgZGVmaW5pdGlvbiBvZgotLSAgICAgICAgICAgICAiT0NBTUxM SUJQQVRIIiBiYWNrd2FyZHMgY29tcGF0aWJsZSBhZ2Fpbjogc29tZSBwZW9wbGUKLS0gICAgICAg ICAgICAgZG8gbm90IHVzZSB0aGUgQ1ZTLXZlcnNpb24gb2YgT0NhbWwsIHdoaWNoIHN1cHBvcnRz IHRoZQotLSAgICAgICAgICAgICAiLXdoZXJlIi1vcHRpb24uICBQZW9wbGUgd2l0aCB0aGUgbmV3 IGNvbXBpbGVyIHdpbGwgbm90Ci0tICAgICAgICAgICAgIG5vdGljZSBhbnkgZWZmZWN0LgotLQot LTIwMDEtMDEtMDY6ICBBZGRlZCBhIG5ldyBmdW5jdGlvbjogZXhlY19hbGwKLS0KLS0gICAgICAg ICAgICAgSXQgYWxsb3dzIHlvdSB0byBleGVjdXRlIHBhdHRlcm4gbWF0Y2hpbmcgb3ZlciBhIHdo b2xlCi0tICAgICAgICAgICAgIHN0cmluZyB1bnRpbCBubyBtb3JlIG1hdGNoZXMgY2FuIGJlIGZv dW5kOiB0aGVuIGl0IHJldHVybnMKLS0gICAgICAgICAgICAgdGhlIGFycmF5IG9mIGFsbCBtYXRj aGluZyAic3Vic3RyaW5ncyIuIFlvdSBjYW4gZXh0cmFjdAotLSAgICAgICAgICAgICBzdWJwYXR0 ZXJucyBvZiBlYWNoIG9mIHRob3NlIG1hdGNoaW5nIHN1YnN0cmluZ3MgYWdhaW4gd2l0aAotLSAg ICAgICAgICAgICB0aGUgdXN1YWwgZnVuY3Rpb25zLgotLQotLSAgICAgICAgICAgICBGaXhlZCBh IG1pbm9yIGluY29uc2lzdGVuY3kgaW4gIm5leHRfbWF0Y2giLgotLQotLTIwMDAtMTItMjM6ICBV cGRhdGVkIE9jYW1sTWFrZWZpbGU6IG1ha2VzIHVzZSBvZiB0aGUgbmV3ICItd2hlcmUiLWtleXdv cmQKLS0gICAgICAgICAgICAgdG8gZmluZCB0aGUgcGF0aCB0byB0aGUgc3RhbmRhcmQgbGlicmFy eSBpZiBpdCBpcyBub3QKLS0gICAgICAgICAgICAgZGVmaW5lZC4KLS0KLS0yMDAwLTEyLTE0OiAg UGVkYW50cnkgaW4gdGhlIEMtaW50ZXJmYWNlOiBhZGRlZCAiY29uc3QiIHF1YWxpZmllcnMuCi0t Ci0tMjAwMC0xMi0wOTogIE1hZGUgc29tZSBmdW5jdGlvbnMgdGFpbC1yZWN1cnNpdmUgKHZlcnkg dW5saWtlbHkgdG8gY2F1c2UKLS0gICAgICAgICAgICAgYW55IG5vdGljYWJsZSBlZmZlY3QgZm9y IG1vc3QgcGVvcGxlKS4KLS0KLS0yMDAwLTEyLTAyOiAgQ2xlYW5lZCB1cCB0aGUgY29kZSBhIGJp dCBmb3IgZGlzdHJpYnV0aW9uIG9uIFNvdXJjZUZvcmdlLgotLSAgICAgICAgICAgICBTcGVlZCBv ZiBzb21lIG9wZXJhdGlvbnMgc2hvdWxkIGJlIHZlcnkgc2xpZ2h0bHkgaW1wcm92ZWQsIHRvby4K LS0KLS0yMDAwLTExLTE2OiAgRml4ZWQgYSBzdHVwaWQgYnVnIHRoYXQgY291bGQgY3Jhc2ggeW91 ciBwcm9ncmFtcyB1bmRlciByYXJlCi0tICAgICAgICAgICAgIGNpcmN1bXN0YW5jZXMgKHdoZW4g eW91IHVzZSBmYXVsdHkgcmVndWxhciBleHByZXNzaW9ucykuCi0tCi0tICAgICAgICAgICAgIEFk ZGVkIGFuIGludGVybmFsbHkgdXNlZCBleGNlcHRpb24gKEludGVybmFsRXJyb3IpIHRvIHRoZQot LSAgICAgICAgICAgICBpbnRlcmZhY2Ugb2YgdGhlIGxpYnJhcnkuICBUaGlzIGFsbG93cyB0aGUg dXNlciB0byBoYW5kbGUKLS0gICAgICAgICAgICAgdGhlIGNhc2Ugd2hlbiB0aGUgQy1lbmdpbmUg ZXhoaWJpdHMgdW5kZWZpbmVkIGJlaGF2aW91cgotLSAgICAgICAgICAgICAoc2hvdWxkIG5ldmVy IGhhcHBlbiwgYW55d2F5KS4KLS0KLS0yMDAwLTA5LTI3OiAgVXBncmFkZWQgdG8gdGhlIG5ld2Vz dCByZWxlYXNlIG9mIHRoZSB1bmRlcmx5aW5nIEMtbGlicmFyeQotLSAgICAgICAgICAgICAoUENS RS0zLjQpLgotLQotLSAgICAgICAgICAgICBTZWUgInBjcmUtQy9DaGFuZ2VMb2ciIGZvciBtb3Jl IGluZm9ybWF0aW9uIChtb3N0bHkgbWlub3IKLS0gICAgICAgICAgICAgYnVnZml4ZXMpLgotLQot LSAgICAgICAgICAgICBSZW5hbWVkICJwZ3JlcCIgdG8gInBjcmVncmVwIiB0byBwcmV2ZW50IG5h bWUgaGlkaW5nIG9uCi0tICAgICAgICAgICAgIFNvbGFyaXMgKGNoYW5nZSBhcyBzdWdnZXN0ZWQg aW4gdGhlIEMtbGlicmFyeSBkaXN0cmlidXRpb24pLgotLQotLTIwMDAtMDYtMjQ6ICBVcGRhdGVk IE9jYW1sTWFrZWZpbGUKLS0KLS0yMDAwLTA2LTEzOiAgVXBkYXRlZCBPY2FtbE1ha2VmaWxlCi0t Ci0tMjAwMC0wNi0xMjogIE1pbmktb3B0aW1pc2F0aW9uOiBsaWZ0ZWQgYSBwdXJlIHZhbHVlIG91 dCBvZiBhIGZ1bmN0aW9uIGJvZHkuCi0tCi0tMjAwMC0wNi0xMTogIFVwZGF0ZWQgT2NhbWxNYWtl ZmlsZQotLQotLTIwMDAtMDYtMDg6ICBBZGRlZCBpbnN0YWxsYXRpb24gcm91dGluZSArIHVwZGF0 ZWQgT2NhbWxNYWtlZmlsZSBhZ2FpbjoKLS0KLS0gICAgICAgICAgICAgVGhpcyB1cGdyYWRlIG1h a2VzIGluc3RhbGxhdGlvbiBtdWNoIGVhc2llciEgUmVhZCB0aGUKLS0gICAgICAgICAgICAgdXBk YXRlZCBJTlNUQUxMLWZpbGUhCi0tCi0tMjAwMC0wNi0wNzogIFVwZGF0ZWQgdG8gbmV3IE9jYW1s TWFrZWZpbGUKLS0KLS0yMDAwLTA2LTA1OiAgQWRkZWQgYSBuZXcgZnVuY3Rpb246Ci0tCi0tICAg ICAgICAgICAgICAgZ2V0X3N1YnN0cmluZ19vZnMgc3Vic3RyaW5ncyBuCi0tCi0tICAgICAgICAg ICAgIFRoaXMgYWxsb3dzIHlvdSB0byBnZXQgdGhlIG9mZnNldCBwb3NpdGlvbnMgb2YgdGhlIG1h dGNoaW5nCi0tICAgICAgICAgICAgIHBhdHRlcm4gYW5kIHRoZSBzdWJzdHJpbmdzIGRpcmVjdGx5 IGZyb20gYSB2YWx1ZSBvZiB0eXBlCi0tICAgICAgICAgICAgICJzdWJzdHJpbmciLiBTZWUgdGhl IGludGVyZmFjZSBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgotLQotLTIwMDAtMDUtMTU6ICBV cGdyYWRlZCB0byB0aGUgbmV3ZXN0IHJlbGVhc2Ugb2YgdGhlIHVuZGVybHlpbmcgQy1saWJyYXJ5 Ci0tICAgICAgICAgICAgIChQQ1JFLTMuMikuCi0tCi0tICAgICAgICAgICAgIFRoaXMgZG9lcyBu b3QgYWRkIG5ldyBmZWF0dXJlcywgYnV0IGlzIHNhaWQgdG8gZml4IHNvbWUKLS0gICAgICAgICAg ICAgUEVSTC1jb21wYXRpYmlsaXR5IGJ1Z3MgYW5kIGltcHJvdmVzIHBvcnRhYmlsaXR5LgotLQot LTIwMDAtMDUtMDQ6ICBNaW5vciB1cGRhdGUgb2YgQy1pbnRlcmZhY2U6Ci0tCi0tICAgICAgICAg ICAgIFVzZSB0aGUgbmV3ICJoYXNoX3ZhcmlhbnQiLWZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlIGhh c2ggdmFsdWUgb2YKLS0gICAgICAgICAgICAgdmFyaWFudHMgKHVzZWQgQ2FsbGJhY2sucmVnaXN0 ZXIgYmVmb3JlIC0gYSBiaXQgY2x1bXN5KS4KLS0KLS0yMDAwLTA0LTI0OiAgTmV3IHJlbGVhc2U6 IGNvbXBpbGVzIHdpdGggT0NhbWwtMy4wMC4KLS0KLS0gICAgICAgICAgICAgTG90cyBvZiBjaGFu Z2VzIGluIGludGVyZmFjZSEgT0NhbWwtMy4wMCBpbnRyb2R1Y2VkIHNvbWUgc3ludGF4Ci0tICAg ICAgICAgICAgIGNoYW5nZXMgZm9yIGxhYmVscy4gQWRkaXRpb25hbGx5LCBubyBrZXl3b3JkcyBh cmUgYWxsb3dlZCBmb3IKLS0gICAgICAgICAgICAgdGhlbS4gIEFsbCB0aGlzIHJlcXVpcmVkIHF1 aXRlIHNvbWUgcmVuYW1pbmdzLiBJIHRyaWVkIHRvIHN0aWNrIHRvCi0tICAgICAgICAgICAgIHRo ZSBuZXcgbGFiZWxzIG9mIHRoZSAic3RyIi1saWJyYXJ5IGFzIGNsb3NlIGFzIG1ha2VzIHNlbnNl LgotLSAgICAgICAgICAgICBTb3JyeSBmb3IgdGhpcyBpbmNvbnZlbmllbmNlLCBidXQgSSB0aGlu ayB0aGF0IGFkaGVyaW5nIHRvIHNvbWUKLS0gICAgICAgICAgICAgInN0YW5kYXJkIiBpcyBhIEdv b2QgVGhpbmcuLi4KLS0KLS0gICAgICAgICAgICAgRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24g dGhlIGNoYW5nZXMsIGxvb2sgYXQgdGhlIGRvY3VtZW50YXRpb24KLS0gICAgICAgICAgICAgb2Yg dGhlIGludGVyZmFjZSBmaWxlLgotLQotLTIwMDAtMDQtMjM6ICBNaW5vciBjbGVhbnVwIG9mIEMt aW50ZXJmYWNlOgotLQotLSAgICAgICAgICAgICBNYWRlIGxvY2FsIGZ1bmN0aW9ucyArIHZhcmlh YmxlcyBzdGF0aWMgYW5kIG1vdmVkIGEgY2hlY2sgZm9yCi0tICAgICAgICAgICAgIGVycm9yIGNv ZGVzIChsaW50IHNob3VsZCBiZSBoYXBwaWVyIG5vdykuCi0tCi0tMjAwMC0wNC0wMTogIENoYW5n ZWQgbGlua2luZyBvZiB0aGUgbGlicmFyeSBhZ2FpbiAobWFyZ2luYWxseSk6Ci0tCi0tICAgICAg ICAgICAgIFRoZSBuZXcgbGlua2luZyBzZW1hbnRpY3MgZm9yIGJ5dGUgY29kZSBsaWJyYXJpZXMg YWxsb3dzIHBhc3NpbmcKLS0gICAgICAgICAgICAgb2YgZmxhZ3MgdGhhdCBhcmUgcmVtZW1iZXJl ZC4gVGhpcyB0aGVuIG9ubHkgcmVxdWlyZXMgbGlua2luZwotLSAgICAgICAgICAgICBleGVjdXRh YmxlcyBhZ2FpbnN0ICJwY3JlLmNtYSIgLSB0aGUgQy1saWJyYXJ5ICgibGlicGNyZS5hIikgd2ls bAotLSAgICAgICAgICAgICBiZSBsaW5rZWQgaW4gYXV0b21hdGljYWxseS4KLS0KLS0yMDAwLTAz LTMwOiAgQ2xlYW5lZCB1cCB0aGUgQy1pbnRlcmZhY2U6Ci0tCi0tICAgICAgICAgICAgIFJlbW92 ZWQgYSBwb3NzaWJsZSBidWcgaW4gdGhlIGFsbG9jYXRpb24gb2YgZmlyc3RjaGFyIHZhbHVlcy4K LS0KLS0gICAgICAgICAgICAgU2FuZXIgaGFuZGxpbmcgb2YgcG9seW1vcnBoaWMgdmFyaWFudHMg KG5vdCBoYXJkLXdpcmVkCi0tICAgICAgICAgICAgIGludGVnZXJzIGFueW1vcmUgLSByZWdpc3Rl cmVkIHZpYSBjYWxsYmFja3MpLgotLQotLSAgICAgICAgICAgICBCZXR0ZXIgR0Mtc2V0dGluZ3M6 IG11Y2ggbmljZXIgdG8gdGhlIEdDIG5vdyAoZmV3ZXIgZnVsbAotLSAgICAgICAgICAgICBjeWNs ZXMgLSBoYXJkbHkgbW9yZSBtZW1vcnkgY29uc3VtcHRpb24pLiBTaG91bGQgbWFrZQotLSAgICAg ICAgICAgICBwcm9ncmFtcyBydW4gc2xpZ2h0bHkgZmFzdGVyIHdoZW4gcmVndWxhciBleHByZXNz aW9ucyBhcmUKLS0gICAgICAgICAgICAgb2Z0ZW4gYWxsb2NhdGVkLgotLQotLSAgICAgICAgICAg ICBDaGFuZ2VkIGxpbmtpbmcgb2YgdGhlIGxpYnJhcnkgdG8gc3VpdCB0aGUgc2VtYW50aWNzIG9m Ci0tICAgICAgICAgICAgIHRoZSB1cGNvbWluZyBPQ2FtbC1tYWpvciByZWxlYXNlIChiYWNrd2Fy ZCBjb21wYXRpYmxlKS4KLS0KLS0yMDAwLTAyLTA3OiAgQ2hhbmdlZCBpbnRlcmZhY2Ugb2YgZnVu Y3Rpb24gImZvcmVhY2hfZmlsZSI6Ci0tCi0tICAgICAgICAgICAgIE5vIGlkZWEgd2h5IEkgaW1w bGVtZW50ZWQgYSB0dXBsZSBpbiB0aGUgaW50ZXJmYWNlIGluc3RlYWQgb2YgYQotLSAgICAgICAg ICAgICBjdXJyaWVkIGZ1bmN0aW9uLiBNdXN0IGhhdmUgYmVlbiB0aGUgZHJ1Z3MuLi4gOy0pCi0t Ci0tICAgICAgICAgICAgIEZvcm1lciBpbnRlcmZhY2U6Ci0tCi0tICAgICAgICAgICAgICAgdmFs IGZvcmVhY2hfZmlsZSA6Ci0tICAgICAgICAgICAgICAgICBzdHJpbmcgbGlzdCAtPiAoc3RyaW5n ICogaW5fY2hhbm5lbCAtPiB1bml0KSAtPiB1bml0Ci0tCi0tICAgICAgICAgICAgIEN1cnJlbnQg aW50ZXJmYWNlOgotLQotLSAgICAgICAgICAgICAgIHZhbCBmb3JlYWNoX2ZpbGUgOgotLSAgICAg ICAgICAgICAgICAgc3RyaW5nIGxpc3QgLT4gKHN0cmluZyAtPiBpbl9jaGFubmVsIC0+IHVuaXQp IC0+IHVuaXQKLS0KLS0gICAgICAgICAgICAgQWRkaXRpb25hbGx5LCB0aGlzIGZ1bmN0aW9uIG5v dyBhbHNvIGNsb3NlcyB0aGUgZmlsZSBjaGFubmVsCi0tICAgICAgICAgICAgIGluIGNhc2Ugb2Yg YW4gZXhjZXB0aW9uLiBUaGUgZXhjZXB0aW9uIGdldHMgcmVyYWlzZWQsCi0tICAgICAgICAgICAg IG9mIGNvdXJzZS4KLS0KLS0yMDAwLTAyLTA1OiAgRWxpbWluYXRlZCBhIFBFUkwtaW5jb21wYXRp YmlsaXR5IG9mIHRoZSAic3BsaXQiLWZ1bmN0aW9uOgotLQotLSAgICAgICAgICAgICBXaGVuIG5l aXRoZXIgdGhlIHBhdHRlcm4gbm9yIHRoZSBjb21waWxlZCByZWd1bGFyCi0tICAgICAgICAgICAg IGV4cHJlc3Npb24gYXJlIHNwZWNpZmllZCwgInNwbGl0IiBkZWZhdWx0cyB0byBhIHdoaXRlc3Bh Y2UKLS0gICAgICAgICAgICAgcGF0dGVybi4gSG93ZXZlciwgUEVSTCBhZGRpdGlvbmFsbHkgc3Ry aXBzIGxlYWRpbmcKLS0gICAgICAgICAgICAgd2hpdGVzcGFjZSwgYnV0ICpvbmx5KiB3aGVuIGlu ICJkZWZhdWx0IiBtb2RlLgotLQotLSAgICAgICAgICAgICBUaGlzIGxhc3QgImZlYXR1cmUiICg/ KSB3YXMgb3ZlcnNlZW4gZHVyaW5nIHRoZSBpbnRyb2R1Y3Rpb24KLS0gICAgICAgICAgICAgb2Yg bGFiZWxzIGFuZCBkZWZhdWx0IGFyZ3VtZW50cy4KLS0KLS0yMDAwLTAyLTA1OiAgVXBkYXRlZCB0 aGUgQy1saWJyYXJ5IHRvIHRoZSBuZXdlc3QgcmVsZWFzZSAocGNyZS0zLjApLgotLQotLSAgICAg ICAgICAgICBUaGlzIGlzIGEgbWFqb3IgcmVsZWFzZSwgYnV0IHRoZSBjaGFuZ2VzIHRvIHRoZSBP Q2FtbC1wYXJ0Ci0tICAgICAgICAgICAgIGFyZSByYXRoZXIgc21hbGw6IGp1c3QgdGhlIGZ1bmN0 aW9uYWxpdHkgY29uY2VybmluZwotLSAgICAgICAgICAgICBpbmZvcm1hdGlvbiBvbiBjb21waWxl ZCBwYXR0ZXJucyBoYXMgY2hhbmdlZC4KLS0KLS0gICAgICAgICAgICAgSW5zdGVhZCBvZiB0aGUg Zm9ybWVyICJpbmZvIi1mdW5jdGlvbiwgc2V2ZXJhbCBvbmVzIGFyZQotLSAgICAgICAgICAgICBw cm92aWRlZC4gSSB0aGluayB0aGlzIGlzIHRoZSBtb3N0IGNvbnZlbmllbnQgd2F5IHRvIGhhbmRs ZQotLSAgICAgICAgICAgICB0aGlzLCBiZWNhdXNlIGl0IGRvZXMgbm90IGZvcmNlIHRoZSB1c2Vy IHRvIGRvIGV4cGxpY2l0Ci0tICAgICAgICAgICAgIHBhdHRlcm4gbWF0Y2hpbmcgb24gcmVzdWx0 czogZHVlIHRvIHRoZSBudW1iZXIgb2YgbmV3Ci0tICAgICAgICAgICAgIGluZm8tb3B0aW9ucyB0 aGlzIHdvdWxkIGhhdmUgYmVlbiByYXRoZXIgY29uZnVzaW5nLgotLQotLSAgICAgICAgICAgICBC ZWNhdXNlIHRoZSBvbGQgUENSRS1mdW5jdGlvbiAicGNyZV9pbmZvIiBpcyBvYnNvbGV0ZSwKLS0g ICAgICAgICAgICAgSSBjaG9zZSB0byBkcm9wIGl0cyBPQ2FtbC1pbnRlcmZhY2UgY29tcGxldGVs eS4gSSBkbyBub3QKLS0gICAgICAgICAgICAgdGhpbmsgdGhhdCBpdCBpcyBhbiBvZnRlbiB1c2Vk IHBhcnQsIGFueXdheS4KLS0KLS0gICAgICAgICAgICAgU2VlIHRoZSBpbnRlcmZhY2UgZmlsZSBh bmQgdGhlIENoYW5nZUxvZyArIGRvY3VtZW50YXRpb24KLS0gICAgICAgICAgICAgb2YgdGhlIEMt bGlicmFyeSB0byBzZWUsIHdoYXQgaGFzIGNoYW5nZWQgaW4gZGV0YWlsLgotLQotLSAgICAgICAg ICAgICBUaGUgb3RoZXIgZmV3IGNoYW5nZXMganVzdCBtYXJnaW5hbGx5IGVmZmVjdCBlZmZpY2ll bmN5LiBPbmUKLS0gICAgICAgICAgICAgYnVnIHdhcyBwcmVzZW50IGluIHRoZSBsYXN0IHJlbGVh c2UgaW4gdGhlICJpbmZvIi1wYXJ0Ci0tICAgICAgICAgICAgIChwb2x5bW9ycGhpYyB2YXJpYW50 cyB3ZXJlIG5vdCBjb3JyZWN0bHkgcmVwcmVzZW50ZWQpLgotLSAgICAgICAgICAgICBUaGlzIGhh cyBjaGFuZ2VkIGFueXdheSBhbmQgc2hvdWxkIHdvcmsgZmluZSBub3cuCi0tCi0tMjAwMC0wMS0x MDogICJmb3JlYWNoX2xpbmUiIHVzZXMgc3RkaW4gYXMgbGFiZWxlZCAobGFiZWw6ICdpbicpIGRl ZmF1bHQKLS0gICAgICAgICAgICAgYXJndW1lbnQgbm93LgotLQotLTE5OTktMTItMjk6ICBMb3Rz IG9mIGNoYW5nZXM6Ci0tCi0tICAgICAgICAgICAgICogVXNlcyB0aGUgbmV3IGZlYXR1cmVzIG9m IE9DYW1sIDIuOTk6Ci0tCi0tICAgICAgICAgICAgICAgTGFiZWxlZCBwYXJhbWV0ZXJzIGFuZCBk ZWZhdWx0IGFyZ3VtZW50cyBmb3IgbXVjaCBtb3JlCi0tICAgICAgICAgICAgICAgY29udmVuaWVu Y2UuIEUuZy4gd3JpdGUKLS0KLS0gICAgICAgICAgICAgICAgIHNwbGl0IHBvczoxICJmb28gYmFy IgotLQotLSAgICAgICAgICAgICAgIHRvIGdldCB0aGUgbGlzdCBbIm9vIjsgImJhciJdLgotLQot LSAgICAgICAgICAgICAgIFBvbHltb3JwaGljIHZhcmlhbnRzIGZvciBwYXNzaW5nIG9wdGlvbnM6 IHRoaXMgY2hhbmdlIGFsbG93cywKLS0gICAgICAgICAgICAgICBmb3IgZXhhbXBsZSwgdXNpbmcg dGhlIGRhdGEgY29uc3RydWN0b3IgIkFOQ0hPUkVEIiBmb3IgYm90aAotLSAgICAgICAgICAgICAg IGNvbXBpbGluZyBmbGFncyBhbmQgYXQgbWF0Y2hpbmcgdGltZSBpbnN0ZWFkIG9mICJDX0FOQ0hP UkVEIgotLSAgICAgICAgICAgICAgIGFuZCAiUl9BTkNIT1JFRCIuCi0tCi0tICAgICAgICAgICAg ICogR290IHJpZCBvZiBhbGwgdGhlIHN1cGVyZmx1b3VzIHNob3J0Y3V0cywgbGlrZSAiYm91bmRl ZF9wc3BsaXQiCi0tICAgICAgICAgICAgICAgYW5kIHRoZSBsaWtlLiBMYWJlbGVkIHBhcmFtZXRl cnMgYXJlIG11Y2ggbW9yZSByZWFkYWJsZSBhbmQKLS0gICAgICAgICAgICAgICBjb252ZW5pZW50 LgotLQotLSAgICAgICAgICAgICAqIFJlbW92ZWQgdGhlIGZ1bmN0aW9ucyBjb21wYXRpYmxlIHRv IHRoZSAiU3RyIi1tb2R1bGUuIEl0J3MKLS0gICAgICAgICAgICAgICBwcm9iYWJseSByYXRoZXIg Y29uZnVzaW5nIGZvciBwZW9wbGUgdG8gc2VlIHR3byBkaWZmZXJlbnQga2luZHMKLS0gICAgICAg ICAgICAgICBvZiBpbXBsZW1lbnRhdGlvbnMuCi0tCi0tICAgICAgICAgICAgICogUmVuYW1lZCBm dW5jdGlvbnMgZHVlIHRvIHRoZSB1c2Ugb2YgbGFiZWxzIGFuZCB0aGUgcmVtb3Zpbmcgb2YKLS0g ICAgICAgICAgICAgICB0aGUgb2Jzb2xldGUgY29tcGF0aWJpbGl0eSBmdW5jdGlvbnMuCi0tCi0t ICAgICAgICAgICAgICogVXBkYXRlZCBkb2N1bWVudGF0aW9uIHdpdGggbW9yZSBkZXRhaWxzIG9u IHVzaW5nIHRoZSBsaWJyYXJ5LgotLQotLTE5OTktMTItMjE6ICBTbWFsbCBjaGFuZ2UgKDIgY2hh cnMuLi4pIHRvIG1ha2UgdGhlIEMtaW50ZXJmYWNlIGNvbXBpbGUgd2l0aAotLSAgICAgICAgICAg ICB0aGUgbmV3ZXN0IHJlbGVhc2UgKE9DYW1sIDIuOTkpLgotLQotLTE5OTktMDktMjc6ICBGaXhl ZCBhIGJ1ZyB3aGljaCBvY2N1cnMsIHdoZW4gcmVwbGFjZW1lbnRzIG9yIHN1YnN0aXR1dGlvbnMK LS0gICAgICAgICAgICAgaW4gc3RyaW5ncyBhcmUgbG9uZ2VyIHRoYW4gdGhlIHN1YmplY3Qgc3Ry aW5nIGl0c2VsZi4KLS0gICAgICAgICAgICAgVGhpcyBjb25jZXJucyBmdW5jdGlvbnMgInJlcGxh Y2VfYWxsIiwgInFyZXBsYWNlX2FsbCIgYW5kCi0tICAgICAgICAgICAgICJzdWJzdGl0dXRlX2Fs bCIgKyB0aGVpciB2YXJpYW50cy4KLS0KLS0gICAgICAgICAgICAgVEhBTktTIHRvIEdFUkQgU1RP TFBNQU5OIChHZXJkLlN0b2xwbWFubkBkYXJtc3RhZHQubmV0c3VyZi5kZSkKLS0gICAgICAgICAg ICAgZm9yIGZpbmRpbmcgYW5vdGhlciBidWchCi0tCi0tMTk5OS0wOS0yMTogIEZpeGVkIHNvbWUg YnVncyBpbiAicGNyZV9pbnRmLmMiOgotLQotLSAgICAgICAgICAgICAiU3RvcmVfZmllbGQiIHdh cyB1c2VkIGluYXBwcm9wcmlhdGVseSB0aHJvdWdob3V0IHRoZSBmaWxlLAotLSAgICAgICAgICAg ICB3aGljaCBjb3VsZCBsZWFkIHRvIHNlZ2ZhdWx0cyBpbiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3Iu IFRoaXMKLS0gICAgICAgICAgICAgd2FzIGNvcnJlY3RlZCBieSB1c2luZyB0aGUgIkZpZWxkIi1t YWNybyB3aGVyZSBhcHByb3ByaWF0ZS4KLS0KLS0gICAgICAgICAgICAgUHJvdGVjdGVkIGFuIGlu cHV0IHBhcmFtZXRlciBmcm9tIGJlaW5nIHJlY2xhaW1lZCB0b28gZWFybHkuCi0tCi0tICAgICAg ICAgICAgIEluaXRpYWxpemVkIGEgZmllbGQgYmVmb3JlIHRocm93aW5nIGFuIGV4Y2VwdGlvbiB0 byBwbGVhc2UKLS0gICAgICAgICAgICAgdGhlIEdDLgotLQotLSAgICAgICAgICAgICBUaGUgR0Mg c2hvdWxkIGJlIGhhcHB5IG5vdy4uLgotLQotLSAgICAgICAgICAgICBUSEFOS1MgdG8gR0VSRCBT VE9MUE1BTk4gKEdlcmQuU3RvbHBtYW5uQGRhcm1zdGFkdC5uZXRzdXJmLmRlKQotLSAgICAgICAg ICAgICBmb3IgdGhlIHBhdGNoIQotLQotLTE5OTktMDgtMzE6ICBVcGRhdGVkIHRvIHBjcmUtMi4w OCAtIHRoaXMgc2hvdWxkIGZpeCBzb21lIGJ1Z3MuIFNlZQotLSAgICAgICAgICAgICAicGNyZS1D L0NoYW5nZUxvZyIgZm9yIGRldGFpbHMuCi0tCi0tICAgICAgICAgICAgIFJlbmFtZWQgZGlyZWN0 b3J5ICJwY3JlLUMtMi4wNyIgdG8gInBjcmUtQyIgdG8gYWxsb3cgZm9yCi0tICAgICAgICAgICAg IGVhc2llciB1cGdyYWRpbmcuCi0tCi0tICAgICAgICAgICAgIEFkZGVkIENWUy1pbmZvIHRvIHNv dXJjZXMuCi0tCi0tMTk5OS0wOC0yNDogIFVwZGF0ZWQgdG8gcGNyZS0yLjA3LiBTcGxpdHRpbmcg aXMgMTAwJSBQRVJMLWNvbXBhdGlibGUgbm93LgotLSAgICAgICAgICAgICBOZXcgcnVudGltZSBv cHRpb246IE5PVEVNUFRZIChzZWUgaW50ZXJmYWNlIGZvciBkZXRhaWxzKS4KLS0KLS0gICAgICAg ICAgICAgVHdvIGFkZGl0aW9uYWwgZXhhbXBsZXM6IGNsb2MgYW5kIGNvdW50X2hhc2guCi0tCi0t ICAgICAgICAgICAgIE5ldyBmdW5jdGlvbnM6IHNyZWdleHBvLCBzcmVnZXhwLCBzcmVnZXhwX2Nh c2VfZm9sZC4KLS0KLS0xOTk5LTA4LTAyOiAgRXhjZXB0aW9uIGhhbmRsaW5nIG1vcmUgcmVndWxh ciBub3c6Ci0tCi0tICAgICAgICAgICAgIFJhaXNlcyBbSW52YWxpZF9hcmd1bWVudF0gaW5zdGVh ZCBvZiBbRmFpbHVyZV0gd2hlcmUKLS0gICAgICAgICAgICAgYXBwcm9wcmlhdGUuCi0tICAgICAg ICAgICAgIFJhaXNlcyBbSW50ZXJuYWxFcnJvcl0gaWYgQy1saWJyYXJ5IGV4aGliaXRzIHVuZGVm aW5lZAotLSAgICAgICAgICAgICBiZWhhdmlvdXIgKGhhcyBuZXZlciBoYXBwZW5lZCBzbyBmYXIp LgotLQotLSAgICAgICAgICAgICBVcGRhdGVkIGNvbW1lbnRzLgotLQotLTE5OTktMDctMzA6ICBC dWdmaXggaW4gInBjcmVfaW50Zi5jIjoKLS0KLS0gICAgICAgICAgICAgInBjcmVfb2NhbWwiIHNo b3VsZCB3b3JrIG5vdyBvbiA2NC1iaXQgYXJjaGl0ZWN0dXJlcy4uLgotLQotLTE5OTktMDctMjk6 ICBTbWFsbCBmaXggaW4gInBjcmVfaW50Zi5jIjoKLS0KLS0gICAgICAgICAgICAgc3RyaWN0IGNv bXBpbGVycyAoZ2NjIGlzIG5vdCB2ZXJ5IHN0cmljdCkgb3RoZXJ3aXNlIGNvbXBsYWluCi0tICAg ICAgICAgICAgIGFib3V0IHVuZGVmaW5lZCBiZWhhdmlvdXIgaW4gYSBjZXJ0YWluIGxpbmUuCi0t Ci0tICAgICAgICAgICAgIEV4cGxpY2l0ZWx5IG1lbnRpb24gYWxsIGluY2x1ZGUgZmlsZXMuCi0t ICAgICAgICAgICAgIFJlbW92ZWQgdW51c2VkIHZhcmlhYmxlLgotLQotLSAgICAgICAgICAgICBB bHNvIG1vdmVkIGEgbGluZSBmb3IgZWZmaWNpZW5jeS4uLgotLQotLTE5OTktMDctMjg6ICBGaXJz dCByZWxlYXNlLgotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy8uZ2l0 aWdub3JlIGIvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjLy5naXRpZ25vcmUKLWRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggN2RhN2NiMmQwLi4wMDAwMDAwMDAKLS0tLSBhL2J1bmRs ZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy8uZ2l0aWdub3JlCi0rKysgL2Rldi9udWxsCi1AQCAtMSAr MCwwIEBACi0tcGNyZV9zdHVicy5jCi1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLWRpZmYg LS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvTWFrZWZpbGUgYi9idW5kbGVzL3Bj cmUvcGNyZS1vY2FtbC9zcmMvTWFrZWZpbGUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5k ZXggNzI0NjUzNjE1Li4wMDAwMDAwMDAKLS0tLSBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3Ny Yy9NYWtlZmlsZQotKysrIC9kZXYvbnVsbAotQEAgLTEsOSArMCwwIEBACi0tVEFSR0VUUyA9IHBj cmUuY21hIGxpYnBjcmVfc3R1YnMuYQotLQotLS5QSE9OWTogYWxsIGNsZWFuCi0tCi0tYWxsOgot LQlAZHVuZSBidWlsZCAkKFRBUkdFVFMpCi0tCi0tY2xlYW46Ci0tCUBkdW5lIGNsZWFuCi1kaWZm IC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL2NvbmZpZy9kaXNjb3Zlci5tbCBi L2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9jb25maWcvZGlzY292ZXIubWwKLWRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDFmYmZhYjBhLi4wMDAwMDAwMDAKLS0tLSBhL2J1bmRs ZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9jb25maWcvZGlzY292ZXIubWwKLSsrKyAvZGV2L251bGwK LUBAIC0xLDE1ICswLDAgQEAKLS1vcGVuIEJhc2UKLS0KLS1sZXQgKCkgPQotLSAgbGV0IG1vZHVs ZSBDID0gQ29uZmlndXJhdG9yLlYxIGluCi0tICBDLm1haW4gfm5hbWU6InBjcmUiIChmdW4gYyAt PgotLSAgICBsZXQgZGVmYXVsdCA6IEMuUGtnX2NvbmZpZy5wYWNrYWdlX2NvbmYgPSB7Ci0tICAg ICAgbGlicyA9IFsiLWxwY3JlIl07Ci0tICAgICAgY2ZsYWdzID0gW10KLS0gICAgfSBpbgotLSAg ICBsZXQgY29uZiA9Ci0tICAgICAgT3B0aW9uLnZhbHVlX21hcCAoQy5Qa2dfY29uZmlnLmdldCBj KSB+ZGVmYXVsdCB+ZjooZnVuIHBjIC0+Ci0tICAgICAgICBPcHRpb24udmFsdWUgKEMuUGtnX2Nv bmZpZy5xdWVyeSBwYyB+cGFja2FnZToibGlicGNyZSIpIH5kZWZhdWx0KQotLSAgICBpbgotLSAg ICBDLkZsYWdzLndyaXRlX3NleHAgImNfZmxhZ3Muc2V4cCIgY29uZi5jZmxhZ3M7Ci0tICAgIEMu RmxhZ3Mud3JpdGVfc2V4cCAiY19saWJyYXJ5X2ZsYWdzLnNleHAiIGNvbmYubGlicykKLWRpZmYg LS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9zcmMvY29uZmlnL2R1bmUgYi9idW5kbGVz L3BjcmUvcGNyZS1vY2FtbC9zcmMvY29uZmlnL2R1bmUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggZGJlYThmZjkxLi4wMDAwMDAwMDAKLS0tLSBhL2J1bmRsZXMvcGNyZS9wY3JlLW9j YW1sL3NyYy9jb25maWcvZHVuZQotKysrIC9kZXYvbnVsbAotQEAgLTEsNCArMCwwIEBACi0tKGV4 ZWN1dGFibGVzCi0tICAobmFtZXMgZGlzY292ZXIpCi0tICAobGlicmFyaWVzIGJhc2UgZHVuZS5j b25maWd1cmF0b3IpCi0tKQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3Ny Yy9kdW5lIGIvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL2R1bmUKLWRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggYTBiZDYzNmQ3Li4wMDAwMDAwMDAKLS0tLSBhL2J1bmRsZXMvcGNy ZS9wY3JlLW9jYW1sL3NyYy9kdW5lCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxNiArMCwwIEBACi0t KGxpYnJhcnkKLS0gIChwdWJsaWNfbmFtZSBwY3JlKQotLSAgKGNfbmFtZXMgcGNyZV9zdHVicykK LS0gIChjX2ZsYWdzICgKLS0gICAgKDppbmNsdWRlIGNfZmxhZ3Muc2V4cCkgLWcgLU8yIC1mUElD IC1EUElDCi0tICAgIDsgTk9URTogZm9yIGRlYnVnZ2luZyBiZWZvcmUgcmVsZWFzZXMKLS0gICAg OyAtV2FsbCAtcGVkYW50aWMgLVdleHRyYSAtV3VudXNlZCAtV25vLWxvbmctbG9uZyAtV25vLWtl eXdvcmQtbWFjcm8KLS0gICkpCi0tICAoY19saWJyYXJ5X2ZsYWdzICg6aW5jbHVkZSBjX2xpYnJh cnlfZmxhZ3Muc2V4cCkpCi0tKQotLQotLShydWxlCi0tICAodGFyZ2V0cyBjX2ZsYWdzLnNleHAg Y19saWJyYXJ5X2ZsYWdzLnNleHApCi0tICAoZGVwcyAoOmRpc2NvdmVyIGNvbmZpZy9kaXNjb3Zl ci5leGUpKQotLSAgKGFjdGlvbiAocnVuICV7ZGlzY292ZXJ9KSkKLS0pCi1kaWZmIC0tZ2l0IGEv YnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL3BjcmUubWwuaW4gYi9idW5kbGVzL3BjcmUvcGNy ZS1vY2FtbC9zcmMvcGNyZS5tbC5pbgotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA1 NzM0NjBlNGUuLjAwMDAwMDAwMAotLS0tIGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL3Bj cmUubWwuaW4KLSsrKyAvZGV2L251bGwKLUBAIC0xLDEwNTUgKzAsMCBAQAotLSgqCi0tICAgUENS RS1PQ0FNTCAtIFBlcmwgQ29tcGF0aWJpbGl0eSBSZWd1bGFyIEV4cHJlc3Npb25zIGZvciBPQ2Ft bAotLQotLSAgIENvcHlyaWdodCAoQykgMTk5OS0gIE1hcmt1cyBNb3R0bAotLSAgIGVtYWlsOiBt YXJrdXMubW90dGxAZ21haWwuY29tCi0tICAgV1dXOiAgIGh0dHA6Ly93d3cub2NhbWwuaW5mbwot LQotLSAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IKLS0gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCi0tICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0tICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vu c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tCi0tICAgVGhpcyBs aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0tICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotLSAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotLSAgIExpY2Vuc2UgYWxvbmcg d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0g ICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0 b24sIE1BICAwMjExMC0xMzAxICBVU0EKLS0qKQotLQotLW9wZW4gU3RkY29tcGF0Ci0tCi0tKCog UHVibGljIGV4Y2VwdGlvbnMgYW5kIHRoZWlyIHJlZ2lzdHJhdGlvbiB3aXRoIHRoZSBDIHJ1bnRp bWUgKikKLS0KLS10eXBlIGVycm9yID0KLS0gIHwgUGFydGlhbAotLSAgfCBCYWRQYXJ0aWFsCi0t ICB8IEJhZFBhdHRlcm4gb2Ygc3RyaW5nICogaW50Ci0tICB8IEJhZFVURjgKLS0gIHwgQmFkVVRG OE9mZnNldAotLSAgfCBNYXRjaExpbWl0Ci0tICB8IFJlY3Vyc2lvbkxpbWl0Ci0tICB8IEludGVy bmFsRXJyb3Igb2Ygc3RyaW5nCi0tCi0tZXhjZXB0aW9uIEVycm9yIG9mIGVycm9yCi0tZXhjZXB0 aW9uIEJhY2t0cmFjawotLWV4Y2VwdGlvbiBSZWdleHBfb3Igb2Ygc3RyaW5nICogZXJyb3IKLS0K LS0oKiBQdXRzIGV4Y2VwdGlvbnMgaW50byBnbG9iYWwgQy12YXJpYWJsZXMgZm9yIGZhc3QgcmV0 cmlldmFsICopCi0tZXh0ZXJuYWwgcGNyZV9vY2FtbF9pbml0IDogdW5pdCAtPiB1bml0ID0gInBj cmVfb2NhbWxfaW5pdCIKLS0KLS0oKiBSZWdpc3RlcnMgZXhjZXB0aW9ucyB3aXRoIHRoZSBDIHJ1 bnRpbWUgYW5kIGNhY2hlcyBwb2x5bW9ycGhpYyB2YXJpYW50cyAqKQotLWxldCAoKSA9Ci0tICBD YWxsYmFjay5yZWdpc3Rlcl9leGNlcHRpb24gIlBjcmUuRXJyb3IiIChFcnJvciAoSW50ZXJuYWxF cnJvciAiIikpOwotLSAgQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uICJQY3JlLkJhY2t0cmFj ayIgQmFja3RyYWNrOwotLSAgcGNyZV9vY2FtbF9pbml0ICgpCi0tCi0tCi0tKCogQ29tcGlsYXRp b24gYW5kIHJ1bnRpbWUgZmxhZ3MgYW5kIHRoZWlyIGNvbnZlcnNpb24gZnVuY3Rpb25zICopCi0t Ci0tdHlwZSBpY2ZsYWcgPSBpbnQKLS10eXBlIGlyZmxhZyA9IGludAotLQotLSgqIENvbXBpbGF0 aW9uIGZsYWdzICopCi0tCi0tdHlwZSBjZmxhZyA9Ci0tICBbCi0tICB8IGBDQVNFTEVTUwotLSAg fCBgTVVMVElMSU5FCi0tICB8IGBET1RBTEwKLS0gIHwgYEVYVEVOREVECi0tICB8IGBBTkNIT1JF RAotLSAgfCBgRE9MTEFSX0VORE9OTFkKLS0gIHwgYEVYVFJBCi0tICB8IGBVTkdSRUVEWQotLSAg fCBgVVRGOAotLSAgfCBgTk9fVVRGOF9DSEVDSwotLSAgfCBgTk9fQVVUT19DQVBUVVJFCi0tICB8 IGBBVVRPX0NBTExPVVQKLS0gIHwgYEZJUlNUTElORQotLSAgXQotLQotLWxldCBpbnRfb2ZfY2Zs YWcgPSBmdW5jdGlvbgotLSAgfCBgQ0FTRUxFU1MgLT4gMHgwMDAxCi0tICB8IGBNVUxUSUxJTkUg LT4gMHgwMDAyCi0tICB8IGBET1RBTEwgLT4gMHgwMDA0Ci0tICB8IGBFWFRFTkRFRCAtPiAweDAw MDgKLS0gIHwgYEFOQ0hPUkVEIC0+IDB4MDAxMAotLSAgfCBgRE9MTEFSX0VORE9OTFkgLT4gMHgw MDIwCi0tICB8IGBFWFRSQSAtPiAweDAwNDAKLS0gIHwgYFVOR1JFRURZIC0+IDB4MDIwMAotLSAg fCBgVVRGOCAtPiAweDA4MDAKLS0gIHwgYE5PX0FVVE9fQ0FQVFVSRSAtPiAweDEwMDAKLS0gIHwg YE5PX1VURjhfQ0hFQ0sgLT4gMHgyMDAwCi0tICB8IGBBVVRPX0NBTExPVVQgLT4gMHg0MDAwCi0t ICB8IGBGSVJTVExJTkUgLT4gMHg0MDAwMAotLQotLWxldCBjb2xsX2ljZmxhZyBpY2ZsYWcgZmxh ZyA9IGludF9vZl9jZmxhZyBmbGFnIGxvciBpY2ZsYWcKLS1sZXQgY2ZsYWdzIGZsYWdzID0gTGlz dC5mb2xkX2xlZnQgY29sbF9pY2ZsYWcgMCBmbGFncwotLQotLWxldCBjZmxhZ19vZl9pbnQgPSBm dW5jdGlvbgotLSAgfCAweDAwMDEgLT4gYENBU0VMRVNTCi0tICB8IDB4MDAwMiAtPiBgTVVMVElM SU5FCi0tICB8IDB4MDAwNCAtPiBgRE9UQUxMCi0tICB8IDB4MDAwOCAtPiBgRVhURU5ERUQKLS0g IHwgMHgwMDEwIC0+IGBBTkNIT1JFRAotLSAgfCAweDAwMjAgLT4gYERPTExBUl9FTkRPTkxZCi0t ICB8IDB4MDA0MCAtPiBgRVhUUkEKLS0gIHwgMHgwMjAwIC0+IGBVTkdSRUVEWQotLSAgfCAweDA4 MDAgLT4gYFVURjgKLS0gIHwgMHgxMDAwIC0+IGBOT19BVVRPX0NBUFRVUkUKLS0gIHwgMHgyMDAw IC0+IGBOT19VVEY4X0NIRUNLCi0tICB8IDB4NDAwMCAtPiBgQVVUT19DQUxMT1VUCi0tICB8IDB4 NDAwMDAgLT4gYEZJUlNUTElORQotLSAgfCBfIC0+IGZhaWx3aXRoICJQY3JlLmNmbGFnX2xpc3Q6 IHVua25vd24gY29tcGlsYXRpb24gZmxhZyIKLS0KLS1sZXQgYWxsX2NmbGFncyA9Ci0tICBbCi0t ICAgIDB4MDAwMTsgMHgwMDAyOyAweDAwMDQ7IDB4MDAwODsgMHgwMDEwOyAweDAwMjA7Ci0tICAg IDB4MDA0MDsgMHgwMjAwOyAweDA4MDA7IDB4MTAwMDsgMHgyMDAwOyAweDQwMDA7IDB4NDAwMDA7 Ci0tICBdCi0tCi0tbGV0IGNmbGFnX2xpc3QgaWNmbGFncyA9Ci0tICBsZXQgY29sbCBmbGFnX2xp c3QgZmxhZyA9Ci0tICAgIGlmIGljZmxhZ3MgbGFuZCBmbGFnIDw+IDAgdGhlbiBjZmxhZ19vZl9p bnQgZmxhZyA6OiBmbGFnX2xpc3QKLS0gICAgZWxzZSBmbGFnX2xpc3QgaW4KLS0gIExpc3QuZm9s ZF9sZWZ0IGNvbGwgW10gYWxsX2NmbGFncwotLQotLQotLSgqIFJ1bnRpbWUgZmxhZ3MgKikKLS0K LS10eXBlIHJmbGFnID0KLS0gIFsKLS0gIHwgYEFOQ0hPUkVECi0tICB8IGBOT1RCT0wKLS0gIHwg YE5PVEVPTAotLSAgfCBgTk9URU1QVFkKLS0gIHwgYFBBUlRJQUwKLS0gIF0KLS0KLS1sZXQgaW50 X29mX3JmbGFnID0gZnVuY3Rpb24KLS0gIHwgYEFOQ0hPUkVEIC0+IDB4MDAxMAotLSAgfCBgTk9U Qk9MIC0+IDB4MDA4MAotLSAgfCBgTk9URU9MIC0+IDB4MDEwMAotLSAgfCBgTk9URU1QVFkgLT4g MHgwNDAwCi0tICB8IGBQQVJUSUFMIC0+IDB4ODAwMAotLQotLWxldCBjb2xsX2lyZmxhZyBpcmZs YWcgZmxhZyA9IGludF9vZl9yZmxhZyBmbGFnIGxvciBpcmZsYWcKLS1sZXQgcmZsYWdzIGZsYWdz ID0gTGlzdC5mb2xkX2xlZnQgY29sbF9pcmZsYWcgMCBmbGFncwotLQotLWxldCByZmxhZ19vZl9p bnQgPSBmdW5jdGlvbgotLSAgfCAweDAwMTAgLT4gYEFOQ0hPUkVECi0tICB8IDB4MDA4MCAtPiBg Tk9UQk9MCi0tICB8IDB4MDEwMCAtPiBgTk9URU9MCi0tICB8IDB4MDQwMCAtPiBgTk9URU1QVFkK LS0gIHwgMHg4MDAwIC0+IGBQQVJUSUFMCi0tICB8IF8gLT4gZmFpbHdpdGggIlBjcmUucmZsYWdf bGlzdDogdW5rbm93biBydW50aW1lIGZsYWciCi0tCi0tbGV0IGFsbF9yZmxhZ3MgPSBbMHgwMDEw OyAweDAwODA7IDB4MDEwMDsgMHgwNDAwOyAweDgwMDBdCi0tCi0tbGV0IHJmbGFnX2xpc3QgaXJm bGFncyA9Ci0tICBsZXQgY29sbCBmbGFnX2xpc3QgZmxhZyA9Ci0tICAgIGlmIGlyZmxhZ3MgbGFu ZCBmbGFnIDw+IDAgdGhlbiByZmxhZ19vZl9pbnQgZmxhZyA6OiBmbGFnX2xpc3QKLS0gICAgZWxz ZSBmbGFnX2xpc3QgaW4KLS0gIExpc3QuZm9sZF9sZWZ0IGNvbGwgW10gYWxsX3JmbGFncwotLQot LQotLSgqIEluZm9ybWF0aW9uIG9uIHRoZSBQQ1JFLWNvbmZpZ3VyYXRpb24gKGJ1aWxkLXRpbWUg b3B0aW9ucykgKikKLS0KLS1leHRlcm5hbCBwY3JlX3ZlcnNpb24gOiB1bml0IC0+IHN0cmluZyA9 ICJwY3JlX3ZlcnNpb25fc3R1YiIKLS0KLS1leHRlcm5hbCBwY3JlX2NvbmZpZ191dGY4IDogdW5p dCAtPiBib29sID0gInBjcmVfY29uZmlnX3V0Zjhfc3R1YiIgQG5vYWxsb2NACi0tCi0tZXh0ZXJu YWwgcGNyZV9jb25maWdfbmV3bGluZSA6Ci0tICB1bml0IC0+IGNoYXIgPSAicGNyZV9jb25maWdf bmV3bGluZV9zdHViIiBAbm9hbGxvY0AKLS0KLS1leHRlcm5hbCBwY3JlX2NvbmZpZ19saW5rX3Np emUgOiB1bml0IC0+IChpbnQgQHVudGFnZ2VkQCkKLS0gID0gInBjcmVfY29uZmlnX2xpbmtfc2l6 ZV9zdHViX2JjIiAicGNyZV9jb25maWdfbGlua19zaXplX3N0dWIiIEBub2FsbG9jQAotLQotLWV4 dGVybmFsIHBjcmVfY29uZmlnX21hdGNoX2xpbWl0IDoKLS0gIHVuaXQgLT4gKGludCBAdW50YWdn ZWRAKQotLSAgPSAicGNyZV9jb25maWdfbWF0Y2hfbGltaXRfc3R1Yl9iYyIgInBjcmVfY29uZmln X21hdGNoX2xpbWl0X3N0dWIiIEBub2FsbG9jQAotLQotLWV4dGVybmFsIHBjcmVfY29uZmlnX21h dGNoX2xpbWl0X3JlY3Vyc2lvbiA6IHVuaXQgLT4gKGludCBAdW50YWdnZWRAKQotLSAgPQotLSAg InBjcmVfY29uZmlnX21hdGNoX2xpbWl0X3JlY3Vyc2lvbl9zdHViX2JjIgotLSAgInBjcmVfY29u ZmlnX21hdGNoX2xpbWl0X3JlY3Vyc2lvbl9zdHViIgotLSAgQG5vYWxsb2NACi0tCi0tZXh0ZXJu YWwgcGNyZV9jb25maWdfc3RhY2tyZWN1cnNlIDoKLS0gIHVuaXQgLT4gYm9vbCA9ICJwY3JlX2Nv bmZpZ19zdGFja3JlY3Vyc2Vfc3R1YiIgQG5vYWxsb2NACi0tCi0tbGV0IHZlcnNpb24gPSBwY3Jl X3ZlcnNpb24gKCkKLS1sZXQgY29uZmlnX3V0ZjggPSBwY3JlX2NvbmZpZ191dGY4ICgpCi0tbGV0 IGNvbmZpZ19uZXdsaW5lID0gcGNyZV9jb25maWdfbmV3bGluZSAoKQotLWxldCBjb25maWdfbGlu a19zaXplID0gcGNyZV9jb25maWdfbGlua19zaXplICgpCi0tbGV0IGNvbmZpZ19tYXRjaF9saW1p dCA9IHBjcmVfY29uZmlnX21hdGNoX2xpbWl0ICgpCi0tbGV0IGNvbmZpZ19tYXRjaF9saW1pdF9y ZWN1cnNpb24gPSBwY3JlX2NvbmZpZ19tYXRjaF9saW1pdF9yZWN1cnNpb24gKCkKLS1sZXQgY29u ZmlnX3N0YWNrcmVjdXJzZSA9IHBjcmVfY29uZmlnX3N0YWNrcmVjdXJzZSAoKQotLQotLQotLSgq IEluZm9ybWF0aW9uIG9uIHBhdHRlcm5zICopCi0tCi0tdHlwZSBmaXJzdGJ5dGVfaW5mbyA9Ci0t ICBbIGBDaGFyIG9mIGNoYXIKLS0gIHwgYFN0YXJ0X29ubHkKLS0gIHwgYEFOQ0hPUkVEIF0KLS0K LS10eXBlIHN0dWR5X3N0YXQgPQotLSAgWyBgTm90X3N0dWRpZWQKLS0gIHwgYFN0dWRpZWQKLS0g IHwgYE9wdGltYWwgXQotLQotLXR5cGUgcmVnZXhwCi0tCi0tZXh0ZXJuYWwgb3B0aW9ucyA6IHJl Z2V4cCAtPiAoaWNmbGFnIEB1bnRhZ2dlZEApCi0tICA9ICJwY3JlX29wdGlvbnNfc3R1Yl9iYyIg InBjcmVfb3B0aW9uc19zdHViIgotLQotLWV4dGVybmFsIHNpemUgOiByZWdleHAgLT4gKGludCBA dW50YWdnZWRAKQotLSAgPSAicGNyZV9zaXplX3N0dWJfYmMiICJwY3JlX3NpemVfc3R1YiIKLS0K LS1leHRlcm5hbCBzdHVkeXNpemUgOiByZWdleHAgLT4gKGludCBAdW50YWdnZWRAKQotLSAgPSAi cGNyZV9zdHVkeXNpemVfc3R1Yl9iYyIgInBjcmVfc3R1ZHlzaXplX3N0dWIiCi0tCi0tZXh0ZXJu YWwgY2FwdHVyZWNvdW50IDogcmVnZXhwIC0+IChpbnQgQHVudGFnZ2VkQCkKLS0gID0gInBjcmVf Y2FwdHVyZWNvdW50X3N0dWJfYmMiICJwY3JlX2NhcHR1cmVjb3VudF9zdHViIgotLQotLWV4dGVy bmFsIGJhY2tyZWZtYXggOiByZWdleHAgLT4gKGludCBAdW50YWdnZWRAKQotLSAgPSAicGNyZV9i YWNrcmVmbWF4X3N0dWJfYmMiICJwY3JlX2JhY2tyZWZtYXhfc3R1YiIKLS0KLS1leHRlcm5hbCBu YW1lY291bnQgOiByZWdleHAgLT4gKGludCBAdW50YWdnZWRAKQotLSAgPSAicGNyZV9uYW1lY291 bnRfc3R1Yl9iYyIgInBjcmVfbmFtZWNvdW50X3N0dWIiCi0tCi0tZXh0ZXJuYWwgbmFtZWVudHJ5 c2l6ZSA6IHJlZ2V4cCAtPiAoaW50IEB1bnRhZ2dlZEApCi0tICA9ICJwY3JlX25hbWVlbnRyeXNp emVfc3R1Yl9iYyIgInBjcmVfbmFtZWVudHJ5c2l6ZV9zdHViIgotLQotLWV4dGVybmFsIG5hbWVz IDogcmVnZXhwIC0+IHN0cmluZyBhcnJheSA9ICJwY3JlX25hbWVzX3N0dWIiCi0tZXh0ZXJuYWwg Zmlyc3RieXRlIDogcmVnZXhwIC0+IGZpcnN0Ynl0ZV9pbmZvID0gInBjcmVfZmlyc3RieXRlX3N0 dWIiCi0tZXh0ZXJuYWwgZmlyc3R0YWJsZSA6IHJlZ2V4cCAtPiBzdHJpbmcgb3B0aW9uID0gInBj cmVfZmlyc3R0YWJsZV9zdHViIgotLWV4dGVybmFsIGxhc3RsaXRlcmFsIDogcmVnZXhwIC0+IGNo YXIgb3B0aW9uID0gInBjcmVfbGFzdGxpdGVyYWxfc3R1YiIKLS1leHRlcm5hbCBzdHVkeV9zdGF0 IDogcmVnZXhwIC0+IHN0dWR5X3N0YXQgPSAicGNyZV9zdHVkeV9zdGF0X3N0dWIiIEBub2FsbG9j QAotLQotLQotLSgqIENvbXBpbGF0aW9uIG9mIHBhdHRlcm5zICopCi0tCi0tdHlwZSBjaHRhYmxl cwotLQotLWV4dGVybmFsIG1ha2V0YWJsZXMgOiB1bml0IC0+IGNodGFibGVzID0gInBjcmVfbWFr ZXRhYmxlc19zdHViIgotLQotLSgqICBJbnRlcm5hbCB1c2Ugb25seSEgKikKLS1leHRlcm5hbCBw Y3JlX3N0dWR5IDogcmVnZXhwIC0+IHVuaXQgPSAicGNyZV9zdHVkeV9zdHViIgotLQotLWV4dGVy bmFsIGNvbXBpbGUgOiAoaWNmbGFnICBAdW50YWdnZWRAKSAtPiBjaHRhYmxlcyBvcHRpb24gLT4g c3RyaW5nIC0+IHJlZ2V4cAotLSAgPSAicGNyZV9jb21waWxlX3N0dWJfYmMiICJwY3JlX2NvbXBp bGVfc3R1YiIKLS0KLS1leHRlcm5hbCBnZXRfbWF0Y2hfbGltaXQgOiByZWdleHAgLT4gaW50IG9w dGlvbiA9ICJwY3JlX2dldF9tYXRjaF9saW1pdF9zdHViIgotLQotLWV4dGVybmFsIGdldF9tYXRj aF9saW1pdF9yZWN1cnNpb24gOiByZWdleHAgLT4gaW50IG9wdGlvbgotLSAgPSAicGNyZV9nZXRf bWF0Y2hfbGltaXRfcmVjdXJzaW9uX3N0dWIiCi0tCi0tKCogSW50ZXJuYWwgdXNlIG9ubHkhICop Ci0tZXh0ZXJuYWwgc2V0X2ltcF9tYXRjaF9saW1pdCA6IHJlZ2V4cCAtPiAoaW50IEB1bnRhZ2dl ZEApIC0+IHJlZ2V4cAotLSAgPSAicGNyZV9zZXRfaW1wX21hdGNoX2xpbWl0X3N0dWJfYmMiICJw Y3JlX3NldF9pbXBfbWF0Y2hfbGltaXRfc3R1YiIKLS0gIEBub2FsbG9jQAotLQotLSgqIEludGVy bmFsIHVzZSBvbmx5ISAqKQotLWV4dGVybmFsIHNldF9pbXBfbWF0Y2hfbGltaXRfcmVjdXJzaW9u IDogcmVnZXhwIC0+IChpbnQgQHVudGFnZ2VkQCkgLT4gcmVnZXhwCi0tICA9Ci0tICAicGNyZV9z ZXRfaW1wX21hdGNoX2xpbWl0X3JlY3Vyc2lvbl9zdHViX2JjIgotLSAgInBjcmVfc2V0X2ltcF9t YXRjaF9saW1pdF9yZWN1cnNpb25fc3R1YiIKLS0gIEBub2FsbG9jQAotLQotLWxldCByZWdleHAK LS0gICAgICA/KHN0dWR5ID0gdHJ1ZSkgP2xpbWl0ID9saW1pdF9yZWN1cnNpb24KLS0gICAgICA/ KGlmbGFncyA9IDApID9mbGFncyA/Y2h0YWJsZXMgcGF0ID0KLS0gIGxldCByZXggPQotLSAgICBt YXRjaCBmbGFncyB3aXRoCi0tICAgIHwgU29tZSBmbGFnX2xpc3QgLT4gY29tcGlsZSAoY2ZsYWdz IGZsYWdfbGlzdCkgY2h0YWJsZXMgcGF0Ci0tICAgIHwgXyAtPiBjb21waWxlIGlmbGFncyBjaHRh YmxlcyBwYXQKLS0gIGluCi0tICBpZiBzdHVkeSB0aGVuIHBjcmVfc3R1ZHkgcmV4OwotLSAgbGV0 IHJleCA9Ci0tICAgIG1hdGNoIGxpbWl0IHdpdGgKLS0gICAgfCBOb25lIC0+IHJleAotLSAgICB8 IFNvbWUgbGltIC0+IHNldF9pbXBfbWF0Y2hfbGltaXQgcmV4IGxpbQotLSAgaW4KLS0gIG1hdGNo IGxpbWl0X3JlY3Vyc2lvbiB3aXRoCi0tICB8IE5vbmUgLT4gcmV4Ci0tICB8IFNvbWUgbGltIC0+ IHNldF9pbXBfbWF0Y2hfbGltaXRfcmVjdXJzaW9uIHJleCBsaW0KLS0KLS1sZXQgcmVnZXhwX29y Ci0tICAgICAgP3N0dWR5ID9saW1pdCA/bGltaXRfcmVjdXJzaW9uID8oaWZsYWdzID0gMCkgP2Zs YWdzID9jaHRhYmxlcyBwYXRzID0KLS0gIGxldCBjaGVjayBwYXQgPQotLSAgICB0cnkgaWdub3Jl IChyZWdleHAgfnN0dWR5OmZhbHNlIH5pZmxhZ3MgP2ZsYWdzID9jaHRhYmxlcyBwYXQpCi0tICAg IHdpdGggRXJyb3IgZXJyb3IgLT4gcmFpc2UgKFJlZ2V4cF9vciAocGF0LCBlcnJvcikpCi0tICBp bgotLSAgTGlzdC5pdGVyIGNoZWNrIHBhdHM7Ci0tICBsZXQgYmlnX3BhdCA9Ci0tICAgIGxldCBj bnYgcGF0ID0gIig/OiIgXiBwYXQgXiAiKSIgaW4KLS0gICAgU3RyaW5nLmNvbmNhdCAifCIgKExp c3QucmV2IChMaXN0LnJldl9tYXAgY252IHBhdHMpKQotLSAgaW4KLS0gIHJlZ2V4cCA/c3R1ZHkg P2xpbWl0ID9saW1pdF9yZWN1cnNpb24gfmlmbGFncyA/ZmxhZ3MgP2NodGFibGVzIGJpZ19wYXQK LS0KLS1sZXQgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN0ciBzdHJfb2ZzIGJ0cyBidHNfb2Zz IGxlbiA9Ci0tICBsZXQgc3RyX2J0cyA9IEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgc3RyIGluCi0t ICBCeXRlcy51bnNhZmVfYmxpdCBzdHJfYnRzIHN0cl9vZnMgYnRzIGJ0c19vZnMgbGVuCi0tCi0t bGV0IHN0cmluZ191bnNhZmVfc3ViIHN0ciBvZnMgbGVuID0KLS0gIGxldCByZXMgPSBCeXRlcy5j cmVhdGUgbGVuIGluCi0tICBieXRlc191bnNhZmVfYmxpdF9zdHJpbmcgc3RyIG9mcyByZXMgMCBs ZW47Ci0tICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcwotLQotLWxldCBxdW90ZSBzID0KLS0g IGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW4KLS0gIGxldCBidWYgPSBCeXRlcy5jcmVhdGUg KGxlbiBsc2wgMSkgaW4KLS0gIGxldCBwb3MgPSByZWYgMCBpbgotLSAgZm9yIGkgPSAwIHRvIGxl biAtIDEgZG8KLS0gICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyBpIHdpdGgKLS0gICAgfCAn XFwnIHwgJ14nIHwgJyQnIHwgJy4nIHwgJ1snIHwgJ3wnCi0tICAgIHwgJygnICB8ICcpJyB8ICc/ JyB8ICcqJyB8ICcrJyB8ICd7JyBhcyBjIC0+Ci0tICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYg IXBvcyAnXFwnOwotLSAgICAgIGluY3IgcG9zOwotLSAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVm ICFwb3MgYzsKLS0gICAgICBpbmNyIHBvcwotLSAgICB8IGMgLT4gQnl0ZXMudW5zYWZlX3NldCBi dWYgIXBvcyBjOyBpbmNyIHBvcwotLSAgZG9uZTsKLS0gIHN0cmluZ191bnNhZmVfc3ViIChCeXRl cy51bnNhZmVfdG9fc3RyaW5nIGJ1ZikgMCAhcG9zCi0tCi0tCi0tKCogTWF0Y2hpbmcgb2YgcGF0 dGVybnMgYW5kIHN1YnBhdHRlcm4gZXh0cmFjdGlvbiAqKQotLQotLSgqIERlZmF1bHQgcmVndWxh ciBleHByZXNzaW9uIHdoZW4gbm9uZSBpcyBwcm92aWRlZCBieSB0aGUgdXNlciAqKQotLWxldCBk ZWZfcmV4ID0gcmVnZXhwICJcXHMrIgotLQotLXR5cGUgc3Vic3RyaW5ncyA9IHN0cmluZyAqIGlu dCBhcnJheQotLQotLXR5cGUgY2FsbG91dF9kYXRhID0KLS0gIHsKLS0gICAgY2FsbG91dF9udW1i ZXIgOiBpbnQ7Ci0tICAgIHN1YnN0cmluZ3MgOiBzdWJzdHJpbmdzOwotLSAgICBzdGFydF9tYXRj aCA6IGludDsKLS0gICAgY3VycmVudF9wb3NpdGlvbiA6IGludDsKLS0gICAgY2FwdHVyZV90b3Ag OiBpbnQ7Ci0tICAgIGNhcHR1cmVfbGFzdCA6IGludDsKLS0gICAgcGF0dGVybl9wb3NpdGlvbiA6 IGludDsKLS0gICAgbmV4dF9pdGVtX2xlbmd0aCA6IGludDsKLS0gIH0KLS0KLS10eXBlIGNhbGxv dXQgPSBjYWxsb3V0X2RhdGEgLT4gdW5pdAotLQotLWxldCBnZXRfc3ViamVjdCAoc3ViaiwgXykg PSBzdWJqCi0tCi0tbGV0IG51bV9vZl9zdWJzIChfLCBvdmVjdG9yKSA9IEFycmF5Lmxlbmd0aCBv dmVjdG9yIC8gMwotLQotLWxldCBnZXRfb2Zmc2V0X3N0YXJ0IG92ZWN0b3Igc3RyX251bSA9Ci0t ICBpZiBzdHJfbnVtIDwgMCB8fCBzdHJfbnVtID49IEFycmF5Lmxlbmd0aCBvdmVjdG9yIC8gMyB0 aGVuCi0tICAgIGludmFsaWRfYXJnICJQY3JlLmdldF9vZmZzZXRfc3RhcnQ6IGlsbGVnYWwgb2Zm c2V0IjsKLS0gIGxldCBvZmZzZXQgPSBzdHJfbnVtIGxzbCAxIGluCi0tICBvZmZzZXQsIEFycmF5 LnVuc2FmZV9nZXQgb3ZlY3RvciBvZmZzZXQKLS0KLS1sZXQgZ2V0X3N1YnN0cmluZ19hdXggKHN1 YmosIG92ZWN0b3IpIG9mZnNldCBzdGFydCA9Ci0tICBpZiBzdGFydCA8IDAgdGhlbiByYWlzZSBO b3RfZm91bmQKLS0gIGVsc2UKLS0gICAgc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBzdGFydCAoQXJy YXkudW5zYWZlX2dldCBvdmVjdG9yIChvZmZzZXQgKyAxKSAtIHN0YXJ0KQotLQotLWxldCBnZXRf c3Vic3RyaW5nIChfLCBvdmVjdG9yIGFzIHN1YnN0cmluZ3MpIHN0cl9udW0gPQotLSAgbGV0IG9m ZnNldCwgc3RhcnQgPSBnZXRfb2Zmc2V0X3N0YXJ0IG92ZWN0b3Igc3RyX251bSBpbgotLSAgZ2V0 X3N1YnN0cmluZ19hdXggc3Vic3RyaW5ncyBvZmZzZXQgc3RhcnQKLS0KLS1sZXQgZ2V0X3N1YnN0 cmluZ19vZnMgKF9zdWJqLCBvdmVjdG9yKSBzdHJfbnVtID0KLS0gIGxldCBvZmZzZXQsIHN0YXJ0 ID0gZ2V0X29mZnNldF9zdGFydCBvdmVjdG9yIHN0cl9udW0gaW4KLS0gIGlmIHN0YXJ0IDwgMCB0 aGVuIHJhaXNlIE5vdF9mb3VuZAotLSAgZWxzZSBzdGFydCwgQXJyYXkudW5zYWZlX2dldCBvdmVj dG9yIChvZmZzZXQgKyAxKQotLQotLWxldCB1bnNhZmVfZ2V0X3N1YnN0cmluZyAoXywgb3ZlY3Rv ciBhcyBzdWJzdHJpbmdzKSBzdHJfbnVtID0KLS0gIGxldCBvZmZzZXQgPSBzdHJfbnVtIGxzbCAx IGluCi0tICB0cnkgZ2V0X3N1YnN0cmluZ19hdXggc3Vic3RyaW5ncyBvZmZzZXQgKEFycmF5LnVu c2FmZV9nZXQgb3ZlY3RvciBvZmZzZXQpCi0tICB3aXRoIE5vdF9mb3VuZCAtPiAiIgotLQotLWxl dCBnZXRfc3Vic3RyaW5ncyA/KGZ1bGxfbWF0Y2ggPSB0cnVlKSAoXywgb3ZlY3RvciBhcyBzdWJz dHJpbmdzKSA9Ci0tICBpZiBmdWxsX21hdGNoIHRoZW4KLS0gICAgQXJyYXkuaW5pdCAoQXJyYXku bGVuZ3RoIG92ZWN0b3IgLyAzKSAodW5zYWZlX2dldF9zdWJzdHJpbmcgc3Vic3RyaW5ncykKLS0g IGVsc2UKLS0gICAgbGV0IGxlbiA9IChBcnJheS5sZW5ndGggb3ZlY3RvciAvIDMpIC0gMSBpbgot LSAgICBBcnJheS5pbml0IGxlbiAoZnVuIG4gLT4gdW5zYWZlX2dldF9zdWJzdHJpbmcgc3Vic3Ry aW5ncyAobiArIDEpKQotLQotLWxldCB1bnNhZmVfZ2V0X29wdF9zdWJzdHJpbmcgKF8sIG92ZWN0 b3IgYXMgc3Vic3RyaW5ncykgc3RyX251bSA9Ci0tICBsZXQgb2Zmc2V0ID0gc3RyX251bSBsc2wg MSBpbgotLSAgdHJ5Ci0tICAgIGxldCBzdGFydCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciBv ZmZzZXQgaW4KLS0gICAgbGV0IHN0ciA9IGdldF9zdWJzdHJpbmdfYXV4IHN1YnN0cmluZ3Mgb2Zm c2V0IHN0YXJ0IGluCi0tICAgIFNvbWUgc3RyCi0tICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lCi0t Ci0tbGV0IGdldF9vcHRfc3Vic3RyaW5ncyA/KGZ1bGxfbWF0Y2ggPSB0cnVlKSAoXywgb3ZlY3Rv ciBhcyBzdWJzdHJpbmdzKSA9Ci0tICBpZiBmdWxsX21hdGNoIHRoZW4KLS0gICAgQXJyYXkuaW5p dCAoQXJyYXkubGVuZ3RoIG92ZWN0b3IgLyAzKSAodW5zYWZlX2dldF9vcHRfc3Vic3RyaW5nIHN1 YnN0cmluZ3MpCi0tICBlbHNlCi0tICAgIGxldCBsZW4gPSAoQXJyYXkubGVuZ3RoIG92ZWN0b3Ig LyAzKSAtIDEgaW4KLS0gICAgQXJyYXkuaW5pdCBsZW4gKGZ1biBuIC0+IHVuc2FmZV9nZXRfb3B0 X3N1YnN0cmluZyBzdWJzdHJpbmdzIChuICsgMSkpCi0tCi0tZXh0ZXJuYWwgZ2V0X3N0cmluZ251 bWJlciA6IHJlZ2V4cCAtPiBzdHJpbmcgLT4gKGludCBAdW50YWdnZWRAKQotLSAgPSAicGNyZV9n ZXRfc3RyaW5nbnVtYmVyX3N0dWJfYmMiICJwY3JlX2dldF9zdHJpbmdudW1iZXJfc3R1YiIKLS0K LS1sZXQgZ2V0X25hbWVkX3N1YnN0cmluZyByZXggbmFtZSBzdWJzdHJpbmdzID0KLS0gIGdldF9z dWJzdHJpbmcgc3Vic3RyaW5ncyAoZ2V0X3N0cmluZ251bWJlciByZXggbmFtZSkKLS0KLS1sZXQg Z2V0X25hbWVkX3N1YnN0cmluZ19vZnMgcmV4IG5hbWUgc3Vic3RyaW5ncyA9Ci0tICBnZXRfc3Vi c3RyaW5nX29mcyBzdWJzdHJpbmdzIChnZXRfc3RyaW5nbnVtYmVyIHJleCBuYW1lKQotLQotLWV4 dGVybmFsIHVuc2FmZV9wY3JlX2V4ZWMgOgotLSAgKGlyZmxhZyBAdW50YWdnZWRAKSAtPgotLSAg cmVnZXhwIC0+Ci0tICBwb3MgOiAoaW50IEB1bnRhZ2dlZEApIC0+Ci0tICBzdWJqX3N0YXJ0IDog KGludCBAdW50YWdnZWRAKSAtPgotLSAgc3ViaiA6IHN0cmluZyAtPgotLSAgaW50IGFycmF5IC0+ Ci0tICBjYWxsb3V0IG9wdGlvbiAtPgotLSAgdW5pdCA9ICJwY3JlX2V4ZWNfc3R1Yl9iYyIgInBj cmVfZXhlY19zdHViIgotLQotLWxldCBtYWtlX292ZWN0b3IgcmV4ID0KLS0gIGxldCBzdWJncm91 cHMxID0gY2FwdHVyZWNvdW50IHJleCArIDEgaW4KLS0gIGxldCBzdWJncm91cHMyID0gc3ViZ3Jv dXBzMSBsc2wgMSBpbgotLSAgc3ViZ3JvdXBzMiwgQXJyYXkubWFrZSAoc3ViZ3JvdXBzMSArIHN1 Ymdyb3VwczIpIDAKLS0KLS1sZXQgcGNyZV9leGVjID8oaWZsYWdzID0gMCkgP2ZsYWdzID8ocmV4 ID0gZGVmX3JleCkgP3BhdCA/KHBvcyA9IDApCi0tICAgICAgICAgICAgICA/Y2FsbG91dCBzdWJq ID0KLS0gIGxldCByZXggPSBtYXRjaCBwYXQgd2l0aCBTb21lIHN0ciAtPiByZWdleHAgc3RyIHwg XyAtPiByZXggaW4KLS0gIGxldCBpZmxhZ3MgPSBtYXRjaCBmbGFncyB3aXRoIFNvbWUgZmxhZ3Mg LT4gcmZsYWdzIGZsYWdzIHwgXyAtPiBpZmxhZ3MgaW4KLS0gIGxldCBfLCBvdmVjdG9yID0gbWFr ZV9vdmVjdG9yIHJleCBpbgotLSAgdW5zYWZlX3BjcmVfZXhlYyBpZmxhZ3MgcmV4IH5wb3MgfnN1 Ympfc3RhcnQ6MCB+c3ViaiBvdmVjdG9yIGNhbGxvdXQ7Ci0tICBvdmVjdG9yCi0tCi0tbGV0IGV4 ZWMgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2NhbGxvdXQgc3ViaiA9Ci0tICBzdWJq LCBwY3JlX2V4ZWMgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2NhbGxvdXQgc3Viagot LQotLWxldCBuZXh0X21hdGNoID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/KHBvcyA9IDApID9j YWxsb3V0IChzdWJqLCBvdmVjdG9yKSA9Ci0tICBsZXQgcG9zID0gQXJyYXkudW5zYWZlX2dldCBv dmVjdG9yIDEgKyBwb3MgaW4KLS0gIGxldCBzdWJqX2xlbiA9IFN0cmluZy5sZW5ndGggc3ViaiBp bgotLSAgaWYgcG9zIDwgMCB8fCBwb3MgPiBzdWJqX2xlbiB0aGVuCi0tICAgIGludmFsaWRfYXJn ICJQY3JlLm5leHRfbWF0Y2g6IGlsbGVnYWwgb2Zmc2V0IjsKLS0gIHN1YmosIHBjcmVfZXhlYyA/ aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgfnBvcyA/Y2FsbG91dCBzdWJqCi0tCi0tbGV0IHJlYyBj b3B5X2xzdCBhciBuID0gZnVuY3Rpb24KLS0gIHwgW10gLT4gYXIKLS0gIHwgaCA6OiB0IC0+IEFy cmF5LnVuc2FmZV9zZXQgYXIgbiBoOyBjb3B5X2xzdCBhciAobiAtIDEpIHQKLS0KLS1sZXQgZXhl Y19hbGwgPyhpZmxhZ3MgPSAwKSA/ZmxhZ3MgPyhyZXggPSBkZWZfcmV4KSA/cGF0ID9wb3MgP2Nh bGxvdXQgc3ViaiA9Ci0tICBsZXQgcmV4ID0gbWF0Y2ggcGF0IHdpdGggU29tZSBzdHIgLT4gcmVn ZXhwIHN0ciB8IF8gLT4gcmV4IGluCi0tICBsZXQgaWZsYWdzID0gbWF0Y2ggZmxhZ3Mgd2l0aCBT b21lIGZsYWdzIC0+IHJmbGFncyBmbGFncyB8IF8gLT4gaWZsYWdzIGluCi0tICBsZXQgKF8sIG92 ZWN0b3IgYXMgc3N0cnMpID0gZXhlYyB+aWZsYWdzIH5yZXggP3BvcyA/Y2FsbG91dCBzdWJqIGlu Ci0tICBsZXQgbnVsbF9mbGFncyA9IGlmbGFncyBsb3IgMHgwNDAwIGluCi0tICBsZXQgc3Vial9s ZW4gPSBTdHJpbmcubGVuZ3RoIHN1YmogaW4KLS0gIGxldCByZWMgbG9vcCBwb3MgKHN1YmosIG92 ZWN0b3IgYXMgc3N0cnMpIG4gbHN0ID0KLS0gICAgbGV0IG1heWJlX292ZWN0b3IgPQotLSAgICAg IHRyeQotLSAgICAgICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDAgaW4K LS0gICAgICAgIGlmIGZpcnN0ID0gcG9zICYmIEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxID0g cG9zIHRoZW4KLS0gICAgICAgICAgaWYgcG9zID0gc3Vial9sZW4gdGhlbiBOb25lCi0tICAgICAg ICAgIGVsc2UgU29tZSAocGNyZV9leGVjIH5pZmxhZ3M6bnVsbF9mbGFncyB+cmV4IH5wb3MgP2Nh bGxvdXQgc3ViaikKLS0gICAgICAgIGVsc2UgU29tZSAocGNyZV9leGVjIH5pZmxhZ3MgfnJleCB+ cG9zID9jYWxsb3V0IHN1YmopCi0tICAgICAgd2l0aCBOb3RfZm91bmQgLT4gTm9uZSBpbgotLSAg ICBtYXRjaCBtYXliZV9vdmVjdG9yIHdpdGgKLS0gICAgfCBTb21lIG92ZWN0b3IgLT4KLS0gICAg ICAgIGxldCBuZXdfcG9zID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgaW4KLS0gICAgICAg IGxvb3AgbmV3X3BvcyAoc3Viaiwgb3ZlY3RvcikgKG4gKyAxKSAoc3N0cnMgOjogbHN0KQotLSAg ICB8IE5vbmUgLT4gY29weV9sc3QgKEFycmF5Lm1ha2UgKG4gKyAxKSBzc3RycykgKG4gLSAxKSBs c3QgaW4KLS0gIGxvb3AgKEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxKSBzc3RycyAwIFtdCi0t Ci0tbGV0IGV4dHJhY3QgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2Z1bGxfbWF0Y2gg P2NhbGxvdXQgc3ViaiA9Ci0tICBnZXRfc3Vic3RyaW5ncyA/ZnVsbF9tYXRjaCAoZXhlYyA/aWZs YWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJqKQotLQotLWxldCBleHRyYWN0 X29wdCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/ZnVsbF9tYXRjaCA/Y2FsbG91dCBz dWJqID0KLS0gIGdldF9vcHRfc3Vic3RyaW5ncwotLSAgICA/ZnVsbF9tYXRjaCAoZXhlYyA/aWZs YWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJqKQotLQotLWxldCBleHRyYWN0 X2FsbCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/ZnVsbF9tYXRjaCA/Y2FsbG91dCBz dWJqID0KLS0gIGxldCBtYW55X3NzdHJzID0gZXhlY19hbGwgP2lmbGFncyA/ZmxhZ3MgP3JleCA/ cGF0ID9wb3MgP2NhbGxvdXQgc3ViaiBpbgotLSAgQXJyYXkubWFwIChnZXRfc3Vic3RyaW5ncyA/ ZnVsbF9tYXRjaCkgbWFueV9zc3RycwotLQotLWxldCBleHRyYWN0X2FsbF9vcHQgP2lmbGFncyA/ ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2Z1bGxfbWF0Y2ggP2NhbGxvdXQgc3ViaiA9Ci0tICBsZXQg bWFueV9zc3RycyA9IGV4ZWNfYWxsID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxs b3V0IHN1YmogaW4KLS0gIEFycmF5Lm1hcCAoZ2V0X29wdF9zdWJzdHJpbmdzID9mdWxsX21hdGNo KSBtYW55X3NzdHJzCi0tCi0tbGV0IHBtYXRjaCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3Bv cyA/Y2FsbG91dCBzdWJqID0KLS0gIHRyeSBpZ25vcmUgKHBjcmVfZXhlYyA/aWZsYWdzID9mbGFn cyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJqKTsgdHJ1ZQotLSAgd2l0aCBOb3RfZm91bmQg LT4gZmFsc2UKLS0KLS0KLS0oKiBTdHJpbmcgc3Vic3RpdHV0aW9uICopCi0tCi0tKCogRWxlbWVu dHMgb2YgYSBzdWJzdGl0dXRpb24gcGF0dGVybiAqKQotLXR5cGUgc3Vic3QgPQotLSAgfCBTdWJz dFN0cmluZyBvZiBpbnQgKiBpbnQgKCogRGVub3RlcyBhIHN1YnN0cmluZyBpbiB0aGUgc3Vic3Rp dHV0aW9uICopCi0tICB8IEJhY2tyZWYgb2YgaW50ICAgICAgICAgICAoKiBudGggYmFja3JlZmVy ZW5jZSAoJDAgaXMgcHJvZ3JhbSBuYW1lISkgKikKLS0gIHwgTWF0Y2ggICAgICAgICAgICAgICAg ICAgICgqIFRoZSB3aG9sZSBtYXRjaGVkIHN0cmluZyAqKQotLSAgfCBQcmVNYXRjaCAgICAgICAg ICAgICAgICAgKCogVGhlIHN0cmluZyBiZWZvcmUgdGhlIG1hdGNoICopCi0tICB8IFBvc3RNYXRj aCAgICAgICAgICAgICAgICAoKiBUaGUgc3RyaW5nIGFmdGVyIHRoZSBtYXRjaCAqKQotLSAgfCBM YXN0UGFyZW5NYXRjaCAgICAgICAgICAgKCogVGhlIGxhc3QgbWF0Y2hlZCBncm91cCAqKQotLQot LSgqIEluZm9ybWF0aW9uIG9uIHN1YnN0aXR1dGlvbiBwYXR0ZXJucyAqKQotLXR5cGUgc3Vic3Rp dHV0aW9uID0gc3RyaW5nICAgICAoKiBUaGUgc3Vic3RpdHV0aW9uIHN0cmluZyAqKQotLSAgICAg ICAgICAgICAgICAgICogaW50ICAgICAgICAoKiBIaWdoZXN0IGdyb3VwIG51bWJlciBvZiBiYWNr cmVmZXJlbmNlcyAqKQotLSAgICAgICAgICAgICAgICAgICogYm9vbCAgICAgICAoKiBNYWtlcyB1 c2Ugb2YgIkxhc3RQYXJlbk1hdGNoIiAqKQotLSAgICAgICAgICAgICAgICAgICogc3Vic3QgbGlz dCAoKiBUaGUgbGlzdCBvZiBzdWJzdGl0dXRpb24gZWxlbWVudHMgKikKLS0KLS0oKiBPbmx5IHVz ZWQgaW50ZXJuYWxseSBpbiAic3Vic3QiICopCi0tZXhjZXB0aW9uIEZvdW5kQXQgb2YgaW50Ci0t Ci0tbGV0IHplcm8gPSBDaGFyLmNvZGUgJzAnCi0tCi0tbGV0IHN1YnN0IHN0ciA9Ci0tICBsZXQg bWF4X2JyID0gcmVmIDAgaW4KLS0gIGxldCB3aXRoX2xwID0gcmVmIGZhbHNlIGluCi0tICBsZXQg bGl4ID0gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGluCi0tICBsZXQgcmVjIGxvb3AgYWNjIG4gPQot LSAgICBpZiBsaXggPCBuIHRoZW4gYWNjCi0tICAgIGVsc2UKLS0gICAgICB0cnkKLS0gICAgICAg IGZvciBpID0gbiB0byBsaXggZG8KLS0gICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgc3Ry IGkgPSAnJCcgdGhlbiByYWlzZSAoRm91bmRBdCBpKQotLSAgICAgICAgZG9uZTsKLS0gICAgICAg IFN1YnN0U3RyaW5nIChuLCBsaXggLSBuICsgMSkgOjogYWNjCi0tICAgICAgd2l0aCBGb3VuZEF0 IGkgLT4KLS0gICAgICAgIGlmIGkgPSBsaXggdGhlbiBTdWJzdFN0cmluZyAobiwgbGl4IC0gbiAr IDEpIDo6IGFjYwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICBsZXQgaTEgPSBpICsgMSBpbgot LSAgICAgICAgICBsZXQgYWNjID0gaWYgbiA9IGkgdGhlbiBhY2MgZWxzZSBTdWJzdFN0cmluZyAo biwgaSAtIG4pIDo6IGFjYyBpbgotLSAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBz dHIgaTEgd2l0aAotLSAgICAgICAgICB8ICcwJy4uJzknIGFzIGMgLT4KLS0gICAgICAgICAgICAg IGxldCBzdWJwYXRfbnIgPSByZWYgKENoYXIuY29kZSBjIC0gemVybykgaW4KLS0gICAgICAgICAg ICAgICh0cnkKLS0gICAgICAgICAgICAgICAgZm9yIGogPSBpMSArIDEgdG8gbGl4IGRvCi0tICAg ICAgICAgICAgICAgICAgbGV0IGMgPSBTdHJpbmcudW5zYWZlX2dldCBzdHIgaiBpbgotLSAgICAg ICAgICAgICAgICAgIGlmIGMgPj0gJzAnICYmIGMgPD0gJzknIHRoZW4KLS0gICAgICAgICAgICAg ICAgICAgIHN1YnBhdF9uciA6PSAxMCAqICFzdWJwYXRfbnIgKyBDaGFyLmNvZGUgYyAtIHplcm8K LS0gICAgICAgICAgICAgICAgICBlbHNlIHJhaXNlIChGb3VuZEF0IGopCi0tICAgICAgICAgICAg ICAgIGRvbmU7Ci0tICAgICAgICAgICAgICAgIG1heF9iciA6PSBtYXggIXN1YnBhdF9uciAhbWF4 X2JyOwotLSAgICAgICAgICAgICAgICBCYWNrcmVmICFzdWJwYXRfbnIgOjogYWNjCi0tICAgICAg ICAgICAgICB3aXRoIEZvdW5kQXQgaiAtPgotLSAgICAgICAgICAgICAgICBtYXhfYnIgOj0gbWF4 ICFzdWJwYXRfbnIgIW1heF9icjsKLS0gICAgICAgICAgICAgICAgbG9vcCAoQmFja3JlZiAhc3Vi cGF0X25yIDo6IGFjYykgaikKLS0gICAgICAgICAgfCAnIScgIC0+IGxvb3AgYWNjIChpMSArIDEp Ci0tICAgICAgICAgIHwgJyQnICAtPiBsb29wIChTdWJzdFN0cmluZyAoaTEsIDEpIDo6IGFjYykg KGkxICsgMSkKLS0gICAgICAgICAgfCAnJicgIC0+IGxvb3AgKE1hdGNoIDo6IGFjYykgKGkxICsg MSkKLS0gICAgICAgICAgfCAnYCcgIC0+IGxvb3AgKFByZU1hdGNoIDo6IGFjYykgKGkxICsgMSkK LS0gICAgICAgICAgfCAnXCcnIC0+IGxvb3AgKFBvc3RNYXRjaCA6OiBhY2MpIChpMSArIDEpCi0t ICAgICAgICAgIHwgJysnICAtPgotLSAgICAgICAgICAgICAgd2l0aF9scCA6PSB0cnVlOwotLSAg ICAgICAgICAgICAgbG9vcCAoTGFzdFBhcmVuTWF0Y2ggOjogYWNjKSAoaTEgKyAxKQotLSAgICAg ICAgICB8IF8gICAgLT4gbG9vcCBhY2MgaTEgaW4KLS0gIGxldCBzdWJzdF9sc3QgPSBsb29wIFtd IDAgaW4KLS0gIHN0ciwgIW1heF9iciwgIXdpdGhfbHAsIHN1YnN0X2xzdAotLQotLWxldCBkZWZf c3Vic3QgPSBzdWJzdCAiIgotLQotLSgqIENhbGN1bGF0ZXMgYSBsaXN0IG9mIHR1cGxlcyAoc3Ry LCBvZmZzZXQsIGxlbikgd2hpY2ggY29udGFpbgotLSAgIHN1YnN0cmluZ3MgdG8gYmUgY29waWVk IG9uIHN1YnN0aXR1dGlvbnMuIEludGVybmFsIHVzZSBvbmx5ISAqKQotLWxldCBjYWxjX3RyYW5z X2xzdCBzdWJncm91cHMyIG92ZWN0b3Igc3ViaiB0ZW1wbCBzdWJzdF9sc3QgPQotLSAgbGV0IHBy ZWZpeF9sZW4gPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMCBpbgotLSAgbGV0IGxhc3QgPSBB cnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMSBpbgotLSAgbGV0IGNvbGwgKHJlc19sZW4sIHRyYW5z X2xzdCBhcyBhY2N1KSA9Ci0tICAgIGxldCByZXR1cm5fbHN0IChfc3RyLCBfaXgsIGxlbiBhcyBl bCkgPQotLSAgICAgIGlmIGxlbiA9IDAgdGhlbiBhY2N1IGVsc2UgcmVzX2xlbiArIGxlbiwgZWwg OjogdHJhbnNfbHN0IGluCi0tICAgIGZ1bmN0aW9uCi0tICAgIHwgU3Vic3RTdHJpbmcgKGl4LCBs ZW4pIC0+IHJldHVybl9sc3QgKHRlbXBsLCBpeCwgbGVuKQotLSAgICB8IEJhY2tyZWYgMCAtPgot LSAgICAgICAgbGV0IHByb2dfbmFtZSA9IFN5cy5hcmd2LigwKSBpbgotLSAgICAgICAgcmV0dXJu X2xzdCAocHJvZ19uYW1lLCAwLCBTdHJpbmcubGVuZ3RoIHByb2dfbmFtZSkKLS0gICAgfCBCYWNr cmVmIG4gLT4KLS0gICAgICAgIGxldCBvZmZzZXQgPSBuIGxzbCAxIGluCi0tICAgICAgICBsZXQg c3RhcnQgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3Igb2Zmc2V0IGluCi0tICAgICAgICBsZXQg bGVuID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIChvZmZzZXQgKyAxKSAtIHN0YXJ0IGluCi0t ICAgICAgICByZXR1cm5fbHN0IChzdWJqLCBzdGFydCwgbGVuKQotLSAgICB8IE1hdGNoIC0+IHJl dHVybl9sc3QgKHN1YmosIHByZWZpeF9sZW4sIGxhc3QgLSBwcmVmaXhfbGVuKQotLSAgICB8IFBy ZU1hdGNoIC0+IHJldHVybl9sc3QgKHN1YmosIDAsIHByZWZpeF9sZW4pCi0tICAgIHwgUG9zdE1h dGNoIC0+IHJldHVybl9sc3QgKHN1YmosIGxhc3QsIFN0cmluZy5sZW5ndGggc3ViaiAtIGxhc3Qp Ci0tICAgIHwgTGFzdFBhcmVuTWF0Y2ggLT4KLS0gICAgICAgIGxldCBzdWJncm91cHMyXzIgPSBz dWJncm91cHMyIC0gMiBpbgotLSAgICAgICAgbGV0IHBvcyA9IHJlZiBzdWJncm91cHMyXzIgaW4K LS0gICAgICAgIGxldCBpeCA9IHJlZiAoQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIHN1Ymdyb3Vw czJfMikgaW4KLS0gICAgICAgIHdoaWxlICFpeCA8IDAgZG8KLS0gICAgICAgICAgbGV0IHBvc18y ID0gIXBvcyAtIDIgaW4KLS0gICAgICAgICAgcG9zIDo9IHBvc18yOwotLSAgICAgICAgICBpeCA6 PSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgcG9zXzIKLS0gICAgICAgIGRvbmU7Ci0tICAgICAg ICByZXR1cm5fbHN0IChzdWJqLCAhaXgsIEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAoIXBvcyAr IDEpIC0gIWl4KSBpbgotLSAgTGlzdC5mb2xkX2xlZnQgY29sbCAoMCwgW10pIHN1YnN0X2xzdAot LQotLWxldCByZXBsYWNlID8oaWZsYWdzID0gMCkgP2ZsYWdzID8ocmV4ID0gZGVmX3JleCkgP3Bh dAotLSAgICAgICAgICAgID8ocG9zID0gMCkgPyhpdGVtcGwgPSBkZWZfc3Vic3QpID90ZW1wbCA/ Y2FsbG91dCBzdWJqID0KLS0gIGxldCByZXggPSBtYXRjaCBwYXQgd2l0aCBTb21lIHN0ciAtPiBy ZWdleHAgc3RyIHwgXyAtPiByZXggaW4KLS0gIGxldCBpZmxhZ3MgPSBtYXRjaCBmbGFncyB3aXRo IFNvbWUgZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwgXyAtPiBpZmxhZ3MgaW4KLS0gIGxldCB0ZW1w bCwgbWF4X2JyLCB3aXRoX2xwLCBzdWJzdF9sc3QgPQotLSAgICBtYXRjaCB0ZW1wbCB3aXRoCi0t ICAgIHwgU29tZSBzdHIgLT4gc3Vic3Qgc3RyCi0tICAgIHwgXyAtPiBpdGVtcGwgaW4KLS0gIGxl dCBzdWJqX2xlbiA9IFN0cmluZy5sZW5ndGggc3ViaiBpbgotLSAgaWYgcG9zIDwgMCB8fCBwb3Mg PiBzdWJqX2xlbiB0aGVuIGludmFsaWRfYXJnICJQY3JlLnJlcGxhY2U6IGlsbGVnYWwgb2Zmc2V0 IjsKLS0gIGxldCBzdWJncm91cHMyLCBvdmVjdG9yID0gbWFrZV9vdmVjdG9yIHJleCBpbgotLSAg bGV0IG5zdWJzID0gKHN1Ymdyb3VwczIgbHNyIDEpIC0gMSBpbgotLSAgaWYgbWF4X2JyID4gbnN1 YnMgdGhlbgotLSAgICBmYWlsd2l0aCAiUGNyZS5yZXBsYWNlOiBiYWNrcmVmZXJlbmNlIGRlbm90 ZXMgbm9uZXhpc3RlbnQgc3VicGF0dGVybiI7Ci0tICBpZiB3aXRoX2xwICYmIG5zdWJzID0gMCB0 aGVuIGZhaWx3aXRoICJQY3JlLnJlcGxhY2U6IG5vIGJhY2tyZWZlcmVuY2VzIjsKLS0gIGxldCBy ZWMgbG9vcCBmdWxsX2xlbiB0cmFuc19sc3RzIGN1cl9wb3MgPQotLSAgICBpZgotLSAgICAgIGN1 cl9wb3MgPiBzdWJqX2xlbiB8fAotLSAgICAgIHRyeQotLSAgICAgICAgdW5zYWZlX3BjcmVfZXhl YwotLSAgICAgICAgICBpZmxhZ3MgcmV4IH5wb3M6Y3VyX3BvcyB+c3Vial9zdGFydDowIH5zdWJq Ci0tICAgICAgICAgIG92ZWN0b3IgY2FsbG91dDsKLS0gICAgICAgIGZhbHNlCi0tICAgICAgd2l0 aCBOb3RfZm91bmQgLT4gdHJ1ZQotLSAgICB0aGVuCi0tICAgICAgbGV0IHBvc3RmaXhfbGVuID0g bWF4IChzdWJqX2xlbiAtIGN1cl9wb3MpIDAgaW4KLS0gICAgICBsZXQgbGVmdCA9IHBvcyArIGZ1 bGxfbGVuIGluCi0tICAgICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAobGVmdCArIHBvc3RmaXhf bGVuKSBpbgotLSAgICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyBzdWJqIDAgcmVzIDAgcG9z OwotLSAgICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyBzdWJqIGN1cl9wb3MgcmVzIGxlZnQg cG9zdGZpeF9sZW47Ci0tICAgICAgbGV0IGlubmVyX2NvbGwgb2ZzICh0ZW1wbCwgaXgsIGxlbikg PQotLSAgICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHRlbXBsIGl4IHJlcyBvZnMgbGVu OyBvZnMgKyBsZW4gaW4KLS0gICAgICBsZXQgY29sbCBvZnMgKHJlc19sZW4sIHRyYW5zX2xzdCkg PQotLSAgICAgICAgbGV0IG5ld19vZnMgPSBvZnMgLSByZXNfbGVuIGluCi0tICAgICAgICBsZXQg XyA9IExpc3QuZm9sZF9sZWZ0IGlubmVyX2NvbGwgbmV3X29mcyB0cmFuc19sc3QgaW4KLS0gICAg ICAgIG5ld19vZnMgaW4KLS0gICAgICBsZXQgXyA9IExpc3QuZm9sZF9sZWZ0IGNvbGwgbGVmdCB0 cmFuc19sc3RzIGluCi0tICAgICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXMKLS0gICAgZWxz ZQotLSAgICAgIGxldCBmaXJzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAwIGluCi0tICAg ICAgbGV0IGxlbiA9IGZpcnN0IC0gY3VyX3BvcyBpbgotLSAgICAgIGxldCByZXNfbGVuLCBfIGFz IHRyYW5zX2xzdF9lbCA9Ci0tICAgICAgICBjYWxjX3RyYW5zX2xzdCBzdWJncm91cHMyIG92ZWN0 b3Igc3ViaiB0ZW1wbCBzdWJzdF9sc3QgaW4KLS0gICAgICBsZXQgdHJhbnNfbHN0cyA9Ci0tICAg ICAgICBpZiBsZW4gPiAwIHRoZW4KLS0gICAgICAgICAgdHJhbnNfbHN0X2VsIDo6IChsZW4sIFso c3ViaiwgY3VyX3BvcywgbGVuKV0pIDo6IHRyYW5zX2xzdHMKLS0gICAgICAgIGVsc2UgdHJhbnNf bHN0X2VsIDo6IHRyYW5zX2xzdHMgaW4KLS0gICAgICBsZXQgZnVsbF9sZW4gPSBmdWxsX2xlbiAr IGxlbiArIHJlc19sZW4gaW4KLS0gICAgICBsZXQgbmV4dCA9IGZpcnN0ICsgMSBpbgotLSAgICAg IGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgaW4KLS0gICAgICBpZiBsYXN0 IDwgbmV4dCB0aGVuCi0tICAgICAgICBpZiBmaXJzdCA8IHN1YmpfbGVuIHRoZW4KLS0gICAgICAg ICAgbGV0IG5ld190cmFuc19sc3RzID0gKDEsIFsoc3ViaiwgY3VyX3BvcyArIGxlbiwgMSldKSA6 OiB0cmFuc19sc3RzIGluCi0tICAgICAgICAgIGxvb3AgKGZ1bGxfbGVuICsgMSkgbmV3X3RyYW5z X2xzdHMgbmV4dAotLSAgICAgICAgZWxzZSBsb29wIGZ1bGxfbGVuIHRyYW5zX2xzdHMgbmV4dAot LSAgICAgIGVsc2UgbG9vcCBmdWxsX2xlbiB0cmFuc19sc3RzIGxhc3QgaW4KLS0gIGxvb3AgMCBb XSBwb3MKLS0KLS1sZXQgcXJlcGxhY2UgPyhpZmxhZ3MgPSAwKSA/ZmxhZ3MgPyhyZXggPSBkZWZf cmV4KSA/cGF0Ci0tICAgICAgICAgICAgID8ocG9zID0gMCkgPyh0ZW1wbCA9ICIiKSA/Y2FsbG91 dCBzdWJqID0KLS0gIGxldCByZXggPSBtYXRjaCBwYXQgd2l0aCBTb21lIHN0ciAtPiByZWdleHAg c3RyIHwgXyAtPiByZXggaW4KLS0gIGxldCBpZmxhZ3MgPSBtYXRjaCBmbGFncyB3aXRoIFNvbWUg ZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwgXyAtPiBpZmxhZ3MgaW4KLS0gIGxldCBzdWJqX2xlbiA9 IFN0cmluZy5sZW5ndGggc3ViaiBpbgotLSAgaWYgcG9zIDwgMCB8fCBwb3MgPiBzdWJqX2xlbiB0 aGVuIGludmFsaWRfYXJnICJQY3JlLnFyZXBsYWNlOiBpbGxlZ2FsIG9mZnNldCI7Ci0tICBsZXQg dGVtcGxfbGVuID0gU3RyaW5nLmxlbmd0aCB0ZW1wbCBpbgotLSAgbGV0IF8sIG92ZWN0b3IgPSBt YWtlX292ZWN0b3IgcmV4IGluCi0tICBsZXQgcmVjIGxvb3AgZnVsbF9sZW4gc3Vic3RfbHN0IGN1 cl9wb3MgPQotLSAgICBpZgotLSAgICAgIGN1cl9wb3MgPiBzdWJqX2xlbiB8fAotLSAgICAgIHRy eQotLSAgICAgICAgdW5zYWZlX3BjcmVfZXhlYwotLSAgICAgICAgICBpZmxhZ3MgcmV4IH5wb3M6 Y3VyX3BvcyB+c3Vial9zdGFydDowIH5zdWJqIG92ZWN0b3IgY2FsbG91dDsKLS0gICAgICAgIGZh bHNlCi0tICAgICAgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZQotLSAgICB0aGVuCi0tICAgICAgbGV0 IHBvc3RmaXhfbGVuID0gbWF4IChzdWJqX2xlbiAtIGN1cl9wb3MpIDAgaW4KLS0gICAgICBsZXQg bGVmdCA9IHBvcyArIGZ1bGxfbGVuIGluCi0tICAgICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAo bGVmdCArIHBvc3RmaXhfbGVuKSBpbgotLSAgICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyBz dWJqIDAgcmVzIDAgcG9zOwotLSAgICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyBzdWJqIGN1 cl9wb3MgcmVzIGxlZnQgcG9zdGZpeF9sZW47Ci0tICAgICAgbGV0IGNvbGwgb2ZzID0gZnVuY3Rp b24KLS0gICAgICAgIHwgU29tZSAoc3Vic3RyLCBpeCwgbGVuKSAtPgotLSAgICAgICAgICAgIGxl dCBuZXdfb2ZzID0gb2ZzIC0gbGVuIGluCi0tICAgICAgICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRf c3RyaW5nIHN1YnN0ciBpeCByZXMgbmV3X29mcyBsZW47Ci0tICAgICAgICAgICAgbmV3X29mcwot LSAgICAgICAgfCBOb25lIC0+Ci0tICAgICAgICAgICAgbGV0IG5ld19vZnMgPSBvZnMgLSB0ZW1w bF9sZW4gaW4KLS0gICAgICAgICAgICBieXRlc191bnNhZmVfYmxpdF9zdHJpbmcgdGVtcGwgMCBy ZXMgbmV3X29mcyB0ZW1wbF9sZW47Ci0tICAgICAgICAgICAgbmV3X29mcyBpbgotLSAgICAgIGxl dCBfID0gTGlzdC5mb2xkX2xlZnQgY29sbCBsZWZ0IHN1YnN0X2xzdCBpbgotLSAgICAgIEJ5dGVz LnVuc2FmZV90b19zdHJpbmcgcmVzCi0tICAgIGVsc2UKLS0gICAgICBsZXQgZmlyc3QgPSBBcnJh eS51bnNhZmVfZ2V0IG92ZWN0b3IgMCBpbgotLSAgICAgIGxldCBsZW4gPSBmaXJzdCAtIGN1cl9w b3MgaW4KLS0gICAgICBsZXQgc3Vic3RfbHN0ID0KLS0gICAgICAgIGlmIGxlbiA+IDAgdGhlbiBO b25lIDo6IFNvbWUgKHN1YmosIGN1cl9wb3MsIGxlbikgOjogc3Vic3RfbHN0Ci0tICAgICAgICBl bHNlIE5vbmUgOjogc3Vic3RfbHN0IGluCi0tICAgICAgbGV0IGxhc3QgPSBBcnJheS51bnNhZmVf Z2V0IG92ZWN0b3IgMSBpbgotLSAgICAgIGxldCBmdWxsX2xlbiA9IGZ1bGxfbGVuICsgbGVuICsg dGVtcGxfbGVuIGluCi0tICAgICAgbGV0IG5leHQgPSBmaXJzdCArIDEgaW4KLS0gICAgICBpZiBs YXN0IDwgbmV4dCB0aGVuCi0tICAgICAgICBpZiBmaXJzdCA8IHN1YmpfbGVuIHRoZW4KLS0gICAg ICAgICAgbG9vcCAoZnVsbF9sZW4gKyAxKSAoU29tZSAoc3ViaiwgY3VyX3BvcyArIGxlbiwgMSkg Ojogc3Vic3RfbHN0KSBuZXh0Ci0tICAgICAgICBlbHNlIGxvb3AgZnVsbF9sZW4gc3Vic3RfbHN0 IG5leHQKLS0gICAgICBlbHNlIGxvb3AgZnVsbF9sZW4gc3Vic3RfbHN0IGxhc3QgaW4KLS0gIGxv b3AgMCBbXSBwb3MKLS0KLS1sZXQgc3Vic3RpdHV0ZV9zdWJzdHJpbmdzID8oaWZsYWdzID0gMCkg P2ZsYWdzID8ocmV4ID0gZGVmX3JleCkgP3BhdAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg Pyhwb3MgPSAwKSA/Y2FsbG91dCB+c3Vic3Qgc3ViaiA9Ci0tICBsZXQgcmV4ID0gbWF0Y2ggcGF0 IHdpdGggU29tZSBzdHIgLT4gcmVnZXhwIHN0ciB8IF8gLT4gcmV4IGluCi0tICBsZXQgaWZsYWdz ID0gbWF0Y2ggZmxhZ3Mgd2l0aCBTb21lIGZsYWdzIC0+IHJmbGFncyBmbGFncyB8IF8gLT4gaWZs YWdzIGluCi0tICBsZXQgc3Vial9sZW4gPSBTdHJpbmcubGVuZ3RoIHN1YmogaW4KLS0gIGlmIHBv cyA8IDAgfHwgcG9zID4gc3Vial9sZW4gdGhlbiBpbnZhbGlkX2FyZyAiUGNyZS5zdWJzdGl0dXRl OiBpbGxlZ2FsIG9mZnNldCI7Ci0tICBsZXQgXywgb3ZlY3RvciA9IG1ha2Vfb3ZlY3RvciByZXgg aW4KLS0gIGxldCByZWMgbG9vcCBmdWxsX2xlbiBzdWJzdF9sc3QgY3VyX3BvcyA9Ci0tICAgIGlm Ci0tICAgICAgY3VyX3BvcyA+IHN1YmpfbGVuIHx8Ci0tICAgICAgdHJ5Ci0tICAgICAgICB1bnNh ZmVfcGNyZV9leGVjCi0tICAgICAgICAgIGlmbGFncyByZXggfnBvczpjdXJfcG9zIH5zdWJqX3N0 YXJ0OjAgfnN1Ymogb3ZlY3RvciBjYWxsb3V0OwotLSAgICAgICAgZmFsc2UKLS0gICAgICB3aXRo IE5vdF9mb3VuZCAtPiB0cnVlCi0tICAgIHRoZW4KLS0gICAgICBsZXQgcG9zdGZpeF9sZW4gPSBt YXggKHN1YmpfbGVuIC0gY3VyX3BvcykgMCBpbgotLSAgICAgIGxldCBsZWZ0ID0gcG9zICsgZnVs bF9sZW4gaW4KLS0gICAgICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChsZWZ0ICsgcG9zdGZpeF9s ZW4pIGluCi0tICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN1YmogMCByZXMgMCBwb3M7 Ci0tICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN1YmogY3VyX3BvcyByZXMgbGVmdCBw b3N0Zml4X2xlbjsKLS0gICAgICBsZXQgY29sbCBvZnMgKHRlbXBsLCBpeCwgbGVuKSA9Ci0tICAg ICAgICBsZXQgbmV3X29mcyA9IG9mcyAtIGxlbiBpbgotLSAgICAgICAgYnl0ZXNfdW5zYWZlX2Js aXRfc3RyaW5nIHRlbXBsIGl4IHJlcyBuZXdfb2ZzIGxlbjsKLS0gICAgICAgIG5ld19vZnMgaW4K LS0gICAgICBsZXQgXyA9IExpc3QuZm9sZF9sZWZ0IGNvbGwgbGVmdCBzdWJzdF9sc3QgaW4KLS0g ICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcwotLSAgICBlbHNlCi0tICAgICAgbGV0IGZp cnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDAgaW4KLS0gICAgICBsZXQgbGVuID0gZmly c3QgLSBjdXJfcG9zIGluCi0tICAgICAgbGV0IHRlbXBsID0gc3Vic3QgKHN1YmosIG92ZWN0b3Ip IGluCi0tICAgICAgbGV0IHRlbXBsX2xlbiA9IFN0cmluZy5sZW5ndGggdGVtcGwgaW4KLS0gICAg ICBsZXQgc3Vic3RfbHN0ID0KLS0gICAgICAgIGlmIGxlbiA+IDAgdGhlbgotLSAgICAgICAgICAo dGVtcGwsIDAsIHRlbXBsX2xlbikgOjogKHN1YmosIGN1cl9wb3MsIGxlbikgOjogc3Vic3RfbHN0 Ci0tICAgICAgICBlbHNlICh0ZW1wbCwgMCwgdGVtcGxfbGVuKSA6OiBzdWJzdF9sc3QgaW4KLS0g ICAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxIGluCi0tICAgICAgbGV0 IGZ1bGxfbGVuID0gZnVsbF9sZW4gKyBsZW4gKyB0ZW1wbF9sZW4gaW4KLS0gICAgICBsZXQgbmV4 dCA9IGZpcnN0ICsgMSBpbgotLSAgICAgIGlmIGxhc3QgPCBuZXh0IHRoZW4KLS0gICAgICAgIGlm IGZpcnN0IDwgc3Vial9sZW4gdGhlbgotLSAgICAgICAgICBsb29wIChmdWxsX2xlbiArIDEpICgo c3ViaiwgY3VyX3BvcyArIGxlbiwgMSkgOjogc3Vic3RfbHN0KSBuZXh0Ci0tICAgICAgICBlbHNl IGxvb3AgZnVsbF9sZW4gc3Vic3RfbHN0IG5leHQKLS0gICAgICBlbHNlIGxvb3AgZnVsbF9sZW4g c3Vic3RfbHN0IGxhc3QgaW4KLS0gIGxvb3AgMCBbXSBwb3MKLS0KLS1sZXQgc3Vic3RpdHV0ZSA/ aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCB+c3Vic3Q6c3RyX3N1YnN0IHN1 YmogPQotLSAgbGV0IHN1YnN0IChzdWJqLCBvdmVjdG9yKSA9Ci0tICAgIGxldCBmaXJzdCA9IEFy cmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAwIGluCi0tICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZl X2dldCBvdmVjdG9yIDEgaW4KLS0gICAgc3RyX3N1YnN0IChzdHJpbmdfdW5zYWZlX3N1YiBzdWJq IGZpcnN0IChsYXN0IC0gZmlyc3QpKSBpbgotLSAgc3Vic3RpdHV0ZV9zdWJzdHJpbmdzID9pZmxh Z3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IH5zdWJzdCBzdWJqCi0tCi0tbGV0IHJl cGxhY2VfZmlyc3QgPyhpZmxhZ3MgPSAwKSA/ZmxhZ3MgPyhyZXggPSBkZWZfcmV4KSA/cGF0ID8o cG9zID0gMCkKLS0gICAgICAgICAgICAgICAgICA/KGl0ZW1wbCA9IGRlZl9zdWJzdCkgP3RlbXBs ID9jYWxsb3V0IHN1YmogPQotLSAgbGV0IHJleCA9IG1hdGNoIHBhdCB3aXRoIFNvbWUgc3RyIC0+ IHJlZ2V4cCBzdHIgfCBfIC0+IHJleCBpbgotLSAgbGV0IGlmbGFncyA9IG1hdGNoIGZsYWdzIHdp dGggU29tZSBmbGFncyAtPiByZmxhZ3MgZmxhZ3MgfCBfIC0+IGlmbGFncyBpbgotLSAgbGV0IHRl bXBsLCBtYXhfYnIsIHdpdGhfbHAsIHN1YnN0X2xzdCA9Ci0tICAgIG1hdGNoIHRlbXBsIHdpdGgK LS0gICAgfCBTb21lIHN0ciAtPiBzdWJzdCBzdHIKLS0gICAgfCBfIC0+IGl0ZW1wbCBpbgotLSAg bGV0IHN1Ymdyb3VwczIsIG92ZWN0b3IgPSBtYWtlX292ZWN0b3IgcmV4IGluCi0tICBsZXQgbnN1 YnMgPSAoc3ViZ3JvdXBzMiBsc3IgMSkgLSAxIGluCi0tICBpZiBtYXhfYnIgPiBuc3VicyB0aGVu Ci0tICAgIGZhaWx3aXRoICJQY3JlLnJlcGxhY2VfZmlyc3Q6IGJhY2tyZWZlcmVuY2UgZGVub3Rl cyBub25leGlzdGVudCBzdWJwYXR0ZXJuIjsKLS0gIGlmIHdpdGhfbHAgJiYgbnN1YnMgPSAwIHRo ZW4gZmFpbHdpdGggIlBjcmUucmVwbGFjZV9maXJzdDogbm8gYmFja3JlZmVyZW5jZXMiOwotLSAg dHJ5Ci0tICAgIHVuc2FmZV9wY3JlX2V4ZWMgaWZsYWdzIHJleCB+cG9zIH5zdWJqX3N0YXJ0OjAg fnN1Ymogb3ZlY3RvciBjYWxsb3V0OwotLSAgICBsZXQgcmVzX2xlbiwgdHJhbnNfbHN0ID0KLS0g ICAgICBjYWxjX3RyYW5zX2xzdCBzdWJncm91cHMyIG92ZWN0b3Igc3ViaiB0ZW1wbCBzdWJzdF9s c3QgaW4KLS0gICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDAgaW4KLS0g ICAgbGV0IGxhc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMSBpbgotLSAgICBsZXQgcmVz dCA9IFN0cmluZy5sZW5ndGggc3ViaiAtIGxhc3QgaW4KLS0gICAgbGV0IHJlcyA9IEJ5dGVzLmNy ZWF0ZSAoZmlyc3QgKyByZXNfbGVuICsgcmVzdCkgaW4KLS0gICAgYnl0ZXNfdW5zYWZlX2JsaXRf c3RyaW5nIHN1YmogMCByZXMgMCBmaXJzdDsKLS0gICAgbGV0IGNvbGwgb2ZzICh0ZW1wbCwgaXgs IGxlbikgPQotLSAgICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyB0ZW1wbCBpeCByZXMgb2Zz IGxlbjsgb2ZzICsgbGVuIGluCi0tICAgIGxldCBvZnMgPSBMaXN0LmZvbGRfbGVmdCBjb2xsIGZp cnN0IHRyYW5zX2xzdCBpbgotLSAgICBieXRlc191bnNhZmVfYmxpdF9zdHJpbmcgc3ViaiBsYXN0 IHJlcyBvZnMgcmVzdDsKLS0gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyByZXMKLS0gIHdpdGgg Tm90X2ZvdW5kIC0+IHN1YmoKLS0KLS1sZXQgcXJlcGxhY2VfZmlyc3QgPyhpZmxhZ3MgPSAwKSA/ ZmxhZ3MgPyhyZXggPSBkZWZfcmV4KSA/cGF0Ci0tICAgICAgICAgICAgICAgICAgID8ocG9zID0g MCkgPyh0ZW1wbCA9ICIiKSA/Y2FsbG91dCBzdWJqID0KLS0gIGxldCByZXggPSBtYXRjaCBwYXQg d2l0aCBTb21lIHN0ciAtPiByZWdleHAgc3RyIHwgXyAtPiByZXggaW4KLS0gIGxldCBpZmxhZ3Mg PSBtYXRjaCBmbGFncyB3aXRoIFNvbWUgZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwgXyAtPiBpZmxh Z3MgaW4KLS0gIGxldCBfLCBvdmVjdG9yID0gbWFrZV9vdmVjdG9yIHJleCBpbgotLSAgdHJ5Ci0t ICAgIHVuc2FmZV9wY3JlX2V4ZWMgaWZsYWdzIHJleCB+cG9zIH5zdWJqX3N0YXJ0OjAgfnN1Ymog b3ZlY3RvciBjYWxsb3V0OwotLSAgICBsZXQgZmlyc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0 b3IgMCBpbgotLSAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxIGluCi0t ICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHRlbXBsIGluCi0tICAgIGxldCByZXN0ID0gU3Ry aW5nLmxlbmd0aCBzdWJqIC0gbGFzdCBpbgotLSAgICBsZXQgcG9zdGZpeF9zdGFydCA9IGZpcnN0 ICsgbGVuIGluCi0tICAgIGxldCByZXMgPSBCeXRlcy5jcmVhdGUgKHBvc3RmaXhfc3RhcnQgKyBy ZXN0KSBpbgotLSAgICBieXRlc191bnNhZmVfYmxpdF9zdHJpbmcgc3ViaiAwIHJlcyAwIGZpcnN0 OwotLSAgICBieXRlc191bnNhZmVfYmxpdF9zdHJpbmcgdGVtcGwgMCByZXMgZmlyc3QgbGVuOwot LSAgICBieXRlc191bnNhZmVfYmxpdF9zdHJpbmcgc3ViaiBsYXN0IHJlcyBwb3N0Zml4X3N0YXJ0 IHJlc3Q7Ci0tICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzCi0tICB3aXRoIE5vdF9mb3Vu ZCAtPiBzdWJqCi0tCi0tbGV0IHN1YnN0aXR1dGVfc3Vic3RyaW5nc19maXJzdCA/KGlmbGFncyA9 IDApID9mbGFncyA/KHJleCA9IGRlZl9yZXgpID9wYXQKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID8ocG9zID0gMCkgP2NhbGxvdXQgfnN1YnN0IHN1YmogPQotLSAgbGV0IHJleCA9 IG1hdGNoIHBhdCB3aXRoIFNvbWUgc3RyIC0+IHJlZ2V4cCBzdHIgfCBfIC0+IHJleCBpbgotLSAg bGV0IGlmbGFncyA9IG1hdGNoIGZsYWdzIHdpdGggU29tZSBmbGFncyAtPiByZmxhZ3MgZmxhZ3Mg fCBfIC0+IGlmbGFncyBpbgotLSAgbGV0IF8sIG92ZWN0b3IgPSBtYWtlX292ZWN0b3IgcmV4IGlu Ci0tICB0cnkKLS0gICAgdW5zYWZlX3BjcmVfZXhlYyBpZmxhZ3MgcmV4IH5wb3MgfnN1Ympfc3Rh cnQ6MCB+c3ViaiBvdmVjdG9yIGNhbGxvdXQ7Ci0tICAgIGxldCBzdWJqX2xlbiA9IFN0cmluZy5s ZW5ndGggc3ViaiBpbgotLSAgICBsZXQgcHJlZml4X2xlbiA9IEFycmF5LnVuc2FmZV9nZXQgb3Zl Y3RvciAwIGluCi0tICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgaW4K LS0gICAgbGV0IHRlbXBsID0gc3Vic3QgKHN1YmosIG92ZWN0b3IpIGluCi0tICAgIGxldCBwb3N0 Zml4X2xlbiA9IHN1YmpfbGVuIC0gbGFzdCBpbgotLSAgICBsZXQgdGVtcGxfbGVuID0gU3RyaW5n Lmxlbmd0aCB0ZW1wbCBpbgotLSAgICBsZXQgcG9zdGZpeF9zdGFydCA9IHByZWZpeF9sZW4gKyB0 ZW1wbF9sZW4gaW4KLS0gICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAocG9zdGZpeF9zdGFydCAr IHBvc3RmaXhfbGVuKSBpbgotLSAgICBieXRlc191bnNhZmVfYmxpdF9zdHJpbmcgc3ViaiAwIHJl cyAwIHByZWZpeF9sZW47Ci0tICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyB0ZW1wbCAwIHJl cyBwcmVmaXhfbGVuIHRlbXBsX2xlbjsKLS0gICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN1 YmogbGFzdCByZXMgcG9zdGZpeF9zdGFydCBwb3N0Zml4X2xlbjsKLS0gICAgQnl0ZXMudW5zYWZl X3RvX3N0cmluZyByZXMKLS0gIHdpdGggTm90X2ZvdW5kIC0+IHN1YmoKLS0KLS1sZXQgc3Vic3Rp dHV0ZV9maXJzdCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcwotLSAgICAgICAgICAgICAg ICAgICAgID9jYWxsb3V0IH5zdWJzdDpzdHJfc3Vic3Qgc3ViaiA9Ci0tICBsZXQgc3Vic3QgKHN1 YmosIG92ZWN0b3IpID0KLS0gICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9y IDAgaW4KLS0gICAgbGV0IGxhc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMSBpbgotLSAg ICBzdHJfc3Vic3QgKHN0cmluZ191bnNhZmVfc3ViIHN1YmogZmlyc3QgKGxhc3QgLSBmaXJzdCkp IGluCi0tICBzdWJzdGl0dXRlX3N1YnN0cmluZ3NfZmlyc3QKLS0gICAgP2lmbGFncyA/ZmxhZ3Mg P3JleCA/cGF0ID9wb3MgP2NhbGxvdXQgfnN1YnN0IHN1YmoKLS0KLS0KLS0oKiBTcGxpdHRpbmcg KikKLS0KLS1sZXQgaW50ZXJuYWxfcHNwbGl0IGZsYWdzIHJleCBtYXggcG9zIGNhbGxvdXQgc3Vi aiA9Ci0tICBsZXQgc3Vial9sZW4gPSBTdHJpbmcubGVuZ3RoIHN1YmogaW4KLS0gIGlmIHN1Ympf bGVuID0gMCB0aGVuIFtdCi0tICBlbHNlIGlmIG1heCA9IDEgdGhlbiBbc3Vial0KLS0gIGVsc2UK LS0gICAgbGV0IHN1Ymdyb3VwczIsIG92ZWN0b3IgPSBtYWtlX292ZWN0b3IgcmV4IGluCi0tCi0t ICAgICgqIEFkZHMgY29udGVudHMgb2Ygc3ViZ3JvdXBzIHRvIHRoZSBzdHJpbmcgYWNjdW11bGF0 b3IgKikKLS0gICAgbGV0IGhhbmRsZV9zdWJncm91cHMgc3RycyA9Ci0tICAgICAgbGV0IHN0cnMg PSByZWYgc3RycyBpbgotLSAgICAgIGxldCBpID0gcmVmIDIgaW4KLS0gICAgICB3aGlsZSAhaSA8 IHN1Ymdyb3VwczIgZG8KLS0gICAgICAgIGxldCBmaXJzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3Zl Y3RvciAhaSBpbgotLSAgICAgICAgaW5jciBpOwotLSAgICAgICAgbGV0IGxhc3QgPSBBcnJheS51 bnNhZmVfZ2V0IG92ZWN0b3IgIWkgaW4KLS0gICAgICAgIGxldCBzdHIgPQotLSAgICAgICAgICBp ZiBmaXJzdCA8IDAgdGhlbiAiIgotLSAgICAgICAgICBlbHNlIHN0cmluZ191bnNhZmVfc3ViIHN1 YmogZmlyc3QgKGxhc3QgLSBmaXJzdCkgaW4KLS0gICAgICAgIHN0cnMgOj0gc3RyIDo6ICFzdHJz OyBpbmNyIGkKLS0gICAgICBkb25lOwotLSAgICAgICFzdHJzIGluCi0tCi0tICAgICgqIFBlcmZv cm1zIHRoZSByZWN1cnNpdmUgc3BsaXQgKikKLS0gICAgbGV0IHJlYyBsb29wIHN0cnMgY250IHBv cyBwcmVtYXRjaCA9Ci0tICAgICAgbGV0IGxlbiA9IHN1YmpfbGVuIC0gcG9zIGluCi0tICAgICAg aWYgbGVuIDwgMCB0aGVuIHN0cnMKLS0gICAgICBlbHNlCi0tICAgICAgICAoKiBDaGVja3MgdGVy bWluYXRpb24gZHVlIHRvIG1heCByZXN0cmljdGlvbiAqKQotLSAgICAgICAgaWYgY250ID0gMCB0 aGVuCi0tICAgICAgICAgIGlmIHByZW1hdGNoICYmCi0tICAgICAgICAgICAgdHJ5Ci0tICAgICAg ICAgICAgICB1bnNhZmVfcGNyZV9leGVjCi0tICAgICAgICAgICAgICAgIGZsYWdzIHJleCB+cG9z IH5zdWJqX3N0YXJ0OnBvcyB+c3ViaiBvdmVjdG9yIGNhbGxvdXQ7Ci0tICAgICAgICAgICAgICB0 cnVlCi0tICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2UKLS0gICAgICAgICAgdGhl bgotLSAgICAgICAgICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgaW4K LS0gICAgICAgICAgICBsZXQgc3RycyA9IGhhbmRsZV9zdWJncm91cHMgc3RycyBpbgotLSAgICAg ICAgICAgIHN0cmluZ191bnNhZmVfc3ViIHN1YmogbGFzdCAoc3Vial9sZW4gLSBsYXN0KSA6OiBz dHJzCi0tICAgICAgICAgIGVsc2Ugc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBwb3MgbGVuIDo6IHN0 cnMKLS0KLS0gICAgICAgICgqIENhbGN1bGF0ZXMgbmV4dCBhY2N1bXVsYXRvciBzdGF0ZSBmb3Ig c3BsaXR0aW5nICopCi0tICAgICAgICBlbHNlCi0tICAgICAgICAgIGlmCi0tICAgICAgICAgICAg dHJ5Ci0tICAgICAgICAgICAgICB1bnNhZmVfcGNyZV9leGVjCi0tICAgICAgICAgICAgICAgIGZs YWdzIHJleCB+cG9zIH5zdWJqX3N0YXJ0OnBvcyB+c3ViaiBvdmVjdG9yIGNhbGxvdXQ7Ci0tICAg ICAgICAgICAgICBmYWxzZQotLSAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHRydWUKLS0g ICAgICAgICAgdGhlbiBzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIHBvcyBsZW4gOjogc3RycwotLSAg ICAgICAgICBlbHNlCi0tICAgICAgICAgICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZlX2dldCBv dmVjdG9yIDAgaW4KLS0gICAgICAgICAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3Zl Y3RvciAxIGluCi0tICAgICAgICAgICAgaWYgZmlyc3QgPSBwb3MgdGhlbgotLSAgICAgICAgICAg ICAgaWYgbGFzdCA9IHBvcyB0aGVuCi0tICAgICAgICAgICAgICAgIGxldCBzdHJzID0gaWYgcHJl bWF0Y2ggdGhlbiBoYW5kbGVfc3ViZ3JvdXBzIHN0cnMgZWxzZSBzdHJzIGluCi0tICAgICAgICAg ICAgICAgIGlmIGxlbiA9IDAgdGhlbiAiIiA6OiBzdHJzCi0tICAgICAgICAgICAgICAgIGVsc2Ug aWYKLS0gICAgICAgICAgICAgICAgICB0cnkKLS0gICAgICAgICAgICAgICAgICAgIHVuc2FmZV9w Y3JlX2V4ZWMKLS0gICAgICAgICAgICAgICAgICAgICAgKGZsYWdzIGxvciAweDA0MTApIHJleCB+ cG9zIH5zdWJqX3N0YXJ0OnBvcyB+c3ViagotLSAgICAgICAgICAgICAgICAgICAgICBvdmVjdG9y IGNhbGxvdXQ7Ci0tICAgICAgICAgICAgICAgICAgICB0cnVlCi0tICAgICAgICAgICAgICAgICAg d2l0aCBOb3RfZm91bmQgLT4gZmFsc2UKLS0gICAgICAgICAgICAgICAgdGhlbgotLSAgICAgICAg ICAgICAgICAgIGxldCBuZXdfc3RycyA9IGhhbmRsZV9zdWJncm91cHMgKCIiIDo6IHN0cnMpIGlu Ci0tICAgICAgICAgICAgICAgICAgbG9vcCBuZXdfc3RycyAoY250IC0gMSkgKEFycmF5LnVuc2Fm ZV9nZXQgb3ZlY3RvciAxKSBmYWxzZQotLSAgICAgICAgICAgICAgICBlbHNlCi0tICAgICAgICAg ICAgICAgICAgbGV0IG5ld19zdHJzID0gc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBwb3MgMSA6OiBz dHJzIGluCi0tICAgICAgICAgICAgICAgICAgbG9vcCBuZXdfc3RycyAoY250IC0gMSkgKHBvcyAr IDEpIHRydWUKLS0gICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgaWYgcHJlbWF0 Y2ggdGhlbiBsb29wIChoYW5kbGVfc3ViZ3JvdXBzIHN0cnMpIGNudCBsYXN0IGZhbHNlCi0tICAg ICAgICAgICAgICAgIGVsc2UgbG9vcCAoaGFuZGxlX3N1Ymdyb3VwcyAoIiIgOjogc3RycykpIChj bnQgLSAxKSBsYXN0IGZhbHNlCi0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgbGV0 IG5ld19zdHJzID0gc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBwb3MgKGZpcnN0IC0gcG9zKSA6OiBz dHJzIGluCi0tICAgICAgICAgICAgICBsb29wIChoYW5kbGVfc3ViZ3JvdXBzIG5ld19zdHJzKSAo Y250IC0gMSkgbGFzdCBmYWxzZSBpbgotLSAgICBsb29wIFtdIChtYXggLSAxKSBwb3MgZmFsc2UK LS0KLS1sZXQgcmVjIHN0cmlwX2FsbF9lbXB0eSA9IGZ1bmN0aW9uICIiIDo6IHQgLT4gc3RyaXBf YWxsX2VtcHR5IHQgfCBsIC0+IGwKLS0KLS1leHRlcm5hbCBpc3NwYWNlIDogY2hhciAtPiBib29s ID0gInBjcmVfaXNzcGFjZV9zdHViIiBAbm9hbGxvY0AKLS0KLS1sZXQgcmVjIGZpbmRfbm9fc3Bh Y2UgaXggbGVuIHN0ciA9Ci0tICBpZiBpeCA9IGxlbiB8fCBub3QgKGlzc3BhY2UgKFN0cmluZy51 bnNhZmVfZ2V0IHN0ciBpeCkpIHRoZW4gaXgKLS0gIGVsc2UgZmluZF9ub19zcGFjZSAoaXggKyAx KSBsZW4gc3RyCi0tCi0tbGV0IHNwbGl0ID8oaWZsYWdzID0gMCkgP2ZsYWdzID9yZXggP3BhdCA/ KHBvcyA9IDApID8obWF4ID0gMCkgP2NhbGxvdXQgc3ViaiA9Ci0tICBsZXQgaWZsYWdzID0gbWF0 Y2ggZmxhZ3Mgd2l0aCBTb21lIGZsYWdzIC0+IHJmbGFncyBmbGFncyB8IF8gLT4gaWZsYWdzIGlu Ci0tICBsZXQgcmVzID0KLS0gICAgbWF0Y2ggcGF0LCByZXggd2l0aAotLSAgICB8IFNvbWUgc3Ry LCBfIC0+IGludGVybmFsX3BzcGxpdCBpZmxhZ3MgKHJlZ2V4cCBzdHIpIG1heCBwb3MgY2FsbG91 dCBzdWJqCi0tICAgIHwgXywgU29tZSByZXggLT4gaW50ZXJuYWxfcHNwbGl0IGlmbGFncyByZXgg bWF4IHBvcyBjYWxsb3V0IHN1YmoKLS0gICAgfCBfIC0+Ci0tICAgICAgICAoKiBzcGVjaWFsIGNh c2UgZm9yIFBlcmwtc3BsaXR0aW5nIHNlbWFudGljcyAqKQotLSAgICAgICAgbGV0IGxlbiA9IFN0 cmluZy5sZW5ndGggc3ViaiBpbgotLSAgICAgICAgaWYgcG9zID4gbGVuIHx8IHBvcyA8IDAgdGhl biBmYWlsd2l0aCAiUGNyZS5zcGxpdDogaWxsZWdhbCBvZmZzZXQiOwotLSAgICAgICAgbGV0IG5l d19wb3MgPSBmaW5kX25vX3NwYWNlIHBvcyBsZW4gc3ViaiBpbgotLSAgICAgICAgaW50ZXJuYWxf cHNwbGl0IGlmbGFncyBkZWZfcmV4IG1heCBuZXdfcG9zIGNhbGxvdXQgc3ViaiBpbgotLSAgTGlz dC5yZXYgKGlmIG1heCA9IDAgdGhlbiBzdHJpcF9hbGxfZW1wdHkgcmVzIGVsc2UgcmVzKQotLQot LWxldCBhc3BsaXQgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP21heCA/Y2FsbG91dCBz dWJqID0KLS0gIEFycmF5Lm9mX2xpc3QgKHNwbGl0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/ cG9zID9tYXggP2NhbGxvdXQgc3ViaikKLS0KLS0KLS0oKiBGdWxsIHNwbGl0dGluZyAqKQotLQot LXR5cGUgc3BsaXRfcmVzdWx0ID0gVGV4dCBvZiBzdHJpbmcKLS0gICAgICAgICAgICAgICAgICB8 IERlbGltIG9mIHN0cmluZwotLSAgICAgICAgICAgICAgICAgIHwgR3JvdXAgb2YgaW50ICogc3Ry aW5nCi0tICAgICAgICAgICAgICAgICAgfCBOb0dyb3VwCi0tCi0tbGV0IHJlYyBzdHJpcF9hbGxf ZW1wdHlfZnVsbCA9IGZ1bmN0aW9uCi0tICB8IERlbGltIF8gOjogcmVzdCAtPiBzdHJpcF9hbGxf ZW1wdHlfZnVsbCByZXN0Ci0tICB8IGwgLT4gbAotLQotLWxldCBmdWxsX3NwbGl0ID8oaWZsYWdz ID0gMCkgP2ZsYWdzID8ocmV4ID0gZGVmX3JleCkgP3BhdAotLSAgICAgICAgICAgICAgID8ocG9z ID0gMCkgPyhtYXggPSAwKSA/Y2FsbG91dCBzdWJqID0KLS0gIGxldCByZXggPSBtYXRjaCBwYXQg d2l0aCBTb21lIHN0ciAtPiByZWdleHAgc3RyIHwgXyAtPiByZXggaW4KLS0gIGxldCBpZmxhZ3Mg PSBtYXRjaCBmbGFncyB3aXRoIFNvbWUgZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwgXyAtPiBpZmxh Z3MgaW4KLS0gIGxldCBzdWJqX2xlbiA9IFN0cmluZy5sZW5ndGggc3ViaiBpbgotLSAgaWYgc3Vi al9sZW4gPSAwIHRoZW4gW10KLS0gIGVsc2UgaWYgbWF4ID0gMSB0aGVuIFtUZXh0IChzdWJqKV0K LS0gIGVsc2UKLS0gICAgbGV0IHN1Ymdyb3VwczIsIG92ZWN0b3IgPSBtYWtlX292ZWN0b3IgcmV4 IGluCi0tCi0tICAgICgqIEFkZHMgY29udGVudHMgb2Ygc3ViZ3JvdXBzIHRvIHRoZSBzdHJpbmcg YWNjdW11bGF0b3IgKikKLS0gICAgbGV0IGhhbmRsZV9zdWJncm91cHMgc3RycyA9Ci0tICAgICAg bGV0IHN0cnMgPSByZWYgc3RycyBpbgotLSAgICAgIGxldCBpID0gcmVmIDIgaW4KLS0gICAgICB3 aGlsZSAhaSA8IHN1Ymdyb3VwczIgZG8KLS0gICAgICAgIGxldCBncm91cF9uciA9ICFpIGxzciAx IGluCi0tICAgICAgICBsZXQgZmlyc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgIWkgaW4K LS0gICAgICAgIGluY3IgaTsKLS0gICAgICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBv dmVjdG9yICFpIGluCi0tICAgICAgICBsZXQgc3RyID0KLS0gICAgICAgICAgaWYgZmlyc3QgPCAw IHRoZW4gTm9Hcm91cAotLSAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgbGV0IGdyb3VwX3N0 ciA9IHN0cmluZ191bnNhZmVfc3ViIHN1YmogZmlyc3QgKGxhc3QgLSBmaXJzdCkgaW4KLS0gICAg ICAgICAgICBHcm91cCAoZ3JvdXBfbnIsIGdyb3VwX3N0cikgaW4KLS0gICAgICAgIHN0cnMgOj0g c3RyIDo6ICFzdHJzOyBpbmNyIGkKLS0gICAgICBkb25lOwotLSAgICAgICFzdHJzIGluCi0tCi0t ICAgICgqIFBlcmZvcm1zIHRoZSByZWN1cnNpdmUgc3BsaXQgKikKLS0gICAgbGV0IHJlYyBsb29w IHN0cnMgY250IHBvcyBwcmVtYXRjaCA9Ci0tICAgICAgbGV0IGxlbiA9IHN1YmpfbGVuIC0gcG9z IGluCi0tICAgICAgaWYgbGVuIDwgMCB0aGVuIHN0cnMKLS0gICAgICBlbHNlCi0tICAgICAgICAo KiBDaGVja3MgdGVybWluYXRpb24gZHVlIHRvIG1heCByZXN0cmljdGlvbiAqKQotLSAgICAgICAg aWYgY250ID0gMCB0aGVuCi0tICAgICAgICAgIGlmIHByZW1hdGNoICYmCi0tICAgICAgICAgICAg dHJ5Ci0tICAgICAgICAgICAgICB1bnNhZmVfcGNyZV9leGVjCi0tICAgICAgICAgICAgICAgIGlm bGFncyByZXggfnBvcyB+c3Vial9zdGFydDpwb3MgfnN1Ymogb3ZlY3RvciBjYWxsb3V0OwotLSAg ICAgICAgICAgICAgIHRydWUKLS0gICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZQot LSAgICAgICAgICB0aGVuCi0tICAgICAgICAgICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZlX2dl dCBvdmVjdG9yIDAgaW4KLS0gICAgICAgICAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9nZXQg b3ZlY3RvciAxIGluCi0tICAgICAgICAgICAgbGV0IGRlbGltID0gRGVsaW0gKHN0cmluZ191bnNh ZmVfc3ViIHN1YmogZmlyc3QgKGxhc3QgLSBmaXJzdCkpIGluCi0tICAgICAgICAgICAgVGV4dCAo c3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBsYXN0IChzdWJqX2xlbiAtIGxhc3QpKQotLSAgICAgICAg ICAgICAgOjogaGFuZGxlX3N1Ymdyb3VwcyAoZGVsaW0gOjogc3RycykKLS0gICAgICAgICAgZWxz ZQotLSAgICAgICAgICAgIGlmIGxlbiA9IDAgdGhlbiBzdHJzCi0tICAgICAgICAgICAgZWxzZSBU ZXh0IChzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIHBvcyBsZW4pIDo6IHN0cnMKLS0KLS0gICAgICAg ICgqIENhbGN1bGF0ZXMgbmV4dCBhY2N1bXVsYXRvciBzdGF0ZSBmb3Igc3BsaXR0aW5nICopCi0t ICAgICAgICBlbHNlCi0tICAgICAgICAgIGlmCi0tICAgICAgICAgICAgdHJ5Ci0tICAgICAgICAg ICAgICB1bnNhZmVfcGNyZV9leGVjCi0tICAgICAgICAgICAgICAgIGlmbGFncyByZXggfnBvcyB+ c3Vial9zdGFydDpwb3MgfnN1Ymogb3ZlY3RvciBjYWxsb3V0OwotLSAgICAgICAgICAgICAgZmFs c2UKLS0gICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlCi0tICAgICAgICAgIHRoZW4K LS0gICAgICAgICAgICBpZiBsZW4gPSAwIHRoZW4gc3RycwotLSAgICAgICAgICAgIGVsc2UgVGV4 dCAoc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBwb3MgbGVuKSA6OiBzdHJzCi0tICAgICAgICAgIGVs c2UKLS0gICAgICAgICAgICBsZXQgZmlyc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMCBp bgotLSAgICAgICAgICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgaW4K LS0gICAgICAgICAgICBpZiBmaXJzdCA9IHBvcyB0aGVuCi0tICAgICAgICAgICAgICBpZiBsYXN0 ID0gcG9zIHRoZW4KLS0gICAgICAgICAgICAgICAgaWYgbGVuID0gMCB0aGVuIGhhbmRsZV9zdWJn cm91cHMgKERlbGltICIiIDo6IHN0cnMpCi0tICAgICAgICAgICAgICAgIGVsc2UKLS0gICAgICAg ICAgICAgICAgICBsZXQgZW1wdHlfZ3JvdXBzID0gaGFuZGxlX3N1Ymdyb3VwcyBbXSBpbgotLSAg ICAgICAgICAgICAgICAgIGlmCi0tICAgICAgICAgICAgICAgICAgICB0cnkKLS0gICAgICAgICAg ICAgICAgICAgICAgdW5zYWZlX3BjcmVfZXhlYwotLSAgICAgICAgICAgICAgICAgICAgICAgIChp ZmxhZ3MgbG9yIDB4MDQxMCkgcmV4IH5wb3MgfnN1Ympfc3RhcnQ6cG9zIH5zdWJqCi0tICAgICAg ICAgICAgICAgICAgICAgICAgb3ZlY3RvciBjYWxsb3V0OwotLSAgICAgICAgICAgICAgICAgICAg ICB0cnVlCi0tICAgICAgICAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZQotLSAg ICAgICAgICAgICAgICAgIHRoZW4KLS0gICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdCA9IEFy cmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAwIGluCi0tICAgICAgICAgICAgICAgICAgICBsZXQgbGFz dCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxIGluCi0tICAgICAgICAgICAgICAgICAgICBs ZXQgZGVsaW0gPQotLSAgICAgICAgICAgICAgICAgICAgICBEZWxpbSAoc3RyaW5nX3Vuc2FmZV9z dWIgc3ViaiBmaXJzdCAobGFzdCAtIGZpcnN0KSkgaW4KLS0gICAgICAgICAgICAgICAgICAgIGxl dCBuZXdfc3RycyA9Ci0tICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9zdWJncm91cHMgKAot LSAgICAgICAgICAgICAgICAgICAgICAgIGRlbGltIDo6IChpZiBwcmVtYXRjaCB0aGVuIHN0cnMK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBlbXB0eV9ncm91cHMgQCAo RGVsaW0gIiIgOjogc3RycykpKSBpbgotLSAgICAgICAgICAgICAgICAgICAgbG9vcCBuZXdfc3Ry cyAoY250IC0gMSkgbGFzdCBmYWxzZQotLSAgICAgICAgICAgICAgICAgIGVsc2UKLS0gICAgICAg ICAgICAgICAgICAgIGxldCBuZXdfc3RycyA9Ci0tICAgICAgICAgICAgICAgICAgICAgIFRleHQg KHN0cmluZ191bnNhZmVfc3ViIHN1YmogcG9zIDEpCi0tICAgICAgICAgICAgICAgICAgICAgICAg OjogZW1wdHlfZ3JvdXBzIEAgRGVsaW0gIiIgOjogc3RycyBpbgotLSAgICAgICAgICAgICAgICAg ICAgbG9vcCBuZXdfc3RycyAoY250IC0gMSkgKHBvcyArIDEpIHRydWUKLS0gICAgICAgICAgICAg IGVsc2UKLS0gICAgICAgICAgICAgICAgICBsZXQgZGVsaW0gPQotLSAgICAgICAgICAgICAgICAg ICAgRGVsaW0gKHN0cmluZ191bnNhZmVfc3ViIHN1YmogZmlyc3QgKGxhc3QgLSBmaXJzdCkpIGlu Ci0tICAgICAgICAgICAgICAgICAgbG9vcCAoaGFuZGxlX3N1Ymdyb3VwcyAoZGVsaW0gOjogc3Ry cykpIGNudCBsYXN0IGZhbHNlCi0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgbGV0 IGRlbGltID0gRGVsaW0gKHN0cmluZ191bnNhZmVfc3ViIHN1YmogZmlyc3QgKGxhc3QgLSBmaXJz dCkpIGluCi0tICAgICAgICAgICAgICBsZXQgcHJlX3N0cnMgPQotLSAgICAgICAgICAgICAgICBU ZXh0IChzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIHBvcyAoZmlyc3QgLSBwb3MpKSA6OiBzdHJzIGlu Ci0tICAgICAgICAgICAgICBsb29wCi0tICAgICAgICAgICAgICAgIChoYW5kbGVfc3ViZ3JvdXBz IChkZWxpbSA6OiBwcmVfc3RycykpIChjbnQgLSAxKSBsYXN0IGZhbHNlIGluCi0tICAgIGxldCBy ZXMgPSBsb29wIFtdIChtYXggLSAxKSBwb3MgdHJ1ZSBpbgotLSAgICBMaXN0LnJldiAoaWYgbWF4 ID0gMCB0aGVuIHN0cmlwX2FsbF9lbXB0eV9mdWxsIHJlcyBlbHNlIHJlcykKLS0KLS0KLS0oKiBB ZGRpdGlvbmFsIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyB1c2VmdWwgaW4gY29tYmluYXRpb24gd2l0 aCB0aGlzIGxpYnJhcnkgKikKLS0KLS1sZXQgZm9yZWFjaF9saW5lID8oaWMgPSBzdGRpbikgZiA9 Ci0tICB0cnkgd2hpbGUgdHJ1ZSBkbyBmIChpbnB1dF9saW5lIGljKSBkb25lIHdpdGggRW5kX29m X2ZpbGUgLT4gKCkKLS0KLS1sZXQgZm9yZWFjaF9maWxlIGZpbGVuYW1lcyBmID0KLS0gIGxldCBk b193aXRoX2ZpbGUgZmlsZW5hbWUgPQotLSAgICBsZXQgZmlsZSA9IG9wZW5faW4gZmlsZW5hbWUg aW4KLS0gICAgdHJ5IGYgZmlsZW5hbWUgZmlsZTsgY2xvc2VfaW4gZmlsZQotLSAgICB3aXRoIGV4 biAtPiBjbG9zZV9pbiBmaWxlOyByYWlzZSBleG4gaW4KLS0gIExpc3QuaXRlciBkb193aXRoX2Zp bGUgZmlsZW5hbWVzCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL3Bj cmUubWxpIGIvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL3BjcmUubWxpCi1kZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDUwNDdiYjg2NS4uMDAwMDAwMDAwCi0tLS0gYS9idW5kbGVz L3BjcmUvcGNyZS1vY2FtbC9zcmMvcGNyZS5tbGkKLSsrKyAvZGV2L251bGwKLUBAIC0xLDkzMCAr MCwwIEBACi0tKCoKLS0gICBQQ1JFLU9DQU1MIC0gUGVybCBDb21wYXRpYmlsaXR5IFJlZ3VsYXIg RXhwcmVzc2lvbnMgZm9yIE9DYW1sCi0tCi0tICAgQ29weXJpZ2h0IChDKSAxOTk5LSAgTWFya3Vz IE1vdHRsCi0tICAgZW1haWw6IG1hcmt1cy5tb3R0bEBnbWFpbC5jb20KLS0gICBXV1c6ICAgaHR0 cDovL3d3dy5vY2FtbC5pbmZvCi0tCi0tICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotLSAgIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLS0gICBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLS0gICB2ZXJz aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLS0KLS0gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgTGVzc2Vy IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0KLS0gICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj Ci0tICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQotLSAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotLSopCi0tCi0tKCoq IFBlcmwgQ29tcGF0aWJpbGl0eSBSZWd1bGFyIEV4cHJlc3Npb25zIGZvciBPQ2FtbAotLQotLSAg ICB7ZSAlJVZFUlNJT04lJSAtIHt7OiUlUEtHX0hPTUVQQUdFJSV9aG9tZXBhZ2V9fQotLSopCi0t Ci0tCi0tKCoqIHs2IEV4Y2VwdGlvbnN9ICopCi0tCi0tdHlwZSBlcnJvciA9Ci0tICB8IFBhcnRp YWwgICgqKiBTdHJpbmcgb25seSBtYXRjaGVkIHRoZSBwYXR0ZXJuIHBhcnRpYWxseSAqKQotLSAg fCBCYWRQYXJ0aWFsICAoKiogUGF0dGVybiBjb250YWlucyBpdGVtcyB0aGF0IGNhbm5vdCBiZSB1 c2VkIHRvZ2V0aGVyCi0tICAgICAgICAgICAgICAgICAgICB3aXRoIHBhcnRpYWwgbWF0Y2hpbmcu ICopCi0tICB8IEJhZFBhdHRlcm4gb2Ygc3RyaW5nICogaW50ICAoKiogW0JhZFBhdHRlcm4gKG1z ZywgcG9zKV0gcmVndWxhcgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4 cHJlc3Npb24gaXMgbWFsZm9ybWVkLiAgVGhlIHJlYXNvbgotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGlzIGluIFttc2ddLCB0aGUgcG9zaXRpb24gb2YgdGhlCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgaW4gdGhlIHBhdHRlcm4gaW4gW3Bv c10uICopCi0tICB8IEJhZFVURjggICgqKiBVVEY4IHN0cmluZyBiZWluZyBtYXRjaGVkIGlzIGlu dmFsaWQgKikKLS0gIHwgQmFkVVRGOE9mZnNldCAgKCoqIEdldHMgcmFpc2VkIHdoZW4gYSBVVEY4 IHN0cmluZyBiZWluZyBtYXRjaGVkIHdpdGgKLS0gICAgICAgICAgICAgICAgICAgICAgIG9mZnNl dCBpcyBpbnZhbGlkLiAqKQotLSAgfCBNYXRjaExpbWl0ICAoKiogTWF4aW11bSBhbGxvd2VkIG51 bWJlciBvZiBtYXRjaCBhdHRlbXB0cyB3aXRoCi0tICAgICAgICAgICAgICAgICAgICBiYWNrdHJh Y2tpbmcgb3IgcmVjdXJzaW9uIGlzIHJlYWNoZWQgZHVyaW5nIG1hdGNoaW5nLgotLSAgICAgICAg ICAgICAgICAgICAgQUxMIEZVTkNUSU9OUyBDQUxMSU5HIFRIRSBNQVRDSElORyBFTkdJTkUgTUFZ IFJBSVNFCi0tICAgICAgICAgICAgICAgICAgICBJVCEhISAqKQotLSAgfCBSZWN1cnNpb25MaW1p dAotLSAgfCBJbnRlcm5hbEVycm9yIG9mIHN0cmluZwotLSAgICAgICgqKiBbSW50ZXJuYWxFcnJv ciBtc2ddIEMtbGlicmFyeSBleGhpYml0cyB1bmtub3duL3VuZGVmaW5lZAotLSAgICAgICAgICBi ZWhhdmlvdXIuICBUaGUgcmVhc29uIGlzIGluIFttc2ddLiAqKQotLQotLSgqKiBFeGNlcHRpb24g aW5kaWNhdGluZyBQQ1JFIGVycm9ycy4gKikKLS1leGNlcHRpb24gRXJyb3Igb2YgZXJyb3IKLS0K LS0oKiogW0JhY2t0cmFja10gdXNlZCBpbiBjYWxsb3V0IGZ1bmN0aW9ucyB0byBmb3JjZSBiYWNr dHJhY2tpbmcuICopCi0tZXhjZXB0aW9uIEJhY2t0cmFjawotLQotLSgqKiBbUmVnZXhwX29yIChw YXQsIGVycm9yKV0gZ2V0cyByYWlzZWQgZm9yIHN1Yi1wYXR0ZXJuIFtwYXRdIGJ5IFtyZWdleHBf b3JdCi0tICAgIGlmIGl0IGZhaWxlZCB0byBjb21waWxlLiAqKQotLWV4Y2VwdGlvbiBSZWdleHBf b3Igb2Ygc3RyaW5nICogZXJyb3IKLS0KLS0oKiogezYgQ29tcGlsYXRpb24gYW5kIHJ1bnRpbWUg ZmxhZ3MgYW5kIHRoZWlyIGNvbnZlcnNpb24gZnVuY3Rpb25zfSAqKQotLQotLSgqKiBJbnRlcm5h bCByZXByZXNlbnRhdGlvbiBvZiBjb21waWxhdGlvbiBmbGFncyAqKQotLXR5cGUgaWNmbGFnCi0t Ci0tKCoqIEludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHJ1bnRpbWUgZmxhZ3MgKikKLS1hbmQg IGlyZmxhZwotLQotLSgqKiBDb21waWxhdGlvbiBmbGFncyAqKQotLWFuZCBjZmxhZyA9Ci0tICBb IGBDQVNFTEVTUyAgICAgICAgKCoqIENhc2UgaW5zZW5zaXRpdmUgbWF0Y2hpbmcgKikKLS0gIHwg YE1VTFRJTElORSAgICAgICAoKiogJ14nIGFuZCAnJCcgbWF0Y2ggYmVmb3JlL2FmdGVyIG5ld2xp bmVzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICBub3QganVzdCBhdCB0aGUgYmVnaW5uaW5n L2VuZCBvZiBhIHN0cmluZyAqKQotLSAgfCBgRE9UQUxMICAgICAgICAgICgqKiAnLicgbWF0Y2hl cyBhbGwgY2hhcmFjdGVycyAobmV3bGluZXMsIHRvbykgKikKLS0gIHwgYEVYVEVOREVEICAgICAg ICAoKiogSWdub3JlcyB3aGl0ZXNwYWNlIGFuZCBQRVJMLWNvbW1lbnRzLiBCZWhhdmVzCi0tICAg ICAgICAgICAgICAgICAgICAgICAgIGxpa2UgdGhlICcveCctb3B0aW9uIGluIFBFUkwgKikKLS0g IHwgYEFOQ0hPUkVEICAgICAgICAoKiogUGF0dGVybiBtYXRjaGVzIG9ubHkgYXQgc3RhcnQgb2Yg c3RyaW5nICopCi0tICB8IGBET0xMQVJfRU5ET05MWSAgKCoqICckJyBpbiBwYXR0ZXJuIG1hdGNo ZXMgb25seSBhdCBlbmQgb2Ygc3RyaW5nICopCi0tICB8IGBFWFRSQSAgICAgICAgICAgKCoqIFJl c2VydmVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucyBvZiBQQ1JFICopCi0tICB8IGBVTkdSRUVEWSAg ICAgICAgKCoqIFF1YW50aWZpZXJzIG5vdCBncmVlZHkgYW55bW9yZSwgb25seQotLSAgICAgICAg ICAgICAgICAgICAgICAgICBpZiBmb2xsb3dlZCBieSAnPycgKikKLS0gIHwgYFVURjggICAgICAg ICAgICAoKiogVHJlYXRzIHBhdHRlcm5zIGFuZCBzdHJpbmdzIGFzIFVURjggY2hhcmFjdGVycy4g KikKLS0gIHwgYE5PX1VURjhfQ0hFQ0sgICAoKiogVHVybnMgb2ZmIHZhbGlkaXR5IGNoZWNrcyBv biBVVEY4IHN0cmluZ3MgZm9yCi0tICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmljaWVuY3kg cmVhc29ucy4gV0FSTklORzogaW52YWxpZCBVVEY4Ci0tICAgICAgICAgICAgICAgICAgICAgICAg IHN0cmluZ3MgbWF5IGNhdXNlIGEgY3Jhc2ggdGhlbiEgKikKLS0gIHwgYE5PX0FVVE9fQ0FQVFVS RSAoKiogRGlzYWJsZXMgdGhlIHVzZSBvZiBudW1iZXJlZCBjYXB0dXJpbmcgcGFyZW50aGVzZXMg KikKLS0gIHwgYEFVVE9fQ0FMTE9VVCAgICAoKiogQXV0b21hdGljYWxseSBpbnNlcnRzIGNhbGxv dXRzIHdpdGggaWQgMjU1Ci0tICAgICAgICAgICAgICAgICAgICAgICAgIGJlZm9yZSBlYWNoIHBh dHRlcm4gaXRlbSAqKQotLSAgfCBgRklSU1RMSU5FICAgICAgICgqKiBVbmFuY2hvcmVkIHBhdHRl cm5zIG11c3QgbWF0Y2ggYmVmb3JlL2F0IGZpcnN0IE5MICopCi0tICBdCi0tCi0tdmFsIGNmbGFn cyA6IGNmbGFnIGxpc3QgLT4gaWNmbGFnCi0tKCoqIFtjZmxhZ3MgY2ZsYWdfbGlzdF0gY29udmVy dHMgYSBsaXN0IG9mIGNvbXBpbGF0aW9uIGZsYWdzIHRvCi0tICAgIHRoZWlyIGludGVybmFsIHJl cHJlc2VudGF0aW9uLiAqKQotLQotLXZhbCBjZmxhZ19saXN0IDogaWNmbGFnIC0+IGNmbGFnIGxp c3QKLS0oKiogW2NmbGFnX2xpc3QgY2ZsYWdzXSBjb252ZXJ0cyBpbnRlcm5hbCByZXByZXNlbnRh dGlvbiBvZgotLSAgICBjb21waWxhdGlvbiBmbGFncyB0byBhIGxpc3QuICopCi0tCi0tKCoqIFJ1 bnRpbWUgZmxhZ3MgKikKLS10eXBlIHJmbGFnID0KLS0gIFsgYEFOQ0hPUkVEICAoKiogVHJlYXRz IHBhdHRlcm4gYXMgaWYgaXQgd2VyZSBhbmNob3JlZCAqKQotLSAgfCBgTk9UQk9MICAgICgqKiBC ZWdpbm5pbmcgb2Ygc3RyaW5nIGlzIG5vdCB0cmVhdGVkIGFzIGJlZ2lubmluZyBvZiBsaW5lICop Ci0tICB8IGBOT1RFT0wgICAgKCoqIEVuZCBvZiBzdHJpbmcgaXMgbm90IHRyZWF0ZWQgYXMgZW5k IG9mIGxpbmUgKikKLS0gIHwgYE5PVEVNUFRZICAoKiogRW1wdHkgc3RyaW5ncyBhcmUgbm90IGNv bnNpZGVyZWQgdG8gYmUgYSB2YWxpZCBtYXRjaCAqKQotLSAgfCBgUEFSVElBTCAgICgqKiBUdXJu cyBvbiBwYXJ0aWFsIG1hdGNoaW5nICopCi0tICBdCi0tCi0tdmFsIHJmbGFncyA6IHJmbGFnIGxp c3QgLT4gaXJmbGFnCi0tKCoqIFtyZmxhZ3MgcmZsYWdfbGlzdF0gY29udmVydHMgYSBsaXN0IG9m IHJ1bnRpbWUgZmxhZ3MgdG8KLS0gICAgdGhlaXIgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24uICop Ci0tCi0tdmFsIHJmbGFnX2xpc3QgOiBpcmZsYWcgLT4gcmZsYWcgbGlzdAotLSgqKiBbcmZsYWdf bGlzdCByZmxhZ3NdIGNvbnZlcnRzIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mCi0tICAgIHJ1 bnRpbWUgZmxhZ3MgdG8gYSBsaXN0LiAqKQotLQotLQotLSgqKiB7NiBJbmZvcm1hdGlvbiBvbiB0 aGUgUENSRS1jb25maWd1cmF0aW9uIChidWlsZC10aW1lIG9wdGlvbnMpfSAqKQotLQotLSgqKiBW ZXJzaW9uIGluZm9ybWF0aW9uICopCi0tdmFsIHZlcnNpb24gOiBzdHJpbmcgICgqKiBWZXJzaW9u IG9mIHRoZSBQQ1JFLUMtbGlicmFyeSAqKQotLQotLSgqKiBJbmRpY2F0ZXMgd2hldGhlciBVVEY4 LXN1cHBvcnQgaXMgZW5hYmxlZCAqKQotLXZhbCBjb25maWdfdXRmOCA6IGJvb2wKLS0KLS0oKiog Q2hhcmFjdGVyIHVzZWQgYXMgbmV3bGluZSAqKQotLXZhbCBjb25maWdfbmV3bGluZSA6IGNoYXIK LS0KLS0oKiogTnVtYmVyIG9mIGJ5dGVzIHVzZWQgZm9yIGludGVybmFsIGxpbmthZ2Ugb2YgcmVn dWxhciBleHByZXNzaW9ucyAqKQotLXZhbCBjb25maWdfbGlua19zaXplIDogaW50Ci0tCi0tKCoq IERlZmF1bHQgbGltaXQgZm9yIGNhbGxzIHRvIGludGVybmFsIG1hdGNoaW5nIGZ1bmN0aW9uICop Ci0tdmFsIGNvbmZpZ19tYXRjaF9saW1pdCA6IGludAotLQotLSgqKiBEZWZhdWx0IGxpbWl0IHJl Y3Vyc2lvbiBmb3IgY2FsbHMgdG8gaW50ZXJuYWwgbWF0Y2hpbmcgZnVuY3Rpb24gKikKLS12YWwg Y29uZmlnX21hdGNoX2xpbWl0X3JlY3Vyc2lvbiA6IGludAotLQotLSgqKiBJbmRpY2F0ZXMgdXNl IG9mIHN0YWNrIHJlY3Vyc2lvbiBpbiBtYXRjaGluZyBmdW5jdGlvbiAqKQotLXZhbCBjb25maWdf c3RhY2tyZWN1cnNlIDogYm9vbAotLQotLQotLSgqKiB7NiBJbmZvcm1hdGlvbiBvbiBwYXR0ZXJu c30gKikKLS0KLS0oKiogSW5mb3JtYXRpb24gb24gbWF0Y2hpbmcgb2YgImZpcnN0IGNoYXJzIiBp biBwYXR0ZXJucyAqKQotLXR5cGUgZmlyc3RieXRlX2luZm8gPQotLSAgWyBgQ2hhciBvZiBjaGFy ICAoKiogRml4ZWQgZmlyc3QgY2hhcmFjdGVyICopCi0tICB8IGBTdGFydF9vbmx5ICAgICgqKiBQ YXR0ZXJuIG1hdGNoZXMgYXQgYmVnaW5uaW5nIGFuZCBlbmQgb2YgbmV3bGluZXMgKikKLS0gIHwg YEFOQ0hPUkVEICAgICAgKCoqIFBhdHRlcm4gaXMgYW5jaG9yZWQgKikKLS0gIF0KLS0KLS0oKiog SW5mb3JtYXRpb24gb24gdGhlIHN0dWR5IHN0YXR1cyBvZiBwYXR0ZXJucyAqKQotLXR5cGUgc3R1 ZHlfc3RhdCA9Ci0tICBbIGBOb3Rfc3R1ZGllZCAoKiogUGF0dGVybiBoYXMgbm90IHlldCBiZWVu IHN0dWRpZWQgKikKLS0gIHwgYFN0dWRpZWQgICAgICgqKiBQYXR0ZXJuIGhhcyBiZWVuIHN0dWRp ZWQgc3VjY2Vzc2Z1bGx5ICopCi0tICB8IGBPcHRpbWFsICAgICAoKiogUGF0dGVybiBjb3VsZCBu b3QgYmUgaW1wcm92ZWQgYnkgc3R1ZHlpbmcgKikKLS0gIF0KLS0KLS10eXBlIHJlZ2V4cCAoKiog Q29tcGlsZWQgcmVndWxhciBleHByZXNzaW9ucyAqKQotLQotLSgqKiBbb3B0aW9ucyByZWdleHBd IEByZXR1cm4gY29tcGlsYXRpb24gZmxhZ3Mgb2YgW3JlZ2V4cF0uICopCi0tdmFsIG9wdGlvbnMg OiByZWdleHAgLT4gaWNmbGFnCi0tCi0tKCoqIFtzaXplIHJlZ2V4cF0gQHJldHVybiBtZW1vcnkg c2l6ZSBvZiBbcmVnZXhwXS4gKikKLS12YWwgc2l6ZSA6IHJlZ2V4cCAtPiBpbnQKLS0KLS0oKiog W3N0dWR5c2l6ZSByZWdleHBdIEByZXR1cm4gbWVtb3J5IHNpemUgb2Ygc3R1ZHkgaW5mb3JtYXRp b24gb2YgW3JlZ2V4cF0uICopCi0tdmFsIHN0dWR5c2l6ZSA6IHJlZ2V4cCAtPiBpbnQKLS0KLS0o KiogW2NhcHR1cmVjb3VudCByZWdleHBdIEByZXR1cm4gbnVtYmVyIG9mIGNhcHR1cmluZyBzdWJw YXR0ZXJucyBpbgotLSAgICBbcmVnZXhwXS4gKikKLS12YWwgY2FwdHVyZWNvdW50IDogcmVnZXhw IC0+IGludAotLQotLSgqKiBbYmFja3JlZm1heCByZWdleHBdIEByZXR1cm4gbnVtYmVyIG9mIGhp Z2hlc3QgYmFja3JlZmVyZW5jZSBpbiBbcmVnZXhwXS4gKikKLS12YWwgYmFja3JlZm1heCA6IHJl Z2V4cCAtPiBpbnQKLS0KLS0oKiogW25hbWVjb3VudCByZWdleHBdIEByZXR1cm4gbnVtYmVyIG9m IG5hbWVkIHN1YnBhdHRlcm5zIGluIFtyZWdleHBdLiAqKQotLXZhbCBuYW1lY291bnQgOiByZWdl eHAgLT4gaW50Ci0tCi0tKCoqIFtuYW1lZW50cnlzaXplIHJlZ2V4cF0gQHJldHVybiBzaXplIG9m IGxvbmdlc3QgbmFtZSBvZiBuYW1lZAotLSAgICBzdWJwYXR0ZXJucyBpbiBbcmVnZXhwXSArIDMu ICopCi0tdmFsIG5hbWVlbnRyeXNpemUgOiByZWdleHAgLT4gaW50Ci0tCi0tKCoqIFtuYW1lcyBy ZWdleF0gQHJldHVybiBhcnJheSBvZiBuYW1lcyBvZiBuYW1lZCBzdWJzdHJpbmdzIGluIFtyZWdl eHBdLiAqKQotLXZhbCBuYW1lcyA6IHJlZ2V4cCAtPiBzdHJpbmcgYXJyYXkKLS0KLS0oKiogW2Zp cnN0Ynl0ZSByZWdleHBdIEByZXR1cm4gZmlyc3RieXRlIGluZm8gb24gW3JlZ2V4cF0uICopCi0t dmFsIGZpcnN0Ynl0ZSA6IHJlZ2V4cCAtPiBmaXJzdGJ5dGVfaW5mbwotLQotLSgqKiBbZmlyc3R0 YWJsZSByZWdleHBdIEByZXR1cm4gc29tZSAyNTYtYml0ICgzMi1ieXRlKSBmaXhlZCBzZXQgdGFi bGUgaW4KLS0gICAgZm9ybSBvZiBhIHN0cmluZyBmb3IgW3JlZ2V4cF0gaWYgYXZhaWxhYmxlLCBb Tm9uZV0gb3RoZXJ3aXNlLiAqKQotLXZhbCBmaXJzdHRhYmxlIDogcmVnZXhwIC0+IHN0cmluZyBv cHRpb24KLS0KLS0oKiogW2xhc3RsaXRlcmFsIHJlZ2V4cF0gQHJldHVybiBzb21lIGxhc3QgbWF0 Y2hpbmcgY2hhcmFjdGVyIG9mIFtyZWdleHBdCi0tICAgIGlmIGF2YWlsYWJsZSwgW05vbmVdIG90 aGVyd2lzZS4gKikKLS12YWwgbGFzdGxpdGVyYWwgOiByZWdleHAgLT4gY2hhciBvcHRpb24KLS0K LS0oKiogW3N0dWR5X3N0YXQgcmVnZXhwXSBAcmV0dXJuIHN0dWR5IHN0YXR1cyBvZiBbcmVnZXhw XS4gKikKLS12YWwgc3R1ZHlfc3RhdCA6IHJlZ2V4cCAtPiBzdHVkeV9zdGF0Ci0tCi0tdmFsIGdl dF9zdHJpbmdudW1iZXIgOiByZWdleHAgLT4gc3RyaW5nIC0+IGludAotLSgqKiBbZ2V0X3N0cmlu Z251bWJlciByZXggbmFtZV0gQHJldHVybiB0aGUgaW5kZXggb2YgdGhlIG5hbWVkIHN1YnN0cmlu ZwotLSAgICBbbmFtZV0gaW4gcmVndWxhciBleHByZXNzaW9uIFtyZXhdLiBUaGlzIGluZGV4IGNh biB0aGVuIGJlIHVzZWQgd2l0aAotLSAgICBbZ2V0X3N1YnN0cmluZ10uCi0tCi0tICAgIEByYWlz ZSBJbnZhbGlkX2FyZyBpZiB0aGVyZSBpcyBubyBzdWNoIG5hbWVkIHN1YnN0cmluZy4gKikKLS0K LS12YWwgZ2V0X21hdGNoX2xpbWl0IDogcmVnZXhwIC0+IGludCBvcHRpb24KLS0oKiogW2dldF9t YXRjaF9saW1pdCByZXhdIEByZXR1cm4gc29tZSBtYXRjaCBsaW1pdCBvZiByZWd1bGFyIGV4cHJl c3Npb24KLS0gICAgW3JleF0gb3IgW05vbmVdLiAqKQotLQotLXZhbCBnZXRfbWF0Y2hfbGltaXRf cmVjdXJzaW9uIDogcmVnZXhwIC0+IGludCBvcHRpb24KLS0oKiogW2dldF9tYXRjaF9saW1pdF9y ZWN1cnNpb24gcmV4XSBAcmV0dXJuIHNvbWUgcmVjdXJzaW9uIG1hdGNoIGxpbWl0Ci0tICAgIG9m IHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBvciBbTm9uZV0uICopCi0tCi0tCi0tKCoqIHs2IENv bXBpbGF0aW9uIG9mIHBhdHRlcm5zfSAqKQotLQotLXR5cGUgY2h0YWJsZXMgKCoqIEFsdGVybmF0 aXZlIHNldCBvZiBjaGFyIHRhYmxlcyBmb3IgcGF0dGVybiBtYXRjaGluZyAqKQotLQotLXZhbCBt YWtldGFibGVzIDogdW5pdCAtPiBjaHRhYmxlcwotLSgqKiBHZW5lcmF0ZXMgbmV3IHNldCBvZiBj aGFyIHRhYmxlcyBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlLiAqKQotLQotLXZhbCByZWdleHAgOgot LSAgP3N0dWR5IDogYm9vbCAtPgotLSAgP2xpbWl0IDogaW50IC0+Ci0tICA/bGltaXRfcmVjdXJz aW9uIDogaW50IC0+Ci0tICA/aWZsYWdzIDogaWNmbGFnIC0+Ci0tICA/ZmxhZ3MgOiBjZmxhZyBs aXN0IC0+Ci0tICA/Y2h0YWJsZXMgOiBjaHRhYmxlcyAtPgotLSAgc3RyaW5nIC0+IHJlZ2V4cAot LSgqKiBbcmVnZXhwID9zdHVkeSA/bGltaXQgP2xpbWl0X3JlY3Vyc2lvbiA/aWZsYWdzID9mbGFn cyA/Y2h0YWJsZXMgcGF0dGVybl0KLS0gICAgY29tcGlsZXMgW3BhdHRlcm5dIHdpdGggW2ZsYWdz XSB3aGVuIGdpdmVuLCB3aXRoIFtpZmxhZ3NdIG90aGVyd2lzZSwgYW5kCi0tICAgIHdpdGggY2hh ciB0YWJsZXMgW2NodGFibGVzXS4gSWYgW3N0dWR5XSBpcyB0cnVlLCB0aGVuIHRoZSByZXN1bHRp bmcgcmVndWxhcgotLSAgICBleHByZXNzaW9uIHdpbGwgYmUgc3R1ZGllZC4gSWYgW2xpbWl0XSBp cyBzcGVjaWZpZWQsIHRoaXMgc2V0cyBhIGxpbWl0IHRvCi0tICAgIHRoZSBhbW91bnQgb2YgcmVj dXJzaW9uIGFuZCBiYWNrdHJhY2tpbmcgKG9ubHkgbG93ZXIgdGhhbiB0aGUgYnVpbHRpbgotLSAg ICBkZWZhdWx0ISkuIElmIHRoaXMgbGltaXQgaXMgZXhjZWVkZWQsIFtNYXRjaExpbWl0XSB3aWxs IGJlIHJhaXNlZCBkdXJpbmcKLS0gICAgbWF0Y2hpbmcuCi0tCi0tICAgIEBwYXJhbSBzdHVkeSBk ZWZhdWx0ID0gdHJ1ZQotLSAgICBAcGFyYW0gbGltaXQgZGVmYXVsdCA9IG5vIGV4dHJhIGxpbWl0 IG90aGVyIHRoYW4gZGVmYXVsdAotLSAgICBAcGFyYW0gbGltaXRfcmVjdXJzaW9uIGRlZmF1bHQg PSBubyBleHRyYSBsaW1pdF9yZWN1cnNpb24gb3RoZXIgdGhhbiBkZWZhdWx0Ci0tICAgIEBwYXJh bSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0tICAgIEBwYXJhbSBmbGFncyBkZWZh dWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gY2h0YWJsZXMgZGVmYXVsdCA9IGJ1aWx0aW4gY2hh ciB0YWJsZXMKLS0KLS0gICAgQHJldHVybiB0aGUgcmVndWxhciBleHByZXNzaW9uLgotLQotLSAg ICBGb3IgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBvbiBob3cgeW91IGNhbiBzcGVjaWZ5IFBFUkwt c3R5bGUgcmVndWxhcgotLSAgICBleHByZXNzaW9ucyAoPSBwYXR0ZXJucyksIHBsZWFzZSBjb25z dWx0IHRoZSBQQ1JFLWRvY3VtZW50YXRpb24KLS0gICAgKCJtYW4gcGNyZXBhdHRlcm4iKSBvciBQ RVJMLW1hbnVhbHMuCi0tICAgIEBzZWUgPGh0dHA6Ly93d3cucGVybC5jb20+IHd3dy5wZXJsLmNv bSAqKQotLQotLXZhbCByZWdleHBfb3IgOgotLSAgP3N0dWR5IDogYm9vbCAtPgotLSAgP2xpbWl0 IDogaW50IC0+Ci0tICA/bGltaXRfcmVjdXJzaW9uIDogaW50IC0+Ci0tICA/aWZsYWdzIDogaWNm bGFnIC0+Ci0tICA/ZmxhZ3MgOiBjZmxhZyBsaXN0IC0+Ci0tICA/Y2h0YWJsZXMgOiBjaHRhYmxl cyAtPgotLSAgc3RyaW5nIGxpc3QgLT4gcmVnZXhwCi0tKCoqIFtyZWdleHBfb3IgP3N0dWR5ID9s aW1pdCA/bGltaXRfcmVjdXJzaW9uID9pZmxhZ3MgP2ZsYWdzID9jaHRhYmxlcyBwYXR0ZXJuc10K LS0gICAgbGlrZSB7IXJlZ2V4cH0sIGJ1dCBjb21iaW5lcyBbcGF0dGVybnNdIGFzIGFsdGVybmF0 aXZlcyAob3ItcGF0dGVybnMpIGludG8KLS0gICAgb25lIHJlZ3VsYXIgZXhwcmVzc2lvbi4gKikK LS0KLS12YWwgcXVvdGUgOiBzdHJpbmcgLT4gc3RyaW5nCi0tKCoqIFtxdW90ZSBzdHJdIEByZXR1 cm4gdGhlIHF1b3RlZCBzdHJpbmcgb2YgW3N0cl0uICopCi0tCi0tCi0tKCoqIHs2IFN1YnBhdHRl cm4gZXh0cmFjdGlvbn0gKikKLS0KLS10eXBlIHN1YnN0cmluZ3MgKCoqIEluZm9ybWF0aW9uIG9u IHN1YnN0cmluZ3MgYWZ0ZXIgcGF0dGVybiBtYXRjaGluZyAqKQotLQotLXZhbCBnZXRfc3ViamVj dCA6IHN1YnN0cmluZ3MgLT4gc3RyaW5nCi0tKCoqIFtnZXRfc3ViamVjdCBzdWJzdHJpbmdzXSBA cmV0dXJuIHRoZSBzdWJqZWN0IHN0cmluZyBvZiBbc3Vic3RyaW5nc10uICopCi0tCi0tdmFsIG51 bV9vZl9zdWJzIDogc3Vic3RyaW5ncyAtPiBpbnQKLS0oKiogW251bV9vZl9zdWJzIHN1YnN0cmlu Z3NdIEByZXR1cm4gbnVtYmVyIG9mIHN0cmluZ3MgaW4gW3N1YnN0cmluZ3NdCi0tICAgICh3aG9s ZSBtYXRjaCBpbmNsdXNpdmUpLiAqKQotLQotLXZhbCBnZXRfc3Vic3RyaW5nIDogc3Vic3RyaW5n cyAtPiBpbnQgLT4gc3RyaW5nCi0tKCoqIFtnZXRfc3Vic3RyaW5nIHN1YnN0cmluZ3Mgbl0gQHJl dHVybiB0aGUgW25ddGggc3Vic3RyaW5nCi0tICAgICgwIGlzIHdob2xlIG1hdGNoKSBvZiBbc3Vi c3RyaW5nc10uCi0tCi0tICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuXSBpcyBub3Qg aW4gdGhlIHJhbmdlIG9mIHRoZSBudW1iZXIgb2YKLS0gICAgc3Vic3RyaW5ncy4KLS0gICAgQHJh aXNlIE5vdF9mb3VuZCBpZiB0aGUgY29ycmVzcG9uZGluZyBzdWJwYXR0ZXJuIGRpZCBub3QgY2Fw dHVyZQotLSAgICAgICAgICAgYSBzdWJzdHJpbmcuICopCi0tCi0tdmFsIGdldF9zdWJzdHJpbmdf b2ZzIDogc3Vic3RyaW5ncyAtPiBpbnQgLT4gaW50ICogaW50Ci0tKCoqIFtnZXRfc3Vic3RyaW5n X29mcyBzdWJzdHJpbmdzIG5dIEByZXR1cm4gdGhlIG9mZnNldCB0dXBsZSBvZiB0aGUKLS0gICAg W25ddGggc3Vic3RyaW5nIG9mIFtzdWJzdHJpbmdzXSAoMCBpcyB3aG9sZSBtYXRjaCkuCi0tCi0t ICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50IGlmIFtuXSBpcyBub3QgaW4gdGhlIHJhbmdlIG9m IHRoZSBudW1iZXIKLS0gICAgICAgICAgIG9mIHN1YnN0cmluZ3MuCi0tICAgIEByYWlzZSBOb3Rf Zm91bmQgaWYgdGhlIGNvcnJlc3BvbmRpbmcgc3VicGF0dGVybiBkaWQgbm90IGNhcHR1cmUKLS0g ICAgICAgICAgIGEgc3Vic3RyaW5nLiAqKQotLQotLXZhbCBnZXRfc3Vic3RyaW5ncyA6Ci0tICA/ ZnVsbF9tYXRjaCA6IGJvb2wgLT4KLS0gIHN1YnN0cmluZ3MgLT4gc3RyaW5nIGFycmF5Ci0tKCoq IFtnZXRfc3Vic3RyaW5ncyA/ZnVsbF9tYXRjaCBzdWJzdHJpbmdzXSBAcmV0dXJuIHRoZSBhcnJh eSBvZgotLSAgICBzdWJzdHJpbmdzIGluIFtzdWJzdHJpbmdzXS4gSXQgaW5jbHVkZXMgdGhlIGZ1 bGwgbWF0Y2ggYXQgaW5kZXggMAotLSAgICB3aGVuIFtmdWxsX21hdGNoXSBpcyBbdHJ1ZV0sIHRo ZSBjYXB0dXJlZCBzdWJzdHJpbmdzIG9ubHkgd2hlbiBpdAotLSAgICBpcyBbZmFsc2VdLiBJZiBh IHN1YnBhdHRlcm4gZGlkIG5vdCBjYXB0dXJlIGEgc3Vic3RyaW5nLCB0aGUgZW1wdHkKLS0gICAg c3RyaW5nIGlzIHJldHVybmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0aW9uIGluc3RlYWQu Ci0tCi0tICAgIEBwYXJhbSBmdWxsX21hdGNoIGRlZmF1bHQgPSB0cnVlICopCi0tCi0tdmFsIGdl dF9vcHRfc3Vic3RyaW5ncyA6Ci0tICA/ZnVsbF9tYXRjaCA6IGJvb2wgLT4KLS0gIHN1YnN0cmlu Z3MgLT4gc3RyaW5nIG9wdGlvbiBhcnJheQotLSgqKiBbZ2V0X29wdF9zdWJzdHJpbmdzID9mdWxs X21hdGNoIHN1YnN0cmluZ3NdIEByZXR1cm4gdGhlIGFycmF5IG9mCi0tICAgIG9wdGlvbmFsIHN1 YnN0cmluZ3MgaW4gW3N1YnN0cmluZ3NdLiBJdCBpbmNsdWRlcyBbU29tZSBmdWxsX21hdGNoX3N0 cl0KLS0gICAgYXQgaW5kZXggMCB3aGVuIFtmdWxsX21hdGNoXSBpcyBbdHJ1ZV0sIFtTb21lIGNh cHR1cmVkX3N1YnN0cmluZ3NdCi0tICAgIG9ubHkgd2hlbiBpdCBpcyBbZmFsc2VdLiBJZiBhIHN1 YnBhdHRlcm4gZGlkIG5vdCBjYXB0dXJlIGEgc3Vic3RyaW5nLAotLSAgICBbTm9uZV0gaXMgcmV0 dXJuZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpb24gaW5zdGVhZC4KLS0KLS0gICAgQHBh cmFtIGZ1bGxfbWF0Y2ggZGVmYXVsdCA9IHRydWUgKikKLS0KLS12YWwgZ2V0X25hbWVkX3N1YnN0 cmluZyA6IHJlZ2V4cCAtPiBzdHJpbmcgLT4gc3Vic3RyaW5ncyAtPiBzdHJpbmcKLS0oKiogW2dl dF9uYW1lZF9zdWJzdHJpbmcgcmV4IG5hbWUgc3Vic3RyaW5nc10gQHJldHVybiB0aGUgbmFtZWQg c3Vic3RyaW5nCi0tICAgIFtuYW1lXSBpbiByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0gYW5kIFtz dWJzdHJpbmdzXS4KLS0KLS0gICAgQHJhaXNlIEludmFsaWRfYXJndW1lbnQgaWYgdGhlcmUgaXMg bm8gc3VjaCBuYW1lZCBzdWJzdHJpbmcuCi0tICAgIEByYWlzZSBOb3RfZm91bmQgaWYgdGhlIGNv cnJlc3BvbmRpbmcgc3VicGF0dGVybiBkaWQgbm90IGNhcHR1cmUKLS0gICAgICAgICAgIGEgc3Vi c3RyaW5nLiAqKQotLQotLXZhbCBnZXRfbmFtZWRfc3Vic3RyaW5nX29mcyA6IHJlZ2V4cCAtPiBz dHJpbmcgLT4gc3Vic3RyaW5ncyAtPiBpbnQgKiBpbnQKLS0oKiogW2dldF9uYW1lZF9zdWJzdHJp bmdfb2ZzIHJleCBuYW1lIHN1YnN0cmluZ3NdIEByZXR1cm4gdGhlIG9mZnNldAotLSAgICB0dXBs ZSBvZiB0aGUgbmFtZWQgc3Vic3RyaW5nIFtuYW1lXSBpbiByZWd1bGFyIGV4cHJlc3Npb24gW3Jl eF0gYW5kCi0tICAgIFtzdWJzdHJpbmdzXS4KLS0KLS0gICAgQHJhaXNlIEludmFsaWRfYXJndW1l bnQgaWYgdGhlcmUgaXMgbm8gc3VjaCBuYW1lZCBzdWJzdHJpbmcuCi0tICAgIEByYWlzZSBOb3Rf Zm91bmQgaWYgdGhlIGNvcnJlc3BvbmRpbmcgc3VicGF0dGVybiBkaWQgbm90IGNhcHR1cmUKLS0g ICAgICAgICAgIGEgc3Vic3RyaW5nLiAqKQotLQotLQotLSgqKiB7NiBDYWxsb3V0c30gKikKLS0K LS10eXBlIGNhbGxvdXRfZGF0YSA9Ci0tICB7Ci0tICAgIGNhbGxvdXRfbnVtYmVyIDogaW50OyAo KiogQ2FsbG91dCBudW1iZXIgKikKLS0gICAgc3Vic3RyaW5ncyA6IHN1YnN0cmluZ3M7ICgqKiBT dWJzdHJpbmdzIG1hdGNoZWQgc28gZmFyICopCi0tICAgIHN0YXJ0X21hdGNoIDogaW50OyAgKCoq IFN1YmplY3Qgc3RhcnQgb2Zmc2V0IG9mIGN1cnJlbnQgbWF0Y2ggYXR0ZW1wdCAqKQotLSAgICBj dXJyZW50X3Bvc2l0aW9uIDogaW50OyAgKCoqIFN1YmplY3Qgb2Zmc2V0IG9mIGN1cnJlbnQgbWF0 Y2ggcG9pbnRlciAqKQotLSAgICBjYXB0dXJlX3RvcCA6IGludDsgICgqKiBOdW1iZXIgb2YgdGhl IGhpZ2hlc3QgY2FwdHVyZWQgc3Vic3RyaW5nIHNvIGZhciAqKQotLSAgICBjYXB0dXJlX2xhc3Qg OiBpbnQ7ICAoKiogTnVtYmVyIG9mIHRoZSBtb3N0IHJlY2VudGx5IGNhcHR1cmVkIHN1YnN0cmlu ZyAqKQotLSAgICBwYXR0ZXJuX3Bvc2l0aW9uIDogaW50OyAgKCoqIE9mZnNldCBvZiBuZXh0IG1h dGNoIGl0ZW0gaW4gcGF0dGVybiBzdHJpbmcgKikKLS0gICAgbmV4dF9pdGVtX2xlbmd0aCA6IGlu dDsgICgqKiBMZW5ndGggb2YgbmV4dCBtYXRjaCBpdGVtIGluIHBhdHRlcm4gc3RyaW5nICopCi0t ICB9Ci0tCi0tKCoqIFR5cGUgb2YgY2FsbG91dCBmdW5jdGlvbnMgKikKLS10eXBlIGNhbGxvdXQg PSBjYWxsb3V0X2RhdGEgLT4gdW5pdAotLSgqKiBDYWxsb3V0cyBhcmUgcmVmZXJyZWQgdG8gaW4g cGF0dGVybnMgYXMgIig/Q24pIiB3aGVyZSAibiIgaXMgYQotLSAgICBbY2FsbG91dF9udW1iZXJd IHJhbmdpbmcgZnJvbSAwIHRvIDI1NS4gIFN1YnN0cmluZ3MgY2FwdHVyZWQgc28gZmFyCi0tICAg IGFyZSBhY2Nlc3NpYmxlIGFzIHVzdWFsIHZpYSBbc3Vic3RyaW5nc10uICBZb3Ugd2lsbCBoYXZl IHRvIGNvbnNpZGVyCi0tICAgIFtjYXB0dXJlX3RvcF0gYW5kIFtjYXB0dXJlX2xhc3RdIHRvIGtu b3cgYWJvdXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YKLS0gICAgdmFsaWQgc3Vic3RyaW5ncy4KLS0K LS0gICAgQnkgcmFpc2luZyBleGNlcHRpb24gW0JhY2t0cmFja10gd2l0aGluIGEgY2FsbG91dCBm dW5jdGlvbiwgdGhlIHVzZXIKLS0gICAgY2FuIGZvcmNlIHRoZSBwYXR0ZXJuIG1hdGNoaW5nIGVu Z2luZSB0byBiYWNrdHJhY2sgdG8gb3RoZXIgcG9zc2libGUKLS0gICAgc29sdXRpb25zLiAgT3Ro ZXIgZXhjZXB0aW9ucyB3aWxsIHRlcm1pbmF0ZSBtYXRjaGluZyBpbW1lZGlhdGVseQotLSAgICBh bmQgcmV0dXJuIGNvbnRyb2wgdG8gT0NhbWwuCi0tKikKLS0KLS0KLS0oKiogezYgTWF0Y2hpbmcg b2YgcGF0dGVybnMgYW5kIHN1YnBhdHRlcm4gZXh0cmFjdGlvbn0gKikKLS0KLS12YWwgcGNyZV9l eGVjIDoKLS0gID9pZmxhZ3MgOiBpcmZsYWcgLT4KLS0gID9mbGFncyA6IHJmbGFnIGxpc3QgLT4K LS0gID9yZXggOiByZWdleHAgLT4KLS0gID9wYXQgOiBzdHJpbmcgLT4KLS0gID9wb3MgOiBpbnQg LT4KLS0gID9jYWxsb3V0IDogY2FsbG91dCAtPgotLSAgc3RyaW5nIC0+IGludCBhcnJheQotLSgq KiBbcGNyZV9leGVjID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IHN1Ympd IEByZXR1cm4gYW4KLS0gICAgYXJyYXkgb2Ygb2Zmc2V0cyB0aGF0IGRlc2NyaWJlIHRoZSBwb3Np dGlvbiBvZiBtYXRjaGVkIHN1YnBhdHRlcm5zIGluCi0tICAgIHRoZSBzdHJpbmcgW3N1YmpdIHN0 YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdIHdpdGggcGF0dGVybiBbcGF0XSB3aGVuCi0tICAgIGdp dmVuLCByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0gb3RoZXJ3aXNlLiBUaGUgYXJyYXkgYWxzbyBj b250YWlucwotLSAgICBhZGRpdGlvbmFsIHdvcmtzcGFjZSBuZWVkZWQgYnkgdGhlIG1hdGNoIGVu Z2luZS4gVXNlcyBbZmxhZ3NdIHdoZW4KLS0gICAgZ2l2ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZs YWdzXSBvdGhlcndpc2UuIENhbGxvdXRzIGFyZSBoYW5kbGVkIGJ5Ci0tICAgIFtjYWxsb3V0XS4K LS0KLS0gICAgQHBhcmFtIGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLS0gICAgQHBh cmFtIGZsYWdzIGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSByZXggZGVmYXVsdCA9IG1h dGNoZXMgd2hpdGVzcGFjZQotLSAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0tICAg IEBwYXJhbSBwb3MgZGVmYXVsdCA9IDAKLS0gICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGln bm9yZSBjYWxsb3V0cwotLQotLSAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIHBhdHRlcm4gZG9lcyBu b3QgbWF0Y2guICopCi0tCi0tdmFsIGV4ZWMgOgotLSAgP2lmbGFncyA6IGlyZmxhZyAtPgotLSAg P2ZsYWdzIDogcmZsYWcgbGlzdCAtPgotLSAgP3JleCA6IHJlZ2V4cCAtPgotLSAgP3BhdCA6IHN0 cmluZyAtPgotLSAgP3BvcyA6IGludCAtPgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0tICBz dHJpbmcgLT4gc3Vic3RyaW5ncwotLSgqKiBbZXhlYyA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQg P3BvcyA/Y2FsbG91dCBzdWJqXSBAcmV0dXJuIHN1YnN0cmluZwotLSAgICBpbmZvcm1hdGlvbiBv biBzdHJpbmcgW3N1YmpdIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdIHdpdGggcGF0dGVybgot LSAgICBbcGF0XSB3aGVuIGdpdmVuLCByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0gb3RoZXJ3aXNl LiBVc2VzIFtmbGFnc10KLS0gICAgd2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3Nd IG90aGVyd2lzZS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQKLS0gICAgYnkgW2NhbGxvdXRdLgotLQot LSAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotLSAgICBAcGFyYW0g ZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hl cyB3aGl0ZXNwYWNlCi0tICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBh cmFtIHBvcyBkZWZhdWx0ID0gMAotLSAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3Jl IGNhbGxvdXRzCi0tCi0tICAgIEByYWlzZSBOb3RfZm91bmQgaWYgcGF0dGVybiBkb2VzIG5vdCBt YXRjaC4gKikKLS0KLS12YWwgZXhlY19hbGwgOgotLSAgP2lmbGFncyA6IGlyZmxhZyAtPgotLSAg P2ZsYWdzIDogcmZsYWcgbGlzdCAtPgotLSAgP3JleCA6IHJlZ2V4cCAtPgotLSAgP3BhdCA6IHN0 cmluZyAtPgotLSAgP3BvcyA6IGludCAtPgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0tICBz dHJpbmcgLT4gc3Vic3RyaW5ncyBhcnJheQotLSgqKiBbZXhlY19hbGwgP2lmbGFncyA/ZmxhZ3Mg P3JleCA/cGF0ID9wb3MgP2NhbGxvdXQgc3Vial0gQHJldHVybgotLSAgICBhbiBhcnJheSBvZiBz dWJzdHJpbmcgaW5mb3JtYXRpb24gb2YgYWxsIG1hdGNoaW5nIHN1YnN0cmluZ3MgaW4KLS0gICAg c3RyaW5nIFtzdWJqXSBzdGFydGluZyBhdCBwb3NpdGlvbiBbcG9zXSB3aXRoIHBhdHRlcm4gW3Bh dF0gd2hlbgotLSAgICBnaXZlbiwgcmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZS4g VXNlcyBbZmxhZ3NdIHdoZW4gZ2l2ZW4sCi0tICAgIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBv dGhlcndpc2UuIENhbGxvdXRzIGFyZSBoYW5kbGVkIGJ5IFtjYWxsb3V0XS4KLS0KLS0gICAgQHBh cmFtIGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLS0gICAgQHBhcmFtIGZsYWdzIGRl ZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVz cGFjZQotLSAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSBwb3Mg ZGVmYXVsdCA9IDAKLS0gICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0 cwotLQotLSAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIHBhdHRlcm4gZG9lcyBub3QgbWF0Y2guICop Ci0tCi0tdmFsIG5leHRfbWF0Y2ggOgotLSAgP2lmbGFncyA6IGlyZmxhZyAtPgotLSAgP2ZsYWdz IDogcmZsYWcgbGlzdCAtPgotLSAgP3JleCA6IHJlZ2V4cCAtPgotLSAgP3BhdCA6IHN0cmluZyAt PgotLSAgP3BvcyA6IGludCAtPgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0tICBzdWJzdHJp bmdzIC0+IHN1YnN0cmluZ3MKLS0oKiogW25leHRfbWF0Y2ggP2lmbGFncyA/ZmxhZ3MgP3JleCA/ cGF0ID9wb3MgP2NhbGxvdXQgc3Vic3Ryc10gQHJldHVybgotLSAgICBzdWJzdHJpbmcgaW5mb3Jt YXRpb24gb24gdGhlIG1hdGNoIHRoYXQgZm9sbG93cyBvbiB0aGUgbGFzdAotLSAgICBtYXRjaCBk ZW5vdGVkIGJ5IFtzdWJzdHJzXSwganVtcGluZyBvdmVyIFtwb3NdIGNoYXJhY3RlcnMgKGFsc28K LS0gICAgYmFja3dhcmRzISksIHVzaW5nIHBhdHRlcm4gW3BhdF0gd2hlbiBnaXZlbiwgcmVndWxh ciBleHByZXNzaW9uCi0tICAgIFtyZXhdIG90aGVyd2lzZS4gVXNlcyBbZmxhZ3NdIHdoZW4gZ2l2 ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXQotLSAgICBvdGhlcndpc2UuIENhbGxvdXRzIGFy ZSBoYW5kbGVkIGJ5IFtjYWxsb3V0XS4KLS0KLS0gICAgQHBhcmFtIGlmbGFncyBkZWZhdWx0ID0g bm8gZXh0cmEgZmxhZ3MKLS0gICAgQHBhcmFtIGZsYWdzIGRlZmF1bHQgPSBpZ25vcmVkCi0tICAg IEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVzcGFjZQotLSAgICBAcGFyYW0gcGF0 IGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSBwb3MgZGVmYXVsdCA9IDAKLS0gICAgQHBh cmFtIGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0cwotLQotLSAgICBAcmFpc2UgTm90 X2ZvdW5kIGlmIHBhdHRlcm4gZG9lcyBub3QgbWF0Y2guCi0tICAgIEByYWlzZSBJbnZhbGlkX2Fy ZyBpZiBbcG9zXSBsZXQgbWF0Y2hpbmcgc3RhcnQgb3V0c2lkZSBvZgotLSAgICAgICAgICAgdGhl IHN1YmplY3Qgc3RyaW5nLiAqKQotLQotLXZhbCBleHRyYWN0IDoKLS0gID9pZmxhZ3MgOiBpcmZs YWcgLT4KLS0gID9mbGFncyA6IHJmbGFnIGxpc3QgLT4KLS0gID9yZXggOiByZWdleHAgLT4KLS0g ID9wYXQgOiBzdHJpbmcgLT4KLS0gID9wb3MgOiBpbnQgLT4KLS0gID9mdWxsX21hdGNoIDogYm9v bCAtPgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0tICBzdHJpbmcgLT4gc3RyaW5nIGFycmF5 Ci0tKCoqIFtleHRyYWN0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9mdWxsX21hdGNo ID9jYWxsb3V0IHN1YmpdCi0tICAgIEByZXR1cm4gdGhlIGFycmF5IG9mIHN1YnN0cmluZ3MgdGhh dCBtYXRjaCBbc3Vial0gc3RhcnRpbmcgYXQKLS0gICAgcG9zaXRpb24gW3Bvc10sIHVzaW5nIHBh dHRlcm4gW3BhdF0gd2hlbiBnaXZlbiwgcmVndWxhciBleHByZXNzaW9uCi0tICAgIFtyZXhdIG90 aGVyd2lzZS4gVXNlcyBbZmxhZ3NdIHdoZW4gZ2l2ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZsYWdz XQotLSAgICBvdGhlcndpc2UuIEl0IGluY2x1ZGVzIHRoZSBmdWxsIG1hdGNoIGF0IGluZGV4IDAg d2hlbiBbZnVsbF9tYXRjaF0gaXMKLS0gICAgW3RydWVdLCB0aGUgY2FwdHVyZWQgc3Vic3RyaW5n cyBvbmx5IHdoZW4gaXQgaXMgW2ZhbHNlXS4gQ2FsbG91dHMgYXJlCi0tICAgIGhhbmRsZWQgYnkg W2NhbGxvdXRdLiAgSWYgYSBzdWJwYXR0ZXJuIGRpZCBub3QgY2FwdHVyZSBhIHN1YnN0cmluZywK LS0gICAgdGhlIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBw b3NpdGlvbiBpbnN0ZWFkLgotLQotLSAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRy YSBmbGFncwotLSAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFt IHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0tICAgIEBwYXJhbSBwYXQgZGVmYXVs dCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAotLSAgICBAcGFyYW0gZnVs bF9tYXRjaCBkZWZhdWx0ID0gdHJ1ZQotLSAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdu b3JlIGNhbGxvdXRzCi0tCi0tICAgIEByYWlzZSBOb3RfZm91bmQgaWYgcGF0dGVybiBkb2VzIG5v dCBtYXRjaC4gKikKLS0KLS12YWwgZXh0cmFjdF9vcHQgOgotLSAgP2lmbGFncyA6IGlyZmxhZyAt PgotLSAgP2ZsYWdzIDogcmZsYWcgbGlzdCAtPgotLSAgP3JleCA6IHJlZ2V4cCAtPgotLSAgP3Bh dCA6IHN0cmluZyAtPgotLSAgP3BvcyA6IGludCAtPgotLSAgP2Z1bGxfbWF0Y2ggOiBib29sIC0+ Ci0tICA/Y2FsbG91dCA6IGNhbGxvdXQgLT4KLS0gIHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uIGFy cmF5Ci0tKCoqIFtleHRyYWN0X29wdCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/ZnVs bF9tYXRjaCA/Y2FsbG91dCBzdWJqXQotLSAgICBAcmV0dXJuIHRoZSBhcnJheSBvZiBvcHRpb25h bCBzdWJzdHJpbmdzIHRoYXQgbWF0Y2ggW3N1YmpdIHN0YXJ0aW5nCi0tICAgIGF0IHBvc2l0aW9u IFtwb3NdLCB1c2luZyBwYXR0ZXJuIFtwYXRdIHdoZW4gZ2l2ZW4sIHJlZ3VsYXIgZXhwcmVzc2lv bgotLSAgICBbcmV4XSBvdGhlcndpc2UuIFVzZXMgW2ZsYWdzXSB3aGVuIGdpdmVuLCB0aGUgcHJl Y29tcGlsZWQgW2lmbGFnc10KLS0gICAgb3RoZXJ3aXNlLiBJdCBpbmNsdWRlcyBbU29tZSBmdWxs X21hdGNoX3N0cl0gYXQgaW5kZXggMCB3aGVuCi0tICAgIFtmdWxsX21hdGNoXSBpcyBbdHJ1ZV0s IFtTb21lIGNhcHR1cmVkLXN1YnN0cmluZ3NdIG9ubHkgd2hlbiBpdCBpcwotLSAgICBbZmFsc2Vd LiBDYWxsb3V0cyBhcmUgaGFuZGxlZCBieSBbY2FsbG91dF0uICBJZiBhIHN1YnBhdHRlcm4gZGlk Ci0tICAgIG5vdCBjYXB0dXJlIGEgc3Vic3RyaW5nLCBbTm9uZV0gaXMgcmV0dXJuZWQgaW4gdGhl IGNvcnJlc3BvbmRpbmcKLS0gICAgcG9zaXRpb24gaW5zdGVhZC4KLS0KLS0gICAgQHBhcmFtIGlm bGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLS0gICAgQHBhcmFtIGZsYWdzIGRlZmF1bHQg PSBpZ25vcmVkCi0tICAgIEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVzcGFjZQot LSAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSBwb3MgZGVmYXVs dCA9IDAKLS0gICAgQHBhcmFtIGZ1bGxfbWF0Y2ggZGVmYXVsdCA9IHRydWUKLS0gICAgQHBhcmFt IGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0cwotLQotLSAgICBAcmFpc2UgTm90X2Zv dW5kIGlmIHBhdHRlcm4gZG9lcyBub3QgbWF0Y2guICopCi0tCi0tdmFsIGV4dHJhY3RfYWxsIDoK LS0gID9pZmxhZ3MgOiBpcmZsYWcgLT4KLS0gID9mbGFncyA6IHJmbGFnIGxpc3QgLT4KLS0gID9y ZXggOiByZWdleHAgLT4KLS0gID9wYXQgOiBzdHJpbmcgLT4KLS0gID9wb3MgOiBpbnQgLT4KLS0g ID9mdWxsX21hdGNoIDogYm9vbCAtPgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0tICBzdHJp bmcgLT4gc3RyaW5nIGFycmF5IGFycmF5Ci0tKCoqIFtleHRyYWN0X2FsbCA/aWZsYWdzID9mbGFn cyA/cmV4ID9wYXQgP3BvcyA/ZnVsbF9tYXRjaCA/Y2FsbG91dCBzdWJqXQotLSAgICBAcmV0dXJu IGFuIGFycmF5IG9mIGFycmF5cyBvZiBhbGwgbWF0Y2hpbmcgc3Vic3RyaW5ncyB0aGF0IG1hdGNo Ci0tICAgIFtzdWJqXSBzdGFydGluZyBhdCBwb3NpdGlvbiBbcG9zXSwgdXNpbmcgcGF0dGVybiBb cGF0XSB3aGVuIGdpdmVuLAotLSAgICByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0gb3RoZXJ3aXNl LiBVc2VzIFtmbGFnc10gd2hlbiBnaXZlbiwgdGhlCi0tICAgIHByZWNvbXBpbGVkIFtpZmxhZ3Nd IG90aGVyd2lzZS4gSXQgaW5jbHVkZXMgdGhlIGZ1bGwgbWF0Y2ggYXQgaW5kZXgKLS0gICAgMCBv ZiB0aGUgZXh0cmFjdGVkIHN0cmluZyBhcnJheXMgd2hlbiBbZnVsbF9tYXRjaF0gaXMgW3RydWVd LCB0aGUKLS0gICAgY2FwdHVyZWQgc3Vic3RyaW5ncyBvbmx5IHdoZW4gaXQgaXMgW2ZhbHNlXS4g Q2FsbG91dHMgYXJlIGhhbmRsZWQgYnkKLS0gICAgW2NhbGxvdXRdLgotLQotLSAgICBAcGFyYW0g aWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotLSAgICBAcGFyYW0gZmxhZ3MgZGVmYXVs dCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNl Ci0tICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHBvcyBkZWZh dWx0ID0gMAotLSAgICBAcGFyYW0gZnVsbF9tYXRjaCBkZWZhdWx0ID0gdHJ1ZQotLSAgICBAcGFy YW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzCi0tCi0tICAgIEByYWlzZSBOb3Rf Zm91bmQgaWYgcGF0dGVybiBkb2VzIG5vdCBtYXRjaC4gKikKLS0KLS12YWwgZXh0cmFjdF9hbGxf b3B0IDoKLS0gID9pZmxhZ3MgOiBpcmZsYWcgLT4KLS0gID9mbGFncyA6IHJmbGFnIGxpc3QgLT4K LS0gID9yZXggOiByZWdleHAgLT4KLS0gID9wYXQgOiBzdHJpbmcgLT4KLS0gID9wb3MgOiBpbnQg LT4KLS0gID9mdWxsX21hdGNoIDogYm9vbCAtPgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0t ICBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbiBhcnJheSBhcnJheQotLSgqKiBbZXh0cmFjdF9hbGxf b3B0Ci0tICAgICAgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2Z1bGxfbWF0Y2ggP2Nh bGxvdXQgc3Vial0KLS0gICAgQHJldHVybiBhbiBhcnJheSBvZiBhcnJheXMgb2YgYWxsIG9wdGlv bmFsIG1hdGNoaW5nIHN1YnN0cmluZ3MgdGhhdAotLSAgICBtYXRjaCBbc3Vial0gc3RhcnRpbmcg YXQgcG9zaXRpb24gW3Bvc10sIHVzaW5nIHBhdHRlcm4gW3BhdF0gd2hlbgotLSAgICBnaXZlbiwg cmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZS4gVXNlcyBbZmxhZ3NdIHdoZW4gZ2l2 ZW4sCi0tICAgIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBvdGhlcndpc2UuIEl0IGluY2x1ZGVz IFtTb21lIGZ1bGxfbWF0Y2hfc3RyXQotLSAgICBhdCBpbmRleCAwIG9mIHRoZSBleHRyYWN0ZWQg c3RyaW5nIGFycmF5cyB3aGVuIFtmdWxsX21hdGNoXSBpcyBbdHJ1ZV0sCi0tICAgIFtTb21lIGNh cHR1cmVkX3N1YnN0cmluZ3NdIG9ubHkgd2hlbiBpdCBpcyBbZmFsc2VdLiBDYWxsb3V0cyBhcmUK LS0gICAgaGFuZGxlZCBieSBbY2FsbG91dF0uICBJZiBhIHN1YnBhdHRlcm4gZGlkIG5vdCBjYXB0 dXJlIGEgc3Vic3RyaW5nLAotLSAgICBbTm9uZV0gaXMgcmV0dXJuZWQgaW4gdGhlIGNvcnJlc3Bv bmRpbmcgcG9zaXRpb24gaW5zdGVhZC4KLS0KLS0gICAgQHBhcmFtIGlmbGFncyBkZWZhdWx0ID0g bm8gZXh0cmEgZmxhZ3MKLS0gICAgQHBhcmFtIGZsYWdzIGRlZmF1bHQgPSBpZ25vcmVkCi0tICAg IEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVzcGFjZQotLSAgICBAcGFyYW0gcGF0 IGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSBwb3MgZGVmYXVsdCA9IDAKLS0gICAgQHBh cmFtIGZ1bGxfbWF0Y2ggZGVmYXVsdCA9IHRydWUKLS0gICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVs dCA9IGlnbm9yZSBjYWxsb3V0cwotLQotLSAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIHBhdHRlcm4g ZG9lcyBub3QgbWF0Y2guICopCi0tCi0tdmFsIHBtYXRjaCA6Ci0tICA/aWZsYWdzIDogaXJmbGFn IC0+Ci0tICA/ZmxhZ3MgOiByZmxhZyBsaXN0IC0+Ci0tICA/cmV4IDogcmVnZXhwIC0+Ci0tICA/ cGF0IDogc3RyaW5nIC0+Ci0tICA/cG9zIDogaW50IC0+Ci0tICA/Y2FsbG91dCA6IGNhbGxvdXQg LT4KLS0gIHN0cmluZyAtPiBib29sCi0tKCoqIFtwbWF0Y2ggP2lmbGFncyA/ZmxhZ3MgP3JleCA/ cGF0ID9wb3MgP2NhbGxvdXQgc3Vial0gQHJldHVybiBbdHJ1ZV0KLS0gICAgaWYgW3N1YmpdIGlz IG1hdGNoZWQgYnkgcGF0dGVybiBbcGF0XSB3aGVuIGdpdmVuLCByZWd1bGFyIGV4cHJlc3Npb24K LS0gICAgW3JleF0gb3RoZXJ3aXNlLCBzdGFydGluZyBhdCBwb3NpdGlvbiBbcG9zXS4gVXNlcyBb ZmxhZ3NdIHdoZW4gZ2l2ZW4sCi0tICAgIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBvdGhlcndp c2UuIENhbGxvdXRzIGFyZSBoYW5kbGVkIGJ5IFtjYWxsb3V0XS4KLS0KLS0gICAgQHBhcmFtIGlm bGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLS0gICAgQHBhcmFtIGZsYWdzIGRlZmF1bHQg PSBpZ25vcmVkCi0tICAgIEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVzcGFjZQot LSAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSBwb3MgZGVmYXVs dCA9IDAKLS0gICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0cyAqKQot LQotLQotLSgqKiB7NiBTdHJpbmcgc3Vic3RpdHV0aW9ufSAqKQotLQotLSgqKiBJbmZvcm1hdGlv biBvbiBzdWJzdGl0dXRpb24gcGF0dGVybnMgKikKLS10eXBlIHN1YnN0aXR1dGlvbgotLQotLXZh bCBzdWJzdCA6IHN0cmluZyAtPiBzdWJzdGl0dXRpb24KLS0oKiogW3N1YnN0IHN0cl0gY29udmVy dHMgdGhlIHN0cmluZyBbc3RyXSByZXByZXNlbnRpbmcgYQotLSAgICBzdWJzdGl0dXRpb24gcGF0 dGVybiB0byB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24KLS0KLS0gICAgVGhlIGNvbnRlbnRz IG9mIHRoZSBzdWJzdGl0dXRpb24gc3RyaW5nIFtzdHJdIGNhbiBiZSBub3JtYWwgdGV4dAotLSAg ICBtaXhlZCB3aXRoIGFueSBvZiB0aGUgZm9sbG93aW5nIChtb3N0bHkgYXMgaW4gUEVSTCk6Ci0t Ci0tICAgIC0ge2UgJFxbMC05XF0rfSAgLSBhICIkIiBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBh biBhcmJpdHJhcnkgbnVtYmVyLgotLSAgICAgICAgICAgICAgICAgICAgICAgIiQwIiBzdGFuZHMg Zm9yIHRoZSBuYW1lIG9mIHRoZSBleGVjdXRhYmxlLAotLSAgICAgICAgICAgICAgICAgICAgICAg YW55IG90aGVyIG51bWJlciBmb3IgdGhlIG4tdGggYmFja3JlZmVyZW5jZS4KLS0gICAgLSB7ZSAk Jn0gICAgICAgICAtIHRoZSB3aG9sZSBtYXRjaGVkIHBhdHRlcm4KLS0gICAgLSB7ZSAkYH0gICAg ICAgICAtIHRoZSB0ZXh0IGJlZm9yZSB0aGUgbWF0Y2gKLS0gICAgLSB7ZSAkJ30gICAgICAgICAt IHRoZSB0ZXh0IGFmdGVyIHRoZSBtYXRjaAotLSAgICAtIHtlICQrfSAgICAgICAgIC0gdGhlIGxh c3QgZ3JvdXAgdGhhdCBtYXRjaGVkCi0tICAgIC0ge2UgJCR9ICAgICAgICAgLSBhIHNpbmdsZSAi JCIKLS0gICAgLSB7ZSAkIX0gICAgICAgICAtIGRlbGltaXRlciB3aGljaCBkb2VzIG5vdCBhcHBl YXIgaW4gdGhlIHN1YnN0aXR1dGlvbi4KLS0gICAgICAgICAgICAgICAgICAgICAgIENhbiBiZSB1 c2VkIHRvIHBhcnQgIiRbMC05XSsiIGZyb20gYW4gaW1tZWRpYXRlbHkKLS0gICAgICAgICAgICAg ICAgICAgICAgIGZvbGxvd2luZyBvdGhlciBudW1iZXIuICopCi0tCi0tdmFsIHJlcGxhY2UgOgot LSAgP2lmbGFncyA6IGlyZmxhZyAtPgotLSAgP2ZsYWdzIDogcmZsYWcgbGlzdCAtPgotLSAgP3Jl eCA6IHJlZ2V4cCAtPgotLSAgP3BhdCA6IHN0cmluZyAtPgotLSAgP3BvcyA6IGludCAtPgotLSAg P2l0ZW1wbCA6IHN1YnN0aXR1dGlvbiAtPgotLSAgP3RlbXBsIDogc3RyaW5nIC0+Ci0tICA/Y2Fs bG91dCA6IGNhbGxvdXQgLT4KLS0gIHN0cmluZyAtPiBzdHJpbmcKLS0oKiogW3JlcGxhY2UgP2lm bGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2l0ZW1wbCA/dGVtcGwgP2NhbGxvdXQgc3Vial0K LS0gICAgcmVwbGFjZXMgYWxsIHN1YnN0cmluZ3Mgb2YgW3N1YmpdIG1hdGNoaW5nIHBhdHRlcm4g W3BhdF0gd2hlbiBnaXZlbiwKLS0gICAgcmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lz ZSwgc3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10gd2l0aAotLSAgICB0aGUgc3Vic3RpdHV0aW9u IHN0cmluZyBbdGVtcGxdIHdoZW4gZ2l2ZW4sIFtpdGVtcGxdIG90aGVyd2lzZS4gVXNlcwotLSAg ICBbZmxhZ3NdIHdoZW4gZ2l2ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBvdGhlcndpc2Uu IENhbGxvdXRzCi0tICAgIGFyZSBoYW5kbGVkIGJ5IFtjYWxsb3V0XS4KLS0KLS0gICAgQHBhcmFt IGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLS0gICAgQHBhcmFtIGZsYWdzIGRlZmF1 bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVzcGFj ZQotLSAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSBwb3MgZGVm YXVsdCA9IDAKLS0gICAgQHBhcmFtIGl0ZW1wbCBkZWZhdWx0ID0gZW1wdHkgc3RyaW5nCi0tICAg IEBwYXJhbSB0ZW1wbCBkZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gY2FsbG91dCBkZWZh dWx0ID0gaWdub3JlIGNhbGxvdXRzCi0tCi0tICAgIEByYWlzZSBGYWlsdXJlIGlmIHRoZXJlIGFy ZSBiYWNrcmVmZXJlbmNlcyB0byBub25leGlzdGVudCBzdWJwYXR0ZXJucy4gKikKLS0KLS12YWwg cXJlcGxhY2UgOgotLSAgP2lmbGFncyA6IGlyZmxhZyAtPgotLSAgP2ZsYWdzIDogcmZsYWcgbGlz dCAtPgotLSAgP3JleCA6IHJlZ2V4cCAtPgotLSAgP3BhdCA6IHN0cmluZyAtPgotLSAgP3BvcyA6 IGludCAtPgotLSAgP3RlbXBsIDogc3RyaW5nIC0+Ci0tICA/Y2FsbG91dCA6IGNhbGxvdXQgLT4K LS0gIHN0cmluZyAtPiBzdHJpbmcKLS0oKiogW3FyZXBsYWNlID9pZmxhZ3MgP2ZsYWdzID9yZXgg P3BhdCA/cG9zID90ZW1wbCA/Y2FsbG91dCBzdWJqXQotLSAgICByZXBsYWNlcyBhbGwgc3Vic3Ry aW5ncyBvZiBbc3Vial0gbWF0Y2hpbmcgcGF0dGVybiBbcGF0XSB3aGVuIGdpdmVuLAotLSAgICBy ZWd1bGFyIGV4cHJlc3Npb24gW3JleF0gb3RoZXJ3aXNlLCBzdGFydGluZyBhdCBwb3NpdGlvbiBb cG9zXQotLSAgICB3aXRoIHRoZSBzdHJpbmcgW3RlbXBsXS4gVXNlcyBbZmxhZ3NdIHdoZW4gZ2l2 ZW4sIHRoZSBwcmVjb21waWxlZAotLSAgICBbaWZsYWdzXSBvdGhlcndpc2UuIENhbGxvdXRzIGFy ZSBoYW5kbGVkIGJ5IFtjYWxsb3V0XS4KLS0KLS0gICAgQHBhcmFtIGlmbGFncyBkZWZhdWx0ID0g bm8gZXh0cmEgZmxhZ3MKLS0gICAgQHBhcmFtIGZsYWdzIGRlZmF1bHQgPSBpZ25vcmVkCi0tICAg IEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVzcGFjZQotLSAgICBAcGFyYW0gcGF0 IGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSBwb3MgZGVmYXVsdCA9IDAKLS0gICAgQHBh cmFtIHRlbXBsIGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQg PSBpZ25vcmUgY2FsbG91dHMgKikKLS0KLS12YWwgc3Vic3RpdHV0ZV9zdWJzdHJpbmdzIDoKLS0g ID9pZmxhZ3MgOiBpcmZsYWcgLT4KLS0gID9mbGFncyA6IHJmbGFnIGxpc3QgLT4KLS0gID9yZXgg OiByZWdleHAgLT4KLS0gID9wYXQgOiBzdHJpbmcgLT4KLS0gID9wb3MgOiBpbnQgLT4KLS0gID9j YWxsb3V0IDogY2FsbG91dCAtPgotLSAgc3Vic3QgOiAoc3Vic3RyaW5ncyAtPiBzdHJpbmcpIC0+ Ci0tICBzdHJpbmcgLT4gc3RyaW5nCi0tKCoqIFtzdWJzdGl0dXRlX3N1YnN0cmluZ3MgP2lmbGFn cyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2NhbGxvdXQgfnN1YnN0IHN1YmpdCi0tICAgIHJlcGxh Y2VzIGFsbCBzdWJzdHJpbmdzIG9mIFtzdWJqXSBtYXRjaGluZyBwYXR0ZXJuIFtwYXRdIHdoZW4g Z2l2ZW4sCi0tICAgIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UsIHN0YXJ0aW5n IGF0IHBvc2l0aW9uIFtwb3NdCi0tICAgIHdpdGggdGhlIHJlc3VsdCBvZiBmdW5jdGlvbiBbc3Vi c3RdIGFwcGxpZWQgdG8gdGhlIHN1YnN0cmluZ3MKLS0gICAgb2YgdGhlIG1hdGNoLiBVc2VzIFtm bGFnc10gd2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3NdCi0tICAgIG90aGVyd2lz ZS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgotLQotLSAgICBAcGFyYW0gaWZs YWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotLSAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9 IGlnbm9yZWQKLS0gICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0t ICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHBvcyBkZWZhdWx0 ID0gMAotLSAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzICopCi0t Ci0tdmFsIHN1YnN0aXR1dGUgOgotLSAgP2lmbGFncyA6IGlyZmxhZyAtPgotLSAgP2ZsYWdzIDog cmZsYWcgbGlzdCAtPgotLSAgP3JleCA6IHJlZ2V4cCAtPgotLSAgP3BhdCA6IHN0cmluZyAtPgot LSAgP3BvcyA6IGludCAtPgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0tICBzdWJzdCA6IChz dHJpbmcgLT4gc3RyaW5nKSAtPgotLSAgc3RyaW5nIC0+IHN0cmluZwotLSgqKiBbc3Vic3RpdHV0 ZSA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCB+c3Vic3Qgc3Vial0KLS0g ICAgcmVwbGFjZXMgYWxsIHN1YnN0cmluZ3Mgb2YgW3N1YmpdIG1hdGNoaW5nIHBhdHRlcm4gW3Bh dF0gd2hlbiBnaXZlbiwKLS0gICAgcmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZSwg c3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10gd2l0aAotLSAgICB0aGUgcmVzdWx0IG9mIGZ1bmN0 aW9uIFtzdWJzdF0gYXBwbGllZCB0byB0aGUgbWF0Y2guIFVzZXMgW2ZsYWdzXQotLSAgICB3aGVu IGdpdmVuLCB0aGUgcHJlY29tcGlsZWQgW2lmbGFnc10gb3RoZXJ3aXNlLiBDYWxsb3V0cyBhcmUg aGFuZGxlZAotLSAgICBieSBbY2FsbG91dF0uCi0tCi0tICAgIEBwYXJhbSBpZmxhZ3MgZGVmYXVs dCA9IG5vIGV4dHJhIGZsYWdzCi0tICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0ID0gaWdub3JlZAot LSAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UKLS0gICAgQHBhcmFt IHBhdCBkZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gcG9zIGRlZmF1bHQgPSAwCi0tICAg IEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2FsbG91dHMgKikKLS0KLS12YWwgcmVw bGFjZV9maXJzdCA6Ci0tICA/aWZsYWdzIDogaXJmbGFnIC0+Ci0tICA/ZmxhZ3MgOiByZmxhZyBs aXN0IC0+Ci0tICA/cmV4IDogcmVnZXhwIC0+Ci0tICA/cGF0IDogc3RyaW5nIC0+Ci0tICA/cG9z IDogaW50IC0+Ci0tICA/aXRlbXBsIDogc3Vic3RpdHV0aW9uIC0+Ci0tICA/dGVtcGwgOiBzdHJp bmcgLT4KLS0gID9jYWxsb3V0IDogY2FsbG91dCAtPgotLSAgc3RyaW5nIC0+IHN0cmluZwotLSgq KiBbcmVwbGFjZV9maXJzdCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/aXRlbXBsID90 ZW1wbCA/Y2FsbG91dCBzdWJqXQotLSAgICByZXBsYWNlcyB0aGUgZmlyc3Qgc3Vic3RyaW5nIG9m IFtzdWJqXSBtYXRjaGluZyBwYXR0ZXJuIFtwYXRdIHdoZW4KLS0gICAgZ2l2ZW4sIHJlZ3VsYXIg ZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UsIHN0YXJ0aW5nIGF0IHBvc2l0aW9uCi0tICAgIFtw b3NdIHdpdGggdGhlIHN1YnN0aXR1dGlvbiBzdHJpbmcgW3RlbXBsXSB3aGVuIGdpdmVuLCBbaXRl bXBsXQotLSAgICBvdGhlcndpc2UuIFVzZXMgW2ZsYWdzXSB3aGVuIGdpdmVuLCB0aGUgcHJlY29t cGlsZWQgW2lmbGFnc10KLS0gICAgb3RoZXJ3aXNlLiBDYWxsb3V0cyBhcmUgaGFuZGxlZCBieSBb Y2FsbG91dF0uCi0tCi0tICAgIEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdz Ci0tICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gcmV4IGRl ZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UKLS0gICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdu b3JlZAotLSAgICBAcGFyYW0gcG9zIGRlZmF1bHQgPSAwCi0tICAgIEBwYXJhbSBpdGVtcGwgZGVm YXVsdCA9IGVtcHR5IHN0cmluZwotLSAgICBAcGFyYW0gdGVtcGwgZGVmYXVsdCA9IGlnbm9yZWQK LS0gICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0cwotLQotLSAgICBA cmFpc2UgRmFpbHVyZSBpZiB0aGVyZSBhcmUgYmFja3JlZmVyZW5jZXMgdG8gbm9uZXhpc3RlbnQg c3VicGF0dGVybnMuICopCi0tCi0tdmFsIHFyZXBsYWNlX2ZpcnN0IDoKLS0gID9pZmxhZ3MgOiBp cmZsYWcgLT4KLS0gID9mbGFncyA6IHJmbGFnIGxpc3QgLT4KLS0gID9yZXggOiByZWdleHAgLT4K LS0gID9wYXQgOiBzdHJpbmcgLT4KLS0gID9wb3MgOiBpbnQgLT4KLS0gID90ZW1wbCA6IHN0cmlu ZyAtPgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0tICBzdHJpbmcgLT4gc3RyaW5nCi0tKCoq IFtxcmVwbGFjZV9maXJzdCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/dGVtcGwgP2Nh bGxvdXQgc3Vial0KLS0gICAgcmVwbGFjZXMgdGhlIGZpcnN0IHN1YnN0cmluZyBvZiBbc3Vial0g bWF0Y2hpbmcgcGF0dGVybiBbcGF0XSB3aGVuCi0tICAgIGdpdmVuLCByZWd1bGFyIGV4cHJlc3Np b24gW3JleF0gb3RoZXJ3aXNlLCBzdGFydGluZyBhdCBwb3NpdGlvbiBbcG9zXQotLSAgICB3aXRo IHRoZSBzdHJpbmcgW3RlbXBsXS4gVXNlcyBbZmxhZ3NdIHdoZW4gZ2l2ZW4sIHRoZSBwcmVjb21w aWxlZAotLSAgICBbaWZsYWdzXSBvdGhlcndpc2UuIENhbGxvdXRzIGFyZSBoYW5kbGVkIGJ5IFtj YWxsb3V0XS4KLS0KLS0gICAgQHBhcmFtIGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MK LS0gICAgQHBhcmFtIGZsYWdzIGRlZmF1bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSByZXggZGVm YXVsdCA9IG1hdGNoZXMgd2hpdGVzcGFjZQotLSAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25v cmVkCi0tICAgIEBwYXJhbSBwb3MgZGVmYXVsdCA9IDAKLS0gICAgQHBhcmFtIHRlbXBsIGRlZmF1 bHQgPSBpZ25vcmVkCi0tICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2FsbG91 dHMgKikKLS0KLS12YWwgc3Vic3RpdHV0ZV9zdWJzdHJpbmdzX2ZpcnN0IDoKLS0gID9pZmxhZ3Mg OiBpcmZsYWcgLT4KLS0gID9mbGFncyA6IHJmbGFnIGxpc3QgLT4KLS0gID9yZXggOiByZWdleHAg LT4KLS0gID9wYXQgOiBzdHJpbmcgLT4KLS0gID9wb3MgOiBpbnQgLT4KLS0gID9jYWxsb3V0IDog Y2FsbG91dCAtPgotLSAgc3Vic3QgOiAoc3Vic3RyaW5ncyAtPiBzdHJpbmcpIC0+Ci0tICBzdHJp bmcgLT4gc3RyaW5nCi0tKCoqIFtzdWJzdGl0dXRlX3N1YnN0cmluZ3NfZmlyc3QKLS0gICAgICAg P2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2NhbGxvdXQgfnN1YnN0IHN1YmpdCi0tICAg IHJlcGxhY2VzIHRoZSBmaXJzdCBzdWJzdHJpbmcgb2YgW3N1YmpdIG1hdGNoaW5nIHBhdHRlcm4g W3BhdF0gd2hlbgotLSAgICBnaXZlbiwgcmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lz ZSwgc3RhcnRpbmcgYXQgcG9zaXRpb24KLS0gICAgW3Bvc10gd2l0aCB0aGUgcmVzdWx0IG9mIGZ1 bmN0aW9uIFtzdWJzdF0gYXBwbGllZCB0byB0aGUgc3Vic3RyaW5ncwotLSAgICBvZiB0aGUgbWF0 Y2guIFVzZXMgW2ZsYWdzXSB3aGVuIGdpdmVuLCB0aGUgcHJlY29tcGlsZWQgW2lmbGFnc10KLS0g ICAgb3RoZXJ3aXNlLiBDYWxsb3V0cyBhcmUgaGFuZGxlZCBieSBbY2FsbG91dF0uCi0tCi0tICAg IEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0tICAgIEBwYXJhbSBmbGFn cyBkZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdo aXRlc3BhY2UKLS0gICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0g cG9zIGRlZmF1bHQgPSAwCi0tICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2Fs bG91dHMgKikKLS0KLS12YWwgc3Vic3RpdHV0ZV9maXJzdCA6Ci0tICA/aWZsYWdzIDogaXJmbGFn IC0+Ci0tICA/ZmxhZ3MgOiByZmxhZyBsaXN0IC0+Ci0tICA/cmV4IDogcmVnZXhwIC0+Ci0tICA/ cGF0IDogc3RyaW5nIC0+Ci0tICA/cG9zIDogaW50IC0+Ci0tICA/Y2FsbG91dCA6IGNhbGxvdXQg LT4KLS0gIHN1YnN0IDogKHN0cmluZyAtPiBzdHJpbmcpIC0+Ci0tICBzdHJpbmcgLT4gc3RyaW5n Ci0tKCoqIFtzdWJzdGl0dXRlX2ZpcnN0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9j YWxsb3V0IH5zdWJzdCBzdWJqXQotLSAgICByZXBsYWNlcyB0aGUgZmlyc3Qgc3Vic3RyaW5nIG9m IFtzdWJqXSBtYXRjaGluZyBwYXR0ZXJuIFtwYXRdIHdoZW4KLS0gICAgZ2l2ZW4sIHJlZ3VsYXIg ZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UsIHN0YXJ0aW5nIGF0IHBvc2l0aW9uCi0tICAgIFtw b3NdIHdpdGggdGhlIHJlc3VsdCBvZiBmdW5jdGlvbiBbc3Vic3RdIGFwcGxpZWQgdG8gdGhlIG1h dGNoLiBVc2VzCi0tICAgIFtmbGFnc10gd2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxh Z3NdIG90aGVyd2lzZS4gQ2FsbG91dHMKLS0gICAgYXJlIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgot LQotLSAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotLSAgICBAcGFy YW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0 Y2hlcyB3aGl0ZXNwYWNlCi0tICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAg QHBhcmFtIHBvcyBkZWZhdWx0ID0gMAotLSAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdu b3JlIGNhbGxvdXRzICopCi0tCi0tCi0tKCoqIHs2IFNwbGl0dGluZ30gKikKLS0KLS12YWwgc3Bs aXQgOgotLSAgP2lmbGFncyA6IGlyZmxhZyAtPgotLSAgP2ZsYWdzIDogcmZsYWcgbGlzdCAtPgot LSAgP3JleCA6IHJlZ2V4cCAtPgotLSAgP3BhdCA6IHN0cmluZyAtPgotLSAgP3BvcyA6IGludCAt PgotLSAgP21heCA6IGludCAtPgotLSAgP2NhbGxvdXQgOiBjYWxsb3V0IC0+Ci0tICBzdHJpbmcg LT4gc3RyaW5nIGxpc3QKLS0oKiogW3NwbGl0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9z ID9tYXggP2NhbGxvdXQgc3Vial0gc3BsaXRzIFtzdWJqXQotLSAgICBpbnRvIGEgbGlzdCBvZiBh dCBtb3N0IFttYXhdIHN0cmluZ3MsIHVzaW5nIGFzIGRlbGltaXRlciBwYXR0ZXJuCi0tICAgIFtw YXRdIHdoZW4gZ2l2ZW4sIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UsIHN0YXJ0 aW5nIGF0Ci0tICAgIHBvc2l0aW9uIFtwb3NdLiBVc2VzIFtmbGFnc10gd2hlbiBnaXZlbiwgdGhl IHByZWNvbXBpbGVkIFtpZmxhZ3NdCi0tICAgIG90aGVyd2lzZS4gSWYgW21heF0gaXMgemVybywg dHJhaWxpbmcgZW1wdHkgZmllbGRzIGFyZSBzdHJpcHBlZC4gSWYKLS0gICAgaXQgaXMgbmVnYXRp dmUsIGl0IGlzIHRyZWF0ZWQgYXMgYXJiaXRyYXJpbHkgbGFyZ2UuIElmIG5laXRoZXIgW3BhdF0K LS0gICAgbm9yIFtyZXhdIGFyZSBzcGVjaWZpZWQsIGxlYWRpbmcgd2hpdGVzcGFjZSB3aWxsIGJl IHN0cmlwcGVkISBTaG91bGQKLS0gICAgYmVoYXZlIGV4YWN0bHkgYXMgaW4gUEVSTC4gQ2FsbG91 dHMgYXJlIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgotLQotLSAgICBAcGFyYW0gaWZsYWdzIGRlZmF1 bHQgPSBubyBleHRyYSBmbGFncwotLSAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQK LS0gICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0tICAgIEBwYXJh bSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLS0gICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAotLSAg ICBAcGFyYW0gbWF4IGRlZmF1bHQgPSAwCi0tICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBp Z25vcmUgY2FsbG91dHMgKikKLS0KLS12YWwgYXNwbGl0IDoKLS0gID9pZmxhZ3MgOiBpcmZsYWcg LT4KLS0gID9mbGFncyA6IHJmbGFnIGxpc3QgLT4KLS0gID9yZXggOiByZWdleHAgLT4KLS0gID9w YXQgOiBzdHJpbmcgLT4KLS0gID9wb3MgOiBpbnQgLT4KLS0gID9tYXggOiBpbnQgLT4KLS0gID9j YWxsb3V0IDogY2FsbG91dCAtPgotLSAgc3RyaW5nIC0+IHN0cmluZyBhcnJheQotLSgqKiBbYXNw bGl0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9tYXggP2NhbGxvdXQgc3Vial0gc2Ft ZSBhcwotLSAgICB7IVBjcmUuc3BsaXR9IGJ1dCBAcmV0dXJuIGFuIGFycmF5IGluc3RlYWQgb2Yg YSBsaXN0LiAqKQotLQotLSgqKiBSZXN1bHQgb2YgYSB7IVBjcmUuZnVsbF9zcGxpdH0gKikKLS10 eXBlIHNwbGl0X3Jlc3VsdCA9IFRleHQgb2Ygc3RyaW5nICAgICAgICAoKiogVGV4dCBwYXJ0IG9m IHNwbGl0IHN0cmluZyAqKQotLSAgICAgICAgICAgICAgICAgIHwgRGVsaW0gb2Ygc3RyaW5nICAg ICAgICgqKiBEZWxpbWl0ZXIgcGFydCBvZiBzcGxpdCBzdHJpbmcgKikKLS0gICAgICAgICAgICAg ICAgICB8IEdyb3VwIG9mIGludCAqIHN0cmluZyAoKiogU3ViZ3JvdXAgb2YgbWF0Y2hlZCBkZWxp bWl0ZXIKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1 Ymdyb3VwX25yLCBzdWJncm91cF9zdHIpICopCi0tICAgICAgICAgICAgICAgICAgfCBOb0dyb3Vw ICAgICAgICAgICAgICAgKCoqIFVubWF0Y2hlZCBzdWJncm91cCAqKQotLQotLXZhbCBmdWxsX3Nw bGl0IDoKLS0gID9pZmxhZ3MgOiBpcmZsYWcgLT4KLS0gID9mbGFncyA6IHJmbGFnIGxpc3QgLT4K LS0gID9yZXggOiByZWdleHAgLT4KLS0gID9wYXQgOiBzdHJpbmcgLT4KLS0gID9wb3MgOiBpbnQg LT4KLS0gID9tYXggOiBpbnQgLT4KLS0gID9jYWxsb3V0IDogY2FsbG91dCAtPgotLSAgc3RyaW5n IC0+IHNwbGl0X3Jlc3VsdCBsaXN0Ci0tKCoqIFtmdWxsX3NwbGl0ID9pZmxhZ3MgP2ZsYWdzID9y ZXggP3BhdCA/cG9zID9tYXggP2NhbGxvdXQgc3Vial0gc3BsaXRzCi0tICAgIFtzdWJqXSBpbnRv IGEgbGlzdCBvZiBhdCBtb3N0IFttYXhdIGVsZW1lbnRzIG9mIHR5cGUgInNwbGl0X3Jlc3VsdCIs Ci0tICAgIHVzaW5nIGFzIGRlbGltaXRlciBwYXR0ZXJuIFtwYXRdIHdoZW4gZ2l2ZW4sIHJlZ3Vs YXIgZXhwcmVzc2lvbgotLSAgICBbcmV4XSBvdGhlcndpc2UsIHN0YXJ0aW5nIGF0IHBvc2l0aW9u IFtwb3NdLiBVc2VzIFtmbGFnc10gd2hlbiBnaXZlbiwKLS0gICAgdGhlIHByZWNvbXBpbGVkIFtp ZmxhZ3NdIG90aGVyd2lzZS4gSWYgW21heF0gaXMgemVybywgdHJhaWxpbmcgZW1wdHkKLS0gICAg ZmllbGRzIGFyZSBzdHJpcHBlZC4gSWYgaXQgaXMgbmVnYXRpdmUsIGl0IGlzIHRyZWF0ZWQgYXMg YXJiaXRyYXJpbHkKLS0gICAgbGFyZ2UuIFNob3VsZCBiZWhhdmUgZXhhY3RseSBhcyBpbiBQRVJM LiBDYWxsb3V0cyBhcmUgaGFuZGxlZCBieQotLSAgICBbY2FsbG91dF0uCi0tCi0tICAgIEBwYXJh bSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0tICAgIEBwYXJhbSBmbGFncyBkZWZh dWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3Bh Y2UKLS0gICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAotLSAgICBAcGFyYW0gcG9zIGRl ZmF1bHQgPSAwCi0tICAgIEBwYXJhbSBtYXggZGVmYXVsdCA9IDAKLS0gICAgQHBhcmFtIGNhbGxv dXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0cyAqKQotLQotLQotLSgqKiB7NiBBZGRpdGlvbmFs IGNvbnZlbmllbmNlIGZ1bmN0aW9uc30gKikKLS0KLS12YWwgZm9yZWFjaF9saW5lIDoKLS0gID9p YyA6IGluX2NoYW5uZWwgLT4KLS0gIChzdHJpbmcgLT4gdW5pdCkgLT4gdW5pdAotLSgqKiBbZm9y ZWFjaF9saW5lID9pYyBmXSBhcHBsaWVzIFtmXSB0byBlYWNoIGxpbmUgaW4gaW5jaGFubmVsIFtp Y10gdW50aWwKLS0gICAgdGhlIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuCi0tCi0tICAgIEBwYXJh bSBpYyBkZWZhdWx0ID0gc3RkaW4gKikKLS0KLS12YWwgZm9yZWFjaF9maWxlIDogc3RyaW5nIGxp c3QgLT4gKHN0cmluZyAtPiBpbl9jaGFubmVsIC0+IHVuaXQpIC0+IHVuaXQKLS0oKiogW2ZvcmVh Y2hfZmlsZSBmaWxlbmFtZXMgZl0gb3BlbnMgZWFjaCBmaWxlIGluIHRoZSBsaXN0IFtmaWxlbmFt ZXNdCi0tICAgIGZvciBpbnB1dCBhbmQgYXBwbGllcyBbZl0gdG8gZWFjaCBmaWxlbmFtZSBhbmQg dGhlIGNvcnJlc3BvbmRpbmcKLS0gICAgY2hhbm5lbC4gQ2hhbm5lbHMgYXJlIGNsb3NlZCBhZnRl ciBlYWNoIG9wZXJhdGlvbiAoZXZlbiB3aGVuCi0tICAgIGV4Y2VwdGlvbnMgb2NjdXIgLSB0aGV5 IGdldCByZXJhaXNlZCBhZnRlcndhcmRzISkuICopCi0tCi0tCi0tKCoqIHs2IHtiIFVOU0FGRSBT VFVGRiAtIFVTRSBXSVRIIENBVVRJT04hfX0gKikKLS0KLS12YWwgdW5zYWZlX3BjcmVfZXhlYyA6 Ci0tICBpcmZsYWcgLT4KLS0gIHJlZ2V4cCAtPgotLSAgcG9zIDogaW50IC0+Ci0tICBzdWJqX3N0 YXJ0IDogaW50IC0+Ci0tICBzdWJqIDogc3RyaW5nIC0+Ci0tICBpbnQgYXJyYXkgLT4KLS0gIGNh bGxvdXQgb3B0aW9uIC0+Ci0tICB1bml0Ci0tKCoqIFt1bnNhZmVfcGNyZV9leGVjIGZsYWdzIHJl eCB+cG9zIH5zdWJqX3N0YXJ0IH5zdWJqIG9mZnNldF92ZWN0b3JdLgotLSAgICBZb3Ugc2hvdWxk IHJlYWQgdGhlIEMtc291cmNlIHRvIGtub3cgd2hhdCBoYXBwZW5zLgotLSAgICBJZiB5b3UgZG8g bm90IHVuZGVyc3RhbmQgaXQgLSB7YiBkb24ndCB1c2UgdGhpcyBmdW5jdGlvbiF9ICopCi0tCi0t dmFsIG1ha2Vfb3ZlY3RvciA6IHJlZ2V4cCAtPiBpbnQgKiBpbnQgYXJyYXkKLS0oKiogW21ha2Vf b3ZlY3RvciByZWdleHBdIGNhbGN1bGF0ZXMgdGhlIHR1cGxlIChzdWJncm91cHMyLCBvdmVjdG9y KQotLSAgICB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIHN1Ymdyb3VwIG9mZnNldHMgYW5kIHRoZSBv ZmZzZXQgYXJyYXkuICopCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3Jj L3BjcmVfc3R1YnMuYy5pbiBiL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9wY3JlX3N0dWJz LmMuaW4KLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNjZkZmI3YjBkLi4wMDAwMDAw MDAKLS0tLSBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9wY3JlX3N0dWJzLmMuaW4KLSsr KyAvZGV2L251bGwKLUBAIC0xLDg2MiArMCwwIEBACi0tLyoKLS0gICBQQ1JFLU9DQU1MIC0gUGVy bCBDb21wYXRpYmlsaXR5IFJlZ3VsYXIgRXhwcmVzc2lvbnMgZm9yIE9DYW1sCi0tCi0tICAgQ29w eXJpZ2h0IChDKSAxOTk5LSAgTWFya3VzIE1vdHRsCi0tICAgZW1haWw6IG1hcmt1cy5tb3R0bEBn bWFpbC5jb20KLS0gICBXV1c6ICAgaHR0cDovL3d3dy5vY2FtbC5pbmZvCi0tCi0tICAgVGhpcyBs aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot LSAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMKLS0gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIKLS0gICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBUaGlzIGxpYnJhcnkgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot LSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VCi0tICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLS0KLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0tICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotLSAgIEZvdW5kYXRpb24s IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEw LTEzMDEgIFVTQQotLSovCi0tCi0tI2lmIGRlZmluZWQoX1dJTjMyKQotLSMgIGRlZmluZSBzbnBy aW50ZiBfc25wcmludGYKLS0jICBpZiBkZWZpbmVkKF9ETEwpCi0tIyAgICBkZWZpbmUgUENSRWV4 dGVybiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLS0jICBlbHNlCi0tIyAgICBkZWZpbmUgUENSRWV4 dGVybgotLSMgIGVuZGlmCi0tI2VuZGlmCi0tCi0tI2lmIF9XSU42NAotLSAgdHlwZWRlZiBsb25n IGxvbmcgKm92ZWNfZHN0X3B0cjsKLS0jZWxzZQotLSAgdHlwZWRlZiBsb25nICpvdmVjX2RzdF9w dHI7Ci0tI2VuZGlmCi0tCi0tI2lmIF9fR05VQ19fID49IDMKLS0jIGRlZmluZSBpbmxpbmUgaW5s aW5lIF9fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKLS0jIGRlZmluZSBfX3VudXNlZCBf X2F0dHJpYnV0ZV9fICgodW51c2VkKSkKLS0jZWxzZQotLSMgZGVmaW5lIF9fdW51c2VkCi0tIyBk ZWZpbmUgaW5saW5lCi0tI2VuZGlmCi0tCi0tI2luY2x1ZGUgPGN0eXBlLmg+Ci0tI2luY2x1ZGUg PHN0cmluZy5oPgotLSNpbmNsdWRlIDxzdGRpby5oPgotLQotLSNpbmNsdWRlIDxjYW1sL21sdmFs dWVzLmg+Ci0tI2luY2x1ZGUgPGNhbWwvYWxsb2MuaD4KLS0jaW5jbHVkZSA8Y2FtbC9tZW1vcnku aD4KLS0jaW5jbHVkZSA8Y2FtbC9mYWlsLmg+Ci0tI2luY2x1ZGUgPGNhbWwvY2FsbGJhY2suaD4K LS0jaW5jbHVkZSA8Y2FtbC9jdXN0b20uaD4KLS0KLS0jaW5jbHVkZSA8cGNyZS5oPgotLQotLS8q IEVycm9yIGNvZGVzIGFzIGRlZmluZWQgZm9yIHBjcmUgNy45LCB1bmRlZmluZWQgaW4gcGNyZSA0 LjUgKi8KLS0jaWZuZGVmIFBDUkVfRVJST1JfUEFSVElBTAotLSNkZWZpbmUgUENSRV9FUlJPUl9Q QVJUSUFMICAgICAgICAoLTEyKQotLSNlbmRpZgotLSNpZm5kZWYgUENSRV9FUlJPUl9CQURQQVJU SUFMCi0tI2RlZmluZSBQQ1JFX0VSUk9SX0JBRFBBUlRJQUwgICAgICgtMTMpCi0tI2VuZGlmCi0t I2lmbmRlZiBQQ1JFX0VSUk9SX1JFQ1VSU0lPTkxJTUlUCi0tI2RlZmluZSBQQ1JFX0VSUk9SX1JF Q1VSU0lPTkxJTUlUICgtMjEpCi0tI2VuZGlmCi0tCi0tdHlwZWRlZiBjb25zdCB1bnNpZ25lZCBj aGFyICpjaGFydGFibGVzOyAgLyogVHlwZSBvZiBjaGFydGFibGUgc2V0cyAqLwotLQotLS8qIENv bnRlbnRzIG9mIGNhbGxvdXQgZGF0YSAqLwotLXN0cnVjdCBjb2QgewotLSAgbG9uZyBzdWJqX3N0 YXJ0OyAgICAgICAgLyogU3RhcnQgb2Ygc3ViamVjdCBzdHJpbmcgKi8KLS0gIHZhbHVlICp2X3N1 YnN0cmluZ3NfcDsgIC8qIFBvaW50ZXIgdG8gc3Vic3RyaW5ncyBtYXRjaGVkIHNvIGZhciAqLwot LSAgdmFsdWUgKnZfY29mX3A7ICAgICAgICAgLyogUG9pbnRlciB0byBjYWxsb3V0IGZ1bmN0aW9u ICovCi0tICB2YWx1ZSB2X2V4bjsgICAgICAgICAgICAvKiBQb3NzaWJsZSBleGNlcHRpb24gcmFp c2VkIGJ5IGNhbGxvdXQgZnVuY3Rpb24gKi8KLS19OwotLQotLS8qIENhY2hlIGZvciBleGNlcHRp b25zICovCi0tc3RhdGljIHZhbHVlICpwY3JlX2V4Y19FcnJvciAgICAgICAgID0gTlVMTDsgIC8q IEV4Y2VwdGlvbiBbRXJyb3JdICovCi0tc3RhdGljIHZhbHVlICpwY3JlX2V4Y19CYWNrdHJhY2sg ICAgID0gTlVMTDsgIC8qIEV4Y2VwdGlvbiBbQmFja3RyYWNrXSAqLwotLQotLS8qIENhY2hlIGZv ciBwb2x5bW9ycGhpYyB2YXJpYW50cyAqLwotLXN0YXRpYyB2YWx1ZSB2YXJfU3RhcnRfb25seTsg ICAvKiBWYXJpYW50IFtgU3RhcnRfb25seV0gKi8KLS1zdGF0aWMgdmFsdWUgdmFyX0FOQ0hPUkVE OyAgICAgLyogVmFyaWFudCBbYEFOQ0hPUkVEXSAqLwotLXN0YXRpYyB2YWx1ZSB2YXJfQ2hhcjsg ICAgICAgICAvKiBWYXJpYW50IFtgQ2hhciBjaGFyXSAqLwotLXN0YXRpYyB2YWx1ZSB2YXJfTm90 X3N0dWRpZWQ7ICAvKiBWYXJpYW50IFtgTm90X3N0dWRpZWRdICovCi0tc3RhdGljIHZhbHVlIHZh cl9TdHVkaWVkOyAgICAgIC8qIFZhcmlhbnQgW2BTdHVkaWVkXSAqLwotLXN0YXRpYyB2YWx1ZSB2 YXJfT3B0aW1hbDsgICAgICAvKiBWYXJpYW50IFtgT3B0aW1hbF0gKi8KLS0KLS1zdGF0aWMgdmFs dWUgTm9uZSA9IFZhbF9pbnQoMCk7Ci0tCi0tLyogRGF0YSBhc3NvY2lhdGVkIHdpdGggT0NhbWwg dmFsdWVzIG9mIFBDUkUgcmVndWxhciBleHByZXNzaW9uICovCi0tc3RydWN0IHBjcmVfb2NhbWxf cmVnZXhwIHsgcGNyZSAqcmV4OyBwY3JlX2V4dHJhICpleHRyYTsgaW50IHN0dWRpZWQ7IH07Ci0t Ci0tI2RlZmluZSBQY3JlX29jYW1sX3JlZ2V4cF92YWwodikgXAotLSAgKChzdHJ1Y3QgcGNyZV9v Y2FtbF9yZWdleHAgKikgRGF0YV9jdXN0b21fdmFsKHYpKQotLQotLSNkZWZpbmUgZ2V0X3JleCh2 KSBQY3JlX29jYW1sX3JlZ2V4cF92YWwodiktPnJleAotLSNkZWZpbmUgZ2V0X2V4dHJhKHYpIFBj cmVfb2NhbWxfcmVnZXhwX3ZhbCh2KS0+ZXh0cmEKLS0jZGVmaW5lIGdldF9zdHVkaWVkKHYpIFBj cmVfb2NhbWxfcmVnZXhwX3ZhbCh2KS0+c3R1ZGllZAotLQotLSNkZWZpbmUgc2V0X3JleCh2LCBy KSBQY3JlX29jYW1sX3JlZ2V4cF92YWwodiktPnJleCA9IHIKLS0jZGVmaW5lIHNldF9leHRyYSh2 LCBlKSBQY3JlX29jYW1sX3JlZ2V4cF92YWwodiktPmV4dHJhID0gZQotLSNkZWZpbmUgc2V0X3N0 dWRpZWQodiwgcykgUGNyZV9vY2FtbF9yZWdleHBfdmFsKHYpLT5zdHVkaWVkID0gcwotLQotLS8q IERhdGEgYXNzb2NpYXRlZCB3aXRoIE9DYW1sIHZhbHVlcyBvZiBQQ1JFIHRhYmxlcyAqLwotLXN0 cnVjdCBwY3JlX29jYW1sX3RhYmxlcyB7IGNoYXJ0YWJsZXMgdGFibGVzOyB9OwotLQotLSNkZWZp bmUgUGNyZV9vY2FtbF90YWJsZXNfdmFsKHYpIFwKLS0gICgoc3RydWN0IHBjcmVfb2NhbWxfdGFi bGVzICopIERhdGFfY3VzdG9tX3ZhbCh2KSkKLS0KLS0jZGVmaW5lIGdldF90YWJsZXModikgUGNy ZV9vY2FtbF90YWJsZXNfdmFsKHYpLT50YWJsZXMKLS0jZGVmaW5lIHNldF90YWJsZXModiwgdCkg UGNyZV9vY2FtbF90YWJsZXNfdmFsKHYpLT50YWJsZXMgPSB0Ci0tCi0tLyogQ29udmVydHMgc3Vi amVjdCBvZmZzZXRzIGZyb20gQy1pbnRlZ2VycyB0byBPQ2FtbC1JbnRlZ2Vycy4KLS0KLS0gICBU aGlzIGlzIGEgYml0IHRyaWNreSwgYmVjYXVzZSB0aGVyZSBhcmUgMzItIGFuZCA2NC1iaXQgcGxh dGZvcm1zIGFyb3VuZAotLSAgIGFuZCBPQ2FtbCBjaG9vc2VzIHRoZSBsYXJnZXIgcG9zc2liaWxp dHkgZm9yIHJlcHJlc2VudGluZyBpbnRlZ2VycyB3aGVuCi0tICAgYXZhaWxhYmxlIChhbHNvIGlu IGFycmF5cykgLSBub3Qgc28gdGhlIFBDUkUhCi0tKi8KLS1zdGF0aWMgaW5saW5lIHZvaWQgY29w eV9vdmVjdG9yKAotLSAgbG9uZyBzdWJqX3N0YXJ0LCBjb25zdCBpbnQgKm92ZWNfc3JjLCBvdmVj X2RzdF9wdHIgb3ZlY19kc3QsIGludCBzdWJncm91cHMyKQotLXsKLS0gIGlmIChzdWJqX3N0YXJ0 ID09IDApCi0tICAgIHdoaWxlIChzdWJncm91cHMyLS0pIHsKLS0gICAgICAqb3ZlY19kc3QgPSBW YWxfaW50KCpvdmVjX3NyYyk7Ci0tICAgICAgLS1vdmVjX3NyYzsgLS1vdmVjX2RzdDsKLS0gICAg fQotLSAgZWxzZQotLSAgICB3aGlsZSAoc3ViZ3JvdXBzMi0tKSB7Ci0tICAgICAgKm92ZWNfZHN0 ID0gVmFsX2xvbmcoKm92ZWNfc3JjICsgc3Vial9zdGFydCk7Ci0tICAgICAgLS1vdmVjX3NyYzsg LS1vdmVjX2RzdDsKLS0gICAgfQotLX0KLS0KLS0vKiBDYWxsb3V0IGhhbmRsZXIgKi8KLS1zdGF0 aWMgaW50IHBjcmVfY2FsbG91dF9oYW5kbGVyKHBjcmVfY2FsbG91dF9ibG9jayogY2IpCi0tewot LSAgc3RydWN0IGNvZCAqY29kID0gKHN0cnVjdCBjb2QgKikgY2ItPmNhbGxvdXRfZGF0YTsKLS0K LS0gIGlmIChjb2QgIT0gTlVMTCkgewotLSAgICAvKiBDYWxsb3V0IGlzIGF2YWlsYWJsZSAqLwot LSAgICB2YWx1ZSB2X3JlczsKLS0KLS0gICAgLyogU2V0IHVwIHBhcmFtZXRlciBhcnJheSAqLwot LSAgICB2YWx1ZSB2X2NhbGxvdXRfZGF0YSA9IGNhbWxfYWxsb2Nfc21hbGwoOCwgMCk7Ci0tCi0t ICAgIGNvbnN0IHZhbHVlIHZfc3Vic3RyaW5ncyA9ICpjb2QtPnZfc3Vic3RyaW5nc19wOwotLQot LSAgICBjb25zdCBpbnQgY2FwdHVyZV90b3AgPSBjYi0+Y2FwdHVyZV90b3A7Ci0tICAgIGludCBz dWJncm91cHMyID0gY2FwdHVyZV90b3AgPDwgMTsKLS0gICAgY29uc3QgaW50IHN1Ymdyb3VwczJf MSA9IHN1Ymdyb3VwczIgLSAxOwotLQotLSAgICBjb25zdCBpbnQgKm92ZWNfc3JjID0gY2ItPm9m ZnNldF92ZWN0b3IgKyBzdWJncm91cHMyXzE7Ci0tICAgIG92ZWNfZHN0X3B0ciBvdmVjX2RzdCA9 ICZGaWVsZChGaWVsZCh2X3N1YnN0cmluZ3MsIDEpLCAwKSArIHN1Ymdyb3VwczJfMTsKLS0gICAg bG9uZyBzdWJqX3N0YXJ0ID0gY29kLT5zdWJqX3N0YXJ0OwotLQotLSAgICBjb3B5X292ZWN0b3Io c3Vial9zdGFydCwgb3ZlY19zcmMsIG92ZWNfZHN0LCBzdWJncm91cHMyKTsKLS0KLS0gICAgRmll bGQodl9jYWxsb3V0X2RhdGEsIDApID0gVmFsX2ludChjYi0+Y2FsbG91dF9udW1iZXIpOwotLSAg ICBGaWVsZCh2X2NhbGxvdXRfZGF0YSwgMSkgPSB2X3N1YnN0cmluZ3M7Ci0tICAgIEZpZWxkKHZf Y2FsbG91dF9kYXRhLCAyKSA9IFZhbF9pbnQoY2ItPnN0YXJ0X21hdGNoICsgc3Vial9zdGFydCk7 Ci0tICAgIEZpZWxkKHZfY2FsbG91dF9kYXRhLCAzKSA9IFZhbF9pbnQoY2ItPmN1cnJlbnRfcG9z aXRpb24gKyBzdWJqX3N0YXJ0KTsKLS0gICAgRmllbGQodl9jYWxsb3V0X2RhdGEsIDQpID0gVmFs X2ludChjYXB0dXJlX3RvcCk7Ci0tICAgIEZpZWxkKHZfY2FsbG91dF9kYXRhLCA1KSA9IFZhbF9p bnQoY2ItPmNhcHR1cmVfbGFzdCk7Ci0tICAgIEZpZWxkKHZfY2FsbG91dF9kYXRhLCA2KSA9IFZh bF9pbnQoY2ItPnBhdHRlcm5fcG9zaXRpb24pOwotLSAgICBGaWVsZCh2X2NhbGxvdXRfZGF0YSwg NykgPSBWYWxfaW50KGNiLT5uZXh0X2l0ZW1fbGVuZ3RoKTsKLS0KLS0gICAgLyogUGVyZm9ybSBj YWxsb3V0ICovCi0tICAgIHZfcmVzID0gY2FtbF9jYWxsYmFja19leG4oKmNvZC0+dl9jb2ZfcCwg dl9jYWxsb3V0X2RhdGEpOwotLQotLSAgICBpZiAoSXNfZXhjZXB0aW9uX3Jlc3VsdCh2X3Jlcykp IHsKLS0gICAgICAvKiBDYWxsb3V0IHJhaXNlZCBhbiBleGNlcHRpb24gKi8KLS0gICAgICBjb25z dCB2YWx1ZSB2X2V4biA9IEV4dHJhY3RfZXhjZXB0aW9uKHZfcmVzKTsKLS0gICAgICBpZiAoRmll bGQodl9leG4sIDApID09ICpwY3JlX2V4Y19CYWNrdHJhY2spIHJldHVybiAxOwotLSAgICAgIGNv ZC0+dl9leG4gPSB2X2V4bjsKLS0gICAgICByZXR1cm4gUENSRV9FUlJPUl9DQUxMT1VUOwotLSAg ICB9Ci0tICB9Ci0tCi0tICByZXR1cm4gMDsKLS19Ci0tCi0tLyogRmV0Y2hzIHRoZSBuYW1lZCBP Q2FtbC12YWx1ZXMgKyBjYWNoZXMgdGhlbSBhbmQKLS0gICBjYWxjdWxhdGVzICsgY2FjaGVzIHRo ZSB2YXJpYW50IGhhc2ggdmFsdWVzICovCi0tQ0FNTHByaW0gdmFsdWUgcGNyZV9vY2FtbF9pbml0 KHZhbHVlIF9fdW51c2VkIHZfdW5pdCkKLS17Ci0tICBwY3JlX2V4Y19FcnJvciAgICAgPSBjYW1s X25hbWVkX3ZhbHVlKCJQY3JlLkVycm9yIik7Ci0tICBwY3JlX2V4Y19CYWNrdHJhY2sgPSBjYW1s X25hbWVkX3ZhbHVlKCJQY3JlLkJhY2t0cmFjayIpOwotLQotLSAgdmFyX1N0YXJ0X29ubHkgID0g Y2FtbF9oYXNoX3ZhcmlhbnQoIlN0YXJ0X29ubHkiKTsKLS0gIHZhcl9BTkNIT1JFRCAgICA9IGNh bWxfaGFzaF92YXJpYW50KCJBTkNIT1JFRCIpOwotLSAgdmFyX0NoYXIgICAgICAgID0gY2FtbF9o YXNoX3ZhcmlhbnQoIkNoYXIiKTsKLS0gIHZhcl9Ob3Rfc3R1ZGllZCA9IGNhbWxfaGFzaF92YXJp YW50KCJOb3Rfc3R1ZGllZCIpOwotLSAgdmFyX1N0dWRpZWQgICAgID0gY2FtbF9oYXNoX3Zhcmlh bnQoIlN0dWRpZWQiKTsKLS0gIHZhcl9PcHRpbWFsICAgICA9IGNhbWxfaGFzaF92YXJpYW50KCJP cHRpbWFsIik7Ci0tCi0tICBwY3JlX2NhbGxvdXQgPSAmcGNyZV9jYWxsb3V0X2hhbmRsZXI7Ci0t Ci0tICByZXR1cm4gVmFsX3VuaXQ7Ci0tfQotLQotLS8qIEZpbmFsaXppbmcgZGVhbGxvY2F0aW9u IGZ1bmN0aW9uIGZvciBjaGFydGFibGUgc2V0cyAqLwotLXN0YXRpYyB2b2lkIHBjcmVfZGVhbGxv Y190YWJsZXModmFsdWUgdl90YWJsZXMpCi0teyAocGNyZV9mcmVlKSgodm9pZCAqKSBnZXRfdGFi bGVzKHZfdGFibGVzKSk7IH0KLS0KLS0vKiBGaW5hbGl6aW5nIGRlYWxsb2NhdGlvbiBmdW5jdGlv biBmb3IgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9ucyAqLwotLXN0YXRpYyB2b2lkIHBjcmVf ZGVhbGxvY19yZWdleHAodmFsdWUgdl9yZXgpCi0tewotLSAgdm9pZCAqZXh0cmEgPSBnZXRfZXh0 cmEodl9yZXgpOwotLSAgaWYgKGV4dHJhICE9IE5VTEwpCi0tI2lmZGVmIFBDUkVfU1RVRFlfSklU X0NPTVBJTEUKLS0gICAgcGNyZV9mcmVlX3N0dWR5KGV4dHJhKTsKLS0jZWxzZQotLSAgICBwY3Jl X2ZyZWUoZXh0cmEpOwotLSNlbmRpZgotLSAgKHBjcmVfZnJlZSkoZ2V0X3JleCh2X3JleCkpOwot LX0KLS0KLS0KLS0vKiBSYWlzaW5nIGV4Y2VwdGlvbnMgKi8KLS0KLS1AQ0FNTG5vcmV0dXJuX3N0 YXJ0QAotLXN0YXRpYyBpbmxpbmUgdm9pZCByYWlzZV9wY3JlX2Vycm9yKHZhbHVlIHZfYXJnKQot LUBDQU1Mbm9yZXR1cm5fZW5kQDsKLS0KLS1AQ0FNTG5vcmV0dXJuX3N0YXJ0QAotLXN0YXRpYyBp bmxpbmUgdm9pZCByYWlzZV9wYXJ0aWFsKCkKLS1AQ0FNTG5vcmV0dXJuX2VuZEA7Ci0tCi0tQENB TUxub3JldHVybl9zdGFydEAKLS1zdGF0aWMgaW5saW5lIHZvaWQgcmFpc2VfYmFkX3BhcnRpYWwo KQotLUBDQU1Mbm9yZXR1cm5fZW5kQDsKLS0KLS1AQ0FNTG5vcmV0dXJuX3N0YXJ0QAotLXN0YXRp YyBpbmxpbmUgdm9pZCByYWlzZV9iYWRfdXRmOCgpCi0tQENBTUxub3JldHVybl9lbmRAOwotLQot LUBDQU1Mbm9yZXR1cm5fc3RhcnRACi0tc3RhdGljIGlubGluZSB2b2lkIHJhaXNlX2JhZF91dGY4 X29mZnNldCgpCi0tQENBTUxub3JldHVybl9lbmRAOwotLQotLUBDQU1Mbm9yZXR1cm5fc3RhcnRA Ci0tc3RhdGljIGlubGluZSB2b2lkIHJhaXNlX21hdGNoX2xpbWl0KCkKLS1AQ0FNTG5vcmV0dXJu X2VuZEA7Ci0tCi0tQENBTUxub3JldHVybl9zdGFydEAKLS1zdGF0aWMgaW5saW5lIHZvaWQgcmFp c2VfcmVjdXJzaW9uX2xpbWl0KCkKLS1AQ0FNTG5vcmV0dXJuX2VuZEA7Ci0tCi0tQENBTUxub3Jl dHVybl9zdGFydEAKLS1zdGF0aWMgaW5saW5lIHZvaWQgcmFpc2VfYmFkX3BhdHRlcm4oY29uc3Qg Y2hhciAqbXNnLCBpbnQgcG9zKQotLUBDQU1Mbm9yZXR1cm5fZW5kQDsKLS0KLS1AQ0FNTG5vcmV0 dXJuX3N0YXJ0QAotLXN0YXRpYyBpbmxpbmUgdm9pZCByYWlzZV9pbnRlcm5hbF9lcnJvcihjaGFy ICptc2cpCi0tQENBTUxub3JldHVybl9lbmRAOwotLQotLXN0YXRpYyBpbmxpbmUgdm9pZCByYWlz ZV9wY3JlX2Vycm9yKHZhbHVlIHZfYXJnKQotLXsgY2FtbF9yYWlzZV93aXRoX2FyZygqcGNyZV9l eGNfRXJyb3IsIHZfYXJnKTsgfQotLQotLXN0YXRpYyBpbmxpbmUgdm9pZCByYWlzZV9wYXJ0aWFs KCkgeyByYWlzZV9wY3JlX2Vycm9yKFZhbF9pbnQoMCkpOyB9Ci0tc3RhdGljIGlubGluZSB2b2lk IHJhaXNlX2JhZF9wYXJ0aWFsKCkgeyByYWlzZV9wY3JlX2Vycm9yKFZhbF9pbnQoMSkpOyB9Ci0t c3RhdGljIGlubGluZSB2b2lkIHJhaXNlX2JhZF91dGY4KCkgeyByYWlzZV9wY3JlX2Vycm9yKFZh bF9pbnQoMikpOyB9Ci0tc3RhdGljIGlubGluZSB2b2lkIHJhaXNlX2JhZF91dGY4X29mZnNldCgp IHsgcmFpc2VfcGNyZV9lcnJvcihWYWxfaW50KDMpKTsgfQotLXN0YXRpYyBpbmxpbmUgdm9pZCBy YWlzZV9tYXRjaF9saW1pdCgpIHsgcmFpc2VfcGNyZV9lcnJvcihWYWxfaW50KDQpKTsgfQotLXN0 YXRpYyBpbmxpbmUgdm9pZCByYWlzZV9yZWN1cnNpb25fbGltaXQoKSB7IHJhaXNlX3BjcmVfZXJy b3IoVmFsX2ludCg1KSk7IH0KLS0KLS1zdGF0aWMgaW5saW5lIHZvaWQgcmFpc2VfYmFkX3BhdHRl cm4oY29uc3QgY2hhciAqbXNnLCBpbnQgcG9zKQotLXsKLS0gIENBTUxwYXJhbTAoKTsKLS0gIENB TUxsb2NhbDEodl9tc2cpOwotLSAgdmFsdWUgdl9hcmc7Ci0tICB2X21zZyA9IGNhbWxfY29weV9z dHJpbmcobXNnKTsKLS0gIHZfYXJnID0gY2FtbF9hbGxvY19zbWFsbCgyLCAwKTsKLS0gIEZpZWxk KHZfYXJnLCAwKSA9IHZfbXNnOwotLSAgRmllbGQodl9hcmcsIDEpID0gVmFsX2ludChwb3MpOwot LSAgcmFpc2VfcGNyZV9lcnJvcih2X2FyZyk7Ci0tICBDQU1Mbm9yZXR1cm47Ci0tfQotLQotLXN0 YXRpYyBpbmxpbmUgdm9pZCByYWlzZV9pbnRlcm5hbF9lcnJvcihjaGFyICptc2cpCi0tewotLSAg Q0FNTHBhcmFtMCgpOwotLSAgQ0FNTGxvY2FsMSh2X21zZyk7Ci0tICB2YWx1ZSB2X2FyZzsKLS0g IHZfbXNnID0gY2FtbF9jb3B5X3N0cmluZyhtc2cpOwotLSAgdl9hcmcgPSBjYW1sX2FsbG9jX3Nt YWxsKDEsIDEpOwotLSAgRmllbGQodl9hcmcsIDApID0gdl9tc2c7Ci0tICByYWlzZV9wY3JlX2Vy cm9yKHZfYXJnKTsKLS0gIENBTUxub3JldHVybjsKLS19Ci0tCi0tLyogUENSRSBwYXR0ZXJuIGNv bXBpbGF0aW9uICovCi0tCi0tc3RhdGljIHN0cnVjdCBjdXN0b21fb3BlcmF0aW9ucyByZWdleHBf b3BzID0gewotLSAgInBjcmVfb2NhbWxfcmVnZXhwIiwKLS0gIHBjcmVfZGVhbGxvY19yZWdleHAs Ci0tICBjdXN0b21fY29tcGFyZV9kZWZhdWx0LAotLSAgY3VzdG9tX2hhc2hfZGVmYXVsdCwKLS0g IGN1c3RvbV9zZXJpYWxpemVfZGVmYXVsdCwKLS0gIGN1c3RvbV9kZXNlcmlhbGl6ZV9kZWZhdWx0 LAotLSAgY3VzdG9tX2NvbXBhcmVfZXh0X2RlZmF1bHQKLS19OwotLQotLS8qIE1ha2VzIGNvbXBp bGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBmcm9tIGNvbXBpbGF0aW9uIG9wdGlvbnMsIGFuIG9wdGlv bmFsCi0tICAgdmFsdWUgb2YgY2hhcnRhYmxlcyBhbmQgdGhlIHBhdHRlcm4gc3RyaW5nICovCi0t Ci0tQ0FNTHByaW0gdmFsdWUgcGNyZV9jb21waWxlX3N0dWIoQGludG5hdEAgdl9vcHQsIHZhbHVl IHZfdGFibGVzLCB2YWx1ZSB2X3BhdCkKLS17Ci0tICB2YWx1ZSB2X3JleDsgIC8qIEZpbmFsIHJl c3VsdCAtPiB2YWx1ZSBvZiB0eXBlIFtyZWdleHBdICovCi0tICBjb25zdCBjaGFyICplcnJvciA9 IE5VTEw7ICAvKiBwb2ludGVyIHRvIHBvc3NpYmxlIGVycm9yIG1lc3NhZ2UgKi8KLS0gIGludCBl cnJvcl9vZnMgPSAwOyAgLyogb2Zmc2V0IGluIHRoZSBwYXR0ZXJuIGF0IHdoaWNoIGVycm9yIG9j Y3VycmVkICovCi0tCi0tICAvKiBJZiB2X3RhYmxlcyA9IFtOb25lXSwgdGhlbiBwb2ludGVyIHRv IHRhYmxlcyBpcyBOVUxMLCBvdGhlcndpc2UKLS0gICAgIHNldCBpdCB0byB0aGUgYXBwcm9wcmlh dGUgdmFsdWUgKi8KLS0gIGNoYXJ0YWJsZXMgdGFibGVzID0KLS0gICAgKHZfdGFibGVzID09IE5v bmUpID8gTlVMTCA6IGdldF90YWJsZXMoRmllbGQodl90YWJsZXMsIDApKTsKLS0KLS0gIC8qIENv bXBpbGVzIHRoZSBwYXR0ZXJuICovCi0tICBwY3JlICpyZWdleHAgPSBwY3JlX2NvbXBpbGUoU3Ry aW5nX3ZhbCh2X3BhdCksIEBJbnRfdmFsQCh2X29wdCksICZlcnJvciwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmZXJyb3Jfb2ZzLCB0YWJsZXMpOwotLQotLSAgLyogUmFpc2VzIGFw cHJvcHJpYXRlIGV4Y2VwdGlvbiB3aXRoIFtCYWRQYXR0ZXJuXSBpZiB0aGUgcGF0dGVybgotLSAg ICAgY291bGQgbm90IGJlIGNvbXBpbGVkICovCi0tICBpZiAocmVnZXhwID09IE5VTEwpIHJhaXNl X2JhZF9wYXR0ZXJuKGVycm9yLCBlcnJvcl9vZnMpOwotLQotLSAgLyogR0Mgd2lsbCBkbyBhIGZ1 bGwgY3ljbGUgZXZlcnkgMV8wMDBfMDAwIHJlZ2V4cCBhbGxvY2F0aW9ucyAoYSB0eXBpY2FsCi0t ICAgICByZWdleHAgcHJvYmFibHkgY29uc3VtZXMgbGVzcyB0aGFuIDEwMCBieXRlcyAtPiBtYXhp bXVtIG9mIDEwMF8wMDBfMDAwCi0tICAgICBieXRlcyB1bnJlY2xhaW1lZCByZWdleHBzKSAqLwot LSAgdl9yZXggPQotLSAgICBjYW1sX2FsbG9jX2N1c3RvbSgmcmVnZXhwX29wcywKLS0gICAgICAg IHNpemVvZihzdHJ1Y3QgcGNyZV9vY2FtbF9yZWdleHApLCAxLCAxMDAwMDAwKTsKLS0KLS0gIHNl dF9yZXgodl9yZXgsIHJlZ2V4cCk7Ci0tICBzZXRfZXh0cmEodl9yZXgsIE5VTEwpOwotLSAgc2V0 X3N0dWRpZWQodl9yZXgsIDApOwotLQotLSAgcmV0dXJuIHZfcmV4OwotLX0KLS0KLS1DQU1McHJp bSB2YWx1ZSBwY3JlX2NvbXBpbGVfc3R1Yl9iYyh2YWx1ZSB2X29wdCwgdmFsdWUgdl90YWJsZXMs IHZhbHVlIHZfcGF0KQotLXsKLS0gIHJldHVybiBwY3JlX2NvbXBpbGVfc3R1YihASW50X3ZhbF92 YWxAKHZfb3B0KSwgdl90YWJsZXMsIHZfcGF0KTsKLS19Ci0tCi0tCi0tLyogU3R1ZGllcyBhIHJl Z2V4cCAqLwotLUNBTUxwcmltIHZhbHVlIHBjcmVfc3R1ZHlfc3R1Yih2YWx1ZSB2X3JleCkKLS17 Ci0tICAvKiBJZiBpdCBoYXMgbm90IHlldCBiZWVuIHN0dWRpZWQgKi8KLS0gIGlmICghIGdldF9z dHVkaWVkKHZfcmV4KSkgewotLSAgICBjb25zdCBjaGFyICplcnJvciA9IE5VTEw7Ci0tICAgIHBj cmVfZXh0cmEgKmV4dHJhID0gcGNyZV9zdHVkeShnZXRfcmV4KHZfcmV4KSwgMCwgJmVycm9yKTsK LS0gICAgaWYgKGVycm9yICE9IE5VTEwpIGNhbWxfaW52YWxpZF9hcmd1bWVudCgoY2hhciAqKSBl cnJvcik7Ci0tICAgIHNldF9leHRyYSh2X3JleCwgZXh0cmEpOwotLSAgICBzZXRfc3R1ZGllZCh2 X3JleCwgMSk7Ci0tICB9Ci0tICByZXR1cm4gdl9yZXg7Ci0tfQotLQotLQotLS8qIEdldHMgdGhl IG1hdGNoIGxpbWl0IHJlY3Vyc2lvbiBvZiBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBpZiBpdCBleGlz dHMgKi8KLS1DQU1McHJpbSB2YWx1ZSBwY3JlX2dldF9tYXRjaF9saW1pdF9yZWN1cnNpb25fc3R1 Yih2YWx1ZSB2X3JleCkKLS17Ci0tICBwY3JlX2V4dHJhICpleHRyYSA9IGdldF9leHRyYSh2X3Jl eCk7Ci0tICBpZiAoZXh0cmEgPT0gTlVMTCkgcmV0dXJuIE5vbmU7Ci0tICBpZiAoZXh0cmEtPmZs YWdzICYgUENSRV9FWFRSQV9NQVRDSF9MSU1JVF9SRUNVUlNJT04pIHsKLS0gICAgdmFsdWUgdl9s aW0gPSBWYWxfaW50KGV4dHJhLT5tYXRjaF9saW1pdF9yZWN1cnNpb24pOwotLSAgICB2YWx1ZSB2 X3JlcyA9IGNhbWxfYWxsb2Nfc21hbGwoMSwgMCk7Ci0tICAgIEZpZWxkKHZfcmVzLCAwKSA9IHZf bGltOwotLSAgICByZXR1cm4gdl9yZXM7Ci0tICB9Ci0tICByZXR1cm4gTm9uZTsKLS19Ci0tCi0t LyogR2V0cyB0aGUgbWF0Y2ggbGltaXQgb2YgYSByZWd1bGFyIGV4cHJlc3Npb24gaWYgaXQgZXhp c3RzICovCi0tQ0FNTHByaW0gdmFsdWUgcGNyZV9nZXRfbWF0Y2hfbGltaXRfc3R1Yih2YWx1ZSB2 X3JleCkKLS17Ci0tICBwY3JlX2V4dHJhICpleHRyYSA9IGdldF9leHRyYSh2X3JleCk7Ci0tICBp ZiAoZXh0cmEgPT0gTlVMTCkgcmV0dXJuIE5vbmU7Ci0tICBpZiAoZXh0cmEtPmZsYWdzICYgUENS RV9FWFRSQV9NQVRDSF9MSU1JVCkgewotLSAgICB2YWx1ZSB2X2xpbSA9IFZhbF9pbnQoZXh0cmEt Pm1hdGNoX2xpbWl0KTsKLS0gICAgdmFsdWUgdl9yZXMgPSBjYW1sX2FsbG9jX3NtYWxsKDEsIDAp OwotLSAgICBGaWVsZCh2X3JlcywgMCkgPSB2X2xpbTsKLS0gICAgcmV0dXJuIHZfcmVzOwotLSAg fQotLSAgcmV0dXJuIE5vbmU7Ci0tfQotLQotLQotLS8qIFNldHMgYSBtYXRjaCBsaW1pdCBmb3Ig YSByZWd1bGFyIGV4cHJlc3Npb24gaW1wZXJhdGl2ZWx5ICovCi0tCi0tQ0FNTHByaW0gdmFsdWUg cGNyZV9zZXRfaW1wX21hdGNoX2xpbWl0X3N0dWIodmFsdWUgdl9yZXgsIEBpbnRuYXRAIHZfbGlt KQotLXsKLS0gIHBjcmVfZXh0cmEgKmV4dHJhID0gZ2V0X2V4dHJhKHZfcmV4KTsKLS0gIGlmIChl eHRyYSA9PSBOVUxMKSB7Ci0tICAgIGV4dHJhID0gcGNyZV9tYWxsb2Moc2l6ZW9mKHBjcmVfZXh0 cmEpKTsKLS0gICAgZXh0cmEtPmZsYWdzID0gUENSRV9FWFRSQV9NQVRDSF9MSU1JVDsKLS0gICAg c2V0X2V4dHJhKHZfcmV4LCBleHRyYSk7Ci0tICB9IGVsc2UgewotLSAgICB1bnNpZ25lZCBsb25n ICpmbGFnc19wdHIgPSAmZXh0cmEtPmZsYWdzOwotLSAgICAqZmxhZ3NfcHRyID0gUENSRV9FWFRS QV9NQVRDSF9MSU1JVCB8ICpmbGFnc19wdHI7Ci0tICB9Ci0tICBleHRyYS0+bWF0Y2hfbGltaXQg PSBASW50X3ZhbEAodl9saW0pOwotLSAgcmV0dXJuIHZfcmV4OwotLX0KLS0KLS1DQU1McHJpbSB2 YWx1ZSBwY3JlX3NldF9pbXBfbWF0Y2hfbGltaXRfc3R1Yl9iYyh2YWx1ZSB2X3JleCwgdmFsdWUg dl9saW0pCi0tewotLSAgcmV0dXJuIHBjcmVfc2V0X2ltcF9tYXRjaF9saW1pdF9zdHViKHZfcmV4 LCBASW50X3ZhbF92YWxAKHZfbGltKSk7Ci0tfQotLQotLQotLS8qIFNldHMgYSBtYXRjaCBsaW1p dCByZWN1cnNpb24gZm9yIGEgcmVndWxhciBleHByZXNzaW9uIGltcGVyYXRpdmVseSAqLwotLQot LUNBTUxwcmltIHZhbHVlIHBjcmVfc2V0X2ltcF9tYXRjaF9saW1pdF9yZWN1cnNpb25fc3R1YigK LS0gICAgdmFsdWUgdl9yZXgsIEBpbnRuYXRAIHZfbGltKQotLXsKLS0gIHBjcmVfZXh0cmEgKmV4 dHJhID0gZ2V0X2V4dHJhKHZfcmV4KTsKLS0gIGlmIChleHRyYSA9PSBOVUxMKSB7Ci0tICAgIGV4 dHJhID0gcGNyZV9tYWxsb2Moc2l6ZW9mKHBjcmVfZXh0cmEpKTsKLS0gICAgZXh0cmEtPmZsYWdz ID0gUENSRV9FWFRSQV9NQVRDSF9MSU1JVF9SRUNVUlNJT047Ci0tICAgIHNldF9leHRyYSh2X3Jl eCwgZXh0cmEpOwotLSAgfSBlbHNlIHsKLS0gICAgdW5zaWduZWQgbG9uZyAqZmxhZ3NfcHRyID0g JmV4dHJhLT5mbGFnczsKLS0gICAgKmZsYWdzX3B0ciA9IFBDUkVfRVhUUkFfTUFUQ0hfTElNSVRf UkVDVVJTSU9OIHwgKmZsYWdzX3B0cjsKLS0gIH0KLS0gIGV4dHJhLT5tYXRjaF9saW1pdF9yZWN1 cnNpb24gPSBASW50X3ZhbEAodl9saW0pOwotLSAgcmV0dXJuIHZfcmV4OwotLX0KLS0KLS1DQU1M cHJpbSB2YWx1ZSBwY3JlX3NldF9pbXBfbWF0Y2hfbGltaXRfcmVjdXJzaW9uX3N0dWJfYmMoCi0t ICAgIHZhbHVlIHZfcmV4LCB2YWx1ZSB2X2xpbSkKLS17Ci0tICByZXR1cm4gcGNyZV9zZXRfaW1w X21hdGNoX2xpbWl0X3JlY3Vyc2lvbl9zdHViKHZfcmV4LCBASW50X3ZhbF92YWxAKHZfbGltKSk7 Ci0tfQotLQotLQotLS8qIFBlcmZvcm1zIHRoZSBjYWxsIHRvIHRoZSBwY3JlX2Z1bGxpbmZvIGZ1 bmN0aW9uICovCi0tc3RhdGljIGlubGluZSBpbnQgcGNyZV9mdWxsaW5mb19zdHViKHZhbHVlIHZf cmV4LCBpbnQgd2hhdCwgdm9pZCAqd2hlcmUpCi0tewotLSAgcmV0dXJuIHBjcmVfZnVsbGluZm8o Z2V0X3JleCh2X3JleCksIGdldF9leHRyYSh2X3JleCksIHdoYXQsIHdoZXJlKTsKLS19Ci0tCi0t LyogU29tZSBzdHVicyBmb3IgaW5mby1mdW5jdGlvbnMgKi8KLS0KLS0vKiBHZW5lcmljIG1hY3Jv IGZvciBnZXR0aW5nIGludGVnZXIgcmVzdWx0cyBmcm9tIHBjcmVfZnVsbGluZm8gKi8KLS0jZGVm aW5lIG1ha2VfaW50bmF0X2luZm8odHAsIG5hbWUsIG9wdGlvbikgXAotLSAgQ0FNTHByaW0gQGlu dG5hdEAgcGNyZV8jI25hbWUjI19zdHViKHZhbHVlIHZfcmV4KSBcCi0tICB7IFwKLS0gICAgdHAg b3B0aW9uczsgXAotLSAgICBjb25zdCBpbnQgcmV0ID0gcGNyZV9mdWxsaW5mb19zdHViKHZfcmV4 LCBQQ1JFX0lORk9fIyNvcHRpb24sICZvcHRpb25zKTsgXAotLSAgICBpZiAocmV0ICE9IDApIHJh aXNlX2ludGVybmFsX2Vycm9yKCJwY3JlXyMjbmFtZSMjX3N0dWIiKTsgXAotLSAgICByZXR1cm4g QFZhbF9pbnRAKG9wdGlvbnMpOyBcCi0tICB9IFwKLS0gIFwKLS0gIENBTUxwcmltIHZhbHVlIHBj cmVfIyNuYW1lIyNfc3R1Yl9iYyh2YWx1ZSB2X3JleCkgXAotLSAgeyByZXR1cm4gVmFsX2ludChw Y3JlXyMjbmFtZSMjX3N0dWIodl9yZXgpKTsgfQotLQotLW1ha2VfaW50bmF0X2luZm8odW5zaWdu ZWQgbG9uZywgb3B0aW9ucywgT1BUSU9OUykKLS1tYWtlX2ludG5hdF9pbmZvKHNpemVfdCwgc2l6 ZSwgU0laRSkKLS1tYWtlX2ludG5hdF9pbmZvKHNpemVfdCwgc3R1ZHlzaXplLCBTVFVEWVNJWkUp Ci0tbWFrZV9pbnRuYXRfaW5mbyhpbnQsIGNhcHR1cmVjb3VudCwgQ0FQVFVSRUNPVU5UKQotLW1h a2VfaW50bmF0X2luZm8oaW50LCBiYWNrcmVmbWF4LCBCQUNLUkVGTUFYKQotLW1ha2VfaW50bmF0 X2luZm8oaW50LCBuYW1lY291bnQsIE5BTUVDT1VOVCkKLS1tYWtlX2ludG5hdF9pbmZvKGludCwg bmFtZWVudHJ5c2l6ZSwgTkFNRUVOVFJZU0laRSkKLS0KLS1DQU1McHJpbSB2YWx1ZSBwY3JlX2Zp cnN0Ynl0ZV9zdHViKHZhbHVlIHZfcmV4KQotLXsKLS0gIGludCBmaXJzdGJ5dGU7Ci0tICBjb25z dCBpbnQgcmV0ID0gcGNyZV9mdWxsaW5mb19zdHViKHZfcmV4LCBQQ1JFX0lORk9fRklSU1RCWVRF LCAmZmlyc3RieXRlKTsKLS0KLS0gIGlmIChyZXQgIT0gMCkgcmFpc2VfaW50ZXJuYWxfZXJyb3Io InBjcmVfZmlyc3RieXRlX3N0dWIiKTsKLS0KLS0gIHN3aXRjaCAoZmlyc3RieXRlKSB7Ci0tICAg IGNhc2UgLTEgOiByZXR1cm4gdmFyX1N0YXJ0X29ubHk7IGJyZWFrOyAgLyogW2BTdGFydF9vbmx5 XSAqLwotLSAgICBjYXNlIC0yIDogcmV0dXJuIHZhcl9BTkNIT1JFRDsgYnJlYWs7ICAgIC8qIFtg QU5DSE9SRURdICovCi0tICAgIGRlZmF1bHQgOgotLSAgICAgIGlmIChmaXJzdGJ5dGUgPCAwICkg IC8qIFNob3VsZCBub3QgaGFwcGVuICovCi0tICAgICAgICByYWlzZV9pbnRlcm5hbF9lcnJvcigi cGNyZV9maXJzdGJ5dGVfc3R1YiIpOwotLSAgICAgIGVsc2UgewotLSAgICAgICAgdmFsdWUgdl9m aXJzdGJ5dGU7Ci0tICAgICAgICAvKiBBbGxvY2F0ZXMgdGhlIG5vbi1jb25zdGFudCBjb25zdHJ1 Y3RvciBbYENoYXIgb2YgY2hhcl0gYW5kIGZpbGxzCi0tICAgICAgICAgICBpbiB0aGUgYXBwcm9w cmlhdGUgdmFsdWUgKi8KLS0gICAgICAgIHZfZmlyc3RieXRlID0gY2FtbF9hbGxvY19zbWFsbCgy LCAwKTsKLS0gICAgICAgIEZpZWxkKHZfZmlyc3RieXRlLCAwKSA9IHZhcl9DaGFyOwotLSAgICAg ICAgRmllbGQodl9maXJzdGJ5dGUsIDEpID0gVmFsX2ludChmaXJzdGJ5dGUpOwotLSAgICAgICAg cmV0dXJuIHZfZmlyc3RieXRlOwotLSAgICAgIH0KLS0gIH0KLS19Ci0tCi0tQ0FNTHByaW0gdmFs dWUgcGNyZV9maXJzdHRhYmxlX3N0dWIodmFsdWUgdl9yZXgpCi0tewotLSAgY29uc3QgdW5zaWdu ZWQgY2hhciAqZnRhYmxlOwotLQotLSAgaW50IHJldCA9Ci0tICAgIHBjcmVfZnVsbGluZm9fc3R1 Yih2X3JleCwgUENSRV9JTkZPX0ZJUlNUVEFCTEUsICh2b2lkICopICZmdGFibGUpOwotLQotLSAg aWYgKHJldCAhPSAwKSByYWlzZV9pbnRlcm5hbF9lcnJvcigicGNyZV9maXJzdHRhYmxlX3N0dWIi KTsKLS0KLS0gIGlmIChmdGFibGUgPT0gTlVMTCkgcmV0dXJuIE5vbmU7Ci0tICBlbHNlIHsKLS0g ICAgdmFsdWUgdl9yZXMsIHZfcmVzX3N0cjsKLS0gICAgY2hhciAqcHRyOwotLSAgICBpbnQgaTsK LS0KLS0gICAgQmVnaW5fcm9vdHMxKHZfcmV4KTsKLS0gICAgICB2X3Jlc19zdHIgPSBjYW1sX2Fs bG9jX3N0cmluZygzMik7Ci0tICAgIEVuZF9yb290cygpOwotLQotLSAgICBwdHIgPSBTdHJpbmdf dmFsKHZfcmVzX3N0cik7Ci0tICAgIGZvciAoaSA9IDA7IGkgPD0gMzE7ICsraSkgeyAqcHRyID0g KmZ0YWJsZTsgKytwdHI7ICsrZnRhYmxlOyB9Ci0tCi0tICAgIEJlZ2luX3Jvb3RzMSh2X3Jlc19z dHIpOwotLSAgICAgIC8qIEFsbG9jYXRlcyBbU29tZSBzdHJpbmddIGZyb20gZmlyc3R0YWJsZSAq LwotLSAgICAgIHZfcmVzID0gY2FtbF9hbGxvY19zbWFsbCgxLCAwKTsKLS0gICAgRW5kX3Jvb3Rz KCk7Ci0tCi0tICAgIEZpZWxkKHZfcmVzLCAwKSA9IHZfcmVzX3N0cjsKLS0KLS0gICAgcmV0dXJu IHZfcmVzOwotLSAgfQotLX0KLS0KLS1DQU1McHJpbSB2YWx1ZSBwY3JlX2xhc3RsaXRlcmFsX3N0 dWIodmFsdWUgdl9yZXgpCi0tewotLSAgaW50IGxhc3RsaXRlcmFsOwotLSAgY29uc3QgaW50IHJl dCA9IHBjcmVfZnVsbGluZm9fc3R1Yih2X3JleCwgUENSRV9JTkZPX0xBU1RMSVRFUkFMLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGFzdGxpdGVyYWwpOwotLQot LSAgaWYgKHJldCAhPSAwKSByYWlzZV9pbnRlcm5hbF9lcnJvcigicGNyZV9sYXN0bGl0ZXJhbF9z dHViIik7Ci0tCi0tICBpZiAobGFzdGxpdGVyYWwgPT0gLTEpIHJldHVybiBOb25lOwotLSAgaWYg KGxhc3RsaXRlcmFsIDwgMCkgcmFpc2VfaW50ZXJuYWxfZXJyb3IoInBjcmVfbGFzdGxpdGVyYWxf c3R1YiIpOwotLSAgZWxzZSB7Ci0tICAgIC8qIEFsbG9jYXRlcyBbU29tZSBjaGFyXSAqLwotLSAg ICB2YWx1ZSB2X3JlcyA9IGNhbWxfYWxsb2Nfc21hbGwoMSwgMCk7Ci0tICAgIEZpZWxkKHZfcmVz LCAwKSA9IFZhbF9pbnQobGFzdGxpdGVyYWwpOwotLSAgICByZXR1cm4gdl9yZXM7Ci0tICB9Ci0t fQotLQotLUNBTUxwcmltIHZhbHVlIHBjcmVfc3R1ZHlfc3RhdF9zdHViKHZhbHVlIHZfcmV4KQot LXsKLS0gIC8qIEdlbmVyYXRlcyB0aGUgYXBwcm9wcmlhdGUgY29uc3RhbnQgY29uc3RydWN0b3Ig W2BPcHRpbWFsXSBvcgotLSAgICAgW2BTdHVkaWVkXSBpZiByZWdleHAgaGFzIGFscmVhZHkgYmVl biBzdHVkaWVkICovCi0tICBpZiAoZ2V0X3N0dWRpZWQodl9yZXgpKQotLSAgICByZXR1cm4gKGdl dF9leHRyYSh2X3JleCkgPT0gTlVMTCkgPyB2YXJfT3B0aW1hbCA6IHZhcl9TdHVkaWVkOwotLQot LSAgcmV0dXJuIHZhcl9Ob3Rfc3R1ZGllZDsgIC8qIG90aGVyd2lzZSBbYE5vdF9zdHVkaWVkXSAq LwotLX0KLS0KLS1AQ0FNTG5vcmV0dXJuX3N0YXJ0QAotLXN0YXRpYyBpbmxpbmUgdm9pZCBoYW5k bGVfZXhlY19lcnJvcihjaGFyICpsb2MsIGNvbnN0IGludCByZXQpCi0tQENBTUxub3JldHVybl9l bmRAOwotLQotLXN0YXRpYyBpbmxpbmUgdm9pZCBoYW5kbGVfZXhlY19lcnJvcihjaGFyICpsb2Ms IGNvbnN0IGludCByZXQpCi0tewotLSAgc3dpdGNoIChyZXQpIHsKLS0gICAgLyogRGVkaWNhdGVk IGV4Y2VwdGlvbnMgKi8KLS0gICAgY2FzZSBQQ1JFX0VSUk9SX05PTUFUQ0ggOiBjYW1sX3JhaXNl X25vdF9mb3VuZCgpOwotLSAgICBjYXNlIFBDUkVfRVJST1JfUEFSVElBTCA6IHJhaXNlX3BhcnRp YWwoKTsKLS0gICAgY2FzZSBQQ1JFX0VSUk9SX01BVENITElNSVQgOiByYWlzZV9tYXRjaF9saW1p dCgpOwotLSAgICBjYXNlIFBDUkVfRVJST1JfQkFEUEFSVElBTCA6IHJhaXNlX2JhZF9wYXJ0aWFs KCk7Ci0tICAgIGNhc2UgUENSRV9FUlJPUl9CQURVVEY4IDogcmFpc2VfYmFkX3V0ZjgoKTsKLS0g ICAgY2FzZSBQQ1JFX0VSUk9SX0JBRFVURjhfT0ZGU0VUIDogcmFpc2VfYmFkX3V0Zjhfb2Zmc2V0 KCk7Ci0tICAgIGNhc2UgUENSRV9FUlJPUl9SRUNVUlNJT05MSU1JVCA6IHJhaXNlX3JlY3Vyc2lv bl9saW1pdCgpOwotLSAgICAvKiBVbmtub3duIGVycm9yICovCi0tICAgIGRlZmF1bHQgOiB7Ci0t ICAgICAgY2hhciBlcnJfYnVmWzEwMF07Ci0tICAgICAgc25wcmludGYoZXJyX2J1ZiwgMTAwLCAi JXM6IHVuaGFuZGxlZCBQQ1JFIGVycm9yIGNvZGU6ICVkIiwgbG9jLCByZXQpOwotLSAgICAgIHJh aXNlX2ludGVybmFsX2Vycm9yKGVycl9idWYpOwotLSAgICB9Ci0tICB9Ci0tfQotLQotLXN0YXRp YyBpbmxpbmUgdm9pZCBoYW5kbGVfcGNyZV9leGVjX3Jlc3VsdCgKLS0gIGludCAqb3ZlYywgdmFs dWUgdl9vdmVjLCBsb25nIG92ZWNfbGVuLCBsb25nIHN1Ympfc3RhcnQsIGludCByZXQpCi0tewot LSAgb3ZlY19kc3RfcHRyIG9jYW1sX292ZWMgPSAob3ZlY19kc3RfcHRyKSAmRmllbGQodl9vdmVj LCAwKTsKLS0gIGNvbnN0IGludCBzdWJncm91cHMyID0gcmV0ICogMjsKLS0gIGNvbnN0IGludCBz dWJncm91cHMyXzEgPSBzdWJncm91cHMyIC0gMTsKLS0gIGNvbnN0IGludCAqb3ZlY19zcmMgPSBv dmVjICsgc3ViZ3JvdXBzMl8xOwotLSAgb3ZlY19kc3RfcHRyIG92ZWNfY2xlYXJfc3RvcCA9IG9j YW1sX292ZWMgKyAob3ZlY19sZW4gKiAyKSAvIDM7Ci0tICBvdmVjX2RzdF9wdHIgb3ZlY19kc3Qg PSBvY2FtbF9vdmVjICsgc3ViZ3JvdXBzMl8xOwotLSAgY29weV9vdmVjdG9yKHN1Ympfc3RhcnQs IG92ZWNfc3JjLCBvdmVjX2RzdCwgc3ViZ3JvdXBzMik7Ci0tICB3aGlsZSAoKytvdmVjX2RzdCA8 IG92ZWNfY2xlYXJfc3RvcCkgKm92ZWNfZHN0ID0gLTE7Ci0tfQotLQotLQotLS8qIEV4ZWN1dGVz IGEgcGF0dGVybiBtYXRjaCB3aXRoIHJ1bnRpbWUgb3B0aW9ucywgYSByZWd1bGFyIGV4cHJlc3Np b24sIGEKLS0gICBtYXRjaGluZyBwb3NpdGlvbiwgdGhlIHN0YXJ0IG9mIHRoZSB0aGUgc3ViamVj dCBzdHJpbmcsIGEgc3ViamVjdCBzdHJpbmcsCi0tICAgYSBudW1iZXIgb2Ygc3ViZ3JvdXAgb2Zm c2V0cywgYW4gb2Zmc2V0IHZlY3RvciBhbmQgYW4gb3B0aW9uYWwgY2FsbG91dAotLSAgIGZ1bmN0 aW9uICovCi0tCi0tQ0FNTHByaW0gdmFsdWUgcGNyZV9leGVjX3N0dWIoCi0tICAgIEBpbnRuYXRA IHZfb3B0LCB2YWx1ZSB2X3JleCwgQGludG5hdEAgdl9wb3MsIEBpbnRuYXRAIHZfc3Vial9zdGFy dCwgdmFsdWUgdl9zdWJqLAotLSAgICB2YWx1ZSB2X292ZWMsIHZhbHVlIHZfbWF5YmVfY29mKQot LXsKLS0gIGludCByZXQ7Ci0tICBsb25nCi0tICAgIHBvcyA9IEBJbnRfdmFsQCh2X3BvcyksCi0t ICAgIGxlbiA9IGNhbWxfc3RyaW5nX2xlbmd0aCh2X3N1YmopLAotLSAgICBzdWJqX3N0YXJ0ID0g QEludF92YWxAKHZfc3Vial9zdGFydCk7Ci0tICBsb25nIG92ZWNfbGVuID0gV29zaXplX3ZhbCh2 X292ZWMpOwotLQotLSAgaWYgKHBvcyA+IGxlbiB8fCBwb3MgPCBzdWJqX3N0YXJ0KQotLSAgICBj YW1sX2ludmFsaWRfYXJndW1lbnQoIlBjcmUucGNyZV9leGVjX3N0dWI6IGlsbGVnYWwgcG9zaXRp b24iKTsKLS0KLS0gIGlmIChzdWJqX3N0YXJ0ID4gbGVuIHx8IHN1Ympfc3RhcnQgPCAwKQotLSAg ICBjYW1sX2ludmFsaWRfYXJndW1lbnQoIlBjcmUucGNyZV9leGVjX3N0dWI6IGlsbGVnYWwgc3Vi amVjdCBzdGFydCIpOwotLQotLSAgcG9zIC09IHN1Ympfc3RhcnQ7Ci0tICBsZW4gLT0gc3Vial9z dGFydDsKLS0KLS0gIHsKLS0gICAgY29uc3QgcGNyZSAqY29kZSA9IGdldF9yZXgodl9yZXgpOyAg LyogQ29tcGlsZWQgcGF0dGVybiAqLwotLSAgICBjb25zdCBwY3JlX2V4dHJhICpleHRyYSA9IGdl dF9leHRyYSh2X3JleCk7ICAvKiBFeHRyYSBpbmZvICovCi0tICAgIGNvbnN0IGNoYXIgKm9jYW1s X3N1YmogPQotLSAgICAgIFN0cmluZ192YWwodl9zdWJqKSArIHN1Ympfc3RhcnQ7ICAvKiBTdWJq ZWN0IHN0cmluZyAqLwotLSAgICBjb25zdCBpbnQgb3B0ID0gQEludF92YWxAKHZfb3B0KTsgIC8q IFJ1bnRpbWUgb3B0aW9ucyAqLwotLQotLSAgICAvKiBTcGVjaWFsIGNhc2Ugd2hlbiBubyBjYWxs b3V0IGZ1bmN0aW9ucyBzcGVjaWZpZWQgKi8KLS0gICAgaWYgKHZfbWF5YmVfY29mID09IE5vbmUp IHsKLS0gICAgICBpbnQgKm92ZWMgPSAoaW50ICopICZGaWVsZCh2X292ZWMsIDApOwotLQotLSAg ICAgIC8qIFBlcmZvcm1zIHRoZSBtYXRjaCAqLwotLSAgICAgIHJldCA9IHBjcmVfZXhlYyhjb2Rl LCBleHRyYSwgb2NhbWxfc3ViaiwgbGVuLCBwb3MsIG9wdCwgb3ZlYywgb3ZlY19sZW4pOwotLQot LSAgICAgIGlmIChyZXQgPCAwKSBoYW5kbGVfZXhlY19lcnJvcigicGNyZV9leGVjX3N0dWIiLCBy ZXQpOwotLSAgICAgIGVsc2UgaGFuZGxlX3BjcmVfZXhlY19yZXN1bHQob3ZlYywgdl9vdmVjLCBv dmVjX2xlbiwgc3Vial9zdGFydCwgcmV0KTsKLS0gICAgfQotLQotLSAgICAvKiBUaGVyZSBhcmUg Y2FsbG91dCBmdW5jdGlvbnMgKi8KLS0gICAgZWxzZSB7Ci0tICAgICAgdmFsdWUgdl9jb2YgPSBG aWVsZCh2X21heWJlX2NvZiwgMCk7Ci0tICAgICAgdmFsdWUgdl9zdWJzdHJpbmdzOwotLSAgICAg IGNoYXIgKnN1YmogPSBjYW1sX3N0YXRfYWxsb2Moc2l6ZW9mKGNoYXIpICogbGVuKTsKLS0gICAg ICBpbnQgKm92ZWMgPSBjYW1sX3N0YXRfYWxsb2Moc2l6ZW9mKGludCkgKiBvdmVjX2xlbik7Ci0t ICAgICAgc3RydWN0IGNvZCBjb2QgPSB7IDAsICh2YWx1ZSAqKSBOVUxMLCAodmFsdWUgKikgTlVM TCwgKHZhbHVlKSBOVUxMIH07Ci0tICAgICAgc3RydWN0IHBjcmVfZXh0cmEgbmV3X2V4dHJhID0K LS0jaWZkZWYgUENSRV9FWFRSQV9NQVRDSF9MSU1JVF9SRUNVUlNJT04KLS0jIGlmZGVmIFBDUkVf RVhUUkFfTUFSSwotLSMgIGlmZGVmIFBDUkVfRVhUUkFfRVhFQ1VUQUJMRV9KSVQKLS0gICAgICAg IHsgUENSRV9FWFRSQV9DQUxMT1VUX0RBVEEsIE5VTEwsIDAsIE5VTEwsIE5VTEwsIDAsIE5VTEws IE5VTEwgfTsKLS0jICBlbHNlCi0tICAgICAgICB7IFBDUkVfRVhUUkFfQ0FMTE9VVF9EQVRBLCBO VUxMLCAwLCBOVUxMLCBOVUxMLCAwLCBOVUxMIH07Ci0tIyAgZW5kaWYKLS0jIGVsc2UKLS0gICAg ICAgIHsgUENSRV9FWFRSQV9DQUxMT1VUX0RBVEEsIE5VTEwsIDAsIE5VTEwsIE5VTEwsIDAgfTsK LS0jIGVuZGlmCi0tI2Vsc2UKLS0gICAgICAgIHsgUENSRV9FWFRSQV9DQUxMT1VUX0RBVEEsIE5V TEwsIDAsIE5VTEwsIE5VTEwgfTsKLS0jZW5kaWYKLS0KLS0gICAgICBjb2Quc3Vial9zdGFydCA9 IHN1Ympfc3RhcnQ7Ci0tICAgICAgbWVtY3B5KHN1YmosIG9jYW1sX3N1YmosIGxlbik7Ci0tCi0t ICAgICAgQmVnaW5fcm9vdHM0KHZfcmV4LCB2X2NvZiwgdl9zdWJzdHJpbmdzLCB2X292ZWMpOwot LSAgICAgICAgQmVnaW5fcm9vdHMxKHZfc3Viaik7Ci0tICAgICAgICAgIHZfc3Vic3RyaW5ncyA9 IGNhbWxfYWxsb2Nfc21hbGwoMiwgMCk7Ci0tICAgICAgICBFbmRfcm9vdHMoKTsKLS0KLS0gICAg ICAgIEZpZWxkKHZfc3Vic3RyaW5ncywgMCkgPSB2X3N1Ymo7Ci0tICAgICAgICBGaWVsZCh2X3N1 YnN0cmluZ3MsIDEpID0gdl9vdmVjOwotLQotLSAgICAgICAgY29kLnZfc3Vic3RyaW5nc19wID0g JnZfc3Vic3RyaW5nczsKLS0gICAgICAgIGNvZC52X2NvZl9wID0gJnZfY29mOwotLSAgICAgICAg bmV3X2V4dHJhLmNhbGxvdXRfZGF0YSA9ICZjb2Q7Ci0tCi0tICAgICAgICBpZiAoZXh0cmEgPT0g TlVMTCkgewotLSAgICAgICAgICByZXQgPSBwY3JlX2V4ZWMoY29kZSwgJm5ld19leHRyYSwgc3Vi aiwgbGVuLCBwb3MsIG9wdCwgb3ZlYywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIG92ZWNf bGVuKTsKLS0gICAgICAgIH0KLS0gICAgICAgIGVsc2UgewotLSAgICAgICAgICBuZXdfZXh0cmEu ZmxhZ3MgPSBQQ1JFX0VYVFJBX0NBTExPVVRfREFUQSB8IGV4dHJhLT5mbGFnczsKLS0gICAgICAg ICAgbmV3X2V4dHJhLnN0dWR5X2RhdGEgPSBleHRyYS0+c3R1ZHlfZGF0YTsKLS0gICAgICAgICAg bmV3X2V4dHJhLm1hdGNoX2xpbWl0ID0gZXh0cmEtPm1hdGNoX2xpbWl0OwotLSAgICAgICAgICBu ZXdfZXh0cmEudGFibGVzID0gZXh0cmEtPnRhYmxlczsKLS0jaWZkZWYgUENSRV9FWFRSQV9NQVRD SF9MSU1JVF9SRUNVUlNJT04KLS0gICAgICAgICAgbmV3X2V4dHJhLm1hdGNoX2xpbWl0X3JlY3Vy c2lvbiA9IGV4dHJhLT5tYXRjaF9saW1pdF9yZWN1cnNpb247Ci0tI2VuZGlmCi0tCi0tICAgICAg ICAgIHJldCA9IHBjcmVfZXhlYyhjb2RlLCAmbmV3X2V4dHJhLCBzdWJqLCBsZW4sIHBvcywgb3B0 LCBvdmVjLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlY19sZW4pOwotLSAgICAgICAg fQotLQotLSAgICAgICAgY2FtbF9zdGF0X2ZyZWUoc3Viaik7Ci0tICAgICAgRW5kX3Jvb3RzKCk7 Ci0tCi0tICAgICAgaWYgKHJldCA8IDApIHsKLS0gICAgICAgIGNhbWxfc3RhdF9mcmVlKG92ZWMp OwotLSAgICAgICAgaWYgKHJldCA9PSBQQ1JFX0VSUk9SX0NBTExPVVQpIGNhbWxfcmFpc2UoY29k LnZfZXhuKTsKLS0gICAgICAgIGVsc2UgaGFuZGxlX2V4ZWNfZXJyb3IoInBjcmVfZXhlY19zdHVi KGNhbGxvdXQpIiwgcmV0KTsKLS0gICAgICB9IGVsc2UgewotLSAgICAgICAgaGFuZGxlX3BjcmVf ZXhlY19yZXN1bHQob3ZlYywgdl9vdmVjLCBvdmVjX2xlbiwgc3Vial9zdGFydCwgcmV0KTsKLS0g ICAgICAgIGNhbWxfc3RhdF9mcmVlKG92ZWMpOwotLSAgICAgIH0KLS0gICAgfQotLSAgfQotLQot LSAgcmV0dXJuIFZhbF91bml0OwotLX0KLS0KLS0vKiBCeXRlLWNvZGUgaG9vayBmb3IgcGNyZV9l eGVjX3N0dWIKLS0gICBOZWVkZWQsIGJlY2F1c2UgdGhlcmUgYXJlIG1vcmUgdGhhbiA1IGFyZ3Vt ZW50cyAqLwotLUNBTUxwcmltIHZhbHVlIHBjcmVfZXhlY19zdHViX2JjKHZhbHVlICphcmd2LCBp bnQgX191bnVzZWQgYXJnbikKLS17Ci0tICByZXR1cm4KLS0gICAgcGNyZV9leGVjX3N0dWIoCi0t ICAgICAgICBASW50X3ZhbF92YWxAKGFyZ3ZbMF0pLCBhcmd2WzFdLCBASW50X3ZhbF92YWxAKGFy Z3ZbMl0pLCBASW50X3ZhbF92YWxAKGFyZ3ZbM10pLAotLSAgICAgICAgYXJndls0XSwgYXJndls1 XSwgYXJndls2XSk7Ci0tfQotLQotLXN0YXRpYyBzdHJ1Y3QgY3VzdG9tX29wZXJhdGlvbnMgdGFi bGVzX29wcyA9IHsKLS0gICJwY3JlX29jYW1sX3RhYmxlcyIsCi0tICBwY3JlX2RlYWxsb2NfdGFi bGVzLAotLSAgY3VzdG9tX2NvbXBhcmVfZGVmYXVsdCwKLS0gIGN1c3RvbV9oYXNoX2RlZmF1bHQs Ci0tICBjdXN0b21fc2VyaWFsaXplX2RlZmF1bHQsCi0tICBjdXN0b21fZGVzZXJpYWxpemVfZGVm YXVsdCwKLS0gIGN1c3RvbV9jb21wYXJlX2V4dF9kZWZhdWx0Ci0tfTsKLS0KLS0vKiBHZW5lcmF0 ZXMgYSBuZXcgc2V0IG9mIGNoYXJ0YWJsZXMgZm9yIHRoZSBjdXJyZW50IGxvY2FsZSAoc2VlIG1h bgotLSAgIHBhZ2Ugb2YgUENSRSAqLwotLUNBTUxwcmltIHZhbHVlIHBjcmVfbWFrZXRhYmxlc19z dHViKHZhbHVlIF9fdW51c2VkIHZfdW5pdCkKLS17Ci0tICAvKiBHQyB3aWxsIGRvIGEgZnVsbCBj eWNsZSBldmVyeSAxXzAwMF8wMDAgdGFibGUgc2V0IGFsbG9jYXRpb25zIChvbmUKLS0gICAgIHRh YmxlIHNldCBjb25zdW1lcyA4NjQgYnl0ZXMgLT4gbWF4aW11bSBvZiA4NjRfMDAwXzAwMCBieXRl cyB1bnJlY2xhaW1lZAotLSAgICAgdGFibGUgc2V0cykgKi8KLS0gIGNvbnN0IHZhbHVlIHZfdGFi bGVzID0KLS0gICAgY2FtbF9hbGxvY19jdXN0b20oCi0tICAgICAgICAmdGFibGVzX29wcywgc2l6 ZW9mKHN0cnVjdCBwY3JlX29jYW1sX3RhYmxlcyksIDEsIDEwMDAwMDApOwotLSAgc2V0X3RhYmxl cyh2X3RhYmxlcywgcGNyZV9tYWtldGFibGVzKCkpOwotLSAgcmV0dXJuIHZfdGFibGVzOwotLX0K LS0KLS0vKiBXcmFwcyBhcm91bmQgdGhlIGlzc3BhY2UtZnVuY3Rpb24gKi8KLS1DQU1McHJpbSB2 YWx1ZSBwY3JlX2lzc3BhY2Vfc3R1Yih2YWx1ZSB2X2MpCi0tewotLSAgcmV0dXJuIFZhbF9ib29s KGlzc3BhY2UoSW50X3ZhbCh2X2MpKSk7Ci0tfQotLQotLQotLS8qIFJldHVybnMgbnVtYmVyIG9m IHN1YnN0cmluZyBhc3NvY2lhdGVkIHdpdGggYSBuYW1lICovCi0tCi0tQ0FNTHByaW0gQGludG5h dEAgcGNyZV9nZXRfc3RyaW5nbnVtYmVyX3N0dWIodmFsdWUgdl9yZXgsIHZhbHVlIHZfbmFtZSkK LS17Ci0tICBjb25zdCBpbnQgcmV0ID0gcGNyZV9nZXRfc3RyaW5nbnVtYmVyKGdldF9yZXgodl9y ZXgpLCBTdHJpbmdfdmFsKHZfbmFtZSkpOwotLSAgaWYgKHJldCA9PSBQQ1JFX0VSUk9SX05PU1VC U1RSSU5HKQotLSAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoIk5hbWVkIHN0cmluZyBub3QgZm91 bmQiKTsKLS0KLS0gIHJldHVybiBAVmFsX2ludEAocmV0KTsKLS19Ci0tCi0tQ0FNTHByaW0gdmFs dWUgcGNyZV9nZXRfc3RyaW5nbnVtYmVyX3N0dWJfYmModmFsdWUgdl9yZXgsIHZhbHVlIHZfbmFt ZSkKLS17Ci0tICByZXR1cm4gQFZhbF9WYWxfaW50QChwY3JlX2dldF9zdHJpbmdudW1iZXJfc3R1 Yih2X3JleCwgdl9uYW1lKSk7Ci0tfQotLQotLQotLS8qIFJldHVybnMgYXJyYXkgb2YgbmFtZXMg b2YgbmFtZWQgc3Vic3RyaW5ncyBpbiBhIHJlZ2V4cCAqLwotLUNBTUxwcmltIHZhbHVlIHBjcmVf bmFtZXNfc3R1Yih2YWx1ZSB2X3JleCkKLS17Ci0tICBDQU1McGFyYW0wKCk7Ci0tICBDQU1MbG9j YWwxKHZfcmVzKTsKLS0gIGludCBuYW1lX2NvdW50OwotLSAgaW50IGVudHJ5X3NpemU7Ci0tICBj b25zdCBjaGFyICp0YmxfcHRyOwotLSAgaW50IGk7Ci0tCi0tICBpbnQgcmV0ID0gcGNyZV9mdWxs aW5mb19zdHViKHZfcmV4LCBQQ1JFX0lORk9fTkFNRUNPVU5ULCAmbmFtZV9jb3VudCk7Ci0tICBp ZiAocmV0ICE9IDApIHJhaXNlX2ludGVybmFsX2Vycm9yKCJwY3JlX25hbWVzX3N0dWI6IG5hbWVj b3VudCIpOwotLQotLSAgcmV0ID0gcGNyZV9mdWxsaW5mb19zdHViKHZfcmV4LCBQQ1JFX0lORk9f TkFNRUVOVFJZU0laRSwgJmVudHJ5X3NpemUpOwotLSAgaWYgKHJldCAhPSAwKSByYWlzZV9pbnRl cm5hbF9lcnJvcigicGNyZV9uYW1lc19zdHViOiBuYW1lZW50cnlzaXplIik7Ci0tCi0tICByZXQg PSBwY3JlX2Z1bGxpbmZvX3N0dWIodl9yZXgsIFBDUkVfSU5GT19OQU1FVEFCTEUsICZ0YmxfcHRy KTsKLS0gIGlmIChyZXQgIT0gMCkgcmFpc2VfaW50ZXJuYWxfZXJyb3IoInBjcmVfbmFtZXNfc3R1 YjogbmFtZXRhYmxlIik7Ci0tCi0tICB2X3JlcyA9IGNhbWxfYWxsb2MobmFtZV9jb3VudCwgMCk7 Ci0tCi0tICBmb3IgKGkgPSAwOyBpIDwgbmFtZV9jb3VudDsgKytpKSB7Ci0tICAgIHZhbHVlIHZf bmFtZSA9IGNhbWxfY29weV9zdHJpbmcodGJsX3B0ciArIDIpOwotLSAgICBTdG9yZV9maWVsZCh2 X3JlcywgaSwgdl9uYW1lKTsKLS0gICAgdGJsX3B0ciArPSBlbnRyeV9zaXplOwotLSAgfQotLQot LSAgQ0FNTHJldHVybih2X3Jlcyk7Ci0tfQotLQotLS8qIEdlbmVyaWMgc3R1YiBmb3IgZ2V0dGlu ZyBpbnRlZ2VyIHJlc3VsdHMgZnJvbSBwY3JlX2NvbmZpZyAqLwotLXN0YXRpYyBpbmxpbmUgaW50 IHBjcmVfY29uZmlnX2ludChpbnQgd2hhdCkKLS17Ci0tICBpbnQgcmV0OwotLSAgcGNyZV9jb25m aWcod2hhdCwgKHZvaWQgKikgJnJldCk7Ci0tICByZXR1cm4gcmV0OwotLX0KLS0KLS0vKiBHZW5l cmljIHN0dWIgZm9yIGdldHRpbmcgbG9uZyBpbnRlZ2VyIHJlc3VsdHMgZnJvbSBwY3JlX2NvbmZp ZyAqLwotLXN0YXRpYyBpbmxpbmUgaW50IHBjcmVfY29uZmlnX2xvbmcoaW50IHdoYXQpCi0tewot LSAgbG9uZyByZXQ7Ci0tICBwY3JlX2NvbmZpZyh3aGF0LCAodm9pZCAqKSAmcmV0KTsKLS0gIHJl dHVybiByZXQ7Ci0tfQotLQotLQotLS8qIFNvbWUgc3R1YnMgZm9yIGNvbmZpZy1mdW5jdGlvbnMg Ki8KLS0KLS0vKiBNYWtlcyBPQ2FtbC1zdHJpbmcgZnJvbSBQQ1JFLXZlcnNpb24gKi8KLS1DQU1M cHJpbSB2YWx1ZSBwY3JlX3ZlcnNpb25fc3R1Yih2YWx1ZSBfX3VudXNlZCB2X3VuaXQpCi0tewot LSAgcmV0dXJuIGNhbWxfY29weV9zdHJpbmcoKGNoYXIgKikgcGNyZV92ZXJzaW9uKCkpOwotLX0K LS0KLS0vKiBSZXR1cm5zIGJvb2xlYW4gaW5kaWNhdGluZyBVVEY4LXN1cHBvcnQgKi8KLS1DQU1M cHJpbSB2YWx1ZSBwY3JlX2NvbmZpZ191dGY4X3N0dWIodmFsdWUgX191bnVzZWQgdl91bml0KQot LXsgcmV0dXJuIFZhbF9ib29sKHBjcmVfY29uZmlnX2ludChQQ1JFX0NPTkZJR19VVEY4KSk7IH0K LS0KLS0KLS0vKiBSZXR1cm5zIGNoYXJhY3RlciB1c2VkIGFzIG5ld2xpbmUgKi8KLS1DQU1McHJp bSB2YWx1ZSBwY3JlX2NvbmZpZ19uZXdsaW5lX3N0dWIodmFsdWUgX191bnVzZWQgdl91bml0KQot LXsgcmV0dXJuIFZhbF9pbnQocGNyZV9jb25maWdfaW50KFBDUkVfQ09ORklHX05FV0xJTkUpKTsg fQotLQotLQotLS8qIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgZm9yIGludGVybmFsIGxp bmthZ2Ugb2YgcmVndWxhciBleHByZXNzaW9ucyAqLwotLQotLUNBTUxwcmltIEBpbnRuYXRAIHBj cmVfY29uZmlnX2xpbmtfc2l6ZV9zdHViKHZhbHVlIF9fdW51c2VkIHZfdW5pdCkKLS17IHJldHVy biBAVmFsX2ludEAocGNyZV9jb25maWdfaW50KFBDUkVfQ09ORklHX0xJTktfU0laRSkpOyB9Ci0t Ci0tQ0FNTHByaW0gdmFsdWUgcGNyZV9jb25maWdfbGlua19zaXplX3N0dWJfYmModmFsdWUgdl91 bml0KQotLXsgcmV0dXJuIEBWYWxfVmFsX2ludEAocGNyZV9jb25maWdfbGlua19zaXplX3N0dWIo dl91bml0KSk7IH0KLS0KLS0KLS0vKiBSZXR1cm5zIGRlZmF1bHQgbGltaXQgZm9yIGNhbGxzIHRv IGludGVybmFsIG1hdGNoaW5nIGZ1bmN0aW9uICovCi0tCi0tQ0FNTHByaW0gQGludG5hdEAgcGNy ZV9jb25maWdfbWF0Y2hfbGltaXRfc3R1Yih2YWx1ZSBfX3VudXNlZCB2X3VuaXQpCi0teyByZXR1 cm4gQFZhbF9pbnRAKHBjcmVfY29uZmlnX2xvbmcoUENSRV9DT05GSUdfTUFUQ0hfTElNSVQpKTsg fQotLQotLQotLUNBTUxwcmltIHZhbHVlIHBjcmVfY29uZmlnX21hdGNoX2xpbWl0X3N0dWJfYmMo dmFsdWUgdl91bml0KQotLXsgcmV0dXJuIEBWYWxfVmFsX2ludEAocGNyZV9jb25maWdfbWF0Y2hf bGltaXRfc3R1Yih2X3VuaXQpKTsgfQotLQotLQotLS8qIFJldHVybnMgZGVmYXVsdCBsaW1pdCBm b3IgcmVjdXJzaXZlIGNhbGxzIHRvIGludGVybmFsIG1hdGNoaW5nIGZ1bmN0aW9uICovCi0tCi0t Q0FNTHByaW0gQGludG5hdEAgcGNyZV9jb25maWdfbWF0Y2hfbGltaXRfcmVjdXJzaW9uX3N0dWIo dmFsdWUgX191bnVzZWQgdl91bml0KQotLXsgcmV0dXJuIEBWYWxfaW50QChwY3JlX2NvbmZpZ19s b25nKFBDUkVfQ09ORklHX01BVENIX0xJTUlUX1JFQ1VSU0lPTikpOyB9Ci0tCi0tQ0FNTHByaW0g dmFsdWUgcGNyZV9jb25maWdfbWF0Y2hfbGltaXRfcmVjdXJzaW9uX3N0dWJfYmModmFsdWUgdl91 bml0KQotLXsgcmV0dXJuIEBWYWxfVmFsX2ludEAocGNyZV9jb25maWdfbWF0Y2hfbGltaXRfcmVj dXJzaW9uX3N0dWIodl91bml0KSk7IH0KLS0KLS0KLS0vKiBSZXR1cm5zIGJvb2xlYW4gaW5kaWNh dGluZyB1c2Ugb2Ygc3RhY2sgcmVjdXJzaW9uICovCi0tQ0FNTHByaW0gdmFsdWUgcGNyZV9jb25m aWdfc3RhY2tyZWN1cnNlX3N0dWIodmFsdWUgX191bnVzZWQgdl91bml0KQotLXsgcmV0dXJuIFZh bF9ib29sKHBjcmVfY29uZmlnX2ludChQQ1JFX0NPTkZJR19TVEFDS1JFQ1VSU0UpKTsgfQotZGlm ZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sLy5naXRpZ25vcmUgYi9idW5kbGVzL3Bj cmUyL3BjcmUyLW9jYW1sLy5naXRpZ25vcmUKLXNpbWlsYXJpdHkgaW5kZXggMTAwJQotcmVuYW1l IGZyb20gYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvLmdpdGlnbm9yZQotcmVuYW1lIHRvIGJ1bmRs ZXMvcGNyZTIvcGNyZTItb2NhbWwvLmdpdGlnbm9yZQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNy ZTIvcGNyZTItb2NhbWwvQ0hBTkdFTE9HLm1kIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9D SEFOR0VMT0cubWQKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmRhMTFl YWUzNAotLS0tIC9kZXYvbnVsbAotKysrIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9DSEFO R0VMT0cubWQKLUBAIC0wLDAgKzEsNjkgQEAKLSsjIENoYW5nZWxvZwotKwotKyMjIFs4LjAuNF0g LSAyMDI1LTEwLTE5Ci0rCi0rIyMjIEFkZGVkCi0rCi0rLSBQcm92aWRlIGEgYG1ha2UgdGVzdGAg Y29udmVuaWVuY2UgdGFyZ2V0IGFuZCBnZW5lcmF0ZQotKyAgYGxpYi9jb21waWxlX2NvbW1hbmRz Lmpzb25gIHRvIHN0cmVhbWxpbmUgcnVubmluZyB0aGUgc3VpdGUgYW5kIElERQotKyAgaW50ZWdy YXRpb24uCi0rLSBJbnRyb2R1Y2UgR2l0SHViIGF1dG9tYXRpb24gKERlcGVuZGFib3QgdXBkYXRl cyBwbHVzIGxpbnRpbmcsIGZvcm1hdHRpbmcsIGFuZAotKyAgcHJlLWNvbW1pdCB3b3JrZmxvd3Mp IG1pcnJvcmluZyB0aGUgb3JpZ2luYWwgYHBjcmUtb2NhbWxgIHByb2plY3QuCi0rCi0rIyMjIENo YW5nZWQKLSsKLSstIFJlb3JnYW5pemUgdGhlIHJlcG9zaXRvcnkgdG8gbWF0Y2ggdGhlIHVwc3Ry ZWFtIGxheW91dCwgbW92aW5nIGxpYnJhcnkgc291cmNlcwotKyAgdG8gYGxpYi9gLCByZWZyZXNo aW5nIGRvY3VtZW50YXRpb24sIGFuZCB1cGRhdGluZyBleGFtcGxlIGRlc2NyaXB0aW9ucy4KLSsK LSsjIyMgRml4ZWQKLSsKLSstIEVuc3VyZSB0aGUgYFBjcmUyLkJhZFBhdHRlcm5gIGV4Y2VwdGlv biBhbGxvY2F0ZXMgc2hvcnQgT0NhbWwgc3RyaW5ncyB0byBhdm9pZAotKyAgdHJhaWxpbmcgZ2Fy YmFnZSBvciBlbWJlZGRlZCBOVUwgYnl0ZXMgaW4gZXJyb3IgbWVzc2FnZXMuCi0rLSBDb3JyZWN0 IHRoZSBvZmZzZXQtdmVjdG9yIHBvaW50ZXIgY2FzdCBpbiBgcGNyZTJfc3R1YnMuY2AgdG8gcmVt b3ZlIHVuZGVmaW5lZAotKyAgYmVoYXZpb3Igd2hlbiBjb3B5aW5nIG1hdGNoIG9mZnNldHMuCi0r Ci0rIyMgWzguMC4zXSAtIDIwMjUtMDItMTUKLSsKLSsjIyMgRml4ZWQKLSsKLSstIE1ha2UgYGNh bWxfYWxsb2Nfc29tZWAgc3RhdGljIHRvIHByZXZlbnQgY2xhc2hlcyB3aXRoIHRoZSBgcGNyZWAg cGFja2FnZSB3aGVuCi0rICB0YXJnZXRpbmcgT0NhbWwgNC4wOC00LjExLgotKwotKyMjIFs4LjAu Ml0gLSAyMDI0LTEyLTI2Ci0rCi0rIyMjIEFkZGVkCi0rCi0rLSBSZXN0b3JlIGNvbXBhdGliaWxp dHkgd2l0aCBPQ2FtbCA0LjA4IHRocm91Z2ggNC4xMS4gVGhhbmtzIHRvIEBub2piLgotKwotKyMj IFs4LjAuMV0gLSAyMDI0LTEyLTIwCi0rCi0rIyMjIENoYW5nZWQKLSsKLSstIE1lcmdlIHRoZSBs ZWdhY3kgYHBjcmUtb2NhbWxgIGNoYW5nZXMgaW50byBgcGNyZTItb2NhbWxgLgotKwotKyMjIyBG aXhlZAotKwotKy0gQ29ycmVjdCBgZnVsbF9zcGxpdGAgc28gdGhhdCBub24tY2FwdHVyaW5nIGdy b3VwcyBhcmUgaWRlbnRpZmllZCBwcm9wZXJseS4KLSsKLSsjIyBbNy41LjNdIC0gMjAyNC0xMi0y MwotKwotKyMjIyBGaXhlZAotKwotKy0gQWRkcmVzcyB0aGUgYGZ1bGxfc3BsaXRgIHJlZ3Jlc3Np b24uIFRoYW5rcyB0byBAbW1vdHRsLgotKwotKyMjIFs3LjUuMl0gLSAyMDIzLTA5LTA2Ci0rCi0r IyMjIEFkZGVkCi0rCi0rLSBJbnRyb2R1Y2UgdGhlIGluaXRpYWwgdW5pdCB0ZXN0IHRoYXQgZXhl cmNpc2VzIGBmdWxsX3NwbGl0YC4KLSsKLSsjIyMgRml4ZWQKLSsKLSstIFJlc29sdmUgdGhlIGBm dWxsX3NwbGl0YCBidWcgYWZmZWN0aW5nIHNwbGl0IGNsYXNzaWZpY2F0aW9uLgotKwotKyMjIFs3 LjUuMV0gLSAyMDIzLTA5LTAxCi0rCi0rIyMjIEFkZGVkCi0rCi0rLSBDcmVhdGUgdGhlIGluaXRp YWwgYHBjcmUyLW9jYW1sYCBiaW5kaW5ncyBkZXJpdmVkIGZyb20gdGhlIG9yaWdpbmFsCi0rICBg cGNyZS1vY2FtbGAgcHJvamVjdC4KLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1vY2Ft bC9MSUNFTlNFLm1kIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9MSUNFTlNFLm1kCi1zaW1p bGFyaXR5IGluZGV4IDk5JQotcmVuYW1lIGZyb20gYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvTElD RU5TRS5tZAotcmVuYW1lIHRvIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvTElDRU5TRS5tZAot aW5kZXggYzM1YzI0ZGFhLi40NDgxZTNlNjggMTAwNjQ0Ci0tLS0gYS9idW5kbGVzL3BjcmUvcGNy ZS1vY2FtbC9MSUNFTlNFLm1kCi0rKysgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL0xJQ0VO U0UubWQKLUBAIC0xMiw3ICsxMiw3IEBAIHJlcXVpcmVtZW50cyBsaXN0ZWQgaW4gY2xhdXNlIDYg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSBCeSAiYSBwdWJsaWNs eSBkaXN0cmlidXRlZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5Iiwgd2UgbWVhbiBlaXRoZXIgdGhl Ci0gdW5tb2RpZmllZCBMaWJyYXJ5IGFzIGRpc3RyaWJ1dGVkIGJ5IHRoZSBhdXRob3JzLCBvciBh IG1vZGlmaWVkIHZlcnNpb24KLSBvZiB0aGUgTGlicmFyeSB0aGF0IGlzIGRpc3RyaWJ1dGVkIHVu ZGVyIHRoZSBjb25kaXRpb25zIGRlZmluZWQgaW4gY2xhdXNlCi0tMyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QKLSsyIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBk b2VzIG5vdAotIGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4 ZWN1dGFibGUgZmlsZSBtaWdodCBiZQotIGNvdmVyZWQgYnkgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZS4KLSAKLUBAIC0yNCw3ICsyNCw3IEBAIFZlcnNpb24gMi4xLCBGZWJy dWFyeSAxOTk5Ci0gCi0gICAgIENvcHlyaWdodCAoQykgMTk5MSwgMTk5OSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSAgICAgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg Qm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0tICAgIAotKwotICAgICBFdmVyeW9uZSBpcyBw ZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKLSAgICAgb2Yg dGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCi0g Ci1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9NYWtlZmlsZSBiL2J1bmRs ZXMvcGNyZTIvcGNyZTItb2NhbWwvTWFrZWZpbGUKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwMDAuLmNmMmVlNmU1MQotLS0tIC9kZXYvbnVsbAotKysrIGIvYnVuZGxlcy9wY3Jl Mi9wY3JlMi1vY2FtbC9NYWtlZmlsZQotQEAgLTAsMCArMSwxNSBAQAotKy5QSE9OWTogYWxsIGNs ZWFuIGRvYwotKwotK2FsbDoKLSsJQGR1bmUgYnVpbGQgQGluc3RhbGwKLSsJQG1ha2UgLUMgbGli IGNvbXBpbGVfY29tbWFuZHMuanNvbgotKwotK3Rlc3Q6IGFsbAotKwlAZHVuZSBidWlsZCBAaW5z dGFsbCBAcnVudGVzdAotKwotK2NsZWFuOgotKwlAZHVuZSBjbGVhbgotKwlAbWFrZSAtQyBsaWIg Y2xlYW4tY29tcGlsZS1jb21tYW5kcwotKwotK2RvYzoKLSsJQGR1bmUgYnVpbGQgQGRvYwotZGlm ZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvUkVBRE1FLm1kIGIvYnVuZGxlcy9w Y3JlMi9wY3JlMi1vY2FtbC9SRUFETUUubWQKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwMDAuLmE2NzlmYjRlYgotLS0tIC9kZXYvbnVsbAotKysrIGIvYnVuZGxlcy9wY3JlMi9w Y3JlMi1vY2FtbC9SRUFETUUubWQKLUBAIC0wLDAgKzEsMTM4IEBACi0rIyBQQ1JFMi1PQ2FtbCAt IFBlcmwgQ29tcGF0aWJpbGl0eSBSZWd1bGFyIEV4cHJlc3Npb25zIGZvciBPQ2FtbAotKwotK0Zv cmsgb2YgdGhlIG9yaWdpbmFsIFtwY3JlLW9jYW1sIHByb2plY3RdKGh0dHBzOi8vZ2l0aHViLmNv bS9tbW90dGwvcGNyZS1vY2FtbCkKLStmb3IgUENSRTIgc3VwcG9ydC4KLSsKLStUaGVzZSBhcmUg dGhlIGJpbmRpbmdzIGFzIG5lZWRlZCBieSB0aGUKLStbSGF4ZSBjb21waWxlcl0oaHR0cHM6Ly9n aXRodWIuY29tL0hheGVGb3VuZGF0aW9uL2hheGUpLiBJIGRvIG5vdCBwbGFuIG9uCi0rbWFpbnRh aW5pbmcgdGhpcyByZXBvc2l0b3J5LgotKwotK1RoaXMgW09DYW1sXShodHRwOi8vd3d3Lm9jYW1s Lm9yZykgbGlicmFyeSBpbnRlcmZhY2VzIHdpdGggdGhlIEMgbGlicmFyeQotK1tQQ1JFMl0oaHR0 cDovL3d3dy5wY3JlLm9yZyksIHByb3ZpZGluZyBQZXJsLWNvbXBhdGlibGUgcmVndWxhciBleHBy ZXNzaW9ucyBmb3IKLStzdHJpbmcgbWF0Y2hpbmcuCi0rCi0rIyMgRmVhdHVyZXMKLSsKLStQQ1JF Mi1PQ2FtbCBvZmZlcnM6Ci0rCi0rLSBQYXR0ZXJuIHNlYXJjaGluZwotKy0gU3VicGF0dGVybiBl eHRyYWN0aW9uCi0rLSBTdHJpbmcgc3BsaXR0aW5nIGJ5IHBhdHRlcm5zCi0rLSBQYXR0ZXJuIHN1 YnN0aXR1dGlvbgotKwotK1JlYXNvbnMgdG8gY2hvb3NlIFBDUkUyLU9DYW1sOgotKwotKy0gVGhl IFBDUkUyIGxpYnJhcnkgYnkgUGhpbGlwIEhhemVsIGlzIG1hdHVyZSBhbmQgc3RhYmxlLCBpbXBs ZW1lbnRpbmcgbmVhcmx5Ci0rICBhbGwgUGVybCByZWd1bGFyIGV4cHJlc3Npb24gZmVhdHVyZXMu IEhpZ2gtbGV2ZWwgT0NhbWwgZnVuY3Rpb25zIChzcGxpdCwKLSsgIHJlcGxhY2UsIGV0Yy4pIGFy ZSBjb21wYXRpYmxlIHdpdGggUGVybCBmdW5jdGlvbnMsIGFzIG11Y2ggYXMgT0NhbWwgYWxsb3dz LgotKyAgU29tZSBkZXZlbG9wZXJzIGZpbmQgUGVybC1zdHlsZSByZWdleCBzeW50YXggbW9yZSBp bnR1aXRpdmUgYW5kIHBvd2VyZnVsIHRoYW4KLSsgIHRoZSBFbWFjcy1zdHlsZSByZWdleCB1c2Vk IGluIE9DYW1sJ3MgYFN0cmAgbW9kdWxlLgotKwotKy0gUENSRTItT0NhbWwgaXMgcmVlbnRyYW50 IGFuZCB0aHJlYWQtc2FmZSwgdW5saWtlIHRoZSBgU3RyYCBtb2R1bGUuIFRoaXMKLSsgIHJlZW50 cmFuY3kgb2ZmZXJzIGNvbnZlbmllbmNlLCBlbGltaW5hdGluZyBjb25jZXJucyBhYm91dCBsaWJy YXJ5IHN0YXRlLgotKwotKy0gSGlnaC1sZXZlbCByZXBsYWNlbWVudCBhbmQgc3Vic3RpdHV0aW9u IGZ1bmN0aW9ucyBpbiBPQ2FtbCBhcmUgZmFzdGVyIHRoYW4KLSsgIHRob3NlIGluIHRoZSBgU3Ry YCBtb2R1bGUuIFdoZW4gY29tcGlsZWQgdG8gbmF0aXZlIGNvZGUsIHRoZXkgY2FuIGV2ZW4KLSsg IG91dHBlcmZvcm0gUGVybCdzIEMtYmFzZWQgZnVuY3Rpb25zLgotKwotKy0gUmV0dXJuZWQgZGF0 YSBpcyB1bmlxdWUsIGFsbG93aW5nIHNhZmUgZGVzdHJ1Y3RpdmUgdXBkYXRlcyB3aXRob3V0IHNp ZGUKLSsgIGVmZmVjdHMuCi0rCi0rLSBUaGUgbGlicmFyeSBpbnRlcmZhY2UgdXNlcyBsYWJlbHMg YW5kIGRlZmF1bHQgYXJndW1lbnRzIGZvciBlbmhhbmNlZAotKyAgcHJvZ3JhbW1pbmcgY29tZm9y dC4KLSsKLSsjIyBVc2FnZQotKwotK1BsZWFzZSBydW46Ci0rCi0rYGBgc2gKLStvZGlnIG9kb2Mg cGNyZTIKLStgYGAKLSsKLStPciAobWF5YmU/KToKLSsKLStgYGBzaAotK2R1bmUgYnVpbGQgQGRv YwotK2BgYAotKwotK0Z1bmN0aW9ucyBzdXBwb3J0IHR3byBmbGFnIHR5cGVzOgotKwotKzEuICoq Q29udmVuaWVuY2UgZmxhZ3MqKjogUmVhZGFibGUgYW5kIGNvbmNpc2UsIHRyYW5zbGF0ZWQgaW50 ZXJuYWxseSBvbiBlYWNoCi0rICAgY2FsbC4gRXhhbXBsZToKLSsKLSsgICBgYGBvY2FtbAotKyAg IGxldCByZXggPSBQY3JlMi5yZWdleHAgfmZsYWdzOltgQU5DSE9SRUQ7IGBDQVNFTEVTU10gInNv bWUgcGF0dGVybiIgaW4KLSsgICAoKiAuLi4gKikKLSsgICBgYGAKLSsKLSsgICBUaGVzZSBhcmUg ZWFzeSB0byB1c2UgYnV0IG1heSBpbmN1ciBvdmVyaGVhZCBpbiBsb29wcy4gRm9yIHBlcmZvcm1h bmNlCi0rICAgb3B0aW1pemF0aW9uLCBjb25zaWRlciB0aGUgbmV4dCBhcHByb2FjaC4KLSsKLSsy LiAqKkludGVybmFsIGZsYWdzKio6IFByZWRlZmluZWQgYW5kIHRyYW5zbGF0ZWQgZnJvbSBjb252 ZW5pZW5jZSBmbGFncyBmb3IKLSsgICBvcHRpbWFsIGxvb3AgcGVyZm9ybWFuY2UuIEV4YW1wbGU6 Ci0rCi0rICAgYGBgb2NhbWwKLSsgICBsZXQgaWZsYWdzID0gUGNyZTIuY2ZsYWdzIFtgQU5DSE9S RUQ7IGBDQVNFTEVTU10gaW4KLSsgICBmb3IgaSA9IDEgdG8gMTAwMCBkbwotKyAgICAgbGV0IHJl eCA9IFBjcmUyLnJlZ2V4cCB+aWZsYWdzICJzb21lIHBhdHRlcm4gY29uc3RydWN0ZWQgYXQgcnVu dGltZSIgaW4KLSsgICAgICgqIC4uLiAqKQotKyAgIGRvbmUKLSsgICBgYGAKLSsKLSsgICBUcmFu c2xhdGluZyBmbGFncyBvdXRzaWRlIGxvb3BzIHNhdmVzIGN5Y2xlcy4gQXZvaWQgY3JlYXRpbmcg cmVnZXggaW4gbG9vcHM6Ci0rCi0rICAgYGBgb2NhbWwKLSsgICBmb3IgaSA9IDEgdG8gMTAwMCBk bwotKyAgICAgbGV0IGNodW5rcyA9IFBjcmUyLnNwbGl0IH5wYXQ6IlsgXHRdKyIgImZvbyBiYXIi IGluCi0rICAgICAoKiAuLi4gKikKLSsgICBkb25lCi0rICAgYGBgCi0rCi0rICAgSW5zdGVhZCwg cHJlZGVmaW5lIHRoZSByZWdleDoKLSsKLSsgICBgYGBvY2FtbAotKyAgIGxldCByZXggPSBQY3Jl Mi5yZWdleHAgIlsgXHRdKyIgaW4KLSsgICBmb3IgaSA9IDEgdG8gMTAwMCBkbwotKyAgICAgbGV0 IGNodW5rcyA9IFBjcmUyLnNwbGl0IH5yZXggImZvbyBiYXIiIGluCi0rICAgICAoKiAuLi4gKikK LSsgICBkb25lCi0rICAgYGBgCi0rCi0rRnVuY3Rpb25zIHVzZSBvcHRpb25hbCBhcmd1bWVudHMg d2l0aCBpbnR1aXRpdmUgZGVmYXVsdHMuIEZvciBpbnN0YW5jZSwKLStgUGNyZTIuc3BsaXRgIGRl ZmF1bHRzIHRvIHdoaXRlc3BhY2UgYXMgdGhlIHBhdHRlcm4uIFRoZSBgZXhhbXBsZXNgIGRpcmVj dG9yeQotK2NvbnRhaW5zIGFwcGxpY2F0aW9ucyBkZW1vbnN0cmF0aW5nIFBDUkUyLU9DYW1sJ3Mg ZnVuY3Rpb25hbGl0eS4KLSsKLSsjIyBSZXN0YXJ0YWJsZSAoUGFydGlhbCkgUGF0dGVybiBNYXRj aGluZwotKwotK1BDUkUyIGluY2x1ZGVzIGEgREZBIG1hdGNoIGZ1bmN0aW9uIGZvciByZXN0YXJ0 aW5nIHBhcnRpYWwgbWF0Y2hlcyB3aXRoIG5ldwotK2lucHV0LCBleHBvc2VkIHZpYSBgcGNyZTJf ZGZhX2V4ZWNgLiBXaGlsZSBub3Qgc3VpdGFibGUgZm9yIGV4dHJhY3RpbmcKLStzdWJtYXRjaGVz IG9yIHNwbGl0dGluZyBzdHJpbmdzLCBpdCdzIHVzZWZ1bCBmb3Igc3RyZWFtaW5nIGFuZCBzZWFy Y2ggdGFza3MuCi0rCi0rRXhhbXBsZSBvZiBhIHBhcnRpYWwgbWF0Y2ggcmVzdGFydGVkOgotKwot K2BgYG9jYW1sCi0rdXRvcCAjIG9wZW4gUGNyZTI7OwotK3V0b3AgIyBsZXQgcmV4ID0gcmVnZXhw ICIxMiszIjs7Ci0rdmFsIHJleCA6IHJlZ2V4cCA9IDxhYnN0cj4KLSt1dG9wICMgbGV0IHdvcmtz cGFjZSA9IEFycmF5Lm1ha2UgNDAgMDs7Ci0rdmFsIHdvcmtzcGFjZSA6IGludCBhcnJheSA9Ci0r ICBbfCAuLi4gfF0KLSt1dG9wICMgcGNyZTJfZGZhX21hdGNoIH5yZXggfmZsYWdzOltgUEFSVElB TF9TT0ZUXSB+d29ya3NwYWNlICIxMjIyMiI7OwotK0V4Y2VwdGlvbjogUGNyZTIuRXJyb3IgUGFy dGlhbC4KLSt1dG9wICMgcGNyZTJfZGZhX21hdGNoIH5yZXggfmZsYWdzOltgUEFSVElBTF9TT0ZU OyBgREZBX1JFU1RBUlRdIH53b3Jrc3BhY2UgIjIyMjIyMjIiOzsKLStFeGNlcHRpb246IFBjcmUy LkVycm9yIFBhcnRpYWwuCi0rdXRvcCAjIHBjcmUyX2RmYV9leGVjIH5yZXggfmZsYWdzOltgUEFS VElBTF9TT0ZUOyBgREZBX1JFU1RBUlRdIH53b3Jrc3BhY2UgIjIyMjIyMjIiOzsKLStFeGNlcHRp b246IFBjcmUyLkVycm9yIFBhcnRpYWwuCi0rdXRvcCAjIHBjcmUyX2RmYV9leGVjIH5yZXggfmZs YWdzOltgUEFSVElBTF9TT0ZUOyBgREZBX1JFU1RBUlRdIH53b3Jrc3BhY2UgIjIyM3h4eHgiOzsK LSstIDogaW50IGFycmF5ID0gW3wwOyAzOyAwfF0KLStgYGAKLSsKLStSZWZlciB0byB0aGUgYHBj cmUyX2RmYV9leGVjYCBkb2N1bWVudGF0aW9uIGFuZCB0aGUgYGRmYV9yZXN0YXJ0YCBleGFtcGxl IGZvcgotK21vcmUgaW5mb3JtYXRpb24uCi0rCi0rIyMgQ29udGFjdCBJbmZvcm1hdGlvbiBhbmQg Q29udHJpYnV0aW5nCi0rCi0rU3VibWl0IGJ1ZyByZXBvcnRzLCBmZWF0dXJlIHJlcXVlc3RzLCBh bmQgY29udHJpYnV0aW9ucyB2aWEgdGhlCi0rW0dpdEh1YiBpc3N1ZSB0cmFja2VyXShodHRwczov L2dpdGh1Yi5jb20vY2FtbHA1L3BjcmUyLW9jYW1sL2lzc3VlcykuCi0rCi0rRm9yIHRoZSBsYXRl c3QgaW5mb3JtYXRpb24sIHZpc2l0OiA8aHR0cHM6Ly9naXRodWIuY29tL2NhbWxwNS9wY3JlMi1v Y2FtbD4KLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2R1bmUgYi9idW5k bGVzL3BjcmUyL3BjcmUyLW9jYW1sL2R1bmUKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwMDAuLjNlZGFhMDgyYgotLS0tIC9kZXYvbnVsbAotKysrIGIvYnVuZGxlcy9wY3JlMi9w Y3JlMi1vY2FtbC9kdW5lCi1AQCAtMCwwICsxLDkgQEAKLSsoZW52Ci0rIChkZXYKLSsgIChmbGFn cwotKyAgICg6c3RhbmRhcmQgLXcgLTkgLXByaW5jaXBhbCkpCi0rICAoY19mbGFncwotKyAgICg6 c3RhbmRhcmQgLVdhbGwgLXBlZGFudGljIC1XZXh0cmEgLVd1bnVzZWQpKSkKLSsgKHJlbGVhc2UK LSsgIChvY2FtbG9wdF9mbGFncwotKyAgICg6c3RhbmRhcmQgLU8zKSkpKQotZGlmZiAtLWdpdCBh L2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZHVuZS1wcm9qZWN0IGIvYnVuZGxlcy9wY3JlMi9w Y3JlMi1vY2FtbC9kdW5lLXByb2plY3QKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwMDAuLjI2MzVhNjZhMgotLS0tIC9kZXYvbnVsbAotKysrIGIvYnVuZGxlcy9wY3JlMi9wY3Jl Mi1vY2FtbC9kdW5lLXByb2plY3QKLUBAIC0wLDAgKzEsMzIgQEAKLSsobGFuZyBkdW5lIDIuNykK LSsKLSsobmFtZSBwY3JlMikKLSsKLSsodmVyc2lvbiA4LjAuNCkKLSsKLSsoZ2VuZXJhdGVfb3Bh bV9maWxlcyB0cnVlKQotKwotKyhzb3VyY2UKLSsgKGdpdGh1YiBjYW1scDUvcGNyZTItb2NhbWwp KQotKwotKyhsaWNlbnNlICJMR1BMLTIuMS1vci1sYXRlciBXSVRIIE9DYW1sLUxHUEwtbGlua2lu Zy1leGNlcHRpb24iKQotKwotKyhob21lcGFnZSAiaHR0cHM6Ly9naXRodWIuY29tL2NhbWxwNS9w Y3JlMi1vY2FtbCIpCi0rCi0rKG1haW50YWluZXJzICJDaGV0IE11cnRoeSA8Y2hldHNreUBnbWFp bC5jb20+IikKLSsKLSsoYXV0aG9ycyAiTWFya3VzIE1vdHRsIDxtYXJrdXMubW90dGxAZ21haWwu Y29tPiIpCi0rCi0rKHBhY2thZ2UKLSsgKG5hbWUgcGNyZTIpCi0rIChzeW5vcHNpcwotKyAgICJC aW5kaW5ncyB0byB0aGUgUGVybCBDb21wYXRpYmlsaXR5IFJlZ3VsYXIgRXhwcmVzc2lvbnMgbGli cmFyeSAodmVyc2lvbiAyKSIpCi0rIChkZXNjcmlwdGlvbgotKyAgICJwY3JlMi1vY2FtbCBvZmZl cnMgbGlicmFyeSBmdW5jdGlvbnMgZm9yIHN0cmluZyBwYXR0ZXJuIG1hdGNoaW5nIGFuZFxuc3Vi c3RpdHV0aW9uLCBzaW1pbGFyIHRvIHRoZSBmdW5jdGlvbmFsaXR5IG9mZmVyZWQgYnkgdGhlIFBl cmwgbGFuZ3VhZ2UuIikKLSsgKGRlcGVuZHMKLSsgIChvY2FtbAotKyAgICg+PSA0LjA4KSkKLSsg IGR1bmUtY29tcGlsZWRiCi0rICBkdW5lLWNvbmZpZ3VyYXRvcgotKyAgKGNvbmYtbGlicGNyZTIt OCA6YnVpbGQpCi0rICAob3VuaXQyIDp3aXRoLXRlc3QpKSkKLWRpZmYgLS1naXQgYS9idW5kbGVz L3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVzL01ha2VmaWxlIGIvYnVuZGxlcy9wY3JlMi9wY3Jl Mi1vY2FtbC9leGFtcGxlcy9NYWtlZmlsZQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAwMC4uMjlkYmJmMGE0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9idW5kbGVzL3BjcmUyL3Bj cmUyLW9jYW1sL2V4YW1wbGVzL01ha2VmaWxlCi1AQCAtMCwwICsxLDkgQEAKLStUQVJHRVRTID0g JChhZGRzdWZmaXggLmJjLCBjbG9jIGNvdW50X2hhc2ggZGZhX3Jlc3RhcnQgcGNyZTJncmVwIHN1 YnN0KQotKwotKy5QSE9OWTogYWxsIGNsZWFuCi0rCi0rYWxsOgotKwlAZHVuZSBidWlsZCAkKFRB UkdFVFMpCi0rCi0rY2xlYW46Ci0rCUBkdW5lIGNsZWFuCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9w Y3JlMi9wY3JlMi1vY2FtbC9leGFtcGxlcy9SRUFETUUubWQgYi9idW5kbGVzL3BjcmUyL3BjcmUy LW9jYW1sL2V4YW1wbGVzL1JFQURNRS5tZAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAwMC4uZDgzMmYwNDJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9idW5kbGVzL3BjcmUyL3Bj cmUyLW9jYW1sL2V4YW1wbGVzL1JFQURNRS5tZAotQEAgLTAsMCArMSw0OCBAQAotKyMgRXhhbXBs ZXMKLSsKLSsjIyBgY2xvY2AKLSsKLStUaGlzIHByb2dyYW0gcmVhZHMgQyBzb3VyY2UgY29kZSBm cm9tIGBzdGRpbmAgYW5kIG91dHB1dHMgaXQgdG8gYHN0ZG91dGAgd2l0aAotK2NvbW1lbnRzIGFu ZCBlbXB0eSBsaW5lcyByZW1vdmVkLiBJdCdzIHVzZWZ1bCBmb3IgY291bnRpbmcgbGluZXMgb2Yg Y29kZS4KLSsKLSsjIyBgY291bnRfaGFzaGAKLSsKLStUaGlzIHByb2dyYW0gcmVhZHMgdGV4dCBm cm9tIGBzdGRpbmAsIGNvdW50cyBvY2N1cnJlbmNlcyBvZiBpZGVudGljYWwgd29yZHMKLStzZXBh cmF0ZWQgYnkgd2hpdGVzcGFjZSwgYW5kIHByaW50cyB0aGUgcmVzdWx0IHRvIGBzdGRvdXRgLgot KwotKyMjIGBwY3JlMmdyZXBgCi0rCi0rQSBncmVwLWxpa2UgcHJvZ3JhbSB1c2luZyBQZXJsLWNv bXBhdGlibGUgcmVndWxhciBleHByZXNzaW9ucy4gU3RhcnQgdGhlIHByb2dyYW0KLSt3aXRoIHRo ZSBgLWhlbHBgIGFyZ3VtZW50IHRvIHNlZSBpdHMgZnVuY3Rpb25hbGl0eS4KLSsKLSsjIyBgc3Vi c3RgCi0rCi0rU3Vic3RpdHV0ZXMgdGV4dCBpbiBmaWxlcyB1c2luZyBQZXJsLWNvbXBhdGlibGUg cmVndWxhciBleHByZXNzaW9ucyBhbmQKLStzdWJzdGl0dXRpb24gcGF0dGVybnMuIFN0YXJ0IHRo ZSBwcm9ncmFtIHdpdGggdGhlIGAtaGVscGAgYXJndW1lbnQgdG8gc2VlIGl0cwotK2Z1bmN0aW9u YWxpdHkuCi0rCi0rRXhhbXBsZSBpbnZvY2F0aW9uOgotKwotK2BgYHNoCi0rc3Vic3QgJyhbVHRd KWVybWNhcCcgJyQxZXJtQ2FwJyA8IC9ldGMvdGVybWNhcAotK2BgYAotKwotKyMjIGBkZmFfcmVz dGFydGAKLSsKLStUZXN0cyB0aGUgREZBIG1hdGNoaW5nIGZ1bmN0aW9uIGFuZCBpdHMgcGFydGlh bCBtYXRjaCByZXN0YXJ0IGNhcGFiaWxpdHkuIEdpdmVuCi0rYSBwYXR0ZXJuLCBpdCBhY2NlcHRz IGlucHV0IGluY3JlbWVudGFsbHksIHJlc3RhcnRpbmcgdGhlIHByaW9yIHBhcnRpYWwgbWF0Y2gK LSt1bnRpbCB0aGUgcGF0dGVybiBlaXRoZXIgc3VjY2VlZHMgb3IgZmFpbHMuCi0rCi0rRXhhbXBs ZSBpbnRlcmFjdGlvbjoKLSsKLStgYGBzaAotKyQgZGZhX3Jlc3RhcnQuZXhlICdhYmMxMiszJwot Kz4gYWJjCi0rcGFydGlhbCBtYXRjaCwgcHJvdmlkZSBtb3JlIGlucHV0OgotKz4gMTIyMjIyCi0r cGFydGlhbCBtYXRjaCwgcHJvdmlkZSBtb3JlIGlucHV0OgotKz4gMjIyCi0rcGFydGlhbCBtYXRj aCwgcHJvdmlkZSBtb3JlIGlucHV0OgotKz4gMwotK21hdGNoIGNvbXBsZXRlZDogIlt8MDsxOzB8 XSIKLStgYGAKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUvcGNyZS1vY2FtbC9leGFtcGxlcy9j bG9jLm1sIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9leGFtcGxlcy9jbG9jLm1sCi1zaW1p bGFyaXR5IGluZGV4IDk3JQotcmVuYW1lIGZyb20gYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvZXhh bXBsZXMvY2xvYy5tbAotcmVuYW1lIHRvIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBs ZXMvY2xvYy5tbAotaW5kZXggMjdjN2ZkM2E4Li5mNDgzNzYyNTAgMTAwNjQ0Ci0tLS0gYS9idW5k bGVzL3BjcmUvcGNyZS1vY2FtbC9leGFtcGxlcy9jbG9jLm1sCi0rKysgYi9idW5kbGVzL3BjcmUy L3BjcmUyLW9jYW1sL2V4YW1wbGVzL2Nsb2MubWwKLUBAIC0xLDQgKzEsNCBAQAotLW9wZW4gUGNy ZQotK29wZW4gUGNyZTIKLSAKLSBsZXQgcmVhZF93aG9sZV9jaGFubmVsIGNoID0KLSAgIGxldCBz aXplID0gNDA5NiBpbgotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1w bGVzL2NvdW50X2hhc2gubWwgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVzL2Nv dW50X2hhc2gubWwKLXNpbWlsYXJpdHkgaW5kZXggNjIlCi1yZW5hbWUgZnJvbSBidW5kbGVzL3Bj cmUvcGNyZS1vY2FtbC9leGFtcGxlcy9jb3VudF9oYXNoLm1sCi1yZW5hbWUgdG8gYnVuZGxlcy9w Y3JlMi9wY3JlMi1vY2FtbC9leGFtcGxlcy9jb3VudF9oYXNoLm1sCi1pbmRleCA5OGQxNmJjNTAu LjQ3MTE4YjY4NCAxMDA2NDQKLS0tLSBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL2V4YW1wbGVz L2NvdW50X2hhc2gubWwKLSsrKyBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMv Y291bnRfaGFzaC5tbAotQEAgLTEsNiArMSw4IEBACi0gb3BlbiBIYXNodGJsCi0gCi0gbGV0IGhh c2ggPSBjcmVhdGUgMTk3MwotLWxldCBhZGRfc3RyaW5nIHMgPSB0cnkgaW5jciAoZmluZCBoYXNo IHMpIHdpdGggTm90X2ZvdW5kIC0+IGFkZCBoYXNoIHMgKHJlZiAxKTs7Ci0tUGNyZS5mb3JlYWNo X2xpbmUgKGZ1biBsaW5lIC0+IExpc3QuaXRlciBhZGRfc3RyaW5nIChQY3JlLnNwbGl0IGxpbmUp KTsKLStsZXQgYWRkX3N0cmluZyBzID0gdHJ5IGluY3IgKGZpbmQgaGFzaCBzKSB3aXRoIE5vdF9m b3VuZCAtPiBhZGQgaGFzaCBzIChyZWYgMSkKLSs7OwotKwotK1BjcmUyLmZvcmVhY2hfbGluZSAo ZnVuIGxpbmUgLT4gTGlzdC5pdGVyIGFkZF9zdHJpbmcgKFBjcmUyLnNwbGl0IGxpbmUpKTsKLSBp dGVyIChmdW4gayB2IC0+IFByaW50Zi5wcmludGYgIiU0ZFx0JXNcbiIgIXYgaykgaGFzaAotZGlm ZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvZGZhX3Jlc3RhcnQu bWwgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVzL2RmYV9yZXN0YXJ0Lm1sCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi44ODJhMWYzNTUKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvZGZhX3Jlc3Rh cnQubWwKLUBAIC0wLDAgKzEsNDAgQEAKLStvcGVuIFBjcmUyCi0rb3BlbiBQcmludGYKLSsKLSts ZXQgc2hvd19hcnJheSBhcnIgPQotKyAgQXJyYXkubWFwIHN0cmluZ19vZl9pbnQgYXJyCi0rICB8 PiBBcnJheS50b19saXN0IHw+IFN0cmluZy5jb25jYXQgIjsiIHw+IHNwcmludGYgIlt8JXN8XSIK LSsKLStsZXQgbmV3X3dvcmtzcGFjZSAoKSA9IEFycmF5Lm1ha2UgNTAgMAotKwotK2xldCAoKSA9 Ci0rICBsZXQgcGF0ID0KLSsgICAgaWYgQXJyYXkubGVuZ3RoIFN5cy5hcmd2ID4gMSB0aGVuIFN5 cy5hcmd2LigxKQotKyAgICBlbHNlICgKLSsgICAgICBlcHJpbnRmICIlczogZXhwZWN0ZWQgcGF0 dGVybiBhcmd1bWVudFxuIiBTeXMuYXJndi4oMCk7Ci0rICAgICAgZXhpdCAxKQotKyAgaW4KLSsg IGxldCByZXggPSByZWdleHAgcGF0IGluCi0rICBsZXQgcmVjIGZpbmRfbWF0Y2ggZmxhZ3Mgd29y a3NwYWNlID0KLSsgICAgcHJpbnRfc3RyaW5nICI+ICI7Ci0rICAgIGxldCBsaW5lLCBlb2YgPQot KyAgICAgIHRyeSAocmVhZF9saW5lICgpLCBmYWxzZSkgd2l0aCBFbmRfb2ZfZmlsZSAtPiAoIiIs IHRydWUpCi0rICAgIGluCi0rICAgIG1hdGNoIHBjcmUyX2RmYV9tYXRjaCB+cmV4IH5mbGFncyB+ d29ya3NwYWNlIGxpbmUgd2l0aAotKyAgICB8IHJlcyAtPgotKyAgICAgICAgcHJpbnRmICJtYXRj aCBjb21wbGV0ZWQ6ICVTXG4iIChzaG93X2FycmF5IHJlcyk7Ci0rICAgICAgICBpZiBub3QgZW9m IHRoZW4gKAotKyAgICAgICAgICBwcmludGYgIlxuICppbnB1dCAmIHdvcmtzcGFjZSByZXNldCpc biI7Ci0rICAgICAgICAgIGZpbmRfbWF0Y2ggWyBgUEFSVElBTF9TT0ZUIF0gKG5ld193b3Jrc3Bh Y2UgKCkpKQotKyAgICB8IGV4Y2VwdGlvbiBFcnJvciBQYXJ0aWFsIC0+Ci0rICAgICAgICBwcmlu dGYgInBhcnRpYWwgbWF0Y2gsIHByb3ZpZGUgbW9yZSBpbnB1dDpcbiI7Ci0rICAgICAgICBmaW5k X21hdGNoIFsgYERGQV9SRVNUQVJUOyBgUEFSVElBTF9TT0ZUIF0gd29ya3NwYWNlCi0rICAgIHwg ZXhjZXB0aW9uIGV4biAtPgotKyAgICAgICAgKG1hdGNoIGV4biB3aXRoCi0rICAgICAgICB8IE5v dF9mb3VuZCAtPiBlcHJpbnRmICJwYXR0ZXJuIG1hdGNoIGZhaWxlZFxuIgotKyAgICAgICAgfCBF cnJvciBXb3Jrc3BhY2VTaXplIC0+IGVwcmludGYgIm5lZWQgbGFyZ2VyIHdvcmtzcGFjZSB2ZWN0 b3JcbiIKLSsgICAgICAgIHwgRXJyb3IgKEludGVybmFsRXJyb3IgcykgLT4gZXByaW50ZiAiaW50 ZXJuYWwgZXJyb3I6ICVzXG4iIHMKLSsgICAgICAgIHwgZXhuIC0+IHJhaXNlIGV4bik7Ci0rICAg ICAgICBleGl0IDEKLSsgIGluCi0rICBmaW5kX21hdGNoIFsgYFBBUlRJQUxfU09GVCBdIChuZXdf d29ya3NwYWNlICgpKQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhh bXBsZXMvZHVuZSBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvZHVuZQotbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uNjEyYzYwYzA0Ci0tLS0gL2Rldi9u dWxsCi0rKysgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVzL2R1bmUKLUBAIC0w LDAgKzEsNCBAQAotKyhleGVjdXRhYmxlcwotKyAobmFtZXMgY2xvYyBjb3VudF9oYXNoIHBjcmUy Z3JlcCBzdWJzdCBkZmFfcmVzdGFydCkKLSsgKGxpYnJhcmllcyBwY3JlMikKLSsgKG1vZGVzIGJ5 dGUgZXhlKSkKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2V4YW1wbGVz L3BjcmUyZ3JlcC5tbCBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMvcGNyZTJn cmVwLm1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi41YThlMDJlNDEK LS0tLSAvZGV2L251bGwKLSsrKyBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvZXhhbXBsZXMv cGNyZTJncmVwLm1sCi1AQCAtMCwwICsxLDEyOCBAQAotK29wZW4gUGNyZTIKLStvcGVuIFByaW50 ZgotKwotK2xldCBmaWxlbmFtZXMgPSByZWYgdHJ1ZQotK2FuZCBmaWxlbmFtZXNfb25seSA9IHJl ZiBmYWxzZQotK2FuZCBjb3VudF9vbmx5ID0gcmVmIGZhbHNlCi0rYW5kIGludmVydCA9IHJlZiBm YWxzZQotK2FuZCBudW1iZXIgPSByZWYgZmFsc2UKLSthbmQgc2lsZW50ID0gcmVmIGZhbHNlCi0r YW5kIHdob2xlX2xpbmVzID0gcmVmIGZhbHNlCi0rCi0rbGV0IHBhcnNlX2FyZ3MgKCkgPQotKyAg bGV0IGlnbm9yZV9jYXNlID0gcmVmIGZhbHNlIGFuZCBwYXQgPSByZWYgTm9uZSBhbmQgZmlsZXMg PSByZWYgW10gaW4KLSsKLSsgIGxldCBjID0gKCItYyIsIEFyZy5TZXQgY291bnRfb25seSwgIkNv dW50IGxpbmVzIG9ubHkuIikKLSsgIGFuZCBoID0KLSsgICAgKCAiLWgiLAotKyAgICAgIEFyZy5D bGVhciBmaWxlbmFtZXMsCi0rICAgICAgIlN1cHByZXNzIHByaW50aW5nIG9mIGZpbGVuYW1lcyB3 aGVuIHNlYXJjaGluZyBtdWx0aXBsZSBmaWxlcy4iICkKLSsgIGFuZCBpID0gKCItaSIsIEFyZy5T ZXQgaWdub3JlX2Nhc2UsICJJZ25vcmUgY2FzZS4iKQotKyAgYW5kIGwgPQotKyAgICAoICItbCIs Ci0rICAgICAgQXJnLlNldCBmaWxlbmFtZXNfb25seSwKLSsgICAgICAiT25seSBwcmludCBuYW1l cyBvZiBmaWxlcyBjb250YWluaW5nIG1hdGNoaW5nIGxpbmVzIChvbmNlKS4iICkKLSsgIGFuZCBu ID0KLSsgICAgKCItbiIsIEFyZy5TZXQgbnVtYmVyLCAiUHJlY2VkZSBlYWNoIGxpbmUgYnkgaXRz IGxpbmUgbnVtYmVyIGluIHRoZSBmaWxlLiIpCi0rICBhbmQgcyA9Ci0rICAgICggIi1zIiwKLSsg ICAgICBBcmcuU2V0IHNpbGVudCwKLSsgICAgICAiRGlzcGxheSBub3RoaW5nIGJ1dCBlcnJvciBt ZXNzYWdlcy4gRXhpdCBzdGF0dXMgaW5kaWNhdGVzIG1hdGNoLiIgKQotKyAgYW5kIHYgPQotKyAg ICAoIi12IiwgQXJnLlNldCBpbnZlcnQsICJJbnZlcnQgc2Vuc2Ugb2YgdGhlIG1hdGNoOiBmaW5k cyBub25tYXRjaGluZyBsaW5lcy4iKQotKyAgYW5kIHggPQotKyAgICAoICIteCIsCi0rICAgICAg QXJnLlNldCB3aG9sZV9saW5lcywKLSsgICAgICAiRm9yY2UgdGhlIHBhdHRlcm4gdG8gYmUgYW5j aG9yZWQgYW5kIHRvIG1hdGNoIHRoZSBlbnRpcmUgbGluZS4iICkKLSsgIGFuZCB1c2FnZSA9Ci0r ICAgICJVc2FnZTogcGNyZTJncmVwIFtvcHRpb25zXSBwYXR0ZXJuIFtmaWxlXSAuLi5cblxuXAot KyAgICAgU2VhcmNoZXMgZmlsZXMgZm9yIGNoYXJhY3RlciBwYXR0ZXJucy5cbiIKLSsgIGFuZCBh bm9uX2FyZyBhcmcgPQotKyAgICBpZiAhcGF0ID0gTm9uZSB0aGVuIHBhdCA6PSBTb21lIGFyZyBl bHNlIGZpbGVzIDo9IGFyZyA6OiAhZmlsZXMKLSsgIGluCi0rCi0rICBsZXQgYXJncyA9IFsgYzsg aDsgaTsgbDsgbjsgczsgdjsgeCBdIGluCi0rICBBcmcucGFyc2UgYXJncyBhbm9uX2FyZyB1c2Fn ZTsKLSsKLSsgIGxldCBmbGFncyA9Ci0rICAgIGxldCBmbGFnX2xpc3QgPSBpZiAhaWdub3JlX2Nh c2UgdGhlbiBbIGBDQVNFTEVTUyBdIGVsc2UgW10gaW4KLSsgICAgaWYgIXdob2xlX2xpbmVzIHRo ZW4gYEFOQ0hPUkVEIDo6IGZsYWdfbGlzdCBlbHNlIGZsYWdfbGlzdAotKyAgaW4KLSsKLSsgIGxl dCByZXggPQotKyAgICBtYXRjaCAhcGF0IHdpdGgKLSsgICAgfCBTb21lIHBhdCAtPiByZWdleHAg fmZsYWdzIHBhdAotKyAgICB8IE5vbmUgLT4KLSsgICAgICAgIGVwcmludGYgIiVzOiBub3QgZW5v dWdoIGFyZ3VtZW50cyFcbiIgU3lzLmFyZ3YuKDApOwotKyAgICAgICAgQXJnLnVzYWdlIGFyZ3Mg dXNhZ2U7Ci0rICAgICAgICBleGl0IDIKLSsgIGluCi0rICAocmV4LCBMaXN0LnJldiAhZmlsZXMp Ci0rCi0rbGV0IF8gPQotKyAgbGV0IHJleCwgZmlsZXMgPSBwYXJzZV9hcmdzICgpIGFuZCByZmwg PSByZmxhZ3MgW10gaW4KLSsKLSsgIGxldCBfLCBvdmVjdG9yID0gbWFrZV9vdmVjdG9yIHJleCBp bgotKwotKyAgbGV0IHBjcmUyZ3JlcCBmaWxlIG5hbWUgPQotKyAgICBsZXQgcmV0X2NvZGUgPSBy ZWYgMQotKyAgICBhbmQgbGluZW51bWJlciA9IHJlZiAwCi0rICAgIGFuZCBjb3VudCA9IHJlZiAw Ci0rICAgIGFuZCBzdGRpbl9wcmludF9uYW1lICgpID0KLSsgICAgICBtYXRjaCBuYW1lIHdpdGgK LSsgICAgICB8IFNvbWUgZmlsZW5hbWUgLT4gcHJpbnRfZW5kbGluZSBmaWxlbmFtZQotKyAgICAg IHwgTm9uZSAtPiBwcmludF9lbmRsaW5lICI8c3RkaW4+IgotKyAgICBhbmQgcHJpbnRfbmFtZSAo KSA9Ci0rICAgICAgbWF0Y2ggbmFtZSB3aXRoIFNvbWUgbmFtZSAtPiBwcmludGYgIiVzOiIgbmFt ZSB8IE5vbmUgLT4gKCkKLSsgICAgaW4KLSsKLSsgICAgbGV0IHRyeV9tYXRjaCBsaW5lID0KLSsg ICAgICBsZXQgbWF0Y2hlZCA9Ci0rICAgICAgICB0cnkKLSsgICAgICAgICAgdW5zYWZlX3BjcmUy X21hdGNoIHJmbCByZXggfnBvczowIH5zdWJqX3N0YXJ0OjAgfnN1Ymo6bGluZSBvdmVjdG9yCi0r ICAgICAgICAgICAgTm9uZTsKLSsgICAgICAgICAgaWYgIXdob2xlX2xpbmVzICYmIG92ZWN0b3Iu KDEpIDw+IFN0cmluZy5sZW5ndGggbGluZSB0aGVuIGZhbHNlCi0rICAgICAgICAgIGVsc2UgdHJ1 ZQotKyAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2UKLSsgICAgICBpbgotKwotKyAgICAg IGluY3IgbGluZW51bWJlcjsKLSsKLSsgICAgICBpZiBtYXRjaGVkIDw+ICFpbnZlcnQgdGhlbiAo Ci0rICAgICAgICBpZiAhY291bnRfb25seSB0aGVuIGluY3IgY291bnQKLSsgICAgICAgIGVsc2Ug aWYgIWZpbGVuYW1lc19vbmx5IHRoZW4gKAotKyAgICAgICAgICBzdGRpbl9wcmludF9uYW1lICgp OwotKyAgICAgICAgICByYWlzZSBFeGl0KQotKyAgICAgICAgZWxzZSBpZiAhc2lsZW50IHRoZW4g cmFpc2UgRXhpdAotKyAgICAgICAgZWxzZSAoCi0rICAgICAgICAgIHByaW50X25hbWUgKCk7Ci0r ICAgICAgICAgIGlmICFudW1iZXIgdGhlbiBwcmludGYgIiVkOiIgIWxpbmVudW1iZXI7Ci0rICAg ICAgICAgIHByaW50X2VuZGxpbmUgbGluZSk7Ci0rICAgICAgICByZXRfY29kZSA6PSAwKQotKyAg ICBpbgotKwotKyAgICB0cnkKLSsgICAgICBmb3JlYWNoX2xpbmUgfmljOmZpbGUgdHJ5X21hdGNo OwotKyAgICAgIGlmICFjb3VudF9vbmx5IHRoZW4gKAotKyAgICAgICAgcHJpbnRfbmFtZSAoKTsK LSsgICAgICAgIHByaW50ZiAiJWRcbiIgIWNvdW50KTsKLSsgICAgICAhcmV0X2NvZGUKLSsgICAg d2l0aCBFeGl0IC0+IDAKLSsgIGluCi0rCi0rICBpZiBmaWxlcyA9IFtdIHRoZW4gZXhpdCAocGNy ZTJncmVwIHN0ZGluIE5vbmUpOwotKwotKyAgaWYgTGlzdC5sZW5ndGggZmlsZXMgPSAxIHRoZW4g ZmlsZW5hbWVzIDo9IGZhbHNlOwotKyAgaWYgIWZpbGVuYW1lc19vbmx5IHRoZW4gZmlsZW5hbWVz IDo9IHRydWU7Ci0rCi0rICBsZXQgY29sbGVjdCByZXRfY29kZSBmaWxlbmFtZSA9Ci0rICAgIHRy eQotKyAgICAgIGxldCBmaWxlID0gb3Blbl9pbiBmaWxlbmFtZSBpbgotKyAgICAgIGxldCBmcmMg PSBwY3JlMmdyZXAgZmlsZSAoaWYgIWZpbGVuYW1lcyB0aGVuIFNvbWUgZmlsZW5hbWUgZWxzZSBO b25lKSBpbgotKyAgICAgIGNsb3NlX2luIGZpbGU7Ci0rICAgICAgaWYgZnJjID0gMCAmJiByZXRf Y29kZSA9IDEgdGhlbiAwIGVsc2UgcmV0X2NvZGUKLSsgICAgd2l0aCBTeXNfZXJyb3IgbXNnIC0+ Ci0rICAgICAgcHJlcnJfZW5kbGluZSBtc2c7Ci0rICAgICAgMgotKyAgaW4KLSsgIGV4aXQgKExp c3QuZm9sZF9sZWZ0IGNvbGxlY3QgMSBmaWxlcykKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUy L3BjcmUyLW9jYW1sL2V4YW1wbGVzL3N1YnN0Lm1sIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2Ft bC9leGFtcGxlcy9zdWJzdC5tbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAw MC4uZDllYzYxYzdhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9j YW1sL2V4YW1wbGVzL3N1YnN0Lm1sCi1AQCAtMCwwICsxLDU3IEBACi0rb3BlbiBQY3JlMgotKwot K2xldCBwYXJzZV9hcmdzICgpID0KLSsgIGxldCBxdWljayA9IHJlZiBmYWxzZQotKyAgYW5kIGZp cnN0ID0gcmVmIGZhbHNlCi0rICBhbmQgaWdub3JlX2Nhc2UgPSByZWYgZmFsc2UKLSsgIGFuZCBv ZmZzZXQgPSByZWYgMAotKyAgYW5kIHBhdCA9IHJlZiBOb25lCi0rICBhbmQgc3Vic3RyID0gcmVm IE5vbmUgaW4KLSsKLSsgIGxldCBxID0KLSsgICAgKCAiLXEiLAotKyAgICAgIEFyZy5TZXQgcXVp Y2ssCi0rICAgICAgIlF1aWNrIHJlcGxhY2VtZW50LiBJbnRlcnByZXRlcyBzdWJzdGl0dXRpb24g YXMgcGxhaW4gdGV4dC4iICkKLSsgIGFuZCBmID0gKCItZiIsIEFyZy5TZXQgZmlyc3QsICJSZXBs YWNlIGZpcnN0IG9jY3VycmVuY2UgaW4gbGluZSBvbmx5LiIpCi0rICBhbmQgaSA9ICgiLWkiLCBB cmcuU2V0IGlnbm9yZV9jYXNlLCAiSWdub3JlIGNhc2UuIikKLSsgIGFuZCBvZnMgPQotKyAgICAo Ii1vZnMiLCBBcmcuSW50IChmdW4gbiAtPiBvZmZzZXQgOj0gbiksICJTdGFydCBtYXRjaGluZyBh dCBjb2x1bW4gbi4iKQotKyAgYW5kIHVzYWdlID0KLSsgICAgIlVzYWdlOiBzdWJzdCBbLXFdIFst Zl0gWy1pXSBbLW9mcyBvZmZzZXRdIHBhdHRlcm4gc3Vic3RpdHV0aW9uXG5cblwKLSsgICAgIFJl YWRzIGxpbmVzIGZyb20gc3RhbmRhcmQgaW5wdXQgYW5kIHJlcGxhY2VzIG9jY3VycmVuY2VzIG9m XG5cCi0rICAgICB0aGUgUEVSTC1zdHlsZSByZWd1bGFyIGV4cHJlc3Npb24gXCJwYXR0ZXJuXCIg d2l0aCBcInN1YnN0aXR1dGlvblwiLFxuXAotKyAgICAgcHJpbnRpbmcgdGhlIHJlc3VsdCB0byBz dGFuZGFyZCBvdXRwdXQuXG5cCi0rICAgICBJbiBkZWZhdWx0IG1vZGUgdGhlIGNvbnRlbnRzIG9m IFwic3Vic3RpdHV0aW9uXCIgd2lsbCBiZSBpbnRlcnByZXRlZFxuXAotKyAgICAgc2ltaWxhcmx5 IHRvIGl0cyBlcXVpdmFsZW50IGluIFBFUkwuXG4iCi0rICBhbmQgYW5vbl9hcmcgYXJnID0KLSsg ICAgbWF0Y2ggKCFwYXQsICFzdWJzdHIpIHdpdGgKLSsgICAgfCBOb25lLCBfIC0+IHBhdCA6PSBT b21lIGFyZwotKyAgICB8IF8sIE5vbmUgLT4gc3Vic3RyIDo9IFNvbWUgYXJnCi0rICAgIHwgXyAt PiByYWlzZSAoQXJnLkJhZCAidG9vIG1hbnkgYXJndW1lbnRzISIpCi0rICBpbgotKwotKyAgbGV0 IGFyZ3MgPSBbIHE7IGY7IGk7IG9mcyBdIGluCi0rICBBcmcucGFyc2UgYXJncyBhbm9uX2FyZyB1 c2FnZTsKLSsKLSsgIGxldCBmbGFncyA9IGlmICFpZ25vcmVfY2FzZSB0aGVuIFsgYENBU0VMRVNT IF0gZWxzZSBbXSBpbgotKwotKyAgbGV0IHJleCwgc3N0ciA9Ci0rICAgIG1hdGNoICghcGF0LCAh c3Vic3RyKSB3aXRoCi0rICAgIHwgU29tZSByZXgsIFNvbWUgc3N0ciAtPiAocmVnZXhwIH5mbGFn cyByZXgsIHNzdHIpCi0rICAgIHwgXyAtPgotKyAgICAgICAgcHJlcnJfZW5kbGluZSAoU3lzLmFy Z3YuKDApIF4gIjogbm90IGVub3VnaCBhcmd1bWVudHMhIik7Ci0rICAgICAgICBBcmcudXNhZ2Ug YXJncyB1c2FnZTsKLSsgICAgICAgIGV4aXQgMQotKyAgaW4KLSsKLSsgIG1hdGNoICghcXVpY2ss ICFmaXJzdCkgd2l0aAotKyAgfCBmYWxzZSwgZmFsc2UgLT4gZnVuIHMgLT4gcmVwbGFjZSB+cmV4 IH5wb3M6IW9mZnNldCB+dGVtcGw6c3N0ciBzCi0rICB8IHRydWUsIGZhbHNlIC0+IGZ1biBzIC0+ IHFyZXBsYWNlIH5yZXggfnBvczohb2Zmc2V0IH50ZW1wbDpzc3RyIHMKLSsgIHwgZmFsc2UsIHRy dWUgLT4gZnVuIHMgLT4gcmVwbGFjZV9maXJzdCB+cmV4IH5wb3M6IW9mZnNldCB+dGVtcGw6c3N0 ciBzCi0rICB8IHRydWUsIHRydWUgLT4gZnVuIHMgLT4gcXJlcGxhY2VfZmlyc3QgfnJleCB+cG9z OiFvZmZzZXQgfnRlbXBsOnNzdHIgcwotKwotK2xldCBfID0KLSsgIGxldCBzdWJzdGl0dXRlID0g cGFyc2VfYXJncyAoKSBpbgotKyAgZm9yZWFjaF9saW5lIChmdW4gbGluZSAtPgotKyAgICAgIHRy eSBwcmludF9lbmRsaW5lIChzdWJzdGl0dXRlIGxpbmUpCi0rICAgICAgd2l0aCBJbnZhbGlkX2Fy Z3VtZW50IF8gLT4gcHJpbnRfZW5kbGluZSBsaW5lKQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNy ZTIvcGNyZTItb2NhbWwvbGliL01ha2VmaWxlIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9s aWIvTWFrZWZpbGUKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmVmNWYw N2NmZQotLS0tIC9kZXYvbnVsbAotKysrIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIv TWFrZWZpbGUKLUBAIC0wLDAgKzEsMTUgQEAKLStUQVJHRVRTID0gcGNyZTIuY21hIGxpYnBjcmUy X3N0dWJzLmEKLSsKLSsuUEhPTlk6IGFsbCBjbGVhbiBjbGVhbi1jb21waWxlLWNvbW1hbmRzCi0r Ci0rYWxsOiBjb21waWxlX2NvbW1hbmRzLmpzb24KLSsJQGR1bmUgYnVpbGQgJChUQVJHRVRTKQot KwotK2NsZWFuOiBjbGVhbi1jb21waWxlLWNvbW1hbmRzCi0rCUBkdW5lIGNsZWFuCi0rCi0rY29t cGlsZV9jb21tYW5kcy5qc29uOiBjb25maWcvZHVuZSBjb25maWcvZGlzY292ZXIubWwgJCh3aWxk Y2FyZCAqLmMgKi5oKQotKwlAZHVuZSBydWxlcyB8IGR1bmUtY29tcGlsZWRiCi0rCi0rY2xlYW4t Y29tcGlsZS1jb21tYW5kczoKLSsJQHJtIC1mIGNvbXBpbGVfY29tbWFuZHMuanNvbgotZGlmZiAt LWdpdCBhL2J1bmRsZXMvcGNyZS9wY3JlLW9jYW1sL3NyYy9jb25maWcvTWFrZWZpbGUgYi9idW5k bGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9jb25maWcvTWFrZWZpbGUKLXNpbWlsYXJpdHkgaW5k ZXggMTAwJQotcmVuYW1lIGZyb20gYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL2NvbmZpZy9N YWtlZmlsZQotcmVuYW1lIHRvIGJ1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvbGliL2NvbmZpZy9N YWtlZmlsZQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvbGliL2NvbmZp Zy9kaXNjb3Zlci5tbCBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvbGliL2NvbmZpZy9kaXNj b3Zlci5tbAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uOTQ1MjRjNjVj Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9jb25m aWcvZGlzY292ZXIubWwKLUBAIC0wLDAgKzEsMTQgQEAKLStsZXQgKCkgPQotKyAgbGV0IG1vZHVs ZSBDID0gQ29uZmlndXJhdG9yLlYxIGluCi0rICBDLm1haW4gfm5hbWU6InBjcmUyIiAoZnVuIGMg LT4KLSsgICAgICBsZXQgZGVmYXVsdCA6IEMuUGtnX2NvbmZpZy5wYWNrYWdlX2NvbmYgPQotKyAg ICAgICAgeyBsaWJzID0gWyAiLWxwY3JlMi04IiBdOyBjZmxhZ3MgPSBbXSB9Ci0rICAgICAgaW4K LSsgICAgICBsZXQgY29uZiA9Ci0rICAgICAgICBtYXRjaCBDLlBrZ19jb25maWcuZ2V0IGMgd2l0 aAotKyAgICAgICAgfCBOb25lIC0+IGRlZmF1bHQKLSsgICAgICAgIHwgU29tZSBwYyAtPgotKyAg ICAgICAgICAgIE9wdGlvbi52YWx1ZSAoQy5Qa2dfY29uZmlnLnF1ZXJ5IHBjIH5wYWNrYWdlOiJs aWJwY3JlMi04IikgfmRlZmF1bHQKLSsgICAgICBpbgotKyAgICAgIEMuRmxhZ3Mud3JpdGVfc2V4 cCAiY19mbGFncy5zZXhwIiBjb25mLmNmbGFnczsKLSsgICAgICBDLkZsYWdzLndyaXRlX3NleHAg ImNfbGlicmFyeV9mbGFncy5zZXhwIiBjb25mLmxpYnMpCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9w Y3JlMi9wY3JlMi1vY2FtbC9saWIvY29uZmlnL2R1bmUgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9j YW1sL2xpYi9jb25maWcvZHVuZQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAw MC4uZWMxZWI2N2Y2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9j YW1sL2xpYi9jb25maWcvZHVuZQotQEAgLTAsMCArMSw0IEBACi0rKGV4ZWN1dGFibGVzCi0rIChu YW1lcyBkaXNjb3ZlcikKLSsgKGxpYnJhcmllcyBkdW5lLmNvbmZpZ3VyYXRvcikKLSsgKG1vZGVz IGJ5dGUgZXhlKSkKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9k dW5lIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIvZHVuZQotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uMjJlNTcwZjA3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9i dW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9kdW5lCi1AQCAtMCwwICsxLDE4IEBACi0rKGxp YnJhcnkKLSsgKHB1YmxpY19uYW1lIHBjcmUyKQotKyAoZm9yZWlnbl9zdHVicwotKyAgKGxhbmd1 YWdlIGMpCi0rICAobmFtZXMgcGNyZTJfc3R1YnMpCi0rICAoZmxhZ3MKLSsgICAoOnN0YW5kYXJk KQotKyAgICg6aW5jbHVkZSBjX2ZsYWdzLnNleHApCi0rICAgLU8yCi0rICAgLWZQSUMKLSsgICAt RFBJQykpCi0rIChjX2xpYnJhcnlfZmxhZ3MKLSsgICg6aW5jbHVkZSBjX2xpYnJhcnlfZmxhZ3Mu c2V4cCkpKQotKwotKyhydWxlCi0rICh0YXJnZXRzIGNfZmxhZ3Muc2V4cCBjX2xpYnJhcnlfZmxh Z3Muc2V4cCkKLSsgKGFjdGlvbgotKyAgKHJ1biAuL2NvbmZpZy9kaXNjb3Zlci5leGUpKSkKLWRp ZmYgLS1naXQgYS9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9wY3JlMi5tbCBiL2J1bmRs ZXMvcGNyZTIvcGNyZTItb2NhbWwvbGliL3BjcmUyLm1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMDAwLi5iOGUyYzNjNDEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2J1bmRsZXMv cGNyZTIvcGNyZTItb2NhbWwvbGliL3BjcmUyLm1sCi1AQCAtMCwwICsxLDEyMzEgQEAKLSsoKiBQ Q1JFMi1PQ0FNTCAtIFBlcmwgQ29tcGF0aWJpbGl0eSBSZWd1bGFyIEV4cHJlc3Npb25zIGZvciBP Q2FtbAotKwotKyAgIENvcHlyaWdodCDCqSAxOTk5LSBNYXJrdXMgTW90dGwgPG1hcmt1cy5tb3R0 bEBnbWFpbC5jb20+Ci0rCi0rICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKLSsgICB0aGUgdGVybXMg b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUKLSsgICBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2Yg dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsKLSsgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKLSsgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwotKyAg IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUKLSsgICBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0rICAgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQSAqKQotKwotKygqIFB1YmxpYyBleGNl cHRpb25zIGFuZCB0aGVpciByZWdpc3RyYXRpb24gd2l0aCB0aGUgQyBydW50aW1lICopCi0rCi0r b3BlbiBQcmludGYKLSsKLSt0eXBlIGVycm9yID0KLSsgIHwgUGFydGlhbAotKyAgfCBCYWRQYXR0 ZXJuIG9mIHN0cmluZyAqIGludAotKyAgfCBCYWRVVEYKLSsgIHwgQmFkVVRGT2Zmc2V0Ci0rICB8 IE1hdGNoTGltaXQKLSsgIHwgRGVwdGhMaW1pdAotKyAgfCBXb3Jrc3BhY2VTaXplCi0rICB8IElu dGVybmFsRXJyb3Igb2Ygc3RyaW5nCi0rCi0rbGV0IHN0cmluZ19vZl9lcnJvciA9IGZ1bmN0aW9u Ci0rICB8IFBhcnRpYWwgLT4gIlBhcnRpYWwiCi0rICB8IEJhZFBhdHRlcm4gKG1zZywgcG9zKSAt PiBzcHJpbnRmICJQY3JlMi5CYWRQYXR0ZXJuKCVTLCBwb3M9JWkpIiBtc2cgcG9zCi0rICB8IEJh ZFVURiAtPiAiQmFkVVRGIgotKyAgfCBCYWRVVEZPZmZzZXQgLT4gIkJhZFVURk9mZnNldCIKLSsg IHwgTWF0Y2hMaW1pdCAtPiAiTWF0Y2hMaW1pdCIKLSsgIHwgRGVwdGhMaW1pdCAtPiAiRGVwdGhM aW1pdCIKLSsgIHwgV29ya3NwYWNlU2l6ZSAtPiAiV29ya3NwYWNlU2l6ZSIKLSsgIHwgSW50ZXJu YWxFcnJvciBtc2cgLT4gc3ByaW50ZiAiSW50ZXJuYWxFcnJvciglUykiIG1zZwotKwotK2V4Y2Vw dGlvbiBFcnJvciBvZiBlcnJvcgotK2V4Y2VwdGlvbiBCYWNrdHJhY2sKLStleGNlcHRpb24gUmVn ZXhwX29yIG9mIHN0cmluZyAqIGVycm9yCi0rCi0rbGV0IHN0cmluZ19vZl9leG4gPSBmdW5jdGlv bgotKyAgfCBFcnJvciBlcnJvciAtPiBTb21lIChzcHJpbnRmICJQY3JlMi5FcnJvciglcykiIChz dHJpbmdfb2ZfZXJyb3IgZXJyb3IpKQotKyAgfCBCYWNrdHJhY2sgLT4gU29tZSAiUGNyZTIuQmFj a3RyYWNrIgotKyAgfCBSZWdleHBfb3IgKHBhdCwgZXJyb3IpIC0+Ci0rICAgICAgU29tZSAoc3By aW50ZiAiUGNyZTIuUmVnZXhwX29yKHBhdD0lUywgJXMpIiBwYXQgKHN0cmluZ19vZl9lcnJvciBl cnJvcikpCi0rICB8IF9ub3RfZnJvbV9wY3JlIC0+IE5vbmUKLSsKLStsZXQgKCkgPSBQcmludGV4 Yy5yZWdpc3Rlcl9wcmludGVyIHN0cmluZ19vZl9leG4KLSsKLSsoKiBQdXRzIGV4Y2VwdGlvbnMg aW50byBnbG9iYWwgQy12YXJpYWJsZXMgZm9yIGZhc3QgcmV0cmlldmFsICopCi0rZXh0ZXJuYWwg cGNyZTJfb2NhbWxfaW5pdCA6IHVuaXQgLT4gdW5pdCA9ICJwY3JlMl9vY2FtbF9pbml0IgotKwot KygqIFJlZ2lzdGVycyBleGNlcHRpb25zIHdpdGggdGhlIEMgcnVudGltZSBhbmQgY2FjaGVzIHBv bHltb3JwaGljIHZhcmlhbnRzICopCi0rbGV0ICgpID0KLSsgIENhbGxiYWNrLnJlZ2lzdGVyX2V4 Y2VwdGlvbiAiUGNyZTIuRXJyb3IiIChFcnJvciAoSW50ZXJuYWxFcnJvciAiIikpOwotKyAgQ2Fs bGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uICJQY3JlMi5CYWNrdHJhY2siIEJhY2t0cmFjazsKLSsg IHBjcmUyX29jYW1sX2luaXQgKCkKLSsKLSsoKiBDb21waWxhdGlvbiBhbmQgcnVudGltZSBmbGFn cyBhbmQgdGhlaXIgY29udmVyc2lvbiBmdW5jdGlvbnMgKikKLSsKLSt0eXBlIGljZmxhZyA9IGlu dDY0Ci0rdHlwZSBpcmZsYWcgPSBpbnQ2NAotKwotKygqIENvbXBpbGF0aW9uIGZsYWdzICopCi0r Ci0rdHlwZSBjZmxhZyA9Ci0rICBbIGBBTExPV19FTVBUWV9DTEFTUwotKyAgfCBgQUxUX0JTVVgK LSsgIHwgYEFMVF9DSVJDVU1GTEVYCi0rICB8IGBBTFRfVkVSQk5BTUVTCi0rICB8IGBBTkNIT1JF RAotKyAgfCBgQVVUT19DQUxMT1VUCi0rICB8IGBDQVNFTEVTUwotKyAgfCBgRE9MTEFSX0VORE9O TFkKLSsgIHwgYERPVEFMTAotKyAgfCBgRFVQTkFNRVMKLSsgIHwgYEVOREFOQ0hPUkVECi0rICB8 IGBFWFRFTkRFRAotKyAgfCBgRVhURU5ERURfTU9SRQotKyAgfCBgRklSU1RMSU5FCi0rICB8IGBM SVRFUkFMCi0rICB8IGBNQVRDSF9JTlZBTElEX1VURgotKyAgfCBgTUFUQ0hfVU5TRVRfQkFDS1JF RgotKyAgfCBgTVVMVElMSU5FCi0rICB8IGBORVZFUl9CQUNLU0xBU0hfQwotKyAgfCBgTkVWRVJf VUNQCi0rICB8IGBORVZFUl9VVEYKLSsgIHwgYE5PX0FVVE9fQ0FQVFVSRQotKyAgfCBgTk9fQVVU T19QT1NTRVNTCi0rICB8IGBOT19ET1RTVEFSX0FOQ0hPUgotKyAgfCBgTk9fU1RBUlRfT1BUSU1J WkUKLSsgIHwgYE5PX1VURl9DSEVDSwotKyAgfCBgVUNQCi0rICB8IGBVTkdSRUVEWQotKyAgfCBg VVNFX09GRlNFVF9MSU1JVAotKyAgfCBgVVRGIF0KLSsKLStsZXQgaW50X29mX2NmbGFnID0gZnVu Y3Rpb24KLSsgIHwgYEFMTE9XX0VNUFRZX0NMQVNTIC0+IDB4MDAwMDAwMDFMCi0rICB8IGBBTFRf QlNVWCAtPiAweDAwMDAwMDAyTAotKyAgfCBgQVVUT19DQUxMT1VUIC0+IDB4MDAwMDAwMDRMCi0r ICB8IGBDQVNFTEVTUyAtPiAweDAwMDAwMDA4TAotKyAgfCBgRE9MTEFSX0VORE9OTFkgLT4gMHgw MDAwMDAxMEwKLSsgIHwgYERPVEFMTCAtPiAweDAwMDAwMDIwTAotKyAgfCBgRFVQTkFNRVMgLT4g MHgwMDAwMDA0MEwKLSsgIHwgYEVYVEVOREVEIC0+IDB4MDAwMDAwODBMCi0rICB8IGBGSVJTVExJ TkUgLT4gMHgwMDAwMDEwMEwKLSsgIHwgYE1BVENIX1VOU0VUX0JBQ0tSRUYgLT4gMHgwMDAwMDIw MEwKLSsgIHwgYE1VTFRJTElORSAtPiAweDAwMDAwNDAwTAotKyAgfCBgTkVWRVJfVUNQIC0+IDB4 MDAwMDA4MDBMCi0rICB8IGBORVZFUl9VVEYgLT4gMHgwMDAwMTAwMEwKLSsgIHwgYE5PX0FVVE9f Q0FQVFVSRSAtPiAweDAwMDAyMDAwTAotKyAgfCBgTk9fQVVUT19QT1NTRVNTIC0+IDB4MDAwMDQw MDBMCi0rICB8IGBOT19ET1RTVEFSX0FOQ0hPUiAtPiAweDAwMDA4MDAwTAotKyAgfCBgTk9fU1RB UlRfT1BUSU1JWkUgLT4gMHgwMDAxMDAwMEwKLSsgIHwgYFVDUCAtPiAweDAwMDIwMDAwTAotKyAg fCBgVU5HUkVFRFkgLT4gMHgwMDA0MDAwMEwKLSsgIHwgYFVURiAtPiAweDAwMDgwMDAwTAotKyAg fCBgTkVWRVJfQkFDS1NMQVNIX0MgLT4gMHgwMDEwMDAwMEwKLSsgIHwgYEFMVF9DSVJDVU1GTEVY IC0+IDB4MDAyMDAwMDBMCi0rICB8IGBBTFRfVkVSQk5BTUVTIC0+IDB4MDA0MDAwMDBMCi0rICB8 IGBVU0VfT0ZGU0VUX0xJTUlUIC0+IDB4MDA4MDAwMDBMCi0rICB8IGBFWFRFTkRFRF9NT1JFIC0+ IDB4MDEwMDAwMDBMCi0rICB8IGBMSVRFUkFMIC0+IDB4MDIwMDAwMDBMCi0rICB8IGBNQVRDSF9J TlZBTElEX1VURiAtPiAweDA0MDAwMDAwTAotKyAgfCBgRU5EQU5DSE9SRUQgLT4gMHgyMDAwMDAw MEwKLSsgIHwgYE5PX1VURl9DSEVDSyAtPiAweDQwMDAwMDAwTAotKyAgfCBgQU5DSE9SRUQgLT4g MHg4MDAwMDAwMEwKLSsKLStsZXQgY29sbF9pY2ZsYWcgaWNmbGFnIGZsYWcgPSBJbnQ2NC5sb2dv ciAoaW50X29mX2NmbGFnIGZsYWcpIGljZmxhZwotK2xldCBjZmxhZ3MgZmxhZ3MgPSBMaXN0LmZv bGRfbGVmdCBjb2xsX2ljZmxhZyAwTCBmbGFncwotKwotK2xldCBjZmxhZ19vZl9pbnQgPSBmdW5j dGlvbgotKyAgfCAweDAwMDAwMDAxTCAtPiBgQUxMT1dfRU1QVFlfQ0xBU1MKLSsgIHwgMHgwMDAw MDAwMkwgLT4gYEFMVF9CU1VYCi0rICB8IDB4MDAwMDAwMDRMIC0+IGBBVVRPX0NBTExPVVQKLSsg IHwgMHgwMDAwMDAwOEwgLT4gYENBU0VMRVNTCi0rICB8IDB4MDAwMDAwMTBMIC0+IGBET0xMQVJf RU5ET05MWQotKyAgfCAweDAwMDAwMDIwTCAtPiBgRE9UQUxMCi0rICB8IDB4MDAwMDAwNDBMIC0+ IGBEVVBOQU1FUwotKyAgfCAweDAwMDAwMDgwTCAtPiBgRVhURU5ERUQKLSsgIHwgMHgwMDAwMDEw MEwgLT4gYEZJUlNUTElORQotKyAgfCAweDAwMDAwMjAwTCAtPiBgTUFUQ0hfVU5TRVRfQkFDS1JF RgotKyAgfCAweDAwMDAwNDAwTCAtPiBgTVVMVElMSU5FCi0rICB8IDB4MDAwMDA4MDBMIC0+IGBO RVZFUl9VQ1AKLSsgIHwgMHgwMDAwMTAwMEwgLT4gYE5FVkVSX1VURgotKyAgfCAweDAwMDAyMDAw TCAtPiBgTk9fQVVUT19DQVBUVVJFCi0rICB8IDB4MDAwMDQwMDBMIC0+IGBOT19BVVRPX1BPU1NF U1MKLSsgIHwgMHgwMDAwODAwMEwgLT4gYE5PX0RPVFNUQVJfQU5DSE9SCi0rICB8IDB4MDAwMTAw MDBMIC0+IGBOT19TVEFSVF9PUFRJTUlaRQotKyAgfCAweDAwMDIwMDAwTCAtPiBgVUNQCi0rICB8 IDB4MDAwNDAwMDBMIC0+IGBVTkdSRUVEWQotKyAgfCAweDAwMDgwMDAwTCAtPiBgVVRGCi0rICB8 IDB4MDAxMDAwMDBMIC0+IGBORVZFUl9CQUNLU0xBU0hfQwotKyAgfCAweDAwMjAwMDAwTCAtPiBg QUxUX0NJUkNVTUZMRVgKLSsgIHwgMHgwMDQwMDAwMEwgLT4gYEFMVF9WRVJCTkFNRVMKLSsgIHwg MHgwMDgwMDAwMEwgLT4gYFVTRV9PRkZTRVRfTElNSVQKLSsgIHwgMHgwMTAwMDAwMEwgLT4gYEVY VEVOREVEX01PUkUKLSsgIHwgMHgwMjAwMDAwMEwgLT4gYExJVEVSQUwKLSsgIHwgMHgwNDAwMDAw MEwgLT4gYE1BVENIX0lOVkFMSURfVVRGCi0rICB8IDB4MjAwMDAwMDBMIC0+IGBFTkRBTkNIT1JF RAotKyAgfCAweDQwMDAwMDAwTCAtPiBgTk9fVVRGX0NIRUNLCi0rICB8IDB4ODAwMDAwMDBMIC0+ IGBBTkNIT1JFRAotKyAgfCBfIC0+IGZhaWx3aXRoICJQY3JlMi5jZmxhZ19saXN0OiB1bmtub3du IGNvbXBpbGF0aW9uIGZsYWciCi0rCi0rbGV0IGFsbF9jZmxhZ3MgPQotKyAgWwotKyAgICAweDAw MDAwMDAxTDsKLSsgICAgMHgwMDAwMDAwMkw7Ci0rICAgIDB4MDAwMDAwMDRMOwotKyAgICAweDAw MDAwMDA4TDsKLSsgICAgMHgwMDAwMDAxMEw7Ci0rICAgIDB4MDAwMDAwMjBMOwotKyAgICAweDAw MDAwMDQwTDsKLSsgICAgMHgwMDAwMDA4MEw7Ci0rICAgIDB4MDAwMDAxMDBMOwotKyAgICAweDAw MDAwMjAwTDsKLSsgICAgMHgwMDAwMDQwMEw7Ci0rICAgIDB4MDAwMDA4MDBMOwotKyAgICAweDAw MDAxMDAwTDsKLSsgICAgMHgwMDAwMjAwMEw7Ci0rICAgIDB4MDAwMDQwMDBMOwotKyAgICAweDAw MDA4MDAwTDsKLSsgICAgMHgwMDAxMDAwMEw7Ci0rICAgIDB4MDAwMjAwMDBMOwotKyAgICAweDAw MDQwMDAwTDsKLSsgICAgMHgwMDA4MDAwMEw7Ci0rICAgIDB4MDAxMDAwMDBMOwotKyAgICAweDAw MjAwMDAwTDsKLSsgICAgMHgwMDQwMDAwMEw7Ci0rICAgIDB4MDA4MDAwMDBMOwotKyAgICAweDAx MDAwMDAwTDsKLSsgICAgMHgwMjAwMDAwMEw7Ci0rICAgIDB4MDQwMDAwMDBMOwotKyAgICAweDIw MDAwMDAwTDsKLSsgICAgMHg0MDAwMDAwMEw7Ci0rICAgIDB4ODAwMDAwMDBMOwotKyAgXQotKwot K2xldCBjZmxhZ19saXN0IGljZmxhZ3MgPQotKyAgbGV0IGNvbGwgZmxhZ19saXN0IGZsYWcgPQot KyAgICBpZiBJbnQ2NC5lcXVhbCAoSW50NjQubG9nYW5kIGljZmxhZ3MgZmxhZykgMEwgdGhlbiBm bGFnX2xpc3QKLSsgICAgZWxzZSBjZmxhZ19vZl9pbnQgZmxhZyA6OiBmbGFnX2xpc3QKLSsgIGlu Ci0rICBMaXN0LmZvbGRfbGVmdCBjb2xsIFtdIGFsbF9jZmxhZ3MKLSsKLSsoKiBSdW50aW1lIGZs YWdzICopCi0rCi0rdHlwZSByZmxhZyA9Ci0rICBbIGBBTkNIT1JFRAotKyAgfCBgQ09QWV9NQVRD SEVEX1NVQkpFQ1QKLSsgIHwgYERGQV9SRVNUQVJUCi0rICB8IGBERkFfU0hPUlRFU1QKLSsgIHwg YEVOREFOQ0hPUkVECi0rICB8IGBOT1RCT0wKLSsgIHwgYE5PVEVPTAotKyAgfCBgTk9URU1QVFkK LSsgIHwgYE5PVEVNUFRZX0FUU1RBUlQKLSsgIHwgYE5PX0pJVAotKyAgfCBgTk9fVVRGX0NIRUNL Ci0rICB8IGBQQVJUSUFMX0hBUkQKLSsgIHwgYFBBUlRJQUxfU09GVCBdCi0rCi0rbGV0IGludF9v Zl9yZmxhZyA9IGZ1bmN0aW9uCi0rICB8IGBOT1RCT0wgLT4gMHgwMDAwMDAwMUwKLSsgIHwgYE5P VEVPTCAtPiAweDAwMDAwMDAyTAotKyAgfCBgTk9URU1QVFkgLT4gMHgwMDAwMDAwNEwKLSsgIHwg YE5PVEVNUFRZX0FUU1RBUlQgLT4gMHgwMDAwMDAwOEwKLSsgIHwgYFBBUlRJQUxfU09GVCAtPiAw eDAwMDAwMDEwTAotKyAgfCBgUEFSVElBTF9IQVJEIC0+IDB4MDAwMDAwMjBMCi0rICB8IGBERkFf UkVTVEFSVCAtPiAweDAwMDAwMDQwTAotKyAgfCBgREZBX1NIT1JURVNUIC0+IDB4MDAwMDAwODBM Ci0rICB8IGBOT19KSVQgLT4gMHgwMDAwMjAwMEwKLSsgIHwgYENPUFlfTUFUQ0hFRF9TVUJKRUNU IC0+IDB4MDAwMDQwMDBMCi0rICB8IGBFTkRBTkNIT1JFRCAtPiAweDIwMDAwMDAwTAotKyAgfCBg Tk9fVVRGX0NIRUNLIC0+IDB4NDAwMDAwMDBMCi0rICB8IGBBTkNIT1JFRCAtPiAweDgwMDAwMDAw TAotKwotK2xldCBjb2xsX2lyZmxhZyBpcmZsYWcgZmxhZyA9IEludDY0LmxvZ29yIChpbnRfb2Zf cmZsYWcgZmxhZykgaXJmbGFnCi0rbGV0IHJmbGFncyBmbGFncyA9IExpc3QuZm9sZF9sZWZ0IGNv bGxfaXJmbGFnIDBMIGZsYWdzCi0rCi0rbGV0IHJmbGFnX29mX2ludCA9IGZ1bmN0aW9uCi0rICB8 IDB4MDAwMDAwMDFMIC0+IGBOT1RCT0wKLSsgIHwgMHgwMDAwMDAwMkwgLT4gYE5PVEVPTAotKyAg fCAweDAwMDAwMDA0TCAtPiBgTk9URU1QVFkKLSsgIHwgMHgwMDAwMDAwOEwgLT4gYE5PVEVNUFRZ X0FUU1RBUlQKLSsgIHwgMHgwMDAwMDAxMEwgLT4gYFBBUlRJQUxfU09GVAotKyAgfCAweDAwMDAw MDIwTCAtPiBgUEFSVElBTF9IQVJECi0rICB8IDB4MDAwMDAwNDBMIC0+IGBERkFfUkVTVEFSVAot KyAgfCAweDAwMDAwMDgwTCAtPiBgREZBX1NIT1JURVNUCi0rICB8IDB4MDAwMDIwMDBMIC0+IGBO T19KSVQKLSsgIHwgMHgwMDAwNDAwMEwgLT4gYENPUFlfTUFUQ0hFRF9TVUJKRUNUCi0rICB8IDB4 MjAwMDAwMDBMIC0+IGBFTkRBTkNIT1JFRAotKyAgfCAweDQwMDAwMDAwTCAtPiBgTk9fVVRGX0NI RUNLCi0rICB8IDB4ODAwMDAwMDBMIC0+IGBBTkNIT1JFRAotKyAgfCBfIC0+IGZhaWx3aXRoICJQ Y3JlMi5yZmxhZ19saXN0OiB1bmtub3duIHJ1bnRpbWUgZmxhZyIKLSsKLStsZXQgYWxsX3JmbGFn cyA9Ci0rICBbCi0rICAgIDB4MDAwMDAwMDFMOwotKyAgICAweDAwMDAwMDAyTDsKLSsgICAgMHgw MDAwMDAwNEw7Ci0rICAgIDB4MDAwMDAwMDhMOwotKyAgICAweDAwMDAwMDEwTDsKLSsgICAgMHgw MDAwMDAyMEw7Ci0rICAgIDB4MDAwMDAwNDBMOwotKyAgICAweDAwMDAwMDgwTDsKLSsgICAgMHgw MDAwMjAwMEw7Ci0rICAgIDB4MDAwMDQwMDBMOwotKyAgICAweDIwMDAwMDAwTDsKLSsgICAgMHg0 MDAwMDAwMEw7Ci0rICAgIDB4ODAwMDAwMDBMOwotKyAgXQotKwotK2xldCByZmxhZ19saXN0IGly ZmxhZ3MgPQotKyAgbGV0IGNvbGwgZmxhZ19saXN0IGZsYWcgPQotKyAgICBpZiBJbnQ2NC5lcXVh bCAoSW50NjQubG9nYW5kIGlyZmxhZ3MgZmxhZykgMEwgdGhlbiBmbGFnX2xpc3QKLSsgICAgZWxz ZSByZmxhZ19vZl9pbnQgZmxhZyA6OiBmbGFnX2xpc3QKLSsgIGluCi0rICBMaXN0LmZvbGRfbGVm dCBjb2xsIFtdIGFsbF9yZmxhZ3MKLSsKLSsoKiBJbmZvcm1hdGlvbiBvbiB0aGUgUENSRTItY29u ZmlndXJhdGlvbiAoYnVpbGQtdGltZSBvcHRpb25zKSAqKQotKwotK2V4dGVybmFsIHBjcmUyX3Zl cnNpb24gOiB1bml0IC0+IHN0cmluZyA9ICJwY3JlMl92ZXJzaW9uX3N0dWIiCi0rCi0rZXh0ZXJu YWwgcGNyZTJfY29uZmlnX3VuaWNvZGUgOiB1bml0IC0+IGJvb2wgPSAicGNyZTJfY29uZmlnX3Vu aWNvZGVfc3R1YiIKLStbQEBub2FsbG9jXQotKwotK2V4dGVybmFsIHBjcmUyX2NvbmZpZ19uZXds aW5lIDogdW5pdCAtPiBjaGFyID0gInBjcmUyX2NvbmZpZ19uZXdsaW5lX3N0dWIiCi0rW0BAbm9h bGxvY10KLSsKLStleHRlcm5hbCBwY3JlMl9jb25maWdfbGlua19zaXplIDogdW5pdCAtPiAoaW50 W0B1bnRhZ2dlZF0pCi0rICA9ICJwY3JlMl9jb25maWdfbGlua19zaXplX3N0dWJfYmMiICJwY3Jl Ml9jb25maWdfbGlua19zaXplX3N0dWIiCi0rW0BAbm9hbGxvY10KLSsKLStleHRlcm5hbCBwY3Jl Ml9jb25maWdfbWF0Y2hfbGltaXQgOiB1bml0IC0+IChpbnRbQHVudGFnZ2VkXSkKLSsgID0gInBj cmUyX2NvbmZpZ19tYXRjaF9saW1pdF9zdHViX2JjIiAicGNyZTJfY29uZmlnX21hdGNoX2xpbWl0 X3N0dWIiCi0rW0BAbm9hbGxvY10KLSsKLStleHRlcm5hbCBwY3JlMl9jb25maWdfZGVwdGhfbGlt aXQgOiB1bml0IC0+IChpbnRbQHVudGFnZ2VkXSkKLSsgID0gInBjcmUyX2NvbmZpZ19kZXB0aF9s aW1pdF9zdHViX2JjIiAicGNyZTJfY29uZmlnX2RlcHRoX2xpbWl0X3N0dWIiCi0rW0BAbm9hbGxv Y10KLSsKLStleHRlcm5hbCBwY3JlMl9jb25maWdfc3RhY2tyZWN1cnNlIDogdW5pdCAtPiBib29s Ci0rICA9ICJwY3JlMl9jb25maWdfc3RhY2tyZWN1cnNlX3N0dWIiCi0rW0BAbm9hbGxvY10KLSsK LStsZXQgdmVyc2lvbiA9IHBjcmUyX3ZlcnNpb24gKCkKLStsZXQgY29uZmlnX3VuaWNvZGUgPSBw Y3JlMl9jb25maWdfdW5pY29kZSAoKQotK2xldCBjb25maWdfbmV3bGluZSA9IHBjcmUyX2NvbmZp Z19uZXdsaW5lICgpCi0rbGV0IGNvbmZpZ19saW5rX3NpemUgPSBwY3JlMl9jb25maWdfbGlua19z aXplICgpCi0rbGV0IGNvbmZpZ19tYXRjaF9saW1pdCA9IHBjcmUyX2NvbmZpZ19tYXRjaF9saW1p dCAoKQotK2xldCBjb25maWdfZGVwdGhfbGltaXQgPSBwY3JlMl9jb25maWdfZGVwdGhfbGltaXQg KCkKLStsZXQgY29uZmlnX3N0YWNrcmVjdXJzZSA9IHBjcmUyX2NvbmZpZ19zdGFja3JlY3Vyc2Ug KCkKLSsKLSsoKiBJbmZvcm1hdGlvbiBvbiBwYXR0ZXJucyAqKQotKwotK3R5cGUgZmlyc3Rjb2Rl dW5pdF9pbmZvID0gWyBgQ2hhciBvZiBjaGFyIHwgYFN0YXJ0X29ubHkgfCBgQU5DSE9SRUQgXQot K3R5cGUgcmVnZXhwCi0rCi0rZXh0ZXJuYWwgb3B0aW9ucyA6IHJlZ2V4cCAtPiAoaWNmbGFnW0B1 bmJveGVkXSkKLSsgID0gInBjcmUyX2FyZ29wdGlvbnNfc3R1Yl9iYyIgInBjcmUyX2FyZ29wdGlv bnNfc3R1YiIKLSsKLStleHRlcm5hbCBzaXplIDogcmVnZXhwIC0+IChpbnRbQHVudGFnZ2VkXSkK LSsgID0gInBjcmUyX3NpemVfc3R1Yl9iYyIgInBjcmUyX3NpemVfc3R1YiIKLSsKLStleHRlcm5h bCBjYXB0dXJlY291bnQgOiByZWdleHAgLT4gKGludFtAdW50YWdnZWRdKQotKyAgPSAicGNyZTJf Y2FwdHVyZWNvdW50X3N0dWJfYmMiICJwY3JlMl9jYXB0dXJlY291bnRfc3R1YiIKLSsKLStleHRl cm5hbCBiYWNrcmVmbWF4IDogcmVnZXhwIC0+IChpbnRbQHVudGFnZ2VkXSkKLSsgID0gInBjcmUy X2JhY2tyZWZtYXhfc3R1Yl9iYyIgInBjcmUyX2JhY2tyZWZtYXhfc3R1YiIKLSsKLStleHRlcm5h bCBuYW1lY291bnQgOiByZWdleHAgLT4gKGludFtAdW50YWdnZWRdKQotKyAgPSAicGNyZTJfbmFt ZWNvdW50X3N0dWJfYmMiICJwY3JlMl9uYW1lY291bnRfc3R1YiIKLSsKLStleHRlcm5hbCBuYW1l ZW50cnlzaXplIDogcmVnZXhwIC0+IChpbnRbQHVudGFnZ2VkXSkKLSsgID0gInBjcmUyX25hbWVl bnRyeXNpemVfc3R1Yl9iYyIgInBjcmUyX25hbWVlbnRyeXNpemVfc3R1YiIKLSsKLStleHRlcm5h bCBuYW1lcyA6IHJlZ2V4cCAtPiBzdHJpbmcgYXJyYXkgPSAicGNyZTJfbmFtZXNfc3R1YiIKLSsK LStleHRlcm5hbCBmaXJzdGNvZGV1bml0IDogcmVnZXhwIC0+IGZpcnN0Y29kZXVuaXRfaW5mbwot KyAgPSAicGNyZTJfZmlyc3Rjb2RldW5pdF9zdHViIgotKwotK2V4dGVybmFsIGxhc3Rjb2RldW5p dCA6IHJlZ2V4cCAtPiBjaGFyIG9wdGlvbiA9ICJwY3JlMl9sYXN0Y29kZXVuaXRfc3R1YiIKLSsK LSsoKiBDb21waWxhdGlvbiBvZiBwYXR0ZXJucyAqKQotKwotK3R5cGUgY2h0YWJsZXMKLSsKLStl eHRlcm5hbCBtYWtldGFibGVzIDogdW5pdCAtPiBjaHRhYmxlcyA9ICJwY3JlMl9tYWtldGFibGVz X3N0dWIiCi0rCi0rZXh0ZXJuYWwgY29tcGlsZSA6IChpY2ZsYWdbQHVuYm94ZWRdKSAtPiBjaHRh YmxlcyBvcHRpb24gLT4gc3RyaW5nIC0+IHJlZ2V4cAotKyAgPSAicGNyZTJfY29tcGlsZV9zdHVi X2JjIiAicGNyZTJfY29tcGlsZV9zdHViIgotKwotKygqIGV4dGVybmFsIGdldF9tYXRjaF9saW1p dCA6IHJlZ2V4cCAtPiBpbnQgb3B0aW9uID0KLSsgICAicGNyZTJfZ2V0X21hdGNoX2xpbWl0X3N0 dWIiICopCi0rCi0rKCogSW50ZXJuYWwgdXNlIG9ubHkhICopCi0rZXh0ZXJuYWwgc2V0X2ltcF9t YXRjaF9saW1pdCA6IHJlZ2V4cCAtPiAoaW50W0B1bnRhZ2dlZF0pIC0+IHJlZ2V4cAotKyAgPSAi cGNyZTJfc2V0X2ltcF9tYXRjaF9saW1pdF9zdHViX2JjIiAicGNyZTJfc2V0X2ltcF9tYXRjaF9s aW1pdF9zdHViIgotK1tAQG5vYWxsb2NdCi0rCi0rKCogZXh0ZXJuYWwgZ2V0X2RlcHRoX2xpbWl0 IDogcmVnZXhwIC0+IGludCBvcHRpb24gPQotKyAgICJwY3JlMl9nZXRfZGVwdGhfbGltaXRfc3R1 YiIgKikKLSsKLSsoKiBJbnRlcm5hbCB1c2Ugb25seSEgKikKLStleHRlcm5hbCBzZXRfaW1wX2Rl cHRoX2xpbWl0IDogcmVnZXhwIC0+IChpbnRbQHVudGFnZ2VkXSkgLT4gcmVnZXhwCi0rICA9ICJw Y3JlMl9zZXRfaW1wX2RlcHRoX2xpbWl0X3N0dWJfYmMiICJwY3JlMl9zZXRfaW1wX2RlcHRoX2xp bWl0X3N0dWIiCi0rW0BAbm9hbGxvY10KLSsKLSsoKiBUT0RPIGltcGxlbWVudCBqaXQgdXNpbmcg bmV3IHBjcmUyX2ppdF9jb21waWxlIGFwaSAqKQotK2xldCByZWdleHAKLSsgICAgKCogPyhqaXRf Y29tcGlsZSA9IGZhbHNlKSAqKQotKyAgICA/bGltaXQgP2RlcHRoX2xpbWl0ID8oaWZsYWdzID0g MEwpID9mbGFncyA/Y2h0YWJsZXMgcGF0ID0KLSsgIGxldCByZXggPQotKyAgICBtYXRjaCBmbGFn cyB3aXRoCi0rICAgIHwgU29tZSBmbGFnX2xpc3QgLT4gY29tcGlsZSAoY2ZsYWdzIGZsYWdfbGlz dCkgY2h0YWJsZXMgcGF0Ci0rICAgIHwgXyAtPiBjb21waWxlIGlmbGFncyBjaHRhYmxlcyBwYXQK LSsgIGluCi0rICBsZXQgcmV4ID0KLSsgICAgbWF0Y2ggbGltaXQgd2l0aCBOb25lIC0+IHJleCB8 IFNvbWUgbGltIC0+IHNldF9pbXBfbWF0Y2hfbGltaXQgcmV4IGxpbQotKyAgaW4KLSsgIG1hdGNo IGRlcHRoX2xpbWl0IHdpdGggTm9uZSAtPiByZXggfCBTb21lIGxpbSAtPiBzZXRfaW1wX2RlcHRo X2xpbWl0IHJleCBsaW0KLSsKLStsZXQgcmVnZXhwX29yICgqID9qaXRfY29tcGlsZSAqKSA/bGlt aXQgP2RlcHRoX2xpbWl0ID8oaWZsYWdzID0gMEwpID9mbGFncwotKyAgICA/Y2h0YWJsZXMgcGF0 cyA9Ci0rICBsZXQgY2hlY2sgcGF0ID0KLSsgICAgdHJ5IGlnbm9yZSAocmVnZXhwIH5pZmxhZ3Mg P2ZsYWdzID9jaHRhYmxlcyBwYXQpCi0rICAgIHdpdGggRXJyb3IgZXJyb3IgLT4gcmFpc2UgKFJl Z2V4cF9vciAocGF0LCBlcnJvcikpCi0rICBpbgotKyAgTGlzdC5pdGVyIGNoZWNrIHBhdHM7Ci0r ICBsZXQgYmlnX3BhdCA9Ci0rICAgIGxldCBjbnYgcGF0ID0gIig/OiIgXiBwYXQgXiAiKSIgaW4K LSsgICAgU3RyaW5nLmNvbmNhdCAifCIgKExpc3QucmV2IChMaXN0LnJldl9tYXAgY252IHBhdHMp KQotKyAgaW4KLSsgIHJlZ2V4cCAoKiA/aml0X2NvbXBpbGUgKikgP2xpbWl0ID9kZXB0aF9saW1p dCB+aWZsYWdzID9mbGFncyA/Y2h0YWJsZXMgYmlnX3BhdAotKwotK2xldCBieXRlc191bnNhZmVf YmxpdF9zdHJpbmcgc3RyIHN0cl9vZnMgYnRzIGJ0c19vZnMgbGVuID0KLSsgIGxldCBzdHJfYnRz ID0gQnl0ZXMudW5zYWZlX29mX3N0cmluZyBzdHIgaW4KLSsgIEJ5dGVzLnVuc2FmZV9ibGl0IHN0 cl9idHMgc3RyX29mcyBidHMgYnRzX29mcyBsZW4KLSsKLStsZXQgc3RyaW5nX3Vuc2FmZV9zdWIg c3RyIG9mcyBsZW4gPQotKyAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW4KLSsgIGJ5dGVz X3Vuc2FmZV9ibGl0X3N0cmluZyBzdHIgb2ZzIHJlcyAwIGxlbjsKLSsgIEJ5dGVzLnVuc2FmZV90 b19zdHJpbmcgcmVzCi0rCi0rbGV0IHF1b3RlIHMgPQotKyAgbGV0IGxlbiA9IFN0cmluZy5sZW5n dGggcyBpbgotKyAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAobGVuIGxzbCAxKSBpbgotKyAgbGV0 IHBvcyA9IHJlZiAwIGluCi0rICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkbwotKyAgICBtYXRjaCBT dHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aAotKyAgICB8ICgnXFwnIHwgJ14nIHwgJyQnIHwgJy4n IHwgJ1snIHwgJ3wnIHwgJygnIHwgJyknIHwgJz8nIHwgJyonIHwgJysnIHwgJ3snKQotKyAgICAg IGFzIGMgLT4KLSsgICAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgJ1xcJzsKLSsgICAg ICAgIGluY3IgcG9zOwotKyAgICAgICAgQnl0ZXMudW5zYWZlX3NldCBidWYgIXBvcyBjOwotKyAg ICAgICAgaW5jciBwb3MKLSsgICAgfCBjIC0+Ci0rICAgICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1 ZiAhcG9zIGM7Ci0rICAgICAgICBpbmNyIHBvcwotKyAgZG9uZTsKLSsgIHN0cmluZ191bnNhZmVf c3ViIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGJ1ZikgMCAhcG9zCi0rCi0rKCogTWF0Y2hpbmcg b2YgcGF0dGVybnMgYW5kIHN1YnBhdHRlcm4gZXh0cmFjdGlvbiAqKQotKwotKygqIERlZmF1bHQg cmVndWxhciBleHByZXNzaW9uIHdoZW4gbm9uZSBpcyBwcm92aWRlZCBieSB0aGUgdXNlciAqKQot K2xldCBkZWZfcmV4ID0gcmVnZXhwICgqIH5qaXRfY29tcGlsZTp0cnVlICopICJcXHMrIgotKwot K3R5cGUgc3Vic3RyaW5ncyA9IHN0cmluZyAqIGludCBhcnJheQotKwotK3R5cGUgY2FsbG91dF9k YXRhID0gewotKyAgY2FsbG91dF9udW1iZXIgOiBpbnQ7Ci0rICBzdWJzdHJpbmdzIDogc3Vic3Ry aW5nczsKLSsgIHN0YXJ0X21hdGNoIDogaW50OwotKyAgY3VycmVudF9wb3NpdGlvbiA6IGludDsK LSsgIGNhcHR1cmVfdG9wIDogaW50OwotKyAgY2FwdHVyZV9sYXN0IDogaW50OwotKyAgcGF0dGVy bl9wb3NpdGlvbiA6IGludDsKLSsgIG5leHRfaXRlbV9sZW5ndGggOiBpbnQ7Ci0rfQotKwotK3R5 cGUgY2FsbG91dCA9IGNhbGxvdXRfZGF0YSAtPiB1bml0Ci0rCi0rbGV0IGdldF9zdWJqZWN0IChz dWJqLCBfKSA9IHN1YmoKLStsZXQgbnVtX29mX3N1YnMgKF8sIG92ZWN0b3IpID0gQXJyYXkubGVu Z3RoIG92ZWN0b3IgLyAzCi0rCi0rbGV0IGdldF9vZmZzZXRfc3RhcnQgb3ZlY3RvciBzdHJfbnVt ID0KLSsgIGlmIHN0cl9udW0gPCAwIHx8IHN0cl9udW0gPj0gQXJyYXkubGVuZ3RoIG92ZWN0b3Ig LyAzIHRoZW4KLSsgICAgaW52YWxpZF9hcmcgIlBjcmUyLmdldF9vZmZzZXRfc3RhcnQ6IGlsbGVn YWwgb2Zmc2V0IjsKLSsgIGxldCBvZmZzZXQgPSBzdHJfbnVtIGxzbCAxIGluCi0rICAob2Zmc2V0 LCBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3Igb2Zmc2V0KQotKwotK2xldCBnZXRfc3Vic3RyaW5n X2F1eCAoc3Viaiwgb3ZlY3Rvcikgb2Zmc2V0IHN0YXJ0ID0KLSsgIGlmIHN0YXJ0IDwgMCB0aGVu IHJhaXNlIE5vdF9mb3VuZAotKyAgZWxzZQotKyAgICBzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIHN0 YXJ0IChBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgKG9mZnNldCArIDEpIC0gc3RhcnQpCi0rCi0r bGV0IGdldF9zdWJzdHJpbmcgKChfLCBvdmVjdG9yKSBhcyBzdWJzdHJpbmdzKSBzdHJfbnVtID0K LSsgIGxldCBvZmZzZXQsIHN0YXJ0ID0gZ2V0X29mZnNldF9zdGFydCBvdmVjdG9yIHN0cl9udW0g aW4KLSsgIGdldF9zdWJzdHJpbmdfYXV4IHN1YnN0cmluZ3Mgb2Zmc2V0IHN0YXJ0Ci0rCi0rbGV0 IGdldF9zdWJzdHJpbmdfb2ZzIChfc3Viaiwgb3ZlY3Rvcikgc3RyX251bSA9Ci0rICBsZXQgb2Zm c2V0LCBzdGFydCA9IGdldF9vZmZzZXRfc3RhcnQgb3ZlY3RvciBzdHJfbnVtIGluCi0rICBpZiBz dGFydCA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQKLSsgIGVsc2UgKHN0YXJ0LCBBcnJheS51bnNh ZmVfZ2V0IG92ZWN0b3IgKG9mZnNldCArIDEpKQotKwotK2xldCB1bnNhZmVfZ2V0X3N1YnN0cmlu ZyAoKF8sIG92ZWN0b3IpIGFzIHN1YnN0cmluZ3MpIHN0cl9udW0gPQotKyAgbGV0IG9mZnNldCA9 IHN0cl9udW0gbHNsIDEgaW4KLSsgIHRyeSBnZXRfc3Vic3RyaW5nX2F1eCBzdWJzdHJpbmdzIG9m ZnNldCAoQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIG9mZnNldCkKLSsgIHdpdGggTm90X2ZvdW5k IC0+ICIiCi0rCi0rbGV0IGdldF9zdWJzdHJpbmdzID8oZnVsbF9tYXRjaCA9IHRydWUpICgoXywg b3ZlY3RvcikgYXMgc3Vic3RyaW5ncykgPQotKyAgaWYgZnVsbF9tYXRjaCB0aGVuCi0rICAgIEFy cmF5LmluaXQgKEFycmF5Lmxlbmd0aCBvdmVjdG9yIC8gMykgKHVuc2FmZV9nZXRfc3Vic3RyaW5n IHN1YnN0cmluZ3MpCi0rICBlbHNlCi0rICAgIGxldCBsZW4gPSAoQXJyYXkubGVuZ3RoIG92ZWN0 b3IgLyAzKSAtIDEgaW4KLSsgICAgQXJyYXkuaW5pdCBsZW4gKGZ1biBuIC0+IHVuc2FmZV9nZXRf c3Vic3RyaW5nIHN1YnN0cmluZ3MgKG4gKyAxKSkKLSsKLStsZXQgdW5zYWZlX2dldF9vcHRfc3Vi c3RyaW5nICgoXywgb3ZlY3RvcikgYXMgc3Vic3RyaW5ncykgc3RyX251bSA9Ci0rICBsZXQgb2Zm c2V0ID0gc3RyX251bSBsc2wgMSBpbgotKyAgdHJ5Ci0rICAgIGxldCBzdGFydCA9IEFycmF5LnVu c2FmZV9nZXQgb3ZlY3RvciBvZmZzZXQgaW4KLSsgICAgbGV0IHN0ciA9IGdldF9zdWJzdHJpbmdf YXV4IHN1YnN0cmluZ3Mgb2Zmc2V0IHN0YXJ0IGluCi0rICAgIFNvbWUgc3RyCi0rICB3aXRoIE5v dF9mb3VuZCAtPiBOb25lCi0rCi0rbGV0IGdldF9vcHRfc3Vic3RyaW5ncyA/KGZ1bGxfbWF0Y2gg PSB0cnVlKSAoKF8sIG92ZWN0b3IpIGFzIHN1YnN0cmluZ3MpID0KLSsgIGlmIGZ1bGxfbWF0Y2gg dGhlbgotKyAgICBBcnJheS5pbml0IChBcnJheS5sZW5ndGggb3ZlY3RvciAvIDMpICh1bnNhZmVf Z2V0X29wdF9zdWJzdHJpbmcgc3Vic3RyaW5ncykKLSsgIGVsc2UKLSsgICAgbGV0IGxlbiA9IChB cnJheS5sZW5ndGggb3ZlY3RvciAvIDMpIC0gMSBpbgotKyAgICBBcnJheS5pbml0IGxlbiAoZnVu IG4gLT4gdW5zYWZlX2dldF9vcHRfc3Vic3RyaW5nIHN1YnN0cmluZ3MgKG4gKyAxKSkKLSsKLStl eHRlcm5hbCBnZXRfc3RyaW5nbnVtYmVyIDogcmVnZXhwIC0+IHN0cmluZyAtPiAoaW50W0B1bnRh Z2dlZF0pCi0rICA9ICJwY3JlMl9zdWJzdHJpbmdfbnVtYmVyX2Zyb21fbmFtZV9zdHViX2JjIgot KyAgICAicGNyZTJfc3Vic3RyaW5nX251bWJlcl9mcm9tX25hbWVfc3R1YiIKLSsKLStsZXQgZ2V0 X25hbWVkX3N1YnN0cmluZyByZXggbmFtZSBzdWJzdHJpbmdzID0KLSsgIGdldF9zdWJzdHJpbmcg c3Vic3RyaW5ncyAoZ2V0X3N0cmluZ251bWJlciByZXggbmFtZSkKLSsKLStsZXQgZ2V0X25hbWVk X3N1YnN0cmluZ19vZnMgcmV4IG5hbWUgc3Vic3RyaW5ncyA9Ci0rICBnZXRfc3Vic3RyaW5nX29m cyBzdWJzdHJpbmdzIChnZXRfc3RyaW5nbnVtYmVyIHJleCBuYW1lKQotKwotK2V4dGVybmFsIHVu c2FmZV9wY3JlMl9tYXRjaCA6Ci0rICAoaXJmbGFnW0B1bmJveGVkXSkgLT4KLSsgIHJlZ2V4cCAt PgotKyAgcG9zOihpbnRbQHVudGFnZ2VkXSkgLT4KLSsgIHN1Ympfc3RhcnQ6KGludFtAdW50YWdn ZWRdKSAtPgotKyAgc3ViajpzdHJpbmcgLT4KLSsgIGludCBhcnJheSAtPgotKyAgY2FsbG91dCBv cHRpb24gLT4KLSsgIHVuaXQgPSAicGNyZTJfbWF0Y2hfc3R1Yl9iYyIgInBjcmUyX21hdGNoX3N0 dWIiCi0rCi0rbGV0IG1ha2Vfb3ZlY3RvciByZXggPQotKyAgbGV0IHN1Ymdyb3VwczEgPSBjYXB0 dXJlY291bnQgcmV4ICsgMSBpbgotKyAgbGV0IHN1Ymdyb3VwczIgPSBzdWJncm91cHMxIGxzbCAx IGluCi0rICAoc3ViZ3JvdXBzMiwgQXJyYXkubWFrZSAoc3ViZ3JvdXBzMSArIHN1Ymdyb3VwczIp IDApCi0rCi0rZXh0ZXJuYWwgdW5zYWZlX3BjcmUyX2RmYV9tYXRjaCA6Ci0rICAoaXJmbGFnW0B1 bmJveGVkXSkgLT4KLSsgIHJlZ2V4cCAtPgotKyAgcG9zOihpbnRbQHVudGFnZ2VkXSkgLT4KLSsg IHN1Ympfc3RhcnQ6KGludFtAdW50YWdnZWRdKSAtPgotKyAgc3ViajpzdHJpbmcgLT4KLSsgIGlu dCBhcnJheSAtPgotKyAgY2FsbG91dCBvcHRpb24gLT4KLSsgIHdvcmtzcGFjZTppbnQgYXJyYXkg LT4KLSsgIHVuaXQgPSAicGNyZTJfZGZhX21hdGNoX3N0dWJfYmMiICJwY3JlMl9tYXRjaF9zdHVi MCIKLSsKLStsZXQgcGNyZTJfZGZhX21hdGNoID8oaWZsYWdzID0gMEwpID9mbGFncyA/KHJleCA9 IGRlZl9yZXgpID9wYXQgPyhwb3MgPSAwKQotKyAgICA/Y2FsbG91dCA/KHdvcmtzcGFjZSA9IEFy cmF5Lm1ha2UgMjAgMCkgc3ViaiA9Ci0rICBsZXQgcmV4ID0gbWF0Y2ggcGF0IHdpdGggU29tZSBz dHIgLT4gcmVnZXhwIHN0ciB8IF8gLT4gcmV4IGluCi0rICBsZXQgaWZsYWdzID0gbWF0Y2ggZmxh Z3Mgd2l0aCBTb21lIGZsYWdzIC0+IHJmbGFncyBmbGFncyB8IF8gLT4gaWZsYWdzIGluCi0rICBs ZXQgXywgb3ZlY3RvciA9IG1ha2Vfb3ZlY3RvciByZXggaW4KLSsgIHVuc2FmZV9wY3JlMl9kZmFf bWF0Y2ggaWZsYWdzIHJleCB+cG9zIH5zdWJqX3N0YXJ0OjAgfnN1Ymogb3ZlY3RvciBjYWxsb3V0 Ci0rICAgIH53b3Jrc3BhY2U7Ci0rICBvdmVjdG9yCi0rCi0rbGV0IHBjcmUyX21hdGNoID8oaWZs YWdzID0gMEwpID9mbGFncyA/KHJleCA9IGRlZl9yZXgpID9wYXQgPyhwb3MgPSAwKSA/Y2FsbG91 dAotKyAgICBzdWJqID0KLSsgIGxldCByZXggPSBtYXRjaCBwYXQgd2l0aCBTb21lIHN0ciAtPiBy ZWdleHAgc3RyIHwgXyAtPiByZXggaW4KLSsgIGxldCBpZmxhZ3MgPSBtYXRjaCBmbGFncyB3aXRo IFNvbWUgZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwgXyAtPiBpZmxhZ3MgaW4KLSsgIGxldCBfLCBv dmVjdG9yID0gbWFrZV9vdmVjdG9yIHJleCBpbgotKyAgdW5zYWZlX3BjcmUyX21hdGNoIGlmbGFn cyByZXggfnBvcyB+c3Vial9zdGFydDowIH5zdWJqIG92ZWN0b3IgY2FsbG91dDsKLSsgIG92ZWN0 b3IKLSsKLStsZXQgZXhlYyA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBz dWJqID0KLSsgIChzdWJqLCBwY3JlMl9tYXRjaCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3Bv cyA/Y2FsbG91dCBzdWJqKQotKwotK2xldCBuZXh0X21hdGNoID9pZmxhZ3MgP2ZsYWdzID9yZXgg P3BhdCA/KHBvcyA9IDApID9jYWxsb3V0IChzdWJqLCBvdmVjdG9yKSA9Ci0rICBsZXQgcG9zID0g QXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgKyBwb3MgaW4KLSsgIGxldCBzdWJqX2xlbiA9IFN0 cmluZy5sZW5ndGggc3ViaiBpbgotKyAgaWYgcG9zIDwgMCB8fCBwb3MgPiBzdWJqX2xlbiB0aGVu Ci0rICAgIGludmFsaWRfYXJnICJQY3JlMi5uZXh0X21hdGNoOiBpbGxlZ2FsIG9mZnNldCI7Ci0r ICAoc3ViaiwgcGNyZTJfbWF0Y2ggP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0IH5wb3MgP2NhbGxv dXQgc3ViaikKLSsKLStsZXQgcmVjIGNvcHlfbHN0IGFyIG4gPSBmdW5jdGlvbgotKyAgfCBbXSAt PiBhcgotKyAgfCBoIDo6IHQgLT4KLSsgICAgICBBcnJheS51bnNhZmVfc2V0IGFyIG4gaDsKLSsg ICAgICBjb3B5X2xzdCBhciAobiAtIDEpIHQKLSsKLStsZXQgZXhlY19hbGwgPyhpZmxhZ3MgPSAw TCkgP2ZsYWdzID8ocmV4ID0gZGVmX3JleCkgP3BhdCA/cG9zID9jYWxsb3V0IHN1YmogPQotKyAg bGV0IHJleCA9IG1hdGNoIHBhdCB3aXRoIFNvbWUgc3RyIC0+IHJlZ2V4cCBzdHIgfCBfIC0+IHJl eCBpbgotKyAgbGV0IGlmbGFncyA9IG1hdGNoIGZsYWdzIHdpdGggU29tZSBmbGFncyAtPiByZmxh Z3MgZmxhZ3MgfCBfIC0+IGlmbGFncyBpbgotKyAgbGV0ICgoXywgb3ZlY3RvcikgYXMgc3N0cnMp ID0gZXhlYyB+aWZsYWdzIH5yZXggP3BvcyA/Y2FsbG91dCBzdWJqIGluCi0rICBsZXQgbnVsbF9m bGFncyA9IEludDY0LmxvZ29yIGlmbGFncyAweDAwMDAwMDA0TCBpbgotKyAgKCogYE5PVEVNUFRZ ICopCi0rICBsZXQgc3Vial9sZW4gPSBTdHJpbmcubGVuZ3RoIHN1YmogaW4KLSsgIGxldCByZWMg bG9vcCBwb3MgKChzdWJqLCBvdmVjdG9yKSBhcyBzc3RycykgbiBsc3QgPQotKyAgICBsZXQgbWF5 YmVfb3ZlY3RvciA9Ci0rICAgICAgdHJ5Ci0rICAgICAgICBsZXQgZmlyc3QgPSBBcnJheS51bnNh ZmVfZ2V0IG92ZWN0b3IgMCBpbgotKyAgICAgICAgaWYgZmlyc3QgPSBwb3MgJiYgQXJyYXkudW5z YWZlX2dldCBvdmVjdG9yIDEgPSBwb3MgdGhlbgotKyAgICAgICAgICBpZiBwb3MgPSBzdWJqX2xl biB0aGVuIE5vbmUKLSsgICAgICAgICAgZWxzZSBTb21lIChwY3JlMl9tYXRjaCB+aWZsYWdzOm51 bGxfZmxhZ3MgfnJleCB+cG9zID9jYWxsb3V0IHN1YmopCi0rICAgICAgICBlbHNlIFNvbWUgKHBj cmUyX21hdGNoIH5pZmxhZ3MgfnJleCB+cG9zID9jYWxsb3V0IHN1YmopCi0rICAgICAgd2l0aCBO b3RfZm91bmQgLT4gTm9uZQotKyAgICBpbgotKyAgICBtYXRjaCBtYXliZV9vdmVjdG9yIHdpdGgK LSsgICAgfCBTb21lIG92ZWN0b3IgLT4KLSsgICAgICAgIGxldCBuZXdfcG9zID0gQXJyYXkudW5z YWZlX2dldCBvdmVjdG9yIDEgaW4KLSsgICAgICAgIGxvb3AgbmV3X3BvcyAoc3Viaiwgb3ZlY3Rv cikgKG4gKyAxKSAoc3N0cnMgOjogbHN0KQotKyAgICB8IE5vbmUgLT4gY29weV9sc3QgKEFycmF5 Lm1ha2UgKG4gKyAxKSBzc3RycykgKG4gLSAxKSBsc3QKLSsgIGluCi0rICBsb29wIChBcnJheS51 bnNhZmVfZ2V0IG92ZWN0b3IgMSkgc3N0cnMgMCBbXQotKwotK2xldCBleHRyYWN0ID9pZmxhZ3Mg P2ZsYWdzID9yZXggP3BhdCA/cG9zID9mdWxsX21hdGNoID9jYWxsb3V0IHN1YmogPQotKyAgZ2V0 X3N1YnN0cmluZ3MgP2Z1bGxfbWF0Y2ggKGV4ZWMgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9w b3MgP2NhbGxvdXQgc3ViaikKLSsKLStsZXQgZXh0cmFjdF9vcHQgP2lmbGFncyA/ZmxhZ3MgP3Jl eCA/cGF0ID9wb3MgP2Z1bGxfbWF0Y2ggP2NhbGxvdXQgc3ViaiA9Ci0rICBnZXRfb3B0X3N1YnN0 cmluZ3MgP2Z1bGxfbWF0Y2gKLSsgICAgKGV4ZWMgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9w b3MgP2NhbGxvdXQgc3ViaikKLSsKLStsZXQgZXh0cmFjdF9hbGwgP2lmbGFncyA/ZmxhZ3MgP3Jl eCA/cGF0ID9wb3MgP2Z1bGxfbWF0Y2ggP2NhbGxvdXQgc3ViaiA9Ci0rICBsZXQgbWFueV9zc3Ry cyA9IGV4ZWNfYWxsID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IHN1Ymog aW4KLSsgIEFycmF5Lm1hcCAoZ2V0X3N1YnN0cmluZ3MgP2Z1bGxfbWF0Y2gpIG1hbnlfc3N0cnMK LSsKLStsZXQgZXh0cmFjdF9hbGxfb3B0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9m dWxsX21hdGNoID9jYWxsb3V0IHN1YmogPQotKyAgbGV0IG1hbnlfc3N0cnMgPSBleGVjX2FsbCA/ aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJqIGluCi0rICBBcnJheS5t YXAgKGdldF9vcHRfc3Vic3RyaW5ncyA/ZnVsbF9tYXRjaCkgbWFueV9zc3RycwotKwotK2xldCBw bWF0Y2ggP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2NhbGxvdXQgc3ViaiA9Ci0rICB0 cnkKLSsgICAgaWdub3JlIChwY3JlMl9tYXRjaCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3Bv cyA/Y2FsbG91dCBzdWJqKTsKLSsgICAgdHJ1ZQotKyAgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2UK LSsKLSsoKiBTdHJpbmcgc3Vic3RpdHV0aW9uICopCi0rCi0rKCogRWxlbWVudHMgb2YgYSBzdWJz dGl0dXRpb24gcGF0dGVybiAqKQotK3R5cGUgc3Vic3QgPQotKyAgfCBTdWJzdFN0cmluZyBvZiBp bnQgKiBpbnQgKCogRGVub3RlcyBhIHN1YnN0cmluZyBpbiB0aGUgc3Vic3RpdHV0aW9uICopCi0r ICB8IEJhY2tyZWYgb2YgaW50ICgqIG50aCBiYWNrcmVmZXJlbmNlICgkMCBpcyBwcm9ncmFtIG5h bWUhKSAqKQotKyAgfCBNYXRjaCAoKiBUaGUgd2hvbGUgbWF0Y2hlZCBzdHJpbmcgKikKLSsgIHwg UHJlTWF0Y2ggKCogVGhlIHN0cmluZyBiZWZvcmUgdGhlIG1hdGNoICopCi0rICB8IFBvc3RNYXRj aCAoKiBUaGUgc3RyaW5nIGFmdGVyIHRoZSBtYXRjaCAqKQotKyAgfCBMYXN0UGFyZW5NYXRjaCAo KiBUaGUgbGFzdCBtYXRjaGVkIGdyb3VwICopCi0rCi0rKCogSW5mb3JtYXRpb24gb24gc3Vic3Rp dHV0aW9uIHBhdHRlcm5zICopCi0rdHlwZSBzdWJzdGl0dXRpb24gPQotKyAgc3RyaW5nICgqIFRo ZSBzdWJzdGl0dXRpb24gc3RyaW5nICopCi0rICAqIGludCAoKiBIaWdoZXN0IGdyb3VwIG51bWJl ciBvZiBiYWNrcmVmZXJlbmNlcyAqKQotKyAgKiBib29sICgqIE1ha2VzIHVzZSBvZiAiTGFzdFBh cmVuTWF0Y2giICopCi0rICAqIHN1YnN0IGxpc3QgKCogVGhlIGxpc3Qgb2Ygc3Vic3RpdHV0aW9u IGVsZW1lbnRzICopCi0rCi0rKCogT25seSB1c2VkIGludGVybmFsbHkgaW4gInN1YnN0IiAqKQot K2V4Y2VwdGlvbiBGb3VuZEF0IG9mIGludAotKwotK2xldCB6ZXJvID0gQ2hhci5jb2RlICcwJwot KwotK2xldCBzdWJzdCBzdHIgPQotKyAgbGV0IG1heF9iciA9IHJlZiAwIGluCi0rICBsZXQgd2l0 aF9scCA9IHJlZiBmYWxzZSBpbgotKyAgbGV0IGxpeCA9IFN0cmluZy5sZW5ndGggc3RyIC0gMSBp bgotKyAgbGV0IHJlYyBsb29wIGFjYyBuID0KLSsgICAgaWYgbGl4IDwgbiB0aGVuIGFjYwotKyAg ICBlbHNlCi0rICAgICAgdHJ5Ci0rICAgICAgICBmb3IgaSA9IG4gdG8gbGl4IGRvCi0rICAgICAg ICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHN0ciBpID0gJyQnIHRoZW4gcmFpc2UgKEZvdW5kQXQg aSkKLSsgICAgICAgIGRvbmU7Ci0rICAgICAgICBTdWJzdFN0cmluZyAobiwgbGl4IC0gbiArIDEp IDo6IGFjYwotKyAgICAgIHdpdGggRm91bmRBdCBpIC0+ICgKLSsgICAgICAgIGlmIGkgPSBsaXgg dGhlbiBTdWJzdFN0cmluZyAobiwgbGl4IC0gbiArIDEpIDo6IGFjYwotKyAgICAgICAgZWxzZQot KyAgICAgICAgICBsZXQgaTEgPSBpICsgMSBpbgotKyAgICAgICAgICBsZXQgYWNjID0gaWYgbiA9 IGkgdGhlbiBhY2MgZWxzZSBTdWJzdFN0cmluZyAobiwgaSAtIG4pIDo6IGFjYyBpbgotKyAgICAg ICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzdHIgaTEgd2l0aAotKyAgICAgICAgICB8ICcw JyAuLiAnOScgYXMgYyAtPiAoCi0rICAgICAgICAgICAgICBsZXQgc3VicGF0X25yID0gcmVmIChD aGFyLmNvZGUgYyAtIHplcm8pIGluCi0rICAgICAgICAgICAgICB0cnkKLSsgICAgICAgICAgICAg ICAgZm9yIGogPSBpMSArIDEgdG8gbGl4IGRvCi0rICAgICAgICAgICAgICAgICAgbGV0IGMgPSBT dHJpbmcudW5zYWZlX2dldCBzdHIgaiBpbgotKyAgICAgICAgICAgICAgICAgIGlmIGMgPj0gJzAn ICYmIGMgPD0gJzknIHRoZW4KLSsgICAgICAgICAgICAgICAgICAgIHN1YnBhdF9uciA6PSAoMTAg KiAhc3VicGF0X25yKSArIENoYXIuY29kZSBjIC0gemVybwotKyAgICAgICAgICAgICAgICAgIGVs c2UgcmFpc2UgKEZvdW5kQXQgaikKLSsgICAgICAgICAgICAgICAgZG9uZTsKLSsgICAgICAgICAg ICAgICAgbWF4X2JyIDo9IG1heCAhc3VicGF0X25yICFtYXhfYnI7Ci0rICAgICAgICAgICAgICAg IEJhY2tyZWYgIXN1YnBhdF9uciA6OiBhY2MKLSsgICAgICAgICAgICAgIHdpdGggRm91bmRBdCBq IC0+Ci0rICAgICAgICAgICAgICAgIG1heF9iciA6PSBtYXggIXN1YnBhdF9uciAhbWF4X2JyOwot KyAgICAgICAgICAgICAgICBsb29wIChCYWNrcmVmICFzdWJwYXRfbnIgOjogYWNjKSBqKQotKyAg ICAgICAgICB8ICchJyAtPiBsb29wIGFjYyAoaTEgKyAxKQotKyAgICAgICAgICB8ICckJyAtPiBs b29wIChTdWJzdFN0cmluZyAoaTEsIDEpIDo6IGFjYykgKGkxICsgMSkKLSsgICAgICAgICAgfCAn JicgLT4gbG9vcCAoTWF0Y2ggOjogYWNjKSAoaTEgKyAxKQotKyAgICAgICAgICB8ICdgJyAtPiBs b29wIChQcmVNYXRjaCA6OiBhY2MpIChpMSArIDEpCi0rICAgICAgICAgIHwgJ1wnJyAtPiBsb29w IChQb3N0TWF0Y2ggOjogYWNjKSAoaTEgKyAxKQotKyAgICAgICAgICB8ICcrJyAtPgotKyAgICAg ICAgICAgICAgd2l0aF9scCA6PSB0cnVlOwotKyAgICAgICAgICAgICAgbG9vcCAoTGFzdFBhcmVu TWF0Y2ggOjogYWNjKSAoaTEgKyAxKQotKyAgICAgICAgICB8IF8gLT4gbG9vcCBhY2MgaTEpCi0r ICBpbgotKyAgbGV0IHN1YnN0X2xzdCA9IGxvb3AgW10gMCBpbgotKyAgKHN0ciwgIW1heF9iciwg IXdpdGhfbHAsIHN1YnN0X2xzdCkKLSsKLStsZXQgZGVmX3N1YnN0ID0gc3Vic3QgIiIKLSsKLSso KiBDYWxjdWxhdGVzIGEgbGlzdCBvZiB0dXBsZXMgKHN0ciwgb2Zmc2V0LCBsZW4pIHdoaWNoIGNv bnRhaW4gc3Vic3RyaW5ncyB0byBiZQotKyAgIGNvcGllZCBvbiBzdWJzdGl0dXRpb25zLiBJbnRl cm5hbCB1c2Ugb25seSEgKikKLStsZXQgY2FsY190cmFuc19sc3Qgc3ViZ3JvdXBzMiBvdmVjdG9y IHN1YmogdGVtcGwgc3Vic3RfbHN0ID0KLSsgIGxldCBwcmVmaXhfbGVuID0gQXJyYXkudW5zYWZl X2dldCBvdmVjdG9yIDAgaW4KLSsgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9y IDEgaW4KLSsgIGxldCBjb2xsICgocmVzX2xlbiwgdHJhbnNfbHN0KSBhcyBhY2N1KSA9Ci0rICAg IGxldCByZXR1cm5fbHN0ICgoX3N0ciwgX2l4LCBsZW4pIGFzIGVsKSA9Ci0rICAgICAgaWYgbGVu ID0gMCB0aGVuIGFjY3UgZWxzZSAocmVzX2xlbiArIGxlbiwgZWwgOjogdHJhbnNfbHN0KQotKyAg ICBpbgotKyAgICBmdW5jdGlvbgotKyAgICB8IFN1YnN0U3RyaW5nIChpeCwgbGVuKSAtPiByZXR1 cm5fbHN0ICh0ZW1wbCwgaXgsIGxlbikKLSsgICAgfCBCYWNrcmVmIDAgLT4KLSsgICAgICAgIGxl dCBwcm9nX25hbWUgPSBTeXMuYXJndi4oMCkgaW4KLSsgICAgICAgIHJldHVybl9sc3QgKHByb2df bmFtZSwgMCwgU3RyaW5nLmxlbmd0aCBwcm9nX25hbWUpCi0rICAgIHwgQmFja3JlZiBuIC0+Ci0r ICAgICAgICBsZXQgb2Zmc2V0ID0gbiBsc2wgMSBpbgotKyAgICAgICAgbGV0IHN0YXJ0ID0gQXJy YXkudW5zYWZlX2dldCBvdmVjdG9yIG9mZnNldCBpbgotKyAgICAgICAgbGV0IGxlbiA9IEFycmF5 LnVuc2FmZV9nZXQgb3ZlY3RvciAob2Zmc2V0ICsgMSkgLSBzdGFydCBpbgotKyAgICAgICAgcmV0 dXJuX2xzdCAoc3Viaiwgc3RhcnQsIGxlbikKLSsgICAgfCBNYXRjaCAtPiByZXR1cm5fbHN0IChz dWJqLCBwcmVmaXhfbGVuLCBsYXN0IC0gcHJlZml4X2xlbikKLSsgICAgfCBQcmVNYXRjaCAtPiBy ZXR1cm5fbHN0IChzdWJqLCAwLCBwcmVmaXhfbGVuKQotKyAgICB8IFBvc3RNYXRjaCAtPiByZXR1 cm5fbHN0IChzdWJqLCBsYXN0LCBTdHJpbmcubGVuZ3RoIHN1YmogLSBsYXN0KQotKyAgICB8IExh c3RQYXJlbk1hdGNoIC0+Ci0rICAgICAgICBsZXQgc3ViZ3JvdXBzMl8yID0gc3ViZ3JvdXBzMiAt IDIgaW4KLSsgICAgICAgIGxldCBwb3MgPSByZWYgc3ViZ3JvdXBzMl8yIGluCi0rICAgICAgICBs ZXQgaXggPSByZWYgKEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciBzdWJncm91cHMyXzIpIGluCi0r ICAgICAgICB3aGlsZSAhaXggPCAwIGRvCi0rICAgICAgICAgIGxldCBwb3NfMiA9ICFwb3MgLSAy IGluCi0rICAgICAgICAgIHBvcyA6PSBwb3NfMjsKLSsgICAgICAgICAgaXggOj0gQXJyYXkudW5z YWZlX2dldCBvdmVjdG9yIHBvc18yCi0rICAgICAgICBkb25lOwotKyAgICAgICAgcmV0dXJuX2xz dCAoc3ViaiwgIWl4LCBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgKCFwb3MgKyAxKSAtICFpeCkK LSsgIGluCi0rICBMaXN0LmZvbGRfbGVmdCBjb2xsICgwLCBbXSkgc3Vic3RfbHN0Ci0rCi0rbGV0 IHJlcGxhY2UgPyhpZmxhZ3MgPSAwTCkgP2ZsYWdzID8ocmV4ID0gZGVmX3JleCkgP3BhdCA/KHBv cyA9IDApCi0rICAgID8oaXRlbXBsID0gZGVmX3N1YnN0KSA/dGVtcGwgP2NhbGxvdXQgc3ViaiA9 Ci0rICBsZXQgcmV4ID0gbWF0Y2ggcGF0IHdpdGggU29tZSBzdHIgLT4gcmVnZXhwIHN0ciB8IF8g LT4gcmV4IGluCi0rICBsZXQgaWZsYWdzID0gbWF0Y2ggZmxhZ3Mgd2l0aCBTb21lIGZsYWdzIC0+ IHJmbGFncyBmbGFncyB8IF8gLT4gaWZsYWdzIGluCi0rICBsZXQgdGVtcGwsIG1heF9iciwgd2l0 aF9scCwgc3Vic3RfbHN0ID0KLSsgICAgbWF0Y2ggdGVtcGwgd2l0aCBTb21lIHN0ciAtPiBzdWJz dCBzdHIgfCBfIC0+IGl0ZW1wbAotKyAgaW4KLSsgIGxldCBzdWJqX2xlbiA9IFN0cmluZy5sZW5n dGggc3ViaiBpbgotKyAgaWYgcG9zIDwgMCB8fCBwb3MgPiBzdWJqX2xlbiB0aGVuIGludmFsaWRf YXJnICJQY3JlMi5yZXBsYWNlOiBpbGxlZ2FsIG9mZnNldCI7Ci0rICBsZXQgc3ViZ3JvdXBzMiwg b3ZlY3RvciA9IG1ha2Vfb3ZlY3RvciByZXggaW4KLSsgIGxldCBuc3VicyA9IChzdWJncm91cHMy IGxzciAxKSAtIDEgaW4KLSsgIGlmIG1heF9iciA+IG5zdWJzIHRoZW4KLSsgICAgZmFpbHdpdGgg IlBjcmUyLnJlcGxhY2U6IGJhY2tyZWZlcmVuY2UgZGVub3RlcyBub25leGlzdGVudCBzdWJwYXR0 ZXJuIjsKLSsgIGlmIHdpdGhfbHAgJiYgbnN1YnMgPSAwIHRoZW4gZmFpbHdpdGggIlBjcmUyLnJl cGxhY2U6IG5vIGJhY2tyZWZlcmVuY2VzIjsKLSsgIGxldCByZWMgbG9vcCBmdWxsX2xlbiB0cmFu c19sc3RzIGN1cl9wb3MgPQotKyAgICBpZgotKyAgICAgIGN1cl9wb3MgPiBzdWJqX2xlbgotKyAg ICAgIHx8Ci0rICAgICAgdHJ5Ci0rICAgICAgICB1bnNhZmVfcGNyZTJfbWF0Y2ggaWZsYWdzIHJl eCB+cG9zOmN1cl9wb3MgfnN1Ympfc3RhcnQ6MCB+c3ViaiBvdmVjdG9yCi0rICAgICAgICAgIGNh bGxvdXQ7Ci0rICAgICAgICBmYWxzZQotKyAgICAgIHdpdGggTm90X2ZvdW5kIC0+IHRydWUKLSsg ICAgdGhlbiAoCi0rICAgICAgbGV0IHBvc3RmaXhfbGVuID0gbWF4IChzdWJqX2xlbiAtIGN1cl9w b3MpIDAgaW4KLSsgICAgICBsZXQgbGVmdCA9IHBvcyArIGZ1bGxfbGVuIGluCi0rICAgICAgbGV0 IHJlcyA9IEJ5dGVzLmNyZWF0ZSAobGVmdCArIHBvc3RmaXhfbGVuKSBpbgotKyAgICAgIGJ5dGVz X3Vuc2FmZV9ibGl0X3N0cmluZyBzdWJqIDAgcmVzIDAgcG9zOwotKyAgICAgIGJ5dGVzX3Vuc2Fm ZV9ibGl0X3N0cmluZyBzdWJqIGN1cl9wb3MgcmVzIGxlZnQgcG9zdGZpeF9sZW47Ci0rICAgICAg bGV0IGlubmVyX2NvbGwgb2ZzICh0ZW1wbCwgaXgsIGxlbikgPQotKyAgICAgICAgYnl0ZXNfdW5z YWZlX2JsaXRfc3RyaW5nIHRlbXBsIGl4IHJlcyBvZnMgbGVuOwotKyAgICAgICAgb2ZzICsgbGVu Ci0rICAgICAgaW4KLSsgICAgICBsZXQgY29sbCBvZnMgKHJlc19sZW4sIHRyYW5zX2xzdCkgPQot KyAgICAgICAgbGV0IG5ld19vZnMgPSBvZnMgLSByZXNfbGVuIGluCi0rICAgICAgICBsZXQgXyA9 IExpc3QuZm9sZF9sZWZ0IGlubmVyX2NvbGwgbmV3X29mcyB0cmFuc19sc3QgaW4KLSsgICAgICAg IG5ld19vZnMKLSsgICAgICBpbgotKyAgICAgIGxldCBfID0gTGlzdC5mb2xkX2xlZnQgY29sbCBs ZWZ0IHRyYW5zX2xzdHMgaW4KLSsgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcykKLSsg ICAgZWxzZQotKyAgICAgIGxldCBmaXJzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAwIGlu Ci0rICAgICAgbGV0IGxlbiA9IGZpcnN0IC0gY3VyX3BvcyBpbgotKyAgICAgIGxldCAoKHJlc19s ZW4sIF8pIGFzIHRyYW5zX2xzdF9lbCkgPQotKyAgICAgICAgY2FsY190cmFuc19sc3Qgc3ViZ3Jv dXBzMiBvdmVjdG9yIHN1YmogdGVtcGwgc3Vic3RfbHN0Ci0rICAgICAgaW4KLSsgICAgICBsZXQg dHJhbnNfbHN0cyA9Ci0rICAgICAgICBpZiBsZW4gPiAwIHRoZW4KLSsgICAgICAgICAgdHJhbnNf bHN0X2VsIDo6IChsZW4sIFsgKHN1YmosIGN1cl9wb3MsIGxlbikgXSkgOjogdHJhbnNfbHN0cwot KyAgICAgICAgZWxzZSB0cmFuc19sc3RfZWwgOjogdHJhbnNfbHN0cwotKyAgICAgIGluCi0rICAg ICAgbGV0IGZ1bGxfbGVuID0gZnVsbF9sZW4gKyBsZW4gKyByZXNfbGVuIGluCi0rICAgICAgbGV0 IG5leHQgPSBmaXJzdCArIDEgaW4KLSsgICAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9nZXQg b3ZlY3RvciAxIGluCi0rICAgICAgaWYgbGFzdCA8IG5leHQgdGhlbgotKyAgICAgICAgaWYgZmly c3QgPCBzdWJqX2xlbiB0aGVuCi0rICAgICAgICAgIGxldCBuZXdfdHJhbnNfbHN0cyA9Ci0rICAg ICAgICAgICAgKDEsIFsgKHN1YmosIGN1cl9wb3MgKyBsZW4sIDEpIF0pIDo6IHRyYW5zX2xzdHMK LSsgICAgICAgICAgaW4KLSsgICAgICAgICAgbG9vcCAoZnVsbF9sZW4gKyAxKSBuZXdfdHJhbnNf bHN0cyBuZXh0Ci0rICAgICAgICBlbHNlIGxvb3AgZnVsbF9sZW4gdHJhbnNfbHN0cyBuZXh0Ci0r ICAgICAgZWxzZSBsb29wIGZ1bGxfbGVuIHRyYW5zX2xzdHMgbGFzdAotKyAgaW4KLSsgIGxvb3Ag MCBbXSBwb3MKLSsKLStsZXQgcXJlcGxhY2UgPyhpZmxhZ3MgPSAwTCkgP2ZsYWdzID8ocmV4ID0g ZGVmX3JleCkgP3BhdCA/KHBvcyA9IDApCi0rICAgID8odGVtcGwgPSAiIikgP2NhbGxvdXQgc3Vi aiA9Ci0rICBsZXQgcmV4ID0gbWF0Y2ggcGF0IHdpdGggU29tZSBzdHIgLT4gcmVnZXhwIHN0ciB8 IF8gLT4gcmV4IGluCi0rICBsZXQgaWZsYWdzID0gbWF0Y2ggZmxhZ3Mgd2l0aCBTb21lIGZsYWdz IC0+IHJmbGFncyBmbGFncyB8IF8gLT4gaWZsYWdzIGluCi0rICBsZXQgc3Vial9sZW4gPSBTdHJp bmcubGVuZ3RoIHN1YmogaW4KLSsgIGlmIHBvcyA8IDAgfHwgcG9zID4gc3Vial9sZW4gdGhlbiBp bnZhbGlkX2FyZyAiUGNyZTIucXJlcGxhY2U6IGlsbGVnYWwgb2Zmc2V0IjsKLSsgIGxldCB0ZW1w bF9sZW4gPSBTdHJpbmcubGVuZ3RoIHRlbXBsIGluCi0rICBsZXQgXywgb3ZlY3RvciA9IG1ha2Vf b3ZlY3RvciByZXggaW4KLSsgIGxldCByZWMgbG9vcCBmdWxsX2xlbiBzdWJzdF9sc3QgY3VyX3Bv cyA9Ci0rICAgIGlmCi0rICAgICAgY3VyX3BvcyA+IHN1YmpfbGVuCi0rICAgICAgfHwKLSsgICAg ICB0cnkKLSsgICAgICAgIHVuc2FmZV9wY3JlMl9tYXRjaCBpZmxhZ3MgcmV4IH5wb3M6Y3VyX3Bv cyB+c3Vial9zdGFydDowIH5zdWJqIG92ZWN0b3IKLSsgICAgICAgICAgY2FsbG91dDsKLSsgICAg ICAgIGZhbHNlCi0rICAgICAgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZQotKyAgICB0aGVuICgKLSsg ICAgICBsZXQgcG9zdGZpeF9sZW4gPSBtYXggKHN1YmpfbGVuIC0gY3VyX3BvcykgMCBpbgotKyAg ICAgIGxldCBsZWZ0ID0gcG9zICsgZnVsbF9sZW4gaW4KLSsgICAgICBsZXQgcmVzID0gQnl0ZXMu Y3JlYXRlIChsZWZ0ICsgcG9zdGZpeF9sZW4pIGluCi0rICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRf c3RyaW5nIHN1YmogMCByZXMgMCBwb3M7Ci0rICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5n IHN1YmogY3VyX3BvcyByZXMgbGVmdCBwb3N0Zml4X2xlbjsKLSsgICAgICBsZXQgY29sbCBvZnMg PSBmdW5jdGlvbgotKyAgICAgICAgfCBTb21lIChzdWJzdHIsIGl4LCBsZW4pIC0+Ci0rICAgICAg ICAgICAgbGV0IG5ld19vZnMgPSBvZnMgLSBsZW4gaW4KLSsgICAgICAgICAgICBieXRlc191bnNh ZmVfYmxpdF9zdHJpbmcgc3Vic3RyIGl4IHJlcyBuZXdfb2ZzIGxlbjsKLSsgICAgICAgICAgICBu ZXdfb2ZzCi0rICAgICAgICB8IE5vbmUgLT4KLSsgICAgICAgICAgICBsZXQgbmV3X29mcyA9IG9m cyAtIHRlbXBsX2xlbiBpbgotKyAgICAgICAgICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyB0 ZW1wbCAwIHJlcyBuZXdfb2ZzIHRlbXBsX2xlbjsKLSsgICAgICAgICAgICBuZXdfb2ZzCi0rICAg ICAgaW4KLSsgICAgICBsZXQgXyA9IExpc3QuZm9sZF9sZWZ0IGNvbGwgbGVmdCBzdWJzdF9sc3Qg aW4KLSsgICAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcykKLSsgICAgZWxzZQotKyAgICAg IGxldCBmaXJzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAwIGluCi0rICAgICAgbGV0IGxl biA9IGZpcnN0IC0gY3VyX3BvcyBpbgotKyAgICAgIGxldCBzdWJzdF9sc3QgPQotKyAgICAgICAg aWYgbGVuID4gMCB0aGVuIE5vbmUgOjogU29tZSAoc3ViaiwgY3VyX3BvcywgbGVuKSA6OiBzdWJz dF9sc3QKLSsgICAgICAgIGVsc2UgTm9uZSA6OiBzdWJzdF9sc3QKLSsgICAgICBpbgotKyAgICAg IGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgaW4KLSsgICAgICBsZXQgZnVs bF9sZW4gPSBmdWxsX2xlbiArIGxlbiArIHRlbXBsX2xlbiBpbgotKyAgICAgIGxldCBuZXh0ID0g Zmlyc3QgKyAxIGluCi0rICAgICAgaWYgbGFzdCA8IG5leHQgdGhlbgotKyAgICAgICAgaWYgZmly c3QgPCBzdWJqX2xlbiB0aGVuCi0rICAgICAgICAgIGxvb3AgKGZ1bGxfbGVuICsgMSkgKFNvbWUg KHN1YmosIGN1cl9wb3MgKyBsZW4sIDEpIDo6IHN1YnN0X2xzdCkgbmV4dAotKyAgICAgICAgZWxz ZSBsb29wIGZ1bGxfbGVuIHN1YnN0X2xzdCBuZXh0Ci0rICAgICAgZWxzZSBsb29wIGZ1bGxfbGVu IHN1YnN0X2xzdCBsYXN0Ci0rICBpbgotKyAgbG9vcCAwIFtdIHBvcwotKwotK2xldCBzdWJzdGl0 dXRlX3N1YnN0cmluZ3MgPyhpZmxhZ3MgPSAwTCkgP2ZsYWdzID8ocmV4ID0gZGVmX3JleCkgP3Bh dCA/KHBvcyA9IDApCi0rICAgID9jYWxsb3V0IH5zdWJzdCBzdWJqID0KLSsgIGxldCByZXggPSBt YXRjaCBwYXQgd2l0aCBTb21lIHN0ciAtPiByZWdleHAgc3RyIHwgXyAtPiByZXggaW4KLSsgIGxl dCBpZmxhZ3MgPSBtYXRjaCBmbGFncyB3aXRoIFNvbWUgZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwg XyAtPiBpZmxhZ3MgaW4KLSsgIGxldCBzdWJqX2xlbiA9IFN0cmluZy5sZW5ndGggc3ViaiBpbgot KyAgaWYgcG9zIDwgMCB8fCBwb3MgPiBzdWJqX2xlbiB0aGVuCi0rICAgIGludmFsaWRfYXJnICJQ Y3JlMi5zdWJzdGl0dXRlOiBpbGxlZ2FsIG9mZnNldCI7Ci0rICBsZXQgXywgb3ZlY3RvciA9IG1h a2Vfb3ZlY3RvciByZXggaW4KLSsgIGxldCByZWMgbG9vcCBmdWxsX2xlbiBzdWJzdF9sc3QgY3Vy X3BvcyA9Ci0rICAgIGlmCi0rICAgICAgY3VyX3BvcyA+IHN1YmpfbGVuCi0rICAgICAgfHwKLSsg ICAgICB0cnkKLSsgICAgICAgIHVuc2FmZV9wY3JlMl9tYXRjaCBpZmxhZ3MgcmV4IH5wb3M6Y3Vy X3BvcyB+c3Vial9zdGFydDowIH5zdWJqIG92ZWN0b3IKLSsgICAgICAgICAgY2FsbG91dDsKLSsg ICAgICAgIGZhbHNlCi0rICAgICAgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZQotKyAgICB0aGVuICgK LSsgICAgICBsZXQgcG9zdGZpeF9sZW4gPSBtYXggKHN1YmpfbGVuIC0gY3VyX3BvcykgMCBpbgot KyAgICAgIGxldCBsZWZ0ID0gcG9zICsgZnVsbF9sZW4gaW4KLSsgICAgICBsZXQgcmVzID0gQnl0 ZXMuY3JlYXRlIChsZWZ0ICsgcG9zdGZpeF9sZW4pIGluCi0rICAgICAgYnl0ZXNfdW5zYWZlX2Js aXRfc3RyaW5nIHN1YmogMCByZXMgMCBwb3M7Ci0rICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3Ry aW5nIHN1YmogY3VyX3BvcyByZXMgbGVmdCBwb3N0Zml4X2xlbjsKLSsgICAgICBsZXQgY29sbCBv ZnMgKHRlbXBsLCBpeCwgbGVuKSA9Ci0rICAgICAgICBsZXQgbmV3X29mcyA9IG9mcyAtIGxlbiBp bgotKyAgICAgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHRlbXBsIGl4IHJlcyBuZXdfb2Zz IGxlbjsKLSsgICAgICAgIG5ld19vZnMKLSsgICAgICBpbgotKyAgICAgIGxldCBfID0gTGlzdC5m b2xkX2xlZnQgY29sbCBsZWZ0IHN1YnN0X2xzdCBpbgotKyAgICAgIEJ5dGVzLnVuc2FmZV90b19z dHJpbmcgcmVzKQotKyAgICBlbHNlCi0rICAgICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZlX2dl dCBvdmVjdG9yIDAgaW4KLSsgICAgICBsZXQgbGVuID0gZmlyc3QgLSBjdXJfcG9zIGluCi0rICAg ICAgbGV0IHRlbXBsID0gc3Vic3QgKHN1YmosIG92ZWN0b3IpIGluCi0rICAgICAgbGV0IHRlbXBs X2xlbiA9IFN0cmluZy5sZW5ndGggdGVtcGwgaW4KLSsgICAgICBsZXQgc3Vic3RfbHN0ID0KLSsg ICAgICAgIGlmIGxlbiA+IDAgdGhlbgotKyAgICAgICAgICAodGVtcGwsIDAsIHRlbXBsX2xlbikg OjogKHN1YmosIGN1cl9wb3MsIGxlbikgOjogc3Vic3RfbHN0Ci0rICAgICAgICBlbHNlICh0ZW1w bCwgMCwgdGVtcGxfbGVuKSA6OiBzdWJzdF9sc3QKLSsgICAgICBpbgotKyAgICAgIGxldCBsYXN0 ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgaW4KLSsgICAgICBsZXQgZnVsbF9sZW4gPSBm dWxsX2xlbiArIGxlbiArIHRlbXBsX2xlbiBpbgotKyAgICAgIGxldCBuZXh0ID0gZmlyc3QgKyAx IGluCi0rICAgICAgaWYgbGFzdCA8IG5leHQgdGhlbgotKyAgICAgICAgaWYgZmlyc3QgPCBzdWJq X2xlbiB0aGVuCi0rICAgICAgICAgIGxvb3AgKGZ1bGxfbGVuICsgMSkgKChzdWJqLCBjdXJfcG9z ICsgbGVuLCAxKSA6OiBzdWJzdF9sc3QpIG5leHQKLSsgICAgICAgIGVsc2UgbG9vcCBmdWxsX2xl biBzdWJzdF9sc3QgbmV4dAotKyAgICAgIGVsc2UgbG9vcCBmdWxsX2xlbiBzdWJzdF9sc3QgbGFz dAotKyAgaW4KLSsgIGxvb3AgMCBbXSBwb3MKLSsKLStsZXQgc3Vic3RpdHV0ZSA/aWZsYWdzID9m bGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCB+c3Vic3Q6c3RyX3N1YnN0IHN1YmogPQotKyAg bGV0IHN1YnN0IChzdWJqLCBvdmVjdG9yKSA9Ci0rICAgIGxldCBmaXJzdCA9IEFycmF5LnVuc2Fm ZV9nZXQgb3ZlY3RvciAwIGluCi0rICAgIGxldCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVj dG9yIDEgaW4KLSsgICAgc3RyX3N1YnN0IChzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIGZpcnN0IChs YXN0IC0gZmlyc3QpKQotKyAgaW4KLSsgIHN1YnN0aXR1dGVfc3Vic3RyaW5ncyA/aWZsYWdzID9m bGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCB+c3Vic3Qgc3ViagotKwotK2xldCByZXBsYWNl X2ZpcnN0ID8oaWZsYWdzID0gMEwpID9mbGFncyA/KHJleCA9IGRlZl9yZXgpID9wYXQgPyhwb3Mg PSAwKQotKyAgICA/KGl0ZW1wbCA9IGRlZl9zdWJzdCkgP3RlbXBsID9jYWxsb3V0IHN1YmogPQot KyAgbGV0IHJleCA9IG1hdGNoIHBhdCB3aXRoIFNvbWUgc3RyIC0+IHJlZ2V4cCBzdHIgfCBfIC0+ IHJleCBpbgotKyAgbGV0IGlmbGFncyA9IG1hdGNoIGZsYWdzIHdpdGggU29tZSBmbGFncyAtPiBy ZmxhZ3MgZmxhZ3MgfCBfIC0+IGlmbGFncyBpbgotKyAgbGV0IHRlbXBsLCBtYXhfYnIsIHdpdGhf bHAsIHN1YnN0X2xzdCA9Ci0rICAgIG1hdGNoIHRlbXBsIHdpdGggU29tZSBzdHIgLT4gc3Vic3Qg c3RyIHwgXyAtPiBpdGVtcGwKLSsgIGluCi0rICBsZXQgc3ViZ3JvdXBzMiwgb3ZlY3RvciA9IG1h a2Vfb3ZlY3RvciByZXggaW4KLSsgIGxldCBuc3VicyA9IChzdWJncm91cHMyIGxzciAxKSAtIDEg aW4KLSsgIGlmIG1heF9iciA+IG5zdWJzIHRoZW4KLSsgICAgZmFpbHdpdGggIlBjcmUyLnJlcGxh Y2VfZmlyc3Q6IGJhY2tyZWZlcmVuY2UgZGVub3RlcyBub25leGlzdGVudCBzdWJwYXR0ZXJuIjsK LSsgIGlmIHdpdGhfbHAgJiYgbnN1YnMgPSAwIHRoZW4gZmFpbHdpdGggIlBjcmUyLnJlcGxhY2Vf Zmlyc3Q6IG5vIGJhY2tyZWZlcmVuY2VzIjsKLSsgIHRyeQotKyAgICB1bnNhZmVfcGNyZTJfbWF0 Y2ggaWZsYWdzIHJleCB+cG9zIH5zdWJqX3N0YXJ0OjAgfnN1Ymogb3ZlY3RvciBjYWxsb3V0Owot KyAgICBsZXQgcmVzX2xlbiwgdHJhbnNfbHN0ID0KLSsgICAgICBjYWxjX3RyYW5zX2xzdCBzdWJn cm91cHMyIG92ZWN0b3Igc3ViaiB0ZW1wbCBzdWJzdF9sc3QKLSsgICAgaW4KLSsgICAgbGV0IGZp cnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDAgaW4KLSsgICAgbGV0IGxhc3QgPSBBcnJh eS51bnNhZmVfZ2V0IG92ZWN0b3IgMSBpbgotKyAgICBsZXQgcmVzdCA9IFN0cmluZy5sZW5ndGgg c3ViaiAtIGxhc3QgaW4KLSsgICAgbGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAoZmlyc3QgKyByZXNf bGVuICsgcmVzdCkgaW4KLSsgICAgYnl0ZXNfdW5zYWZlX2JsaXRfc3RyaW5nIHN1YmogMCByZXMg MCBmaXJzdDsKLSsgICAgbGV0IGNvbGwgb2ZzICh0ZW1wbCwgaXgsIGxlbikgPQotKyAgICAgIGJ5 dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyB0ZW1wbCBpeCByZXMgb2ZzIGxlbjsKLSsgICAgICBvZnMg KyBsZW4KLSsgICAgaW4KLSsgICAgbGV0IG9mcyA9IExpc3QuZm9sZF9sZWZ0IGNvbGwgZmlyc3Qg dHJhbnNfbHN0IGluCi0rICAgIGJ5dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyBzdWJqIGxhc3QgcmVz IG9mcyByZXN0OwotKyAgICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlcwotKyAgd2l0aCBOb3Rf Zm91bmQgLT4gc3ViagotKwotK2xldCBxcmVwbGFjZV9maXJzdCA/KGlmbGFncyA9IDBMKSA/Zmxh Z3MgPyhyZXggPSBkZWZfcmV4KSA/cGF0ID8ocG9zID0gMCkKLSsgICAgPyh0ZW1wbCA9ICIiKSA/ Y2FsbG91dCBzdWJqID0KLSsgIGxldCByZXggPSBtYXRjaCBwYXQgd2l0aCBTb21lIHN0ciAtPiBy ZWdleHAgc3RyIHwgXyAtPiByZXggaW4KLSsgIGxldCBpZmxhZ3MgPSBtYXRjaCBmbGFncyB3aXRo IFNvbWUgZmxhZ3MgLT4gcmZsYWdzIGZsYWdzIHwgXyAtPiBpZmxhZ3MgaW4KLSsgIGxldCBfLCBv dmVjdG9yID0gbWFrZV9vdmVjdG9yIHJleCBpbgotKyAgdHJ5Ci0rICAgIHVuc2FmZV9wY3JlMl9t YXRjaCBpZmxhZ3MgcmV4IH5wb3MgfnN1Ympfc3RhcnQ6MCB+c3ViaiBvdmVjdG9yIGNhbGxvdXQ7 Ci0rICAgIGxldCBmaXJzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAwIGluCi0rICAgIGxl dCBsYXN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yIDEgaW4KLSsgICAgbGV0IGxlbiA9IFN0 cmluZy5sZW5ndGggdGVtcGwgaW4KLSsgICAgbGV0IHJlc3QgPSBTdHJpbmcubGVuZ3RoIHN1Ymog LSBsYXN0IGluCi0rICAgIGxldCBwb3N0Zml4X3N0YXJ0ID0gZmlyc3QgKyBsZW4gaW4KLSsgICAg bGV0IHJlcyA9IEJ5dGVzLmNyZWF0ZSAocG9zdGZpeF9zdGFydCArIHJlc3QpIGluCi0rICAgIGJ5 dGVzX3Vuc2FmZV9ibGl0X3N0cmluZyBzdWJqIDAgcmVzIDAgZmlyc3Q7Ci0rICAgIGJ5dGVzX3Vu c2FmZV9ibGl0X3N0cmluZyB0ZW1wbCAwIHJlcyBmaXJzdCBsZW47Ci0rICAgIGJ5dGVzX3Vuc2Fm ZV9ibGl0X3N0cmluZyBzdWJqIGxhc3QgcmVzIHBvc3RmaXhfc3RhcnQgcmVzdDsKLSsgICAgQnl0 ZXMudW5zYWZlX3RvX3N0cmluZyByZXMKLSsgIHdpdGggTm90X2ZvdW5kIC0+IHN1YmoKLSsKLSts ZXQgc3Vic3RpdHV0ZV9zdWJzdHJpbmdzX2ZpcnN0ID8oaWZsYWdzID0gMEwpID9mbGFncyA/KHJl eCA9IGRlZl9yZXgpID9wYXQKLSsgICAgPyhwb3MgPSAwKSA/Y2FsbG91dCB+c3Vic3Qgc3ViaiA9 Ci0rICBsZXQgcmV4ID0gbWF0Y2ggcGF0IHdpdGggU29tZSBzdHIgLT4gcmVnZXhwIHN0ciB8IF8g LT4gcmV4IGluCi0rICBsZXQgaWZsYWdzID0gbWF0Y2ggZmxhZ3Mgd2l0aCBTb21lIGZsYWdzIC0+ IHJmbGFncyBmbGFncyB8IF8gLT4gaWZsYWdzIGluCi0rICBsZXQgXywgb3ZlY3RvciA9IG1ha2Vf b3ZlY3RvciByZXggaW4KLSsgIHRyeQotKyAgICB1bnNhZmVfcGNyZTJfbWF0Y2ggaWZsYWdzIHJl eCB+cG9zIH5zdWJqX3N0YXJ0OjAgfnN1Ymogb3ZlY3RvciBjYWxsb3V0OwotKyAgICBsZXQgc3Vi al9sZW4gPSBTdHJpbmcubGVuZ3RoIHN1YmogaW4KLSsgICAgbGV0IHByZWZpeF9sZW4gPSBBcnJh eS51bnNhZmVfZ2V0IG92ZWN0b3IgMCBpbgotKyAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9n ZXQgb3ZlY3RvciAxIGluCi0rICAgIGxldCB0ZW1wbCA9IHN1YnN0IChzdWJqLCBvdmVjdG9yKSBp bgotKyAgICBsZXQgcG9zdGZpeF9sZW4gPSBzdWJqX2xlbiAtIGxhc3QgaW4KLSsgICAgbGV0IHRl bXBsX2xlbiA9IFN0cmluZy5sZW5ndGggdGVtcGwgaW4KLSsgICAgbGV0IHBvc3RmaXhfc3RhcnQg PSBwcmVmaXhfbGVuICsgdGVtcGxfbGVuIGluCi0rICAgIGxldCByZXMgPSBCeXRlcy5jcmVhdGUg KHBvc3RmaXhfc3RhcnQgKyBwb3N0Zml4X2xlbikgaW4KLSsgICAgYnl0ZXNfdW5zYWZlX2JsaXRf c3RyaW5nIHN1YmogMCByZXMgMCBwcmVmaXhfbGVuOwotKyAgICBieXRlc191bnNhZmVfYmxpdF9z dHJpbmcgdGVtcGwgMCByZXMgcHJlZml4X2xlbiB0ZW1wbF9sZW47Ci0rICAgIGJ5dGVzX3Vuc2Fm ZV9ibGl0X3N0cmluZyBzdWJqIGxhc3QgcmVzIHBvc3RmaXhfc3RhcnQgcG9zdGZpeF9sZW47Ci0r ICAgIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzCi0rICB3aXRoIE5vdF9mb3VuZCAtPiBzdWJq Ci0rCi0rbGV0IHN1YnN0aXR1dGVfZmlyc3QgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3Mg P2NhbGxvdXQgfnN1YnN0OnN0cl9zdWJzdAotKyAgICBzdWJqID0KLSsgIGxldCBzdWJzdCAoc3Vi aiwgb3ZlY3RvcikgPQotKyAgICBsZXQgZmlyc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3Ig MCBpbgotKyAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxIGluCi0rICAg IHN0cl9zdWJzdCAoc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBmaXJzdCAobGFzdCAtIGZpcnN0KSkK LSsgIGluCi0rICBzdWJzdGl0dXRlX3N1YnN0cmluZ3NfZmlyc3QgP2lmbGFncyA/ZmxhZ3MgP3Jl eCA/cGF0ID9wb3MgP2NhbGxvdXQgfnN1YnN0IHN1YmoKLSsKLSsoKiBTcGxpdHRpbmcgKikKLSsK LStsZXQgaW50ZXJuYWxfcHNwbGl0IGZsYWdzIHJleCBtYXggcG9zIGNhbGxvdXQgc3ViaiA9Ci0r ICBsZXQgc3Vial9sZW4gPSBTdHJpbmcubGVuZ3RoIHN1YmogaW4KLSsgIGlmIHN1YmpfbGVuID0g MCB0aGVuIFtdCi0rICBlbHNlIGlmIG1heCA9IDEgdGhlbiBbIHN1YmogXQotKyAgZWxzZQotKyAg ICBsZXQgc3ViZ3JvdXBzMiwgb3ZlY3RvciA9IG1ha2Vfb3ZlY3RvciByZXggaW4KLSsKLSsgICAg KCogQWRkcyBjb250ZW50cyBvZiBzdWJncm91cHMgdG8gdGhlIHN0cmluZyBhY2N1bXVsYXRvciAq KQotKyAgICBsZXQgaGFuZGxlX3N1Ymdyb3VwcyBzdHJzID0KLSsgICAgICBsZXQgc3RycyA9IHJl ZiBzdHJzIGluCi0rICAgICAgbGV0IGkgPSByZWYgMiBpbgotKyAgICAgIHdoaWxlICFpIDwgc3Vi Z3JvdXBzMiBkbwotKyAgICAgICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9y ICFpIGluCi0rICAgICAgICBpbmNyIGk7Ci0rICAgICAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2Fm ZV9nZXQgb3ZlY3RvciAhaSBpbgotKyAgICAgICAgbGV0IHN0ciA9Ci0rICAgICAgICAgIGlmIGZp cnN0IDwgMCB0aGVuICIiIGVsc2Ugc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBmaXJzdCAobGFzdCAt IGZpcnN0KQotKyAgICAgICAgaW4KLSsgICAgICAgIHN0cnMgOj0gc3RyIDo6ICFzdHJzOwotKyAg ICAgICAgaW5jciBpCi0rICAgICAgZG9uZTsKLSsgICAgICAhc3RycwotKyAgICBpbgotKwotKyAg ICAoKiBQZXJmb3JtcyB0aGUgcmVjdXJzaXZlIHNwbGl0ICopCi0rICAgIGxldCByZWMgbG9vcCBz dHJzIGNudCBwb3MgcHJlbWF0Y2ggPQotKyAgICAgIGxldCBsZW4gPSBzdWJqX2xlbiAtIHBvcyBp bgotKyAgICAgIGlmIGxlbiA8IDAgdGhlbiBzdHJzCi0rICAgICAgZWxzZSBpZgotKyAgICAgICAg KCogQ2hlY2tzIHRlcm1pbmF0aW9uIGR1ZSB0byBtYXggcmVzdHJpY3Rpb24gKikKLSsgICAgICAg IGNudCA9IDAKLSsgICAgICB0aGVuCi0rICAgICAgICBpZgotKyAgICAgICAgICBwcmVtYXRjaAot KyAgICAgICAgICAmJgotKyAgICAgICAgICB0cnkKLSsgICAgICAgICAgICB1bnNhZmVfcGNyZTJf bWF0Y2ggZmxhZ3MgcmV4IH5wb3MgfnN1Ympfc3RhcnQ6cG9zIH5zdWJqIG92ZWN0b3IKLSsgICAg ICAgICAgICAgIGNhbGxvdXQ7Ci0rICAgICAgICAgICAgdHJ1ZQotKyAgICAgICAgICB3aXRoIE5v dF9mb3VuZCAtPiBmYWxzZQotKyAgICAgICAgdGhlbgotKyAgICAgICAgICBsZXQgbGFzdCA9IEFy cmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxIGluCi0rICAgICAgICAgIGxldCBzdHJzID0gaGFuZGxl X3N1Ymdyb3VwcyBzdHJzIGluCi0rICAgICAgICAgIHN0cmluZ191bnNhZmVfc3ViIHN1YmogbGFz dCAoc3Vial9sZW4gLSBsYXN0KSA6OiBzdHJzCi0rICAgICAgICBlbHNlIHN0cmluZ191bnNhZmVf c3ViIHN1YmogcG9zIGxlbiA6OiBzdHJzCi0rICAgICAgICAgICgqIENhbGN1bGF0ZXMgbmV4dCBh Y2N1bXVsYXRvciBzdGF0ZSBmb3Igc3BsaXR0aW5nICopCi0rICAgICAgZWxzZSBpZgotKyAgICAg ICAgdHJ5Ci0rICAgICAgICAgIHVuc2FmZV9wY3JlMl9tYXRjaCBmbGFncyByZXggfnBvcyB+c3Vi al9zdGFydDpwb3MgfnN1Ymogb3ZlY3RvcgotKyAgICAgICAgICAgIGNhbGxvdXQ7Ci0rICAgICAg ICAgIGZhbHNlCi0rICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiB0cnVlCi0rICAgICAgdGhlbiBz dHJpbmdfdW5zYWZlX3N1YiBzdWJqIHBvcyBsZW4gOjogc3RycwotKyAgICAgIGVsc2UKLSsgICAg ICAgIGxldCBmaXJzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAwIGluCi0rICAgICAgICBs ZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxIGluCi0rICAgICAgICBpZiBmaXJz dCA9IHBvcyB0aGVuCi0rICAgICAgICAgIGlmIGxhc3QgPSBwb3MgdGhlbgotKyAgICAgICAgICAg IGxldCBzdHJzID0gaWYgcHJlbWF0Y2ggdGhlbiBoYW5kbGVfc3ViZ3JvdXBzIHN0cnMgZWxzZSBz dHJzIGluCi0rICAgICAgICAgICAgaWYgbGVuID0gMCB0aGVuICIiIDo6IHN0cnMKLSsgICAgICAg ICAgICBlbHNlIGlmCi0rICAgICAgICAgICAgICB0cnkKLSsgICAgICAgICAgICAgICAgdW5zYWZl X3BjcmUyX21hdGNoCi0rICAgICAgICAgICAgICAgICAgKCogYEFOQ0hPUkVEIHwgYE5PVEVNUFRZ ICopCi0rICAgICAgICAgICAgICAgICAgKEludDY0LmxvZ29yIGZsYWdzIDB4ODAwMDAwMDRMKQot KyAgICAgICAgICAgICAgICAgIHJleCB+cG9zIH5zdWJqX3N0YXJ0OnBvcyB+c3ViaiBvdmVjdG9y IGNhbGxvdXQ7Ci0rICAgICAgICAgICAgICAgIHRydWUKLSsgICAgICAgICAgICAgIHdpdGggTm90 X2ZvdW5kIC0+IGZhbHNlCi0rICAgICAgICAgICAgdGhlbgotKyAgICAgICAgICAgICAgbGV0IG5l d19zdHJzID0gaGFuZGxlX3N1Ymdyb3VwcyAoIiIgOjogc3RycykgaW4KLSsgICAgICAgICAgICAg IGxvb3AgbmV3X3N0cnMgKGNudCAtIDEpIChBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMSkgZmFs c2UKLSsgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICBsZXQgbmV3X3N0cnMgPSBzdHJp bmdfdW5zYWZlX3N1YiBzdWJqIHBvcyAxIDo6IHN0cnMgaW4KLSsgICAgICAgICAgICAgIGxvb3Ag bmV3X3N0cnMgKGNudCAtIDEpIChwb3MgKyAxKSB0cnVlCi0rICAgICAgICAgIGVsc2UgaWYgcHJl bWF0Y2ggdGhlbiBsb29wIChoYW5kbGVfc3ViZ3JvdXBzIHN0cnMpIGNudCBsYXN0IGZhbHNlCi0r ICAgICAgICAgIGVsc2UgbG9vcCAoaGFuZGxlX3N1Ymdyb3VwcyAoIiIgOjogc3RycykpIChjbnQg LSAxKSBsYXN0IGZhbHNlCi0rICAgICAgICBlbHNlCi0rICAgICAgICAgIGxldCBuZXdfc3RycyA9 IHN0cmluZ191bnNhZmVfc3ViIHN1YmogcG9zIChmaXJzdCAtIHBvcykgOjogc3RycyBpbgotKyAg ICAgICAgICBsb29wIChoYW5kbGVfc3ViZ3JvdXBzIG5ld19zdHJzKSAoY250IC0gMSkgbGFzdCBm YWxzZQotKyAgICBpbgotKyAgICBsb29wIFtdIChtYXggLSAxKSBwb3MgZmFsc2UKLSsKLStsZXQg cmVjIHN0cmlwX2FsbF9lbXB0eSA9IGZ1bmN0aW9uICIiIDo6IHQgLT4gc3RyaXBfYWxsX2VtcHR5 IHQgfCBsIC0+IGwKLSsKLStleHRlcm5hbCBpc3NwYWNlIDogY2hhciAtPiBib29sID0gInBjcmUy X2lzc3BhY2Vfc3R1YiIgW0BAbm9hbGxvY10KLSsKLStsZXQgcmVjIGZpbmRfbm9fc3BhY2UgaXgg bGVuIHN0ciA9Ci0rICBpZiBpeCA9IGxlbiB8fCBub3QgKGlzc3BhY2UgKFN0cmluZy51bnNhZmVf Z2V0IHN0ciBpeCkpIHRoZW4gaXgKLSsgIGVsc2UgZmluZF9ub19zcGFjZSAoaXggKyAxKSBsZW4g c3RyCi0rCi0rbGV0IHNwbGl0ID8oaWZsYWdzID0gMEwpID9mbGFncyA/cmV4ID9wYXQgPyhwb3Mg PSAwKSA/KG1heCA9IDApID9jYWxsb3V0IHN1YmogPQotKyAgbGV0IGlmbGFncyA9IG1hdGNoIGZs YWdzIHdpdGggU29tZSBmbGFncyAtPiByZmxhZ3MgZmxhZ3MgfCBfIC0+IGlmbGFncyBpbgotKyAg bGV0IHJlcyA9Ci0rICAgIG1hdGNoIChwYXQsIHJleCkgd2l0aAotKyAgICB8IFNvbWUgc3RyLCBf IC0+IGludGVybmFsX3BzcGxpdCBpZmxhZ3MgKHJlZ2V4cCBzdHIpIG1heCBwb3MgY2FsbG91dCBz dWJqCi0rICAgIHwgXywgU29tZSByZXggLT4gaW50ZXJuYWxfcHNwbGl0IGlmbGFncyByZXggbWF4 IHBvcyBjYWxsb3V0IHN1YmoKLSsgICAgfCBfIC0+Ci0rICAgICAgICAoKiBzcGVjaWFsIGNhc2Ug Zm9yIFBlcmwtc3BsaXR0aW5nIHNlbWFudGljcyAqKQotKyAgICAgICAgbGV0IGxlbiA9IFN0cmlu Zy5sZW5ndGggc3ViaiBpbgotKyAgICAgICAgaWYgcG9zID4gbGVuIHx8IHBvcyA8IDAgdGhlbiBm YWlsd2l0aCAiUGNyZTIuc3BsaXQ6IGlsbGVnYWwgb2Zmc2V0IjsKLSsgICAgICAgIGxldCBuZXdf cG9zID0gZmluZF9ub19zcGFjZSBwb3MgbGVuIHN1YmogaW4KLSsgICAgICAgIGludGVybmFsX3Bz cGxpdCBpZmxhZ3MgZGVmX3JleCBtYXggbmV3X3BvcyBjYWxsb3V0IHN1YmoKLSsgIGluCi0rICBM aXN0LnJldiAoaWYgbWF4ID0gMCB0aGVuIHN0cmlwX2FsbF9lbXB0eSByZXMgZWxzZSByZXMpCi0r Ci0rbGV0IGFzcGxpdCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/bWF4ID9jYWxsb3V0 IHN1YmogPQotKyAgQXJyYXkub2ZfbGlzdCAoc3BsaXQgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0 ID9wb3MgP21heCA/Y2FsbG91dCBzdWJqKQotKwotKygqIEZ1bGwgc3BsaXR0aW5nICopCi0rCi0r dHlwZSBzcGxpdF9yZXN1bHQgPQotKyAgfCBUZXh0IG9mIHN0cmluZwotKyAgfCBEZWxpbSBvZiBz dHJpbmcKLSsgIHwgR3JvdXAgb2YgaW50ICogc3RyaW5nCi0rICB8IE5vR3JvdXAKLSsKLStsZXQg cmVjIHN0cmlwX2FsbF9lbXB0eV9mdWxsID0gZnVuY3Rpb24KLSsgIHwgRGVsaW0gXyA6OiByZXN0 IC0+IHN0cmlwX2FsbF9lbXB0eV9mdWxsIHJlc3QKLSsgIHwgbCAtPiBsCi0rCi0rbGV0IGZ1bGxf c3BsaXQgPyhpZmxhZ3MgPSAwTCkgP2ZsYWdzID8ocmV4ID0gZGVmX3JleCkgP3BhdCA/KHBvcyA9 IDApID8obWF4ID0gMCkKLSsgICAgP2NhbGxvdXQgc3ViaiA9Ci0rICBsZXQgcmV4ID0gbWF0Y2gg cGF0IHdpdGggU29tZSBzdHIgLT4gcmVnZXhwIHN0ciB8IF8gLT4gcmV4IGluCi0rICBsZXQgaWZs YWdzID0gbWF0Y2ggZmxhZ3Mgd2l0aCBTb21lIGZsYWdzIC0+IHJmbGFncyBmbGFncyB8IF8gLT4g aWZsYWdzIGluCi0rICBsZXQgc3Vial9sZW4gPSBTdHJpbmcubGVuZ3RoIHN1YmogaW4KLSsgIGlm IHN1YmpfbGVuID0gMCB0aGVuIFtdCi0rICBlbHNlIGlmIG1heCA9IDEgdGhlbiBbIFRleHQgc3Vi aiBdCi0rICBlbHNlCi0rICAgIGxldCBzdWJncm91cHMyLCBvdmVjdG9yID0gbWFrZV9vdmVjdG9y IHJleCBpbgotKwotKyAgICAoKiBBZGRzIGNvbnRlbnRzIG9mIHN1Ymdyb3VwcyB0byB0aGUgc3Ry aW5nIGFjY3VtdWxhdG9yICopCi0rICAgIGxldCBoYW5kbGVfc3ViZ3JvdXBzIHN0cnMgPQotKyAg ICAgIGxldCBzdHJzID0gcmVmIHN0cnMgaW4KLSsgICAgICBsZXQgaSA9IHJlZiAyIGluCi0rICAg ICAgd2hpbGUgIWkgPCBzdWJncm91cHMyIGRvCi0rICAgICAgICBsZXQgZ3JvdXBfbnIgPSAhaSBs c3IgMSBpbgotKyAgICAgICAgbGV0IGZpcnN0ID0gQXJyYXkudW5zYWZlX2dldCBvdmVjdG9yICFp IGluCi0rICAgICAgICBpbmNyIGk7Ci0rICAgICAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9n ZXQgb3ZlY3RvciAhaSBpbgotKyAgICAgICAgbGV0IHN0ciA9Ci0rICAgICAgICAgIGlmIGZpcnN0 IDwgMCB0aGVuIE5vR3JvdXAKLSsgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgIGxldCBncm91 cF9zdHIgPSBzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIGZpcnN0IChsYXN0IC0gZmlyc3QpIGluCi0r ICAgICAgICAgICAgR3JvdXAgKGdyb3VwX25yLCBncm91cF9zdHIpCi0rICAgICAgICBpbgotKyAg ICAgICAgc3RycyA6PSBzdHIgOjogIXN0cnM7Ci0rICAgICAgICBpbmNyIGkKLSsgICAgICBkb25l OwotKyAgICAgICFzdHJzCi0rICAgIGluCi0rCi0rICAgICgqIFBlcmZvcm1zIHRoZSByZWN1cnNp dmUgc3BsaXQgKikKLSsgICAgbGV0IHJlYyBsb29wIHN0cnMgY250IHBvcyBwcmVtYXRjaCA9Ci0r ICAgICAgbGV0IGxlbiA9IHN1YmpfbGVuIC0gcG9zIGluCi0rICAgICAgaWYgbGVuIDwgMCB0aGVu IHN0cnMKLSsgICAgICBlbHNlIGlmCi0rICAgICAgICAoKiBDaGVja3MgdGVybWluYXRpb24gZHVl IHRvIG1heCByZXN0cmljdGlvbiAqKQotKyAgICAgICAgY250ID0gMAotKyAgICAgIHRoZW4KLSsg ICAgICAgIGlmCi0rICAgICAgICAgIHByZW1hdGNoCi0rICAgICAgICAgICYmCi0rICAgICAgICAg IHRyeQotKyAgICAgICAgICAgIHVuc2FmZV9wY3JlMl9tYXRjaCBpZmxhZ3MgcmV4IH5wb3MgfnN1 Ympfc3RhcnQ6cG9zIH5zdWJqIG92ZWN0b3IKLSsgICAgICAgICAgICAgIGNhbGxvdXQ7Ci0rICAg ICAgICAgICAgdHJ1ZQotKyAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBmYWxzZQotKyAgICAg ICAgdGhlbgotKyAgICAgICAgICBsZXQgZmlyc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3Ig MCBpbgotKyAgICAgICAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxIGlu Ci0rICAgICAgICAgIGxldCBkZWxpbSA9IERlbGltIChzdHJpbmdfdW5zYWZlX3N1YiBzdWJqIGZp cnN0IChsYXN0IC0gZmlyc3QpKSBpbgotKyAgICAgICAgICBUZXh0IChzdHJpbmdfdW5zYWZlX3N1 YiBzdWJqIGxhc3QgKHN1YmpfbGVuIC0gbGFzdCkpCi0rICAgICAgICAgIDo6IGhhbmRsZV9zdWJn cm91cHMgKGRlbGltIDo6IHN0cnMpCi0rICAgICAgICBlbHNlIGlmIGxlbiA9IDAgdGhlbiBzdHJz Ci0rICAgICAgICBlbHNlIFRleHQgKHN0cmluZ191bnNhZmVfc3ViIHN1YmogcG9zIGxlbikgOjog c3RycwotKyAgICAgICAgICAoKiBDYWxjdWxhdGVzIG5leHQgYWNjdW11bGF0b3Igc3RhdGUgZm9y IHNwbGl0dGluZyAqKQotKyAgICAgIGVsc2UgaWYKLSsgICAgICAgIHRyeQotKyAgICAgICAgICB1 bnNhZmVfcGNyZTJfbWF0Y2ggaWZsYWdzIHJleCB+cG9zIH5zdWJqX3N0YXJ0OnBvcyB+c3ViaiBv dmVjdG9yCi0rICAgICAgICAgICAgY2FsbG91dDsKLSsgICAgICAgICAgZmFsc2UKLSsgICAgICAg IHdpdGggTm90X2ZvdW5kIC0+IHRydWUKLSsgICAgICB0aGVuCi0rICAgICAgICBpZiBsZW4gPSAw IHRoZW4gc3RycyBlbHNlIFRleHQgKHN0cmluZ191bnNhZmVfc3ViIHN1YmogcG9zIGxlbikgOjog c3RycwotKyAgICAgIGVsc2UKLSsgICAgICAgIGxldCBmaXJzdCA9IEFycmF5LnVuc2FmZV9nZXQg b3ZlY3RvciAwIGluCi0rICAgICAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3Rv ciAxIGluCi0rICAgICAgICBpZiBmaXJzdCA9IHBvcyB0aGVuCi0rICAgICAgICAgIGlmIGxhc3Qg PSBwb3MgdGhlbgotKyAgICAgICAgICAgIGlmIGxlbiA9IDAgdGhlbiBoYW5kbGVfc3ViZ3JvdXBz IChEZWxpbSAiIiA6OiBzdHJzKQotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgIGxl dCBlbXB0eV9ncm91cHMgPSBoYW5kbGVfc3ViZ3JvdXBzIFtdIGluCi0rICAgICAgICAgICAgICBp ZgotKyAgICAgICAgICAgICAgICB0cnkKLSsgICAgICAgICAgICAgICAgICB1bnNhZmVfcGNyZTJf bWF0Y2gKLSsgICAgICAgICAgICAgICAgICAgICgqIGBBTkNIT1JFRCB8IGBOT1RFTVBUWSAqKQot KyAgICAgICAgICAgICAgICAgICAgKEludDY0LmxvZ29yIGlmbGFncyAweDgwMDAwMDA0TCkKLSsg ICAgICAgICAgICAgICAgICAgIHJleCB+cG9zIH5zdWJqX3N0YXJ0OnBvcyB+c3ViaiBvdmVjdG9y IGNhbGxvdXQ7Ci0rICAgICAgICAgICAgICAgICAgdHJ1ZQotKyAgICAgICAgICAgICAgICB3aXRo IE5vdF9mb3VuZCAtPiBmYWxzZQotKyAgICAgICAgICAgICAgdGhlbgotKyAgICAgICAgICAgICAg ICBsZXQgZmlyc3QgPSBBcnJheS51bnNhZmVfZ2V0IG92ZWN0b3IgMCBpbgotKyAgICAgICAgICAg ICAgICBsZXQgbGFzdCA9IEFycmF5LnVuc2FmZV9nZXQgb3ZlY3RvciAxIGluCi0rICAgICAgICAg ICAgICAgIGxldCBkZWxpbSA9Ci0rICAgICAgICAgICAgICAgICAgRGVsaW0gKHN0cmluZ191bnNh ZmVfc3ViIHN1YmogZmlyc3QgKGxhc3QgLSBmaXJzdCkpCi0rICAgICAgICAgICAgICAgIGluCi0r ICAgICAgICAgICAgICAgIGxldCBuZXdfc3RycyA9Ci0rICAgICAgICAgICAgICAgICAgbGV0IHRt cF9zdHJzID0KLSsgICAgICAgICAgICAgICAgICAgIGlmIHByZW1hdGNoIHRoZW4gc3RycyBlbHNl IGVtcHR5X2dyb3VwcyBAIChEZWxpbSAiIiA6OiBzdHJzKQotKyAgICAgICAgICAgICAgICAgIGlu Ci0rICAgICAgICAgICAgICAgICAgaGFuZGxlX3N1Ymdyb3VwcyAoZGVsaW0gOjogdG1wX3N0cnMp Ci0rICAgICAgICAgICAgICAgIGluCi0rICAgICAgICAgICAgICAgIGxvb3AgbmV3X3N0cnMgKGNu dCAtIDEpIGxhc3QgZmFsc2UKLSsgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAg bGV0IG5ld19zdHJzID0KLSsgICAgICAgICAgICAgICAgICAoVGV4dCAoc3RyaW5nX3Vuc2FmZV9z dWIgc3ViaiBwb3MgMSkgOjogZW1wdHlfZ3JvdXBzKQotKyAgICAgICAgICAgICAgICAgIEAgKERl bGltICIiIDo6IHN0cnMpCi0rICAgICAgICAgICAgICAgIGluCi0rICAgICAgICAgICAgICAgIGxv b3AgbmV3X3N0cnMgKGNudCAtIDEpIChwb3MgKyAxKSB0cnVlCi0rICAgICAgICAgIGVsc2UKLSsg ICAgICAgICAgICBsZXQgZGVsaW0gPSBEZWxpbSAoc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBmaXJz dCAobGFzdCAtIGZpcnN0KSkgaW4KLSsgICAgICAgICAgICBsb29wIChoYW5kbGVfc3ViZ3JvdXBz IChkZWxpbSA6OiBzdHJzKSkgY250IGxhc3QgZmFsc2UKLSsgICAgICAgIGVsc2UKLSsgICAgICAg ICAgbGV0IGRlbGltID0gRGVsaW0gKHN0cmluZ191bnNhZmVfc3ViIHN1YmogZmlyc3QgKGxhc3Qg LSBmaXJzdCkpIGluCi0rICAgICAgICAgIGxldCBwcmVfc3RycyA9Ci0rICAgICAgICAgICAgVGV4 dCAoc3RyaW5nX3Vuc2FmZV9zdWIgc3ViaiBwb3MgKGZpcnN0IC0gcG9zKSkgOjogc3RycwotKyAg ICAgICAgICBpbgotKyAgICAgICAgICBsb29wIChoYW5kbGVfc3ViZ3JvdXBzIChkZWxpbSA6OiBw cmVfc3RycykpIChjbnQgLSAxKSBsYXN0IGZhbHNlCi0rICAgIGluCi0rICAgIGxldCByZXMgPSBs b29wIFtdIChtYXggLSAxKSBwb3MgdHJ1ZSBpbgotKyAgICBMaXN0LnJldiAoaWYgbWF4ID0gMCB0 aGVuIHN0cmlwX2FsbF9lbXB0eV9mdWxsIHJlcyBlbHNlIHJlcykKLSsKLSsoKiBBZGRpdGlvbmFs IGNvbnZlbmllbmNlIGZ1bmN0aW9ucyB1c2VmdWwgaW4gY29tYmluYXRpb24gd2l0aCB0aGlzIGxp YnJhcnkgKikKLSsKLStsZXQgZm9yZWFjaF9saW5lID8oaWMgPSBzdGRpbikgZiA9Ci0rICB0cnkK LSsgICAgd2hpbGUgdHJ1ZSBkbwotKyAgICAgIGYgKGlucHV0X2xpbmUgaWMpCi0rICAgIGRvbmUK LSsgIHdpdGggRW5kX29mX2ZpbGUgLT4gKCkKLSsKLStsZXQgZm9yZWFjaF9maWxlIGZpbGVuYW1l cyBmID0KLSsgIGxldCBkb193aXRoX2ZpbGUgZmlsZW5hbWUgPQotKyAgICBsZXQgZmlsZSA9IG9w ZW5faW4gZmlsZW5hbWUgaW4KLSsgICAgdHJ5Ci0rICAgICAgZiBmaWxlbmFtZSBmaWxlOwotKyAg ICAgIGNsb3NlX2luIGZpbGUKLSsgICAgd2l0aCBleG4gLT4KLSsgICAgICBjbG9zZV9pbiBmaWxl OwotKyAgICAgIHJhaXNlIGV4bgotKyAgaW4KLSsgIExpc3QuaXRlciBkb193aXRoX2ZpbGUgZmls ZW5hbWVzCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIvcGNyZTIu bWxpIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIvcGNyZTIubWxpCi1uZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi5hNjFiY2Q4NTcKLS0tLSAvZGV2L251bGwKLSsr KyBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvbGliL3BjcmUyLm1saQotQEAgLTAsMCArMSwx MDY4IEBACi0rKCogUENSRTItT0NBTUwgLSBQZXJsIENvbXBhdGliaWxpdHkgUmVndWxhciBFeHBy ZXNzaW9ucyBmb3IgT0NhbWwKLSsKLSsgICBDb3B5cmlnaHQgwqkgMTk5OS0gTWFya3VzIE1vdHRs IDxtYXJrdXMubW90dGxAZ21haWwuY29tPgotKwotKyAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi0r ICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxh dGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCi0rICAgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MKLSsgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlCi0rICAgZGV0YWlscy4KLSsKLSsgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotKyAgIDUxIEZyYW5rbGlu IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EgKikKLSsKLSso KiogUGVybCBDb21wYXRpYmlsaXR5IFJlZ3VsYXIgRXhwcmVzc2lvbnMgZm9yIE9DYW1sCi0rCi0r ICAgIHtlICUlVkVSU0lPTiUlIC0ge3s6JSVQS0dfSE9NRVBBR0UlJX0gaG9tZXBhZ2V9fSAqKQot KwotKygqKiB7MSBFeGNlcHRpb25zfSAqKQotKwotK3R5cGUgZXJyb3IgPQotKyAgfCBQYXJ0aWFs ICAoKiogU3RyaW5nIG9ubHkgbWF0Y2hlZCB0aGUgcGF0dGVybiBwYXJ0aWFsbHkgKikKLSsgIHwg QmFkUGF0dGVybiBvZiBzdHJpbmcgKiBpbnQKLSsgICAgICAoKiogW0JhZFBhdHRlcm4gKG1zZywg cG9zKV0gcmVndWxhciBleHByZXNzaW9uIGlzIG1hbGZvcm1lZC4gVGhlIHJlYXNvbiBpcwotKyAg ICAgICAgICBpbiBbbXNnXSwgdGhlIHBvc2l0aW9uIG9mIHRoZSBlcnJvciBpbiB0aGUgcGF0dGVy biBpbiBbcG9zXS4gKikKLSsgIHwgQmFkVVRGICAoKiogVVRGIHN0cmluZyBiZWluZyBtYXRjaGVk IGlzIGludmFsaWQgKikKLSsgIHwgQmFkVVRGT2Zmc2V0Ci0rICAgICAgKCoqIEdldHMgcmFpc2Vk IHdoZW4gYSBVVEYgc3RyaW5nIGJlaW5nIG1hdGNoZWQgd2l0aCBvZmZzZXQgaXMgaW52YWxpZC4g KikKLSsgIHwgTWF0Y2hMaW1pdAotKyAgICAgICgqKiBNYXhpbXVtIGFsbG93ZWQgbnVtYmVyIG9m IG1hdGNoIGF0dGVtcHRzIHdpdGggYmFja3RyYWNraW5nIG9yCi0rICAgICAgICAgIHJlY3Vyc2lv biBpcyByZWFjaGVkIGR1cmluZyBtYXRjaGluZy4gQUxMIEZVTkNUSU9OUyBDQUxMSU5HIFRIRQot KyAgICAgICAgICBNQVRDSElORyBFTkdJTkUgTUFZIFJBSVNFIElUISEhICopCi0rICB8IERlcHRo TGltaXQKLSsgIHwgV29ya3NwYWNlU2l6ZQotKyAgICAgICgqKiBSYWlzZWQgYnkgeyFwY3JlMl9k ZmFfbWF0Y2h9IHdoZW4gdGhlIHByb3ZpZGVkIHdvcmtzcGFjZSBhcnJheSBpcyB0b28KLSsgICAg ICAgICAgc21hbGwuIFNlZSBkb2N1bWVudGlvbiBvbiB7IXBjcmUyX2RmYV9tYXRjaH0gZm9yIGRl dGFpbHMgb24gd29ya3NwYWNlCi0rICAgICAgICAgIGFycmF5IHNpemluZy4gKikKLSsgIHwgSW50 ZXJuYWxFcnJvciBvZiBzdHJpbmcKLSsgICAgICAoKiogW0ludGVybmFsRXJyb3IgbXNnXSBDLWxp YnJhcnkgZXhoaWJpdHMgdW5rbm93bi91bmRlZmluZWQgYmVoYXZpb3VyLgotKyAgICAgICAgICBU aGUgcmVhc29uIGlzIGluIFttc2ddLiAqKQotKwotK2V4Y2VwdGlvbiBFcnJvciBvZiBlcnJvcgot KygqKiBFeGNlcHRpb24gaW5kaWNhdGluZyBQQ1JFIGVycm9ycy4gKikKLSsKLStleGNlcHRpb24g QmFja3RyYWNrCi0rKCoqIFtCYWNrdHJhY2tdIHVzZWQgaW4gY2FsbG91dCBmdW5jdGlvbnMgdG8g Zm9yY2UgYmFja3RyYWNraW5nLiAqKQotKwotK2V4Y2VwdGlvbiBSZWdleHBfb3Igb2Ygc3RyaW5n ICogZXJyb3IKLSsoKiogW1JlZ2V4cF9vciAocGF0LCBlcnJvcildIGdldHMgcmFpc2VkIGZvciBz dWItcGF0dGVybiBbcGF0XSBieSBbcmVnZXhwX29yXSBpZgotKyAgICBpdCBmYWlsZWQgdG8gY29t cGlsZS4gKikKLSsKLSsoKiogezEgQ29tcGlsYXRpb24gYW5kIHJ1bnRpbWUgZmxhZ3MgYW5kIHRo ZWlyIGNvbnZlcnNpb24gZnVuY3Rpb25zfSAqKQotKwotK3R5cGUgaWNmbGFnCi0rKCoqIEludGVy bmFsIHJlcHJlc2VudGF0aW9uIG9mIGNvbXBpbGF0aW9uIGZsYWdzICopCi0rCi0rYW5kIGlyZmxh ZwotKygqKiBJbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBydW50aW1lIGZsYWdzICopCi0rCi0r YW5kIGNmbGFnID0KLSsgIFsgYEFMTE9XX0VNUFRZX0NMQVNTICAoKiogQWxsb3cgZW1wdHkgY2xh c3NlcyAqKQotKyAgfCBgQUxUX0JTVVggICgqKiBBbHRlcm5hdGl2ZSBoYW5kbGluZyBvZiBcdSwg XFUsIGFuZCBceCAqKQotKyAgfCBgQUxUX0NJUkNVTUZMRVggICgqKiBBbHRlcm5hdGl2ZSBoYW5k bGluZyBvZiBeIGluIG11bHRpbGluZSBtb2RlICopCi0rICB8IGBBTFRfVkVSQk5BTUVTICAoKiog UHJvY2VzcyBiYWNrc2xhc2hlcyBpbiB2ZXJiIG5hbWVzICopCi0rICB8IGBBTkNIT1JFRCAgKCoq IFBhdHRlcm4gbWF0Y2hlcyBvbmx5IGF0IHN0YXJ0IG9mIHN0cmluZyAqKQotKyAgfCBgQVVUT19D QUxMT1VUCi0rICAgICgqKiBBdXRvbWF0aWNhbGx5IGluc2VydHMgY2FsbG91dHMgd2l0aCBpZCAy NTUgYmVmb3JlIGVhY2ggcGF0dGVybiBpdGVtICopCi0rICB8IGBDQVNFTEVTUyAgKCoqIENhc2Ug aW5zZW5zaXRpdmUgbWF0Y2hpbmcgKikKLSsgIHwgYERPTExBUl9FTkRPTkxZICAoKiogJyQnIGlu IHBhdHRlcm4gbWF0Y2hlcyBvbmx5IGF0IGVuZCBvZiBzdHJpbmcgKikKLSsgIHwgYERPVEFMTCAg KCoqICcuJyBtYXRjaGVzIGFsbCBjaGFyYWN0ZXJzIChuZXdsaW5lcywgdG9vKSAqKQotKyAgfCBg RFVQTkFNRVMgICgqKiBBbGxvdyBkdXBsaWNhdGUgbmFtZXMgZm9yIHN1YnBhdHRlcm5zICopCi0r ICB8IGBFTkRBTkNIT1JFRCAgKCoqIFBhdHRlcm4gY2FuIG1hdGNoIG9ubHkgYXQgZW5kIG9mIHN1 YmplY3QgKikKLSsgIHwgYEVYVEVOREVECi0rICAgICgqKiBJZ25vcmVzIHdoaXRlc3BhY2UgYW5k IFBFUkwtY29tbWVudHMuIEJlaGF2ZXMgbGlrZSB0aGUgJy94Jy1vcHRpb24gaW4KLSsgICAgICAg IFBFUkwgKikKLSsgIHwgYEVYVEVOREVEX01PUkUKLSsgIHwgYEZJUlNUTElORSAgKCoqIFVuYW5j aG9yZWQgcGF0dGVybnMgbXVzdCBtYXRjaCBiZWZvcmUvYXQgZmlyc3QgTkwgKikKLSsgIHwgYExJ VEVSQUwgICgqKiBQYXR0ZXJuIGNoYXJhY3RlcnMgYXJlIGFsbCBsaXRlcmFsICopCi0rICB8IGBN QVRDSF9JTlZBTElEX1VURiAgKCoqIEVuYWJsZSBzdXBwb3J0IGZvciBtYXRjaGluZyBpbnZhbGlk IFVURiAqKQotKyAgfCBgTUFUQ0hfVU5TRVRfQkFDS1JFRiAgKCoqIE1hdGNoIHVuc2V0IGJhY2ty ZWZlcmVuY2VzICopCi0rICB8IGBNVUxUSUxJTkUKLSsgICAgKCoqICdeJyBhbmQgJyQnIG1hdGNo IGJlZm9yZS9hZnRlciBuZXdsaW5lcywgbm90IGp1c3QgYXQgdGhlIGJlZ2lubmluZy9lbmQKLSsg ICAgICAgIG9mIGEgc3RyaW5nICopCi0rICB8IGBORVZFUl9CQUNLU0xBU0hfQyAgKCoqIExvY2sg b3V0IHRoZSB1c2Ugb2YgXEMgaW4gcGF0dGVybnMgKikKLSsgIHwgYE5FVkVSX1VDUCAgKCoqIExv Y2sgb3V0IFVDUCwgZS5nLiB2aWEgKFwqVUNQKSAqKQotKyAgfCBgTkVWRVJfVVRGICAoKiogTG9j ayBvdXQgVVRGLCBlLmcuIHZpYSAoXCpVVEYpICopCi0rICB8IGBOT19BVVRPX0NBUFRVUkUgICgq KiBEaXNhYmxlcyB0aGUgdXNlIG9mIG51bWJlcmVkIGNhcHR1cmluZyBwYXJlbnRoZXNlcyAqKQot KyAgfCBgTk9fQVVUT19QT1NTRVNTICAoKiogRGlzYWJsZSBhdXRvLXBvc3Nlc3NpZmljYXRpb24g KikKLSsgIHwgYE5PX0RPVFNUQVJfQU5DSE9SICAoKiogRGlzYWJsZSBhdXRvbWF0aWMgYW5jaG9y aW5nIGZvciAuKiAqKQotKyAgfCBgTk9fU1RBUlRfT1BUSU1JWkUgICgqKiBEaXNhYmxlIG1hdGNo LXRpbWUgc3RhcnQgb3B0aW1pemF0aW9ucyAqKQotKyAgfCBgTk9fVVRGX0NIRUNLCi0rICAgICgq KiBEbyBub3QgY2hlY2sgdGhlIHBhdHRlcm4gZm9yIFVURiB2YWxpZGl0eSAob25seSByZWxldmFu dCBpZiBVVEYgaXMgc2V0KQotKyAgICAgICAgV0FSTklORzogd2l0aCB0aGlzIGZsYWcgZW5hYmxl ZCwgaW52YWxpZCBVVEYgc3RyaW5ncyBtYXkgY2F1c2UgYSBjcmFzaCwKLSsgICAgICAgIGxvb3As IG9yIGdpdmUgaW5jb3JyZWN0IHJlc3VsdHMgKikKLSsgIHwgYFVDUCAgKCoqIFVzZSBVbmljb2Rl IHByb3BlcnRpZXMgZm9yIFxkLCBcdywgZXRjLiAqKQotKyAgfCBgVU5HUkVFRFkgICgqKiBRdWFu dGlmaWVycyBub3QgZ3JlZWR5IGFueW1vcmUsIG9ubHkgaWYgZm9sbG93ZWQgYnkgJz8nICopCi0r ICB8IGBVU0VfT0ZGU0VUX0xJTUlUICAoKiogRW5hYmxlIG9mZnNldCBsaW1pdCBmb3IgdW5hbmNo b3JlZCBtYXRjaGluZyAqKQotKyAgfCBgVVRGICAoKiogVHJlYXQgcGF0dGVybiBhbmQgc3ViamVj dHMgYXMgVVRGIHN0cmluZ3MgKikgXQotKygqKiBDb21waWxhdGlvbiBmbGFncyAqKQotKwotK3Zh bCBjZmxhZ3MgOiBjZmxhZyBsaXN0IC0+IGljZmxhZwotKygqKiBbY2ZsYWdzIGNmbGFnX2xpc3Rd IGNvbnZlcnRzIGEgbGlzdCBvZiBjb21waWxhdGlvbiBmbGFncyB0byB0aGVpciBpbnRlcm5hbAot KyAgICByZXByZXNlbnRhdGlvbi4gKikKLSsKLSt2YWwgY2ZsYWdfbGlzdCA6IGljZmxhZyAtPiBj ZmxhZyBsaXN0Ci0rKCoqIFtjZmxhZ19saXN0IGNmbGFnc10gY29udmVydHMgaW50ZXJuYWwgcmVw cmVzZW50YXRpb24gb2YgY29tcGlsYXRpb24gZmxhZ3MgdG8KLSsgICAgYSBsaXN0LiAqKQotKwot K3R5cGUgcmZsYWcgPQotKyAgWyBgQU5DSE9SRUQgICgqKiBNYXRjaCBvbmx5IGF0IHRoZSBmaXJz dCBwb3NpdGlvbiAqKQotKyAgfCBgQ09QWV9NQVRDSEVEX1NVQkpFQ1QgICgqKiBPbiBzdWNjZXNz LCBtYWtlIGEgcHJpdmF0ZSBzdWJqZWN0IGNvcHkgKikKLSsgIHwgYERGQV9SRVNUQVJUCi0rICAg ICgqKiBDYXVzZXMgbWF0Y2hpbmcgdG8gcHJvY2VlZCBwcmVzdW1pbmcgdGhlIHN1YmplY3Qgc3Ry aW5nIGlzIGZ1cnRoZXIgdG8KLSsgICAgICAgIG9uZSBwYXJ0aWFsbHkgbWF0Y2hlZCBwcmV2aW91 c2x5IHVzaW5nIHRoZSBzYW1lIGludC1hcnJheSB3b3JraW5nIHNldC4KLSsgICAgICAgIE1heSBv bmx5IGJlIHVzZWQgd2l0aCB7IXBjcmUyX2RmYV9tYXRjaH0gb3IgeyF1bnNhZmVfcGNyZTJfZGZh X21hdGNofSwKLSsgICAgICAgIGFuZCBzaG91bGQgYWx3YXlzIGJlIHBhaXJlZCB3aXRoIFtgUEFS VElBTF0uICopCi0rICB8IGBERkFfU0hPUlRFU1QgICgqKiBSZXR1cm4gb25seSB0aGUgc2hvcnRl c3QgbWF0Y2ggKikKLSsgIHwgYEVOREFOQ0hPUkVEICAoKiogUGF0dGVybiBjYW4gbWF0Y2ggb25s eSBhdCBlbmQgb2Ygc3ViamVjdCAqKQotKyAgfCBgTk9UQk9MICAoKiogQmVnaW5uaW5nIG9mIHN0 cmluZyBpcyBub3QgdHJlYXRlZCBhcyBiZWdpbm5pbmcgb2YgbGluZSAqKQotKyAgfCBgTk9URU9M ICAoKiogRW5kIG9mIHN0cmluZyBpcyBub3QgdHJlYXRlZCBhcyBlbmQgb2YgbGluZSAqKQotKyAg fCBgTk9URU1QVFkgICgqKiBBbiBlbXB0eSBzdHJpbmcgaXMgbm90IGEgdmFsaWQgbWF0Y2ggKikK LSsgIHwgYE5PVEVNUFRZX0FUU1RBUlQKLSsgICAgKCoqIEFuIGVtcHR5IHN0cmluZyBhdCB0aGUg c3RhcnQgb2YgdGhlIHN1YmplY3QgaXMgbm90IGEgdmFsaWQgbWF0Y2ggKikKLSsgIHwgYE5PX0pJ VCAgKCoqIERvIG5vdCB1c2UgSklUIG1hdGNoaW5nICopCi0rICB8IGBOT19VVEZfQ0hFQ0sKLSsg ICAgKCoqIERvIG5vdCBjaGVjayB0aGUgc3ViamVjdCBmb3IgVVRGIHZhbGlkaXR5IChvbmx5IHJl bGV2YW50IGlmIFBDUkUyX1VURgotKyAgICAgICAgd2FzIHNldCBhdCBjb21waWxlIHRpbWUpICop Ci0rICB8IGBQQVJUSUFMX0hBUkQKLSsgICAgKCoqIFRocm93IFBjcmUyLlBhcnRpYWwgZm9yIGEg cGFydGlhbCBtYXRjaCBldmVuIGlmIHRoZXJlIGlzIGEgZnVsbCBtYXRjaCAqKQotKyAgfCBgUEFS VElBTF9TT0ZUCi0rICAgICgqKiBUaHJvdyBQY3JlMi5QYXJ0aWFsIGZvciBhIHBhcnRpYWwgbWF0 Y2ggaWYgbm8gZnVsbCBtYXRjaGVzIGFyZSBmb3VuZCAqKQotKyAgXQotKygqKiBSdW50aW1lIGZs YWdzICopCi0rCi0rdmFsIHJmbGFncyA6IHJmbGFnIGxpc3QgLT4gaXJmbGFnCi0rKCoqIFtyZmxh Z3MgcmZsYWdfbGlzdF0gY29udmVydHMgYSBsaXN0IG9mIHJ1bnRpbWUgZmxhZ3MgdG8gdGhlaXIg aW50ZXJuYWwKLSsgICAgcmVwcmVzZW50YXRpb24uICopCi0rCi0rdmFsIHJmbGFnX2xpc3QgOiBp cmZsYWcgLT4gcmZsYWcgbGlzdAotKygqKiBbcmZsYWdfbGlzdCByZmxhZ3NdIGNvbnZlcnRzIGlu dGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIHJ1bnRpbWUgZmxhZ3MgdG8gYQotKyAgICBsaXN0LiAq KQotKwotKygqKiB7MSBJbmZvcm1hdGlvbiBvbiB0aGUgUENSRTItY29uZmlndXJhdGlvbiAoYnVp bGQtdGltZSBvcHRpb25zKX0gKikKLSsKLSsoKiogVmVyc2lvbiBpbmZvcm1hdGlvbiAqKQotK3Zh bCB2ZXJzaW9uIDogc3RyaW5nCi0rKCoqIFZlcnNpb24gb2YgdGhlIFBDUkUyLUMtbGlicmFyeSAq KQotKwotK3ZhbCBjb25maWdfdW5pY29kZSA6IGJvb2wKLSsoKiogSW5kaWNhdGVzIHdoZXRoZXIg dW5pY29kZSBzdXBwb3J0IGlzIGVuYWJsZWQgKikKLSsKLSt2YWwgY29uZmlnX25ld2xpbmUgOiBj aGFyCi0rKCoqIENoYXJhY3RlciB1c2VkIGFzIG5ld2xpbmUgKikKLSsKLSt2YWwgY29uZmlnX2xp bmtfc2l6ZSA6IGludAotKygqKiBOdW1iZXIgb2YgYnl0ZXMgdXNlZCBmb3IgaW50ZXJuYWwgbGlu a2FnZSBvZiByZWd1bGFyIGV4cHJlc3Npb25zICopCi0rCi0rdmFsIGNvbmZpZ19tYXRjaF9saW1p dCA6IGludAotKygqKiBEZWZhdWx0IGxpbWl0IGZvciBjYWxscyB0byBpbnRlcm5hbCBtYXRjaGlu ZyBmdW5jdGlvbiAqKQotKwotK3ZhbCBjb25maWdfZGVwdGhfbGltaXQgOiBpbnQKLSsoKiogRGVm YXVsdCBsaW1pdCBmb3IgZGVwdGggb2YgbmVzdGVkIGJhY2t0cmFja2luZyAqKQotKwotK3ZhbCBj b25maWdfc3RhY2tyZWN1cnNlIDogYm9vbAotKygqKiBJbmRpY2F0ZXMgdXNlIG9mIHN0YWNrIHJl Y3Vyc2lvbiBpbiBtYXRjaGluZyBmdW5jdGlvbiAqKQotKwotKygqKiB7MSBJbmZvcm1hdGlvbiBv biBwYXR0ZXJuc30gKikKLSsKLSt0eXBlIGZpcnN0Y29kZXVuaXRfaW5mbyA9Ci0rICBbIGBDaGFy IG9mIGNoYXIgICgqKiBGaXhlZCBmaXJzdCBjaGFyYWN0ZXIgKikKLSsgIHwgYFN0YXJ0X29ubHkg ICgqKiBQYXR0ZXJuIG1hdGNoZXMgYXQgYmVnaW5uaW5nIGFuZCBlbmQgb2YgbmV3bGluZXMgKikK LSsgIHwgYEFOQ0hPUkVEICAoKiogUGF0dGVybiBpcyBhbmNob3JlZCAqKSBdCi0rKCoqIEluZm9y bWF0aW9uIG9uIG1hdGNoaW5nIG9mICJmaXJzdCBjaGFycyIgaW4gcGF0dGVybnMgKikKLSsKLSt0 eXBlIHJlZ2V4cAotKygqKiBDb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb25zICopCi0rCi0rdmFs IG9wdGlvbnMgOiByZWdleHAgLT4gaWNmbGFnCi0rKCoqIFtvcHRpb25zIHJlZ2V4cF0KLSsKLSsg ICAgQHJldHVybiBjb21waWxhdGlvbiBmbGFncyBvZiBbcmVnZXhwXS4gKikKLSsKLSt2YWwgc2l6 ZSA6IHJlZ2V4cCAtPiBpbnQKLSsoKiogW3NpemUgcmVnZXhwXQotKwotKyAgICBAcmV0dXJuIG1l bW9yeSBzaXplIG9mIFtyZWdleHBdLiAqKQotKwotK3ZhbCBjYXB0dXJlY291bnQgOiByZWdleHAg LT4gaW50Ci0rKCoqIFtjYXB0dXJlY291bnQgcmVnZXhwXQotKwotKyAgICBAcmV0dXJuIG51bWJl ciBvZiBjYXB0dXJpbmcgc3VicGF0dGVybnMgaW4gW3JlZ2V4cF0uICopCi0rCi0rdmFsIGJhY2ty ZWZtYXggOiByZWdleHAgLT4gaW50Ci0rKCoqIFtiYWNrcmVmbWF4IHJlZ2V4cF0KLSsKLSsgICAg QHJldHVybiBudW1iZXIgb2YgaGlnaGVzdCBiYWNrcmVmZXJlbmNlIGluIFtyZWdleHBdLiAqKQot KwotK3ZhbCBuYW1lY291bnQgOiByZWdleHAgLT4gaW50Ci0rKCoqIFtuYW1lY291bnQgcmVnZXhw XQotKwotKyAgICBAcmV0dXJuIG51bWJlciBvZiBuYW1lZCBzdWJwYXR0ZXJucyBpbiBbcmVnZXhw XS4gKikKLSsKLSt2YWwgbmFtZWVudHJ5c2l6ZSA6IHJlZ2V4cCAtPiBpbnQKLSsoKiogW25hbWVl bnRyeXNpemUgcmVnZXhwXQotKwotKyAgICBAcmV0dXJuIHNpemUgb2YgbG9uZ2VzdCBuYW1lIG9m IG5hbWVkIHN1YnBhdHRlcm5zIGluIFtyZWdleHBdICsgMy4gKikKLSsKLSt2YWwgbmFtZXMgOiBy ZWdleHAgLT4gc3RyaW5nIGFycmF5Ci0rKCoqIFtuYW1lcyByZWdleF0KLSsKLSsgICAgQHJldHVy biBhcnJheSBvZiBuYW1lcyBvZiBuYW1lZCBzdWJzdHJpbmdzIGluIFtyZWdleHBdLiAqKQotKwot K3ZhbCBmaXJzdGNvZGV1bml0IDogcmVnZXhwIC0+IGZpcnN0Y29kZXVuaXRfaW5mbwotKygqKiBb Zmlyc3Rjb2RldW5pdCByZWdleHBdCi0rCi0rICAgIEByZXR1cm4gZmlyc3Rjb2RldW5pdCBpbmZv IG9uIFtyZWdleHBdLiAqKQotKwotK3ZhbCBsYXN0Y29kZXVuaXQgOiByZWdleHAgLT4gY2hhciBv cHRpb24KLSsoKiogW2xhc3Rjb2RldW5pdCByZWdleHBdCi0rCi0rICAgIEByZXR1cm4KLSsgICAg ICBzb21lIGxhc3QgbWF0Y2hpbmcgY2hhcmFjdGVyIG9mIFtyZWdleHBdIGlmIGF2YWlsYWJsZSwg W05vbmVdIG90aGVyd2lzZS4KLSsqKQotKwotK3ZhbCBnZXRfc3RyaW5nbnVtYmVyIDogcmVnZXhw IC0+IHN0cmluZyAtPiBpbnQKLSsoKiogW2dldF9zdHJpbmdudW1iZXIgcmV4IG5hbWVdCi0rCi0r ICAgIEByZXR1cm4KLSsgICAgICB0aGUgaW5kZXggb2YgdGhlIG5hbWVkIHN1YnN0cmluZyBbbmFt ZV0gaW4gcmVndWxhciBleHByZXNzaW9uIFtyZXhdLiBUaGlzCi0rICAgICAgaW5kZXggY2FuIHRo ZW4gYmUgdXNlZCB3aXRoIFtnZXRfc3Vic3RyaW5nXS4KLSsKLSsgICAgQHJhaXNlIEludmFsaWRf YXJnIGlmIHRoZXJlIGlzIG5vIHN1Y2ggbmFtZWQgc3Vic3RyaW5nLiAqKQotKwotKygqIHZhbCBn ZXRfbWF0Y2hfbGltaXQgOiByZWdleHAgLT4gaW50IG9wdGlvbiAqKQotKygqKiBbZ2V0X21hdGNo X2xpbWl0IHJleF0KLSsKLSsgICAgQHJldHVybiBzb21lIG1hdGNoIGxpbWl0IG9mIHJlZ3VsYXIg ZXhwcmVzc2lvbiBbcmV4XSBvciBbTm9uZV0uICopCi0rCi0rKCogdmFsIGdldF9kZXB0aF9saW1p dCA6IHJlZ2V4cCAtPiBpbnQgb3B0aW9uICopCi0rKCoqIFtnZXRfZGVwdGhfbGltaXQgcmV4XQot KwotKyAgICBAcmV0dXJuIHNvbWUgZGVwdGggbGltaXQgb2YgcmVndWxhciBleHByZXNzaW9uIFty ZXhdIG9yIFtOb25lXS4gKikKLSsKLSsoKiogezEgQ29tcGlsYXRpb24gb2YgcGF0dGVybnN9ICop Ci0rCi0rdHlwZSBjaHRhYmxlcwotKygqKiBBbHRlcm5hdGl2ZSBzZXQgb2YgY2hhciB0YWJsZXMg Zm9yIHBhdHRlcm4gbWF0Y2hpbmcgKikKLSsKLSt2YWwgbWFrZXRhYmxlcyA6IHVuaXQgLT4gY2h0 YWJsZXMKLSsoKiogR2VuZXJhdGVzIG5ldyBzZXQgb2YgY2hhciB0YWJsZXMgZm9yIHRoZSBjdXJy ZW50IGxvY2FsZS4gKikKLSsKLSt2YWwgcmVnZXhwIDoKLSsgID9saW1pdDoKLSsgICAgKCogP2pp dF9jb21waWxlIDogYm9vbCAtPiAqKQotKyAgICBpbnQgLT4KLSsgID9kZXB0aF9saW1pdDppbnQg LT4KLSsgID9pZmxhZ3M6aWNmbGFnIC0+Ci0rICA/ZmxhZ3M6Y2ZsYWcgbGlzdCAtPgotKyAgP2No dGFibGVzOmNodGFibGVzIC0+Ci0rICBzdHJpbmcgLT4KLSsgIHJlZ2V4cAotKygqKiBbcmVnZXhw ID9saW1pdCA/ZGVwdGhfbGltaXQgP2lmbGFncyA/ZmxhZ3MgP2NodGFibGVzIHBhdHRlcm5dIGNv bXBpbGVzCi0rICAgIFtwYXR0ZXJuXSB3aXRoIFtmbGFnc10gd2hlbiBnaXZlbiwgd2l0aCBbaWZs YWdzXSBvdGhlcndpc2UsIGFuZCB3aXRoIGNoYXIKLSsgICAgdGFibGVzIFtjaHRhYmxlc10uIElm IFtsaW1pdF0gaXMgc3BlY2lmaWVkLCB0aGlzIHNldHMgYSBsaW1pdCB0byB0aGUgYW1vdW50Ci0r ICAgIG9mIHJlY3Vyc2lvbiBhbmQgYmFja3RyYWNraW5nIChvbmx5IGxvd2VyIHRoYW4gdGhlIGJ1 aWx0aW4gZGVmYXVsdCEpLiBJZgotKyAgICB0aGlzIGxpbWl0IGlzIGV4Y2VlZGVkLCBbTWF0Y2hM aW1pdF0gd2lsbCBiZSByYWlzZWQgZHVyaW5nIG1hdGNoaW5nLgotKwotKyAgICBAcGFyYW0gbGlt aXQgZGVmYXVsdCA9IG5vIGV4dHJhIGxpbWl0IG90aGVyIHRoYW4gZGVmYXVsdAotKyAgICBAcGFy YW0gZGVwdGhfbGltaXQgZGVmYXVsdCA9IG5vIGV4dHJhIGRlcHRoX2xpbWl0IG90aGVyIHRoYW4g ZGVmYXVsdAotKyAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAg ICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIGNodGFibGVzIGRl ZmF1bHQgPSBidWlsdGluIGNoYXIgdGFibGVzCi0rCi0rICAgIEByZXR1cm4gdGhlIHJlZ3VsYXIg ZXhwcmVzc2lvbi4KLSsKLSsgICAgRm9yIGRldGFpbGVkIGRvY3VtZW50YXRpb24gb24gaG93IHlv dSBjYW4gc3BlY2lmeSBQRVJMLXN0eWxlIHJlZ3VsYXIKLSsgICAgZXhwcmVzc2lvbnMgKD0gcGF0 dGVybnMpLCBwbGVhc2UgY29uc3VsdCB0aGUgUENSRTItZG9jdW1lbnRhdGlvbiAoIm1hbgotKyAg ICBwY3JlMnBhdHRlcm4iKSBvciBQRVJMLW1hbnVhbHMuCi0rICAgIEBzZWUgPGh0dHA6Ly93d3cu cGVybC5jb20+IHd3dy5wZXJsLmNvbSAqKQotKwotK3ZhbCByZWdleHBfb3IgOgotKyAgP2xpbWl0 OgotKyAgICAoKiA/aml0X2NvbXBpbGUgOiBib29sIC0+ICopCi0rICAgIGludCAtPgotKyAgP2Rl cHRoX2xpbWl0OmludCAtPgotKyAgP2lmbGFnczppY2ZsYWcgLT4KLSsgID9mbGFnczpjZmxhZyBs aXN0IC0+Ci0rICA/Y2h0YWJsZXM6Y2h0YWJsZXMgLT4KLSsgIHN0cmluZyBsaXN0IC0+Ci0rICBy ZWdleHAKLSsoKiogW3JlZ2V4cF9vciA/bGltaXQgP2RlcHRoX2xpbWl0ID9pZmxhZ3MgP2ZsYWdz ID9jaHRhYmxlcyBwYXR0ZXJuc10gbGlrZQotKyAgICB7IXZhbC1yZWdleHB9LCBidXQgY29tYmlu ZXMgW3BhdHRlcm5zXSBhcyBhbHRlcm5hdGl2ZXMgKG9yLXBhdHRlcm5zKSBpbnRvCi0rICAgIG9u ZSByZWd1bGFyIGV4cHJlc3Npb24uICopCi0rCi0rdmFsIHF1b3RlIDogc3RyaW5nIC0+IHN0cmlu ZwotKygqKiBbcXVvdGUgc3RyXQotKwotKyAgICBAcmV0dXJuIHRoZSBxdW90ZWQgc3RyaW5nIG9m IFtzdHJdLiAqKQotKwotKygqKiB7MSBTdWJwYXR0ZXJuIGV4dHJhY3Rpb259ICopCi0rCi0rdHlw ZSBzdWJzdHJpbmdzCi0rKCoqIEluZm9ybWF0aW9uIG9uIHN1YnN0cmluZ3MgYWZ0ZXIgcGF0dGVy biBtYXRjaGluZyAqKQotKwotK3ZhbCBnZXRfc3ViamVjdCA6IHN1YnN0cmluZ3MgLT4gc3RyaW5n Ci0rKCoqIFtnZXRfc3ViamVjdCBzdWJzdHJpbmdzXQotKwotKyAgICBAcmV0dXJuIHRoZSBzdWJq ZWN0IHN0cmluZyBvZiBbc3Vic3RyaW5nc10uICopCi0rCi0rdmFsIG51bV9vZl9zdWJzIDogc3Vi c3RyaW5ncyAtPiBpbnQKLSsoKiogW251bV9vZl9zdWJzIHN1YnN0cmluZ3NdCi0rCi0rICAgIEBy ZXR1cm4gbnVtYmVyIG9mIHN0cmluZ3MgaW4gW3N1YnN0cmluZ3NdICh3aG9sZSBtYXRjaCBpbmNs dXNpdmUpLiAqKQotKwotK3ZhbCBnZXRfc3Vic3RyaW5nIDogc3Vic3RyaW5ncyAtPiBpbnQgLT4g c3RyaW5nCi0rKCoqIFtnZXRfc3Vic3RyaW5nIHN1YnN0cmluZ3Mgbl0KLSsKLSsgICAgQHJldHVy biB0aGUgW25ddGggc3Vic3RyaW5nICgwIGlzIHdob2xlIG1hdGNoKSBvZiBbc3Vic3RyaW5nc10u Ci0rCi0rICAgIEByYWlzZSBJbnZhbGlkX2FyZ3VtZW50Ci0rICAgICAgaWYgW25dIGlzIG5vdCBp biB0aGUgcmFuZ2Ugb2YgdGhlIG51bWJlciBvZiBzdWJzdHJpbmdzLgotKyAgICBAcmFpc2UgTm90 X2ZvdW5kCi0rICAgICAgaWYgdGhlIGNvcnJlc3BvbmRpbmcgc3VicGF0dGVybiBkaWQgbm90IGNh cHR1cmUgYSBzdWJzdHJpbmcuICopCi0rCi0rdmFsIGdldF9zdWJzdHJpbmdfb2ZzIDogc3Vic3Ry aW5ncyAtPiBpbnQgLT4gaW50ICogaW50Ci0rKCoqIFtnZXRfc3Vic3RyaW5nX29mcyBzdWJzdHJp bmdzIG5dCi0rCi0rICAgIEByZXR1cm4KLSsgICAgICB0aGUgb2Zmc2V0IHR1cGxlIG9mIHRoZSBb bl10aCBzdWJzdHJpbmcgb2YgW3N1YnN0cmluZ3NdICgwIGlzIHdob2xlCi0rICAgICAgbWF0Y2gp LgotKwotKyAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudAotKyAgICAgIGlmIFtuXSBpcyBub3Qg aW4gdGhlIHJhbmdlIG9mIHRoZSBudW1iZXIgb2Ygc3Vic3RyaW5ncy4KLSsgICAgQHJhaXNlIE5v dF9mb3VuZAotKyAgICAgIGlmIHRoZSBjb3JyZXNwb25kaW5nIHN1YnBhdHRlcm4gZGlkIG5vdCBj YXB0dXJlIGEgc3Vic3RyaW5nLiAqKQotKwotK3ZhbCBnZXRfc3Vic3RyaW5ncyA6ID9mdWxsX21h dGNoOmJvb2wgLT4gc3Vic3RyaW5ncyAtPiBzdHJpbmcgYXJyYXkKLSsoKiogW2dldF9zdWJzdHJp bmdzID9mdWxsX21hdGNoIHN1YnN0cmluZ3NdCi0rCi0rICAgIEByZXR1cm4KLSsgICAgICB0aGUg YXJyYXkgb2Ygc3Vic3RyaW5ncyBpbiBbc3Vic3RyaW5nc10uIEl0IGluY2x1ZGVzIHRoZSBmdWxs IG1hdGNoIGF0Ci0rICAgICAgaW5kZXggMCB3aGVuIFtmdWxsX21hdGNoXSBpcyBbdHJ1ZV0sIHRo ZSBjYXB0dXJlZCBzdWJzdHJpbmdzIG9ubHkgd2hlbiBpdAotKyAgICAgIGlzIFtmYWxzZV0uIElm IGEgc3VicGF0dGVybiBkaWQgbm90IGNhcHR1cmUgYSBzdWJzdHJpbmcsIHRoZSBlbXB0eSBzdHJp bmcKLSsgICAgICBpcyByZXR1cm5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGlvbiBpbnN0 ZWFkLgotKwotKyAgICBAcGFyYW0gZnVsbF9tYXRjaCBkZWZhdWx0ID0gdHJ1ZSAqKQotKwotK3Zh bCBnZXRfb3B0X3N1YnN0cmluZ3MgOiA/ZnVsbF9tYXRjaDpib29sIC0+IHN1YnN0cmluZ3MgLT4g c3RyaW5nIG9wdGlvbiBhcnJheQotKygqKiBbZ2V0X29wdF9zdWJzdHJpbmdzID9mdWxsX21hdGNo IHN1YnN0cmluZ3NdCi0rCi0rICAgIEByZXR1cm4KLSsgICAgICB0aGUgYXJyYXkgb2Ygb3B0aW9u YWwgc3Vic3RyaW5ncyBpbiBbc3Vic3RyaW5nc10uIEl0IGluY2x1ZGVzCi0rICAgICAgW1NvbWUg ZnVsbF9tYXRjaF9zdHJdIGF0IGluZGV4IDAgd2hlbiBbZnVsbF9tYXRjaF0gaXMgW3RydWVdLAot KyAgICAgIFtTb21lIGNhcHR1cmVkX3N1YnN0cmluZ3NdIG9ubHkgd2hlbiBpdCBpcyBbZmFsc2Vd LiBJZiBhIHN1YnBhdHRlcm4gZGlkCi0rICAgICAgbm90IGNhcHR1cmUgYSBzdWJzdHJpbmcsIFtO b25lXSBpcyByZXR1cm5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGlvbgotKyAgICAgIGlu c3RlYWQuCi0rCi0rICAgIEBwYXJhbSBmdWxsX21hdGNoIGRlZmF1bHQgPSB0cnVlICopCi0rCi0r dmFsIGdldF9uYW1lZF9zdWJzdHJpbmcgOiByZWdleHAgLT4gc3RyaW5nIC0+IHN1YnN0cmluZ3Mg LT4gc3RyaW5nCi0rKCoqIFtnZXRfbmFtZWRfc3Vic3RyaW5nIHJleCBuYW1lIHN1YnN0cmluZ3Nd Ci0rCi0rICAgIEByZXR1cm4KLSsgICAgICB0aGUgbmFtZWQgc3Vic3RyaW5nIFtuYW1lXSBpbiBy ZWd1bGFyIGV4cHJlc3Npb24gW3JleF0gYW5kIFtzdWJzdHJpbmdzXS4KLSsKLSsgICAgQHJhaXNl IEludmFsaWRfYXJndW1lbnQgaWYgdGhlcmUgaXMgbm8gc3VjaCBuYW1lZCBzdWJzdHJpbmcuCi0r ICAgIEByYWlzZSBOb3RfZm91bmQKLSsgICAgICBpZiB0aGUgY29ycmVzcG9uZGluZyBzdWJwYXR0 ZXJuIGRpZCBub3QgY2FwdHVyZSBhIHN1YnN0cmluZy4gKikKLSsKLSt2YWwgZ2V0X25hbWVkX3N1 YnN0cmluZ19vZnMgOiByZWdleHAgLT4gc3RyaW5nIC0+IHN1YnN0cmluZ3MgLT4gaW50ICogaW50 Ci0rKCoqIFtnZXRfbmFtZWRfc3Vic3RyaW5nX29mcyByZXggbmFtZSBzdWJzdHJpbmdzXQotKwot KyAgICBAcmV0dXJuCi0rICAgICAgdGhlIG9mZnNldCB0dXBsZSBvZiB0aGUgbmFtZWQgc3Vic3Ry aW5nIFtuYW1lXSBpbiByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0KLSsgICAgICBhbmQgW3N1YnN0 cmluZ3NdLgotKwotKyAgICBAcmFpc2UgSW52YWxpZF9hcmd1bWVudCBpZiB0aGVyZSBpcyBubyBz dWNoIG5hbWVkIHN1YnN0cmluZy4KLSsgICAgQHJhaXNlIE5vdF9mb3VuZAotKyAgICAgIGlmIHRo ZSBjb3JyZXNwb25kaW5nIHN1YnBhdHRlcm4gZGlkIG5vdCBjYXB0dXJlIGEgc3Vic3RyaW5nLiAq KQotKwotKygqKiB7MSBDYWxsb3V0c30gKikKLSsKLSt0eXBlIGNhbGxvdXRfZGF0YSA9IHsKLSsg IGNhbGxvdXRfbnVtYmVyIDogaW50OyAgKCoqIENhbGxvdXQgbnVtYmVyICopCi0rICBzdWJzdHJp bmdzIDogc3Vic3RyaW5nczsgICgqKiBTdWJzdHJpbmdzIG1hdGNoZWQgc28gZmFyICopCi0rICBz dGFydF9tYXRjaCA6IGludDsgICgqKiBTdWJqZWN0IHN0YXJ0IG9mZnNldCBvZiBjdXJyZW50IG1h dGNoIGF0dGVtcHQgKikKLSsgIGN1cnJlbnRfcG9zaXRpb24gOiBpbnQ7ICAoKiogU3ViamVjdCBv ZmZzZXQgb2YgY3VycmVudCBtYXRjaCBwb2ludGVyICopCi0rICBjYXB0dXJlX3RvcCA6IGludDsg ICgqKiBOdW1iZXIgb2YgdGhlIGhpZ2hlc3QgY2FwdHVyZWQgc3Vic3RyaW5nIHNvIGZhciAqKQot KyAgY2FwdHVyZV9sYXN0IDogaW50OyAgKCoqIE51bWJlciBvZiB0aGUgbW9zdCByZWNlbnRseSBj YXB0dXJlZCBzdWJzdHJpbmcgKikKLSsgIHBhdHRlcm5fcG9zaXRpb24gOiBpbnQ7ICAoKiogT2Zm c2V0IG9mIG5leHQgbWF0Y2ggaXRlbSBpbiBwYXR0ZXJuIHN0cmluZyAqKQotKyAgbmV4dF9pdGVt X2xlbmd0aCA6IGludDsgICgqKiBMZW5ndGggb2YgbmV4dCBtYXRjaCBpdGVtIGluIHBhdHRlcm4g c3RyaW5nICopCi0rfQotKwotKygqKiBUeXBlIG9mIGNhbGxvdXQgZnVuY3Rpb25zICopCi0rdHlw ZSBjYWxsb3V0ID0gY2FsbG91dF9kYXRhIC0+IHVuaXQKLSsoKiogQ2FsbG91dHMgYXJlIHJlZmVy cmVkIHRvIGluIHBhdHRlcm5zIGFzICIoP0NuKSIgd2hlcmUgIm4iIGlzIGEKLSsgICAgW2NhbGxv dXRfbnVtYmVyXSByYW5naW5nIGZyb20gMCB0byAyNTUuIFN1YnN0cmluZ3MgY2FwdHVyZWQgc28g ZmFyIGFyZQotKyAgICBhY2Nlc3NpYmxlIGFzIHVzdWFsIHZpYSBbc3Vic3RyaW5nc10uIFlvdSB3 aWxsIGhhdmUgdG8gY29uc2lkZXIKLSsgICAgW2NhcHR1cmVfdG9wXSBhbmQgW2NhcHR1cmVfbGFz dF0gdG8ga25vdyBhYm91dCB0aGUgY3VycmVudCBzdGF0ZSBvZiB2YWxpZAotKyAgICBzdWJzdHJp bmdzLgotKwotKyAgICBCeSByYWlzaW5nIGV4Y2VwdGlvbiBbQmFja3RyYWNrXSB3aXRoaW4gYSBj YWxsb3V0IGZ1bmN0aW9uLCB0aGUgdXNlciBjYW4KLSsgICAgZm9yY2UgdGhlIHBhdHRlcm4gbWF0 Y2hpbmcgZW5naW5lIHRvIGJhY2t0cmFjayB0byBvdGhlciBwb3NzaWJsZSBzb2x1dGlvbnMuCi0r ICAgIE90aGVyIGV4Y2VwdGlvbnMgd2lsbCB0ZXJtaW5hdGUgbWF0Y2hpbmcgaW1tZWRpYXRlbHkg YW5kIHJldHVybiBjb250cm9sIHRvCi0rICAgIE9DYW1sLiAqKQotKwotKygqKiB7MSBNYXRjaGlu ZyBvZiBwYXR0ZXJucyBhbmQgc3VicGF0dGVybiBleHRyYWN0aW9ufSAqKQotKwotK3ZhbCBwY3Jl Ml9tYXRjaCA6Ci0rICA/aWZsYWdzOmlyZmxhZyAtPgotKyAgP2ZsYWdzOnJmbGFnIGxpc3QgLT4K LSsgID9yZXg6cmVnZXhwIC0+Ci0rICA/cGF0OnN0cmluZyAtPgotKyAgP3BvczppbnQgLT4KLSsg ID9jYWxsb3V0OmNhbGxvdXQgLT4KLSsgIHN0cmluZyAtPgotKyAgaW50IGFycmF5Ci0rKCoqIFtw Y3JlMl9tYXRjaCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCBzdWJqXQot KwotKyAgICBAcmV0dXJuCi0rICAgICAgYW4gYXJyYXkgb2Ygb2Zmc2V0cyB0aGF0IGRlc2NyaWJl IHRoZSBwb3NpdGlvbiBvZiBtYXRjaGVkIHN1YnBhdHRlcm5zIGluCi0rICAgICAgdGhlIHN0cmlu ZyBbc3Vial0gc3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10gd2l0aCBwYXR0ZXJuIFtwYXRdIHdo ZW4KLSsgICAgICBnaXZlbiwgcmVndWxhciBleHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZS4gVGhl IGFycmF5IGFsc28gY29udGFpbnMKLSsgICAgICBhZGRpdGlvbmFsIHdvcmtzcGFjZSBuZWVkZWQg YnkgdGhlIG1hdGNoIGVuZ2luZS4gVXNlcyBbZmxhZ3NdIHdoZW4gZ2l2ZW4sCi0rICAgICAgdGhl IHByZWNvbXBpbGVkIFtpZmxhZ3NdIG90aGVyd2lzZS4gQ2FsbG91dHMgYXJlIGhhbmRsZWQgYnkg W2NhbGxvdXRdLgotKwotKyAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFn cwotKyAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHJleCBk ZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0rICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGln bm9yZWQKLSsgICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAotKyAgICBAcGFyYW0gY2FsbG91dCBk ZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzCi0rCi0rICAgIEByYWlzZSBOb3RfZm91bmQgaWYgcGF0 dGVybiBkb2VzIG5vdCBtYXRjaC4gKikKLSsKLSt2YWwgcGNyZTJfZGZhX21hdGNoIDoKLSsgID9p ZmxhZ3M6aXJmbGFnIC0+Ci0rICA/ZmxhZ3M6cmZsYWcgbGlzdCAtPgotKyAgP3JleDpyZWdleHAg LT4KLSsgID9wYXQ6c3RyaW5nIC0+Ci0rICA/cG9zOmludCAtPgotKyAgP2NhbGxvdXQ6Y2FsbG91 dCAtPgotKyAgP3dvcmtzcGFjZTppbnQgYXJyYXkgLT4KLSsgIHN0cmluZyAtPgotKyAgaW50IGFy cmF5Ci0rKCoqIFtwY3JlMl9kZmFfbWF0Y2ggP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3Mg P2NhbGxvdXQgP3dvcmtzcGFjZSBzdWJqXQotKyAgICBpbnZva2VzIHRoZSAiYWx0ZXJuYXRpdmUi IERGQSBtYXRjaGluZyBmdW5jdGlvbi4KLSsKLSsgICAgQHJldHVybgotKyAgICAgIGFuIGFycmF5 IG9mIG9mZnNldHMgdGhhdCBkZXNjcmliZSB0aGUgcG9zaXRpb24gb2YgbWF0Y2hlZCBzdWJwYXR0 ZXJucyBpbgotKyAgICAgIHRoZSBzdHJpbmcgW3N1YmpdIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIFtw b3NdIHdpdGggcGF0dGVybiBbcGF0XSB3aGVuCi0rICAgICAgZ2l2ZW4sIHJlZ3VsYXIgZXhwcmVz c2lvbiBbcmV4XSBvdGhlcndpc2UuIFRoZSBhcnJheSBhbHNvIGNvbnRhaW5zCi0rICAgICAgYWRk aXRpb25hbCB3b3Jrc3BhY2UgbmVlZGVkIGJ5IHRoZSBtYXRjaCBlbmdpbmUuIFVzZXMgW2ZsYWdz XSB3aGVuIGdpdmVuLAotKyAgICAgIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBvdGhlcndpc2Uu IFJlcXVpcmVzIGEgc3VmZmljaWVudGx5LWxhcmdlCi0rICAgICAgW3dvcmtzcGFjZV0gYXJyYXku IENhbGxvdXRzIGFyZSBoYW5kbGVkIGJ5IFtjYWxsb3V0XS4KLSsKLSsgICAgTm90ZSB0aGF0IHRo ZSByZXR1cm5lZCBhcnJheSBvZiBvZmZzZXRzIGFyZSBxdWl0ZSBkaWZmZXJlbnQgZnJvbSB0aG9z ZQotKyAgICByZXR1cm5lZCBieSB7IXBjcmUyX21hdGNofSBldCBhbC4gVGhlIG1vdGl2YXRpbmcg dXNlIGNhc2UgZm9yIHRoZSBERkEgbWF0Y2gKLSsgICAgZnVuY3Rpb24gaXMgdG8gYmUgYWJsZSB0 byByZXN0YXJ0IGEgcGFydGlhbCBtYXRjaCB3aXRoIE4gYWRkaXRpb25hbCBpbnB1dAotKyAgICBz ZWdtZW50cy4gQmVjYXVzZSB0aGUgbWF0Y2ggZnVuY3Rpb24vd29ya3NwYWNlIGRvZXMgbm90IHN0 b3JlIHNlZ21lbnRzIHNlZW4KLSsgICAgcHJldmlvdXNseSwgdGhlIG9mZnNldHMgcmV0dXJuZWQg d2hlbiBhIG1hdGNoIGNvbXBsZXRlcyB3aWxsIHJlZmVyIG9ubHkgdG8KLSsgICAgdGhlIG1hdGNo aW5nIHBvcnRpb24gb2YgdGhlIGxhc3Qgc3ViamVjdCBzdHJpbmcgcHJvdmlkZWQuIFRodXMsIHJl dHVybmVkCi0rICAgIG9mZnNldHMgZnJvbSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgdXNl ZCB0byBzdXBwb3J0IGV4dHJhY3RpbmcgY2FwdHVyZWQKLSsgICAgc3VibWF0Y2hlcy4gSWYgeW91 IG5lZWQgdG8gY2FwdHVyZSBzdWJtYXRjaGVzIGZyb20gYSBzZXJpZXMgb2YgaW5wdXRzCi0rICAg IGluY3JlbWVudGFsbHkgbWF0Y2hlZCB3aXRoIHRoaXMgZnVuY3Rpb24sIHlvdSdsbCBuZWVkIHRv IGNvbmNhdGVuYXRlIHRob3NlCi0rICAgIGlucHV0cyB0aGF0IHlpZWxkIGEgc3VjY2Vzc2Z1bCBt YXRjaCBoZXJlIGFuZCByZS1ydW4gdGhlIHNhbWUgcGF0dGVybgotKyAgICBhZ2FpbnN0IHRoYXQg c2luZ2xlIHN1YmplY3Qgc3RyaW5nLgotKwotKyAgICBBc2lkZSBmcm9tIGFuIGFic29sdXRlIG1p bmltdW0gb2YgWzIwXSwgUENSRSBkb2VzIG5vdCBwcm92aWRlIGFueSBndWlkYW5jZQotKyAgICBy ZWdhcmRpbmcgdGhlIHNpemUgb2Ygd29ya3NwYWNlIGFycmF5IG5lZWRlZCBieSBhbnkgZ2l2ZW4g cGF0dGVybi4KLSsgICAgVGhlcmVmb3JlLCBpdCBpcyB3aXNlIHRvIGFwcHJvcHJpYXRlbHkgaGFu ZGxlIHRoZSBwb3NzaWJsZSBbV29ya3NwYWNlU2l6ZV0KLSsgICAgZXJyb3IuIElmIHJhaXNlZCwg eW91IGNhbiBhbGxvY2F0ZSBhIG5ldywgbGFyZ2VyIHdvcmtzcGFjZSBhcnJheSBhbmQgYmVnaW4K LSsgICAgdGhlIERGQSBtYXRjaGluZyBwcm9jZXNzIGFnYWluLgotKwotKyAgICBAcGFyYW0gaWZs YWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9 IGlnbm9yZWQKLSsgICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0r ICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHBvcyBkZWZhdWx0 ID0gMAotKyAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzCi0rICAg IEBwYXJhbSB3b3Jrc3BhY2UgZGVmYXVsdCA9IGZyZXNoIGFycmF5IG9mIGxlbmd0aCBbMjBdCi0r Ci0rICAgIEByYWlzZSBOb3RfZm91bmQgaWYgdGhlIHBhdHRlcm4gbWF0Y2ggaGFzIGZhaWxlZAot KyAgICBAcmFpc2UgRXJyb3IKLSsgICAgICBQYXJ0aWFsIGlmIHRoZSBwYXR0ZXJuIGhhcyBtYXRj aGVkIHBhcnRpYWxseTsgYSBzdWJzZXF1ZW50IGV4ZWMgY2FsbCB3aXRoCi0rICAgICAgdGhlIHNh bWUgcGF0dGVybiBhbmQgd29ya3NwYWNlIChhZGRpbmcgdGhlIFtERkFfUkVTVEFSVF0gZmxhZykg YmUgbWFkZSB0bwotKyAgICAgIGVpdGhlciBmdXJ0aGVyIGFkdmFuY2Ugb3IgY29tcGxldGUgdGhl IHBhcnRpYWwgbWF0Y2guCi0rICAgIEByYWlzZSBFcnJvcgotKyAgICAgIFdvcmtzcGFjZVNpemUg aWYgdGhlIHdvcmtzcGFjZSBhcnJheSBpcyB0b28gc21hbGwgdG8gYWNjb21tb2RhdGUgdGhlIERG QQotKyAgICAgIHN0YXRlIHJlcXVpcmVkIGJ5IHRoZSBzdXBwbGllZCBwYXR0ZXJuICopCi0rCi0r dmFsIGV4ZWMgOgotKyAgP2lmbGFnczppcmZsYWcgLT4KLSsgID9mbGFnczpyZmxhZyBsaXN0IC0+ Ci0rICA/cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJpbmcgLT4KLSsgID9wb3M6aW50IC0+Ci0r ICA/Y2FsbG91dDpjYWxsb3V0IC0+Ci0rICBzdHJpbmcgLT4KLSsgIHN1YnN0cmluZ3MKLSsoKiog W2V4ZWMgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2NhbGxvdXQgc3Vial0KLSsKLSsg ICAgQHJldHVybgotKyAgICAgIHN1YnN0cmluZyBpbmZvcm1hdGlvbiBvbiBzdHJpbmcgW3N1Ympd IHN0YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdIHdpdGgKLSsgICAgICBwYXR0ZXJuIFtwYXRdIHdo ZW4gZ2l2ZW4sIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UuIFVzZXMgW2ZsYWdz XQotKyAgICAgIHdoZW4gZ2l2ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBvdGhlcndpc2Uu IENhbGxvdXRzIGFyZSBoYW5kbGVkIGJ5Ci0rICAgICAgW2NhbGxvdXRdLgotKwotKyAgICBAcGFy YW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAgICBAcGFyYW0gZmxhZ3MgZGVm YXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNw YWNlCi0rICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHBvcyBk ZWZhdWx0ID0gMAotKyAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRz Ci0rCi0rICAgIEByYWlzZSBOb3RfZm91bmQgaWYgcGF0dGVybiBkb2VzIG5vdCBtYXRjaC4gKikK LSsKLSt2YWwgZXhlY19hbGwgOgotKyAgP2lmbGFnczppcmZsYWcgLT4KLSsgID9mbGFnczpyZmxh ZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJpbmcgLT4KLSsgID9wb3M6 aW50IC0+Ci0rICA/Y2FsbG91dDpjYWxsb3V0IC0+Ci0rICBzdHJpbmcgLT4KLSsgIHN1YnN0cmlu Z3MgYXJyYXkKLSsoKiogW2V4ZWNfYWxsID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9j YWxsb3V0IHN1YmpdCi0rCi0rICAgIEByZXR1cm4KLSsgICAgICBhbiBhcnJheSBvZiBzdWJzdHJp bmcgaW5mb3JtYXRpb24gb2YgYWxsIG1hdGNoaW5nIHN1YnN0cmluZ3MgaW4gc3RyaW5nCi0rICAg ICAgW3N1YmpdIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdIHdpdGggcGF0dGVybiBbcGF0XSB3 aGVuIGdpdmVuLCByZWd1bGFyCi0rICAgICAgZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UuIFVz ZXMgW2ZsYWdzXSB3aGVuIGdpdmVuLCB0aGUgcHJlY29tcGlsZWQKLSsgICAgICBbaWZsYWdzXSBv dGhlcndpc2UuIENhbGxvdXRzIGFyZSBoYW5kbGVkIGJ5IFtjYWxsb3V0XS4KLSsKLSsgICAgQHBh cmFtIGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLSsgICAgQHBhcmFtIGZsYWdzIGRl ZmF1bHQgPSBpZ25vcmVkCi0rICAgIEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVz cGFjZQotKyAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0rICAgIEBwYXJhbSBwb3Mg ZGVmYXVsdCA9IDAKLSsgICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0 cwotKwotKyAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIHBhdHRlcm4gZG9lcyBub3QgbWF0Y2guICop Ci0rCi0rdmFsIG5leHRfbWF0Y2ggOgotKyAgP2lmbGFnczppcmZsYWcgLT4KLSsgID9mbGFnczpy ZmxhZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJpbmcgLT4KLSsgID9w b3M6aW50IC0+Ci0rICA/Y2FsbG91dDpjYWxsb3V0IC0+Ci0rICBzdWJzdHJpbmdzIC0+Ci0rICBz dWJzdHJpbmdzCi0rKCoqIFtuZXh0X21hdGNoID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9z ID9jYWxsb3V0IHN1YnN0cnNdCi0rCi0rICAgIEByZXR1cm4KLSsgICAgICBzdWJzdHJpbmcgaW5m b3JtYXRpb24gb24gdGhlIG1hdGNoIHRoYXQgZm9sbG93cyBvbiB0aGUgbGFzdCBtYXRjaCBkZW5v dGVkCi0rICAgICAgYnkgW3N1YnN0cnNdLCBqdW1waW5nIG92ZXIgW3Bvc10gY2hhcmFjdGVycyAo YWxzbyBiYWNrd2FyZHMhKSwgdXNpbmcKLSsgICAgICBwYXR0ZXJuIFtwYXRdIHdoZW4gZ2l2ZW4s IHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UuIFVzZXMgW2ZsYWdzXQotKyAgICAg IHdoZW4gZ2l2ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBvdGhlcndpc2UuIENhbGxvdXRz IGFyZSBoYW5kbGVkIGJ5Ci0rICAgICAgW2NhbGxvdXRdLgotKwotKyAgICBAcGFyYW0gaWZsYWdz IGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGln bm9yZWQKLSsgICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0rICAg IEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0g MAotKyAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzCi0rCi0rICAg IEByYWlzZSBOb3RfZm91bmQgaWYgcGF0dGVybiBkb2VzIG5vdCBtYXRjaC4KLSsgICAgQHJhaXNl IEludmFsaWRfYXJnCi0rICAgICAgaWYgW3Bvc10gbGV0IG1hdGNoaW5nIHN0YXJ0IG91dHNpZGUg b2YgdGhlIHN1YmplY3Qgc3RyaW5nLiAqKQotKwotK3ZhbCBleHRyYWN0IDoKLSsgID9pZmxhZ3M6 aXJmbGFnIC0+Ci0rICA/ZmxhZ3M6cmZsYWcgbGlzdCAtPgotKyAgP3JleDpyZWdleHAgLT4KLSsg ID9wYXQ6c3RyaW5nIC0+Ci0rICA/cG9zOmludCAtPgotKyAgP2Z1bGxfbWF0Y2g6Ym9vbCAtPgot KyAgP2NhbGxvdXQ6Y2FsbG91dCAtPgotKyAgc3RyaW5nIC0+Ci0rICBzdHJpbmcgYXJyYXkKLSso KiogW2V4dHJhY3QgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2Z1bGxfbWF0Y2ggP2Nh bGxvdXQgc3Vial0KLSsKLSsgICAgQHJldHVybgotKyAgICAgIHRoZSBhcnJheSBvZiBzdWJzdHJp bmdzIHRoYXQgbWF0Y2ggW3N1YmpdIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdLAotKyAgICAg IHVzaW5nIHBhdHRlcm4gW3BhdF0gd2hlbiBnaXZlbiwgcmVndWxhciBleHByZXNzaW9uIFtyZXhd IG90aGVyd2lzZS4gVXNlcwotKyAgICAgIFtmbGFnc10gd2hlbiBnaXZlbiwgdGhlIHByZWNvbXBp bGVkIFtpZmxhZ3NdIG90aGVyd2lzZS4gSXQgaW5jbHVkZXMgdGhlCi0rICAgICAgZnVsbCBtYXRj aCBhdCBpbmRleCAwIHdoZW4gW2Z1bGxfbWF0Y2hdIGlzIFt0cnVlXSwgdGhlIGNhcHR1cmVkIHN1 YnN0cmluZ3MKLSsgICAgICBvbmx5IHdoZW4gaXQgaXMgW2ZhbHNlXS4gQ2FsbG91dHMgYXJlIGhh bmRsZWQgYnkgW2NhbGxvdXRdLiBJZiBhCi0rICAgICAgc3VicGF0dGVybiBkaWQgbm90IGNhcHR1 cmUgYSBzdWJzdHJpbmcsIHRoZSBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaW4KLSsgICAgICB0 aGUgY29ycmVzcG9uZGluZyBwb3NpdGlvbiBpbnN0ZWFkLgotKwotKyAgICBAcGFyYW0gaWZsYWdz IGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGln bm9yZWQKLSsgICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0rICAg IEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0g MAotKyAgICBAcGFyYW0gZnVsbF9tYXRjaCBkZWZhdWx0ID0gdHJ1ZQotKyAgICBAcGFyYW0gY2Fs bG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzCi0rCi0rICAgIEByYWlzZSBOb3RfZm91bmQg aWYgcGF0dGVybiBkb2VzIG5vdCBtYXRjaC4gKikKLSsKLSt2YWwgZXh0cmFjdF9vcHQgOgotKyAg P2lmbGFnczppcmZsYWcgLT4KLSsgID9mbGFnczpyZmxhZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4 cCAtPgotKyAgP3BhdDpzdHJpbmcgLT4KLSsgID9wb3M6aW50IC0+Ci0rICA/ZnVsbF9tYXRjaDpi b29sIC0+Ci0rICA/Y2FsbG91dDpjYWxsb3V0IC0+Ci0rICBzdHJpbmcgLT4KLSsgIHN0cmluZyBv cHRpb24gYXJyYXkKLSsoKiogW2V4dHJhY3Rfb3B0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/ cG9zID9mdWxsX21hdGNoID9jYWxsb3V0IHN1YmpdCi0rCi0rICAgIEByZXR1cm4KLSsgICAgICB0 aGUgYXJyYXkgb2Ygb3B0aW9uYWwgc3Vic3RyaW5ncyB0aGF0IG1hdGNoIFtzdWJqXSBzdGFydGlu ZyBhdCBwb3NpdGlvbgotKyAgICAgIFtwb3NdLCB1c2luZyBwYXR0ZXJuIFtwYXRdIHdoZW4gZ2l2 ZW4sIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UuCi0rICAgICAgVXNlcyBbZmxh Z3NdIHdoZW4gZ2l2ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBvdGhlcndpc2UuIEl0IGlu Y2x1ZGVzCi0rICAgICAgW1NvbWUgZnVsbF9tYXRjaF9zdHJdIGF0IGluZGV4IDAgd2hlbiBbZnVs bF9tYXRjaF0gaXMgW3RydWVdLAotKyAgICAgIFtTb21lIGNhcHR1cmVkLXN1YnN0cmluZ3NdIG9u bHkgd2hlbiBpdCBpcyBbZmFsc2VdLiBDYWxsb3V0cyBhcmUgaGFuZGxlZAotKyAgICAgIGJ5IFtj YWxsb3V0XS4gSWYgYSBzdWJwYXR0ZXJuIGRpZCBub3QgY2FwdHVyZSBhIHN1YnN0cmluZywgW05v bmVdIGlzCi0rICAgICAgcmV0dXJuZWQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpb24gaW5z dGVhZC4KLSsKLSsgICAgQHBhcmFtIGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLSsg ICAgQHBhcmFtIGZsYWdzIGRlZmF1bHQgPSBpZ25vcmVkCi0rICAgIEBwYXJhbSByZXggZGVmYXVs dCA9IG1hdGNoZXMgd2hpdGVzcGFjZQotKyAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVk Ci0rICAgIEBwYXJhbSBwb3MgZGVmYXVsdCA9IDAKLSsgICAgQHBhcmFtIGZ1bGxfbWF0Y2ggZGVm YXVsdCA9IHRydWUKLSsgICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0 cwotKwotKyAgICBAcmFpc2UgTm90X2ZvdW5kIGlmIHBhdHRlcm4gZG9lcyBub3QgbWF0Y2guICop Ci0rCi0rdmFsIGV4dHJhY3RfYWxsIDoKLSsgID9pZmxhZ3M6aXJmbGFnIC0+Ci0rICA/ZmxhZ3M6 cmZsYWcgbGlzdCAtPgotKyAgP3JleDpyZWdleHAgLT4KLSsgID9wYXQ6c3RyaW5nIC0+Ci0rICA/ cG9zOmludCAtPgotKyAgP2Z1bGxfbWF0Y2g6Ym9vbCAtPgotKyAgP2NhbGxvdXQ6Y2FsbG91dCAt PgotKyAgc3RyaW5nIC0+Ci0rICBzdHJpbmcgYXJyYXkgYXJyYXkKLSsoKiogW2V4dHJhY3RfYWxs ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9mdWxsX21hdGNoID9jYWxsb3V0IHN1Ympd Ci0rCi0rICAgIEByZXR1cm4KLSsgICAgICBhbiBhcnJheSBvZiBhcnJheXMgb2YgYWxsIG1hdGNo aW5nIHN1YnN0cmluZ3MgdGhhdCBtYXRjaCBbc3Vial0gc3RhcnRpbmcKLSsgICAgICBhdCBwb3Np dGlvbiBbcG9zXSwgdXNpbmcgcGF0dGVybiBbcGF0XSB3aGVuIGdpdmVuLCByZWd1bGFyIGV4cHJl c3Npb24KLSsgICAgICBbcmV4XSBvdGhlcndpc2UuIFVzZXMgW2ZsYWdzXSB3aGVuIGdpdmVuLCB0 aGUgcHJlY29tcGlsZWQgW2lmbGFnc10KLSsgICAgICBvdGhlcndpc2UuIEl0IGluY2x1ZGVzIHRo ZSBmdWxsIG1hdGNoIGF0IGluZGV4IDAgb2YgdGhlIGV4dHJhY3RlZCBzdHJpbmcKLSsgICAgICBh cnJheXMgd2hlbiBbZnVsbF9tYXRjaF0gaXMgW3RydWVdLCB0aGUgY2FwdHVyZWQgc3Vic3RyaW5n cyBvbmx5IHdoZW4gaXQKLSsgICAgICBpcyBbZmFsc2VdLiBDYWxsb3V0cyBhcmUgaGFuZGxlZCBi eSBbY2FsbG91dF0uCi0rCi0rICAgIEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZs YWdzCi0rICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcmV4 IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UKLSsgICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0g aWdub3JlZAotKyAgICBAcGFyYW0gcG9zIGRlZmF1bHQgPSAwCi0rICAgIEBwYXJhbSBmdWxsX21h dGNoIGRlZmF1bHQgPSB0cnVlCi0rICAgIEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUg Y2FsbG91dHMKLSsKLSsgICAgQHJhaXNlIE5vdF9mb3VuZCBpZiBwYXR0ZXJuIGRvZXMgbm90IG1h dGNoLiAqKQotKwotK3ZhbCBleHRyYWN0X2FsbF9vcHQgOgotKyAgP2lmbGFnczppcmZsYWcgLT4K LSsgID9mbGFnczpyZmxhZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJp bmcgLT4KLSsgID9wb3M6aW50IC0+Ci0rICA/ZnVsbF9tYXRjaDpib29sIC0+Ci0rICA/Y2FsbG91 dDpjYWxsb3V0IC0+Ci0rICBzdHJpbmcgLT4KLSsgIHN0cmluZyBvcHRpb24gYXJyYXkgYXJyYXkK LSsoKiogW2V4dHJhY3RfYWxsX29wdCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/ZnVs bF9tYXRjaCA/Y2FsbG91dCBzdWJqXQotKwotKyAgICBAcmV0dXJuCi0rICAgICAgYW4gYXJyYXkg b2YgYXJyYXlzIG9mIGFsbCBvcHRpb25hbCBtYXRjaGluZyBzdWJzdHJpbmdzIHRoYXQgbWF0Y2gg W3N1YmpdCi0rICAgICAgc3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10sIHVzaW5nIHBhdHRlcm4g W3BhdF0gd2hlbiBnaXZlbiwgcmVndWxhcgotKyAgICAgIGV4cHJlc3Npb24gW3JleF0gb3RoZXJ3 aXNlLiBVc2VzIFtmbGFnc10gd2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVkCi0rICAgICAgW2lm bGFnc10gb3RoZXJ3aXNlLiBJdCBpbmNsdWRlcyBbU29tZSBmdWxsX21hdGNoX3N0cl0gYXQgaW5k ZXggMCBvZiB0aGUKLSsgICAgICBleHRyYWN0ZWQgc3RyaW5nIGFycmF5cyB3aGVuIFtmdWxsX21h dGNoXSBpcyBbdHJ1ZV0sCi0rICAgICAgW1NvbWUgY2FwdHVyZWRfc3Vic3RyaW5nc10gb25seSB3 aGVuIGl0IGlzIFtmYWxzZV0uIENhbGxvdXRzIGFyZSBoYW5kbGVkCi0rICAgICAgYnkgW2NhbGxv dXRdLiBJZiBhIHN1YnBhdHRlcm4gZGlkIG5vdCBjYXB0dXJlIGEgc3Vic3RyaW5nLCBbTm9uZV0g aXMKLSsgICAgICByZXR1cm5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGlvbiBpbnN0ZWFk LgotKwotKyAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAgICBA cGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHJleCBkZWZhdWx0ID0g bWF0Y2hlcyB3aGl0ZXNwYWNlCi0rICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsg ICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAotKyAgICBAcGFyYW0gZnVsbF9tYXRjaCBkZWZhdWx0 ID0gdHJ1ZQotKyAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzCi0r Ci0rICAgIEByYWlzZSBOb3RfZm91bmQgaWYgcGF0dGVybiBkb2VzIG5vdCBtYXRjaC4gKikKLSsK LSt2YWwgcG1hdGNoIDoKLSsgID9pZmxhZ3M6aXJmbGFnIC0+Ci0rICA/ZmxhZ3M6cmZsYWcgbGlz dCAtPgotKyAgP3JleDpyZWdleHAgLT4KLSsgID9wYXQ6c3RyaW5nIC0+Ci0rICA/cG9zOmludCAt PgotKyAgP2NhbGxvdXQ6Y2FsbG91dCAtPgotKyAgc3RyaW5nIC0+Ci0rICBib29sCi0rKCoqIFtw bWF0Y2ggP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2NhbGxvdXQgc3Vial0KLSsKLSsg ICAgQHJldHVybgotKyAgICAgIFt0cnVlXSBpZiBbc3Vial0gaXMgbWF0Y2hlZCBieSBwYXR0ZXJu IFtwYXRdIHdoZW4gZ2l2ZW4sIHJlZ3VsYXIKLSsgICAgICBleHByZXNzaW9uIFtyZXhdIG90aGVy d2lzZSwgc3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10uIFVzZXMgW2ZsYWdzXSB3aGVuCi0rICAg ICAgZ2l2ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBvdGhlcndpc2UuIENhbGxvdXRzIGFy ZSBoYW5kbGVkIGJ5Ci0rICAgICAgW2NhbGxvdXRdLgotKwotKyAgICBAcGFyYW0gaWZsYWdzIGRl ZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9y ZWQKLSsgICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0rICAgIEBw YXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAot KyAgICBAcGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzICopCi0rCi0rKCoq IHsxIFN0cmluZyBzdWJzdGl0dXRpb259ICopCi0rCi0rdHlwZSBzdWJzdGl0dXRpb24KLSsoKiog SW5mb3JtYXRpb24gb24gc3Vic3RpdHV0aW9uIHBhdHRlcm5zICopCi0rCi0rdmFsIHN1YnN0IDog c3RyaW5nIC0+IHN1YnN0aXR1dGlvbgotKygqKiBbc3Vic3Qgc3RyXSBjb252ZXJ0cyB0aGUgc3Ry aW5nIFtzdHJdIHJlcHJlc2VudGluZyBhIHN1YnN0aXR1dGlvbiBwYXR0ZXJuIHRvCi0rICAgIHRo ZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbgotKwotKyAgICBUaGUgY29udGVudHMgb2YgdGhlIHN1 YnN0aXR1dGlvbiBzdHJpbmcgW3N0cl0gY2FuIGJlIG5vcm1hbCB0ZXh0IG1peGVkIHdpdGgKLSsg ICAgYW55IG9mIHRoZSBmb2xsb3dpbmcgKG1vc3RseSBhcyBpbiBQRVJMKToKLSsKLSsgICAgLSB7 ZSAkXFswLTlcXSt9IC0gYSAiJCIgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYW4gYXJiaXRyYXJ5 IG51bWJlci4gIiQwIgotKyAgICAgIHN0YW5kcyBmb3IgdGhlIG5hbWUgb2YgdGhlIGV4ZWN1dGFi bGUsIGFueSBvdGhlciBudW1iZXIgZm9yIHRoZSBuLXRoCi0rICAgICAgYmFja3JlZmVyZW5jZS4K LSsgICAgLSB7ZSAkJn0gLSB0aGUgd2hvbGUgbWF0Y2hlZCBwYXR0ZXJuCi0rICAgIC0ge2UgJGB9 IC0gdGhlIHRleHQgYmVmb3JlIHRoZSBtYXRjaAotKyAgICAtIHtlICQnfSAtIHRoZSB0ZXh0IGFm dGVyIHRoZSBtYXRjaAotKyAgICAtIHtlICQrfSAtIHRoZSBsYXN0IGdyb3VwIHRoYXQgbWF0Y2hl ZAotKyAgICAtIHtlICQkfSAtIGEgc2luZ2xlICIkIgotKyAgICAtIHtlICQhfSAtIGRlbGltaXRl ciB3aGljaCBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIHN1YnN0aXR1dGlvbi4gQ2FuIGJlIHVzZWQK LSsgICAgICB0byBwYXJ0ICIkWzAtOV0rIiBmcm9tIGFuIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBv dGhlciBudW1iZXIuICopCi0rCi0rdmFsIHJlcGxhY2UgOgotKyAgP2lmbGFnczppcmZsYWcgLT4K LSsgID9mbGFnczpyZmxhZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJp bmcgLT4KLSsgID9wb3M6aW50IC0+Ci0rICA/aXRlbXBsOnN1YnN0aXR1dGlvbiAtPgotKyAgP3Rl bXBsOnN0cmluZyAtPgotKyAgP2NhbGxvdXQ6Y2FsbG91dCAtPgotKyAgc3RyaW5nIC0+Ci0rICBz dHJpbmcKLSsoKiogW3JlcGxhY2UgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP2l0ZW1w bCA/dGVtcGwgP2NhbGxvdXQgc3Vial0KLSsgICAgcmVwbGFjZXMgYWxsIHN1YnN0cmluZ3Mgb2Yg W3N1YmpdIG1hdGNoaW5nIHBhdHRlcm4gW3BhdF0gd2hlbiBnaXZlbiwgcmVndWxhcgotKyAgICBl eHByZXNzaW9uIFtyZXhdIG90aGVyd2lzZSwgc3RhcnRpbmcgYXQgcG9zaXRpb24gW3Bvc10gd2l0 aCB0aGUgc3Vic3RpdHV0aW9uCi0rICAgIHN0cmluZyBbdGVtcGxdIHdoZW4gZ2l2ZW4sIFtpdGVt cGxdIG90aGVyd2lzZS4gVXNlcyBbZmxhZ3NdIHdoZW4gZ2l2ZW4sIHRoZQotKyAgICBwcmVjb21w aWxlZCBbaWZsYWdzXSBvdGhlcndpc2UuIENhbGxvdXRzIGFyZSBoYW5kbGVkIGJ5IFtjYWxsb3V0 XS4KLSsKLSsgICAgQHBhcmFtIGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLSsgICAg QHBhcmFtIGZsYWdzIGRlZmF1bHQgPSBpZ25vcmVkCi0rICAgIEBwYXJhbSByZXggZGVmYXVsdCA9 IG1hdGNoZXMgd2hpdGVzcGFjZQotKyAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0r ICAgIEBwYXJhbSBwb3MgZGVmYXVsdCA9IDAKLSsgICAgQHBhcmFtIGl0ZW1wbCBkZWZhdWx0ID0g ZW1wdHkgc3RyaW5nCi0rICAgIEBwYXJhbSB0ZW1wbCBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBA cGFyYW0gY2FsbG91dCBkZWZhdWx0ID0gaWdub3JlIGNhbGxvdXRzCi0rCi0rICAgIEByYWlzZSBG YWlsdXJlIGlmIHRoZXJlIGFyZSBiYWNrcmVmZXJlbmNlcyB0byBub25leGlzdGVudCBzdWJwYXR0 ZXJucy4gKikKLSsKLSt2YWwgcXJlcGxhY2UgOgotKyAgP2lmbGFnczppcmZsYWcgLT4KLSsgID9m bGFnczpyZmxhZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJpbmcgLT4K LSsgID9wb3M6aW50IC0+Ci0rICA/dGVtcGw6c3RyaW5nIC0+Ci0rICA/Y2FsbG91dDpjYWxsb3V0 IC0+Ci0rICBzdHJpbmcgLT4KLSsgIHN0cmluZwotKygqKiBbcXJlcGxhY2UgP2lmbGFncyA/Zmxh Z3MgP3JleCA/cGF0ID9wb3MgP3RlbXBsID9jYWxsb3V0IHN1YmpdIHJlcGxhY2VzIGFsbAotKyAg ICBzdWJzdHJpbmdzIG9mIFtzdWJqXSBtYXRjaGluZyBwYXR0ZXJuIFtwYXRdIHdoZW4gZ2l2ZW4s IHJlZ3VsYXIgZXhwcmVzc2lvbgotKyAgICBbcmV4XSBvdGhlcndpc2UsIHN0YXJ0aW5nIGF0IHBv c2l0aW9uIFtwb3NdIHdpdGggdGhlIHN0cmluZyBbdGVtcGxdLiBVc2VzCi0rICAgIFtmbGFnc10g d2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3NdIG90aGVyd2lzZS4gQ2FsbG91dHMg YXJlIGhhbmRsZWQKLSsgICAgYnkgW2NhbGxvdXRdLgotKwotKyAgICBAcGFyYW0gaWZsYWdzIGRl ZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9y ZWQKLSsgICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0rICAgIEBw YXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAot KyAgICBAcGFyYW0gdGVtcGwgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIGNhbGxvdXQg ZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0cyAqKQotKwotK3ZhbCBzdWJzdGl0dXRlX3N1YnN0cmlu Z3MgOgotKyAgP2lmbGFnczppcmZsYWcgLT4KLSsgID9mbGFnczpyZmxhZyBsaXN0IC0+Ci0rICA/ cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJpbmcgLT4KLSsgID9wb3M6aW50IC0+Ci0rICA/Y2Fs bG91dDpjYWxsb3V0IC0+Ci0rICBzdWJzdDooc3Vic3RyaW5ncyAtPiBzdHJpbmcpIC0+Ci0rICBz dHJpbmcgLT4KLSsgIHN0cmluZwotKygqKiBbc3Vic3RpdHV0ZV9zdWJzdHJpbmdzID9pZmxhZ3Mg P2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IH5zdWJzdCBzdWJqXQotKyAgICByZXBsYWNl cyBhbGwgc3Vic3RyaW5ncyBvZiBbc3Vial0gbWF0Y2hpbmcgcGF0dGVybiBbcGF0XSB3aGVuIGdp dmVuLCByZWd1bGFyCi0rICAgIGV4cHJlc3Npb24gW3JleF0gb3RoZXJ3aXNlLCBzdGFydGluZyBh dCBwb3NpdGlvbiBbcG9zXSB3aXRoIHRoZSByZXN1bHQgb2YKLSsgICAgZnVuY3Rpb24gW3N1YnN0 XSBhcHBsaWVkIHRvIHRoZSBzdWJzdHJpbmdzIG9mIHRoZSBtYXRjaC4gVXNlcyBbZmxhZ3NdIHdo ZW4KLSsgICAgZ2l2ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBvdGhlcndpc2UuIENhbGxv dXRzIGFyZSBoYW5kbGVkIGJ5Ci0rICAgIFtjYWxsb3V0XS4KLSsKLSsgICAgQHBhcmFtIGlmbGFn cyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLSsgICAgQHBhcmFtIGZsYWdzIGRlZmF1bHQgPSBp Z25vcmVkCi0rICAgIEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVzcGFjZQotKyAg ICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0rICAgIEBwYXJhbSBwb3MgZGVmYXVsdCA9 IDAKLSsgICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0cyAqKQotKwot K3ZhbCBzdWJzdGl0dXRlIDoKLSsgID9pZmxhZ3M6aXJmbGFnIC0+Ci0rICA/ZmxhZ3M6cmZsYWcg bGlzdCAtPgotKyAgP3JleDpyZWdleHAgLT4KLSsgID9wYXQ6c3RyaW5nIC0+Ci0rICA/cG9zOmlu dCAtPgotKyAgP2NhbGxvdXQ6Y2FsbG91dCAtPgotKyAgc3Vic3Q6KHN0cmluZyAtPiBzdHJpbmcp IC0+Ci0rICBzdHJpbmcgLT4KLSsgIHN0cmluZwotKygqKiBbc3Vic3RpdHV0ZSA/aWZsYWdzID9m bGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCB+c3Vic3Qgc3Vial0gcmVwbGFjZXMgYWxsCi0r ICAgIHN1YnN0cmluZ3Mgb2YgW3N1YmpdIG1hdGNoaW5nIHBhdHRlcm4gW3BhdF0gd2hlbiBnaXZl biwgcmVndWxhciBleHByZXNzaW9uCi0rICAgIFtyZXhdIG90aGVyd2lzZSwgc3RhcnRpbmcgYXQg cG9zaXRpb24gW3Bvc10gd2l0aCB0aGUgcmVzdWx0IG9mIGZ1bmN0aW9uCi0rICAgIFtzdWJzdF0g YXBwbGllZCB0byB0aGUgbWF0Y2guIFVzZXMgW2ZsYWdzXSB3aGVuIGdpdmVuLCB0aGUgcHJlY29t cGlsZWQKLSsgICAgW2lmbGFnc10gb3RoZXJ3aXNlLiBDYWxsb3V0cyBhcmUgaGFuZGxlZCBieSBb Y2FsbG91dF0uCi0rCi0rICAgIEBwYXJhbSBpZmxhZ3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdz Ci0rICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcmV4IGRl ZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UKLSsgICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdu b3JlZAotKyAgICBAcGFyYW0gcG9zIGRlZmF1bHQgPSAwCi0rICAgIEBwYXJhbSBjYWxsb3V0IGRl ZmF1bHQgPSBpZ25vcmUgY2FsbG91dHMgKikKLSsKLSt2YWwgcmVwbGFjZV9maXJzdCA6Ci0rICA/ aWZsYWdzOmlyZmxhZyAtPgotKyAgP2ZsYWdzOnJmbGFnIGxpc3QgLT4KLSsgID9yZXg6cmVnZXhw IC0+Ci0rICA/cGF0OnN0cmluZyAtPgotKyAgP3BvczppbnQgLT4KLSsgID9pdGVtcGw6c3Vic3Rp dHV0aW9uIC0+Ci0rICA/dGVtcGw6c3RyaW5nIC0+Ci0rICA/Y2FsbG91dDpjYWxsb3V0IC0+Ci0r ICBzdHJpbmcgLT4KLSsgIHN0cmluZwotKygqKiBbcmVwbGFjZV9maXJzdCA/aWZsYWdzID9mbGFn cyA/cmV4ID9wYXQgP3BvcyA/aXRlbXBsID90ZW1wbCA/Y2FsbG91dCBzdWJqXQotKyAgICByZXBs YWNlcyB0aGUgZmlyc3Qgc3Vic3RyaW5nIG9mIFtzdWJqXSBtYXRjaGluZyBwYXR0ZXJuIFtwYXRd IHdoZW4gZ2l2ZW4sCi0rICAgIHJlZ3VsYXIgZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UsIHN0 YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdIHdpdGggdGhlCi0rICAgIHN1YnN0aXR1dGlvbiBzdHJp bmcgW3RlbXBsXSB3aGVuIGdpdmVuLCBbaXRlbXBsXSBvdGhlcndpc2UuIFVzZXMgW2ZsYWdzXQot KyAgICB3aGVuIGdpdmVuLCB0aGUgcHJlY29tcGlsZWQgW2lmbGFnc10gb3RoZXJ3aXNlLiBDYWxs b3V0cyBhcmUgaGFuZGxlZCBieQotKyAgICBbY2FsbG91dF0uCi0rCi0rICAgIEBwYXJhbSBpZmxh Z3MgZGVmYXVsdCA9IG5vIGV4dHJhIGZsYWdzCi0rICAgIEBwYXJhbSBmbGFncyBkZWZhdWx0ID0g aWdub3JlZAotKyAgICBAcGFyYW0gcmV4IGRlZmF1bHQgPSBtYXRjaGVzIHdoaXRlc3BhY2UKLSsg ICAgQHBhcmFtIHBhdCBkZWZhdWx0ID0gaWdub3JlZAotKyAgICBAcGFyYW0gcG9zIGRlZmF1bHQg PSAwCi0rICAgIEBwYXJhbSBpdGVtcGwgZGVmYXVsdCA9IGVtcHR5IHN0cmluZwotKyAgICBAcGFy YW0gdGVtcGwgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9 IGlnbm9yZSBjYWxsb3V0cwotKwotKyAgICBAcmFpc2UgRmFpbHVyZSBpZiB0aGVyZSBhcmUgYmFj a3JlZmVyZW5jZXMgdG8gbm9uZXhpc3RlbnQgc3VicGF0dGVybnMuICopCi0rCi0rdmFsIHFyZXBs YWNlX2ZpcnN0IDoKLSsgID9pZmxhZ3M6aXJmbGFnIC0+Ci0rICA/ZmxhZ3M6cmZsYWcgbGlzdCAt PgotKyAgP3JleDpyZWdleHAgLT4KLSsgID9wYXQ6c3RyaW5nIC0+Ci0rICA/cG9zOmludCAtPgot KyAgP3RlbXBsOnN0cmluZyAtPgotKyAgP2NhbGxvdXQ6Y2FsbG91dCAtPgotKyAgc3RyaW5nIC0+ Ci0rICBzdHJpbmcKLSsoKiogW3FyZXBsYWNlX2ZpcnN0ID9pZmxhZ3MgP2ZsYWdzID9yZXggP3Bh dCA/cG9zID90ZW1wbCA/Y2FsbG91dCBzdWJqXSByZXBsYWNlcwotKyAgICB0aGUgZmlyc3Qgc3Vi c3RyaW5nIG9mIFtzdWJqXSBtYXRjaGluZyBwYXR0ZXJuIFtwYXRdIHdoZW4gZ2l2ZW4sIHJlZ3Vs YXIKLSsgICAgZXhwcmVzc2lvbiBbcmV4XSBvdGhlcndpc2UsIHN0YXJ0aW5nIGF0IHBvc2l0aW9u IFtwb3NdIHdpdGggdGhlIHN0cmluZwotKyAgICBbdGVtcGxdLiBVc2VzIFtmbGFnc10gd2hlbiBn aXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3NdIG90aGVyd2lzZS4KLSsgICAgQ2FsbG91dHMg YXJlIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgotKwotKyAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQg PSBubyBleHRyYSBmbGFncwotKyAgICBAcGFyYW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLSsg ICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hlcyB3aGl0ZXNwYWNlCi0rICAgIEBwYXJhbSBw YXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHBvcyBkZWZhdWx0ID0gMAotKyAgICBA cGFyYW0gdGVtcGwgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVs dCA9IGlnbm9yZSBjYWxsb3V0cyAqKQotKwotK3ZhbCBzdWJzdGl0dXRlX3N1YnN0cmluZ3NfZmly c3QgOgotKyAgP2lmbGFnczppcmZsYWcgLT4KLSsgID9mbGFnczpyZmxhZyBsaXN0IC0+Ci0rICA/ cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJpbmcgLT4KLSsgID9wb3M6aW50IC0+Ci0rICA/Y2Fs bG91dDpjYWxsb3V0IC0+Ci0rICBzdWJzdDooc3Vic3RyaW5ncyAtPiBzdHJpbmcpIC0+Ci0rICBz dHJpbmcgLT4KLSsgIHN0cmluZwotKygqKiBbc3Vic3RpdHV0ZV9zdWJzdHJpbmdzX2ZpcnN0ID9p ZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9jYWxsb3V0IH5zdWJzdAotKyAgICAgc3Vial0g cmVwbGFjZXMgdGhlIGZpcnN0IHN1YnN0cmluZyBvZiBbc3Vial0gbWF0Y2hpbmcgcGF0dGVybiBb cGF0XSB3aGVuCi0rICAgIGdpdmVuLCByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0gb3RoZXJ3aXNl LCBzdGFydGluZyBhdCBwb3NpdGlvbiBbcG9zXSB3aXRoCi0rICAgIHRoZSByZXN1bHQgb2YgZnVu Y3Rpb24gW3N1YnN0XSBhcHBsaWVkIHRvIHRoZSBzdWJzdHJpbmdzIG9mIHRoZSBtYXRjaC4gVXNl cwotKyAgICBbZmxhZ3NdIHdoZW4gZ2l2ZW4sIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBvdGhl cndpc2UuIENhbGxvdXRzIGFyZSBoYW5kbGVkCi0rICAgIGJ5IFtjYWxsb3V0XS4KLSsKLSsgICAg QHBhcmFtIGlmbGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLSsgICAgQHBhcmFtIGZsYWdz IGRlZmF1bHQgPSBpZ25vcmVkCi0rICAgIEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hp dGVzcGFjZQotKyAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0rICAgIEBwYXJhbSBw b3MgZGVmYXVsdCA9IDAKLSsgICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxs b3V0cyAqKQotKwotK3ZhbCBzdWJzdGl0dXRlX2ZpcnN0IDoKLSsgID9pZmxhZ3M6aXJmbGFnIC0+ Ci0rICA/ZmxhZ3M6cmZsYWcgbGlzdCAtPgotKyAgP3JleDpyZWdleHAgLT4KLSsgID9wYXQ6c3Ry aW5nIC0+Ci0rICA/cG9zOmludCAtPgotKyAgP2NhbGxvdXQ6Y2FsbG91dCAtPgotKyAgc3Vic3Q6 KHN0cmluZyAtPiBzdHJpbmcpIC0+Ci0rICBzdHJpbmcgLT4KLSsgIHN0cmluZwotKygqKiBbc3Vi c3RpdHV0ZV9maXJzdCA/aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/Y2FsbG91dCB+c3Vi c3Qgc3Vial0KLSsgICAgcmVwbGFjZXMgdGhlIGZpcnN0IHN1YnN0cmluZyBvZiBbc3Vial0gbWF0 Y2hpbmcgcGF0dGVybiBbcGF0XSB3aGVuIGdpdmVuLAotKyAgICByZWd1bGFyIGV4cHJlc3Npb24g W3JleF0gb3RoZXJ3aXNlLCBzdGFydGluZyBhdCBwb3NpdGlvbiBbcG9zXSB3aXRoIHRoZQotKyAg ICByZXN1bHQgb2YgZnVuY3Rpb24gW3N1YnN0XSBhcHBsaWVkIHRvIHRoZSBtYXRjaC4gVXNlcyBb ZmxhZ3NdIHdoZW4gZ2l2ZW4sCi0rICAgIHRoZSBwcmVjb21waWxlZCBbaWZsYWdzXSBvdGhlcndp c2UuIENhbGxvdXRzIGFyZSBoYW5kbGVkIGJ5IFtjYWxsb3V0XS4KLSsKLSsgICAgQHBhcmFtIGlm bGFncyBkZWZhdWx0ID0gbm8gZXh0cmEgZmxhZ3MKLSsgICAgQHBhcmFtIGZsYWdzIGRlZmF1bHQg PSBpZ25vcmVkCi0rICAgIEBwYXJhbSByZXggZGVmYXVsdCA9IG1hdGNoZXMgd2hpdGVzcGFjZQot KyAgICBAcGFyYW0gcGF0IGRlZmF1bHQgPSBpZ25vcmVkCi0rICAgIEBwYXJhbSBwb3MgZGVmYXVs dCA9IDAKLSsgICAgQHBhcmFtIGNhbGxvdXQgZGVmYXVsdCA9IGlnbm9yZSBjYWxsb3V0cyAqKQot KwotKygqKiB7MSBTcGxpdHRpbmd9ICopCi0rCi0rdmFsIHNwbGl0IDoKLSsgID9pZmxhZ3M6aXJm bGFnIC0+Ci0rICA/ZmxhZ3M6cmZsYWcgbGlzdCAtPgotKyAgP3JleDpyZWdleHAgLT4KLSsgID9w YXQ6c3RyaW5nIC0+Ci0rICA/cG9zOmludCAtPgotKyAgP21heDppbnQgLT4KLSsgID9jYWxsb3V0 OmNhbGxvdXQgLT4KLSsgIHN0cmluZyAtPgotKyAgc3RyaW5nIGxpc3QKLSsoKiogW3NwbGl0ID9p ZmxhZ3MgP2ZsYWdzID9yZXggP3BhdCA/cG9zID9tYXggP2NhbGxvdXQgc3Vial0gc3BsaXRzIFtz dWJqXSBpbnRvCi0rICAgIGEgbGlzdCBvZiBhdCBtb3N0IFttYXhdIHN0cmluZ3MsIHVzaW5nIGFz IGRlbGltaXRlciBwYXR0ZXJuIFtwYXRdIHdoZW4KLSsgICAgZ2l2ZW4sIHJlZ3VsYXIgZXhwcmVz c2lvbiBbcmV4XSBvdGhlcndpc2UsIHN0YXJ0aW5nIGF0IHBvc2l0aW9uIFtwb3NdLiBVc2VzCi0r ICAgIFtmbGFnc10gd2hlbiBnaXZlbiwgdGhlIHByZWNvbXBpbGVkIFtpZmxhZ3NdIG90aGVyd2lz ZS4gSWYgW21heF0gaXMgemVybywKLSsgICAgdHJhaWxpbmcgZW1wdHkgZmllbGRzIGFyZSBzdHJp cHBlZC4gSWYgaXQgaXMgbmVnYXRpdmUsIGl0IGlzIHRyZWF0ZWQgYXMKLSsgICAgYXJiaXRyYXJp bHkgbGFyZ2UuIElmIG5laXRoZXIgW3BhdF0gbm9yIFtyZXhdIGFyZSBzcGVjaWZpZWQsIGxlYWRp bmcKLSsgICAgd2hpdGVzcGFjZSB3aWxsIGJlIHN0cmlwcGVkISBTaG91bGQgYmVoYXZlIGV4YWN0 bHkgYXMgaW4gUEVSTC4gQ2FsbG91dHMgYXJlCi0rICAgIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgot KwotKyAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAgICBAcGFy YW0gZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0 Y2hlcyB3aGl0ZXNwYWNlCi0rICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAg QHBhcmFtIHBvcyBkZWZhdWx0ID0gMAotKyAgICBAcGFyYW0gbWF4IGRlZmF1bHQgPSAwCi0rICAg IEBwYXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2FsbG91dHMgKikKLSsKLSt2YWwgYXNw bGl0IDoKLSsgID9pZmxhZ3M6aXJmbGFnIC0+Ci0rICA/ZmxhZ3M6cmZsYWcgbGlzdCAtPgotKyAg P3JleDpyZWdleHAgLT4KLSsgID9wYXQ6c3RyaW5nIC0+Ci0rICA/cG9zOmludCAtPgotKyAgP21h eDppbnQgLT4KLSsgID9jYWxsb3V0OmNhbGxvdXQgLT4KLSsgIHN0cmluZyAtPgotKyAgc3RyaW5n IGFycmF5Ci0rKCoqIFthc3BsaXQgP2lmbGFncyA/ZmxhZ3MgP3JleCA/cGF0ID9wb3MgP21heCA/ Y2FsbG91dCBzdWJqXSBzYW1lIGFzCi0rICAgIHshUGNyZTIuc3BsaXR9IGJ1dCByZXR1cm4gYW4g YXJyYXkgaW5zdGVhZCBvZiBhIGxpc3QuICopCi0rCi0rKCoqIFJlc3VsdCBvZiBhIHshUGNyZTIu ZnVsbF9zcGxpdH0gKikKLSt0eXBlIHNwbGl0X3Jlc3VsdCA9Ci0rICB8IFRleHQgb2Ygc3RyaW5n ICAoKiogVGV4dCBwYXJ0IG9mIHNwbGl0IHN0cmluZyAqKQotKyAgfCBEZWxpbSBvZiBzdHJpbmcg ICgqKiBEZWxpbWl0ZXIgcGFydCBvZiBzcGxpdCBzdHJpbmcgKikKLSsgIHwgR3JvdXAgb2YgaW50 ICogc3RyaW5nCi0rICAgICAgKCoqIFN1Ymdyb3VwIG9mIG1hdGNoZWQgZGVsaW1pdGVyIChzdWJn cm91cF9uciwgc3ViZ3JvdXBfc3RyKSAqKQotKyAgfCBOb0dyb3VwICAoKiogVW5tYXRjaGVkIHN1 Ymdyb3VwICopCi0rCi0rdmFsIGZ1bGxfc3BsaXQgOgotKyAgP2lmbGFnczppcmZsYWcgLT4KLSsg ID9mbGFnczpyZmxhZyBsaXN0IC0+Ci0rICA/cmV4OnJlZ2V4cCAtPgotKyAgP3BhdDpzdHJpbmcg LT4KLSsgID9wb3M6aW50IC0+Ci0rICA/bWF4OmludCAtPgotKyAgP2NhbGxvdXQ6Y2FsbG91dCAt PgotKyAgc3RyaW5nIC0+Ci0rICBzcGxpdF9yZXN1bHQgbGlzdAotKygqKiBbZnVsbF9zcGxpdCA/ aWZsYWdzID9mbGFncyA/cmV4ID9wYXQgP3BvcyA/bWF4ID9jYWxsb3V0IHN1YmpdIHNwbGl0cyBb c3Vial0KLSsgICAgaW50byBhIGxpc3Qgb2YgYXQgbW9zdCBbbWF4XSBlbGVtZW50cyBvZiB0eXBl ICJzcGxpdF9yZXN1bHQiLCB1c2luZyBhcwotKyAgICBkZWxpbWl0ZXIgcGF0dGVybiBbcGF0XSB3 aGVuIGdpdmVuLCByZWd1bGFyIGV4cHJlc3Npb24gW3JleF0gb3RoZXJ3aXNlLAotKyAgICBzdGFy dGluZyBhdCBwb3NpdGlvbiBbcG9zXS4gVXNlcyBbZmxhZ3NdIHdoZW4gZ2l2ZW4sIHRoZSBwcmVj b21waWxlZAotKyAgICBbaWZsYWdzXSBvdGhlcndpc2UuIElmIFttYXhdIGlzIHplcm8sIHRyYWls aW5nIGVtcHR5IGZpZWxkcyBhcmUgc3RyaXBwZWQuIElmCi0rICAgIGl0IGlzIG5lZ2F0aXZlLCBp dCBpcyB0cmVhdGVkIGFzIGFyYml0cmFyaWx5IGxhcmdlLiBTaG91bGQgYmVoYXZlIGV4YWN0bHkg YXMKLSsgICAgaW4gUEVSTC4gQ2FsbG91dHMgYXJlIGhhbmRsZWQgYnkgW2NhbGxvdXRdLgotKwot KyAgICBAcGFyYW0gaWZsYWdzIGRlZmF1bHQgPSBubyBleHRyYSBmbGFncwotKyAgICBAcGFyYW0g ZmxhZ3MgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBhcmFtIHJleCBkZWZhdWx0ID0gbWF0Y2hl cyB3aGl0ZXNwYWNlCi0rICAgIEBwYXJhbSBwYXQgZGVmYXVsdCA9IGlnbm9yZWQKLSsgICAgQHBh cmFtIHBvcyBkZWZhdWx0ID0gMAotKyAgICBAcGFyYW0gbWF4IGRlZmF1bHQgPSAwCi0rICAgIEBw YXJhbSBjYWxsb3V0IGRlZmF1bHQgPSBpZ25vcmUgY2FsbG91dHMgKikKLSsKLSsoKiogezEgQWRk aXRpb25hbCBjb252ZW5pZW5jZSBmdW5jdGlvbnN9ICopCi0rCi0rdmFsIGZvcmVhY2hfbGluZSA6 ID9pYzppbl9jaGFubmVsIC0+IChzdHJpbmcgLT4gdW5pdCkgLT4gdW5pdAotKygqKiBbZm9yZWFj aF9saW5lID9pYyBmXSBhcHBsaWVzIFtmXSB0byBlYWNoIGxpbmUgaW4gaW5jaGFubmVsIFtpY10g dW50aWwgdGhlCi0rICAgIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuCi0rCi0rICAgIEBwYXJhbSBp YyBkZWZhdWx0ID0gc3RkaW4gKikKLSsKLSt2YWwgZm9yZWFjaF9maWxlIDogc3RyaW5nIGxpc3Qg LT4gKHN0cmluZyAtPiBpbl9jaGFubmVsIC0+IHVuaXQpIC0+IHVuaXQKLSsoKiogW2ZvcmVhY2hf ZmlsZSBmaWxlbmFtZXMgZl0gb3BlbnMgZWFjaCBmaWxlIGluIHRoZSBsaXN0IFtmaWxlbmFtZXNd IGZvciBpbnB1dAotKyAgICBhbmQgYXBwbGllcyBbZl0gdG8gZWFjaCBmaWxlbmFtZSBhbmQgdGhl IGNvcnJlc3BvbmRpbmcgY2hhbm5lbC4gQ2hhbm5lbHMgYXJlCi0rICAgIGNsb3NlZCBhZnRlciBl YWNoIG9wZXJhdGlvbiAoZXZlbiB3aGVuIGV4Y2VwdGlvbnMgb2NjdXIgLSB0aGV5IGdldCByZXJh aXNlZAotKyAgICBhZnRlcndhcmRzISkuICopCi0rCi0rKCoqIHsxIHtiIFVOU0FGRSBTVFVGRiAt IFVTRSBXSVRIIENBVVRJT04hfX0gKikKLSsKLSt2YWwgdW5zYWZlX3BjcmUyX21hdGNoIDoKLSsg IGlyZmxhZyAtPgotKyAgcmVnZXhwIC0+Ci0rICBwb3M6aW50IC0+Ci0rICBzdWJqX3N0YXJ0Omlu dCAtPgotKyAgc3ViajpzdHJpbmcgLT4KLSsgIGludCBhcnJheSAtPgotKyAgY2FsbG91dCBvcHRp b24gLT4KLSsgIHVuaXQKLSsoKiogW3Vuc2FmZV9wY3JlX2V4ZWMgZmxhZ3MgcmV4IH5wb3MgfnN1 Ympfc3RhcnQgfnN1Ymogb2Zmc2V0X3ZlY3RvciBjYWxsb3V0XS4KLSsgICAgWW91IHNob3VsZCBy ZWFkIHRoZSBDLXNvdXJjZSB0byBrbm93IHdoYXQgaGFwcGVucy4gSWYgeW91IGRvIG5vdCB1bmRl cnN0YW5kCi0rICAgIGl0IC0ge2IgZG9uJ3QgdXNlIHRoaXMgZnVuY3Rpb24hfSAqKQotKwotK3Zh bCBtYWtlX292ZWN0b3IgOiByZWdleHAgLT4gaW50ICogaW50IGFycmF5Ci0rKCoqIFttYWtlX292 ZWN0b3IgcmVnZXhwXSBjYWxjdWxhdGVzIHRoZSB0dXBsZSAoc3ViZ3JvdXBzMiwgb3ZlY3Rvcikg d2hpY2ggaXMKLSsgICAgdGhlIG51bWJlciBvZiBzdWJncm91cCBvZmZzZXRzIGFuZCB0aGUgb2Zm c2V0IGFycmF5LiAqKQotKwotK3ZhbCB1bnNhZmVfcGNyZTJfZGZhX21hdGNoIDoKLSsgIGlyZmxh ZyAtPgotKyAgcmVnZXhwIC0+Ci0rICBwb3M6aW50IC0+Ci0rICBzdWJqX3N0YXJ0OmludCAtPgot KyAgc3ViajpzdHJpbmcgLT4KLSsgIGludCBhcnJheSAtPgotKyAgY2FsbG91dCBvcHRpb24gLT4K LSsgIHdvcmtzcGFjZTppbnQgYXJyYXkgLT4KLSsgIHVuaXQKLSsoKiogW3Vuc2FmZV9wY3JlX2Rm YV9leGVjIGZsYWdzIHJleCB+cG9zIH5zdWJqX3N0YXJ0IH5zdWJqIG9mZnNldF92ZWN0b3IgY2Fs bG91dAotKyAgICAgfndvcmtwYWNlXS4gWW91IHNob3VsZCByZWFkIHRoZSBDLXNvdXJjZSB0byBr bm93IHdoYXQgaGFwcGVucy4gSWYgeW91IGRvCi0rICAgIG5vdCB1bmRlcnN0YW5kIGl0IC0ge2Ig ZG9uJ3QgdXNlIHRoaXMgZnVuY3Rpb24hfSAqKQotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIv cGNyZTItb2NhbWwvbGliL3BjcmUyX3N0dWJzLmMgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1s L2xpYi9wY3JlMl9zdHVicy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAw Li5jOTIzYWUyOWEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2Nh bWwvbGliL3BjcmUyX3N0dWJzLmMKLUBAIC0wLDAgKzEsODA3IEBACi0rLyoKLSsgICBQQ1JFMi1P Q0FNTCAtIFBlcmwgQ29tcGF0aWJpbGl0eSBSZWd1bGFyIEV4cHJlc3Npb25zIGZvciBPQ2FtbAot KwotKyAgIENvcHlyaWdodCDCqSAxOTk5LSBNYXJrdXMgTW90dGwgPG1hcmt1cy5tb3R0bEBnbWFp bC5jb20+Ci0rCi0rICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vcgotKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgICB2ZXJzaW9uIDIuMSBvZiB0 aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsg ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5z ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgVVNBCi0rKi8KLSsKLSsjaWYgZGVmaW5lZChfV0lO MzIpCi0rI2RlZmluZSBzbnByaW50ZiBfc25wcmludGYKLSsjaWYgZGVmaW5lZChfRExMKQotKyNk ZWZpbmUgUENSRWV4dGVybiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSsjZWxzZQotKyNkZWZpbmUg UENSRWV4dGVybgotKyNlbmRpZgotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkKF9XSU42NCkKLSt0 eXBlZGVmIGxvbmcgbG9uZyAqY2FtbF9pbnRfcHRyOwotKyNlbHNlCi0rdHlwZWRlZiBsb25nICpj YW1sX2ludF9wdHI7Ci0rI2VuZGlmCi0rCi0rI2lmIF9fR05VQ19fID49IDMKLSsjZGVmaW5lIF9f dW51c2VkIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCi0rI2Vsc2UKLSsjZGVmaW5lIF9fdW51c2Vk Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0r I2luY2x1ZGUgPHN0cmluZy5oPgotKwotKyNpbmNsdWRlIDxjYW1sL2FsbG9jLmg+Ci0rI2luY2x1 ZGUgPGNhbWwvY2FsbGJhY2suaD4KLSsjaW5jbHVkZSA8Y2FtbC9jdXN0b20uaD4KLSsjaW5jbHVk ZSA8Y2FtbC9mYWlsLmg+Ci0rI2luY2x1ZGUgPGNhbWwvbWVtb3J5Lmg+Ci0rI2luY2x1ZGUgPGNh bWwvbWx2YWx1ZXMuaD4KLSsjaW5jbHVkZSA8Y2FtbC92ZXJzaW9uLmg+Ci0rCi0rI2lmIChPQ0FN TF9WRVJTSU9OX01BSk9SID09IDQpICYmIChPQ0FNTF9WRVJTSU9OX01JTk9SIDwgMTIpCi0rI2Rl ZmluZSBWYWxfbm9uZSAoVmFsX2xvbmcoMCkpCi0rI2RlZmluZSBTb21lX3ZhbCh2KSBGaWVsZCh2 LCAwKQotKyNkZWZpbmUgVGFnX3NvbWUgMAotKyNkZWZpbmUgSXNfbm9uZSh2KSAoKHYpID09IFZh bF9ub25lKQotKyNkZWZpbmUgSXNfc29tZSh2KSBJc19ibG9jayh2KQotKwotK0NBTUxleHBvcnQg c3RhdGljIHZhbHVlIGNhbWxfYWxsb2Nfc29tZSh2YWx1ZSB2KSB7Ci0rICBDQU1McGFyYW0xKHYp OwotKyAgdmFsdWUgc29tZSA9IGNhbWxfYWxsb2Nfc21hbGwoMSwgMCk7Ci0rICBGaWVsZChzb21l LCAwKSA9IHY7Ci0rICBDQU1McmV0dXJuKHNvbWUpOwotK30KLSsjZW5kaWYKLSsKLSsjZGVmaW5l IFBDUkUyX0NPREVfVU5JVF9XSURUSCA4Ci0rCi0rI2luY2x1ZGUgPHBjcmUyLmg+Ci0rCi0rdHlw ZWRlZiBjb25zdCB1bnNpZ25lZCBjaGFyICpjaGFydGFibGVzOyAvKiBUeXBlIG9mIGNoYXJ0YWJs ZSBzZXRzICovCi0rCi0rLyogQ29udGVudHMgb2YgY2FsbG91dCBkYXRhICovCi0rc3RydWN0IGNv ZCB7Ci0rICBsb25nIHN1Ympfc3RhcnQ7ICAgICAgIC8qIFN0YXJ0IG9mIHN1YmplY3Qgc3RyaW5n ICovCi0rICB2YWx1ZSAqdl9zdWJzdHJpbmdzX3A7IC8qIFBvaW50ZXIgdG8gc3Vic3RyaW5ncyBt YXRjaGVkIHNvIGZhciAqLwotKyAgdmFsdWUgKnZfY29mX3A7ICAgICAgICAvKiBQb2ludGVyIHRv IGNhbGxvdXQgZnVuY3Rpb24gKi8KLSsgIHZhbHVlIHZfZXhuOyAgICAgICAgICAgLyogUG9zc2li bGUgZXhjZXB0aW9uIHJhaXNlZCBieSBjYWxsb3V0IGZ1bmN0aW9uICovCi0rfTsKLSsKLSsvKiBD YWNoZSBmb3IgZXhjZXB0aW9ucyAqLwotK3N0YXRpYyBjb25zdCB2YWx1ZSAqcGNyZTJfZXhjX0Vy cm9yID0gTlVMTDsgICAgIC8qIEV4Y2VwdGlvbiBbRXJyb3JdICovCi0rc3RhdGljIGNvbnN0IHZh bHVlICpwY3JlMl9leGNfQmFja3RyYWNrID0gTlVMTDsgLyogRXhjZXB0aW9uIFtCYWNrdHJhY2td ICovCi0rCi0rLyogQ2FjaGUgZm9yIHBvbHltb3JwaGljIHZhcmlhbnRzICovCi0rc3RhdGljIHZh bHVlIHZhcl9TdGFydF9vbmx5OyAvKiBWYXJpYW50IFtgU3RhcnRfb25seV0gKi8KLStzdGF0aWMg dmFsdWUgdmFyX0FOQ0hPUkVEOyAgIC8qIFZhcmlhbnQgW2BBTkNIT1JFRF0gKi8KLStzdGF0aWMg dmFsdWUgdmFyX0NoYXI7ICAgICAgIC8qIFZhcmlhbnQgW2BDaGFyIGNoYXJdICovCi0rCi0rLyog RGF0YSBhc3NvY2lhdGVkIHdpdGggT0NhbWwgdmFsdWVzIG9mIFBDUkUgcmVndWxhciBleHByZXNz aW9uICovCi0rc3RydWN0IHBjcmUyX29jYW1sX3JlZ2V4cCB7Ci0rICBwY3JlMl9jb2RlICpyZXg7 Ci0rICBwY3JlMl9tYXRjaF9jb250ZXh0ICptY29udGV4dDsKLSt9OwotKwotKyNkZWZpbmUgUGNy ZTJfb2NhbWxfcmVnZXhwX3ZhbCh2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0rICAoKHN0cnVjdCBwY3JlMl9vY2FtbF9yZWdleHAgKilEYXRhX2N1c3Rv bV92YWwodikpCi0rCi0rI2RlZmluZSBnZXRfcmV4KHYpIFBjcmUyX29jYW1sX3JlZ2V4cF92YWwo diktPnJleAotKyNkZWZpbmUgZ2V0X21jb250ZXh0KHYpIFBjcmUyX29jYW1sX3JlZ2V4cF92YWwo diktPm1jb250ZXh0Ci0rCi0rI2RlZmluZSBzZXRfcmV4KHYsIHIpIFBjcmUyX29jYW1sX3JlZ2V4 cF92YWwodiktPnJleCA9IHIKLSsjZGVmaW5lIHNldF9tY29udGV4dCh2LCBjKSBQY3JlMl9vY2Ft bF9yZWdleHBfdmFsKHYpLT5tY29udGV4dCA9IGMKLSsKLSsvKiBEYXRhIGFzc29jaWF0ZWQgd2l0 aCBPQ2FtbCB2YWx1ZXMgb2YgUENSRSB0YWJsZXMgKi8KLStzdHJ1Y3QgcGNyZTJfb2NhbWxfdGFi bGVzIHsKLSsgIGNoYXJ0YWJsZXMgdGFibGVzOwotK307Ci0rCi0rI2RlZmluZSBQY3JlMl9vY2Ft bF90YWJsZXNfdmFsKHYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgICgoc3RydWN0IHBjcmUyX29jYW1sX3RhYmxlcyAqKURhdGFfY3VzdG9tX3ZhbCh2 KSkKLSsKLSsjZGVmaW5lIGdldF90YWJsZXModikgUGNyZTJfb2NhbWxfdGFibGVzX3ZhbCh2KS0+ dGFibGVzCi0rI2RlZmluZSBzZXRfdGFibGVzKHYsIHQpIFBjcmUyX29jYW1sX3RhYmxlc192YWwo diktPnRhYmxlcyA9IHQKLSsKLSsvKiBDb252ZXJ0cyBzdWJqZWN0IG9mZnNldHMgZnJvbSBDLWlu dGVnZXJzIHRvIE9DYW1sLUludGVnZXJzLgotKwotKyAgIFRoaXMgaXMgYSBiaXQgdHJpY2t5LCBi ZWNhdXNlIHRoZXJlIGFyZSAzMi0gYW5kIDY0LWJpdCBwbGF0Zm9ybXMgYXJvdW5kCi0rICAgYW5k IE9DYW1sIGNob29zZXMgdGhlIGxhcmdlciBwb3NzaWJpbGl0eSBmb3IgcmVwcmVzZW50aW5nIGlu dGVnZXJzIHdoZW4KLSsgICBhdmFpbGFibGUgKGFsc28gaW4gYXJyYXlzKSAtIG5vdCBzbyB0aGUg UENSRSEKLSsqLwotK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X292ZWN0b3IobG9uZyBzdWJqX3N0 YXJ0LCBjb25zdCBzaXplX3QgKm92ZWNfc3JjLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2FtbF9pbnRfcHRyIG92ZWNfZHN0LCB1aW50MzJfdCBzdWJncm91cHMyKSB7Ci0rICBp ZiAoc3Vial9zdGFydCA9PSAwKQotKyAgICB3aGlsZSAoc3ViZ3JvdXBzMi0tKSB7Ci0rICAgICAg Km92ZWNfZHN0ID0gKCpvdmVjX3NyYyA9PSBQQ1JFMl9VTlNFVCkgPyBWYWxfaW50KC0xKSA6IFZh bF9pbnQoKm92ZWNfc3JjKTsKLSsgICAgICAtLW92ZWNfc3JjOwotKyAgICAgIC0tb3ZlY19kc3Q7 Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgd2hpbGUgKHN1Ymdyb3VwczItLSkgewotKyAgICAgICpv dmVjX2RzdCA9ICgqb3ZlY19zcmMgPT0gUENSRTJfVU5TRVQpID8gVmFsX2ludCgtMSkKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFZhbF9sb25nKCpvdmVj X3NyYyArIHN1Ympfc3RhcnQpOwotKyAgICAgIC0tb3ZlY19zcmM7Ci0rICAgICAgLS1vdmVjX2Rz dDsKLSsgICAgfQotK30KLSsKLSsvKiBDYWxsb3V0IGhhbmRsZXIgKi8KLStzdGF0aWMgaW50IHBj cmUyX2NhbGxvdXRfaGFuZGxlcihwY3JlMl9jYWxsb3V0X2Jsb2NrICpjYiwgc3RydWN0IGNvZCAq Y29kKSB7Ci0rICBpZiAoY29kICE9IE5VTEwpIHsKLSsgICAgLyogQ2FsbG91dCBpcyBhdmFpbGFi bGUgKi8KLSsgICAgdmFsdWUgdl9yZXM7Ci0rCi0rICAgIC8qIFNldCB1cCBwYXJhbWV0ZXIgYXJy YXkgKi8KLSsgICAgdmFsdWUgdl9jYWxsb3V0X2RhdGEgPSBjYW1sX2FsbG9jX3NtYWxsKDgsIDAp OwotKwotKyAgICBjb25zdCB2YWx1ZSB2X3N1YnN0cmluZ3MgPSAqY29kLT52X3N1YnN0cmluZ3Nf cDsKLSsKLSsgICAgY29uc3QgdWludDMyX3QgY2FwdHVyZV90b3AgPSBjYi0+Y2FwdHVyZV90b3A7 Ci0rICAgIHVpbnQzMl90IHN1Ymdyb3VwczIgPSBjYXB0dXJlX3RvcCA8PCAxOwotKyAgICBjb25z dCB1aW50MzJfdCBzdWJncm91cHMyXzEgPSBzdWJncm91cHMyIC0gMTsKLSsKLSsgICAgY29uc3Qg c2l6ZV90ICpvdmVjX3NyYyA9IGNiLT5vZmZzZXRfdmVjdG9yICsgc3ViZ3JvdXBzMl8xOwotKyAg ICBjYW1sX2ludF9wdHIgb3ZlY19kc3QgPQotKyAgICAgICAgKGNhbWxfaW50X3B0cikmRmllbGQo RmllbGQodl9zdWJzdHJpbmdzLCAxKSwgMCkgKyBzdWJncm91cHMyXzE7Ci0rICAgIGxvbmcgc3Vi al9zdGFydCA9IGNvZC0+c3Vial9zdGFydDsKLSsKLSsgICAgY29weV9vdmVjdG9yKHN1Ympfc3Rh cnQsIG92ZWNfc3JjLCBvdmVjX2RzdCwgc3ViZ3JvdXBzMik7Ci0rCi0rICAgIEZpZWxkKHZfY2Fs bG91dF9kYXRhLCAwKSA9IFZhbF9pbnQoY2ItPmNhbGxvdXRfbnVtYmVyKTsKLSsgICAgRmllbGQo dl9jYWxsb3V0X2RhdGEsIDEpID0gdl9zdWJzdHJpbmdzOwotKyAgICBGaWVsZCh2X2NhbGxvdXRf ZGF0YSwgMikgPSBWYWxfaW50KGNiLT5zdGFydF9tYXRjaCArIHN1Ympfc3RhcnQpOwotKyAgICBG aWVsZCh2X2NhbGxvdXRfZGF0YSwgMykgPSBWYWxfaW50KGNiLT5jdXJyZW50X3Bvc2l0aW9uICsg c3Vial9zdGFydCk7Ci0rICAgIEZpZWxkKHZfY2FsbG91dF9kYXRhLCA0KSA9IFZhbF9pbnQoY2Fw dHVyZV90b3ApOwotKyAgICBGaWVsZCh2X2NhbGxvdXRfZGF0YSwgNSkgPSBWYWxfaW50KGNiLT5j YXB0dXJlX2xhc3QpOwotKyAgICBGaWVsZCh2X2NhbGxvdXRfZGF0YSwgNikgPSBWYWxfaW50KGNi LT5wYXR0ZXJuX3Bvc2l0aW9uKTsKLSsgICAgRmllbGQodl9jYWxsb3V0X2RhdGEsIDcpID0gVmFs X2ludChjYi0+bmV4dF9pdGVtX2xlbmd0aCk7Ci0rCi0rICAgIC8qIFBlcmZvcm0gY2FsbG91dCAq LwotKyAgICB2X3JlcyA9IGNhbWxfY2FsbGJhY2tfZXhuKCpjb2QtPnZfY29mX3AsIHZfY2FsbG91 dF9kYXRhKTsKLSsKLSsgICAgaWYgKElzX2V4Y2VwdGlvbl9yZXN1bHQodl9yZXMpKSB7Ci0rICAg ICAgLyogQ2FsbG91dCByYWlzZWQgYW4gZXhjZXB0aW9uICovCi0rICAgICAgY29uc3QgdmFsdWUg dl9leG4gPSBFeHRyYWN0X2V4Y2VwdGlvbih2X3Jlcyk7Ci0rICAgICAgaWYgKEZpZWxkKHZfZXhu LCAwKSA9PSAqcGNyZTJfZXhjX0JhY2t0cmFjaykKLSsgICAgICAgIHJldHVybiAxOwotKyAgICAg IGNvZC0+dl9leG4gPSB2X2V4bjsKLSsgICAgICByZXR1cm4gUENSRTJfRVJST1JfQ0FMTE9VVDsK LSsgICAgfQotKyAgfQotKwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIEZldGNoZXMgdGhlIG5h bWVkIE9DYW1sLXZhbHVlcyArIGNhY2hlcyB0aGVtIGFuZAotKyAgIGNhbGN1bGF0ZXMgKyBjYWNo ZXMgdGhlIHZhcmlhbnQgaGFzaCB2YWx1ZXMgKi8KLStDQU1McHJpbSB2YWx1ZSBwY3JlMl9vY2Ft bF9pbml0KHZhbHVlIF9fdW51c2VkIHZfdW5pdCkgewotKyAgcGNyZTJfZXhjX0Vycm9yID0gY2Ft bF9uYW1lZF92YWx1ZSgiUGNyZTIuRXJyb3IiKTsKLSsgIHBjcmUyX2V4Y19CYWNrdHJhY2sgPSBj YW1sX25hbWVkX3ZhbHVlKCJQY3JlMi5CYWNrdHJhY2siKTsKLSsKLSsgIHZhcl9TdGFydF9vbmx5 ID0gY2FtbF9oYXNoX3ZhcmlhbnQoIlN0YXJ0X29ubHkiKTsKLSsgIHZhcl9BTkNIT1JFRCA9IGNh bWxfaGFzaF92YXJpYW50KCJBTkNIT1JFRCIpOwotKyAgdmFyX0NoYXIgPSBjYW1sX2hhc2hfdmFy aWFudCgiQ2hhciIpOwotKwotKyAgcmV0dXJuIFZhbF91bml0OwotK30KLSsKLSsvKiBGaW5hbGl6 aW5nIGRlYWxsb2NhdGlvbiBmdW5jdGlvbiBmb3IgY2hhcnRhYmxlIHNldHMgKi8KLStzdGF0aWMg dm9pZCBwY3JlMl9kZWFsbG9jX3RhYmxlcyh2YWx1ZSB2X3RhYmxlcykgewotKyNpZiBQQ1JFMl9N SU5PUiA+PSAzNAotKyAgcGNyZTJfbWFrZXRhYmxlc19mcmVlKE5VTEwsIGdldF90YWJsZXModl90 YWJsZXMpKTsKLSsjZWxzZQotKyAgZnJlZSgodm9pZCAqKWdldF90YWJsZXModl90YWJsZXMpKTsK LSsjZW5kaWYKLSt9Ci0rCi0rLyogRmluYWxpemluZyBkZWFsbG9jYXRpb24gZnVuY3Rpb24gZm9y IGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKi8KLStzdGF0aWMgdm9pZCBwY3JlMl9kZWFs bG9jX3JlZ2V4cCh2YWx1ZSB2X3JleCkgewotKyAgcGNyZTJfY29kZV9mcmVlKGdldF9yZXgodl9y ZXgpKTsKLSsgIHBjcmUyX21hdGNoX2NvbnRleHRfZnJlZShnZXRfbWNvbnRleHQodl9yZXgpKTsK LSt9Ci0rCi0rLyogUmFpc2luZyBleGNlcHRpb25zICovCi0rCi0rQ0FNTG5vcmV0dXJuX3N0YXJ0 IHN0YXRpYyBpbmxpbmUgdm9pZAotK3JhaXNlX3BjcmUyX2Vycm9yKHZhbHVlIHZfYXJnKSBDQU1M bm9yZXR1cm5fZW5kOwotKwotK0NBTUxub3JldHVybl9zdGFydCBzdGF0aWMgaW5saW5lIHZvaWQg cmFpc2VfcGFydGlhbCh2b2lkKSBDQU1Mbm9yZXR1cm5fZW5kOwotKwotK0NBTUxub3JldHVybl9z dGFydCBzdGF0aWMgaW5saW5lIHZvaWQgcmFpc2VfYmFkX3V0Zih2b2lkKSBDQU1Mbm9yZXR1cm5f ZW5kOwotKwotK0NBTUxub3JldHVybl9zdGFydCBzdGF0aWMgaW5saW5lIHZvaWQKLStyYWlzZV9i YWRfdXRmX29mZnNldCh2b2lkKSBDQU1Mbm9yZXR1cm5fZW5kOwotKwotK0NBTUxub3JldHVybl9z dGFydCBzdGF0aWMgaW5saW5lIHZvaWQgcmFpc2VfbWF0Y2hfbGltaXQodm9pZCkgQ0FNTG5vcmV0 dXJuX2VuZDsKLSsKLStDQU1Mbm9yZXR1cm5fc3RhcnQgc3RhdGljIGlubGluZSB2b2lkIHJhaXNl X2RlcHRoX2xpbWl0KHZvaWQpIENBTUxub3JldHVybl9lbmQ7Ci0rCi0rQ0FNTG5vcmV0dXJuX3N0 YXJ0IHN0YXRpYyBpbmxpbmUgdm9pZAotK3JhaXNlX3dvcmtzcGFjZV9zaXplKHZvaWQpIENBTUxu b3JldHVybl9lbmQ7Ci0rCi0rQ0FNTG5vcmV0dXJuX3N0YXJ0IHN0YXRpYyBpbmxpbmUgdm9pZAot K3JhaXNlX2JhZF9wYXR0ZXJuKGludCBjb2RlLCBzaXplX3QgcG9zKSBDQU1Mbm9yZXR1cm5fZW5k OwotKwotK0NBTUxub3JldHVybl9zdGFydCBzdGF0aWMgaW5saW5lIHZvaWQKLStyYWlzZV9pbnRl cm5hbF9lcnJvcihjaGFyICptc2cpIENBTUxub3JldHVybl9lbmQ7Ci0rCi0rc3RhdGljIGlubGlu ZSB2b2lkIHJhaXNlX3BjcmUyX2Vycm9yKHZhbHVlIHZfYXJnKSB7Ci0rICBjYW1sX3JhaXNlX3dp dGhfYXJnKCpwY3JlMl9leGNfRXJyb3IsIHZfYXJnKTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSB2 b2lkIHJhaXNlX3BhcnRpYWwodm9pZCkgeyByYWlzZV9wY3JlMl9lcnJvcihWYWxfaW50KDApKTsg fQotK3N0YXRpYyBpbmxpbmUgdm9pZCByYWlzZV9iYWRfdXRmKHZvaWQpIHsgcmFpc2VfcGNyZTJf ZXJyb3IoVmFsX2ludCgxKSk7IH0KLStzdGF0aWMgaW5saW5lIHZvaWQgcmFpc2VfYmFkX3V0Zl9v ZmZzZXQodm9pZCkgeyByYWlzZV9wY3JlMl9lcnJvcihWYWxfaW50KDIpKTsgfQotK3N0YXRpYyBp bmxpbmUgdm9pZCByYWlzZV9tYXRjaF9saW1pdCh2b2lkKSB7IHJhaXNlX3BjcmUyX2Vycm9yKFZh bF9pbnQoMykpOyB9Ci0rc3RhdGljIGlubGluZSB2b2lkIHJhaXNlX2RlcHRoX2xpbWl0KHZvaWQp IHsgcmFpc2VfcGNyZTJfZXJyb3IoVmFsX2ludCg0KSk7IH0KLStzdGF0aWMgaW5saW5lIHZvaWQg cmFpc2Vfd29ya3NwYWNlX3NpemUodm9pZCkgeyByYWlzZV9wY3JlMl9lcnJvcihWYWxfaW50KDUp KTsgfQotKwotKy8qIFRoZSBsZW5ndGggb2YgbXNnX2J1ZiBpbiB0aGlzIGZ1bmN0aW9uIGlzIGNo b3NlbiB0byBiZSBsYXJnZXIgdGhhbgotKyAgIGFueSBleGlzdGluZyBlcnJvci1tZXNzYWdlIGlu IHBjcmUyX2Vycm9yLmMuICBDdXJyZW50bHkgKEZlYiAyNSwgMjAyNSwgR2l0Ci0rICAgY29tbWl0 IDA4ODBhNmMzM2E1MWUyZGZkZWQ4ODY0YTZiY2M4YWU0ZTlhOTBmODkpLCAgdGhlIGxvbmdlc3Qg ZXJyb3ItbWVzc2FnZQotKyAgIGlzIGFib3V0IDExMCBjaGFycy4gIFVuY29tZm9ydGFibHkgY2xv c2UgdG8gMTI4LCBzbyBJIGRvdWJsZWQgdGhlIGxlbmd0aCB0bwotKyAgIDI1Ni4KLSsqLwotKwot K3N0YXRpYyBpbmxpbmUgdm9pZCByYWlzZV9iYWRfcGF0dGVybihpbnQgY29kZSwgc2l6ZV90IHBv cykgewotKyAgQ0FNTHBhcmFtMCgpOwotKyAgQ0FNTGxvY2FsMih2X21zZywgdl9hcmcpOwotKyAg Y2hhciBtc2dfYnVmWzEyOF07Ci0rICBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZShjb2RlLCAoUENS RTJfVUNIQVIgKiltc2dfYnVmLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNpemVvZiBt c2dfYnVmKSAvIChzaXplb2YoUENSRTJfVUNIQVIpKSk7Ci0rICB2X21zZyA9IGNhbWxfY29weV9z dHJpbmcobXNnX2J1Zik7Ci0rICB2X2FyZyA9IGNhbWxfYWxsb2Nfc21hbGwoMiwgMCk7Ci0rICBG aWVsZCh2X2FyZywgMCkgPSB2X21zZzsKLSsgIEZpZWxkKHZfYXJnLCAxKSA9IFZhbF9pbnQocG9z KTsKLSsgIHJhaXNlX3BjcmUyX2Vycm9yKHZfYXJnKTsKLSsgIENBTUxub3JldHVybjsKLSt9Ci0r Ci0rc3RhdGljIGlubGluZSB2b2lkIHJhaXNlX2ludGVybmFsX2Vycm9yKGNoYXIgKm1zZykgewot KyAgQ0FNTHBhcmFtMCgpOwotKyAgQ0FNTGxvY2FsMSh2X21zZyk7Ci0rICB2YWx1ZSB2X2FyZzsK LSsgIHZfbXNnID0gY2FtbF9jb3B5X3N0cmluZyhtc2cpOwotKyAgdl9hcmcgPSBjYW1sX2FsbG9j X3NtYWxsKDEsIDEpOwotKyAgRmllbGQodl9hcmcsIDApID0gdl9tc2c7Ci0rICByYWlzZV9wY3Jl Ml9lcnJvcih2X2FyZyk7Ci0rICBDQU1Mbm9yZXR1cm47Ci0rfQotKwotKy8qIFBDUkUgcGF0dGVy biBjb21waWxhdGlvbiAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgY3VzdG9tX29wZXJhdGlvbnMgcmVn ZXhwX29wcyA9IHsKLSsgICAgInBjcmUyX29jYW1sX3JlZ2V4cCIsICAgICAgIHBjcmUyX2RlYWxs b2NfcmVnZXhwLAotKyAgICBjdXN0b21fY29tcGFyZV9kZWZhdWx0LCAgICAgY3VzdG9tX2hhc2hf ZGVmYXVsdCwKLSsgICAgY3VzdG9tX3NlcmlhbGl6ZV9kZWZhdWx0LCAgIGN1c3RvbV9kZXNlcmlh bGl6ZV9kZWZhdWx0LAotKyAgICBjdXN0b21fY29tcGFyZV9leHRfZGVmYXVsdCwgY3VzdG9tX2Zp eGVkX2xlbmd0aF9kZWZhdWx0fTsKLSsKLSsvKiBNYWtlcyBjb21waWxlZCByZWd1bGFyIGV4cHJl c3Npb24gZnJvbSBjb21waWxhdGlvbiBvcHRpb25zLCBhbiBvcHRpb25hbAotKyAgIHZhbHVlIG9m IGNoYXJ0YWJsZXMgYW5kIHRoZSBwYXR0ZXJuIHN0cmluZyAqLwotKwotK0NBTUxwcmltIHZhbHVl IHBjcmUyX2NvbXBpbGVfc3R1YihpbnQ2NF90IHZfb3B0LCB2YWx1ZSB2X3RhYmxlcywgdmFsdWUg dl9wYXQpIHsKLSsgIHZhbHVlIHZfcmV4OyAvKiBGaW5hbCByZXN1bHQgLT4gdmFsdWUgb2YgdHlw ZSBbcmVnZXhwXSAqLwotKyAgc2l6ZV90IHJlZ2V4cF9zaXplLCBvY2FtbF9yZWdleHBfc2l6ZSA9 IHNpemVvZihzdHJ1Y3QgcGNyZTJfb2NhbWxfcmVnZXhwKTsKLSsgIGludCBlcnJvcl9jb2RlID0g MDsgICAvKiBlcnJvciBjb2RlIGZvciBwb3RlbnRpYWwgZXJyb3IgKi8KLSsgIHNpemVfdCBlcnJv cl9vZnMgPSAwOyAvKiBvZmZzZXQgaW4gdGhlIHBhdHRlcm4gYXQgd2hpY2ggZXJyb3Igb2NjdXJy ZWQgKi8KLSsgIHNpemVfdCBsZW5ndGggPSBjYW1sX3N0cmluZ19sZW5ndGgodl9wYXQpOwotKwot KyAgcGNyZTJfY29tcGlsZV9jb250ZXh0ICpjY29udGV4dCA9IE5VTEw7Ci0rICAvKiBJZiB2X3Rh YmxlcyA9IFtOb25lXSwgdGhlbiBwb2ludGVyIHRvIHRhYmxlcyBpcyBOVUxMLCBvdGhlcndpc2UK LSsgICAgIHNldCBpdCB0byB0aGUgYXBwcm9wcmlhdGUgdmFsdWUgKi8KLSsgIGlmIChJc19zb21l KHZfdGFibGVzKSkgewotKyAgICBjY29udGV4dCA9IHBjcmUyX2NvbXBpbGVfY29udGV4dF9jcmVh dGUoTlVMTCk7Ci0rICAgIHBjcmUyX3NldF9jaGFyYWN0ZXJfdGFibGVzKGNjb250ZXh0LCBnZXRf dGFibGVzKEZpZWxkKHZfdGFibGVzLCAwKSkpOwotKyAgfQotKwotKyAgLyogQ29tcGlsZXMgdGhl IHBhdHRlcm4gKi8KLSsgIHBjcmUyX2NvZGUgKnJlZ2V4cCA9IHBjcmUyX2NvbXBpbGUoKFBDUkUy X1NQVFIpU3RyaW5nX3ZhbCh2X3BhdCksIGxlbmd0aCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdl9vcHQsICZlcnJvcl9jb2RlLCAmZXJyb3Jfb2ZzLCBjY29udGV4dCk7 Ci0rCi0rICBwY3JlMl9jb21waWxlX2NvbnRleHRfZnJlZShjY29udGV4dCk7Ci0rCi0rICAvKiBS YWlzZXMgYXBwcm9wcmlhdGUgZXhjZXB0aW9uIHdpdGggW0JhZFBhdHRlcm5dIGlmIHRoZSBwYXR0 ZXJuCi0rICAgICBjb3VsZCBub3QgYmUgY29tcGlsZWQgKi8KLSsgIGlmIChyZWdleHAgPT0gTlVM TCkKLSsgICAgcmFpc2VfYmFkX3BhdHRlcm4oZXJyb3JfY29kZSwgZXJyb3Jfb2ZzKTsKLSsKLSsg IC8qIEl0J3MgdW5rbm93biBhdCB0aGlzIHBvaW50IHdoZXRoZXIgSklUIGNvbXBpbGF0aW9uIGlz IGdvaW5nIHRvIGJlIHVzZWQsCi0rICAgICBidXQgd2UgaGF2ZSB0byBkZWNpZGUgb24gYSBzaXpl LiAgVGVzdHMgd2l0aCBzb21lIHNpbXBsZSBwYXR0ZXJucyBpbmRpY2F0ZQotKyAgICAgYSByb3Vn aGx5IDUwJSBpbmNyZWFzZSBpbiBzaXplIHdoZW4gc3R1ZHlpbmcgd2l0aG91dCBKSVQuICBBIGZh Y3RvciBvZiB0d28KLSsgICAgIHRpbWVzIGhlbmNlIHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGJv dW5kIHRvIHVzZSBoZXJlLiAqLwotKyAgcGNyZTJfcGF0dGVybl9pbmZvKHJlZ2V4cCwgUENSRTJf SU5GT19TSVpFLCAmcmVnZXhwX3NpemUpOwotKyAgdl9yZXggPQotKyAgICAgIGNhbWxfYWxsb2Nf Y3VzdG9tX21lbSgmcmVnZXhwX29wcywgb2NhbWxfcmVnZXhwX3NpemUsIDIgKiByZWdleHBfc2l6 ZSk7Ci0rCi0rICBzZXRfcmV4KHZfcmV4LCByZWdleHApOwotKyAgc2V0X21jb250ZXh0KHZfcmV4 LCBwY3JlMl9tYXRjaF9jb250ZXh0X2NyZWF0ZShOVUxMKSk7Ci0rCi0rICByZXR1cm4gdl9yZXg7 Ci0rfQotKwotK0NBTUxwcmltIHZhbHVlIHBjcmUyX2NvbXBpbGVfc3R1Yl9iYyh2YWx1ZSB2X29w dCwgdmFsdWUgdl90YWJsZXMsIHZhbHVlIHZfcGF0KSB7Ci0rICByZXR1cm4gcGNyZTJfY29tcGls ZV9zdHViKEludDY0X3ZhbCh2X29wdCksIHZfdGFibGVzLCB2X3BhdCk7Ci0rfQotKwotKy8qIEdl dHMgdGhlIGRlcHRoIGxpbWl0IG9mIGEgcmVndWxhciBleHByZXNzaW9uIGlmIGl0IGV4aXN0cyAq LwotKy8qIENBTUxwcmltIHZhbHVlIHBjcmUyX2dldF9kZXB0aF9saW1pdF9zdHViKHZhbHVlIHZf cmV4KTsgKi8KLSsKLSsvKiBHZXRzIHRoZSBtYXRjaCBsaW1pdCBvZiBhIHJlZ3VsYXIgZXhwcmVz c2lvbiBpZiBpdCBleGlzdHMgKi8KLSsvKiBDQU1McHJpbSB2YWx1ZSBwY3JlMl9nZXRfbWF0Y2hf bGltaXRfc3R1Yih2YWx1ZSB2X3JleCk7ICovCi0rCi0rLyogU2V0cyBhIG1hdGNoIGxpbWl0IGZv ciBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbXBlcmF0aXZlbHkgKi8KLSsKLStDQU1McHJpbSB2YWx1 ZSBwY3JlMl9zZXRfaW1wX21hdGNoX2xpbWl0X3N0dWIodmFsdWUgdl9yZXgsIGludG5hdCB2X2xp bSkgewotKyAgcGNyZTJfbWF0Y2hfY29udGV4dCAqbWNvbnRleHQgPSBnZXRfbWNvbnRleHQodl9y ZXgpOwotKyAgcGNyZTJfc2V0X21hdGNoX2xpbWl0KG1jb250ZXh0LCB2X2xpbSk7Ci0rICByZXR1 cm4gdl9yZXg7Ci0rfQotKwotK0NBTUxwcmltIHZhbHVlIHBjcmUyX3NldF9pbXBfbWF0Y2hfbGlt aXRfc3R1Yl9iYyh2YWx1ZSB2X3JleCwgdmFsdWUgdl9saW0pIHsKLSsgIHJldHVybiBwY3JlMl9z ZXRfaW1wX21hdGNoX2xpbWl0X3N0dWIodl9yZXgsIEludF92YWwodl9saW0pKTsKLSt9Ci0rCi0r LyogU2V0cyBhIGRlcHRoIGxpbWl0IGZvciBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbXBlcmF0aXZl bHkgKi8KLSsKLStDQU1McHJpbSB2YWx1ZSBwY3JlMl9zZXRfaW1wX2RlcHRoX2xpbWl0X3N0dWIo dmFsdWUgdl9yZXgsIGludG5hdCB2X2xpbSkgewotKyAgcGNyZTJfbWF0Y2hfY29udGV4dCAqbWNv bnRleHQgPSBnZXRfbWNvbnRleHQodl9yZXgpOwotKyAgcGNyZTJfc2V0X2RlcHRoX2xpbWl0KG1j b250ZXh0LCB2X2xpbSk7Ci0rICByZXR1cm4gdl9yZXg7Ci0rfQotKwotK0NBTUxwcmltIHZhbHVl IHBjcmUyX3NldF9pbXBfZGVwdGhfbGltaXRfc3R1Yl9iYyh2YWx1ZSB2X3JleCwgdmFsdWUgdl9s aW0pIHsKLSsgIHJldHVybiBwY3JlMl9zZXRfaW1wX2RlcHRoX2xpbWl0X3N0dWIodl9yZXgsIElu dF92YWwodl9saW0pKTsKLSt9Ci0rCi0rLyogUGVyZm9ybXMgdGhlIGNhbGwgdG8gdGhlIHBjcmUy X3BhdHRlcm5faW5mbyBmdW5jdGlvbiAqLwotK3N0YXRpYyBpbmxpbmUgaW50IHBjcmUyX3BhdHRl cm5faW5mb19zdHViKHZhbHVlIHZfcmV4LCBpbnQgd2hhdCwgdm9pZCAqd2hlcmUpIHsKLSsgIHJl dHVybiBwY3JlMl9wYXR0ZXJuX2luZm8oZ2V0X3JleCh2X3JleCksIHdoYXQsIHdoZXJlKTsKLSt9 Ci0rCi0rLyogU29tZSBzdHVicyBmb3IgaW5mby1mdW5jdGlvbnMgKi8KLSsKLSsvKiBHZW5lcmlj IG1hY3JvIGZvciBnZXR0aW5nIGludGVnZXIgcmVzdWx0cyBmcm9tIHBjcmUyX3BhdHRlcm5faW5m byAqLwotKyNkZWZpbmUgTUFLRV9JTlROQVRfSU5GTyh0cCwgbmFtZSwgb3B0aW9uKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBDQU1McHJpbSBpbnRuYXQgcGNyZTJf IyNuYW1lIyNfc3R1Yih2YWx1ZSB2X3JleCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsgICAgdHAgb3B0aW9uczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBjb25zdCBpbnQgcmV0ID0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAg ICAgICBwY3JlMl9wYXR0ZXJuX2luZm9fc3R1Yih2X3JleCwgUENSRTJfSU5GT18jI29wdGlvbiwg Jm9wdGlvbnMpOyAgICAgICAgIFwKLSsgICAgaWYgKHJldCAhPSAwKSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgIHJh aXNlX2ludGVybmFsX2Vycm9yKCJwY3JlMl8jI25hbWUjI19zdHViIik7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCi0rICAgIHJldHVybiBvcHRpb25zOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgIH0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICBDQU1McHJpbSB2YWx1ZSBw Y3JlMl8jI25hbWUjI19zdHViX2JjKHZhbHVlIHZfcmV4KSB7ICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSsgICAgcmV0dXJuIFZhbF9pbnQocGNyZTJfIyNuYW1lIyNfc3R1Yih2X3JleCkpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgfQotKwotK01BS0VfSU5UTkFUX0lO Rk8oc2l6ZV90LCBzaXplLCBTSVpFKQotK01BS0VfSU5UTkFUX0lORk8oaW50LCBjYXB0dXJlY291 bnQsIENBUFRVUkVDT1VOVCkKLStNQUtFX0lOVE5BVF9JTkZPKGludCwgYmFja3JlZm1heCwgQkFD S1JFRk1BWCkKLStNQUtFX0lOVE5BVF9JTkZPKGludCwgbmFtZWNvdW50LCBOQU1FQ09VTlQpCi0r TUFLRV9JTlROQVRfSU5GTyhpbnQsIG5hbWVlbnRyeXNpemUsIE5BTUVFTlRSWVNJWkUpCi0rCi0r Q0FNTHByaW0gaW50NjRfdCBwY3JlMl9hcmdvcHRpb25zX3N0dWIodmFsdWUgdl9yZXgpIHsKLSsg IHVpbnQzMl90IG9wdGlvbnM7Ci0rICBjb25zdCBpbnQgcmV0ID0KLSsgICAgICBwY3JlMl9wYXR0 ZXJuX2luZm9fc3R1Yih2X3JleCwgUENSRTJfSU5GT19BUkdPUFRJT05TLCAmb3B0aW9ucyk7Ci0r ICBpZiAocmV0ICE9IDApCi0rICAgIHJhaXNlX2ludGVybmFsX2Vycm9yKCJwY3JlMl9hcmdvcHRp b25zX3N0dWIiKTsKLSsgIHJldHVybiAoaW50NjRfdClvcHRpb25zOwotK30KLSsKLStDQU1McHJp bSB2YWx1ZSBwY3JlMl9hcmdvcHRpb25zX3N0dWJfYmModmFsdWUgdl9yZXgpIHsKLSsgIENBTUxw YXJhbTEodl9yZXgpOwotKyAgQ0FNTHJldHVybihjYW1sX2NvcHlfaW50NjQocGNyZTJfYXJnb3B0 aW9uc19zdHViKHZfcmV4KSkpOwotK30KLSsKLStDQU1McHJpbSB2YWx1ZSBwY3JlMl9maXJzdGNv ZGV1bml0X3N0dWIodmFsdWUgdl9yZXgpIHsKLSsgIHVpbnQzMl90IGZpcnN0Y29kZXR5cGU7Ci0r ICBjb25zdCBpbnQgcmV0ID0KLSsgICAgICBwY3JlMl9wYXR0ZXJuX2luZm9fc3R1Yih2X3JleCwg UENSRTJfSU5GT19GSVJTVENPREVUWVBFLCAmZmlyc3Rjb2RldHlwZSk7Ci0rCi0rICBpZiAocmV0 ICE9IDApCi0rICAgIHJhaXNlX2ludGVybmFsX2Vycm9yKCJwY3JlMl9maXJzdGNvZGV1bml0X3N0 dWIiKTsKLSsKLSsgIHN3aXRjaCAoZmlyc3Rjb2RldHlwZSkgewotKyAgY2FzZSAyOgotKyAgICBy ZXR1cm4gdmFyX1N0YXJ0X29ubHk7Ci0rICAgIGJyZWFrOyAvKiBbYFN0YXJ0X29ubHldICovCi0r ICBjYXNlIDA6Ci0rICAgIHJldHVybiB2YXJfQU5DSE9SRUQ7Ci0rICAgIGJyZWFrOyAvKiBbYEFO Q0hPUkVEXSAqLwotKyAgY2FzZSAxOiB7Ci0rICAgIHVpbnQzMl90IGZpcnN0Y29kZXVuaXQ7Ci0r ICAgIGNvbnN0IGludCByZXQgPSBwY3JlMl9wYXR0ZXJuX2luZm9fc3R1Yih2X3JleCwgUENSRTJf SU5GT19GSVJTVENPREVVTklULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmZpcnN0Y29kZXVuaXQpOwotKyAgICBpZiAocmV0ICE9IDApCi0rICAgICAgcmFp c2VfaW50ZXJuYWxfZXJyb3IoInBjcmUyX2ZpcnN0Y29kZXVuaXRfc3R1YiIpOwotKwotKyAgICB2 YWx1ZSB2X2ZpcnN0Ynl0ZTsKLSsgICAgLyogQWxsb2NhdGVzIHRoZSBub24tY29uc3RhbnQgY29u c3RydWN0b3IgW2BDaGFyIG9mIGNoYXJdIGFuZCBmaWxscwotKyAgICAgICBpbiB0aGUgYXBwcm9w cmlhdGUgdmFsdWUgKi8KLSsgICAgdl9maXJzdGJ5dGUgPSBjYW1sX2FsbG9jX3NtYWxsKDIsIDAp OwotKyAgICBGaWVsZCh2X2ZpcnN0Ynl0ZSwgMCkgPSB2YXJfQ2hhcjsKLSsgICAgRmllbGQodl9m aXJzdGJ5dGUsIDEpID0gVmFsX2ludChmaXJzdGNvZGV1bml0KTsKLSsKLSsgICAgcmV0dXJuIHZf Zmlyc3RieXRlOwotKyAgICBicmVhazsKLSsgIH0KLSsgIGRlZmF1bHQ6IC8qIFNob3VsZCBub3Qg aGFwcGVuICovCi0rICAgIHJhaXNlX2ludGVybmFsX2Vycm9yKCJwY3JlMl9maXJzdGNvZGV1bml0 X3N0dWIiKTsKLSsgIH0KLSt9Ci0rCi0rQ0FNTHByaW0gdmFsdWUgcGNyZTJfbGFzdGNvZGV1bml0 X3N0dWIodmFsdWUgdl9yZXgpIHsKLSsgIHVpbnQzMl90IGxhc3Rjb2RldHlwZTsKLSsgIGNvbnN0 IGludCByZXQgPQotKyAgICAgIHBjcmUyX3BhdHRlcm5faW5mb19zdHViKHZfcmV4LCBQQ1JFMl9J TkZPX0xBU1RDT0RFVFlQRSwgJmxhc3Rjb2RldHlwZSk7Ci0rCi0rICBpZiAocmV0ICE9IDApCi0r ICAgIHJhaXNlX2ludGVybmFsX2Vycm9yKCJwY3JlMl9sYXN0Y29kZXVuaXRfc3R1YiIpOwotKwot KyAgaWYgKGxhc3Rjb2RldHlwZSA9PSAwKQotKyAgICByZXR1cm4gVmFsX25vbmU7Ci0rICBpZiAo bGFzdGNvZGV0eXBlICE9IDEpCi0rICAgIHJhaXNlX2ludGVybmFsX2Vycm9yKCJwY3JlMl9sYXN0 Y29kZXVuaXRfc3R1YiIpOwotKyAgZWxzZSB7Ci0rICAgIHVpbnQzMl90IGxhc3Rjb2RldW5pdDsK LSsgICAgY29uc3QgaW50IHJldCA9Ci0rICAgICAgICBwY3JlMl9wYXR0ZXJuX2luZm9fc3R1Yih2 X3JleCwgUENSRTJfSU5GT19MQVNUQ09ERVVOSVQsICZsYXN0Y29kZXVuaXQpOwotKyAgICBpZiAo cmV0ICE9IDApCi0rICAgICAgcmFpc2VfaW50ZXJuYWxfZXJyb3IoInBjcmUyX2xhc3Rjb2RldW5p dF9zdHViIik7Ci0rICAgIHJldHVybiBjYW1sX2FsbG9jX3NvbWUoVmFsX2ludChsYXN0Y29kZXVu aXQpKTsKLSsgIH0KLSt9Ci0rCi0rQ0FNTG5vcmV0dXJuX3N0YXJ0IHN0YXRpYyBpbmxpbmUgdm9p ZAotK2hhbmRsZV9tYXRjaF9lcnJvcihjaGFyICpsb2MsIGNvbnN0IGludCByZXQpIENBTUxub3Jl dHVybl9lbmQ7Ci0rCi0rc3RhdGljIGlubGluZSB2b2lkIGhhbmRsZV9tYXRjaF9lcnJvcihjaGFy ICpsb2MsIGNvbnN0IGludCByZXQpIHsKLSsgIHN3aXRjaCAocmV0KSB7Ci0rICAvKiBEZWRpY2F0 ZWQgZXhjZXB0aW9ucyAqLwotKyAgY2FzZSBQQ1JFMl9FUlJPUl9OT01BVENIOgotKyAgICBjYW1s X3JhaXNlX25vdF9mb3VuZCgpOwotKyAgY2FzZSBQQ1JFMl9FUlJPUl9QQVJUSUFMOgotKyAgICBy YWlzZV9wYXJ0aWFsKCk7Ci0rICBjYXNlIFBDUkUyX0VSUk9SX01BVENITElNSVQ6Ci0rICAgIHJh aXNlX21hdGNoX2xpbWl0KCk7Ci0rICBjYXNlIFBDUkUyX0VSUk9SX0JBRFVURk9GRlNFVDoKLSsg ICAgcmFpc2VfYmFkX3V0Zl9vZmZzZXQoKTsKLSsgIGNhc2UgUENSRTJfRVJST1JfREVQVEhMSU1J VDoKLSsgICAgcmFpc2VfZGVwdGhfbGltaXQoKTsKLSsgIGNhc2UgUENSRTJfRVJST1JfREZBX1dT U0laRToKLSsgICAgcmFpc2Vfd29ya3NwYWNlX3NpemUoKTsKLSsgIGRlZmF1bHQ6IHsKLSsgICAg aWYgKFBDUkUyX0VSUk9SX1VURjhfRVJSMjEgPD0gcmV0ICYmIHJldCA8PSBQQ1JFMl9FUlJPUl9V VEY4X0VSUjEpCi0rICAgICAgcmFpc2VfYmFkX3V0ZigpOwotKyAgICAvKiBVbmtub3duIGVycm9y ICovCi0rICAgIGNoYXIgZXJyX2J1ZlsxMDBdOwotKyAgICBzbnByaW50ZihlcnJfYnVmLCAxMDAs ICIlczogdW5oYW5kbGVkIFBDUkUyIGVycm9yIGNvZGU6ICVkIiwgbG9jLCByZXQpOwotKyAgICBy YWlzZV9pbnRlcm5hbF9lcnJvcihlcnJfYnVmKTsKLSsgIH0KLSsgIH0KLSt9Ci0rCi0rc3RhdGlj IGlubGluZSB2b2lkIGhhbmRsZV9wY3JlMl9tYXRjaF9yZXN1bHQoc2l6ZV90ICpvdmVjLCB2YWx1 ZSB2X292ZWMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZV90IG92ZWNfbGVuLCBsb25nIHN1Ympfc3RhcnQsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcmV0KSB7Ci0rICBjYW1sX2ludF9wdHIg b2NhbWxfb3ZlYyA9IChjYW1sX2ludF9wdHIpJkZpZWxkKHZfb3ZlYywgMCk7Ci0rICBjb25zdCB1 aW50MzJfdCBzdWJncm91cHMyID0gcmV0ICogMjsKLSsgIGNvbnN0IHVpbnQzMl90IHN1Ymdyb3Vw czJfMSA9IHN1Ymdyb3VwczIgLSAxOwotKyAgY29uc3Qgc2l6ZV90ICpvdmVjX3NyYyA9IG92ZWMg KyBzdWJncm91cHMyXzE7Ci0rICBjYW1sX2ludF9wdHIgb3ZlY19jbGVhcl9zdG9wID0gb2NhbWxf b3ZlYyArIChvdmVjX2xlbiAqIDIpIC8gMzsKLSsgIGNhbWxfaW50X3B0ciBvdmVjX2RzdCA9IG9j YW1sX292ZWMgKyBzdWJncm91cHMyXzE7Ci0rICBjb3B5X292ZWN0b3Ioc3Vial9zdGFydCwgb3Zl Y19zcmMsIG92ZWNfZHN0LCBzdWJncm91cHMyKTsKLSsgIHdoaWxlICgrK292ZWNfZHN0IDwgb3Zl Y19jbGVhcl9zdG9wKQotKyAgICAqb3ZlY19kc3QgPSAtMTsKLSt9Ci0rCi0rLyogRXhlY3V0ZXMg YSBwYXR0ZXJuIG1hdGNoIHdpdGggcnVudGltZSBvcHRpb25zLCBhIHJlZ3VsYXIgZXhwcmVzc2lv biwgYQotKyAgIG1hdGNoaW5nIHBvc2l0aW9uLCB0aGUgc3RhcnQgb2YgdGhlIHN1YmplY3Qgc3Ry aW5nLCBhIHN1YmplY3Qgc3RyaW5nLAotKyAgIGEgbnVtYmVyIG9mIHN1Ymdyb3VwIG9mZnNldHMs IGFuIG9mZnNldCB2ZWN0b3IgYW5kIGFuIG9wdGlvbmFsIGNhbGxvdXQKLSsgICBmdW5jdGlvbiAq LwotKwotK0NBTUxwcmltIHZhbHVlIHBjcmUyX21hdGNoX3N0dWIwKGludDY0X3Qgdl9vcHQsIHZh bHVlIHZfcmV4LCBpbnRuYXQgdl9wb3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50bmF0IHZfc3Vial9zdGFydCwgdmFsdWUgdl9zdWJqLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZhbHVlIHZfb3ZlYywgdmFsdWUgdl9tYXliZV9jb2YsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgdl93b3Jrc3BhY2UpIHsKLSsgIGludCBy ZXQ7Ci0rICBpbnQgaXNfZGZhID0gdl93b3Jrc3BhY2UgIT0gKHZhbHVlKU5VTEw7Ci0rICBsb25n IHBvcyA9IHZfcG9zLCBzdWJqX3N0YXJ0ID0gdl9zdWJqX3N0YXJ0OwotKyAgc2l6ZV90IG92ZWNf bGVuID0gV29zaXplX3ZhbCh2X292ZWMpLCBsZW4gPSBjYW1sX3N0cmluZ19sZW5ndGgodl9zdWJq KTsKLSsKLSsgIGlmIChwb3MgPiAobG9uZylsZW4gfHwgcG9zIDwgc3Vial9zdGFydCkKLSsgICAg Y2FtbF9pbnZhbGlkX2FyZ3VtZW50KCJQY3JlMi5wY3JlMl9tYXRjaF9zdHViOiBpbGxlZ2FsIHBv c2l0aW9uIik7Ci0rCi0rICBpZiAoc3Vial9zdGFydCA+IChsb25nKWxlbiB8fCBzdWJqX3N0YXJ0 IDwgMCkKLSsgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KCJQY3JlMi5wY3JlMl9tYXRjaF9zdHVi OiBpbGxlZ2FsIHN1YmplY3Qgc3RhcnQiKTsKLSsKLSsgIHBvcyAtPSBzdWJqX3N0YXJ0OwotKyAg bGVuIC09IHN1Ympfc3RhcnQ7Ci0rCi0rICB7Ci0rICAgIGNvbnN0IHBjcmUyX2NvZGUgKmNvZGUg PSBnZXRfcmV4KHZfcmV4KTsgICAgICAgICAgICAgLyogQ29tcGlsZWQgcGF0dGVybiAqLwotKyAg ICBwY3JlMl9tYXRjaF9jb250ZXh0ICptY29udGV4dCA9IGdldF9tY29udGV4dCh2X3JleCk7IC8q IE1hdGNoIGNvbnRleHQgKi8KLSsgICAgUENSRTJfU1BUUiBvY2FtbF9zdWJqID0KLSsgICAgICAg IChQQ1JFMl9TUFRSKVN0cmluZ192YWwodl9zdWJqKSArIHN1Ympfc3RhcnQ7IC8qIFN1YmplY3Qg c3RyaW5nICovCi0rCi0rICAgIHBjcmUyX21hdGNoX2RhdGEgKm1hdGNoX2RhdGEgPQotKyAgICAg ICAgcGNyZTJfbWF0Y2hfZGF0YV9jcmVhdGVfZnJvbV9wYXR0ZXJuKGNvZGUsIE5VTEwpOwotKwot KyAgICAvKiBTcGVjaWFsIGNhc2Ugd2hlbiBubyBjYWxsb3V0IGZ1bmN0aW9ucyBzcGVjaWZpZWQg Ki8KLSsgICAgaWYgKElzX25vbmUodl9tYXliZV9jb2YpKSB7Ci0rICAgICAgLyogUGVyZm9ybXMg dGhlIG1hdGNoICovCi0rICAgICAgaWYgKGlzX2RmYSkKLSsgICAgICAgIHJldCA9IHBjcmUyX2Rm YV9tYXRjaChjb2RlLCBvY2FtbF9zdWJqLCBsZW4sIHBvcywgdl9vcHQsIG1hdGNoX2RhdGEsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWNvbnRleHQsIChpbnQgKikmRmllbGQodl93 b3Jrc3BhY2UsIDApLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvc2l6ZV92YWwo dl93b3Jrc3BhY2UpKTsKLSsgICAgICBlbHNlCi0rICAgICAgICByZXQgPSBwY3JlMl9tYXRjaChj b2RlLCBvY2FtbF9zdWJqLCBsZW4sIHBvcywgdl9vcHQsIG1hdGNoX2RhdGEsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICBtY29udGV4dCk7Ci0rCi0rICAgICAgc2l6ZV90ICpvdmVjID0gcGNy ZTJfZ2V0X292ZWN0b3JfcG9pbnRlcihtYXRjaF9kYXRhKTsKLSsKLSsgICAgICBpZiAocmV0IDwg MCkgewotKyAgICAgICAgcGNyZTJfbWF0Y2hfZGF0YV9mcmVlKG1hdGNoX2RhdGEpOwotKyAgICAg ICAgaGFuZGxlX21hdGNoX2Vycm9yKCJwY3JlMl9tYXRjaF9zdHViIiwgcmV0KTsKLSsgICAgICB9 IGVsc2UgewotKyAgICAgICAgaGFuZGxlX3BjcmUyX21hdGNoX3Jlc3VsdChvdmVjLCB2X292ZWMs IG92ZWNfbGVuLCBzdWJqX3N0YXJ0LCByZXQpOwotKyAgICAgIH0KLSsgICAgfQotKwotKyAgICAv KiBUaGVyZSBhcmUgY2FsbG91dCBmdW5jdGlvbnMgKi8KLSsgICAgZWxzZSB7Ci0rICAgICAgdmFs dWUgdl9jb2YgPSBGaWVsZCh2X21heWJlX2NvZiwgMCk7Ci0rICAgICAgdmFsdWUgdl9zdWJzdHJp bmdzOwotKyAgICAgIFBDUkUyX1VDSEFSICpzdWJqID0gY2FtbF9zdGF0X2FsbG9jKHNpemVvZihj aGFyKSAqIGxlbik7Ci0rICAgICAgaW50IHdvcmtzcGFjZV9sZW4gPSAwOwotKyAgICAgIGludCAq d29ya3NwYWNlID0gTlVMTDsKLSsgICAgICBzdHJ1Y3QgY29kIGNvZCA9IHswLCAodmFsdWUgKilO VUxMLCAodmFsdWUgKilOVUxMLCAodmFsdWUpTlVMTH07Ci0rICAgICAgcGNyZTJfbWF0Y2hfY29u dGV4dCAqbmV3X21jb250ZXh0ID0gcGNyZTJfbWF0Y2hfY29udGV4dF9jb3B5KG1jb250ZXh0KTsK LSsKLSsgICAgICBwY3JlMl9zZXRfY2FsbG91dCgKLSsgICAgICAgICAgbmV3X21jb250ZXh0LAot KyAgICAgICAgICAoaW50ICgqKShwY3JlMl9jYWxsb3V0X2Jsb2NrXzggKiwgdm9pZCAqKSkmcGNy ZTJfY2FsbG91dF9oYW5kbGVyLAotKyAgICAgICAgICAmY29kKTsKLSsKLSsgICAgICBjb2Quc3Vi al9zdGFydCA9IHN1Ympfc3RhcnQ7Ci0rICAgICAgbWVtY3B5KHN1YmosIG9jYW1sX3N1YmosIGxl bik7Ci0rCi0rICAgICAgQmVnaW5fcm9vdHM0KHZfcmV4LCB2X2NvZiwgdl9zdWJzdHJpbmdzLCB2 X292ZWMpOwotKyAgICAgIEJlZ2luX3Jvb3RzMSh2X3N1YmopOwotKyAgICAgIHZfc3Vic3RyaW5n cyA9IGNhbWxfYWxsb2Nfc21hbGwoMiwgMCk7Ci0rICAgICAgRW5kX3Jvb3RzKCk7Ci0rCi0rICAg ICAgRmllbGQodl9zdWJzdHJpbmdzLCAwKSA9IHZfc3ViajsKLSsgICAgICBGaWVsZCh2X3N1YnN0 cmluZ3MsIDEpID0gdl9vdmVjOwotKwotKyAgICAgIGNvZC52X3N1YnN0cmluZ3NfcCA9ICZ2X3N1 YnN0cmluZ3M7Ci0rICAgICAgY29kLnZfY29mX3AgPSAmdl9jb2Y7Ci0rCi0rICAgICAgaWYgKGlz X2RmYSkgewotKyAgICAgICAgd29ya3NwYWNlX2xlbiA9IFdvc2l6ZV92YWwodl93b3Jrc3BhY2Up OwotKyAgICAgICAgd29ya3NwYWNlID0gY2FtbF9zdGF0X2FsbG9jKHNpemVvZihpbnQpICogd29y a3NwYWNlX2xlbik7Ci0rICAgICAgICByZXQgPSBwY3JlMl9kZmFfbWF0Y2goY29kZSwgc3Viaiwg bGVuLCBwb3MsIHZfb3B0LCBtYXRjaF9kYXRhLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5ld19tY29udGV4dCwgKGludCAqKSZGaWVsZCh2X3dvcmtzcGFjZSwgMCksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlX2xlbik7Ci0rICAgICAgfSBlbHNlCi0r ICAgICAgICByZXQgPQotKyAgICAgICAgICAgIHBjcmUyX21hdGNoKGNvZGUsIHN1YmosIGxlbiwg cG9zLCB2X29wdCwgbWF0Y2hfZGF0YSwgbmV3X21jb250ZXh0KTsKLSsKLSsgICAgICBjYW1sX3N0 YXRfZnJlZShzdWJqKTsKLSsgICAgICBFbmRfcm9vdHMoKTsKLSsKLSsgICAgICBwY3JlMl9tYXRj aF9jb250ZXh0X2ZyZWUobmV3X21jb250ZXh0KTsKLSsgICAgICBzaXplX3QgKm92ZWMgPSBwY3Jl Ml9nZXRfb3ZlY3Rvcl9wb2ludGVyKG1hdGNoX2RhdGEpOwotKyAgICAgIGlmIChyZXQgPCAwKSB7 Ci0rICAgICAgICBpZiAoaXNfZGZhKQotKyAgICAgICAgICBjYW1sX3N0YXRfZnJlZSh3b3Jrc3Bh Y2UpOwotKyAgICAgICAgcGNyZTJfbWF0Y2hfZGF0YV9mcmVlKG1hdGNoX2RhdGEpOwotKyAgICAg ICAgaWYgKHJldCA9PSBQQ1JFMl9FUlJPUl9DQUxMT1VUKQotKyAgICAgICAgICBjYW1sX3JhaXNl KGNvZC52X2V4bik7Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAgIGhhbmRsZV9tYXRjaF9lcnJv cigicGNyZTJfbWF0Y2hfc3R1YihjYWxsb3V0KSIsIHJldCk7Ci0rICAgICAgfSBlbHNlIHsKLSsg ICAgICAgIGhhbmRsZV9wY3JlMl9tYXRjaF9yZXN1bHQob3ZlYywgdl9vdmVjLCBvdmVjX2xlbiwg c3Vial9zdGFydCwgcmV0KTsKLSsgICAgICAgIGlmIChpc19kZmEpIHsKLSsgICAgICAgICAgY2Ft bF9pbnRfcHRyIG9jYW1sX3dvcmtzcGFjZV9kc3QgPQotKyAgICAgICAgICAgICAgKGNhbWxfaW50 X3B0cikmRmllbGQodl93b3Jrc3BhY2UsIDApOwotKyAgICAgICAgICBjb25zdCBpbnQgKndvcmtz cGFjZV9zcmMgPSB3b3Jrc3BhY2U7Ci0rICAgICAgICAgIGNvbnN0IGludCAqd29ya3NwYWNlX3Ny Y19zdG9wID0gd29ya3NwYWNlICsgd29ya3NwYWNlX2xlbjsKLSsgICAgICAgICAgd2hpbGUgKHdv cmtzcGFjZV9zcmMgIT0gd29ya3NwYWNlX3NyY19zdG9wKSB7Ci0rICAgICAgICAgICAgKm9jYW1s X3dvcmtzcGFjZV9kc3QgPSAqd29ya3NwYWNlX3NyYzsKLSsgICAgICAgICAgICBvY2FtbF93b3Jr c3BhY2VfZHN0Kys7Ci0rICAgICAgICAgICAgd29ya3NwYWNlX3NyYysrOwotKyAgICAgICAgICB9 Ci0rICAgICAgICAgIGNhbWxfc3RhdF9mcmVlKHdvcmtzcGFjZSk7Ci0rICAgICAgICB9Ci0rICAg ICAgfQotKyAgICB9Ci0rICAgIHBjcmUyX21hdGNoX2RhdGFfZnJlZShtYXRjaF9kYXRhKTsKLSsg IH0KLSsKLSsgIHJldHVybiBWYWxfdW5pdDsKLSt9Ci0rCi0rQ0FNTHByaW0gdmFsdWUgcGNyZTJf bWF0Y2hfc3R1YihpbnQ2NF90IHZfb3B0LCB2YWx1ZSB2X3JleCwgaW50bmF0IHZfcG9zLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50bmF0IHZfc3Vial9zdGFydCwgdmFsdWUg dl9zdWJqLCB2YWx1ZSB2X292ZWMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 YWx1ZSB2X21heWJlX2NvZikgewotKyAgcmV0dXJuIHBjcmUyX21hdGNoX3N0dWIwKHZfb3B0LCB2 X3JleCwgdl9wb3MsIHZfc3Vial9zdGFydCwgdl9zdWJqLCB2X292ZWMsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgdl9tYXliZV9jb2YsICh2YWx1ZSlOVUxMKTsKLSt9Ci0rCi0rLyogQnl0 ZS1jb2RlIGhvb2sgZm9yIHBjcmUyX21hdGNoX3N0dWIKLSsgICBOZWVkZWQsIGJlY2F1c2UgdGhl cmUgYXJlIG1vcmUgdGhhbiA1IGFyZ3VtZW50cyAqLwotK0NBTUxwcmltIHZhbHVlIHBjcmUyX21h dGNoX3N0dWJfYmModmFsdWUgKmFyZ3YsIGludCBfX3VudXNlZCBhcmduKSB7Ci0rICByZXR1cm4g cGNyZTJfbWF0Y2hfc3R1YjAoSW50NjRfdmFsKGFyZ3ZbMF0pLCBhcmd2WzFdLCBJbnRfdmFsKGFy Z3ZbMl0pLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEludF92YWwoYXJndlszXSksIGFy Z3ZbNF0sIGFyZ3ZbNV0sIGFyZ3ZbNl0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZh bHVlKU5VTEwpOwotK30KLSsKLSsvKiBCeXRlLWNvZGUgaG9vayBmb3IgcGNyZTJfZGZhX21hdGNo X3N0dWIKLSsgICBOZWVkZWQsIGJlY2F1c2UgdGhlcmUgYXJlIG1vcmUgdGhhbiA1IGFyZ3VtZW50 cyAqLwotK0NBTUxwcmltIHZhbHVlIHBjcmUyX2RmYV9tYXRjaF9zdHViX2JjKHZhbHVlICphcmd2 LCBpbnQgX191bnVzZWQgYXJnbikgewotKyAgcmV0dXJuIHBjcmUyX21hdGNoX3N0dWIwKEludDY0 X3ZhbChhcmd2WzBdKSwgYXJndlsxXSwgSW50X3ZhbChhcmd2WzJdKSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICBJbnRfdmFsKGFyZ3ZbM10pLCBhcmd2WzRdLCBhcmd2WzVdLCBhcmd2WzZd LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3ZbN10pOwotK30KLSsKLStzdGF0aWMg c3RydWN0IGN1c3RvbV9vcGVyYXRpb25zIHRhYmxlc19vcHMgPSB7Ci0rICAgICJwY3JlMl9vY2Ft bF90YWJsZXMiLCAgICAgICBwY3JlMl9kZWFsbG9jX3RhYmxlcywKLSsgICAgY3VzdG9tX2NvbXBh cmVfZGVmYXVsdCwgICAgIGN1c3RvbV9oYXNoX2RlZmF1bHQsCi0rICAgIGN1c3RvbV9zZXJpYWxp emVfZGVmYXVsdCwgICBjdXN0b21fZGVzZXJpYWxpemVfZGVmYXVsdCwKLSsgICAgY3VzdG9tX2Nv bXBhcmVfZXh0X2RlZmF1bHQsIGN1c3RvbV9maXhlZF9sZW5ndGhfZGVmYXVsdH07Ci0rCi0rLyog R2VuZXJhdGVzIGEgbmV3IHNldCBvZiBjaGFydGFibGVzIGZvciB0aGUgY3VycmVudCBsb2NhbGUg KHNlZSBtYW4KLSsgICBwYWdlIG9mIFBDUkUgKi8KLStDQU1McHJpbSB2YWx1ZSBwY3JlMl9tYWtl dGFibGVzX3N0dWIodmFsdWUgX191bnVzZWQgdl91bml0KSB7Ci0rICAvKiBBY2NvcmRpbmcgdG8g dGVzdGluZyB3aXRoIGBtYWxsb2Nfc2l6ZWAsIGl0IHNlZW1zIHRoYXQgYSB0eXBpY2FsIHNldCBv ZgotKyAgICAgdGFibGVzIHdpbGwgcmVxdWlyZSBhYm91dCAxNTM2IGJ5dGVzIG9mIG1lbW9yeS4g IFRoaXMgbWF5IG9yIG1heSBub3QKLSsgICAgIGJlIHRydWUgb24gb3RoZXIgcGxhdGZvcm1zIG9y IGZvciBhbGwgdmVyc2lvbnMgb2YgUENSRS4gIFNpbmNlIHRoZXJlCi0rICAgICBpcyBhcHBhcmVu dGx5IG5vIHJlbGlhYmxlIHdheSBvZiBmaW5kaW5nIG91dCwgMTUzNiBpcyBwcm9iYWJseSBhIGdv b2QKLSsgICAgIGRlZmF1bHQgdmFsdWUuICovCi0rICBzaXplX3QgdGFibGVzX3NpemUgPSBzaXpl b2Yoc3RydWN0IHBjcmUyX29jYW1sX3RhYmxlcyk7Ci0rICBjb25zdCB2YWx1ZSB2X3RhYmxlcyA9 IGNhbWxfYWxsb2NfY3VzdG9tX21lbSgmdGFibGVzX29wcywgdGFibGVzX3NpemUsIDE1MzYpOwot KyAgc2V0X3RhYmxlcyh2X3RhYmxlcywgcGNyZTJfbWFrZXRhYmxlcyhOVUxMKSk7Ci0rICByZXR1 cm4gdl90YWJsZXM7Ci0rfQotKwotKy8qIFdyYXBzIGFyb3VuZCB0aGUgaXNzcGFjZS1mdW5jdGlv biAqLwotK0NBTUxwcmltIHZhbHVlIHBjcmUyX2lzc3BhY2Vfc3R1Yih2YWx1ZSB2X2MpIHsKLSsg IHJldHVybiBWYWxfYm9vbChpc3NwYWNlKEludF92YWwodl9jKSkpOwotK30KLSsKLSsvKiBSZXR1 cm5zIG51bWJlciBvZiBzdWJzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIGEgbmFtZSAqLwotKwotK0NB TUxwcmltIGludG5hdCBwY3JlMl9zdWJzdHJpbmdfbnVtYmVyX2Zyb21fbmFtZV9zdHViKHZhbHVl IHZfcmV4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZhbHVlIHZfbmFtZSkgewotKyAgY29uc3QgaW50IHJldCA9IHBjcmUyX3N1YnN0cmlu Z19udW1iZXJfZnJvbV9uYW1lKAotKyAgICAgIGdldF9yZXgodl9yZXgpLCAoUENSRTJfU1BUUilT dHJpbmdfdmFsKHZfbmFtZSkpOwotKyAgaWYgKHJldCA9PSBQQ1JFMl9FUlJPUl9OT1NVQlNUUklO RykKLSsgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KCJOYW1lZCBzdHJpbmcgbm90IGZvdW5kIik7 Ci0rCi0rICByZXR1cm4gcmV0OwotK30KLSsKLStDQU1McHJpbSB2YWx1ZSBwY3JlMl9zdWJzdHJp bmdfbnVtYmVyX2Zyb21fbmFtZV9zdHViX2JjKHZhbHVlIHZfcmV4LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgdl9uYW1lKSB7 Ci0rICByZXR1cm4gVmFsX2ludChwY3JlMl9zdWJzdHJpbmdfbnVtYmVyX2Zyb21fbmFtZV9zdHVi KHZfcmV4LCB2X25hbWUpKTsKLSt9Ci0rCi0rLyogUmV0dXJucyBhcnJheSBvZiBuYW1lcyBvZiBu YW1lZCBzdWJzdHJpbmdzIGluIGEgcmVnZXhwICovCi0rQ0FNTHByaW0gdmFsdWUgcGNyZTJfbmFt ZXNfc3R1Yih2YWx1ZSB2X3JleCkgewotKyAgQ0FNTHBhcmFtMSh2X3JleCk7Ci0rICBDQU1MbG9j YWwxKHZfcmVzKTsKLSsgIHVpbnQzMl90IG5hbWVfY291bnQ7Ci0rICB1aW50MzJfdCBlbnRyeV9z aXplOwotKyAgY29uc3QgY2hhciAqdGJsX3B0cjsKLSsgIHVpbnQzMl90IGk7Ci0rCi0rICBpbnQg cmV0ID0gcGNyZTJfcGF0dGVybl9pbmZvX3N0dWIodl9yZXgsIFBDUkUyX0lORk9fTkFNRUNPVU5U LCAmbmFtZV9jb3VudCk7Ci0rICBpZiAocmV0ICE9IDApCi0rICAgIHJhaXNlX2ludGVybmFsX2Vy cm9yKCJwY3JlMl9uYW1lc19zdHViOiBuYW1lY291bnQiKTsKLSsKLSsgIHJldCA9IHBjcmUyX3Bh dHRlcm5faW5mb19zdHViKHZfcmV4LCBQQ1JFMl9JTkZPX05BTUVFTlRSWVNJWkUsICZlbnRyeV9z aXplKTsKLSsgIGlmIChyZXQgIT0gMCkKLSsgICAgcmFpc2VfaW50ZXJuYWxfZXJyb3IoInBjcmUy X25hbWVzX3N0dWI6IG5hbWVlbnRyeXNpemUiKTsKLSsKLSsgIHJldCA9IHBjcmUyX3BhdHRlcm5f aW5mb19zdHViKHZfcmV4LCBQQ1JFMl9JTkZPX05BTUVUQUJMRSwgJnRibF9wdHIpOwotKyAgaWYg KHJldCAhPSAwKQotKyAgICByYWlzZV9pbnRlcm5hbF9lcnJvcigicGNyZTJfbmFtZXNfc3R1Yjog bmFtZXRhYmxlIik7Ci0rCi0rICB2X3JlcyA9IGNhbWxfYWxsb2MobmFtZV9jb3VudCwgMCk7Ci0r Ci0rICBmb3IgKGkgPSAwOyBpIDwgbmFtZV9jb3VudDsgKytpKSB7Ci0rICAgIHZhbHVlIHZfbmFt ZSA9IGNhbWxfY29weV9zdHJpbmcodGJsX3B0ciArIDIpOwotKyAgICBTdG9yZV9maWVsZCh2X3Jl cywgaSwgdl9uYW1lKTsKLSsgICAgdGJsX3B0ciArPSBlbnRyeV9zaXplOwotKyAgfQotKwotKyAg Q0FNTHJldHVybih2X3Jlcyk7Ci0rfQotKwotKy8qIEdlbmVyaWMgc3R1YiBmb3IgZ2V0dGluZyBp bnRlZ2VyIHJlc3VsdHMgZnJvbSBwY3JlMl9jb25maWcgKi8KLStzdGF0aWMgaW5saW5lIGludCBw Y3JlMl9jb25maWdfaW50KGludCB3aGF0KSB7Ci0rICBpbnQgcmV0OwotKyAgcGNyZTJfY29uZmln KHdoYXQsICh2b2lkICopJnJldCk7Ci0rICByZXR1cm4gcmV0OwotK30KLSsKLSsvKiBHZW5lcmlj IHN0dWIgZm9yIGdldHRpbmcgbG9uZyBpbnRlZ2VyIHJlc3VsdHMgZnJvbSBwY3JlMl9jb25maWcg Ki8KLStzdGF0aWMgaW5saW5lIGxvbmcgcGNyZTJfY29uZmlnX2xvbmcoaW50IHdoYXQpIHsKLSsg IGxvbmcgcmV0OwotKyAgcGNyZTJfY29uZmlnKHdoYXQsICh2b2lkICopJnJldCk7Ci0rICByZXR1 cm4gcmV0OwotK30KLSsKLSsvKiBTb21lIHN0dWJzIGZvciBjb25maWctZnVuY3Rpb25zICovCi0r Ci0rLyogTWFrZXMgT0NhbWwtc3RyaW5nIGZyb20gUENSRS12ZXJzaW9uICovCi0rQ0FNTHByaW0g dmFsdWUgcGNyZTJfdmVyc2lvbl9zdHViKHZhbHVlIF9fdW51c2VkIHZfdW5pdCkgewotKyAgQ0FN THBhcmFtMSh2X3VuaXQpOwotKyAgQ0FNTGxvY2FsMSh2X3ZlcnNpb24pOwotKyAgdl92ZXJzaW9u ID0gY2FtbF9hbGxvY19zdHJpbmcoMzIpOwotKwotKyAgcGNyZTJfY29uZmlnKFBDUkUyX0NPTkZJ R19WRVJTSU9OLCAodm9pZCAqKVN0cmluZ192YWwodl92ZXJzaW9uKSk7Ci0rCi0rICBDQU1McmV0 dXJuKHZfdmVyc2lvbik7Ci0rfQotKwotKy8qIFJldHVybnMgYm9vbGVhbiBpbmRpY2F0aW5nIHVu aWNvZGUgc3VwcG9ydCAqLwotK0NBTUxwcmltIHZhbHVlIHBjcmUyX2NvbmZpZ191bmljb2RlX3N0 dWIodmFsdWUgX191bnVzZWQgdl91bml0KSB7Ci0rICByZXR1cm4gVmFsX2Jvb2wocGNyZTJfY29u ZmlnX2ludChQQ1JFMl9DT05GSUdfVU5JQ09ERSkpOwotK30KLSsKLSsvKiBSZXR1cm5zIGNoYXJh Y3RlciB1c2VkIGFzIG5ld2xpbmUgKi8KLStDQU1McHJpbSB2YWx1ZSBwY3JlMl9jb25maWdfbmV3 bGluZV9zdHViKHZhbHVlIF9fdW51c2VkIHZfdW5pdCkgewotKyAgcmV0dXJuIFZhbF9pbnQocGNy ZTJfY29uZmlnX2ludChQQ1JFMl9DT05GSUdfTkVXTElORSkpOwotK30KLSsKLSsvKiBSZXR1cm5z IG51bWJlciBvZiBieXRlcyB1c2VkIGZvciBpbnRlcm5hbCBsaW5rYWdlIG9mIHJlZ3VsYXIgZXhw cmVzc2lvbnMgKi8KLSsKLStDQU1McHJpbSBpbnRuYXQgcGNyZTJfY29uZmlnX2xpbmtfc2l6ZV9z dHViKHZhbHVlIF9fdW51c2VkIHZfdW5pdCkgewotKyAgcmV0dXJuIHBjcmUyX2NvbmZpZ19pbnQo UENSRTJfQ09ORklHX0xJTktTSVpFKTsKLSt9Ci0rCi0rQ0FNTHByaW0gdmFsdWUgcGNyZTJfY29u ZmlnX2xpbmtfc2l6ZV9zdHViX2JjKHZhbHVlIHZfdW5pdCkgewotKyAgcmV0dXJuIFZhbF9pbnQo cGNyZTJfY29uZmlnX2xpbmtfc2l6ZV9zdHViKHZfdW5pdCkpOwotK30KLSsKLSsvKiBSZXR1cm5z IGRlZmF1bHQgbGltaXQgZm9yIGNhbGxzIHRvIGludGVybmFsIG1hdGNoaW5nIGZ1bmN0aW9uICov Ci0rCi0rQ0FNTHByaW0gaW50bmF0IHBjcmUyX2NvbmZpZ19tYXRjaF9saW1pdF9zdHViKHZhbHVl IF9fdW51c2VkIHZfdW5pdCkgewotKyAgcmV0dXJuIHBjcmUyX2NvbmZpZ19sb25nKFBDUkUyX0NP TkZJR19NQVRDSExJTUlUKTsKLSt9Ci0rCi0rQ0FNTHByaW0gdmFsdWUgcGNyZTJfY29uZmlnX21h dGNoX2xpbWl0X3N0dWJfYmModmFsdWUgdl91bml0KSB7Ci0rICByZXR1cm4gVmFsX2ludChwY3Jl Ml9jb25maWdfbWF0Y2hfbGltaXRfc3R1Yih2X3VuaXQpKTsKLSt9Ci0rCi0rLyogUmV0dXJucyBk ZWZhdWx0IGxpbWl0IGZvciBkZXB0aCBvZiBuZXN0ZWQgYmFja3RyYWNraW5nICAqLwotKwotK0NB TUxwcmltIGludG5hdCBwY3JlMl9jb25maWdfZGVwdGhfbGltaXRfc3R1Yih2YWx1ZSBfX3VudXNl ZCB2X3VuaXQpIHsKLSsgIHJldHVybiBwY3JlMl9jb25maWdfbG9uZyhQQ1JFMl9DT05GSUdfREVQ VEhMSU1JVCk7Ci0rfQotKwotK0NBTUxwcmltIHZhbHVlIHBjcmUyX2NvbmZpZ19kZXB0aF9saW1p dF9zdHViX2JjKHZhbHVlIHZfdW5pdCkgewotKyAgcmV0dXJuIFZhbF9pbnQocGNyZTJfY29uZmln X2RlcHRoX2xpbWl0X3N0dWIodl91bml0KSk7Ci0rfQotKwotKy8qIFJldHVybnMgYm9vbGVhbiBp bmRpY2F0aW5nIHVzZSBvZiBzdGFjayByZWN1cnNpb24gKi8KLStDQU1McHJpbSBpbnRuYXQgcGNy ZTJfY29uZmlnX3N0YWNrcmVjdXJzZV9zdHViKHZhbHVlIF9fdW51c2VkIHZfdW5pdCkgewotKyAg cmV0dXJuIFZhbF9ib29sKHBjcmUyX2NvbmZpZ19pbnQoUENSRTJfQ09ORklHX1NUQUNLUkVDVVJT RSkpOwotK30KLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3BhX3BweF90 ZXN0L01ha2VmaWxlIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9wYV9wcHhfdGVzdC9NYWtl ZmlsZQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uZTM1YmJjMWYxCi0t LS0gL2Rldi9udWxsCi0rKysgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3BhX3BweF90ZXN0 L01ha2VmaWxlCi1AQCAtMCwwICsxLDExIEBACi0rTk9UX09DQU1MRklORD1ub3Qtb2NhbWxmaW5k Ci0rCi0rYm9vdHN0cmFwOiAuLi90ZXN0L3BjcmUyX3Rlc3RzLm1sCi0rCi0rLi4vdGVzdC8lLm1s OiAlLm1sCi0rCSQoTk9UX09DQU1MRklORCkgcHJlcHJvY2VzcyBcCi0rCQktcGFja2FnZSBwYV9w cHhfcmVnZXhwLGNhbWxwNS5wcl9vIC1wcG9wdCAtcGFfcHB4X3JlZ2V4cC1ub3N0YXRpYyBcCi0r CQktc3ludGF4IGNhbWxwNW8gJDwgPiAkQC5ORVcgJiYgXAotKwltdiAkQC5ORVcgJEAKLSsKLSsu U1VGRklYRVM6IC5tbAotZGlmZiAtLWdpdCBhL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvcGFf cHB4X3Rlc3QvcGNyZTJfdGVzdHMubWwgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3BhX3Bw eF90ZXN0L3BjcmUyX3Rlc3RzLm1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MDAwLi43OWM5YWM3NjMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2J1bmRsZXMvcGNyZTIvcGNyZTIt b2NhbWwvcGFfcHB4X3Rlc3QvcGNyZTJfdGVzdHMubWwKLUBAIC0wLDAgKzEsMjQ5IEBACi0rb3Bl biBPVW5pdDIKLSsoKipwcCAtc3ludGF4IGNhbWxwNW8gLXBhY2thZ2UgcGFfcHB4LmRlcml2aW5n X3BsdWdpbnMuc3RkICopCi0rCi0rbGV0IHRlc3Rfc3BlY2lhbF9jaGFyX3JlZ2V4cHMgY3R4dCA9 Ci0rICAoKTsKLSsgIGFzc2VydF9lcXVhbCAiXG4iIChbJW1hdGNoIHt8XG4kfH0gLyBzIGV4YyBw Y3JlMiBzdHJpbmdzXSAiXG4iKTsKLSsgIGFzc2VydF9lcXVhbCAiIiAoWyVzdWJzdCB7fFxuKyR8 fSAvIHt8fH0gLyBzIHBjcmUyXSAiXG5cbiIpCi0rCi0rbGV0IHRlc3RfcGNyZTJfc2ltcGxlX21h dGNoIGN0eHQgPQotKyAgKCk7Ci0rICBhc3NlcnRfZXF1YWwgImFiYyIKLSsgICAgKFBjcmUyLmdl dF9zdWJzdHJpbmcgKFslbWF0Y2ggImFiYyIgLyBleGMgcmF3IHBjcmUyXSAiYWJjIikgMCk7Ci0r ICBhc3NlcnRfZXF1YWwgKFNvbWUgImFiYyIpIChbJW1hdGNoICJhYmMiIC8gcGNyZTJdICJhYmMi KTsKLSsgIGFzc2VydF9lcXVhbCAoU29tZSAiYWJjIikgKFslbWF0Y2ggImFiYyIgLyBzdHJpbmdz IHBjcmUyXSAiYWJjIik7Ci0rICBhc3NlcnRfZXF1YWwgdHJ1ZSAoWyVtYXRjaCAiYWJjIiAvIHBy ZWQgcGNyZTJdICJhYmMiKTsKLSsgIGFzc2VydF9lcXVhbCBmYWxzZSAoWyVtYXRjaCAiYWJjIiAv IHByZWQgcGNyZTJdICJhYmQiKTsKLSsgIGFzc2VydF9lcXVhbCBOb25lIChbJW1hdGNoICJhYmMi IC8gcGNyZTJdICJhYmQiKTsKLSsgIGFzc2VydF9yYWlzZXMgTm90X2ZvdW5kIChmdW4gKCkgLT4g WyVtYXRjaCAiYWJjIiAvIGV4YyBwY3JlMl0gImFiZCIpOwotKyAgYXNzZXJ0X3JhaXNlcyBOb3Rf Zm91bmQgKGZ1biAoKSAtPiBbJW1hdGNoICJhYmMiIC8gZXhjIHN0cmluZ3MgcGNyZTJdICJhYmQi KTsKLSsgIGFzc2VydF9lcXVhbCBOb25lIChbJW1hdGNoICJhYmMiIC8gc3RyaW5ncyBwY3JlMl0g ImFiZCIpOwotKyAgYXNzZXJ0X2VxdWFsICJhYmMiIChbJW1hdGNoICJhYmMiIC8gZXhjIHN0cmlu Z3MgcGNyZTJdICJhYmMiKTsKLSsgIGFzc2VydF9lcXVhbCAoImFiYyIsIFNvbWUgImIiKSAoWyVt YXRjaCAiYShiKWMiIC8gZXhjIHN0cmluZ3MgcGNyZTJdICJhYmMiKTsKLSsgIGFzc2VydF9lcXVh bCAoImFjIiwgTm9uZSkgKFslbWF0Y2ggImEoPzooYik/KWMiIC8gZXhjIHN0cmluZ3MgcGNyZTJd ICJhYyIpOwotKyAgYXNzZXJ0X2VxdWFsICJhYmMiCi0rICAgIChQY3JlMi5nZXRfc3Vic3RyaW5n IChbJW1hdGNoICJBQkMiIC8gZXhjIHJhdyBpIHBjcmUyXSAiYWJjIikgMCk7Ci0rICBhc3NlcnRf ZXF1YWwKLSsgICAgKCJhYmMiLCBTb21lICJhIiwgU29tZSAiYiIsIFNvbWUgImMiKQotKyAgICAo WyVtYXRjaCAiKGEpKGIpKGMpIiAvIGV4YyBzdHJpbmdzIHBjcmUyXSAiYWJjIikKLSsKLStsZXQg dGVzdF9wY3JlMl9zZWxlY3RpdmVfbWF0Y2ggY3R4dCA9Ci0rICAoKTsKLSsgIGFzc2VydF9lcXVh bCAoImFiYyIsIFNvbWUgImIiKQotKyAgICAoWyVtYXRjaCAiYShiKWMiIC8gZXhjIHN0cmluZ3Mg KCEwLCAxKSBwY3JlMl0gImFiYyIpOwotKyAgYXNzZXJ0X2VxdWFsICgiYWJjIiwgImIiKQotKyAg ICAoWyVtYXRjaCAiYShiKWMiIC8gZXhjIHN0cmluZ3MgKCEwLCAhMSkgcGNyZTJdICJhYmMiKTsK LSsgIGFzc2VydF9lcXVhbCAiYiIgKFslbWF0Y2ggImEoYiljIiAvIGV4YyBzdHJpbmdzICExIHBj cmUyXSAiYWJjIik7Ci0rICBhc3NlcnRfZXF1YWwKLSsgICAgKFNvbWUgKCJhYmMiLCAiYiIpKQot KyAgICAoWyVtYXRjaCAiYShiKWMiIC8gc3RyaW5ncyAoITAsICExKSBwY3JlMl0gImFiYyIpOwot KyAgYXNzZXJ0X2VxdWFsICgiYWMiLCBOb25lKSAoWyVtYXRjaCAiYShiKT9jIiAvIGV4YyBzdHJp bmdzICghMCwgMSkgcGNyZTJdICJhYyIpOwotKyAgYXNzZXJ0X3JhaXNlcyBOb3RfZm91bmQgKGZ1 biBfIC0+Ci0rICAgICAgWyVtYXRjaCAiYShiKT9jIiAvIGV4YyBzdHJpbmdzICghMCwgITEpIHBj cmUyXSAiYWMiKTsKLSsgIGFzc2VydF9lcXVhbCBOb25lIChbJW1hdGNoICJhKGIpP2MiIC8gc3Ry aW5ncyAoITAsICExKSBwY3JlMl0gImFjIikKLSsKLStsZXQgdGVzdF9wY3JlMl9zZWFyY2ggY3R4 dCA9Ci0rICAoKTsKLSsgIGFzc2VydF9lcXVhbCAiYWJjIiAoWyVtYXRjaCAiYWJjIiAvIGV4YyBz dHJpbmdzIHBjcmUyXSAienp6YWJjIik7Ci0rICBhc3NlcnRfZXF1YWwgTm9uZSAoWyVtYXRjaCAi XmFiYyIgLyBzdHJpbmdzIHBjcmUyXSAienp6YWJjIikKLSsKLStsZXQgc2hvd19zdHJpbmdfb3B0 aW9uID0gZnVuY3Rpb24KLSsgIHwgTm9uZSAtPiAiTm9uZSIKLSsgIHwgU29tZSBzIC0+IFByaW50 Zi5zcHJpbnRmICJTb21lICVzIiBzCi0rCi0rbGV0IHRlc3RfcGNyZTJfc2luZ2xlIGN0eHQgPQot KyAgbGV0IHByaW50ZXIgPSBzaG93X3N0cmluZ19vcHRpb24gaW4KLSsgICgpOwotKyAgYXNzZXJ0 X2VxdWFsIH5wcmludGVyIE5vbmUgKFslbWF0Y2ggIi4rIiAvIHBjcmUyXSAiXG5cbiIpOwotKyAg YXNzZXJ0X2VxdWFsIH5wcmludGVyIE5vbmUgKFslbWF0Y2ggIi4rIiAvIG0gcGNyZTIgc3RyaW5n c10gIlxuXG4iKTsKLSsKLSsgIGFzc2VydF9lcXVhbCB+cHJpbnRlciBOb25lIChbJW1hdGNoICIu KyIgLyBwY3JlMiBzdHJpbmdzXSAiXG5cbiIpOwotKyAgYXNzZXJ0X2VxdWFsIH5wcmludGVyIChT b21lICJcblxuIikgKFslbWF0Y2ggIi4rIiAvIHMgcGNyZTIgc3RyaW5nc10gIlxuXG4iKTsKLSsg IGFzc2VydF9lcXVhbCB+cHJpbnRlciBOb25lIChbJW1hdGNoICIuKyIgLyBtIHBjcmUyIHN0cmlu Z3NdICJcblxuIik7Ci0rCi0rICBsZXQgcHJpbnRlciB4ID0geCBpbgotKyAgKCk7Ci0rICBhc3Nl cnRfZXF1YWwgfnByaW50ZXIgIlxuXG4iIChbJW1hdGNoICIuKyIgLyBzIGV4YyBwY3JlMiBzdHJp bmdzXSAiXG5cbiIpOwotKyAgYXNzZXJ0X2VxdWFsIH5wcmludGVyICI8PGFiYz4+XG5kZWYiCi0r ICAgIChbJXN1YnN0ICIuKyIgLyB7fDw8JDA+Pnx9IC8gcGNyZTJdICJhYmNcbmRlZiIpOwotKyAg YXNzZXJ0X2VxdWFsIH5wcmludGVyICI8PGFiY1xuZGVmPj4iCi0rICAgIChbJXN1YnN0ICIuKyIg LyB7fDw8JDA+Pnx9IC8gcyBwY3JlMl0gImFiY1xuZGVmIik7Ci0rICBhc3NlcnRfZXF1YWwgfnBy aW50ZXIgIjw8YWJjPj5cbmRlZiIKLSsgICAgKFslc3Vic3QgIi4rIiAvIHt8PDwkMD4+fH0gLyBt IHBjcmUyXSAiYWJjXG5kZWYiKTsKLSsKLSsgIGFzc2VydF9lcXVhbCB+cHJpbnRlciAiPDxhYmM+ PlxuZGVmIgotKyAgICAoWyVzdWJzdCAiLioiIC8ge3w8PCQwPj58fSAvIHBjcmUyXSAiYWJjXG5k ZWYiKTsKLSsgIGFzc2VydF9lcXVhbCB+cHJpbnRlciAiPDxhYmM+Pjw8Pj5cbjw8ZGVmPj48PD4+ IgotKyAgICAoWyVzdWJzdCAiLioiIC8ge3w8PCQwPj58fSAvIGcgcGNyZTJdICJhYmNcbmRlZiIp OwotKyAgYXNzZXJ0X2VxdWFsIH5wcmludGVyICI8PGFiYz4+XG48PGRlZj4+IgotKyAgICAoWyVz dWJzdCAiLisiIC8ge3w8PCQwPj58fSAvIGcgcGNyZTJdICJhYmNcbmRlZiIpOwotKyAgYXNzZXJ0 X2VxdWFsIH5wcmludGVyICI8PGFiYz4+YVxuYzw8YWVjPj4iCi0rICAgIChbJXN1YnN0ICJhLmMi IC8ge3w8PCQwPj58fSAvIGcgcGNyZTJdICJhYmNhXG5jYWVjIik7Ci0rICBhc3NlcnRfZXF1YWwg fnByaW50ZXIgIjw8YWJjPj48PGFcbmM+Pjw8YWVjPj4iCi0rICAgIChbJXN1YnN0ICJhLmMiIC8g e3w8PCQwPj58fSAvIGcgcyBwY3JlMl0gImFiY2FcbmNhZWMiKQotKwotK2xldCB0ZXN0X3BjcmUy X211bHRpbGluZSBjdHh0ID0KLSsgICgpOwotKyAgYXNzZXJ0X2VxdWFsIChTb21lICJiYXIiKSAo WyVtYXRjaCAiLiskIiAvIHN0cmluZ3MgcGNyZTJdICJmb29cbmJhciIpOwotKyAgYXNzZXJ0X2Vx dWFsIChTb21lICJmb28iKSAoWyVtYXRjaCAiLiskIiAvIG0gc3RyaW5ncyBwY3JlMl0gImZvb1xu YmFyIikKLSsKLStsZXQgdGVzdF9wY3JlMl9zaW1wbGVfc3BsaXQgY3R4dCA9Ci0rICAoKTsKLSsg IGFzc2VydF9lcXVhbCBbICJiYiIgXSAoWyVzcGxpdCAiYSIgLyBwY3JlMl0gImJiIikKLSsKLSts ZXQgdGVzdF9wY3JlMl9kZWxpbV9zcGxpdF9yYXcgY3R4dCA9Ci0rICBsZXQgb3BlbiBQY3JlMiBp bgotKyAgKCk7Ci0rICBhc3NlcnRfZXF1YWwKLSsgICAgWyBEZWxpbSAiYSI7IFRleHQgImIiOyBE ZWxpbSAiYSI7IFRleHQgImIiIF0KLSsgICAgKFslc3BsaXQgImEiIC8gcGNyZTIgcmF3XSAiYWJh YmEiKTsKLSsgIGFzc2VydF9lcXVhbAotKyAgICBbIERlbGltICJhIjsgVGV4dCAiYiI7IERlbGlt ICJhIjsgRGVsaW0gImEiOyBUZXh0ICJiIiBdCi0rICAgIChbJXNwbGl0ICJhIiAvIHBjcmUyIHJh d10gImFiYWFiYSIpOwotKyAgYXNzZXJ0X2VxdWFsCi0rICAgIFsKLSsgICAgICBEZWxpbSAiYSI7 Ci0rICAgICAgTm9Hcm91cDsKLSsgICAgICBUZXh0ICJiIjsKLSsgICAgICBEZWxpbSAiYWMiOwot KyAgICAgIEdyb3VwICgxLCAiYyIpOwotKyAgICAgIFRleHQgImIiOwotKyAgICAgIERlbGltICJh IjsKLSsgICAgICBOb0dyb3VwOwotKyAgICBdCi0rICAgIChbJXNwbGl0ICJhKGMpPyIgLyBwY3Jl MiByYXddICJhYmFjYmEiKTsKLSsgIGFzc2VydF9lcXVhbAotKyAgICBbCi0rICAgICAgRGVsaW0g ImFjIjsKLSsgICAgICBHcm91cCAoMSwgImMiKTsKLSsgICAgICBUZXh0ICJiIjsKLSsgICAgICBE ZWxpbSAiYWMiOwotKyAgICAgIEdyb3VwICgxLCAiYyIpOwotKyAgICAgIFRleHQgImIiOwotKyAg ICAgIERlbGltICJhYyI7Ci0rICAgICAgR3JvdXAgKDEsICJjIik7Ci0rICAgIF0KLSsgICAgKFsl c3BsaXQgImEoYykiIC8gcGNyZTIgcmF3XSAiYWNiYWNiYWMiKTsKLSsgIGFzc2VydF9lcXVhbAot KyAgICBbCi0rICAgICAgRGVsaW0gImFjIjsKLSsgICAgICBHcm91cCAoMSwgImMiKTsKLSsgICAg ICBUZXh0ICJiIjsKLSsgICAgICBEZWxpbSAiYWMiOwotKyAgICAgIEdyb3VwICgxLCAiYyIpOwot KyAgICAgIFRleHQgImIiOwotKyAgICAgIERlbGltICJhYyI7Ci0rICAgICAgR3JvdXAgKDEsICJj Iik7Ci0rICAgIF0KLSsgICAgKFslc3BsaXQgImEoYykiIC8gcGNyZTIgcmF3XSAiYWNiYWNiYWMi KTsKLSsgIGFzc2VydF9lcXVhbAotKyAgICBbCi0rICAgICAgRGVsaW0gImEiOwotKyAgICAgIE5v R3JvdXA7Ci0rICAgICAgVGV4dCAiYiI7Ci0rICAgICAgRGVsaW0gImFjIjsKLSsgICAgICBHcm91 cCAoMSwgImMiKTsKLSsgICAgICBUZXh0ICJiIjsKLSsgICAgICBEZWxpbSAiYSI7Ci0rICAgICAg Tm9Hcm91cDsKLSsgICAgXQotKyAgICAoWyVzcGxpdCAiYShjKT8iIC8gcGNyZTIgcmF3XSAiYWJh Y2JhIik7Ci0rICBhc3NlcnRfZXF1YWwKLSsgICAgWyBUZXh0ICJhYiI7IERlbGltICJ4IjsgR3Jv dXAgKDEsICJ4Iik7IE5vR3JvdXA7IFRleHQgImNkIiBdCi0rICAgIChbJXNwbGl0IHt8KHgpfCh1 KXx9IC8gcmF3IHBjcmUyXSAiYWJ4Y2QiKTsKLSsgIGFzc2VydF9lcXVhbAotKyAgICBbCi0rICAg ICAgVGV4dCAiYWIiOwotKyAgICAgIERlbGltICJ4IjsKLSsgICAgICBHcm91cCAoMSwgIngiKTsK LSsgICAgICBOb0dyb3VwOwotKyAgICAgIFRleHQgImNkIjsKLSsgICAgICBEZWxpbSAidSI7Ci0r ICAgICAgTm9Hcm91cDsKLSsgICAgICBHcm91cCAoMiwgInUiKTsKLSsgICAgXQotKyAgICAoWyVz cGxpdCB7fCh4KXwodSl8fSAvIHJhdyBwY3JlMl0gImFieGNkdSIpCi0rCi0rbGV0IHRlc3RfcGNy ZTJfc3RyaW5nX3BhdHRlcm4gY3R4dCA9Ci0rICAoKTsKLSsgIGFzc2VydF9lcXVhbCAiJGIiCi0r ICAgIChbJXBhdHRlcm4ge3wkJCQxfH0gLyBwY3JlMl0gKFslbWF0Y2ggImEoYiljIiAvIGV4YyBw Y3JlMiByYXddICJhYmMiKSk7Ci0rICBhc3NlcnRfZXF1YWwgImIiCi0rICAgIChbJXBhdHRlcm4g e3wkezAxfXx9IC8gcGNyZTJdIChbJW1hdGNoICJhKGIpYyIgLyBleGMgcGNyZTIgcmF3XSAiYWJj IikpOwotKyAgYXNzZXJ0X2VxdWFsICJieCIKLSsgICAgKGxldCBzID0gIngiIGluCi0rICAgICBb JXBhdHRlcm4ge3wkezAxfSR7c318fSAvIHBjcmUyXSAoWyVtYXRjaCAiYShiKWMiIC8gZXhjIHBj cmUyIHJhd10gImFiYyIpKTsKLSsgIGFzc2VydF9lcXVhbCB7fCJieHx9Ci0rICAgIChsZXQgcyA9 ICJ4IiBpbgotKyAgICAgWyVwYXR0ZXJuIHt8IiR7MDF9JHtzfXx9IC8gcGNyZTJdIChbJW1hdGNo ICJhKGIpYyIgLyBleGMgcGNyZTIgcmF3XSAiYWJjIikpOwotKyAgYXNzZXJ0X2VxdWFsIHt8Inh8 fQotKyAgICAobGV0IHMgPSAieCIgaW4KLSsgICAgIFslcGF0dGVybiB7fCIke3N9fH0gLyBwY3Jl Ml0pCi0rCi0rbGV0IHRlc3RfcGNyZTJfZXhwcl9wYXR0ZXJuIGN0eHQgPQotKyAgKCk7Ci0rICBh c3NlcnRfZXF1YWwgImFiYyIKLSsgICAgKFslcGF0dGVybiAiJDAkIiAvIGUgcGNyZTJdIChbJW1h dGNoICJhYmMiIC8gZXhjIHBjcmUyIHJhd10gImFiYyIpKTsKLSsgIGFzc2VydF9lcXVhbCAiYWJj eCIKLSsgICAgKFslcGF0dGVybiB7fCQwJCBeICJ4Inx9IC8gZSBwY3JlMl0gKFslbWF0Y2ggImFi YyIgLyBleGMgcGNyZTIgcmF3XSAiYWJjIikpOwotKyAgYXNzZXJ0X2VxdWFsICJhYmN4IgotKyAg ICAobGV0IHggPSAieCIgaW4KLSsgICAgIFslcGF0dGVybiB7fCQwJCBeIHh8fSAvIGUgcGNyZTJd IChbJW1hdGNoICJhYmMiIC8gZXhjIHBjcmUyIHJhd10gImFiYyIpKTsKLSsgIGFzc2VydF9lcXVh bCAieCIKLSsgICAgKGxldCB4ID0gIngiIGluCi0rICAgICBbJXBhdHRlcm4ge3wiIiBeIHh8fSAv IGUgcGNyZTJdKQotKwotK2xldCB0ZXN0X3BjcmUyX3N1YnN0IGN0eHQgPQotKyAgKCk7Ci0rICBh c3NlcnRfZXF1YWwgIiRiIiAoWyVzdWJzdCAiYShiKWMiIC8ge3wkJCQxfH0gLyBwY3JlMl0gImFi YyIpOwotKyAgYXNzZXJ0X2VxdWFsICIkYiIgKFslc3Vic3QgIkEoQilDIiAvIHt8JCQkMXx9IC8g aSBwY3JlMl0gImFiYyIpOwotKyAgYXNzZXJ0X2VxdWFsICIkYmFiYyIgKFslc3Vic3QgIkEoQilD IiAvIHt8JCQkMXx9IC8gaSBwY3JlMl0gImFiY2FiYyIpOwotKyAgYXNzZXJ0X2VxdWFsICIkYiRi IiAoWyVzdWJzdCAiQShCKUMiIC8ge3wkJCQxfH0gLyBnIGkgcGNyZTJdICJhYmNhYmMiKTsKLSsg IGFzc2VydF9lcXVhbCAiJGIkYiIgKFslc3Vic3QgIkEoQilDIiAvIHt8IiQiIF4gJDEkfH0gLyBl IGcgaSBwY3JlMl0gImFiY2FiYyIpOwotKyAgYXNzZXJ0X2VxdWFsICIkJCIgKFslc3Vic3QgIkEo QilDIiAvIHt8IiQifH0gLyBlIGcgaSBwY3JlMl0gImFiY2FiYyIpOwotKyAgYXNzZXJ0X2VxdWFs ICIkJCIgKFslc3Vic3QgIkEoQilDIiAvIHt8JCR8fSAvIGcgaSBwY3JlMl0gImFiY2FiYyIpCi0r Ci0rbGV0IHRlc3RfcGNyZTJfb2NhbWxmaW5kX2JpdHMgY3R4dCA9Ci0rICAoKTsKLSsgIGFzc2Vy dF9lcXVhbCB+cHJpbnRlcjpzaG93X3N0cmluZ19vcHRpb24gKFNvbWUgIi1zeW50YXggY2FtbHA1 byAiKQotKyAgICAoc25kCi0rICAgICAgIChbJW1hdGNoIHt8XlwoXCpcKnBwICguKj8pXCpcKXx9 IC8gZXhjIHN0cmluZ3MgcGNyZTJdCi0rICAgICAgICAgIHt8KCoqcHAgLXN5bnRheCBjYW1scDVv ICopCi0rfH0pKQotKwotK2xldCBwY3JlMl9lbnZzdWJzdCBlbnZsb29rdXAgcyA9Ci0rICBsZXQg ZiBzMSBzMiA9Ci0rICAgIGlmIHMxIDw+ICIiIHRoZW4gZW52bG9va3VwIHMxCi0rICAgIGVsc2Ug aWYgczIgPD4gIiIgdGhlbiBlbnZsb29rdXAgczIKLSsgICAgZWxzZSBhc3NlcnQgZmFsc2UKLSsg IGluCi0rCi0rICBbJXN1YnN0IHt8KD86XCRcKChbXildKylcKXxcJFx7KFtefV0rKVx9KXx9IC8g e3wgZiAkMSQgJDIkIHx9IC8gZyBlIHBjcmUyXSBzCi0rCi0rbGV0IHRlc3RfcGNyZTJfZW52c3Vi c3RfdmlhX3JlcGxhY2UgY3R4dCA9Ci0rICBsZXQgZiA9IGZ1bmN0aW9uCi0rICAgIHwgIkEiIC0+ ICJyZXMxIgotKyAgICB8ICJCIiAtPiAicmVzMiIKLSsgICAgfCBfIC0+IGZhaWx3aXRoICJ1bmV4 cGVjdGVkIGFyZyBpbiBlbnZzdWJzdCIKLSsgIGluCi0rICBhc3NlcnRfZXF1YWwgIi4uLnJlczEu Li5yZXMyLi4uIiAocGNyZTJfZW52c3Vic3QgZiB7fC4uLiQoQSkuLi4ke0J9Li4ufH0pCi0rCi0r bGV0IHN1aXRlID0KLSsgICJUZXN0IHBhX3BweF9yZWdleHAiCi0rICA+Ojo6IFsKLSsgICAgICAg ICAicGNyZTIgc2ltcGxlX21hdGNoIiA+OjogdGVzdF9wY3JlMl9zaW1wbGVfbWF0Y2g7Ci0rICAg ICAgICAgInBjcmUyIHNlbGVjdGl2ZV9tYXRjaCIgPjo6IHRlc3RfcGNyZTJfc2VsZWN0aXZlX21h dGNoOwotKyAgICAgICAgICJwY3JlMiBzZWFyY2giID46OiB0ZXN0X3BjcmUyX3NlYXJjaDsKLSsg ICAgICAgICAicGNyZTIgc2luZ2xlIiA+OjogdGVzdF9wY3JlMl9zaW5nbGU7Ci0rICAgICAgICAg InBjcmUyIG11bHRpbGluZSIgPjo6IHRlc3RfcGNyZTJfbXVsdGlsaW5lOwotKyAgICAgICAgICJw Y3JlMiBzaW1wbGVfc3BsaXQiID46OiB0ZXN0X3BjcmUyX3NpbXBsZV9zcGxpdDsKLSsgICAgICAg ICAicGNyZTIgZGVsaW1fc3BsaXQgcmF3IiA+OjogdGVzdF9wY3JlMl9kZWxpbV9zcGxpdF9yYXc7 Ci0rICAgICAgICAgInBjcmUyIHN0cmluZ19wYXR0ZXJuIiA+OjogdGVzdF9wY3JlMl9zdHJpbmdf cGF0dGVybjsKLSsgICAgICAgICAicGNyZTIgZXhwcl9wYXR0ZXJuIiA+OjogdGVzdF9wY3JlMl9l eHByX3BhdHRlcm47Ci0rICAgICAgICAgInBjcmUyIHN1YnN0IiA+OjogdGVzdF9wY3JlMl9zdWJz dDsKLSsgICAgICAgICAicGNyZTIgb2NhbWxmaW5kIGJpdHMiID46OiB0ZXN0X3BjcmUyX29jYW1s ZmluZF9iaXRzOwotKyAgICAgICAgICJwY3JlMiBlbnZzdWJzdCB2aWEgcmVwbGFjZSIgPjo6IHRl c3RfcGNyZTJfZW52c3Vic3RfdmlhX3JlcGxhY2U7Ci0rICAgICAgICAgInBjcmUgb25seV9yZWdl eHBzIiA+OjogdGVzdF9zcGVjaWFsX2NoYXJfcmVnZXhwczsKLSsgICAgICAgXQotKwotK2xldCBf ID0gaWYgbm90ICFTeXMuaW50ZXJhY3RpdmUgdGhlbiBydW5fdGVzdF90dF9tYWluIHN1aXRlIGVs c2UgKCkKLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3BjcmUyLm9wYW0g Yi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3BjcmUyLm9wYW0KLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwMDAuLmYxOTFmY2Q0ZAotLS0tIC9kZXYvbnVsbAotKysrIGIvYnVu ZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9wY3JlMi5vcGFtCi1AQCAtMCwwICsxLDM3IEBACi0rIyBU aGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IGR1bmUsIGVkaXQgZHVuZS1wcm9qZWN0IGluc3RlYWQK LStvcGFtLXZlcnNpb246ICIyLjAiCi0rdmVyc2lvbjogIjguMC40IgotK3N5bm9wc2lzOgotKyAg IkJpbmRpbmdzIHRvIHRoZSBQZXJsIENvbXBhdGliaWxpdHkgUmVndWxhciBFeHByZXNzaW9ucyBs aWJyYXJ5ICh2ZXJzaW9uIDIpIgotK2Rlc2NyaXB0aW9uOiAiIiIKLStwY3JlMi1vY2FtbCBvZmZl cnMgbGlicmFyeSBmdW5jdGlvbnMgZm9yIHN0cmluZyBwYXR0ZXJuIG1hdGNoaW5nIGFuZAotK3N1 YnN0aXR1dGlvbiwgc2ltaWxhciB0byB0aGUgZnVuY3Rpb25hbGl0eSBvZmZlcmVkIGJ5IHRoZSBQ ZXJsIGxhbmd1YWdlLiIiIgotK21haW50YWluZXI6IFsiQ2hldCBNdXJ0aHkgPGNoZXRza3lAZ21h aWwuY29tPiJdCi0rYXV0aG9yczogWyJNYXJrdXMgTW90dGwgPG1hcmt1cy5tb3R0bEBnbWFpbC5j b20+Il0KLStsaWNlbnNlOiAiTEdQTC0yLjEtb3ItbGF0ZXIgV0lUSCBPQ2FtbC1MR1BMLWxpbmtp bmctZXhjZXB0aW9uIgotK2hvbWVwYWdlOiAiaHR0cHM6Ly9naXRodWIuY29tL2NhbWxwNS9wY3Jl Mi1vY2FtbCIKLStidWctcmVwb3J0czogImh0dHBzOi8vZ2l0aHViLmNvbS9jYW1scDUvcGNyZTIt b2NhbWwvaXNzdWVzIgotK2RlcGVuZHM6IFsKLSsgICJkdW5lIiB7Pj0gIjIuNyJ9Ci0rICAib2Nh bWwiIHs+PSAiNC4wOCJ9Ci0rICAiZHVuZS1jb21waWxlZGIiCi0rICAiZHVuZS1jb25maWd1cmF0 b3IiCi0rICAiY29uZi1saWJwY3JlMi04IiB7YnVpbGR9Ci0rICAib3VuaXQyIiB7d2l0aC10ZXN0 fQotKyAgIm9kb2MiIHt3aXRoLWRvY30KLStdCi0rYnVpbGQ6IFsKLSsgIFsiZHVuZSIgInN1YnN0 Il0ge2Rldn0KLSsgIFsKLSsgICAgImR1bmUiCi0rICAgICJidWlsZCIKLSsgICAgIi1wIgotKyAg ICBuYW1lCi0rICAgICItaiIKLSsgICAgam9icwotKyAgICAiQGluc3RhbGwiCi0rICAgICJAcnVu dGVzdCIge3dpdGgtdGVzdH0KLSsgICAgIkBkb2MiIHt3aXRoLWRvY30KLSsgIF0KLStdCi0rZGV2 LXJlcG86ICJnaXQraHR0cHM6Ly9naXRodWIuY29tL2NhbWxwNS9wY3JlMi1vY2FtbC5naXQiCi1k aWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC90ZXN0L2R1bmUgYi9idW5kbGVz L3BjcmUyL3BjcmUyLW9jYW1sL3Rlc3QvZHVuZQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAwMC4uYWY2ZmNmYTVmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9idW5kbGVzL3BjcmUy L3BjcmUyLW9jYW1sL3Rlc3QvZHVuZQotQEAgLTAsMCArMSwxNCBAQAotKyh0ZXN0Ci0rIChuYW1l IG9sZF9wY3JlMl90ZXN0cykKLSsgKG1vZHVsZXMgT2xkX3BjcmUyX3Rlc3RzKQotKyAobGlicmFy aWVzIHBjcmUyIG91bml0MikpCi0rCi0rKHRlc3QKLSsgKG5hbWUgcGNyZTJfdGVzdHMpCi0rICht b2R1bGVzIFBjcmUyX3Rlc3RzKQotKyAobGlicmFyaWVzIHBjcmUyIG91bml0MikpCi0rCi0rKGVu dgotKyAoZGV2Ci0rICAoZmxhZ3MKLSsgICAoOnN0YW5kYXJkIC13IC0yNykpKSkKLWRpZmYgLS1n aXQgYS9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3Rlc3Qvb2xkX3BjcmUyX3Rlc3RzLm1sIGIv YnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC90ZXN0L29sZF9wY3JlMl90ZXN0cy5tbAotbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uZTFmMjFlNDM4Ci0tLS0gL2Rldi9udWxs Ci0rKysgYi9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL3Rlc3Qvb2xkX3BjcmUyX3Rlc3RzLm1s Ci1AQCAtMCwwICsxLDI0IEBACi0rb3BlbiBPVW5pdDIKLStvcGVuIFBjcmUyCi0rCi0rbGV0IHNp bXBsZV90ZXN0IGN0eHQgPQotKyAgYXNzZXJ0X2VxdWFsIDAgMDsKLSsgIGFzc2VydF9lcXVhbAot KyAgICBbIFRleHQgImFiIjsgRGVsaW0gIngiOyBHcm91cCAoMSwgIngiKTsgTm9Hcm91cDsgVGV4 dCAiY2QiIF0KLSsgICAgKGZ1bGxfc3BsaXQgfnBhdDoiKHgpfCh1KSIgImFieGNkIik7Ci0rICBh c3NlcnRfZXF1YWwKLSsgICAgWwotKyAgICAgIFRleHQgImFiIjsKLSsgICAgICBEZWxpbSAieCI7 Ci0rICAgICAgR3JvdXAgKDEsICJ4Iik7Ci0rICAgICAgTm9Hcm91cDsKLSsgICAgICBUZXh0ICJj ZCI7Ci0rICAgICAgRGVsaW0gInUiOwotKyAgICAgIE5vR3JvdXA7Ci0rICAgICAgR3JvdXAgKDIs ICJ1Iik7Ci0rICAgICAgVGV4dCAiZWYiOwotKyAgICBdCi0rICAgIChmdWxsX3NwbGl0IH5wYXQ6 Iih4KXwodSkiICJhYnhjZHVlZiIpCi0rCi0rbGV0IHN1aXRlID0gIlRlc3QgcGNyZSIgPjo6OiBb ICJzaW1wbGVfdGVzdCIgPjo6IHNpbXBsZV90ZXN0IF0KLStsZXQgXyA9IGlmIG5vdCAhU3lzLmlu dGVyYWN0aXZlIHRoZW4gcnVuX3Rlc3RfdHRfbWFpbiBzdWl0ZSBlbHNlICgpCi1kaWZmIC0tZ2l0 IGEvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC90ZXN0L3BjcmUyX3Rlc3RzLm1sIGIvYnVuZGxl cy9wY3JlMi9wY3JlMi1vY2FtbC90ZXN0L3BjcmUyX3Rlc3RzLm1sCi1uZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMDAwLi5mZTYwMDg4MWEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2J1 bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvdGVzdC9wY3JlMl90ZXN0cy5tbAotQEAgLTAsMCArMSw3 NDYgQEAKLStvcGVuIE9Vbml0MgotKygqKnBwIC1zeW50YXggY2FtbHA1byAtcGFja2FnZSBwYV9w cHguZGVyaXZpbmdfcGx1Z2lucy5zdGQgKikKLSsKLStsZXQgdGVzdF9zcGVjaWFsX2NoYXJfcmVn ZXhwcyBjdHh0ID0KLSsgICgpOwotKyAgYXNzZXJ0X2VxdWFsICJcbiIKLSsgICAgKChsZXQgX19y ZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbIGBET1RBTEwgXSAiXFxuJCIgaW4KLSsgICAgICBm dW4gX19zdWJqX18gLT4KLSsgICAgICAgIChmdW4gX19nX18gLT4gUGNyZTIuZ2V0X3N1YnN0cmlu ZyBfX2dfXyAwKQotKyAgICAgICAgICAoUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykp Ci0rICAgICAgICJcbiIpOwotKyAgYXNzZXJ0X2VxdWFsICIiCi0rICAgIChQY3JlMi5zdWJzdGl0 dXRlX3N1YnN0cmluZ3NfZmlyc3QKLSsgICAgICAgfnJleDooUGNyZTIucmVnZXhwIH5mbGFnczpb IGBET1RBTEwgXSAiXFxuKyQiKQotKyAgICAgICB+c3Vic3Q6KGZ1biBfX2dfXyAtPiBTdHJpbmcu Y29uY2F0ICIiIFtdKQotKyAgICAgICAiXG5cbiIpCi0rCi0rbGV0IHRlc3RfcGNyZTJfc2ltcGxl X21hdGNoIGN0eHQgPQotKyAgKCk7Ci0rICBhc3NlcnRfZXF1YWwgImFiYyIKLSsgICAgKFBjcmUy LmdldF9zdWJzdHJpbmcKLSsgICAgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFn czpbXSAiYWJjIiBpbgotKyAgICAgICAgIGZ1biBfX3N1YmpfXyAtPiBQY3JlMi5leGVjIH5yZXg6 X19yZV9fIF9fc3Vial9fKQotKyAgICAgICAgICAiYWJjIikKLSsgICAgICAgMCk7Ci0rICBhc3Nl cnRfZXF1YWwgKFNvbWUgImFiYyIpCi0rICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ ZmxhZ3M6W10gImFiYyIgaW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4KLSsgICAgICAgIG1hdGNo Ci0rICAgICAgICAgIE9wdGlvbi5tYXAKLSsgICAgICAgICAgICAoZnVuIF9fZ19fIC0+IFBjcmUy LmdldF9zdWJzdHJpbmcgX19nX18gMCkKLSsgICAgICAgICAgICAodHJ5IFNvbWUgKFBjcmUyLmV4 ZWMgfnJleDpfX3JlX18gX19zdWJqX18pIHdpdGggTm90X2ZvdW5kIC0+IE5vbmUpCi0rICAgICAg ICB3aXRoCi0rICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZQotKyAgICAgICAg fCBydiAtPiBydikKLSsgICAgICAgImFiYyIpOwotKyAgYXNzZXJ0X2VxdWFsIChTb21lICJhYmMi KQotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhYmMiIGluCi0r ICAgICAgZnVuIF9fc3Vial9fIC0+Ci0rICAgICAgICBtYXRjaAotKyAgICAgICAgICBPcHRpb24u bWFwCi0rICAgICAgICAgICAgKGZ1biBfX2dfXyAtPiBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19f IDApCi0rICAgICAgICAgICAgKHRyeSBTb21lIChQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vi al9fKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lKQotKyAgICAgICAgd2l0aAotKyAgICAgICAgfCBl eGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUKLSsgICAgICAgIHwgcnYgLT4gcnYpCi0rICAgICAg ICJhYmMiKTsKLSsgIGFzc2VydF9lcXVhbCB0cnVlCi0rICAgICgobGV0IF9fcmVfXyA9IFBjcmUy LnJlZ2V4cCB+ZmxhZ3M6W10gImFiYyIgaW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4gUGNyZTIu cG1hdGNoIH5yZXg6X19yZV9fIF9fc3Vial9fKQotKyAgICAgICAiYWJjIik7Ci0rICBhc3NlcnRf ZXF1YWwgZmFsc2UKLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAi YWJjIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPiBQY3JlMi5wbWF0Y2ggfnJleDpfX3JlX18g X19zdWJqX18pCi0rICAgICAgICJhYmQiKTsKLSsgIGFzc2VydF9lcXVhbCBOb25lCi0rICAgICgo bGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImFiYyIgaW4KLSsgICAgICBmdW4g X19zdWJqX18gLT4KLSsgICAgICAgIG1hdGNoCi0rICAgICAgICAgIE9wdGlvbi5tYXAKLSsgICAg ICAgICAgICAoZnVuIF9fZ19fIC0+IFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCkKLSsgICAg ICAgICAgICAodHJ5IFNvbWUgKFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pIHdpdGgg Tm90X2ZvdW5kIC0+IE5vbmUpCi0rICAgICAgICB3aXRoCi0rICAgICAgICB8IGV4Y2VwdGlvbiBO b3RfZm91bmQgLT4gTm9uZQotKyAgICAgICAgfCBydiAtPiBydikKLSsgICAgICAgImFiZCIpOwot KyAgYXNzZXJ0X3JhaXNlcyBOb3RfZm91bmQgKGZ1biAoKSAtPgotKyAgICAgIChsZXQgX19yZV9f ID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYWJjIiBpbgotKyAgICAgICBmdW4gX19zdWJqX18g LT4KLSsgICAgICAgICAoZnVuIF9fZ19fIC0+IFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCkK LSsgICAgICAgICAgIChQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKSkKLSsgICAgICAg ICJhYmQiKTsKLSsgIGFzc2VydF9yYWlzZXMgTm90X2ZvdW5kIChmdW4gKCkgLT4KLSsgICAgICAo bGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImFiYyIgaW4KLSsgICAgICAgZnVu IF9fc3Vial9fIC0+Ci0rICAgICAgICAgKGZ1biBfX2dfXyAtPiBQY3JlMi5nZXRfc3Vic3RyaW5n IF9fZ19fIDApCi0rICAgICAgICAgICAoUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykp Ci0rICAgICAgICAiYWJkIik7Ci0rICBhc3NlcnRfZXF1YWwgTm9uZQotKyAgICAoKGxldCBfX3Jl X18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhYmMiIGluCi0rICAgICAgZnVuIF9fc3Vial9f IC0+Ci0rICAgICAgICBtYXRjaAotKyAgICAgICAgICBPcHRpb24ubWFwCi0rICAgICAgICAgICAg KGZ1biBfX2dfXyAtPiBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDApCi0rICAgICAgICAgICAg KHRyeSBTb21lIChQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKSB3aXRoIE5vdF9mb3Vu ZCAtPiBOb25lKQotKyAgICAgICAgd2l0aAotKyAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5k IC0+IE5vbmUKLSsgICAgICAgIHwgcnYgLT4gcnYpCi0rICAgICAgICJhYmQiKTsKLSsgIGFzc2Vy dF9lcXVhbCAiYWJjIgotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltd ICJhYmMiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+Ci0rICAgICAgICAoZnVuIF9fZ19fIC0+ IFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCkKLSsgICAgICAgICAgKFBjcmUyLmV4ZWMgfnJl eDpfX3JlX18gX19zdWJqX18pKQotKyAgICAgICAiYWJjIik7Ci0rICBhc3NlcnRfZXF1YWwgKCJh YmMiLCBTb21lICJiIikKLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpb XSAiYShiKWMiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+Ci0rICAgICAgICAoZnVuIF9fZ19f IC0+Ci0rICAgICAgICAgICggUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAwLAotKyAgICAgICAg ICAgIHRyeSBTb21lIChQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDEpIHdpdGggTm90X2ZvdW5k IC0+IE5vbmUgKSkKLSsgICAgICAgICAgKFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18p KQotKyAgICAgICAiYWJjIik7Ci0rICBhc3NlcnRfZXF1YWwgKCJhYyIsIE5vbmUpCi0rICAgICgo bGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImEoPzooYik/KWMiIGluCi0rICAg ICAgZnVuIF9fc3Vial9fIC0+Ci0rICAgICAgICAoZnVuIF9fZ19fIC0+Ci0rICAgICAgICAgICgg UGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAwLAotKyAgICAgICAgICAgIHRyeSBTb21lIChQY3Jl Mi5nZXRfc3Vic3RyaW5nIF9fZ19fIDEpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmUgKSkKLSsgICAg ICAgICAgKFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pKQotKyAgICAgICAiYWMiKTsK LSsgIGFzc2VydF9lcXVhbCAiYWJjIgotKyAgICAoUGNyZTIuZ2V0X3N1YnN0cmluZwotKyAgICAg ICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOlsgYENBU0VMRVNTIF0gIkFCQyIg aW4KLSsgICAgICAgICBmdW4gX19zdWJqX18gLT4gUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1 YmpfXykKLSsgICAgICAgICAgImFiYyIpCi0rICAgICAgIDApOwotKyAgYXNzZXJ0X2VxdWFsCi0r ICAgICgiYWJjIiwgU29tZSAiYSIsIFNvbWUgImIiLCBTb21lICJjIikKLSsgICAgKChsZXQgX19y ZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiKGEpKGIpKGMpIiBpbgotKyAgICAgIGZ1biBf X3N1YmpfXyAtPgotKyAgICAgICAgKGZ1biBfX2dfXyAtPgotKyAgICAgICAgICAoIFBjcmUyLmdl dF9zdWJzdHJpbmcgX19nX18gMCwKLSsgICAgICAgICAgICAodHJ5IFNvbWUgKFBjcmUyLmdldF9z dWJzdHJpbmcgX19nX18gMSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZSksCi0rICAgICAgICAgICAg KHRyeSBTb21lIChQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDIpIHdpdGggTm90X2ZvdW5kIC0+ IE5vbmUpLAotKyAgICAgICAgICAgIHRyeSBTb21lIChQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19f IDMpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmUgKSkKLSsgICAgICAgICAgKFBjcmUyLmV4ZWMgfnJl eDpfX3JlX18gX19zdWJqX18pKQotKyAgICAgICAiYWJjIikKLSsKLStsZXQgdGVzdF9wY3JlMl9z ZWxlY3RpdmVfbWF0Y2ggY3R4dCA9Ci0rICAoKTsKLSsgIGFzc2VydF9lcXVhbCAoImFiYyIsIFNv bWUgImIiKQotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhKGIp YyIgaW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4KLSsgICAgICAgIChmdW4gX19nX18gLT4KLSsg ICAgICAgICAgKCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDAsCi0rICAgICAgICAgICAgdHJ5 IFNvbWUgKFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMSkgd2l0aCBOb3RfZm91bmQgLT4gTm9u ZSApKQotKyAgICAgICAgICAoUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykpCi0rICAg ICAgICJhYmMiKTsKLSsgIGFzc2VydF9lcXVhbCAoImFiYyIsICJiIikKLSsgICAgKChsZXQgX19y ZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYShiKWMiIGluCi0rICAgICAgZnVuIF9fc3Vi al9fIC0+Ci0rICAgICAgICAoZnVuIF9fZ19fIC0+Ci0rICAgICAgICAgIChQY3JlMi5nZXRfc3Vi c3RyaW5nIF9fZ19fIDAsIFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMSkpCi0rICAgICAgICAg IChQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKSkKLSsgICAgICAgImFiYyIpOwotKyAg YXNzZXJ0X2VxdWFsICJiIgotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdz OltdICJhKGIpYyIgaW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4KLSsgICAgICAgIChmdW4gX19n X18gLT4gUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAxKQotKyAgICAgICAgICAoUGNyZTIuZXhl YyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykpCi0rICAgICAgICJhYmMiKTsKLSsgIGFzc2VydF9lcXVh bAotKyAgICAoU29tZSAoImFiYyIsICJiIikpCi0rICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJl Z2V4cCB+ZmxhZ3M6W10gImEoYiljIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAg ICAgbWF0Y2gKLSsgICAgICAgICAgT3B0aW9uLm1hcAotKyAgICAgICAgICAgIChmdW4gX19nX18g LT4KLSsgICAgICAgICAgICAgIChQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDAsIFBjcmUyLmdl dF9zdWJzdHJpbmcgX19nX18gMSkpCi0rICAgICAgICAgICAgKHRyeSBTb21lIChQY3JlMi5leGVj IH5yZXg6X19yZV9fIF9fc3Vial9fKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lKQotKyAgICAgICAg d2l0aAotKyAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUKLSsgICAgICAgIHwg cnYgLT4gcnYpCi0rICAgICAgICJhYmMiKTsKLSsgIGFzc2VydF9lcXVhbCAoImFjIiwgTm9uZSkK LSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYShiKT9jIiBpbgot KyAgICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAgICAgKGZ1biBfX2dfXyAtPgotKyAgICAgICAg ICAoIFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCwKLSsgICAgICAgICAgICB0cnkgU29tZSAo UGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAxKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lICkpCi0r ICAgICAgICAgIChQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKSkKLSsgICAgICAgImFj Iik7Ci0rICBhc3NlcnRfcmFpc2VzIE5vdF9mb3VuZCAoZnVuIF8gLT4KLSsgICAgICAobGV0IF9f cmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImEoYik/YyIgaW4KLSsgICAgICAgZnVuIF9f c3Vial9fIC0+Ci0rICAgICAgICAgKGZ1biBfX2dfXyAtPgotKyAgICAgICAgICAgKFBjcmUyLmdl dF9zdWJzdHJpbmcgX19nX18gMCwgUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAxKSkKLSsgICAg ICAgICAgIChQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKSkKLSsgICAgICAgICJhYyIp OwotKyAgYXNzZXJ0X2VxdWFsIE5vbmUKLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhw IH5mbGFnczpbXSAiYShiKT9jIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAgICAg bWF0Y2gKLSsgICAgICAgICAgT3B0aW9uLm1hcAotKyAgICAgICAgICAgIChmdW4gX19nX18gLT4K LSsgICAgICAgICAgICAgIChQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDAsIFBjcmUyLmdldF9z dWJzdHJpbmcgX19nX18gMSkpCi0rICAgICAgICAgICAgKHRyeSBTb21lIChQY3JlMi5leGVjIH5y ZXg6X19yZV9fIF9fc3Vial9fKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lKQotKyAgICAgICAgd2l0 aAotKyAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUKLSsgICAgICAgIHwgcnYg LT4gcnYpCi0rICAgICAgICJhYyIpCi0rCi0rbGV0IHRlc3RfcGNyZTJfc2VhcmNoIGN0eHQgPQot KyAgKCk7Ci0rICBhc3NlcnRfZXF1YWwgImFiYyIKLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIu cmVnZXhwIH5mbGFnczpbXSAiYWJjIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAg ICAgKGZ1biBfX2dfXyAtPiBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDApCi0rICAgICAgICAg IChQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKSkKLSsgICAgICAgInp6emFiYyIpOwot KyAgYXNzZXJ0X2VxdWFsIE5vbmUKLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5m bGFnczpbXSAiXmFiYyIgaW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4KLSsgICAgICAgIG1hdGNo Ci0rICAgICAgICAgIE9wdGlvbi5tYXAKLSsgICAgICAgICAgICAoZnVuIF9fZ19fIC0+IFBjcmUy LmdldF9zdWJzdHJpbmcgX19nX18gMCkKLSsgICAgICAgICAgICAodHJ5IFNvbWUgKFBjcmUyLmV4 ZWMgfnJleDpfX3JlX18gX19zdWJqX18pIHdpdGggTm90X2ZvdW5kIC0+IE5vbmUpCi0rICAgICAg ICB3aXRoCi0rICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gTm9uZQotKyAgICAgICAg fCBydiAtPiBydikKLSsgICAgICAgInp6emFiYyIpCi0rCi0rbGV0IHNob3dfc3RyaW5nX29wdGlv biA9IGZ1bmN0aW9uCi0rICB8IE5vbmUgLT4gIk5vbmUiCi0rICB8IFNvbWUgcyAtPiBQcmludGYu c3ByaW50ZiAiU29tZSAlcyIgcwotKwotK2xldCB0ZXN0X3BjcmUyX3NpbmdsZSBjdHh0ID0KLSsg IGxldCBwcmludGVyID0gc2hvd19zdHJpbmdfb3B0aW9uIGluCi0rICAoKTsKLSsgIGFzc2VydF9l cXVhbCB+cHJpbnRlciBOb25lCi0rICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+Zmxh Z3M6W10gIi4rIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAgICAgbWF0Y2gKLSsg ICAgICAgICAgT3B0aW9uLm1hcAotKyAgICAgICAgICAgIChmdW4gX19nX18gLT4gUGNyZTIuZ2V0 X3N1YnN0cmluZyBfX2dfXyAwKQotKyAgICAgICAgICAgICh0cnkgU29tZSAoUGNyZTIuZXhlYyB+ cmV4Ol9fcmVfXyBfX3N1YmpfXykgd2l0aCBOb3RfZm91bmQgLT4gTm9uZSkKLSsgICAgICAgIHdp dGgKLSsgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lCi0rICAgICAgICB8IHJ2 IC0+IHJ2KQotKyAgICAgICAiXG5cbiIpOwotKyAgYXNzZXJ0X2VxdWFsIH5wcmludGVyIE5vbmUK LSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbIGBNVUxUSUxJTkUgXSAi LisiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+Ci0rICAgICAgICBtYXRjaAotKyAgICAgICAg ICBPcHRpb24ubWFwCi0rICAgICAgICAgICAgKGZ1biBfX2dfXyAtPiBQY3JlMi5nZXRfc3Vic3Ry aW5nIF9fZ19fIDApCi0rICAgICAgICAgICAgKHRyeSBTb21lIChQY3JlMi5leGVjIH5yZXg6X19y ZV9fIF9fc3Vial9fKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lKQotKyAgICAgICAgd2l0aAotKyAg ICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IE5vbmUKLSsgICAgICAgIHwgcnYgLT4gcnYp Ci0rICAgICAgICJcblxuIik7Ci0rICBhc3NlcnRfZXF1YWwgfnByaW50ZXIgTm9uZQotKyAgICAo KGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICIuKyIgaW4KLSsgICAgICBmdW4g X19zdWJqX18gLT4KLSsgICAgICAgIG1hdGNoCi0rICAgICAgICAgIE9wdGlvbi5tYXAKLSsgICAg ICAgICAgICAoZnVuIF9fZ19fIC0+IFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCkKLSsgICAg ICAgICAgICAodHJ5IFNvbWUgKFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pIHdpdGgg Tm90X2ZvdW5kIC0+IE5vbmUpCi0rICAgICAgICB3aXRoCi0rICAgICAgICB8IGV4Y2VwdGlvbiBO b3RfZm91bmQgLT4gTm9uZQotKyAgICAgICAgfCBydiAtPiBydikKLSsgICAgICAgIlxuXG4iKTsK LSsgIGFzc2VydF9lcXVhbCB+cHJpbnRlciAoU29tZSAiXG5cbiIpCi0rICAgICgobGV0IF9fcmVf XyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6WyBgRE9UQUxMIF0gIi4rIiBpbgotKyAgICAgIGZ1biBf X3N1YmpfXyAtPgotKyAgICAgICAgbWF0Y2gKLSsgICAgICAgICAgT3B0aW9uLm1hcAotKyAgICAg ICAgICAgIChmdW4gX19nX18gLT4gUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAwKQotKyAgICAg ICAgICAgICh0cnkgU29tZSAoUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykgd2l0aCBO b3RfZm91bmQgLT4gTm9uZSkKLSsgICAgICAgIHdpdGgKLSsgICAgICAgIHwgZXhjZXB0aW9uIE5v dF9mb3VuZCAtPiBOb25lCi0rICAgICAgICB8IHJ2IC0+IHJ2KQotKyAgICAgICAiXG5cbiIpOwot KyAgYXNzZXJ0X2VxdWFsIH5wcmludGVyIE5vbmUKLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIu cmVnZXhwIH5mbGFnczpbIGBNVUxUSUxJTkUgXSAiLisiIGluCi0rICAgICAgZnVuIF9fc3Vial9f IC0+Ci0rICAgICAgICBtYXRjaAotKyAgICAgICAgICBPcHRpb24ubWFwCi0rICAgICAgICAgICAg KGZ1biBfX2dfXyAtPiBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDApCi0rICAgICAgICAgICAg KHRyeSBTb21lIChQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKSB3aXRoIE5vdF9mb3Vu ZCAtPiBOb25lKQotKyAgICAgICAgd2l0aAotKyAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5k IC0+IE5vbmUKLSsgICAgICAgIHwgcnYgLT4gcnYpCi0rICAgICAgICJcblxuIik7Ci0rICBsZXQg cHJpbnRlciB4ID0geCBpbgotKyAgKCk7Ci0rICBhc3NlcnRfZXF1YWwgfnByaW50ZXIgIlxuXG4i Ci0rICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6WyBgRE9UQUxMIF0gIi4r IiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAgICAgKGZ1biBfX2dfXyAtPiBQY3Jl Mi5nZXRfc3Vic3RyaW5nIF9fZ19fIDApCi0rICAgICAgICAgIChQY3JlMi5leGVjIH5yZXg6X19y ZV9fIF9fc3Vial9fKSkKLSsgICAgICAgIlxuXG4iKTsKLSsgIGFzc2VydF9lcXVhbCB+cHJpbnRl ciAiPDxhYmM+PlxuZGVmIgotKyAgICAoUGNyZTIuc3Vic3RpdHV0ZV9zdWJzdHJpbmdzX2ZpcnN0 Ci0rICAgICAgIH5yZXg6KFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gIi4rIikKLSsgICAgICAgfnN1 YnN0OihmdW4gX19nX18gLT4KLSsgICAgICAgICBTdHJpbmcuY29uY2F0ICIiCi0rICAgICAgICAg ICBbCi0rICAgICAgICAgICAgICI8PCI7Ci0rICAgICAgICAgICAgIChtYXRjaCBQY3JlMi5nZXRf c3Vic3RyaW5nIF9fZ19fIDAgd2l0aAotKyAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91 bmQgLT4gIiIKLSsgICAgICAgICAgICAgfCBzIC0+IHMpOwotKyAgICAgICAgICAgICAiPj4iOwot KyAgICAgICAgICAgXSkKLSsgICAgICAgImFiY1xuZGVmIik7Ci0rICBhc3NlcnRfZXF1YWwgfnBy aW50ZXIgIjw8YWJjXG5kZWY+PiIKLSsgICAgKFBjcmUyLnN1YnN0aXR1dGVfc3Vic3RyaW5nc19m aXJzdAotKyAgICAgICB+cmV4OihQY3JlMi5yZWdleHAgfmZsYWdzOlsgYERPVEFMTCBdICIuKyIp Ci0rICAgICAgIH5zdWJzdDooZnVuIF9fZ19fIC0+Ci0rICAgICAgICAgU3RyaW5nLmNvbmNhdCAi IgotKyAgICAgICAgICAgWwotKyAgICAgICAgICAgICAiPDwiOwotKyAgICAgICAgICAgICAobWF0 Y2ggUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAwIHdpdGgKLSsgICAgICAgICAgICAgfCBleGNl cHRpb24gTm90X2ZvdW5kIC0+ICIiCi0rICAgICAgICAgICAgIHwgcyAtPiBzKTsKLSsgICAgICAg ICAgICAgIj4+IjsKLSsgICAgICAgICAgIF0pCi0rICAgICAgICJhYmNcbmRlZiIpOwotKyAgYXNz ZXJ0X2VxdWFsIH5wcmludGVyICI8PGFiYz4+XG5kZWYiCi0rICAgIChQY3JlMi5zdWJzdGl0dXRl X3N1YnN0cmluZ3NfZmlyc3QKLSsgICAgICAgfnJleDooUGNyZTIucmVnZXhwIH5mbGFnczpbIGBN VUxUSUxJTkUgXSAiLisiKQotKyAgICAgICB+c3Vic3Q6KGZ1biBfX2dfXyAtPgotKyAgICAgICAg IFN0cmluZy5jb25jYXQgIiIKLSsgICAgICAgICAgIFsKLSsgICAgICAgICAgICAgIjw8IjsKLSsg ICAgICAgICAgICAgKG1hdGNoIFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCB3aXRoCi0rICAg ICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAiIgotKyAgICAgICAgICAgICB8IHMg LT4gcyk7Ci0rICAgICAgICAgICAgICI+PiI7Ci0rICAgICAgICAgICBdKQotKyAgICAgICAiYWJj XG5kZWYiKTsKLSsgIGFzc2VydF9lcXVhbCB+cHJpbnRlciAiPDxhYmM+PlxuZGVmIgotKyAgICAo UGNyZTIuc3Vic3RpdHV0ZV9zdWJzdHJpbmdzX2ZpcnN0Ci0rICAgICAgIH5yZXg6KFBjcmUyLnJl Z2V4cCB+ZmxhZ3M6W10gIi4qIikKLSsgICAgICAgfnN1YnN0OihmdW4gX19nX18gLT4KLSsgICAg ICAgICBTdHJpbmcuY29uY2F0ICIiCi0rICAgICAgICAgICBbCi0rICAgICAgICAgICAgICI8PCI7 Ci0rICAgICAgICAgICAgIChtYXRjaCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDAgd2l0aAot KyAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gIiIKLSsgICAgICAgICAgICAg fCBzIC0+IHMpOwotKyAgICAgICAgICAgICAiPj4iOwotKyAgICAgICAgICAgXSkKLSsgICAgICAg ImFiY1xuZGVmIik7Ci0rICBhc3NlcnRfZXF1YWwgfnByaW50ZXIgIjw8YWJjPj48PD4+XG48PGRl Zj4+PDw+PiIKLSsgICAgKFBjcmUyLnN1YnN0aXR1dGVfc3Vic3RyaW5ncwotKyAgICAgICB+cmV4 OihQY3JlMi5yZWdleHAgfmZsYWdzOltdICIuKiIpCi0rICAgICAgIH5zdWJzdDooZnVuIF9fZ19f IC0+Ci0rICAgICAgICAgU3RyaW5nLmNvbmNhdCAiIgotKyAgICAgICAgICAgWwotKyAgICAgICAg ICAgICAiPDwiOwotKyAgICAgICAgICAgICAobWF0Y2ggUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2df XyAwIHdpdGgKLSsgICAgICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+ICIiCi0rICAg ICAgICAgICAgIHwgcyAtPiBzKTsKLSsgICAgICAgICAgICAgIj4+IjsKLSsgICAgICAgICAgIF0p Ci0rICAgICAgICJhYmNcbmRlZiIpOwotKyAgYXNzZXJ0X2VxdWFsIH5wcmludGVyICI8PGFiYz4+ XG48PGRlZj4+IgotKyAgICAoUGNyZTIuc3Vic3RpdHV0ZV9zdWJzdHJpbmdzCi0rICAgICAgIH5y ZXg6KFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gIi4rIikKLSsgICAgICAgfnN1YnN0OihmdW4gX19n X18gLT4KLSsgICAgICAgICBTdHJpbmcuY29uY2F0ICIiCi0rICAgICAgICAgICBbCi0rICAgICAg ICAgICAgICI8PCI7Ci0rICAgICAgICAgICAgIChtYXRjaCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9f Z19fIDAgd2l0aAotKyAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gIiIKLSsg ICAgICAgICAgICAgfCBzIC0+IHMpOwotKyAgICAgICAgICAgICAiPj4iOwotKyAgICAgICAgICAg XSkKLSsgICAgICAgImFiY1xuZGVmIik7Ci0rICBhc3NlcnRfZXF1YWwgfnByaW50ZXIgIjw8YWJj Pj5hXG5jPDxhZWM+PiIKLSsgICAgKFBjcmUyLnN1YnN0aXR1dGVfc3Vic3RyaW5ncwotKyAgICAg ICB+cmV4OihQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhLmMiKQotKyAgICAgICB+c3Vic3Q6KGZ1 biBfX2dfXyAtPgotKyAgICAgICAgIFN0cmluZy5jb25jYXQgIiIKLSsgICAgICAgICAgIFsKLSsg ICAgICAgICAgICAgIjw8IjsKLSsgICAgICAgICAgICAgKG1hdGNoIFBjcmUyLmdldF9zdWJzdHJp bmcgX19nX18gMCB3aXRoCi0rICAgICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAi IgotKyAgICAgICAgICAgICB8IHMgLT4gcyk7Ci0rICAgICAgICAgICAgICI+PiI7Ci0rICAgICAg ICAgICBdKQotKyAgICAgICAiYWJjYVxuY2FlYyIpOwotKyAgYXNzZXJ0X2VxdWFsIH5wcmludGVy ICI8PGFiYz4+PDxhXG5jPj48PGFlYz4+IgotKyAgICAoUGNyZTIuc3Vic3RpdHV0ZV9zdWJzdHJp bmdzCi0rICAgICAgIH5yZXg6KFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6WyBgRE9UQUxMIF0gImEuYyIp Ci0rICAgICAgIH5zdWJzdDooZnVuIF9fZ19fIC0+Ci0rICAgICAgICAgU3RyaW5nLmNvbmNhdCAi IgotKyAgICAgICAgICAgWwotKyAgICAgICAgICAgICAiPDwiOwotKyAgICAgICAgICAgICAobWF0 Y2ggUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAwIHdpdGgKLSsgICAgICAgICAgICAgfCBleGNl cHRpb24gTm90X2ZvdW5kIC0+ICIiCi0rICAgICAgICAgICAgIHwgcyAtPiBzKTsKLSsgICAgICAg ICAgICAgIj4+IjsKLSsgICAgICAgICAgIF0pCi0rICAgICAgICJhYmNhXG5jYWVjIikKLSsKLSts ZXQgdGVzdF9wY3JlMl9tdWx0aWxpbmUgY3R4dCA9Ci0rICAoKTsKLSsgIGFzc2VydF9lcXVhbCAo U29tZSAiYmFyIikKLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAi LiskIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAgICAgbWF0Y2gKLSsgICAgICAg ICAgT3B0aW9uLm1hcAotKyAgICAgICAgICAgIChmdW4gX19nX18gLT4gUGNyZTIuZ2V0X3N1YnN0 cmluZyBfX2dfXyAwKQotKyAgICAgICAgICAgICh0cnkgU29tZSAoUGNyZTIuZXhlYyB+cmV4Ol9f cmVfXyBfX3N1YmpfXykgd2l0aCBOb3RfZm91bmQgLT4gTm9uZSkKLSsgICAgICAgIHdpdGgKLSsg ICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lCi0rICAgICAgICB8IHJ2IC0+IHJ2 KQotKyAgICAgICAiZm9vXG5iYXIiKTsKLSsgIGFzc2VydF9lcXVhbCAoU29tZSAiZm9vIikKLSsg ICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbIGBNVUxUSUxJTkUgXSAiLisk IiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPgotKyAgICAgICAgbWF0Y2gKLSsgICAgICAgICAg T3B0aW9uLm1hcAotKyAgICAgICAgICAgIChmdW4gX19nX18gLT4gUGNyZTIuZ2V0X3N1YnN0cmlu ZyBfX2dfXyAwKQotKyAgICAgICAgICAgICh0cnkgU29tZSAoUGNyZTIuZXhlYyB+cmV4Ol9fcmVf XyBfX3N1YmpfXykgd2l0aCBOb3RfZm91bmQgLT4gTm9uZSkKLSsgICAgICAgIHdpdGgKLSsgICAg ICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lCi0rICAgICAgICB8IHJ2IC0+IHJ2KQot KyAgICAgICAiZm9vXG5iYXIiKQotKwotK2xldCB0ZXN0X3BjcmUyX3NpbXBsZV9zcGxpdCBjdHh0 ID0KLSsgICgpOwotKyAgYXNzZXJ0X2VxdWFsIFsgImJiIiBdCi0rICAgICgobGV0IF9fcmVfXyA9 IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImEiIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+IFBj cmUyLnNwbGl0IH5yZXg6X19yZV9fIF9fc3Vial9fKQotKyAgICAgICAiYmIiKQotKwotK2xldCB0 ZXN0X3BjcmUyX2RlbGltX3NwbGl0X3JhdyBjdHh0ID0KLSsgIGxldCBvcGVuIFBjcmUyIGluCi0r ICAoKTsKLSsgIGFzc2VydF9lcXVhbAotKyAgICBbIERlbGltICJhIjsgVGV4dCAiYiI7IERlbGlt ICJhIjsgVGV4dCAiYiIgXQotKyAgICAoKGxldCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdz OltdICJhIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPiBQY3JlMi5mdWxsX3NwbGl0IH5yZXg6 X19yZV9fIF9fc3Vial9fKQotKyAgICAgICAiYWJhYmEiKTsKLSsgIGFzc2VydF9lcXVhbAotKyAg ICBbIERlbGltICJhIjsgVGV4dCAiYiI7IERlbGltICJhIjsgRGVsaW0gImEiOyBUZXh0ICJiIiBd Ci0rICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImEiIGluCi0rICAg ICAgZnVuIF9fc3Vial9fIC0+IFBjcmUyLmZ1bGxfc3BsaXQgfnJleDpfX3JlX18gX19zdWJqX18p Ci0rICAgICAgICJhYmFhYmEiKTsKLSsgIGFzc2VydF9lcXVhbAotKyAgICBbCi0rICAgICAgRGVs aW0gImEiOwotKyAgICAgIE5vR3JvdXA7Ci0rICAgICAgVGV4dCAiYiI7Ci0rICAgICAgRGVsaW0g ImFjIjsKLSsgICAgICBHcm91cCAoMSwgImMiKTsKLSsgICAgICBUZXh0ICJiIjsKLSsgICAgICBE ZWxpbSAiYSI7Ci0rICAgICAgTm9Hcm91cDsKLSsgICAgXQotKyAgICAoKGxldCBfX3JlX18gPSBQ Y3JlMi5yZWdleHAgfmZsYWdzOltdICJhKGMpPyIgaW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4g UGNyZTIuZnVsbF9zcGxpdCB+cmV4Ol9fcmVfXyBfX3N1YmpfXykKLSsgICAgICAgImFiYWNiYSIp OwotKyAgYXNzZXJ0X2VxdWFsCi0rICAgIFsKLSsgICAgICBEZWxpbSAiYWMiOwotKyAgICAgIEdy b3VwICgxLCAiYyIpOwotKyAgICAgIFRleHQgImIiOwotKyAgICAgIERlbGltICJhYyI7Ci0rICAg ICAgR3JvdXAgKDEsICJjIik7Ci0rICAgICAgVGV4dCAiYiI7Ci0rICAgICAgRGVsaW0gImFjIjsK LSsgICAgICBHcm91cCAoMSwgImMiKTsKLSsgICAgXQotKyAgICAoKGxldCBfX3JlX18gPSBQY3Jl Mi5yZWdleHAgfmZsYWdzOltdICJhKGMpIiBpbgotKyAgICAgIGZ1biBfX3N1YmpfXyAtPiBQY3Jl Mi5mdWxsX3NwbGl0IH5yZXg6X19yZV9fIF9fc3Vial9fKQotKyAgICAgICAiYWNiYWNiYWMiKTsK LSsgIGFzc2VydF9lcXVhbAotKyAgICBbCi0rICAgICAgRGVsaW0gImFjIjsKLSsgICAgICBHcm91 cCAoMSwgImMiKTsKLSsgICAgICBUZXh0ICJiIjsKLSsgICAgICBEZWxpbSAiYWMiOwotKyAgICAg IEdyb3VwICgxLCAiYyIpOwotKyAgICAgIFRleHQgImIiOwotKyAgICAgIERlbGltICJhYyI7Ci0r ICAgICAgR3JvdXAgKDEsICJjIik7Ci0rICAgIF0KLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIu cmVnZXhwIH5mbGFnczpbXSAiYShjKSIgaW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4gUGNyZTIu ZnVsbF9zcGxpdCB+cmV4Ol9fcmVfXyBfX3N1YmpfXykKLSsgICAgICAgImFjYmFjYmFjIik7Ci0r ICBhc3NlcnRfZXF1YWwKLSsgICAgWwotKyAgICAgIERlbGltICJhIjsKLSsgICAgICBOb0dyb3Vw OwotKyAgICAgIFRleHQgImIiOwotKyAgICAgIERlbGltICJhYyI7Ci0rICAgICAgR3JvdXAgKDEs ICJjIik7Ci0rICAgICAgVGV4dCAiYiI7Ci0rICAgICAgRGVsaW0gImEiOwotKyAgICAgIE5vR3Jv dXA7Ci0rICAgIF0KLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAi YShjKT8iIGluCi0rICAgICAgZnVuIF9fc3Vial9fIC0+IFBjcmUyLmZ1bGxfc3BsaXQgfnJleDpf X3JlX18gX19zdWJqX18pCi0rICAgICAgICJhYmFjYmEiKTsKLSsgIGFzc2VydF9lcXVhbAotKyAg ICBbIFRleHQgImFiIjsgRGVsaW0gIngiOyBHcm91cCAoMSwgIngiKTsgTm9Hcm91cDsgVGV4dCAi Y2QiIF0KLSsgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiKHgpfCh1 KSIgaW4KLSsgICAgICBmdW4gX19zdWJqX18gLT4gUGNyZTIuZnVsbF9zcGxpdCB+cmV4Ol9fcmVf XyBfX3N1YmpfXykKLSsgICAgICAgImFieGNkIik7Ci0rICBhc3NlcnRfZXF1YWwKLSsgICAgWwot KyAgICAgIFRleHQgImFiIjsKLSsgICAgICBEZWxpbSAieCI7Ci0rICAgICAgR3JvdXAgKDEsICJ4 Iik7Ci0rICAgICAgTm9Hcm91cDsKLSsgICAgICBUZXh0ICJjZCI7Ci0rICAgICAgRGVsaW0gInUi OwotKyAgICAgIE5vR3JvdXA7Ci0rICAgICAgR3JvdXAgKDIsICJ1Iik7Ci0rICAgIF0KLSsgICAg KChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiKHgpfCh1KSIgaW4KLSsgICAg ICBmdW4gX19zdWJqX18gLT4gUGNyZTIuZnVsbF9zcGxpdCB+cmV4Ol9fcmVfXyBfX3N1YmpfXykK LSsgICAgICAgImFieGNkdSIpCi0rCi0rbGV0IHRlc3RfcGNyZTJfc3RyaW5nX3BhdHRlcm4gY3R4 dCA9Ci0rICAoKTsKLSsgIGFzc2VydF9lcXVhbCAiJGIiCi0rICAgICgoZnVuIF9fZ19fIC0+Ci0r ICAgICAgIFN0cmluZy5jb25jYXQgIiIKLSsgICAgICAgICBbCi0rICAgICAgICAgICAiJCI7Ci0r ICAgICAgICAgICAiIjsKLSsgICAgICAgICAgIChtYXRjaCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9f Z19fIDEgd2l0aAotKyAgICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+ICIiCi0rICAg ICAgICAgICB8IHMgLT4gcyk7Ci0rICAgICAgICAgXSkKLSsgICAgICAgKChsZXQgX19yZV9fID0g UGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYShiKWMiIGluCi0rICAgICAgICAgZnVuIF9fc3Vial9f IC0+IFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18pCi0rICAgICAgICAgICJhYmMiKSk7 Ci0rICBhc3NlcnRfZXF1YWwgImIiCi0rICAgICgoZnVuIF9fZ19fIC0+Ci0rICAgICAgIFN0cmlu Zy5jb25jYXQgIiIKLSsgICAgICAgICBbCi0rICAgICAgICAgICAobWF0Y2ggUGNyZTIuZ2V0X3N1 YnN0cmluZyBfX2dfXyAwMSB3aXRoCi0rICAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQg LT4gIiIKLSsgICAgICAgICAgIHwgcyAtPiBzKTsKLSsgICAgICAgICBdKQotKyAgICAgICAoKGxl dCBfX3JlX18gPSBQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhKGIpYyIgaW4KLSsgICAgICAgICBm dW4gX19zdWJqX18gLT4gUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykKLSsgICAgICAg ICAgImFiYyIpKTsKLSsgIGFzc2VydF9lcXVhbCAiYngiCi0rICAgIChsZXQgcyA9ICJ4IiBpbgot KyAgICAgKGZ1biBfX2dfXyAtPgotKyAgICAgICBTdHJpbmcuY29uY2F0ICIiCi0rICAgICAgICAg WwotKyAgICAgICAgICAgKG1hdGNoIFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMDEgd2l0aAot KyAgICAgICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+ICIiCi0rICAgICAgICAgICB8IHMg LT4gcyk7Ci0rICAgICAgICAgICAiIjsKLSsgICAgICAgICAgIHM7Ci0rICAgICAgICAgXSkKLSsg ICAgICAgKChsZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYShiKWMiIGluCi0r ICAgICAgICAgZnVuIF9fc3Vial9fIC0+IFBjcmUyLmV4ZWMgfnJleDpfX3JlX18gX19zdWJqX18p Ci0rICAgICAgICAgICJhYmMiKSk7Ci0rICBhc3NlcnRfZXF1YWwgIlwiYngiCi0rICAgIChsZXQg cyA9ICJ4IiBpbgotKyAgICAgKGZ1biBfX2dfXyAtPgotKyAgICAgICBTdHJpbmcuY29uY2F0ICIi Ci0rICAgICAgICAgWwotKyAgICAgICAgICAgIlwiIjsKLSsgICAgICAgICAgIChtYXRjaCBQY3Jl Mi5nZXRfc3Vic3RyaW5nIF9fZ19fIDAxIHdpdGgKLSsgICAgICAgICAgIHwgZXhjZXB0aW9uIE5v dF9mb3VuZCAtPiAiIgotKyAgICAgICAgICAgfCBzIC0+IHMpOwotKyAgICAgICAgICAgIiI7Ci0r ICAgICAgICAgICBzOwotKyAgICAgICAgIF0pCi0rICAgICAgICgobGV0IF9fcmVfXyA9IFBjcmUy LnJlZ2V4cCB+ZmxhZ3M6W10gImEoYiljIiBpbgotKyAgICAgICAgIGZ1biBfX3N1YmpfXyAtPiBQ Y3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKQotKyAgICAgICAgICAiYWJjIikpOwotKyAg YXNzZXJ0X2VxdWFsICJcIngiCi0rICAgIChsZXQgcyA9ICJ4IiBpbgotKyAgICAgU3RyaW5nLmNv bmNhdCAiIiBbICJcIiI7IHMgXSkKLSsKLStsZXQgdGVzdF9wY3JlMl9leHByX3BhdHRlcm4gY3R4 dCA9Ci0rICAoKTsKLSsgIGFzc2VydF9lcXVhbCAiYWJjIgotKyAgICAoKGZ1biBfX2dfXyAtPgot KyAgICAgICBtYXRjaCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDAgd2l0aAotKyAgICAgICB8 IGV4Y2VwdGlvbiBOb3RfZm91bmQgLT4gIiIKLSsgICAgICAgfCBzIC0+IHMpCi0rICAgICAgICgo bGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImFiYyIgaW4KLSsgICAgICAgICBm dW4gX19zdWJqX18gLT4gUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykKLSsgICAgICAg ICAgImFiYyIpKTsKLSsgIGFzc2VydF9lcXVhbCAiYWJjeCIKLSsgICAgKChmdW4gX19nX18gLT4K LSsgICAgICAgKG1hdGNoIFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMCB3aXRoCi0rICAgICAg IHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAiIgotKyAgICAgICB8IHMgLT4gcykKLSsgICAgICAg XiAieCIpCi0rICAgICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10gImFi YyIgaW4KLSsgICAgICAgICBmdW4gX19zdWJqX18gLT4gUGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBf X3N1YmpfXykKLSsgICAgICAgICAgImFiYyIpKTsKLSsgIGFzc2VydF9lcXVhbCAiYWJjeCIKLSsg ICAgKGxldCB4ID0gIngiIGluCi0rICAgICAoZnVuIF9fZ19fIC0+Ci0rICAgICAgIChtYXRjaCBQ Y3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19fIDAgd2l0aAotKyAgICAgICB8IGV4Y2VwdGlvbiBOb3Rf Zm91bmQgLT4gIiIKLSsgICAgICAgfCBzIC0+IHMpCi0rICAgICAgIF4geCkKLSsgICAgICAgKChs ZXQgX19yZV9fID0gUGNyZTIucmVnZXhwIH5mbGFnczpbXSAiYWJjIiBpbgotKyAgICAgICAgIGZ1 biBfX3N1YmpfXyAtPiBQY3JlMi5leGVjIH5yZXg6X19yZV9fIF9fc3Vial9fKQotKyAgICAgICAg ICAiYWJjIikpOwotKyAgYXNzZXJ0X2VxdWFsICJ4IgotKyAgICAobGV0IHggPSAieCIgaW4KLSsg ICAgICIiIF4geCkKLSsKLStsZXQgdGVzdF9wY3JlMl9zdWJzdCBjdHh0ID0KLSsgICgpOwotKyAg YXNzZXJ0X2VxdWFsICIkYiIKLSsgICAgKFBjcmUyLnN1YnN0aXR1dGVfc3Vic3RyaW5nc19maXJz dAotKyAgICAgICB+cmV4OihQY3JlMi5yZWdleHAgfmZsYWdzOltdICJhKGIpYyIpCi0rICAgICAg IH5zdWJzdDooZnVuIF9fZ19fIC0+Ci0rICAgICAgICAgU3RyaW5nLmNvbmNhdCAiIgotKyAgICAg ICAgICAgWwotKyAgICAgICAgICAgICAiJCI7Ci0rICAgICAgICAgICAgICIiOwotKyAgICAgICAg ICAgICAobWF0Y2ggUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAxIHdpdGgKLSsgICAgICAgICAg ICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+ICIiCi0rICAgICAgICAgICAgIHwgcyAtPiBzKTsK LSsgICAgICAgICAgIF0pCi0rICAgICAgICJhYmMiKTsKLSsgIGFzc2VydF9lcXVhbCAiJGIiCi0r ICAgIChQY3JlMi5zdWJzdGl0dXRlX3N1YnN0cmluZ3NfZmlyc3QKLSsgICAgICAgfnJleDooUGNy ZTIucmVnZXhwIH5mbGFnczpbIGBDQVNFTEVTUyBdICJBKEIpQyIpCi0rICAgICAgIH5zdWJzdDoo ZnVuIF9fZ19fIC0+Ci0rICAgICAgICAgU3RyaW5nLmNvbmNhdCAiIgotKyAgICAgICAgICAgWwot KyAgICAgICAgICAgICAiJCI7Ci0rICAgICAgICAgICAgICIiOwotKyAgICAgICAgICAgICAobWF0 Y2ggUGNyZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAxIHdpdGgKLSsgICAgICAgICAgICAgfCBleGNl cHRpb24gTm90X2ZvdW5kIC0+ICIiCi0rICAgICAgICAgICAgIHwgcyAtPiBzKTsKLSsgICAgICAg ICAgIF0pCi0rICAgICAgICJhYmMiKTsKLSsgIGFzc2VydF9lcXVhbCAiJGJhYmMiCi0rICAgIChQ Y3JlMi5zdWJzdGl0dXRlX3N1YnN0cmluZ3NfZmlyc3QKLSsgICAgICAgfnJleDooUGNyZTIucmVn ZXhwIH5mbGFnczpbIGBDQVNFTEVTUyBdICJBKEIpQyIpCi0rICAgICAgIH5zdWJzdDooZnVuIF9f Z19fIC0+Ci0rICAgICAgICAgU3RyaW5nLmNvbmNhdCAiIgotKyAgICAgICAgICAgWwotKyAgICAg ICAgICAgICAiJCI7Ci0rICAgICAgICAgICAgICIiOwotKyAgICAgICAgICAgICAobWF0Y2ggUGNy ZTIuZ2V0X3N1YnN0cmluZyBfX2dfXyAxIHdpdGgKLSsgICAgICAgICAgICAgfCBleGNlcHRpb24g Tm90X2ZvdW5kIC0+ICIiCi0rICAgICAgICAgICAgIHwgcyAtPiBzKTsKLSsgICAgICAgICAgIF0p Ci0rICAgICAgICJhYmNhYmMiKTsKLSsgIGFzc2VydF9lcXVhbCAiJGIkYiIKLSsgICAgKFBjcmUy LnN1YnN0aXR1dGVfc3Vic3RyaW5ncwotKyAgICAgICB+cmV4OihQY3JlMi5yZWdleHAgfmZsYWdz OlsgYENBU0VMRVNTIF0gIkEoQilDIikKLSsgICAgICAgfnN1YnN0OihmdW4gX19nX18gLT4KLSsg ICAgICAgICBTdHJpbmcuY29uY2F0ICIiCi0rICAgICAgICAgICBbCi0rICAgICAgICAgICAgICIk IjsKLSsgICAgICAgICAgICAgIiI7Ci0rICAgICAgICAgICAgIChtYXRjaCBQY3JlMi5nZXRfc3Vi c3RyaW5nIF9fZ19fIDEgd2l0aAotKyAgICAgICAgICAgICB8IGV4Y2VwdGlvbiBOb3RfZm91bmQg LT4gIiIKLSsgICAgICAgICAgICAgfCBzIC0+IHMpOwotKyAgICAgICAgICAgXSkKLSsgICAgICAg ImFiY2FiYyIpOwotKyAgYXNzZXJ0X2VxdWFsICIkYiRiIgotKyAgICAoUGNyZTIuc3Vic3RpdHV0 ZV9zdWJzdHJpbmdzCi0rICAgICAgIH5yZXg6KFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6WyBgQ0FTRUxF U1MgXSAiQShCKUMiKQotKyAgICAgICB+c3Vic3Q6KGZ1biBfX2dfXyAtPgotKyAgICAgICAgICIk IgotKyAgICAgICAgIF4KLSsgICAgICAgICBtYXRjaCBQY3JlMi5nZXRfc3Vic3RyaW5nIF9fZ19f IDEgd2l0aAotKyAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAiIgotKyAgICAgICAg IHwgcyAtPiBzKQotKyAgICAgICAiYWJjYWJjIik7Ci0rICBhc3NlcnRfZXF1YWwgIiQkIgotKyAg ICAoUGNyZTIuc3Vic3RpdHV0ZV9zdWJzdHJpbmdzCi0rICAgICAgIH5yZXg6KFBjcmUyLnJlZ2V4 cCB+ZmxhZ3M6WyBgQ0FTRUxFU1MgXSAiQShCKUMiKQotKyAgICAgICB+c3Vic3Q6KGZ1biBfX2df XyAtPiAiJCIpCi0rICAgICAgICJhYmNhYmMiKTsKLSsgIGFzc2VydF9lcXVhbCAiJCQiCi0rICAg IChQY3JlMi5zdWJzdGl0dXRlX3N1YnN0cmluZ3MKLSsgICAgICAgfnJleDooUGNyZTIucmVnZXhw IH5mbGFnczpbIGBDQVNFTEVTUyBdICJBKEIpQyIpCi0rICAgICAgIH5zdWJzdDooZnVuIF9fZ19f IC0+IFN0cmluZy5jb25jYXQgIiIgWyAiJCIgXSkKLSsgICAgICAgImFiY2FiYyIpCi0rCi0rbGV0 IHRlc3RfcGNyZTJfb2NhbWxmaW5kX2JpdHMgY3R4dCA9Ci0rICAoKTsKLSsgIGFzc2VydF9lcXVh bCB+cHJpbnRlcjpzaG93X3N0cmluZ19vcHRpb24gKFNvbWUgIi1zeW50YXggY2FtbHA1byAiKQot KyAgICAoc25kCi0rICAgICAgICgobGV0IF9fcmVfXyA9IFBjcmUyLnJlZ2V4cCB+ZmxhZ3M6W10g Il5cXChcXCpcXCpwcCAoLio/KVxcKlxcKSIgaW4KLSsgICAgICAgICBmdW4gX19zdWJqX18gLT4K LSsgICAgICAgICAgIChmdW4gX19nX18gLT4KLSsgICAgICAgICAgICAgKCBQY3JlMi5nZXRfc3Vi c3RyaW5nIF9fZ19fIDAsCi0rICAgICAgICAgICAgICAgdHJ5IFNvbWUgKFBjcmUyLmdldF9zdWJz dHJpbmcgX19nX18gMSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZSApKQotKyAgICAgICAgICAgICAo UGNyZTIuZXhlYyB+cmV4Ol9fcmVfXyBfX3N1YmpfXykpCi0rICAgICAgICAgICIoKipwcCAtc3lu dGF4IGNhbWxwNW8gKilcbiIpKQotKwotK2xldCBwY3JlMl9lbnZzdWJzdCBlbnZsb29rdXAgcyA9 Ci0rICBsZXQgZiBzMSBzMiA9Ci0rICAgIGlmIHMxIDw+ICIiIHRoZW4gZW52bG9va3VwIHMxCi0r ICAgIGVsc2UgaWYgczIgPD4gIiIgdGhlbiBlbnZsb29rdXAgczIKLSsgICAgZWxzZSBhc3NlcnQg ZmFsc2UKLSsgIGluCi0rICBQY3JlMi5zdWJzdGl0dXRlX3N1YnN0cmluZ3MKLSsgICAgfnJleDoo UGNyZTIucmVnZXhwIH5mbGFnczpbXSAiKD86XFwkXFwoKFteKV0rKVxcKXxcXCRcXHsoW159XSsp XFx9KSIpCi0rICAgIH5zdWJzdDooZnVuIF9fZ19fIC0+Ci0rICAgICAgZgotKyAgICAgICAgKG1h dGNoIFBjcmUyLmdldF9zdWJzdHJpbmcgX19nX18gMSB3aXRoCi0rICAgICAgICB8IGV4Y2VwdGlv biBOb3RfZm91bmQgLT4gIiIKLSsgICAgICAgIHwgcyAtPiBzKQotKyAgICAgICAgKG1hdGNoIFBj cmUyLmdldF9zdWJzdHJpbmcgX19nX18gMiB3aXRoCi0rICAgICAgICB8IGV4Y2VwdGlvbiBOb3Rf Zm91bmQgLT4gIiIKLSsgICAgICAgIHwgcyAtPiBzKSkKLSsgICAgcwotKwotK2xldCB0ZXN0X3Bj cmUyX2VudnN1YnN0X3ZpYV9yZXBsYWNlIGN0eHQgPQotKyAgbGV0IGYgPSBmdW5jdGlvbgotKyAg ICB8ICJBIiAtPiAicmVzMSIKLSsgICAgfCAiQiIgLT4gInJlczIiCi0rICAgIHwgXyAtPiBmYWls d2l0aCAidW5leHBlY3RlZCBhcmcgaW4gZW52c3Vic3QiCi0rICBpbgotKyAgYXNzZXJ0X2VxdWFs ICIuLi5yZXMxLi4ucmVzMi4uLiIgKHBjcmUyX2VudnN1YnN0IGYgIi4uLiQoQSkuLi4ke0J9Li4u IikKLSsKLStsZXQgYmFkX3BhdHRlcm4gY3R4dCA9Ci0rICBsZXQgb3BlbiBQY3JlMiBpbgotKyAg dHJ5Ci0rICAgIGlnbm9yZSAocmVnZXhwICI/Iik7Ci0rICAgIGFzc2VydF9mYWlsdXJlICJSZWdl eCBzaG91bGQgZmFpbCB0byBwYXJzZSIKLSsgIHdpdGggRXJyb3IgKEJhZFBhdHRlcm4gKHMsIF8p KSAtPgotKyAgICBhc3NlcnRfYm9vbAotKyAgICAgICJTdHJpbmcgY29udGFpbnMgYSB6ZXJvIGJ5 dGUuIEluIDgtYml0IG1vZGUgdGhpcyBpbmRpY2F0ZXMgYW4gZXJyb3IgaW4gXAotKyAgICAgICB0 aGUgY3JlYXRpb24gb2YgdGhlIGVycm9yIG1lc3NhZ2Ugc2luY2Ugc3RyaW5ncyBjcmVhdGVkIGJ5 IFBDUkUyIHNob3VsZCBcCi0rICAgICAgIGJlIG51bGwgdGVybWluYXRlZC4iCi0rICAgICAgKG5v dCBAQCBTdHJpbmcuZXhpc3RzIChmdW4gYyAtPiBjID0gJ1wwMDAnKSBzKQotKwotK2xldCBzdWl0 ZSA9Ci0rICAiVGVzdCBwYV9wcHhfcmVnZXhwIgotKyAgPjo6OiBbCi0rICAgICAgICAgInBjcmUy IHNpbXBsZV9tYXRjaCIgPjo6IHRlc3RfcGNyZTJfc2ltcGxlX21hdGNoOwotKyAgICAgICAgICJw Y3JlMiBzZWxlY3RpdmVfbWF0Y2giID46OiB0ZXN0X3BjcmUyX3NlbGVjdGl2ZV9tYXRjaDsKLSsg ICAgICAgICAicGNyZTIgc2VhcmNoIiA+OjogdGVzdF9wY3JlMl9zZWFyY2g7Ci0rICAgICAgICAg InBjcmUyIHNpbmdsZSIgPjo6IHRlc3RfcGNyZTJfc2luZ2xlOwotKyAgICAgICAgICJwY3JlMiBt dWx0aWxpbmUiID46OiB0ZXN0X3BjcmUyX211bHRpbGluZTsKLSsgICAgICAgICAicGNyZTIgc2lt cGxlX3NwbGl0IiA+OjogdGVzdF9wY3JlMl9zaW1wbGVfc3BsaXQ7Ci0rICAgICAgICAgInBjcmUy IGRlbGltX3NwbGl0IHJhdyIgPjo6IHRlc3RfcGNyZTJfZGVsaW1fc3BsaXRfcmF3OwotKyAgICAg ICAgICJwY3JlMiBzdHJpbmdfcGF0dGVybiIgPjo6IHRlc3RfcGNyZTJfc3RyaW5nX3BhdHRlcm47 Ci0rICAgICAgICAgInBjcmUyIGV4cHJfcGF0dGVybiIgPjo6IHRlc3RfcGNyZTJfZXhwcl9wYXR0 ZXJuOwotKyAgICAgICAgICJwY3JlMiBzdWJzdCIgPjo6IHRlc3RfcGNyZTJfc3Vic3Q7Ci0rICAg ICAgICAgInBjcmUyIG9jYW1sZmluZCBiaXRzIiA+OjogdGVzdF9wY3JlMl9vY2FtbGZpbmRfYml0 czsKLSsgICAgICAgICAicGNyZTIgZW52c3Vic3QgdmlhIHJlcGxhY2UiID46OiB0ZXN0X3BjcmUy X2VudnN1YnN0X3ZpYV9yZXBsYWNlOwotKyAgICAgICAgICJwY3JlIG9ubHlfcmVnZXhwcyIgPjo6 IHRlc3Rfc3BlY2lhbF9jaGFyX3JlZ2V4cHM7Ci0rICAgICAgICAgImJhZF9wYXR0ZXJuIiA+Ojog YmFkX3BhdHRlcm47Ci0rICAgICAgIF0KLSsKLStsZXQgXyA9IGlmIG5vdCAhU3lzLmludGVyYWN0 aXZlIHRoZW4gcnVuX3Rlc3RfdHRfbWFpbiBzdWl0ZQotLS0gCi0yLjUyLjAKLQoKZGlmZiAtLWdp dCBhLzAwMDUtcmVuYW1lLXNvbWUtYnVuZGxlZC1wY3JlMi1maWxlcy10by1iZS1pbnB1dC1maWxl cy5wYXRjaCBiLzAwMDUtcmVuYW1lLXNvbWUtYnVuZGxlZC1wY3JlMi1maWxlcy10by1iZS1pbnB1 dC1maWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU0NDljOC4uMDAw MDAwMAotLS0gYS8wMDA1LXJlbmFtZS1zb21lLWJ1bmRsZWQtcGNyZTItZmlsZXMtdG8tYmUtaW5w dXQtZmlsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1Gcm9tIGJhMDli NWQyYzhjNzFiYTY0YWM1MjAzNjc0MDFjNTg1NTViNDgxOTAgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi1Gcm9tOiBWaWN0b3IgR2FtYmllciA8dmljdG9yLmdhbWJpZXJAaW5yaWEuZnI+Ci1EYXRl OiBXZWQsIDE0IEphbiAyMDI2IDExOjM0OjU3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggNS85XSBy ZW5hbWUgc29tZSBidW5kbGVkIHBjcmUyIGZpbGVzIHRvIGJlIGlucHV0IGZpbGVzCi0KLShjaGVy cnkgcGlja2VkIGZyb20gY29tbWl0IGE2MTZkMGEyNDk4ZGE4NDNkNGNkZTMzZWVhODFlYzk5Njc2 ODkzNjMpCi0tLS0KLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi97cGNyZTIubWwgPT4g cGNyZTIubWwuaW59ICAgICAgICAgICB8IDAKLSBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xp Yi97cGNyZTJfc3R1YnMuYyA9PiBwY3JlMl9zdHVicy5jLmlufSB8IDAKLSAyIGZpbGVzIGNoYW5n ZWQsIDAgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKLSByZW5hbWUgYnVuZGxlcy9wY3Jl Mi9wY3JlMi1vY2FtbC9saWIve3BjcmUyLm1sID0+IHBjcmUyLm1sLmlufSAoMTAwJSkKLSByZW5h bWUgYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIve3BjcmUyX3N0dWJzLmMgPT4gcGNyZTJf c3R1YnMuYy5pbn0gKDEwMCUpCi0KLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUyL3BjcmUyLW9j YW1sL2xpYi9wY3JlMi5tbCBiL2J1bmRsZXMvcGNyZTIvcGNyZTItb2NhbWwvbGliL3BjcmUyLm1s LmluCi1zaW1pbGFyaXR5IGluZGV4IDEwMCUKLXJlbmFtZSBmcm9tIGJ1bmRsZXMvcGNyZTIvcGNy ZTItb2NhbWwvbGliL3BjcmUyLm1sCi1yZW5hbWUgdG8gYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2Ft bC9saWIvcGNyZTIubWwuaW4KLWRpZmYgLS1naXQgYS9idW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1s L2xpYi9wY3JlMl9zdHVicy5jIGIvYnVuZGxlcy9wY3JlMi9wY3JlMi1vY2FtbC9saWIvcGNyZTJf c3R1YnMuYy5pbgotc2ltaWxhcml0eSBpbmRleCAxMDAlCi1yZW5hbWUgZnJvbSBidW5kbGVzL3Bj cmUyL3BjcmUyLW9jYW1sL2xpYi9wY3JlMl9zdHVicy5jCi1yZW5hbWUgdG8gYnVuZGxlcy9wY3Jl Mi9wY3JlMi1vY2FtbC9saWIvcGNyZTJfc3R1YnMuYy5pbgotLS0gCi0yLjUyLjAKLQoKZGlmZiAt LWdpdCBhLzAwMDYtYWRkLS5naXRpZ25vcmUtaW4tcGNyZTItYnVuZGxlLXRvLWV4Y2x1ZGUtZ2Vu ZXJhdGVkLS5wYXRjaCBiLzAwMDYtYWRkLS5naXRpZ25vcmUtaW4tcGNyZTItYnVuZGxlLXRvLWV4 Y2x1ZGUtZ2VuZXJhdGVkLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE0 OWEzYi4uMDAwMDAwMAotLS0gYS8wMDA2LWFkZC0uZ2l0aWdub3JlLWluLXBjcmUyLWJ1bmRsZS10 by1leGNsdWRlLWdlbmVyYXRlZC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBA Ci1Gcm9tIDJlMzRlODZiZGEyM2NhYmQ3ZDI3OGEyYWFlMWY0MjBkYTQ0YWE1MGUgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaWN0b3IgR2FtYmllciA8dmljdG9yLmdhbWJpZXJAaW5y aWEuZnI+Ci1EYXRlOiBXZWQsIDE0IEphbiAyMDI2IDExOjM4OjA4ICswMTAwCi1TdWJqZWN0OiBb UEFUQ0ggNi85XSBhZGQgLmdpdGlnbm9yZSBpbiBwY3JlMiBidW5kbGUgdG8gZXhjbHVkZSBnZW5l cmF0ZWQgZmlsZXMKLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMGJiMDg1MzA3NjE4NjUy Zjc5Y2M3YTY4OGE2NmQzN2Q4ODFiMjZhZCkKLS0tLQotIGJ1bmRsZXMvcGNyZTIvLmdpdGlnbm9y ZSB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUg MTAwNjQ0IGJ1bmRsZXMvcGNyZTIvLmdpdGlnbm9yZQotCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9w Y3JlMi8uZ2l0aWdub3JlIGIvYnVuZGxlcy9wY3JlMi8uZ2l0aWdub3JlCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi44MTQzOGUxMTcKLS0tLSAvZGV2L251bGwKLSsrKyBi L2J1bmRsZXMvcGNyZTIvLmdpdGlnbm9yZQotQEAgLTAsMCArMSwyIEBACi0rcGNyZTItb2NhbWwv bGliL3BjcmUyLm1sCi0rcGNyZTItb2NhbWwvbGliL3BjcmUyX3N0dWJzLmMKLVwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQotLS0gCi0yLjUyLjAKLQoKZGlmZiAtLWdpdCBhLzAwMDctcmVuYW1l LXVwZGF0ZS1wY3JlLWJ1bmRsZS1NYWtlZmlsZS10by1yZWZsZWN0LWJ1bmRsZS5wYXRjaCBiLzAw MDctcmVuYW1lLXVwZGF0ZS1wY3JlLWJ1bmRsZS1NYWtlZmlsZS10by1yZWZsZWN0LWJ1bmRsZS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2YzNWVjNS4uMDAwMDAwMAotLS0g YS8wMDA3LXJlbmFtZS11cGRhdGUtcGNyZS1idW5kbGUtTWFrZWZpbGUtdG8tcmVmbGVjdC1idW5k bGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDJlYTNlOTg4MjI4 ZThiMjc5NjZmZWEwN2I3MThlZmZmYzdkODJkNWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBWaWN0b3IgR2FtYmllciA8dmljdG9yLmdhbWJpZXJAaW5yaWEuZnI+Ci1EYXRlOiBXZWQs IDE0IEphbiAyMDI2IDEyOjA0OjM2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggNy85XSByZW5hbWUv dXBkYXRlIHBjcmUgYnVuZGxlIE1ha2VmaWxlIHRvIHJlZmxlY3QgYnVuZGxlCi0gY2hhbmdlcwot Ci0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBjYjg3ZjQ1MTFkYjkzMjE5MDljMTU3YWVlOWE2 OGE1MmQ5YjY2MTljKQotLS0tCi0gYnVuZGxlcy97cGNyZSA9PiBwY3JlMn0vTWFrZWZpbGUgfCAx OCArKysrKysrKystLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA5 IGRlbGV0aW9ucygtKQotIHJlbmFtZSBidW5kbGVzL3twY3JlID0+IHBjcmUyfS9NYWtlZmlsZSAo NjAlKQotCi1kaWZmIC0tZ2l0IGEvYnVuZGxlcy9wY3JlL01ha2VmaWxlIGIvYnVuZGxlcy9wY3Jl Mi9NYWtlZmlsZQotc2ltaWxhcml0eSBpbmRleCA2MCUKLXJlbmFtZSBmcm9tIGJ1bmRsZXMvcGNy ZS9NYWtlZmlsZQotcmVuYW1lIHRvIGJ1bmRsZXMvcGNyZTIvTWFrZWZpbGUKLWluZGV4IDBkYjAw YjA4Ny4uZTFhZWQ5ODY1IDEwMDY0NAotLS0tIGEvYnVuZGxlcy9wY3JlL01ha2VmaWxlCi0rKysg Yi9idW5kbGVzL3BjcmUyL01ha2VmaWxlCi1AQCAtMSwxNCArMSwxNCBAQAotICMgVGhpcyBNYWtl ZmlsZSBzZXJ2ZXMgYXMgYSB3cmFwcGVyIHRvIGJ1bmRsZSB0aGUKLS0jIHBjcmUgbW9kdWxlIHdp dGhvdXQgbW9kaWZpY2F0aW9ucy4KLSsjIHBjcmUyIG1vZHVsZSB3aXRob3V0IG1vZGlmaWNhdGlv bnMuCi0gCi0tTU9EVUxFUz1wY3JlCi0tT0JKUz1wY3JlCi0tSU5URVJGQUNFUz1wY3JlCi0tQ19P QkpTPXBjcmUKLS1BUkNISVZFPXBjcmUKLS1MSUJSQVJZPXBjcmUKLS1DX0xJQlM9cGNyZQotLVNS Q19ESVI9cGNyZS1vY2FtbC9zcmMKLStNT0RVTEVTPXBjcmUyCi0rT0JKUz1wY3JlMgotK0lOVEVS RkFDRVM9cGNyZTIKLStDX09CSlM9cGNyZTIKLStBUkNISVZFPXBjcmUyCi0rTElCUkFSWT1wY3Jl MgotK0NfTElCUz1wY3JlMi04Ci0rU1JDX0RJUj1wY3JlMi1vY2FtbC9saWIKLSAKLSBPQ0FNTEZM QUdTKz0tSSAkKFNURENPTVBBVERJUikKLSAKLS0tIAotMi41Mi4wCi0KCmRpZmYgLS1naXQgYS8w MDA4LWNvbmZpZ3VyZS5hYy11c2UtcGNyZTItb2NhbWwtbGliLWZvbGRlci10by1yZWZsZWN0LW4u cGF0Y2ggYi8wMDA4LWNvbmZpZ3VyZS5hYy11c2UtcGNyZTItb2NhbWwtbGliLWZvbGRlci10by1y ZWZsZWN0LW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzY2YyYTAuLjAw MDAwMDAKLS0tIGEvMDAwOC1jb25maWd1cmUuYWMtdXNlLXBjcmUyLW9jYW1sLWxpYi1mb2xkZXIt dG8tcmVmbGVjdC1uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSBj ODI0MzkxNDBjMjI0MTlkN2VlYzMwYTk0Y2MyNDRlMjBkMWZlNDFlIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogVmljdG9yIEdhbWJpZXIgPHZpY3Rvci5nYW1iaWVyQGlucmlhLmZyPgot RGF0ZTogVHVlLCAyMCBKYW4gMjAyNiAxNTo0NDo0NyArMDEwMAotU3ViamVjdDogW1BBVENIIDgv OV0gY29uZmlndXJlLmFjOiB1c2UgcGNyZTItb2NhbWwvbGliIGZvbGRlciB0byByZWZsZWN0IG5l dwotIGJ1bmRsZSBzdHJ1Y3R1cmUKLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYjIzMWRl MGRiM2Y5NTEzZjZlYTkzNmNhZWE1NDI4ZmU2MjdhZjFiOSkKLS0tLQotIGNvbmZpZ3VyZS5hYyB8 IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0p Ci0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGNkOTAw NWE4Ny4uYWVhN2UzNWUwIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1 cmUuYWMKLUBAIC01OTQsOCArNTk0LDggQEAgQVNfSUYoW3Rlc3QgIiRNQUtFX3BjcmUyIl0sCi0g ICAgICBBQ19TVUJTVChbbm9hbGxvY10sIFtbW0BAbm9hbGxvY11dXSkKLSAgICAgIEFDX1NVQlNU KFt1bnRhZ2dlZF0sIFtbW0B1bnRhZ2dlZF1dXSldKQotICAgQUNfQ09ORklHX0ZJTEVTKFsKLS0g ICAgYnVuZGxlcy9wY3JlL3BjcmUtb2NhbWwvc3JjL3BjcmUubWwKLS0gICAgYnVuZGxlcy9wY3Jl L3BjcmUtb2NhbWwvc3JjL3BjcmVfc3R1YnMuYwotKyAgICBidW5kbGVzL3BjcmUyL3BjcmUyLW9j YW1sL2xpYi9wY3JlMi5tbAotKyAgICBidW5kbGVzL3BjcmUyL3BjcmUyLW9jYW1sL2xpYi9wY3Jl Ml9zdHVicy5jCi0gICBdKV0pCi0gCi0gZG5sCi0tLSAKLTIuNTIuMAotCgpkaWZmIC0tZ2l0IGEv MDAwOS1yZXBsYWNlLW9ic29sZXNjZW50LWVncmVwLXdpdGgtZ3JlcC1FLnBhdGNoIGIvMDAwOS1y ZXBsYWNlLW9ic29sZXNjZW50LWVncmVwLXdpdGgtZ3JlcC1FLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBmZGVjNGQxLi4wMDAwMDAwCi0tLSBhLzAwMDktcmVwbGFjZS1vYnNv bGVzY2VudC1lZ3JlcC13aXRoLWdyZXAtRS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICsw LDAgQEAKLUZyb20gMThmYzQyMWM5YWY2OWQwODVlNmUxYzk1ZTlkNWNmMzZhMmJhNzAxMSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9DaHJpc3RvcGg9MjBCPUMzPUI2 aG13YWxkZXI/PQotIDxjaHJpc3RvcGguYm9laG13YWxkZXJAbGluYml0LmNvbT4KLURhdGU6IE1v biwgMiBNYXIgMjAyNiAxNjo0NDoxMCArMDEwMAotU3ViamVjdDogW1BBVENIIDkvOV0gcmVwbGFj ZSBvYnNvbGVzY2VudCBlZ3JlcCB3aXRoIGdyZXAgLUUKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250 ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5j b2Rpbmc6IDhiaXQKLQotZWdyZXAgaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSBHTlUgZ3JlcCAz LjggKFNlcCAyMDIyKSBhbmQgcHJpbnRzIGEKLXdhcm5pbmcgdG8gc3RkZXJyIG9uIGV2ZXJ5IGlu dm9jYXRpb24uIFJlcGxhY2UgYWxsIG9jY3VycmVuY2VzIHdpdGgKLXRoZSBQT1NJWC1zdGFuZGFy ZCBncmVwIC1FLgotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggQsO2aG13YWxkZXIgPGNocmlz dG9waC5ib2VobXdhbGRlckBsaW5iaXQuY29tPgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQg MjMzYjVjZWIxZDVhNzAxZmIyNzBlYmRmMGE5YmQ2YmUwYTZjZTUzYikKLS0tLQotIGNvY2NpLm1s ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gZG9jcy9tYW51YWwvTWFrZWZpbGUg ICAgICAgICAgICAgICB8IDQgKystLQotIHBhcnNpbmdfY29jY2kvcGF0Y2hfZGlmZi5tbCAgICAg ICAgfCA0ICsrLS0KLSBzY3JpcHRzL3N0YXRfZGlyZWN0b3J5X2NvbXBsZXRlLnBsIHwgMiArLQot IDQgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZm IC0tZ2l0IGEvY29jY2kubWwgYi9jb2NjaS5tbAotaW5kZXggMTI0MTU2ODU2Li5lNzY5ZDVmZTQg MTAwNjQ0Ci0tLS0gYS9jb2NjaS5tbAotKysrIGIvY29jY2kubWwKLUBAIC01MzEsNyArNTMxLDcg QEAgbGV0IHdvcnRoX3RyeWluZzIgY2ZpbGVzICh0b2tlbnMsXyxxdWVyeSxfKSA9Ci0gCi0gICAg ICAgKSBpbgotICAgICAgIGxldCBjb20gPQotLQlQcmludGYuc3ByaW50ZiAiZWdyZXAgLXEgJygl cyknICVzIgotKwlQcmludGYuc3ByaW50ZiAiZ3JlcCAtRSAtcSAnKCVzKScgJXMiCi0gCSAgKFN0 cmluZy5jb25jYXQgInwiIHRva2VucykKLSAJICAoU3RyaW5nLmNvbmNhdCAiICIgKExpc3QubWFw IGZzdCBjZmlsZXMpKSBpbgotICAgICAgIChtYXRjaCBTeXMuY29tbWFuZCBjb20gd2l0aAotZGlm ZiAtLWdpdCBhL2RvY3MvbWFudWFsL01ha2VmaWxlIGIvZG9jcy9tYW51YWwvTWFrZWZpbGUKLWlu ZGV4IDdhMGUwMDFhOS4uYjBlZDU4MDE5IDEwMDY0NAotLS0tIGEvZG9jcy9tYW51YWwvTWFrZWZp bGUKLSsrKyBiL2RvY3MvbWFudWFsL01ha2VmaWxlCi1AQCAtNjMsOCArNjMsOCBAQCBkaXN0Y2xl YW46OiBjbGVhbgotICMKLSAjJS5wZGY6CSUudGV4Ci0gIwkgICAgJChQREZMQVRFWCkgJDwKLS0j CSAgICBpZiBlZ3JlcCAtcyAnJChSRVJVTiknICQqLmxvZyA7dGhlbiAkKFBERkxBVEVYKSAkPDsg ZmkKLS0jCSAgICBpZiBlZ3JlcCAtcyAnJChSRVJVTiknICQqLmxvZyA7dGhlbiAkKFBERkxBVEVY KSAkPDsgZmkKLSsjCSAgICBpZiBncmVwIC1FIC1zICckKFJFUlVOKScgJCoubG9nIDt0aGVuICQo UERGTEFURVgpICQ8OyBmaQotKyMJICAgIGlmIGdyZXAgLUUgLXMgJyQoUkVSVU4pJyAkKi5sb2cg O3RoZW4gJChQREZMQVRFWCkgJDw7IGZpCi0gCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIyBI dG1sIHZlcnNpb24KLWRpZmYgLS1naXQgYS9wYXJzaW5nX2NvY2NpL3BhdGNoX2RpZmYubWwgYi9w YXJzaW5nX2NvY2NpL3BhdGNoX2RpZmYubWwKLWluZGV4IGQ4NGYzYWQ3Yy4uODhiZDQwNzdjIDEw MDc1NQotLS0tIGEvcGFyc2luZ19jb2NjaS9wYXRjaF9kaWZmLm1sCi0rKysgYi9wYXJzaW5nX2Nv Y2NpL3BhdGNoX2RpZmYubWwKLUBAIC04Miw3ICs4Miw3IEBAIGxldCByZWMgbWxpbmVzIGxpbmVz ID0KLSBsZXQgZmluYWxfaW5mbyBkaXIgPQotICAgbGV0IGdpdF9yb290ID0gZ2V0X3Jvb3QgZGly IGluCi0gICBsZXQgZ2l0X3JlYWRfY29tbWFuZCA9Ci0tICAgICJjZCAiIF4gZ2l0X3Jvb3QgXiAi ICYmIGdpdCBkaWZmICIgXiBkaXIgXiAiIHwgZWdyZXAgJ14rKyt8XkAnIiBpbgotKyAgICAiY2Qg IiBeIGdpdF9yb290IF4gIiAmJiBnaXQgZGlmZiAiIF4gZGlyIF4gIiB8IGdyZXAgLUUgJ14rKyt8 XkAnIiBpbgotICAgbGV0IGxpc3RfZGlmZiA9Ci0gICAgIHJlb3JnIGRpciBnaXRfcm9vdCAobWxp bmVzIChDb21tb24uY21kX3RvX2xpc3QgZ2l0X3JlYWRfY29tbWFuZCkpIGluCi0gICBsaXN0X2Rp ZmYKLUBAIC0xMDMsNyArMTAzLDcgQEAgbGV0IGZpbmFsX3BhdGNoX2luZm8gZGlyIHN0YXJ0aWQg ZW5kaWQgPQotICAgICAgIGlmIHJlY2VudAotICAgICAgIHRoZW4gIi0tbWVyZ2UtYmFzZSIKLSAg ICAgICBlbHNlICIiIGluCi0tICAgIFByaW50Zi5zcHJpbnRmICIgY2QgJXMgJiYgZ2l0IGRpZmYg JXMgJXMgJXMgfCBlZ3JlcCAnXisrK3xeQCciCi0rICAgIFByaW50Zi5zcHJpbnRmICIgY2QgJXMg JiYgZ2l0IGRpZmYgJXMgJXMgJXMgfCBncmVwIC1FICdeKysrfF5AJyIKLSAgICAgICBnaXRfcm9v dCBleHRyYSBzdGFydGlkIGVuZGlkIGluCi0gICBsZXQgbGlzdF9kaWZmID0KLSAgICAgcmVvcmcg ZGlyIGdpdF9yb290IChtbGluZXMgKENvbW1vbi5jbWRfdG9fbGlzdCBnaXRfcmVhZF9jb21tYW5k KSkgaW4KLWRpZmYgLS1naXQgYS9zY3JpcHRzL3N0YXRfZGlyZWN0b3J5X2NvbXBsZXRlLnBsIGIv c2NyaXB0cy9zdGF0X2RpcmVjdG9yeV9jb21wbGV0ZS5wbAotaW5kZXggZjc4OTRkNzBhLi45Y2Fm NWE2MDEgMTAwNzU1Ci0tLS0gYS9zY3JpcHRzL3N0YXRfZGlyZWN0b3J5X2NvbXBsZXRlLnBsCi0r KysgYi9zY3JpcHRzL3N0YXRfZGlyZWN0b3J5X2NvbXBsZXRlLnBsCi1AQCAtMTY0LDcgKzE2NCw3 IEBAIGlmKC1lICJnaXRpbmZvIikgewotICAgbXkgJG5vZGF0ZXlldCA9IDE7Ci0gCi0gICB3aGls ZSg8VE1QPikgewotLSAgICAjY2FuIGFsc28gZG86IGVncmVwICJeQXV0aG9yIiBnaXRpbmZvIHwg c29ydCB8IHVuaXEgfCB3YyAtbAotKyAgICAjY2FuIGFsc28gZG86IGdyZXAgLUUgIl5BdXRob3Ii IGdpdGluZm8gfCBzb3J0IHwgdW5pcSB8IHdjIC1sCi0gICAgIGlmICgvXkF1dGhvcjogKC4qKS8p IHsKLSAgICAgICAkaC0+eyQxfSsrOwotICAgICB9Ci0tLSAKLTIuNTIuMAotCgpkaWZmIC0tZ2l0 IGEvY29jY2luZWxsZS5zcGVjIGIvY29jY2luZWxsZS5zcGVjCmluZGV4IDkzZWI2NmYuLmRjOGMx YmQgMTAwNjQ0Ci0tLSBhL2NvY2NpbmVsbGUuc3BlYworKysgYi9jb2NjaW5lbGxlLnNwZWMKQEAg LTMsMTAgKzMsMTAgQEAgRXhjbHVkZUFyY2g6ICV7aXg4Nn0KIAogI2dsb2JhbCBmb3JnZXVybCBo dHRwczovL2dpdGh1Yi5jb20vY29jY2luZWxsZS9jb2NjaW5lbGxlCiAlZ2xvYmFsIGZvcmdldXJs IGh0dHBzOi8vZ2l0bGFiLmlucmlhLmZyL2NvY2NpbmVsbGUvY29jY2luZWxsZQotJWdsb2JhbCB0 YWcgMS4zLjEKKyVnbG9iYWwgdGFnIDEuMy4zCiAjZ2xvYmFsIGNvbW1pdCAwOWI0NzViYjNkZDJi MjljNmJkOTA0Y2M0NTVkNGMyNWM2NjQxNjQ5CiAjZ2xvYmFsIGRhdGUgICAyMDI1MTExOAotVmVy c2lvbjogICAgICAgMS4zLjEKK1ZlcnNpb246ICAgICAgIDEuMy4zCiAlZm9yZ2VtZXRhCiAKICMg QnVpbGQgdGhlIGRvY3VtZW50YXRpb24gb24gRmVkb3JhIG9ubHkuCkBAIC0yMyw3ICsyMyw3IEBA IFZlcnNpb246ICAgICAgIDEuMy4xCiAlZW5kaWYKIAogTmFtZTogICAgICAgICAgIGNvY2NpbmVs bGUKLVJlbGVhc2U6ICAgICAgICAxMCV7P2Rpc3R9CitSZWxlYXNlOiAgICAgICAgMSV7P2Rpc3R9 CiBTdW1tYXJ5OiAgICAgICAgU2VtYW50aWMgcGF0Y2hpbmcgZm9yIExpbnV4IChzcGF0Y2gpCiAK IExpY2Vuc2U6ICAgICAgICBHUEwtMi4wLW9ubHkKQEAgLTM1LDE5ICszNSw2IEBAIFNvdXJjZTA6 ICAgICAgICAle2Zvcmdlc291cmNlfQogU291cmNlMTogICAgICAgIHRlc3QuYwogU291cmNlMjog ICAgICAgIHRlc3RweS5jb2NjaQogCi0jIFJXTUo6IEkgYmFja3BvcnRlZCBzb21lIHBhdGNoZXMg Zm9yIG9jYW1sLXBjcmUyIHN1cHBvcnQgZnJvbSB1cHN0cmVhbS4KLSMgVGhleSBjYW4gYmUgZm91 bmQgaGVyZToKLSMgaHR0cHM6Ly9naXRodWIuY29tL3J3bWpvbmVzL2NvY2NpbmVsbGUvdHJlZS9m ZWRvcmEtMS4zLjEKLVBhdGNoOiAgICAgICAgICAwMDAxLXJlcGxhY2UtcGNyZS13aXRoLXBjcmUy LnBhdGNoCi1QYXRjaDogICAgICAgICAgMDAwMi11c2UtcGNyZTItaW5zdGVhZC1vZi1wY3JlLWlu LXNvbWUtbW9yZS1wbGFjZXMucGF0Y2gKLVBhdGNoOiAgICAgICAgICAwMDAzLXJlcGxhY2UtcGNy ZS13aXRoLXBjcmUyLWluLWluc3RhbGwudHh0LWluc3RydWN0aW9ucy5wYXRjaAotUGF0Y2g6ICAg ICAgICAgIDAwMDQtcmVwbGFjZS1wY3JlLWJ1bmRsZS13aXRoLXBjcmUyLWJ1bmRsZS5wYXRjaAot UGF0Y2g6ICAgICAgICAgIDAwMDUtcmVuYW1lLXNvbWUtYnVuZGxlZC1wY3JlMi1maWxlcy10by1i ZS1pbnB1dC1maWxlcy5wYXRjaAotUGF0Y2g6ICAgICAgICAgIDAwMDYtYWRkLS5naXRpZ25vcmUt aW4tcGNyZTItYnVuZGxlLXRvLWV4Y2x1ZGUtZ2VuZXJhdGVkLS5wYXRjaAotUGF0Y2g6ICAgICAg ICAgIDAwMDctcmVuYW1lLXVwZGF0ZS1wY3JlLWJ1bmRsZS1NYWtlZmlsZS10by1yZWZsZWN0LWJ1 bmRsZS5wYXRjaAotUGF0Y2g6ICAgICAgICAgIDAwMDgtY29uZmlndXJlLmFjLXVzZS1wY3JlMi1v Y2FtbC1saWItZm9sZGVyLXRvLXJlZmxlY3Qtbi5wYXRjaAotUGF0Y2g6ICAgICAgICAgIDAwMDkt cmVwbGFjZS1vYnNvbGVzY2VudC1lZ3JlcC13aXRoLWdyZXAtRS5wYXRjaAotCiBCdWlsZFJlcXVp cmVzOiAgYXV0b2NvbmYKIEJ1aWxkUmVxdWlyZXM6ICBhdXRvbWFrZQogQnVpbGRSZXF1aXJlczog IHB5dGhvbjMtZGV2ZWwKQEAgLTMwMCw2ICsyODcsMTAgQEAgJHNwYXRjaCAtLXNwLWZpbGUgJXtT T1VSQ0UyfSAle1NPVVJDRTF9CiAKIAogJWNoYW5nZWxvZworKiBGcmkgU2VwIDA0IDIwMjYgUmlj aGFyZCBXLk0uIEpvbmVzIDxyam9uZXNAcmVkaGF0LmNvbT4gLSAxLjMuMy0xCistIE5ldyB2ZXJz aW9uIDEuMy4zIChSSEJaIzI1MTk0OTIpCistIERyb3Agb2NhbWwtcGNyZTIsIGVncmVwIHBhdGNo ZXMgd2hpY2ggYXJlIG5vdyB1cHN0cmVhbS4KKwogKiBXZWQgSnVsIDIyIDIwMjYgUHl0aG9uIE1h aW50IDxweXRob24tbWFpbnRAcmVkaGF0LmNvbT4gLSAxLjMuMS0xMAogLSBSZWJ1aWx0IGZvciBQ eXRob24gMy4xNS4wYjQgQUJJIGNoYW5nZQogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJj ZXMKaW5kZXggOWZhYzVjOS4uN2RhZWViOSAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3Vy Y2VzCkBAIC0xICsxIEBACi1TSEE1MTIgKGNvY2NpbmVsbGUtMS4zLjEudGFyLmJ6MikgPSA5MjRh ZWE0M2I0ZTkyN2I2YTFkMDc3NWUwNjRiNjk3YWJlZWI0ZGUwZGQxZGVjODg4NWNjZGYxNDk0ZDY1 MzM2ODAyYTc4ZDI4MWY4ZTkxNzlkYjYyNWE4ODU3ZDEwZTY1ODVhMjg1NzBlNmY1NjMyNzNjMmYz MTczNjA4MzcxNQorU0hBNTEyIChjb2NjaW5lbGxlLTEuMy4zLnRhci5iejIpID0gNGViZDQ2ZmFm MTVkOGQ5ZmZmZDk0NzVmNWQ2NzVkZWVhYjEzYTg4NGI2MjEwYTBjOGJlMDM0NTc4NDNkZWVjNjVk YzdjMzNhMmQ5YTI5YjNkZDk5ZTQ0NTQ0ODhhN2FiZGJlNDJhMzBlM2FiM2UxZDUxZTEzOTBkOWU1 NzhjNDIK