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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Bundle readline-6.2 with a workaround of skipped "ask" (BZ 701131). Date: Thu, 23 Jul 2026 18:29:57 GMT Message-ID: <178483139745.1.8866901028238626840.rpms-gdb-7180591ac5d1@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 7180591ac5d19b95b0a424feb56d7fd41c231966 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogNzE4MDU5MWFjNWQxOWI5NWIwYTQyNGZlYjU2ZDdmZDQxYzIzMTk2Ngog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMS0wNS0wMlQxNjoxNzo1MCswMjowMAogICAg ICAgICAgICBTdGF0cyAgOiArMjEzMTAvLTQ0NyBpbiA2IGZpbGUocykKICAgICAgICAgICAgVVJM ICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nZGIvYy83MTgwNTkxYWM1 ZDE5Yjk1YjBhNDI0ZmViNTZkN2ZkNDFjMjMxOTY2P2JyYW5jaD1maXgtZHVwLXBhdGNoCgogICAg ICAgICAgICBMb2c6CiAgICAgICAgICAgIEJ1bmRsZSByZWFkbGluZS02LjIgd2l0aCBhIHdvcmth cm91bmQgb2Ygc2tpcHBlZCAiYXNrIiAoQlogNzAxMTMxKS4KVXNlIC0td2l0aG91dC1zeXN0ZW0t cmVhZGxpbmUsIGRpc2FibGUgUmVxdWlyZXMgYW5kIEJ1aWxkUmVxdWlyZXMgb2YgcmVhZGxpbmUu CkRyb3AgZ2RiLTYuNS1yZWFkbGluZS1sb25nLWxpbmUtY3Jhc2gucGF0Y2ggYW5kIGdkYi1yZWFk bGluZS02LjAtc2lnbmFsLnBhdGNoLgoKLS0tCmRpZmYgLS1naXQgYS9nZGItNi41LXJlYWRsaW5l LWxvbmctbGluZS1jcmFzaC5wYXRjaCBiL2dkYi02LjUtcmVhZGxpbmUtbG9uZy1saW5lLWNyYXNo LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzc2MTc5Li4wMDAwMDAwCi0t LSBhL2dkYi02LjUtcmVhZGxpbmUtbG9uZy1saW5lLWNyYXNoLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMTY1ICswLDAgQEAKLUZpeCBWYWxncmluZCBwYXN0ZSBvZiA+PSAyNTYgKiAoc2NyZWVu IHdpZHRoKSBjaGFyYWN0ZXJzIChhcyAxMzAwMDEpLgotCi1JbnZhbGlkIHdyaXRlIG9mIHNpemUg NAotICAgYXQgMHg4MjAzQkQ5OiBybF9yZWRpc3BsYXkgKGRpc3BsYXkuYzo4MTIpCi0gICBieSAw eDgxRjUxMzA6IF9ybF9pbnRlcm5hbF9jaGFyX2NsZWFudXAgKHJlYWRsaW5lLmM6NDI3KQotICAg YnkgMHg4MUY1MkIzOiByZWFkbGluZV9pbnRlcm5hbF9jaGFyIChyZWFkbGluZS5jOjUwOCkKLSAg IGJ5IDB4ODIwOTgxNzogcmxfY2FsbGJhY2tfcmVhZF9jaGFyIChjYWxsYmFjay5jOjE4NCkKLSAg IGJ5IDB4ODEzNTMxMjogcmxfY2FsbGJhY2tfcmVhZF9jaGFyX3dyYXBwZXIgKGV2ZW50LXRvcC5j OjE3OSkKLSAgIGJ5IDB4ODEzNUI3Qjogc3RkaW5fZXZlbnRfaGFuZGxlciAoZXZlbnQtdG9wLmM6 NDMyKQotICAgYnkgMHg4MTM0OUYyOiBoYW5kbGVfZmlsZV9ldmVudCAoZXZlbnQtbG9vcC5jOjcz MCkKLSAgIGJ5IDB4ODEzNDJBQjogcHJvY2Vzc19ldmVudCAoZXZlbnQtbG9vcC5jOjM0MykKLSAg IGJ5IDB4ODEzNDJGNDogZ2RiX2RvX29uZV9ldmVudCAoZXZlbnQtbG9vcC5jOjM4MCkKLSAgIGJ5 IDB4ODEzMTNBQzogY2F0Y2hfZXJyb3JzIChleGNlcHRpb25zLmM6NTE1KQotICAgYnkgMHg4MENF OENBOiB0dWlfY29tbWFuZF9sb29wICh0dWktaW50ZXJwLmM6MTUxKQotICAgYnkgMHg4MTMxOEI5 OiBjdXJyZW50X2ludGVycF9jb21tYW5kX2xvb3AgKGludGVycHMuYzoyNzgpCi0gQWRkcmVzcyAw eDQzRENFQjggaXMgMCBieXRlcyBhZnRlciBhIGJsb2NrIG9mIHNpemUgMSwwMjQgYWxsb2MnZAot ICAgYXQgMHg0MDA1NDAwOiBtYWxsb2MgKHZnX3JlcGxhY2VfbWFsbG9jLmM6MTQ5KQotICAgYnkg MHg4MDg3MDg0OiB4bWFsbG9jICh1dGlscy5jOjk1OSkKLSAgIGJ5IDB4ODIwMkNBNzogaW5pdF9s aW5lX3N0cnVjdHVyZXMgKGRpc3BsYXkuYzo0NDApCi0gICBieSAweDgyMDJEMTQ6IHJsX3JlZGlz cGxheSAoZGlzcGxheS5jOjQ3MSkKLSAgIGJ5IDB4ODFGNEY1MzogcmVhZGxpbmVfaW50ZXJuYWxf c2V0dXAgKHJlYWRsaW5lLmM6MzYzKQotICAgYnkgMHg4MjA5NThDOiBfcmxfY2FsbGJhY2tfbmV3 bGluZSAoY2FsbGJhY2suYzo4OSkKLSAgIGJ5IDB4ODIwOTVCQjogcmxfY2FsbGJhY2tfaGFuZGxl cl9pbnN0YWxsIChjYWxsYmFjay5jOjEwMSkKLSAgIGJ5IDB4ODBDRTg5NjogdHVpX2NvbW1hbmRf bG9vcCAodHVpLWludGVycC5jOjEzOCkKLSAgIGJ5IDB4ODEzMThCOTogY3VycmVudF9pbnRlcnBf Y29tbWFuZF9sb29wIChpbnRlcnBzLmM6Mjc4KQotICAgYnkgMHg4MDdFNjlBOiBjYXB0dXJlZF9j b21tYW5kX2xvb3AgKG1haW4uYzoxMDEpCi0gICBieSAweDgxMzEzQUM6IGNhdGNoX2Vycm9ycyAo ZXhjZXB0aW9ucy5jOjUxNSkKLSAgIGJ5IDB4ODA3RjU1QTogY2FwdHVyZWRfbWFpbiAobWFpbi5j OjgyNikKLQotCi0yMDA2LTExLTA4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0KLQkqIHJlYWRsaW5lL2Rpc3BsYXkuYyAobGluZV9zdGF0ZSwgbGluZV9zdGF0 ZV9hcnJheSwgbGluZV9zdGF0ZV92aXNpYmxlLAotCWxpbmVfc3RhdGVfaW52aXNpYmxlKTogRW5j YXBzdWxhdGUgX3JsX3dyYXBwZWRfbGluZSwgaW52X2xicmVha3MsCi0JaW52X2xic2l6ZSwgdmlz X2xicmVha3MsIHZpc19sYnNpemUsIHZpc2libGVfbGluZSwgaW52aXNpYmxlX2xpbmUuCi0JKGlu aXRfbGluZV9zdHJ1Y3R1cmVzKTogSW5pdGlhbGl6ZSBib3RoIF9ybF93cmFwcGVkX2xpbmUgb25l cyBub3cuCi0JKHJsX3JlZGlzcGxheSk6IEZpeCBfcmxfd3JhcHBlZF9saW5lIGhhbmRsaW5nIGJ5 IHVzaW5nIGl0cyBvd24gc2l6ZS4KLQlTd2FwIHdob2xlIGBsaW5lX3N0YXRlX3Zpc2libGUnIC8g YGxpbmVfc3RhdGVfaW52aXNpYmxlJyBzdHJ1Y3R1cmVzLgotCSh1cGRhdGVfbGluZSk6IFVwZGF0 ZSBmb3IgbmV3IGBfcmxfd3JhcHBlZF9saW5lJy4KLQotCi1JbmRleDogLi9yZWFkbGluZS9kaXNw bGF5LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSAuL3JlYWRsaW5lL2Rpc3BsYXkuYwk1IE1heSAyMDA2IDE4 OjI2OjEyIC0wMDAwCTEuMTEKLSsrKyAuL3JlYWRsaW5lL2Rpc3BsYXkuYwk4IE5vdiAyMDA2IDE4 OjIzOjMzIC0wMDAwCi1AQCAtNzMsMTUgKzczLDMxIEBAIHN0YXRpYyB2b2lkIGRlbGV0ZV9jaGFy cyBQQVJBTVMoKGludCkpOwotIHN0YXRpYyB2b2lkIGluc2VydF9zb21lX2NoYXJzIFBBUkFNUygo Y2hhciAqLCBpbnQsIGludCkpOwotIHN0YXRpYyB2b2lkIGNyIFBBUkFNUygodm9pZCkpOwotIAot K3N0cnVjdCBsaW5lX3N0YXRlCi0rICB7Ci0rICAgIGNoYXIgKmxpbmU7Ci0rICAgIGludCAqbGJy ZWFrczsKLSsgICAgaW50IGxicmVha3Nfc2l6ZTsKLSsjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJ QllURSkKLSsgICAgaW50ICp3cmFwcGVkX2xpbmU7Ci0rICAgIGludCB3cmFwcGVkX2xpbmVfc2l6 ZTsKLSsjZW5kaWYKLSsgIH07Ci0rc3RhdGljIHN0cnVjdCBsaW5lX3N0YXRlIGxpbmVfc3RhdGVf YXJyYXlbMl07Ci0rc3RhdGljIHN0cnVjdCBsaW5lX3N0YXRlICpsaW5lX3N0YXRlX3Zpc2libGUg PSAmbGluZV9zdGF0ZV9hcnJheVswXTsKLStzdGF0aWMgc3RydWN0IGxpbmVfc3RhdGUgKmxpbmVf c3RhdGVfaW52aXNpYmxlID0gJmxpbmVfc3RhdGVfYXJyYXlbMV07Ci0rCi0gI2lmIGRlZmluZWQg KEhBTkRMRV9NVUxUSUJZVEUpCi0gc3RhdGljIGludCBfcmxfY29sX3dpZHRoIFBBUkFNUygoY29u c3QgY2hhciAqLCBpbnQsIGludCkpOwotLXN0YXRpYyBpbnQgKl9ybF93cmFwcGVkX2xpbmU7Ci0g I2Vsc2UKLSAjICBkZWZpbmUgX3JsX2NvbF93aWR0aChsLCBzLCBlKQkoKChlKSA8PSAocykpID8g MCA6IChlKSAtIChzKSkKLSAjZW5kaWYKLSAKLS1zdGF0aWMgaW50ICppbnZfbGJyZWFrcywgKnZp c19sYnJlYWtzOwotLXN0YXRpYyBpbnQgaW52X2xic2l6ZSwgdmlzX2xic2l6ZTsKLSsvKiBGSVhN RTogQmFja3dhcmQgY29tcGF0aWJsZSBuYW1pbmcuICovCi0rI2RlZmluZSBpbnZfbGJyZWFrcyAo bGluZV9zdGF0ZV9pbnZpc2libGUtPmxicmVha3MpCi0rI2RlZmluZSBpbnZfbGJzaXplIChsaW5l X3N0YXRlX2ludmlzaWJsZS0+bGJyZWFrc19zaXplKQotKyNkZWZpbmUgdmlzX2xicmVha3MgKGxp bmVfc3RhdGVfdmlzaWJsZS0+bGJyZWFrcykKLSsjZGVmaW5lIHZpc19sYnNpemUgKGxpbmVfc3Rh dGVfdmlzaWJsZS0+bGJyZWFrc19zaXplKQotIAotIC8qIEhldXJpc3RpYyB1c2VkIHRvIGRlY2lk ZSB3aGV0aGVyIGl0IGlzIGZhc3RlciB0byBtb3ZlIGZyb20gQ1VSIHRvIE5FVwotICAgIGJ5IGJh Y2tpbmcgdXAgb3Igb3V0cHV0dGluZyBhIGNhcnJpYWdlIHJldHVybiBhbmQgbW92aW5nIGZvcndh cmQuICovCi1AQCAtMTUwLDggKzE2Niw5IEBAIHN0YXRpYyBpbnQgbGFzdF9sbWFyZ2luOwotIAot IC8qIFRoZSBsaW5lIGRpc3BsYXkgYnVmZmVycy4gIE9uZSBpcyB0aGUgbGluZSBjdXJyZW50bHkg ZGlzcGxheWVkIG9uCi0gICAgdGhlIHNjcmVlbi4gIFRoZSBvdGhlciBpcyB0aGUgbGluZSBhYm91 dCB0byBiZSBkaXNwbGF5ZWQuICovCi0tc3RhdGljIGNoYXIgKnZpc2libGVfbGluZSA9IChjaGFy ICopTlVMTDsKLS1zdGF0aWMgY2hhciAqaW52aXNpYmxlX2xpbmUgPSAoY2hhciAqKU5VTEw7Ci0r LyogRklYTUU6IEJhY2t3YXJkIGNvbXBhdGlibGUgbmFtaW5nLiAqLwotKyNkZWZpbmUgdmlzaWJs ZV9saW5lIChsaW5lX3N0YXRlX3Zpc2libGUtPmxpbmUpCi0rI2RlZmluZSBpbnZpc2libGVfbGlu ZSAobGluZV9zdGF0ZV9pbnZpc2libGUtPmxpbmUpCi0gCi0gLyogQSBidWZmZXIgZm9yIGBtb2Rl bGluZScgbWVzc2FnZXMuICovCi0gc3RhdGljIGNoYXIgbXNnX2J1ZlsxMjhdOwotQEAgLTQzNyw3 ICs0NTQsMTAgQEAgaW5pdF9saW5lX3N0cnVjdHVyZXMgKG1pbnNpemUpCi0gICAgICAgaW52X2xi cmVha3MgPSAoaW50ICopeG1hbGxvYyAoaW52X2xic2l6ZSAqIHNpemVvZiAoaW50KSk7Ci0gICAg ICAgdmlzX2xicmVha3MgPSAoaW50ICopeG1hbGxvYyAodmlzX2xic2l6ZSAqIHNpemVvZiAoaW50 KSk7Ci0gI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCi0tICAgICAgX3JsX3dyYXBwZWRf bGluZSA9IChpbnQgKil4bWFsbG9jICh2aXNfbGJzaXplICogc2l6ZW9mIChpbnQpKTsKLSsgICAg ICBsaW5lX3N0YXRlX3Zpc2libGUtPndyYXBwZWRfbGluZV9zaXplID0gdmlzX2xic2l6ZTsKLSsg ICAgICBsaW5lX3N0YXRlX3Zpc2libGUtPndyYXBwZWRfbGluZSA9IChpbnQgKil4bWFsbG9jIChs aW5lX3N0YXRlX3Zpc2libGUtPndyYXBwZWRfbGluZV9zaXplICogc2l6ZW9mIChpbnQpKTsKLSsg ICAgICBsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lX3NpemUgPSBpbnZfbGJzaXpl OwotKyAgICAgIGxpbmVfc3RhdGVfaW52aXNpYmxlLT53cmFwcGVkX2xpbmUgPSAoaW50ICopeG1h bGxvYyAobGluZV9zdGF0ZV9pbnZpc2libGUtPndyYXBwZWRfbGluZV9zaXplICogc2l6ZW9mIChp bnQpKTsKLSAjZW5kaWYKLSAgICAgICBpbnZfbGJyZWFrc1swXSA9IHZpc19sYnJlYWtzWzBdID0g MDsKLSAgICAgfQotQEAgLTU3MiwxMCArNTkyLDE1IEBAIHJsX3JlZGlzcGxheSAoKQotIAkgICAg ICB7IFwKLSAJCWludl9sYnNpemUgKj0gMjsgXAotIAkJaW52X2xicmVha3MgPSAoaW50ICopeHJl YWxsb2MgKGludl9sYnJlYWtzLCBpbnZfbGJzaXplICogc2l6ZW9mIChpbnQpKTsgXAotLQkJX3Js X3dyYXBwZWRfbGluZSA9IChpbnQgKil4cmVhbGxvYyAoX3JsX3dyYXBwZWRfbGluZSwgaW52X2xi c2l6ZSAqIHNpemVvZiAoaW50KSk7IFwKLSAJICAgICAgfSBcCi0gCSAgICBpbnZfbGJyZWFrc1sr K25ld2xpbmVzXSA9IG91dDsgXAotLQkgICAgX3JsX3dyYXBwZWRfbGluZVtuZXdsaW5lc10gPSBf cmxfd3JhcHBlZF9tdWx0aWNvbHVtbjsgXAotKwkgICAgaWYgKG5ld2xpbmVzID49IChsaW5lX3N0 YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lX3NpemUgLSAxKSkgXAotKwkgICAgICB7IFwKLSsJ CWxpbmVfc3RhdGVfaW52aXNpYmxlLT53cmFwcGVkX2xpbmVfc2l6ZSAqPSAyOyBcCi0rCQlsaW5l X3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lID0gKGludCAqKXhyZWFsbG9jIChsaW5lX3N0 YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lLCBcCi0rCQkgIGxpbmVfc3RhdGVfaW52aXNpYmxl LT53cmFwcGVkX2xpbmVfc2l6ZSAqIHNpemVvZiAoaW50KSk7IFwKLSsJICAgICAgfSBcCi0rCSAg ICBsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lW25ld2xpbmVzXSA9IF9ybF93cmFw cGVkX211bHRpY29sdW1uOyBcCi0gCSAgICBscG9zID0gMDsgXAotIAkgIH0gXAotICAgICAgIH0g d2hpbGUgKDApCi1AQCAtNjA1LDcgKzYzMCw3IEBAIHJsX3JlZGlzcGxheSAoKQotICNlbmRpZgot IAotICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQotLSAgbWVtc2V0IChfcmxfd3JhcHBl ZF9saW5lLCAwLCB2aXNfbGJzaXplKTsKLSsgIG1lbXNldCAobGluZV9zdGF0ZV9pbnZpc2libGUt PndyYXBwZWRfbGluZSwgMCwgbGluZV9zdGF0ZV9pbnZpc2libGUtPndyYXBwZWRfbGluZV9zaXpl ICogc2l6ZW9mIChpbnQpKTsKLSAgIG51bSA9IDA7Ci0gI2VuZGlmCi0gCi1AQCAtMTExOCwxNyAr MTE0MywxMCBAQCBybF9yZWRpc3BsYXkgKCkKLSAKLSAgIC8qIFN3YXAgdmlzaWJsZSBhbmQgbm9u LXZpc2libGUgbGluZXMuICovCi0gICB7Ci0tICAgIGNoYXIgKnZ0ZW1wID0gdmlzaWJsZV9saW5l OwotLSAgICBpbnQgKml0ZW1wID0gdmlzX2xicmVha3MsIG50ZW1wID0gdmlzX2xic2l6ZTsKLS0K LS0gICAgdmlzaWJsZV9saW5lID0gaW52aXNpYmxlX2xpbmU7Ci0tICAgIGludmlzaWJsZV9saW5l ID0gdnRlbXA7Ci0tCi0tICAgIHZpc19sYnJlYWtzID0gaW52X2xicmVha3M7Ci0tICAgIGludl9s YnJlYWtzID0gaXRlbXA7Ci0tCi0tICAgIHZpc19sYnNpemUgPSBpbnZfbGJzaXplOwotLSAgICBp bnZfbGJzaXplID0gbnRlbXA7Ci0rICAgIHN0cnVjdCBsaW5lX3N0YXRlICpsaW5lX3N0YXRlX3Rl bXAgPSBsaW5lX3N0YXRlX3Zpc2libGU7Ci0rICAgIAotKyAgICBsaW5lX3N0YXRlX3Zpc2libGUg PSBsaW5lX3N0YXRlX2ludmlzaWJsZTsKLSsgICAgbGluZV9zdGF0ZV9pbnZpc2libGUgPSBsaW5l X3N0YXRlX3RlbXA7Ci0gCi0gICAgIHJsX2Rpc3BsYXlfZml4ZWQgPSAwOwotICAgICAvKiBJZiB3 ZSBhcmUgZGlzcGxheWluZyBvbiBhIHNpbmdsZSBsaW5lLCBhbmQgbGFzdF9sbWFyZ2luIGlzID4g MCwgd2UKLUBAIC0xMTk0LDggKzEyMTIsOSBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJl bnRfbGluZSwgb21hCi0gCSAgLyogVGhpcyBmaXhlcyBvbmx5IGRvdWJsZS1jb2x1bW4gY2hhcmFj dGVycywgYnV0IGlmIHRoZSB3cmFwcGVkCi0gCSAgICAgY2hhcmFjdGVyIGNvbXN1bWVzIG1vcmUg dGhhbiB0aHJlZSBjb2x1bW5zLCBzcGFjZXMgd2lsbCBiZQotIAkgICAgIGluc2VydGVkIGluIHRo ZSBzdHJpbmcgYnVmZmVyLiAqLwotLQkgIGlmIChfcmxfd3JhcHBlZF9saW5lW2N1cnJlbnRfbGlu ZV0gPiAwKQotLQkgICAgX3JsX2NsZWFyX3RvX2VvbCAoX3JsX3dyYXBwZWRfbGluZVtjdXJyZW50 X2xpbmVdKTsKLSsJICBpZiAoY3VycmVudF9saW5lIDwgbGluZV9zdGF0ZV92aXNpYmxlLT53cmFw cGVkX2xpbmVfc2l6ZQotKwkgICAgICAmJiBsaW5lX3N0YXRlX3Zpc2libGUtPndyYXBwZWRfbGlu ZVtjdXJyZW50X2xpbmVdID4gMCkKLSsJICAgIF9ybF9jbGVhcl90b19lb2wgKGxpbmVfc3RhdGVf dmlzaWJsZS0+d3JhcHBlZF9saW5lW2N1cnJlbnRfbGluZV0pOwotIAotIAkgIG1lbXNldCAoJnBz LCAwLCBzaXplb2YgKG1ic3RhdGVfdCkpOwotIAkgIHJldCA9IG1icnRvd2MgKCZ3YywgbmV3LCBN Ql9DVVJfTUFYLCAmcHMpOwoKZGlmZiAtLWdpdCBhL2dkYi1iejcwMTEzMS1yZWFkbGluZTYyLTFv ZjMucGF0Y2ggYi9nZGItYno3MDExMzEtcmVhZGxpbmU2Mi0xb2YzLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5M2ViZTMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIt Yno3MDExMzEtcmVhZGxpbmU2Mi0xb2YzLnBhdGNoCkBAIC0wLDAgKzEsMjA5NDQgQEAKK2FyY2hl ci1qYW5rcmF0b2NodmlsLXJlYWRsaW5lNjIKK2IxMzcwNmFiYmVlOTY0NmY0ZGU1MjJjMDU1MmRk ZDY4ZDFhNGY0M2EKKworLS0tIGEvZ2RiL2NvbmZpZy5pbgorKysrIGIvZ2RiL2NvbmZpZy5pbgor QEAgLTk0Nyw5ICs5NDcsNiBAQAorIC8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+ IGRvZXMgbm90IGRlZmluZS4gKi8KKyAjdW5kZWYgcGlkX3QKKyAKKy0vKiByZWFkbGluZS02LjAg c3RhcnRlZCB0byB1c2UgZGlmZmVyZW50IG5hbWUuICovCistI3VuZGVmIHJlYWRsaW5lX2VjaG9p bmdfcAorLQorIC8qIERlZmluZSB0byB0aGUgZXF1aXZhbGVudCBvZiB0aGUgQzk5ICdyZXN0cmlj dCcga2V5d29yZCwgb3IgdG8KKyAgICBub3RoaW5nIGlmIHRoaXMgaXMgbm90IHN1cHBvcnRlZC4g IERvIG5vdCBkZWZpbmUgaWYgcmVzdHJpY3QgaXMKKyAgICBzdXBwb3J0ZWQgZGlyZWN0bHkuICAq LworLS0tIGEvZ2RiL2NvbmZpZ3VyZQorKysrIGIvZ2RiL2NvbmZpZ3VyZQorQEAgLTk3NDMsMzkg Kzk3NDMsNiBAQCBpZiB0ZXN0ICIkd2l0aF9zeXN0ZW1fcmVhZGxpbmUiID0geWVzOyB0aGVuCisg ICBSRUFETElORV9ERVBTPQorICAgUkVBRExJTkVfQ0ZMQUdTPQorICAgUkVBRExJTkVfVEVYSV9J TkNGTEFHPQorLQorLSAgIyByZWFkbGluZS02LjAgc3RhcnRlZCB0byB1c2UgdGhlIG5hbWUgYF9y bF9lY2hvaW5nX3AnLgorLSAgIyBgJChSRUFETElORV9ESVIpLycgb2YgYnVuZGxlZCByZWFkbGlu ZSB3b3VsZCBub3QgcmVzb2x2ZSBpbiBjb25maWd1cmUuCistCistICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciByZWFkbGluZV9lY2hvaW5nX3Ai ID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciByZWFkbGluZV9lY2hvaW5nX3AuLi4gIiA+ JjY7IH0KKy0gIHNhdmVfTElCUz0kTElCUworLSAgTElCUz0iJExJQlMgJFJFQURMSU5FIgorLSAg Y2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLS8qIGVuZCBjb25m ZGVmcy5oLiAgKi8KKy0KKy1pbnQKKy1tYWluICgpCisteworLWV4dGVybiBpbnQgcmVhZGxpbmVf ZWNob2luZ19wOworLQkJCQkgICAgcmV0dXJuIHJlYWRsaW5lX2VjaG9pbmdfcDsKKy0gIDsKKy0g IHJldHVybiAwOworLX0KKy1fQUNFT0YKKy1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsg dGhlbiA6CistICBSRUFETElORV9FQ0hPSU5HX1A9eWVzCistZWxzZQorLSAgUkVBRExJTkVfRUNI T0lOR19QPW5vCistCistJGFzX2VjaG8gIiNkZWZpbmUgcmVhZGxpbmVfZWNob2luZ19wIF9ybF9l Y2hvaW5nX3AiID4+Y29uZmRlZnMuaAorLQorLWZpCistcm0gLWYgY29yZSBjb25mdGVzdC5lcnIg Y29uZnRlc3QuJGFjX29iamV4dCBcCistICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4k YWNfZXh0CistICBMSUJTPSIkc2F2ZV9MSUJTIgorLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFETElORV9FQ0hPSU5HX1AiID4mNQorLSRhc19l Y2hvICIkUkVBRExJTkVfRUNIT0lOR19QIiA+JjY7IH0KKyBlbHNlCisgICBSRUFETElORT0nJChS RUFETElORV9ESVIpL2xpYnJlYWRsaW5lLmEnCisgICBSRUFETElORV9ERVBTPSckKFJFQURMSU5F KScKKy0tLSBhL2dkYi9jb25maWd1cmUuYWMKKysrKyBiL2dkYi9jb25maWd1cmUuYWMKK0BAIC01 MzksMjEgKzUzOSw2IEBAIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9yZWFkbGluZSIgPSB5ZXM7IHRo ZW4KKyAgIFJFQURMSU5FX0RFUFM9CisgICBSRUFETElORV9DRkxBR1M9CisgICBSRUFETElORV9U RVhJX0lOQ0ZMQUc9CistCistICAjIHJlYWRsaW5lLTYuMCBzdGFydGVkIHRvIHVzZSB0aGUgbmFt ZSBgX3JsX2VjaG9pbmdfcCcuCistICAjIGAkKFJFQURMSU5FX0RJUikvJyBvZiBidW5kbGVkIHJl YWRsaW5lIHdvdWxkIG5vdCByZXNvbHZlIGluIGNvbmZpZ3VyZS4KKy0KKy0gIEFDX01TR19DSEVD S0lORyhbZm9yIHJlYWRsaW5lX2VjaG9pbmdfcF0pCistICBzYXZlX0xJQlM9JExJQlMKKy0gIExJ QlM9IiRMSUJTICRSRUFETElORSIKKy0gIEFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSgs W1tleHRlcm4gaW50IHJlYWRsaW5lX2VjaG9pbmdfcDsKKy0JCQkJICAgIHJldHVybiByZWFkbGlu ZV9lY2hvaW5nX3A7XV0pLAorLQkJIFtSRUFETElORV9FQ0hPSU5HX1A9eWVzXSwKKy0JCSBbUkVB RExJTkVfRUNIT0lOR19QPW5vCistCQkgIEFDX0RFRklORShbcmVhZGxpbmVfZWNob2luZ19wXSwg W19ybF9lY2hvaW5nX3BdLAorLQkJCSAgICBbcmVhZGxpbmUtNi4wIHN0YXJ0ZWQgdG8gdXNlIGRp ZmZlcmVudCBuYW1lLl0pXSkKKy0gIExJQlM9IiRzYXZlX0xJQlMiCistICBBQ19NU0dfUkVTVUxU KFskUkVBRExJTkVfRUNIT0lOR19QXSkKKyBlbHNlCisgICBSRUFETElORT0nJChSRUFETElORV9E SVIpL2xpYnJlYWRsaW5lLmEnCisgICBSRUFETElORV9ERVBTPSckKFJFQURMSU5FKScKKy0tLSBh L2dkYi90dWkvdHVpLWlvLmMKKysrKyBiL2dkYi90dWkvdHVpLWlvLmMKK0BAIC0xMzMsNyArMTMz LDcgQEAgc3RhdGljIEZ1bmN0aW9uICp0dWlfb2xkX3JsX2dldGNfZnVuY3Rpb247Cisgc3RhdGlj IFZGdW5jdGlvbiAqdHVpX29sZF9ybF9yZWRpc3BsYXlfZnVuY3Rpb247Cisgc3RhdGljIFZGdW5j dGlvbiAqdHVpX29sZF9ybF9wcmVwX3Rlcm1pbmFsOworIHN0YXRpYyBWRnVuY3Rpb24gKnR1aV9v bGRfcmxfZGVwcmVwX3Rlcm1pbmFsOworLXN0YXRpYyBpbnQgdHVpX29sZF9yZWFkbGluZV9lY2hv aW5nX3A7Cisrc3RhdGljIGludCB0dWlfb2xkX3JsX2VjaG9pbmdfcDsKKyAKKyAvKiBSZWFkbGlu ZSBvdXRwdXQgc3RyZWFtLgorICAgIFNob3VsZCBiZSByZW1vdmVkIHdoZW4gcmVhZGxpbmUgaXMg Y2xlYW4uICAqLworQEAgLTUwNiw4ICs1MDYsOCBAQCB0dWlfcmxfZGlzcGxheV9tYXRjaF9saXN0 IChjaGFyICoqbWF0Y2hlcywgaW50IGxlbiwgaW50IG1heCkKKyB2b2lkCisgdHVpX3NldHVwX2lv IChpbnQgbW9kZSkKKyB7CistICBleHRlcm4gaW50IHJlYWRsaW5lX2VjaG9pbmdfcDsKKy0gCisr ICBleHRlcm4gaW50IF9ybF9lY2hvaW5nX3A7CisrCisgICBpZiAobW9kZSkKKyAgICAgeworICAg ICAgIC8qIFJlZGlyZWN0IHJlYWRsaW5lIHRvIFRVSS4gICovCitAQCAtNTE2LDEyICs1MTYsMTIg QEAgdHVpX3NldHVwX2lvIChpbnQgbW9kZSkKKyAgICAgICB0dWlfb2xkX3JsX3ByZXBfdGVybWlu YWwgPSBybF9wcmVwX3Rlcm1fZnVuY3Rpb247CisgICAgICAgdHVpX29sZF9ybF9nZXRjX2Z1bmN0 aW9uID0gcmxfZ2V0Y19mdW5jdGlvbjsKKyAgICAgICB0dWlfb2xkX3JsX291dHN0cmVhbSA9IHJs X291dHN0cmVhbTsKKy0gICAgICB0dWlfb2xkX3JlYWRsaW5lX2VjaG9pbmdfcCA9IHJlYWRsaW5l X2VjaG9pbmdfcDsKKysgICAgICB0dWlfb2xkX3JsX2VjaG9pbmdfcCA9IF9ybF9lY2hvaW5nX3A7 CisgICAgICAgcmxfcmVkaXNwbGF5X2Z1bmN0aW9uID0gdHVpX3JlZGlzcGxheV9yZWFkbGluZTsK KyAgICAgICBybF9kZXByZXBfdGVybV9mdW5jdGlvbiA9IHR1aV9kZXByZXBfdGVybWluYWw7Cisg ICAgICAgcmxfcHJlcF90ZXJtX2Z1bmN0aW9uID0gdHVpX3ByZXBfdGVybWluYWw7CisgICAgICAg cmxfZ2V0Y19mdW5jdGlvbiA9IHR1aV9nZXRjOworLSAgICAgIHJlYWRsaW5lX2VjaG9pbmdfcCA9 IDA7CisrICAgICAgX3JsX2VjaG9pbmdfcCA9IDA7CisgICAgICAgcmxfb3V0c3RyZWFtID0gdHVp X3JsX291dHN0cmVhbTsKKyAgICAgICBybF9wcm9tcHQgPSAwOworICAgICAgIHJsX2NvbXBsZXRp b25fZGlzcGxheV9tYXRjaGVzX2hvb2sgPSB0dWlfcmxfZGlzcGxheV9tYXRjaF9saXN0OworQEAg LTU2MCw3ICs1NjAsNyBAQCB0dWlfc2V0dXBfaW8gKGludCBtb2RlKQorICAgICAgIHJsX2dldGNf ZnVuY3Rpb24gPSB0dWlfb2xkX3JsX2dldGNfZnVuY3Rpb247CisgICAgICAgcmxfb3V0c3RyZWFt ID0gdHVpX29sZF9ybF9vdXRzdHJlYW07CisgICAgICAgcmxfY29tcGxldGlvbl9kaXNwbGF5X21h dGNoZXNfaG9vayA9IDA7CistICAgICAgcmVhZGxpbmVfZWNob2luZ19wID0gdHVpX29sZF9yZWFk bGluZV9lY2hvaW5nX3A7CisrICAgICAgX3JsX2VjaG9pbmdfcCA9IHR1aV9vbGRfcmxfZWNob2lu Z19wOworICAgICAgIHJsX2FscmVhZHlfcHJvbXB0ZWQgPSAwOworIAorICAgICAgIC8qIFNhdmUg dHR5IGZvciBTSUdDT05ULiAgKi8KKy0tLSBhL3JlYWRsaW5lL0NIQU5HRUxPRworKysrIGIvcmVh ZGxpbmUvQ0hBTkdFTE9HCitAQCAtOTE4LDMgKzkxOCwxNzggQEAgY29uZmlndXJlLmluCisgCS0g Y2hhbmdlZCByZWxlYXNlIHN0YXR1cyB0byBgcmVsZWFzZScKKyAKKyBbcmVhZGxpbmUtNS4xIGZy b3plbl0KKysKKysJCQkJICAgMTIvOQorKwkJCQkgICAtLS0tCisrW3JlYWRsaW5lLTUuMSByZWxl YXNlZF0KKysKKysJCQkJICAgMTIvMTQKKysJCQkJICAgLS0tLS0KKytleGFtcGxlcy9ybGZlL01h a2VmaWxlLmluCisrCS0gYWRkIEBMSUJTQCB0byBMSUJTIGFzc2lnbm1lbnQgdG8gcGljayB1cCBl eHRyYSBsaWJyYXJpZXMgZnJvbQorKwkgIGNvbmZpZ3VyZQorKworKwkJCQkgMS8zLzIwMDYKKysJ CQkJIC0tLS0tLS0tCisrc3VwcG9ydC9zaGxpYi1pbnN0YWxsCisrCS0gSW5zdGFsbCBzaGFyZWQg bGlicmFyaWVzIHdpdGggZXhlY3V0ZSBiaXQgc2V0IG9uIExpbnV4CisrCisrCQkJCSAgICA2LzkK KysJCQkJICAgIC0tLQorK1tyZWFkbGluZS01LjItYWxwaGEgZnJvemVuXQorKworKwkJCQkgICA2 LzI2CisrCQkJCSAgIC0tLS0KKytjb25maWd1cmUuaW4KKysJLSBzZXQgQ1JPU1NfQ09NUElMRSB0 byB0aGUgZW1wdHkgc3RyaW5nIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0IGluaGVyaXQKKysJICBh IHJhbmRvbSB2YWx1ZSBmcm9tIHRoZSBlbnZpcm9ubWVudAorKworKwkJCQkgICAgNy84CisrCQkJ CSAgICAtLS0KKytbcmVhZGxpbmUtNS4yLWFscGhhIHJlbGVhc2VkXQorKworKworK1tyZWFkbGlu ZS01LjItYmV0YSByZWxlYXNlZF0KKysKKysJCQkJICAgOS8xMgorKwkJCQkgICAtLS0tCisrY29u ZmlnLmguaW4KKysgICAgICAgIC0gYWRkIGRlZmluZXMgZm9yIHdjc2NvbGwsIGlzd2N0eXBlLCBp c3d1cHBlciwgaXN3bG93ZXIsIHRvd3VwcGVyLAorKyAgICAgICAgICB0b3dsb3dlciBmdW5jdGlv bnMKKysgICAgICAgIC0gcmVwbGFjZSBkZWZpbmUgZm9yIHdjdG9tYiB3aXRoIG9uZSBmb3Igd2Ny dG9tYgorKyAgICAgICAgLSBhZGQgZGVmaW5lcyBmb3Igd2NoYXJfdCwgd2ludF90LCB3Y3R5cGVf dCB0eXBlcworKworKwkJCQkgICAxMC8xMQorKwkJCQkgICAtLS0tLQorK1tyZWFkbGluZS01LjIg cmVsZWFzZWRdCisrCisrCQkJCSAgIDExLzkKKysJCQkJICAgLS0tLQorK2V4YW1wbGVzL3JsZmUv e2NvbmZpZ3VyZS5pbixNYWtlZmlsZS5pbixjb25maWcuaC5pbixybGZlLmMscHR5LmN9CisrCS0g cG9ydGFiaWxpdHkgZml4ZXMgZnJvbSBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+ CisrCisrCQkJCSAgIDExLzIxCisrCQkJCSAgIC0tLS0tCisrTWFrZWZpbGUuaW4KKysJLSBhZGQg YGluc3RhbGwtZXhhbXBsZXMnIGFuZCBgdW5pbnN0YWxsLWV4YW1wbGVzJyB0YXJnZXRzCisrCisr ZXhhbXBsZXMvTWFrZWZpbGUuaW4KKysJLSBhZGQgY29ycmVjdCB2YXJpYWJsZXMgdG8gYnVpbGQg ZXhhbXBsZXMgb24gV2luZG93cworKwktIGFkZCBhcHByb3ByaWF0ZSBydWxlcyB0byBpbnN0YWxs IGFuZCB1bmluc3RhbGwgZXhhbXBsZSBzb3VyY2VzIGluCisrCSAgJChkYXRhZGlyKS9yZWFkbGlu ZSAKKysKKysJCQkJICAgMTEvMjcKKysJCQkJICAgLS0tLS0KKytjb25maWcuaC5pbgorKwktIG1v dmUgI3VuZGVmIG9mIEhBVkVfU1RSQ09MTCBvdXQgb2YgY29uZmlnLmguaW4sIHNpbmNlIGF1dG9j b25mIHRyaWVzCisrCSAgdG8gc3Vic3RpdHV0ZSBpdCBiYXNlZCBvbiBjb25maWd1cmUgdGVzdHMK KysKKysJCQkJIDQvMjcvMjAwNworKwkJCQkgLS0tLS0tLS0tCisrZXhhbXBsZXMvYXV0b2NvbmYK KysJLSBuZXcgZGlyZWN0b3J5IHdpdGggZXhhbXBsZSBhdXRvY29uZiBtYWNyb3MgdG8gZGV0ZWN0 IHJlYWRsaW5lIGFuZAorKwkgIHJldHVybiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5zdGFsbGVk IHZlcnNpb24KKysKKysJCQkJICAgNi8xMworKwkJCQkgICAtLS0tCisrc3VwcG9ydC9zaGxpYi1p bnN0YWxsCisrCS0gY2hhbmdlcyB0byBzdXBwb3J0IEFJWCA1Lnggc2hhcmVkIGxpYnJhcnkgaW5z dGFsbGF0aW9uCisrCisrCQkJCSAzLzIwLzIwMDgKKysJCQkJIC0tLS0tLS0tLQorK3N1cHBvcnQv c2hsaWItaW5zdGFsbAorKwktIGFkZCBzdXBwb3J0IGZvciBOZXRCU0QgYW5kIEludGVyaXggc2hh cmVkIGxpYnJhcnkgaW5zdGFsbGF0aW9uCisrCisrCQkJCSAgIDQvMjIKKysJCQkJICAgLS0tLQor K3N1cHBvcnQvd2N3aWR0aC5jCisrCS0gdXBkYXRlZCBpbXBsZW1lbnRhdGlvbiBmcm9tIDIwMDct MDUKKysKKysJCQkJICAgNy8xOAorKwkJCQkgICAtLS0tCisrc3VwcG9ydC9zaGxpYi1pbnN0YWxs CisrCS0gc3VwcG9ydCBmb3IgbWluZ3czMiwgY29udHJpYnV0ZWQgYnkgQ2FybG8gQnJhbWl4IDxj YXJsby5icmFtaXhAbGliZXJvLml0PgorKworKwkJCQkgICAgOC80CisrCQkJCSAgICAtLS0KKytj b25maWd1cmUuaW4KKysJLSBjaGFuZ2VkIHRvIHJlYWRsaW5lLTYuMAorKworKwkJCQkgICA4LzE4 CisrCQkJCSAgIC0tLS0KKytzdXBwb3J0L2NvbmZpZy57Z3Vlc3Msc3VifQorKwktIHVwZGF0ZWQg dG8gbmV3ZXIgdmVyc2lvbnMgZnJvbSBhdXRvY29uZi0yLjYyIGRpc3RyaWJ1dGlvbgorKworKwkJ CQkgMy81LzIwMDkKKysJCQkJIC0tLS0tLS0tCisrc3VwcG9ydC9zaGxpYi1pbnN0YWxsCisrCS0g dGFrZSBhIG5ldyAtViBob3N0X3ZlbmRvciBhcmd1bWVudAorKwktIGFkZCAke2hvc3RfdmVuZG9y fSB0byBzdHJpbmcgdGVzdGVkIGluIGNhc2Ugc3RhdGVtZW50IGZvciBzeW1saW5rCisrCSAgY3Jl YXRpb24gc2VjdGlvbgorKwktIGFkZCBzdXBwb3J0IGZvciBGcmVlQlNEL2dlbnRvbywgd2hpY2gg dXNlcyBMaW51eCBsaWJyYXJ5IG5hbWluZworKwkgIHNjaGVtZQorKwktIGNoYW5nZSBGcmVlQlNE IHN5bWxpbmsgcnVsZXMsIHNpbmNlIEZyZWVCU0QgNysgaGFzIG9ubHkgRUxGIHNoYXJlZAorKwkg IGxpYnJhcmllcy4gIERyYWdvbmZseUJTRCBydWxlcyBhcmUgdGhlIHNhbWUuICBGaXggZnJvbSBU aW1vdGh5CisrCSAgUmVkYWVsbGkgPGRyaXp6dEBnZW50b28ub3JnPgorKworK3NobGliL01ha2Vm aWxlLmluCisrCS0gYWRkIGRlZmluaXRpb24gb2YgaG9zdF92ZW5kb3IsIHN1YnN0aXR1dGVkIGJ5 IGNvbmZpZ3VyZQorKwktIGFkZCAtViBob3N0X3ZlbmRvciBhcmd1bWVudCB0byBhbGwgaW52b2Nh dGlvbnMgb2Ygc2hsaWItaW5zdGFsbC4KKysJICBGaXggZnJvbSBUaW1vdGh5IFJlZGFlbGxpIDxk cml6enRAZ2VudG9vLm9yZz4KKysKKysJCQkJICAgMy8xMAorKwkJCQkgICAtLS0tCisrY29uZmln dXJlLmluCisrCS0gYWRkIGNhbGwgdG8gQUNfU1lTX0xBUkdFRklMRSBmb3IgcmVhZGRpciBhbmQg bGFyZ2VmaWxlIHN1cHBvcnQgb24KKysJICBMaW51eAorKworK2NvbmZpZy5oLmluCisrCS0gYWRk IF9GSUxFX09GRlNFVF9CSVRTIGRlZmluZQorKworKwkJCQkgICA0LzE5CisrCQkJCSAgIC0tLS0K KytNYWtlZmlsZS5pbgorKwktIGFkZCB0YXJnZXRzIGZvciBtYWtpbmcgYW5kIGluc3RhbGxpbmcg ZG9jdW1lbnRhdGlvbiByZXF1aXJlZCBieSBHTlUKKysJICBjb2Rpbmcgc3RhbmRhcmRzLiAgRml4 IGZyb20gSm9zZXBoIE15ZXJzIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KKysKKytwb3NpeHNl bGVjdC5oCisrCS0gcGljayB1cCBmcm9tIGJhc2guICBJbnNwaXJlZCBieSBNaWtlIEZyeXNpbmdl ciA8dmFwaWVyQGdlbnRvby5vcmc+CisrCisrCQkJCSAgIDEwLzI4CisrCQkJCSAgIC0tLS0tCisr c3VwcG9ydC9zaGxpYi1pbnN0YWxsCisrCS0gZGVjcmVhc2UgdGhlIGRlZmF1bHQgdmVyc2lvbiBv ZiBGcmVlQlNEIHRoYXQgaW5zdGFsbHMgc2hhcmVkIGxpYnJhcmllcworKwkgIHRvIDQueC4gIEFk dmljZSBmcm9tIFBldGVyIEplcmVteSA8cGV0ZXJqZXJlbXlAYWNtLm9yZz4KKysKKysJCQkJICAg MTIvMTgKKysJCQkJICAgLS0tLS0KKytbcmVhZGxpbmUtNi4xLXJjMSByZWxlYXNlZF0KKysKKysJ CQkJICAgMTIvMjMKKysJCQkJICAgLS0tLS0KKytkb2MvTWFrZWZpbGUuaW4KKysJLSBtYWtlIHN1 cmUgJCh0b3BkaXIpIGlzIG5vdCAiLi4iIGJlZm9yZSByZW1vdmluZyBhbGwgb2YgdGhlIGZvcm1h dHRlZAorKwkgIGRvY3VtZW50YXRpb24gaW4gYG1ha2UgZGlzdGNsZWFuJy4gICQodG9wZGlyKSBp cyBzZXQgdG8gYC4uJyBpZgorKwkgIHJlYWRsaW5lIGlzIGJlaW5nIGJ1aWx0IGluIHRoZSBzb3Vy Y2UgZGlyZWN0b3J5LiAgRml4ZXMgcHJvYmxlbQorKwkgIG5vdGljZWQgYnkgVEhPVU1JTiBEYW1p ZW4gPHRob3VtaW5AaXBhbmVtYXRlY2guY29tPgorKworKwkJCQkgICAxMi8yOQorKwkJCQkgICAt LS0tLQorK1tyZWFkbGluZS02LjEgZnJvemVuXQorKworKwkJCQkgMi81LzIwMTAKKysJCQkJIC0t LS0tLS0tCisrZXhhbXBsZXMvTWFrZWZpbGUuaW4KKysgICAgICAgIC0gbWFrZSBzdXJlIHRvIGlu c3RhbGwgZXhhbXBsZSBDIGZpbGVzIHVzaW5nICQoc3JjZGlyKS8kJGYgaW4gY2FzZQorKyAgICAg ICAgICB3ZSdyZSBidWlsZGluZyBvdXRzaWRlIHRoZSBzb3VyY2UgZGlyZWN0b3J5LiAgQnVnIHJl cG9ydCBhbmQgZml4CisrICAgICAgICAgIGZyb20gUGV0ZXIgQnJlaXRlbmxvaG5lciA8cGViQG1w cG11Lm1wZy5kZT4KKysKKysJCQkJICAgNy8yNQorKwkJCQkgICAtLS0tCisreGZyZWUuYworKwkt IG5ldyBmaWxlIHdpdGggeGZyZWUoKSBpbXBsZW1lbnRhdGlvbiwgbW92ZWQgZnJvbSB4bWFsbG9j LmMKKysKKysJCQkJICAgMTIvMjgKKysJCQkJICAgLS0tLS0KKyt7ZXhhbXBsZXMsc2hsaWJ9L01h a2VmaWxlLmluCisrCS0gQ3lnd2luLWJhc2VkIGNoYW5nZXMgZnJvbSBFcmljIEJsYWtlIDxlYmxh a2VAcmVkaGF0LmNvbT4KKy0tLSBhL3JlYWRsaW5lL0NIQU5HRVMKKysrKyBiL3JlYWRsaW5lL0NI QU5HRVMKK0BAIC0xLDMgKzEsMzIwIEBACisrVGhpcyBkb2N1bWVudCBkZXRhaWxzIHRoZSBjaGFu Z2VzIGJldHdlZW4gdGhpcyB2ZXJzaW9uLCByZWFkbGluZS02LjIsCisrYW5kIHRoZSBwcmV2aW91 cyB2ZXJzaW9uLCByZWFkbGluZS02LjEuCisrCisrMS4gIENoYW5nZXMgdG8gUmVhZGxpbmUKKysK KythLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgdGhlIHVuY29udmVydGVkIGZpbGVuYW1lIHRv IGJlIGFkZGVkIHRvIHRoZSBsaXN0IG9mCisrICAgIGNvbXBsZXRpb25zIHdoZW4gdGhlIGFwcGxp Y2F0aW9uIHNwZWNpZmllZCBmaWxlbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucy4KKysKKytiLiAg Rml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgdGhlIHdyb25nIGZpbGVuYW1lIHRvIGJlIHBhc3NlZCB0 byBvcGVuZGlyIHdoZW4gdGhlCisrICAgIGFwcGxpY2F0aW9uIGhhcyBzcGVjaWZpZWQgYSBmaWxl bmFtZSBkZXF1b3RpbmcgZnVuY3Rpb24uCisrCisrYy4gIEZpeGVkIGEgYnVnIHdoZW4gcmVwZWF0 aW5nIGEgY2hhcmFjdGVyIHNlYXJjaCBpbiB2aSBtb2RlIGluIHRoZSBjYXNlIHdoZXJlCisrICAg IHRoZXJlIHdhcyBubyBzZWFyY2ggdG8gcmVwZWF0LgorKworK2QuICBXaGVuIHNob3ctYWxsLWlm LWFtYmlndW91cyBpcyBzZXQsIHRoZSBjb21wbGV0aW9uIHJvdXRpbmVzIG5vIGxvbmdlciBpbnNl cnQKKysgICAgYSBjb21tb24gbWF0Y2ggcHJlZml4IHRoYXQgaXMgc2hvcnRlciB0aGFuIHRoZSB0 ZXh0IGJlaW5nIGNvbXBsZXRlZC4KKysKKytlLiAgVGhlIGZ1bGwgc2V0IG9mIHZpIGVkaXRpbmcg Y29tbWFuZHMgbWF5IG5vdyBiZSB1c2VkIGluIGNhbGxiYWNrIG1vZGUuCisrCisrZi4gIEZpeGVk IGEgYnVnIHRoYXQgY2F1c2VkIHJlYWRsaW5lIHRvIG5vdCB1cGRhdGUgaXRzIGlkZWEgb2YgdGhl IHRlcm1pbmFsCisrICAgIGRpbWVuc2lvbnMgd2hpbGUgcnVubmluZyBpbiBgbm8tZWNobycgbW9k ZS4KKysKKytoLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgcmVhZGxpbmUgdG8gZHVtcCBjb3Jl IGlmIGFuIGFwcGxpY2F0aW9uIGNhbGxlZAorKyAgICBybF9wcmVwX3Rlcm1pbmFsIHdpdGhvdXQg c2V0dGluZyBybF9pbnN0cmVhbS4KKysKKytpLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgbWV0 YS1wcmVmaXhlZCBjaGFyYWN0ZXJzIGJvdW5kIHRvIGluY3JlbWVudGFsCisrICAgIHNlYXJjaCBm b3J3YXJkIG9yIGJhY2t3YXJkIHRvIG5vdCBiZSByZWNvZ25pemVkIGlmIHRoZXkgd2VyZSB0eXBl ZAorKyAgICBzdWJzZXF1ZW50bHkuCisrCisrai4gIFRoZSBpbmNyZW1lbnRhbCBzZWFyY2ggY29k ZSB0cmVhdHMga2V5IHNlcXVlbmNlcyB0aGF0IG1hcCB0byB0aGUgc2FtZQorKyAgICBmdW5jdGlv bnMgYXMgKGRlZmF1bHQpIF5HLCBeVywgYW5kIF5ZIGFzIGVxdWl2YWxlbnQgdG8gdGhvc2UgY2hh cmFjdGVycy4KKysKKytrLiAgRml4ZWQgYSBidWcgaW4gbWVudS1jb21wbGV0ZSB0aGF0IGNhdXNl ZCBpdCB0byBtaXNiZWhhdmUgd2l0aCBsYXJnZQorKyAgICBuZWdhdGl2ZSBhcmd1bWVudC4KKysK KytsLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgdmktbW9kZSB5YW5rLWxhc3QtYXJnIHRvIHJp bmcgdGhlIGJlbGwgd2hlbiBpbnZva2VkCisrICAgIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUuCisr CisrbS4gIEZpeGVkIGEgYnVnIHRoYXQgbWFkZSBhbiBleHBsaWNpdCBhcmd1bWVudCBvZiAwIHRv IHlhbmstbGFzdC1hcmcgYmVoYXZlCisrICAgIGFzIGlmIGl0IHdlcmUgYSBuZWdhdGl2ZSBhcmd1 bWVudC4KKysKKytuLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgZGlyZWN0b3J5IG5hbWVzIGlu IHdvcmRzIHRvIGJlIGNvbXBsZXRlZCB0byBub3QKKysgICAgYmUgZGVxdW90ZWQgY29ycmVjdGx5 LgorKworKzIuICBOZXcgRmVhdHVyZXMgaW4gUmVhZGxpbmUKKysKKythLiAgVGhlIGhpc3Rvcnkg bGlicmFyeSBkb2VzIG5vdCB0cnkgdG8gd3JpdGUgdGhlIGhpc3RvcnkgZmlsZW5hbWUgaW4gdGhl CisrICAgIGN1cnJlbnQgZGlyZWN0b3J5IGlmICRIT01FIGlzIHVuc2V0LiAgVGhpcyBjbG9zZXMg YSBwb3RlbnRpYWwgc2VjdXJpdHkKKysgICAgcHJvYmxlbSBpZiB0aGUgYXBwbGljYXRpb24gZG9l cyBub3Qgc3BlY2lmeSBhIGhpc3RvcnkgZmlsZW5hbWUuCisrCisrYi4gIE5ldyBiaW5kYWJsZSB2 YXJpYWJsZSBgY29tcGxldGlvbi1kaXNwbGF5LXdpZHRoJyB0byBzZXQgdGhlIG51bWJlciBvZgor KyAgICBjb2x1bW5zIHVzZWQgd2hlbiBkaXNwbGF5aW5nIGNvbXBsZXRpb25zLgorKworK2MuICBO ZXcgYmluZGFibGUgdmFyaWFibGUgYGNvbXBsZXRpb24tY2FzZS1tYXAnIHRvIGNhdXNlIGNhc2Ut aW5zZW5zaXRpdmUKKysgICAgY29tcGxldGlvbiB0byB0cmVhdCBgLScgYW5kIGBfJyBhcyBpZGVu dGljYWwuCisrCisrZC4gIFRoZXJlIGFyZSBuZXcgYmluZGFibGUgdmktbW9kZSBjb21tYW5kIG5h bWVzIHRvIGF2b2lkIHJlYWRsaW5lJ3MgY2FzZS0KKysgICAgaW5zZW5zaXRpdmUgbWF0Y2hpbmcg bm90IGFsbG93aW5nIHRoZW0gdG8gYmUgYm91bmQgc2VwYXJhdGVseS4KKysKKytlLiAgTmV3IGJp bmRhYmxlIHZhcmlhYmxlIGBtZW51LWNvbXBsZXRlLWRpc3BsYXktcHJlZml4JyBjYXVzZXMgdGhl IG1lbnUKKysgICAgY29tcGxldGlvbiBjb2RlIHRvIGRpc3BsYXkgdGhlIGNvbW1vbiBwcmVmaXgg b2YgdGhlIHBvc3NpYmxlIGNvbXBsZXRpb25zCisrICAgIGJlZm9yZSBjeWNsaW5nIHRocm91Z2gg dGhlIGxpc3QsIGluc3RlYWQgb2YgYWZ0ZXIuCisrCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor K1RoaXMgZG9jdW1lbnQgZGV0YWlscyB0aGUgY2hhbmdlcyBiZXR3ZWVuIHRoaXMgdmVyc2lvbiwg cmVhZGxpbmUtNi4xLAorK2FuZCB0aGUgcHJldmlvdXMgdmVyc2lvbiwgcmVhZGxpbmUtNi4wLgor KworKzEuICBDaGFuZ2VzIHRvIFJlYWRsaW5lCisrCisrYS4gIFRoZSBTSUdXSU5DSCBzaWduYWwg aGFuZGxlciBub3cgYXZvaWRzIGNhbGxpbmcgdGhlIHJlZGlzcGxheSBjb2RlIGlmCisrICAgIG9u ZSBhcnJpdmVzIHdoaWxlIGluIHRoZSBtaWRkbGUgb2YgcmVkaXNwbGF5LgorKworK2IuICBDaGFu Z2VzIHRvIHRoZSB0aW1lb3V0IGNvZGUgdG8gbWFrZSBzdXJlIHRoYXQgdGltZW91dCB2YWx1ZXMg Z3JlYXRlcgorKyAgICB0aGFuIG9uZSBzZWNvbmQgYXJlIGhhbmRsZWQgYmV0dGVyLgorKworK2Mu ICBGaXhlZCBhIGJ1ZyBpbiB0aGUgcmVkaXNwbGF5IGNvZGUgdGhhdCB3YXMgdHJpZ2dlcmVkIGJ5 IGEgcHJvbXB0CisrICAgIGNvbnRhaW5pbmcgaW52aXNpYmxlIGNoYXJhY3RlcnMgZXhhY3RseSB0 aGUgd2lkdGggb2YgdGhlIHNjcmVlbi4KKysKKytkLiAgRml4ZWQgYSBidWcgaW4gdGhlIHJlZGlz cGxheSBjb2RlIGVuY291bnRlcmVkIHdoZW4gcnVubmluZyBpbiBob3Jpem9udGFsCisrICAgIHNj cm9sbCBtb2RlLgorKworK2UuICBGaXhlZCBhIGJ1ZyB0aGF0IHByZXZlbnRlZCBtZW51IGNvbXBs ZXRpb24gZnJvbSBwcm9wZXJseSBjb21wbGV0aW5nCisrICAgIGZpbGVuYW1lcy4KKysKKytmLiAg Rml4ZWQgYSByZWRpc3BsYXkgYnVnIGNhdXNlZCBieSBhIG11bHRpYnl0ZSBjaGFyYWN0ZXIgY2F1 c2luZyBhIGxpbmUgdG8KKysgICAgd3JhcC4KKysKKytnLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVz ZWQga2V5IHNlcXVlbmNlcyBvZiB0d28gY2hhcmFjdGVycyB0byBub3QgYmUKKysgICAgcmVjb2du aXplZCB3aGVuIGEgbG9uZ2VyIHNlcXVlbmNlIGlkZW50aWNhbCBpbiB0aGUgZmlyc3QgdHdvIGNo YXJhY3RlcnMKKysgICAgd2FzIGJvdW5kLgorKworK2guICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNl ZCBoaXN0b3J5IGV4cGFuc2lvbiB0byBiZSBhdHRlbXB0ZWQgb24gJCcuLi4nCisrICAgIHNpbmds ZS1xdW90ZWQgc3RyaW5ncy4KKysKKytpLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgaW5jb3Jy ZWN0IHJlZGlzcGxheSB3aGVuIHRoZSBwcm9tcHQgY29udGFpbmVkCisrICAgIG11bHRpYnl0ZSBj aGFyYWN0ZXJzIGluIGFuIGBpbnZpc2libGUnIHNlcXVlbmNlIGJyYWNrZXRlZCBieSBcWyBhbmQK KysgICAgXF0uCisrCisrai4gIEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkIGhpc3RvcnkgZXhwYW5z aW9uIHRvIHNob3J0LWNpcmN1aXQgYWZ0ZXIKKysgICAgZW5jb3VudGVyaW5nIGEgbXVsdGlieXRl IGNoYXJhY3Rlci4KKysKKytrLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgYXBwbGljYXRpb25z IHVzaW5nIHRoZSBjYWxsYmFjayBpbnRlcmZhY2UgdG8gbm90CisrICAgIHJlYWN0IHRvIFNJR0lO VCAob3Igb3RoZXIgc2lnbmFscykgdW50aWwgYW5vdGhlciBjaGFyYWN0ZXIgYXJyaXZlZC4KKysK KysyLiAgTmV3IEZlYXR1cmVzIGluIFJlYWRsaW5lCisrCisrYS4gIE5ldyBiaW5kYWJsZSBmdW5j dGlvbjogbWVudS1jb21wbGV0ZS1iYWNrd2FyZC4KKysKKytiLiAgSW4gdGhlIHZpIGluc2VydGlv biBrZXltYXAsIEMtbiBpcyBub3cgYm91bmQgdG8gbWVudS1jb21wbGV0ZSBieSBkZWZhdWx0LAor KyAgICBhbmQgQy1wIHRvIG1lbnUtY29tcGxldGUtYmFja3dhcmQuCisrCisrYy4gIFdoZW4gaW4g dmkgY29tbWFuZCBtb2RlLCByZXBlYXRlZGx5IGhpdHRpbmcgRVNDIG5vdyBkb2VzIG5vdGhpbmcs IGV2ZW4KKysgICAgd2hlbiBFU0MgaW50cm9kdWNlcyBhIGJvdW5kIGtleSBzZXF1ZW5jZS4gIFRo aXMgaXMgY2xvc2VyIHRvIGhvdworKyAgICBoaXN0b3JpY2FsIHZpIGJlaGF2ZXMuCisrCisrZC4g IE5ldyBiaW5kYWJsZSBmdW5jdGlvbjogc2tpcC1jc2ktc2VxdWVuY2UuICBDYW4gYmUgdXNlZCBh cyBhIGRlZmF1bHQgdG8KKysgICAgY29uc3VtZSBrZXkgc2VxdWVuY2VzIGdlbmVyYXRlZCBieSBr ZXlzIGxpa2UgSG9tZSBhbmQgRW5kIHdpdGhvdXQgaGF2aW5nCisrICAgIHRvIGJpbmQgYWxsIGtl eXMuCisrCisrZS4gIE5ldyBhcHBsaWNhdGlvbi1zZXR0YWJsZSBmdW5jdGlvbjogcmxfZmlsZW5h bWVfcmV3cml0ZV9ob29rLiAgQ2FuIGJlIHVzZWQKKysgICAgdG8gcmV3aXRlIG9yIG1vZGlmeSBm aWxlbmFtZXMgcmVhZCBmcm9tIHRoZSBmaWxlIHN5c3RlbSBiZWZvcmUgdGhleSBhcmUKKysgICAg Y29tcGFyZWQgdG8gdGhlIHdvcmQgdG8gYmUgY29tcGxldGVkLgorKworK2YuICBOZXcgYmluZGFi bGUgdmFyaWFibGU6IHNraXAtY29tcGxldGVkLXRleHQsIGFjdGl2ZSB3aGVuIGNvbXBsZXRpbmcg aW4gdGhlCisrICAgIG1pZGRsZSBvZiBhIHdvcmQuICBJZiBlbmFibGVkLCBpdCBtZWFucyB0aGF0 IGNoYXJhY3RlcnMgaW4gdGhlIGNvbXBsZXRpb24KKysgICAgdGhhdCBtYXRjaCBjaGFyYWN0ZXJz IGluIHRoZSByZW1haW5kZXIgb2YgdGhlIHdvcmQgYXJlICJza2lwcGVkIiByYXRoZXIKKysgICAg dGhhbiBpbnNlcnRlZCBpbnRvIHRoZSBsaW5lLgorKworK2cuICBUaGUgcHJlLXJlYWRsaW5lLTYu MCB2ZXJzaW9uIG9mIG1lbnUgY29tcGxldGlvbiBpcyBhdmFpbGFibGUgYXMKKysgICAgIm9sZC1t ZW51LWNvbXBsZXRlIiBmb3IgdXNlcnMgd2hvIGRvIG5vdCBsaWtlIHRoZSByZWFkbGluZS02LjAg dmVyc2lvbi4KKysKKytoLiAgTmV3IGJpbmRhYmxlIHZhcmlhYmxlOiBlY2hvLWNvbnRyb2wtY2hh cmFjdGVycy4gIElmIGVuYWJsZWQsIGFuZCB0aGUKKysgICAgdHR5IEVDSE9DVEwgYml0IGlzIHNl dCwgY29udHJvbHMgdGhlIGVjaG9pbmcgb2YgY2hhcmFjdGVycyBjb3JyZXNwb25kaW5nCisrICAg IHRvIGtleWJvYXJkLWdlbmVyYXRlZCBzaWduYWxzLgorKworK2kuICBOZXcgYmluZGFibGUgdmFy aWFibGU6IGVuYWJsZS1tZXRhLWtleS4gIENvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHJlYWRsaW5l CisrICAgIHNlbmRzIHRoZSBzbW0vcm1tIHNlcXVlbmNlcyBpZiB0aGUgdGVybWluYWwgaW5kaWNh dGVzIGl0IGhhcyBhIG1ldGEga2V5CisrICAgIHRoYXQgZW5hYmxlcyBlaWdodC1iaXQgY2hhcmFj dGVycy4KKysKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrVGhpcyBkb2N1bWVudCBkZXRhaWxz IHRoZSBjaGFuZ2VzIGJldHdlZW4gdGhpcyB2ZXJzaW9uLCByZWFkbGluZS02LjAsCisrYW5kIHRo ZSBwcmV2aW91cyB2ZXJzaW9uLCByZWFkbGluZS01LjIuCisrCisrMS4gIENoYW5nZXMgdG8gUmVh ZGxpbmUKKysKKythLiAgRml4ZWQgYSBudW1iZXIgb2YgcmVkaXNwbGF5IGVycm9ycyBpbiBlbnZp cm9ubWVudHMgc3VwcG9ydGluZyBtdWx0aWJ5dGUgCisrICAgIGNoYXJhY3RlcnMuCisrCisrYi4g IEZpeGVkIGJ1Z3MgaW4gdmkgY29tbWFuZCBtb2RlIHRoYXQgY2F1c2VkIG1vdGlvbiBjb21tYW5k cyB0byBpbmFwcHJvcHJpYXRlbHkKKysgICAgc2V0IHRoZSBtYXJrLgorKworK2MuICBXaGVuIHVz aW5nIHRoZSBhcnJvdyBrZXlzIGluIHZpIGluc2VydGlvbiBtb2RlLCByZWFkbGluZSBhbGxvd3Mg bW92ZW1lbnQKKysgICAgYmV5b25kIHRoZSBjdXJyZW50IGVuZCBvZiB0aGUgbGluZSAodW5saWtl IGNvbW1hbmQgbW9kZSkuCisrCisrZC4gIEZpeGVkIGJ1Z3MgdGhhdCBjYXVzZWQgcmVhZGxpbmUg dG8gbG9vcCB3aGVuIHRoZSB0ZXJtaW5hbCBoYXMgYmVlbiB0YWtlbgorKyAgICBhd2F5IGFuZCBy ZWFkcyByZXR1cm4gLTEvRUlPLgorKworK2UuICBGaXhlZCBidWdzIGluIHJlZGlzcGxheSBvY2N1 cnJpbmcgd2hlbiBkaXNwbGF5aW5nIHByb21wdHMgY29udGFpbmluZworKyAgICBpbnZpc2libGUg Y2hhcmFjdGVycy4KKysKKytmLiAgRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgdGhlIGNvbXBsZXRp b24gYXBwZW5kIGNoYXJhY3RlciB0byBub3QgYmUgcmVzZXQgdG8KKysgICAgdGhlIGRlZmF1bHQg YWZ0ZXIgYW4gYXBwbGljYXRpb24tc3BlY2lmaWVkIGNvbXBsZXRpb24gZnVuY3Rpb24gY2hhbmdl ZCBpdC4KKysKKytnLiAgRml4ZWQgYSBwcm9ibGVtIHRoYXQgY2F1c2VkIGluY29ycmVjdCBwb3Np dGlvbmluZyBvZiB0aGUgY3Vyc29yIHdoaWxlIGluCisrICAgIGVtYWNzIGVkaXRpbmcgbW9kZSB3 aGVuIG1vdmluZyBmb3J3YXJkIGF0IHRoZSBlbmQgb2YgYSBsaW5lIHdoaWxlIHVzaW5nCisrICAg IGEgbG9jYWxlIHN1cHBvcnRpbmcgbXVsdGlieXRlIGNoYXJhY3RlcnMuCisrCisraC4gIEZpeGVk IGFuIG9mZi1ieS1vbmUgZXJyb3IgdGhhdCBjYXVzZWQgcmVhZGxpbmUgdG8gZHJvcCBldmVyeSA1 MTF0aAorKyAgICBjaGFyYWN0ZXIgb2YgYnVmZmVyZWQgaW5wdXQuCisrCisraS4gIEZpeGVkIGEg YnVnIHRoYXQgcmVzdWx0ZWQgaW4gU0lHVEVSTSBub3QgYmVpbmcgY2F1Z2h0IG9yIGNsZWFuZWQg dXAuCisrCisrai4gIEZpeGVkIHJlZGlzcGxheSBidWdzIGNhdXNlZCBieSBtdWx0aWxpbmUgcHJv bXB0cyB3aXRoIGludmlzaWJsZSBjaGFyYWN0ZXJzCisrICAgIG9yIG5vIGNoYXJhY3RlcnMgZm9s bG93aW5nIHRoZSBmaW5hbCBuZXdsaW5lLgorKworK2suICBGaXhlZCByZWRpc3BsYXkgYnVnIGNh dXNlZCBieSBwcm9tcHRzIGNvbnNpc3Rpbmcgc29sZWx5IG9mIGludmlzaWJsZQorKyAgICBjaGFy YWN0ZXJzLgorKworK2wuICBGaXhlZCBhIGJ1ZyBpbiB0aGUgY29kZSB0aGF0IGJ1ZmZlcnMgY2hh cmFjdGVycyByZWNlaXZlZCB2ZXJ5IHF1aWNrbHkgaW4KKysgICAgc3VjY2Vzc2lvbiB3aGljaCBj YXVzZWQgY2hhcmFjdGVycyB0byBiZSBkcm9wcGVkLgorKworK20uICBGaXhlZCBhIGJ1ZyB0aGF0 IGNhdXNlZCByZWFkbGluZSB0byByZWZlcmVuY2UgdW5pbml0aWFsaXplZCBkYXRhIHN0cnVjdHVy ZXMKKysgICAgaWYgaXQgcmVjZWl2ZWQgYSBTSUdXSU5DSCBiZWZvcmUgY29tcGxldGluZyBpbml0 aWFsemF0aW9uLgorKworK24uICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCB0aGUgdmktbW9kZSBg bGFzdCBjb21tYW5kJyB0byBiZSBzZXQgaW5jb3JyZWN0bHkKKysgICAgYW5kIHRoZXJlZm9yZSB1 bnJlcGVhdGFibGUuCisrCisrby4gIEZpeGVkIGEgYnVnIHRoYXQgY2F1c2VkIHJlYWRsaW5lIHRv IGRpc2FibGUgZWNob2luZyB3aGVuIGl0IHdhcyBiZWluZyB1c2VkCisrICAgIHdpdGggYW4gb3V0 cHV0IGZpbGUgZGVzY3JpcHRvciB0aGF0IHdhcyBub3QgYSB0ZXJtaW5hbC4KKysKKytwLiAgUmVh ZGxpbmUgbm93IGJsb2NrcyBTSUdJTlQgd2hpbGUgbWFuaXB1bGF0aW5nIGludGVybmFsIGRhdGEg c3RydWN0dXJlcworKyAgICBkdXJpbmcgcmVkaXNwbGF5LgorKworK3EuICBGaXhlZCBhIGJ1ZyBp biByZWRpc3BsYXkgdGhhdCBjYXVzZWQgcmVhZGxpbmUgdG8gc2VnZmF1bHQgd2hlbiBwYXN0aW5n IGEKKysgICAgdmVyeSBsb25nIGxpbmUgKG92ZXIgMTMwLDAwMCBjaGFyYWN0ZXJzKS4KKysKKyty LiAgRml4ZWQgYnVncyBpbiByZWRpc3BsYXkgd2hlbiB1c2luZyBwcm9tcHRzIHdpdGggbm8gdmlz aWJsZSBwcmludGluZworKyAgICBjaGFyYWN0ZXJzLgorKworK3MuICBGaXhlZCBhIGJ1ZyB0aGF0 IGNhdXNlZCByZWRpc3BsYXkgZXJyb3JzIHdoZW4gdXNpbmcgcHJvbXB0cyB3aXRoIGludmlzaWJs ZQorKyAgICBjaGFyYWN0ZXJzIGFuZCBudW1lcmljIGFyZ3VtZW50cyB0byBhIGNvbW1hbmQgaW4g YSBtdWx0aWJ5dGUgbG9jYWxlLgorKworK3QuICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCByZWRp c3BsYXkgZXJyb3JzIHdoZW4gdXNpbmcgcHJvbXB0cyB3aXRoIGludmlzaWJsZQorKyAgICBjaGFy YWN0ZXJzIHNwYW5uaW5nIG1vcmUgdGhhbiB0d28gcGh5c2ljYWwgc2NyZWVuIGxpbmVzLgorKwor KzIuICBOZXcgRmVhdHVyZXMgaW4gUmVhZGxpbmUKKysKKythLiAgQSBuZXcgdmFyaWFibGUsIHJs X3NvcnRfY29tcGxldGlvbl9tYXRjaGVzOyBhbGxvd3MgYXBwbGljYXRpb25zIHRvIGluaGliaXQK KysgICAgbWF0Y2ggbGlzdCBzb3J0aW5nIChidXQgYmV3YXJlOiBzb21lIHRoaW5ncyBkb24ndCB3 b3JrIHJpZ2h0IGlmCisrICAgIGFwcGxpY2F0aW9ucyBkbyB0aGlzKS4KKysKKytiLiAgQSBuZXcg dmFyaWFibGUsIHJsX2NvbXBsZXRpb25faW52b2tpbmdfa2V5OyBhbGxvd3MgYXBwbGljYXRpb25z IHRvIGRpc2NvdmVyCisrICAgIHRoZSBrZXkgdGhhdCBpbnZva2VkIHJsX2NvbXBsZXRlIG9yIHJs X21lbnVfY29tcGxldGUuCisrCisrYy4gIFRoZSBmdW5jdGlvbnMgcmxfYmxvY2tfc2lnaW50IGFu ZCBybF9yZWxlYXNlX3NpZ2ludCBhcmUgbm93IHB1YmxpYyBhbmQKKysgICAgYXZhaWxhYmxlIHRv IGNhbGxpbmcgYXBwbGljYXRpb25zIHdobyB3YW50IHRvIHByb3RlY3QgY3JpdGljYWwgc2VjdGlv bnMKKysgICAgKGxpa2UgcmVkaXNwbGF5KS4KKysKKytkLiAgVGhlIGZ1bmN0aW9ucyBybF9zYXZl X3N0YXRlIGFuZCBybF9yZXN0b3JlX3N0YXRlIGFyZSBub3cgcHVibGljIGFuZAorKyAgICBhdmFp bGFibGUgdG8gY2FsbGluZyBhcHBsaWNhdGlvbnM7IGRvY3VtZW50ZWQgcmVzdCBvZiByZWFkbGlu ZSdzIHN0YXRlCisrICAgIGZsYWcgdmFsdWVzLgorKworK2UuICBBIG5ldyB1c2VyLXNldHRhYmxl IHZhcmlhYmxlLCBgaGlzdG9yeS1zaXplJywgYWxsb3dzIHNldHRpbmcgdGhlIG1heGltdW0KKysg ICAgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGhpc3RvcnkgbGlzdC4KKysKKytmLiAgVGhlcmUg aXMgYSBuZXcgaW1wbGVtZW50YXRpb24gb2YgbWVudSBjb21wbGV0aW9uLCB3aXRoIHNldmVyYWwg aW1wcm92ZW1lbnRzCisrICAgIG92ZXIgdGhlIG9sZDsgdGhlIG1vc3Qgbm90YWJsZSBpbXByb3Zl bWVudCBpcyBhIGJldHRlciBgY29tcGxldGlvbnMKKysgICAgYnJvd3NpbmcnIG1vZGUuCisrCisr Zy4gIFRoZSBtZW51IGNvbXBsZXRpb24gY29kZSBub3cgdXNlcyB0aGUgcmxfbWVudV9jb21wbGV0 aW9uX2VudHJ5X2Z1bmN0aW9uCisrICAgIHZhcmlhYmxlLCBhbGxvd2luZyBhcHBsaWNhdGlvbnMg dG8gcHJvdmlkZSB0aGVpciBvd24gbWVudSBjb21wbGV0aW9uCisrICAgIGdlbmVyYXRvcnMuCisr CisraC4gIFRoZXJlIGlzIHN1cHBvcnQgZm9yIHJlcGxhY2luZyBhIHByZWZpeCAgb2YgYSBwYXRo bmFtZSB3aXRoIGEgYC4uLicgd2hlbgorKyAgICBkaXNwbGF5aW5nIHBvc3NpYmxlIGNvbXBsZXRp b25zLiAgVGhpcyBpcyBjb250cm9sbGFibGUgYnkgc2V0dGluZyB0aGUKKysgICAgYGNvbXBsZXRp b24tcHJlZml4LWRpc3BsYXktbGVuZ3RoJyB2YXJpYWJsZS4gIE1hdGNoZXMgd2l0aCBhIGNvbW1v biBwcmVmaXgKKysgICAgbG9uZ2VyIHRoYW4gdGhpcyB2YWx1ZSBoYXZlIHRoZSBjb21tb24gcHJl Zml4IHJlcGxhY2VkIHdpdGggYC4uLicuCisrCisraS4gIFRoZXJlIGlzIGEgbmV3IGByZXZlcnQt YWxsLWF0LW5ld2xpbmUnIHZhcmlhYmxlLiAgSWYgZW5hYmxlZCwgcmVhZGxpbmUgd2lsbAorKyAg ICB1bmRvIGFsbCBvdXRzdGFuZGluZyBjaGFuZ2VzIHRvIGFsbCBoaXN0b3J5IGxpbmVzIHdoZW4g YGFjY2VwdC1saW5lJyBpcworKyAgICBleGVjdXRlZC4KKysKKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisrVGhpcyBkb2N1bWVudCBkZXRhaWxzIHRoZSBjaGFuZ2VzIGJldHdlZW4gdGhpcyB2ZXJz aW9uLCByZWFkbGluZS01LjIsCisrYW5kIHRoZSBwcmV2aW91cyB2ZXJzaW9uLCByZWFkbGluZS01 LjEuCisrCisrMS4gIENoYW5nZXMgdG8gUmVhZGxpbmUKKysKKythLiAgRml4ZWQgYSBwcm9ibGVt IHRoYXQgY2F1c2VkIHNlZ21lbnRhdGlvbiBmYXVsdHMgd2hlbiB1c2luZyByZWFkbGluZSBpbgor KyAgICBjYWxsYmFjayBtb2RlIGFuZCB0eXBpbmcgY29uc2VjdXRpdmUgREVMIGNoYXJhY3RlcnMg b24gYW4gZW1wdHkgbGluZS4KKysKKytiLiAgRml4ZWQgc2V2ZXJhbCByZWRpc3BsYXkgcHJvYmxl bXMgd2l0aCBtdWx0aWJ5dGUgY2hhcmFjdGVycywgYWxsIGhhdmluZyB0bworKyAgICBkbyB3aXRo IHRoZSBkaWZmZXJlbnQgY29kZSBwYXRocyBhbmQgdmFyaWFibGUgbWVhbmluZ3MgYmV0d2VlbiBz aW5nbGUtYnl0ZQorKyAgICBhbmQgbXVsdGlieXRlIGNoYXJhY3RlciByZWRpc3BsYXkuCisrCisr Yy4gIEZpeGVkIGEgcHJvYmxlbSB3aXRoIGtleSBzZXF1ZW5jZSB0cmFuc2xhdGlvbiB3aGVuIHBy ZXNlbnRlZCB3aXRoIHRoZQorKyAgICBzZXF1ZW5jZSBcTS1cQy14LgorKworK2QuICBGaXhlZCBh IHByb2JsZW0gdGhhdCBwcmV2ZW50ZWQgdGhlIGBhJyBjb21tYW5kIGluIHZpIG1vZGUgZnJvbSBi ZWluZworKyAgICB1bmRvbmUgYW5kIHJlZG9uZSBwcm9wZXJseS4KKysKKytlLiAgRml4ZWQgYSBw cm9ibGVtIHRoYXQgcHJldmVudGVkIGVtcHR5IGluc2VydHMgaW4gdmkgbW9kZSBmcm9tIGJlaW5n IHVuZG9uZQorKyAgICBwcm9wZXJseS4KKysKKytmLiAgRml4ZWQgYSBwcm9ibGVtIHRoYXQgY2F1 c2VkIHJlYWRsaW5lIHRvIGluaXRpYWxpemUgd2l0aCBhbiBpbmNvcnJlY3QgaWRlYQorKyAgICBv ZiB3aGV0aGVyIG9yIG5vdCB0aGUgdGVybWluYWwgY2FuIGF1dG93cmFwLgorKworK2cuICBGaXhl ZCBvdXRwdXQgb2Yga2V5IGJpbmRpbmdzIChsaWtlIGJhc2ggYGJpbmQgLXAnKSB0byBob25vciB0 aGUgc2V0dGluZyBvZgorKyAgICBjb252ZXJ0LW1ldGEgYW5kIHVzZSBcZSB3aGVyZSBhcHByb3By aWF0ZS4KKysKKytoLiAgQ2hhbmdlZCB0aGUgZGVmYXVsdCBmaWxlbmFtZSBjb21wbGV0aW9uIGZ1 bmN0aW9uIHRvIGNhbGwgdGhlIGZpbGVuYW1lCisrICAgIGRlcXVvdGluZyBmdW5jdGlvbiBpZiB0 aGUgZGlyZWN0b3J5IGNvbXBsZXRpb24gaG9vayBpc24ndCBzZXQuICBUaGlzIG1lYW5zCisrICAg IHRoYXQgYW55IGRpcmVjdG9yeSBjb21wbGV0aW9uIGhvb2tzIG5lZWQgdG8gZGVxdW90ZSB0aGUg ZGlyZWN0b3J5IG5hbWUsCisrICAgIHNpbmNlIGFwcGxpY2F0aW9uLXNwZWNpZmljIGhvb2tzIG5l ZWQgdG8ga25vdyBob3cgdGhlIHdvcmQgd2FzIHF1b3RlZCwKKysgICAgZXZlbiBpZiBubyBvdGhl ciBjaGFuZ2VzIGFyZSBtYWRlLgorKworK2kuICBGaXhlZCBhIGJ1ZyB3aXRoIGNyZWF0aW5nIHRo ZSBwcm9tcHQgZm9yIGEgbm9uLWludGVyYWN0aXZlIHNlYXJjaCBzdHJpbmcKKysgICAgd2hlbiB0 aGVyZSBhcmUgbm9uLXByaW50aW5nIGNoYXJhY3RlcnMgaW4gdGhlIHByaW1hcnkgcHJvbXB0Lgor KworK2ouICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCBwcm9tcHRzIHdpdGggaW52aXNpYmxlIGNo YXJhY3RlcnMgdG8gYmUgcmVkcmF3bgorKyAgICBtdWx0aXBsZSB0aW1lcyBpbiBhIG11bHRpYnl0 ZSBsb2NhbGUuCisrCisray4gIEZpeGVkIGEgYnVnIHRoYXQgY291bGQgY2F1c2UgdGhlIGtleSBz ZXF1ZW5jZSBzY2FubmluZyBjb2RlIHRvIHJldHVybiB0aGUKKysgICAgd3JvbmcgZnVuY3Rpb24u CisrCisrbC4gIEZpeGVkIGEgcHJvYmxlbSB3aXRoIHRoZSBjYWxsYmFjayBpbnRlcmZhY2UgdGhh dCBjYXVzZWQgaXQgdG8gZmFpbCB3aGVuCisrICAgIHVzaW5nIG11bHRpLWNoYXJhY3RlciBrZXli b2FyZCBtYWNyb3MuCisrCisrbS4gIEZpeGVkIGEgYnVnIHRoYXQgY291bGQgY2F1c2UgYSBjb3Jl IGR1bXAgd2hlbiBhbiBlZGl0ZWQgaGlzdG9yeSBlbnRyeSB3YXMKKysgICAgcmUtZXhlY3V0ZWQg dW5kZXIgY2VydGFpbiBjb25kaXRpb25zLgorKworK24uICBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNl ZCByZWFkbGluZSB0byByZWZlcmVuY2UgZnJlZWQgbWVtb3J5IHdoZW4gYXR0bXB0aW5nCisrICAg IHRvIGRpc3BsYXkgYSBwb3J0aW9uIG9mIHRoZSBwcm9tcHQuCisrCisrby4gIEZpeGVkIGEgYnVn IHdpdGggcHJvbXB0IHJlZGlzcGxheSBpbiBhIG11bHRpLWJ5dGUgbG9jYWxlIHRvIGF2b2lkIHJl ZHJhd2luZworKyAgICB0aGUgcHJvbXB0IGFuZCBpbnB1dCBsaW5lIG11bHRpcGxlIHRpbWVzLgor KworK3AuICBGaXhlZCBoaXN0b3J5IGV4cGFuc2lvbiB0byBub3QgYmUgY29uZnVzZWQgYnkgaGVy ZS1zdHJpbmcgcmVkaXJlY3Rpb24uCisrCisrcS4gIFJlYWRsaW5lIG5vIGxvbmdlciB0cmVhdHMg cmVhZCBlcnJvcnMgYnkgY29udmVydGluZyB0aGVtIHRvIG5ld2xpbmVzLCBhcworKyAgICBpdCBk b2VzIHdpdGggRU9GLiAgVGhpcyBjYXVzZWQgcGFydGlhbCBsaW5lcyB0byBiZSByZXR1cm5lZCBm cm9tIHJlYWRsaW5lKCkuCisrCisrci4gIEZpeGVkIGEgcmVkaXNwbGF5IGJ1ZyB0aGF0IG9jY3Vy cmVkIGluIG11bHRpYnl0ZS1jYXBhYmxlIGxvY2FsZXMgd2hlbiB0aGUKKysgICAgcHJvbXB0IHdh cyBvbmUgY2hhcmFjdGVyIGxvbmdlciB0aGFuIHRoZSBzY3JlZW4gd2lkdGguCisrCisrMi4gIE5l dyBGZWF0dXJlcyBpbiBSZWFkbGluZQorKworK2EuICBDYWxsaW5nIGFwcGxpY2F0aW9ucyBjYW4g bm93IHNldCB0aGUga2V5Ym9hcmQgdGltZW91dCB0byAwLCBhbGxvd2luZworKyAgICBwb2xsLWxp a2UgYmVoYXZpb3IuCisrCisrYi4gIFRoZSB2YWx1ZSBvZiBTWVNfSU5QVVRSQyAoY29uZmlndXJh YmxlIGF0IGNvbXBpbGF0aW9uIHRpbWUpIGlzIG5vdyB1c2VkIGFzCisrICAgIHRoZSBkZWZhdWx0 IGxhc3QtZGl0Y2ggc3RhcnR1cCBmaWxlLgorKworK2MuICBUaGUgaGlzdG9yeSBmaWxlIHJlYWRp bmcgZnVuY3Rpb25zIG5vdyBhbGxvdyB3aW5kb3dzLWxpa2UgXHJcbiBsaW5lCisrICAgIHRlcm1p bmF0b3JzLgorKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBUaGlzIGRvY3VtZW50IGRldGFp bHMgdGhlIGNoYW5nZXMgYmV0d2VlbiB0aGlzIHZlcnNpb24sIHJlYWRsaW5lLTUuMSwKKyBhbmQg dGhlIHByZXZpb3VzIHZlcnNpb24sIHJlYWRsaW5lLTUuMC4KKyAKKy0tLSBhL3JlYWRsaW5lL0NP UFlJTkcKKysrKyBiL3JlYWRsaW5lL0NPUFlJTkcKK0BAIC0xLDI4NSArMSw2MjYgQEAKKy0JCSAg ICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQorLQkJICAgICAgIFZlcnNpb24gMiwgSnVuZSAx OTkxCisrICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQorKyAg ICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAzLCAyOSBKdW5lIDIwMDcKKyAKKy0gQ29weXJp Z2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rvbiwg TUEgMDIxMTEgVVNBCisrIENvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4gPGh0dHA6Ly9mc2Yub3JnLz4KKyAgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNv cHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgIG9mIHRoaXMgbGljZW5zZSBkb2N1 bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgorIAorLQkJCSAgICBQcmVhbWJs ZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVhbWJsZQorIAorLSAgVGhlIGxpY2Vu c2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgorLWZy ZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVy YWwgUHVibGljCistTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9t IHRvIHNoYXJlIGFuZCBjaGFuZ2UgZnJlZQorLXNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNv ZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCistR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcHBsaWVzIHRvIG1vc3Qgb2YgdGhlIEZyZWUgU29mdHdhcmUKKy1Gb3VuZGF0aW9u J3Mgc29mdHdhcmUgYW5kIHRvIGFueSBvdGhlciBwcm9ncmFtIHdob3NlIGF1dGhvcnMgY29tbWl0 IHRvCistdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29m dHdhcmUgaXMgY292ZXJlZCBieQorLXRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bworKyAgVGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGlzIGEgZnJlZSwgY29weWxlZnQgbGljZW5zZSBmb3IKKytzb2Z0d2FyZSBh bmQgb3RoZXIga2luZHMgb2Ygd29ya3MuCisrCisrICBUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29m dHdhcmUgYW5kIG90aGVyIHByYWN0aWNhbCB3b3JrcyBhcmUgZGVzaWduZWQKKyt0byB0YWtlIGF3 YXkgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgdGhlIHdvcmtzLiAgQnkgY29udHJh c3QsCisrdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJh bnRlZSB5b3VyIGZyZWVkb20gdG8KKytzaGFyZSBhbmQgY2hhbmdlIGFsbCB2ZXJzaW9ucyBvZiBh IHByb2dyYW0tLXRvIG1ha2Ugc3VyZSBpdCByZW1haW5zIGZyZWUKKytzb2Z0d2FyZSBmb3IgYWxs IGl0cyB1c2Vycy4gIFdlLCB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB1c2UgdGhlCisr R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vc3Qgb2Ygb3VyIHNvZnR3YXJlOyBpdCBh cHBsaWVzIGFsc28gdG8KKythbnkgb3RoZXIgd29yayByZWxlYXNlZCB0aGlzIHdheSBieSBpdHMg YXV0aG9ycy4gIFlvdSBjYW4gYXBwbHkgaXQgdG8KKyB5b3VyIHByb2dyYW1zLCB0b28uCisgCisg ICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJl ZWRvbSwgbm90CisgcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2ln bmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQorIGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0 ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3IKKy10aGlzIHNlcnZpY2Ug aWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQK Ky1pZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNl IHBpZWNlcyBvZiBpdAorLWluIG5ldyBmcmVlIHByb2dyYW1zOyBhbmQgdGhhdCB5b3Uga25vdyB5 b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy4KKyt0aGVtIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVj ZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0IGl0IGlmIHlvdQorK3dhbnQgaXQsIHRoYXQgeW91 IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3CisrZnJl ZSBwcm9ncmFtcywgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCisg CistICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25z IHRoYXQgZm9yYmlkCistYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sg eW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgorLVRoZXNlIHJlc3RyaWN0aW9ucyB0cmFuc2xh dGUgdG8gY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIGZvciB5b3UgaWYgeW91CistZGlzdHJpYnV0 ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgorKyAgVG8gcHJv dGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBwcmV2ZW50IG90aGVycyBmcm9tIGRlbnlpbmcg eW91CisrdGhlc2UgcmlnaHRzIG9yIGFza2luZyB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMu ICBUaGVyZWZvcmUsIHlvdSBoYXZlCisrY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIGlmIHlvdSBk aXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmCisreW91IG1vZGlmeSBpdDog cmVzcG9uc2liaWxpdGllcyB0byByZXNwZWN0IHRoZSBmcmVlZG9tIG9mIG90aGVycy4KKyAKKyAg IEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0s IHdoZXRoZXIKKy1ncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGll bnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQKKy15b3UgaGF2ZS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0 aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQorLXNvdXJjZSBjb2RlLiAgQW5k IHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKKy1yaWdo dHMuCistCistICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29w eXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCistKDIpIG9mZmVyIHlvdSB0aGlzIGxpY2Vuc2Ugd2hp Y2ggZ2l2ZXMgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwKKy1kaXN0cmlidXRlIGFuZC9v ciBtb2RpZnkgdGhlIHNvZnR3YXJlLgorLQorLSAgQWxzbywgZm9yIGVhY2ggYXV0aG9yJ3MgcHJv dGVjdGlvbiBhbmQgb3Vycywgd2Ugd2FudCB0byBtYWtlIGNlcnRhaW4KKy10aGF0IGV2ZXJ5b25l IHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQorLXNv ZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQg cGFzc2VkIG9uLCB3ZQorLXdhbnQgaXRzIHJlY2lwaWVudHMgdG8ga25vdyB0aGF0IHdoYXQgdGhl eSBoYXZlIGlzIG5vdCB0aGUgb3JpZ2luYWwsIHNvCistdGhhdCBhbnkgcHJvYmxlbXMgaW50cm9k dWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwKKy1hdXRob3Jz JyByZXB1dGF0aW9ucy4KKy0KKy0gIEZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0 ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCistcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQg dGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQorLXByb2dyYW0gd2lsbCBp bmRpdmlkdWFsbHkgb2J0YWluIHBhdGVudCBsaWNlbnNlcywgaW4gZWZmZWN0IG1ha2luZyB0aGUK Ky1wcm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBoYXZlIG1hZGUgaXQg Y2xlYXIgdGhhdCBhbnkKKy1wYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBm cmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgorK2dyYXRpcyBvciBmb3IgYSBmZWUsIHlv dSBtdXN0IHBhc3Mgb24gdG8gdGhlIHJlY2lwaWVudHMgdGhlIHNhbWUKKytmcmVlZG9tcyB0aGF0 IHlvdSByZWNlaXZlZC4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2 ZQorK29yIGNhbiBnZXQgdGhlIHNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0 aGVzZSB0ZXJtcyBzbyB0aGV5Cisra25vdyB0aGVpciByaWdodHMuCisrCisrICBEZXZlbG9wZXJz IHRoYXQgdXNlIHRoZSBHTlUgR1BMIHByb3RlY3QgeW91ciByaWdodHMgd2l0aCB0d28gc3RlcHM6 CisrKDEpIGFzc2VydCBjb3B5cmlnaHQgb24gdGhlIHNvZnR3YXJlLCBhbmQgKDIpIG9mZmVyIHlv dSB0aGlzIExpY2Vuc2UKKytnaXZpbmcgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwgZGlz dHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IGl0LgorKworKyAgRm9yIHRoZSBkZXZlbG9wZXJzJyBhbmQg YXV0aG9ycycgcHJvdGVjdGlvbiwgdGhlIEdQTCBjbGVhcmx5IGV4cGxhaW5zCisrdGhhdCB0aGVy ZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlIHNvZnR3YXJlLiAgRm9yIGJvdGggdXNlcnMn IGFuZAorK2F1dGhvcnMnIHNha2UsIHRoZSBHUEwgcmVxdWlyZXMgdGhhdCBtb2RpZmllZCB2ZXJz aW9ucyBiZSBtYXJrZWQgYXMKKytjaGFuZ2VkLCBzbyB0aGF0IHRoZWlyIHByb2JsZW1zIHdpbGwg bm90IGJlIGF0dHJpYnV0ZWQgZXJyb25lb3VzbHkgdG8KKythdXRob3JzIG9mIHByZXZpb3VzIHZl cnNpb25zLgorKworKyAgU29tZSBkZXZpY2VzIGFyZSBkZXNpZ25lZCB0byBkZW55IHVzZXJzIGFj Y2VzcyB0byBpbnN0YWxsIG9yIHJ1bgorK21vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2Fy ZSBpbnNpZGUgdGhlbSwgYWx0aG91Z2ggdGhlIG1hbnVmYWN0dXJlcgorK2NhbiBkbyBzby4gIFRo aXMgaXMgZnVuZGFtZW50YWxseSBpbmNvbXBhdGlibGUgd2l0aCB0aGUgYWltIG9mCisrcHJvdGVj dGluZyB1c2VycycgZnJlZWRvbSB0byBjaGFuZ2UgdGhlIHNvZnR3YXJlLiAgVGhlIHN5c3RlbWF0 aWMKKytwYXR0ZXJuIG9mIHN1Y2ggYWJ1c2Ugb2NjdXJzIGluIHRoZSBhcmVhIG9mIHByb2R1Y3Rz IGZvciBpbmRpdmlkdWFscyB0bworK3VzZSwgd2hpY2ggaXMgcHJlY2lzZWx5IHdoZXJlIGl0IGlz IG1vc3QgdW5hY2NlcHRhYmxlLiAgVGhlcmVmb3JlLCB3ZQorK2hhdmUgZGVzaWduZWQgdGhpcyB2 ZXJzaW9uIG9mIHRoZSBHUEwgdG8gcHJvaGliaXQgdGhlIHByYWN0aWNlIGZvciB0aG9zZQorK3By b2R1Y3RzLiAgSWYgc3VjaCBwcm9ibGVtcyBhcmlzZSBzdWJzdGFudGlhbGx5IGluIG90aGVyIGRv bWFpbnMsIHdlCisrc3RhbmQgcmVhZHkgdG8gZXh0ZW5kIHRoaXMgcHJvdmlzaW9uIHRvIHRob3Nl IGRvbWFpbnMgaW4gZnV0dXJlIHZlcnNpb25zCisrb2YgdGhlIEdQTCwgYXMgbmVlZGVkIHRvIHBy b3RlY3QgdGhlIGZyZWVkb20gb2YgdXNlcnMuCisrCisrICBGaW5hbGx5LCBldmVyeSBwcm9ncmFt IGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZSBwYXRlbnRzLgorK1N0YXRlcyBz aG91bGQgbm90IGFsbG93IHBhdGVudHMgdG8gcmVzdHJpY3QgZGV2ZWxvcG1lbnQgYW5kIHVzZSBv ZgorK3NvZnR3YXJlIG9uIGdlbmVyYWwtcHVycG9zZSBjb21wdXRlcnMsIGJ1dCBpbiB0aG9zZSB0 aGF0IGRvLCB3ZSB3aXNoIHRvCisrYXZvaWQgdGhlIHNwZWNpYWwgZGFuZ2VyIHRoYXQgcGF0ZW50 cyBhcHBsaWVkIHRvIGEgZnJlZSBwcm9ncmFtIGNvdWxkCisrbWFrZSBpdCBlZmZlY3RpdmVseSBw cm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgdGhlIEdQTCBhc3N1cmVzIHRoYXQKKytwYXRl bnRzIGNhbm5vdCBiZSB1c2VkIHRvIHJlbmRlciB0aGUgcHJvZ3JhbSBub24tZnJlZS4KKyAKKyAg IFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRp b24gYW5kCisgbW9kaWZpY2F0aW9uIGZvbGxvdy4KKy0MCistCQkgICAgR05VIEdFTkVSQUwgUFVC TElDIExJQ0VOU0UKKy0gICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJ QlVUSU9OIEFORCBNT0RJRklDQVRJT04KKy0KKy0gIDAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRv IGFueSBwcm9ncmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMKKy1hIG5vdGljZSBwbGFj ZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAor LXVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGUgIlBy b2dyYW0iLCBiZWxvdywKKy1yZWZlcnMgdG8gYW55IHN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQg YSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIKKy1tZWFucyBlaXRoZXIgdGhlIFByb2dyYW0g b3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3OgorLXRoYXQgaXMgdG8g c2F5LCBhIHdvcmsgY29udGFpbmluZyB0aGUgUHJvZ3JhbSBvciBhIHBvcnRpb24gb2YgaXQsCist ZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBp bnRvIGFub3RoZXIKKy1sYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5j bHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCistdGhlIHRlcm0gIm1vZGlmaWNhdGlvbiIuKSAg RWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuCistCistQWN0aXZpdGllcyBvdGhl ciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKKy1j b3ZlcmVkIGJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUgb3V0c2lkZSBpdHMgc2NvcGUuICBUaGUg YWN0IG9mCistcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIHRoZSBv dXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQorLWlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMg Y29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlCistUHJvZ3JhbSAoaW5kZXBlbmRlbnQgb2Yg aGF2aW5nIGJlZW4gbWFkZSBieSBydW5uaW5nIHRoZSBQcm9ncmFtKS4KKy1XaGV0aGVyIHRoYXQg aXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KKy0KKy0gIDEuIFlvdSBt YXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncwor LXNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0 aGF0IHlvdQorLWNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNo IGNvcHkgYW4gYXBwcm9wcmlhdGUKKy1jb3B5cmlnaHQgbm90aWNlIGFuZCBkaXNjbGFpbWVyIG9m IHdhcnJhbnR5OyBrZWVwIGludGFjdCBhbGwgdGhlCistbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRo aXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5OworLWFuZCBnaXZl IGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vu c2UKKy1hbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgorLQorLVlvdSBtYXkgY2hhcmdlIGEgZmVlIGZv ciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZAorLXlvdSBtYXkg YXQgeW91ciBvcHRpb24gb2ZmZXIgd2FycmFudHkgcHJvdGVjdGlvbiBpbiBleGNoYW5nZSBmb3Ig YSBmZWUuCistCistICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRo ZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCistb2YgaXQsIHRodXMgZm9ybWluZyBhIHdvcmsgYmFz ZWQgb24gdGhlIFByb2dyYW0sIGFuZCBjb3B5IGFuZAorLWRpc3RyaWJ1dGUgc3VjaCBtb2RpZmlj YXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQorLWFib3ZlLCBwcm92 aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CistCistICAg IGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQg bm90aWNlcworLSAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUg ZGF0ZSBvZiBhbnkgY2hhbmdlLgorLQorLSAgICBiKSBZb3UgbXVzdCBjYXVzZSBhbnkgd29yayB0 aGF0IHlvdSBkaXN0cmlidXRlIG9yIHB1Ymxpc2gsIHRoYXQgaW4KKy0gICAgd2hvbGUgb3IgaW4g cGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55CistICAg IHBhcnQgdGhlcmVvZiwgdG8gYmUgbGljZW5zZWQgYXMgYSB3aG9sZSBhdCBubyBjaGFyZ2UgdG8g YWxsIHRoaXJkCistICAgIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4K Ky0KKy0gICAgYykgSWYgdGhlIG1vZGlmaWVkIHByb2dyYW0gbm9ybWFsbHkgcmVhZHMgY29tbWFu ZHMgaW50ZXJhY3RpdmVseQorLSAgICB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQsIHdoZW4g c3RhcnRlZCBydW5uaW5nIGZvciBzdWNoCistICAgIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9z dCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4KKy0gICAgYW5ub3VuY2VtZW50 IGluY2x1ZGluZyBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBhCistICAgIG5v dGljZSB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IChvciBlbHNlLCBzYXlpbmcgdGhhdCB5b3Ug cHJvdmlkZQorLSAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRl IHRoZSBwcm9ncmFtIHVuZGVyCistICAgIHRoZXNlIGNvbmRpdGlvbnMsIGFuZCB0ZWxsaW5nIHRo ZSB1c2VyIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzCistICAgIExpY2Vuc2UuICAoRXhjZXB0 aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0CistICAgIGRvZXMg bm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQg b24KKy0gICAgdGhlIFByb2dyYW0gaXMgbm90IHJlcXVpcmVkIHRvIHByaW50IGFuIGFubm91bmNl bWVudC4pCistDAorLVRoZXNlIHJlcXVpcmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29y ayBhcyBhIHdob2xlLiAgSWYKKy1pZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFy ZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAorLWFuZCBjYW4gYmUgcmVhc29uYWJseSBj b25zaWRlcmVkIGluZGVwZW5kZW50IGFuZCBzZXBhcmF0ZSB3b3JrcyBpbgorLXRoZW1zZWx2ZXMs IHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBub3QgYXBwbHkgdG8gdGhvc2UK Ky1zZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBC dXQgd2hlbiB5b3UKKy1kaXN0cmlidXRlIHRoZSBzYW1lIHNlY3Rpb25zIGFzIHBhcnQgb2YgYSB3 aG9sZSB3aGljaCBpcyBhIHdvcmsgYmFzZWQKKy1vbiB0aGUgUHJvZ3JhbSwgdGhlIGRpc3RyaWJ1 dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVybXMgb2YKKy10aGlzIExpY2Vuc2Us IHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQorLWVu dGlyZSB3aG9sZSwgYW5kIHRodXMgdG8gZWFjaCBhbmQgZXZlcnkgcGFydCByZWdhcmRsZXNzIG9m IHdobyB3cm90ZSBpdC4KKy0KKy1UaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNl Y3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKKy15b3VyIHJpZ2h0cyB0byB3b3JrIHdy aXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8KKy1leGVyY2lz ZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3IK Ky1jb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgorLQorLUluIGFkZGl0aW9u LCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3QgYmFzZWQgb24gdGhlIFByb2dy YW0KKy13aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3Jh bSkgb24gYSB2b2x1bWUgb2YKKy1hIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2Vz IG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcgorLXRoZSBzY29wZSBvZiB0aGlzIExpY2Vu c2UuCistCistICAzLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9y IGEgd29yayBiYXNlZCBvbiBpdCwKKy11bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9y IGV4ZWN1dGFibGUgZm9ybSB1bmRlciB0aGUgdGVybXMgb2YKKy1TZWN0aW9ucyAxIGFuZCAyIGFi b3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CistCist ICAgIGEpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hp bmUtcmVhZGFibGUKKy0gICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQg dW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCistICAgIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRp dW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAorLQorLSAg ICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFz dCB0aHJlZQorLSAgICB5ZWFycywgdG8gZ2l2ZSBhbnkgdGhpcmQgcGFydHksIGZvciBhIGNoYXJn ZSBubyBtb3JlIHRoYW4geW91cgorLSAgICBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyBz b3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlCistICAgIG1hY2hpbmUtcmVhZGFibGUgY29w eSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKKy0gICAgZGlzdHJpYnV0 ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0K Ky0gICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAorLQor LSAgICBjKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IHJlY2VpdmVkIGFz IHRvIHRoZSBvZmZlcgorLSAgICB0byBkaXN0cmlidXRlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNv ZGUuICAoVGhpcyBhbHRlcm5hdGl2ZSBpcworLSAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1l cmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQorLSAgICByZWNlaXZlZCB0aGUgcHJv Z3JhbSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gd2l0aCBzdWNoCistICAgIGFu IG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBTdWJzZWN0aW9uIGIgYWJvdmUuKQorLQorLVRoZSBzb3Vy Y2UgY29kZSBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yayBm b3IKKy1tYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhbiBleGVjdXRhYmxlIHdvcmss IGNvbXBsZXRlIHNvdXJjZQorLWNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxs IG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55CistYXNzb2NpYXRlZCBpbnRlcmZhY2UgZGVm aW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2NyaXB0cyB1c2VkIHRvCistY29udHJvbCBjb21waWxh dGlvbiBhbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBleGVjdXRhYmxlLiAgSG93ZXZlciwgYXMgYQor LXNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3Qg aW5jbHVkZQorLWFueXRoaW5nIHRoYXQgaXMgbm9ybWFsbHkgZGlzdHJpYnV0ZWQgKGluIGVpdGhl ciBzb3VyY2Ugb3IgYmluYXJ5CistZm9ybSkgd2l0aCB0aGUgbWFqb3IgY29tcG9uZW50cyAoY29t cGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBvZiB0aGUKKy1vcGVyYXRpbmcgc3lzdGVtIG9uIHdo aWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudAorLWl0c2VsZiBh Y2NvbXBhbmllcyB0aGUgZXhlY3V0YWJsZS4KKy0KKy1JZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0 YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCistYWNjZXNzIHRvIGNvcHkg ZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudAorLWFjY2Vz cyB0byBjb3B5IHRoZSBzb3VyY2UgY29kZSBmcm9tIHRoZSBzYW1lIHBsYWNlIGNvdW50cyBhcwor LWRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRp ZXMgYXJlIG5vdAorLWNvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2UgYWxvbmcgd2l0aCB0aGUg b2JqZWN0IGNvZGUuCistDAorLSAgNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNl bnNlLCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCistZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92 aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdAorLW90aGVyd2lzZSB0byBjb3B5 LCBtb2RpZnksIHN1YmxpY2Vuc2Ugb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBpcworLXZvaWQs IGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMg TGljZW5zZS4KKy1Ib3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3Ig cmlnaHRzLCBmcm9tIHlvdSB1bmRlcgorLXRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWly IGxpY2Vuc2VzIHRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoCistcGFydGllcyByZW1haW4gaW4g ZnVsbCBjb21wbGlhbmNlLgorLQorLSAgNS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0 IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90Cistc2lnbmVkIGl0LiAgSG93ZXZlciwg bm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKKy1kaXN0cmli dXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBh cmUKKy1wcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2Uu ICBUaGVyZWZvcmUsIGJ5CistbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAo b3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCistUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFj Y2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKKy1hbGwgaXRzIHRlcm1zIGFu ZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nCistdGhl IFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCistCistICA2LiBFYWNoIHRpbWUgeW91IHJl ZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlCistUHJvZ3Jh bSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0 aGUKKy1vcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUg UHJvZ3JhbSBzdWJqZWN0IHRvCistdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuICBZb3UgbWF5 IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIKKy1yZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMn IGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCistWW91IGFyZSBub3QgcmVz cG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KKysK KysgICAgICAgICAgICAgICAgICAgICAgIFRFUk1TIEFORCBDT05ESVRJT05TCisrCisrICAwLiBE ZWZpbml0aW9ucy4KKysKKysgICJUaGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9uIDMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorKworKyAgIkNvcHlyaWdodCIgYWxzbyBt ZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8gb3RoZXIga2luZHMgb2YKKyt3 b3Jrcywgc3VjaCBhcyBzZW1pY29uZHVjdG9yIG1hc2tzLgorKworKyAgIlRoZSBQcm9ncmFtIiBy ZWZlcnMgdG8gYW55IGNvcHlyaWdodGFibGUgd29yayBsaWNlbnNlZCB1bmRlciB0aGlzCisrTGlj ZW5zZS4gIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLiAgIkxpY2Vuc2VlcyIg YW5kCisrInJlY2lwaWVudHMiIG1heSBiZSBpbmRpdmlkdWFscyBvciBvcmdhbml6YXRpb25zLgor KworKyAgVG8gIm1vZGlmeSIgYSB3b3JrIG1lYW5zIHRvIGNvcHkgZnJvbSBvciBhZGFwdCBhbGwg b3IgcGFydCBvZiB0aGUgd29yaworK2luIGEgZmFzaGlvbiByZXF1aXJpbmcgY29weXJpZ2h0IHBl cm1pc3Npb24sIG90aGVyIHRoYW4gdGhlIG1ha2luZyBvZiBhbgorK2V4YWN0IGNvcHkuICBUaGUg cmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgIm1vZGlmaWVkIHZlcnNpb24iIG9mIHRoZQorK2Vh cmxpZXIgd29yayBvciBhIHdvcmsgImJhc2VkIG9uIiB0aGUgZWFybGllciB3b3JrLgorKworKyAg QSAiY292ZXJlZCB3b3JrIiBtZWFucyBlaXRoZXIgdGhlIHVubW9kaWZpZWQgUHJvZ3JhbSBvciBh IHdvcmsgYmFzZWQKKytvbiB0aGUgUHJvZ3JhbS4KKysKKysgIFRvICJwcm9wYWdhdGUiIGEgd29y ayBtZWFucyB0byBkbyBhbnl0aGluZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQKKytwZXJtaXNzaW9u LCB3b3VsZCBtYWtlIHlvdSBkaXJlY3RseSBvciBzZWNvbmRhcmlseSBsaWFibGUgZm9yCisraW5m cmluZ2VtZW50IHVuZGVyIGFwcGxpY2FibGUgY29weXJpZ2h0IGxhdywgZXhjZXB0IGV4ZWN1dGlu ZyBpdCBvbiBhCisrY29tcHV0ZXIgb3IgbW9kaWZ5aW5nIGEgcHJpdmF0ZSBjb3B5LiAgUHJvcGFn YXRpb24gaW5jbHVkZXMgY29weWluZywKKytkaXN0cmlidXRpb24gKHdpdGggb3Igd2l0aG91dCBt b2RpZmljYXRpb24pLCBtYWtpbmcgYXZhaWxhYmxlIHRvIHRoZQorK3B1YmxpYywgYW5kIGluIHNv bWUgY291bnRyaWVzIG90aGVyIGFjdGl2aXRpZXMgYXMgd2VsbC4KKysKKysgIFRvICJjb252ZXki IGEgd29yayBtZWFucyBhbnkga2luZCBvZiBwcm9wYWdhdGlvbiB0aGF0IGVuYWJsZXMgb3RoZXIK KytwYXJ0aWVzIHRvIG1ha2Ugb3IgcmVjZWl2ZSBjb3BpZXMuICBNZXJlIGludGVyYWN0aW9uIHdp dGggYSB1c2VyIHRocm91Z2gKKythIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJhbnNmZXIg b2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLgorKworKyAgQW4gaW50ZXJhY3RpdmUgdXNlciBp bnRlcmZhY2UgZGlzcGxheXMgIkFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXMiCisrdG8gdGhlIGV4 dGVudCB0aGF0IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWluZW50bHkgdmlzaWJs ZQorK2ZlYXR1cmUgdGhhdCAoMSkgZGlzcGxheXMgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5v dGljZSwgYW5kICgyKQorK3RlbGxzIHRoZSB1c2VyIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkg Zm9yIHRoZSB3b3JrIChleGNlcHQgdG8gdGhlCisrZXh0ZW50IHRoYXQgd2FycmFudGllcyBhcmUg cHJvdmlkZWQpLCB0aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQorK3dvcmsgdW5kZXIgdGhp cyBMaWNlbnNlLCBhbmQgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmCisr dGhlIGludGVyZmFjZSBwcmVzZW50cyBhIGxpc3Qgb2YgdXNlciBjb21tYW5kcyBvciBvcHRpb25z LCBzdWNoIGFzIGEKKyttZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBsaXN0IG1lZXRzIHRo aXMgY3JpdGVyaW9uLgorKworKyAgMS4gU291cmNlIENvZGUuCisrCisrICBUaGUgInNvdXJjZSBj b2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yaworK2Zv ciBtYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gICJPYmplY3QgY29kZSIgbWVhbnMgYW55IG5v bi1zb3VyY2UKKytmb3JtIG9mIGEgd29yay4KKysKKysgIEEgIlN0YW5kYXJkIEludGVyZmFjZSIg bWVhbnMgYW4gaW50ZXJmYWNlIHRoYXQgZWl0aGVyIGlzIGFuIG9mZmljaWFsCisrc3RhbmRhcmQg ZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUgY2FzZSBv ZgorK2ludGVyZmFjZXMgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgcHJvZ3JhbW1pbmcgbGFu Z3VhZ2UsIG9uZSB0aGF0CisraXMgd2lkZWx5IHVzZWQgYW1vbmcgZGV2ZWxvcGVycyB3b3JraW5n IGluIHRoYXQgbGFuZ3VhZ2UuCisrCisrICBUaGUgIlN5c3RlbSBMaWJyYXJpZXMiIG9mIGFuIGV4 ZWN1dGFibGUgd29yayBpbmNsdWRlIGFueXRoaW5nLCBvdGhlcgorK3RoYW4gdGhlIHdvcmsgYXMg YSB3aG9sZSwgdGhhdCAoYSkgaXMgaW5jbHVkZWQgaW4gdGhlIG5vcm1hbCBmb3JtIG9mCisrcGFj a2FnaW5nIGEgTWFqb3IgQ29tcG9uZW50LCBidXQgd2hpY2ggaXMgbm90IHBhcnQgb2YgdGhhdCBN YWpvcgorK0NvbXBvbmVudCwgYW5kIChiKSBzZXJ2ZXMgb25seSB0byBlbmFibGUgdXNlIG9mIHRo ZSB3b3JrIHdpdGggdGhhdAorK01ham9yIENvbXBvbmVudCwgb3IgdG8gaW1wbGVtZW50IGEgU3Rh bmRhcmQgSW50ZXJmYWNlIGZvciB3aGljaCBhbgorK2ltcGxlbWVudGF0aW9uIGlzIGF2YWlsYWJs ZSB0byB0aGUgcHVibGljIGluIHNvdXJjZSBjb2RlIGZvcm0uICBBCisrIk1ham9yIENvbXBvbmVu dCIsIGluIHRoaXMgY29udGV4dCwgbWVhbnMgYSBtYWpvciBlc3NlbnRpYWwgY29tcG9uZW50Cisr KGtlcm5lbCwgd2luZG93IHN5c3RlbSwgYW5kIHNvIG9uKSBvZiB0aGUgc3BlY2lmaWMgb3BlcmF0 aW5nIHN5c3RlbQorKyhpZiBhbnkpIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHdvcmsgcnVucywg b3IgYSBjb21waWxlciB1c2VkIHRvCisrcHJvZHVjZSB0aGUgd29yaywgb3IgYW4gb2JqZWN0IGNv ZGUgaW50ZXJwcmV0ZXIgdXNlZCB0byBydW4gaXQuCisrCisrICBUaGUgIkNvcnJlc3BvbmRpbmcg U291cmNlIiBmb3IgYSB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gbWVhbnMgYWxsCisrdGhlIHNv dXJjZSBjb2RlIG5lZWRlZCB0byBnZW5lcmF0ZSwgaW5zdGFsbCwgYW5kIChmb3IgYW4gZXhlY3V0 YWJsZQorK3dvcmspIHJ1biB0aGUgb2JqZWN0IGNvZGUgYW5kIHRvIG1vZGlmeSB0aGUgd29yaywg aW5jbHVkaW5nIHNjcmlwdHMgdG8KKytjb250cm9sIHRob3NlIGFjdGl2aXRpZXMuICBIb3dldmVy LCBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB3b3JrJ3MKKytTeXN0ZW0gTGlicmFyaWVzLCBvciBn ZW5lcmFsLXB1cnBvc2UgdG9vbHMgb3IgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmcmVlCisrcHJvZ3Jh bXMgd2hpY2ggYXJlIHVzZWQgdW5tb2RpZmllZCBpbiBwZXJmb3JtaW5nIHRob3NlIGFjdGl2aXRp ZXMgYnV0Cisrd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSB3b3JrLiAgRm9yIGV4YW1wbGUsIENv cnJlc3BvbmRpbmcgU291cmNlCisraW5jbHVkZXMgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMg YXNzb2NpYXRlZCB3aXRoIHNvdXJjZSBmaWxlcyBmb3IKKyt0aGUgd29yaywgYW5kIHRoZSBzb3Vy Y2UgY29kZSBmb3Igc2hhcmVkIGxpYnJhcmllcyBhbmQgZHluYW1pY2FsbHkKKytsaW5rZWQgc3Vi cHJvZ3JhbXMgdGhhdCB0aGUgd29yayBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gcmVxdWly ZSwKKytzdWNoIGFzIGJ5IGludGltYXRlIGRhdGEgY29tbXVuaWNhdGlvbiBvciBjb250cm9sIGZs b3cgYmV0d2VlbiB0aG9zZQorK3N1YnByb2dyYW1zIGFuZCBvdGhlciBwYXJ0cyBvZiB0aGUgd29y ay4KKysKKysgIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBuZWVkIG5vdCBpbmNsdWRlIGFueXRo aW5nIHRoYXQgdXNlcnMKKytjYW4gcmVnZW5lcmF0ZSBhdXRvbWF0aWNhbGx5IGZyb20gb3RoZXIg cGFydHMgb2YgdGhlIENvcnJlc3BvbmRpbmcKKytTb3VyY2UuCisrCisrICBUaGUgQ29ycmVzcG9u ZGluZyBTb3VyY2UgZm9yIGEgd29yayBpbiBzb3VyY2UgY29kZSBmb3JtIGlzIHRoYXQKKytzYW1l IHdvcmsuCisrCisrICAyLiBCYXNpYyBQZXJtaXNzaW9ucy4KKysKKysgIEFsbCByaWdodHMgZ3Jh bnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgYXJlIGdyYW50ZWQgZm9yIHRoZSB0ZXJtIG9mCisrY29w eXJpZ2h0IG9uIHRoZSBQcm9ncmFtLCBhbmQgYXJlIGlycmV2b2NhYmxlIHByb3ZpZGVkIHRoZSBz dGF0ZWQKKytjb25kaXRpb25zIGFyZSBtZXQuICBUaGlzIExpY2Vuc2UgZXhwbGljaXRseSBhZmZp cm1zIHlvdXIgdW5saW1pdGVkCisrcGVybWlzc2lvbiB0byBydW4gdGhlIHVubW9kaWZpZWQgUHJv Z3JhbS4gIFRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIGEKKytjb3ZlcmVkIHdvcmsgaXMgY292ZXJl ZCBieSB0aGlzIExpY2Vuc2Ugb25seSBpZiB0aGUgb3V0cHV0LCBnaXZlbiBpdHMKKytjb250ZW50 LCBjb25zdGl0dXRlcyBhIGNvdmVyZWQgd29yay4gIFRoaXMgTGljZW5zZSBhY2tub3dsZWRnZXMg eW91cgorK3JpZ2h0cyBvZiBmYWlyIHVzZSBvciBvdGhlciBlcXVpdmFsZW50LCBhcyBwcm92aWRl ZCBieSBjb3B5cmlnaHQgbGF3LgorKworKyAgWW91IG1heSBtYWtlLCBydW4gYW5kIHByb3BhZ2F0 ZSBjb3ZlcmVkIHdvcmtzIHRoYXQgeW91IGRvIG5vdAorK2NvbnZleSwgd2l0aG91dCBjb25kaXRp b25zIHNvIGxvbmcgYXMgeW91ciBsaWNlbnNlIG90aGVyd2lzZSByZW1haW5zCisraW4gZm9yY2Uu ICBZb3UgbWF5IGNvbnZleSBjb3ZlcmVkIHdvcmtzIHRvIG90aGVycyBmb3IgdGhlIHNvbGUgcHVy cG9zZQorK29mIGhhdmluZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNsdXNpdmVseSBmb3Ig eW91LCBvciBwcm92aWRlIHlvdQorK3dpdGggZmFjaWxpdGllcyBmb3IgcnVubmluZyB0aG9zZSB3 b3JrcywgcHJvdmlkZWQgdGhhdCB5b3UgY29tcGx5IHdpdGgKKyt0aGUgdGVybXMgb2YgdGhpcyBM aWNlbnNlIGluIGNvbnZleWluZyBhbGwgbWF0ZXJpYWwgZm9yIHdoaWNoIHlvdSBkbworK25vdCBj b250cm9sIGNvcHlyaWdodC4gIFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5pbmcgdGhlIGNvdmVy ZWQgd29ya3MKKytmb3IgeW91IG11c3QgZG8gc28gZXhjbHVzaXZlbHkgb24geW91ciBiZWhhbGYs IHVuZGVyIHlvdXIgZGlyZWN0aW9uCisrYW5kIGNvbnRyb2wsIG9uIHRlcm1zIHRoYXQgcHJvaGli aXQgdGhlbSBmcm9tIG1ha2luZyBhbnkgY29waWVzIG9mCisreW91ciBjb3B5cmlnaHRlZCBtYXRl cmlhbCBvdXRzaWRlIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdS4KKysKKysgIENvbnZleWlu ZyB1bmRlciBhbnkgb3RoZXIgY2lyY3Vtc3RhbmNlcyBpcyBwZXJtaXR0ZWQgc29sZWx5IHVuZGVy CisrdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGJlbG93LiAgU3VibGljZW5zaW5nIGlzIG5vdCBhbGxv d2VkOyBzZWN0aW9uIDEwCisrbWFrZXMgaXQgdW5uZWNlc3NhcnkuCisrCisrICAzLiBQcm90ZWN0 aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJvbSBBbnRpLUNpcmN1bXZlbnRpb24gTGF3LgorKwor KyAgTm8gY292ZXJlZCB3b3JrIHNoYWxsIGJlIGRlZW1lZCBwYXJ0IG9mIGFuIGVmZmVjdGl2ZSB0 ZWNobm9sb2dpY2FsCisrbWVhc3VyZSB1bmRlciBhbnkgYXBwbGljYWJsZSBsYXcgZnVsZmlsbGlu ZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCisrMTEgb2YgdGhlIFdJUE8gY29weXJpZ2h0IHRy ZWF0eSBhZG9wdGVkIG9uIDIwIERlY2VtYmVyIDE5OTYsIG9yCisrc2ltaWxhciBsYXdzIHByb2hp Yml0aW5nIG9yIHJlc3RyaWN0aW5nIGNpcmN1bXZlbnRpb24gb2Ygc3VjaAorK21lYXN1cmVzLgor KworKyAgV2hlbiB5b3UgY29udmV5IGEgY292ZXJlZCB3b3JrLCB5b3Ugd2FpdmUgYW55IGxlZ2Fs IHBvd2VyIHRvIGZvcmJpZAorK2NpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9naWNhbCBtZWFzdXJl cyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgorK2lzIGVmZmVjdGVkIGJ5IGV4ZXJj aXNpbmcgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZSB3aXRoIHJlc3BlY3QgdG8KKyt0aGUgY292 ZXJlZCB3b3JrLCBhbmQgeW91IGRpc2NsYWltIGFueSBpbnRlbnRpb24gdG8gbGltaXQgb3BlcmF0 aW9uIG9yCisrbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMgb2YgZW5mb3JjaW5n LCBhZ2FpbnN0IHRoZSB3b3JrJ3MKKyt1c2VycywgeW91ciBvciB0aGlyZCBwYXJ0aWVzJyBsZWdh bCByaWdodHMgdG8gZm9yYmlkIGNpcmN1bXZlbnRpb24gb2YKKyt0ZWNobm9sb2dpY2FsIG1lYXN1 cmVzLgorKworKyAgNC4gQ29udmV5aW5nIFZlcmJhdGltIENvcGllcy4KKysKKysgIFlvdSBtYXkg Y29udmV5IHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzIHNvdXJjZSBjb2RlIGFzIHlv dQorK3JlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91IGNvbnNwaWN1 b3VzbHkgYW5kCisrYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBhcHByb3By aWF0ZSBjb3B5cmlnaHQgbm90aWNlOworK2tlZXAgaW50YWN0IGFsbCBub3RpY2VzIHN0YXRpbmcg dGhhdCB0aGlzIExpY2Vuc2UgYW5kIGFueQorK25vbi1wZXJtaXNzaXZlIHRlcm1zIGFkZGVkIGlu IGFjY29yZCB3aXRoIHNlY3Rpb24gNyBhcHBseSB0byB0aGUgY29kZTsKKytrZWVwIGludGFjdCBh bGwgbm90aWNlcyBvZiB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7IGFuZCBnaXZlIGFsbAor K3JlY2lwaWVudHMgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBQcm9ncmFt LgorKworKyAgWW91IG1heSBjaGFyZ2UgYW55IHByaWNlIG9yIG5vIHByaWNlIGZvciBlYWNoIGNv cHkgdGhhdCB5b3UgY29udmV5LAorK2FuZCB5b3UgbWF5IG9mZmVyIHN1cHBvcnQgb3Igd2FycmFu dHkgcHJvdGVjdGlvbiBmb3IgYSBmZWUuCisrCisrICA1LiBDb252ZXlpbmcgTW9kaWZpZWQgU291 cmNlIFZlcnNpb25zLgorKworKyAgWW91IG1heSBjb252ZXkgYSB3b3JrIGJhc2VkIG9uIHRoZSBQ cm9ncmFtLCBvciB0aGUgbW9kaWZpY2F0aW9ucyB0bworK3Byb2R1Y2UgaXQgZnJvbSB0aGUgUHJv Z3JhbSwgaW4gdGhlIGZvcm0gb2Ygc291cmNlIGNvZGUgdW5kZXIgdGhlCisrdGVybXMgb2Ygc2Vj dGlvbiA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlv bnM6CisrCisrICAgIGEpIFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGljZXMgc3Rh dGluZyB0aGF0IHlvdSBtb2RpZmllZAorKyAgICBpdCwgYW5kIGdpdmluZyBhIHJlbGV2YW50IGRh dGUuCisrCisrICAgIGIpIFRoZSB3b3JrIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGljZXMgc3Rh dGluZyB0aGF0IGl0IGlzCisrICAgIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgYW55 IGNvbmRpdGlvbnMgYWRkZWQgdW5kZXIgc2VjdGlvbgorKyAgICA3LiAgVGhpcyByZXF1aXJlbWVu dCBtb2RpZmllcyB0aGUgcmVxdWlyZW1lbnQgaW4gc2VjdGlvbiA0IHRvCisrICAgICJrZWVwIGlu dGFjdCBhbGwgbm90aWNlcyIuCisrCisrICAgIGMpIFlvdSBtdXN0IGxpY2Vuc2UgdGhlIGVudGly ZSB3b3JrLCBhcyBhIHdob2xlLCB1bmRlciB0aGlzCisrICAgIExpY2Vuc2UgdG8gYW55b25lIHdo byBjb21lcyBpbnRvIHBvc3Nlc3Npb24gb2YgYSBjb3B5LiAgVGhpcworKyAgICBMaWNlbnNlIHdp bGwgdGhlcmVmb3JlIGFwcGx5LCBhbG9uZyB3aXRoIGFueSBhcHBsaWNhYmxlIHNlY3Rpb24gNwor KyAgICBhZGRpdGlvbmFsIHRlcm1zLCB0byB0aGUgd2hvbGUgb2YgdGhlIHdvcmssIGFuZCBhbGwg aXRzIHBhcnRzLAorKyAgICByZWdhcmRsZXNzIG9mIGhvdyB0aGV5IGFyZSBwYWNrYWdlZC4gIFRo aXMgTGljZW5zZSBnaXZlcyBubworKyAgICBwZXJtaXNzaW9uIHRvIGxpY2Vuc2UgdGhlIHdvcmsg aW4gYW55IG90aGVyIHdheSwgYnV0IGl0IGRvZXMgbm90CisrICAgIGludmFsaWRhdGUgc3VjaCBw ZXJtaXNzaW9uIGlmIHlvdSBoYXZlIHNlcGFyYXRlbHkgcmVjZWl2ZWQgaXQuCisrCisrICAgIGQp IElmIHRoZSB3b3JrIGhhcyBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZXMsIGVhY2ggbXVzdCBk aXNwbGF5CisrICAgIEFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXM7IGhvd2V2ZXIsIGlmIHRoZSBQ cm9ncmFtIGhhcyBpbnRlcmFjdGl2ZQorKyAgICBpbnRlcmZhY2VzIHRoYXQgZG8gbm90IGRpc3Bs YXkgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcywgeW91cgorKyAgICB3b3JrIG5lZWQgbm90IG1h a2UgdGhlbSBkbyBzby4KKysKKysgIEEgY29tcGlsYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsgd2l0 aCBvdGhlciBzZXBhcmF0ZSBhbmQgaW5kZXBlbmRlbnQKKyt3b3Jrcywgd2hpY2ggYXJlIG5vdCBi eSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBvZiB0aGUgY292ZXJlZCB3b3JrLAorK2FuZCB3aGlj aCBhcmUgbm90IGNvbWJpbmVkIHdpdGggaXQgc3VjaCBhcyB0byBmb3JtIGEgbGFyZ2VyIHByb2dy YW0sCisraW4gb3Igb24gYSB2b2x1bWUgb2YgYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRp dW0sIGlzIGNhbGxlZCBhbgorKyJhZ2dyZWdhdGUiIGlmIHRoZSBjb21waWxhdGlvbiBhbmQgaXRz IHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAorK3VzZWQgdG8gbGltaXQgdGhlIGFjY2VzcyBv ciBsZWdhbCByaWdodHMgb2YgdGhlIGNvbXBpbGF0aW9uJ3MgdXNlcnMKKytiZXlvbmQgd2hhdCB0 aGUgaW5kaXZpZHVhbCB3b3JrcyBwZXJtaXQuICBJbmNsdXNpb24gb2YgYSBjb3ZlcmVkIHdvcmsK KytpbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2UgdGhpcyBMaWNlbnNlIHRvIGFwcGx5IHRv IHRoZSBvdGhlcgorK3BhcnRzIG9mIHRoZSBhZ2dyZWdhdGUuCisrCisrICA2LiBDb252ZXlpbmcg Tm9uLVNvdXJjZSBGb3Jtcy4KKysKKysgIFlvdSBtYXkgY29udmV5IGEgY292ZXJlZCB3b3JrIGlu IG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgdGhlIHRlcm1zCisrb2Ygc2VjdGlvbnMgNCBhbmQgNSwg cHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCisrbWFjaGluZS1yZWFkYWJsZSBDb3Jy ZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLAorK2luIG9u ZSBvZiB0aGVzZSB3YXlzOgorKworKyAgICBhKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBv ciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0CisrICAgIChpbmNsdWRpbmcgYSBwaHlz aWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgdGhlCisrICAgIENvcnJl c3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBtZWRpdW0KKysgICAg Y3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuCisrCisrICAgIGIpIENv bnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1 Y3QKKysgICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2Nv bXBhbmllZCBieSBhCisrICAgIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJl ZSB5ZWFycyBhbmQgdmFsaWQgZm9yIGFzCisrICAgIGxvbmcgYXMgeW91IG9mZmVyIHNwYXJlIHBh cnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAorKyAgICBtb2RlbCwgdG8g Z2l2ZSBhbnlvbmUgd2hvIHBvc3Nlc3NlcyB0aGUgb2JqZWN0IGNvZGUgZWl0aGVyICgxKSBhCisr ICAgIGNvcHkgb2YgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGZvciBhbGwgdGhlIHNvZnR3YXJl IGluIHRoZQorKyAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIG9u IGEgZHVyYWJsZSBwaHlzaWNhbAorKyAgICBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29m dHdhcmUgaW50ZXJjaGFuZ2UsIGZvciBhIHByaWNlIG5vCisrICAgIG1vcmUgdGhhbiB5b3VyIHJl YXNvbmFibGUgY29zdCBvZiBwaHlzaWNhbGx5IHBlcmZvcm1pbmcgdGhpcworKyAgICBjb252ZXlp bmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCisrICAgIENvcnJlc3BvbmRp bmcgU291cmNlIGZyb20gYSBuZXR3b3JrIHNlcnZlciBhdCBubyBjaGFyZ2UuCisrCisrICAgIGMp IENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkg b2YgdGhlCisrICAgIHdyaXR0ZW4gb2ZmZXIgdG8gcHJvdmlkZSB0aGUgQ29ycmVzcG9uZGluZyBT b3VyY2UuICBUaGlzCisrICAgIGFsdGVybmF0aXZlIGlzIGFsbG93ZWQgb25seSBvY2Nhc2lvbmFs bHkgYW5kIG5vbmNvbW1lcmNpYWxseSwgYW5kCisrICAgIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRo ZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAorKyAgICB3aXRoIHN1 YnNlY3Rpb24gNmIuCisrCisrICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgYnkgb2ZmZXJp bmcgYWNjZXNzIGZyb20gYSBkZXNpZ25hdGVkCisrICAgIHBsYWNlIChncmF0aXMgb3IgZm9yIGEg Y2hhcmdlKSwgYW5kIG9mZmVyIGVxdWl2YWxlbnQgYWNjZXNzIHRvIHRoZQorKyAgICBDb3JyZXNw b25kaW5nIFNvdXJjZSBpbiB0aGUgc2FtZSB3YXkgdGhyb3VnaCB0aGUgc2FtZSBwbGFjZSBhdCBu bworKyAgICBmdXJ0aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJlIHJlY2lwaWVudHMg dG8gY29weSB0aGUKKysgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2Jq ZWN0IGNvZGUuICBJZiB0aGUgcGxhY2UgdG8KKysgICAgY29weSB0aGUgb2JqZWN0IGNvZGUgaXMg YSBuZXR3b3JrIHNlcnZlciwgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlCisrICAgIG1heSBiZSBv biBhIGRpZmZlcmVudCBzZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRoaXJkIHBhcnR5KQor KyAgICB0aGF0IHN1cHBvcnRzIGVxdWl2YWxlbnQgY29weWluZyBmYWNpbGl0aWVzLCBwcm92aWRl ZCB5b3UgbWFpbnRhaW4KKysgICAgY2xlYXIgZGlyZWN0aW9ucyBuZXh0IHRvIHRoZSBvYmplY3Qg Y29kZSBzYXlpbmcgd2hlcmUgdG8gZmluZCB0aGUKKysgICAgQ29ycmVzcG9uZGluZyBTb3VyY2Uu ICBSZWdhcmRsZXNzIG9mIHdoYXQgc2VydmVyIGhvc3RzIHRoZQorKyAgICBDb3JyZXNwb25kaW5n IFNvdXJjZSwgeW91IHJlbWFpbiBvYmxpZ2F0ZWQgdG8gZW5zdXJlIHRoYXQgaXQgaXMKKysgICAg YXZhaWxhYmxlIGZvciBhcyBsb25nIGFzIG5lZWRlZCB0byBzYXRpc2Z5IHRoZXNlIHJlcXVpcmVt ZW50cy4KKysKKysgICAgZSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSB1c2luZyBwZWVyLXRvLXBl ZXIgdHJhbnNtaXNzaW9uLCBwcm92aWRlZAorKyAgICB5b3UgaW5mb3JtIG90aGVyIHBlZXJzIHdo ZXJlIHRoZSBvYmplY3QgY29kZSBhbmQgQ29ycmVzcG9uZGluZworKyAgICBTb3VyY2Ugb2YgdGhl IHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQgdG8gdGhlIGdlbmVyYWwgcHVibGljIGF0IG5vCisrICAg IGNoYXJnZSB1bmRlciBzdWJzZWN0aW9uIDZkLgorKworKyAgQSBzZXBhcmFibGUgcG9ydGlvbiBv ZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNvdXJjZSBjb2RlIGlzIGV4Y2x1ZGVkCisrZnJvbSB0 aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgYXMgYSBTeXN0ZW0gTGlicmFyeSwgbmVlZCBub3QgYmUK KytpbmNsdWRlZCBpbiBjb252ZXlpbmcgdGhlIG9iamVjdCBjb2RlIHdvcmsuCisrCisrICBBICJV c2VyIFByb2R1Y3QiIGlzIGVpdGhlciAoMSkgYSAiY29uc3VtZXIgcHJvZHVjdCIsIHdoaWNoIG1l YW5zIGFueQorK3RhbmdpYmxlIHBlcnNvbmFsIHByb3BlcnR5IHdoaWNoIGlzIG5vcm1hbGx5IHVz ZWQgZm9yIHBlcnNvbmFsLCBmYW1pbHksCisrb3IgaG91c2Vob2xkIHB1cnBvc2VzLCBvciAoMikg YW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5jb3Jwb3JhdGlvbgorK2ludG8gYSBkd2Vs bGluZy4gIEluIGRldGVybWluaW5nIHdoZXRoZXIgYSBwcm9kdWN0IGlzIGEgY29uc3VtZXIgcHJv ZHVjdCwKKytkb3VidGZ1bCBjYXNlcyBzaGFsbCBiZSByZXNvbHZlZCBpbiBmYXZvciBvZiBjb3Zl cmFnZS4gIEZvciBhIHBhcnRpY3VsYXIKKytwcm9kdWN0IHJlY2VpdmVkIGJ5IGEgcGFydGljdWxh ciB1c2VyLCAibm9ybWFsbHkgdXNlZCIgcmVmZXJzIHRvIGEKKyt0eXBpY2FsIG9yIGNvbW1vbiB1 c2Ugb2YgdGhhdCBjbGFzcyBvZiBwcm9kdWN0LCByZWdhcmRsZXNzIG9mIHRoZSBzdGF0dXMKKytv ZiB0aGUgcGFydGljdWxhciB1c2VyIG9yIG9mIHRoZSB3YXkgaW4gd2hpY2ggdGhlIHBhcnRpY3Vs YXIgdXNlcgorK2FjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3IgaXMgZXhwZWN0ZWQgdG8gdXNl LCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAorK2lzIGEgY29uc3VtZXIgcHJvZHVjdCByZWdhcmRs ZXNzIG9mIHdoZXRoZXIgdGhlIHByb2R1Y3QgaGFzIHN1YnN0YW50aWFsCisrY29tbWVyY2lhbCwg aW5kdXN0cmlhbCBvciBub24tY29uc3VtZXIgdXNlcywgdW5sZXNzIHN1Y2ggdXNlcyByZXByZXNl bnQKKyt0aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0aGUgcHJvZHVjdC4KKysK KysgICJJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24iIGZvciBhIFVzZXIgUHJvZHVjdCBtZWFucyBh bnkgbWV0aG9kcywKKytwcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMsIG9yIG90aGVyIGlu Zm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKKythbmQgZXhlY3V0ZSBtb2RpZmllZCB2ZXJz aW9ucyBvZiBhIGNvdmVyZWQgd29yayBpbiB0aGF0IFVzZXIgUHJvZHVjdCBmcm9tCisrYSBtb2Rp ZmllZCB2ZXJzaW9uIG9mIGl0cyBDb3JyZXNwb25kaW5nIFNvdXJjZS4gIFRoZSBpbmZvcm1hdGlv biBtdXN0Cisrc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVkIGZ1bmN0aW9uaW5n IG9mIHRoZSBtb2RpZmllZCBvYmplY3QKKytjb2RlIGlzIGluIG5vIGNhc2UgcHJldmVudGVkIG9y IGludGVyZmVyZWQgd2l0aCBzb2xlbHkgYmVjYXVzZQorK21vZGlmaWNhdGlvbiBoYXMgYmVlbiBt YWRlLgorKworKyAgSWYgeW91IGNvbnZleSBhbiBvYmplY3QgY29kZSB3b3JrIHVuZGVyIHRoaXMg c2VjdGlvbiBpbiwgb3Igd2l0aCwgb3IKKytzcGVjaWZpY2FsbHkgZm9yIHVzZSBpbiwgYSBVc2Vy IFByb2R1Y3QsIGFuZCB0aGUgY29udmV5aW5nIG9jY3VycyBhcworK3BhcnQgb2YgYSB0cmFuc2Fj dGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNlIG9mIHRoZQorK1Vz ZXIgUHJvZHVjdCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgcmVjaXBpZW50IGluIHBlcnBldHVpdHkg b3IgZm9yIGEKKytmaXhlZCB0ZXJtIChyZWdhcmRsZXNzIG9mIGhvdyB0aGUgdHJhbnNhY3Rpb24g aXMgY2hhcmFjdGVyaXplZCksIHRoZQorK0NvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkIHVu ZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCisrYnkgdGhlIEluc3RhbGxhdGlv biBJbmZvcm1hdGlvbi4gIEJ1dCB0aGlzIHJlcXVpcmVtZW50IGRvZXMgbm90IGFwcGx5CisraWYg bmVpdGhlciB5b3Ugbm9yIGFueSB0aGlyZCBwYXJ0eSByZXRhaW5zIHRoZSBhYmlsaXR5IHRvIGlu c3RhbGwKKyttb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9kdWN0IChmb3IgZXhh bXBsZSwgdGhlIHdvcmsgaGFzCisrYmVlbiBpbnN0YWxsZWQgaW4gUk9NKS4KKysKKysgIFRoZSBy ZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2VzIG5vdCBp bmNsdWRlIGEKKytyZXF1aXJlbWVudCB0byBjb250aW51ZSB0byBwcm92aWRlIHN1cHBvcnQgc2Vy dmljZSwgd2FycmFudHksIG9yIHVwZGF0ZXMKKytmb3IgYSB3b3JrIHRoYXQgaGFzIGJlZW4gbW9k aWZpZWQgb3IgaW5zdGFsbGVkIGJ5IHRoZSByZWNpcGllbnQsIG9yIGZvcgorK3RoZSBVc2VyIFBy b2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAgQWNjZXNz IHRvIGEKKytuZXR3b3JrIG1heSBiZSBkZW5pZWQgd2hlbiB0aGUgbW9kaWZpY2F0aW9uIGl0c2Vs ZiBtYXRlcmlhbGx5IGFuZAorK2FkdmVyc2VseSBhZmZlY3RzIHRoZSBvcGVyYXRpb24gb2YgdGhl IG5ldHdvcmsgb3IgdmlvbGF0ZXMgdGhlIHJ1bGVzIGFuZAorK3Byb3RvY29scyBmb3IgY29tbXVu aWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuCisrCisrICBDb3JyZXNwb25kaW5nIFNvdXJjZSBj b252ZXllZCwgYW5kIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBwcm92aWRlZCwKKytpbiBhY2Nv cmQgd2l0aCB0aGlzIHNlY3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0IGlzIHB1YmxpY2x5 CisrZG9jdW1lbnRlZCAoYW5kIHdpdGggYW4gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIHRvIHRo ZSBwdWJsaWMgaW4KKytzb3VyY2UgY29kZSBmb3JtKSwgYW5kIG11c3QgcmVxdWlyZSBubyBzcGVj aWFsIHBhc3N3b3JkIG9yIGtleSBmb3IKKyt1bnBhY2tpbmcsIHJlYWRpbmcgb3IgY29weWluZy4K KysKKysgIDcuIEFkZGl0aW9uYWwgVGVybXMuCisrCisrICAiQWRkaXRpb25hbCBwZXJtaXNzaW9u cyIgYXJlIHRlcm1zIHRoYXQgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcworK0xpY2Vuc2Ug YnkgbWFraW5nIGV4Y2VwdGlvbnMgZnJvbSBvbmUgb3IgbW9yZSBvZiBpdHMgY29uZGl0aW9ucy4K KytBZGRpdGlvbmFsIHBlcm1pc3Npb25zIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGVudGly ZSBQcm9ncmFtIHNoYWxsCisrYmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlIGluY2x1ZGVk IGluIHRoaXMgTGljZW5zZSwgdG8gdGhlIGV4dGVudAorK3RoYXQgdGhleSBhcmUgdmFsaWQgdW5k ZXIgYXBwbGljYWJsZSBsYXcuICBJZiBhZGRpdGlvbmFsIHBlcm1pc3Npb25zCisrYXBwbHkgb25s eSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0aGF0IHBhcnQgbWF5IGJlIHVzZWQgc2VwYXJhdGVs eQorK3VuZGVyIHRob3NlIHBlcm1pc3Npb25zLCBidXQgdGhlIGVudGlyZSBQcm9ncmFtIHJlbWFp bnMgZ292ZXJuZWQgYnkKKyt0aGlzIExpY2Vuc2Ugd2l0aG91dCByZWdhcmQgdG8gdGhlIGFkZGl0 aW9uYWwgcGVybWlzc2lvbnMuCisrCisrICBXaGVuIHlvdSBjb252ZXkgYSBjb3B5IG9mIGEgY292 ZXJlZCB3b3JrLCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uCisrcmVtb3ZlIGFueSBhZGRpdGlvbmFs IHBlcm1pc3Npb25zIGZyb20gdGhhdCBjb3B5LCBvciBmcm9tIGFueSBwYXJ0IG9mCisraXQuICAo QWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1aXJlIHRoZWlyIG93 bgorK3JlbW92YWwgaW4gY2VydGFpbiBjYXNlcyB3aGVuIHlvdSBtb2RpZnkgdGhlIHdvcmsuKSAg WW91IG1heSBwbGFjZQorK2FkZGl0aW9uYWwgcGVybWlzc2lvbnMgb24gbWF0ZXJpYWwsIGFkZGVk IGJ5IHlvdSB0byBhIGNvdmVyZWQgd29yaywKKytmb3Igd2hpY2ggeW91IGhhdmUgb3IgY2FuIGdp dmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uCisrCisrICBOb3R3aXRoc3RhbmRp bmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIGZvciBtYXRlcmlhbCB5b3UK KythZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1dGhvcml6ZWQgYnkgdGhlIGNv cHlyaWdodCBob2xkZXJzIG9mCisrdGhhdCBtYXRlcmlhbCkgc3VwcGxlbWVudCB0aGUgdGVybXMg b2YgdGhpcyBMaWNlbnNlIHdpdGggdGVybXM6CisrCisrICAgIGEpIERpc2NsYWltaW5nIHdhcnJh bnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9tIHRoZQorKyAgICB0ZXJt cyBvZiBzZWN0aW9ucyAxNSBhbmQgMTYgb2YgdGhpcyBMaWNlbnNlOyBvcgorKworKyAgICBiKSBS ZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxlIGxlZ2FsIG5vdGlj ZXMgb3IKKysgICAgYXV0aG9yIGF0dHJpYnV0aW9ucyBpbiB0aGF0IG1hdGVyaWFsIG9yIGluIHRo ZSBBcHByb3ByaWF0ZSBMZWdhbAorKyAgICBOb3RpY2VzIGRpc3BsYXllZCBieSB3b3JrcyBjb250 YWluaW5nIGl0OyBvcgorKworKyAgICBjKSBQcm9oaWJpdGluZyBtaXNyZXByZXNlbnRhdGlvbiBv ZiB0aGUgb3JpZ2luIG9mIHRoYXQgbWF0ZXJpYWwsIG9yCisrICAgIHJlcXVpcmluZyB0aGF0IG1v ZGlmaWVkIHZlcnNpb25zIG9mIHN1Y2ggbWF0ZXJpYWwgYmUgbWFya2VkIGluCisrICAgIHJlYXNv bmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsgb3IKKysK KysgICAgZCkgTGltaXRpbmcgdGhlIHVzZSBmb3IgcHVibGljaXR5IHB1cnBvc2VzIG9mIG5hbWVz IG9mIGxpY2Vuc29ycyBvcgorKyAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlhbDsgb3IKKysKKysg ICAgZSkgRGVjbGluaW5nIHRvIGdyYW50IHJpZ2h0cyB1bmRlciB0cmFkZW1hcmsgbGF3IGZvciB1 c2Ugb2Ygc29tZQorKyAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Igc2VydmljZSBtYXJr czsgb3IKKysKKysgICAgZikgUmVxdWlyaW5nIGluZGVtbmlmaWNhdGlvbiBvZiBsaWNlbnNvcnMg YW5kIGF1dGhvcnMgb2YgdGhhdAorKyAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNvbnZleXMg dGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgorKyAgICBpdCkgd2l0aCBjb250 cmFjdHVhbCBhc3N1bXB0aW9ucyBvZiBsaWFiaWxpdHkgdG8gdGhlIHJlY2lwaWVudCwgZm9yCisr ICAgIGFueSBsaWFiaWxpdHkgdGhhdCB0aGVzZSBjb250cmFjdHVhbCBhc3N1bXB0aW9ucyBkaXJl Y3RseSBpbXBvc2Ugb24KKysgICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLgorKworKyAg QWxsIG90aGVyIG5vbi1wZXJtaXNzaXZlIGFkZGl0aW9uYWwgdGVybXMgYXJlIGNvbnNpZGVyZWQg ImZ1cnRoZXIKKytyZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0aW9uIDEw LiAgSWYgdGhlIFByb2dyYW0gYXMgeW91CisrcmVjZWl2ZWQgaXQsIG9yIGFueSBwYXJ0IG9mIGl0 LCBjb250YWlucyBhIG5vdGljZSBzdGF0aW5nIHRoYXQgaXQgaXMKKytnb3Zlcm5lZCBieSB0aGlz IExpY2Vuc2UgYWxvbmcgd2l0aCBhIHRlcm0gdGhhdCBpcyBhIGZ1cnRoZXIKKytyZXN0cmljdGlv biwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50IGNvbnRh aW5zCisrYSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGJ1dCBwZXJtaXRzIHJlbGljZW5zaW5nIG9yIGNv bnZleWluZyB1bmRlciB0aGlzCisrTGljZW5zZSwgeW91IG1heSBhZGQgdG8gYSBjb3ZlcmVkIHdv cmsgbWF0ZXJpYWwgZ292ZXJuZWQgYnkgdGhlIHRlcm1zCisrb2YgdGhhdCBsaWNlbnNlIGRvY3Vt ZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKKytub3Qgc3Vy dml2ZSBzdWNoIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZy4KKysKKysgIElmIHlvdSBhZGQgdGVy bXMgdG8gYSBjb3ZlcmVkIHdvcmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uLCB5b3UKKytt dXN0IHBsYWNlLCBpbiB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzLCBhIHN0YXRlbWVudCBvZiB0 aGUKKythZGRpdGlvbmFsIHRlcm1zIHRoYXQgYXBwbHkgdG8gdGhvc2UgZmlsZXMsIG9yIGEgbm90 aWNlIGluZGljYXRpbmcKKyt3aGVyZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxlIHRlcm1zLgorKwor KyAgQWRkaXRpb25hbCB0ZXJtcywgcGVybWlzc2l2ZSBvciBub24tcGVybWlzc2l2ZSwgbWF5IGJl IHN0YXRlZCBpbiB0aGUKKytmb3JtIG9mIGEgc2VwYXJhdGVseSB3cml0dGVuIGxpY2Vuc2UsIG9y IHN0YXRlZCBhcyBleGNlcHRpb25zOworK3RoZSBhYm92ZSByZXF1aXJlbWVudHMgYXBwbHkgZWl0 aGVyIHdheS4KKysKKysgIDguIFRlcm1pbmF0aW9uLgorKworKyAgWW91IG1heSBub3QgcHJvcGFn YXRlIG9yIG1vZGlmeSBhIGNvdmVyZWQgd29yayBleGNlcHQgYXMgZXhwcmVzc2x5CisrcHJvdmlk ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQgb3RoZXJ3aXNlIHRvIHByb3BhZ2F0 ZSBvcgorK21vZGlmeSBpdCBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0 ZSB5b3VyIHJpZ2h0cyB1bmRlcgorK3RoaXMgTGljZW5zZSAoaW5jbHVkaW5nIGFueSBwYXRlbnQg bGljZW5zZXMgZ3JhbnRlZCB1bmRlciB0aGUgdGhpcmQKKytwYXJhZ3JhcGggb2Ygc2VjdGlvbiAx MSkuCisrCisrICBIb3dldmVyLCBpZiB5b3UgY2Vhc2UgYWxsIHZpb2xhdGlvbiBvZiB0aGlzIExp Y2Vuc2UsIHRoZW4geW91cgorK2xpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhv bGRlciBpcyByZWluc3RhdGVkIChhKQorK3Byb3Zpc2lvbmFsbHksIHVubGVzcyBhbmQgdW50aWwg dGhlIGNvcHlyaWdodCBob2xkZXIgZXhwbGljaXRseSBhbmQKKytmaW5hbGx5IHRlcm1pbmF0ZXMg eW91ciBsaWNlbnNlLCBhbmQgKGIpIHBlcm1hbmVudGx5LCBpZiB0aGUgY29weXJpZ2h0CisraG9s ZGVyIGZhaWxzIHRvIG5vdGlmeSB5b3Ugb2YgdGhlIHZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFi bGUgbWVhbnMKKytwcmlvciB0byA2MCBkYXlzIGFmdGVyIHRoZSBjZXNzYXRpb24uCisrCisrICBN b3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIg aXMKKytyZWluc3RhdGVkIHBlcm1hbmVudGx5IGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vdGlm aWVzIHlvdSBvZiB0aGUKKyt2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zLCB0aGlz IGlzIHRoZSBmaXJzdCB0aW1lIHlvdSBoYXZlCisrcmVjZWl2ZWQgbm90aWNlIG9mIHZpb2xhdGlv biBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykgZnJvbSB0aGF0CisrY29weXJpZ2h0IGhv bGRlciwgYW5kIHlvdSBjdXJlIHRoZSB2aW9sYXRpb24gcHJpb3IgdG8gMzAgZGF5cyBhZnRlcgor K3lvdXIgcmVjZWlwdCBvZiB0aGUgbm90aWNlLgorKworKyAgVGVybWluYXRpb24gb2YgeW91ciBy aWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUKKytsaWNlbnNl cyBvZiBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcyBvciByaWdodHMgZnJvbSB5b3Ug dW5kZXIKKyt0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJlZW4gdGVybWluYXRl ZCBhbmQgbm90IHBlcm1hbmVudGx5CisrcmVpbnN0YXRlZCwgeW91IGRvIG5vdCBxdWFsaWZ5IHRv IHJlY2VpdmUgbmV3IGxpY2Vuc2VzIGZvciB0aGUgc2FtZQorK21hdGVyaWFsIHVuZGVyIHNlY3Rp b24gMTAuCisrCisrICA5LiBBY2NlcHRhbmNlIE5vdCBSZXF1aXJlZCBmb3IgSGF2aW5nIENvcGll cy4KKysKKysgIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UgaW4g b3JkZXIgdG8gcmVjZWl2ZSBvcgorK3J1biBhIGNvcHkgb2YgdGhlIFByb2dyYW0uICBBbmNpbGxh cnkgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsKKytvY2N1cnJpbmcgc29sZWx5IGFzIGEg Y29uc2VxdWVuY2Ugb2YgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbgorK3RvIHJlY2Vp dmUgYSBjb3B5IGxpa2V3aXNlIGRvZXMgbm90IHJlcXVpcmUgYWNjZXB0YW5jZS4gIEhvd2V2ZXIs Cisrbm90aGluZyBvdGhlciB0aGFuIHRoaXMgTGljZW5zZSBncmFudHMgeW91IHBlcm1pc3Npb24g dG8gcHJvcGFnYXRlIG9yCisrbW9kaWZ5IGFueSBjb3ZlcmVkIHdvcmsuICBUaGVzZSBhY3Rpb25z IGluZnJpbmdlIGNvcHlyaWdodCBpZiB5b3UgZG8KKytub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4g IFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIHByb3BhZ2F0aW5nIGEKKytjb3ZlcmVkIHdvcmss IHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLgor KworKyAgMTAuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGllbnRzLgor KworKyAgRWFjaCB0aW1lIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHRoZSByZWNpcGllbnQg YXV0b21hdGljYWxseQorK3JlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBvcmlnaW5hbCBsaWNl bnNvcnMsIHRvIHJ1biwgbW9kaWZ5IGFuZAorK3Byb3BhZ2F0ZSB0aGF0IHdvcmssIHN1YmplY3Qg dG8gdGhpcyBMaWNlbnNlLiAgWW91IGFyZSBub3QgcmVzcG9uc2libGUKKytmb3IgZW5mb3JjaW5n IGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoIHRoaXMgTGljZW5zZS4KKysKKysgIEFu ICJlbnRpdHkgdHJhbnNhY3Rpb24iIGlzIGEgdHJhbnNhY3Rpb24gdHJhbnNmZXJyaW5nIGNvbnRy b2wgb2YgYW4KKytvcmdhbml6YXRpb24sIG9yIHN1YnN0YW50aWFsbHkgYWxsIGFzc2V0cyBvZiBv bmUsIG9yIHN1YmRpdmlkaW5nIGFuCisrb3JnYW5pemF0aW9uLCBvciBtZXJnaW5nIG9yZ2FuaXph dGlvbnMuICBJZiBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQKKyt3b3JrIHJlc3VsdHMgZnJvbSBh biBlbnRpdHkgdHJhbnNhY3Rpb24sIGVhY2ggcGFydHkgdG8gdGhhdAorK3RyYW5zYWN0aW9uIHdo byByZWNlaXZlcyBhIGNvcHkgb2YgdGhlIHdvcmsgYWxzbyByZWNlaXZlcyB3aGF0ZXZlcgorK2xp Y2Vuc2VzIHRvIHRoZSB3b3JrIHRoZSBwYXJ0eSdzIHByZWRlY2Vzc29yIGluIGludGVyZXN0IGhh ZCBvciBjb3VsZAorK2dpdmUgdW5kZXIgdGhlIHByZXZpb3VzIHBhcmFncmFwaCwgcGx1cyBhIHJp Z2h0IHRvIHBvc3Nlc3Npb24gb2YgdGhlCisrQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdv cmsgZnJvbSB0aGUgcHJlZGVjZXNzb3IgaW4gaW50ZXJlc3QsIGlmCisrdGhlIHByZWRlY2Vzc29y IGhhcyBpdCBvciBjYW4gZ2V0IGl0IHdpdGggcmVhc29uYWJsZSBlZmZvcnRzLgorKworKyAgWW91 IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyIHJlc3RyaWN0aW9ucyBvbiB0aGUgZXhlcmNpc2Ug b2YgdGhlCisrcmlnaHRzIGdyYW50ZWQgb3IgYWZmaXJtZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAg Rm9yIGV4YW1wbGUsIHlvdSBtYXkKKytub3QgaW1wb3NlIGEgbGljZW5zZSBmZWUsIHJveWFsdHks IG9yIG90aGVyIGNoYXJnZSBmb3IgZXhlcmNpc2Ugb2YKKytyaWdodHMgZ3JhbnRlZCB1bmRlciB0 aGlzIExpY2Vuc2UsIGFuZCB5b3UgbWF5IG5vdCBpbml0aWF0ZSBsaXRpZ2F0aW9uCisrKGluY2x1 ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5n IHRoYXQKKythbnkgcGF0ZW50IGNsYWltIGlzIGluZnJpbmdlZCBieSBtYWtpbmcsIHVzaW5nLCBz ZWxsaW5nLCBvZmZlcmluZyBmb3IKKytzYWxlLCBvciBpbXBvcnRpbmcgdGhlIFByb2dyYW0gb3Ig YW55IHBvcnRpb24gb2YgaXQuCisrCisrICAxMS4gUGF0ZW50cy4KKysKKysgIEEgImNvbnRyaWJ1 dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdXNlIHVuZGVyIHRoaXMK KytMaWNlbnNlIG9mIHRoZSBQcm9ncmFtIG9yIGEgd29yayBvbiB3aGljaCB0aGUgUHJvZ3JhbSBp cyBiYXNlZC4gIFRoZQorK3dvcmsgdGh1cyBsaWNlbnNlZCBpcyBjYWxsZWQgdGhlIGNvbnRyaWJ1 dG9yJ3MgImNvbnRyaWJ1dG9yIHZlcnNpb24iLgorKworKyAgQSBjb250cmlidXRvcidzICJlc3Nl bnRpYWwgcGF0ZW50IGNsYWltcyIgYXJlIGFsbCBwYXRlbnQgY2xhaW1zCisrb3duZWQgb3IgY29u dHJvbGxlZCBieSB0aGUgY29udHJpYnV0b3IsIHdoZXRoZXIgYWxyZWFkeSBhY3F1aXJlZCBvcgor K2hlcmVhZnRlciBhY3F1aXJlZCwgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgYnkgc29tZSBtYW5u ZXIsIHBlcm1pdHRlZAorK2J5IHRoaXMgTGljZW5zZSwgb2YgbWFraW5nLCB1c2luZywgb3Igc2Vs bGluZyBpdHMgY29udHJpYnV0b3IgdmVyc2lvbiwKKytidXQgZG8gbm90IGluY2x1ZGUgY2xhaW1z IHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIG9ubHkgYXMgYQorK2NvbnNlcXVlbmNlIG9mIGZ1cnRo ZXIgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250cmlidXRvciB2ZXJzaW9uLiAgRm9yCisrcHVycG9z ZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgaW5jbHVkZXMgdGhlIHJpZ2h0IHRvIGdy YW50CisrcGF0ZW50IHN1YmxpY2Vuc2VzIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCB0aGUg cmVxdWlyZW1lbnRzIG9mCisgdGhpcyBMaWNlbnNlLgorIAorLSAgNy4gSWYsIGFzIGEgY29uc2Vx dWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAorLWluZnJp bmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlz c3VlcyksCistY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQg b3JkZXIsIGFncmVlbWVudCBvcgorKyAgRWFjaCBjb250cmlidXRvciBncmFudHMgeW91IGEgbm9u LWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUKKytwYXRlbnQgbGljZW5zZSB1bmRl ciB0aGUgY29udHJpYnV0b3IncyBlc3NlbnRpYWwgcGF0ZW50IGNsYWltcywgdG8KKyttYWtlLCB1 c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQgYW5kIG90aGVyd2lzZSBydW4sIG1vZGlm eSBhbmQKKytwcm9wYWdhdGUgdGhlIGNvbnRlbnRzIG9mIGl0cyBjb250cmlidXRvciB2ZXJzaW9u LgorKworKyAgSW4gdGhlIGZvbGxvd2luZyB0aHJlZSBwYXJhZ3JhcGhzLCBhICJwYXRlbnQgbGlj ZW5zZSIgaXMgYW55IGV4cHJlc3MKKythZ3JlZW1lbnQgb3IgY29tbWl0bWVudCwgaG93ZXZlciBk ZW5vbWluYXRlZCwgbm90IHRvIGVuZm9yY2UgYSBwYXRlbnQKKysoc3VjaCBhcyBhbiBleHByZXNz IHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3IgY292ZW5hbnQgbm90IHRvCisrc3Vl IGZvciBwYXRlbnQgaW5mcmluZ2VtZW50KS4gIFRvICJncmFudCIgc3VjaCBhIHBhdGVudCBsaWNl bnNlIHRvIGEKKytwYXJ0eSBtZWFucyB0byBtYWtlIHN1Y2ggYW4gYWdyZWVtZW50IG9yIGNvbW1p dG1lbnQgbm90IHRvIGVuZm9yY2UgYQorK3BhdGVudCBhZ2FpbnN0IHRoZSBwYXJ0eS4KKysKKysg IElmIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIGtub3dpbmdseSByZWx5aW5nIG9uIGEgcGF0 ZW50IGxpY2Vuc2UsCisrYW5kIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBp cyBub3QgYXZhaWxhYmxlIGZvciBhbnlvbmUKKyt0byBjb3B5LCBmcmVlIG9mIGNoYXJnZSBhbmQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgdGhyb3VnaCBhCisrcHVibGljbHkgYXZh aWxhYmxlIG5ldHdvcmsgc2VydmVyIG9yIG90aGVyIHJlYWRpbHkgYWNjZXNzaWJsZSBtZWFucywK Kyt0aGVuIHlvdSBtdXN0IGVpdGhlciAoMSkgY2F1c2UgdGhlIENvcnJlc3BvbmRpbmcgU291cmNl IHRvIGJlIHNvCisrYXZhaWxhYmxlLCBvciAoMikgYXJyYW5nZSB0byBkZXByaXZlIHlvdXJzZWxm IG9mIHRoZSBiZW5lZml0IG9mIHRoZQorK3BhdGVudCBsaWNlbnNlIGZvciB0aGlzIHBhcnRpY3Vs YXIgd29yaywgb3IgKDMpIGFycmFuZ2UsIGluIGEgbWFubmVyCisrY29uc2lzdGVudCB3aXRoIHRo ZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlLCB0byBleHRlbmQgdGhlIHBhdGVudAorK2xp Y2Vuc2UgdG8gZG93bnN0cmVhbSByZWNpcGllbnRzLiAgIktub3dpbmdseSByZWx5aW5nIiBtZWFu cyB5b3UgaGF2ZQorK2FjdHVhbCBrbm93bGVkZ2UgdGhhdCwgYnV0IGZvciB0aGUgcGF0ZW50IGxp Y2Vuc2UsIHlvdXIgY29udmV5aW5nIHRoZQorK2NvdmVyZWQgd29yayBpbiBhIGNvdW50cnksIG9y IHlvdXIgcmVjaXBpZW50J3MgdXNlIG9mIHRoZSBjb3ZlcmVkIHdvcmsKKytpbiBhIGNvdW50cnks IHdvdWxkIGluZnJpbmdlIG9uZSBvciBtb3JlIGlkZW50aWZpYWJsZSBwYXRlbnRzIGluIHRoYXQK Kytjb3VudHJ5IHRoYXQgeW91IGhhdmUgcmVhc29uIHRvIGJlbGlldmUgYXJlIHZhbGlkLgorKwor KyAgSWYsIHB1cnN1YW50IHRvIG9yIGluIGNvbm5lY3Rpb24gd2l0aCBhIHNpbmdsZSB0cmFuc2Fj dGlvbiBvcgorK2FycmFuZ2VtZW50LCB5b3UgY29udmV5LCBvciBwcm9wYWdhdGUgYnkgcHJvY3Vy aW5nIGNvbnZleWFuY2Ugb2YsIGEKKytjb3ZlcmVkIHdvcmssIGFuZCBncmFudCBhIHBhdGVudCBs aWNlbnNlIHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKKytyZWNlaXZpbmcgdGhlIGNvdmVyZWQgd29y ayBhdXRob3JpemluZyB0aGVtIHRvIHVzZSwgcHJvcGFnYXRlLCBtb2RpZnkKKytvciBjb252ZXkg YSBzcGVjaWZpYyBjb3B5IG9mIHRoZSBjb3ZlcmVkIHdvcmssIHRoZW4gdGhlIHBhdGVudCBsaWNl bnNlCisreW91IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kZWQgdG8gYWxsIHJlY2lwaWVu dHMgb2YgdGhlIGNvdmVyZWQKKyt3b3JrIGFuZCB3b3JrcyBiYXNlZCBvbiBpdC4KKysKKysgIEEg cGF0ZW50IGxpY2Vuc2UgaXMgImRpc2NyaW1pbmF0b3J5IiBpZiBpdCBkb2VzIG5vdCBpbmNsdWRl IHdpdGhpbgorK3RoZSBzY29wZSBvZiBpdHMgY292ZXJhZ2UsIHByb2hpYml0cyB0aGUgZXhlcmNp c2Ugb2YsIG9yIGlzCisrY29uZGl0aW9uZWQgb24gdGhlIG5vbi1leGVyY2lzZSBvZiBvbmUgb3Ig bW9yZSBvZiB0aGUgcmlnaHRzIHRoYXQgYXJlCisrc3BlY2lmaWNhbGx5IGdyYW50ZWQgdW5kZXIg dGhpcyBMaWNlbnNlLiAgWW91IG1heSBub3QgY29udmV5IGEgY292ZXJlZAorK3dvcmsgaWYgeW91 IGFyZSBhIHBhcnR5IHRvIGFuIGFycmFuZ2VtZW50IHdpdGggYSB0aGlyZCBwYXJ0eSB0aGF0IGlz CisraW4gdGhlIGJ1c2luZXNzIG9mIGRpc3RyaWJ1dGluZyBzb2Z0d2FyZSwgdW5kZXIgd2hpY2gg eW91IG1ha2UgcGF5bWVudAorK3RvIHRoZSB0aGlyZCBwYXJ0eSBiYXNlZCBvbiB0aGUgZXh0ZW50 IG9mIHlvdXIgYWN0aXZpdHkgb2YgY29udmV5aW5nCisrdGhlIHdvcmssIGFuZCB1bmRlciB3aGlj aCB0aGUgdGhpcmQgcGFydHkgZ3JhbnRzLCB0byBhbnkgb2YgdGhlCisrcGFydGllcyB3aG8gd291 bGQgcmVjZWl2ZSB0aGUgY292ZXJlZCB3b3JrIGZyb20geW91LCBhIGRpc2NyaW1pbmF0b3J5Cisr cGF0ZW50IGxpY2Vuc2UgKGEpIGluIGNvbm5lY3Rpb24gd2l0aCBjb3BpZXMgb2YgdGhlIGNvdmVy ZWQgd29yaworK2NvbnZleWVkIGJ5IHlvdSAob3IgY29waWVzIG1hZGUgZnJvbSB0aG9zZSBjb3Bp ZXMpLCBvciAoYikgcHJpbWFyaWx5CisrZm9yIGFuZCBpbiBjb25uZWN0aW9uIHdpdGggc3BlY2lm aWMgcHJvZHVjdHMgb3IgY29tcGlsYXRpb25zIHRoYXQKKytjb250YWluIHRoZSBjb3ZlcmVkIHdv cmssIHVubGVzcyB5b3UgZW50ZXJlZCBpbnRvIHRoYXQgYXJyYW5nZW1lbnQsCisrb3IgdGhhdCBw YXRlbnQgbGljZW5zZSB3YXMgZ3JhbnRlZCwgcHJpb3IgdG8gMjggTWFyY2ggMjAwNy4KKysKKysg IE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIGNvbnN0cnVlZCBhcyBleGNsdWRpbmcg b3IgbGltaXRpbmcKKythbnkgaW1wbGllZCBsaWNlbnNlIG9yIG90aGVyIGRlZmVuc2VzIHRvIGlu ZnJpbmdlbWVudCB0aGF0IG1heQorK290aGVyd2lzZSBiZSBhdmFpbGFibGUgdG8geW91IHVuZGVy IGFwcGxpY2FibGUgcGF0ZW50IGxhdy4KKysKKysgIDEyLiBObyBTdXJyZW5kZXIgb2YgT3RoZXJz JyBGcmVlZG9tLgorKworKyAgSWYgY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRo ZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgorIG90aGVyd2lzZSkgdGhhdCBjb250cmFk aWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKKy1leGN1c2Ug eW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdAor LWRpc3RyaWJ1dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRp b25zIHVuZGVyIHRoaXMKKy1MaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRp b25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91CistbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQ cm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudAorLWxpY2Vuc2Ugd291bGQg bm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYnkK Ky1hbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhy b3VnaCB5b3UsIHRoZW4KKy10aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBh bmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCistcmVmcmFpbiBlbnRpcmVseSBmcm9tIGRpc3Ry aWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbS4KKy0KKy1JZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rp b24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKKy1hbnkgcGFydGljdWxh ciBjaXJjdW1zdGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlzIGludGVuZGVkIHRv CistYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkg aW4gb3RoZXIKKy1jaXJjdW1zdGFuY2VzLgorLQorLUl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0 aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKKy1wYXRlbnRzIG9yIG90 aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQor LXN1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVj dGluZyB0aGUKKy1pbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5 c3RlbSwgd2hpY2ggaXMKKy1pbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMu ICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKKy1nZW5lcm91cyBjb250cmlidXRpb25zIHRvIHRoZSB3 aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkCistdGhyb3VnaCB0aGF0IHN5c3RlbSBp biByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQKKy1zeXN0ZW07IGl0 IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxs aW5nCistdG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhlciBzeXN0ZW0gYW5k IGEgbGljZW5zZWUgY2Fubm90CistaW1wb3NlIHRoYXQgY2hvaWNlLgorLQorLVRoaXMgc2VjdGlv biBpcyBpbnRlbmRlZCB0byBtYWtlIHRob3JvdWdobHkgY2xlYXIgd2hhdCBpcyBiZWxpZXZlZCB0 bworLWJlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLgorLQwKKy0g IDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0 cmljdGVkIGluCistY2VydGFpbiBjb3VudHJpZXMgZWl0aGVyIGJ5IHBhdGVudHMgb3IgYnkgY29w eXJpZ2h0ZWQgaW50ZXJmYWNlcywgdGhlCistb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8g cGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZQorLW1heSBhZGQgYW4gZXhwbGlj aXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZworLXRob3Nl IGNvdW50cmllcywgc28gdGhhdCBkaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIG9ubHkgaW4gb3Ig YW1vbmcKKy1jb3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMg TGljZW5zZSBpbmNvcnBvcmF0ZXMKKy10aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRo ZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KKy0KKy0gIDkuIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zCistb2YgdGhlIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9u cyB3aWxsCisrZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4g IElmIHlvdSBjYW5ub3QgY29udmV5IGEKKytjb3ZlcmVkIHdvcmsgc28gYXMgdG8gc2F0aXNmeSBz aW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKKytMaWNlbnNlIGFuZCBh bnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91 IG1heQorK25vdCBjb252ZXkgaXQgYXQgYWxsLiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBhZ3JlZSB0 byB0ZXJtcyB0aGF0IG9ibGlnYXRlIHlvdQorK3RvIGNvbGxlY3QgYSByb3lhbHR5IGZvciBmdXJ0 aGVyIGNvbnZleWluZyBmcm9tIHRob3NlIHRvIHdob20geW91IGNvbnZleQorK3RoZSBQcm9ncmFt LCB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0ZXJtcyBhbmQgdGhp cworK0xpY2Vuc2Ugd291bGQgYmUgdG8gcmVmcmFpbiBlbnRpcmVseSBmcm9tIGNvbnZleWluZyB0 aGUgUHJvZ3JhbS4KKysKKysgIDEzLiBVc2Ugd2l0aCB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlLgorKworKyAgTm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24g b2YgdGhpcyBMaWNlbnNlLCB5b3UgaGF2ZQorK3Blcm1pc3Npb24gdG8gbGluayBvciBjb21iaW5l IGFueSBjb3ZlcmVkIHdvcmsgd2l0aCBhIHdvcmsgbGljZW5zZWQKKyt1bmRlciB2ZXJzaW9uIDMg b2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbnRvIGEgc2luZ2xlCisr Y29tYmluZWQgd29yaywgYW5kIHRvIGNvbnZleSB0aGUgcmVzdWx0aW5nIHdvcmsuICBUaGUgdGVy bXMgb2YgdGhpcworK0xpY2Vuc2Ugd2lsbCBjb250aW51ZSB0byBhcHBseSB0byB0aGUgcGFydCB3 aGljaCBpcyB0aGUgY292ZXJlZCB3b3JrLAorK2J1dCB0aGUgc3BlY2lhbCByZXF1aXJlbWVudHMg b2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKKytzZWN0aW9uIDEzLCBj b25jZXJuaW5nIGludGVyYWN0aW9uIHRocm91Z2ggYSBuZXR3b3JrIHdpbGwgYXBwbHkgdG8gdGhl CisrY29tYmluYXRpb24gYXMgc3VjaC4KKysKKysgIDE0LiBSZXZpc2VkIFZlcnNpb25zIG9mIHRo aXMgTGljZW5zZS4KKysKKysgIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxp c2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zIG9mCisrdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbAorIGJl IHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVy IGluIGRldGFpbCB0bworIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLgorIAorLUVh Y2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYg dGhlIFByb2dyYW0KKy1zcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ug d2hpY2ggYXBwbGllcyB0byBpdCBhbmQgImFueQorLWxhdGVyIHZlcnNpb24iLCB5b3UgaGF2ZSB0 aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMKKy1laXRoZXIg b2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUg RnJlZQorLVNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVj aWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YKKy10aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFu eSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCistRm91bmRhdGlv bi4KKy0KKy0gIDEwLiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJv Z3JhbSBpbnRvIG90aGVyIGZyZWUKKy1wcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0 aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCistdG8gYXNrIGZvciBwZXJt aXNzaW9uLiAgRm9yIHNvZnR3YXJlIHdoaWNoIGlzIGNvcHlyaWdodGVkIGJ5IHRoZSBGcmVlCist U29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgd2Ugc29tZXRpbWVzCistbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9u IHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKKy1vZiBwcmVzZXJ2aW5nIHRoZSBmcmVl IHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2ZXMgb2Ygb3VyIGZyZWUgc29mdHdhcmUgYW5kCistb2Yg cHJvbW90aW5nIHRoZSBzaGFyaW5nIGFuZCByZXVzZSBvZiBzb2Z0d2FyZSBnZW5lcmFsbHkuCist CistCQkJICAgIE5PIFdBUlJBTlRZCistCistICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBM SUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKKy1GT1IgVEhFIFBS T0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZIEFQUExJQ0FCTEUgTEFXLiAgRVhDRVBU IFdIRU4KKy1PVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJT IEFORC9PUiBPVEhFUiBQQVJUSUVTCistUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKKy1PUiBJTVBMSUVELCBJ TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgor LU1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBU SEUgRU5USVJFIFJJU0sgQVMKKy1UTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhF IFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFCistUFJPR1JBTSBQUk9WRSBERUZFQ1RJ VkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YgQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsCistUkVQ QUlSIE9SIENPUlJFQ1RJT04uCistCistICAxMi4gSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVE IEJZIEFQUExJQ0FCTEUgTEFXIE9SIEFHUkVFRCBUTyBJTiBXUklUSU5HCistV0lMTCBBTlkgQ09Q WVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZIEFORC9PUgor LVJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBU TyBZT1UgRk9SIERBTUFHRVMsCistSU5DTFVESU5HIEFOWSBHRU5FUkFMLCBTUEVDSUFMLCBJTkNJ REVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HCistT1VUIE9GIFRIRSBVU0Ug T1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF RAorLVRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1Ig TE9TU0VTIFNVU1RBSU5FRCBCWQorLVlPVSBPUiBUSElSRCBQQVJUSUVTIE9SIEEgRkFJTFVSRSBP RiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSCistUFJPR1JBTVMpLCBFVkVO IElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFCist UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgorLQorLQkJICAgICBFTkQgT0YgVEVSTVMgQU5E IENPTkRJVElPTlMKKy0MCistCUFwcGVuZGl4OiBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8g WW91ciBOZXcgUHJvZ3JhbXMKKysgIEVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNo aW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlCisrUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNl cnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKKytQdWJsaWMgTGljZW5z ZSAib3IgYW55IGxhdGVyIHZlcnNpb24iIGFwcGxpZXMgdG8gaXQsIHlvdSBoYXZlIHRoZQorK29w dGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0 IG51bWJlcmVkCisrdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUKKytGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qg c3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mIHRoZQorK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlLCB5b3UgbWF5IGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1Ymxpc2hlZAorK2J5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisrCisrICBJZiB0aGUgUHJvZ3JhbSBzcGVjaWZpZXMg dGhhdCBhIHByb3h5IGNhbiBkZWNpZGUgd2hpY2ggZnV0dXJlCisrdmVyc2lvbnMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MKKytwdWJs aWMgc3RhdGVtZW50IG9mIGFjY2VwdGFuY2Ugb2YgYSB2ZXJzaW9uIHBlcm1hbmVudGx5IGF1dGhv cml6ZXMgeW91CisrdG8gY2hvb3NlIHRoYXQgdmVyc2lvbiBmb3IgdGhlIFByb2dyYW0uCisrCisr ICBMYXRlciBsaWNlbnNlIHZlcnNpb25zIG1heSBnaXZlIHlvdSBhZGRpdGlvbmFsIG9yIGRpZmZl cmVudAorK3Blcm1pc3Npb25zLiAgSG93ZXZlciwgbm8gYWRkaXRpb25hbCBvYmxpZ2F0aW9ucyBh cmUgaW1wb3NlZCBvbiBhbnkKKythdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3Vs dCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhCisrbGF0ZXIgdmVyc2lvbi4KKysKKysgIDE1 LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LgorKworKyAgVEhFUkUgSVMgTk8gV0FSUkFOVFkgRk9S IFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWQorK0FQUExJQ0FCTEUgTEFX LiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQK KytIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTIFBST1ZJREUgVEhFIFBST0dSQU0gIkFTIElT IiBXSVRIT1VUIFdBUlJBTlRZCisrT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQgT1IgSU1Q TElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisrVEhFIElNUExJRUQgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorK1BV UlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMgVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNF IE9GIFRIRSBQUk9HUkFNCisrSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFIFBST0dSQU0gUFJPVkUg REVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GCisrQUxMIE5FQ0VTU0FSWSBTRVJWSUNJ TkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgorKworKyAgMTYuIExpbWl0YXRpb24gb2YgTGlhYmls aXR5LgorKworKyAgSU4gTk8gRVZFTlQgVU5MRVNTIFJFUVVJUkVEIEJZIEFQUExJQ0FCTEUgTEFX IE9SIEFHUkVFRCBUTyBJTiBXUklUSU5HCisrV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1Ig QU5ZIE9USEVSIFBBUlRZIFdITyBNT0RJRklFUyBBTkQvT1IgQ09OVkVZUworK1RIRSBQUk9HUkFN IEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVE SU5HIEFOWQorK0dFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBE QU1BR0VTIEFSSVNJTkcgT1VUIE9GIFRIRQorK1VTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQ Uk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIExPU1MgT0YKKytEQVRBIE9SIERB VEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBP UiBUSElSRAorK1BBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUg V0lUSCBBTlkgT1RIRVIgUFJPR1JBTVMpLAorK0VWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIg UEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKytTVUNIIERBTUFH RVMuCisrCisrICAxNy4gSW50ZXJwcmV0YXRpb24gb2YgU2VjdGlvbnMgMTUgYW5kIDE2LgorKwor KyAgSWYgdGhlIGRpc2NsYWltZXIgb2Ygd2FycmFudHkgYW5kIGxpbWl0YXRpb24gb2YgbGlhYmls aXR5IHByb3ZpZGVkCisrYWJvdmUgY2Fubm90IGJlIGdpdmVuIGxvY2FsIGxlZ2FsIGVmZmVjdCBh Y2NvcmRpbmcgdG8gdGhlaXIgdGVybXMsCisrcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBs b2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzCisrYW4gYWJzb2x1dGUgd2Fp dmVyIG9mIGFsbCBjaXZpbCBsaWFiaWxpdHkgaW4gY29ubmVjdGlvbiB3aXRoIHRoZQorK1Byb2dy YW0sIHVubGVzcyBhIHdhcnJhbnR5IG9yIGFzc3VtcHRpb24gb2YgbGlhYmlsaXR5IGFjY29tcGFu aWVzIGEKKytjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuCisrCisrICAg ICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCisrCisrICAgICAg ICAgICAgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIgTmV3IFByb2dyYW1zCisgCisg ICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2Yg dGhlIGdyZWF0ZXN0CisgcG9zc2libGUgdXNlIHRvIHRoZSBwdWJsaWMsIHRoZSBiZXN0IHdheSB0 byBhY2hpZXZlIHRoaXMgaXMgdG8gbWFrZSBpdAorQEAgLTI4NywxNSArNjI4LDE1IEBAIGZyZWUg c29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVy IHRoZXNlIHRlcm1zLgorIAorICAgVG8gZG8gc28sIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGlj ZXMgdG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QKKyB0byBhdHRhY2ggdGhlbSB0byB0aGUg c3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CistY29udmV5IHRo ZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVh c3QKKytzdGF0ZSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3Vs ZCBoYXZlIGF0IGxlYXN0CisgdGhlICJjb3B5cmlnaHQiIGxpbmUgYW5kIGEgcG9pbnRlciB0byB3 aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuCisgCisgICAgIDxvbmUgbGluZSB0byBnaXZl IHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+Cist ICAgIENvcHlyaWdodCAoQykgMTl5eSAgPG5hbWUgb2YgYXV0aG9yPgorKyAgICBDb3B5cmlnaHQg KEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgorIAorLSAgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorICAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorICAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorICAgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKK0BAIC0zMDQsMzYgKzY0NSwzMCBAQCB0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2lu dGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KKyAgICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyAgICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKKy0gICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQQorKyAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAKKyBBbHNvIGFk ZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFw ZXIgbWFpbC4KKyAKKy1JZiB0aGUgcHJvZ3JhbSBpcyBpbnRlcmFjdGl2ZSwgbWFrZSBpdCBvdXRw dXQgYSBzaG9ydCBub3RpY2UgbGlrZSB0aGlzCistd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJh Y3RpdmUgbW9kZToKKysgIElmIHRoZSBwcm9ncmFtIGRvZXMgdGVybWluYWwgaW50ZXJhY3Rpb24s IG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQKKytub3RpY2UgbGlrZSB0aGlzIHdoZW4gaXQgc3RhcnRz IGluIGFuIGludGVyYWN0aXZlIG1vZGU6CisgCistICAgIEdub21vdmlzaW9uIHZlcnNpb24gNjks IENvcHlyaWdodCAoQykgMTl5eSBuYW1lIG9mIGF1dGhvcgorLSAgICBHbm9tb3Zpc2lvbiBjb21l cyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycu CisrICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4K KysgICAgVGhpcyBwcm9ncmFtIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9y IGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KKyAgICAgVGhpcyBpcyBmcmVlIHNvZnR3YXJlLCBhbmQg eW91IGFyZSB3ZWxjb21lIHRvIHJlZGlzdHJpYnV0ZSBpdAorICAgICB1bmRlciBjZXJ0YWluIGNv bmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCisgCisgVGhlIGh5cG90aGV0aWNh bCBjb21tYW5kcyBgc2hvdyB3JyBhbmQgYHNob3cgYycgc2hvdWxkIHNob3cgdGhlIGFwcHJvcHJp YXRlCistcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHRo ZSBjb21tYW5kcyB5b3UgdXNlIG1heQorLWJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBg c2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQorLW1vdXNlLWNsaWNrcyBv ciBtZW51IGl0ZW1zLS13aGF0ZXZlciBzdWl0cyB5b3VyIHByb2dyYW0uCistCistWW91IHNob3Vs ZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9y IHlvdXIKKy1zY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIg Zm9yIHRoZSBwcm9ncmFtLCBpZgorLW5lY2Vzc2FyeS4gIEhlcmUgaXMgYSBzYW1wbGU7IGFsdGVy IHRoZSBuYW1lczoKKy0KKy0gIFlveW9keW5lLCBJbmMuLCBoZXJlYnkgZGlzY2xhaW1zIGFsbCBj b3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlIHByb2dyYW0KKy0gIGBHbm9tb3Zpc2lvbicgKHdoaWNo IG1ha2VzIHBhc3NlcyBhdCBjb21waWxlcnMpIHdyaXR0ZW4gYnkgSmFtZXMgSGFja2VyLgorLQor LSAgPHNpZ25hdHVyZSBvZiBUeSBDb29uPiwgMSBBcHJpbCAxOTg5CistICBUeSBDb29uLCBQcmVz aWRlbnQgb2YgVmljZQorLQorLVRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBkb2VzIG5vdCBw ZXJtaXQgaW5jb3Jwb3JhdGluZyB5b3VyIHByb2dyYW0gaW50bworLXByb3ByaWV0YXJ5IHByb2dy YW1zLiAgSWYgeW91ciBwcm9ncmFtIGlzIGEgc3Vicm91dGluZSBsaWJyYXJ5LCB5b3UgbWF5Cist Y29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBw bGljYXRpb25zIHdpdGggdGhlCistbGlicmFyeS4gIElmIHRoaXMgaXMgd2hhdCB5b3Ugd2FudCB0 byBkbywgdXNlIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsCistUHVibGljIExpY2Vuc2UgaW5zdGVh ZCBvZiB0aGlzIExpY2Vuc2UuCisrcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2Uu ICBPZiBjb3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzCisrbWlnaHQgYmUgZGlmZmVyZW50 OyBmb3IgYSBHVUkgaW50ZXJmYWNlLCB5b3Ugd291bGQgdXNlIGFuICJhYm91dCBib3giLgorKwor KyAgWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHBy b2dyYW1tZXIpIG9yIHNjaG9vbCwKKytpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2Ns YWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYgbmVjZXNzYXJ5LgorK0ZvciBtb3JlIGluZm9ybWF0 aW9uIG9uIHRoaXMsIGFuZCBob3cgdG8gYXBwbHkgYW5kIGZvbGxvdyB0aGUgR05VIEdQTCwgc2Vl CisrPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyAgVGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGRvZXMgbm90IHBlcm1pdCBpbmNvcnBvcmF0aW5nIHlvdXIgcHJvZ3Jh bQorK2ludG8gcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJy b3V0aW5lIGxpYnJhcnksIHlvdQorK21heSBjb25zaWRlciBpdCBtb3JlIHVzZWZ1bCB0byBwZXJt aXQgbGlua2luZyBwcm9wcmlldGFyeSBhcHBsaWNhdGlvbnMgd2l0aAorK3RoZSBsaWJyYXJ5LiAg SWYgdGhpcyBpcyB3aGF0IHlvdSB3YW50IHRvIGRvLCB1c2UgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bAorK1B1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBw bGVhc2UgcmVhZAorKzxodHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS93aHktbm90LWxncGwu aHRtbD4uCistLS0gYS9yZWFkbGluZS9DaGFuZ2VMb2cuZ2RiCisrKysgYi9yZWFkbGluZS9DaGFu Z2VMb2cuZ2RiCitAQCAtMSwzICsxLDEyIEBACisrMjAxMS0wNC0zMCAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorKworKwlXb3JrYXJvdW5kIGdkYi5iYXNlL2Nv bXBsZXRpb24uZXhwIHJlZ3Jlc3Npb24gb24gcmVhZGxpbmUtNi4yLgorKwkqIGNvbXBsZXRlLmMg KGdldF95X29yX24pOiBEaXNhYmxlIHRoZSByZXR1cm4gb24gUkxfU1RBVEVfQ0FMTEJBQ0suCisr CisrMjAxMS0wNC0yNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgorKworKwlJbXBvcnRlZCByZWFkbGluZSA2LjIsIGFuZCB1cHN0cmVhbSBwYXRjaCAwMDEuCisr CisgMjAxMS0wMy0wNCAgTWljaGFlbCBTbnlkZXIgIDxtc255ZGVyQHZtd2FyZS5jb20+CisgCisg CSogYmluZC5jIChybF9mdW5jdGlvbl9kdW1wZXIpOiBGcmVlIGFsbG9jYXRlZCBtZW1vcnkuCist LS0gYS9yZWFkbGluZS9JTlNUQUxMCisrKysgYi9yZWFkbGluZS9JTlNUQUxMCitAQCAtMSw3ICsx LDcgQEAKKyBCYXNpYyBJbnN0YWxsYXRpb24KKyA9PT09PT09PT09PT09PT09PT0KKyAKKy1UaGVz ZSBhcmUgaW5zdGFsbGF0aW9uIGluc3RydWN0aW9ucyBmb3IgUmVhZGxpbmUtNS4xLgorK1RoZXNl IGFyZSBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zIGZvciBSZWFkbGluZS02LjIuCisgCisgVGhl IHNpbXBsZXN0IHdheSB0byBjb21waWxlIHJlYWRsaW5lIGlzOgorIAorLS0tIGEvcmVhZGxpbmUv TUFOSUZFU1QKKysrKyBiL3JlYWRsaW5lL01BTklGRVNUCitAQCAtMyw2ICszLDcgQEAKKyAjCisg ZG9jCQlkCisgZXhhbXBsZXMJZAorK2V4YW1wbGVzL2F1dG9jb25mCWQKKyBleGFtcGxlcy9ybGZl CWQKKyBzdXBwb3J0CQlkCisgc2hsaWIJCWQKK0BAIC0yNiw2ICsyNyw3IEBAIGhpc3RsaWIuaAlm Cisga2V5bWFwcy5oCWYKKyBwb3NpeGRpci5oCWYKKyBwb3NpeGptcC5oCWYKKytwb3NpeHNlbGVj dC5oCWYKKyBwb3NpeHN0YXQuaAlmCisgcmVhZGxpbmUuaAlmCisgcmxjb25mLmgJZgorQEAgLTY5 LDExICs3MSwxMyBAQCB1bmRvLmMJCWYKKyB1dGlsLmMJCWYKKyB2aV9rZXltYXAuYwlmCisgdmlf bW9kZS5jCWYKKyt4ZnJlZS5jCQlmCisgeG1hbGxvYy5jCWYKKyBoaXN0b3J5LmMJZgorIGhpc3Rl eHBhbmQuYwlmCisgaGlzdGZpbGUuYwlmCisgaGlzdHNlYXJjaC5jCWYKKytwYXRjaGxldmVsCWYK KyBzaGxpYi9NYWtlZmlsZS5pbglmCisgc3VwcG9ydC9jb25maWcuZ3Vlc3MJZgorIHN1cHBvcnQv Y29uZmlnLnJwYXRoCWYKK0BAIC0xMDcsMTIgKzExMSwxNiBAQCBleGFtcGxlcy9tYW5leGFtcC5j CWYKKyBleGFtcGxlcy9yZWFkbGluZWJ1Zi5oCWYKKyBleGFtcGxlcy9ybC1mZ2V0cy5jCWYKKyBl eGFtcGxlcy9ybGNhdC5jCWYKKytleGFtcGxlcy9ybGV2ZW50LmMJZgorIGV4YW1wbGVzL3JsdGVz dC5jCWYKKyBleGFtcGxlcy9ybC5jCQlmCisgZXhhbXBsZXMvcmxwdHl0ZXN0LmMJZgorIGV4YW1w bGVzL3JsdmVyc2lvbi5jCWYKKyBleGFtcGxlcy9oaXN0ZXhhbXAuYwlmCisgZXhhbXBsZXMvSW5w dXRyYwlmCisrZXhhbXBsZXMvYXV0b2NvbmYvQkFTSF9DSEVDS19MSUJfVEVSTUNBUAlmCisrZXhh bXBsZXMvYXV0b2NvbmYvUkxfTElCX1JFQURMSU5FX1ZFUlNJT04JZgorK2V4YW1wbGVzL2F1dG9j b25mL3dpX0xJQl9SRUFETElORQlmCisgZXhhbXBsZXMvcmxmZS9DaGFuZ2VMb2cJCWYKKyBleGFt cGxlcy9ybGZlL01ha2VmaWxlLmluCWYKKyBleGFtcGxlcy9ybGZlL1JFQURNRQkJZgorQEAgLTEy NCw2ICsxMzIsNyBAQCBleGFtcGxlcy9ybGZlL29zLmgJCWYKKyBleGFtcGxlcy9ybGZlL3B0eS5j CQlmCisgZXhhbXBsZXMvcmxmZS9ybGZlLmMJCWYKKyBleGFtcGxlcy9ybGZlL3NjcmVlbi5oCQlm CisrZXhhbXBsZXMvcmx3cmFwLTAuMzAudGFyLmd6CWYKKyAjIGZvcm1hdHRlZCBkb2N1bWVudGF0 aW9uLCBmcm9tIE1BTklGRVNULmRvYworIGRvYy9yZWFkbGluZS5wcwkJZgorIGRvYy9oaXN0b3J5 LnBzCQlmCistLS0gYS9yZWFkbGluZS9NYWtlZmlsZS5pbgorKysrIGIvcmVhZGxpbmUvTWFrZWZp bGUuaW4KK0BAIC0xLDIwICsxLDIwIEBACisgIyMgLSotIHRleHQgLSotICMjCisgIyBNYXN0ZXIg TWFrZWZpbGUgZm9yIHRoZSBHTlUgcmVhZGxpbmUgbGlicmFyeS4KKy0jIENvcHlyaWdodCAoQykg MTk5NC0yMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgQ29weXJpZ2h0IChD KSAxOTk0LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0jIGFueSBsYXRlciB2ZXJzaW9u LgorKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrIyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysjICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysj ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisgCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0jIEZvdW5kYXRpb24sIElu Yy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4KKyBS TF9MSUJSQVJZX1ZFUlNJT04gPSBATElCVkVSU0lPTkAKKyBSTF9MSUJSQVJZX05BTUUgPSByZWFk bGluZQorIAorQEAgLTU4LDcgKzU4LDcgQEAgbGliZGlyID0gQGxpYmRpckAKKyBtYW5kaXIgPSBA bWFuZGlyQAorIGluY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKKyBkYXRhZGlyID0gQGRhdGFkaXJA CistbG9jYWxlZGlyID0gJChkYXRhZGlyKS9sb2NhbGUKKytsb2NhbGVkaXIgPSBAbG9jYWxlZGly QAorIAorIGluZm9kaXIgPSBAaW5mb2RpckAKKyAKK0BAIC02OCw3ICs2OCw3IEBAIG1hbjNkaXIg PSAkKG1hbmRpcikvbWFuMworIERFU1RESVIgPQorIAorICMgUHJvZ3JhbXMgdG8gbWFrZSB0YWdz IGZpbGVzLgorLUVUQUdTID0gZXRhZ3MgLXR3CisrRVRBR1MgPSBldGFncworIENUQUdTID0gY3Rh Z3MgLXR3CisgCisgQ0ZMQUdTID0gQENGTEFHU0AKK0BAIC0xMDAsOCArMTAwLDYgQEAgR0NDX0xJ TlRfQ0ZMQUdTID0gJChYQ0NGTEFHUykgJChHQ0NfTElOVF9GTEFHUykgQENGTEFHU0AgQExPQ0FM X0NGTEFHU0AKKyBMSUJSQVJZX05BTUUgPSBsaWJyZWFkbGluZS5hCisgU1RBVElDX0xJQlMgPSBs aWJyZWFkbGluZS5hIGxpYmhpc3RvcnkuYQorIAorLVdDV0lEVEhfT0JKID0gQFdDV0lEVEhfT0JK QAorLQorICMgVGhlIEMgY29kZSBzb3VyY2UgZmlsZXMgZm9yIHRoaXMgbGlicmFyeS4KKyBDU09V UkNFUyA9ICQoc3JjZGlyKS9yZWFkbGluZS5jICQoc3JjZGlyKS9mdW5tYXAuYyAkKHNyY2Rpcikv a2V5bWFwcy5jIFwKKyAJICAgJChzcmNkaXIpL3ZpX21vZGUuYyAkKHNyY2RpcikvcGFyZW5zLmMg JChzcmNkaXIpL3JsdHR5LmMgXAorQEAgLTEwOSwyNiArMTA3LDI4IEBAIENTT1VSQ0VTID0gJChz cmNkaXIpL3JlYWRsaW5lLmMgJChzcmNkaXIpL2Z1bm1hcC5jICQoc3JjZGlyKS9rZXltYXBzLmMg XAorIAkgICAkKHNyY2RpcikvZGlzcGxheS5jICQoc3JjZGlyKS9zaWduYWxzLmMgJChzcmNkaXIp L2VtYWNzX2tleW1hcC5jIFwKKyAJICAgJChzcmNkaXIpL3ZpX2tleW1hcC5jICQoc3JjZGlyKS91 dGlsLmMgJChzcmNkaXIpL2tpbGwuYyBcCisgCSAgICQoc3JjZGlyKS91bmRvLmMgJChzcmNkaXIp L21hY3JvLmMgJChzcmNkaXIpL2lucHV0LmMgXAorLQkgICAkKHNyY2RpcikvY2FsbGJhY2suYyAk KHNyY2RpcikvdGVybWluYWwuYyAkKHNyY2RpcikveG1hbGxvYy5jIFwKKysJICAgJChzcmNkaXIp L2NhbGxiYWNrLmMgJChzcmNkaXIpL3Rlcm1pbmFsLmMgJChzcmNkaXIpL3htYWxsb2MuYyAkKHNy Y2RpcikveGZyZWUuYyBcCisgCSAgICQoc3JjZGlyKS9oaXN0b3J5LmMgJChzcmNkaXIpL2hpc3Rz ZWFyY2guYyAkKHNyY2RpcikvaGlzdGV4cGFuZC5jIFwKKyAJICAgJChzcmNkaXIpL2hpc3RmaWxl LmMgJChzcmNkaXIpL25scy5jICQoc3JjZGlyKS9zZWFyY2guYyBcCisgCSAgICQoc3JjZGlyKS9z aGVsbC5jICQoc3JjZGlyKS9zYXZlc3RyaW5nLmMgJChzcmNkaXIpL3RpbGRlLmMgXAorIAkgICAk KHNyY2RpcikvdGV4dC5jICQoc3JjZGlyKS9taXNjLmMgJChzcmNkaXIpL2NvbXBhdC5jIFwKKy0J ICAgJChzcmNkaXIpL21idXRpbC5jICQoc3JjZGlyKS9zdXBwb3J0L3djd2lkdGguYworKwkgICAk KHNyY2RpcikvbWJ1dGlsLmMKKyAKKyAjIFRoZSBoZWFkZXIgZmlsZXMgZm9yIHRoaXMgbGlicmFy eS4KKy1IU09VUkNFUyA9IHJlYWRsaW5lLmggcmxkZWZzLmggY2hhcmRlZnMuaCBrZXltYXBzLmgg aGlzdG9yeS5oIGhpc3RsaWIuaCBcCistCSAgIHBvc2l4c3RhdC5oIHBvc2l4ZGlyLmggcG9zaXhq bXAuaCB0aWxkZS5oIHJsY29uZi5oIHJsdHR5LmggXAorLQkgICBhbnNpX3N0ZGxpYi5oIHRjYXAu aCBybHN0ZGMuaCB4bWFsbG9jLmggcmxwcml2YXRlLmggcmxzaGVsbC5oIFwKKy0JICAgcmx0eXBl ZGVmcy5oIHJsbWJ1dGlsLmgKKytIU09VUkNFUyA9ICQoc3JjZGlyKS9yZWFkbGluZS5oICQoc3Jj ZGlyKS9ybGRlZnMuaCAkKHNyY2RpcikvY2hhcmRlZnMuaCBcCisrCSAgICQoc3JjZGlyKS9rZXlt YXBzLmggJChzcmNkaXIpL2hpc3RvcnkuaCAkKHNyY2RpcikvaGlzdGxpYi5oIFwKKysJICAgJChz cmNkaXIpL3Bvc2l4c3RhdC5oICQoc3JjZGlyKS9wb3NpeGRpci5oICQoc3JjZGlyKS9wb3NpeGpt cC5oIFwKKysJICAgJChzcmNkaXIpL3RpbGRlLmggJChzcmNkaXIpL3JsY29uZi5oICQoc3JjZGly KS9ybHR0eS5oIFwKKysJICAgJChzcmNkaXIpL2Fuc2lfc3RkbGliLmggJChzcmNkaXIpL3RjYXAu aCAkKHNyY2RpcikvcmxzdGRjLmggXAorKwkgICAkKHNyY2RpcikveG1hbGxvYy5oICQoc3JjZGly KS9ybHByaXZhdGUuaCAkKHNyY2RpcikvcmxzaGVsbC5oIFwKKysJICAgJChzcmNkaXIpL3JsdHlw ZWRlZnMuaCAkKHNyY2RpcikvcmxtYnV0aWwuaAorIAorIEhJU1RPQkogPSBoaXN0b3J5Lm8gaGlz dGV4cGFuZC5vIGhpc3RmaWxlLm8gaGlzdHNlYXJjaC5vIHNoZWxsLm8gbWJ1dGlsLm8KKyBUSUxE RU9CSiA9IHRpbGRlLm8KKyBPQkpFQ1RTID0gcmVhZGxpbmUubyB2aV9tb2RlLm8gZnVubWFwLm8g a2V5bWFwcy5vIHBhcmVucy5vIHNlYXJjaC5vIFwKKyAJICBybHR0eS5vIGNvbXBsZXRlLm8gYmlu ZC5vIGlzZWFyY2gubyBkaXNwbGF5Lm8gc2lnbmFscy5vIFwKKyAJICB1dGlsLm8ga2lsbC5vIHVu ZG8ubyBtYWNyby5vIGlucHV0Lm8gY2FsbGJhY2subyB0ZXJtaW5hbC5vIFwKKy0JICB0ZXh0Lm8g bmxzLm8gbWlzYy5vIGNvbXBhdC5vIHhtYWxsb2MubyAkKEhJU1RPQkopICQoVElMREVPQkopIFwK Ky0JICAkKFdDV0lEVEhfT0JKKQorKwkgIHRleHQubyBubHMubyBtaXNjLm8gY29tcGF0Lm8geGZy ZWUubyB4bWFsbG9jLm8gJChISVNUT0JKKSAkKFRJTERFT0JKKQorIAorICMgVGhlIHRleGluZm8g ZmlsZXMgd2hpY2ggZG9jdW1lbnQgdGhpcyBsaWJyYXJ5LgorIERPQ1NPVVJDRSA9IGRvYy9ybG1h bi50ZXhpbmZvIGRvYy9ybHRlY2gudGV4aW5mbyBkb2Mvcmx1c2VyLnRleGluZm8KK0BAIC0xNTks MTUgKzE1OSwxMSBAQCBsaWJyZWFkbGluZS5hOiAkKE9CSkVDVFMpCisgCSQoQVIpICQoQVJGTEFH UykgJEAgJChPQkpFQ1RTKQorIAktdGVzdCAtbiAiJChSQU5MSUIpIiAmJiAkKFJBTkxJQikgJEAK KyAKKy1saWJoaXN0b3J5LmE6ICQoSElTVE9CSikgeG1hbGxvYy5vCisrbGliaGlzdG9yeS5hOiAk KEhJU1RPQkopIHhtYWxsb2MubyB4ZnJlZS5vCisgCSQoUk0pICRACistCSQoQVIpICQoQVJGTEFH UykgJEAgJChISVNUT0JKKSB4bWFsbG9jLm8KKysJJChBUikgJChBUkZMQUdTKSAkQCAkKEhJU1RP QkopIHhtYWxsb2MubyB4ZnJlZS5vCisgCS10ZXN0IC1uICIkKFJBTkxJQikiICYmICQoUkFOTElC KSAkQAorIAorLXdjd2lkdGgubzogJChzcmNkaXIpL3N1cHBvcnQvd2N3aWR0aC5jCistCSQoUk0p ICRACistCSQoQ0MpICQoQ0NGTEFHUykgLWMgJChzcmNkaXIpL3N1cHBvcnQvd2N3aWR0aC5jCist CisgIyBTaW5jZSB0aWxkZS5jIGlzIHNoYXJlZCBiZXR3ZWVuIHJlYWRsaW5lIGFuZCBiYXNoLCBt YWtlIHN1cmUgd2UgY29tcGlsZQorICMgaXQgd2l0aCB0aGUgcmlnaHQgZmxhZ3Mgd2hlbiBpdCdz IGJ1aWx0IGFzIHBhcnQgb2YgcmVhZGxpbmUKKyB0aWxkZS5vOgl0aWxkZS5jCitAQCAtMTc1LDcg KzE3MSw3IEBAIHRpbGRlLm86CXRpbGRlLmMKKyAJJChDQykgJChDQ0ZMQUdTKSAtRFJFQURMSU5F X0xJQlJBUlkgLWMgJChzcmNkaXIpL3RpbGRlLmMKKyAKKyByZWFkbGluZTogJChPQkpFQ1RTKSBy ZWFkbGluZS5oIHJsZGVmcy5oIGNoYXJkZWZzLmggLi9saWJyZWFkbGluZS5hCistCSQoQ0MpICQo Q0NGTEFHUykgLW8gJEAgLi9leGFtcGxlcy9ybC5jIC4vbGlicmVhZGxpbmUuYSAke1RFUk1DQVBf TElCfQorKwkkKENDKSAkKENDRkxBR1MpIC1EUkVBRExJTkVfTElCUkFSWSAtbyAkQCAkKHRvcF9z cmNkaXIpL2V4YW1wbGVzL3JsLmMgLi9saWJyZWFkbGluZS5hICR7VEVSTUNBUF9MSUJ9CisgCisg bGludDoJZm9yY2UKKyAJJChNQUtFKSAkKE1GTEFHUykgQ0NGTEFHUz0nJChHQ0NfTElOVF9DRkxB R1MpJyBzdGF0aWMKK0BAIC0yMDAsNiArMTk2LDcgQEAgc3RhbXAtaDogY29uZmlnLnN0YXR1cyAk KHNyY2RpcikvY29uZmlnLmguaW4KKyAjJChzcmNkaXIpL2NvbmZpZ3VyZTogJChzcmNkaXIpL2Nv bmZpZ3VyZS5pbgkjIyBDb21tZW50LW1lLW91dCBpbiBkaXN0cmlidXRpb24KKyAjCWNkICQoc3Jj ZGlyKSAmJiBhdXRvY29uZgkjIyBDb21tZW50LW1lLW91dCBpbiBkaXN0cmlidXRpb24KKyAKKysK KyBzaGFyZWQ6CWZvcmNlCisgCS10ZXN0IC1kIHNobGliIHx8IG1rZGlyIHNobGliCisgCS0oIGNk IHNobGliIDsgJHtNQUtFfSAke01GTEFHU30gYWxsICkKK0BAIC0yMTQsMTcgKzIxMSw2IEBAIGV4 YW1wbGVzOiBmb3JjZQorIAorIGZvcmNlOgorIAorLWluc3RhbGwtaGVhZGVyczogaW5zdGFsbGRp cnMgJHtJTlNUQUxMRURfSEVBREVSU30KKy0JZm9yIGYgaW4gJHtJTlNUQUxMRURfSEVBREVSU307 IGRvIFwKKy0JCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvJCRmICQoREVTVERJUikkKGluY2x1 ZGVkaXIpL3JlYWRsaW5lIDsgXAorLQlkb25lCistCistdW5pbnN0YWxsLWhlYWRlcnM6CistCS10 ZXN0IC1uICIkKGluY2x1ZGVkaXIpIiAmJiBjZCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS9yZWFk bGluZSAmJiBcCistCQkke1JNfSAke0lOU1RBTExFRF9IRUFERVJTfQorLQorLW1heWJlLXVuaW5z dGFsbC1oZWFkZXJzOiB1bmluc3RhbGwtaGVhZGVycworLQorICMjIEdEQiBMT0NBTAorICMjIERv bid0IG1lc3Mgd2l0aCBwZW9wbGUncyBpbnN0YWxsZWQgcmVhZGxpbmUncy4KKyAjIyBUaGlzIHRy aWVzIHRvIGluc3RhbGwgdGhpcyB2ZXJzaW9uIG9mIHJlYWRsaW5lIG92ZXIgd2hhdGV2ZXIKK0BA IC0yMzcsNyArMjIzLDE4IEBAIGluc3RhbGw6CisgCisgI2luc3RhbGw6CSQoSU5TVEFMTF9UQVJH RVRTKQorIAorLWluc3RhbGwtc3RhdGljOiBpbnN0YWxsZGlycyAkKFNUQVRJQ19MSUJTKSBpbnN0 YWxsLWhlYWRlcnMgaW5zdGFsbC1kb2MKKytpbnN0YWxsLWhlYWRlcnM6IGluc3RhbGxkaXJzICR7 SU5TVEFMTEVEX0hFQURFUlN9CisrCWZvciBmIGluICR7SU5TVEFMTEVEX0hFQURFUlN9OyBkbyBc CisrCQkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkZiAkKERFU1RESVIpJChpbmNsdWRlZGly KS9yZWFkbGluZSA7IFwKKysJZG9uZQorKworK3VuaW5zdGFsbC1oZWFkZXJzOgorKwktdGVzdCAt biAiJChpbmNsdWRlZGlyKSIgJiYgY2QgJChERVNURElSKSQoaW5jbHVkZWRpcikvcmVhZGxpbmUg JiYgXAorKwkJJHtSTX0gJHtJTlNUQUxMRURfSEVBREVSU30KKysKKyttYXliZS11bmluc3RhbGwt aGVhZGVyczogdW5pbnN0YWxsLWhlYWRlcnMKKysKKytpbnN0YWxsLXN0YXRpYzogaW5zdGFsbGRp cnMgJChTVEFUSUNfTElCUykgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtZG9jIGluc3RhbGwtZXhh bXBsZXMKKyAJLSQoTVYpICQoREVTVERJUikkKGxpYmRpcikvbGlicmVhZGxpbmUuYSAkKERFU1RE SVIpJChsaWJkaXIpL2xpYnJlYWRsaW5lLm9sZAorIAkkKElOU1RBTExfREFUQSkgbGlicmVhZGxp bmUuYSAkKERFU1RESVIpJChsaWJkaXIpL2xpYnJlYWRsaW5lLmEKKyAJLXRlc3QgLW4gIiQoUkFO TElCKSIgJiYgJChSQU5MSUIpICQoREVTVERJUikkKGxpYmRpcikvbGlicmVhZGxpbmUuYQorQEAg LTI1MCw3ICsyNDcsNyBAQCBpbnN0YWxsZGlyczogJChzcmNkaXIpL3N1cHBvcnQvbWtpbnN0YWxs ZGlycworIAkJJChERVNURElSKSQoaW5jbHVkZWRpcikvcmVhZGxpbmUgJChERVNURElSKSQobGli ZGlyKSBcCisgCQkkKERFU1RESVIpJChpbmZvZGlyKSAkKERFU1RESVIpJChtYW4zZGlyKQorIAor LXVuaW5zdGFsbDogdW5pbnN0YWxsLWhlYWRlcnMgdW5pbnN0YWxsLWRvYworK3VuaW5zdGFsbDog dW5pbnN0YWxsLWhlYWRlcnMgdW5pbnN0YWxsLWRvYyB1bmluc3RhbGwtZXhhbXBsZXMKKyAJLXRl c3QgLW4gIiQoREVTVERJUikkKGxpYmRpcikiICYmIGNkICQoREVTVERJUikkKGxpYmRpcikgJiYg XAorIAkJJHtSTX0gbGlicmVhZGxpbmUuYSBsaWJyZWFkbGluZS5vbGQgbGliaGlzdG9yeS5hIGxp Ymhpc3Rvcnkub2xkICQoU0hBUkVEX0xJQlMpCisgCS0oIGNkIHNobGliOyAke01BS0V9ICR7TUZM QUdTfSBERVNURElSPSR7REVTVERJUn0gdW5pbnN0YWxsICkKK0BAIC0yNjEsNiArMjU4LDEyIEBA IGluc3RhbGwtc2hhcmVkOiBpbnN0YWxsZGlycyBpbnN0YWxsLWhlYWRlcnMgc2hhcmVkIGluc3Rh bGwtZG9jCisgdW5pbnN0YWxsLXNoYXJlZDogbWF5YmUtdW5pbnN0YWxsLWhlYWRlcnMKKyAJLSgg Y2Qgc2hsaWI7ICR7TUFLRX0gJHtNRkxBR1N9IERFU1RESVI9JHtERVNURElSfSB1bmluc3RhbGwg KQorIAorK2luc3RhbGwtZXhhbXBsZXM6IGluc3RhbGxkaXJzIGluc3RhbGwtaGVhZGVycyBzaGFy ZWQKKysJLSggY2QgZXhhbXBsZXMgOyAke01BS0V9ICR7TUZMQUdTfSBERVNURElSPSR7REVTVERJ Un0gaW5zdGFsbCApCisrCQorK3VuaW5zdGFsbC1leGFtcGxlczogbWF5YmUtdW5pbnN0YWxsLWhl YWRlcnMKKysJLSggY2QgZXhhbXBsZXM7ICR7TUFLRX0gJHtNRkxBR1N9IERFU1RESVI9JHtERVNU RElSfSB1bmluc3RhbGwgKQorKworIGluc3RhbGwtZG9jOglpbnN0YWxsZGlycworIAktKCBpZiB0 ZXN0IC1kIGRvYyA7IHRoZW4gXAorIAkJY2QgZG9jICYmIFwKK0BAIC0yNzQsMTAgKzI3NywxMCBA QCB1bmluc3RhbGwtZG9jOgorIAkgIGZpICkKKyAKKyBUQUdTOglmb3JjZQorLQkkKEVUQUdTKSAk KENTT1VSQ0VTKSAkKEhTT1VSQ0VTKQorKwktKCBjZCAkKHNyY2RpcikgJiYgJChFVEFHUykgJChD U09VUkNFUykgJChIU09VUkNFUykgKQorIAorIHRhZ3M6CWZvcmNlCistCSQoQ1RBR1MpICQoQ1NP VVJDRVMpICQoSFNPVVJDRVMpCisrCS0oIGNkICQoc3JjZGlyKSAmJiAkKENUQUdTKSAkKENTT1VS Q0VTKSAkKEhTT1VSQ0VTKSApCisgCisgY2xlYW46CWZvcmNlCisgCSQoUk0pICQoT0JKRUNUUykg JChTVEFUSUNfTElCUykKK0BAIC0yOTksMTIgKzMwMiwxNCBAQCBkaXN0Y2xlYW4gbWFpbnRhaW5l ci1jbGVhbjogY2xlYW4KKyAJJChSTSkgJChDUkVBVEVEX0NPTkZJR1VSRSkKKyAJJChSTSkgJChD UkVBVEVEX1RBR1MpCisgCistaW5mbyBkdmkgaHRtbCBwZGY6CisraW5mbyBkdmkgaHRtbCBwZGYg cHM6CisgCS0oIGNkIGRvYyAmJiAkKE1BS0UpICQoTUZMQUdTKSAkQCApCisgCisgaW5zdGFsbC1p bmZvOgorK2luc3RhbGwtZHZpOgorIGluc3RhbGwtaHRtbDoKKyBpbnN0YWxsLXBkZjoKKytpbnN0 YWxsLXBzOgorIGNoZWNrOgorIGluc3RhbGxjaGVjazoKKyAKK0BAIC00MTYsNiArNDIxLDggQEAg dXRpbC5vOiByZWFkbGluZS5oIGtleW1hcHMuaCBybHR5cGVkZWZzLmggY2hhcmRlZnMuaCB0aWxk ZS5oIHJsc3RkYy5oCisgdmlfbW9kZS5vOiBybGRlZnMuaCAke0JVSUxEX0RJUn0vY29uZmlnLmgg cmxjb25mLmgKKyB2aV9tb2RlLm86IHJlYWRsaW5lLmgga2V5bWFwcy5oIHJsdHlwZWRlZnMuaCBj aGFyZGVmcy5oIHRpbGRlLmgKKyB2aV9tb2RlLm86IGhpc3RvcnkuaCBhbnNpX3N0ZGxpYi5oIHJs c3RkYy5oCisreGZyZWUubzogJHtCVUlMRF9ESVJ9L2NvbmZpZy5oCisreGZyZWUubzogYW5zaV9z dGRsaWIuaAorIHhtYWxsb2MubzogJHtCVUlMRF9ESVJ9L2NvbmZpZy5oCisgeG1hbGxvYy5vOiBh bnNpX3N0ZGxpYi5oCisgCitAQCAtNDc0LDYgKzQ4MSw3IEBAIHRpbGRlLm86IHhtYWxsb2MuaAor IHVuZG8ubzogeG1hbGxvYy5oCisgdXRpbC5vOiB4bWFsbG9jLmgKKyB2aV9tb2RlLm86IHhtYWxs b2MuaAorK3hmcmVlLm86IHhtYWxsb2MuaAorIHhtYWxsb2MubzogeG1hbGxvYy5oCisgCisgY29t cGxldGUubzogcmxtYnV0aWwuaAorQEAgLTUxNSw2ICs1MjMsNyBAQCB0aWxkZS5vOiAkKHNyY2Rp cikvdGlsZGUuYworIHVuZG8ubzogJChzcmNkaXIpL3VuZG8uYworIHV0aWwubzogJChzcmNkaXIp L3V0aWwuYworIHZpX21vZGUubzogJChzcmNkaXIpL3ZpX21vZGUuYworK3hmcmVlLm86ICQoc3Jj ZGlyKS94ZnJlZS5jCisgeG1hbGxvYy5vOiAkKHNyY2RpcikveG1hbGxvYy5jCisgCisgaGlzdGV4 cGFuZC5vOiAkKHNyY2RpcikvaGlzdGV4cGFuZC5jCitAQCAtNTQ5LDYgKzU1OCw3IEBAIHRpbGRl Lm86IHRpbGRlLmMKKyB1bmRvLm86IHVuZG8uYworIHV0aWwubzogdXRpbC5jCisgdmlfbW9kZS5v OiB2aV9tb2RlLmMKKyt4ZnJlZS5vOiB4ZnJlZS5jCisgeG1hbGxvYy5vOiB4bWFsbG9jLmMKKyAK KyBoaXN0ZXhwYW5kLm86IGhpc3RleHBhbmQuYworLS0tIGEvcmVhZGxpbmUvTkVXUworKysrIGIv cmVhZGxpbmUvTkVXUworQEAgLTEsMzIgKzEsMTkgQEAKKy1UaGlzIGlzIGEgdGVyc2UgZGVzY3Jp cHRpb24gb2YgdGhlIG5ldyBmZWF0dXJlcyBhZGRlZCB0byByZWFkbGluZS01LjEgc2luY2UKKy10 aGUgcmVsZWFzZSBvZiByZWFkbGluZS01LjAuCisrVGhpcyBpcyBhIHRlcnNlIGRlc2NyaXB0aW9u IG9mIHRoZSBuZXcgZmVhdHVyZXMgYWRkZWQgdG8gcmVhZGxpbmUtNi4yIHNpbmNlCisrdGhlIHJl bGVhc2Ugb2YgcmVhZGxpbmUtNi4xLgorIAorLTEuICBOZXcgRmVhdHVyZXMgaW4gUmVhZGxpbmUK KythLiAgVGhlIGhpc3RvcnkgbGlicmFyeSBkb2VzIG5vdCB0cnkgdG8gd3JpdGUgdGhlIGhpc3Rv cnkgZmlsZW5hbWUgaW4gdGhlCisrICAgIGN1cnJlbnQgZGlyZWN0b3J5IGlmICRIT01FIGlzIHVu c2V0LiAgVGhpcyBjbG9zZXMgYSBwb3RlbnRpYWwgc2VjdXJpdHkKKysgICAgcHJvYmxlbSBpZiB0 aGUgYXBwbGljYXRpb24gZG9lcyBub3Qgc3BlY2lmeSBhIGhpc3RvcnkgZmlsZW5hbWUuCisgCist YS4gIFRoZSBrZXkgc2VxdWVuY2Ugc2VudCBieSB0aGUga2V5cGFkIGBkZWxldGUnIGtleSBpcyBu b3cgYXV0b21hdGljYWxseSAgIAorLSAgICBib3VuZCB0byBkZWxldGUtY2hhci4KKytiLiAgTmV3 IGJpbmRhYmxlIHZhcmlhYmxlIGBjb21wbGV0aW9uLWRpc3BsYXktd2lkdGgnIHRvIHNldCB0aGUg bnVtYmVyIG9mCisrICAgIGNvbHVtbnMgdXNlZCB3aGVuIGRpc3BsYXlpbmcgY29tcGxldGlvbnMu CisgCistYi4gIEEgbmVnYXRpdmUgYXJndW1lbnQgdG8gbWVudS1jb21wbGV0ZSBub3cgY3ljbGVz IGJhY2t3YXJkIHRocm91Z2ggdGhlCistICAgIGNvbXBsZXRpb24gbGlzdC4KKytjLiAgTmV3IGJp bmRhYmxlIHZhcmlhYmxlIGBjb21wbGV0aW9uLWNhc2UtbWFwJyB0byBjYXVzZSBjYXNlLWluc2Vu c2l0aXZlCisrICAgIGNvbXBsZXRpb24gdG8gdHJlYXQgYC0nIGFuZCBgXycgYXMgaWRlbnRpY2Fs LgorIAorLWMuICBBIG5ldyBiaW5kYWJsZSByZWFkbGluZSB2YXJpYWJsZTogIGJpbmQtdHR5LXNw ZWNpYWwtY2hhcnMuICBJZiBub24temVybywKKy0gICAgcmVhZGxpbmUgd2lsbCBiaW5kIHRoZSB0 ZXJtaW5hbCBzcGVjaWFsIGNoYXJhY3RlcnMgdG8gdGhlaXIgcmVhZGxpbmUKKy0gICAgZXF1aXZh bGVudHMgd2hlbiBpdCdzIGNhbGxlZCAob24gYnkgZGVmYXVsdCkuCisrZC4gIFRoZXJlIGFyZSBu ZXcgYmluZGFibGUgdmktbW9kZSBjb21tYW5kIG5hbWVzIHRvIGF2b2lkIHJlYWRsaW5lJ3MgY2Fz ZS0KKysgICAgaW5zZW5zaXRpdmUgbWF0Y2hpbmcgbm90IGFsbG93aW5nIHRoZW0gdG8gYmUgYm91 bmQgc2VwYXJhdGVseS4KKyAKKy1kLiAgTmV3IGJpbmRhYmxlIGNvbW1hbmQ6IHZpLXJ1Ym91dC4g IFNhdmVzIGRlbGV0ZWQgdGV4dCBmb3IgcG9zc2libGUgIAorLSAgICByZWluc2VydGlvbiwgYXMg d2l0aCBhbnkgdmktbW9kZSBgdGV4dCBtb2RpZmljYXRpb24nIGNvbW1hbmQ7IGBYJyBpcyBib3Vu ZAorLSAgICB0byB0aGlzIGluIHZpIGNvbW1hbmQgbW9kZS4KKy0KKy1lLiAgSWYgdGhlIHJsX2Nv bXBsZXRpb25fcXVlcnlfaXRlbXMgaXMgc2V0IHRvIGEgdmFsdWUgPCAwLCByZWFkbGluZSBuZXZl cgorLSAgICBhc2tzIHRoZSB1c2VyIHdoZXRoZXIgb3Igbm90IHRvIHZpZXcgdGhlIHBvc3NpYmxl IGNvbXBsZXRpb25zLgorLQorLWYuICBOZXcgYXBwbGljYXRpb24tY2FsbGFibGUgYXV4aWxpYXJ5 IGZ1bmN0aW9uLCBybF92YXJpYWJsZV92YWx1ZSwgcmV0dXJucworLSAgICBhIHN0cmluZyBjb3Jy ZXNwb25kaW5nIHRvIGEgcmVhZGxpbmUgdmFyaWFibGUncyB2YWx1ZS4KKy0KKy1nLiAgV2hlbiBw YXJzaW5nIGlucHV0cmMgZmlsZXMgYW5kIHZhcmlhYmxlIGJpbmRpbmcgY29tbWFuZHMsIHRoZSBw YXJzZXIKKy0gICAgc3RyaXBzIHRyYWlsaW5nIHdoaXRlc3BhY2UgZnJvbSB2YWx1ZXMgYXNzaWdu ZWQgdG8gYm9vbGVhbiB2YXJpYWJsZXMKKy0gICAgYmVmb3JlIGNoZWNraW5nIHRoZW0uCistCist aC4gIEEgbmV3IGV4dGVybmFsIGFwcGxpY2F0aW9uLWNvbnRyb2xsYWJsZSB2YXJpYWJsZSB0aGF0 IGFsbG93cyB0aGUgTElORVMKKy0gICAgYW5kIENPTFVNTlMgZW52aXJvbm1lbnQgdmFyaWFibGVz IHRvIHNldCB0aGUgd2luZG93IHNpemUgcmVnYXJkbGVzcyBvZgorLSAgICB3aGF0IHRoZSBrZXJu ZWwgcmV0dXJucy4KKytlLiAgTmV3IGJpbmRhYmxlIHZhcmlhYmxlIGBtZW51LWNvbXBsZXRlLWRp c3BsYXktcHJlZml4JyBjYXVzZXMgdGhlIG1lbnUKKysgICAgY29tcGxldGlvbiBjb2RlIHRvIGRp c3BsYXkgdGhlIGNvbW1vbiBwcmVmaXggb2YgdGhlIHBvc3NpYmxlIGNvbXBsZXRpb25zCisrICAg IGJlZm9yZSBjeWNsaW5nIHRocm91Z2ggdGhlIGxpc3QsIGluc3RlYWQgb2YgYWZ0ZXIuCistLS0g YS9yZWFkbGluZS9SRUFETUUKKysrKyBiL3JlYWRsaW5lL1JFQURNRQorQEAgLTEsNyArMSw3IEBA CisgSW50cm9kdWN0aW9uCisgPT09PT09PT09PT09CisgCistVGhpcyBpcyB0aGUgR251IFJlYWRs aW5lIGxpYnJhcnksIHZlcnNpb24gNS4xLgorK1RoaXMgaXMgdGhlIEdudSBSZWFkbGluZSBsaWJy YXJ5LCB2ZXJzaW9uIDYuMi4KKyAKKyBUaGUgUmVhZGxpbmUgbGlicmFyeSBwcm92aWRlcyBhIHNl dCBvZiBmdW5jdGlvbnMgZm9yIHVzZSBieSBhcHBsaWNhdGlvbnMKKyB0aGF0IGFsbG93IHVzZXJz IHRvIGVkaXQgY29tbWFuZCBsaW5lcyBhcyB0aGV5IGFyZSB0eXBlZCBpbi4gIEJvdGgKK0BAIC0x Niw4ICsxNiw5IEBAIG1heSBiZSB1c2VkIHdpdGhvdXQgUmVhZGxpbmUgaW4gYXBwbGljYXRpb25z IHdoaWNoIGRlc2lyZSBpdHMKKyBjYXBhYmlsaXRpZXMuCisgCisgVGhlIFJlYWRsaW5lIGxpYnJh cnkgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mCistdGhl IFtHTlVdIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHZlcnNpb24gMi4gIEZvciBtb3JlIGluZm9y bWF0aW9uLCBzZWUKKy10aGUgZmlsZSBDT1BZSU5HLgorK3RoZSBbR05VXSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQorK0ZvdW5kYXRpb24s IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhl CisrZmlsZSBDT1BZSU5HLgorIAorIFRvIGJ1aWxkIHRoZSBsaWJyYXJ5LCB0cnkgdHlwaW5nIGAu L2NvbmZpZ3VyZScsIHRoZW4gYG1ha2UnLiAgVGhlCisgY29uZmlndXJhdGlvbiBwcm9jZXNzIGlz IGF1dG9tYXRlZCwgc28gbm8gZnVydGhlciBpbnRlcnZlbnRpb24gc2hvdWxkCitAQCAtMTgzLDQg KzE4NCw0IEBAIGxpc3QgKG1pcnJvcmVkIHRvIHRoZSBVc2VuZXQgbmV3c2dyb3VwIGdudS5iYXNo LmJ1Zykgb2Z0ZW4gY29udGFpbnMKKyBSZWFkbGluZSBidWcgcmVwb3J0cyBhbmQgZml4ZXMuIAor IAorIENoZXQgUmFtZXkKKy1jaGV0QHBvLmN3cnUuZWR1CisrY2hldC5yYW1leUBjYXNlLmVkdQor LS0tIGEvcmVhZGxpbmUvYWNsb2NhbC5tNAorKysrIGIvcmVhZGxpbmUvYWNsb2NhbC5tNAorQEAg LTgwLDYgKzgwLDkgQEAgQUNfQ0FDSEVfVkFMKGJhc2hfY3ZfdHlwZV8kMSwKKyAjaWYgSEFWRV9J TlRUWVBFU19ICisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2VuZGlmCisrI2lmIEhBVkVfU1RE SU5UX0gKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrI2VuZGlmCisgJDIKKyBdLCBiYXNoX2N2X3R5 cGVfJDE9eWVzLCBiYXNoX2N2X3R5cGVfJDE9bm8pXSkKKyBBQ19NU0dfUkVTVUxUKCRiYXNoX2N2 X3R5cGVfJDEpCitAQCAtMjE1LDcgKzIxOCw3IEBAIEFDX0NBQ0hFX1ZBTChiYXNoX2N2X3N5c19z aWdsaXN0LAorICNpZmRlZiBIQVZFX1VOSVNURF9ICisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNl bmRpZgorLSNpZm5kZWYgU1lTX1NJR0xJU1RfREVDTEFSRUQKKysjaWYgIUhBVkVfREVDTF9TWVNf U0lHTElTVAorIGV4dGVybiBjaGFyICpzeXNfc2lnbGlzdFtdOworICNlbmRpZgorIG1haW4oKQor QEAgLTMzNiwxOCArMzM5LDE4IEBAIG1haW4oKQorIHsKKyBESVIgKmRpcjsKKyBpbnQgZmQsIGVy cjsKKy1lcnIgPSBta2RpcigiL3RtcC9iYXNoLWFjbG9jYWwiLCAwNzAwKTsKKytlcnIgPSBta2Rp cigiYmFzaC1hY2xvY2FsIiwgMDcwMCk7CisgaWYgKGVyciA8IDApIHsKKyAgIHBlcnJvcigibWtk aXIiKTsKKyAgIGV4aXQoMSk7CisgfQorLXVubGluaygiL3RtcC9iYXNoLWFjbG9jYWwvbm90X2Ff ZGlyZWN0b3J5Iik7CistZmQgPSBvcGVuKCIvdG1wL2Jhc2gtYWNsb2NhbC9ub3RfYV9kaXJlY3Rv cnkiLCBPX1dST05MWXxPX0NSRUFUfE9fRVhDTCwgMDY2Nik7CisrdW5saW5rKCJiYXNoLWFjbG9j YWwvbm90X2FfZGlyZWN0b3J5Iik7CisrZmQgPSBvcGVuKCJiYXNoLWFjbG9jYWwvbm90X2FfZGly ZWN0b3J5IiwgT19XUk9OTFl8T19DUkVBVHxPX0VYQ0wsIDA2NjYpOworIHdyaXRlKGZkLCAiXG4i LCAxKTsKKyBjbG9zZShmZCk7CistZGlyID0gb3BlbmRpcigiL3RtcC9iYXNoLWFjbG9jYWwvbm90 X2FfZGlyZWN0b3J5Iik7CistdW5saW5rKCIvdG1wL2Jhc2gtYWNsb2NhbC9ub3RfYV9kaXJlY3Rv cnkiKTsKKy1ybWRpcigiL3RtcC9iYXNoLWFjbG9jYWwiKTsKKytkaXIgPSBvcGVuZGlyKCJiYXNo LWFjbG9jYWwvbm90X2FfZGlyZWN0b3J5Iik7CisrdW5saW5rKCJiYXNoLWFjbG9jYWwvbm90X2Ff ZGlyZWN0b3J5Iik7Cisrcm1kaXIoImJhc2gtYWNsb2NhbCIpOworIGV4aXQgKGRpciA9PSAwKTsK KyB9XSwgYmFzaF9jdl9vcGVuZGlyX25vdF9yb2J1c3Q9eWVzLGJhc2hfY3Zfb3BlbmRpcl9ub3Rf cm9idXN0PW5vLAorICAgICBbQUNfTVNHX1dBUk4oY2Fubm90IGNoZWNrIG9wZW5kaXIgaWYgY3Jv c3MgY29tcGlsaW5nIC0tIGRlZmF1bHRpbmcgdG8gbm8pCitAQCAtNTMxLDYgKzUzNCwxOCBAQCBB Q19ERUZJTkUoUkxJTVRZUEUsIHJsaW1fdCkKKyBmaQorIF0pCisgCisrQUNfREVGVU4oQkFTSF9U WVBFX1NJR19BVE9NSUNfVCwKKytbQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzaWdfYXRvbWljX3QgaW4g c2lnbmFsLmhdLCBhY19jdl9oYXZlX3NpZ19hdG9taWNfdCwKKytbQUNfVFJZX0xJTksoWworKyNp bmNsdWRlIDxzaWduYWwuaD4KKytdLFsgc2lnX2F0b21pY190IHg7IF0sCisrYWNfY3ZfaGF2ZV9z aWdfYXRvbWljX3Q9eWVzLCBhY19jdl9oYXZlX3NpZ19hdG9taWNfdD1ubyldKQorK2lmIHRlc3Qg IiRhY19jdl9oYXZlX3NpZ19hdG9taWNfdCIgPSAibm8iCisrdGhlbgorKyAgICBBQ19DSEVDS19U WVBFKHNpZ19hdG9taWNfdCxpbnQpCisrZmkKKytdKQorKworIEFDX0RFRlVOKEJBU0hfRlVOQ19M U1RBVCwKKyBbZG5sIENhbm5vdCB1c2UgQUNfQ0hFQ0tfRlVOQ1MobHN0YXQpIGJlY2F1c2UgTGlu dXggZGVmaW5lcyBsc3RhdCgpIGFzIGFuCisgZG5sIGlubGluZSBmdW5jdGlvbiBpbiA8c3lzL3N0 YXQuaD4uCitAQCAtNjg1LDcgKzcwMCw3IEBAIGZpCisgXSkKKyAKKyBBQ19ERUZVTihCQVNIX0ZV TkNfR0VUQ1dELAorLVtBQ19NU0dfQ0hFQ0tJTkcoW2lmIGdldGN3ZCgpIHdpbGwgZHluYW1pY2Fs bHkgYWxsb2NhdGUgbWVtb3J5XSkKKytbQUNfTVNHX0NIRUNLSU5HKFtpZiBnZXRjd2QoKSB3aWxs IGR5bmFtaWNhbGx5IGFsbG9jYXRlIG1lbW9yeSB3aXRoIDAgc2l6ZV0pCisgQUNfQ0FDSEVfVkFM KGJhc2hfY3ZfZ2V0Y3dkX21hbGxvYywKKyBbQUNfVFJZX1JVTihbCisgI2luY2x1ZGUgPHN0ZGlv Lmg+CitAQCAtOTMzLDcgKzk0OCw3IEBAIEFDX0RFRklORShIQVZFX1NUUlVDVF9TVEFUX1NUX0JM T0NLUykKKyBmaQorIF0pCisgCistQUNfREVGVU4oQkFTSF9DSEVDS19MSUJfVEVSTUNBUCwKKytB Q19ERUZVTihbQkFTSF9DSEVDS19MSUJfVEVSTUNBUF0sCisgWworIGlmIHRlc3QgIlgkYmFzaF9j dl90ZXJtY2FwX2xpYiIgPSAiWCI7IHRoZW4KKyBfYmFzaF9uZWVkbXNnPXllcworQEAgLTE0MjMs MTkgKzE0MzgsMTkgQEAgZXhpdCAoMSk7CisgI2lmIGRlZmluZWQgKE5lWFQpCisgZXhpdCAoMSk7 CisgI2VuZGlmCistZXJyID0gbWtkaXIoIi90bXAvYmFzaC1hY2xvY2FsIiwgMDcwMCk7CisrZXJy ID0gbWtkaXIoImJhc2gtYWNsb2NhbCIsIDA3MDApOworIGlmIChlcnIgPCAwKSB7CisgICBwZXJy b3IgKCJta2RpciIpOworICAgZXhpdCgxKTsKKyB9CistZmQgPSBta25vZCAoIi90bXAvYmFzaC1h Y2xvY2FsL3NoLW5wLWF1dG9jb25mIiwgMDY2NiB8IFNfSUZJRk8sIDApOworK2ZkID0gbWtub2Qg KCJiYXNoLWFjbG9jYWwvc2gtbnAtYXV0b2NvbmYiLCAwNjY2IHwgU19JRklGTywgMCk7CisgaWYg KGZkID09IC0xKSB7CistICBybWRpciAoIi90bXAvYmFzaC1hY2xvY2FsIik7CisrICBybWRpciAo ImJhc2gtYWNsb2NhbCIpOworICAgZXhpdCAoMSk7CisgfQorIGNsb3NlKGZkKTsKKy11bmxpbmsg KCIvdG1wL2Jhc2gtYWNsb2NhbC9zaC1ucC1hdXRvY29uZiIpOworLXJtZGlyICgiL3RtcC9iYXNo LWFjbG9jYWwiKTsKKyt1bmxpbmsgKCJiYXNoLWFjbG9jYWwvc2gtbnAtYXV0b2NvbmYiKTsKKyty bWRpciAoImJhc2gtYWNsb2NhbCIpOworIGV4aXQoMCk7CisgfV0sIGJhc2hfY3Zfc3lzX25hbWVk X3BpcGVzPXByZXNlbnQsIGJhc2hfY3Zfc3lzX25hbWVkX3BpcGVzPW1pc3NpbmcsCisgICAgIFtB Q19NU0dfV0FSTihjYW5ub3QgY2hlY2sgZm9yIG5hbWVkIHBpcGVzIGlmIGNyb3NzLWNvbXBpbGlu ZyAtLSBkZWZhdWx0aW5nIHRvIG1pc3NpbmcpCitAQCAtMTU0MCwyMCArMTU1NSwyMiBAQCBmaQor IEFDX0RFRlVOKEJBU0hfQ0hFQ0tfREVWX0ZELAorIFtBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciAv ZGV2L2ZkIGlzIGF2YWlsYWJsZSkKKyBBQ19DQUNIRV9WQUwoYmFzaF9jdl9kZXZfZmQsCistW2lm IHRlc3QgLWQgL2Rldi9mZCAgJiYgdGVzdCAtciAvZGV2L2ZkLzAgPCAvZGV2L251bGw7IHRoZW4K KytbYmFzaF9jdl9kZXZfZmQ9IiIKKytpZiB0ZXN0IC1kIC9kZXYvZmQgICYmIChleGVjIHRlc3Qg LXIgL2Rldi9mZC8wIDwgL2Rldi9udWxsKSA7IHRoZW4KKyAjIGNoZWNrIGZvciBzeXN0ZW1zIGxp a2UgRnJlZUJTRCA1IHRoYXQgb25seSBwcm92aWRlIC9kZXYvZmQvWzAxMl0KKy0gICBleGVjIDM8 JjAKKy0gICBpZiB0ZXN0IC1yIC9kZXYvZmQvMzsgdGhlbgorKyAgIGlmIChleGVjIHRlc3QgLXIg L2Rldi9mZC8zIDM8L2Rldi9udWxsKSA7IHRoZW4KKyAgICAgIGJhc2hfY3ZfZGV2X2ZkPXN0YW5k YXJkCisgICAgZWxzZQorICAgICAgYmFzaF9jdl9kZXZfZmQ9YWJzZW50CisgICAgZmkKKy0gICBl eGVjIDM8Ji0KKy0gZWxpZiB0ZXN0IC1kIC9wcm9jL3NlbGYvZmQgJiYgdGVzdCAtciAvcHJvYy9z ZWxmL2ZkLzAgPCAvZGV2L251bGw7IHRoZW4KKy0gICBiYXNoX2N2X2Rldl9mZD13aGFja3kKKy0g ZWxzZQorLSAgIGJhc2hfY3ZfZGV2X2ZkPWFic2VudAorLSBmaQorK2ZpCisraWYgdGVzdCAteiAi JGJhc2hfY3ZfZGV2X2ZkIiA7IHRoZW4gCisrICBpZiB0ZXN0IC1kIC9wcm9jL3NlbGYvZmQgJiYg KGV4ZWMgdGVzdCAtciAvcHJvYy9zZWxmL2ZkLzAgPCAvZGV2L251bGwpIDsgdGhlbgorKyAgICBi YXNoX2N2X2Rldl9mZD13aGFja3kKKysgIGVsc2UKKysgICAgYmFzaF9jdl9kZXZfZmQ9YWJzZW50 CisrICBmaQorK2ZpCisgXSkKKyBBQ19NU0dfUkVTVUxUKCRiYXNoX2N2X2Rldl9mZCkKKyBpZiB0 ZXN0ICRiYXNoX2N2X2Rldl9mZCA9ICJzdGFuZGFyZCI7IHRoZW4KK0BAIC0xNTY4LDkgKzE1ODUs OSBAQCBmaQorIEFDX0RFRlVOKEJBU0hfQ0hFQ0tfREVWX1NURElOLAorIFtBQ19NU0dfQ0hFQ0tJ Tkcod2hldGhlciAvZGV2L3N0ZGluIHN0ZG91dCBzdGRlcnIgYXJlIGF2YWlsYWJsZSkKKyBBQ19D QUNIRV9WQUwoYmFzaF9jdl9kZXZfc3RkaW4sCistW2lmIHRlc3QgLWQgL2Rldi9mZCAmJiB0ZXN0 IC1yIC9kZXYvc3RkaW4gPCAvZGV2L251bGw7IHRoZW4KKytbaWYgdGVzdCAtZCAvZGV2L2ZkICYm IChleGVjIHRlc3QgLXIgL2Rldi9zdGRpbiA8IC9kZXYvbnVsbCkgOyB0aGVuCisgICAgYmFzaF9j dl9kZXZfc3RkaW49cHJlc2VudAorLSBlbGlmIHRlc3QgLWQgL3Byb2Mvc2VsZi9mZCAmJiB0ZXN0 IC1yIC9kZXYvc3RkaW4gPCAvZGV2L251bGw7IHRoZW4KKysgZWxpZiB0ZXN0IC1kIC9wcm9jL3Nl bGYvZmQgJiYgKGV4ZWMgdGVzdCAtciAvZGV2L3N0ZGluIDwgL2Rldi9udWxsKSA7IHRoZW4KKyAg ICBiYXNoX2N2X2Rldl9zdGRpbj1wcmVzZW50CisgIGVsc2UKKyAgICBiYXNoX2N2X2Rldl9zdGRp bj1hYnNlbnQKK0BAIC0xNjY3LDM3ICsxNjg0LDM5IEBAIGZpCisgZG5sCisgZG5sIGNoZWNrIGZv ciBhdmFpbGFiaWxpdHkgb2YgbXVsdGlieXRlIGNoYXJhY3RlcnMgYW5kIGZ1bmN0aW9ucworIGRu bAorK2RubCBnZWV6LCBJIHdpc2ggSSBkaWRuJ3QgaGF2ZSB0byBjaGVjayBmb3IgYWxsIG9mIHRo aXMgc3R1ZmYgc2VwYXJhdGVseQorK2RubAorIEFDX0RFRlVOKEJBU0hfQ0hFQ0tfTVVMVElCWVRF LAorIFsKKyBBQ19DSEVDS19IRUFERVJTKHdjdHlwZS5oKQorIEFDX0NIRUNLX0hFQURFUlMod2No YXIuaCkKKyBBQ19DSEVDS19IRUFERVJTKGxhbmdpbmZvLmgpCisgCistQUNfQ0hFQ0tfRlVOQyht YnNydG93Y3MsIEFDX0RFRklORShIQVZFX01CU1JUT1dDUykpCistQUNfQ0hFQ0tfRlVOQyhtYnJ0 b3djLCBBQ19ERUZJTkUoSEFWRV9NQlJUT1dDKSkKKyBBQ19DSEVDS19GVU5DKG1icmxlbiwgQUNf REVGSU5FKEhBVkVfTUJSTEVOKSkKKy1BQ19DSEVDS19GVU5DKHdjdG9tYiwgQUNfREVGSU5FKEhB VkVfV0NUT01CKSkKKy1BQ19DSEVDS19GVU5DKHdjd2lkdGgsIEFDX0RFRklORShIQVZFX1dDV0lE VEgpKQorK0FDX0NIRUNLX0ZVTkMobWJzY2FzZWNtcCwgQUNfREVGSU5FKEhBVkVfTUJTQ01QKSkK KytBQ19DSEVDS19GVU5DKG1ic2NtcCwgQUNfREVGSU5FKEhBVkVfTUJTQ01QKSkKKytBQ19DSEVD S19GVU5DKG1ic25ydG93Y3MsIEFDX0RFRklORShIQVZFX01CU05SVE9XQ1MpKQorK0FDX0NIRUNL X0ZVTkMobWJzcnRvd2NzLCBBQ19ERUZJTkUoSEFWRV9NQlNSVE9XQ1MpKQorKworKworK0FDX1JF UExBQ0VfRlVOQ1MobWJzY2hyKQorKworK0FDX0NIRUNLX0ZVTkMod2NydG9tYiwgQUNfREVGSU5F KEhBVkVfV0NSVE9NQikpCisrQUNfQ0hFQ0tfRlVOQyh3Y3Njb2xsLCBBQ19ERUZJTkUoSEFWRV9X Q1NDT0xMKSkKKyBBQ19DSEVDS19GVU5DKHdjc2R1cCwgQUNfREVGSU5FKEhBVkVfV0NTRFVQKSkK KytBQ19DSEVDS19GVU5DKHdjd2lkdGgsIEFDX0RFRklORShIQVZFX1dDV0lEVEgpKQorK0FDX0NI RUNLX0ZVTkMod2N0eXBlLCBBQ19ERUZJTkUoSEFWRV9XQ1RZUEUpKQorIAorLWlmIHRlc3QgIiRh Y19jdl9mdW5jX3djd2lkdGgiID0gbm8gJiYgdGVzdCAiJGFjX2N2X2hlYWRlcl93Y2hhcl9oIiA9 IHllczsgdGhlbgorLSAgV0NXSURUSF9PQko9d2N3aWR0aC5vCistZWxzZQorLSAgV0NXSURUSF9P Qko9CistZmkKKy1BQ19TVUJTVChXQ1dJRFRIX09CSikKKytBQ19SRVBMQUNFX0ZVTkNTKHdjc3dp ZHRoKQorIAorLUFDX0NBQ0hFX0NIRUNLKFtmb3IgbWJzdGF0ZV90XSwgYmFzaF9jdl9oYXZlX21i c3RhdGVfdCwKKy1bQUNfVFJZX0NPTVBJTEUoWworLSNpbmNsdWRlIDx3Y2hhci5oPl0sIFsKKy0g IG1ic3RhdGVfdCBwczsKKy0gIG1ic3RhdGVfdCAqcHNwOworLSAgcHNwID0gKG1ic3RhdGVfdCAq KTA7CistXSwgYmFzaF9jdl9oYXZlX21ic3RhdGVfdD15ZXMsICBiYXNoX2N2X2hhdmVfbWJzdGF0 ZV90PW5vKV0pCistaWYgdGVzdCAkYmFzaF9jdl9oYXZlX21ic3RhdGVfdCA9IHllczsgdGhlbgor K2RubCBjaGVja3MgZm9yIGJvdGggbWJydG93YyBhbmQgbWJzdGF0ZV90CisrQUNfRlVOQ19NQlJU T1dDCisraWYgdGVzdCAkYWNfY3ZfZnVuY19tYnJ0b3djID0geWVzOyB0aGVuCisgCUFDX0RFRklO RShIQVZFX01CU1RBVEVfVCkKKyBmaQorIAorK0FDX0NIRUNLX0ZVTkNTKGlzd2xvd2VyIGlzd3Vw cGVyIHRvd2xvd2VyIHRvd3VwcGVyIGlzd2N0eXBlKQorKworIEFDX0NBQ0hFX0NIRUNLKFtmb3Ig bmxfbGFuZ2luZm8gYW5kIENPREVTRVRdLCBiYXNoX2N2X2xhbmdpbmZvX2NvZGVzZXQsCisgW0FD X1RSWV9MSU5LKAorIFsjaW5jbHVkZSA8bGFuZ2luZm8uaD5dLAorQEAgLTE3MDcsNiArMTcyNiw1 MCBAQCBpZiB0ZXN0ICRiYXNoX2N2X2xhbmdpbmZvX2NvZGVzZXQgPSB5ZXM7IHRoZW4KKyAgIEFD X0RFRklORShIQVZFX0xBTkdJTkZPX0NPREVTRVQpCisgZmkKKyAKKytkbmwgY2hlY2sgZm9yIHdj aGFyX3QgaW4gPHdjaGFyLmg+CisrQUNfQ0FDSEVfQ0hFQ0soW2ZvciB3Y2hhcl90IGluIHdjaGFy LmhdLCBiYXNoX2N2X3R5cGVfd2NoYXJfdCwKKytbQUNfVFJZX0NPTVBJTEUoCisrWyNpbmNsdWRl IDx3Y2hhci5oPgorK10sCisrWworKyAgICAgICAgd2NoYXJfdCBmb287CisrICAgICAgICBmb28g PSAwOworK10sIGJhc2hfY3ZfdHlwZV93Y2hhcl90PXllcywgYmFzaF9jdl90eXBlX3djaGFyX3Q9 bm8pXSkKKytpZiB0ZXN0ICRiYXNoX2N2X3R5cGVfd2NoYXJfdCA9IHllczsgdGhlbgorKyAgICAg ICAgQUNfREVGSU5FKEhBVkVfV0NIQVJfVCwgMSwgW3N5c3RlbXMgc2hvdWxkIGRlZmluZSB0aGlz IHR5cGUgaGVyZV0pCisrZmkKKysKKytkbmwgY2hlY2sgZm9yIHdjdHlwZV90IGluIDx3Y3R5cGUu aD4KKytBQ19DQUNIRV9DSEVDSyhbZm9yIHdjdHlwZV90IGluIHdjdHlwZS5oXSwgYmFzaF9jdl90 eXBlX3djdHlwZV90LAorK1tBQ19UUllfQ09NUElMRSgKKytbI2luY2x1ZGUgPHdjdHlwZS5oPl0s CisrWworKyAgICAgICAgd2N0eXBlX3QgZm9vOworKyAgICAgICAgZm9vID0gMDsKKytdLCBiYXNo X2N2X3R5cGVfd2N0eXBlX3Q9eWVzLCBiYXNoX2N2X3R5cGVfd2N0eXBlX3Q9bm8pXSkKKytpZiB0 ZXN0ICRiYXNoX2N2X3R5cGVfd2N0eXBlX3QgPSB5ZXM7IHRoZW4KKysgICAgICAgIEFDX0RFRklO RShIQVZFX1dDVFlQRV9ULCAxLCBbc3lzdGVtcyBzaG91bGQgZGVmaW5lIHRoaXMgdHlwZSBoZXJl XSkKKytmaQorKworK2RubCBjaGVjayBmb3Igd2ludF90IGluIDx3Y3R5cGUuaD4KKytBQ19DQUNI RV9DSEVDSyhbZm9yIHdpbnRfdCBpbiB3Y3R5cGUuaF0sIGJhc2hfY3ZfdHlwZV93aW50X3QsCisr W0FDX1RSWV9DT01QSUxFKAorK1sjaW5jbHVkZSA8d2N0eXBlLmg+XSwKKytbCisrICAgICAgICB3 aW50X3QgZm9vOworKyAgICAgICAgZm9vID0gMDsKKytdLCBiYXNoX2N2X3R5cGVfd2ludF90PXll cywgYmFzaF9jdl90eXBlX3dpbnRfdD1ubyldKQorK2lmIHRlc3QgJGJhc2hfY3ZfdHlwZV93aW50 X3QgPSB5ZXM7IHRoZW4KKysgICAgICAgIEFDX0RFRklORShIQVZFX1dJTlRfVCwgMSwgW3N5c3Rl bXMgc2hvdWxkIGRlZmluZSB0aGlzIHR5cGUgaGVyZV0pCisrZmkKKysKKytpZiB0ZXN0ICIkYW1f Y3ZfZnVuY19pY29udiIgPSB5ZXM7IHRoZW4KKysJT0xETElCUz0iJExJQlMiCisrCUxJQlM9IiRM SUJTICRMSUJJQ09OViIKKysJQUNfQ0hFQ0tfRlVOQ1MobG9jYWxlX2NoYXJzZXQpCisrCUxJQlM9 IiRPTERMSUJTIgorK2ZpCisrCisgXSkKKyAKKyBkbmwgbmVlZDogcHJlZml4IGV4ZWNfcHJlZml4 IGxpYmRpciBpbmNsdWRlZGlyIENDIFRFUk1DQVBfTElCCitAQCAtMTcxNCw3ICsxNzc3LDcgQEAg ZG5sIHJlcXVpcmU6CisgZG5sCUFDX1BST0dfQ0MKKyBkbmwJQkFTSF9DSEVDS19MSUJfVEVSTUNB UAorIAorLUFDX0RFRlVOKFJMX0xJQl9SRUFETElORV9WRVJTSU9OLAorK0FDX0RFRlVOKFtSTF9M SUJfUkVBRExJTkVfVkVSU0lPTl0sCisgWworIEFDX1JFUVVJUkUoW0JBU0hfQ0hFQ0tfTElCX1RF Uk1DQVBdKQorIAorQEAgLTIzMzEsNyArMjM5NCw3IEBAIEFDX0RFRlVOKFtBTV9JTlRMX1NVQkRJ Ul0sCisgICBBQ19DSEVDS19IRUFERVJTKFthcmd6LmggbGltaXRzLmggbG9jYWxlLmggbmxfdHlw ZXMuaCBtYWxsb2MuaCBzdGRkZWYuaCBcCisgc3RkbGliLmggc3RyaW5nLmggdW5pc3RkLmggc3lz L3BhcmFtLmhdKQorICAgQUNfQ0hFQ0tfRlVOQ1MoW2Zlb2ZfdW5sb2NrZWQgZmdldHNfdW5sb2Nr ZWQgZ2V0Y191bmxvY2tlZCBnZXRjd2QgZ2V0ZWdpZCBcCistZ2V0ZXVpZCBnZXRnaWQgZ2V0dWlk IG1lbXBjcHkgbXVubWFwIHB1dGVudiBzZXRlbnYgc2V0bG9jYWxlIHN0cGNweSBcCisrZ2V0ZXVp ZCBnZXRnaWQgZ2V0dWlkIG1lbXBjcHkgbXVubWFwIHB1dGVudiBzZXRlbnYgc2V0bG9jYWxlIGxv Y2FsZWNvbnYgc3RwY3B5IFwKKyBzdHJjYXNlY21wIHN0cmR1cCBzdHJ0b3VsIHRzZWFyY2ggX19h cmd6X2NvdW50IF9fYXJnel9zdHJpbmdpZnkgX19hcmd6X25leHQgXAorIF9fZnNldGxvY2tpbmdd KQorIAorQEAgLTM5NjQsMyArNDAyNywxNDMgQEAgQUNfREVGVU4oW2ptX0FDX1RZUEVfVU5TSUdO RURfTE9OR19MT05HXSwKKyAgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB1bnNpZ25lZCBs b25nIGxvbmcgdHlwZS5dKQorICAgZmkKKyBdKQorKworK2RubCBGcm9tIGdudWxpYgorK0FDX0RF RlVOKFtCQVNIX0ZVTkNfRlBVUkdFXSwKKytbCisrICBBQ19DSEVDS19GVU5DU19PTkNFKFtmcHVy Z2VdKQorKyAgQUNfQ0hFQ0tfRlVOQ1NfT05DRShbX19mcHVyZ2VdKQorKyAgQUNfQ0hFQ0tfREVD TFMoW2ZwdXJnZV0sICwgLCBbI2luY2x1ZGUgPHN0ZGlvLmg+XSkKKytdKQorKworK0FDX0RFRlVO KFtCQVNIX0ZVTkNfU05QUklOVEZdLAorK1sKKysgIEFDX0NIRUNLX0ZVTkNTX09OQ0UoW3NucHJp bnRmXSkKKysgIGlmIHRlc3QgWCRhY19jdl9mdW5jX3NucHJpbnRmID0gWHllczsgdGhlbgorKyAg ICBBQ19DQUNIRV9DSEVDSyhbZm9yIHN0YW5kYXJkLWNvbmZvcm1hbnQgc25wcmludGZdLCBbYmFz aF9jdl9mdW5jX3NucHJpbnRmXSwKKysgICAgICBbQUNfVFJZX1JVTihbCisrI2luY2x1ZGUgPHN0 ZGlvLmg+CisrCisrbWFpbigpCisreworKyAgaW50IG47CisrICBuID0gc25wcmludGYgKDAsIDAs ICIlcyIsICIwMTIzNDU2Iik7CisrICBleGl0KG4gIT0gNyk7CisrfQorK10sIGJhc2hfY3ZfZnVu Y19zbnByaW50Zj15ZXMsIGJhc2hfY3ZfZnVuY19zbnByaW50Zj1ubywKKysgICBbQUNfTVNHX1dB Uk4oW2Nhbm5vdCBjaGVjayBzdGFuZGFyZCBzbnByaW50ZiBpZiBjcm9zcy1jb21waWxpbmddKQor KyAgICBiYXNoX2N2X2Z1bmNfc25wcmludGY9eWVzXQorKyldKQorKyAgICBpZiB0ZXN0ICRiYXNo X2N2X2Z1bmNfc25wcmludGYgPSBubzsgdGhlbgorKyAgICAgIGFjX2N2X2Z1bmNfc25wcmludGY9 bm8KKysgICAgZmkKKysgIGZpCisrICBpZiB0ZXN0ICRhY19jdl9mdW5jX3NucHJpbnRmID0gbm87 IHRoZW4KKysgICAgQUNfREVGSU5FKEhBVkVfU05QUklOVEYsIDAsCisrICAgICAgW0RlZmluZSBp ZiB5b3UgaGF2ZSBhIHN0YW5kYXJkLWNvbmZvcm1hbnQgc25wcmludGYgZnVuY3Rpb24uXSkKKysg IGZpCisrXSkKKysKKytBQ19ERUZVTihbQkFTSF9GVU5DX1ZTTlBSSU5URl0sCisrWworKyAgQUNf Q0hFQ0tfRlVOQ1NfT05DRShbdnNucHJpbnRmXSkKKysgIGlmIHRlc3QgWCRhY19jdl9mdW5jX3Zz bnByaW50ZiA9IFh5ZXM7IHRoZW4KKysgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzdGFuZGFyZC1j b25mb3JtYW50IHZzbnByaW50Zl0sIFtiYXNoX2N2X2Z1bmNfdnNucHJpbnRmXSwKKysgICAgICBb QUNfVFJZX1JVTihbCisrI2lmIEhBVkVfU1REQVJHX0gKKysjaW5jbHVkZSA8c3RkYXJnLmg+Cisr I2Vsc2UKKysjaW5jbHVkZSA8dmFyYXJncy5oPgorKyNlbmRpZgorKyNpbmNsdWRlIDxzdGRpby5o PgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysKKytzdGF0aWMgaW50CisrI2lmIEhBVkVfU1REQVJH X0gKKytmb28oY29uc3QgY2hhciAqZm10LCAuLi4pCisrI2Vsc2UKKytmb28oZm9ybWF0LCB2YV9h bGlzdCkKKysgICAgIGNvbnN0IGNoYXIgKmZvcm1hdDsKKysgICAgIHZhX2RjbAorKyNlbmRpZgor K3sKKysgIHZhX2xpc3QgYXJnczsKKysgIGludCBuOworKworKyNpZiBIQVZFX1NUREFSR19ICisr ICB2YV9zdGFydChhcmdzLCBmbXQpOworKyNlbHNlCisrICB2YV9zdGFydChhcmdzKTsKKysjZW5k aWYKKysgIG4gPSB2c25wcmludGYoMCwgMCwgZm10LCBhcmdzKTsKKysgIHZhX2VuZCAoYXJncyk7 CisrICByZXR1cm4gbjsKKyt9CisrCisrbWFpbigpCisreworKyAgaW50IG47CisrICBuID0gZm9v KCIlcyIsICIwMTIzNDU2Iik7CisrICBleGl0KG4gIT0gNyk7CisrfQorK10sIGJhc2hfY3ZfZnVu Y192c25wcmludGY9eWVzLCBiYXNoX2N2X2Z1bmNfdnNucHJpbnRmPW5vLAorKyAgIFtBQ19NU0df V0FSTihbY2Fubm90IGNoZWNrIHN0YW5kYXJkIHZzbnByaW50ZiBpZiBjcm9zcy1jb21waWxpbmdd KQorKyAgICBiYXNoX2N2X2Z1bmNfdnNucHJpbnRmPXllc10KKyspXSkKKysgICAgaWYgdGVzdCAk YmFzaF9jdl9mdW5jX3ZzbnByaW50ZiA9IG5vOyB0aGVuCisrICAgICAgYWNfY3ZfZnVuY192c25w cmludGY9bm8KKysgICAgZmkKKysgIGZpCisrICBpZiB0ZXN0ICRhY19jdl9mdW5jX3ZzbnByaW50 ZiA9IG5vOyB0aGVuCisrICAgIEFDX0RFRklORShIQVZFX1ZTTlBSSU5URiwgMCwKKysgICAgICBb RGVmaW5lIGlmIHlvdSBoYXZlIGEgc3RhbmRhcmQtY29uZm9ybWFudCB2c25wcmludGYgZnVuY3Rp b24uXSkKKysgIGZpCisrXSkKKysKKytBQ19ERUZVTihCQVNIX1NUUlVDVF9XRVhJVFNUQVRVU19P RkZTRVQsCisrW0FDX01TR19DSEVDS0lORyhmb3Igb2Zmc2V0IG9mIGV4aXQgc3RhdHVzIGluIHJl dHVybiBzdGF0dXMgZnJvbSB3YWl0KQorK0FDX0NBQ0hFX1ZBTChiYXNoX2N2X3dleGl0c3RhdHVz X29mZnNldCwKKytbQUNfUlVOX0lGRUxTRShbCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNs dWRlIDx1bmlzdGQuaD4KKysKKysjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKysKKyttYWluKGMsIHYp CisrICAgICBpbnQgYzsKKysgICAgIGNoYXIgKip2OworK3sKKysgIHBpZF90IHBpZCwgcDsKKysg IGludCBzLCBpLCBuOworKworKyAgcyA9IDA7CisrICBwaWQgPSBmb3JrKCk7CisrICBpZiAocGlk ID09IDApCisrICAgIGV4aXQgKDQyKTsKKysKKysgIC8qIHdhaXQgZm9yIHRoZSBwcm9jZXNzICov CisrICBwID0gd2FpdCgmcyk7CisrICBpZiAocCAhPSBwaWQpCisrICAgIGV4aXQgKDI1NSk7Cisr CisrICAvKiBjcmFjayBzICovCisrICBmb3IgKGkgPSAwOyBpIDwgKHNpemVvZihzKSAtIDgpOyBp KyspCisrICAgIHsKKysgICAgICBuID0gKHMgPj4gaSkgJiAweGZmOworKyAgICAgIGlmIChuID09 IDQyKQorKwlleGl0IChpKTsKKysgICAgfQorKworKyAgZXhpdCAoMjU0KTsKKyt9CisrXSwgYmFz aF9jdl93ZXhpdHN0YXR1c19vZmZzZXQ9MCwgYmFzaF9jdl93ZXhpdHN0YXR1c19vZmZzZXQ9JD8s CisrICAgW0FDX01TR19XQVJOKGNhbm5vdCBjaGVjayBXRVhJVFNUQVRVUyBvZmZzZXQgaWYgY3Jv c3MgY29tcGlsaW5nIC0tIGRlZmF1bHRpbmcgdG8gMCkKKysgICAgYmFzaF9jdl93ZXhpdHN0YXR1 c19vZmZzZXQ9MF0KKyspXSkKKytpZiB0ZXN0ICIkYmFzaF9jdl93ZXhpdHN0YXR1c19vZmZzZXQi IC1ndCAzMiA7IHRoZW4KKysgIEFDX01TR19XQVJOKGJhZCBleGl0IHN0YXR1cyBmcm9tIHRlc3Qg cHJvZ3JhbSAtLSBkZWZhdWx0aW5nIHRvIDApCisrICBiYXNoX2N2X3dleGl0c3RhdHVzX29mZnNl dD0wCisrZmkKKytBQ19NU0dfUkVTVUxUKCRiYXNoX2N2X3dleGl0c3RhdHVzX29mZnNldCkKKytB Q19ERUZJTkVfVU5RVU9URUQoW1dFWElUU1RBVFVTX09GRlNFVF0sIFskYmFzaF9jdl93ZXhpdHN0 YXR1c19vZmZzZXRdLCBbT2Zmc2V0IG9mIGV4aXQgc3RhdHVzIGluIHdhaXQgc3RhdHVzIHdvcmRd KQorK10pCistLS0gYS9yZWFkbGluZS9hbnNpX3N0ZGxpYi5oCisrKysgYi9yZWFkbGluZS9hbnNp X3N0ZGxpYi5oCitAQCAtNiwxOSArNiwxOSBAQAorIAorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEdOVSBCYXNoLCB0aGUgQm91cm5lIEFnYWluIFNIZWxsLgorIAorLSAgIEJhc2ggaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgor LSAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlCistICAgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g Miwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIKKy0gICB2ZXJzaW9uLgorLQorLSAgIEJh c2ggaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0 IFdJVEhPVVQgQU5ZCistICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKy0gICBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBmb3IgbW9y ZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCistICAgd2l0aCBCYXNoOyBzZWUgdGhl IGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gICBG b3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBV U0EuICovCisrICAgQmFzaCBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgQmFzaCBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisr ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIEJhc2guICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRlZmluZWQgKF9TVERMSUJfSF8p CisgI2RlZmluZQlfU1RETElCX0hfIDEKKy0tLSBhL3JlYWRsaW5lL2JpbmQuYworKysrIGIvcmVh ZGxpbmUvYmluZC5jCitAQCAtMSwyNCArMSwyMyBAQAorIC8qIGJpbmQuYyAtLSBrZXkgYmluZGlu ZyBhbmQgc3RhcnR1cCBmaWxlIHN1cHBvcnQgZm9yIHRoZSByZWFkbGluZSBsaWJyYXJ5LiAqLwor IAorLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVy YWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZv ciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9y eSBlZGl0aW5nLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv cgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNl ZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdh cmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBv ciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNl LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQ bGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKKyAKK0BAIC04 MCw3ICs3OSw3IEBAIHN0YXRpYyBpbnQgZ2xlYW5fa2V5X2Zyb21fbmFtZSBQQVJBTVMoKGNoYXIg KikpOworIHN0YXRpYyBpbnQgZmluZF9ib29sZWFuX3ZhciBQQVJBTVMoKGNvbnN0IGNoYXIgKikp OworIAorIHN0YXRpYyBjaGFyICpfcmxfZ2V0X3N0cmluZ192YXJpYWJsZV92YWx1ZSBQQVJBTVMo KGNvbnN0IGNoYXIgKikpOworLXN0YXRpYyBpbnQgc3Vic3RyaW5nX21lbWJlcl9vZl9hcnJheSBQ QVJBTVMoKGNoYXIgKiwgY29uc3QgY2hhciAqKikpOworK3N0YXRpYyBpbnQgc3Vic3RyaW5nX21l bWJlcl9vZl9hcnJheSBQQVJBTVMoKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqIGNvbnN0ICop KTsKKyAKKyBzdGF0aWMgaW50IGN1cnJlbnRseV9yZWFkaW5nX2luaXRfZmlsZTsKKyAKK0BAIC0z MTcsNyArMzE2LDcgQEAgcmxfbWFjcm9fYmluZCAoa2V5c2VxLCBtYWNybywgbWFwKQorIAorICAg aWYgKHJsX3RyYW5zbGF0ZV9rZXlzZXEgKG1hY3JvLCBtYWNyb19rZXlzLCAmbWFjcm9fa2V5c19s ZW4pKQorICAgICB7CistICAgICAgZnJlZSAobWFjcm9fa2V5cyk7CisrICAgICAgeGZyZWUgKG1h Y3JvX2tleXMpOworICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorICAgcmxfZ2VuZXJpY19iaW5k IChJU01BQ1IsIGtleXNlcSwgbWFjcm9fa2V5cywgbWFwKTsKK0BAIC0zNDcsNyArMzQ2LDcgQEAg cmxfZ2VuZXJpY19iaW5kICh0eXBlLCBrZXlzZXEsIGRhdGEsIG1hcCkKKyAgIGlmIChrZXlzZXEg PT0gMCB8fCAqa2V5c2VxID09IDApCisgICAgIHsKKyAgICAgICBpZiAodHlwZSA9PSBJU01BQ1Ip CistCWZyZWUgKGRhdGEpOworKwl4ZnJlZSAoZGF0YSk7CisgICAgICAgcmV0dXJuIC0xOworICAg ICB9CisgCitAQCAtMzU4LDcgKzM1Nyw3IEBAIHJsX2dlbmVyaWNfYmluZCAodHlwZSwga2V5c2Vx LCBkYXRhLCBtYXApCisgICAgICBLRVlTIGludG8gS0VZU19MRU4uICovCisgICBpZiAocmxfdHJh bnNsYXRlX2tleXNlcSAoa2V5c2VxLCBrZXlzLCAma2V5c19sZW4pKQorICAgICB7CistICAgICAg ZnJlZSAoa2V5cyk7CisrICAgICAgeGZyZWUgKGtleXMpOworICAgICAgIHJldHVybiAtMTsKKyAg ICAgfQorIAorQEAgLTM3MCw3ICszNjksMTAgQEAgcmxfZ2VuZXJpY19iaW5kICh0eXBlLCBrZXlz ZXEsIGRhdGEsIG1hcCkKKyAKKyAgICAgICBpYyA9IHVjOworICAgICAgIGlmIChpYyA8IDAgfHwg aWMgPj0gS0VZTUFQX1NJWkUpCistCXJldHVybiAtMTsKKysgICAgICAgIHsKKysgICAgICAgICAg eGZyZWUgKGtleXMpOworKwkgIHJldHVybiAtMTsKKysgICAgICAgIH0KKyAKKyAgICAgICBpZiAo TUVUQV9DSEFSIChpYykgJiYgX3JsX2NvbnZlcnRfbWV0YV9jaGFyc190b19hc2NpaSkKKyAJewor QEAgLTQxMSwxMSArNDEzLDE4IEBAIHJsX2dlbmVyaWNfYmluZCAodHlwZSwga2V5c2VxLCBkYXRh LCBtYXApCisgICAgICAgZWxzZQorIAl7CisgCSAgaWYgKG1hcFtpY10udHlwZSA9PSBJU01BQ1Ip CistCSAgICBmcmVlICgoY2hhciAqKW1hcFtpY10uZnVuY3Rpb24pOworKwkgICAgeGZyZWUgKChj aGFyICopbWFwW2ljXS5mdW5jdGlvbik7CisgCSAgZWxzZSBpZiAobWFwW2ljXS50eXBlID09IElT S01BUCkKKyAJICAgIHsKKyAJICAgICAgbWFwID0gRlVOQ1RJT05fVE9fS0VZTUFQIChtYXAsIGlj KTsKKyAJICAgICAgaWMgPSBBTllPVEhFUktFWTsKKysJICAgICAgLyogSWYgd2UncmUgdHJ5aW5n IHRvIG92ZXJyaWRlIGEga2V5bWFwIHdpdGggYSBudWxsIGZ1bmN0aW9uCisrCQkgKGUuZy4sIHRy eWluZyB0byB1bmJpbmQgaXQpLCB3ZSBjYW4ndCB1c2UgYSBudWxsIHBvaW50ZXIKKysJCSBoZXJl IGJlY2F1c2UgdGhhdCdzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20gaGF2aW5nIG5vdCBiZWVuCisr CQkgb3ZlcnJpZGRlbi4gIFdlIHVzZSBhIHNwZWNpYWwgYmluZGFibGUgZnVuY3Rpb24gdGhhdCBk b2VzCisrCQkgbm90aGluZy4gKi8KKysJICAgICAgaWYgKHR5cGUgPT0gSVNGVU5DICYmIGRhdGEg PT0gMCkKKysJCWRhdGEgPSAoY2hhciAqKV9ybF9udWxsX2Z1bmN0aW9uOworIAkgICAgfQorIAor IAkgIG1hcFtpY10uZnVuY3Rpb24gPSBLRVlNQVBfVE9fRlVOQ1RJT04gKGRhdGEpOworQEAgLTQy NCw3ICs0MzMsNyBAQCBybF9nZW5lcmljX2JpbmQgKHR5cGUsIGtleXNlcSwgZGF0YSwgbWFwKQor IAorICAgICAgIHJsX2JpbmRpbmdfa2V5bWFwID0gbWFwOworICAgICB9CistICBmcmVlIChrZXlz KTsKKysgIHhmcmVlIChrZXlzKTsKKyAgIHJldHVybiAwOworIH0KKyAKK0BAIC00NjIsMTIgKzQ3 MSwyMSBAQCBybF90cmFuc2xhdGVfa2V5c2VxIChzZXEsIGFycmF5LCBsZW4pCisgCQl9CisgCSAg ICAgIGVsc2UgaWYgKGMgPT0gJ00nKQorIAkJeworLQkJICBpKys7CistCQkgIC8qIFhYWCAtIHNo b3VsZCBvYmV5IGNvbnZlcnQtbWV0YSBzZXR0aW5nPyAqLworKwkJICBpKys7CQkvKiBzZXFbaV0g PT0gJy0nICovCisrCQkgIC8qIFhYWCAtIG9iZXkgY29udmVydC1tZXRhIHNldHRpbmcgKi8KKyAJ CSAgaWYgKF9ybF9jb252ZXJ0X21ldGFfY2hhcnNfdG9fYXNjaWkgJiYgX3JsX2tleW1hcFtFU0Nd LnR5cGUgPT0gSVNLTUFQKQorIAkJICAgIGFycmF5W2wrK10gPSBFU0M7CS8qIEVTQyBpcyBtZXRh LXByZWZpeCAqLworKwkJICBlbHNlIGlmIChzZXFbaSsxXSA9PSAnXFwnICYmIHNlcVtpKzJdID09 ICdDJyAmJiBzZXFbaSszXSA9PSAnLScpCisrCQkgICAgeworKwkJICAgICAgaSArPSA0OworKwkJ ICAgICAgdGVtcCA9IChzZXFbaV0gPT0gJz8nKSA/IFJVQk9VVCA6IENUUkwgKF9ybF90b191cHBl ciAoc2VxW2ldKSk7CisrCQkgICAgICBhcnJheVtsKytdID0gTUVUQSAodGVtcCk7CisrCQkgICAg fQorIAkJICBlbHNlCisgCQkgICAgeworKwkJICAgICAgLyogVGhpcyBkb2Vzbid0IHlldCBoYW5k bGUgdGhpbmdzIGxpa2UgXE0tXGEsIHdoaWNoIG1heQorKwkJCSBvciBtYXkgbm90IGhhdmUgYW55 IHJlYXNvbmFibGUgbWVhbmluZy4gIFlvdSdyZQorKwkJCSBwcm9iYWJseSBiZXR0ZXIgb2ZmIHVz aW5nIHN0cmFpZ2h0IG9jdGFsIG9yIGhleC4gKi8KKyAJCSAgICAgIGkrKzsKKyAJCSAgICAgIGFy cmF5W2wrK10gPSBNRVRBIChzZXFbaV0pOworIAkJICAgIH0KK0BAIC01NjUsNiArNTgzLDExIEBA IHJsX3VudHJhbnNsYXRlX2tleXNlcSAoc2VxKQorICAgICAgIGtzZXFbaSsrXSA9ICctJzsKKyAg ICAgICBjID0gVU5NRVRBIChjKTsKKyAgICAgfQorKyAgZWxzZSBpZiAoYyA9PSBFU0MpCisrICAg IHsKKysgICAgICBrc2VxW2krK10gPSAnXFwnOworKyAgICAgIGMgPSAnZSc7CisrICAgIH0KKyAg IGVsc2UgaWYgKENUUkxfQ0hBUiAoYykpCisgICAgIHsKKyAgICAgICBrc2VxW2krK10gPSAnXFwn OworQEAgLTYxMyw3ICs2MzYsMTIgQEAgX3JsX3VudHJhbnNsYXRlX21hY3JvX3ZhbHVlIChzZXEp CisgCSAgKnIrKyA9ICctJzsKKyAJICBjID0gVU5NRVRBIChjKTsKKyAJfQorLSAgICAgIGVsc2Ug aWYgKENUUkxfQ0hBUiAoYykgJiYgYyAhPSBFU0MpCisrICAgICAgZWxzZSBpZiAoYyA9PSBFU0Mp CisrCXsKKysJICAqcisrID0gJ1xcJzsKKysJICBjID0gJ2UnOworKwl9CisrICAgICAgZWxzZSBp ZiAoQ1RSTF9DSEFSIChjKSkKKyAJeworIAkgICpyKysgPSAnXFwnOworIAkgICpyKysgPSAnQyc7 CitAQCAtNjcyLDcgKzcwMCw3IEBAIHJsX2Z1bmN0aW9uX29mX2tleXNlcSAoa2V5c2VxLCBtYXAs IHR5cGUpCisgeworICAgcmVnaXN0ZXIgaW50IGk7CisgCistICBpZiAoIW1hcCkKKysgIGlmICht YXAgPT0gMCkKKyAgICAgbWFwID0gX3JsX2tleW1hcDsKKyAKKyAgIGZvciAoaSA9IDA7IGtleXNl cSAmJiBrZXlzZXFbaV07IGkrKykKK0BAIC02ODEsMjUgKzcwOSwyNyBAQCBybF9mdW5jdGlvbl9v Zl9rZXlzZXEgKGtleXNlcSwgbWFwLCB0eXBlKQorIAorICAgICAgIGlmIChNRVRBX0NIQVIgKGlj KSAmJiBfcmxfY29udmVydF9tZXRhX2NoYXJzX3RvX2FzY2lpKQorIAl7CistCSAgaWYgKG1hcFtF U0NdLnR5cGUgIT0gSVNLTUFQKQorKwkgIGlmIChtYXBbRVNDXS50eXBlID09IElTS01BUCkKKysJ ICAgIHsKKysJICAgICAgbWFwID0gRlVOQ1RJT05fVE9fS0VZTUFQIChtYXAsIEVTQyk7CisrCSAg ICAgIGljID0gVU5NRVRBIChpYyk7CisrCSAgICB9CisrCSAgLyogWFhYIC0gc2hvdWxkIHdlIGp1 c3QgcmV0dXJuIE5VTEwgaGVyZSwgc2luY2UgdGhpcyBvYnZpb3VzbHkKKysJICAgICBkb2Vzbid0 IG1hdGNoPyAqLworKwkgIGVsc2UKKyAJICAgIHsKKyAJICAgICAgaWYgKHR5cGUpCisgCQkqdHlw ZSA9IG1hcFtFU0NdLnR5cGU7CisgCisgCSAgICAgIHJldHVybiAobWFwW0VTQ10uZnVuY3Rpb24p OworIAkgICAgfQorLQkgIGVsc2UKKy0JICAgIHsKKy0JICAgICAgbWFwID0gRlVOQ1RJT05fVE9f S0VZTUFQIChtYXAsIEVTQyk7CistCSAgICAgIGljID0gVU5NRVRBIChpYyk7CistCSAgICB9Cisg CX0KKyAKKyAgICAgICBpZiAobWFwW2ljXS50eXBlID09IElTS01BUCkKKyAJeworIAkgIC8qIElm IHRoaXMgaXMgdGhlIGxhc3Qga2V5IGluIHRoZSBrZXkgc2VxdWVuY2UsIHJldHVybiB0aGUKKyAJ ICAgICBtYXAuICovCistCSAgaWYgKCFrZXlzZXFbaSArIDFdKQorKwkgIGlmIChrZXlzZXFbaSAr IDFdID09ICdcMCcpCisgCSAgICB7CisgCSAgICAgIGlmICh0eXBlKQorIAkJKnR5cGUgPSBJU0tN QVA7CitAQCAtNzA5LDcgKzczOSwxMiBAQCBybF9mdW5jdGlvbl9vZl9rZXlzZXEgKGtleXNlcSwg bWFwLCB0eXBlKQorIAkgIGVsc2UKKyAJICAgIG1hcCA9IEZVTkNUSU9OX1RPX0tFWU1BUCAobWFw LCBpYyk7CisgCX0KKy0gICAgICBlbHNlCisrICAgICAgLyogSWYgd2UncmUgbm90IGF0IHRoZSBl bmQgb2YgdGhlIGtleSBzZXF1ZW5jZSwgYW5kIHRoZSBjdXJyZW50IGtleQorKwkgaXMgYm91bmQg dG8gc29tZXRoaW5nIG90aGVyIHRoYW4gYSBrZXltYXAsIHRoZW4gdGhlIGVudGlyZSBrZXkKKysJ IHNlcXVlbmNlIGlzIG5vdCBib3VuZC4gKi8KKysgICAgICBlbHNlIGlmIChtYXBbaWNdLnR5cGUg IT0gSVNLTUFQICYmIGtleXNlcVtpKzFdKQorKwlyZXR1cm4gKChybF9jb21tYW5kX2Z1bmNfdCAq KU5VTEwpOworKyAgICAgIGVsc2UJLyogbWFwW2ljXS50eXBlICE9IElTS01BUCAmJiBrZXlzZXFb aSsxXSA9PSAwICovCisgCXsKKyAJICBpZiAodHlwZSkKKyAJICAgICp0eXBlID0gbWFwW2ljXS50 eXBlOworQEAgLTc2NCwxMCArNzk5LDEyIEBAIF9ybF9yZWFkX2ZpbGUgKGZpbGVuYW1lLCBzaXpl cCkKKyAKKyAgIGlmIChpIDwgMCkKKyAgICAgeworLSAgICAgIGZyZWUgKGJ1ZmZlcik7CisrICAg ICAgeGZyZWUgKGJ1ZmZlcik7CisgICAgICAgcmV0dXJuICgoY2hhciAqKU5VTEwpOworICAgICB9 CisgCisrICBSTF9DSEVDS19TSUdOQUxTICgpOworKworICAgYnVmZmVyW2ldID0gJ1wwJzsKKyAg IGlmIChzaXplcCkKKyAgICAgKnNpemVwID0gaTsKK0BAIC03OTEsNiArODI4LDcgQEAgcmxfcmVf cmVhZF9pbml0X2ZpbGUgKGNvdW50LCBpZ25vcmUpCisgICAgICAxLiB0aGUgZmlsZW5hbWUgdXNl ZCBmb3IgdGhlIHByZXZpb3VzIGNhbGwKKyAgICAgIDIuIHRoZSB2YWx1ZSBvZiB0aGUgc2hlbGwg dmFyaWFibGUgYElOUFVUUkMnCisgICAgICAzLiB+Ly5pbnB1dHJjCisrICAgICA0LiAvZXRjL2lu cHV0cmMKKyAgICBJZiB0aGUgZmlsZSBleGlzdGVkIGFuZCBjb3VsZCBiZSBvcGVuZWQgYW5kIHJl YWQsIDAgaXMgcmV0dXJuZWQsCisgICAgb3RoZXJ3aXNlIGVycm5vIGlzIHJldHVybmVkLiAqLwor IGludAorQEAgLTc5OSwxNyArODM3LDE4IEBAIHJsX3JlYWRfaW5pdF9maWxlIChmaWxlbmFtZSkK KyB7CisgICAvKiBEZWZhdWx0IHRoZSBmaWxlbmFtZS4gKi8KKyAgIGlmIChmaWxlbmFtZSA9PSAw KQorKyAgICBmaWxlbmFtZSA9IGxhc3RfcmVhZGxpbmVfaW5pdF9maWxlOworKyAgaWYgKGZpbGVu YW1lID09IDApCisrICAgIGZpbGVuYW1lID0gc2hfZ2V0X2Vudl92YWx1ZSAoIklOUFVUUkMiKTsK KysgIGlmIChmaWxlbmFtZSA9PSAwIHx8ICpmaWxlbmFtZSA9PSAwKQorICAgICB7CistICAgICAg ZmlsZW5hbWUgPSBsYXN0X3JlYWRsaW5lX2luaXRfZmlsZTsKKy0gICAgICBpZiAoZmlsZW5hbWUg PT0gMCkKKy0gICAgICAgIGZpbGVuYW1lID0gc2hfZ2V0X2Vudl92YWx1ZSAoIklOUFVUUkMiKTsK Ky0gICAgICBpZiAoZmlsZW5hbWUgPT0gMCkKKy0JZmlsZW5hbWUgPSBERUZBVUxUX0lOUFVUUkM7 CisrICAgICAgZmlsZW5hbWUgPSBERUZBVUxUX0lOUFVUUkM7CisrICAgICAgLyogVHJ5IHRvIHJl YWQgREVGQVVMVF9JTlBVVFJDOyBmYWxsIGJhY2sgdG8gU1lTX0lOUFVUUkMgb24gZmFpbHVyZSAq LworKyAgICAgIGlmIChfcmxfcmVhZF9pbml0X2ZpbGUgKGZpbGVuYW1lLCAwKSA9PSAwKQorKwly ZXR1cm4gMDsKKysgICAgICBmaWxlbmFtZSA9IFNZU19JTlBVVFJDOworICAgICB9CisgCistICBp ZiAoKmZpbGVuYW1lID09IDApCistICAgIGZpbGVuYW1lID0gREVGQVVMVF9JTlBVVFJDOworLQor ICNpZiBkZWZpbmVkIChfX01TRE9TX18pCisgICBpZiAoX3JsX3JlYWRfaW5pdF9maWxlIChmaWxl bmFtZSwgMCkgPT0gMCkKKyAgICAgcmV0dXJuIDA7CitAQCAtODMyLDggKzg3MSw5IEBAIF9ybF9y ZWFkX2luaXRfZmlsZSAoZmlsZW5hbWUsIGluY2x1ZGVfbGV2ZWwpCisgCisgICBvcGVubmFtZSA9 IHRpbGRlX2V4cGFuZCAoZmlsZW5hbWUpOworICAgYnVmZmVyID0gX3JsX3JlYWRfZmlsZSAob3Bl bm5hbWUsICZmaWxlX3NpemUpOworLSAgZnJlZSAob3Blbm5hbWUpOworKyAgeGZyZWUgKG9wZW5u YW1lKTsKKyAKKysgIFJMX0NIRUNLX1NJR05BTFMgKCk7CisgICBpZiAoYnVmZmVyID09IDApCisg ICAgIHJldHVybiAoZXJybm8pOworICAgCitAQCAtODgwLDcgKzkyMCw3IEBAIF9ybF9yZWFkX2lu aXRfZmlsZSAoZmlsZW5hbWUsIGluY2x1ZGVfbGV2ZWwpCisgICAgICAgY3VycmVudF9yZWFkbGlu ZV9pbml0X2xpbmVubysrOworICAgICB9CisgCistICBmcmVlIChidWZmZXIpOworKyAgeGZyZWUg KGJ1ZmZlcik7CisgICBjdXJyZW50bHlfcmVhZGluZ19pbml0X2ZpbGUgPSAwOworICAgcmV0dXJu ICgwKTsKKyB9CitAQCAtODkwLDEwICs5MzAsMTAgQEAgX3JsX2luaXRfZmlsZV9lcnJvciAobXNn KQorICAgICAgY29uc3QgY2hhciAqbXNnOworIHsKKyAgIGlmIChjdXJyZW50bHlfcmVhZGluZ19p bml0X2ZpbGUpCistICAgIGZwcmludGYgKHN0ZGVyciwgInJlYWRsaW5lOiAlczogbGluZSAlZDog JXNcbiIsIGN1cnJlbnRfcmVhZGxpbmVfaW5pdF9maWxlLAorKyAgICBfcmxfZXJybXNnICgiJXM6 IGxpbmUgJWQ6ICVzXG4iLCBjdXJyZW50X3JlYWRsaW5lX2luaXRfZmlsZSwKKyAJCSAgICAgY3Vy cmVudF9yZWFkbGluZV9pbml0X2xpbmVubywgbXNnKTsKKyAgIGVsc2UKKy0gICAgZnByaW50ZiAo c3RkZXJyLCAicmVhZGxpbmU6ICVzXG4iLCBtc2cpOworKyAgICBfcmxfZXJybXNnICgiJXMiLCBt c2cpOworIH0KKyAKKyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqICovCitAQCAtOTA1LDExICs5NDUsMTEgQEAgX3JsX2lu aXRfZmlsZV9lcnJvciAobXNnKQorIHR5cGVkZWYgaW50IF9ybF9wYXJzZXJfZnVuY190IFBBUkFN UygoY2hhciAqKSk7CisgCisgLyogVGhpbmdzIHRoYXQgbWVhbiBgQ29udHJvbCcuICovCistY29u c3QgY2hhciAqX3JsX3Bvc3NpYmxlX2NvbnRyb2xfcHJlZml4ZXNbXSA9IHsKKytjb25zdCBjaGFy ICogY29uc3QgX3JsX3Bvc3NpYmxlX2NvbnRyb2xfcHJlZml4ZXNbXSA9IHsKKyAgICJDb250cm9s LSIsICJDLSIsICJDVFJMLSIsIChjb25zdCBjaGFyICopTlVMTAorIH07CisgCistY29uc3QgY2hh ciAqX3JsX3Bvc3NpYmxlX21ldGFfcHJlZml4ZXNbXSA9IHsKKytjb25zdCBjaGFyICogY29uc3Qg X3JsX3Bvc3NpYmxlX21ldGFfcHJlZml4ZXNbXSA9IHsKKyAgICJNZXRhIiwgIk0tIiwgKGNvbnN0 IGNoYXIgKilOVUxMCisgfTsKKyAKK0BAIC05NzEsNyArMTAxMSw3IEBAIHBhcnNlcl9pZiAoYXJn cykKKyAJIGAkaWYgdGVybT1zdW4tY21kJyBpbnRvIHRoZWlyIC5pbnB1dHJjLiAqLworICAgICAg IF9ybF9wYXJzaW5nX2NvbmRpdGlvbmFsaXplZF9vdXQgPSBfcmxfc3RyaWNtcCAoYXJncyArIDUs IHRuYW1lKSAmJgorIAkJCQkJX3JsX3N0cmljbXAgKGFyZ3MgKyA1LCBybF90ZXJtaW5hbF9uYW1l KTsKKy0gICAgICBmcmVlICh0bmFtZSk7CisrICAgICAgeGZyZWUgKHRuYW1lKTsKKyAgICAgfQor ICNpZiBkZWZpbmVkIChWSV9NT0RFKQorICAgZWxzZSBpZiAoX3JsX3N0cm5pY21wIChhcmdzLCAi bW9kZT0iLCA1KSA9PSAwKQorQEAgLTEwNjgsOCArMTEwOCw4IEBAIHBhcnNlcl9pbmNsdWRlIChh cmdzKQorIH0KKyAgIAorIC8qIEFzc29jaWF0ZSB0ZXh0dWFsIG5hbWVzIHdpdGggYWN0dWFsIGZ1 bmN0aW9ucy4gKi8KKy1zdGF0aWMgc3RydWN0IHsKKy0gIGNvbnN0IGNoYXIgKm5hbWU7Cisrc3Rh dGljIGNvbnN0IHN0cnVjdCB7CisrICBjb25zdCBjaGFyICogY29uc3QgbmFtZTsKKyAgIF9ybF9w YXJzZXJfZnVuY190ICpmdW5jdGlvbjsKKyB9IHBhcnNlcl9kaXJlY3RpdmVzIFtdID0geworICAg eyAiaWYiLCBwYXJzZXJfaWYgfSwKK0BAIC0xMzIxLDcgKzEzNjEsNyBAQCBybF9wYXJzZV9hbmRf YmluZCAoc3RyaW5nKQorICAgICAgIGVsc2UKKyAJcmxfYmluZF9rZXlzZXEgKHNlcSwgcmxfbmFt ZWRfZnVuY3Rpb24gKGZ1bm5hbWUpKTsKKyAKKy0gICAgICBmcmVlIChzZXEpOworKyAgICAgIHhm cmVlIChzZXEpOworICAgICAgIHJldHVybiAwOworICAgICB9CisgCitAQCAtMTM3NSw4ICsxNDE1 LDggQEAgcmxfcGFyc2VfYW5kX2JpbmQgKHN0cmluZykKKyAKKyAjZGVmaW5lIFZfU1BFQ0lBTAkw eDEKKyAKKy1zdGF0aWMgc3RydWN0IHsKKy0gIGNvbnN0IGNoYXIgKm5hbWU7Cisrc3RhdGljIGNv bnN0IHN0cnVjdCB7CisrICBjb25zdCBjaGFyICogY29uc3QgbmFtZTsKKyAgIGludCAqdmFsdWU7 CisgICBpbnQgZmxhZ3M7CisgfSBib29sZWFuX3Zhcmxpc3QgW10gPSB7CitAQCAtMTM4NCw5ICsx NDI0LDEyIEBAIHN0YXRpYyBzdHJ1Y3QgeworICAgeyAiYmxpbmstbWF0Y2hpbmctcGFyZW4iLAkm cmxfYmxpbmtfbWF0Y2hpbmdfcGFyZW4sCVZfU1BFQ0lBTCB9LAorICAgeyAiYnl0ZS1vcmllbnRl ZCIsCQkmcmxfYnl0ZV9vcmllbnRlZCwJCTAgfSwKKyAgIHsgImNvbXBsZXRpb24taWdub3JlLWNh c2UiLAkmX3JsX2NvbXBsZXRpb25fY2FzZV9mb2xkLAkwIH0sCisrICB7ICJjb21wbGV0aW9uLW1h cC1jYXNlIiwJJl9ybF9jb21wbGV0aW9uX2Nhc2VfbWFwLAkwIH0sCisgICB7ICJjb252ZXJ0LW1l dGEiLAkJJl9ybF9jb252ZXJ0X21ldGFfY2hhcnNfdG9fYXNjaWksIDAgfSwKKyAgIHsgImRpc2Fi bGUtY29tcGxldGlvbiIsCSZybF9pbmhpYml0X2NvbXBsZXRpb24sCQkwIH0sCisrICB7ICJlY2hv LWNvbnRyb2wtY2hhcmFjdGVycyIsCSZfcmxfZWNob19jb250cm9sX2NoYXJzLAkwIH0sCisgICB7 ICJlbmFibGUta2V5cGFkIiwJCSZfcmxfZW5hYmxlX2tleXBhZCwJCTAgfSwKKysgIHsgImVuYWJs ZS1tZXRhLWtleSIsCQkmX3JsX2VuYWJsZV9tZXRhLAkJMCB9LAorICAgeyAiZXhwYW5kLXRpbGRl IiwJCSZybF9jb21wbGV0ZV93aXRoX3RpbGRlX2V4cGFuc2lvbiwgMCB9LAorICAgeyAiaGlzdG9y eS1wcmVzZXJ2ZS1wb2ludCIsCSZfcmxfaGlzdG9yeV9wcmVzZXJ2ZV9wb2ludCwJMCB9LAorICAg eyAiaG9yaXpvbnRhbC1zY3JvbGwtbW9kZSIsCSZfcmxfaG9yaXpvbnRhbF9zY3JvbGxfbW9kZSwJ MCB9LAorQEAgLTEzOTUsMTcgKzE0MzgsMjAgQEAgc3RhdGljIHN0cnVjdCB7CisgICB7ICJtYXJr LW1vZGlmaWVkLWxpbmVzIiwJJl9ybF9tYXJrX21vZGlmaWVkX2xpbmVzLAkwIH0sCisgICB7ICJt YXJrLXN5bWxpbmtlZC1kaXJlY3RvcmllcyIsICZfcmxfY29tcGxldGVfbWFya19zeW1saW5rX2Rp cnMsIDAgfSwKKyAgIHsgIm1hdGNoLWhpZGRlbi1maWxlcyIsCSZfcmxfbWF0Y2hfaGlkZGVuX2Zp bGVzLAkwIH0sCisrICB7ICJtZW51LWNvbXBsZXRlLWRpc3BsYXktcHJlZml4IiwgJl9ybF9tZW51 X2NvbXBsZXRlX3ByZWZpeF9maXJzdCwgMCB9LAorICAgeyAibWV0YS1mbGFnIiwJCSZfcmxfbWV0 YV9mbGFnLAkJCTAgfSwKKyAgIHsgIm91dHB1dC1tZXRhIiwJCSZfcmxfb3V0cHV0X21ldGFfY2hh cnMsCQkwIH0sCisgICB7ICJwYWdlLWNvbXBsZXRpb25zIiwJCSZfcmxfcGFnZV9jb21wbGV0aW9u cywJCTAgfSwKKyAgIHsgInByZWZlci12aXNpYmxlLWJlbGwiLAkmX3JsX3ByZWZlcl92aXNpYmxl X2JlbGwsCVZfU1BFQ0lBTCB9LAorICAgeyAicHJpbnQtY29tcGxldGlvbnMtaG9yaXpvbnRhbGx5 IiwgJl9ybF9wcmludF9jb21wbGV0aW9uc19ob3Jpem9udGFsbHksIDAgfSwKKysgIHsgInJldmVy dC1hbGwtYXQtbmV3bGluZSIsCSZfcmxfcmV2ZXJ0X2FsbF9hdF9uZXdsaW5lLAkwIH0sCisgICB7 ICJzaG93LWFsbC1pZi1hbWJpZ3VvdXMiLAkmX3JsX2NvbXBsZXRlX3Nob3dfYWxsLAkJMCB9LAor ICAgeyAic2hvdy1hbGwtaWYtdW5tb2RpZmllZCIsCSZfcmxfY29tcGxldGVfc2hvd191bm1vZGlm aWVkLAkwIH0sCisrICB7ICJza2lwLWNvbXBsZXRlZC10ZXh0IiwJJl9ybF9za2lwX2NvbXBsZXRl ZF90ZXh0LAkwIH0sCisgI2lmIGRlZmluZWQgKFZJU0lCTEVfU1RBVFMpCisgICB7ICJ2aXNpYmxl LXN0YXRzIiwJCSZybF92aXNpYmxlX3N0YXRzLAkJMCB9LAorICNlbmRpZiAvKiBWSVNJQkxFX1NU QVRTICovCistICB7IChjaGFyICopTlVMTCwgKGludCAqKU5VTEwgfQorKyAgeyAoY2hhciAqKU5V TEwsIChpbnQgKilOVUxMLCAwIH0KKyB9OworIAorIHN0YXRpYyBpbnQKK0BAIC0xNDU4LDIzICsx NTA0LDI5IEBAIHR5cGVkZWYgaW50IF9ybF9zdl9mdW5jX3QgUEFSQU1TKChjb25zdCBjaGFyICop KTsKKyAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAqLworIHN0YXRpYyBpbnQgc3ZfYmVsbF9zdHls ZSBQQVJBTVMoKGNvbnN0IGNoYXIgKikpOworIHN0YXRpYyBpbnQgc3ZfY29tYmVnaW4gUEFSQU1T KChjb25zdCBjaGFyICopKTsKKytzdGF0aWMgaW50IHN2X2Rpc3BwcmVmaXggUEFSQU1TKChjb25z dCBjaGFyICopKTsKKyBzdGF0aWMgaW50IHN2X2NvbXBxdWVyeSBQQVJBTVMoKGNvbnN0IGNoYXIg KikpOworK3N0YXRpYyBpbnQgc3ZfY29tcHdpZHRoIFBBUkFNUygoY29uc3QgY2hhciAqKSk7Cisg c3RhdGljIGludCBzdl9lZGl0bW9kZSBQQVJBTVMoKGNvbnN0IGNoYXIgKikpOworK3N0YXRpYyBp bnQgc3ZfaGlzdHNpemUgUEFSQU1TKChjb25zdCBjaGFyICopKTsKKyBzdGF0aWMgaW50IHN2X2lz cmNodGVybSBQQVJBTVMoKGNvbnN0IGNoYXIgKikpOworIHN0YXRpYyBpbnQgc3Zfa2V5bWFwIFBB UkFNUygoY29uc3QgY2hhciAqKSk7CisgCistc3RhdGljIHN0cnVjdCB7CistICBjb25zdCBjaGFy ICpuYW1lOworK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworKyAgY29uc3QgY2hhciAqIGNvbnN0IG5h bWU7CisgICBpbnQgZmxhZ3M7CisgICBfcmxfc3ZfZnVuY190ICpzZXRfZnVuYzsKKyB9IHN0cmlu Z192YXJsaXN0W10gPSB7CisgICB7ICJiZWxsLXN0eWxlIiwJVl9TVFJJTkcsCXN2X2JlbGxfc3R5 bGUgfSwKKyAgIHsgImNvbW1lbnQtYmVnaW4iLAlWX1NUUklORywJc3ZfY29tYmVnaW4gfSwKKysg IHsgImNvbXBsZXRpb24tZGlzcGxheS13aWR0aCIsIFZfSU5ULAlzdl9jb21wd2lkdGggfSwKKysg IHsgImNvbXBsZXRpb24tcHJlZml4LWRpc3BsYXktbGVuZ3RoIiwgVl9JTlQsCXN2X2Rpc3BwcmVm aXggfSwKKyAgIHsgImNvbXBsZXRpb24tcXVlcnktaXRlbXMiLCBWX0lOVCwJc3ZfY29tcHF1ZXJ5 IH0sCisgICB7ICJlZGl0aW5nLW1vZGUiLAlWX1NUUklORywJc3ZfZWRpdG1vZGUgfSwKKysgIHsg Imhpc3Rvcnktc2l6ZSIsCVZfSU5ULAkJc3ZfaGlzdHNpemUgfSwKKyAgIHsgImlzZWFyY2gtdGVy bWluYXRvcnMiLCBWX1NUUklORywJc3ZfaXNyY2h0ZXJtIH0sCisgICB7ICJrZXltYXAiLAkJVl9T VFJJTkcsCXN2X2tleW1hcCB9LAorLSAgeyAoY2hhciAqKU5VTEwsCTAgfQorKyAgeyAoY2hhciAq KU5VTEwsCTAsIChfcmxfc3ZfZnVuY190ICopMCB9CisgfTsKKyAKKyBzdGF0aWMgaW50CitAQCAt MTUwNiw4ICsxNTU4LDYgQEAgcmxfdmFyaWFibGVfdmFsdWUgKG5hbWUpCisgICAgICBjb25zdCBj aGFyICpuYW1lOworIHsKKyAgIHJlZ2lzdGVyIGludCBpOworLSAgaW50CXY7CistICBjaGFyICpy ZXQ7CisgCisgICAvKiBDaGVjayBmb3Igc2ltcGxlIHZhcmlhYmxlcyBmaXJzdC4gKi8KKyAgIGkg PSBmaW5kX2Jvb2xlYW5fdmFyIChuYW1lKTsKK0BAIC0xNTg1LDYgKzE2MzUsMjIgQEAgc3ZfY29t YmVnaW4gKHZhbHVlKQorIH0KKyAKKyBzdGF0aWMgaW50Cisrc3ZfZGlzcHByZWZpeCAodmFsdWUp CisrICAgICBjb25zdCBjaGFyICp2YWx1ZTsKKyt7CisrICBpbnQgbnZhbCA9IDA7CisrCisrICBp ZiAodmFsdWUgJiYgKnZhbHVlKQorKyAgICB7CisrICAgICAgbnZhbCA9IGF0b2kgKHZhbHVlKTsK KysgICAgICBpZiAobnZhbCA8IDApCisrCW52YWwgPSAwOworKyAgICB9CisrICBfcmxfY29tcGxl dGlvbl9wcmVmaXhfZGlzcGxheV9sZW5ndGggPSBudmFsOworKyAgcmV0dXJuIDA7CisrfQorKwor K3N0YXRpYyBpbnQKKyBzdl9jb21wcXVlcnkgKHZhbHVlKQorICAgICAgY29uc3QgY2hhciAqdmFs dWU7CisgeworQEAgLTE2MDEsNiArMTY2NywzNSBAQCBzdl9jb21wcXVlcnkgKHZhbHVlKQorIH0K KyAKKyBzdGF0aWMgaW50Cisrc3ZfY29tcHdpZHRoICh2YWx1ZSkKKysgICAgIGNvbnN0IGNoYXIg KnZhbHVlOworK3sKKysgIGludCBudmFsID0gLTE7CisrCisrICBpZiAodmFsdWUgJiYgKnZhbHVl KQorKyAgICBudmFsID0gYXRvaSAodmFsdWUpOworKworKyAgX3JsX2NvbXBsZXRpb25fY29sdW1u cyA9IG52YWw7CisrICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludAorK3N2X2hpc3RzaXpl ICh2YWx1ZSkKKysgICAgIGNvbnN0IGNoYXIgKnZhbHVlOworK3sKKysgIGludCBudmFsID0gNTAw OworKworKyAgaWYgKHZhbHVlICYmICp2YWx1ZSkKKysgICAgeworKyAgICAgIG52YWwgPSBhdG9p ICh2YWx1ZSk7CisrICAgICAgaWYgKG52YWwgPCAwKQorKwlyZXR1cm4gMTsKKysgICAgfQorKyAg c3RpZmxlX2hpc3RvcnkgKG52YWwpOworKyAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQK KyBzdl9rZXltYXAgKHZhbHVlKQorICAgICAgY29uc3QgY2hhciAqdmFsdWU7CisgeworQEAgLTE2 NjQsNyArMTc1OSw3IEBAIHN2X2lzcmNodGVybSAodmFsdWUpCisgICBybF90cmFuc2xhdGVfa2V5 c2VxICh2ICsgYmVnLCBfcmxfaXNlYXJjaF90ZXJtaW5hdG9ycywgJmVuZCk7CisgICBfcmxfaXNl YXJjaF90ZXJtaW5hdG9yc1tlbmRdID0gJ1wwJzsKKyAKKy0gIGZyZWUgKHYpOworKyAgeGZyZWUg KHYpOworICAgcmV0dXJuIDA7CisgfQorICAgICAgIAorQEAgLTE2NzIsMTEgKzE3NjcsMTEgQEAg c3ZfaXNyY2h0ZXJtICh2YWx1ZSkKKyAgICBGb3IgZXhhbXBsZSwgYFNwYWNlJyByZXR1cm5zICcg Jy4gKi8KKyAKKyB0eXBlZGVmIHN0cnVjdCB7CistICBjb25zdCBjaGFyICpuYW1lOworKyAgY29u c3QgY2hhciAqIGNvbnN0IG5hbWU7CisgICBpbnQgdmFsdWU7CisgfSBhc3NvY19saXN0OworIAor LXN0YXRpYyBhc3NvY19saXN0IG5hbWVfa2V5X2FsaXN0W10gPSB7Cisrc3RhdGljIGNvbnN0IGFz c29jX2xpc3QgbmFtZV9rZXlfYWxpc3RbXSA9IHsKKyAgIHsgIkRFTCIsIDB4N2YgfSwKKyAgIHsg IkVTQyIsICdcMDMzJyB9LAorICAgeyAiRXNjYXBlIiwgJ1wwMzMnIH0sCitAQCAtMTcwNSw4ICsx ODAwLDggQEAgZ2xlYW5fa2V5X2Zyb21fbmFtZSAobmFtZSkKKyB9CisgCisgLyogQXV4aWxpYXJ5 IGZ1bmN0aW9ucyB0byBtYW5hZ2Uga2V5bWFwcy4gKi8KKy1zdGF0aWMgc3RydWN0IHsKKy0gIGNv bnN0IGNoYXIgKm5hbWU7Cisrc3RhdGljIGNvbnN0IHN0cnVjdCB7CisrICBjb25zdCBjaGFyICog Y29uc3QgbmFtZTsKKyAgIEtleW1hcCBtYXA7CisgfSBrZXltYXBfbmFtZXNbXSA9IHsKKyAgIHsg ImVtYWNzIiwgZW1hY3Nfc3RhbmRhcmRfa2V5bWFwIH0sCitAQCAtMTgwOSw3ICsxOTA0LDcgQEAg cmxfbGlzdF9mdW5tYXBfbmFtZXMgKCkKKyAgIGZvciAoaSA9IDA7IGZ1bm1hcF9uYW1lc1tpXTsg aSsrKQorICAgICBmcHJpbnRmIChybF9vdXRzdHJlYW0sICIlc1xuIiwgZnVubWFwX25hbWVzW2ld KTsKKyAKKy0gIGZyZWUgKGZ1bm1hcF9uYW1lcyk7CisrICB4ZnJlZSAoZnVubWFwX25hbWVzKTsK KyB9CisgCisgc3RhdGljIGNoYXIgKgorQEAgLTE5NDgsMTIgKzIwNDMsMTYgQEAgcmxfaW52b2tp bmdfa2V5c2Vxc19pbl9tYXAgKGZ1bmN0aW9uLCBtYXApCisgCQljaGFyICprZXluYW1lID0gKGNo YXIgKil4bWFsbG9jICg2ICsgc3RybGVuIChzZXFzW2ldKSk7CisgCisgCQlpZiAoa2V5ID09IEVT QykKKy0jaWYgMAorLQkJICBzcHJpbnRmIChrZXluYW1lLCAiXFxlIik7CistI2Vsc2UKKy0JCS8q IFhYWCAtIGV4cGVyaW1lbnRhbCAqLworLQkJICBzcHJpbnRmIChrZXluYW1lLCAiXFxNLSIpOwor LSNlbmRpZgorKwkJICB7CisrCQkgICAgLyogSWYgRVNDIGlzIHRoZSBtZXRhIHByZWZpeCBhbmQg d2UncmUgY29udmVydGluZyBjaGFycworKwkJICAgICAgIHdpdGggdGhlIGVpZ2h0aCBiaXQgc2V0 IHRvIEVTQy1wcmVmaXhlZCBzZXF1ZW5jZXMsIHRoZW4KKysJCSAgICAgICB3ZSBjYW4gdXNlIFxN LS4gIE90aGVyd2lzZSB3ZSBuZWVkIHRvIHVzZSB0aGUgc2VxdWVuY2UKKysJCSAgICAgICBmb3Ig RVNDLiAqLworKwkJICAgIGlmIChfcmxfY29udmVydF9tZXRhX2NoYXJzX3RvX2FzY2lpICYmIG1h cFtFU0NdLnR5cGUgPT0gSVNLTUFQKQorKwkJICAgICAgc3ByaW50ZiAoa2V5bmFtZSwgIlxcTS0i KTsKKysJCSAgICBlbHNlCisrCQkgICAgICBzcHJpbnRmIChrZXluYW1lLCAiXFxlIik7CisrCQkg IH0KKyAJCWVsc2UgaWYgKENUUkxfQ0hBUiAoa2V5KSkKKyAJCSAgc3ByaW50ZiAoa2V5bmFtZSwg IlxcQy0lYyIsIF9ybF90b19sb3dlciAoVU5DVFJMIChrZXkpKSk7CisgCQllbHNlIGlmIChrZXkg PT0gUlVCT1VUKQorQEAgLTE5NzEsNyArMjA3MCw3IEBAIHJsX2ludm9raW5nX2tleXNlcXNfaW5f bWFwIChmdW5jdGlvbiwgbWFwKQorIAkJICB9CisgCQkKKyAJCXN0cmNhdCAoa2V5bmFtZSwgc2Vx c1tpXSk7CistCQlmcmVlIChzZXFzW2ldKTsKKysJCXhmcmVlIChzZXFzW2ldKTsKKyAKKyAJCWlm IChyZXN1bHRfaW5kZXggKyAyID4gcmVzdWx0X3NpemUpCisgCQkgIHsKK0BAIC0xOTgzLDcgKzIw ODIsNyBAQCBybF9pbnZva2luZ19rZXlzZXFzX2luX21hcCAoZnVuY3Rpb24sIG1hcCkKKyAJCXJl c3VsdFtyZXN1bHRfaW5kZXhdID0gKGNoYXIgKilOVUxMOworIAkgICAgICB9CisgCistCSAgICBm cmVlIChzZXFzKTsKKysJICAgIHhmcmVlIChzZXFzKTsKKyAJICB9CisgCSAgYnJlYWs7CisgCX0K K0BAIC0yMDM1LDEwICsyMTM0LDEwIEBAIHJsX2Z1bmN0aW9uX2R1bXBlciAocHJpbnRfcmVhZGFi bHkpCisgCQl7CisgCQkgIGZwcmludGYgKHJsX291dHN0cmVhbSwgIlwiJXNcIjogJXNcbiIsCisg CQkJICAgaW52b2tlcnNbal0sIG5hbWUpOworLQkJICBmcmVlIChpbnZva2Vyc1tqXSk7CisrCQkg IHhmcmVlIChpbnZva2Vyc1tqXSk7CisgCQl9CisgCistCSAgICAgIGZyZWUgKGludm9rZXJzKTsK KysJICAgICAgeGZyZWUgKGludm9rZXJzKTsKKyAJICAgIH0KKyAJfQorICAgICAgIGVsc2UKK0BA IC0yMDYyLDkgKzIxNjEsOSBAQCBybF9mdW5jdGlvbl9kdW1wZXIgKHByaW50X3JlYWRhYmx5KQor IAkJZnByaW50ZiAocmxfb3V0c3RyZWFtLCAiLi4uXG4iKTsKKyAKKyAJICAgICAgZm9yIChqID0g MDsgaW52b2tlcnNbal07IGorKykKKy0JCWZyZWUgKGludm9rZXJzW2pdKTsKKysJCXhmcmVlIChp bnZva2Vyc1tqXSk7CisgCistCSAgICAgIGZyZWUgKGludm9rZXJzKTsKKysJICAgICAgeGZyZWUg KGludm9rZXJzKTsKKyAJICAgIH0KKyAJfQorICAgICB9CitAQCAtMjExMSw4ICsyMjEwLDggQEAg X3JsX21hY3JvX2R1bXBlcl9pbnRlcm5hbCAocHJpbnRfcmVhZGFibHksIG1hcCwgcHJlZml4KQor IAkgICAgZnByaW50ZiAocmxfb3V0c3RyZWFtLCAiJXMlcyBvdXRwdXRzICVzXG4iLCBwcmVmaXgg PyBwcmVmaXggOiAiIiwKKyAJCQkJCQkJa2V5bmFtZSwKKyAJCQkJCQkJb3V0ID8gb3V0IDogIiIp OworLQkgIGZyZWUgKGtleW5hbWUpOworLQkgIGZyZWUgKG91dCk7CisrCSAgeGZyZWUgKGtleW5h bWUpOworKwkgIHhmcmVlIChvdXQpOworIAkgIGJyZWFrOworIAljYXNlIElTRlVOQzoKKyAJICBi cmVhazsKK0BAIC0yMTM1LDEzICsyMjM0LDEzIEBAIF9ybF9tYWNyb19kdW1wZXJfaW50ZXJuYWwg KHByaW50X3JlYWRhYmx5LCBtYXAsIHByZWZpeCkKKyAJCSAgb3V0ID0gKGNoYXIgKil4bWFsbG9j IChzdHJsZW4gKGtleW5hbWUpICsgcHJlZml4X2xlbiArIDEpOworIAkJICBzdHJjcHkgKG91dCwg cHJlZml4KTsKKyAJCSAgc3RyY3B5IChvdXQgKyBwcmVmaXhfbGVuLCBrZXluYW1lKTsKKy0JCSAg ZnJlZSAoa2V5bmFtZSk7CisrCQkgIHhmcmVlIChrZXluYW1lKTsKKyAJCSAga2V5bmFtZSA9IG91 dDsKKyAJCX0KKyAJICAgIH0KKyAKKyAJICBfcmxfbWFjcm9fZHVtcGVyX2ludGVybmFsIChwcmlu dF9yZWFkYWJseSwgRlVOQ1RJT05fVE9fS0VZTUFQIChtYXAsIGtleSksIGtleW5hbWUpOworLQkg IGZyZWUgKGtleW5hbWUpOworKwkgIHhmcmVlIChrZXluYW1lKTsKKyAJICBicmVhazsKKyAJfQor ICAgICB9CitAQCAtMjE3MSw3ICsyMjcwLDYgQEAgX3JsX2dldF9zdHJpbmdfdmFyaWFibGVfdmFs dWUgKG5hbWUpCisgeworICAgc3RhdGljIGNoYXIgbnVtYnVmWzMyXTsKKyAgIGNoYXIgKnJldDsK Ky0gIGludCBuOworIAorICAgaWYgKF9ybF9zdHJpY21wIChuYW1lLCAiYmVsbC1zdHlsZSIpID09 IDApCisgICAgIHsKK0BAIC0yMTg4LDYgKzIyODYsMTYgQEAgX3JsX2dldF9zdHJpbmdfdmFyaWFi bGVfdmFsdWUgKG5hbWUpCisgICAgIH0KKyAgIGVsc2UgaWYgKF9ybF9zdHJpY21wIChuYW1lLCAi Y29tbWVudC1iZWdpbiIpID09IDApCisgICAgIHJldHVybiAoX3JsX2NvbW1lbnRfYmVnaW4gPyBf cmxfY29tbWVudF9iZWdpbiA6IFJMX0NPTU1FTlRfQkVHSU5fREVGQVVMVCk7CisrICBlbHNlIGlm IChfcmxfc3RyaWNtcCAobmFtZSwgImNvbXBsZXRpb24tZGlzcGxheS13aWR0aCIpID09IDApCisr ICAgIHsKKysgICAgICBzcHJpbnRmIChudW1idWYsICIlZCIsIF9ybF9jb21wbGV0aW9uX2NvbHVt bnMpOworKyAgICAgIHJldHVybiAobnVtYnVmKTsKKysgICAgfQorKyAgZWxzZSBpZiAoX3JsX3N0 cmljbXAgKG5hbWUsICJjb21wbGV0aW9uLXByZWZpeC1kaXNwbGF5LWxlbmd0aCIpID09IDApCisr ICAgIHsKKysgICAgICBzcHJpbnRmIChudW1idWYsICIlZCIsIF9ybF9jb21wbGV0aW9uX3ByZWZp eF9kaXNwbGF5X2xlbmd0aCk7CisrICAgICAgcmV0dXJuIChudW1idWYpOworKyAgICB9CisgICBl bHNlIGlmIChfcmxfc3RyaWNtcCAobmFtZSwgImNvbXBsZXRpb24tcXVlcnktaXRlbXMiKSA9PSAw KQorICAgICB7CisgICAgICAgc3ByaW50ZiAobnVtYnVmLCAiJWQiLCBybF9jb21wbGV0aW9uX3F1 ZXJ5X2l0ZW1zKTsKK0BAIC0yMTk1LDYgKzIzMDMsMTEgQEAgX3JsX2dldF9zdHJpbmdfdmFyaWFi bGVfdmFsdWUgKG5hbWUpCisgICAgIH0KKyAgIGVsc2UgaWYgKF9ybF9zdHJpY21wIChuYW1lLCAi ZWRpdGluZy1tb2RlIikgPT0gMCkKKyAgICAgcmV0dXJuIChybF9nZXRfa2V5bWFwX25hbWVfZnJv bV9lZGl0X21vZGUgKCkpOworKyAgZWxzZSBpZiAoX3JsX3N0cmljbXAgKG5hbWUsICJoaXN0b3J5 LXNpemUiKSA9PSAwKQorKyAgICB7CisrICAgICAgc3ByaW50ZiAobnVtYnVmLCAiJWQiLCBoaXN0 b3J5X2lzX3N0aWZsZWQoKSA/IGhpc3RvcnlfbWF4X2VudHJpZXMgOiAwKTsKKysgICAgICByZXR1 cm4gKG51bWJ1Zik7CisrICAgIH0KKyAgIGVsc2UgaWYgKF9ybF9zdHJpY21wIChuYW1lLCAiaXNl YXJjaC10ZXJtaW5hdG9ycyIpID09IDApCisgICAgIHsKKyAgICAgICBpZiAoX3JsX2lzZWFyY2hf dGVybWluYXRvcnMgPT0gMCkKK0BAIC0yMjAzLDcgKzIzMTYsNyBAQCBfcmxfZ2V0X3N0cmluZ192 YXJpYWJsZV92YWx1ZSAobmFtZSkKKyAgICAgICBpZiAocmV0KQorIAl7CisgCSAgc3RybmNweSAo bnVtYnVmLCByZXQsIHNpemVvZiAobnVtYnVmKSAtIDEpOworLQkgIGZyZWUgKHJldCk7CisrCSAg eGZyZWUgKHJldCk7CisgCSAgbnVtYnVmW3NpemVvZihudW1idWYpIC0gMV0gPSAnXDAnOworIAl9 CisgICAgICAgZWxzZQorQEAgLTIyNjcsOCArMjM4MCw4IEBAIHJsX2R1bXBfdmFyaWFibGVzIChj b3VudCwga2V5KQorIC8qIFJldHVybiBub24temVybyBpZiBhbnkgbWVtYmVycyBvZiBBUlJBWSBh cmUgYSBzdWJzdHJpbmcgaW4gU1RSSU5HLiAqLworIHN0YXRpYyBpbnQKKyBzdWJzdHJpbmdfbWVt YmVyX29mX2FycmF5IChzdHJpbmcsIGFycmF5KQorLSAgICAgY2hhciAqc3RyaW5nOworLSAgICAg Y29uc3QgY2hhciAqKmFycmF5OworKyAgICAgY29uc3QgY2hhciAqc3RyaW5nOworKyAgICAgY29u c3QgY2hhciAqIGNvbnN0ICphcnJheTsKKyB7CisgICB3aGlsZSAoKmFycmF5KQorICAgICB7Cist LS0gYS9yZWFkbGluZS9jYWxsYmFjay5jCisrKysgYi9yZWFkbGluZS9jYWxsYmFjay5jCitAQCAt MSwyNCArMSwyNCBAQAorIC8qIGNhbGxiYWNrLmMgLS0gZnVuY3Rpb25zIHRvIHVzZSByZWFkbGlu ZSBhcyBhbiBYIGBjYWxsYmFjaycgbWVjaGFuaXNtLiAqLworIAorLS8qIENvcHlyaWdodCAoQykg MTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAo QykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgor LSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0 b3J5IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBM aWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRl eHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorIAorLSAgIFRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVy YWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRv IG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxp bmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKysK KyAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKKyAKKyAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdf SCkKK0BAIC04Nyw2ICs4Nyw3IEBAIF9ybF9jYWxsYmFja19uZXdsaW5lICgpCisgICAgIH0KKyAK KyAgIHJlYWRsaW5lX2ludGVybmFsX3NldHVwICgpOworKyAgUkxfQ0hFQ0tfU0lHTkFMUyAoKTsK KyB9CisgCisgLyogSW5zdGFsbCBhIHJlYWRsaW5lIGhhbmRsZXIsIHNldCB1cCB0aGUgdGVybWlu YWwsIGFuZCBpc3N1ZSB0aGUgcHJvbXB0LiAqLworQEAgLTExMSw4NyArMTEyLDEwMSBAQCBybF9j YWxsYmFja19yZWFkX2NoYXIgKCkKKyAKKyAgIGlmIChybF9saW5lZnVuYyA9PSBOVUxMKQorICAg ICB7CistICAgICAgZnByaW50ZiAoc3RkZXJyLCAicmVhZGxpbmU6IHJlYWRsaW5lX2NhbGxiYWNr X3JlYWRfY2hhcigpIGNhbGxlZCB3aXRoIG5vIGhhbmRsZXIhXHJcbiIpOworKyAgICAgIF9ybF9l cnJtc2cgKCJyZWFkbGluZV9jYWxsYmFja19yZWFkX2NoYXIoKSBjYWxsZWQgd2l0aCBubyBoYW5k bGVyISIpOworICAgICAgIGFib3J0ICgpOworICAgICB9CisgCistICBtZW1jcHkgKCh2b2lkICop b2xldmVsLCAodm9pZCAqKXJlYWRsaW5lX3RvcF9sZXZlbCwgc2l6ZW9mIChwcm9jZW52X3QpKTsK Ky0gIGpjb2RlID0gc2V0am1wIChyZWFkbGluZV90b3BfbGV2ZWwpOworKyAgbWVtY3B5ICgodm9p ZCAqKW9sZXZlbCwgKHZvaWQgKilfcmxfdG9wX2xldmVsLCBzaXplb2YgKHByb2NlbnZfdCkpOwor KyAgamNvZGUgPSBzZXRqbXAgKF9ybF90b3BfbGV2ZWwpOworICAgaWYgKGpjb2RlKQorICAgICB7 CisgICAgICAgKCpybF9yZWRpc3BsYXlfZnVuY3Rpb24pICgpOworICAgICAgIF9ybF93YW50X3Jl ZGlzcGxheSA9IDA7CistICAgICAgbWVtY3B5ICgodm9pZCAqKXJlYWRsaW5lX3RvcF9sZXZlbCwg KHZvaWQgKilvbGV2ZWwsIHNpemVvZiAocHJvY2Vudl90KSk7CisrICAgICAgbWVtY3B5ICgodm9p ZCAqKV9ybF90b3BfbGV2ZWwsICh2b2lkICopb2xldmVsLCBzaXplb2YgKHByb2NlbnZfdCkpOwor ICAgICAgIHJldHVybjsKKyAgICAgfQorIAorLSAgaWYgIChSTF9JU1NUQVRFIChSTF9TVEFURV9J U0VBUkNIKSkKKysgIGRvCisgICAgIHsKKy0gICAgICBlb2YgPSBfcmxfaXNlYXJjaF9jYWxsYmFj ayAoX3JsX2lzY3h0KTsKKy0gICAgICBpZiAoZW9mID09IDAgJiYgKFJMX0lTU1RBVEUgKFJMX1NU QVRFX0lTRUFSQ0gpID09IDApICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX0lOUFVUUEVORElORykp CistCXJsX2NhbGxiYWNrX3JlYWRfY2hhciAoKTsKKysgICAgICBSTF9DSEVDS19TSUdOQUxTICgp OworKyAgICAgIGlmICAoUkxfSVNTVEFURSAoUkxfU1RBVEVfSVNFQVJDSCkpCisrCXsKKysJICBl b2YgPSBfcmxfaXNlYXJjaF9jYWxsYmFjayAoX3JsX2lzY3h0KTsKKysJICBpZiAoZW9mID09IDAg JiYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0lTRUFSQ0gpID09IDApICYmIFJMX0lTU1RBVEUgKFJM X1NUQVRFX0lOUFVUUEVORElORykpCisrCSAgICBybF9jYWxsYmFja19yZWFkX2NoYXIgKCk7Cisg CistICAgICAgcmV0dXJuOworLSAgICB9CistICBlbHNlIGlmICAoUkxfSVNTVEFURSAoUkxfU1RB VEVfTlNFQVJDSCkpCistICAgIHsKKy0gICAgICBlb2YgPSBfcmxfbnNlYXJjaF9jYWxsYmFjayAo X3JsX25zY3h0KTsKKy0gICAgICByZXR1cm47CistICAgIH0KKy0gIGVsc2UgaWYgKFJMX0lTU1RB VEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpKQorLSAgICB7CistICAgICAgZW9mID0gX3JsX2FyZ19j YWxsYmFjayAoX3JsX2FyZ2N4dCk7CistICAgICAgaWYgKGVvZiA9PSAwICYmIChSTF9JU1NUQVRF IChSTF9TVEFURV9OVU1FUklDQVJHKSA9PSAwKSAmJiBSTF9JU1NUQVRFIChSTF9TVEFURV9JTlBV VFBFTkRJTkcpKQorLQlybF9jYWxsYmFja19yZWFkX2NoYXIgKCk7CistICAgICAgLyogWFhYIC0g dGhpcyBzaG91bGQgaGFuZGxlIF9ybF9sYXN0X2NvbW1hbmRfd2FzX2tpbGwgYmV0dGVyICovCist ICAgICAgZWxzZSBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSRykgPT0gMCkKKy0J X3JsX2ludGVybmFsX2NoYXJfY2xlYW51cCAoKTsKKysJICByZXR1cm47CisrCX0KKysgICAgICBl bHNlIGlmICAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTlNFQVJDSCkpCisrCXsKKysJICBlb2YgPSBf cmxfbnNlYXJjaF9jYWxsYmFjayAoX3JsX25zY3h0KTsKKysJICByZXR1cm47CisrCX0KKysjaWYg ZGVmaW5lZCAoVklfTU9ERSkKKysgICAgICBlbHNlIGlmIChSTF9JU1NUQVRFIChSTF9TVEFURV9W SU1PVElPTikpCisrCXsKKysJICBlb2YgPSBfcmxfdmlfZG9tb3ZlX2NhbGxiYWNrIChfcmxfdmlt dmN4dCk7CisrCSAgLyogU2hvdWxkIGhhbmRsZSBldmVyeXRoaW5nLCBpbmNsdWRpbmcgY2xlYW51 cCwgbnVtZXJpYyBhcmd1bWVudHMsCisrCSAgICAgYW5kIHR1cm5pbmcgb2ZmIFJMX1NUQVRFX1ZJ TU9USU9OICovCisrCSAgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpID09IDAp CisrCSAgICBfcmxfaW50ZXJuYWxfY2hhcl9jbGVhbnVwICgpOworIAorLSAgICAgIHJldHVybjsK Ky0gICAgfQorLSAgZWxzZSBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTVVMVElLRVkpKQorLSAg ICB7CistICAgICAgZW9mID0gX3JsX2Rpc3BhdGNoX2NhbGxiYWNrIChfcmxfa3NjeHQpOwkvKiBG b3Igbm93ICovCistICAgICAgd2hpbGUgKChlb2YgPT0gLTEgfHwgZW9mID09IC0yKSAmJiBSTF9J U1NUQVRFIChSTF9TVEFURV9NVUxUSUtFWSkgJiYgX3JsX2tzY3h0ICYmIChfcmxfa3NjeHQtPmZs YWdzICYgS1NFUV9ESVNQQVRDSEVEKSkKKy0JZW9mID0gX3JsX2Rpc3BhdGNoX2NhbGxiYWNrIChf cmxfa3NjeHQpOworLSAgICAgIGlmIChSTF9JU1NUQVRFIChSTF9TVEFURV9NVUxUSUtFWSkgPT0g MCkKKysJICByZXR1cm47CisrCX0KKysjZW5kaWYKKysgICAgICBlbHNlIGlmIChSTF9JU1NUQVRF IChSTF9TVEFURV9OVU1FUklDQVJHKSkKKyAJeworLQkgIF9ybF9pbnRlcm5hbF9jaGFyX2NsZWFu dXAgKCk7CistCSAgX3JsX3dhbnRfcmVkaXNwbGF5ID0gMTsKKysJICBlb2YgPSBfcmxfYXJnX2Nh bGxiYWNrIChfcmxfYXJnY3h0KTsKKysJICBpZiAoZW9mID09IDAgJiYgKFJMX0lTU1RBVEUgKFJM X1NUQVRFX05VTUVSSUNBUkcpID09IDApICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX0lOUFVUUEVO RElORykpCisrCSAgICBybF9jYWxsYmFja19yZWFkX2NoYXIgKCk7CisrCSAgLyogWFhYIC0gdGhp cyBzaG91bGQgaGFuZGxlIF9ybF9sYXN0X2NvbW1hbmRfd2FzX2tpbGwgYmV0dGVyICovCisrCSAg ZWxzZSBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSRykgPT0gMCkKKysJICAgIF9y bF9pbnRlcm5hbF9jaGFyX2NsZWFudXAgKCk7CisrCisrCSAgcmV0dXJuOworIAl9CistICAgIH0K Ky0gIGVsc2UgaWYgKF9ybF9jYWxsYmFja19mdW5jKQorLSAgICB7CistICAgICAgLyogVGhpcyBh bGxvd3MgZnVuY3Rpb25zIHRoYXQgc2ltcGx5IG5lZWQgdG8gcmVhZCBhbiBhZGRpdGlvbmFsIGNo YXJhY3RlcgorLQkgKGxpa2UgcXVvdGVkLWluc2VydCkgdG8gcmVnaXN0ZXIgYSBmdW5jdGlvbiB0 byBiZSBjYWxsZWQgd2hlbiBpbnB1dCBpcworLQkgYXZhaWxhYmxlLiAgX3JsX2NhbGxiYWNrX2Rh dGEgaXMgc2ltcGx5IGEgcG9pbnRlciB0byBhIHN0cnVjdCB0aGF0IGhhcworLQkgdGhlIGFyZ3Vt ZW50IGNvdW50IG9yaWdpbmFsbHkgcGFzc2VkIHRvIHRoZSByZWdpc3RlcmluZyBmdW5jdGlvbiBh bmQKKy0JIHNwYWNlIGZvciBhbnkgYWRkaXRpb25hbCBwYXJhbWV0ZXJzLiAgKi8KKy0gICAgICBl b2YgPSAoKl9ybF9jYWxsYmFja19mdW5jKSAoX3JsX2NhbGxiYWNrX2RhdGEpOworLSAgICAgIC8q IElmIHRoZSBmdW5jdGlvbiBgZGVyZWdpc3RlcnMnIGl0c2VsZiwgbWFrZSBzdXJlIHRoZSBkYXRh IGlzIGNsZWFuZWQKKy0JIHVwLiAqLworLSAgICAgIGlmIChfcmxfY2FsbGJhY2tfZnVuYyA9PSAw KQorKyAgICAgIGVsc2UgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX01VTFRJS0VZKSkKKyAJewor LQkgIGlmIChfcmxfY2FsbGJhY2tfZGF0YSkgCQorKwkgIGVvZiA9IF9ybF9kaXNwYXRjaF9jYWxs YmFjayAoX3JsX2tzY3h0KTsJLyogRm9yIG5vdyAqLworKwkgIHdoaWxlICgoZW9mID09IC0xIHx8 IGVvZiA9PSAtMikgJiYgUkxfSVNTVEFURSAoUkxfU1RBVEVfTVVMVElLRVkpICYmIF9ybF9rc2N4 dCAmJiAoX3JsX2tzY3h0LT5mbGFncyAmIEtTRVFfRElTUEFUQ0hFRCkpCisrCSAgICBlb2YgPSBf cmxfZGlzcGF0Y2hfY2FsbGJhY2sgKF9ybF9rc2N4dCk7CisrCSAgaWYgKFJMX0lTU1RBVEUgKFJM X1NUQVRFX01VTFRJS0VZKSA9PSAwKQorIAkgICAgeworLQkgICAgICBfcmxfY2FsbGJhY2tfZGF0 YV9kaXNwb3NlIChfcmxfY2FsbGJhY2tfZGF0YSk7CistCSAgICAgIF9ybF9jYWxsYmFja19kYXRh ID0gMDsKKysJICAgICAgX3JsX2ludGVybmFsX2NoYXJfY2xlYW51cCAoKTsKKysJICAgICAgX3Js X3dhbnRfcmVkaXNwbGF5ID0gMTsKKyAJICAgIH0KKy0JICBfcmxfaW50ZXJuYWxfY2hhcl9jbGVh bnVwICgpOworIAl9CistICAgIH0KKy0gIGVsc2UKKy0gICAgZW9mID0gcmVhZGxpbmVfaW50ZXJu YWxfY2hhciAoKTsKKysgICAgICBlbHNlIGlmIChfcmxfY2FsbGJhY2tfZnVuYykKKysJeworKwkg IC8qIFRoaXMgYWxsb3dzIGZ1bmN0aW9ucyB0aGF0IHNpbXBseSBuZWVkIHRvIHJlYWQgYW4gYWRk aXRpb25hbAorKwkgICAgIGNoYXJhY3RlciAobGlrZSBxdW90ZWQtaW5zZXJ0KSB0byByZWdpc3Rl ciBhIGZ1bmN0aW9uIHRvIGJlCisrCSAgICAgY2FsbGVkIHdoZW4gaW5wdXQgaXMgYXZhaWxhYmxl LiAgX3JsX2NhbGxiYWNrX2RhdGEgaXMgc2ltcGx5IGEKKysJICAgICBwb2ludGVyIHRvIGEgc3Ry dWN0IHRoYXQgaGFzIHRoZSBhcmd1bWVudCBjb3VudCBvcmlnaW5hbGx5CisrCSAgICAgcGFzc2Vk IHRvIHRoZSByZWdpc3RlcmluZyBmdW5jdGlvbiBhbmQgc3BhY2UgZm9yIGFueSBhZGRpdGlvbmFs CisrCSAgICAgcGFyYW1ldGVycy4gICovCisrCSAgZW9mID0gKCpfcmxfY2FsbGJhY2tfZnVuYykg KF9ybF9jYWxsYmFja19kYXRhKTsKKysJICAvKiBJZiB0aGUgZnVuY3Rpb24gYGRlcmVnaXN0ZXJz JyBpdHNlbGYsIG1ha2Ugc3VyZSB0aGUgZGF0YSBpcworKwkgICAgIGNsZWFuZWQgdXAuICovCisr CSAgaWYgKF9ybF9jYWxsYmFja19mdW5jID09IDApCisrCSAgICB7CisrCSAgICAgIGlmIChfcmxf Y2FsbGJhY2tfZGF0YSkgCQorKwkJeworKwkJICBfcmxfY2FsbGJhY2tfZGF0YV9kaXNwb3NlIChf cmxfY2FsbGJhY2tfZGF0YSk7CisrCQkgIF9ybF9jYWxsYmFja19kYXRhID0gMDsKKysJCX0KKysJ ICAgICAgX3JsX2ludGVybmFsX2NoYXJfY2xlYW51cCAoKTsKKysJICAgIH0KKysJfQorKyAgICAg IGVsc2UKKysJZW9mID0gcmVhZGxpbmVfaW50ZXJuYWxfY2hhciAoKTsKKyAKKy0gIGlmIChybF9k b25lID09IDAgJiYgX3JsX3dhbnRfcmVkaXNwbGF5KQorLSAgICB7CistICAgICAgKCpybF9yZWRp c3BsYXlfZnVuY3Rpb24pICgpOworLSAgICAgIF9ybF93YW50X3JlZGlzcGxheSA9IDA7CistICAg IH0KKysgICAgICBSTF9DSEVDS19TSUdOQUxTICgpOworKyAgICAgIGlmIChybF9kb25lID09IDAg JiYgX3JsX3dhbnRfcmVkaXNwbGF5KQorKwl7CisrCSAgKCpybF9yZWRpc3BsYXlfZnVuY3Rpb24p ICgpOworKwkgIF9ybF93YW50X3JlZGlzcGxheSA9IDA7CisrCX0KKyAKKy0gIC8qIFdlIGxvb3Ag aW4gY2FzZSBzb21lIGZ1bmN0aW9uIGhhcyBwdXNoZWQgaW5wdXQgYmFjayB3aXRoIHJsX2V4ZWN1 dGVfbmV4dC4gKi8KKy0gIGZvciAoOzspCistICAgIHsKKyAgICAgICBpZiAocmxfZG9uZSkKKyAJ eworIAkgIGxpbmUgPSByZWFkbGluZV9pbnRlcm5hbF90ZWFyZG93biAoZW9mKTsKK0BAIC0yMTMs MTEgKzIyOCw4IEBAIHJsX2NhbGxiYWNrX3JlYWRfY2hhciAoKQorIAkgIGlmIChpbl9oYW5kbGVy ID09IDAgJiYgcmxfbGluZWZ1bmMpCisgCSAgICBfcmxfY2FsbGJhY2tfbmV3bGluZSAoKTsKKyAJ fQorLSAgICAgIGlmIChybF9wZW5kaW5nX2lucHV0IHx8IF9ybF9wdXNoZWRfaW5wdXRfYXZhaWxh YmxlICgpIHx8IFJMX0lTU1RBVEUgKFJMX1NUQVRFX01BQ1JPSU5QVVQpKQorLQllb2YgPSByZWFk bGluZV9pbnRlcm5hbF9jaGFyICgpOworLSAgICAgIGVsc2UKKy0JYnJlYWs7CisgICAgIH0KKysg IHdoaWxlIChybF9wZW5kaW5nX2lucHV0IHx8IF9ybF9wdXNoZWRfaW5wdXRfYXZhaWxhYmxlICgp IHx8IFJMX0lTU1RBVEUgKFJMX1NUQVRFX01BQ1JPSU5QVVQpKTsKKyB9CisgCisgLyogUmVtb3Zl IHRoZSBoYW5kbGVyLCBhbmQgbWFrZSBzdXJlIHRoZSB0ZXJtaW5hbCBpcyBpbiBpdHMgbm9ybWFs IHN0YXRlLiAqLworQEAgLTIyNiw2ICsyMzgsNyBAQCBybF9jYWxsYmFja19oYW5kbGVyX3JlbW92 ZSAoKQorIHsKKyAgIHJsX2xpbmVmdW5jID0gTlVMTDsKKyAgIFJMX1VOU0VUU1RBVEUgKFJMX1NU QVRFX0NBTExCQUNLKTsKKysgIFJMX0NIRUNLX1NJR05BTFMgKCk7CisgICBpZiAoaW5faGFuZGxl cikKKyAgICAgeworICAgICAgIGluX2hhbmRsZXIgPSAwOworQEAgLTI1NCw4ICsyNjcsNyBAQCBf cmxfY2FsbGJhY2tfZGF0YV9hbGxvYyAoY291bnQpCisgdm9pZCBfcmxfY2FsbGJhY2tfZGF0YV9k aXNwb3NlIChhcmcpCisgICAgICBfcmxfY2FsbGJhY2tfZ2VuZXJpY19hcmcgKmFyZzsKKyB7Cist ICBpZiAoYXJnKQorLSAgICBmcmVlIChhcmcpOworKyAgeGZyZWUgKGFyZyk7CisgfQorIAorICNl bmRpZgorLS0tIGEvcmVhZGxpbmUvY2hhcmRlZnMuaAorKysrIGIvcmVhZGxpbmUvY2hhcmRlZnMu aAorQEAgLTEsMjQgKzEsMjMgQEAKKyAvKiBjaGFyZGVmcy5oIC0tIENoYXJhY3RlciBkZWZpbml0 aW9ucyBmb3IgcmVhZGxpbmUuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTk0IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk5NC0yMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGluZXMg b2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisrICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSks IGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2 ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9v ciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBU aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBw ZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmls ZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBj b3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4g Ki8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWZuZGVmIF9DSEFSREVG U19IXworICNkZWZpbmUgX0NIQVJERUZTX0hfCistLS0gYS9yZWFkbGluZS9jb21wYXQuYworKysr IGIvcmVhZGxpbmUvY29tcGF0LmMKK0BAIC0xLDI0ICsxLDI0IEBACisgLyogY29tcGF0LmMgLS0g YmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zLiAqLworIAorLS8qIENvcHlyaWdodCAo QykgMjAwMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQgKEMp IDIwMDAtMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKKy0g ICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9y eSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0 IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKyAKKy0gICBUaGUg R05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr ICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFs bHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBu b3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5l LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisrCisg I2RlZmluZSBSRUFETElORV9MSUJSQVJZCisgCisgI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gp CistLS0gYS9yZWFkbGluZS9jb21wbGV0ZS5jCisrKysgYi9yZWFkbGluZS9jb21wbGV0ZS5jCitA QCAtMSwyNCArMSwyNCBAQAorIC8qIGNvbXBsZXRlLmMgLS0gZmlsZW5hbWUgY29tcGxldGlvbiBm b3IgcmVhZGxpbmUuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMTEgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCistICAgcmVhZGluZyBsaW5lcyBv ZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKysgICBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwg YSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZl IGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0CistICAgYW5kL29y IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJlYWRsaW5lIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBl ZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxl IGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNv cHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s CistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAq LworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworKworICNkZWZpbmUgUkVBRExJTkVf TElCUkFSWQorIAorICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19IKQorQEAgLTExMCw4ICsxMTAs OCBAQCBzdGF0aWMgaW50IGdldF95X29yX24gUEFSQU1TKChpbnQpKTsKKyBzdGF0aWMgaW50IF9y bF9pbnRlcm5hbF9wYWdlciBQQVJBTVMoKGludCkpOworIHN0YXRpYyBjaGFyICpwcmludGFibGVf cGFydCBQQVJBTVMoKGNoYXIgKikpOworIHN0YXRpYyBpbnQgZm53aWR0aCBQQVJBTVMoKGNvbnN0 IGNoYXIgKikpOworLXN0YXRpYyBpbnQgZm5wcmludCBQQVJBTVMoKGNvbnN0IGNoYXIgKikpOwor LXN0YXRpYyBpbnQgcHJpbnRfZmlsZW5hbWUgUEFSQU1TKChjaGFyICosIGNoYXIgKikpOworK3N0 YXRpYyBpbnQgZm5wcmludCBQQVJBTVMoKGNvbnN0IGNoYXIgKiwgaW50KSk7Cisrc3RhdGljIGlu dCBwcmludF9maWxlbmFtZSBQQVJBTVMoKGNoYXIgKiwgY2hhciAqLCBpbnQpKTsKKyAKKyBzdGF0 aWMgY2hhciAqKmdlbl9jb21wbGV0aW9uX21hdGNoZXMgUEFSQU1TKChjaGFyICosIGludCwgaW50 LCBybF9jb21wZW50cnlfZnVuY190ICosIGludCwgaW50KSk7CisgCitAQCAtMTE5LDkgKzExOSwx MSBAQCBzdGF0aWMgY2hhciAqKnJlbW92ZV9kdXBsaWNhdGVfbWF0Y2hlcyBQQVJBTVMoKGNoYXIg KiopKTsKKyBzdGF0aWMgdm9pZCBpbnNlcnRfbWF0Y2ggUEFSQU1TKChjaGFyICosIGludCwgaW50 LCBjaGFyICopKTsKKyBzdGF0aWMgaW50IGFwcGVuZF90b19tYXRjaCBQQVJBTVMoKGNoYXIgKiwg aW50LCBpbnQsIGludCkpOworIHN0YXRpYyB2b2lkIGluc2VydF9hbGxfbWF0Y2hlcyBQQVJBTVMo KGNoYXIgKiosIGludCwgY2hhciAqKSk7Cisrc3RhdGljIGludCBjb21wbGV0ZV9mbmNtcCBQQVJB TVMoKGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICosIGludCkpOworIHN0YXRpYyB2b2lk IGRpc3BsYXlfbWF0Y2hlcyBQQVJBTVMoKGNoYXIgKiopKTsKKyBzdGF0aWMgaW50IGNvbXB1dGVf bGNkX29mX21hdGNoZXMgUEFSQU1TKChjaGFyICoqLCBpbnQsIGNvbnN0IGNoYXIgKikpOworIHN0 YXRpYyBpbnQgcG9zdHByb2Nlc3NfbWF0Y2hlcyBQQVJBTVMoKGNoYXIgKioqLCBpbnQpKTsKKytz dGF0aWMgaW50IGNvbXBsZXRlX2dldF9zY3JlZW53aWR0aCBQQVJBTVMoKHZvaWQpKTsKKyAKKyBz dGF0aWMgY2hhciAqbWFrZV9xdW90ZWRfcmVwbGFjZW1lbnQgUEFSQU1TKChjaGFyICosIGludCwg Y2hhciAqKSk7CisgCitAQCAtMTU3LDEzICsxNTksMjcgQEAgaW50IF9ybF9wcmludF9jb21wbGV0 aW9uc19ob3Jpem9udGFsbHk7CisgI2lmIGRlZmluZWQgKF9fTVNET1NfXykgJiYgIWRlZmluZWQg KF9fREpHUFBfXykKKyBpbnQgX3JsX2NvbXBsZXRpb25fY2FzZV9mb2xkID0gMTsKKyAjZWxzZQor LWludCBfcmxfY29tcGxldGlvbl9jYXNlX2ZvbGQ7CisraW50IF9ybF9jb21wbGV0aW9uX2Nhc2Vf Zm9sZCA9IDA7CisgI2VuZGlmCisgCistLyogSWYgbm9uLXplcm8sIGRvbid0IG1hdGNoIGhpZGRl biBmaWxlcyAoZmlsZW5hbWVzIGJlZ2lubmluZyB3aXRoIGEgYC4nIG9uCisrLyogTm9uLXplcm8g bWVhbnMgdGhhdCBgLScgYW5kIGBfJyBhcmUgZXF1aXZhbGVudCB3aGVuIGNvbXBhcmluZyBmaWxl bmFtZXMKKysgIGZvciBjb21wbGV0aW9uLiAqLworK2ludCBfcmxfY29tcGxldGlvbl9jYXNlX21h cCA9IDA7CisrCisrLyogSWYgemVybywgZG9uJ3QgbWF0Y2ggaGlkZGVuIGZpbGVzIChmaWxlbmFt ZXMgYmVnaW5uaW5nIHdpdGggYSBgLicgb24KKyAgICBVbml4KSB3aGVuIGRvaW5nIGZpbGVuYW1l IGNvbXBsZXRpb24uICovCisgaW50IF9ybF9tYXRjaF9oaWRkZW5fZmlsZXMgPSAxOworIAorKy8q IExlbmd0aCBpbiBjaGFyYWN0ZXJzIG9mIGEgY29tbW9uIHByZWZpeCByZXBsYWNlZCB3aXRoIGFu IGVsbGlwc2lzIChgLi4uJykKKysgICB3aGVuIGRpc3BsYXlpbmcgY29tcGxldGlvbiBtYXRjaGVz LiAgTWF0Y2hlcyB3aG9zZSBwcmludGFibGUgcG9ydGlvbiBoYXMKKysgICBtb3JlIHRoYW4gdGhp cyBudW1iZXIgb2YgZGlzcGxheWluZyBjaGFyYWN0ZXJzIGluIGNvbW1vbiB3aWxsIGhhdmUgdGhl IGNvbW1vbgorKyAgIGRpc3BsYXkgcHJlZml4IHJlcGxhY2VkIHdpdGggYW4gZWxsaXBzaXMuICov CisraW50IF9ybF9jb21wbGV0aW9uX3ByZWZpeF9kaXNwbGF5X2xlbmd0aCA9IDA7CisrCisrLyog VGhlIHJlYWRsaW5lLXByaXZhdGUgbnVtYmVyIG9mIHNjcmVlbiBjb2x1bW5zIHRvIHVzZSB3aGVu IGRpc3BsYXlpbmcKKysgICBtYXRjaGVzLiAgSWYgPCAwIG9yID4gX3JsX3NjcmVlbndpZHRoLCBp dCBpcyBpZ25vcmVkLiAqLworK2ludCBfcmxfY29tcGxldGlvbl9jb2x1bW5zID0gLTE7CisrCisg LyogR2xvYmFsIHZhcmlhYmxlcyBhdmFpbGFibGUgdG8gYXBwbGljYXRpb25zIHVzaW5nIHJlYWRs aW5lLiAqLworIAorICNpZiBkZWZpbmVkIChWSVNJQkxFX1NUQVRTKQorQEAgLTE3Myw2ICsxODks MTYgQEAgaW50IF9ybF9tYXRjaF9oaWRkZW5fZmlsZXMgPSAxOworIGludCBybF92aXNpYmxlX3N0 YXRzID0gMDsKKyAjZW5kaWYgLyogVklTSUJMRV9TVEFUUyAqLworIAorKy8qIElmIG5vbi16ZXJv LCB3aGVuIGNvbXBsZXRpbmcgaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQsIGRvbid0IGluc2VydAor KyAgIGNoYXJhY3RlcnMgZnJvbSB0aGUgbWF0Y2ggdGhhdCBtYXRjaCBjaGFyYWN0ZXJzIGZvbGxv d2luZyBwb2ludCBpbgorKyAgIHRoZSB3b3JkLiAgVGhpcyBtZWFucywgZm9yIGluc3RhbmNlLCBj b21wbGV0aW5nIHdoZW4gdGhlIGN1cnNvciBpcworKyAgIGFmdGVyIHRoZSBgZScgaW4gYE1ha2Vm aWxlJyB3b24ndCByZXN1bHQgaW4gYE1ha2VmaWxlZmlsZScuICovCisraW50IF9ybF9za2lwX2Nv bXBsZXRlZF90ZXh0ID0gMDsKKysKKysvKiBJZiBub24temVybywgbWVudSBjb21wbGV0aW9uIGRp c3BsYXlzIHRoZSBjb21tb24gcHJlZml4IGZpcnN0IGluIHRoZQorKyAgIGN5Y2xlIG9mIHBvc3Np YmxlIGNvbXBsZXRpb25zIGluc3RlYWQgb2YgdGhlIGxhc3QuICovCisraW50IF9ybF9tZW51X2Nv bXBsZXRlX3ByZWZpeF9maXJzdCA9IDA7CisrCisgLyogSWYgbm9uLXplcm8sIHRoZW4gdGhpcyBp cyB0aGUgYWRkcmVzcyBvZiBhIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbgorICAgIGNvbXBsZXRpbmcg b24gYSBkaXJlY3RvcnkgbmFtZS4gIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aAorICAgIHRo ZSBhZGRyZXNzIG9mIGEgc3RyaW5nICh0aGUgY3VycmVudCBkaXJlY3RvcnkgbmFtZSkgYXMgYW4g YXJnLiAqLworQEAgLTE4MCw2ICsyMDYsMTcgQEAgcmxfaWNwcGZ1bmNfdCAqcmxfZGlyZWN0b3J5 X2NvbXBsZXRpb25faG9vayA9IChybF9pY3BwZnVuY190ICopTlVMTDsKKyAKKyBybF9pY3BwZnVu Y190ICpybF9kaXJlY3RvcnlfcmV3cml0ZV9ob29rID0gKHJsX2ljcHBmdW5jX3QgKilOVUxMOwor IAorKy8qIElmIG5vbi16ZXJvLCB0aGlzIGlzIHRoZSBhZGRyZXNzIG9mIGEgZnVuY3Rpb24gdG8g Y2FsbCB3aGVuIHJlYWRpbmcKKysgICBkaXJlY3RvcnkgZW50cmllcyBmcm9tIHRoZSBmaWxlc3lz dGVtIGZvciBjb21wbGV0aW9uIGFuZCBjb21wYXJpbmcKKysgICB0aGVtIHRvIHRoZSBwYXJ0aWFs IHdvcmQgdG8gYmUgY29tcGxldGVkLiAgVGhlIGZ1bmN0aW9uIHNob3VsZAorKyAgIGVpdGhlciBy ZXR1cm4gaXRzIGZpcnN0IGFyZ3VtZW50IChpZiBubyBjb252ZXJzaW9uIHRha2VzIHBsYWNlKSBv cgorKyAgIG5ld2x5LWFsbG9jYXRlZCBtZW1vcnkuICBUaGlzIGNhbiwgZm9yIGluc3RhbmNlLCBj b252ZXJ0IGZpbGVuYW1lcworKyAgIGJldHdlZW4gY2hhcmFjdGVyIHNldHMgZm9yIGNvbXBhcmlz b24gYWdhaW5zdCB3aGF0J3MgdHlwZWQgYXQgdGhlCisrICAga2V5Ym9hcmQuICBUaGUgcmV0dXJu ZWQgdmFsdWUgaXMgd2hhdCBpcyBhZGRlZCB0byB0aGUgbGlzdCBvZgorKyAgIG1hdGNoZXMuICBU aGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBsZW5ndGggb2YgdGhlIGZpbGVuYW1lIHRvIGJlCisr ICAgY29udmVydGVkLiAqLworK3JsX2RlcXVvdGVfZnVuY190ICpybF9maWxlbmFtZV9yZXdyaXRl X2hvb2sgPSAocmxfZGVxdW90ZV9mdW5jX3QgKilOVUxMOworKworIC8qIE5vbi16ZXJvIG1lYW5z IHJlYWRsaW5lIGNvbXBsZXRpb24gZnVuY3Rpb25zIHBlcmZvcm0gdGlsZGUgZXhwYW5zaW9uLiAq LworIGludCBybF9jb21wbGV0ZV93aXRoX3RpbGRlX2V4cGFuc2lvbiA9IDA7CisgCitAQCAtMTg4 LDYgKzIyNSwxMCBAQCBpbnQgcmxfY29tcGxldGVfd2l0aF90aWxkZV9leHBhbnNpb24gPSAwOwor ICAgIGNvbXBsZXRlci4gKi8KKyBybF9jb21wZW50cnlfZnVuY190ICpybF9jb21wbGV0aW9uX2Vu dHJ5X2Z1bmN0aW9uID0gKHJsX2NvbXBlbnRyeV9mdW5jX3QgKilOVUxMOworIAorKy8qIFBvaW50 ZXIgdG8gZ2VuZXJhdG9yIGZ1bmN0aW9uIGZvciBybF9tZW51X2NvbXBsZXRlICgpLiAgTlVMTCBt ZWFucyB0byB1c2UKKysgICAqcmxfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlvbiAoc2VlIGFib3Zl KS4gKi8KKytybF9jb21wZW50cnlfZnVuY190ICpybF9tZW51X2NvbXBsZXRpb25fZW50cnlfZnVu Y3Rpb24gPSAocmxfY29tcGVudHJ5X2Z1bmNfdCAqKU5VTEw7CisrCisgLyogUG9pbnRlciB0byBh bHRlcm5hdGl2ZSBmdW5jdGlvbiB0byBjcmVhdGUgbWF0Y2hlcy4KKyAgICBGdW5jdGlvbiBpcyBj YWxsZWQgd2l0aCBURVhULCBTVEFSVCwgYW5kIEVORC4KKyAgICBTVEFSVCBhbmQgRU5EIGFyZSBp bmRpY2VzIGluIFJMX0xJTkVfQlVGRkVSIHNheWluZyB3aGF0IHRoZSBib3VuZGFyaWVzCitAQCAt MzI1LDExICszNjYsMjAgQEAgaW50IHJsX2NvbXBsZXRpb25fbWFya19zeW1saW5rX2RpcnM7Cisg LyogSWYgbm9uLXplcm8sIGluaGliaXQgY29tcGxldGlvbiAodGVtcG9yYXJpbHkpLiAqLworIGlu dCBybF9pbmhpYml0X2NvbXBsZXRpb247CisgCisrLyogU2V0IHRvIHRoZSBsYXN0IGtleSB1c2Vk IHRvIGludm9rZSBvbmUgb2YgdGhlIGNvbXBsZXRpb24gZnVuY3Rpb25zICovCisraW50IHJsX2Nv bXBsZXRpb25faW52b2tpbmdfa2V5OworKworKy8qIElmIG5vbi16ZXJvLCBzb3J0IHRoZSBjb21w bGV0aW9uIG1hdGNoZXMuICBPbiBieSBkZWZhdWx0LiAqLworK2ludCBybF9zb3J0X2NvbXBsZXRp b25fbWF0Y2hlcyA9IDE7CisrCisgLyogVmFyaWFibGVzIGxvY2FsIHRvIHRoaXMgZmlsZS4gKi8K KyAKKyAvKiBMb2NhbCB2YXJpYWJsZSBzdGF0ZXMgd2hhdCBoYXBwZW5lZCBkdXJpbmcgdGhlIGxh c3QgY29tcGxldGlvbiBhdHRlbXB0LiAqLworIHN0YXRpYyBpbnQgY29tcGxldGlvbl9jaGFuZ2Vk X2J1ZmZlcjsKKyAKKysvKiBUaGUgcmVzdWx0IG9mIHRoZSBxdWVyeSB0byB0aGUgdXNlciBhYm91 dCBkaXNwbGF5aW5nIGNvbXBsZXRpb24gbWF0Y2hlcyAqLworK3N0YXRpYyBpbnQgY29tcGxldGlv bl95X29yX247CisrCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisg LyoJCQkJICAgICAqLworIC8qICAgIEJpbmRhYmxlIGNvbXBsZXRpb24gZnVuY3Rpb25zICAqLwor QEAgLTM0Myw2ICszOTMsOCBAQCBpbnQKKyBybF9jb21wbGV0ZSAoaWdub3JlLCBpbnZva2luZ19r ZXkpCisgICAgICBpbnQgaWdub3JlLCBpbnZva2luZ19rZXk7CisgeworKyAgcmxfY29tcGxldGlv bl9pbnZva2luZ19rZXkgPSBpbnZva2luZ19rZXk7CisrCisgICBpZiAocmxfaW5oaWJpdF9jb21w bGV0aW9uKQorICAgICByZXR1cm4gKF9ybF9pbnNlcnRfY2hhciAoaWdub3JlLCBpbnZva2luZ19r ZXkpKTsKKyAgIGVsc2UgaWYgKHJsX2xhc3RfZnVuYyA9PSBybF9jb21wbGV0ZSAmJiAhY29tcGxl dGlvbl9jaGFuZ2VkX2J1ZmZlcikKK0BAIC0zNjAsNiArNDEyLDcgQEAgaW50CisgcmxfcG9zc2li bGVfY29tcGxldGlvbnMgKGlnbm9yZSwgaW52b2tpbmdfa2V5KQorICAgICAgaW50IGlnbm9yZSwg aW52b2tpbmdfa2V5OworIHsKKysgIHJsX2NvbXBsZXRpb25faW52b2tpbmdfa2V5ID0gaW52b2tp bmdfa2V5OworICAgcmV0dXJuIChybF9jb21wbGV0ZV9pbnRlcm5hbCAoJz8nKSk7CisgfQorIAor QEAgLTM2Nyw2ICs0MjAsNyBAQCBpbnQKKyBybF9pbnNlcnRfY29tcGxldGlvbnMgKGlnbm9yZSwg aW52b2tpbmdfa2V5KQorICAgICAgaW50IGlnbm9yZSwgaW52b2tpbmdfa2V5OworIHsKKysgIHJs X2NvbXBsZXRpb25faW52b2tpbmdfa2V5ID0gaW52b2tpbmdfa2V5OworICAgcmV0dXJuIChybF9j b21wbGV0ZV9pbnRlcm5hbCAoJyonKSk7CisgfQorIAorQEAgLTM5NSw2ICs0NDksMTQgQEAgcmxf Y29tcGxldGlvbl9tb2RlIChjZnVuYykKKyAvKgkJCQkgICAgKi8KKyAvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworIAorKy8qIFJlc2V0IHJlYWRsaW5lIHN0YXRlIG9uIGEg c2lnbmFsIG9yIG90aGVyIGV2ZW50LiAqLworK3ZvaWQKKytfcmxfcmVzZXRfY29tcGxldGlvbl9z dGF0ZSAoKQorK3sKKysgIHJsX2NvbXBsZXRpb25fZm91bmRfcXVvdGUgPSAwOworKyAgcmxfY29t cGxldGlvbl9xdW90ZV9jaGFyYWN0ZXIgPSAwOworK30KKysKKyAvKiBTZXQgZGVmYXVsdCB2YWx1 ZXMgZm9yIHJlYWRsaW5lIHdvcmQgY29tcGxldGlvbi4gIFRoZXNlIGFyZSB0aGUgdmFyaWFibGVz CisgICAgdGhhdCBhcHBsaWNhdGlvbiBjb21wbGV0aW9uIGZ1bmN0aW9ucyBjYW4gY2hhbmdlIG9y IGluc3BlY3QuICovCisgc3RhdGljIHZvaWQKK0BAIC00MDYsNiArNDY4LDcgQEAgc2V0X2NvbXBs ZXRpb25fZGVmYXVsdHMgKHdoYXRfdG9fZG8pCisgICBybF9maWxlbmFtZV9xdW90aW5nX2Rlc2ly ZWQgPSAxOworICAgcmxfY29tcGxldGlvbl90eXBlID0gd2hhdF90b19kbzsKKyAgIHJsX2NvbXBs ZXRpb25fc3VwcHJlc3NfYXBwZW5kID0gcmxfY29tcGxldGlvbl9zdXBwcmVzc19xdW90ZSA9IDA7 CisrICBybF9jb21wbGV0aW9uX2FwcGVuZF9jaGFyYWN0ZXIgPSAnICc7CisgCisgICAvKiBUaGUg Y29tcGxldGlvbiBlbnRyeSBmdW5jdGlvbiBtYXkgb3B0aW9uYWxseSBjaGFuZ2UgdGhpcy4gKi8K KyAgIHJsX2NvbXBsZXRpb25fbWFya19zeW1saW5rX2RpcnMgPSBfcmxfY29tcGxldGVfbWFya19z eW1saW5rX2RpcnM7CitAQCAtNDE4LDYgKzQ4MSwxOSBAQCBnZXRfeV9vcl9uIChmb3JfcGFnZXIp CisgeworICAgaW50IGM7CisgCisrLyogRGlzYWJsZWQgZm9yIEdEQiBkdWUgdG8gdGhlIGdkYi5i YXNlL3JlYWRsaW5lLWFzay5leHAgcmVncmVzc2lvbi4KKysgICBbcGF0Y2hdIHRlc3RzdWl0ZTog VGVzdCByZWFkbGluZS02LjIgImFzayIgcmVncmVzc2lvbgorKyAgIGh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTA1L21zZzAwMDAyLmh0bWwgICovCisrI2lmIDAKKysg IC8qIEZvciBub3csIGRpc2FibGUgcGFnZXIgaW4gY2FsbGJhY2sgbW9kZSwgdW50aWwgd2UgbGF0 ZXIgY29udmVydCB0byBzdGF0ZQorKyAgICAgZHJpdmVuIGZ1bmN0aW9ucy4gIEhhdmUgdG8gd2Fp dCB1bnRpbCBuZXh0IG1ham9yIHZlcnNpb24gdG8gYWRkIG5ldworKyAgICAgc3RhdGUgZGVmaW5p dGlvbiwgc2luY2UgaXQgd2lsbCBjaGFuZ2UgdmFsdWUgb2YgUkxfU1RBVEVfRE9ORS4gKi8KKysj aWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tTKQorKyAgaWYgKFJMX0lTU1RBVEUgKFJMX1NU QVRFX0NBTExCQUNLKSkKKysgICAgcmV0dXJuIDE7CisrI2VuZGlmCisrI2VuZGlmCisrCisgICBm b3IgKDs7KQorICAgICB7CisgICAgICAgUkxfU0VUU1RBVEUoUkxfU1RBVEVfTU9SRUlOUFVUKTsK K0BAIC00MjgsNyArNTA0LDcgQEAgZ2V0X3lfb3JfbiAoZm9yX3BhZ2VyKQorIAlyZXR1cm4gKDEp OworICAgICAgIGlmIChjID09ICduJyB8fCBjID09ICdOJyB8fCBjID09IFJVQk9VVCkKKyAJcmV0 dXJuICgwKTsKKy0gICAgICBpZiAoYyA9PSBBQk9SVF9DSEFSKQorKyAgICAgIGlmIChjID09IEFC T1JUX0NIQVIgfHwgYyA8IDApCisgCV9ybF9hYm9ydF9pbnRlcm5hbCAoKTsKKyAgICAgICBpZiAo Zm9yX3BhZ2VyICYmIChjID09IE5FV0xJTkUgfHwgYyA9PSBSRVRVUk4pKQorIAlyZXR1cm4gKDIp OworQEAgLTQ4MSw2ICs1NTcsMTMgQEAgc3RhdF9jaGFyIChmaWxlbmFtZSkKKyAgIHN0cnVjdCBz dGF0IGZpbmZvOworICAgaW50IGNoYXJhY3RlciwgcjsKKyAKKysgIC8qIFNob3J0LWNpcmN1aXQg YSAvL3NlcnZlciBvbiBjeWd3aW4sIHNpbmNlIHRoYXQgd2lsbCBhbHdheXMgYmVoYXZlIGFzCisr ICAgICBhIGRpcmVjdG9yeS4gKi8KKysjaWYgX19DWUdXSU5fXworKyAgaWYgKGZpbGVuYW1lWzBd ID09ICcvJyAmJiBmaWxlbmFtZVsxXSA9PSAnLycgJiYgc3RyY2hyIChmaWxlbmFtZSsyLCAnLycp ID09IDApCisrICAgIHJldHVybiAnLyc7CisrI2VuZGlmCisrCisgI2lmIGRlZmluZWQgKEhBVkVf TFNUQVQpICYmIGRlZmluZWQgKFNfSVNMTkspCisgICByID0gbHN0YXQgKGZpbGVuYW1lLCAmZmlu Zm8pOworICNlbHNlCitAQCAtNTgxLDcgKzY2NCw3IEBAIGZud2lkdGggKHN0cmluZykKKyAgIHdp ZHRoID0gcG9zID0gMDsKKyAgIHdoaWxlIChzdHJpbmdbcG9zXSkKKyAgICAgeworLSAgICAgIGlm IChDVFJMX0NIQVIgKCpzdHJpbmcpIHx8ICpzdHJpbmcgPT0gUlVCT1VUKQorKyAgICAgIGlmIChD VFJMX0NIQVIgKHN0cmluZ1twb3NdKSB8fCBzdHJpbmdbcG9zXSA9PSBSVUJPVVQpCisgCXsKKyAJ ICB3aWR0aCArPSAyOworIAkgIHBvcysrOworQEAgLTYxNCwxNyArNjk3LDIwIEBAIGZud2lkdGgg KHN0cmluZykKKyAgIHJldHVybiB3aWR0aDsKKyB9CisgCisrI2RlZmluZSBFTExJUFNJU19MRU4J MworKworIHN0YXRpYyBpbnQKKy1mbnByaW50ICh0b19wcmludCkKKytmbnByaW50ICh0b19wcmlu dCwgcHJlZml4X2J5dGVzKQorICAgICAgY29uc3QgY2hhciAqdG9fcHJpbnQ7CisrICAgICBpbnQg cHJlZml4X2J5dGVzOworIHsKKy0gIGludCBwcmludGVkX2xlbjsKKysgIGludCBwcmludGVkX2xl biwgdzsKKyAgIGNvbnN0IGNoYXIgKnM7CisgI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUp CisgICBtYnN0YXRlX3QgcHM7CisgICBjb25zdCBjaGFyICplbmQ7CisgICBzaXplX3QgdGxlbjsK Ky0gIGludCB3aWR0aCwgdzsKKysgIGludCB3aWR0aDsKKyAgIHdjaGFyX3Qgd2M7CisgCisgICBl bmQgPSB0b19wcmludCArIHN0cmxlbiAodG9fcHJpbnQpICsgMTsKK0BAIC02MzIsNyArNzE4LDIz IEBAIGZucHJpbnQgKHRvX3ByaW50KQorICNlbmRpZgorIAorICAgcHJpbnRlZF9sZW4gPSAwOwor LSAgcyA9IHRvX3ByaW50OworKworKyAgLyogRG9uJ3QgcHJpbnQgb25seSB0aGUgZWxsaXBzaXMg aWYgdGhlIGNvbW1vbiBwcmVmaXggaXMgb25lIG9mIHRoZQorKyAgICAgcG9zc2libGUgY29tcGxl dGlvbnMgKi8KKysgIGlmICh0b19wcmludFtwcmVmaXhfYnl0ZXNdID09ICdcMCcpCisrICAgIHBy ZWZpeF9ieXRlcyA9IDA7CisrCisrICBpZiAocHJlZml4X2J5dGVzKQorKyAgICB7CisrICAgICAg Y2hhciBlbGxpcHNpczsKKysKKysgICAgICBlbGxpcHNpcyA9ICh0b19wcmludFtwcmVmaXhfYnl0 ZXNdID09ICcuJykgPyAnXycgOiAnLic7CisrICAgICAgZm9yICh3ID0gMDsgdyA8IEVMTElQU0lT X0xFTjsgdysrKQorKwlwdXRjIChlbGxpcHNpcywgcmxfb3V0c3RyZWFtKTsKKysgICAgICBwcmlu dGVkX2xlbiA9IEVMTElQU0lTX0xFTjsKKysgICAgfQorKworKyAgcyA9IHRvX3ByaW50ICsgcHJl Zml4X2J5dGVzOworICAgd2hpbGUgKCpzKQorICAgICB7CisgICAgICAgaWYgKENUUkxfQ0hBUiAo KnMpKQorQEAgLTY5MSwxNCArNzkzLDE1IEBAIGZucHJpbnQgKHRvX3ByaW50KQorICAgIGZpbGVu YW1lcy4gIFJldHVybiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd2Ugb3V0cHV0LiAqLworIAor IHN0YXRpYyBpbnQKKy1wcmludF9maWxlbmFtZSAodG9fcHJpbnQsIGZ1bGxfcGF0aG5hbWUpCisr cHJpbnRfZmlsZW5hbWUgKHRvX3ByaW50LCBmdWxsX3BhdGhuYW1lLCBwcmVmaXhfYnl0ZXMpCisg ICAgICBjaGFyICp0b19wcmludCwgKmZ1bGxfcGF0aG5hbWU7CisrICAgICBpbnQgcHJlZml4X2J5 dGVzOworIHsKKyAgIGludCBwcmludGVkX2xlbiwgZXh0ZW5zaW9uX2NoYXIsIHNsZW4sIHRsZW47 CisgICBjaGFyICpzLCBjLCAqbmV3X2Z1bGxfcGF0aG5hbWUsICpkbjsKKyAKKyAgIGV4dGVuc2lv bl9jaGFyID0gMDsKKy0gIHByaW50ZWRfbGVuID0gZm5wcmludCAodG9fcHJpbnQpOworKyAgcHJp bnRlZF9sZW4gPSBmbnByaW50ICh0b19wcmludCwgcHJlZml4X2J5dGVzKTsKKyAKKyAjaWYgZGVm aW5lZCAoVklTSUJMRV9TVEFUUykKKyAgaWYgKHJsX2ZpbGVuYW1lX2NvbXBsZXRpb25fZGVzaXJl ZCAmJiAocmxfdmlzaWJsZV9zdGF0cyB8fCBfcmxfY29tcGxldGVfbWFya19kaXJlY3Rvcmllcykp CitAQCAtNzUzLDcgKzg1Niw3IEBAIHByaW50X2ZpbGVuYW1lICh0b19wcmludCwgZnVsbF9wYXRo bmFtZSkKKyAJICBpZiAocGF0aF9pc2RpciAobmV3X2Z1bGxfcGF0aG5hbWUpKQorIAkgICAgZXh0 ZW5zaW9uX2NoYXIgPSAnLyc7CisgCistCSAgZnJlZSAobmV3X2Z1bGxfcGF0aG5hbWUpOworKwkg IHhmcmVlIChuZXdfZnVsbF9wYXRobmFtZSk7CisgCSAgdG9fcHJpbnRbLTFdID0gYzsKKyAJfQor ICAgICAgIGVsc2UKK0BAIC03NjgsNyArODcxLDcgQEAgcHJpbnRfZmlsZW5hbWUgKHRvX3ByaW50 LCBmdWxsX3BhdGhuYW1lKQorIAkgICAgICBleHRlbnNpb25fY2hhciA9ICcvJzsKKyAJfQorIAor LSAgICAgIGZyZWUgKHMpOworKyAgICAgIHhmcmVlIChzKTsKKyAgICAgICBpZiAoZXh0ZW5zaW9u X2NoYXIpCisgCXsKKyAJICBwdXRjIChleHRlbnNpb25fY2hhciwgcmxfb3V0c3RyZWFtKTsKK0BA IC05NTAsNyArMTA1Myw3IEBAIGdlbl9jb21wbGV0aW9uX21hdGNoZXMgKHRleHQsIHN0YXJ0LCBl bmQsIG91cl9mdW5jLCBmb3VuZF9xdW90ZSwgcXVvdGVfY2hhcikKKyAgICAgIHJsX2NvbXBlbnRy eV9mdW5jX3QgKm91cl9mdW5jOworICAgICAgaW50IGZvdW5kX3F1b3RlLCBxdW90ZV9jaGFyOwor IHsKKy0gIGNoYXIgKiptYXRjaGVzLCAqdGVtcDsKKysgIGNoYXIgKiptYXRjaGVzOworIAorICAg cmxfY29tcGxldGlvbl9mb3VuZF9xdW90ZSA9IGZvdW5kX3F1b3RlOworICAgcmxfY29tcGxldGlv bl9xdW90ZV9jaGFyYWN0ZXIgPSBxdW90ZV9jaGFyOworQEAgLTk2MCw3ICsxMDYzLDEwIEBAIGdl bl9jb21wbGV0aW9uX21hdGNoZXMgKHRleHQsIHN0YXJ0LCBlbmQsIG91cl9mdW5jLCBmb3VuZF9x dW90ZSwgcXVvdGVfY2hhcikKKyAgICAgIHZhcmlhYmxlIHJsX2F0dGVtcHRlZF9jb21wbGV0aW9u X2Z1bmN0aW9uLiAqLworICAgaWYgKHJsX2F0dGVtcHRlZF9jb21wbGV0aW9uX2Z1bmN0aW9uKQor ICAgICB7CisrICAgICAgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSsrOworICAgICAgIG1hdGNo ZXMgPSAoKnJsX2F0dGVtcHRlZF9jb21wbGV0aW9uX2Z1bmN0aW9uKSAodGV4dCwgc3RhcnQsIGVu ZCk7CisrICAgICAgaWYgKF9ybF9pbnRlcnJ1cHRfaW1tZWRpYXRlbHkgPiAwKQorKwlfcmxfaW50 ZXJydXB0X2ltbWVkaWF0ZWx5LS07CisgCisgICAgICAgaWYgKG1hdGNoZXMgfHwgcmxfYXR0ZW1w dGVkX2NvbXBsZXRpb25fb3ZlcikKKyAJeworQEAgLTk2OSwyMSArMTA3NSw5IEBAIGdlbl9jb21w bGV0aW9uX21hdGNoZXMgKHRleHQsIHN0YXJ0LCBlbmQsIG91cl9mdW5jLCBmb3VuZF9xdW90ZSwg cXVvdGVfY2hhcikKKyAJfQorICAgICB9CisgCistICAvKiBCZXdhcmUgLS0gd2UncmUgc3RyaXBw aW5nIHRoZSBxdW90ZXMgaGVyZS4gIERvIHRoaXMgb25seSBpZiB3ZSBrbm93CistICAgICB3ZSBh cmUgZG9pbmcgZmlsZW5hbWUgY29tcGxldGlvbiBhbmQgdGhlIGFwcGxpY2F0aW9uIGhhcyBkZWZp bmVkIGEKKy0gICAgIGZpbGVuYW1lIGRlcXVvdGluZyBmdW5jdGlvbi4gKi8KKy0gIHRlbXAgPSAo Y2hhciAqKU5VTEw7CistCistICBpZiAoZm91bmRfcXVvdGUgJiYgb3VyX2Z1bmMgPT0gcmxfZmls ZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbiAmJgorLSAgICAgIHJsX2ZpbGVuYW1lX2RlcXVvdGlu Z19mdW5jdGlvbikKKy0gICAgeworLSAgICAgIC8qIGRlbGV0ZSBzaW5nbGUgYW5kIGRvdWJsZSBx dW90ZXMgKi8KKy0gICAgICB0ZW1wID0gKCpybF9maWxlbmFtZV9kZXF1b3RpbmdfZnVuY3Rpb24p ICh0ZXh0LCBxdW90ZV9jaGFyKTsKKy0gICAgICB0ZXh0ID0gdGVtcDsJLyogbm90IGZyZWVpbmcg dGV4dCBpcyBub3QgYSBtZW1vcnkgbGVhayAqLworLSAgICB9CisrICAvKiBYWFggLS0gZmlsZW5h bWUgZGVxdW90aW5nIG1vdmVkIGludG8gcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbiAq LworIAorICAgbWF0Y2hlcyA9IHJsX2NvbXBsZXRpb25fbWF0Y2hlcyAodGV4dCwgb3VyX2Z1bmMp OworLSAgRlJFRSAodGVtcCk7CisgICByZXR1cm4gbWF0Y2hlczsgIAorIH0KKyAKK0BAIC0xMDA0 LDcgKzEwOTgsNyBAQCByZW1vdmVfZHVwbGljYXRlX21hdGNoZXMgKG1hdGNoZXMpCisgCisgICAv KiBTb3J0IHRoZSBhcnJheSB3aXRob3V0IG1hdGNoZXNbMF0sIHNpbmNlIHdlIG5lZWQgaXQgdG8K KyAgICAgIHN0YXkgaW4gcGxhY2Ugbm8gbWF0dGVyIHdoYXQuICovCistICBpZiAoaSkKKysgIGlm IChpICYmIHJsX3NvcnRfY29tcGxldGlvbl9tYXRjaGVzKQorICAgICBxc29ydCAobWF0Y2hlcysx LCBpLTEsIHNpemVvZiAoY2hhciAqKSwgKFFTRlVOQyAqKV9ybF9xc29ydF9zdHJpbmdfY29tcGFy ZSk7CisgCisgICAvKiBSZW1lbWJlciB0aGUgbG93ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBmb3Ig aXQgbWF5IGJlIHVuaXF1ZS4gKi8KK0BAIC0xMDE0LDcgKzExMDgsNyBAQCByZW1vdmVfZHVwbGlj YXRlX21hdGNoZXMgKG1hdGNoZXMpCisgICAgIHsKKyAgICAgICBpZiAoc3RyY21wIChtYXRjaGVz W2ldLCBtYXRjaGVzW2kgKyAxXSkgPT0gMCkKKyAJeworLQkgIGZyZWUgKG1hdGNoZXNbaV0pOwor KwkgIHhmcmVlIChtYXRjaGVzW2ldKTsKKyAJICBtYXRjaGVzW2ldID0gKGNoYXIgKikmZGVhZF9z bG90OworIAl9CisgICAgICAgZWxzZQorQEAgLTEwMzIsNyArMTEyNiw3IEBAIHJlbW92ZV9kdXBs aWNhdGVfbWF0Y2hlcyAobWF0Y2hlcykKKyAgIHRlbXBfYXJyYXlbal0gPSAoY2hhciAqKU5VTEw7 CisgCisgICBpZiAobWF0Y2hlc1swXSAhPSAoY2hhciAqKSZkZWFkX3Nsb3QpCistICAgIGZyZWUg KG1hdGNoZXNbMF0pOworKyAgICB4ZnJlZSAobWF0Y2hlc1swXSk7CisgCisgICAvKiBQbGFjZSB0 aGUgbG93ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBiYWNrIGluIFswXS4gKi8KKyAgIHRlbXBfYXJy YXlbMF0gPSBsb3dlc3RfY29tbW9uOworQEAgLTEwNDIsNyArMTEzNiw3IEBAIHJlbW92ZV9kdXBs aWNhdGVfbWF0Y2hlcyAobWF0Y2hlcykKKyAgICAgIGluc2VydC4gKi8KKyAgIGlmIChqID09IDIg JiYgc3RyY21wICh0ZW1wX2FycmF5WzBdLCB0ZW1wX2FycmF5WzFdKSA9PSAwKQorICAgICB7Cist ICAgICAgZnJlZSAodGVtcF9hcnJheVsxXSk7CisrICAgICAgeGZyZWUgKHRlbXBfYXJyYXlbMV0p OworICAgICAgIHRlbXBfYXJyYXlbMV0gPSAoY2hhciAqKU5VTEw7CisgICAgIH0KKyAgIHJldHVy biAodGVtcF9hcnJheSk7CitAQCAtMTExNiw3ICsxMjEwLDggQEAgY29tcHV0ZV9sY2Rfb2ZfbWF0 Y2hlcyAobWF0Y2hfbGlzdCwgbWF0Y2hlcywgdGV4dCkKKyAjaWYgZGVmaW5lZCAoSEFORExFX01V TFRJQllURSkKKyAJICAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09 IDApCisgCSAgICAgIHsKKy0JCW1ic3RhdGVfdCBwc19iYWNrID0gcHMxOworKwkJbWJzdGF0ZV90 IHBzX2JhY2s7CisrCQlwc19iYWNrID0gcHMxOworIAkJaWYgKCFfcmxfY29tcGFyZV9jaGFycyAo bWF0Y2hfbGlzdFtpXSwgc2ksICZwczEsIG1hdGNoX2xpc3RbaSsxXSwgc2ksICZwczIpKQorIAkJ ICBicmVhazsKKyAJCWVsc2UgaWYgKCh2ID0gX3JsX2dldF9jaGFyX2xlbiAoJm1hdGNoX2xpc3Rb aV1bc2ldLCAmcHNfYmFjaykpID4gMSkKK0BAIC0xMjIwLDcgKzEzMTUsNyBAQCBwb3N0cHJvY2Vz c19tYXRjaGVzIChtYXRjaGVzcCwgbWF0Y2hpbmdfZmlsZW5hbWVzKQorICAgaWYgKHJsX2lnbm9y ZV9jb21wbGV0aW9uX2R1cGxpY2F0ZXMpCisgICAgIHsKKyAgICAgICB0ZW1wX21hdGNoZXMgPSBy ZW1vdmVfZHVwbGljYXRlX21hdGNoZXMgKG1hdGNoZXMpOworLSAgICAgIGZyZWUgKG1hdGNoZXMp OworKyAgICAgIHhmcmVlIChtYXRjaGVzKTsKKyAgICAgICBtYXRjaGVzID0gdGVtcF9tYXRjaGVz OworICAgICB9CisgCitAQCAtMTI1Nyw2ICsxMzUyLDIzIEBAIHBvc3Rwcm9jZXNzX21hdGNoZXMg KG1hdGNoZXNwLCBtYXRjaGluZ19maWxlbmFtZXMpCisgICByZXR1cm4gKDEpOworIH0KKyAKKytz dGF0aWMgaW50CisrY29tcGxldGVfZ2V0X3NjcmVlbndpZHRoICgpCisreworKyAgaW50IGNvbHM7 CisrICBjaGFyICplbnZjb2xzOworKworKyAgY29scyA9IF9ybF9jb21wbGV0aW9uX2NvbHVtbnM7 CisrICBpZiAoY29scyA+PSAwICYmIGNvbHMgPD0gX3JsX3NjcmVlbndpZHRoKQorKyAgICByZXR1 cm4gY29sczsKKysgIGVudmNvbHMgPSBnZXRlbnYgKCJDT0xVTU5TIik7CisrICBpZiAoZW52Y29s cyAmJiAqZW52Y29scykKKysgICAgY29scyA9IGF0b2kgKGVudmNvbHMpOworKyAgaWYgKGNvbHMg Pj0gMCAmJiBjb2xzIDw9IF9ybF9zY3JlZW53aWR0aCkKKysgICAgcmV0dXJuIGNvbHM7CisrICBy ZXR1cm4gX3JsX3NjcmVlbndpZHRoOworK30KKysKKyAvKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9u IGZvciBkaXNwbGF5aW5nIGEgbGlzdCBvZiBzdHJpbmdzIGluCisgICAgY29sdW1uYXIgZm9ybWF0 IG9uIHJlYWRsaW5lJ3Mgb3V0cHV0IHN0cmVhbS4gIE1BVENIRVMgaXMgdGhlIGxpc3QKKyAgICBv ZiBzdHJpbmdzLCBpbiBhcmd2IGZvcm1hdCwgTEVOIGlzIHRoZSBudW1iZXIgb2Ygc3RyaW5ncyBp biBNQVRDSEVTLAorQEAgLTEyNjYsMTcgKzEzNzgsMzggQEAgcmxfZGlzcGxheV9tYXRjaF9saXN0 IChtYXRjaGVzLCBsZW4sIG1heCkKKyAgICAgIGNoYXIgKiptYXRjaGVzOworICAgICAgaW50IGxl biwgbWF4OworIHsKKy0gIGludCBjb3VudCwgbGltaXQsIHByaW50ZWRfbGVuLCBsaW5lczsKKy0g IGludCBpLCBqLCBrLCBsOworLSAgY2hhciAqdGVtcDsKKysgIGludCBjb3VudCwgbGltaXQsIHBy aW50ZWRfbGVuLCBsaW5lcywgY29sczsKKysgIGludCBpLCBqLCBrLCBsLCBjb21tb25fbGVuZ3Ro LCBzaW5kOworKyAgY2hhciAqdGVtcCwgKnQ7CisrCisrICAvKiBGaW5kIHRoZSBsZW5ndGggb2Yg dGhlIHByZWZpeCBjb21tb24gdG8gYWxsIGl0ZW1zOiBsZW5ndGggYXMgZGlzcGxheWVkCisrICAg ICBjaGFyYWN0ZXJzIChjb21tb25fbGVuZ3RoKSBhbmQgYXMgYSBieXRlIGluZGV4IGludG8gdGhl IG1hdGNoZXMgKHNpbmQpICovCisrICBjb21tb25fbGVuZ3RoID0gc2luZCA9IDA7CisrICBpZiAo X3JsX2NvbXBsZXRpb25fcHJlZml4X2Rpc3BsYXlfbGVuZ3RoID4gMCkKKysgICAgeworKyAgICAg IHQgPSBwcmludGFibGVfcGFydCAobWF0Y2hlc1swXSk7CisrICAgICAgdGVtcCA9IHN0cnJjaHIg KHQsICcvJyk7CisrICAgICAgY29tbW9uX2xlbmd0aCA9IHRlbXAgPyBmbndpZHRoICh0ZW1wKSA6 IGZud2lkdGggKHQpOworKyAgICAgIHNpbmQgPSB0ZW1wID8gc3RybGVuICh0ZW1wKSA6IHN0cmxl biAodCk7CisrCisrICAgICAgaWYgKGNvbW1vbl9sZW5ndGggPiBfcmxfY29tcGxldGlvbl9wcmVm aXhfZGlzcGxheV9sZW5ndGggJiYgY29tbW9uX2xlbmd0aCA+IEVMTElQU0lTX0xFTikKKysJbWF4 IC09IGNvbW1vbl9sZW5ndGggLSBFTExJUFNJU19MRU47CisrICAgICAgZWxzZQorKwljb21tb25f bGVuZ3RoID0gc2luZCA9IDA7CisrICAgIH0KKyAKKyAgIC8qIEhvdyBtYW55IGl0ZW1zIG9mIE1B WCBsZW5ndGggY2FuIHdlIGZpdCBpbiB0aGUgc2NyZWVuIHdpbmRvdz8gKi8KKysgIGNvbHMgPSBj b21wbGV0ZV9nZXRfc2NyZWVud2lkdGggKCk7CisgICBtYXggKz0gMjsKKy0gIGxpbWl0ID0gX3Js X3NjcmVlbndpZHRoIC8gbWF4OworLSAgaWYgKGxpbWl0ICE9IDEgJiYgKGxpbWl0ICogbWF4ID09 IF9ybF9zY3JlZW53aWR0aCkpCisrICBsaW1pdCA9IGNvbHMgLyBtYXg7CisrICBpZiAobGltaXQg IT0gMSAmJiAobGltaXQgKiBtYXggPT0gY29scykpCisgICAgIGxpbWl0LS07CisgCistICAvKiBB dm9pZCBhIHBvc3NpYmxlIGZsb2F0aW5nIGV4Y2VwdGlvbi4gIElmIG1heCA+IF9ybF9zY3JlZW53 aWR0aCwKKysgIC8qIElmIGNvbHMgPT0gMCwgbGltaXQgd2lsbCBlbmQgdXAgLTEgKi8KKysgIGlm IChjb2xzIDwgX3JsX3NjcmVlbndpZHRoICYmIGxpbWl0IDwgMCkKKysgICAgbGltaXQgPSAxOwor KworKyAgLyogQXZvaWQgYSBwb3NzaWJsZSBmbG9hdGluZyBleGNlcHRpb24uICBJZiBtYXggPiBj b2xzLAorICAgICAgbGltaXQgd2lsbCBiZSAwIGFuZCBhIGRpdmlkZS1ieS16ZXJvIGZhdWx0IHdp bGwgcmVzdWx0LiAqLworICAgaWYgKGxpbWl0ID09IDApCisgICAgIGxpbWl0ID0gMTsKK0BAIC0x Mjg5LDcgKzE0MjIsNyBAQCBybF9kaXNwbGF5X21hdGNoX2xpc3QgKG1hdGNoZXMsIGxlbiwgbWF4 KQorIAkgICAwIDwgbGVuIDw9IGxpbWl0ICBpbXBsaWVzICBjb3VudCA9IDEuICovCisgCisgICAv KiBTb3J0IHRoZSBpdGVtcyBpZiB0aGV5IGFyZSBub3QgYWxyZWFkeSBzb3J0ZWQuICovCistICBp ZiAocmxfaWdub3JlX2NvbXBsZXRpb25fZHVwbGljYXRlcyA9PSAwKQorKyAgaWYgKHJsX2lnbm9y ZV9jb21wbGV0aW9uX2R1cGxpY2F0ZXMgPT0gMCAmJiBybF9zb3J0X2NvbXBsZXRpb25fbWF0Y2hl cykKKyAgICAgcXNvcnQgKG1hdGNoZXMgKyAxLCBsZW4sIHNpemVvZiAoY2hhciAqKSwgKFFTRlVO QyAqKV9ybF9xc29ydF9zdHJpbmdfY29tcGFyZSk7CisgCisgICBybF9jcmxmICgpOworQEAgLTEz MDcsNyArMTQ0MCw3IEBAIHJsX2Rpc3BsYXlfbWF0Y2hfbGlzdCAobWF0Y2hlcywgbGVuLCBtYXgp CisgCSAgICAgIGVsc2UKKyAJCXsKKyAJCSAgdGVtcCA9IHByaW50YWJsZV9wYXJ0IChtYXRjaGVz W2xdKTsKKy0JCSAgcHJpbnRlZF9sZW4gPSBwcmludF9maWxlbmFtZSAodGVtcCwgbWF0Y2hlc1ts XSk7CisrCQkgIHByaW50ZWRfbGVuID0gcHJpbnRfZmlsZW5hbWUgKHRlbXAsIG1hdGNoZXNbbF0s IHNpbmQpOworIAorIAkJICBpZiAoaiArIDEgPCBsaW1pdCkKKyAJCSAgICBmb3IgKGsgPSAwOyBr IDwgbWF4IC0gcHJpbnRlZF9sZW47IGsrKykKK0BAIC0xMzMxLDcgKzE0NjQsNyBAQCBybF9kaXNw bGF5X21hdGNoX2xpc3QgKG1hdGNoZXMsIGxlbiwgbWF4KQorICAgICAgIGZvciAoaSA9IDE7IG1h dGNoZXNbaV07IGkrKykKKyAJeworIAkgIHRlbXAgPSBwcmludGFibGVfcGFydCAobWF0Y2hlc1tp XSk7CistCSAgcHJpbnRlZF9sZW4gPSBwcmludF9maWxlbmFtZSAodGVtcCwgbWF0Y2hlc1tpXSk7 CisrCSAgcHJpbnRlZF9sZW4gPSBwcmludF9maWxlbmFtZSAodGVtcCwgbWF0Y2hlc1tpXSwgc2lu ZCk7CisgCSAgLyogSGF2ZSB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhpcyBsaW5lPyAqLworIAkg IGlmIChtYXRjaGVzW2krMV0pCisgCSAgICB7CitAQCAtMTM4MSw3ICsxNTE0LDcgQEAgZGlzcGxh eV9tYXRjaGVzIChtYXRjaGVzKQorICAgICB7CisgICAgICAgdGVtcCA9IHByaW50YWJsZV9wYXJ0 IChtYXRjaGVzWzBdKTsKKyAgICAgICBybF9jcmxmICgpOworLSAgICAgIHByaW50X2ZpbGVuYW1l ICh0ZW1wLCBtYXRjaGVzWzBdKTsKKysgICAgICBwcmludF9maWxlbmFtZSAodGVtcCwgbWF0Y2hl c1swXSwgMCk7CisgICAgICAgcmxfY3JsZiAoKTsKKyAKKyAgICAgICBybF9mb3JjZWRfdXBkYXRl X2Rpc3BsYXkgKCk7CitAQCAtMTQxNyw3ICsxNTUwLDcgQEAgZGlzcGxheV9tYXRjaGVzIChtYXRj aGVzKQorICAgICAgIHJsX2NybGYgKCk7CisgICAgICAgZnByaW50ZiAocmxfb3V0c3RyZWFtLCAi RGlzcGxheSBhbGwgJWQgcG9zc2liaWxpdGllcz8gKHkgb3IgbikiLCBsZW4pOworICAgICAgIGZm bHVzaCAocmxfb3V0c3RyZWFtKTsKKy0gICAgICBpZiAoZ2V0X3lfb3JfbiAoMCkgPT0gMCkKKysg ICAgICBpZiAoKGNvbXBsZXRpb25feV9vcl9uID0gZ2V0X3lfb3JfbiAoMCkpID09IDApCisgCXsK KyAJICBybF9jcmxmICgpOworIAorQEAgLTE0ODUsOCArMTYxOCw5IEBAIGluc2VydF9tYXRjaCAo bWF0Y2gsIHN0YXJ0LCBtdHlwZSwgcWMpCisgICAgICBpbnQgc3RhcnQsIG10eXBlOworICAgICAg Y2hhciAqcWM7CisgeworLSAgY2hhciAqcmVwbGFjZW1lbnQ7CisrICBjaGFyICpyZXBsYWNlbWVu dCwgKnI7CisgICBjaGFyIG9xYzsKKysgIGludCBlbmQsIHJsZW47CisgCisgICBvcWMgPSBxYyA/ ICpxYyA6ICdcMCc7CisgICByZXBsYWNlbWVudCA9IG1ha2VfcXVvdGVkX3JlcGxhY2VtZW50ICht YXRjaCwgbXR5cGUsIHFjKTsKK0BAIC0xNDk0LDYgKzE2MjgsNyBAQCBpbnNlcnRfbWF0Y2ggKG1h dGNoLCBzdGFydCwgbXR5cGUsIHFjKQorICAgLyogTm93IGluc2VydCB0aGUgbWF0Y2guICovCisg ICBpZiAocmVwbGFjZW1lbnQpCisgICAgIHsKKysgICAgICBybGVuID0gc3RybGVuIChyZXBsYWNl bWVudCk7CisgICAgICAgLyogRG9uJ3QgZG91YmxlIGFuIG9wZW5pbmcgcXVvdGUgY2hhcmFjdGVy LiAqLworICAgICAgIGlmIChxYyAmJiAqcWMgJiYgc3RhcnQgJiYgcmxfbGluZV9idWZmZXJbc3Rh cnQgLSAxXSA9PSAqcWMgJiYKKyAJICAgIHJlcGxhY2VtZW50WzBdID09ICpxYykKK0BAIC0xNTAz LDkgKzE2MzgsMjYgQEAgaW5zZXJ0X21hdGNoIChtYXRjaCwgc3RhcnQsIG10eXBlLCBxYykKKyAg ICAgICBlbHNlIGlmIChxYyAmJiAoKnFjICE9IG9xYykgJiYgc3RhcnQgJiYgcmxfbGluZV9idWZm ZXJbc3RhcnQgLSAxXSA9PSBvcWMgJiYKKyAJICAgIHJlcGxhY2VtZW50WzBdICE9IG9xYykKKyAJ c3RhcnQtLTsKKy0gICAgICBfcmxfcmVwbGFjZV90ZXh0IChyZXBsYWNlbWVudCwgc3RhcnQsIHJs X3BvaW50IC0gMSk7CisrICAgICAgZW5kID0gcmxfcG9pbnQgLSAxOworKyAgICAgIC8qIERvbid0 IGRvdWJsZSBhIGNsb3NpbmcgcXVvdGUgY2hhcmFjdGVyICovCisrICAgICAgaWYgKHFjICYmICpx YyAmJiBlbmQgJiYgcmxfbGluZV9idWZmZXJbcmxfcG9pbnRdID09ICpxYyAmJiByZXBsYWNlbWVu dFtybGVuIC0gMV0gPT0gKnFjKQorKyAgICAgICAgZW5kKys7CisrICAgICAgaWYgKF9ybF9za2lw X2NvbXBsZXRlZF90ZXh0KQorKwl7CisrCSAgciA9IHJlcGxhY2VtZW50OworKwkgIHdoaWxlIChz dGFydCA8IHJsX2VuZCAmJiAqciAmJiBybF9saW5lX2J1ZmZlcltzdGFydF0gPT0gKnIpCisrCSAg ICB7CisrCSAgICAgIHN0YXJ0Kys7CisrCSAgICAgIHIrKzsKKysJICAgIH0KKysJICBpZiAoc3Rh cnQgPD0gZW5kIHx8ICpyKQorKwkgICAgX3JsX3JlcGxhY2VfdGV4dCAociwgc3RhcnQsIGVuZCk7 CisrCSAgcmxfcG9pbnQgPSBzdGFydCArIHN0cmxlbiAocik7CisrCX0KKysgICAgICBlbHNlCisr CV9ybF9yZXBsYWNlX3RleHQgKHJlcGxhY2VtZW50LCBzdGFydCwgZW5kKTsKKyAgICAgICBpZiAo cmVwbGFjZW1lbnQgIT0gbWF0Y2gpCistICAgICAgICBmcmVlIChyZXBsYWNlbWVudCk7CisrICAg ICAgICB4ZnJlZSAocmVwbGFjZW1lbnQpOworICAgICB9CisgfQorIAorQEAgLTE1NzIsNyArMTcy NCw3IEBAIGFwcGVuZF90b19tYXRjaCAodGV4dCwgZGVsaW1pdGVyLCBxdW90ZV9jaGFyLCBub250 cml2aWFsX21hdGNoKQorIAkgIGlmIChybF9wb2ludCA9PSBybF9lbmQgJiYgdGVtcF9zdHJpbmdf aW5kZXgpCisgCSAgICBybF9pbnNlcnRfdGV4dCAodGVtcF9zdHJpbmcpOworIAl9CistICAgICAg ZnJlZSAoZmlsZW5hbWUpOworKyAgICAgIHhmcmVlIChmaWxlbmFtZSk7CisgICAgIH0KKyAgIGVs c2UKKyAgICAgeworQEAgLTE2MDgsNyArMTc2MCw3IEBAIGluc2VydF9hbGxfbWF0Y2hlcyAobWF0 Y2hlcywgcG9pbnQsIHFjKQorIAkgIHJsX2luc2VydF90ZXh0IChycCk7CisgCSAgcmxfaW5zZXJ0 X3RleHQgKCIgIik7CisgCSAgaWYgKHJwICE9IG1hdGNoZXNbaV0pCistCSAgICBmcmVlIChycCk7 CisrCSAgICB4ZnJlZSAocnApOworIAl9CisgICAgIH0KKyAgIGVsc2UKK0BAIC0xNjE3LDcgKzE3 NjksNyBAQCBpbnNlcnRfYWxsX21hdGNoZXMgKG1hdGNoZXMsIHBvaW50LCBxYykKKyAgICAgICBy bF9pbnNlcnRfdGV4dCAocnApOworICAgICAgIHJsX2luc2VydF90ZXh0ICgiICIpOworICAgICAg IGlmIChycCAhPSBtYXRjaGVzWzBdKQorLQlmcmVlIChycCk7CisrCXhmcmVlIChycCk7CisgICAg IH0KKyAgIHJsX2VuZF91bmRvX2dyb3VwICgpOworIH0KK0BAIC0xNjMyLDggKzE3ODQsOCBAQCBf cmxfZnJlZV9tYXRjaF9saXN0IChtYXRjaGVzKQorICAgICByZXR1cm47CisgCisgICBmb3IgKGkg PSAwOyBtYXRjaGVzW2ldOyBpKyspCistICAgIGZyZWUgKG1hdGNoZXNbaV0pOworLSAgZnJlZSAo bWF0Y2hlcyk7CisrICAgIHhmcmVlIChtYXRjaGVzW2ldKTsKKysgIHhmcmVlIChtYXRjaGVzKTsK KyB9CisgCisgLyogQ29tcGxldGUgdGhlIHdvcmQgYXQgb3IgYmVmb3JlIHBvaW50LgorQEAgLTE2 NTQsNiArMTgwNiw5IEBAIHJsX2NvbXBsZXRlX2ludGVybmFsICh3aGF0X3RvX2RvKQorICAgaW50 IHN0YXJ0LCBlbmQsIGRlbGltaXRlciwgZm91bmRfcXVvdGUsIGksIG5vbnRyaXZpYWxfbGNkOwor ICAgY2hhciAqdGV4dCwgKnNhdmVkX2xpbmVfYnVmZmVyOworICAgY2hhciBxdW90ZV9jaGFyOwor KyNpZiAxCisrICBpbnQgdGxlbiwgbWxlbjsKKysjZW5kaWYKKyAKKyAgIFJMX1NFVFNUQVRFKFJM X1NUQVRFX0NPTVBMRVRJTkcpOworIAorQEAgLTE2ODEsNyArMTgzNiwxMSBAQCBybF9jb21wbGV0 ZV9pbnRlcm5hbCAod2hhdF90b19kbykKKyAgIC8qIG5vbnRyaXZpYWxfbGNkIGlzIHNldCBpZiB0 aGUgY29tbW9uIHByZWZpeCBhZGRzIHNvbWV0aGluZyB0byB0aGUgd29yZAorICAgICAgYmVpbmcg Y29tcGxldGVkLiAqLworICAgbm9udHJpdmlhbF9sY2QgPSBtYXRjaGVzICYmIHN0cmNtcCAodGV4 dCwgbWF0Y2hlc1swXSkgIT0gMDsKKy0gIGZyZWUgKHRleHQpOworKyNpZiAxCisrICBpZiAod2hh dF90b19kbyA9PSAnIScgfHwgd2hhdF90b19kbyA9PSAnQCcpCisrICAgIHRsZW4gPSBzdHJsZW4g KHRleHQpOworKyNlbmRpZgorKyAgeGZyZWUgKHRleHQpOworIAorICAgaWYgKG1hdGNoZXMgPT0g MCkKKyAgICAgeworQEAgLTE2ODksNiArMTg0OCw3IEBAIHJsX2NvbXBsZXRlX2ludGVybmFsICh3 aGF0X3RvX2RvKQorICAgICAgIEZSRUUgKHNhdmVkX2xpbmVfYnVmZmVyKTsKKyAgICAgICBjb21w bGV0aW9uX2NoYW5nZWRfYnVmZmVyID0gMDsKKyAgICAgICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRF X0NPTVBMRVRJTkcpOworKyAgICAgIF9ybF9yZXNldF9jb21wbGV0aW9uX3N0YXRlICgpOworICAg ICAgIHJldHVybiAoMCk7CisgICAgIH0KKyAKK0BAIC0xNzAzLDYgKzE4NjMsNyBAQCBybF9jb21w bGV0ZV9pbnRlcm5hbCAod2hhdF90b19kbykKKyAgICAgICBGUkVFIChzYXZlZF9saW5lX2J1ZmZl cik7CisgICAgICAgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IDA7CisgICAgICAgUkxfVU5T RVRTVEFURShSTF9TVEFURV9DT01QTEVUSU5HKTsKKysgICAgICBfcmxfcmVzZXRfY29tcGxldGlv bl9zdGF0ZSAoKTsKKyAgICAgICByZXR1cm4gKDApOworICAgICB9CisgCitAQCAtMTcxMiw4ICsx ODczLDI1IEBAIHJsX2NvbXBsZXRlX2ludGVybmFsICh3aGF0X3RvX2RvKQorICAgICBjYXNlICch JzoKKyAgICAgY2FzZSAnQCc6CisgICAgICAgLyogSW5zZXJ0IHRoZSBmaXJzdCBtYXRjaCB3aXRo IHByb3BlciBxdW90aW5nLiAqLworKyNpZiAwCisgICAgICAgaWYgKCptYXRjaGVzWzBdKQorIAlp bnNlcnRfbWF0Y2ggKG1hdGNoZXNbMF0sIHN0YXJ0LCBtYXRjaGVzWzFdID8gTVVMVF9NQVRDSCA6 IFNJTkdMRV9NQVRDSCwgJnF1b3RlX2NoYXIpOworKyNlbHNlCisrICAgICAgaWYgKHdoYXRfdG9f ZG8gPT0gVEFCKQorKyAgICAgICAgeworKyAgICAgICAgICBpZiAoKm1hdGNoZXNbMF0pCisrCSAg ICBpbnNlcnRfbWF0Y2ggKG1hdGNoZXNbMF0sIHN0YXJ0LCBtYXRjaGVzWzFdID8gTVVMVF9NQVRD SCA6IFNJTkdMRV9NQVRDSCwgJnF1b3RlX2NoYXIpOworKyAgICAgICAgfQorKyAgICAgIGVsc2Ug aWYgKCptYXRjaGVzWzBdICYmIG1hdGNoZXNbMV0gPT0gMCkKKysJLyogc2hvdWxkIHdlIHBlcmZv cm0gdGhlIGNoZWNrIG9ubHkgaWYgdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoZXM/ICovCisrCWlu c2VydF9tYXRjaCAobWF0Y2hlc1swXSwgc3RhcnQsIG1hdGNoZXNbMV0gPyBNVUxUX01BVENIIDog U0lOR0xFX01BVENILCAmcXVvdGVfY2hhcik7CisrICAgICAgZWxzZSBpZiAoKm1hdGNoZXNbMF0p CS8qIHdoYXRfdG9fZG8gIT0gVEFCICYmIG11bHRpcGxlIG1hdGNoZXMgKi8KKysJeworKwkgIG1s ZW4gPSAqbWF0Y2hlc1swXSA/IHN0cmxlbiAobWF0Y2hlc1swXSkgOiAwOworKwkgIGlmIChtbGVu ID49IHRsZW4pCisrCSAgICBpbnNlcnRfbWF0Y2ggKG1hdGNoZXNbMF0sIHN0YXJ0LCBtYXRjaGVz WzFdID8gTVVMVF9NQVRDSCA6IFNJTkdMRV9NQVRDSCwgJnF1b3RlX2NoYXIpOworKwl9CisrI2Vu ZGlmCisgCisgICAgICAgLyogSWYgdGhlcmUgYXJlIG1vcmUgbWF0Y2hlcywgcmluZyB0aGUgYmVs bCB0byBpbmRpY2F0ZS4KKyAJIElmIHdlIGFyZSBpbiB2aSBtb2RlLCBQb3NpeC4yIHNheXMgdG8g bm90IHJpbmcgdGhlIGJlbGwuCitAQCAtMTc1MywxMCArMTkzMSwxMSBAQCBybF9jb21wbGV0ZV9p bnRlcm5hbCAod2hhdF90b19kbykKKyAgICAgICBicmVhazsKKyAKKyAgICAgZGVmYXVsdDoKKy0g ICAgICBmcHJpbnRmIChzdGRlcnIsICJcclxucmVhZGxpbmU6IGJhZCB2YWx1ZSAlZCBmb3Igd2hh dF90b19kbyBpbiBybF9jb21wbGV0ZVxuIiwgd2hhdF90b19kbyk7CisrICAgICAgX3JsX3R0eW1z ZyAoImJhZCB2YWx1ZSAlZCBmb3Igd2hhdF90b19kbyBpbiBybF9jb21wbGV0ZSIsIHdoYXRfdG9f ZG8pOworICAgICAgIHJsX2RpbmcgKCk7CisgICAgICAgRlJFRSAoc2F2ZWRfbGluZV9idWZmZXIp OworICAgICAgIFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfQ09NUExFVElORyk7CisrICAgICAgX3Js X3Jlc2V0X2NvbXBsZXRpb25fc3RhdGUgKCk7CisgICAgICAgcmV0dXJuIDE7CisgICAgIH0KKyAK K0BAIC0xNzY2LDEwICsxOTQ1LDExIEBAIHJsX2NvbXBsZXRlX2ludGVybmFsICh3aGF0X3RvX2Rv KQorICAgaWYgKHNhdmVkX2xpbmVfYnVmZmVyKQorICAgICB7CisgICAgICAgY29tcGxldGlvbl9j aGFuZ2VkX2J1ZmZlciA9IHN0cmNtcCAocmxfbGluZV9idWZmZXIsIHNhdmVkX2xpbmVfYnVmZmVy KSAhPSAwOworLSAgICAgIGZyZWUgKHNhdmVkX2xpbmVfYnVmZmVyKTsKKysgICAgICB4ZnJlZSAo c2F2ZWRfbGluZV9idWZmZXIpOworICAgICB9CisgCisgICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRF X0NPTVBMRVRJTkcpOworKyAgX3JsX3Jlc2V0X2NvbXBsZXRpb25fc3RhdGUgKCk7CisgICByZXR1 cm4gMDsKKyB9CisgCitAQCAtMTgxMyw2ICsxOTkzLDcgQEAgcmxfY29tcGxldGlvbl9tYXRjaGVz ICh0ZXh0LCBlbnRyeV9mdW5jdGlvbikKKyAgIG1hdGNoX2xpc3QgPSAoY2hhciAqKil4bWFsbG9j ICgobWF0Y2hfbGlzdF9zaXplICsgMSkgKiBzaXplb2YgKGNoYXIgKikpOworICAgbWF0Y2hfbGlz dFsxXSA9IChjaGFyICopTlVMTDsKKyAKKysgIF9ybF9pbnRlcnJ1cHRfaW1tZWRpYXRlbHkrKzsK KyAgIHdoaWxlIChzdHJpbmcgPSAoKmVudHJ5X2Z1bmN0aW9uKSAodGV4dCwgbWF0Y2hlcykpCisg ICAgIHsKKyAgICAgICBpZiAobWF0Y2hlcyArIDEgPT0gbWF0Y2hfbGlzdF9zaXplKQorQEAgLTE4 MjIsNiArMjAwMyw4IEBAIHJsX2NvbXBsZXRpb25fbWF0Y2hlcyAodGV4dCwgZW50cnlfZnVuY3Rp b24pCisgICAgICAgbWF0Y2hfbGlzdFsrK21hdGNoZXNdID0gc3RyaW5nOworICAgICAgIG1hdGNo X2xpc3RbbWF0Y2hlcyArIDFdID0gKGNoYXIgKilOVUxMOworICAgICB9CisrICBpZiAoX3JsX2lu dGVycnVwdF9pbW1lZGlhdGVseSA+IDApCisrICAgIF9ybF9pbnRlcnJ1cHRfaW1tZWRpYXRlbHkt LTsKKyAKKyAgIC8qIElmIHRoZXJlIHdlcmUgYW55IG1hdGNoZXMsIHRoZW4gbG9vayB0aHJvdWdo IHRoZW0gZmluZGluZyBvdXQgdGhlCisgICAgICBsb3dlc3QgY29tbW9uIGRlbm9taW5hdG9yLiAg VGhhdCB0aGVuIGJlY29tZXMgbWF0Y2hfbGlzdFswXS4gKi8KK0BAIC0xODI5LDcgKzIwMTIsNyBA QCBybF9jb21wbGV0aW9uX21hdGNoZXMgKHRleHQsIGVudHJ5X2Z1bmN0aW9uKQorICAgICBjb21w dXRlX2xjZF9vZl9tYXRjaGVzIChtYXRjaF9saXN0LCBtYXRjaGVzLCB0ZXh0KTsKKyAgIGVsc2UJ CQkJLyogVGhlcmUgd2VyZSBubyBtYXRjaGVzLiAqLworICAgICB7CistICAgICAgZnJlZSAobWF0 Y2hfbGlzdCk7CisrICAgICAgeGZyZWUgKG1hdGNoX2xpc3QpOworICAgICAgIG1hdGNoX2xpc3Qg PSAoY2hhciAqKilOVUxMOworICAgICB9CisgICByZXR1cm4gKG1hdGNoX2xpc3QpOworQEAgLTE4 OTUsNiArMjA3OCw2MiBAQCBybF91c2VybmFtZV9jb21wbGV0aW9uX2Z1bmN0aW9uICh0ZXh0LCBz dGF0ZSkKKyAjZW5kaWYgLyogIV9fV0lOMzJfXyAmJiAhX19PUEVOTlQgKi8KKyB9CisgCisrLyog UmV0dXJuIG5vbi16ZXJvIGlmIENPTlZGTiBtYXRjaGVzIEZJTEVOQU1FIHVwIHRvIHRoZSBsZW5n dGggb2YgRklMRU5BTUUKKysgICAoRklMRU5BTUVfTEVOKS4gIElmIF9ybF9jb21wbGV0aW9uX2Nh c2VfZm9sZCBpcyBzZXQsIGNvbXBhcmUgd2l0aG91dAorKyAgIHJlZ2FyZCB0byB0aGUgYWxwaGFi ZXRpYyBjYXNlIG9mIGNoYXJhY3RlcnMuICBDT05WRk4gaXMgdGhlIHBvc3NpYmx5LQorKyAgIGNv bnZlcnRlZCBkaXJlY3RvcnkgZW50cnk7IEZJTEVOQU1FIGlzIHdoYXQgdGhlIHVzZXIgdHlwZWQu ICovCisrc3RhdGljIGludAorK2NvbXBsZXRlX2ZuY21wIChjb252Zm4sIGNvbnZsZW4sIGZpbGVu YW1lLCBmaWxlbmFtZV9sZW4pCisrICAgICBjb25zdCBjaGFyICpjb252Zm47CisrICAgICBpbnQg Y29udmxlbjsKKysgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOworKyAgICAgaW50IGZpbGVuYW1l X2xlbjsKKyt7CisrICByZWdpc3RlciBjaGFyICpzMSwgKnMyOworKyAgaW50IGQsIGxlbjsKKysK KysgIC8qIE90aGVyd2lzZSwgaWYgdGhlc2UgbWF0Y2ggdXAgdG8gdGhlIGxlbmd0aCBvZiBmaWxl bmFtZSwgdGhlbgorKyAgICAgaXQgaXMgYSBtYXRjaC4gKi8KKysgIGlmIChfcmxfY29tcGxldGlv bl9jYXNlX2ZvbGQgJiYgX3JsX2NvbXBsZXRpb25fY2FzZV9tYXApCisrICAgIHsKKysgICAgICAv KiBDYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24gdHJlYXRpbmcgXyBhbmQgLSBhcyBlcXVpdmFs ZW50ICovCisrICAgICAgaWYgKGZpbGVuYW1lX2xlbiA9PSAwKQorKwlyZXR1cm4gMTsKKysgICAg ICBpZiAoY29udmxlbiA8IGZpbGVuYW1lX2xlbikKKysJcmV0dXJuIDA7CisrICAgICAgczEgPSAo Y2hhciAqKWNvbnZmbjsKKysgICAgICBzMiA9IChjaGFyICopZmlsZW5hbWU7CisrICAgICAgbGVu ID0gZmlsZW5hbWVfbGVuOworKyAgICAgIGRvCisrCXsKKysJICBkID0gX3JsX3RvX2xvd2VyICgq czEpIC0gX3JsX3RvX2xvd2VyICgqczIpOworKwkgIC8qICpzMSA9PSBbLV9dICYmICpzMiA9PSBb LV9dICovCisrCSAgaWYgKCgqczEgPT0gJy0nIHx8ICpzMSA9PSAnXycpICYmICgqczIgPT0gJy0n IHx8ICpzMiA9PSAnXycpKQorKwkgICAgZCA9IDA7CisrCSAgaWYgKGQgIT0gMCkKKysJICAgIHJl dHVybiAwOworKwkgIHMxKys7IHMyKys7CS8qIGFscmVhZHkgY2hlY2tlZCBjb252bGVuID49IGZp bGVuYW1lX2xlbiAqLworKwl9CisrICAgICAgd2hpbGUgKC0tbGVuICE9IDApOworKyAgICAgIHJl dHVybiAxOworKyAgICB9CisrICBlbHNlIGlmIChfcmxfY29tcGxldGlvbl9jYXNlX2ZvbGQpCisr ICAgIHsKKysgICAgICBpZiAoKF9ybF90b19sb3dlciAoY29udmZuWzBdKSA9PSBfcmxfdG9fbG93 ZXIgKGZpbGVuYW1lWzBdKSkgJiYKKysJICAoY29udmxlbiA+PSBmaWxlbmFtZV9sZW4pICYmCisr CSAgKF9ybF9zdHJuaWNtcCAoZmlsZW5hbWUsIGNvbnZmbiwgZmlsZW5hbWVfbGVuKSA9PSAwKSkK KysJcmV0dXJuIDE7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIGlmICgoY29udmZu WzBdID09IGZpbGVuYW1lWzBdKSAmJgorKwkgIChjb252bGVuID49IGZpbGVuYW1lX2xlbikgJiYK KysJICAoc3RybmNtcCAoZmlsZW5hbWUsIGNvbnZmbiwgZmlsZW5hbWVfbGVuKSA9PSAwKSkKKysJ cmV0dXJuIDE7CisrICAgIH0KKysgIHJldHVybiAwOworK30KKysKKyAvKiBPa2F5LCBub3cgd2Ug d3JpdGUgdGhlIGVudHJ5X2Z1bmN0aW9uIGZvciBmaWxlbmFtZSBjb21wbGV0aW9uLiAgSW4gdGhl CisgICAgZ2VuZXJhbCBjYXNlLiAgTm90ZSB0aGF0IGNvbXBsZXRpb24gaW4gdGhlIHNoZWxsIGlz IGEgbGl0dGxlIGRpZmZlcmVudAorICAgIGJlY2F1c2Ugb2YgYWxsIHRoZSBwYXRobmFtZXMgdGhh dCBtdXN0IGJlIGZvbGxvd2VkIHdoZW4gbG9va2luZyB1cCB0aGUKK0BAIC0xOTA5LDggKzIxNDgs OCBAQCBybF9maWxlbmFtZV9jb21wbGV0aW9uX2Z1bmN0aW9uICh0ZXh0LCBzdGF0ZSkKKyAgIHN0 YXRpYyBjaGFyICpkaXJuYW1lID0gKGNoYXIgKilOVUxMOworICAgc3RhdGljIGNoYXIgKnVzZXJz X2Rpcm5hbWUgPSAoY2hhciAqKU5VTEw7CisgICBzdGF0aWMgaW50IGZpbGVuYW1lX2xlbjsKKy0g IGNoYXIgKnRlbXA7CistICBpbnQgZGlybGVuOworKyAgY2hhciAqdGVtcCwgKmRlbnRyeSwgKmNv bnZmbjsKKysgIGludCBkaXJsZW4sIGRlbnRsZW4sIGNvbnZsZW47CisgICBzdHJ1Y3QgZGlyZW50 ICplbnRyeTsKKyAKKyAgIC8qIElmIHdlIGRvbid0IGhhdmUgYW55IHN0YXRlLCB0aGVuIGRvIHNv bWUgaW5pdGlhbGl6YXRpb24uICovCitAQCAtMTk2MSwyNiArMjIwMCw1MiBAQCBybF9maWxlbmFt ZV9jb21wbGV0aW9uX2Z1bmN0aW9uICh0ZXh0LCBzdGF0ZSkKKyAKKyAgICAgICAvKiBXZSBhcmVu J3QgZG9uZSB5ZXQuICBXZSBhbHNvIHN1cHBvcnQgdGhlICJ+dXNlciIgc3ludGF4LiAqLworIAor LSAgICAgIC8qIFNhdmUgdGhlIHZlcnNpb24gb2YgdGhlIGRpcmVjdG9yeSB0aGF0IHRoZSB1c2Vy IHR5cGVkLiAqLworLSAgICAgIHVzZXJzX2Rpcm5hbWUgPSBzYXZlc3RyaW5nIChkaXJuYW1lKTsK KysgICAgICAvKiBTYXZlIHRoZSB2ZXJzaW9uIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCB0aGUgdXNl ciB0eXBlZCwgZGVxdW90aW5nCisrCSBpdCBpZiBuZWNlc3NhcnkuICovCisrICAgICAgaWYgKHJs X2NvbXBsZXRpb25fZm91bmRfcXVvdGUgJiYgcmxfZmlsZW5hbWVfZGVxdW90aW5nX2Z1bmN0aW9u KQorKwl1c2Vyc19kaXJuYW1lID0gKCpybF9maWxlbmFtZV9kZXF1b3RpbmdfZnVuY3Rpb24pIChk aXJuYW1lLCBybF9jb21wbGV0aW9uX3F1b3RlX2NoYXJhY3Rlcik7CisrICAgICAgZWxzZQorKwl1 c2Vyc19kaXJuYW1lID0gc2F2ZXN0cmluZyAoZGlybmFtZSk7CisgCisgICAgICAgaWYgKCpkaXJu YW1lID09ICd+JykKKyAJeworIAkgIHRlbXAgPSB0aWxkZV9leHBhbmQgKGRpcm5hbWUpOworLQkg IGZyZWUgKGRpcm5hbWUpOworKwkgIHhmcmVlIChkaXJuYW1lKTsKKyAJICBkaXJuYW1lID0gdGVt cDsKKyAJfQorIAorKyAgICAgIC8qIFdlIGhhdmUgc2F2ZWQgdGhlIHBvc3NpYmx5LWRlcXVvdGVk IHZlcnNpb24gb2YgdGhlIGRpcmVjdG9yeSBuYW1lCisrCSB0aGUgdXNlciB0eXBlZC4gIE5vdyB0 cmFuc2Zvcm0gdGhlIGRpcmVjdG9yeSBuYW1lIHdlJ3JlIGdvaW5nIHRvCisrCSBwYXNzIHRvIG9w ZW5kaXIoMikuICBUaGUgZGlyZWN0b3J5IHJld3JpdGUgaG9vayBtb2RpZmllcyBvbmx5IHRoZQor KwkgZGlyZWN0b3J5IG5hbWU7IHRoZSBkaXJlY3RvcnkgY29tcGxldGlvbiBob29rIG1vZGlmaWVz IGJvdGggdGhlCisrCSBkaXJlY3RvcnkgbmFtZSBwYXNzZWQgdG8gb3BlbmRpcigyKSBhbmQgdGhl IHZlcnNpb24gdGhlIHVzZXIKKysJIHR5cGVkLiAgQm90aCB0aGUgZGlyZWN0b3J5IGNvbXBsZXRp b24gYW5kIHJld3JpdGUgaG9va3Mgc2hvdWxkIHBlcmZvcm0KKysJIGFueSBuZWNlc3NhcnkgZGVx dW90aW5nLiAgVGhlIGhvb2sgZnVuY3Rpb25zIHJldHVybiAxIGlmIHRoZXkgbW9kaWZ5CisrCSB0 aGUgZGlyZWN0b3J5IG5hbWUgYXJndW1lbnQuICBJZiBlaXRoZXIgaG9vayByZXR1cm5zIDAsIGl0 IHNob3VsZAorKwkgbm90IG1vZGlmeSB0aGUgZGlyZWN0b3J5IG5hbWUgcG9pbnRlciBwYXNzZWQg YXMgYW4gYXJndW1lbnQuICovCisgICAgICAgaWYgKHJsX2RpcmVjdG9yeV9yZXdyaXRlX2hvb2sp CisgCSgqcmxfZGlyZWN0b3J5X3Jld3JpdGVfaG9vaykgKCZkaXJuYW1lKTsKKy0KKy0gICAgICBp ZiAocmxfZGlyZWN0b3J5X2NvbXBsZXRpb25faG9vayAmJiAoKnJsX2RpcmVjdG9yeV9jb21wbGV0 aW9uX2hvb2spICgmZGlybmFtZSkpCisrICAgICAgZWxzZSBpZiAocmxfZGlyZWN0b3J5X2NvbXBs ZXRpb25faG9vayAmJiAoKnJsX2RpcmVjdG9yeV9jb21wbGV0aW9uX2hvb2spICgmZGlybmFtZSkp CisgCXsKKy0JICBmcmVlICh1c2Vyc19kaXJuYW1lKTsKKysJICB4ZnJlZSAodXNlcnNfZGlybmFt ZSk7CisgCSAgdXNlcnNfZGlybmFtZSA9IHNhdmVzdHJpbmcgKGRpcm5hbWUpOworIAl9CistCisr ICAgICAgZWxzZSBpZiAocmxfY29tcGxldGlvbl9mb3VuZF9xdW90ZSAmJiBybF9maWxlbmFtZV9k ZXF1b3RpbmdfZnVuY3Rpb24pCisrCXsKKysJICAvKiBkZWxldGUgc2luZ2xlIGFuZCBkb3VibGUg cXVvdGVzICovCisrCSAgeGZyZWUgKGRpcm5hbWUpOworKwkgIGRpcm5hbWUgPSBzYXZlc3RyaW5n ICh1c2Vyc19kaXJuYW1lKTsKKysJfQorICAgICAgIGRpcmVjdG9yeSA9IG9wZW5kaXIgKGRpcm5h bWUpOworKworKyAgICAgIC8qIE5vdyBkZXF1b3RlIGEgbm9uLW51bGwgZmlsZW5hbWUuICovCisr ICAgICAgaWYgKGZpbGVuYW1lICYmICpmaWxlbmFtZSAmJiBybF9jb21wbGV0aW9uX2ZvdW5kX3F1 b3RlICYmIHJsX2ZpbGVuYW1lX2RlcXVvdGluZ19mdW5jdGlvbikKKysJeworKwkgIC8qIGRlbGV0 ZSBzaW5nbGUgYW5kIGRvdWJsZSBxdW90ZXMgKi8KKysJICB0ZW1wID0gKCpybF9maWxlbmFtZV9k ZXF1b3RpbmdfZnVuY3Rpb24pIChmaWxlbmFtZSwgcmxfY29tcGxldGlvbl9xdW90ZV9jaGFyYWN0 ZXIpOworKwkgIHhmcmVlIChmaWxlbmFtZSk7CisrCSAgZmlsZW5hbWUgPSB0ZW1wOworKwl9Cisg ICAgICAgZmlsZW5hbWVfbGVuID0gc3RybGVuIChmaWxlbmFtZSk7CisgCisgICAgICAgcmxfZmls ZW5hbWVfY29tcGxldGlvbl9kZXNpcmVkID0gMTsKK0BAIC0xOTk3LDM3ICsyMjYyLDMxIEBAIHJs X2ZpbGVuYW1lX2NvbXBsZXRpb25fZnVuY3Rpb24gKHRleHQsIHN0YXRlKQorICAgZW50cnkgPSAo c3RydWN0IGRpcmVudCAqKU5VTEw7CisgICB3aGlsZSAoZGlyZWN0b3J5ICYmIChlbnRyeSA9IHJl YWRkaXIgKGRpcmVjdG9yeSkpKQorICAgICB7CisrICAgICAgY29udmZuID0gZGVudHJ5ID0gZW50 cnktPmRfbmFtZTsKKysgICAgICBjb252bGVuID0gZGVudGxlbiA9IERfTkFNTEVOIChlbnRyeSk7 CisrCisrICAgICAgaWYgKHJsX2ZpbGVuYW1lX3Jld3JpdGVfaG9vaykKKysJeworKwkgIGNvbnZm biA9ICgqcmxfZmlsZW5hbWVfcmV3cml0ZV9ob29rKSAoZGVudHJ5LCBkZW50bGVuKTsKKysJICBj b252bGVuID0gKGNvbnZmbiA9PSBkZW50cnkpID8gZGVudGxlbiA6IHN0cmxlbiAoY29udmZuKTsK KysJfQorKworICAgICAgIC8qIFNwZWNpYWwgY2FzZSBmb3Igbm8gZmlsZW5hbWUuICBJZiB0aGUg dXNlciBoYXMgZGlzYWJsZWQgdGhlCisgICAgICAgICAgYG1hdGNoLWhpZGRlbi1maWxlcycgdmFy aWFibGUsIHNraXAgZmlsZW5hbWVzIGJlZ2lubmluZyB3aXRoIGAuJy4KKyAJIEFsbCBvdGhlciBl bnRyaWVzIGV4Y2VwdCAiLiIgYW5kICIuLiIgbWF0Y2guICovCisgICAgICAgaWYgKGZpbGVuYW1l X2xlbiA9PSAwKQorIAl7CistCSAgaWYgKF9ybF9tYXRjaF9oaWRkZW5fZmlsZXMgPT0gMCAmJiBI SURERU5fRklMRSAoZW50cnktPmRfbmFtZSkpCisrCSAgaWYgKF9ybF9tYXRjaF9oaWRkZW5fZmls ZXMgPT0gMCAmJiBISURERU5fRklMRSAoY29udmZuKSkKKyAJICAgIGNvbnRpbnVlOworIAorLQkg IGlmIChlbnRyeS0+ZF9uYW1lWzBdICE9ICcuJyB8fAorLQkgICAgICAgKGVudHJ5LT5kX25hbWVb MV0gJiYKKy0JCSAoZW50cnktPmRfbmFtZVsxXSAhPSAnLicgfHwgZW50cnktPmRfbmFtZVsyXSkp KQorKwkgIGlmIChjb252Zm5bMF0gIT0gJy4nIHx8CisrCSAgICAgICAoY29udmZuWzFdICYmIChj b252Zm5bMV0gIT0gJy4nIHx8IGNvbnZmblsyXSkpKQorIAkgICAgYnJlYWs7CisgCX0KKyAgICAg ICBlbHNlCisgCXsKKy0JICAvKiBPdGhlcndpc2UsIGlmIHRoZXNlIG1hdGNoIHVwIHRvIHRoZSBs ZW5ndGggb2YgZmlsZW5hbWUsIHRoZW4KKy0JICAgICBpdCBpcyBhIG1hdGNoLiAqLworLQkgIGlm IChfcmxfY29tcGxldGlvbl9jYXNlX2ZvbGQpCistCSAgICB7CistCSAgICAgIGlmICgoX3JsX3Rv X2xvd2VyIChlbnRyeS0+ZF9uYW1lWzBdKSA9PSBfcmxfdG9fbG93ZXIgKGZpbGVuYW1lWzBdKSkg JiYKKy0JCSAgKCgoaW50KURfTkFNTEVOIChlbnRyeSkpID49IGZpbGVuYW1lX2xlbikgJiYKKy0J CSAgKF9ybF9zdHJuaWNtcCAoZmlsZW5hbWUsIGVudHJ5LT5kX25hbWUsIGZpbGVuYW1lX2xlbikg PT0gMCkpCistCQlicmVhazsKKy0JICAgIH0KKy0JICBlbHNlCistCSAgICB7CistCSAgICAgIGlm ICgoZW50cnktPmRfbmFtZVswXSA9PSBmaWxlbmFtZVswXSkgJiYKKy0JCSAgKCgoaW50KURfTkFN TEVOIChlbnRyeSkpID49IGZpbGVuYW1lX2xlbikgJiYKKy0JCSAgKHN0cm5jbXAgKGZpbGVuYW1l LCBlbnRyeS0+ZF9uYW1lLCBmaWxlbmFtZV9sZW4pID09IDApKQorLQkJYnJlYWs7CistCSAgICB9 CisrCSAgaWYgKGNvbXBsZXRlX2ZuY21wIChjb252Zm4sIGNvbnZsZW4sIGZpbGVuYW1lLCBmaWxl bmFtZV9sZW4pKQorKwkgICAgYnJlYWs7CisgCX0KKyAgICAgfQorIAorQEAgLTIwNDAsMTcgKzIy OTksMTcgQEAgcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbiAodGV4dCwgc3RhdGUpCisg CX0KKyAgICAgICBpZiAoZGlybmFtZSkKKyAJeworLQkgIGZyZWUgKGRpcm5hbWUpOworKwkgIHhm cmVlIChkaXJuYW1lKTsKKyAJICBkaXJuYW1lID0gKGNoYXIgKilOVUxMOworIAl9CisgICAgICAg aWYgKGZpbGVuYW1lKQorIAl7CistCSAgZnJlZSAoZmlsZW5hbWUpOworKwkgIHhmcmVlIChmaWxl bmFtZSk7CisgCSAgZmlsZW5hbWUgPSAoY2hhciAqKU5VTEw7CisgCX0KKyAgICAgICBpZiAodXNl cnNfZGlybmFtZSkKKyAJeworLQkgIGZyZWUgKHVzZXJzX2Rpcm5hbWUpOworKwkgIHhmcmVlICh1 c2Vyc19kaXJuYW1lKTsKKyAJICB1c2Vyc19kaXJuYW1lID0gKGNoYXIgKilOVUxMOworIAl9Cisg CitAQCAtMjA4NCwyNyArMjM0MywzMCBAQCBybF9maWxlbmFtZV9jb21wbGV0aW9uX2Z1bmN0aW9u ICh0ZXh0LCBzdGF0ZSkKKyAJCXRlbXBbZGlybGVuKytdID0gJy8nOworIAkgICAgfQorIAorLQkg IHN0cmNweSAodGVtcCArIGRpcmxlbiwgZW50cnktPmRfbmFtZSk7CisrCSAgc3RyY3B5ICh0ZW1w ICsgZGlybGVuLCBjb252Zm4pOworIAl9CisgICAgICAgZWxzZQorLQl0ZW1wID0gc2F2ZXN0cmlu ZyAoZW50cnktPmRfbmFtZSk7CisrCXRlbXAgPSBzYXZlc3RyaW5nIChjb252Zm4pOworKworKyAg ICAgIGlmIChjb252Zm4gIT0gZGVudHJ5KQorKwl4ZnJlZSAoY29udmZuKTsKKyAKKyAgICAgICBy ZXR1cm4gKHRlbXApOworICAgICB9CisgfQorIAorIC8qIEFuIGluaXRpYWwgaW1wbGVtZW50YXRp b24gb2YgYSBtZW51IGNvbXBsZXRpb24gZnVuY3Rpb24gYSBsYSB0Y3NoLiAgVGhlCistICAgZmly c3QgdGltZSAoaWYgdGhlIGxhc3QgcmVhZGxpbmUgY29tbWFuZCB3YXMgbm90IHJsX21lbnVfY29t cGxldGUpLCB3ZQorKyAgIGZpcnN0IHRpbWUgKGlmIHRoZSBsYXN0IHJlYWRsaW5lIGNvbW1hbmQg d2FzIG5vdCBybF9vbGRfbWVudV9jb21wbGV0ZSksIHdlCisgICAgZ2VuZXJhdGUgdGhlIGxpc3Qg b2YgbWF0Y2hlcy4gIFRoaXMgY29kZSBpcyB2ZXJ5IHNpbWlsYXIgdG8gdGhlIGNvZGUgaW4KKyAg ICBybF9jb21wbGV0ZV9pbnRlcm5hbCAtLSB0aGVyZSBzaG91bGQgYmUgYSB3YXkgdG8gY29tYmlu ZSB0aGUgdHdvLiAgVGhlbiwKKyAgICBmb3IgZWFjaCBpdGVtIGluIHRoZSBsaXN0IG9mIG1hdGNo ZXMsIHdlIGluc2VydCB0aGUgbWF0Y2ggaW4gYW4gdW5kb2FibGUKKyAgICBmYXNoaW9uLCB3aXRo IHRoZSBhcHByb3ByaWF0ZSBjaGFyYWN0ZXIgYXBwZW5kZWQgKHRoaXMgaGFwcGVucyBvbiB0aGUK Ky0gICBzZWNvbmQgYW5kIHN1YnNlcXVlbnQgY29uc2VjdXRpdmUgY2FsbHMgdG8gcmxfbWVudV9j b21wbGV0ZSkuICBXaGVuIHdlCisrICAgc2Vjb25kIGFuZCBzdWJzZXF1ZW50IGNvbnNlY3V0aXZl IGNhbGxzIHRvIHJsX29sZF9tZW51X2NvbXBsZXRlKS4gIFdoZW4gd2UKKyAgICBoaXQgdGhlIGVu ZCBvZiB0aGUgbWF0Y2ggbGlzdCwgd2UgcmVzdG9yZSB0aGUgb3JpZ2luYWwgdW5tYXRjaGVkIHRl eHQsCisgICAgcmluZyB0aGUgYmVsbCwgYW5kIHJlc2V0IHRoZSBjb3VudGVyIHRvIHplcm8uICov CisgaW50CistcmxfbWVudV9jb21wbGV0ZSAoY291bnQsIGlnbm9yZSkKKy0gICAgIGludCBjb3Vu dCwgaWdub3JlOworK3JsX29sZF9tZW51X2NvbXBsZXRlIChjb3VudCwgaW52b2tpbmdfa2V5KQor KyAgICAgaW50IGNvdW50LCBpbnZva2luZ19rZXk7CisgeworICAgcmxfY29tcGVudHJ5X2Z1bmNf dCAqb3VyX2Z1bmM7CisgICBpbnQgbWF0Y2hpbmdfZmlsZW5hbWVzLCBmb3VuZF9xdW90ZTsKK0BA IC0yMTE5LDcgKzIzODEsNyBAQCBybF9tZW51X2NvbXBsZXRlIChjb3VudCwgaWdub3JlKQorIAor ICAgLyogVGhlIGZpcnN0IHRpbWUgdGhyb3VnaCwgd2UgZ2VuZXJhdGUgdGhlIGxpc3Qgb2YgbWF0 Y2hlcyBhbmQgc2V0IHRoaW5ncworICAgICAgdXAgdG8gaW5zZXJ0IHRoZW0uICovCistICBpZiAo cmxfbGFzdF9mdW5jICE9IHJsX21lbnVfY29tcGxldGUpCisrICBpZiAocmxfbGFzdF9mdW5jICE9 IHJsX29sZF9tZW51X2NvbXBsZXRlKQorICAgICB7CisgICAgICAgLyogQ2xlYW4gdXAgZnJvbSBw cmV2aW91cyBjYWxsLCBpZiBhbnkuICovCisgICAgICAgRlJFRSAob3JpZ190ZXh0KTsKK0BAIC0y MTI5LDEwICsyMzkxLDE2IEBAIHJsX21lbnVfY29tcGxldGUgKGNvdW50LCBpZ25vcmUpCisgICAg ICAgbWF0Y2hfbGlzdF9pbmRleCA9IG1hdGNoX2xpc3Rfc2l6ZSA9IDA7CisgICAgICAgbWF0Y2hl cyA9IChjaGFyICoqKU5VTEw7CisgCisrICAgICAgcmxfY29tcGxldGlvbl9pbnZva2luZ19rZXkg PSBpbnZva2luZ19rZXk7CisrCisrICAgICAgUkxfU0VUU1RBVEUoUkxfU1RBVEVfQ09NUExFVElO Ryk7CisrCisgICAgICAgLyogT25seSB0aGUgY29tcGxldGlvbiBlbnRyeSBmdW5jdGlvbiBjYW4g Y2hhbmdlIHRoZXNlLiAqLworICAgICAgIHNldF9jb21wbGV0aW9uX2RlZmF1bHRzICgnJScpOwor IAorLSAgICAgIG91cl9mdW5jID0gcmxfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlvbgorKyAgICAg IG91cl9mdW5jID0gcmxfbWVudV9jb21wbGV0aW9uX2VudHJ5X2Z1bmN0aW9uOworKyAgICAgIGlm IChvdXJfZnVuYyA9PSAwKQorKwlvdXJfZnVuYyA9IHJsX2NvbXBsZXRpb25fZW50cnlfZnVuY3Rp b24KKyAJCQk/IHJsX2NvbXBsZXRpb25fZW50cnlfZnVuY3Rpb24KKyAJCQk6IHJsX2ZpbGVuYW1l X2NvbXBsZXRpb25fZnVuY3Rpb247CisgCitAQCAtMjE2MCwxOSArMjQyOCwyNSBAQCBybF9tZW51 X2NvbXBsZXRlIChjb3VudCwgaWdub3JlKQorIAorICAgICAgIGlmIChtYXRjaGVzID09IDAgfHwg cG9zdHByb2Nlc3NfbWF0Y2hlcyAoJm1hdGNoZXMsIG1hdGNoaW5nX2ZpbGVuYW1lcykgPT0gMCkK KyAJeworLSAgICAJICBybF9kaW5nICgpOworKwkgIHJsX2RpbmcgKCk7CisgCSAgRlJFRSAobWF0 Y2hlcyk7CisgCSAgbWF0Y2hlcyA9IChjaGFyICoqKTA7CisgCSAgRlJFRSAob3JpZ190ZXh0KTsK KyAJICBvcmlnX3RleHQgPSAoY2hhciAqKTA7CistICAgIAkgIGNvbXBsZXRpb25fY2hhbmdlZF9i dWZmZXIgPSAwOworLSAgICAgICAgICByZXR1cm4gKDApOworKwkgIGNvbXBsZXRpb25fY2hhbmdl ZF9idWZmZXIgPSAwOworKwkgIFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfQ09NUExFVElORyk7Cisr CSAgcmV0dXJuICgwKTsKKyAJfQorIAorKyAgICAgIFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfQ09N UExFVElORyk7CisrCisgICAgICAgZm9yIChtYXRjaF9saXN0X3NpemUgPSAwOyBtYXRjaGVzW21h dGNoX2xpc3Rfc2l6ZV07IG1hdGNoX2xpc3Rfc2l6ZSsrKQorICAgICAgICAgOworICAgICAgIC8q IG1hdGNoZXNbMF0gaXMgbGNkIGlmIG1hdGNoX2xpc3Rfc2l6ZSA+IDEsIGJ1dCB0aGUgY2lyY3Vs YXIgYnVmZmVyCisgCSBjb2RlIGJlbG93IHNob3VsZCB0YWtlIGNhcmUgb2YgaXQuICovCisrCisr ICAgICAgaWYgKG1hdGNoX2xpc3Rfc2l6ZSA+IDEgJiYgX3JsX2NvbXBsZXRlX3Nob3dfYWxsKQor KwlkaXNwbGF5X21hdGNoZXMgKG1hdGNoZXMpOworICAgICB9CisgCisgICAvKiBOb3cgd2UgaGF2 ZSB0aGUgbGlzdCBvZiBtYXRjaGVzLiAgUmVwbGFjZSB0aGUgdGV4dCBiZXR3ZWVuCitAQCAtMjE5 MCw3ICsyNDY0LDEwIEBAIHJsX21lbnVfY29tcGxldGUgKGNvdW50LCBpZ25vcmUpCisgCisgICBt YXRjaF9saXN0X2luZGV4ICs9IGNvdW50OworICAgaWYgKG1hdGNoX2xpc3RfaW5kZXggPCAwKQor LSAgICBtYXRjaF9saXN0X2luZGV4ICs9IG1hdGNoX2xpc3Rfc2l6ZTsKKysgICAgeworKyAgICAg IHdoaWxlIChtYXRjaF9saXN0X2luZGV4IDwgMCkKKysJbWF0Y2hfbGlzdF9pbmRleCArPSBtYXRj aF9saXN0X3NpemU7CisrICAgIH0KKyAgIGVsc2UKKyAgICAgbWF0Y2hfbGlzdF9pbmRleCAlPSBt YXRjaF9saXN0X3NpemU7CisgCitAQCAtMjIwOSwzICsyNDg2LDE4MCBAQCBybF9tZW51X2NvbXBs ZXRlIChjb3VudCwgaWdub3JlKQorICAgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IDE7Cisg ICByZXR1cm4gKDApOworIH0KKysKKytpbnQKKytybF9tZW51X2NvbXBsZXRlIChjb3VudCwgaWdu b3JlKQorKyAgICAgaW50IGNvdW50LCBpZ25vcmU7CisreworKyAgcmxfY29tcGVudHJ5X2Z1bmNf dCAqb3VyX2Z1bmM7CisrICBpbnQgbWF0Y2hpbmdfZmlsZW5hbWVzLCBmb3VuZF9xdW90ZTsKKysK KysgIHN0YXRpYyBjaGFyICpvcmlnX3RleHQ7CisrICBzdGF0aWMgY2hhciAqKm1hdGNoZXMgPSAo Y2hhciAqKikwOworKyAgc3RhdGljIGludCBtYXRjaF9saXN0X2luZGV4ID0gMDsKKysgIHN0YXRp YyBpbnQgbWF0Y2hfbGlzdF9zaXplID0gMDsKKysgIHN0YXRpYyBpbnQgbm9udHJpdmlhbF9sY2Qg PSAwOworKyAgc3RhdGljIGludCBmdWxsX2NvbXBsZXRpb24gPSAwOwkvKiBzZXQgdG8gMSBpZiBt ZW51IGNvbXBsZXRpb24gc2hvdWxkIHJlaW5pdGlhbGl6ZSBvbiBuZXh0IGNhbGwgKi8KKysgIHN0 YXRpYyBpbnQgb3JpZ19zdGFydCwgb3JpZ19lbmQ7CisrICBzdGF0aWMgY2hhciBxdW90ZV9jaGFy OworKyAgc3RhdGljIGludCBkZWxpbWl0ZXIsIGNzdGF0ZTsKKysKKysgIC8qIFRoZSBmaXJzdCB0 aW1lIHRocm91Z2gsIHdlIGdlbmVyYXRlIHRoZSBsaXN0IG9mIG1hdGNoZXMgYW5kIHNldCB0aGlu Z3MKKysgICAgIHVwIHRvIGluc2VydCB0aGVtLiAqLworKyAgaWYgKChybF9sYXN0X2Z1bmMgIT0g cmxfbWVudV9jb21wbGV0ZSAmJiBybF9sYXN0X2Z1bmMgIT0gcmxfYmFja3dhcmRfbWVudV9jb21w bGV0ZSkgfHwgZnVsbF9jb21wbGV0aW9uKQorKyAgICB7CisrICAgICAgLyogQ2xlYW4gdXAgZnJv bSBwcmV2aW91cyBjYWxsLCBpZiBhbnkuICovCisrICAgICAgRlJFRSAob3JpZ190ZXh0KTsKKysg ICAgICBpZiAobWF0Y2hlcykKKysJX3JsX2ZyZWVfbWF0Y2hfbGlzdCAobWF0Y2hlcyk7CisrCisr ICAgICAgbWF0Y2hfbGlzdF9pbmRleCA9IG1hdGNoX2xpc3Rfc2l6ZSA9IDA7CisrICAgICAgbWF0 Y2hlcyA9IChjaGFyICoqKU5VTEw7CisrCisrICAgICAgZnVsbF9jb21wbGV0aW9uID0gMDsKKysK KysgICAgICBSTF9TRVRTVEFURShSTF9TVEFURV9DT01QTEVUSU5HKTsKKysKKysgICAgICAvKiBP bmx5IHRoZSBjb21wbGV0aW9uIGVudHJ5IGZ1bmN0aW9uIGNhbiBjaGFuZ2UgdGhlc2UuICovCisr ICAgICAgc2V0X2NvbXBsZXRpb25fZGVmYXVsdHMgKCclJyk7CisrCisrICAgICAgb3VyX2Z1bmMg PSBybF9tZW51X2NvbXBsZXRpb25fZW50cnlfZnVuY3Rpb247CisrICAgICAgaWYgKG91cl9mdW5j ID09IDApCisrCW91cl9mdW5jID0gcmxfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlvbgorKwkJCT8g cmxfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlvbgorKwkJCTogcmxfZmlsZW5hbWVfY29tcGxldGlv bl9mdW5jdGlvbjsKKysKKysgICAgICAvKiBXZSBub3cgbG9vayBiYWNrd2FyZHMgZm9yIHRoZSBz dGFydCBvZiBhIGZpbGVuYW1lL3ZhcmlhYmxlIHdvcmQuICovCisrICAgICAgb3JpZ19lbmQgPSBy bF9wb2ludDsKKysgICAgICBmb3VuZF9xdW90ZSA9IGRlbGltaXRlciA9IDA7CisrICAgICAgcXVv dGVfY2hhciA9ICdcMCc7CisrCisrICAgICAgaWYgKHJsX3BvaW50KQorKwkvKiBUaGlzIChwb3Nz aWJseSkgY2hhbmdlcyBybF9wb2ludC4gIElmIGl0IHJldHVybnMgYSBub24temVybyBjaGFyLAor KwkgICB3ZSBrbm93IHdlIGhhdmUgYW4gb3BlbiBxdW90ZS4gKi8KKysJcXVvdGVfY2hhciA9IF9y bF9maW5kX2NvbXBsZXRpb25fd29yZCAoJmZvdW5kX3F1b3RlLCAmZGVsaW1pdGVyKTsKKysKKysg ICAgICBvcmlnX3N0YXJ0ID0gcmxfcG9pbnQ7CisrICAgICAgcmxfcG9pbnQgPSBvcmlnX2VuZDsK KysKKysgICAgICBvcmlnX3RleHQgPSBybF9jb3B5X3RleHQgKG9yaWdfc3RhcnQsIG9yaWdfZW5k KTsKKysgICAgICBtYXRjaGVzID0gZ2VuX2NvbXBsZXRpb25fbWF0Y2hlcyAob3JpZ190ZXh0LCBv cmlnX3N0YXJ0LCBvcmlnX2VuZCwKKysJCQkJCW91cl9mdW5jLCBmb3VuZF9xdW90ZSwgcXVvdGVf Y2hhcik7CisrCisrICAgICAgbm9udHJpdmlhbF9sY2QgPSBtYXRjaGVzICYmIHN0cmNtcCAob3Jp Z190ZXh0LCBtYXRjaGVzWzBdKSAhPSAwOworKworKyAgICAgIC8qIElmIHdlIGFyZSBtYXRjaGlu ZyBmaWxlbmFtZXMsIHRoZSBhdHRlbXB0ZWQgY29tcGxldGlvbiBmdW5jdGlvbiB3aWxsCisrCSBo YXZlIHNldCBybF9maWxlbmFtZV9jb21wbGV0aW9uX2Rlc2lyZWQgdG8gYSBub24temVybyB2YWx1 ZS4gIFRoZSBiYXNpYworKwkgcmxfZmlsZW5hbWVfY29tcGxldGlvbl9mdW5jdGlvbiBkb2VzIHRo aXMuICovCisrICAgICAgbWF0Y2hpbmdfZmlsZW5hbWVzID0gcmxfZmlsZW5hbWVfY29tcGxldGlv bl9kZXNpcmVkOworKworKyAgICAgIGlmIChtYXRjaGVzID09IDAgfHwgcG9zdHByb2Nlc3NfbWF0 Y2hlcyAoJm1hdGNoZXMsIG1hdGNoaW5nX2ZpbGVuYW1lcykgPT0gMCkKKysJeworKwkgIHJsX2Rp bmcgKCk7CisrCSAgRlJFRSAobWF0Y2hlcyk7CisrCSAgbWF0Y2hlcyA9IChjaGFyICoqKTA7Cisr CSAgRlJFRSAob3JpZ190ZXh0KTsKKysJICBvcmlnX3RleHQgPSAoY2hhciAqKTA7CisrCSAgY29t cGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IDA7CisrCSAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9D T01QTEVUSU5HKTsKKysJICByZXR1cm4gKDApOworKwl9CisrCisrICAgICAgUkxfVU5TRVRTVEFU RShSTF9TVEFURV9DT01QTEVUSU5HKTsKKysKKysgICAgICBmb3IgKG1hdGNoX2xpc3Rfc2l6ZSA9 IDA7IG1hdGNoZXNbbWF0Y2hfbGlzdF9zaXplXTsgbWF0Y2hfbGlzdF9zaXplKyspCisrICAgICAg ICA7CisrCisrICAgICAgaWYgKG1hdGNoX2xpc3Rfc2l6ZSA9PSAwKSAKKysJeworKwkgIHJsX2Rp bmcgKCk7CisrCSAgRlJFRSAobWF0Y2hlcyk7CisrCSAgbWF0Y2hlcyA9IChjaGFyICoqKTA7Cisr CSAgbWF0Y2hfbGlzdF9pbmRleCA9IDA7CisrCSAgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9 IDA7CisrCSAgcmV0dXJuICgwKTsKKysgICAgICAgIH0KKysKKysgICAgICAvKiBtYXRjaGVzWzBd IGlzIGxjZCBpZiBtYXRjaF9saXN0X3NpemUgPiAxLCBidXQgdGhlIGNpcmN1bGFyIGJ1ZmZlcgor KwkgY29kZSBiZWxvdyBzaG91bGQgdGFrZSBjYXJlIG9mIGl0LiAqLworKyAgICAgIGlmICgqbWF0 Y2hlc1swXSkKKysJeworKwkgIGluc2VydF9tYXRjaCAobWF0Y2hlc1swXSwgb3JpZ19zdGFydCwg bWF0Y2hlc1sxXSA/IE1VTFRfTUFUQ0ggOiBTSU5HTEVfTUFUQ0gsICZxdW90ZV9jaGFyKTsKKysJ ICBvcmlnX2VuZCA9IG9yaWdfc3RhcnQgKyBzdHJsZW4gKG1hdGNoZXNbMF0pOworKwkgIGNvbXBs ZXRpb25fY2hhbmdlZF9idWZmZXIgPSBTVFJFUSAob3JpZ190ZXh0LCBtYXRjaGVzWzBdKSA9PSAw OworKwl9CisrCisrICAgICAgaWYgKG1hdGNoX2xpc3Rfc2l6ZSA+IDEgJiYgX3JsX2NvbXBsZXRl X3Nob3dfYWxsKQorKwl7CisrCSAgZGlzcGxheV9tYXRjaGVzIChtYXRjaGVzKTsKKysJICAvKiBJ ZiB0aGVyZSBhcmUgc28gbWFueSBtYXRjaGVzIHRoYXQgdGhlIHVzZXIgaGFzIHRvIGJlIGFza2Vk CisrCSAgICAgd2hldGhlciBvciBub3QgaGUgd2FudHMgdG8gc2VlIHRoZSBtYXRjaGVzLCBtZW51 IGNvbXBsZXRpb24KKysJICAgICBpcyB1bndpZWxkeS4gKi8KKysJICBpZiAocmxfY29tcGxldGlv bl9xdWVyeV9pdGVtcyA+IDAgJiYgbWF0Y2hfbGlzdF9zaXplID49IHJsX2NvbXBsZXRpb25fcXVl cnlfaXRlbXMpCisrCSAgICB7CisrCSAgICAgIHJsX2RpbmcgKCk7CisrCSAgICAgIEZSRUUgKG1h dGNoZXMpOworKwkgICAgICBtYXRjaGVzID0gKGNoYXIgKiopMDsKKysJICAgICAgZnVsbF9jb21w bGV0aW9uID0gMTsKKysJICAgICAgcmV0dXJuICgwKTsKKysJICAgIH0KKysJfQorKyAgICAgIGVs c2UgaWYgKG1hdGNoX2xpc3Rfc2l6ZSA8PSAxKQorKwl7CisrCSAgYXBwZW5kX3RvX21hdGNoICht YXRjaGVzWzBdLCBkZWxpbWl0ZXIsIHF1b3RlX2NoYXIsIG5vbnRyaXZpYWxfbGNkKTsKKysJICBm dWxsX2NvbXBsZXRpb24gPSAxOworKwkgIHJldHVybiAoMCk7CisrCX0KKysgICAgICBlbHNlIGlm IChfcmxfbWVudV9jb21wbGV0ZV9wcmVmaXhfZmlyc3QgJiYgbWF0Y2hfbGlzdF9zaXplID4gMSkK KysJeworKwkgIHJsX2RpbmcgKCk7CisrCSAgcmV0dXJuICgwKTsKKysJfQorKyAgICB9CisrCisr ICAvKiBOb3cgd2UgaGF2ZSB0aGUgbGlzdCBvZiBtYXRjaGVzLiAgUmVwbGFjZSB0aGUgdGV4dCBi ZXR3ZWVuCisrICAgICBybF9saW5lX2J1ZmZlcltvcmlnX3N0YXJ0XSBhbmQgcmxfbGluZV9idWZm ZXJbcmxfcG9pbnRdIHdpdGgKKysgICAgIG1hdGNoZXNbbWF0Y2hfbGlzdF9pbmRleF0sIGFuZCBh ZGQgYW55IG5lY2Vzc2FyeSBjbG9zaW5nIGNoYXIuICovCisrCisrICBpZiAobWF0Y2hlcyA9PSAw IHx8IG1hdGNoX2xpc3Rfc2l6ZSA9PSAwKSAKKysgICAgeworKyAgICAgIHJsX2RpbmcgKCk7Cisr ICAgICAgRlJFRSAobWF0Y2hlcyk7CisrICAgICAgbWF0Y2hlcyA9IChjaGFyICoqKTA7CisrICAg ICAgY29tcGxldGlvbl9jaGFuZ2VkX2J1ZmZlciA9IDA7CisrICAgICAgcmV0dXJuICgwKTsKKysg ICAgfQorKworKyAgbWF0Y2hfbGlzdF9pbmRleCArPSBjb3VudDsKKysgIGlmIChtYXRjaF9saXN0 X2luZGV4IDwgMCkKKysgICAgeworKyAgICAgIHdoaWxlIChtYXRjaF9saXN0X2luZGV4IDwgMCkK KysJbWF0Y2hfbGlzdF9pbmRleCArPSBtYXRjaF9saXN0X3NpemU7CisrICAgIH0KKysgIGVsc2UK KysgICAgbWF0Y2hfbGlzdF9pbmRleCAlPSBtYXRjaF9saXN0X3NpemU7CisrCisrICBpZiAobWF0 Y2hfbGlzdF9pbmRleCA9PSAwICYmIG1hdGNoX2xpc3Rfc2l6ZSA+IDEpCisrICAgIHsKKysgICAg ICBybF9kaW5nICgpOworKyAgICAgIGluc2VydF9tYXRjaCAobWF0Y2hlc1swXSwgb3JpZ19zdGFy dCwgTVVMVF9NQVRDSCwgJnF1b3RlX2NoYXIpOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysg ICAgICBpbnNlcnRfbWF0Y2ggKG1hdGNoZXNbbWF0Y2hfbGlzdF9pbmRleF0sIG9yaWdfc3RhcnQs IFNJTkdMRV9NQVRDSCwgJnF1b3RlX2NoYXIpOworKyAgICAgIGFwcGVuZF90b19tYXRjaCAobWF0 Y2hlc1ttYXRjaF9saXN0X2luZGV4XSwgZGVsaW1pdGVyLCBxdW90ZV9jaGFyLAorKwkJICAgICAg IHN0cmNtcCAob3JpZ190ZXh0LCBtYXRjaGVzW21hdGNoX2xpc3RfaW5kZXhdKSk7CisrICAgIH0K KysKKysgIGNvbXBsZXRpb25fY2hhbmdlZF9idWZmZXIgPSAxOworKyAgcmV0dXJuICgwKTsKKyt9 CisrCisraW50CisrcmxfYmFja3dhcmRfbWVudV9jb21wbGV0ZSAoY291bnQsIGtleSkKKysgICAg IGludCBjb3VudCwga2V5OworK3sKKysgIC8qIFBvc2l0aXZlIGFyZ3VtZW50cyB0byBiYWNrd2Fy ZC1tZW51LWNvbXBsZXRlIHRyYW5zbGF0ZSBpbnRvIG5lZ2F0aXZlCisrICAgICBhcmd1bWVudHMg Zm9yIG1lbnUtY29tcGxldGUsIGFuZCB2aWNlIHZlcnNhLiAqLworKyAgcmV0dXJuIChybF9tZW51 X2NvbXBsZXRlICgtY291bnQsIGtleSkpOworK30KKy0tLSBhL3JlYWRsaW5lL2NvbmZpZy5oLmlu CisrKysgYi9yZWFkbGluZS9jb25maWcuaC5pbgorQEAgLTQsNiArNCw4IEBACisgICAgY2hhcmFj dGVycywgZXZlbiBpZiB0aGUgT1Mgc3VwcG9ydHMgdGhlbS4gKi8KKyAjdW5kZWYgTk9fTVVMVElC WVRFX1NVUFBPUlQKKyAKKysjdW5kZWYgX0ZJTEVfT0ZGU0VUX0JJVFMKKysKKyAvKiBEZWZpbmUg aWYgb24gTUlOSVguICAqLworICN1bmRlZiBfTUlOSVgKKyAKK0BAIC0xMywxMiArMTUsMTYgQEAK KyAjdW5kZWYgVk9JRF9TSUdIQU5ETEVSCisgCisgLyogQ2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBj b21waWxlci4gKi8KKy0jdW5kZWYgY29uc3QKKysjdW5kZWYgc2lnX2F0b21pY190CisgCisgI3Vu ZGVmIHNpemVfdAorIAorICN1bmRlZiBzc2l6ZV90CisgCisrI3VuZGVmIGNvbnN0CisrCisrI3Vu ZGVmIHZvbGF0aWxlCisrCisgI3VuZGVmIFBST1RPVFlQRVMKKyAKKyAjdW5kZWYgX19DSEFSX1VO U0lHTkVEX18KK0BAIC00MSw2ICs0NywxNSBAQAorIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUg aXNhc2NpaSBmdW5jdGlvbi4gKi8KKyAjdW5kZWYgSEFWRV9JU0FTQ0lJCisgCisrLyogRGVmaW5l IGlmIHlvdSBoYXZlIHRoZSBpc3djdHlwZSBmdW5jdGlvbi4gICovCisrI3VuZGVmIEhBVkVfSVNX Q1RZUEUKKysKKysvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGlzd2xvd2VyIGZ1bmN0aW9uLiAg Ki8KKysjdW5kZWYgSEFWRV9JU1dMT1dFUgorKworKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUg aXN3dXBwZXIgZnVuY3Rpb24uICAqLworKyN1bmRlZiBIQVZFX0lTV1VQUEVSCisrCisgLyogRGVm aW5lIGlmIHlvdSBoYXZlIHRoZSBpc3hkaWdpdCBmdW5jdGlvbi4gKi8KKyAjdW5kZWYgSEFWRV9J U1hESUdJVAorIAorQEAgLTg4LDExICsxMDMsMjMgQEAKKyAvKiBEZWZpbmUgaWYgeW91IGhhdmUg dGhlIHRjZ2V0YXR0ciBmdW5jdGlvbi4gICovCisgI3VuZGVmIEhBVkVfVENHRVRBVFRSCisgCisr LyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB0b3dsb3dlciBmdW5jdGlvbi4gICovCisrI3VuZGVm IEhBVkVfVE9XTE9XRVIKKysKKysvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHRvd3VwcGVyIGZ1 bmN0aW9uLiAgKi8KKysjdW5kZWYgSEFWRV9UT1dVUFBFUgorKworIC8qIERlZmluZSBpZiB5b3Ug aGF2ZSB0aGUgdnNucHJpbnRmIGZ1bmN0aW9uLiAgKi8KKyAjdW5kZWYgSEFWRV9WU05QUklOVEYK KyAKKy0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHdjdG9tYiBmdW5jdGlvbi4gICovCistI3Vu ZGVmIEhBVkVfV0NUT01CIAorKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgd2NydG9tYiBmdW5j dGlvbi4gICovCisrI3VuZGVmIEhBVkVfV0NSVE9NQiAKKysKKysvKiBEZWZpbmUgaWYgeW91IGhh dmUgdGhlIHdjc2NvbGwgZnVuY3Rpb24uICAqLworKyN1bmRlZiBIQVZFX1dDU0NPTEwKKysKKysv KiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHdjdHlwZSBmdW5jdGlvbi4gICovCisrI3VuZGVmIEhB VkVfV0NUWVBFCisgCisgLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSB3Y3dpZHRoIGZ1bmN0aW9u LiAgKi8KKyAjdW5kZWYgSEFWRV9XQ1dJRFRICitAQCAtMTc0LDExICsyMDEsMjAgQEAKKyAvKiBE ZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx3Y2hhci5oPiBoZWFkZXIgZmlsZS4gICovCisgI3VuZGVm IEhBVkVfV0NIQVJfSAorIAorLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHZhcmFyZ3MuaD4g aGVhZGVyIGZpbGUuICAqLworKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHdjdHlwZS5oPiBo ZWFkZXIgZmlsZS4gICovCisgI3VuZGVmIEhBVkVfV0NUWVBFX0gKKyAKKyAjdW5kZWYgSEFWRV9N QlNUQVRFX1QKKyAKKysvKiBEZWZpbmUgaWYgeW91IGhhdmUgd2NoYXJfdCBpbiA8d2N0eXBlLmg+ LiAqLworKyN1bmRlZiBIQVZFX1dDSEFSX1QgCisrCisrLyogRGVmaW5lIGlmIHlvdSBoYXZlIHdj dHlwZV90IGluIDx3Y3R5cGUuaD4uICovCisrI3VuZGVmIEhBVkVfV0NUWVBFX1QKKysKKysvKiBE ZWZpbmUgaWYgeW91IGhhdmUgd2ludF90IGluIDx3Y3R5cGUuaD4uICovICAKKysjdW5kZWYgSEFW RV9XSU5UX1QgIAorKworIC8qIERlZmluZSBpZiB5b3UgaGF2ZSA8bGFuZ2luZm8uaD4gYW5kIG5s X2xhbmdpbmZvKENPREVTRVQpLiAqLworICN1bmRlZiBIQVZFX0xBTkdJTkZPX0NPREVTRVQKKyAK K0BAIC0yMjMsMTAgKzI1OSw2IEBACisgIyAgZGVmaW5lIFRFUk1JT1NfTUlTU0lORworICNlbmRp ZgorIAorLSNpZiBkZWZpbmVkIChTVFJDT0xMX0JST0tFTikKKy0jICB1bmRlZiBIQVZFX1NUUkNP TEwKKy0jZW5kaWYKKy0KKyAjaWYgZGVmaW5lZCAoX19TVERDX18pICYmIGRlZmluZWQgKEhBVkVf U1REQVJHX0gpCisgIyAgZGVmaW5lIFBSRUZFUl9TVERBUkcKKyAjICBkZWZpbmUgVVNFX1ZBUkFS R1MKKy0tLSBhL3JlYWRsaW5lL2NvbmZpZ3VyZQorKysrIGIvcmVhZGxpbmUvY29uZmlndXJlCitA QCAtMSw3ICsxLDcgQEAKKyAjISAvYmluL3NoCistIyBGcm9tIGNvbmZpZ3VyZS5pbiBmb3IgUmVh ZGxpbmUgNS4xLCB2ZXJzaW9uIDIuNTkuCisrIyBGcm9tIGNvbmZpZ3VyZS5pbiBmb3IgUmVhZGxp bmUgNi4yLCB2ZXJzaW9uIDIuNjcuCisgIyBHdWVzcyB2YWx1ZXMgZm9yIHN5c3RlbS1kZXBlbmRl bnQgdmFyaWFibGVzIGFuZCBjcmVhdGUgTWFrZWZpbGVzLgorLSMgR2VuZXJhdGVkIGJ5IEdOVSBB dXRvY29uZiAyLjY0IGZvciByZWFkbGluZSA1LjEtcmVsZWFzZS4KKysjIEdlbmVyYXRlZCBieSBH TlUgQXV0b2NvbmYgMi42NCBmb3IgcmVhZGxpbmUgNi4yLgorICMKKyAjIFJlcG9ydCBidWdzIHRv IDxidWctcmVhZGxpbmVAZ251Lm9yZz4uCisgIworQEAgLTU1MCw4ICs1NTAsOCBAQCBNQUtFRkxB R1M9CisgIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCisgUEFDS0FHRV9OQU1FPSdyZWFkbGlu ZScKKyBQQUNLQUdFX1RBUk5BTUU9J3JlYWRsaW5lJworLVBBQ0tBR0VfVkVSU0lPTj0nNS4xLXJl bGVhc2UnCistUEFDS0FHRV9TVFJJTkc9J3JlYWRsaW5lIDUuMS1yZWxlYXNlJworK1BBQ0tBR0Vf VkVSU0lPTj0nNi4yJworK1BBQ0tBR0VfU1RSSU5HPSdyZWFkbGluZSA2LjInCisgUEFDS0FHRV9C VUdSRVBPUlQ9J2J1Zy1yZWFkbGluZUBnbnUub3JnJworIFBBQ0tBR0VfVVJMPScnCisgCitAQCAt NTkzLDcgKzU5Myw2IEBAIGFjX2luY2x1ZGVzX2RlZmF1bHQ9IlwKKyAjZW5kaWYiCisgCisgYWNf c3Vic3RfdmFycz0nTFRMSUJPQkpTCistTElCT0JKUworIFRFUk1DQVBfTElCCisgTElCVkVSU0lP TgorIEFSRkxBR1MKK0BAIC02MjMsMTQgKzYyMiwxMyBAQCBTSE9CSl9MREZMQUdTCisgU0hPQkpf TEQKKyBTSE9CSl9DRkxBR1MKKyBTSE9CSl9DQworLVdDV0lEVEhfT0JKCisrTElCT0JKUworIE1B S0VfU0hFTEwKKyBSQU5MSUIKKyBBUgorIElOU1RBTExfREFUQQorIElOU1RBTExfU0NSSVBUCisg SU5TVEFMTF9QUk9HUkFNCistQ0NfRk9SX0JVSUxECisgRUdSRVAKKyBHUkVQCisgQ1BQCitAQCAt Njk2LDYgKzY5NCw3IEBAIHdpdGhfY3Vyc2VzCisgd2l0aF9wdXJpZnkKKyBlbmFibGVfbXVsdGli eXRlCisgZW5hYmxlX3N0YXRpYworK2VuYWJsZV9sYXJnZWZpbGUKKyAnCisgICAgICAgYWNfcHJl Y2lvdXNfdmFycz0nYnVpbGRfYWxpYXMKKyBob3N0X2FsaWFzCitAQCAtMTI0Nyw3ICsxMjQ2LDcg QEAgaWYgdGVzdCAiJGFjX2luaXRfaGVscCIgPSAibG9uZyI7IHRoZW4KKyAgICMgT21pdCBzb21l IGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9z aW5nLgorICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhl IEEvVVggMy4xIHNoLgorICAgY2F0IDw8X0FDRU9GCistXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMg cmVhZGxpbmUgNS4xLXJlbGVhc2UgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgor K1xgY29uZmlndXJlJyBjb25maWd1cmVzIHJlYWRsaW5lIDYuMiB0byBhZGFwdCB0byBtYW55IGtp bmRzIG9mIHN5c3RlbXMuCisgCisgVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtWQVI9VkFMVUVdLi4u CisgCitAQCAtMTMxMiw3ICsxMzExLDcgQEAgZmkKKyAKKyBpZiB0ZXN0IC1uICIkYWNfaW5pdF9o ZWxwIjsgdGhlbgorICAgY2FzZSAkYWNfaW5pdF9oZWxwIGluCistICAgICBzaG9ydCB8IHJlY3Vy c2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgcmVhZGxpbmUgNS4xLXJlbGVhc2U6Ijs7Cisr ICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgcmVhZGxpbmUg Ni4yOiI7OworICAgIGVzYWMKKyAgIGNhdCA8PFxfQUNFT0YKKyAKK0BAIC0xMzIyLDYgKzEzMjEs NyBAQCBPcHRpb25hbCBGZWF0dXJlczoKKyAgIC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGluY2x1 ZGUgRkVBVFVSRSBbQVJHPXllc10KKyAgIC0tZW5hYmxlLW11bHRpYnl0ZSAgICAgIGVuYWJsZSBt dWx0aWJ5dGUgY2hhcmFjdGVycyBpZiBPUyBzdXBwb3J0cyB0aGVtCisgICAtLWVuYWJsZS1zdGF0 aWMgICAgICAgICBidWlsZCBzdGF0aWMgbGlicmFyaWVzIFtkZWZhdWx0PVlFU10KKysgIC0tZGlz YWJsZS1sYXJnZWZpbGUgICAgIG9taXQgc3VwcG9ydCBmb3IgbGFyZ2UgZmlsZXMKKyAKKyBPcHRp b25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1QQUNLQUdFWz1BUkddICAgIHVzZSBQQUNLQUdFIFtB Ukc9eWVzXQorQEAgLTE0MDYsNyArMTQwNiw3IEBAIGZpCisgdGVzdCAtbiAiJGFjX2luaXRfaGVs cCIgJiYgZXhpdCAkYWNfc3RhdHVzCisgaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgorICAgY2F0 IDw8XF9BQ0VPRgorLXJlYWRsaW5lIGNvbmZpZ3VyZSA1LjEtcmVsZWFzZQorK3JlYWRsaW5lIGNv bmZpZ3VyZSA2LjIKKyBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjQKKyAKKyBDb3B5cmln aHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitAQCAtMTgzMSw3ICsx ODMxLDcgQEAgY2F0ID5jb25maWcubG9nIDw8X0FDRU9GCisgVGhpcyBmaWxlIGNvbnRhaW5zIGFu eSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKKyBydW5uaW5nIGNvbmZpZ3Vy ZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgorIAorLUl0 IHdhcyBjcmVhdGVkIGJ5IHJlYWRsaW5lICRhc19tZSA1LjEtcmVsZWFzZSwgd2hpY2ggd2FzCisr SXQgd2FzIGNyZWF0ZWQgYnkgcmVhZGxpbmUgJGFzX21lIDYuMiwgd2hpY2ggd2FzCisgZ2VuZXJh dGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY0LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCisg CisgICAkICQwICRACitAQCAtMjIxMSw3ICsyMjExLDcgQEAgYWNfY29uZmlndXJlPSIkU0hFTEwg JGFjX2F1eF9kaXIvY29uZmlndXJlIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgorIGFj X2NvbmZpZ19oZWFkZXJzPSIkYWNfY29uZmlnX2hlYWRlcnMgY29uZmlnLmgiCisgCisgCistTElC VkVSU0lPTj01LjEKKytMSUJWRVJTSU9OPTYuMgorIAorICMgTWFrZSBzdXJlIHdlIGNhbiBydW4g Y29uZmlnLnN1Yi4KKyAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiIHN1bjQgPi9kZXYv bnVsbCAyPiYxIHx8CitAQCAtMzYyMiwzOSArMzYyMiw2IEBAICRhc19lY2hvICIkYWNfY3Zfc2Fm ZV90b19kZWZpbmVfX19leHRlbnNpb25zX18iID4mNjsgfQorIAorIAorIAorLQorLWlmIHRlc3Qg IngkY3Jvc3NfY29tcGlsaW5nIiA9ICJ4eWVzIjsgdGhlbgorLSAgICBjYXNlICIke2hvc3R9IiBp bgorLSAgICAqLWN5Z3dpbiopCistCWNyb3NzX2NhY2hlPSR7c3JjZGlyfS9jcm9zcy1idWlsZC9j eWd3aW4uY2FjaGUKKy0JTE9DQUxfQ0ZMQUdTPSIkTE9DQUxfQ0ZMQUdTIC1JJHtzcmNkaXJ9Ly4u L2xpYnRlcm1jYXAiCistCTs7CistICAgKi1taW5ndzMyKikKKy0JY3Jvc3NfY2FjaGU9JHtzcmNk aXJ9L2Nyb3NzLWJ1aWxkL21pbmd3LmNhY2hlCistICAgICAgICA7OworLSAgICAqKSAgZWNobyAi Y29uZmlndXJlOiBjcm9zcy1jb21waWxpbmcgZm9yIGEgbm9uLWN5Z3dpbiB0YXJnZXQgaXMgbm90 IHN1cHBvcnRlZCIgPiYyCistCTs7CistICAgIGVzYWMKKy0KKy0gICAgaWYgdGVzdCAieCRjcm9z c19jYWNoZSIgIT0gIngiOyB0aGVuCistCWlmIHRlc3QgLXIgIiR7Y3Jvc3NfY2FjaGV9IjsgdGhl bgorLQkgICAgZWNobyAibG9hZGluZyBjcm9zcy1idWlsZCBjYWNoZSBmaWxlICR7Y3Jvc3NfY2Fj aGV9IgorLQkgICAgLiAke2Nyb3NzX2NhY2hlfQorLQlmaQorLQl1bnNldCBjcm9zc19jYWNoZQor LSAgICBmaQorLWZpCistCistaWYgdGVzdCAteiAiJENDX0ZPUl9CVUlMRCI7IHRoZW4KKy0gICAg aWYgdGVzdCAieCRjcm9zc19jb21waWxpbmciID0gInhubyI7IHRoZW4KKy0gICAgICAgIENDX0ZP Ul9CVUlMRD0nJChDQyknCistICAgIGVsc2UKKy0gICAgICAgIENDX0ZPUl9CVUlMRD1nY2MKKy0g ICAgZmkKKy1maQorLQorLQorLQorICMgSWYgd2UncmUgdXNpbmcgZ2NjIGFuZCB0aGUgdXNlciBo YXNuJ3Qgc3BlY2lmaWVkIENGTEFHUywgYWRkIC1PIHRvIENGTEFHUy4KKyB0ZXN0IC1uICIkR0ND IiAmJiB0ZXN0IC1uICIkYXV0b19jZmxhZ3MiICYmIENGTEFHUz0iJENGTEFHUyAtTyIKKyAKK0BA IC00MDU2LDYgKzQwMjMsNDAgQEAgaWYgdGVzdCAkYWNfY3ZfY19jaGFyX3Vuc2lnbmVkID0geWVz ICYmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorIAorIGZpCisgCisreyAkYXNfZWNobyAiJGFz X21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd29ya2luZyB2b2xhdGlsZSIg PiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdvcmtpbmcgdm9sYXRpbGUuLi4gIiA+JjY7 IH0KKytpZiB0ZXN0ICIke2FjX2N2X2Nfdm9sYXRpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAg JGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8 X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2lu dAorK21haW4gKCkKKyt7CisrCisrdm9sYXRpbGUgaW50IHg7CisraW50ICogdm9sYXRpbGUgeSA9 IChpbnQgKikgMDsKKytyZXR1cm4gIXggJiYgIXk7CisrICA7CisrICByZXR1cm4gMDsKKyt9Cisr X0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgYWNf Y3ZfY192b2xhdGlsZT15ZXMKKytlbHNlCisrICBhY19jdl9jX3ZvbGF0aWxlPW5vCisrZmkKKyty bSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19l eHQKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiAkYWNfY3ZfY192b2xhdGlsZSIgPiY1CisrJGFzX2VjaG8gIiRhY19jdl9jX3ZvbGF0aWxlIiA+ JjY7IH0KKytpZiB0ZXN0ICRhY19jdl9jX3ZvbGF0aWxlID0gbm87IHRoZW4KKysKKyskYXNfZWNo byAiI2RlZmluZSB2b2xhdGlsZSAvKiovIiA+PmNvbmZkZWZzLmgKKysKKytmaQorKworIAorIHsg JGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgcmV0dXJuIHR5 cGUgb2Ygc2lnbmFsIGhhbmRsZXJzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyByZXR1cm4g dHlwZSBvZiBzaWduYWwgaGFuZGxlcnMuLi4gIiA+JjY7IH0KK0BAIC00NTcxLDYgKzQ1NzIsMjA1 IEBAIGZpCisgZG9uZQorIAorIAorKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1sYXJnZWZpbGUg d2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7ZW5hYmxlX2xhcmdlZmlsZStzZXR9IiA9IHNldDsgdGhl biA6CisrICBlbmFibGV2YWw9JGVuYWJsZV9sYXJnZWZpbGU7CisrZmkKKysKKytpZiB0ZXN0ICIk ZW5hYmxlX2xhcmdlZmlsZSIgIT0gbm87IHRoZW4KKysKKysgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHNwZWNpYWwgQyBjb21waWxlciBvcHRp b25zIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZv ciBzcGVjaWFsIEMgY29tcGlsZXIgb3B0aW9ucyBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzLi4uICIg PiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9zeXNfbGFyZ2VmaWxlX0NDK3NldH0iID0gc2V0OyB0 aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgYWNfY3Zfc3lz X2xhcmdlZmlsZV9DQz1ubworKyAgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAg ICAgIGFjX3NhdmVfQ0M9JENDCisrICAgICAgIHdoaWxlIDo7IGRvCisrCSAjIElSSVggNi4yIGFu ZCBsYXRlciBkbyBub3Qgc3VwcG9ydCBsYXJnZSBmaWxlcyBieSBkZWZhdWx0LAorKwkgIyBzbyB1 c2UgdGhlIEMgY29tcGlsZXIncyAtbjMyIG9wdGlvbiBpZiB0aGF0IGhlbHBzLgorKwkgY2F0IGNv bmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5o LiAgKi8KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2Fu IHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgorKyAgICBXZSBjYW4ndCBzaW1wbHkgZGVm aW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisrICAgIHNpbmNlIHNv bWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKKysgICAgaW5jb3Jy ZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLworKyNkZWZpbmUgTEFSR0VfT0ZG X1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQorKyAgaW50IG9m Zl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCisrCQkgICAgICAg JiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCisrCQkgICAgICA/IDEgOiAtMV07Cisr aW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKysJ IGlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGJyZWFrCisrZmkK KytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0CisrCSBDQz0iJEND IC1uMzIiCisrCSBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBh Y19jdl9zeXNfbGFyZ2VmaWxlX0NDPScgLW4zMic7IGJyZWFrCisrZmkKKytybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0CisrCSBicmVhaworKyAgICAgICBkb25lCisr ICAgICAgIENDPSRhY19zYXZlX0NDCisrICAgICAgIHJtIC1mIGNvbmZ0ZXN0LiRhY19leHQKKysg ICAgZmkKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVz dWx0OiAkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQyIgPiY1CisrJGFzX2VjaG8gIiRhY19jdl9zeXNf bGFyZ2VmaWxlX0NDIiA+JjY7IH0KKysgIGlmIHRlc3QgIiRhY19jdl9zeXNfbGFyZ2VmaWxlX0ND IiAhPSBubzsgdGhlbgorKyAgICBDQz0kQ0MkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQworKyAgZmkK KysKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg Zm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMiID4mNQor KyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQg Zm9yIGxhcmdlIGZpbGVzLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9zeXNfZmlsZV9v ZmZzZXRfYml0cytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAi ID4mNgorK2Vsc2UKKysgIHdoaWxlIDo7IGRvCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9G ID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKyNpbmNsdWRlIDxz eXMvdHlwZXMuaD4KKysgLyogQ2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0g MSBjb3JyZWN0bHkuCisrICAgIFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8g YmUgOTIyMzM3MjAzNjg1NDc3NTgwNywKKysgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1h c3F1ZXJhZGluZyBhcyBDIGNvbXBpbGVycworKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3 MjAzNjg1NDc3NTgwNy4gICovCisrI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2 MikgLSAxICsgKChvZmZfdCkgMSA8PCA2MikpCisrICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdF X09GRl9UICUgMjE0NzQ4MzYyOSA9PSA3MjEKKysJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIx NDc0ODM2NDcgPT0gMSkKKysJCSAgICAgID8gMSA6IC0xXTsKKytpbnQKKyttYWluICgpCisrewor KworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBp bGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPW5vOyBi cmVhaworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBj b25mdGVzdC4kYWNfZXh0CisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKyNkZWZpbmUgX0ZJTEVfT0ZGU0VUX0JJ VFMgNjQKKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2Fu IHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgorKyAgICBXZSBjYW4ndCBzaW1wbHkgZGVm aW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisrICAgIHNpbmNlIHNv bWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKKysgICAgaW5jb3Jy ZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLworKyNkZWZpbmUgTEFSR0VfT0ZG X1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQorKyAgaW50IG9m Zl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCisrCQkgICAgICAg JiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCisrCQkgICAgICA/IDEgOiAtMV07Cisr aW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytp ZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBhY19jdl9zeXNfZmls ZV9vZmZzZXRfYml0cz02NDsgYnJlYWsKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNv bmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorKyAgYWNfY3Zfc3lzX2ZpbGVfb2Zm c2V0X2JpdHM9dW5rbm93bgorKyAgYnJlYWsKKytkb25lCisrZmkKKyt7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19maWxlX29mZnNldF9i aXRzIiA+JjUKKyskYXNfZWNobyAiJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzIiA+JjY7IH0K KytjYXNlICRhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cyBpbiAjKAorKyAgbm8gfCB1bmtub3du KSA7OworKyAgKikKKytjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmluZSBfRklMRV9P RkZTRVRfQklUUyAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMKKytfQUNFT0YKKys7OworK2Vz YWMKKytybSAtcmYgY29uZnRlc3QqCisrICBpZiB0ZXN0ICRhY19jdl9zeXNfZmlsZV9vZmZzZXRf Yml0cyA9IHVua25vd247IHRoZW4KKysgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3IgX0xBUkdFX0ZJTEVTIHZhbHVlIG5lZWRlZCBmb3IgbGFy Z2UgZmlsZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfTEFSR0VfRklMRVMgdmFs dWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3Zf c3lzX2xhcmdlX2ZpbGVzK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNo ZWQpICIgPiY2CisrZWxzZQorKyAgd2hpbGUgOjsgZG8KKysgIGNhdCBjb25mZGVmcy5oIC0gPDxf QUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrI2luY2x1 ZGUgPHN5cy90eXBlcy5oPgorKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioq NjMgLSAxIGNvcnJlY3RseS4KKysgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZf VCB0byBiZSA5MjIzMzcyMDM2ODU0Nzc1ODA3LAorKyAgICBzaW5jZSBzb21lIEMrKyBjb21waWxl cnMgbWFzcXVlcmFkaW5nIGFzIEMgY29tcGlsZXJzCisrICAgIGluY29ycmVjdGx5IHJlamVjdCA5 MjIzMzcyMDM2ODU0Nzc1ODA3LiAgKi8KKysjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAx IDw8IDYyKSAtIDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKKysgIGludCBvZmZfdF9pc19sYXJnZVso TEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQorKwkJICAgICAgICYmIExBUkdFX09GRl9U ICUgMjE0NzQ4MzY0NyA9PSAxKQorKwkJICAgICAgPyAxIDogLTFdOworK2ludAorK21haW4gKCkK Kyt7CisrCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlf Y29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzPW5vOyBi cmVhaworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBj b25mdGVzdC4kYWNfZXh0CisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4k YWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKyNkZWZpbmUgX0xBUkdFX0ZJTEVTIDEK KysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisrIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2FuIHJlcHJl c2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgorKyAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExB UkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCisrICAgIHNpbmNlIHNvbWUgQysr IGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKKysgICAgaW5jb3JyZWN0bHkg cmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLworKyNkZWZpbmUgTEFSR0VfT0ZGX1QgKCgo b2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQorKyAgaW50IG9mZl90X2lz X2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0gNzIxCisrCQkgICAgICAgJiYgTEFS R0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCisrCQkgICAgICA/IDEgOiAtMV07CisraW50Cisr bWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19m bl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBhY19jdl9zeXNfbGFyZ2VfZmls ZXM9MTsgYnJlYWsKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19v YmpleHQgY29uZnRlc3QuJGFjX2V4dAorKyAgYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzPXVua25vd24K KysgIGJyZWFrCisrZG9uZQorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6ICRhY19jdl9zeXNfbGFyZ2VfZmlsZXMiID4mNQorKyRhc19lY2hvICIk YWNfY3Zfc3lzX2xhcmdlX2ZpbGVzIiA+JjY7IH0KKytjYXNlICRhY19jdl9zeXNfbGFyZ2VfZmls ZXMgaW4gIygKKysgIG5vIHwgdW5rbm93bikgOzsKKysgICopCisrY2F0ID4+Y29uZmRlZnMuaCA8 PF9BQ0VPRgorKyNkZWZpbmUgX0xBUkdFX0ZJTEVTICRhY19jdl9zeXNfbGFyZ2VfZmlsZXMKKytf QUNFT0YKKys7OworK2VzYWMKKytybSAtcmYgY29uZnRlc3QqCisrICBmaQorK2ZpCisrCisrCisg CisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig dHlwZSBvZiBzaWduYWwgZnVuY3Rpb25zIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3Ig dHlwZSBvZiBzaWduYWwgZnVuY3Rpb25zLi4uICIgPiY2OyB9CitAQCAtNTA3OCw2ICs1Mjc4LDQ5 IEBAICRhc19lY2hvICIjZGVmaW5lIEdXSU5TWl9JTl9TWVNfSU9DVEwgMSIgPj5jb25mZGVmcy5o CisgZmkKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIGZvciBzaWdfYXRvbWljX3QgaW4gc2lnbmFsLmgiID4mNQorKyRhc19lY2hvX24gImNo ZWNraW5nIGZvciBzaWdfYXRvbWljX3QgaW4gc2lnbmFsLmguLi4gIiA+JjY7IH0KKytpZiB0ZXN0 ICIke2FjX2N2X2hhdmVfc2lnX2F0b21pY190K3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19l Y2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKysjaW5jbHVk ZSA8c2lnbmFsLmg+CisrCisraW50CisrbWFpbiAoKQorK3sKKysgc2lnX2F0b21pY190IHg7Cisr ICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfbGluayAiJExJ TkVOTyI7IHRoZW4gOgorKyAgYWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3Q9eWVzCisrZWxzZQorKyAg YWNfY3ZfaGF2ZV9zaWdfYXRvbWljX3Q9bm8KKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJy IGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3Qu JGFjX2V4dAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBy ZXN1bHQ6ICRhY19jdl9oYXZlX3NpZ19hdG9taWNfdCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdl9o YXZlX3NpZ19hdG9taWNfdCIgPiY2OyB9CisraWYgdGVzdCAiJGFjX2N2X2hhdmVfc2lnX2F0b21p Y190IiA9ICJubyIKKyt0aGVuCisrICAgIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInNp Z19hdG9taWNfdCIgImFjX2N2X3R5cGVfc2lnX2F0b21pY190IiAiJGFjX2luY2x1ZGVzX2RlZmF1 bHQiCisraWYgdGVzdCAieCRhY19jdl90eXBlX3NpZ19hdG9taWNfdCIgPSB4IiJ5ZXM7IHRoZW4g OgorKworK2Vsc2UKKysKKytjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmluZSBzaWdf YXRvbWljX3QgaW50CisrX0FDRU9GCisrCisrZmkKKysKKytmaQorKworIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBzaWduYWwgaGFuZGxl cnMgYXJlIG9mIHR5cGUgdm9pZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBz aWduYWwgaGFuZGxlcnMgYXJlIG9mIHR5cGUgdm9pZC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7 YmFzaF9jdl92b2lkX3NpZ2hhbmRsZXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTUxMTYsNiAr NTM1OSw3IEBAICRhc19lY2hvICIjZGVmaW5lIFZPSURfU0lHSEFORExFUiAxIiA+PmNvbmZkZWZz LmgKKyAKKyBmaQorIAorKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogY2hlY2tpbmcgZm9yIFRJT0NTVEFUIGluIHN5cy9pb2N0bC5oIiA+JjUKKyAkYXNfZWNob19u ICJjaGVja2luZyBmb3IgVElPQ1NUQVQgaW4gc3lzL2lvY3RsLmguLi4gIiA+JjY7IH0KKyBpZiB0 ZXN0ICIke2Jhc2hfY3ZfdGlvY3N0YXRfaW5faW9jdGwrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAg LTU2MzgsMjcgKzU4ODIsNzMgQEAgZmkKKyBkb25lCisgCisgCisrYWNfZm5fY19jaGVja19mdW5j ICIkTElORU5PIiAibWJybGVuIiAiYWNfY3ZfZnVuY19tYnJsZW4iCisraWYgdGVzdCAieCRhY19j dl9mdW5jX21icmxlbiIgPSB4IiJ5ZXM7IHRoZW4gOgorKyAgJGFzX2VjaG8gIiNkZWZpbmUgSEFW RV9NQlJMRU4gMSIgPj5jb25mZGVmcy5oCisrCisrZmkKKysKKythY19mbl9jX2NoZWNrX2Z1bmMg IiRMSU5FTk8iICJtYnNjYXNlY21wIiAiYWNfY3ZfZnVuY19tYnNjYXNlY21wIgorK2lmIHRlc3Qg IngkYWNfY3ZfZnVuY19tYnNjYXNlY21wIiA9IHgiInllczsgdGhlbiA6CisrICAkYXNfZWNobyAi I2RlZmluZSBIQVZFX01CU0NNUCAxIiA+PmNvbmZkZWZzLmgKKysKKytmaQorKworK2FjX2ZuX2Nf Y2hlY2tfZnVuYyAiJExJTkVOTyIgIm1ic2NtcCIgImFjX2N2X2Z1bmNfbWJzY21wIgorK2lmIHRl c3QgIngkYWNfY3ZfZnVuY19tYnNjbXAiID0geCIieWVzOyB0aGVuIDoKKysgICRhc19lY2hvICIj ZGVmaW5lIEhBVkVfTUJTQ01QIDEiID4+Y29uZmRlZnMuaAorKworK2ZpCisrCisrYWNfZm5fY19j aGVja19mdW5jICIkTElORU5PIiAibWJzbnJ0b3djcyIgImFjX2N2X2Z1bmNfbWJzbnJ0b3djcyIK KytpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbWJzbnJ0b3djcyIgPSB4IiJ5ZXM7IHRoZW4gOgorKyAg JGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9NQlNOUlRPV0NTIDEiID4+Y29uZmRlZnMuaAorKworK2Zp CisrCisgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibWJzcnRvd2NzIiAiYWNfY3ZfZnVu Y19tYnNydG93Y3MiCisgaWYgdGVzdCAieCRhY19jdl9mdW5jX21ic3J0b3djcyIgPSB4IiJ5ZXM7 IHRoZW4gOgorICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9NQlNSVE9XQ1MgMSIgPj5jb25mZGVm cy5oCisgCisgZmkKKyAKKy1hY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJtYnJ0b3djIiAi YWNfY3ZfZnVuY19tYnJ0b3djIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tYnJ0b3djIiA9IHgi InllczsgdGhlbiA6CistICAkYXNfZWNobyAiI2RlZmluZSBIQVZFX01CUlRPV0MgMSIgPj5jb25m ZGVmcy5oCisrCisrCisrZm9yIGFjX2Z1bmMgaW4gbWJzY2hyCisrZG8gOgorKyAgYWNfZm5fY19j aGVja19mdW5jICIkTElORU5PIiAibWJzY2hyIiAiYWNfY3ZfZnVuY19tYnNjaHIiCisraWYgdGVz dCAieCRhY19jdl9mdW5jX21ic2NociIgPSB4IiJ5ZXM7IHRoZW4gOgorKyAgY2F0ID4+Y29uZmRl ZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgSEFWRV9NQlNDSFIgMQorK19BQ0VPRgorKworK2Vsc2UK KysgIGNhc2UgIiAkTElCT0JKUyAiIGluCisrICAqIiAkYWNfZnVuYy4kYWNfb2JqZXh0ICIqICkg OzsKKysgICopIExJQk9CSlM9IiRMSUJPQkpTICRhY19mdW5jLiRhY19vYmpleHQiCisrIDs7Cisr ZXNhYworIAorIGZpCisrZG9uZQorIAorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1i cmxlbiIgImFjX2N2X2Z1bmNfbWJybGVuIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tYnJsZW4i ID0geCIieWVzOyB0aGVuIDoKKy0gICRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJSTEVOIDEiID4+ Y29uZmRlZnMuaAorKworKworK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIndjcnRvbWIi ICJhY19jdl9mdW5jX3djcnRvbWIiCisraWYgdGVzdCAieCRhY19jdl9mdW5jX3djcnRvbWIiID0g eCIieWVzOyB0aGVuIDoKKysgICRhc19lY2hvICIjZGVmaW5lIEhBVkVfV0NSVE9NQiAxIiA+PmNv bmZkZWZzLmgKKyAKKyBmaQorIAorLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIndjdG9t YiIgImFjX2N2X2Z1bmNfd2N0b21iIgorLWlmIHRlc3QgIngkYWNfY3ZfZnVuY193Y3RvbWIiID0g eCIieWVzOyB0aGVuIDoKKy0gICRhc19lY2hvICIjZGVmaW5lIEhBVkVfV0NUT01CIDEiID4+Y29u ZmRlZnMuaAorK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIndjc2NvbGwiICJhY19jdl9m dW5jX3djc2NvbGwiCisraWYgdGVzdCAieCRhY19jdl9mdW5jX3djc2NvbGwiID0geCIieWVzOyB0 aGVuIDoKKysgICRhc19lY2hvICIjZGVmaW5lIEhBVkVfV0NTQ09MTCAxIiA+PmNvbmZkZWZzLmgK KysKKytmaQorKworK2FjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIndjc2R1cCIgImFjX2N2 X2Z1bmNfd2NzZHVwIgorK2lmIHRlc3QgIngkYWNfY3ZfZnVuY193Y3NkdXAiID0geCIieWVzOyB0 aGVuIDoKKysgICRhc19lY2hvICIjZGVmaW5lIEhBVkVfV0NTRFVQIDEiID4+Y29uZmRlZnMuaAor IAorIGZpCisgCitAQCAtNTY2OCw1NSArNTk1OCw4OSBAQCBpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNf d2N3aWR0aCIgPSB4IiJ5ZXM7IHRoZW4gOgorIAorIGZpCisgCistYWNfZm5fY19jaGVja19mdW5j ICIkTElORU5PIiAid2NzZHVwIiAiYWNfY3ZfZnVuY193Y3NkdXAiCistaWYgdGVzdCAieCRhY19j dl9mdW5jX3djc2R1cCIgPSB4IiJ5ZXM7IHRoZW4gOgorLSAgJGFzX2VjaG8gIiNkZWZpbmUgSEFW RV9XQ1NEVVAgMSIgPj5jb25mZGVmcy5oCisrYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAi d2N0eXBlIiAiYWNfY3ZfZnVuY193Y3R5cGUiCisraWYgdGVzdCAieCRhY19jdl9mdW5jX3djdHlw ZSIgPSB4IiJ5ZXM7IHRoZW4gOgorKyAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9XQ1RZUEUgMSIg Pj5jb25mZGVmcy5oCisgCisgZmkKKyAKKyAKKy1pZiB0ZXN0ICIkYWNfY3ZfZnVuY193Y3dpZHRo IiA9IG5vICYmIHRlc3QgIiRhY19jdl9oZWFkZXJfd2NoYXJfaCIgPSB5ZXM7IHRoZW4KKy0gIFdD V0lEVEhfT0JKPXdjd2lkdGgubworK2ZvciBhY19mdW5jIGluIHdjc3dpZHRoCisrZG8gOgorKyAg YWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAid2Nzd2lkdGgiICJhY19jdl9mdW5jX3djc3dp ZHRoIgorK2lmIHRlc3QgIngkYWNfY3ZfZnVuY193Y3N3aWR0aCIgPSB4IiJ5ZXM7IHRoZW4gOgor KyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgSEFWRV9XQ1NXSURUSCAxCisr X0FDRU9GCisrCisgZWxzZQorLSAgV0NXSURUSF9PQko9CisrICBjYXNlICIgJExJQk9CSlMgIiBp bgorKyAgKiIgJGFjX2Z1bmMuJGFjX29iamV4dCAiKiApIDs7CisrICAqKSBMSUJPQkpTPSIkTElC T0JKUyAkYWNfZnVuYy4kYWNfb2JqZXh0IgorKyA7OworK2VzYWMKKysKKyBmaQorK2RvbmUKKysK KysKKyAKKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNr aW5nIGZvciBtYnN0YXRlX3QiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYnN0YXRl X3QuLi4gIiA+JjY7IH0KKy1pZiB0ZXN0ICIke2Jhc2hfY3ZfaGF2ZV9tYnN0YXRlX3Qrc2V0fSIg PSBzZXQ7IHRoZW4gOgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyB3aGV0aGVyIG1icnRvd2MgYW5kIG1ic3RhdGVfdCBhcmUgcHJvcGVybHkgZGVj bGFyZWQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgbWJydG93YyBhbmQgbWJz dGF0ZV90IGFyZSBwcm9wZXJseSBkZWNsYXJlZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNf Y3ZfZnVuY19tYnJ0b3djK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgICRhc19lY2hvX24gIihjYWNo ZWQpICIgPiY2CisgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3Qu JGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy0KKyAjaW5jbHVkZSA8d2NoYXIuaD4K KyBpbnQKKyBtYWluICgpCisgeworLQorLSAgbWJzdGF0ZV90IHBzOworLSAgbWJzdGF0ZV90ICpw c3A7CistICBwc3AgPSAobWJzdGF0ZV90ICopMDsKKy0KKyt3Y2hhcl90IHdjOworKwkgICAgICBj aGFyIGNvbnN0IHNbXSA9ICIiOworKwkgICAgICBzaXplX3QgbiA9IDE7CisrCSAgICAgIG1ic3Rh dGVfdCBzdGF0ZTsKKysJICAgICAgcmV0dXJuICEgKHNpemVvZiBzdGF0ZSAmJiAobWJydG93Yykg KCZ3YywgcywgbiwgJnN0YXRlKSk7CisgICA7CisgICByZXR1cm4gMDsKKyB9CisgX0FDRU9GCist aWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorLSAgYmFzaF9jdl9oYXZl X21ic3RhdGVfdD15ZXMKKytpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Cisr ICBhY19jdl9mdW5jX21icnRvd2M9eWVzCisgZWxzZQorLSAgYmFzaF9jdl9oYXZlX21ic3RhdGVf dD1ubworKyAgYWNfY3ZfZnVuY19tYnJ0b3djPW5vCisgZmkKKy1ybSAtZiBjb3JlIGNvbmZ0ZXN0 LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKytybSAtZiBjb3JlIGNv bmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKysgICAgY29uZnRlc3QkYWNfZXhlZXh0 IGNvbmZ0ZXN0LiRhY19leHQKKyBmaQorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0k TElORU5PfTogcmVzdWx0OiAkYmFzaF9jdl9oYXZlX21ic3RhdGVfdCIgPiY1CistJGFzX2VjaG8g IiRiYXNoX2N2X2hhdmVfbWJzdGF0ZV90IiA+JjY7IH0KKy1pZiB0ZXN0ICRiYXNoX2N2X2hhdmVf bWJzdGF0ZV90ID0geWVzOyB0aGVuCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6ICRhY19jdl9mdW5jX21icnRvd2MiID4mNQorKyRhc19lY2hvICIkYWNf Y3ZfZnVuY19tYnJ0b3djIiA+JjY7IH0KKysgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfbWJydG93YyA9 IHllczsgdGhlbgorKworKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJSVE9XQyAxIiA+PmNvbmZk ZWZzLmgKKysKKysgIGZpCisrCisraWYgdGVzdCAkYWNfY3ZfZnVuY19tYnJ0b3djID0geWVzOyB0 aGVuCisgCSRhc19lY2hvICIjZGVmaW5lIEhBVkVfTUJTVEFURV9UIDEiID4+Y29uZmRlZnMuaAor IAorIGZpCisgCisrZm9yIGFjX2Z1bmMgaW4gaXN3bG93ZXIgaXN3dXBwZXIgdG93bG93ZXIgdG93 dXBwZXIgaXN3Y3R5cGUKKytkbyA6CisrICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5j XyRhY19mdW5jIiB8ICRhc190cl9zaGAKKythY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICIk YWNfZnVuYyIgIiRhc19hY192YXIiCisrZXZhbCBhc192YWw9XCQkYXNfYWNfdmFyCisrICAgaWYg dGVzdCAieCRhc192YWwiID0geCIieWVzOyB0aGVuIDoKKysgIGNhdCA+PmNvbmZkZWZzLmggPDxf QUNFT0YKKysjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfZnVuYyIgfCAkYXNfdHJfY3BwYCAx CisrX0FDRU9GCisrCisrZmkKKytkb25lCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbmxfbGFuZ2luZm8gYW5kIENPREVTRVQiID4m NQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciBubF9sYW5naW5mbyBhbmQgQ09ERVNFVC4uLiAi ID4mNjsgfQorIGlmIHRlc3QgIiR7YmFzaF9jdl9sYW5naW5mb19jb2Rlc2V0K3NldH0iID0gc2V0 OyB0aGVuIDoKK0BAIC01NzQ4LDYgKzYwNzIsMTI2IEBAIGlmIHRlc3QgJGJhc2hfY3ZfbGFuZ2lu Zm9fY29kZXNldCA9IHllczsgdGhlbgorIAorIGZpCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igd2NoYXJfdCBpbiB3Y2hhci5oIiA+JjUK KyskYXNfZWNob19uICJjaGVja2luZyBmb3Igd2NoYXJfdCBpbiB3Y2hhci5oLi4uICIgPiY2OyB9 CisraWYgdGVzdCAiJHtiYXNoX2N2X3R5cGVfd2NoYXJfdCtzZXR9IiA9IHNldDsgdGhlbiA6Cisr ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrI2lu Y2x1ZGUgPHdjaGFyLmg+CisrCisraW50CisrbWFpbiAoKQorK3sKKysKKysgICAgICAgIHdjaGFy X3QgZm9vOworKyAgICAgICAgZm9vID0gMDsKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytf QUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBiYXNo X2N2X3R5cGVfd2NoYXJfdD15ZXMKKytlbHNlCisrICBiYXNoX2N2X3R5cGVfd2NoYXJfdD1ubwor K2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVz dC4kYWNfZXh0CisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IHJlc3VsdDogJGJhc2hfY3ZfdHlwZV93Y2hhcl90IiA+JjUKKyskYXNfZWNobyAiJGJhc2hfY3Zf dHlwZV93Y2hhcl90IiA+JjY7IH0KKytpZiB0ZXN0ICRiYXNoX2N2X3R5cGVfd2NoYXJfdCA9IHll czsgdGhlbgorKworKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfV0NIQVJfVCAxIiA+PmNvbmZkZWZz LmgKKysKKytmaQorKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog Y2hlY2tpbmcgZm9yIHdjdHlwZV90IGluIHdjdHlwZS5oIiA+JjUKKyskYXNfZWNob19uICJjaGVj a2luZyBmb3Igd2N0eXBlX3QgaW4gd2N0eXBlLmguLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2Jh c2hfY3ZfdHlwZV93Y3R5cGVfdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIo Y2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0 ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrI2luY2x1ZGUgPHdjdHlwZS5o PgorK2ludAorK21haW4gKCkKKyt7CisrCisrICAgICAgICB3Y3R5cGVfdCBmb287CisrICAgICAg ICBmb28gPSAwOworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2Zu X2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGJhc2hfY3ZfdHlwZV93Y3R5cGVf dD15ZXMKKytlbHNlCisrICBiYXNoX2N2X3R5cGVfd2N0eXBlX3Q9bm8KKytmaQorK3JtIC1mIGNv cmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorK2Zp CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRiYXNo X2N2X3R5cGVfd2N0eXBlX3QiID4mNQorKyRhc19lY2hvICIkYmFzaF9jdl90eXBlX3djdHlwZV90 IiA+JjY7IH0KKytpZiB0ZXN0ICRiYXNoX2N2X3R5cGVfd2N0eXBlX3QgPSB5ZXM7IHRoZW4KKysK KyskYXNfZWNobyAiI2RlZmluZSBIQVZFX1dDVFlQRV9UIDEiID4+Y29uZmRlZnMuaAorKworK2Zp CisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm b3Igd2ludF90IGluIHdjdHlwZS5oIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igd2lu dF90IGluIHdjdHlwZS5oLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtiYXNoX2N2X3R5cGVfd2lu dF90K3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Cisr ZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8q IGVuZCBjb25mZGVmcy5oLiAgKi8KKysjaW5jbHVkZSA8d2N0eXBlLmg+CisraW50CisrbWFpbiAo KQorK3sKKysKKysgICAgICAgIHdpbnRfdCBmb287CisrICAgICAgICBmb28gPSAwOworKworKyAg OworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRM SU5FTk8iOyB0aGVuIDoKKysgIGJhc2hfY3ZfdHlwZV93aW50X3Q9eWVzCisrZWxzZQorKyAgYmFz aF9jdl90eXBlX3dpbnRfdD1ubworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRl c3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGJhc2hfY3ZfdHlwZV93aW50X3QiID4mNQor KyRhc19lY2hvICIkYmFzaF9jdl90eXBlX3dpbnRfdCIgPiY2OyB9CisraWYgdGVzdCAkYmFzaF9j dl90eXBlX3dpbnRfdCA9IHllczsgdGhlbgorKworKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfV0lO VF9UIDEiID4+Y29uZmRlZnMuaAorKworK2ZpCisrCisraWYgdGVzdCAiJGFtX2N2X2Z1bmNfaWNv bnYiID0geWVzOyB0aGVuCisrCU9MRExJQlM9IiRMSUJTIgorKwlMSUJTPSIkTElCUyAkTElCSUNP TlYiCisrCWZvciBhY19mdW5jIGluIGxvY2FsZV9jaGFyc2V0CisrZG8gOgorKyAgYWNfZm5fY19j aGVja19mdW5jICIkTElORU5PIiAibG9jYWxlX2NoYXJzZXQiICJhY19jdl9mdW5jX2xvY2FsZV9j aGFyc2V0IgorK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19sb2NhbGVfY2hhcnNldCIgPSB4IiJ5ZXM7 IHRoZW4gOgorKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgSEFWRV9MT0NB TEVfQ0hBUlNFVCAxCisrX0FDRU9GCisrCisrZmkKKytkb25lCisrCisrCUxJQlM9IiRPTERMSUJT IgorK2ZpCisrCisgCisgCisgY2FzZSAiJGhvc3RfY3B1IiBpbgorQEAgLTYzNTcsNyArNjgwMSw3 IEBAIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8XF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKKyAj IHJlcG9ydCBhY3R1YWwgaW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGluc3RlYWQg b2YgdGhlaXIKKyAjIHZhbHVlcyBhZnRlciBvcHRpb25zIGhhbmRsaW5nLgorIGFjX2xvZz0iCist VGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSByZWFkbGluZSAkYXNfbWUgNS4xLXJlbGVhc2UsIHdo aWNoIHdhcworK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcmVhZGxpbmUgJGFzX21lIDYuMiwg d2hpY2ggd2FzCisgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY0LiAgSW52b2NhdGlvbiBj b21tYW5kIGxpbmUgd2FzCisgCisgICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCitA QCAtNjQyMSw3ICs2ODY1LDcgQEAgUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1yZWFkbGluZUBnbnUub3Jn Pi4iCisgX0FDRU9GCisgY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVf ZmFpbD0xCisgYWNfY3NfdmVyc2lvbj0iXFwKKy1yZWFkbGluZSBjb25maWcuc3RhdHVzIDUuMS1y ZWxlYXNlCisrcmVhZGxpbmUgY29uZmlnLnN0YXR1cyA2LjIKKyBjb25maWd1cmVkIGJ5ICQwLCBn ZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjQsCisgICB3aXRoIG9wdGlvbnMgXFwiYCRhc19l Y2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxc Ji9nJ2BcXCIKKyAKKy0tLSBhL3JlYWRsaW5lL2NvbmZpZ3VyZS5pbgorKysrIGIvcmVhZGxpbmUv Y29uZmlndXJlLmluCitAQCAtNSwyOCArNSwyNiBAQCBkbmwgcmVwb3J0IGJ1Z3MgdG8gY2hldEBw by5jd3J1LmVkdQorIGRubAorIGRubCBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRv IHByb2R1Y2UgYSBjb25maWd1cmUgc2NyaXB0LgorIAorLSMgQ29weXJpZ2h0IChDKSAxOTg3LTIw MDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBDb3B5cmlnaHQgKEMpIDE5ODct MjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0jIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cist IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSMgYW55IGxhdGVyIHZlcnNpb24uCisrIyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrIyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCist IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKysjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSMgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistIyBG b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEK Ky0jIDAyMTExLTEzMDcsIFVTQS4KKysjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisg CistQUNfUkVWSVNJT04oW2ZvciBSZWFkbGluZSA1LjEsIHZlcnNpb24gMi41OV0pCisrQUNfUkVW SVNJT04oW2ZvciBSZWFkbGluZSA2LjIsIHZlcnNpb24gMi42N10pCisgCisgbTRfaW5jbHVkZShb Li4vY29uZmlnL292ZXJyaWRlLm00XSkKKyAKKy1BQ19JTklUKHJlYWRsaW5lLCA1LjEtcmVsZWFz ZSwgYnVnLXJlYWRsaW5lQGdudS5vcmcpCisrQUNfSU5JVChyZWFkbGluZSwgNi4yLCBidWctcmVh ZGxpbmVAZ251Lm9yZykKKyAKKyBkbmwgbWFrZSBzdXJlIHdlIGFyZSB1c2luZyBhIHJlY2VudCBh dXRvY29uZiB2ZXJzaW9uCisgQUNfUFJFUkVRKDIuNTApCitAQCAtMzgsNyArMzYsNyBAQCBBQ19D T05GSUdfQVVYX0RJUihgY2QgJHNyY2Rpcjtwd2RgLy4uKQorIEFDX0NPTkZJR19IRUFERVJTKGNv bmZpZy5oKQorIAorIGRubCB1cGRhdGUgdGhlIHZhbHVlIG9mIFJMX1JFQURMSU5FX1ZFUlNJT04g aW4gcmVhZGxpbmUuaCB3aGVuIHRoaXMgY2hhbmdlcworLUxJQlZFUlNJT049NS4xCisrTElCVkVS U0lPTj02LjIKKyAKKyBBQ19DQU5PTklDQUxfSE9TVAorIAorQEAgLTExNSw0NCArMTEzLDYgQEAg QUNfUFJPR19DQworIGRubCBBQ19BSVgKKyBBQ19NSU5JWAorIAorLWRubCBCRUdJTiBjaGFuZ2Vz IGZvciBDWUdOVVMgY3Jvc3MtYnVpbGRpbmcgZm9yIEN5Z3dpbgorLWRubCBOT1RFOiBTb21lIG9m IHRoZXNlIGNoYW5nZXMgbWF5IG5vIGxvbmdlciBiZSBuZWNlc3NhcnkuCistCistZG5sIGxvYWQg dXAgdGhlIGNyb3NzLWJ1aWxkaW5nIGNhY2hlIGZpbGUgLS0gYWRkIG1vcmUgY2FzZXMgYW5kIGNh Y2hlCistZG5sIGZpbGVzIGFzIG5lY2Vzc2FyeQorLWlmIHRlc3QgIngkY3Jvc3NfY29tcGlsaW5n IiA9ICJ4eWVzIjsgdGhlbgorLSAgICBjYXNlICIke2hvc3R9IiBpbgorLSAgICAqLWN5Z3dpbiop CistCWNyb3NzX2NhY2hlPSR7c3JjZGlyfS9jcm9zcy1idWlsZC9jeWd3aW4uY2FjaGUKKy0JTE9D QUxfQ0ZMQUdTPSIkTE9DQUxfQ0ZMQUdTIC1JJHtzcmNkaXJ9Ly4uL2xpYnRlcm1jYXAiCistCTs7 CistICAgKi1taW5ndzMyKikJCistCWNyb3NzX2NhY2hlPSR7c3JjZGlyfS9jcm9zcy1idWlsZC9t aW5ndy5jYWNoZQorLSAgICAgICAgOzsKKy0gICAgKikgIGVjaG8gImNvbmZpZ3VyZTogY3Jvc3Mt Y29tcGlsaW5nIGZvciBhIG5vbi1jeWd3aW4gdGFyZ2V0IGlzIG5vdCBzdXBwb3J0ZWQiID4mMgor LQk7OworLSAgICBlc2FjCistCistICAgIGlmIHRlc3QgIngkY3Jvc3NfY2FjaGUiICE9ICJ4Ijsg dGhlbgorLQlpZiB0ZXN0IC1yICIke2Nyb3NzX2NhY2hlfSI7IHRoZW4KKy0JICAgIGVjaG8gImxv YWRpbmcgY3Jvc3MtYnVpbGQgY2FjaGUgZmlsZSAke2Nyb3NzX2NhY2hlfSIKKy0JICAgIC4gJHtj cm9zc19jYWNoZX0KKy0JZmkKKy0JdW5zZXQgY3Jvc3NfY2FjaGUKKy0gICAgZmkKKy1maQorLQor LWlmIHRlc3QgLXogIiRDQ19GT1JfQlVJTEQiOyB0aGVuCistICAgIGlmIHRlc3QgIngkY3Jvc3Nf Y29tcGlsaW5nIiA9ICJ4bm8iOyB0aGVuCistICAgICAgICBDQ19GT1JfQlVJTEQ9JyQoQ0MpJwor LSAgICBlbHNlCistICAgICAgICBDQ19GT1JfQlVJTEQ9Z2NjCistICAgIGZpCistZmkKKy1BQ19T VUJTVChDQ19GT1JfQlVJTEQpCistIAorLWRubCBFTkQgY2hhbmdlcyBmb3IgQ1lHTlVTIGNyb3Nz LWJ1aWxkaW5nIGZvciBDeWd3aW4KKy0KKyAjIElmIHdlJ3JlIHVzaW5nIGdjYyBhbmQgdGhlIHVz ZXIgaGFzbid0IHNwZWNpZmllZCBDRkxBR1MsIGFkZCAtTyB0byBDRkxBR1MuCisgdGVzdCAtbiAi JEdDQyIgJiYgdGVzdCAtbiAiJGF1dG9fY2ZsYWdzIiAmJiBDRkxBR1M9IiRDRkxBR1MgLU8iCisg CitAQCAtMTcwLDYgKzEzMCw3IEBAIEFDX1NVQlNUKE1BS0VfU0hFTEwpCisgQUNfQ19DT05TVAor IEFDX0NfUFJPVE9UWVBFUworIEFDX0NfQ0hBUl9VTlNJR05FRAorK0FDX0NfVk9MQVRJTEUKKyAK KyBBQ19UWVBFX1NJR05BTAorIAorQEAgLTIwMCw2ICsxNjEsOCBAQCBBQ19DSEVDS19IRUFERVJT KHN5cy9wdGVtLmgsLCwKKyAjZW5kaWYKKyBdXSkKKyAKKytBQ19TWVNfTEFSR0VGSUxFCisrCisg QkFTSF9TWVNfU0lHTkFMX1ZJTlRBR0UKKyBCQVNIX1NZU19SRUlOU1RBTExfU0lHSEFORExFUlMK KyAKK0BAIC0yMTIsNyArMTc1LDkgQEAgQkFTSF9DSEVDS19HRVRQV19GVU5DUworIAorIEFDX0hF QURFUl9USU9DR1dJTlNaCisgCisrQkFTSF9UWVBFX1NJR19BVE9NSUNfVAorIEJBU0hfVFlQRV9T SUdIQU5ETEVSCisrCisgQkFTSF9IQVZFX1RJT0NTVEFUCisgQkFTSF9IQVZFX0ZJT05SRUFECisg QkFTSF9DSEVDS19TUEVFRF9UCistLS0gYS9yZWFkbGluZS9kaXNwbGF5LmMKKysrKyBiL3JlYWRs aW5lL2Rpc3BsYXkuYworQEAgLTEsMjQgKzEsMjQgQEAKKyAvKiBkaXNwbGF5LmMgLS0gcmVhZGxp bmUgcmVkaXNwbGF5IGZhY2lsaXR5LiAqLworIAorLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA1 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk4Ny0y MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRp bmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRp bmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChS ZWFkbGluZSksIGEgbGlicmFyeSAgICAKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdp dGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKyAKKy0gICBUaGUgR05V IFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVlIHNv ZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAg UmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBp cyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkg a2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QK Ky0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisrCisgI2Rl ZmluZSBSRUFETElORV9MSUJSQVJZCisgCisgI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCitA QCAtNjMsMzAgKzYzLDU5IEBACisgZXh0ZXJuIGNoYXIgKnN0cmNociAoKSwgKnN0cnJjaHIgKCk7 CisgI2VuZGlmIC8qICFzdHJjaHIgJiYgIV9fU1REQ19fICovCisgCistI2lmIGRlZmluZWQgKEhB Q0tfVEVSTUNBUF9NT1RJT04pCistZXh0ZXJuIGNoYXIgKl9ybF90ZXJtX2ZvcndhcmRfY2hhcjsK Ky0jZW5kaWYKKy0KKyBzdGF0aWMgdm9pZCB1cGRhdGVfbGluZSBQQVJBTVMoKGNoYXIgKiwgY2hh ciAqLCBpbnQsIGludCwgaW50LCBpbnQpKTsKKyBzdGF0aWMgdm9pZCBzcGFjZV90b19lb2wgUEFS QU1TKChpbnQpKTsKKyBzdGF0aWMgdm9pZCBkZWxldGVfY2hhcnMgUEFSQU1TKChpbnQpKTsKKyBz dGF0aWMgdm9pZCBpbnNlcnRfc29tZV9jaGFycyBQQVJBTVMoKGNoYXIgKiwgaW50LCBpbnQpKTsK KyBzdGF0aWMgdm9pZCBjciBQQVJBTVMoKHZvaWQpKTsKKyAKKysvKiBTdGF0ZSBvZiB2aXNpYmxl IGFuZCBpbnZpc2libGUgbGluZXMuICovCisrc3RydWN0IGxpbmVfc3RhdGUKKysgIHsKKysgICAg Y2hhciAqbGluZTsKKysgICAgaW50ICpsYnJlYWtzOworKyAgICBpbnQgbGJzaXplOworICNpZiBk ZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQorLXN0YXRpYyBpbnQgX3JsX2NvbF93aWR0aCBQQVJB TVMoKGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpKTsKKy1zdGF0aWMgaW50ICpfcmxfd3JhcHBlZF9s aW5lOworLSNlbHNlCistIyAgZGVmaW5lIF9ybF9jb2xfd2lkdGgobCwgcywgZSkJKCgoZSkgPD0g KHMpKSA/IDAgOiAoZSkgLSAocykpCisrICAgIGludCAqd3JhcHBlZF9saW5lOworKyAgICBpbnQg d2JzaXplOworICNlbmRpZgorKyAgfTsKKysKKysvKiBUaGUgbGluZSBkaXNwbGF5IGJ1ZmZlcnMu ICBPbmUgaXMgdGhlIGxpbmUgY3VycmVudGx5IGRpc3BsYXllZCBvbgorKyAgIHRoZSBzY3JlZW4u ICBUaGUgb3RoZXIgaXMgdGhlIGxpbmUgYWJvdXQgdG8gYmUgZGlzcGxheWVkLiAqLworK3N0YXRp YyBzdHJ1Y3QgbGluZV9zdGF0ZSBsaW5lX3N0YXRlX2FycmF5WzJdOworK3N0YXRpYyBzdHJ1Y3Qg bGluZV9zdGF0ZSAqbGluZV9zdGF0ZV92aXNpYmxlID0gJmxpbmVfc3RhdGVfYXJyYXlbMF07Cisr c3RhdGljIHN0cnVjdCBsaW5lX3N0YXRlICpsaW5lX3N0YXRlX2ludmlzaWJsZSA9ICZsaW5lX3N0 YXRlX2FycmF5WzFdOworK3N0YXRpYyBpbnQgbGluZV9zdHJ1Y3R1cmVzX2luaXRpYWxpemVkID0g MDsKKyAKKy1zdGF0aWMgaW50ICppbnZfbGJyZWFrcywgKnZpc19sYnJlYWtzOworLXN0YXRpYyBp bnQgaW52X2xic2l6ZSwgdmlzX2xic2l6ZTsKKysvKiBCYWNrd2FyZHMtY29tcGF0aWJsZSBuYW1l cy4gKi8KKysjZGVmaW5lIGludl9sYnJlYWtzCShsaW5lX3N0YXRlX2ludmlzaWJsZS0+bGJyZWFr cykKKysjZGVmaW5lIGludl9sYnNpemUJKGxpbmVfc3RhdGVfaW52aXNpYmxlLT5sYnNpemUpCisr I2RlZmluZSB2aXNfbGJyZWFrcwkobGluZV9zdGF0ZV92aXNpYmxlLT5sYnJlYWtzKQorKyNkZWZp bmUgdmlzX2xic2l6ZQkobGluZV9zdGF0ZV92aXNpYmxlLT5sYnNpemUpCisrCisrI2RlZmluZSB2 aXNpYmxlX2xpbmUJKGxpbmVfc3RhdGVfdmlzaWJsZS0+bGluZSkKKysjZGVmaW5lIGludmlzaWJs ZV9saW5lCShsaW5lX3N0YXRlX2ludmlzaWJsZS0+bGluZSkKKysKKysjaWYgZGVmaW5lZCAoSEFO RExFX01VTFRJQllURSkKKytzdGF0aWMgaW50IF9ybF9jb2xfd2lkdGggUEFSQU1TKChjb25zdCBj aGFyICosIGludCwgaW50LCBpbnQpKTsKKysjZWxzZQorKyMgIGRlZmluZSBfcmxfY29sX3dpZHRo KGwsIHMsIGUsIGYpCSgoKGUpIDw9IChzKSkgPyAwIDogKGUpIC0gKHMpKQorKyNlbmRpZgorIAor IC8qIEhldXJpc3RpYyB1c2VkIHRvIGRlY2lkZSB3aGV0aGVyIGl0IGlzIGZhc3RlciB0byBtb3Zl IGZyb20gQ1VSIHRvIE5FVworLSAgIGJ5IGJhY2tpbmcgdXAgb3Igb3V0cHV0dGluZyBhIGNhcnJp YWdlIHJldHVybiBhbmQgbW92aW5nIGZvcndhcmQuICovCisrICAgYnkgYmFja2luZyB1cCBvciBv dXRwdXR0aW5nIGEgY2FycmlhZ2UgcmV0dXJuIGFuZCBtb3ZpbmcgZm9yd2FyZC4gIENVUgorKyAg IGFuZCBORVcgYXJlIGVpdGhlciBib3RoIGJ1ZmZlciBwb3NpdGlvbnMgb3IgYWJzb2x1dGUgc2Ny ZWVuIHBvc2l0aW9ucy4gKi8KKyAjZGVmaW5lIENSX0ZBU1RFUihuZXcsIGN1cikgKCgobmV3KSAr IDEpIDwgKChjdXIpIC0gKG5ldykpKQorIAorKy8qIF9ybF9sYXN0X2NfcG9zIGlzIGFuIGFic29s dXRlIGN1cnNvciBwb3NpdGlvbiBpbiBtdWx0aWJ5dGUgbG9jYWxlcyBhbmQgYQorKyAgIGJ1ZmZl ciBpbmRleCBpbiBvdGhlcnMuICBUaGlzIG1hY3JvIGlzIHVzZWQgd2hlbiBkZWNpZGluZyB3aGV0 aGVyIHRoZQorKyAgIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uIGlzIGluIHRoZSBtaWRkbGUgb2Yg YSBwcm9tcHQgc3RyaW5nIGNvbnRhaW5pbmcKKysgICBpbnZpc2libGUgY2hhcmFjdGVycy4gIFhY WCAtIG1pZ2h0IG5lZWQgdG8gdGFrZSBgbW9kbWFyaycgaW50byBhY2NvdW50LiAqLworKyNkZWZp bmUgUFJPTVBUX0VORElOR19JTkRFWCBcCisrICAoKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVf b3JpZW50ZWQgPT0gMCkgPyBwcm9tcHRfcGh5c2ljYWxfY2hhcnMgOiBwcm9tcHRfbGFzdF9pbnZp c2libGUrMSkKKysgIAorKworIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKyAvKgkJCQkJCQkJICAgICovCisgLyoJ CQlEaXNwbGF5IHN0dWZmCQkJCSAgICAqLworQEAgLTEzOSw2ICsxNjgsOCBAQCBpbnQgX3JsX2xh c3RfY19wb3MgPSAwOworIGludCBfcmxfbGFzdF92X3BvcyA9IDA7CisgCisgc3RhdGljIGludCBj cG9zX2FkanVzdGVkOworK3N0YXRpYyBpbnQgY3Bvc19idWZmZXJfcG9zaXRpb247Cisrc3RhdGlj IGludCBwcm9tcHRfbXVsdGlieXRlX2NoYXJzOworIAorIC8qIE51bWJlciBvZiBsaW5lcyBjdXJy ZW50bHkgb24gc2NyZWVuIG1pbnVzIDEuICovCisgaW50IF9ybF92aXNfYm90bGluID0gMDsKK0BA IC0xNDgsMTEgKzE3OSw2IEBAIGludCBfcmxfdmlzX2JvdGxpbiA9IDA7CisgICAgZG9pbmcgaG9y aXpvbnRhbCBzY3JvbGxpbmcuICBJdCBzaGlmdHMgaW4gdGhpcmRzIG9mIGEgc2NyZWVud2lkdGgu ICovCisgc3RhdGljIGludCBsYXN0X2xtYXJnaW47CisgCistLyogVGhlIGxpbmUgZGlzcGxheSBi dWZmZXJzLiAgT25lIGlzIHRoZSBsaW5lIGN1cnJlbnRseSBkaXNwbGF5ZWQgb24KKy0gICB0aGUg c2NyZWVuLiAgVGhlIG90aGVyIGlzIHRoZSBsaW5lIGFib3V0IHRvIGJlIGRpc3BsYXllZC4gKi8K Ky1zdGF0aWMgY2hhciAqdmlzaWJsZV9saW5lID0gKGNoYXIgKilOVUxMOworLXN0YXRpYyBjaGFy ICppbnZpc2libGVfbGluZSA9IChjaGFyICopTlVMTDsKKy0KKyAvKiBBIGJ1ZmZlciBmb3IgYG1v ZGVsaW5lJyBtZXNzYWdlcy4gKi8KKyBzdGF0aWMgY2hhciBtc2dfYnVmWzEyOF07CisgCitAQCAt MTY2LDYgKzE5Miw3IEBAIHN0YXRpYyBpbnQgbGluZV9zaXplID0gMTAyNDsKKyAgICBpbmNsdWRl IGludmlzaWJsZSBjaGFyYWN0ZXJzLiAqLworIAorIHN0YXRpYyBjaGFyICpsb2NhbF9wcm9tcHQs ICpsb2NhbF9wcm9tcHRfcHJlZml4OworK3N0YXRpYyBpbnQgbG9jYWxfcHJvbXB0X2xlbjsKKyBz dGF0aWMgaW50IHByb21wdF92aXNpYmxlX2xlbmd0aCwgcHJvbXB0X3ByZWZpeF9sZW5ndGg7Cisg CisgLyogVGhlIG51bWJlciBvZiBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0aGUgbGluZSBjdXJy ZW50bHkgYmVpbmcKK0BAIC0xOTIsNiArMjE5LDEwIEBAIHN0YXRpYyBpbnQgcHJvbXB0X2xhc3Rf c2NyZWVuX2xpbmU7CisgCisgc3RhdGljIGludCBwcm9tcHRfcGh5c2ljYWxfY2hhcnM7CisgCisr Lyogc2V0IHRvIGEgbm9uLXplcm8gdmFsdWUgYnkgcmxfcmVkaXNwbGF5IGlmIHdlIGFyZSBtYXJr aW5nIG1vZGlmaWVkIGhpc3RvcnkKKysgICBsaW5lcyBhbmQgdGhlIGN1cnJlbnQgbGluZSBpcyBz byBtYXJrZWQuICovCisrc3RhdGljIGludCBtb2RtYXJrOworKworIC8qIFZhcmlhYmxlcyB0byBz YXZlIGFuZCByZXN0b3JlIHByb21wdCBhbmQgZGlzcGxheSBpbmZvcm1hdGlvbi4gKi8KKyAKKyAv KiBUaGVzZSBhcmUgZ2V0dGluZyBudW1lcm91cyBlbm91Z2ggdGhhdCBpdCdzIHRpbWUgdG8gY3Jl YXRlIGEgc3RydWN0LiAqLworQEAgLTIwMSw2ICsyMzIsNyBAQCBzdGF0aWMgY2hhciAqc2F2ZWRf bG9jYWxfcHJlZml4OworIHN0YXRpYyBpbnQgc2F2ZWRfbGFzdF9pbnZpc2libGU7Cisgc3RhdGlj IGludCBzYXZlZF92aXNpYmxlX2xlbmd0aDsKKyBzdGF0aWMgaW50IHNhdmVkX3ByZWZpeF9sZW5n dGg7Cisrc3RhdGljIGludCBzYXZlZF9sb2NhbF9sZW5ndGg7Cisgc3RhdGljIGludCBzYXZlZF9p bnZpc19jaGFyc19maXJzdF9saW5lOworIHN0YXRpYyBpbnQgc2F2ZWRfcGh5c2ljYWxfY2hhcnM7 CisgCitAQCAtMjI0LDcgKzI1Niw3IEBAIGV4cGFuZF9wcm9tcHQgKHBtdCwgbHAsIGxpcCwgbmlm bHAsIHZscCkKKyAgICAgIGNoYXIgKnBtdDsKKyAgICAgIGludCAqbHAsICpsaXAsICpuaWZscCwg KnZscDsKKyB7CistICBjaGFyICpyLCAqcmV0LCAqcDsKKysgIGNoYXIgKnIsICpyZXQsICpwLCAq aWdzdGFydDsKKyAgIGludCBsLCBybCwgbGFzdCwgaWdub3JpbmcsIG5pbnZpcywgaW52ZmwsIGlu dmZsc2V0LCBpbmQsIHBpbmQsIHBoeXNjaGFyczsKKyAKKyAgIC8qIFNob3J0LWNpcmN1aXQgaWYg d2UgY2FuLiAqLworQEAgLTI0OCwxOSArMjgwLDIxIEBAIGV4cGFuZF9wcm9tcHQgKHBtdCwgbHAs IGxpcCwgbmlmbHAsIHZscCkKKyAgIGludmZsID0gMDsJLyogaW52aXNpYmxlIGNoYXJzIGluIGZp cnN0IGxpbmUgb2YgcHJvbXB0ICovCisgICBpbnZmbHNldCA9IDA7CS8qIHdlIG9ubHkgd2FudCB0 byBzZXQgaW52Zmwgb25jZSAqLworIAorKyAgaWdzdGFydCA9IDA7CisgICBmb3IgKHJsID0gaWdu b3JpbmcgPSBsYXN0ID0gbmludmlzID0gcGh5c2NoYXJzID0gMCwgcCA9IHBtdDsgcCAmJiAqcDsg cCsrKQorICAgICB7CisgICAgICAgLyogVGhpcyBjb2RlIHN0cmlwcyB0aGUgaW52aXNpYmxlIGNo YXJhY3RlciBzdHJpbmcgbWFya2VycworIAkgUkxfUFJPTVBUX1NUQVJUX0lHTk9SRSBhbmQgUkxf UFJPTVBUX0VORF9JR05PUkUgKi8KKy0gICAgICBpZiAoKnAgPT0gUkxfUFJPTVBUX1NUQVJUX0lH Tk9SRSkKKysgICAgICBpZiAoaWdub3JpbmcgPT0gMCAmJiAqcCA9PSBSTF9QUk9NUFRfU1RBUlRf SUdOT1JFKQkJLyogWFhYIC0gY2hlY2sgaWdub3Jpbmc/ICovCisgCXsKKy0JICBpZ25vcmluZysr OworKwkgIGlnbm9yaW5nID0gMTsKKysJICBpZ3N0YXJ0ID0gcDsKKyAJICBjb250aW51ZTsKKyAJ fQorICAgICAgIGVsc2UgaWYgKGlnbm9yaW5nICYmICpwID09IFJMX1BST01QVF9FTkRfSUdOT1JF KQorIAl7CisgCSAgaWdub3JpbmcgPSAwOworLQkgIGlmIChwWy0xXSAhPSBSTF9QUk9NUFRfU1RB UlRfSUdOT1JFKQorKwkgIGlmIChwICE9IChpZ3N0YXJ0ICsgMSkpCisgCSAgICBsYXN0ID0gciAt IHJldCAtIDE7CisgCSAgY29udGludWU7CisgCX0KK0BAIC0yNzYsOCArMzEwLDEzIEBAIGV4cGFu ZF9wcm9tcHQgKHBtdCwgbHAsIGxpcCwgbmlmbHAsIHZscCkKKyAJICAgICAgICAqcisrID0gKnAr KzsKKyAJICAgICAgaWYgKCFpZ25vcmluZykKKyAJCXsKKysJCSAgLyogcmwgZW5kcyB1cCBiZWlu ZyBhc3NpZ25lZCB0byBwcm9tcHRfdmlzaWJsZV9sZW5ndGgsCisrCQkgICAgIHdoaWNoIGlzIHRo ZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgYnVmZmVyIHRoYXQKKysJCSAgICAgY29udHJp YnV0ZSB0byBjaGFyYWN0ZXJzIG9uIHRoZSBzY3JlZW4sIHdoaWNoIG1pZ2h0CisrCQkgICAgIG5v dCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIHBoeXNpY2FsIGNoYXJhY3RlcnMKKysJCSAg ICAgb24gdGhlIHNjcmVlbiBpbiB0aGUgcHJlc2VuY2Ugb2YgbXVsdGlieXRlIGNoYXJhY3RlcnMg Ki8KKyAJCSAgcmwgKz0gaW5kIC0gcGluZDsKKy0JCSAgcGh5c2NoYXJzICs9IF9ybF9jb2xfd2lk dGggKHBtdCwgcGluZCwgaW5kKTsKKysJCSAgcGh5c2NoYXJzICs9IF9ybF9jb2xfd2lkdGggKHBt dCwgcGluZCwgaW5kLCAwKTsKKyAJCX0KKyAJICAgICAgZWxzZQorIAkJbmludmlzICs9IGluZCAt IHBpbmQ7CitAQCAtMzYwLDYgKzM5OSw3IEBAIHJsX2V4cGFuZF9wcm9tcHQgKHByb21wdCkKKyAg IEZSRUUgKGxvY2FsX3Byb21wdF9wcmVmaXgpOworIAorICAgbG9jYWxfcHJvbXB0ID0gbG9jYWxf cHJvbXB0X3ByZWZpeCA9IChjaGFyICopMDsKKysgIGxvY2FsX3Byb21wdF9sZW4gPSAwOworICAg cHJvbXB0X2xhc3RfaW52aXNpYmxlID0gcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUgPSAw OworICAgcHJvbXB0X3Zpc2libGVfbGVuZ3RoID0gcHJvbXB0X3BoeXNpY2FsX2NoYXJzID0gMDsK KyAKK0BAIC0zNzUsNiArNDE1LDcgQEAgcmxfZXhwYW5kX3Byb21wdCAocHJvbXB0KQorIAkJCQkJ ICAgICZwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSwKKyAJCQkJCSAgICAmcHJvbXB0X3Bo eXNpY2FsX2NoYXJzKTsKKyAgICAgICBsb2NhbF9wcm9tcHRfcHJlZml4ID0gKGNoYXIgKikwOwor KyAgICAgIGxvY2FsX3Byb21wdF9sZW4gPSBsb2NhbF9wcm9tcHQgPyBzdHJsZW4gKGxvY2FsX3By b21wdCkgOiAwOworICAgICAgIHJldHVybiAocHJvbXB0X3Zpc2libGVfbGVuZ3RoKTsKKyAgICAg fQorICAgZWxzZQorQEAgLTM4MywxNiArNDI0LDE3IEBAIHJsX2V4cGFuZF9wcm9tcHQgKHByb21w dCkKKyAgICAgICB0ID0gKytwOworICAgICAgIGxvY2FsX3Byb21wdCA9IGV4cGFuZF9wcm9tcHQg KHAsICZwcm9tcHRfdmlzaWJsZV9sZW5ndGgsCisgCQkJCSAgICAgICAmcHJvbXB0X2xhc3RfaW52 aXNpYmxlLAorLQkJCQkgICAgICAgKGludCAqKU5VTEwsCisrCQkJCSAgICAgICAmcHJvbXB0X2lu dmlzX2NoYXJzX2ZpcnN0X2xpbmUsCisgCQkJCSAgICAgICAmcHJvbXB0X3BoeXNpY2FsX2NoYXJz KTsKKyAgICAgICBjID0gKnQ7ICp0ID0gJ1wwJzsKKyAgICAgICAvKiBUaGUgcG9ydGlvbiBvZiB0 aGUgcHJvbXB0IHN0cmluZyB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZQorIAkgZmluYWwgbmV3bGlu ZSBpcyBub3cgbnVsbC10ZXJtaW5hdGVkLiAqLworICAgICAgIGxvY2FsX3Byb21wdF9wcmVmaXgg PSBleHBhbmRfcHJvbXB0IChwcm9tcHQsICZwcm9tcHRfcHJlZml4X2xlbmd0aCwKKyAJCQkJCQkg ICAoaW50ICopTlVMTCwKKy0JCQkJCQkgICAmcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUs CisrCQkJCQkJICAgKGludCAqKU5VTEwsCisgCQkJCQkJICAgKGludCAqKU5VTEwpOworICAgICAg ICp0ID0gYzsKKysgICAgICBsb2NhbF9wcm9tcHRfbGVuID0gbG9jYWxfcHJvbXB0ID8gc3RybGVu IChsb2NhbF9wcm9tcHQpIDogMDsKKyAgICAgICByZXR1cm4gKHByb21wdF9wcmVmaXhfbGVuZ3Ro KTsKKyAgICAgfQorIH0KK0BAIC00MzQsMTMgKzQ3NiwyMSBAQCBpbml0X2xpbmVfc3RydWN0dXJl cyAobWluc2l6ZSkKKyAgICAgeworICAgICAgIC8qIHNob3VsZCBiZSBlbm91Z2guICovCisgICAg ICAgaW52X2xic2l6ZSA9IHZpc19sYnNpemUgPSAyNTY7CistICAgICAgaW52X2xicmVha3MgPSAo aW50ICopeG1hbGxvYyAoaW52X2xic2l6ZSAqIHNpemVvZiAoaW50KSk7CistICAgICAgdmlzX2xi cmVha3MgPSAoaW50ICopeG1hbGxvYyAodmlzX2xic2l6ZSAqIHNpemVvZiAoaW50KSk7CisrCisg I2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCistICAgICAgX3JsX3dyYXBwZWRfbGluZSA9 IChpbnQgKil4bWFsbG9jICh2aXNfbGJzaXplICogc2l6ZW9mIChpbnQpKTsKKysgICAgICBsaW5l X3N0YXRlX3Zpc2libGUtPndic2l6ZSA9IHZpc19sYnNpemU7CisrICAgICAgbGluZV9zdGF0ZV92 aXNpYmxlLT53cmFwcGVkX2xpbmUgPSAoaW50ICopeG1hbGxvYyAobGluZV9zdGF0ZV92aXNpYmxl LT53YnNpemUgKiBzaXplb2YgKGludCkpOworKworKyAgICAgIGxpbmVfc3RhdGVfaW52aXNpYmxl LT53YnNpemUgPSBpbnZfbGJzaXplOworKyAgICAgIGxpbmVfc3RhdGVfaW52aXNpYmxlLT53cmFw cGVkX2xpbmUgPSAoaW50ICopeG1hbGxvYyAobGluZV9zdGF0ZV9pbnZpc2libGUtPndic2l6ZSAq IHNpemVvZiAoaW50KSk7CisgI2VuZGlmCisrCisrICAgICAgaW52X2xicmVha3MgPSAoaW50ICop eG1hbGxvYyAoaW52X2xic2l6ZSAqIHNpemVvZiAoaW50KSk7CisrICAgICAgdmlzX2xicmVha3Mg PSAoaW50ICopeG1hbGxvYyAodmlzX2xic2l6ZSAqIHNpemVvZiAoaW50KSk7CisgICAgICAgaW52 X2xicmVha3NbMF0gPSB2aXNfbGJyZWFrc1swXSA9IDA7CisgICAgIH0KKysKKysgIGxpbmVfc3Ry dWN0dXJlc19pbml0aWFsaXplZCA9IDE7CisgfQorICAgCisgLyogQmFzaWMgcmVkaXNwbGF5IGFs Z29yaXRobS4gKi8KK0BAIC00NDksOCArNDk5LDggQEAgcmxfcmVkaXNwbGF5ICgpCisgeworICAg cmVnaXN0ZXIgaW50IGluLCBvdXQsIGMsIGxpbmVudW0sIGN1cnNvcl9saW5lbnVtOworICAgcmVn aXN0ZXIgY2hhciAqbGluZTsKKy0gIGludCBjX3BvcywgaW52X2JvdGxpbiwgbGJfYm90bGluLCBs Yl9saW5lbnVtLCBvX2Nwb3M7CistICBpbnQgbmV3bGluZXMsIGxwb3MsIHRlbXAsIG1vZG1hcmss IG4wLCBudW07CisrICBpbnQgaW52X2JvdGxpbiwgbGJfYm90bGluLCBsYl9saW5lbnVtLCBvX2Nw b3M7CisrICBpbnQgbmV3bGluZXMsIGxwb3MsIHRlbXAsIG4wLCBudW0sIHByb21wdF9saW5lc19l c3RpbWF0ZTsKKyAgIGNoYXIgKnByb21wdF90aGlzX2xpbmU7CisgI2lmIGRlZmluZWQgKEhBTkRM RV9NVUxUSUJZVEUpCisgICB3Y2hhcl90IHdjOworQEAgLTQ2MCwyNCArNTEwLDI3IEBAIHJsX3Jl ZGlzcGxheSAoKQorICAgaW50IF9ybF93cmFwcGVkX211bHRpY29sdW1uID0gMDsKKyAjZW5kaWYK KyAKKy0gIGlmICghcmVhZGxpbmVfZWNob2luZ19wKQorKyAgaWYgKF9ybF9lY2hvaW5nX3AgPT0g MCkKKyAgICAgcmV0dXJuOworIAorLSAgLyogU2lnbmFscyBhcmUgYmxvY2tlZCB0aHJvdWdoIHRo aXMgZnVuY3Rpb24gYXMgdGhlIGdsb2JhbCBkYXRhIHN0cnVjdHVyZXMKKy0gICAgIGNvdWxkIGdl dCBjb3JydXB0ZWQgdXBvbiBtb2RpZmljYXRpb25zIGZyb20gYW4gaW52b2tlZCBzaWduYWwgaGFu ZGxlci4gKi8KKy0gIF9ybF9ibG9ja19zaWdpbnQgKCk7CisrICAvKiBCbG9jayBrZXlib2FyZCBp bnRlcnJ1cHRzIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBtYW5pcHVsYXRlcyBnbG9iYWwKKysgICAg IGRhdGEgc3RydWN0dXJlcy4gKi8KKysgIF9ybF9ibG9ja19zaWdpbnQgKCk7ICAKKysgIFJMX1NF VFNUQVRFIChSTF9TVEFURV9SRURJU1BMQVlJTkcpOworIAorICAgaWYgKCFybF9kaXNwbGF5X3By b21wdCkKKyAgICAgcmxfZGlzcGxheV9wcm9tcHQgPSAiIjsKKyAKKy0gIGlmIChpbnZpc2libGVf bGluZSA9PSAwIHx8IHZpc19sYnJlYWtzID09IDApCisrICBpZiAobGluZV9zdHJ1Y3R1cmVzX2lu aXRpYWxpemVkID09IDApCisgICAgIHsKKyAgICAgICBpbml0X2xpbmVfc3RydWN0dXJlcyAoMCk7 CisgICAgICAgcmxfb25fbmV3X2xpbmUgKCk7CisgICAgIH0KKyAKKyAgIC8qIERyYXcgdGhlIGxp bmUgaW50byB0aGUgYnVmZmVyLiAqLworLSAgY19wb3MgPSAtMTsKKysgIGNwb3NfYnVmZmVyX3Bv c2l0aW9uID0gLTE7CisrCisrICBwcm9tcHRfbXVsdGlieXRlX2NoYXJzID0gcHJvbXB0X3Zpc2li bGVfbGVuZ3RoIC0gcHJvbXB0X3BoeXNpY2FsX2NoYXJzOworIAorICAgbGluZSA9IGludmlzaWJs ZV9saW5lOworICAgb3V0ID0gaW52X2JvdGxpbiA9IDA7CitAQCAtNTA0LDI0ICs1NTcsMjMgQEAg cmxfcmVkaXNwbGF5ICgpCisgICAgICBudW1iZXIgb2Ygbm9uLXZpc2libGUgY2hhcmFjdGVycyBp biB0aGUgcHJvbXB0IHN0cmluZy4gKi8KKyAgIGlmIChybF9kaXNwbGF5X3Byb21wdCA9PSBybF9w cm9tcHQgfHwgbG9jYWxfcHJvbXB0KQorICAgICB7CistICAgICAgaW50IGxvY2FsX2xlbiA9IGxv Y2FsX3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0KSA6IDA7CisgICAgICAgaWYgKGxvY2Fs X3Byb21wdF9wcmVmaXggJiYgZm9yY2VkX2Rpc3BsYXkpCisgCV9ybF9vdXRwdXRfc29tZV9jaGFy cyAobG9jYWxfcHJvbXB0X3ByZWZpeCwgc3RybGVuIChsb2NhbF9wcm9tcHRfcHJlZml4KSk7Cisg CistICAgICAgaWYgKGxvY2FsX2xlbiA+IDApCisrICAgICAgaWYgKGxvY2FsX3Byb21wdF9sZW4g PiAwKQorIAl7CistCSAgdGVtcCA9IGxvY2FsX2xlbiArIG91dCArIDI7CisrCSAgdGVtcCA9IGxv Y2FsX3Byb21wdF9sZW4gKyBvdXQgKyAyOworIAkgIGlmICh0ZW1wID49IGxpbmVfc2l6ZSkKKyAJ ICAgIHsKKyAJICAgICAgbGluZV9zaXplID0gKHRlbXAgKyAxMDI0KSAtICh0ZW1wICUgMTAyNCk7 CisgCSAgICAgIHZpc2libGVfbGluZSA9IChjaGFyICopeHJlYWxsb2MgKHZpc2libGVfbGluZSwg bGluZV9zaXplKTsKKyAJICAgICAgbGluZSA9IGludmlzaWJsZV9saW5lID0gKGNoYXIgKil4cmVh bGxvYyAoaW52aXNpYmxlX2xpbmUsIGxpbmVfc2l6ZSk7CisgCSAgICB9CistCSAgc3RybmNweSAo bGluZSArIG91dCwgbG9jYWxfcHJvbXB0LCBsb2NhbF9sZW4pOworLQkgIG91dCArPSBsb2NhbF9s ZW47CisrCSAgc3RybmNweSAobGluZSArIG91dCwgbG9jYWxfcHJvbXB0LCBsb2NhbF9wcm9tcHRf bGVuKTsKKysJICBvdXQgKz0gbG9jYWxfcHJvbXB0X2xlbjsKKyAJfQorICAgICAgIGxpbmVbb3V0 XSA9ICdcMCc7CistICAgICAgd3JhcF9vZmZzZXQgPSBsb2NhbF9sZW4gLSBwcm9tcHRfdmlzaWJs ZV9sZW5ndGg7CisrICAgICAgd3JhcF9vZmZzZXQgPSBsb2NhbF9wcm9tcHRfbGVuIC0gcHJvbXB0 X3Zpc2libGVfbGVuZ3RoOworICAgICB9CisgICBlbHNlCisgICAgIHsKK0BAIC01NzYsMTAgKzYy OCwxNCBAQCBybF9yZWRpc3BsYXkgKCkKKyAJICAgICAgeyBcCisgCQlpbnZfbGJzaXplICo9IDI7 IFwKKyAJCWludl9sYnJlYWtzID0gKGludCAqKXhyZWFsbG9jIChpbnZfbGJyZWFrcywgaW52X2xi c2l6ZSAqIHNpemVvZiAoaW50KSk7IFwKKy0JCV9ybF93cmFwcGVkX2xpbmUgPSAoaW50ICopeHJl YWxsb2MgKF9ybF93cmFwcGVkX2xpbmUsIGludl9sYnNpemUgKiBzaXplb2YgKGludCkpOyBcCisg CSAgICAgIH0gXAorIAkgICAgaW52X2xicmVha3NbKytuZXdsaW5lc10gPSBvdXQ7IFwKKy0JICAg IF9ybF93cmFwcGVkX2xpbmVbbmV3bGluZXNdID0gX3JsX3dyYXBwZWRfbXVsdGljb2x1bW47IFwK KysJICAgIGlmIChuZXdsaW5lcyA+PSAobGluZV9zdGF0ZV9pbnZpc2libGUtPndic2l6ZSAtIDEp KSBcCisrCSAgICAgIHsgXAorKwkJbGluZV9zdGF0ZV9pbnZpc2libGUtPndic2l6ZSAqPSAyOyBc CisrCQlsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lID0gKGludCAqKXhyZWFsbG9j IChsaW5lX3N0YXRlX2ludmlzaWJsZS0+d3JhcHBlZF9saW5lLCBsaW5lX3N0YXRlX2ludmlzaWJs ZS0+d2JzaXplICogc2l6ZW9mKGludCkpOyBcCisrCSAgICAgIH0gXAorKwkgICAgbGluZV9zdGF0 ZV9pbnZpc2libGUtPndyYXBwZWRfbGluZVtuZXdsaW5lc10gPSBfcmxfd3JhcHBlZF9tdWx0aWNv bHVtbjsgXAorIAkgICAgbHBvcyA9IDA7IFwKKyAJICB9IFwKKyAgICAgICB9IHdoaWxlICgwKQor QEAgLTYwMiwyNiArNjU4LDI2IEBAIHJsX3JlZGlzcGxheSAoKQorIAorICAgLyogaW52X2xicmVh a3NbaV0gaXMgd2hlcmUgbGluZSBpIHN0YXJ0cyBpbiB0aGUgYnVmZmVyLiAqLworICAgaW52X2xi cmVha3NbbmV3bGluZXMgPSAwXSA9IDA7CistI2lmIDAKKy0gIGxwb3MgPSBvdXQgLSB3cmFwX29m ZnNldDsKKy0jZWxzZQorICAgbHBvcyA9IHByb21wdF9waHlzaWNhbF9jaGFycyArIG1vZG1hcms7 CistI2VuZGlmCisgCisgI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCistICBtZW1zZXQg KF9ybF93cmFwcGVkX2xpbmUsIDAsIHZpc19sYnNpemUpOworKyAgbWVtc2V0IChsaW5lX3N0YXRl X2ludmlzaWJsZS0+d3JhcHBlZF9saW5lLCAwLCBsaW5lX3N0YXRlX2ludmlzaWJsZS0+d2JzaXpl ICogc2l6ZW9mIChpbnQpKTsKKyAgIG51bSA9IDA7CisgI2VuZGlmCisgCisgICAvKiBwcm9tcHRf aW52aXNfY2hhcnNfZmlyc3RfbGluZSBpcyB0aGUgbnVtYmVyIG9mIGludmlzaWJsZSBjaGFyYWN0 ZXJzIGluCisgICAgICB0aGUgZmlyc3QgcGh5c2ljYWwgbGluZSBvZiB0aGUgcHJvbXB0LgorICAg ICAgd3JhcF9vZmZzZXQgLSBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSBpcyB0aGUgbnVt YmVyIG9mIGludmlzCistICAgICBjaGFycyBvbiB0aGUgc2Vjb25kIGxpbmUuICovCisrICAgICBj aGFycyBvbiB0aGUgc2Vjb25kIChvciwgbW9yZSBnZW5lcmFsbHksIGxhc3QpIGxpbmUuICovCisr CisrICAvKiBUaGlzIGlzIHplcm8tYmFzZWQsIHVzZWQgdG8gc2V0IHRoZSBuZXdsaW5lcyAqLwor KyAgcHJvbXB0X2xpbmVzX2VzdGltYXRlID0gbHBvcyAvIF9ybF9zY3JlZW53aWR0aDsKKyAKKyAg IC8qIHdoYXQgaWYgbHBvcyBpcyBhbHJlYWR5ID49IF9ybF9zY3JlZW53aWR0aCBiZWZvcmUgd2Ug c3RhcnQgZHJhd2luZyB0aGUKKyAgICAgIGNvbnRlbnRzIG9mIHRoZSBjb21tYW5kIGxpbmU/ICov CisgICB3aGlsZSAobHBvcyA+PSBfcmxfc2NyZWVud2lkdGgpCisgICAgIHsKKysgICAgICBpbnQg ejsKKyAgICAgICAvKiBmaXggZnJvbSBEYXJpbiBKb2huc29uIDxkYXJpbkBhY3Vzb24uY29tPiBm b3IgcHJvbXB0IHN0cmluZyB3aXRoCisgICAgICAgICAgaW52aXNpYmxlIGNoYXJhY3RlcnMgdGhh dCBpcyBsb25nZXIgdGhhbiB0aGUgc2NyZWVuIHdpZHRoLiAgVGhlCisgICAgICAgICAgcHJvbXB0 X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUgdmFyaWFibGUgY291bGQgYmUgbWFkZSBpbnRvIGFuIGFy cmF5CitAQCAtNjMwLDM3ICs2ODYsNDggQEAgcmxfcmVkaXNwbGF5ICgpCisgICAgICAgICAgcHJv bXB0cyB0aGF0IGV4Y2VlZCB0d28gcGh5c2ljYWwgbGluZXM/CisgICAgICAgICAgQWRkaXRpb25h bCBsb2dpYyBmaXggZnJvbSBFZHdhcmQgQ2F0bXVyIDxlZEBjYXRtdXIuY28udWs+ICovCisgI2lm IGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCistICAgICAgbjAgPSBudW07CistICAgICAgdGVt cCA9IGxvY2FsX3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0KSA6IDA7CistICAgICAgd2hp bGUgKG51bSA8IHRlbXApCisrICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3Jp ZW50ZWQgPT0gMCAmJiBwcm9tcHRfbXVsdGlieXRlX2NoYXJzID4gMCkKKyAJeworLQkgIGlmIChf cmxfY29sX3dpZHRoICAobG9jYWxfcHJvbXB0LCBuMCwgbnVtKSA+IF9ybF9zY3JlZW53aWR0aCkK KysJICBuMCA9IG51bTsKKysgICAgICAgICAgdGVtcCA9IGxvY2FsX3Byb21wdF9sZW47CisrICAg ICAgICAgIHdoaWxlIChudW0gPCB0ZW1wKQorIAkgICAgeworLQkgICAgICBudW0gPSBfcmxfZmlu ZF9wcmV2X21iY2hhciAobG9jYWxfcHJvbXB0LCBudW0sIE1CX0ZJTkRfQU5ZKTsKKy0JICAgICAg YnJlYWs7CisrCSAgICAgIHogPSBfcmxfY29sX3dpZHRoICAobG9jYWxfcHJvbXB0LCBuMCwgbnVt LCAxKTsKKysJICAgICAgaWYgKHogPiBfcmxfc2NyZWVud2lkdGgpCisrCQl7CisrCSAgICAgICAg ICBudW0gPSBfcmxfZmluZF9wcmV2X21iY2hhciAobG9jYWxfcHJvbXB0LCBudW0sIE1CX0ZJTkRf QU5ZKTsKKysJICAgICAgICAgIGJyZWFrOworKwkJfQorKwkgICAgICBlbHNlIGlmICh6ID09IF9y bF9zY3JlZW53aWR0aCkKKysJICAgICAgICBicmVhazsKKysJICAgICAgbnVtKys7CisgCSAgICB9 CistCSAgbnVtKys7CisrICAgICAgICAgIHRlbXAgPSBudW07CisgCX0KKy0gICAgICB0ZW1wID0g bnVtICsKKy0jZWxzZQorLSAgICAgIHRlbXAgPSAoKG5ld2xpbmVzICsgMSkgKiBfcmxfc2NyZWVu d2lkdGgpICsKKysgICAgICBlbHNlCisgI2VuZGlmIC8qICFIQU5ETEVfTVVMVElCWVRFICovCist ICAgICAgICAgICAgICgobG9jYWxfcHJvbXB0X3ByZWZpeCA9PSAwKSA/ICgobmV3bGluZXMgPT0g MCkgPyBwcm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZQorLQkJCQkJCQkgICAgOiAoKG5ld2xp bmVzID09IDEpID8gd3JhcF9vZmZzZXQgOiAwKSkKKy0JCQkJCSA6ICgobmV3bGluZXMgPT0gMCkg PyB3cmFwX29mZnNldCA6MCkpOworKwl0ZW1wID0gKChuZXdsaW5lcyArIDEpICogX3JsX3NjcmVl bndpZHRoKTsKKysKKysgICAgICAvKiBOb3cgYWNjb3VudCBmb3IgaW52aXNpYmxlIGNoYXJhY3Rl cnMgaW4gdGhlIGN1cnJlbnQgbGluZS4gKi8KKysgICAgICAvKiBYWFggLSB0aGlzIGFzc3VtZXMg dGhhdCB0aGUgaW52aXNpYmxlIGNoYXJhY3RlcnMgbWF5IGJlIHNwbGl0LCBidXQgb25seQorKwkg YmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IGxpbmVzLiAqLworKyAgICAgIHRlbXAgKz0g KChsb2NhbF9wcm9tcHRfcHJlZml4ID09IDApID8gKChuZXdsaW5lcyA9PSAwKSA/IHByb21wdF9p bnZpc19jaGFyc19maXJzdF9saW5lCisrCQkJCQkJCSAgICAgOiAoKG5ld2xpbmVzID09IHByb21w dF9saW5lc19lc3RpbWF0ZSkgPyB3cmFwX29mZnNldCA6IHByb21wdF9pbnZpc19jaGFyc19maXJz dF9saW5lKSkKKysJCQkJCSAgOiAoKG5ld2xpbmVzID09IDApID8gd3JhcF9vZmZzZXQgOiAwKSk7 CisgICAgICAgICAgICAgIAorICAgICAgIGludl9sYnJlYWtzWysrbmV3bGluZXNdID0gdGVtcDsK KyAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKKy0gICAgICBscG9zIC09IF9ybF9jb2xf d2lkdGggKGxvY2FsX3Byb21wdCwgbjAsIG51bSk7CistI2Vsc2UKKy0gICAgICBscG9zIC09IF9y bF9zY3JlZW53aWR0aDsKKysgICAgICBpZiAoTUJfQ1VSX01BWCA+IDEgJiYgcmxfYnl0ZV9vcmll bnRlZCA9PSAwICYmIHByb21wdF9tdWx0aWJ5dGVfY2hhcnMgPiAwKQorKwlscG9zIC09IF9ybF9j b2xfd2lkdGggKGxvY2FsX3Byb21wdCwgbjAsIG51bSwgMSk7CisrICAgICAgZWxzZQorICNlbmRp ZgorKwlscG9zIC09IF9ybF9zY3JlZW53aWR0aDsKKyAgICAgfQorIAorICAgcHJvbXB0X2xhc3Rf c2NyZWVuX2xpbmUgPSBuZXdsaW5lczsKKyAKKyAgIC8qIERyYXcgdGhlIHJlc3Qgb2YgdGhlIGxp bmUgKGFmdGVyIHRoZSBwcm9tcHQpIGludG8gaW52aXNpYmxlX2xpbmUsIGtlZXBpbmcKKy0gICAg IHRyYWNrIG9mIHdoZXJlIHRoZSBjdXJzb3IgaXMgKGNfcG9zKSwgdGhlIG51bWJlciBvZiB0aGUg bGluZSBjb250YWluaW5nCisrICAgICB0cmFjayBvZiB3aGVyZSB0aGUgY3Vyc29yIGlzIChjcG9z X2J1ZmZlcl9wb3NpdGlvbiksIHRoZSBudW1iZXIgb2YgdGhlIGxpbmUgY29udGFpbmluZworICAg ICAgdGhlIGN1cnNvciAobGJfbGluZW51bSksIHRoZSBsYXN0IGxpbmUgbnVtYmVyIChsYl9ib3Rs aW4gYW5kIGludl9ib3RsaW4pLgorICAgICAgSXQgbWFpbnRhaW5zIGFuIGFycmF5IG9mIGxpbmUg YnJlYWtzIGZvciBkaXNwbGF5IChpbnZfbGJyZWFrcykuCisgICAgICBUaGlzIGhhbmRsZXMgZXhw YW5kaW5nIHRhYnMgZm9yIGRpc3BsYXkgYW5kIGRpc3BsYXlpbmcgbWV0YSBjaGFyYWN0ZXJzLiAq LworQEAgLTY3MCw2ICs3MzcsNyBAQCBybF9yZWRpc3BsYXkgKCkKKyAgIGlmIChNQl9DVVJfTUFY ID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCisgICAgIHsKKyAgICAgICBtZW1zZXQgKCZw cywgMCwgc2l6ZW9mIChtYnN0YXRlX3QpKTsKKysgICAgICAvKiBYWFggLSB3aGF0IGlmIHdjX2J5 dGVzIGVuZHMgdXAgPD0gMD8gY2hlY2sgZm9yIE1CX0lOVkFMSURDSCAqLworICAgICAgIHdjX2J5 dGVzID0gbWJydG93YyAoJndjLCBybF9saW5lX2J1ZmZlciwgcmxfZW5kLCAmcHMpOworICAgICB9 CisgICBlbHNlCitAQCAtNzEzLDcgKzc4MSw3IEBAIHJsX3JlZGlzcGxheSAoKQorIAorICAgICAg IGlmIChpbiA9PSBybF9wb2ludCkKKyAJeworLQkgIGNfcG9zID0gb3V0OworKwkgIGNwb3NfYnVm ZmVyX3Bvc2l0aW9uID0gb3V0OworIAkgIGxiX2xpbmVudW0gPSBuZXdsaW5lczsKKyAJfQorIAor QEAgLTgwNyw3ICs4NzUsNyBAQCBybF9yZWRpc3BsYXkgKCkKKyAJCSAgfQorIAkgICAgICBpZiAo aW4gPT0gcmxfcG9pbnQpCisgCQl7CistCQkgIGNfcG9zID0gb3V0OworKwkJICBjcG9zX2J1ZmZl cl9wb3NpdGlvbiA9IG91dDsKKyAJCSAgbGJfbGluZW51bSA9IG5ld2xpbmVzOworIAkJfQorIAkg ICAgICBmb3IgKGkgPSBpbjsgaSA8IGluK3djX2J5dGVzOyBpKyspCitAQCAtODMwLDYgKzg5OCw3 IEBAIHJsX3JlZGlzcGxheSAoKQorICAgICAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRl X29yaWVudGVkID09IDApCisgCXsKKyAJICBpbiArPSB3Y19ieXRlczsKKysJICAvKiBYWFggLSB3 aGF0IGlmIHdjX2J5dGVzIGVuZHMgdXAgPD0gMD8gY2hlY2sgZm9yIE1CX0lOVkFMSURDSCAqLwor IAkgIHdjX2J5dGVzID0gbWJydG93YyAoJndjLCBybF9saW5lX2J1ZmZlciArIGluLCBybF9lbmQg LSBpbiwgJnBzKTsKKyAJfQorICAgICAgIGVsc2UKK0BAIC04MzgsOSArOTA3LDkgQEAgcmxfcmVk aXNwbGF5ICgpCisgCisgICAgIH0KKyAgIGxpbmVbb3V0XSA9ICdcMCc7CistICBpZiAoY19wb3Mg PCAwKQorKyAgaWYgKGNwb3NfYnVmZmVyX3Bvc2l0aW9uIDwgMCkKKyAgICAgeworLSAgICAgIGNf cG9zID0gb3V0OworKyAgICAgIGNwb3NfYnVmZmVyX3Bvc2l0aW9uID0gb3V0OworICAgICAgIGxi X2xpbmVudW0gPSBuZXdsaW5lczsKKyAgICAgfQorIAorQEAgLTg0OSw3ICs5MTgsNyBAQCBybF9y ZWRpc3BsYXkgKCkKKyAgIGludl9sYnJlYWtzW25ld2xpbmVzKzFdID0gb3V0OworICAgY3Vyc29y X2xpbmVudW0gPSBsYl9saW5lbnVtOworIAorLSAgLyogQ19QT1MgPT0gcG9zaXRpb24gaW4gYnVm ZmVyIHdoZXJlIGN1cnNvciBzaG91bGQgYmUgcGxhY2VkLgorKyAgLyogQ1BPU19CVUZGRVJfUE9T SVRJT04gPT0gcG9zaXRpb24gaW4gYnVmZmVyIHdoZXJlIGN1cnNvciBzaG91bGQgYmUgcGxhY2Vk LgorICAgICAgQ1VSU09SX0xJTkVOVU0gPT0gbGluZSBudW1iZXIgd2hlcmUgdGhlIGN1cnNvciBz aG91bGQgYmUgcGxhY2VkLiAqLworIAorICAgLyogUFdQOiBub3cgaXMgd2hlbiB0aGluZ3MgZ2V0 IGEgYml0IGhhaXJ5LiAgVGhlIHZpc2libGUgYW5kIGludmlzaWJsZQorQEAgLTg4NCw2ICs5NTMs MTAgQEAgcmxfcmVkaXNwbGF5ICgpCisgCSAgICAgc2Vjb25kIGFuZCBzdWJzZXF1ZW50IGxpbmVz IHN0YXJ0IGF0IGludl9sYnJlYWtzW05dLCBvZmZzZXQgYnkKKyAJICAgICBPRkZTRVQgKHdoaWNo IGhhcyBhbHJlYWR5IGJlZW4gY2FsY3VsYXRlZCBhYm92ZSkuICAqLworIAorKyNkZWZpbmUgSU5W SVNfRklSU1QoKQkocHJvbXB0X3BoeXNpY2FsX2NoYXJzID4gX3JsX3NjcmVlbndpZHRoID8gcHJv bXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUgOiB3cmFwX29mZnNldCkKKysjZGVmaW5lIFdSQVBf T0ZGU0VUKGxpbmUsIG9mZnNldCkgICgobGluZSA9PSAwKSBcCisrCQkJCQk/IChvZmZzZXQgPyBJ TlZJU19GSVJTVCgpIDogMCkgXAorKwkJCQkJOiAoKGxpbmUgPT0gcHJvbXB0X2xhc3Rfc2NyZWVu X2xpbmUpID8gd3JhcF9vZmZzZXQtcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUgOiAwKSkK KyAjZGVmaW5lIFdfT0ZGU0VUKGxpbmUsIG9mZnNldCkgKChsaW5lKSA9PSAwID8gb2Zmc2V0IDog MCkKKyAjZGVmaW5lIFZJU19MTEVOKGwpCSgobCkgPiBfcmxfdmlzX2JvdGxpbiA/IDAgOiAodmlz X2xicmVha3NbbCsxXSAtIHZpc19sYnJlYWtzW2xdKSkKKyAjZGVmaW5lIElOVl9MTEVOKGwpCShp bnZfbGJyZWFrc1tsKzFdIC0gaW52X2xicmVha3NbbF0pCitAQCAtODkxLDkgKzk2NCwxNiBAQCBy bF9yZWRpc3BsYXkgKCkKKyAjZGVmaW5lIFZJU19MSU5FKGxpbmUpICgobGluZSkgPiBfcmxfdmlz X2JvdGxpbikgPyAiIiA6IFZJU19DSEFSUyhsaW5lKQorICNkZWZpbmUgSU5WX0xJTkUobGluZSkg KGludmlzaWJsZV9saW5lICsgaW52X2xicmVha3NbbGluZV0pCisgCisrI2RlZmluZSBPTERfQ1BP U19JTl9QUk9NUFQoKSAoY3Bvc19hZGp1c3RlZCA9PSAwICYmIFwKKysJCQlfcmxfbGFzdF9jX3Bv cyAhPSBvX2Nwb3MgJiYgXAorKwkJCV9ybF9sYXN0X2NfcG9zID4gd3JhcF9vZmZzZXQgJiYgXAor KwkJCW9fY3BvcyA8IHByb21wdF9sYXN0X2ludmlzaWJsZSkKKysKKyAJICAvKiBGb3IgZWFjaCBs aW5lIGluIHRoZSBidWZmZXIsIGRvIHRoZSB1cGRhdGluZyBkaXNwbGF5LiAqLworIAkgIGZvciAo bGluZW51bSA9IDA7IGxpbmVudW0gPD0gaW52X2JvdGxpbjsgbGluZW51bSsrKQorIAkgICAgewor KwkgICAgICAvKiBUaGlzIGNhbiBsZWFkIHVzIGFzdHJheSBpZiB3ZSBleGVjdXRlIGEgcHJvZ3Jh bSB0aGF0IGNoYW5nZXMKKysJCSB0aGUgbG9jYWxlIGZyb20gYSBub24tbXVsdGlieXRlIHRvIGEg bXVsdGlieXRlIG9uZS4gKi8KKyAJICAgICAgb19jcG9zID0gX3JsX2xhc3RfY19wb3M7CisgCSAg ICAgIGNwb3NfYWRqdXN0ZWQgPSAwOworIAkgICAgICB1cGRhdGVfbGluZSAoVklTX0xJTkUobGlu ZW51bSksIElOVl9MSU5FKGxpbmVudW0pLCBsaW5lbnVtLAorQEAgLTkwMywxNiArOTgzLDIyIEBA IHJsX3JlZGlzcGxheSAoKQorIAkJIHRha2UgaW52aXNpYmxlIGNoYXJhY3RlcnMgaW50byBhY2Nv dW50LCBzaW5jZSBfcmxfbGFzdF9jX3BvcworIAkJIGlzIGFuIGFic29sdXRlIGN1cnNvciBwb3Np dGlvbiBpbiBhIG11bHRpYnl0ZSBsb2NhbGUuICBTZWUKKyAJCSBpZiBjb21wZW5zYXRpbmcgaGVy ZSBpcyB0aGUgcmlnaHQgdGhpbmcsIG9yIGlmIHdlIGhhdmUgdG8KKy0JCSBjaGFuZ2UgdXBkYXRl X2xpbmUgaXRzZWxmLiAgVGhlcmUgaXMgb25lIGNhc2UgaW4gd2hpY2gKKysJCSBjaGFuZ2UgdXBk YXRlX2xpbmUgaXRzZWxmLiAgVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgaW4gd2hpY2gKKyAJCSB1 cGRhdGVfbGluZSBhZGp1c3RzIF9ybF9sYXN0X2NfcG9zIGl0c2VsZiAoc28gaXQgY2FuIHBhc3MK KyAJCSBfcmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUgYWNjdXJhdGUgdmFsdWVzKTsgaXQgY29tbXVu aWNhdGVzCistCQkgdGhpcyBiYWNrIGJ5IHNldHRpbmcgY3Bvc19hZGp1c3RlZCAqLworLQkgICAg ICBpZiAobGluZW51bSA9PSAwICYmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVk ID09IDApICYmCistCQkgIGNwb3NfYWRqdXN0ZWQgPT0gMCAmJgorLQkJICBfcmxfbGFzdF9jX3Bv cyAhPSBvX2Nwb3MgJiYKKy0JCSAgX3JsX2xhc3RfY19wb3MgPiB3cmFwX29mZnNldCAmJgorLQkJ ICBvX2Nwb3MgPCBwcm9tcHRfbGFzdF9pbnZpc2libGUpCistCQlfcmxfbGFzdF9jX3BvcyAtPSB3 cmFwX29mZnNldDsKKysJCSB0aGlzIGJhY2sgYnkgc2V0dGluZyBjcG9zX2FkanVzdGVkLiAgSWYg d2UgYXNzdW1lIHRoYXQKKysJCSBfcmxfbGFzdF9jX3BvcyBpcyBjb3JyZWN0IChhbiBhYnNvbHV0 ZSBjdXJzb3IgcG9zaXRpb24pIGVhY2gKKysJCSB0aW1lIHVwZGF0ZV9saW5lIGlzIGNhbGxlZCwg dGhlbiB3ZSBjYW4gYXNzdW1lIGluIG91cgorKwkJIGNhbGN1bGF0aW9ucyB0aGF0IG9fY3BvcyBk b2VzIG5vdCBuZWVkIHRvIGJlIGFkanVzdGVkIGJ5CisrCQkgd3JhcF9vZmZzZXQuICovCisrCSAg ICAgIGlmIChsaW5lbnVtID09IDAgJiYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50 ZWQgPT0gMCkgJiYgT0xEX0NQT1NfSU5fUFJPTVBUKCkpCisrCQlfcmxfbGFzdF9jX3BvcyAtPSBw cm9tcHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZTsJLyogWFhYIC0gd2FzIHdyYXBfb2Zmc2V0ICov CisrCSAgICAgIGVsc2UgaWYgKGxpbmVudW0gPT0gcHJvbXB0X2xhc3Rfc2NyZWVuX2xpbmUgJiYg cHJvbXB0X3BoeXNpY2FsX2NoYXJzID4gX3JsX3NjcmVlbndpZHRoICYmCisrCQkJKE1CX0NVUl9N QVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkgJiYKKysJCQljcG9zX2FkanVzdGVkID09 IDAgJiYKKysJCQlfcmxfbGFzdF9jX3BvcyAhPSBvX2Nwb3MgJiYKKysJCQlfcmxfbGFzdF9jX3Bv cyA+IChwcm9tcHRfbGFzdF9pbnZpc2libGUgLSBfcmxfc2NyZWVud2lkdGggLSBwcm9tcHRfaW52 aXNfY2hhcnNfZmlyc3RfbGluZSkpCisrCQlfcmxfbGFzdF9jX3BvcyAtPSAod3JhcF9vZmZzZXQt cHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUpOworIAkJICAKKyAJICAgICAgLyogSWYgdGhp cyBpcyB0aGUgbGluZSB3aXRoIHRoZSBwcm9tcHQsIHdlIG1pZ2h0IG5lZWQgdG8KKyAJCSBjb21w ZW5zYXRlIGZvciBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0aGUgbmV3IGxpbmUuIERvCitAQCAt OTMyLDYgKzEwMTgsMTkgQEAgcmxfcmVkaXNwbGF5ICgpCisgCQkgIGlmIChubGVmdCkKKyAJCSAg ICBfcmxfY2xlYXJfdG9fZW9sIChubGVmdCk7CisgCQl9CisrI2lmIDAKKysJICAgICAgLyogVGhp cyBzZWdtZW50IGlzIGludGVuZGVkIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgcHJvbXB0 CisrCQkgaGFzIGludmlzaWJsZSBjaGFyYWN0ZXJzIG9uIHRoZSBzZWNvbmQgbGluZSBhbmQgdGhl IG5ldyBsaW5lCisrCQkgdG8gYmUgZGlzcGxheWVkIG5lZWRzIHRvIGNsZWFyIHRoZSByZXN0IG9m IHRoZSBvbGQgY2hhcmFjdGVycworKwkJIG91dCAoZS5nLiwgd2hlbiBwcmludGluZyB0aGUgaS1z ZWFyY2ggcHJvbXB0KS4gIEluIGdlbmVyYWwsCisrCQkgdGhlIGNhc2Ugb2YgdGhlIG5ldyBsaW5l IGJlaW5nIHNob3J0ZXIgdGhhbiB0aGUgb2xkLgorKwkJIEluY29tcGxldGUgKi8KKysJICAgICAg ZWxzZSBpZiAobGluZW51bSA9PSBwcm9tcHRfbGFzdF9zY3JlZW5fbGluZSAmJgorKwkJICAgICAg IHByb21wdF9waHlzaWNhbF9jaGFycyA+IF9ybF9zY3JlZW53aWR0aCAmJgorKwkJICAgICAgIHdy YXBfb2Zmc2V0ICE9IHByb21wdF9pbnZpc19jaGFyc19maXJzdF9saW5lICYmCisrCQkgICAgICAg X3JsX2xhc3RfY19wb3MgPT0gb3V0ICYmCisrI2VuZGlmCisrCisgCisgCSAgICAgIC8qIFNpbmNl IHRoZSBuZXcgZmlyc3QgbGluZSBpcyBub3cgdmlzaWJsZSwgc2F2ZSBpdHMgbGVuZ3RoLiAqLwor IAkgICAgICBpZiAobGluZW51bSA9PSAwKQorQEAgLTk3NSw3ICsxMDc0LDExIEBAIHJsX3JlZGlz cGxheSAoKQorIAkgICAgIGludmlzaWJsZSBjaGFyYWN0ZXIgaW4gdGhlIHByb21wdCBzdHJpbmcu ICovCisgCSAgbmxlZnQgPSBwcm9tcHRfdmlzaWJsZV9sZW5ndGggKyB3cmFwX29mZnNldDsKKyAJ ICBpZiAoY3Vyc29yX2xpbmVudW0gPT0gMCAmJiB3cmFwX29mZnNldCA+IDAgJiYgX3JsX2xhc3Rf Y19wb3MgPiAwICYmCistCSAgICAgIF9ybF9sYXN0X2NfcG9zIDw9IHByb21wdF9sYXN0X2ludmlz aWJsZSAmJiBsb2NhbF9wcm9tcHQpCisrI2lmIDAKKysJICAgICAgX3JsX2xhc3RfY19wb3MgPD0g UFJPTVBUX0VORElOR19JTkRFWCAmJiBsb2NhbF9wcm9tcHQpCisrI2Vsc2UKKysJICAgICAgX3Js X2xhc3RfY19wb3MgPCBQUk9NUFRfRU5ESU5HX0lOREVYICYmIGxvY2FsX3Byb21wdCkKKysjZW5k aWYKKyAJICAgIHsKKyAjaWYgZGVmaW5lZCAoX19NU0RPU19fKQorIAkgICAgICBwdXRjICgnXHIn LCBybF9vdXRzdHJlYW0pOworQEAgLTk4MywxOSArMTA4NiwyMiBAQCBybF9yZWRpc3BsYXkgKCkK KyAJICAgICAgaWYgKF9ybF90ZXJtX2NyKQorIAkJdHB1dHMgKF9ybF90ZXJtX2NyLCAxLCBfcmxf b3V0cHV0X2NoYXJhY3Rlcl9mdW5jdGlvbik7CisgI2VuZGlmCisrCSAgICAgIGlmIChtb2RtYXJr KQorKwkJX3JsX291dHB1dF9zb21lX2NoYXJzICgiKiIsIDEpOworKworIAkgICAgICBfcmxfb3V0 cHV0X3NvbWVfY2hhcnMgKGxvY2FsX3Byb21wdCwgbmxlZnQpOworIAkgICAgICBpZiAoTUJfQ1VS X01BWCA+IDEgJiYgcmxfYnl0ZV9vcmllbnRlZCA9PSAwKQorLQkJX3JsX2xhc3RfY19wb3MgPSBf cmxfY29sX3dpZHRoIChsb2NhbF9wcm9tcHQsIDAsIG5sZWZ0KSAtIHdyYXBfb2Zmc2V0OworKwkJ X3JsX2xhc3RfY19wb3MgPSBfcmxfY29sX3dpZHRoIChsb2NhbF9wcm9tcHQsIDAsIG5sZWZ0LCAx KSAtIHdyYXBfb2Zmc2V0ICsgbW9kbWFyazsKKyAJICAgICAgZWxzZQorLQkJX3JsX2xhc3RfY19w b3MgPSBubGVmdDsKKysJCV9ybF9sYXN0X2NfcG9zID0gbmxlZnQgKyBtb2RtYXJrOworIAkgICAg fQorIAorIAkgIC8qIFdoZXJlIG9uIHRoYXQgbGluZT8gIEFuZCB3aGVyZSBkb2VzIHRoYXQgbGlu ZSBzdGFydAorIAkgICAgIGluIHRoZSBidWZmZXI/ICovCisgCSAgcG9zID0gaW52X2xicmVha3Nb Y3Vyc29yX2xpbmVudW1dOworIAkgIC8qIG5sZWZ0ID09IG51bWJlciBvZiBjaGFyYWN0ZXJzIGlu IHRoZSBsaW5lIGJ1ZmZlciBiZXR3ZWVuIHRoZQorLQkgICAgIHN0YXJ0IG9mIHRoZSBsaW5lIGFu ZCB0aGUgY3Vyc29yIHBvc2l0aW9uLiAqLworLQkgIG5sZWZ0ID0gY19wb3MgLSBwb3M7CisrCSAg ICAgc3RhcnQgb2YgdGhlIGxpbmUgYW5kIHRoZSBkZXNpcmVkIGN1cnNvciBwb3NpdGlvbi4gKi8K KysJICBubGVmdCA9IGNwb3NfYnVmZmVyX3Bvc2l0aW9uIC0gcG9zOworIAorIAkgIC8qIE5MRUZU IGlzIG5vdyBhIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIGEgYnVmZmVyLiAgV2hlbiBpbiBhCisg CSAgICAgbXVsdGlieXRlIGxvY2FsZSwgaG93ZXZlciwgX3JsX2xhc3RfY19wb3MgaXMgYW4gYWJz b2x1dGUgY3Vyc29yCitAQCAtMTAwNywxMSArMTExMywxMiBAQCBybF9yZWRpc3BsYXkgKCkKKyAJ ICAgICB0aG9zZSBjaGFyYWN0ZXJzIGhlcmUgYW5kIGNhbGwgX3JsX2JhY2tzcGFjZSgpIGRpcmVj dGx5LiAqLworIAkgIGlmICh3cmFwX29mZnNldCAmJiBjdXJzb3JfbGluZW51bSA9PSAwICYmIG5s ZWZ0IDwgX3JsX2xhc3RfY19wb3MpCisgCSAgICB7CisrCSAgICAgIC8qIFRYID09IG5ldyBwaHlz aWNhbCBjdXJzb3IgcG9zaXRpb24gaW4gbXVsdGlieXRlIGxvY2FsZS4gKi8KKyAJICAgICAgaWYg KE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKKy0JCXR4ID0gX3JsX2Nv bF93aWR0aCAoJnZpc2libGVfbGluZVtwb3NdLCAwLCBubGVmdCkgLSB2aXNpYmxlX3dyYXBfb2Zm c2V0OworKwkJdHggPSBfcmxfY29sX3dpZHRoICgmdmlzaWJsZV9saW5lW3Bvc10sIDAsIG5sZWZ0 LCAxKSAtIHZpc2libGVfd3JhcF9vZmZzZXQ7CisgCSAgICAgIGVsc2UKKyAJCXR4ID0gbmxlZnQ7 CistCSAgICAgIGlmIChfcmxfbGFzdF9jX3BvcyA+IHR4KQorKwkgICAgICBpZiAodHggPj0gMCAm JiBfcmxfbGFzdF9jX3BvcyA+IHR4KQorIAkJeworIAkgICAgICAgICAgX3JsX2JhY2tzcGFjZSAo X3JsX2xhc3RfY19wb3MgLSB0eCk7CS8qIFhYWCAqLworIAkgICAgICAgICAgX3JsX2xhc3RfY19w b3MgPSB0eDsKK0BAIC0xMDQwLDExICsxMTQ3LDExIEBAIHJsX3JlZGlzcGxheSAoKQorIAkgd2ls bCBiZSBMTUFSR0lOLiAqLworIAorICAgICAgIC8qIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB0 aGF0IHdpbGwgYmUgZGlzcGxheWVkIGJlZm9yZSB0aGUgY3Vyc29yLiAqLworLSAgICAgIG5kaXNw ID0gY19wb3MgLSB3cmFwX29mZnNldDsKKysgICAgICBuZGlzcCA9IGNwb3NfYnVmZmVyX3Bvc2l0 aW9uIC0gd3JhcF9vZmZzZXQ7CisgICAgICAgbmxlZnQgID0gcHJvbXB0X3Zpc2libGVfbGVuZ3Ro ICsgd3JhcF9vZmZzZXQ7CisgICAgICAgLyogV2hlcmUgdGhlIG5ldyBjdXJzb3IgcG9zaXRpb24g d2lsbCBiZSBvbiB0aGUgc2NyZWVuLiAgVGhpcyBjYW4gYmUKKyAJIGxvbmdlciB0aGFuIFNDUkVF TldJRFRIOyBpZiBpdCBpcywgbG1hcmdpbiB3aWxsIGJlIGFkanVzdGVkLiAqLworLSAgICAgIHBo eXNfY19wb3MgPSBjX3BvcyAtIChsYXN0X2xtYXJnaW4gPyBsYXN0X2xtYXJnaW4gOiB3cmFwX29m ZnNldCk7CisrICAgICAgcGh5c19jX3BvcyA9IGNwb3NfYnVmZmVyX3Bvc2l0aW9uIC0gKGxhc3Rf bG1hcmdpbiA/IGxhc3RfbG1hcmdpbiA6IHdyYXBfb2Zmc2V0KTsKKyAgICAgICB0ID0gX3JsX3Nj cmVlbndpZHRoIC8gMzsKKyAKKyAgICAgICAvKiBJZiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMg aGFkIGFscmVhZHkgZXhjZWVkZWQgdGhlIHNjcmVlbndpZHRoLAorQEAgLTEwNTUsNyArMTE2Miw3 IEBAIHJsX3JlZGlzcGxheSAoKQorIAkgdHdvLXRoaXJkcyBvZiB0aGUgd2F5IGFjcm9zcyB0aGUg c2NyZWVuLiAqLworICAgICAgIGlmIChwaHlzX2NfcG9zID4gX3JsX3NjcmVlbndpZHRoIC0gMikK KyAJeworLQkgIGxtYXJnaW4gPSBjX3BvcyAtICgyICogdCk7CisrCSAgbG1hcmdpbiA9IGNwb3Nf YnVmZmVyX3Bvc2l0aW9uIC0gKDIgKiB0KTsKKyAJICBpZiAobG1hcmdpbiA8IDApCisgCSAgICBs bWFyZ2luID0gMDsKKyAJICAvKiBJZiB0aGUgbGVmdCBtYXJnaW4gd291bGQgYmUgaW4gdGhlIG1p ZGRsZSBvZiBhIHByb21wdCB3aXRoCitAQCAtMTA2OSw3ICsxMTc2LDcgQEAgcmxfcmVkaXNwbGF5 ICgpCisgCXsKKyAJICAvKiBJZiB3ZSBhcmUgbW92aW5nIGJhY2sgdG93YXJkcyB0aGUgYmVnaW5u aW5nIG9mIHRoZSBsaW5lIGFuZAorIAkgICAgIHRoZSBsYXN0IG1hcmdpbiBpcyBubyBsb25nZXIg Y29ycmVjdCwgY29tcHV0ZSBhIG5ldyBvbmUuICovCistCSAgbG1hcmdpbiA9ICgoY19wb3MgLSAx KSAvIHQpICogdDsJLyogWFhYICovCisrCSAgbG1hcmdpbiA9ICgoY3Bvc19idWZmZXJfcG9zaXRp b24gLSAxKSAvIHQpICogdDsJLyogWFhYICovCisgCSAgaWYgKHdyYXBfb2Zmc2V0ICYmIGxtYXJn aW4gPiAwICYmIGxtYXJnaW4gPCBubGVmdCkKKyAJICAgIGxtYXJnaW4gPSBubGVmdDsKKyAJfQor QEAgLTEwODksOSArMTE5NiwxMSBAQCBybF9yZWRpc3BsYXkgKCkKKyAgICAgICBpZiAodCA8IG91 dCkKKyAJbGluZVt0IC0gMV0gPSAnPic7CisgCistICAgICAgaWYgKCFybF9kaXNwbGF5X2ZpeGVk IHx8IGZvcmNlZF9kaXNwbGF5IHx8IGxtYXJnaW4gIT0gbGFzdF9sbWFyZ2luKQorKyAgICAgIGlm IChybF9kaXNwbGF5X2ZpeGVkID09IDAgfHwgZm9yY2VkX2Rpc3BsYXkgfHwgbG1hcmdpbiAhPSBs YXN0X2xtYXJnaW4pCisgCXsKKyAJICBmb3JjZWRfZGlzcGxheSA9IDA7CisrCSAgb19jcG9zID0g X3JsX2xhc3RfY19wb3M7CisrCSAgY3Bvc19hZGp1c3RlZCA9IDA7CisgCSAgdXBkYXRlX2xpbmUg KCZ2aXNpYmxlX2xpbmVbbGFzdF9sbWFyZ2luXSwKKyAJCSAgICAgICAmaW52aXNpYmxlX2xpbmVb bG1hcmdpbl0sCisgCQkgICAgICAgMCwKK0BAIC0xMDk5LDYgKzEyMDgsOSBAQCBybF9yZWRpc3Bs YXkgKCkKKyAJCSAgICAgICBfcmxfc2NyZWVud2lkdGggKyAobG1hcmdpbiA/IDAgOiB3cmFwX29m ZnNldCksCisgCQkgICAgICAgMCk7CisgCisrCSAgaWYgKChNQl9DVVJfTUFYID4gMSAmJiBybF9i eXRlX29yaWVudGVkID09IDApICYmIE9MRF9DUE9TX0lOX1BST01QVCgpKQorKwkgICAgX3JsX2xh c3RfY19wb3MgLT0gcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmU7CS8qIFhYWCAtIHdhcyB3 cmFwX29mZnNldCAqLworKworIAkgIC8qIElmIHRoZSB2aXNpYmxlIG5ldyBsaW5lIGlzIHNob3J0 ZXIgdGhhbiB0aGUgb2xkLCBidXQgdGhlIG51bWJlcgorIAkgICAgIG9mIGludmlzaWJsZSBjaGFy YWN0ZXJzIGlzIGdyZWF0ZXIsIGFuZCB3ZSBhcmUgYXQgdGhlIGVuZCBvZgorIAkgICAgIHRoZSBu ZXcgbGluZSwgd2UgbmVlZCB0byBjbGVhciB0byBlb2wuICovCitAQCAtMTExNCw3ICsxMjI2LDcg QEAgcmxfcmVkaXNwbGF5ICgpCisgCSAgaWYgKHZpc2libGVfZmlyc3RfbGluZV9sZW4gPiBfcmxf c2NyZWVud2lkdGgpCisgCSAgICB2aXNpYmxlX2ZpcnN0X2xpbmVfbGVuID0gX3JsX3NjcmVlbndp ZHRoOworIAorLQkgIF9ybF9tb3ZlX2N1cnNvcl9yZWxhdGl2ZSAoY19wb3MgLSBsbWFyZ2luLCAm aW52aXNpYmxlX2xpbmVbbG1hcmdpbl0pOworKwkgIF9ybF9tb3ZlX2N1cnNvcl9yZWxhdGl2ZSAo Y3Bvc19idWZmZXJfcG9zaXRpb24gLSBsbWFyZ2luLCAmaW52aXNpYmxlX2xpbmVbbG1hcmdpbl0p OworIAkgIGxhc3RfbG1hcmdpbiA9IGxtYXJnaW47CisgCX0KKyAgICAgfQorQEAgLTExMjIsMTcg KzEyMzQsMTAgQEAgcmxfcmVkaXNwbGF5ICgpCisgCisgICAvKiBTd2FwIHZpc2libGUgYW5kIG5v bi12aXNpYmxlIGxpbmVzLiAqLworICAgeworLSAgICBjaGFyICp2dGVtcCA9IHZpc2libGVfbGlu ZTsKKy0gICAgaW50ICppdGVtcCA9IHZpc19sYnJlYWtzLCBudGVtcCA9IHZpc19sYnNpemU7Cist CistICAgIHZpc2libGVfbGluZSA9IGludmlzaWJsZV9saW5lOworLSAgICBpbnZpc2libGVfbGlu ZSA9IHZ0ZW1wOworKyAgICBzdHJ1Y3QgbGluZV9zdGF0ZSAqdnRlbXAgPSBsaW5lX3N0YXRlX3Zp c2libGU7CisgCistICAgIHZpc19sYnJlYWtzID0gaW52X2xicmVha3M7CistICAgIGludl9sYnJl YWtzID0gaXRlbXA7CistCistICAgIHZpc19sYnNpemUgPSBpbnZfbGJzaXplOworLSAgICBpbnZf bGJzaXplID0gbnRlbXA7CisrICAgIGxpbmVfc3RhdGVfdmlzaWJsZSA9IGxpbmVfc3RhdGVfaW52 aXNpYmxlOworKyAgICBsaW5lX3N0YXRlX2ludmlzaWJsZSA9IHZ0ZW1wOworIAorICAgICBybF9k aXNwbGF5X2ZpeGVkID0gMDsKKyAgICAgLyogSWYgd2UgYXJlIGRpc3BsYXlpbmcgb24gYSBzaW5n bGUgbGluZSwgYW5kIGxhc3RfbG1hcmdpbiBpcyA+IDAsIHdlCitAQCAtMTE0NCw2ICsxMjQ5LDcg QEAgcmxfcmVkaXNwbGF5ICgpCisgICAgICAgdmlzaWJsZV93cmFwX29mZnNldCA9IHdyYXBfb2Zm c2V0OworICAgfQorIAorKyAgUkxfVU5TRVRTVEFURSAoUkxfU1RBVEVfUkVESVNQTEFZSU5HKTsK KyAgIF9ybF9yZWxlYXNlX3NpZ2ludCAoKTsKKyB9CisgCitAQCAtMTE2OSwxMiArMTI3NSwxMiBA QCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21heCwgbm1heCwgaW52X2Jv dGxpbikKKyAgICAgIGludCBjdXJyZW50X2xpbmUsIG9tYXgsIG5tYXgsIGludl9ib3RsaW47Cisg eworICAgcmVnaXN0ZXIgY2hhciAqb2ZkLCAqb2xzLCAqb2UsICpuZmQsICpubHMsICpuZTsKKy0g IGludCB0ZW1wLCBsZW5kaWZmLCB3c2F0ZW5kLCBvZCwgbmQ7CisrICBpbnQgdGVtcCwgbGVuZGlm Ziwgd3NhdGVuZCwgb2QsIG5kLCB0d2lkdGgsIG9fY3BvczsKKyAgIGludCBjdXJyZW50X2ludmlz X2NoYXJzOworICAgaW50IGNvbF9sZW5kaWZmLCBjb2xfdGVtcDsKKyAjaWYgZGVmaW5lZCAoSEFO RExFX01VTFRJQllURSkKKyAgIG1ic3RhdGVfdCBwc19uZXcsIHBzX29sZDsKKy0gIGludCBuZXdf b2Zmc2V0LCBvbGRfb2Zmc2V0LCB0bXA7CisrICBpbnQgbmV3X29mZnNldCwgb2xkX29mZnNldDsK KyAjZW5kaWYKKyAKKyAgIC8qIElmIHdlJ3JlIGF0IHRoZSByaWdodCBlZGdlIG9mIGEgdGVybWlu YWwgdGhhdCBzdXBwb3J0cyB4biwgd2UncmUKK0BAIC0xMTg1LDcgKzEyOTEsNyBAQCB1cGRhdGVf bGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21heCwgbm1heCwgaW52X2JvdGxpbikKKyAg IGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCisgICAgIHRlbXAg PSBfcmxfbGFzdF9jX3BvczsKKyAgIGVsc2UKKy0gICAgdGVtcCA9IF9ybF9sYXN0X2NfcG9zIC0g V19PRkZTRVQoX3JsX2xhc3Rfdl9wb3MsIHZpc2libGVfd3JhcF9vZmZzZXQpOworKyAgICB0ZW1w ID0gX3JsX2xhc3RfY19wb3MgLSBXUkFQX09GRlNFVCAoX3JsX2xhc3Rfdl9wb3MsIHZpc2libGVf d3JhcF9vZmZzZXQpOworICAgaWYgKHRlbXAgPT0gX3JsX3NjcmVlbndpZHRoICYmIF9ybF90ZXJt X2F1dG93cmFwICYmICFfcmxfaG9yaXpvbnRhbF9zY3JvbGxfbW9kZQorIAkmJiBfcmxfbGFzdF92 X3BvcyA9PSBjdXJyZW50X2xpbmUgLSAxKQorICAgICB7CitAQCAtMTIwMCw4ICsxMzA2LDggQEAg dXBkYXRlX2xpbmUgKG9sZCwgbmV3LCBjdXJyZW50X2xpbmUsIG9tYXgsIG5tYXgsIGludl9ib3Rs aW4pCisgCSAgLyogVGhpcyBmaXhlcyBvbmx5IGRvdWJsZS1jb2x1bW4gY2hhcmFjdGVycywgYnV0 IGlmIHRoZSB3cmFwcGVkCisgCSAgICAgY2hhcmFjdGVyIGNvbXN1bWVzIG1vcmUgdGhhbiB0aHJl ZSBjb2x1bW5zLCBzcGFjZXMgd2lsbCBiZQorIAkgICAgIGluc2VydGVkIGluIHRoZSBzdHJpbmcg YnVmZmVyLiAqLworLQkgIGlmIChfcmxfd3JhcHBlZF9saW5lW2N1cnJlbnRfbGluZV0gPiAwKQor LQkgICAgX3JsX2NsZWFyX3RvX2VvbCAoX3JsX3dyYXBwZWRfbGluZVtjdXJyZW50X2xpbmVdKTsK KysJICBpZiAoY3VycmVudF9saW5lIDwgbGluZV9zdGF0ZV92aXNpYmxlLT53YnNpemUgJiYgbGlu ZV9zdGF0ZV92aXNpYmxlLT53cmFwcGVkX2xpbmVbY3VycmVudF9saW5lXSA+IDApCisrCSAgICBf cmxfY2xlYXJfdG9fZW9sIChsaW5lX3N0YXRlX3Zpc2libGUtPndyYXBwZWRfbGluZVtjdXJyZW50 X2xpbmVdKTsKKyAKKyAJICBtZW1zZXQgKCZwcywgMCwgc2l6ZW9mIChtYnN0YXRlX3QpKTsKKyAJ ICByZXQgPSBtYnJ0b3djICgmd2MsIG5ldywgTUJfQ1VSX01BWCwgJnBzKTsKK0BAIC0xMjE3LDcg KzEzMjMsNyBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21heCwgbm1h eCwgaW52X2JvdGxpbikKKyAKKyAJICBpZiAodGVtcHdpZHRoID4gMCkKKyAJICAgIHsKKy0JICAg ICAgaW50IGNvdW50OworKwkgICAgICBpbnQgY291bnQsIGk7CisgCSAgICAgIGJ5dGVzID0gcmV0 OworIAkgICAgICBmb3IgKGNvdW50ID0gMDsgY291bnQgPCBieXRlczsgY291bnQrKykKKyAJCXB1 dGMgKG5ld1tjb3VudF0sIHJsX291dHN0cmVhbSk7CitAQCAtMTIyOCwxMCArMTMzNCwxMyBAQCB1 cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21heCwgbm1heCwgaW52X2JvdGxp bikKKyAJICAgICAgaWYgKHJldCAhPSAwICYmIGJ5dGVzICE9IDApCisgCQl7CisgCQkgIGlmIChN Ql9JTlZBTElEQ0ggKHJldCkpCistCQkgICAgbWVtbW92ZSAob2xkK2J5dGVzLCBvbGQrMSwgc3Ry bGVuIChvbGQrMSkpOworLQkJICBlbHNlCistCQkgICAgbWVtbW92ZSAob2xkK2J5dGVzLCBvbGQr cmV0LCBzdHJsZW4gKG9sZCtyZXQpKTsKKysJCSAgICByZXQgPSAxOworKwkJICBtZW1tb3ZlIChv bGQrYnl0ZXMsIG9sZCtyZXQsIHN0cmxlbiAob2xkK3JldCkpOworIAkJICBtZW1jcHkgKG9sZCwg bmV3LCBieXRlcyk7CisrCQkgIC8qIEZpeCB1cCBpbmRpY2VzIGlmIHdlIGNvcHkgZGF0YSBmcm9t IG9uZSBsaW5lIHRvIGFub3RoZXIgKi8KKysJCSAgb21heCArPSBieXRlcyAtIHJldDsKKysJCSAg Zm9yIChpID0gY3VycmVudF9saW5lKzE7IGkgPCBpbnZfYm90bGluKzE7IGkrKykKKysJCSAgICB2 aXNfbGJyZWFrc1tpXSArPSBieXRlcyAtIHJldDsKKyAJCX0KKyAJICAgIH0KKyAJICBlbHNlCitA QCAtMTI2NSw3ICsxMzc0LDcgQEAgdXBkYXRlX2xpbmUgKG9sZCwgbmV3LCBjdXJyZW50X2xpbmUs IG9tYXgsIG5tYXgsIGludl9ib3RsaW4pCisgICAgICAgLyogU2VlIGlmIHRoZSBvbGQgbGluZSBp cyBhIHN1YnNldCBvZiB0aGUgbmV3IGxpbmUsIHNvIHRoYXQgdGhlCisgCSBvbmx5IGNoYW5nZSBp cyBhZGRpbmcgY2hhcmFjdGVycy4gKi8KKyAgICAgICB0ZW1wID0gKG9tYXggPCBubWF4KSA/IG9t YXggOiBubWF4OworLSAgICAgIGlmIChtZW1jbXAgKG9sZCwgbmV3LCB0ZW1wKSA9PSAwKQorKyAg ICAgIGlmIChtZW1jbXAgKG9sZCwgbmV3LCB0ZW1wKSA9PSAwKQkJLyogYWRkaW5nIGF0IHRoZSBl bmQgKi8KKyAJeworIAkgIG9mZCA9IG9sZCArIHRlbXA7CisgCSAgbmZkID0gbmV3ICsgdGVtcDsK K0BAIC0xNDA3LDMwICsxNTE2LDQ4IEBAIHVwZGF0ZV9saW5lIChvbGQsIG5ldywgY3VycmVudF9s aW5lLCBvbWF4LCBubWF4LCBpbnZfYm90bGluKQorICAgICAgc2VxdWVuY2VzIChsaWtlIGRyYXdp bmcgdGhlIGB1bmJvbGQnIHNlcXVlbmNlIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nCisgICAgICBg Ym9sZCcpIHRoYXQgbWFuaWZlc3RzIGl0c2VsZiBvbiBjZXJ0YWluIHRlcm1pbmFscy4gKi8KKyAK Ky0gIGxlbmRpZmYgPSBsb2NhbF9wcm9tcHQgPyBzdHJsZW4gKGxvY2FsX3Byb21wdCkgOiAwOwor KyAgbGVuZGlmZiA9IGxvY2FsX3Byb21wdF9sZW47CisgICBvZCA9IG9mZCAtIG9sZDsJLyogaW5k ZXggb2YgZmlyc3QgZGlmZmVyZW5jZSBpbiB2aXNpYmxlIGxpbmUgKi8KKyAgIGlmIChjdXJyZW50 X2xpbmUgPT0gMCAmJiAhX3JsX2hvcml6b250YWxfc2Nyb2xsX21vZGUgJiYKKyAgICAgICBfcmxf dGVybV9jciAmJiBsZW5kaWZmID4gcHJvbXB0X3Zpc2libGVfbGVuZ3RoICYmIF9ybF9sYXN0X2Nf cG9zID4gMCAmJgorLSAgICAgIG9kID49IGxlbmRpZmYgJiYgX3JsX2xhc3RfY19wb3MgPD0gcHJv bXB0X2xhc3RfaW52aXNpYmxlKQorKyAgICAgIG9kID49IGxlbmRpZmYgJiYgX3JsX2xhc3RfY19w b3MgPCBQUk9NUFRfRU5ESU5HX0lOREVYKQorICAgICB7CisgI2lmIGRlZmluZWQgKF9fTVNET1Nf XykKKyAgICAgICBwdXRjICgnXHInLCBybF9vdXRzdHJlYW0pOworICNlbHNlCisgICAgICAgdHB1 dHMgKF9ybF90ZXJtX2NyLCAxLCBfcmxfb3V0cHV0X2NoYXJhY3Rlcl9mdW5jdGlvbik7CisgI2Vu ZGlmCisrICAgICAgaWYgKG1vZG1hcmspCisrCV9ybF9vdXRwdXRfc29tZV9jaGFycyAoIioiLCAx KTsKKyAgICAgICBfcmxfb3V0cHV0X3NvbWVfY2hhcnMgKGxvY2FsX3Byb21wdCwgbGVuZGlmZik7 CisgICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKKyAJ eworIAkgIC8qIFdlIHRha2Ugd3JhcF9vZmZzZXQgaW50byBhY2NvdW50IGhlcmUgc28gd2UgY2Fu IHBhc3MgY29ycmVjdAorIAkgICAgIGluZm9ybWF0aW9uIHRvIF9ybF9tb3ZlX2N1cnNvcl9yZWxh dGl2ZS4gKi8KKy0JICBfcmxfbGFzdF9jX3BvcyA9IF9ybF9jb2xfd2lkdGggKGxvY2FsX3Byb21w dCwgMCwgbGVuZGlmZikgLSB3cmFwX29mZnNldDsKKysJICBfcmxfbGFzdF9jX3BvcyA9IF9ybF9j b2xfd2lkdGggKGxvY2FsX3Byb21wdCwgMCwgbGVuZGlmZiwgMSkgLSB3cmFwX29mZnNldCArIG1v ZG1hcms7CisgCSAgY3Bvc19hZGp1c3RlZCA9IDE7CisgCX0KKyAgICAgICBlbHNlCistCV9ybF9s YXN0X2NfcG9zID0gbGVuZGlmZjsKKysJX3JsX2xhc3RfY19wb3MgPSBsZW5kaWZmICsgbW9kbWFy azsKKyAgICAgfQorIAorKyAgb19jcG9zID0gX3JsX2xhc3RfY19wb3M7CisrCisrICAvKiBXaGVu IHRoaXMgZnVuY3Rpb24gcmV0dXJucywgX3JsX2xhc3RfY19wb3MgaXMgY29ycmVjdCwgYW5kIGFu IGFic29sdXRlCisrICAgICBjdXJzb3IgcG9zdGlvbiBpbiBtdWx0aWJ5dGUgbW9kZSwgYnV0IGEg YnVmZmVyIGluZGV4IHdoZW4gbm90IGluIGEKKysgICAgIG11bHRpYnl0ZSBsb2NhbGUuICovCisg ICBfcmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUgKG9kLCBvbGQpOworKyNpZiAxCisrI2lmIGRlZmlu ZWQgKEhBTkRMRV9NVUxUSUJZVEUpCisrICAvKiBXZSBuZWVkIHRvIGluZGljYXRlIHRoYXQgdGhl IGN1cnNvciBwb3NpdGlvbiBpcyBjb3JyZWN0IGluIHRoZSBwcmVzZW5jZSBvZgorKyAgICAgaW52 aXNpYmxlIGNoYXJhY3RlcnMgaW4gdGhlIHByb21wdCBzdHJpbmcuICBMZXQncyBzZWUgaWYgc2V0 dGluZyB0aGlzIHdoZW4KKysgICAgIHdlIG1ha2Ugc3VyZSB3ZSdyZSBhdCB0aGUgZW5kIG9mIHRo ZSBkcmF3biBwcm9tcHQgc3RyaW5nIHdvcmtzLiAqLworKyAgaWYgKGN1cnJlbnRfbGluZSA9PSAw ICYmIE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCAmJgorKyAgICAgIChf cmxfbGFzdF9jX3BvcyA+IDAgfHwgb19jcG9zID4gMCkgJiYKKysgICAgICBfcmxfbGFzdF9jX3Bv cyA9PSBwcm9tcHRfcGh5c2ljYWxfY2hhcnMpCisrICAgIGNwb3NfYWRqdXN0ZWQgPSAxOworKyNl bmRpZgorKyNlbmRpZgorIAorICAgLyogaWYgKGxlbiAobmV3KSA+IGxlbiAob2xkKSkKKyAgICAg IGxlbmRpZmYgPT0gZGlmZmVyZW5jZSBpbiBidWZmZXIKK0BAIC0xNDM4LDcgKzE1NjUsNyBAQCB1 cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21heCwgbm1heCwgaW52X2JvdGxp bikKKyAgICAgIFdoZW4gbm90IHVzaW5nIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLCB0aGVzZSBhcmUg ZXF1YWwgKi8KKyAgIGxlbmRpZmYgPSAobmxzIC0gbmZkKSAtIChvbHMgLSBvZmQpOworICAgaWYg KE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKKy0gICAgY29sX2xlbmRp ZmYgPSBfcmxfY29sX3dpZHRoIChuZXcsIG5mZCAtIG5ldywgbmxzIC0gbmV3KSAtIF9ybF9jb2xf d2lkdGggKG9sZCwgb2ZkIC0gb2xkLCBvbHMgLSBvbGQpOworKyAgICBjb2xfbGVuZGlmZiA9IF9y bF9jb2xfd2lkdGggKG5ldywgbmZkIC0gbmV3LCBubHMgLSBuZXcsIDEpIC0gX3JsX2NvbF93aWR0 aCAob2xkLCBvZmQgLSBvbGQsIG9scyAtIG9sZCwgMSk7CisgICBlbHNlCisgICAgIGNvbF9sZW5k aWZmID0gbGVuZGlmZjsKKyAKK0BAIC0xNDYzLDcgKzE1OTAsNyBAQCB1cGRhdGVfbGluZSAob2xk LCBuZXcsIGN1cnJlbnRfbGluZSwgb21heCwgbm1heCwgaW52X2JvdGxpbikKKyAgIC8qIEluc2Vy dCAoZGlmZiAobGVuIChvbGQpLCBsZW4gKG5ldykpIGNoLiAqLworICAgdGVtcCA9IG5lIC0gbmZk OworICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKKy0gICAg Y29sX3RlbXAgPSBfcmxfY29sX3dpZHRoIChuZXcsIG5mZCAtIG5ldywgbmUgLSBuZXcpOworKyAg ICBjb2xfdGVtcCA9IF9ybF9jb2xfd2lkdGggKG5ldywgbmZkIC0gbmV3LCBuZSAtIG5ldywgMSk7 CisgICBlbHNlCisgICAgIGNvbF90ZW1wID0gdGVtcDsKKyAKK0BAIC0xNDcxLDIyICsxNTk4LDYw IEBAIHVwZGF0ZV9saW5lIChvbGQsIG5ldywgY3VycmVudF9saW5lLCBvbWF4LCBubWF4LCBpbnZf Ym90bGluKQorICAgICB7CisgICAgICAgLyogTm9uLXplcm8gaWYgd2UncmUgaW5jcmVhc2luZyB0 aGUgbnVtYmVyIG9mIGxpbmVzLiAqLworICAgICAgIGludCBnbCA9IGN1cnJlbnRfbGluZSA+PSBf cmxfdmlzX2JvdGxpbiAmJiBpbnZfYm90bGluID4gX3JsX3Zpc19ib3RsaW47CisrICAgICAgLyog SWYgY29sX2xlbmRpZmYgaXMgPiAwLCBpbXBseWluZyB0aGF0IHRoZSBuZXcgc3RyaW5nIHRha2Vz IHVwIG1vcmUKKysJIHNjcmVlbiByZWFsIGVzdGF0ZSB0aGFuIHRoZSBvbGQsIGJ1dCBsZW5kaWZm IGlzIDwgMCwgbWVhbmluZyB0aGF0IGl0CisrCSB0YWtlcyBmZXdlciBieXRlcywgd2UgbmVlZCB0 byBqdXN0IG91dHB1dCB0aGUgY2hhcmFjdGVycyBzdGFydGluZworKwkgZnJvbSB0aGUgZmlyc3Qg ZGlmZmVyZW5jZS4gIFRoZXNlIHdpbGwgb3ZlcndyaXRlIHdoYXQgaXMgb24gdGhlCisrCSBkaXNw bGF5LCBzbyB0aGVyZSdzIG5vIHJlYXNvbiB0byBkbyBhIHNtYXJ0IHVwZGF0ZS4gIFRoaXMgY2Fu IHJlYWxseQorKwkgb25seSBoYXBwZW4gaW4gYSBtdWx0aWJ5dGUgZW52aXJvbm1lbnQuICovCisr ICAgICAgaWYgKGxlbmRpZmYgPCAwKQorKwl7CisrCSAgX3JsX291dHB1dF9zb21lX2NoYXJzIChu ZmQsIHRlbXApOworKwkgIF9ybF9sYXN0X2NfcG9zICs9IF9ybF9jb2xfd2lkdGggKG5mZCwgMCwg dGVtcCwgMSk7CisrCSAgLyogSWYgbmZkIGJlZ2lucyBiZWZvcmUgYW55IGludmlzaWJsZSBjaGFy YWN0ZXJzIGluIHRoZSBwcm9tcHQsCisrCSAgICAgYWRqdXN0IF9ybF9sYXN0X2NfcG9zIHRvIGFj Y291bnQgZm9yIHdyYXBfb2Zmc2V0IGFuZCBzZXQKKysJICAgICBjcG9zX2FkanVzdGVkIHRvIGxl dCB0aGUgY2FsbGVyIGtub3cuICovCisrCSAgaWYgKGN1cnJlbnRfbGluZSA9PSAwICYmIHdyYXBf b2Zmc2V0ICYmICgobmZkIC0gbmV3KSA8PSBwcm9tcHRfbGFzdF9pbnZpc2libGUpKQorKwkgICAg eworKwkgICAgICBfcmxfbGFzdF9jX3BvcyAtPSB3cmFwX29mZnNldDsKKysJICAgICAgY3Bvc19h ZGp1c3RlZCA9IDE7CisrCSAgICB9CisrCSAgcmV0dXJuOworKwl9CisgICAgICAgLyogU29tZXRp bWVzIGl0IGlzIGNoZWFwZXIgdG8gcHJpbnQgdGhlIGNoYXJhY3RlcnMgcmF0aGVyIHRoYW4KKyAJ IHVzZSB0aGUgdGVybWluYWwncyBjYXBhYmlsaXRpZXMuICBJZiB3ZSdyZSBncm93aW5nIHRoZSBu dW1iZXIKKyAJIG9mIGxpbmVzLCBtYWtlIHN1cmUgd2UgYWN0dWFsbHkgY2F1c2UgdGhlIG5ldyBs aW5lIHRvIHdyYXAKKyAJIGFyb3VuZCBvbiBhdXRvLXdyYXBwaW5nIHRlcm1pbmFscy4gKi8KKy0g ICAgICBpZiAoX3JsX3Rlcm1pbmFsX2Nhbl9pbnNlcnQgJiYgKCgyICogY29sX3RlbXApID49IGNv bF9sZW5kaWZmIHx8IF9ybF90ZXJtX0lDKSAmJiAoIV9ybF90ZXJtX2F1dG93cmFwIHx8ICFnbCkp CisrICAgICAgZWxzZSBpZiAoX3JsX3Rlcm1pbmFsX2Nhbl9pbnNlcnQgJiYgKCgyICogY29sX3Rl bXApID49IGNvbF9sZW5kaWZmIHx8IF9ybF90ZXJtX0lDKSAmJiAoIV9ybF90ZXJtX2F1dG93cmFw IHx8ICFnbCkpCisgCXsKKyAJICAvKiBJZiBsZW5kaWZmID4gcHJvbXB0X3Zpc2libGVfbGVuZ3Ro IGFuZCBfcmxfbGFzdF9jX3BvcyA9PSAwIGFuZAorIAkgICAgIF9ybF9ob3Jpem9udGFsX3Njcm9s bF9tb2RlID09IDEsIGluc2VydGluZyB0aGUgY2hhcmFjdGVycyB3aXRoCisgCSAgICAgX3JsX3Rl cm1fSUMgb3IgX3JsX3Rlcm1faWMgd2lsbCBzY3JldyB1cCB0aGUgc2NyZWVuIGJlY2F1c2Ugb2Yg dGhlCisgCSAgICAgaW52aXNpYmxlIGNoYXJhY3RlcnMuICBXZSBuZWVkIHRvIGp1c3QgZHJhdyB0 aGVtLiAqLworLQkgIGlmICgqb2xzICYmICghX3JsX2hvcml6b250YWxfc2Nyb2xsX21vZGUgfHwg X3JsX2xhc3RfY19wb3MgPiAwIHx8CistCQkJbGVuZGlmZiA8PSBwcm9tcHRfdmlzaWJsZV9sZW5n dGggfHwgIWN1cnJlbnRfaW52aXNfY2hhcnMpKQorKwkgIC8qIFRoZSBzYW1lIHRoaW5nIGhhcHBl bnMgaWYgd2UncmUgdHJ5aW5nIHRvIGRyYXcgYmVmb3JlIHRoZSBsYXN0CisrCSAgICAgaW52aXNp YmxlIGNoYXJhY3RlciBpbiB0aGUgcHJvbXB0IHN0cmluZyBvciB3ZSdyZSBpbmNyZWFzaW5nIHRo ZQorKwkgICAgIG51bWJlciBvZiBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0aGUgbGluZSBhbmQg d2UncmUgbm90IGRyYXdpbmcKKysJICAgICB0aGUgZW50aXJlIHByb21wdCBzdHJpbmcuICovCisr CSAgaWYgKCpvbHMgJiYgKChfcmxfaG9yaXpvbnRhbF9zY3JvbGxfbW9kZSAmJgorKwkJCV9ybF9s YXN0X2NfcG9zID09IDAgJiYKKysJCQlsZW5kaWZmID4gcHJvbXB0X3Zpc2libGVfbGVuZ3RoICYm CisrCQkJY3VycmVudF9pbnZpc19jaGFycyA+IDApID09IDApICYmCisrCQkgICAgICAoKChNQl9D VVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApICYmCisrCQkgICAgICAgIGN1cnJl bnRfbGluZSA9PSAwICYmIHdyYXBfb2Zmc2V0ICYmCisrCQkgICAgICAgICgobmZkIC0gbmV3KSA8 PSBwcm9tcHRfbGFzdF9pbnZpc2libGUpICYmCisrCQkgICAgICAgIChjb2xfbGVuZGlmZiA8IHBy b21wdF92aXNpYmxlX2xlbmd0aCkpID09IDApICYmCisrCQkgICAgICAodmlzaWJsZV93cmFwX29m ZnNldCA+PSBjdXJyZW50X2ludmlzX2NoYXJzKSkKKyAJICAgIHsKKyAJICAgICAgaW5zZXJ0X3Nv bWVfY2hhcnMgKG5mZCwgbGVuZGlmZiwgY29sX2xlbmRpZmYpOworIAkgICAgICBfcmxfbGFzdF9j X3BvcyArPSBjb2xfbGVuZGlmZjsKKyAJICAgIH0KKysjaWYgMAkJLyogWFhYIC0gZm9yIG5vdyAq LworKwkgIGVsc2UgaWYgKChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDAp ICYmIF9ybF9sYXN0X2NfcG9zID09IDAgJiYgd3JhcF9vZmZzZXQgJiYgKG5mZC1uZXcpIDw9IHBy b21wdF9sYXN0X2ludmlzaWJsZSAmJiBjb2xfbGVuZGlmZiA8IHByb21wdF92aXNpYmxlX2xlbmd0 aCAmJiB2aXNpYmxlX3dyYXBfb2Zmc2V0ID49IGN1cnJlbnRfaW52aXNfY2hhcnMpCisrCSAgICB7 CisrCSAgICAgIF9ybF9vdXRwdXRfc29tZV9jaGFycyAobmZkLCBsZW5kaWZmKTsKKysJICAgICAg X3JsX2xhc3RfY19wb3MgKz0gY29sX2xlbmRpZmY7CisrCSAgICB9CisrI2VuZGlmCisgCSAgZWxz ZSBpZiAoKE1CX0NVUl9NQVggPT0gMSB8fCBybF9ieXRlX29yaWVudGVkICE9IDApICYmICpvbHMg PT0gMCAmJiBsZW5kaWZmID4gMCkKKyAJICAgIHsKKyAJICAgICAgLyogQXQgdGhlIGVuZCBvZiBh IGxpbmUgdGhlIGNoYXJhY3RlcnMgZG8gbm90IGhhdmUgdG8KK0BAIC0xNDk4LDExICsxNjYzLDE2 IEBAIHVwZGF0ZV9saW5lIChvbGQsIG5ldywgY3VycmVudF9saW5lLCBvbWF4LCBubWF4LCBpbnZf Ym90bGluKQorIAkgICAgfQorIAkgIGVsc2UKKyAJICAgIHsKKy0JICAgICAgLyogV2UgaGF2ZSBo b3Jpem9udGFsIHNjcm9sbGluZyBhbmQgd2UgYXJlIG5vdCBpbnNlcnRpbmcgYXQKKy0JCSB0aGUg ZW5kLiAgV2UgaGF2ZSBpbnZpc2libGUgY2hhcmFjdGVycyBpbiB0aGlzIGxpbmUuICBUaGlzCist CQkgaXMgYSBkdW1iIHVwZGF0ZS4gKi8KKyAJICAgICAgX3JsX291dHB1dF9zb21lX2NoYXJzIChu ZmQsIHRlbXApOworIAkgICAgICBfcmxfbGFzdF9jX3BvcyArPSBjb2xfdGVtcDsKKysJICAgICAg LyogSWYgbmZkIGJlZ2lucyBiZWZvcmUgdGhlIGxhc3QgaW52aXNpYmxlIGNoYXJhY3RlciBpbiB0 aGUKKysJCSBwcm9tcHQsIGFkanVzdCBfcmxfbGFzdF9jX3BvcyB0byBhY2NvdW50IGZvciB3cmFw X29mZnNldAorKwkJIGFuZCBzZXQgY3Bvc19hZGp1c3RlZCB0byBsZXQgdGhlIGNhbGxlciBrbm93 LiAqLworKwkgICAgICBpZiAoKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0g MCkgJiYgY3VycmVudF9saW5lID09IDAgJiYgd3JhcF9vZmZzZXQgJiYgKChuZmQgLSBuZXcpIDw9 IHByb21wdF9sYXN0X2ludmlzaWJsZSkpCisrCQl7CisrCQkgIF9ybF9sYXN0X2NfcG9zIC09IHdy YXBfb2Zmc2V0OworKwkJICBjcG9zX2FkanVzdGVkID0gMTsKKysJCX0KKyAJICAgICAgcmV0dXJu OworIAkgICAgfQorIAkgIC8qIENvcHkgKG5ldykgY2hhcnMgdG8gc2NyZWVuIGZyb20gZmlyc3Qg ZGlmZiB0byBsYXN0IG1hdGNoLiAqLworQEAgLTE1MTAsMTUgKzE2ODAsMjMgQEAgdXBkYXRlX2xp bmUgKG9sZCwgbmV3LCBjdXJyZW50X2xpbmUsIG9tYXgsIG5tYXgsIGludl9ib3RsaW4pCisgCSAg aWYgKCh0ZW1wIC0gbGVuZGlmZikgPiAwKQorIAkgICAgeworIAkgICAgICBfcmxfb3V0cHV0X3Nv bWVfY2hhcnMgKG5mZCArIGxlbmRpZmYsIHRlbXAgLSBsZW5kaWZmKTsKKy0jaWYgMQorIAkgICAg IC8qIFhYWCAtLSB0aGlzIGJlYXJzIGNsb3NlciBpbnNwZWN0aW9uLiAgRml4ZXMgYSByZWRpc3Bs YXkgYnVnCisgCQlyZXBvcnRlZCBhZ2FpbnN0IGJhc2gtMy4wLWFscGhhIGJ5IEFuZHJlYXMgU2No d2FiIGludm9sdmluZworIAkJbXVsdGlieXRlIGNoYXJhY3RlcnMgYW5kIHByb21wdCBzdHJpbmdz IHdpdGggaW52aXNpYmxlCisgCQljaGFyYWN0ZXJzLCBidXQgd2FzIHByZXZpb3VzbHkgZGlzYWJs ZWQuICovCistCSAgICAgIF9ybF9sYXN0X2NfcG9zICs9IF9ybF9jb2xfd2lkdGggKG5mZCtsZW5k aWZmLCAwLCB0ZW1wLWNvbF9sZW5kaWZmKTsKKy0jZWxzZQorLQkgICAgICBfcmxfbGFzdF9jX3Bv cyArPSBfcmxfY29sX3dpZHRoIChuZmQrbGVuZGlmZiwgMCwgdGVtcC1sZW5kaWZmKTsKKy0jZW5k aWYKKysJICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkK KysJCXR3aWR0aCA9IF9ybF9jb2xfd2lkdGggKG5mZCtsZW5kaWZmLCAwLCB0ZW1wLWNvbF9sZW5k aWZmLCAxKTsKKysJICAgICAgZWxzZQorKwkJdHdpZHRoID0gdGVtcCAtIGxlbmRpZmY7CisrCSAg ICAgIF9ybF9sYXN0X2NfcG9zICs9IHR3aWR0aDsKKysJICAgICAgLyogSWYgbmZkIGJlZ2lucyBi ZWZvcmUgdGhlIGxhc3QgaW52aXNpYmxlIGNoYXJhY3RlciBpbiB0aGUKKysJCSBwcm9tcHQsIGFk anVzdCBfcmxfbGFzdF9jX3BvcyB0byBhY2NvdW50IGZvciB3cmFwX29mZnNldAorKwkJIGFuZCBz ZXQgY3Bvc19hZGp1c3RlZCB0byBsZXQgdGhlIGNhbGxlciBrbm93LiAqLworKwkgICAgICBpZiAo KE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkgJiYgY3VycmVudF9saW5l ID09IDAgJiYgd3JhcF9vZmZzZXQgJiYgKChuZmQgLSBuZXcpIDw9IHByb21wdF9sYXN0X2ludmlz aWJsZSkpCisrCQl7CisrCQkgIF9ybF9sYXN0X2NfcG9zIC09IHdyYXBfb2Zmc2V0OworKwkJICBj cG9zX2FkanVzdGVkID0gMTsKKysJCX0KKyAJICAgIH0KKyAJfQorICAgICAgIGVsc2UKK0BAIC0x NTMwLDYgKzE3MDgsMTQgQEAgdXBkYXRlX2xpbmUgKG9sZCwgbmV3LCBjdXJyZW50X2xpbmUsIG9t YXgsIG5tYXgsIGludl9ib3RsaW4pCisgCSAgICAgY2hhciBpbiB0aGUgY3VycmVudCBsaW5lICh3 aGljaCBpbXBsaWVzIHdlIGp1c3Qgb3V0cHV0IHNvbWUgaW52aXNpYmxlCisgCSAgICAgY2hhcmFj dGVycykgd2UgbmVlZCB0byBhZGp1c3QgX3JsX2xhc3RfY19wb3MsIHNpbmNlIGl0IHJlcHJlc2Vu dHMKKyAJICAgICBhIHBoeXNpY2FsIGNoYXJhY3RlciBwb3NpdGlvbi4gKi8KKysJICBpZiAoKE1C X0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkgJiYKKysJCWN1cnJlbnRfbGlu ZSA9PSBwcm9tcHRfbGFzdF9zY3JlZW5fbGluZSAmJiB3cmFwX29mZnNldCAmJgorKwkJd3JhcF9v ZmZzZXQgIT0gcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUgJiYKKysJCSgobmZkLW5ldykg PCAocHJvbXB0X2xhc3RfaW52aXNpYmxlLShjdXJyZW50X2xpbmUqX3JsX3NjcmVlbndpZHRoKSkp KQorKwkgICAgeworKwkgICAgICBfcmxfbGFzdF9jX3BvcyAtPSB3cmFwX29mZnNldCAtIHByb21w dF9pbnZpc19jaGFyc19maXJzdF9saW5lOworKwkgICAgICBjcG9zX2FkanVzdGVkID0gMTsKKysJ ICAgIH0KKyAJfQorICAgICB9CisgICBlbHNlCQkJCS8qIERlbGV0ZSBjaGFyYWN0ZXJzIGZyb20g bGluZS4gKi8KK0BAIC0xNTUxLDggKzE3MzcsMjIgQEAgdXBkYXRlX2xpbmUgKG9sZCwgbmV3LCBj dXJyZW50X2xpbmUsIG9tYXgsIG5tYXgsIGludl9ib3RsaW4pCisgCSAgdGVtcCA9IG5scyAtIG5m ZDsKKyAJICBpZiAodGVtcCA+IDApCisgCSAgICB7CisrCSAgICAgIC8qIElmIG5mZCBiZWdpbnMg YXQgdGhlIHByb21wdCwgb3IgYmVmb3JlIHRoZSBpbnZpc2libGUKKysJCSBjaGFyYWN0ZXJzIGlu IHRoZSBwcm9tcHQsIHdlIG5lZWQgdG8gYWRqdXN0IF9ybF9sYXN0X2NfcG9zCisrCQkgaW4gYSBt dWx0aWJ5dGUgbG9jYWxlIHRvIGFjY291bnQgZm9yIHRoZSB3cmFwIG9mZnNldCBhbmQKKysJCSBz ZXQgY3Bvc19hZGp1c3RlZCBhY2NvcmRpbmdseS4gKi8KKyAJICAgICAgX3JsX291dHB1dF9zb21l X2NoYXJzIChuZmQsIHRlbXApOworLQkgICAgICBfcmxfbGFzdF9jX3BvcyArPSBfcmxfY29sX3dp ZHRoIChuZmQsIDAsIHRlbXApOzsKKysJICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5 dGVfb3JpZW50ZWQgPT0gMCkKKysJCXsKKysJCSAgX3JsX2xhc3RfY19wb3MgKz0gX3JsX2NvbF93 aWR0aCAobmZkLCAwLCB0ZW1wLCAxKTsKKysJCSAgaWYgKGN1cnJlbnRfbGluZSA9PSAwICYmIHdy YXBfb2Zmc2V0ICYmICAoKG5mZCAtIG5ldykgPD0gcHJvbXB0X2xhc3RfaW52aXNpYmxlKSkKKysJ CSAgICB7CisrCQkgICAgICBfcmxfbGFzdF9jX3BvcyAtPSB3cmFwX29mZnNldDsKKysJCSAgICAg IGNwb3NfYWRqdXN0ZWQgPSAxOworKwkJICAgIH0KKysJCX0KKysJICAgICAgZWxzZQorKwkJX3Js X2xhc3RfY19wb3MgKz0gdGVtcDsKKyAJICAgIH0KKyAJfQorICAgICAgIC8qIE90aGVyd2lzZSwg cHJpbnQgb3ZlciB0aGUgZXhpc3RpbmcgbWF0ZXJpYWwuICovCitAQCAtMTU2MCwxNiArMTc2MCwz NyBAQCB1cGRhdGVfbGluZSAob2xkLCBuZXcsIGN1cnJlbnRfbGluZSwgb21heCwgbm1heCwgaW52 X2JvdGxpbikKKyAJeworIAkgIGlmICh0ZW1wID4gMCkKKyAJICAgIHsKKysJICAgICAgLyogSWYg bmZkIGJlZ2lucyBhdCB0aGUgcHJvbXB0LCBvciBiZWZvcmUgdGhlIGludmlzaWJsZQorKwkJIGNo YXJhY3RlcnMgaW4gdGhlIHByb21wdCwgd2UgbmVlZCB0byBhZGp1c3QgX3JsX2xhc3RfY19wb3MK KysJCSBpbiBhIG11bHRpYnl0ZSBsb2NhbGUgdG8gYWNjb3VudCBmb3IgdGhlIHdyYXAgb2Zmc2V0 IGFuZAorKwkJIHNldCBjcG9zX2FkanVzdGVkIGFjY29yZGluZ2x5LiAqLworIAkgICAgICBfcmxf b3V0cHV0X3NvbWVfY2hhcnMgKG5mZCwgdGVtcCk7CisgCSAgICAgIF9ybF9sYXN0X2NfcG9zICs9 IGNvbF90ZW1wOwkJLyogWFhYICovCisrCSAgICAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9i eXRlX29yaWVudGVkID09IDApCisrCQl7CisrCQkgIGlmIChjdXJyZW50X2xpbmUgPT0gMCAmJiB3 cmFwX29mZnNldCAmJiAgKChuZmQgLSBuZXcpIDw9IHByb21wdF9sYXN0X2ludmlzaWJsZSkpCisr CQkgICAgeworKwkJICAgICAgX3JsX2xhc3RfY19wb3MgLT0gd3JhcF9vZmZzZXQ7CisrCQkgICAg ICBjcG9zX2FkanVzdGVkID0gMTsKKysJCSAgICB9CisrCQl9CisgCSAgICB9CisgCSAgbGVuZGlm ZiA9IChvZSAtIG9sZCkgLSAobmUgLSBuZXcpOworIAkgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBy bF9ieXRlX29yaWVudGVkID09IDApCistCSAgICBjb2xfbGVuZGlmZiA9IF9ybF9jb2xfd2lkdGgg KG9sZCwgMCwgb2UgLSBvbGQpIC0gX3JsX2NvbF93aWR0aCAobmV3LCAwLCBuZSAtIG5ldyk7Cisr CSAgICBjb2xfbGVuZGlmZiA9IF9ybF9jb2xfd2lkdGggKG9sZCwgMCwgb2UgLSBvbGQsIDEpIC0g X3JsX2NvbF93aWR0aCAobmV3LCAwLCBuZSAtIG5ldywgMSk7CisgCSAgZWxzZQorIAkgICAgY29s X2xlbmRpZmYgPSBsZW5kaWZmOworIAorKyNpZiAwCisgCSAgaWYgKGNvbF9sZW5kaWZmKQorKyNl bHNlCisrCSAgLyogSWYgd2UndmUgYWxyZWFkeSBwcmludGVkIG92ZXIgdGhlIGVudGlyZSB3aWR0 aCBvZiB0aGUgc2NyZWVuLAorKwkgICAgIGluY2x1ZGluZyB0aGUgb2xkIG1hdGVyaWFsLCB0aGVu IGNvbF9sZW5kaWZmIGRvZXNuJ3QgbWF0dGVyIGFuZAorKwkgICAgIHNwYWNlX3RvX2VvbCB3aWxs IGluc2VydCB0b28gbWFueSBzcGFjZXMuICBYWFggLSBtYXliZSB3ZSBzaG91bGQKKysJICAgICBh ZGp1c3QgY29sX2xlbmRpZmYgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBfcmxfbGFz dF9jX3BvcworKwkgICAgIGFuZCBfcmxfc2NyZWVud2lkdGggKi8KKysJICBpZiAoY29sX2xlbmRp ZmYgJiYgKChNQl9DVVJfTUFYID09IDEgfHwgcmxfYnl0ZV9vcmllbnRlZCkgfHwgKF9ybF9sYXN0 X2NfcG9zIDwgX3JsX3NjcmVlbndpZHRoKSkpCisrI2VuZGlmCisgCSAgICB7CSAgCisgCSAgICAg IGlmIChfcmxfdGVybV9hdXRvd3JhcCAmJiBjdXJyZW50X2xpbmUgPCBpbnZfYm90bGluKQorIAkJ c3BhY2VfdG9fZW9sIChjb2xfbGVuZGlmZik7CitAQCAtMTYyMyw3ICsxODQ0LDcgQEAgcmxfb25f bmV3X2xpbmVfd2l0aF9wcm9tcHQgKCkKKyAKKyAgIGwgPSBzdHJsZW4gKHByb21wdF9sYXN0X2xp bmUpOworICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKKy0g ICAgX3JsX2xhc3RfY19wb3MgPSBfcmxfY29sX3dpZHRoIChwcm9tcHRfbGFzdF9saW5lLCAwLCBs KTsJLyogWFhYICovCisrICAgIF9ybF9sYXN0X2NfcG9zID0gX3JsX2NvbF93aWR0aCAocHJvbXB0 X2xhc3RfbGluZSwgMCwgbCwgMSk7CS8qIFhYWCAqLworICAgZWxzZQorICAgICBfcmxfbGFzdF9j X3BvcyA9IGw7CisgCitAQCAtMTY1OCwxMCArMTg3OSwxMSBAQCBybF9vbl9uZXdfbGluZV93aXRo X3Byb21wdCAoKQorIGludAorIHJsX2ZvcmNlZF91cGRhdGVfZGlzcGxheSAoKQorIHsKKysgIHJl Z2lzdGVyIGNoYXIgKnRlbXA7CisrCisgICBpZiAodmlzaWJsZV9saW5lKQorICAgICB7CistICAg ICAgcmVnaXN0ZXIgY2hhciAqdGVtcCA9IHZpc2libGVfbGluZTsKKy0KKysgICAgICB0ZW1wID0g dmlzaWJsZV9saW5lOworICAgICAgIHdoaWxlICgqdGVtcCkKKyAJKnRlbXArKyA9ICdcMCc7Cisg ICAgIH0KK0BAIC0xNjg0LDkgKzE5MDYsMTQgQEAgX3JsX21vdmVfY3Vyc29yX3JlbGF0aXZlIChu ZXcsIGRhdGEpCisgICByZWdpc3RlciBpbnQgaTsKKyAgIGludCB3b2ZmOwkJCS8qIG51bWJlciBv ZiBpbnZpc2libGUgY2hhcnMgb24gY3VycmVudCBsaW5lICovCisgICBpbnQgY3BvcywgZHBvczsJ CS8qIGN1cnJlbnQgYW5kIGRlc2lyZWQgY3Vyc29yIHBvc2l0aW9ucyAqLworKyAgaW50IGFkanVz dDsKKyAKKy0gIHdvZmYgPSBXX09GRlNFVCAoX3JsX2xhc3Rfdl9wb3MsIHdyYXBfb2Zmc2V0KTsK KysgIHdvZmYgPSBXUkFQX09GRlNFVCAoX3JsX2xhc3Rfdl9wb3MsIHdyYXBfb2Zmc2V0KTsKKyAg IGNwb3MgPSBfcmxfbGFzdF9jX3BvczsKKysKKysgIGlmIChjcG9zID09IDAgJiYgY3BvcyA9PSBu ZXcpCisrICAgIHJldHVybjsKKysKKyAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKKyAg IC8qIElmIHdlIGhhdmUgbXVsdGlieXRlIGNoYXJhY3RlcnMsIE5FVyBpcyBpbmRleGVkIGJ5IHRo ZSBidWZmZXIgcG9pbnQgaW4KKyAgICAgIGEgbXVsdGlieXRlIHN0cmluZywgYnV0IF9ybF9sYXN0 X2NfcG9zIGlzIHRoZSBkaXNwbGF5IHBvc2l0aW9uLiAgSW4KK0BAIC0xNjk1LDkgKzE5MjIsNDIg QEAgX3JsX21vdmVfY3Vyc29yX3JlbGF0aXZlIChuZXcsIGRhdGEpCisgICAgICBhcyBsb25nIGFz IHdlIGFyZSBwYXN0IHRoZW0gYW5kIHRoZXkgYXJlIGNvdW50ZWQgYnkgX3JsX2NvbF93aWR0aC4g Ki8KKyAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCisgICAg IHsKKy0gICAgICBkcG9zID0gX3JsX2NvbF93aWR0aCAoZGF0YSwgMCwgbmV3KTsKKy0gICAgICBp ZiAoZHBvcyA+IHdvZmYpCistCWRwb3MgLT0gd29mZjsKKysgICAgICBhZGp1c3QgPSAxOworKyAg ICAgIC8qIFRyeSB0byBzaG9ydC1jaXJjdWl0IGNvbW1vbiBjYXNlcyBhbmQgZWxpbWluYXRlIGEg YnVuY2ggb2YgbXVsdGlieXRlCisrCSBjaGFyYWN0ZXIgZnVuY3Rpb24gY2FsbHMuICovCisrICAg ICAgLyogMS4gIHByb21wdCBzdHJpbmcgKi8KKysgICAgICBpZiAobmV3ID09IGxvY2FsX3Byb21w dF9sZW4gJiYgbWVtY21wIChkYXRhLCBsb2NhbF9wcm9tcHQsIG5ldykgPT0gMCkKKysJeworKwkg IGRwb3MgPSBwcm9tcHRfcGh5c2ljYWxfY2hhcnM7CisrCSAgY3Bvc19hZGp1c3RlZCA9IDE7Cisr CSAgYWRqdXN0ID0gMDsKKysJfQorKyAgICAgIC8qIDIuICBwcm9tcHRfc3RyaW5nICsgbGluZSBj b250ZW50cyAqLworKyAgICAgIGVsc2UgaWYgKG5ldyA+IGxvY2FsX3Byb21wdF9sZW4gJiYgbG9j YWxfcHJvbXB0ICYmIG1lbWNtcCAoZGF0YSwgbG9jYWxfcHJvbXB0LCBsb2NhbF9wcm9tcHRfbGVu KSA9PSAwKQorKwl7CisrCSAgZHBvcyA9IHByb21wdF9waHlzaWNhbF9jaGFycyArIF9ybF9jb2xf d2lkdGggKGRhdGEsIGxvY2FsX3Byb21wdF9sZW4sIG5ldywgMSk7CisrCSAgY3Bvc19hZGp1c3Rl ZCA9IDE7CisrCSAgYWRqdXN0ID0gMDsKKysJfQorKyAgICAgIGVsc2UKKysgICAgICAgIGRwb3Mg PSBfcmxfY29sX3dpZHRoIChkYXRhLCAwLCBuZXcsIDEpOworKworKyAgICAgIC8qIFVzZSBORVcg d2hlbiBjb21wYXJpbmcgYWdhaW5zdCB0aGUgbGFzdCBpbnZpc2libGUgY2hhcmFjdGVyIGluIHRo ZQorKwkgcHJvbXB0IHN0cmluZywgc2luY2UgdGhleSdyZSBib3RoIGJ1ZmZlciBpbmRpY2VzIGFu ZCBEUE9TIGlzIGEKKysJIGRlc2lyZWQgZGlzcGxheSBwb3NpdGlvbi4gKi8KKysgICAgICBpZiAo YWRqdXN0ICYmICgobmV3ID4gcHJvbXB0X2xhc3RfaW52aXNpYmxlKSB8fAkJLyogWFhYIC0gZG9u J3QgdXNlIHdvZmYgaGVyZSAqLworKwkgIChwcm9tcHRfcGh5c2ljYWxfY2hhcnMgPj0gX3JsX3Nj cmVlbndpZHRoICYmCisrCSAgIF9ybF9sYXN0X3ZfcG9zID09IHByb21wdF9sYXN0X3NjcmVlbl9s aW5lICYmCisrCSAgIHdyYXBfb2Zmc2V0ID49IHdvZmYgJiYgZHBvcyA+PSB3b2ZmICYmCisrCSAg IG5ldyA+IChwcm9tcHRfbGFzdF9pbnZpc2libGUtKF9ybF9zY3JlZW53aWR0aCpfcmxfbGFzdF92 X3Bvcyktd3JhcF9vZmZzZXQpKSkpCisrCSAgIC8qIFhYWCBsYXN0IGNvbXBhcmlzb24gbWlnaHQg bmVlZCB0byBiZSA+PSAqLworKwl7CisrCSAgZHBvcyAtPSB3b2ZmOworKwkgIC8qIFNpbmNlIHRo aXMgd2lsbCBiZSBhc3NpZ25lZCB0byBfcmxfbGFzdF9jX3BvcyBhdCB0aGUgZW5kIChtb3JlCisr CSAgICAgcHJlY2lzZWx5LCBfcmxfbGFzdF9jX3BvcyA9PSBkcG9zIHdoZW4gdGhpcyBmdW5jdGlv biByZXR1cm5zKSwKKysJICAgICBsZXQgdGhlIGNhbGxlciBrbm93LiAqLworKwkgIGNwb3NfYWRq dXN0ZWQgPSAxOworKwl9CisgICAgIH0KKyAgIGVsc2UKKyAjZW5kaWYKK0BAIC0xNzE2LDcgKzE5 NzYsNyBAQCBfcmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUgKG5ldywgZGF0YSkKKyAgIGVsc2UKKyAj ZW5kaWYKKyAgIGkgPSBfcmxfbGFzdF9jX3BvcyAtIHdvZmY7CistICBpZiAobmV3ID09IDAgfHwg Q1JfRkFTVEVSIChuZXcsIF9ybF9sYXN0X2NfcG9zKSB8fAorKyAgaWYgKGRwb3MgPT0gMCB8fCBD Ul9GQVNURVIgKGRwb3MsIF9ybF9sYXN0X2NfcG9zKSB8fAorICAgICAgIChfcmxfdGVybV9hdXRv d3JhcCAmJiBpID09IF9ybF9zY3JlZW53aWR0aCkpCisgICAgIHsKKyAjaWYgZGVmaW5lZCAoX19N U0RPU19fKQorQEAgLTE3MzgsMTkgKzE5OTgsMjcgQEAgX3JsX21vdmVfY3Vyc29yX3JlbGF0aXZl IChuZXcsIGRhdGEpCisgCSBzZXF1ZW5jZSB0ZWxsaW5nIHRoZSB0ZXJtaW5hbCB0byBtb3ZlIGZv cndhcmQgb25lIGNoYXJhY3Rlci4KKyAJIFRoYXQga2luZCBvZiBjb250cm9sIGlzIGZvciBwZW9w bGUgd2hvIGRvbid0IGtub3cgd2hhdCB0aGUKKyAJIGRhdGEgaXMgdW5kZXJuZWF0aCB0aGUgY3Vy c29yLiAqLworLSNpZiBkZWZpbmVkIChIQUNLX1RFUk1DQVBfTU9USU9OKQorLSAgICAgIGlmIChf cmxfdGVybV9mb3J3YXJkX2NoYXIpCistCXsKKy0JICBmb3IgKGkgPSBjcG9zOyBpIDwgZHBvczsg aSsrKQorLQkgICAgdHB1dHMgKF9ybF90ZXJtX2ZvcndhcmRfY2hhciwgMSwgX3JsX291dHB1dF9j aGFyYWN0ZXJfZnVuY3Rpb24pOworLQl9CistICAgICAgZWxzZQorLSNlbmRpZiAvKiBIQUNLX1RF Uk1DQVBfTU9USU9OICovCisrCisrICAgICAgLyogSG93ZXZlciwgd2UgbmVlZCBhIGhhbmRsZSBv biB3aGVyZSB0aGUgY3VycmVudCBkaXNwbGF5IHBvc2l0aW9uIGlzCisrCSBpbiB0aGUgYnVmZmVy IGZvciB0aGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIGNvbW1lbnQgdG8gYmUgdHJ1ZS4KKysJIElu IG11bHRpYnl0ZSBsb2NhbGVzLCB3ZSBkb24ndCBjdXJyZW50bHkgaGF2ZSB0aGF0IGluZm8gYXZh aWxhYmxlLgorKwkgV2l0aG91dCBpdCwgd2UgZG9uJ3Qga25vdyB3aGVyZSB0aGUgZGF0YSB3ZSBo YXZlIHRvIGRpc3BsYXkgYmVnaW5zCisrCSBpbiB0aGUgYnVmZmVyIGFuZCB3ZSBoYXZlIHRvIGdv IGJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc2NyZWVuCisrCSBsaW5lLiAgSW4gdGhpcyBj YXNlLCB3ZSBjYW4gdXNlIHRoZSB0ZXJtaW5hbCBzZXF1ZW5jZSB0byBtb3ZlIGZvcndhcmQKKysJ IGlmIGl0J3MgYXZhaWxhYmxlLiAqLworICAgICAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9i eXRlX29yaWVudGVkID09IDApCisgCXsKKy0JICB0cHV0cyAoX3JsX3Rlcm1fY3IsIDEsIF9ybF9v dXRwdXRfY2hhcmFjdGVyX2Z1bmN0aW9uKTsKKy0JICBmb3IgKGkgPSAwOyBpIDwgbmV3OyBpKysp CistCSAgICBwdXRjIChkYXRhW2ldLCBybF9vdXRzdHJlYW0pOworKwkgIGlmIChfcmxfdGVybV9m b3J3YXJkX2NoYXIpCisrCSAgICB7CisrCSAgICAgIGZvciAoaSA9IGNwb3M7IGkgPCBkcG9zOyBp KyspCisrCSAgICAgICAgdHB1dHMgKF9ybF90ZXJtX2ZvcndhcmRfY2hhciwgMSwgX3JsX291dHB1 dF9jaGFyYWN0ZXJfZnVuY3Rpb24pOworKwkgICAgfQorKwkgIGVsc2UKKysJICAgIHsKKysJICAg ICAgdHB1dHMgKF9ybF90ZXJtX2NyLCAxLCBfcmxfb3V0cHV0X2NoYXJhY3Rlcl9mdW5jdGlvbik7 CisrCSAgICAgIGZvciAoaSA9IDA7IGkgPCBuZXc7IGkrKykKKysJCXB1dGMgKGRhdGFbaV0sIHJs X291dHN0cmVhbSk7CisrCSAgICB9CisgCX0KKyAgICAgICBlbHNlCisgCWZvciAoaSA9IGNwb3M7 IGkgPCBuZXc7IGkrKykKK0BAIC0xOTA4LDYgKzIxNzYsNyBAQCBybF9tZXNzYWdlICh2YV9hbGlz dCkKKyAJCQkJCSAmcHJvbXB0X2ludmlzX2NoYXJzX2ZpcnN0X2xpbmUsCisgCQkJCQkgJnByb21w dF9waHlzaWNhbF9jaGFycyk7CisgICBsb2NhbF9wcm9tcHRfcHJlZml4ID0gKGNoYXIgKilOVUxM OworKyAgbG9jYWxfcHJvbXB0X2xlbiA9IGxvY2FsX3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJv bXB0KSA6IDA7CisgICAoKnJsX3JlZGlzcGxheV9mdW5jdGlvbikgKCk7CisgCisgICByZXR1cm4g MDsKK0BAIC0xOTMxLDYgKzIyMDAsNyBAQCBybF9tZXNzYWdlIChmb3JtYXQsIGFyZzEsIGFyZzIp CisgCQkJCQkgJnByb21wdF9pbnZpc19jaGFyc19maXJzdF9saW5lLAorIAkJCQkJICZwcm9tcHRf cGh5c2ljYWxfY2hhcnMpOworICAgbG9jYWxfcHJvbXB0X3ByZWZpeCA9IChjaGFyICopTlVMTDsK KysgIGxvY2FsX3Byb21wdF9sZW4gPSBsb2NhbF9wcm9tcHQgPyBzdHJsZW4gKGxvY2FsX3Byb21w dCkgOiAwOworICAgKCpybF9yZWRpc3BsYXlfZnVuY3Rpb24pICgpOworICAgICAgIAorICAgcmV0 dXJuIDA7CitAQCAtMTk2NywxMiArMjIzNywxNCBAQCBybF9zYXZlX3Byb21wdCAoKQorICAgc2F2 ZWRfbG9jYWxfcHJvbXB0ID0gbG9jYWxfcHJvbXB0OworICAgc2F2ZWRfbG9jYWxfcHJlZml4ID0g bG9jYWxfcHJvbXB0X3ByZWZpeDsKKyAgIHNhdmVkX3ByZWZpeF9sZW5ndGggPSBwcm9tcHRfcHJl Zml4X2xlbmd0aDsKKysgIHNhdmVkX2xvY2FsX2xlbmd0aCA9IGxvY2FsX3Byb21wdF9sZW47Cisg ICBzYXZlZF9sYXN0X2ludmlzaWJsZSA9IHByb21wdF9sYXN0X2ludmlzaWJsZTsKKyAgIHNhdmVk X3Zpc2libGVfbGVuZ3RoID0gcHJvbXB0X3Zpc2libGVfbGVuZ3RoOworICAgc2F2ZWRfaW52aXNf Y2hhcnNfZmlyc3RfbGluZSA9IHByb21wdF9pbnZpc19jaGFyc19maXJzdF9saW5lOworICAgc2F2 ZWRfcGh5c2ljYWxfY2hhcnMgPSBwcm9tcHRfcGh5c2ljYWxfY2hhcnM7CisgCisgICBsb2NhbF9w cm9tcHQgPSBsb2NhbF9wcm9tcHRfcHJlZml4ID0gKGNoYXIgKikwOworKyAgbG9jYWxfcHJvbXB0 X2xlbiA9IDA7CisgICBwcm9tcHRfbGFzdF9pbnZpc2libGUgPSBwcm9tcHRfdmlzaWJsZV9sZW5n dGggPSBwcm9tcHRfcHJlZml4X2xlbmd0aCA9IDA7CisgICBwcm9tcHRfaW52aXNfY2hhcnNfZmly c3RfbGluZSA9IHByb21wdF9waHlzaWNhbF9jaGFycyA9IDA7CisgfQorQEAgLTE5ODUsNiArMjI1 Nyw3IEBAIHJsX3Jlc3RvcmVfcHJvbXB0ICgpCisgCisgICBsb2NhbF9wcm9tcHQgPSBzYXZlZF9s b2NhbF9wcm9tcHQ7CisgICBsb2NhbF9wcm9tcHRfcHJlZml4ID0gc2F2ZWRfbG9jYWxfcHJlZml4 OworKyAgbG9jYWxfcHJvbXB0X2xlbiA9IHNhdmVkX2xvY2FsX2xlbmd0aDsKKyAgIHByb21wdF9w cmVmaXhfbGVuZ3RoID0gc2F2ZWRfcHJlZml4X2xlbmd0aDsKKyAgIHByb21wdF9sYXN0X2ludmlz aWJsZSA9IHNhdmVkX2xhc3RfaW52aXNpYmxlOworICAgcHJvbXB0X3Zpc2libGVfbGVuZ3RoID0g c2F2ZWRfdmlzaWJsZV9sZW5ndGg7CitAQCAtMTk5Myw2ICsyMjY2LDcgQEAgcmxfcmVzdG9yZV9w cm9tcHQgKCkKKyAKKyAgIC8qIGNhbiB0ZXN0IHNhdmVkX2xvY2FsX3Byb21wdCB0byBzZWUgaWYg cHJvbXB0IGluZm8gaGFzIGJlZW4gc2F2ZWQuICovCisgICBzYXZlZF9sb2NhbF9wcm9tcHQgPSBz YXZlZF9sb2NhbF9wcmVmaXggPSAoY2hhciAqKTA7CisrICBzYXZlZF9sb2NhbF9sZW5ndGggPSAw OworICAgc2F2ZWRfbGFzdF9pbnZpc2libGUgPSBzYXZlZF92aXNpYmxlX2xlbmd0aCA9IHNhdmVk X3ByZWZpeF9sZW5ndGggPSAwOworICAgc2F2ZWRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSA9IHNh dmVkX3BoeXNpY2FsX2NoYXJzID0gMDsKKyB9CitAQCAtMjEwNiw3ICsyMzgwLDcgQEAgaW5zZXJ0 X3NvbWVfY2hhcnMgKHN0cmluZywgY291bnQsIGNvbCkKKyAgIC8qIERFQlVHR0lORyAqLworICAg aWYgKE1CX0NVUl9NQVggPT0gMSB8fCBybF9ieXRlX29yaWVudGVkKQorICAgICBpZiAoY291bnQg IT0gY29sKQorLSAgICAgIGZwcmludGYoc3RkZXJyLCAicmVhZGxpbmU6IGRlYnVnOiBpbnNlcnRf c29tZV9jaGFyczogY291bnQgKCVkKSAhPSBjb2wgKCVkKVxuIiwgY291bnQsIGNvbCk7CisrICAg ICAgX3JsX3R0eW1zZyAoImRlYnVnOiBpbnNlcnRfc29tZV9jaGFyczogY291bnQgKCVkKSAhPSBj b2wgKCVkKSIsIGNvdW50LCBjb2wpOworIAorICAgLyogSWYgSUMgaXMgZGVmaW5lZCwgdGhlbiB3 ZSBkbyBub3QgaGF2ZSB0byAiZW50ZXIiIGluc2VydCBtb2RlLiAqLworICAgaWYgKF9ybF90ZXJt X0lDKQorQEAgLTIxODksNyArMjQ2Myw4IEBAIF9ybF91cGRhdGVfZmluYWwgKCkKKyAgICAgICBj aGFyICpsYXN0X2xpbmU7CisgCisgICAgICAgbGFzdF9saW5lID0gJnZpc2libGVfbGluZVt2aXNf bGJyZWFrc1tfcmxfdmlzX2JvdGxpbl1dOworLSAgICAgIF9ybF9tb3ZlX2N1cnNvcl9yZWxhdGl2 ZSAoX3JsX3NjcmVlbndpZHRoIC0gMSwgbGFzdF9saW5lKTsKKysgICAgICBjcG9zX2J1ZmZlcl9w b3NpdGlvbiA9IC0xOwkvKiBkb24ndCBrbm93IHdoZXJlIHdlIGFyZSBpbiBidWZmZXIgKi8KKysg ICAgICBfcmxfbW92ZV9jdXJzb3JfcmVsYXRpdmUgKF9ybF9zY3JlZW53aWR0aCAtIDEsIGxhc3Rf bGluZSk7CS8qIFhYWCAqLworICAgICAgIF9ybF9jbGVhcl90b19lb2wgKDApOworICAgICAgIHB1 dGMgKGxhc3RfbGluZVtfcmxfc2NyZWVud2lkdGggLSAxXSwgcmxfb3V0c3RyZWFtKTsKKyAgICAg fQorQEAgLTIyMzIsNiArMjUwNyw3IEBAIHJlZHJhd19wcm9tcHQgKHQpCisgCQkJCSAgICZwcm9t cHRfaW52aXNfY2hhcnNfZmlyc3RfbGluZSwKKyAJCQkJICAgJnByb21wdF9waHlzaWNhbF9jaGFy cyk7CisgICBsb2NhbF9wcm9tcHRfcHJlZml4ID0gKGNoYXIgKilOVUxMOworKyAgbG9jYWxfcHJv bXB0X2xlbiA9IGxvY2FsX3Byb21wdCA/IHN0cmxlbiAobG9jYWxfcHJvbXB0KSA6IDA7CisgCisg ICBybF9mb3JjZWRfdXBkYXRlX2Rpc3BsYXkgKCk7CisgCitAQCAtMjI0NSwxMCArMjUyMSwxNCBA QCBfcmxfcmVkaXNwbGF5X2FmdGVyX3NpZ3dpbmNoICgpCisgeworICAgY2hhciAqdDsKKyAKKy0g IC8qIENsZWFyIHRoZSBjdXJyZW50IGxpbmUgYW5kIHB1dCB0aGUgY3Vyc29yIGF0IGNvbHVtbiAw LiAgTWFrZSBzdXJlCistICAgICB0aGUgcmlnaHQgdGhpbmcgaGFwcGVucyBpZiB3ZSBoYXZlIHdy YXBwZWQgdG8gYSBuZXcgc2NyZWVuIGxpbmUuICovCisrICAvKiBDbGVhciB0aGUgbGFzdCBsaW5l IChhc3N1bWluZyB0aGF0IHRoZSBzY3JlZW4gc2l6ZSBjaGFuZ2Ugd2lsbCByZXN1bHQgaW4KKysg ICAgIGVpdGhlciBtb3JlIG9yIGZld2VyIGNoYXJhY3RlcnMgb24gdGhhdCBsaW5lIG9ubHkpIGFu ZCBwdXQgdGhlIGN1cnNvciBhdAorKyAgICAgY29sdW1uIDAuICBNYWtlIHN1cmUgdGhlIHJpZ2h0 IHRoaW5nIGhhcHBlbnMgaWYgd2UgaGF2ZSB3cmFwcGVkIHRvIGEgbmV3CisrICAgICBzY3JlZW4g bGluZS4gKi8KKyAgIGlmIChfcmxfdGVybV9jcikKKyAgICAgeworKyAgICAgIF9ybF9tb3ZlX3Zl cnQgKF9ybF92aXNfYm90bGluKTsKKysKKyAjaWYgZGVmaW5lZCAoX19NU0RPU19fKQorICAgICAg IHB1dGMgKCdccicsIHJsX291dHN0cmVhbSk7CisgI2Vsc2UKK0BAIC0yMjg0LDcgKzI1NjQsNyBA QCBfcmxfcmVkaXNwbGF5X2FmdGVyX3NpZ3dpbmNoICgpCisgdm9pZAorIF9ybF9jbGVhbl91cF9m b3JfZXhpdCAoKQorIHsKKy0gIGlmIChyZWFkbGluZV9lY2hvaW5nX3ApCisrICBpZiAoX3JsX2Vj aG9pbmdfcCkKKyAgICAgeworICAgICAgIF9ybF9tb3ZlX3ZlcnQgKF9ybF92aXNfYm90bGluKTsK KyAgICAgICBfcmxfdmlzX2JvdGxpbiA9IDA7CitAQCAtMjMyOSwyMCArMjYwOSw0MSBAQCBfcmxf Y3VycmVudF9kaXNwbGF5X2xpbmUgKCkKKyAgICBJbiB0aGUgY2FzZSBvZiBtdWx0aWJ5dGUgY2hh cmFjdGVycyB3aXRoIHN0YXRlZnVsIGVuY29kaW5nLCB3ZSBoYXZlIHRvCisgICAgc2NhbiBmcm9t IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyB0byB0YWtlIHRoZSBzdGF0ZSBpbnRvIGFjY291 bnQuICovCisgc3RhdGljIGludAorLV9ybF9jb2xfd2lkdGggKHN0ciwgc3RhcnQsIGVuZCkKKytf cmxfY29sX3dpZHRoIChzdHIsIHN0YXJ0LCBlbmQsIGZsYWdzKQorICAgICAgY29uc3QgY2hhciAq c3RyOworLSAgICAgaW50IHN0YXJ0LCBlbmQ7CisrICAgICBpbnQgc3RhcnQsIGVuZCwgZmxhZ3M7 CisgeworICAgd2NoYXJfdCB3YzsKKy0gIG1ic3RhdGVfdCBwcyA9IHswfTsKKysgIG1ic3RhdGVf dCBwczsKKyAgIGludCB0bXAsIHBvaW50LCB3aWR0aCwgbWF4OworIAorICAgaWYgKGVuZCA8PSBz dGFydCkKKyAgICAgcmV0dXJuIDA7CisrICBpZiAoTUJfQ1VSX01BWCA9PSAxIHx8IHJsX2J5dGVf b3JpZW50ZWQpCisreworK19ybF90dHltc2cgKCJfcmxfY29sX3dpZHRoOiBjYWxsZWQgd2l0aCBN Ql9DVVJfTUFYID09IDEiKTsKKysgICAgcmV0dXJuIChlbmQgLSBzdGFydCk7CisrfQorKworKyAg bWVtc2V0ICgmcHMsIDAsIHNpemVvZiAobWJzdGF0ZV90KSk7CisgCisgICBwb2ludCA9IDA7Cisg ICBtYXggPSBlbmQ7CisgCisrICAvKiBUcnkgdG8gc2hvcnQtY2lyY3VpdCBjb21tb24gY2FzZXMu ICBUaGUgYWRqdXN0bWVudCB0byByZW1vdmUgd3JhcF9vZmZzZXQKKysgICAgIGlzIGRvbmUgYnkg dGhlIGNhbGxlci4gKi8KKysgIC8qIDEuICBwcm9tcHQgc3RyaW5nICovCisrICBpZiAoZmxhZ3Mg JiYgc3RhcnQgPT0gMCAmJiBlbmQgPT0gbG9jYWxfcHJvbXB0X2xlbiAmJiBtZW1jbXAgKHN0ciwg bG9jYWxfcHJvbXB0LCBsb2NhbF9wcm9tcHRfbGVuKSA9PSAwKQorKyAgICByZXR1cm4gKHByb21w dF9waHlzaWNhbF9jaGFycyArIHdyYXBfb2Zmc2V0KTsKKysgIC8qIDIuICBwcm9tcHQgc3RyaW5n ICsgbGluZSBjb250ZW50cyAqLworKyAgZWxzZSBpZiAoZmxhZ3MgJiYgc3RhcnQgPT0gMCAmJiBs b2NhbF9wcm9tcHRfbGVuID4gMCAmJiBlbmQgPiBsb2NhbF9wcm9tcHRfbGVuICYmIGxvY2FsX3By b21wdCAmJiBtZW1jbXAgKHN0ciwgbG9jYWxfcHJvbXB0LCBsb2NhbF9wcm9tcHRfbGVuKSA9PSAw KQorKyAgICB7CisrICAgICAgdG1wID0gcHJvbXB0X3BoeXNpY2FsX2NoYXJzICsgd3JhcF9vZmZz ZXQ7CisrICAgICAgLyogWFhYIC0gdHJ5IHRvIGNhbGwgb3Vyc2VsdmVzIHJlY3Vyc2l2ZWx5IHdp dGggbm9uLXByb21wdCBwb3J0aW9uICovCisrICAgICAgdG1wICs9IF9ybF9jb2xfd2lkdGggKHN0 ciwgbG9jYWxfcHJvbXB0X2xlbiwgZW5kLCBmbGFncyk7CisrICAgICAgcmV0dXJuICh0bXApOwor KyAgICB9CisrCisgICB3aGlsZSAocG9pbnQgPCBzdGFydCkKKyAgICAgeworICAgICAgIHRtcCA9 IG1icmxlbiAoc3RyICsgcG9pbnQsIG1heCwgJnBzKTsKKy0tLSBhL3JlYWRsaW5lL2RvYy9DaGFu Z2VMb2cuZ2RiCisrKysgYi9yZWFkbGluZS9kb2MvQ2hhbmdlTG9nLmdkYgorQEAgLTEsMyArMSw3 IEBACisrMjAxMS0wNC0yNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgorKworKwlJbXBvcnRlZCByZWFkbGluZSA2LjIsIGFuZCB1cHN0cmVhbSBwYXRjaCAwMDEu CisrCisgMjAwNi0wNC0yNCAgRGFuaWVsIEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNv bT4KKyAKKyAJSW1wb3J0ZWQgcmVhZGxpbmUgNS4xLCBhbmQgdXBzdHJlYW0gcGF0Y2hlcyAwMDEt MDA0LgorLS0tIGEvcmVhZGxpbmUvZG9jL01ha2VmaWxlLmluCisrKysgYi9yZWFkbGluZS9kb2Mv TWFrZWZpbGUuaW4KK0BAIC0xLDI1ICsxLDI0IEBACisgIyBUaGlzIG1ha2VmaWxlIGZvciBSZWFk bGluZSBsaWJyYXJ5IGRvY3VtZW50YXRpb24gaXMgaW4gLSotIHRleHQgLSotIG1vZGUuCisgIyBF bWFjcyBsaWtlcyBpdCB0aGF0IHdheS4KKyAKKy0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDA0IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDkg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKy0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0jIGFueSBsYXRlciB2ZXJzaW9uLgorKyMgICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorKyMgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrIyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSMgRm91bmRh dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEg VVNBLgorKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAKKyB0b3BkaXIgPSBAdG9w X3NyY2RpckAKKyBzcmNkaXIgPSBAc3JjZGlyQAorLVZQQVRIID0gLjpAc3JjZGlyQAorK1ZQQVRI ID0gQHNyY2RpckAKKyAKKyBwcmVmaXggPSBAcHJlZml4QAorIAorQEAgLTY0LDkgKzYzLDkgQEAg UFNQREYgICAgICAgPSBncyAtc1BBUEVSU0laRT0ke1BBUEVSU0laRX0gLXNERVZJQ0U9cGRmd3Jp dGUgLWROT1BBVVNFIC1kQkFUQ0ggLXMKKyAKKyBSTFNSQyA9ICQoc3JjZGlyKS9ybG1hbi50ZXhp ICQoc3JjZGlyKS9ybHVzZXIudGV4aSBcCisgCSQoc3JjZGlyKS9ybHRlY2gudGV4aSAkKHNyY2Rp cikvdmVyc2lvbi50ZXhpIFwKKy0JJChzcmNkaXIpL3JsdXNlcm1hbi50ZXhpCisrCSQoc3JjZGly KS9ybHVzZXJtYW4udGV4aSAkKHNyY2RpcikvZmRsLnRleGkKKyBISVNUU1JDID0gJChzcmNkaXIp L2hpc3RvcnkudGV4aSAkKHNyY2RpcikvaHN1c2VyLnRleGkgXAorLQkgICQoc3JjZGlyKS9oc3Rl Y2gudGV4aSAkKHNyY2RpcikvdmVyc2lvbi50ZXhpCisrCSAgJChzcmNkaXIpL2hzdGVjaC50ZXhp ICQoc3JjZGlyKS92ZXJzaW9uLnRleGkgJChzcmNkaXIpL2ZkbC50ZXhpCisgCisgIyBUaGlzIHNo b3VsZCBiZSBhIHByb2dyYW0gdGhhdCBjb252ZXJ0cyB0cm9mZiB0byBhbiBhc2NpaS1yZWFkYWJs ZSBmb3JtYXQKKyBOUk9GRiAgICAgICA9IGdyb2ZmIC1UYXNjaWkKK0BAIC04Myw3ICs4Miw3IEBA IFBERk9CSiA9IHJlYWRsaW5lLnBkZiBoaXN0b3J5LnBkZiBybHVzZXJtYW4ucGRmCisgCisgSU5U RVJNRURJQVRFX09CSiA9IHJsbWFuLmR2aQorIAorLURJU1RfRE9DUyA9ICQoRFZJT0JKKSAkKFBT T0JKKSAkKEhUTUxPQkopICQoSU5GT09CSikgJChURVhUT0JKKQorK0RJU1RfRE9DUyA9ICQoRFZJ T0JKKSAkKFBTT0JKKSAkKEhUTUxPQkopICQoSU5GT09CSikgJChURVhUT0JKKSAkKFBERk9CSikK KyAKKyAuU1VGRklYRVM6ICAgICAgLjAgLjMgLnBzIC50eHQgLmR2aSAuaHRtbCAucGRmCisgCitA QCAtOTksOSArOTgsMTEgQEAgRElTVF9ET0NTID0gJChEVklPQkopICQoUFNPQkopICQoSFRNTE9C SikgJChJTkZPT0JKKSAkKFRFWFRPQkopCisgCSQoUk0pICRACisgCS0ke0RWSVBERn0gJDwKKyAK Ky1hbGw6IGluZm8gZHZpIGh0bWwgcHMgdGV4dAorK2FsbDogaW5mbyBkdmkgaHRtbCBwcyB0ZXh0 IHBkZgorIG5vZHZpOiBpbmZvIGh0bWwgdGV4dAorIAorK3hkaXN0OiAkKERJU1RfRE9DUykKKysK KyBpbmZvOgkkKElORk9PQkopCisgZHZpOgkkKERWSU9CSikKKyBwczoJJChQU09CSikKK0BAIC0x NTYsMTMgKzE1NywxMyBAQCBoaXN0b3J5Lmh0bWw6CSR7SElTVFNSQ30KKyAKKyByZWFkbGluZS4w OiByZWFkbGluZS4zCisgCistcmVhZGxpbmVfMy5wczogcmVhZGxpbmUuMworK3JlYWRsaW5lXzMu cHM6ICQoc3JjZGlyKS9yZWFkbGluZS4zCisgCSR7Uk19ICRACisgCSR7R1JPRkZ9IC1tYW4gPCAk KHNyY2RpcikvcmVhZGxpbmUuMyA+ICRAIAorIAorIGhpc3RvcnkuMDogaGlzdG9yeS4zCisgCist aGlzdG9yeV8zLnBzOiBoaXN0b3J5LjMKKytoaXN0b3J5XzMucHM6ICQoc3JjZGlyKS9oaXN0b3J5 LjMKKyAJJHtSTX0gJEAKKyAJJHtHUk9GRn0gLW1hbiA8ICQoc3JjZGlyKS9oaXN0b3J5LjMgPiAk QCAKKyAKK0BAIC0xODIsNyArMTgzLDcgQEAgZGlzdGNsZWFuOiBjbGVhbiBtYXliZS1jbGVhbgor IAkkKFJNKSBNYWtlZmlsZQorIAorIG1heWJlLWNsZWFuOgorLQktaWYgdGVzdCAiWCQodG9wZGly KSIgIT0gIlgkKEJVSUxEX0RJUikiOyB0aGVuIFwKKysJLWlmIHRlc3QgIlgkKHRvcGRpcikiICE9 ICJYLi4iICYmIHRlc3QgIlgkKHRvcGRpcikiICE9ICJYJChCVUlMRF9ESVIpIjsgdGhlbiBcCisg CQkkKFJNKSAkKERJU1RfRE9DUyk7IFwKKyAJZmkKKyAKKy0tLSBhL3JlYWRsaW5lL2RvYy9mZGwu dGV4aQorKysrIGIvcmVhZGxpbmUvZG9jL2ZkbC50ZXhpCitAQCAtMSwxMyArMSwxMiBAQAorK0Bj IFRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UuCisrQGNlbnRlciBWZXJzaW9uIDEu MywgMyBOb3ZlbWJlciAyMDA4CisgCistQG5vZGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNl bnNlCistQGFwcGVuZGl4c2VjIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZQorLQorLUBj aW5kZXggRkRMLCBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UKKy1AY2VudGVyIFZlcnNp b24gMS4yLCBOb3ZlbWJlciAyMDAyCisrQGMgVGhpcyBmaWxlIGlzIGludGVuZGVkIHRvIGJlIGlu Y2x1ZGVkIHdpdGhpbiBhbm90aGVyIGRvY3VtZW50LAorK0BjIGhlbmNlIG5vIHNlY3Rpb25pbmcg Y29tbWFuZCBvciBAbm9kZS4KKyAKKyBAZGlzcGxheQorLUNvcHlyaWdodCBAY29weXJpZ2h0e30g MjAwMCwyMDAxLDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistNTkgVGVtcGxl IFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcsIFVTQQorK0NvcHlyaWdo dCBAY29weXJpZ2h0e30gMjAwMCwgMjAwMSwgMjAwMiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKytAdXJlZntodHRwOi8vZnNmLm9yZy99CisgCisgRXZlcnlvbmUg aXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgb2Yg dGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCitA QCAtMTEyLDYgKzExMSw5IEBAIGZvcm1hdHMgd2hpY2ggZG8gbm90IGhhdmUgYW55IHRpdGxlIHBh Z2UgYXMgc3VjaCwgYGBUaXRsZSBQYWdlJycgbWVhbnMKKyB0aGUgdGV4dCBuZWFyIHRoZSBtb3N0 IHByb21pbmVudCBhcHBlYXJhbmNlIG9mIHRoZSB3b3JrJ3MgdGl0bGUsCisgcHJlY2VkaW5nIHRo ZSBiZWdpbm5pbmcgb2YgdGhlIGJvZHkgb2YgdGhlIHRleHQuCisgCisrVGhlIGBgcHVibGlzaGVy JycgbWVhbnMgYW55IHBlcnNvbiBvciBlbnRpdHkgdGhhdCBkaXN0cmlidXRlcyBjb3BpZXMKKytv ZiB0aGUgRG9jdW1lbnQgdG8gdGhlIHB1YmxpYy4KKysKKyBBIHNlY3Rpb24gYGBFbnRpdGxlZCBY WVonJyBtZWFucyBhIG5hbWVkIHN1YnVuaXQgb2YgdGhlIERvY3VtZW50IHdob3NlCisgdGl0bGUg ZWl0aGVyIGlzIHByZWNpc2VseSBYWVogb3IgY29udGFpbnMgWFlaIGluIHBhcmVudGhlc2VzIGZv bGxvd2luZworIHRleHQgdGhhdCB0cmFuc2xhdGVzIFhZWiBpbiBhbm90aGVyIGxhbmd1YWdlLiAg KEhlcmUgWFlaIHN0YW5kcyBmb3IgYQorQEAgLTM0NCw3ICszNDYsNyBAQCBhbmQgaW5kZXBlbmRl bnQgZG9jdW1lbnRzIG9yIHdvcmtzLCBpbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IK KyBkaXN0cmlidXRpb24gbWVkaXVtLCBpcyBjYWxsZWQgYW4gYGBhZ2dyZWdhdGUnJyBpZiB0aGUg Y29weXJpZ2h0CisgcmVzdWx0aW5nIGZyb20gdGhlIGNvbXBpbGF0aW9uIGlzIG5vdCB1c2VkIHRv IGxpbWl0IHRoZSBsZWdhbCByaWdodHMKKyBvZiB0aGUgY29tcGlsYXRpb24ncyB1c2VycyBiZXlv bmQgd2hhdCB0aGUgaW5kaXZpZHVhbCB3b3JrcyBwZXJtaXQuCistV2hlbiB0aGUgRG9jdW1lbnQg aXMgaW5jbHVkZWQgYW4gYWdncmVnYXRlLCB0aGlzIExpY2Vuc2UgZG9lcyBub3QKKytXaGVuIHRo ZSBEb2N1bWVudCBpcyBpbmNsdWRlZCBpbiBhbiBhZ2dyZWdhdGUsIHRoaXMgTGljZW5zZSBkb2Vz IG5vdAorIGFwcGx5IHRvIHRoZSBvdGhlciB3b3JrcyBpbiB0aGUgYWdncmVnYXRlIHdoaWNoIGFy ZSBub3QgdGhlbXNlbHZlcworIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIERvY3VtZW50LgorIAor QEAgLTM4MCwxMyArMzgyLDMwIEBAIHRpdGxlLgorIEBpdGVtCisgVEVSTUlOQVRJT04KKyAKKy1Z b3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIERv Y3VtZW50IGV4Y2VwdAorLWFzIGV4cHJlc3NseSBwcm92aWRlZCBmb3IgdW5kZXIgdGhpcyBMaWNl bnNlLiAgQW55IG90aGVyIGF0dGVtcHQgdG8KKy1jb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2Ugb3Ig ZGlzdHJpYnV0ZSB0aGUgRG9jdW1lbnQgaXMgdm9pZCwgYW5kIHdpbGwKKy1hdXRvbWF0aWNhbGx5 IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuICBIb3dldmVyLAorLXBh cnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLCBvciByaWdodHMsIGZyb20geW91IHVuZGVy IHRoaXMKKy1MaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBz byBsb25nIGFzIHN1Y2gKKy1wYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCisrWW91 IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSBEb2N1 bWVudAorK2V4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAg QW55IGF0dGVtcHQKKytvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBk aXN0cmlidXRlIGl0IGlzIHZvaWQsIGFuZAorK3dpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUg eW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgorKworK0hvd2V2ZXIsIGlmIHlvdSBjZWFz ZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyIGxpY2Vuc2UKKytmcm9t IGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzIHJlaW5zdGF0ZWQgKGEpIHByb3Zpc2lv bmFsbHksCisrdW5sZXNzIGFuZCB1bnRpbCB0aGUgY29weXJpZ2h0IGhvbGRlciBleHBsaWNpdGx5 IGFuZCBmaW5hbGx5CisrdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50 bHksIGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyCisrZmFpbHMgdG8gbm90aWZ5IHlvdSBvZiB0aGUg dmlvbGF0aW9uIGJ5IHNvbWUgcmVhc29uYWJsZSBtZWFucyBwcmlvciB0bworKzYwIGRheXMgYWZ0 ZXIgdGhlIGNlc3NhdGlvbi4KKysKKytNb3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0 aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMKKytyZWluc3RhdGVkIHBlcm1hbmVudGx5IGlmIHRo ZSBjb3B5cmlnaHQgaG9sZGVyIG5vdGlmaWVzIHlvdSBvZiB0aGUKKyt2aW9sYXRpb24gYnkgc29t ZSByZWFzb25hYmxlIG1lYW5zLCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHlvdSBoYXZlCisrcmVj ZWl2ZWQgbm90aWNlIG9mIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykg ZnJvbSB0aGF0CisrY29weXJpZ2h0IGhvbGRlciwgYW5kIHlvdSBjdXJlIHRoZSB2aW9sYXRpb24g cHJpb3IgdG8gMzAgZGF5cyBhZnRlcgorK3lvdXIgcmVjZWlwdCBvZiB0aGUgbm90aWNlLgorKwor K1Rlcm1pbmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCB0 ZXJtaW5hdGUgdGhlCisrbGljZW5zZXMgb2YgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3Bp ZXMgb3IgcmlnaHRzIGZyb20geW91IHVuZGVyCisrdGhpcyBMaWNlbnNlLiAgSWYgeW91ciByaWdo dHMgaGF2ZSBiZWVuIHRlcm1pbmF0ZWQgYW5kIG5vdCBwZXJtYW5lbnRseQorK3JlaW5zdGF0ZWQs IHJlY2VpcHQgb2YgYSBjb3B5IG9mIHNvbWUgb3IgYWxsIG9mIHRoZSBzYW1lIG1hdGVyaWFsIGRv ZXMKKytub3QgZ2l2ZSB5b3UgYW55IHJpZ2h0cyB0byB1c2UgaXQuCisgCisgQGl0ZW0KKyBGVVRV UkUgUkVWSVNJT05TIE9GIFRISVMgTElDRU5TRQorQEAgLTQwNCwxMSArNDIzLDQ2IEBAIGZvbGxv d2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgc3BlY2lmaWVkIHZl cnNpb24gb3IKKyBvZiBhbnkgbGF0ZXIgdmVyc2lvbiB0aGF0IGhhcyBiZWVuIHB1Ymxpc2hlZCAo bm90IGFzIGEgZHJhZnQpIGJ5IHRoZQorIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRo ZSBEb2N1bWVudCBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbgorIG51bWJlciBvZiB0aGlzIExp Y2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIChub3QKKy1h cyBhIGRyYWZ0KSBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorK2FzIGEgZHJhZnQp IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgRG9jdW1lbnQKKytzcGVj aWZpZXMgdGhhdCBhIHByb3h5IGNhbiBkZWNpZGUgd2hpY2ggZnV0dXJlIHZlcnNpb25zIG9mIHRo aXMKKytMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MgcHVibGljIHN0YXRlbWVudCBv ZiBhY2NlcHRhbmNlIG9mIGEKKyt2ZXJzaW9uIHBlcm1hbmVudGx5IGF1dGhvcml6ZXMgeW91IHRv IGNob29zZSB0aGF0IHZlcnNpb24gZm9yIHRoZQorK0RvY3VtZW50LgorKworK0BpdGVtCisrUkVM SUNFTlNJTkcKKysKKytgYE1hc3NpdmUgTXVsdGlhdXRob3IgQ29sbGFib3JhdGlvbiBTaXRlJycg KG9yIGBgTU1DIFNpdGUnJykgbWVhbnMgYW55CisrV29ybGQgV2lkZSBXZWIgc2VydmVyIHRoYXQg cHVibGlzaGVzIGNvcHlyaWdodGFibGUgd29ya3MgYW5kIGFsc28KKytwcm92aWRlcyBwcm9taW5l bnQgZmFjaWxpdGllcyBmb3IgYW55Ym9keSB0byBlZGl0IHRob3NlIHdvcmtzLiAgQQorK3B1Ymxp YyB3aWtpIHRoYXQgYW55Ym9keSBjYW4gZWRpdCBpcyBhbiBleGFtcGxlIG9mIHN1Y2ggYSBzZXJ2 ZXIuICBBCisrYGBNYXNzaXZlIE11bHRpYXV0aG9yIENvbGxhYm9yYXRpb24nJyAob3IgYGBNTUMn JykgY29udGFpbmVkIGluIHRoZQorK3NpdGUgbWVhbnMgYW55IHNldCBvZiBjb3B5cmlnaHRhYmxl IHdvcmtzIHRodXMgcHVibGlzaGVkIG9uIHRoZSBNTUMKKytzaXRlLgorKworK2BgQ0MtQlktU0En JyBtZWFucyB0aGUgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZSBBbGlrZSAzLjAK KytsaWNlbnNlIHB1Ymxpc2hlZCBieSBDcmVhdGl2ZSBDb21tb25zIENvcnBvcmF0aW9uLCBhIG5v dC1mb3ItcHJvZml0CisrY29ycG9yYXRpb24gd2l0aCBhIHByaW5jaXBhbCBwbGFjZSBvZiBidXNp bmVzcyBpbiBTYW4gRnJhbmNpc2NvLAorK0NhbGlmb3JuaWEsIGFzIHdlbGwgYXMgZnV0dXJlIGNv cHlsZWZ0IHZlcnNpb25zIG9mIHRoYXQgbGljZW5zZQorK3B1Ymxpc2hlZCBieSB0aGF0IHNhbWUg b3JnYW5pemF0aW9uLgorKworK2BgSW5jb3Jwb3JhdGUnJyBtZWFucyB0byBwdWJsaXNoIG9yIHJl cHVibGlzaCBhIERvY3VtZW50LCBpbiB3aG9sZSBvcgorK2luIHBhcnQsIGFzIHBhcnQgb2YgYW5v dGhlciBEb2N1bWVudC4KKysKKytBbiBNTUMgaXMgYGBlbGlnaWJsZSBmb3IgcmVsaWNlbnNpbmcn JyBpZiBpdCBpcyBsaWNlbnNlZCB1bmRlciB0aGlzCisrTGljZW5zZSwgYW5kIGlmIGFsbCB3b3Jr cyB0aGF0IHdlcmUgZmlyc3QgcHVibGlzaGVkIHVuZGVyIHRoaXMgTGljZW5zZQorK3NvbWV3aGVy ZSBvdGhlciB0aGFuIHRoaXMgTU1DLCBhbmQgc3Vic2VxdWVudGx5IGluY29ycG9yYXRlZCBpbiB3 aG9sZQorK29yIGluIHBhcnQgaW50byB0aGUgTU1DLCAoMSkgaGFkIG5vIGNvdmVyIHRleHRzIG9y IGludmFyaWFudCBzZWN0aW9ucywKKythbmQgKDIpIHdlcmUgdGh1cyBpbmNvcnBvcmF0ZWQgcHJp b3IgdG8gTm92ZW1iZXIgMSwgMjAwOC4KKysKKytUaGUgb3BlcmF0b3Igb2YgYW4gTU1DIFNpdGUg bWF5IHJlcHVibGlzaCBhbiBNTUMgY29udGFpbmVkIGluIHRoZSBzaXRlCisrdW5kZXIgQ0MtQlkt U0Egb24gdGhlIHNhbWUgc2l0ZSBhdCBhbnkgdGltZSBiZWZvcmUgQXVndXN0IDEsIDIwMDksCisr cHJvdmlkZWQgdGhlIE1NQyBpcyBlbGlnaWJsZSBmb3IgcmVsaWNlbnNpbmcuCisrCisgQGVuZCBl bnVtZXJhdGUKKyAKKyBAcGFnZQorLUBhcHBlbmRpeHN1YnNlYyBBRERFTkRVTTogSG93IHRvIHVz ZSB0aGlzIExpY2Vuc2UgZm9yIHlvdXIgZG9jdW1lbnRzCisrQGhlYWRpbmcgQURERU5EVU06IEhv dyB0byB1c2UgdGhpcyBMaWNlbnNlIGZvciB5b3VyIGRvY3VtZW50cworIAorIFRvIHVzZSB0aGlz IExpY2Vuc2UgaW4gYSBkb2N1bWVudCB5b3UgaGF2ZSB3cml0dGVuLCBpbmNsdWRlIGEgY29weSBv ZgorIHRoZSBMaWNlbnNlIGluIHRoZSBkb2N1bWVudCBhbmQgcHV0IHRoZSBmb2xsb3dpbmcgY29w eXJpZ2h0IGFuZAorQEAgLTQxOCwxNiArNDcyLDE2IEBAIGxpY2Vuc2Ugbm90aWNlcyBqdXN0IGFm dGVyIHRoZSB0aXRsZSBwYWdlOgorIEBncm91cAorICAgQ29weXJpZ2h0IChDKSAgQHZhcnt5ZWFy fSAgQHZhcnt5b3VyIG5hbWV9LgorICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRp c3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50CistICB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjIKKysgIHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLCBWZXJz aW9uIDEuMworICAgb3IgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247CistICB3aXRoIG5vIEludmFyaWFudCBTZWN0aW9ucywgbm8gRnJv bnQtQ292ZXIgVGV4dHMsIGFuZCBubyBCYWNrLUNvdmVyIFRleHRzLgorLSAgQSBjb3B5IG9mIHRo ZSBsaWNlbnNlIGlzIGluY2x1ZGVkIGluIHRoZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VCisrICB3 aXRoIG5vIEludmFyaWFudCBTZWN0aW9ucywgbm8gRnJvbnQtQ292ZXIgVGV4dHMsIGFuZCBubyBC YWNrLUNvdmVyCisrICBUZXh0cy4gIEEgY29weSBvZiB0aGUgbGljZW5zZSBpcyBpbmNsdWRlZCBp biB0aGUgc2VjdGlvbiBlbnRpdGxlZCBgYEdOVQorICAgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vu c2UnJy4KKyBAZW5kIGdyb3VwCisgQGVuZCBzbWFsbGV4YW1wbGUKKyAKKyBJZiB5b3UgaGF2ZSBJ bnZhcmlhbnQgU2VjdGlvbnMsIEZyb250LUNvdmVyIFRleHRzIGFuZCBCYWNrLUNvdmVyIFRleHRz LAorLXJlcGxhY2UgdGhlIGBgd2l0aC4uLlRleHRzLicnIGxpbmUgd2l0aCB0aGlzOgorK3JlcGxh Y2UgdGhlIGBgd2l0aEBkb3Rze31UZXh0cy4nJyBsaW5lIHdpdGggdGhpczoKKyAKKyBAc21hbGxl eGFtcGxlCisgQGdyb3VwCistLS0gYS9yZWFkbGluZS9kb2MvaGlzdG9yeS4zCisrKysgYi9yZWFk bGluZS9kb2MvaGlzdG9yeS4zCitAQCAtNiw5ICs2LDkgQEAKKyAuXCIJQ2FzZSBXZXN0ZXJuIFJl c2VydmUgVW5pdmVyc2l0eQorIC5cIgljaGV0QGlucy5DV1JVLkVkdQorIC5cIgorLS5cIglMYXN0 IENoYW5nZTogVGh1IEp1bCAzMSAwODo0NjowOCBFRFQgMjAwMworKy5cIglMYXN0IENoYW5nZTog VGh1IEF1ZyAxMiAyMjoyNDo0MSBFRFQgMjAxMAorIC5cIgorLS5USCBISVNUT1JZIDMgIjIwMDMg SnVseSAzMSIgIkdOVSBIaXN0b3J5IDUuMCIKKysuVEggSElTVE9SWSAzICIyMDEwIEF1Z3VzdCAx MiIgIkdOVSBIaXN0b3J5IDYuMiIKKyAuXCIKKyAuXCIgRmlsZSBOYW1lIG1hY3JvLiAgVGhpcyB1 c2VkIHRvIGJlIGAuUE4nLCBmb3IgUGF0aCBOYW1lLAorIC5cIiBidXQgU3VuIGRvZXNuJ3Qgc2Vl bSB0byBsaWtlIHRoYXQgdmVyeSBtdWNoLgorQEAgLTQwLDggKzQwLDggQEAKKyAuU0ggTkFNRQor IGhpc3RvcnkgXC0gR05VIEhpc3RvcnkgTGlicmFyeQorIC5TSCBDT1BZUklHSFQKKy0uaWYgdCBU aGUgR05VIEhpc3RvcnkgTGlicmFyeSBpcyBDb3B5cmlnaHQgXChjbyAxOTg5LTIwMDIgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLS5pZiBuIFRoZSBHTlUgSGlzdG9yeSBM aWJyYXJ5IGlzIENvcHlyaWdodCAoQykgMTk4OS0yMDAyIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysuaWYgdCBUaGUgR05VIEhpc3RvcnkgTGlicmFyeSBpcyBDb3B5cmln aHQgXChjbyAxOTg5LTIwMTEgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor Ky5pZiBuIFRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5IGlzIENvcHlyaWdodCAoQykgMTk4OS0yMDEx IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAuU0ggREVTQ1JJUFRJT04K KyBNYW55IHByb2dyYW1zIHJlYWQgaW5wdXQgZnJvbSB0aGUgdXNlciBhIGxpbmUgYXQgYSB0aW1l LiAgVGhlIEdOVQorIEhpc3RvcnkgbGlicmFyeSBpcyBhYmxlIHRvIGtlZXAgdHJhY2sgb2YgdGhv c2UgbGluZXMsIGFzc29jaWF0ZSBhcmJpdHJhcnkKK0BAIC04Myw2ICs4Myw4IEBAIHRoZSBoaXN0 b3J5IGV4cGFuc2lvbiBjaGFyYWN0ZXIuCisgLlBQCisgQW4gZXZlbnQgZGVzaWduYXRvciBpcyBh IHJlZmVyZW5jZSB0byBhIGNvbW1hbmQgbGluZSBlbnRyeSBpbiB0aGUKKyBoaXN0b3J5IGxpc3Qu CisrVW5sZXNzIHRoZSByZWZlcmVuY2UgaXMgYWJzb2x1dGUsIGV2ZW50cyBhcmUgcmVsYXRpdmUg dG8gdGhlIGN1cnJlbnQKKytwb3NpdGlvbiBpbiB0aGUgaGlzdG9yeSBsaXN0LgorIC5QUAorIC5Q RCAwCisgLlRQCitAQCAtOTYsMTggKzk4LDIyIEBAIFJlZmVyIHRvIGNvbW1hbmQgbGluZQorIC5J UiBuIC4KKyAuVFAKKyAuQiAhXC1cZkluXGZSCistUmVmZXIgdG8gdGhlIGN1cnJlbnQgY29tbWFu ZCBsaW5lIG1pbnVzCisrUmVmZXIgdG8gdGhlIGN1cnJlbnQgY29tbWFuZCBtaW51cworIC5JUiBu IC4KKyAuVFAKKyAuQiAhIQorIFJlZmVyIHRvIHRoZSBwcmV2aW91cyBjb21tYW5kLiAgVGhpcyBp cyBhIHN5bm9ueW0gZm9yIGAhXC0xJy4KKyAuVFAKKyAuQiAhXGZJc3RyaW5nXGZSCistUmVmZXIg dG8gdGhlIG1vc3QgcmVjZW50IGNvbW1hbmQgc3RhcnRpbmcgd2l0aCAKKytSZWZlciB0byB0aGUg bW9zdCByZWNlbnQgY29tbWFuZAorK3ByZWNlZGluZyB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0 aGUgaGlzdG9yeSBsaXN0Cisrc3RhcnRpbmcgd2l0aAorIC5JUiBzdHJpbmcgLgorIC5UUAorIC5C ICE/XGZJc3RyaW5nXGZSXGZCWz9dXGZSCistUmVmZXIgdG8gdGhlIG1vc3QgcmVjZW50IGNvbW1h bmQgY29udGFpbmluZworK1JlZmVyIHRvIHRoZSBtb3N0IHJlY2VudCBjb21tYW5kCisrcHJlY2Vk aW5nIHRoZSBjdXJyZW50IHBvc3RpdGlvbiBpbiB0aGUgaGlzdG9yeSBsaXN0CisrY29udGFpbmlu ZworIC5JUiBzdHJpbmcgLgorIFRoZSB0cmFpbGluZyBcZkI/XGZQIG1heSBiZSBvbWl0dGVkIGlm CisgLkkgc3RyaW5nCitAQCAtNTY5LDEwICs1NzUsMTMgQEAgVGhlIG51bWJlciBvZiBlbnRyaWVz IGN1cnJlbnRseSBzdG9yZWQgaW4gdGhlIGhpc3RvcnkgbGlzdC4KKyBUaGUgbWF4aW11bSBudW1i ZXIgb2YgaGlzdG9yeSBlbnRyaWVzLiAgVGhpcyBtdXN0IGJlIGNoYW5nZWQgdXNpbmcKKyBcZkJz dGlmbGVfaGlzdG9yeSgpXGZQLgorIAorLS5WYiBpbnQgaGlzdG9yeV93cml0ZV90aW1lc3RhbXBz CisrLlZiIGludCBoaXN0b3J5X3dpdGVfdGltZXN0YW1wcworIElmIG5vbi16ZXJvLCB0aW1lc3Rh bXBzIGFyZSB3cml0dGVuIHRvIHRoZSBoaXN0b3J5IGZpbGUsIHNvIHRoZXkgY2FuIGJlCisgcHJl c2VydmVkIGJldHdlZW4gc2Vzc2lvbnMuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLCBtZWFuaW5n IHRoYXQKKyB0aW1lc3RhbXBzIGFyZSBub3Qgc2F2ZWQuCisrVGhlIGN1cnJlbnQgdGltZXN0YW1w IGZvcm1hdCB1c2VzIHRoZSB2YWx1ZSBvZiBcZkloaXN0b3J5X2NvbW1lbnRfY2hhclxmUAorK3Rv IGRlbGltaXQgdGltZXN0YW1wIGVudHJpZXMgaW4gdGhlIGhpc3RvcnkgZmlsZS4gIElmIHRoYXQg dmFyaWFibGUgZG9lcworK25vdCBoYXZlIGEgdmFsdWUgKHRoZSBkZWZhdWx0KSwgdGltZXN0YW1w cyB3aWxsIG5vdCBiZSB3cml0dGVuLgorIAorIC5WYiBjaGFyIGhpc3RvcnlfZXhwYW5zaW9uX2No YXIKKyBUaGUgY2hhcmFjdGVyIHRoYXQgaW50cm9kdWNlcyBhIGhpc3RvcnkgZXZlbnQuICBUaGUg ZGVmYXVsdCBpcyBcZkIhXGZQLgorLS0tIGEvcmVhZGxpbmUvZG9jL2hpc3RvcnkudGV4aQorKysr IGIvcmVhZGxpbmUvZG9jL2hpc3RvcnkudGV4aQorQEAgLTQsOCArNCw2IEBACisgQHNldHRpdGxl IEdOVSBIaXN0b3J5IExpYnJhcnkKKyBAYyAlKiplbmQgb2YgaGVhZGVyIChUaGlzIGlzIGZvciBy dW5uaW5nIFRleGluZm8gb24gYSByZWdpb24uKQorIAorLUBzZXRjaGFwdGVybmV3cGFnZSBvZGQK Ky0KKyBAaW5jbHVkZSB2ZXJzaW9uLnRleGkKKyAKKyBAY29weWluZworQEAgLTE0LDcgKzEyLDcg QEAgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIEdOVSBIaXN0b3J5IGxpYnJhcnkKKyBhIHBy b2dyYW1taW5nIHRvb2wgdGhhdCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgdXNlciBpbnRlcmZhY2Ug Zm9yCisgcmVjYWxsaW5nIGxpbmVzIG9mIHByZXZpb3VzbHkgdHlwZWQgaW5wdXQuCisgCistQ29w eXJpZ2h0IEBjb3B5cmlnaHR7fSAxOTg4LTIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrQ29weXJpZ2h0IEBjb3B5cmlnaHR7fSAxOTg4LS0yMDExIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorIAorIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBtYWtlIGFuZCBkaXN0 cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZgorIHRoaXMgbWFudWFsIHByb3ZpZGVkIHRoZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlCitAQCAtMjIsMTUgKzIwLDE2 IEBAIGFyZSBwcmVzZXJ2ZWQgb24gYWxsIGNvcGllcy4KKyAKKyBAcXVvdGF0aW9uCisgUGVybWlz c2lvbiBpcyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRv Y3VtZW50CistdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExp Y2Vuc2UsIFZlcnNpb24gMS4xIG9yCisrdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBE b2N1bWVudGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4zIG9yCisgYW55IGxhdGVyIHZlcnNpb24g cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHdpdGggbm8KKy1JbnZh cmlhbnQgU2VjdGlvbnMsIHdpdGggdGhlIEZyb250LUNvdmVyIHRleHRzIGJlaW5nIGBgQSBHTlUg TWFudWFsLCcnCisrSW52YXJpYW50IFNlY3Rpb25zLCB3aXRoIHRoZSBGcm9udC1Db3ZlciB0ZXh0 cyBiZWluZyBgYEEgR05VIE1hbnVhbCcnLAorIGFuZCB3aXRoIHRoZSBCYWNrLUNvdmVyIFRleHRz IGFzIGluIChhKSBiZWxvdy4gIEEgY29weSBvZiB0aGUgbGljZW5zZSBpcworLWluY2x1ZGVkIGlu IHRoZSBzZWN0aW9uIGVudGl0bGVkIGBgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLicn CisraW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZSBEb2N1bWVudGF0 aW9uIExpY2Vuc2UnJy4KKysKKysoYSkgVGhlIEZTRidzIEJhY2stQ292ZXIgVGV4dCBpczogWW91 IGFyZSBmcmVlIHRvIGNvcHkgYW5kIG1vZGlmeQorK3RoaXMgR05VIG1hbnVhbC4gIEJ1eWluZyBj b3BpZXMgZnJvbSBHTlUgUHJlc3Mgc3VwcG9ydHMgdGhlIEZTRiBpbgorK2RldmVsb3BpbmcgR05V IGFuZCBwcm9tb3Rpbmcgc29mdHdhcmUgZnJlZWRvbS4nJworIAorLShhKSBUaGUgRlNGJ3MgQmFj ay1Db3ZlciBUZXh0IGlzOiBgYFlvdSBoYXZlIGZyZWVkb20gdG8gY29weSBhbmQgbW9kaWZ5Cist dGhpcyBHTlUgTWFudWFsLCBsaWtlIEdOVSBzb2Z0d2FyZS4gIENvcGllcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUKKy1Tb2Z0d2FyZSBGb3VuZGF0aW9uIHJhaXNlIGZ1bmRzIGZvciBHTlUgZGV2ZWxv cG1lbnQuJycKKyBAZW5kIHF1b3RhdGlvbgorIEBlbmQgY29weWluZworIAorQEAgLTcyLDcgKzcx LDcgQEAgdHlwZWQgaW5wdXQuCisgQG1lbnUKKyAqIFVzaW5nIEhpc3RvcnkgSW50ZXJhY3RpdmVs eTo6CSAgR05VIEhpc3RvcnkgVXNlcidzIE1hbnVhbC4KKyAqIFByb2dyYW1taW5nIHdpdGggR05V IEhpc3Rvcnk6OiAgR05VIEhpc3RvcnkgUHJvZ3JhbW1lcidzIE1hbnVhbC4KKy0qIENvcHlpbmcg VGhpcyBNYW51YWw6OgkJICBDb3B5aW5nIFRoaXMgTWFudWFsLgorKyogR05VIEZyZWUgRG9jdW1l bnRhdGlvbiBMaWNlbnNlOjoJTGljZW5zZSBmb3IgY29weWluZyB0aGlzIG1hbnVhbC4KKyAqIENv bmNlcHQgSW5kZXg6OgkJICBJbmRleCBvZiBjb25jZXB0cyBkZXNjcmliZWQgaW4gdGhpcyBtYW51 YWwuCisgKiBGdW5jdGlvbiBhbmQgVmFyaWFibGUgSW5kZXg6OgkgIEluZGV4IG9mIGV4dGVybmFs bHkgdmlzaWJsZSBmdW5jdGlvbnMKKyAJCQkJICBhbmQgdmFyaWFibGVzLgorQEAgLTg0LDEyICs4 Myw4IEBAIHR5cGVkIGlucHV0LgorIEBpbmNsdWRlIGhzdXNlci50ZXhpCisgQGluY2x1ZGUgaHN0 ZWNoLnRleGkKKyAKKy1Abm9kZSBDb3B5aW5nIFRoaXMgTWFudWFsCistQGFwcGVuZGl4IENvcHlp bmcgVGhpcyBNYW51YWwKKy0KKy1AbWVudQorLSogR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNl bnNlOjoJTGljZW5zZSBmb3IgY29weWluZyB0aGlzIG1hbnVhbC4KKy1AZW5kIG1lbnUKKytAbm9k ZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UKKytAYXBwZW5kaXggR05VIEZyZWUgRG9j dW1lbnRhdGlvbiBMaWNlbnNlCisgCisgQGluY2x1ZGUgZmRsLnRleGkKKyAKKy0tLSBhL3JlYWRs aW5lL2RvYy9oc3RlY2gudGV4aQorKysrIGIvcmVhZGxpbmUvZG9jL2hzdGVjaC50ZXhpCitAQCAt MSw3ICsxLDcgQEAKKyBAaWdub3JlCisgVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgdXNlciBpbnRl cmZhY2UgdG8gdGhlIEdOVSBIaXN0b3J5IGxpYnJhcnkuCisgCistQ29weXJpZ2h0IChDKSAxOTg4 LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrQ29weXJpZ2h0IChDKSAxOTg4 LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgQXV0aG9yZWQgYnkgQnJpYW4g Rm94IGFuZCBDaGV0IFJhbWV5LgorIAorIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBtYWtlIGFu ZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGlzIG1hbnVhbAorQEAgLTQyNiw2ICs0 MjYsMTAgQEAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGhpc3RvcnkgZW50cmllcy4gIFRoaXMgbXVz dCBiZSBjaGFuZ2VkIHVzaW5nCisgSWYgbm9uLXplcm8sIHRpbWVzdGFtcHMgYXJlIHdyaXR0ZW4g dG8gdGhlIGhpc3RvcnkgZmlsZSwgc28gdGhleSBjYW4gYmUKKyBwcmVzZXJ2ZWQgYmV0d2VlbiBz ZXNzaW9ucy4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDAsIG1lYW5pbmcgdGhhdAorIHRpbWVzdGFt cHMgYXJlIG5vdCBzYXZlZC4KKysKKytUaGUgY3VycmVudCB0aW1lc3RhbXAgZm9ybWF0IHVzZXMg dGhlIHZhbHVlIG9mIEB2YXJ7aGlzdG9yeV9jb21tZW50X2NoYXJ9CisrdG8gZGVsaW1pdCB0aW1l c3RhbXAgZW50cmllcyBpbiB0aGUgaGlzdG9yeSBmaWxlLiAgSWYgdGhhdCB2YXJpYWJsZSBkb2Vz Cisrbm90IGhhdmUgYSB2YWx1ZSAodGhlIGRlZmF1bHQpLCB0aW1lc3RhbXBzIHdpbGwgbm90IGJl IHdyaXR0ZW4uCisgQGVuZCBkZWZ0eXBldmFyCisgCisgQGRlZnR5cGV2YXIgY2hhciBoaXN0b3J5 X2V4cGFuc2lvbl9jaGFyCistLS0gYS9yZWFkbGluZS9kb2MvaHN1c2VyLnRleGkKKysrKyBiL3Jl YWRsaW5lL2RvYy9oc3VzZXIudGV4aQorQEAgLTEsNyArMSw3IEBACisgQGlnbm9yZQorIFRoaXMg ZmlsZSBkb2N1bWVudHMgdGhlIHVzZXIgaW50ZXJmYWNlIHRvIHRoZSBHTlUgSGlzdG9yeSBsaWJy YXJ5LgorIAorLUNvcHlyaWdodCAoQykgMTk4OC0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorK0NvcHlyaWdodCAoQykgMTk4OC0tMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKyBBdXRob3JlZCBieSBCcmlhbiBGb3ggYW5kIENoZXQgUmFtZXkuCisgCisgUGVy bWlzc2lvbiBpcyBncmFudGVkIHRvIG1ha2UgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVz IG9mIHRoaXMgbWFudWFsCitAQCAtOTcsNyArOTcsMTEgQEAgdG8gY29udGFpbiBubyBtb3JlIHRo YW4gQGVudnskSElTVEZJTEVTSVpFfQorIGxpbmVzLiAgSWYgQGVudntISVNURklMRVNJWkV9IGlz IG5vdCBzZXQsIG5vIHRydW5jYXRpb24gaXMgcGVyZm9ybWVkLgorIAorIElmIHRoZSBAZW52e0hJ U1RUSU1FRk9STUFUfSBpcyBzZXQsIHRoZSB0aW1lIHN0YW1wIGluZm9ybWF0aW9uCistYXNzb2Np YXRlZCB3aXRoIGVhY2ggaGlzdG9yeSBlbnRyeSBpcyB3cml0dGVuIHRvIHRoZSBoaXN0b3J5IGZp bGUuCisrYXNzb2NpYXRlZCB3aXRoIGVhY2ggaGlzdG9yeSBlbnRyeSBpcyB3cml0dGVuIHRvIHRo ZSBoaXN0b3J5IGZpbGUsCisrbWFya2VkIHdpdGggdGhlIGhpc3RvcnkgY29tbWVudCBjaGFyYWN0 ZXIuCisrV2hlbiB0aGUgaGlzdG9yeSBmaWxlIGlzIHJlYWQsIGxpbmVzIGJlZ2lubmluZyB3aXRo IHRoZSBoaXN0b3J5CisrY29tbWVudCBjaGFyYWN0ZXIgZm9sbG93ZWQgaW1tZWRpYXRlbHkgYnkg YSBkaWdpdCBhcmUgaW50ZXJwcmV0ZWQKKythcyB0aW1lc3RhbXBzIGZvciB0aGUgcHJldmlvdXMg aGlzdG9yeSBsaW5lLgorIAorIFRoZSBidWlsdGluIGNvbW1hbmQgQGNvZGV7ZmN9IG1heSBiZSB1 c2VkIHRvIGxpc3Qgb3IgZWRpdCBhbmQgcmUtZXhlY3V0ZQorIGEgcG9ydGlvbiBvZiB0aGUgaGlz dG9yeSBsaXN0LgorQEAgLTEzMyw3ICsxMzcsNyBAQCBoaXN0b3J5IGxpc3QgYW5kIGhpc3Rvcnkg ZmlsZS4KKyBAaXRlbSBmYworIEBidGluZGV4IGZjCisgQGV4YW1wbGUKKy1AY29kZXtmYyBbLWUg QHZhcntlbmFtZX1dIFstbmxyXSBbQHZhcntmaXJzdH1dIFtAdmFye2xhc3R9XX0KKytAY29kZXtm YyBbLWUgQHZhcntlbmFtZX1dIFstbG5yXSBbQHZhcntmaXJzdH1dIFtAdmFye2xhc3R9XX0KKyBA Y29kZXtmYyAtcyBbQHZhcntwYXR9PUB2YXJ7cmVwfV0gW0B2YXJ7Y29tbWFuZH1dfQorIEBlbmQg ZXhhbXBsZQorIAorQEAgLTI3Nyw3ICsyODEsMTAgQEAgdGhlbSwgc28gdGhhdCB0aGV5IGFyZSBh dmFpbGFibGUgZm9yIHN1YnNlcXVlbnQgcmVjYWxsLgorIFRoaXMgaXMgbW9zdCB1c2VmdWwgaW4g Y29uanVuY3Rpb24gd2l0aCBSZWFkbGluZS4KKyAKKyBUaGUgc2hlbGwgYWxsb3dzIGNvbnRyb2wg b2YgdGhlIHZhcmlvdXMgY2hhcmFjdGVycyB1c2VkIGJ5IHRoZQorLWhpc3RvcnkgZXhwYW5zaW9u IG1lY2hhbmlzbSB3aXRoIHRoZSBAY29kZXtoaXN0Y2hhcnN9IHZhcmlhYmxlLgorK2hpc3Rvcnkg ZXhwYW5zaW9uIG1lY2hhbmlzbSB3aXRoIHRoZSBAY29kZXtoaXN0Y2hhcnN9IHZhcmlhYmxlLAor K2FzIGV4cGxhaW5lZCBhYm92ZSAoQHB4cmVme0Jhc2ggVmFyaWFibGVzfSkuICBUaGUgc2hlbGwg dXNlcworK3RoZSBoaXN0b3J5IGNvbW1lbnQgY2hhcmFjdGVyIHRvIG1hcmsgaGlzdG9yeSB0aW1l c3RhbXBzIHdoZW4KKyt3cml0aW5nIHRoZSBoaXN0b3J5IGZpbGUuCisgQGVuZCBpZnNldAorIAor IEBtZW51CitAQCAtMjkyLDYgKzI5OSw4IEBAIGhpc3RvcnkgZXhwYW5zaW9uIG1lY2hhbmlzbSB3 aXRoIHRoZSBAY29kZXtoaXN0Y2hhcnN9IHZhcmlhYmxlLgorIAorIEFuIGV2ZW50IGRlc2lnbmF0 b3IgaXMgYSByZWZlcmVuY2UgdG8gYSBjb21tYW5kIGxpbmUgZW50cnkgaW4gdGhlCisgaGlzdG9y eSBsaXN0LgorK1VubGVzcyB0aGUgcmVmZXJlbmNlIGlzIGFic29sdXRlLCBldmVudHMgYXJlIHJl bGF0aXZlIHRvIHRoZSBjdXJyZW50CisrcG9zaXRpb24gaW4gdGhlIGhpc3RvcnkgbGlzdC4KKyBA Y2luZGV4IGhpc3RvcnkgZXZlbnRzCisgCisgQHRhYmxlIEBhc2lzCitAQCAtMzE3LDEwICszMjYs MTUgQEAgUmVmZXIgdG8gdGhlIGNvbW1hbmQgQHZhcntufSBsaW5lcyBiYWNrLgorIFJlZmVyIHRv IHRoZSBwcmV2aW91cyBjb21tYW5kLiAgVGhpcyBpcyBhIHN5bm9ueW0gZm9yIEBzYW1weyEtMX0u CisgCisgQGl0ZW0gQGNvZGV7IUB2YXJ7c3RyaW5nfX0KKy1SZWZlciB0byB0aGUgbW9zdCByZWNl bnQgY29tbWFuZCBzdGFydGluZyB3aXRoIEB2YXJ7c3RyaW5nfS4KKytSZWZlciB0byB0aGUgbW9z dCByZWNlbnQgY29tbWFuZAorK3ByZWNlZGluZyB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUg aGlzdG9yeSBsaXN0Cisrc3RhcnRpbmcgd2l0aCBAdmFye3N0cmluZ30uCisgCisgQGl0ZW0gQGNv ZGV7IT9AdmFye3N0cmluZ31bP119CistUmVmZXIgdG8gdGhlIG1vc3QgcmVjZW50IGNvbW1hbmQg Y29udGFpbmluZyBAdmFye3N0cmluZ30uICBUaGUgdHJhaWxpbmcKKytSZWZlciB0byB0aGUgbW9z dCByZWNlbnQgY29tbWFuZAorK3ByZWNlZGluZyB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUg aGlzdG9yeSBsaXN0CisrY29udGFpbmluZyBAdmFye3N0cmluZ30uCisrVGhlIHRyYWlsaW5nCisg QHNhbXB7P30gbWF5IGJlIG9taXR0ZWQgaWYgdGhlIEB2YXJ7c3RyaW5nfSBpcyBmb2xsb3dlZCBp bW1lZGlhdGVseSBieQorIGEgbmV3bGluZS4KKyAKK0BAIC00MTIsNyArNDI2LDcgQEAgb2YgdGhl IGZvbGxvd2luZyBtb2RpZmllcnMsIGVhY2ggcHJlY2VkZWQgYnkgYSBAc2FtcHs6fS4KKyBSZW1v dmUgYSB0cmFpbGluZyBwYXRobmFtZSBjb21wb25lbnQsIGxlYXZpbmcgb25seSB0aGUgaGVhZC4K KyAKKyBAaXRlbSB0CistUmVtb3ZlIGFsbCBsZWFkaW5nICBwYXRobmFtZSAgY29tcG9uZW50cywg bGVhdmluZyB0aGUgdGFpbC4KKytSZW1vdmUgYWxsIGxlYWRpbmcgcGF0aG5hbWUgY29tcG9uZW50 cywgbGVhdmluZyB0aGUgdGFpbC4KKyAKKyBAaXRlbSByCisgUmVtb3ZlIGEgdHJhaWxpbmcgc3Vm Zml4IG9mIHRoZSBmb3JtIEBzYW1wey5AdmFye3N1ZmZpeH19LCBsZWF2aW5nCistLS0gYS9yZWFk bGluZS9kb2MvaW5jLWhpc3QudGV4aW5mbworKysrIC9kZXYvbnVsbAorQEAgLTEsNDU3ICswLDAg QEAKKy1AaWdub3JlCistVGhpcyBmaWxlIGRvY3VtZW50cyB0aGUgdXNlciBpbnRlcmZhY2UgdG8g dGhlIEdOVSBIaXN0b3J5IGxpYnJhcnkuCistCistQ29weXJpZ2h0IChDKSAxOTg4LTIwMDIgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistQXV0aG9yZWQgYnkgQnJpYW4gRm94IGFuZCBD aGV0IFJhbWV5LgorLQorLVBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBtYWtlIGFuZCBkaXN0cmli dXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGlzIG1hbnVhbAorLXByb3ZpZGVkIHRoZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFyZSBwcmVzZXJ2ZWQgb24KKy1h bGwgY29waWVzLgorLQorLVBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBwcm9jZXNzIHRoaXMgZmls ZSB0aHJvdWdoIFRleCBhbmQgcHJpbnQgdGhlCistcmVzdWx0cywgcHJvdmlkZWQgdGhlIHByaW50 ZWQgZG9jdW1lbnQgY2FycmllcyBjb3B5aW5nIHBlcm1pc3Npb24gbm90aWNlCistaWRlbnRpY2Fs IHRvIHRoaXMgb25lIGV4Y2VwdCBmb3IgdGhlIHJlbW92YWwgb2YgdGhpcyBwYXJhZ3JhcGggKHRo aXMKKy1wYXJhZ3JhcGggbm90IGJlaW5nIHJlbGV2YW50IHRvIHRoZSBwcmludGVkIG1hbnVhbCku CistCistUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgbW9kaWZp ZWQgdmVyc2lvbnMgb2YgdGhpcworLW1hbnVhbCB1bmRlciB0aGUgY29uZGl0aW9ucyBmb3IgdmVy YmF0aW0gY29weWluZywgcHJvdmlkZWQgYWxzbyB0aGF0IHRoZQorLUdOVSBDb3B5cmlnaHQgc3Rh dGVtZW50IGlzIGF2YWlsYWJsZSB0byB0aGUgZGlzdHJpYnV0ZWUsIGFuZCBwcm92aWRlZCB0aGF0 CistdGhlIGVudGlyZSByZXN1bHRpbmcgZGVyaXZlZCB3b3JrIGlzIGRpc3RyaWJ1dGVkIHVuZGVy IHRoZSB0ZXJtcyBvZiBhCistcGVybWlzc2lvbiBub3RpY2UgaWRlbnRpY2FsIHRvIHRoaXMgb25l LgorLQorLVBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHRyYW5z bGF0aW9ucyBvZiB0aGlzIG1hbnVhbAorLWludG8gYW5vdGhlciBsYW5ndWFnZSwgdW5kZXIgdGhl IGFib3ZlIGNvbmRpdGlvbnMgZm9yIG1vZGlmaWVkIHZlcnNpb25zLgorLUBlbmQgaWdub3JlCist CistQG5vZGUgVXNpbmcgSGlzdG9yeSBJbnRlcmFjdGl2ZWx5CistQGNoYXB0ZXIgVXNpbmcgSGlz dG9yeSBJbnRlcmFjdGl2ZWx5CistCistQGMgQGlmY2xlYXIgQmFzaEZlYXR1cmVzCistQGMgQGRl ZmNvZGVpbmRleCBidAorLUBjIEBlbmQgaWZjbGVhcgorLQorLUBpZnNldCBCYXNoRmVhdHVyZXMK Ky1UaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEBzY3tnbnV9IEhpc3Rvcnkg TGlicmFyeQorLWludGVyYWN0aXZlbHksIGZyb20gYSB1c2VyJ3Mgc3RhbmRwb2ludC4KKy1JdCBz aG91bGQgYmUgY29uc2lkZXJlZCBhIHVzZXIncyBndWlkZS4KKy1Gb3IgaW5mb3JtYXRpb24gb24g dXNpbmcgdGhlIEBzY3tnbnV9IEhpc3RvcnkgTGlicmFyeSBpbiBvdGhlciBwcm9ncmFtcywKKy1z ZWUgdGhlIEBzY3tnbnV9IFJlYWRsaW5lIExpYnJhcnkgTWFudWFsLgorLUBlbmQgaWZzZXQKKy1A aWZjbGVhciBCYXNoRmVhdHVyZXMKKy1UaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGhvdyB0byB1c2Ug dGhlIEBzY3tnbnV9IEhpc3RvcnkgTGlicmFyeSBpbnRlcmFjdGl2ZWx5LAorLWZyb20gYSB1c2Vy J3Mgc3RhbmRwb2ludC4gIEl0IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgdXNlcidzIGd1aWRlLgor LUZvciBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgQHNje2dudX0gSGlzdG9yeSBMaWJyYXJ5IGlu IG90aGVyIHByb2dyYW1zLAorLXNlZSB0aGUgQHNje2dudX0gUmVhZGxpbmUgTGlicmFyeSBNYW51 YWwuCistQGVuZCBpZmNsZWFyCistCistQGlmc2V0IEJhc2hGZWF0dXJlcworLUBtZW51CistKiBC YXNoIEhpc3RvcnkgRmFjaWxpdGllczo6CUhvdyBCYXNoIGxldHMgeW91IG1hbmlwdWxhdGUgeW91 ciBjb21tYW5kCistCQkJCWhpc3RvcnkuCistKiBCYXNoIEhpc3RvcnkgQnVpbHRpbnM6OglUaGUg QmFzaCBidWlsdGluIGNvbW1hbmRzIHRoYXQgbWFuaXB1bGF0ZQorLQkJCQl0aGUgY29tbWFuZCBo aXN0b3J5LgorLSogSGlzdG9yeSBJbnRlcmFjdGlvbjo6CQlXaGF0IGl0IGZlZWxzIGxpa2UgdXNp bmcgSGlzdG9yeSBhcyBhIHVzZXIuCistQGVuZCBtZW51CistQGVuZCBpZnNldAorLUBpZmNsZWFy IEJhc2hGZWF0dXJlcworLUBtZW51CistKiBIaXN0b3J5IEludGVyYWN0aW9uOjoJCVdoYXQgaXQg ZmVlbHMgbGlrZSB1c2luZyBIaXN0b3J5IGFzIGEgdXNlci4KKy1AZW5kIG1lbnUKKy1AZW5kIGlm Y2xlYXIKKy0KKy1AaWZzZXQgQmFzaEZlYXR1cmVzCistQG5vZGUgQmFzaCBIaXN0b3J5IEZhY2ls aXRpZXMKKy1Ac2VjdGlvbiBCYXNoIEhpc3RvcnkgRmFjaWxpdGllcworLUBjaW5kZXggY29tbWFu ZCBoaXN0b3J5CistQGNpbmRleCBoaXN0b3J5IGxpc3QKKy0KKy1XaGVuIHRoZSBAb3B0aW9uey1v IGhpc3Rvcnl9IG9wdGlvbiB0byB0aGUgQGNvZGV7c2V0fSBidWlsdGluCistaXMgZW5hYmxlZCAo QHB4cmVme1RoZSBTZXQgQnVpbHRpbn0pLAorLXRoZSBzaGVsbCBwcm92aWRlcyBhY2Nlc3MgdG8g dGhlIEBkZm57Y29tbWFuZCBoaXN0b3J5fSwKKy10aGUgbGlzdCBvZiBjb21tYW5kcyBwcmV2aW91 c2x5IHR5cGVkLgorLVRoZSB2YWx1ZSBvZiB0aGUgQGVudntISVNUU0laRX0gc2hlbGwgdmFyaWFi bGUgaXMgdXNlZCBhcyB0aGUKKy1udW1iZXIgb2YgY29tbWFuZHMgdG8gc2F2ZSBpbiBhIGhpc3Rv cnkgbGlzdC4KKy1UaGUgdGV4dCBvZiB0aGUgbGFzdCBAZW52eyRISVNUU0laRX0KKy1jb21tYW5k cyAoZGVmYXVsdCA1MDApIGlzIHNhdmVkLgorLVRoZSBzaGVsbCBzdG9yZXMgZWFjaCBjb21tYW5k IGluIHRoZSBoaXN0b3J5IGxpc3QgcHJpb3IgdG8KKy1wYXJhbWV0ZXIgYW5kIHZhcmlhYmxlIGV4 cGFuc2lvbgorLWJ1dCBhZnRlciBoaXN0b3J5IGV4cGFuc2lvbiBpcyBwZXJmb3JtZWQsIHN1Ympl Y3QgdG8gdGhlCistdmFsdWVzIG9mIHRoZSBzaGVsbCB2YXJpYWJsZXMKKy1AZW52e0hJU1RJR05P UkV9IGFuZCBAZW52e0hJU1RDT05UUk9MfS4KKy0KKy1XaGVuIHRoZSBzaGVsbCBzdGFydHMgdXAs IHRoZSBoaXN0b3J5IGlzIGluaXRpYWxpemVkIGZyb20gdGhlCistZmlsZSBuYW1lZCBieSB0aGUg QGVudntISVNURklMRX0gdmFyaWFibGUgKGRlZmF1bHQgQGZpbGV7fi8uYmFzaF9oaXN0b3J5fSku CistVGhlIGZpbGUgbmFtZWQgYnkgdGhlIHZhbHVlIG9mIEBlbnZ7SElTVEZJTEV9IGlzIHRydW5j YXRlZCwgaWYKKy1uZWNlc3NhcnksIHRvIGNvbnRhaW4gbm8gbW9yZSB0aGFuIHRoZSBudW1iZXIg b2YgbGluZXMgc3BlY2lmaWVkIGJ5CistdGhlIHZhbHVlIG9mIHRoZSBAZW52e0hJU1RGSUxFU0la RX0gdmFyaWFibGUuCistV2hlbiBhbiBpbnRlcmFjdGl2ZSBzaGVsbCBleGl0cywgdGhlIGxhc3QK Ky1AZW52eyRISVNUU0laRX0gbGluZXMgYXJlIGNvcGllZCBmcm9tIHRoZSBoaXN0b3J5IGxpc3Qg dG8gdGhlIGZpbGUKKy1uYW1lZCBieSBAZW52eyRISVNURklMRX0uCistSWYgdGhlIEBjb2Rle2hp c3RhcHBlbmR9IHNoZWxsIG9wdGlvbiBpcyBzZXQgKEBweHJlZntCYXNoIEJ1aWx0aW5zfSksCist dGhlIGxpbmVzIGFyZSBhcHBlbmRlZCB0byB0aGUgaGlzdG9yeSBmaWxlLAorLW90aGVyd2lzZSB0 aGUgaGlzdG9yeSBmaWxlIGlzIG92ZXJ3cml0dGVuLgorLUlmIEBlbnZ7SElTVEZJTEV9CistaXMg dW5zZXQsIG9yIGlmIHRoZSBoaXN0b3J5IGZpbGUgaXMgdW53cml0YWJsZSwgdGhlIGhpc3Rvcnkg aXMKKy1ub3Qgc2F2ZWQuICBBZnRlciBzYXZpbmcgdGhlIGhpc3RvcnksIHRoZSBoaXN0b3J5IGZp bGUgaXMgdHJ1bmNhdGVkCistdG8gY29udGFpbiBubyBtb3JlIHRoYW4gQGVudnskSElTVEZJTEVT SVpFfQorLWxpbmVzLiAgSWYgQGVudntISVNURklMRVNJWkV9IGlzIG5vdCBzZXQsIG5vIHRydW5j YXRpb24gaXMgcGVyZm9ybWVkLgorLQorLUlmIHRoZSBAZW52e0hJU1RUSU1FRk9STUFUfSBpcyBz ZXQsIHRoZSB0aW1lIHN0YW1wIGluZm9ybWF0aW9uCistYXNzb2NpYXRlZCB3aXRoIGVhY2ggaGlz dG9yeSBlbnRyeSBpcyB3cml0dGVuIHRvIHRoZSBoaXN0b3J5IGZpbGUuCistCistVGhlIGJ1aWx0 aW4gY29tbWFuZCBAY29kZXtmY30gbWF5IGJlIHVzZWQgdG8gbGlzdCBvciBlZGl0IGFuZCByZS1l eGVjdXRlCistYSBwb3J0aW9uIG9mIHRoZSBoaXN0b3J5IGxpc3QuCistVGhlIEBjb2Rle2hpc3Rv cnl9IGJ1aWx0aW4gbWF5IGJlIHVzZWQgdG8gZGlzcGxheSBvciBtb2RpZnkgdGhlIGhpc3RvcnkK Ky1saXN0IGFuZCBtYW5pcHVsYXRlIHRoZSBoaXN0b3J5IGZpbGUuCistV2hlbiB1c2luZyBjb21t YW5kLWxpbmUgZWRpdGluZywgc2VhcmNoIGNvbW1hbmRzCistYXJlIGF2YWlsYWJsZSBpbiBlYWNo IGVkaXRpbmcgbW9kZSB0aGF0IHByb3ZpZGUgYWNjZXNzIHRvIHRoZQorLWhpc3RvcnkgbGlzdCAo QHB4cmVme0NvbW1hbmRzIEZvciBIaXN0b3J5fSkuCistCistVGhlIHNoZWxsIGFsbG93cyBjb250 cm9sIG92ZXIgd2hpY2ggY29tbWFuZHMgYXJlIHNhdmVkIG9uIHRoZSBoaXN0b3J5CistbGlzdC4g IFRoZSBAZW52e0hJU1RDT05UUk9MfSBhbmQgQGVudntISVNUSUdOT1JFfQorLXZhcmlhYmxlcyBt YXkgYmUgc2V0IHRvIGNhdXNlIHRoZSBzaGVsbCB0byBzYXZlIG9ubHkgYSBzdWJzZXQgb2YgdGhl CistY29tbWFuZHMgZW50ZXJlZC4KKy1UaGUgQGNvZGV7Y21kaGlzdH0KKy1zaGVsbCBvcHRpb24s IGlmIGVuYWJsZWQsIGNhdXNlcyB0aGUgc2hlbGwgdG8gYXR0ZW1wdCB0byBzYXZlIGVhY2gKKy1s aW5lIG9mIGEgbXVsdGktbGluZSBjb21tYW5kIGluIHRoZSBzYW1lIGhpc3RvcnkgZW50cnksIGFk ZGluZworLXNlbWljb2xvbnMgd2hlcmUgbmVjZXNzYXJ5IHRvIHByZXNlcnZlIHN5bnRhY3RpYyBj b3JyZWN0bmVzcy4KKy1UaGUgQGNvZGV7bGl0aGlzdH0KKy1zaGVsbCBvcHRpb24gY2F1c2VzIHRo ZSBzaGVsbCB0byBzYXZlIHRoZSBjb21tYW5kIHdpdGggZW1iZWRkZWQgbmV3bGluZXMKKy1pbnN0 ZWFkIG9mIHNlbWljb2xvbnMuCistVGhlIEBjb2Rle3Nob3B0fSBidWlsdGluIGlzIHVzZWQgdG8g c2V0IHRoZXNlIG9wdGlvbnMuCistQHhyZWZ7QmFzaCBCdWlsdGluc30sIGZvciBhIGRlc2NyaXB0 aW9uIG9mIEBjb2Rle3Nob3B0fS4KKy0KKy1Abm9kZSBCYXNoIEhpc3RvcnkgQnVpbHRpbnMKKy1A c2VjdGlvbiBCYXNoIEhpc3RvcnkgQnVpbHRpbnMKKy1AY2luZGV4IGhpc3RvcnkgYnVpbHRpbnMK Ky0KKy1CYXNoIHByb3ZpZGVzIHR3byBidWlsdGluIGNvbW1hbmRzIHdoaWNoIG1hbmlwdWxhdGUg dGhlCistaGlzdG9yeSBsaXN0IGFuZCBoaXN0b3J5IGZpbGUuCistCistQHRhYmxlIEBjb2RlCist CistQGl0ZW0gZmMKKy1AYnRpbmRleCBmYworLUBleGFtcGxlCistQGNvZGV7ZmMgWy1lIEB2YXJ7 ZW5hbWV9XSBbLW5scl0gW0B2YXJ7Zmlyc3R9XSBbQHZhcntsYXN0fV19CistQGNvZGV7ZmMgLXMg W0B2YXJ7cGF0fT1AdmFye3JlcH1dIFtAdmFye2NvbW1hbmR9XX0KKy1AZW5kIGV4YW1wbGUKKy0K Ky1GaXggQ29tbWFuZC4gIEluIHRoZSBmaXJzdCBmb3JtLCBhIHJhbmdlIG9mIGNvbW1hbmRzIGZy b20gQHZhcntmaXJzdH0gdG8KKy1AdmFye2xhc3R9IGlzIHNlbGVjdGVkIGZyb20gdGhlIGhpc3Rv cnkgbGlzdC4gIEJvdGggQHZhcntmaXJzdH0gYW5kCistQHZhcntsYXN0fSBtYXkgYmUgc3BlY2lm aWVkIGFzIGEgc3RyaW5nICh0byBsb2NhdGUgdGhlIG1vc3QgcmVjZW50CistY29tbWFuZCBiZWdp bm5pbmcgd2l0aCB0aGF0IHN0cmluZykgb3IgYXMgYSBudW1iZXIgKGFuIGluZGV4IGludG8gdGhl CistaGlzdG9yeSBsaXN0LCB3aGVyZSBhIG5lZ2F0aXZlIG51bWJlciBpcyB1c2VkIGFzIGFuIG9m ZnNldCBmcm9tIHRoZQorLWN1cnJlbnQgY29tbWFuZCBudW1iZXIpLiAgSWYgQHZhcntsYXN0fSBp cyBub3Qgc3BlY2lmaWVkIGl0IGlzIHNldCB0bworLUB2YXJ7Zmlyc3R9LiAgSWYgQHZhcntmaXJz dH0gaXMgbm90IHNwZWNpZmllZCBpdCBpcyBzZXQgdG8gdGhlIHByZXZpb3VzCistY29tbWFuZCBm b3IgZWRpdGluZyBhbmQgQG1pbnVze30xNiBmb3IgbGlzdGluZy4gIElmIHRoZSBAb3B0aW9uey1s fSBmbGFnIGlzCistZ2l2ZW4sIHRoZSBjb21tYW5kcyBhcmUgbGlzdGVkIG9uIHN0YW5kYXJkIG91 dHB1dC4gIFRoZSBAb3B0aW9uey1ufSBmbGFnCistc3VwcHJlc3NlcyB0aGUgY29tbWFuZCBudW1i ZXJzIHdoZW4gbGlzdGluZy4gIFRoZSBAb3B0aW9uey1yfSBmbGFnCistcmV2ZXJzZXMgdGhlIG9y ZGVyIG9mIHRoZSBsaXN0aW5nLiAgT3RoZXJ3aXNlLCB0aGUgZWRpdG9yIGdpdmVuIGJ5CistQHZh cntlbmFtZX0gaXMgaW52b2tlZCBvbiBhIGZpbGUgY29udGFpbmluZyB0aG9zZSBjb21tYW5kcy4g IElmCistQHZhcntlbmFtZX0gaXMgbm90IGdpdmVuLCB0aGUgdmFsdWUgb2YgdGhlIGZvbGxvd2lu ZyB2YXJpYWJsZSBleHBhbnNpb24KKy1pcyB1c2VkOiBAY29kZXskQHtGQ0VESVQ6LSRAe0VESVRP UjotdmlAfUB9fS4gIFRoaXMgc2F5cyB0byB1c2UgdGhlCistdmFsdWUgb2YgdGhlIEBlbnZ7RkNF RElUfSB2YXJpYWJsZSBpZiBzZXQsIG9yIHRoZSB2YWx1ZSBvZiB0aGUKKy1AZW52e0VESVRPUn0g dmFyaWFibGUgaWYgdGhhdCBpcyBzZXQsIG9yIEBjb2Rle3ZpfSBpZiBuZWl0aGVyIGlzIHNldC4K Ky1XaGVuIGVkaXRpbmcgaXMgY29tcGxldGUsIHRoZSBlZGl0ZWQgY29tbWFuZHMgYXJlIGVjaG9l ZCBhbmQgZXhlY3V0ZWQuCistCistSW4gdGhlIHNlY29uZCBmb3JtLCBAdmFye2NvbW1hbmR9IGlz IHJlLWV4ZWN1dGVkIGFmdGVyIGVhY2ggaW5zdGFuY2UKKy1vZiBAdmFye3BhdH0gaW4gdGhlIHNl bGVjdGVkIGNvbW1hbmQgaXMgcmVwbGFjZWQgYnkgQHZhcntyZXB9LgorLQorLUEgdXNlZnVsIGFs aWFzIHRvIHVzZSB3aXRoIHRoZSBAY29kZXtmY30gY29tbWFuZCBpcyBAY29kZXtyPSdmYyAtcyd9 LCBzbworLXRoYXQgdHlwaW5nIEBzYW1we3IgY2N9IHJ1bnMgdGhlIGxhc3QgY29tbWFuZCBiZWdp bm5pbmcgd2l0aCBAY29kZXtjY30KKy1hbmQgdHlwaW5nIEBzYW1we3J9IHJlLWV4ZWN1dGVzIHRo ZSBsYXN0IGNvbW1hbmQgKEBweHJlZntBbGlhc2VzfSkuCistCistQGl0ZW0gaGlzdG9yeQorLUBi dGluZGV4IGhpc3RvcnkKKy1AZXhhbXBsZQorLWhpc3RvcnkgW0B2YXJ7bn1dCistaGlzdG9yeSAt YworLWhpc3RvcnkgLWQgQHZhcntvZmZzZXR9CistaGlzdG9yeSBbLWFucnddIFtAdmFye2ZpbGVu YW1lfV0KKy1oaXN0b3J5IC1wcyBAdmFye2FyZ30KKy1AZW5kIGV4YW1wbGUKKy0KKy1XaXRoIG5v IG9wdGlvbnMsIGRpc3BsYXkgdGhlIGhpc3RvcnkgbGlzdCB3aXRoIGxpbmUgbnVtYmVycy4KKy1M aW5lcyBwcmVmaXhlZCB3aXRoIGEgQHNhbXB7Kn0gaGF2ZSBiZWVuIG1vZGlmaWVkLgorLUFuIGFy Z3VtZW50IG9mIEB2YXJ7bn0gbGlzdHMgb25seSB0aGUgbGFzdCBAdmFye259IGxpbmVzLgorLUlm IHRoZSBzaGVsbCB2YXJpYWJsZSBAZW52e0hJU1RUSU1FRk9STUFUfSBpcyBzZXQgYW5kIG5vdCBu dWxsLAorLWl0IGlzIHVzZWQgYXMgYSBmb3JtYXQgc3RyaW5nIGZvciBAdmFye3N0cmZ0aW1lfSB0 byBkaXNwbGF5CistdGhlIHRpbWUgc3RhbXAgYXNzb2NpYXRlZCB3aXRoIGVhY2ggZGlzcGxheWVk IGhpc3RvcnkgZW50cnkuCistTm8gaW50ZXJ2ZW5pbmcgYmxhbmsgaXMgcHJpbnRlZCBiZXR3ZWVu IHRoZSBmb3JtYXR0ZWQgdGltZSBzdGFtcAorLWFuZCB0aGUgaGlzdG9yeSBsaW5lLgorLQorLU9w dGlvbnMsIGlmIHN1cHBsaWVkLCBoYXZlIHRoZSBmb2xsb3dpbmcgbWVhbmluZ3M6CistCistQHRh YmxlIEBjb2RlCistQGl0ZW0gLWMKKy1DbGVhciB0aGUgaGlzdG9yeSBsaXN0LiAgVGhpcyBtYXkg YmUgY29tYmluZWQKKy13aXRoIHRoZSBvdGhlciBvcHRpb25zIHRvIHJlcGxhY2UgdGhlIGhpc3Rv cnkgbGlzdCBjb21wbGV0ZWx5LgorLQorLUBpdGVtIC1kIEB2YXJ7b2Zmc2V0fQorLURlbGV0ZSB0 aGUgaGlzdG9yeSBlbnRyeSBhdCBwb3NpdGlvbiBAdmFye29mZnNldH0uCistQHZhcntvZmZzZXR9 IHNob3VsZCBiZSBzcGVjaWZpZWQgYXMgaXQgYXBwZWFycyB3aGVuIHRoZSBoaXN0b3J5IGlzCist ZGlzcGxheWVkLgorLQorLUBpdGVtIC1hCistQXBwZW5kIHRoZSBuZXcKKy1oaXN0b3J5IGxpbmVz IChoaXN0b3J5IGxpbmVzIGVudGVyZWQgc2luY2UgdGhlIGJlZ2lubmluZyBvZiB0aGUKKy1jdXJy ZW50IEJhc2ggc2Vzc2lvbikgdG8gdGhlIGhpc3RvcnkgZmlsZS4KKy0KKy1AaXRlbSAtbgorLUFw cGVuZCB0aGUgaGlzdG9yeSBsaW5lcyBub3QgYWxyZWFkeSByZWFkIGZyb20gdGhlIGhpc3Rvcnkg ZmlsZQorLXRvIHRoZSBjdXJyZW50IGhpc3RvcnkgbGlzdC4gIFRoZXNlIGFyZSBsaW5lcyBhcHBl bmRlZCB0byB0aGUgaGlzdG9yeQorLWZpbGUgc2luY2UgdGhlIGJlZ2lubmluZyBvZiB0aGUgY3Vy cmVudCBCYXNoIHNlc3Npb24uCistCistQGl0ZW0gLXIKKy1SZWFkIHRoZSBjdXJyZW50IGhpc3Rv cnkgZmlsZSBhbmQgYXBwZW5kIGl0cyBjb250ZW50cyB0bworLXRoZSBoaXN0b3J5IGxpc3QuCist CistQGl0ZW0gLXcKKy1Xcml0ZSBvdXQgdGhlIGN1cnJlbnQgaGlzdG9yeSB0byB0aGUgaGlzdG9y eSBmaWxlLgorLQorLUBpdGVtIC1wCistUGVyZm9ybSBoaXN0b3J5IHN1YnN0aXR1dGlvbiBvbiB0 aGUgQHZhcnthcmd9cyBhbmQgZGlzcGxheSB0aGUgcmVzdWx0Cistb24gdGhlIHN0YW5kYXJkIG91 dHB1dCwgd2l0aG91dCBzdG9yaW5nIHRoZSByZXN1bHRzIGluIHRoZSBoaXN0b3J5IGxpc3QuCist CistQGl0ZW0gLXMKKy1UaGUgQHZhcnthcmd9cyBhcmUgYWRkZWQgdG8gdGhlIGVuZCBvZgorLXRo ZSBoaXN0b3J5IGxpc3QgYXMgYSBzaW5nbGUgZW50cnkuCistCistQGVuZCB0YWJsZQorLQorLVdo ZW4gYW55IG9mIHRoZSBAb3B0aW9uey13fSwgQG9wdGlvbnstcn0sIEBvcHRpb257LWF9LCBvciBA b3B0aW9uey1ufSBvcHRpb25zIGlzCistdXNlZCwgaWYgQHZhcntmaWxlbmFtZX0KKy1pcyBnaXZl biwgdGhlbiBpdCBpcyB1c2VkIGFzIHRoZSBoaXN0b3J5IGZpbGUuICBJZiBub3QsIHRoZW4KKy10 aGUgdmFsdWUgb2YgdGhlIEBlbnZ7SElTVEZJTEV9IHZhcmlhYmxlIGlzIHVzZWQuCistCistQGVu ZCB0YWJsZQorLUBlbmQgaWZzZXQKKy0KKy1Abm9kZSBIaXN0b3J5IEludGVyYWN0aW9uCistQHNl Y3Rpb24gSGlzdG9yeSBFeHBhbnNpb24KKy1AY2luZGV4IGhpc3RvcnkgZXhwYW5zaW9uCistCist VGhlIEhpc3RvcnkgbGlicmFyeSBwcm92aWRlcyBhIGhpc3RvcnkgZXhwYW5zaW9uIGZlYXR1cmUg dGhhdCBpcyBzaW1pbGFyCistdG8gdGhlIGhpc3RvcnkgZXhwYW5zaW9uIHByb3ZpZGVkIGJ5IEBj b2Rle2NzaH0uICBUaGlzIHNlY3Rpb24KKy1kZXNjcmliZXMgdGhlIHN5bnRheCB1c2VkIHRvIG1h bmlwdWxhdGUgdGhlIGhpc3RvcnkgaW5mb3JtYXRpb24uCistCistSGlzdG9yeSBleHBhbnNpb25z IGludHJvZHVjZSB3b3JkcyBmcm9tIHRoZSBoaXN0b3J5IGxpc3QgaW50bworLXRoZSBpbnB1dCBz dHJlYW0sIG1ha2luZyBpdCBlYXN5IHRvIHJlcGVhdCBjb21tYW5kcywgaW5zZXJ0IHRoZQorLWFy Z3VtZW50cyB0byBhIHByZXZpb3VzIGNvbW1hbmQgaW50byB0aGUgY3VycmVudCBpbnB1dCBsaW5l LCBvcgorLWZpeCBlcnJvcnMgaW4gcHJldmlvdXMgY29tbWFuZHMgcXVpY2tseS4KKy0KKy1IaXN0 b3J5IGV4cGFuc2lvbiB0YWtlcyBwbGFjZSBpbiB0d28gcGFydHMuICBUaGUgZmlyc3QgaXMgdG8g ZGV0ZXJtaW5lCistd2hpY2ggbGluZSBmcm9tIHRoZSBoaXN0b3J5IGxpc3Qgc2hvdWxkIGJlIHVz ZWQgZHVyaW5nIHN1YnN0aXR1dGlvbi4KKy1UaGUgc2Vjb25kIGlzIHRvIHNlbGVjdCBwb3J0aW9u cyBvZiB0aGF0IGxpbmUgZm9yIGluY2x1c2lvbiBpbnRvIHRoZQorLWN1cnJlbnQgb25lLiAgVGhl IGxpbmUgc2VsZWN0ZWQgZnJvbSB0aGUgaGlzdG9yeSBpcyBjYWxsZWQgdGhlCistQGRmbntldmVu dH0sIGFuZCB0aGUgcG9ydGlvbnMgb2YgdGhhdCBsaW5lIHRoYXQgYXJlIGFjdGVkIHVwb24gYXJl CistY2FsbGVkIEBkZm57d29yZHN9LiAgVmFyaW91cyBAZGZue21vZGlmaWVyc30gYXJlIGF2YWls YWJsZSB0byBtYW5pcHVsYXRlCistdGhlIHNlbGVjdGVkIHdvcmRzLiAgVGhlIGxpbmUgaXMgYnJv a2VuIGludG8gd29yZHMgaW4gdGhlIHNhbWUgZmFzaGlvbgorLXRoYXQgQmFzaCBkb2VzLCBzbyB0 aGF0IHNldmVyYWwgd29yZHMKKy1zdXJyb3VuZGVkIGJ5IHF1b3RlcyBhcmUgY29uc2lkZXJlZCBv bmUgd29yZC4KKy1IaXN0b3J5IGV4cGFuc2lvbnMgYXJlIGludHJvZHVjZWQgYnkgdGhlIGFwcGVh cmFuY2Ugb2YgdGhlCistaGlzdG9yeSBleHBhbnNpb24gY2hhcmFjdGVyLCB3aGljaCBpcyBAc2Ft cHshfSBieSBkZWZhdWx0LgorLUBpZnNldCBCYXNoRmVhdHVyZXMKKy1Pbmx5IEBzYW1we1x9IGFu ZCBAc2FtcHsnfSBtYXkgYmUgdXNlZCB0byBlc2NhcGUgdGhlIGhpc3RvcnkgZXhwYW5zaW9uCist Y2hhcmFjdGVyLgorLUBlbmQgaWZzZXQKKy0KKy1AaWZzZXQgQmFzaEZlYXR1cmVzCistU2V2ZXJh bCBzaGVsbCBvcHRpb25zIHNldHRhYmxlIHdpdGggdGhlIEBjb2Rle3Nob3B0fQorLWJ1aWx0aW4g KEBweHJlZntCYXNoIEJ1aWx0aW5zfSkgbWF5IGJlIHVzZWQgdG8gdGFpbG9yCistdGhlIGJlaGF2 aW9yIG9mIGhpc3RvcnkgZXhwYW5zaW9uLiAgSWYgdGhlCistQGNvZGV7aGlzdHZlcmlmeX0gc2hl bGwgb3B0aW9uIGlzIGVuYWJsZWQsIGFuZCBSZWFkbGluZQorLWlzIGJlaW5nIHVzZWQsIGhpc3Rv cnkgc3Vic3RpdHV0aW9ucyBhcmUgbm90IGltbWVkaWF0ZWx5IHBhc3NlZCB0bworLXRoZSBzaGVs bCBwYXJzZXIuCistSW5zdGVhZCwgdGhlIGV4cGFuZGVkIGxpbmUgaXMgcmVsb2FkZWQgaW50byB0 aGUgUmVhZGxpbmUKKy1lZGl0aW5nIGJ1ZmZlciBmb3IgZnVydGhlciBtb2RpZmljYXRpb24uCist SWYgUmVhZGxpbmUgaXMgYmVpbmcgdXNlZCwgYW5kIHRoZSBAY29kZXtoaXN0cmVlZGl0fQorLXNo ZWxsIG9wdGlvbiBpcyBlbmFibGVkLCBhIGZhaWxlZCBoaXN0b3J5IGV4cGFuc2lvbiB3aWxsIGJl CistcmVsb2FkZWQgaW50byB0aGUgUmVhZGxpbmUgZWRpdGluZyBidWZmZXIgZm9yIGNvcnJlY3Rp b24uCistVGhlIEBvcHRpb257LXB9IG9wdGlvbiB0byB0aGUgQGNvZGV7aGlzdG9yeX0gYnVpbHRp biBjb21tYW5kCistbWF5IGJlIHVzZWQgdG8gc2VlIHdoYXQgYSBoaXN0b3J5IGV4cGFuc2lvbiB3 aWxsIGRvIGJlZm9yZSB1c2luZyBpdC4KKy1UaGUgQG9wdGlvbnstc30gb3B0aW9uIHRvIHRoZSBA Y29kZXtoaXN0b3J5fSBidWlsdGluIG1heSBiZSB1c2VkIHRvCistYWRkIGNvbW1hbmRzIHRvIHRo ZSBlbmQgb2YgdGhlIGhpc3RvcnkgbGlzdCB3aXRob3V0IGFjdHVhbGx5IGV4ZWN1dGluZworLXRo ZW0sIHNvIHRoYXQgdGhleSBhcmUgYXZhaWxhYmxlIGZvciBzdWJzZXF1ZW50IHJlY2FsbC4KKy1U aGlzIGlzIG1vc3QgdXNlZnVsIGluIGNvbmp1bmN0aW9uIHdpdGggUmVhZGxpbmUuCistCistVGhl IHNoZWxsIGFsbG93cyBjb250cm9sIG9mIHRoZSB2YXJpb3VzIGNoYXJhY3RlcnMgdXNlZCBieSB0 aGUKKy1oaXN0b3J5IGV4cGFuc2lvbiBtZWNoYW5pc20gd2l0aCB0aGUgQGNvZGV7aGlzdGNoYXJz fSB2YXJpYWJsZS4KKy1AZW5kIGlmc2V0CistCistQG1lbnUKKy0qIEV2ZW50IERlc2lnbmF0b3Jz OjoJSG93IHRvIHNwZWNpZnkgd2hpY2ggaGlzdG9yeSBsaW5lIHRvIHVzZS4KKy0qIFdvcmQgRGVz aWduYXRvcnM6OglTcGVjaWZ5aW5nIHdoaWNoIHdvcmRzIGFyZSBvZiBpbnRlcmVzdC4KKy0qIE1v ZGlmaWVyczo6CQlNb2RpZnlpbmcgdGhlIHJlc3VsdHMgb2Ygc3Vic3RpdHV0aW9uLgorLUBlbmQg bWVudQorLQorLUBub2RlIEV2ZW50IERlc2lnbmF0b3JzCistQHN1YnNlY3Rpb24gRXZlbnQgRGVz aWduYXRvcnMKKy1AY2luZGV4IGV2ZW50IGRlc2lnbmF0b3JzCistCistQW4gZXZlbnQgZGVzaWdu YXRvciBpcyBhIHJlZmVyZW5jZSB0byBhIGNvbW1hbmQgbGluZSBlbnRyeSBpbiB0aGUKKy1oaXN0 b3J5IGxpc3QuCistQGNpbmRleCBoaXN0b3J5IGV2ZW50cworLQorLUB0YWJsZSBAYXNpcworLQor LUBpdGVtIEBjb2RleyF9CistQGlmc2V0IEJhc2hGZWF0dXJlcworLVN0YXJ0IGEgaGlzdG9yeSBz dWJzdGl0dXRpb24sIGV4Y2VwdCB3aGVuIGZvbGxvd2VkIGJ5IGEgc3BhY2UsIHRhYiwKKy10aGUg ZW5kIG9mIHRoZSBsaW5lLCBAc2FtcHs9fSBvciBAc2FtcHsofSAod2hlbiB0aGUKKy1AY29kZXtl eHRnbG9ifSBzaGVsbCBvcHRpb24gaXMgZW5hYmxlZCB1c2luZyB0aGUgQGNvZGV7c2hvcHR9IGJ1 aWx0aW4pLgorLUBlbmQgaWZzZXQKKy1AaWZjbGVhciBCYXNoRmVhdHVyZXMKKy1TdGFydCBhIGhp c3Rvcnkgc3Vic3RpdHV0aW9uLCBleGNlcHQgd2hlbiBmb2xsb3dlZCBieSBhIHNwYWNlLCB0YWIs CistdGhlIGVuZCBvZiB0aGUgbGluZSwgb3IgQHNhbXB7PX0uCistQGVuZCBpZmNsZWFyCistCist QGl0ZW0gQGNvZGV7IUB2YXJ7bn19CistUmVmZXIgdG8gY29tbWFuZCBsaW5lIEB2YXJ7bn0uCist CistQGl0ZW0gQGNvZGV7IS1AdmFye259fQorLVJlZmVyIHRvIHRoZSBjb21tYW5kIEB2YXJ7bn0g bGluZXMgYmFjay4KKy0KKy1AaXRlbSBAY29kZXshIX0KKy1SZWZlciB0byB0aGUgcHJldmlvdXMg Y29tbWFuZC4gIFRoaXMgaXMgYSBzeW5vbnltIGZvciBAc2FtcHshLTF9LgorLQorLUBpdGVtIEBj b2RleyFAdmFye3N0cmluZ319CistUmVmZXIgdG8gdGhlIG1vc3QgcmVjZW50IGNvbW1hbmQgc3Rh cnRpbmcgd2l0aCBAdmFye3N0cmluZ30uCistCistQGl0ZW0gQGNvZGV7IT9AdmFye3N0cmluZ31b P119CistUmVmZXIgdG8gdGhlIG1vc3QgcmVjZW50IGNvbW1hbmQgY29udGFpbmluZyBAdmFye3N0 cmluZ30uICBUaGUgdHJhaWxpbmcKKy1Ac2FtcHs/fSBtYXkgYmUgb21pdHRlZCBpZiB0aGUgQHZh cntzdHJpbmd9IGlzIGZvbGxvd2VkIGltbWVkaWF0ZWx5IGJ5CistYSBuZXdsaW5lLgorLQorLUBp dGVtIEBjb2Rle15AdmFye3N0cmluZzF9XkB2YXJ7c3RyaW5nMn1efQorLVF1aWNrIFN1YnN0aXR1 dGlvbi4gIFJlcGVhdCB0aGUgbGFzdCBjb21tYW5kLCByZXBsYWNpbmcgQHZhcntzdHJpbmcxfQor LXdpdGggQHZhcntzdHJpbmcyfS4gIEVxdWl2YWxlbnQgdG8KKy1AY29kZXshITpzL0B2YXJ7c3Ry aW5nMX0vQHZhcntzdHJpbmcyfS99LgorLQorLUBpdGVtIEBjb2RleyEjfQorLVRoZSBlbnRpcmUg Y29tbWFuZCBsaW5lIHR5cGVkIHNvIGZhci4KKy0KKy1AZW5kIHRhYmxlCistCistQG5vZGUgV29y ZCBEZXNpZ25hdG9ycworLUBzdWJzZWN0aW9uIFdvcmQgRGVzaWduYXRvcnMKKy0KKy1Xb3JkIGRl c2lnbmF0b3JzIGFyZSB1c2VkIHRvIHNlbGVjdCBkZXNpcmVkIHdvcmRzIGZyb20gdGhlIGV2ZW50 LgorLUEgQHNhbXB7On0gc2VwYXJhdGVzIHRoZSBldmVudCBzcGVjaWZpY2F0aW9uIGZyb20gdGhl IHdvcmQgZGVzaWduYXRvci4gIEl0CistbWF5IGJlIG9taXR0ZWQgaWYgdGhlIHdvcmQgZGVzaWdu YXRvciBiZWdpbnMgd2l0aCBhIEBzYW1we159LCBAc2FtcHskfSwKKy1Ac2FtcHsqfSwgQHNhbXB7 LX0sIG9yIEBzYW1weyV9LiAgV29yZHMgYXJlIG51bWJlcmVkIGZyb20gdGhlIGJlZ2lubmluZwor LW9mIHRoZSBsaW5lLCB3aXRoIHRoZSBmaXJzdCB3b3JkIGJlaW5nIGRlbm90ZWQgYnkgMCAoemVy bykuICBXb3JkcyBhcmUKKy1pbnNlcnRlZCBpbnRvIHRoZSBjdXJyZW50IGxpbmUgc2VwYXJhdGVk IGJ5IHNpbmdsZSBzcGFjZXMuCistCistQG5lZWQgMC43NQorLUZvciBleGFtcGxlLAorLQorLUB0 YWJsZSBAY29kZQorLUBpdGVtICEhCistZGVzaWduYXRlcyB0aGUgcHJlY2VkaW5nIGNvbW1hbmQu ICBXaGVuIHlvdSB0eXBlIHRoaXMsIHRoZSBwcmVjZWRpbmcKKy1jb21tYW5kIGlzIHJlcGVhdGVk IGluIHRvdG8uCistCistQGl0ZW0gISE6JAorLWRlc2lnbmF0ZXMgdGhlIGxhc3QgYXJndW1lbnQg b2YgdGhlIHByZWNlZGluZyBjb21tYW5kLiAgVGhpcyBtYXkgYmUKKy1zaG9ydGVuZWQgdG8gQGNv ZGV7ISR9LgorLQorLUBpdGVtICFmaToyCistZGVzaWduYXRlcyB0aGUgc2Vjb25kIGFyZ3VtZW50 IG9mIHRoZSBtb3N0IHJlY2VudCBjb21tYW5kIHN0YXJ0aW5nIHdpdGgKKy10aGUgbGV0dGVycyBA Y29kZXtmaX0uCistQGVuZCB0YWJsZQorLQorLUBuZWVkIDAuNzUKKy1IZXJlIGFyZSB0aGUgd29y ZCBkZXNpZ25hdG9yczoKKy0gCistQHRhYmxlIEBjb2RlCistCistQGl0ZW0gMCAoemVybykKKy1U aGUgQGNvZGV7MH10aCB3b3JkLiAgRm9yIG1hbnkgYXBwbGljYXRpb25zLCB0aGlzIGlzIHRoZSBj b21tYW5kIHdvcmQuCistCistQGl0ZW0gQHZhcntufQorLVRoZSBAdmFye259dGggd29yZC4KKy0K Ky1AaXRlbSBeCistVGhlIGZpcnN0IGFyZ3VtZW50OyB0aGF0IGlzLCB3b3JkIDEuCistCistQGl0 ZW0gJAorLVRoZSBsYXN0IGFyZ3VtZW50LgorLQorLUBpdGVtICUKKy1UaGUgd29yZCBtYXRjaGVk IGJ5IHRoZSBtb3N0IHJlY2VudCBAc2FtcHs/QHZhcntzdHJpbmd9P30gc2VhcmNoLgorLQorLUBp dGVtIEB2YXJ7eH0tQHZhcnt5fQorLUEgcmFuZ2Ugb2Ygd29yZHM7IEBzYW1wey1AdmFye3l9fSBh YmJyZXZpYXRlcyBAc2FtcHswLUB2YXJ7eX19LgorLQorLUBpdGVtICoKKy1BbGwgb2YgdGhlIHdv cmRzLCBleGNlcHQgdGhlIEBjb2RlezB9dGguICBUaGlzIGlzIGEgc3lub255bSBmb3IgQHNhbXB7 MS0kfS4KKy1JdCBpcyBub3QgYW4gZXJyb3IgdG8gdXNlIEBzYW1weyp9IGlmIHRoZXJlIGlzIGp1 c3Qgb25lIHdvcmQgaW4gdGhlIGV2ZW50OworLXRoZSBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQg aW4gdGhhdCBjYXNlLgorLQorLUBpdGVtIEB2YXJ7eH0qCistQWJicmV2aWF0ZXMgQHNhbXB7QHZh cnt4fS0kfQorLQorLUBpdGVtIEB2YXJ7eH0tCistQWJicmV2aWF0ZXMgQHNhbXB7QHZhcnt4fS0k fSBsaWtlIEBzYW1we0B2YXJ7eH0qfSwgYnV0IG9taXRzIHRoZSBsYXN0IHdvcmQuCistCistQGVu ZCB0YWJsZQorLQorLUlmIGEgd29yZCBkZXNpZ25hdG9yIGlzIHN1cHBsaWVkIHdpdGhvdXQgYW4g ZXZlbnQgc3BlY2lmaWNhdGlvbiwgdGhlCistcHJldmlvdXMgY29tbWFuZCBpcyB1c2VkIGFzIHRo ZSBldmVudC4KKy0KKy1Abm9kZSBNb2RpZmllcnMKKy1Ac3Vic2VjdGlvbiBNb2RpZmllcnMKKy0K Ky1BZnRlciB0aGUgb3B0aW9uYWwgd29yZCBkZXNpZ25hdG9yLCB5b3UgY2FuIGFkZCBhIHNlcXVl bmNlIG9mIG9uZSBvciBtb3JlCistb2YgdGhlIGZvbGxvd2luZyBtb2RpZmllcnMsIGVhY2ggcHJl Y2VkZWQgYnkgYSBAc2FtcHs6fS4KKy0KKy1AdGFibGUgQGNvZGUKKy0KKy1AaXRlbSBoCistUmVt b3ZlIGEgdHJhaWxpbmcgcGF0aG5hbWUgY29tcG9uZW50LCBsZWF2aW5nIG9ubHkgdGhlIGhlYWQu CistCistQGl0ZW0gdAorLVJlbW92ZSBhbGwgbGVhZGluZyAgcGF0aG5hbWUgIGNvbXBvbmVudHMs IGxlYXZpbmcgdGhlIHRhaWwuCistCistQGl0ZW0gcgorLVJlbW92ZSBhIHRyYWlsaW5nIHN1ZmZp eCBvZiB0aGUgZm9ybSBAc2FtcHsuQHZhcntzdWZmaXh9fSwgbGVhdmluZworLXRoZSBiYXNlbmFt ZS4KKy0KKy1AaXRlbSBlCistUmVtb3ZlIGFsbCBidXQgdGhlIHRyYWlsaW5nIHN1ZmZpeC4KKy0K Ky1AaXRlbSBwCistUHJpbnQgdGhlIG5ldyBjb21tYW5kIGJ1dCBkbyBub3QgZXhlY3V0ZSBpdC4K Ky0KKy1AaWZzZXQgQmFzaEZlYXR1cmVzCistQGl0ZW0gcQorLVF1b3RlIHRoZSBzdWJzdGl0dXRl ZCB3b3JkcywgZXNjYXBpbmcgZnVydGhlciBzdWJzdGl0dXRpb25zLgorLQorLUBpdGVtIHgKKy1R dW90ZSB0aGUgc3Vic3RpdHV0ZWQgd29yZHMgYXMgd2l0aCBAc2FtcHtxfSwKKy1idXQgYnJlYWsg aW50byB3b3JkcyBhdCBzcGFjZXMsIHRhYnMsIGFuZCBuZXdsaW5lcy4KKy1AZW5kIGlmc2V0Cist CistQGl0ZW0gcy9AdmFye29sZH0vQHZhcntuZXd9LworLVN1YnN0aXR1dGUgQHZhcntuZXd9IGZv ciB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBAdmFye29sZH0gaW4gdGhlCistZXZlbnQgbGluZS4g IEFueSBkZWxpbWl0ZXIgbWF5IGJlIHVzZWQgaW4gcGxhY2Ugb2YgQHNhbXB7L30uCistVGhlIGRl bGltaXRlciBtYXkgYmUgcXVvdGVkIGluIEB2YXJ7b2xkfSBhbmQgQHZhcntuZXd9Cistd2l0aCBh IHNpbmdsZSBiYWNrc2xhc2guICBJZiBAc2FtcHsmfSBhcHBlYXJzIGluIEB2YXJ7bmV3fSwKKy1p dCBpcyByZXBsYWNlZCBieSBAdmFye29sZH0uICBBIHNpbmdsZSBiYWNrc2xhc2ggd2lsbCBxdW90 ZQorLXRoZSBAc2FtcHsmfS4gIFRoZSBmaW5hbCBkZWxpbWl0ZXIgaXMgb3B0aW9uYWwgaWYgaXQg aXMgdGhlIGxhc3QKKy1jaGFyYWN0ZXIgb24gdGhlIGlucHV0IGxpbmUuCistCistQGl0ZW0gJgor LVJlcGVhdCB0aGUgcHJldmlvdXMgc3Vic3RpdHV0aW9uLgorLQorLUBpdGVtIGcKKy1AaXRlbXgg YQorLUNhdXNlIGNoYW5nZXMgdG8gYmUgYXBwbGllZCBvdmVyIHRoZSBlbnRpcmUgZXZlbnQgbGlu ZS4gIFVzZWQgaW4KKy1jb25qdW5jdGlvbiB3aXRoIEBzYW1we3N9LCBhcyBpbiBAY29kZXtncy9A dmFye29sZH0vQHZhcntuZXd9L30sCistb3Igd2l0aCBAc2FtcHsmfS4KKy0KKy1AaXRlbSBHCist QXBwbHkgdGhlIGZvbGxvd2luZyBAc2FtcHtzfSBtb2RpZmllciBvbmNlIHRvIGVhY2ggd29yZCBp biB0aGUgZXZlbnQuCistCistQGVuZCB0YWJsZQorLS0tIGEvcmVhZGxpbmUvZG9jL3JlYWRsaW5l LjMKKysrKyBiL3JlYWRsaW5lL2RvYy9yZWFkbGluZS4zCitAQCAtNiw5ICs2LDkgQEAKKyAuXCIJ Q2FzZSBXZXN0ZXJuIFJlc2VydmUgVW5pdmVyc2l0eQorIC5cIgljaGV0QGlucy5DV1JVLkVkdQor IC5cIgorLS5cIglMYXN0IENoYW5nZTogVHVlIFNlcCAxMyAxMjowNzoyNiBFRFQgMjAwNQorKy5c IglMYXN0IENoYW5nZTogU2F0IEF1ZyAyOCAxODo1NjozMiBFRFQgMjAxMAorIC5cIgorLS5USCBS RUFETElORSAzICIyMDA1IFNlcCAxMyIgIkdOVSBSZWFkbGluZSA1LjEtYmV0YTEiCisrLlRIIFJF QURMSU5FIDMgIjIwMTAgQXVndXN0IDI4IiAiR05VIFJlYWRsaW5lIDYuMiIKKyAuXCIKKyAuXCIg RmlsZSBOYW1lIG1hY3JvLiAgVGhpcyB1c2VkIHRvIGJlIGAuUE4nLCBmb3IgUGF0aCBOYW1lLAor IC5cIiBidXQgU3VuIGRvZXNuJ3Qgc2VlbSB0byBsaWtlIHRoYXQgdmVyeSBtdWNoLgorQEAgLTM0 LDggKzM0LDggQEAgcmVhZGxpbmUgXC0gZ2V0IGEgbGluZSBmcm9tIGEgdXNlciB3aXRoIGVkaXRp bmcKKyBcZkJyZWFkbGluZVxmUCAoXGZJY29uc3QgY2hhciAqcHJvbXB0XGZQKTsKKyAuZmkKKyAu U0ggQ09QWVJJR0hUCistLmlmIG4gUmVhZGxpbmUgaXMgQ29weXJpZ2h0IChDKSAxOTg5XC0yMDA0 IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0uaWYgdCBSZWFkbGluZSBp cyBDb3B5cmlnaHQgXChjbyAxOTg5XC0yMDA0IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysuaWYgbiBSZWFkbGluZSBpcyBDb3B5cmlnaHQgKEMpIDE5ODlcLTIwMTEgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCAgSW5jLgorKy5pZiB0IFJlYWRsaW5lIGlzIENvcHlyaWdo dCBcKGNvIDE5ODlcLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgLlNIIERF U0NSSVBUSU9OCisgLkxQCisgLkIgcmVhZGxpbmUKK0BAIC03Niw3ICs3Niw3IEBAIGlzIHJlYWQg d2l0aCBhIG5vblwtZW1wdHkgbGluZSwgaXQgaXMKKyB0cmVhdGVkIGFzIGEgbmV3bGluZS4KKyAu U0ggTk9UQVRJT04KKyAuTFAKKy1BbiBlbWFjcy1zdHlsZSBub3RhdGlvbiBpcyB1c2VkIHRvIGRl bm90ZQorK0FuIEVtYWNzLXN0eWxlIG5vdGF0aW9uIGlzIHVzZWQgdG8gZGVub3RlCisga2V5c3Ry b2tlcy4gIENvbnRyb2wga2V5cyBhcmUgZGVub3RlZCBieSBDXC1cZklrZXlcZlIsIGUuZy4sIENc LW4KKyBtZWFucyBDb250cm9sXC1OLiAgU2ltaWxhcmx5LCAKKyAuSSBtZXRhCitAQCAtMTE2LDYg KzExNiw4IEBAIFRoZSBuYW1lIG9mIHRoaXMgZmlsZSBpcyB0YWtlbiBmcm9tIHRoZSB2YWx1ZSBv ZiB0aGUKKyAuQiBJTlBVVFJDCisgZW52aXJvbm1lbnQgdmFyaWFibGUuICBJZiB0aGF0IHZhcmlh YmxlIGlzIHVuc2V0LCB0aGUgZGVmYXVsdCBpcworIC5JUiB+Ly5pbnB1dHJjIC4KKytJZiB0aGF0 IGZpbGUgIGRvZXMgbm90IGV4aXN0IG9yIGNhbm5vdCBiZSByZWFkLCB0aGUgdWx0aW1hdGUgZGVm YXVsdCBpcworKy5JUiAvZXRjL2lucHV0cmMgLgorIFdoZW4gYSBwcm9ncmFtIHdoaWNoIHVzZXMg dGhlIHJlYWRsaW5lIGxpYnJhcnkgc3RhcnRzIHVwLCB0aGUKKyBpbml0IGZpbGUgaXMgcmVhZCwg YW5kIHRoZSBrZXkgYmluZGluZ3MgYW5kIHZhcmlhYmxlcyBhcmUgc2V0LgorIFRoZXJlIGFyZSBv bmx5IGEgZmV3IGJhc2ljIGNvbnN0cnVjdHMgYWxsb3dlZCBpbiB0aGUKK0BAIC0xNjgsNiArMTcw LDggQEAgY29tbWFuZCBvciB0aGUgdGV4dCBvZiBhIG1hY3JvIGFuZCBhIGtleSBzZXF1ZW5jZSB0 byB3aGljaAorIGl0IHNob3VsZCBiZSBib3VuZC4gVGhlIG5hbWUgbWF5IGJlIHNwZWNpZmllZCBp biBvbmUgb2YgdHdvIHdheXM6CisgYXMgYSBzeW1ib2xpYyBrZXkgbmFtZSwgcG9zc2libHkgd2l0 aCBcZklNZXRhXC1cZlAgb3IgXGZJQ29udHJvbFwtXGZQCisgcHJlZml4ZXMsIG9yIGFzIGEga2V5 IHNlcXVlbmNlLgorK1RoZSBuYW1lIGFuZCBrZXkgc2VxdWVuY2UgYXJlIHNlcGFyYXRlZCBieSBh IGNvbG9uLiAgVGhlcmUgY2FuIGJlIG5vCisrd2hpdGVzcGFjZSBiZXR3ZWVuIHRoZSBuYW1lIGFu ZCB0aGUgY29sb24uCisgLlBQCisgV2hlbiB1c2luZyB0aGUgZm9ybSBcZkJrZXluYW1lXGZQOlxe XGZJZnVuY3Rpb24tbmFtZVxmUCBvciBcZkltYWNyb1xmUCwKKyAuSSBrZXluYW1lCitAQCAtMzU2 LDExICszNjAsMzAgQEAgVGhpcyBjb21tYW5kIGlzIGJvdW5kIHRvCisgaW4gZW1hY3MgbW9kZSBh bmQgdG8KKyAuQiAjCisgaW4gdmkgY29tbWFuZCBtb2RlLgorKy5UUAorKy5CIGNvbXBsZXRpb25c LWRpc3BsYXlcLXdpZHRoICgtMSkKKytUaGUgbnVtYmVyIG9mIHNjcmVlbiBjb2x1bW5zIHVzZWQg dG8gZGlzcGxheSBwb3NzaWJsZSBtYXRjaGVzCisrd2hlbiBwZXJmb3JtaW5nIGNvbXBsZXRpb24u CisrVGhlIHZhbHVlIGlzIGlnbm9yZWQgaWYgaXQgaXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0 aGFuIHRoZSB0ZXJtaW5hbAorK3NjcmVlbiB3aWR0aC4KKytBIHZhbHVlIG9mIDAgd2lsbCBjYXVz ZSBtYXRjaGVzIHRvIGJlIGRpc3BsYXllZCBvbmUgcGVyIGxpbmUuCisrVGhlIGRlZmF1bHQgdmFs dWUgaXMgLTEuCisgLlRQIAorIC5CIGNvbXBsZXRpb25cLWlnbm9yZVwtY2FzZSAoT2ZmKQorIElm IHNldCB0byBcZkJPblxmUCwgcmVhZGxpbmUgcGVyZm9ybXMgZmlsZW5hbWUgbWF0Y2hpbmcgYW5k IGNvbXBsZXRpb24KKyBpbiBhIGNhc2VcLWluc2Vuc2l0aXZlIGZhc2hpb24uCisgLlRQCisrLkIg Y29tcGxldGlvblwtbWFwXC1jYXNlIChPZmYpCisrSWYgc2V0IHRvIFxmQk9uXGZQLCBhbmQgXGZC Y29tcGxldGlvblwtaWdub3JlXC1jYXNlXGZQIGlzIGVuYWJsZWQsIHJlYWRsaW5lCisrdHJlYXRz IGh5cGhlbnMgKFxmSVwtXGZQKSBhbmQgdW5kZXJzY29yZXMgKFxmSV9cZlApIGFzIGVxdWl2YWxl bnQgd2hlbgorK3BlcmZvcm1pbmcgY2FzZVwtaW5zZW5zaXRpdmUgZmlsZW5hbWUgbWF0Y2hpbmcg YW5kIGNvbXBsZXRpb24uCisrLlRQCisrLkIgY29tcGxldGlvblwtcHJlZml4XC1kaXNwbGF5XC1s ZW5ndGggKDApCisrVGhlIGxlbmd0aCBpbiBjaGFyYWN0ZXJzIG9mIHRoZSBjb21tb24gcHJlZml4 IG9mIGEgbGlzdCBvZiBwb3NzaWJsZQorK2NvbXBsZXRpb25zIHRoYXQgaXMgZGlzcGxheWVkIHdp dGhvdXQgbW9kaWZpY2F0aW9uLiAgV2hlbiBzZXQgdG8gYQorK3ZhbHVlIGdyZWF0ZXIgdGhhbiB6 ZXJvLCBjb21tb24gcHJlZml4ZXMgbG9uZ2VyIHRoYW4gdGhpcyB2YWx1ZSBhcmUKKytyZXBsYWNl ZCB3aXRoIGFuIGVsbGlwc2lzIHdoZW4gZGlzcGxheWluZyBwb3NzaWJsZSBjb21wbGV0aW9ucy4K KysuVFAKKyAuQiBjb21wbGV0aW9uXC1xdWVyeVwtaXRlbXMgKDEwMCkKKyBUaGlzIGRldGVybWlu ZXMgd2hlbiB0aGUgdXNlciBpcyBxdWVyaWVkIGFib3V0IHZpZXdpbmcKKyB0aGUgbnVtYmVyIG9m IHBvc3NpYmxlIGNvbXBsZXRpb25zCitAQCAtMzg0LDI3ICs0MDcsNDEgQEAgbWFwcGVkIHRvIFxm QnNlbGYtaW5zZXJ0XGZQLgorIC5UUAorIC5CIGVkaXRpbmdcLW1vZGUgKGVtYWNzKQorIENvbnRy b2xzIHdoZXRoZXIgcmVhZGxpbmUgYmVnaW5zIHdpdGggYSBzZXQgb2Yga2V5IGJpbmRpbmdzIHNp bWlsYXIKKy10byBlbWFjcyBvciB2aS4KKyt0byBcZklFbWFjc1xmUCBvciBcZkl2aVxmUC4KKyAu QiBlZGl0aW5nXC1tb2RlCisgY2FuIGJlIHNldCB0byBlaXRoZXIKKyAuQiBlbWFjcworIG9yCisg LkJSIHZpIC4KKyAuVFAKKysuQiBlY2hvXC1jb250cm9sXC1jaGFyYWN0ZXJzIChPbikKKytXaGVu IHNldCB0byBcZkJPblxmUCwgb24gb3BlcmF0aW5nIHN5c3RlbXMgdGhhdCBpbmRpY2F0ZSB0aGV5 IHN1cHBvcnQgaXQsCisrcmVhZGxpbmUgZWNob2VzIGEgY2hhcmFjdGVyIGNvcnJlc3BvbmRpbmcg dG8gYSBzaWduYWwgZ2VuZXJhdGVkIGZyb20gdGhlCisra2V5Ym9hcmQuCisrLlRQCisgLkIgZW5h YmxlXC1rZXlwYWQgKE9mZikKKyBXaGVuIHNldCB0byBcZkJPblxmUCwgcmVhZGxpbmUgd2lsbCB0 cnkgdG8gZW5hYmxlIHRoZSBhcHBsaWNhdGlvbgorIGtleXBhZCB3aGVuIGl0IGlzIGNhbGxlZC4g IFNvbWUgc3lzdGVtcyBuZWVkIHRoaXMgdG8gZW5hYmxlIHRoZQorIGFycm93IGtleXMuCisgLlRQ CisrLkIgZW5hYmxlXC1tZXRhXC1rZXkgKE9uKQorK1doZW4gc2V0IHRvIFxmQk9uXGZQLCByZWFk bGluZSB3aWxsIHRyeSB0byBlbmFibGUgYW55IG1ldGEgbW9kaWZpZXIKKytrZXkgdGhlIHRlcm1p bmFsIGNsYWltcyB0byBzdXBwb3J0IHdoZW4gaXQgaXMgY2FsbGVkLiAgT24gbWFueSB0ZXJtaW5h bHMsCisrdGhlIG1ldGEga2V5IGlzIHVzZWQgdG8gc2VuZCBlaWdodC1iaXQgY2hhcmFjdGVycy4K KysuVFAKKyAuQiBleHBhbmRcLXRpbGRlIChPZmYpCistSWYgc2V0IHRvIFxmQm9uXGZQLCB0aWxk ZSBleHBhbnNpb24gaXMgcGVyZm9ybWVkIHdoZW4gcmVhZGxpbmUKKytJZiBzZXQgdG8gXGZCT25c ZlAsIHRpbGRlIGV4cGFuc2lvbiBpcyBwZXJmb3JtZWQgd2hlbiByZWFkbGluZQorIGF0dGVtcHRz IHdvcmQgY29tcGxldGlvbi4KKyAuVFAKKyAuQiBoaXN0b3J5XC1wcmVzZXJ2ZVwtcG9pbnQgKE9m ZikKKy1JZiBzZXQgdG8gXGZCb25cZlAsIHRoZSBoaXN0b3J5IGNvZGUgYXR0ZW1wdHMgdG8gcGxh Y2UgcG9pbnQgYXQgdGhlIAorK0lmIHNldCB0byBcZkJPblxmUCwgdGhlIGhpc3RvcnkgY29kZSBh dHRlbXB0cyB0byBwbGFjZSBwb2ludCBhdCB0aGUgCisgc2FtZSBsb2NhdGlvbiBvbiBlYWNoIGhp c3RvcnkgbGluZSByZXRyaWV2ZWQgd2l0aCBcZkJwcmV2aW91cy1oaXN0b3J5XGZQIAorIG9yIFxm Qm5leHQtaGlzdG9yeVxmUC4KKyAuVFAKKysuQiBoaXN0b3J5XC1zaXplICgwKQorK1NldCB0aGUg bWF4aW11bSBudW1iZXIgb2YgaGlzdG9yeSBlbnRyaWVzIHNhdmVkIGluIHRoZSBoaXN0b3J5IGxp c3QuICBJZgorK3NldCB0byB6ZXJvLCB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGhpc3Rv cnkgbGlzdCBpcyBub3QgbGltaXRlZC4KKysuVFAKKyAuQiBob3Jpem9udGFsXC1zY3JvbGxcLW1v ZGUgKE9mZikKKyBXaGVuIHNldCB0byBcZkJPblxmUCwgbWFrZXMgcmVhZGxpbmUgdXNlIGEgc2lu Z2xlIGxpbmUgZm9yIGRpc3BsYXksCisgc2Nyb2xsaW5nIHRoZSBpbnB1dCBob3Jpem9udGFsbHkg b24gYSBzaW5nbGUgc2NyZWVuIGxpbmUgd2hlbiBpdAorQEAgLTQ1MSw5ICs0ODgsMTUgQEAgaGF2 ZSBhIHNsYXNoIGFwcGVuZGVkIChzdWJqZWN0IHRvIHRoZSB2YWx1ZSBvZgorIC5CIG1hdGNoXC1o aWRkZW5cLWZpbGVzIChPbikKKyBUaGlzIHZhcmlhYmxlLCB3aGVuIHNldCB0byBcZkJPblxmUCwg Y2F1c2VzIHJlYWRsaW5lIHRvIG1hdGNoIGZpbGVzIHdob3NlIAorIG5hbWVzIGJlZ2luIHdpdGgg YSBgLicgKGhpZGRlbiBmaWxlcykgd2hlbiBwZXJmb3JtaW5nIGZpbGVuYW1lICAgICAKKy1jb21w bGV0aW9uLCB1bmxlc3MgdGhlIGxlYWRpbmcgYC4nIGlzICAgICAKKytjb21wbGV0aW9uLgorK0lm IHNldCB0byBcZkJPZmZcZlAsIHRoZSBsZWFkaW5nIGAuJyBtdXN0IGJlCisgc3VwcGxpZWQgYnkg dGhlIHVzZXIgaW4gdGhlIGZpbGVuYW1lIHRvIGJlIGNvbXBsZXRlZC4KKyAuVFAKKysuQiBtZW51 XC1jb21wbGV0ZVwtZGlzcGxheVwtcHJlZml4IChPZmYpCisrSWYgc2V0IHRvIFxmQk9uXGZQLCBt ZW51IGNvbXBsZXRpb24gZGlzcGxheXMgdGhlIGNvbW1vbiBwcmVmaXggb2YgdGhlCisrbGlzdCBv ZiBwb3NzaWJsZSBjb21wbGV0aW9ucyAod2hpY2ggbWF5IGJlIGVtcHR5KSBiZWZvcmUgY3ljbGlu ZyB0aHJvdWdoCisrdGhlIGxpc3QuCisrLlRQCisgLkIgb3V0cHV0XC1tZXRhIChPZmYpCisgSWYg c2V0IHRvIFxmQk9uXGZQLCByZWFkbGluZSB3aWxsIGRpc3BsYXkgY2hhcmFjdGVycyB3aXRoIHRo ZQorIGVpZ2h0aCBiaXQgc2V0IGRpcmVjdGx5IHJhdGhlciB0aGFuIGFzIGEgbWV0YS1wcmVmaXhl ZCBlc2NhcGUKK0BAIC00NjcsMTAgKzUxMCwxNiBAQCB0byBkaXNwbGF5IGEgc2NyZWVuZnVsIG9m IHBvc3NpYmxlIGNvbXBsZXRpb25zIGF0IGEgdGltZS4KKyBJZiBzZXQgdG8gXGZCT25cZlAsIHJl YWRsaW5lIHdpbGwgZGlzcGxheSBjb21wbGV0aW9ucyB3aXRoIG1hdGNoZXMKKyBzb3J0ZWQgaG9y aXpvbnRhbGx5IGluIGFscGhhYmV0aWNhbCBvcmRlciwgcmF0aGVyIHRoYW4gZG93biB0aGUgc2Ny ZWVuLgorIC5UUAorKy5CIHJldmVydFwtYWxsXC1hdFwtbmV3bGluZSAoT2ZmKQorK0lmIHNldCB0 byBcZkJPblxmUCwgcmVhZGxpbmUgd2lsbCB1bmRvIGFsbCBjaGFuZ2VzIHRvIGhpc3RvcnkgbGlu ZXMKKytiZWZvcmUgcmV0dXJuaW5nIHdoZW4gXGZCYWNjZXB0XC1saW5lXGZQIGlzIGV4ZWN1dGVk LiAgQnkgZGVmYXVsdCwKKytoaXN0b3J5IGxpbmVzIG1heSBiZSBtb2RpZmllZCBhbmQgcmV0YWlu IGluZGl2aWR1YWwgdW5kbyBsaXN0cyBhY3Jvc3MKKytjYWxscyB0byBcZkJyZWFkbGluZVxmUC4K KysuVFAKKyAuQiBzaG93XC1hbGxcLWlmXC1hbWJpZ3VvdXMgKE9mZikKKyBUaGlzIGFsdGVycyB0 aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgY29tcGxldGlvbiBmdW5jdGlvbnMuICBJZgorIHNl dCB0bworLS5CUiBvbiAsCisrLkJSIE9uICwKKyB3b3JkcyB3aGljaCBoYXZlIG1vcmUgdGhhbiBv bmUgcG9zc2libGUgY29tcGxldGlvbiBjYXVzZSB0aGUKKyBtYXRjaGVzIHRvIGJlIGxpc3RlZCBp bW1lZGlhdGVseSBpbnN0ZWFkIG9mIHJpbmdpbmcgdGhlIGJlbGwuCisgLlRQCitAQCAtNDc4LDEy ICs1MjcsMjAgQEAgbWF0Y2hlcyB0byBiZSBsaXN0ZWQgaW1tZWRpYXRlbHkgaW5zdGVhZCBvZiBy aW5naW5nIHRoZSBiZWxsLgorIFRoaXMgYWx0ZXJzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRo ZSBjb21wbGV0aW9uIGZ1bmN0aW9ucyBpbgorIGEgZmFzaGlvbiBzaW1pbGFyIHRvIFxmQnNob3dc LWFsbFwtaWZcLWFtYmlndW91c1xmUC4KKyBJZiBzZXQgdG8KKy0uQlIgb24gLCAKKysuQlIgT24g LCAKKyB3b3JkcyB3aGljaCBoYXZlIG1vcmUgdGhhbiBvbmUgcG9zc2libGUgY29tcGxldGlvbiB3 aXRob3V0IGFueQorIHBvc3NpYmxlIHBhcnRpYWwgY29tcGxldGlvbiAodGhlIHBvc3NpYmxlIGNv bXBsZXRpb25zIGRvbid0IHNoYXJlIAorIGEgY29tbW9uIHByZWZpeCkgY2F1c2UgdGhlIG1hdGNo ZXMgdG8gYmUgbGlzdGVkIGltbWVkaWF0ZWx5IGluc3RlYWQKKyBvZiByaW5naW5nIHRoZSBiZWxs LgorIC5UUAorKy5CIHNraXBcLWNvbXBsZXRlZFwtdGV4dCAoT2ZmKQorK0lmIHNldCB0byBcZkJP blxmUCwgdGhpcyBhbHRlcnMgdGhlIGRlZmF1bHQgY29tcGxldGlvbiBiZWhhdmlvciB3aGVuCisr aW5zZXJ0aW5nIGEgc2luZ2xlIG1hdGNoIGludG8gdGhlIGxpbmUuICBJdCdzIG9ubHkgYWN0aXZl IHdoZW4KKytwZXJmb3JtaW5nIGNvbXBsZXRpb24gaW4gdGhlIG1pZGRsZSBvZiBhIHdvcmQuICBJ ZiBlbmFibGVkLCByZWFkbGluZQorK2RvZXMgbm90IGluc2VydCBjaGFyYWN0ZXJzIGZyb20gdGhl IGNvbXBsZXRpb24gdGhhdCBtYXRjaCBjaGFyYWN0ZXJzCisrYWZ0ZXIgcG9pbnQgaW4gdGhlIHdv cmQgYmVpbmcgY29tcGxldGVkLCBzbyBwb3J0aW9ucyBvZiB0aGUgd29yZAorK2ZvbGxvd2luZyB0 aGUgY3Vyc29yIGFyZSBub3QgZHVwbGljYXRlZC4KKysuVFAKKyAuQiB2aXNpYmxlXC1zdGF0cyAo T2ZmKQorIElmIHNldCB0byBcZkJPblxmUCwgYSBjaGFyYWN0ZXIgZGVub3RpbmcgYSBmaWxlJ3Mg dHlwZSBhcyByZXBvcnRlZCAgCisgYnkgXGZJc3RhdFxmUCgyKSBpcyBhcHBlbmRlZCB0byB0aGUg ZmlsZW5hbWUgd2hlbiBsaXN0aW5nIHBvc3NpYmxlCitAQCAtNTMwLDcgKzU4Nyw3IEBAIGxpYnJh cnkgc2V0cyB0aGUgXGZJYXBwbGljYXRpb24gbmFtZVxmUCwgYW5kIGFuIGluaXRpYWxpemF0aW9u CisgZmlsZSBjYW4gdGVzdCBmb3IgYSBwYXJ0aWN1bGFyIHZhbHVlLgorIFRoaXMgY291bGQgYmUg dXNlZCB0byBiaW5kIGtleSBzZXF1ZW5jZXMgdG8gZnVuY3Rpb25zIHVzZWZ1bCBmb3IKKyBhIHNw ZWNpZmljIHByb2dyYW0uICBGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBhZGRz IGEKKy1rZXkgc2VxdWVuY2UgdGhhdCBxdW90ZXMgdGhlIGN1cnJlbnQgb3IgcHJldmlvdXMgd29y ZCBpbiBCYXNoOgorK2tleSBzZXF1ZW5jZSB0aGF0IHF1b3RlcyB0aGUgY3VycmVudCBvciBwcmV2 aW91cyB3b3JkIGluIFxmQmJhc2hcZlA6CisgLnNwIDEKKyAuUlMKKyAubmYKK0BAIC03MDYsMTAg Kzc2MywxNCBAQCBhcyBpZiB0aGUgIiFcZkluXGZQIiBoaXN0b3J5IGV4cGFuc2lvbiBoYWQgYmVl biBzcGVjaWZpZWQuCisgLkIKKyB5YW5rXC1sYXN0XC1hcmcgKE1cLS5cXiwgTVwtX1xeKQorIElu c2VydCB0aGUgbGFzdCBhcmd1bWVudCB0byB0aGUgcHJldmlvdXMgY29tbWFuZCAodGhlIGxhc3Qg d29yZCBvZgorLXRoZSBwcmV2aW91cyBoaXN0b3J5IGVudHJ5KS4gIFdpdGggYW4gYXJndW1lbnQs CistYmVoYXZlIGV4YWN0bHkgbGlrZSBcZkJ5YW5rXC1udGhcLWFyZ1xmUC4KKyt0aGUgcHJldmlv dXMgaGlzdG9yeSBlbnRyeSkuCisrV2l0aCBhIG51bWVyaWMgYXJndW1lbnQsIGJlaGF2ZSBleGFj dGx5IGxpa2UgXGZCeWFua1wtbnRoXC1hcmdcZlAuCisgU3VjY2Vzc2l2ZSBjYWxscyB0byBcZkJ5 YW5rXC1sYXN0XC1hcmdcZlAgbW92ZSBiYWNrIHRocm91Z2ggdGhlIGhpc3RvcnkKKy1saXN0LCBp bnNlcnRpbmcgdGhlIGxhc3QgYXJndW1lbnQgb2YgZWFjaCBsaW5lIGluIHR1cm4uCisrbGlzdCwg aW5zZXJ0aW5nIHRoZSBsYXN0IHdvcmQgKG9yIHRoZSB3b3JkIHNwZWNpZmllZCBieSB0aGUgYXJn dW1lbnQgdG8KKyt0aGUgZmlyc3QgY2FsbCkgb2YgZWFjaCBsaW5lIGluIHR1cm4uCisrQW55IG51 bWVyaWMgYXJndW1lbnQgc3VwcGxpZWQgdG8gdGhlc2Ugc3VjY2Vzc2l2ZSBjYWxscyBkZXRlcm1p bmVzCisrdGhlIGRpcmVjdGlvbiB0byBtb3ZlIHRocm91Z2ggdGhlIGhpc3RvcnkuICBBIG5lZ2F0 aXZlIGFyZ3VtZW50IHN3aXRjaGVzCisrdGhlIGRpcmVjdGlvbiB0aHJvdWdoIHRoZSBoaXN0b3J5 IChiYWNrIG9yIGZvcndhcmQpLgorIFRoZSBoaXN0b3J5IGV4cGFuc2lvbiBmYWNpbGl0aWVzIGFy ZSB1c2VkIHRvIGV4dHJhY3QgdGhlIGxhc3QgYXJndW1lbnQsCisgYXMgaWYgdGhlICIhJCIgaGlz dG9yeSBleHBhbnNpb24gaGFkIGJlZW4gc3BlY2lmaWVkLgorIC5QRAorQEAgLTg4NCw2ICs5NDUs MTIgQEAgb25seSBhdHRlbXB0cyBmaWxlbmFtZSBjb21wbGV0aW9uIHVuZGVyIGNlcnRhaW4gY2ly Y3Vtc3RhbmNlcy4KKyAuVFAKKyAuQiBwb3NzaWJsZVwtY29tcGxldGlvbnMgKE1cLT8pCisgTGlz dCB0aGUgcG9zc2libGUgY29tcGxldGlvbnMgb2YgdGhlIHRleHQgYmVmb3JlIHBvaW50LgorK1do ZW4gZGlzcGxheWluZyBjb21wbGV0aW9ucywgcmVhZGxpbmUgc2V0cyB0aGUgbnVtYmVyIG9mIGNv bHVtbnMgdXNlZAorK2ZvciBkaXNwbGF5IHRvIHRoZSB2YWx1ZSBvZiBcZkJjb21wbGV0aW9uLWRp c3BsYXktd2lkdGhcZlAsIHRoZSB2YWx1ZSBvZgorK3RoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQor Ky5TTQorKy5CUiBDT0xVTU5TICwKKytvciB0aGUgc2NyZWVuIHdpZHRoLCBpbiB0aGF0IG9yZGVy LgorIC5UUAorIC5CIGluc2VydFwtY29tcGxldGlvbnMgKE1cLSopCisgSW5zZXJ0IGFsbCBjb21w bGV0aW9ucyBvZiB0aGUgdGV4dCBiZWZvcmUgcG9pbnQKK0BAIC05MDQsNiArOTcxLDExIEBAIHRo cm91Z2ggdGhlIGxpc3QuCisgVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIHRvIGJlIGJvdW5kIHRv IFxmQlRBQlxmUCwgYnV0IGlzIHVuYm91bmQKKyBieSBkZWZhdWx0LgorIC5UUAorKy5CIG1lbnVc LWNvbXBsZXRlXC1iYWNrd2FyZAorK0lkZW50aWNhbCB0byBcZkJtZW51XC1jb21wbGV0ZVxmUCwg YnV0IG1vdmVzIGJhY2t3YXJkIHRocm91Z2ggdGhlIGxpc3QKKytvZiBwb3NzaWJsZSBjb21wbGV0 aW9ucywgYXMgaWYgXGZCbWVudVwtY29tcGxldGVcZlAgaGFkIGJlZW4gZ2l2ZW4gYQorK25lZ2F0 aXZlIGFyZ3VtZW50LiAgVGhpcyBjb21tYW5kIGlzIHVuYm91bmQgYnkgZGVmYXVsdC4KKysuVFAK KyAuQiBkZWxldGVcLWNoYXJcLW9yXC1saXN0CisgRGVsZXRlcyB0aGUgY2hhcmFjdGVyIHVuZGVy IHRoZSBjdXJzb3IgaWYgbm90IGF0IHRoZSBiZWdpbm5pbmcgb3IKKyBlbmQgb2YgdGhlIGxpbmUg KGxpa2UgXGZCZGVsZXRlLWNoYXJcZlApLgorQEAgLTk3Nyw2ICsxMDQ5LDE1IEBAIGNoYXJhY3Rl ci4gIEEgbmVnYXRpdmUgY291bnQgc2VhcmNoZXMgZm9yIHByZXZpb3VzIG9jY3VycmVuY2VzLgor IEEgY2hhcmFjdGVyIGlzIHJlYWQgYW5kIHBvaW50IGlzIG1vdmVkIHRvIHRoZSBwcmV2aW91cyBv Y2N1cnJlbmNlIG9mIHRoYXQKKyBjaGFyYWN0ZXIuICBBIG5lZ2F0aXZlIGNvdW50IHNlYXJjaGVz IGZvciBzdWJzZXF1ZW50IG9jY3VycmVuY2VzLgorIC5UUAorKy5CIHNraXBcLWNzaVwtc2VxdWVu Y2UKKytSZWFkIGVub3VnaCBjaGFyYWN0ZXJzIHRvIGNvbnN1bWUgYSBtdWx0aS1rZXkgc2VxdWVu Y2Ugc3VjaCBhcyB0aG9zZQorK2RlZmluZWQgZm9yIGtleXMgbGlrZSBIb21lIGFuZCBFbmQuICBT dWNoIHNlcXVlbmNlcyBiZWdpbiB3aXRoIGEKKytDb250cm9sIFNlcXVlbmNlIEluZGljYXRvciAo Q1NJKSwgdXN1YWxseSBFU0NcLVsuICBJZiB0aGlzIHNlcXVlbmNlIGlzCisrYm91bmQgdG8gIlxl WyIsIGtleXMgcHJvZHVjaW5nIHN1Y2ggc2VxdWVuY2VzIHdpbGwgaGF2ZSBubyBlZmZlY3QKKyt1 bmxlc3MgZXhwbGljaXRseSBib3VuZCB0byBhIHJlYWRsaW5lIGNvbW1hbmQsIGluc3RlYWQgb2Yg aW5zZXJ0aW5nCisrc3RyYXkgY2hhcmFjdGVycyBpbnRvIHRoZSBlZGl0aW5nIGJ1ZmZlci4gIFRo aXMgaXMgdW5ib3VuZCBieSBkZWZhdWx0LAorK2J1dCB1c3VhbGx5IGJvdW5kIHRvIEVTQ1wtWy4K KysuVFAKKyAuQiBpbnNlcnRcLWNvbW1lbnQgKE1cLSMpCisgV2l0aG91dCBhIG51bWVyaWMgYXJn dW1lbnQsIHRoZSB2YWx1ZSBvZiB0aGUgcmVhZGxpbmUKKyAuQiBjb21tZW50XC1iZWdpbgorLS0t IGEvcmVhZGxpbmUvZG9jL3JsbWFuLnRleGkKKysrKyBiL3JlYWRsaW5lL2RvYy9ybG1hbi50ZXhp CitAQCAtNCw3ICs0LDYgQEAKKyBAc2V0dGl0bGUgR05VIFJlYWRsaW5lIExpYnJhcnkKKyBAY29t bWVudCAlKiplbmQgb2YgaGVhZGVyIChUaGlzIGlzIGZvciBydW5uaW5nIFRleGluZm8gb24gYSBy ZWdpb24uKQorIEBzeW5pbmRleCB2ciBmbgorLUBzZXRjaGFwdGVybmV3cGFnZSBvZGQKKyAKKyBA aW5jbHVkZSB2ZXJzaW9uLnRleGkKKyAKK0BAIC0xNCw3ICsxMyw3IEBAIFRoaXMgbWFudWFsIGRl c2NyaWJlcyB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkKKyBjb25zaXN0ZW5jeSBvZiB1c2VyIGlu dGVyZmFjZSBhY3Jvc3MgZGlzY3JldGUgcHJvZ3JhbXMgd2hpY2ggcHJvdmlkZQorIGEgY29tbWFu ZCBsaW5lIGludGVyZmFjZS4KKyAKKy1Db3B5cmlnaHQgQGNvcHlyaWdodHt9IDE5ODgtMjAwNCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKytDb3B5cmlnaHQgQGNvcHlyaWdodHt9IDE5 ODgtLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCisgUGVybWlzc2lvbiBp cyBncmFudGVkIHRvIG1ha2UgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mCisgdGhp cyBtYW51YWwgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv biBub3RpY2UKK0BAIC0yMiwxNSArMjEsMTYgQEAgYXJlIHByZXNlcnZlZCBvbiBhbGwgY29waWVz LgorIAorIEBxdW90YXRpb24KKyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJp YnV0ZSBhbmQvb3IgbW9kaWZ5IHRoaXMgZG9jdW1lbnQKKy11bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAxLjEgb3IKKyt1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZSwgVmVyc2lvbiAx LjMgb3IKKyBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgd2l0aCBubworLUludmFyaWFudCBTZWN0aW9ucywgd2l0aCB0aGUgRnJvbnQt Q292ZXIgdGV4dHMgYmVpbmcgYGBBIEdOVSBNYW51YWwsJycKKytJbnZhcmlhbnQgU2VjdGlvbnMs IHdpdGggdGhlIEZyb250LUNvdmVyIHRleHRzIGJlaW5nIGBgQSBHTlUgTWFudWFsJycsCisgYW5k IHdpdGggdGhlIEJhY2stQ292ZXIgVGV4dHMgYXMgaW4gKGEpIGJlbG93LiAgQSBjb3B5IG9mIHRo ZSBsaWNlbnNlIGlzCistaW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJl ZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UuJycKKytpbmNsdWRlZCBpbiB0aGUgc2VjdGlvbiBlbnRp dGxlZCBgYEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZScnLgorKworKyhhKSBUaGUgRlNG J3MgQmFjay1Db3ZlciBUZXh0IGlzOiBZb3UgYXJlIGZyZWUgdG8gY29weSBhbmQgbW9kaWZ5Cisr dGhpcyBHTlUgbWFudWFsLiAgQnV5aW5nIGNvcGllcyBmcm9tIEdOVSBQcmVzcyBzdXBwb3J0cyB0 aGUgRlNGIGluCisrZGV2ZWxvcGluZyBHTlUgYW5kIHByb21vdGluZyBzb2Z0d2FyZSBmcmVlZG9t LicnCisgCistKGEpIFRoZSBGU0YncyBCYWNrLUNvdmVyIFRleHQgaXM6IGBgWW91IGhhdmUgZnJl ZWRvbSB0byBjb3B5IGFuZCBtb2RpZnkKKy10aGlzIEdOVSBNYW51YWwsIGxpa2UgR05VIHNvZnR3 YXJlLiAgQ29waWVzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQorLVNvZnR3YXJlIEZvdW5kYXRpb24g cmFpc2UgZnVuZHMgZm9yIEdOVSBkZXZlbG9wbWVudC4nJworIEBlbmQgcXVvdGF0aW9uCisgQGVu ZCBjb3B5aW5nCisgCitAQCAtNzEsNyArNzEsNyBAQCBwcm92aWRlIGEgY29tbWFuZCBsaW5lIGlu dGVyZmFjZS4KKyBAbWVudQorICogQ29tbWFuZCBMaW5lIEVkaXRpbmc6OgkgICBHTlUgUmVhZGxp bmUgVXNlcidzIE1hbnVhbC4KKyAqIFByb2dyYW1taW5nIHdpdGggR05VIFJlYWRsaW5lOjogIEdO VSBSZWFkbGluZSBQcm9ncmFtbWVyJ3MgTWFudWFsLgorLSogQ29weWluZyBUaGlzIE1hbnVhbDo6 CQkgICBDb3B5aW5nIHRoaXMgbWFudWFsLgorKyogR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNl bnNlOjoJTGljZW5zZSBmb3IgY29weWluZyB0aGlzIG1hbnVhbC4KKyAqIENvbmNlcHQgSW5kZXg6 OgkJICAgSW5kZXggb2YgY29uY2VwdHMgZGVzY3JpYmVkIGluIHRoaXMgbWFudWFsLgorICogRnVu Y3Rpb24gYW5kIFZhcmlhYmxlIEluZGV4OjoJICAgSW5kZXggb2YgZXh0ZXJuYWxseSB2aXNpYmxl IGZ1bmN0aW9ucworIAkJCQkgICBhbmQgdmFyaWFibGVzLgorQEAgLTgxLDEyICs4MSw4IEBAIHBy b3ZpZGUgYSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLgorIEBpbmNsdWRlIHJsdXNlci50ZXhpCisg QGluY2x1ZGUgcmx0ZWNoLnRleGkKKyAKKy1Abm9kZSBDb3B5aW5nIFRoaXMgTWFudWFsCistQGFw cGVuZGl4IENvcHlpbmcgVGhpcyBNYW51YWwKKy0KKy1AbWVudQorLSogR05VIEZyZWUgRG9jdW1l bnRhdGlvbiBMaWNlbnNlOjoJTGljZW5zZSBmb3IgY29weWluZyB0aGlzIG1hbnVhbC4KKy1AZW5k IG1lbnUKKytAbm9kZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2UKKytAYXBwZW5kaXgg R05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCisgCisgQGluY2x1ZGUgZmRsLnRleGkKKyAK Ky0tLSBhL3JlYWRsaW5lL2RvYy9ybHRlY2gudGV4aQorKysrIGIvcmVhZGxpbmUvZG9jL3JsdGVj aC50ZXhpCitAQCAtMSwxNCArMSwxMyBAQAorIEBjb21tZW50ICUqKnN0YXJ0IG9mIGhlYWRlciAo VGhpcyBpcyBmb3IgcnVubmluZyBUZXhpbmZvIG9uIGEgcmVnaW9uLikKKyBAc2V0ZmlsZW5hbWUg cmx0ZWNoLmluZm8KKyBAY29tbWVudCAlKiplbmQgb2YgaGVhZGVyIChUaGlzIGlzIGZvciBydW5u aW5nIFRleGluZm8gb24gYSByZWdpb24uKQorLUBzZXRjaGFwdGVybmV3cGFnZSBvZGQKKyAKKyBA aWZpbmZvCisgVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5 LCBhIHV0aWxpdHkgZm9yIGFpZGluZworIGluIHRoZSBjb25zaXN0ZW5jeSBvZiB1c2VyIGludGVy ZmFjZSBhY3Jvc3MgZGlzY3JldGUgcHJvZ3JhbXMgdGhhdCBuZWVkCisgdG8gcHJvdmlkZSBhIGNv bW1hbmQgbGluZSBpbnRlcmZhY2UuCisgCistQ29weXJpZ2h0IChDKSAxOTg4LTIwMDUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrQ29weXJpZ2h0IChDKSAxOTg4LS0yMDExIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBt YWtlIGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZgorIHRoaXMgbWFudWFsIHByb3Zp ZGVkIHRoZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlCitAQCAt MzUxLDYgKzM1MCwxMiBAQCBUaGUgQGNvZGV7cmxfc2V0X3Byb21wdCgpfSBmdW5jdGlvbiAoQHB4 cmVme1JlZGlzcGxheX0pIG1heQorIGJlIHVzZWQgdG8gbW9kaWZ5IHRoZSBwcm9tcHQgc3RyaW5n IGFmdGVyIGNhbGxpbmcgQGNvZGV7cmVhZGxpbmUoKX0uCisgQGVuZCBkZWZ0eXBldmFyCisgCisr QGRlZnR5cGV2YXIge2NoYXIgKn0gcmxfZGlzcGxheV9wcm9tcHQKKytUaGUgc3RyaW5nIGRpc3Bs YXllZCBhcyB0aGUgcHJvbXB0LiAgVGhpcyBpcyB1c3VhbGx5IGlkZW50aWNhbCB0bworK0B2YXJ7 cmxfcHJvbXB0fSwgYnV0IG1heSBiZSBjaGFuZ2VkIHRlbXBvcmFyaWx5IGJ5IGZ1bmN0aW9ucyB0 aGF0CisrdXNlIHRoZSBwcm9tcHQgc3RyaW5nIGFzIGEgbWVzc2FnZSBhcmVhLCBzdWNoIGFzIGlu Y3JlbWVudGFsIHNlYXJjaC4KKytAZW5kIGRlZnR5cGV2YXIKKysKKyBAZGVmdHlwZXZhciBpbnQg cmxfYWxyZWFkeV9wcm9tcHRlZAorIElmIGFuIGFwcGxpY2F0aW9uIHdpc2hlcyB0byBkaXNwbGF5 IHRoZSBwcm9tcHQgaXRzZWxmLCByYXRoZXIgdGhhbiBoYXZlCisgUmVhZGxpbmUgZG8gaXQgdGhl IGZpcnN0IHRpbWUgQGNvZGV7cmVhZGxpbmUoKX0gaXMgY2FsbGVkLCBpdCBzaG91bGQgc2V0CitA QCAtNTE4LDYgKzUyMywyMCBAQCBSZWFkbGluZSBpcyBwZXJmb3JtaW5nIHdvcmQgY29tcGxldGlv bi4KKyBSZWFkbGluZSBpcyBjdXJyZW50bHkgZXhlY3V0aW5nIHRoZSByZWFkbGluZSBzaWduYWwg aGFuZGxlci4KKyBAaXRlbSBSTF9TVEFURV9VTkRPSU5HCisgUmVhZGxpbmUgaXMgcGVyZm9ybWlu ZyBhbiB1bmRvLgorK0BpdGVtIFJMX1NUQVRFX0lOUFVUUEVORElORworK1JlYWRsaW5lIGhhcyBp bnB1dCBwZW5kaW5nIGR1ZSB0byBhIGNhbGwgdG8gQGNvZGV7cmxfZXhlY3V0ZV9uZXh0KCl9Lgor K0BpdGVtIFJMX1NUQVRFX1RUWUNTQVZFRAorK1JlYWRsaW5lIGhhcyBzYXZlZCB0aGUgdmFsdWVz IG9mIHRoZSB0ZXJtaW5hbCdzIHNwZWNpYWwgY2hhcmFjdGVycy4KKytAaXRlbSBSTF9TVEFURV9D QUxMQkFDSworK1JlYWRsaW5lIGlzIGN1cnJlbnRseSB1c2luZyB0aGUgYWx0ZXJuYXRlIChjYWxs YmFjaykgaW50ZXJmYWNlCisrKEBweHJlZntBbHRlcm5hdGUgSW50ZXJmYWNlfSkuCisrQGl0ZW0g UkxfU1RBVEVfVklNT1RJT04KKytSZWFkbGluZSBpcyByZWFkaW5nIHRoZSBhcmd1bWVudCB0byBh IHZpLW1vZGUgIm1vdGlvbiIgY29tbWFuZC4KKytAaXRlbSBSTF9TVEFURV9NVUxUSUtFWQorK1Jl YWRsaW5lIGlzIHJlYWRpbmcgYSBtdWx0aXBsZS1rZXlzdHJva2UgY29tbWFuZC4KKytAaXRlbSBS TF9TVEFURV9WSUNNRE9OQ0UKKytSZWFkbGluZSBoYXMgZW50ZXJlZCB2aSBjb21tYW5kIChtb3Zl bWVudCkgbW9kZSBhdCBsZWFzdCBvbmUgdGltZSBkdXJpbmcKKyt0aGUgY3VycmVudCBjYWxsIHRv IEBjb2Rle3JlYWRsaW5lKCl9LgorIEBpdGVtIFJMX1NUQVRFX0RPTkUKKyBSZWFkbGluZSBoYXMg cmVhZCBhIGtleSBzZXF1ZW5jZSBib3VuZCB0byBAY29kZXthY2NlcHQtbGluZX0KKyBhbmQgaXMg YWJvdXQgdG8gcmV0dXJuIHRoZSBsaW5lIHRvIHRoZSBjYWxsZXIuCitAQCAtNjAzLDcgKzYyMiw3 IEBAIFJlYWRsaW5lIHdoaWNoIGtleW1hcCB0byB1c2UuCisgQGRlZnR5cGVmdW4gS2V5bWFwIHJs X21ha2VfYmFyZV9rZXltYXAgKHZvaWQpCisgUmV0dXJucyBhIG5ldywgZW1wdHkga2V5bWFwLiAg VGhlIHNwYWNlIGZvciB0aGUga2V5bWFwIGlzIGFsbG9jYXRlZCB3aXRoCisgQGNvZGV7bWFsbG9j KCl9OyB0aGUgY2FsbGVyIHNob3VsZCBmcmVlIGl0IGJ5IGNhbGxpbmcKKy1AY29kZXtybF9kaXNj YXJkX2tleW1hcCgpfSB3aGVuIGRvbmUuCisrQGNvZGV7cmxfZnJlZV9rZXltYXAoKX0gd2hlbiBk b25lLgorIEBlbmQgZGVmdHlwZWZ1bgorIAorIEBkZWZ0eXBlZnVuIEtleW1hcCBybF9jb3B5X2tl eW1hcCAoS2V5bWFwIG1hcCkKK0BAIC02MTcsNyArNjM2LDEzIEBAIHRoZSBNZXRhIGRpZ2l0cyBi b3VuZCB0byBwcm9kdWNlIG51bWVyaWMgYXJndW1lbnRzLgorIEBlbmQgZGVmdHlwZWZ1bgorIAor IEBkZWZ0eXBlZnVuIHZvaWQgcmxfZGlzY2FyZF9rZXltYXAgKEtleW1hcCBrZXltYXApCistRnJl ZSB0aGUgc3RvcmFnZSBhc3NvY2lhdGVkIHdpdGggQHZhcntrZXltYXB9LgorK0ZyZWUgdGhlIHN0 b3JhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBkYXRhIGluIEB2YXJ7a2V5bWFwfS4KKytUaGUgY2Fs bGVyIHNob3VsZCBmcmVlIEB2YXJ7a2V5bWFwfS4KKytAZW5kIGRlZnR5cGVmdW4KKysKKytAZGVm dHlwZWZ1biB2b2lkIHJsX2ZyZWVfa2V5bWFwIChLZXltYXAga2V5bWFwKQorK0ZyZWUgYWxsIHN0 b3JhZ2UgYXNzb2NpYXRlZCB3aXRoIEB2YXJ7a2V5bWFwfS4gIFRoaXMgY2FsbHMKKytAY29kZXty bF9kaXNjYXJkX2tleW1hcH0gdG8gZnJlZSBzdWJvcmRpbmRhdGUga2V5bWFwcyBhbmQgbWFjcm9z LgorIEBlbmQgZGVmdHlwZWZ1bgorIAorIFJlYWRsaW5lIGhhcyBzZXZlcmFsIGludGVybmFsIGtl eW1hcHMuICBUaGVzZSBmdW5jdGlvbnMgYWxsb3cgeW91IHRvCitAQCAtNzkzLDcgKzgxOCw4IEBA IFByaW50IHRoZSBuYW1lcyBvZiBhbGwgYmluZGFibGUgUmVhZGxpbmUgZnVuY3Rpb25zIHRvIEBj b2Rle3JsX291dHN0cmVhbX0uCisgQGRlZnR5cGVmdW4ge2NvbnN0IGNoYXIgKip9IHJsX2Z1bm1h cF9uYW1lcyAodm9pZCkKKyBSZXR1cm4gYSBOVUxMIHRlcm1pbmF0ZWQgYXJyYXkgb2Yga25vd24g ZnVuY3Rpb24gbmFtZXMuICBUaGUgYXJyYXkgaXMKKyBzb3J0ZWQuICBUaGUgYXJyYXkgaXRzZWxm IGlzIGFsbG9jYXRlZCwgYnV0IG5vdCB0aGUgc3RyaW5ncyBpbnNpZGUuICBZb3UKKy1zaG91bGQg QGNvZGV7ZnJlZSgpfSB0aGUgYXJyYXkgd2hlbiB5b3UgYXJlIGRvbmUsIGJ1dCBub3QgdGhlIHBv aW50ZXJzLgorK3Nob3VsZCBmcmVlIHRoZSBhcnJheSwgYnV0IG5vdCB0aGUgcG9pbnRlcnMsIHVz aW5nIEBjb2Rle2ZyZWV9IG9yCisrQGNvZGV7cmxfZnJlZX0gd2hlbiB5b3UgYXJlIGRvbmUuCisg QGVuZCBkZWZ0eXBlZnVuCisgCisgQGRlZnR5cGVmdW4gaW50IHJsX2FkZF9mdW5tYXBfZW50cnkg KGNvbnN0IGNoYXIgKm5hbWUsIHJsX2NvbW1hbmRfZnVuY190ICpmdW5jdGlvbikKK0BAIC0xMDMz LDggKzEwNTksMTAgQEAgcGVuZGluZyBpbnB1dCBoYXMgbm90IGFscmVhZHkgYmVlbiByZWFkIHdp dGggQGNvZGV7cmxfcmVhZF9rZXkoKX0uCisgQGRlZnR5cGVmdW4gaW50IHJsX3NldF9rZXlib2Fy ZF9pbnB1dF90aW1lb3V0IChpbnQgdSkKKyBXaGlsZSB3YWl0aW5nIGZvciBrZXlib2FyZCBpbnB1 dCBpbiBAY29kZXtybF9yZWFkX2tleSgpfSwgUmVhZGxpbmUgd2lsbAorIHdhaXQgZm9yIEB2YXJ7 dX0gbWljcm9zZWNvbmRzIGZvciBpbnB1dCBiZWZvcmUgY2FsbGluZyBhbnkgZnVuY3Rpb24KKy1h c3NpZ25lZCB0byBAY29kZXtybF9ldmVudF9ob29rfS4gIFRoZSBkZWZhdWx0IHdhaXRpbmcgcGVy aW9kIGlzCistb25lLXRlbnRoIG9mIGEgc2Vjb25kLiAgUmV0dXJucyB0aGUgb2xkIHRpbWVvdXQg dmFsdWUuCisrYXNzaWduZWQgdG8gQGNvZGV7cmxfZXZlbnRfaG9va30uICBAdmFye3V9IG11c3Qg YmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsCisrdG8gemVybyAoYSB6ZXJvLWxlbmd0aCB0aW1lb3V0 IGlzIGVxdWl2YWxlbnQgdG8gYSBwb2xsKS4KKytUaGUgZGVmYXVsdCB3YWl0aW5nIHBlcmlvZCBp cyBvbmUtdGVudGggb2YgYSBzZWNvbmQuCisrUmV0dXJucyB0aGUgb2xkIHRpbWVvdXQgdmFsdWUu CisgQGVuZCBkZWZ0eXBlZnVuCisgCisgQG5vZGUgVGVybWluYWwgTWFuYWdlbWVudAorQEAgLTEw NzUsNiArMTEwMywyNiBAQCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyB1c2VkLgorIEBub2RlIFV0 aWxpdHkgRnVuY3Rpb25zCisgQHN1YnNlY3Rpb24gVXRpbGl0eSBGdW5jdGlvbnMKKyAKKytAZGVm dHlwZWZ1biBpbnQgcmxfc2F2ZV9zdGF0ZSAoc3RydWN0IHJlYWRsaW5lX3N0YXRlICpzcCkKKytT YXZlIGEgc25hcHNob3Qgb2YgUmVhZGxpbmUncyBpbnRlcm5hbCBzdGF0ZSB0byBAdmFye3NwfS4K KytUaGUgY29udGVudHMgb2YgdGhlIEB2YXJ7cmVhZGxpbmVfc3RhdGV9IHN0cnVjdHVyZSBhcmUg ZG9jdW1lbnRlZAorK2luIEBmaWxle3JlYWRsaW5lLmh9LgorK1RoZSBjYWxsZXIgaXMgcmVzcG9u c2libGUgZm9yIGFsbG9jYXRpbmcgdGhlIHN0cnVjdHVyZS4KKytAZW5kIGRlZnR5cGVmdW4KKysK KytAZGVmdHlwZWZ1biBpbnQgcmxfcmVzdG9yZV9zdGF0ZSAoc3RydWN0IHJlYWRsaW5lX3N0YXRl ICpzcCkKKytSZXN0b3JlIFJlYWRsaW5lJ3MgaW50ZXJuYWwgc3RhdGUgdG8gdGhhdCBzdG9yZWQg aW4gQHZhcntzcH0sIHdoaWNoIG11c3QKKytoYXZlIGJlZW4gc2F2ZWQgYnkgYSBjYWxsIHRvIEBj b2Rle3JsX3NhdmVfc3RhdGV9LgorK1RoZSBjb250ZW50cyBvZiB0aGUgQHZhcntyZWFkbGluZV9z dGF0ZX0gc3RydWN0dXJlIGFyZSBkb2N1bWVudGVkCisraW4gQGZpbGV7cmVhZGxpbmUuaH0uCisr VGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZWluZyB0aGUgc3RydWN0dXJlLgorK0Bl bmQgZGVmdHlwZWZ1bgorKworK0BkZWZ0eXBlZnVuIHZvaWQgcmxfZnJlZSAodm9pZCAqbWVtKQor K0RlYWxsb2NhdGUgdGhlIG1lbW9yeSBwb2ludGVkIHRvIGJ5IEB2YXJ7bWVtfS4gIEB2YXJ7bWVt fSBtdXN0IGhhdmUgYmVlbgorK2FsbG9jYXRlZCBieSBAY29kZXttYWxsb2N9LgorK0BlbmQgZGVm dHlwZWZ1bgorKworIEBkZWZ0eXBlZnVuIHZvaWQgcmxfcmVwbGFjZV9saW5lIChjb25zdCBjaGFy ICp0ZXh0LCBpbnQgY2xlYXJfdW5kbykKKyBSZXBsYWNlIHRoZSBjb250ZW50cyBvZiBAY29kZXty bF9saW5lX2J1ZmZlcn0gd2l0aCBAdmFye3RleHR9LgorIFRoZSBwb2ludCBhbmQgbWFyayBhcmUg cHJlc2VydmVkLCBpZiBwb3NzaWJsZS4KK0BAIC0xMDgyLDcgKzExMzAsNyBAQCBJZiBAdmFye2Ns ZWFyX3VuZG99IGlzIG5vbi16ZXJvLCB0aGUgdW5kbyBsaXN0IGFzc29jaWF0ZWQgd2l0aCB0aGUK KyBjdXJyZW50IGxpbmUgaXMgY2xlYXJlZC4KKyBAZW5kIGRlZnR5cGVmdW4KKyAKKy1AZGVmdHlw ZWZ1biBpbnQgcmxfZXh0ZW5kX2xpbmVfYnVmZmVyIChpbnQgbGVuKQorK0BkZWZ0eXBlZnVuIHZv aWQgcmxfZXh0ZW5kX2xpbmVfYnVmZmVyIChpbnQgbGVuKQorIEVuc3VyZSB0aGF0IEBjb2Rle3Js X2xpbmVfYnVmZmVyfSBoYXMgZW5vdWdoIHNwYWNlIHRvIGhvbGQgQHZhcntsZW59CisgY2hhcmFj dGVycywgcG9zc2libHkgcmVhbGxvY2F0aW5nIGl0IGlmIG5lY2Vzc2FyeS4KKyBAZW5kIGRlZnR5 cGVmdW4KK0BAIC0xMTA5LDYgKzExNTcsOSBAQCBvZiBzdHJpbmdzLCBpbiBhcmd2IGZvcm1hdCwg c3VjaCBhcyBhIGxpc3Qgb2YgY29tcGxldGlvbiBtYXRjaGVzLgorIGlzIHRoZSBsZW5ndGggb2Yg dGhlIGxvbmdlc3Qgc3RyaW5nIGluIEBjb2Rle21hdGNoZXN9LiAgVGhpcyBmdW5jdGlvbiB1c2Vz CisgdGhlIHNldHRpbmcgb2YgQGNvZGV7cHJpbnQtY29tcGxldGlvbnMtaG9yaXpvbnRhbGx5fSB0 byBzZWxlY3QgaG93IHRoZQorIG1hdGNoZXMgYXJlIGRpc3BsYXllZCAoQHB4cmVme1JlYWRsaW5l IEluaXQgRmlsZSBTeW50YXh9KS4KKytXaGVuIGRpc3BsYXlpbmcgY29tcGxldGlvbnMsIHRoaXMg ZnVuY3Rpb24gc2V0cyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgdXNlZAorK2ZvciBkaXNwbGF5IHRv IHRoZSB2YWx1ZSBvZiBAY29kZXtjb21wbGV0aW9uLWRpc3BsYXktd2lkdGh9LCB0aGUgdmFsdWUg b2YKKyt0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgQGVudntDT0xVTU5TfSwgb3IgdGhlIHNjcmVl biB3aWR0aCwgaW4gdGhhdCBvcmRlci4KKyBAZW5kIGRlZnR5cGVmdW4KKyAKKyBUaGUgZm9sbG93 aW5nIGFyZSBpbXBsZW1lbnRlZCBhcyBtYWNyb3MsIGRlZmluZWQgaW4gQGNvZGV7Y2hhcmRlZnMu aH0uCitAQCAtMTM5Miw2ICsxNDQzLDEzIEBAIGNhbGwgQGNvZGV7cmxfcmVzaXplX3Rlcm1pbmFs KCl9IG9yIEBjb2Rle3JsX3NldF9zY3JlZW5fc2l6ZSgpfSB0byBmb3JjZQorIFJlYWRsaW5lIHRv IHVwZGF0ZSBpdHMgaWRlYSBvZiB0aGUgdGVybWluYWwgc2l6ZSB3aGVuIGEgQGNvZGV7U0lHV0lO Q0h9CisgaXMgcmVjZWl2ZWQuCisgCisrQGRlZnR5cGVmdW4gdm9pZCBybF9lY2hvX3NpZ25hbF9j aGFyIChpbnQgc2lnKQorK0lmIGFuIGFwcGxpY2F0aW9uIHdpc2hlcyB0byBpbnN0YWxsIGl0cyBv d24gc2lnbmFsIGhhbmRsZXJzLCBidXQgc3RpbGwKKytoYXZlIHJlYWRsaW5lIGRpc3BsYXkgY2hh cmFjdGVycyB0aGF0IGdlbmVyYXRlIHNpZ25hbHMsIGNhbGxpbmcgdGhpcworK2Z1bmN0aW9uIHdp dGggQHZhcntzaWd9IHNldCB0byBAY29kZXtTSUdJTlR9LCBAY29kZXtTSUdRVUlUfSwgb3IKKytA Y29kZXtTSUdUU1RQfSB3aWxsIGRpc3BsYXkgdGhlIGNoYXJhY3RlciBnZW5lcmF0aW5nIHRoYXQg c2lnbmFsLgorK0BlbmQgZGVmdHlwZWZ1bgorKworIEBkZWZ0eXBlZnVuIHZvaWQgcmxfcmVzaXpl X3Rlcm1pbmFsICh2b2lkKQorIFVwZGF0ZSBSZWFkbGluZSdzIGludGVybmFsIHNjcmVlbiBzaXpl IGJ5IHJlYWRpbmcgdmFsdWVzIGZyb20gdGhlIGtlcm5lbC4KKyBAZW5kIGRlZnR5cGVmdW4KK0BA IC0xNjU5LDE1ICsxNzE3LDQ5IEBAIGZyb20gdGhlIGFycmF5IG11c3QgYmUgZnJlZWQuCisgCisg QGRlZnR5cGV2YXIge3JsX2ljcHBmdW5jX3QgKn0gcmxfZGlyZWN0b3J5X2NvbXBsZXRpb25faG9v aworIFRoaXMgZnVuY3Rpb24sIGlmIGRlZmluZWQsIGlzIGFsbG93ZWQgdG8gbW9kaWZ5IHRoZSBk aXJlY3RvcnkgcG9ydGlvbgorLW9mIGZpbGVuYW1lcyBSZWFkbGluZSBjb21wbGV0ZXMuICBJdCBp cyBjYWxsZWQgd2l0aCB0aGUgYWRkcmVzcyBvZiBhCistc3RyaW5nICh0aGUgY3VycmVudCBkaXJl Y3RvcnkgbmFtZSkgYXMgYW4gYXJndW1lbnQsIGFuZCBtYXkgbW9kaWZ5IHRoYXQgc3RyaW5nLgor K29mIGZpbGVuYW1lcyBSZWFkbGluZSBjb21wbGV0ZXMuCisrSXQgY291bGQgYmUgdXNlZCB0byBl eHBhbmQgc3ltYm9saWMgbGlua3Mgb3Igc2hlbGwgdmFyaWFibGVzIGluIHBhdGhuYW1lcy4KKytJ dCBpcyBjYWxsZWQgd2l0aCB0aGUgYWRkcmVzcyBvZiBhIHN0cmluZyAodGhlIGN1cnJlbnQgZGly ZWN0b3J5IG5hbWUpIGFzIGFuCisrYXJndW1lbnQsIGFuZCBtYXkgbW9kaWZ5IHRoYXQgc3RyaW5n LgorIElmIHRoZSBzdHJpbmcgaXMgcmVwbGFjZWQgd2l0aCBhIG5ldyBzdHJpbmcsIHRoZSBvbGQg dmFsdWUgc2hvdWxkIGJlIGZyZWVkLgorIEFueSBtb2RpZmllZCBkaXJlY3RvcnkgbmFtZSBzaG91 bGQgaGF2ZSBhIHRyYWlsaW5nIHNsYXNoLgorLVRoZSBtb2RpZmllZCB2YWx1ZSB3aWxsIGJlIGRp c3BsYXllZCBhcyBwYXJ0IG9mIHRoZSBjb21wbGV0aW9uLCByZXBsYWNpbmcKKytUaGUgbW9kaWZp ZWQgdmFsdWUgd2lsbCBiZSB1c2VkIGFzIHBhcnQgb2YgdGhlIGNvbXBsZXRpb24sIHJlcGxhY2lu ZworIHRoZSBkaXJlY3RvcnkgcG9ydGlvbiBvZiB0aGUgcGF0aG5hbWUgdGhlIHVzZXIgdHlwZWQu CistSXQgcmV0dXJucyBhbiBpbnRlZ2VyIHRoYXQgc2hvdWxkIGJlIG5vbi16ZXJvIGlmIHRoZSBm dW5jdGlvbiBtb2RpZmllcworLWl0cyBkaXJlY3RvcnkgYXJndW1lbnQuCistSXQgY291bGQgYmUg dXNlZCB0byBleHBhbmQgc3ltYm9saWMgbGlua3Mgb3Igc2hlbGwgdmFyaWFibGVzIGluIHBhdGhu YW1lcy4KKytBdCB0aGUgbGVhc3QsIGV2ZW4gaWYgbm8gb3RoZXIgZXhwYW5zaW9uIGlzIHBlcmZv cm1lZCwgdGhpcyBmdW5jdGlvbiBzaG91bGQKKytyZW1vdmUgYW55IHF1b3RlIGNoYXJhY3RlcnMg ZnJvbSB0aGUgZGlyZWN0b3J5IG5hbWUsIGJlY2F1c2UgaXRzIHJlc3VsdCB3aWxsCisrYmUgcGFz c2VkIGRpcmVjdGx5IHRvIEBjb2Rle29wZW5kaXIoKX0uCisrVGhlIGRpcmVjdG9yeSBjb21wbGV0 aW9uIGhvb2sgcmV0dXJucyBhbiBpbnRlZ2VyIHRoYXQgc2hvdWxkIGJlIG5vbi16ZXJvIGlmCisr dGhlIGZ1bmN0aW9uIG1vZGlmaWVzIGl0cyBkaXJlY3RvcnkgYXJndW1lbnQuCisrVGhlIGZ1bmN0 aW9uIHNob3VsZCBub3QgbW9kaWZ5IHRoZSBkaXJlY3RvcnkgYXJndW1lbnQgaWYgaXQgcmV0dXJu cyAwLgorK0BlbmQgZGVmdHlwZXZhcgorKworK0BpZ25vcmUKKytAZGVmdHlwZXZhciBleHRlcm4g cmxfaWNwcGZ1bmNfdCAqcmxfZGlyZWN0b3J5X3Jld3JpdGVfaG9vazsKKytJZiBub24temVybywg dGhpcyBpcyB0aGUgYWRkcmVzcyBvZiBhIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBjb21wbGV0aW5n CisrYSBkaXJlY3RvcnkgbmFtZS4gIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIGFkZHJlc3Mgb2Yg dGhlIGRpcmVjdG9yeSBuYW1lCisrdG8gYmUgbW9kaWZpZWQgYXMgYW4gYXJndW1lbnQuICBVbmxp a2UgQGNvZGV7cmxfZGlyZWN0b3J5X2NvbXBsZXRpb25faG9va30sCisraXQgb25seSBtb2RpZmll cyB0aGUgZGlyZWN0b3J5IG5hbWUgdXNlZCBpbiBAY29kZXtvcGVuZGlyfSwgbm90IHdoYXQgaXMK KytkaXNwbGF5ZWQgd2hlbiB0aGUgcG9zc2libGUgY29tcGxldGlvbnMgYXJlIHByaW50ZWQgb3Ig aW5zZXJ0ZWQuICBJdCBpcworK2NhbGxlZCBiZWZvcmUgcmxfZGlyZWN0b3J5X2NvbXBsZXRpb25f aG9vay4KKysKKytJJ20gbm90IGhhcHB5IHdpdGggaG93IHRoaXMgd29ya3MgeWV0LCBzbyBpdCdz IHVuZG9jdW1lbnRlZC4KKytAZW5kIGRlZnR5cGV2YXIKKytAZW5kIGlnbm9yZQorKworK0BkZWZ0 eXBldmFyIHtybF9kZXF1b3RlX2Z1bmNfdCAqfSBybF9maWxlbmFtZV9yZXdyaXRlX2hvb2sKKytJ ZiBub24temVybywgdGhpcyBpcyB0aGUgYWRkcmVzcyBvZiBhIGZ1bmN0aW9uIGNhbGxlZCB3aGVu IHJlYWRpbmcKKytkaXJlY3RvcnkgZW50cmllcyBmcm9tIHRoZSBmaWxlc3lzdGVtIGZvciBjb21w bGV0aW9uIGFuZCBjb21wYXJpbmcKKyt0aGVtIHRvIHRoZSBwYXJ0aWFsIHdvcmQgdG8gYmUgY29t cGxldGVkLiAgVGhlIGZ1bmN0aW9uIHNob3VsZAorK3BlcmZvcm0gYW55IG5lY2VzYXJ5IGFwcGxp Y2F0aW9uIG9yIHN5c3RlbS1zcGVjaWZpYyBjb252ZXJzaW9uIG9uCisrdGhlIGZpbGVuYW1lLCBz dWNoIGFzIGNvbnZlcnRpbmcgYmV0d2VlbiBjaGFyYWN0ZXIgc2V0cyBvciBjb252ZXJ0aW5nCisr ZnJvbSBhIGZpbGVzeXN0ZW0gZm9ybWF0IHRvIGEgY2hhcmFjdGVyIGlucHV0IGZvcm1hdC4KKytU aGUgZnVuY3Rpb24gdGFrZXMgdHdvIGFyZ3VtZW50czogQHZhcntmbmFtZX0sIHRoZSBmaWxlbmFt ZSB0byBiZSBjb252ZXJ0ZWQsCisrYW5kIEB2YXJ7Zm5sZW59LCBpdHMgbGVuZ3RoIGluIGJ5dGVz LgorK0l0IG11c3QgZWl0aGVyIHJldHVybiBpdHMgZmlyc3QgYXJndW1lbnQgKGlmIG5vIGNvbnZl cnNpb24gdGFrZXMgcGxhY2UpCisrb3IgdGhlIGNvbnZlcnRlZCBmaWxlbmFtZSBpbiBuZXdseS1h bGxvY2F0ZWQgbWVtb3J5LiAgVGhlIGNvbnZlcnRlZAorK2Zvcm0gaXMgdXNlZCB0byBjb21wYXJl IGFnYWluc3QgdGhlIHdvcmQgdG8gYmUgY29tcGxldGVkLCBhbmQsIGlmIGl0CisrbWF0Y2hlcywg aXMgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgbWF0Y2hlcy4gIFJlYWRsaW5lIHdpbGwgZnJlZSB0aGUK KythbGxvY2F0ZWQgc3RyaW5nLgorIEBlbmQgZGVmdHlwZXZhcgorIAorIEBkZWZ0eXBldmFyIHty bF9jb21wZGlzcF9mdW5jX3QgKn0gcmxfY29tcGxldGlvbl9kaXNwbGF5X21hdGNoZXNfaG9vawor QEAgLTE4MjIsNiArMTkxNCwxNSBAQCBpZiB0aGUgYXBwbGljYXRpb24ncyBjb21wbGV0aW9uIGZ1 bmN0aW9uIHJldHVybnMgbm8gbWF0Y2hlcy4KKyBJdCBzaG91bGQgYmUgc2V0IG9ubHkgYnkgYW4g YXBwbGljYXRpb24ncyBjb21wbGV0aW9uIGZ1bmN0aW9uLgorIEBlbmQgZGVmdHlwZXZhcgorIAor K0BkZWZ0eXBldmFyIGludCBybF9zb3J0X2NvbXBsZXRpb25fbWF0Y2hlcworK0lmIGFuIGFwcGxp Y2F0aW9uIHNldHMgdGhpcyB2YXJpYWJsZSB0byAwLCBSZWFkbGluZSB3aWxsIG5vdCBzb3J0IHRo ZQorK2xpc3Qgb2YgY29tcGxldGlvbnMgKHdoaWNoIGltcGxpZXMgdGhhdCBpdCBjYW5ub3QgcmVt b3ZlIGFueSBkdXBsaWNhdGUKKytjb21wbGV0aW9ucykuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAx LCB3aGljaCBtZWFucyB0aGF0IFJlYWRsaW5lIHdpbGwKKytzb3J0IHRoZSBjb21wbGV0aW9ucyBh bmQsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YKKytAY29kZXtybF9pZ25vcmVfY29tcGxldGlv bl9kdXBsaWNhdGVzfSwgd2lsbCBhdHRlbXB0IHRvIHJlbW92ZSBkdXBsaWNhdGUKKyttYXRjaGVz LgorK0BlbmQgZGVmdHlwZXZhcgorKworIEBkZWZ0eXBldmFyIGludCBybF9jb21wbGV0aW9uX3R5 cGUKKyBTZXQgdG8gYSBjaGFyYWN0ZXIgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiBjb21wbGV0aW9u IFJlYWRsaW5lIGlzIGN1cnJlbnRseQorIGF0dGVtcHRpbmc7IHNlZSB0aGUgZGVzY3JpcHRpb24g b2YgQGNvZGV7cmxfY29tcGxldGVfaW50ZXJuYWwoKX0KK0BAIC0xODMxLDYgKzE5MzIsMTMgQEAg Y29tcGxldGlvbiBmdW5jdGlvbiBpcyBjYWxsZWQsIGFsbG93aW5nIHN1Y2ggZnVuY3Rpb25zIHRv IHByZXNlbnQKKyB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgQGNvZGV7cmxfY29tcGxldGUoKX0uCisg QGVuZCBkZWZ0eXBldmFyCisgCisrQGRlZnR5cGV2YXIgaW50IHJsX2NvbXBsZXRpb25faW52b2tp bmdfa2V5CisrU2V0IHRvIHRoZSBmaW5hbCBjaGFyYWN0ZXIgaW4gdGhlIGtleSBzZXF1ZW5jZSB0 aGF0IGludm9rZWQgb25lIG9mIHRoZQorK2NvbXBsZXRpb24gZnVuY3Rpb25zIHRoYXQgY2FsbCBA Y29kZXtybF9jb21wbGV0ZV9pbnRlcm5hbCgpfS4gIFRoaXMgaXMKKytzZXQgdG8gdGhlIGFwcHJv cHJpYXRlIHZhbHVlIGJlZm9yZSBhbnkgYXBwbGljYXRpb24tc3BlY2lmaWMgY29tcGxldGlvbgor K2Z1bmN0aW9uIGlzIGNhbGxlZC4KKytAZW5kIGRlZnR5cGV2YXIKKysKKyBAZGVmdHlwZXZhciBp bnQgcmxfaW5oaWJpdF9jb21wbGV0aW9uCisgSWYgdGhpcyB2YXJpYWJsZSBpcyBub24temVybywg Y29tcGxldGlvbiBpcyBpbmhpYml0ZWQuICBUaGUgY29tcGxldGlvbgorIGNoYXJhY3RlciB3aWxs IGJlIGluc2VydGVkIGFzIGFueSBvdGhlciBib3VuZCB0byBAY29kZXtzZWxmLWluc2VydH0uCitA QCAtMTg1MSwyNyArMTk1OSw1MSBAQCBoaXN0b3J5IGxpc3QuCisgICAgR05VIFJlYWRsaW5lIGxp YnJhcnkuICBUaGlzIGFwcGxpY2F0aW9uIGludGVyYWN0aXZlbHkgYWxsb3dzIHVzZXJzCisgICAg dG8gbWFuaXB1bGF0ZSBmaWxlcyBhbmQgdGhlaXIgbW9kZXMuICovCisgCistI2luY2x1ZGUgPHN0 ZGlvLmg+CisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjICBpbmNsdWRlIDxjb25maWcuaD4KKysj ZW5kaWYKKysKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy9maWxlLmg+ CisrI2lmZGVmIEhBVkVfU1lTX0ZJTEVfSAorKyMgIGluY2x1ZGUgPHN5cy9maWxlLmg+CisrI2Vu ZGlmCisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistI2luY2x1ZGUgPHN5cy9lcnJuby5oPgorKwor KyNpZmRlZiBIQVZFX1VOSVNURF9ICisrIyAgaW5jbHVkZSA8dW5pc3RkLmg+CisrI2VuZGlmCisr CisrI2luY2x1ZGUgPGZjbnRsLmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPGVy cm5vLmg+CisrCisrI2lmIGRlZmluZWQgKEhBVkVfU1RSSU5HX0gpCisrIyAgaW5jbHVkZSA8c3Ry aW5nLmg+CisrI2Vsc2UgLyogIUhBVkVfU1RSSU5HX0ggKi8KKysjICBpbmNsdWRlIDxzdHJpbmdz Lmg+CisrI2VuZGlmIC8qICFIQVZFX1NUUklOR19IICovCisrCisrI2lmZGVmIEhBVkVfU1RETElC X0gKKysjICBpbmNsdWRlIDxzdGRsaWIuaD4KKysjZW5kaWYKKysKKysjaW5jbHVkZSA8dGltZS5o PgorIAorICNpbmNsdWRlIDxyZWFkbGluZS9yZWFkbGluZS5oPgorICNpbmNsdWRlIDxyZWFkbGlu ZS9oaXN0b3J5Lmg+CisgCistZXh0ZXJuIGNoYXIgKnhtYWxsb2MgKCk7CisrZXh0ZXJuIGNoYXIg KnhtYWxsb2MgUEFSQU1TKChzaXplX3QpKTsKKyAKKyAvKiBUaGUgbmFtZXMgb2YgZnVuY3Rpb25z IHRoYXQgYWN0dWFsbHkgZG8gdGhlIG1hbmlwdWxhdGlvbi4gKi8KKy1pbnQgY29tX2xpc3QgX19Q KChjaGFyICopKTsKKy1pbnQgY29tX3ZpZXcgX19QKChjaGFyICopKTsKKy1pbnQgY29tX3JlbmFt ZSBfX1AoKGNoYXIgKikpOworLWludCBjb21fc3RhdCBfX1AoKGNoYXIgKikpOworLWludCBjb21f cHdkIF9fUCgoY2hhciAqKSk7CistaW50IGNvbV9kZWxldGUgX19QKChjaGFyICopKTsKKy1pbnQg Y29tX2hlbHAgX19QKChjaGFyICopKTsKKy1pbnQgY29tX2NkIF9fUCgoY2hhciAqKSk7CistaW50 IGNvbV9xdWl0IF9fUCgoY2hhciAqKSk7CisraW50IGNvbV9saXN0IFBBUkFNUygoY2hhciAqKSk7 CisraW50IGNvbV92aWV3IFBBUkFNUygoY2hhciAqKSk7CisraW50IGNvbV9yZW5hbWUgUEFSQU1T KChjaGFyICopKTsKKytpbnQgY29tX3N0YXQgUEFSQU1TKChjaGFyICopKTsKKytpbnQgY29tX3B3 ZCBQQVJBTVMoKGNoYXIgKikpOworK2ludCBjb21fZGVsZXRlIFBBUkFNUygoY2hhciAqKSk7Cisr aW50IGNvbV9oZWxwIFBBUkFNUygoY2hhciAqKSk7CisraW50IGNvbV9jZCBQQVJBTVMoKGNoYXIg KikpOworK2ludCBjb21fcXVpdCBQQVJBTVMoKGNoYXIgKikpOworIAorIC8qIEEgc3RydWN0dXJl IHdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIG9uIHRoZSBjb21tYW5kcyB0aGlzIHByb2dyYW0K KyAgICBjYW4gdW5kZXJzdGFuZC4gKi8KK0BAIC0xOTA0LDEyICsyMDM2LDEyIEBAIENPTU1BTkQg KmZpbmRfY29tbWFuZCAoKTsKKyAvKiBUaGUgbmFtZSBvZiB0aGlzIHByb2dyYW0sIGFzIHRha2Vu IGZyb20gYXJndlswXS4gKi8KKyBjaGFyICpwcm9nbmFtZTsKKyAKKy0vKiBXaGVuIG5vbi16ZXJv LCB0aGlzIG1lYW5zIHRoZSB1c2VyIGlzIGRvbmUgdXNpbmcgdGhpcyBwcm9ncmFtLiAqLworKy8q IFdoZW4gbm9uLXplcm8sIHRoaXMgZ2xvYmFsIG1lYW5zIHRoZSB1c2VyIGlzIGRvbmUgdXNpbmcg dGhpcyBwcm9ncmFtLiAqLworIGludCBkb25lOworIAorIGNoYXIgKgorIGR1cHN0ciAocykKKy0g ICAgIGludCBzOworKyAgICAgY2hhciAqczsKKyBAeworICAgY2hhciAqcjsKKyAKK0BAIC0yMDM0 LDEyICsyMTY2LDEyIEBAIHN0cmlwd2hpdGUgKHN0cmluZykKKyAvKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgLyog KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiAqLworIAorLWNoYXIgKmNvbW1hbmRfZ2VuZXJhdG9yIF9fUCgoY29uc3QgY2hhciAq LCBpbnQpKTsKKy1jaGFyICoqZmlsZW1hbl9jb21wbGV0aW9uIF9fUCgoY29uc3QgY2hhciAqLCBp bnQsIGludCkpOworK2NoYXIgKmNvbW1hbmRfZ2VuZXJhdG9yIFBBUkFNUygoY29uc3QgY2hhciAq LCBpbnQpKTsKKytjaGFyICoqZmlsZW1hbl9jb21wbGV0aW9uIFBBUkFNUygoY29uc3QgY2hhciAq LCBpbnQsIGludCkpOworIAorLS8qIFRlbGwgdGhlIEdOVSBSZWFkbGluZSBsaWJyYXJ5IGhvdyB0 byBjb21wbGV0ZS4gIFdlIHdhbnQgdG8gdHJ5IHRvCistICAgY29tcGxldGUgb24gY29tbWFuZCBu YW1lcyBpZiB0aGlzIGlzIHRoZSBmaXJzdCB3b3JkIGluIHRoZSBsaW5lLCBvcgorLSAgIG9uIGZp bGVuYW1lcyBpZiBub3QuICovCisrLyogVGVsbCB0aGUgR05VIFJlYWRsaW5lIGxpYnJhcnkgaG93 IHRvIGNvbXBsZXRlLiAgV2Ugd2FudCB0byB0cnkgdG8gY29tcGxldGUKKysgICBvbiBjb21tYW5k IG5hbWVzIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHdvcmQgaW4gdGhlIGxpbmUsIG9yIG9uIGZpbGVu YW1lcworKyAgIGlmIG5vdC4gKi8KKyBpbml0aWFsaXplX3JlYWRsaW5lICgpCisgQHsKKyAgIC8q IEFsbG93IGNvbmRpdGlvbmFsIHBhcnNpbmcgb2YgdGhlIH4vLmlucHV0cmMgZmlsZS4gKi8KK0BA IC0yMDQ5LDExICsyMTgxLDExIEBAIGluaXRpYWxpemVfcmVhZGxpbmUgKCkKKyAgIHJsX2F0dGVt cHRlZF9jb21wbGV0aW9uX2Z1bmN0aW9uID0gZmlsZW1hbl9jb21wbGV0aW9uOworIEB9CisgCist LyogQXR0ZW1wdCB0byBjb21wbGV0ZSBvbiB0aGUgY29udGVudHMgb2YgVEVYVC4gIFNUQVJUIGFu ZCBFTkQKKy0gICBib3VuZCB0aGUgcmVnaW9uIG9mIHJsX2xpbmVfYnVmZmVyIHRoYXQgY29udGFp bnMgdGhlIHdvcmQgdG8KKy0gICBjb21wbGV0ZS4gIFRFWFQgaXMgdGhlIHdvcmQgdG8gY29tcGxl dGUuICBXZSBjYW4gdXNlIHRoZSBlbnRpcmUKKy0gICBjb250ZW50cyBvZiBybF9saW5lX2J1ZmZl ciBpbiBjYXNlIHdlIHdhbnQgdG8gZG8gc29tZSBzaW1wbGUKKy0gICBwYXJzaW5nLiAgUmV0dXJu dGhlIGFycmF5IG9mIG1hdGNoZXMsIG9yIE5VTEwgaWYgdGhlcmUgYXJlbid0IGFueS4gKi8KKysv KiBBdHRlbXB0IHRvIGNvbXBsZXRlIG9uIHRoZSBjb250ZW50cyBvZiBURVhULiAgU1RBUlQgYW5k IEVORCBib3VuZCB0aGUKKysgICByZWdpb24gb2YgcmxfbGluZV9idWZmZXIgdGhhdCBjb250YWlu cyB0aGUgd29yZCB0byBjb21wbGV0ZS4gIFRFWFQgaXMKKysgICB0aGUgd29yZCB0byBjb21wbGV0 ZS4gIFdlIGNhbiB1c2UgdGhlIGVudGlyZSBjb250ZW50cyBvZiBybF9saW5lX2J1ZmZlcgorKyAg IGluIGNhc2Ugd2Ugd2FudCB0byBkbyBzb21lIHNpbXBsZSBwYXJzaW5nLiAgUmV0dXJuIHRoZSBh cnJheSBvZiBtYXRjaGVzLAorKyAgIG9yIE5VTEwgaWYgdGhlcmUgYXJlbid0IGFueS4gKi8KKyBj aGFyICoqCisgZmlsZW1hbl9jb21wbGV0aW9uICh0ZXh0LCBzdGFydCwgZW5kKQorICAgICAgY29u c3QgY2hhciAqdGV4dDsKK0BAIC0yMDcyLDkgKzIyMDQsOSBAQCBmaWxlbWFuX2NvbXBsZXRpb24g KHRleHQsIHN0YXJ0LCBlbmQpCisgICByZXR1cm4gKG1hdGNoZXMpOworIEB9CisgCistLyogR2Vu ZXJhdG9yIGZ1bmN0aW9uIGZvciBjb21tYW5kIGNvbXBsZXRpb24uICBTVEFURSBsZXRzIHVzCist ICAga25vdyB3aGV0aGVyIHRvIHN0YXJ0IGZyb20gc2NyYXRjaDsgd2l0aG91dCBhbnkgc3RhdGUK Ky0gICAoaS5lLiBTVEFURSA9PSAwKSwgdGhlbiB3ZSBzdGFydCBhdCB0aGUgdG9wIG9mIHRoZSBs aXN0LiAqLworKy8qIEdlbmVyYXRvciBmdW5jdGlvbiBmb3IgY29tbWFuZCBjb21wbGV0aW9uLiAg U1RBVEUgbGV0cyB1cyBrbm93IHdoZXRoZXIKKysgICB0byBzdGFydCBmcm9tIHNjcmF0Y2g7IHdp dGhvdXQgYW55IHN0YXRlIChpLmUuIFNUQVRFID09IDApLCB0aGVuIHdlCisrICAgc3RhcnQgYXQg dGhlIHRvcCBvZiB0aGUgbGlzdC4gKi8KKyBjaGFyICoKKyBjb21tYW5kX2dlbmVyYXRvciAodGV4 dCwgc3RhdGUpCisgICAgICBjb25zdCBjaGFyICp0ZXh0OworQEAgLTIwODMsMTcgKzIyMTUsMTYg QEAgY29tbWFuZF9nZW5lcmF0b3IgKHRleHQsIHN0YXRlKQorICAgc3RhdGljIGludCBsaXN0X2lu ZGV4LCBsZW47CisgICBjaGFyICpuYW1lOworIAorLSAgLyogSWYgdGhpcyBpcyBhIG5ldyB3b3Jk IHRvIGNvbXBsZXRlLCBpbml0aWFsaXplIG5vdy4gIFRoaXMKKy0gICAgIGluY2x1ZGVzIHNhdmlu ZyB0aGUgbGVuZ3RoIG9mIFRFWFQgZm9yIGVmZmljaWVuY3ksIGFuZAorLSAgICAgaW5pdGlhbGl6 aW5nIHRoZSBpbmRleCB2YXJpYWJsZSB0byAwLiAqLworKyAgLyogSWYgdGhpcyBpcyBhIG5ldyB3 b3JkIHRvIGNvbXBsZXRlLCBpbml0aWFsaXplIG5vdy4gIFRoaXMgaW5jbHVkZXMKKysgICAgIHNh dmluZyB0aGUgbGVuZ3RoIG9mIFRFWFQgZm9yIGVmZmljaWVuY3ksIGFuZCBpbml0aWFsaXppbmcg dGhlIGluZGV4CisrICAgICB2YXJpYWJsZSB0byAwLiAqLworICAgaWYgKCFzdGF0ZSkKKyAgICAg QHsKKyAgICAgICBsaXN0X2luZGV4ID0gMDsKKyAgICAgICBsZW4gPSBzdHJsZW4gKHRleHQpOwor ICAgICBAfQorIAorLSAgLyogUmV0dXJuIHRoZSBuZXh0IG5hbWUgd2hpY2ggcGFydGlhbGx5IG1h dGNoZXMgZnJvbSB0aGUKKy0gICAgIGNvbW1hbmQgbGlzdC4gKi8KKysgIC8qIFJldHVybiB0aGUg bmV4dCBuYW1lIHdoaWNoIHBhcnRpYWxseSBtYXRjaGVzIGZyb20gdGhlIGNvbW1hbmQgbGlzdC4g Ki8KKyAgIHdoaWxlIChuYW1lID0gY29tbWFuZHNbbGlzdF9pbmRleF0ubmFtZSkKKyAgICAgQHsK KyAgICAgICBsaXN0X2luZGV4Kys7CitAQCAtMjEzMyw3ICsyMjY0LDEyIEBAIGNvbV92aWV3IChh cmcpCisgICBpZiAoIXZhbGlkX2FyZ3VtZW50ICgidmlldyIsIGFyZykpCisgICAgIHJldHVybiAx OworIAorKyNpZiBkZWZpbmVkIChfX01TRE9TX18pCisrICAvKiBtb3JlLmNvbSBkb2Vzbid0IGdy b2sgc2xhc2hlcyBpbiBwYXRobmFtZXMgKi8KKysgIHNwcmludGYgKHN5c2NvbSwgImxlc3MgJXMi LCBhcmcpOworKyNlbHNlCisgICBzcHJpbnRmIChzeXNjb20sICJtb3JlICVzIiwgYXJnKTsKKysj ZW5kaWYKKyAgIHJldHVybiAoc3lzdGVtIChzeXNjb20pKTsKKyBAfQorIAorQEAgLTIxNjAsNyAr MjI5Niw4IEBAIGNvbV9zdGF0IChhcmcpCisgCisgICBwcmludGYgKCJTdGF0aXN0aWNzIGZvciBg JXMnOlxuIiwgYXJnKTsKKyAKKy0gIHByaW50ZiAoIiVzIGhhcyAlZCBsaW5rJXMsIGFuZCBpcyAl ZCBieXRlJXMgaW4gbGVuZ3RoLlxuIiwgYXJnLAorKyAgcHJpbnRmICgiJXMgaGFzICVkIGxpbmsl cywgYW5kIGlzICVkIGJ5dGUlcyBpbiBsZW5ndGguXG4iLAorKwkgIGFyZywKKyAgICAgICAgICAg ZmluZm8uc3RfbmxpbmssCisgICAgICAgICAgIChmaW5mby5zdF9ubGluayA9PSAxKSA/ICIiIDog InMiLAorICAgICAgICAgICBmaW5mby5zdF9zaXplLAorQEAgLTIyNDksOCArMjM4Niw3IEBAIGNv bV9wd2QgKGlnbm9yZSkKKyAgIHJldHVybiAwOworIEB9CisgCistLyogVGhlIHVzZXIgd2lzaGVz IHRvIHF1aXQgdXNpbmcgdGhpcyBwcm9ncmFtLiAgSnVzdCBzZXQgRE9ORQorLSAgIG5vbi16ZXJv LiAqLworKy8qIFRoZSB1c2VyIHdpc2hlcyB0byBxdWl0IHVzaW5nIHRoaXMgcHJvZ3JhbS4gIEp1 c3Qgc2V0IERPTkUgbm9uLXplcm8uICovCisgY29tX3F1aXQgKGFyZykKKyAgICAgIGNoYXIgKmFy ZzsKKyBAeworQEAgLTIyNjMsMTMgKzIzOTksMTIgQEAgdG9vX2Rhbmdlcm91cyAoY2FsbGVyKQor ICAgICAgY2hhciAqY2FsbGVyOworIEB7CisgICBmcHJpbnRmIChzdGRlcnIsCistICAgICAgICAg ICAiJXM6IFRvbyBkYW5nZXJvdXMgZm9yIG1lIHRvIGRpc3RyaWJ1dGUuXG4iLAorKyAgICAgICAg ICAgIiVzOiBUb28gZGFuZ2Vyb3VzIGZvciBtZSB0byBkaXN0cmlidXRlLiAgV3JpdGUgaXQgeW91 cnNlbGYuXG4iLAorICAgICAgICAgICAgY2FsbGVyKTsKKy0gIGZwcmludGYgKHN0ZGVyciwgIldy aXRlIGl0IHlvdXJzZWxmLlxuIik7CisgQH0KKyAKKy0vKiBSZXR1cm4gbm9uLXplcm8gaWYgQVJH IGlzIGEgdmFsaWQgYXJndW1lbnQgZm9yIENBTExFUiwKKy0gICBlbHNlIHByaW50IGFuIGVycm9y IG1lc3NhZ2UgYW5kIHJldHVybiB6ZXJvLiAqLworKy8qIFJldHVybiBub24temVybyBpZiBBUkcg aXMgYSB2YWxpZCBhcmd1bWVudCBmb3IgQ0FMTEVSLCBlbHNlIHByaW50CisrICAgYW4gZXJyb3Ig bWVzc2FnZSBhbmQgcmV0dXJuIHplcm8uICovCisgaW50CisgdmFsaWRfYXJndW1lbnQgKGNhbGxl ciwgYXJnKQorICAgICAgY2hhciAqY2FsbGVyLCAqYXJnOworLS0tIGEvcmVhZGxpbmUvZG9jL3Js dXNlci50ZXhpCisrKysgYi9yZWFkbGluZS9kb2Mvcmx1c2VyLnRleGkKK0BAIC0xLDcgKzEsNiBA QAorIEBjb21tZW50ICUqKnN0YXJ0IG9mIGhlYWRlciAoVGhpcyBpcyBmb3IgcnVubmluZyBUZXhp bmZvIG9uIGEgcmVnaW9uLikKKyBAc2V0ZmlsZW5hbWUgcmx1c2VyLmluZm8KKyBAY29tbWVudCAl KiplbmQgb2YgaGVhZGVyIChUaGlzIGlzIGZvciBydW5uaW5nIFRleGluZm8gb24gYSByZWdpb24u KQorLUBzZXRjaGFwdGVybmV3cGFnZSBvZGQKKyAKKyBAaWdub3JlCisgVGhpcyBmaWxlIGRvY3Vt ZW50cyB0aGUgZW5kIHVzZXIgaW50ZXJmYWNlIHRvIHRoZSBHTlUgY29tbWFuZCBsaW5lCitAQCAt MTAsNyArOSw3IEBAIHVzZSB0aGVzZSBmZWF0dXJlcy4gIFRoZXJlIGlzIGEgZG9jdW1lbnQgZW50 aXRsZWQgInJlYWRsaW5lLnRleGluZm8iCisgd2hpY2ggY29udGFpbnMgYm90aCBlbmQtdXNlciBh bmQgcHJvZ3JhbW1lciBkb2N1bWVudGF0aW9uIGZvciB0aGUKKyBHTlUgUmVhZGxpbmUgTGlicmFy eS4KKyAKKy1Db3B5cmlnaHQgKEMpIDE5ODgtMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKytDb3B5cmlnaHQgKEMpIDE5ODgtLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisgCisgQXV0aG9yZWQgYnkgQnJpYW4gRm94IGFuZCBDaGV0IFJhbWV5LgorIAorQEAg LTQ4LDYgKzQ3LDE2IEBAIGNvbW1hbmQgbGluZSBlZGl0aW5nIGludGVyZmFjZS4KKyBAaWZzZXQg QmFzaEZlYXR1cmVzCisgQ29tbWFuZCBsaW5lIGVkaXRpbmcgaXMgcHJvdmlkZWQgYnkgdGhlIFJl YWRsaW5lIGxpYnJhcnksIHdoaWNoIGlzCisgdXNlZCBieSBzZXZlcmFsIGRpZmZlcmVudCBwcm9n cmFtcywgaW5jbHVkaW5nIEJhc2guCisrQ29tbWFuZCBsaW5lIGVkaXRpbmcgaXMgZW5hYmxlZCBi eSBkZWZhdWx0IHdoZW4gdXNpbmcgYW4gaW50ZXJhY3RpdmUgc2hlbGwsCisrdW5sZXNzIHRoZSBA b3B0aW9uey0tbm9lZGl0aW5nfSBvcHRpb24gaXMgc3VwcGxpZWQgYXQgc2hlbGwgaW52b2NhdGlv bi4KKytMaW5lIGVkaXRpbmcgaXMgYWxzbyB1c2VkIHdoZW4gdXNpbmcgdGhlIEBvcHRpb257LWV9 IG9wdGlvbiB0byB0aGUKKytAY29kZXtyZWFkfSBidWlsdGluIGNvbW1hbmQgKEBweHJlZntCYXNo IEJ1aWx0aW5zfSkuCisrQnkgZGVmYXVsdCwgdGhlIGxpbmUgZWRpdGluZyBjb21tYW5kcyBhcmUg c2ltaWxhciB0byB0aG9zZSBvZiBFbWFjcy4KKytBIHZpLXN0eWxlIGxpbmUgZWRpdGluZyBpbnRl cmZhY2UgaXMgYWxzbyBhdmFpbGFibGUuCisrTGluZSBlZGl0aW5nIGNhbiBiZSBlbmFibGVkIGF0 IGFueSB0aW1lIHVzaW5nIHRoZSBAb3B0aW9uey1vIGVtYWNzfSBvcgorK0BvcHRpb257LW8gdml9 IG9wdGlvbnMgdG8gdGhlIEBjb2Rle3NldH0gYnVpbHRpbiBjb21tYW5kCisrKEBweHJlZntUaGUg U2V0IEJ1aWx0aW59KSwgb3IgZGlzYWJsZWQgdXNpbmcgdGhlIEBvcHRpb257K28gZW1hY3N9IG9y IAorK0BvcHRpb257K28gdml9IG9wdGlvbnMgdG8gQGNvZGV7c2V0fS4KKyBAZW5kIGlmc2V0Cisg CisgQG1lbnUKK0BAIC0zMzYsNyArMzQ1LDkgQEAgZmlsZSBpcyB0YWtlbiBmcm9tIHRoZSB2YWx1 ZSBvZiB0aGUgc2hlbGwgdmFyaWFibGUgQGVudntJTlBVVFJDfS4gIElmCisgQGlmY2xlYXIgQmFz aEZlYXR1cmVzCisgZmlsZSBpcyB0YWtlbiBmcm9tIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1l bnQgdmFyaWFibGUgQGVudntJTlBVVFJDfS4gIElmCisgQGVuZCBpZmNsZWFyCistdGhhdCB2YXJp YWJsZSBpcyB1bnNldCwgdGhlIGRlZmF1bHQgaXMgQGZpbGV7fi8uaW5wdXRyY30uCisrdGhhdCB2 YXJpYWJsZSBpcyB1bnNldCwgdGhlIGRlZmF1bHQgaXMgQGZpbGV7fi8uaW5wdXRyY30uICBJZiB0 aGF0CisrZmlsZSBkb2VzIG5vdCBleGlzdCBvciBjYW5ub3QgYmUgcmVhZCwgdGhlIHVsdGltYXRl IGRlZmF1bHQgaXMKKytAZmlsZXsvZXRjL2lucHV0cmN9LgorIAorIFdoZW4gYSBwcm9ncmFtIHdo aWNoIHVzZXMgdGhlIFJlYWRsaW5lIGxpYnJhcnkgc3RhcnRzIHVwLCB0aGUKKyBpbml0IGZpbGUg aXMgcmVhZCwgYW5kIHRoZSBrZXkgYmluZGluZ3MgYXJlIHNldC4KK0BAIC00MjAsMTEgKzQzMSwz NCBAQCBUaGUgc3RyaW5nIHRvIGluc2VydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIHdo ZW4gdGhlCisgQGNvZGV7aW5zZXJ0LWNvbW1lbnR9IGNvbW1hbmQgaXMgZXhlY3V0ZWQuICBUaGUg ZGVmYXVsdCB2YWx1ZQorIGlzIEBjb2RleyIjIn0uCisgCisrQGl0ZW0gY29tcGxldGlvbi1kaXNw bGF5LXdpZHRoCisrQHZpbmRleCBjb21wbGV0aW9uLWRpc3BsYXktd2lkdGgKKytUaGUgbnVtYmVy IG9mIHNjcmVlbiBjb2x1bW5zIHVzZWQgdG8gZGlzcGxheSBwb3NzaWJsZSBtYXRjaGVzCisrd2hl biBwZXJmb3JtaW5nIGNvbXBsZXRpb24uCisrVGhlIHZhbHVlIGlzIGlnbm9yZWQgaWYgaXQgaXMg bGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIHRoZSB0ZXJtaW5hbAorK3NjcmVlbiB3aWR0aC4K KytBIHZhbHVlIG9mIDAgd2lsbCBjYXVzZSBtYXRjaGVzIHRvIGJlIGRpc3BsYXllZCBvbmUgcGVy IGxpbmUuCisrVGhlIGRlZmF1bHQgdmFsdWUgaXMgLTEuCisrCisgQGl0ZW0gY29tcGxldGlvbi1p Z25vcmUtY2FzZQorK0B2aW5kZXggY29tcGxldGlvbi1pZ25vcmUtY2FzZQorIElmIHNldCB0byBA c2FtcHtvbn0sIFJlYWRsaW5lIHBlcmZvcm1zIGZpbGVuYW1lIG1hdGNoaW5nIGFuZCBjb21wbGV0 aW9uCisgaW4gYSBjYXNlLWluc2Vuc2l0aXZlIGZhc2hpb24uCisgVGhlIGRlZmF1bHQgdmFsdWUg aXMgQHNhbXB7b2ZmfS4KKyAKKytAaXRlbSBjb21wbGV0aW9uLW1hcC1jYXNlCisrQHZpbmRleCBj b21wbGV0aW9uLW1hcC1jYXNlCisrSWYgc2V0IHRvIEBzYW1we29ufSwgYW5kIEB2YXJ7Y29tcGxl dGlvbi1pZ25vcmUtY2FzZX0gaXMgZW5hYmxlZCwgUmVhZGxpbmUKKyt0cmVhdHMgaHlwaGVucyAo QHNhbXB7LX0pIGFuZCB1bmRlcnNjb3JlcyAoQHNhbXB7X30pIGFzIGVxdWl2YWxlbnQgd2hlbgor K3BlcmZvcm1pbmcgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlbmFtZSBtYXRjaGluZyBhbmQgY29tcGxl dGlvbi4KKysKKytAaXRlbSBjb21wbGV0aW9uLXByZWZpeC1kaXNwbGF5LWxlbmd0aAorK0B2aW5k ZXggY29tcGxldGlvbi1wcmVmaXgtZGlzcGxheS1sZW5ndGgKKytUaGUgbGVuZ3RoIGluIGNoYXJh Y3RlcnMgb2YgdGhlIGNvbW1vbiBwcmVmaXggb2YgYSBsaXN0IG9mIHBvc3NpYmxlCisrY29tcGxl dGlvbnMgdGhhdCBpcyBkaXNwbGF5ZWQgd2l0aG91dCBtb2RpZmljYXRpb24uICBXaGVuIHNldCB0 byBhCisrdmFsdWUgZ3JlYXRlciB0aGFuIHplcm8sIGNvbW1vbiBwcmVmaXhlcyBsb25nZXIgdGhh biB0aGlzIHZhbHVlIGFyZQorK3JlcGxhY2VkIHdpdGggYW4gZWxsaXBzaXMgd2hlbiBkaXNwbGF5 aW5nIHBvc3NpYmxlIGNvbXBsZXRpb25zLgorKworIEBpdGVtIGNvbXBsZXRpb24tcXVlcnktaXRl bXMKKyBAdmluZGV4IGNvbXBsZXRpb24tcXVlcnktaXRlbXMKKyBUaGUgbnVtYmVyIG9mIHBvc3Np YmxlIGNvbXBsZXRpb25zIHRoYXQgZGV0ZXJtaW5lcyB3aGVuIHRoZSB1c2VyIGlzCitAQCAtNDU2 LDEyICs0OTAsMjMgQEAga2V5IGJpbmRpbmdzIGlzIHVzZWQuICBCeSBkZWZhdWx0LCBSZWFkbGlu ZSBzdGFydHMgdXAgaW4gRW1hY3MgZWRpdGluZworIG1vZGUsIHdoZXJlIHRoZSBrZXlzdHJva2Vz IGFyZSBtb3N0IHNpbWlsYXIgdG8gRW1hY3MuICBUaGlzIHZhcmlhYmxlIGNhbiBiZQorIHNldCB0 byBlaXRoZXIgQHNhbXB7ZW1hY3N9IG9yIEBzYW1we3ZpfS4KKyAKKytAaXRlbSBlY2hvLWNvbnRy b2wtY2hhcmFjdGVycworK1doZW4gc2V0IHRvIEBzYW1we29ufSwgb24gb3BlcmF0aW5nIHN5c3Rl bXMgdGhhdCBpbmRpY2F0ZSB0aGV5IHN1cHBvcnQgaXQsCisrcmVhZGxpbmUgZWNob2VzIGEgY2hh cmFjdGVyIGNvcnJlc3BvbmRpbmcgdG8gYSBzaWduYWwgZ2VuZXJhdGVkIGZyb20gdGhlCisra2V5 Ym9hcmQuICBUaGUgZGVmYXVsdCBpcyBAc2FtcHtvbn0uCisrCisgQGl0ZW0gZW5hYmxlLWtleXBh ZAorIEB2aW5kZXggZW5hYmxlLWtleXBhZAorIFdoZW4gc2V0IHRvIEBzYW1we29ufSwgUmVhZGxp bmUgd2lsbCB0cnkgdG8gZW5hYmxlIHRoZSBhcHBsaWNhdGlvbgorIGtleXBhZCB3aGVuIGl0IGlz IGNhbGxlZC4gIFNvbWUgc3lzdGVtcyBuZWVkIHRoaXMgdG8gZW5hYmxlIHRoZQorIGFycm93IGtl eXMuICBUaGUgZGVmYXVsdCBpcyBAc2FtcHtvZmZ9LgorIAorK0BpdGVtIGVuYWJsZS1tZXRhLWtl eQorK1doZW4gc2V0IHRvIEBzYW1we29ufSwgUmVhZGxpbmUgd2lsbCB0cnkgdG8gZW5hYmxlIGFu eSBtZXRhIG1vZGlmaWVyCisra2V5IHRoZSB0ZXJtaW5hbCBjbGFpbXMgdG8gc3VwcG9ydCB3aGVu IGl0IGlzIGNhbGxlZC4gIE9uIG1hbnkgdGVybWluYWxzLAorK3RoZSBtZXRhIGtleSBpcyB1c2Vk IHRvIHNlbmQgZWlnaHQtYml0IGNoYXJhY3RlcnMuCisrVGhlIGRlZmF1bHQgaXMgQHNhbXB7b259 LgorKworIEBpdGVtIGV4cGFuZC10aWxkZQorIEB2aW5kZXggZXhwYW5kLXRpbGRlCisgSWYgc2V0 IHRvIEBzYW1we29ufSwgdGlsZGUgZXhwYW5zaW9uIGlzIHBlcmZvcm1lZCB3aGVuIFJlYWRsaW5l CitAQCAtNDY5LDEwICs1MTQsMTYgQEAgYXR0ZW1wdHMgd29yZCBjb21wbGV0aW9uLiAgVGhlIGRl ZmF1bHQgaXMgQHNhbXB7b2ZmfS4KKyAKKyBAaXRlbSBoaXN0b3J5LXByZXNlcnZlLXBvaW50Cisg QHZpbmRleCBoaXN0b3J5LXByZXNlcnZlLXBvaW50CistSWYgc2V0IHRvIEBzYW1we29ufSwgdGhl IGhpc3RvcnkgY29kZSBhdHRlbXB0cyB0byBwbGFjZSBwb2ludCBhdCB0aGUKKytJZiBzZXQgdG8g QHNhbXB7b259LCB0aGUgaGlzdG9yeSBjb2RlIGF0dGVtcHRzIHRvIHBsYWNlIHRoZSBwb2ludCAo dGhlCisrY3VycmVudCBjdXJzb3IgcG9zaXRpb24pIGF0IHRoZQorIHNhbWUgbG9jYXRpb24gb24g ZWFjaCBoaXN0b3J5IGxpbmUgcmV0cmlldmVkIHdpdGggQGNvZGV7cHJldmlvdXMtaGlzdG9yeX0K KyBvciBAY29kZXtuZXh0LWhpc3Rvcnl9LiAgVGhlIGRlZmF1bHQgaXMgQHNhbXB7b2ZmfS4KKyAK KytAaXRlbSBoaXN0b3J5LXNpemUKKytAdmluZGV4IGhpc3Rvcnktc2l6ZQorK1NldCB0aGUgbWF4 aW11bSBudW1iZXIgb2YgaGlzdG9yeSBlbnRyaWVzIHNhdmVkIGluIHRoZSBoaXN0b3J5IGxpc3Qu ICBJZgorK3NldCB0byB6ZXJvLCB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGhpc3Rvcnkg bGlzdCBpcyBub3QgbGltaXRlZC4KKysKKyBAaXRlbSBob3Jpem9udGFsLXNjcm9sbC1tb2RlCisg QHZpbmRleCBob3Jpem9udGFsLXNjcm9sbC1tb2RlCisgVGhpcyB2YXJpYWJsZSBjYW4gYmUgc2V0 IHRvIGVpdGhlciBAc2FtcHtvbn0gb3IgQHNhbXB7b2ZmfS4gIFNldHRpbmcgaXQKK0BAIC01MzUs MTAgKzU4NiwxNyBAQCBUaGUgZGVmYXVsdCBpcyBAc2FtcHtvZmZ9LgorIEB2aW5kZXggbWF0Y2gt aGlkZGVuLWZpbGVzCisgVGhpcyB2YXJpYWJsZSwgd2hlbiBzZXQgdG8gQHNhbXB7b259LCBjYXVz ZXMgUmVhZGxpbmUgdG8gbWF0Y2ggZmlsZXMgd2hvc2UKKyBuYW1lcyBiZWdpbiB3aXRoIGEgQHNh bXB7Ln0gKGhpZGRlbiBmaWxlcykgd2hlbiBwZXJmb3JtaW5nIGZpbGVuYW1lCistY29tcGxldGlv biwgdW5sZXNzIHRoZSBsZWFkaW5nIEBzYW1wey59IGlzCisrY29tcGxldGlvbi4KKytJZiBzZXQg dG8gQHNhbXB7b2ZmfSwgdGhlIGxlYWRpbmcgQHNhbXB7Ln0gbXVzdCBiZQorIHN1cHBsaWVkIGJ5 IHRoZSB1c2VyIGluIHRoZSBmaWxlbmFtZSB0byBiZSBjb21wbGV0ZWQuCisgVGhpcyB2YXJpYWJs ZSBpcyBAc2FtcHtvbn0gYnkgZGVmYXVsdC4KKyAKKytAaXRlbSBtZW51LWNvbXBsZXRlLWRpc3Bs YXktcHJlZml4CisrQHZpbmRleCBtZW51LWNvbXBsZXRlLWRpc3BsYXktcHJlZml4CisrSWYgc2V0 IHRvIEBzYW1we29ufSwgbWVudSBjb21wbGV0aW9uIGRpc3BsYXlzIHRoZSBjb21tb24gcHJlZml4 IG9mIHRoZQorK2xpc3Qgb2YgcG9zc2libGUgY29tcGxldGlvbnMgKHdoaWNoIG1heSBiZSBlbXB0 eSkgYmVmb3JlIGN5Y2xpbmcgdGhyb3VnaAorK3RoZSBsaXN0LiAgVGhlIGRlZmF1bHQgaXMgQHNh bXB7b2ZmfS4KKysKKyBAaXRlbSBvdXRwdXQtbWV0YQorIEB2aW5kZXggb3V0cHV0LW1ldGEKKyBJ ZiBzZXQgdG8gQHNhbXB7b259LCBSZWFkbGluZSB3aWxsIGRpc3BsYXkgY2hhcmFjdGVycyB3aXRo IHRoZQorQEAgLTU1Niw2ICs2MTQsMTMgQEAgSWYgc2V0IHRvIEBzYW1we29ufSwgUmVhZGxpbmUg d2lsbCBkaXNwbGF5IGNvbXBsZXRpb25zIHdpdGggbWF0Y2hlcworIHNvcnRlZCBob3Jpem9udGFs bHkgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLCByYXRoZXIgdGhhbiBkb3duIHRoZSBzY3JlZW4uCisg VGhlIGRlZmF1bHQgaXMgQHNhbXB7b2ZmfS4KKyAKKytAaXRlbSByZXZlcnQtYWxsLWF0LW5ld2xp bmUKKytAdmluZGV4IHJldmVydC1hbGwtYXQtbmV3bGluZQorK0lmIHNldCB0byBAc2FtcHtvbn0s IFJlYWRsaW5lIHdpbGwgdW5kbyBhbGwgY2hhbmdlcyB0byBoaXN0b3J5IGxpbmVzCisrYmVmb3Jl IHJldHVybmluZyB3aGVuIEBjb2Rle2FjY2VwdC1saW5lfSBpcyBleGVjdXRlZC4gIEJ5IGRlZmF1 bHQsCisraGlzdG9yeSBsaW5lcyBtYXkgYmUgbW9kaWZpZWQgYW5kIHJldGFpbiBpbmRpdmlkdWFs IHVuZG8gbGlzdHMgYWNyb3NzCisrY2FsbHMgdG8gQGNvZGV7cmVhZGxpbmV9LiAgVGhlIGRlZmF1 bHQgaXMgQHNhbXB7b2ZmfS4KKysKKyBAaXRlbSBzaG93LWFsbC1pZi1hbWJpZ3VvdXMKKyBAdmlu ZGV4IHNob3ctYWxsLWlmLWFtYmlndW91cworIFRoaXMgYWx0ZXJzIHRoZSBkZWZhdWx0IGJlaGF2 aW9yIG9mIHRoZSBjb21wbGV0aW9uIGZ1bmN0aW9ucy4gIElmCitAQCAtNTc1LDYgKzY0MCwyMCBA QCBhIGNvbW1vbiBwcmVmaXgpIGNhdXNlIHRoZSBtYXRjaGVzIHRvIGJlIGxpc3RlZCBpbW1lZGlh dGVseSBpbnN0ZWFkCisgb2YgcmluZ2luZyB0aGUgYmVsbC4KKyBUaGUgZGVmYXVsdCB2YWx1ZSBp cyBAc2FtcHtvZmZ9LgorIAorK0BpdGVtIHNraXAtY29tcGxldGVkLXRleHQKKytAdmluZGV4IHNr aXAtY29tcGxldGVkLXRleHQKKytJZiBzZXQgdG8gQHNhbXB7b259LCB0aGlzIGFsdGVycyB0aGUg ZGVmYXVsdCBjb21wbGV0aW9uIGJlaGF2aW9yIHdoZW4KKytpbnNlcnRpbmcgYSBzaW5nbGUgbWF0 Y2ggaW50byB0aGUgbGluZS4gIEl0J3Mgb25seSBhY3RpdmUgd2hlbgorK3BlcmZvcm1pbmcgY29t cGxldGlvbiBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZC4gIElmIGVuYWJsZWQsIHJlYWRsaW5lCisr ZG9lcyBub3QgaW5zZXJ0IGNoYXJhY3RlcnMgZnJvbSB0aGUgY29tcGxldGlvbiB0aGF0IG1hdGNo IGNoYXJhY3RlcnMKKythZnRlciBwb2ludCBpbiB0aGUgd29yZCBiZWluZyBjb21wbGV0ZWQsIHNv IHBvcnRpb25zIG9mIHRoZSB3b3JkCisrZm9sbG93aW5nIHRoZSBjdXJzb3IgYXJlIG5vdCBkdXBs aWNhdGVkLgorK0ZvciBpbnN0YW5jZSwgaWYgdGhpcyBpcyBlbmFibGVkLCBhdHRlbXB0aW5nIGNv bXBsZXRpb24gd2hlbiB0aGUgY3Vyc29yCisraXMgYWZ0ZXIgdGhlIEBzYW1we2V9IGluIEBzYW1w e01ha2VmaWxlfSB3aWxsIHJlc3VsdCBpbiBAc2FtcHtNYWtlZmlsZX0KKytyYXRoZXIgdGhhbiBA c2FtcHtNYWtlZmlsZWZpbGV9LCBhc3N1bWluZyB0aGVyZSBpcyBhIHNpbmdsZSBwb3NzaWJsZQor K2NvbXBsZXRpb24uCisrVGhlIGRlZmF1bHQgdmFsdWUgaXMgQHNhbXB7b2ZmfS4KKysKKyBAaXRl bSB2aXNpYmxlLXN0YXRzCisgQHZpbmRleCB2aXNpYmxlLXN0YXRzCisgSWYgc2V0IHRvIEBzYW1w e29ufSwgYSBjaGFyYWN0ZXIgZGVub3RpbmcgYSBmaWxlJ3MgdHlwZQorQEAgLTU5Myw5ICs2NzIs MTEgQEAgdGhlIGNvbW1hbmQgZG9lcy4KKyBPbmNlIHlvdSBrbm93IHRoZSBuYW1lIG9mIHRoZSBj b21tYW5kLCBzaW1wbHkgcGxhY2Ugb24gYSBsaW5lCisgaW4gdGhlIGluaXQgZmlsZSB0aGUgbmFt ZSBvZiB0aGUga2V5CisgeW91IHdpc2ggdG8gYmluZCB0aGUgY29tbWFuZCB0bywgYSBjb2xvbiwg YW5kIHRoZW4gdGhlIG5hbWUgb2YgdGhlCistY29tbWFuZC4gIFRoZSBuYW1lIG9mIHRoZSBrZXkK Ky1jYW4gYmUgZXhwcmVzc2VkIGluIGRpZmZlcmVudCB3YXlzLCBkZXBlbmRpbmcgb24gd2hhdCB5 b3UgZmluZCBtb3N0CistY29tZm9ydGFibGUuCisrY29tbWFuZC4KKytUaGVyZSBjYW4gYmUgbm8g c3BhY2UgYmV0d2VlbiB0aGUga2V5IG5hbWUgYW5kIHRoZSBjb2xvbiAtLSB0aGF0IHdpbGwgYmUK KytpbnRlcnByZXRlZCBhcyBwYXJ0IG9mIHRoZSBrZXkgbmFtZS4KKytUaGUgbmFtZSBvZiB0aGUg a2V5IGNhbiBiZSBleHByZXNzZWQgaW4gZGlmZmVyZW50IHdheXMsIGRlcGVuZGluZyBvbgorK3do YXQgeW91IGZpbmQgbW9zdCBjb21mb3J0YWJsZS4KKyAKKyBJbiBhZGRpdGlvbiB0byBjb21tYW5k IG5hbWVzLCByZWFkbGluZSBhbGxvd3Mga2V5cyB0byBiZSBib3VuZAorIHRvIGEgc3RyaW5nIHRo YXQgaXMgaW5zZXJ0ZWQgd2hlbiB0aGUga2V5IGlzIHByZXNzZWQgKGEgQHZhcnttYWNyb30pLgor QEAgLTkzNywxMiArMTAxOCwyMiBAQCBNb3ZlIGZvcndhcmQgYSBjaGFyYWN0ZXIuCisgTW92ZSBi YWNrIGEgY2hhcmFjdGVyLgorIAorIEBpdGVtIGZvcndhcmQtd29yZCAoTS1mKQorLU1vdmUgZm9y d2FyZCB0byB0aGUgZW5kIG9mIHRoZSBuZXh0IHdvcmQuICBXb3JkcyBhcmUgY29tcG9zZWQgb2YK Ky1sZXR0ZXJzIGFuZCBkaWdpdHMuCisrTW92ZSBmb3J3YXJkIHRvIHRoZSBlbmQgb2YgdGhlIG5l eHQgd29yZC4KKytXb3JkcyBhcmUgY29tcG9zZWQgb2YgbGV0dGVycyBhbmQgZGlnaXRzLgorIAor IEBpdGVtIGJhY2t3YXJkLXdvcmQgKE0tYikKKy1Nb3ZlIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRo ZSBjdXJyZW50IG9yIHByZXZpb3VzIHdvcmQuICBXb3JkcyBhcmUKKy1jb21wb3NlZCBvZiBsZXR0 ZXJzIGFuZCBkaWdpdHMuCisrTW92ZSBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUgY3VycmVudCBv ciBwcmV2aW91cyB3b3JkLgorK1dvcmRzIGFyZSBjb21wb3NlZCBvZiBsZXR0ZXJzIGFuZCBkaWdp dHMuCisrCisrQGlmc2V0IEJhc2hGZWF0dXJlcworK0BpdGVtIHNoZWxsLWZvcndhcmQtd29yZCAo KQorK01vdmUgZm9yd2FyZCB0byB0aGUgZW5kIG9mIHRoZSBuZXh0IHdvcmQuCisrV29yZHMgYXJl IGRlbGltaXRlZCBieSBub24tcXVvdGVkIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgorKworK0BpdGVt IHNoZWxsLWJhY2t3YXJkLXdvcmQgKCkKKytNb3ZlIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBj dXJyZW50IG9yIHByZXZpb3VzIHdvcmQuCisrV29yZHMgYXJlIGRlbGltaXRlZCBieSBub24tcXVv dGVkIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgorK0BlbmQgaWZzZXQKKyAKKyBAaXRlbSBjbGVhci1z Y3JlZW4gKEMtbCkKKyBDbGVhciB0aGUgc2NyZWVuIGFuZCByZWRyYXcgdGhlIGN1cnJlbnQgbGlu ZSwKK0BAIC0xMDI5LDEwICsxMTIwLDE0IEBAIGFzIGlmIHRoZSBAc2FtcHshQHZhcntufX0gaGlz dG9yeSBleHBhbnNpb24gaGFkIGJlZW4gc3BlY2lmaWVkLgorIAorIEBpdGVtIHlhbmstbGFzdC1h cmcgKE0tLiBvciBNLV8pCisgSW5zZXJ0IGxhc3QgYXJndW1lbnQgdG8gdGhlIHByZXZpb3VzIGNv bW1hbmQgKHRoZSBsYXN0IHdvcmQgb2YgdGhlCistcHJldmlvdXMgaGlzdG9yeSBlbnRyeSkuICBX aXRoIGFuCistYXJndW1lbnQsIGJlaGF2ZSBleGFjdGx5IGxpa2UgQGNvZGV7eWFuay1udGgtYXJn fS4KKytwcmV2aW91cyBoaXN0b3J5IGVudHJ5KS4KKytXaXRoIGEgbnVtZXJpYyBhcmd1bWVudCwg YmVoYXZlIGV4YWN0bHkgbGlrZSBAY29kZXt5YW5rLW50aC1hcmd9LgorIFN1Y2Nlc3NpdmUgY2Fs bHMgdG8gQGNvZGV7eWFuay1sYXN0LWFyZ30gbW92ZSBiYWNrIHRocm91Z2ggdGhlIGhpc3RvcnkK Ky1saXN0LCBpbnNlcnRpbmcgdGhlIGxhc3QgYXJndW1lbnQgb2YgZWFjaCBsaW5lIGluIHR1cm4u CisrbGlzdCwgaW5zZXJ0aW5nIHRoZSBsYXN0IHdvcmQgKG9yIHRoZSB3b3JkIHNwZWNpZmllZCBi eSB0aGUgYXJndW1lbnQgdG8KKyt0aGUgZmlyc3QgY2FsbCkgb2YgZWFjaCBsaW5lIGluIHR1cm4u CisrQW55IG51bWVyaWMgYXJndW1lbnQgc3VwcGxpZWQgdG8gdGhlc2Ugc3VjY2Vzc2l2ZSBjYWxs cyBkZXRlcm1pbmVzCisrdGhlIGRpcmVjdGlvbiB0byBtb3ZlIHRocm91Z2ggdGhlIGhpc3Rvcnku ICBBIG5lZ2F0aXZlIGFyZ3VtZW50IHN3aXRjaGVzCisrdGhlIGRpcmVjdGlvbiB0aHJvdWdoIHRo ZSBoaXN0b3J5IChiYWNrIG9yIGZvcndhcmQpLgorIFRoZSBoaXN0b3J5IGV4cGFuc2lvbiBmYWNp bGl0aWVzIGFyZSB1c2VkIHRvIGV4dHJhY3QgdGhlIGxhc3QgYXJndW1lbnQsCisgYXMgaWYgdGhl IEBzYW1weyEkfSBoaXN0b3J5IGV4cGFuc2lvbiBoYWQgYmVlbiBzcGVjaWZpZWQuCisgCitAQCAt MTEzOCw2ICsxMjMzLDE3IEBAIFdvcmQgYm91bmRhcmllcyBhcmUgdGhlIHNhbWUgYXMgQGNvZGV7 Zm9yd2FyZC13b3JkfS4KKyBLaWxsIHRoZSB3b3JkIGJlaGluZCBwb2ludC4KKyBXb3JkIGJvdW5k YXJpZXMgYXJlIHRoZSBzYW1lIGFzIEBjb2Rle2JhY2t3YXJkLXdvcmR9LgorIAorK0BpZnNldCBC YXNoRmVhdHVyZXMKKytAaXRlbSBzaGVsbC1raWxsLXdvcmQgKCkKKytLaWxsIGZyb20gcG9pbnQg dG8gdGhlIGVuZCBvZiB0aGUgY3VycmVudCB3b3JkLCBvciBpZiBiZXR3ZWVuCisrd29yZHMsIHRv IHRoZSBlbmQgb2YgdGhlIG5leHQgd29yZC4KKytXb3JkIGJvdW5kYXJpZXMgYXJlIHRoZSBzYW1l IGFzIEBjb2Rle3NoZWxsLWZvcndhcmQtd29yZH0uCisrCisrQGl0ZW0gc2hlbGwtYmFja3dhcmQt a2lsbC13b3JkICgpCisrS2lsbCB0aGUgd29yZCBiZWhpbmQgcG9pbnQuCisrV29yZCBib3VuZGFy aWVzIGFyZSB0aGUgc2FtZSBhcyBAY29kZXtzaGVsbC1iYWNrd2FyZC13b3JkfS4KKytAZW5kIGlm c2V0CisrCisgQGl0ZW0gdW5peC13b3JkLXJ1Ym91dCAoQy13KQorIEtpbGwgdGhlIHdvcmQgYmVo aW5kIHBvaW50LCB1c2luZyB3aGl0ZSBzcGFjZSBhcyBhIHdvcmQgYm91bmRhcnkuCisgVGhlIGtp bGxlZCB0ZXh0IGlzIHNhdmVkIG9uIHRoZSBraWxsLXJpbmcuCitAQCAtMTIxOSw2ICsxMzI1LDkg QEAgVGhlIGRlZmF1bHQgaXMgZmlsZW5hbWUgY29tcGxldGlvbi4KKyAKKyBAaXRlbSBwb3NzaWJs ZS1jb21wbGV0aW9ucyAoTS0/KQorIExpc3QgdGhlIHBvc3NpYmxlIGNvbXBsZXRpb25zIG9mIHRo ZSB0ZXh0IGJlZm9yZSBwb2ludC4KKytXaGVuIGRpc3BsYXlpbmcgY29tcGxldGlvbnMsIFJlYWRs aW5lIHNldHMgdGhlIG51bWJlciBvZiBjb2x1bW5zIHVzZWQKKytmb3IgZGlzcGxheSB0byB0aGUg dmFsdWUgb2YgQGNvZGV7Y29tcGxldGlvbi1kaXNwbGF5LXdpZHRofSwgdGhlIHZhbHVlIG9mCisr dGhlIGVudmlyb25tZW50IHZhcmlhYmxlIEBlbnZ7Q09MVU1OU30sIG9yIHRoZSBzY3JlZW4gd2lk dGgsIGluIHRoYXQgb3JkZXIuCisgCisgQGl0ZW0gaW5zZXJ0LWNvbXBsZXRpb25zIChNLSopCisg SW5zZXJ0IGFsbCBjb21wbGV0aW9ucyBvZiB0aGUgdGV4dCBiZWZvcmUgcG9pbnQgdGhhdCB3b3Vs ZCBoYXZlCitAQCAtMTIzOCw2ICsxMzQ3LDExIEBAIHRocm91Z2ggdGhlIGxpc3QuCisgVGhpcyBj b21tYW5kIGlzIGludGVuZGVkIHRvIGJlIGJvdW5kIHRvIEBrZXl7VEFCfSwgYnV0IGlzIHVuYm91 bmQKKyBieSBkZWZhdWx0LgorIAorK0BpdGVtIG1lbnUtY29tcGxldGUtYmFja3dhcmQgKCkKKytJ ZGVudGljYWwgdG8gQGNvZGV7bWVudS1jb21wbGV0ZX0sIGJ1dCBtb3ZlcyBiYWNrd2FyZCB0aHJv dWdoIHRoZSBsaXN0Cisrb2YgcG9zc2libGUgY29tcGxldGlvbnMsIGFzIGlmIEBjb2Rle21lbnUt Y29tcGxldGV9IGhhZCBiZWVuIGdpdmVuIGEKKytuZWdhdGl2ZSBhcmd1bWVudC4KKysKKyBAaXRl bSBkZWxldGUtY2hhci1vci1saXN0ICgpCisgRGVsZXRlcyB0aGUgY2hhcmFjdGVyIHVuZGVyIHRo ZSBjdXJzb3IgaWYgbm90IGF0IHRoZSBiZWdpbm5pbmcgb3IKKyBlbmQgb2YgdGhlIGxpbmUgKGxp a2UgQGNvZGV7ZGVsZXRlLWNoYXJ9KS4KK0BAIC0xMjkzLDYgKzE0MDcsMTEgQEAgQXR0ZW1wdCBj b21wbGV0aW9uIG9uIHRoZSB0ZXh0IGJlZm9yZSBwb2ludCwgY29tcGFyaW5nCisgdGhlIHRleHQg YWdhaW5zdCBsaW5lcyBmcm9tIHRoZSBoaXN0b3J5IGxpc3QgZm9yIHBvc3NpYmxlCisgY29tcGxl dGlvbiBtYXRjaGVzLgorIAorK0BpdGVtIGRhYmJyZXYtZXhwYW5kICgpCisrQXR0ZW1wdCBtZW51 IGNvbXBsZXRpb24gb24gdGhlIHRleHQgYmVmb3JlIHBvaW50LCBjb21wYXJpbmcKKyt0aGUgdGV4 dCBhZ2FpbnN0IGxpbmVzIGZyb20gdGhlIGhpc3RvcnkgbGlzdCBmb3IgcG9zc2libGUKKytjb21w bGV0aW9uIG1hdGNoZXMuCisrCisgQGl0ZW0gY29tcGxldGUtaW50by1icmFjZXMgKE0tQHspCisg UGVyZm9ybSBmaWxlbmFtZSBjb21wbGV0aW9uIGFuZCBpbnNlcnQgdGhlIGxpc3Qgb2YgcG9zc2li bGUgY29tcGxldGlvbnMKKyBlbmNsb3NlZCB3aXRoaW4gYnJhY2VzIHNvIHRoZSBsaXN0IGlzIGF2 YWlsYWJsZSB0byB0aGUgc2hlbGwKK0BAIC0xMzcyLDYgKzE0OTEsMTUgQEAgQSBjaGFyYWN0ZXIg aXMgcmVhZCBhbmQgcG9pbnQgaXMgbW92ZWQgdG8gdGhlIHByZXZpb3VzIG9jY3VycmVuY2UKKyBv ZiB0aGF0IGNoYXJhY3Rlci4gIEEgbmVnYXRpdmUgY291bnQgc2VhcmNoZXMgZm9yIHN1YnNlcXVl bnQKKyBvY2N1cnJlbmNlcy4KKyAKKytAaXRlbSBza2lwLWNzaS1zZXF1ZW5jZSAoKQorK1JlYWQg ZW5vdWdoIGNoYXJhY3RlcnMgdG8gY29uc3VtZSBhIG11bHRpLWtleSBzZXF1ZW5jZSBzdWNoIGFz IHRob3NlCisrZGVmaW5lZCBmb3Iga2V5cyBsaWtlIEhvbWUgYW5kIEVuZC4gIFN1Y2ggc2VxdWVu Y2VzIGJlZ2luIHdpdGggYQorK0NvbnRyb2wgU2VxdWVuY2UgSW5kaWNhdG9yIChDU0kpLCB1c3Vh bGx5IEVTQy1bLiAgSWYgdGhpcyBzZXF1ZW5jZSBpcworK2JvdW5kIHRvICJcZVsiLCBrZXlzIHBy b2R1Y2luZyBzdWNoIHNlcXVlbmNlcyB3aWxsIGhhdmUgbm8gZWZmZWN0CisrdW5sZXNzIGV4cGxp Y2l0bHkgYm91bmQgdG8gYSByZWFkbGluZSBjb21tYW5kLCBpbnN0ZWFkIG9mIGluc2VydGluZwor K3N0cmF5IGNoYXJhY3RlcnMgaW50byB0aGUgZWRpdGluZyBidWZmZXIuICBUaGlzIGlzIHVuYm91 bmQgYnkgZGVmYXVsdCwKKytidXQgdXN1YWxseSBib3VuZCB0byBFU0MtWy4KKysKKyBAaXRlbSBp bnNlcnQtY29tbWVudCAoTS0jKQorIFdpdGhvdXQgYSBudW1lcmljIGFyZ3VtZW50LCB0aGUgdmFs dWUgb2YgdGhlIEBjb2Rle2NvbW1lbnQtYmVnaW59CisgdmFyaWFibGUgaXMgaW5zZXJ0ZWQgYXQg dGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBsaW5lLgorQEAgLTE0ODEsNyArMTYwOSw3IEBA IGVkaXRpbmcgbW9kZS4KKyBXaGlsZSB0aGUgUmVhZGxpbmUgbGlicmFyeSBkb2VzIG5vdCBoYXZl IGEgZnVsbCBzZXQgb2YgQGNvZGV7dml9CisgZWRpdGluZyBmdW5jdGlvbnMsIGl0IGRvZXMgY29u dGFpbiBlbm91Z2ggdG8gYWxsb3cgc2ltcGxlIGVkaXRpbmcKKyBvZiB0aGUgbGluZS4gIFRoZSBS ZWFkbGluZSBAY29kZXt2aX0gbW9kZSBiZWhhdmVzIGFzIHNwZWNpZmllZCBpbgorLXRoZSBAc2N7 cG9zaXh9IDEwMDMuMiBzdGFuZGFyZC4KKyt0aGUgQHNje3Bvc2l4fSBzdGFuZGFyZC4KKyAKKyBA aWZzZXQgQmFzaEZlYXR1cmVzCisgSW4gb3JkZXIgdG8gc3dpdGNoIGludGVyYWN0aXZlbHkgYmV0 d2VlbiBAY29kZXtlbWFjc30gYW5kIEBjb2Rle3ZpfQorQEAgLTE1MTUsMTAgKzE2NDMsMTUgQEAg dGhlIHByb2dyYW1tYWJsZSBjb21wbGV0aW9uIGZhY2lsaXRpZXMgYXJlIGludm9rZWQuCisgRmly c3QsIHRoZSBjb21tYW5kIG5hbWUgaXMgaWRlbnRpZmllZC4KKyBJZiBhIGNvbXBzcGVjIGhhcyBi ZWVuIGRlZmluZWQgZm9yIHRoYXQgY29tbWFuZCwgdGhlCisgY29tcHNwZWMgaXMgdXNlZCB0byBn ZW5lcmF0ZSB0aGUgbGlzdCBvZiBwb3NzaWJsZSBjb21wbGV0aW9ucyBmb3IgdGhlIHdvcmQuCisr SWYgdGhlIGNvbW1hbmQgd29yZCBpcyB0aGUgZW1wdHkgc3RyaW5nIChjb21wbGV0aW9uIGF0dGVt cHRlZCBhdCB0aGUKKytiZWdpbm5pbmcgb2YgYW4gZW1wdHkgbGluZSksIGFueSBjb21wc3BlYyBk ZWZpbmVkIHdpdGgKKyt0aGUgQG9wdGlvbnstRX0gb3B0aW9uIHRvIEBjb2Rle2NvbXBsZXRlfSBp cyB1c2VkLgorIElmIHRoZSBjb21tYW5kIHdvcmQgaXMgYSBmdWxsIHBhdGhuYW1lLCBhIGNvbXBz cGVjIGZvciB0aGUgZnVsbAorIHBhdGhuYW1lIGlzIHNlYXJjaGVkIGZvciBmaXJzdC4KKyBJZiBu byBjb21wc3BlYyBpcyBmb3VuZCBmb3IgdGhlIGZ1bGwgcGF0aG5hbWUsIGFuIGF0dGVtcHQgaXMg bWFkZSB0bworIGZpbmQgYSBjb21wc3BlYyBmb3IgdGhlIHBvcnRpb24gZm9sbG93aW5nIHRoZSBm aW5hbCBzbGFzaC4KKytJZiB0aG9zZSBzZWFyY2hlcyBkbyBub3QgcmVzdWx0IGluIGEgY29tcHNw ZWMsIGFueSBjb21wc3BlYyBkZWZpbmVkIHdpdGgKKyt0aGUgQG9wdGlvbnstRH0gb3B0aW9uIHRv IEBjb2Rle2NvbXBsZXRlfSBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0LgorIAorIE9uY2UgYSBjb21w c3BlYyBoYXMgYmVlbiBmb3VuZCwgaXQgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgbGlzdCBvZgor IG1hdGNoaW5nIHdvcmRzLgorQEAgLTE1NTUsOSArMTY4OCw5IEBAIGNvbXBsZXRlZCwgYW5kIHRo ZSBtYXRjaGluZyB3b3JkcyBiZWNvbWUgdGhlIHBvc3NpYmxlIGNvbXBsZXRpb25zLgorIAorIEFm dGVyIHRoZXNlIG1hdGNoZXMgaGF2ZSBiZWVuIGdlbmVyYXRlZCwgYW55IHNoZWxsIGZ1bmN0aW9u IG9yIGNvbW1hbmQKKyBzcGVjaWZpZWQgd2l0aCB0aGUgQG9wdGlvbnstRn0gYW5kIEBvcHRpb257 LUN9IG9wdGlvbnMgaXMgaW52b2tlZC4KKy1XaGVuIHRoZSBjb21tYW5kIG9yIGZ1bmN0aW9uIGlz IGludm9rZWQsIHRoZSBAZW52e0NPTVBfTElORX0gYW5kCistQGVudntDT01QX1BPSU5UfSB2YXJp YWJsZXMgYXJlIGFzc2lnbmVkIHZhbHVlcyBhcyBkZXNjcmliZWQgYWJvdmUKKy0oQHB4cmVme0Jh c2ggVmFyaWFibGVzfSkuCisrV2hlbiB0aGUgY29tbWFuZCBvciBmdW5jdGlvbiBpcyBpbnZva2Vk LCB0aGUgQGVudntDT01QX0xJTkV9LAorK0BlbnZ7Q09NUF9QT0lOVH0sIEBlbnZ7Q09NUF9LRVl9 LCBhbmQgQGVudntDT01QX1RZUEV9IHZhcmlhYmxlcyBhcmUKKythc3NpZ25lZCB2YWx1ZXMgYXMg ZGVzY3JpYmVkIGFib3ZlIChAcHhyZWZ7QmFzaCBWYXJpYWJsZXN9KS4KKyBJZiBhIHNoZWxsIGZ1 bmN0aW9uIGlzIGJlaW5nIGludm9rZWQsIHRoZSBAZW52e0NPTVBfV09SRFN9IGFuZAorIEBlbnZ7 Q09NUF9DV09SRH0gdmFyaWFibGVzIGFyZSBhbHNvIHNldC4KKyBXaGVuIHRoZSBmdW5jdGlvbiBv ciBjb21tYW5kIGlzIGludm9rZWQsIHRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUKK0BAIC0xNTcw LDcgKzE3MDMsNyBAQCB0aGUgbWF0Y2hlcy4KKyAKKyBBbnkgZnVuY3Rpb24gc3BlY2lmaWVkIHdp dGggQG9wdGlvbnstRn0gaXMgaW52b2tlZCBmaXJzdC4KKyBUaGUgZnVuY3Rpb24gbWF5IHVzZSBh bnkgb2YgdGhlIHNoZWxsIGZhY2lsaXRpZXMsIGluY2x1ZGluZyB0aGUKKy1AY29kZXtjb21wZ2Vu fSBidWlsdGluIGRlc2NyaWJlZCBiZWxvdworK0Bjb2Rle2NvbXBnZW59IGFuZCBAY29kZXtjb21w b3B0fSBidWlsdGlucyBkZXNjcmliZWQgYmVsb3cKKyAoQHB4cmVme1Byb2dyYW1tYWJsZSBDb21w bGV0aW9uIEJ1aWx0aW5zfSksIHRvIGdlbmVyYXRlIHRoZSBtYXRjaGVzLgorIEl0IG11c3QgcHV0 IHRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBpbiB0aGUgQGVudntDT01QUkVQTFl9IGFycmF5Cisg dmFyaWFibGUuCitAQCAtMTYyMiw2ICsxNzU1LDMwIEBAIHRvIGNvbXBsZXRlZCBuYW1lcyB3aGlj aCBhcmUgc3ltYm9saWMgbGlua3MgdG8gZGlyZWN0b3JpZXMsIHN1YmplY3QgdG8KKyB0aGUgdmFs dWUgb2YgdGhlIEB2YXJ7bWFyay1kaXJlY3Rvcmllc30gUmVhZGxpbmUgdmFyaWFibGUsIHJlZ2Fy ZGxlc3MKKyBvZiB0aGUgc2V0dGluZyBvZiB0aGUgQHZhcnttYXJrLXN5bWxpbmtlZC1kaXJlY3Rv cmllc30gUmVhZGxpbmUgdmFyaWFibGUuCisgCisrVGhlcmUgaXMgc29tZSBzdXBwb3J0IGZvciBk eW5hbWljYWxseSBtb2RpZnlpbmcgY29tcGxldGlvbnMuICBUaGlzIGlzCisrbW9zdCB1c2VmdWwg d2hlbiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYSBkZWZhdWx0IGNvbXBsZXRpb24gc3BlY2lm aWVkCisrd2l0aCBAb3B0aW9uey1EfS4gIEl0J3MgcG9zc2libGUgZm9yIHNoZWxsIGZ1bmN0aW9u cyBleGVjdXRlZCBhcyBjb21wbGV0aW9uCisraGFuZGxlcnMgdG8gaW5kaWNhdGUgdGhhdCBjb21w bGV0aW9uIHNob3VsZCBiZSByZXRyaWVkIGJ5IHJldHVybmluZyBhbgorK2V4aXQgc3RhdHVzIG9m IDEyNC4gIElmIGEgc2hlbGwgZnVuY3Rpb24gcmV0dXJucyAxMjQsIGFuZCBjaGFuZ2VzCisrdGhl IGNvbXBzcGVjIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tbWFuZCBvbiB3aGljaCBjb21wbGV0aW9u IGlzIGJlaW5nCisrYXR0ZW1wdGVkIChzdXBwbGllZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgd2hl biB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQpLAorK3Byb2dyYW1tYWJsZSBjb21wbGV0aW9uIHJl c3RhcnRzIGZyb20gdGhlIGJlZ2lubmluZywgd2l0aCBhbgorK2F0dGVtcHQgdG8gZmluZCBhIG5l dyBjb21wc3BlYyBmb3IgdGhhdCBjb21tYW5kLiAgVGhpcyBhbGxvd3MgYSBzZXQgb2YKKytjb21w bGV0aW9ucyB0byBiZSBidWlsdCBkeW5hbWljYWxseSBhcyBjb21wbGV0aW9uIGlzIGF0dGVtcHRl ZCwgcmF0aGVyIHRoYW4KKytiZWluZyBsb2FkZWQgYWxsIGF0IG9uY2UuCisrCisrRm9yIGluc3Rh bmNlLCBhc3N1bWluZyB0aGF0IHRoZXJlIGlzIGEgbGlicmFyeSBvZiBjb21wc3BlY3MsIGVhY2gg a2VwdCBpbiBhCisrZmlsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9mIHRoZSBjb21tYW5k LCB0aGUgZm9sbG93aW5nIGRlZmF1bHQKKytjb21wbGV0aW9uIGZ1bmN0aW9uIHdvdWxkIGxvYWQg Y29tcGxldGlvbnMgZHluYW1pY2FsbHk6CisrCisrQGV4YW1wbGUKKytfY29tcGxldGlvbl9sb2Fk ZXIoKQorK0B7CisrCS4gIi9ldGMvYmFzaF9jb21wbGV0aW9uLmQvJDEuc2giID4vZGV2L251bGwg Mj4mMSAmJiByZXR1cm4gMTI0CisrQH0KKytjb21wbGV0ZSAtRCAtRiBfY29tcGxldGlvbl9sb2Fk ZXIKKytAZW5kIGV4YW1wbGUKKysKKyBAbm9kZSBQcm9ncmFtbWFibGUgQ29tcGxldGlvbiBCdWls dGlucworIEBzZWN0aW9uIFByb2dyYW1tYWJsZSBDb21wbGV0aW9uIEJ1aWx0aW5zCisgQGNpbmRl eCBjb21wbGV0aW9uIGJ1aWx0aW5zCitAQCAtMTY1NywxMCArMTgxNCwxMCBAQCBtYXRjaGVzIHdl cmUgZ2VuZXJhdGVkLgorIEBpdGVtIGNvbXBsZXRlCisgQGJ0aW5kZXggY29tcGxldGUKKyBAZXhh bXBsZQorLUBjb2Rle2NvbXBsZXRlIFstYWJjZGVmZ2prc3V2XSBbLW8gQHZhcntjb21wLW9wdGlv bn1dIFstQSBAdmFye2FjdGlvbn1dIFstRyBAdmFye2dsb2JwYXR9XSBbLVcgQHZhcnt3b3JkbGlz dH1dCistWy1QIEB2YXJ7cHJlZml4fV0gWy1TIEB2YXJ7c3VmZml4fV0gWy1YIEB2YXJ7ZmlsdGVy cGF0fV0gWy1GIEB2YXJ7ZnVuY3Rpb259XQorLVstQyBAdmFye2NvbW1hbmR9XSBAdmFye25hbWV9 IFtAdmFye25hbWV9IEBkb3Rze31dfQorLUBjb2Rle2NvbXBsZXRlIC1wciBbQHZhcntuYW1lfSBA ZG90c3t9XX0KKytAY29kZXtjb21wbGV0ZSBbLWFiY2RlZmdqa3N1dl0gWy1vIEB2YXJ7Y29tcC1v cHRpb259XSBbLURFXSBbLUEgQHZhcnthY3Rpb259XSBbLUcgQHZhcntnbG9icGF0fV0gWy1XIEB2 YXJ7d29yZGxpc3R9XQorK1stRiBAdmFye2Z1bmN0aW9ufV0gWy1DIEB2YXJ7Y29tbWFuZH1dIFst WCBAdmFye2ZpbHRlcnBhdH1dCisrWy1QIEB2YXJ7cHJlZml4fV0gWy1TIEB2YXJ7c3VmZml4fV0g QHZhcntuYW1lfSBbQHZhcntuYW1lfSBAZG90c3t9XX0KKytAY29kZXtjb21wbGV0ZSAtcHIgWy1E RV0gW0B2YXJ7bmFtZX0gQGRvdHN7fV19CisgQGVuZCBleGFtcGxlCisgCisgU3BlY2lmeSBob3cg YXJndW1lbnRzIHRvIGVhY2ggQHZhcntuYW1lfSBzaG91bGQgYmUgY29tcGxldGVkLgorQEAgLTE2 NzAsOSArMTgyNywxNiBAQCByZXVzZWQgYXMgaW5wdXQuCisgVGhlIEBvcHRpb257LXJ9IG9wdGlv biByZW1vdmVzIGEgY29tcGxldGlvbiBzcGVjaWZpY2F0aW9uIGZvcgorIGVhY2ggQHZhcntuYW1l fSwgb3IsIGlmIG5vIEB2YXJ7bmFtZX1zIGFyZSBzdXBwbGllZCwgYWxsCisgY29tcGxldGlvbiBz cGVjaWZpY2F0aW9ucy4KKytUaGUgQG9wdGlvbnstRH0gb3B0aW9uIGluZGljYXRlcyB0aGF0IHRo ZSByZW1haW5pbmcgb3B0aW9ucyBhbmQgYWN0aW9ucyBzaG91bGQKKythcHBseSB0byB0aGUgYGBk ZWZhdWx0JycgY29tbWFuZCBjb21wbGV0aW9uOyB0aGF0IGlzLCBjb21wbGV0aW9uIGF0dGVtcHRl ZAorK29uIGEgY29tbWFuZCBmb3Igd2hpY2ggbm8gY29tcGxldGlvbiBoYXMgcHJldmlvdXNseSBi ZWVuIGRlZmluZWQuCisrVGhlIEBvcHRpb257LUV9IG9wdGlvbiBpbmRpY2F0ZXMgdGhhdCB0aGUg cmVtYWluaW5nIG9wdGlvbnMgYW5kIGFjdGlvbnMgc2hvdWxkCisrYXBwbHkgdG8gYGBlbXB0eScn IGNvbW1hbmQgY29tcGxldGlvbjsgdGhhdCBpcywgY29tcGxldGlvbiBhdHRlbXB0ZWQgb24gYSAK KytibGFuayBsaW5lLgorIAorIFRoZSBwcm9jZXNzIG9mIGFwcGx5aW5nIHRoZXNlIGNvbXBsZXRp b24gc3BlY2lmaWNhdGlvbnMgd2hlbiB3b3JkIGNvbXBsZXRpb24KKy1pcyBhdHRlbXB0ZWQgaXMg ZGVzY3JpYmVkIGFib3ZlIChAcHhyZWZ7UHJvZ3JhbW1hYmxlIENvbXBsZXRpb259KS4KKytpcyBh dHRlbXB0ZWQgaXMgZGVzY3JpYmVkIGFib3ZlIChAcHhyZWZ7UHJvZ3JhbW1hYmxlIENvbXBsZXRp b259KS4gIFRoZQorK0BvcHRpb257LUR9IG9wdGlvbiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgQG9w dGlvbnstRX0uCisgCisgT3RoZXIgb3B0aW9ucywgaWYgc3BlY2lmaWVkLCBoYXZlIHRoZSBmb2xs b3dpbmcgbWVhbmluZ3MuCisgVGhlIGFyZ3VtZW50cyB0byB0aGUgQG9wdGlvbnstR30sIEBvcHRp b257LVd9LCBhbmQgQG9wdGlvbnstWH0gb3B0aW9ucworQEAgLTE3MDIsOSArMTg2NiwxMCBAQCBQ ZXJmb3JtIGRpcmVjdG9yeSBuYW1lIGNvbXBsZXRpb24gaWYgdGhlIGNvbXBzcGVjIGdlbmVyYXRl cyBubyBtYXRjaGVzLgorIAorIEBpdGVtIGZpbGVuYW1lcworIFRlbGwgUmVhZGxpbmUgdGhhdCB0 aGUgY29tcHNwZWMgZ2VuZXJhdGVzIGZpbGVuYW1lcywgc28gaXQgY2FuIHBlcmZvcm0gYW55Cist ZmlsZW5hbWUtc3BlY2lmaWMgcHJvY2Vzc2luZyAobGlrZSBhZGRpbmcgYSBzbGFzaCB0byBkaXJl Y3RvcnkgbmFtZXMgb3IKKy1zdXBwcmVzc2luZyB0cmFpbGluZyBzcGFjZXMpLiAgVGhpcyBvcHRp b24gaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoCistc2hlbGwgZnVuY3Rpb25zIHNwZWNpZmll ZCB3aXRoIEBvcHRpb257LUZ9LgorK2ZpbGVuYW1lLXNwZWNpZmljIHByb2Nlc3NpbmcgKGxpa2Ug YWRkaW5nIGEgc2xhc2ggdG8gZGlyZWN0b3J5IG5hbWVzCisrcXVvdGluZyBzcGVjaWFsIGNoYXJh Y3RlcnMsIG9yIHN1cHByZXNzaW5nIHRyYWlsaW5nIHNwYWNlcykuCisrVGhpcyBvcHRpb24gaXMg aW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoIHNoZWxsIGZ1bmN0aW9ucyBzcGVjaWZpZWQKKyt3aXRo IEBvcHRpb257LUZ9LgorIAorIEBpdGVtIG5vc3BhY2UKKyBUZWxsIFJlYWRsaW5lIG5vdCB0byBh cHBlbmQgYSBzcGFjZSAodGhlIGRlZmF1bHQpIHRvIHdvcmRzIGNvbXBsZXRlZCBhdAorQEAgLTE3 OTgsMTcgKzE5NjMsNiBAQCBVc2VyIG5hbWVzLiAgTWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIEBv cHRpb257LXV9LgorIE5hbWVzIG9mIGFsbCBzaGVsbCB2YXJpYWJsZXMuICBNYXkgYWxzbyBiZSBz cGVjaWZpZWQgYXMgQG9wdGlvbnstdn0uCisgQGVuZCB0YWJsZQorIAorLUBpdGVtIC1HIEB2YXJ7 Z2xvYnBhdH0KKy1UaGUgZmlsZW5hbWUgZXhwYW5zaW9uIHBhdHRlcm4gQHZhcntnbG9icGF0fSBp cyBleHBhbmRlZCB0byBnZW5lcmF0ZQorLXRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucy4KKy0KKy1A aXRlbSAtVyBAdmFye3dvcmRsaXN0fQorLVRoZSBAdmFye3dvcmRsaXN0fSBpcyBzcGxpdCB1c2lu ZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUKKy1AZW52e0lGU30gc3BlY2lhbCB2YXJpYWJsZSBhcyBk ZWxpbWl0ZXJzLCBhbmQgZWFjaCByZXN1bHRhbnQgd29yZAorLWlzIGV4cGFuZGVkLgorLVRoZSBw b3NzaWJsZSBjb21wbGV0aW9ucyBhcmUgdGhlIG1lbWJlcnMgb2YgdGhlIHJlc3VsdGFudCBsaXN0 IHdoaWNoCistbWF0Y2ggdGhlIHdvcmQgYmVpbmcgY29tcGxldGVkLgorLQorIEBpdGVtIC1DIEB2 YXJ7Y29tbWFuZH0KKyBAdmFye2NvbW1hbmR9IGlzIGV4ZWN1dGVkIGluIGEgc3Vic2hlbGwgZW52 aXJvbm1lbnQsIGFuZCBpdHMgb3V0cHV0IGlzCisgdXNlZCBhcyB0aGUgcG9zc2libGUgY29tcGxl dGlvbnMuCitAQCAtMTgxOSwxMyArMTk3Myw5IEBAIGVudmlyb25tZW50LgorIFdoZW4gaXQgZmlu aXNoZXMsIHRoZSBwb3NzaWJsZSBjb21wbGV0aW9ucyBhcmUgcmV0cmlldmVkIGZyb20gdGhlIHZh bHVlCisgb2YgdGhlIEBlbnZ7Q09NUFJFUExZfSBhcnJheSB2YXJpYWJsZS4KKyAKKy1AaXRlbSAt WCBAdmFye2ZpbHRlcnBhdH0KKy1AdmFye2ZpbHRlcnBhdH0gaXMgYSBwYXR0ZXJuIGFzIHVzZWQg Zm9yIGZpbGVuYW1lIGV4cGFuc2lvbi4KKy1JdCBpcyBhcHBsaWVkIHRvIHRoZSBsaXN0IG9mIHBv c3NpYmxlIGNvbXBsZXRpb25zIGdlbmVyYXRlZCBieSB0aGUKKy1wcmVjZWRpbmcgb3B0aW9ucyBh bmQgYXJndW1lbnRzLCBhbmQgZWFjaCBjb21wbGV0aW9uIG1hdGNoaW5nCistQHZhcntmaWx0ZXJw YXR9IGlzIHJlbW92ZWQgZnJvbSB0aGUgbGlzdC4KKy1BIGxlYWRpbmcgQHNhbXB7IX0gaW4gQHZh cntmaWx0ZXJwYXR9IG5lZ2F0ZXMgdGhlIHBhdHRlcm47IGluIHRoaXMKKy1jYXNlLCBhbnkgY29t cGxldGlvbiBub3QgbWF0Y2hpbmcgQHZhcntmaWx0ZXJwYXR9IGlzIHJlbW92ZWQuCisrQGl0ZW0g LUcgQHZhcntnbG9icGF0fQorK1RoZSBmaWxlbmFtZSBleHBhbnNpb24gcGF0dGVybiBAdmFye2ds b2JwYXR9IGlzIGV4cGFuZGVkIHRvIGdlbmVyYXRlCisrdGhlIHBvc3NpYmxlIGNvbXBsZXRpb25z LgorIAorIEBpdGVtIC1QIEB2YXJ7cHJlZml4fQorIEB2YXJ7cHJlZml4fSBpcyBhZGRlZCBhdCB0 aGUgYmVnaW5uaW5nIG9mIGVhY2ggcG9zc2libGUgY29tcGxldGlvbgorQEAgLTE4MzQsNiArMTk4 NCwyMSBAQCBhZnRlciBhbGwgb3RoZXIgb3B0aW9ucyBoYXZlIGJlZW4gYXBwbGllZC4KKyBAaXRl bSAtUyBAdmFye3N1ZmZpeH0KKyBAdmFye3N1ZmZpeH0gaXMgYXBwZW5kZWQgdG8gZWFjaCBwb3Nz aWJsZSBjb21wbGV0aW9uCisgYWZ0ZXIgYWxsIG90aGVyIG9wdGlvbnMgaGF2ZSBiZWVuIGFwcGxp ZWQuCisrCisrQGl0ZW0gLVcgQHZhcnt3b3JkbGlzdH0KKytUaGUgQHZhcnt3b3JkbGlzdH0gaXMg c3BsaXQgdXNpbmcgdGhlIGNoYXJhY3RlcnMgaW4gdGhlCisrQGVudntJRlN9IHNwZWNpYWwgdmFy aWFibGUgYXMgZGVsaW1pdGVycywgYW5kIGVhY2ggcmVzdWx0YW50IHdvcmQKKytpcyBleHBhbmRl ZC4KKytUaGUgcG9zc2libGUgY29tcGxldGlvbnMgYXJlIHRoZSBtZW1iZXJzIG9mIHRoZSByZXN1 bHRhbnQgbGlzdCB3aGljaAorK21hdGNoIHRoZSB3b3JkIGJlaW5nIGNvbXBsZXRlZC4KKysKKytA aXRlbSAtWCBAdmFye2ZpbHRlcnBhdH0KKytAdmFye2ZpbHRlcnBhdH0gaXMgYSBwYXR0ZXJuIGFz IHVzZWQgZm9yIGZpbGVuYW1lIGV4cGFuc2lvbi4KKytJdCBpcyBhcHBsaWVkIHRvIHRoZSBsaXN0 IG9mIHBvc3NpYmxlIGNvbXBsZXRpb25zIGdlbmVyYXRlZCBieSB0aGUKKytwcmVjZWRpbmcgb3B0 aW9ucyBhbmQgYXJndW1lbnRzLCBhbmQgZWFjaCBjb21wbGV0aW9uIG1hdGNoaW5nCisrQHZhcntm aWx0ZXJwYXR9IGlzIHJlbW92ZWQgZnJvbSB0aGUgbGlzdC4KKytBIGxlYWRpbmcgQHNhbXB7IX0g aW4gQHZhcntmaWx0ZXJwYXR9IG5lZ2F0ZXMgdGhlIHBhdHRlcm47IGluIHRoaXMKKytjYXNlLCBh bnkgY29tcGxldGlvbiBub3QgbWF0Y2hpbmcgQHZhcntmaWx0ZXJwYXR9IGlzIHJlbW92ZWQuCisg QGVuZCB0YWJsZQorIAorIFRoZSByZXR1cm4gdmFsdWUgaXMgdHJ1ZSB1bmxlc3MgYW4gaW52YWxp ZCBvcHRpb24gaXMgc3VwcGxpZWQsIGFuIG9wdGlvbgorQEAgLTE4NDIsNSArMjAwNywzMSBAQCBh cmd1bWVudCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHJlbW92ZSBhIGNvbXBsZXRpb24gc3BlY2lm aWNhdGlvbiBmb3IKKyBhIEB2YXJ7bmFtZX0gZm9yIHdoaWNoIG5vIHNwZWNpZmljYXRpb24gZXhp c3RzLCBvcgorIGFuIGVycm9yIG9jY3VycyBhZGRpbmcgYSBjb21wbGV0aW9uIHNwZWNpZmljYXRp b24uCisgCisrQGl0ZW0gY29tcG9wdAorK0BidGluZGV4IGNvbXBvcHQKKytAZXhhbXBsZQorK0Bj b2Rle2NvbXBvcHR9IFstbyBAdmFye29wdGlvbn1dIFstREVdIFsrbyBAdmFye29wdGlvbn1dIFtA dmFye25hbWV9XQorK0BlbmQgZXhhbXBsZQorK01vZGlmeSBjb21wbGV0aW9uIG9wdGlvbnMgZm9y IGVhY2ggQHZhcntuYW1lfSBhY2NvcmRpbmcgdG8gdGhlCisrQHZhcntvcHRpb259cywgb3IgZm9y IHRoZSBjdXJyZW50bHktZXhlY3V0aW5nIGNvbXBsZXRpb24gaWYgbm8gQHZhcntuYW1lfXMKKyth cmUgc3VwcGxpZWQuCisrSWYgbm8gQHZhcntvcHRpb259cyBhcmUgZ2l2ZW4sIGRpc3BsYXkgdGhl IGNvbXBsZXRpb24gb3B0aW9ucyBmb3IgZWFjaAorK0B2YXJ7bmFtZX0gb3IgdGhlIGN1cnJlbnQg Y29tcGxldGlvbi4KKytUaGUgcG9zc2libGUgdmFsdWVzIG9mIEB2YXJ7b3B0aW9ufSBhcmUgdGhv c2UgdmFsaWQgZm9yIHRoZSBAY29kZXtjb21wbGV0ZX0KKytidWlsdGluIGRlc2NyaWJlZCBhYm92 ZS4KKytUaGUgQG9wdGlvbnstRH0gb3B0aW9uIGluZGljYXRlcyB0aGF0IHRoZSByZW1haW5pbmcg b3B0aW9ucyBzaG91bGQKKythcHBseSB0byB0aGUgYGBkZWZhdWx0JycgY29tbWFuZCBjb21wbGV0 aW9uOyB0aGF0IGlzLCBjb21wbGV0aW9uIGF0dGVtcHRlZAorK29uIGEgY29tbWFuZCBmb3Igd2hp Y2ggbm8gY29tcGxldGlvbiBoYXMgcHJldmlvdXNseSBiZWVuIGRlZmluZWQuCisrVGhlIEBvcHRp b257LUV9IG9wdGlvbiBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVtYWluaW5nIG9wdGlvbnMgc2hvdWxk CisrYXBwbHkgdG8gYGBlbXB0eScnIGNvbW1hbmQgY29tcGxldGlvbjsgdGhhdCBpcywgY29tcGxl dGlvbiBhdHRlbXB0ZWQgb24gYSAKKytibGFuayBsaW5lLgorKworK1RoZSBAb3B0aW9uey1EfSBv cHRpb24gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIEBvcHRpb257LUV9LgorKworK1RoZSByZXR1cm4g dmFsdWUgaXMgdHJ1ZSB1bmxlc3MgYW4gaW52YWxpZCBvcHRpb24gaXMgc3VwcGxpZWQsIGFuIGF0 dGVtcHQKKytpcyBtYWRlIHRvIG1vZGlmeSB0aGUgb3B0aW9ucyBmb3IgYSBAdmFye25hbWV9IGZv ciB3aGljaCBubyBjb21wbGV0aW9uCisrc3BlY2lmaWNhdGlvbiBleGlzdHMsIG9yIGFuIG91dHB1 dCBlcnJvciBvY2N1cnMuCisrCisgQGVuZCB0YWJsZQorKworIEBlbmQgaWZzZXQKKy0tLSBhL3Jl YWRsaW5lL2RvYy9ybHVzZXJtYW4udGV4aQorKysrIGIvcmVhZGxpbmUvZG9jL3JsdXNlcm1hbi50 ZXhpCitAQCAtNCw4ICs0LDYgQEAKKyBAc2V0dGl0bGUgR05VIFJlYWRsaW5lIExpYnJhcnkKKyBA Y29tbWVudCAlKiplbmQgb2YgaGVhZGVyIChUaGlzIGlzIGZvciBydW5uaW5nIFRleGluZm8gb24g YSByZWdpb24uKQorIAorLUBzZXRjaGFwdGVybmV3cGFnZSBvZGQKKy0KKyBAaW5jbHVkZSB2ZXJz aW9uLnRleGkKKyAKKyBAY29weWluZworQEAgLTE0LDcgKzEyLDcgQEAgVGhpcyBtYW51YWwgZGVz Y3JpYmVzIHRoZSBlbmQgdXNlciBpbnRlcmZhY2Ugb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5 CisgY29uc2lzdGVuY3kgb2YgdXNlciBpbnRlcmZhY2UgYWNyb3NzIGRpc2NyZXRlIHByb2dyYW1z IHdoaWNoIHByb3ZpZGUKKyBhIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UuCisgCistQ29weXJpZ2h0 IEBjb3B5cmlnaHR7fSAxOTg4LTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisr Q29weXJpZ2h0IEBjb3B5cmlnaHR7fSAxOTg4LS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorIAorIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBtYWtlIGFuZCBkaXN0cmlidXRl IHZlcmJhdGltIGNvcGllcyBvZgorIHRoaXMgbWFudWFsIHByb3ZpZGVkIHRoZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlCitAQCAtMjIsMTUgKzIwLDE2IEBAIGFy ZSBwcmVzZXJ2ZWQgb24gYWxsIGNvcGllcy4KKyAKKyBAcXVvdGF0aW9uCisgUGVybWlzc2lvbiBp cyBncmFudGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGlzIGRvY3VtZW50 CistdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2Us IFZlcnNpb24gMS4xIG9yCisrdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgRnJlZSBEb2N1bWVu dGF0aW9uIExpY2Vuc2UsIFZlcnNpb24gMS4zIG9yCisgYW55IGxhdGVyIHZlcnNpb24gcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHdpdGggbm8KKy1JbnZhcmlhbnQg U2VjdGlvbnMsIHdpdGggdGhlIEZyb250LUNvdmVyIHRleHRzIGJlaW5nIGBgQSBHTlUgTWFudWFs LCcnCisrSW52YXJpYW50IFNlY3Rpb25zLCB3aXRoIHRoZSBGcm9udC1Db3ZlciB0ZXh0cyBiZWlu ZyBgYEEgR05VIE1hbnVhbCcnLAorIGFuZCB3aXRoIHRoZSBCYWNrLUNvdmVyIFRleHRzIGFzIGlu IChhKSBiZWxvdy4gIEEgY29weSBvZiB0aGUgbGljZW5zZSBpcworLWluY2x1ZGVkIGluIHRoZSBz ZWN0aW9uIGVudGl0bGVkIGBgR05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlLicnCisraW5j bHVkZWQgaW4gdGhlIHNlY3Rpb24gZW50aXRsZWQgYGBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExp Y2Vuc2UnJy4KKysKKysoYSkgVGhlIEZTRidzIEJhY2stQ292ZXIgVGV4dCBpczogWW91IGFyZSBm cmVlIHRvIGNvcHkgYW5kIG1vZGlmeQorK3RoaXMgR05VIG1hbnVhbC4gIEJ1eWluZyBjb3BpZXMg ZnJvbSBHTlUgUHJlc3Mgc3VwcG9ydHMgdGhlIEZTRiBpbgorK2RldmVsb3BpbmcgR05VIGFuZCBw cm9tb3Rpbmcgc29mdHdhcmUgZnJlZWRvbS4nJworIAorLShhKSBUaGUgRlNGJ3MgQmFjay1Db3Zl ciBUZXh0IGlzOiBgYFlvdSBoYXZlIGZyZWVkb20gdG8gY29weSBhbmQgbW9kaWZ5CistdGhpcyBH TlUgTWFudWFsLCBsaWtlIEdOVSBzb2Z0d2FyZS4gIENvcGllcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUKKy1Tb2Z0d2FyZSBGb3VuZGF0aW9uIHJhaXNlIGZ1bmRzIGZvciBHTlUgZGV2ZWxvcG1lbnQu JycKKyBAZW5kIHF1b3RhdGlvbgorIEBlbmQgY29weWluZworIAorQEAgLTcwLDE4ICs2OSwxNCBA QCBwcm9ncmFtcyB3aGljaCBwcm92aWRlIGEgY29tbWFuZCBsaW5lIGludGVyZmFjZS4KKyAKKyBA bWVudQorICogQ29tbWFuZCBMaW5lIEVkaXRpbmc6OgkgICBHTlUgUmVhZGxpbmUgVXNlcidzIE1h bnVhbC4KKy0qIENvcHlpbmcgVGhpcyBNYW51YWw6OgkJQ29weWluZyBUaGlzIE1hbnVhbC4KKysq IEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5zZTo6CUxpY2Vuc2UgZm9yIGNvcHlpbmcgdGhp cyBtYW51YWwuCisgQGVuZCBtZW51CisgQGVuZCBpZm5vdHRleAorIAorIEBpbmNsdWRlIHJsdXNl ci50ZXhpCisgCistQG5vZGUgQ29weWluZyBUaGlzIE1hbnVhbAorLUBhcHBlbmRpeCBDb3B5aW5n IFRoaXMgTWFudWFsCistCistQG1lbnUKKy0qIEdOVSBGcmVlIERvY3VtZW50YXRpb24gTGljZW5z ZTo6CUxpY2Vuc2UgZm9yIGNvcHlpbmcgdGhpcyBtYW51YWwuCistQGVuZCBtZW51CisrQG5vZGUg R05VIEZyZWUgRG9jdW1lbnRhdGlvbiBMaWNlbnNlCisrQGFwcGVuZGl4IEdOVSBGcmVlIERvY3Vt ZW50YXRpb24gTGljZW5zZQorIAorIEBpbmNsdWRlIGZkbC50ZXhpCisgCistLS0gYS9yZWFkbGlu ZS9kb2MvdGV4aTJkdmkKKysrKyBiL3JlYWRsaW5lL2RvYy90ZXhpMmR2aQorQEAgLTUsMjAgKzUs MTggQEAKKyAjIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5 NywgMTk5OCwgMTk5OSwgMjAwMSwKKyAjIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisgIworLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRp b24pCistIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysjICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysjICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyAjCistIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMgICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorICMKKy0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90 LCB5b3UgY2FuIGVpdGhlciBzZW5kIGVtYWlsIHRvIHRoaXMKKy0jIHByb2dyYW0ncyBtYWludGFp bmVyIG9yIHdyaXRlIHRvOiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSMgSW5jLjsg NTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzA7IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgor KyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAjCisgIyBPcmlnaW5hbCBhdXRob3I6 IE5vYWggRnJpZWRtYW4gPGZyaWVkbWFuQGdudS5vcmc+LgorICMKKy0tLSBhL3JlYWRsaW5lL2Rv Yy90ZXhpMmh0bWwKKysrKyBiL3JlYWRsaW5lL2RvYy90ZXhpMmh0bWwKK0BAIC03LDIwICs3LDE5 IEBACisgIworICMgICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwICBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKyAjCistIyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSMgICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK Ky0jICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCistIyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICMKKy0jICAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor LSMgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKy0jICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0jICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr IyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAjCistIyAgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKKy0jICAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBC b3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKy0jIAorICMtIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisgCisgIyBUaGlzIHJlcXVpcmVzIHBlcmwgdmVyc2lvbiA1IG9yIGhpZ2hlcgorQEAgLTM1NjQs NyArMzU2Myw3IEBAIElOUFVUX0xJTkU6IHdoaWxlICgkXyA9ICZuZXh0X2xpbmUpIHsKKyAJCSRu YW1lID0gJm5vcm1hbGlzZV9ub2RlKCRuYW1lKTsKKyAJCSRsZXZlbCA9ICRzZWMybGV2ZWx7JHRh Z307CisgCQkjIGNoZWNrIGZvciBpbmRleAorLQkJJGZpcnN0X2luZGV4X2NoYXB0ZXIgPSAkbmFt ZQorKwkJJGZpcnN0X2luZGV4X2NoYXB0ZXIgPSAkbm9kZQorIAkJICBpZiAoJGxldmVsID09IDEg JiYgISRmaXJzdF9pbmRleF9jaGFwdGVyICYmIAorIAkJICAgICAgJG5hbWUgPX4gL2luZGV4L2kp OworIAkJaWYgKCRpbl90b3AgJiYgL2hlYWRpbmcvKXsKKy0tLSBhL3JlYWRsaW5lL2RvYy92ZXJz aW9uLnRleGkKKysrKyBiL3JlYWRsaW5lL2RvYy92ZXJzaW9uLnRleGkKK0BAIC0xLDEwICsxLDEw IEBACisgQGlnbm9yZQorLUNvcHlyaWdodCAoQykgMTk4OC0yMDA1IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLiAKKytDb3B5cmlnaHQgKEMpIDE5ODgtMjAxMSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4gCisgQGVuZCBpZ25vcmUKKyAKKy1Ac2V0IEVESVRJT04gNS4xLWJldGEx CistQHNldCBWRVJTSU9OIDUuMS1iZXRhMQorLUBzZXQgVVBEQVRFRCAxMSBOb3ZlbWJlciAyMDA1 CistQHNldCBVUERBVEVELU1PTlRIIE5vdmVtYmVyIDIwMDUKKytAc2V0IEVESVRJT04gNi4yCisr QHNldCBWRVJTSU9OIDYuMgorK0BzZXQgVVBEQVRFRCBTZXB0ZW1iZXIgNiAyMDEwCisrQHNldCBV UERBVEVELU1PTlRIIFNlcHRlbWJlciAyMDEwCisgCistQHNldCBMQVNUQ0hBTkdFIEZyaSBOb3Yg MTEgMTk6NTA6NTEgRVNUIDIwMDUKKytAc2V0IExBU1RDSEFOR0UgTW9uIFNlcCAgNiAyMjowNzox MCBFRFQgMjAxMAorLS0tIGEvcmVhZGxpbmUvZW1hY3Nfa2V5bWFwLmMKKysrKyBiL3JlYWRsaW5l L2VtYWNzX2tleW1hcC5jCitAQCAtMSwyNCArMSwyMyBAQAorIC8qIGVtYWNzX2tleW1hcC5jIC0t IHRoZSBrZXltYXAgZm9yIGVtYWNzX21vZGUgaW4gcmVhZGxpbmUgKCkuICovCisgCistLyogQ29w eXJpZ2h0IChDKSAxOTg3LCAxOTg5LCAxOTkyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFy eSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0 aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg dGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciBy ZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBl ZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy LCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5l IExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAg dXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29m dHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlO RyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNl bnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBs ZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRlZmluZWQgKEJVRlNJWikKKyAjaW5jbHVk ZSA8c3RkaW8uaD4KKy0tLSBhL3JlYWRsaW5lL2V4YW1wbGVzL0NoYW5nZUxvZy5nZGIKKysrKyBi L3JlYWRsaW5lL2V4YW1wbGVzL0NoYW5nZUxvZy5nZGIKK0BAIC0xLDMgKzEsNyBAQAorKzIwMTEt MDQtMjUgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKysKKysJ SW1wb3J0ZWQgcmVhZGxpbmUgNi4yLCBhbmQgdXBzdHJlYW0gcGF0Y2ggMDAxLgorKworIDIwMDYt MDQtMjQgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CisgCisgCUlt cG9ydGVkIHJlYWRsaW5lIDUuMSwgYW5kIHVwc3RyZWFtIHBhdGNoZXMgMDAxLTAwNC4KKy0tLSBh L3JlYWRsaW5lL2V4YW1wbGVzL0lucHV0cmMKKysrKyBiL3JlYWRsaW5lL2V4YW1wbGVzL0lucHV0 cmMKK0BAIC00LDIxICs0LDIxIEBACisgIyBvbiB3aGljaCBwcm9ncmFtIGlzIHJ1bm5pbmcsIG9y IHdoYXQgdGVybWluYWwgaXMgYWN0aXZlLgorICMKKyAKKy0jIENvcHlyaWdodCAoQykgMTk4OS0y MDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICBDb3B5cmlnaHQgKEMpIDE5 ODktMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAjCistIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKy0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0jIGFueSBsYXRlciB2ZXJzaW9uLgor KyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorKyMgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICMKKy0jIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKy0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKyAjCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0jIEZvdW5kYXRpb24sIElu Yy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4KKyAK KyAjIEluIGFsbCBwcm9ncmFtcywgYWxsIHRlcm1pbmFscywgbWFrZSBzdXJlIHRoaXMgaXMgYm91 bmQuCisgIlxDLXhcQy1yIjogcmUtcmVhZC1pbml0LWZpbGUKKy0tLSBhL3JlYWRsaW5lL2V4YW1w bGVzL01ha2VmaWxlLmluCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9NYWtlZmlsZS5pbgorQEAg LTEsMzAgKzEsNDYgQEAKKyAjCisgIyBUaGlzIGlzIHRoZSBNYWtlZmlsZSBmb3IgdGhlIHJlYWRs aW5lIGV4YW1wbGVzIHN1YmRpcmVjdG9yeS4KKyAjCistIyBDb3B5cmlnaHQgKEMpIDE5OTQgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBDb3B5cmlnaHQgKEMpIDE5OTQsMjAwOCwy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0j IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjICAgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0j IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisr IyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyMgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorIAorLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuCisgUkxfTElCUkFS WV9WRVJTSU9OID0gQExJQlZFUlNJT05ACisgCisgU0hFTEwgPSBATUFLRV9TSEVMTEAKKyBSTSA9 IHJtIC1mCisgCisrcHJlZml4ID0gQHByZWZpeEAKKytleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZp eEAKKysKKytkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKKysKKytiaW5kaXIgPSBAYmluZGly QAorIHNyY2RpciA9IEBzcmNkaXJACistVlBBVEggPSAuOkBzcmNkaXJACisrZGF0YWRpciA9IEBk YXRhZGlyQAorK1ZQQVRIID0gQHNyY2RpckAKKyB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACist QlVJTERfRElSID0gLgorKyNCVUlMRF9ESVIgPSAuCisrQlVJTERfRElSID0gQEJVSUxEX0RJUkAK KytpbnN0YWxsZGlyID0gJChkYXRhZGlyKS9yZWFkbGluZQorKworK0lOU1RBTEwgPSBASU5TVEFM TEAKKytJTlNUQUxMX1BST0dSQU0gPSBASU5TVEFMTF9QUk9HUkFNQAorK0lOU1RBTExfREFUQSA9 IEBJTlNUQUxMX0RBVEFACisrCisrRVhFRVhUID0gQEVYRUVYVEAKKytPQkpFWFQgPSBAT0JKRVhU QAorIAorICMgU3VwcG9ydCBhbiBhbHRlcm5hdGUgZGVzdGluYXRpb24gcm9vdCBkaXJlY3Rvcnkg Zm9yIHBhY2thZ2UgYnVpbGRpbmcKKyBERVNURElSID0KK0BAIC01MSwzMSArNjcsNTYgQEAgVEVS TUNBUF9MSUIgPSBAVEVSTUNBUF9MSUJACisgCSR7Uk19ICRACisgCSQoQ0MpICQoQ0NGTEFHUykg LWMgJDwKKyAKKy1FWEVDVVRBQkxFUyA9IGZpbGVtYW4gcmx0ZXN0IHJsIHJsY2F0IHJsdmVyc2lv biBoaXN0ZXhhbXAgCistT0JKRUNUUyA9IGZpbGVtYW4ubyBybHRlc3QubyBybC5vIHJsY2F0Lm8g cmx2ZXJzaW9uLm8gaGlzdGV4YW1wLm8KKytTT1VSQ0VTID0gZXhjYWxsYmFjay5jIGZpbGVtYW4u YyBoaXN0ZXhhbXAuYyBtYW5leGFtcC5jIHJsLWZnZXRzLmMgcmwuYyBcCisrCQlybGNhdC5jIHJs ZXZlbnQuYyBybHB0eXRlc3QuYyBybHRlc3QuYyBybHZlcnNpb24uYworKworK0VYRUNVVEFCTEVT ID0gZmlsZW1hbiQoRVhFRVhUKSBybHRlc3QkKEVYRUVYVCkgcmwkKEVYRUVYVCkgcmxjYXQkKEVY RUVYVCkgXAorKwkJcmxldmVudCQoRVhFRVhUKSBybHZlcnNpb24kKEVYRUVYVCkgaGlzdGV4YW1w JChFWEVFWFQpCisrT0JKRUNUUyA9IGZpbGVtYW4ubyBybHRlc3QubyBybC5vIHJsZXZlbnQubyBy bGNhdC5vIHJsdmVyc2lvbi5vIGhpc3RleGFtcC5vCisgCisgYWxsOiAkKEVYRUNVVEFCTEVTKQor IGV2ZXJ5dGhpbmc6IGFsbAorIAorLXJsOiBybC5vICQoUkVBRExJTkVfTElCKQorK2NoZWNrOgly bHZlcnNpb24kKEVYRUVYVCkKKysJQGVjaG8gUmVhZGxpbmUgdmVyc2lvbjogYHJsdmVyc2lvbiQo RVhFRVhUKWAKKysKKytpbnN0YWxsZGlyczoKKysJLSQoU0hFTEwpICQodG9wX3NyY2Rpcikvc3Vw cG9ydC9ta2RpcnMgJChERVNURElSKSQoaW5zdGFsbGRpcikKKysKKytpbnN0YWxsOglpbnN0YWxs ZGlycworKwlAZm9yIGYgaW4gJChTT1VSQ0VTKTsgZG8gXAorKwkJJChSTSkgJChERVNURElSKSQo aW5zdGFsbGRpcikvJCRmIDsgXAorKwkJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGYgJChE RVNURElSKSQoaW5zdGFsbGRpcikgOyBcCisrCWRvbmUKKysKKyt1bmluc3RhbGw6CisrCUBmb3Ig ZiBpbiAkKFNPVVJDRVMpOyBkbyBcCisrCQkkKFJNKSAkKERFU1RESVIpJChpbnN0YWxsZGlyKS8k JGYgOyBcCisrCWRvbmUKKysJLXJtZGlyICQoREVTVERJUikkKGluc3RhbGxkaXIpCisrCisrcmwk KEVYRUVYVCk6IHJsLm8gJChSRUFETElORV9MSUIpCisgCSQoUFVSSUZZKSAkKENDKSAkKExERkxB R1MpIC1vICRAIHJsLm8gJChSRUFETElORV9MSUIpICQoVEVSTUNBUF9MSUIpCisgCistcmxjYXQ6 IHJsY2F0Lm8gJChSRUFETElORV9MSUIpCisrcmxjYXQkKEVYRUVYVCk6IHJsY2F0Lm8gJChSRUFE TElORV9MSUIpCisgCSQoUFVSSUZZKSAkKENDKSAkKExERkxBR1MpIC1vICRAIHJsY2F0Lm8gJChS RUFETElORV9MSUIpICQoVEVSTUNBUF9MSUIpCisgCistZmlsZW1hbjogZmlsZW1hbi5vICQoUkVB RExJTkVfTElCKQorK3JsZXZlbnQkKEVYRUVYVCk6IHJsZXZlbnQubyAkKFJFQURMSU5FX0xJQikK KysJJChQVVJJRlkpICQoQ0MpICQoTERGTEFHUykgLW8gJEAgcmxldmVudC5vICQoUkVBRExJTkVf TElCKSAkKFRFUk1DQVBfTElCKQorKworK2ZpbGVtYW4kKEVYRUVYVCk6IGZpbGVtYW4ubyAkKFJF QURMSU5FX0xJQikKKyAJJChQVVJJRlkpICQoQ0MpICQoTERGTEFHUykgLW8gJEAgZmlsZW1hbi5v ICQoUkVBRExJTkVfTElCKSAkKFRFUk1DQVBfTElCKQorIAorLXJsdGVzdDogcmx0ZXN0Lm8gJChS RUFETElORV9MSUIpCisrcmx0ZXN0JChFWEVFWFQpOiBybHRlc3QubyAkKFJFQURMSU5FX0xJQikK KyAJJChQVVJJRlkpICQoQ0MpICQoTERGTEFHUykgLW8gJEAgcmx0ZXN0Lm8gJChSRUFETElORV9M SUIpICQoVEVSTUNBUF9MSUIpCisgCistcmxwdHl0ZXN0OiBybHB0eXRlc3QubyAkKFJFQURMSU5F X0xJQikKKytybHB0eXRlc3QkKEVYRUVYVCk6IHJscHR5dGVzdC5vICQoUkVBRExJTkVfTElCKQor IAkkKFBVUklGWSkgJChDQykgJChMREZMQUdTKSAtbyAkQCBybHB0eXRlc3QubyAkKFJFQURMSU5F X0xJQikgJChURVJNQ0FQX0xJQikKKyAKKy1ybHZlcnNpb246IHJsdmVyc2lvbi5vICQoUkVBRExJ TkVfTElCKQorK3JsdmVyc2lvbiQoRVhFRVhUKTogcmx2ZXJzaW9uLm8gJChSRUFETElORV9MSUIp CisgCSQoQ0MpICQoTERGTEFHUykgLW8gJEAgcmx2ZXJzaW9uLm8gJChSRUFETElORV9MSUIpICQo VEVSTUNBUF9MSUIpCisgCistaGlzdGV4YW1wOiBoaXN0ZXhhbXAubyAkKEhJU1RPUllfTElCKQor K2hpc3RleGFtcCQoRVhFRVhUKTogaGlzdGV4YW1wLm8gJChISVNUT1JZX0xJQikKKyAJJChQVVJJ RlkpICQoQ0MpICQoTERGTEFHUykgLW8gJEAgaGlzdGV4YW1wLm8gLWxoaXN0b3J5ICQoVEVSTUNB UF9MSUIpCisgCisgY2xlYW4gbW9zdGx5Y2xlYW46CistLS0gL2Rldi9udWxsCisrKysgYi9yZWFk bGluZS9leGFtcGxlcy9hdXRvY29uZi9CQVNIX0NIRUNLX0xJQl9URVJNQ0FQCitAQCAtMCwwICsx LDQwIEBACisrQUNfREVGVU4oW0JBU0hfQ0hFQ0tfTElCX1RFUk1DQVBdLAorK1sKKytpZiB0ZXN0 ICJYJGJhc2hfY3ZfdGVybWNhcF9saWIiID0gIlgiOyB0aGVuCisrX2Jhc2hfbmVlZG1zZz15ZXMK KytlbHNlCisrQUNfTVNHX0NIRUNLSU5HKHdoaWNoIGxpYnJhcnkgaGFzIHRoZSB0ZXJtY2FwIGZ1 bmN0aW9ucykKKytfYmFzaF9uZWVkbXNnPQorK2ZpCisrQUNfQ0FDSEVfVkFMKGJhc2hfY3ZfdGVy bWNhcF9saWIsCisrW0FDX0NIRUNLX0ZVTkModGdldGVudCwgYmFzaF9jdl90ZXJtY2FwX2xpYj1s aWJjLAorKyAgW0FDX0NIRUNLX0xJQih0ZXJtY2FwLCB0Z2V0ZW50LCBiYXNoX2N2X3Rlcm1jYXBf bGliPWxpYnRlcm1jYXAsCisrICAgIFtBQ19DSEVDS19MSUIodGluZm8sIHRnZXRlbnQsIGJhc2hf Y3ZfdGVybWNhcF9saWI9bGlidGluZm8sCisrICAgICAgICBbQUNfQ0hFQ0tfTElCKGN1cnNlcywg dGdldGVudCwgYmFzaF9jdl90ZXJtY2FwX2xpYj1saWJjdXJzZXMsCisrCSAgICBbQUNfQ0hFQ0tf TElCKG5jdXJzZXMsIHRnZXRlbnQsIGJhc2hfY3ZfdGVybWNhcF9saWI9bGlibmN1cnNlcywKKysJ ICAgICAgICBiYXNoX2N2X3Rlcm1jYXBfbGliPWdudXRlcm1jYXApXSldKV0pXSldKQorK2lmIHRl c3QgIlgkX2Jhc2hfbmVlZG1zZyIgPSAiWHllcyI7IHRoZW4KKytBQ19NU0dfQ0hFQ0tJTkcod2hp Y2ggbGlicmFyeSBoYXMgdGhlIHRlcm1jYXAgZnVuY3Rpb25zKQorK2ZpCisrQUNfTVNHX1JFU1VM VCh1c2luZyAkYmFzaF9jdl90ZXJtY2FwX2xpYikKKytpZiB0ZXN0ICRiYXNoX2N2X3Rlcm1jYXBf bGliID0gZ251dGVybWNhcCAmJiB0ZXN0IC16ICIkcHJlZmVyX2N1cnNlcyI7IHRoZW4KKytMREZM QUdTPSIkTERGTEFHUyAtTC4vbGliL3Rlcm1jYXAiCisrVEVSTUNBUF9MSUI9Ii4vbGliL3Rlcm1j YXAvbGlidGVybWNhcC5hIgorK1RFUk1DQVBfREVQPSIuL2xpYi90ZXJtY2FwL2xpYnRlcm1jYXAu YSIKKytlbGlmIHRlc3QgJGJhc2hfY3ZfdGVybWNhcF9saWIgPSBsaWJ0ZXJtY2FwICYmIHRlc3Qg LXogIiRwcmVmZXJfY3Vyc2VzIjsgdGhlbgorK1RFUk1DQVBfTElCPS1sdGVybWNhcAorK1RFUk1D QVBfREVQPQorK2VsaWYgdGVzdCAkYmFzaF9jdl90ZXJtY2FwX2xpYiA9IGxpYnRpbmZvOyB0aGVu CisrVEVSTUNBUF9MSUI9LWx0aW5mbworK1RFUk1DQVBfREVQPQorK2VsaWYgdGVzdCAkYmFzaF9j dl90ZXJtY2FwX2xpYiA9IGxpYm5jdXJzZXM7IHRoZW4KKytURVJNQ0FQX0xJQj0tbG5jdXJzZXMK KytURVJNQ0FQX0RFUD0KKytlbGlmIHRlc3QgJGJhc2hfY3ZfdGVybWNhcF9saWIgPSBsaWJjOyB0 aGVuCisrVEVSTUNBUF9MSUI9CisrVEVSTUNBUF9ERVA9CisrZWxzZQorK1RFUk1DQVBfTElCPS1s Y3Vyc2VzCisrVEVSTUNBUF9ERVA9CisrZmkKKytdKQorLS0tIC9kZXYvbnVsbAorKysrIGIvcmVh ZGxpbmUvZXhhbXBsZXMvYXV0b2NvbmYvUkxfTElCX1JFQURMSU5FX1ZFUlNJT04KK0BAIC0wLDAg KzEsMTE4IEBACisrZG5sIG5lZWQ6IHByZWZpeCBleGVjX3ByZWZpeCBsaWJkaXIgaW5jbHVkZWRp ciBDQyBURVJNQ0FQX0xJQgorK2RubCByZXF1aXJlOgorK2RubAlBQ19QUk9HX0NDCisrZG5sCUJB U0hfQ0hFQ0tfTElCX1RFUk1DQVAKKysKKytBQ19ERUZVTihbUkxfTElCX1JFQURMSU5FX1ZFUlNJ T05dLAorK1sKKytBQ19SRVFVSVJFKFtCQVNIX0NIRUNLX0xJQl9URVJNQ0FQXSkKKysKKytBQ19N U0dfQ0hFQ0tJTkcoW3ZlcnNpb24gb2YgaW5zdGFsbGVkIHJlYWRsaW5lIGxpYnJhcnldKQorKwor KyMgV2hhdCBhIHBhaW4gaW4gdGhlIGFzcyB0aGlzIGlzLgorKworKyMgc2F2ZSBjcHAgYW5kIGxk IG9wdGlvbnMKKytfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrX3NhdmVfTERGTEFHUz0iJExERkxB R1MiCisrX3NhdmVfTElCUz0iJExJQlMiCisrCisrIyBEb24ndCBzZXQgYWNfY3ZfcmxfcHJlZml4 IGlmIHRoZSBjYWxsZXIgaGFzIGFscmVhZHkgYXNzaWduZWQgYSB2YWx1ZS4gIFRoaXMKKysjIGFs bG93cyB0aGUgY2FsbGVyIHRvIGRvIHNvbWV0aGluZyBsaWtlICRfcmxfcHJlZml4PSR3aXRodmFs IGlmIHRoZSB1c2VyCisrIyBzcGVjaWZpZXMgLS13aXRoLWluc3RhbGxlZC1yZWFkbGluZT1QUkVG SVggYXMgYW4gYXJndW1lbnQgdG8gY29uZmlndXJlCisrCisraWYgdGVzdCAteiAiJGFjX2N2X3Js X3ByZWZpeCI7IHRoZW4KKyt0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBhY19jdl9ybF9wcmVm aXg9JGFjX2RlZmF1bHRfcHJlZml4IHx8IGFjX2N2X3JsX3ByZWZpeD0ke3ByZWZpeH0KKytmaQor KworK2V2YWwgYWNfY3ZfcmxfaW5jbHVkZWRpcj0ke2FjX2N2X3JsX3ByZWZpeH0vaW5jbHVkZQor K2V2YWwgYWNfY3ZfcmxfbGliZGlyPSR7YWNfY3ZfcmxfcHJlZml4fS9saWIKKysKKytMSUJTPSIk TElCUyAtbHJlYWRsaW5lICR7VEVSTUNBUF9MSUJ9IgorK0NGTEFHUz0iJENGTEFHUyAtSSR7YWNf Y3ZfcmxfaW5jbHVkZWRpcn0iCisrTERGTEFHUz0iJExERkxBR1MgLUwke2FjX2N2X3JsX2xpYmRp cn0iCisrCisrQUNfQ0FDSEVfVkFMKGFjX2N2X3JsX3ZlcnNpb24sCisrW0FDX1RSWV9SVU4oWwor KyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxyZWFkbGluZS9yZWFkbGluZS5oPgorKwor K2V4dGVybiBpbnQgcmxfZ251X3JlYWRsaW5lX3A7CisrCisrbWFpbigpCisreworKwlGSUxFICpm cDsKKysJZnAgPSBmb3BlbigiY29uZnRlc3Qucmx2IiwgInciKTsKKysJaWYgKGZwID09IDApCisr CQlleGl0KDEpOworKwlpZiAocmxfZ251X3JlYWRsaW5lX3AgIT0gMSkKKysJCWZwcmludGYoZnAs ICIwLjBcbiIpOworKwllbHNlCisrCQlmcHJpbnRmKGZwLCAiJXNcbiIsIHJsX2xpYnJhcnlfdmVy c2lvbiA/IHJsX2xpYnJhcnlfdmVyc2lvbiA6ICIwLjAiKTsKKysJZmNsb3NlKGZwKTsKKysJZXhp dCgwKTsKKyt9CisrXSwKKythY19jdl9ybF92ZXJzaW9uPWBjYXQgY29uZnRlc3Qucmx2YCwKKyth Y19jdl9ybF92ZXJzaW9uPScwLjAnLAorK2FjX2N2X3JsX3ZlcnNpb249JzQuMicpXSkKKysKKytD RkxBR1M9IiRfc2F2ZV9DRkxBR1MiCisrTERGTEFHUz0iJF9zYXZlX0xERkxBR1MiCisrTElCUz0i JF9zYXZlX0xJQlMiCisrCisrUkxfTUFKT1I9MAorK1JMX01JTk9SPTAKKysKKysjICgKKytjYXNl ICIkYWNfY3ZfcmxfdmVyc2lvbiIgaW4KKysyKnwzKnw0Knw1Knw2Knw3Knw4Knw5KikKKysJUkxf TUFKT1I9YGVjaG8gJGFjX2N2X3JsX3ZlcnNpb24gfCBzZWQgJ3M6XC4uKiQ6OidgCisrCVJMX01J Tk9SPWBlY2hvICRhY19jdl9ybF92ZXJzaW9uIHwgc2VkIC1lICdzOl4uKlwuOjonIC1lICdzOltb YS16QS1aXV0qJDo6J2AKKysJOzsKKytlc2FjCisrCisrIyAoKCgKKytjYXNlICRSTF9NQUpPUiBp bgorK1tbMC05XVswLTldXSkJX1JMX01BSk9SPSRSTF9NQUpPUiA7OworK1tbMC05XV0pCV9STF9N QUpPUj0wJFJMX01BSk9SIDs7CisrKikJCV9STF9NQUpPUj0wMCA7OworK2VzYWMKKysKKysjICgo KAorK2Nhc2UgJFJMX01JTk9SIGluCisrW1swLTldWzAtOV1dKQlfUkxfTUlOT1I9JFJMX01JTk9S IDs7CisrW1swLTldXSkJX1JMX01JTk9SPTAkUkxfTUlOT1IgOzsKKysqKQkJX1JMX01JTk9SPTAw IDs7CisrZXNhYworKworK1JMX1ZFUlNJT049IjB4JHtfUkxfTUFKT1J9JHtfUkxfTUlOT1J9Igor KworKyMgUmVhZGxpbmUgdmVyc2lvbnMgZ3JlYXRlciB0aGFuIDQuMiBoYXZlIHRoZXNlIGRlZmlu ZXMgaW4gcmVhZGxpbmUuaAorKworK2lmIHRlc3QgJGFjX2N2X3JsX3ZlcnNpb24gPSAnMC4wJyA7 IHRoZW4KKysJQUNfTVNHX1dBUk4oW0NvdWxkIG5vdCB0ZXN0IHZlcnNpb24gb2YgaW5zdGFsbGVk IHJlYWRsaW5lIGxpYnJhcnkuXSkKKytlbGlmIHRlc3QgJFJMX01BSk9SIC1ndCA0IHx8IHsgdGVz dCAkUkxfTUFKT1IgPSA0ICYmIHRlc3QgJFJMX01JTk9SIC1ndCAyIDsgfSA7IHRoZW4KKysJIyBz ZXQgdGhlc2UgZm9yIHVzZSBieSB0aGUgY2FsbGVyCisrCVJMX1BSRUZJWD0kYWNfY3ZfcmxfcHJl Zml4CisrCVJMX0xJQkRJUj0kYWNfY3ZfcmxfbGliZGlyCisrCVJMX0lOQ0xVREVESVI9JGFjX2N2 X3JsX2luY2x1ZGVkaXIKKysJQUNfTVNHX1JFU1VMVCgkYWNfY3ZfcmxfdmVyc2lvbikKKytlbHNl CisrCisrQUNfREVGSU5FX1VOUVVPVEVEKFJMX1JFQURMSU5FX1ZFUlNJT04sICRSTF9WRVJTSU9O LCBbZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBpbnN0YWxsZWQgcmVhZGxpbmUgbGlicmFyeV0pCisr QUNfREVGSU5FX1VOUVVPVEVEKFJMX1ZFUlNJT05fTUFKT1IsICRSTF9NQUpPUiwgW21ham9yIHZl cnNpb24gb2YgaW5zdGFsbGVkIHJlYWRsaW5lIGxpYnJhcnldKQorK0FDX0RFRklORV9VTlFVT1RF RChSTF9WRVJTSU9OX01JTk9SLCAkUkxfTUlOT1IsIFttaW5vciB2ZXJzaW9uIG9mIGluc3RhbGxl ZCByZWFkbGluZSBsaWJyYXJ5XSkKKysKKytBQ19TVUJTVChSTF9WRVJTSU9OKQorK0FDX1NVQlNU KFJMX01BSk9SKQorK0FDX1NVQlNUKFJMX01JTk9SKQorKworKyMgc2V0IHRoZXNlIGZvciB1c2Ug YnkgdGhlIGNhbGxlcgorK1JMX1BSRUZJWD0kYWNfY3ZfcmxfcHJlZml4CisrUkxfTElCRElSPSRh Y19jdl9ybF9saWJkaXIKKytSTF9JTkNMVURFRElSPSRhY19jdl9ybF9pbmNsdWRlZGlyCisrCisr QUNfTVNHX1JFU1VMVCgkYWNfY3ZfcmxfdmVyc2lvbikKKysKKytmaQorK10pCistLS0gL2Rldi9u dWxsCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9hdXRvY29uZi93aV9MSUJfUkVBRExJTkUKK0BA IC0wLDAgKzEsNzYgQEAKKytkbmwgQm9ydXQgUmF6ZW0KKytkbmwKKytkbmwgVGhpcyBtYWNybyBj aGVja3MgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgcmVhZGxpbmUgbGlicmFyeS4KKytkbmwgSXQg d29ya3MgYWxzbyBpbiBjcm9zcy1jb21waWxhdGlvbiBlbnZpcm9ubWVudC4KKytkbmwKKytkbmwg VG8gZ2V0IGl0IGludG8gdGhlIGFjbG9jYWwubTQgZG5sIGZpbGUsIGRvIHRoaXM6CisrZG5sICAg YWNsb2NhbCAtSSAuIC0tdmVyYm9zZQorK2RubAorK2RubCBUaGUgLS12ZXJib3NlIHdpbGwgc2hv dyBhbGwgb2YgdGhlIGZpbGVzIHRoYXQgYXJlIHNlYXJjaGVkCisrZG5sIGZvciAubTQgbWFjcm9z LgorKworK0FDX0RFRlVOKFt3aV9MSUJfUkVBRExJTkVdLCBbCisrICBkbmwgY2hlY2sgZm9yIHRo ZSByZWFkbGluZS5oIGhlYWRlciBmaWxlCisrCisrICBBQ19DSEVDS19IRUFERVIocmVhZGxpbmUv cmVhZGxpbmUuaCkKKysKKysgIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfcmVhZGxpbmVfcmVhZGxp bmVfaCIgPSB5ZXM7IHRoZW4KKysgICAgZG5sIGNoZWNrIHRoZSByZWFkbGluZSB2ZXJzaW9uCisr CisrICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKKysjaW5jbHVkZSA8c3RkaW8uaD4K KysjaW5jbHVkZSA8cmVhZGxpbmUvcmVhZGxpbmUuaD4KKyt3aV9MSUJfUkVBRExJTkVfVkVSU0lP TiBSTF9WRVJTSU9OX01BSk9SIFJMX1ZFUlNJT05fTUlOT1IKKytFT0YKKysKKysgICAgd2lfUkVB RExJTkVfVkVSU0lPTj0kKCRDUFAgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgfCBzZWQgLW4g LWUgInMvXndpX0xJQl9SRUFETElORV9WRVJTSU9OICAqXChbWzAtOVxdXVtbMC05XF1dKlwpICAq XChbWzAtOVxdXVtbMC05XF1dKlwpJC9cMS5cMi9wIikKKysgICAgcm0gLXJmIGNvbmZ0ZXN0Kgor KworKyAgICBpZiB0ZXN0IC1uICIkd2lfUkVBRExJTkVfVkVSU0lPTiI7IHRoZW4KKysgICAgICB3 aV9NQUpPUj0kKGV4cHIgJHdpX1JFQURMSU5FX1ZFUlNJT04gOiAnXChbWzAtOV1dW1swLTldXSpc KVwuJykKKysgICAgICB3aV9NSU5PUj0kKGV4cHIgJHdpX1JFQURMSU5FX1ZFUlNJT04gOiAnW1sw LTldXVtbMC05XV0qXC5cKFtbMC05XV1bWzAtOV1dKiRcKScpCisrICAgICAgaWYgdGVzdCAkd2lf TUlOT1IgLWx0IDEwOyB0aGVuCisrICAgICAgICB3aV9NSU5PUj0kKGV4cHIgJHdpX01JTk9SIFwq IDEwKQorKyAgICAgIGZpCisrICAgICAgd2lfUkVBRExJTkVfVkVSU0lPTj0kKGV4cHIgJHdpX01B Sk9SIFwqIDEwMCArICR3aV9NSU5PUikKKysgICAgZWxzZQorKyAgICAgIHdpX1JFQURMSU5FX1ZF UlNJT049LTEKKysgICAgZmkKKysKKysgICAgZG5sIGNoZWNrIGZvciB0aGUgcmVhZGxpbmUgbGli cmFyeQorKworKyAgICBhY19zYXZlX0xJQlM9IiRMSUJTIgorKyAgICAjIE5vdGU6ICRMSUJDVVJT RVMgaXMgcGVybWl0dGVkIHRvIGJlIGVtcHR5LgorKworKyAgICBmb3IgTElCUkVBRExJTkUgaW4g Ii1scmVhZGxpbmUuZGxsIiAiLWxyZWFkbGluZSIgIi1scmVhZGxpbmUgJExJQkNVUlNFUyIgIi1s cmVhZGxpbmUgLWx0ZXJtY2FwIiAiLWxyZWFkbGluZSAtbG5jdXJzZXMiICItbHJlYWRsaW5lIC1s Y3Vyc2VzIgorKyAgICBkbworKyAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIEdOVSBSZWFkbGlu ZSBsaWJyYXJ5ICRMSUJSRUFETElORV0pCisrCisrICAgICAgTElCUz0iJGFjX3NhdmVfTElCUyAk TElCUkVBRExJTkUiCisrCisrICAgICAgQUNfVFJZX0xJTksoWworKyAgICAgICAgLyogaW5jbHVk ZXMgKi8KKysgICAgICAgICNpbmNsdWRlIDxzdGRpby5oPgorKyAgICAgICAgI2luY2x1ZGUgPHJl YWRsaW5lL3JlYWRsaW5lLmg+CisrICAgICAgXSxbCisrICAgICAgICAvKiBmdW5jdGlvbi1ib2R5 ICovCisrICAgICAgICBpbnQgZHVtbXkgPSBybF9jb21wbGV0aW9uX2FwcGVuZF9jaGFyYWN0ZXI7 IC8qIHJsX2NvbXBsZXRpb25fYXBwZW5kX2NoYXJhY3RlciBhcHBlYXJlZCBpbiB2ZXJzaW9uIDIu MSAqLworKyAgICAgICAgcmVhZGxpbmUoTlVMTCk7CisrICAgICAgXSxbCisrICAgICAgICB3aV9j dl9saWJfcmVhZGxpbmU9eWVzCisrICAgICAgICBBQ19NU0dfUkVTVUxUKHllcykKKysgICAgICBd LFsKKysgICAgICAgIHdpX2N2X2xpYl9yZWFkbGluZT1ubworKyAgICAgICAgQUNfTVNHX1JFU1VM VChubykKKysgICAgICBdKQorKworKyAgICAgIGlmIHRlc3QgIiR3aV9jdl9saWJfcmVhZGxpbmUi ID0geWVzOyB0aGVuCisrICAgICAgICBBQ19TVUJTVChMSUJSRUFETElORSkKKysgICAgICAgIEFD X0RFRklORV9VTlFVT1RFRChIQVZFX0xJQlJFQURMSU5FLCAkd2lfUkVBRExJTkVfVkVSU0lPTiwg W1JlYWRsaW5lXSkKKysgICAgICAgIGJyZWFrCisrICAgICAgZmkKKysgICAgZG9uZQorKworKyAg ICBMSUJTPSIkYWNfc2F2ZV9MSUJTIgorKyAgZmkKKytdKQorLS0tIGEvcmVhZGxpbmUvZXhhbXBs ZXMvZXhjYWxsYmFjay5jCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9leGNhbGxiYWNrLmMKK0BA IC0zMiw2ICszMiw5IEBAIExldCBtZSBrbm93IHdoYXQgeW91IHRoaW5rLgorIAorIEplZmYKKyAq LworKy8qCisrQ29weXJpZ2h0IChDKSAxOTk5IEplZmYgU29sb21vbgorKyovCisgCisgI2lmIGRl ZmluZWQgKEhBVkVfQ09ORklHX0gpCisgI2luY2x1ZGUgPGNvbmZpZy5oPgorLS0tIGEvcmVhZGxp bmUvZXhhbXBsZXMvZmlsZW1hbi5jCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9maWxlbWFuLmMK K0BAIC0xLDIyICsxLDIzIEBACistLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDIgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogZmlsZW1hbi5jIC0gZmlsZSBtYW5hZ2VyIGV4YW1w bGUgZm9yIHJlYWRsaW5lIGxpYnJhcnkuICovCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg dGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCisrLyogQ29weXJpZ2h0IChD KSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGli cmFyeSBmb3IKKyAgICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1 dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor LSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05V IFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg CistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0 aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxs ZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9m IHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAg IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAvKiBmaWxlbWFuLmMgLS0gQSB0aW55 IGFwcGxpY2F0aW9uIHdoaWNoIGRlbW9uc3RyYXRlcyBob3cgdG8gdXNlIHRoZQorICAgIEdOVSBS ZWFkbGluZSBsaWJyYXJ5LiAgVGhpcyBhcHBsaWNhdGlvbiBpbnRlcmFjdGl2ZWx5IGFsbG93cyB1 c2VycworQEAgLTUwLDYgKzUxLDggQEAKKyAjICBpbmNsdWRlIDxzdGRsaWIuaD4KKyAjZW5kaWYK KyAKKysjaW5jbHVkZSA8dGltZS5oPgorKworICNpZmRlZiBSRUFETElORV9MSUJSQVJZCisgIyAg aW5jbHVkZSAicmVhZGxpbmUuaCIKKyAjICBpbmNsdWRlICJoaXN0b3J5LmgiCitAQCAtNTgsNyAr NjEsNyBAQAorICMgIGluY2x1ZGUgPHJlYWRsaW5lL2hpc3RvcnkuaD4KKyAjZW5kaWYKKyAKKy1l eHRlcm4gY2hhciAqeG1hbGxvYyAoKTsKKytleHRlcm4gY2hhciAqeG1hbGxvYyBQQVJBTVMoKHNp emVfdCkpOworIAorIC8qIFRoZSBuYW1lcyBvZiBmdW5jdGlvbnMgdGhhdCBhY3R1YWxseSBkbyB0 aGUgbWFuaXB1bGF0aW9uLiAqLworIGludCBjb21fbGlzdCBQQVJBTVMoKGNoYXIgKikpOworLS0t IGEvcmVhZGxpbmUvZXhhbXBsZXMvaGlzdGV4YW1wLmMKKysrKyBiL3JlYWRsaW5lL2V4YW1wbGVz L2hpc3RleGFtcC5jCitAQCAtMSwyMiArMSwyMyBAQAorLS8qIENvcHlyaWdodCAoQykgMTk4Ny0y MDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIGhpc3RleGFtcC5jIC0gaGlz dG9yeSBsaWJyYXJ5IGV4YW1wbGUgcHJvZ3JhbS4gKi8KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKKysvKiBDb3B5cmln aHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwg YSBsaWJyYXJ5IGZvcgorICAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZl IGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0CistICAgYW5kL29y IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJlYWRsaW5lIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBl ZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxl IGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNv cHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s CistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAq LworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAorICNpbmNsdWRlIDxzdGRpby5o PgorIAorLS0tIGEvcmVhZGxpbmUvZXhhbXBsZXMvbWFuZXhhbXAuYworKysrIGIvcmVhZGxpbmUv ZXhhbXBsZXMvbWFuZXhhbXAuYworQEAgLTEsMjQgKzEsMjMgQEAKKyAvKiBtYW5leGFtcC5jIC0t IFRoZSBleGFtcGxlcyB3aGljaCBhcHBlYXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYXJlIGhlcmUu ICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGlu ZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeSBmb3IKKyAgICByZWFkaW5n IGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5n LgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJl YWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQor LSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAor LSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNF LiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25n IHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrKi8KKyAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8cmVhZGxpbmUvcmVh ZGxpbmUuaD4KKy0tLSBhL3JlYWRsaW5lL2V4YW1wbGVzL3JlYWRsaW5lYnVmLmgKKysrKyBiL3Jl YWRsaW5lL2V4YW1wbGVzL3JlYWRsaW5lYnVmLmgKK0BAIC04LDcgKzgsNyBAQAorICAqCisgICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyAgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICogdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiAgb2YgdGhlIExpY2Vuc2UsIG9y CisgICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAgKgorICAqIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorLS0tIGEvcmVhZGxpbmUvZXhhbXBsZXMvcmwuYworKysrIGIvcmVhZGxpbmUvZXhhbXBsZXMv cmwuYworQEAgLTUsMjUgKzUsMjQgQEAKKyAgKiB1c2FnZTogcmwgWy1wIHByb21wdF0gWy11IHVu aXRdIFstZCBkZWZhdWx0XSBbLW4gbmNoYXJzXQorICAqLworIAorLS8qIENvcHlyaWdodCAoQykg MTk4Ny0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAo QykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgor KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxp bmUpLCBhIGxpYnJhcnkgZm9yCisgICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJh Y3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5l IExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKy0gICBh bmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCist ICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgUmVhZGxpbmUg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBz aGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBh IGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZl IGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBV U0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisgI2lmIGRlZmluZWQg KEhBVkVfQ09ORklHX0gpCisgIyAgaW5jbHVkZSA8Y29uZmlnLmg+CistLS0gYS9yZWFkbGluZS9l eGFtcGxlcy9ybGNhdC5jCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9ybGNhdC5jCitAQCAtNCwy NSArNCwyNCBAQAorICAqIHVzYWdlOiBybGNhdAorICAqLworIAorLS8qIENvcHlyaWdodCAoQykg MTk4Ny0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAo QykgMTk4Ny0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgor KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxp bmUpLCBhIGxpYnJhcnkgZm9yCisgICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJh Y3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5l IExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKy0gICBh bmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCist ICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgUmVhZGxpbmUg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBz aGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBh IGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZl IGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBV U0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisgI2lmIGRlZmluZWQg KEhBVkVfQ09ORklHX0gpCisgIyAgaW5jbHVkZSA8Y29uZmlnLmg+CistLS0gL2Rldi9udWxsCisr KysgYi9yZWFkbGluZS9leGFtcGxlcy9ybGV2ZW50LmMKK0BAIC0wLDAgKzEsMTY2IEBACisrLyoK KysgKiBybCAtIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgdG8gcmVhZCBhIGxpbmUgZnJvbSB0aGUg c3RhbmRhcmQgaW5wdXQKKysgKiAgICAgIChvciBhbm90aGVyIGZkKSB1c2luZyByZWFkbGluZS4K KysgKgorKyAqIHVzYWdlOiBybCBbLXAgcHJvbXB0XSBbLXUgdW5pdF0gWy1kIGRlZmF1bHRdIFst biBuY2hhcnNdCisrICovCisrCisrLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeSBmb3IKKysgICByZWFkaW5n IGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5n LgorKworKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBSZWFkbGluZSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisr ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisrCisrI2lmIGRlZmluZWQgKEhB VkVfQ09ORklHX0gpCisrIyAgaW5jbHVkZSA8Y29uZmlnLmg+CisrI2VuZGlmCisrCisrI2luY2x1 ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKworKyNpZmRlZiBIQVZFX1NU RExJQl9ICisrIyAgaW5jbHVkZSA8c3RkbGliLmg+CisrI2Vsc2UgCisrZXh0ZXJuIHZvaWQgZXhp dCgpOworKyNlbmRpZgorKworKyNpZiBkZWZpbmVkIChSRUFETElORV9MSUJSQVJZKQorKyMgIGlu Y2x1ZGUgInBvc2l4c3RhdC5oIgorKyMgIGluY2x1ZGUgInJlYWRsaW5lLmgiCisrIyAgaW5jbHVk ZSAiaGlzdG9yeS5oIgorKyNlbHNlCisrIyAgaW5jbHVkZSA8c3lzL3N0YXQuaD4KKysjICBpbmNs dWRlIDxyZWFkbGluZS9yZWFkbGluZS5oPgorKyMgIGluY2x1ZGUgPHJlYWRsaW5lL2hpc3Rvcnku aD4KKysjZW5kaWYKKysKKytleHRlcm4gaW50IG9wdGluZDsKKytleHRlcm4gY2hhciAqb3B0YXJn OworKworKyNpZiAhZGVmaW5lZCAoc3RyY2hyKSAmJiAhZGVmaW5lZCAoX19TVERDX18pCisrZXh0 ZXJuIGNoYXIgKnN0cnJjaHIoKTsKKysjZW5kaWYKKysKKytzdGF0aWMgY2hhciAqcHJvZ25hbWU7 Cisrc3RhdGljIGNoYXIgKmRlZnRleHQ7CisrCisrc3RhdGljIGludAorK2V2ZW50X2hvb2sgKCkK Kyt7CisrICBmcHJpbnRmIChzdGRlcnIsICJkaW5nIVxuIik7CisrICBzbGVlcCAoMSk7CisrICBy ZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludAorK3NldF9kZWZ0ZXh0ICgpCisreworKyAgaWYg KGRlZnRleHQpCisrICAgIHsKKysgICAgICBybF9pbnNlcnRfdGV4dCAoZGVmdGV4dCk7CisrICAg ICAgZGVmdGV4dCA9IChjaGFyICopTlVMTDsKKysgICAgICBybF9zdGFydHVwX2hvb2sgPSAocmxf aG9va19mdW5jX3QgKilOVUxMOworKyAgICB9CisrICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGlj IHZvaWQKKyt1c2FnZSgpCisreworKyAgZnByaW50ZiAoc3RkZXJyLCAiJXM6IHVzYWdlOiAlcyBb LXAgcHJvbXB0XSBbLXUgdW5pdF0gWy1kIGRlZmF1bHRdIFstbiBuY2hhcnNdXG4iLAorKwkJcHJv Z25hbWUsIHByb2duYW1lKTsKKyt9CisrCisraW50CisrbWFpbiAoYXJnYywgYXJndikKKysgICAg IGludCBhcmdjOworKyAgICAgY2hhciAqKmFyZ3Y7CisreworKyAgY2hhciAqdGVtcCwgKnByb21w dDsKKysgIHN0cnVjdCBzdGF0IHNiOworKyAgaW50IG9wdCwgZmQsIG5jaDsKKysgIEZJTEUgKmlm cDsKKysKKysgIHByb2duYW1lID0gc3RycmNocihhcmd2WzBdLCAnLycpOworKyAgaWYgKHByb2du YW1lID09IDApCisrICAgIHByb2duYW1lID0gYXJndlswXTsKKysgIGVsc2UKKysgICAgcHJvZ25h bWUrKzsKKysKKysgIC8qIGRlZmF1bHRzICovCisrICBwcm9tcHQgPSAicmVhZGxpbmUkICI7Cisr ICBmZCA9IG5jaCA9IDA7CisrICBkZWZ0ZXh0ID0gKGNoYXIgKikwOworKworKyAgd2hpbGUgKChv cHQgPSBnZXRvcHQoYXJnYywgYXJndiwgInA6dTpkOm46IikpICE9IEVPRikKKysgICAgeworKyAg ICAgIHN3aXRjaCAob3B0KQorKwl7CisrCWNhc2UgJ3AnOgorKwkgIHByb21wdCA9IG9wdGFyZzsK KysJICBicmVhazsKKysJY2FzZSAndSc6CisrCSAgZmQgPSBhdG9pKG9wdGFyZyk7CisrCSAgaWYg KGZkIDwgMCkKKysJICAgIHsKKysJICAgICAgZnByaW50ZiAoc3RkZXJyLCAiJXM6IGJhZCBmaWxl IGRlc2NyaXB0b3IgYCVzJ1xuIiwgcHJvZ25hbWUsIG9wdGFyZyk7CisrCSAgICAgIGV4aXQgKDIp OworKwkgICAgfQorKwkgIGJyZWFrOworKwljYXNlICdkJzoKKysJICBkZWZ0ZXh0ID0gb3B0YXJn OworKwkgIGJyZWFrOworKwljYXNlICduJzoKKysJICBuY2ggPSBhdG9pKG9wdGFyZyk7CisrCSAg aWYgKG5jaCA8IDApCisrCSAgICB7CisrCSAgICAgIGZwcmludGYgKHN0ZGVyciwgIiVzOiBiYWQg dmFsdWUgZm9yIC1uOiBgJXMnXG4iLCBwcm9nbmFtZSwgb3B0YXJnKTsKKysJICAgICAgZXhpdCAo Mik7CisrCSAgICB9CisrCSAgYnJlYWs7CisrCWRlZmF1bHQ6CisrCSAgdXNhZ2UgKCk7CisrCSAg ZXhpdCAoMik7CisrCX0KKysgICAgfQorKworKyAgaWYgKGZkICE9IDApCisrICAgIHsKKysgICAg ICBpZiAoZnN0YXQgKGZkLCAmc2IpIDwgMCkKKysJeworKwkgIGZwcmludGYgKHN0ZGVyciwgIiVz OiAlZDogYmFkIGZpbGUgZGVzY3JpcHRvclxuIiwgcHJvZ25hbWUsIGZkKTsKKysJICBleGl0ICgx KTsKKysJfQorKyAgICAgIGlmcCA9IGZkb3BlbiAoZmQsICJyIik7CisrICAgICAgcmxfaW5zdHJl YW0gPSBpZnA7CisrICAgIH0KKysKKysgIGlmIChkZWZ0ZXh0ICYmICpkZWZ0ZXh0KQorKyAgICBy bF9zdGFydHVwX2hvb2sgPSBzZXRfZGVmdGV4dDsKKysKKysgIGlmIChuY2ggPiAwKQorKyAgICBy bF9udW1fY2hhcnNfdG9fcmVhZCA9IG5jaDsKKysKKysgIHJsX2V2ZW50X2hvb2sgPSBldmVudF9o b29rOworKyAgdGVtcCA9IHJlYWRsaW5lIChwcm9tcHQpOworKworKyAgLyogVGVzdCBmb3IgRU9G LiAqLworKyAgaWYgKHRlbXAgPT0gMCkKKysgICAgZXhpdCAoMSk7CisrCisrICBwcmludGYgKCIl c1xuIiwgdGVtcCk7CisrICBleGl0ICgwKTsKKyt9CistLS0gYS9yZWFkbGluZS9leGFtcGxlcy9y bGZlL0NoYW5nZUxvZworKysrIGIvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9DaGFuZ2VMb2cKK0BA IC0xLDE0ICsxLDMgQEAKKy0yMDA5LTA4LTIyICBSYWxmIFdpbGRlbmh1ZXMgIDxSYWxmLldpbGRl bmh1ZXNAZ214LmRlPgorLQorLQkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKy0KKy0JKiBjb25m aWd1cmUuaW46IG00X2luY2x1ZGUgdG9wbGV2ZWwgY29uZmlnL292ZXJyaWRlLm00LgorLQkqIGNv bmZpZ3VyZTogUmVnZW5lcmF0ZS4KKy0KKy0yMDA5LTA3LTMwICBSYWxmIFdpbGRlbmh1ZXMgIDxS YWxmLldpbGRlbmh1ZXNAZ214LmRlPgorLQorLQkqIGNvbmZpZ3VyZS5pbjogQ29ycmVjdGx5IHF1 b3RlIEFDX1BST0dSQU1fU09VUkNFIGRlZmluaXRpb24uCistCisgMjAwNC0xMS0wNCAgUGVyIEJv dGhuZXIgIDxwZXJAYm90aG5lci5jb20+CisgCisgCSogcHR5LmM6ICBJbXBvcnQgZnJvbSBzY3Jl ZW4tNC4wLjIuCistLS0gYS9yZWFkbGluZS9leGFtcGxlcy9ybGZlL01ha2VmaWxlLmluCisrKysg Yi9yZWFkbGluZS9leGFtcGxlcy9ybGZlL01ha2VmaWxlLmluCitAQCAtMjUsNyArMjUsNyBAQCBD RkxBR1MgPSBAQ0ZMQUdTQAorIENQUEZMQUdTID0gQENQUEZMQUdTQAorICNMREZMQUdTID0gLUwk KFJFQURMSU5FX0RJUikKKyBMREZMQUdTID0gQExERkxBR1NACistTElCUyA9IC1scmVhZGxpbmUg LWxoaXN0b3J5IC1sbmN1cnNlcworK0xJQlMgPSAtbHJlYWRsaW5lIC1saGlzdG9yeSBATElCU0AK KyAKKyBDUFA9QENQUEAKKyBDUFBfREVQRU5EPSQoQ0MpIC1NTQorQEAgLTU1LDcgKzU1LDcgQEAg cmxmZS0kKFZFUlNJT04pLnRhci5nejoKKyAJdGFyIGN6ZiAkQCAkKENGSUxFUykgJChIRklMRVMp ICQoRVhUUkFfRElTVCkKKyAKKyAuYy5vOgorLQkkKENDKSAtYyAtSS4gLUkkKHNyY2RpcikgJChN X0NGTEFHUykgJChERUZTKSAkKE9QVElPTlMpICQoQ0ZMQUdTKSAkPAorKwkkKENDKSAtYyAtSS4g LUkkKHNyY2RpcikgJChDUFBGTEFHUykgJChNX0NGTEFHUykgJChERUZTKSAkKE9QVElPTlMpICQo Q0ZMQUdTKSAkPAorIAorIGluc3RhbGxfYmluOiAudmVyc2lvbiBzY3JlZW4KKyAJLWlmIFsgLWYg JChERVNURElSKSQoYmluZGlyKS8kKFNDUkVFTikgXSAmJiBbICEgLWYgJChERVNURElSKSQoYmlu ZGlyKS8kKFNDUkVFTikub2xkIF07IFwKK0BAIC02OCw3ICs2OCw2IEBAIGluc3RhbGxfYmluOiAu dmVyc2lvbiBzY3JlZW4KKyAJKGNkICQoREVTVERJUikkKGJpbmRpcikgJiYgbG4gLXNmICQoU0NS RUVOKSBzY3JlZW4pCisgCWNwICQoc3JjZGlyKS91dGY4ZW5jb2RpbmdzLz8/ICQoREVTVERJUikk KFNDUkVFTkVOQ09ESU5HUykKKyAKKy0KKyB1bmluc3RhbGw6IC52ZXJzaW9uCisgCXJtIC1mICQo REVTVERJUikkKGJpbmRpcikvJChTQ1JFRU4pCisgCXJtIC1mICQoREVTVERJUikkKGJpbmRpcikv c2NyZWVuCitAQCAtMTcwLDYgKzE2OSwxNSBAQCBkZXBlbmQuaW46ICQoQ0ZJTEVTKSB0ZXJtLmgK KyAJZm9yIGkgaW4gJChDRklMRVMpOyBkbyBlY2hvICQkaTsgJChDUFBfREVQRU5EKSAkJGkgPj4g dG1wX21ha2U7IGRvbmUgCisgCW12IHRtcF9tYWtlIE1ha2VmaWxlLmluCisgCisrTWFrZWZpbGUg bWFrZWZpbGU6CWNvbmZpZy5zdGF0dXMgJChzcmNkaXIpL01ha2VmaWxlLmluCisrCUNPTkZJR19G SUxFUz1NYWtlZmlsZSBDT05GSUdfSEVBREVSUz0gJChTSEVMTCkgLi9jb25maWcuc3RhdHVzCisr CisrY29uZmlnLnN0YXR1czoJJChzcmNkaXIpL2NvbmZpZ3VyZQorKwkkKFNIRUxMKSAuL2NvbmZp Zy5zdGF0dXMgLS1yZWNoZWNrCisrCisrJChzcmNkaXIpL2NvbmZpZ3VyZToJJChzcmNkaXIpL2Nv bmZpZ3VyZS5pbgorKwljZCAkKHNyY2RpcikgJiYgYXV0b2NvbmYKKysKKyAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisgCisgIyMjIERlcGVuZGVuY2llczoKKy0tLSBhL3JlYWRsaW5lL2V4YW1wbGVz L3JsZmUvY29uZmlnLmguaW4KKysrKyBiL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvY29uZmlnLmgu aW4KK0BAIC0zNzMsMyArMzczLDcgQEAKKyAjdW5kZWYgUFRZUkFOR0UxCisgCisgI2RlZmluZSBV U0VWQVJBUkdTCisrCisrI3VuZGVmIEhBVkVfU1lTX1NUUk9QVFNfSAorKworKyN1bmRlZiBIQVZF X1NZU19XQUlUX0gKKy0tLSBhL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvY29uZmlndXJlCisrKysg Yi9yZWFkbGluZS9leGFtcGxlcy9ybGZlL2NvbmZpZ3VyZQorQEAgLTU1Miw2ICs1NTIsNDIgQEAg UEFDS0FHRV9CVUdSRVBPUlQ9CisgUEFDS0FHRV9VUkw9CisgCisgYWNfdW5pcXVlX2ZpbGU9InJs ZmUuYyIKKysjIEZhY3RvcmluZyBkZWZhdWx0IGhlYWRlcnMgZm9yIG1vc3QgdGVzdHMuCisrYWNf aW5jbHVkZXNfZGVmYXVsdD0iXAorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpZmRlZiBIQVZFX1NZ U19UWVBFU19ICisrIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjZW5kaWYKKysjaWZkZWYgSEFW RV9TWVNfU1RBVF9ICisrIyBpbmNsdWRlIDxzeXMvc3RhdC5oPgorKyNlbmRpZgorKyNpZmRlZiBT VERDX0hFQURFUlMKKysjIGluY2x1ZGUgPHN0ZGxpYi5oPgorKyMgaW5jbHVkZSA8c3RkZGVmLmg+ CisrI2Vsc2UKKysjIGlmZGVmIEhBVkVfU1RETElCX0gKKysjICBpbmNsdWRlIDxzdGRsaWIuaD4K KysjIGVuZGlmCisrI2VuZGlmCisrI2lmZGVmIEhBVkVfU1RSSU5HX0gKKysjIGlmICFkZWZpbmVk IFNURENfSEVBREVSUyAmJiBkZWZpbmVkIEhBVkVfTUVNT1JZX0gKKysjICBpbmNsdWRlIDxtZW1v cnkuaD4KKysjIGVuZGlmCisrIyBpbmNsdWRlIDxzdHJpbmcuaD4KKysjZW5kaWYKKysjaWZkZWYg SEFWRV9TVFJJTkdTX0gKKysjIGluY2x1ZGUgPHN0cmluZ3MuaD4KKysjZW5kaWYKKysjaWZkZWYg SEFWRV9JTlRUWVBFU19ICisrIyBpbmNsdWRlIDxpbnR0eXBlcy5oPgorKyNlbmRpZgorKyNpZmRl ZiBIQVZFX1NURElOVF9ICisrIyBpbmNsdWRlIDxzdGRpbnQuaD4KKysjZW5kaWYKKysjaWZkZWYg SEFWRV9VTklTVERfSAorKyMgaW5jbHVkZSA8dW5pc3RkLmg+CisrI2VuZGlmIgorKworIGFjX3N1 YnN0X3ZhcnM9J0xUTElCT0JKUworIExJQk9CSlMKKyBYVEVSTVBBVEgKK0BAIC0xNTUwLDYgKzE1 ODYsMTI0IEBAICRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKyAgIGV2YWwgJGFzX2xpbmVub19z dGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0 IGFzX2xpbmVubzt9CisgCisgfSAjIGFjX2ZuX2NfY2hlY2tfZnVuYworKworKyMgYWNfZm5fY19j aGVja19oZWFkZXJfbW9uZ3JlbCBMSU5FTk8gSEVBREVSIFZBUiBJTkNMVURFUworKyMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgVGVz dHMgd2hldGhlciBIRUFERVIgZXhpc3RzLCBnaXZpbmcgYSB3YXJuaW5nIGlmIGl0IGNhbm5vdCBi ZSBjb21waWxlZCB1c2luZworKyMgdGhlIGluY2x1ZGUgZmlsZXMgaW4gSU5DTFVERVMgYW5kIHNl dHRpbmcgdGhlIGNhY2hlIHZhcmlhYmxlIFZBUgorKyMgYWNjb3JkaW5nbHkuCisrYWNfZm5fY19j aGVja19oZWFkZXJfbW9uZ3JlbCAoKQorK3sKKysgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDEi fSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKKysgIGlm IHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0 aGVuIDoKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tp bmcgZm9yICQyIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0K KytpZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0Ijsg fTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2ZpCisrZXZhbCBhY19y ZXM9XCQkMworKwkgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6ICRhY19yZXMiID4mNQorKyRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KKytlbHNl CisrICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KKyt7ICRhc19lY2hvICIkYXNfbWU6JHth c19saW5lbm8tJExJTkVOT306IGNoZWNraW5nICQyIHVzYWJpbGl0eSIgPiY1CisrJGFzX2VjaG9f biAiY2hlY2tpbmcgJDIgdXNhYmlsaXR5Li4uICIgPiY2OyB9CisrY2F0IGNvbmZkZWZzLmggLSA8 PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyskNAor KyNpbmNsdWRlIDwkMj4KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5P IjsgdGhlbiA6CisrICBhY19oZWFkZXJfY29tcGlsZXI9eWVzCisrZWxzZQorKyAgYWNfaGVhZGVy X2NvbXBpbGVyPW5vCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNf b2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogJGFjX2hlYWRlcl9jb21waWxlciIgPiY1CisrJGFzX2VjaG8gIiRh Y19oZWFkZXJfY29tcGlsZXIiID4mNjsgfQorKworKyMgSXMgdGhlIGhlYWRlciBwcmVzZW50Pwor K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgJDIgcHJl c2VuY2UiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nICQyIHByZXNlbmNlLi4uICIgPiY2OyB9 CisrY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBj b25mZGVmcy5oLiAgKi8KKysjaW5jbHVkZSA8JDI+CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlf Y3BwICIkTElORU5PIjsgdGhlbiA6CisrICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKKytlbHNlCisr ICBhY19oZWFkZXJfcHJlcHJvYz1ubworK2ZpCisrcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0 LiRhY19leHQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjUKKyskYXNfZWNobyAiJGFjX2hlYWRlcl9wcmVwcm9j IiA+JjY7IH0KKysKKysjIFNvPyAgV2hhdCBhYm91dCB0aGlzIGhlYWRlcj8KKytjYXNlICRhY19o ZWFkZXJfY29tcGlsZXI6JGFjX2hlYWRlcl9wcmVwcm9jOiRhY19jX3ByZXByb2Nfd2Fybl9mbGFn IGluICMoKAorKyAgeWVzOm5vOiApCisrICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogV0FSTklORzogJDI6IGFjY2VwdGVkIGJ5IHRoZSBjb21waWxlciwgcmVqZWN0 ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6 ICQyOiBhY2NlcHRlZCBieSB0aGUgY29tcGlsZXIsIHJlamVjdGVkIGJ5IHRoZSBwcmVwcm9jZXNz b3IhIiA+JjI7fQorKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IFdBUk5JTkc6ICQyOiBwcm9jZWVkaW5nIHdpdGggdGhlIGNvbXBpbGVyJ3MgcmVzdWx0IiA+JjUK KyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21w aWxlcidzIHJlc3VsdCIgPiYyO30KKysgICAgOzsKKysgIG5vOnllczoqICkKKysgICAgeyAkYXNf ZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJlc2VudCBi dXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAk MjogcHJlc2VudCBidXQgY2Fubm90IGJlIGNvbXBpbGVkIiA+JjI7fQorKyAgICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICQyOiAgICAgY2hlY2sgZm9y IG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBX QVJOSU5HOiAkMjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFkZXJzPyIg PiYyO30KKysgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJO SU5HOiAkMjogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjUKKyskYXNfZWNobyAi JGFzX21lOiBXQVJOSU5HOiAkMjogc2VlIHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjI7 fQorKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6 ICQyOiAgICAgc2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+JjUK KyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogICAgIHNlY3Rpb24gXCJQcmVzZW50IEJ1 dCBDYW5ub3QgQmUgQ29tcGlsZWRcIiIgPiYyO30KKysgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21w aWxlcidzIHJlc3VsdCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6IHByb2Nl ZWRpbmcgd2l0aCB0aGUgY29tcGlsZXIncyByZXN1bHQiID4mMjt9CisrICAgIDs7CisrZXNhYwor KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig JDIiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQorK2lmIHsg YXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVu IDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgZXZhbCAiJDM9XCRh Y19oZWFkZXJfY29tcGlsZXIiCisrZmkKKytldmFsIGFjX3Jlcz1cJCQzCisrCSAgICAgICB7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1 CisrJGFzX2VjaG8gIiRhY19yZXMiID4mNjsgfQorK2ZpCisrICBldmFsICRhc19saW5lbm9fc3Rh Y2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBh c19saW5lbm87fQorKworK30gIyBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsCisrCisrIyBh Y19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlIExJTkVOTyBIRUFERVIgVkFSIElOQ0xVREVTCisr IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisrIyBUZXN0cyB3aGV0aGVyIEhFQURFUiBleGlzdHMgYW5kIGNhbiBiZSBjb21waWxlZCB1c2lu ZyB0aGUgaW5jbHVkZSBmaWxlcyBpbgorKyMgSU5DTFVERVMsIHNldHRpbmcgdGhlIGNhY2hlIHZh cmlhYmxlIFZBUiBhY2NvcmRpbmdseS4KKythY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICgp CisreworKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19s aW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQorKyRhc19lY2hvX24gImNoZWNr aW5nIGZvciAkMi4uLiAiID4mNjsgfQorK2lmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7 JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQp ICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFj X2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyskNAorKyNpbmNsdWRlIDwkMj4KKytfQUNF T0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBldmFsICIk Mz15ZXMiCisrZWxzZQorKyAgZXZhbCAiJDM9bm8iCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0 LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKytmaQorK2V2YWwgYWNf cmVzPVwkJDMKKysJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKKyskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisrICBl dmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBh c19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorKworK30gIyBhY19mbl9jX2NoZWNrX2hlYWRl cl9jb21waWxlCisgY2F0ID5jb25maWcubG9nIDw8X0FDRU9GCisgVGhpcyBmaWxlIGNvbnRhaW5z IGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKKyBydW5uaW5nIGNvbmZp Z3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgorQEAg LTQwMDMsNiArNDE1NywxNTEgQEAgZmkKKyAKKyBmaQorIAorK3sgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiID4m NQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzLi4uICIgPiY2 OyB9CisraWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3RkYytzZXR9IiA9IHNldDsgdGhlbiA6Cisr ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0g PDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrI2lu Y2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdGRhcmcuaD4KKysjaW5jbHVkZSA8c3RyaW5n Lmg+CisrI2luY2x1ZGUgPGZsb2F0Lmg+CisrCisraW50CisrbWFpbiAoKQorK3sKKysKKysgIDsK KysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElO RU5PIjsgdGhlbiA6CisrICBhY19jdl9oZWFkZXJfc3RkYz15ZXMKKytlbHNlCisrICBhY19jdl9o ZWFkZXJfc3RkYz1ubworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFj X29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrCisraWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0ZGMg PSB5ZXM7IHRoZW4KKysgICMgU3VuT1MgNC54IHN0cmluZy5oIGRvZXMgbm90IGRlY2xhcmUgbWVt KiwgY29udHJhcnkgdG8gQU5TSS4KKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0 ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrI2luY2x1ZGUgPHN0cmluZy5o PgorKworK19BQ0VPRgorK2lmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1 IHwKKysgICRFR1JFUCAibWVtY2hyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKworK2Vsc2UK KysgIGFjX2N2X2hlYWRlcl9zdGRjPW5vCisrZmkKKytybSAtZiBjb25mdGVzdCoKKysKKytmaQor KworK2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisrICAjIElTQyAyLjAu MiBzdGRsaWIuaCBkb2VzIG5vdCBkZWNsYXJlIGZyZWUsIGNvbnRyYXJ5IHRvIEFOU0kuCisrICBj YXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZk ZWZzLmguICAqLworKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysKKytfQUNFT0YKKytpZiAoZXZhbCAi JGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CisrICAkRUdSRVAgImZyZWUiID4vZGV2 L251bGwgMj4mMTsgdGhlbiA6CisrCisrZWxzZQorKyAgYWNfY3ZfaGVhZGVyX3N0ZGM9bm8KKytm aQorK3JtIC1mIGNvbmZ0ZXN0KgorKworK2ZpCisrCisraWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N0 ZGMgPSB5ZXM7IHRoZW4KKysgICMgL2Jpbi9jYyBpbiBJcml4LTQuMC41IGdldHMgbm9uLUFOU0kg Y3R5cGUgbWFjcm9zIHVubGVzcyB1c2luZyAtYW5zaS4KKysgIGlmIHRlc3QgIiRjcm9zc19jb21w aWxpbmciID0geWVzOyB0aGVuIDoKKysgIDoKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8 X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKyNpbmNs dWRlIDxjdHlwZS5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaWYgKCgnICcgJiAweDBGRikg PT0gMHgwMjApCisrIyBkZWZpbmUgSVNMT1dFUihjKSAoJ2EnIDw9IChjKSAmJiAoYykgPD0gJ3on KQorKyMgZGVmaW5lIFRPVVBQRVIoYykgKElTTE9XRVIoYykgPyAnQScgKyAoKGMpIC0gJ2EnKSA6 IChjKSkKKysjZWxzZQorKyMgZGVmaW5lIElTTE9XRVIoYykgXAorKwkJICAgKCgnYScgPD0gKGMp ICYmIChjKSA8PSAnaScpIFwKKysJCSAgICAgfHwgKCdqJyA8PSAoYykgJiYgKGMpIDw9ICdyJykg XAorKwkJICAgICB8fCAoJ3MnIDw9IChjKSAmJiAoYykgPD0gJ3onKSkKKysjIGRlZmluZSBUT1VQ UEVSKGMpIChJU0xPV0VSKGMpID8gKChjKSB8IDB4NDApIDogKGMpKQorKyNlbmRpZgorKworKyNk ZWZpbmUgWE9SKGUsIGYpICgoKGUpICYmICEoZikpIHx8ICghKGUpICYmIChmKSkpCisraW50Cisr bWFpbiAoKQorK3sKKysgIGludCBpOworKyAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQorKyAg ICBpZiAoWE9SIChpc2xvd2VyIChpKSwgSVNMT1dFUiAoaSkpCisrCXx8IHRvdXBwZXIgKGkpICE9 IFRPVVBQRVIgKGkpKQorKyAgICAgIHJldHVybiAyOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VP RgorK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorKworK2Vsc2UKKysgIGFj X2N2X2hlYWRlcl9zdGRjPW5vCisrZmkKKytybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0 LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisrICBjb25mdGVzdC4kYWNf b2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorK2ZpCisrCisrZmkKKytmaQor K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zf aGVhZGVyX3N0ZGMiID4mNQorKyRhc19lY2hvICIkYWNfY3ZfaGVhZGVyX3N0ZGMiID4mNjsgfQor K2lmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCisrCisrJGFzX2VjaG8gIiNk ZWZpbmUgU1REQ19IRUFERVJTIDEiID4+Y29uZmRlZnMuaAorKworK2ZpCisrCisrIyBPbiBJUklY IDUuMywgc3lzL3R5cGVzIGFuZCBpbnR0eXBlcy5oIGFyZSBjb25mbGljdGluZy4KKytmb3IgYWNf aGVhZGVyIGluIHN5cy90eXBlcy5oIHN5cy9zdGF0Lmggc3RkbGliLmggc3RyaW5nLmggbWVtb3J5 Lmggc3RyaW5ncy5oIFwKKysJCSAgaW50dHlwZXMuaCBzdGRpbnQuaCB1bmlzdGQuaAorK2RvIDoK KysgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl8kYWNfaGVhZGVyIiB8ICRh c190cl9zaGAKKythY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiJGFjX2hl YWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNfaW5jbHVkZXNfZGVmYXVsdAorKyIKKytldmFsIGFz X3ZhbD1cJCRhc19hY19IZWFkZXIKKysgICBpZiB0ZXN0ICJ4JGFzX3ZhbCIgPSB4IiJ5ZXM7IHRo ZW4gOgorKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgYCRhc19lY2hvICJI QVZFXyRhY19oZWFkZXIiIHwgJGFzX3RyX2NwcGAgMQorK19BQ0VPRgorKworK2ZpCisrCisrZG9u ZQorKworKworK2ZvciBhY19oZWFkZXIgaW4gc3lzL3N0cm9wdHMuaCBzeXMvd2FpdC5oCisrZG8g OgorKyAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwg JGFzX3RyX3NoYAorK2FjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICIkYWNf aGVhZGVyIiAiJGFzX2FjX0hlYWRlciIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgorK2V2YWwgYXNf dmFsPVwkJGFzX2FjX0hlYWRlcgorKyAgIGlmIHRlc3QgIngkYXNfdmFsIiA9IHgiInllczsgdGhl biA6CisrICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmluZSBgJGFzX2VjaG8gIkhB VkVfJGFjX2hlYWRlciIgfCAkYXNfdHJfY3BwYCAxCisrX0FDRU9GCisrCisrZmkKKysKKytkb25l CisrCisrCisgYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIgorIAor IGNhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRgorLS0tIGEvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9j b25maWd1cmUuaW4KKysrKyBiL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvY29uZmlndXJlLmluCitA QCAtNDM3LDQgKzQzNyw2IEBAIG1haW4oKQorIAorIGZpCisgCisrQUNfQ0hFQ0tfSEVBREVSUyhz eXMvc3Ryb3B0cy5oIHN5cy93YWl0LmgpCisrCisgQUNfT1VUUFVUKE1ha2VmaWxlKQorLS0tIGEv cmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9leHRlcm4uaAorKysrIGIvcmVhZGxpbmUvZXhhbXBsZXMv cmxmZS9leHRlcm4uaAorQEAgLTI3LDcgKzI3LDE0IEBACisgI2RlZmluZSBfX2F0dHJpYnV0ZV9f KHgpCisgI2VuZGlmCisgCisrI2lmICFkZWZpbmVkIChfX1ApCisrIyAgaWYgZGVmaW5lZCAoX19T VERDX18pIHx8IGRlZmluZWQgKF9fR05VQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKKysj ICAgIGRlZmluZSBfX1AocHJvdG9zKSBwcm90b3MKKysjICBlbHNlCisrIyAgICBkZWZpbmUgX19Q KHByb3RvcykgKCkKKysjICBlbmRpZgorKyNlbmRpZgorKworIC8qIHB0eS5jICovCisgZXh0ZXJu IGludCAgIE9wZW5QVFkgX19QKChjaGFyICoqKSk7CisgZXh0ZXJuIHZvaWQgIEluaXRQVFkgX19Q KChpbnQpKTsKKy0KKy0tLSBhL3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvb3MuaAorKysrIGIvcmVh ZGxpbmUvZXhhbXBsZXMvcmxmZS9vcy5oCitAQCAtMTg2LDcgKzE4Niw3IEBAIGV4dGVybiBpbnQg ZXJybm87CisgICogICAgdGVybWluYWwgaGFuZGxpbmcKKyAgKi8KKyAKKy0jaWZkZWYgUE9TSVgK KysjaWYgZGVmaW5lZCAoUE9TSVgpIHx8IGRlZmluZWQgKF9fRnJlZUJTRF9fKQorICMgaW5jbHVk ZSA8dGVybWlvcy5oPgorICMgaWZkZWYgaHB1eAorICMgIGluY2x1ZGUgPGJzZHR0eS5oPgorQEAg LTUyNyw0ICs1MjcsMyBAQCB0eXBlZGVmIHN0cnVjdCBmZF9zZXQgeyBpbnQgZmRzX2JpdHNbMV07 IH0gZmRfc2V0OworICAqIGhvdyBtYW55IGNoYXJhY3RlcnMgeW91ciBwdHkncyBjYW4gYnVmZmVy LgorICAqLworICNkZWZpbmUgSU9TSVpFCQk0MDk2CistCistLS0gYS9yZWFkbGluZS9leGFtcGxl cy9ybGZlL3B0eS5jCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9ybGZlL3B0eS5jCitAQCAtMjAs MTMgKzIwLDE1IEBACisgICoKKyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqLworKyNpbmNsdWRlICJjb25maWcuaCIK KyAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisgI2lu Y2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHNpZ25hbC5oPgorIAorLSNpbmNsdWRlICJjb25m aWcuaCIKKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrCisgI2luY2x1ZGUgInNjcmVlbi5oIgorIAor ICNpZm5kZWYgc3VuCitAQCAtMzQsNyArMzYsNyBAQAorICNlbmRpZgorIAorIC8qIGZvciBzb2xh cmlzIDIuMSwgVW5peHdhcmUgKFNWUjQuMikgYW5kIHBvc3NpYmx5IG90aGVycyAqLworLSNpZmRl ZiBIQVZFX1NWUjRfUFRZUworKyNpZiBkZWZpbmVkIChIQVZFX1NWUjRfUFRZUykgJiYgZGVmaW5l ZCAoSEFWRV9TWVNfU1RST1BUU19IKQorICMgaW5jbHVkZSA8c3lzL3N0cm9wdHMuaD4KKyAjZW5k aWYKKyAKK0BAIC0zODQsNCArMzg2LDMgQEAgY2hhciAqKnR0eW47CisgICByZXR1cm4gLTE7Cisg fQorICNlbmRpZgorLQorLS0tIGEvcmVhZGxpbmUvZXhhbXBsZXMvcmxmZS9ybGZlLmMKKysrKyBi L3JlYWRsaW5lL2V4YW1wbGVzL3JsZmUvcmxmZS5jCitAQCAtNzMsNiArNzMsMTEgQEAKKyAjaW5j bHVkZSA8dGVybWlvcy5oPgorIAorICNpbmNsdWRlICJjb25maWcuaCIKKysjaW5jbHVkZSAiZXh0 ZXJuLmgiCisrCisrI2lmIGRlZmluZWQgKEhBVkVfU1lTX1dBSVRfSCkKKysjICBpbmNsdWRlIDxz eXMvd2FpdC5oPgorKyNlbmRpZgorIAorICNpZmRlZiBSRUFETElORV9MSUJSQVJZCisgIyAgaW5j bHVkZSAicmVhZGxpbmUuaCIKK0BAIC01ODgsNyArNTkzLDcgQEAgbWFpbihpbnQgYXJnYywgY2hh cioqIGFyZ3YpCisgCX0KKyAgICAgICBpZiAoRkRfSVNTRVQgKGluX2Zyb21fdHR5X2ZkLCAmaW5f c2V0KSkKKyAJeworLQkgIGV4dGVybiBpbnQgcmVhZGxpbmVfZWNob2luZ19wOworKwkgIGV4dGVy biBpbnQgX3JsX2VjaG9pbmdfcDsKKyAJICBzdHJ1Y3QgdGVybWlvcyB0ZXJtX21hc3RlcjsKKyAJ ICBpbnQgZG9fY2Fub24gPSAxOworIAkgIGludCBkb19pY3JubCA9IDE7CitAQCAtNjA1LDkgKzYx MCw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorIAkgICAgeworIAkgICAgICBkb19j YW5vbiA9ICh0ZXJtX21hc3Rlci5jX2xmbGFnICYgSUNBTk9OKSAhPSAwOworIAkgICAgICBkb19p Y3JubCA9ICh0ZXJtX21hc3Rlci5jX2xmbGFnICYgSUNSTkwpICE9IDA7CistCSAgICAgIHJlYWRs aW5lX2VjaG9pbmdfcCA9ICh0ZXJtX21hc3Rlci5jX2xmbGFnICYgRUNITykgIT0gMDsKKysJICAg ICAgX3JsX2VjaG9pbmdfcCA9ICh0ZXJtX21hc3Rlci5jX2xmbGFnICYgRUNITykgIT0gMDsKKyAJ ICAgICAgRFBSSU5UMSAoImVjaG8sY2Fub24sY3JubDolMDNkXG4iLAorLQkJICAgICAgIDEwMCAq IHJlYWRsaW5lX2VjaG9pbmdfcAorKwkJICAgICAgIDEwMCAqIF9ybF9lY2hvaW5nX3AKKyAJCSAg ICAgICArIDEwICogZG9fY2Fub24KKyAJCSAgICAgICArIDEgKiBkb19pY3JubCk7CisgCSAgICB9 CitAQCAtNzU3LDcgKzc2Miw3IEBAIHN0YXRpYyB2b2lkIHNldF9lZGl0X21vZGUgKCkKKyAJICB2 aSA9IDE7CisgCSAgYnJlYWs7CisgCX0KKy0gICAgICBzaGVsbG9wdHMgPSBpbmRleCAoc2hlbGxv cHRzICsgMSwgJzonKTsKKysgICAgICBzaGVsbG9wdHMgPSBzdHJjaHIgKHNoZWxsb3B0cyArIDEs ICc6Jyk7CisgICAgIH0KKyAKKyAgIGlmICghdmkpCistLS0gYS9yZWFkbGluZS9leGFtcGxlcy9y bHRlc3QuYworKysrIGIvcmVhZGxpbmUvZXhhbXBsZXMvcmx0ZXN0LmMKK0BAIC00LDI1ICs0LDI0 IEBACisgLyoJCQkJCQkJCSAgICAqLworIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KKyAKKy0vKiBDb3B5cmlnaHQg KEMpIDE5ODctMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmln aHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBm b3IKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJl YWRsaW5lKSwgYSBsaWJyYXJ5IGZvcgorICAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGlu dGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisgCistICAgVGhlIEdOVSBSZWFk bGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0Cist ICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2Fy ZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor IAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJlYWRs aW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0 ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtlcHQg aW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90CistICAg aGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIx MTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAorICNpZiBkZWZp bmVkIChIQVZFX0NPTkZJR19IKQorICNpbmNsdWRlIDxjb25maWcuaD4KKy0tLSBhL3JlYWRsaW5l L2V4YW1wbGVzL3JsdmVyc2lvbi5jCisrKysgYi9yZWFkbGluZS9leGFtcGxlcy9ybHZlcnNpb24u YworQEAgLTIsMjUgKzIsMjQgQEAKKyAgKiBybHZlcnNpb24gLS0gcHJpbnQgb3V0IHJlYWRsaW5l J3MgdmVyc2lvbiBudW1iZXIKKyAgKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwMiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFy dCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKKysgICBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJy YXJ5IGZvcgorICAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0 IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0CistICAgYW5kL29yIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCist ICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUg UmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAK Ky0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRo IEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxl ZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2Yg dGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAg NTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAorICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJ R19IKQorICMgIGluY2x1ZGUgPGNvbmZpZy5oPgorLS0tIGEvcmVhZGxpbmUvZnVubWFwLmMKKysr KyBiL3JlYWRsaW5lL2Z1bm1hcC5jCitAQCAtMSwyNCArMSwyNCBAQAorIC8qIGZ1bm1hcC5jIC0t IGF0dGFjaCBuYW1lcyB0byBmdW5jdGlvbnMuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTg3 LCAxOTg5LCAxOTkyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdo dCAoQykgMTk4Ny0yMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZv cgorLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBo aXN0b3J5IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGlu ZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9m IHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAor IAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRs aW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAg IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAg IGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAg SWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUg MzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdp dGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisrKi8KKysKKyAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKKyAKKyAjaWYgZGVmaW5lZCAoSEFW RV9DT05GSUdfSCkKK0BAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBpbnQgZnVubWFwX2VudHJ5Owor ICAgIHByb2dyYW0gc3BlY2lmaWMgZnVuY3Rpb24uICovCisgaW50IGZ1bm1hcF9wcm9ncmFtX3Nw ZWNpZmljX2VudHJ5X3N0YXJ0OworIAorLXN0YXRpYyBGVU5NQVAgZGVmYXVsdF9mdW5tYXBbXSA9 IHsKKytzdGF0aWMgY29uc3QgRlVOTUFQIGRlZmF1bHRfZnVubWFwW10gPSB7CisgICB7ICJhYm9y dCIsIHJsX2Fib3J0IH0sCisgICB7ICJhY2NlcHQtbGluZSIsIHJsX25ld2xpbmUgfSwKKyAgIHsg ImFycm93LWtleS1wcmVmaXgiLCBybF9hcnJvd19rZXlzIH0sCitAQCAtMTA1LDExICsxMDUsMTMg QEAgc3RhdGljIEZVTk1BUCBkZWZhdWx0X2Z1bm1hcFtdID0geworICAgeyAia2lsbC1yZWdpb24i LCBybF9raWxsX3JlZ2lvbiB9LAorICAgeyAia2lsbC13b3JkIiwgcmxfa2lsbF93b3JkIH0sCisg ICB7ICJtZW51LWNvbXBsZXRlIiwgcmxfbWVudV9jb21wbGV0ZSB9LAorKyAgeyAibWVudS1jb21w bGV0ZS1iYWNrd2FyZCIsIHJsX2JhY2t3YXJkX21lbnVfY29tcGxldGUgfSwKKyAgIHsgIm5leHQt aGlzdG9yeSIsIHJsX2dldF9uZXh0X2hpc3RvcnkgfSwKKyAgIHsgIm5vbi1pbmNyZW1lbnRhbC1m b3J3YXJkLXNlYXJjaC1oaXN0b3J5Iiwgcmxfbm9uaW5jX2ZvcndhcmRfc2VhcmNoIH0sCisgICB7 ICJub24taW5jcmVtZW50YWwtcmV2ZXJzZS1zZWFyY2gtaGlzdG9yeSIsIHJsX25vbmluY19yZXZl cnNlX3NlYXJjaCB9LAorICAgeyAibm9uLWluY3JlbWVudGFsLWZvcndhcmQtc2VhcmNoLWhpc3Rv cnktYWdhaW4iLCBybF9ub25pbmNfZm9yd2FyZF9zZWFyY2hfYWdhaW4gfSwKKyAgIHsgIm5vbi1p bmNyZW1lbnRhbC1yZXZlcnNlLXNlYXJjaC1oaXN0b3J5LWFnYWluIiwgcmxfbm9uaW5jX3JldmVy c2Vfc2VhcmNoX2FnYWluIH0sCisrICB7ICJvbGQtbWVudS1jb21wbGV0ZSIsIHJsX29sZF9tZW51 X2NvbXBsZXRlIH0sCisgICB7ICJvdmVyd3JpdGUtbW9kZSIsIHJsX292ZXJ3cml0ZV9tb2RlIH0s CisgI2lmZGVmIF9fQ1lHV0lOX18KKyAgIHsgInBhc3RlLWZyb20tY2xpcGJvYXJkIiwgcmxfcGFz dGVfZnJvbV9jbGlwYm9hcmQgfSwKK0BAIC0xMjMsNiArMTI1LDcgQEAgc3RhdGljIEZVTk1BUCBk ZWZhdWx0X2Z1bm1hcFtdID0geworICAgeyAicmV2ZXJ0LWxpbmUiLCBybF9yZXZlcnRfbGluZSB9 LAorICAgeyAic2VsZi1pbnNlcnQiLCBybF9pbnNlcnQgfSwKKyAgIHsgInNldC1tYXJrIiwgcmxf c2V0X21hcmsgfSwKKysgIHsgInNraXAtY3NpLXNlcXVlbmNlIiwgcmxfc2tpcF9jc2lfc2VxdWVu Y2UgfSwKKyAgIHsgInN0YXJ0LWtiZC1tYWNybyIsIHJsX3N0YXJ0X2tiZF9tYWNybyB9LAorICAg eyAidGFiLWluc2VydCIsIHJsX3RhYl9pbnNlcnQgfSwKKyAgIHsgInRpbGRlLWV4cGFuZCIsIHJs X3RpbGRlX2V4cGFuZCB9LAorQEAgLTE0NSw2ICsxNDgsOCBAQCBzdGF0aWMgRlVOTUFQIGRlZmF1 bHRfZnVubWFwW10gPSB7CisgICB7ICJ2aS1hcHBlbmQtbW9kZSIsIHJsX3ZpX2FwcGVuZF9tb2Rl IH0sCisgICB7ICJ2aS1hcmctZGlnaXQiLCBybF92aV9hcmdfZGlnaXQgfSwKKyAgIHsgInZpLWJh Y2stdG8taW5kZW50IiwgcmxfdmlfYmFja190b19pbmRlbnQgfSwKKysgIHsgInZpLWJhY2t3YXJk LWJpZ3dvcmQiLCBybF92aV9iV29yZCB9LAorKyAgeyAidmktYmFja3dhcmQtd29yZCIsIHJsX3Zp X2J3b3JkIH0sCisgICB7ICJ2aS1iV29yZCIsIHJsX3ZpX2JXb3JkIH0sCisgICB7ICJ2aS1id29y ZCIsIHJsX3ZpX2J3b3JkIH0sCisgICB7ICJ2aS1jaGFuZ2UtY2FzZSIsIHJsX3ZpX2NoYW5nZV9j YXNlIH0sCitAQCAtMTU3LDEyICsxNjIsMTUgQEAgc3RhdGljIEZVTk1BUCBkZWZhdWx0X2Z1bm1h cFtdID0geworICAgeyAidmktZGVsZXRlLXRvIiwgcmxfdmlfZGVsZXRlX3RvIH0sCisgICB7ICJ2 aS1lV29yZCIsIHJsX3ZpX2VXb3JkIH0sCisgICB7ICJ2aS1lZGl0aW5nLW1vZGUiLCBybF92aV9l ZGl0aW5nX21vZGUgfSwKKysgIHsgInZpLWVuZC1iaWd3b3JkIiwgcmxfdmlfZVdvcmQgfSwKKyAg IHsgInZpLWVuZC13b3JkIiwgcmxfdmlfZW5kX3dvcmQgfSwKKyAgIHsgInZpLWVvZi1tYXliZSIs IHJsX3ZpX2VvZl9tYXliZSB9LAorICAgeyAidmktZXdvcmQiLCBybF92aV9ld29yZCB9LAorICAg eyAidmktZldvcmQiLCBybF92aV9mV29yZCB9LAorICAgeyAidmktZmV0Y2gtaGlzdG9yeSIsIHJs X3ZpX2ZldGNoX2hpc3RvcnkgfSwKKyAgIHsgInZpLWZpcnN0LXByaW50IiwgcmxfdmlfZmlyc3Rf cHJpbnQgfSwKKysgIHsgInZpLWZvcndhcmQtYmlnd29yZCIsIHJsX3ZpX2ZXb3JkIH0sCisrICB7 ICJ2aS1mb3J3YXJkLXdvcmQiLCBybF92aV9md29yZCB9LAorICAgeyAidmktZndvcmQiLCBybF92 aV9md29yZCB9LAorICAgeyAidmktZ290by1tYXJrIiwgcmxfdmlfZ290b19tYXJrIH0sCisgICB7 ICJ2aS1pbnNlcnQtYmVnIiwgcmxfdmlfaW5zZXJ0X2JlZyB9LAorLS0tIGEvcmVhZGxpbmUvaGlz dGV4cGFuZC5jCisrKysgYi9yZWFkbGluZS9oaXN0ZXhwYW5kLmMKK0BAIC0xLDI0ICsxLDIzIEBA CisgLyogaGlzdGV4cGFuZC5jIC0tIGhpc3RvcnkgZXhwYW5zaW9uLiAqLworIAorLS8qIENvcHly aWdodCAoQykgMTk4OS0yMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENv cHlyaWdodCAoQykgMTk4OS0yMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAor LSAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgR05VIEhpc3RvcnkgTGlicmFyeSAodGhlIExpYnJh cnkpLCBhIHNldCBvZgorKyAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgR05VIEhpc3RvcnkgTGli cmFyeSAoSGlzdG9yeSksIGEgc2V0IG9mCisgICAgcm91dGluZXMgZm9yIG1hbmFnaW5nIHRoZSB0 ZXh0IG9mIHByZXZpb3VzbHkgdHlwZWQgbGluZXMuCisgCistICAgVGhlIExpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIEhp c3RvcnkgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJz aW9uLgorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyAKKy0gICBUaGUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLCBidXQKKy0gICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKy0gICBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICAgSGlzdG9yeSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCist ICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBH TlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQg Q09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRo ZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5 IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyAgIGFsb25nIHdpdGggSGlzdG9yeS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAorICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQor IAorQEAgLTU2LDggKzU1LDYgQEAKKyAKKyB0eXBlZGVmIGludCBfaGlzdF9zZWFyY2hfZnVuY190 IFBBUkFNUygoY29uc3QgY2hhciAqLCBpbnQpKTsKKyAKKy1leHRlcm4gaW50IHJsX2J5dGVfb3Jp ZW50ZWQ7CS8qIGRlY2xhcmVkIGluIG1idXRpbC5jICovCistCisgc3RhdGljIGNoYXIgZXJyb3Jf cG9pbnRlcjsKKyAKKyBzdGF0aWMgY2hhciAqc3Vic3RfbGhzOworQEAgLTY2LDkgKzYzLDExIEBA IHN0YXRpYyBpbnQgc3Vic3RfbGhzX2xlbjsKKyBzdGF0aWMgaW50IHN1YnN0X3Joc19sZW47Cisg Cisgc3RhdGljIGNoYXIgKmdldF9oaXN0b3J5X3dvcmRfc3BlY2lmaWVyIFBBUkFNUygoY2hhciAq LCBjaGFyICosIGludCAqKSk7Cistc3RhdGljIGNoYXIgKmhpc3RvcnlfZmluZF93b3JkIFBBUkFN UygoY2hhciAqLCBpbnQpKTsKKyBzdGF0aWMgaW50IGhpc3RvcnlfdG9rZW5pemVfd29yZCBQQVJB TVMoKGNvbnN0IGNoYXIgKiwgaW50KSk7Cisrc3RhdGljIGNoYXIgKipoaXN0b3J5X3Rva2VuaXpl X2ludGVybmFsIFBBUkFNUygoY29uc3QgY2hhciAqLCBpbnQsIGludCAqKSk7Cisgc3RhdGljIGNo YXIgKmhpc3Rvcnlfc3Vic3RyaW5nIFBBUkFNUygoY29uc3QgY2hhciAqLCBpbnQsIGludCkpOwor K3N0YXRpYyB2b2lkIGZyZWV3b3JkcyBQQVJBTVMoKGNoYXIgKiosIGludCkpOworK3N0YXRpYyBj aGFyICpoaXN0b3J5X2ZpbmRfd29yZCBQQVJBTVMoKGNoYXIgKiwgaW50KSk7CisgCisgc3RhdGlj IGNoYXIgKnF1b3RlX2JyZWFrcyBQQVJBTVMoKGNoYXIgKikpOworIAorQEAgLTI0Niw3ICsyNDUs NyBAQCBnZXRfaGlzdG9yeV9ldmVudCAoc3RyaW5nLCBjYWxsZXJfaW5kZXgsIGRlbGltaXRpbmdf cXVvdGUpCisgCisgI2RlZmluZSBGQUlMX1NFQVJDSCgpIFwKKyAgIGRvIHsgXAorLSAgICBoaXN0 b3J5X29mZnNldCA9IGhpc3RvcnlfbGVuZ3RoOyBmcmVlICh0ZW1wKSA7IHJldHVybiAoY2hhciAq KU5VTEw7IFwKKysgICAgaGlzdG9yeV9vZmZzZXQgPSBoaXN0b3J5X2xlbmd0aDsgeGZyZWUgKHRl bXApIDsgcmV0dXJuIChjaGFyICopTlVMTDsgXAorICAgfSB3aGlsZSAoMCkKKyAKKyAgIC8qIElm IHRoZXJlIGlzIG5vIHNlYXJjaCBzdHJpbmcsIHRyeSB0byB1c2UgdGhlIHByZXZpb3VzIHNlYXJj aCBzdHJpbmcsCitAQCAtMjU1LDcgKzI1NCw3IEBAIGdldF9oaXN0b3J5X2V2ZW50IChzdHJpbmcs IGNhbGxlcl9pbmRleCwgZGVsaW1pdGluZ19xdW90ZSkKKyAgICAgeworICAgICAgIGlmIChzZWFy Y2hfc3RyaW5nKQorICAgICAgICAgeworLSAgICAgICAgICBmcmVlICh0ZW1wKTsKKysgICAgICAg ICAgeGZyZWUgKHRlbXApOworICAgICAgICAgICB0ZW1wID0gc2F2ZXN0cmluZyAoc2VhcmNoX3N0 cmluZyk7CisgICAgICAgICB9CisgICAgICAgZWxzZQorQEAgLTI4Niw3ICsyODUsNyBAQCBnZXRf aGlzdG9yeV9ldmVudCAoc3RyaW5nLCBjYWxsZXJfaW5kZXgsIGRlbGltaXRpbmdfcXVvdGUpCisg CSAgICAgIHNlYXJjaF9tYXRjaCA9IGhpc3RvcnlfZmluZF93b3JkIChlbnRyeS0+bGluZSwgbG9j YWxfaW5kZXgpOworIAkgICAgfQorIAkgIGVsc2UKKy0JICAgIGZyZWUgKHRlbXApOworKwkgICAg eGZyZWUgKHRlbXApOworIAorIAkgIHJldHVybiAoZW50cnktPmxpbmUpOworIAl9CitAQCAtMzA2 LDE2ICszMDUsMjAgQEAgZ2V0X2hpc3RvcnlfZXZlbnQgKHN0cmluZywgY2FsbGVyX2luZGV4LCBk ZWxpbWl0aW5nX3F1b3RlKQorIC8qIEV4dHJhY3QgdGhlIGNvbnRlbnRzIG9mIFNUUklORyBhcyBp ZiBpdCBpcyBlbmNsb3NlZCBpbiBzaW5nbGUgcXVvdGVzLgorICAgIFNJTkRFWCwgd2hlbiBwYXNz ZWQgaW4sIGlzIHRoZSBvZmZzZXQgb2YgdGhlIGNoYXJhY3RlciBpbW1lZGlhdGVseQorICAgIGZv bGxvd2luZyB0aGUgb3BlbmluZyBzaW5nbGUgcXVvdGU7IG9uIGV4aXQsIFNJTkRFWCBpcyBsZWZ0 IHBvaW50aW5nCistICAgdG8gdGhlIGNsb3Npbmcgc2luZ2xlIHF1b3RlLiAqLworKyAgIHRvIHRo ZSBjbG9zaW5nIHNpbmdsZSBxdW90ZS4gIEZMQUdTIGN1cnJlbnRseSB1c2VkIHRvIGFsbG93IGJh Y2tzbGFzaAorKyAgIHRvIGVzY2FwZSBhIHNpbmdsZSBxdW90ZSAoZS5nLiwgZm9yIGJhc2ggJCcu Li4nKS4gKi8KKyBzdGF0aWMgdm9pZAorLWhpc3Rfc3RyaW5nX2V4dHJhY3Rfc2luZ2xlX3F1b3Rl ZCAoc3RyaW5nLCBzaW5kZXgpCisraGlzdF9zdHJpbmdfZXh0cmFjdF9zaW5nbGVfcXVvdGVkIChz dHJpbmcsIHNpbmRleCwgZmxhZ3MpCisgICAgICBjaGFyICpzdHJpbmc7CistICAgICBpbnQgKnNp bmRleDsKKysgICAgIGludCAqc2luZGV4LCBmbGFnczsKKyB7CisgICByZWdpc3RlciBpbnQgaTsK KyAKKyAgIGZvciAoaSA9ICpzaW5kZXg7IHN0cmluZ1tpXSAmJiBzdHJpbmdbaV0gIT0gJ1wnJzsg aSsrKQorLSAgICA7CisrICAgIHsKKysgICAgICBpZiAoKGZsYWdzICYgMSkgJiYgc3RyaW5nW2ld ID09ICdcXCcgJiYgc3RyaW5nW2krMV0pCisrICAgICAgICBpKys7CisrICAgIH0KKyAKKyAgICpz aW5kZXggPSBpOworIH0KK0BAIC01MDUsNyArNTA4LDcgQEAgcG9zdHByb2Nfc3Vic3RfcmhzICgp CisgCX0KKyAgICAgfQorICAgbmV3W2pdID0gJ1wwJzsKKy0gIGZyZWUgKHN1YnN0X3Jocyk7Cisr ICB4ZnJlZSAoc3Vic3RfcmhzKTsKKyAgIHN1YnN0X3JocyA9IG5ldzsKKyAgIHN1YnN0X3Joc19s ZW4gPSBqOworIH0KK0BAIC01NjQsMTIgKzU2NywxMiBAQCBoaXN0b3J5X2V4cGFuZF9pbnRlcm5h bCAoc3RyaW5nLCBzdGFydCwgZW5kX2luZGV4X3B0ciwgcmV0X3N0cmluZywgY3VycmVudF9saW5l KQorICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQorICAgICAgIGlmIChNQl9DVVJfTUFY ID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCisgCXsKKy0JICBpbnQgYywgbDsKKysJICBp bnQgY2gsIGw7CisgCSAgbCA9IF9ybF9maW5kX3ByZXZfbWJjaGFyIChzdHJpbmcsIGksIE1CX0ZJ TkRfQU5ZKTsKKy0JICBjID0gc3RyaW5nW2xdOworKwkgIGNoID0gc3RyaW5nW2xdOworIAkgIC8q IFhYWCAtIG9yaWdpbmFsIHBhdGNoIGhhZCBpIC0gMSA/Pz8gIElmIGkgPT0gMCBpdCB3b3VsZCBm YWlsLiAqLworLQkgIGlmIChpICYmIChjID09ICdcJycgfHwgYyA9PSAnIicpKQorLQkgICAgcXVv dGVkX3NlYXJjaF9kZWxpbWl0ZXIgPSBjOworKwkgIGlmIChpICYmIChjaCA9PSAnXCcnIHx8IGNo ID09ICciJykpCisrCSAgICBxdW90ZWRfc2VhcmNoX2RlbGltaXRlciA9IGNoOworIAl9CisgICAg ICAgZWxzZQorICNlbmRpZiAvKiBIQU5ETEVfTVVMVElCWVRFICovCSAgCitAQCAtNTgyLDcgKzU4 NSw3IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCBlbmRfaW5kZXhf cHRyLCByZXRfc3RyaW5nLCBjdXJyZW50X2xpbmUpCisgICBpZiAoZXZlbnQgPT0gMCkKKyAgICAg eworICAgICAgICpyZXRfc3RyaW5nID0gaGlzdF9lcnJvciAoc3RyaW5nLCBzdGFydCwgaSwgRVZF TlRfTk9UX0ZPVU5EKTsKKy0gICAgICBmcmVlIChyZXN1bHQpOworKyAgICAgIHhmcmVlIChyZXN1 bHQpOworICAgICAgIHJldHVybiAoLTEpOworICAgICB9CisgCitAQCAtNTk2LDcgKzU5OSw3IEBA IGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCBlbmRfaW5kZXhfcHRyLCBy ZXRfc3RyaW5nLCBjdXJyZW50X2xpbmUpCisgICBpZiAod29yZF9zcGVjID09IChjaGFyICopJmVy cm9yX3BvaW50ZXIpCisgICAgIHsKKyAgICAgICAqcmV0X3N0cmluZyA9IGhpc3RfZXJyb3IgKHN0 cmluZywgc3RhcnRpbmdfaW5kZXgsIGksIEJBRF9XT1JEX1NQRUMpOworLSAgICAgIGZyZWUgKHJl c3VsdCk7CisrICAgICAgeGZyZWUgKHJlc3VsdCk7CisgICAgICAgcmV0dXJuICgtMSk7CisgICAg IH0KKyAKK0BAIC02MjksOCArNjMyLDggQEAgaGlzdG9yeV9leHBhbmRfaW50ZXJuYWwgKHN0cmlu Zywgc3RhcnQsIGVuZF9pbmRleF9wdHIsIHJldF9zdHJpbmcsIGN1cnJlbnRfbGluZSkKKyAJewor IAlkZWZhdWx0OgorIAkgICpyZXRfc3RyaW5nID0gaGlzdF9lcnJvciAoc3RyaW5nLCBpKzEsIGkr MiwgQkFEX01PRElGSUVSKTsKKy0JICBmcmVlIChyZXN1bHQpOworLQkgIGZyZWUgKHRlbXApOwor KwkgIHhmcmVlIChyZXN1bHQpOworKwkgIHhmcmVlICh0ZW1wKTsKKyAJICByZXR1cm4gLTE7Cisg CisgCWNhc2UgJ3EnOgorQEAgLTY1NSw3ICs2NTgsNyBAQCBoaXN0b3J5X2V4cGFuZF9pbnRlcm5h bCAoc3RyaW5nLCBzdGFydCwgZW5kX2luZGV4X3B0ciwgcmV0X3N0cmluZywgY3VycmVudF9saW5l KQorIAkgICAgeworIAkgICAgICB0c3RyKys7CisgCSAgICAgIHQgPSBzYXZlc3RyaW5nICh0c3Ry KTsKKy0JICAgICAgZnJlZSAodGVtcCk7CisrCSAgICAgIHhmcmVlICh0ZW1wKTsKKyAJICAgICAg dGVtcCA9IHQ7CisgCSAgICB9CisgCSAgYnJlYWs7CitAQCAtNjgwLDcgKzY4Myw3IEBAIGhpc3Rv cnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCBlbmRfaW5kZXhfcHRyLCByZXRfc3Ry aW5nLCBjdXJyZW50X2xpbmUpCisgCSAgaWYgKHRzdHIpCisgCSAgICB7CisgCSAgICAgIHQgPSBz YXZlc3RyaW5nICh0c3RyKTsKKy0JICAgICAgZnJlZSAodGVtcCk7CisrCSAgICAgIHhmcmVlICh0 ZW1wKTsKKyAJICAgICAgdGVtcCA9IHQ7CisgCSAgICB9CisgCSAgYnJlYWs7CitAQCAtNzU2LDgg Kzc1OSw4IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCBlbmRfaW5k ZXhfcHRyLCByZXRfc3RyaW5nLCBjdXJyZW50X2xpbmUpCisgCSAgICBpZiAoc3Vic3RfbGhzX2xl biA9PSAwKQorIAkgICAgICB7CisgCQkqcmV0X3N0cmluZyA9IGhpc3RfZXJyb3IgKHN0cmluZywg c3RhcnRpbmdfaW5kZXgsIGksIE5PX1BSRVZfU1VCU1QpOworLQkJZnJlZSAocmVzdWx0KTsKKy0J CWZyZWUgKHRlbXApOworKwkJeGZyZWUgKHJlc3VsdCk7CisrCQl4ZnJlZSAodGVtcCk7CisgCQly ZXR1cm4gLTE7CisgCSAgICAgIH0KKyAKK0BAIC03NjYsOCArNzY5LDggQEAgaGlzdG9yeV9leHBh bmRfaW50ZXJuYWwgKHN0cmluZywgc3RhcnQsIGVuZF9pbmRleF9wdHIsIHJldF9zdHJpbmcsIGN1 cnJlbnRfbGluZSkKKyAJICAgIGlmIChzdWJzdF9saHNfbGVuID4gbF90ZW1wKQorIAkgICAgICB7 CisgCQkqcmV0X3N0cmluZyA9IGhpc3RfZXJyb3IgKHN0cmluZywgc3RhcnRpbmdfaW5kZXgsIGks IFNVQlNUX0ZBSUxFRCk7CistCQlmcmVlIChyZXN1bHQpOworLQkJZnJlZSAodGVtcCk7CisrCQl4 ZnJlZSAocmVzdWx0KTsKKysJCXhmcmVlICh0ZW1wKTsKKyAJCXJldHVybiAoLTEpOworIAkgICAg ICB9CisgCitAQCAtODA4LDcgKzgxMSw3IEBAIGhpc3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJp bmcsIHN0YXJ0LCBlbmRfaW5kZXhfcHRyLCByZXRfc3RyaW5nLCBjdXJyZW50X2xpbmUpCisgCQkJ ICAgICB0ZW1wICsgc2kgKyBzdWJzdF9saHNfbGVuLAorIAkJCSAgICAgbF90ZW1wIC0gKHNpICsg c3Vic3RfbGhzX2xlbikpOworIAkJICAgIG5ld19ldmVudFtsZW5dID0gJ1wwJzsKKy0JCSAgICBm cmVlICh0ZW1wKTsKKysJCSAgICB4ZnJlZSAodGVtcCk7CisgCQkgICAgdGVtcCA9IG5ld19ldmVu dDsKKyAKKyAJCSAgICBmYWlsZWQgPSAwOworQEAgLTg0NCw4ICs4NDcsOCBAQCBoaXN0b3J5X2V4 cGFuZF9pbnRlcm5hbCAoc3RyaW5nLCBzdGFydCwgZW5kX2luZGV4X3B0ciwgcmV0X3N0cmluZywg Y3VycmVudF9saW5lKQorIAkgICAgICBjb250aW51ZTsJCS8qIGRvbid0IHdhbnQgdG8gaW5jcmVt ZW50IGkgKi8KKyAKKyAJICAgICpyZXRfc3RyaW5nID0gaGlzdF9lcnJvciAoc3RyaW5nLCBzdGFy dGluZ19pbmRleCwgaSwgU1VCU1RfRkFJTEVEKTsKKy0JICAgIGZyZWUgKHJlc3VsdCk7CistCSAg ICBmcmVlICh0ZW1wKTsKKysJICAgIHhmcmVlIChyZXN1bHQpOworKwkgICAgeGZyZWUgKHRlbXAp OworIAkgICAgcmV0dXJuICgtMSk7CisgCSAgfQorIAl9CitAQCAtODY2LDcgKzg2OSw3IEBAIGhp c3RvcnlfZXhwYW5kX2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCBlbmRfaW5kZXhfcHRyLCByZXRf c3RyaW5nLCBjdXJyZW50X2xpbmUpCisgICAgICAgZWxzZQorIAl4ID0gc2F2ZXN0cmluZyAodGVt cCk7CisgCistICAgICAgZnJlZSAodGVtcCk7CisrICAgICAgeGZyZWUgKHRlbXApOworICAgICAg IHRlbXAgPSB4OworICAgICB9CisgCitAQCAtODc0LDcgKzg3Nyw3IEBAIGhpc3RvcnlfZXhwYW5k X2ludGVybmFsIChzdHJpbmcsIHN0YXJ0LCBlbmRfaW5kZXhfcHRyLCByZXRfc3RyaW5nLCBjdXJy ZW50X2xpbmUpCisgICBpZiAobiA+PSByZXN1bHRfbGVuKQorICAgICByZXN1bHQgPSAoY2hhciAq KXhyZWFsbG9jIChyZXN1bHQsIG4gKyAyKTsKKyAgIHN0cmNweSAocmVzdWx0LCB0ZW1wKTsKKy0g IGZyZWUgKHRlbXApOworKyAgeGZyZWUgKHRlbXApOworIAorICAgKmVuZF9pbmRleF9wdHIgPSBp OworICAgKnJldF9zdHJpbmcgPSByZXN1bHQ7CitAQCAtOTI1LDcgKzkyOCw3IEBAIGhpc3Rvcnlf ZXhwYW5kIChoc3RyaW5nLCBvdXRwdXQpCisgICAgICBjaGFyICoqb3V0cHV0OworIHsKKyAgIHJl Z2lzdGVyIGludCBqOworLSAgaW50IGksIHIsIGwsIHBhc3NjLCBjYywgbW9kaWZpZWQsIGVpbmRl eCwgb25seV9wcmludGluZywgZHF1b3RlOworKyAgaW50IGksIHIsIGwsIHBhc3NjLCBjYywgbW9k aWZpZWQsIGVpbmRleCwgb25seV9wcmludGluZywgZHF1b3RlLCBmbGFnOworICAgY2hhciAqc3Ry aW5nOworIAorICAgLyogVGhlIG91dHB1dCBzdHJpbmcsIGFuZCBpdHMgbGVuZ3RoLiAqLworQEAg LTEwMTcsNyArMTAyMCw3IEBAIGhpc3RvcnlfZXhwYW5kIChoc3RyaW5nLCBvdXRwdXQpCisgCSAg ICB9CisgCSAgZWxzZSBpZiAoc3RyaW5nW2ldID09IGhpc3RvcnlfZXhwYW5zaW9uX2NoYXIpCisg CSAgICB7CistCSAgICAgIGlmICghY2MgfHwgbWVtYmVyIChjYywgaGlzdG9yeV9ub19leHBhbmRf Y2hhcnMpKQorKwkgICAgICBpZiAoY2MgPT0gMCB8fCBtZW1iZXIgKGNjLCBoaXN0b3J5X25vX2V4 cGFuZF9jaGFycykpCisgCQljb250aW51ZTsKKyAJICAgICAgLyogSWYgdGhlIGNhbGxpbmcgYXBw bGljYXRpb24gaGFzIHNldAorIAkJIGhpc3RvcnlfaW5oaWJpdF9leHBhbnNpb25fZnVuY3Rpb24g dG8gYSBmdW5jdGlvbiB0aGF0IGNoZWNrcworQEAgLTEwNDUsOCArMTA0OCw5IEBAIGhpc3Rvcnlf ZXhwYW5kIChoc3RyaW5nLCBvdXRwdXQpCisgCSAgZWxzZSBpZiAoZHF1b3RlID09IDAgJiYgaGlz dG9yeV9xdW90ZXNfaW5oaWJpdF9leHBhbnNpb24gJiYgc3RyaW5nW2ldID09ICdcJycpCisgCSAg ICB7CisgCSAgICAgIC8qIElmIHRoaXMgaXMgYmFzaCwgc2luZ2xlIHF1b3RlcyBpbmhpYml0IGhp c3RvcnkgZXhwYW5zaW9uLiAqLworKwkgICAgICBmbGFnID0gKGkgPiAwICYmIHN0cmluZ1tpIC0g MV0gPT0gJyQnKTsKKyAJICAgICAgaSsrOworLQkgICAgICBoaXN0X3N0cmluZ19leHRyYWN0X3Np bmdsZV9xdW90ZWQgKHN0cmluZywgJmkpOworKwkgICAgICBoaXN0X3N0cmluZ19leHRyYWN0X3Np bmdsZV9xdW90ZWQgKHN0cmluZywgJmksIGZsYWcpOworIAkgICAgfQorIAkgIGVsc2UgaWYgKGhp c3RvcnlfcXVvdGVzX2luaGliaXRfZXhwYW5zaW9uICYmIHN0cmluZ1tpXSA9PSAnXFwnKQorIAkg ICAgeworQEAgLTEwNjAsNyArMTA2NCw3IEBAIGhpc3RvcnlfZXhwYW5kIChoc3RyaW5nLCBvdXRw dXQpCisgCSAgCisgICAgICAgaWYgKHN0cmluZ1tpXSAhPSBoaXN0b3J5X2V4cGFuc2lvbl9jaGFy KQorIAl7CistCSAgZnJlZSAocmVzdWx0KTsKKysJICB4ZnJlZSAocmVzdWx0KTsKKyAJICAqb3V0 cHV0ID0gc2F2ZXN0cmluZyAoc3RyaW5nKTsKKyAJICByZXR1cm4gKDApOworIAl9CitAQCAtMTA5 Nyw3ICsxMTAxLDcgQEAgaGlzdG9yeV9leHBhbmQgKGhzdHJpbmcsIG91dHB1dCkKKyAJICBpZiAo c3RybGVuIChtYikgPiAxKQorIAkgICAgeworIAkgICAgICBBRERfU1RSSU5HIChtYik7CistCSAg ICAgIGJyZWFrOworKwkgICAgICBjb250aW51ZTsKKyAJICAgIH0KKyAJfQorICNlbmRpZiAvKiBI QU5ETEVfTVVMVElCWVRFICovCitAQCAtMTEzMSwxNSArMTEzNSwxNiBAQCBoaXN0b3J5X2V4cGFu ZCAoaHN0cmluZywgb3V0cHV0KQorIAkgICAgICB7CisgCQlpbnQgcXVvdGUsIHNsZW47CisgCisr CQlmbGFnID0gKGkgPiAwICYmIHN0cmluZ1tpIC0gMV0gPT0gJyQnKTsKKyAJCXF1b3RlID0gaSsr OworLQkJaGlzdF9zdHJpbmdfZXh0cmFjdF9zaW5nbGVfcXVvdGVkIChzdHJpbmcsICZpKTsKKysJ CWhpc3Rfc3RyaW5nX2V4dHJhY3Rfc2luZ2xlX3F1b3RlZCAoc3RyaW5nLCAmaSwgZmxhZyk7Cisg CisgCQlzbGVuID0gaSAtIHF1b3RlICsgMjsKKyAJCXRlbXAgPSAoY2hhciAqKXhtYWxsb2MgKHNs ZW4pOworIAkJc3RybmNweSAodGVtcCwgc3RyaW5nICsgcXVvdGUsIHNsZW4pOworIAkJdGVtcFtz bGVuIC0gMV0gPSAnXDAnOworIAkJQUREX1NUUklORyAodGVtcCk7CistCQlmcmVlICh0ZW1wKTsK KysJCXhmcmVlICh0ZW1wKTsKKyAJICAgICAgfQorIAkgICAgZWxzZQorIAkgICAgICBBRERfQ0hB UiAoc3RyaW5nW2ldKTsKK0BAIC0xMTUyLDcgKzExNTcsNyBAQCBoaXN0b3J5X2V4cGFuZCAoaHN0 cmluZywgb3V0cHV0KQorIAkgICAgICB0ZW1wID0gKGNoYXIgKil4bWFsbG9jIChsIC0gaSArIDEp OworIAkgICAgICBzdHJjcHkgKHRlbXAsIHN0cmluZyArIGkpOworIAkgICAgICBBRERfU1RSSU5H ICh0ZW1wKTsKKy0JICAgICAgZnJlZSAodGVtcCk7CisrCSAgICAgIHhmcmVlICh0ZW1wKTsKKyAJ ICAgICAgaSA9IGw7CisgCSAgICB9CisgCSAgZWxzZQorQEAgLTExNjUsNyArMTE3MCw4IEBAIGhp c3RvcnlfZXhwYW5kIChoc3RyaW5nLCBvdXRwdXQpCisgCSAgLyogSWYgdGhlIGhpc3RvcnlfZXhw YW5zaW9uX2NoYXIgaXMgZm9sbG93ZWQgYnkgb25lIG9mIHRoZQorIAkgICAgIGNoYXJhY3RlcnMg aW4gaGlzdG9yeV9ub19leHBhbmRfY2hhcnMsIHRoZW4gaXQgaXMgbm90IGEKKyAJICAgICBjYW5k aWRhdGUgZm9yIGV4cGFuc2lvbiBvZiBhbnkga2luZC4gKi8KKy0JICBpZiAobWVtYmVyIChjYywg aGlzdG9yeV9ub19leHBhbmRfY2hhcnMpKQorKwkgIGlmIChjYyA9PSAwIHx8IG1lbWJlciAoY2Ms IGhpc3Rvcnlfbm9fZXhwYW5kX2NoYXJzKSB8fAorKwkgIAkJIChoaXN0b3J5X2luaGliaXRfZXhw YW5zaW9uX2Z1bmN0aW9uICYmICgqaGlzdG9yeV9pbmhpYml0X2V4cGFuc2lvbl9mdW5jdGlvbikg KHN0cmluZywgaSkpKQorIAkgICAgeworIAkgICAgICBBRERfQ0hBUiAoc3RyaW5nW2ldKTsKKyAJ ICAgICAgYnJlYWs7CitAQCAtMTE4NCw3ICsxMTkwLDcgQEAgaGlzdG9yeV9leHBhbmQgKGhzdHJp bmcsIG91dHB1dCkKKyAJCSAgdGVtcCA9IChjaGFyICopeG1hbGxvYyAoMSArIHN0cmxlbiAocmVz dWx0KSk7CisgCQkgIHN0cmNweSAodGVtcCwgcmVzdWx0KTsKKyAJCSAgQUREX1NUUklORyAodGVt cCk7CistCQkgIGZyZWUgKHRlbXApOworKwkJICB4ZnJlZSAodGVtcCk7CisgCQl9CisgCSAgICAg IGkrKzsKKyAJICAgICAgYnJlYWs7CitAQCAtMTE5NSw5ICsxMjAxLDkgQEAgaGlzdG9yeV9leHBh bmQgKGhzdHJpbmcsIG91dHB1dCkKKyAJICBpZiAociA8IDApCisgCSAgICB7CisgCSAgICAgICpv dXRwdXQgPSB0ZW1wOworLQkgICAgICBmcmVlIChyZXN1bHQpOworKwkgICAgICB4ZnJlZSAocmVz dWx0KTsKKyAJICAgICAgaWYgKHN0cmluZyAhPSBoc3RyaW5nKQorLQkJZnJlZSAoc3RyaW5nKTsK KysJCXhmcmVlIChzdHJpbmcpOworIAkgICAgICByZXR1cm4gLTE7CisgCSAgICB9CisgCSAgZWxz ZQorQEAgLTEyMDcsNyArMTIxMyw3IEBAIGhpc3RvcnlfZXhwYW5kIChoc3RyaW5nLCBvdXRwdXQp CisgCQkgIG1vZGlmaWVkKys7CisgCQkgIGlmICgqdGVtcCkKKyAJCSAgICBBRERfU1RSSU5HICh0 ZW1wKTsKKy0JCSAgZnJlZSAodGVtcCk7CisrCQkgIHhmcmVlICh0ZW1wKTsKKyAJCX0KKyAJICAg ICAgb25seV9wcmludGluZyA9IHIgPT0gMTsKKyAJICAgICAgaSA9IGVpbmRleDsKK0BAIC0xMjE4 LDcgKzEyMjQsNyBAQCBoaXN0b3J5X2V4cGFuZCAoaHN0cmluZywgb3V0cHV0KQorIAorICAgKm91 dHB1dCA9IHJlc3VsdDsKKyAgIGlmIChzdHJpbmcgIT0gaHN0cmluZykKKy0gICAgZnJlZSAoc3Ry aW5nKTsKKysgICAgeGZyZWUgKHN0cmluZyk7CisgCisgICBpZiAob25seV9wcmludGluZykKKyAg ICAgeworQEAgLTEzOTksOCArMTQwNSw4IEBAIGhpc3RvcnlfYXJnX2V4dHJhY3QgKGZpcnN0LCBs YXN0LCBzdHJpbmcpCisgICAgIH0KKyAKKyAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKKy0g ICAgZnJlZSAobGlzdFtpXSk7CistICBmcmVlIChsaXN0KTsKKysgICAgeGZyZWUgKGxpc3RbaV0p OworKyAgeGZyZWUgKGxpc3QpOworIAorICAgcmV0dXJuIChyZXN1bHQpOworIH0KK0BAIC0xNDEx LDEwICsxNDE3LDEwIEBAIGhpc3RvcnlfdG9rZW5pemVfd29yZCAoc3RyaW5nLCBpbmQpCisgICAg ICBpbnQgaW5kOworIHsKKyAgIHJlZ2lzdGVyIGludCBpOworLSAgaW50IGRlbGltaXRlcjsKKysg IGludCBkZWxpbWl0ZXIsIG5lc3RkZWxpbSwgZGVsaW1vcGVuOworIAorICAgaSA9IGluZDsKKy0g IGRlbGltaXRlciA9IDA7CisrICBkZWxpbWl0ZXIgPSBuZXN0ZGVsaW0gPSAwOworIAorICAgaWYg KG1lbWJlciAoc3RyaW5nW2ldLCAiKClcbiIpKQorICAgICB7CitAQCAtMTQzMCwyMCArMTQzNiwz NCBAQCBoaXN0b3J5X3Rva2VuaXplX3dvcmQgKHN0cmluZywgaW5kKQorIAl7CisgCSAgaWYgKHBl ZWsgPT0gJzwnICYmIHN0cmluZ1tpICsgMl0gPT0gJy0nKQorIAkgICAgaSsrOworKwkgIGVsc2Ug aWYgKHBlZWsgPT0gJzwnICYmIHN0cmluZ1tpICsgMl0gPT0gJzwnKQorKwkgICAgaSsrOworIAkg IGkgKz0gMjsKKyAJICByZXR1cm4gaTsKKyAJfQorLSAgICAgIGVsc2UKKysgICAgICBlbHNlIGlm ICgocGVlayA9PSAnJicgJiYgKHN0cmluZ1tpXSA9PSAnPicgfHwgc3RyaW5nW2ldID09ICc8Jykp IHx8CisrCQkocGVlayA9PSAnPicgJiYgc3RyaW5nW2ldID09ICcmJykpCisgCXsKKy0JICBpZiAo KHBlZWsgPT0gJyYnICYmIChzdHJpbmdbaV0gPT0gJz4nIHx8IHN0cmluZ1tpXSA9PSAnPCcpKSB8 fAorLQkgICAgICAocGVlayA9PSAnPicgJiYgc3RyaW5nW2ldID09ICcmJykgfHwKKy0JICAgICAg KHBlZWsgPT0gJygnICYmIChzdHJpbmdbaV0gPT0gJz4nIHx8IHN0cmluZ1tpXSA9PSAnPCcpKSB8 fCAvKiApICovCistCSAgICAgIChwZWVrID09ICcoJyAmJiBzdHJpbmdbaV0gPT0gJyQnKSkgLyog KSAqLworLQkgICAgeworLQkgICAgICBpICs9IDI7CistCSAgICAgIHJldHVybiBpOworLQkgICAg fQorKwkgIGkgKz0gMjsKKysJICByZXR1cm4gaTsKKysJfQorKyAgICAgIC8qIFhYWCAtIHNlcGFy YXRlZCBvdXQgZm9yIGxhdGVyIC0tIGJhc2gtNC4yICovCisrICAgICAgZWxzZSBpZiAoKHBlZWsg PT0gJygnICYmIChzdHJpbmdbaV0gPT0gJz4nIHx8IHN0cmluZ1tpXSA9PSAnPCcpKSB8fCAvKiAp ICovCisrCSAgICAgICAocGVlayA9PSAnKCcgJiYgc3RyaW5nW2ldID09ICckJykpIC8qKSovCisr CXsKKysJICBpICs9IDI7CisrCSAgZGVsaW1vcGVuID0gJygnOworKwkgIGRlbGltaXRlciA9ICcp JzsKKysJICBuZXN0ZGVsaW0gPSAxOworKwkgIGdvdG8gZ2V0X3dvcmQ7CisgCX0KKysjaWYgMAor KyAgICAgIGVsc2UgaWYgKHBlZWsgPT0gJ1wnJyAmJiBzdHJpbmdbaV0gPT0gJyQnKQorKyAgICAg ICAgeworKwkgIGkgKz0gMjsJLyogWFhYICovCisrCSAgcmV0dXJuIGk7CisrICAgICAgICB9Cisr I2VuZGlmCisgCisgICAgICAgaWYgKHN0cmluZ1tpXSAhPSAnJCcpCisgCXsKK0BAIC0xNDUyLDkg KzE0NzIsMjUgQEAgaGlzdG9yeV90b2tlbml6ZV93b3JkIChzdHJpbmcsIGluZCkKKyAJfQorICAg ICB9CisgCisrICAvKiBzYW1lIGNvZGUgYWxzbyB1c2VkIGZvciAkKC4uLikvPCguLi4pLz4oLi4u KSBhYm92ZSAqLworKyAgaWYgKG1lbWJlciAoc3RyaW5nW2ldLCAiIUA/KyoiKSkKKysgICAgewor KyAgICAgIGludCBwZWVrID0gc3RyaW5nW2kgKyAxXTsKKysKKysgICAgICBpZiAocGVlayA9PSAn KCcpCQkvKikqLworKwl7CisrCSAgLyogU2hlbGwgZXh0ZW5kZWQgZ2xvYmJpbmcgcGF0dGVybnMg Ki8KKysJICBpICs9IDI7CisrCSAgZGVsaW1vcGVuID0gJygnOworKwkgIGRlbGltaXRlciA9ICcp JzsJLyogWFhYIC0gbm90IHBlcmZlY3QgKi8KKysJICBuZXN0ZGVsaW0gPSAxOworKwl9CisrICAg IH0KKysKKytnZXRfd29yZDoKKyAgIC8qIEdldCB3b3JkIGZyb20gc3RyaW5nICsgaTsgKi8KKyAK Ky0gIGlmIChtZW1iZXIgKHN0cmluZ1tpXSwgSElTVE9SWV9RVU9URV9DSEFSQUNURVJTKSkKKysg IGlmIChkZWxpbWl0ZXIgPT0gMCAmJiBtZW1iZXIgKHN0cmluZ1tpXSwgSElTVE9SWV9RVU9URV9D SEFSQUNURVJTKSkKKyAgICAgZGVsaW1pdGVyID0gc3RyaW5nW2krK107CisgCisgICBmb3IgKDsg c3RyaW5nW2ldOyBpKyspCitAQCAtMTQ3MiwxNiArMTUwOCwzMSBAQCBoaXN0b3J5X3Rva2VuaXpl X3dvcmQgKHN0cmluZywgaW5kKQorIAkgIGNvbnRpbnVlOworIAl9CisgCisrICAgICAgLyogZGVs aW1pdGVyIG11c3QgYmUgc2V0IGFuZCBzZXQgdG8gc29tZXRoaW5nIG90aGVyIHRoYW4gYSBxdW90 ZSBpZgorKwkgbmVzdGRlbGltIGlzIHNldCwgc28gdGhlc2UgdGVzdHMgYXJlIHNhZmUuICovCisr ICAgICAgaWYgKG5lc3RkZWxpbSAmJiBzdHJpbmdbaV0gPT0gZGVsaW1vcGVuKQorKwl7CisrCSAg bmVzdGRlbGltKys7CisrCSAgY29udGludWU7CisrCX0KKysgICAgICBpZiAobmVzdGRlbGltICYm IHN0cmluZ1tpXSA9PSBkZWxpbWl0ZXIpCisrCXsKKysJICBuZXN0ZGVsaW0tLTsKKysJICBpZiAo bmVzdGRlbGltID09IDApCisrCSAgICBkZWxpbWl0ZXIgPSAwOworKwkgIGNvbnRpbnVlOworKwl9 CisrICAgICAgCisgICAgICAgaWYgKGRlbGltaXRlciAmJiBzdHJpbmdbaV0gPT0gZGVsaW1pdGVy KQorIAl7CisgCSAgZGVsaW1pdGVyID0gMDsKKyAJICBjb250aW51ZTsKKyAJfQorIAorLSAgICAg IGlmICghZGVsaW1pdGVyICYmIChtZW1iZXIgKHN0cmluZ1tpXSwgaGlzdG9yeV93b3JkX2RlbGlt aXRlcnMpKSkKKysgICAgICBpZiAoZGVsaW1pdGVyID09IDAgJiYgKG1lbWJlciAoc3RyaW5nW2ld LCBoaXN0b3J5X3dvcmRfZGVsaW1pdGVycykpKQorIAlicmVhazsKKyAKKy0gICAgICBpZiAoIWRl bGltaXRlciAmJiBtZW1iZXIgKHN0cmluZ1tpXSwgSElTVE9SWV9RVU9URV9DSEFSQUNURVJTKSkK KysgICAgICBpZiAoZGVsaW1pdGVyID09IDAgJiYgbWVtYmVyIChzdHJpbmdbaV0sIEhJU1RPUllf UVVPVEVfQ0hBUkFDVEVSUykpCisgCWRlbGltaXRlciA9IHN0cmluZ1tpXTsKKyAgICAgfQorIAor QEAgLTE1NjksNiArMTYyMCwxOCBAQCBoaXN0b3J5X3Rva2VuaXplIChzdHJpbmcpCisgICByZXR1 cm4gKGhpc3RvcnlfdG9rZW5pemVfaW50ZXJuYWwgKHN0cmluZywgLTEsIChpbnQgKilOVUxMKSk7 CisgfQorIAorKy8qIEZyZWUgbWVtYmVycyBvZiBXT1JEUyBmcm9tIFNUQVJUIHRvIGFuIGVtcHR5 IHN0cmluZyAqLworK3N0YXRpYyB2b2lkCisrZnJlZXdvcmRzICh3b3Jkcywgc3RhcnQpCisrICAg ICBjaGFyICoqd29yZHM7CisrICAgICBpbnQgc3RhcnQ7CisreworKyAgcmVnaXN0ZXIgaW50IGk7 CisrCisrICBmb3IgKGkgPSBzdGFydDsgd29yZHNbaV07IGkrKykKKysgICAgeGZyZWUgKHdvcmRz W2ldKTsKKyt9CisrCisgLyogRmluZCBhbmQgcmV0dXJuIHRoZSB3b3JkIHdoaWNoIGNvbnRhaW5z IHRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggSU5ECisgICAgaW4gdGhlIGhpc3RvcnkgbGluZSBMSU5F LiAgVXNlZCB0byBzYXZlIHRoZSB3b3JkIG1hdGNoZWQgYnkgdGhlCisgICAgbGFzdCBoaXN0b3J5 ICE/c3RyaW5nPyBzZWFyY2guICovCitAQCAtMTU4MiwxMiArMTY0NSwxNiBAQCBoaXN0b3J5X2Zp bmRfd29yZCAobGluZSwgaW5kKQorIAorICAgd29yZHMgPSBoaXN0b3J5X3Rva2VuaXplX2ludGVy bmFsIChsaW5lLCBpbmQsICZ3aW5kKTsKKyAgIGlmICh3aW5kID09IC0xIHx8IHdvcmRzID09IDAp CistICAgIHJldHVybiAoKGNoYXIgKilOVUxMKTsKKysgICAgeworKyAgICAgIGlmICh3b3JkcykK KysJZnJlZXdvcmRzICh3b3JkcywgMCk7CisrICAgICAgRlJFRSAod29yZHMpOworKyAgICAgIHJl dHVybiAoKGNoYXIgKilOVUxMKTsKKysgICAgfQorICAgcyA9IHdvcmRzW3dpbmRdOworICAgZm9y IChpID0gMDsgaSA8IHdpbmQ7IGkrKykKKy0gICAgZnJlZSAod29yZHNbaV0pOworLSAgZm9yIChp ID0gd2luZCArIDE7IHdvcmRzW2ldOyBpKyspCistICAgIGZyZWUgKHdvcmRzW2ldKTsKKy0gIGZy ZWUgKHdvcmRzKTsKKysgICAgeGZyZWUgKHdvcmRzW2ldKTsKKysgIGZyZWV3b3JkcyAod29yZHMs IHdpbmQgKyAxKTsKKysgIHhmcmVlICh3b3Jkcyk7CisgICByZXR1cm4gczsKKyB9CistLS0gYS9y ZWFkbGluZS9oaXN0ZmlsZS5jCisrKysgYi9yZWFkbGluZS9oaXN0ZmlsZS5jCitAQCAtMSwyNCAr MSwyMyBAQAorIC8qIGhpc3RmaWxlLmMgLSBmdW5jdGlvbnMgdG8gbWFuaXB1bGF0ZSB0aGUgaGlz dG9yeSBmaWxlLiAqLworIAorLS8qIENvcHlyaWdodCAoQykgMTk4OS0yMDAzIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk4OS0yMDEwIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBjb250YWlucyB0aGUgR05V IEhpc3RvcnkgTGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgorKyAgIFRoaXMgZmlsZSBj b250YWlucyB0aGUgR05VIEhpc3RvcnkgTGlicmFyeSAoSGlzdG9yeSksIGEgc2V0IG9mCisgICAg cm91dGluZXMgZm9yIG1hbmFnaW5nIHRoZSB0ZXh0IG9mIHByZXZpb3VzbHkgdHlwZWQgbGluZXMu CisgCistICAgVGhlIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIEhpc3RvcnkgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIg b3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgTGlicmFyeSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKy0gICBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCist ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUKKy0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrICAgSGlzdG9yeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVy YWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRv IG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggSGlzdG9y eS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAor IC8qIFRoZSBnb2FsIGlzIHRvIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIHRyYW5zcGFyZW50LCBz byB0aGF0IHlvdQorICAgIGRvbid0IGhhdmUgdG8ga25vdyB3aGF0IGRhdGEgdHlwZXMgYXJlIHVz ZWQsIGp1c3Qgd2hhdCBmdW5jdGlvbnMKK0BAIC01Myw3ICs1Miw5IEBACisgIyAgaW5jbHVkZSA8 dW5pc3RkLmg+CisgI2VuZGlmCisgCistI2lmIGRlZmluZWQgKF9fRU1YX18pIHx8IGRlZmluZWQg KF9fQ1lHV0lOX18pCisrI2luY2x1ZGUgPGN0eXBlLmg+CisrCisrI2lmIGRlZmluZWQgKF9fRU1Y X18pCisgIyAgdW5kZWYgSEFWRV9NTUFQCisgI2VuZGlmCisgCitAQCAtMTAzLDcgKzEwNCw3IEBA IGludCBoaXN0b3J5X3dyaXRlX3RpbWVzdGFtcHMgPSAwOworIAorIC8qIERvZXMgUyBsb29rIGxp a2UgdGhlIGJlZ2lubmluZyBvZiBhIGhpc3RvcnkgdGltZXN0YW1wIGVudHJ5PyAgUGxhY2Vob2xk ZXIKKyAgICBmb3IgbW9yZSBleHRlbnNpdmUgdGVzdHMuICovCistI2RlZmluZSBISVNUX1RJTUVT VEFNUF9TVEFSVChzKQkJKCoocykgPT0gaGlzdG9yeV9jb21tZW50X2NoYXIpCisrI2RlZmluZSBI SVNUX1RJTUVTVEFNUF9TVEFSVChzKQkJKCoocykgPT0gaGlzdG9yeV9jb21tZW50X2NoYXIgJiYg aXNkaWdpdCAoKHMpWzFdKSApCisgCisgLyogUmV0dXJuIHRoZSBzdHJpbmcgdGhhdCBzaG91bGQg YmUgdXNlZCBpbiB0aGUgcGxhY2Ugb2YgdGhpcworICAgIGZpbGVuYW1lLiAgVGhpcyBvbmx5IG1h dHRlcnMgd2hlbiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGUKK0BAIC0xMjUsOCArMTI2LDEyIEBAIGhp c3RvcnlfZmlsZW5hbWUgKGZpbGVuYW1lKQorIAorICAgaWYgKGhvbWUgPT0gMCkKKyAgICAgewor KyNpZiAwCisgICAgICAgaG9tZSA9ICIuIjsKKyAgICAgICBob21lX2xlbiA9IDE7CisrI2Vsc2UK KysgICAgICByZXR1cm4gKE5VTEwpOworKyNlbmRpZgorICAgICB9CisgICBlbHNlCisgICAgIGhv bWVfbGVuID0gc3RybGVuIChob21lKTsKK0BAIC0xNzgsNyArMTgzLDcgQEAgcmVhZF9oaXN0b3J5 X3JhbmdlIChmaWxlbmFtZSwgZnJvbSwgdG8pCisgCisgICBidWZmZXIgPSBsYXN0X3RzID0gKGNo YXIgKilOVUxMOworICAgaW5wdXQgPSBoaXN0b3J5X2ZpbGVuYW1lIChmaWxlbmFtZSk7CistICBm aWxlID0gb3BlbiAoaW5wdXQsIE9fUkRPTkxZfE9fQklOQVJZLCAwNjY2KTsKKysgIGZpbGUgPSBp bnB1dCA/IG9wZW4gKGlucHV0LCBPX1JET05MWXxPX0JJTkFSWSwgMDY2NikgOiAtMTsKKyAKKyAg IGlmICgoZmlsZSA8IDApIHx8IChmc3RhdCAoZmlsZSwgJmZpbmZvKSA9PSAtMSkpCisgICAgIGdv dG8gZXJyb3JfYW5kX2V4aXQ7CitAQCAtMjU2LDggKzI2MSw5IEBAIHJlYWRfaGlzdG9yeV9yYW5n ZSAoZmlsZW5hbWUsIGZyb20sIHRvKQorICAgZm9yIChsaW5lX2VuZCA9IGxpbmVfc3RhcnQ7IGxp bmVfZW5kIDwgYnVmZW5kOyBsaW5lX2VuZCsrKQorICAgICBpZiAoKmxpbmVfZW5kID09ICdcbicp CisgICAgICAgeworLQlpZiAobGluZV9lbmQgLSAxID49IGxpbmVfc3RhcnQgJiYgKihsaW5lX2Vu ZCAtIDEpID09ICdccicpCistCSAgKihsaW5lX2VuZCAtIDEpID0gJ1wwJzsKKysJLyogQ2hhbmdl IHRvIGFsbG93IFdpbmRvd3MtbGlrZSBcclxuIGVuZCBvZiBsaW5lIGRlbGltaXRlci4gKi8KKysJ aWYgKGxpbmVfZW5kID4gbGluZV9zdGFydCAmJiBsaW5lX2VuZFstMV0gPT0gJ1xyJykKKysJICBs aW5lX2VuZFstMV0gPSAnXDAnOworIAllbHNlCisgCSAgKmxpbmVfZW5kID0gJ1wwJzsKKyAKK0BA IC0zMTIsNyArMzE4LDcgQEAgaGlzdG9yeV90cnVuY2F0ZV9maWxlIChmbmFtZSwgbGluZXMpCisg CisgICBidWZmZXIgPSAoY2hhciAqKU5VTEw7CisgICBmaWxlbmFtZSA9IGhpc3RvcnlfZmlsZW5h bWUgKGZuYW1lKTsKKy0gIGZpbGUgPSBvcGVuIChmaWxlbmFtZSwgT19SRE9OTFl8T19CSU5BUlks IDA2NjYpOworKyAgZmlsZSA9IGZpbGVuYW1lID8gb3BlbiAoZmlsZW5hbWUsIE9fUkRPTkxZfE9f QklOQVJZLCAwNjY2KSA6IC0xOworICAgcnYgPSAwOworIAorICAgLyogRG9uJ3QgdHJ5IHRvIHRy dW5jYXRlIG5vbi1yZWd1bGFyIGZpbGVzLiAqLworQEAgLTQxMSw3ICs0MTcsNyBAQCBoaXN0b3J5 X3RydW5jYXRlX2ZpbGUgKGZuYW1lLCBsaW5lcykKKyAKKyAgIEZSRUUgKGJ1ZmZlcik7CisgCist ICBmcmVlIChmaWxlbmFtZSk7CisrICB4ZnJlZSAoZmlsZW5hbWUpOworICAgcmV0dXJuIHJ2Owor IH0KKyAKK0BAIC00MzQsOSArNDQwLDEwIEBAIGhpc3RvcnlfZG9fd3JpdGUgKGZpbGVuYW1lLCBu ZWxlbWVudHMsIG92ZXJ3cml0ZSkKKyAgIG1vZGUgPSBvdmVyd3JpdGUgPyBPX1dST05MWXxPX0NS RUFUfE9fVFJVTkN8T19CSU5BUlkgOiBPX1dST05MWXxPX0FQUEVORHxPX0JJTkFSWTsKKyAjZW5k aWYKKyAgIG91dHB1dCA9IGhpc3RvcnlfZmlsZW5hbWUgKGZpbGVuYW1lKTsKKysgIGZpbGUgPSBv dXRwdXQgPyBvcGVuIChvdXRwdXQsIG1vZGUsIDA2MDApIDogLTE7CisgICBydiA9IDA7CisgCist ICBpZiAoKGZpbGUgPSBvcGVuIChvdXRwdXQsIG1vZGUsIDA2MDApKSA9PSAtMSkKKysgIGlmIChm aWxlID09IC0xKQorICAgICB7CisgICAgICAgRlJFRSAob3V0cHV0KTsKKyAgICAgICByZXR1cm4g KGVycm5vKTsKK0BAIC01MTMsNyArNTIwLDcgQEAgbW1hcF9lcnJvcjoKKyAjZWxzZQorICAgICBp ZiAod3JpdGUgKGZpbGUsIGJ1ZmZlciwgYnVmZmVyX3NpemUpIDwgMCkKKyAgICAgICBydiA9IGVy cm5vOworLSAgICBmcmVlIChidWZmZXIpOworKyAgICB4ZnJlZSAoYnVmZmVyKTsKKyAjZW5kaWYK KyAgIH0KKyAKKy0tLSBhL3JlYWRsaW5lL2hpc3RsaWIuaAorKysrIGIvcmVhZGxpbmUvaGlzdGxp Yi5oCitAQCAtMSwyMyArMSwyMyBAQAorIC8qIGhpc3RsaWIuaCAtLSBpbnRlcm5hbCBkZWZpbml0 aW9ucyBmb3IgdGhlIGhpc3RvcnkgbGlicmFyeS4gKi8KKy0vKiBDb3B5cmlnaHQgKEMpIDE5ODks IDE5OTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGNv bnRhaW5zIHRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9mCisr LyogQ29weXJpZ2h0IChDKSAxOTg5LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrCisrICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5IChIaXN0 b3J5KSwgYSBzZXQgb2YKKyAgICByb3V0aW5lcyBmb3IgbWFuYWdpbmcgdGhlIHRleHQgb2YgcHJl dmlvdXNseSB0eXBlZCBsaW5lcy4KKyAKKy0gICBUaGUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgSGlzdG9yeSBpcyBm cmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCist ICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwgYnV0CistICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCistICAgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5l cmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBk byBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIEhpc3RvcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrICAgYWxvbmcgd2l0aCBIaXN0b3J5LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisgI2lmICFkZWZpbmVkIChfSElTVExJQl9IXykKKyAj ZGVmaW5lIF9ISVNUTElCX0hfCistLS0gYS9yZWFkbGluZS9oaXN0b3J5LmMKKysrKyBiL3JlYWRs aW5lL2hpc3RvcnkuYworQEAgLTEsMjQgKzEsMjMgQEAKKyAvKiBoaXN0b3J5LmMgLS0gc3RhbmRh bG9uZSBoaXN0b3J5IGxpYnJhcnkgKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5ODktMjAwNSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDE5ODktMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUgY29udGFp bnMgdGhlIEdOVSBIaXN0b3J5IExpYnJhcnkgKHRoZSBMaWJyYXJ5KSwgYSBzZXQgb2YKKysgICBU aGlzIGZpbGUgY29udGFpbnMgdGhlIEdOVSBIaXN0b3J5IExpYnJhcnkgKEhpc3RvcnkpLCBhIHNl dCBvZgorICAgIHJvdXRpbmVzIGZvciBtYW5hZ2luZyB0aGUgdGV4dCBvZiBwcmV2aW91c2x5IHR5 cGVkIGxpbmVzLgorIAorLSAgIFRoZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBIaXN0b3J5IGlzIGZyZWUgc29mdHdh cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y IChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgor KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIExpYnJh cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0 CistICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUgR05VCistICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKyAgIEhpc3RvcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0g ICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4g IElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl IDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3 aXRoIEhpc3RvcnkuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisrKi8KKyAKKyAvKiBUaGUgZ29hbCBpcyB0byBtYWtlIHRoZSBpbXBsZW1lbnRhdGlvbiB0cmFu c3BhcmVudCwgc28gdGhhdCB5b3UKKyAgICBkb24ndCBoYXZlIHRvIGtub3cgd2hhdCBkYXRhIHR5 cGVzIGFyZSB1c2VkLCBqdXN0IHdoYXQgZnVuY3Rpb25zCitAQCAtMTU4LDcgKzE1Nyw3IEBAIGhp c3Rvcnlfc2V0X3BvcyAocG9zKQorICAgcmV0dXJuICgxKTsKKyB9CisgIAorLS8qIFJldHVybiB0 aGUgY3VycmVudCBoaXN0b3J5IGFycmF5LiAgVGhlIGNhbGxlciBoYXMgdG8gYmUgY2FyZWZ1bGws IHNpbmNlIHRoaXMKKysvKiBSZXR1cm4gdGhlIGN1cnJlbnQgaGlzdG9yeSBhcnJheS4gIFRoZSBj YWxsZXIgaGFzIHRvIGJlIGNhcmVmdWwsIHNpbmNlIHRoaXMKKyAgICBpcyB0aGUgYWN0dWFsIGFy cmF5IG9mIGRhdGEsIGFuZCBjb3VsZCBiZSBiYXNoZWQgb3IgbWFkZSBjb3JydXB0IGVhc2lseS4K KyAgICBUaGUgYXJyYXkgaXMgdGVybWluYXRlZCB3aXRoIGEgTlVMTCBwb2ludGVyLiAqLworIEhJ U1RfRU5UUlkgKioKK0BAIC0yMDksNiArMjA4LDIyIEBAIGhpc3RvcnlfZ2V0IChvZmZzZXQpCisg CQk6IHRoZV9oaXN0b3J5W2xvY2FsX2luZGV4XTsKKyB9CisgCisrSElTVF9FTlRSWSAqCisrYWxs b2NfaGlzdG9yeV9lbnRyeSAoc3RyaW5nLCB0cykKKysgICAgIGNoYXIgKnN0cmluZzsKKysgICAg IGNoYXIgKnRzOworK3sKKysgIEhJU1RfRU5UUlkgKnRlbXA7CisrCisrICB0ZW1wID0gKEhJU1Rf RU5UUlkgKil4bWFsbG9jIChzaXplb2YgKEhJU1RfRU5UUlkpKTsKKysKKysgIHRlbXAtPmxpbmUg PSBzdHJpbmcgPyBzYXZlc3RyaW5nIChzdHJpbmcpIDogc3RyaW5nOworKyAgdGVtcC0+ZGF0YSA9 IChjaGFyICopTlVMTDsKKysgIHRlbXAtPnRpbWVzdGFtcCA9IHRzOworKworKyAgcmV0dXJuIHRl bXA7CisrfQorKworIHRpbWVfdAorIGhpc3RvcnlfZ2V0X3RpbWUgKGhpc3QpCisgICAgICBISVNU X0VOVFJZICpoaXN0OworQEAgLTI5MCwxMSArMzA1LDcgQEAgYWRkX2hpc3RvcnkgKHN0cmluZykK KyAJfQorICAgICB9CisgCistICB0ZW1wID0gKEhJU1RfRU5UUlkgKil4bWFsbG9jIChzaXplb2Yg KEhJU1RfRU5UUlkpKTsKKy0gIHRlbXAtPmxpbmUgPSBzYXZlc3RyaW5nIChzdHJpbmcpOworLSAg dGVtcC0+ZGF0YSA9IChjaGFyICopTlVMTDsKKy0KKy0gIHRlbXAtPnRpbWVzdGFtcCA9IGhpc3Rf aW5pdHRpbWUgKCk7CisrICB0ZW1wID0gYWxsb2NfaGlzdG9yeV9lbnRyeSAoc3RyaW5nLCBoaXN0 X2luaXR0aW1lICgpKTsKKyAKKyAgIHRoZV9oaXN0b3J5W2hpc3RvcnlfbGVuZ3RoXSA9IChISVNU X0VOVFJZICopTlVMTDsKKyAgIHRoZV9oaXN0b3J5W2hpc3RvcnlfbGVuZ3RoIC0gMV0gPSB0ZW1w OworQEAgLTMwNyw2ICszMTgsOCBAQCBhZGRfaGlzdG9yeV90aW1lIChzdHJpbmcpCisgeworICAg SElTVF9FTlRSWSAqaHM7CisgCisrICBpZiAoc3RyaW5nID09IDApCisrICAgIHJldHVybjsKKyAg IGhzID0gdGhlX2hpc3RvcnlbaGlzdG9yeV9sZW5ndGggLSAxXTsKKyAgIEZSRUUgKGhzLT50aW1l c3RhbXApOworICAgaHMtPnRpbWVzdGFtcCA9IHNhdmVzdHJpbmcgKHN0cmluZyk7CitAQCAtMzI1 LDkgKzMzOCwyOSBAQCBmcmVlX2hpc3RvcnlfZW50cnkgKGhpc3QpCisgICBGUkVFIChoaXN0LT5s aW5lKTsKKyAgIEZSRUUgKGhpc3QtPnRpbWVzdGFtcCk7CisgICB4ID0gaGlzdC0+ZGF0YTsKKy0g IGZyZWUgKGhpc3QpOworKyAgeGZyZWUgKGhpc3QpOworICAgcmV0dXJuICh4KTsKKyB9CisrCisr SElTVF9FTlRSWSAqCisrY29weV9oaXN0b3J5X2VudHJ5IChoaXN0KQorKyAgICAgSElTVF9FTlRS WSAqaGlzdDsKKyt7CisrICBISVNUX0VOVFJZICpyZXQ7CisrICBjaGFyICp0czsKKysKKysgIGlm IChoaXN0ID09IDApCisrICAgIHJldHVybiBoaXN0OworKworKyAgcmV0ID0gYWxsb2NfaGlzdG9y eV9lbnRyeSAoaGlzdC0+bGluZSwgKGNoYXIgKilOVUxMKTsKKysKKysgIHRzID0gaGlzdC0+dGlt ZXN0YW1wID8gc2F2ZXN0cmluZyAoaGlzdC0+dGltZXN0YW1wKSA6IGhpc3QtPnRpbWVzdGFtcDsK KysgIHJldC0+dGltZXN0YW1wID0gdHM7CisrCisrICByZXQtPmRhdGEgPSBoaXN0LT5kYXRhOwor KworKyAgcmV0dXJuIHJldDsKKyt9CisgICAKKyAvKiBNYWtlIHRoZSBoaXN0b3J5IGVudHJ5IGF0 IFdISUNIIGhhdmUgTElORSBhbmQgREFUQS4gIFRoaXMgcmV0dXJucworICAgIHRoZSBvbGQgZW50 cnkgc28geW91IGNhbiBkaXNwb3NlIG9mIHRoZSBkYXRhLiAgSW4gdGhlIGNhc2Ugb2YgYW4KK0BA IC0zNTQsNiArMzg3LDUxIEBAIHJlcGxhY2VfaGlzdG9yeV9lbnRyeSAod2hpY2gsIGxpbmUsIGRh dGEpCisgICByZXR1cm4gKG9sZF92YWx1ZSk7CisgfQorIAorKy8qIFJlcGxhY2UgdGhlIERBVEEg aW4gdGhlIHNwZWNpZmllZCBoaXN0b3J5IGVudHJpZXMsIHJlcGxhY2luZyBPTEQgd2l0aAorKyAg IE5FVy4gIFdISUNIIHNheXMgd2hpY2ggb25lKHMpIHRvIHJlcGxhY2U6ICBXSElDSCA9PSAtMSBt ZWFucyB0byByZXBsYWNlCisrICAgYWxsIG9mIHRoZSBoaXN0b3J5IGVudHJpZXMgd2hlcmUgZW50 cnktPmRhdGEgPT0gT0xEOyBXSElDSCA9PSAtMiBtZWFucworKyAgIHRvIHJlcGxhY2UgdGhlIGBu ZXdlc3QnIGhpc3RvcnkgZW50cnkgd2hlcmUgZW50cnktPmRhdGEgPT0gT0xEOyBhbmQKKysgICBX SElDSCA+PSAwIG1lYW5zIHRvIHJlcGxhY2UgdGhhdCBwYXJ0aWN1bGFyIGhpc3RvcnkgZW50cnkn cyBkYXRhLCBhcworKyAgIGxvbmcgYXMgaXQgbWF0Y2hlcyBPTEQuICovCisrdm9pZAorK3JlcGxh Y2VfaGlzdG9yeV9kYXRhICh3aGljaCxvbGQsIG5ldykKKysgICAgIGludCB3aGljaDsKKysgICAg IGhpc3RkYXRhX3QgKm9sZCwgKm5ldzsKKyt7CisrICBISVNUX0VOVFJZICplbnRyeTsKKysgIHJl Z2lzdGVyIGludCBpLCBsYXN0OworKworKyAgaWYgKHdoaWNoIDwgLTIgfHwgd2hpY2ggPj0gaGlz dG9yeV9sZW5ndGggfHwgaGlzdG9yeV9sZW5ndGggPT0gMCB8fCB0aGVfaGlzdG9yeSA9PSAwKQor KyAgICByZXR1cm47CisrCisrICBpZiAod2hpY2ggPj0gMCkKKysgICAgeworKyAgICAgIGVudHJ5 ID0gdGhlX2hpc3Rvcnlbd2hpY2hdOworKyAgICAgIGlmIChlbnRyeSAmJiBlbnRyeS0+ZGF0YSA9 PSBvbGQpCisrCWVudHJ5LT5kYXRhID0gbmV3OworKyAgICAgIHJldHVybjsKKysgICAgfQorKwor KyAgbGFzdCA9IC0xOworKyAgZm9yIChpID0gMDsgaSA8IGhpc3RvcnlfbGVuZ3RoOyBpKyspCisr ICAgIHsKKysgICAgICBlbnRyeSA9IHRoZV9oaXN0b3J5W2ldOworKyAgICAgIGlmIChlbnRyeSA9 PSAwKQorKwljb250aW51ZTsKKysgICAgICBpZiAoZW50cnktPmRhdGEgPT0gb2xkKQorKwl7Cisr CSAgbGFzdCA9IGk7CisrCSAgaWYgKHdoaWNoID09IC0xKQorKwkgICAgZW50cnktPmRhdGEgPSBu ZXc7CisrCX0KKysgICAgfQorKyAgaWYgKHdoaWNoID09IC0yICYmIGxhc3QgPj0gMCkKKysgICAg eworKyAgICAgIGVudHJ5ID0gdGhlX2hpc3RvcnlbbGFzdF07CisrICAgICAgZW50cnktPmRhdGEg PSBuZXc7CS8qIFhYWCAtIHdlIGRvbid0IGNoZWNrIGVudHJ5LT5vbGQgKi8KKysgICAgfQorK30g ICAgICAKKysgIAorIC8qIFJlbW92ZSBoaXN0b3J5IGVsZW1lbnQgV0hJQ0ggZnJvbSB0aGUgaGlz dG9yeS4gIFRoZSByZW1vdmVkCisgICAgZWxlbWVudCBpcyByZXR1cm5lZCB0byB5b3Ugc28geW91 IGNhbiBmcmVlIHRoZSBsaW5lLCBkYXRhLAorICAgIGFuZCBjb250YWluaW5nIHN0cnVjdHVyZS4g Ki8KK0BAIC00MDYsNyArNDg0LDcgQEAgc3RpZmxlX2hpc3RvcnkgKG1heCkKKyAKKyAvKiBTdG9w IHN0aWZsaW5nIHRoZSBoaXN0b3J5LiAgVGhpcyByZXR1cm5zIHRoZSBwcmV2aW91cyBtYXhpbXVt CisgICAgbnVtYmVyIG9mIGhpc3RvcnkgZW50cmllcy4gIFRoZSB2YWx1ZSBpcyBwb3NpdGl2ZSBp ZiB0aGUgaGlzdG9yeQorLSAgIHdhcyBzdGlmbGVkLCAgbmVnYXRpdmUgaWYgaXQgd2Fzbid0LiAq LworKyAgIHdhcyBzdGlmbGVkLCBuZWdhdGl2ZSBpZiBpdCB3YXNuJ3QuICovCisgaW50CisgdW5z dGlmbGVfaGlzdG9yeSAoKQorIHsKKy0tLSBhL3JlYWRsaW5lL2hpc3RvcnkuaAorKysrIGIvcmVh ZGxpbmUvaGlzdG9yeS5oCitAQCAtMSwyMyArMSwyMyBAQAorIC8qIGhpc3RvcnkuaCAtLSB0aGUg bmFtZXMgb2YgZnVuY3Rpb25zIHRoYXQgeW91IGNhbiBjYWxsIGluIGhpc3RvcnkuICovCistLyog Q29weXJpZ2h0IChDKSAxOTg5LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisg CistICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5ICh0aGUgTGli cmFyeSksIGEgc2V0IG9mCisrLyogQ29weXJpZ2h0IChDKSAxOTg5LTIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHTlUgSGlz dG9yeSBMaWJyYXJ5IChIaXN0b3J5KSwgYSBzZXQgb2YKKyAgICByb3V0aW5lcyBmb3IgbWFuYWdp bmcgdGhlIHRleHQgb2YgcHJldmlvdXNseSB0eXBlZCBsaW5lcy4KKyAKKy0gICBUaGUgTGlicmFy eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrICAgSGlzdG9yeSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxh dGVyIHZlcnNpb24uCistCistICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CistICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCistICAg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJl LCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3Ig TElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxh Y2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIEhpc3RvcnkgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBIaXN0b3J5LiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisgI2lmbmRlZiBfSElT VE9SWV9IXworICNkZWZpbmUgX0hJU1RPUllfSF8KKy0tLSBhL3JlYWRsaW5lL2hpc3RzZWFyY2gu YworKysrIGIvcmVhZGxpbmUvaGlzdHNlYXJjaC5jCitAQCAtMSwyNCArMSwyMyBAQAorIC8qIGhp c3RzZWFyY2guYyAtLSBzZWFyY2hpbmcgdGhlIGhpc3RvcnkgbGlzdC4gKi8KKyAKKy0vKiBDb3B5 cmlnaHQgKEMpIDE5ODksIDE5OTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyog Q29weXJpZ2h0IChDKSAxOTg5LCAxOTkyLTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisgCistICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHTlUgSGlzdG9yeSBMaWJyYXJ5ICh0 aGUgTGlicmFyeSksIGEgc2V0IG9mCisrICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBHTlUgSGlz dG9yeSBMaWJyYXJ5IChIaXN0b3J5KSwgYSBzZXQgb2YKKyAgICByb3V0aW5lcyBmb3IgbWFuYWdp bmcgdGhlIHRleHQgb2YgcHJldmlvdXNseSB0eXBlZCBsaW5lcy4KKyAKKy0gICBUaGUgTGlicmFy eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrICAgSGlzdG9yeSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxh dGVyIHZlcnNpb24uCistCistICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CistICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCistICAg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJl LCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3Ig TElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxh Y2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIEhpc3RvcnkgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBIaXN0b3J5LiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisgI2RlZmluZSBSRUFE TElORV9MSUJSQVJZCisgCistLS0gYS9yZWFkbGluZS9pbnB1dC5jCisrKysgYi9yZWFkbGluZS9p bnB1dC5jCitAQCAtMSwyNCArMSwyNCBAQAorIC8qIGlucHV0LmMgLS0gY2hhcmFjdGVyIGlucHV0 IGZ1bmN0aW9ucyBmb3IgcmVhZGxpbmUuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTk0LTIw MDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTk0 LTIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCistICAgcmVh ZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRp dGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkg KFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRo IGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisgCistICAgVGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJl ZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJh bGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8g bm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGlu ZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworKwor ICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZpbmVkIChfX1RBTkRFTSkKK0BA IC00NSwxNCArNDUsNyBAQAorICMgIGluY2x1ZGUgImFuc2lfc3RkbGliLmgiCisgI2VuZGlmIC8q IEhBVkVfU1RETElCX0ggKi8KKyAKKy0jaWYgZGVmaW5lZCAoSEFWRV9TRUxFQ1QpCistIyAgaWYg IWRlZmluZWQgKEhBVkVfU1lTX1NFTEVDVF9IKSB8fCAhZGVmaW5lZCAoTV9VTklYKQorLSMgICAg aW5jbHVkZSA8c3lzL3RpbWUuaD4KKy0jICBlbmRpZgorLSNlbmRpZiAvKiBIQVZFX1NFTEVDVCAq LworLSNpZiBkZWZpbmVkIChIQVZFX1NZU19TRUxFQ1RfSCkKKy0jICBpbmNsdWRlIDxzeXMvc2Vs ZWN0Lmg+CistI2VuZGlmCisrI2luY2x1ZGUgInBvc2l4c2VsZWN0LmgiCisgCisgI2lmIGRlZmlu ZWQgKEZJT05SRUFEX0lOX1NZU19JT0NUTCkKKyAjICBpbmNsdWRlIDxzeXMvaW9jdGwuaD4KK0BA IC0xMzMsOCArMTI2LDExIEBAIHJsX2dldF9jaGFyIChrZXkpCisgICAgIHJldHVybiAoMCk7Cisg CisgICAqa2V5ID0gaWJ1ZmZlcltwb3BfaW5kZXgrK107CistCisrI2lmIDAKKyAgIGlmIChwb3Bf aW5kZXggPj0gaWJ1ZmZlcl9sZW4pCisrI2Vsc2UKKysgIGlmIChwb3BfaW5kZXggPiBpYnVmZmVy X2xlbikKKysjZW5kaWYKKyAgICAgcG9wX2luZGV4ID0gMDsKKyAKKyAgIHJldHVybiAoMSk7CitA QCAtMTUxLDcgKzE0Nyw3IEBAIF9ybF91bmdldF9jaGFyIChrZXkpCisgICAgIHsKKyAgICAgICBw b3BfaW5kZXgtLTsKKyAgICAgICBpZiAocG9wX2luZGV4IDwgMCkKKy0JcG9wX2luZGV4ID0gaWJ1 ZmZlcl9sZW4gLSAxOworKwlwb3BfaW5kZXggPSBpYnVmZmVyX2xlbjsKKyAgICAgICBpYnVmZmVy W3BvcF9pbmRleF0gPSBrZXk7CisgICAgICAgcmV0dXJuICgxKTsKKyAgICAgfQorQEAgLTE3OSw2 ICsxNzUsNyBAQCBybF9nYXRoZXJfdHlpICgpCisgICBzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0Owor ICNlbmRpZgorIAorKyAgY2hhcnNfYXZhaWwgPSAwOworICAgdHR5ID0gZmlsZW5vIChybF9pbnN0 cmVhbSk7CisgCisgI2lmIGRlZmluZWQgKEhBVkVfU0VMRUNUKQorQEAgLTE4Niw4ICsxODMsNyBA QCBybF9nYXRoZXJfdHlpICgpCisgICBGRF9aRVJPICgmZXhjZXB0ZmRzKTsKKyAgIEZEX1NFVCAo dHR5LCAmcmVhZGZkcyk7CisgICBGRF9TRVQgKHR0eSwgJmV4Y2VwdGZkcyk7CistICB0aW1lb3V0 LnR2X3NlYyA9IDA7CistICB0aW1lb3V0LnR2X3VzZWMgPSBfa2V5Ym9hcmRfaW5wdXRfdGltZW91 dDsKKysgIFVTRUNfVE9fVElNRVZBTCAoX2tleWJvYXJkX2lucHV0X3RpbWVvdXQsIHRpbWVvdXQp OworICAgcmVzdWx0ID0gc2VsZWN0ICh0dHkgKyAxLCAmcmVhZGZkcywgKGZkX3NldCAqKU5VTEws ICZleGNlcHRmZHMsICZ0aW1lb3V0KTsKKyAgIGlmIChyZXN1bHQgPD0gMCkKKyAgICAgcmV0dXJu IDA7CS8qIE5vdGhpbmcgdG8gcmVhZC4gKi8KK0BAIC0yMjEsMTMgKzIxNywxMCBAQCBybF9nYXRo ZXJfdHlpICgpCisgI2VuZGlmIC8qIE9fTkRFTEFZICovCisgCisgI2lmIGRlZmluZWQgKF9fTUlO R1czMl9fKQorLSAgLyogV2UgdXNlIGdldGNoIHRvIHJlYWQgY29uc29sZSBpbnB1dCwgc28gdXNl IHRoZSBzYW1lCistICAgICBtZWNoYW5pc20gdG8gY2hlY2sgZm9yIG1vcmUuICBPdGhlcndpc2Us IHdlIGRvbid0IGtub3cuICAqLworLSAgaWYgKGlzYXR0eSAoZmlsZW5vIChybF9pbnN0cmVhbSkp KQorLSAgICBjaGFyc19hdmFpbCA9IF9rYmhpdCAoKTsKKy0gIGVsc2UKKy0gICAgY2hhcnNfYXZh aWwgPSAwOworLSAgcmVzdWx0ID0gMDsKKysgIC8qIFVzZSBnZXRjaC9fa2JoaXQgdG8gY2hlY2sg Zm9yIGF2YWlsYWJsZSBjb25zb2xlIGlucHV0LCBpbiB0aGUgc2FtZSB3YXkKKysgICAgIHRoYXQg d2UgcmVhZCBpdCBub3JtYWxseS4gKi8KKysgICBjaGFyc19hdmFpbCA9IGlzYXR0eSAodHR5KSA/ IF9rYmhpdCAoKSA6IDA7CisrICAgcmVzdWx0ID0gMDsKKyAjZW5kaWYKKyAKKyAgIC8qIElmIHRo ZXJlJ3Mgbm90aGluZyBhdmFpbGFibGUsIGRvbid0IHdhc3RlIHRpbWUgdHJ5aW5nIHRvIHJlYWQK K0BAIC0yNTEsOCArMjQ0LDEwIEBAIHJsX2dhdGhlcl90eWkgKCkKKyAgICAgeworICAgICAgIHdo aWxlIChjaGFyc19hdmFpbC0tKQorIAl7CisrCSAgUkxfQ0hFQ0tfU0lHTkFMUyAoKTsKKyAJICBr ID0gKCpybF9nZXRjX2Z1bmN0aW9uKSAocmxfaW5zdHJlYW0pOworLQkgIHJsX3N0dWZmX2NoYXIg KGspOworKwkgIGlmIChybF9zdHVmZl9jaGFyIChrKSA9PSAwKQorKwkgICAgYnJlYWs7CQkJLyog c29tZSBwcm9ibGVtOyBubyBtb3JlIHJvb20gKi8KKyAJICBpZiAoayA9PSBORVdMSU5FIHx8IGsg PT0gUkVUVVJOKQorIAkgICAgYnJlYWs7CisgCX0KK0BAIC0yNzMsNyArMjY4LDcgQEAgcmxfc2V0 X2tleWJvYXJkX2lucHV0X3RpbWVvdXQgKHUpCisgICBpbnQgbzsKKyAKKyAgIG8gPSBfa2V5Ym9h cmRfaW5wdXRfdGltZW91dDsKKy0gIGlmICh1ID4gMCkKKysgIGlmICh1ID49IDApCisgICAgIF9r ZXlib2FyZF9pbnB1dF90aW1lb3V0ID0gdTsKKyAgIHJldHVybiAobyk7CisgfQorQEAgLTMxNiwx MCArMzExLDggQEAgX3JsX2lucHV0X2F2YWlsYWJsZSAoKQorICNlbmRpZgorIAorICNpZiBkZWZp bmVkIChfX01JTkdXMzJfXykKKy0gIC8qIFdlIHVzZSBnZXRjaCB0byByZWFkIGNvbnNvbGUgaW5w dXQsIHNvIHVzZSB0aGUgc2FtZQorLSAgICAgbWVjaGFuaXNtIHRvIGNoZWNrIGZvciBtb3JlLiAg T3RoZXJ3aXNlLCB3ZSBkb24ndCBrbm93LiAgKi8KKy0gIGlmIChpc2F0dHkgKGZpbGVubyAocmxf aW5zdHJlYW0pKSkKKy0gICAgcmV0dXJuIF9rYmhpdCAoKTsKKysgIGlmIChpc2F0dHkgKHR0eSkp CisrICAgIHJldHVybiAoX2tiaGl0ICgpKTsKKyAjZW5kaWYKKyAKKyAgIHJldHVybiAwOworQEAg LTM1OCw3ICszNTEsNyBAQCBfcmxfaW5zZXJ0X3R5cGVpbiAoYykKKyAKKyAgIHN0cmluZ1tpXSA9 ICdcMCc7CisgICBybF9pbnNlcnRfdGV4dCAoc3RyaW5nKTsKKy0gIGZyZWUgKHN0cmluZyk7Cisr ICB4ZnJlZSAoc3RyaW5nKTsKKyB9CisgCisgLyogQWRkIEtFWSB0byB0aGUgYnVmZmVyIG9mIGNo YXJhY3RlcnMgdG8gYmUgcmVhZC4gIFJldHVybnMgMSBpZiB0aGUKK0BAIC0zNzcsNyArMzcwLDEx IEBAIHJsX3N0dWZmX2NoYXIgKGtleSkKKyAgICAgICBSTF9TRVRTVEFURSAoUkxfU1RBVEVfSU5Q VVRQRU5ESU5HKTsKKyAgICAgfQorICAgaWJ1ZmZlcltwdXNoX2luZGV4KytdID0ga2V5OworKyNp ZiAwCisgICBpZiAocHVzaF9pbmRleCA+PSBpYnVmZmVyX2xlbikKKysjZWxzZQorKyAgaWYgKHB1 c2hfaW5kZXggPiBpYnVmZmVyX2xlbikKKysjZW5kaWYKKyAgICAgcHVzaF9pbmRleCA9IDA7Cisg CisgICByZXR1cm4gMTsKK0BAIC00MzAsMjIgKzQyNywyNiBAQCBybF9yZWFkX2tleSAoKQorICAg ICAgIC8qIElmIHRoZSB1c2VyIGhhcyBhbiBldmVudCBmdW5jdGlvbiwgdGhlbiBjYWxsIGl0IHBl cmlvZGljYWxseS4gKi8KKyAgICAgICBpZiAocmxfZXZlbnRfaG9vaykKKyAJeworLQkgIHdoaWxl IChybF9ldmVudF9ob29rICYmIHJsX2dldF9jaGFyICgmYykgPT0gMCkKKysJICB3aGlsZSAocmxf ZXZlbnRfaG9vaykKKyAJICAgIHsKKy0JICAgICAgKCpybF9ldmVudF9ob29rKSAoKTsKKy0JICAg ICAgaWYgKHJsX2RvbmUpCQkvKiBYWFggLSBleHBlcmltZW50YWwgKi8KKy0JCXJldHVybiAoJ1xu Jyk7CisgCSAgICAgIGlmIChybF9nYXRoZXJfdHlpICgpIDwgMCkJLyogWFhYIC0gRUlPICovCisg CQl7CisgCQkgIHJsX2RvbmUgPSAxOworIAkJICByZXR1cm4gKCdcbicpOworIAkJfQorKwkgICAg ICBSTF9DSEVDS19TSUdOQUxTICgpOworKwkgICAgICBpZiAocmxfZ2V0X2NoYXIgKCZjKSAhPSAw KQorKwkJYnJlYWs7CisrCSAgICAgIGlmIChybF9kb25lKQkJLyogWFhYIC0gZXhwZXJpbWVudGFs ICovCisrCQlyZXR1cm4gKCdcbicpOworKwkgICAgICAoKnJsX2V2ZW50X2hvb2spICgpOworIAkg ICAgfQorIAl9CisgICAgICAgZWxzZQorIAl7CisgCSAgaWYgKHJsX2dldF9jaGFyICgmYykgPT0g MCkKKyAJICAgIGMgPSAoKnJsX2dldGNfZnVuY3Rpb24pIChybF9pbnN0cmVhbSk7CisrCSAgUkxf Q0hFQ0tfU0lHTkFMUyAoKTsKKyAJfQorICAgICB9CisgCitAQCAtNDYxLDYgKzQ2Miw4IEBAIHJs X2dldGMgKHN0cmVhbSkKKyAKKyAgIHdoaWxlICgxKQorICAgICB7CisrICAgICAgUkxfQ0hFQ0tf U0lHTkFMUyAoKTsKKysKKyAjaWYgZGVmaW5lZCAoX19NSU5HVzMyX18pCisgICAgICAgaWYgKGlz YXR0eSAoZmlsZW5vIChzdHJlYW0pKSkKKyAJcmV0dXJuIChnZXRjaCAoKSk7CitAQCAtNTA2LDcg KzUwOSw3IEBAIHJsX2dldGMgKHN0cmVhbSkKKyAJIHRoaXMgaXMgc2ltcGx5IGFuIGludGVycnVw dGVkIHN5c3RlbSBjYWxsIHRvIHJlYWQgKCkuCisgCSBPdGhlcndpc2UsIHNvbWUgZXJyb3Igb2N1 cnJlZCwgYWxzbyBzaWduaWZ5aW5nIEVPRi4gKi8KKyAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIp CistCXJldHVybiAoRU9GKTsKKysJcmV0dXJuIChSTF9JU1NUQVRFIChSTF9TVEFURV9SRUFEQ01E KSA/IFJFQURFUlIgOiBFT0YpOworICAgICB9CisgfQorIAorQEAgLTUxNywyMCArNTIwLDI2IEBA IF9ybF9yZWFkX21iY2hhciAobWJjaGFyLCBzaXplKQorICAgICAgY2hhciAqbWJjaGFyOworICAg ICAgaW50IHNpemU7CisgeworLSAgaW50IG1iX2xlbiA9IDA7CisrICBpbnQgbWJfbGVuLCBjOwor ICAgc2l6ZV90IG1iY2hhcl9ieXRlc19sZW5ndGg7CisgICB3Y2hhcl90IHdjOworICAgbWJzdGF0 ZV90IHBzLCBwc19iYWNrOworIAorICAgbWVtc2V0KCZwcywgMCwgc2l6ZW9mIChtYnN0YXRlX3Qp KTsKKyAgIG1lbXNldCgmcHNfYmFjaywgMCwgc2l6ZW9mIChtYnN0YXRlX3QpKTsKKy0gIAorKwor KyAgbWJfbGVuID0gMDsgIAorICAgd2hpbGUgKG1iX2xlbiA8IHNpemUpCisgICAgIHsKKyAgICAg ICBSTF9TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQpOworLSAgICAgIG1iY2hhclttYl9sZW4r K10gPSBybF9yZWFkX2tleSAoKTsKKysgICAgICBjID0gcmxfcmVhZF9rZXkgKCk7CisgICAgICAg UkxfVU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQpOworIAorKyAgICAgIGlmIChjIDwgMCkK KysJYnJlYWs7CisrCisrICAgICAgbWJjaGFyW21iX2xlbisrXSA9IGM7CisrCisgICAgICAgbWJj aGFyX2J5dGVzX2xlbmd0aCA9IG1icnRvd2MgKCZ3YywgbWJjaGFyLCBtYl9sZW4sICZwcyk7Cisg ICAgICAgaWYgKG1iY2hhcl9ieXRlc19sZW5ndGggPT0gKHNpemVfdCkoLTEpKQorIAlicmVhazsJ CS8qIGludmFsaWQgYnl0ZSBzZXF1ZW5jZSBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlICovCitAQCAt NTU0LDIxICs1NjMsMjEgQEAgX3JsX3JlYWRfbWJjaGFyIChtYmNoYXIsIHNpemUpCisgfQorIAor IC8qIFJlYWQgYSBtdWx0aWJ5dGUtY2hhcmFjdGVyIHN0cmluZyB3aG9zZSBmaXJzdCBjaGFyYWN0 ZXIgaXMgRklSU1QgaW50bworLSAgIHRoZSBidWZmZXIgTUIgb2YgbGVuZ3RoIE1CTEVOLiAgUmV0 dXJucyB0aGUgbGFzdCBjaGFyYWN0ZXIgcmVhZCwgd2hpY2gKKysgICB0aGUgYnVmZmVyIE1CIG9m IGxlbmd0aCBNTEVOLiAgUmV0dXJucyB0aGUgbGFzdCBjaGFyYWN0ZXIgcmVhZCwgd2hpY2gKKyAg ICBtYXkgYmUgRklSU1QuICBVc2VkIGJ5IHRoZSBzZWFyY2ggZnVuY3Rpb25zLCBhbW9uZyBvdGhl cnMuICBWZXJ5IHNpbWlsYXIKKyAgICB0byBfcmxfcmVhZF9tYmNoYXIuICovCisgaW50CistX3Js X3JlYWRfbWJzdHJpbmcgKGZpcnN0LCBtYiwgbWJsZW4pCisrX3JsX3JlYWRfbWJzdHJpbmcgKGZp cnN0LCBtYiwgbWxlbikKKyAgICAgIGludCBmaXJzdDsKKyAgICAgIGNoYXIgKm1iOworLSAgICAg aW50IG1ibGVuOworKyAgICAgaW50IG1sZW47CisgeworICAgaW50IGksIGM7CisgICBtYnN0YXRl X3QgcHM7CisgCisgICBjID0gZmlyc3Q7CistICBtZW1zZXQgKG1iLCAwLCBtYmxlbik7CistICBm b3IgKGkgPSAwOyBpIDwgbWJsZW47IGkrKykKKysgIG1lbXNldCAobWIsIDAsIG1sZW4pOworKyAg Zm9yIChpID0gMDsgYyA+PSAwICYmIGkgPCBtbGVuOyBpKyspCisgICAgIHsKKyAgICAgICBtYltp XSA9IChjaGFyKWM7CisgICAgICAgbWVtc2V0ICgmcHMsIDAsIHNpemVvZiAobWJzdGF0ZV90KSk7 CistLS0gYS9yZWFkbGluZS9pc2VhcmNoLmMKKysrKyBiL3JlYWRsaW5lL2lzZWFyY2guYworQEAg LTEsMjkgKzEsMzAgQEAKKysvKiBpc2VhcmNoLmMgLSBpbmNyZW1lbnRhbCBzZWFyY2hpbmcgKi8K KysKKyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqICovCisgLyoJCQkJCQkJCSAgICAqLworIC8qCQkJSS1TZWFyY2ggYW5k IFNlYXJjaGluZwkJCSAgICAqLworIC8qCQkJCQkJCQkgICAgKi8KKyAvKiAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisg CistLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisgCistICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBSZWFkbGluZSBMaWJyYXJ5ICh0 aGUgTGlicmFyeSksIGEgc2V0IG9mCistICAgcm91dGluZXMgZm9yIHByb3ZpZGluZyBFbWFjcyBz dHlsZSBsaW5lIGlucHV0IHRvIHByb2dyYW1zIHRoYXQgYXNrCistICAgZm9yIGl0LgorKyAgIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBh IGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUg aW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKKyAKKy0gICBUaGUgTGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAg UmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2 ZXJzaW9uLgorLQorLSAgIFRoZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorLSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorLSAgIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBUaGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5k CistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VO U0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBT dWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBSZWFkbGluZSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisr ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisrCisgI2RlZmluZSBSRUFETElO RV9MSUJSQVJZCisgCisgI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCitAQCAtNjgsMTQgKzY5 LDE0IEBAIHN0YXRpYyB2b2lkIF9ybF9pc2VhcmNoX2ZpbmkgUEFSQU1TKChfcmxfc2VhcmNoX2N4 dCAqKSk7Cisgc3RhdGljIGludCBfcmxfaXNlYXJjaF9jbGVhbnVwIFBBUkFNUygoX3JsX3NlYXJj aF9jeHQgKiwgaW50KSk7CisgCisgLyogTGFzdCBsaW5lIGZvdW5kIGJ5IHRoZSBjdXJyZW50IGlu Y3JlbWVudGFsIHNlYXJjaCwgc28gd2UgZG9uJ3QgYGZpbmQnCistICAgaWRlbnRpY2FsIGxpbmVz IG1hbnkgdGltZXMgaW4gYSByb3cuICovCistc3RhdGljIGNoYXIgKnByZXZfbGluZV9mb3VuZDsK KysgICBpZGVudGljYWwgbGluZXMgbWFueSB0aW1lcyBpbiBhIHJvdy4gIE5vdyBwYXJ0IG9mIGlz ZWFyY2ggY29udGV4dC4gKi8KKysvKiBzdGF0aWMgY2hhciAqcHJldl9saW5lX2ZvdW5kOyAqLwor IAorIC8qIExhc3Qgc2VhcmNoIHN0cmluZyBhbmQgaXRzIGxlbmd0aC4gKi8KKyBzdGF0aWMgY2hh ciAqbGFzdF9pc2VhcmNoX3N0cmluZzsKKyBzdGF0aWMgaW50IGxhc3RfaXNlYXJjaF9zdHJpbmdf bGVuOworIAorLXN0YXRpYyBjaGFyICpkZWZhdWx0X2lzZWFyY2hfdGVybWluYXRvcnMgPSAiXDAz M1wwMTIiOworK3N0YXRpYyBjaGFyICogY29uc3QgZGVmYXVsdF9pc2VhcmNoX3Rlcm1pbmF0b3Jz ID0gIlwwMzNcMDEyIjsKKyAKKyBfcmxfc2VhcmNoX2N4dCAqCisgX3JsX3NjeHRfYWxsb2MgKHR5 cGUsIGZsYWdzKQorQEAgLTEwMyw2ICsxMDQsOSBAQCBfcmxfc2N4dF9hbGxvYyAodHlwZSwgZmxh Z3MpCisgCisgICBjeHQtPnNhdmVfdW5kb19saXN0ID0gMDsKKyAKKysgIGN4dC0+a2V5bWFwID0g X3JsX2tleW1hcDsKKysgIGN4dC0+b2tleW1hcCA9IF9ybF9rZXltYXA7CisrCisgICBjeHQtPmhp c3RvcnlfcG9zID0gMDsKKyAgIGN4dC0+ZGlyZWN0aW9uID0gMDsKKyAKK0BAIC0xMjUsNyArMTI5 LDcgQEAgX3JsX3NjeHRfZGlzcG9zZSAoY3h0LCBmbGFncykKKyAgIEZSRUUgKGN4dC0+YWxsb2Nh dGVkX2xpbmUpOworICAgRlJFRSAoY3h0LT5saW5lcyk7CisgCistICBmcmVlIChjeHQpOworKyAg eGZyZWUgKGN4dCk7CisgfQorIAorIC8qIFNlYXJjaCBiYWNrd2FyZHMgdGhyb3VnaCB0aGUgaGlz dG9yeSBsb29raW5nIGZvciBhIHN0cmluZyB3aGljaCBpcyB0eXBlZAorQEAgLTE5Miw3ICsxOTYs NyBAQCBybF9kaXNwbGF5X3NlYXJjaCAoc2VhcmNoX3N0cmluZywgcmV2ZXJzZV9wLCB3aGVyZSkK KyAgIHN0cmNweSAobWVzc2FnZSArIG1zZ2xlbiwgIic6ICIpOworIAorICAgcmxfbWVzc2FnZSAo IiVzIiwgbWVzc2FnZSk7CistICBmcmVlIChtZXNzYWdlKTsKKysgIHhmcmVlIChtZXNzYWdlKTsK KyAgICgqcmxfcmVkaXNwbGF5X2Z1bmN0aW9uKSAoKTsKKyB9CisgCitAQCAtMzI3LDExICszMzEs MzAgQEAgX3JsX2lzZWFyY2hfZGlzcGF0Y2ggKGN4dCwgYykKKyAgIHJsX2NvbW1hbmRfZnVuY190 ICpmOworIAorICAgZiA9IChybF9jb21tYW5kX2Z1bmNfdCAqKU5VTEw7CistIAorLSAvKiBUcmFu c2xhdGUgdGhlIGtleXMgd2UgZG8gc29tZXRoaW5nIHdpdGggdG8gb3Bjb2Rlcy4gKi8KKy0gIGlm IChjID49IDAgJiYgX3JsX2tleW1hcFtjXS50eXBlID09IElTRlVOQykKKysKKysgIGlmIChjIDwg MCkKKysgICAgeworKyAgICAgIGN4dC0+c2ZsYWdzIHw9IFNGX0ZBSUxFRDsKKysgICAgICBjeHQt Pmhpc3RvcnlfcG9zID0gY3h0LT5sYXN0X2ZvdW5kX2xpbmU7CisrICAgICAgcmV0dXJuIC0xOwor KyAgICB9CisrCisrICAvKiBJZiB3ZSBhcmUgbW92aW5nIGludG8gYSBuZXcga2V5bWFwLCBtb2Rp ZnkgY3h0LT5rZXltYXAgYW5kIGdvIG9uLgorKyAgICAgVGhpcyBjYW4gYmUgYSBwcm9ibGVtIGlm IGMgPT0gRVNDIGFuZCB3ZSB3YW50IHRvIHRlcm1pbmF0ZSB0aGUKKysgICAgIGluY3JlbWVudGFs IHNlYXJjaCwgc28gd2UgY2hlY2sgKi8KKysgIGlmIChjID49IDAgJiYgY3h0LT5rZXltYXBbY10u dHlwZSA9PSBJU0tNQVAgJiYgc3RyY2hyIChjeHQtPnNlYXJjaF90ZXJtaW5hdG9ycywgY3h0LT5s YXN0YykgPT0gMCkKKyAgICAgeworLSAgICAgIGYgPSBfcmxfa2V5bWFwW2NdLmZ1bmN0aW9uOwor KyAgICAgIGN4dC0+a2V5bWFwID0gRlVOQ1RJT05fVE9fS0VZTUFQIChjeHQtPmtleW1hcCwgYyk7 CisrICAgICAgY3h0LT5zZmxhZ3MgfD0gU0ZfQ0hHS01BUDsKKysgICAgICAvKiBYWFggLSB3ZSBz aG91bGQgcHJvYmFibHkgc2F2ZSB0aGlzIHNlcXVlbmNlLCBzbyB3ZSBjYW4gZG8KKysJIHNvbWV0 aGluZyB1c2VmdWwgaWYgdGhpcyBkb2Vzbid0IGVuZCB1cCBtYXBwaW5nIHRvIGEgY29tbWFuZC4g Ki8KKysgICAgICByZXR1cm4gMTsKKysgICAgfQorKworKyAgLyogVHJhbnNsYXRlIHRoZSBrZXlz IHdlIGRvIHNvbWV0aGluZyB3aXRoIHRvIG9wY29kZXMuICovCisrICBpZiAoYyA+PSAwICYmIGN4 dC0+a2V5bWFwW2NdLnR5cGUgPT0gSVNGVU5DKQorKyAgICB7CisrICAgICAgZiA9IGN4dC0+a2V5 bWFwW2NdLmZ1bmN0aW9uOworIAorICAgICAgIGlmIChmID09IHJsX3JldmVyc2Vfc2VhcmNoX2hp c3RvcnkpCisgCWN4dC0+bGFzdGMgPSAoY3h0LT5zZmxhZ3MgJiBTRl9SRVZFUlNFKSA/IC0xIDog LTI7CitAQCAtMzM5LDE5ICszNjIsMjcgQEAgX3JsX2lzZWFyY2hfZGlzcGF0Y2ggKGN4dCwgYykK KyAJY3h0LT5sYXN0YyA9IChjeHQtPnNmbGFncyAmIFNGX1JFVkVSU0UpID8gLTIgOiAtMTsKKyAg ICAgICBlbHNlIGlmIChmID09IHJsX3J1Ym91dCkKKyAJY3h0LT5sYXN0YyA9IC0zOworLSAgICAg IGVsc2UgaWYgKGMgPT0gQ1RSTCAoJ0cnKSkKKysgICAgICBlbHNlIGlmIChjID09IENUUkwgKCdH JykgfHwgZiA9PSBybF9hYm9ydCkKKyAJY3h0LT5sYXN0YyA9IC00OworLSAgICAgIGVsc2UgaWYg KGMgPT0gQ1RSTCAoJ1cnKSkJLyogWFhYICovCisrICAgICAgZWxzZSBpZiAoYyA9PSBDVFJMICgn VycpIHx8IGYgPT0gcmxfdW5peF93b3JkX3J1Ym91dCkJLyogWFhYICovCisgCWN4dC0+bGFzdGMg PSAtNTsKKy0gICAgICBlbHNlIGlmIChjID09IENUUkwgKCdZJykpCS8qIFhYWCAqLworKyAgICAg IGVsc2UgaWYgKGMgPT0gQ1RSTCAoJ1knKSB8fCBmID09IHJsX3lhbmspCS8qIFhYWCAqLworIAlj eHQtPmxhc3RjID0gLTY7CisgICAgIH0KKyAKKysgIC8qIElmIHdlIGNoYW5nZWQgdGhlIGtleW1h cCBlYXJsaWVyIHdoaWxlIHRyYW5zbGF0aW5nIGEga2V5IHNlcXVlbmNlIGludG8KKysgICAgIGEg Y29tbWFuZCwgcmVzdG9yZSBpdCBub3cgdGhhdCB3ZSd2ZSBzdWNjZWVkZWQuICovCisrICBpZiAo Y3h0LT5zZmxhZ3MgJiBTRl9DSEdLTUFQKQorKyAgICB7CisrICAgICAgY3h0LT5rZXltYXAgPSBj eHQtPm9rZXltYXA7CisrICAgICAgY3h0LT5zZmxhZ3MgJj0gflNGX0NIR0tNQVA7CisrICAgIH0K KysKKyAgIC8qIFRoZSBjaGFyYWN0ZXJzIGluIGlzZWFyY2hfdGVybWluYXRvcnMgKHNldCBmcm9t IHRoZSB1c2VyLXNldHRhYmxlCisgICAgICB2YXJpYWJsZSBpc2VhcmNoLXRlcm1pbmF0b3JzKSBh cmUgdXNlZCB0byB0ZXJtaW5hdGUgdGhlIHNlYXJjaCBidXQKKyAgICAgIG5vdCBzdWJzZXF1ZW50 bHkgZXhlY3V0ZSB0aGUgY2hhcmFjdGVyIGFzIGEgY29tbWFuZC4gIFRoZSBkZWZhdWx0CisgICAg ICB2YWx1ZSBpcyAiXDAzM1wwMTIiIChFU0MgYW5kIEMtSikuICovCistICBpZiAoc3RyY2hyIChj eHQtPnNlYXJjaF90ZXJtaW5hdG9ycywgY3h0LT5sYXN0YykpCisrICBpZiAoY3h0LT5sYXN0YyA+ IDAgJiYgc3RyY2hyIChjeHQtPnNlYXJjaF90ZXJtaW5hdG9ycywgY3h0LT5sYXN0YykpCisgICAg IHsKKyAgICAgICAvKiBFU0Mgc3RpbGwgdGVybWluYXRlcyB0aGUgc2VhcmNoLCBidXQgaWYgdGhl cmUgaXMgcGVuZGluZworIAkgaW5wdXQgb3IgaWYgaW5wdXQgYXJyaXZlcyB3aXRoaW4gMC4xIHNl Y29uZHMgKG9uIHN5c3RlbXMKK0BAIC0zNzUsNyArNDA2LDcgQEAgX3JsX2lzZWFyY2hfZGlzcGF0 Y2ggKGN4dCwgYykKKyAgICAgeworICAgICAgIGlmIChjeHQtPmxhc3RjID49IDAgJiYgKGN4dC0+ bWJbMF0gJiYgY3h0LT5tYlsxXSA9PSAnXDAnKSAmJiBFTkRTUkNIX0NIQVIgKGN4dC0+bGFzdGMp KQorIAl7CistCSAgLyogVGhpcyBzZXRzIHJsX3BlbmRpbmdfaW5wdXQgdG8gYzsgaXQgd2lsbCBi ZSBwaWNrZWQgdXAgdGhlIG5leHQKKysJICAvKiBUaGlzIHNldHMgcmxfcGVuZGluZ19pbnB1dCB0 byBMQVNUQzsgaXQgd2lsbCBiZSBwaWNrZWQgdXAgdGhlIG5leHQKKyAJICAgICB0aW1lIHJsX3Jl YWRfa2V5IGlzIGNhbGxlZC4gKi8KKyAJICBybF9leGVjdXRlX25leHQgKGN4dC0+bGFzdGMpOwor IAkgIHJldHVybiAoMCk7CistLS0gYS9yZWFkbGluZS9rZXltYXBzLmMKKysrKyBiL3JlYWRsaW5l L2tleW1hcHMuYworQEAgLTEsMjMgKzEsMjQgQEAKKyAvKiBrZXltYXBzLmMgLS0gRnVuY3Rpb25z IGFuZCBrZXltYXBzIGZvciB0aGUgR05VIFJlYWRsaW5lIGxpYnJhcnkuICovCisgCistLyogQ29w eXJpZ2h0IChDKSAxOTg4LDE5ODkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyog Q29weXJpZ2h0IChDKSAxOTg4LDE5ODktMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgUmVhZGxpbmUsIGEgbGlicmFyeSBm b3IgcmVhZGluZyBsaW5lcworLSAgIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQg aGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBv ZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAK KyAKKy0gICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5IGl0CistICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCistICAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQorLSAg IGxhdGVyIHZlcnNpb24uCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFJlYWRs aW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1 dAorLSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorLSAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCisgICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBh bG9uZyB3aXRoIFJlYWRsaW5lOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUKKy0gICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UsIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgYWxvbmcgd2l0aCBSZWFkbGlu ZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworKwor ICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19I KQorQEAgLTU2LDggKzU3LDkgQEAgS2V5bWFwCisgcmxfbWFrZV9iYXJlX2tleW1hcCAoKQorIHsK KyAgIHJlZ2lzdGVyIGludCBpOworLSAgS2V5bWFwIGtleW1hcCA9IChLZXltYXApeG1hbGxvYyAo S0VZTUFQX1NJWkUgKiBzaXplb2YgKEtFWU1BUF9FTlRSWSkpOworKyAgS2V5bWFwIGtleW1hcDsK KyAKKysgIGtleW1hcCA9IChLZXltYXApeG1hbGxvYyAoS0VZTUFQX1NJWkUgKiBzaXplb2YgKEtF WU1BUF9FTlRSWSkpOworICAgZm9yIChpID0gMDsgaSA8IEtFWU1BUF9TSVpFOyBpKyspCisgICAg IHsKKyAgICAgICBrZXltYXBbaV0udHlwZSA9IElTRlVOQzsKK0BAIC03NSw3ICs3Nyw4IEBAIHJs X21ha2VfYmFyZV9rZXltYXAgKCkKKyAgIHJldHVybiAoa2V5bWFwKTsKKyB9CisgCistLyogUmV0 dXJuIGEgbmV3IGtleW1hcCB3aGljaCBpcyBhIGNvcHkgb2YgTUFQLiAqLworKy8qIFJldHVybiBh IG5ldyBrZXltYXAgd2hpY2ggaXMgYSBjb3B5IG9mIE1BUC4gIEp1c3QgY29waWVzIHBvaW50ZXJz LCBkb2VzCisrICAgbm90IGNvcHkgdGV4dCBvZiBtYWNyb3Mgb3IgZGVzY2VuZCBpbnRvIGNoaWxk IGtleW1hcHMuICovCisgS2V5bWFwCisgcmxfY29weV9rZXltYXAgKG1hcCkKKyAgICAgIEtleW1h cCBtYXA7CitAQCAtMTI3LDcgKzEzMCw3IEBAIHJsX2Rpc2NhcmRfa2V5bWFwIChtYXApCisgewor ICAgaW50IGk7CisgCistICBpZiAoIW1hcCkKKysgIGlmIChtYXAgPT0gMCkKKyAgICAgcmV0dXJu OworIAorICAgZm9yIChpID0gMDsgaSA8IEtFWU1BUF9TSVpFOyBpKyspCitAQCAtMTM5LDExICsx NDIsMjEgQEAgcmxfZGlzY2FyZF9rZXltYXAgKG1hcCkKKyAKKyAJY2FzZSBJU0tNQVA6CisgCSAg cmxfZGlzY2FyZF9rZXltYXAgKChLZXltYXApbWFwW2ldLmZ1bmN0aW9uKTsKKysJICB4ZnJlZSAo KGNoYXIgKiltYXBbaV0uZnVuY3Rpb24pOworIAkgIGJyZWFrOworIAorIAljYXNlIElTTUFDUjoK Ky0JICBmcmVlICgoY2hhciAqKW1hcFtpXS5mdW5jdGlvbik7CisrCSAgeGZyZWUgKChjaGFyICop bWFwW2ldLmZ1bmN0aW9uKTsKKyAJICBicmVhazsKKyAJfQorICAgICB9CisgfQorKworKy8qIENv bnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgZGlzY2FyZHMsIHRoZW4gZnJlZXMsIE1BUC4gKi8KKyt2 b2lkCisrcmxfZnJlZV9rZXltYXAgKG1hcCkKKysgICAgIEtleW1hcCBtYXA7CisreworKyAgcmxf ZGlzY2FyZF9rZXltYXAgKG1hcCk7CisrICB4ZnJlZSAoKGNoYXIgKiltYXApOworK30KKy0tLSBh L3JlYWRsaW5lL2tleW1hcHMuaAorKysrIGIvcmVhZGxpbmUva2V5bWFwcy5oCitAQCAtMiwyMyAr MiwyMiBAQAorIAorIC8qIENvcHlyaWdodCAoQykgMTk4NywgMTk4OSwgMTk5MiBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05V IFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRl eHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxp YnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5w dXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQv b3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAg VGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlw cGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZp bGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEg Y29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0Eu ICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisgCisgI2lmbmRlZiBfS0VZTUFQ U19IXworICNkZWZpbmUgX0tFWU1BUFNfSF8KK0BAIC01MywxMSArNTIsNiBAQCB0eXBlZGVmIHN0 cnVjdCBfa2V5bWFwX2VudHJ5IHsKKyAjZGVmaW5lIEtFWU1BUF9TSVpFIDI1NworICNkZWZpbmUg QU5ZT1RIRVJLRVkgS0VZTUFQX1NJWkUtMQorIAorLS8qIEkgd2FudGVkIHRvIG1ha2UgdGhlIGFi b3ZlIHN0cnVjdHVyZSBjb250YWluIGEgdW5pb24gb2Y6CistICAgdW5pb24geyBybF9jb21tYW5k X2Z1bmNfdCAqZnVuY3Rpb247IHN0cnVjdCBfa2V5bWFwX2VudHJ5ICprZXltYXA7IH0gdmFsdWU7 CistICAgYnV0IHRoaXMgbWFkZSBpdCBpbXBvc3NpYmxlIGZvciBtZSB0byBjcmVhdGUgYSBzdGF0 aWMgYXJyYXkuCistICAgTWF5YmUgSSBuZWVkIEMgbGVzc29ucy4gKi8KKy0KKyB0eXBlZGVmIEtF WU1BUF9FTlRSWSBLRVlNQVBfRU5UUllfQVJSQVlbS0VZTUFQX1NJWkVdOworIHR5cGVkZWYgS0VZ TUFQX0VOVFJZICpLZXltYXA7CisgCistLS0gYS9yZWFkbGluZS9raWxsLmMKKysrKyBiL3JlYWRs aW5lL2tpbGwuYworQEAgLTIsMjMgKzIsMjMgQEAKKyAKKyAvKiBDb3B5cmlnaHQgKEMpIDE5OTQg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCistICAgcmVhZGluZyBs aW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4K KysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRs aW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVy YWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisgCistICAgVGhlIEdOVSBS ZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0 d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJl YWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMg b2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtl cHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90Cist ICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworKworICNkZWZp bmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19IKQorQEAg LTExNSw3ICsxMTUsNyBAQCBfcmxfY29weV90b19raWxsX3JpbmcgKHRleHQsIGFwcGVuZCkKKyAJ ICBpZiAoc2xvdCA9PSBybF9tYXhfa2lsbHMpCisgCSAgICB7CisgCSAgICAgIHJlZ2lzdGVyIGlu dCBpOworLQkgICAgICBmcmVlIChybF9raWxsX3JpbmdbMF0pOworKwkgICAgICB4ZnJlZSAocmxf a2lsbF9yaW5nWzBdKTsKKyAJICAgICAgZm9yIChpID0gMDsgaSA8IHNsb3Q7IGkrKykKKyAJCXJs X2tpbGxfcmluZ1tpXSA9IHJsX2tpbGxfcmluZ1tpICsgMV07CisgCSAgICB9CitAQCAtMTQ2LDgg KzE0Niw4IEBAIF9ybF9jb3B5X3RvX2tpbGxfcmluZyAodGV4dCwgYXBwZW5kKQorIAkgIHN0cmNw eSAobmV3LCB0ZXh0KTsKKyAJICBzdHJjYXQgKG5ldywgb2xkKTsKKyAJfQorLSAgICAgIGZyZWUg KG9sZCk7CistICAgICAgZnJlZSAodGV4dCk7CisrICAgICAgeGZyZWUgKG9sZCk7CisrICAgICAg eGZyZWUgKHRleHQpOworICAgICAgIHJsX2tpbGxfcmluZ1tzbG90XSA9IG5ldzsKKyAgICAgfQor ICAgZWxzZQorQEAgLTU4Miw2ICs1ODIsNyBAQCBybF95YW5rX250aF9hcmdfaW50ZXJuYWwgKGNv dW50LCBpZ25vcmUsIGhpc3Rvcnlfc2tpcCkKKyAgIGlmICghYXJnIHx8ICEqYXJnKQorICAgICB7 CisgICAgICAgcmxfZGluZyAoKTsKKysgICAgICBGUkVFIChhcmcpOworICAgICAgIHJldHVybiAt MTsKKyAgICAgfQorIAorQEAgLTYwMCw3ICs2MDEsNyBAQCBybF95YW5rX250aF9hcmdfaW50ZXJu YWwgKGNvdW50LCBpZ25vcmUsIGhpc3Rvcnlfc2tpcCkKKyAjZW5kaWYgLyogVklfTU9ERSAqLwor IAorICAgcmxfaW5zZXJ0X3RleHQgKGFyZyk7CistICBmcmVlIChhcmcpOworKyAgeGZyZWUgKGFy Zyk7CisgCisgICBybF9lbmRfdW5kb19ncm91cCAoKTsKKyAgIHJldHVybiAwOworQEAgLTYzOSw3 ICs2NDAsNyBAQCBybF95YW5rX2xhc3RfYXJnIChjb3VudCwga2V5KQorICAgICB7CisgICAgICAg aWYgKHVuZG9fbmVlZGVkKQorIAlybF9kb191bmRvICgpOworLSAgICAgIGlmIChjb3VudCA8IDEp CisrICAgICAgaWYgKGNvdW50IDwgMCkJCS8qIFhYWCAtIHdhcyA8IDEgKi8KKyAgICAgICAgIGRp cmVjdGlvbiA9IC1kaXJlY3Rpb247CisgICAgICAgaGlzdG9yeV9za2lwICs9IGRpcmVjdGlvbjsK KyAgICAgICBpZiAoaGlzdG9yeV9za2lwIDwgMCkKK0BAIC02ODUsNyArNjg2LDcgQEAgcmxfcGFz dGVfZnJvbV9jbGlwYm9hcmQgKGNvdW50LCBrZXkpCisgICAgICAgX3JsX3NldF9tYXJrX2F0X3Bv cyAocmxfcG9pbnQpOworICAgICAgIHJsX2luc2VydF90ZXh0IChwdHIpOworICAgICAgIGlmIChw dHIgIT0gZGF0YSkKKy0JZnJlZSAocHRyKTsKKysJeGZyZWUgKHB0cik7CisgICAgICAgQ2xvc2VD bGlwYm9hcmQgKCk7CisgICAgIH0KKyAgIHJldHVybiAoMCk7CistLS0gYS9yZWFkbGluZS9tYWNy by5jCisrKysgYi9yZWFkbGluZS9tYWNyby5jCitAQCAtMSwyNCArMSwyNCBAQAorIC8qIG1hY3Jv LmMgLS0ga2V5Ym9hcmQgbWFjcm9zIGZvciByZWFkbGluZS4gKi8KKyAKKy0vKiBDb3B5cmlnaHQg KEMpIDE5OTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChD KSAxOTk0LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCist ICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3Rv cnkgZWRpdGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExp YnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4 dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisgCist ICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUg aXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2Yg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMg Z2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5 b3UgZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAs IEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBS ZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysq LworKworICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZpbmVkIChIQVZFX0NP TkZJR19IKQorQEAgLTExMyw3ICsxMTMsNyBAQCBfcmxfbmV4dF9tYWNyb19rZXkgKCkKKyAKKyAj aWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FMTEJBQ0tTKQorICAgYyA9IHJsX2V4ZWN1dGluZ19tYWNy b1tleGVjdXRpbmdfbWFjcm9faW5kZXgrK107CistICBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVf Q0FMTEJBQ0spICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX1JFQURDTUQpICYmIHJsX2V4ZWN1dGlu Z19tYWNyb1tleGVjdXRpbmdfbWFjcm9faW5kZXhdID09IDApCisrICBpZiAoUkxfSVNTVEFURSAo UkxfU1RBVEVfQ0FMTEJBQ0spICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX1JFQURDTUR8UkxfU1RB VEVfTU9SRUlOUFVUKSAmJiBybF9leGVjdXRpbmdfbWFjcm9bZXhlY3V0aW5nX21hY3JvX2luZGV4 XSA9PSAwKQorICAgICAgIF9ybF9wb3BfZXhlY3V0aW5nX21hY3JvICgpOworICAgcmV0dXJuIGM7 CisgI2Vsc2UKK0BAIC0xNTIsNyArMTUyLDcgQEAgX3JsX3BvcF9leGVjdXRpbmdfbWFjcm8gKCkK KyAgICAgICBybF9leGVjdXRpbmdfbWFjcm8gPSBtYWNyb19saXN0LT5zdHJpbmc7CisgICAgICAg ZXhlY3V0aW5nX21hY3JvX2luZGV4ID0gbWFjcm9fbGlzdC0+c2luZGV4OworICAgICAgIG1hY3Jv X2xpc3QgPSBtYWNyb19saXN0LT5uZXh0OworLSAgICAgIGZyZWUgKG1hY3JvKTsKKysgICAgICB4 ZnJlZSAobWFjcm8pOworICAgICB9CisgCisgICBpZiAocmxfZXhlY3V0aW5nX21hY3JvID09IDAp CitAQCAtMTgxLDcgKzE4MSw3IEBAIF9ybF9raWxsX2tiZF9tYWNybyAoKQorIHsKKyAgIGlmIChj dXJyZW50X21hY3JvKQorICAgICB7CistICAgICAgZnJlZSAoY3VycmVudF9tYWNybyk7CisrICAg ICAgeGZyZWUgKGN1cnJlbnRfbWFjcm8pOworICAgICAgIGN1cnJlbnRfbWFjcm8gPSAoY2hhciAq KSBOVUxMOworICAgICB9CisgICBjdXJyZW50X21hY3JvX3NpemUgPSBjdXJyZW50X21hY3JvX2lu ZGV4ID0gMDsKKy0tLSBhL3JlYWRsaW5lL21idXRpbC5jCisrKysgYi9yZWFkbGluZS9tYnV0aWwu YworQEAgLTEsMjQgKzEsMjQgQEAKKyAvKiBtYnV0aWwuYyAtLSByZWFkbGluZSBtdWx0aWJ5dGUg Y2hhcmFjdGVyIHV0aWxpdHkgZnVuY3Rpb25zICovCisgCistLyogQ29weXJpZ2h0IChDKSAyMDAx LTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAy MDAxLTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCistICAg cmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3Rvcnkg ZWRpdGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJh cnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3 aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisgCistICAg VGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMg ZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2Vu ZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3Ug ZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJv c3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFk bGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLwor KworICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJ R19IKQorQEAgLTc3LDcgKzc3LDcgQEAgX3JsX2ZpbmRfbmV4dF9tYmNoYXJfaW50ZXJuYWwgKHN0 cmluZywgc2VlZCwgY291bnQsIGZpbmRfbm9uX3plcm8pCisgICAgICBjaGFyICpzdHJpbmc7Cisg ICAgICBpbnQgc2VlZCwgY291bnQsIGZpbmRfbm9uX3plcm87CisgeworLSAgc2l6ZV90IHRtcDsK KysgIHNpemVfdCB0bXAsIGxlbjsKKyAgIG1ic3RhdGVfdCBwczsKKyAgIGludCBwb2ludDsKKyAg IHdjaGFyX3Qgd2M7CitAQCAtOTEsMTcgKzkxLDIxIEBAIF9ybF9maW5kX25leHRfbWJjaGFyX2lu dGVybmFsIChzdHJpbmcsIHNlZWQsIGNvdW50LCBmaW5kX25vbl96ZXJvKQorICAgICByZXR1cm4g c2VlZDsKKyAKKyAgIHBvaW50ID0gc2VlZCArIF9ybF9hZGp1c3RfcG9pbnQgKHN0cmluZywgc2Vl ZCwgJnBzKTsKKy0gIC8qIGlmIHRoaXMgaXMgdHJ1ZSwgbWVhbnMgdGhhdCBzZWVkIHdhcyBub3Qg cG9pbnRlZCBjaGFyYWN0ZXIKKy0gICAgIHN0YXJ0ZWQgYnl0ZS4gIFNvIGNvcnJlY3QgdGhlIHBv aW50IGFuZCBjb25zdW1lIGNvdW50ICovCisrICAvKiBpZiB0aGlzIGlzIHRydWUsIG1lYW5zIHRo YXQgc2VlZCB3YXMgbm90IHBvaW50aW5nIHRvIGEgYnl0ZSBpbmRpY2F0aW5nCisrICAgICB0aGUg YmVnaW5uaW5nIG9mIGEgbXVsdGlieXRlIGNoYXJhY3Rlci4gIENvcnJlY3QgdGhlIHBvaW50IGFu ZCBjb25zdW1lCisrICAgICBvbmUgY2hhci4gKi8KKyAgIGlmIChzZWVkIDwgcG9pbnQpCisgICAg IGNvdW50LS07CisgCisgICB3aGlsZSAoY291bnQgPiAwKSAgCisgICAgIHsKKy0gICAgICB0bXAg PSBtYnJ0b3djICgmd2MsIHN0cmluZytwb2ludCwgc3RybGVuKHN0cmluZyArIHBvaW50KSwgJnBz KTsKKysgICAgICBsZW4gPSBzdHJsZW4gKHN0cmluZyArIHBvaW50KTsKKysgICAgICBpZiAobGVu ID09IDApCisrCWJyZWFrOworKyAgICAgIHRtcCA9IG1icnRvd2MgKCZ3Yywgc3RyaW5nK3BvaW50 LCBsZW4sICZwcyk7CisgICAgICAgaWYgKE1CX0lOVkFMSURDSCAoKHNpemVfdCl0bXApKQorIAl7 CistCSAgLyogaW52YWxpZCBieXRlcy4gYXN1bWUgYSBieXRlIHJlcHJlc2VudHMgYSBjaGFyYWN0 ZXIgKi8KKysJICAvKiBpbnZhbGlkIGJ5dGVzLiBhc3N1bWUgYSBieXRlIHJlcHJlc2VudHMgYSBj aGFyYWN0ZXIgKi8KKyAJICBwb2ludCsrOworIAkgIGNvdW50LS07CisgCSAgLyogcmVzZXQgc3Rh dGVzLiAqLworQEAgLTEyOCwxMiArMTMyLDEwIEBAIF9ybF9maW5kX25leHRfbWJjaGFyX2ludGVy bmFsIChzdHJpbmcsIHNlZWQsIGNvdW50LCBmaW5kX25vbl96ZXJvKQorICAgaWYgKGZpbmRfbm9u X3plcm8pCisgICAgIHsKKyAgICAgICB0bXAgPSBtYnJ0b3djICgmd2MsIHN0cmluZyArIHBvaW50 LCBzdHJsZW4gKHN0cmluZyArIHBvaW50KSwgJnBzKTsKKy0gICAgICB3aGlsZSAodG1wID4gMCAm JiB3Y3dpZHRoICh3YykgPT0gMCkKKysgICAgICB3aGlsZSAoTUJfTlVMTFdDSCAodG1wKSA9PSAw ICYmIE1CX0lOVkFMSURDSCAodG1wKSA9PSAwICYmIHdjd2lkdGggKHdjKSA9PSAwKQorIAl7Cisg CSAgcG9pbnQgKz0gdG1wOworIAkgIHRtcCA9IG1icnRvd2MgKCZ3Yywgc3RyaW5nICsgcG9pbnQs IHN0cmxlbiAoc3RyaW5nICsgcG9pbnQpLCAmcHMpOworLQkgIGlmIChNQl9OVUxMV0NIICh0bXAp IHx8IE1CX0lOVkFMSURDSCAodG1wKSkKKy0JICAgIGJyZWFrOworIAl9CisgICAgIH0KKyAKKy0t LSBhL3JlYWRsaW5lL21pc2MuYworKysrIGIvcmVhZGxpbmUvbWlzYy5jCitAQCAtMSwyNCArMSwy NCBAQAorIC8qIG1pc2MuYyAtLSBtaXNjZWxsYW5lb3VzIGJpbmRhYmxlIHJlYWRsaW5lIGZ1bmN0 aW9ucy4gKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwNSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJl YWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQg d2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJh cnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQg YW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJh cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQvb3Ig bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor KyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVk IHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUg Y2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29w eSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwK Ky0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICov CisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisrCisgI2RlZmluZSBSRUFETElORV9M SUJSQVJZCisgCisgI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCitAQCAtMTQ2LDYgKzE0Niw4 IEBAIF9ybF9hcmdfZGlzcGF0Y2ggKGN4dCwgYykKKyAJICBybF9yZXN0b3JlX3Byb21wdCAoKTsK KyAJICBybF9jbGVhcl9tZXNzYWdlICgpOworIAkgIFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfTlVN RVJJQ0FSRyk7CisrCSAgaWYgKGtleSA8IDApCisrCSAgICByZXR1cm4gLTE7CisgCSAgcmV0dXJu IChfcmxfZGlzcGF0Y2ggKGtleSwgX3JsX2tleW1hcCkpOworIAl9CisgICAgIH0KK0BAIC0yMTIs NiArMjE0LDggQEAgcmxfZGlnaXRfbG9vcCAoKQorICAgICAgIGlmIChyIDw9IDAgfHwgKFJMX0lT U1RBVEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpID09IDApKQorICAgICAgICAgYnJlYWs7CisgICAg IH0KKysKKysgIHJldHVybiByOworIH0KKyAKKyAvKiBDcmVhdGUgYSBkZWZhdWx0IGFyZ3VtZW50 LiAqLworQEAgLTMyNCw3ICszMjgsNyBAQCBfcmxfZnJlZV9oaXN0b3J5X2VudHJ5IChlbnRyeSkK KyAgIEZSRUUgKGVudHJ5LT5saW5lKTsKKyAgIEZSRUUgKGVudHJ5LT50aW1lc3RhbXApOworIAor LSAgZnJlZSAoZW50cnkpOworKyAgeGZyZWUgKGVudHJ5KTsKKyB9CisgCisgLyogUGVyaGFwcyBw dXQgYmFjayB0aGUgY3VycmVudCBsaW5lIGlmIGl0IGhhcyBjaGFuZ2VkLiAqLworQEAgLTMzOCw5 ICszNDIsOSBAQCBybF9tYXliZV9yZXBsYWNlX2xpbmUgKCkKKyAgIGlmICh0ZW1wICYmICgoVU5E T19MSVNUICopKHRlbXAtPmRhdGEpICE9IHJsX3VuZG9fbGlzdCkpCisgICAgIHsKKyAgICAgICB0 ZW1wID0gcmVwbGFjZV9oaXN0b3J5X2VudHJ5ICh3aGVyZV9oaXN0b3J5ICgpLCBybF9saW5lX2J1 ZmZlciwgKGhpc3RkYXRhX3QpcmxfdW5kb19saXN0KTsKKy0gICAgICBmcmVlICh0ZW1wLT5saW5l KTsKKysgICAgICB4ZnJlZSAodGVtcC0+bGluZSk7CisgICAgICAgRlJFRSAodGVtcC0+dGltZXN0 YW1wKTsKKy0gICAgICBmcmVlICh0ZW1wKTsKKysgICAgICB4ZnJlZSAodGVtcCk7CisgICAgIH0K KyAgIHJldHVybiAwOworIH0KK0BAIC00MjcsNiArNDMxLDU2IEBAIHJsX3JlcGxhY2VfZnJvbV9o aXN0b3J5IChlbnRyeSwgZmxhZ3MpCisgICAgICAgcmxfbWFyayA9IHJsX2VuZDsKKyAgICAgfQor ICNlbmRpZgorK30KKysKKysvKiBQcm9jZXNzIGFuZCBmcmVlIHVuZG8gbGlzdHMgYXR0YWNoZWQg dG8gZWFjaCBoaXN0b3J5IGVudHJ5IHByaW9yIHRvIHRoZQorKyAgIGN1cnJlbnQgZW50cnksIGlu Y2x1c2l2ZSwgcmV2ZXJ0aW5nIGVhY2ggbGluZSB0byBpdHMgc2F2ZWQgc3RhdGUuICBUaGlzIAor KyAgIGlzIGRlc3RydWN0aXZlLCBhbmQgc3RhdGUgYWJvdXQgdGhlIGN1cnJlbnQgbGluZSBpcyBs b3N0LiAgVGhpcyBpcyBub3QKKysgICBpbnRlbmRlZCB0byBiZSBjYWxsZWQgd2hpbGUgYWN0aXZl bHkgZWRpdGluZywgYW5kIHRoZSBjdXJyZW50IGxpbmUgaXMKKysgICBub3QgYXNzdW1lZCB0byBo YXZlIGJlZW4gYWRkZWQgdG8gdGhlIGhpc3RvcnkgbGlzdC4gKi8KKyt2b2lkCisrX3JsX3JldmVy dF9hbGxfbGluZXMgKCkKKyt7CisrICBpbnQgaHBvczsKKysgIEhJU1RfRU5UUlkgKmVudHJ5Owor KyAgVU5ET19MSVNUICp1bCwgKnNhdmVkX3VuZG9fbGlzdDsKKysgIGNoYXIgKmxidWY7CisrCisr ICBsYnVmID0gc2F2ZXN0cmluZyAocmxfbGluZV9idWZmZXIpOworKyAgc2F2ZWRfdW5kb19saXN0 ID0gcmxfdW5kb19saXN0OworKyAgaHBvcyA9IHdoZXJlX2hpc3RvcnkgKCk7CisrCisrICBlbnRy eSA9IChocG9zID09IGhpc3RvcnlfbGVuZ3RoKSA/IHByZXZpb3VzX2hpc3RvcnkgKCkgOiBjdXJy ZW50X2hpc3RvcnkgKCk7CisrICB3aGlsZSAoZW50cnkpCisrICAgIHsKKysgICAgICBpZiAodWwg PSAoVU5ET19MSVNUICopZW50cnktPmRhdGEpCisrCXsKKysJICBpZiAodWwgPT0gc2F2ZWRfdW5k b19saXN0KQorKwkgICAgc2F2ZWRfdW5kb19saXN0ID0gMDsKKysJICAvKiBTZXQgdXAgcmxfbGlu ZV9idWZmZXIgYW5kIG90aGVyIHZhcmlhYmxlcyBmcm9tIGhpc3RvcnkgZW50cnkgKi8KKysJICBy bF9yZXBsYWNlX2Zyb21faGlzdG9yeSAoZW50cnksIDApOwkvKiBlbnRyeS0+bGluZSBpcyBub3cg Y3VycmVudCAqLworKwkgIC8qIFVuZG8gYWxsIGNoYW5nZXMgdG8gdGhpcyBoaXN0b3J5IGVudHJ5 ICovCisrCSAgd2hpbGUgKHJsX3VuZG9fbGlzdCkKKysJICAgIHJsX2RvX3VuZG8gKCk7CisrCSAg LyogQW5kIGNvcHkgdGhlIHJldmVydGVkIGxpbmUgYmFjayB0byB0aGUgaGlzdG9yeSBlbnRyeSwg cHJlc2VydmluZworKwkgICAgIHRoZSB0aW1lc3RhbXAuICovCisrCSAgRlJFRSAoZW50cnktPmxp bmUpOworKwkgIGVudHJ5LT5saW5lID0gc2F2ZXN0cmluZyAocmxfbGluZV9idWZmZXIpOworKwkg IGVudHJ5LT5kYXRhID0gMDsKKysJfQorKyAgICAgIGVudHJ5ID0gcHJldmlvdXNfaGlzdG9yeSAo KTsKKysgICAgfQorKworKyAgLyogUmVzdG9yZSBoaXN0b3J5IHN0YXRlICovCisrICBybF91bmRv X2xpc3QgPSBzYXZlZF91bmRvX2xpc3Q7CS8qIG1heSBoYXZlIGJlZW4gc2V0IHRvIG51bGwgKi8K KysgIGhpc3Rvcnlfc2V0X3BvcyAoaHBvcyk7CisrICAKKysgIC8qIHJlc2V0IHRoZSBsaW5lIGJ1 ZmZlciAqLworKyAgcmxfcmVwbGFjZV9saW5lIChsYnVmLCAwKTsKKysgIF9ybF9zZXRfdGhlX2xp bmUgKCk7CisrCisrICAvKiBhbmQgY2xlYW4gdXAgKi8KKysgIHhmcmVlIChsYnVmKTsKKyB9ICAK KyAKKyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqICovCitAQCAtNTU2LDcgKzYxMCw3IEBAIHJsX3ZpX2VkaXRpbmdfbW9k ZSAoY291bnQsIGtleSkKKyAjaWYgZGVmaW5lZCAoVklfTU9ERSkKKyAgIF9ybF9zZXRfaW5zZXJ0 X21vZGUgKFJMX0lNX0lOU0VSVCwgMSk7CS8qIHZpIG1vZGUgaWdub3JlcyBpbnNlcnQgbW9kZSAq LworICAgcmxfZWRpdGluZ19tb2RlID0gdmlfbW9kZTsKKy0gIHJsX3ZpX2luc2VydGlvbl9tb2Rl ICgxLCBrZXkpOworKyAgcmxfdmlfaW5zZXJ0X21vZGUgKDEsIGtleSk7CisgI2VuZGlmIC8qIFZJ X01PREUgKi8KKyAKKyAgIHJldHVybiAwOworLS0tIGEvcmVhZGxpbmUvbmxzLmMKKysrKyBiL3Jl YWRsaW5lL25scy5jCitAQCAtMSwyNCArMSwyNCBAQAorIC8qIG5scy5jIC0tIHNrZWxldGFsIGlu dGVybmF0aW9uYWxpemF0aW9uIGNvZGUuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTk2IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk5Ni0yMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0 IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcg bGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcu CisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFk bGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRl cmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBHTlUg UmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29m dHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBS ZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlz IG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBr ZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAor LSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1B IDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKysKKyAjZGVm aW5lIFJFQURMSU5FX0xJQlJBUlkKKyAKKyAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKK0BA IC0xNDUsNyArMTQ1LDcgQEAgX3JsX2luaXRfZWlnaHRiaXQgKCkKKyAJX3JsX291dHB1dF9tZXRh X2NoYXJzID0gMTsKKyAJYnJlYWs7CisgICAgICAgfQorLSAgZnJlZSAodCk7CisrICB4ZnJlZSAo dCk7CisgICByZXR1cm4gKGxlZ2FsX2xhbmdfdmFsdWVzW2ldID8gMSA6IDApOworIAorICNlbmRp ZiAvKiAhSEFWRV9TRVRMT0NBTEUgKi8KKy0tLSBhL3JlYWRsaW5lL3BhcmVucy5jCisrKysgYi9y ZWFkbGluZS9wYXJlbnMuYworQEAgLTEsMjQgKzEsMjQgQEAKKy0vKiBwYXJlbnMuYyAtLSBJbXBs ZW1lbnRhdGlvbiBvZiBtYXRjaGluZyBwYXJlbnRoZXNlcyBmZWF0dXJlLiAqLworKy8qIHBhcmVu cy5jIC0tIGltcGxlbWVudGF0aW9uIG9mIG1hdGNoaW5nIHBhcmVudGhlc2VzIGZlYXR1cmUuICov CisgCistLyogQ29weXJpZ2h0IChDKSAxOTg3LCAxOTg5LCAxOTkyIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk4NywgMTk4OSwgMTk5Mi0yMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGlu ZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisr ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGlu ZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFj dGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBHTlUgUmVh ZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAor LSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdh cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFk bGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9m dGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0 IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAg IGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKysKKyAjZGVmaW5l IFJFQURMSU5FX0xJQlJBUlkKKyAKKyAjaWYgZGVmaW5lZCAoX19UQU5ERU0pCitAQCAtMzgsMTYg KzM4LDcgQEAKKyAjICBpbmNsdWRlIDx1bmlzdGQuaD4KKyAjZW5kaWYKKyAKKy0jaWYgZGVmaW5l ZCAoRkRfU0VUKSAmJiAhZGVmaW5lZCAoSEFWRV9TRUxFQ1QpCistIyAgZGVmaW5lIEhBVkVfU0VM RUNUCistI2VuZGlmCistCistI2lmIGRlZmluZWQgKEhBVkVfU0VMRUNUKQorLSMgIGluY2x1ZGUg PHN5cy90aW1lLmg+CistI2VuZGlmIC8qIEhBVkVfU0VMRUNUICovCistI2lmIGRlZmluZWQgKEhB VkVfU1lTX1NFTEVDVF9IKQorLSMgIGluY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKy0jZW5kaWYKKysj aW5jbHVkZSAicG9zaXhzZWxlY3QuaCIKKyAKKyAjaWYgZGVmaW5lZCAoSEFWRV9TVFJJTkdfSCkK KyAjICBpbmNsdWRlIDxzdHJpbmcuaD4KK0BAIC0xMzAsOCArMTIxLDcgQEAgcmxfaW5zZXJ0X2Ns b3NlIChjb3VudCwgaW52b2tpbmdfa2V5KQorIAorICAgICAgIEZEX1pFUk8gKCZyZWFkZmRzKTsK KyAgICAgICBGRF9TRVQgKGZpbGVubyAocmxfaW5zdHJlYW0pLCAmcmVhZGZkcyk7CistICAgICAg dGltZXIudHZfc2VjID0gMDsKKy0gICAgICB0aW1lci50dl91c2VjID0gX3BhcmVuX2JsaW5rX3Vz ZWM7CisrICAgICAgVVNFQ19UT19USU1FVkFMIChfcGFyZW5fYmxpbmtfdXNlYywgdGltZXIpOwor IAorICAgICAgIG9yaWdfcG9pbnQgPSBybF9wb2ludDsKKyAgICAgICBybF9wb2ludCA9IG1hdGNo X3BvaW50OworLS0tIC9kZXYvbnVsbAorKysrIGIvcmVhZGxpbmUvcGF0Y2hsZXZlbAorQEAgLTAs MCArMSwzIEBACisrIyBEbyBub3QgZWRpdCAtLSBleGlzdHMgb25seSBmb3IgdXNlIGJ5IHBhdGNo CisrCisrMQorLS0tIGEvcmVhZGxpbmUvcG9zaXhkaXIuaAorKysrIGIvcmVhZGxpbmUvcG9zaXhk aXIuaAorQEAgLTQsMTkgKzQsMTkgQEAKKyAKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUg QmFzaCwgdGhlIEJvdXJuZSBBZ2FpbiBTSGVsbC4KKyAKKy0gICBCYXNoIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKy0gICB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9y IChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgICBCYXNoIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKyAKKy0gICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCistICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCistICAgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwor LSAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyAgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorLSAgIGFsb25nIHdpdGggQmFzaDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlCistICAgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxl IFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIGFsb25nIHdp dGggQmFzaC4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysq LworIAorIC8qIFRoaXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW5zdGVhZCBvZiA8ZGlyZW50 Lmg+IG9yIDxzeXMvZGlyLmg+LiAqLworIAorLS0tIGEvcmVhZGxpbmUvcG9zaXhqbXAuaAorKysr IGIvcmVhZGxpbmUvcG9zaXhqbXAuaAorQEAgLTQsMTkgKzQsMTkgQEAKKyAKKyAgICBUaGlzIGZp bGUgaXMgcGFydCBvZiBHTlUgQmFzaCwgdGhlIEJvdXJuZSBBZ2FpbiBTSGVsbC4KKyAKKy0gICBC YXNoIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQKKy0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lv bi4KKysgICBCYXNoIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCistICAgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklM SVRZCistICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYworLSAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBCYXNo IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggQmFzaDsgc2VlIHRoZSBm aWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCistICAgU29mdHdhcmUgRm91 bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNB LiAqLworKyAgIGFsb25nIHdpdGggQmFzaC4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKysqLworIAorICNpZm5kZWYgX1BPU0lYSk1QX0hfCisgI2RlZmluZSBf UE9TSVhKTVBfSF8KKy0tLSAvZGV2L251bGwKKysrKyBiL3JlYWRsaW5lL3Bvc2l4c2VsZWN0LmgK K0BAIC0wLDAgKzEsNDcgQEAKKysvKiBwb3NpeHNlbGVjdC5oIC0tIHdyYXBwZXIgZm9yIHNlbGVj dCgyKSBpbmNsdWRlcyBhbmQgZGVmaW5pdGlvbnMgKi8KKysKKysvKiBDb3B5cmlnaHQgKEMpIDIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR05VIEJhc2gsIHRoZSBCb3VybmUgQWdhaW4gU0hlbGwuCisrCisrICAgQmFzaCBpcyBm cmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrCisrICAgQmFzaCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9u ZyB3aXRoIEJhc2guICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisrKi8KKysKKysjaWZuZGVmIF9QT1NJWFNFTEVDVF9IXworKyNkZWZpbmUgX1BPU0lYU0VMRUNU X0hfCisrCisrI2lmIGRlZmluZWQgKEZEX1NFVCkgJiYgIWRlZmluZWQgKEhBVkVfU0VMRUNUKQor KyMgIGRlZmluZSBIQVZFX1NFTEVDVCAxCisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQgKEhBVkVf U0VMRUNUKQorKyMgIGlmICFkZWZpbmVkIChIQVZFX1NZU19TRUxFQ1RfSCkgfHwgIWRlZmluZWQg KE1fVU5JWCkKKysjICAgIGluY2x1ZGUgPHN5cy90aW1lLmg+CisrIyAgZW5kaWYKKysjZW5kaWYg LyogSEFWRV9TRUxFQ1QgKi8KKysjaWYgZGVmaW5lZCAoSEFWRV9TWVNfU0VMRUNUX0gpCisrIyAg aW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorKyNlbmRpZgorKworKyNpZm5kZWYgVVNFQ19QRVJfU0VD CisrIyAgZGVmaW5lIFVTRUNfUEVSX1NFQyAxMDAwMDAwCisrI2VuZGlmCisrCisrI2RlZmluZSBV U0VDX1RPX1RJTUVWQUwodXMsIHR2KSBcCisrZG8geyBcCisrICAodHYpLnR2X3NlYyA9ICh1cykg LyBVU0VDX1BFUl9TRUM7IFwKKysgICh0dikudHZfdXNlYyA9ICh1cykgJSBVU0VDX1BFUl9TRUM7 IFwKKyt9IHdoaWxlICgwKQorKworKyNlbmRpZiAvKiBfUE9TSVhTRUxFQ1RfSF8gKi8KKy0tLSBh L3JlYWRsaW5lL3Bvc2l4c3RhdC5oCisrKysgYi9yZWFkbGluZS9wb3NpeHN0YXQuaAorQEAgLTUs MTkgKzUsMTkgQEAKKyAKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgQmFzaCwgdGhlIEJv dXJuZSBBZ2FpbiBTSGVsbC4KKyAKKy0gICBCYXNoIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKy0gICB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9w dGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgICBCYXNoIGlzIGZyZWUgc29mdHdhcmU6 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAK Ky0gICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsIGJ1dCBXSVRIT1VUCistICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZCistICAgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworLSAgIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysgICBCYXNoIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKyAgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAg IGFsb25nIHdpdGggQmFzaDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRv IHRoZSBGcmVlCistICAgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIGFsb25nIHdpdGggQmFzaC4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAorIC8qIFRo aXMgZmlsZSBzaG91bGQgYmUgaW5jbHVkZWQgaW5zdGVhZCBvZiA8c3lzL3N0YXQuaD4uCisgICAg SXQgcmVsaWVzIG9uIHRoZSBsb2NhbCBzeXMvc3RhdC5oIHRvIHdvcmsgdGhvdWdoLiAqLworLS0t IGEvcmVhZGxpbmUvcmVhZGxpbmUuYworKysrIGIvcmVhZGxpbmUvcmVhZGxpbmUuYworQEAgLTEs MjUgKzEsMjUgQEAKKyAvKiByZWFkbGluZS5jIC0tIGEgZ2VuZXJhbCBmYWNpbGl0eSBmb3IgcmVh ZGluZyBsaW5lcyBvZiBpbnB1dAorICAgIHdpdGggZW1hY3Mgc3R5bGUgZWRpdGluZyBhbmQgY29t cGxldGlvbi4gKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwNSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05V IFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRl eHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxp YnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5w dXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExp YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQv b3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAg VGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlw cGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZp bGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEg Y29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0Eu ICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisrCisgI2RlZmluZSBSRUFETElO RV9MSUJSQVJZCisgCisgI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gpCitAQCAtNDksNiArNDks MTEgQEAKKyAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSAicG9zaXhqbXAuaCIKKysj aW5jbHVkZSA8ZXJybm8uaD4KKysKKysjaWYgIWRlZmluZWQgKGVycm5vKQorK2V4dGVybiBpbnQg ZXJybm87CisrI2VuZGlmIC8qICFlcnJubyAqLworIAorIC8qIFN5c3RlbS1zcGVjaWZpYyBmZWF0 dXJlIGRlZmluaXRpb25zIGFuZCBpbmNsdWRlIGZpbGVzLiAqLworICNpbmNsdWRlICJybGRlZnMu aCIKK0BAIC0xNTgsNyArMTYzLDcgQEAgaW50IHJsX2RvbmU7CisgcmxfY29tbWFuZF9mdW5jX3Qg KnJsX2xhc3RfZnVuYyA9IChybF9jb21tYW5kX2Z1bmNfdCAqKU5VTEw7CisgCisgLyogVG9wIGxl dmVsIGVudmlyb25tZW50IGZvciByZWFkbGluZV9pbnRlcm5hbCAoKS4gKi8KKy1wcm9jZW52X3Qg cmVhZGxpbmVfdG9wX2xldmVsOworK3Byb2NlbnZfdCBfcmxfdG9wX2xldmVsOworIAorIC8qIFRo ZSBzdHJlYW1zIHdlIGludGVyYWN0IHdpdGguICovCisgRklMRSAqX3JsX2luX3N0cmVhbSwgKl9y bF9vdXRfc3RyZWFtOworQEAgLTE3MSw3ICsxNzYsNyBAQCBGSUxFICpybF9vdXRzdHJlYW0gPSAo RklMRSAqKU5VTEw7CisgICAgc2V0IHRvIDEgaWYgdGhlcmUgaXMgYSBjb250cm9sbGluZyB0ZXJt aW5hbCwgd2UgY2FuIGdldCBpdHMgYXR0cmlidXRlcywKKyAgICBhbmQgdGhlIGF0dHJpYnV0ZXMg aW5jbHVkZSBgZWNobycuICBMb29rIGF0IHJsdHR5LmM6cHJlcGFyZV90ZXJtaW5hbF9zZXR0aW5n cworICAgIGZvciB0aGUgY29kZSB0aGF0IHNldHMgaXQuICovCistaW50IHJlYWRsaW5lX2VjaG9p bmdfcCA9IDA7CisraW50IF9ybF9lY2hvaW5nX3AgPSAwOworIAorIC8qIEN1cnJlbnQgcHJvbXB0 LiAqLworIGNoYXIgKnJsX3Byb21wdCA9IChjaGFyICopTlVMTDsKK0BAIC0yNjUsNiArMjcwLDE1 IEBAIGludCBfcmxfb3V0cHV0X21ldGFfY2hhcnMgPSAwOworICAgIHRoZW0gdG8gZXF1aXZhbGVu dCByZWFkbGluZSBmdW5jdGlvbnMgYXQgc3RhcnR1cC4gKi8KKyBpbnQgX3JsX2JpbmRfc3R0eV9j aGFycyA9IDE7CisgCisrLyogTm9uLXplcm8gbWVhbnMgdG8gZ28gdGhyb3VnaCB0aGUgaGlzdG9y eSBsaXN0IGF0IGV2ZXJ5IG5ld2xpbmUgKG9yCisrICAgd2hlbmV2ZXIgcmxfZG9uZSBpcyBzZXQg YW5kIHJlYWRsaW5lIHJldHVybnMpIGFuZCByZXZlcnQgZWFjaCBsaW5lIHRvCisrICAgaXRzIGlu aXRpYWwgc3RhdGUuICovCisraW50IF9ybF9yZXZlcnRfYWxsX2F0X25ld2xpbmUgPSAwOworKwor Ky8qIE5vbi16ZXJvIG1lYW5zIHRvIGhvbm9yIHRoZSB0ZXJtaW9zIEVDSE9DVEwgYml0IGFuZCBl Y2hvIGNvbnRyb2wKKysgICBjaGFyYWN0ZXJzIGNvcnJlc3BvbmRpbmcgdG8ga2V5Ym9hcmQtZ2Vu ZXJhdGVkIHNpZ25hbHMuICovCisraW50IF9ybF9lY2hvX2NvbnRyb2xfY2hhcnMgPSAxOworKwor IC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiogKi8KKyAvKgkJCQkJCQkJICAgICovCisgLyoJCQlUb3AgTGV2ZWwgRnVuY3Rp b25zCQkJICAgICovCitAQCAtMjk1LDYgKzMwOSw5IEBAIHJlYWRsaW5lIChwcm9tcHQpCisgICAg ICBjb25zdCBjaGFyICpwcm9tcHQ7CisgeworICAgY2hhciAqdmFsdWU7CisrI2lmIDAKKysgIGlu dCBpbl9jYWxsYmFjazsKKysjZW5kaWYKKyAKKyAgIC8qIElmIHdlIGFyZSBhdCBFT0YgcmV0dXJu IGEgTlVMTCBzdHJpbmcuICovCisgICBpZiAocmxfcGVuZGluZ19pbnB1dCA9PSBFT0YpCitAQCAt MzAzLDYgKzMyMCwxNSBAQCByZWFkbGluZSAocHJvbXB0KQorICAgICAgIHJldHVybiAoKGNoYXIg KilOVUxMKTsKKyAgICAgfQorIAorKyNpZiAwCisrICAvKiBJZiByZWFkbGluZSgpIGlzIGNhbGxl ZCBhZnRlciBpbnN0YWxsaW5nIGEgY2FsbGJhY2sgaGFuZGxlciwgdGVtcG9yYXJpbHkKKysgICAg IHR1cm4gb2ZmIHRoZSBjYWxsYmFjayBzdGF0ZSB0byBhdm9pZCBlbnN1aW5nIG1lc3NpbmVzcy4g IFBhdGNoIHN1cHBsaWVkCisrICAgICBieSB0aGUgZ2RiIGZvbGtzLiAgWFhYIC0tIGRpc2FibGVk LiAgVGhpcyBjYW4gYmUgZm9vbGVkIGFuZCByZWFkbGluZQorKyAgICAgbGVmdCBpbiBhIHN0cmFu Z2Ugc3RhdGUgYnkgYSBwb29ybHktdGltZWQgbG9uZ2ptcC4gKi8KKysgIGlmIChpbl9jYWxsYmFj ayA9IFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSkKKysgICAgUkxfVU5TRVRTVEFURSAo UkxfU1RBVEVfQ0FMTEJBQ0spOworKyNlbmRpZgorKworICAgcmxfc2V0X3Byb21wdCAocHJvbXB0 KTsKKyAKKyAgIHJsX2luaXRpYWxpemUgKCk7CitAQCAtMzIxLDYgKzM0NywxMSBAQCByZWFkbGlu ZSAocHJvbXB0KQorICAgcmxfY2xlYXJfc2lnbmFscyAoKTsKKyAjZW5kaWYKKyAKKysjaWYgMAor KyAgaWYgKGluX2NhbGxiYWNrKQorKyAgICBSTF9TRVRTVEFURSAoUkxfU1RBVEVfQ0FMTEJBQ0sp OworKyNlbmRpZgorKworICAgcmV0dXJuICh2YWx1ZSk7CisgfQorIAorQEAgLTM0NCwxNCArMzc1 LDE0IEBAIHJlYWRsaW5lX2ludGVybmFsX3NldHVwICgpCisgICAvKiBJZiB3ZSdyZSBub3QgZWNo b2luZywgd2Ugc3RpbGwgd2FudCB0byBhdCBsZWFzdCBwcmludCBhIHByb21wdCwgYmVjYXVzZQor ICAgICAgcmxfcmVkaXNwbGF5IHdpbGwgbm90IGRvIGl0IGZvciB1cy4gIElmIHRoZSBjYWxsaW5n IGFwcGxpY2F0aW9uIGhhcyBhCisgICAgICBjdXN0b20gcmVkaXNwbGF5IGZ1bmN0aW9uLCB0aG91 Z2gsIGxldCB0aGF0IGZ1bmN0aW9uIGhhbmRsZSBpdC4gKi8KKy0gIGlmIChyZWFkbGluZV9lY2hv aW5nX3AgPT0gMCAmJiBybF9yZWRpc3BsYXlfZnVuY3Rpb24gPT0gcmxfcmVkaXNwbGF5KQorKyAg aWYgKF9ybF9lY2hvaW5nX3AgPT0gMCAmJiBybF9yZWRpc3BsYXlfZnVuY3Rpb24gPT0gcmxfcmVk aXNwbGF5KQorICAgICB7CisgICAgICAgaWYgKHJsX3Byb21wdCAmJiBybF9hbHJlYWR5X3Byb21w dGVkID09IDApCisgCXsKKyAJICBucHJvbXB0ID0gX3JsX3N0cmlwX3Byb21wdCAocmxfcHJvbXB0 KTsKKyAJICBmcHJpbnRmIChfcmxfb3V0X3N0cmVhbSwgIiVzIiwgbnByb21wdCk7CisgCSAgZmZs dXNoIChfcmxfb3V0X3N0cmVhbSk7CistCSAgZnJlZSAobnByb21wdCk7CisrCSAgeGZyZWUgKG5w cm9tcHQpOworIAl9CisgICAgIH0KKyAgIGVsc2UKK0BAIC0zNjUsMTEgKzM5NiwxMyBAQCByZWFk bGluZV9pbnRlcm5hbF9zZXR1cCAoKQorIAorICNpZiBkZWZpbmVkIChWSV9NT0RFKQorICAgaWYg KHJsX2VkaXRpbmdfbW9kZSA9PSB2aV9tb2RlKQorLSAgICBybF92aV9pbnNlcnRpb25fbW9kZSAo MSwgJ2knKTsKKysgICAgcmxfdmlfaW5zZXJ0X21vZGUgKDEsICdpJyk7CisgI2VuZGlmIC8qIFZJ X01PREUgKi8KKyAKKyAgIGlmIChybF9wcmVfaW5wdXRfaG9vaykKKyAgICAgKCpybF9wcmVfaW5w dXRfaG9vaykgKCk7CisrCisrICBSTF9DSEVDS19TSUdOQUxTICgpOworIH0KKyAKKyBTVEFUSUNf Q0FMTEJBQ0sgY2hhciAqCitAQCAtMzc5LDYgKzQxMiw4IEBAIHJlYWRsaW5lX2ludGVybmFsX3Rl YXJkb3duIChlb2YpCisgICBjaGFyICp0ZW1wOworICAgSElTVF9FTlRSWSAqZW50cnk7CisgCisr ICBSTF9DSEVDS19TSUdOQUxTICgpOworKworICAgLyogUmVzdG9yZSB0aGUgb3JpZ2luYWwgb2Yg dGhpcyBoaXN0b3J5IGxpbmUsIGlmZiB0aGUgbGluZSB0aGF0IHdlCisgICAgICBhcmUgZWRpdGlu ZyB3YXMgb3JpZ2luYWxseSBpbiB0aGUgaGlzdG9yeSwgQU5EIHRoZSBsaW5lIGhhcyBjaGFuZ2Vk LiAqLworICAgZW50cnkgPSBjdXJyZW50X2hpc3RvcnkgKCk7CitAQCAtMzkxLDkgKzQyNiwxMiBA QCByZWFkbGluZV9pbnRlcm5hbF90ZWFyZG93biAoZW9mKQorICAgICAgIF9ybF9mcmVlX2hpc3Rv cnlfZW50cnkgKGVudHJ5KTsKKyAKKyAgICAgICBzdHJjcHkgKHRoZV9saW5lLCB0ZW1wKTsKKy0g ICAgICBmcmVlICh0ZW1wKTsKKysgICAgICB4ZnJlZSAodGVtcCk7CisgICAgIH0KKyAKKysgIGlm IChfcmxfcmV2ZXJ0X2FsbF9hdF9uZXdsaW5lKQorKyAgICBfcmxfcmV2ZXJ0X2FsbF9saW5lcyAo KTsKKysKKyAgIC8qIEF0IGFueSByYXRlLCBpdCBpcyBoaWdobHkgbGlrZWx5IHRoYXQgdGhpcyBs aW5lIGhhcyBhbiB1bmRvIGxpc3QuICBHZXQKKyAgICAgIHJpZCBvZiBpdCBub3cuICovCisgICBp ZiAocmxfdW5kb19saXN0KQorQEAgLTQ1NCw3ICs0OTIsNyBAQCByZWFkbGluZV9pbnRlcm5hbF9j aGFybG9vcCAoKQorICNlbmRpZgorICAgICAgIGxrID0gX3JsX2xhc3RfY29tbWFuZF93YXNfa2ls bDsKKyAKKy0gICAgICBjb2RlID0gc2V0am1wIChyZWFkbGluZV90b3BfbGV2ZWwpOworKyAgICAg IGNvZGUgPSBzZXRqbXAgKF9ybF90b3BfbGV2ZWwpOworIAorICAgICAgIGlmIChjb2RlKQorIAl7 CitAQCAtNDYyLDcgKzUwMCw3IEBAIHJlYWRsaW5lX2ludGVybmFsX2NoYXJsb29wICgpCisgCSAg X3JsX3dhbnRfcmVkaXNwbGF5ID0gMDsKKyAJICAvKiBJZiB3ZSBnZXQgaGVyZSwgd2UncmUgbm90 IGJlaW5nIGNhbGxlZCBmcm9tIHNvbWV0aGluZyBkaXNwYXRjaGVkCisgCSAgICAgZnJvbSBfcmxf Y2FsbGJhY2tfcmVhZF9jaGFyKCksIHdoaWNoIHNldHMgdXAgaXRzIG93biB2YWx1ZSBvZgorLQkg ICAgIHJlYWRsaW5lX3RvcF9sZXZlbCAoc2F2aW5nIGFuZCByZXN0b3JpbmcgdGhlIG9sZCwgb2Yg Y291cnNlKSwgc28KKysJICAgICBfcmxfdG9wX2xldmVsIChzYXZpbmcgYW5kIHJlc3RvcmluZyB0 aGUgb2xkLCBvZiBjb3Vyc2UpLCBzbworIAkgICAgIHdlIGNhbiBqdXN0IHJldHVybiBoZXJlLiAq LworIAkgIGlmIChSTF9JU1NUQVRFIChSTF9TVEFURV9DQUxMQkFDSykpCisgCSAgICByZXR1cm4g KDApOworQEAgLTQ3OSw2ICs1MTcsMjAgQEAgcmVhZGxpbmVfaW50ZXJuYWxfY2hhcmxvb3AgKCkK KyAgICAgICBjID0gcmxfcmVhZF9rZXkgKCk7CisgICAgICAgUkxfVU5TRVRTVEFURShSTF9TVEFU RV9SRUFEQ01EKTsKKyAKKysgICAgICAvKiBsb29rIGF0IGlucHV0LmM6cmxfZ2V0YygpIGZvciB0 aGUgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaCB0aGlzIHdpbGwKKysJIGJlIHJldHVybmVkOyBw dW50IGltbWVkaWF0ZWx5IG9uIHJlYWQgZXJyb3Igd2l0aG91dCBjb252ZXJ0aW5nIGl0IHRvCisr CSBhIG5ld2xpbmUuICovCisrICAgICAgaWYgKGMgPT0gUkVBREVSUikKKysJeworKyNpZiBkZWZp bmVkIChSRUFETElORV9DQUxMQkFDS1MpCisrCSAgUkxfU0VUU1RBVEUoUkxfU1RBVEVfRE9ORSk7 CisrCSAgcmV0dXJuIChybF9kb25lID0gMSk7CisrI2Vsc2UKKysJICBlb2ZfZm91bmQgPSAxOwor KwkgIGJyZWFrOworKyNlbmRpZgorKwl9CisrCisgICAgICAgLyogRU9GIHR5cGVkIHRvIGEgbm9u LWJsYW5rIGxpbmUgaXMgYSA8Tkw+LiAqLworICAgICAgIGlmIChjID09IEVPRiAmJiBybF9lbmQp CisgCWMgPSBORVdMSU5FOworQEAgLTQ5OCw2ICs1NTAsNyBAQCByZWFkbGluZV9pbnRlcm5hbF9j aGFybG9vcCAoKQorIAorICAgICAgIGxhc3RjID0gYzsKKyAgICAgICBfcmxfZGlzcGF0Y2ggKCh1 bnNpZ25lZCBjaGFyKWMsIF9ybF9rZXltYXApOworKyAgICAgIFJMX0NIRUNLX1NJR05BTFMgKCk7 CisgCisgICAgICAgLyogSWYgdGhlcmUgd2FzIG5vIGNoYW5nZSBpbiBfcmxfbGFzdF9jb21tYW5k X3dhc19raWxsLCB0aGVuIG5vIGtpbGwKKyAJIGhhcyB0YWtlbiBwbGFjZS4gIE5vdGUgdGhhdCBp ZiBpbnB1dCBpcyBwZW5kaW5nIHdlIGFyZSByZWFkaW5nCitAQCAtNTc2LDcgKzYyOSw3IEBAIHZv aWQKKyBfcmxfa2V5c2VxX2N4dF9kaXNwb3NlIChjeHQpCisgICAgIF9ybF9rZXlzZXFfY3h0ICpj eHQ7CisgeworLSAgZnJlZSAoY3h0KTsKKysgIHhmcmVlIChjeHQpOworIH0KKyAKKyB2b2lkCitA QCAtNjE4LDcgKzY3MSw2IEBAIF9ybF9kaXNwYXRjaF9jYWxsYmFjayAoY3h0KQorICAgaW50IG5r ZXksIHI7CisgCisgICAvKiBGb3Igbm93ICovCistI2lmIDEKKyAgIC8qIFRoZSBmaXJzdCB0aW1l IHRoaXMgY29udGV4dCBpcyB1c2VkLCB3ZSB3YW50IHRvIHJlYWQgaW5wdXQgYW5kIGRpc3BhdGNo CisgICAgICBvbiBpdC4gIFdoZW4gdHJhdmVyc2luZyB0aGUgY2hhaW4gb2YgY29udGV4dHMgYmFj ayBgdXAnLCB3ZSB3YW50IHRvIHVzZQorICAgICAgdGhlIHZhbHVlIGZyb20gdGhlIG5leHQgY29u dGV4dCBkb3duLiAgV2UncmUgc2ltdWxhdGluZyByZWN1cnNpb24gdXNpbmcKK0BAIC02MjYsMTgg KzY3OCwyMiBAQCBfcmxfZGlzcGF0Y2hfY2FsbGJhY2sgKGN4dCkKKyAgIGlmICgoY3h0LT5mbGFn cyAmIEtTRVFfRElTUEFUQ0hFRCkgPT0gMCkKKyAgICAgeworICAgICAgIG5rZXkgPSBfcmxfc3Vi c2VxX2dldGNoYXIgKGN4dC0+b2tleSk7CisrICAgICAgaWYgKG5rZXkgPCAwKQorKwl7CisrCSAg X3JsX2Fib3J0X2ludGVybmFsICgpOworKwkgIHJldHVybiAtMTsKKysJfQorICAgICAgIHIgPSBf cmxfZGlzcGF0Y2hfc3Vic2VxIChua2V5LCBjeHQtPmRtYXAsIGN4dC0+c3Vic2VxX2FyZyk7Cisg ICAgICAgY3h0LT5mbGFncyB8PSBLU0VRX0RJU1BBVENIRUQ7CisgICAgIH0KKyAgIGVsc2UKKyAg ICAgciA9IGN4dC0+Y2hpbGR2YWw7CistI2Vsc2UKKy0gIHIgPSBfcmxfZGlzcGF0Y2hfc3Vic2Vx IChua2V5LCBjeHQtPmRtYXAsIGN4dC0+c3Vic2VxX2FyZyk7CistI2VuZGlmCisgCisgICAvKiBG b3Igbm93ICovCistICByID0gX3JsX3N1YnNlcV9yZXN1bHQgKHIsIGN4dC0+b2xkbWFwLCBjeHQt Pm9rZXksIChjeHQtPmZsYWdzICYgS1NFUV9TVUJTRVEpKTsKKysgIGlmIChyICE9IC0zKQkvKiBk b24ndCBkbyB0aGlzIGlmIHdlIGluZGljYXRlIHRoZXJlIHdpbGwgYmUgb3RoZXIgbWF0Y2hlcyAq LworKyAgICByID0gX3JsX3N1YnNlcV9yZXN1bHQgKHIsIGN4dC0+b2xkbWFwLCBjeHQtPm9rZXks IChjeHQtPmZsYWdzICYgS1NFUV9TVUJTRVEpKTsKKyAKKysgIFJMX0NIRUNLX1NJR05BTFMgKCk7 CisgICBpZiAociA9PSAwKQkJCS8qIHN1Y2Nlc3MhICovCisgICAgIHsKKyAgICAgICBfcmxfa2V5 c2VxX2NoYWluX2Rpc3Bvc2UgKCk7CitAQCAtNzI0LDYgKzc4MCw4IEBAIF9ybF9kaXNwYXRjaF9z dWJzZXEgKGtleSwgbWFwLCBnb3Rfc3Vic2VxKQorIAkgICAgIHJlbWVtYmVyIHRoZSBsYXN0IGNv bW1hbmQgZXhlY3V0ZWQgaW4gdGhpcyB2YXJpYWJsZS4gKi8KKyAJICBpZiAocmxfcGVuZGluZ19p bnB1dCA9PSAwICYmIG1hcFtrZXldLmZ1bmN0aW9uICE9IHJsX2RpZ2l0X2FyZ3VtZW50KQorIAkg ICAgcmxfbGFzdF9mdW5jID0gbWFwW2tleV0uZnVuY3Rpb247CisrCisrCSAgUkxfQ0hFQ0tfU0lH TkFMUyAoKTsKKyAJfQorICAgICAgIGVsc2UgaWYgKG1hcFtBTllPVEhFUktFWV0uZnVuY3Rpb24p CisgCXsKK0BAIC03NzgsNyArODM2LDcgQEAgX3JsX2Rpc3BhdGNoX3N1YnNlcSAoa2V5LCBtYXAs IGdvdF9zdWJzZXEpCisgCSAgICB7CisgCSAgICAgIC8qIFJldHVybiAwIG9ubHkgdGhlIGZpcnN0 IHRpbWUsIHRvIGluZGljYXRlIHN1Y2Nlc3MgdG8KKyAJCSBfcmxfY2FsbGJhY2tfcmVhZF9jaGFy LiAgVGhlIHJlc3Qgb2YgdGhlIHRpbWUsIHdlJ3JlIGNhbGxlZAorLQkJIGZyb20gX3JsX2Rpc3Bh dGNoX2NhbGxiYWNrLCBzbyB3ZSByZXR1cm4gMyB0byBpbmRpY2F0ZQorKwkJIGZyb20gX3JsX2Rp c3BhdGNoX2NhbGxiYWNrLCBzbyB3ZSByZXR1cm4gLTMgdG8gaW5kaWNhdGUKKyAJCSBzcGVjaWFs IGhhbmRsaW5nIGlzIG5lY2Vzc2FyeS4gKi8KKyAJICAgICAgciA9IFJMX0lTU1RBVEUgKFJMX1NU QVRFX01VTFRJS0VZKSA/IC0zIDogMDsKKyAJICAgICAgY3h0ID0gX3JsX2tleXNlcV9jeHRfYWxs b2MgKCk7CitAQCAtODQyLDcgKzkwMCw3IEBAIF9ybF9zdWJzZXFfcmVzdWx0IChyLCBtYXAsIGtl eSwgZ290X3N1YnNlcSkKKyAgIEtleW1hcCBtOworICAgaW50IHR5cGUsIG50OworICAgcmxfY29t bWFuZF9mdW5jX3QgKmZ1bmMsICpuZjsKKy0gIAorKworICAgaWYgKHIgPT0gLTIpCisgICAgIC8q IFdlIGRpZG4ndCBtYXRjaCBhbnl0aGluZywgYW5kIHRoZSBrZXltYXAgd2UncmUgaW5kZXhlZCBp bnRvCisgICAgICAgIHNoYWRvd2VkIGEgZnVuY3Rpb24gcHJldmlvdXNseSBib3VuZCB0byB0aGF0 IHByZWZpeC4gIENhbGwKK0BAIC0xMTE2LDYgKzExNzQsMTAgQEAgYmluZF9hcnJvd19rZXlzICgp CisgCisgI2lmIGRlZmluZWQgKFZJX01PREUpCisgICBiaW5kX2Fycm93X2tleXNfaW50ZXJuYWwg KHZpX21vdmVtZW50X2tleW1hcCk7CisrICAvKiBVbmJpbmQgdmlfbW92ZW1lbnRfa2V5bWFwW0VT Q10gdG8gYWxsb3cgdXNlcnMgdG8gcmVwZWF0ZWRseSBoaXQgRVNDCisrICAgICBpbiB2aSBjb21t YW5kIG1vZGUgd2hpbGUgc3RpbGwgYWxsb3dpbmcgdGhlIGFycm93IGtleXMgdG8gd29yay4gKi8K KysgIGlmICh2aV9tb3ZlbWVudF9rZXltYXBbRVNDXS50eXBlID09IElTS01BUCkKKysgICAgcmxf YmluZF9rZXlzZXFfaW5fbWFwICgiXDAzMyIsIChybF9jb21tYW5kX2Z1bmNfdCAqKU5VTEwsIHZp X21vdmVtZW50X2tleW1hcCk7CisgICBiaW5kX2Fycm93X2tleXNfaW50ZXJuYWwgKHZpX2luc2Vy dGlvbl9rZXltYXApOworICNlbmRpZgorIH0KKy0tLSBhL3JlYWRsaW5lL3JlYWRsaW5lLmgKKysr KyBiL3JlYWRsaW5lL3JlYWRsaW5lLmgKK0BAIC0xLDI0ICsxLDIzIEBACisgLyogUmVhZGxpbmUu aCAtLSB0aGUgbmFtZXMgb2YgZnVuY3Rpb25zIGNhbGxhYmxlIGZyb20gd2l0aGluIHJlYWRsaW5l LiAqLworIAorLS8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDA1IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk4Ny0yMDExIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRo IGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQor KyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQg aGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor LSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05V IFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg CistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0 aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxs ZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9m IHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAg IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRlZmluZWQgKF9SRUFETElO RV9IXykKKyAjZGVmaW5lIF9SRUFETElORV9IXworQEAgLTQwLDkgKzM5LDkgQEAgZXh0ZXJuICJD IiB7CisgI2VuZGlmCisgCisgLyogSGV4LWVuY29kZWQgUmVhZGxpbmUgdmVyc2lvbiBudW1iZXIu ICovCistI2RlZmluZSBSTF9SRUFETElORV9WRVJTSU9OCTB4MDUwMQkJLyogUmVhZGxpbmUgNS4x ICovCistI2RlZmluZSBSTF9WRVJTSU9OX01BSk9SCTUKKy0jZGVmaW5lIFJMX1ZFUlNJT05fTUlO T1IJMQorKyNkZWZpbmUgUkxfUkVBRExJTkVfVkVSU0lPTgkweDA2MDIJCS8qIFJlYWRsaW5lIDYu MiAqLworKyNkZWZpbmUgUkxfVkVSU0lPTl9NQUpPUgk2CisrI2RlZmluZSBSTF9WRVJTSU9OX01J Tk9SCTIKKyAKKyAvKiBSZWFkbGluZSBkYXRhIHN0cnVjdHVyZXMuICovCisgCitAQCAtOTYsNiAr OTUsNyBAQCBleHRlcm4gaW50IHJsX2ZvcndhcmRfd29yZCBQQVJBTVMoKGludCwgaW50KSk7Cisg ZXh0ZXJuIGludCBybF9iYWNrd2FyZF93b3JkIFBBUkFNUygoaW50LCBpbnQpKTsKKyBleHRlcm4g aW50IHJsX3JlZnJlc2hfbGluZSBQQVJBTVMoKGludCwgaW50KSk7CisgZXh0ZXJuIGludCBybF9j bGVhcl9zY3JlZW4gUEFSQU1TKChpbnQsIGludCkpOworK2V4dGVybiBpbnQgcmxfc2tpcF9jc2lf c2VxdWVuY2UgUEFSQU1TKChpbnQsIGludCkpOworIGV4dGVybiBpbnQgcmxfYXJyb3dfa2V5cyBQ QVJBTVMoKGludCwgaW50KSk7CisgCisgLyogQmluZGFibGUgY29tbWFuZHMgZm9yIGluc2VydGlu ZyBhbmQgZGVsZXRpbmcgdGV4dC4gKi8KK0BAIC0xNTEsNyArMTUxLDkgQEAgZXh0ZXJuIGludCBy bF9kdW1wX3ZhcmlhYmxlcyBQQVJBTVMoKGludCwgaW50KSk7CisgZXh0ZXJuIGludCBybF9jb21w bGV0ZSBQQVJBTVMoKGludCwgaW50KSk7CisgZXh0ZXJuIGludCBybF9wb3NzaWJsZV9jb21wbGV0 aW9ucyBQQVJBTVMoKGludCwgaW50KSk7CisgZXh0ZXJuIGludCBybF9pbnNlcnRfY29tcGxldGlv bnMgUEFSQU1TKChpbnQsIGludCkpOworK2V4dGVybiBpbnQgcmxfb2xkX21lbnVfY29tcGxldGUg UEFSQU1TKChpbnQsIGludCkpOworIGV4dGVybiBpbnQgcmxfbWVudV9jb21wbGV0ZSBQQVJBTVMo KGludCwgaW50KSk7CisrZXh0ZXJuIGludCBybF9iYWNrd2FyZF9tZW51X2NvbXBsZXRlIFBBUkFN UygoaW50LCBpbnQpKTsKKyAKKyAvKiBCaW5kYWJsZSBjb21tYW5kcyBmb3Iga2lsbGluZyBhbmQg eWFua2luZyB0ZXh0LCBhbmQgbWFuYWdpbmcgdGhlIGtpbGwgcmluZy4gKi8KKyBleHRlcm4gaW50 IHJsX2tpbGxfd29yZCBQQVJBTVMoKGludCwgaW50KSk7CitAQCAtMjMzLDYgKzIzNSw3IEBAIGV4 dGVybiBpbnQgcmxfdmlfYXBwZW5kX21vZGUgUEFSQU1TKChpbnQsIGludCkpOworIGV4dGVybiBp bnQgcmxfdmlfYXBwZW5kX2VvbCBQQVJBTVMoKGludCwgaW50KSk7CisgZXh0ZXJuIGludCBybF92 aV9lb2ZfbWF5YmUgUEFSQU1TKChpbnQsIGludCkpOworIGV4dGVybiBpbnQgcmxfdmlfaW5zZXJ0 aW9uX21vZGUgUEFSQU1TKChpbnQsIGludCkpOworK2V4dGVybiBpbnQgcmxfdmlfaW5zZXJ0X21v ZGUgUEFSQU1TKChpbnQsIGludCkpOworIGV4dGVybiBpbnQgcmxfdmlfbW92ZW1lbnRfbW9kZSBQ QVJBTVMoKGludCwgaW50KSk7CisgZXh0ZXJuIGludCBybF92aV9hcmdfZGlnaXQgUEFSQU1TKChp bnQsIGludCkpOworIGV4dGVybiBpbnQgcmxfdmlfY2hhbmdlX2Nhc2UgUEFSQU1TKChpbnQsIGlu dCkpOworQEAgLTQyMCw2ICs0MjMsNyBAQCBleHRlcm4gaW50IHJsX3NldF9rZXlib2FyZF9pbnB1 dF90aW1lb3V0IFBBUkFNUygoaW50KSk7CisgZXh0ZXJuIHZvaWQgcmxfZXh0ZW5kX2xpbmVfYnVm ZmVyIFBBUkFNUygoaW50KSk7CisgZXh0ZXJuIGludCBybF9kaW5nIFBBUkFNUygodm9pZCkpOwor IGV4dGVybiBpbnQgcmxfYWxwaGFiZXRpYyBQQVJBTVMoKGludCkpOworK2V4dGVybiB2b2lkIHJs X2ZyZWUgUEFSQU1TKCh2b2lkICopKTsKKyAKKyAvKiBSZWFkbGluZSBzaWduYWwgaGFuZGxpbmcs IGZyb20gc2lnbmFscy5jICovCisgZXh0ZXJuIGludCBybF9zZXRfc2lnbmFscyBQQVJBTVMoKHZv aWQpKTsKK0BAIC00MjcsNyArNDMxLDkgQEAgZXh0ZXJuIGludCBybF9jbGVhcl9zaWduYWxzIFBB UkFNUygodm9pZCkpOworIGV4dGVybiB2b2lkIHJsX2NsZWFudXBfYWZ0ZXJfc2lnbmFsIFBBUkFN Uygodm9pZCkpOworIGV4dGVybiB2b2lkIHJsX3Jlc2V0X2FmdGVyX3NpZ25hbCBQQVJBTVMoKHZv aWQpKTsKKyBleHRlcm4gdm9pZCBybF9mcmVlX2xpbmVfc3RhdGUgUEFSQU1TKCh2b2lkKSk7Cist IAorKworK2V4dGVybiB2b2lkIHJsX2VjaG9fc2lnbmFsX2NoYXIgUEFSQU1TKChpbnQpKTsgCisr CisgZXh0ZXJuIGludCBybF9zZXRfcGFyZW5fYmxpbmtfdGltZW91dCBQQVJBTVMoKGludCkpOwor IAorIC8qIFVuZG9jdW1lbnRlZC4gKi8KK0BAIC00OTMsNiArNDk5LDEwIEBAIGV4dGVybiBjb25z dCBjaGFyICpybF9yZWFkbGluZV9uYW1lOworICAgIHJlYWRsaW5lICgpLCBhbmQgc2hvdWxkIG5v dCBiZSBhc3NpZ25lZCB0byBkaXJlY3RseS4gKi8KKyBleHRlcm4gY2hhciAqcmxfcHJvbXB0Owor IAorKy8qIFRoZSBwcm9tcHQgc3RyaW5nIHRoYXQgaXMgYWN0dWFsbHkgZGlzcGxheWVkIGJ5IHJs X3JlZGlzcGxheS4gIFB1YmxpYyBzbworKyAgIGFwcGxpY2F0aW9ucyBjYW4gbW9yZSBlYXNpbHkg c3VwcGx5IHRoZWlyIG93biByZWRpc3BsYXkgZnVuY3Rpb25zLiAqLworK2V4dGVybiBjaGFyICpy bF9kaXNwbGF5X3Byb21wdDsKKysKKyAvKiBUaGUgbGluZSBidWZmZXIgdGhhdCBpcyBpbiB1c2Uu ICovCisgZXh0ZXJuIGNoYXIgKnJsX2xpbmVfYnVmZmVyOworIAorQEAgLTU5OSw2ICs2MDksMTAg QEAgZXh0ZXJuIGludCBybF9jYXRjaF9zaWd3aW5jaDsKKyAgICBmaWxlbmFtZSBjb21wbGV0ZXIu ICovCisgZXh0ZXJuIHJsX2NvbXBlbnRyeV9mdW5jX3QgKnJsX2NvbXBsZXRpb25fZW50cnlfZnVu Y3Rpb247CisgCisrLyogT3B0aW9uYWwgZ2VuZXJhdG9yIGZvciBtZW51IGNvbXBsZXRpb24uICBE ZWZhdWx0IGlzCisrICAgcmxfY29tcGxldGlvbl9lbnRyeV9mdW5jdGlvbiAocmxfZmlsZW5hbWVf Y29tcGxldGlvbl9mdW5jdGlvbikuICovCisrIGV4dGVybiBybF9jb21wZW50cnlfZnVuY190ICpy bF9tZW51X2NvbXBsZXRpb25fZW50cnlfZnVuY3Rpb247CisrCisgLyogSWYgcmxfaWdub3JlX3Nv bWVfY29tcGxldGlvbnNfZnVuY3Rpb24gaXMgbm9uLU5VTEwgaXQgaXMgdGhlIGFkZHJlc3MKKyAg ICBvZiBhIGZ1bmN0aW9uIHRvIGNhbGwgYWZ0ZXIgYWxsIG9mIHRoZSBwb3NzaWJsZSBtYXRjaGVz IGhhdmUgYmVlbgorICAgIGdlbmVyYXRlZCwgYnV0IGJlZm9yZSB0aGUgYWN0dWFsIGNvbXBsZXRp b24gaXMgZG9uZSB0byB0aGUgaW5wdXQgbGluZS4KK0BAIC02NTIsMTggKzY2NiwzNyBAQCBleHRl cm4gY29uc3QgY2hhciAqcmxfc3BlY2lhbF9wcmVmaXhlczsKKyAgICBjb21wbGV0aW5nIG9uIGEg ZGlyZWN0b3J5IG5hbWUuICBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGgKKyAgICB0aGUgYWRk cmVzcyBvZiBhIHN0cmluZyAodGhlIGN1cnJlbnQgZGlyZWN0b3J5IG5hbWUpIGFzIGFuIGFyZy4g IEl0CisgICAgY2hhbmdlcyB3aGF0IGlzIGRpc3BsYXllZCB3aGVuIHRoZSBwb3NzaWJsZSBjb21w bGV0aW9ucyBhcmUgcHJpbnRlZAorLSAgIG9yIGluc2VydGVkLiAqLworKyAgIG9yIGluc2VydGVk LiAgVGhlIGRpcmVjdG9yeSBjb21wbGV0aW9uIGhvb2sgc2hvdWxkIHBlcmZvcm0KKysgICBhbnkg bmVjZXNzYXJ5IGRlcXVvdGluZy4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiAxIGlmIGl0 IG1vZGlmaWVzCisrICAgdGhlIGRpcmVjdG9yeSBuYW1lIHBvaW50ZXIgcGFzc2VkIGFzIGFuIGFy Z3VtZW50LiAgSWYgdGhlIGRpcmVjdG9yeQorKyAgIGNvbXBsZXRpb24gaG9vayByZXR1cm5zIDAs IGl0IHNob3VsZCBub3QgbW9kaWZ5IHRoZSBkaXJlY3RvcnkgbmFtZQorKyAgIHBvaW50ZXIgcGFz c2VkIGFzIGFuIGFyZ3VtZW50LiAqLworIGV4dGVybiBybF9pY3BwZnVuY190ICpybF9kaXJlY3Rv cnlfY29tcGxldGlvbl9ob29rOworIAorIC8qIElmIG5vbi16ZXJvLCB0aGlzIGlzIHRoZSBhZGRy ZXNzIG9mIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIGNvbXBsZXRpbmcKKyAgICBhIGRpcmVjdG9y eSBuYW1lLiAgVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgYWRkcmVzcyBvZiB0aGUgZGlyZWN0b3J5 IG5hbWUKKyAgICB0byBiZSBtb2RpZmllZCBhcyBhbiBhcmd1bWVudC4gIFVubGlrZSBybF9kaXJl Y3RvcnlfY29tcGxldGlvbl9ob29rLCBpdAorICAgIG9ubHkgbW9kaWZpZXMgdGhlIGRpcmVjdG9y eSBuYW1lIHVzZWQgaW4gb3BlbmRpcigyKSwgbm90IHdoYXQgaXMgZGlzcGxheWVkCistICAgd2hl biB0aGUgcG9zc2libGUgY29tcGxldGlvbnMgYXJlIHByaW50ZWQgb3IgaW5zZXJ0ZWQuICBJdCBp cyBjYWxsZWQKKy0gICBiZWZvcmUgcmxfZGlyZWN0b3J5X2NvbXBsZXRpb25faG9vay4gIEknbSBu b3QgaGFwcHkgd2l0aCBob3cgdGhpcyB3b3JrcworLSAgIHlldCwgc28gaXQncyB1bmRvY3VtZW50 ZWQuICovCisrICAgd2hlbiB0aGUgcG9zc2libGUgY29tcGxldGlvbnMgYXJlIHByaW50ZWQgb3Ig aW5zZXJ0ZWQuICBJZiBzZXQsIGl0IHRha2VzCisrICAgcHJlY2VkZW5jZSBvdmVyIHJsX2RpcmVj dG9yeV9jb21wbGV0aW9uX2hvb2suICBUaGUgZGlyZWN0b3J5IHJld3JpdGUKKysgICBob29rIHNo b3VsZCBwZXJmb3JtIGFueSBuZWNlc3NhcnkgZGVxdW90aW5nLiAgVGhpcyBmdW5jdGlvbiBoYXMg dGhlIHNhbWUKKysgICByZXR1cm4gdmFsdWUgcHJvcGVydGllcyBhcyB0aGUgZGlyZWN0b3J5X2Nv bXBsZXRpb25faG9vay4KKysKKysgICBJJ20gbm90IGhhcHB5IHdpdGggaG93IHRoaXMgd29ya3Mg eWV0LCBzbyBpdCdzIHVuZG9jdW1lbnRlZC4gIEknbSB0cnlpbmcKKysgICBpdCBpbiBiYXNoIHRv IHNlZSBob3cgd2VsbCBpdCBnb2VzLiAqLworIGV4dGVybiBybF9pY3BwZnVuY190ICpybF9kaXJl Y3RvcnlfcmV3cml0ZV9ob29rOworIAorKy8qIElmIG5vbi16ZXJvLCB0aGlzIGlzIHRoZSBhZGRy ZXNzIG9mIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHJlYWRpbmcKKysgICBkaXJlY3RvcnkgZW50 cmllcyBmcm9tIHRoZSBmaWxlc3lzdGVtIGZvciBjb21wbGV0aW9uIGFuZCBjb21wYXJpbmcKKysg ICB0aGVtIHRvIHRoZSBwYXJ0aWFsIHdvcmQgdG8gYmUgY29tcGxldGVkLiAgVGhlIGZ1bmN0aW9u IHNob3VsZAorKyAgIGVpdGhlciByZXR1cm4gaXRzIGZpcnN0IGFyZ3VtZW50IChpZiBubyBjb252 ZXJzaW9uIHRha2VzIHBsYWNlKSBvcgorKyAgIG5ld2x5LWFsbG9jYXRlZCBtZW1vcnkuICBUaGlz IGNhbiwgZm9yIGluc3RhbmNlLCBjb252ZXJ0IGZpbGVuYW1lcworKyAgIGJldHdlZW4gY2hhcmFj dGVyIHNldHMgZm9yIGNvbXBhcmlzb24gYWdhaW5zdCB3aGF0J3MgdHlwZWQgYXQgdGhlCisrICAg a2V5Ym9hcmQuICBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgd2hhdCBpcyBhZGRlZCB0byB0aGUgbGlz dCBvZgorKyAgIG1hdGNoZXMuICBUaGUgc2Vjb25kIGFyZ3VtZW50IGlzIHRoZSBsZW5ndGggb2Yg dGhlIGZpbGVuYW1lIHRvIGJlCisrICAgY29udmVydGVkLiAqLworK2V4dGVybiBybF9kZXF1b3Rl X2Z1bmNfdCAqcmxfZmlsZW5hbWVfcmV3cml0ZV9ob29rOworKworIC8qIEJhY2t3YXJkcyBjb21w YXRpYmlsaXR5IHdpdGggcHJldmlvdXMgdmVyc2lvbnMgb2YgcmVhZGxpbmUuICovCisgI2RlZmlu ZSBybF9zeW1ib2xpY19saW5rX2hvb2sgcmxfZGlyZWN0b3J5X2NvbXBsZXRpb25faG9vaworIAor QEAgLTcxMyw2ICs3NDYsOSBAQCBleHRlcm4gaW50IHJsX2F0dGVtcHRlZF9jb21wbGV0aW9uX292 ZXI7CisgICAgZnVuY3Rpb25zLiAqLworIGV4dGVybiBpbnQgcmxfY29tcGxldGlvbl90eXBlOwor IAorKy8qIFNldCB0byB0aGUgbGFzdCBrZXkgdXNlZCB0byBpbnZva2Ugb25lIG9mIHRoZSBjb21w bGV0aW9uIGZ1bmN0aW9ucyAqLworK2V4dGVybiBpbnQgcmxfY29tcGxldGlvbl9pbnZva2luZ19r ZXk7CisrCisgLyogVXAgdG8gdGhpcyBtYW55IGl0ZW1zIHdpbGwgYmUgZGlzcGxheWVkIGluIHJl c3BvbnNlIHRvIGEKKyAgICBwb3NzaWJsZS1jb21wbGV0aW9ucyBjYWxsLiAgQWZ0ZXIgdGhhdCwg d2UgYXNrIHRoZSB1c2VyIGlmIHNoZQorICAgIGlzIHN1cmUgc2hlIHdhbnRzIHRvIHNlZSB0aGVt IGFsbC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEwMC4gKi8KK0BAIC03MzksNiArNzc1LDkgQEAg ZXh0ZXJuIGludCBybF9jb21wbGV0aW9uX2ZvdW5kX3F1b3RlOworICAgIGFwcGxpY2F0aW9uLXNw ZWNpZmljIGNvbXBsZXRpb24gZnVuY3Rpb24uICovCisgZXh0ZXJuIGludCBybF9jb21wbGV0aW9u X3N1cHByZXNzX3F1b3RlOworIAorKy8qIElmIG5vbi16ZXJvLCByZWFkbGluZSB3aWxsIHNvcnQg dGhlIGNvbXBsZXRpb24gbWF0Y2hlcy4gIE9uIGJ5IGRlZmF1bHQuICovCisrZXh0ZXJuIGludCBy bF9zb3J0X2NvbXBsZXRpb25fbWF0Y2hlczsKKysKKyAvKiBJZiBub24temVybywgYSBzbGFzaCB3 aWxsIGJlIGFwcGVuZGVkIHRvIGNvbXBsZXRlZCBmaWxlbmFtZXMgdGhhdCBhcmUKKyAgICBzeW1i b2xpYyBsaW5rcyB0byBkaXJlY3RvcnkgbmFtZXMsIHN1YmplY3QgdG8gdGhlIHZhbHVlIG9mIHRo ZQorICAgIG1hcmstZGlyZWN0b3JpZXMgdmFyaWFibGUgKHdoaWNoIGlzIHVzZXItc2V0dGFibGUp LiAgVGhpcyBleGlzdHMgc28KK0BAIC03NTcsNiArNzk2LDEwIEBAIGV4dGVybiBpbnQgcmxfaWdu b3JlX2NvbXBsZXRpb25fZHVwbGljYXRlczsKKyAgICBjb21wbGV0aW9uIGNoYXJhY3RlciB3aWxs IGJlIGluc2VydGVkIGFzIGFueSBvdGhlci4gKi8KKyBleHRlcm4gaW50IHJsX2luaGliaXRfY29t cGxldGlvbjsKKyAKKysvKiBJbnB1dCBlcnJvcjsgY2FuIGJlIHJldHVybmVkIGJ5ICgqcmxfZ2V0 Y19mdW5jdGlvbikgaWYgcmVhZGxpbmUgaXMgcmVhZGluZworKyAgIGEgdG9wLWxldmVsIGNvbW1h bmQgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX1JFQURDTUQpKS4gKi8KKysjZGVmaW5lIFJFQURFUlIJ CQkoLTIpCisrCisgLyogRGVmaW5pdGlvbnMgYXZhaWxhYmxlIGZvciB1c2UgYnkgcmVhZGxpbmUg Y2xpZW50cy4gKi8KKyAjZGVmaW5lIFJMX1BST01QVF9TVEFSVF9JR05PUkUJJ1wwMDEnCisgI2Rl ZmluZSBSTF9QUk9NUFRfRU5EX0lHTk9SRQknXDAwMicKK0BAIC03NzAsMzEgKzgxMywzMiBAQCBl eHRlcm4gaW50IHJsX2luaGliaXRfY29tcGxldGlvbjsKKyAvKiBQb3NzaWJsZSBzdGF0ZSB2YWx1 ZXMgZm9yIHJsX3JlYWRsaW5lX3N0YXRlICovCisgI2RlZmluZSBSTF9TVEFURV9OT05FCQkweDAw MDAwMAkJLyogbm8gc3RhdGU7IGJlZm9yZSBmaXJzdCBjYWxsICovCisgCistI2RlZmluZSBSTF9T VEFURV9JTklUSUFMSVpJTkcJMHgwMDAwMDEJLyogaW5pdGlhbGl6aW5nICovCistI2RlZmluZSBS TF9TVEFURV9JTklUSUFMSVpFRAkweDAwMDAwMgkvKiBpbml0aWFsaXphdGlvbiBkb25lICovCist I2RlZmluZSBSTF9TVEFURV9URVJNUFJFUFBFRAkweDAwMDAwNAkvKiB0ZXJtaW5hbCBpcyBwcmVw cGVkICovCistI2RlZmluZSBSTF9TVEFURV9SRUFEQ01ECTB4MDAwMDA4CS8qIHJlYWRpbmcgYSBj b21tYW5kIGtleSAqLworLSNkZWZpbmUgUkxfU1RBVEVfTUVUQU5FWFQJMHgwMDAwMTAJLyogcmVh ZGluZyBpbnB1dCBhZnRlciBFU0MgKi8KKy0jZGVmaW5lIFJMX1NUQVRFX0RJU1BBVENISU5HCTB4 MDAwMDIwCS8qIGRpc3BhdGNoaW5nIHRvIGEgY29tbWFuZCAqLworLSNkZWZpbmUgUkxfU1RBVEVf TU9SRUlOUFVUCTB4MDAwMDQwCS8qIHJlYWRpbmcgbW9yZSBpbnB1dCBpbiBhIGNvbW1hbmQgZnVu Y3Rpb24gKi8KKy0jZGVmaW5lIFJMX1NUQVRFX0lTRUFSQ0gJMHgwMDAwODAJLyogZG9pbmcgaW5j cmVtZW50YWwgc2VhcmNoICovCistI2RlZmluZSBSTF9TVEFURV9OU0VBUkNICTB4MDAwMTAwCS8q IGRvaW5nIG5vbi1pbmMgc2VhcmNoICovCistI2RlZmluZSBSTF9TVEFURV9TRUFSQ0gJCTB4MDAw MjAwCS8qIGRvaW5nIGEgaGlzdG9yeSBzZWFyY2ggKi8KKy0jZGVmaW5lIFJMX1NUQVRFX05VTUVS SUNBUkcJMHgwMDA0MDAJLyogcmVhZGluZyBudW1lcmljIGFyZ3VtZW50ICovCistI2RlZmluZSBS TF9TVEFURV9NQUNST0lOUFVUCTB4MDAwODAwCS8qIGdldHRpbmcgaW5wdXQgZnJvbSBhIG1hY3Jv ICovCistI2RlZmluZSBSTF9TVEFURV9NQUNST0RFRgkweDAwMTAwMAkvKiBkZWZpbmluZyBrZXli b2FyZCBtYWNybyAqLworLSNkZWZpbmUgUkxfU1RBVEVfT1ZFUldSSVRFCTB4MDAyMDAwCS8qIG92 ZXJ3cml0ZSBtb2RlICovCistI2RlZmluZSBSTF9TVEFURV9DT01QTEVUSU5HCTB4MDA0MDAwCS8q IGRvaW5nIGNvbXBsZXRpb24gKi8KKy0jZGVmaW5lIFJMX1NUQVRFX1NJR0hBTkRMRVIJMHgwMDgw MDAJLyogaW4gcmVhZGxpbmUgc2lnaGFuZGxlciAqLworLSNkZWZpbmUgUkxfU1RBVEVfVU5ET0lO RwkweDAxMDAwMAkvKiBkb2luZyBhbiB1bmRvICovCistI2RlZmluZSBSTF9TVEFURV9JTlBVVFBF TkRJTkcJMHgwMjAwMDAJLyogcmxfZXhlY3V0ZV9uZXh0IGNhbGxlZCAqLworLSNkZWZpbmUgUkxf U1RBVEVfVFRZQ1NBVkVECTB4MDQwMDAwCS8qIHR0eSBzcGVjaWFsIGNoYXJzIHNhdmVkICovCist I2RlZmluZSBSTF9TVEFURV9DQUxMQkFDSwkweDA4MDAwMAkvKiB1c2luZyB0aGUgY2FsbGJhY2sg aW50ZXJmYWNlICovCistI2RlZmluZSBSTF9TVEFURV9WSU1PVElPTgkweDEwMDAwMAkvKiByZWFk aW5nIHZpIG1vdGlvbiBhcmcgKi8KKy0jZGVmaW5lIFJMX1NUQVRFX01VTFRJS0VZCTB4MjAwMDAw CS8qIHJlYWRpbmcgbXVsdGlwbGUta2V5IGNvbW1hbmQgKi8KKy0jZGVmaW5lIFJMX1NUQVRFX1ZJ Q01ET05DRQkweDQwMDAwMAkvKiBlbnRlcmVkIHZpIGNvbW1hbmQgbW9kZSBhdCBsZWFzdCBvbmNl ICovCistCistI2RlZmluZSBSTF9TVEFURV9ET05FCQkweDgwMDAwMAkvKiBkb25lOyBhY2NlcHRl ZCBsaW5lICovCisrI2RlZmluZSBSTF9TVEFURV9JTklUSUFMSVpJTkcJMHgwMDAwMDAxCS8qIGlu aXRpYWxpemluZyAqLworKyNkZWZpbmUgUkxfU1RBVEVfSU5JVElBTElaRUQJMHgwMDAwMDAyCS8q IGluaXRpYWxpemF0aW9uIGRvbmUgKi8KKysjZGVmaW5lIFJMX1NUQVRFX1RFUk1QUkVQUEVECTB4 MDAwMDAwNAkvKiB0ZXJtaW5hbCBpcyBwcmVwcGVkICovCisrI2RlZmluZSBSTF9TVEFURV9SRUFE Q01ECTB4MDAwMDAwOAkvKiByZWFkaW5nIGEgY29tbWFuZCBrZXkgKi8KKysjZGVmaW5lIFJMX1NU QVRFX01FVEFORVhUCTB4MDAwMDAxMAkvKiByZWFkaW5nIGlucHV0IGFmdGVyIEVTQyAqLworKyNk ZWZpbmUgUkxfU1RBVEVfRElTUEFUQ0hJTkcJMHgwMDAwMDIwCS8qIGRpc3BhdGNoaW5nIHRvIGEg Y29tbWFuZCAqLworKyNkZWZpbmUgUkxfU1RBVEVfTU9SRUlOUFVUCTB4MDAwMDA0MAkvKiByZWFk aW5nIG1vcmUgaW5wdXQgaW4gYSBjb21tYW5kIGZ1bmN0aW9uICovCisrI2RlZmluZSBSTF9TVEFU RV9JU0VBUkNICTB4MDAwMDA4MAkvKiBkb2luZyBpbmNyZW1lbnRhbCBzZWFyY2ggKi8KKysjZGVm aW5lIFJMX1NUQVRFX05TRUFSQ0gJMHgwMDAwMTAwCS8qIGRvaW5nIG5vbi1pbmMgc2VhcmNoICov CisrI2RlZmluZSBSTF9TVEFURV9TRUFSQ0gJCTB4MDAwMDIwMAkvKiBkb2luZyBhIGhpc3Rvcnkg c2VhcmNoICovCisrI2RlZmluZSBSTF9TVEFURV9OVU1FUklDQVJHCTB4MDAwMDQwMAkvKiByZWFk aW5nIG51bWVyaWMgYXJndW1lbnQgKi8KKysjZGVmaW5lIFJMX1NUQVRFX01BQ1JPSU5QVVQJMHgw MDAwODAwCS8qIGdldHRpbmcgaW5wdXQgZnJvbSBhIG1hY3JvICovCisrI2RlZmluZSBSTF9TVEFU RV9NQUNST0RFRgkweDAwMDEwMDAJLyogZGVmaW5pbmcga2V5Ym9hcmQgbWFjcm8gKi8KKysjZGVm aW5lIFJMX1NUQVRFX09WRVJXUklURQkweDAwMDIwMDAJLyogb3ZlcndyaXRlIG1vZGUgKi8KKysj ZGVmaW5lIFJMX1NUQVRFX0NPTVBMRVRJTkcJMHgwMDA0MDAwCS8qIGRvaW5nIGNvbXBsZXRpb24g Ki8KKysjZGVmaW5lIFJMX1NUQVRFX1NJR0hBTkRMRVIJMHgwMDA4MDAwCS8qIGluIHJlYWRsaW5l IHNpZ2hhbmRsZXIgKi8KKysjZGVmaW5lIFJMX1NUQVRFX1VORE9JTkcJMHgwMDEwMDAwCS8qIGRv aW5nIGFuIHVuZG8gKi8KKysjZGVmaW5lIFJMX1NUQVRFX0lOUFVUUEVORElORwkweDAwMjAwMDAJ LyogcmxfZXhlY3V0ZV9uZXh0IGNhbGxlZCAqLworKyNkZWZpbmUgUkxfU1RBVEVfVFRZQ1NBVkVE CTB4MDA0MDAwMAkvKiB0dHkgc3BlY2lhbCBjaGFycyBzYXZlZCAqLworKyNkZWZpbmUgUkxfU1RB VEVfQ0FMTEJBQ0sJMHgwMDgwMDAwCS8qIHVzaW5nIHRoZSBjYWxsYmFjayBpbnRlcmZhY2UgKi8K KysjZGVmaW5lIFJMX1NUQVRFX1ZJTU9USU9OCTB4MDEwMDAwMAkvKiByZWFkaW5nIHZpIG1vdGlv biBhcmcgKi8KKysjZGVmaW5lIFJMX1NUQVRFX01VTFRJS0VZCTB4MDIwMDAwMAkvKiByZWFkaW5n IG11bHRpcGxlLWtleSBjb21tYW5kICovCisrI2RlZmluZSBSTF9TVEFURV9WSUNNRE9OQ0UJMHgw NDAwMDAwCS8qIGVudGVyZWQgdmkgY29tbWFuZCBtb2RlIGF0IGxlYXN0IG9uY2UgKi8KKysjZGVm aW5lIFJMX1NUQVRFX1JFRElTUExBWUlORwkweDA4MDAwMDAJLyogdXBkYXRpbmcgdGVybWluYWwg ZGlzcGxheSAqLworKworKyNkZWZpbmUgUkxfU1RBVEVfRE9ORQkJMHgxMDAwMDAwCS8qIGRvbmU7 IGFjY2VwdGVkIGxpbmUgKi8KKyAKKyAjZGVmaW5lIFJMX1NFVFNUQVRFKHgpCQkocmxfcmVhZGxp bmVfc3RhdGUgfD0gKHgpKQorICNkZWZpbmUgUkxfVU5TRVRTVEFURSh4KQkocmxfcmVhZGxpbmVf c3RhdGUgJj0gfih4KSkKKy0tLSBhL3JlYWRsaW5lL3JsY29uZi5oCisrKysgYi9yZWFkbGluZS9y bGNvbmYuaAorQEAgLTEsMjUgKzEsMjMgQEAKKyAvKiBybGNvbmYuaCAtLSByZWFkbGluZSBjb25m aWd1cmF0aW9uIGRlZmluaXRpb25zICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTk0IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk5Mi0yMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBjb250YWlucyB0 aGUgUmVhZGxpbmUgTGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgorLSAgIHJvdXRpbmVz IGZvciBwcm92aWRpbmcgRW1hY3Mgc3R5bGUgbGluZSBpbnB1dCB0byBwcm9ncmFtcyB0aGF0IGFz aworLSAgIGZvciBpdC4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5l IExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2Yg dGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisg CistICAgVGhlIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9w dGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIExpYnJhcnkgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CistICAgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VCistICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJh bGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8g bm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGlu ZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAor ICNpZiAhZGVmaW5lZCAoX1JMQ09ORl9IXykKKyAjZGVmaW5lIF9STENPTkZfSF8KK0BAIC0zNyw5 ICszNSwxMiBAQAorIC8qIFVnbHkgYnV0IHdvcmtpbmcgaGFjayBmb3IgYmluZGluZyBwcmVmaXgg bWV0YS4gKi8KKyAjZGVmaW5lIFBSRUZJWF9NRVRBX0hBQ0sKKyAKKy0vKiBUaGUgZmluYWwsIGxh c3QtZGl0Y2ggZWZmb3J0IGZpbGUgbmFtZSBmb3IgYW4gaW5pdCBmaWxlLiAqLworKy8qIFRoZSBu ZXh0LXRvLWxhc3QtZGl0Y2ggZWZmb3J0IGZpbGUgbmFtZSBmb3IgYSB1c2VyLXNwZWNpZmljIGlu aXQgZmlsZS4gKi8KKyAjZGVmaW5lIERFRkFVTFRfSU5QVVRSQyAifi8uaW5wdXRyYyIKKyAKKysv KiBUaGUgdWx0aW1hdGUgbGFzdC1kaXRjaCBmaWxlbm5hbWUgZm9yIGFuIGluaXQgZmlsZSAtLSBz eXN0ZW0td2lkZS4gKi8KKysjZGVmaW5lIFNZU19JTlBVVFJDICIvZXRjL2lucHV0cmMiCisrCisg LyogSWYgZGVmaW5lZCwgZXhwYW5kIHRhYnMgdG8gc3BhY2VzLiAqLworICNkZWZpbmUgRElTUExB WV9UQUJTCisgCistLS0gYS9yZWFkbGluZS9ybGRlZnMuaAorKysrIGIvcmVhZGxpbmUvcmxkZWZz LmgKK0BAIC0yLDI2ICsyLDI0IEBACisgICAgZm9yIHJlYWRsaW5lLiAgVGhpcyBzaG91bGQgYmUg aW5jbHVkZWQgYWZ0ZXIgYW55IGZpbGVzIHRoYXQgZGVmaW5lCisgICAgc3lzdGVtLXNwZWNpZmlj IGNvbnN0YW50cyBsaWtlIF9QT1NJWF9WRVJTSU9OIG9yIFVTRy4gKi8KKyAKKy0vKiBDb3B5cmln aHQgKEMpIDE5ODctMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5 cmlnaHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0g ICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIFJlYWRsaW5lIExpYnJhcnkgKHRoZSBMaWJyYXJ5KSwg YSBzZXQgb2YKKy0gICByb3V0aW5lcyBmb3IgcHJvdmlkaW5nIEVtYWNzIHN0eWxlIGxpbmUgaW5w dXQgdG8gcHJvZ3JhbXMgdGhhdCBhc2sKKy0gICBmb3IgaXQuCisrICAgVGhpcyBmaWxlIGlzIHBh cnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAg IGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlz dG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBSZWFkbGluZSBpcyBm cmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCisrICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAg IFRoZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsIGJ1dAorLSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorLSAgIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdh cmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBv ciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNl LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQ bGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRlZmluZWQgKF9STERFRlNfSF8pCisgI2RlZmlu ZSBfUkxERUZTX0hfCitAQCAtMzIsNiArMzAsMTAgQEAKKyAKKyAjaW5jbHVkZSAicmxzdGRjLmgi CisgCisrI2lmIGRlZmluZWQgKFNUUkNPTExfQlJPS0VOKQorKyMgIHVuZGVmIEhBVkVfU1RSQ09M TAorKyNlbmRpZgorKworICNpZiBkZWZpbmVkIChfUE9TSVhfVkVSU0lPTikgJiYgIWRlZmluZWQg KFRFUk1JT1NfTUlTU0lORykKKyAjICBkZWZpbmUgVEVSTUlPU19UVFlfRFJJVkVSCisgI2Vsc2UK Ky0tLSBhL3JlYWRsaW5lL3JsbWJ1dGlsLmgKKysrKyBiL3JlYWRsaW5lL3JsbWJ1dGlsLmgKK0BA IC0xLDI0ICsxLDIzIEBACisgLyogcmxtYnV0aWwuaCAtLSB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Ig bXVsdGlieXRlIGNoYXJhY3RlcnMuICovCisgCistLyogQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAz IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMjAwMS0y MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRp bmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRp bmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChS ZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBp bnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBH TlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUg c29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysg ICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxs eSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5v dAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24s IE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUu ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAj aWYgIWRlZmluZWQgKF9STF9NQlVUSUxfSF8pCisgI2RlZmluZSBfUkxfTUJVVElMX0hfCitAQCAt MzAsMjIgKzI5LDIxIEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKyAKKyAvKiBGb3IgcGxhdGZvcm1zIHdoaWNoIHN1cHBvcnQgdGhlIElTTyBD IGFtZW5kZW1lbnQgMSBmdW5jdGlvbmFsaXR5IHdlCistICAgc3VwcG9ydCB1c2VyIGRlZmluZWQg Y2hhcmFjdGVyIGNsYXNzZXMuCistCistICAgU29tZSBwbGF0Zm9ybXMgaGF2ZSB0aGUgbXVsdGli eXRlIGZ1bmN0aW9ucyBzdWNoIGFzIG1ic3J0b3djcyBidXQKKy0gICBhcmUgbGFja2luZyB0aGUg bXVsdGl0eXBlIHR5cGUgbWJzdGF0ZV90LiAgQmVPUyAodW5rbm93biB2ZXJzaW9uKQorLSAgIGFu ZCBIUC9VWCAxMS4yMyB3aXRob3V0IF9YT1BFTl9TT1VSQ0U9NTAwIGFyZSBsaWtlIHRoaXMuCist CistICAgV2UgcmVhbGx5IG5lZWQgbWJzdGF0ZV90IHR5cGUgdG8gb3BlcmF0ZSBwcm9wZXJseS4g IEZvciBleGFtcGxlLCBzZWUKKy0gICBjb21wdXRlX2xjZF9vZl9tYXRjaGVzLCB3aGVyZSB0d28g bWJzdGF0ZV90J3MgYXJlIGFjdGl2ZSBhdCB0aGUgc2FtZQorLSAgIHRpbWUuICBTbyB3ZSByZXF1 aXJlIGJvdGggdGhlIGZ1bmN0aW9ucyBhbmQgdGhlIG1ic3RhdGVfdCB0eXBlIGluCistICAgb3Jk ZXIgdG8gZW5hYmxlIG11bHRpYnl0ZSBzdXBwb3J0LiAgKi8KKy0KKysgICBzdXBwb3J0IHVzZXIg ZGVmaW5lZCBjaGFyYWN0ZXIgY2xhc3Nlcy4gICovCisgICAgLyogU29sYXJpcyAyLjUgaGFzIGEg YnVnOiA8d2NoYXIuaD4gbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgPHdjdHlwZS5oPi4gICovCist I2lmIGRlZmluZWQgKEhBVkVfV0NUWVBFX0gpICYmIGRlZmluZWQgKEhBVkVfV0NIQVJfSCkKKysj aWYgZGVmaW5lZCAoSEFWRV9XQ1RZUEVfSCkgJiYgZGVmaW5lZCAoSEFWRV9XQ0hBUl9IKSAmJiBk ZWZpbmVkIChIQVZFX0xPQ0FMRV9IKQorICMgIGluY2x1ZGUgPHdjaGFyLmg+CisgIyAgaW5jbHVk ZSA8d2N0eXBlLmg+CistIyAgaWYgZGVmaW5lZCAoSEFWRV9NQlNUQVRFX1QpICYmIGRlZmluZWQg KEhBVkVfTUJTUlRPV0NTKSAmJiBkZWZpbmVkIChIQVZFX01CUlRPV0MpICYmIGRlZmluZWQgKEhB VkVfTUJSTEVOKSAmJiBkZWZpbmVkIChIQVZFX1dDV0lEVEgpCisrIyAgaWYgZGVmaW5lZCAoSEFW RV9JU1dDVFlQRSkgJiYgXAorKyAgICAgIGRlZmluZWQgKEhBVkVfSVNXTE9XRVIpICYmIFwKKysg ICAgICBkZWZpbmVkIChIQVZFX0lTV1VQUEVSKSAmJiBcCisrICAgICAgZGVmaW5lZCAoSEFWRV9N QlNSVE9XQ1MpICYmIFwKKysgICAgICBkZWZpbmVkIChIQVZFX01CUlRPV0MpICYmIFwKKysgICAg ICBkZWZpbmVkIChIQVZFX01CUkxFTikgJiYgXAorKyAgICAgIGRlZmluZWQgKEhBVkVfVE9XTE9X RVIpICYmIFwKKysgICAgICBkZWZpbmVkIChIQVZFX1RPV1VQUEVSKSAmJiBcCisrICAgICAgZGVm aW5lZCAoSEFWRV9XQ0hBUl9UKSAmJiBcCisrICAgICAgZGVmaW5lZCAoSEFWRV9XQ1dJRFRIKQor ICAgICAgLyogc3lzdGVtIGlzIHN1cHBvc2VkIHRvIHN1cHBvcnQgWFBHNSAqLworICMgICAgZGVm aW5lIEhBTkRMRV9NVUxUSUJZVEUgICAgICAxCisgIyAgZW5kaWYKKy0tLSBhL3JlYWRsaW5lL3Js cHJpdmF0ZS5oCisrKysgYi9yZWFkbGluZS9ybHByaXZhdGUuaAorQEAgLTEsMjUgKzEsMjQgQEAK KyAvKiBybHByaXZhdGUuaCAtLSBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcyBnbG9iYWwgdG8gdGhl IHJlYWRsaW5lIGxpYnJhcnksCisgCQkgIGJ1dCBub3QgaW50ZW5kZWQgZm9yIHVzZSBieSBhcHBs aWNhdGlvbnMuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTk5LTIwMDUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTk5LTIwMTAgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCistICAgcmVhZGluZyBsaW5lcyBvZiB0 ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKysgICBUaGlz IGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBs aWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlu cHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBM aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0CistICAgYW5k L29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAg IFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJlYWRsaW5lIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hp cHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBm aWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBh IGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNB LiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAorICNpZiAhZGVmaW5lZCAo X1JMX1BSSVZBVEVfSF8pCisgI2RlZmluZSBfUkxfUFJJVkFURV9IXworQEAgLTMwLDYgKzI5LDIx IEBACisgCisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgKgkJCQkJCQkJCSAqCisrICogQ29udmVuaWVu Y2UgZGVmaW5pdGlvbnMJCQkJCQkgKgorKyAqCQkJCQkJCQkJICoKKysgKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq Ki8KKysKKysjZGVmaW5lIEVNQUNTX01PREUoKQkJKHJsX2VkaXRpbmdfbW9kZSA9PSBlbWFjc19t b2RlKQorKyNkZWZpbmUgVklfQ09NTUFORF9NT0RFKCkJKHJsX2VkaXRpbmdfbW9kZSA9PSB2aV9t b2RlICYmIF9ybF9rZXltYXAgPT0gdmlfbW92ZW1lbnRfa2V5bWFwKQorKyNkZWZpbmUgVklfSU5T RVJUX01PREUoKQkocmxfZWRpdGluZ19tb2RlID09IHZpX21vZGUgJiYgX3JsX2tleW1hcCA9PSB2 aV9pbnNlcnRpb25fa2V5bWFwKQorKworKyNkZWZpbmUgUkxfQ0hFQ0tfU0lHTkFMUygpIFwKKysJ ZG8geyBcCisrCSAgaWYgKF9ybF9jYXVnaHRfc2lnbmFsKSBfcmxfc2lnbmFsX2hhbmRsZXIgKF9y bF9jYXVnaHRfc2lnbmFsKTsgXAorKwl9IHdoaWxlICgwKQorKworKy8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisrICoJCQkJCQkJCQkgKgorICAqIEdsb2JhbCBzdHJ1Y3RzIHVuZG9jdW1lbnRlZCBpbiB0ZXhp bmZvIG1hbnVhbCBhbmQgbm90IGluIHJlYWRsaW5lLmggICAqCisgICoJCQkJCQkJCQkgKgorICAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworQEAgLTQyLDYgKzU2LDcgQEAKKyAjZGVmaW5lIFNGX1JFVkVSU0UJ CTB4MDEKKyAjZGVmaW5lIFNGX0ZPVU5ECQkweDAyCisgI2RlZmluZSBTRl9GQUlMRUQJCTB4MDQK KysjZGVmaW5lIFNGX0NIR0tNQVAJCTB4MDgKKyAKKyB0eXBlZGVmIHN0cnVjdCAgX19ybF9zZWFy Y2hfY29udGV4dAorIHsKK0BAIC02NSw2ICs4MCw5IEBAIHR5cGVkZWYgc3RydWN0ICBfX3JsX3Nl YXJjaF9jb250ZXh0CisgCisgICBVTkRPX0xJU1QgKnNhdmVfdW5kb19saXN0OworIAorKyAgS2V5 bWFwIGtleW1hcDsJLyogdXNlZCB3aGVuIGRpc3BhdGNoaW5nIGNvbW1hbmRzIGluIHNlYXJjaCBz dHJpbmcgKi8KKysgIEtleW1hcCBva2V5bWFwOwkvKiBvcmlnaW5hbCBrZXltYXAgKi8KKysKKyAg IGludCBoaXN0b3J5X3BvczsKKyAgIGludCBkaXJlY3Rpb247CisgCitAQCAtMTA2LDcgKzEyNCwy OCBAQCB0eXBlZGVmIHN0cnVjdCBfX3JsX2tleXNlcV9jb250ZXh0CisgICBpbnQgY2hpbGR2YWw7 CisgfSBfcmxfa2V5c2VxX2N4dDsKKyAKKy0gIC8qIGZpbGwgaW4gbW9yZSBhcyBuZWVkZWQgKi8K KysvKiB2aS1tb2RlIGNvbW1hbmRzIHRoYXQgdXNlIHJlc3VsdCBvZiBtb3Rpb24gY29tbWFuZCB0 byBkZWZpbmUgYm91bmRhcmllcyAqLworKyNkZWZpbmUgVklNX0RFTEVURQkweDAxCisrI2RlZmlu ZSBWSU1fQ0hBTkdFCTB4MDIKKysjZGVmaW5lIFZJTV9ZQU5LCTB4MDQKKysKKysvKiB2YXJpb3Vz IHN0YXRlcyBmb3IgdmktbW9kZSBjb21tYW5kcyB0aGF0IHVzZSBtb3Rpb24gY29tbWFuZHMuICBy ZWZsZWN0cworKyAgIFJMX1JFQURMSU5FX1NUQVRFICovCisrI2RlZmluZSBWTVNUQVRFX1JFQUQJ MHgwMQorKyNkZWZpbmUgVk1TVEFURV9OVU1BUkcJMHgwMgorKworK3R5cGVkZWYgc3RydWN0IF9f cmxfdmltb3Rpb25fY29udGV4dAorK3sKKysgIGludCBvcDsKKysgIGludCBzdGF0ZTsKKysgIGlu dCBmbGFnczsJCS8qIHJlc2VydmVkICovCisrICBfcmxfYXJnX2N4dCBuY3h0OworKyAgaW50IG51 bWVyaWNfYXJnOworKyAgaW50IHN0YXJ0LCBlbmQ7CS8qIHJsX3BvaW50LCBybF9lbmQgKi8KKysg IGludCBrZXksIG1vdGlvbjsJLyogaW5pdGlhbCBrZXksIG1vdGlvbiBjb21tYW5kICovCisrfSBf cmxfdmltb3Rpb25fY3h0OworKworKy8qIGZpbGwgaW4gbW9yZSBhcyBuZWVkZWQgKi8KKyAvKiBg R2VuZXJpYycgY2FsbGJhY2sgZGF0YSBhbmQgZnVuY3Rpb25zICovCisgdHlwZWRlZiBzdHJ1Y3Qg X19ybF9jYWxsYmFja19nZW5lcmljX2FyZyAKKyB7CitAQCAtMTM5LDEyICsxNzgsOSBAQCBleHRl cm4gaW50IHJsX3Zpc2libGVfc3RhdHM7CisgZXh0ZXJuIGludCBybF9saW5lX2J1ZmZlcl9sZW47 CisgZXh0ZXJuIGludCBybF9hcmdfc2lnbjsKKyBleHRlcm4gaW50IHJsX3Zpc2libGVfcHJvbXB0 X2xlbmd0aDsKKy1leHRlcm4gaW50IHJlYWRsaW5lX2VjaG9pbmdfcDsKKyBleHRlcm4gaW50IHJs X2tleV9zZXF1ZW5jZV9sZW5ndGg7CisgZXh0ZXJuIGludCBybF9ieXRlX29yaWVudGVkOworIAor LWV4dGVybiBfcmxfa2V5c2VxX2N4dCAqX3JsX2tzY3h0OworLQorIC8qIGRpc3BsYXkuYyAqLwor IGV4dGVybiBpbnQgcmxfZGlzcGxheV9maXhlZDsKKyAKK0BAIC0yMDYsNiArMjQyLDcgQEAgZXh0 ZXJuIHZvaWQgX3JsX2NhbGxiYWNrX2RhdGFfZGlzcG9zZSBQQVJBTVMoKF9ybF9jYWxsYmFja19n ZW5lcmljX2FyZyAqKSk7CisgLyogYmluZC5jICovCisgCisgLyogY29tcGxldGUuYyAqLworK2V4 dGVybiB2b2lkIF9ybF9yZXNldF9jb21wbGV0aW9uX3N0YXRlIFBBUkFNUygodm9pZCkpOworIGV4 dGVybiBjaGFyIF9ybF9maW5kX2NvbXBsZXRpb25fd29yZCBQQVJBTVMoKGludCAqLCBpbnQgKikp OworIGV4dGVybiB2b2lkIF9ybF9mcmVlX21hdGNoX2xpc3QgUEFSQU1TKChjaGFyICoqKSk7Cisg CitAQCAtMjYxLDYgKzI5OCw4IEBAIGV4dGVybiB2b2lkIF9ybF9zdGFydF91c2luZ19oaXN0b3J5 IFBBUkFNUygodm9pZCkpOworIGV4dGVybiBpbnQgX3JsX2ZyZWVfc2F2ZWRfaGlzdG9yeV9saW5l IFBBUkFNUygodm9pZCkpOworIGV4dGVybiB2b2lkIF9ybF9zZXRfaW5zZXJ0X21vZGUgUEFSQU1T KChpbnQsIGludCkpOworIAorK2V4dGVybiB2b2lkIF9ybF9yZXZlcnRfYWxsX2xpbmVzIFBBUkFN Uygodm9pZCkpOworKworIC8qIG5scy5jICovCisgZXh0ZXJuIGludCBfcmxfaW5pdF9laWdodGJp dCBQQVJBTVMoKHZvaWQpKTsKKyAKK0BAIC0yODEsNiArMzIwLDE0IEBAIGV4dGVybiBpbnQgX3Js X3Jlc3RvcmVfdHR5X3NpZ25hbHMgUEFSQU1TKCh2b2lkKSk7CisgLyogc2VhcmNoLmMgKi8KKyBl eHRlcm4gaW50IF9ybF9uc2VhcmNoX2NhbGxiYWNrIFBBUkFNUygoX3JsX3NlYXJjaF9jeHQgKikp OworIAorKy8qIHNpZ25hbHMuYyAqLworK2V4dGVybiB2b2lkIF9ybF9zaWduYWxfaGFuZGxlciBQ QVJBTVMoKGludCkpOworKworK2V4dGVybiB2b2lkIF9ybF9ibG9ja19zaWdpbnQgUEFSQU1TKCh2 b2lkKSk7CisrZXh0ZXJuIHZvaWQgX3JsX3JlbGVhc2Vfc2lnaW50IFBBUkFNUygodm9pZCkpOwor K2V4dGVybiB2b2lkIF9ybF9ibG9ja19zaWd3aW5jaCBQQVJBTVMoKHZvaWQpKTsKKytleHRlcm4g dm9pZCBfcmxfcmVsZWFzZV9zaWd3aW5jaCBQQVJBTVMoKHZvaWQpKTsKKysKKyAvKiB0ZXJtaW5h bC5jICovCisgZXh0ZXJuIHZvaWQgX3JsX2dldF9zY3JlZW5fc2l6ZSBQQVJBTVMoKGludCwgaW50 KSk7CisgZXh0ZXJuIGludCBfcmxfaW5pdF90ZXJtaW5hbF9pbyBQQVJBTVMoKGNvbnN0IGNoYXIg KikpOworQEAgLTI5OCw2ICszNDUsNyBAQCBleHRlcm4gdm9pZCBfcmxfc2V0X2N1cnNvciBQQVJB TVMoKGludCwgaW50KSk7CisgLyogdGV4dC5jICovCisgZXh0ZXJuIHZvaWQgX3JsX2ZpeF9wb2lu dCBQQVJBTVMoKGludCkpOworIGV4dGVybiBpbnQgX3JsX3JlcGxhY2VfdGV4dCBQQVJBTVMoKGNv bnN0IGNoYXIgKiwgaW50LCBpbnQpKTsKKytleHRlcm4gaW50IF9ybF9mb3J3YXJkX2NoYXJfaW50 ZXJuYWwgUEFSQU1TKChpbnQpKTsKKyBleHRlcm4gaW50IF9ybF9pbnNlcnRfY2hhciBQQVJBTVMo KGludCwgaW50KSk7CisgZXh0ZXJuIGludCBfcmxfb3ZlcndyaXRlX2NoYXIgUEFSQU1TKChpbnQs IGludCkpOworIGV4dGVybiBpbnQgX3JsX292ZXJ3cml0ZV9ydWJvdXQgUEFSQU1TKChpbnQsIGlu dCkpOworQEAgLTMwOSw4ICszNTcsMjUgQEAgZXh0ZXJuIGludCBfcmxfY2hhcl9zZWFyY2hfaW50 ZXJuYWwgUEFSQU1TKChpbnQsIGludCwgaW50KSk7CisgI2VuZGlmCisgZXh0ZXJuIGludCBfcmxf c2V0X21hcmtfYXRfcG9zIFBBUkFNUygoaW50KSk7CisgCisrLyogdW5kby5jICovCisrZXh0ZXJu IFVORE9fTElTVCAqX3JsX2NvcHlfdW5kb19lbnRyeSBQQVJBTVMoKFVORE9fTElTVCAqKSk7Cisr ZXh0ZXJuIFVORE9fTElTVCAqX3JsX2NvcHlfdW5kb19saXN0IFBBUkFNUygoVU5ET19MSVNUICop KTsKKysKKyAvKiB1dGlsLmMgKi8KKysjaWYgZGVmaW5lZCAoVVNFX1ZBUkFSR1MpICYmIGRlZmlu ZWQgKFBSRUZFUl9TVERBUkcpCisrZXh0ZXJuIHZvaWQgX3JsX3R0eW1zZyAoY29uc3QgY2hhciAq LCAuLi4pICBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChwcmludGYsIDEsIDIpKSk7CisrZXh0 ZXJuIHZvaWQgX3JsX2Vycm1zZyAoY29uc3QgY2hhciAqLCAuLi4pICBfX2F0dHJpYnV0ZV9fKChf X2Zvcm1hdF9fIChwcmludGYsIDEsIDIpKSk7CisrZXh0ZXJuIHZvaWQgX3JsX3RyYWNlIChjb25z dCBjaGFyICosIC4uLikgIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKHByaW50ZiwgMSwgMikp KTsKKysjZWxzZQorK2V4dGVybiB2b2lkIF9ybF90dHltc2cgKCk7CisrZXh0ZXJuIHZvaWQgX3Js X2Vycm1zZyAoKTsKKytleHRlcm4gdm9pZCBfcmxfdHJhY2UgKCk7CisrI2VuZGlmCisrCisrZXh0 ZXJuIGludCBfcmxfdHJvcGVuIFBBUkFNUygodm9pZCkpOworKworIGV4dGVybiBpbnQgX3JsX2Fi b3J0X2ludGVybmFsIFBBUkFNUygodm9pZCkpOworK2V4dGVybiBpbnQgX3JsX251bGxfZnVuY3Rp b24gUEFSQU1TKChpbnQsIGludCkpOworIGV4dGVybiBjaGFyICpfcmxfc3RyaW5kZXggUEFSQU1T KChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikpOworIGV4dGVybiBpbnQgX3JsX3Fzb3J0X3N0 cmluZ19jb21wYXJlIFBBUkFNUygoY2hhciAqKiwgY2hhciAqKikpOworIGV4dGVybiBpbnQgKF9y bF91cHBlcmNhc2VfcCkgUEFSQU1TKChpbnQpKTsKK0BAIC0zMjcsMTQgKzM5MiwxNSBAQCBleHRl cm4gdm9pZCBfcmxfdmlfcmVzZXRfbGFzdCBQQVJBTVMoKHZvaWQpKTsKKyBleHRlcm4gdm9pZCBf cmxfdmlfc2V0X2xhc3QgUEFSQU1TKChpbnQsIGludCwgaW50KSk7CisgZXh0ZXJuIGludCBfcmxf dmlfdGV4dG1vZF9jb21tYW5kIFBBUkFNUygoaW50KSk7CisgZXh0ZXJuIHZvaWQgX3JsX3ZpX2Rv bmVfaW5zZXJ0aW5nIFBBUkFNUygodm9pZCkpOworK2V4dGVybiBpbnQgX3JsX3ZpX2RvbW92ZV9j YWxsYmFjayBQQVJBTVMoKF9ybF92aW1vdGlvbl9jeHQgKikpOworIAorIC8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqCisgICogVW5kb2N1bWVudGVkIHByaXZhdGUgdmFyaWFibGVzCQkJCQkgKgorICAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqLworIAorIC8qIGJpbmQuYyAqLworLWV4dGVybiBjb25zdCBjaGFyICpfcmxfcG9z c2libGVfY29udHJvbF9wcmVmaXhlc1tdOworLWV4dGVybiBjb25zdCBjaGFyICpfcmxfcG9zc2li bGVfbWV0YV9wcmVmaXhlc1tdOworK2V4dGVybiBjb25zdCBjaGFyICogY29uc3QgX3JsX3Bvc3Np YmxlX2NvbnRyb2xfcHJlZml4ZXNbXTsKKytleHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IF9ybF9w b3NzaWJsZV9tZXRhX3ByZWZpeGVzW107CisgCisgLyogY2FsbGJhY2suYyAqLworIGV4dGVybiBf cmxfY2FsbGJhY2tfZnVuY190ICpfcmxfY2FsbGJhY2tfZnVuYzsKK0BAIC0zNDUsMTcgKzQxMSwy MSBAQCBleHRlcm4gaW50IF9ybF9jb21wbGV0ZV9zaG93X2FsbDsKKyBleHRlcm4gaW50IF9ybF9j b21wbGV0ZV9zaG93X3VubW9kaWZpZWQ7CisgZXh0ZXJuIGludCBfcmxfY29tcGxldGVfbWFya19k aXJlY3RvcmllczsKKyBleHRlcm4gaW50IF9ybF9jb21wbGV0ZV9tYXJrX3N5bWxpbmtfZGlyczsK KytleHRlcm4gaW50IF9ybF9jb21wbGV0aW9uX3ByZWZpeF9kaXNwbGF5X2xlbmd0aDsKKytleHRl cm4gaW50IF9ybF9jb21wbGV0aW9uX2NvbHVtbnM7CisgZXh0ZXJuIGludCBfcmxfcHJpbnRfY29t cGxldGlvbnNfaG9yaXpvbnRhbGx5OworIGV4dGVybiBpbnQgX3JsX2NvbXBsZXRpb25fY2FzZV9m b2xkOworK2V4dGVybiBpbnQgX3JsX2NvbXBsZXRpb25fY2FzZV9tYXA7CisgZXh0ZXJuIGludCBf cmxfbWF0Y2hfaGlkZGVuX2ZpbGVzOworIGV4dGVybiBpbnQgX3JsX3BhZ2VfY29tcGxldGlvbnM7 CisrZXh0ZXJuIGludCBfcmxfc2tpcF9jb21wbGV0ZWRfdGV4dDsKKytleHRlcm4gaW50IF9ybF9t ZW51X2NvbXBsZXRlX3ByZWZpeF9maXJzdDsKKyAKKyAvKiBkaXNwbGF5LmMgKi8KKyBleHRlcm4g aW50IF9ybF92aXNfYm90bGluOworIGV4dGVybiBpbnQgX3JsX2xhc3RfY19wb3M7CisgZXh0ZXJu IGludCBfcmxfc3VwcHJlc3NfcmVkaXNwbGF5OworIGV4dGVybiBpbnQgX3JsX3dhbnRfcmVkaXNw bGF5OworLWV4dGVybiBjaGFyICpybF9kaXNwbGF5X3Byb21wdDsKKyAKKyAvKiBpc2VhcmNoLmMg Ki8KKyBleHRlcm4gY2hhciAqX3JsX2lzZWFyY2hfdGVybWluYXRvcnM7CitAQCAtMzcyLDYgKzQ0 Miw3IEBAIGV4dGVybiBpbnQgX3JsX2hpc3Rvcnlfc2F2ZWRfcG9pbnQ7CisgZXh0ZXJuIF9ybF9h cmdfY3h0IF9ybF9hcmdjeHQ7CisgCisgLyogcmVhZGxpbmUuYyAqLworK2V4dGVybiBpbnQgX3Js X2VjaG9pbmdfcDsKKyBleHRlcm4gaW50IF9ybF9ob3Jpem9udGFsX3Njcm9sbF9tb2RlOworIGV4 dGVybiBpbnQgX3JsX21hcmtfbW9kaWZpZWRfbGluZXM7CisgZXh0ZXJuIGludCBfcmxfYmVsbF9w cmVmZXJlbmNlOworQEAgLTM3OSw2ICs0NTAsOCBAQCBleHRlcm4gaW50IF9ybF9tZXRhX2ZsYWc7 CisgZXh0ZXJuIGludCBfcmxfY29udmVydF9tZXRhX2NoYXJzX3RvX2FzY2lpOworIGV4dGVybiBp bnQgX3JsX291dHB1dF9tZXRhX2NoYXJzOworIGV4dGVybiBpbnQgX3JsX2JpbmRfc3R0eV9jaGFy czsKKytleHRlcm4gaW50IF9ybF9yZXZlcnRfYWxsX2F0X25ld2xpbmU7CisrZXh0ZXJuIGludCBf cmxfZWNob19jb250cm9sX2NoYXJzOworIGV4dGVybiBjaGFyICpfcmxfY29tbWVudF9iZWdpbjsK KyBleHRlcm4gdW5zaWduZWQgY2hhciBfcmxfcGFyc2luZ19jb25kaXRpb25hbGl6ZWRfb3V0Owor IGV4dGVybiBLZXltYXAgX3JsX2tleW1hcDsKK0BAIC0zODYsMTEgKzQ1OSwyMiBAQCBleHRlcm4g RklMRSAqX3JsX2luX3N0cmVhbTsKKyBleHRlcm4gRklMRSAqX3JsX291dF9zdHJlYW07CisgZXh0 ZXJuIGludCBfcmxfbGFzdF9jb21tYW5kX3dhc19raWxsOworIGV4dGVybiBpbnQgX3JsX2VvZl9j aGFyOworLWV4dGVybiBwcm9jZW52X3QgcmVhZGxpbmVfdG9wX2xldmVsOworK2V4dGVybiBwcm9j ZW52X3QgX3JsX3RvcF9sZXZlbDsKKytleHRlcm4gX3JsX2tleXNlcV9jeHQgKl9ybF9rc2N4dDsK KyAKKyAvKiBzZWFyY2guYyAqLworIGV4dGVybiBfcmxfc2VhcmNoX2N4dCAqX3JsX25zY3h0Owor IAorKy8qIHNpZ25hbHMuYyAqLworK2V4dGVybiBpbnQgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVs eTsKKytleHRlcm4gaW50IHZvbGF0aWxlIF9ybF9jYXVnaHRfc2lnbmFsOworKworK2V4dGVybiBp bnQgX3JsX2VjaG9jdGw7CisrCisrZXh0ZXJuIGludCBfcmxfaW50cl9jaGFyOworK2V4dGVybiBp bnQgX3JsX3F1aXRfY2hhcjsKKytleHRlcm4gaW50IF9ybF9zdXNwX2NoYXI7CisrCisgLyogdGVy bWluYWwuYyAqLworIGV4dGVybiBpbnQgX3JsX2VuYWJsZV9rZXlwYWQ7CisgZXh0ZXJuIGludCBf cmxfZW5hYmxlX21ldGE7CitAQCAtNDA0LDYgKzQ4OCw3IEBAIGV4dGVybiBjaGFyICpfcmxfdGVy bV91cDsKKyBleHRlcm4gY2hhciAqX3JsX3Rlcm1fZGM7CisgZXh0ZXJuIGNoYXIgKl9ybF90ZXJt X2NyOworIGV4dGVybiBjaGFyICpfcmxfdGVybV9JQzsKKytleHRlcm4gY2hhciAqX3JsX3Rlcm1f Zm9yd2FyZF9jaGFyOworIGV4dGVybiBpbnQgX3JsX3NjcmVlbmhlaWdodDsKKyBleHRlcm4gaW50 IF9ybF9zY3JlZW53aWR0aDsKKyBleHRlcm4gaW50IF9ybF9zY3JlZW5jaGFyczsKK0BAIC00MTYs NSArNTAxLDYgQEAgZXh0ZXJuIGludCBfcmxfdW5kb19ncm91cF9sZXZlbDsKKyAKKyAvKiB2aV9t b2RlLmMgKi8KKyBleHRlcm4gaW50IF9ybF92aV9sYXN0X2NvbW1hbmQ7CisrZXh0ZXJuIF9ybF92 aW1vdGlvbl9jeHQgKl9ybF92aW12Y3h0OworIAorICNlbmRpZiAvKiBfUkxfUFJJVkFURV9IXyAq LworLS0tIGEvcmVhZGxpbmUvcmxzaGVsbC5oCisrKysgYi9yZWFkbGluZS9ybHNoZWxsLmgKK0BA IC0xLDI0ICsxLDIzIEBACisgLyogcmxzaGVsbC5oIC0tIHV0aWxpdHkgZnVuY3Rpb25zIG5vcm1h bGx5IHByb3ZpZGVkIGJ5IGJhc2guICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTk5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk5OS0yMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGlu ZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisr ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGlu ZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFj dGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBHTlUgUmVh ZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAor LSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdh cmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFk bGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor KyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9m dGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0 IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAg IGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRl ZmluZWQgKF9STF9TSEVMTF9IXykKKyAjZGVmaW5lIF9STF9TSEVMTF9IXworLS0tIGEvcmVhZGxp bmUvcmxzdGRjLmgKKysrKyBiL3JlYWRsaW5lL3Jsc3RkYy5oCitAQCAtMSwyMyArMSwyMyBAQAor LS8qIHN0ZGMuaCAtLSBtYWNyb3MgdG8gbWFrZSBzb3VyY2UgY29tcGlsZSBvbiBib3RoIEFOU0kg QyBhbmQgSyZSIEMKKy0gICBjb21waWxlcnMuICovCisrLyogc3RkYy5oIC0tIG1hY3JvcyB0byBt YWtlIHNvdXJjZSBjb21waWxlIG9uIGJvdGggQU5TSSBDIGFuZCBLJlIgQyBjb21waWxlcnMuICov CisgCistLyogQ29weXJpZ2h0IChDKSAxOTkzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKy8qIENvcHlyaWdodCAoQykgMTk5My0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBCYXNoLCB0aGUgQm91cm5lIEFn YWluIFNIZWxsLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGli cmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0 IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKKyAKKy0g ICBCYXNoIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkgaXQKKy0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVy c2lvbi4KKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAgQmFzaCBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorLSAg IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNI QU5UQUJJTElUWQorLSAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKy0gICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisr ICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCBCYXNo OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKKy0gICBT b2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMSBVU0EuICovCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworIAorICNpZiAhZGVmaW5lZCAoX1JM X1NURENfSF8pCisgI2RlZmluZSBfUkxfU1REQ19IXworLS0tIGEvcmVhZGxpbmUvcmx0dHkuYwor KysrIGIvcmVhZGxpbmUvcmx0dHkuYworQEAgLTMsMjMgKzMsMjMgQEAKKyAKKyAvKiBDb3B5cmln aHQgKEMpIDE5OTItMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBm b3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQg aGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBv ZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAK KyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFk bGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0g ICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0g ICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4g IElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl IDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3 aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorKyovCisrCisgI2RlZmluZSBSRUFETElORV9MSUJSQVJZCisgCisgI2lmIGRlZmluZWQgKEhB VkVfQ09ORklHX0gpCitAQCAtNTIsNzcgKzUyLDEwIEBAIGV4dGVybiBpbnQgZXJybm87Cisgcmxf dmludGZ1bmNfdCAqcmxfcHJlcF90ZXJtX2Z1bmN0aW9uID0gcmxfcHJlcF90ZXJtaW5hbDsKKyBy bF92b2lkZnVuY190ICpybF9kZXByZXBfdGVybV9mdW5jdGlvbiA9IHJsX2RlcHJlcF90ZXJtaW5h bDsKKyAKKy12b2lkIF9ybF9ibG9ja19zaWdpbnQgUEFSQU1TKCh2b2lkKSk7Cistdm9pZCBfcmxf cmVsZWFzZV9zaWdpbnQgUEFSQU1TKCh2b2lkKSk7CistCisgc3RhdGljIHZvaWQgc2V0X3dpbnNp emUgUEFSQU1TKChpbnQpKTsKKyAKKyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisgLyoJCQkJCQkJCSAgICAqLwor LS8qCQkJICAgU2lnbmFsIE1hbmFnZW1lbnQJCQkgICAgKi8KKy0vKgkJCQkJCQkJICAgICovCist LyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiAqLworLQorLSNpZiBkZWZpbmVkIChIQVZFX1BPU0lYX1NJR05BTFMpCistc3Rh dGljIHNpZ3NldF90IHNpZ2ludF9zZXQsIHNpZ2ludF9vc2V0OworLSNlbHNlIC8qICFIQVZFX1BP U0lYX1NJR05BTFMgKi8KKy0jICBpZiBkZWZpbmVkIChIQVZFX0JTRF9TSUdOQUxTKQorLXN0YXRp YyBpbnQgc2lnaW50X29sZG1hc2s7CistIyAgZW5kaWYgLyogSEFWRV9CU0RfU0lHTkFMUyAqLwor LSNlbmRpZiAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCistCistc3RhdGljIGludCBzaWdpbnRf YmxvY2tlZDsKKy0KKy0vKiBDYXVzZSBTSUdJTlQgdG8gbm90IGJlIGRlbGl2ZXJlZCB1bnRpbCB0 aGUgY29ycmVzcG9uZGluZyBjYWxsIHRvCistICAgX3JsX3JlbGVhc2Vfc2lnaW50KCkuICovCist dm9pZAorLV9ybF9ibG9ja19zaWdpbnQgKCkKKy17CistICBpZiAoc2lnaW50X2Jsb2NrZWQpCist ICAgIHJldHVybjsKKy0KKy0jaWYgZGVmaW5lZCAoSEFWRV9QT1NJWF9TSUdOQUxTKQorLSAgc2ln ZW1wdHlzZXQgKCZzaWdpbnRfc2V0KTsKKy0gIHNpZ2VtcHR5c2V0ICgmc2lnaW50X29zZXQpOwor LSAgc2lnYWRkc2V0ICgmc2lnaW50X3NldCwgU0lHSU5UKTsKKy0gIHNpZ3Byb2NtYXNrIChTSUdf QkxPQ0ssICZzaWdpbnRfc2V0LCAmc2lnaW50X29zZXQpOworLSNlbHNlIC8qICFIQVZFX1BPU0lY X1NJR05BTFMgKi8KKy0jICBpZiBkZWZpbmVkIChIQVZFX0JTRF9TSUdOQUxTKQorLSAgc2lnaW50 X29sZG1hc2sgPSBzaWdibG9jayAoc2lnbWFzayAoU0lHSU5UKSk7CistIyAgZWxzZSAvKiAhSEFW RV9CU0RfU0lHTkFMUyAqLworLSMgICAgaWYgZGVmaW5lZCAoSEFWRV9VU0dfU0lHSE9MRCkKKy0g IHNpZ2hvbGQgKFNJR0lOVCk7CistIyAgICBlbmRpZiAvKiBIQVZFX1VTR19TSUdIT0xEICovCist IyAgZW5kaWYgLyogIUhBVkVfQlNEX1NJR05BTFMgKi8KKy0jZW5kaWYgLyogIUhBVkVfUE9TSVhf U0lHTkFMUyAqLworLQorLSAgc2lnaW50X2Jsb2NrZWQgPSAxOworLX0KKy0KKy0vKiBBbGxvdyBT SUdJTlQgdG8gYmUgZGVsaXZlcmVkLiAqLworLXZvaWQKKy1fcmxfcmVsZWFzZV9zaWdpbnQgKCkK Ky17CistICBpZiAoc2lnaW50X2Jsb2NrZWQgPT0gMCkKKy0gICAgcmV0dXJuOworLQorLSNpZiBk ZWZpbmVkIChIQVZFX1BPU0lYX1NJR05BTFMpCistICBzaWdwcm9jbWFzayAoU0lHX1NFVE1BU0ss ICZzaWdpbnRfb3NldCwgKHNpZ3NldF90ICopTlVMTCk7CistI2Vsc2UKKy0jICBpZiBkZWZpbmVk IChIQVZFX0JTRF9TSUdOQUxTKQorLSAgc2lnc2V0bWFzayAoc2lnaW50X29sZG1hc2spOworLSMg IGVsc2UgLyogIUhBVkVfQlNEX1NJR05BTFMgKi8KKy0jICAgIGlmIGRlZmluZWQgKEhBVkVfVVNH X1NJR0hPTEQpCistICBzaWdyZWxzZSAoU0lHSU5UKTsKKy0jICAgIGVuZGlmIC8qIEhBVkVfVVNH X1NJR0hPTEQgKi8KKy0jICBlbmRpZiAvKiAhSEFWRV9CU0RfU0lHTkFMUyAqLworLSNlbmRpZiAv KiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCistCistICBzaWdpbnRfYmxvY2tlZCA9IDA7CistfQor LQorLS8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiogKi8KKy0vKgkJCQkJCQkJICAgICovCisgLyoJCSAgICAgIFNhdmluZyBh bmQgUmVzdG9yaW5nIHRoZSBUVFkJICAgIAkgICAgKi8KKyAvKgkJCQkJCQkJICAgICovCisgLyog KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiAqLworQEAgLTIwNCw4ICsxMzcsOSBAQCBzYXZlX3R0eV9jaGFycyAodGlvcCkKKyAK KyAgIGlmICh0aW9wLT5mbGFncyAmIFRDSEFSU19TRVQpCisgICAgIHsKKy0gICAgICBfcmxfdHR5 X2NoYXJzLnRfaW50ciA9IHRpb3AtPnRjaGFycy50X2ludHJjOworLSAgICAgIF9ybF90dHlfY2hh cnMudF9xdWl0ID0gdGlvcC0+dGNoYXJzLnRfcXVpdGM7CisrICAgICAgX3JsX2ludHJfY2hhciA9 IF9ybF90dHlfY2hhcnMudF9pbnRyID0gdGlvcC0+dGNoYXJzLnRfaW50cmM7CisrICAgICAgX3Js X3F1aXRfY2hhciA9IF9ybF90dHlfY2hhcnMudF9xdWl0ID0gdGlvcC0+dGNoYXJzLnRfcXVpdGM7 CisrCisgICAgICAgX3JsX3R0eV9jaGFycy50X3N0YXJ0ID0gdGlvcC0+dGNoYXJzLnRfc3RhcnRj OworICAgICAgIF9ybF90dHlfY2hhcnMudF9zdG9wID0gdGlvcC0+dGNoYXJzLnRfc3RvcGM7Cisg ICAgICAgX3JsX3R0eV9jaGFycy50X2VvZiA9IHRpb3AtPnRjaGFycy50X2VvZmM7CitAQCAtMjE1 LDcgKzE0OSw4IEBAIHNhdmVfdHR5X2NoYXJzICh0aW9wKQorIAorICAgaWYgKHRpb3AtPmZsYWdz ICYgTFRDSEFSU19TRVQpCisgICAgIHsKKy0gICAgICBfcmxfdHR5X2NoYXJzLnRfc3VzcCA9IHRp b3AtPmx0Y2hhcnMudF9zdXNwYzsKKysgICAgICBfcmxfc3VzcF9jaGFyID0gX3JsX3R0eV9jaGFy cy50X3N1c3AgPSB0aW9wLT5sdGNoYXJzLnRfc3VzcGM7CisrCisgICAgICAgX3JsX3R0eV9jaGFy cy50X2RzdXNwID0gdGlvcC0+bHRjaGFycy50X2RzdXNwYzsKKyAgICAgICBfcmxfdHR5X2NoYXJz LnRfcmVwcmludCA9IHRpb3AtPmx0Y2hhcnMudF9ycHJudGM7CisgICAgICAgX3JsX3R0eV9jaGFy cy50X2ZsdXNoID0gdGlvcC0+bHRjaGFycy50X2ZsdXNoYzsKK0BAIC0yNjgsNyArMjAzLDcgQEAg c2V0X3R0eV9zZXR0aW5ncyAodHR5LCB0aW9wKQorICAgICAgIGlvY3RsICh0dHksIFRJT0NTRVRO LCAmKHRpb3AtPnNndHR5YikpOworICAgICAgIHRpb3AtPmZsYWdzICY9IH5TR1RUWV9TRVQ7Cisg ICAgIH0KKy0gIHJlYWRsaW5lX2VjaG9pbmdfcCA9IDE7CisrICBfcmxfZWNob2luZ19wID0gMTsK KyAKKyAjaWYgZGVmaW5lZCAoVElPQ0xTRVQpCisgICBpZiAodGlvcC0+ZmxhZ3MgJiBMRkxBR19T RVQpCitAQCAtMzAyLDcgKzIzNyw4IEBAIHByZXBhcmVfdGVybWluYWxfc2V0dGluZ3MgKG1ldGFf ZmxhZywgb2xkdGlvLCB0aW9wKQorICAgICAgaW50IG1ldGFfZmxhZzsKKyAgICAgIFRJT1RZUEUg b2xkdGlvLCAqdGlvcDsKKyB7CistICByZWFkbGluZV9lY2hvaW5nX3AgPSAob2xkdGlvLnNndHR5 Yi5zZ19mbGFncyAmIEVDSE8pOworKyAgX3JsX2VjaG9pbmdfcCA9IChvbGR0aW8uc2d0dHliLnNn X2ZsYWdzICYgRUNITyk7CisrICBfcmxfZWNob2N0bCA9IChvbGR0aW8uc2d0dHliLnNnX2ZsYWdz ICYgRUNIT0NUTCk7CisgCisgICAvKiBDb3B5IHRoZSBvcmlnaW5hbCBzZXR0aW5ncyB0byB0aGUg c3RydWN0dXJlIHdlJ3JlIGdvaW5nIHRvIHVzZSBmb3IKKyAgICAgIG91ciBzZXR0aW5ncy4gKi8K K0BAIC00MzMsMTAgKzM2OSwxMCBAQCBzYXZlX3R0eV9jaGFycyAodGlvcCkKKyAjaWZkZWYgVlJF UFJJTlQKKyAgIF9ybF90dHlfY2hhcnMudF9yZXByaW50ID0gdGlvcC0+Y19jY1tWUkVQUklOVF07 CisgI2VuZGlmCistICBfcmxfdHR5X2NoYXJzLnRfaW50ciA9IHRpb3AtPmNfY2NbVklOVFJdOwor LSAgX3JsX3R0eV9jaGFycy50X3F1aXQgPSB0aW9wLT5jX2NjW1ZRVUlUXTsKKysgIF9ybF9pbnRy X2NoYXIgPSBfcmxfdHR5X2NoYXJzLnRfaW50ciA9IHRpb3AtPmNfY2NbVklOVFJdOworKyAgX3Js X3F1aXRfY2hhciA9IF9ybF90dHlfY2hhcnMudF9xdWl0ID0gdGlvcC0+Y19jY1tWUVVJVF07Cisg I2lmZGVmIFZTVVNQCistICBfcmxfdHR5X2NoYXJzLnRfc3VzcCA9IHRpb3AtPmNfY2NbVlNVU1Bd OworKyAgX3JsX3N1c3BfY2hhciA9IF9ybF90dHlfY2hhcnMudF9zdXNwID0gdGlvcC0+Y19jY1tW U1VTUF07CisgI2VuZGlmCisgI2lmZGVmIFZEU1VTUAorICAgX3JsX3R0eV9jaGFycy50X2RzdXNw ID0gdGlvcC0+Y19jY1tWRFNVU1BdOworQEAgLTQ2NCw3ICs0MDAsNyBAQCBzdGF0aWMgdm9pZAor IHJsdHR5X3dhcm5pbmcgKG1zZykKKyAgICAgIGNoYXIgKm1zZzsKKyB7CistICBmcHJpbnRmIChz dGRlcnIsICJyZWFkbGluZTogd2FybmluZzogJXNcbiIsIG1zZyk7CisrICBfcmxfZXJybXNnICgi d2FybmluZzogJXMiLCBtc2cpOworIH0KKyAjZW5kaWYKKyAKK0BAIC00NzUsNyArNDExLDcgQEAg VElPVFlQRSAqdHA7CisgeworICAgaWYgKCh0cC0+Y19vZmxhZyAmIE9QT1NUKSA9PSAwKQorICAg ICB7CistICAgICAgcmx0dHlfd2FybmluZyAoInR1cm5pbmcgb24gT1BPU1QgZm9yIHRlcm1pbmFs XHIiKTsKKysgICAgICBfcmxfZXJybXNnICgid2FybmluZzogdHVybmluZyBvbiBPUE9TVCBmb3Ig dGVybWluYWxcciIpOworICAgICAgIHRwLT5jX29mbGFnIHw9IE9QT1NUfE9OTENSOworICAgICB9 CisgfQorQEAgLTUwMCw4ICs0MzYsOCBAQCBfZ2V0X3R0eV9zZXR0aW5ncyAodHR5LCB0aW9wKQor IAl9CisgICAgICAgaWYgKE9VVFBVVF9CRUlOR19GTFVTSEVEICh0aW9wKSkKKyAJeworLSNpZiBk ZWZpbmVkIChGTFVTSE8pICYmIGRlZmluZWQgKF9BSVg0MSkKKy0JICBybHR0eV93YXJuaW5nICgi dHVybmluZyBvZmYgb3V0cHV0IGZsdXNoaW5nIik7CisrI2lmIGRlZmluZWQgKEZMVVNITykKKysJ ICBfcmxfZXJybXNnICgid2FybmluZzogdHVybmluZyBvZmYgb3V0cHV0IGZsdXNoaW5nIik7Cisg CSAgdGlvcC0+Y19sZmxhZyAmPSB+RkxVU0hPOworIAkgIGJyZWFrOworICNlbHNlCitAQCAtNTgw LDcgKzUxNiwxMCBAQCBwcmVwYXJlX3Rlcm1pbmFsX3NldHRpbmdzIChtZXRhX2ZsYWcsIG9sZHRp bywgdGlvcCkKKyAgICAgIGludCBtZXRhX2ZsYWc7CisgICAgICBUSU9UWVBFIG9sZHRpbywgKnRp b3A7CisgeworLSAgcmVhZGxpbmVfZWNob2luZ19wID0gKG9sZHRpby5jX2xmbGFnICYgRUNITyk7 CisrICBfcmxfZWNob2luZ19wID0gKG9sZHRpby5jX2xmbGFnICYgRUNITyk7CisrI2lmIGRlZmlu ZWQgKEVDSE9DVEwpCisrICBfcmxfZWNob2N0bCA9IChvbGR0aW8uY19sZmxhZyAmIEVDSE9DVEwp OworKyNlbmRpZgorIAorICAgdGlvcC0+Y19sZmxhZyAmPSB+KElDQU5PTiB8IEVDSE8pOworIAor QEAgLTY0Myw3ICs1ODIsNyBAQCB2b2lkCisgcmxfcHJlcF90ZXJtaW5hbCAobWV0YV9mbGFnKQor ICAgICAgaW50IG1ldGFfZmxhZzsKKyB7CistICByZWFkbGluZV9lY2hvaW5nX3AgPSAxOworKyAg X3JsX2VjaG9pbmdfcCA9IDE7CisgfQorIAorIHZvaWQKK0BAIC02NjUsMTcgKzYwNCwxOSBAQCBy bF9wcmVwX3Rlcm1pbmFsIChtZXRhX2ZsYWcpCisgICAvKiBUcnkgdG8ga2VlcCB0aGlzIGZ1bmN0 aW9uIGZyb20gYmVpbmcgSU5UZXJydXB0ZWQuICovCisgICBfcmxfYmxvY2tfc2lnaW50ICgpOwor IAorLSAgdHR5ID0gZmlsZW5vIChybF9pbnN0cmVhbSk7CisrICB0dHkgPSBybF9pbnN0cmVhbSA/ IGZpbGVubyAocmxfaW5zdHJlYW0pIDogZmlsZW5vIChzdGRpbik7CisgCisgICBpZiAoZ2V0X3R0 eV9zZXR0aW5ncyAodHR5LCAmdGlvKSA8IDApCisgICAgIHsKKyAjaWYgZGVmaW5lZCAoRU5PVFNV UCkKKy0gICAgICAvKiBNYWNPUyBYLCBhdCBsZWFzdCwgbGllcyBhYm91dCB0aGUgdmFsdWUgb2Yg ZXJybm8gaWYgdGNnZXRhdHRyIGZhaWxzLiAqLworLSAgICAgIGlmIChlcnJubyA9PSBFTk9UVFkg fHwgZXJybm8gPT0gRU5PVFNVUCkKKysgICAgICAvKiBNYWNPUyBYIGFuZCBMaW51eCwgYXQgbGVh c3QsIGxpZSBhYm91dCB0aGUgdmFsdWUgb2YgZXJybm8gaWYKKysJIHRjZ2V0YXR0ciBmYWlscy4g Ki8KKysgICAgICBpZiAoZXJybm8gPT0gRU5PVFRZIHx8IGVycm5vID09IEVJTlZBTCB8fCBlcnJu byA9PSBFTk9UU1VQKQorICNlbHNlCistICAgICAgaWYgKGVycm5vID09IEVOT1RUWSkKKysgICAg ICBpZiAoZXJybm8gPT0gRU5PVFRZIHx8IGVycm5vID09IEVJTlZBTCkKKyAjZW5kaWYKKy0JcmVh ZGxpbmVfZWNob2luZ19wID0gMTsJCS8qIFhYWCAqLworKwlfcmxfZWNob2luZ19wID0gMTsJCS8q IFhYWCAqLworKworICAgICAgIF9ybF9yZWxlYXNlX3NpZ2ludCAoKTsKKyAgICAgICByZXR1cm47 CisgICAgIH0KK0BAIC03MzcsNyArNjc4LDcgQEAgcmxfZGVwcmVwX3Rlcm1pbmFsICgpCisgICAv KiBUcnkgdG8ga2VlcCB0aGlzIGZ1bmN0aW9uIGZyb20gYmVpbmcgaW50ZXJydXB0ZWQuICovCisg ICBfcmxfYmxvY2tfc2lnaW50ICgpOworIAorLSAgdHR5ID0gZmlsZW5vIChybF9pbnN0cmVhbSk7 CisrICB0dHkgPSBybF9pbnN0cmVhbSA/IGZpbGVubyAocmxfaW5zdHJlYW0pIDogZmlsZW5vIChz dGRvdXQpOworIAorICAgaWYgKF9ybF9lbmFibGVfa2V5cGFkKQorICAgICBfcmxfY29udHJvbF9r ZXlwYWQgKDApOworQEAgLTg2Miw3ICs4MDMsNyBAQCBzZXRfc3BlY2lhbF9jaGFyIChrbWFwLCB0 aW9wLCBzYywgZnVuYykKKyB9CisgCisgI2RlZmluZSBSRVNFVF9TUEVDSUFMKGMpIFwKKy0gIGlm IChjICE9IC0xICYmIGttYXBbKHVuc2lnbmVkIGNoYXIpY10udHlwZSA9PSBJU0ZVTkMpCisrICBp ZiAoYyAhPSAtMSAmJiBrbWFwWyh1bnNpZ25lZCBjaGFyKWNdLnR5cGUgPT0gSVNGVU5DKSBcCisg ICAgIGttYXBbKHVuc2lnbmVkIGNoYXIpY10uZnVuY3Rpb24gPSBybF9pbnNlcnQ7CisgCisgc3Rh dGljIHZvaWQKK0BAIC05MzMsNyArODc0LDYgQEAgcmx0dHlfc2V0X2RlZmF1bHRfYmluZGluZ3Mg KGttYXApCisgI2lmICFkZWZpbmVkIChOT19UVFlfRFJJVkVSKQorICAgVElPVFlQRSB0dHlidWZm OworICAgaW50IHR0eTsKKy0gIHN0YXRpYyBpbnQgY2FsbGVkID0gMDsKKyAKKyAgIHR0eSA9IGZp bGVubyAocmxfaW5zdHJlYW0pOworIAorLS0tIGEvcmVhZGxpbmUvcmx0dHkuaAorKysrIGIvcmVh ZGxpbmUvcmx0dHkuaAorQEAgLTEsMjUgKzEsMjMgQEAKKyAvKiBybHR0eS5oIC0gdHR5IGRyaXZl ci1yZWxhdGVkIGRlZmluaXRpb25zIHVzZWQgYnkgc29tZSBsaWJyYXJ5IGZpbGVzLiAqLworIAor LS8qIENvcHlyaWdodCAoQykgMTk5NSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysv KiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KyAKKy0gICBUaGlzIGZpbGUgY29udGFpbnMgdGhlIFJlYWRsaW5lIExpYnJhcnkgKHRoZSBMaWJy YXJ5KSwgYSBzZXQgb2YKKy0gICByb3V0aW5lcyBmb3IgcHJvdmlkaW5nIEVtYWNzIHN0eWxlIGxp bmUgaW5wdXQgdG8gcHJvZ3JhbXMgdGhhdCBhc2sKKy0gICBmb3IgaXQuCisrICAgVGhpcyBmaWxl IGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFy eQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBh bmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBMaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBSZWFkbGlu ZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24u CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor IAorLSAgIFRoZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsIGJ1dAorLSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorLSAgIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAg VGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUg c29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09Q WUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBs aWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRl bXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRlZmluZWQgKF9STFRUWV9IXykKKyAj ZGVmaW5lIF9STFRUWV9IXworQEAgLTc5LDcgKzc3LDQgQEAgdHlwZWRlZiBzdHJ1Y3QgX3JsX3R0 eV9jaGFycyB7CisgICB1bnNpZ25lZCBjaGFyIHRfc3RhdHVzOworIH0gX1JMX1RUWV9DSEFSUzsK KyAKKy1leHRlcm4gdm9pZCBfcmxfYmxvY2tfc2lnaW50IFBBUkFNUygodm9pZCkpOworLWV4dGVy biB2b2lkIF9ybF9yZWxlYXNlX3NpZ2ludCBQQVJBTVMoKHZvaWQpKTsKKy0KKyAjZW5kaWYgLyog X1JMVFRZX0hfICovCistLS0gYS9yZWFkbGluZS9ybHR5cGVkZWZzLmgKKysrKyBiL3JlYWRsaW5l L3JsdHlwZWRlZnMuaAorQEAgLTEsMjQgKzEsMjMgQEAKKyAvKiBybHR5cGVkZWZzLmggLS0gVHlw ZSBkZWNsYXJhdGlvbnMgZm9yIHJlYWRsaW5lIGZ1bmN0aW9ucy4gKi8KKyAKKy0vKiBDb3B5cmln aHQgKEMpIDIwMDAtMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5 cmlnaHQgKEMpIDIwMDAtMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0g ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFy eSBmb3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBh bmQgaGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVh ZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5l cyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAg ICAKKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBS ZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkK Ky0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQK Ky0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5T RS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9u ZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorKyovCisgCisgI2lmbmRlZiBfUkxfVFlQRURFRlNfSF8KKyAjZGVmaW5lIF9STF9UWVBF REVGU19IXworLS0tIGEvcmVhZGxpbmUvcmx3aW5zaXplLmgKKysrKyBiL3JlYWRsaW5lL3Jsd2lu c2l6ZS5oCitAQCAtMSwyNiArMSwyNCBAQAorIC8qIHJsd2luc2l6ZS5oIC0tIGFuIGF0dGVtcHQg dG8gaXNvbGF0ZSBzb21lIG9mIHRoZSBzeXN0ZW0tc3BlY2lmaWMgZGVmaW5lcworICAgIGZvciBg c3RydWN0IHdpbnNpemUnIGFuZCBUSU9DR1dJTlNaLiAqLworIAorLS8qIENvcHlyaWdodCAoQykg MTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDE5 OTctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUg Y29udGFpbnMgdGhlIFJlYWRsaW5lIExpYnJhcnkgKHRoZSBMaWJyYXJ5KSwgYSBzZXQgb2YKKy0g ICByb3V0aW5lcyBmb3IgcHJvdmlkaW5nIEVtYWNzIHN0eWxlIGxpbmUgaW5wdXQgdG8gcHJvZ3Jh bXMgdGhhdCBhc2sKKy0gICBmb3IgaXQuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdO VSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5n IGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5n LiAgICAgIAorIAorLSAgIFRoZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJl OiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK Ky0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAo YXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCisrICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFRoZSBMaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAor LSAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlIEdOVQorLSAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAg IGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAg SWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUg MzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdp dGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisrKi8KKyAKKyAjaWYgIWRlZmluZWQgKF9STFdJTlNJWkVfSF8pCisgI2RlZmluZSBfUkxXSU5T SVpFX0hfCitAQCAtNTMsNSArNTEsOCBAQAorICMgIGVuZGlmIC8qIEhBVkVfU1lTX1BURV9IICov CisgI2VuZGlmIC8qICFTVFJVQ1RfV0lOU0laRV9JTl9URVJNSU9TICYmICFTVFJVQ1RfV0lOU0la RV9JTl9TWVNfSU9DVEwgKi8KKyAKKy0jZW5kaWYgLyogX1JMX1dJTlNJWkVfSCAqLworKyNpZiBk ZWZpbmVkIChNX1VOSVgpICYmICFkZWZpbmVkIChfU0NPX0RTKSAmJiAhZGVmaW5lZCAodGNmbG93 KQorKyMgIGRlZmluZSB0Y2Zsb3coZmQsIGFjdGlvbikJaW9jdGwoZmQsIFRDWE9OQywgYWN0aW9u KQorKyNlbmRpZgorIAorKyNlbmRpZiAvKiBfUkxfV0lOU0laRV9IICovCistLS0gYS9yZWFkbGlu ZS9zYXZlc3RyaW5nLmMKKysrKyBiL3JlYWRsaW5lL3NhdmVzdHJpbmcuYworQEAgLTEsMjQgKzEs MjQgQEAKKy0vKiBzYXZlc3RyaW5nLmMgICovCisrLyogc2F2ZXN0cmluZy5jIC0gZnVuY3Rpb24g dmVyc2lvbiBvZiBzYXZlc3RyaW5nIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAqLworIAor IC8qIENvcHlyaWdodCAoQykgMTk5OCwyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwg YSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZl IGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFk aW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0 aW5nLiAgICAgIAorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAgIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv cgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExp YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlCistICAgdXNl ZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgCistICAgVGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQgd2l0aCBHTlUgc29mdHdh cmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBjYWxsZWQgQ09QWUlORyBv ciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNl LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQ bGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8KKysgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrKi8KKysKKyAjZGVmaW5lIFJFQURMSU5FX0xJQlJBUlkKKyAKKyAjaW5j bHVkZSA8Y29uZmlnLmg+CitAQCAtMzMsNSArMzMsOSBAQCBjaGFyICoKKyBzYXZlc3RyaW5nIChz KQorICAgICAgY29uc3QgY2hhciAqczsKKyB7CistICByZXR1cm4gKChjaGFyICopc3RyY3B5ICgo Y2hhciAqKXhtYWxsb2MgKDEgKyBzdHJsZW4gKHMpKSwgKHMpKSk7CisrICBjaGFyICpyZXQ7Cisr CisrICByZXQgPSAoY2hhciAqKXhtYWxsb2MgKHN0cmxlbiAocykgKyAxKTsKKysgIHN0cmNweSAo cmV0LCBzKTsKKysgIHJldHVybiByZXQ7CisgfQorLS0tIGEvcmVhZGxpbmUvc2VhcmNoLmMKKysr KyBiL3JlYWRsaW5lL3NlYXJjaC5jCitAQCAtMSwyNSArMSwyNCBAQAorIC8qIHNlYXJjaC5jIC0g Y29kZSBmb3Igbm9uLWluY3JlbWVudGFsIHNlYXJjaGluZyBpbiBlbWFjcyBhbmQgdmkgbW9kZXMu ICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTkyLTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTkyLTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFJlYWRsaW5lIExp YnJhcnkgKHRoZSBMaWJyYXJ5KSwgYSBzZXQgb2YKKy0gICByb3V0aW5lcyBmb3IgcHJvdmlkaW5n IEVtYWNzIHN0eWxlIGxpbmUgaW5wdXQgdG8gcHJvZ3JhbXMgdGhhdCBhc2sKKy0gICBmb3IgaXQu CisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFk bGluZSksIGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRl cmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBMaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55 IGxhdGVyIHZlcnNpb24uCistCistICAgVGhlIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CistICAgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCist ICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3 YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcg b3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5z ZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUg UGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFJlYWRsaW5l IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKysKKyAjZGVmaW5l IFJFQURMSU5FX0xJQlJBUlkKKyAKKyAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKK0BAIC03 MCw3ICs2OSw2IEBAIHN0YXRpYyBpbnQgcmxfaGlzdG9yeV9zZWFyY2hfcG9zOworIHN0YXRpYyBj aGFyICpoaXN0b3J5X3NlYXJjaF9zdHJpbmc7Cisgc3RhdGljIGludCBoaXN0b3J5X3N0cmluZ19z aXplOworIAorLXN0YXRpYyBVTkRPX0xJU1QgKm5vbmluY19zYXZlZF91bmRvX2xpc3Q7Cisgc3Rh dGljIHZvaWQgbWFrZV9oaXN0b3J5X2xpbmVfY3VycmVudCBQQVJBTVMoKEhJU1RfRU5UUlkgKikp OworIHN0YXRpYyBpbnQgbm9uaW5jX3NlYXJjaF9mcm9tX3BvcyBQQVJBTVMoKGNoYXIgKiwgaW50 LCBpbnQpKTsKKyBzdGF0aWMgaW50IG5vbmluY19kb3NlYXJjaCBQQVJBTVMoKGNoYXIgKiwgaW50 KSk7CitAQCAtMjEyLDggKzIxMCw4IEBAIF9ybF9uc2VhcmNoX2luaXQgKGRpciwgcGNoYXIpCisg ICBybF9lbmQgPSBybF9wb2ludCA9IDA7CisgCisgICBwID0gX3JsX21ha2VfcHJvbXB0X2Zvcl9z ZWFyY2ggKHBjaGFyID8gcGNoYXIgOiAnOicpOworLSAgcmxfbWVzc2FnZSAocCwgMCwgMCk7Cist ICBmcmVlIChwKTsKKysgIHJsX21lc3NhZ2UgKCIlcyIsIHAsIDApOworKyAgeGZyZWUgKHApOwor IAorICAgUkxfU0VUU1RBVEUoUkxfU1RBVEVfTlNFQVJDSCk7CisgCistLS0gYS9yZWFkbGluZS9z aGVsbC5jCisrKysgYi9yZWFkbGluZS9zaGVsbC5jCitAQCAtMSwyNSArMSwyNSBAQAorIC8qIHNo ZWxsLmMgLS0gcmVhZGxpbmUgdXRpbGl0eSBmdW5jdGlvbnMgdGhhdCBhcmUgbm9ybWFsbHkgcHJv dmlkZWQgYnkKKyAJICAgICAgYmFzaCB3aGVuIHJlYWRsaW5lIGlzIGxpbmtlZCBhcyBwYXJ0IG9m IHRoZSBzaGVsbC4gKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5OTcgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTk3LTIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBS ZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCistICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0 IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKysgICBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJy YXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0 IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0CistICAgYW5kL29y IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJlYWRsaW5lIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBl ZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxl IGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNv cHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s CistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAq LworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworKworICNkZWZpbmUgUkVBRExJTkVf TElCUkFSWQorIAorICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19IKQorQEAgLTEzMCwxMiArMTMw LDEyIEBAIHNoX3NldF9saW5lc19hbmRfY29sdW1ucyAobGluZXMsIGNvbHMpCisgICBiID0gKGNo YXIgKil4bWFsbG9jIChJTlRfU1RSTEVOX0JPVU5EIChpbnQpICsgMSk7CisgICBzcHJpbnRmIChi LCAiJWQiLCBsaW5lcyk7CisgICBzZXRlbnYgKCJMSU5FUyIsIGIsIDEpOworLSAgZnJlZSAoYik7 CisrICB4ZnJlZSAoYik7CisgCisgICBiID0gKGNoYXIgKil4bWFsbG9jIChJTlRfU1RSTEVOX0JP VU5EIChpbnQpICsgMSk7CisgICBzcHJpbnRmIChiLCAiJWQiLCBjb2xzKTsKKyAgIHNldGVudiAo IkNPTFVNTlMiLCBiLCAxKTsKKy0gIGZyZWUgKGIpOworKyAgeGZyZWUgKGIpOworICNlbHNlIC8q ICFIQVZFX1NFVEVOViAqLworICMgIGlmIGRlZmluZWQgKEhBVkVfUFVURU5WKQorICAgYiA9IChj aGFyICopeG1hbGxvYyAoSU5UX1NUUkxFTl9CT1VORCAoaW50KSArIHNpemVvZiAoIkxJTkVTPSIp ICsgMSk7CistLS0gYS9yZWFkbGluZS9zaGxpYi9NYWtlZmlsZS5pbgorKysrIGIvcmVhZGxpbmUv c2hsaWIvTWFrZWZpbGUuaW4KK0BAIC0xLDIxICsxLDIwIEBACisgIyMgLSotIHRleHQgLSotICMj CisgIyBNYWtlZmlsZSBmb3IgdGhlIEdOVSByZWFkbGluZSBsaWJyYXJ5IHNoYXJlZCBsaWJyYXJ5 IHN1cHBvcnQuCisgIworLSMgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDMgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrIyBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKyAKKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlv dXIgb3B0aW9uKQorLSMgYW55IGxhdGVyIHZlcnNpb24uCisrIyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisgCistIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistIyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistIyBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMgICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorIAorLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistIyBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuCisrIyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrIyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIAorIFBBQ0tBR0UgPSBAUEFDS0FHRV9OQU1FQAor IFZFUlNJT04gPSBAUEFDS0FHRV9WRVJTSU9OQAorQEAgLTMxLDcgKzMwLDcgQEAgUkxfTElCUkFS WV9OQU1FID0gcmVhZGxpbmUKKyBkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKKyAKKyBzcmNk aXIgPSBAc3JjZGlyQAorLVZQQVRIID0gLjpAdG9wX3NyY2RpckAKKytWUEFUSCA9IEB0b3Bfc3Jj ZGlyQAorIHRvcGRpciA9IEB0b3Bfc3JjZGlyQAorIEJVSUxEX0RJUiA9IEBCVUlMRF9ESVJACisg CitAQCAtNTEsNiArNTAsNyBAQCBMTiA9IGxuCisgU0hFTEwgPSBATUFLRV9TSEVMTEAKKyAKKyBo b3N0X29zID0gQGhvc3Rfb3NACisraG9zdF92ZW5kb3IgPSBAaG9zdF92ZW5kb3JACisgCisgcHJl Zml4ID0gQHByZWZpeEAKKyBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKK0BAIC01OCw3ICs1 OCw3IEBAIGluY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKKyBiaW5kaXIgPSBAYmluZGlyQAorIGxp YmRpciA9IEBsaWJkaXJACisgZGF0YWRpciA9IEBkYXRhZGlyQAorLWxvY2FsZWRpciA9ICQoZGF0 YWRpcikvbG9jYWxlCisrbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKKyAKKyAjIFN1cHBvcnQgYW4g YWx0ZXJuYXRlIGRlc3RpbmF0aW9uIHJvb3QgZGlyZWN0b3J5IGZvciBwYWNrYWdlIGJ1aWxkaW5n CisgREVTVERJUiA9CitAQCAtMTIyLDggKzEyMiw2IEBAIFNIQVJFRF9SRUFETElORSA9ICQoU0hM SUJfTElCUFJFRilyZWFkbGluZSQoU0hMSUJfRE9UKSQoU0hMSUJfTElCVkVSU0lPTikKKyBTSEFS RURfSElTVE9SWSA9ICQoU0hMSUJfTElCUFJFRiloaXN0b3J5JChTSExJQl9ET1QpJChTSExJQl9M SUJWRVJTSU9OKQorIFNIQVJFRF9MSUJTID0gJChTSEFSRURfUkVBRExJTkUpICQoU0hBUkVEX0hJ U1RPUlkpCisgCistV0NXSURUSF9PQkogPSBAV0NXSURUSF9PQkpACistCisgIyBUaGUgQyBjb2Rl IHNvdXJjZSBmaWxlcyBmb3IgdGhpcyBsaWJyYXJ5LgorIENTT1VSQ0VTID0gJCh0b3BkaXIpL3Jl YWRsaW5lLmMgJCh0b3BkaXIpL2Z1bm1hcC5jICQodG9wZGlyKS9rZXltYXBzLmMgXAorIAkgICAk KHRvcGRpcikvdmlfbW9kZS5jICQodG9wZGlyKS9wYXJlbnMuYyAkKHRvcGRpcikvcmx0dHkuYyBc CitAQCAtMTMxLDEyICsxMjksMTIgQEAgQ1NPVVJDRVMgPSAkKHRvcGRpcikvcmVhZGxpbmUuYyAk KHRvcGRpcikvZnVubWFwLmMgJCh0b3BkaXIpL2tleW1hcHMuYyBcCisgCSAgICQodG9wZGlyKS9k aXNwbGF5LmMgJCh0b3BkaXIpL3NpZ25hbHMuYyAkKHRvcGRpcikvZW1hY3Nfa2V5bWFwLmMgXAor IAkgICAkKHRvcGRpcikvdmlfa2V5bWFwLmMgJCh0b3BkaXIpL3V0aWwuYyAkKHRvcGRpcikva2ls bC5jIFwKKyAJICAgJCh0b3BkaXIpL3VuZG8uYyAkKHRvcGRpcikvbWFjcm8uYyAkKHRvcGRpcikv aW5wdXQuYyBcCistCSAgICQodG9wZGlyKS9jYWxsYmFjay5jICQodG9wZGlyKS90ZXJtaW5hbC5j ICQodG9wZGlyKS94bWFsbG9jLmMgXAorKwkgICAkKHRvcGRpcikvY2FsbGJhY2suYyAkKHRvcGRp cikvdGVybWluYWwuYyAkKHRvcGRpcikveG1hbGxvYy5jICQodG9wZGlyKS94ZnJlZS5jIFwKKyAJ ICAgJCh0b3BkaXIpL2hpc3RvcnkuYyAkKHRvcGRpcikvaGlzdHNlYXJjaC5jICQodG9wZGlyKS9o aXN0ZXhwYW5kLmMgXAorIAkgICAkKHRvcGRpcikvaGlzdGZpbGUuYyAkKHRvcGRpcikvbmxzLmMg JCh0b3BkaXIpL3NlYXJjaC5jIFwKKyAJICAgJCh0b3BkaXIpL3NoZWxsLmMgJCh0b3BkaXIpL3Nh dmVzdHJpbmcuYyAkKHRvcGRpcikvdGlsZGUuYyBcCisgCSAgICQodG9wZGlyKS90ZXh0LmMgJCh0 b3BkaXIpL21pc2MuYyAkKHRvcGRpcikvY29tcGF0LmMgXAorLQkgICAkKHRvcGRpcikvbWJ1dGls LmMgJCh0b3BkaXIpL3N1cHBvcnQvd2N3aWR0aC5jCisrCSAgICQodG9wZGlyKS9tYnV0aWwuYwor IAorICMgVGhlIGhlYWRlciBmaWxlcyBmb3IgdGhpcyBsaWJyYXJ5LgorIEhTT1VSQ0VTID0gcmVh ZGxpbmUuaCBybGRlZnMuaCBjaGFyZGVmcy5oIGtleW1hcHMuaCBoaXN0b3J5LmggaGlzdGxpYi5o IFwKK0BAIC0xNDksOCArMTQ3LDggQEAgU0hBUkVEX1RJTERFT0JKID0gdGlsZGUuc28KKyBTSEFS RURfT0JKID0gcmVhZGxpbmUuc28gdmlfbW9kZS5zbyBmdW5tYXAuc28ga2V5bWFwcy5zbyBwYXJl bnMuc28gc2VhcmNoLnNvIFwKKyAJICBybHR0eS5zbyBjb21wbGV0ZS5zbyBiaW5kLnNvIGlzZWFy Y2guc28gZGlzcGxheS5zbyBzaWduYWxzLnNvIFwKKyAJICB1dGlsLnNvIGtpbGwuc28gdW5kby5z byBtYWNyby5zbyBpbnB1dC5zbyBjYWxsYmFjay5zbyB0ZXJtaW5hbC5zbyBcCistCSAgdGV4dC5z byBubHMuc28gbWlzYy5zbyB4bWFsbG9jLnNvICQoU0hBUkVEX0hJU1RPQkopICQoU0hBUkVEX1RJ TERFT0JKKSBcCistCSAgY29tcGF0LnNvICQoV0NXSURUSF9PQkopCisrCSAgdGV4dC5zbyBubHMu c28gbWlzYy5zbyB4bWFsbG9jLnNvIHhmcmVlLnNvICQoU0hBUkVEX0hJU1RPQkopICQoU0hBUkVE X1RJTERFT0JKKSBcCisrCSAgY29tcGF0LnNvCisgCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKK0BA IC0xNzAsMTMgKzE2OCw5IEBAICQoU0hBUkVEX1JFQURMSU5FKToJJChTSEFSRURfT0JKKQorIAkk KFJNKSAkQAorIAkkKFNIT0JKX0xEKSAke1NIT0JKX0xERkxBR1N9ICR7U0hMSUJfWExERkxBR1N9 IC1vICRAICQoU0hBUkVEX09CSikgJChTSExJQl9MSUJTKQorIAorLSQoU0hBUkVEX0hJU1RPUlkp OgkkKFNIQVJFRF9ISVNUT0JKKSB4bWFsbG9jLnNvCistCSQoUk0pICRACistCSQoU0hPQkpfTEQp ICR7U0hPQkpfTERGTEFHU30gJHtTSExJQl9YTERGTEFHU30gLW8gJEAgJChTSEFSRURfSElTVE9C SikgeG1hbGxvYy5zbyAkKFNITElCX0xJQlMpCistCistd2N3aWR0aC5vOiAkKHNyY2Rpcikvc3Vw cG9ydC93Y3dpZHRoLmMKKyskKFNIQVJFRF9ISVNUT1JZKToJJChTSEFSRURfSElTVE9CSikgeG1h bGxvYy5zbyB4ZnJlZS5zbworIAkkKFJNKSAkQAorLQkkKFNIT0JKX0NDKSAtYyAkKENDRkxBR1Mp ICQoU0hPQkpfRkxBR1MpICQoc3JjZGlyKS9zdXBwb3J0L3djd2lkdGguYworKwkkKFNIT0JKX0xE KSAke1NIT0JKX0xERkxBR1N9ICR7U0hMSUJfWExERkxBR1N9IC1vICRAICQoU0hBUkVEX0hJU1RP QkopIHhtYWxsb2Muc28geGZyZWUuc28gJChTSExJQl9MSUJTKQorIAorICMgU2luY2UgdGlsZGUu YyBpcyBzaGFyZWQgYmV0d2VlbiByZWFkbGluZSBhbmQgYmFzaCwgbWFrZSBzdXJlIHdlIGNvbXBp bGUgCisgIyBpdCB3aXRoIHRoZSByaWdodCBmbGFncyB3aGVuIGl0J3MgYnVpbHQgYXMgcGFydCBv ZiByZWFkbGluZQorQEAgLTE4NywxNSArMTgxLDE2IEBAIHRpbGRlLnNvOiAgICAgICAgdGlsZGUu YworIAorIGluc3RhbGxkaXJzOiAkKHRvcGRpcikvc3VwcG9ydC9ta2RpcnMKKyAJLSQoU0hFTEwp ICQodG9wZGlyKS9zdXBwb3J0L21rZGlycyAkKERFU1RESVIpJChsaWJkaXIpCisrCS0kKFNIRUxM KSAkKHRvcGRpcikvc3VwcG9ydC9ta2RpcnMgJChERVNURElSKSQoYmluZGlyKQorIAorIGluc3Rh bGw6IGluc3RhbGxkaXJzICQoU0hMSUJfU1RBVFVTKQorLQkkKFNIRUxMKSAkKHRvcGRpcikvc3Vw cG9ydC9zaGxpYi1pbnN0YWxsIC1PICQoaG9zdF9vcykgLWQgJChERVNURElSKSQobGliZGlyKSAt YiAkKERFU1RESVIpJChiaW5kaXIpIC1pICIkKElOU1RBTExfREFUQSkiICQoU0hBUkVEX0hJU1RP UlkpCistCSQoU0hFTEwpICQodG9wZGlyKS9zdXBwb3J0L3NobGliLWluc3RhbGwgLU8gJChob3N0 X29zKSAtZCAkKERFU1RESVIpJChsaWJkaXIpIC1iICQoREVTVERJUikkKGJpbmRpcikgLWkgIiQo SU5TVEFMTF9EQVRBKSIgJChTSEFSRURfUkVBRExJTkUpCisrCSQoU0hFTEwpICQodG9wZGlyKS9z dXBwb3J0L3NobGliLWluc3RhbGwgLU8gJChob3N0X29zKSAtViAkKGhvc3RfdmVuZG9yKSAtZCAk KERFU1RESVIpJChsaWJkaXIpIC1iICQoREVTVERJUikkKGJpbmRpcikgLWkgIiQoSU5TVEFMTF9E QVRBKSIgJChTSEFSRURfSElTVE9SWSkKKysJJChTSEVMTCkgJCh0b3BkaXIpL3N1cHBvcnQvc2hs aWItaW5zdGFsbCAtTyAkKGhvc3Rfb3MpIC1WICQoaG9zdF92ZW5kb3IpIC1kICQoREVTVERJUikk KGxpYmRpcikgLWIgJChERVNURElSKSQoYmluZGlyKSAtaSAiJChJTlNUQUxMX0RBVEEpIiAkKFNI QVJFRF9SRUFETElORSkKKyAJQGVjaG8gaW5zdGFsbDogeW91IG1heSBuZWVkIHRvIHJ1biBsZGNv bmZpZworIAorIHVuaW5zdGFsbDoKKy0JJChTSEVMTCkgJCh0b3BkaXIpL3N1cHBvcnQvc2hsaWIt aW5zdGFsbCAtTyAkKGhvc3Rfb3MpIC1kICQoREVTVERJUikkKGxpYmRpcikgLWIgJChERVNURElS KSQoYmluZGlyKSAtVSAkKFNIQVJFRF9ISVNUT1JZKQorLQkkKFNIRUxMKSAkKHRvcGRpcikvc3Vw cG9ydC9zaGxpYi1pbnN0YWxsIC1PICQoaG9zdF9vcykgLWQgJChERVNURElSKSQobGliZGlyKSAt YiAkKERFU1RESVIpJChiaW5kaXIpIC1VICQoU0hBUkVEX1JFQURMSU5FKQorKwkkKFNIRUxMKSAk KHRvcGRpcikvc3VwcG9ydC9zaGxpYi1pbnN0YWxsIC1PICQoaG9zdF9vcykgLVYgJChob3N0X3Zl bmRvcikgLWQgJChERVNURElSKSQobGliZGlyKSAtYiAkKERFU1RESVIpJChiaW5kaXIpIC1VICQo U0hBUkVEX0hJU1RPUlkpCisrCSQoU0hFTEwpICQodG9wZGlyKS9zdXBwb3J0L3NobGliLWluc3Rh bGwgLU8gJChob3N0X29zKSAtViAkKGhvc3RfdmVuZG9yKSAtZCAkKERFU1RESVIpJChsaWJkaXIp IC1iICQoREVTVERJUikkKGJpbmRpcikgLVUgJChTSEFSRURfUkVBRExJTkUpCisgCUBlY2hvIHVu aW5zdGFsbDogeW91IG1heSBuZWVkIHRvIHJ1biBsZGNvbmZpZworIAorIGNsZWFuIG1vc3RseWNs ZWFuOglmb3JjZQorQEAgLTMyMiw2ICszMTcsOCBAQCB2aV9tb2RlLnNvOiAkKHRvcGRpcikvcmxk ZWZzLmggJHtCVUlMRF9ESVJ9L2NvbmZpZy5oICQodG9wZGlyKS9ybGNvbmYuaAorIHZpX21vZGUu c286ICQodG9wZGlyKS9yZWFkbGluZS5oICQodG9wZGlyKS9rZXltYXBzLmggJCh0b3BkaXIpL2No YXJkZWZzLmgKKyB2aV9tb2RlLnNvOiAkKHRvcGRpcikvaGlzdG9yeS5oICQodG9wZGlyKS9hbnNp X3N0ZGxpYi5oICQodG9wZGlyKS90aWxkZS5oCisgdmlfbW9kZS5zbzogJCh0b3BkaXIpL3JsdHlw ZWRlZnMuaAorK3hmcmVlLnNvOiAke0JVSUxEX0RJUn0vY29uZmlnLmgKKyt4ZnJlZS5zbzogJCh0 b3BkaXIpL2Fuc2lfc3RkbGliLmgKKyB4bWFsbG9jLnNvOiAke0JVSUxEX0RJUn0vY29uZmlnLmgK KyB4bWFsbG9jLnNvOiAkKHRvcGRpcikvYW5zaV9zdGRsaWIuaAorIAorQEAgLTM3OSw2ICszNzYs NyBAQCB0aWxkZS5zbzogJCh0b3BkaXIpL3htYWxsb2MuaAorIHVuZG8uc286ICQodG9wZGlyKS94 bWFsbG9jLmgKKyB1dGlsLnNvOiAkKHRvcGRpcikveG1hbGxvYy5oCisgdmlfbW9kZS5zbzogJCh0 b3BkaXIpL3htYWxsb2MuaAorK3hmcmVlLnNvOiAkKHRvcGRpcikveG1hbGxvYy5oCisgeG1hbGxv Yy5zbzogJCh0b3BkaXIpL3htYWxsb2MuaAorIAorIGNvbXBsZXRlLm86ICQodG9wZGlyKS9ybG1i dXRpbC5oCitAQCAtNDIwLDYgKzQxOCw3IEBAIHRpbGRlLnNvOiAkKHRvcGRpcikvdGlsZGUuYwor IHVuZG8uc286ICQodG9wZGlyKS91bmRvLmMKKyB1dGlsLnNvOiAkKHRvcGRpcikvdXRpbC5jCisg dmlfbW9kZS5zbzogJCh0b3BkaXIpL3ZpX21vZGUuYworK3hmcmVlLnNvOiAkKHRvcGRpcikveGZy ZWUuYworIHhtYWxsb2Muc286ICQodG9wZGlyKS94bWFsbG9jLmMKKyAKKyBoaXN0ZXhwYW5kLnNv OiAkKHRvcGRpcikvaGlzdGV4cGFuZC5jCitAQCAtNDU0LDYgKzQ1Myw3IEBAIHRpbGRlLnNvOiB0 aWxkZS5jCisgdW5kby5zbzogdW5kby5jCisgdXRpbC5zbzogdXRpbC5jCisgdmlfbW9kZS5zbzog dmlfbW9kZS5jCisreGZyZWUuc286IHhmcmVlLmMKKyB4bWFsbG9jLnNvOiB4bWFsbG9jLmMKKyAK KyBoaXN0ZXhwYW5kLnNvOiBoaXN0ZXhwYW5kLmMKKy0tLSBhL3JlYWRsaW5lL3NpZ25hbHMuYwor KysrIGIvcmVhZGxpbmUvc2lnbmFscy5jCitAQCAtMSwyNCArMSwyNCBAQAorIC8qIHNpZ25hbHMu YyAtLSBzaWduYWwgaGFuZGxpbmcgc3VwcG9ydCBmb3IgcmVhZGxpbmUuICovCisgCistLyogQ29w eXJpZ2h0IChDKSAxOTg3LTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyog Q29weXJpZ2h0IChDKSAxOTg3LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisg CistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxp YnJhcnkgZm9yCistICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5w dXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05V IFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcg bGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcu ICAgICAgCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisr ICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFy eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWws IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5CistICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwg YW5kCistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJ Q0VOU0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNl LCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAg YWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKysqLworKworICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZp bmVkIChIQVZFX0NPTkZJR19IKQorQEAgLTQwLDEzICs0MCwxNCBAQAorICMgIGluY2x1ZGUgPHN5 cy9pb2N0bC5oPgorICNlbmRpZiAvKiBHV0lOU1pfSU5fU1lTX0lPQ1RMICovCisgCistI2lmIGRl ZmluZWQgKEhBTkRMRV9TSUdOQUxTKQorIC8qIFNvbWUgc3RhbmRhcmQgbGlicmFyeSByb3V0aW5l cy4gKi8KKyAjaW5jbHVkZSAicmVhZGxpbmUuaCIKKyAjaW5jbHVkZSAiaGlzdG9yeS5oIgorIAor ICNpbmNsdWRlICJybHByaXZhdGUuaCIKKyAKKysjaWYgZGVmaW5lZCAoSEFORExFX1NJR05BTFMp CisrCisgI2lmICFkZWZpbmVkIChSRVRTSUdUWVBFKQorICMgIGlmIGRlZmluZWQgKFZPSURfU0lH SEFORExFUikKKyAjICAgIGRlZmluZSBSRVRTSUdUWVBFIHZvaWQKK0BAIC04MCw2ICs4MSw5IEBA IHR5cGVkZWYgc3RydWN0IHsgU2lnSGFuZGxlciAqc2FfaGFuZGxlcjsgaW50IHNhX21hc2ssIHNh X2ZsYWdzOyB9IHNpZ2hhbmRsZXJfY3h0Cisgc3RhdGljIFNpZ0hhbmRsZXIgKnJsX3NldF9zaWdo YW5kbGVyIFBBUkFNUygoaW50LCBTaWdIYW5kbGVyICosIHNpZ2hhbmRsZXJfY3h0ICopKTsKKyBz dGF0aWMgdm9pZCBybF9tYXliZV9zZXRfc2lnaGFuZGxlciBQQVJBTVMoKGludCwgU2lnSGFuZGxl ciAqLCBzaWdoYW5kbGVyX2N4dCAqKSk7CisgCisrc3RhdGljIFJFVFNJR1RZUEUgcmxfc2lnbmFs X2hhbmRsZXIgUEFSQU1TKChpbnQpKTsKKytzdGF0aWMgUkVUU0lHVFlQRSBfcmxfaGFuZGxlX3Np Z25hbCBQQVJBTVMoKGludCkpOworKyAgICAgCisgLyogRXhwb3J0ZWQgdmFyaWFibGVzIGZvciB1 c2UgYnkgYXBwbGljYXRpb25zLiAqLworIAorIC8qIElmIG5vbi16ZXJvLCByZWFkbGluZSB3aWxs IGluc3RhbGwgaXRzIG93biBzaWduYWwgaGFuZGxlcnMgZm9yCitAQCAtOTMsNiArOTcsMTggQEAg aW50IHJsX2NhdGNoX3NpZ3dpbmNoID0gMTsKKyBpbnQgcmxfY2F0Y2hfc2lnd2luY2ggPSAwOwkv KiBmb3IgdGhlIHJlYWRsaW5lIHN0YXRlIHN0cnVjdCBpbiByZWFkbGluZS5jICovCisgI2VuZGlm CisgCisrLyogUHJpdmF0ZSB2YXJpYWJsZXMuICovCisraW50IF9ybF9pbnRlcnJ1cHRfaW1tZWRp YXRlbHkgPSAwOworK2ludCB2b2xhdGlsZSBfcmxfY2F1Z2h0X3NpZ25hbCA9IDA7CS8qIHNob3Vs ZCBiZSBzaWdfYXRvbWljX3QsIGJ1dCB0aGF0IHJlcXVpcmVzIGluY2x1ZGluZyA8c2lnbmFsLmg+ IGV2ZXJ5d2hlcmUgKi8KKysKKysvKiBJZiBub24temVybywgcHJpbnQgY2hhcmFjdGVycyBjb3Jy ZXNwb25kaW5nIHRvIHJlY2VpdmVkIHNpZ25hbHMgYXMgbG9uZyBhcworKyAgIHRoZSB1c2VyIGhh cyBpbmRpY2F0ZWQgaGlzIGRlc2lyZSB0byBkbyBzbyAoX3JsX2VjaG9fY29udHJvbF9jaGFycyku ICovCisraW50IF9ybF9lY2hvY3RsID0gMDsKKysKKytpbnQgX3JsX2ludHJfY2hhciA9IDA7Cisr aW50IF9ybF9xdWl0X2NoYXIgPSAwOworK2ludCBfcmxfc3VzcF9jaGFyID0gMDsKKysKKyBzdGF0 aWMgaW50IHNpZ25hbHNfc2V0X2ZsYWc7Cisgc3RhdGljIGludCBzaWd3aW5jaF9zZXRfZmxhZzsK KyAKK0BAIC0xMTIsMTAgKzEyOCwzNiBAQCBzdGF0aWMgc2lnaGFuZGxlcl9jeHQgb2xkX3dpbmNo OworIAorIC8qIFJlYWRsaW5lIHNpZ25hbCBoYW5kbGVyIGZ1bmN0aW9ucy4gKi8KKyAKKysvKiBD YWxsZWQgZnJvbSBSTF9DSEVDS19TSUdOQUxTKCkgbWFjcm8gKi8KKytSRVRTSUdUWVBFCisrX3Js X3NpZ25hbF9oYW5kbGVyIChzaWcpCisrICAgICBpbnQgc2lnOworK3sKKysgIF9ybF9jYXVnaHRf c2lnbmFsID0gMDsJLyogWFhYICovCisrCisrICBfcmxfaGFuZGxlX3NpZ25hbCAoc2lnKTsKKysg IFNJR0hBTkRMRVJfUkVUVVJOOworK30KKysKKyBzdGF0aWMgUkVUU0lHVFlQRQorIHJsX3NpZ25h bF9oYW5kbGVyIChzaWcpCisgICAgICBpbnQgc2lnOworIHsKKysgIGlmIChfcmxfaW50ZXJydXB0 X2ltbWVkaWF0ZWx5IHx8IFJMX0lTU1RBVEUoUkxfU1RBVEVfQ0FMTEJBQ0spKQorKyAgICB7Cisr ICAgICAgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSA9IDA7CisrICAgICAgX3JsX2hhbmRsZV9z aWduYWwgKHNpZyk7CisrICAgIH0KKysgIGVsc2UKKysgICAgX3JsX2NhdWdodF9zaWduYWwgPSBz aWc7CisrCisrICBTSUdIQU5ETEVSX1JFVFVSTjsKKyt9CisrCisrc3RhdGljIFJFVFNJR1RZUEUK KytfcmxfaGFuZGxlX3NpZ25hbCAoc2lnKQorKyAgICAgaW50IHNpZzsKKyt7CisgI2lmIGRlZmlu ZWQgKEhBVkVfUE9TSVhfU0lHTkFMUykKKyAgIHNpZ3NldF90IHNldDsKKyAjZWxzZSAvKiAhSEFW RV9QT1NJWF9TSUdOQUxTICovCitAQCAtMTQyLDYgKzE4NCw3IEBAIHJsX3NpZ25hbF9oYW5kbGVy IChzaWcpCisgICBzd2l0Y2ggKHNpZykKKyAgICAgeworICAgICBjYXNlIFNJR0lOVDoKKysgICAg ICBfcmxfcmVzZXRfY29tcGxldGlvbl9zdGF0ZSAoKTsKKyAgICAgICBybF9mcmVlX2xpbmVfc3Rh dGUgKCk7CisgICAgICAgLyogRkFMTFRIUk9VR0ggKi8KKyAKK0BAIC0xNTcsOSArMjAwLDExIEBA IHJsX3NpZ25hbF9oYW5kbGVyIChzaWcpCisgI2lmIGRlZmluZWQgKFNJR1FVSVQpCisgICAgIGNh c2UgU0lHUVVJVDoKKyAjZW5kaWYKKysgICAgICBybF9lY2hvX3NpZ25hbF9jaGFyIChzaWcpOwor ICAgICAgIHJsX2NsZWFudXBfYWZ0ZXJfc2lnbmFsICgpOworIAorICNpZiBkZWZpbmVkIChIQVZF X1BPU0lYX1NJR05BTFMpCisrICAgICAgc2lnZW1wdHlzZXQgKCZzZXQpOworICAgICAgIHNpZ3By b2NtYXNrIChTSUdfQkxPQ0ssIChzaWdzZXRfdCAqKU5VTEwsICZzZXQpOworICAgICAgIHNpZ2Rl bHNldCAoJnNldCwgc2lnKTsKKyAjZWxzZSAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCitAQCAt MjUxLDExICsyOTYsMTEgQEAgcmxfc2V0X3NpZ2hhbmRsZXIgKHNpZywgaGFuZGxlciwgb2hhbmRs ZXIpCisgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdDsKKyAKKyAgIGFjdC5zYV9oYW5kbGVyID0gaGFu ZGxlcjsKKy0jaWYgZGVmaW5lZCAoU0lHV0lOQ0gpCisrIyAgaWYgZGVmaW5lZCAoU0lHV0lOQ0gp CisgICBhY3Quc2FfZmxhZ3MgPSAoc2lnID09IFNJR1dJTkNIKSA/IFNBX1JFU1RBUlQgOiAwOwor LSNlbHNlCisrIyAgZWxzZQorICAgYWN0LnNhX2ZsYWdzID0gMDsKKy0jZW5kaWYKKysjICBlbmRp ZiAvKiBTSUdXSU5DSCAqLworICAgc2lnZW1wdHlzZXQgKCZhY3Quc2FfbWFzayk7CisgICBzaWdl bXB0eXNldCAoJm9oYW5kbGVyLT5zYV9tYXNrKTsKKyAgIHNpZ2FjdGlvbiAoc2lnLCAmYWN0LCAm b2xkX2hhbmRsZXIpOworQEAgLTI5Miw5ICszMzcsNDQgQEAgcmxfc2V0X3NpZ25hbHMgKCkKKyB7 CisgICBzaWdoYW5kbGVyX2N4dCBkdW1teTsKKyAgIFNpZ0hhbmRsZXIgKm9oOworKyNpZiBkZWZp bmVkIChIQVZFX1BPU0lYX1NJR05BTFMpCisrICBzdGF0aWMgaW50IHNpZ21hc2tfc2V0ID0gMDsK KysgIHN0YXRpYyBzaWdzZXRfdCBic2V0LCBvc2V0OworKyNlbmRpZgorKworKyNpZiBkZWZpbmVk IChIQVZFX1BPU0lYX1NJR05BTFMpCisrICBpZiAocmxfY2F0Y2hfc2lnbmFscyAmJiBzaWdtYXNr X3NldCA9PSAwKQorKyAgICB7CisrICAgICAgc2lnZW1wdHlzZXQgKCZic2V0KTsKKysKKysgICAg ICBzaWdhZGRzZXQgKCZic2V0LCBTSUdJTlQpOworKyAgICAgIHNpZ2FkZHNldCAoJmJzZXQsIFNJ R1RFUk0pOworKyNpZiBkZWZpbmVkIChTSUdRVUlUKQorKyAgICAgIHNpZ2FkZHNldCAoJmJzZXQs IFNJR1FVSVQpOworKyNlbmRpZgorKyNpZiBkZWZpbmVkIChTSUdBTFJNKQorKyAgICAgIHNpZ2Fk ZHNldCAoJmJzZXQsIFNJR0FMUk0pOworKyNlbmRpZgorKyNpZiBkZWZpbmVkIChTSUdUU1RQKQor KyAgICAgIHNpZ2FkZHNldCAoJmJzZXQsIFNJR1RTVFApOworKyNlbmRpZgorKyNpZiBkZWZpbmVk IChTSUdUVElOKQorKyAgICAgIHNpZ2FkZHNldCAoJmJzZXQsIFNJR1RUSU4pOworKyNlbmRpZgor KyNpZiBkZWZpbmVkIChTSUdUVE9VKQorKyAgICAgIHNpZ2FkZHNldCAoJmJzZXQsIFNJR1RUT1Up OworKyNlbmRpZgorKyAgICAgIHNpZ21hc2tfc2V0ID0gMTsKKysgICAgfSAgICAgIAorKyNlbmRp ZiAvKiBIQVZFX1BPU0lYX1NJR05BTFMgKi8KKyAKKyAgIGlmIChybF9jYXRjaF9zaWduYWxzICYm IHNpZ25hbHNfc2V0X2ZsYWcgPT0gMCkKKyAgICAgeworKyNpZiBkZWZpbmVkIChIQVZFX1BPU0lY X1NJR05BTFMpCisrICAgICAgc2lnZW1wdHlzZXQgKCZvc2V0KTsKKysgICAgICBzaWdwcm9jbWFz ayAoU0lHX0JMT0NLLCAmYnNldCwgJm9zZXQpOworKyNlbmRpZgorKworICAgICAgIHJsX21heWJl X3NldF9zaWdoYW5kbGVyIChTSUdJTlQsIHJsX3NpZ25hbF9oYW5kbGVyLCAmb2xkX2ludCk7Cisg ICAgICAgcmxfbWF5YmVfc2V0X3NpZ2hhbmRsZXIgKFNJR1RFUk0sIHJsX3NpZ25hbF9oYW5kbGVy LCAmb2xkX3Rlcm0pOworICNpZiBkZWZpbmVkIChTSUdRVUlUKQorQEAgLTMyOCw2ICs0MDgsMTAg QEAgcmxfc2V0X3NpZ25hbHMgKCkKKyAjZW5kaWYgLyogU0lHVFRJTiAqLworIAorICAgICAgIHNp Z25hbHNfc2V0X2ZsYWcgPSAxOworKworKyNpZiBkZWZpbmVkIChIQVZFX1BPU0lYX1NJR05BTFMp CisrICAgICAgc2lncHJvY21hc2sgKFNJR19TRVRNQVNLLCAmb3NldCwgKHNpZ3NldF90ICopTlVM TCk7CisrI2VuZGlmCisgICAgIH0KKyAKKyAjaWYgZGVmaW5lZCAoU0lHV0lOQ0gpCitAQCAtMzk0 LDggKzQ3OCw4IEBAIHJsX2NsZWFudXBfYWZ0ZXJfc2lnbmFsICgpCisgICBfcmxfY2xlYW5fdXBf Zm9yX2V4aXQgKCk7CisgICBpZiAocmxfZGVwcmVwX3Rlcm1fZnVuY3Rpb24pCisgICAgICgqcmxf ZGVwcmVwX3Rlcm1fZnVuY3Rpb24pICgpOworLSAgcmxfY2xlYXJfc2lnbmFscyAoKTsKKyAgIHJs X2NsZWFyX3BlbmRpbmdfaW5wdXQgKCk7CisrICBybF9jbGVhcl9zaWduYWxzICgpOworIH0KKyAK KyAvKiBSZXNldCB0aGUgdGVybWluYWwgYW5kIHJlYWRsaW5lIHN0YXRlIGFmdGVyIGEgc2lnbmFs IGhhbmRsZXIgcmV0dXJucy4gKi8KK0BAIC00MjgsMyArNTEyLDE2MCBAQCBybF9mcmVlX2xpbmVf c3RhdGUgKCkKKyB9CisgCisgI2VuZGlmICAvKiBIQU5ETEVfU0lHTkFMUyAqLworKworKy8qICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiogKi8KKysvKgkJCQkJCQkJICAgICovCisrLyoJCQkgICBTSUdJTlQgTWFuYWdlbWVudAkJ CSAgICAqLworKy8qCQkJCQkJCQkgICAgKi8KKysvKiAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisrCisrI2lmIGRlZmlu ZWQgKEhBVkVfUE9TSVhfU0lHTkFMUykKKytzdGF0aWMgc2lnc2V0X3Qgc2lnaW50X3NldCwgc2ln aW50X29zZXQ7Cisrc3RhdGljIHNpZ3NldF90IHNpZ3dpbmNoX3NldCwgc2lnd2luY2hfb3NldDsK KysjZWxzZSAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCisrIyAgaWYgZGVmaW5lZCAoSEFWRV9C U0RfU0lHTkFMUykKKytzdGF0aWMgaW50IHNpZ2ludF9vbGRtYXNrOworK3N0YXRpYyBpbnQgc2ln d2luY2hfb2xkbWFzazsKKysjICBlbmRpZiAvKiBIQVZFX0JTRF9TSUdOQUxTICovCisrI2VuZGlm IC8qICFIQVZFX1BPU0lYX1NJR05BTFMgKi8KKysKKytzdGF0aWMgaW50IHNpZ2ludF9ibG9ja2Vk OworK3N0YXRpYyBpbnQgc2lnd2luY2hfYmxvY2tlZDsKKysKKysvKiBDYXVzZSBTSUdJTlQgdG8g bm90IGJlIGRlbGl2ZXJlZCB1bnRpbCB0aGUgY29ycmVzcG9uZGluZyBjYWxsIHRvCisrICAgcmVs ZWFzZV9zaWdpbnQoKS4gKi8KKyt2b2lkCisrX3JsX2Jsb2NrX3NpZ2ludCAoKQorK3sKKysgIGlm IChzaWdpbnRfYmxvY2tlZCkKKysgICAgcmV0dXJuOworKworKyNpZiBkZWZpbmVkIChIQVZFX1BP U0lYX1NJR05BTFMpCisrICBzaWdlbXB0eXNldCAoJnNpZ2ludF9zZXQpOworKyAgc2lnZW1wdHlz ZXQgKCZzaWdpbnRfb3NldCk7CisrICBzaWdhZGRzZXQgKCZzaWdpbnRfc2V0LCBTSUdJTlQpOwor KyAgc2lncHJvY21hc2sgKFNJR19CTE9DSywgJnNpZ2ludF9zZXQsICZzaWdpbnRfb3NldCk7Cisr I2Vsc2UgLyogIUhBVkVfUE9TSVhfU0lHTkFMUyAqLworKyMgIGlmIGRlZmluZWQgKEhBVkVfQlNE X1NJR05BTFMpCisrICBzaWdpbnRfb2xkbWFzayA9IHNpZ2Jsb2NrIChzaWdtYXNrIChTSUdJTlQp KTsKKysjICBlbHNlIC8qICFIQVZFX0JTRF9TSUdOQUxTICovCisrIyAgICBpZiBkZWZpbmVkIChI QVZFX1VTR19TSUdIT0xEKQorKyAgc2lnaG9sZCAoU0lHSU5UKTsKKysjICAgIGVuZGlmIC8qIEhB VkVfVVNHX1NJR0hPTEQgKi8KKysjICBlbmRpZiAvKiAhSEFWRV9CU0RfU0lHTkFMUyAqLworKyNl bmRpZiAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCisrCisrICBzaWdpbnRfYmxvY2tlZCA9IDE7 CisrfQorKworKy8qIEFsbG93IFNJR0lOVCB0byBiZSBkZWxpdmVyZWQuICovCisrdm9pZAorK19y bF9yZWxlYXNlX3NpZ2ludCAoKQorK3sKKysgIGlmIChzaWdpbnRfYmxvY2tlZCA9PSAwKQorKyAg ICByZXR1cm47CisrCisrI2lmIGRlZmluZWQgKEhBVkVfUE9TSVhfU0lHTkFMUykKKysgIHNpZ3By b2NtYXNrIChTSUdfU0VUTUFTSywgJnNpZ2ludF9vc2V0LCAoc2lnc2V0X3QgKilOVUxMKTsKKysj ZWxzZQorKyMgIGlmIGRlZmluZWQgKEhBVkVfQlNEX1NJR05BTFMpCisrICBzaWdzZXRtYXNrIChz aWdpbnRfb2xkbWFzayk7CisrIyAgZWxzZSAvKiAhSEFWRV9CU0RfU0lHTkFMUyAqLworKyMgICAg aWYgZGVmaW5lZCAoSEFWRV9VU0dfU0lHSE9MRCkKKysgIHNpZ3JlbHNlIChTSUdJTlQpOworKyMg ICAgZW5kaWYgLyogSEFWRV9VU0dfU0lHSE9MRCAqLworKyMgIGVuZGlmIC8qICFIQVZFX0JTRF9T SUdOQUxTICovCisrI2VuZGlmIC8qICFIQVZFX1BPU0lYX1NJR05BTFMgKi8KKysKKysgIHNpZ2lu dF9ibG9ja2VkID0gMDsKKyt9CisrCisrLyogQ2F1c2UgU0lHV0lOQ0ggdG8gbm90IGJlIGRlbGl2 ZXJlZCB1bnRpbCB0aGUgY29ycmVzcG9uZGluZyBjYWxsIHRvCisrICAgcmVsZWFzZV9zaWd3aW5j aCgpLiAqLworK3ZvaWQKKytfcmxfYmxvY2tfc2lnd2luY2ggKCkKKyt7CisrICBpZiAoc2lnd2lu Y2hfYmxvY2tlZCkKKysgICAgcmV0dXJuOworKworKyNpZiBkZWZpbmVkIChIQVZFX1BPU0lYX1NJ R05BTFMpCisrICBzaWdlbXB0eXNldCAoJnNpZ3dpbmNoX3NldCk7CisrICBzaWdlbXB0eXNldCAo JnNpZ3dpbmNoX29zZXQpOworKyAgc2lnYWRkc2V0ICgmc2lnd2luY2hfc2V0LCBTSUdXSU5DSCk7 CisrICBzaWdwcm9jbWFzayAoU0lHX0JMT0NLLCAmc2lnd2luY2hfc2V0LCAmc2lnd2luY2hfb3Nl dCk7CisrI2Vsc2UgLyogIUhBVkVfUE9TSVhfU0lHTkFMUyAqLworKyMgIGlmIGRlZmluZWQgKEhB VkVfQlNEX1NJR05BTFMpCisrICBzaWd3aW5jaF9vbGRtYXNrID0gc2lnYmxvY2sgKHNpZ21hc2sg KFNJR1dJTkNIKSk7CisrIyAgZWxzZSAvKiAhSEFWRV9CU0RfU0lHTkFMUyAqLworKyMgICAgaWYg ZGVmaW5lZCAoSEFWRV9VU0dfU0lHSE9MRCkKKysgIHNpZ2hvbGQgKFNJR1dJTkNIKTsKKysjICAg IGVuZGlmIC8qIEhBVkVfVVNHX1NJR0hPTEQgKi8KKysjICBlbmRpZiAvKiAhSEFWRV9CU0RfU0lH TkFMUyAqLworKyNlbmRpZiAvKiAhSEFWRV9QT1NJWF9TSUdOQUxTICovCisrCisrICBzaWd3aW5j aF9ibG9ja2VkID0gMTsKKyt9CisrCisrLyogQWxsb3cgU0lHV0lOQ0ggdG8gYmUgZGVsaXZlcmVk LiAqLworK3ZvaWQKKytfcmxfcmVsZWFzZV9zaWd3aW5jaCAoKQorK3sKKysgIGlmIChzaWd3aW5j aF9ibG9ja2VkID09IDApCisrICAgIHJldHVybjsKKysKKysjaWYgZGVmaW5lZCAoSEFWRV9QT1NJ WF9TSUdOQUxTKQorKyAgc2lncHJvY21hc2sgKFNJR19TRVRNQVNLLCAmc2lnd2luY2hfb3NldCwg KHNpZ3NldF90ICopTlVMTCk7CisrI2Vsc2UKKysjICBpZiBkZWZpbmVkIChIQVZFX0JTRF9TSUdO QUxTKQorKyAgc2lnc2V0bWFzayAoc2lnd2luY2hfb2xkbWFzayk7CisrIyAgZWxzZSAvKiAhSEFW RV9CU0RfU0lHTkFMUyAqLworKyMgICAgaWYgZGVmaW5lZCAoSEFWRV9VU0dfU0lHSE9MRCkKKysg IHNpZ3JlbHNlIChTSUdXSU5DSCk7CisrIyAgICBlbmRpZiAvKiBIQVZFX1VTR19TSUdIT0xEICov CisrIyAgZW5kaWYgLyogIUhBVkVfQlNEX1NJR05BTFMgKi8KKysjZW5kaWYgLyogIUhBVkVfUE9T SVhfU0lHTkFMUyAqLworKworKyAgc2lnd2luY2hfYmxvY2tlZCA9IDA7CisrfQorKworKy8qICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiogKi8KKysvKgkJCQkJCQkJICAgICovCisrLyoJCUVjaG9pbmcgc3BlY2lhbCBjb250cm9s IGNoYXJhY3RlcnMJCSAgICAqLworKy8qCQkJCQkJCQkgICAgKi8KKysvKiAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisr dm9pZAorK3JsX2VjaG9fc2lnbmFsX2NoYXIgKHNpZykKKysgICAgIGludCBzaWc7CisreworKyAg Y2hhciBjc3RyWzNdOworKyAgaW50IGNzbGVuLCBjOworKworKyAgaWYgKF9ybF9lY2hvY3RsID09 IDAgfHwgX3JsX2VjaG9fY29udHJvbF9jaGFycyA9PSAwKQorKyAgICByZXR1cm47CisrCisrICBz d2l0Y2ggKHNpZykKKysgICAgeworKyAgICBjYXNlIFNJR0lOVDogIGMgPSBfcmxfaW50cl9jaGFy OyBicmVhazsKKysjaWYgZGVmaW5lZCAoU0lHUVVJVCkKKysgICAgY2FzZSBTSUdRVUlUOiBjID0g X3JsX3F1aXRfY2hhcjsgYnJlYWs7CisrI2VuZGlmCisrI2lmIGRlZmluZWQgKFNJR1RTVFApCisr ICAgIGNhc2UgU0lHVFNUUDogYyA9IF9ybF9zdXNwX2NoYXI7IGJyZWFrOworKyNlbmRpZgorKyAg ICBkZWZhdWx0OiByZXR1cm47CisrICAgIH0KKysKKysgIGlmIChDVFJMX0NIQVIgKGMpIHx8IGMg PT0gUlVCT1VUKQorKyAgICB7CisrICAgICAgY3N0clswXSA9ICdeJzsKKysgICAgICBjc3RyWzFd ID0gQ1RSTF9DSEFSIChjKSA/IFVOQ1RSTCAoYykgOiAnPyc7CisrICAgICAgY3N0cltjc2xlbiA9 IDJdID0gJ1wwJzsKKysgICAgfQorKyAgZWxzZQorKyAgICB7CisrICAgICAgY3N0clswXSA9IGM7 CisrICAgICAgY3N0cltjc2xlbiA9IDFdID0gJ1wwJzsKKysgICAgfQorKworKyAgX3JsX291dHB1 dF9zb21lX2NoYXJzIChjc3RyLCBjc2xlbik7CisrfQorb2xkIG1vZGUgMTAwNzU1CituZXcgbW9k ZSAxMDA2NDQKKy0tLSBhL3JlYWRsaW5lL3N1cHBvcnQvY29uZmlnLmd1ZXNzCisrKysgYi9yZWFk bGluZS9zdXBwb3J0L2NvbmZpZy5ndWVzcworQEAgLTEsOSArMSwxMCBAQAorICMhIC9iaW4vc2gK KyAjIEF0dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUuCisgIyAgIENvcHly aWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwK Ky0jICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg MjAwOCwgMjAwOQorKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy10aW1l c3RhbXA9JzIwMDQtMDItMTYnCisrdGltZXN0YW1wPScyMDA4LTAzLTEyJworIAorICMgVGhpcyBm aWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkgaXQKKyAjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CitAQCAtMTcsMTMgKzE4LDE1IEBAIHRpbWVzdGFtcD0nMjAwNC0w Mi0xNicKKyAjCisgIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisrIyBG b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQgLSBGaWZ0aCBGbG9vciwgQm9zdG9u LCBNQQorKyMgMDIxMTAtMTMwMSwgVVNBLgorICMKKyAjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24g dG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyAjIGRpc3RyaWJ1dGUg dGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorICMgY29uZmln dXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQg dW5kZXIKKyAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRo ZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKyAKKysKKyAjIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQ ZXIgQm90aG5lciA8cGVyQGJvdGhuZXIuY29tPi4KKyAjIFBsZWFzZSBzZW5kIHBhdGNoZXMgdG8g PGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiAgU3VibWl0IGEgY29udGV4dAorICMgZGlmZiBhbmQg YSBwcm9wZXJseSBmb3JtYXR0ZWQgQ2hhbmdlTG9nIGVudHJ5LgorQEAgLTUzLDggKzU2LDggQEAg dmVyc2lvbj0iXAorIEdOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCisgCisgT3JpZ2luYWxs eSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLgorLUNvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5 NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMQorLUZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5 NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKKysyMDAyLCAyMDAzLCAyMDA0 LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisgCisgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWlu ZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KKyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCitAQCAtNjYs MTEgKzY5LDExIEBAIFRyeSBcYCRtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKyB3 aGlsZSB0ZXN0ICQjIC1ndCAwIDsgZG8KKyAgIGNhc2UgJDEgaW4KKyAgICAgLS10aW1lLXN0YW1w IHwgLS10aW1lKiB8IC10ICkKKy0gICAgICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0IDAgOzsK KysgICAgICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0IDs7CisgICAgIC0tdmVyc2lvbiB8IC12 ICkKKy0gICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhpdCAwIDs7CisrICAgICAgIGVjaG8gIiR2 ZXJzaW9uIiA7IGV4aXQgOzsKKyAgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKKy0gICAgICAgZWNo byAiJHVzYWdlIjsgZXhpdCAwIDs7CisrICAgICAgIGVjaG8gIiR1c2FnZSI7IGV4aXQgOzsKKyAg ICAgLS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCisgICAgICAgIHNoaWZ0OyBicmVh ayA7OworICAgICAtICkJIyBVc2Ugc3RkaW4gYXMgaW5wdXQuCitAQCAtMTA0LDcgKzEwNyw3IEBA IHNldF9jY19mb3JfYnVpbGQ9JworIHRyYXAgImV4aXRjb2RlPVwkPzsgKHJtIC1mIFwkdG1wZmls ZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1wIDI+L2Rldi9udWxsKSAmJiBleGl0IFwkZXhpdGNv ZGUiIDAgOworIHRyYXAgInJtIC1mIFwkdG1wZmlsZXMgMj4vZGV2L251bGw7IHJtZGlyIFwkdG1w IDI+L2Rldi9udWxsOyBleGl0IDEiIDEgMiAxMyAxNSA7CisgOiAke1RNUERJUj0vdG1wfSA7Cist IHsgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAtcSAiJFRNUERJUi9jZ1hYWFhYWCIpIDI+ L2Rldi9udWxsYCAmJiB0ZXN0IC1uICIkdG1wIiAmJiB0ZXN0IC1kICIkdG1wIiA7IH0gfHwKKysg eyB0bXA9YCh1bWFzayAwNzcgJiYgbWt0ZW1wIC1kICIkVE1QRElSL2NnWFhYWFhYIikgMj4vZGV2 L251bGxgICYmIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiIDsgfSB8fAorICB7IHRl c3QgLW4gIiRSQU5ET00iICYmIHRtcD0kVE1QRElSL2NnJCQtJFJBTkRPTSAmJiAodW1hc2sgMDc3 ICYmIG1rZGlyICR0bXApIDsgfSB8fAorICB7IHRtcD0kVE1QRElSL2NnLSQkICYmICh1bWFzayAw NzcgJiYgbWtkaXIgJHRtcCkgJiYgZWNobyAiV2FybmluZzogY3JlYXRpbmcgaW5zZWN1cmUgdGVt cCBkaXJlY3RvcnkiID4mMiA7IH0gfHwKKyAgeyBlY2hvICIkbWU6IGNhbm5vdCBjcmVhdGUgYSB0 ZW1wb3JhcnkgZGlyZWN0b3J5IGluICRUTVBESVIiID4mMiA7IGV4aXQgMSA7IH0gOworQEAgLTEy Myw3ICsxMjYsNyBAQCBjYXNlICRDQ19GT1JfQlVJTEQsJEhPU1RfQ0MsJENDIGluCisgCTs7Cisg ICwsKikgICBDQ19GT1JfQlVJTEQ9JENDIDs7CisgICwqLCopICBDQ19GT1JfQlVJTEQ9JEhPU1Rf Q0MgOzsKKy1lc2FjIDsnCisrZXNhYyA7IHNldF9jY19mb3JfYnVpbGQ9IDsnCisgCisgIyBUaGlz IGlzIG5lZWRlZCB0byBmaW5kIHVuYW1lIG9uIGEgUHlyYW1pZCBPU3ggd2hlbiBydW4gaW4gdGhl IEJTRCB1bml2ZXJzZS4KKyAjIChnaGF6aUBub2MucnV0Z2Vycy5lZHUgMTk5NC0wOC0yNCkKK0BA IC0xNTgsNiArMTYxLDcgQEAgY2FzZSAiJHtVTkFNRV9NQUNISU5FfToke1VOQU1FX1NZU1RFTX06 JHtVTkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059IiBpbgorIAkgICAgYXJtKikgbWFjaGlu ZT1hcm0tdW5rbm93biA7OworIAkgICAgc2gzZWwpIG1hY2hpbmU9c2hsLXVua25vd24gOzsKKyAJ ICAgIHNoM2ViKSBtYWNoaW5lPXNoLXVua25vd24gOzsKKysJICAgIHNoNWVsKSBtYWNoaW5lPXNo NWxlLXVua25vd24gOzsKKyAJICAgICopIG1hY2hpbmU9JHtVTkFNRV9NQUNISU5FX0FSQ0h9LXVu a25vd24gOzsKKyAJZXNhYworIAkjIFRoZSBPcGVyYXRpbmcgU3lzdGVtIGluY2x1ZGluZyBvYmpl Y3QgZm9ybWF0LCBpZiBpdCBoYXMgc3dpdGNoZWQKK0BAIC0xOTYsNjggKzIwMCwzMiBAQCBjYXNl ICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfToke1VOQU1FX1JFTEVBU0V9OiR7VU5B TUVfVkVSU0lPTn0iIGluCisgCSMgY29udGFpbnMgcmVkdW5kYW50IGluZm9ybWF0aW9uLCB0aGUg c2hvcnRlciBmb3JtOgorIAkjIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVN IGlzIHVzZWQuCisgCWVjaG8gIiR7bWFjaGluZX0tJHtvc30ke3JlbGVhc2V9IgorLQlleGl0IDAg OzsKKy0gICAgYW1kNjQ6T3BlbkJTRDoqOiopCistCWVjaG8geDg2XzY0LXVua25vd24tb3BlbmJz ZCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CistICAgIGFtaWdhOk9wZW5CU0Q6KjoqKQor LQllY2hvIG02OGstdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsK Ky0gICAgYXJjOk9wZW5CU0Q6KjoqKQorLQllY2hvIG1pcHNlbC11bmtub3duLW9wZW5ic2Qke1VO QU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworLSAgICBjYXRzOk9wZW5CU0Q6KjoqKQorLQllY2hv IGFybS11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworLSAgICBo cDMwMDpPcGVuQlNEOio6KikKKy0JZWNobyBtNjhrLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVM RUFTRX0KKy0JZXhpdCAwIDs7CistICAgIG1hYzY4azpPcGVuQlNEOio6KikKKy0JZWNobyBtNjhr LXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CistICAgIG1hY3Bw YzpPcGVuQlNEOio6KikKKy0JZWNobyBwb3dlcnBjLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVM RUFTRX0KKy0JZXhpdCAwIDs7CistICAgIG12bWU2OGs6T3BlbkJTRDoqOiopCistCWVjaG8gbTY4 ay11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworLSAgICBtdm1l ODhrOk9wZW5CU0Q6KjoqKQorLQllY2hvIG04OGstdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxF QVNFfQorLQlleGl0IDAgOzsKKy0gICAgbXZtZXBwYzpPcGVuQlNEOio6KikKKy0JZWNobyBwb3dl cnBjLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CistICAgIHBl Z2Fzb3M6T3BlbkJTRDoqOiopCistCWVjaG8gcG93ZXJwYy11bmtub3duLW9wZW5ic2Qke1VOQU1F X1JFTEVBU0V9CistCWV4aXQgMCA7OworLSAgICBwbWF4Ok9wZW5CU0Q6KjoqKQorLQllY2hvIG1p cHNlbC11bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworLSAgICBz Z2k6T3BlbkJTRDoqOiopCistCWVjaG8gbWlwc2ViLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVM RUFTRX0KKy0JZXhpdCAwIDs7CistICAgIHN1bjM6T3BlbkJTRDoqOiopCistCWVjaG8gbTY4ay11 bmtub3duLW9wZW5ic2Qke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworLSAgICB3Z3Jpc2M6 T3BlbkJTRDoqOiopCistCWVjaG8gbWlwc2VsLXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFT RX0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpPcGVuQlNEOio6KikKKy0JZWNobyAk e1VOQU1FX01BQ0hJTkV9LXVua25vd24tb3BlbmJzZCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAw IDs7CisrCVVOQU1FX01BQ0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9PcGVuQlNELi8vJ2AKKysJ ZWNobyAke1VOQU1FX01BQ0hJTkVfQVJDSH0tdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNF fQorKwlleGl0IDs7CisgICAgICo6ZWtrb0JTRDoqOiopCisgCWVjaG8gJHtVTkFNRV9NQUNISU5F fS11bmtub3duLWVra29ic2Qke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworKwlleGl0IDs7 CisrICAgICo6U29saWRCU0Q6KjoqKQorKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1z b2xpZGJzZCR7VU5BTUVfUkVMRUFTRX0KKysJZXhpdCA7OworICAgICBtYWNwcGM6TWlyQlNEOio6 KikKKy0JZWNobyBwb3dlcnBwYy11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhp dCAwIDs7CisrCWVjaG8gcG93ZXJwYy11bmtub3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KKysJ ZXhpdCA7OworICAgICAqOk1pckJTRDoqOiopCisgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtu b3duLW1pcmJzZCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAg YWxwaGE6T1NGMToqOiopCistCWlmIHRlc3QgJFVOQU1FX1JFTEVBU0UgPSAiVjQuMCI7IHRoZW4K KysJY2FzZSAkVU5BTUVfUkVMRUFTRSBpbgorKwkqNC4wKQorIAkJVU5BTUVfUkVMRUFTRT1gL3Vz ci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDN9J2AKKy0JZmkKKysJCTs7CisrCSo1Liop CisrCSAgICAgICAgVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJp bnQgJDR9J2AKKysJCTs7CisrCWVzYWMKKyAJIyBBY2NvcmRpbmcgdG8gQ29tcGFxLCAvdXNyL3Ni aW4vcHNyaW5mbyBoYXMgYmVlbiBhdmFpbGFibGUgb24KKyAJIyBPU0YvMSBhbmQgVHJ1NjQgc3lz dGVtcyBwcm9kdWNlZCBzaW5jZSAxOTk1LiAgSSBob3BlIHRoYXQKKyAJIyBjb3ZlcnMgbW9zdCBz eXN0ZW1zIHJ1bm5pbmcgdG9kYXkuICBUaGlzIGNvZGUgcGlwZXMgdGhlIENQVQorQEAgLTI5NSw0 NSArMjYzLDQ5IEBAIGNhc2UgIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5B TUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgaW4KKyAJICAgICJFVjcuOSAoMjEzNjRBKSIp CisgCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NzkiIDs7CisgCWVzYWMKKysJIyBBIFBuLm4gdmVy c2lvbiBpcyBhIHBhdGNoZWQgdmVyc2lvbi4KKyAJIyBBIFZuLm4gdmVyc2lvbiBpcyBhIHJlbGVh c2VkIHZlcnNpb24uCisgCSMgQSBUbi5uIHZlcnNpb24gaXMgYSByZWxlYXNlZCBmaWVsZCB0ZXN0 IHZlcnNpb24uCisgCSMgQSBYbi5uIHZlcnNpb24gaXMgYW4gdW5yZWxlYXNlZCBleHBlcmltZW50 YWwgYmFzZWxldmVsLgorIAkjIDEuMiB1c2VzICIxLjIiIGZvciB1bmFtZSAtci4KKy0JZWNobyAk e1VOQU1FX01BQ0hJTkV9LWRlYy1vc2ZgZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdz L15bVlRYXS8vJyB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWpr bG1ub3BxcnN0dXZ3eHl6J2AKKy0JZXhpdCAwIDs7CistICAgIEFscGhhKjpPcGVuVk1TOio6KikK Ky0JZWNobyBhbHBoYS1ocC12bXMKKy0JZXhpdCAwIDs7CisrCWVjaG8gJHtVTkFNRV9NQUNISU5F fS1kZWMtb3NmYGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9eW1BWVFhdLy8nIHwg dHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4 eXonYAorKwlleGl0IDs7CisgICAgIEFscGhhXCAqOldpbmRvd3NfTlQqOiopCisgCSMgSG93IGRv IHdlIGtub3cgaXQncyBJbnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmljIFBPU0lYIHN1YnN5 c3RlbT8KKyAJIyBTaG91bGQgd2UgY2hhbmdlIFVOQU1FX01BQ0hJTkUgYmFzZWQgb24gdGhlIG91 dHB1dCBvZiB1bmFtZSBpbnN0ZWFkCisgCSMgb2YgdGhlIHNwZWNpZmljIEFscGhhIG1vZGVsPwor IAllY2hvIGFscGhhLXBjLWludGVyaXgKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgMjEw NjQ6V2luZG93c19OVDo1MDozKQorIAllY2hvIGFscGhhLWRlYy13aW5udDMuNQorLQlleGl0IDAg OzsKKysJZXhpdCA7OworICAgICBBbWlnYSo6VU5JWF9TeXN0ZW1fVjo0LjA6KikKKyAJZWNobyBt NjhrLXVua25vd24tc3lzdjQKKy0JZXhpdCAwOzsKKysJZXhpdCA7OworICAgICAqOltBYV1taWdh W09vXVtTc106KjoqKQorIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1hbWlnYW9zCist CWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgICo6W01tXW9ycGhbT29dW1NzXToqOiopCisgCWVj aG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW1vcnBob3MKKy0JZXhpdCAwIDs7CisrCWV4aXQg OzsKKyAgICAgKjpPUy8zOTA6KjoqKQorIAllY2hvIGkzNzAtaWJtLW9wZW5lZGl0aW9uCistCWV4 aXQgMCA7OworKwlleGl0IDs7CisrICAgICo6ei9WTToqOiopCisrCWVjaG8gczM5MC1pYm0tenZt b2UKKysJZXhpdCA7OworICAgICAqOk9TNDAwOio6KikKKyAgICAgICAgIGVjaG8gcG93ZXJwYy1p Ym0tb3M0MDAKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgYXJtOlJJU0MqOjEuWzAxMl0q Oip8YXJtOnJpc2NpeDoxLlswMTJdKjoqKQorIAllY2hvIGFybS1hY29ybi1yaXNjaXgke1VOQU1F X1JFTEVBU0V9CistCWV4aXQgMDs7CisrCWV4aXQgOzsKKysgICAgYXJtOnJpc2NvczoqOip8YXJt OlJJU0NPUzoqOiopCisrCWVjaG8gYXJtLXVua25vd24tcmlzY29zCisrCWV4aXQgOzsKKyAgICAg U1IyPzAxOkhJLVVYL01QUDoqOiogfCBTUjgwMDA6SEktVVgvTVBQOio6KikKKyAJZWNobyBocHBh MS4xLWhpdGFjaGktaGl1eG1wcAorLQlleGl0IDA7OworKwlleGl0IDs7CisgICAgIFB5cmFtaWQq Ok9TeCo6KjoqIHwgTUlTKjpPU3gqOio6KiB8IE1JUyo6U01QX0RDLU9TeCo6KjoqKQorIAkjIGFr ZWVAd3BkaXMwMy53cGFmYi5hZi5taWwgKEVhcmxlIEYuIEFrZSkgY29udHJpYnV0ZWQgTUlTIGFu ZCBOSUxFLgorIAlpZiB0ZXN0ICJgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsYCIgPSBhdHQg OyB0aGVuCitAQCAtMzQxLDMyICszMTMsMzIgQEAgY2FzZSAiJHtVTkFNRV9NQUNISU5FfToke1VO QU1FX1NZU1RFTX06JHtVTkFNRV9SRUxFQVNFfToke1VOQU1FX1ZFUlNJT059IiBpbgorIAllbHNl CisgCQllY2hvIHB5cmFtaWQtcHlyYW1pZC1ic2QKKyAJZmkKKy0JZXhpdCAwIDs7CisrCWV4aXQg OzsKKyAgICAgTklMRSo6KjoqOmRjb3N4KQorIAllY2hvIHB5cmFtaWQtcHlyYW1pZC1zdnI0Cist CWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIERSUz82MDAwOnVuaXg6NC4wOjYqKQorIAllY2hv IHNwYXJjLWljbC1ueDYKKy0JZXhpdCAwIDs7CistICAgIERSUz82MDAwOlVOSVhfU1Y6NC4yKjo3 KikKKysJZXhpdCA7OworKyAgICBEUlM/NjAwMDpVTklYX1NWOjQuMio6NyogfCBEUlM/NjAwMDpp c2lzOjQuMio6NyopCisgCWNhc2UgYC91c3IvYmluL3VuYW1lIC1wYCBpbgorLQkgICAgc3BhcmMp IGVjaG8gc3BhcmMtaWNsLW54NyAmJiBleGl0IDAgOzsKKysJICAgIHNwYXJjKSBlY2hvIHNwYXJj LWljbC1ueDc7IGV4aXQgOzsKKyAJZXNhYyA7OworICAgICBzdW40SDpTdW5PUzo1Lio6KikKKyAJ ZWNobyBzcGFyYy1oYWwtc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9b Xi5dKi8vJ2AKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgc3VuNCo6U3VuT1M6NS4qOiog fCB0YWRwb2xlKjpTdW5PUzo1Lio6KikKKyAJZWNobyBzcGFyYy1zdW4tc29sYXJpczJgZWNobyAk e1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKy0JZXhpdCAwIDs7CistICAgIGk4 NnBjOlN1bk9TOjUuKjoqKQorKwlleGl0IDs7CisrICAgIGk4NnBjOlN1bk9TOjUuKjoqIHwgaTg2 eGVuOlN1bk9TOjUuKjoqKQorIAllY2hvIGkzODYtcGMtc29sYXJpczJgZWNobyAke1VOQU1FX1JF TEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAg c3VuNCo6U3VuT1M6Nio6KikKKyAJIyBBY2NvcmRpbmcgdG8gY29uZmlnLnN1YiwgdGhpcyBpcyB0 aGUgcHJvcGVyIHdheSB0byBjYW5vbmljYWxpemUKKyAJIyBTdW5PUzYuICBIYXJkIHRvIGd1ZXNz IGV4YWN0bHkgd2hhdCBTdW5PUzYgd2lsbCBiZSBsaWtlLCBidXQKKyAJIyBpdCdzIGxpa2VseSB0 byBiZSBtb3JlIGxpa2UgU29sYXJpcyB0aGFuIFN1bk9TNC4KKyAJZWNobyBzcGFyYy1zdW4tc29s YXJpczNgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKy0JZXhpdCAw IDs7CisrCWV4aXQgOzsKKyAgICAgc3VuNCo6U3VuT1M6KjoqKQorIAljYXNlICJgL3Vzci9iaW4v YXJjaCAta2AiIGluCisgCSAgICBTZXJpZXMqfFM0KikKK0BAIC0zNzUsMTAgKzM0NywxMCBAQCBj YXNlICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfToke1VOQU1FX1JFTEVBU0V9OiR7 VU5BTUVfVkVSU0lPTn0iIGluCisgCWVzYWMKKyAJIyBKYXBhbmVzZSBMYW5ndWFnZSB2ZXJzaW9u cyBoYXZlIGEgdmVyc2lvbiBudW1iZXIgbGlrZSBgNC4xLjMtSkwnLgorIAllY2hvIHNwYXJjLXN1 bi1zdW5vc2BlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLy0vXy8nYAorLQlleGl0IDAg OzsKKysJZXhpdCA7OworICAgICBzdW4zKjpTdW5PUzoqOiopCisgCWVjaG8gbTY4ay1zdW4tc3Vu b3Mke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIHN1bio6Kjo0 LjJCU0Q6KikKKyAJVU5BTUVfUkVMRUFTRT1gKHNlZCAxcSAvZXRjL21vdGQgfCBhd2sgJ3twcmlu dCBzdWJzdHIoJDUsMSwzKX0nKSAyPi9kZXYvbnVsbGAKKyAJdGVzdCAieCR7VU5BTUVfUkVMRUFT RX0iID0gIngiICYmIFVOQU1FX1JFTEVBU0U9MworQEAgLTM5MCwxMCArMzYyLDEwIEBAIGNhc2Ug IiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFN RV9WRVJTSU9OfSIgaW4KKyAJCWVjaG8gc3BhcmMtc3VuLXN1bm9zJHtVTkFNRV9SRUxFQVNFfQor IAkJOzsKKyAJZXNhYworLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBhdXNocDpTdW5PUzoq OiopCisgCWVjaG8gc3BhcmMtYXVzcGV4LXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAg OzsKKysJZXhpdCA7OworICAgICAjIFRoZSBzaXR1YXRpb24gZm9yIE1pTlQgaXMgYSBsaXR0bGUg Y29uZnVzaW5nLiAgVGhlIG1hY2hpbmUgbmFtZQorICAgICAjIGNhbiBiZSB2aXJ0dWFsbHkgZXZl cnl0aGluZyAoZXZlcnl0aGluZyB3aGljaCBpcyBub3QKKyAgICAgIyAiYXRhcmlzdCIgb3IgImF0 YXJpc3RlIiBhdCBsZWFzdCBzaG91bGQgaGF2ZSBhIHByb2Nlc3NvcgorQEAgLTQwNCw0MCArMzc2 LDQwIEBAIGNhc2UgIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVM RUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgaW4KKyAgICAgIyBiZSBubyBwcm9ibGVtLgorICAgICBh dGFyaXN0W2VdOipNaU5UOio6KiB8IGF0YXJpc3RbZV06Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToq VE9TOio6KikKKyAgICAgICAgIGVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQor LQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBhdGFyaSo6Kk1pTlQ6KjoqIHwgYXRhcmkqOipt aW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiopCisgCWVjaG8gbTY4ay1hdGFyaS1taW50JHtV TkFNRV9SRUxFQVNFfQorLSAgICAgICAgZXhpdCAwIDs7CisrICAgICAgICBleGl0IDs7CisgICAg ICpmYWxjb24qOipNaU5UOio6KiB8ICpmYWxjb24qOiptaW50Oio6KiB8ICpmYWxjb24qOipUT1M6 KjoqKQorICAgICAgICAgZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9CistCWV4 aXQgMCA7OworKwlleGl0IDs7CisgICAgIG1pbGFuKjoqTWlOVDoqOiogfCBtaWxhbio6Km1pbnQ6 KjoqIHwgKm1pbGFuKjoqVE9TOio6KikKKyAgICAgICAgIGVjaG8gbTY4ay1taWxhbi1taW50JHtV TkFNRV9SRUxFQVNFfQorLSAgICAgICAgZXhpdCAwIDs7CisrICAgICAgICBleGl0IDs7CisgICAg IGhhZGVzKjoqTWlOVDoqOiogfCBoYWRlcyo6Km1pbnQ6KjoqIHwgKmhhZGVzKjoqVE9TOio6KikK KyAgICAgICAgIGVjaG8gbTY4ay1oYWRlcy1taW50JHtVTkFNRV9SRUxFQVNFfQorLSAgICAgICAg ZXhpdCAwIDs7CisrICAgICAgICBleGl0IDs7CisgICAgICo6Kk1pTlQ6KjoqIHwgKjoqbWludDoq OiogfCAqOipUT1M6KjoqKQorICAgICAgICAgZWNobyBtNjhrLXVua25vd24tbWludCR7VU5BTUVf UkVMRUFTRX0KKy0gICAgICAgIGV4aXQgMCA7OworKyAgICAgICAgZXhpdCA7OworICAgICBtNjhr Om1hY2h0ZW46KjoqKQorIAllY2hvIG02OGstYXBwbGUtbWFjaHRlbiR7VU5BTUVfUkVMRUFTRX0K Ky0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgcG93ZXJwYzptYWNodGVuOio6KikKKyAJZWNo byBwb3dlcnBjLWFwcGxlLW1hY2h0ZW4ke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworKwll eGl0IDs7CisgICAgIFJJU0MqOk1hY2g6KjoqKQorIAllY2hvIG1pcHMtZGVjLW1hY2hfYnNkNC4z CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIFJJU0MqOlVMVFJJWDoqOiopCisgCWVjaG8g bWlwcy1kZWMtdWx0cml4JHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsKKysJZXhpdCA7Owor ICAgICBWQVgqOlVMVFJJWCo6KjoqKQorIAllY2hvIHZheC1kZWMtdWx0cml4JHtVTkFNRV9SRUxF QVNFfQorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICAyMDIwOkNMSVg6KjoqIHwgMjQzMDpD TElYOio6KikKKyAJZWNobyBjbGlwcGVyLWludGVyZ3JhcGgtY2xpeCR7VU5BTUVfUkVMRUFTRX0K Ky0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgbWlwczoqOio6VU1JUFMgfCBtaXBzOio6KjpS SVNDb3MpCisgCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKyAJc2VkICdzL14JLy8nIDw8IEVPRiA+ JGR1bW15LmMKK0BAIC00NjEsMzIgKzQzMywzMyBAQCBjYXNlICIke1VOQU1FX01BQ0hJTkV9OiR7 VU5BTUVfU1lTVEVNfToke1VOQU1FX1JFTEVBU0V9OiR7VU5BTUVfVkVSU0lPTn0iIGluCisgCSAg ZXhpdCAoLTEpOworIAl9CisgRU9GCistCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5j IFwKKy0JICAmJiAkZHVtbXkgYGVjaG8gIiR7VU5BTUVfUkVMRUFTRX0iIHwgc2VkIC1uICdzL1wo WzAtOV0qXCkuKi9cMS9wJ2AgXAorLQkgICYmIGV4aXQgMAorKwkkQ0NfRk9SX0JVSUxEIC1vICRk dW1teSAkZHVtbXkuYyAmJgorKwkgIGR1bW15YXJnPWBlY2hvICIke1VOQU1FX1JFTEVBU0V9IiB8 IHNlZCAtbiAncy9cKFswLTldKlwpLiovXDEvcCdgICYmCisrCSAgU1lTVEVNX05BTUU9YCRkdW1t eSAkZHVtbXlhcmdgICYmCisrCSAgICB7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KKyAJ ZWNobyBtaXBzLW1pcHMtcmlzY29zJHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsKKysJZXhp dCA7OworICAgICBNb3Rvcm9sYTpQb3dlck1BWF9PUzoqOiopCisgCWVjaG8gcG93ZXJwYy1tb3Rv cm9sYS1wb3dlcm1heAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBNb3Rvcm9sYToqOjQu MzpQTDgtKikKKyAJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcm1heAorLQlleGl0IDAgOzsKKysJ ZXhpdCA7OworICAgICBOaWdodF9IYXdrOio6KjpQb3dlck1BWF9PUyB8IFN5bmVyZ3k6UG93ZXJN QVhfT1M6KjoqKQorIAllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VybWF4CistCWV4aXQgMCA7Owor KwlleGl0IDs7CisgICAgIE5pZ2h0X0hhd2s6UG93ZXJfVU5JWDoqOiopCisgCWVjaG8gcG93ZXJw Yy1oYXJyaXMtcG93ZXJ1bml4CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIG04OGs6Q1gv VVg6Nyo6KikKKyAJZWNobyBtODhrLWhhcnJpcy1jeHV4NworLQlleGl0IDAgOzsKKysJZXhpdCA7 OworICAgICBtODhrOio6NCo6UjQqKQorIAllY2hvIG04OGstbW90b3JvbGEtc3lzdjQKKy0JZXhp dCAwIDs7CisrCWV4aXQgOzsKKyAgICAgbTg4azoqOjMqOlIzKikKKyAJZWNobyBtODhrLW1vdG9y b2xhLXN5c3YzCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIEFWaWlPTjpkZ3V4Oio6KikK KyAgICAgICAgICMgREcvVVggcmV0dXJucyBBVmlpT04gZm9yIGFsbCBhcmNoaXRlY3R1cmVzCisg ICAgICAgICBVTkFNRV9QUk9DRVNTT1I9YC91c3IvYmluL3VuYW1lIC1wYAorQEAgLTUwMiwyOSAr NDc1LDI5IEBAIEVPRgorIAllbHNlCisgCSAgICBlY2hvIGk1ODYtZGctZGd1eCR7VU5BTUVfUkVM RUFTRX0KKyAJZmkKKy0gCWV4aXQgMCA7OworKyAJZXhpdCA7OworICAgICBNODgqOkRvbHBoaW5P UzoqOiopCSMgRG9scGhpbk9TIChTVlIzKQorIAllY2hvIG04OGstZG9scGhpbi1zeXN2MworLQll eGl0IDAgOzsKKysJZXhpdCA7OworICAgICBNODgqOio6UjMqOiopCisgCSMgRGVsdGEgODhrIHN5 c3RlbSBydW5uaW5nIFNWUjMKKyAJZWNobyBtODhrLW1vdG9yb2xhLXN5c3YzCistCWV4aXQgMCA7 OworKwlleGl0IDs7CisgICAgIFhEODgqOio6KjoqKSAjIFRla3Ryb25peCBYRDg4IHN5c3RlbSBy dW5uaW5nIFVUZWtWIChTVlIzKQorIAllY2hvIG04OGstdGVrdHJvbml4LXN5c3YzCistCWV4aXQg MCA7OworKwlleGl0IDs7CisgICAgIFRlazQzWzAtOV1bMC05XTpVVGVrOio6KikgIyBUZWt0cm9u aXggNDMwMCBzeXN0ZW0gcnVubmluZyBVVGVrIChCU0QpCisgCWVjaG8gbTY4ay10ZWt0cm9uaXgt YnNkCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgICo6SVJJWCo6KjoqKQorIAllY2hvIG1p cHMtc2dpLWlyaXhgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy8tL18vZydgCistCWV4 aXQgMCA7OworKwlleGl0IDs7CisgICAgID8/Pz8/Pz8/OkFJWD86WzEyXS4xOjIpICAgIyBBSVgg Mi4yLjEgb3IgQUlYIDIuMS4xIGlzIFJUL1BDIEFJWC4KKy0JZWNobyByb21wLWlibS1haXggICAg ICAjIHVuYW1lIC1tIGdpdmVzIGFuIDggaGV4LWNvZGUgQ1BVIGlkCistCWV4aXQgMCA7OyAgICAg ICAgICAgICAgIyBOb3RlIHRoYXQ6IGVjaG8gIidgdW5hbWUgLXNgJyIgZ2l2ZXMgJ0FJWCAnCisr CWVjaG8gcm9tcC1pYm0tYWl4ICAgICAjIHVuYW1lIC1tIGdpdmVzIGFuIDggaGV4LWNvZGUgQ1BV IGlkCisrCWV4aXQgOzsgICAgICAgICAgICAgICAjIE5vdGUgdGhhdDogZWNobyAiJ2B1bmFtZSAt c2AnIiBnaXZlcyAnQUlYICcKKyAgICAgaSo4NjpBSVg6KjoqKQorIAllY2hvIGkzODYtaWJtLWFp eAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBpYTY0OkFJWDoqOiopCisgCWlmIFsgLXgg L3Vzci9iaW4vb3NsZXZlbCBdIDsgdGhlbgorIAkJSUJNX1JFVj1gL3Vzci9iaW4vb3NsZXZlbGAK K0BAIC01MzIsNyArNTA1LDcgQEAgRU9GCisgCQlJQk1fUkVWPSR7VU5BTUVfVkVSU0lPTn0uJHtV TkFNRV9SRUxFQVNFfQorIAlmaQorIAllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWFpeCR7SUJN X1JFVn0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpBSVg6MjozKQorIAlpZiBncmVw IGJvczMyNSAvdXNyL2luY2x1ZGUvc3RkaW8uaCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAJCWV2 YWwgJHNldF9jY19mb3JfYnVpbGQKK0BAIC01NDcsMTUgKzUyMCwxOSBAQCBFT0YKKyAJCQlleGl0 KDApOworIAkJCX0KKyBFT0YKKy0JCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYm ICRkdW1teSAmJiBleGl0IDAKKy0JCWVjaG8gcnM2MDAwLWlibS1haXgzLjIuNQorKwkJaWYgJEND X0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRkdW1teWAKKysJ CXRoZW4KKysJCQllY2hvICIkU1lTVEVNX05BTUUiCisrCQllbHNlCisrCQkJZWNobyByczYwMDAt aWJtLWFpeDMuMi41CisrCQlmaQorIAllbGlmIGdyZXAgYm9zMzI0IC91c3IvaW5jbHVkZS9zdGRp by5oID4vZGV2L251bGwgMj4mMTsgdGhlbgorIAkJZWNobyByczYwMDAtaWJtLWFpeDMuMi40Cisg CWVsc2UKKyAJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIKKyAJZmkKKy0JZXhpdCAwIDs7CistICAg ICo6QUlYOio6WzQ1XSkKKysJZXhpdCA7OworKyAgICAqOkFJWDoqOls0NTZdKQorIAlJQk1fQ1BV X0lEPWAvdXNyL3NiaW4vbHNkZXYgLUMgLWMgcHJvY2Vzc29yIC1TIGF2YWlsYWJsZSB8IHNlZCAx cSB8IGF3ayAneyBwcmludCAkMSB9J2AKKyAJaWYgL3Vzci9zYmluL2xzYXR0ciAtRWwgJHtJQk1f Q1BVX0lEfSB8IGdyZXAgJyBQT1dFUicgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgCQlJQk1fQVJD SD1yczYwMDAKK0BAIC01NjgsMjggKzU0NSwyOCBAQCBFT0YKKyAJCUlCTV9SRVY9JHtVTkFNRV9W RVJTSU9OfS4ke1VOQU1FX1JFTEVBU0V9CisgCWZpCisgCWVjaG8gJHtJQk1fQVJDSH0taWJtLWFp eCR7SUJNX1JFVn0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpBSVg6KjoqKQorIAll Y2hvIHJzNjAwMC1pYm0tYWl4CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIGlibXJ0OjQu NEJTRDoqfHJvbXAtaWJtOkJTRDoqKQorIAllY2hvIHJvbXAtaWJtLWJzZDQuNAorLQlleGl0IDAg OzsKKysJZXhpdCA7OworICAgICBpYm1ydDoqQlNEOip8cm9tcC1pYm06QlNEOiopICAgICAgICAg ICAgIyBjb3ZlcnMgUlQvUEMgQlNEIGFuZAorIAllY2hvIHJvbXAtaWJtLWJzZCR7VU5BTUVfUkVM RUFTRX0gICAjIDQuMyB3aXRoIHVuYW1lIGFkZGVkIHRvCistCWV4aXQgMCA7OyAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgcmVwb3J0OiByb21wLWlibSBCU0QgNC4zCisrCWV4aXQgOzsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVwb3J0OiByb21wLWlibSBCU0QgNC4zCisgICAg ICo6Qk9TWDoqOiopCisgCWVjaG8gcnM2MDAwLWJ1bGwtYm9zeAorLQlleGl0IDAgOzsKKysJZXhp dCA7OworICAgICBEUFgvMj8wMDpCLk8uUy46KjoqKQorIAllY2hvIG02OGstYnVsbC1zeXN2Mwor LQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICA5MDAwL1szNF0/Pzo0LjNic2Q6MS4qOiopCisg CWVjaG8gbTY4ay1ocC1ic2QKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgaHAzMDA6NC40 QlNEOio6KiB8IDkwMDAvWzM0XT8/OjQuM2JzZDoyLio6KikKKyAJZWNobyBtNjhrLWhwLWJzZDQu NAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICA5MDAwL1szNDY3OF0/PzpIUC1VWDoqOiop CisgCUhQVVhfUkVWPWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLlswQl0q Ly8nYAorIAljYXNlICIke1VOQU1FX01BQ0hJTkV9IiBpbgorQEAgLTY1MSw5ICs2MjgsMTkgQEAg RU9GCisgCWVzYWMKKyAJaWYgWyAke0hQX0FSQ0h9ID0gImhwcGEyLjB3IiBdCisgCXRoZW4KKy0J ICAgICMgYXZvaWQgZG91YmxlIGV2YWx1YXRpb24gb2YgJHNldF9jY19mb3JfYnVpbGQKKy0JICAg IHRlc3QgLW4gIiRDQ19GT1JfQlVJTEQiIHx8IGV2YWwgJHNldF9jY19mb3JfYnVpbGQKKy0JICAg IGlmIGVjaG8gX19MUDY0X18gfCAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0pIHwgZ3JlcCBf X0xQNjRfXyA+L2Rldi9udWxsCisrCSAgICBldmFsICRzZXRfY2NfZm9yX2J1aWxkCisrCisrCSAg ICAjIGhwcGEyLjB3LWhwLWhwdXgqIGhhcyBhIDY0LWJpdCBrZXJuZWwgYW5kIGEgY29tcGlsZXIg Z2VuZXJhdGluZworKwkgICAgIyAzMi1iaXQgY29kZS4gIGhwcGE2NC1ocC1ocHV4KiBoYXMgdGhl IHNhbWUga2VybmVsIGFuZCBhIGNvbXBpbGVyCisrCSAgICAjIGdlbmVyYXRpbmcgNjQtYml0IGNv ZGUuICBHTlUgYW5kIEhQIHVzZSBkaWZmZXJlbnQgbm9tZW5jbGF0dXJlOgorKwkgICAgIworKwkg ICAgIyAkIENDX0ZPUl9CVUlMRD1jYyAuL2NvbmZpZy5ndWVzcworKwkgICAgIyA9PiBocHBhMi4w dy1ocC1ocHV4MTEuMjMKKysJICAgICMgJCBDQ19GT1JfQlVJTEQ9ImNjICtEQTIuMHciIC4vY29u ZmlnLmd1ZXNzCisrCSAgICAjID0+IGhwcGE2NC1ocC1ocHV4MTEuMjMKKysKKysJICAgIGlmIGVj aG8gX19MUDY0X18gfCAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwK KysJCWdyZXAgX19MUDY0X18gPi9kZXYvbnVsbAorIAkgICAgdGhlbgorIAkJSFBfQVJDSD0iaHBw YTIuMHciCisgCSAgICBlbHNlCitAQCAtNjYxLDExICs2NDgsMTEgQEAgRU9GCisgCSAgICBmaQor IAlmaQorIAllY2hvICR7SFBfQVJDSH0taHAtaHB1eCR7SFBVWF9SRVZ9CistCWV4aXQgMCA7Owor KwlleGl0IDs7CisgICAgIGlhNjQ6SFAtVVg6KjoqKQorIAlIUFVYX1JFVj1gZWNobyAke1VOQU1F X1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi5bMEJdKi8vJ2AKKyAJZWNobyBpYTY0LWhwLWhwdXgk e0hQVVhfUkVWfQorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICAzMDUwKjpISS1VWDoqOiop CisgCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKyAJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15 LmMKK0BAIC02OTMsMTYzICs2ODAsMTkyIEBAIEVPRgorIAkgIGV4aXQgKDApOworIAl9CisgRU9G CistCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmICRkdW1teSAmJiBleGl0IDAK KysJJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgJiYgU1lTVEVNX05BTUU9YCRkdW1t eWAgJiYKKysJCXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorIAllY2hvIHVua25vd24t aGl0YWNoaS1oaXV4d2UyCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIDkwMDAvNz8/OjQu M2JzZDoqOiogfCA5MDAwLzg/Wzc5XTo0LjNic2Q6KjoqICkKKyAJZWNobyBocHBhMS4xLWhwLWJz ZAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICA5MDAwLzg/Pzo0LjNic2Q6KjoqKQorIAll Y2hvIGhwcGExLjAtaHAtYnNkCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgICo5Pz8qOk1Q RS9pWDoqOiogfCAqMzAwMCo6TVBFL2lYOio6KikKKyAJZWNobyBocHBhMS4wLWhwLW1wZWl4Cist CWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIGhwNz8/Ok9TRjE6KjoqIHwgaHA4P1s3OV06T1NG MToqOiogKQorIAllY2hvIGhwcGExLjEtaHAtb3NmCistCWV4aXQgMCA7OworKwlleGl0IDs7Cisg ICAgIGhwOD8/Ok9TRjE6KjoqKQorIAllY2hvIGhwcGExLjAtaHAtb3NmCistCWV4aXQgMCA7Owor KwlleGl0IDs7CisgICAgIGkqODY6T1NGMToqOiopCisgCWlmIFsgLXggL3Vzci9zYmluL3N5c3Zl cnNpb24gXSA7IHRoZW4KKyAJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW9zZjFt aworIAllbHNlCisgCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1vc2YxCisgCWZp CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIHBhcmlzYyo6TGl0ZXMqOio6KikKKyAJZWNo byBocHBhMS4xLWhwLWxpdGVzCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIEMxKjpDb252 ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzEqOiopCisgCWVjaG8gYzEtY29udmV4LWJzZAor LSAgICAgICAgZXhpdCAwIDs7CisrICAgICAgICBleGl0IDs7CisgICAgIEMyKjpDb252ZXhPUzoq OiogfCBjb252ZXg6Q29udmV4T1M6QzIqOiopCisgCWlmIGdldHN5c2luZm8gLWYgc2NhbGFyX2Fj YworIAl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKKyAJZWxzZSBlY2hvIGMyLWNvbnZleC1ic2QK KyAJZmkKKy0gICAgICAgIGV4aXQgMCA7OworKyAgICAgICAgZXhpdCA7OworICAgICBDMzQqOkNv bnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzQqOiopCisgCWVjaG8gYzM0LWNvbnZleC1i c2QKKy0gICAgICAgIGV4aXQgMCA7OworKyAgICAgICAgZXhpdCA7OworICAgICBDMzgqOkNvbnZl eE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzgqOiopCisgCWVjaG8gYzM4LWNvbnZleC1ic2QK Ky0gICAgICAgIGV4aXQgMCA7OworKyAgICAgICAgZXhpdCA7OworICAgICBDNCo6Q29udmV4T1M6 KjoqIHwgY29udmV4OkNvbnZleE9TOkM0KjoqKQorIAllY2hvIGM0LWNvbnZleC1ic2QKKy0gICAg ICAgIGV4aXQgMCA7OworKyAgICAgICAgZXhpdCA7OworICAgICBDUkFZKlktTVA6KjoqOiopCisg CWVjaG8geW1wLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0q JC8uWC8nCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIENSQVkqW0EtWl05MDoqOio6KikK KyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSBcCisg CXwgc2VkIC1lICdzL0NSQVkuKlwoW0EtWl05MFwpL1wxLycgXAorIAkgICAgICAtZSB5L0FCQ0RF RkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LyBcCisgCSAg ICAgIC1lICdzL1wuW14uXSokLy5YLycKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgQ1JB WSpUUzoqOio6KikKKyAJZWNobyB0OTAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2Vk IC1lICdzL1wuW14uXSokLy5YLycKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgQ1JBWSpU M0U6KjoqOiopCisgCWVjaG8gYWxwaGFldjUtY3JheS11bmljb3NtayR7VU5BTUVfUkVMRUFTRX0g fCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJworLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBD UkFZKlNWMToqOio6KikKKyAJZWNobyBzdjEtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwg c2VkIC1lICdzL1wuW14uXSokLy5YLycKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpV TklDT1MvbXA6KjoqKQorLQllY2hvIG52MS1jcmF5LXVuaWNvc21wJHtVTkFNRV9SRUxFQVNFfSB8 IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCistCWV4aXQgMCA7OworKwllY2hvIGNyYXludi1jcmF5 LXVuaWNvc21wJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisrCWV4 aXQgOzsKKyAgICAgRjMwWzAxXTpVTklYX1N5c3RlbV9WOio6KiB8IEY3MDA6VU5JWF9TeXN0ZW1f VjoqOiopCisgCUZVSklUU1VfUFJPQz1gdW5hbWUgLW0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFS U1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCisgICAgICAgICBGVUpJVFNV X1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZn aGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvXC8vLydgCisgICAgICAgICBGVUpJVFNV X1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAvXy8nYAorICAgICAgICAg ZWNobyAiJHtGVUpJVFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVM fSIKKy0gICAgICAgIGV4aXQgMCA7OworKyAgICAgICAgZXhpdCA7OworICAgICA1MDAwOlVOSVhf U3lzdGVtX1Y6NC4qOiopCisgICAgICAgICBGVUpJVFNVX1NZUz1gdW5hbWUgLXAgfCB0ciAnQUJD REVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBz ZWQgLWUgJ3MvXC8vLydgCisgICAgICAgICBGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVB U0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFy c3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAorICAgICAgICAgZWNobyAic3BhcmMtZnVqaXRz dS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgorLQlleGl0IDAgOzsKKysJZXhpdCA7Owor ICAgICBpKjg2OkJTRC8zODY6KjoqIHwgaSo4NjpCU0QvT1M6KjoqIHwgKjpBc2NlbmRcIEVtYmVk ZGVkL09TOio6KikKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWJzZGkke1VOQU1FX1JFTEVB U0V9CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIHNwYXJjKjpCU0QvT1M6KjoqKQorIAll Y2hvIHNwYXJjLXVua25vd24tYnNkaSR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4 aXQgOzsKKyAgICAgKjpCU0QvT1M6KjoqKQorIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93 bi1ic2RpJHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICAqOkZy ZWVCU0Q6KjoqKQorLQkjIERldGVybWluZSB3aGV0aGVyIHRoZSBkZWZhdWx0IGNvbXBpbGVyIHVz ZXMgZ2xpYmMuCistCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKy0Jc2VkICdzL14JLy8nIDw8IEVP RiA+JGR1bW15LmMKKy0JI2luY2x1ZGUgPGZlYXR1cmVzLmg+CistCSNpZiBfX0dMSUJDX18gPj0g MgorLQlMSUJDPWdudQorLQkjZWxzZQorLQlMSUJDPQorLQkjZW5kaWYKKy1FT0YKKy0JZXZhbCBg JENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAgXkxJQkM9YAorLQkj IEdOVS9LRnJlZUJTRCBzeXN0ZW1zIGhhdmUgYSAiayIgcHJlZml4IHRvIGluZGljYXRlIHdlIGFy ZSB1c2luZworLQkjIEZyZWVCU0QncyBrZXJuZWwsIGJ1dCBub3QgdGhlIGNvbXBsZXRlIE9TLgor LQljYXNlICR7TElCQ30gaW4gZ251KSBrZXJuZWxfb25seT0naycgOzsgZXNhYworLQllY2hvICR7 VU5BTUVfTUFDSElORX0tdW5rbm93bi0ke2tlcm5lbF9vbmx5fWZyZWVic2RgZWNobyAke1VOQU1F X1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgJHtMSUJDOistJExJQkN9CistCWV4aXQgMCA7 OworKwljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KKysJICAgIHBjOTgpCisrCQllY2hvIGkzODYt dW5rbm93bi1mcmVlYnNkYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8n YCA7OworKwkgICAgYW1kNjQpCisrCQllY2hvIHg4Nl82NC11bmtub3duLWZyZWVic2RgZWNobyAk e1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7CisrCSAgICAqKQorKwkJZWNo byAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5BTUVfUkVMRUFTRX18 c2VkIC1lICdzL1stKF0uKi8vJ2AgOzsKKysJZXNhYworKwlleGl0IDs7CisgICAgIGkqOkNZR1dJ Tio6KikKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWN5Z3dpbgorLQlleGl0IDAgOzsKKy0g ICAgaSo6TUlOR1cqOiopCisrCWV4aXQgOzsKKysgICAgKjpNSU5HVyo6KikKKyAJZWNobyAke1VO QU1FX01BQ0hJTkV9LXBjLW1pbmd3MzIKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKysgICAgaSo6 d2luZG93czMyKjoqKQorKyAgICAJIyB1bmFtZSAtbSBpbmNsdWRlcyAiLXBjIiBvbiB0aGlzIHN5 c3RlbS4KKysgICAgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1taW5ndzMyCisrCWV4aXQgOzsKKyAg ICAgaSo6UFcqOiopCisgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1wdzMyCistCWV4aXQgMCA7 OworLSAgICB4ODY6SW50ZXJpeCo6WzM0XSopCistCWVjaG8gaTU4Ni1wYy1pbnRlcml4JHtVTkFN RV9SRUxFQVNFfXxzZWQgLWUgJ3MvXC4uKi8vJworLQlleGl0IDAgOzsKKysJZXhpdCA7OworKyAg ICAqOkludGVyaXgqOlszNDU2XSopCisrICAgIAljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KKysJ ICAgIHg4NikKKysJCWVjaG8gaTU4Ni1wYy1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQorKwkJZXhp dCA7OworKwkgICAgRU02NFQgfCBhdXRoZW50aWNhbWQpCisrCQllY2hvIHg4Nl82NC11bmtub3du LWludGVyaXgke1VOQU1FX1JFTEVBU0V9CisrCQlleGl0IDs7CisrCSAgICBJQTY0KQorKwkJZWNo byBpYTY0LXVua25vd24taW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KKysJCWV4aXQgOzsKKysJZXNh YyA7OworICAgICBbMzQ1XTg2OldpbmRvd3NfOTU6KiB8IFszNDVdODY6V2luZG93c185ODoqIHwg WzM0NV04NjpXaW5kb3dzX05UOiopCisgCWVjaG8gaSR7VU5BTUVfTUFDSElORX0tcGMtbWtzCist CWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIGkqOldpbmRvd3NfTlQqOiogfCBQZW50aXVtKjpX aW5kb3dzX05UKjoqKQorIAkjIEhvdyBkbyB3ZSBrbm93IGl0J3MgSW50ZXJpeCByYXRoZXIgdGhh biB0aGUgZ2VuZXJpYyBQT1NJWCBzdWJzeXN0ZW0/CisgCSMgSXQgYWxzbyBjb25mbGljdHMgd2l0 aCBwcmUtMi4wIHZlcnNpb25zIG9mIEFUJlQgVVdJTi4gU2hvdWxkIHdlCisgCSMgVU5BTUVfTUFD SElORSBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGluc3RlYWQgb2YgaTM4Nj8KKyAJZWNo byBpNTg2LXBjLWludGVyaXgKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgaSo6VVdJTio6 KikKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXV3aW4KKy0JZXhpdCAwIDs7CisrCWV4aXQg OzsKKysgICAgYW1kNjQ6Q1lHV0lOKjoqOiogfCB4ODZfNjQ6Q1lHV0lOKjoqOiopCisrCWVjaG8g eDg2XzY0LXVua25vd24tY3lnd2luCisrCWV4aXQgOzsKKyAgICAgcCo6Q1lHV0lOKjoqKQorIAll Y2hvIHBvd2VycGNsZS11bmtub3duLWN5Z3dpbgorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAg ICBwcmVwKjpTdW5PUzo1Lio6KikKKyAJZWNobyBwb3dlcnBjbGUtdW5rbm93bi1zb2xhcmlzMmBl Y2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorLQlleGl0IDAgOzsKKysJ ZXhpdCA7OworICAgICAqOkdOVToqOiopCisgCSMgdGhlIEdOVSBzeXN0ZW0KKyAJZWNobyBgZWNo byAke1VOQU1FX01BQ0hJTkV9fHNlZCAtZSAncyxbLS9dLiokLCwnYC11bmtub3duLWdudWBlY2hv ICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzLC8uKiQsLCdgCistCWV4aXQgMCA7OworKwlleGl0 IDs7CisgICAgICo6R05VLyo6KjoqKQorIAkjIG90aGVyIHN5c3RlbXMgd2l0aCBHTlUgbGliYyBh bmQgdXNlcmxhbmQKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYGVjaG8gJHtVTkFN RV9TWVNURU19IHwgc2VkICdzLF5bXi9dKi8sLCcgfCB0ciAnW0EtWl0nICdbYS16XSdgYGVjaG8g JHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYC1nbnUKKy0JZXhpdCAwIDs7Cisr CWV4aXQgOzsKKyAgICAgaSo4NjpNaW5peDoqOiopCisgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1w Yy1taW5peAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBhcm0qOkxpbnV4Oio6KikKKysJ ZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorKwlpZiBlY2hvIF9fQVJNX0VBQklfXyB8ICRDQ19GT1Jf QlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBcCisrCSAgICB8IGdyZXAgLXEgX19BUk1fRUFCSV9fCisr CXRoZW4KKysJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorKwll bHNlCisrCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnVlYWJpCisr CWZpCisrCWV4aXQgOzsKKysgICAgYXZyMzIqOkxpbnV4Oio6KikKKyAJZWNobyAke1VOQU1FX01B Q0hJTkV9LXVua25vd24tbGludXgtZ251CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIGNy aXM6TGludXg6KjoqKQorIAllY2hvIGNyaXMtYXhpcy1saW51eC1nbnUKKy0JZXhpdCAwIDs7Cisr CWV4aXQgOzsKKysgICAgY3Jpc3YzMjpMaW51eDoqOiopCisrCWVjaG8gY3Jpc3YzMi1heGlzLWxp bnV4LWdudQorKwlleGl0IDs7CisrICAgIGZydjpMaW51eDoqOiopCisrICAgIAllY2hvIGZydi11 bmtub3duLWxpbnV4LWdudQorKwlleGl0IDs7CisgICAgIGlhNjQ6TGludXg6KjoqKQorIAllY2hv ICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKy0JZXhpdCAwIDs7CisrCWV4aXQg OzsKKysgICAgbTMycio6TGludXg6KjoqKQorKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93 bi1saW51eC1nbnUKKysJZXhpdCA7OworICAgICBtNjgqOkxpbnV4Oio6KikKKyAJZWNobyAke1VO QU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CistCWV4aXQgMCA7OworKwlleGl0IDs7Cisg ICAgIG1pcHM6TGludXg6KjoqKQorIAlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisgCXNlZCAncy9e CS8vJyA8PCBFT0YgPiRkdW1teS5jCitAQCAtODY2LDggKzg4MiwxMiBAQCBFT0YKKyAJI2VuZGlm CisgCSNlbmRpZgorIEVPRgorLQlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rl di9udWxsIHwgZ3JlcCBeQ1BVPWAKKy0JdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiBlY2hvICIke0NQ VX0tdW5rbm93bi1saW51eC1nbnUiICYmIGV4aXQgMAorKwlldmFsICJgJENDX0ZPUl9CVUlMRCAt RSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IHNlZCAtbiAnCisrCSAgICAvXkNQVS97CisrCQlzOiA6 OmcKKysJCXAKKysJICAgIH0nYCIKKysJdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7 Q1BVfS11bmtub3duLWxpbnV4LWdudSI7IGV4aXQ7IH0KKyAJOzsKKyAgICAgbWlwczY0OkxpbnV4 Oio6KikKKyAJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorQEAgLTg4NSwxNSArOTA1LDIyIEBAIEVP RgorIAkjZW5kaWYKKyAJI2VuZGlmCisgRU9GCistCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1 bW15LmMgMj4vZGV2L251bGwgfCBncmVwIF5DUFU9YAorLQl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYm IGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSIgJiYgZXhpdCAwCisrCWV2YWwgImAkQ0Nf Rk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKKysJICAgIC9eQ1BV L3sKKysJCXM6IDo6ZworKwkJcAorKwkgICAgfSdgIgorKwl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYm IHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251IjsgZXhpdDsgfQorIAk7OworKyAgICBv cjMyOkxpbnV4Oio6KikKKysJZWNobyBvcjMyLXVua25vd24tbGludXgtZ251CisrCWV4aXQgOzsK KyAgICAgcHBjOkxpbnV4Oio6KikKKyAJZWNobyBwb3dlcnBjLXVua25vd24tbGludXgtZ251Cist CWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIHBwYzY0OkxpbnV4Oio6KikKKyAJZWNobyBwb3dl cnBjNjQtdW5rbm93bi1saW51eC1nbnUKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgYWxw aGE6TGludXg6KjoqKQorIAljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBcKC4qXCkv XDEvcCcgPCAvcHJvYy9jcHVpbmZvYCBpbgorIAkgIEVWNSkgICBVTkFNRV9NQUNISU5FPWFscGhh ZXY1IDs7CitAQCAtOTA3LDcgKzkzNCw3IEBAIEVPRgorIAlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFk ZXJzIC9iaW4vc2ggfCBncmVwIGxkLnNvLjEgPi9kZXYvbnVsbAorIAlpZiB0ZXN0ICIkPyIgPSAw IDsgdGhlbiBMSUJDPSJsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQorIAllY2hvICR7VU5BTUVf TUFDSElORX0tdW5rbm93bi1saW51eC1nbnUke0xJQkN9CistCWV4aXQgMCA7OworKwlleGl0IDs7 CisgICAgIHBhcmlzYzpMaW51eDoqOiogfCBocHBhOkxpbnV4Oio6KikKKyAJIyBMb29rIGZvciBD UFUgbGV2ZWwKKyAJY2FzZSBgZ3JlcCAnXmNwdVteYS16XSo6JyAvcHJvYy9jcHVpbmZvIDI+L2Rl di9udWxsIHwgY3V0IC1kJyAnIC1mMmAgaW4KK0BAIC05MTUsMjUgKzk0MiwzMSBAQCBFT0YKKyAJ ICBQQTgqKSBlY2hvIGhwcGEyLjAtdW5rbm93bi1saW51eC1nbnUgOzsKKyAJICAqKSAgICBlY2hv IGhwcGEtdW5rbm93bi1saW51eC1nbnUgOzsKKyAJZXNhYworLQlleGl0IDAgOzsKKysJZXhpdCA7 OworICAgICBwYXJpc2M2NDpMaW51eDoqOiogfCBocHBhNjQ6TGludXg6KjoqKQorIAllY2hvIGhw cGE2NC11bmtub3duLWxpbnV4LWdudQorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBzMzkw OkxpbnV4Oio6KiB8IHMzOTB4OkxpbnV4Oio6KikKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWli bS1saW51eAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBzaDY0KjpMaW51eDoqOiopCisg ICAgIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKy0JZXhpdCAwIDs7 CisrCWV4aXQgOzsKKyAgICAgc2gqOkxpbnV4Oio6KikKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9 LXVua25vd24tbGludXgtZ251CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIHNwYXJjOkxp bnV4Oio6KiB8IHNwYXJjNjQ6TGludXg6KjoqKQorIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5r bm93bi1saW51eC1nbnUKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKysgICAgdmF4OkxpbnV4Oio6 KikKKysJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1saW51eC1nbnUKKysJZXhpdCA7OworICAg ICB4ODZfNjQ6TGludXg6KjoqKQorIAllY2hvIHg4Nl82NC11bmtub3duLWxpbnV4LWdudQorLQll eGl0IDAgOzsKKysJZXhpdCA7OworKyAgICB4dGVuc2EqOkxpbnV4Oio6KikKKysgICAgCWVjaG8g JHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorKwlleGl0IDs7CisgICAgIGkqODY6 TGludXg6KjoqKQorIAkjIFRoZSBCRkQgbGlua2VyIGtub3dzIHdoYXQgdGhlIGRlZmF1bHQgb2Jq ZWN0IGZpbGUgZm9ybWF0IGlzLCBzbworIAkjIGZpcnN0IHNlZSBpZiBpdCB3aWxsIHRlbGwgdXMu IGNkIHRvIHRoZSByb290IGRpcmVjdG9yeSB0byBwcmV2ZW50CitAQCAtOTUxLDE1ICs5ODQsMTUg QEAgRU9GCisgCQk7OworIAkgIGEub3V0LWkzODYtbGludXgpCisgCQllY2hvICIke1VOQU1FX01B Q0hJTkV9LXBjLWxpbnV4LWdudWFvdXQiCistCQlleGl0IDAgOzsKKysJCWV4aXQgOzsKKyAJICBj b2ZmLWkzODYpCisgCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudWNvZmYiCist CQlleGl0IDAgOzsKKysJCWV4aXQgOzsKKyAJICAiIikKKyAJCSMgRWl0aGVyIGEgcHJlLUJGRCBh Lm91dCBsaW5rZXIgKGxpbnV4LWdudW9sZGxkKSBvcgorIAkJIyBvbmUgdGhhdCBkb2VzIG5vdCBn aXZlIHVzIHVzZWZ1bCAtLWhlbHAuCisgCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4 LWdudW9sZGxkIgorLQkJZXhpdCAwIDs7CisrCQlleGl0IDs7CisgCWVzYWMKKyAJIyBEZXRlcm1p bmUgd2hldGhlciB0aGUgZGVmYXVsdCBjb21waWxlciBpcyBhLm91dCBvciBlbGYKKyAJZXZhbCAk c2V0X2NjX2Zvcl9idWlsZAorQEAgLTk3Niw3ICsxMDA5LDcgQEAgRU9GCisgCUxJQkM9Z251bGli YzEKKyAJIyBlbmRpZgorIAkjZWxzZQorLQkjaWZkZWYgX19JTlRFTF9DT01QSUxFUgorKwkjaWYg ZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSB8fCBkZWZpbmVkKF9fUEdJKSB8fCBkZWZpbmVkKF9f U1VOUFJPX0MpIHx8IGRlZmluZWQoX19TVU5QUk9fQ0MpCisgCUxJQkM9Z251CisgCSNlbHNlCisg CUxJQkM9Z251YW91dAorQEAgLTk4NiwxNiArMTAxOSwyMyBAQCBFT0YKKyAJTElCQz1kaWV0bGli YworIAkjZW5kaWYKKyBFT0YKKy0JZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9k ZXYvbnVsbCB8IGdyZXAgXkxJQkM9YAorLQl0ZXN0IHgiJHtMSUJDfSIgIT0geCAmJiBlY2hvICIk e1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LSR7TElCQ30iICYmIGV4aXQgMAorLQl0ZXN0IHgiJHtU RU5UQVRJVkV9IiAhPSB4ICYmIGVjaG8gIiR7VEVOVEFUSVZFfSIgJiYgZXhpdCAwCisrCWV2YWwg ImAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKKysJICAg IC9eTElCQy97CisrCQlzOiA6OmcKKysJCXAKKysJICAgIH0nYCIKKysJdGVzdCB4IiR7TElCQ30i ICE9IHggJiYgeworKwkJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9Igor KwkJZXhpdAorKwl9CisrCXRlc3QgeCIke1RFTlRBVElWRX0iICE9IHggJiYgeyBlY2hvICIke1RF TlRBVElWRX0iOyBleGl0OyB9CisgCTs7CisgICAgIGkqODY6RFlOSVgvcHR4OjQqOiopCisgCSMg cHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHggaW4gdGhlcmUu CisgCSMgZWFybGllciB2ZXJzaW9ucyBhcmUgbWVzc2VkIHVwIGFuZCBwdXQgdGhlIG5vZGVuYW1l IGluIGJvdGgKKyAJIyBzeXNuYW1lIGFuZCBub2RlbmFtZS4KKyAJZWNobyBpMzg2LXNlcXVlbnQt c3lzdjQKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgaSo4NjpVTklYX1NWOjQuMk1QOjIu KikKKyAgICAgICAgICMgVW5peHdhcmUgaXMgYW4gb2Zmc2hvb3Qgb2YgU1ZSNCwgYnV0IGl0IGhh cyBpdHMgb3duIHZlcnNpb24KKyAgICAgICAgICMgbnVtYmVyIHNlcmllcyBzdGFydGluZyB3aXRo IDIuLi4KK0BAIC0xMDAzLDI3ICsxMDQzLDI3IEBAIEVPRgorIAkjIEkganVzdCBoYXZlIHRvIGhv cGUuICAtLSBybXMuCisgICAgICAgICAjIFVzZSBzeXN2NC4ydXcuLi4gc28gdGhhdCBzeXN2NCog bWF0Y2hlcyBpdC4KKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3Y0LjJ1dyR7VU5BTUVf VkVSU0lPTn0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgaSo4NjpPUy8yOio6KikKKyAJ IyBJZiB3ZSB3ZXJlIGFibGUgdG8gZmluZCBgdW5hbWUnLCB0aGVuIEVNWCBVbml4IGNvbXBhdGli aWxpdHkKKyAJIyBpcyBwcm9iYWJseSBpbnN0YWxsZWQuCisgCWVjaG8gJHtVTkFNRV9NQUNISU5F fS1wYy1vczItZW14CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIGkqODY6WFRTLTMwMDoq OlNUT1ApCisgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN0b3AKKy0JZXhpdCAwIDs7 CisrCWV4aXQgOzsKKyAgICAgaSo4NjphdGhlb3M6KjoqKQorIAllY2hvICR7VU5BTUVfTUFDSElO RX0tdW5rbm93bi1hdGhlb3MKKy0JZXhpdCAwIDs7CistCWkqODY6c3lsbGFibGU6KjoqKQorKwll eGl0IDs7CisrICAgIGkqODY6c3lsbGFibGU6KjoqKQorIAllY2hvICR7VU5BTUVfTUFDSElORX0t cGMtc3lsbGFibGUKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgaSo4NjpMeW54T1M6Mi4q OiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LjAqOiopCisgCWVjaG8g aTM4Ni11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4aXQg OzsKKyAgICAgaSo4NjoqRE9TOio6KikKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1zZG9z ZGpncHAKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgaSo4NjoqOjQuKjoqIHwgaSo4NjpT WVNURU1fVjo0Lio6KikKKyAJVU5BTUVfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQg J3MvXC9NUCQvLydgCisgCWlmIGdyZXAgTm92ZWxsIC91c3IvaW5jbHVkZS9saW5rLmggPi9kZXYv bnVsbCAyPi9kZXYvbnVsbDsgdGhlbgorQEAgLTEwMzEsMTUgKzEwNzEsMTYgQEAgRU9GCisgCWVs c2UKKyAJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2JHtVTkFNRV9SRUx9CisgCWZpCist CWV4aXQgMCA7OworLSAgICBpKjg2Oio6NTpbNzhdKikKKysJZXhpdCA7OworKyAgICBpKjg2Oio6 NTpbNjc4XSopCisrICAgIAkjIFVuaXhXYXJlIDcueCwgT3BlblVOSVggYW5kIE9wZW5TZXJ2ZXIg Ni4KKyAJY2FzZSBgL2Jpbi91bmFtZSAtWCB8IGdyZXAgIl5NYWNoaW5lImAgaW4KKyAJICAgICo0 ODYqKQkgICAgIFVOQU1FX01BQ0hJTkU9aTQ4NiA7OworIAkgICAgKlBlbnRpdW0pCSAgICAgVU5B TUVfTUFDSElORT1pNTg2IDs7CisgCSAgICAqUGVudCp8KkNlbGVyb24pIFVOQU1FX01BQ0hJTkU9 aTY4NiA7OworIAllc2FjCisgCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN5c3Yke1VO QU1FX1JFTEVBU0V9JHtVTkFNRV9TWVNURU19JHtVTkFNRV9WRVJTSU9OfQorLQlleGl0IDAgOzsK KysJZXhpdCA7OworICAgICBpKjg2Oio6My4yOiopCisgCWlmIHRlc3QgLWYgL3Vzci9vcHRpb25z L2NiLm5hbWU7IHRoZW4KKyAJCVVOQU1FX1JFTD1gc2VkIC1uICdzLy4qVmVyc2lvbiAvL3AnIDwv dXNyL29wdGlvbnMvY2IubmFtZWAKK0BAIC0xMDU3LDczICsxMDk4LDczIEBAIEVPRgorIAllbHNl CisgCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdjMyCisgCWZpCistCWV4aXQgMCA7Owor KwlleGl0IDs7CisgICAgIHBjOio6KjoqKQorIAkjIExlZnQgaGVyZSBmb3IgY29tcGF0aWJpbGl0 eToKKyAgICAgICAgICMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywgYnV0 IGl0IHByaW50cyBub3RoaW5nIGFib3V0CisgICAgICAgICAjIHRoZSBwcm9jZXNzb3IsIHNvIHdl IHBsYXkgc2FmZSBieSBhc3N1bWluZyBpMzg2LgorIAllY2hvIGkzODYtcGMtbXNkb3NkamdwcAor LSAgICAgICAgZXhpdCAwIDs7CisrICAgICAgICBleGl0IDs7CisgICAgIEludGVsOk1hY2g6Myo6 KikKKyAJZWNobyBpMzg2LXBjLW1hY2gzCistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIHBh cmFnb246KjoqOiopCisgCWVjaG8gaTg2MC1pbnRlbC1vc2YxCistCWV4aXQgMCA7OworKwlleGl0 IDs7CisgICAgIGk4NjA6Kjo0Lio6KikgIyBpODYwLVNWUjQKKyAJaWYgZ3JlcCBTdGFyZGVudCAv dXNyL2luY2x1ZGUvc3lzL3VhZG1pbi5oID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKyAJICBlY2hv IGk4NjAtc3RhcmRlbnQtc3lzdiR7VU5BTUVfUkVMRUFTRX0gIyBTdGFyZGVudCBWaXN0cmEgaTg2 MC1TVlI0CisgCWVsc2UgIyBBZGQgb3RoZXIgaTg2MC1TVlI0IHZlbmRvcnMgYmVsb3cgYXMgdGhl eSBhcmUgZGlzY292ZXJlZC4KKyAJICBlY2hvIGk4NjAtdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxF QVNFfSAgIyBVbmtub3duIGk4NjAtU1ZSNAorIAlmaQorLQlleGl0IDAgOzsKKysJZXhpdCA7Owor ICAgICBtaW5pKjpDVElYOlNZUyo1OiopCisgCSMgIm1pbmlmcmFtZSIKKyAJZWNobyBtNjgwMTAt Y29udmVyZ2VudC1zeXN2CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIG1jNjhrOlVOSVg6 U1lTVEVNNTozLjUxbSkKKyAJZWNobyBtNjhrLWNvbnZlcmdlbnQtc3lzdgorLQlleGl0IDAgOzsK KysJZXhpdCA7OworICAgICBNNjgwPzA6RC1OSVg6NS4zOiopCisgCWVjaG8gbTY4ay1kaWFiLWRu aXgKKy0JZXhpdCAwIDs7CistICAgIE02OCo6KjpSM1ZbNTY3XSo6KikKKy0JdGVzdCAtciAvc3lz VjY4ICYmIGVjaG8gJ202OGstbW90b3JvbGEtc3lzdicgJiYgZXhpdCAwIDs7CistICAgIDNbMzQ1 XT8/Oio6NC4wOjMuMCB8IDNbMzRdPz9BOio6NC4wOjMuMCB8IDNbMzRdPz8sKjoqOjQuMDozLjAg fCAzWzM0XT8/Lyo6Kjo0LjA6My4wIHwgNDQwMDoqOjQuMDozLjAgfCA0ODUwOio6NC4wOjMuMCB8 IFNLQTQwOio6NC4wOjMuMCB8IFNEUzI6Kjo0LjA6My4wIHwgU0hHMjoqOjQuMDozLjApCisrCWV4 aXQgOzsKKysgICAgTTY4KjoqOlIzVls1Njc4XSo6KikKKysJdGVzdCAtciAvc3lzVjY4ICYmIHsg ZWNobyAnbTY4ay1tb3Rvcm9sYS1zeXN2JzsgZXhpdDsgfSA7OworKyAgICAzWzM0NV0/PzoqOjQu MDozLjAgfCAzWzM0XT8/QToqOjQuMDozLjAgfCAzWzM0XT8/LCo6Kjo0LjA6My4wIHwgM1szNF0/ Py8qOio6NC4wOjMuMCB8IDQ0MDA6Kjo0LjA6My4wIHwgNDg1MDoqOjQuMDozLjAgfCBTS0E0MDoq OjQuMDozLjAgfCBTRFMyOio6NC4wOjMuMCB8IFNIRzI6Kjo0LjA6My4wIHwgUzc1MDEqOio6NC4w OjMuMCkKKyAJT1NfUkVMPScnCisgCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAorIAkmJiBPU19SRUw9 LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJl bGlkYAorIAkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwK Ky0JICAmJiBlY2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH0gJiYgZXhpdCAwCisrCSAgJiYg eyBlY2hvIGk0ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0KKyAJL2Jpbi91bmFtZSAt cCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCistCSAgJiYgZWNo byBpNTg2LW5jci1zeXN2NC4zJHtPU19SRUx9ICYmIGV4aXQgMCA7OworKwkgICYmIHsgZWNobyBp NTg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9IDs7CisgICAgIDNbMzRdPz86Kjo0LjA6 KiB8IDNbMzRdPz8sKjoqOjQuMDoqKQorICAgICAgICAgL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVs bCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCistICAgICAgICAgICYmIGVjaG8gaTQ4Ni1uY3Itc3lz djQgJiYgZXhpdCAwIDs7CisrICAgICAgICAgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NDsgZXhp dDsgfSA7OworICAgICBtNjgqOkx5bnhPUzoyLio6KiB8IG02OCo6THlueE9TOjMuMCo6KikKKyAJ ZWNobyBtNjhrLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsKKysJ ZXhpdCA7OworICAgICBtYzY4MDMwOlVOSVhfU3lzdGVtX1Y6NC4qOiopCisgCWVjaG8gbTY4ay1h dGFyaS1zeXN2NAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBUU1VOQU1JOkx5bnhPUzoy Lio6KikKKyAJZWNobyBzcGFyYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKy0JZXhp dCAwIDs7CisrCWV4aXQgOzsKKyAgICAgcnM2MDAwOkx5bnhPUzoyLio6KikKKyAJZWNobyByczYw MDAtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworKwlleGl0IDs7 CisgICAgIFBvd2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6My5bMDFdKjoqIHwg UG93ZXJQQzpMeW54T1M6NC4wKjoqKQorIAllY2hvIHBvd2VycGMtdW5rbm93bi1seW54b3Mke1VO QU1FX1JFTEVBU0V9CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIFNNW0JFXVM6VU5JWF9T VjoqOiopCisgCWVjaG8gbWlwcy1kZGUtc3lzdiR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7 CisrCWV4aXQgOzsKKyAgICAgUk0qOlJlbGlhbnRVTklYLSo6KjoqKQorIAllY2hvIG1pcHMtc25p LXN5c3Y0CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIFJNKjpTSU5JWC0qOio6KikKKyAJ ZWNobyBtaXBzLXNuaS1zeXN2NAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICAqOlNJTklY LSo6KjoqKQorIAlpZiB1bmFtZSAtcCAyPi9kZXYvbnVsbCA+L2Rldi9udWxsIDsgdGhlbgorIAkJ VU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKK0BAIC0xMTMxLDY4ICsxMTcy LDg0IEBAIEVPRgorIAllbHNlCisgCQllY2hvIG5zMzJrLXNuaS1zeXN2CisgCWZpCistCWV4aXQg MCA7OworKwlleGl0IDs7CisgICAgIFBFTlRJVU06Kjo0LjAqOiopICMgVW5pc3lzIGBDbGVhclBh dGggSE1QIElYIDQwMDAnIFNWUjQvTVAgZWZmb3J0CisgICAgICAgICAgICAgICAgICAgICAgICMg c2F5cyA8UmljaGFyZC5NLkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KKyAgICAgICAgIGVjaG8g aTU4Ni11bmlzeXMtc3lzdjQKKy0gICAgICAgIGV4aXQgMCA7OworKyAgICAgICAgZXhpdCA7Owor ICAgICAqOlVOSVhfU3lzdGVtX1Y6NCo6RlRYKikKKyAJIyBGcm9tIEdlcmFsZCBIZXdlcyA8aGV3 ZXNAb3Blbm1hcmtldC5jb20+LgorIAkjIEhvdyBhYm91dCBkaWZmZXJlbnRpYXRpbmcgYmV0d2Vl biBzdHJhdHVzIGFyY2hpdGVjdHVyZXM/IC1kam0KKyAJZWNobyBocHBhMS4xLXN0cmF0dXMtc3lz djQKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjoqOio6RlRYKikKKyAJIyBGcm9tIHNl YW5mQHN3ZGMuc3RyYXR1cy5jb20uCisgCWVjaG8gaTg2MC1zdHJhdHVzLXN5c3Y0CistCWV4aXQg MCA7OworKwlleGl0IDs7CisrICAgIGkqODY6Vk9TOio6KikKKysJIyBGcm9tIFBhdWwuR3JlZW5A c3RyYXR1cy5jb20uCisrCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1zdHJhdHVzLXZvcworKwlleGl0 IDs7CisgICAgICo6Vk9TOio6KikKKyAJIyBGcm9tIFBhdWwuR3JlZW5Ac3RyYXR1cy5jb20uCisg CWVjaG8gaHBwYTEuMS1zdHJhdHVzLXZvcworLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBt YzY4KjpBL1VYOio6KikKKyAJZWNobyBtNjhrLWFwcGxlLWF1eCR7VU5BTUVfUkVMRUFTRX0KKy0J ZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgbmV3cyo6TkVXUy1PUzo2KjoqKQorIAllY2hvIG1p cHMtc29ueS1uZXdzb3M2CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIFJbMzRdMDAwOipT eXN0ZW1fVio6KjoqIHwgUjQwMDA6VU5JWF9TWVNWOio6KiB8IFIqMDAwOlVOSVhfU1Y6KjoqKQor IAlpZiBbIC1kIC91c3IvbmVjIF07IHRoZW4KKyAJICAgICAgICBlY2hvIG1pcHMtbmVjLXN5c3Yk e1VOQU1FX1JFTEVBU0V9CisgCWVsc2UKKyAJICAgICAgICBlY2hvIG1pcHMtdW5rbm93bi1zeXN2 JHtVTkFNRV9SRUxFQVNFfQorIAlmaQorLSAgICAgICAgZXhpdCAwIDs7CisrICAgICAgICBleGl0 IDs7CisgICAgIEJlQm94OkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBoYXJkd2FyZSBtYWRl IGJ5IEJlLCBQUEMgb25seS4KKyAJZWNobyBwb3dlcnBjLWJlLWJlb3MKKy0JZXhpdCAwIDs7Cisr CWV4aXQgOzsKKyAgICAgQmVNYWM6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIE1hYyBvciBN YWMgY2xvbmUsIFBQQyBvbmx5LgorIAllY2hvIHBvd2VycGMtYXBwbGUtYmVvcworLQlleGl0IDAg OzsKKysJZXhpdCA7OworICAgICBCZVBDOkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBJbnRl bCBQQyBjb21wYXRpYmxlLgorIAllY2hvIGk1ODYtcGMtYmVvcworLQlleGl0IDAgOzsKKysJZXhp dCA7OworKyAgICBCZVBDOkhhaWt1Oio6KikJIyBIYWlrdSBydW5uaW5nIG9uIEludGVsIFBDIGNv bXBhdGlibGUuCisrCWVjaG8gaTU4Ni1wYy1oYWlrdQorKwlleGl0IDs7CisgICAgIFNYLTQ6U1VQ RVItVVg6KjoqKQorIAllY2hvIHN4NC1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKy0JZXhp dCAwIDs7CisrCWV4aXQgOzsKKyAgICAgU1gtNTpTVVBFUi1VWDoqOiopCisgCWVjaG8gc3g1LW5l Yy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBT WC02OlNVUEVSLVVYOio6KikKKyAJZWNobyBzeDYtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9 CistCWV4aXQgMCA7OworKwlleGl0IDs7CisrICAgIFNYLTc6U1VQRVItVVg6KjoqKQorKwllY2hv IHN4Ny1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKysJZXhpdCA7OworKyAgICBTWC04OlNV UEVSLVVYOio6KikKKysJZWNobyBzeDgtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisrCWV4 aXQgOzsKKysgICAgU1gtOFI6U1VQRVItVVg6KjoqKQorKwllY2hvIHN4OHItbmVjLXN1cGVydXgk e1VOQU1FX1JFTEVBU0V9CisrCWV4aXQgOzsKKyAgICAgUG93ZXIqOlJoYXBzb2R5Oio6KikKKyAJ ZWNobyBwb3dlcnBjLWFwcGxlLXJoYXBzb2R5JHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsK KysJZXhpdCA7OworICAgICAqOlJoYXBzb2R5Oio6KikKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9 LWFwcGxlLXJoYXBzb2R5JHtVTkFNRV9SRUxFQVNFfQorLQlleGl0IDAgOzsKKysJZXhpdCA7Owor ICAgICAqOkRhcndpbjoqOiopCistCWNhc2UgYHVuYW1lIC1wYCBpbgorLQkgICAgKjg2KSBVTkFN RV9QUk9DRVNTT1I9aTY4NiA7OworLQkgICAgcG93ZXJwYykgVU5BTUVfUFJPQ0VTU09SPXBvd2Vy cGMgOzsKKysJVU5BTUVfUFJPQ0VTU09SPWB1bmFtZSAtcGAgfHwgVU5BTUVfUFJPQ0VTU09SPXVu a25vd24KKysJY2FzZSAkVU5BTUVfUFJPQ0VTU09SIGluCisrCSAgICB1bmtub3duKSBVTkFNRV9Q Uk9DRVNTT1I9cG93ZXJwYyA7OworIAllc2FjCisgCWVjaG8gJHtVTkFNRV9QUk9DRVNTT1J9LWFw cGxlLWRhcndpbiR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAg Kjpwcm9jbnRvKjoqOiogfCAqOlFOWDpbMDEyMzQ1Njc4OV0qOiopCisgCVVOQU1FX1BST0NFU1NP Uj1gdW5hbWUgLXBgCisgCWlmIHRlc3QgIiRVTkFNRV9QUk9DRVNTT1IiID0gIng4NiI7IHRoZW4K K0BAIC0xMjAwLDIyICsxMjU3LDI1IEBAIEVPRgorIAkJVU5BTUVfTUFDSElORT1wYworIAlmaQor IAllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS0ke1VOQU1FX01BQ0hJTkV9LW50by1xbngke1VOQU1F X1JFTEVBU0V9CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgICo6UU5YOio6NCopCisgCWVj aG8gaTM4Ni1wYy1xbngKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKysgICAgTlNFLT86Tk9OU1RP UF9LRVJORUw6KjoqKQorKwllY2hvIG5zZS10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQorKwll eGl0IDs7CisgICAgIE5TUi0/Ok5PTlNUT1BfS0VSTkVMOio6KikKKyAJZWNobyBuc3ItdGFuZGVt LW5zayR7VU5BTUVfUkVMRUFTRX0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpOb25T dG9wLVVYOio6KikKKyAJZWNobyBtaXBzLWNvbXBhcS1ub25zdG9wdXgKKy0JZXhpdCAwIDs7Cisr CWV4aXQgOzsKKyAgICAgQlMyMDAwOlBPU0lYKjoqOiopCisgCWVjaG8gYnMyMDAwLXNpZW1lbnMt c3lzdgorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBEUy8qOlVOSVhfU3lzdGVtX1Y6Kjoq KQorIAllY2hvICR7VU5BTUVfTUFDSElORX0tJHtVTkFNRV9TWVNURU19LSR7VU5BTUVfUkVMRUFT RX0KKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpQbGFuOToqOiopCisgCSMgInVuYW1l IC1tIiBpcyBub3QgY29uc2lzdGVudCwgc28gdXNlICRjcHV0eXBlIGluc3RlYWQuIDM4NgorIAkj IGlzIGNvbnZlcnRlZCB0byBpMzg2IGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIHg4NgorQEAg LTEyMjYsMzEgKzEyODYsNDcgQEAgRU9GCisgCSAgICBVTkFNRV9NQUNISU5FPSIkY3B1dHlwZSIK KyAJZmkKKyAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tcGxhbjkKKy0JZXhpdCAwIDs7 CisrCWV4aXQgOzsKKyAgICAgKjpUT1BTLTEwOio6KikKKyAJZWNobyBwZHAxMC11bmtub3duLXRv cHMxMAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICAqOlRFTkVYOio6KikKKyAJZWNobyBw ZHAxMC11bmtub3duLXRlbmV4CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgIEtTMTA6VE9Q Uy0yMDoqOiogfCBLTDEwOlRPUFMtMjA6KjoqIHwgVFlQRTQ6VE9QUy0yMDoqOiopCisgCWVjaG8g cGRwMTAtZGVjLXRvcHMyMAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICBYS0wtMTpUT1BT LTIwOio6KiB8IFRZUEU1OlRPUFMtMjA6KjoqKQorIAllY2hvIHBkcDEwLXhrbC10b3BzMjAKKy0J ZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgKjpUT1BTLTIwOio6KikKKyAJZWNobyBwZHAxMC11 bmtub3duLXRvcHMyMAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworICAgICAqOklUUzoqOiopCisg CWVjaG8gcGRwMTAtdW5rbm93bi1pdHMKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsKKyAgICAgU0VJ Oio6KjpTRUlVWCkKKyAgICAgICAgIGVjaG8gbWlwcy1zZWktc2VpdXgke1VOQU1FX1JFTEVBU0V9 CistCWV4aXQgMCA7OworKwlleGl0IDs7CisgICAgICo6RHJhZ29uRmx5Oio6KikKKyAJZWNobyAk e1VOQU1FX01BQ0hJTkV9LXVua25vd24tZHJhZ29uZmx5YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxz ZWQgLWUgJ3MvWy0oXS4qLy8nYAorLQlleGl0IDAgOzsKKysJZXhpdCA7OworKyAgICAqOipWTVM6 KjoqKQorKyAgICAJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKysJY2Fz ZSAiJHtVTkFNRV9NQUNISU5FfSIgaW4KKysJICAgIEEqKSBlY2hvIGFscGhhLWRlYy12bXMgOyBl eGl0IDs7CisrCSAgICBJKikgZWNobyBpYTY0LWRlYy12bXMgOyBleGl0IDs7CisrCSAgICBWKikg ZWNobyB2YXgtZGVjLXZtcyA7IGV4aXQgOzsKKysJZXNhYyA7OworKyAgICAqOlhFTklYOio6U3lz VikKKysJZWNobyBpMzg2LXBjLXhlbml4CisrCWV4aXQgOzsKKysgICAgaSo4Njpza3lvczoqOiop CisrCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1za3lvc2BlY2hvICR7VU5BTUVfUkVMRUFTRX1g IHwgc2VkIC1lICdzLyAuKiQvLycKKysJZXhpdCA7OworKyAgICBpKjg2OnJkb3M6KjoqKQorKwll Y2hvICR7VU5BTUVfTUFDSElORX0tcGMtcmRvcworKwlleGl0IDs7CisgZXNhYworIAorICNlY2hv ICcoTm8gdW5hbWUgY29tbWFuZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29nbml6ZWQuKScgMT4m MgorQEAgLTEyODIsNyArMTM1OCw3IEBAIG1haW4gKCkKKyAjZW5kaWYKKyAKKyAjaWYgZGVmaW5l ZCAoX19hcm0pICYmIGRlZmluZWQgKF9fYWNvcm4pICYmIGRlZmluZWQgKF9fdW5peCkKKy0gIHBy aW50ZiAoImFybS1hY29ybi1yaXNjaXgiKTsgZXhpdCAoMCk7CisrICBwcmludGYgKCJhcm0tYWNv cm4tcmlzY2l4XG4iKTsgZXhpdCAoMCk7CisgI2VuZGlmCisgCisgI2lmIGRlZmluZWQgKGhwMzAw KSAmJiAhZGVmaW5lZCAoaHB1eCkKK0BAIC0xMzcxLDExICsxNDQ3LDEyIEBAIG1haW4gKCkKKyB9 CisgRU9GCisgCistJENDX0ZPUl9CVUlMRCAtbyAkZHVtbXkgJGR1bW15LmMgMj4vZGV2L251bGwg JiYgJGR1bW15ICYmIGV4aXQgMAorKyRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jIDI+ L2Rldi9udWxsICYmIFNZU1RFTV9OQU1FPWAkZHVtbXlgICYmCisrCXsgZWNobyAiJFNZU1RFTV9O QU1FIjsgZXhpdDsgfQorIAorICMgQXBvbGxvcyBwdXQgdGhlIHN5c3RlbSB0eXBlIGluIHRoZSBl bnZpcm9ubWVudC4KKyAKKy10ZXN0IC1kIC91c3IvYXBvbGxvICYmIHsgZWNobyAke0lTUH0tYXBv bGxvLSR7U1lTVFlQRX07IGV4aXQgMDsgfQorK3Rlc3QgLWQgL3Vzci9hcG9sbG8gJiYgeyBlY2hv ICR7SVNQfS1hcG9sbG8tJHtTWVNUWVBFfTsgZXhpdDsgfQorIAorICMgQ29udmV4IHZlcnNpb25z IHRoYXQgcHJlZGF0ZSB1bmFtZSBjYW4gdXNlIGdldHN5c2luZm8oMSkKKyAKK0BAIC0xMzg0LDIy ICsxNDYxLDIyIEBAIHRoZW4KKyAgICAgY2FzZSBgZ2V0c3lzaW5mbyAtZiBjcHVfdHlwZWAgaW4K KyAgICAgYzEqKQorIAllY2hvIGMxLWNvbnZleC1ic2QKKy0JZXhpdCAwIDs7CisrCWV4aXQgOzsK KyAgICAgYzIqKQorIAlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKKyAJdGhlbiBlY2hvIGMz Mi1jb252ZXgtYnNkCisgCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCisgCWZpCistCWV4aXQgMCA7 OworKwlleGl0IDs7CisgICAgIGMzNCopCisgCWVjaG8gYzM0LWNvbnZleC1ic2QKKy0JZXhpdCAw IDs7CisrCWV4aXQgOzsKKyAgICAgYzM4KikKKyAJZWNobyBjMzgtY29udmV4LWJzZAorLQlleGl0 IDAgOzsKKysJZXhpdCA7OworICAgICBjNCopCisgCWVjaG8gYzQtY29udmV4LWJzZAorLQlleGl0 IDAgOzsKKysJZXhpdCA7OworICAgICBlc2FjCisgZmkKKyAKK0BAIC0xNDEwLDcgKzE0ODcsOSBA QCBUaGlzIHNjcmlwdCwgbGFzdCBtb2RpZmllZCAkdGltZXN0YW1wLCBoYXMgZmFpbGVkIHRvIHJl Y29nbml6ZQorIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHlvdSBhcmUgdXNpbmcuIEl0IGlzIGFkdmlz ZWQgdGhhdCB5b3UKKyBkb3dubG9hZCB0aGUgbW9zdCB1cCB0byBkYXRlIHZlcnNpb24gb2YgdGhl IGNvbmZpZyBzY3JpcHRzIGZyb20KKyAKKy0gICAgZnRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9j b25maWcvCisrICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5n aXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhFQUQKKythbmQKKysgIGh0dHA6Ly9n aXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1j b25maWcuc3ViO2hiPUhFQUQKKyAKKyBJZiB0aGUgdmVyc2lvbiB5b3UgcnVuICgkMCkgaXMgYWxy ZWFkeSB1cCB0byBkYXRlLCBwbGVhc2UKKyBzZW5kIHRoZSBmb2xsb3dpbmcgZGF0YSBhbmQgYW55 IGluZm9ybWF0aW9uIHlvdSB0aGluayBtaWdodCBiZQorb2xkIG1vZGUgMTAwNzU1CituZXcgbW9k ZSAxMDA2NDQKKy0tLSBhL3JlYWRsaW5lL3N1cHBvcnQvY29uZmlnLnJwYXRoCisrKysgYi9yZWFk bGluZS9zdXBwb3J0L2NvbmZpZy5ycGF0aAorQEAgLTYsMTkgKzYsMTggQEAKKyAjICAgVGFrZW4g ZnJvbSBHTlUgbGlidG9vbCwgMjAwMQorICMgICBPcmlnaW5hbGx5IGJ5IEdvcmRvbiBNYXR6aWdr ZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgorICMKKy0jICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysj ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyAjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysjICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyAjICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAjCistIyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLCBidXQKKy0jICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorLSMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorLSMgICBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisrIyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg IworICMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorLSMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSMgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKyMgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKyAjCisgIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyAjICAgZGlzdHJpYnV0ZSB0aGlzIGZpbGUg YXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCitvbGQgbW9kZSAxMDA3NTUKK25l dyBtb2RlIDEwMDY0NAorLS0tIGEvcmVhZGxpbmUvc3VwcG9ydC9jb25maWcuc3ViCisrKysgYi9y ZWFkbGluZS9zdXBwb3J0L2NvbmZpZy5zdWIKK0BAIC0xLDkgKzEsMTAgQEAKKyAjISAvYmluL3No CisgIyBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gc3Vicm91dGluZSBzY3JpcHQuCisgIyAgIENv cHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5 OSwKKy0jICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAw NywgMjAwOCwgMjAwOTgKKysjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCist dGltZXN0YW1wPScyMDA0LTAyLTE2JworK3RpbWVzdGFtcD0nMjAwOC0wMy0yNicKKyAKKyAjIFRo aXMgZmlsZSBpcyAoaW4gcHJpbmNpcGxlKSBjb21tb24gdG8gQUxMIEdOVSBzb2Z0d2FyZS4KKyAj IFRoZSBwcmVzZW5jZSBvZiBhIG1hY2hpbmUgaW4gdGhpcyBmaWxlIHN1Z2dlc3RzIHRoYXQgU09N RSBHTlUgc29mdHdhcmUKK0BAIC0yMSwxNCArMjIsMTUgQEAgdGltZXN0YW1wPScyMDA0LTAyLTE2 JworICMKKyAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisgIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl IFBsYWNlIC0gU3VpdGUgMzMwLAorLSMgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCistCisr IyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQgLSBGaWZ0aCBGbG9vciwgQm9z dG9uLCBNQQorKyMgMDIxMTAtMTMwMSwgVVNBLgorKyMKKyAjIEFzIGEgc3BlY2lhbCBleGNlcHRp b24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyAjIGRpc3RyaWJ1 dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorICMgY29u ZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUg aXQgdW5kZXIKKyAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9y IHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKyAKKysKKyAjIFBsZWFzZSBzZW5kIHBhdGNoZXMg dG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiAgU3VibWl0IGEgY29udGV4dAorICMgZGlmZiBh bmQgYSBwcm9wZXJseSBmb3JtYXR0ZWQgQ2hhbmdlTG9nIGVudHJ5LgorICMKK0BAIC03MCw4ICs3 Miw4IEBAIFJlcG9ydCBidWdzIGFuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3Jn Pi4iCisgdmVyc2lvbj0iXAorIEdOVSBjb25maWcuc3ViICgkdGltZXN0YW1wKQorIAorLUNvcHly aWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwg MjAwMCwgMjAwMQorLUZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorK0NvcHlyaWdodCAo QykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwg MjAwMSwKKysyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCisgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBz ZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KKyB3YXJy YW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4iCitAQCAtODMsMTEgKzg1LDExIEBAIFRyeSBcYCRtZSAtLWhlbHAnIGZv ciBtb3JlIGluZm9ybWF0aW9uLiIKKyB3aGlsZSB0ZXN0ICQjIC1ndCAwIDsgZG8KKyAgIGNhc2Ug JDEgaW4KKyAgICAgLS10aW1lLXN0YW1wIHwgLS10aW1lKiB8IC10ICkKKy0gICAgICAgZWNobyAi JHRpbWVzdGFtcCIgOyBleGl0IDAgOzsKKysgICAgICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0 IDs7CisgICAgIC0tdmVyc2lvbiB8IC12ICkKKy0gICAgICAgZWNobyAiJHZlcnNpb24iIDsgZXhp dCAwIDs7CisrICAgICAgIGVjaG8gIiR2ZXJzaW9uIiA7IGV4aXQgOzsKKyAgICAgLS1oZWxwIHwg LS1oKiB8IC1oICkKKy0gICAgICAgZWNobyAiJHVzYWdlIjsgZXhpdCAwIDs7CisrICAgICAgIGVj aG8gIiR1c2FnZSI7IGV4aXQgOzsKKyAgICAgLS0gKSAgICAgIyBTdG9wIG9wdGlvbiBwcm9jZXNz aW5nCisgICAgICAgIHNoaWZ0OyBicmVhayA7OworICAgICAtICkJIyBVc2Ugc3RkaW4gYXMgaW5w dXQuCitAQCAtOTksNyArMTAxLDcgQEAgd2hpbGUgdGVzdCAkIyAtZ3QgMCA7IGRvCisgICAgICps b2NhbCopCisgICAgICAgICMgRmlyc3QgcGFzcyB0aHJvdWdoIGFueSBsb2NhbCBtYWNoaW5lIHR5 cGVzLgorICAgICAgICBlY2hvICQxCistICAgICAgIGV4aXQgMDs7CisrICAgICAgIGV4aXQgOzsK KyAKKyAgICAgKiApCisgICAgICAgIGJyZWFrIDs7CitAQCAtMTE4LDggKzEyMCw5IEBAIGVzYWMK KyAjIEhlcmUgd2UgbXVzdCByZWNvZ25pemUgYWxsIHRoZSB2YWxpZCBLRVJORUwtT1MgY29tYmlu YXRpb25zLgorIG1heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1d KlwpJC9cMi8nYAorIGNhc2UgJG1heWJlX29zIGluCistICBudG8tcW54KiB8IGxpbnV4LWdudSog fCBsaW51eC1kaWV0bGliYyB8IGxpbnV4LXVjbGliYyogfCB1Y2xpbnV4LXVjbGliYyogfCB1Y2xp bnV4LWdudSogfCBcCistICBrZnJlZWJzZCotZ251KiB8IGtuZXRic2QqLWdudSogfCBuZXRic2Qq LWdudSogfCBzdG9ybS1jaGFvcyogfCBvczItZW14KiB8IHJ0bWstbm92YSopCisrICBudG8tcW54 KiB8IGxpbnV4LWdudSogfCBsaW51eC1kaWV0bGliYyB8IGxpbnV4LW5ld2xpYiogfCBsaW51eC11 Y2xpYmMqIHwgXAorKyAgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2Qq LWdudSogfCBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorKyAgc3Rvcm0tY2hhb3Mq IHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQorICAgICBvcz0tJG1heWJlX29zCisgICAgIGJhc2lj X21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wxLydg CisgICAgIDs7CitAQCAtMTQ1LDcgKzE0OCw3IEBAIGNhc2UgJG9zIGluCisgCS1jb252ZXJnZW50 KiB8IC1uY3IqIHwgLW5ld3MgfCAtMzIqIHwgLTM2MDAqIHwgLTMxMDAqIHwgLWhpdGFjaGkqIHxc CisgCS1jWzEyM10qIHwgLWNvbnZleCogfCAtc3VuIHwgLWNyZHMgfCAtb21yb24qIHwgLWRnIHwg LXVsdHJhIHwgLXR0aSogfCBcCisgCS1oYXJyaXMgfCAtZG9scGhpbiB8IC1oaWdobGV2ZWwgfCAt Z291bGQgfCAtY2JtIHwgLW5zIHwgLW1hc3Njb21wIHwgXAorLQktYXBwbGUgfCAtYXhpcykKKysJ LWFwcGxlIHwgLWF4aXMgfCAta251dGggfCAtY3JheSkKKyAJCW9zPQorIAkJYmFzaWNfbWFjaGlu ZT0kMQorIAkJOzsKK0BAIC0xNzAsNiArMTczLDEwIEBAIGNhc2UgJG9zIGluCisgCS1oaXV4KikK KyAJCW9zPS1oaXV4d2UyCisgCQk7OworKwktc2NvNikKKysJCW9zPS1zY281djYKKysJCWJhc2lj X21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKysJCTs7CisgCS1z Y281KQorIAkJb3M9LXNjbzMuMnY1CisgCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1l ICdzLzg2LS4qLzg2LXBjLydgCitAQCAtMTg2LDYgKzE5MywxMCBAQCBjYXNlICRvcyBpbgorIAkJ IyBEb24ndCBmb3JnZXQgdmVyc2lvbiBpZiBpdCBpcyAzLjJ2NCBvciBuZXdlci4KKyAJCWJhc2lj X21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKyAJCTs7CisrCS1z Y281djYqKQorKwkJIyBEb24ndCBmb3JnZXQgdmVyc2lvbiBpZiBpdCBpcyAzLjJ2NCBvciBuZXdl ci4KKysJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AK KysJCTs7CisgCS1zY28qKQorIAkJb3M9LXNjbzMuMnYyCisgCQliYXNpY19tYWNoaW5lPWBlY2hv ICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCitAQCAtMjMwLDIyICsyNDEsMjcgQEAgY2Fz ZSAkYmFzaWNfbWFjaGluZSBpbgorIAl8IGFscGhhIHwgYWxwaGFldls0LThdIHwgYWxwaGFldjU2 IHwgYWxwaGFldjZbNzhdIHwgYWxwaGFwY2E1WzY3XSBcCisgCXwgYWxwaGE2NCB8IGFscGhhNjRl dls0LThdIHwgYWxwaGE2NGV2NTYgfCBhbHBoYTY0ZXY2Wzc4XSB8IGFscGhhNjRwY2E1WzY3XSBc CisgCXwgYW0zM18yLjAgXAorLQl8IGFyYyB8IGFybSB8IGFybVtibF1lIHwgYXJtZVtsYl0gfCBh cm12WzIzNDVdIHwgYXJtdlszNDVdW2xiXSB8IGF2ciBcCisrCXwgYXJjIHwgYXJtIHwgYXJtW2Js XWUgfCBhcm1lW2xiXSB8IGFybXZbMjM0NV0gfCBhcm12WzM0NV1bbGJdIHwgYXZyIHwgYXZyMzIg XAorKwl8IGJmaW4gXAorIAl8IGM0eCB8IGNsaXBwZXIgXAorIAl8IGQxMHYgfCBkMzB2IHwgZGx4 IHwgZHNwMTZ4eCBcCistCXwgZnIzMCB8IGZydiBcCisrCXwgZmlkbyB8IGZyMzAgfCBmcnYgXAor IAl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4w W253XSB8IGhwcGE2NCBcCisgCXwgaTM3MCB8IGk4NjAgfCBpOTYwIHwgaWE2NCBcCisgCXwgaXAy ayB8IGlxMjAwMCBcCistCXwgbTMyciB8IG02ODAwMCB8IG02OGsgfCBtODhrIHwgbWNvcmUgXAor Kwl8IG0zMmMgfCBtMzJyIHwgbTMycmxlIHwgbTY4MDAwIHwgbTY4ayB8IG04OGsgXAorKwl8IG1h eHEgfCBtYiB8IG1pY3JvYmxhemUgfCBtY29yZSB8IG1lcCB8IG1ldGFnIFwKKyAJfCBtaXBzIHwg bWlwc2JlIHwgbWlwc2ViIHwgbWlwc2VsIHwgbWlwc2xlIFwKKyAJfCBtaXBzMTYgXAorIAl8IG1p cHM2NCB8IG1pcHM2NGVsIFwKKy0JfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAorKwl8IG1pcHM2 NG9jdGVvbiB8IG1pcHM2NG9jdGVvbmVsIFwKKyAJfCBtaXBzNjRvcmlvbiB8IG1pcHM2NG9yaW9u ZWwgXAorKwl8IG1pcHM2NHI1OTAwIHwgbWlwczY0cjU5MDBlbCBcCisrCXwgbWlwczY0dnIgfCBt aXBzNjR2cmVsIFwKKyAJfCBtaXBzNjR2cjQxMDAgfCBtaXBzNjR2cjQxMDBlbCBcCisgCXwgbWlw czY0dnI0MzAwIHwgbWlwczY0dnI0MzAwZWwgXAorIAl8IG1pcHM2NHZyNTAwMCB8IG1pcHM2NHZy NTAwMGVsIFwKKysJfCBtaXBzNjR2cjU5MDAgfCBtaXBzNjR2cjU5MDBlbCBcCisgCXwgbWlwc2lz YTMyIHwgbWlwc2lzYTMyZWwgXAorIAl8IG1pcHNpc2EzMnIyIHwgbWlwc2lzYTMycjJlbCBcCisg CXwgbWlwc2lzYTY0IHwgbWlwc2lzYTY0ZWwgXAorQEAgLTI1NCwyMCArMjcwLDI0IEBAIGNhc2Ug JGJhc2ljX21hY2hpbmUgaW4KKyAJfCBtaXBzaXNhNjRzcjcxayB8IG1pcHNpc2E2NHNyNzFrZWwg XAorIAl8IG1pcHN0eDM5IHwgbWlwc3R4MzllbCBcCisgCXwgbW4xMDIwMCB8IG1uMTAzMDAgXAor Kwl8IG10IFwKKyAJfCBtc3A0MzAgXAorKwl8IG5pb3MgfCBuaW9zMiBcCisgCXwgbnMxNmsgfCBu czMyayBcCistCXwgb3BlbnJpc2MgfCBvcjMyIFwKKysJfCBvcjMyIFwKKyAJfCBwZHAxMCB8IHBk cDExIHwgcGogfCBwamwgXAorIAl8IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8 IHBvd2VycGNsZSB8IHBwY2JlIFwKKyAJfCBweXJhbWlkIFwKKy0JfCBzaCB8IHNoWzEyMzRdIHwg c2hbMjNdZSB8IHNoWzM0XWViIHwgc2hiZSB8IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwK KysJfCBzY29yZSBcCisrCXwgc2ggfCBzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyM11lIHwgc2hb MzRdZWIgfCBzaGViIHwgc2hiZSB8IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwKKyAJfCBz aDY0IHwgc2g2NGxlIFwKKy0JfCBzcGFyYyB8IHNwYXJjNjQgfCBzcGFyYzg2eCB8IHNwYXJjbGV0 IHwgc3BhcmNsaXRlIHwgc3BhcmN2OSB8IHNwYXJjdjliIFwKKy0JfCBzdHJvbmdhcm0gXAorKwl8 IHNwYXJjIHwgc3BhcmM2NCB8IHNwYXJjNjRiIHwgc3BhcmM2NHYgfCBzcGFyYzg2eCB8IHNwYXJj bGV0IHwgc3BhcmNsaXRlIFwKKysJfCBzcGFyY3Y4IHwgc3BhcmN2OSB8IHNwYXJjdjliIHwgc3Bh cmN2OXYgXAorKwl8IHNwdSB8IHN0cm9uZ2FybSBcCisgCXwgdGFob2UgfCB0aHVtYiB8IHRpYzR4 IHwgdGljODAgfCB0cm9uIFwKKyAJfCB2ODUwIHwgdjg1MGUgXAorIAl8IHdlMzJrIFwKKy0JfCB4 ODYgfCB4c2NhbGUgfCB4c3Rvcm15MTYgfCB4dGVuc2EgXAorKwl8IHg4NiB8IHhjMTZ4IHwgeHNj YWxlIHwgeHNjYWxlZVtibF0gfCB4c3Rvcm15MTYgfCB4dGVuc2EgXAorIAl8IHo4aykKKyAJCWJh c2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorIAkJOzsKK0BAIC0yNzgsNiArMjk4 LDkgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorIAkJOzsKKyAJbTg4MTEwIHwgbTY4MFsxMjM0 Nl0wIHwgbTY4Mz8yIHwgbTY4MzYwIHwgbTUyMDAgfCB2NzAgfCB3NjUgfCB6OGspCisgCQk7Owor KwltczEpCisrCQliYXNpY19tYWNoaW5lPW10LXVua25vd24KKysJCTs7CisgCisgCSMgV2UgdXNl IGBwYycgcmF0aGVyIHRoYW4gYHVua25vd24nCisgCSMgYmVjYXVzZSAoMSkgdGhhdCdzIHdoYXQg dGhleSBub3JtYWxseSBhcmUsIGFuZAorQEAgLTI5NywyOCArMzIwLDMxIEBAIGNhc2UgJGJhc2lj X21hY2hpbmUgaW4KKyAJfCBhbHBoYTY0LSogfCBhbHBoYTY0ZXZbNC04XS0qIHwgYWxwaGE2NGV2 NTYtKiB8IGFscGhhNjRldjZbNzhdLSogXAorIAl8IGFscGhhcGNhNVs2N10tKiB8IGFscGhhNjRw Y2E1WzY3XS0qIHwgYXJjLSogXAorIAl8IGFybS0qICB8IGFybWJlLSogfCBhcm1sZS0qIHwgYXJt ZWItKiB8IGFybXYqLSogXAorLQl8IGF2ci0qIFwKKy0JfCBiczIwMDAtKiBcCisrCXwgYXZyLSog fCBhdnIzMi0qIFwKKysJfCBiZmluLSogfCBiczIwMDAtKiBcCisgCXwgY1sxMjNdKiB8IGMzMC0q IHwgW2NqdF05MC0qIHwgYzR4LSogfCBjNTR4LSogfCBjNTV4LSogfCBjNngtKiBcCistCXwgY2xp cHBlci0qIHwgY3lkcmEtKiBcCisrCXwgY2xpcHBlci0qIHwgY3JheW52LSogfCBjeWRyYS0qIFwK KyAJfCBkMTB2LSogfCBkMzB2LSogfCBkbHgtKiBcCisgCXwgZWx4c2ktKiBcCistCXwgZjMwWzAx XS0qIHwgZjcwMC0qIHwgZnIzMC0qIHwgZnJ2LSogfCBmeDgwLSogXAorKwl8IGYzMFswMV0tKiB8 IGY3MDAtKiB8IGZpZG8tKiB8IGZyMzAtKiB8IGZydi0qIHwgZng4MC0qIFwKKyAJfCBoODMwMC0q IHwgaDg1MDAtKiBcCisgCXwgaHBwYS0qIHwgaHBwYTEuWzAxXS0qIHwgaHBwYTIuMC0qIHwgaHBw YTIuMFtud10tKiB8IGhwcGE2NC0qIFwKKyAJfCBpKjg2LSogfCBpODYwLSogfCBpOTYwLSogfCBp YTY0LSogXAorIAl8IGlwMmstKiB8IGlxMjAwMC0qIFwKKy0JfCBtMzJyLSogXAorKwl8IG0zMmMt KiB8IG0zMnItKiB8IG0zMnJsZS0qIFwKKyAJfCBtNjgwMDAtKiB8IG02ODBbMDEyMzQ2XTAtKiB8 IG02ODM2MC0qIHwgbTY4Mz8yLSogfCBtNjhrLSogXAorLQl8IG04ODExMC0qIHwgbTg4ay0qIHwg bWNvcmUtKiBcCisrCXwgbTg4MTEwLSogfCBtODhrLSogfCBtYXhxLSogfCBtY29yZS0qIHwgbWV0 YWctKiBcCisgCXwgbWlwcy0qIHwgbWlwc2JlLSogfCBtaXBzZWItKiB8IG1pcHNlbC0qIHwgbWlw c2xlLSogXAorIAl8IG1pcHMxNi0qIFwKKyAJfCBtaXBzNjQtKiB8IG1pcHM2NGVsLSogXAorLQl8 IG1pcHM2NHZyLSogfCBtaXBzNjR2cmVsLSogXAorKwl8IG1pcHM2NG9jdGVvbi0qIHwgbWlwczY0 b2N0ZW9uZWwtKiBcCisgCXwgbWlwczY0b3Jpb24tKiB8IG1pcHM2NG9yaW9uZWwtKiBcCisrCXwg bWlwczY0cjU5MDAtKiB8IG1pcHM2NHI1OTAwZWwtKiBcCisrCXwgbWlwczY0dnItKiB8IG1pcHM2 NHZyZWwtKiBcCisgCXwgbWlwczY0dnI0MTAwLSogfCBtaXBzNjR2cjQxMDBlbC0qIFwKKyAJfCBt aXBzNjR2cjQzMDAtKiB8IG1pcHM2NHZyNDMwMGVsLSogXAorIAl8IG1pcHM2NHZyNTAwMC0qIHwg bWlwczY0dnI1MDAwZWwtKiBcCisrCXwgbWlwczY0dnI1OTAwLSogfCBtaXBzNjR2cjU5MDBlbC0q IFwKKyAJfCBtaXBzaXNhMzItKiB8IG1pcHNpc2EzMmVsLSogXAorIAl8IG1pcHNpc2EzMnIyLSog fCBtaXBzaXNhMzJyMmVsLSogXAorIAl8IG1pcHNpc2E2NC0qIHwgbWlwc2lzYTY0ZWwtKiBcCitA QCAtMzI2LDI3ICszNTIsMzUgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorIAl8IG1pcHNpc2E2 NHNiMS0qIHwgbWlwc2lzYTY0c2IxZWwtKiBcCisgCXwgbWlwc2lzYTY0c3I3MWstKiB8IG1pcHNp c2E2NHNyNzFrZWwtKiBcCisgCXwgbWlwc3R4MzktKiB8IG1pcHN0eDM5ZWwtKiBcCisrCXwgbW1p eC0qIFwKKysJfCBtdC0qIFwKKyAJfCBtc3A0MzAtKiBcCistCXwgbm9uZS0qIHwgbnAxLSogfCBu djEtKiB8IG5zMTZrLSogfCBuczMyay0qIFwKKysJfCBuaW9zLSogfCBuaW9zMi0qIFwKKysJfCBu b25lLSogfCBucDEtKiB8IG5zMTZrLSogfCBuczMyay0qIFwKKyAJfCBvcmlvbi0qIFwKKyAJfCBw ZHAxMC0qIHwgcGRwMTEtKiB8IHBqLSogfCBwamwtKiB8IHBuLSogfCBwb3dlci0qIFwKKyAJfCBw b3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUtKiB8IHBw Y2JlLSogXAorIAl8IHB5cmFtaWQtKiBcCisgCXwgcm9tcC0qIHwgcnM2MDAwLSogXAorLQl8IHNo LSogfCBzaFsxMjM0XS0qIHwgc2hbMjNdZS0qIHwgc2hbMzRdZWItKiB8IHNoYmUtKiBcCisrCXwg c2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBzaFsyM11lLSogfCBzaFszNF1lYi0qIHwg c2hlYi0qIHwgc2hiZS0qIFwKKyAJfCBzaGxlLSogfCBzaFsxMjM0XWxlLSogfCBzaDNlbGUtKiB8 IHNoNjQtKiB8IHNoNjRsZS0qIFwKKy0JfCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM4Nngt KiB8IHNwYXJjbGV0LSogfCBzcGFyY2xpdGUtKiBcCistCXwgc3BhcmN2OS0qIHwgc3BhcmN2OWIt KiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBzeD8tKiBcCisrCXwgc3BhcmMtKiB8IHNwYXJjNjQt KiB8IHNwYXJjNjRiLSogfCBzcGFyYzY0di0qIHwgc3BhcmM4NngtKiB8IHNwYXJjbGV0LSogXAor Kwl8IHNwYXJjbGl0ZS0qIFwKKysJfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0q IHwgc3BhcmN2OXYtKiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBzeD8tKiBcCisgCXwgdGFob2Ut KiB8IHRodW1iLSogXAorLQl8IHRpYzMwLSogfCB0aWM0eC0qIHwgdGljNTR4LSogfCB0aWM1NXgt KiB8IHRpYzZ4LSogfCB0aWM4MC0qIFwKKysJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0q IHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiB8IHRpbGUtKiBcCisgCXwgdHJvbi0qIFwK KyAJfCB2ODUwLSogfCB2ODUwZS0qIHwgdmF4LSogXAorIAl8IHdlMzJrLSogXAorLQl8IHg4Ni0q IHwgeDg2XzY0LSogfCB4cHMxMDAtKiB8IHhzY2FsZS0qIHwgeHN0b3JteTE2LSogXAorLQl8IHh0 ZW5zYS0qIFwKKysJfCB4ODYtKiB8IHg4Nl82NC0qIHwgeGMxNngtKiB8IHhwczEwMC0qIHwgeHNj YWxlLSogfCB4c2NhbGVlW2JsXS0qIFwKKysJfCB4c3Rvcm15MTYtKiB8IHh0ZW5zYSotKiBcCisg CXwgeW1wLSogXAorIAl8IHo4ay0qKQorIAkJOzsKKysJIyBSZWNvZ25pemUgdGhlIGJhc2ljIENQ VSB0eXBlcyB3aXRob3V0IGNvbXBhbnkgbmFtZSwgd2l0aCBnbG9iIG1hdGNoLgorKwl4dGVuc2Eq KQorKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisrCQk7OworIAkjIFJl Y29nbml6ZSB0aGUgdmFyaW91cyBtYWNoaW5lIG5hbWVzIGFuZCBhbGlhc2VzIHdoaWNoIHN0YW5k CisgCSMgZm9yIGEgQ1BVIHR5cGUgYW5kIGEgY29tcGFueSBhbmQgc29tZXRpbWVzIGV2ZW4gYW4g T1MuCisgCTM4NmJzZCkKK0BAIC00MTcsNiArNDUxLDE0IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUg aW4KKyAJCWJhc2ljX21hY2hpbmU9bnMzMmstc2VxdWVudAorIAkJb3M9LWR5bml4CisgCQk7Owor KwlibGFja2ZpbikKKysJCWJhc2ljX21hY2hpbmU9YmZpbi11bmtub3duCisrCQlvcz0tbGludXgK KysJCTs7CisrCWJsYWNrZmluLSopCisrCQliYXNpY19tYWNoaW5lPWJmaW4tYGVjaG8gJGJhc2lj X21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKysJCW9zPS1saW51eAorKwkJOzsKKyAJYzkw KQorIAkJYmFzaWNfbWFjaGluZT1jOTAtY3JheQorIAkJb3M9LXVuaWNvcworQEAgLTQ0NSwxNiAr NDg3LDI3IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKyAJCWJhc2ljX21hY2hpbmU9ajkwLWNy YXkKKyAJCW9zPS11bmljb3MKKyAJCTs7CistCWNyMTZjKQorLQkJYmFzaWNfbWFjaGluZT1jcjE2 Yy11bmtub3duCisrCWNyYXludikKKysJCWJhc2ljX21hY2hpbmU9Y3JheW52LWNyYXkKKysJCW9z PS11bmljb3NtcAorKwkJOzsKKysJY3IxNikKKysJCWJhc2ljX21hY2hpbmU9Y3IxNi11bmtub3du CisgCQlvcz0tZWxmCisgCQk7OworIAljcmRzIHwgdW5vcykKKyAJCWJhc2ljX21hY2hpbmU9bTY4 ay1jcmRzCisgCQk7OworKwljcmlzdjMyIHwgY3Jpc3YzMi0qIHwgZXRyYXhmcyopCisrCQliYXNp Y19tYWNoaW5lPWNyaXN2MzItYXhpcworKwkJOzsKKyAJY3JpcyB8IGNyaXMtKiB8IGV0cmF4KikK KyAJCWJhc2ljX21hY2hpbmU9Y3Jpcy1heGlzCisgCQk7OworKwljcngpCisrCQliYXNpY19tYWNo aW5lPWNyeC11bmtub3duCisrCQlvcz0tZWxmCisrCQk7OworIAlkYTMwIHwgZGEzMC0qKQorIAkJ YmFzaWNfbWFjaGluZT1tNjhrLWRhMzAKKyAJCTs7CitAQCAtNDc3LDYgKzUzMCwxMCBAQCBjYXNl ICRiYXNpY19tYWNoaW5lIGluCisgCQliYXNpY19tYWNoaW5lPW04OGstbW90b3JvbGEKKyAJCW9z PS1zeXN2MworIAkJOzsKKysJZGpncHApCisrCQliYXNpY19tYWNoaW5lPWk1ODYtcGMKKysJCW9z PS1tc2Rvc2RqZ3BwCisrCQk7OworIAlkcHgyMCB8IGRweDIwLSopCisgCQliYXNpY19tYWNoaW5l PXJzNjAwMC1idWxsCisgCQlvcz0tYm9zeAorQEAgLTYyNyw2ICs2ODQsMTQgQEAgY2FzZSAkYmFz aWNfbWFjaGluZSBpbgorIAkJYmFzaWNfbWFjaGluZT1tNjhrLWlzaQorIAkJb3M9LXN5c3YKKyAJ CTs7CisrCW02OGtub21tdSkKKysJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3duCisrCQlvcz0t bGludXgKKysJCTs7CisrCW02OGtub21tdS0qKQorKwkJYmFzaWNfbWFjaGluZT1tNjhrLWBlY2hv ICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisrCQlvcz0tbGludXgKKysJCTs7 CisgCW04OGstb21yb24qKQorIAkJYmFzaWNfbWFjaGluZT1tODhrLW9tcm9uCisgCQk7OworQEAg LTY0Miw2ICs3MDcsMTAgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorIAkJYmFzaWNfbWFjaGlu ZT1pMzg2LXBjCisgCQlvcz0tbWluZ3czMgorIAkJOzsKKysJbWluZ3czMmNlKQorKwkJYmFzaWNf bWFjaGluZT1hcm0tdW5rbm93bgorKwkJb3M9LW1pbmd3MzJjZQorKwkJOzsKKyAJbWluaWZyYW1l KQorIAkJYmFzaWNfbWFjaGluZT1tNjgwMDAtY29udmVyZ2VudAorIAkJOzsKK0BAIC02NTUsMTAg KzcyNCw2IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKyAJbWlwczMqKQorIAkJYmFzaWNfbWFj aGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9taXBzMy9taXBzNjQvJ2AtdW5r bm93bgorIAkJOzsKKy0JbW1peCopCistCQliYXNpY19tYWNoaW5lPW1taXgta251dGgKKy0JCW9z PS1tbWl4d2FyZQorLQkJOzsKKyAJbW9uaXRvcikKKyAJCWJhc2ljX21hY2hpbmU9bTY4ay1yb202 OGsKKyAJCW9zPS1jb2ZmCitAQCAtNjcxLDYgKzczNiw5IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUg aW4KKyAJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworIAkJb3M9LW1zZG9zCisgCQk7OworKwltczEt KikKKysJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgLWUgJ3MvbXMx LS9tdC0vJ2AKKysJCTs7CisgCW12cykKKyAJCWJhc2ljX21hY2hpbmU9aTM3MC1pYm0KKyAJCW9z PS1tdnMKK0BAIC03MzksOSArODA3LDggQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorIAlucDEp CisgCQliYXNpY19tYWNoaW5lPW5wMS1nb3VsZAorIAkJOzsKKy0JbnYxKQorLQkJYmFzaWNfbWFj aGluZT1udjEtY3JheQorLQkJb3M9LXVuaWNvc21wCisrCW5zZS10YW5kZW0pCisrCQliYXNpY19t YWNoaW5lPW5zZS10YW5kZW0KKyAJCTs7CisgCW5zci10YW5kZW0pCisgCQliYXNpY19tYWNoaW5l PW5zci10YW5kZW0KK0BAIC03NTAsOSArODE3LDggQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgor IAkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9raQorIAkJb3M9LXByb2VsZgorIAkJOzsKKy0Jb3Iz MiB8IG9yMzItKikKKysJb3BlbnJpc2MgfCBvcGVucmlzYy0qKQorIAkJYmFzaWNfbWFjaGluZT1v cjMyLXVua25vd24KKy0JCW9zPS1jb2ZmCisgCQk7OworIAlvczQwMCkKKyAJCWJhc2ljX21hY2hp bmU9cG93ZXJwYy1pYm0KK0BAIC03NzQsNiArODQwLDE0IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUg aW4KKyAJCWJhc2ljX21hY2hpbmU9aTg2MC1pbnRlbAorIAkJb3M9LW9zZgorIAkJOzsKKysJcGFy aXNjKQorKwkJYmFzaWNfbWFjaGluZT1ocHBhLXVua25vd24KKysJCW9zPS1saW51eAorKwkJOzsK KysJcGFyaXNjLSopCisrCQliYXNpY19tYWNoaW5lPWhwcGEtYGVjaG8gJGJhc2ljX21hY2hpbmUg fCBzZWQgJ3MvXlteLV0qLS8vJ2AKKysJCW9zPS1saW51eAorKwkJOzsKKyAJcGJkKQorIAkJYmFz aWNfbWFjaGluZT1zcGFyYy10dGkKKyAJCTs7CitAQCAtNzgzLDYgKzg1NywxMiBAQCBjYXNlICRi YXNpY19tYWNoaW5lIGluCisgCXBjNTMyIHwgcGM1MzItKikKKyAJCWJhc2ljX21hY2hpbmU9bnMz MmstcGM1MzIKKyAJCTs7CisrCXBjOTgpCisrCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKysJCTs7 CisrCXBjOTgtKikKKysJCWJhc2ljX21hY2hpbmU9aTM4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8 IHNlZCAncy9eW14tXSotLy8nYAorKwkJOzsKKyAJcGVudGl1bSB8IHA1IHwgazUgfCBrNiB8IG5l eGdlbiB8IHZpYWMzKQorIAkJYmFzaWNfbWFjaGluZT1pNTg2LXBjCisgCQk7OworQEAgLTgzOSw2 ICs5MTksMTAgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorIAkJYmFzaWNfbWFjaGluZT1pNTg2 LXVua25vd24KKyAJCW9zPS1wdzMyCisgCQk7OworKwlyZG9zKQorKwkJYmFzaWNfbWFjaGluZT1p Mzg2LXBjCisrCQlvcz0tcmRvcworKwkJOzsKKyAJcm9tNjhrKQorIAkJYmFzaWNfbWFjaGluZT1t NjhrLXJvbTY4aworIAkJb3M9LWNvZmYKK0BAIC04NjUsNiArOTQ5LDEwIEBAIGNhc2UgJGJhc2lj X21hY2hpbmUgaW4KKyAJc2IxZWwpCisgCQliYXNpY19tYWNoaW5lPW1pcHNpc2E2NHNiMWVsLXVu a25vd24KKyAJCTs7CisrCXNkZSkKKysJCWJhc2ljX21hY2hpbmU9bWlwc2lzYTMyLXNkZQorKwkJ b3M9LWVsZgorKwkJOzsKKyAJc2VpKQorIAkJYmFzaWNfbWFjaGluZT1taXBzLXNlaQorIAkJb3M9 LXNlaXV4CitAQCAtODc2LDYgKzk2NCw5IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4KKyAJCWJh c2ljX21hY2hpbmU9c2gtaGl0YWNoaQorIAkJb3M9LWhtcworIAkJOzsKKysJc2g1ZWwpCisrCQli YXNpY19tYWNoaW5lPXNoNWxlLXVua25vd24KKysJCTs7CisgCXNoNjQpCisgCQliYXNpY19tYWNo aW5lPXNoNjQtdW5rbm93bgorIAkJOzsKK0BAIC05NjUsNiArMTA1NiwxMCBAQCBjYXNlICRiYXNp Y19tYWNoaW5lIGluCisgCQliYXNpY19tYWNoaW5lPXRpYzZ4LXVua25vd24KKyAJCW9zPS1jb2Zm CisgCQk7OworKwl0aWxlKikKKysJCWJhc2ljX21hY2hpbmU9dGlsZS11bmtub3duCisrCQlvcz0t bGludXgtZ251CisrCQk7OworIAl0eDM5KQorIAkJYmFzaWNfbWFjaGluZT1taXBzdHgzOS11bmtu b3duCisgCQk7OworQEAgLTEwMjUsNiArMTEyMCwxMCBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGlu CisgCQliYXNpY19tYWNoaW5lPWhwcGExLjEtd2luYm9uZAorIAkJb3M9LXByb2VsZgorIAkJOzsK KysJeGJveCkKKysJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworKwkJb3M9LW1pbmd3MzIKKysJCTs7 CisgCXhwcyB8IHhwczEwMCkKKyAJCWJhc2ljX21hY2hpbmU9eHBzMTAwLWhvbmV5d2VsbAorIAkJ OzsKK0BAIC0xMDU1LDYgKzExNTQsOSBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCisgCXJvbXAp CisgCQliYXNpY19tYWNoaW5lPXJvbXAtaWJtCisgCQk7OworKwltbWl4KQorKwkJYmFzaWNfbWFj aGluZT1tbWl4LWtudXRoCisrCQk7OworIAlyczYwMDApCisgCQliYXNpY19tYWNoaW5lPXJzNjAw MC1pYm0KKyAJCTs7CitAQCAtMTA3MSwxMyArMTE3MywxMCBAQCBjYXNlICRiYXNpY19tYWNoaW5l IGluCisgCXdlMzJrKQorIAkJYmFzaWNfbWFjaGluZT13ZTMyay1hdHQKKyAJCTs7CistCXNoMyB8 IHNoNCB8IHNoWzM0XWViIHwgc2hbMTIzNF1sZSB8IHNoWzIzXWVsZSkKKysJc2hbMTIzNF0gfCBz aFsyNF1hIHwgc2hbMzRdZWIgfCBzaFsxMjM0XWxlIHwgc2hbMjNdZWxlKQorIAkJYmFzaWNfbWFj aGluZT1zaC11bmtub3duCisgCQk7OworLQlzaDY0KQorLQkJYmFzaWNfbWFjaGluZT1zaDY0LXVu a25vd24KKy0JCTs7CistCXNwYXJjIHwgc3BhcmN2OSB8IHNwYXJjdjliKQorKwlzcGFyYyB8IHNw YXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFyY3Y5dikKKyAJCWJhc2ljX21hY2hpbmU9 c3BhcmMtc3VuCisgCQk7OworIAljeWRyYSkKK0BAIC0xMTUwLDIwICsxMjQ5LDIzIEBAIGNhc2Ug JG9zIGluCisgCSAgICAgIHwgLWFvcyogXAorIAkgICAgICB8IC1uaW5keSogfCAtdnhzaW0qIHwg LXZ4d29ya3MqIHwgLWVibW9uKiB8IC1obXMqIHwgLW12cyogXAorIAkgICAgICB8IC1jbGl4KiB8 IC1yaXNjb3MqIHwgLXVuaXBsdXMqIHwgLWlyaXMqIHwgLXJ0dSogfCAteGVuaXgqIFwKKy0JICAg ICAgfCAtaGl1eCogfCAtMzg2YnNkKiB8IC1rbmV0YnNkKiB8IC1taXJic2QqIHwgLW5ldGJzZCog fCAtb3BlbmJzZCogXAorKwkgICAgICB8IC1oaXV4KiB8IC0zODZic2QqIHwgLWtuZXRic2QqIHwg LW1pcmJzZCogfCAtbmV0YnNkKiBcCisrCSAgICAgIHwgLW9wZW5ic2QqIHwgLXNvbGlkYnNkKiBc CisgCSAgICAgIHwgLWVra29ic2QqIHwgLWtmcmVlYnNkKiB8IC1mcmVlYnNkKiB8IC1yaXNjaXgq IHwgLWx5bnhvcyogXAorIAkgICAgICB8IC1ib3N4KiB8IC1uZXh0c3RlcCogfCAtY3h1eCogfCAt YW91dCogfCAtZWxmKiB8IC1vYWJpKiBcCisgCSAgICAgIHwgLXB0eCogfCAtY29mZiogfCAtZWNv ZmYqIHwgLXdpbm50KiB8IC1kb21haW4qIHwgLXZzdGEqIFwKKyAJICAgICAgfCAtdWRpKiB8IC1l YWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCisgCSAgICAgIHwgLWNo b3J1c29zKiB8IC1jaG9ydXNyZGIqIFwKKyAJICAgICAgfCAtY3lnd2luKiB8IC1wZSogfCAtcHNv cyogfCAtbW9zcyogfCAtcHJvZWxmKiB8IC1ydGVtcyogXAorLQkgICAgICB8IC1taW5ndzMyKiB8 IC1saW51eC1nbnUqIHwgLWxpbnV4LXVjbGliYyogfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgq IHwgLXVkayogXAorKwkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LW5l d2xpYiogfCAtbGludXgtdWNsaWJjKiBcCisrCSAgICAgIHwgLXV4cHYqIHwgLWJlb3MqIHwgLW1w ZWl4KiB8IC11ZGsqIFwKKyAJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtzKiB8IC1y aGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKKyAJICAgICAgfCAtb3BlbnN0ZXAqIHwg LW9za2l0KiB8IC1jb25peCogfCAtcHczMiogfCAtbm9uc3RvcHV4KiBcCisgCSAgICAgIHwgLXN0 b3JtLWNoYW9zKiB8IC10b3BzMTAqIHwgLXRlbmV4KiB8IC10b3BzMjAqIHwgLWl0cyogXAorIAkg ICAgICB8IC1vczIqIHwgLXZvcyogfCAtcGFsbW9zKiB8IC11Y2xpbnV4KiB8IC1udWNsZXVzKiBc CisgCSAgICAgIHwgLW1vcnBob3MqIHwgLXN1cGVydXgqIHwgLXJ0bWsqIHwgLXJ0bWstbm92YSog fCAtd2luZGlzcyogXAorLQkgICAgICB8IC1wb3dlcm1heCogfCAtZG5peCogfCAtbng2IHwgLW54 NyB8IC1zZWkqIHwgLWRyYWdvbmZseSopCisrCSAgICAgIHwgLXBvd2VybWF4KiB8IC1kbml4KiB8 IC1ueDYgfCAtbng3IHwgLXNlaSogfCAtZHJhZ29uZmx5KiBcCisrCSAgICAgIHwgLXNreW9zKiB8 IC1oYWlrdSogfCAtcmRvcyogfCAtdG9wcGVycyogfCAtZHJvcHMqKQorIAkjIFJlbWVtYmVyLCBl YWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOICosIHRvIG1hdGNoIGEgdmVyc2lvbiBudW1iZXIu CisgCQk7OworIAktcW54KikKK0BAIC0xMTgxLDcgKzEyODMsNyBAQCBjYXNlICRvcyBpbgorIAkJ b3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfG50b3xudG8tcW54fCdgCisgCQk7OworIAktc2ltIHwg LWVzMTgwMCogfCAtaG1zKiB8IC14cmF5IHwgLW9zNjhrKiB8IC1ub25lKiB8IC12ODhyKiBcCist CSAgICAgIHwgLXdpbmRvd3MqIHwgLW9zeCB8IC1hYnVnIHwgLW5ldHdhcmUqIHwgLW9zOSogfCAt YmVvcyogXAorKwkgICAgICB8IC13aW5kb3dzKiB8IC1vc3ggfCAtYWJ1ZyB8IC1uZXR3YXJlKiB8 IC1vczkqIHwgLWJlb3MqIHwgLWhhaWt1KiBcCisgCSAgICAgIHwgLW1hY29zKiB8IC1tcHcqIHwg LW1hZ2ljKiB8IC1tbWl4d2FyZSogfCAtbW9uOTYwKiB8IC1sbmV3cyopCisgCQk7OworIAktbWFj KikKK0BAIC0xMjkwLDYgKzEzOTIsOSBAQCBjYXNlICRvcyBpbgorIAkta2FvcyopCisgCQlvcz0t a2FvcworIAkJOzsKKysJLXp2bW9lKQorKwkJb3M9LXp2bW9lCisrCQk7OworIAktbm9uZSkKKyAJ CTs7CisgCSopCitAQCAtMTMxMiw2ICsxNDE3LDEyIEBAIGVsc2UKKyAjIHN5c3RlbSwgYW5kIHdl J2xsIG5ldmVyIGdldCB0byB0aGlzIHBvaW50LgorIAorIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4K KysgICAgICAgIHNjb3JlLSopCisrCQlvcz0tZWxmCisrCQk7OworKyAgICAgICAgc3B1LSopCisr CQlvcz0tZWxmCisrCQk7OworIAkqLWFjb3JuKQorIAkJb3M9LXJpc2NpeDEuMgorIAkJOzsKK0BA IC0xMzIxLDkgKzE0MzIsOSBAQCBjYXNlICRiYXNpY19tYWNoaW5lIGluCisgCWFybSotc2VtaSkK KyAJCW9zPS1hb3V0CisgCQk7OworLSAgICBjNHgtKiB8IHRpYzR4LSopCistICAgICAgICBvcz0t Y29mZgorLSAgICAgICAgOzsKKysgICAgICAgIGM0eC0qIHwgdGljNHgtKikKKysgICAgICAgIAlv cz0tY29mZgorKwkJOzsKKyAJIyBUaGlzIG11c3QgY29tZSBiZWZvcmUgdGhlICotZGVjIGVudHJ5 LgorIAlwZHAxMC0qKQorIAkJb3M9LXRvcHMyMAorQEAgLTEzNDksNiArMTQ2MCw5IEBAIGNhc2Ug JGJhc2ljX21hY2hpbmUgaW4KKyAJbTY4Ki1jaXNjbykKKyAJCW9zPS1hb3V0CisgCQk7OworKyAg ICAgICAgbWVwLSopCisrCQlvcz0tZWxmCisrCQk7OworIAltaXBzKi1jaXNjbykKKyAJCW9zPS1l bGYKKyAJCTs7CitAQCAtMTM2Nyw5ICsxNDgxLDE1IEBAIGNhc2UgJGJhc2ljX21hY2hpbmUgaW4K KyAJKi1iZSkKKyAJCW9zPS1iZW9zCisgCQk7OworKwkqLWhhaWt1KQorKwkJb3M9LWhhaWt1Cisr CQk7OworIAkqLWlibSkKKyAJCW9zPS1haXgKKyAJCTs7CisrICAgIAkqLWtudXRoKQorKwkJb3M9 LW1taXh3YXJlCisrCQk7OworIAkqLXdlYykKKyAJCW9zPS1wcm9lbGYKKyAJCTs7CitAQCAtMTUz NSw3ICsxNjU1LDcgQEAgY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorIGVzYWMKKyAKKyBlY2hvICRi YXNpY19tYWNoaW5lJG9zCistZXhpdCAwCisrZXhpdAorIAorICMgTG9jYWwgdmFyaWFibGVzOgor ICMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorLS0tIGEv cmVhZGxpbmUvc3VwcG9ydC9ta2RpcnMKKysrKyBiL3JlYWRsaW5lL3N1cHBvcnQvbWtkaXJzCitA QCAtNywxOSArNywxOCBAQAorIAorICMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIworLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0jIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAo YXQgeW91ciBvcHRpb24pCistIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysjICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyAjCistIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KysjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorICMKKy0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSMgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLgor KyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAKKyBmb3IgZGlyCisgZG8KKy0tLSBh L3JlYWRsaW5lL3N1cHBvcnQvbWtkaXN0CisrKysgYi9yZWFkbGluZS9zdXBwb3J0L21rZGlzdAor QEAgLTEyLDE5ICsxMiwxOSBAQAorIAorICMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDIgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgIworLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0jIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv ciAoYXQgeW91ciBvcHRpb24pCistIyBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysjICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAjCistIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCist IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKysjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisgIworLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg UGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuCisgCisgU1JDRElSPXNyYwor IFJPT1ROQU1FPWJhc2gKKy0tLSBhL3JlYWRsaW5lL3N1cHBvcnQvc2hsaWItaW5zdGFsbAorKysr IGIvcmVhZGxpbmUvc3VwcG9ydC9zaGxpYi1pbnN0YWxsCitAQCAtMyw3ICszLDcgQEAKKyAjIHNo bGliLWluc3RhbGwgLSBpbnN0YWxsIGEgc2hhcmVkIGxpYnJhcnkgYW5kIGRvIGFueSBuZWNlc3Nh cnkgaG9zdC1zcGVjaWZpYworICMJCSAgcG9zdC1pbnN0YWxsYXRpb24gY29uZmlndXJhdGlvbiAo bGlrZSBsZGNvbmZpZykKKyAjCistIyB1c2FnZTogc2hsaWItaW5zdGFsbCBbLURdIC1PIGhvc3Rf b3MgLWQgaW5zdGFsbGF0aW9uLWRpciBbLWIgYmluLWRpcl0gLWkgaW5zdGFsbC1wcm9nIFstVV0g bGlicmFyeQorKyMgdXNhZ2U6IHNobGliLWluc3RhbGwgWy1EXSAtTyBob3N0X29zIFstViBob3N0 X3ZlbmRvcl0gLWQgaW5zdGFsbGF0aW9uLWRpciBbLWIgYmluLWRpcl0gLWkgaW5zdGFsbC1wcm9n IFstVV0gbGlicmFyeQorICMKKyAjIENoZXQgUmFtZXkKKyAjIGNoZXRAcG8uY3dydS5lZHUKK0BA IC0xNSwxMyArMTUsMTQgQEAgSU5TVEFMTERJUj0vdXNyL2xvY2FsL2xpYgorIExEQ09ORklHPWxk Y29uZmlnCisgCisgUFJPR05BTUU9YGJhc2VuYW1lICQwYAorLVVTQUdFPSIkUFJPR05BTUUgWy1E XSAtTyBob3N0X29zIC1kIGluc3RhbGxhdGlvbi1kaXIgWy1iIGJpbi1kaXJdIC1pIGluc3RhbGwt cHJvZyBbLVVdIGxpYnJhcnkiCisrVVNBR0U9IiRQUk9HTkFNRSBbLURdIC1PIGhvc3Rfb3MgWy1W IGhvc3RfdmVuZG9yXSAtZCBpbnN0YWxsYXRpb24tZGlyIFstYiBiaW4tZGlyXSAtaSBpbnN0YWxs LXByb2cgWy1VXSBsaWJyYXJ5IgorIAorICMgcHJvY2VzcyBvcHRpb25zCisgCisgd2hpbGUgWyAk IyAtZ3QgMCBdOyBkbworIAljYXNlICIkMSIgaW4KKyAJLU8pCXNoaWZ0OyBob3N0X29zPSIkMSI7 IHNoaWZ0IDs7CisrCS1WKQlzaGlmdDsgaG9zdF92ZW5kb3I9IiQxIjsgc2hpZnQgOzsKKyAJLWQp CXNoaWZ0OyBJTlNUQUxMRElSPSIkMSI7IHNoaWZ0IDs7CisgCS1iKQlzaGlmdDsgQklORElSPSIk MSIgOyBzaGlmdCA7OworIAktaSkJc2hpZnQ7IElOU1RBTExQUk9HPSIkMSIgOyBzaGlmdCA7Owor QEAgLTY1LDE0ICs2NiwxNSBAQCBmaQorICMgcG9zdC1pbnN0YWxsL3VuaW5zdGFsbAorIAorICMg SFAtVVggYW5kIERhcndpbi9NYWNPUyBYIHJlcXVpcmUgdGhhdCBhIHNoYXJlZCBsaWJyYXJ5IGhh dmUgZXhlY3V0ZSBwZXJtaXNzaW9uCisrIyBMaW51eCBkb2VzLCB0b28sIGFuZCBsZGQgd2FybnMg YWJvdXQgaXQKKyAjIEN5Z3dpbiBpbnN0YWxscyBib3RoIGEgZGxsICh3aGljaCBtdXN0IGdvIGlu ICRCSU5ESVIpIGFuZCBhbiBpbXBsaWNpdAorICMgbGluayBsaWJyYXJ5IChpbiAkbGliZGlyKQor IGNhc2UgIiRob3N0X29zIiBpbgorLWhwdXgqfGRhcndpbip8bWFjb3N4KikKKytocHV4KnxkYXJ3 aW4qfG1hY29zeCp8bGludXgqKQorIAlpZiBbIC16ICIkdW5pbnN0YWxsIiBdOyB0aGVuCisgCQlj aG1vZCA1NTUgJHtJTlNUQUxMRElSfS8ke0xJQk5BTUV9CisgCWZpIDs7CistY3lnd2luKikKKytj eWd3aW4qfG1pbmd3KikKKyAJSU1QTElCTkFNRT1gZWNobyAke0xJQk5BTUV9IFwKKyAJCXwgc2Vk IC1lICdzLF5jeWcsbGliLCcgLWUgJ3MsWzAtOV0qLmRsbCQsLmRsbC5hLCdgCisgCWlmIFsgLXog IiR1bmluc3RhbGwiIF07IHRoZW4KK0BAIC0xMTQsOCArMTE2LDggQEAgSU5TVEFMTF9MSU5LMj0n JHtlY2hvfSBjZCAkSU5TVEFMTERJUiAmJiAke2VjaG99ICR7TE59ICRMSUJOQU1FICRMSU5LMicK KyAjCisgIyBDcmVhdGUgc3ltbGlua3MgdG8gdGhlIGluc3RhbGxlZCBsaWJyYXJ5LiAgVGhpcyBz ZWN0aW9uIGlzIGluY29tcGxldGUuCisgIworLWNhc2UgIiRob3N0X29zIiBpbgorLSpsaW51eCop CisrY2FzZSAiJGhvc3Rfb3MtJGhvc3RfdmVuZG9yIiBpbgorKypsaW51eCp8ZnJlZWJzZCotZ2Vu dG9vKQorIAkjIGxpYm5hbWUuc28uTSAtPiBsaWJuYW1lLnNvLk0uTgorIAkke2VjaG99ICR7Uk19 ICR7SU5TVEFMTERJUn0vJExJTksyCisgCWlmIFsgLXogIiR1bmluc3RhbGwiIF07IHRoZW4KK0BA IC0xMjksNyArMTMxLDcgQEAgY2FzZSAiJGhvc3Rfb3MiIGluCisgCWZpCisgCTs7CisgCistYnNk aTQqfCpnbnUqfGRhcndpbip8bWFjb3N4KnxrKmJzZCotZ251KQorK2JzZGk0KnwqZ251KnxkYXJ3 aW4qfG1hY29zeCp8bmV0YnNkKikKKyAJIyBsaWJuYW1lLnNvLk0gLT4gbGlibmFtZS5zby5NLk4K KyAJJHtlY2hvfSAke1JNfSAke0lOU1RBTExESVJ9LyRMSU5LMgorIAlpZiBbIC16ICIkdW5pbnN0 YWxsIiBdOyB0aGVuCitAQCAtMTQzLDcgKzE0NSw3IEBAIGJzZGk0KnwqZ251KnxkYXJ3aW4qfG1h Y29zeCp8aypic2QqLWdudSkKKyAJZmkKKyAJOzsKKyAKKy1zb2xhcmlzMip8YWl4NC5bMi05XSp8 b3NmKnxpcml4WzU2XSp8c3lzdls0NV0qfGRndXgqKQorK3NvbGFyaXMyKnxhaXg0LlsyLTldKnxh aXhbNS05XSp8b3NmKnxpcml4WzU2XSp8c3lzdls0NV0qfGRndXgqfGludGVyaXgqKQorIAkjIGxp Ym5hbWUuc28gLT4gbGlibmFtZS5zby5NCisgCSR7ZWNob30gJHtSTX0gJHtJTlNUQUxMRElSfS8k TElOSzEKKyAJaWYgWyAteiAiJHVuaW5zdGFsbCIgXTsgdGhlbgorQEAgLTE1Myw3ICsxNTUsNyBA QCBzb2xhcmlzMip8YWl4NC5bMi05XSp8b3NmKnxpcml4WzU2XSp8c3lzdls0NV0qfGRndXgqKQor IAorIAorICMgRnJlZUJTRCAzLnggYW5kIGFib3ZlIGNhbiBoYXZlIGVpdGhlciBhLm91dCBvciBF TEYgc2hhcmVkIGxpYnJhcmllcworLWZyZWVic2RbMy05XSp8ZnJlZWJzZGVsZlszLTldKnxmcmVl YnNkYW91dFszLTldKikKKytmcmVlYnNkMyp8ZnJlZWJzZGFvdXQqKQorIAlpZiBbIC14IC91c3Iv YmluL29iamZvcm1hdCBdICYmIFsgImAvdXNyL2Jpbi9vYmpmb3JtYXRgIiA9ICJlbGYiIF07IHRo ZW4KKyAJCSMgbGlibmFtZS5zbyAtPiBsaWJuYW1lLnNvLk0KKyAJCSR7ZWNob30gJHtSTX0gJHtJ TlNUQUxMRElSfS8kTElOSzEKK0BAIC0xNzUsNiArMTc3LDE0IEBAIGZyZWVic2RbMy05XSp8ZnJl ZWJzZGVsZlszLTldKnxmcmVlYnNkYW91dFszLTldKikKKyAJZmkKKyAJOzsKKyAKKytmcmVlYnNk WzQtOV0qfGZyZWVic2RlbGYqfGRyYWdvbmZseSopCisrCSMgbGlibmFtZS5zbyAtPiBsaWJuYW1l LnNvLk0KKysJJHtlY2hvfSAke1JNfSAke0lOU1RBTExESVJ9LyRMSU5LMQorKwlpZiBbIC16ICIk dW5pbnN0YWxsIiBdOyB0aGVuCisrCQlldmFsICRJTlNUQUxMX0xJTksxCisrCWZpCisrCTs7Cisr CQorIGhwdXgxKikKKyAJIyBsaWJuYW1lLnNsIC0+IGxpYm5hbWUuTQorIAkke2VjaG99ICR7Uk19 ICR7SU5TVEFMTERJUn0vJExJTksxLnNsCitAQCAtMTgzLDcgKzE5Myw3IEBAIGhwdXgxKikKKyAJ ZmkKKyAJOzsKKyAKKy1jeWd3aW4qKQorK2N5Z3dpbip8bWluZ3cqKQorIAkjIExpbmtzIHRvIC5k bGxzIGRvbid0IHdvcmsuICBIZW5jZSBzaG9iai1jb25mIHVzZWQgRExMVkVSU0lPTi5kbGwKKyAJ IyBpbnN0ZWFkIG9mIHNvLlNITElCX01BSk9SLlNITElCX01JTk9SLiAgVGhlIHBvc3RpbnN0YWxs IGFib3ZlCisgCSMgdG9vayBjYXJlIG9mIGV2ZXJ5dGhpbmcgZWxzZS4KK29sZCBtb2RlIDEwMDc1 NQorbmV3IG1vZGUgMTAwNjQ0CistLS0gYS9yZWFkbGluZS9zdXBwb3J0L3Nob2JqLWNvbmYKKysr KyBiL3JlYWRsaW5lL3N1cHBvcnQvc2hvYmotY29uZgorQEAgLTEwLDIxICsxMCwyMyBAQAorICMg Q2hldCBSYW1leQorICMgY2hldEBwby5jd3J1LmVkdQorIAorLSMgQ29weXJpZ2h0IChDKSAxOTk2 LTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgIENvcHlyaWdodCAoQykg MTk5Ni0yMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICMKKy0jIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CistIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSMgYW55IGxhdGVyIHZlcnNpb24u CisrIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBCYXNoLCB0aGUgQm91cm5lIEFnYWluIFNI ZWxsLgorICMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrIworKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysjICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgIworLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistIyBGb3Vu ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx MSBVU0EuCisgCisgIworICMgZGVmYXVsdHMKK0BAIC02Miw3ICs2NCw3IEBAIHdoaWxlIFsgJCMg LWd0IDAgXTsgZG8KKyAJZXNhYworIGRvbmUKKyAKKy1jYXNlICIke2hvc3Rfb3N9LSR7U0hPQkpf Q0N9IiBpbgorK2Nhc2UgIiR7aG9zdF9vc30tJHtTSE9CSl9DQ30tJHtob3N0X3ZlbmRvcn0iIGlu Cisgc3Vub3M0Ki0qZ2NjKikKKyAJU0hPQkpfQ0ZMQUdTPS1mcGljCisgCVNIT0JKX0xEPS91c3Iv YmluL2xkCitAQCAtODAsMTUgKzgyLDE3IEBAIHN1bm9zNCopCisgCTs7CisgCisgc3Vub3M1Ki0q Z2NjKnxzb2xhcmlzMiotKmdjYyopCistCVNIT0JKX0NGTEFHUz0tZnBpYworIAlTSE9CSl9MRD0n JHtDQ30nCisgCWxkX3VzZWQ9YGdjYyAtcHJpbnQtcHJvZy1uYW1lPWxkYAorIAlpZiAke2xkX3Vz ZWR9IC1WIDI+JjEgfCBncmVwIEdOVSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAJCSMgVGhpcyBs aW5lIHdvcmtzIGZvciB0aGUgR05VIGxkCisgCQlTSE9CSl9MREZMQUdTPSctc2hhcmVkIC1XbCwt aCwkQCcKKysJCSMgaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2JpbnV0aWxzLzIwMDEtMDgvbXNn MDAzNjEuaHRtbAorKwkJU0hPQkpfQ0ZMQUdTPS1mUElDCisgCWVsc2UKKyAJCSMgVGhpcyBsaW5l IHdvcmtzIGZvciB0aGUgU29sYXJpcyBsaW5rZXIgaW4gL3Vzci9jY3MvYmluL2xkCisgCQlTSE9C Sl9MREZMQUdTPSctc2hhcmVkIC1XbCwtaSAtV2wsLWgsJEAnCisrCQlTSE9CSl9DRkxBR1M9LWZw aWMKKyAJZmkKKyAKKyAjCVNITElCX1hMREZMQUdTPSctUiAkKGxpYmRpciknCitAQCAtMTA0LDgg KzEwOCw4IEBAIHN1bm9zNSp8c29sYXJpczIqKQorIAlTSExJQl9MSUJWRVJTSU9OPSckKFNITElC X0xJQlNVRkYpLiQoU0hMSUJfTUFKT1IpJworIAk7OworIAorLSMgQWxsIHZlcnNpb25zIG9mIExp bnV4IG9yIHRoZSBzZW1pLW15dGhpY2FsIEdOVSBIdXJkLgorLWxpbnV4Ki0qfGdudSotKnxrKmJz ZCotZ251LSopCisrIyBBbGwgdmVyc2lvbnMgb2YgTGludXggKGluY2x1ZGluZyBHZW50b28vRnJl ZUJTRCkgb3IgdGhlIHNlbWktbXl0aGljYWwgR05VIEh1cmQuCisrbGludXgqLSp8Z251Ki0qfGsq YnNkKi1nbnUtKnxmcmVlYnNkKi1nZW50b28pCisgCVNIT0JKX0NGTEFHUz0tZlBJQworIAlTSE9C Sl9MRD0nJHtDQ30nCisgCVNIT0JKX0xERkxBR1M9Jy1zaGFyZWQgLVdsLC1zb25hbWUsJEAnCitA QCAtMTE0LDcgKzExOCw3IEBAIGxpbnV4Ki0qfGdudSotKnxrKmJzZCotZ251LSopCisgCVNITElC X0xJQlZFUlNJT049JyQoU0hMSUJfTElCU1VGRikuJChTSExJQl9NQUpPUikkKFNITElCX01JTk9S KScKKyAJOzsKKyAKKy1mcmVlYnNkMiogfCBuZXRic2QqKQorK2ZyZWVic2QyKikKKyAJU0hPQkpf Q0ZMQUdTPS1mcGljCisgCVNIT0JKX0xEPWxkCisgCVNIT0JKX0xERkxBR1M9Jy14IC1Cc2hhcmVh YmxlJworQEAgLTEyNCw4ICsxMjgsOCBAQCBmcmVlYnNkMiogfCBuZXRic2QqKQorIAk7OworIAor ICMgRnJlZUJTRC0zLnggRUxGCistZnJlZWJzZFszLTldKnxmcmVlYnNkZWxmWzMtOV0qfGZyZWVi c2Rhb3V0WzMtOV0qfGRyYWdvbmZseSopCistCVNIT0JKX0NGTEFHUz0tZnBpYworK2ZyZWVic2Qz KnxmcmVlYnNkYW91dCopCisrCVNIT0JKX0NGTEFHUz0tZlBJQworIAlTSE9CSl9MRD0nJHtDQ30n CisgCisgCWlmIFsgLXggL3Vzci9iaW4vb2JqZm9ybWF0IF0gJiYgWyAiYC91c3IvYmluL29iamZv cm1hdGAiID0gImVsZiIgXTsgdGhlbgorQEAgLTE0MSw3ICsxNDUsMzUgQEAgZnJlZWJzZFszLTld KnxmcmVlYnNkZWxmWzMtOV0qfGZyZWVic2Rhb3V0WzMtOV0qfGRyYWdvbmZseSopCisgCWZpCisg CTs7CisgCisrIyBGcmVlQlNELTQueCBhbmQgbGF0ZXIgaGF2ZSBvbmx5IEVMRgorK2ZyZWVic2Rb NC05XSp8ZnJlZWJzZGVsZip8ZHJhZ29uZmx5KikKKysJU0hPQkpfQ0ZMQUdTPS1mUElDCisrCVNI T0JKX0xEPScke0NDfScKKysKKysJU0hPQkpfTERGTEFHUz0nLXNoYXJlZCAtV2wsLXNvbmFtZSwk QCcKKysJU0hMSUJfWExERkxBR1M9Jy1XbCwtcnBhdGgsJChsaWJkaXIpJworKworKwlTSExJQl9M SUJWRVJTSU9OPSckKFNITElCX0xJQlNVRkYpLiQoU0hMSUJfTUFKT1IpJworKwk7OworKworICMg RGFyd2luL01hY09TIFgKKytkYXJ3aW5bODldKnxkYXJ3aW4xMCopCisrCVNIT0JKX1NUQVRVUz1z dXBwb3J0ZWQKKysJU0hMSUJfU1RBVFVTPXN1cHBvcnRlZAorKwkKKysJU0hPQkpfQ0ZMQUdTPSct Zm5vLWNvbW1vbicKKysKKysJU0hPQkpfTEQ9J01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0xMC4z ICR7Q0N9JworKworKwlTSExJQl9MSUJWRVJTSU9OPSckKFNITElCX01BSk9SKSQoU0hMSUJfTUlO T1IpLiQoU0hMSUJfTElCU1VGRiknCisrCVNITElCX0xJQlNVRkY9J2R5bGliJworKworKwlTSE9C Sl9MREZMQUdTPSctZHluYW1pY2xpYiAtZHluYW1pYyAtdW5kZWZpbmVkIGR5bmFtaWNfbG9va3Vw IC1hcmNoX29ubHkgYC91c3IvYmluL2FyY2hgJworKwlTSExJQl9YTERGTEFHUz0nLWR5bmFtaWNs aWIgLWFyY2hfb25seSBgL3Vzci9iaW4vYXJjaGAgLWluc3RhbGxfbmFtZSAkKGxpYmRpcikvJEAg LWN1cnJlbnRfdmVyc2lvbiAkKFNITElCX01BSk9SKSQoU0hMSUJfTUlOT1IpIC1jb21wYXRpYmls aXR5X3ZlcnNpb24gJChTSExJQl9NQUpPUikgLXYnCisrCisrCVNITElCX0xJQlM9Jy1sbmN1cnNl cycJIyBzZWUgaWYgLWxjdXJzZXMgd29ya3Mgb24gTWFjT1MgWCAxMC4xIAorKwk7OworKworIGRh cndpbip8bWFjb3N4KikKKyAJU0hPQkpfU1RBVFVTPXVuc3VwcG9ydGVkCisgCVNITElCX1NUQVRV Uz1zdXBwb3J0ZWQKK0BAIC0xNTQsNyArMTg2LDcgQEAgZGFyd2luKnxtYWNvc3gqKQorIAlTSExJ Ql9MSUJTVUZGPSdkeWxpYicKKyAKKyAJY2FzZSAiJHtob3N0X29zfSIgaW4KKy0JZGFyd2luWzc4 XSopCVNIT0JKX0xERkxBR1M9JycKKysJZGFyd2luWzc4OV0qfGRhcndpbjEwKikJU0hPQkpfTERG TEFHUz0nJworIAkJCVNITElCX1hMREZMQUdTPSctZHluYW1pY2xpYiAtYXJjaF9vbmx5IGAvdXNy L2Jpbi9hcmNoYCAtaW5zdGFsbF9uYW1lICQobGliZGlyKS8kQCAtY3VycmVudF92ZXJzaW9uICQo U0hMSUJfTUFKT1IpJChTSExJQl9NSU5PUikgLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkKFNITElC X01BSk9SKSAtdicKKyAJCQk7OworIAkqKQkJU0hPQkpfTERGTEFHUz0nLWR5bmFtaWMnCitAQCAt MTY1LDcgKzE5Nyw3IEBAIGRhcndpbip8bWFjb3N4KikKKyAJU0hMSUJfTElCUz0nLWxuY3Vyc2Vz JwkjIHNlZSBpZiAtbGN1cnNlcyB3b3JrcyBvbiBNYWNPUyBYIDEwLjEgCisgCTs7CisgCistb3Bl bmJzZCopCisrb3BlbmJzZCp8bmV0YnNkKikKKyAJU0hPQkpfQ0ZMQUdTPS1mUElDCisgCVNIT0JK X0xEPScke0NDfScKKyAJU0hPQkpfTERGTEFHUz0nLXNoYXJlZCcKK0BAIC0yMzAsNyArMjYyLDcg QEAgb3NmKikKKyAJU0hMSUJfTElCVkVSU0lPTj0nJChTSExJQl9MSUJTVUZGKS4kKFNITElCX01B Sk9SKScKKyAJOzsKKyAKKy1haXg0LlsyLTldKi0qZ2NjKikJCSMgbGlnaHRseSB0ZXN0ZWQgYnkg amlrQGNpc2NvLmNvbQorK2FpeDQuWzItOV0qLSpnY2MqfGFpeFs1LTldLiotKmdjYyopCQkjIGxp Z2h0bHkgdGVzdGVkIGJ5IGppa0BjaXNjby5jb20KKyAJU0hPQkpfQ0ZMQUdTPS1mcGljCisgCVNI T0JKX0xEPSdsZCcKKyAJU0hPQkpfTERGTEFHUz0nLWJkeW5hbWljIC1ibm9lbnRyeSAtYmV4cGFs bCcKK0BAIC0yNDEsNyArMjczLDcgQEAgYWl4NC5bMi05XSotKmdjYyopCQkjIGxpZ2h0bHkgdGVz dGVkIGJ5IGppa0BjaXNjby5jb20KKyAJU0hMSUJfTElCVkVSU0lPTj0nJChTSExJQl9MSUJTVUZG KS4kKFNITElCX01BSk9SKScKKyAJOzsKKyAKKy1haXg0LlsyLTldKikKKythaXg0LlsyLTldKnxh aXhbNS05XS4qKQorIAlTSE9CSl9DRkxBR1M9LUsKKyAJU0hPQkpfTEQ9J2xkJworIAlTSE9CSl9M REZMQUdTPSctYmR5bmFtaWMgLWJub2VudHJ5IC1iZXhwYWxsJworQEAgLTMxMiw3ICszNDQsNyBA QCBocHV4MTAqLSpnY2MqKQorIAlTSE9CSl9MRD0nJHtDQ30nCisgCSMgaWYgeW91IGhhdmUgcHJv YmxlbXMgbGlua2luZyBoZXJlLCBtb3ZpbmcgdGhlIGAtV2wsK2gsJEAnIGZyb20KKyAJIyBTSExJ Ql9YTERGTEFHUyB0byBTSE9CSl9MREZMQUdTIGhhcyBiZWVuIHJlcG9ydGVkIHRvIHdvcmsKKy0J U0hPQkpfTERGTEFHUz0nLXNoYXJlZCAtV2wsLWIgLVdsLCtzJworKwlTSE9CSl9MREZMQUdTPSct c2hhcmVkIC1mcGljIC1XbCwtYiAtV2wsK3MnCisgCisgCVNITElCX1hMREZMQUdTPSctV2wsK2gs JEAgLVdsLCtiLCQobGliZGlyKScKKyAJU0hMSUJfTElCU1VGRj0nc2wnCitAQCAtNDcyLDIwICs1 MDQsMzcgQEAgbXNkb3MqKQorIAorIGN5Z3dpbiopCisgCVNIT0JKX0xEPSckKENDKScKKy0gICAg ICAgIFNIT0JKX0xERkxBR1M9Jy1zaGFyZWQgLVdsLC0tZW5hYmxlLWF1dG8taW1wb3J0IC1XbCwt LWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVdsLC0tZXhwb3J0LWFsbCAtV2wsLS1vdXQtaW1wbGli PSQoQCkuYScKKy0gICAgICAgIFNITElCX0xJQlBSRUY9J2N5ZycKKy0gICAgICAgIFNITElCX0xJ QlNVRkY9J2RsbCcKKy0gICAgICAgIFNITElCX0xJQlZFUlNJT049JyQoU0hMSUJfRExMVkVSU0lP TikuJChTSExJQl9MSUJTVUZGKScKKy0gICAgICAgIFNITElCX0xJQlM9JyQoVEVSTUNBUF9MSUIp JworKwlTSE9CSl9MREZMQUdTPSctc2hhcmVkIC1XbCwtLWVuYWJsZS1hdXRvLWltcG9ydCAtV2ws LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1XbCwtLWV4cG9ydC1hbGwgLVdsLC0tb3V0LWltcGxp Yj0kKEApLmEnCisrCVNITElCX0xJQlBSRUY9J2N5ZycKKysJU0hMSUJfTElCU1VGRj0nZGxsJwor KwlTSExJQl9MSUJWRVJTSU9OPSckKFNITElCX0RMTFZFUlNJT04pLiQoU0hMSUJfTElCU1VGRikn CisrCVNITElCX0xJQlM9JyQoVEVSTUNBUF9MSUIpJworIAorIAlTSExJQl9ET1Q9CistICAgICAg ICAjIEZvciBvZmZpY2lhbCBjeWd3aW4gcmVsZWFzZXMsIERMTFZFUlNJT04gd2lsbCBiZSBkZWZp bmVkIGluIHRoZQorLSAgICAgICAgIyBlbnZpcm9ubWVudCBvZiBjb25maWd1cmUsIGFuZCB3aWxs IGJlIGluY3JlbWVudGVkIGFueSB0aW1lIHRoZSBBUEkKKy0gICAgICAgICMgY2hhbmdlcyBpbiBh IG5vbi1iYWNrd2FyZHMgY29tcGF0aWJsZSBtYW5uZXIuICBPdGhlcndpc2UsIGl0IGlzIGp1c3QK Ky0gICAgICAgICMgU0hMSUJfTUFKT1IuCistICAgICAgICBpZiBbIC1uICIkRExMVkVSU0lPTiIg XSA7IHRoZW4KKysJIyBGb3Igb2ZmaWNpYWwgY3lnd2luIHJlbGVhc2VzLCBETExWRVJTSU9OIHdp bGwgYmUgZGVmaW5lZCBpbiB0aGUKKysJIyBlbnZpcm9ubWVudCBvZiBjb25maWd1cmUsIGFuZCB3 aWxsIGJlIGluY3JlbWVudGVkIGFueSB0aW1lIHRoZSBBUEkKKysJIyBjaGFuZ2VzIGluIGEgbm9u LWJhY2t3YXJkcyBjb21wYXRpYmxlIG1hbm5lci4gIE90aGVyd2lzZSwgaXQgaXMganVzdAorKwkj IFNITElCX01BSk9SLgorKwlpZiBbIC1uICIkRExMVkVSU0lPTiIgXSA7IHRoZW4KKyAJCVNITElC X0RMTFZFUlNJT049IiRETExWRVJTSU9OIgorLSAgICAgICAgZmkKKysJZmkKKysJOzsKKysKKytt aW5ndyopCisrCVNIT0JKX0xEPSckKENDKScKKysJU0hPQkpfTERGTEFHUz0nLXNoYXJlZCAtV2ws LS1lbmFibGUtYXV0by1pbXBvcnQgLVdsLC0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtV2wsLS1l eHBvcnQtYWxsIC1XbCwtLW91dC1pbXBsaWI9JChAKS5hJworKwlTSExJQl9MSUJTVUZGPSdkbGwn CisrCVNITElCX0xJQlZFUlNJT049JyQoU0hMSUJfRExMVkVSU0lPTikuJChTSExJQl9MSUJTVUZG KScKKysJU0hMSUJfTElCUz0nJChURVJNQ0FQX0xJQiknCisrCisrCVNITElCX0RPVD0KKysJIyBG b3Igb2ZmaWNpYWwgY3lnd2luIHJlbGVhc2VzLCBETExWRVJTSU9OIHdpbGwgYmUgZGVmaW5lZCBp biB0aGUKKysJIyBlbnZpcm9ubWVudCBvZiBjb25maWd1cmUsIGFuZCB3aWxsIGJlIGluY3JlbWVu dGVkIGFueSB0aW1lIHRoZSBBUEkKKysJIyBjaGFuZ2VzIGluIGEgbm9uLWJhY2t3YXJkcyBjb21w YXRpYmxlIG1hbm5lci4gIE90aGVyd2lzZSwgaXQgaXMganVzdAorKwkjIFNITElCX01BSk9SLgor KwlpZiBbIC1uICIkRExMVkVSU0lPTiIgXSA7IHRoZW4KKysJCVNITElCX0RMTFZFUlNJT049IiRE TExWRVJTSU9OIgorKwlmaQorIAk7OworIAorICMKKy0tLSBhL3JlYWRsaW5lL3N1cHBvcnQvd2N3 aWR0aC5jCisrKysgYi9yZWFkbGluZS9zdXBwb3J0L3djd2lkdGguYworQEAgLTEsMjEgKzEsNzMg QEAKKyAvKgorLSAqIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2Ygd2N3aWR0aCgpIGFuZCB3 Y3N3aWR0aCgpIGFzIGRlZmluZWQgaW4KKy0gKiAiVGhlIFNpbmdsZSBVTklYIFNwZWNpZmljYXRp b24sIFZlcnNpb24gMiwgVGhlIE9wZW4gR3JvdXAsIDE5OTciCistICogPGh0dHA6Ly93d3cuVU5J WC1zeXN0ZW1zLm9yZy9vbmxpbmUuaHRtbD4KKysgKiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9u IG9mIHdjd2lkdGgoKSBhbmQgd2Nzd2lkdGgoKSAoZGVmaW5lZCBpbgorKyAqIElFRUUgU3RkIDEw MDIuMS0yMDAxKSBmb3IgVW5pY29kZS4KKyAgKgorLSAqIE1hcmt1cyBLdWhuIC0tIDIwMDEtMDkt MDggLS0gcHVibGljIGRvbWFpbgorKyAqIGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9vbmxpbmVw dWJzLzAwNzkwNDk3NS9mdW5jdGlvbnMvd2N3aWR0aC5odG1sCisrICogaHR0cDovL3d3dy5vcGVu Z3JvdXAub3JnL29ubGluZXB1YnMvMDA3OTA0OTc1L2Z1bmN0aW9ucy93Y3N3aWR0aC5odG1sCisr ICoKKysgKiBJbiBmaXhlZC13aWR0aCBvdXRwdXQgZGV2aWNlcywgTGF0aW4gY2hhcmFjdGVycyBh bGwgb2NjdXB5IGEgc2luZ2xlCisrICogImNlbGwiIHBvc2l0aW9uIG9mIGVxdWFsIHdpZHRoLCB3 aGVyZWFzIGlkZW9ncmFwaGljIENKSyBjaGFyYWN0ZXJzCisrICogb2NjdXB5IHR3byBzdWNoIGNl bGxzLiBJbnRlcm9wZXJhYmlsaXR5IGJldHdlZW4gdGVybWluYWwtbGluZQorKyAqIGFwcGxpY2F0 aW9ucyBhbmQgKHRlbGV0eXBlLXN0eWxlKSBjaGFyYWN0ZXIgdGVybWluYWxzIHVzaW5nIHRoZQor KyAqIFVURi04IGVuY29kaW5nIHJlcXVpcmVzIGFncmVlbWVudCBvbiB3aGljaCBjaGFyYWN0ZXIg c2hvdWxkIGFkdmFuY2UKKysgKiB0aGUgY3Vyc29yIGJ5IGhvdyBtYW55IGNlbGwgcG9zaXRpb25z LiBObyBlc3RhYmxpc2hlZCBmb3JtYWwKKysgKiBzdGFuZGFyZHMgZXhpc3QgYXQgcHJlc2VudCBv biB3aGljaCBVbmljb2RlIGNoYXJhY3RlciBzaGFsbCBvY2N1cHkKKysgKiBob3cgbWFueSBjZWxs IHBvc2l0aW9ucyBvbiBjaGFyYWN0ZXIgdGVybWluYWxzLiBUaGVzZSByb3V0aW5lcyBhcmUKKysg KiBhIGZpcnN0IGF0dGVtcHQgb2YgZGVmaW5pbmcgc3VjaCBiZWhhdmlvciBiYXNlZCBvbiBzaW1w bGUgcnVsZXMKKysgKiBhcHBsaWVkIHRvIGRhdGEgcHJvdmlkZWQgYnkgdGhlIFVuaWNvZGUgQ29u c29ydGl1bS4KKysgKgorKyAqIEZvciBzb21lIGdyYXBoaWNhbCBjaGFyYWN0ZXJzLCB0aGUgVW5p Y29kZSBzdGFuZGFyZCBleHBsaWNpdGx5CisrICogZGVmaW5lcyBhIGNoYXJhY3Rlci1jZWxsIHdp ZHRoIHZpYSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgRWFzdCBBc2lhbgorKyAqIEZ1bGxXaWR0aCAo RiksIFdpZGUgKFcpLCBIYWxmLXdpZHRoIChIKSwgYW5kIE5hcnJvdyAoTmEpIGNsYXNzZXMuCisr ICogSW4gYWxsIHRoZXNlIGNhc2VzLCB0aGVyZSBpcyBubyBhbWJpZ3VpdHkgYWJvdXQgd2hpY2gg d2lkdGggYQorKyAqIHRlcm1pbmFsIHNoYWxsIHVzZS4gRm9yIGNoYXJhY3RlcnMgaW4gdGhlIEVh c3QgQXNpYW4gQW1iaWd1b3VzIChBKQorKyAqIGNsYXNzLCB0aGUgd2lkdGggY2hvaWNlIGRlcGVu ZHMgcHVyZWx5IG9uIGEgcHJlZmVyZW5jZSBvZiBiYWNrd2FyZAorKyAqIGNvbXBhdGliaWxpdHkg d2l0aCBlaXRoZXIgaGlzdG9yaWMgQ0pLIG9yIFdlc3Rlcm4gcHJhY3RpY2UuCisrICogQ2hvb3Np bmcgc2luZ2xlLXdpZHRoIGZvciB0aGVzZSBjaGFyYWN0ZXJzIGlzIGVhc3kgdG8ganVzdGlmeSBh cworKyAqIHRoZSBhcHByb3ByaWF0ZSBsb25nLXRlcm0gc29sdXRpb24sIGFzIHRoZSBDSksgcHJh Y3RpY2Ugb2YKKysgKiBkaXNwbGF5aW5nIHRoZXNlIGNoYXJhY3RlcnMgYXMgZG91YmxlLXdpZHRo IGNvbWVzIGZyb20gaGlzdG9yaWMKKysgKiBpbXBsZW1lbnRhdGlvbiBzaW1wbGljaXR5ICg4LWJp dCBlbmNvZGVkIGNoYXJhY3RlcnMgd2VyZSBkaXNwbGF5ZWQKKysgKiBzaW5nbGUtd2lkdGggYW5k IDE2LWJpdCBvbmVzIGRvdWJsZS13aWR0aCwgZXZlbiBmb3IgR3JlZWssCisrICogQ3lyaWxsaWMs IGV0Yy4pIGFuZCBub3QgYW55IHR5cG9ncmFwaGljIGNvbnNpZGVyYXRpb25zLgorKyAqCisrICog TXVjaCBsZXNzIGNsZWFyIGlzIHRoZSBjaG9pY2Ugb2Ygd2lkdGggZm9yIHRoZSBOb3QgRWFzdCBB c2lhbgorKyAqIChOZXV0cmFsKSBjbGFzcy4gRXhpc3RpbmcgcHJhY3RpY2UgZG9lcyBub3QgZGlj dGF0ZSBhIHdpZHRoIGZvciBhbnkKKysgKiBvZiB0aGVzZSBjaGFyYWN0ZXJzLiBJdCB3b3VsZCBu ZXZlcnRoZWxlc3MgbWFrZSBzZW5zZQorKyAqIHR5cG9ncmFwaGljYWxseSB0byBhbGxvY2F0ZSB0 d28gY2hhcmFjdGVyIGNlbGxzIHRvIGNoYXJhY3RlcnMgc3VjaAorKyAqIGFzIGZvciBpbnN0YW5j ZSBFTSBTUEFDRSBvciBWT0xVTUUgSU5URUdSQUwsIHdoaWNoIGNhbm5vdCBiZQorKyAqIHJlcHJl c2VudGVkIGFkZXF1YXRlbHkgd2l0aCBhIHNpbmdsZS13aWR0aCBnbHlwaC4gVGhlIGZvbGxvd2lu ZworKyAqIHJvdXRpbmVzIGF0IHByZXNlbnQgbWVyZWx5IGFzc2lnbiBhIHNpbmdsZS1jZWxsIHdp ZHRoIHRvIGFsbAorKyAqIG5ldXRyYWwgY2hhcmFjdGVycywgaW4gdGhlIGludGVyZXN0IG9mIHNp bXBsaWNpdHkuIFRoaXMgaXMgbm90CisrICogZW50aXJlbHkgc2F0aXNmYWN0b3J5IGFuZCBzaG91 bGQgYmUgcmVjb25zaWRlcmVkIGJlZm9yZQorKyAqIGVzdGFibGlzaGluZyBhIGZvcm1hbCBzdGFu ZGFyZCBpbiB0aGlzIGFyZWEuIEF0IHRoZSBtb21lbnQsIHRoZQorKyAqIGRlY2lzaW9uIHdoaWNo IE5vdCBFYXN0IEFzaWFuIChOZXV0cmFsKSBjaGFyYWN0ZXJzIHNob3VsZCBiZQorKyAqIHJlcHJl c2VudGVkIGJ5IGRvdWJsZS13aWR0aCBnbHlwaHMgY2Fubm90IHlldCBiZSBhbnN3ZXJlZCBieQor KyAqIGFwcGx5aW5nIGEgc2ltcGxlIHJ1bGUgZnJvbSB0aGUgVW5pY29kZSBkYXRhYmFzZSBjb250 ZW50LiBTZXR0aW5nCisrICogdXAgYSBwcm9wZXIgc3RhbmRhcmQgZm9yIHRoZSBiZWhhdmlvciBv ZiBVVEYtOCBjaGFyYWN0ZXIgdGVybWluYWxzCisrICogd2lsbCByZXF1aXJlIGEgY2FyZWZ1bCBh bmFseXNpcyBub3Qgb25seSBvZiBlYWNoIFVuaWNvZGUgY2hhcmFjdGVyLAorKyAqIGJ1dCBhbHNv IG9mIGVhY2ggcHJlc2VudGF0aW9uIGZvcm0sIHNvbWV0aGluZyB0aGUgYXV0aG9yIG9mIHRoZXNl CisrICogcm91dGluZXMgaGFzIGF2b2lkZWQgdG8gZG8gc28gZmFyLgorKyAqCisrICogaHR0cDov L3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIxMS8KKysgKgorKyAqIE1hcmt1cyBL dWhuIC0tIDIwMDctMDUtMjYgKFVuaWNvZGUgNS4wKQorKyAqCisrICogUGVybWlzc2lvbiB0byB1 c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorKyAqIGZvciBh bnkgcHVycG9zZSBhbmQgd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuIFRoZSBhdXRob3IK KysgKiBkaXNjbGFpbXMgYWxsIHdhcnJhbnRpZXMgd2l0aCByZWdhcmQgdG8gdGhpcyBzb2Z0d2Fy ZS4KKysgKgorKyAqIExhdGVzdCB2ZXJzaW9uOiBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bWdr MjUvdWNzL3djd2lkdGguYworICAqLworIAorICNpZmRlZiBfX0dPMzJfXworLS8qIERKR1BQIG5l ZWRzIHRvIGluY2x1ZGUgdGhpcyBiZWZvcmUgaW5jbHVkaW5nIHdjaGFyLmguICAqLworLSMgaW5j bHVkZSA8d2N0eXBlLmg+CisrIyAgaW5jbHVkZSA8d2N0eXBlLmg+CisgI2VuZGlmCisgCisgI2lu Y2x1ZGUgPHdjaGFyLmg+CisgCisgc3RydWN0IGludGVydmFsIHsKKy0gIHVuc2lnbmVkIHNob3J0 IGZpcnN0OworLSAgdW5zaWduZWQgc2hvcnQgbGFzdDsKKysgIGludCBmaXJzdDsKKysgIGludCBs YXN0OworIH07CisgCisgLyogYXV4aWxpYXJ5IGZ1bmN0aW9uIGZvciBiaW5hcnkgc2VhcmNoIGlu IGludGVydmFsIHRhYmxlICovCitAQCAtMzksNyArOTEsNyBAQCBzdGF0aWMgaW50IGJpc2VhcmNo KHdjaGFyX3QgdWNzLCBjb25zdCBzdHJ1Y3QgaW50ZXJ2YWwgKnRhYmxlLCBpbnQgbWF4KSB7Cisg fQorIAorIAorLS8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGRlZmluZSB0aGUgY29sdW1uIHdp ZHRoIG9mIGFuIElTTyAxMDY0NgorKy8qIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBkZWZp bmUgdGhlIGNvbHVtbiB3aWR0aCBvZiBhbiBJU08gMTA2NDYKKyAgKiBjaGFyYWN0ZXIgYXMgZm9s bG93czoKKyAgKgorICAqICAgIC0gVGhlIG51bGwgY2hhcmFjdGVyIChVKzAwMDApIGhhcyBhIGNv bHVtbiB3aWR0aCBvZiAwLgorQEAgLTUxLDYgKzEwMyw4IEBAIHN0YXRpYyBpbnQgYmlzZWFyY2go d2NoYXJfdCB1Y3MsIGNvbnN0IHN0cnVjdCBpbnRlcnZhbCAqdGFibGUsIGludCBtYXgpIHsKKyAg KiAgICAgIGNhdGVnb3J5IGNvZGUgTW4gb3IgTWUgaW4gdGhlIFVuaWNvZGUgZGF0YWJhc2UpIGhh dmUgYQorICAqICAgICAgY29sdW1uIHdpZHRoIG9mIDAuCisgICoKKysgKiAgICAtIFNPRlQgSFlQ SEVOIChVKzAwQUQpIGhhcyBhIGNvbHVtbiB3aWR0aCBvZiAxLgorKyAqCisgICogICAgLSBPdGhl ciBmb3JtYXQgY2hhcmFjdGVycyAoZ2VuZXJhbCBjYXRlZ29yeSBjb2RlIENmIGluIHRoZSBVbmlj b2RlCisgICogICAgICBkYXRhYmFzZSkgYW5kIFpFUk8gV0lEVEggU1BBQ0UgKFUrMjAwQikgaGF2 ZSBhIGNvbHVtbiB3aWR0aCBvZiAwLgorICAqCitAQCAtNTgsNyArMTEyLDcgQEAgc3RhdGljIGlu dCBiaXNlYXJjaCh3Y2hhcl90IHVjcywgY29uc3Qgc3RydWN0IGludGVydmFsICp0YWJsZSwgaW50 IG1heCkgeworICAqICAgICAgaGF2ZSBhIGNvbHVtbiB3aWR0aCBvZiAwLgorICAqCisgICogICAg LSBTcGFjaW5nIGNoYXJhY3RlcnMgaW4gdGhlIEVhc3QgQXNpYW4gV2lkZSAoVykgb3IgRWFzdCBB c2lhbgorLSAqICAgICAgRnVsbFdpZHRoIChGKSBjYXRlZ29yeSBhcyBkZWZpbmVkIGluIFVuaWNv ZGUgVGVjaG5pY2FsCisrICogICAgICBGdWxsLXdpZHRoIChGKSBjYXRlZ29yeSBhcyBkZWZpbmVk IGluIFVuaWNvZGUgVGVjaG5pY2FsCisgICogICAgICBSZXBvcnQgIzExIGhhdmUgYSBjb2x1bW4g d2lkdGggb2YgMi4KKyAgKgorICAqICAgIC0gQWxsIHJlbWFpbmluZyBjaGFyYWN0ZXJzIChpbmNs dWRpbmcgYWxsIHByaW50YWJsZQorQEAgLTY5LDQ0ICsxMjMsNTkgQEAgc3RhdGljIGludCBiaXNl YXJjaCh3Y2hhcl90IHVjcywgY29uc3Qgc3RydWN0IGludGVydmFsICp0YWJsZSwgaW50IG1heCkg eworICAqIGluIElTTyAxMDY0Ni4KKyAgKi8KKyAKKy1pbnQgd2N3aWR0aCh3Y2hhcl90IHVjcykK KytpbnQgbWtfd2N3aWR0aCh3Y2hhcl90IHVjcykKKyB7CisgICAvKiBzb3J0ZWQgbGlzdCBvZiBu b24tb3ZlcmxhcHBpbmcgaW50ZXJ2YWxzIG9mIG5vbi1zcGFjaW5nIGNoYXJhY3RlcnMgKi8KKysg IC8qIGdlbmVyYXRlZCBieSAidW5pc2V0ICtjYXQ9TWUgK2NhdD1NbiArY2F0PUNmIC0wMEFEICsx MTYwLTExRkYgKzIwMEIgYyIgKi8KKyAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZXJ2YWwgY29t YmluaW5nW10gPSB7CistICAgIHsgMHgwMzAwLCAweDAzNEUgfSwgeyAweDAzNjAsIDB4MDM2MiB9 LCB7IDB4MDQ4MywgMHgwNDg2IH0sCistICAgIHsgMHgwNDg4LCAweDA0ODkgfSwgeyAweDA1OTEs IDB4MDVBMSB9LCB7IDB4MDVBMywgMHgwNUI5IH0sCistICAgIHsgMHgwNUJCLCAweDA1QkQgfSwg eyAweDA1QkYsIDB4MDVCRiB9LCB7IDB4MDVDMSwgMHgwNUMyIH0sCistICAgIHsgMHgwNUM0LCAw eDA1QzQgfSwgeyAweDA2NEIsIDB4MDY1NSB9LCB7IDB4MDY3MCwgMHgwNjcwIH0sCisrICAgIHsg MHgwMzAwLCAweDAzNkYgfSwgeyAweDA0ODMsIDB4MDQ4NiB9LCB7IDB4MDQ4OCwgMHgwNDg5IH0s CisrICAgIHsgMHgwNTkxLCAweDA1QkQgfSwgeyAweDA1QkYsIDB4MDVCRiB9LCB7IDB4MDVDMSwg MHgwNUMyIH0sCisrICAgIHsgMHgwNUM0LCAweDA1QzUgfSwgeyAweDA1QzcsIDB4MDVDNyB9LCB7 IDB4MDYwMCwgMHgwNjAzIH0sCisrICAgIHsgMHgwNjEwLCAweDA2MTUgfSwgeyAweDA2NEIsIDB4 MDY1RSB9LCB7IDB4MDY3MCwgMHgwNjcwIH0sCisgICAgIHsgMHgwNkQ2LCAweDA2RTQgfSwgeyAw eDA2RTcsIDB4MDZFOCB9LCB7IDB4MDZFQSwgMHgwNkVEIH0sCisgICAgIHsgMHgwNzBGLCAweDA3 MEYgfSwgeyAweDA3MTEsIDB4MDcxMSB9LCB7IDB4MDczMCwgMHgwNzRBIH0sCistICAgIHsgMHgw N0E2LCAweDA3QjAgfSwgeyAweDA5MDEsIDB4MDkwMiB9LCB7IDB4MDkzQywgMHgwOTNDIH0sCist ICAgIHsgMHgwOTQxLCAweDA5NDggfSwgeyAweDA5NEQsIDB4MDk0RCB9LCB7IDB4MDk1MSwgMHgw OTU0IH0sCistICAgIHsgMHgwOTYyLCAweDA5NjMgfSwgeyAweDA5ODEsIDB4MDk4MSB9LCB7IDB4 MDlCQywgMHgwOUJDIH0sCistICAgIHsgMHgwOUMxLCAweDA5QzQgfSwgeyAweDA5Q0QsIDB4MDlD RCB9LCB7IDB4MDlFMiwgMHgwOUUzIH0sCistICAgIHsgMHgwQTAyLCAweDBBMDIgfSwgeyAweDBB M0MsIDB4MEEzQyB9LCB7IDB4MEE0MSwgMHgwQTQyIH0sCistICAgIHsgMHgwQTQ3LCAweDBBNDgg fSwgeyAweDBBNEIsIDB4MEE0RCB9LCB7IDB4MEE3MCwgMHgwQTcxIH0sCistICAgIHsgMHgwQTgx LCAweDBBODIgfSwgeyAweDBBQkMsIDB4MEFCQyB9LCB7IDB4MEFDMSwgMHgwQUM1IH0sCistICAg IHsgMHgwQUM3LCAweDBBQzggfSwgeyAweDBBQ0QsIDB4MEFDRCB9LCB7IDB4MEIwMSwgMHgwQjAx IH0sCistICAgIHsgMHgwQjNDLCAweDBCM0MgfSwgeyAweDBCM0YsIDB4MEIzRiB9LCB7IDB4MEI0 MSwgMHgwQjQzIH0sCistICAgIHsgMHgwQjRELCAweDBCNEQgfSwgeyAweDBCNTYsIDB4MEI1NiB9 LCB7IDB4MEI4MiwgMHgwQjgyIH0sCistICAgIHsgMHgwQkMwLCAweDBCQzAgfSwgeyAweDBCQ0Qs IDB4MEJDRCB9LCB7IDB4MEMzRSwgMHgwQzQwIH0sCistICAgIHsgMHgwQzQ2LCAweDBDNDggfSwg eyAweDBDNEEsIDB4MEM0RCB9LCB7IDB4MEM1NSwgMHgwQzU2IH0sCisrICAgIHsgMHgwN0E2LCAw eDA3QjAgfSwgeyAweDA3RUIsIDB4MDdGMyB9LCB7IDB4MDkwMSwgMHgwOTAyIH0sCisrICAgIHsg MHgwOTNDLCAweDA5M0MgfSwgeyAweDA5NDEsIDB4MDk0OCB9LCB7IDB4MDk0RCwgMHgwOTREIH0s CisrICAgIHsgMHgwOTUxLCAweDA5NTQgfSwgeyAweDA5NjIsIDB4MDk2MyB9LCB7IDB4MDk4MSwg MHgwOTgxIH0sCisrICAgIHsgMHgwOUJDLCAweDA5QkMgfSwgeyAweDA5QzEsIDB4MDlDNCB9LCB7 IDB4MDlDRCwgMHgwOUNEIH0sCisrICAgIHsgMHgwOUUyLCAweDA5RTMgfSwgeyAweDBBMDEsIDB4 MEEwMiB9LCB7IDB4MEEzQywgMHgwQTNDIH0sCisrICAgIHsgMHgwQTQxLCAweDBBNDIgfSwgeyAw eDBBNDcsIDB4MEE0OCB9LCB7IDB4MEE0QiwgMHgwQTREIH0sCisrICAgIHsgMHgwQTcwLCAweDBB NzEgfSwgeyAweDBBODEsIDB4MEE4MiB9LCB7IDB4MEFCQywgMHgwQUJDIH0sCisrICAgIHsgMHgw QUMxLCAweDBBQzUgfSwgeyAweDBBQzcsIDB4MEFDOCB9LCB7IDB4MEFDRCwgMHgwQUNEIH0sCisr ICAgIHsgMHgwQUUyLCAweDBBRTMgfSwgeyAweDBCMDEsIDB4MEIwMSB9LCB7IDB4MEIzQywgMHgw QjNDIH0sCisrICAgIHsgMHgwQjNGLCAweDBCM0YgfSwgeyAweDBCNDEsIDB4MEI0MyB9LCB7IDB4 MEI0RCwgMHgwQjREIH0sCisrICAgIHsgMHgwQjU2LCAweDBCNTYgfSwgeyAweDBCODIsIDB4MEI4 MiB9LCB7IDB4MEJDMCwgMHgwQkMwIH0sCisrICAgIHsgMHgwQkNELCAweDBCQ0QgfSwgeyAweDBD M0UsIDB4MEM0MCB9LCB7IDB4MEM0NiwgMHgwQzQ4IH0sCisrICAgIHsgMHgwQzRBLCAweDBDNEQg fSwgeyAweDBDNTUsIDB4MEM1NiB9LCB7IDB4MENCQywgMHgwQ0JDIH0sCisgICAgIHsgMHgwQ0JG LCAweDBDQkYgfSwgeyAweDBDQzYsIDB4MENDNiB9LCB7IDB4MENDQywgMHgwQ0NEIH0sCistICAg IHsgMHgwRDQxLCAweDBENDMgfSwgeyAweDBENEQsIDB4MEQ0RCB9LCB7IDB4MERDQSwgMHgwRENB IH0sCistICAgIHsgMHgwREQyLCAweDBERDQgfSwgeyAweDBERDYsIDB4MERENiB9LCB7IDB4MEUz MSwgMHgwRTMxIH0sCistICAgIHsgMHgwRTM0LCAweDBFM0EgfSwgeyAweDBFNDcsIDB4MEU0RSB9 LCB7IDB4MEVCMSwgMHgwRUIxIH0sCistICAgIHsgMHgwRUI0LCAweDBFQjkgfSwgeyAweDBFQkIs IDB4MEVCQyB9LCB7IDB4MEVDOCwgMHgwRUNEIH0sCistICAgIHsgMHgwRjE4LCAweDBGMTkgfSwg eyAweDBGMzUsIDB4MEYzNSB9LCB7IDB4MEYzNywgMHgwRjM3IH0sCistICAgIHsgMHgwRjM5LCAw eDBGMzkgfSwgeyAweDBGNzEsIDB4MEY3RSB9LCB7IDB4MEY4MCwgMHgwRjg0IH0sCistICAgIHsg MHgwRjg2LCAweDBGODcgfSwgeyAweDBGOTAsIDB4MEY5NyB9LCB7IDB4MEY5OSwgMHgwRkJDIH0s CistICAgIHsgMHgwRkM2LCAweDBGQzYgfSwgeyAweDEwMkQsIDB4MTAzMCB9LCB7IDB4MTAzMiwg MHgxMDMyIH0sCistICAgIHsgMHgxMDM2LCAweDEwMzcgfSwgeyAweDEwMzksIDB4MTAzOSB9LCB7 IDB4MTA1OCwgMHgxMDU5IH0sCistICAgIHsgMHgxMTYwLCAweDExRkYgfSwgeyAweDE3QjcsIDB4 MTdCRCB9LCB7IDB4MTdDNiwgMHgxN0M2IH0sCistICAgIHsgMHgxN0M5LCAweDE3RDMgfSwgeyAw eDE4MEIsIDB4MTgwRSB9LCB7IDB4MThBOSwgMHgxOEE5IH0sCistICAgIHsgMHgyMDBCLCAweDIw MEYgfSwgeyAweDIwMkEsIDB4MjAyRSB9LCB7IDB4MjA2QSwgMHgyMDZGIH0sCistICAgIHsgMHgy MEQwLCAweDIwRTMgfSwgeyAweDMwMkEsIDB4MzAyRiB9LCB7IDB4MzA5OSwgMHgzMDlBIH0sCist ICAgIHsgMHhGQjFFLCAweEZCMUUgfSwgeyAweEZFMjAsIDB4RkUyMyB9LCB7IDB4RkVGRiwgMHhG RUZGIH0sCistICAgIHsgMHhGRkY5LCAweEZGRkIgfQorKyAgICB7IDB4MENFMiwgMHgwQ0UzIH0s IHsgMHgwRDQxLCAweDBENDMgfSwgeyAweDBENEQsIDB4MEQ0RCB9LAorKyAgICB7IDB4MERDQSwg MHgwRENBIH0sIHsgMHgwREQyLCAweDBERDQgfSwgeyAweDBERDYsIDB4MERENiB9LAorKyAgICB7 IDB4MEUzMSwgMHgwRTMxIH0sIHsgMHgwRTM0LCAweDBFM0EgfSwgeyAweDBFNDcsIDB4MEU0RSB9 LAorKyAgICB7IDB4MEVCMSwgMHgwRUIxIH0sIHsgMHgwRUI0LCAweDBFQjkgfSwgeyAweDBFQkIs IDB4MEVCQyB9LAorKyAgICB7IDB4MEVDOCwgMHgwRUNEIH0sIHsgMHgwRjE4LCAweDBGMTkgfSwg eyAweDBGMzUsIDB4MEYzNSB9LAorKyAgICB7IDB4MEYzNywgMHgwRjM3IH0sIHsgMHgwRjM5LCAw eDBGMzkgfSwgeyAweDBGNzEsIDB4MEY3RSB9LAorKyAgICB7IDB4MEY4MCwgMHgwRjg0IH0sIHsg MHgwRjg2LCAweDBGODcgfSwgeyAweDBGOTAsIDB4MEY5NyB9LAorKyAgICB7IDB4MEY5OSwgMHgw RkJDIH0sIHsgMHgwRkM2LCAweDBGQzYgfSwgeyAweDEwMkQsIDB4MTAzMCB9LAorKyAgICB7IDB4 MTAzMiwgMHgxMDMyIH0sIHsgMHgxMDM2LCAweDEwMzcgfSwgeyAweDEwMzksIDB4MTAzOSB9LAor KyAgICB7IDB4MTA1OCwgMHgxMDU5IH0sIHsgMHgxMTYwLCAweDExRkYgfSwgeyAweDEzNUYsIDB4 MTM1RiB9LAorKyAgICB7IDB4MTcxMiwgMHgxNzE0IH0sIHsgMHgxNzMyLCAweDE3MzQgfSwgeyAw eDE3NTIsIDB4MTc1MyB9LAorKyAgICB7IDB4MTc3MiwgMHgxNzczIH0sIHsgMHgxN0I0LCAweDE3 QjUgfSwgeyAweDE3QjcsIDB4MTdCRCB9LAorKyAgICB7IDB4MTdDNiwgMHgxN0M2IH0sIHsgMHgx N0M5LCAweDE3RDMgfSwgeyAweDE3REQsIDB4MTdERCB9LAorKyAgICB7IDB4MTgwQiwgMHgxODBE IH0sIHsgMHgxOEE5LCAweDE4QTkgfSwgeyAweDE5MjAsIDB4MTkyMiB9LAorKyAgICB7IDB4MTky NywgMHgxOTI4IH0sIHsgMHgxOTMyLCAweDE5MzIgfSwgeyAweDE5MzksIDB4MTkzQiB9LAorKyAg ICB7IDB4MUExNywgMHgxQTE4IH0sIHsgMHgxQjAwLCAweDFCMDMgfSwgeyAweDFCMzQsIDB4MUIz NCB9LAorKyAgICB7IDB4MUIzNiwgMHgxQjNBIH0sIHsgMHgxQjNDLCAweDFCM0MgfSwgeyAweDFC NDIsIDB4MUI0MiB9LAorKyAgICB7IDB4MUI2QiwgMHgxQjczIH0sIHsgMHgxREMwLCAweDFEQ0Eg fSwgeyAweDFERkUsIDB4MURGRiB9LAorKyAgICB7IDB4MjAwQiwgMHgyMDBGIH0sIHsgMHgyMDJB LCAweDIwMkUgfSwgeyAweDIwNjAsIDB4MjA2MyB9LAorKyAgICB7IDB4MjA2QSwgMHgyMDZGIH0s IHsgMHgyMEQwLCAweDIwRUYgfSwgeyAweDMwMkEsIDB4MzAyRiB9LAorKyAgICB7IDB4MzA5OSwg MHgzMDlBIH0sIHsgMHhBODA2LCAweEE4MDYgfSwgeyAweEE4MEIsIDB4QTgwQiB9LAorKyAgICB7 IDB4QTgyNSwgMHhBODI2IH0sIHsgMHhGQjFFLCAweEZCMUUgfSwgeyAweEZFMDAsIDB4RkUwRiB9 LAorKyAgICB7IDB4RkUyMCwgMHhGRTIzIH0sIHsgMHhGRUZGLCAweEZFRkYgfSwgeyAweEZGRjks IDB4RkZGQiB9LAorKyAgICB7IDB4MTBBMDEsIDB4MTBBMDMgfSwgeyAweDEwQTA1LCAweDEwQTA2 IH0sIHsgMHgxMEEwQywgMHgxMEEwRiB9LAorKyAgICB7IDB4MTBBMzgsIDB4MTBBM0EgfSwgeyAw eDEwQTNGLCAweDEwQTNGIH0sIHsgMHgxRDE2NywgMHgxRDE2OSB9LAorKyAgICB7IDB4MUQxNzMs IDB4MUQxODIgfSwgeyAweDFEMTg1LCAweDFEMThCIH0sIHsgMHgxRDFBQSwgMHgxRDFBRCB9LAor KyAgICB7IDB4MUQyNDIsIDB4MUQyNDQgfSwgeyAweEUwMDAxLCAweEUwMDAxIH0sIHsgMHhFMDAy MCwgMHhFMDA3RiB9LAorKyAgICB7IDB4RTAxMDAsIDB4RTAxRUYgfQorICAgfTsKKyAKKyAgIC8q IHRlc3QgZm9yIDgtYml0IGNvbnRyb2wgY2hhcmFjdGVycyAqLworQEAgLTEyNSwyMyArMTk0LDI2 IEBAIGludCB3Y3dpZHRoKHdjaGFyX3QgdWNzKQorICAgcmV0dXJuIDEgKyAKKyAgICAgKHVjcyA+ PSAweDExMDAgJiYKKyAgICAgICh1Y3MgPD0gMHgxMTVmIHx8ICAgICAgICAgICAgICAgICAgICAv KiBIYW5ndWwgSmFtbyBpbml0LiBjb25zb25hbnRzICovCistICAgICAgKHVjcyA+PSAweDJlODAg JiYgdWNzIDw9IDB4YTRjZiAmJiAodWNzICYgfjB4MDAxMSkgIT0gMHgzMDBhICYmCisrICAgICAg dWNzID09IDB4MjMyOSB8fCB1Y3MgPT0gMHgyMzJhIHx8CisrICAgICAgKHVjcyA+PSAweDJlODAg JiYgdWNzIDw9IDB4YTRjZiAmJgorICAgICAgICB1Y3MgIT0gMHgzMDNmKSB8fCAgICAgICAgICAg ICAgICAgIC8qIENKSyAuLi4gWWkgKi8KKyAgICAgICAodWNzID49IDB4YWMwMCAmJiB1Y3MgPD0g MHhkN2EzKSB8fCAvKiBIYW5ndWwgU3lsbGFibGVzICovCisgICAgICAgKHVjcyA+PSAweGY5MDAg JiYgdWNzIDw9IDB4ZmFmZikgfHwgLyogQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBocyAqLwor KyAgICAgICh1Y3MgPj0gMHhmZTEwICYmIHVjcyA8PSAweGZlMTkpIHx8IC8qIFZlcnRpY2FsIGZv cm1zICovCisgICAgICAgKHVjcyA+PSAweGZlMzAgJiYgdWNzIDw9IDB4ZmU2ZikgfHwgLyogQ0pL IENvbXBhdGliaWxpdHkgRm9ybXMgKi8KKy0gICAgICAodWNzID49IDB4ZmYwMCAmJiB1Y3MgPD0g MHhmZjVmKSB8fCAvKiBGdWxsd2lkdGggRm9ybXMgKi8KKysgICAgICAodWNzID49IDB4ZmYwMCAm JiB1Y3MgPD0gMHhmZjYwKSB8fCAvKiBGdWxsd2lkdGggRm9ybXMgKi8KKyAgICAgICAodWNzID49 IDB4ZmZlMCAmJiB1Y3MgPD0gMHhmZmU2KSB8fAorLSAgICAgICh1Y3MgPj0gMHgyMDAwMCAmJiB1 Y3MgPD0gMHgyZmZmZikpKTsKKysgICAgICAodWNzID49IDB4MjAwMDAgJiYgdWNzIDw9IDB4MmZm ZmQpIHx8CisrICAgICAgKHVjcyA+PSAweDMwMDAwICYmIHVjcyA8PSAweDNmZmZkKSkpOworIH0K KyAKKyAKKy1pbnQgd2Nzd2lkdGgoY29uc3Qgd2NoYXJfdCAqcHdjcywgc2l6ZV90IG4pCisraW50 IG1rX3djc3dpZHRoKGNvbnN0IHdjaGFyX3QgKnB3Y3MsIHNpemVfdCBuKQorIHsKKyAgIGludCB3 LCB3aWR0aCA9IDA7CisgCisgICBmb3IgKDsqcHdjcyAmJiBuLS0gPiAwOyBwd2NzKyspCistICAg IGlmICgodyA9IHdjd2lkdGgoKnB3Y3MpKSA8IDApCisrICAgIGlmICgodyA9IG1rX3djd2lkdGgo KnB3Y3MpKSA8IDApCisgICAgICAgcmV0dXJuIC0xOworICAgICBlbHNlCisgICAgICAgd2lkdGgg Kz0gdzsKK0BAIC0xNTEsMjAgKzIyMywyMSBAQCBpbnQgd2Nzd2lkdGgoY29uc3Qgd2NoYXJfdCAq cHdjcywgc2l6ZV90IG4pCisgCisgCisgLyoKKy0gKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGlz IHRoZSBzYW1lIGFzIHdjd2lkdGgoKSwgZXhjZXB0IHRoYXQKKy0gKiBzcGFjaW5nIGNoYXJhY3Rl cnMgaW4gdGhlIEVhc3QgQXNpYW4gQW1iaWd1b3VzIChBKSBjYXRlZ29yeSBhcworLSAqIGRlZmlu ZWQgaW4gVW5pY29kZSBUZWNobmljYWwgUmVwb3J0ICMxMSBoYXZlIGEgY29sdW1uIHdpZHRoIG9m IDIuCistICogVGhpcyBleHBlcmltZW50YWwgdmFyaWFudCBtaWdodCBiZSB1c2VmdWwgZm9yIHVz ZXJzIG9mIENKSyBsZWdhY3kKKy0gKiBlbmNvZGluZ3Mgd2hvIHdhbnQgdG8gbWlncmF0ZSB0byBV Q1MuIEl0IGlzIG5vdCBvdGhlcndpc2UKKy0gKiByZWNvbW1lbmRlZCBmb3IgZ2VuZXJhbCB1c2Uu CisrICogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHRoZSBzYW1lIGFzIG1rX3djd2lkdGgo KSBhbmQKKysgKiBta193Y3N3aWR0aCgpLCBleGNlcHQgdGhhdCBzcGFjaW5nIGNoYXJhY3RlcnMg aW4gdGhlIEVhc3QgQXNpYW4KKysgKiBBbWJpZ3VvdXMgKEEpIGNhdGVnb3J5IGFzIGRlZmluZWQg aW4gVW5pY29kZSBUZWNobmljYWwgUmVwb3J0ICMxMQorKyAqIGhhdmUgYSBjb2x1bW4gd2lkdGgg b2YgMi4gVGhpcyB2YXJpYW50IG1pZ2h0IGJlIHVzZWZ1bCBmb3IgdXNlcnMgb2YKKysgKiBDSksg bGVnYWN5IGVuY29kaW5ncyB3aG8gd2FudCB0byBtaWdyYXRlIHRvIFVDUyB3aXRob3V0IGNoYW5n aW5nCisrICogdGhlIHRyYWRpdGlvbmFsIHRlcm1pbmFsIGNoYXJhY3Rlci13aWR0aCBiZWhhdmlv dXIuIEl0IGlzIG5vdAorKyAqIG90aGVyd2lzZSByZWNvbW1lbmRlZCBmb3IgZ2VuZXJhbCB1c2Uu CisgICovCistc3RhdGljIGludCB3Y3dpZHRoX2Nqayh3Y2hhcl90IHVjcykKKytpbnQgbWtfd2N3 aWR0aF9jamsod2NoYXJfdCB1Y3MpCisgeworICAgLyogc29ydGVkIGxpc3Qgb2Ygbm9uLW92ZXJs YXBwaW5nIGludGVydmFscyBvZiBFYXN0IEFzaWFuIEFtYmlndW91cworLSAgICogY2hhcmFjdGVy cyAqLworKyAgICogY2hhcmFjdGVycywgZ2VuZXJhdGVkIGJ5ICJ1bmlzZXQgK1dJRFRILUEgLWNh dD1NZSAtY2F0PU1uIC1jYXQ9Q2YgYyIgKi8KKyAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZXJ2 YWwgYW1iaWd1b3VzW10gPSB7CisgICAgIHsgMHgwMEExLCAweDAwQTEgfSwgeyAweDAwQTQsIDB4 MDBBNCB9LCB7IDB4MDBBNywgMHgwMEE4IH0sCistICAgIHsgMHgwMEFBLCAweDAwQUEgfSwgeyAw eDAwQUQsIDB4MDBBRSB9LCB7IDB4MDBCMCwgMHgwMEI0IH0sCisrICAgIHsgMHgwMEFBLCAweDAw QUEgfSwgeyAweDAwQUUsIDB4MDBBRSB9LCB7IDB4MDBCMCwgMHgwMEI0IH0sCisgICAgIHsgMHgw MEI2LCAweDAwQkEgfSwgeyAweDAwQkMsIDB4MDBCRiB9LCB7IDB4MDBDNiwgMHgwMEM2IH0sCisg ICAgIHsgMHgwMEQwLCAweDAwRDAgfSwgeyAweDAwRDcsIDB4MDBEOCB9LCB7IDB4MDBERSwgMHgw MEUxIH0sCisgICAgIHsgMHgwMEU2LCAweDAwRTYgfSwgeyAweDAwRTgsIDB4MDBFQSB9LCB7IDB4 MDBFQywgMHgwMEVEIH0sCitAQCAtMTgwLDQyICsyNTMsNDEgQEAgc3RhdGljIGludCB3Y3dpZHRo X2Nqayh3Y2hhcl90IHVjcykKKyAgICAgeyAweDAxREMsIDB4MDFEQyB9LCB7IDB4MDI1MSwgMHgw MjUxIH0sIHsgMHgwMjYxLCAweDAyNjEgfSwKKyAgICAgeyAweDAyQzQsIDB4MDJDNCB9LCB7IDB4 MDJDNywgMHgwMkM3IH0sIHsgMHgwMkM5LCAweDAyQ0IgfSwKKyAgICAgeyAweDAyQ0QsIDB4MDJD RCB9LCB7IDB4MDJEMCwgMHgwMkQwIH0sIHsgMHgwMkQ4LCAweDAyREIgfSwKKy0gICAgeyAweDAy REQsIDB4MDJERCB9LCB7IDB4MDJERiwgMHgwMkRGIH0sIHsgMHgwMzAwLCAweDAzNEUgfSwKKy0g ICAgeyAweDAzNjAsIDB4MDM2MiB9LCB7IDB4MDM5MSwgMHgwM0ExIH0sIHsgMHgwM0EzLCAweDAz QTkgfSwKKy0gICAgeyAweDAzQjEsIDB4MDNDMSB9LCB7IDB4MDNDMywgMHgwM0M5IH0sIHsgMHgw NDAxLCAweDA0MDEgfSwKKy0gICAgeyAweDA0MTAsIDB4MDQ0RiB9LCB7IDB4MDQ1MSwgMHgwNDUx IH0sIHsgMHgyMDEwLCAweDIwMTAgfSwKKy0gICAgeyAweDIwMTMsIDB4MjAxNiB9LCB7IDB4MjAx OCwgMHgyMDE5IH0sIHsgMHgyMDFDLCAweDIwMUQgfSwKKy0gICAgeyAweDIwMjAsIDB4MjAyMiB9 LCB7IDB4MjAyNCwgMHgyMDI3IH0sIHsgMHgyMDMwLCAweDIwMzAgfSwKKy0gICAgeyAweDIwMzIs IDB4MjAzMyB9LCB7IDB4MjAzNSwgMHgyMDM1IH0sIHsgMHgyMDNCLCAweDIwM0IgfSwKKy0gICAg eyAweDIwM0UsIDB4MjAzRSB9LCB7IDB4MjA3NCwgMHgyMDc0IH0sIHsgMHgyMDdGLCAweDIwN0Yg fSwKKy0gICAgeyAweDIwODEsIDB4MjA4NCB9LCB7IDB4MjBBQywgMHgyMEFDIH0sIHsgMHgyMTAz LCAweDIxMDMgfSwKKy0gICAgeyAweDIxMDUsIDB4MjEwNSB9LCB7IDB4MjEwOSwgMHgyMTA5IH0s IHsgMHgyMTEzLCAweDIxMTMgfSwKKy0gICAgeyAweDIxMTYsIDB4MjExNiB9LCB7IDB4MjEyMSwg MHgyMTIyIH0sIHsgMHgyMTI2LCAweDIxMjYgfSwKKy0gICAgeyAweDIxMkIsIDB4MjEyQiB9LCB7 IDB4MjE1MywgMHgyMTU1IH0sIHsgMHgyMTVCLCAweDIxNUUgfSwKKy0gICAgeyAweDIxNjAsIDB4 MjE2QiB9LCB7IDB4MjE3MCwgMHgyMTc5IH0sIHsgMHgyMTkwLCAweDIxOTkgfSwKKy0gICAgeyAw eDIxQjgsIDB4MjFCOSB9LCB7IDB4MjFEMiwgMHgyMUQyIH0sIHsgMHgyMUQ0LCAweDIxRDQgfSwK Ky0gICAgeyAweDIxRTcsIDB4MjFFNyB9LCB7IDB4MjIwMCwgMHgyMjAwIH0sIHsgMHgyMjAyLCAw eDIyMDMgfSwKKy0gICAgeyAweDIyMDcsIDB4MjIwOCB9LCB7IDB4MjIwQiwgMHgyMjBCIH0sIHsg MHgyMjBGLCAweDIyMEYgfSwKKy0gICAgeyAweDIyMTEsIDB4MjIxMSB9LCB7IDB4MjIxNSwgMHgy MjE1IH0sIHsgMHgyMjFBLCAweDIyMUEgfSwKKy0gICAgeyAweDIyMUQsIDB4MjIyMCB9LCB7IDB4 MjIyMywgMHgyMjIzIH0sIHsgMHgyMjI1LCAweDIyMjUgfSwKKy0gICAgeyAweDIyMjcsIDB4MjIy QyB9LCB7IDB4MjIyRSwgMHgyMjJFIH0sIHsgMHgyMjM0LCAweDIyMzcgfSwKKy0gICAgeyAweDIy M0MsIDB4MjIzRCB9LCB7IDB4MjI0OCwgMHgyMjQ4IH0sIHsgMHgyMjRDLCAweDIyNEMgfSwKKy0g ICAgeyAweDIyNTIsIDB4MjI1MiB9LCB7IDB4MjI2MCwgMHgyMjYxIH0sIHsgMHgyMjY0LCAweDIy NjcgfSwKKy0gICAgeyAweDIyNkEsIDB4MjI2QiB9LCB7IDB4MjI2RSwgMHgyMjZGIH0sIHsgMHgy MjgyLCAweDIyODMgfSwKKy0gICAgeyAweDIyODYsIDB4MjI4NyB9LCB7IDB4MjI5NSwgMHgyMjk1 IH0sIHsgMHgyMjk5LCAweDIyOTkgfSwKKy0gICAgeyAweDIyQTUsIDB4MjJBNSB9LCB7IDB4MjJC RiwgMHgyMkJGIH0sIHsgMHgyMzEyLCAweDIzMTIgfSwKKy0gICAgeyAweDIzMjksIDB4MjMyQSB9 LCB7IDB4MjQ2MCwgMHgyNEJGIH0sIHsgMHgyNEQwLCAweDI0RTkgfSwKKy0gICAgeyAweDI1MDAs IDB4MjU0QiB9LCB7IDB4MjU1MCwgMHgyNTc0IH0sIHsgMHgyNTgwLCAweDI1OEYgfSwKKy0gICAg eyAweDI1OTIsIDB4MjU5NSB9LCB7IDB4MjVBMCwgMHgyNUExIH0sIHsgMHgyNUEzLCAweDI1QTkg fSwKKy0gICAgeyAweDI1QjIsIDB4MjVCMyB9LCB7IDB4MjVCNiwgMHgyNUI3IH0sIHsgMHgyNUJD LCAweDI1QkQgfSwKKy0gICAgeyAweDI1QzAsIDB4MjVDMSB9LCB7IDB4MjVDNiwgMHgyNUM4IH0s IHsgMHgyNUNCLCAweDI1Q0IgfSwKKy0gICAgeyAweDI1Q0UsIDB4MjVEMSB9LCB7IDB4MjVFMiwg MHgyNUU1IH0sIHsgMHgyNUVGLCAweDI1RUYgfSwKKy0gICAgeyAweDI2MDUsIDB4MjYwNiB9LCB7 IDB4MjYwOSwgMHgyNjA5IH0sIHsgMHgyNjBFLCAweDI2MEYgfSwKKysgICAgeyAweDAyREQsIDB4 MDJERCB9LCB7IDB4MDJERiwgMHgwMkRGIH0sIHsgMHgwMzkxLCAweDAzQTEgfSwKKysgICAgeyAw eDAzQTMsIDB4MDNBOSB9LCB7IDB4MDNCMSwgMHgwM0MxIH0sIHsgMHgwM0MzLCAweDAzQzkgfSwK KysgICAgeyAweDA0MDEsIDB4MDQwMSB9LCB7IDB4MDQxMCwgMHgwNDRGIH0sIHsgMHgwNDUxLCAw eDA0NTEgfSwKKysgICAgeyAweDIwMTAsIDB4MjAxMCB9LCB7IDB4MjAxMywgMHgyMDE2IH0sIHsg MHgyMDE4LCAweDIwMTkgfSwKKysgICAgeyAweDIwMUMsIDB4MjAxRCB9LCB7IDB4MjAyMCwgMHgy MDIyIH0sIHsgMHgyMDI0LCAweDIwMjcgfSwKKysgICAgeyAweDIwMzAsIDB4MjAzMCB9LCB7IDB4 MjAzMiwgMHgyMDMzIH0sIHsgMHgyMDM1LCAweDIwMzUgfSwKKysgICAgeyAweDIwM0IsIDB4MjAz QiB9LCB7IDB4MjAzRSwgMHgyMDNFIH0sIHsgMHgyMDc0LCAweDIwNzQgfSwKKysgICAgeyAweDIw N0YsIDB4MjA3RiB9LCB7IDB4MjA4MSwgMHgyMDg0IH0sIHsgMHgyMEFDLCAweDIwQUMgfSwKKysg ICAgeyAweDIxMDMsIDB4MjEwMyB9LCB7IDB4MjEwNSwgMHgyMTA1IH0sIHsgMHgyMTA5LCAweDIx MDkgfSwKKysgICAgeyAweDIxMTMsIDB4MjExMyB9LCB7IDB4MjExNiwgMHgyMTE2IH0sIHsgMHgy MTIxLCAweDIxMjIgfSwKKysgICAgeyAweDIxMjYsIDB4MjEyNiB9LCB7IDB4MjEyQiwgMHgyMTJC IH0sIHsgMHgyMTUzLCAweDIxNTQgfSwKKysgICAgeyAweDIxNUIsIDB4MjE1RSB9LCB7IDB4MjE2 MCwgMHgyMTZCIH0sIHsgMHgyMTcwLCAweDIxNzkgfSwKKysgICAgeyAweDIxOTAsIDB4MjE5OSB9 LCB7IDB4MjFCOCwgMHgyMUI5IH0sIHsgMHgyMUQyLCAweDIxRDIgfSwKKysgICAgeyAweDIxRDQs IDB4MjFENCB9LCB7IDB4MjFFNywgMHgyMUU3IH0sIHsgMHgyMjAwLCAweDIyMDAgfSwKKysgICAg eyAweDIyMDIsIDB4MjIwMyB9LCB7IDB4MjIwNywgMHgyMjA4IH0sIHsgMHgyMjBCLCAweDIyMEIg fSwKKysgICAgeyAweDIyMEYsIDB4MjIwRiB9LCB7IDB4MjIxMSwgMHgyMjExIH0sIHsgMHgyMjE1 LCAweDIyMTUgfSwKKysgICAgeyAweDIyMUEsIDB4MjIxQSB9LCB7IDB4MjIxRCwgMHgyMjIwIH0s IHsgMHgyMjIzLCAweDIyMjMgfSwKKysgICAgeyAweDIyMjUsIDB4MjIyNSB9LCB7IDB4MjIyNywg MHgyMjJDIH0sIHsgMHgyMjJFLCAweDIyMkUgfSwKKysgICAgeyAweDIyMzQsIDB4MjIzNyB9LCB7 IDB4MjIzQywgMHgyMjNEIH0sIHsgMHgyMjQ4LCAweDIyNDggfSwKKysgICAgeyAweDIyNEMsIDB4 MjI0QyB9LCB7IDB4MjI1MiwgMHgyMjUyIH0sIHsgMHgyMjYwLCAweDIyNjEgfSwKKysgICAgeyAw eDIyNjQsIDB4MjI2NyB9LCB7IDB4MjI2QSwgMHgyMjZCIH0sIHsgMHgyMjZFLCAweDIyNkYgfSwK KysgICAgeyAweDIyODIsIDB4MjI4MyB9LCB7IDB4MjI4NiwgMHgyMjg3IH0sIHsgMHgyMjk1LCAw eDIyOTUgfSwKKysgICAgeyAweDIyOTksIDB4MjI5OSB9LCB7IDB4MjJBNSwgMHgyMkE1IH0sIHsg MHgyMkJGLCAweDIyQkYgfSwKKysgICAgeyAweDIzMTIsIDB4MjMxMiB9LCB7IDB4MjQ2MCwgMHgy NEU5IH0sIHsgMHgyNEVCLCAweDI1NEIgfSwKKysgICAgeyAweDI1NTAsIDB4MjU3MyB9LCB7IDB4 MjU4MCwgMHgyNThGIH0sIHsgMHgyNTkyLCAweDI1OTUgfSwKKysgICAgeyAweDI1QTAsIDB4MjVB MSB9LCB7IDB4MjVBMywgMHgyNUE5IH0sIHsgMHgyNUIyLCAweDI1QjMgfSwKKysgICAgeyAweDI1 QjYsIDB4MjVCNyB9LCB7IDB4MjVCQywgMHgyNUJEIH0sIHsgMHgyNUMwLCAweDI1QzEgfSwKKysg ICAgeyAweDI1QzYsIDB4MjVDOCB9LCB7IDB4MjVDQiwgMHgyNUNCIH0sIHsgMHgyNUNFLCAweDI1 RDEgfSwKKysgICAgeyAweDI1RTIsIDB4MjVFNSB9LCB7IDB4MjVFRiwgMHgyNUVGIH0sIHsgMHgy NjA1LCAweDI2MDYgfSwKKysgICAgeyAweDI2MDksIDB4MjYwOSB9LCB7IDB4MjYwRSwgMHgyNjBG IH0sIHsgMHgyNjE0LCAweDI2MTUgfSwKKyAgICAgeyAweDI2MUMsIDB4MjYxQyB9LCB7IDB4MjYx RSwgMHgyNjFFIH0sIHsgMHgyNjQwLCAweDI2NDAgfSwKKyAgICAgeyAweDI2NDIsIDB4MjY0MiB9 LCB7IDB4MjY2MCwgMHgyNjYxIH0sIHsgMHgyNjYzLCAweDI2NjUgfSwKKyAgICAgeyAweDI2Njcs IDB4MjY2QSB9LCB7IDB4MjY2QywgMHgyNjZEIH0sIHsgMHgyNjZGLCAweDI2NkYgfSwKKy0gICAg eyAweDI3M0QsIDB4MjczRCB9LCB7IDB4MzAwOCwgMHgzMDBCIH0sIHsgMHgzMDE0LCAweDMwMTUg fSwKKy0gICAgeyAweDMwMTgsIDB4MzAxQiB9LCB7IDB4RkZGRCwgMHhGRkZEIH0KKysgICAgeyAw eDI3M0QsIDB4MjczRCB9LCB7IDB4Mjc3NiwgMHgyNzdGIH0sIHsgMHhFMDAwLCAweEY4RkYgfSwK KysgICAgeyAweEZGRkQsIDB4RkZGRCB9LCB7IDB4RjAwMDAsIDB4RkZGRkQgfSwgeyAweDEwMDAw MCwgMHgxMEZGRkQgfQorICAgfTsKKyAKKyAgIC8qIGJpbmFyeSBzZWFyY2ggaW4gdGFibGUgb2Yg bm9uLXNwYWNpbmcgY2hhcmFjdGVycyAqLworQEAgLTIyMywxNiArMjk1LDE2IEBAIHN0YXRpYyBp bnQgd2N3aWR0aF9jamsod2NoYXJfdCB1Y3MpCisgCSAgICAgICBzaXplb2YoYW1iaWd1b3VzKSAv IHNpemVvZihzdHJ1Y3QgaW50ZXJ2YWwpIC0gMSkpCisgICAgIHJldHVybiAyOworIAorLSAgcmV0 dXJuIHdjd2lkdGgodWNzKTsKKysgIHJldHVybiBta193Y3dpZHRoKHVjcyk7CisgfQorIAorIAor LWludCB3Y3N3aWR0aF9jamsoY29uc3Qgd2NoYXJfdCAqcHdjcywgc2l6ZV90IG4pCisraW50IG1r X3djc3dpZHRoX2Nqayhjb25zdCB3Y2hhcl90ICpwd2NzLCBzaXplX3QgbikKKyB7CisgICBpbnQg dywgd2lkdGggPSAwOworIAorICAgZm9yICg7KnB3Y3MgJiYgbi0tID4gMDsgcHdjcysrKQorLSAg ICBpZiAoKHcgPSB3Y3dpZHRoX2NqaygqcHdjcykpIDwgMCkKKysgICAgaWYgKCh3ID0gbWtfd2N3 aWR0aF9jamsoKnB3Y3MpKSA8IDApCisgICAgICAgcmV0dXJuIC0xOworICAgICBlbHNlCisgICAg ICAgd2lkdGggKz0gdzsKKy0tLSBhL3JlYWRsaW5lL3RjYXAuaAorKysrIGIvcmVhZGxpbmUvdGNh cC5oCitAQCAtMSwyNSArMSwyMyBAQAorIC8qIHRjYXAuaCAtLSB0ZXJtY2FwIGxpYnJhcnkgZnVu Y3Rpb25zIGFuZCB2YXJpYWJsZXMuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTk2IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk5Ni0yMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBjb250YWlucyB0 aGUgUmVhZGxpbmUgTGlicmFyeSAodGhlIExpYnJhcnkpLCBhIHNldCBvZgorLSAgIHJvdXRpbmVz IGZvciBwcm92aWRpbmcgRW1hY3Mgc3R5bGUgbGluZSBpbnB1dCB0byBwcm9ncmFtcyB0aGF0IGFz aworLSAgIGZvciBpdC4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5l IExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2Yg dGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisg CistICAgVGhlIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9w dGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGUgTGlicmFyeSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKy0gICBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCist ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUKKy0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CistCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVuIHNoaXBwZWQg d2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGluIGEgZmlsZSBj YWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhhdmUgYSBjb3B5 IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAor LSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExIFVTQS4gKi8K KysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr CisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBS ZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysq LworIAorICNpZiAhZGVmaW5lZCAoX1JMVENBUF9IXykKKyAjZGVmaW5lIF9STFRDQVBfSF8KKy0t LSBhL3JlYWRsaW5lL3Rlcm1pbmFsLmMKKysrKyBiL3JlYWRsaW5lL3Rlcm1pbmFsLmMKK0BAIC0x LDI0ICsxLDI0IEBACisgLyogdGVybWluYWwuYyAtLSBjb250cm9sbGluZyB0aGUgdGVybWluYWwg d2l0aCB0ZXJtY2FwLiAqLworIAorLS8qIENvcHlyaWdodCAoQykgMTk5Ni0yMDA1IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIENvcHlyaWdodCAoQykgMTk5Ni0yMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorLSAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBHTlUgUmVhZGxpbmUgTGlicmFyeSwgYSBsaWJyYXJ5IGZvcgorLSAgIHJlYWRpbmcgbGluZXMg b2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisrICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSks IGEgbGlicmFyeQorKyAgIGZvciByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2 ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0aW5nLiAgICAgIAorIAorLSAgIFRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdAorLSAg IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorLSAgIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvcgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCisgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAK Ky0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlCistICAgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eQorLSAgIG9mIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBSZWFkbGlu ZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgCistICAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIG9mdGVu IHNoaXBwZWQgd2l0aCBHTlUgc29mdHdhcmUsIGFuZAorLSAgIGlzIGdlbmVyYWxseSBrZXB0IGlu IGEgZmlsZSBjYWxsZWQgQ09QWUlORyBvciBMSUNFTlNFLiAgSWYgeW91IGRvIG5vdAorLSAgIGhh dmUgYSBjb3B5IG9mIHRoZSBsaWNlbnNlLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLAorLSAgIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx IFVTQS4gKi8KKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKysKKyAjZGVmaW5lIFJF QURMSU5FX0xJQlJBUlkKKyAKKyAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKK0BAIC03MSw2 ICs3MSwxNyBAQAorICNpbmNsdWRlICJ4bWFsbG9jLmgiCisgCisgI2lmIGRlZmluZWQgKF9fTUlO R1czMl9fKQorKyMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KKysjICBpbmNsdWRlIDx3aW5jb24uaD4K KysKKytzdGF0aWMgdm9pZCBfd2luX2dldF9zY3JlZW5zaXplIFBBUkFNUygoaW50ICosIGludCAq KSk7CisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQgKF9fRU1YX18pCisrc3RhdGljIHZvaWQgX2Vt eF9nZXRfc2NyZWVuc2l6ZSBQQVJBTVMoKGludCAqLCBpbnQgKikpOworKyNlbmRpZgorKworKyNp ZiBkZWZpbmVkIChfX01JTkdXMzJfXykKKyAjIGluY2x1ZGUgPHdpbmRvd3MuaD4KKyAjIGluY2x1 ZGUgPHdpbmNvbi5oPgorICNlbmRpZgorQEAgLTc4LDcgKzg5LDEwIEBACisgI2RlZmluZSBDVVNU T01fUkVESVNQTEFZX0ZVTkMoKSAocmxfcmVkaXNwbGF5X2Z1bmN0aW9uICE9IHJsX3JlZGlzcGxh eSkKKyAjZGVmaW5lIENVU1RPTV9JTlBVVF9GVU5DKCkgKHJsX2dldGNfZnVuY3Rpb24gIT0gcmxf Z2V0YykKKyAKKy1pbnQgcmxfcHJlZmVyX2Vudl93aW5zaXplOworKy8qICBJZiB0aGUgY2FsbGlu ZyBhcHBsaWNhdGlvbiBzZXRzIHRoaXMgdG8gYSBub24temVybyB2YWx1ZSwgcmVhZGxpbmUgd2ls bAorKyAgICB1c2UgdGhlICRMSU5FUyBhbmQgJENPTFVNTlMgZW52aXJvbm1lbnQgdmFyaWFibGVz IHRvIHNldCBpdHMgaWRlYSBvZiB0aGUKKysgICAgd2luZG93IHNpemUgYmVmb3JlIGludGVycm9n YXRpbmcgdGhlIGtlcm5lbC4gKi8KKytpbnQgcmxfcHJlZmVyX2Vudl93aW5zaXplID0gMDsKKyAK KyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqICovCisgLyoJCQkJCQkJCSAgICAqLworQEAgLTkzLDEyICsxMDcsMTIgQEAg c3RhdGljIGNoYXIgKnRlcm1fc3RyaW5nX2J1ZmZlciA9IChjaGFyICopTlVMTDsKKyAKKyBzdGF0 aWMgaW50IHRjYXBfaW5pdGlhbGl6ZWQ7CisgCistI2lmICFkZWZpbmVkIChfX2xpbnV4X18pCisr I2lmICFkZWZpbmVkIChfX2xpbnV4X18pICYmICFkZWZpbmVkIChOQ1VSU0VTX1ZFUlNJT04pCisg IyAgaWYgZGVmaW5lZCAoX19FTVhfXykgfHwgZGVmaW5lZCAoTkVFRF9FWFRFUk5fUEMpCisgZXh0 ZXJuIAorICMgIGVuZGlmIC8qIF9fRU1YX18gfHwgTkVFRF9FWFRFUk5fUEMgKi8KKyBjaGFyIFBD LCAqQkMsICpVUDsKKy0jZW5kaWYgLyogX19saW51eF9fICovCisrI2VuZGlmIC8qICFfX2xpbnV4 X18gJiYgIU5DVVJTRVNfVkVSU0lPTiAqLworIAorIC8qIFNvbWUgc3RyaW5ncyB0byBjb250cm9s IHRlcm1pbmFsIGFjdGlvbnMuICBUaGVzZSBhcmUgb3V0cHV0IGJ5IHRwdXRzICgpLiAqLworIGNo YXIgKl9ybF90ZXJtX2NscmVvbDsKK0BAIC0xMjIsOSArMTM2LDcgQEAgY2hhciAqX3JsX3Rlcm1f SUM7CisgY2hhciAqX3JsX3Rlcm1fZGM7CisgY2hhciAqX3JsX3Rlcm1fREM7CisgCistI2lmIGRl ZmluZWQgKEhBQ0tfVEVSTUNBUF9NT1RJT04pCisgY2hhciAqX3JsX3Rlcm1fZm9yd2FyZF9jaGFy OworLSNlbmRpZiAgLyogSEFDS19URVJNQ0FQX01PVElPTiAqLworIAorIC8qIEhvdyB0byBnbyB1 cCBhIGxpbmUuICovCisgY2hhciAqX3JsX3Rlcm1fdXA7CitAQCAtMTk1LDYgKzIwNywyNiBAQCBf ZW14X2dldF9zY3JlZW5zaXplIChzd3AsIHNocCkKKyB9CisgI2VuZGlmCisgCisrI2lmIGRlZmlu ZWQgKF9fTUlOR1czMl9fKQorK3N0YXRpYyB2b2lkCisrX3dpbl9nZXRfc2NyZWVuc2l6ZSAoc3dw LCBzaHApCisrICAgICBpbnQgKnN3cCwgKnNocDsKKyt7CisrICBIQU5ETEUgaENvbk91dDsKKysg IENPTlNPTEVfU0NSRUVOX0JVRkZFUl9JTkZPIHNjcjsKKysKKysgIGhDb25PdXQgPSBHZXRTdGRI YW5kbGUgKFNURF9PVVRQVVRfSEFORExFKTsKKysgIGlmIChoQ29uT3V0ICE9IElOVkFMSURfSEFO RExFX1ZBTFVFKQorKyAgICB7CisrICAgICAgaWYgKEdldENvbnNvbGVTY3JlZW5CdWZmZXJJbmZv IChoQ29uT3V0LCAmc2NyKSkKKysJeworKwkgICpzd3AgPSBzY3IuZHdTaXplLlg7CisrCSAgKnNo cCA9IHNjci5zcldpbmRvdy5Cb3R0b20gLSBzY3Iuc3JXaW5kb3cuVG9wICsgMTsKKysJfQorKyAg ICB9CisrfQorKyNlbmRpZgorKworIC8qIEdldCByZWFkbGluZSdzIGlkZWEgb2YgdGhlIHNjcmVl biBzaXplLiAgVFRZIGlzIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4KKyAgICB0byB0aGUgdGVybWlu YWwuICBJZiBJR05PUkVfRU5WIGlzIHRydWUsIHdlIGRvIG5vdCBwYXkgYXR0ZW50aW9uIHRvIHRo ZQorICAgIHZhbHVlcyBvZiAkTElORVMgYW5kICRDT0xVTU5TLiAgVGhlIHRlc3RzIGZvciBURVJN X1NUUklOR19CVUZGRVIgYmVpbmcKK0BAIC0yMzMsNyArMjY1LDkgQEAgX3JsX2dldF9zY3JlZW5f c2l6ZSAodHR5LCBpZ25vcmVfZW52KQorICNlbmRpZgorIAorICNpZiBkZWZpbmVkIChfX0VNWF9f KQorLSAgX2VteF9nZXRfc2NyZWVuc2l6ZSAoJl9ybF9zY3JlZW53aWR0aCwgJl9ybF9zY3JlZW5o ZWlnaHQpOworKyAgX2VteF9nZXRfc2NyZWVuc2l6ZSAoJndjLCAmd3IpOworKyNlbGlmIGRlZmlu ZWQgKF9fTUlOR1czMl9fKQorKyAgX3dpbl9nZXRfc2NyZWVuc2l6ZSAoJndjLCAmd3IpOworICNl bmRpZgorIAorICAgaWYgKGlnbm9yZV9lbnYgfHwgcmxfcHJlZmVyX2Vudl93aW5zaXplID09IDAp CitAQCAtMzQ3LDI0ICszODEsMjQgQEAgcmxfcmVzZXRfc2NyZWVuX3NpemUgKCkKKyB2b2lkCisg cmxfcmVzaXplX3Rlcm1pbmFsICgpCisgeworLSAgaWYgKHJlYWRsaW5lX2VjaG9pbmdfcCkKKysg IF9ybF9nZXRfc2NyZWVuX3NpemUgKGZpbGVubyAocmxfaW5zdHJlYW0pLCAxKTsKKysgIGlmIChf cmxfZWNob2luZ19wKQorICAgICB7CistICAgICAgX3JsX2dldF9zY3JlZW5fc2l6ZSAoZmlsZW5v IChybF9pbnN0cmVhbSksIDEpOworICAgICAgIGlmIChDVVNUT01fUkVESVNQTEFZX0ZVTkMgKCkp CisgCXJsX2ZvcmNlZF91cGRhdGVfZGlzcGxheSAoKTsKKy0gICAgICBlbHNlCisrICAgICAgZWxz ZSBpZiAoUkxfSVNTVEFURShSTF9TVEFURV9SRURJU1BMQVlJTkcpID09IDApCisgCV9ybF9yZWRp c3BsYXlfYWZ0ZXJfc2lnd2luY2ggKCk7CisgICAgIH0KKyB9CisgCisgc3RydWN0IF90Y19zdHJp bmcgeworLSAgICAgY29uc3QgY2hhciAqdGNfdmFyOworKyAgICAgY29uc3QgY2hhciAqIGNvbnN0 IHRjX3ZhcjsKKyAgICAgIGNoYXIgKip0Y192YWx1ZTsKKyB9OworIAorIC8qIFRoaXMgc2hvdWxk IGJlIGtlcHQgc29ydGVkLCBqdXN0IGluIGNhc2Ugd2UgZGVjaWRlIHRvIGNoYW5nZSB0aGUKKyAg ICBzZWFyY2ggYWxnb3JpdGhtIHRvIHNvbWV0aGluZyBzbWFydGVyLiAqLworLXN0YXRpYyBzdHJ1 Y3QgX3RjX3N0cmluZyB0Y19zdHJpbmdzW10gPQorK3N0YXRpYyBjb25zdCBzdHJ1Y3QgX3RjX3N0 cmluZyB0Y19zdHJpbmdzW10gPQorIHsKKyAgIHsgIkA3IiwgJl9ybF90ZXJtX2F0NyB9LAorICAg eyAiREMiLCAmX3JsX3Rlcm1fREMgfSwKK0BAIC0zODksOSArNDIzLDcgQEAgc3RhdGljIHN0cnVj dCBfdGNfc3RyaW5nIHRjX3N0cmluZ3NbXSA9CisgICB7ICJsZSIsICZfcmxfdGVybV9iYWNrc3Bh Y2UgfSwKKyAgIHsgIm1tIiwgJl9ybF90ZXJtX21tIH0sCisgICB7ICJtbyIsICZfcmxfdGVybV9t byB9LAorLSNpZiBkZWZpbmVkIChIQUNLX1RFUk1DQVBfTU9USU9OKQorICAgeyAibmQiLCAmX3Js X3Rlcm1fZm9yd2FyZF9jaGFyIH0sCistI2VuZGlmCisgICB7ICJwYyIsICZfcmxfdGVybV9wYyB9 LAorICAgeyAidXAiLCAmX3JsX3Rlcm1fdXAgfSwKKyAgIHsgInZiIiwgJl9ybF92aXNpYmxlX2Jl bGwgfSwKK0BAIC01MDUsOSArNTM3LDcgQEAgX3JsX2luaXRfdGVybWluYWxfaW8gKHRlcm1pbmFs X25hbWUpCisgICAgICAgX3JsX3Rlcm1fa3MgPSBfcmxfdGVybV9rZSA9IF9ybF90ZXJtX2F0NyA9 IChjaGFyICopTlVMTDsKKyAgICAgICBfcmxfdGVybV9tbSA9IF9ybF90ZXJtX21vID0gKGNoYXIg KilOVUxMOworICAgICAgIF9ybF90ZXJtX3ZlID0gX3JsX3Rlcm1fdnMgPSAoY2hhciAqKU5VTEw7 CistI2lmIGRlZmluZWQgKEhBQ0tfVEVSTUNBUF9NT1RJT04pCistICAgICAgdGVybV9mb3J3YXJk X2NoYXIgPSAoY2hhciAqKU5VTEw7CistI2VuZGlmCisrICAgICAgX3JsX3Rlcm1fZm9yd2FyZF9j aGFyID0gKGNoYXIgKilOVUxMOworICAgICAgIF9ybF90ZXJtaW5hbF9jYW5faW5zZXJ0ID0gdGVy bV9oYXNfbWV0YSA9IDA7CisgCisgICAgICAgLyogUmVhc29uYWJsZSBkZWZhdWx0cyBmb3IgdGdv dG8oKS4gIFJlYWRsaW5lIGN1cnJlbnRseSBvbmx5IHVzZXMKK0BAIC01NDYsOCArNTc2LDggQEAg X3JsX2luaXRfdGVybWluYWxfaW8gKHRlcm1pbmFsX25hbWUpCisgCisgICAvKiBDaGVjayB0byBz ZWUgaWYgdGhpcyB0ZXJtaW5hbCBoYXMgYSBtZXRhIGtleSBhbmQgY2xlYXIgdGhlIGNhcGFiaWxp dHkKKyAgICAgIHZhcmlhYmxlcyBpZiB0aGVyZSBpcyBub25lLiAqLworLSAgdGVybV9oYXNfbWV0 YSA9ICh0Z2V0ZmxhZyAoImttIikgfHwgdGdldGZsYWcgKCJNVCIpKTsKKy0gIGlmICghdGVybV9o YXNfbWV0YSkKKysgIHRlcm1faGFzX21ldGEgPSB0Z2V0ZmxhZyAoImttIikgIT0gMDsKKysgIGlm ICh0ZXJtX2hhc19tZXRhID09IDApCisgICAgIF9ybF90ZXJtX21tID0gX3JsX3Rlcm1fbW8gPSAo Y2hhciAqKU5VTEw7CisgCisgI2VuZGlmIC8qICFfX01TRE9TX18gKi8KK0BAIC02NjMsMTAgKzY5 MywxMCBAQCBfcmxfYmFja3NwYWNlIChjb3VudCkKKyBpbnQKKyBybF9jcmxmICgpCisgeworLSNp ZiBkZWZpbmVkIChORVdfVFRZX0RSSVZFUikKKysjaWYgZGVmaW5lZCAoTkVXX1RUWV9EUklWRVIp IHx8IGRlZmluZWQgKF9fTUlOVF9fKQorICAgaWYgKF9ybF90ZXJtX2NyKQorICAgICB0cHV0cyAo X3JsX3Rlcm1fY3IsIDEsIF9ybF9vdXRwdXRfY2hhcmFjdGVyX2Z1bmN0aW9uKTsKKy0jZW5kaWYg LyogTkVXX1RUWV9EUklWRVIgKi8KKysjZW5kaWYgLyogTkVXX1RUWV9EUklWRVIgfHwgX19NSU5U X18gKi8KKyAgIHB1dGMgKCdcbicsIF9ybF9vdXRfc3RyZWFtKTsKKyAgIHJldHVybiAwOworIH0K K0BAIC02NzUsNyArNzA1LDcgQEAgcmxfY3JsZiAoKQorIGludAorIHJsX2RpbmcgKCkKKyB7Cist ICBpZiAocmVhZGxpbmVfZWNob2luZ19wKQorKyAgaWYgKF9ybF9lY2hvaW5nX3ApCisgICAgIHsK KyAgICAgICBzd2l0Y2ggKF9ybF9iZWxsX3ByZWZlcmVuY2UpCisgICAgICAgICB7CistLS0gYS9y ZWFkbGluZS90ZXh0LmMKKysrKyBiL3JlYWRsaW5lL3RleHQuYworQEAgLTEsMjQgKzEsMjQgQEAK KyAvKiB0ZXh0LmMgLS0gdGV4dCBoYW5kbGluZyBjb21tYW5kcyBmb3IgcmVhZGxpbmUuICovCisg CistLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTg3LTIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJy YXJ5LCBhIGxpYnJhcnkgZm9yCistICAgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJh Y3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9y IHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5 IGVkaXRpbmcuICAgICAgCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0CistICAgYW5kL29yIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0g ICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisg ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBU aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBz b2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJhbGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZ SU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8gbm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxp Y2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVt cGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKysqLworKworICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQorIAor ICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19IKQorQEAgLTY3LDYgKzY3LDEwIEBAIHN0YXRpYyBp bnQgX3JsX2luc2VydF9uZXh0X2NhbGxiYWNrIFBBUkFNUygoX3JsX2NhbGxiYWNrX2dlbmVyaWNf YXJnICopKTsKKyBzdGF0aWMgaW50IF9ybF9jaGFyX3NlYXJjaF9jYWxsYmFjayBQQVJBTVMoKF9y bF9jYWxsYmFja19nZW5lcmljX2FyZyAqKSk7CisgI2VuZGlmCisgCisrLyogVGhlIGxhcmdlc3Qg Y2h1bmsgb2YgdGV4dCB0aGF0IGNhbiBiZSBpbnNlcnRlZCBpbiBvbmUgY2FsbCB0bworKyAgIHJs X2luc2VydF90ZXh0LiAgVGV4dCBibG9ja3MgbGFyZ2VyIHRoYW4gdGhpcyBhcmUgZGl2aWRlZC4g Ki8KKysjZGVmaW5lIFRFWFRfQ09VTlRfTUFYCTEwMjQKKysKKyAvKiAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisgLyoJ CQkJCQkJCSAgICAqLworIC8qCQkJSW5zZXJ0IGFuZCBEZWxldGUJCQkgICAgKi8KK0BAIC0xNDYs NyArMTUwLDcgQEAgcmxfZGVsZXRlX3RleHQgKGZyb20sIHRvKQorICAgaWYgKF9ybF9kb2luZ19h bl91bmRvID09IDApCisgICAgIHJsX2FkZF91bmRvIChVTkRPX0RFTEVURSwgZnJvbSwgdG8sIHRl eHQpOworICAgZWxzZQorLSAgICBmcmVlICh0ZXh0KTsKKysgICAgeGZyZWUgKHRleHQpOworIAor ICAgcmxfZW5kIC09IGRpZmY7CisgICBybF9saW5lX2J1ZmZlcltybF9lbmRdID0gJ1wwJzsKK0BA IC0xODUsMTAgKzE4OSwxMyBAQCBfcmxfcmVwbGFjZV90ZXh0ICh0ZXh0LCBzdGFydCwgZW5kKQor IHsKKyAgIGludCBuOworIAorKyAgbiA9IDA7CisgICBybF9iZWdpbl91bmRvX2dyb3VwICgpOwor LSAgcmxfZGVsZXRlX3RleHQgKHN0YXJ0LCBlbmQgKyAxKTsKKysgIGlmIChzdGFydCA8PSBlbmQp CisrICAgIHJsX2RlbGV0ZV90ZXh0IChzdGFydCwgZW5kICsgMSk7CisgICBybF9wb2ludCA9IHN0 YXJ0OworLSAgbiA9IHJsX2luc2VydF90ZXh0ICh0ZXh0KTsKKysgIGlmICgqdGV4dCkKKysgICAg biA9IHJsX2luc2VydF90ZXh0ICh0ZXh0KTsKKyAgIHJsX2VuZF91bmRvX2dyb3VwICgpOworIAor ICAgcmV0dXJuIG47CitAQCAtMjU4LDExICsyNjUsMTMgQEAgcmxfZm9yd2FyZF9ieXRlIChjb3Vu dCwga2V5KQorIAorICAgaWYgKGNvdW50ID4gMCkKKyAgICAgeworLSAgICAgIGludCBlbmQgPSBy bF9wb2ludCArIGNvdW50OworKyAgICAgIGludCBlbmQsIGxlbmQ7CisrCisrICAgICAgZW5kID0g cmxfcG9pbnQgKyBjb3VudDsKKyAjaWYgZGVmaW5lZCAoVklfTU9ERSkKKy0gICAgICBpbnQgbGVu ZCA9IHJsX2VuZCA+IDAgPyBybF9lbmQgLSAocmxfZWRpdGluZ19tb2RlID09IHZpX21vZGUpIDog cmxfZW5kOworKyAgICAgIGxlbmQgPSBybF9lbmQgPiAwID8gcmxfZW5kIC0gKFZJX0NPTU1BTkRf TU9ERSgpKSA6IHJsX2VuZDsKKyAjZWxzZQorLSAgICAgIGludCBsZW5kID0gcmxfZW5kOworKyAg ICAgIGxlbmQgPSBybF9lbmQ7CisgI2VuZGlmCisgCisgICAgICAgaWYgKGVuZCA+IGxlbmQpCitA QCAtMjgwLDYgKzI4OSwzMSBAQCBybF9mb3J3YXJkX2J5dGUgKGNvdW50LCBrZXkpCisgICByZXR1 cm4gMDsKKyB9CisgCisraW50CisrX3JsX2ZvcndhcmRfY2hhcl9pbnRlcm5hbCAoY291bnQpCisr ICAgICBpbnQgY291bnQ7CisreworKyAgaW50IHBvaW50OworKworKyNpZiBkZWZpbmVkIChIQU5E TEVfTVVMVElCWVRFKQorKyAgcG9pbnQgPSBfcmxfZmluZF9uZXh0X21iY2hhciAocmxfbGluZV9i dWZmZXIsIHJsX3BvaW50LCBjb3VudCwgTUJfRklORF9OT05aRVJPKTsKKysKKysjaWYgZGVmaW5l ZCAoVklfTU9ERSkKKysgIGlmIChwb2ludCA+PSBybF9lbmQgJiYgVklfQ09NTUFORF9NT0RFKCkp CisrICAgIHBvaW50ID0gX3JsX2ZpbmRfcHJldl9tYmNoYXIgKHJsX2xpbmVfYnVmZmVyLCBybF9l bmQsIE1CX0ZJTkRfTk9OWkVSTyk7CisrI2VuZGlmCisrCisrICAgIGlmIChybF9lbmQgPCAwKQor KwlybF9lbmQgPSAwOworKyNlbHNlCisrICBwb2ludCA9IHJsX3BvaW50ICsgY291bnQ7CisrICBp ZiAocG9pbnQgPiBybF9lbmQpCisrICAgIHBvaW50ID0gcmxfZW5kOworKyNlbmRpZgorKworKyAg cmV0dXJuIChwb2ludCk7CisrfQorKworICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQor IC8qIE1vdmUgZm9yd2FyZCBDT1VOVCBjaGFyYWN0ZXJzLiAqLworIGludAorQEAgLTI5NiwyMCAr MzMwLDE4IEBAIHJsX2ZvcndhcmRfY2hhciAoY291bnQsIGtleSkKKyAKKyAgIGlmIChjb3VudCA+ IDApCisgICAgIHsKKy0gICAgICBwb2ludCA9IF9ybF9maW5kX25leHRfbWJjaGFyIChybF9saW5l X2J1ZmZlciwgcmxfcG9pbnQsIGNvdW50LCBNQl9GSU5EX05PTlpFUk8pOworKyAgICAgIGlmIChy bF9wb2ludCA9PSBybF9lbmQgJiYgRU1BQ1NfTU9ERSgpKQorKwl7CisrCSAgcmxfZGluZyAoKTsK KysJICByZXR1cm4gMDsKKysJfQorIAorLSNpZiBkZWZpbmVkIChWSV9NT0RFKQorLSAgICAgIGlm IChybF9lbmQgPD0gcG9pbnQgJiYgcmxfZWRpdGluZ19tb2RlID09IHZpX21vZGUpCistCXBvaW50 ID0gX3JsX2ZpbmRfcHJldl9tYmNoYXIgKHJsX2xpbmVfYnVmZmVyLCBybF9lbmQsIE1CX0ZJTkRf Tk9OWkVSTyk7CistI2VuZGlmCisrICAgICAgcG9pbnQgPSBfcmxfZm9yd2FyZF9jaGFyX2ludGVy bmFsIChjb3VudCk7CisgCisgICAgICAgaWYgKHJsX3BvaW50ID09IHBvaW50KQorIAlybF9kaW5n ICgpOworIAorICAgICAgIHJsX3BvaW50ID0gcG9pbnQ7CistCistICAgICAgaWYgKHJsX2VuZCA8 IDApCistCXJsX2VuZCA9IDA7CisgICAgIH0KKyAKKyAgIHJldHVybiAwOworQEAgLTU2NSw2ICs1 OTcsMjEgQEAgcmxfY2xlYXJfc2NyZWVuIChjb3VudCwga2V5KQorIH0KKyAKKyBpbnQKKytybF9z a2lwX2NzaV9zZXF1ZW5jZSAoY291bnQsIGtleSkKKysgICAgIGludCBjb3VudCwga2V5OworK3sK KysgIGludCBjaDsKKysKKysgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9NT1JFSU5QVVQpOworKyAg ZG8KKysgICAgY2ggPSBybF9yZWFkX2tleSAoKTsKKysgIHdoaWxlIChjaCA+PSAweDIwICYmIGNo IDwgMHg0MCk7CisrICBSTF9VTlNFVFNUQVRFIChSTF9TVEFURV9NT1JFSU5QVVQpOworKworKyAg cmV0dXJuIDA7CisrfQorKworK2ludAorIHJsX2Fycm93X2tleXMgKGNvdW50LCBjKQorICAgICAg aW50IGNvdW50LCBjOworIHsKK0BAIC03MDEsNyArNzQ4LDcgQEAgX3JsX2luc2VydF9jaGFyIChj b3VudCwgYykKKyAJICAKKyAgIC8qIElmIHdlIGNhbiBvcHRpbWl6ZSwgdGhlbiBkbyBpdC4gIEJ1 dCBkb24ndCBsZXQgcGVvcGxlIGNyYXNoCisgICAgICByZWFkbGluZSBiZWNhdXNlIG9mIGV4dHJh IGxhcmdlIGFyZ3VtZW50cy4gKi8KKy0gIGlmIChjb3VudCA+IDEgJiYgY291bnQgPD0gMTAyNCkK KysgIGlmIChjb3VudCA+IDEgJiYgY291bnQgPD0gVEVYVF9DT1VOVF9NQVgpCisgICAgIHsKKyAj aWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKKyAgICAgICBzdHJpbmdfc2l6ZSA9IGNvdW50 ICogaW5jb21pbmdfbGVuZ3RoOworQEAgLTcyNCwxNiArNzcxLDE2IEBAIF9ybF9pbnNlcnRfY2hh ciAoY291bnQsIGMpCisgCisgICAgICAgc3RyaW5nW2ldID0gJ1wwJzsKKyAgICAgICBybF9pbnNl cnRfdGV4dCAoc3RyaW5nKTsKKy0gICAgICBmcmVlIChzdHJpbmcpOworKyAgICAgIHhmcmVlIChz dHJpbmcpOworIAorICAgICAgIHJldHVybiAwOworICAgICB9CisgCistICBpZiAoY291bnQgPiAx MDI0KQorKyAgaWYgKGNvdW50ID4gVEVYVF9DT1VOVF9NQVgpCisgICAgIHsKKyAgICAgICBpbnQg ZGVjcmVhc2VyOworICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQorLSAgICAgIHN0cmlu Z19zaXplID0gaW5jb21pbmdfbGVuZ3RoICogMTAyNDsKKysgICAgICBzdHJpbmdfc2l6ZSA9IGlu Y29taW5nX2xlbmd0aCAqIFRFWFRfQ09VTlRfTUFYOworICAgICAgIHN0cmluZyA9IChjaGFyICop eG1hbGxvYyAoMSArIHN0cmluZ19zaXplKTsKKyAKKyAgICAgICBpID0gMDsKK0BAIC03NDUsMjQg Kzc5MiwyNCBAQCBfcmxfaW5zZXJ0X2NoYXIgKGNvdW50LCBjKQorIAorICAgICAgIHdoaWxlIChj b3VudCkKKyAJeworLQkgIGRlY3JlYXNlciA9IChjb3VudCA+IDEwMjQpID8gMTAyNCA6IGNvdW50 OworKwkgIGRlY3JlYXNlciA9IChjb3VudCA+IFRFWFRfQ09VTlRfTUFYKSA/IFRFWFRfQ09VTlRf TUFYIDogY291bnQ7CisgCSAgc3RyaW5nW2RlY3JlYXNlcippbmNvbWluZ19sZW5ndGhdID0gJ1ww JzsKKyAJICBybF9pbnNlcnRfdGV4dCAoc3RyaW5nKTsKKyAJICBjb3VudCAtPSBkZWNyZWFzZXI7 CisgCX0KKyAKKy0gICAgICBmcmVlIChzdHJpbmcpOworKyAgICAgIHhmcmVlIChzdHJpbmcpOwor ICAgICAgIGluY29taW5nX2xlbmd0aCA9IDA7CisgICAgICAgc3RvcmVkX2NvdW50ID0gMDsKKyAj ZWxzZSAvKiAhSEFORExFX01VTFRJQllURSAqLworLSAgICAgIGNoYXIgc3RyWzEwMjQrMV07Cisr ICAgICAgY2hhciBzdHJbVEVYVF9DT1VOVF9NQVgrMV07CisgCistICAgICAgZm9yIChpID0gMDsg aSA8IDEwMjQ7IGkrKykKKysgICAgICBmb3IgKGkgPSAwOyBpIDwgVEVYVF9DT1VOVF9NQVg7IGkr KykKKyAJc3RyW2ldID0gYzsKKyAKKyAgICAgICB3aGlsZSAoY291bnQpCisgCXsKKy0JICBkZWNy ZWFzZXIgPSAoY291bnQgPiAxMDI0ID8gMTAyNCA6IGNvdW50KTsKKysJICBkZWNyZWFzZXIgPSAo Y291bnQgPiBURVhUX0NPVU5UX01BWCA/IFRFWFRfQ09VTlRfTUFYIDogY291bnQpOworIAkgIHN0 cltkZWNyZWFzZXJdID0gJ1wwJzsKKyAJICBybF9pbnNlcnRfdGV4dCAoc3RyKTsKKyAJICBjb3Vu dCAtPSBkZWNyZWFzZXI7CitAQCAtNzc3LDggKzgyNCw5IEBAIF9ybF9pbnNlcnRfY2hhciAoY291 bnQsIGMpCisgICAgICAgLyogV2UgYXJlIGluc2VydGluZyBhIHNpbmdsZSBjaGFyYWN0ZXIuCisg CSBJZiB0aGVyZSBpcyBwZW5kaW5nIGlucHV0LCB0aGVuIG1ha2UgYSBzdHJpbmcgb2YgYWxsIG9m IHRoZQorIAkgcGVuZGluZyBjaGFyYWN0ZXJzIHRoYXQgYXJlIGJvdW5kIHRvIHJsX2luc2VydCwg YW5kIGluc2VydAorLQkgdGhlbSBhbGwuICovCistICAgICAgaWYgKF9ybF9hbnlfdHlwZWluICgp KQorKwkgdGhlbSBhbGwuICBEb24ndCBkbyB0aGlzIGlmIHdlJ3JlIGN1cnJlbnQgcmVhZGluZyBp bnB1dCBmcm9tCisrCSBhIG1hY3JvLiAqLworKyAgICAgIGlmICgoUkxfSVNTVEFURSAoUkxfU1RB VEVfTUFDUk9JTlBVVCkgPT0gMCkgJiYgX3JsX2FueV90eXBlaW4gKCkpCisgCV9ybF9pbnNlcnRf dHlwZWluIChjKTsKKyAgICAgICBlbHNlCisgCXsKK0BAIC04NTcsNiArOTA1LDkgQEAgX3JsX2lu c2VydF9uZXh0IChjb3VudCkKKyAgIGMgPSBybF9yZWFkX2tleSAoKTsKKyAgIFJMX1VOU0VUU1RB VEUoUkxfU1RBVEVfTU9SRUlOUFVUKTsKKyAKKysgIGlmIChjIDwgMCkKKysgICAgcmV0dXJuIC0x OworKworICNpZiBkZWZpbmVkIChIQU5ETEVfU0lHTkFMUykKKyAgIGlmIChSTF9JU1NUQVRFIChS TF9TVEFURV9DQUxMQkFDSykgPT0gMCkKKyAgICAgX3JsX3Jlc3RvcmVfdHR5X3NpZ25hbHMgKCk7 CitAQCAtOTQwLDcgKzk5MSw3IEBAIHJsX25ld2xpbmUgKGNvdW50LCBrZXkpCisgICBpZiAocmxf ZXJhc2VfZW1wdHlfbGluZSAmJiBybF9wb2ludCA9PSAwICYmIHJsX2VuZCA9PSAwKQorICAgICBy ZXR1cm4gMDsKKyAKKy0gIGlmIChyZWFkbGluZV9lY2hvaW5nX3ApCisrICBpZiAoX3JsX2VjaG9p bmdfcCkKKyAgICAgX3JsX3VwZGF0ZV9maW5hbCAoKTsKKyAgIHJldHVybiAwOworIH0KK0BAIC0x MDcxLDYgKzExMjIsOCBAQCBpbnQKKyBybF9kZWxldGUgKGNvdW50LCBrZXkpCisgICAgICBpbnQg Y291bnQsIGtleTsKKyB7CisrICBpbnQgeHBvaW50OworKworICAgaWYgKGNvdW50IDwgMCkKKyAg ICAgcmV0dXJuIChfcmxfcnVib3V0X2NoYXIgKC1jb3VudCwga2V5KSk7CisgCitAQCAtMTA4Miwy MSArMTEzNSwxOSBAQCBybF9kZWxldGUgKGNvdW50LCBrZXkpCisgCisgICBpZiAoY291bnQgPiAx IHx8IHJsX2V4cGxpY2l0X2FyZykKKyAgICAgeworLSAgICAgIGludCBvcmlnX3BvaW50ID0gcmxf cG9pbnQ7CisrICAgICAgeHBvaW50ID0gcmxfcG9pbnQ7CisgICAgICAgaWYgKE1CX0NVUl9NQVgg PiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKKyAJcmxfZm9yd2FyZF9jaGFyIChjb3VudCwg a2V5KTsKKyAgICAgICBlbHNlCisgCXJsX2ZvcndhcmRfYnl0ZSAoY291bnQsIGtleSk7CisgCist ICAgICAgcmxfa2lsbF90ZXh0IChvcmlnX3BvaW50LCBybF9wb2ludCk7CistICAgICAgcmxfcG9p bnQgPSBvcmlnX3BvaW50OworKyAgICAgIHJsX2tpbGxfdGV4dCAoeHBvaW50LCBybF9wb2ludCk7 CisrICAgICAgcmxfcG9pbnQgPSB4cG9pbnQ7CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAg ICAgIGludCBuZXdfcG9pbnQ7CistCistICAgICAgbmV3X3BvaW50ID0gTUJfTkVYVENIQVIgKHJs X2xpbmVfYnVmZmVyLCBybF9wb2ludCwgMSwgTUJfRklORF9OT05aRVJPKTsKKy0gICAgICBybF9k ZWxldGVfdGV4dCAocmxfcG9pbnQsIG5ld19wb2ludCk7CisrICAgICAgeHBvaW50ID0gTUJfTkVY VENIQVIgKHJsX2xpbmVfYnVmZmVyLCBybF9wb2ludCwgMSwgTUJfRklORF9OT05aRVJPKTsKKysg ICAgICBybF9kZWxldGVfdGV4dCAocmxfcG9pbnQsIHhwb2ludCk7CisgICAgIH0KKyAgIHJldHVy biAwOworIH0KK0BAIC0xMTIwLDcgKzExNzEsNyBAQCBpbnQKKyBybF9kZWxldGVfaG9yaXpvbnRh bF9zcGFjZSAoY291bnQsIGlnbm9yZSkKKyAgICAgIGludCBjb3VudCwgaWdub3JlOworIHsKKy0g IGludCBzdGFydCA9IHJsX3BvaW50OworKyAgaW50IHN0YXJ0OworIAorICAgd2hpbGUgKHJsX3Bv aW50ICYmIHdoaXRlc3BhY2UgKHJsX2xpbmVfYnVmZmVyW3JsX3BvaW50IC0gMV0pKQorICAgICBy bF9wb2ludC0tOworQEAgLTEyMzcsOCArMTI4OCw5IEBAIHJsX2NoYW5nZV9jYXNlIChjb3VudCwg b3ApCisgI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCisgICB3Y2hhcl90IHdjLCBud2M7 CisgICBjaGFyIG1iW01CX0xFTl9NQVgrMV07CistICBpbnQgbWJsZW4sIHA7CistICBtYnN0YXRl X3QgcHM7CisrICBpbnQgbWxlbjsKKysgIHNpemVfdCBtOworKyAgbWJzdGF0ZV90IG1wczsKKyAj ZW5kaWYKKyAKKyAgIHN0YXJ0ID0gcmxfcG9pbnQ7CitAQCAtMTI1NSw3ICsxMzA3LDcgQEAgcmxf Y2hhbmdlX2Nhc2UgKGNvdW50LCBvcCkKKyAgICAgU1dBUCAoc3RhcnQsIGVuZCk7CisgCisgI2lm IGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCistICBtZW1zZXQgKCZwcywgMCwgc2l6ZW9mICht YnN0YXRlX3QpKTsKKysgIG1lbXNldCAoJm1wcywgMCwgc2l6ZW9mIChtYnN0YXRlX3QpKTsKKyAj ZW5kaWYKKyAKKyAgIC8qIFdlIGFyZSBnb2luZyB0byBtb2RpZnkgc29tZSB0ZXh0LCBzbyBsZXQn cyBwcmVwYXJlIHRvIHVuZG8gaXQuICovCitAQCAtMTI5MCwxNSArMTM0MiwxOSBAQCBybF9jaGFu Z2VfY2FzZSAoY291bnQsIG9wKQorICNpZiBkZWZpbmVkIChIQU5ETEVfTVVMVElCWVRFKQorICAg ICAgIGVsc2UKKyAJeworLQkgIG1icnRvd2MgKCZ3YywgcmxfbGluZV9idWZmZXIgKyBzdGFydCwg ZW5kIC0gc3RhcnQsICZwcyk7CisrCSAgbSA9IG1icnRvd2MgKCZ3YywgcmxfbGluZV9idWZmZXIg KyBzdGFydCwgZW5kIC0gc3RhcnQsICZtcHMpOworKwkgIGlmIChNQl9JTlZBTElEQ0ggKG0pKQor KwkgICAgd2MgPSAod2NoYXJfdClybF9saW5lX2J1ZmZlcltzdGFydF07CisrCSAgZWxzZSBpZiAo TUJfTlVMTFdDSCAobSkpCisrCSAgICB3YyA9IEwnXDAnOworIAkgIG53YyA9IChub3AgPT0gVXBD YXNlKSA/IF9ybF90b193dXBwZXIgKHdjKSA6IF9ybF90b193bG93ZXIgKHdjKTsKKyAJICBpZiAg KG53YyAhPSB3YykJLyogIGp1c3Qgc2tpcCB1bmNoYW5nZWQgY2hhcmFjdGVycyAqLworIAkgICAg eworLQkgICAgICBtYmxlbiA9IHdjcnRvbWIgKG1iLCBud2MsICZwcyk7CistCSAgICAgIGlmICht YmxlbiA+IDApCistCQltYlttYmxlbl0gPSAnXDAnOworKwkgICAgICBtbGVuID0gd2NydG9tYiAo bWIsIG53YywgJm1wcyk7CisrCSAgICAgIGlmIChtbGVuID4gMCkKKysJCW1iW21sZW5dID0gJ1ww JzsKKyAJICAgICAgLyogQXNzdW1lIHRoZSBzYW1lIHdpZHRoICovCistCSAgICAgIHN0cm5jcHkg KHJsX2xpbmVfYnVmZmVyICsgc3RhcnQsIG1iLCBtYmxlbik7CisrCSAgICAgIHN0cm5jcHkgKHJs X2xpbmVfYnVmZmVyICsgc3RhcnQsIG1iLCBtbGVuKTsKKyAJICAgIH0KKyAJfQorICNlbmRpZgor QEAgLTEzNzEsOCArMTQyNyw4IEBAIHJsX3RyYW5zcG9zZV93b3JkcyAoY291bnQsIGtleSkKKyAK KyAgIC8qIEkgdGhpbmsgdGhhdCBkb2VzIGl0LiAqLworICAgcmxfZW5kX3VuZG9fZ3JvdXAgKCk7 CistICBmcmVlICh3b3JkMSk7CistICBmcmVlICh3b3JkMik7CisrICB4ZnJlZSAod29yZDEpOwor KyAgeGZyZWUgKHdvcmQyKTsKKyAKKyAgIHJldHVybiAwOworIH0KK0BAIC0xNDMxLDcgKzE0ODcs NyBAQCBybF90cmFuc3Bvc2VfY2hhcnMgKGNvdW50LCBrZXkpCisgICBybF9lbmRfdW5kb19ncm91 cCAoKTsKKyAKKyAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKKy0gIGZyZWUgKGR1bW15 KTsKKysgIHhmcmVlIChkdW1teSk7CisgI2VuZGlmCisgCisgICByZXR1cm4gMDsKK0BAIC0xNDU5 LDYgKzE1MTUsOSBAQCBfcmxfY2hhcl9zZWFyY2hfaW50ZXJuYWwgKGNvdW50LCBkaXIsIHNjaGFy KQorICAgaW50IHByZXBvczsKKyAjZW5kaWYKKyAKKysgIGlmIChkaXIgPT0gMCkKKysgICAgcmV0 dXJuIC0xOworKworICAgcG9zID0gcmxfcG9pbnQ7CisgICBpbmMgPSAoZGlyIDwgMCkgPyAtMSA6 IDE7CisgICB3aGlsZSAoY291bnQpCitAQCAtMTUyMCw2ICsxNTc5LDkgQEAgX3JsX2NoYXJfc2Vh cmNoIChjb3VudCwgZmRpciwgYmRpcikKKyAKKyAgIG1iX2xlbiA9IF9ybF9yZWFkX21iY2hhciAo bWJjaGFyLCBNQl9MRU5fTUFYKTsKKyAKKysgIGlmIChtYl9sZW4gPD0gMCkKKysgICAgcmV0dXJu IC0xOworKworICAgaWYgKGNvdW50IDwgMCkKKyAgICAgcmV0dXJuIChfcmxfY2hhcl9zZWFyY2hf aW50ZXJuYWwgKC1jb3VudCwgYmRpciwgbWJjaGFyLCBtYl9sZW4pKTsKKyAgIGVsc2UKK0BAIC0x NTM2LDYgKzE1OTgsOSBAQCBfcmxfY2hhcl9zZWFyY2ggKGNvdW50LCBmZGlyLCBiZGlyKQorICAg YyA9IHJsX3JlYWRfa2V5ICgpOworICAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQp OworIAorKyAgaWYgKGMgPCAwKQorKyAgICByZXR1cm4gLTE7CisrCisgICBpZiAoY291bnQgPCAw KQorICAgICByZXR1cm4gKF9ybF9jaGFyX3NlYXJjaF9pbnRlcm5hbCAoLWNvdW50LCBiZGlyLCBj KSk7CisgICBlbHNlCistLS0gYS9yZWFkbGluZS90aWxkZS5jCisrKysgYi9yZWFkbGluZS90aWxk ZS5jCitAQCAtMSwyMyArMSwyMyBAQAorIC8qIHRpbGRlLmMgLS0gVGlsZGUgZXhwYW5zaW9uIGNv ZGUgKH4vZm9vIDo9ICRIT01FL2ZvbykuICovCisgCistLyogQ29weXJpZ2h0IChDKSAxOTg4LDE5 ODkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTg4 LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgR05VIFJlYWRsaW5lLCBhIGxpYnJhcnkgZm9yIHJlYWRpbmcgbGluZXMKKy0gICBv ZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4KKysgICBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgKFJlYWRsaW5lKSwg YSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRoIGludGVyYWN0aXZl IGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuCisgCistICAgUmVhZGxpbmUgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorLSAgIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5IHRoZQorLSAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKKy0gICBsYXRlciB2ZXJzaW9uLgorKyAgIFJlYWRsaW5l IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBSZWFkbGluZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKy0gICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKy0gICBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICAgUmVhZGxpbmUgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorIAorICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCBSZWFkbGluZTsgc2VlIHRoZSBm aWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCistICAgU29mdHdhcmUgRm91 bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEgVVNB LiAqLworKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkK KyAjICBpbmNsdWRlIDxjb25maWcuaD4KK0BAIC0yMzYsNyArMjM2LDcgQEAgdGlsZGVfZXhwYW5k IChzdHJpbmcpCisgICAgICAgc3RyaW5nICs9IGVuZDsKKyAKKyAgICAgICBleHBhbnNpb24gPSB0 aWxkZV9leHBhbmRfd29yZCAodGlsZGVfd29yZCk7CistICAgICAgZnJlZSAodGlsZGVfd29yZCk7 CisrICAgICAgeGZyZWUgKHRpbGRlX3dvcmQpOworIAorICAgICAgIGxlbiA9IHN0cmxlbiAoZXhw YW5zaW9uKTsKKyAjaWZkZWYgX19DWUdXSU5fXworQEAgLTI1MSw3ICsyNTEsNyBAQCB0aWxkZV9l eHBhbmQgKHN0cmluZykKKyAJICBzdHJjcHkgKHJlc3VsdCArIHJlc3VsdF9pbmRleCwgZXhwYW5z aW9uKTsKKyAJICByZXN1bHRfaW5kZXggKz0gbGVuOworIAl9CistICAgICAgZnJlZSAoZXhwYW5z aW9uKTsKKysgICAgICB4ZnJlZSAoZXhwYW5zaW9uKTsKKyAgICAgfQorIAorICAgcmVzdWx0W3Jl c3VsdF9pbmRleF0gPSAnXDAnOworQEAgLTM3Nyw4ICszNzcsOCBAQCB0aWxkZV9leHBhbmRfd29y ZCAoZmlsZW5hbWUpCisgICAgICAgaWYgKGV4cGFuc2lvbikKKyAJeworIAkgIGRpcm5hbWUgPSBn bHVlX3ByZWZpeF9hbmRfc3VmZml4IChleHBhbnNpb24sIGZpbGVuYW1lLCB1c2VyX2xlbik7Cist CSAgZnJlZSAodXNlcm5hbWUpOworLQkgIGZyZWUgKGV4cGFuc2lvbik7CisrCSAgeGZyZWUgKHVz ZXJuYW1lKTsKKysJICB4ZnJlZSAoZXhwYW5zaW9uKTsKKyAJICByZXR1cm4gKGRpcm5hbWUpOwor IAl9CisgICAgIH0KK0BAIC00MDEsMTAgKzQwMSw5IEBAIHRpbGRlX2V4cGFuZF93b3JkIChmaWxl bmFtZSkKKyAJICBpZiAoZXhwYW5zaW9uKQorIAkgICAgeworIAkgICAgICBkaXJuYW1lID0gZ2x1 ZV9wcmVmaXhfYW5kX3N1ZmZpeCAoZXhwYW5zaW9uLCBmaWxlbmFtZSwgdXNlcl9sZW4pOworLQkg ICAgICBmcmVlIChleHBhbnNpb24pOworKwkgICAgICB4ZnJlZSAoZXhwYW5zaW9uKTsKKyAJICAg IH0KKyAJfQorLSAgICAgIGZyZWUgKHVzZXJuYW1lKTsKKyAgICAgICAvKiBJZiB3ZSBkb24ndCBo YXZlIGEgZmFpbHVyZSBob29rLCBvciBpZiB0aGUgZmFpbHVyZSBob29rIGRpZCBub3QKKyAJIGV4 cGFuZCB0aGUgdGlsZGUsIHJldHVybiBhIGNvcHkgb2Ygd2hhdCB3ZSB3ZXJlIHBhc3NlZC4gKi8K KyAgICAgICBpZiAoZGlybmFtZSA9PSAwKQorQEAgLTQxMiwxMCArNDExLDExIEBAIHRpbGRlX2V4 cGFuZF93b3JkIChmaWxlbmFtZSkKKyAgICAgfQorICNpZiBkZWZpbmVkIChIQVZFX0dFVFBXRU5U KQorICAgZWxzZQorLSAgICB7CistICAgICAgZnJlZSAodXNlcm5hbWUpOworLSAgICAgIGRpcm5h bWUgPSBnbHVlX3ByZWZpeF9hbmRfc3VmZml4ICh1c2VyX2VudHJ5LT5wd19kaXIsIGZpbGVuYW1l LCB1c2VyX2xlbik7CistICAgIH0KKysgICAgZGlybmFtZSA9IGdsdWVfcHJlZml4X2FuZF9zdWZm aXggKHVzZXJfZW50cnktPnB3X2RpciwgZmlsZW5hbWUsIHVzZXJfbGVuKTsKKysjZW5kaWYKKysK KysgIHhmcmVlICh1c2VybmFtZSk7CisrI2lmIGRlZmluZWQgKEhBVkVfR0VUUFdFTlQpCisgICBl bmRwd2VudCAoKTsKKyAjZW5kaWYKKyAgIHJldHVybiAoZGlybmFtZSk7CistLS0gYS9yZWFkbGlu ZS90aWxkZS5oCisrKysgYi9yZWFkbGluZS90aWxkZS5oCitAQCAtMSwyNSArMSwyNCBAQAorIC8q IHRpbGRlLmg6IEV4dGVybmFsbHkgYXZhaWxhYmxlIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb24gaW4g bGlidGlsZGUuYS4gKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5OTIgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTkyLTIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBSZWFkbGlu ZSBMaWJyYXJ5ICh0aGUgTGlicmFyeSksIGEgc2V0IG9mCisrICAgVGhpcyBmaWxlIGNvbnRhaW5z IHRoZSBSZWFkbGluZSBMaWJyYXJ5IChSZWFkbGluZSksIGEgc2V0IG9mCisgICAgcm91dGluZXMg Zm9yIHByb3ZpZGluZyBFbWFjcyBzdHlsZSBsaW5lIGlucHV0IHRvIHByb2dyYW1zIHRoYXQgYXNr CisgICAgZm9yIGl0LgorIAorLSAgIFRoZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBSZWFkbGluZSBpcyBmcmVlIHNv ZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy LCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhl IExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwgYnV0CistICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCistICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBp cyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFsbHkg a2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBub3QK Ky0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMSBVU0EuICovCisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKworKyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrKi8KKyAKKyAjaWYgIWRlZmluZWQgKF9USUxERV9IXykKKyAjICBkZWZp bmUgX1RJTERFX0hfCistLS0gYS9yZWFkbGluZS91bmRvLmMKKysrKyBiL3JlYWRsaW5lL3VuZG8u YworQEAgLTEsMjUgKzEsMjUgQEAKKyAvKiByZWFkbGluZS5jIC0tIGEgZ2VuZXJhbCBmYWNpbGl0 eSBmb3IgcmVhZGluZyBsaW5lcyBvZiBpbnB1dAorICAgIHdpdGggZW1hY3Mgc3R5bGUgZWRpdGlu ZyBhbmQgY29tcGxldGlvbi4gKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5ODcsIDE5ODksIDE5 OTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJpZ2h0IChDKSAxOTg3 LTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgdGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5LCBhIGxpYnJhcnkgZm9yCistICAgcmVh ZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRp dGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkg KFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRo IGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisgCistICAgVGhl IEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0CistICAgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yCisrICAgUmVhZGxpbmUgaXMgZnJl ZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorIAorLSAgIFRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUKKy0gICB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5CistICAgb2YgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyAgIFJlYWRsaW5lIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgaXMgb2Z0ZW4gc2hpcHBlZCB3aXRoIEdOVSBzb2Z0d2FyZSwgYW5kCistICAgaXMgZ2VuZXJh bGx5IGtlcHQgaW4gYSBmaWxlIGNhbGxlZCBDT1BZSU5HIG9yIExJQ0VOU0UuICBJZiB5b3UgZG8g bm90CistICAgaGF2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sCistICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEgMDIxMTEgVVNBLiAqLworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGlu ZS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworKwor ICNkZWZpbmUgUkVBRExJTkVfTElCUkFSWQorIAorICNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19I KQorQEAgLTUwLDYgKzUwLDggQEAKKyAjaW5jbHVkZSAicmxwcml2YXRlLmgiCisgI2luY2x1ZGUg InhtYWxsb2MuaCIKKyAKKytleHRlcm4gdm9pZCByZXBsYWNlX2hpc3RvcnlfZGF0YSBQQVJBTVMo KGludCwgaGlzdGRhdGFfdCAqLCBoaXN0ZGF0YV90ICopKTsKKysKKyAvKiBOb24temVybyB0ZWxs cyBybF9kZWxldGVfdGV4dCBhbmQgcmxfaW5zZXJ0X3RleHQgdG8gbm90IGFkZCB0bworICAgIHRo ZSB1bmRvIGxpc3QuICovCisgaW50IF9ybF9kb2luZ19hbl91bmRvID0gMDsKK0BAIC02NiwxOSAr NjgsMzUgQEAgVU5ET19MSVNUICpybF91bmRvX2xpc3QgPSAoVU5ET19MSVNUICopTlVMTDsKKyAv KgkJCQkJCQkJICAgICovCisgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLworIAorLS8qIFJlbWVtYmVyIGhvdyB0byB1 bmRvIHNvbWV0aGluZy4gIENvbmNhdGVuYXRlIHNvbWUgdW5kb3MgaWYgdGhhdAorLSAgIHNlZW1z IHJpZ2h0LiAqLworLXZvaWQKKy1ybF9hZGRfdW5kbyAod2hhdCwgc3RhcnQsIGVuZCwgdGV4dCkK KytzdGF0aWMgVU5ET19MSVNUICoKKythbGxvY191bmRvX2VudHJ5ICh3aGF0LCBzdGFydCwgZW5k LCB0ZXh0KQorICAgICAgZW51bSB1bmRvX2NvZGUgd2hhdDsKKyAgICAgIGludCBzdGFydCwgZW5k OworICAgICAgY2hhciAqdGV4dDsKKyB7CistICBVTkRPX0xJU1QgKnRlbXAgPSAoVU5ET19MSVNU ICopeG1hbGxvYyAoc2l6ZW9mIChVTkRPX0xJU1QpKTsKKysgIFVORE9fTElTVCAqdGVtcDsKKysK KysgIHRlbXAgPSAoVU5ET19MSVNUICopeG1hbGxvYyAoc2l6ZW9mIChVTkRPX0xJU1QpKTsKKyAg IHRlbXAtPndoYXQgPSB3aGF0OworICAgdGVtcC0+c3RhcnQgPSBzdGFydDsKKyAgIHRlbXAtPmVu ZCA9IGVuZDsKKyAgIHRlbXAtPnRleHQgPSB0ZXh0OworKworKyAgdGVtcC0+bmV4dCA9IChVTkRP X0xJU1QgKilOVUxMOworKyAgcmV0dXJuIHRlbXA7CisrfQorKworKy8qIFJlbWVtYmVyIGhvdyB0 byB1bmRvIHNvbWV0aGluZy4gIENvbmNhdGVuYXRlIHNvbWUgdW5kb3MgaWYgdGhhdAorKyAgIHNl ZW1zIHJpZ2h0LiAqLworK3ZvaWQKKytybF9hZGRfdW5kbyAod2hhdCwgc3RhcnQsIGVuZCwgdGV4 dCkKKysgICAgIGVudW0gdW5kb19jb2RlIHdoYXQ7CisrICAgICBpbnQgc3RhcnQsIGVuZDsKKysg ICAgIGNoYXIgKnRleHQ7CisreworKyAgVU5ET19MSVNUICp0ZW1wOworKworKyAgdGVtcCA9IGFs bG9jX3VuZG9fZW50cnkgKHdoYXQsIHN0YXJ0LCBlbmQsIHRleHQpOworICAgdGVtcC0+bmV4dCA9 IHJsX3VuZG9fbGlzdDsKKyAgIHJsX3VuZG9fbGlzdCA9IHRlbXA7CisgfQorQEAgLTg3LDE3ICsx MDUsNjAgQEAgcmxfYWRkX3VuZG8gKHdoYXQsIHN0YXJ0LCBlbmQsIHRleHQpCisgdm9pZAorIHJs X2ZyZWVfdW5kb19saXN0ICgpCisgeworKyAgVU5ET19MSVNUICpyZWxlYXNlLCAqb3JpZ19saXN0 OworKworKyAgb3JpZ19saXN0ID0gcmxfdW5kb19saXN0OworICAgd2hpbGUgKHJsX3VuZG9fbGlz dCkKKyAgICAgeworLSAgICAgIFVORE9fTElTVCAqcmVsZWFzZSA9IHJsX3VuZG9fbGlzdDsKKysg ICAgICByZWxlYXNlID0gcmxfdW5kb19saXN0OworICAgICAgIHJsX3VuZG9fbGlzdCA9IHJsX3Vu ZG9fbGlzdC0+bmV4dDsKKyAKKyAgICAgICBpZiAocmVsZWFzZS0+d2hhdCA9PSBVTkRPX0RFTEVU RSkKKy0JZnJlZSAocmVsZWFzZS0+dGV4dCk7CisrCXhmcmVlIChyZWxlYXNlLT50ZXh0KTsKKyAK Ky0gICAgICBmcmVlIChyZWxlYXNlKTsKKysgICAgICB4ZnJlZSAocmVsZWFzZSk7CisgICAgIH0K KyAgIHJsX3VuZG9fbGlzdCA9IChVTkRPX0xJU1QgKilOVUxMOworKyAgcmVwbGFjZV9oaXN0b3J5 X2RhdGEgKC0xLCAoaGlzdGRhdGFfdCAqKW9yaWdfbGlzdCwgKGhpc3RkYXRhX3QgKilOVUxMKTsK Kyt9CisrCisrVU5ET19MSVNUICoKKytfcmxfY29weV91bmRvX2VudHJ5IChlbnRyeSkKKysgICAg IFVORE9fTElTVCAqZW50cnk7CisreworKyAgVU5ET19MSVNUICpuZXc7CisrCisrICBuZXcgPSBh bGxvY191bmRvX2VudHJ5IChlbnRyeS0+d2hhdCwgZW50cnktPnN0YXJ0LCBlbnRyeS0+ZW5kLCAo Y2hhciAqKU5VTEwpOworKyAgbmV3LT50ZXh0ID0gZW50cnktPnRleHQgPyBzYXZlc3RyaW5nIChl bnRyeS0+dGV4dCkgOiAwOworKyAgcmV0dXJuIG5ldzsKKyt9CisrCisrVU5ET19MSVNUICoKKytf cmxfY29weV91bmRvX2xpc3QgKGhlYWQpCisrICAgICBVTkRPX0xJU1QgKmhlYWQ7CisreworKyAg VU5ET19MSVNUICpsaXN0LCAqbmV3LCAqcm92aW5nLCAqYzsKKysKKysgIGlmIChoZWFkID09IDAp CisrICAgIHJldHVybiBoZWFkOworKworKyAgbGlzdCA9IGhlYWQ7CisrICBuZXcgPSAwOworKyAg d2hpbGUgKGxpc3QpCisrICAgIHsKKysgICAgICBjID0gX3JsX2NvcHlfdW5kb19lbnRyeSAobGlz dCk7CisrICAgICAgaWYgKG5ldyA9PSAwKQorKwlyb3ZpbmcgPSBuZXcgPSBjOworKyAgICAgIGVs c2UKKysJeworKwkgIHJvdmluZy0+bmV4dCA9IGM7CisrCSAgcm92aW5nID0gcm92aW5nLT5uZXh0 OworKwl9CisrICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7CisrICAgIH0KKysKKysgIHJvdmluZy0+ bmV4dCA9IDA7CisrICByZXR1cm4gbmV3OworIH0KKyAKKyAvKiBVbmRvIHRoZSBuZXh0IHRoaW5n IGluIHRoZSBsaXN0LiAgUmV0dXJuIDAgaWYgdGhlcmUKK0BAIC0xMTMsNyArMTc0LDcgQEAgcmxf ZG9fdW5kbyAoKQorICAgc3RhcnQgPSBlbmQgPSB3YWl0aW5nX2Zvcl9iZWdpbiA9IDA7CisgICBk bworICAgICB7CistICAgICAgaWYgKCFybF91bmRvX2xpc3QpCisrICAgICAgaWYgKHJsX3VuZG9f bGlzdCA9PSAwKQorIAlyZXR1cm4gKDApOworIAorICAgICAgIF9ybF9kb2luZ19hbl91bmRvID0g MTsKK0BAIC0xMzMsNyArMTk0LDcgQEAgcmxfZG9fdW5kbyAoKQorIAljYXNlIFVORE9fREVMRVRF OgorIAkgIHJsX3BvaW50ID0gc3RhcnQ7CisgCSAgcmxfaW5zZXJ0X3RleHQgKHJsX3VuZG9fbGlz dC0+dGV4dCk7CistCSAgZnJlZSAocmxfdW5kb19saXN0LT50ZXh0KTsKKysJICB4ZnJlZSAocmxf dW5kb19saXN0LT50ZXh0KTsKKyAJICBicmVhazsKKyAKKyAJLyogVW5kb2luZyBpbnNlcnRzIG1l YW5zIGRlbGV0aW5nIHNvbWUgdGV4dC4gKi8KK0BAIC0xNjEsNyArMjIyLDkgQEAgcmxfZG9fdW5k byAoKQorIAorICAgICAgIHJlbGVhc2UgPSBybF91bmRvX2xpc3Q7CisgICAgICAgcmxfdW5kb19s aXN0ID0gcmxfdW5kb19saXN0LT5uZXh0OworLSAgICAgIGZyZWUgKHJlbGVhc2UpOworKyAgICAg IHJlcGxhY2VfaGlzdG9yeV9kYXRhICgtMSwgKGhpc3RkYXRhX3QgKilyZWxlYXNlLCAoaGlzdGRh dGFfdCAqKXJsX3VuZG9fbGlzdCk7CisrCisrICAgICAgeGZyZWUgKHJlbGVhc2UpOworICAgICB9 CisgICB3aGlsZSAod2FpdGluZ19mb3JfYmVnaW4pOworIAorQEAgLTIzMSw3ICsyOTQsNyBAQCBp bnQKKyBybF9yZXZlcnRfbGluZSAoY291bnQsIGtleSkKKyAgICAgIGludCBjb3VudCwga2V5Owor IHsKKy0gIGlmICghcmxfdW5kb19saXN0KQorKyAgaWYgKHJsX3VuZG9fbGlzdCA9PSAwKQorICAg ICBybF9kaW5nICgpOworICAgZWxzZQorICAgICB7CistLS0gYS9yZWFkbGluZS91dGlsLmMKKysr KyBiL3JlYWRsaW5lL3V0aWwuYworQEAgLTEsMjQgKzEsMjQgQEAKKyAvKiB1dGlsLmMgLS0gcmVh ZGxpbmUgdXRpbGl0eSBmdW5jdGlvbnMgKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5ODctMjAw NSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDE5ODct MjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKKy0gICByZWFk aW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBlZGl0 aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFyeSAo UmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdpdGgg aW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKKyAKKy0gICBUaGUg R05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBmcmVl IHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr ICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5lcmFs bHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBkbyBu b3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRsaW5l LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisrCisg I2RlZmluZSBSRUFETElORV9MSUJSQVJZCisgCisgI2lmIGRlZmluZWQgKEhBVkVfQ09ORklHX0gp CitAQCAtNjYsNyArNjYsNyBAQAorICAgIGluIHdvcmRzLCBvciAxIGlmIGl0IGlzLiAqLworIAor IGludCBfcmxfYWxsb3dfcGF0aG5hbWVfYWxwaGFiZXRpY19jaGFycyA9IDA7Cistc3RhdGljIGNv bnN0IGNoYXIgKnBhdGhuYW1lX2FscGhhYmV0aWNfY2hhcnMgPSAiLy1fPX4uIyQiOworK3N0YXRp YyBjb25zdCBjaGFyICogY29uc3QgcGF0aG5hbWVfYWxwaGFiZXRpY19jaGFycyA9ICIvLV89fi4j JCI7CisgCisgaW50CisgcmxfYWxwaGFiZXRpYyAoYykKK0BAIC04MSw4ICs4MSw3IEBAIHJsX2Fs cGhhYmV0aWMgKGMpCisgCisgI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCisgaW50Cist X3JsX3dhbHBoYWJldGljICh3YykKKy0gICAgIHdjaGFyX3Qgd2M7CisrX3JsX3dhbHBoYWJldGlj ICh3Y2hhcl90IHdjKQorIHsKKyAgIGludCBjOworIAorQEAgLTEwOSw3ICsxMDgsNyBAQCBfcmxf YWJvcnRfaW50ZXJuYWwgKCkKKyAgICAgX3JsX3BvcF9leGVjdXRpbmdfbWFjcm8gKCk7CisgCisg ICBybF9sYXN0X2Z1bmMgPSAocmxfY29tbWFuZF9mdW5jX3QgKilOVUxMOworLSAgbG9uZ2ptcCAo cmVhZGxpbmVfdG9wX2xldmVsLCAxKTsKKysgIGxvbmdqbXAgKF9ybF90b3BfbGV2ZWwsIDEpOwor ICAgcmV0dXJuICgwKTsKKyB9CisgCitAQCAtMTIxLDYgKzEyMCwxMyBAQCBybF9hYm9ydCAoY291 bnQsIGtleSkKKyB9CisgCisgaW50CisrX3JsX251bGxfZnVuY3Rpb24gKGNvdW50LCBrZXkpCisr ICAgICBpbnQgY291bnQsIGtleTsKKyt7CisrICByZXR1cm4gMDsKKyt9CisrCisraW50Cisgcmxf dHR5X3N0YXR1cyAoY291bnQsIGtleSkKKyAgICAgIGludCBjb3VudCwga2V5OworIHsKK0BAIC0x ODUsNiArMTkxLDcgQEAgcmxfdGlsZGVfZXhwYW5kIChpZ25vcmUsIGtleSkKKyAgICAgeworICAg ICAgIGhvbWVkaXIgPSB0aWxkZV9leHBhbmQgKCJ+Iik7CisgICAgICAgX3JsX3JlcGxhY2VfdGV4 dCAoaG9tZWRpciwgc3RhcnQsIGVuZCk7CisrICAgICAgeGZyZWUgKGhvbWVkaXIpOworICAgICAg IHJldHVybiAoMCk7CisgICAgIH0KKyAgIGVsc2UgaWYgKHJsX2xpbmVfYnVmZmVyW3N0YXJ0XSAh PSAnficpCitAQCAtMjEyLDE0ICsyMTksOTYgQEAgcmxfdGlsZGVfZXhwYW5kIChpZ25vcmUsIGtl eSkKKyAgICAgICBzdHJuY3B5ICh0ZW1wLCBybF9saW5lX2J1ZmZlciArIHN0YXJ0LCBsZW4pOwor ICAgICAgIHRlbXBbbGVuXSA9ICdcMCc7CisgICAgICAgaG9tZWRpciA9IHRpbGRlX2V4cGFuZCAo dGVtcCk7CistICAgICAgZnJlZSAodGVtcCk7CisrICAgICAgeGZyZWUgKHRlbXApOworIAorICAg ICAgIF9ybF9yZXBsYWNlX3RleHQgKGhvbWVkaXIsIHN0YXJ0LCBlbmQpOworKyAgICAgIHhmcmVl IChob21lZGlyKTsKKyAgICAgfQorIAorICAgcmV0dXJuICgwKTsKKyB9CisgCisrI2lmIGRlZmlu ZWQgKFVTRV9WQVJBUkdTKQorK3ZvaWQKKysjaWYgZGVmaW5lZCAoUFJFRkVSX1NUREFSRykKKytf cmxfdHR5bXNnIChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKKysjZWxzZQorK19ybF90dHltc2cg KHZhX2FsaXN0KQorKyAgICAgdmFfZGNsCisrI2VuZGlmCisreworKyAgdmFfbGlzdCBhcmdzOwor KyNpZiBkZWZpbmVkIChQUkVGRVJfVkFSQVJHUykKKysgIGNoYXIgKmZvcm1hdDsKKysjZW5kaWYK KysKKysjaWYgZGVmaW5lZCAoUFJFRkVSX1NUREFSRykKKysgIHZhX3N0YXJ0IChhcmdzLCBmb3Jt YXQpOworKyNlbHNlCisrICB2YV9zdGFydCAoYXJncyk7CisrICBmb3JtYXQgPSB2YV9hcmcgKGFy Z3MsIGNoYXIgKik7CisrI2VuZGlmCisrCisrICBmcHJpbnRmIChzdGRlcnIsICJyZWFkbGluZTog Iik7CisrICB2ZnByaW50ZiAoc3RkZXJyLCBmb3JtYXQsIGFyZ3MpOworKyAgZnByaW50ZiAoc3Rk ZXJyLCAiXG4iKTsKKysgIGZmbHVzaCAoc3RkZXJyKTsKKysKKysgIHZhX2VuZCAoYXJncyk7Cisr CisrICBybF9mb3JjZWRfdXBkYXRlX2Rpc3BsYXkgKCk7CisrfQorKworK3ZvaWQKKysjaWYgZGVm aW5lZCAoUFJFRkVSX1NUREFSRykKKytfcmxfZXJybXNnIChjb25zdCBjaGFyICpmb3JtYXQsIC4u LikKKysjZWxzZQorK19ybF9lcnJtc2cgKHZhX2FsaXN0KQorKyAgICAgdmFfZGNsCisrI2VuZGlm CisreworKyAgdmFfbGlzdCBhcmdzOworKyNpZiBkZWZpbmVkIChQUkVGRVJfVkFSQVJHUykKKysg IGNoYXIgKmZvcm1hdDsKKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZCAoUFJFRkVSX1NUREFSRykK KysgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOworKyNlbHNlCisrICB2YV9zdGFydCAoYXJncyk7 CisrICBmb3JtYXQgPSB2YV9hcmcgKGFyZ3MsIGNoYXIgKik7CisrI2VuZGlmCisrCisrICBmcHJp bnRmIChzdGRlcnIsICJyZWFkbGluZTogIik7CisrICB2ZnByaW50ZiAoc3RkZXJyLCBmb3JtYXQs IGFyZ3MpOworKyAgZnByaW50ZiAoc3RkZXJyLCAiXG4iKTsKKysgIGZmbHVzaCAoc3RkZXJyKTsK KysKKysgIHZhX2VuZCAoYXJncyk7CisrfQorKworKyNlbHNlIC8qICFVU0VfVkFSQVJHUyAqLwor K3ZvaWQKKytfcmxfdHR5bXNnIChmb3JtYXQsIGFyZzEsIGFyZzIpCisrICAgICBjaGFyICpmb3Jt YXQ7CisreworKyAgZnByaW50ZiAoc3RkZXJyLCAicmVhZGxpbmU6ICIpOworKyAgZnByaW50ZiAo c3RkZXJyLCBmb3JtYXQsIGFyZzEsIGFyZzIpOworKyAgZnByaW50ZiAoc3RkZXJyLCAiXG4iKTsK KysKKysgIHJsX2ZvcmNlZF91cGRhdGVfZGlzcGxheSAoKTsKKyt9CisrCisrdm9pZAorK19ybF9l cnJtc2cgKGZvcm1hdCwgYXJnMSwgYXJnMikKKysgICAgIGNoYXIgKmZvcm1hdDsKKyt7CisrICBm cHJpbnRmIChzdGRlcnIsICJyZWFkbGluZTogIik7CisrICBmcHJpbnRmIChzdGRlcnIsIGZvcm1h dCwgYXJnMSwgYXJnMik7CisrICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOworK30KKysjZW5kaWYg LyogIVVTRV9WQVJBUkdTICovCisrCisgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLworIC8qCQkJCQkJCQkgICAgKi8K KyAvKgkJCVN0cmluZyBVdGlsaXR5IEZ1bmN0aW9ucwkJICAgICovCitAQCAtMjc3LDQxICszNjYs NTYgQEAgX3JsX3N0cnBicmsgKHN0cmluZzEsIHN0cmluZzIpCisgCisgI2lmICFkZWZpbmVkIChI QVZFX1NUUkNBU0VDTVApCisgLyogQ29tcGFyZSBhdCBtb3N0IENPVU5UIGNoYXJhY3RlcnMgZnJv bSBzdHJpbmcxIHRvIHN0cmluZzIuICBDYXNlCistICAgZG9lc24ndCBtYXR0ZXIuICovCisrICAg ZG9lc24ndCBtYXR0ZXIgKHN0cm5jYXNlY21wKS4gKi8KKyBpbnQKKyBfcmxfc3RybmljbXAgKHN0 cmluZzEsIHN0cmluZzIsIGNvdW50KQorICAgICAgY2hhciAqc3RyaW5nMSwgKnN0cmluZzI7Cisg ICAgICBpbnQgY291bnQ7CisgeworLSAgcmVnaXN0ZXIgY2hhciBjaDEsIGNoMjsKKysgIHJlZ2lz dGVyIGNoYXIgKnMxLCAqczI7CisrICBpbnQgZDsKKyAKKy0gIHdoaWxlIChjb3VudCkKKysgIGlm IChjb3VudCA8PSAwIHx8IChzdHJpbmcxID09IHN0cmluZzIpKQorKyAgICByZXR1cm4gMDsKKysK KysgIHMxID0gc3RyaW5nMTsKKysgIHMyID0gc3RyaW5nMjsKKysgIGRvCisgICAgIHsKKy0gICAg ICBjaDEgPSAqc3RyaW5nMSsrOworLSAgICAgIGNoMiA9ICpzdHJpbmcyKys7CistICAgICAgaWYg KF9ybF90b191cHBlcihjaDEpID09IF9ybF90b191cHBlcihjaDIpKQorLQljb3VudC0tOworLSAg ICAgIGVsc2UKKysgICAgICBkID0gX3JsX3RvX2xvd2VyICgqczEpIC0gX3JsX3RvX2xvd2VyICgq czIpOwkvKiBYWFggLSBjYXN0IHRvIHVuc2lnbmVkIGNoYXI/ICovCisrICAgICAgaWYgKGQgIT0g MCkKKysJcmV0dXJuIGQ7CisrICAgICAgaWYgKCpzMSsrID09ICdcMCcpCisgICAgICAgICBicmVh azsKKysgICAgICBzMisrOworICAgICB9CistICByZXR1cm4gKGNvdW50KTsKKysgIHdoaWxlICgt LWNvdW50ICE9IDApCisrCisrICByZXR1cm4gKDApOworIH0KKyAKKy0vKiBzdHJjbXAgKCksIGJ1 dCBjYXNlbGVzcy4gKi8KKysvKiBzdHJjbXAgKCksIGJ1dCBjYXNlbGVzcyAoc3RyY2FzZWNtcCku ICovCisgaW50CisgX3JsX3N0cmljbXAgKHN0cmluZzEsIHN0cmluZzIpCisgICAgICBjaGFyICpz dHJpbmcxLCAqc3RyaW5nMjsKKyB7CistICByZWdpc3RlciBjaGFyIGNoMSwgY2gyOworKyAgcmVn aXN0ZXIgY2hhciAqczEsICpzMjsKKysgIGludCBkOworKworKyAgczEgPSBzdHJpbmcxOworKyAg czIgPSBzdHJpbmcyOworIAorLSAgd2hpbGUgKCpzdHJpbmcxICYmICpzdHJpbmcyKQorKyAgaWYg KHMxID09IHMyKQorKyAgICByZXR1cm4gMDsKKysKKysgIHdoaWxlICgoZCA9IF9ybF90b19sb3dl ciAoKnMxKSAtIF9ybF90b19sb3dlciAoKnMyKSkgPT0gMCkKKyAgICAgeworLSAgICAgIGNoMSA9 ICpzdHJpbmcxKys7CistICAgICAgY2gyID0gKnN0cmluZzIrKzsKKy0gICAgICBpZiAoX3JsX3Rv X3VwcGVyKGNoMSkgIT0gX3JsX3RvX3VwcGVyKGNoMikpCistCXJldHVybiAoMSk7CisrICAgICAg aWYgKCpzMSsrID09ICdcMCcpCisrICAgICAgICByZXR1cm4gMDsKKysgICAgICBzMisrOworICAg ICB9CistICByZXR1cm4gKCpzdHJpbmcxIC0gKnN0cmluZzIpOworKworKyAgcmV0dXJuIChkKTsK KyB9CisgI2VuZGlmIC8qICFIQVZFX1NUUkNBU0VDTVAgKi8KKyAKK0BAIC0zNDQsNiArNDQ4LDE2 IEBAIEZVTkNUSU9OX0ZPUl9NQUNSTyAoX3JsX3RvX2xvd2VyKQorIEZVTkNUSU9OX0ZPUl9NQUNS TyAoX3JsX3RvX3VwcGVyKQorIEZVTkNUSU9OX0ZPUl9NQUNSTyAoX3JsX3VwcGVyY2FzZV9wKQor IAorKy8qIEEgY29udmVuaWVuY2UgZnVuY3Rpb24sIHRvIGZvcmNlIG1lbW9yeSBkZWFsbG9jYXRp b24gdG8gYmUgcGVyZm9ybWVkCisrICAgYnkgcmVhZGxpbmUuICBETExzIG9uIFdpbmRvd3MgYXBw YXJlbnRseSByZXF1aXJlIHRoaXMuICovCisrdm9pZAorK3JsX2ZyZWUgKG1lbSkKKysgICAgIHZv aWQgKm1lbTsKKyt7CisrICBpZiAobWVtKQorKyAgICBmcmVlIChtZW0pOworK30KKysKKyAvKiBC YWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgbm93IHRoYXQgc2F2ZXN0cmluZyBoYXMgYmVlbiByZW1v dmVkIGZyb20KKyAgICBhbGwgYHB1YmxpYycgcmVhZGxpbmUgaGVhZGVyIGZpbGVzLiAqLworICN1 bmRlZiBfcmxfc2F2ZXN0cmluZworQEAgLTM1MywzICs0NjcsNjAgQEAgX3JsX3NhdmVzdHJpbmcg KHMpCisgeworICAgcmV0dXJuIChzdHJjcHkgKChjaGFyICopeG1hbGxvYyAoMSArIChpbnQpc3Ry bGVuIChzKSksIChzKSkpOworIH0KKysKKysjaWYgZGVmaW5lZCAoVVNFX1ZBUkFSR1MpCisrc3Rh dGljIEZJTEUgKl9ybF90cmFjZWZwOworKworK3ZvaWQKKysjaWYgZGVmaW5lZCAoUFJFRkVSX1NU REFSRykKKytfcmxfdHJhY2UgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQorKyNlbHNlCisrX3Js X3RyYWNlICh2YV9hbGlzdCkKKysgICAgIHZhX2RjbAorKyNlbmRpZgorK3sKKysgIHZhX2xpc3Qg YXJnczsKKysjaWYgZGVmaW5lZCAoUFJFRkVSX1ZBUkFSR1MpCisrICBjaGFyICpmb3JtYXQ7Cisr I2VuZGlmCisrCisrI2lmIGRlZmluZWQgKFBSRUZFUl9TVERBUkcpCisrICB2YV9zdGFydCAoYXJn cywgZm9ybWF0KTsKKysjZWxzZQorKyAgdmFfc3RhcnQgKGFyZ3MpOworKyAgZm9ybWF0ID0gdmFf YXJnIChhcmdzLCBjaGFyICopOworKyNlbmRpZgorKworKyAgaWYgKF9ybF90cmFjZWZwID09IDAp CisrICAgIF9ybF90cm9wZW4gKCk7CisrICB2ZnByaW50ZiAoX3JsX3RyYWNlZnAsIGZvcm1hdCwg YXJncyk7CisrICBmcHJpbnRmIChfcmxfdHJhY2VmcCwgIlxuIik7CisrICBmZmx1c2ggKF9ybF90 cmFjZWZwKTsKKysKKysgIHZhX2VuZCAoYXJncyk7CisrfQorKworK2ludAorK19ybF90cm9wZW4g KCkKKyt7CisrICBjaGFyIGZuYnVmWzEyOF07CisrCisrICBpZiAoX3JsX3RyYWNlZnApCisrICAg IGZjbG9zZSAoX3JsX3RyYWNlZnApOworKyAgc3ByaW50ZiAoZm5idWYsICIvdmFyL3RtcC9ybHRy YWNlLiVsZCIsIGdldHBpZCgpKTsKKysgIHVubGluayhmbmJ1Zik7CisrICBfcmxfdHJhY2VmcCA9 IGZvcGVuIChmbmJ1ZiwgIncrIik7CisrICByZXR1cm4gX3JsX3RyYWNlZnAgIT0gMDsKKyt9Cisr CisraW50CisrX3JsX3RyY2xvc2UgKCkKKyt7CisrICBpbnQgcjsKKysKKysgIHIgPSBmY2xvc2Ug KF9ybF90cmFjZWZwKTsKKysgIF9ybF90cmFjZWZwID0gMDsKKysgIHJldHVybiByOworK30KKysK KysjZW5kaWYKKy0tLSBhL3JlYWRsaW5lL3ZpX2tleW1hcC5jCisrKysgYi9yZWFkbGluZS92aV9r ZXltYXAuYworQEAgLTEsMjQgKzEsMjMgQEAKKyAvKiB2aV9rZXltYXAuYyAtLSB0aGUga2V5bWFw IGZvciB2aV9tb2RlIGluIHJlYWRsaW5lICgpLiAqLworIAorLS8qIENvcHlyaWdodCAoQykgMTk4 NywgMTk4OSwgMTk5MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmln aHQgKEMpIDE5ODctMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBU aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBm b3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQg aGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxp bmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBv ZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAK KyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFk bGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0g ICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0g ICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4g IElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRl IDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3 aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorKyovCisgCisgI2lmICFkZWZpbmVkIChCVUZTSVopCisgI2luY2x1ZGUgPHN0ZGlvLmg+CitA QCAtMTUxLDcgKzE1MCw3IEBAIEtFWU1BUF9FTlRSWV9BUlJBWSB2aV9tb3ZlbWVudF9rZXltYXAg PSB7CisgICB7IElTRlVOQywgcmxfdmlfY2hhcl9zZWFyY2ggfSwJCS8qIGYgKi8KKyAgIHsgSVNG VU5DLCAocmxfY29tbWFuZF9mdW5jX3QgKikweDAgfSwJCS8qIGcgKi8KKyAgIHsgSVNGVU5DLCBy bF9iYWNrd2FyZF9jaGFyIH0sCQkJLyogaCAqLworLSAgeyBJU0ZVTkMsIHJsX3ZpX2luc2VydGlv bl9tb2RlIH0sCQkvKiBpICovCisrICB7IElTRlVOQywgcmxfdmlfaW5zZXJ0X21vZGUgfSwJCS8q IGkgKi8KKyAgIHsgSVNGVU5DLCBybF9nZXRfbmV4dF9oaXN0b3J5IH0sCQkvKiBqICovCisgICB7 IElTRlVOQywgcmxfZ2V0X3ByZXZpb3VzX2hpc3RvcnkgfSwJCS8qIGsgKi8KKyAgIHsgSVNGVU5D LCBybF9mb3J3YXJkX2NoYXIgfSwJCQkvKiBsICovCitAQCAtMzI3LDkgKzMyNiw5IEBAIEtFWU1B UF9FTlRSWV9BUlJBWSB2aV9pbnNlcnRpb25fa2V5bWFwID0geworICAgeyBJU0ZVTkMsIHJsX2lu c2VydCB9LAkJCS8qIENvbnRyb2wtayAqLworICAgeyBJU0ZVTkMsIHJsX2luc2VydCB9LAkJCS8q IENvbnRyb2wtbCAqLworICAgeyBJU0ZVTkMsIHJsX25ld2xpbmUgfSwJCQkvKiBDb250cm9sLW0g Ki8KKy0gIHsgSVNGVU5DLCBybF9pbnNlcnQgfSwJCQkvKiBDb250cm9sLW4gKi8KKysgIHsgSVNG VU5DLCBybF9tZW51X2NvbXBsZXRlfSwJCQkvKiBDb250cm9sLW4gKi8KKyAgIHsgSVNGVU5DLCBy bF9pbnNlcnQgfSwJCQkvKiBDb250cm9sLW8gKi8KKy0gIHsgSVNGVU5DLCBybF9pbnNlcnQgfSwJ CQkvKiBDb250cm9sLXAgKi8KKysgIHsgSVNGVU5DLCBybF9iYWNrd2FyZF9tZW51X2NvbXBsZXRl IH0sCS8qIENvbnRyb2wtcCAqLworICAgeyBJU0ZVTkMsIHJsX2luc2VydCB9LAkJCS8qIENvbnRy b2wtcSAqLworICAgeyBJU0ZVTkMsIHJsX3JldmVyc2Vfc2VhcmNoX2hpc3RvcnkgfSwJLyogQ29u dHJvbC1yICovCisgICB7IElTRlVOQywgcmxfZm9yd2FyZF9zZWFyY2hfaGlzdG9yeSB9LAkvKiBD b250cm9sLXMgKi8KKy0tLSBhL3JlYWRsaW5lL3ZpX21vZGUuYworKysrIGIvcmVhZGxpbmUvdmlf bW9kZS5jCitAQCAtMSwyNSArMSwyNSBAQAorIC8qIHZpX21vZGUuYyAtLSBBIHZpIGVtdWxhdGlv biBtb2RlIGZvciBCYXNoLgorICAgIERlcml2ZWQgZnJvbSBjb2RlIHdyaXR0ZW4gYnkgSmVmZiBT cGFya2VzIChqc3Bhcmtlc0BibnIuY2EpLiAgKi8KKyAKKy0vKiBDb3B5cmlnaHQgKEMpIDE5ODct MjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBDb3B5cmlnaHQgKEMpIDE5 ODctMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAKKy0gICBUaGlzIGZpbGUg aXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGlicmFyeSBmb3IKKy0gICBy ZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1dCBhbmQgaGlzdG9yeSBl ZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUgTGlicmFy eSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0ZXh0IHdp dGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKKyAKKy0gICBU aGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysgICBSZWFkbGluZSBpcyBm cmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkKKy0gICBvZiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBhbmQKKy0gICBpcyBnZW5l cmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElDRU5TRS4gIElmIHlvdSBk byBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIFJlYWRs aW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyovCisr CisgI2RlZmluZSBSRUFETElORV9MSUJSQVJZCisgCisgLyogKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLworQEAgLTY1LDEx ICs2NSwxMyBAQAorIAorIGludCBfcmxfdmlfbGFzdF9jb21tYW5kID0gJ2knOwkvKiBkZWZhdWx0 IGAuJyBwdXRzIHlvdSBpbiBpbnNlcnQgbW9kZSAqLworIAorK19ybF92aW1vdGlvbl9jeHQgKl9y bF92aW12Y3h0ID0gMDsKKysKKyAvKiBOb24temVybyBtZWFucyBlbnRlciBpbnNlcnRpb24gbW9k ZS4gKi8KKyBzdGF0aWMgaW50IF9ybF92aV9kb2luZ19pbnNlcnQ7CisgCisgLyogQ29tbWFuZCBr ZXlzIHdoaWNoIGRvIG1vdmVtZW50IGZvciB4eHhfdG8gY29tbWFuZHMuICovCistc3RhdGljIGNv bnN0IGNoYXIgKnZpX21vdGlvbiA9ICIgaGxeJDBmdEZUOywld2JlV0JFfCI7Cisrc3RhdGljIGNv bnN0IGNoYXIgKiBjb25zdCB2aV9tb3Rpb24gPSAiIGhsXiQwZnRGVDssJXdiZVdCRXxgIjsKKyAK KyAvKiBLZXltYXAgdXNlZCBmb3IgdmkgcmVwbGFjZSBjaGFyYWN0ZXJzLiAgQ3JlYXRlZCBkeW5h bWljYWxseSBzaW5jZQorICAgIHJhcmVseSB1c2VkLiAqLworQEAgLTEwMSw3ICsxMDMsNyBAQCBz dGF0aWMgaW50IF9ybF92aV9sYXN0X2tleV9iZWZvcmVfaW5zZXJ0OworIHN0YXRpYyBpbnQgdmlf cmVkb2luZzsKKyAKKyAvKiBUZXh0IG1vZGlmaWNhdGlvbiBjb21tYW5kcy4gIFRoZXNlIGFyZSB0 aGUgYHJlZG9hYmxlJyBjb21tYW5kcy4gKi8KKy1zdGF0aWMgY29uc3QgY2hhciAqdmlfdGV4dG1v ZCA9ICJfKlxcQWFJaUNjRGRQcFl5UnJTc1h4fiI7Cisrc3RhdGljIGNvbnN0IGNoYXIgKiBjb25z dCB2aV90ZXh0bW9kID0gIl8qXFxBYUlpQ2NEZFBwWXlSclNzWHh+IjsKKyAKKyAvKiBBcnJheXMg Zm9yIHRoZSBzYXZlZCBtYXJrcy4gKi8KKyBzdGF0aWMgaW50IHZpX21hcmtfY2hhcnNbJ3onIC0g J2EnICsgMV07CitAQCAtMTA5LDEyICsxMTEsMTYgQEAgc3RhdGljIGludCB2aV9tYXJrX2NoYXJz Wyd6JyAtICdhJyArIDFdOworIHN0YXRpYyB2b2lkIF9ybF92aV9zdHVmZl9pbnNlcnQgUEFSQU1T KChpbnQpKTsKKyBzdGF0aWMgdm9pZCBfcmxfdmlfc2F2ZV9pbnNlcnQgUEFSQU1TKChVTkRPX0xJ U1QgKikpOworIAorK3N0YXRpYyB2b2lkIF9ybF92aV9iYWNrdXAgUEFSQU1TKCh2b2lkKSk7Cisr Cisgc3RhdGljIGludCBfcmxfdmlfYXJnX2Rpc3BhdGNoIFBBUkFNUygoaW50KSk7Cisgc3RhdGlj IGludCBybF9kaWdpdF9sb29wMSBQQVJBTVMoKHZvaWQpKTsKKyAKKyBzdGF0aWMgaW50IF9ybF92 aV9zZXRfbWFyayBQQVJBTVMoKHZvaWQpKTsKKyBzdGF0aWMgaW50IF9ybF92aV9nb3RvX21hcmsg UEFSQU1TKCh2b2lkKSk7CisgCisrc3RhdGljIHZvaWQgX3JsX3ZpX2FwcGVuZF9mb3J3YXJkIFBB UkFNUygoaW50KSk7CisrCisgc3RhdGljIGludCBfcmxfdmlfY2FsbGJhY2tfZ2V0Y2hhciBQQVJB TVMoKGNoYXIgKiwgaW50KSk7CisgCisgI2lmIGRlZmluZWQgKFJFQURMSU5FX0NBTExCQUNLUykK K0BAIC0xMjQsMTIgKzEzMCwyMyBAQCBzdGF0aWMgaW50IF9ybF92aV9jYWxsYmFja19jaGFuZ2Vf Y2hhciBQQVJBTVMoKF9ybF9jYWxsYmFja19nZW5lcmljX2FyZyAqKSk7Cisgc3RhdGljIGludCBf cmxfdmlfY2FsbGJhY2tfY2hhcl9zZWFyY2ggUEFSQU1TKChfcmxfY2FsbGJhY2tfZ2VuZXJpY19h cmcgKikpOworICNlbmRpZgorIAorK3N0YXRpYyBpbnQgcmxfZG9tb3ZlX3JlYWRfY2FsbGJhY2sg UEFSQU1TKChfcmxfdmltb3Rpb25fY3h0ICopKTsKKytzdGF0aWMgaW50IHJsX2RvbW92ZV9tb3Rp b25fY2FsbGJhY2sgUEFSQU1TKChfcmxfdmltb3Rpb25fY3h0ICopKTsKKytzdGF0aWMgaW50IHJs X3ZpX2RvbW92ZV9nZXRjaGFyIFBBUkFNUygoX3JsX3ZpbW90aW9uX2N4dCAqKSk7CisrCisrc3Rh dGljIGludCB2aV9jaGFuZ2VfZGlzcGF0Y2ggUEFSQU1TKChfcmxfdmltb3Rpb25fY3h0ICopKTsK KytzdGF0aWMgaW50IHZpX2RlbGV0ZV9kaXNwYXRjaCBQQVJBTVMoKF9ybF92aW1vdGlvbl9jeHQg KikpOworK3N0YXRpYyBpbnQgdmlfeWFua19kaXNwYXRjaCBQQVJBTVMoKF9ybF92aW1vdGlvbl9j eHQgKikpOworKworK3N0YXRpYyBpbnQgdmlkb21vdmVfZGlzcGF0Y2ggUEFSQU1TKChfcmxfdmlt b3Rpb25fY3h0ICopKTsKKysKKyB2b2lkCisgX3JsX3ZpX2luaXRpYWxpemVfbGluZSAoKQorIHsK Ky0gIHJlZ2lzdGVyIGludCBpOworKyAgcmVnaXN0ZXIgaW50IGksIG47CisgCistICBmb3IgKGkg PSAwOyBpIDwgc2l6ZW9mICh2aV9tYXJrX2NoYXJzKSAvIHNpemVvZiAoaW50KTsgaSsrKQorKyAg biA9IHNpemVvZiAodmlfbWFya19jaGFycykgLyBzaXplb2YgKHZpX21hcmtfY2hhcnNbMF0pOwor KyAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKyAgICAgdmlfbWFya19jaGFyc1tpXSA9IC0xOwor IAorICAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9WSUNNRE9OQ0UpOworQEAgLTIwNSw3ICsyMjIs MzQgQEAgcmxfdmlfcmVkbyAoY291bnQsIGMpCisgICAgICAgX3JsX3ZpX3N0dWZmX2luc2VydCAo Y291bnQpOworICAgICAgIC8qIEFuZCBiYWNrIHVwIHBvaW50IG92ZXIgdGhlIGxhc3QgY2hhcmFj dGVyIGluc2VydGVkLiAqLworICAgICAgIGlmIChybF9wb2ludCA+IDApCistCXJsX3BvaW50LS07 CisrCV9ybF92aV9iYWNrdXAgKCk7CisrICAgIH0KKysgIC8qIERpdHRvIGZvciByZWRvaW5nIGFu IGluc2VydCB3aXRoIGBJJywgYnV0IG1vdmUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUKKysgICAg IGxpbmUgbGlrZSB0aGUgYEknIGNvbW1hbmQgZG9lcy4gKi8KKysgIGVsc2UgaWYgKF9ybF92aV9s YXN0X2NvbW1hbmQgPT0gJ0knICYmIHZpX2luc2VydF9idWZmZXIgJiYgKnZpX2luc2VydF9idWZm ZXIpCisrICAgIHsKKysgICAgICBybF9iZWdfb2ZfbGluZSAoMSwgJ0knKTsKKysgICAgICBfcmxf dmlfc3R1ZmZfaW5zZXJ0IChjb3VudCk7CisrICAgICAgaWYgKHJsX3BvaW50ID4gMCkKKysJX3Js X3ZpX2JhY2t1cCAoKTsKKysgICAgfQorKyAgLyogRGl0dG8gZm9yIHJlZG9pbmcgYW4gaW5zZXJ0 IHdpdGggYGEnLCBidXQgbW92ZSBmb3J3YXJkIGEgY2hhcmFjdGVyIGZpcnN0CisrICAgICBsaWtl IHRoZSBgYScgY29tbWFuZCBkb2VzLiAqLworKyAgZWxzZSBpZiAoX3JsX3ZpX2xhc3RfY29tbWFu ZCA9PSAnYScgJiYgdmlfaW5zZXJ0X2J1ZmZlciAmJiAqdmlfaW5zZXJ0X2J1ZmZlcikKKysgICAg eworKyAgICAgIF9ybF92aV9hcHBlbmRfZm9yd2FyZCAoJ2EnKTsKKysgICAgICBfcmxfdmlfc3R1 ZmZfaW5zZXJ0IChjb3VudCk7CisrICAgICAgaWYgKHJsX3BvaW50ID4gMCkKKysJX3JsX3ZpX2Jh Y2t1cCAoKTsKKysgICAgfQorKyAgLyogRGl0dG8gZm9yIHJlZG9pbmcgYW4gaW5zZXJ0IHdpdGgg YEEnLCBidXQgbW92ZSB0byB0aGUgZW5kIG9mIHRoZSBsaW5lCisrICAgICBsaWtlIHRoZSBgQScg Y29tbWFuZCBkb2VzLiAqLworKyAgZWxzZSBpZiAoX3JsX3ZpX2xhc3RfY29tbWFuZCA9PSAnQScg JiYgdmlfaW5zZXJ0X2J1ZmZlciAmJiAqdmlfaW5zZXJ0X2J1ZmZlcikKKysgICAgeworKyAgICAg IHJsX2VuZF9vZl9saW5lICgxLCAnQScpOworKyAgICAgIF9ybF92aV9zdHVmZl9pbnNlcnQgKGNv dW50KTsKKysgICAgICBpZiAocmxfcG9pbnQgPiAwKQorKwlfcmxfdmlfYmFja3VwICgpOworICAg ICB9CisgICBlbHNlCisgICAgIHIgPSBfcmxfZGlzcGF0Y2ggKF9ybF92aV9sYXN0X2NvbW1hbmQs IF9ybF9rZXltYXApOworQEAgLTU3MSwyNyArNjE1LDQwIEBAIHJsX3ZpX2luc2VydF9iZWcgKGNv dW50LCBrZXkpCisgICAgICBpbnQgY291bnQsIGtleTsKKyB7CisgICBybF9iZWdfb2ZfbGluZSAo MSwga2V5KTsKKy0gIHJsX3ZpX2luc2VydGlvbl9tb2RlICgxLCBrZXkpOworKyAgcmxfdmlfaW5z ZXJ0X21vZGUgKDEsIGtleSk7CisgICByZXR1cm4gKDApOworIH0KKyAKKy1pbnQKKy1ybF92aV9h cHBlbmRfbW9kZSAoY291bnQsIGtleSkKKy0gICAgIGludCBjb3VudCwga2V5OworK3N0YXRpYyB2 b2lkCisrX3JsX3ZpX2FwcGVuZF9mb3J3YXJkIChrZXkpCisrICAgICBpbnQga2V5OworIHsKKysg IGludCBwb2ludDsKKysKKyAgIGlmIChybF9wb2ludCA8IHJsX2VuZCkKKyAgICAgeworICAgICAg IGlmIChNQl9DVVJfTUFYID09IDEgfHwgcmxfYnl0ZV9vcmllbnRlZCkKKyAJcmxfcG9pbnQrKzsK KyAgICAgICBlbHNlCistICAgICAgICB7CistICAgICAgICAgIGludCBwb2ludCA9IHJsX3BvaW50 OworLSAgICAgICAgICBybF9mb3J3YXJkX2NoYXIgKDEsIGtleSk7CistICAgICAgICAgIGlmIChw b2ludCA9PSBybF9wb2ludCkKKy0gICAgICAgICAgICBybF9wb2ludCA9IHJsX2VuZDsKKy0gICAg ICAgIH0KKysJeworKwkgIHBvaW50ID0gcmxfcG9pbnQ7CisrI2lmIDAKKysJICBybF9mb3J3YXJk X2NoYXIgKDEsIGtleSk7CisrI2Vsc2UKKysJICBybF9wb2ludCA9IF9ybF9mb3J3YXJkX2NoYXJf aW50ZXJuYWwgKDEpOworKyNlbmRpZgorKwkgIGlmIChwb2ludCA9PSBybF9wb2ludCkKKysJICAg IHJsX3BvaW50ID0gcmxfZW5kOworKwl9CisgICAgIH0KKy0gIHJsX3ZpX2luc2VydGlvbl9tb2Rl ICgxLCBrZXkpOworK30KKysKKytpbnQKKytybF92aV9hcHBlbmRfbW9kZSAoY291bnQsIGtleSkK KysgICAgIGludCBjb3VudCwga2V5OworK3sKKysgIF9ybF92aV9hcHBlbmRfZm9yd2FyZCAoa2V5 KTsKKysgIHJsX3ZpX3N0YXJ0X2luc2VydGluZyAoa2V5LCAxLCBybF9hcmdfc2lnbik7CisgICBy ZXR1cm4gKDApOworIH0KKyAKK0BAIC02MjUsMTMgKzY4MiwyMSBAQCBybF92aV9pbnNlcnRpb25f bW9kZSAoY291bnQsIGtleSkKKyAgIHJldHVybiAoMCk7CisgfQorIAorK2ludAorK3JsX3ZpX2lu c2VydF9tb2RlIChjb3VudCwga2V5KQorKyAgICAgaW50IGNvdW50LCBrZXk7CisreworKyAgcmxf dmlfc3RhcnRfaW5zZXJ0aW5nIChrZXksIDEsIHJsX2FyZ19zaWduKTsKKysgIHJldHVybiAoMCk7 CisrfQorKworIHN0YXRpYyB2b2lkCisgX3JsX3ZpX3NhdmVfaW5zZXJ0ICh1cCkKKyAgICAgICBV TkRPX0xJU1QgKnVwOworIHsKKyAgIGludCBsZW4sIHN0YXJ0LCBlbmQ7CisgCistICBpZiAodXAg PT0gMCkKKysgIGlmICh1cCA9PSAwIHx8IHVwLT53aGF0ICE9IFVORE9fSU5TRVJUKQorICAgICB7 CisgICAgICAgaWYgKHZpX2luc2VydF9idWZmZXJfc2l6ZSA+PSAxKQorIAl2aV9pbnNlcnRfYnVm ZmVyWzBdID0gJ1wwJzsKK0BAIC02NjgsOCArNzMzLDExIEBAIF9ybF92aV9kb25lX2luc2VydGlu ZyAoKQorICAgICB9CisgICBlbHNlCisgICAgIHsKKy0gICAgICBpZiAoKF9ybF92aV9sYXN0X2tl eV9iZWZvcmVfaW5zZXJ0ID09ICdpJyB8fCBfcmxfdmlfbGFzdF9rZXlfYmVmb3JlX2luc2VydCA9 PSAnYScpICYmIHJsX3VuZG9fbGlzdCkKKy0gICAgICAgIF9ybF92aV9zYXZlX2luc2VydCAocmxf dW5kb19saXN0KTsKKysgICAgICBpZiAocmxfdW5kb19saXN0ICYmIChfcmxfdmlfbGFzdF9rZXlf YmVmb3JlX2luc2VydCA9PSAnaScgfHwKKysJCQkgICBfcmxfdmlfbGFzdF9rZXlfYmVmb3JlX2lu c2VydCA9PSAnYScgfHwKKysJCQkgICBfcmxfdmlfbGFzdF9rZXlfYmVmb3JlX2luc2VydCA9PSAn SScgfHwKKysJCQkgICBfcmxfdmlfbGFzdF9rZXlfYmVmb3JlX2luc2VydCA9PSAnQScpKQorKwlf cmxfdmlfc2F2ZV9pbnNlcnQgKHJsX3VuZG9fbGlzdCk7CisgICAgICAgLyogWFhYIC0gT3RoZXIg a2V5cyBwcm9iYWJseSBuZWVkIHRvIGJlIGNoZWNrZWQuICovCisgICAgICAgZWxzZSBpZiAoX3Js X3ZpX2xhc3Rfa2V5X2JlZm9yZV9pbnNlcnQgPT0gJ0MnKQorIAlybF9lbmRfdW5kb19ncm91cCAo KTsKK0BAIC03MTYsNyArNzg0LDggQEAgX3JsX3ZpX2NoYW5nZV9tYmNoYXJfY2FzZSAoY291bnQp CisgeworICAgd2NoYXJfdCB3YzsKKyAgIGNoYXIgbWJbTUJfTEVOX01BWCsxXTsKKy0gIGludCBt YmxlbiwgcDsKKysgIGludCBtbGVuLCBwOworKyAgc2l6ZV90IG07CisgICBtYnN0YXRlX3QgcHM7 CisgCisgICBtZW1zZXQgKCZwcywgMCwgc2l6ZW9mIChtYnN0YXRlX3QpKTsKK0BAIC03MjQsNyAr NzkzLDExIEBAIF9ybF92aV9jaGFuZ2VfbWJjaGFyX2Nhc2UgKGNvdW50KQorICAgICBjb3VudC0t OworICAgd2hpbGUgKGNvdW50LS0gJiYgcmxfcG9pbnQgPCBybF9lbmQpCisgICAgIHsKKy0gICAg ICBtYnJ0b3djICgmd2MsIHJsX2xpbmVfYnVmZmVyICsgcmxfcG9pbnQsIHJsX2VuZCAtIHJsX3Bv aW50LCAmcHMpOworKyAgICAgIG0gPSBtYnJ0b3djICgmd2MsIHJsX2xpbmVfYnVmZmVyICsgcmxf cG9pbnQsIHJsX2VuZCAtIHJsX3BvaW50LCAmcHMpOworKyAgICAgIGlmIChNQl9JTlZBTElEQ0gg KG0pKQorKwl3YyA9ICh3Y2hhcl90KXJsX2xpbmVfYnVmZmVyW3JsX3BvaW50XTsKKysgICAgICBl bHNlIGlmIChNQl9OVUxMV0NIIChtKSkKKysJd2MgPSBMJ1wwJzsKKyAgICAgICBpZiAoaXN3dXBw ZXIgKHdjKSkKKyAJd2MgPSB0b3dsb3dlciAod2MpOworICAgICAgIGVsc2UgaWYgKGlzd2xvd2Vy ICh3YykpCitAQCAtNzQwLDkgKzgxMyw5IEBAIF9ybF92aV9jaGFuZ2VfbWJjaGFyX2Nhc2UgKGNv dW50KQorICAgICAgIGlmICh3YykKKyAJeworIAkgIHAgPSBybF9wb2ludDsKKy0JICBtYmxlbiA9 IHdjcnRvbWIgKG1iLCB3YywgJnBzKTsKKy0JICBpZiAobWJsZW4gPj0gMCkKKy0JICAgIG1iW21i bGVuXSA9ICdcMCc7CisrCSAgbWxlbiA9IHdjcnRvbWIgKG1iLCB3YywgJnBzKTsKKysJICBpZiAo bWxlbiA+PSAwKQorKwkgICAgbWJbbWxlbl0gPSAnXDAnOworIAkgIHJsX2JlZ2luX3VuZG9fZ3Jv dXAgKCk7CisgCSAgcmxfdmlfZGVsZXRlICgxLCAwKTsKKyAJICBpZiAocmxfcG9pbnQgPCBwKQkv KiBEaWQgd2UgcmV0cmVhdCBhdCBFT0w/ICovCitAQCAtNzUyLDcgKzgyNSw3IEBAIF9ybF92aV9j aGFuZ2VfbWJjaGFyX2Nhc2UgKGNvdW50KQorIAkgIHJsX3ZpX2NoZWNrICgpOworIAl9CisgICAg ICAgZWxzZQorLSAgICAgICAgcmxfZm9yd2FyZF9jaGFyICgxLCAwKTsKKysJcmxfZm9yd2FyZF9j aGFyICgxLCAwKTsKKyAgICAgfQorIAorICAgcmV0dXJuIDA7CitAQCAtNzk5LDcgKzg3Miw3IEBA IHJsX3ZpX2NoYW5nZV9jYXNlIChjb3VudCwgaWdub3JlKQorIAkgIF9ybF9pbnNlcnRfY2hhciAo MSwgYyk7CisgCSAgcmxfZW5kX3VuZG9fZ3JvdXAgKCk7CisgCSAgcmxfdmlfY2hlY2sgKCk7Cist ICAgICAgICB9CisrCX0KKyAgICAgICBlbHNlCisgCXJsX2ZvcndhcmRfY2hhciAoMSwgYyk7Cisg ICAgIH0KK0BAIC04MjAsNiArODkzLDE1IEBAIHJsX3ZpX3B1dCAoY291bnQsIGtleSkKKyAgIHJl dHVybiAoMCk7CisgfQorIAorK3N0YXRpYyB2b2lkCisrX3JsX3ZpX2JhY2t1cCAoKQorK3sKKysg IGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCisrICAgIHJsX3Bv aW50ID0gX3JsX2ZpbmRfcHJldl9tYmNoYXIgKHJsX2xpbmVfYnVmZmVyLCBybF9wb2ludCwgTUJf RklORF9OT05aRVJPKTsKKysgIGVsc2UKKysgICAgcmxfcG9pbnQtLTsKKyt9CisrCisgaW50Cisg cmxfdmlfY2hlY2sgKCkKKyB7CitAQCAtODI4LDcgKzkxMCw3IEBAIHJsX3ZpX2NoZWNrICgpCisg ICAgICAgaWYgKE1CX0NVUl9NQVggPiAxICYmIHJsX2J5dGVfb3JpZW50ZWQgPT0gMCkKKyAJcmxf cG9pbnQgPSBfcmxfZmluZF9wcmV2X21iY2hhciAocmxfbGluZV9idWZmZXIsIHJsX3BvaW50LCBN Ql9GSU5EX05PTlpFUk8pOworICAgICAgIGVsc2UKKy0gICAgICAgIHJsX3BvaW50LS07CisrCXJs X3BvaW50LS07CisgICAgIH0KKyAgIHJldHVybiAoMCk7CisgfQorQEAgLTg0NCw0NyArOTI2LDEw NiBAQCBybF92aV9jb2x1bW4gKGNvdW50LCBrZXkpCisgICByZXR1cm4gKDApOworIH0KKyAKKy1p bnQKKy1ybF92aV9kb21vdmUgKGtleSwgbmV4dGtleSkKKy0gICAgIGludCBrZXksICpuZXh0a2V5 OworKy8qIFByb2Nlc3MgQyBhcyBwYXJ0IG9mIHRoZSBjdXJyZW50IG51bWVyaWMgYXJndW1lbnQu ICBSZXR1cm4gLTEgaWYgdGhlCisrICAgYXJndW1lbnQgc2hvdWxkIGJlIGFib3J0ZWQsIDAgaWYg d2Ugc2hvdWxkIG5vdCByZWFkIGFueSBtb3JlIGNoYXJzLCBhbmQKKysgICAxIGlmIHdlIHNob3Vs ZCBjb250aW51ZSB0byByZWFkIGNoYXJzLiAqLworK3N0YXRpYyBpbnQKKytfcmxfdmlfYXJnX2Rp c3BhdGNoIChjKQorKyAgICAgaW50IGM7CisgeworLSAgaW50IGMsIHNhdmU7CistICBpbnQgb2xk X2VuZDsKKysgIGludCBrZXk7CisgCistICBybF9tYXJrID0gcmxfcG9pbnQ7CistICBSTF9TRVRT VEFURShSTF9TVEFURV9NT1JFSU5QVVQpOworLSAgYyA9IHJsX3JlYWRfa2V5ICgpOworLSAgUkxf VU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQpOworLSAgKm5leHRrZXkgPSBjOworKyAga2V5 ID0gYzsKKysgIGlmIChjID49IDAgJiYgX3JsX2tleW1hcFtjXS50eXBlID09IElTRlVOQyAmJiBf cmxfa2V5bWFwW2NdLmZ1bmN0aW9uID09IHJsX3VuaXZlcnNhbF9hcmd1bWVudCkKKysgICAgewor KyAgICAgIHJsX251bWVyaWNfYXJnICo9IDQ7CisrICAgICAgcmV0dXJuIDE7CisrICAgIH0KKysK KysgIGMgPSBVTk1FVEEgKGMpOworIAorLSAgaWYgKCFtZW1iZXIgKGMsIHZpX21vdGlvbikpCisr ICBpZiAoX3JsX2RpZ2l0X3AgKGMpKQorICAgICB7CistICAgICAgaWYgKF9ybF9kaWdpdF9wIChj KSkKKy0JeworLQkgIHNhdmUgPSBybF9udW1lcmljX2FyZzsKKy0JICBybF9udW1lcmljX2FyZyA9 IF9ybF9kaWdpdF92YWx1ZSAoYyk7CistCSAgcmxfZXhwbGljaXRfYXJnID0gMTsKKy0JICBSTF9T RVRTVEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSR3xSTF9TVEFURV9WSU1PVElPTik7CistCSAgcmxf ZGlnaXRfbG9vcDEgKCk7CistCSAgUkxfVU5TRVRTVEFURSAoUkxfU1RBVEVfVklNT1RJT04pOwor LQkgIHJsX251bWVyaWNfYXJnICo9IHNhdmU7CistCSAgUkxfU0VUU1RBVEUoUkxfU1RBVEVfTU9S RUlOUFVUKTsKKy0JICBjID0gcmxfcmVhZF9rZXkgKCk7CS8qIHJlYWwgY29tbWFuZCAqLworLQkg IFJMX1VOU0VUU1RBVEUoUkxfU1RBVEVfTU9SRUlOUFVUKTsKKy0JICAqbmV4dGtleSA9IGM7Cist CX0KKy0gICAgICBlbHNlIGlmIChrZXkgPT0gYyAmJiAoa2V5ID09ICdkJyB8fCBrZXkgPT0gJ3kn IHx8IGtleSA9PSAnYycpKQorLQl7CistCSAgcmxfbWFyayA9IHJsX2VuZDsKKy0JICBybF9iZWdf b2ZfbGluZSAoMSwgYyk7CistCSAgX3JsX3ZpX2xhc3RfbW90aW9uID0gYzsKKy0JICByZXR1cm4g KDApOworLQl9CisrICAgICAgaWYgKHJsX2V4cGxpY2l0X2FyZykKKysJcmxfbnVtZXJpY19hcmcg PSAocmxfbnVtZXJpY19hcmcgKiAxMCkgKyBfcmxfZGlnaXRfdmFsdWUgKGMpOworICAgICAgIGVs c2UKKy0JcmV0dXJuICgtMSk7CisrCXJsX251bWVyaWNfYXJnID0gX3JsX2RpZ2l0X3ZhbHVlIChj KTsKKysgICAgICBybF9leHBsaWNpdF9hcmcgPSAxOworKyAgICAgIHJldHVybiAxOwkJLyoga2Vl cCBnb2luZyAqLworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICBybF9jbGVhcl9tZXNz YWdlICgpOworKyAgICAgIHJsX3N0dWZmX2NoYXIgKGtleSk7CisrICAgICAgcmV0dXJuIDA7CQkv KiBkb25lICovCisrICAgIH0KKyt9CisrCisrLyogQSBzaW1wbGlmaWVkIGxvb3AgZm9yIHZpLiBE b24ndCBkaXNwYXRjaCBrZXkgYXQgZW5kLgorKyAgIERvbid0IHJlY29nbml6ZSBtaW51cyBzaWdu PworKyAgIFNob3VsZCB0aGlzIGRvIHJsX3NhdmVfcHJvbXB0L3JsX3Jlc3RvcmVfcHJvbXB0PyAq LworK3N0YXRpYyBpbnQKKytybF9kaWdpdF9sb29wMSAoKQorK3sKKysgIGludCBjLCByOworKwor KyAgd2hpbGUgKDEpCisrICAgIHsKKysgICAgICBpZiAoX3JsX2FyZ19vdmVyZmxvdyAoKSkKKysJ cmV0dXJuIDE7CisrCisrICAgICAgYyA9IF9ybF9hcmdfZ2V0Y2hhciAoKTsKKysKKysgICAgICBy ID0gX3JsX3ZpX2FyZ19kaXNwYXRjaCAoYyk7CisrICAgICAgaWYgKHIgPD0gMCkKKysJYnJlYWs7 CisgICAgIH0KKyAKKy0gIF9ybF92aV9sYXN0X21vdGlvbiA9IGM7CisrICBSTF9VTlNFVFNUQVRF KFJMX1NUQVRFX05VTUVSSUNBUkcpOworKyAgcmV0dXJuICgwKTsKKyt9CisrCisrc3RhdGljIHZv aWQKKytfcmxfbXZjeHRfaW5pdCAobSwgb3AsIGtleSkKKysgICAgIF9ybF92aW1vdGlvbl9jeHQg Km07CisrICAgICBpbnQgb3AsIGtleTsKKyt7CisrICBtLT5vcCA9IG9wOworKyAgbS0+c3RhdGUg PSBtLT5mbGFncyA9IDA7CisrICBtLT5uY3h0ID0gMDsKKysgIG0tPm51bWVyaWNfYXJnID0gLTE7 CisrICBtLT5zdGFydCA9IHJsX3BvaW50OworKyAgbS0+ZW5kID0gcmxfZW5kOworKyAgbS0+a2V5 ID0ga2V5OworKyAgbS0+bW90aW9uID0gLTE7CisrfQorKworK3N0YXRpYyBfcmxfdmltb3Rpb25f Y3h0ICoKKytfcmxfbXZjeHRfYWxsb2MgKG9wLCBrZXkpCisrICAgICBpbnQgb3AsIGtleTsKKyt7 CisrICBfcmxfdmltb3Rpb25fY3h0ICptOworKworKyAgbSA9IHhtYWxsb2MgKHNpemVvZiAoX3Js X3ZpbW90aW9uX2N4dCkpOworKyAgX3JsX212Y3h0X2luaXQgKG0sIG9wLCBrZXkpOworKyAgcmV0 dXJuIG07CisrfQorKworK3N0YXRpYyB2b2lkCisrX3JsX212Y3h0X2Rpc3Bvc2UgKG0pCisrICAg ICBfcmxfdmltb3Rpb25fY3h0ICptOworK3sKKysgIHhmcmVlIChtKTsKKyt9CisrCisrc3RhdGlj IGludAorK3JsX2RvbW92ZV9tb3Rpb25fY2FsbGJhY2sgKG0pCisrICAgICBfcmxfdmltb3Rpb25f Y3h0ICptOworK3sKKysgIGludCBjLCBzYXZlLCByOworKyAgaW50IG9sZF9lbmQ7CisrCisrICBf cmxfdmlfbGFzdF9tb3Rpb24gPSBjID0gbS0+bW90aW9uOworIAorICAgLyogQXBwZW5kIGEgYmxh bmsgY2hhcmFjdGVyIHRlbXBvcmFyaWx5IHNvIHRoYXQgdGhlIG1vdGlvbiByb3V0aW5lcworICAg ICAgd29yayByaWdodCBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lLiAqLworQEAgLTkxMyw3ICsxMDU0 LDcgQEAgcmxfdmlfZG9tb3ZlIChrZXksIG5leHRrZXkpCisgCisgICAvKiBJZiBjdyBvciBjVywg YmFjayB1cCB0byB0aGUgZW5kIG9mIGEgd29yZCwgc28gdGhlIGJlaGF2aW91ciBvZiBjZQorICAg ICAgb3IgY0UgaXMgdGhlIGFjdHVhbCByZXN1bHQuICBCcnV0ZS1mb3JjZSwgbm8gc3VidGxldHku ICovCistICBpZiAoa2V5ID09ICdjJyAmJiBybF9wb2ludCA+PSBybF9tYXJrICYmIChfcmxfdG9f dXBwZXIgKGMpID09ICdXJykpCisrICBpZiAobS0+a2V5ID09ICdjJyAmJiBybF9wb2ludCA+PSBy bF9tYXJrICYmIChfcmxfdG9fdXBwZXIgKGMpID09ICdXJykpCisgICAgIHsKKyAgICAgICAvKiBE b24ndCBtb3ZlIGZhcnRoZXIgYmFjayB0aGFuIHdoZXJlIHdlIHN0YXJ0ZWQuICovCisgICAgICAg d2hpbGUgKHJsX3BvaW50ID4gcmxfbWFyayAmJiB3aGl0ZXNwYWNlIChybF9saW5lX2J1ZmZlclty bF9wb2ludF0pKQorQEAgLTkyMiw3ICsxMDYzLDcgQEAgcmxfdmlfZG9tb3ZlIChrZXksIG5leHRr ZXkpCisgICAgICAgLyogUG9zaXguMiBzYXlzIHRoYXQgaWYgY3cgb3IgY1cgbW92ZXMgdGhlIGN1 cnNvciB0b3dhcmRzIHRoZSBlbmQgb2YKKyAJIHRoZSBsaW5lLCB0aGUgY2hhcmFjdGVyIHVuZGVy IHRoZSBjdXJzb3Igc2hvdWxkIGJlIGRlbGV0ZWQuICovCisgICAgICAgaWYgKHJsX3BvaW50ID09 IHJsX21hcmspCistICAgICAgICBybF9wb2ludCsrOworKwlybF9wb2ludCsrOworICAgICAgIGVs c2UKKyAJeworIAkgIC8qIE1vdmUgcGFzdCB0aGUgZW5kIG9mIHRoZSB3b3JkIHNvIHRoYXQgdGhl IGtpbGwgZG9lc24ndAorQEAgLTkzNiw4OCArMTA3NywxNDIgQEAgcmxfdmlfZG9tb3ZlIChrZXks IG5leHRrZXkpCisgICBpZiAocmxfbWFyayA8IHJsX3BvaW50KQorICAgICBTV0FQIChybF9wb2lu dCwgcmxfbWFyayk7CisgCistICByZXR1cm4gKDApOworKyNpZiBkZWZpbmVkIChSRUFETElORV9D QUxMQkFDS1MpCisrICBpZiAoUkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FMTEJBQ0spKQorKyAgICAo KnJsX3JlZGlzcGxheV9mdW5jdGlvbikoKTsJCS8qIG1ha2Ugc3VyZSBtb3Rpb24gaXMgZGlzcGxh eWVkICovCisrI2VuZGlmCisrCisrICByID0gdmlkb21vdmVfZGlzcGF0Y2ggKG0pOworKworKyAg cmV0dXJuIChyKTsKKyB9CisgCistLyogUHJvY2VzcyBDIGFzIHBhcnQgb2YgdGhlIGN1cnJlbnQg bnVtZXJpYyBhcmd1bWVudC4gIFJldHVybiAtMSBpZiB0aGUKKy0gICBhcmd1bWVudCBzaG91bGQg YmUgYWJvcnRlZCwgMCBpZiB3ZSBzaG91bGQgbm90IHJlYWQgYW55IG1vcmUgY2hhcnMsIGFuZAor LSAgIDEgaWYgd2Ugc2hvdWxkIGNvbnRpbnVlIHRvIHJlYWQgY2hhcnMuICovCisrI2RlZmluZSBS TF9WSU1PVkVOVU1BUkcoKQkoUkxfSVNTVEFURSAoUkxfU1RBVEVfVklNT1RJT04pICYmIFJMX0lT U1RBVEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpKQorKworIHN0YXRpYyBpbnQKKy1fcmxfdmlfYXJn X2Rpc3BhdGNoIChjKQorLSAgICAgaW50IGM7CisrcmxfZG9tb3ZlX3JlYWRfY2FsbGJhY2sgKG0p CisrICAgICBfcmxfdmltb3Rpb25fY3h0ICptOworIHsKKy0gIGludCBrZXk7CisrICBpbnQgYywg c2F2ZTsKKyAKKy0gIGtleSA9IGM7CistICBpZiAoYyA+PSAwICYmIF9ybF9rZXltYXBbY10udHlw ZSA9PSBJU0ZVTkMgJiYgX3JsX2tleW1hcFtjXS5mdW5jdGlvbiA9PSBybF91bml2ZXJzYWxfYXJn dW1lbnQpCisrICBjID0gbS0+bW90aW9uOworKworKyAgaWYgKG1lbWJlciAoYywgdmlfbW90aW9u KSkKKyAgICAgeworLSAgICAgIHJsX251bWVyaWNfYXJnICo9IDQ7CistICAgICAgcmV0dXJuIDE7 CisrI2lmIGRlZmluZWQgKFJFQURMSU5FX0NBTExCQUNLUykKKysgICAgICAvKiBJZiB3ZSBqdXN0 IHJlYWQgYSB2aS1tb2RlIG1vdGlvbiBjb21tYW5kIG51bWVyaWMgYXJndW1lbnQsIHR1cm4gb2Zm CisrCSB0aGUgYHJlYWRpbmcgbnVtZXJpYyBhcmcnIHN0YXRlICovCisrICAgICAgaWYgKFJMX0lT U1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSAmJiBSTF9WSU1PVkVOVU1BUkcoKSkKKysJUkxfVU5T RVRTVEFURSAoUkxfU1RBVEVfTlVNRVJJQ0FSRyk7CisrI2VuZGlmCisrICAgICAgLyogU2hvdWxk IGRvIGV2ZXJ5dGhpbmcsIGluY2x1ZGluZyB0dXJuaW5nIG9mZiBSTF9TVEFURV9WSU1PVElPTiAq LworKyAgICAgIHJldHVybiAocmxfZG9tb3ZlX21vdGlvbl9jYWxsYmFjayAobSkpOworICAgICB9 CistCistICBjID0gVU5NRVRBIChjKTsKKy0KKy0gIGlmIChfcmxfZGlnaXRfcCAoYykpCisrICBl bHNlIGlmIChtLT5rZXkgPT0gYyAmJiAobS0+a2V5ID09ICdkJyB8fCBtLT5rZXkgPT0gJ3knIHx8 IG0tPmtleSA9PSAnYycpKQorICAgICB7CistICAgICAgaWYgKHJsX2V4cGxpY2l0X2FyZykKKy0J cmxfbnVtZXJpY19hcmcgPSAocmxfbnVtZXJpY19hcmcgKiAxMCkgKyBfcmxfZGlnaXRfdmFsdWUg KGMpOworLSAgICAgIGVsc2UKKy0JcmxfbnVtZXJpY19hcmcgPSBfcmxfZGlnaXRfdmFsdWUgKGMp OworKyAgICAgIHJsX21hcmsgPSBybF9lbmQ7CisrICAgICAgcmxfYmVnX29mX2xpbmUgKDEsIGMp OworKyAgICAgIF9ybF92aV9sYXN0X21vdGlvbiA9IGM7CisrICAgICAgUkxfVU5TRVRTVEFURSAo UkxfU1RBVEVfVklNT1RJT04pOworKyAgICAgIHJldHVybiAodmlkb21vdmVfZGlzcGF0Y2ggKG0p KTsKKysgICAgfQorKyNpZiBkZWZpbmVkIChSRUFETElORV9DQUxMQkFDS1MpCisrICAvKiBYWFgg LSB0aGVzZSBuZWVkIHRvIGhhbmRsZSBybF91bml2ZXJzYWxfYXJndW1lbnQgYmluZGluZ3MgKi8K KysgIC8qIFJlYWRpbmcgdmkgbW90aW9uIGNoYXIgY29udGludWluZyBudW1lcmljIGFyZ3VtZW50 ICovCisrICBlbHNlIGlmIChfcmxfZGlnaXRfcCAoYykgJiYgUkxfSVNTVEFURSAoUkxfU1RBVEVf Q0FMTEJBQ0spICYmIFJMX1ZJTU9WRU5VTUFSRygpKQorKyAgICB7CisrICAgICAgcmV0dXJuIChf cmxfdmlfYXJnX2Rpc3BhdGNoIChjKSk7CisrICAgIH0KKysgIC8qIFJlYWRpbmUgdmkgbW90aW9u IGNoYXIgc3RhcnRpbmcgbnVtZXJpYyBhcmd1bWVudCAqLworKyAgZWxzZSBpZiAoX3JsX2RpZ2l0 X3AgKGMpICYmIFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSAmJiBSTF9JU1NUQVRFIChS TF9TVEFURV9WSU1PVElPTikgJiYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpID09 IDApKQorKyAgICB7CisrICAgICAgUkxfU0VUU1RBVEUgKFJMX1NUQVRFX05VTUVSSUNBUkcpOwor KyAgICAgIHJldHVybiAoX3JsX3ZpX2FyZ19kaXNwYXRjaCAoYykpOworKyAgICB9CisrI2VuZGlm CisrICBlbHNlIGlmIChfcmxfZGlnaXRfcCAoYykpCisrICAgIHsKKysgICAgICAvKiBUaGlzIGNv ZGUgcGF0aCB0YWtlbiB3aGVuIG5vdCBpbiBjYWxsYmFjayBtb2RlICovCisrICAgICAgc2F2ZSA9 IHJsX251bWVyaWNfYXJnOworKyAgICAgIHJsX251bWVyaWNfYXJnID0gX3JsX2RpZ2l0X3ZhbHVl IChjKTsKKyAgICAgICBybF9leHBsaWNpdF9hcmcgPSAxOworLSAgICAgIHJldHVybiAxOworKyAg ICAgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9OVU1FUklDQVJHKTsKKysgICAgICBybF9kaWdpdF9s b29wMSAoKTsKKysgICAgICBybF9udW1lcmljX2FyZyAqPSBzYXZlOworKyAgICAgIGMgPSBybF92 aV9kb21vdmVfZ2V0Y2hhciAobSk7CisrICAgICAgaWYgKGMgPCAwKQorKwl7CisrCSAgbS0+bW90 aW9uID0gMDsKKysJICByZXR1cm4gLTE7CisrCX0KKysgICAgICBtLT5tb3Rpb24gPSBjOworKyAg ICAgIHJldHVybiAocmxfZG9tb3ZlX21vdGlvbl9jYWxsYmFjayAobSkpOworICAgICB9CisgICBl bHNlCisgICAgIHsKKy0gICAgICBybF9jbGVhcl9tZXNzYWdlICgpOworLSAgICAgIHJsX3N0dWZm X2NoYXIgKGtleSk7CistICAgICAgcmV0dXJuIDA7CisrICAgICAgUkxfVU5TRVRTVEFURSAoUkxf U1RBVEVfVklNT1RJT04pOworKyAgICAgIFJMX1VOU0VUU1RBVEUgKFJMX1NUQVRFX05VTUVSSUNB UkcpOworKyAgICAgIHJldHVybiAoMSk7CisgICAgIH0KKyB9CisgCistLyogQSBzaW1wbGlmaWVk IGxvb3AgZm9yIHZpLiBEb24ndCBkaXNwYXRjaCBrZXkgYXQgZW5kLgorLSAgIERvbid0IHJlY29n bml6ZSBtaW51cyBzaWduPworLSAgIFNob3VsZCB0aGlzIGRvIHJsX3NhdmVfcHJvbXB0L3JsX3Jl c3RvcmVfcHJvbXB0PyAqLworIHN0YXRpYyBpbnQKKy1ybF9kaWdpdF9sb29wMSAoKQorK3JsX3Zp X2RvbW92ZV9nZXRjaGFyIChtKQorKyAgICAgX3JsX3ZpbW90aW9uX2N4dCAqbTsKKyB7CistICBp bnQgYywgcjsKKysgIGludCBjOworIAorLSAgd2hpbGUgKDEpCistICAgIHsKKy0gICAgICBpZiAo X3JsX2FyZ19vdmVyZmxvdyAoKSkKKy0JcmV0dXJuIDE7CisrICBSTF9TRVRTVEFURShSTF9TVEFU RV9NT1JFSU5QVVQpOworKyAgYyA9IHJsX3JlYWRfa2V5ICgpOworKyAgUkxfVU5TRVRTVEFURShS TF9TVEFURV9NT1JFSU5QVVQpOworIAorLSAgICAgIGMgPSBfcmxfYXJnX2dldGNoYXIgKCk7Cisr ICByZXR1cm4gYzsKKyt9CisgCistICAgICAgciA9IF9ybF92aV9hcmdfZGlzcGF0Y2ggKGMpOwor LSAgICAgIGlmIChyIDw9IDApCistCWJyZWFrOworLSAgICB9CisrI2lmIGRlZmluZWQgKFJFQURM SU5FX0NBTExCQUNLUykKKytpbnQKKytfcmxfdmlfZG9tb3ZlX2NhbGxiYWNrIChtKQorKyAgICAg X3JsX3ZpbW90aW9uX2N4dCAqbTsKKyt7CisrICBpbnQgYywgcjsKKyAKKy0gIFJMX1VOU0VUU1RB VEUoUkxfU1RBVEVfTlVNRVJJQ0FSRyk7CistICByZXR1cm4gKDApOworKyAgbS0+bW90aW9uID0g YyA9IHJsX3ZpX2RvbW92ZV9nZXRjaGFyIChtKTsKKysgIC8qIFhYWCAtIHdoYXQgdG8gZG8gaWYg dGhpcyByZXR1cm5zIC0xPyAgU2hvdWxkIHdlIHJldHVybiAxIGZvciBlb2YgdG8KKysgICAgIGNh bGxiYWNrIGNvZGU/ICovCisrICByID0gcmxfZG9tb3ZlX3JlYWRfY2FsbGJhY2sgKG0pOworKwor KyAgcmV0dXJuICgociA9PSAwKSA/IHIgOiAxKTsJLyogbm9ybWFsaXplIHJldHVybiB2YWx1ZXMg Ki8KKyB9CisrI2VuZGlmCisgCisrLyogVGhpcyBjb2RlIHBhdGggdGFrZW4gd2hlbiBub3QgaW4g Y2FsbGJhY2sgbW9kZS4gKi8KKyBpbnQKKy1ybF92aV9kZWxldGVfdG8gKGNvdW50LCBrZXkpCist ICAgICBpbnQgY291bnQsIGtleTsKKytybF92aV9kb21vdmUgKHgsIGlnbm9yZSkKKysgICAgIGlu dCB4LCAqaWdub3JlOworIHsKKy0gIGludCBjOworKyAgaW50IHI7CisrICBfcmxfdmltb3Rpb25f Y3h0ICptOworIAorLSAgaWYgKF9ybF91cHBlcmNhc2VfcCAoa2V5KSkKKy0gICAgcmxfc3R1ZmZf Y2hhciAoJyQnKTsKKy0gIGVsc2UgaWYgKHZpX3JlZG9pbmcpCistICAgIHJsX3N0dWZmX2NoYXIg KF9ybF92aV9sYXN0X21vdGlvbik7CisrICBtID0gX3JsX3ZpbXZjeHQ7CisrICAqaWdub3JlID0g bS0+bW90aW9uID0gcmxfdmlfZG9tb3ZlX2dldGNoYXIgKG0pOworIAorLSAgaWYgKHJsX3ZpX2Rv bW92ZSAoa2V5LCAmYykpCisrICBpZiAobS0+bW90aW9uIDwgMCkKKyAgICAgeworLSAgICAgIHJs X2RpbmcgKCk7CisrICAgICAgbS0+bW90aW9uID0gMDsKKyAgICAgICByZXR1cm4gLTE7CisgICAg IH0KKyAKKysgIHJldHVybiAocmxfZG9tb3ZlX3JlYWRfY2FsbGJhY2sgKG0pKTsKKyt9CisrCisr c3RhdGljIGludAorK3ZpX2RlbGV0ZV9kaXNwYXRjaCAobSkKKysgICAgIF9ybF92aW1vdGlvbl9j eHQgKm07CisreworICAgLyogVGhlc2UgYXJlIHRoZSBtb3Rpb24gY29tbWFuZHMgdGhhdCBkbyBu b3QgcmVxdWlyZSBhZGp1c3RpbmcgdGhlCisgICAgICBtYXJrLiAqLworLSAgaWYgKChzdHJjaHIg KCIgbHxoXjBiQiIsIGMpID09IDApICYmIChybF9tYXJrIDwgcmxfZW5kKSkKKysgIGlmICgoKHN0 cmNociAoIiBsfGheMGJCRlRgIiwgbS0+bW90aW9uKSA9PSAwKSAmJiAocmxfcG9pbnQgPj0gbS0+ c3RhcnQpKSAmJgorKyAgICAgIChybF9tYXJrIDwgcmxfZW5kKSkKKyAgICAgcmxfbWFyaysrOwor IAorICAgcmxfa2lsbF90ZXh0IChybF9wb2ludCwgcmxfbWFyayk7CitAQCAtMTAyNSwzMyArMTIy MCw2MSBAQCBybF92aV9kZWxldGVfdG8gKGNvdW50LCBrZXkpCisgfQorIAorIGludAorLXJsX3Zp X2NoYW5nZV90byAoY291bnQsIGtleSkKKytybF92aV9kZWxldGVfdG8gKGNvdW50LCBrZXkpCisg ICAgICBpbnQgY291bnQsIGtleTsKKyB7CistICBpbnQgYywgc3RhcnRfcG9zOworKyAgaW50IGMs IHI7CisrCisrICBfcmxfdmltdmN4dCA9IF9ybF9tdmN4dF9hbGxvYyAoVklNX0RFTEVURSwga2V5 KTsKKysgIF9ybF92aW12Y3h0LT5zdGFydCA9IHJsX3BvaW50OworIAorKyAgcmxfbWFyayA9IHJs X3BvaW50OworICAgaWYgKF9ybF91cHBlcmNhc2VfcCAoa2V5KSkKKy0gICAgcmxfc3R1ZmZfY2hh ciAoJyQnKTsKKysgICAgeworKyAgICAgIF9ybF92aW12Y3h0LT5tb3Rpb24gPSAnJCc7CisrICAg ICAgciA9IHJsX2RvbW92ZV9tb3Rpb25fY2FsbGJhY2sgKF9ybF92aW12Y3h0KTsKKysgICAgfQor ICAgZWxzZSBpZiAodmlfcmVkb2luZykKKy0gICAgcmxfc3R1ZmZfY2hhciAoX3JsX3ZpX2xhc3Rf bW90aW9uKTsKKy0KKy0gIHN0YXJ0X3BvcyA9IHJsX3BvaW50OworKyAgICB7CisrICAgICAgX3Js X3ZpbXZjeHQtPm1vdGlvbiA9IF9ybF92aV9sYXN0X21vdGlvbjsKKysgICAgICByID0gcmxfZG9t b3ZlX21vdGlvbl9jYWxsYmFjayAoX3JsX3ZpbXZjeHQpOworKyAgICB9CisrI2lmIGRlZmluZWQg KFJFQURMSU5FX0NBTExCQUNLUykKKysgIGVsc2UgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NB TExCQUNLKSkKKysgICAgeworKyAgICAgIFJMX1NFVFNUQVRFIChSTF9TVEFURV9WSU1PVElPTik7 CisrICAgICAgcmV0dXJuICgwKTsKKysgICAgfQorKyNlbmRpZgorKyAgZWxzZQorKyAgICByID0g cmxfdmlfZG9tb3ZlIChrZXksICZjKTsKKyAKKy0gIGlmIChybF92aV9kb21vdmUgKGtleSwgJmMp KQorKyAgaWYgKHIgPCAwKQorICAgICB7CisgICAgICAgcmxfZGluZyAoKTsKKy0gICAgICByZXR1 cm4gLTE7CisrICAgICAgciA9IC0xOworICAgICB9CisgCisrICBfcmxfbXZjeHRfZGlzcG9zZSAo X3JsX3ZpbXZjeHQpOworKyAgX3JsX3ZpbXZjeHQgPSAwOworKworKyAgcmV0dXJuIHI7CisrfQor KworK3N0YXRpYyBpbnQKKyt2aV9jaGFuZ2VfZGlzcGF0Y2ggKG0pCisrICAgICBfcmxfdmltb3Rp b25fY3h0ICptOworK3sKKyAgIC8qIFRoZXNlIGFyZSB0aGUgbW90aW9uIGNvbW1hbmRzIHRoYXQg ZG8gbm90IHJlcXVpcmUgYWRqdXN0aW5nIHRoZQorICAgICAgbWFyay4gIGNbd1ddIGFyZSBoYW5k bGVkIGJ5IHNwZWNpYWwtY2FzZSBjb2RlIGluIHJsX3ZpX2RvbW92ZSgpLAorICAgICAgYW5kIGFs cmVhZHkgbGVhdmUgdGhlIG1hcmsgYXQgdGhlIGNvcnJlY3QgbG9jYXRpb24uICovCistICBpZiAo KHN0cmNociAoIiBsfGh3V14wYkIiLCBjKSA9PSAwKSAmJiAocmxfbWFyayA8IHJsX2VuZCkpCisr ICBpZiAoKChzdHJjaHIgKCIgbHxod1deMGJCRlRgIiwgbS0+bW90aW9uKSA9PSAwKSAmJiAocmxf cG9pbnQgPj0gbS0+c3RhcnQpKSAmJgorKyAgICAgIChybF9tYXJrIDwgcmxfZW5kKSkKKyAgICAg cmxfbWFyaysrOworIAorICAgLyogVGhlIGN1cnNvciBuZXZlciBtb3ZlcyB3aXRoIGNbd1ddLiAq LworLSAgaWYgKChfcmxfdG9fdXBwZXIgKGMpID09ICdXJykgJiYgcmxfcG9pbnQgPCBzdGFydF9w b3MpCistICAgIHJsX3BvaW50ID0gc3RhcnRfcG9zOworKyAgaWYgKChfcmxfdG9fdXBwZXIgKG0t Pm1vdGlvbikgPT0gJ1cnKSAmJiBybF9wb2ludCA8IG0tPnN0YXJ0KQorKyAgICBybF9wb2ludCA9 IG0tPnN0YXJ0OworIAorICAgaWYgKHZpX3JlZG9pbmcpCisgICAgIHsKK0BAIC0xMDY5LDQ5ICsx MjkyLDE0NSBAQCBybF92aV9jaGFuZ2VfdG8gKGNvdW50LCBrZXkpCisgICAgICAgcmxfYmVnaW5f dW5kb19ncm91cCAoKTsJCS8qIHRvIG1ha2UgdGhlIGB1JyBjb21tYW5kIHdvcmsgKi8KKyAgICAg ICBybF9raWxsX3RleHQgKHJsX3BvaW50LCBybF9tYXJrKTsKKyAgICAgICAvKiBgQycgZG9lcyBu b3Qgc2F2ZSB0aGUgdGV4dCBpbnNlcnRlZCBmb3IgdW5kb2luZyBvciByZWRvaW5nLiAqLworLSAg ICAgIGlmIChfcmxfdXBwZXJjYXNlX3AgKGtleSkgPT0gMCkKKy0gICAgICAgIF9ybF92aV9kb2lu Z19pbnNlcnQgPSAxOworLSAgICAgIHJsX3ZpX3N0YXJ0X2luc2VydGluZyAoa2V5LCBybF9udW1l cmljX2FyZywgcmxfYXJnX3NpZ24pOworKyAgICAgIGlmIChfcmxfdXBwZXJjYXNlX3AgKG0tPmtl eSkgPT0gMCkKKysJX3JsX3ZpX2RvaW5nX2luc2VydCA9IDE7CisrICAgICAgLyogWFhYIC0tIFRP RE8gLS0gdXNlIG0tPm51bWVyaWNhcmc/ICovCisrICAgICAgcmxfdmlfc3RhcnRfaW5zZXJ0aW5n IChtLT5rZXksIHJsX251bWVyaWNfYXJnLCBybF9hcmdfc2lnbik7CisgICAgIH0KKyAKKyAgIHJl dHVybiAoMCk7CisgfQorIAorIGludAorLXJsX3ZpX3lhbmtfdG8gKGNvdW50LCBrZXkpCisrcmxf dmlfY2hhbmdlX3RvIChjb3VudCwga2V5KQorICAgICAgaW50IGNvdW50LCBrZXk7CisgeworLSAg aW50IGMsIHNhdmU7CisrICBpbnQgYywgcjsKKysKKysgIF9ybF92aW12Y3h0ID0gX3JsX212Y3h0 X2FsbG9jIChWSU1fQ0hBTkdFLCBrZXkpOworKyAgX3JsX3ZpbXZjeHQtPnN0YXJ0ID0gcmxfcG9p bnQ7CisgCistICBzYXZlID0gcmxfcG9pbnQ7CisrICBybF9tYXJrID0gcmxfcG9pbnQ7CisgICBp ZiAoX3JsX3VwcGVyY2FzZV9wIChrZXkpKQorLSAgICBybF9zdHVmZl9jaGFyICgnJCcpOworKyAg ICB7CisrICAgICAgX3JsX3ZpbXZjeHQtPm1vdGlvbiA9ICckJzsKKysgICAgICByID0gcmxfZG9t b3ZlX21vdGlvbl9jYWxsYmFjayAoX3JsX3ZpbXZjeHQpOworKyAgICB9CisrICBlbHNlIGlmICh2 aV9yZWRvaW5nKQorKyAgICB7CisrICAgICAgX3JsX3ZpbXZjeHQtPm1vdGlvbiA9IF9ybF92aV9s YXN0X21vdGlvbjsKKysgICAgICByID0gcmxfZG9tb3ZlX21vdGlvbl9jYWxsYmFjayAoX3JsX3Zp bXZjeHQpOworKyAgICB9CisrI2lmIGRlZmluZWQgKFJFQURMSU5FX0NBTExCQUNLUykKKysgIGVs c2UgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSkKKysgICAgeworKyAgICAgIFJM X1NFVFNUQVRFIChSTF9TVEFURV9WSU1PVElPTik7CisrICAgICAgcmV0dXJuICgwKTsKKysgICAg fQorKyNlbmRpZgorKyAgZWxzZQorKyAgICByID0gcmxfdmlfZG9tb3ZlIChrZXksICZjKTsKKyAK Ky0gIGlmIChybF92aV9kb21vdmUgKGtleSwgJmMpKQorKyAgaWYgKHIgPCAwKQorICAgICB7Cisg ICAgICAgcmxfZGluZyAoKTsKKy0gICAgICByZXR1cm4gLTE7CisrICAgICAgciA9IC0xOwkvKiBu b3JtYWxpemUgcmV0dXJuIHZhbHVlICovCisgICAgIH0KKyAKKysgIF9ybF9tdmN4dF9kaXNwb3Nl IChfcmxfdmltdmN4dCk7CisrICBfcmxfdmltdmN4dCA9IDA7CisrCisrICByZXR1cm4gcjsKKyt9 CisrCisrc3RhdGljIGludAorK3ZpX3lhbmtfZGlzcGF0Y2ggKG0pCisrICAgICBfcmxfdmltb3Rp b25fY3h0ICptOworK3sKKyAgIC8qIFRoZXNlIGFyZSB0aGUgbW90aW9uIGNvbW1hbmRzIHRoYXQg ZG8gbm90IHJlcXVpcmUgYWRqdXN0aW5nIHRoZQorICAgICAgbWFyay4gKi8KKy0gIGlmICgoc3Ry Y2hyICgiIGx8aF4wJWJCIiwgYykgPT0gMCkgJiYgKHJsX21hcmsgPCBybF9lbmQpKQorKyAgaWYg KCgoc3RyY2hyICgiIGx8aF4wJWJCRlRgIiwgbS0+bW90aW9uKSA9PSAwKSAmJiAocmxfcG9pbnQg Pj0gbS0+c3RhcnQpKSAmJgorKyAgICAgIChybF9tYXJrIDwgcmxfZW5kKSkKKyAgICAgcmxfbWFy aysrOworIAorICAgcmxfYmVnaW5fdW5kb19ncm91cCAoKTsKKyAgIHJsX2tpbGxfdGV4dCAocmxf cG9pbnQsIHJsX21hcmspOworICAgcmxfZW5kX3VuZG9fZ3JvdXAgKCk7CisgICBybF9kb191bmRv ICgpOworLSAgcmxfcG9pbnQgPSBzYXZlOworKyAgcmxfcG9pbnQgPSBtLT5zdGFydDsKKyAKKyAg IHJldHVybiAoMCk7CisgfQorIAorIGludAorK3JsX3ZpX3lhbmtfdG8gKGNvdW50LCBrZXkpCisr ICAgICBpbnQgY291bnQsIGtleTsKKyt7CisrICBpbnQgYywgcjsKKysKKysgIF9ybF92aW12Y3h0 ID0gX3JsX212Y3h0X2FsbG9jIChWSU1fWUFOSywga2V5KTsKKysgIF9ybF92aW12Y3h0LT5zdGFy dCA9IHJsX3BvaW50OworKworKyAgcmxfbWFyayA9IHJsX3BvaW50OworKyAgaWYgKF9ybF91cHBl cmNhc2VfcCAoa2V5KSkKKysgICAgeworKyAgICAgIF9ybF92aW12Y3h0LT5tb3Rpb24gPSAnJCc7 CisrICAgICAgciA9IHJsX2RvbW92ZV9tb3Rpb25fY2FsbGJhY2sgKF9ybF92aW12Y3h0KTsKKysg ICAgfQorKyNpZiBkZWZpbmVkIChSRUFETElORV9DQUxMQkFDS1MpCisrICBlbHNlIGlmIChSTF9J U1NUQVRFIChSTF9TVEFURV9DQUxMQkFDSykpCisrICAgIHsKKysgICAgICBSTF9TRVRTVEFURSAo UkxfU1RBVEVfVklNT1RJT04pOworKyAgICAgIHJldHVybiAoMCk7CisrICAgIH0KKysjZW5kaWYK KysgIGVsc2UKKysgICAgciA9IHJsX3ZpX2RvbW92ZSAoa2V5LCAmYyk7CisrCisrICBpZiAociA8 IDApCisrICAgIHsKKysgICAgICBybF9kaW5nICgpOworKyAgICAgIHIgPSAtMTsKKysgICAgfQor KworKyAgX3JsX212Y3h0X2Rpc3Bvc2UgKF9ybF92aW12Y3h0KTsKKysgIF9ybF92aW12Y3h0ID0g MDsKKysKKysgIHJldHVybiByOworK30KKysKKytzdGF0aWMgaW50Cisrdmlkb21vdmVfZGlzcGF0 Y2ggKG0pCisrICAgICBfcmxfdmltb3Rpb25fY3h0ICptOworK3sKKysgIGludCByOworKworKyAg c3dpdGNoIChtLT5vcCkKKysgICAgeworKyAgICBjYXNlIFZJTV9ERUxFVEU6CisrICAgICAgciA9 IHZpX2RlbGV0ZV9kaXNwYXRjaCAobSk7CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgVklNX0NI QU5HRToKKysgICAgICByID0gdmlfY2hhbmdlX2Rpc3BhdGNoIChtKTsKKysgICAgICBicmVhazsK KysgICAgY2FzZSBWSU1fWUFOSzoKKysgICAgICByID0gdmlfeWFua19kaXNwYXRjaCAobSk7Cisr ICAgICAgYnJlYWs7CisrICAgIGRlZmF1bHQ6CisrICAgICAgX3JsX2Vycm1zZyAoInZpZG9tb3Zl X2Rpc3BhdGNoOiB1bmtub3duIG9wZXJhdG9yICVkIiwgbS0+b3ApOworKyAgICAgIHIgPSAxOwor KyAgICAgIGJyZWFrOworKyAgICB9CisrCisrICBSTF9VTlNFVFNUQVRFIChSTF9TVEFURV9WSU1P VElPTik7CisrICByZXR1cm4gcjsKKyt9CisrCisraW50CisgcmxfdmlfcnVib3V0IChjb3VudCwg a2V5KQorICAgICAgaW50IGNvdW50LCBrZXk7CisgeworLSAgaW50IHAsIG9wb2ludDsKKysgIGlu dCBvcG9pbnQ7CisgCisgICBpZiAoY291bnQgPCAwKQorICAgICByZXR1cm4gKHJsX3ZpX2RlbGV0 ZSAoLWNvdW50LCBrZXkpKTsKK0BAIC0xMTkzLDE0ICsxNTEyLDIyIEBAIHN0YXRpYyBpbnQKKyBf cmxfdmlfY2FsbGJhY2tfY2hhcl9zZWFyY2ggKGRhdGEpCisgICAgICBfcmxfY2FsbGJhY2tfZ2Vu ZXJpY19hcmcgKmRhdGE7CisgeworKyAgaW50IGM7CisgI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxU SUJZVEUpCistICBfcmxfdmlfbGFzdF9zZWFyY2hfbWJsZW4gPSBfcmxfcmVhZF9tYmNoYXIgKF9y bF92aV9sYXN0X3NlYXJjaF9tYmNoYXIsIE1CX0xFTl9NQVgpOworKyAgYyA9IF9ybF92aV9sYXN0 X3NlYXJjaF9tYmxlbiA9IF9ybF9yZWFkX21iY2hhciAoX3JsX3ZpX2xhc3Rfc2VhcmNoX21iY2hh ciwgTUJfTEVOX01BWCk7CisgI2Vsc2UKKyAgIFJMX1NFVFNUQVRFKFJMX1NUQVRFX01PUkVJTlBV VCk7CistICBfcmxfdmlfbGFzdF9zZWFyY2hfY2hhciA9IHJsX3JlYWRfa2V5ICgpOworKyAgYyA9 IHJsX3JlYWRfa2V5ICgpOworICAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQpOwor ICNlbmRpZgorIAorKyAgaWYgKGMgPD0gMCkKKysgICAgcmV0dXJuIC0xOworKworKyNpZiAhZGVm aW5lZCAoSEFORExFX01VTFRJQllURSkKKysgIF9ybF92aV9sYXN0X3NlYXJjaF9jaGFyID0gYzsK KysjZW5kaWYKKysKKyAgIF9ybF9jYWxsYmFja19mdW5jID0gMDsKKyAgIF9ybF93YW50X3JlZGlz cGxheSA9IDE7CisgCitAQCAtMTIxNiw2ICsxNTQzLDcgQEAgaW50CisgcmxfdmlfY2hhcl9zZWFy Y2ggKGNvdW50LCBrZXkpCisgICAgICBpbnQgY291bnQsIGtleTsKKyB7CisrICBpbnQgYzsKKyAj aWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkKKyAgIHN0YXRpYyBjaGFyICp0YXJnZXQ7Cisg ICBzdGF0aWMgaW50IHRsZW47CitAQCAtMTIyNCwyNyArMTU1MiwzOCBAQCBybF92aV9jaGFyX3Nl YXJjaCAoY291bnQsIGtleSkKKyAjZW5kaWYKKyAKKyAgIGlmIChrZXkgPT0gJzsnIHx8IGtleSA9 PSAnLCcpCistICAgIF9ybF9jc19kaXIgPSAoa2V5ID09ICc7JykgPyBfcmxfY3Nfb3JpZ19kaXIg OiAtX3JsX2NzX29yaWdfZGlyOworKyAgICB7CisrICAgICAgaWYgKF9ybF9jc19vcmlnX2RpciA9 PSAwKQorKwlyZXR1cm4gLTE7CisrI2lmIGRlZmluZWQgKEhBTkRMRV9NVUxUSUJZVEUpCisrICAg ICAgaWYgKF9ybF92aV9sYXN0X3NlYXJjaF9tYmxlbiA9PSAwKQorKwlyZXR1cm4gLTE7CisrI2Vs c2UKKysgICAgICBpZiAoX3JsX3ZpX2xhc3Rfc2VhcmNoX2NoYXIgPT0gMCkKKysJcmV0dXJuIC0x OworKyNlbmRpZgorKyAgICAgIF9ybF9jc19kaXIgPSAoa2V5ID09ICc7JykgPyBfcmxfY3Nfb3Jp Z19kaXIgOiAtX3JsX2NzX29yaWdfZGlyOworKyAgICB9CisgICBlbHNlCisgICAgIHsKKyAgICAg ICBzd2l0Y2ggKGtleSkKKy0gICAgICAgIHsKKy0gICAgICAgIGNhc2UgJ3QnOgorLSAgICAgICAg ICBfcmxfY3Nfb3JpZ19kaXIgPSBfcmxfY3NfZGlyID0gRlRPOworLSAgICAgICAgICBicmVhazsK KysJeworKwljYXNlICd0JzoKKysJICBfcmxfY3Nfb3JpZ19kaXIgPSBfcmxfY3NfZGlyID0gRlRP OworKwkgIGJyZWFrOworIAorLSAgICAgICAgY2FzZSAnVCc6CistICAgICAgICAgIF9ybF9jc19v cmlnX2RpciA9IF9ybF9jc19kaXIgPSBCVE87CistICAgICAgICAgIGJyZWFrOworKwljYXNlICdU JzoKKysJICBfcmxfY3Nfb3JpZ19kaXIgPSBfcmxfY3NfZGlyID0gQlRPOworKwkgIGJyZWFrOwor IAorLSAgICAgICAgY2FzZSAnZic6CistICAgICAgICAgIF9ybF9jc19vcmlnX2RpciA9IF9ybF9j c19kaXIgPSBGRklORDsKKy0gICAgICAgICAgYnJlYWs7CisrCWNhc2UgJ2YnOgorKwkgIF9ybF9j c19vcmlnX2RpciA9IF9ybF9jc19kaXIgPSBGRklORDsKKysJICBicmVhazsKKyAKKy0gICAgICAg IGNhc2UgJ0YnOgorLSAgICAgICAgICBfcmxfY3Nfb3JpZ19kaXIgPSBfcmxfY3NfZGlyID0gQkZJ TkQ7CistICAgICAgICAgIGJyZWFrOworLSAgICAgICAgfQorKwljYXNlICdGJzoKKysJICBfcmxf Y3Nfb3JpZ19kaXIgPSBfcmxfY3NfZGlyID0gQkZJTkQ7CisrCSAgYnJlYWs7CisrCX0KKyAKKyAg ICAgICBpZiAodmlfcmVkb2luZykKKyAJeworQEAgLTEyNTIsMjEgKzE1OTEsMjcgQEAgcmxfdmlf Y2hhcl9zZWFyY2ggKGNvdW50LCBrZXkpCisgCX0KKyAjaWYgZGVmaW5lZCAoUkVBRExJTkVfQ0FM TEJBQ0tTKQorICAgICAgIGVsc2UgaWYgKFJMX0lTU1RBVEUgKFJMX1NUQVRFX0NBTExCQUNLKSkK Ky0gICAgICAgIHsKKy0gICAgICAgICAgX3JsX2NhbGxiYWNrX2RhdGEgPSBfcmxfY2FsbGJhY2tf ZGF0YV9hbGxvYyAoY291bnQpOworLSAgICAgICAgICBfcmxfY2FsbGJhY2tfZGF0YS0+aTEgPSBf cmxfY3NfZGlyOworLSAgICAgICAgICBfcmxfY2FsbGJhY2tfZnVuYyA9IF9ybF92aV9jYWxsYmFj a19jaGFyX3NlYXJjaDsKKy0gICAgICAgICAgcmV0dXJuICgwKTsKKy0gICAgICAgIH0KKysJewor KwkgIF9ybF9jYWxsYmFja19kYXRhID0gX3JsX2NhbGxiYWNrX2RhdGFfYWxsb2MgKGNvdW50KTsK KysJICBfcmxfY2FsbGJhY2tfZGF0YS0+aTEgPSBfcmxfY3NfZGlyOworKwkgIF9ybF9jYWxsYmFj a19mdW5jID0gX3JsX3ZpX2NhbGxiYWNrX2NoYXJfc2VhcmNoOworKwkgIHJldHVybiAoMCk7Cisr CX0KKyAjZW5kaWYKKyAgICAgICBlbHNlCisgCXsKKyAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJ QllURSkKKy0JICBfcmxfdmlfbGFzdF9zZWFyY2hfbWJsZW4gPSBfcmxfcmVhZF9tYmNoYXIgKF9y bF92aV9sYXN0X3NlYXJjaF9tYmNoYXIsIE1CX0xFTl9NQVgpOworKwkgIGMgPSBfcmxfcmVhZF9t YmNoYXIgKF9ybF92aV9sYXN0X3NlYXJjaF9tYmNoYXIsIE1CX0xFTl9NQVgpOworKwkgIGlmIChj IDw9IDApCisrCSAgICByZXR1cm4gLTE7CisrCSAgX3JsX3ZpX2xhc3Rfc2VhcmNoX21ibGVuID0g YzsKKyAjZWxzZQorIAkgIFJMX1NFVFNUQVRFKFJMX1NUQVRFX01PUkVJTlBVVCk7CistCSAgX3Js X3ZpX2xhc3Rfc2VhcmNoX2NoYXIgPSBybF9yZWFkX2tleSAoKTsKKysJICBjID0gcmxfcmVhZF9r ZXkgKCk7CisgCSAgUkxfVU5TRVRTVEFURShSTF9TVEFURV9NT1JFSU5QVVQpOworKwkgIGlmIChj IDwgMCkKKysJICAgIHJldHVybiAtMTsKKysJICBfcmxfdmlfbGFzdF9zZWFyY2hfY2hhciA9IGM7 CisgI2VuZGlmCisgCX0KKyAgICAgfQorQEAgLTEzMDIsNyArMTY0Nyw3IEBAIHJsX3ZpX21hdGNo IChpZ25vcmUsIGtleSkKKyAJICAgICAgcHJlID0gcmxfcG9pbnQ7CisgCSAgICAgIHJsX2Zvcndh cmRfY2hhciAoMSwga2V5KTsKKyAJICAgICAgaWYgKHByZSA9PSBybF9wb2ludCkKKy0JICAgICAg ICBicmVhazsKKysJCWJyZWFrOworIAkgICAgfQorIAl9CisgICAgICAgZWxzZQorQEAgLTEzMzEs NyArMTY3Niw3IEBAIHJsX3ZpX21hdGNoIChpZ25vcmUsIGtleSkKKyAJICAgIHsKKyAJICAgICAg cG9zID0gX3JsX2ZpbmRfcHJldl9tYmNoYXIgKHJsX2xpbmVfYnVmZmVyLCBwb3MsIE1CX0ZJTkRf QU5ZKTsKKyAJICAgICAgaWYgKHRtcCA9PSBwb3MpCistCSAgICAgICAgcG9zLS07CisrCQlwb3Mt LTsKKyAJICAgIH0KKyAJICBpZiAocG9zID49IDApCisgCSAgICB7CitAQCAtMTQyNiw5ICsxNzcx LDkgQEAgX3JsX3ZpX2NoYW5nZV9jaGFyIChjb3VudCwgYywgbWIpCisgfQorIAorIHN0YXRpYyBp bnQKKy1fcmxfdmlfY2FsbGJhY2tfZ2V0Y2hhciAobWIsIG1ibGVuKQorK19ybF92aV9jYWxsYmFj a19nZXRjaGFyIChtYiwgbWxlbikKKyAgICAgIGNoYXIgKm1iOworLSAgICAgaW50IG1ibGVuOwor KyAgICAgaW50IG1sZW47CisgeworICAgaW50IGM7CisgCitAQCAtMTQzNiw5ICsxNzgxLDEyIEBA IF9ybF92aV9jYWxsYmFja19nZXRjaGFyIChtYiwgbWJsZW4pCisgICBjID0gcmxfcmVhZF9rZXkg KCk7CisgICBSTF9VTlNFVFNUQVRFKFJMX1NUQVRFX01PUkVJTlBVVCk7CisgCisrICBpZiAoYyA8 IDApCisrICAgIHJldHVybiAtMTsKKysKKyAjaWYgZGVmaW5lZCAoSEFORExFX01VTFRJQllURSkK KyAgIGlmIChNQl9DVVJfTUFYID4gMSAmJiBybF9ieXRlX29yaWVudGVkID09IDApCistICAgIGMg PSBfcmxfcmVhZF9tYnN0cmluZyAoYywgbWIsIG1ibGVuKTsKKysgICAgYyA9IF9ybF9yZWFkX21i c3RyaW5nIChjLCBtYiwgbWxlbik7CisgI2VuZGlmCisgCisgICByZXR1cm4gYzsKK0BAIC0xNDU0 LDYgKzE4MDIsOSBAQCBfcmxfdmlfY2FsbGJhY2tfY2hhbmdlX2NoYXIgKGRhdGEpCisgCisgICBf cmxfdmlfbGFzdF9yZXBsYWNlbWVudCA9IGMgPSBfcmxfdmlfY2FsbGJhY2tfZ2V0Y2hhciAobWIs IE1CX0xFTl9NQVgpOworIAorKyAgaWYgKGMgPCAwKQorKyAgICByZXR1cm4gLTE7CisrCisgICBf cmxfY2FsbGJhY2tfZnVuYyA9IDA7CisgICBfcmxfd2FudF9yZWRpc3BsYXkgPSAxOworIAorQEAg LTE0ODUsNiArMTgzNiw5IEBAIHJsX3ZpX2NoYW5nZV9jaGFyIChjb3VudCwga2V5KQorICAgZWxz ZQorICAgICBfcmxfdmlfbGFzdF9yZXBsYWNlbWVudCA9IGMgPSBfcmxfdmlfY2FsbGJhY2tfZ2V0 Y2hhciAobWIsIE1CX0xFTl9NQVgpOworIAorKyAgaWYgKGMgPCAwKQorKyAgICByZXR1cm4gLTE7 CisrCisgICByZXR1cm4gKF9ybF92aV9jaGFuZ2VfY2hhciAoY291bnQsIGMsIG1iKSk7CisgfQor IAorQEAgLTE1NzAsOCArMTkyNCw4IEBAIHJsX3ZpX3JlcGxhY2UgKGNvdW50LCBrZXkpCisgICAg ICAgdmlfcmVwbGFjZV9tYXBbTkVXTElORV0uZnVuY3Rpb24gPSBybF9uZXdsaW5lOworIAorICAg ICAgIC8qIElmIHRoZSBub3JtYWwgdmkgaW5zZXJ0aW9uIGtleW1hcCBoYXMgXkggYm91bmQgdG8g ZXJhc2UsIGRvIHRoZQorLSAgICAgICAgIHNhbWUgaGVyZS4gIFByb2JhYmx5IHNob3VsZCByZW1v dmUgdGhlIGFzc2lnbm1lbnQgdG8gUlVCT1VUIHVwCistICAgICAgICAgdGhlcmUsIGJ1dCBJIGRv bid0IHRoaW5rIGl0IHdpbGwgbWFrZSBhIGRpZmZlcmVuY2UgaW4gcmVhbCBsaWZlLiAqLworKwkg c2FtZSBoZXJlLiAgUHJvYmFibHkgc2hvdWxkIHJlbW92ZSB0aGUgYXNzaWdubWVudCB0byBSVUJP VVQgdXAKKysJIHRoZXJlLCBidXQgSSBkb24ndCB0aGluayBpdCB3aWxsIG1ha2UgYSBkaWZmZXJl bmNlIGluIHJlYWwgbGlmZS4gKi8KKyAgICAgICBpZiAodmlfaW5zZXJ0aW9uX2tleW1hcFtDVFJM ICgnSCcpXS50eXBlID09IElTRlVOQyAmJgorIAkgIHZpX2luc2VydGlvbl9rZXltYXBbQ1RSTCAo J0gnKV0uZnVuY3Rpb24gPT0gcmxfcnVib3V0KQorIAl2aV9yZXBsYWNlX21hcFtDVFJMICgnSCcp XS5mdW5jdGlvbiA9IHJsX3ZpX292ZXJzdHJpa2VfZGVsZXRlOworQEAgLTE2MTksNyArMTk3Myw3 IEBAIF9ybF92aV9zZXRfbWFyayAoKQorICAgY2ggPSBybF9yZWFkX2tleSAoKTsKKyAgIFJMX1VO U0VUU1RBVEUoUkxfU1RBVEVfTU9SRUlOUFVUKTsKKyAKKy0gIGlmIChjaCA8ICdhJyB8fCBjaCA+ ICd6JykKKysgIGlmIChjaCA8IDAgfHwgY2ggPCAnYScgfHwgY2ggPiAneicpCS8qIG1ha2UgdGVz dCBhZ2FpbnN0IDAgZXhwbGljaXQgKi8KKyAgICAgeworICAgICAgIHJsX2RpbmcgKCk7CisgICAg ICAgcmV0dXJuIC0xOworQEAgLTE2NzEsNyArMjAyNSw3IEBAIF9ybF92aV9nb3RvX21hcmsgKCkK KyAgICAgICBybF9wb2ludCA9IHJsX21hcms7CisgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKy0g IGVsc2UgaWYgKGNoIDwgJ2EnIHx8IGNoID4gJ3onKQorKyAgZWxzZSBpZiAoY2ggPCAwIHx8IGNo IDwgJ2EnIHx8IGNoID4gJ3onKQkvKiBtYWtlIHRlc3QgYWdhaW5zdCAwIGV4cGxpY2l0ICovCisg ICAgIHsKKyAgICAgICBybF9kaW5nICgpOworICAgICAgIHJldHVybiAtMTsKKy0tLSAvZGV2L251 bGwKKysrKyBiL3JlYWRsaW5lL3hmcmVlLmMKK0BAIC0wLDAgKzEsNTAgQEAKKysvKiB4ZnJlZS5j IC0tIHNhZmUgdmVyc2lvbiBvZiBmcmVlIHRoYXQgaWdub3JlcyBhdHRlbXB0cyB0byBmcmVlIE5V TCAqLworKworKy8qIENvcHlyaWdodCAoQykgMTk5MS0yMDEwIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgUmVhZGxpbmUg TGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBsaW5lcyBvZiB0 ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4gICAgICAKKysK KysgICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKwor KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCBSZWFkbGluZS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysqLworKworKyNkZWZpbmUgUkVBRExJTkVfTElC UkFSWQorKworKyNpZiBkZWZpbmVkIChIQVZFX0NPTkZJR19IKQorKyNpbmNsdWRlIDxjb25maWcu aD4KKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZCAoSEFWRV9TVERMSUJfSCkKKysjICBpbmNsdWRl IDxzdGRsaWIuaD4KKysjZWxzZQorKyMgIGluY2x1ZGUgImFuc2lfc3RkbGliLmgiCisrI2VuZGlm IC8qIEhBVkVfU1RETElCX0ggKi8KKysKKysjaW5jbHVkZSAieG1hbGxvYy5oIgorKworKy8qICoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKiogKi8KKysvKgkJCQkJCQkJICAgICovCisrLyoJCSAgIE1lbW9yeSBEZWFsbG9jYXRpb24u CQkJCSAgICAqLworKy8qCQkJCQkJCQkgICAgKi8KKysvKiAqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCisrCisrLyogVXNl IHRoaXMgYXMgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBhZGRpbmcgdW53aW5kIHByb3RlY3Rz IHNvIHdlCisrICAgZG9uJ3QgbmVlZCB0byBrbm93IHdoYXQgZnJlZSgpIHJldHVybnMuICovCisr dm9pZAorK3hmcmVlIChzdHJpbmcpCisrICAgICBQVFJfVCBzdHJpbmc7CisreworKyAgaWYgKHN0 cmluZykKKysgICAgZnJlZSAoc3RyaW5nKTsKKyt9CistLS0gYS9yZWFkbGluZS94bWFsbG9jLmMK KysrKyBiL3JlYWRsaW5lL3htYWxsb2MuYworQEAgLTEsMjMgKzEsMjQgQEAKKyAvKiB4bWFsbG9j LmMgLS0gc2FmZSB2ZXJzaW9ucyBvZiBtYWxsb2MgYW5kIHJlYWxsb2MgKi8KKyAKKy0vKiBDb3B5 cmlnaHQgKEMpIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogQ29weXJp Z2h0IChDKSAxOTkxLTIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCistICAg VGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIFJlYWRsaW5lLCBhIGxpYnJhcnkgZm9yIHJlYWRpbmcg bGluZXMKKy0gICBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRp dGluZy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnkg KFJlYWRsaW5lKSwgYSBsaWJyYXJ5CisrICAgZm9yIHJlYWRpbmcgbGluZXMgb2YgdGV4dCB3aXRo IGludGVyYWN0aXZlIGlucHV0IGFuZCBoaXN0b3J5IGVkaXRpbmcuICAgICAgCisgCistICAgUmVh ZGxpbmUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdAorLSAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorLSAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKKy0gICBsYXRlciB2ZXJz aW9uLgorKyAgIFJlYWRsaW5lIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAKKy0gICBSZWFkbGluZSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKy0gICBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCist ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZSBHTlUKKy0gICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCBS ZWFkbGluZTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl CistICAgU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJv c3RvbiwgTUEgMDIxMTEgVVNBLiAqLworKyAgIGFsb25nIHdpdGggUmVhZGxpbmUuICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKi8KKysKKyAjZGVmaW5lIFJF QURMSU5FX0xJQlJBUlkKKyAKKyAjaWYgZGVmaW5lZCAoSEFWRV9DT05GSUdfSCkKK0BAIC03Niwx MyArNzcsMyBAQCB4cmVhbGxvYyAocG9pbnRlciwgYnl0ZXMpCisgICAgIG1lbW9yeV9lcnJvcl9h bmRfYWJvcnQgKCJ4cmVhbGxvYyIpOworICAgcmV0dXJuICh0ZW1wKTsKKyB9CistCistLyogVXNl IHRoaXMgYXMgdGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBhZGRpbmcgdW53aW5kIHByb3RlY3Rz IHNvIHdlCistICAgZG9uJ3QgbmVlZCB0byBrbm93IHdoYXQgZnJlZSgpIHJldHVybnMuICovCist dm9pZAorLXhmcmVlIChzdHJpbmcpCistICAgICBQVFJfVCBzdHJpbmc7CisteworLSAgaWYgKHN0 cmluZykKKy0gICAgZnJlZSAoc3RyaW5nKTsKKy19CistLS0gYS9yZWFkbGluZS94bWFsbG9jLmgK KysrKyBiL3JlYWRsaW5lL3htYWxsb2MuaAorQEAgLTEsMjQgKzEsMjMgQEAKKyAvKiB4bWFsbG9j LmggLS0gbWVtb3J5IGFsbG9jYXRpb24gdGhhdCBhYm9ydHMgb24gZXJyb3JzLiAqLworIAorLS8q IENvcHlyaWdodCAoQykgMTk5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBD b3B5cmlnaHQgKEMpIDE5OTktMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAK Ky0gICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIFJlYWRsaW5lIExpYnJhcnksIGEgbGli cmFyeSBmb3IKKy0gICByZWFkaW5nIGxpbmVzIG9mIHRleHQgd2l0aCBpbnRlcmFjdGl2ZSBpbnB1 dCBhbmQgaGlzdG9yeSBlZGl0aW5nLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUg UmVhZGxpbmUgTGlicmFyeSAoUmVhZGxpbmUpLCBhIGxpYnJhcnkKKysgICBmb3IgcmVhZGluZyBs aW5lcyBvZiB0ZXh0IHdpdGggaW50ZXJhY3RpdmUgaW5wdXQgYW5kIGhpc3RvcnkgZWRpdGluZy4g ICAgICAKKyAKKy0gICBUaGUgR05VIFJlYWRsaW5lIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQKKy0gICBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IKKysg ICBSZWFkbGluZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCistICAgVGhlIEdOVSBSZWFkbGluZSBMaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZQorLSAgIHVzZWZ1bCwg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkKKy0gICBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisrICAgUmVhZGxpbmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIAorLSAgIFRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBvZnRlbiBzaGlwcGVkIHdpdGggR05VIHNvZnR3YXJlLCBh bmQKKy0gICBpcyBnZW5lcmFsbHkga2VwdCBpbiBhIGZpbGUgY2FsbGVkIENPUFlJTkcgb3IgTElD RU5TRS4gIElmIHlvdSBkbyBub3QKKy0gICBoYXZlIGEgY29weSBvZiB0aGUgbGljZW5zZSwgd3Jp dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICA1OSBUZW1wbGUgUGxhY2Us IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMSBVU0EuICovCisrICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBh bG9uZyB3aXRoIFJlYWRsaW5lLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorKyovCisgCisgI2lmICFkZWZpbmVkIChfWE1BTExPQ19IXykKKyAjZGVmaW5lIF9Y TUFMTE9DX0hfCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NzAxMTMxLXJlYWRsaW5lNjItMm9mMy5wYXRj aCBiL2dkYi1iejcwMTEzMS1yZWFkbGluZTYyLTJvZjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZTQ0NWJkZQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1iejcwMTEz MS1yZWFkbGluZTYyLTJvZjMucGF0Y2gKQEAgLTAsMCArMSwyMzEgQEAKK2h0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTA1L21zZzAwMDAyLmh0bWwKK1N1YmplY3Q6IFtw YXRjaF0gdGVzdHN1aXRlOiBUZXN0IHJlYWRsaW5lLTYuMiAiYXNrIiByZWdyZXNzaW9uCisKK0hp LAorCit0aGlzIHByb2JsZW0gZG9lcyBub3QgYWZmZWN0IGRlZmF1bHQgRlNGIEdEQiBidWlsZCBh cyBpdCBpcyB1c2luZyBidW5kbGVkCityZWFkbGluZS01LjEuICBCdXQgd2l0aCBzeXN0ZW0gcmVh ZGxpbmUtNi4yIGFuZCBidWlsZCB1c2luZzoKKyAgLS13aXRoLXN5c3RlbS1yZWFkbGluZSAgdXNl IGluc3RhbGxlZCByZWFkbGluZSBsaWJyYXJ5CisKK0dEQiB3aWxsIG5vIGxvbmdlciBhc2sgYWJv dXQgZGlzcGxheWluZyB0b28gbWFueSBzeW1ib2xzIGFuZCBkdW1wcyB0aGVtIGFsbAoraW1tZWRp YXRlbHkuCitQQVNTOgorCSQgZ2RiIGdkYgorCShnZGIpIHAgPHRhYj48dGFiPgorCURpc3BsYXkg YWxsIDIxNDgyIHBvc3NpYmlsaXRpZXM/ICh5IG9yIG4pXworRkFJTDoKKwkkIGdkYiBnZGIKKwko Z2RiKSBwIDx0YWI+PHRhYj4KKwlEaXNwbGF5IGFsbCAyMjEyOSBwb3NzaWJpbGl0aWVzPyAoeSBv ciBuKQorCS4uLy4uL2JmZC9hb3V0LXRhcmdldC5oICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjc190b19zZWN0aW9uCisJLi4vLi4vYmZkL2FvdXQzMi5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0aW1lCisJPHNjcmVlbnMgYW5kIHNjcmVl bnMgb2YgZHVtcHMgd2l0aG91dCBhbnkgcXVlc3Rpb24+CisKK1RoaXMgcmVncmVzc2lvbiB3aWxs IHNvb24gc3RhcnQgYWZmZWN0aW5nIGRpc3Ryb3M6CisJRlNGIEdEQiBIRUFEICAtIFBBU1MgLSB1 c2luZyBidW5kbGVkIHJlYWRsaW5lLTUuMQorCWZlZG9yYS0xNSAgICAgLSBGQUlMIC0gdXNpbmcg c3lzdGVtICByZWFkbGluZS02LjIKKwlmZWRvcmEtMTQgICAgIC0gUEFTUyAtIHVzaW5nIHN5c3Rl bSAgcmVhZGxpbmUtNi4xCisJZGViaWFuLTYuMCAgICAtIFBBU1MgLSB1c2luZyBzeXN0ZW0gIHJl YWRsaW5lLTYuMQorCWt1YnVudHUtMTAuMTAgLSBQQVNTIC0gdXNpbmcgc3lzdGVtICByZWFkbGlu ZS02LjEKKworSSBoYXZlIGFza2VkIGFib3V0IGl0IG9uIHJlYWRsaW5lIG1sOgorCVJlOiBbQnVn LXJlYWRsaW5lXSBjYWxsYmFjayBtb2RlIHBhZ2VyIGRpc2FibGUgc3RhdHVzCisJaHR0cHM6Ly9s aXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctcmVhZGxpbmUvMjAxMS0wNC9tc2cwMDAxMi5o dG1sCitUaGUgc3VnZ2VzdGVkIHdvcmthcm91bmQgKGluIGZhY3QgdGhlIHJlYWRsaW5lLTUuMSBj b2RlIHN0YXRlKSBnb2luZyB0byBwYXRjaAoraW50byB0aGUgcHJvcG9zZWQgRlNGIEdEQiBidW5k bGVkIHJlYWRsaW5lLTYuMi4gIERpc3Ryb3MgdGhlbiBjYW4gc3RvcCB1c2luZworLS13aXRoLXN5 c3RlbS1yZWFkbGluZSB0byBzdGlsbCBmZWF0dXJlIHJlY2VudCBhbmQgc3lzdGVtIG1hdGNoaW5n IHJlYWRsaW5lCit1bnRpbCByZWFkbGluZS03LjAgZ2V0cyByZWxlYXNlZC4KKworVGhpcyByZWdy ZXNzaW9uIGhhcyBiZWVuIHNvIGZhciBjYXVnaHQgb25seSB3aXRoIHN5c3RlbSBkZWJ1ZyBpbmZv cyBpbnN0YWxsZWQ6CisJLVBBU1M6IGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwOiBjb21wbGV0ZSAo MikgJ3Agbm9fdmFyX25hbWVkX3RoaXMtJworCS1QQVNTOiBnZGIuYmFzZS9jb21wbGV0aW9uLmV4 cDogY29tcGxldGUgJ3AgdmFsdWVzWzBdLmEnCisJLVBBU1M6IGdkYi5iYXNlL2NvbXBsZXRpb24u ZXhwOiBjb21wbGV0ZSAncCB2YWx1ZXNbMF0gLiBhJworCS1QQVNTOiBnZGIuYmFzZS9jb21wbGV0 aW9uLmV4cDogY29tcGxldGUgJ3AgJnZhbHVlc1swXSAtPiBhJworCS1QQVNTOiBnZGIuYmFzZS9j b21wbGV0aW9uLmV4cDogY29wbWxldGlvbiBvZiBmaWVsZCBpbiBhbm9ueW1vdXMgdW5pb24KKwkr RkFJTDogZ2RiLmJhc2UvY29tcGxldGlvbi5leHA6ICh0aW1lb3V0KSBjb21wbGV0ZSAoMikgJ3Ag bm9fdmFyX25hbWVkX3RoaXMtJworCStGQUlMOiBnZGIuYmFzZS9jb21wbGV0aW9uLmV4cDogKHRp bWVvdXQpIGNvbXBsZXRlICdwIHZhbHVlc1swXS5hJyAyCisJK0ZBSUw6IGdkYi5iYXNlL2NvbXBs ZXRpb24uZXhwOiAodGltZW91dCkgY29tcGxldGUgJ3AgdmFsdWVzWzBdIC4gYScgMgorCStGQUlM OiBnZGIuYmFzZS9jb21wbGV0aW9uLmV4cDogKHRpbWVvdXQpIGNvbXBsZXRlICdwICZ2YWx1ZXNb MF0gLT4gYScgMgorCStGQUlMOiBnZGIuYmFzZS9jb21wbGV0aW9uLmV4cDogY29wbWxldGlvbiBv ZiBmaWVsZCBpbiBhbm9ueW1vdXMgdW5pb24KKworSSB3aWxsIGNoZWNrIGl0IGluIHdpdGggbm8g Y29tbWVudHMuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiL3Rlc3RzdWl0ZS8KKzIwMTEtMDUt MDEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSogZ2Ri LmJhc2UvcmVhZGxpbmUtYXNrLmM6IE5ldyBmaWxlLgorCSogZ2RiLmJhc2UvcmVhZGxpbmUtYXNr LmV4cDogTmV3IGZpbGUuCisJKiBnZGIuYmFzZS9yZWFkbGluZS1hc2suaW5wdXRyYzogTmV3IGZp bGUuCisKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcmVhZGxp bmUtYXNrLmMKK0BAIC0wLDAgKzEsMjMgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2Yg R0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr CisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KKysKKytpbnQKKytzeW1ib2xfMDFfbGVuZ3RoXzQwX19fX19fX19fX19fX19fX19f X19fLAorK3N5bWJvbF8wMl9sZW5ndGhfNDBfX19fX19fX19fX19fX19fX19fX18sCisrc3ltYm9s XzAzX2xlbmd0aF80MF9fX19fX19fX19fX19fX19fX19fXywKKytzeW1ib2xfMDRfbGVuZ3RoXzQw X19fX19fX19fX19fX19fX19fX19fLAorK3N5bWJvbF8xMF9sZW5ndGhfNDBfX19fX19fX19fX19f X19fX19fX187CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Jl YWRsaW5lLWFzay5leHAKK0BAIC0wLDAgKzEsMTE4IEBACisrIyBDb3B5cmlnaHQgKEMpIDIwMTEg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKysKKytzZXQgdGVzdGZpbGUgcmVhZGxpbmUtYXNrCisrc2V0IGV4ZWN1dGFibGUg JHt0ZXN0ZmlsZX0ueAorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQgYmluZmlsZSAk e29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0KKytzZXQgaW5wdXRyYyAke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9LmlucHV0cmMKKysKKytpZiB7IFtnZGJfY29tcGlsZSAiJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgb2JqZWN0IHtkZWJ1Z31d ICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAke3Rlc3RmaWxlfS5leHAKKysgICAgcmV0dXJuIC0x CisrfQorKworKyMgSU5QVVRSQyBnZXRzIHJlc2V0IGZvciB0aGUgbmV4dCB0ZXN0ZmlsZS4KKytz ZXRlbnYgSU5QVVRSQyAkaW5wdXRyYworK2NsZWFuX3Jlc3RhcnQgJHtleGVjdXRhYmxlfQorKwor K2dkYl90ZXN0X25vX291dHB1dCAic2V0IHdpZHRoIDUwIgorK2dkYl90ZXN0X25vX291dHB1dCAi c2V0IGhlaWdodCAzIgorKworK3NldCBjbWQgInAgc3ltYm9sXzAiCisrc2VuZF9nZGIgIiRjbWRc dCIKKytzZXQgdGVzdCAiYmVsbCBmb3IgbW9yZSBtZXNzYWdlIgorK2dkYl90ZXN0X211bHRpcGxl ICIiICR0ZXN0IHsKKysgICAgLXJlICIkY21kXDAwNyQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9 CisrfQorKworK3NlbmRfZ2RiICJcdCIKKytzZXQgdGVzdCAibW9yZSBtZXNzYWdlIGZvciAwMSBh bmQgMDIiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgeworKyAgICAtcmUgIl5cclxuc3lt Ym9sXzAxX2xlbmd0aF80MF9fX19fX19fX19fX19fX19fX19fX1xyXG5zeW1ib2xfMDJfbGVuZ3Ro XzQwX19fX19fX19fX19fX19fX19fX19fXHJcbi0tTW9yZS0tJCIgeworKwlwYXNzICR0ZXN0Cisr ICAgIH0KKysgICAgLXJlICIkZ2RiX3Byb21wdCAiIHsKKysJZmFpbCAkdGVzdAorKyAgICB9Cisr fQorKworKyMgVGhlcmUgZ2V0IHNvbWUgVlQxMDAgY2hhcmFjdGVycyBwcmludGVkLgorKworK3Nl bmRfZ2RiICJcciIKKytzZXQgdGVzdCAibW9yZSBtZXNzYWdlIGZvciAwMyIKKytnZGJfdGVzdF9t dWx0aXBsZSAiIiAkdGVzdCB7CisrICAgIC1yZSAiXHJzeW1ib2xfMDNfbGVuZ3RoXzQwX19fX19f X19fX19fX19fX19fX19fXHJcbi0tTW9yZS0tJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKyt9 CisrCisrIyAiJGdkYl9wcm9tcHQgJCIgd2lsbCBub3QgbWF0Y2ggYXMgJGNtZCBnZXRzIG91dHB1 dDogJGdkYl9wcm9tcHQgcCBzeW1ib2xfMAorKyMgQW5kICIkZ2RiX3Byb21wdCBwIHN5bWJvbF8w IiBjYW5ub3QgYmUgbWF0Y2hlZCBhcyB0aGUgZGVmYXVsdCAiJGdkYl9wcm9tcHQgJCIKKysjIHN0 cmluZyBmcm9tIGdkYl90ZXN0X211bHRpcGxlIGNvdWxkIG1hdGNoIGVhcmxpZXIuCisrCisrc2Vu ZF9nZGIgIlxyIgorK3NldCB0ZXN0ICJtb3JlIGZpbmlzaCBmb3IgMDQiCisrZ2RiX3Rlc3RfbXVs dGlwbGUgIiIgJHRlc3QgeworKyAgICAtcmUgIlxyc3ltYm9sXzA0X2xlbmd0aF80MF9fX19fX19f X19fX19fX19fX19fX1xyXG4kZ2RiX3Byb21wdCAiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9Cisr fQorKworK2dkYl90ZXN0ICJmb28iIHtObyBzeW1ib2wgInN5bWJvbF8wZm9vIiBpbiBjdXJyZW50 IGNvbnRleHRcLn0gImFib3J0IG1vcmUgbWVzc2FnZSIKKysKKytzZXQgY21kICJwIHN5bWJvbF8i Cisrc2VuZF9nZGIgIiRjbWRcdCIKKytzZXQgdGVzdCAiYmVsbCBmb3IgYXNrIG1lc3NhZ2UiCisr Z2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgeworKyAgICAtcmUgIiRjbWRcMDA3JCIgeworKwlw YXNzICR0ZXN0CisrICAgIH0KKyt9CisrCisrc2VuZF9nZGIgIlx0IgorK3NldCB0ZXN0ICJhc2sg bWVzc2FnZSIKKytnZGJfdGVzdF9tdWx0aXBsZSAiIiAkdGVzdCB7CisrICAgIC1yZSAiXlxyXG5E aXNwbGF5IGFsbCA1IHBvc3NpYmlsaXRpZXNcXD8gXFwoeSBvciBuXFwpJCIgeworKwlwYXNzICR0 ZXN0CisrICAgIH0KKysgICAgLXJlICIkZ2RiX3Byb21wdCAiIHsKKysJZmFpbCAkdGVzdAorKwly ZXR1cm4gMAorKyAgICB9CisrfQorKworK3NlbmRfZ2RiICJ5IgorK3NldCB0ZXN0ICJhc2sgbWVz c2FnZSBmb3IgMDEgYW5kIDAyIgorK2dkYl90ZXN0X211bHRpcGxlICIiICR0ZXN0IHsKKysgICAg LXJlICJeXHJcbnN5bWJvbF8wMV9sZW5ndGhfNDBfX19fX19fX19fX19fX19fX19fX19cclxuc3lt Ym9sXzAyX2xlbmd0aF80MF9fX19fX19fX19fX19fX19fX19fX1xyXG4tLU1vcmUtLSQiIHsKKysJ cGFzcyAkdGVzdAorKyAgICB9CisrfQorKworKyMgVGhlcmUgZ2V0IHNvbWUgVlQxMDAgY2hhcmFj dGVycyBwcmludGVkLgorKyMgU2VlIHRoZSAiJGdkYl9wcm9tcHQgIiBtYXRjaCBsaWtlIGluICJt b3JlIGZpbmlzaCBmb3IgMDQiLgorKworK3NlbmRfZ2RiICJuIgorK3NldCB0ZXN0ICJhc2sgbWVz c2FnZSBubyIKKytnZGJfdGVzdF9tdWx0aXBsZSAiIiAkdGVzdCB7CisrICAgIC1yZSAiXHIkZ2Ri X3Byb21wdCAiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrfQorKworK2dkYl90ZXN0ICJmb28i IHtObyBzeW1ib2wgInN5bWJvbF9mb28iIGluIGN1cnJlbnQgY29udGV4dFwufSAiYWJvcnQgYXNr IG1lc3NhZ2UiCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Jl YWRsaW5lLWFzay5pbnB1dHJjCitAQCAtMCwwICsxLDE2IEBACisrIyBDb3B5cmlnaHQgKEMpIDIw MTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKysKKytzZXQgY29tcGxldGlvbi1xdWVyeS1pdGVtcyA1CisKCmRpZmYgLS1n aXQgYS9nZGItYno3MDExMzEtcmVhZGxpbmU2Mi0zb2YzLnBhdGNoIGIvZ2RiLWJ6NzAxMTMxLXJl YWRsaW5lNjItM29mMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40 MWQyMzc0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWJ6NzAxMTMxLXJlYWRsaW5lNjItM29mMy5w YXRjaApAQCAtMCwwICsxLDExNyBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRj aGVzLzIwMTEtMDUvbXNnMDAwMTAuaHRtbAorU3ViamVjdDogW3BhdGNoIDQvM10gcmVhZGxpbmUt Ni4yOiBTdWJzdGl0dXRlIGluYy1oaXN0LnRleGluZm8KKworSGksCisKK2ZvcmdvdCB0aGUgcGF0 Y2hzZXQgaGFkIGEgYG1ha2UgZG9jJyByZWdyZXNzaW9uOgorbWFrZTogKioqIE5vIHJ1bGUgdG8g bWFrZSB0YXJnZXQgYC4uLy4uLy4uL2dkYi9kb2MvLi4vLi4vcmVhZGxpbmUvZG9jL2luYy1oaXN0 LnRleGluZm8nLCBuZWVkZWQgYnkgYGdkYi5pbmZvJy4gIFN0b3AuCisKK1RoZXJlIHdhcyBhIGNv cHkgaHN1c2VyLnRleGkgLT4gaW5jLWhpc3QudGV4aW5mbyBiZWZvcmUgd2l0aCB0aGlzIGRpZmY6 CisJQEAgLTI2LDkgKzI2LDkgQEAgaW50byBhbm90aGVyIGxhbmd1YWdlLCB1bmRlciB0aGUgYWJv dmUgYworCSBAbm9kZSBVc2luZyBIaXN0b3J5IEludGVyYWN0aXZlbHkKKwkgQGNoYXB0ZXIgVXNp bmcgSGlzdG9yeSBJbnRlcmFjdGl2ZWx5CisJIAorCS1AaWZjbGVhciBCYXNoRmVhdHVyZXMKKwkt QGRlZmNvZGVpbmRleCBidAorCS1AZW5kIGlmY2xlYXIKKwkrQGMgQGlmY2xlYXIgQmFzaEZlYXR1 cmVzCisJK0BjIEBkZWZjb2RlaW5kZXggYnQKKwkrQGMgQGVuZCBpZmNsZWFyCisJIAorCSBAaWZz ZXQgQmFzaEZlYXR1cmVzCisJIFRoaXMgY2hhcHRlciBkZXNjcmliZXMgaG93IHRvIHVzZSB0aGUg QHNje2dudX0gSGlzdG9yeSBMaWJyYXJ5CisJQEAgLTM5LDkgKzM5LDkgQEAgc2VlIHRoZSBAc2N7 Z251fSBSZWFkbGluZSBMaWJyYXJ5IE1hbnVhbAorCSBAZW5kIGlmc2V0CisJIEBpZmNsZWFyIEJh c2hGZWF0dXJlcworCSBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIGhvdyB0byB1c2UgdGhlIEBzY3tn bnV9IEhpc3RvcnkgTGlicmFyeSBpbnRlcmFjdGl2ZWx5LAorCS1mcm9tIGEgdXNlcidzIHN0YW5k cG9pbnQuICBJdCBzaG91bGQgYmUgY29uc2lkZXJlZCBhIHVzZXIncyBndWlkZS4gIEZvcgorCS1p bmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgQHNje2dudX0gSGlzdG9yeSBMaWJyYXJ5IGluIHlvdXIg b3duIHByb2dyYW1zLAorCS1AcHhyZWZ7UHJvZ3JhbW1pbmcgd2l0aCBHTlUgSGlzdG9yeX0uCisJ K2Zyb20gYSB1c2VyJ3Mgc3RhbmRwb2ludC4gIEl0IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgdXNl cidzIGd1aWRlLgorCStGb3IgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIEBzY3tnbnV9IEhpc3Rv cnkgTGlicmFyeSBpbiBvdGhlciBwcm9ncmFtcywKKwkrc2VlIHRoZSBAc2N7Z251fSBSZWFkbGlu ZSBMaWJyYXJ5IE1hbnVhbC4KKwkgQGVuZCBpZmNsZWFyCisJIAorCSBAaWZzZXQgQmFzaEZlYXR1 cmVzCisKK1VzZWQgc2xpZ2h0bHkgYWx0ZXJuYXRpdmUgb25lIHdpdGggSU1PIGJldHRlciByZWZl cmVuY2UgYW5kIEkgaGF2ZSBhbHNvIGtlcHQKK2hzdXNlci50ZXhpIGluIHBsYWNlIGFzIHJlYWRs aW5lLyBpbiBzcmMvIGlzIG5vIGxvbmdlciBhIHN0YW5kYWxvbmUgcmVhZGxpbmUKK2Rpc3RyaWJ1 dGlvbiBhbnl3YXkuCisKKworU29ycnksCitKYW4KKworCitnZGIvZG9jLworMjAxMS0wNS0wMiAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorCisJKiBNYWtlZmls ZS5pbiAoR0RCX0RPQ19TT1VSQ0VfSU5DTFVERVMpOiBSZW5hbWUgaW5jLWhpc3QudGV4aW5mbyB0 bworCWhzdXNlci50ZXhpLgorCSogZ2RiLnRleGluZm8gPCFTWVNURU1fUkVBRExJTkU+OiBSZW5h bWUgaW5jLWhpc3QudGV4aW5mbyBpbmNsdXNpb24gYW5kCisJY29tbWVudCB0byBoc3VzZXIudGV4 aS4gIENoYW5nZSBybHVzZXIudGV4aSBuYW1lIGluIHRoZSBjb21tZW50LgorCityZWFkbGluZS9k b2MvCisyMDExLTA1LTAyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+CisKKwkqIGhzdXNlci50ZXhpIChVc2luZyBIaXN0b3J5IEludGVyYWN0aXZlbHkpOiBEaXNh YmxlICFCYXNoRmVhdHVyZXMKKwlAZGVmY29kZWluZGV4LiAgTWFrZSB0aGUgYFByb2dyYW1taW5n IHdpdGggR05VIEhpc3RvcnknIHJlZmVyZW5jZQorCWV4dGVybmFsLgorCistLS0gYS9nZGIvZG9j L01ha2VmaWxlLmluCisrKysgYi9nZGIvZG9jL01ha2VmaWxlLmluCitAQCAtMTE3LDcgKzExNyw3 IEBAIEdEQl9ET0NfU09VUkNFX0lOQ0xVREVTID0gXAorIAkkKHNyY2RpcikvZ3BsLnRleGkgXAor IAkkKHNyY2RpcikvYWdlbnRleHByLnRleGkgXAorIAkkKFJFQURMSU5FX0RJUikvcmx1c2VyLnRl eGkgXAorLQkkKFJFQURMSU5FX0RJUikvaW5jLWhpc3QudGV4aW5mbworKwkkKFJFQURMSU5FX0RJ UikvaHN1c2VyLnRleGkKKyBHREJfRE9DX0JVSUxEX0lOQ0xVREVTID0gXAorIAlnZGItY2ZnLnRl eGkgXAorIAlHREJ2bi50ZXhpCistLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCisrKysgYi9nZGIv ZG9jL2dkYi50ZXhpbmZvCitAQCAtMzEwMDgsMTMgKzMxMDA4LDEzIEBAIHRoaW5ncyB3aXRob3V0 IGZpcnN0IHVzaW5nIHRoZSBkZWJ1Z2dlciB0byBmaW5kIHRoZSBmYWN0cy4KKyAKKyBAYyBUaGUg cmVhZGxpbmUgZG9jdW1lbnRhdGlvbiBpcyBkaXN0cmlidXRlZCB3aXRoIHRoZSByZWFkbGluZSBj b2RlCisgQGMgYW5kIGNvbnNpc3RzIG9mIHRoZSB0d28gZm9sbG93aW5nIGZpbGVzOgorLUBjICAg ICBybHVzZXIudGV4aW5mbworLUBjICAgICBpbmMtaGlzdC50ZXhpbmZvCisrQGMgICAgIHJsdXNl ci50ZXhpCisrQGMgICAgIGhzdXNlci50ZXhpCisgQGMgVXNlIC1JIHdpdGggbWFrZWluZm8gdG8g cG9pbnQgdG8gdGhlIGFwcHJvcHJpYXRlIGRpcmVjdG9yeSwKKyBAYyBlbnZpcm9ubWVudCB2YXIg VEVYSU5QVVRTIHdpdGggVGVYLgorIEBpZmNsZWFyIFNZU1RFTV9SRUFETElORQorIEBpbmNsdWRl IHJsdXNlci50ZXhpCistQGluY2x1ZGUgaW5jLWhpc3QudGV4aW5mbworK0BpbmNsdWRlIGhzdXNl ci50ZXhpCisgQGVuZCBpZmNsZWFyCisgCisgCistLS0gYS9yZWFkbGluZS9kb2MvaHN1c2VyLnRl eGkKKysrKyBiL3JlYWRsaW5lL2RvYy9oc3VzZXIudGV4aQorQEAgLTI2LDkgKzI2LDEwIEBAIGlu dG8gYW5vdGhlciBsYW5ndWFnZSwgdW5kZXIgdGhlIGFib3ZlIGNvbmRpdGlvbnMgZm9yIG1vZGlm aWVkIHZlcnNpb25zLgorIEBub2RlIFVzaW5nIEhpc3RvcnkgSW50ZXJhY3RpdmVseQorIEBjaGFw dGVyIFVzaW5nIEhpc3RvcnkgSW50ZXJhY3RpdmVseQorIAorLUBpZmNsZWFyIEJhc2hGZWF0dXJl cworLUBkZWZjb2RlaW5kZXggYnQKKy1AZW5kIGlmY2xlYXIKKytAYyBHREIgYnVuZGxpbmcgbW9k aWZpY2F0aW9uOgorK0BjIEBpZmNsZWFyIEJhc2hGZWF0dXJlcworK0BjIEBkZWZjb2RlaW5kZXgg YnQKKytAYyBAZW5kIGlmY2xlYXIKKyAKKyBAaWZzZXQgQmFzaEZlYXR1cmVzCisgVGhpcyBjaGFw dGVyIGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoZSBAc2N7Z251fSBIaXN0b3J5IExpYnJhcnkKK0BA IC00MSw3ICs0Miw4IEBAIHNlZSB0aGUgQHNje2dudX0gUmVhZGxpbmUgTGlicmFyeSBNYW51YWwu CisgVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyBob3cgdG8gdXNlIHRoZSBAc2N7Z251fSBIaXN0b3J5 IExpYnJhcnkgaW50ZXJhY3RpdmVseSwKKyBmcm9tIGEgdXNlcidzIHN0YW5kcG9pbnQuICBJdCBz aG91bGQgYmUgY29uc2lkZXJlZCBhIHVzZXIncyBndWlkZS4gIEZvcgorIGluZm9ybWF0aW9uIG9u IHVzaW5nIHRoZSBAc2N7Z251fSBIaXN0b3J5IExpYnJhcnkgaW4geW91ciBvd24gcHJvZ3JhbXMs CistQHB4cmVme1Byb2dyYW1taW5nIHdpdGggR05VIEhpc3Rvcnl9LgorK0BjIEdEQiBidW5kbGlu ZyBtb2RpZmljYXRpb246CisrQHB4cmVme1Byb2dyYW1taW5nIHdpdGggR05VIEhpc3RvcnksICwg LCBoaXN0b3J5LCBHTlUgSGlzdG9yeSBMaWJyYXJ5fS4KKyBAZW5kIGlmY2xlYXIKKyAKKyBAaWZz ZXQgQmFzaEZlYXR1cmVzCisKCmRpZmYgLS1naXQgYS9nZGItcmVhZGxpbmUtNi4wLXNpZ25hbC5w YXRjaCBiL2dkYi1yZWFkbGluZS02LjAtc2lnbmFsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA3OWMzNmIwLi4wMDAwMDAwCi0tLSBhL2dkYi1yZWFkbGluZS02LjAtc2lnbmFs LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjY2ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTExL21zZzAwNTk2Lmh0bWwKLVN1YmplY3Q6IFtnZGIg RllJLXBhdGNoXSBjYWxsYmFjay1tb2RlIHJlYWRsaW5lLTYuMCByZWdyZXNzaW9uCi0KLUhpIENo ZXQsCi0KLUZTRiBHREIgY3VycmVudGx5IHNoaXBzIGJ1bmRsZWQgd2l0aCByZWFkbGluZS01LjIg d2hpY2ggd29ya3MgZmluZS4KLUJ1dCB1c2luZyAtLXdpdGgtc3lzdGVtLXJlYWRsaW5lIGFuZCBy ZWFkbGluZS02LjAtcGF0Y2hsZXZlbDQgaGFzCi1hIHJlZ3Jlc3Npb246Ci0KLXJlYWRsaW5lLTUu MjogUnVuIGBnZGIgLW54IC1xJyBhbmQgdHlwZSBDVFJMLUM6Ci0oZ2RiKSBRdWl0Ci0oZ2RiKSBf Ci0KLXJlYWRsaW5lLTYuMDogUnVuIGBnZGIgLW54IC1xJyBhbmQgdHlwZSBDVFJMLUM6Ci0oZ2Ri KSBfCi0gPSBub3RoaW5nIGhhcHBlbnMgKGl0IGdldHMgYnVmZmVyZWQgYW5kIGV4ZWN1dGVkIGxh dGVyKQotCShJdCBkb2VzIGFsc28gRkFJTCBvbiBnZGIuZ2RiL3NlbGZ0ZXN0LmV4cC4pCi0KLUl0 IGlzIGJlY2F1c2UgR0RCIHdhaXRzIGluIGl0cyBvd24gcG9sbCgpIG1haW5sb29wIGFuZCByZWFk bGluZSB1c2VzIHZpYQotcmxfY2FsbGJhY2tfaGFuZGxlcl9pbnN0YWxsIGFuZCBybF9jYWxsYmFj a19oYW5kbGVyX3JlbW92ZS4gIFRoaXMgd2F5IHRoZQotcmVhZGxpbmUgaW50ZXJuYWwgdmFyaWFi bGUgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSByZW1haW5zIDAgYW5kIENUUkwtQyBnZXRzCi1v bmx5IHN0b3JlZCB0byBfcmxfY2F1Z2h0X3NpZ25hbCBidXQgbm90IGV4ZWN1dGVkLgotCi1TZWVu IGluIHJsX3NpZ25hbF9oYW5kbGVyIGV2ZW4gaWYgX3JsX2ludGVycnVwdF9pbW1lZGlhdGVseSBp cyBzZXQgYW5kCi1fcmxfaGFuZGxlX3NpZ25hbCBpcyBjYWxsZWQgdGhlbiB0aGUgc2lnbmFsIGlz IHN0aWxsIHN0b3JlZCB0bwotX3JsX2NhdWdodF9zaWduYWwuICBJbiB0aGUgX3JsX2ludGVycnVw dF9pbW1lZGlhdGVseSBjYXNlIGl0IHNob3VsZCBub3QgYmUKLXN0b3JlZCB3aGVuIGl0IHdhcyBh bHJlYWR5IHByb2Nlc3NlZC4KLQotcmxfc2lnbmFsX2hhbmRsZXIgZG9lcyBgX3JsX2ludGVycnVw dF9pbW1lZGlhdGVseSA9IDA7JyAtIHdoaWxlIEkgYW0gbm90IGF3YXJlCi1vZiBpdHMgbWVhbmlu ZyBpdCBicmVha3MgdGhlIG5lc3QtY291bnRpbmcgb2Ygb3RoZXIgcm91dGluZXMgd2hpY2ggZG8K LWBfcmxfaW50ZXJydXB0X2ltbWVkaWF0ZWx5Kys7JyBhbmQgYF9ybF9pbnRlcnJ1cHRfaW1tZWRp YXRlbHktLTsnIHBvc3NpYmx5Ci1jcmVhdGluZyBwcm9ibGVtYXRpYyBgX3JsX2ludGVycnVwdF9p bW1lZGlhdGVseSA9PSAtMScuCi0KLWBfcmxfaW50ZXJydXB0X2ltbWVkaWF0ZWx5JyBpcyBhbiBp bnRlcm5hbCB2YXJpYWJsZSwgaG93IGl0IGNvdWxkIGJlIGFjY2Vzc2VkCi1ieSBhIHJlYWRsaW5l IGFwcGxpY2F0aW9uPyAoT0ssIG1heWJlIGl0IHNob3VsZCBub3QgYmUgdXNlZC4pCi0KLUF0dGFj aGluZyBhIGN1cnJlbnQgR0RCLXNpZGUgcGF0Y2ggYnV0IGl0IG11c3QgYWNjZXNzIHJlYWRsaW5l IGludGVybmFsCi12YXJpYWJsZSBfcmxfY2F1Z2h0X3NpZ25hbCBhbmQgaXQgaXMgZ2VuZXJhbGx5 IGp1c3QgYSB3b3JrYXJvdW5kLiAgQ291bGQgeW91Ci1wbGVhc2UgaW5jbHVkZSBzdXBwb3J0IGZv ciBzaWduYWxzIGluIHRoaXMgYXN5bmNocm9ub3VzIG1vZGUgaW4gcmVhZGxpbmUtNi4xPwotSSBm aW5kIGl0IHdvdWxkIGJlIGVub3VnaCB0byBtYWtlIFJMX0NIRUNLX1NJR05BTFMgcHVibGljPwot Ci0KLUdEQjogTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9y YTEyLWxpbnV4LWdudS4KLUJ1dCB0aGlzIGlzIG5vdCBhIHBhdGNoIGludGVuZGVkIHRvIGJlIGFj Y2VwdGVkLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMDktMTEtMjkgIEphbiBLcmF0 b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogY29uZmlnLmluLCBjb25m aWd1cmU6IFJlZ2VuZXJhdGUuCi0JKiBjb25maWd1cmUuYWMgKGZvciByZWFkbGluZV9lY2hvaW5n X3ApOiBNb3ZlIGluc2lkZSAkTElCUyBjaGFuZ2UuCi0JKGZvciBfcmxfY2F1Z2h0X3NpZ25hbCk6 IE5ldy4KLQkqIGV2ZW50LWxvb3AuYzogSW5jbHVkZSByZWFkbGluZS9yZWFkbGluZS5oLgotCShn ZGJfZG9fb25lX2V2ZW50KSBbSEFWRV9SRUFETElORV9DQVVHSFRfU0lHTkFMXTogTmV3LgotCi1n ZGIvdGVzdHN1aXRlLwotMjAwOS0xMS0yOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotCi0JKiBnZGIuZ2RiL3NlbGZ0ZXN0LmV4cCAoYmFja3RyYWNlIHRocm91 Z2ggc2lnbmFsIGhhbmRsZXIpOiBNb3ZlIGJlZm9yZQotCVNJR0lOVCBwYXNzLCBkcm9wIHRoZSB0 aW1lb3V0IGNhc2UuCi0JKHNlbmQgU0lHSU5UIHNpZ25hbCB0byBjaGlsZCBwcm9jZXNzKTogVXNl IGdkYl90ZXN0LgotCShiYWNrdHJhY2UgdGhyb3VnaCByZWFkbGluZSBoYW5kbGVyKTogTmV3Lgot Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDEwNy9nZGIvY29uZmlnLmluCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi41MC4yMDExMDEwNy5vcmlnL2dkYi9jb25maWcuaW4JMjAxMS0wMS0xNyAxNToz Njo0MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTA3L2dkYi9jb25maWcu aW4JMjAxMS0wMS0xNyAxNTozNzowOS4wMDAwMDAwMDAgKzAxMDAKLUBAIC00NjQsNiArNDY0LDkg QEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB3Y3dpZHRoIGlzIGRlY2xhcmVkIGV2ZW4gYWZ0ZXIgdW5k ZWZpbmluZyBtYWNyb3MuICovCi0gI3VuZGVmIEhBVkVfUkFXX0RFQ0xfV0NXSURUSAotIAotKy8q IHJlYWRsaW5lLTYuMCB3b3JrYXJvdW5kIG9mIGJsb2NrZWQgc2lnbmFscy4gKi8KLSsjdW5kZWYg SEFWRV9SRUFETElORV9DQVVHSFRfU0lHTkFMCi0rCi0gLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh dmUgdGhlIGByZWFscGF0aCcgZnVuY3Rpb24uICovCi0gI3VuZGVmIEhBVkVfUkVBTFBBVEgKLSAK LUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTA3L2dkYi9jb25maWd1cmUuYWMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjUwLjIwMTEwMTA3Lm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTAxLTE3 IDE1OjM2OjQyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAxMDcvZ2RiL2Nv bmZpZ3VyZS5hYwkyMDExLTAxLTE3IDE1OjM3OjA5LjAwMDAwMDAwMCArMDEwMAotQEAgLTczNiwx NyArNzM2LDI1IEBAIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9yZWFkbGluZSIgPSB5ZXM7IHQKLSAg ICMgcmVhZGxpbmUtNi4wIHN0YXJ0ZWQgdG8gdXNlIHRoZSBuYW1lIGBfcmxfZWNob2luZ19wJy4K LSAgICMgYCQoUkVBRExJTkVfRElSKS8nIG9mIGJ1bmRsZWQgcmVhZGxpbmUgd291bGQgbm90IHJl c29sdmUgaW4gY29uZmlndXJlLgotIAotLSAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgcmVhZGxpbmVf ZWNob2luZ19wXSkKLSAgIHNhdmVfTElCUz0kTElCUwotICAgTElCUz0iJExJQlMgJFJFQURMSU5F IgotKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgcmVhZGxpbmVfZWNob2luZ19wXSkKLSAgIEFDX0xJ TktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSgsW1tleHRlcm4gaW50IHJlYWRsaW5lX2VjaG9pbmdf cDsKLSAJCQkJICAgIHJldHVybiByZWFkbGluZV9lY2hvaW5nX3A7XV0pLAotIAkJIFtSRUFETElO RV9FQ0hPSU5HX1A9eWVzXSwKLSAJCSBbUkVBRExJTkVfRUNIT0lOR19QPW5vCi0gCQkgIEFDX0RF RklORShbcmVhZGxpbmVfZWNob2luZ19wXSwgW19ybF9lY2hvaW5nX3BdLAotIAkJCSAgICBbcmVh ZGxpbmUtNi4wIHN0YXJ0ZWQgdG8gdXNlIGRpZmZlcmVudCBuYW1lLl0pXSkKLS0gIExJQlM9IiRz YXZlX0xJQlMiCi0gICBBQ19NU0dfUkVTVUxUKFskUkVBRExJTkVfRUNIT0lOR19QXSkKLSsgIEFD X01TR19DSEVDS0lORyhbZm9yIF9ybF9jYXVnaHRfc2lnbmFsXSkKLSsgIEFDX0xJTktfSUZFTFNF KEFDX0xBTkdfUFJPR1JBTSgsW1tleHRlcm4gaW50IHZvbGF0aWxlIF9ybF9jYXVnaHRfc2lnbmFs OwotKwkJCQkgICAgcmV0dXJuIF9ybF9jYXVnaHRfc2lnbmFsO11dKSwKLSsJCSBbUkVBRExJTkVf Q0FVR0hUX1NJR05BTD15ZXMKLSsJCSAgQUNfREVGSU5FKFtIQVZFX1JFQURMSU5FX0NBVUdIVF9T SUdOQUxdLCwKLSsJCQkgICAgW3JlYWRsaW5lLTYuMCB3b3JrYXJvdW5kIG9mIGJsb2NrZWQgc2ln bmFscy5dKV0sCi0rCQkgW1JFQURMSU5FX0NBVUdIVF9TSUdOQUw9bm9dKQotKyAgQUNfTVNHX1JF U1VMVChbJFJFQURMSU5FX0NBVUdIVF9TSUdOQUxdKQotKyAgTElCUz0iJHNhdmVfTElCUyIKLSBl bHNlCi0gICBSRUFETElORT0nJChSRUFETElORV9ESVIpL2xpYnJlYWRsaW5lLmEnCi0gICBSRUFE TElORV9ERVBTPSckKFJFQURMSU5FKScKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTA3L2dkYi9l dmVudC1sb29wLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTA3Lm9yaWcvZ2Ri L2V2ZW50LWxvb3AuYwkyMDExLTAxLTA1IDIzOjIyOjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjIuNTAuMjAxMTAxMDcvZ2RiL2V2ZW50LWxvb3AuYwkyMDExLTAxLTE3IDE1OjM3OjIzLjAw MDAwMDAwMCArMDEwMAotQEAgLTM3LDYgKzM3LDcgQEAKLSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5o IgotICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gI2luY2x1ZGUgImdkYl9zZWxlY3QuaCIKLSsj aW5jbHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKLSAKLSAvKiBUZWxsIGNyZWF0ZV9maWxlX2hh bmRsZXIgd2hhdCBldmVudHMgd2UgYXJlIGludGVyZXN0ZWQgaW4uCi0gICAgVGhpcyBpcyB1c2Vk IGJ5IHRoZSBzZWxlY3QgdmVyc2lvbiBvZiB0aGUgZXZlbnQgbG9vcC4gICovCi1AQCAtNDE5LDYg KzQyMCw5IEBAIGdkYl9kb19vbmVfZXZlbnQgKHZvaWQgKmRhdGEpCi0gICBzdGF0aWMgaW50IGV2 ZW50X3NvdXJjZV9oZWFkID0gMDsKLSAgIGNvbnN0IGludCBudW1iZXJfb2Zfc291cmNlcyA9IDM7 Ci0gICBpbnQgY3VycmVudCA9IDA7Ci0rI2lmZGVmIEhBVkVfUkVBRExJTkVfQ0FVR0hUX1NJR05B TAotKyAgZXh0ZXJuIGludCB2b2xhdGlsZSBfcmxfY2F1Z2h0X3NpZ25hbDsKLSsjZW5kaWYKLSAK LSAgIC8qIEFueSBldmVudHMgYWxyZWFkeSB3YWl0aW5nIGluIHRoZSBxdWV1ZT8gICovCi0gICBp ZiAocHJvY2Vzc19ldmVudCAoKSkKLUBAIC00NjMsNiArNDY3LDI5IEBAIGdkYl9kb19vbmVfZXZl bnQgKHZvaWQgKmRhdGEpCi0gICBpZiAoZ2RiX3dhaXRfZm9yX2V2ZW50ICgxKSA8IDApCi0gICAg IHJldHVybiAtMTsKLSAKLSsjaWZkZWYgSEFWRV9SRUFETElORV9DQVVHSFRfU0lHTkFMCi0rICBp ZiAoYXN5bmNfY29tbWFuZF9lZGl0aW5nX3AgJiYgUkxfSVNTVEFURSAoUkxfU1RBVEVfQ0FMTEJB Q0spCi0rICAgICAgJiYgX3JsX2NhdWdodF9zaWduYWwpCi0rICAgIHsKLSsgICAgICBjaGFyICpw cm9tcHQ7Ci0rCi0rICAgICAgaWYgKHJsX3Byb21wdCA9PSBOVUxMKQotKwl7Ci0rCSAgLyogU2hv dWxkIG5vdCBoYXBwZW4sIGRlZmVuc2l2ZSBvbmx5LiAgKi8KLSsJICBwcm9tcHQgPSAiIjsKLSsJ fQotKyAgICAgIGVsc2UKLSsJewotKwkgIHByb21wdCA9IGFsbG9jYSAoc3RybGVuIChybF9wcm9t cHQpICsgMSk7Ci0rCSAgc3RyY3B5IChwcm9tcHQsIHJsX3Byb21wdCk7Ci0rCX0KLSsKLSsgICAg ICAvKiBDYWxsIFJMX0NIRUNLX1NJR05BTFMgdGhpcyB3YXkuICAqLwotKyAgICAgIHJsX2NhbGxi YWNrX2hhbmRsZXJfcmVtb3ZlICgpOwotKyAgICAgIHJsX2NhbGxiYWNrX2hhbmRsZXJfaW5zdGFs bCAocHJvbXB0LCBpbnB1dF9oYW5kbGVyKTsKLSsgICAgfQotKyNlbmRpZgotKwotICAgLyogSGFu ZGxlIGFueSBuZXcgZXZlbnRzIG9jY3VycmVkIHdoaWxlIHdhaXRpbmcuICAqLwotICAgaWYgKHBy b2Nlc3NfZXZlbnQgKCkpCi0gICAgIHJldHVybiAxOwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAx MDcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIuNTAuMjAxMTAxMDcub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhw CTIwMTEtMDEtMTcgMTU6MzY6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEx MDEwNy9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCTIwMTEtMDEtMTcgMTU6Mzc6 MDkuMDAwMDAwMDAwICswMTAwCi1AQCAtNDMzLDYgKzQzMywyOCBAQCBwcm9jIHRlc3Rfd2l0aF9z ZWxmIHsgZXhlY3V0YWJsZSB9IHsKLSAJfQotICAgICB9Ci0gICAgIAotKyAgICAjIGdldCBhIHN0 YWNrIHRyYWNlIHdpdGggdGhlIHBvbGwgZnVuY3Rpb24KLSsgICAgIwotKyAgICAjIFRoaXMgZmFp bHMgb24gc29tZSBsaW51eCBzeXN0ZW1zIGZvciB1bmtub3duIHJlYXNvbnMuICBPbiB0aGUKLSsg ICAgIyBzeXN0ZW1zIHdoZXJlIGl0IGZhaWxzLCBzb21ldGltZXMgaXQgd29ya3MgZmluZSB3aGVu IHJ1biBtYW51YWxseS4KLSsgICAgIyBUaGUgdGVzdHN1aXRlIGZhaWx1cmVzIG1heSBub3QgYmUg bGltaXRlZCB0byBqdXN0IGFvdXQgc3lzdGVtcy4KLSsgICAgc2V0dXBfeGZhaWwgImkqODYtcGMt bGludXhhb3V0LWdudSIKLSsgICAgc2V0IGRlc2NyaXB0aW9uICJiYWNrdHJhY2UgdGhyb3VnaCBz aWduYWwgaGFuZGxlciIKLSsgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgImJhY2t0cmFjZSIgIiRkZXNj cmlwdGlvbiIgewotKwktcmUgIiMwLioocmVhZHxwb2xsKS4qaW4gbWFpbiBcXCguKlxcKSBhdCAu KmdkYlxcLmMuKiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgIiRkZXNjcmlwdGlvbiIKLSsJ fQotKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgIyBPbiB0aGUgYWxwaGEsIHdlIGhp dCB0aGUgaW5mYW1vdXMgcHJvYmxlbSBhYm91dCBnZGIKLSsJICAgICMgYmVpbmcgdW5hYmxlIHRv IGdldCB0aGUgZnJhbWUgcG9pbnRlciAobWVudGlvbmVkIGluCi0rCSAgICAjIGdkYi9SRUFETUUp LiAgQXMgaXQgaXMgaW50ZXJtaXR0ZW50LCB0aGVyZSBpcyBubyB3YXkgdG8KLSsJICAgICMgWEZB SUwgaXQgd2hpY2ggd2lsbCBnaXZlIHVzIGFuIFhQQVNTIGlmIHRoZSBwcm9ibGVtIGdvZXMKLSsJ ICAgICMgYXdheS4KLSsJICAgIHNldHVwX3hmYWlsICJhbHBoYSotKi1vc2YqIgotKwkgICAgZmFp bCAiJGRlc2NyaXB0aW9uIgotKwl9Ci0rICAgIH0KLSsKLSAgICAgc2V0IGRlc2NyaXB0aW9uICJz ZW5kIFNJR0lOVCBzaWduYWwgdG8gY2hpbGQgcHJvY2VzcyIKLSAgICAgZ2RiX3Rlc3QgInNpZ25h bCBTSUdJTlQiIFwKLSAJIkNvbnRpbnVpbmcgd2l0aCBzaWduYWwgU0lHSU5ULioiIFwKLUBAIC00 NDMsMTAgKzQ2NSwxMSBAQCBwcm9jIHRlc3Rfd2l0aF9zZWxmIHsgZXhlY3V0YWJsZSB9IHsKLSAg ICAgIyBUaGlzIGZhaWxzIG9uIHNvbWUgbGludXggc3lzdGVtcyBmb3IgdW5rbm93biByZWFzb25z LiAgT24gdGhlCi0gICAgICMgc3lzdGVtcyB3aGVyZSBpdCBmYWlscywgc29tZXRpbWVzIGl0IHdv cmtzIGZpbmUgd2hlbiBydW4gbWFudWFsbHkuCi0gICAgICMgVGhlIHRlc3RzdWl0ZSBmYWlsdXJl cyBtYXkgbm90IGJlIGxpbWl0ZWQgdG8ganVzdCBhb3V0IHN5c3RlbXMuCi0rICAgICMgT3B0aW9u YWwgc3lzdGVtIHJlYWRsaW5lIG1heSBub3QgaGF2ZSBzeW1ib2xzIHRvIGJlIHNob3duLgotICAg ICBzZXR1cF94ZmFpbCAiaSo4Ni1wYy1saW51eGFvdXQtZ251IgotLSAgICBzZXQgZGVzY3JpcHRp b24gImJhY2t0cmFjZSB0aHJvdWdoIHNpZ25hbCBoYW5kbGVyIgotKyAgICBzZXQgZGVzY3JpcHRp b24gImJhY2t0cmFjZSB0aHJvdWdoIHJlYWRsaW5lIGhhbmRsZXIiCi0gICAgIGdkYl90ZXN0X211 bHRpcGxlICJiYWNrdHJhY2UiICIkZGVzY3JpcHRpb24iIHsKLS0JLXJlICIjMC4qKHJlYWR8cG9s bCkuKmluIG1haW4gXFwoLipcXCkgYXQgLipnZGJcXC5jLiokZ2RiX3Byb21wdCAkIiB7Ci0rCS1y ZSAiIzAuKmdkYl9kb19vbmVfZXZlbnQuKmluIG1haW4gXFwoLipcXCkgYXQgLipnZGJcXC5jLiok Z2RiX3Byb21wdCAkIiB7Ci0gCSAgICBwYXNzICIkZGVzY3JpcHRpb24iCi0gCX0KLSAJLXJlICIu KiRnZGJfcHJvbXB0ICQiIHsKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTA3L2dkYi9jb25maWd1 cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTA3Lm9yaWcvZ2RiL2NvbmZpZ3Vy ZQkyMDExLTAxLTE3IDE1OjM2OjQyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAx MTAxMDcvZ2RiL2NvbmZpZ3VyZQkyMDExLTAxLTE3IDE1OjM3OjA5LjAwMDAwMDAwMCArMDEwMAot QEAgLTEwMjM3LDEwICsxMDIzNywxMCBAQCBpZiB0ZXN0ICIkd2l0aF9zeXN0ZW1fcmVhZGxpbmUi ID0geWVzOyB0Ci0gICAjIHJlYWRsaW5lLTYuMCBzdGFydGVkIHRvIHVzZSB0aGUgbmFtZSBgX3Js X2VjaG9pbmdfcCcuCi0gICAjIGAkKFJFQURMSU5FX0RJUikvJyBvZiBidW5kbGVkIHJlYWRsaW5l IHdvdWxkIG5vdCByZXNvbHZlIGluIGNvbmZpZ3VyZS4KLSAKLS0gIHsgJGFzX2VjaG8gIiRhc19t ZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHJlYWRsaW5lX2VjaG9pbmdfcCIg PiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHJlYWRsaW5lX2VjaG9pbmdfcC4uLiAiID4m NjsgfQotICAgc2F2ZV9MSUJTPSRMSUJTCi0gICBMSUJTPSIkTElCUyAkUkVBRExJTkUiCi0rICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciByZWFk bGluZV9lY2hvaW5nX3AiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciByZWFkbGluZV9l Y2hvaW5nX3AuLi4gIiA+JjY7IH0KLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0 ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi1AQCAtMTAyNjMsOSArMTAy NjMsMzUgQEAgJGFzX2VjaG8gIiNkZWZpbmUgcmVhZGxpbmVfZWNob2luZ19wIF9ybAotIGZpCi0g cm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0 ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICBMSUJTPSIkc2F2ZV9MSUJTIgotICAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFETElO RV9FQ0hPSU5HX1AiID4mNQotICRhc19lY2hvICIkUkVBRExJTkVfRUNIT0lOR19QIiA+JjY7IH0K LSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y IF9ybF9jYXVnaHRfc2lnbmFsIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgX3JsX2Nh dWdodF9zaWduYWwuLi4gIiA+JjY7IH0KLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv bmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAo KQotK3sKLStleHRlcm4gaW50IHZvbGF0aWxlIF9ybF9jYXVnaHRfc2lnbmFsOwotKwkJCQkgICAg cmV0dXJuIF9ybF9jYXVnaHRfc2lnbmFsOwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VP RgotK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIFJFQURMSU5FX0NB VUdIVF9TSUdOQUw9eWVzCi0rCi0rJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9SRUFETElORV9DQVVH SFRfU0lHTkFMIC8qKi8iID4+Y29uZmRlZnMuaAotKwotK2Vsc2UKLSsgIFJFQURMSU5FX0NBVUdI VF9TSUdOQUw9bm8KLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19v YmpleHQgXAotKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotKyAgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRSRUFETElORV9D QVVHSFRfU0lHTkFMIiA+JjUKLSskYXNfZWNobyAiJFJFQURMSU5FX0NBVUdIVF9TSUdOQUwiID4m NjsgfQotKyAgTElCUz0iJHNhdmVfTElCUyIKLSBlbHNlCi0gICBSRUFETElORT0nJChSRUFETElO RV9ESVIpL2xpYnJlYWRsaW5lLmEnCi0gICBSRUFETElORV9ERVBTPSckKFJFQURMSU5FKScKCmRp ZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IGUwMDZkNzIuLmRkMmY0YzcgMTAw NjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0yNyw3ICsyNyw3IEBAIFZlcnNp b246IDcuMi45MC4yMDExMDQyOQogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxl YWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5v dCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRp YmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDM1JXs/X3dpdGhfdXBzdHJlYW06LnVwc3Ry ZWFtfSV7P2Rpc3R9CitSZWxlYXNlOiAzNiV7P193aXRoX3Vwc3RyZWFtOi51cHN0cmVhbX0lez9k aXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQ THYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQg QlNEIGFuZCBQdWJsaWMgRG9tYWluCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBAIC0y MzEsOCArMjMxLDYgQEAgUGF0Y2gyMTE6IGdkYi02LjUtbGFzdC1hZGRyZXNzLXNwYWNlLWJ5dGUt dGVzdC5wYXRjaAogUGF0Y2gyMDg6IGdkYi02LjUtQkVBLXRlc3RzdWl0ZS5wYXRjaAogCiAjIEZp eCByZWFkbGluZSBzZWdmYXVsdCBvbiBleGNlc3NpdmVseSBsb25nIGhhbmQtdHlwZWQgbGluZXMu Ci0jPWRyb3A6IEFmdGVyIHVwc3RyZWFtJ3MgcmVhZGxpbmUgcmViYXNlIGl0IHdpbGwgYmUgb2Jz b2xldGUuCi1QYXRjaDIwOTogZ2RiLTYuNS1yZWFkbGluZS1sb25nLWxpbmUtY3Jhc2gucGF0Y2gK ICM9ZmVkb3JhdGVzdAogUGF0Y2gyMTM6IGdkYi02LjUtcmVhZGxpbmUtbG9uZy1saW5lLWNyYXNo LXRlc3QucGF0Y2gKIApAQCAtNDE3LDkgKzQxNSw2IEBAIFBhdGNoMzgxOiBnZGItc2ltdWx0YW5l b3VzLXN0ZXAtcmVzdW1lLWJyZWFrcG9pbnQtdGVzdC5wYXRjaAogIz1wdXNoK3dvcms6IEl0IHNo b3VsZCBiZSBpbiBnbGliYzogbGliYy1hbHBoYTogPDIwMDkxMDA0MTYxNzA2LkdBMjc0NTBALio+ CiBQYXRjaDM4MjogZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKIAotIyBGaXggY2Fs bGJhY2stbW9kZSByZWFkbGluZS02LjAgcmVncmVzc2lvbiBmb3IgQ1RSTC1DIChmb3IgUkhFTC02 LjApLgotUGF0Y2gzOTA6IGdkYi1yZWFkbGluZS02LjAtc2lnbmFsLnBhdGNoCi0KICMgRml4IHN5 c2NhbGwgcmVzdGFydHMgZm9yIGFtZDY0LT5pMzg2IGJpYXJjaC4KICM9cHVzaAogUGF0Y2gzOTE6 IGdkYi14ODZfNjQtaTM4Ni1zeXNjYWxsLXJlc3RhcnQucGF0Y2gKQEAgLTU3MCw5ICs1NjUsMTUg QEAgUGF0Y2g1ODk6IGdkYi1vcHRpbS1nLXByb2xvZ3VlLXNraXAucGF0Y2gKICMgRml4IHBoeXNu YW1lLXJlbGF0ZWQgQ1UgZXhwYW5zaW9uIGlzc3VlIGZvciBDKysgKFBSIDEyNzA4KS4KIFBhdGNo NTkwOiBnZGItcGh5c25hbWUtZXhwYW5kLWNvbXBsZXRlci5wYXRjaAogCisjIEJ1bmRsZSByZWFk bGluZS02LjIgd2l0aCBhIHdvcmthcm91bmQgb2Ygc2tpcHBlZCAiYXNrIiAoQlogNzAxMTMxKS4K K1BhdGNoNTkxOiBnZGItYno3MDExMzEtcmVhZGxpbmU2Mi0xb2YzLnBhdGNoCitQYXRjaDU5Mjog Z2RiLWJ6NzAxMTMxLXJlYWRsaW5lNjItMm9mMy5wYXRjaAorUGF0Y2g1OTM6IGdkYi1iejcwMTEz MS1yZWFkbGluZTYyLTNvZjMucGF0Y2gKKwogQnVpbGRSZXF1aXJlczogbmN1cnNlcy1kZXZlbCV7 P19pc2F9IHRleGluZm8gZ2V0dGV4dCBmbGV4IGJpc29uIGV4cGF0LWRldmVsJXs/X2lzYX0KLVJl cXVpcmVzOiByZWFkbGluZSV7P19pc2F9Ci1CdWlsZFJlcXVpcmVzOiByZWFkbGluZS1kZXZlbCV7 P19pc2F9CisjIC0td2l0aG91dC1zeXN0ZW0tcmVhZGxpbmUKKyMgUmVxdWlyZXM6IHJlYWRsaW5l JXs/X2lzYX0KKyMgQnVpbGRSZXF1aXJlczogcmVhZGxpbmUtZGV2ZWwlez9faXNhfQogJWlmIDAl eyE/ZWw1OjF9CiAjIGRsb3BlbigpIG5vIGxvbmdlciBtYWtlcyBycG0tbGlicyBhIG1hbmRhdG9y eSBkZXBlbmRlbmN5LgogI1JlcXVpcmVzOiBycG0tbGlicyV7P19pc2F9CkBAIC03NTgsNyArNzU5 LDYgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIv cC1leHAuYwogJXBhdGNoMTk2IC1wMQogJXBhdGNoMTk5IC1wMQogJXBhdGNoMjA4IC1wMQotJXBh dGNoMjA5IC1wMQogJXBhdGNoMjExIC1wMQogJXBhdGNoMjEzIC1wMQogJXBhdGNoMjE0IC1wMQpA QCAtODQ2LDE1ICs4NDYsMTIgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIv b2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNoNTg4IC1wMQogJXBhdGNoNTg5IC1wMQogJXBh dGNoNTkwIC1wMQorJXBhdGNoNTkxIC1wMQorJXBhdGNoNTkyIC1wMQorJXBhdGNoNTkzIC1wMQog Ci0lcGF0Y2gzOTAgLXAxCiAlcGF0Y2gzOTMgLXAxCiAlcGF0Y2gzMzUgLXAxCi1yZWFkbGluZT0i JChyZWFkbGluayAtZiAle19saWJkaXJ9L2xpYnJlYWRsaW5lLnNvKSIKLWlmIFsgIiRyZWFkbGlu ZSIgPSAiJHtyZWFkbGluZSUvbGlicmVhZGxpbmUuc28uNi4wfSIgXQotdGhlbgotJXBhdGNoMzkw IC1wMSAtUgotZmkKICVpZiAwJXshP2VsNToxfQogJXBhdGNoMzkzIC1wMSAtUgogJXBhdGNoMzM1 IC1wMSAtUgpAQCAtOTMyLDcgKzkyOSw3IEBAIENGTEFHUz0iJENGTEFHUyAtTzAgLWdnZGIyIgog CS0td2l0aC1zZXBhcmF0ZS1kZWJ1Zy1kaXI9L3Vzci9saWIvZGVidWcJCVwKIAktLWRpc2FibGUt c2ltCQkJCQkJXAogCS0tZGlzYWJsZS1ycGF0aAkJCQkJCVwKLQktLXdpdGgtc3lzdGVtLXJlYWRs aW5lCQkJCQlcCisJLS13aXRob3V0LXN5c3RlbS1yZWFkbGluZQkJCQlcCiAJLS13aXRoLWV4cGF0 CQkJCQkJXAogJCg6IHBwYzY0IGhvc3QgYnVpbGQgY3Jhc2hlcyBvbiBwcGMgdmFyaWFudCBvZiBs aWJleHBhdC5zbyApCVwKIAktLXdpdGhvdXQtbGliZXhwYXQtcHJlZml4CQkJCVwKQEAgLTEyNzQs NiArMTI3MSwxMSBAQCBmaQogJXtfaW5mb2Rpcn0vZ2RiLmluZm8qCiAKICVjaGFuZ2Vsb2cKKyog TW9uIE1heSAgMiAyMDExIEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PiAtIDcuMi45MC4yMDExMDQyOS0zNi5mYzE1CistIEJ1bmRsZSByZWFkbGluZS02LjIgd2l0aCBh IHdvcmthcm91bmQgb2Ygc2tpcHBlZCAiYXNrIiAoQlogNzAxMTMxKS4KKyAgLSBVc2UgLS13aXRo b3V0LXN5c3RlbS1yZWFkbGluZSwgZGlzYWJsZSBSZXF1aXJlcyBhbmQgQnVpbGRSZXF1aXJlcyBv ZiByZWFkbGluZS4KKyAgLSBEcm9wIGdkYi02LjUtcmVhZGxpbmUtbG9uZy1saW5lLWNyYXNoLnBh dGNoIGFuZCBnZGItcmVhZGxpbmUtNi4wLXNpZ25hbC5wYXRjaC4KKwogKiBGcmkgQXByIDI5IDIw MTEgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4yLjkwLjIw MTEwNDI5LTM1LmZjMTUKIC0gUmViYXNlIHRvIEZTRiBHREIgNy4yLjkwLjIwMTEwNDI5ICh3aGlj aCBpcyBhIDcuMyBwcmUtcmVsZWFzZSkuCiAtIEZpeCAtTzIgLWcgYnJlYWtwb2ludHMgaW50ZXJu YWwgZXJyb3IgKyBwcm9sb2d1ZSBza2lwcGluZyAoQlogNjEyMjUzKS4K