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: Sander Hoentjen To: git-commits@fedoraproject.org Subject: [rpms/tcltls] epel10.2: Fix building against TCL 9.0 Date: Wed, 19 Aug 2026 10:08:42 GMT Message-ID: <178713412260.1.13747018588668469796.rpms-tcltls-353b25b02790@fedoraproject.org> List-ID: X-Git-Repo: rpms/tcltls X-Git-Branch: epel10.2 X-Git-Rev: 353b25b027906b684c546b872c7f168405fd9cd5 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvdGNsdGxzCiAgICAgICAgICAgIEJyYW5jaCA6IGVwZWwxMC4yCiAgICAgICAg ICAgIENvbW1pdCA6IDM1M2IyNWIwMjc5MDZiNjg0YzU0NmI4NzJjN2YxNjg0MDVmZDljZDUKICAg ICAgICAgICAgQXV0aG9yIDogU2FuZGVyIEhvZW50amVuIDxzaG9lbnRqZW5AYW50YWdvbmlzdC5u bD4KICAgICAgICAgICAgRGF0ZSAgIDogMjAyNS0wMS0xNVQyMDoxNjoxNSswMTowMAogICAgICAg ICAgICBTdGF0cyAgOiArMTY5Ni8tMCBpbiAzIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDog aHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy90Y2x0bHMvYy8zNTNiMjViMDI3OTA2 YjY4NGM1NDZiODcyYzdmMTY4NDA1ZmQ5Y2Q1P2JyYW5jaD1lcGVsMTAuMgoKICAgICAgICAgICAg TG9nOgogICAgICAgICAgICBGaXggYnVpbGRpbmcgYWdhaW5zdCBUQ0wgOS4wCgotIEZpeGVzICMy MzM3NzkwCgotLS0KZGlmZiAtLWdpdCBhL3RjbHRscy0xLjcuMjItdGNsLTlfMC5wYXRjaCBiL3Rj bHRscy0xLjcuMjItdGNsLTlfMC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi45MDk4NDY3Ci0tLSAvZGV2L251bGwKKysrIGIvdGNsdGxzLTEuNy4yMi10Y2wtOV8wLnBh dGNoCkBAIC0wLDAgKzEsMTUyMyBAQAorY29tbWl0IGQxYzk3MjgwNGFhOTI0YTQzOGNiOTE4OGNj YTQ1ODNlNmFmOGRhODcKK0F1dGhvcjogYm9oYWdhbiA8Ym9oYWdhbj4KK0RhdGU6ICAgTW9uIEFw ciAxMCAwMToyNzozNSAyMDIzICswMDAwCisKKyAgICBJbml0aWFsIGNoYW5nZXMgZm9yIFRDTCA5 LjAuCisgICAgCisgICAgRml4ZWQgcGFja2FnZSByZXF1aXJlcyB0byB3b3JrIHdpdGggVENMIDku MC4KKyAgICBSZW1vdmVkIG9ic29sZXRlIG1hY3JvIF9BTlNJX0FSR1NfLCB1c2UgQU5TSSBhcmcg ZGVmaW5pdGlvbnMsIGV0Yy4KKyAgICBNYWNyb3M6IENPTlNUODQgdG8gY29uc3QsIFdJTjMyIHRv IF9XSU4zMiwgQ09OU1QgdG8gY29uc3QsIFZPSUQgdG8gdm9pZCwgZXRjLgorICAgIFJlcGxhY2Vk IFRjbF9TYXZlUmVzdWx0IHdpdGggVGNsX1NhdmVJbnRlcnBTdGF0ZSwgVGNsX1Jlc3RvcmVSZXN1 bHQgd2l0aCBUY2xfUmVzdG9yZUludGVycFN0YXRlLCBhbmQgVGNsX0Rpc2NhcmRSZXN1bHQgd2l0 aCBUY2xfRGlzY2FyZEludGVycFN0YXRlLgorICAgIFVzZSBUY2xfQmFja2dyb3VuZEVycm9yIGZv ciBwcmUgVENMIDguNiBhbmQgVGNsX0JhY2tncm91bmRFeGNlcHRpb24gZm9yIFRDTCA4LjYrLgor CitkaWZmIC0tZ2l0IGEvcGtnSW5kZXgudGNsLmluIGIvcGtnSW5kZXgudGNsLmluCitpbmRleCAw ODYxOGVlLi4yNGQzMzY0IDEwMDY0NAorLS0tIGEvcGtnSW5kZXgudGNsLmluCisrKysgYi9wa2dJ bmRleC50Y2wuaW4KK0BAIC0xLDQgKzEsNCBAQAorLWlmIHtbcGFja2FnZSB2c2F0aXNmaWVzIFtw YWNrYWdlIHByZXNlbnQgVGNsXSA4LjVdfSB7CisraWYge1twYWNrYWdlIHZzYXRpc2ZpZXMgW3Bh Y2thZ2UgcHJlc2VudCBUY2xdIDguNS1dfSB7CisgCXBhY2thZ2UgaWZuZWVkZWQgdGxzIEBQQUNL QUdFX1ZFUlNJT05AIFtsaXN0IGFwcGx5IHt7ZGlyfSB7CisgCQlpZiB7e0BUQ0xFWFRfQlVJTERA fSBlcSAic3RhdGljIn0geworIAkJCWxvYWQge30gVGxzCitkaWZmIC0tZ2l0IGEvdGNsT3B0cy5o IGIvdGNsT3B0cy5oCitpbmRleCA4ZTc4MjBiLi4xZjk4ZmM2IDEwMDY0NAorLS0tIGEvdGNsT3B0 cy5oCisrKysgYi90Y2xPcHRzLmgKK0BAIC0xLDcgKzEsNyBAQAorIC8qCisgICogIENvcHlyaWdo dCAoQykgMTk5Ny0yMDAwIE1hdHQgTmV3bWFuIDxtYXR0QG5vdmFkaWdtLmNvbT4KKyAgKgorLSAq IFN0eWxpemVkIG9wdGlvbiBwcm9jZXNzaW5nIC0gcmVxdWlyZXMgY29uc2l0ZW50CisrICogU3R5 bGl6ZWQgb3B0aW9uIHByb2Nlc3NpbmcgLSByZXF1aXJlcyBjb25zaXN0ZW50CisgICogZXh0ZXJu YWwgdmFyczogb3B0LCBpZHgsIG9iamMsIG9ianYKKyAgKi8KKyAjaWZuZGVmIF9UQ0xfT1BUU19I CitkaWZmIC0tZ2l0IGEvdGxzLmMgYi90bHMuYworaW5kZXggNjcyODRjOS4uMzUyZmMyYyAxMDA2 NDQKKy0tLSBhL3Rscy5jCisrKysgYi90bHMuYworQEAgLTM4LDMzICszOCwxMCBAQAorIAkJVGNs X1RyYW5zbGF0ZUZpbGVOYW1lKGludGVycCwgKGtleSksIChkc3ApKSkKKyAjZGVmaW5lIFJFQVNP TigpCUVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKEVSUl9nZXRfZXJyb3IoKSkKKyAKKy1zdGF0aWMg dm9pZAlJbmZvQ2FsbGJhY2soQ09OU1QgU1NMICpzc2wsIGludCB3aGVyZSwgaW50IHJldCk7Cist Cistc3RhdGljIGludAlDaXBoZXJzT2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwKKy0JCQlU Y2xfSW50ZXJwICppbnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpDT05TVCBvYmp2W10pOworLQor LXN0YXRpYyBpbnQJSGFuZHNoYWtlT2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwKKy0JCQlU Y2xfSW50ZXJwICppbnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpDT05TVCBvYmp2W10pOworLQor LXN0YXRpYyBpbnQJSW1wb3J0T2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwKKy0JCQlUY2xf SW50ZXJwICppbnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpDT05TVCBvYmp2W10pOworLQorLXN0 YXRpYyBpbnQJU3RhdHVzT2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwKKy0JCQlUY2xfSW50 ZXJwICppbnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpDT05TVCBvYmp2W10pOworLQorLXN0YXRp YyBpbnQJVmVyc2lvbk9iakNtZChDbGllbnREYXRhIGNsaWVudERhdGEsCistCQkJVGNsX0ludGVy cCAqaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqQ09OU1Qgb2JqdltdKTsKKy0KKy1zdGF0aWMg aW50CU1pc2NPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLAorLQkJCVRjbF9JbnRlcnAgKmlu dGVycCwgaW50IG9iamMsIFRjbF9PYmogKkNPTlNUIG9ianZbXSk7CistCistc3RhdGljIGludAlV bmltcG9ydE9iakNtZChDbGllbnREYXRhIGNsaWVudERhdGEsCistCQkJVGNsX0ludGVycCAqaW50 ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqQ09OU1Qgb2JqdltdKTsKKy0KKyBzdGF0aWMgU1NMX0NU WCAqQ1RYX0luaXQoU3RhdGUgKnN0YXRlUHRyLCBpbnQgaXNTZXJ2ZXIsIGludCBwcm90bywgY2hh ciAqa2V5LAorLQkJCWNoYXIgKmNlcnRmaWxlLCB1bnNpZ25lZCBjaGFyICprZXlfYXNuMSwgdW5z aWduZWQgY2hhciAqY2VydF9hc24xLAorLQkJCWludCBrZXlfYXNuMV9sZW4sIGludCBjZXJ0X2Fz bjFfbGVuLCBjaGFyICpDQWRpciwgY2hhciAqQ0FmaWxlLAorLSAgICAgIGNoYXIgKmNpcGhlcnMs IGNoYXIgKkRIcGFyYW1zKTsKKysJY2hhciAqY2VydGZpbGUsIHVuc2lnbmVkIGNoYXIgKmtleV9h c24xLCB1bnNpZ25lZCBjaGFyICpjZXJ0X2FzbjEsCisrCWludCBrZXlfYXNuMV9sZW4sIGludCBj ZXJ0X2FzbjFfbGVuLCBjaGFyICpDQWRpciwgY2hhciAqQ0FmaWxlLAorKwljaGFyICpjaXBoZXJz LCBjaGFyICpESHBhcmFtcyk7CisgCisgc3RhdGljIGludAlUbHNMaWJJbml0KGludCB1bmluaXRp YWxpemUpOworIAorQEAgLTE3MSw4ICsxNDgsNyBAQCB1bnNpZ25lZCBsb25nIENyeXB0b1RocmVh ZElkQ2FsbGJhY2sodm9pZCkgeworICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAqLworIHN0YXRpYyB2b2lkCist SW5mb0NhbGxiYWNrKENPTlNUIFNTTCAqc3NsLCBpbnQgd2hlcmUsIGludCByZXQpCisteworK0lu Zm9DYWxsYmFjayhjb25zdCBTU0wgKnNzbCwgaW50IHdoZXJlLCBpbnQgcmV0KSB7CisgICAgIFN0 YXRlICpzdGF0ZVB0ciA9IChTdGF0ZSopU1NMX2dldF9hcHBfZGF0YSgoU1NMICopc3NsKTsKKyAg ICAgVGNsX09iaiAqY21kUHRyOworICAgICBjaGFyICptYWpvcjsgY2hhciAqbWlub3I7CitAQCAt MjI4LDcgKzIwNCw3IEBAIEluZm9DYWxsYmFjayhDT05TVCBTU0wgKnNzbCwgaW50IHdoZXJlLCBp bnQgcmV0KQorIAlUY2xfTGlzdE9iakFwcGVuZEVsZW1lbnQoIHN0YXRlUHRyLT5pbnRlcnAsIGNt ZFB0ciwKKyAJICAgIFRjbF9OZXdTdHJpbmdPYmooIFNTTF9zdGF0ZV9zdHJpbmdfbG9uZyhzc2wp LCAtMSkgKTsKKyAgICAgfSBlbHNlIGlmICh3aGVyZSAmIFNTTF9DQl9BTEVSVCkgeworLQlDT05T VCBjaGFyICpjcCA9IChjaGFyICopIFNTTF9hbGVydF9kZXNjX3N0cmluZ19sb25nKHJldCk7Cisr CWNvbnN0IGNoYXIgKmNwID0gKGNoYXIgKikgU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nX2xvbmcocmV0 KTsKKyAKKyAJVGNsX0xpc3RPYmpBcHBlbmRFbGVtZW50KCBzdGF0ZVB0ci0+aW50ZXJwLCBjbWRQ dHIsCisgCSAgICBUY2xfTmV3U3RyaW5nT2JqKCBjcCwgLTEpICk7CitAQCAtMjY5LDggKzI0NSw3 IEBAIEluZm9DYWxsYmFjayhDT05TVCBTU0wgKnNzbCwgaW50IHdoZXJlLCBpbnQgcmV0KQorICAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAqLworIHN0YXRpYyBpbnQKKy1WZXJpZnlDYWxsYmFjayhpbnQgb2ssIFg1 MDlfU1RPUkVfQ1RYICpjdHgpCisteworK1ZlcmlmeUNhbGxiYWNrKGludCBvaywgWDUwOV9TVE9S RV9DVFggKmN0eCkgeworICAgICBUY2xfT2JqICpjbWRQdHIsICpyZXN1bHQ7CisgICAgIGNoYXIg KmVyclN0ciwgKnN0cmluZzsKKyAgICAgaW50IGxlbmd0aDsKK0BAIC0yNzksNiArMjU0LDcgQEAg VmVyaWZ5Q2FsbGJhY2soaW50IG9rLCBYNTA5X1NUT1JFX0NUWCAqY3R4KQorICAgICBTdGF0ZSAq c3RhdGVQdHIJPSAoU3RhdGUqKVNTTF9nZXRfYXBwX2RhdGEoc3NsKTsKKyAgICAgaW50IGRlcHRo CQk9IFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcl9kZXB0aChjdHgpOworICAgICBpbnQgZXJyCQk9 IFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcihjdHgpOworKyAgICBpbnQgY29kZTsKKyAKKyAgICAg ZHByaW50ZigiVmVyaWZ5OiAlZCIsIG9rKTsKKyAKK0BAIC0zMjEsMTcgKzI5NywyNyBAQCBWZXJp ZnlDYWxsYmFjayhpbnQgb2ssIFg1MDlfU1RPUkVfQ1RYICpjdHgpCisgICAgIHN0YXRlUHRyLT5m bGFncyB8PSBUTFNfVENMX0NBTExCQUNLOworIAorICAgICBUY2xfSW5jclJlZkNvdW50KCBjbWRQ dHIpOworLSAgICBpZiAoVGNsX0V2YWxPYmpFeChzdGF0ZVB0ci0+aW50ZXJwLCBjbWRQdHIsIFRD TF9FVkFMX0dMT0JBTCkgIT0gVENMX09LKSB7CisrICAgIGNvZGUgPSBUY2xfRXZhbE9iakV4KHN0 YXRlUHRyLT5pbnRlcnAsIGNtZFB0ciwgVENMX0VWQUxfR0xPQkFMKTsKKysgICAgaWYgKGNvZGUg IT0gVENMX09LKSB7CisgCS8qIEl0IGdvdCBhbiBlcnJvciAtIHJlamVjdCB0aGUgY2VydGlmaWNh dGUuCQkqLworLQlUY2xfQmFja2dyb3VuZEVycm9yKCBzdGF0ZVB0ci0+aW50ZXJwKTsKKysjaWYg KFRDTF9NQUpPUl9WRVJTSU9OID09IDgpICYmIChUQ0xfTUlOT1JfVkVSU0lPTiA8IDYpCisrCVRj bF9CYWNrZ3JvdW5kRXJyb3Ioc3RhdGVQdHItPmludGVycCk7CisrI2Vsc2UKKysJVGNsX0JhY2tn cm91bmRFeGNlcHRpb24oc3RhdGVQdHItPmludGVycCwgY29kZSk7CisrI2VuZGlmCisgCW9rID0g MDsKKyAgICAgfSBlbHNlIHsKKyAJcmVzdWx0ID0gVGNsX0dldE9ialJlc3VsdChzdGF0ZVB0ci0+ aW50ZXJwKTsKKyAJc3RyaW5nID0gVGNsX0dldFN0cmluZ0Zyb21PYmoocmVzdWx0LCAmbGVuZ3Ro KTsKKyAJLyogQW4gZW1wdHkgcmVzdWx0IGxlYXZlcyB2ZXJpZmljYXRpb24gdW5jaGFuZ2VkLgkq LworIAlpZiAoc3RyaW5nICE9IE5VTEwgJiYgbGVuZ3RoID4gMCkgeworLQkgICAgaWYgKFRjbF9H ZXRJbnRGcm9tT2JqKHN0YXRlUHRyLT5pbnRlcnAsIHJlc3VsdCwgJm9rKSAhPSBUQ0xfT0spIHsK KysJICAgIGNvZGUgPSBUY2xfR2V0SW50RnJvbU9iaihzdGF0ZVB0ci0+aW50ZXJwLCByZXN1bHQs ICZvayk7CisrCSAgICBpZiAoY29kZSAhPSBUQ0xfT0spIHsKKysjaWYgKFRDTF9NQUpPUl9WRVJT SU9OID09IDgpICYmIChUQ0xfTUlOT1JfVkVSU0lPTiA8IDYpCisgCQlUY2xfQmFja2dyb3VuZEVy cm9yKHN0YXRlUHRyLT5pbnRlcnApOworKyNlbHNlCisrCQlUY2xfQmFja2dyb3VuZEV4Y2VwdGlv bihzdGF0ZVB0ci0+aW50ZXJwLCBjb2RlKTsKKysjZW5kaWYKKyAJCW9rID0gMDsKKyAJICAgIH0K KyAJfQorQEAgLTM2MCw5ICszNDYsOSBAQCBWZXJpZnlDYWxsYmFjayhpbnQgb2ssIFg1MDlfU1RP UkVfQ1RYICpjdHgpCisgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICovCisgdm9pZAorLVRsc19FcnJvcihTdGF0 ZSAqc3RhdGVQdHIsIGNoYXIgKm1zZykKKy17CisrVGxzX0Vycm9yKFN0YXRlICpzdGF0ZVB0ciwg Y2hhciAqbXNnKSB7CisgICAgIFRjbF9PYmogKmNtZFB0cjsKKysgICAgaW50IGNvZGU7CisgCisg ICAgIGRwcmludGYoIkNhbGxlZCIpOworIAorQEAgLTM3OCw3ICszNjQsMTEgQEAgVGxzX0Vycm9y KFN0YXRlICpzdGF0ZVB0ciwgY2hhciAqbXNnKQorIAlzcHJpbnRmKGJ1ZiwgIlNTTCBjaGFubmVs IFwiJXNcIjogZXJyb3I6ICVzIiwKKyAJICAgIFRjbF9HZXRDaGFubmVsTmFtZShzdGF0ZVB0ci0+ c2VsZiksIG1zZyk7CisgCVRjbF9TZXRSZXN1bHQoIHN0YXRlUHRyLT5pbnRlcnAsIGJ1ZiwgVENM X1ZPTEFUSUxFKTsKKy0JVGNsX0JhY2tncm91bmRFcnJvciggc3RhdGVQdHItPmludGVycCk7Cisr I2lmIChUQ0xfTUFKT1JfVkVSU0lPTiA9PSA4KSAmJiAoVENMX01JTk9SX1ZFUlNJT04gPCA2KQor KwlUY2xfQmFja2dyb3VuZEVycm9yKHN0YXRlUHRyLT5pbnRlcnApOworKyNlbHNlCisrCVRjbF9C YWNrZ3JvdW5kRXhjZXB0aW9uKHN0YXRlUHRyLT5pbnRlcnAsIFRDTF9FUlJPUik7CisrI2VuZGlm CisgCXJldHVybjsKKyAgICAgfQorICAgICBjbWRQdHIgPSBUY2xfRHVwbGljYXRlT2JqKHN0YXRl UHRyLT5jYWxsYmFjayk7CitAQCAtMzk2LDggKzM4NiwxMyBAQCBUbHNfRXJyb3IoU3RhdGUgKnN0 YXRlUHRyLCBjaGFyICptc2cpCisgICAgIFRjbF9QcmVzZXJ2ZSgoQ2xpZW50RGF0YSkgc3RhdGVQ dHIpOworIAorICAgICBUY2xfSW5jclJlZkNvdW50KGNtZFB0cik7CistICAgIGlmIChUY2xfRXZh bE9iakV4KHN0YXRlUHRyLT5pbnRlcnAsIGNtZFB0ciwgVENMX0VWQUxfR0xPQkFMKSAhPSBUQ0xf T0spIHsKKysgICAgY29kZSA9IFRjbF9FdmFsT2JqRXgoc3RhdGVQdHItPmludGVycCwgY21kUHRy LCBUQ0xfRVZBTF9HTE9CQUwpOworKyAgICBpZiAoY29kZSAhPSBUQ0xfT0spIHsKKysjaWYgKFRD TF9NQUpPUl9WRVJTSU9OID09IDgpICYmIChUQ0xfTUlOT1JfVkVSU0lPTiA8IDYpCisgCVRjbF9C YWNrZ3JvdW5kRXJyb3Ioc3RhdGVQdHItPmludGVycCk7CisrI2Vsc2UKKysJVGNsX0JhY2tncm91 bmRFeGNlcHRpb24oc3RhdGVQdHItPmludGVycCwgY29kZSk7CisrI2VuZGlmCisgICAgIH0KKyAg ICAgVGNsX0RlY3JSZWZDb3VudChjbWRQdHIpOworIAorQEAgLTQyMSwyMSArNDE2LDE5IEBAIFRs c19FcnJvcihTdGF0ZSAqc3RhdGVQdHIsIGNoYXIgKm1zZykKKyAgKiB2YXJpYWJsZSB0byBhY2Nl c3MgdGhlIFRjbCBpbnRlcnByZXRlci4KKyAqLworIHN0YXRpYyBpbnQKKy1QYXNzd29yZENhbGxi YWNrKGNoYXIgKmJ1ZiwgaW50IHNpemUsIGludCB2ZXJpZnkpCisteworK1Bhc3N3b3JkQ2FsbGJh Y2soY2hhciAqYnVmLCBpbnQgc2l6ZSwgaW50IHZlcmlmeSkgeworICAgICByZXR1cm4gLTE7Cist ICAgIAlidWYgPSBidWY7CisrCWJ1ZiA9IGJ1ZjsKKyAJc2l6ZSA9IHNpemU7CisgCXZlcmlmeSA9 IHZlcmlmeTsKKyB9CisgI2Vsc2UKKyBzdGF0aWMgaW50CistUGFzc3dvcmRDYWxsYmFjayhjaGFy ICpidWYsIGludCBzaXplLCBpbnQgdmVyaWZ5LCB2b2lkICp1ZGF0YSkKKy17CisrUGFzc3dvcmRD YWxsYmFjayhjaGFyICpidWYsIGludCBzaXplLCBpbnQgdmVyaWZ5LCB2b2lkICp1ZGF0YSkgewor ICAgICBTdGF0ZSAqc3RhdGVQdHIJPSAoU3RhdGUgKikgdWRhdGE7CisgICAgIFRjbF9JbnRlcnAg KmludGVycAk9IHN0YXRlUHRyLT5pbnRlcnA7CisgICAgIFRjbF9PYmogKmNtZFB0cjsKKy0gICAg aW50IHJlc3VsdDsKKysgICAgaW50IGNvZGU7CisgCisgICAgIGRwcmludGYoIkNhbGxlZCIpOwor IAorQEAgLTQ1MiwyNyArNDQ1LDMyIEBAIFBhc3N3b3JkQ2FsbGJhY2soY2hhciAqYnVmLCBpbnQg c2l6ZSwgaW50IHZlcmlmeSwgdm9pZCAqdWRhdGEpCisgCisgICAgIGNtZFB0ciA9IFRjbF9EdXBs aWNhdGVPYmooc3RhdGVQdHItPnBhc3N3b3JkKTsKKyAKKy0gICAgVGNsX1ByZXNlcnZlKChDbGll bnREYXRhKSBzdGF0ZVB0ci0+aW50ZXJwKTsKKysgICAgVGNsX1ByZXNlcnZlKChDbGllbnREYXRh KSBpbnRlcnApOworICAgICBUY2xfUHJlc2VydmUoKENsaWVudERhdGEpIHN0YXRlUHRyKTsKKyAK KyAgICAgVGNsX0luY3JSZWZDb3VudChjbWRQdHIpOworLSAgICByZXN1bHQgPSBUY2xfRXZhbE9i akV4KGludGVycCwgY21kUHRyLCBUQ0xfRVZBTF9HTE9CQUwpOworLSAgICBpZiAocmVzdWx0ICE9 IFRDTF9PSykgeworLQlUY2xfQmFja2dyb3VuZEVycm9yKHN0YXRlUHRyLT5pbnRlcnApOworKyAg ICBjb2RlID0gVGNsX0V2YWxPYmpFeChpbnRlcnAsIGNtZFB0ciwgVENMX0VWQUxfR0xPQkFMKTsK KysgICAgaWYgKGNvZGUgIT0gVENMX09LKSB7CisrI2lmIChUQ0xfTUFKT1JfVkVSU0lPTiA9PSA4 KSAmJiAoVENMX01JTk9SX1ZFUlNJT04gPCA2KQorKwlUY2xfQmFja2dyb3VuZEVycm9yKGludGVy cCk7CisrI2Vsc2UKKysJVGNsX0JhY2tncm91bmRFeGNlcHRpb24oaW50ZXJwLCBjb2RlKTsKKysj ZW5kaWYKKyAgICAgfQorICAgICBUY2xfRGVjclJlZkNvdW50KGNtZFB0cik7CisgCisgICAgIFRj bF9SZWxlYXNlKChDbGllbnREYXRhKSBzdGF0ZVB0cik7CistICAgIFRjbF9SZWxlYXNlKChDbGll bnREYXRhKSBzdGF0ZVB0ci0+aW50ZXJwKTsKKyAKKy0gICAgaWYgKHJlc3VsdCA9PSBUQ0xfT0sp IHsKKysgICAgaWYgKGNvZGUgPT0gVENMX09LKSB7CisgCWNoYXIgKnJldCA9IChjaGFyICopIFRj bF9HZXRTdHJpbmdSZXN1bHQoaW50ZXJwKTsKKy0Jc3RybmNweShidWYsIHJldCwgKHNpemVfdCkg c2l6ZSk7CistCXJldHVybiAoaW50KXN0cmxlbihyZXQpOworLSAgICB9IGVsc2UgeworLQlyZXR1 cm4gLTE7CistICAgIH0KKy0gICAgCXZlcmlmeSA9IHZlcmlmeTsKKysJaWYgKHN0cmxlbihyZXQp IDwgc2l6ZSAtIDEpIHsKKysJICAgIHN0cm5jcHkoYnVmLCByZXQsIChzaXplX3QpIHNpemUpOwor KwkgICAgVGNsX1JlbGVhc2UoKENsaWVudERhdGEpIGludGVycCk7CisrCSAgICByZXR1cm4gKGlu dClzdHJsZW4ocmV0KTsKKysJfQorKyAgICAgfQorKyAgICBUY2xfUmVsZWFzZSgoQ2xpZW50RGF0 YSkgaW50ZXJwKTsKKysgICAgcmV0dXJuIC0xOworIH0KKyAjZW5kaWYKKyAMCitAQCAtNDkzLDEz ICs0OTEsOCBAQCBQYXNzd29yZENhbGxiYWNrKGNoYXIgKmJ1ZiwgaW50IHNpemUsIGludCB2ZXJp ZnksIHZvaWQgKnVkYXRhKQorICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAqLworIHN0YXRpYyBpbnQKKy1DaXBo ZXJzT2JqQ21kKGNsaWVudERhdGEsIGludGVycCwgb2JqYywgb2JqdikKKy0gICAgQ2xpZW50RGF0 YSBjbGllbnREYXRhOwkvKiBOb3QgdXNlZC4gKi8KKy0gICAgVGNsX0ludGVycCAqaW50ZXJwOwor LSAgICBpbnQgb2JqYzsKKy0gICAgVGNsX09iagkqQ09OU1Qgb2JqdltdOworLXsKKy0gICAgc3Rh dGljIENPTlNUODQgY2hhciAqcHJvdG9jb2xzW10gPSB7CisrQ2lwaGVyc09iakNtZChDbGllbnRE YXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKmNv bnN0IG9ianZbXSkgeworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqcHJvdG9jb2xzW10gPSB7Cisg CSJzc2wyIiwJInNzbDMiLAkidGxzMSIsCSJ0bHMxLjEiLCAidGxzMS4yIiwgInRsczEuMyIsIE5V TEwKKyAgICAgfTsKKyAgICAgZW51bSBwcm90b2NvbCB7CitAQCAtNTY5LDcgKzU2Miw4IEBAIENp cGhlcnNPYmpDbWQoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQorICNlbHNlCisgCQlj dHggPSBTU0xfQ1RYX25ldyhUTFNfbWV0aG9kKCkpOyBicmVhazsKKyAgICAgICAgICAgICAgICAg U1NMX0NUWF9zZXRfbWluX3Byb3RvX3ZlcnNpb24gKGN0eCwgVExTMV8zX1ZFUlNJT04pOworLSAg ICAgICAgICAgICAgICBTU0xfQ1RYX3NldF9tYXhfcHJvdG9fdmVyc2lvbiAoY3R4LCBUTFMxXzNf VkVSU0lPTik7CisrCQlTU0xfQ1RYX3NldF9tYXhfcHJvdG9fdmVyc2lvbiAoY3R4LCBUTFMxXzNf VkVSU0lPTik7CisrCQlicmVhazsKKyAjZW5kaWYKKyAgICAgZGVmYXVsdDoKKyAJCWJyZWFrOwor QEAgLTYxNyw3ICs2MTEsNyBAQCBDaXBoZXJzT2JqQ21kKGNsaWVudERhdGEsIGludGVycCwgb2Jq Yywgb2JqdikKKyAKKyAgICAgVGNsX1NldE9ialJlc3VsdCggaW50ZXJwLCBvYmpQdHIpOworICAg ICByZXR1cm4gVENMX09LOworLSAgICAJY2xpZW50RGF0YSA9IGNsaWVudERhdGE7CisrCWNsaWVu dERhdGEgPSBjbGllbnREYXRhOworIH0KKyAMCisgLyoKK0BAIC02MzcsMTAgKzYzMSwxMCBAQCBD aXBoZXJzT2JqQ21kKGNsaWVudERhdGEsIGludGVycCwgb2JqYywgb2JqdikKKyAgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgKi8KKyAKKy1zdGF0aWMgaW50IEhhbmRzaGFrZU9iakNtZChDbGllbnREYXRhIGNsaWVu dERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKkNPTlNUIG9ianZb XSkgeworK3N0YXRpYyBpbnQgSGFuZHNoYWtlT2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwg VGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3Qgb2JqdltdKSB7Cisg CVRjbF9DaGFubmVsIGNoYW47CQkvKiBUaGUgY2hhbm5lbCB0byBzZXQgYSBtb2RlIG9uLiAqLwor IAlTdGF0ZSAqc3RhdGVQdHI7CQkvKiBjbGllbnQgc3RhdGUgZm9yIHNzbCBzb2NrZXQgKi8KKy0J Q09OU1QgY2hhciAqZXJyU3RyID0gTlVMTDsKKysJY29uc3QgY2hhciAqZXJyU3RyID0gTlVMTDsK KyAJaW50IHJldCA9IDE7CisgCWludCBlcnIgPSAwOworIAorQEAgLTY3MCwxMCArNjY0LDcgQEAg c3RhdGljIGludCBIYW5kc2hha2VPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50 ZXJwICppbnRlcnAsIGludCBvYmpjLAorIAlyZXQgPSBUbHNfV2FpdEZvckNvbm5lY3Qoc3RhdGVQ dHIsICZlcnIsIDEpOworIAlkcHJpbnRmKCJUbHNfV2FpdEZvckNvbm5lY3QgcmV0dXJuZWQ6ICVp IiwgcmV0KTsKKyAKKy0JaWYgKAorLQkgICAgcmV0IDwgMCAmJiBcCistCSAgICAoKHN0YXRlUHRy LT5mbGFncyAmIFRMU19UQ0xfQVNZTkMpICYmIGVyciA9PSBFQUdBSU4pCistCSkgeworKwlpZiAo cmV0IDwgMCAmJiAoKHN0YXRlUHRyLT5mbGFncyAmIFRMU19UQ0xfQVNZTkMpICYmIChlcnIgPT0g RUFHQUlOKSkpIHsKKyAJCWRwcmludGYoIkFzeW5jIHNldCBhbmQgZXJyID0gRUFHQUlOIik7Cisg CQlyZXQgPSAwOworIAl9IGVsc2UgaWYgKHJldCA8IDApIHsKK0BAIC03MDAsNyArNjkxLDcgQEAg c3RhdGljIGludCBIYW5kc2hha2VPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50 ZXJwICppbnRlcnAsIGludCBvYmpjLAorIAlUY2xfU2V0T2JqUmVzdWx0KGludGVycCwgVGNsX05l d0ludE9iaihyZXQpKTsKKyAJcmV0dXJuKFRDTF9PSyk7CisgCistICAgIAljbGllbnREYXRhID0g Y2xpZW50RGF0YTsKKysJY2xpZW50RGF0YSA9IGNsaWVudERhdGE7CisgfQorIAorIC8qCitAQCAt NzIyLDEyICs3MTMsNyBAQCBzdGF0aWMgaW50IEhhbmRzaGFrZU9iakNtZChDbGllbnREYXRhIGNs aWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IG9iamMsCisgICovCisgCisgc3RhdGlj IGludAorLUltcG9ydE9iakNtZChjbGllbnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCistICAg IENsaWVudERhdGEgY2xpZW50RGF0YTsJLyogTm90IHVzZWQuICovCistICAgIFRjbF9JbnRlcnAg KmludGVycDsKKy0gICAgaW50IG9iamM7CistICAgIFRjbF9PYmogKkNPTlNUIG9ianZbXTsKKy17 CisrSW1wb3J0T2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJw LCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3Qgb2JqdltdKSB7CisgICAgIFRjbF9DaGFubmVsIGNo YW47CQkvKiBUaGUgY2hhbm5lbCB0byBzZXQgYSBtb2RlIG9uLiAqLworICAgICBTdGF0ZSAqc3Rh dGVQdHI7CQkvKiBjbGllbnQgc3RhdGUgZm9yIHNzbCBzb2NrZXQgKi8KKyAgICAgU1NMX0NUWCAq Y3R4CSAgICAgICAgPSBOVUxMOworQEAgLTgxMSw3ICs3OTcsNyBAQCBJbXBvcnRPYmpDbWQoY2xp ZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQorIAlPUFRCT09MKCAiLXJlcXVlc3QiLCByZXF1 ZXN0KTsKKyAJT1BUQk9PTCggIi1zZXJ2ZXIiLCBzZXJ2ZXIpOworICNpZm5kZWYgT1BFTlNTTF9O T19UTFNFWFQKKy0gICAgICAgIE9QVFNUUiggIi1zZXJ2ZXJuYW1lIiwgc2VydmVybmFtZSk7Cisr CU9QVFNUUiggIi1zZXJ2ZXJuYW1lIiwgc2VydmVybmFtZSk7CisgI2VuZGlmCisgCisgCU9QVEJP T0woICItc3NsMiIsIHNzbDIpOworQEAgLTg4NCwxMCArODcxLDEwIEBAIEltcG9ydE9iakNtZChj bGllbnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCisgCSAgICByZXR1cm4gVENMX0VSUk9SOwor IAl9CisgCistICAgICAgICAvKgorLSAgICAgICAgICogTWFrZSBzdXJlIHRvIG9wZXJhdGUgb24g dGhlIHRvcG1vc3QgY2hhbm5lbAorLSAgICAgICAgICovCistICAgICAgICBjaGFuID0gVGNsX0dl dFRvcENoYW5uZWwoY2hhbik7CisrCS8qCisrCSAqIE1ha2Ugc3VyZSB0byBvcGVyYXRlIG9uIHRo ZSB0b3Btb3N0IGNoYW5uZWwKKysJICovCisrCWNoYW4gPSBUY2xfR2V0VG9wQ2hhbm5lbChjaGFu KTsKKyAJaWYgKFRjbF9HZXRDaGFubmVsVHlwZShjaGFuKSAhPSBUbHNfQ2hhbm5lbFR5cGUoKSkg eworIAkgICAgVGNsX0FwcGVuZFJlc3VsdChpbnRlcnAsICJiYWQgY2hhbm5lbCBcIiIsCisgCQkg ICAgVGNsX0dldENoYW5uZWxOYW1lKGNoYW4pLCAiXCI6IG5vdCBhIFRMUyBjaGFubmVsIiwgTlVM TCk7CitAQCAtOTUzLDEyICs5NDAsMTIgQEAgSW1wb3J0T2JqQ21kKGNsaWVudERhdGEsIGludGVy cCwgb2JqYywgb2JqdikKKyAKKyAjaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCisgICAgIGlmIChz ZXJ2ZXJuYW1lKSB7CistICAgICAgICBpZiAoIVNTTF9zZXRfdGxzZXh0X2hvc3RfbmFtZShzdGF0 ZVB0ci0+c3NsLCBzZXJ2ZXJuYW1lKSAmJiByZXF1aXJlKSB7CistICAgICAgICAgICAgVGNsX0Fw cGVuZFJlc3VsdChpbnRlcnAsICJzZXR0aW5nIFRMUyBob3N0IG5hbWUgZXh0ZW5zaW9uIGZhaWxl ZCIsCistICAgICAgICAgICAgICAgIChjaGFyICopIE5VTEwpOworLSAgICAgICAgICAgIFRsc19G cmVlKChjaGFyICopIHN0YXRlUHRyKTsKKy0gICAgICAgICAgICByZXR1cm4gVENMX0VSUk9SOwor LSAgICAgICAgfQorKwlpZiAoIVNTTF9zZXRfdGxzZXh0X2hvc3RfbmFtZShzdGF0ZVB0ci0+c3Ns LCBzZXJ2ZXJuYW1lKSAmJiByZXF1aXJlKSB7CisrCSAgICBUY2xfQXBwZW5kUmVzdWx0KGludGVy cCwgInNldHRpbmcgVExTIGhvc3QgbmFtZSBleHRlbnNpb24gZmFpbGVkIiwKKysJCShjaGFyICop IE5VTEwpOworKwkgICAgVGxzX0ZyZWUoKGNoYXIgKikgc3RhdGVQdHIpOworKwkgICAgcmV0dXJu IFRDTF9FUlJPUjsKKysJfQorICAgICB9CisgI2VuZGlmCisgCitAQCAtOTY2LDcgKzk1Myw3IEBA IEltcG9ydE9iakNtZChjbGllbnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCisgICAgICAqIFNT TCBDYWxsYmFja3MKKyAgICAgICovCisgCistICAgIFNTTF9zZXRfYXBwX2RhdGEoc3RhdGVQdHIt PnNzbCwgKFZPSUQgKilzdGF0ZVB0cik7CS8qIHBvaW50IGJhY2sgdG8gdXMgKi8KKysgICAgU1NM X3NldF9hcHBfZGF0YShzdGF0ZVB0ci0+c3NsLCAodm9pZCAqKXN0YXRlUHRyKTsJLyogcG9pbnQg YmFjayB0byB1cyAqLworIAorICAgICBTU0xfc2V0X3ZlcmlmeShzdGF0ZVB0ci0+c3NsLCB2ZXJp ZnksIFZlcmlmeUNhbGxiYWNrKTsKKyAKK0BAIC05OTIsNyArOTc5LDcgQEAgSW1wb3J0T2JqQ21k KGNsaWVudERhdGEsIGludGVycCwgb2JqYywgb2JqdikKKyAgICAgVGNsX1NldFJlc3VsdChpbnRl cnAsIChjaGFyICopIFRjbF9HZXRDaGFubmVsTmFtZShzdGF0ZVB0ci0+c2VsZiksCisgCSAgICBU Q0xfVk9MQVRJTEUpOworICAgICByZXR1cm4gVENMX09LOworLSAgICAJY2xpZW50RGF0YSA9IGNs aWVudERhdGE7CisrCWNsaWVudERhdGEgPSBjbGllbnREYXRhOworIH0KKyAMCisgLyoKK0BAIC0x MDEyLDEyICs5OTksNyBAQCBJbXBvcnRPYmpDbWQoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBv Ymp2KQorICAqLworIAorIHN0YXRpYyBpbnQKKy1VbmltcG9ydE9iakNtZChjbGllbnREYXRhLCBp bnRlcnAsIG9iamMsIG9ianYpCistICAgIENsaWVudERhdGEgY2xpZW50RGF0YTsJLyogTm90IHVz ZWQuICovCistICAgIFRjbF9JbnRlcnAgKmludGVycDsKKy0gICAgaW50IG9iamM7CistICAgIFRj bF9PYmogKkNPTlNUIG9ianZbXTsKKy17CisrVW5pbXBvcnRPYmpDbWQoQ2xpZW50RGF0YSBjbGll bnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2 W10pIHsKKyAgICAgVGNsX0NoYW5uZWwgY2hhbjsJCS8qIFRoZSBjaGFubmVsIHRvIHNldCBhIG1v ZGUgb24uICovCisgCisgICAgIGRwcmludGYoIkNhbGxlZCIpOworQEAgLTEwNDgsNyArMTAzMCw3 IEBAIFVuaW1wb3J0T2JqQ21kKGNsaWVudERhdGEsIGludGVycCwgb2JqYywgb2JqdikKKyAgICAg fQorIAorICAgICByZXR1cm4gVENMX09LOworLSAgICAJY2xpZW50RGF0YSA9IGNsaWVudERhdGE7 CisrCWNsaWVudERhdGEgPSBjbGllbnREYXRhOworIH0KKyAMCisgLyoKK0BAIC0xMDY2LDIyICsx MDQ4LDkgQEAgVW5pbXBvcnRPYmpDbWQoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQor ICAqLworIAorIHN0YXRpYyBTU0xfQ1RYICoKKy1DVFhfSW5pdChzdGF0ZVB0ciwgaXNTZXJ2ZXIs IHByb3RvLCBrZXlmaWxlLCBjZXJ0ZmlsZSwga2V5LCBjZXJ0LAorLSAgICAgICAgIGtleV9sZW4s IGNlcnRfbGVuLCBDQWRpciwgQ0FmaWxlLCBjaXBoZXJzLCBESHBhcmFtcykKKy0gICAgU3RhdGUg KnN0YXRlUHRyOworLSAgICBpbnQgaXNTZXJ2ZXI7CistICAgIGludCBwcm90bzsKKy0gICAgY2hh ciAqa2V5ZmlsZTsKKy0gICAgY2hhciAqY2VydGZpbGU7CistICAgIHVuc2lnbmVkIGNoYXIgKmtl eTsKKy0gICAgdW5zaWduZWQgY2hhciAqY2VydDsKKy0gICAgaW50IGtleV9sZW47CistICAgIGlu dCBjZXJ0X2xlbjsKKy0gICAgY2hhciAqQ0FkaXI7CistICAgIGNoYXIgKkNBZmlsZTsKKy0gICAg Y2hhciAqY2lwaGVyczsKKy0gICAgY2hhciAqREhwYXJhbXM7CisteworK0NUWF9Jbml0KFN0YXRl ICpzdGF0ZVB0ciwgaW50IGlzU2VydmVyLCBpbnQgcHJvdG8sIGNoYXIgKmtleWZpbGUsIGNoYXIg KmNlcnRmaWxlLAorKyAgICB1bnNpZ25lZCBjaGFyICprZXksIHVuc2lnbmVkIGNoYXIgKmNlcnQs IGludCBrZXlfbGVuLCBpbnQgY2VydF9sZW4sIGNoYXIgKkNBZGlyLAorKyAgICBjaGFyICpDQWZp bGUsIGNoYXIgKmNpcGhlcnMsIGNoYXIgKkRIcGFyYW1zKSB7CisgICAgIFRjbF9JbnRlcnAgKmlu dGVycCA9IHN0YXRlUHRyLT5pbnRlcnA7CisgICAgIFNTTF9DVFggKmN0eCA9IE5VTEw7CisgICAg IFRjbF9EU3RyaW5nIGRzOworQEAgLTExMzgsNDQgKzExMDcsNDQgQEAgQ1RYX0luaXQoc3RhdGVQ dHIsIGlzU2VydmVyLCBwcm90bywga2V5ZmlsZSwgY2VydGZpbGUsIGtleSwgY2VydCwKKyAgICAg c3dpdGNoIChwcm90bykgeworICNpZiAhZGVmaW5lZChOT19TU0wyKQorICAgICBjYXNlIFRMU19Q Uk9UT19TU0wyOgorLQltZXRob2QgPSBTU0x2Ml9tZXRob2QgKCk7CisrCW1ldGhvZCA9IFNTTHYy X21ldGhvZCgpOworIAlicmVhazsKKyAjZW5kaWYKKyAjaWYgIWRlZmluZWQoTk9fU1NMMykKKyAg ICAgY2FzZSBUTFNfUFJPVE9fU1NMMzoKKy0JbWV0aG9kID0gU1NMdjNfbWV0aG9kICgpOworKwlt ZXRob2QgPSBTU0x2M19tZXRob2QoKTsKKyAJYnJlYWs7CisgI2VuZGlmCisgI2lmICFkZWZpbmVk KE5PX1RMUzEpCisgICAgIGNhc2UgVExTX1BST1RPX1RMUzE6CistCW1ldGhvZCA9IFRMU3YxX21l dGhvZCAoKTsKKysJbWV0aG9kID0gVExTdjFfbWV0aG9kKCk7CisgCWJyZWFrOworICNlbmRpZgor ICNpZiAhZGVmaW5lZChOT19UTFMxXzEpCisgICAgIGNhc2UgVExTX1BST1RPX1RMUzFfMToKKy0J bWV0aG9kID0gVExTdjFfMV9tZXRob2QgKCk7CisrCW1ldGhvZCA9IFRMU3YxXzFfbWV0aG9kKCk7 CisgCWJyZWFrOworICNlbmRpZgorICNpZiAhZGVmaW5lZChOT19UTFMxXzIpCisgICAgIGNhc2Ug VExTX1BST1RPX1RMUzFfMjoKKy0JbWV0aG9kID0gVExTdjFfMl9tZXRob2QgKCk7CisrCW1ldGhv ZCA9IFRMU3YxXzJfbWV0aG9kKCk7CisgCWJyZWFrOworICNlbmRpZgorICNpZiAhZGVmaW5lZChO T19UTFMxXzMpCisgICAgIGNhc2UgVExTX1BST1RPX1RMUzFfMzoKKy0gICAgICAgIC8qCistICAg ICAgICAgKiBUaGUgdmVyc2lvbiByYW5nZSBpcyBjb25zdHJhaW5lZCBiZWxvdywKKy0gICAgICAg ICAqIGFmdGVyIHRoZSBjb250ZXh0IGlzIGNyZWF0ZWQuICBVc2UgdGhlCistICAgICAgICAgKiBn ZW5lcmljIG1ldGhvZCBoZXJlLgorLSAgICAgICAgICovCistCW1ldGhvZCA9IFRMU19tZXRob2Qg KCk7CisrCS8qCisrCSAqIFRoZSB2ZXJzaW9uIHJhbmdlIGlzIGNvbnN0cmFpbmVkIGJlbG93LAor KwkgKiBhZnRlciB0aGUgY29udGV4dCBpcyBjcmVhdGVkLiAgVXNlIHRoZQorKwkgKiBnZW5lcmlj IG1ldGhvZCBoZXJlLgorKwkgKi8KKysJbWV0aG9kID0gVExTX21ldGhvZCgpOworIAlicmVhazsK KyAjZW5kaWYKKyAgICAgZGVmYXVsdDoKKyAjaWZkZWYgSEFWRV9UTFNfTUVUSE9ECistICAgICAg ICBtZXRob2QgPSBUTFNfbWV0aG9kICgpOworKwltZXRob2QgPSBUTFNfbWV0aG9kKCk7CisgI2Vs c2UKKy0gICAgICAgIG1ldGhvZCA9IFNTTHYyM19tZXRob2QgKCk7CisrCW1ldGhvZCA9IFNTTHYy M19tZXRob2QoKTsKKyAjZW5kaWYKKyAjaWYgIWRlZmluZWQoTk9fU1NMMikKKyAJb2ZmIHw9IChF TkFCTEVEKHByb3RvLCBUTFNfUFJPVE9fU1NMMikgICA/IDAgOiBTU0xfT1BfTk9fU1NMdjIpOwor QEAgLTExOTgsMjAgKzExNjcsMjAgQEAgQ1RYX0luaXQoc3RhdGVQdHIsIGlzU2VydmVyLCBwcm90 bywga2V5ZmlsZSwgY2VydGZpbGUsIGtleSwgY2VydCwKKyAJYnJlYWs7CisgICAgIH0KKyAgICAg CistICAgIGN0eCA9IFNTTF9DVFhfbmV3IChtZXRob2QpOworKyAgICBjdHggPSBTU0xfQ1RYX25l dyhtZXRob2QpOworIAorICAgICBpZiAoIWN0eCkgeworLSAgICAgICAgcmV0dXJuKE5VTEwpOwor KwlyZXR1cm4oTlVMTCk7CisgICAgIH0KKyAKKyAjaWYgIWRlZmluZWQoTk9fVExTMV8zKQorICAg ICBpZiAocHJvdG8gPT0gVExTX1BST1RPX1RMUzFfMykgeworLSAgICAgICAgU1NMX0NUWF9zZXRf bWluX3Byb3RvX3ZlcnNpb24gKGN0eCwgVExTMV8zX1ZFUlNJT04pOworLSAgICAgICAgU1NMX0NU WF9zZXRfbWF4X3Byb3RvX3ZlcnNpb24gKGN0eCwgVExTMV8zX1ZFUlNJT04pOworKwlTU0xfQ1RY X3NldF9taW5fcHJvdG9fdmVyc2lvbiAoY3R4LCBUTFMxXzNfVkVSU0lPTik7CisrCVNTTF9DVFhf c2V0X21heF9wcm90b192ZXJzaW9uIChjdHgsIFRMUzFfM19WRVJTSU9OKTsKKyAgICAgfQorICNl bmRpZgorICAgICAKKy0gICAgU1NMX0NUWF9zZXRfYXBwX2RhdGEoIGN0eCwgKFZPSUQqKWludGVy cCk7CS8qIHJlbWVtYmVyIHRoZSBpbnRlcnByZXRlciAqLworKyAgICBTU0xfQ1RYX3NldF9hcHBf ZGF0YSggY3R4LCAodm9pZCopaW50ZXJwKTsJLyogcmVtZW1iZXIgdGhlIGludGVycHJldGVyICov CisgICAgIFNTTF9DVFhfc2V0X29wdGlvbnMoIGN0eCwgU1NMX09QX0FMTCk7CS8qIGFsbCBTU0wg YnVnIHdvcmthcm91bmRzICovCisgICAgIFNTTF9DVFhfc2V0X29wdGlvbnMoIGN0eCwgb2ZmKTsJ LyogYWxsIFNTTCBidWcgd29ya2Fyb3VuZHMgKi8KKyAgICAgU1NMX0NUWF9zZXNzX3NldF9jYWNo ZV9zaXplKCBjdHgsIDEyOCk7CitAQCAtMTM3NCw3ICsxMzQzLDcgQEAgQ1RYX0luaXQoc3RhdGVQ dHIsIGlzU2VydmVyLCBwcm90bywga2V5ZmlsZSwgY2VydGZpbGUsIGtleSwgY2VydCwKKyAgICAg LyogaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC90bHMvYnVncy81Ny8gKi8KKyAgICAgLyogWFhY OlRPRE86IExldCB0aGUgdXNlciBzdXBwbHkgdmFsdWVzIGhlcmUgaW5zdGVhZCBvZiBzb21ldGhp bmcgdGhhdCBleGlzdHMgb24gdGhlIGZpbGVzeXN0ZW0gKi8KKyAgICAgaWYgKCBDQWZpbGUgIT0g TlVMTCApIHsKKy0gICAgICAgIFNUQUNLX09GKFg1MDlfTkFNRSkgKmNlcnROYW1lcyA9IFNTTF9s b2FkX2NsaWVudF9DQV9maWxlKCBGMk4oQ0FmaWxlLCAmZHMpICk7CisrCVNUQUNLX09GKFg1MDlf TkFNRSkgKmNlcnROYW1lcyA9IFNTTF9sb2FkX2NsaWVudF9DQV9maWxlKCBGMk4oQ0FmaWxlLCAm ZHMpICk7CisgCWlmICggY2VydE5hbWVzICE9IE5VTEwgKSB7IAorIAkgICAgU1NMX0NUWF9zZXRf Y2xpZW50X0NBX2xpc3QoY3R4LCBjZXJ0TmFtZXMgKTsKKyAJfQorQEAgLTEzOTksMTIgKzEzNjgs NyBAQCBDVFhfSW5pdChzdGF0ZVB0ciwgaXNTZXJ2ZXIsIHByb3RvLCBrZXlmaWxlLCBjZXJ0Zmls ZSwga2V5LCBjZXJ0LAorICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAqLworIHN0YXRpYyBpbnQKKy1TdGF0dXNP YmpDbWQoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQorLSAgICBDbGllbnREYXRhIGNs aWVudERhdGE7CS8qIE5vdCB1c2VkLiAqLworLSAgICBUY2xfSW50ZXJwICppbnRlcnA7CistICAg IGludCBvYmpjOworLSAgICBUY2xfT2JqCSpDT05TVCBvYmp2W107CisteworK1N0YXR1c09iakNt ZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IG9iamMsIFRj bF9PYmogKmNvbnN0IG9ianZbXSkgeworICAgICBTdGF0ZSAqc3RhdGVQdHI7CisgICAgIFg1MDkg KnBlZXI7CisgICAgIFRjbF9PYmogKm9ialB0cjsKK0BAIC0xNDc2LDcgKzE0NDAsNyBAQCBTdGF0 dXNPYmpDbWQoY2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQorIAorICAgICBUY2xfU2V0 T2JqUmVzdWx0KCBpbnRlcnAsIG9ialB0cik7CisgICAgIHJldHVybiBUQ0xfT0s7CistICAgIAlj bGllbnREYXRhID0gY2xpZW50RGF0YTsKKysJY2xpZW50RGF0YSA9IGNsaWVudERhdGE7CisgfQor IAwKKyAvKgorQEAgLTE0OTMsMTIgKzE0NTcsNyBAQCBTdGF0dXNPYmpDbWQoY2xpZW50RGF0YSwg aW50ZXJwLCBvYmpjLCBvYmp2KQorICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAqLworIHN0YXRpYyBpbnQKKy1W ZXJzaW9uT2JqQ21kKGNsaWVudERhdGEsIGludGVycCwgb2JqYywgb2JqdikKKy0gICAgQ2xpZW50 RGF0YSBjbGllbnREYXRhOwkvKiBOb3QgdXNlZC4gKi8KKy0gICAgVGNsX0ludGVycCAqaW50ZXJw OworLSAgICBpbnQgb2JqYzsKKy0gICAgVGNsX09iagkqQ09OU1Qgb2JqdltdOworLXsKKytWZXJz aW9uT2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQg b2JqYywgVGNsX09iaiAqY29uc3Qgb2JqdltdKSB7CisgICAgIFRjbF9PYmogKm9ialB0cjsKKyAK KyAgICAgZHByaW50ZigiQ2FsbGVkIik7CitAQCAtMTUwNyw5ICsxNDY2LDkgQEAgVmVyc2lvbk9i akNtZChjbGllbnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCisgCisgICAgIFRjbF9TZXRPYmpS ZXN1bHQoaW50ZXJwLCBvYmpQdHIpOworICAgICByZXR1cm4gVENMX09LOworLSAgICAJY2xpZW50 RGF0YSA9IGNsaWVudERhdGE7CistICAgIAlvYmpjID0gb2JqYzsKKy0gICAgCW9ianYgPSBvYmp2 OworKwljbGllbnREYXRhID0gY2xpZW50RGF0YTsKKysJb2JqYyA9IG9iamM7CisrCW9ianYgPSBv Ymp2OworIH0KKyAMCisgLyoKK0BAIC0xNTI2LDE1ICsxNDg1LDEwIEBAIFZlcnNpb25PYmpDbWQo Y2xpZW50RGF0YSwgaW50ZXJwLCBvYmpjLCBvYmp2KQorICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAqLworIHN0 YXRpYyBpbnQKKy1NaXNjT2JqQ21kKGNsaWVudERhdGEsIGludGVycCwgb2JqYywgb2JqdikKKy0g ICAgQ2xpZW50RGF0YSBjbGllbnREYXRhOwkvKiBOb3QgdXNlZC4gKi8KKy0gICAgVGNsX0ludGVy cCAqaW50ZXJwOworLSAgICBpbnQgb2JqYzsKKy0gICAgVGNsX09iagkqQ09OU1Qgb2JqdltdOwor LXsKKy0gICAgc3RhdGljIENPTlNUODQgY2hhciAqY29tbWFuZHMgW10gPSB7ICJyZXEiLCBOVUxM IH07CistICAgIGVudW0gY29tbWFuZCB7IENfUkVRLCBDX0RVTU1ZIH07CistICAgIGludCBjbWQ7 CisrTWlzY09iakNtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwg aW50IG9iamMsIFRjbF9PYmogKmNvbnN0IG9ianZbXSkgeworKyAgICBzdGF0aWMgY29uc3QgY2hh ciAqY29tbWFuZHMgW10gPSB7ICJyZXEiLCAic3RycmVxIiwgTlVMTCB9OworKyAgICBlbnVtIGNv bW1hbmQgeyBDX1JFUSwgQ19TVFJSRVEsIENfRFVNTVkgfTsKKysgICAgaW50IGNtZDsKKyAKKyAg ICAgZHByaW50ZigiQ2FsbGVkIik7CisgCitAQCAtMTU0Miw4ICsxNDk3LDcgQEAgTWlzY09iakNt ZChjbGllbnREYXRhLCBpbnRlcnAsIG9iamMsIG9ianYpCisgCVRjbF9Xcm9uZ051bUFyZ3MoaW50 ZXJwLCAxLCBvYmp2LCAic3ViY29tbWFuZCA/YXJncz8iKTsKKyAJcmV0dXJuIFRDTF9FUlJPUjsK KyAgICAgfQorLSAgICBpZiAoVGNsX0dldEluZGV4RnJvbU9iaihpbnRlcnAsIG9ianZbMV0sIGNv bW1hbmRzLAorLQkgICAgImNvbW1hbmQiLCAwLCZjbWQpICE9IFRDTF9PSykgeworKyAgICBpZiAo VGNsX0dldEluZGV4RnJvbU9iaihpbnRlcnAsIG9ianZbMV0sIGNvbW1hbmRzLCAiY29tbWFuZCIs IDAsJmNtZCkgIT0gVENMX09LKSB7CisgCXJldHVybiBUQ0xfRVJST1I7CisgICAgIH0KKyAKK0BA IC0xNTYwLDcgKzE1MTQsNyBAQCBNaXNjT2JqQ21kKGNsaWVudERhdGEsIGludGVycCwgb2JqYywg b2JqdikKKyAJICAgIGNoYXIgKmtfQz0iIiwqa19TVD0iIiwqa19MPSIiLCprX089IiIsKmtfT1U9 IiIsKmtfQ049IiIsKmtfRW1haWw9IiI7CisgCSAgICBjaGFyICprZXlvdXQsKnBlbW91dCwqc3Ry OworIAkgICAgaW50IGtleXNpemUsc2VyaWFsPTAsZGF5cz0zNjU7CistCSAgICAKKysKKyAJICAg IGlmICgob2JqYzw1KSB8fCAob2JqYz42KSkgeworIAkJVGNsX1dyb25nTnVtQXJncyhpbnRlcnAs IDIsIG9ianYsICJrZXlzaXplIGtleWZpbGUgY2VydGZpbGUgP2luZm8/Iik7CisgCQlyZXR1cm4g VENMX0VSUk9SOworQEAgLTE3NzEsNyArMTcyNSw3IEBAIHZvaWQgVGxzX0NsZWFuKFN0YXRlICpz dGF0ZVB0cikgeworICAqIFJlc3VsdHM6ICBTc2wgY29uZmlndXJlZCBhbmQgbG9hZGVkCisgICoK KyAgKiBTaWRlIGVmZmVjdHM6CistICoJIGNyZWF0ZSB0aGUgc3NsIGNvbW1hbmQsIGluaXRpYWxp c2Ugc3NsIGNvbnRleHQKKysgKgkgY3JlYXRlIHRoZSBzc2wgY29tbWFuZCwgaW5pdGlhbGl6ZSBz c2wgY29udGV4dAorICAqCisgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICovCitAQCAtMTc3OSwxMCArMTczMywx MCBAQCB2b2lkIFRsc19DbGVhbihTdGF0ZSAqc3RhdGVQdHIpIHsKKyBpbnQgVGxzX0luaXQoVGNs X0ludGVycCAqaW50ZXJwKSB7CisgCWNvbnN0IGNoYXIgdGxzVGNsSW5pdFNjcmlwdFtdID0gewor ICNpbmNsdWRlICJ0bHMudGNsLmgiCistICAgICAgICAgICAgMHgwMAorKwkgICAgMHgwMAorIAl9 OworIAorLSAgICAgICAgZHByaW50ZigiQ2FsbGVkIik7CisrCWRwcmludGYoIkNhbGxlZCIpOwor IAorIAkvKgorIAkgKiBXZSBvbmx5IHN1cHBvcnQgVGNsIDguNCBvciBuZXdlcgorQEAgLTE3OTEs NyArMTc0NSw3IEBAIGludCBUbHNfSW5pdChUY2xfSW50ZXJwICppbnRlcnApIHsKKyAjaWZkZWYg VVNFX1RDTF9TVFVCUworIAkgICAgVGNsX0luaXRTdHVicyhpbnRlcnAsICI4LjQiLCAwKQorICNl bHNlCistCSAgICBUY2xfUGtnUmVxdWlyZShpbnRlcnAsICJUY2wiLCAiOC40IiwgMCkKKysJICAg IFRjbF9Qa2dSZXF1aXJlKGludGVycCwgIlRjbCIsICI4LjQtIiwgMCkKKyAjZW5kaWYKKyAJICAg ICA9PSBOVUxMKSB7CisgCQlyZXR1cm4gVENMX0VSUk9SOworQEAgLTE4MjcsNyArMTc4MSw3IEBA IGludCBUbHNfSW5pdChUY2xfSW50ZXJwICppbnRlcnApIHsKKyAgKglJbml0aWFsaXplcyB0aGlz IGV4dGVuc2lvbiBmb3IgYSBzYWZlIGludGVycHJldGVyLgorICAqCS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKKyAgKgorLSAqCVNpZGVlZmZlY3RzOgor KyAqCVNpZGUgZWZmZWN0czoKKyAgKgkJQXMgb2YgJ1Rsc19Jbml0JworICAqCisgICoJUmVzdWx0 OgorQEAgLTE4NTEsNyArMTgwNSw3IEBAIGludCBUbHNfU2FmZUluaXQoVGNsX0ludGVycCAqaW50 ZXJwKSB7CisgICoJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKgorICAqCisgICoJU2lkZSBlZmZlY3RzOgorLSAqCQlpbml0aWxpemVzIFNTTCBsaWJyYXJ5 CisrICoJCWluaXRpYWxpemVzIFNTTCBsaWJyYXJ5CisgICoKKyAgKglSZXN1bHQ6CisgICoJCW5v bmUKK2RpZmYgLS1naXQgYS90bHMuaHRtIGIvdGxzLmh0bQoraW5kZXggMTM3NzM3Ny4uZThiZjZh MyAxMDA2NDQKKy0tLSBhL3Rscy5odG0KKysrKyBiL3Rscy5odG0KK0BAIC03MiwxMSArNzIsOSBA QCBwb3J0PC9lbT48YnI+CisgPHA+VGhpcyBleHRlbnNpb24gcHJvdmlkZXMgYSBnZW5lcmljIGJp bmRpbmcgdG8gPGEKKyBocmVmPSJodHRwOi8vd3d3Lm9wZW5zc2wub3JnLyI+T3BlblNTTDwvYT4s IHV0aWxpemluZyB0aGUKKyA8c3Ryb25nPlRjbF9TdGFja0NoYW5uZWw8L3N0cm9uZz4KKy1BUEkg Zm9yIFRjbCA4LjIgYW5kIGhpZ2hlci4gVGhlIHNvY2tldHMgYmVoYXZlIGV4YWN0bHkgdGhlIHNh bWUKKytBUEkgZm9yIFRjbCA4LjQgYW5kIGhpZ2hlci4gVGhlIHNvY2tldHMgYmVoYXZlIGV4YWN0 bHkgdGhlIHNhbWUKKyBhcyBjaGFubmVscyBjcmVhdGVkIHVzaW5nIFRjbCdzIGJ1aWx0LWluIDxz dHJvbmc+c29ja2V0PC9zdHJvbmc+CisgY29tbWFuZCB3aXRoIGFkZGl0aW9uYWwgb3B0aW9ucyBm b3IgY29udHJvbGxpbmcgdGhlIFNTTCBzZXNzaW9uLgorLVRvIHVzZSBUTFMgd2l0aCBhbiBlYXJs aWVyIHZlcnNpb24gb2YgVGNsIHRoYW4gOC40LCBwbGVhc2Ugb2J0YWluCistVExTIDEuMy4KKyA8 L3A+CisgCisgPGgzPjxhIG5hbWU9IkNPTU1BTkRTIj5DT01NQU5EUzwvYT48L2gzPgorZGlmZiAt LWdpdCBhL3Rsc0JJTy5jIGIvdGxzQklPLmMKK2luZGV4IGZlN2QzOTEuLjI3MGU2MzggMTAwNjQ0 CistLS0gYS90bHNCSU8uYworKysrIGIvdGxzQklPLmMKK0BAIC0xNiw5ICsxNiw5IEBACisgCisg LyogWFhYOiBUaGlzIGFzc3VtZXMgdGhlIHZhcmlhYmxlIGJlaW5nIGFzc2lnbmVkIHRvIGlzIEJp b01ldGhvZHMgKi8KKyAjZGVmaW5lIEJJT19tZXRoX25ldyh0eXBlXywgbmFtZV8pICAgICAgIChC SU9fTUVUSE9EICopVGNsX0FsbG9jKHNpemVvZihCSU9fTUVUSE9EKSk7IFwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbXNldChCaW9NZXRob2RzLCAwLCBzaXpl b2YoQklPX01FVEhPRCkpOyBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCaW9NZXRob2RzLT50eXBlID0gdHlwZV87IFwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEJpb01ldGhvZHMtPm5hbWUgPSBuYW1lXzsKKysJCQkJCSBtZW1z ZXQoQmlvTWV0aG9kcywgMCwgc2l6ZW9mKEJJT19NRVRIT0QpKTsgXAorKwkJCQkJIEJpb01ldGhv ZHMtPnR5cGUgPSB0eXBlXzsgXAorKwkJCQkJIEJpb01ldGhvZHMtPm5hbWUgPSBuYW1lXzsKKyAj ZGVmaW5lIEJJT19tZXRoX3NldF93cml0ZShiaW8sIHZhbCkgICAgIChiaW8pLT5id3JpdGUgPSB2 YWw7CisgI2RlZmluZSBCSU9fbWV0aF9zZXRfcmVhZChiaW8sIHZhbCkgICAgICAoYmlvKS0+YnJl YWQgPSB2YWw7CisgI2RlZmluZSBCSU9fbWV0aF9zZXRfcHV0cyhiaW8sIHZhbCkgICAgICAoYmlv KS0+YnB1dHMgPSB2YWw7CitAQCAtMjcsOTAgKzI3LDcgQEAKKyAjZGVmaW5lIEJJT19tZXRoX3Nl dF9kZXN0cm95KGJpbywgdmFsKSAgIChiaW8pLT5kZXN0cm95ID0gdmFsOworICNlbmRpZgorIAor LS8qCistICogRm9yd2FyZCBkZWNsYXJhdGlvbnMKKy0gKi8KKy0KKy1zdGF0aWMgaW50IEJpb1dy aXRlIF9BTlNJX0FSR1NfKChCSU8gKmgsIENPTlNUIGNoYXIgKmJ1ZiwgaW50IG51bSkpOworLXN0 YXRpYyBpbnQgQmlvUmVhZCAgX0FOU0lfQVJHU18oKEJJTyAqaCwgY2hhciAqYnVmLCBpbnQgbnVt KSk7Cistc3RhdGljIGludCBCaW9QdXRzICBfQU5TSV9BUkdTXygoQklPICpoLCBDT05TVCBjaGFy ICpzdHIpKTsKKy1zdGF0aWMgbG9uZyBCaW9DdHJsIF9BTlNJX0FSR1NfKChCSU8gKmgsIGludCBj bWQsIGxvbmcgYXJnMSwgdm9pZCAqcHRyKSk7Cistc3RhdGljIGludCBCaW9OZXcgICBfQU5TSV9B UkdTXygoQklPICpoKSk7Cistc3RhdGljIGludCBCaW9GcmVlICBfQU5TSV9BUkdTXygoQklPICpo KSk7CistCistQklPICpCSU9fbmV3X3RjbChTdGF0ZSAqc3RhdGVQdHIsIGludCBmbGFncykgewor LQlCSU8gKmJpbzsKKy0Jc3RhdGljIEJJT19NRVRIT0QgKkJpb01ldGhvZHMgPSBOVUxMOworLSNp ZmRlZiBUQ0xUTFNfU1NMX1VTRV9GQVNUUEFUSAorLQlUY2xfQ2hhbm5lbCBwYXJlbnRDaGFubmVs OworLQljb25zdCBUY2xfQ2hhbm5lbFR5cGUgKnBhcmVudENoYW5uZWxUeXBlOworLQl2b2lkICpw YXJlbnRDaGFubmVsRmRJbl9wLCAqcGFyZW50Q2hhbm5lbEZkT3V0X3A7CistCWludCBwYXJlbnRD aGFubmVsRmRJbiwgcGFyZW50Q2hhbm5lbEZkT3V0LCBwYXJlbnRDaGFubmVsRmQ7CistCWludCB2 YWxpZFBhcmVudENoYW5uZWxGZDsKKy0JaW50IHRjbEdldENoYW5uZWxIYW5kbGVSZXQ7CistI2Vu ZGlmCistCistCWRwcmludGYoIkJJT19uZXdfdGNsKCkgY2FsbGVkIik7CistCistCWlmIChCaW9N ZXRob2RzID09IE5VTEwpIHsKKy0JCUJpb01ldGhvZHMgPSBCSU9fbWV0aF9uZXcoQklPX1RZUEVf VENMLCAidGNsIik7CistCQlCSU9fbWV0aF9zZXRfd3JpdGUoQmlvTWV0aG9kcywgQmlvV3JpdGUp OworLQkJQklPX21ldGhfc2V0X3JlYWQoQmlvTWV0aG9kcywgQmlvUmVhZCk7CistCQlCSU9fbWV0 aF9zZXRfcHV0cyhCaW9NZXRob2RzLCBCaW9QdXRzKTsKKy0JCUJJT19tZXRoX3NldF9jdHJsKEJp b01ldGhvZHMsIEJpb0N0cmwpOworLQkJQklPX21ldGhfc2V0X2NyZWF0ZShCaW9NZXRob2RzLCBC aW9OZXcpOworLQkJQklPX21ldGhfc2V0X2Rlc3Ryb3koQmlvTWV0aG9kcywgQmlvRnJlZSk7Cist CX0KKy0KKy0JaWYgKHN0YXRlUHRyID09IE5VTEwpIHsKKy0JCWRwcmludGYoIkFza2VkIHRvIHNl dHVwIGEgTlVMTCBzdGF0ZSwganVzdCBjcmVhdGluZyB0aGUgaW5pdGlhbCBjb25maWd1cmF0aW9u Iik7CistCistCQlyZXR1cm4oTlVMTCk7CistCX0KKy0KKy0jaWZkZWYgVENMVExTX1NTTF9VU0Vf RkFTVFBBVEgKKy0JLyoKKy0JICogSWYgdGhlIGNoYW5uZWwgY2FuIGJlIG1hcHBlZCBiYWNrIHRv IGEgZmlsZSBkZXNjcmlwdG9yLCBqdXN0IHVzZSB0aGUgZmlsZSBkZXNjcmlwdG9yCistCSAqIHdp dGggdGhlIFNTTCBsaWJyYXJ5IHNpbmNlIGl0IHdpbGwgbGlrZWx5IGJlIG9wdGltaXplZCBmb3Ig dGhpcy4KKy0JICovCistCXBhcmVudENoYW5uZWwgPSBUbHNfR2V0UGFyZW50KHN0YXRlUHRyLCAw KTsKKy0JcGFyZW50Q2hhbm5lbFR5cGUgPSBUY2xfR2V0Q2hhbm5lbFR5cGUocGFyZW50Q2hhbm5l bCk7CistCistCXZhbGlkUGFyZW50Q2hhbm5lbEZkID0gMDsKKy0JaWYgKHN0cmNtcChwYXJlbnRD aGFubmVsVHlwZS0+dHlwZU5hbWUsICJ0Y3AiKSA9PSAwKSB7CistCQl0Y2xHZXRDaGFubmVsSGFu ZGxlUmV0ID0gVGNsX0dldENoYW5uZWxIYW5kbGUocGFyZW50Q2hhbm5lbCwgVENMX1JFQURBQkxF LCAoQ2xpZW50RGF0YSkgJnBhcmVudENoYW5uZWxGZEluX3ApOworLQkJaWYgKHRjbEdldENoYW5u ZWxIYW5kbGVSZXQgPT0gVENMX09LKSB7CistCQkJdGNsR2V0Q2hhbm5lbEhhbmRsZVJldCA9IFRj bF9HZXRDaGFubmVsSGFuZGxlKHBhcmVudENoYW5uZWwsIFRDTF9XUklUQUJMRSwgKENsaWVudERh dGEpICZwYXJlbnRDaGFubmVsRmRPdXRfcCk7CistCQkJaWYgKHRjbEdldENoYW5uZWxIYW5kbGVS ZXQgPT0gVENMX09LKSB7CistCQkJCXBhcmVudENoYW5uZWxGZEluID0gUFRSMklOVChwYXJlbnRD aGFubmVsRmRJbl9wKTsKKy0JCQkJcGFyZW50Q2hhbm5lbEZkT3V0ID0gUFRSMklOVChwYXJlbnRD aGFubmVsRmRPdXRfcCk7CistCQkJCWlmIChwYXJlbnRDaGFubmVsRmRJbiA9PSBwYXJlbnRDaGFu bmVsRmRPdXQpIHsKKy0JCQkJCXBhcmVudENoYW5uZWxGZCA9IHBhcmVudENoYW5uZWxGZEluOwor LQkJCQkJdmFsaWRQYXJlbnRDaGFubmVsRmQgPSAxOworLQkJCQl9CistCQkJfQorLQkJfQorLQl9 CistCistCWlmICh2YWxpZFBhcmVudENoYW5uZWxGZCkgeworLQkJZHByaW50ZigiV2UgZm91bmQg YSBzaG9ydGN1dCwgdGhpcyBjaGFubmVsIGlzIGJhY2tlZCBieSBhIHNvY2tldDogJWkiLCBwYXJl bnRDaGFubmVsRmRJbik7CistCQliaW8gPSBCSU9fbmV3X3NvY2tldChwYXJlbnRDaGFubmVsRmQs IGZsYWdzKTsKKy0JCXN0YXRlUHRyLT5mbGFncyB8PSBUTFNfVENMX0ZBU1RQQVRIOworLQkJcmV0 dXJuKGJpbyk7CistCX0KKy0KKy0JZHByaW50ZigiRmFsbGluZyBiYWNrIHRvIFRjbCBJL08gZm9y IHRoaXMgY2hhbm5lbCIpOworLSNlbmRpZgorLQorLQliaW8gPSBCSU9fbmV3KEJpb01ldGhvZHMp OworLQlCSU9fc2V0X2RhdGEoYmlvLCBzdGF0ZVB0cik7CistCUJJT19zZXRfc2h1dGRvd24oYmlv LCBmbGFncyk7CistCUJJT19zZXRfaW5pdChiaW8sIDEpOworLQorLQlyZXR1cm4oYmlvKTsKKy19 CistCistc3RhdGljIGludCBCaW9Xcml0ZShCSU8gKmJpbywgQ09OU1QgY2hhciAqYnVmLCBpbnQg YnVmTGVuKSB7Cisrc3RhdGljIGludCBCaW9Xcml0ZShCSU8gKmJpbywgY29uc3QgY2hhciAqYnVm LCBpbnQgYnVmTGVuKSB7CisgCVRjbF9DaGFubmVsIGNoYW47CisgCWludCByZXQ7CisgCWludCB0 Y2xFb2ZDaGFuLCB0Y2xFcnJubzsKK0BAIC0yMTQsNyArMTMxLDcgQEAgc3RhdGljIGludCBCaW9S ZWFkKEJJTyAqYmlvLCBjaGFyICpidWYsIGludCBidWZMZW4pIHsKKyAJcmV0dXJuKHJldCk7Cisg fQorIAorLXN0YXRpYyBpbnQgQmlvUHV0cyhCSU8gKmJpbywgQ09OU1QgY2hhciAqc3RyKSB7Cisr c3RhdGljIGludCBCaW9QdXRzKEJJTyAqYmlvLCBjb25zdCBjaGFyICpzdHIpIHsKKyAJZHByaW50 ZigiQmlvUHV0cyglcCwgPHN0cmluZzolcD4pIGNhbGxlZCIsIGJpbywgc3RyKTsKKyAKKyAJcmV0 dXJuIEJpb1dyaXRlKGJpbywgc3RyLCAoaW50KSBzdHJsZW4oc3RyKSk7CitAQCAtMzE3LDMgKzIz NCw3NSBAQCBzdGF0aWMgaW50IEJpb0ZyZWUoQklPICpiaW8pIHsKKyAKKyAJcmV0dXJuKDEpOwor IH0KKysKKytCSU8gKkJJT19uZXdfdGNsKFN0YXRlICpzdGF0ZVB0ciwgaW50IGZsYWdzKSB7Cisr CUJJTyAqYmlvOworKwlzdGF0aWMgQklPX01FVEhPRCAqQmlvTWV0aG9kcyA9IE5VTEw7CisrI2lm ZGVmIFRDTFRMU19TU0xfVVNFX0ZBU1RQQVRICisrCVRjbF9DaGFubmVsIHBhcmVudENoYW5uZWw7 CisrCWNvbnN0IFRjbF9DaGFubmVsVHlwZSAqcGFyZW50Q2hhbm5lbFR5cGU7CisrCXZvaWQgKnBh cmVudENoYW5uZWxGZEluX3AsICpwYXJlbnRDaGFubmVsRmRPdXRfcDsKKysJaW50IHBhcmVudENo YW5uZWxGZEluLCBwYXJlbnRDaGFubmVsRmRPdXQsIHBhcmVudENoYW5uZWxGZDsKKysJaW50IHZh bGlkUGFyZW50Q2hhbm5lbEZkOworKwlpbnQgdGNsR2V0Q2hhbm5lbEhhbmRsZVJldDsKKysjZW5k aWYKKysKKysJZHByaW50ZigiQklPX25ld190Y2woKSBjYWxsZWQiKTsKKysKKysJaWYgKEJpb01l dGhvZHMgPT0gTlVMTCkgeworKwkJQmlvTWV0aG9kcyA9IEJJT19tZXRoX25ldyhCSU9fVFlQRV9U Q0wsICJ0Y2wiKTsKKysJCUJJT19tZXRoX3NldF93cml0ZShCaW9NZXRob2RzLCBCaW9Xcml0ZSk7 CisrCQlCSU9fbWV0aF9zZXRfcmVhZChCaW9NZXRob2RzLCBCaW9SZWFkKTsKKysJCUJJT19tZXRo X3NldF9wdXRzKEJpb01ldGhvZHMsIEJpb1B1dHMpOworKwkJQklPX21ldGhfc2V0X2N0cmwoQmlv TWV0aG9kcywgQmlvQ3RybCk7CisrCQlCSU9fbWV0aF9zZXRfY3JlYXRlKEJpb01ldGhvZHMsIEJp b05ldyk7CisrCQlCSU9fbWV0aF9zZXRfZGVzdHJveShCaW9NZXRob2RzLCBCaW9GcmVlKTsKKysJ fQorKworKwlpZiAoc3RhdGVQdHIgPT0gTlVMTCkgeworKwkJZHByaW50ZigiQXNrZWQgdG8gc2V0 dXAgYSBOVUxMIHN0YXRlLCBqdXN0IGNyZWF0aW5nIHRoZSBpbml0aWFsIGNvbmZpZ3VyYXRpb24i KTsKKysKKysJCXJldHVybihOVUxMKTsKKysJfQorKworKyNpZmRlZiBUQ0xUTFNfU1NMX1VTRV9G QVNUUEFUSAorKwkvKgorKwkgKiBJZiB0aGUgY2hhbm5lbCBjYW4gYmUgbWFwcGVkIGJhY2sgdG8g YSBmaWxlIGRlc2NyaXB0b3IsIGp1c3QgdXNlIHRoZSBmaWxlIGRlc2NyaXB0b3IKKysJICogd2l0 aCB0aGUgU1NMIGxpYnJhcnkgc2luY2UgaXQgd2lsbCBsaWtlbHkgYmUgb3B0aW1pemVkIGZvciB0 aGlzLgorKwkgKi8KKysJcGFyZW50Q2hhbm5lbCA9IFRsc19HZXRQYXJlbnQoc3RhdGVQdHIsIDAp OworKwlwYXJlbnRDaGFubmVsVHlwZSA9IFRjbF9HZXRDaGFubmVsVHlwZShwYXJlbnRDaGFubmVs KTsKKysKKysJdmFsaWRQYXJlbnRDaGFubmVsRmQgPSAwOworKwlpZiAoc3RyY21wKHBhcmVudENo YW5uZWxUeXBlLT50eXBlTmFtZSwgInRjcCIpID09IDApIHsKKysJCXRjbEdldENoYW5uZWxIYW5k bGVSZXQgPSBUY2xfR2V0Q2hhbm5lbEhhbmRsZShwYXJlbnRDaGFubmVsLCBUQ0xfUkVBREFCTEUs IChDbGllbnREYXRhKSAmcGFyZW50Q2hhbm5lbEZkSW5fcCk7CisrCQlpZiAodGNsR2V0Q2hhbm5l bEhhbmRsZVJldCA9PSBUQ0xfT0spIHsKKysJCQl0Y2xHZXRDaGFubmVsSGFuZGxlUmV0ID0gVGNs X0dldENoYW5uZWxIYW5kbGUocGFyZW50Q2hhbm5lbCwgVENMX1dSSVRBQkxFLCAoQ2xpZW50RGF0 YSkgJnBhcmVudENoYW5uZWxGZE91dF9wKTsKKysJCQlpZiAodGNsR2V0Q2hhbm5lbEhhbmRsZVJl dCA9PSBUQ0xfT0spIHsKKysJCQkJcGFyZW50Q2hhbm5lbEZkSW4gPSBQVFIySU5UKHBhcmVudENo YW5uZWxGZEluX3ApOworKwkJCQlwYXJlbnRDaGFubmVsRmRPdXQgPSBQVFIySU5UKHBhcmVudENo YW5uZWxGZE91dF9wKTsKKysJCQkJaWYgKHBhcmVudENoYW5uZWxGZEluID09IHBhcmVudENoYW5u ZWxGZE91dCkgeworKwkJCQkJcGFyZW50Q2hhbm5lbEZkID0gcGFyZW50Q2hhbm5lbEZkSW47Cisr CQkJCQl2YWxpZFBhcmVudENoYW5uZWxGZCA9IDE7CisrCQkJCX0KKysJCQl9CisrCQl9CisrCX0K KysKKysJaWYgKHZhbGlkUGFyZW50Q2hhbm5lbEZkKSB7CisrCQlkcHJpbnRmKCJXZSBmb3VuZCBh IHNob3J0Y3V0LCB0aGlzIGNoYW5uZWwgaXMgYmFja2VkIGJ5IGEgc29ja2V0OiAlaSIsIHBhcmVu dENoYW5uZWxGZEluKTsKKysJCWJpbyA9IEJJT19uZXdfc29ja2V0KHBhcmVudENoYW5uZWxGZCwg ZmxhZ3MpOworKwkJc3RhdGVQdHItPmZsYWdzIHw9IFRMU19UQ0xfRkFTVFBBVEg7CisrCQlyZXR1 cm4oYmlvKTsKKysJfQorKworKwlkcHJpbnRmKCJGYWxsaW5nIGJhY2sgdG8gVGNsIEkvTyBmb3Ig dGhpcyBjaGFubmVsIik7CisrI2VuZGlmCisrCisrCWJpbyA9IEJJT19uZXcoQmlvTWV0aG9kcyk7 CisrCUJJT19zZXRfZGF0YShiaW8sIHN0YXRlUHRyKTsKKysJQklPX3NldF9zaHV0ZG93bihiaW8s IGZsYWdzKTsKKysJQklPX3NldF9pbml0KGJpbywgMSk7CisrCisrCXJldHVybihiaW8pOworK30K K2RpZmYgLS1naXQgYS90bHNJTy5jIGIvdGxzSU8uYworaW5kZXggZDg1ODk2Ni4uMTc0MWQ3ZiAx MDA2NDQKKy0tLSBhL3Rsc0lPLmMKKysrKyBiL3Rsc0lPLmMKK0BAIC0yMiw5OCArMjIsMTMgQEAK KyAvKgorICAqIEZvcndhcmQgZGVjbGFyYXRpb25zCisgICovCistc3RhdGljIGludCAgVGxzQmxv Y2tNb2RlUHJvYyBfQU5TSV9BUkdTXygoQ2xpZW50RGF0YSBpbnN0YW5jZURhdGEsIGludCBtb2Rl KSk7Cistc3RhdGljIGludCAgVGxzQ2xvc2VQcm9jIF9BTlNJX0FSR1NfKChDbGllbnREYXRhIGlu c3RhbmNlRGF0YSwgVGNsX0ludGVycCAqaW50ZXJwKSk7Cistc3RhdGljIGludCAgVGxzSW5wdXRQ cm9jIF9BTlNJX0FSR1NfKChDbGllbnREYXRhIGluc3RhbmNlRGF0YSwgY2hhciAqYnVmLCBpbnQg YnVmU2l6ZSwgaW50ICplcnJvckNvZGVQdHIpKTsKKy1zdGF0aWMgaW50ICBUbHNPdXRwdXRQcm9j IF9BTlNJX0FSR1NfKChDbGllbnREYXRhIGluc3RhbmNlRGF0YSwgQ09OU1QgY2hhciAqYnVmLCBp bnQgdG9Xcml0ZSwgaW50ICplcnJvckNvZGVQdHIpKTsKKy1zdGF0aWMgaW50ICBUbHNHZXRPcHRp b25Qcm9jIF9BTlNJX0FSR1NfKChDbGllbnREYXRhIGluc3RhbmNlRGF0YSwgVGNsX0ludGVycCAq aW50ZXJwLCBDT05TVDg0IGNoYXIgKm9wdGlvbk5hbWUsIFRjbF9EU3RyaW5nICpkc1B0cikpOwor LXN0YXRpYyB2b2lkIFRsc1dhdGNoUHJvYyBfQU5TSV9BUkdTXygoQ2xpZW50RGF0YSBpbnN0YW5j ZURhdGEsIGludCBtYXNrKSk7Cistc3RhdGljIGludCAgVGxzR2V0SGFuZGxlUHJvYyBfQU5TSV9B UkdTXygoQ2xpZW50RGF0YSBpbnN0YW5jZURhdGEsIGludCBkaXJlY3Rpb24sIENsaWVudERhdGEg KmhhbmRsZVB0cikpOworLXN0YXRpYyBpbnQgIFRsc05vdGlmeVByb2MgX0FOU0lfQVJHU18oKENs aWVudERhdGEgaW5zdGFuY2VEYXRhLCBpbnQgbWFzaykpOworLSNpZiAwCistc3RhdGljIHZvaWQg VGxzQ2hhbm5lbEhhbmRsZXIgX0FOU0lfQVJHU18oKENsaWVudERhdGEgY2xpZW50RGF0YSwgaW50 IG1hc2spKTsKKy0jZW5kaWYKKy1zdGF0aWMgdm9pZCBUbHNDaGFubmVsSGFuZGxlclRpbWVyIF9B TlNJX0FSR1NfKChDbGllbnREYXRhIGNsaWVudERhdGEpKTsKKytzdGF0aWMgdm9pZCBUbHNDaGFu bmVsSGFuZGxlclRpbWVyKENsaWVudERhdGEgY2xpZW50RGF0YSk7CisgCisgLyoKKyAgKiBUTFMg Q2hhbm5lbCBUeXBlCisgICovCisgc3RhdGljIFRjbF9DaGFubmVsVHlwZSAqdGxzQ2hhbm5lbFR5 cGUgPSBOVUxMOworIAorLS8qCistICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistICoKKy0gKiBUbHNfQ2hhbm5lbFR5 cGUgLS0KKy0gKgorLSAqCVJldHVybiB0aGUgY29ycmVjdCBUTFMgY2hhbm5lbCBkcml2ZXIgaW5m bworLSAqCistICogUmVzdWx0czoKKy0gKglUaGUgY29ycmVjdCBjaGFubmVsIGRyaXZlciBmb3Ig dGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBUY2wuCistICoKKy0gKiBTaWRlIGVmZmVjdHM6CistICoJ Tm9uZS4KKy0gKgorLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLSAqLworLVRjbF9DaGFubmVsVHlwZSAqVGxzX0No YW5uZWxUeXBlKHZvaWQpIHsKKy0JdW5zaWduZWQgaW50IHNpemU7CistCistCS8qCistCSAqIElu aXRpYWxpemUgdGhlIGNoYW5uZWwgdHlwZSBpZiBuZWNlc3NhcnkKKy0JICovCistCWlmICh0bHND aGFubmVsVHlwZSA9PSBOVUxMKSB7CistCQkvKgorLQkJICogQWxsb2NhdGlvbiBvZiBhIG5ldyBj aGFubmVsdHlwZSBzdHJ1Y3R1cmUgaXMgbm90IGVhc3ksIGJlY2F1c2Ugb2YKKy0JCSAqIHRoZSB2 YXJpb3VzIHZlcnNvbiBvZiB0aGUgY29yZSBhbmQgc3Vic2VxdWVudCBjaGFuZ2VzIHRvIHRoZQor LQkJICogc3RydWN0dXJlLiBUaGUgbWFpbiBjaGFsbGVuZ2UgaXMgdG8gYWxsb2NhdGUgZW5vdWdo IG1lbW9yeSBmb3IKKy0JCSAqIG1vZGVybiB2ZXJzaW9ucyBldmVuIGlmIHRoaXMgZXh0c2Vuc2lv biBpcyBjb21waWxlZCBhZ2FpbnN0IG9uZQorLQkJICogb2YgdGhlIG9sZGVyIHZhcmlhbnQhCist CQkgKgorLQkJICogKDEpIFZlcnNpb25zIGJlZm9yZSBzdHVicyAoOC4wLngpIGFyZSBzaW1wbGUs IGJlY2F1c2UgdGhleSBhcmUKKy0JCSAqICAgICBzdXBwb3J0ZWQgb25seSBpZiB0aGUgZXh0ZW5z aW9uIGlzIGNvbXBpbGVkIGFnYWluc3QgZXhhY3RseQorLQkJICogICAgIHRoYXQgdmVyc2lvbiBv ZiB0aGUgY29yZS4KKy0JCSAqCistCQkgKiAoMikgV2l0aCBzdHVicyB3ZSBqdXN0IGRldGVybWlu ZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBvbGRlcgorLQkJICogICAgIGFuZCBtb2Rlcm4g dmFyaWFudCBhbmQgb3ZlcmFsbG9jYXRlIGFjY29yZGluZ2x5IGlmIGNvbXBpbGVkCistCQkgKiAg ICAgYWdhaW5zdCBhbiBvbGRlciB2YXJpYW50LgorLQkJICovCistCQlzaXplID0gc2l6ZW9mKFRj bF9DaGFubmVsVHlwZSk7IC8qIEJhc2Ugc2l6ZSAqLworLQorLQkJdGxzQ2hhbm5lbFR5cGUgPSAo VGNsX0NoYW5uZWxUeXBlICopIGNrYWxsb2Moc2l6ZSk7CistCQltZW1zZXQoKFZPSUQgKikgdGxz Q2hhbm5lbFR5cGUsIDAsIHNpemUpOworLQorLQkJLyoKKy0JCSAqIENvbW1vbiBlbGVtZW50cyBv ZiB0aGUgc3RydWN0dXJlIChubyBjaGFuZ2VzIGluIGxvY2F0aW9uIG9yIG5hbWUpCistCQkgKiBj bG9zZTJQcm9jLCBzZWVrUHJvYywgc2V0T3B0aW9uUHJvYyBzdGF5IE5VTEwuCistCQkgKi8KKy0K Ky0JCXRsc0NoYW5uZWxUeXBlLT50eXBlTmFtZQk9ICJ0bHMiOworLQkJdGxzQ2hhbm5lbFR5cGUt PmNsb3NlUHJvYwk9IFRsc0Nsb3NlUHJvYzsKKy0JCXRsc0NoYW5uZWxUeXBlLT5pbnB1dFByb2MJ PSBUbHNJbnB1dFByb2M7CistCQl0bHNDaGFubmVsVHlwZS0+b3V0cHV0UHJvYwk9IFRsc091dHB1 dFByb2M7CistCQl0bHNDaGFubmVsVHlwZS0+Z2V0T3B0aW9uUHJvYwk9IFRsc0dldE9wdGlvblBy b2M7CistCQl0bHNDaGFubmVsVHlwZS0+d2F0Y2hQcm9jCT0gVGxzV2F0Y2hQcm9jOworLQkJdGxz Q2hhbm5lbFR5cGUtPmdldEhhbmRsZVByb2MJPSBUbHNHZXRIYW5kbGVQcm9jOworLQorLQkJLyoK Ky0JCSAqIENvbXBpbGVkIGFnYWluc3QgOC4zLjIrLiBEaXJlY3QgYWNjZXNzIHRvIGFsbCBlbGVt ZW50cyBwb3NzaWJsZS4gVXNlCistCQkgKiBjaGFubmVsVHlwZVZlcnNpb24gaW5mb3JtYXRpb24g dG8gc2VsZWN0IHRoZSB2YWx1ZXMgdG8gdXNlLgorLQkJICovCistCistCQkvKgorLQkJICogRm9y IHRoZSA4LjMuMiBjb3JlIHdlIHByZXNlbnQgb3Vyc2VsdmVzIGFzIGEgdmVyc2lvbiAyCistCQkg KiBkcml2ZXIuIFRoaXMgbWVhbnMgYSBzcGVjaWFsIHZhbHVlIGluIHZlcnNpb24gKGV4CistCQkg KiBibG9ja01vZGVQcm9jKSwgYmxvY2tNb2RlUHJvYyBpbiBhIGRpZmZlcmVudCBwbGFjZSBhbmQg b2YKKy0JCSAqIGNvdXJzZSB1c2FnZSBvZiB0aGUgaGFuZGxlclByb2MuCistCQkgKi8KKy0JCXRs c0NoYW5uZWxUeXBlLT52ZXJzaW9uICAgICAgID0gVENMX0NIQU5ORUxfVkVSU0lPTl8yOworLQkJ dGxzQ2hhbm5lbFR5cGUtPmJsb2NrTW9kZVByb2MgPSBUbHNCbG9ja01vZGVQcm9jOworLQkJdGxz Q2hhbm5lbFR5cGUtPmhhbmRsZXJQcm9jICAgPSBUbHNOb3RpZnlQcm9jOworLQl9CistCistCXJl dHVybih0bHNDaGFubmVsVHlwZSk7CistfQorLQorIC8qCisgICotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICoKK0BA IC0xNjcsMTUgKzgyLDE5IEBAIHN0YXRpYyBpbnQgVGxzQ2xvc2VQcm9jKENsaWVudERhdGEgaW5z dGFuY2VEYXRhLCBUY2xfSW50ZXJwICppbnRlcnApIHsKKyAKKyAJVGxzX0NsZWFuKHN0YXRlUHRy KTsKKyAJVGNsX0V2ZW50dWFsbHlGcmVlKChDbGllbnREYXRhKXN0YXRlUHRyLCBUbHNfRnJlZSk7 CistCistCWRwcmludGYoIlJldHVybmluZyBUQ0xfT0siKTsKKy0KKy0JcmV0dXJuKFRDTF9PSyk7 CisrCXJldHVybigwKTsKKyAKKyAJLyogSW50ZXJwIGlzIHVudXNlZC4gKi8KKyAJaW50ZXJwID0g aW50ZXJwOworIH0KKyAKKytzdGF0aWMgaW50IFRsc0Nsb3NlUHJvYzIoQ2xpZW50RGF0YSBpbnN0 YW5jZURhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IGZsYWdzKSB7CisrICAgIGlmICgoZmxh Z3MgJiAoVENMX0NMT1NFX1JFQUR8VENMX0NMT1NFX1dSSVRFKSkgPT0gMCkgeworKwlyZXR1cm4g VGxzQ2xvc2VQcm9jKGluc3RhbmNlRGF0YSwgaW50ZXJwKTsKKysgICAgfQorKyAgICByZXR1cm4g RUlOVkFMOworK30KKysKKyAvKgorICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKgorICAqCitAQCAtNTAxLDcgKzQyMCw3IEBAIHN0YXRpYyBp bnQgVGxzSW5wdXRQcm9jKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBjaGFyICpidWYsIGludCBi dWZTaXplLCBpbnQgKmVyCisgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICovCisgCistc3RhdGljIGludCBUbHNP dXRwdXRQcm9jKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLCBDT05TVCBjaGFyICpidWYsIGludCB0 b1dyaXRlLCBpbnQgKmVycm9yQ29kZVB0cikgeworK3N0YXRpYyBpbnQgVGxzT3V0cHV0UHJvYyhD bGllbnREYXRhIGluc3RhbmNlRGF0YSwgY29uc3QgY2hhciAqYnVmLCBpbnQgdG9Xcml0ZSwgaW50 ICplcnJvckNvZGVQdHIpIHsKKyAJdW5zaWduZWQgbG9uZyBiYWNraW5nRXJyb3I7CisgCVN0YXRl ICpzdGF0ZVB0ciA9IChTdGF0ZSAqKSBpbnN0YW5jZURhdGE7CisgCWludCB3cml0dGVuLCBlcnI7 CitAQCAtNjIyLDYgKzU0MSw1MSBAQCBzdGF0aWMgaW50IFRsc091dHB1dFByb2MoQ2xpZW50RGF0 YSBpbnN0YW5jZURhdGEsIENPTlNUIGNoYXIgKmJ1ZiwgaW50IHRvV3JpdGUsCisgCXJldHVybih3 cml0dGVuKTsKKyB9CisgCisrLyoKKysgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysgKgorKyAqIFRsc1NldE9wdGlv blByb2MgLS0KKysgKgorKyAqCUNvbXB1dGVzIGFuIG9wdGlvbiB2YWx1ZSBmb3IgYSBTU0wgc29j a2V0IGJhc2VkIGNoYW5uZWwsIG9yIGEKKysgKglsaXN0IG9mIGFsbCBvcHRpb25zIGFuZCB0aGVp ciB2YWx1ZXMuCisrICoKKysgKiBSZXN1bHRzOgorKyAqCUEgc3RhbmRhcmQgVGNsIHJlc3VsdC4g VGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgb3B0aW9uIG9yIGEKKysgKglsaXN0IG9mIGFsbCBv cHRpb25zIGFuZAl0aGVpciB2YWx1ZXMgaXMgcmV0dXJuZWQgaW4gdGhlCisrICoJc3VwcGxpZWQg RFN0cmluZy4KKysgKgorKyAqIFNpZGUgZWZmZWN0czoKKysgKglOb25lLgorKyAqCisrICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisrICovCisrc3RhdGljIGludAorK1Rsc1NldE9wdGlvblByb2MoQ2xpZW50RGF0YSBp bnN0YW5jZURhdGEsCS8qIFNvY2tldCBzdGF0ZS4gKi8KKysJVGNsX0ludGVycCAqaW50ZXJwLAkJ LyogRm9yIGVycm9ycyAtIGNhbiBiZSBOVUxMLiAqLworKwljb25zdCBjaGFyICpvcHRpb25OYW1l LAkJLyogTmFtZSBvZiB0aGUgb3B0aW9uIHRvIHNldCB0aGUgdmFsdWUgZm9yLCBvcgorKwkJCQkJ ICogTlVMTCB0byBnZXQgYWxsIG9wdGlvbnMgYW5kIHRoZWlyIHZhbHVlcy4gKi8KKysJY29uc3Qg Y2hhciAqb3B0aW9uVmFsdWUpCS8qIFZhbHVlIGZvciBvcHRpb24uICovCisreworKyAgICBTdGF0 ZSAqc3RhdGVQdHIgPSAoU3RhdGUgKikgaW5zdGFuY2VEYXRhOworKworKyAgIFRjbF9DaGFubmVs IGRvd25DaGFuID0gVGxzX0dldFBhcmVudChzdGF0ZVB0ciwgVExTX1RDTF9GQVNUUEFUSCk7Cisr ICAgVGNsX0RyaXZlclNldE9wdGlvblByb2MgKnNldE9wdGlvblByb2M7CisrCisrICAgIHNldE9w dGlvblByb2MgPSBUY2xfQ2hhbm5lbFNldE9wdGlvblByb2MoVGNsX0dldENoYW5uZWxUeXBlKGRv d25DaGFuKSk7CisrICAgIGlmIChzZXRPcHRpb25Qcm9jICE9IE5VTEwpIHsKKysJcmV0dXJuICgq c2V0T3B0aW9uUHJvYykoVGNsX0dldENoYW5uZWxJbnN0YW5jZURhdGEoZG93bkNoYW4pLCBpbnRl cnAsIG9wdGlvbk5hbWUsIG9wdGlvblZhbHVlKTsKKysgICAgfSBlbHNlIGlmIChvcHRpb25OYW1l ID09IChjaGFyKikgTlVMTCkgeworKwkvKgorKwkgKiBSZXF1ZXN0IGlzIHF1ZXJ5IGZvciBhbGwg b3B0aW9ucywgdGhpcyBpcyBvay4KKysJICovCisrCSByZXR1cm4gVENMX09LOworKyAgICB9Cisr ICAgIC8qCisrICAgICAqIFJlcXVlc3QgZm9yIGEgc3BlY2lmaWMgb3B0aW9uIGhhcyB0byBmYWls LCB3ZSBkb24ndCBoYXZlIGFueS4KKysgICAgICovCisrICAgIHJldHVybiBUQ0xfRVJST1I7Cisr fQorKworIC8qCisgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICoKK0BAIC02NDMsMTAgKzYwNyw4IEBAIHN0YXRp YyBpbnQgVGxzT3V0cHV0UHJvYyhDbGllbnREYXRhIGluc3RhbmNlRGF0YSwgQ09OU1QgY2hhciAq YnVmLCBpbnQgdG9Xcml0ZSwKKyBzdGF0aWMgaW50CisgVGxzR2V0T3B0aW9uUHJvYyhDbGllbnRE YXRhIGluc3RhbmNlRGF0YSwJLyogU29ja2V0IHN0YXRlLiAqLworIAlUY2xfSW50ZXJwICppbnRl cnAsCQkvKiBGb3IgZXJyb3JzIC0gY2FuIGJlIE5VTEwuICovCistCUNPTlNUODQgY2hhciAqb3B0 aW9uTmFtZSwJLyogTmFtZSBvZiB0aGUgb3B0aW9uIHRvCistCQkJCQkgKiByZXRyaWV2ZSB0aGUg dmFsdWUgZm9yLCBvcgorLQkJCQkJICogTlVMTCB0byBnZXQgYWxsIG9wdGlvbnMgYW5kCistCQkJ CQkgKiB0aGVpciB2YWx1ZXMuICovCisrCWNvbnN0IGNoYXIgKm9wdGlvbk5hbWUsCQkvKiBOYW1l IG9mIHRoZSBvcHRpb24gdG8gcmV0cmlldmUgdGhlIHZhbHVlIGZvciwgb3IKKysJCQkJCSAqIE5V TEwgdG8gZ2V0IGFsbCBvcHRpb25zIGFuZCB0aGVpciB2YWx1ZXMuICovCisgCVRjbF9EU3RyaW5n ICpkc1B0cikJCS8qIFdoZXJlIHRvIHN0b3JlIHRoZSBjb21wdXRlZCB2YWx1ZQorIAkJCQkJICog aW5pdGlhbGl6ZWQgYnkgY2FsbGVyLiAqLworIHsKK0BAIC02NTcsMTIgKzYxOSwxMiBAQCBUbHNH ZXRPcHRpb25Qcm9jKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLAkvKiBTb2NrZXQgc3RhdGUuICov CisgCisgICAgIGdldE9wdGlvblByb2MgPSBUY2xfQ2hhbm5lbEdldE9wdGlvblByb2MoVGNsX0dl dENoYW5uZWxUeXBlKGRvd25DaGFuKSk7CisgICAgIGlmIChnZXRPcHRpb25Qcm9jICE9IE5VTEwp IHsKKy0gICAgICAgIHJldHVybiAoKmdldE9wdGlvblByb2MpKFRjbF9HZXRDaGFubmVsSW5zdGFu Y2VEYXRhKGRvd25DaGFuKSwgaW50ZXJwLCBvcHRpb25OYW1lLCBkc1B0cik7CisrCXJldHVybiAo KmdldE9wdGlvblByb2MpKFRjbF9HZXRDaGFubmVsSW5zdGFuY2VEYXRhKGRvd25DaGFuKSwgaW50 ZXJwLCBvcHRpb25OYW1lLCBkc1B0cik7CisgICAgIH0gZWxzZSBpZiAob3B0aW9uTmFtZSA9PSAo Y2hhciopIE5VTEwpIHsKKy0gICAgICAgIC8qCistICAgICAgICAgKiBSZXF1ZXN0IGlzIHF1ZXJ5 IGZvciBhbGwgb3B0aW9ucywgdGhpcyBpcyBvay4KKy0gICAgICAgICAqLworLSAgICAgICAgIHJl dHVybiBUQ0xfT0s7CisrCS8qCisrCSAqIFJlcXVlc3QgaXMgcXVlcnkgZm9yIGFsbCBvcHRpb25z LCB0aGlzIGlzIG9rLgorKwkgKi8KKysJIHJldHVybiBUQ0xfT0s7CisgICAgIH0KKyAgICAgLyoK KyAgICAgICogUmVxdWVzdCBmb3IgYSBzcGVjaWZpYyBvcHRpb24gaGFzIHRvIGZhaWwsIHdlIGRv bid0IGhhdmUgYW55LgorQEAgLTY4OSw5ICs2NTEsOCBAQCBUbHNHZXRPcHRpb25Qcm9jKENsaWVu dERhdGEgaW5zdGFuY2VEYXRhLAkvKiBTb2NrZXQgc3RhdGUuICovCisgCisgc3RhdGljIHZvaWQK KyBUbHNXYXRjaFByb2MoQ2xpZW50RGF0YSBpbnN0YW5jZURhdGEsCS8qIFRoZSBzb2NrZXQgc3Rh dGUuICovCistICAgICAgICAgICAgIGludCBtYXNrKQkJCS8qIEV2ZW50cyBvZiBpbnRlcmVzdDsg YW4gT1ItZWQKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogY29t YmluYXRpb24gb2YgVENMX1JFQURBQkxFLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKiBUQ0xfV1JJVEFCTEUgYW5kIFRDTF9FWENFUFRJT04uICovCisrCSAgICAg aW50IG1hc2spCQkJLyogRXZlbnRzIG9mIGludGVyZXN0OyBhbiBPUi1lZCBjb21iaW5hdGlvbiBv ZiAqLworKwkJCQkJLyogVENMX1JFQURBQkxFLCBUQ0xfV1JJVEFCTEUgYW5kIFRDTF9FWENFUFRJ T04uICovCisgeworICAgICBUY2xfQ2hhbm5lbCAgICAgZG93bkNoYW47CisgICAgIFN0YXRlICpz dGF0ZVB0ciA9IChTdGF0ZSAqKSBpbnN0YW5jZURhdGE7CitAQCAtNzAxLDggKzY2Miw4IEBAIFRs c1dhdGNoUHJvYyhDbGllbnREYXRhIGluc3RhbmNlRGF0YSwJLyogVGhlIHNvY2tldCBzdGF0ZS4g Ki8KKyAgICAgLyogUHJldGVuZCB0byBiZSBkZWFkIGFzIGxvbmcgYXMgdGhlIHZlcmlmeSBjYWxs YmFjayBpcyBydW5uaW5nLiAKKyAgICAgICogT3RoZXJ3aXNlIHRoYXQgY2FsbGJhY2sgY291bGQg YmUgaW52b2tlZCByZWN1cnNpdmVseS4gKi8KKyAgICAgaWYgKHN0YXRlUHRyLT5mbGFncyAmIFRM U19UQ0xfQ0FMTEJBQ0spIHsKKy0gICAgICAgIGRwcmludGYoIkNhbGxiYWNrIGlzIG9uLWdvaW5n LCBkb2luZyBub3RoaW5nIik7CistICAgICAgICByZXR1cm47CisrCWRwcmludGYoIkNhbGxiYWNr IGlzIG9uLWdvaW5nLCBkb2luZyBub3RoaW5nIik7CisrCXJldHVybjsKKyAgICAgfQorIAorICAg ICBkcHJpbnRGbGFncyhzdGF0ZVB0cik7CitAQCAtNzEwLDUxICs2NzEsNTAgQEAgVGxzV2F0Y2hQ cm9jKENsaWVudERhdGEgaW5zdGFuY2VEYXRhLAkvKiBUaGUgc29ja2V0IHN0YXRlLiAqLworICAg ICBkb3duQ2hhbiA9IFRsc19HZXRQYXJlbnQoc3RhdGVQdHIsIFRMU19UQ0xfRkFTVFBBVEgpOwor IAorICAgICBpZiAoc3RhdGVQdHItPmZsYWdzICYgVExTX1RDTF9IQU5EU0hBS0VfRkFJTEVEKSB7 CistICAgICAgICBkcHJpbnRmKCJBc2tlZCB0byB3YXRjaCBhIHNvY2tldCB3aXRoIGEgZmFpbGVk IGhhbmRzaGFrZSAtLSBub3RoaW5nIGNhbiBoYXBwZW4gaGVyZSIpOworKwlkcHJpbnRmKCJBc2tl ZCB0byB3YXRjaCBhIHNvY2tldCB3aXRoIGEgZmFpbGVkIGhhbmRzaGFrZSAtLSBub3RoaW5nIGNh biBoYXBwZW4gaGVyZSIpOworIAorIAlkcHJpbnRmKCJVbnJlZ2lzdGVyaW5nIGludGVyZXN0IGlu IHRoZSBsb3dlciBjaGFubmVsIik7CisgCShUY2xfR2V0Q2hhbm5lbFR5cGUoZG93bkNoYW4pKS0+ d2F0Y2hQcm9jKFRjbF9HZXRDaGFubmVsSW5zdGFuY2VEYXRhKGRvd25DaGFuKSwgMCk7CisgCisg CXN0YXRlUHRyLT53YXRjaE1hc2sgPSAwOworIAorLSAgICAgICAgcmV0dXJuOworKwlyZXR1cm47 CisgICAgIH0KKyAKKyAJc3RhdGVQdHItPndhdGNoTWFzayA9IG1hc2s7CisgCistCS8qIE5vIGNo YW5uZWwgaGFuZGxlcnMgYW55IG1vcmUuIFdlIHdpbGwgYmUgbm90aWZpZWQgYXV0b21hdGljYWxs eQorLQkgKiBhYm91dCBldmVudHMgb24gdGhlIGNoYW5uZWwgYmVsb3cgdmlhIGEgY2FsbCB0byBv dXIKKy0JICogJ1RyYW5zZm9ybU5vdGlmeVByb2MnLiBCdXQgd2UgaGF2ZSB0byBwYXNzIHRoZSBp bnRlcmVzdCBkb3duIG5vdy4KKy0JICogV2UgYXJlIGFsbG93ZWQgdG8gYWRkIGFkZGl0aW9uYWwg J2ludGVyZXN0JyB0byB0aGUgbWFzayBpZiB3ZSB3YW50CistCSAqIHRvLiBCdXQgdGhpcyB0cmFu c2Zvcm1hdGlvbiBoYXMgbm8gc3VjaCBpbnRlcmVzdC4gSXQganVzdCBwYXNzZXMKKy0JICogdGhl IHJlcXVlc3QgZG93biwgdW5jaGFuZ2VkLgorLQkgKi8KKysgICAgLyogTm8gY2hhbm5lbCBoYW5k bGVycyBhbnkgbW9yZS4gV2Ugd2lsbCBiZSBub3RpZmllZCBhdXRvbWF0aWNhbGx5CisrICAgICAq IGFib3V0IGV2ZW50cyBvbiB0aGUgY2hhbm5lbCBiZWxvdyB2aWEgYSBjYWxsIHRvIG91cgorKyAg ICAgKiAnVHJhbnNmb3JtTm90aWZ5UHJvYycuIEJ1dCB3ZSBoYXZlIHRvIHBhc3MgdGhlIGludGVy ZXN0IGRvd24gbm93LgorKyAgICAgKiBXZSBhcmUgYWxsb3dlZCB0byBhZGQgYWRkaXRpb25hbCAn aW50ZXJlc3QnIHRvIHRoZSBtYXNrIGlmIHdlIHdhbnQKKysgICAgICogdG8uIEJ1dCB0aGlzIHRy YW5zZm9ybWF0aW9uIGhhcyBubyBzdWNoIGludGVyZXN0LiBJdCBqdXN0IHBhc3NlcworKyAgICAg KiB0aGUgcmVxdWVzdCBkb3duLCB1bmNoYW5nZWQuCisrICAgICAqLworIAorIAorLSAgICAgICAg ZHByaW50ZigiUmVnaXN0ZXJpbmcgb3VyIGludGVyZXN0IGluIHRoZSBsb3dlciBjaGFubmVsIChj aGFuPSVwKSIsICh2b2lkICopIGRvd25DaGFuKTsKKy0JKFRjbF9HZXRDaGFubmVsVHlwZShkb3du Q2hhbikpCistCSAgICAtPndhdGNoUHJvYyhUY2xfR2V0Q2hhbm5lbEluc3RhbmNlRGF0YShkb3du Q2hhbiksIG1hc2spOworKyAgICBkcHJpbnRmKCJSZWdpc3RlcmluZyBvdXIgaW50ZXJlc3QgaW4g dGhlIGxvd2VyIGNoYW5uZWwgKGNoYW49JXApIiwgKHZvaWQgKikgZG93bkNoYW4pOworKyAgICAo VGNsX0dldENoYW5uZWxUeXBlKGRvd25DaGFuKSkKKysJLT53YXRjaFByb2MoVGNsX0dldENoYW5u ZWxJbnN0YW5jZURhdGEoZG93bkNoYW4pLCBtYXNrKTsKKyAKKy0JLyoKKy0JICogTWFuYWdlbWVu dCBvZiB0aGUgaW50ZXJuYWwgdGltZXIuCistCSAqLworKyAgICAvKgorKyAgICAgKiBNYW5hZ2Vt ZW50IG9mIHRoZSBpbnRlcm5hbCB0aW1lci4KKysgICAgICovCisgCistCWlmIChzdGF0ZVB0ci0+ dGltZXIgIT0gKFRjbF9UaW1lclRva2VuKSBOVUxMKSB7CistICAgICAgICAgICAgZHByaW50Zigi QSB0aW1lciB3YXMgZm91bmQsIGRlbGV0aW5nIGl0Iik7CistCSAgICBUY2xfRGVsZXRlVGltZXJI YW5kbGVyKHN0YXRlUHRyLT50aW1lcik7CistCSAgICBzdGF0ZVB0ci0+dGltZXIgPSAoVGNsX1Rp bWVyVG9rZW4pIE5VTEw7CistCX0KKysgICAgaWYgKHN0YXRlUHRyLT50aW1lciAhPSAoVGNsX1Rp bWVyVG9rZW4pIE5VTEwpIHsKKysJZHByaW50ZigiQSB0aW1lciB3YXMgZm91bmQsIGRlbGV0aW5n IGl0Iik7CisrCVRjbF9EZWxldGVUaW1lckhhbmRsZXIoc3RhdGVQdHItPnRpbWVyKTsKKysJc3Rh dGVQdHItPnRpbWVyID0gKFRjbF9UaW1lclRva2VuKSBOVUxMOworKyAgICB9CisgCistCWlmICht YXNrICYgVENMX1JFQURBQkxFKSB7CistCQlpZiAoVGNsX0lucHV0QnVmZmVyZWQoc3RhdGVQdHIt PnNlbGYpID4gMCB8fCBCSU9fY3RybF9wZW5kaW5nKHN0YXRlUHRyLT5iaW8pID4gMCkgeworLQkJ CS8qCistCQkJICogVGhlcmUgaXMgaW50ZXJlc3QgaW4gcmVhZGFibGUgZXZlbnRzIGFuZCB3ZSBh Y3R1YWxseSBoYXZlCistCQkJICogZGF0YSB3YWl0aW5nLCBzbyBnZW5lcmF0ZSBhIHRpbWVyIHRv IGZsdXNoIHRoYXQuCistCQkJICovCistCQkJZHByaW50ZigiQ3JlYXRpbmcgYSBuZXcgdGltZXIg c2luY2UgZGF0YSBhcHBlYXJzIHRvIGJlIHdhaXRpbmciKTsKKy0JCQlzdGF0ZVB0ci0+dGltZXIg PSBUY2xfQ3JlYXRlVGltZXJIYW5kbGVyKFRMU19UQ0xfREVMQVksIFRsc0NoYW5uZWxIYW5kbGVy VGltZXIsIChDbGllbnREYXRhKSBzdGF0ZVB0cik7CistCQl9CistCX0KKysgICAgaWYgKChtYXNr ICYgVENMX1JFQURBQkxFKSAmJgorKwkoKFRjbF9JbnB1dEJ1ZmZlcmVkKHN0YXRlUHRyLT5zZWxm KSA+IDApIHx8IChCSU9fY3RybF9wZW5kaW5nKHN0YXRlUHRyLT5iaW8pID4gMCkpKSB7CisrCSAg ICAvKgorKwkgICAgICogVGhlcmUgaXMgaW50ZXJlc3QgaW4gcmVhZGFibGUgZXZlbnRzIGFuZCB3 ZSBhY3R1YWxseSBoYXZlCisrCSAgICAgKiBkYXRhIHdhaXRpbmcsIHNvIGdlbmVyYXRlIGEgdGlt ZXIgdG8gZmx1c2ggdGhhdC4KKysJICAgICAqLworKwkgICAgZHByaW50ZigiQ3JlYXRpbmcgYSBu ZXcgdGltZXIgc2luY2UgZGF0YSBhcHBlYXJzIHRvIGJlIHdhaXRpbmciKTsKKysJICAgIHN0YXRl UHRyLT50aW1lciA9IFRjbF9DcmVhdGVUaW1lckhhbmRsZXIoVExTX1RDTF9ERUxBWSwgVGxzQ2hh bm5lbEhhbmRsZXJUaW1lciwgKENsaWVudERhdGEpIHN0YXRlUHRyKTsKKysgICAgfQorIH0KKyAK KyAvKgorQEAgLTg2MiwxMCArODIyLDcgQEAgc3RhdGljIGludCBUbHNOb3RpZnlQcm9jKENsaWVu dERhdGEgaW5zdGFuY2VEYXRhLCBpbnQgbWFzaykgeworICAqLworIAorIHN0YXRpYyB2b2lkCist VGxzQ2hhbm5lbEhhbmRsZXIgKGNsaWVudERhdGEsIG1hc2spCistICAgIENsaWVudERhdGEgICAg IGNsaWVudERhdGE7CistICAgIGludCAgICAgICAgICAgIG1hc2s7CisteworK1Rsc0NoYW5uZWxI YW5kbGVyIChDbGllbnREYXRhIGNsaWVudERhdGEsIGludCBtYXNrKSB7CisgICAgIFN0YXRlICpz dGF0ZVB0ciA9IChTdGF0ZSAqKSBjbGllbnREYXRhOworIAorICAgICBkcHJpbnRmKCJIQU5ETEVS KDB4JXgpIiwgbWFzayk7CitAQCAtOTc4LDMgKzkzNSw3MCBAQCBUY2xfQ2hhbm5lbCBUbHNfR2V0 UGFyZW50KFN0YXRlICpzdGF0ZVB0ciwgaW50IG1hc2tGbGFncykgeworIAorIAlyZXR1cm4oVGNs X0dldFN0YWNrZWRDaGFubmVsKHN0YXRlUHRyLT5zZWxmKSk7CisgfQorKworKy8qCisrICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisrICoKKysgKiBUbHNfQ2hhbm5lbFR5cGUgLS0KKysgKgorKyAqCVJldHVybiB0aGUg Y29ycmVjdCBUTFMgY2hhbm5lbCBkcml2ZXIgaW5mbworKyAqCisrICogUmVzdWx0czoKKysgKglU aGUgY29ycmVjdCBjaGFubmVsIGRyaXZlciBmb3IgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBUY2wu CisrICoKKysgKiBTaWRlIGVmZmVjdHM6CisrICoJTm9uZS4KKysgKgorKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor KyAqLworK1RjbF9DaGFubmVsVHlwZSAqVGxzX0NoYW5uZWxUeXBlKHZvaWQpIHsKKysJdW5zaWdu ZWQgaW50IHNpemU7CisrCisrCS8qCisrCSAqIEluaXRpYWxpemUgdGhlIGNoYW5uZWwgdHlwZSBp ZiBuZWNlc3NhcnkKKysJICovCisrCWlmICh0bHNDaGFubmVsVHlwZSA9PSBOVUxMKSB7CisrCQkv KgorKwkJICogQWxsb2NhdGUgbmV3IGNoYW5uZWx0eXBlIHN0cnVjdHVyZQorKwkJICovCisrCQlz aXplID0gc2l6ZW9mKFRjbF9DaGFubmVsVHlwZSk7IC8qIEJhc2Ugc2l6ZSAqLworKworKwkJdGxz Q2hhbm5lbFR5cGUgPSAoVGNsX0NoYW5uZWxUeXBlICopIGNrYWxsb2Moc2l6ZSk7CisrCQltZW1z ZXQoKHZvaWQgKikgdGxzQ2hhbm5lbFR5cGUsIDAsIHNpemUpOworKworKwkJdGxzQ2hhbm5lbFR5 cGUtPnR5cGVOYW1lCT0gInRscyI7CisrI2lmZGVmIFRDTF9DSEFOTkVMX1ZFUlNJT05fNQorKwkJ dGxzQ2hhbm5lbFR5cGUtPnZlcnNpb24JCT0gVENMX0NIQU5ORUxfVkVSU0lPTl81OworKwkJdGxz Q2hhbm5lbFR5cGUtPmNsb3NlUHJvYwk9IFRsc0Nsb3NlUHJvYzsKKysJCXRsc0NoYW5uZWxUeXBl LT5pbnB1dFByb2MJPSBUbHNJbnB1dFByb2M7CisrCQl0bHNDaGFubmVsVHlwZS0+b3V0cHV0UHJv Ywk9IFRsc091dHB1dFByb2M7CisrCQl0bHNDaGFubmVsVHlwZS0+c2Vla1Byb2MJPSBOVUxMOwor KwkJdGxzQ2hhbm5lbFR5cGUtPnNldE9wdGlvblByb2MJPSBUbHNTZXRPcHRpb25Qcm9jOworKwkJ dGxzQ2hhbm5lbFR5cGUtPmdldE9wdGlvblByb2MJPSBUbHNHZXRPcHRpb25Qcm9jOworKwkJdGxz Q2hhbm5lbFR5cGUtPndhdGNoUHJvYwk9IFRsc1dhdGNoUHJvYzsKKysJCXRsc0NoYW5uZWxUeXBl LT5nZXRIYW5kbGVQcm9jCT0gVGxzR2V0SGFuZGxlUHJvYzsKKysJCXRsc0NoYW5uZWxUeXBlLT5j bG9zZTJQcm9jCT0gVGxzQ2xvc2VQcm9jMjsKKysJCXRsc0NoYW5uZWxUeXBlLT5ibG9ja01vZGVQ cm9jCT0gVGxzQmxvY2tNb2RlUHJvYzsKKysJCXRsc0NoYW5uZWxUeXBlLT5mbHVzaFByb2MJPSBO VUxMOworKwkJdGxzQ2hhbm5lbFR5cGUtPmhhbmRsZXJQcm9jCT0gVGxzTm90aWZ5UHJvYzsKKysJ CXRsc0NoYW5uZWxUeXBlLT53aWRlU2Vla1Byb2MJPSBOVUxMOworKwkJdGxzQ2hhbm5lbFR5cGUt PnRocmVhZEFjdGlvblByb2M9IE5VTEw7CisrCQl0bHNDaGFubmVsVHlwZS0+dHJ1bmNhdGVQcm9j CT0gTlVMTDsKKysjZWxzZQorKwkJdGxzQ2hhbm5lbFR5cGUtPnZlcnNpb24JCT0gVENMX0NIQU5O RUxfVkVSU0lPTl8yOworKwkJdGxzQ2hhbm5lbFR5cGUtPmNsb3NlUHJvYwk9IFRsc0Nsb3NlUHJv YzsKKysJCXRsc0NoYW5uZWxUeXBlLT5pbnB1dFByb2MJPSBUbHNJbnB1dFByb2M7CisrCQl0bHND aGFubmVsVHlwZS0+b3V0cHV0UHJvYwk9IFRsc091dHB1dFByb2M7CisrCQl0bHNDaGFubmVsVHlw ZS0+c2Vla1Byb2MJPSBOVUxMOworKwkJdGxzQ2hhbm5lbFR5cGUtPnNldE9wdGlvblByb2MJPSBU bHNTZXRPcHRpb25Qcm9jOworKwkJdGxzQ2hhbm5lbFR5cGUtPmdldE9wdGlvblByb2MJPSBUbHNH ZXRPcHRpb25Qcm9jOworKwkJdGxzQ2hhbm5lbFR5cGUtPndhdGNoUHJvYwk9IFRsc1dhdGNoUHJv YzsKKysJCXRsc0NoYW5uZWxUeXBlLT5nZXRIYW5kbGVQcm9jCT0gVGxzR2V0SGFuZGxlUHJvYzsK KysJCXRsc0NoYW5uZWxUeXBlLT5jbG9zZTJQcm9jCT0gTlVMTDsKKysJCXRsc0NoYW5uZWxUeXBl LT5ibG9ja01vZGVQcm9jCT0gVGxzQmxvY2tNb2RlUHJvYzsKKysJCXRsc0NoYW5uZWxUeXBlLT5m bHVzaFByb2MJPSBOVUxMOworKwkJdGxzQ2hhbm5lbFR5cGUtPmhhbmRsZXJQcm9jCT0gVGxzTm90 aWZ5UHJvYzsKKysjZW5kaWYKKysJfQorKwlyZXR1cm4odGxzQ2hhbm5lbFR5cGUpOworK30KK2Rp ZmYgLS1naXQgYS90bHNJbnQuaCBiL3Rsc0ludC5oCitpbmRleCA2NjgyNzJjLi41ZDllMDQwIDEw MDY0NAorLS0tIGEvdGxzSW50LmgKKysrKyBiL3Rsc0ludC5oCitAQCAtMjMsMTUgKzIzLDE1IEBA CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAKKy0jaWZkZWYg X19XSU4zMl9fCisrI2lmZGVmIF9XSU4zMgorICNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgor ICNpbmNsdWRlIDx3aW5kb3dzLmg+CisgI2luY2x1ZGUgPHdpbmNyeXB0Lmg+IC8qIE9wZW5TU0wg bmVlZHMgdGhpcyBvbiBXaW5kb3dzICovCisgI2VuZGlmCisgCistLyogSGFuZGxlIHRjbDguMy0+ dGNsOC40IENPTlNUIGNoYW5nZXMgKi8KKy0jaWZuZGVmIENPTlNUODQKKy0jZGVmaW5lIENPTlNU ODQKKysvKiBIYW5kbGUgVENMIDguNiBDT05TVCBjaGFuZ2VzICovCisrI2lmbmRlZiBDT05TVDg2 CisrI2RlZmluZSBDT05TVDg2CisgI2VuZGlmCisgCisgI2lmZGVmIE5PX1BBVEVOVFMKK2RpZmYg LS1naXQgYS90bHNYNTA5LmMgYi90bHNYNTA5LmMKK2luZGV4IDgzOGYzNTAuLmFlNTllYmYgMTAw NjQ0CistLS0gYS90bHNYNTA5LmMKKysrKyBiL3Rsc1g1MDkuYworQEAgLTM1LDggKzM1LDggQEAg QVNOMV9VVENUSU1FX3Rvc3RyKEFTTjFfVVRDVElNRSAqdG0pCisgICAgIGNoYXIgKnY7CisgICAg IGludCBnbXQ9MDsKKyAgICAgc3RhdGljIGNoYXIgKm1vblsxMl09eworLSAgICAgICAgIkphbiIs IkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsCistICAgICAgICAiSnVsIiwiQXVnIiwiU2Vw IiwiT2N0IiwiTm92IiwiRGVjIn07CisrCSJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJK dW4iLAorKwkiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIn07CisgICAgIGludCBp OworICAgICBpbnQgeT0wLE09MCxkPTAsaD0wLG09MCxzPTA7CisgICAgIAorQEAgLTQ2LDcgKzQ2 LDcgQEAgQVNOMV9VVENUSU1FX3Rvc3RyKEFTTjFfVVRDVElNRSAqdG0pCisgICAgIGlmIChpIDwg MTApIGdvdG8gZXJyOworICAgICBpZiAodltpLTFdID09ICdaJykgZ210PTE7CisgICAgIGZvciAo aT0wOyBpPDEwOyBpKyspCistICAgICAgICBpZiAoKHZbaV0gPiAnOScpIHx8ICh2W2ldIDwgJzAn KSkgZ290byBlcnI7CisrCWlmICgodltpXSA+ICc5JykgfHwgKHZbaV0gPCAnMCcpKSBnb3RvIGVy cjsKKyAgICAgeT0gKHZbMF0tJzAnKSoxMCsodlsxXS0nMCcpOworICAgICBpZiAoeSA8IDcwKSB5 Kz0xMDA7CisgICAgIE09ICh2WzJdLScwJykqMTArKHZbM10tJzAnKTsKK0BAIC01NiwxMCArNTYs MTAgQEAgQVNOMV9VVENUSU1FX3Rvc3RyKEFTTjFfVVRDVElNRSAqdG0pCisgICAgIG09ICAodls4 XS0nMCcpKjEwKyh2WzldLScwJyk7CisgICAgIGlmICgJKHZbMTBdID49ICcwJykgJiYgKHZbMTBd IDw9ICc5JykgJiYKKyAJCSh2WzExXSA+PSAnMCcpICYmICh2WzExXSA8PSAnOScpKQorLSAgICAg ICAgcz0gICh2WzEwXS0nMCcpKjEwKyh2WzExXS0nMCcpOworKwlzPSAgKHZbMTBdLScwJykqMTAr KHZbMTFdLScwJyk7CisgICAgIAorICAgICBzcHJpbnRmKGJwLCIlcyAlMmQgJTAyZDolMDJkOiUw MmQgJWQlcyIsCistICAgICAgICAgICAgICAgICAgIG1vbltNLTFdLGQsaCxtLHMseSsxOTAwLChn bXQpPyIgR01UIjoiIik7CisrCQkgICBtb25bTS0xXSxkLGgsbSxzLHkrMTkwMCwoZ210KT8iIEdN VCI6IiIpOworICAgICByZXR1cm4gYnA7CisgIGVycjoKKyAgICAgcmV0dXJuICJCYWQgdGltZSB2 YWx1ZSI7CitAQCAtODcsMTAgKzg3LDcgQEAgQVNOMV9VVENUSU1FX3Rvc3RyKEFTTjFfVVRDVElN RSAqdG0pCisgI2RlZmluZSBDRVJUX1NUUl9TSVpFIDE2Mzg0CisgCisgVGNsX09iaioKKy1UbHNf TmV3WDUwOU9iaiggaW50ZXJwLCBjZXJ0KQorLSAgICBUY2xfSW50ZXJwICppbnRlcnA7CistICAg IFg1MDkgKmNlcnQ7CisteworK1Rsc19OZXdYNTA5T2JqKCBUY2xfSW50ZXJwICppbnRlcnAsIFg1 MDkgKmNlcnQpIHsKKyAgICAgVGNsX09iaiAqY2VydFB0ciA9IFRjbF9OZXdMaXN0T2JqKCAwLCBO VUxMKTsKKyAgICAgQklPICpiaW87CisgICAgIGludCBuOworQEAgLTEzOCwyNiArMTM1LDI2IEBA IFRsc19OZXdYNTA5T2JqKCBpbnRlcnAsIGNlcnQpCisgCXNlcmlhbFtuXSA9IDA7CisgCSh2b2lk KUJJT19mbHVzaChiaW8pOworIAorLSAgICAgICAgaWYgKFBFTV93cml0ZV9iaW9fWDUwOShiaW8s IGNlcnQpKSB7CistICAgICAgICAgICAgY2VydFN0cl9wID0gY2VydFN0cjsKKy0gICAgICAgICAg ICBjZXJ0U3RyX2xlbiA9IDA7CistICAgICAgICAgICAgd2hpbGUgKDEpIHsKKy0gICAgICAgICAg ICAgICAgdG9SZWFkID0gbWluKEJJT19wZW5kaW5nKGJpbyksIENFUlRfU1RSX1NJWkUgLSBjZXJ0 U3RyX2xlbiAtIDEpOworLSAgICAgICAgICAgICAgICB0b1JlYWQgPSBtaW4odG9SZWFkLCBCVUZT SVopOworLSAgICAgICAgICAgICAgICBpZiAodG9SZWFkID09IDApIHsKKy0gICAgICAgICAgICAg ICAgICAgIGJyZWFrOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGRwcmlu dGYoIlJlYWRpbmcgJWkgYnl0ZXMgZnJvbSB0aGUgY2VydGlmaWNhdGUuLi4iLCB0b1JlYWQpOwor LSAgICAgICAgICAgICAgICBuID0gQklPX3JlYWQoYmlvLCBjZXJ0U3RyX3AsIHRvUmVhZCk7Cist ICAgICAgICAgICAgICAgIGlmIChuIDw9IDApIHsKKy0gICAgICAgICAgICAgICAgICAgIGJyZWFr OworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIGNlcnRTdHJfbGVuICs9IG47 CistICAgICAgICAgICAgICAgIGNlcnRTdHJfcCAgICs9IG47CistICAgICAgICAgICAgfQorLSAg ICAgICAgICAgICpjZXJ0U3RyX3AgPSAnXDAnOworLSAgICAgICAgICAgICh2b2lkKUJJT19mbHVz aChiaW8pOworLSAgICAgICAgfQorKwlpZiAoUEVNX3dyaXRlX2Jpb19YNTA5KGJpbywgY2VydCkp IHsKKysJICAgIGNlcnRTdHJfcCA9IGNlcnRTdHI7CisrCSAgICBjZXJ0U3RyX2xlbiA9IDA7Cisr CSAgICB3aGlsZSAoMSkgeworKwkJdG9SZWFkID0gbWluKEJJT19wZW5kaW5nKGJpbyksIENFUlRf U1RSX1NJWkUgLSBjZXJ0U3RyX2xlbiAtIDEpOworKwkJdG9SZWFkID0gbWluKHRvUmVhZCwgQlVG U0laKTsKKysJCWlmICh0b1JlYWQgPT0gMCkgeworKwkJICAgIGJyZWFrOworKwkJfQorKwkJZHBy aW50ZigiUmVhZGluZyAlaSBieXRlcyBmcm9tIHRoZSBjZXJ0aWZpY2F0ZS4uLiIsIHRvUmVhZCk7 CisrCQluID0gQklPX3JlYWQoYmlvLCBjZXJ0U3RyX3AsIHRvUmVhZCk7CisrCQlpZiAobiA8PSAw KSB7CisrCQkgICAgYnJlYWs7CisrCQl9CisrCQljZXJ0U3RyX2xlbiArPSBuOworKwkJY2VydFN0 cl9wICAgKz0gbjsKKysJICAgIH0KKysJICAgICpjZXJ0U3RyX3AgPSAnXDAnOworKwkgICAgKHZv aWQpQklPX2ZsdXNoKGJpbyk7CisrCX0KKyAKKyAJQklPX2ZyZWUoYmlvKTsKKyAgICAgfQorQEAg LTE2NiwxMCArMTYzLDExIEBAIFRsc19OZXdYNTA5T2JqKCBpbnRlcnAsIGNlcnQpCisgICAgIHN0 cmNweSggbm90QWZ0ZXIsIEFTTjFfVVRDVElNRV90b3N0ciggWDUwOV9nZXRfbm90QWZ0ZXIoY2Vy dCkgKSk7CisgCisgI2lmbmRlZiBOT19TU0xfU0hBCistICAgIFg1MDlfZGlnZXN0KGNlcnQsIEVW UF9zaGExKCksIHNoYV9oYXNoX2JpbmFyeSwgTlVMTCk7CistICAgIGZvciAoc2hhaSA9IDA7IHNo YWkgPCBTSEFfRElHRVNUX0xFTkdUSDsgc2hhaSsrKSB7CistICAgICAgICBzaGFfaGFzaF9hc2Np aVtzaGFpICogMl0gICAgID0gc2hhY2hhcnNbKHNoYV9oYXNoX2JpbmFyeVtzaGFpXSAmIDB4RjAp ID4+IDRdOworLSAgICAgICAgc2hhX2hhc2hfYXNjaWlbc2hhaSAqIDIgKyAxXSA9IHNoYWNoYXJz WyhzaGFfaGFzaF9iaW5hcnlbc2hhaV0gJiAweDBGKV07CisrICAgIC8qIFNIQTEgKi8KKysgICAg WDUwOV9kaWdlc3QoY2VydCwgRVZQX3NoYTEoKSwgc2hhX2hhc2hfYmluYXJ5LCBOVUxMKTsKKysg ICAgZm9yIChzaGFpID0gMDsgc2hhaSA8IFNIQV9ESUdFU1RfTEVOR1RIOyBzaGFpKyspIHsKKysJ c2hhX2hhc2hfYXNjaWlbc2hhaSAqIDJdICAgICA9IHNoYWNoYXJzWyhzaGFfaGFzaF9iaW5hcnlb c2hhaV0gJiAweEYwKSA+PiA0XTsKKysJc2hhX2hhc2hfYXNjaWlbc2hhaSAqIDIgKyAxXSA9IHNo YWNoYXJzWyhzaGFfaGFzaF9iaW5hcnlbc2hhaV0gJiAweDBGKV07CisgICAgIH0KKyAgICAgVGNs X0xpc3RPYmpBcHBlbmRFbGVtZW50KCBpbnRlcnAsIGNlcnRQdHIsIFRjbF9OZXdTdHJpbmdPYmoo InNoYTFfaGFzaCIsIC0xKSApOworICAgICBUY2xfTGlzdE9iakFwcGVuZEVsZW1lbnQoIGludGVy cCwgY2VydFB0ciwgVGNsX05ld1N0cmluZ09iaihzaGFfaGFzaF9hc2NpaSwgU0hBX0RJR0VTVF9M RU5HVEggKiAyKSApOworY29tbWl0IDdmMDg5MjRlZmQ1MWY5ZTJlMGZiZGFhOWRkM2FiOGMzMzE4 YjQ4ZjMKK0F1dGhvcjogYm9oYWdhbiA8Ym9oYWdhbj4KK0RhdGU6ICAgRnJpIE1hciAxNSAyMjox NzoyMyAyMDI0ICswMDAwCisKKyAgICBGaXggd2FybmluZ3MgZm9yIGNvbXBpbGUgd2l0aCBHQ0Mg b24gVENMIDkuMAorCitkaWZmIC0tZ2l0IGEvdGxzLmMgYi90bHMuYworaW5kZXggMzUyZmMyYy4u NTY0MzdiOSAxMDA2NDQKKy0tLSBhL3Rscy5jCisrKysgYi90bHMuYworQEAgLTg2Nyw3ICs4Njcs NyBAQCBJbXBvcnRPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRl cnAsIGludCBvYmpjLCBUY2xfT2JqICpjb25zdAorIAkvKiBHZXQgdGhlICJtb2RlbCIgY29udGV4 dCAqLworIAljaGFuID0gVGNsX0dldENoYW5uZWwoaW50ZXJwLCBtb2RlbCwgJm1vZGUpOworIAlp ZiAoY2hhbiA9PSAoVGNsX0NoYW5uZWwpIE5VTEwpIHsKKy0JICAgIFRsc19GcmVlKChjaGFyICop IHN0YXRlUHRyKTsKKysJICAgIFRsc19GcmVlKCh0bHNfZnJlZV90eXBlICopIHN0YXRlUHRyKTsK KyAJICAgIHJldHVybiBUQ0xfRVJST1I7CisgCX0KKyAKK0BAIC04NzgsNyArODc4LDcgQEAgSW1w b3J0T2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQg b2JqYywgVGNsX09iaiAqY29uc3QKKyAJaWYgKFRjbF9HZXRDaGFubmVsVHlwZShjaGFuKSAhPSBU bHNfQ2hhbm5lbFR5cGUoKSkgeworIAkgICAgVGNsX0FwcGVuZFJlc3VsdChpbnRlcnAsICJiYWQg Y2hhbm5lbCBcIiIsCisgCQkgICAgVGNsX0dldENoYW5uZWxOYW1lKGNoYW4pLCAiXCI6IG5vdCBh IFRMUyBjaGFubmVsIiwgTlVMTCk7CistCSAgICBUbHNfRnJlZSgoY2hhciAqKSBzdGF0ZVB0cik7 CisrCSAgICBUbHNfRnJlZSgodGxzX2ZyZWVfdHlwZSAqKSBzdGF0ZVB0cik7CisgCSAgICByZXR1 cm4gVENMX0VSUk9SOworIAl9CisgCWN0eCA9ICgoU3RhdGUgKilUY2xfR2V0Q2hhbm5lbEluc3Rh bmNlRGF0YShjaGFuKSktPmN0eDsKK0BAIC04ODYsNyArODg2LDcgQEAgSW1wb3J0T2JqQ21kKENs aWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywgVGNsX09i aiAqY29uc3QKKyAJaWYgKChjdHggPSBDVFhfSW5pdChzdGF0ZVB0ciwgc2VydmVyLCBwcm90bywg a2V5ZmlsZSwgY2VydGZpbGUsIGtleSwKKyAgICAgY2VydCwga2V5X2xlbiwgY2VydF9sZW4sIENB ZGlyLCBDQWZpbGUsIGNpcGhlcnMsCisgICAgIERIcGFyYW1zKSkgPT0gKFNTTF9DVFgqKTApIHsK Ky0JICAgIFRsc19GcmVlKChjaGFyICopIHN0YXRlUHRyKTsKKysJICAgIFRsc19GcmVlKCh0bHNf ZnJlZV90eXBlICopIHN0YXRlUHRyKTsKKyAJICAgIHJldHVybiBUQ0xfRVJST1I7CisgCX0KKyAg ICAgfQorQEAgLTkxNiw3ICs5MTYsNyBAQCBJbXBvcnRPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnRE YXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpjb25zdAorIAkvKgor IAkgKiBObyB1c2Ugb2YgVGNsX0V2ZW50dWFsbHlGcmVlIGJlY2F1c2Ugbm8gcG9zc2libGUgVGNs X1ByZXNlcnZlLgorIAkgKi8KKy0JVGxzX0ZyZWUoKGNoYXIgKikgc3RhdGVQdHIpOworKwlUbHNf RnJlZSgodGxzX2ZyZWVfdHlwZSAqKSBzdGF0ZVB0cik7CisgCXJldHVybiBUQ0xfRVJST1I7Cisg ICAgIH0KKyAKK0BAIC05MzQsNyArOTM0LDcgQEAgSW1wb3J0T2JqQ21kKENsaWVudERhdGEgY2xp ZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3QKKyAJ LyogU1NMIGxpYnJhcnkgZXJyb3IgKi8KKyAJVGNsX0FwcGVuZFJlc3VsdChpbnRlcnAsICJjb3Vs ZG4ndCBjb25zdHJ1Y3Qgc3NsIHNlc3Npb246ICIsIFJFQVNPTigpLAorIAkJKGNoYXIgKikgTlVM TCk7CistCVRsc19GcmVlKChjaGFyICopIHN0YXRlUHRyKTsKKysJVGxzX0ZyZWUoKHRsc19mcmVl X3R5cGUgKikgc3RhdGVQdHIpOworIAlyZXR1cm4gVENMX0VSUk9SOworICAgICB9CisgCitAQCAt OTQzLDcgKzk0Myw3IEBAIEltcG9ydE9iakNtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9J bnRlcnAgKmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKmNvbnN0CisgCWlmICghU1NMX3NldF90 bHNleHRfaG9zdF9uYW1lKHN0YXRlUHRyLT5zc2wsIHNlcnZlcm5hbWUpICYmIHJlcXVpcmUpIHsK KyAJICAgIFRjbF9BcHBlbmRSZXN1bHQoaW50ZXJwLCAic2V0dGluZyBUTFMgaG9zdCBuYW1lIGV4 dGVuc2lvbiBmYWlsZWQiLAorIAkJKGNoYXIgKikgTlVMTCk7CistCSAgICBUbHNfRnJlZSgoY2hh ciAqKSBzdGF0ZVB0cik7CisrCSAgICBUbHNfRnJlZSgodGxzX2ZyZWVfdHlwZSAqKSBzdGF0ZVB0 cik7CisgCSAgICByZXR1cm4gVENMX0VSUk9SOworIAl9CisgICAgIH0KK2RpZmYgLS1naXQgYS90 bHNJbnQuaCBiL3Rsc0ludC5oCitpbmRleCA1ZDllMDQwLi42ZjA1M2M1IDEwMDY0NAorLS0tIGEv dGxzSW50LmgKKysrKyBiL3Rsc0ludC5oCitAQCAtMTYxLDYgKzE2MSwxMiBAQCB0eXBlZGVmIHN0 cnVjdCBTdGF0ZSB7CisgI2VuZGlmIC8qIFRjbF9HZXRTdGFja2VkQ2hhbm5lbCAqLworICNlbmRp ZiAvKiBVU0VfVENMX1NUVUJTICovCisgCisrI2lmIFRDTF9NQUpPUl9WRVJTSU9OIDwgOQorKyAg ICB0eXBlZGVmIGNoYXIgdGxzX2ZyZWVfdHlwZTsKKysjZWxzZQorKyAgICB0eXBlZGVmIHZvaWQg dGxzX2ZyZWVfdHlwZTsKKysjZW5kaWYKKysKKyAvKgorICAqIEZvcndhcmQgZGVjbGFyYXRpb25z CisgICovCitAQCAtMTY5LDcgKzE3NSw3IEBAIFRjbF9DaGFubmVsICAgICBUbHNfR2V0UGFyZW50 KFN0YXRlICpzdGF0ZVB0ciwgaW50IG1hc2tGbGFncyk7CisgCisgVGNsX09iaiAgICAgICAgICpU bHNfTmV3WDUwOU9iaihUY2xfSW50ZXJwICppbnRlcnAsIFg1MDkgKmNlcnQpOworIHZvaWQgICAg ICAgICAgICBUbHNfRXJyb3IoU3RhdGUgKnN0YXRlUHRyLCBjaGFyICptc2cpOworLXZvaWQgICAg ICAgICAgICBUbHNfRnJlZShjaGFyICpibG9ja1B0cik7Cisrdm9pZCAgICAgICAgICAgIFRsc19G cmVlKHRsc19mcmVlX3R5cGUgKmJsb2NrUHRyKTsKKyB2b2lkICAgICAgICAgICAgVGxzX0NsZWFu KFN0YXRlICpzdGF0ZVB0cik7CisgaW50ICAgICAgICAgICAgIFRsc19XYWl0Rm9yQ29ubmVjdChT dGF0ZSAqc3RhdGVQdHIsIGludCAqZXJyb3JDb2RlUHRyLCBpbnQgaGFuZHNoYWtlRmFpbHVyZUlz UGVybWFuZW50KTsKKyAKCmRpZmYgLS1naXQgYS90Y2x0bHMtMS43LjIyLXRjbC05XzBfc2Vjb25k LnBhdGNoIGIvdGNsdGxzLTEuNy4yMi10Y2wtOV8wX3NlY29uZC5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWE3NmUzCi0tLSAvZGV2L251bGwKKysrIGIvdGNsdGxz LTEuNy4yMi10Y2wtOV8wX3NlY29uZC5wYXRjaApAQCAtMCwwICsxLDE3MSBAQAorZGlmZiAtLWdp dCBhL3RjbE9wdHMuaCBiL3RjbE9wdHMuaAoraW5kZXggMWY5OGZjNi4uYWUyNzQwNyAxMDA2NDQK Ky0tLSBhL3RjbE9wdHMuaAorKysrIGIvdGNsT3B0cy5oCitAQCAtMjYsNyArMjYsNyBAQAorIAor ICNkZWZpbmUgT1BUU1RSKG9wdGlvbiwgdmFyKQkJCVwKKyAgICAgT1BUX1BST0xPRyhvcHRpb24p CQkJCVwKKy0gICAgdmFyID0gVGNsX0dldFN0cmluZ0Zyb21PYmoob2JqdltpZHhdLCBOVUxMKTtc CisrICAgIHZhciA9IFRjbF9HZXRTdHJpbmdGcm9tT2JqKG9ianZbaWR4XSwgKFRjbF9TaXplICop TlVMTCk7XAorICAgICBPUFRfUE9TVExPRygpCisgCisgI2RlZmluZSBPUFRJTlQob3B0aW9uLCB2 YXIpCQkJXAorZGlmZiAtLWdpdCBhL3Rscy5jIGIvdGxzLmMKK2luZGV4IDU2NDM3YjkuLmZkNDM1 NjQgMTAwNjQ0CistLS0gYS90bHMuYworKysrIGIvdGxzLmMKK0BAIC0yNDgsNyArMjQ4LDcgQEAg c3RhdGljIGludAorIFZlcmlmeUNhbGxiYWNrKGludCBvaywgWDUwOV9TVE9SRV9DVFggKmN0eCkg eworICAgICBUY2xfT2JqICpjbWRQdHIsICpyZXN1bHQ7CisgICAgIGNoYXIgKmVyclN0ciwgKnN0 cmluZzsKKy0gICAgaW50IGxlbmd0aDsKKysgICAgVGNsX1NpemUgbGVuZ3RoOworICAgICBTU0wg ICAqc3NsCQk9IChTU0wqKVg1MDlfU1RPUkVfQ1RYX2dldF9leF9kYXRhKGN0eCwgU1NMX2dldF9l eF9kYXRhX1g1MDlfU1RPUkVfQ1RYX2lkeCgpKTsKKyAgICAgWDUwOSAgKmNlcnQJCT0gWDUwOV9T VE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydChjdHgpOworICAgICBTdGF0ZSAqc3RhdGVQdHIJPSAo U3RhdGUqKVNTTF9nZXRfYXBwX2RhdGEoc3NsKTsKK0BAIC0zNTUsNyArMzU1LDcgQEAgVGxzX0Vy cm9yKFN0YXRlICpzdGF0ZVB0ciwgY2hhciAqbXNnKSB7CisgICAgIGlmIChtc2cgJiYgKm1zZykg eworIAlUY2xfU2V0RXJyb3JDb2RlKHN0YXRlUHRyLT5pbnRlcnAsICJTU0wiLCBtc2csIChjaGFy ICopTlVMTCk7CisgICAgIH0gZWxzZSB7CistCW1zZyA9IFRjbF9HZXRTdHJpbmdGcm9tT2JqKFRj bF9HZXRPYmpSZXN1bHQoc3RhdGVQdHItPmludGVycCksIE5VTEwpOworKwltc2cgPSBUY2xfR2V0 U3RyaW5nRnJvbU9iaihUY2xfR2V0T2JqUmVzdWx0KHN0YXRlUHRyLT5pbnRlcnApLCAoVGNsX1Np emUgKilOVUxMKTsKKyAgICAgfQorICAgICBzdGF0ZVB0ci0+ZXJyID0gbXNnOworIAorQEAgLTY0 NSw3ICs2NDUsNyBAQCBzdGF0aWMgaW50IEhhbmRzaGFrZU9iakNtZChDbGllbnREYXRhIGNsaWVu dERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IG9iamMsCisgCQlyZXR1cm4oVENMX0VSUk9S KTsKKyAJfQorIAorLQljaGFuID0gVGNsX0dldENoYW5uZWwoaW50ZXJwLCBUY2xfR2V0U3RyaW5n RnJvbU9iaihvYmp2WzFdLCBOVUxMKSwgTlVMTCk7CisrCWNoYW4gPSBUY2xfR2V0Q2hhbm5lbChp bnRlcnAsIFRjbF9HZXRTdHJpbmdGcm9tT2JqKG9ianZbMV0sIChUY2xfU2l6ZSAqKU5VTEwpLCBO VUxMKTsKKyAJaWYgKGNoYW4gPT0gKFRjbF9DaGFubmVsKSBOVUxMKSB7CisgCQlyZXR1cm4oVENM X0VSUk9SKTsKKyAJfQorQEAgLTcyMCwxNSArNzIwLDE2IEBAIEltcG9ydE9iakNtZChDbGllbnRE YXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKmNv bnN0CisgICAgIFRjbF9PYmogKnNjcmlwdAkgICAgICAgID0gTlVMTDsKKyAgICAgVGNsX09iaiAq cGFzc3dvcmQJICAgICAgICA9IE5VTEw7CisgICAgIFRjbF9EU3RyaW5nIHVwcGVyQ2hhbm5lbFRy YW5zbGF0aW9uLCB1cHBlckNoYW5uZWxCbG9ja2luZywgdXBwZXJDaGFubmVsRW5jb2RpbmcsIHVw cGVyQ2hhbm5lbEVPRkNoYXI7CistICAgIGludCBpZHgsIGxlbjsKKysgICAgaW50IGlkeDsKKysg ICAgVGNsX1NpemUgbGVuOworICAgICBpbnQgZmxhZ3MJCSAgICAgICAgPSBUTFNfVENMX0lOSVQ7 CisgICAgIGludCBzZXJ2ZXIJCSAgICAgICAgPSAwOwkvKiBpcyBjb25uZWN0aW9uIGluY29taW5n IG9yIG91dGdvaW5nPyAqLworICAgICBjaGFyICprZXlmaWxlCSAgICAgICAgPSBOVUxMOworICAg ICBjaGFyICpjZXJ0ZmlsZQkgICAgICAgID0gTlVMTDsKKyAgICAgdW5zaWduZWQgY2hhciAqa2V5 ICAJPSBOVUxMOworLSAgICBpbnQga2V5X2xlbiAgICAgICAgICAgICAgICAgPSAwOworKyAgICBU Y2xfU2l6ZSBrZXlfbGVuICAgICAgICAgICAgPSAwOworICAgICB1bnNpZ25lZCBjaGFyICpjZXJ0 ICAgICAgICAgPSBOVUxMOworLSAgICBpbnQgY2VydF9sZW4gICAgICAgICAgICAgICAgPSAwOwor KyAgICBUY2xfU2l6ZSBjZXJ0X2xlbiAgICAgICAgICAgPSAwOworICAgICBjaGFyICpjaXBoZXJz CSAgICAgICAgPSBOVUxMOworICAgICBjaGFyICpDQWZpbGUJICAgICAgICA9IE5VTEw7CisgICAg IGNoYXIgKkNBZGlyCQkgICAgICAgID0gTlVMTDsKK0BAIC03NjgsNyArNzY5LDcgQEAgSW1wb3J0 T2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2Jq YywgVGNsX09iaiAqY29uc3QKKyAJcmV0dXJuIFRDTF9FUlJPUjsKKyAgICAgfQorIAorLSAgICBj aGFuID0gVGNsX0dldENoYW5uZWwoaW50ZXJwLCBUY2xfR2V0U3RyaW5nRnJvbU9iaihvYmp2WzFd LCBOVUxMKSwgTlVMTCk7CisrICAgIGNoYW4gPSBUY2xfR2V0Q2hhbm5lbChpbnRlcnAsIFRjbF9H ZXRTdHJpbmdGcm9tT2JqKG9ianZbMV0sIChUY2xfU2l6ZSAqKU5VTEwpLCBOVUxMKTsKKyAgICAg aWYgKGNoYW4gPT0gKFRjbF9DaGFubmVsKSBOVUxMKSB7CisgCXJldHVybiBUQ0xfRVJST1I7Cisg ICAgIH0KK0BAIC03NzksNyArNzgwLDcgQEAgSW1wb3J0T2JqQ21kKENsaWVudERhdGEgY2xpZW50 RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3QKKyAgICAg Y2hhbiA9IFRjbF9HZXRUb3BDaGFubmVsKGNoYW4pOworIAorICAgICBmb3IgKGlkeCA9IDI7IGlk eCA8IG9iamM7IGlkeCsrKSB7CistCWNoYXIgKm9wdCA9IFRjbF9HZXRTdHJpbmdGcm9tT2JqKG9i anZbaWR4XSwgTlVMTCk7CisrCWNoYXIgKm9wdCA9IFRjbF9HZXRTdHJpbmdGcm9tT2JqKG9ianZb aWR4XSwgKFRjbF9TaXplICopTlVMTCk7CisgCisgCWlmIChvcHRbMF0gIT0gJy0nKQorIAkgICAg YnJlYWs7CitAQCAtMTM4MCwxMiArMTM4MSwxMiBAQCBTdGF0dXNPYmpDbWQoQ2xpZW50RGF0YSBj bGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpjb25zdAor IAorICAgICBzd2l0Y2ggKG9iamMpIHsKKyAJY2FzZSAyOgorLQkgICAgY2hhbm5lbE5hbWUgPSBU Y2xfR2V0U3RyaW5nRnJvbU9iaihvYmp2WzFdLCBOVUxMKTsKKysJICAgIGNoYW5uZWxOYW1lID0g VGNsX0dldFN0cmluZ0Zyb21PYmoob2JqdlsxXSwgKFRjbF9TaXplICopTlVMTCk7CisgCSAgICBi cmVhazsKKyAKKyAJY2FzZSAzOgorIAkgICAgaWYgKCFzdHJjbXAgKFRjbF9HZXRTdHJpbmcgKG9i anZbMV0pLCAiLWxvY2FsIikpIHsKKy0JCWNoYW5uZWxOYW1lID0gVGNsX0dldFN0cmluZ0Zyb21P Ymoob2JqdlsyXSwgTlVMTCk7CisrCQljaGFubmVsTmFtZSA9IFRjbF9HZXRTdHJpbmdGcm9tT2Jq KG9ianZbMl0sIChUY2xfU2l6ZSAqKU5VTEwpOworIAkJYnJlYWs7CisgCSAgICB9CisgCSAgICAv KiBlbHNlIGZhbGwtdGhyb3VnaCAuLi4gKi8KK0BAIC0xNDQyLDYgKzE0NDMsNyBAQCBTdGF0dXNP YmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAsIGludCBvYmpj LCBUY2xfT2JqICpjb25zdAorICAgICByZXR1cm4gVENMX09LOworIAljbGllbnREYXRhID0gY2xp ZW50RGF0YTsKKyB9CisrCisgDAorIC8qCisgICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitAQCAtMTQ4OCw3ICsxNDkw LDcgQEAgc3RhdGljIGludAorIE1pc2NPYmpDbWQoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xf SW50ZXJwICppbnRlcnAsIGludCBvYmpjLCBUY2xfT2JqICpjb25zdCBvYmp2W10pIHsKKyAgICAg c3RhdGljIGNvbnN0IGNoYXIgKmNvbW1hbmRzIFtdID0geyAicmVxIiwgInN0cnJlcSIsIE5VTEwg fTsKKyAgICAgZW51bSBjb21tYW5kIHsgQ19SRVEsIENfU1RSUkVRLCBDX0RVTU1ZIH07CistICAg IGludCBjbWQ7CisrICAgIFRjbF9TaXplIGNtZDsKKyAKKyAgICAgZHByaW50ZigiQ2FsbGVkIik7 CisgCitAQCAtMTUwNyw3ICsxNTEwLDggQEAgTWlzY09iakNtZChDbGllbnREYXRhIGNsaWVudERh dGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKmNvbnN0IG8KKyAJICAg IFg1MDkgKmNlcnQ9TlVMTDsKKyAJICAgIFg1MDlfTkFNRSAqbmFtZT1OVUxMOworIAkgICAgVGNs X09iaiAqKmxpc3R2OworLQkgICAgaW50IGxpc3RjLGk7CisrCSAgICBUY2xfU2l6ZSBsaXN0YzsK KysJICAgIGludCBpOworIAorIAkgICAgQklPICpvdXQ9TlVMTDsKKyAKK0BAIC0xNTI3LDggKzE1 MzEsNyBAQCBNaXNjT2JqQ21kKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50 ZXJwLCBpbnQgb2JqYywgVGNsX09iaiAqY29uc3QgbworIAkgICAgcGVtb3V0PVRjbF9HZXRTdHJp bmcob2Jqdls0XSk7CisgCisgCSAgICBpZiAob2JqYz49NikgeworLQkJaWYgKFRjbF9MaXN0T2Jq R2V0RWxlbWVudHMoaW50ZXJwLCBvYmp2WzVdLAorLQkJCSZsaXN0YywgJmxpc3R2KSAhPSBUQ0xf T0spIHsKKysJCWlmIChUY2xfTGlzdE9iakdldEVsZW1lbnRzKGludGVycCwgb2Jqdls1XSwgJmxp c3RjLCAmbGlzdHYpICE9IFRDTF9PSykgeworIAkJICAgIHJldHVybiBUQ0xfRVJST1I7CisgCQl9 CisgCitAQCAtMTY0OCw3ICsxNjUxLDcgQEAgTWlzY09iakNtZChDbGllbnREYXRhIGNsaWVudERh dGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IG9iamMsIFRjbF9PYmogKmNvbnN0IG8KKyAgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgKi8KKyB2b2lkCistVGxzX0ZyZWUoIGNoYXIgKmJsb2NrUHRyICkKKytUbHNf RnJlZSggdGxzX2ZyZWVfdHlwZSAqYmxvY2tQdHIgKQorIHsKKyAgICAgU3RhdGUgKnN0YXRlUHRy ID0gKFN0YXRlICopYmxvY2tQdHI7CisgCitkaWZmIC0tZ2l0IGEvdGxzSW50LmggYi90bHNJbnQu aAoraW5kZXggNmYwNTNjNS4uMWQwMmJkMSAxMDA2NDQKKy0tLSBhL3Rsc0ludC5oCisrKysgYi90 bHNJbnQuaAorQEAgLTMxLDcgKzMxLDIyIEBACisgCisgLyogSGFuZGxlIFRDTCA4LjYgQ09OU1Qg Y2hhbmdlcyAqLworICNpZm5kZWYgQ09OU1Q4NgorLSNkZWZpbmUgQ09OU1Q4NgorKyMgICBpZiBU Q0xfTUFKT1JfVkVSU0lPTiA+IDgKKysjCWRlZmluZSBDT05TVDg2IGNvbnN0CisrIyAgIGVsc2UK KysjCWRlZmluZSBDT05TVDg2CisrIyAgIGVuZGlmCisrI2VuZGlmCisrCisrLyoKKysgKiBCYWNr d2FyZHMgY29tcGF0aWJpbGl0eSBmb3Igc2l6ZSB0eXBlIGNoYW5nZQorKyAqLworKyNpZiBUQ0xf TUFKT1JfVkVSU0lPTiA8IDkgJiYgVENMX01JTk9SX1ZFUlNJT04gPCA3CisrICAgICNpZm5kZWYg VGNsX1NpemUKKysgICAgICAgIHR5cGVkZWYgaW50IFRjbF9TaXplOworKyAgICAjZW5kaWYKKysK KysgICAgI2RlZmluZSBUQ0xfU0laRV9NT0RJRklFUiAiIgorICNlbmRpZgorIAorICNpZmRlZiBO T19QQVRFTlRTCgpkaWZmIC0tZ2l0IGEvdGNsdGxzLnNwZWMgYi90Y2x0bHMuc3BlYwppbmRleCA0 NzMxYTYyLi4yMWJlYThlIDEwMDY0NAotLS0gYS90Y2x0bHMuc3BlYworKysgYi90Y2x0bHMuc3Bl YwpAQCAtMTYsNiArMTYsOCBAQCBQYXRjaDE6ICAgICAgICAgdGNsdGxzLTEuNy4yMS1ob3N0bmFt ZS10ZXN0cy5wYXRjaAogUGF0Y2gyOiAgICAgICAgIHRjbHRscy0xLjcuMjItY2VydC10ZXN0cy5w YXRjaAogUGF0Y2gzOiAgICAgICAgIHRjbHRscy0xLjcuMjItZmFsbC10aHJvdWdoLnBhdGNoCiBQ YXRjaDQ6ICAgICAgICAgdGNsdGxzLTEuNy4yMi1vcGVuc3NsMy5wYXRjaAorUGF0Y2g1OiAgICAg ICAgIHRjbHRscy0xLjcuMjItdGNsLTlfMC5wYXRjaAorUGF0Y2g2OiAgICAgICAgIHRjbHRscy0x LjcuMjItdGNsLTlfMF9zZWNvbmQucGF0Y2gKIAogQnVpbGRSZXF1aXJlczogIG1ha2UKICVpZiAw JXs/ZmVkb3JhfSB8fCAwJXs/cmhlbH0gPj0gOAo=