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: Mattias Ellert To: git-commits@fedoraproject.org Subject: [rpms/globus-ftp-client] rawhide: Fix compiler and doxygen warnings Date: Sun, 14 Jun 2026 08:45:56 GMT Message-ID: <178142675628.1.13302290531297924239.rpms-globus-ftp-client-92080bc9890b@fedoraproject.org> List-ID: X-Git-Repo: rpms/globus-ftp-client X-Git-Branch: rawhide X-Git-Rev: 92080bc9890b9097d6df7e40343626b6e8cb220b QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2xvYnVzLWZ0cC1j bGllbnQKQnJhbmNoIDogcmF3aGlkZQpDb21taXQgOiA5MjA4MGJjOTg5MGI5MDk3ZDZkZjdlNDAz NDM2MjZiNmU4Y2IyMjBiCkF1dGhvciA6IE1hdHRpYXMgRWxsZXJ0IDxtYXR0aWFzLmVsbGVydEBw aHlzaWNzLnV1LnNlPgpEYXRlICAgOiAyMDI2LTA2LTE0VDEwOjM5OjEyKzAyOjAwClN0YXRzICA6 ICsxMTU3OS8tMSBpbiAzIGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVj dC5vcmcvcnBtcy9nbG9idXMtZnRwLWNsaWVudC9jLzkyMDgwYmM5ODkwYjkwOTdkNmRmN2U0MDM0 MzYyNmI2ZThjYjIyMGI/YnJhbmNoPXJhd2hpZGUKCkxvZzoKRml4IGNvbXBpbGVyIGFuZCBkb3h5 Z2VuIHdhcm5pbmdzCgotLS0KZGlmZiAtLWdpdCBhLzAwMDEtVW50YWJpZnktYW5kLXJlbW92ZS10 cmFpbGluZy13aGl0ZS1zcGFjZS5wYXRjaCBiLzAwMDEtVW50YWJpZnktYW5kLXJlbW92ZS10cmFp bGluZy13aGl0ZS1zcGFjZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4wYjIwMTM4Ci0tLSAvZGV2L251bGwKKysrIGIvMDAwMS1VbnRhYmlmeS1hbmQtcmVtb3ZlLXRy YWlsaW5nLXdoaXRlLXNwYWNlLnBhdGNoCkBAIC0wLDAgKzEsMTE0NTYgQEAKK0Zyb20gM2NjZGFh MDIzNjIzMGJiY2JjYmYzMzllN2RmZGZhZjIzYzEwYmQ2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb206IE1hdHRpYXMgRWxsZXJ0IDxtYXR0aWFzLmVsbGVydEBwaHlzaWNzLnV1LnNlPgor RGF0ZTogV2VkLCAyMCBNYXkgMjAyNiAwMDoxNTozNyArMDIwMAorU3ViamVjdDogW1BBVENIIDEv Ml0gVW50YWJpZnkgYW5kIHJlbW92ZSB0cmFpbGluZyB3aGl0ZS1zcGFjZQorCistLS0KKyBncmlk ZnRwL2NsaWVudC9zb3VyY2UvZ2xvYnVzX2Z0cF9jbGllbnQuaCAgICAgfCAgNjUyICstCisgLi4u L2NsaWVudC9zb3VyY2UvZ2xvYnVzX2Z0cF9jbGllbnRfc3RhdGUuYyAgIHwgODA1NiArKysrKysr Ky0tLS0tLS0tLQorIC4uLi9jbGllbnQvc291cmNlL3Rlc3QvbGluZ2VyaW5nLWdldC10ZXN0LmMg ICB8ICAgNDYgKy0KKyAuLi4vc291cmNlL3Rlc3QvbXVsdGlwbGUtYmxvY2stZ2V0LXRlc3QuYyAg ICAgfCAgMTAwICstCisgNCBmaWxlcyBjaGFuZ2VkLCA0NDI3IGluc2VydGlvbnMoKyksIDQ0Mjcg ZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ncmlkZnRwL2NsaWVudC9zb3VyY2UvZ2xvYnVz X2Z0cF9jbGllbnQuaCBiL2dyaWRmdHAvY2xpZW50L3NvdXJjZS9nbG9idXNfZnRwX2NsaWVudC5o CitpbmRleCAyODI3ZDVlOTUuLjNiZWY1NDJhMiAxMDA2NDQKKy0tLSBhL2dyaWRmdHAvY2xpZW50 L3NvdXJjZS9nbG9idXNfZnRwX2NsaWVudC5oCisrKysgYi9ncmlkZnRwL2NsaWVudC9zb3VyY2Uv Z2xvYnVzX2Z0cF9jbGllbnQuaAorQEAgLTU3LDcgKzU3LDcgQEAKKyAgKiBzdHJ1Y3R1cmUgY29u dGFpbnMgY29udGV4dCBpbmZvcm1hdGlvbiBhYm91dCBGVFAgb3BlcmF0aW9ucyB3aGljaCBhcmUK KyAgKiBiZWluZyBleGVjdXRlZCwgYSBjYWNoZSBvZiBGVFAgY29udHJvbCBhbmQgZGF0YSBjb25u ZWN0aW9ucywgYW5kCisgICogaW5mb3JtYXRpb24gYWJvdXQgcGx1Z2lucyB3aGljaCBhcmUgYmVp bmcgdXNlZC4gVGhlIHNwZWNpZmljcyBvZiB0aGUKKy0gKiBjb25uZWN0aW9uIGNhY2hpbmcgYW5k IHBsdWdpbnMgYXJlIGZvdW5kIGluIHRoZSAKKysgKiBjb25uZWN0aW9uIGNhY2hpbmcgYW5kIHBs dWdpbnMgYXJlIGZvdW5kIGluIHRoZQorICAqIEByZWYgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxl YXR0ciBzZWN0aW9uIG9mIHRoaXMgbWFudWFsLgorICAqCisgICogT25jZSB0aGUgaGFuZGxlIGlz IGNyZWF0ZWQsIG9uZSBtYXkgYmVnaW4gdHJhbnNmZXJyaW5nIGZpbGVzIG9yIGRvaW5nCitAQCAt NjgsNyArNjgsNyBAQAorICAqIGNvbW1hbmRzLiAgQWxsIEZUUCBvcGVyYXRpb25zIG1heSBoYXZl IGEgc2V0IG9mIGF0dHJpYnV0ZXMsIGRlZmluZWQKKyAgKiBpbiB0aGUgQHJlZiBnbG9idXNfZnRw X2NsaWVudF9vcGVyYXRpb25hdHRyIHNlY3Rpb24sIGFzc29jaWF0ZWQgd2l0aAorICAqIHRoZW0g dG8gdHVuZSB2YXJpb3VzIEZUUCBwYXJhbWV0ZXJzLiBUaGUgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBm dW5jdGlvbnMKKy0gKiBuZWVkZWQgdG8gcmVzdGFydCBhIGZpbGUgdHJhbnNmZXIgYXJlIGRlc2Ny aWJlZCBpbiB0aGUgCisrICogbmVlZGVkIHRvIHJlc3RhcnQgYSBmaWxlIHRyYW5zZmVyIGFyZSBk ZXNjcmliZWQgaW4gdGhlCisgICogQHJlZiBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0X21hcmtl ciBzZWN0aW9uIG9mIHRoaXMgbWFudWFsLiBGb3Igb3BlcmF0aW9ucworICAqIHdoaWNoIHJlcXVp cmUgdGhlIHVzZXIgdG8gc2VuZCB0byBvciByZWNlaXZlIGRhdGEgZnJvbSBhbiBGVFAgc2VydmVy CisgICogdGhlIG11c3QgY2FsbCB0aGUgZnVuY3Rpb25zIGluIHRoZSBAcmVmIGdsb2J1c19mdHBf Y2xpZW50X2RhdGEgc2VjdGlvbgorQEAgLTE2NywxOCArMTY3LDE4IEBAIHR5cGVkZWYgc3RydWN0 CisgICAgIC8qKgorICAgICAgKiBAaW50ZXJuYWwKKyAgICAgICogTXVzdCBiZSBHTE9CVVNfRlRQ X0NMSUVOVF9TVFJFQU0KKy0gICAgICovIAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0 X3R5cGVfdAkJdHlwZTsKKysgICAgICovCisrICAgIGdsb2J1c19mdHBfY2xpZW50X3Jlc3RhcnRf dHlwZV90ICAgICAgICAgICAgdHlwZTsKKyAgICAgLyoqCisgICAgICAqIEBpbnRlcm5hbAorICAg ICAgKiBUaGUgb2Zmc2V0IG9mIGEgYmluYXJ5IGZpbGUgdHJhbnNmZXIuCisgICAgICAqLworLSAg ICBnbG9idXNfb2ZmX3QJCQkJb2Zmc2V0OworKyAgICBnbG9idXNfb2ZmX3QgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9mZnNldDsKKyAgICAgLyoqCisgICAgICAqIEBpbnRlcm5hbAor ICAgICAgKiBUaGUgb2Zmc2V0IG9mIGFuIEFTQ0lJIGZpbGUgdHJhbnNmZXIuCisgICAgICAqLwor LSAgICBnbG9idXNfb2ZmX3QJCQkJYXNjaWlfb2Zmc2V0OworKyAgICBnbG9idXNfb2ZmX3QgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzY2lpX29mZnNldDsKKyB9CisgZ2xvYnVzX2Z0 cF9jbGllbnRfcmVzdGFydF9zdHJlYW1fdDsKKyAKK0BAIC0xOTgsMTMgKzE5OCwxMyBAQCB0eXBl ZGVmIHN0cnVjdAorICAgICAvKioKKyAgICAgICogQGludGVybmFsCisgICAgICAqIE11c3QgYmUg R0xPQlVTX0ZUUF9DTElFTlRfUkVTVEFSVF9FWFRFTkRFRF9CTE9DSworLSAgICAgKi8gCistICAg IGdsb2J1c19mdHBfY2xpZW50X3Jlc3RhcnRfdHlwZV90CQl0eXBlOworKyAgICAgKi8KKysgICAg Z2xvYnVzX2Z0cF9jbGllbnRfcmVzdGFydF90eXBlX3QgICAgICAgICAgICB0eXBlOworICAgICAv KioKKyAgICAgICogQGludGVybmFsCisgICAgICAqIEEgZmlmbyBvZiBnbG9idXNfaV9mdHBfY2xp ZW50X3JhbmdlX3QgYnl0ZSByYW5nZSBlbnRyaWVzCisgICAgICAqLworLSAgICBnbG9idXNfZmlm b190CQkJCXJhbmdlczsKKysgICAgZ2xvYnVzX2ZpZm9fdCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByYW5nZXM7CisgfQorIGdsb2J1c19mdHBfY2xpZW50X3Jlc3RhcnRfZXh0ZW5kZWRf YmxvY2tfdDsKKyAKK0BAIC0yMjMsOSArMjIzLDkgQEAgZ2xvYnVzX2Z0cF9jbGllbnRfcmVzdGFy dF9leHRlbmRlZF9ibG9ja190OworICAqLworIHR5cGVkZWYgdW5pb24KKyB7CistICAgIGdsb2J1 c19mdHBfY2xpZW50X3Jlc3RhcnRfdHlwZV90CQl0eXBlOworLSAgICBnbG9idXNfZnRwX2NsaWVu dF9yZXN0YXJ0X3N0cmVhbV90CQlzdHJlYW07CistICAgIGdsb2J1c19mdHBfY2xpZW50X3Jlc3Rh cnRfZXh0ZW5kZWRfYmxvY2tfdAlleHRlbmRlZF9ibG9jazsKKysgICAgZ2xvYnVzX2Z0cF9jbGll bnRfcmVzdGFydF90eXBlX3QgICAgICAgICAgICB0eXBlOworKyAgICBnbG9idXNfZnRwX2NsaWVu dF9yZXN0YXJ0X3N0cmVhbV90ICAgICAgICAgIHN0cmVhbTsKKysgICAgZ2xvYnVzX2Z0cF9jbGll bnRfcmVzdGFydF9leHRlbmRlZF9ibG9ja190ICBleHRlbmRlZF9ibG9jazsKKyB9CisgZ2xvYnVz X2Z0cF9jbGllbnRfcmVzdGFydF9tYXJrZXJfdDsKKyAKK0BAIC0yODAsOSArMjgwLDkgQEAgdHlw ZWRlZiBzdHJ1Y3QgZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fdCAqIGdsb2J1c19mdHBfY2xp ZW50X3BsdWdpbl90OworICAqICAgICAgICBvciBHTE9CVVNfU1VDQ0VTUywgaWYgdGhlIG9wZXJh dGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgorICAqLworIHR5cGVkZWYgdm9pZCAoKmdsb2J1 c19mdHBfY2xpZW50X2NvbXBsZXRlX2NhbGxiYWNrX3QpICgKKy0gICAgdm9pZCAqCQkJCQl1c2Vy X2FyZywKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICBn bG9idXNfb2JqZWN0X3QgKgkJCQllcnJvcik7CisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdXNlcl9hcmcsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X2hh bmRsZV90ICogICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICBnbG9idXNfb2JqZWN0X3QgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKTsKKyAKKyAvKioKKyAgKiBEYXRhIENhbGxi YWNrLgorQEAgLTMxMywxMyArMzEzLDEzIEBAIHR5cGVkZWYgdm9pZCAoKmdsb2J1c19mdHBfY2xp ZW50X2NvbXBsZXRlX2NhbGxiYWNrX3QpICgKKyAgKiAgICAgICAgR0xPQlVTX1RSVUUgZm9yIG11 bHRpcGxlIGNhbGxiYWNrcy4KKyAgKi8KKyB0eXBlZGVmIHZvaWQgKCpnbG9idXNfZnRwX2NsaWVu dF9kYXRhX2NhbGxiYWNrX3QpICgKKy0gICAgdm9pZCAqCQkJCQl1c2VyX2FyZywKKy0gICAgZ2xv YnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICBnbG9idXNfb2JqZWN0X3Qg KgkJCQllcnJvciwKKy0gICAgZ2xvYnVzX2J5dGVfdCAqCQkJCWJ1ZmZlciwKKy0gICAgZ2xvYnVz X3NpemVfdAkJCQlsZW5ndGgsCistICAgIGdsb2J1c19vZmZfdAkJCQlvZmZzZXQsCistICAgIGds b2J1c19ib29sX3QJCQkJZW9mKTsKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1c2VyX2FyZywKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3Qg KiAgICAgICAgICAgICAgICBoYW5kbGUsCisrICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXJyb3IsCisrICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYnVmZmVyLAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxlbmd0aCwKKysgICAgZ2xvYnVzX29mZl90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvZmZzZXQsCisrICAgIGdsb2J1c19ib29sX3QgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW9mKTsKKyAKKyAvKioKKyAgKiBAYnJpZWYgT3BlcmF0aW9u IEF0dHJpYnV0ZXMuCitAQCAtMzY2LDM4ICszNjYsMzggQEAgdHlwZWRlZiBzdHJ1Y3QKKyAjaWZu ZGVmIERPWFlHRU4KKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0 X21hcmtlcl9pbml0KAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0X21hcmtlcl90ICoJ bWFya2VyKTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfcmVzdGFydF9tYXJrZXJfdCAqICAgICAg ICBtYXJrZXIpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X3Jlc3Rh cnRfbWFya2VyX2Rlc3Ryb3koCistICAgIGdsb2J1c19mdHBfY2xpZW50X3Jlc3RhcnRfbWFya2Vy X3QgKgltYXJrZXIpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0X21hcmtlcl90ICog ICAgICAgIG1hcmtlcik7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRf cmVzdGFydF9tYXJrZXJfY29weSgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfcmVzdGFydF9tYXJr ZXJfdCAqCW5ld19tYXJrZXIsCistICAgIGdsb2J1c19mdHBfY2xpZW50X3Jlc3RhcnRfbWFya2Vy X3QgKgltYXJrZXIpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0X21hcmtlcl90ICog ICAgICAgIG5ld19tYXJrZXIsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X3Jlc3RhcnRfbWFya2Vy X3QgKiAgICAgICAgbWFya2VyKTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2Ns aWVudF9yZXN0YXJ0X21hcmtlcl9pbnNlcnRfcmFuZ2UoCistICAgIGdsb2J1c19mdHBfY2xpZW50 X3Jlc3RhcnRfbWFya2VyX3QgKgltYXJrZXIsCistICAgIGdsb2J1c19vZmZfdAkJCQlvZmZzZXQs CistICAgIGdsb2J1c19vZmZfdAkJCQllbmRfb2Zmc2V0KTsKKysgICAgZ2xvYnVzX2Z0cF9jbGll bnRfcmVzdGFydF9tYXJrZXJfdCAqICAgICAgICBtYXJrZXIsCisrICAgIGdsb2J1c19vZmZfdCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LAorKyAgICBnbG9idXNfb2ZmX3Qg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF9vZmZzZXQpOworIAorIGdsb2J1c19y ZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X3Jlc3RhcnRfbWFya2VyX3NldF9vZmZzZXQoCist ICAgIGdsb2J1c19mdHBfY2xpZW50X3Jlc3RhcnRfbWFya2VyX3QgKgltYXJrZXIsCistICAgIGds b2J1c19vZmZfdAkJCQlvZmZzZXQpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0X21h cmtlcl90ICogICAgICAgIG1hcmtlciwKKysgICAgZ2xvYnVzX29mZl90ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvZmZzZXQpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19m dHBfY2xpZW50X3Jlc3RhcnRfbWFya2VyX3NldF9hc2NpaV9vZmZzZXQoCistICAgIGdsb2J1c19m dHBfY2xpZW50X3Jlc3RhcnRfbWFya2VyX3QgKgltYXJrZXIsCistICAgIGdsb2J1c19vZmZfdAkJ CQlvZmZzZXQsCistICAgIGdsb2J1c19vZmZfdAkJCQlhc2NpaV9vZmZzZXQpOworKyAgICBnbG9i dXNfZnRwX2NsaWVudF9yZXN0YXJ0X21hcmtlcl90ICogICAgICAgIG1hcmtlciwKKysgICAgZ2xv YnVzX29mZl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsCisrICAgIGds b2J1c19vZmZfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNjaWlfb2Zmc2V0KTsK KyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0X21hcmtlcl9n ZXRfdG90YWwoCistICAgIGdsb2J1c19mdHBfY2xpZW50X3Jlc3RhcnRfbWFya2VyX3QgKgltYXJr ZXIsCistICAgIGdsb2J1c19vZmZfdCAqCQkJCXRvdGFsX2J5dGVzKTsKKysgICAgZ2xvYnVzX2Z0 cF9jbGllbnRfcmVzdGFydF9tYXJrZXJfdCAqICAgICAgICBtYXJrZXIsCisrICAgIGdsb2J1c19v ZmZfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfYnl0ZXMpOworIAorIGds b2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X3Jlc3RhcnRfbWFya2VyX2dldF9maXJz dF9ibG9jaygKK0BAIC00MDcsMTMgKzQwNywxMyBAQCBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0 X21hcmtlcl9nZXRfZmlyc3RfYmxvY2soCisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0 cF9jbGllbnRfcmVzdGFydF9tYXJrZXJfdG9fc3RyaW5nKAorLSAgICBnbG9idXNfZnRwX2NsaWVu dF9yZXN0YXJ0X21hcmtlcl90ICoJbWFya2VyLAorLSAgICBjaGFyICoqCQkJCQltYXJrZXJfc3Ry aW5nKTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfcmVzdGFydF9tYXJrZXJfdCAqICAgICAgICBt YXJrZXIsCisrICAgIGNoYXIgKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bWFya2VyX3N0cmluZyk7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRf cmVzdGFydF9tYXJrZXJfZnJvbV9zdHJpbmcoCistICAgIGdsb2J1c19mdHBfY2xpZW50X3Jlc3Rh cnRfbWFya2VyX3QgKgltYXJrZXIsCistICAgIGNvbnN0IGNoYXIgKgkJCQltYXJrZXJfc3RyaW5n KTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfcmVzdGFydF9tYXJrZXJfdCAqICAgICAgICBtYXJr ZXIsCisrICAgIGNvbnN0IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFy a2VyX3N0cmluZyk7CisgI2VuZGlmCisgCisgLyoqCitAQCAtNDM0LDM5ICs0MzQsMzkgQEAgZ2xv YnVzX2Z0cF9jbGllbnRfcmVzdGFydF9tYXJrZXJfZnJvbV9zdHJpbmcoCisgI2lmbmRlZiBET1hZ R0VOCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX2luaXQoCist ICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgZ2xvYnVzX2Z0 cF9jbGllbnRfaGFuZGxlYXR0cl90KgkJYXR0cik7CisrICAgIGdsb2J1c19mdHBfY2xpZW50X2hh bmRsZV90ICogICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICBnbG9idXNfZnRwX2NsaWVudF9o YW5kbGVhdHRyX3QqICAgICAgICAgICAgIGF0dHIpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGds b2J1c19mdHBfY2xpZW50X2hhbmRsZV9kZXN0cm95KAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9o YW5kbGVfdCAqCQloYW5kbGUpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVfdCAqICAg ICAgICAgICAgICAgIGhhbmRsZSk7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9j bGllbnRfaGFuZGxlX2JvcnJvd19jb25uZWN0aW9uKAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9o YW5kbGVfdCAqCQlmcm9tX2hhbmRsZSwKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3Qg KiAgICAgICAgICAgICAgICBmcm9tX2hhbmRsZSwKKyAgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmcm9tX2lzX3NvdXJjZSwKKy0gICAgZ2xvYnVzX2Z0cF9j bGllbnRfaGFuZGxlX3QgKgkJdG9faGFuZGxlLAorKyAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5k bGVfdCAqICAgICAgICAgICAgICAgIHRvX2hhbmRsZSwKKyAgICAgZ2xvYnVzX2Jvb2xfdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0b19pc19zb3VyY2UpOworIAorIGdsb2J1c19yZXN1 bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV9jYWNoZV91cmxfc3RhdGUoCistICAgIGds b2J1c19mdHBfY2xpZW50X2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgY29uc3QgY2hhciAqCQkJ CXVybCk7CisrICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV90ICogICAgICAgICAgICAgICAg aGFuZGxlLAorKyAgICBjb25zdCBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVybCk7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX2Zs dXNoX3VybF9zdGF0ZSgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJaGFuZGxl LAorLSAgICBjb25zdCBjaGFyICoJCQkJdXJsKTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFu ZGxlX3QgKiAgICAgICAgICAgICAgICBoYW5kbGUsCisrICAgIGNvbnN0IGNoYXIgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdXJsKTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9i dXNfZnRwX2NsaWVudF9oYW5kbGVfc2V0X3VzZXJfcG9pbnRlcigKKy0gICAgZ2xvYnVzX2Z0cF9j bGllbnRfaGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICB2b2lkICoJCQkJCXVzZXJfcG9pbnRlcik7 CisrICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV90ICogICAgICAgICAgICAgICAgaGFuZGxl LAorKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJf cG9pbnRlcik7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxl X2dldF91c2VyX3BvaW50ZXIoCistICAgIGNvbnN0IGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV90 ICoJCWhhbmRsZSwKKy0gICAgdm9pZCAqKgkJCQkJdXNlcl9wb2ludGVyKTsKKysgICAgY29uc3Qg Z2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKiAgICAgICAgICBoYW5kbGUsCisrICAgIHZvaWQg KiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9wb2ludGVyKTsKKyAK KyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVfZ2V0X3Jlc3RhcnRf bWFya2VyKAorQEAgLTQ3NSwxMyArNDc1LDEzIEBAIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV9n ZXRfcmVzdGFydF9tYXJrZXIoCisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGll bnRfaGFuZGxlX2FkZF9wbHVnaW4oCistICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV90ICoJ CWhhbmRsZSwKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfcGx1Z2luX3QgKgkJcGx1Z2luKTsKKysg ICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKiAgICAgICAgICAgICAgICBoYW5kbGUsCisr ICAgIGdsb2J1c19mdHBfY2xpZW50X3BsdWdpbl90ICogICAgICAgICAgICAgICAgcGx1Z2luKTsK KyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVfcmVtb3ZlX3Bs dWdpbigKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICBn bG9idXNfZnRwX2NsaWVudF9wbHVnaW5fdCAqCQlwbHVnaW4pOworKyAgICBnbG9idXNfZnRwX2Ns aWVudF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgZ2xvYnVzX2Z0cF9j bGllbnRfcGx1Z2luX3QgKiAgICAgICAgICAgICAgICBwbHVnaW4pOworIAorICNlbmRpZgorIAor QEAgLTUwMiw0NiArNTAyLDQ2IEBAIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV9yZW1vdmVfcGx1 Z2luKAorICNpZm5kZWYgRE9YWUdFTgorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xp ZW50X2hhbmRsZWF0dHJfaW5pdCgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl90 ICoJCWF0dHIpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX3QgKiAgICAgICAg ICAgIGF0dHIpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X2hhbmRs ZWF0dHJfZGVzdHJveSgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl90ICoJCWF0 dHIpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX3QgKiAgICAgICAgICAgIGF0 dHIpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZWF0dHJf Y29weSgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl90ICoJCWRlc3QsCistICAg IGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZWF0dHJfdCAqCQlzcmMpOworKyAgICBnbG9idXNfZnRw X2NsaWVudF9oYW5kbGVhdHRyX3QgKiAgICAgICAgICAgIGRlc3QsCisrICAgIGdsb2J1c19mdHBf Y2xpZW50X2hhbmRsZWF0dHJfdCAqICAgICAgICAgICAgc3JjKTsKKyAKKyBnbG9idXNfcmVzdWx0 X3QKKyBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX2FkZF9jYWNoZWRfdXJsKAorLSAgICBn bG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX3QgKgkJYXR0ciwKKy0gICAgY29uc3QgY2hhciAq CQkJCXVybCk7CisrICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZWF0dHJfdCAqICAgICAgICAg ICAgYXR0ciwKKysgICAgY29uc3QgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1cmwpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZWF0 dHJfcmVtb3ZlX2NhY2hlZF91cmwoCistICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZWF0dHJf dCAqCQlhdHRyLAorLSAgICBjb25zdCBjaGFyICoJCQkJdXJsKTsKKysgICAgZ2xvYnVzX2Z0cF9j bGllbnRfaGFuZGxlYXR0cl90ICogICAgICAgICAgICBhdHRyLAorKyAgICBjb25zdCBjaGFyICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCk7CisgCisgZ2xvYnVzX3Jlc3VsdF90 CisgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl9zZXRfY2FjaGVfYWxsKAorLSAgICBnbG9i dXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX3QgKgkJYXR0ciwKKy0gICAgZ2xvYnVzX2Jvb2xfdAkJ CQljYWNoZV9hbGwpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX3QgKiAgICAg ICAgICAgIGF0dHIsCisrICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2FjaGVfYWxsKTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVu dF9oYW5kbGVhdHRyX2dldF9jYWNoZV9hbGwoCistICAgIGNvbnN0IGdsb2J1c19mdHBfY2xpZW50 X2hhbmRsZWF0dHJfdCAqCWF0dHIsCistICAgIGdsb2J1c19ib29sX3QgKgkJCQljYWNoZV9hbGwp OworKyAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX3QgKiAgICAgIGF0dHIs CisrICAgIGdsb2J1c19ib29sX3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVf YWxsKTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRy X3NldF9yZmMxNzM4X3VybCgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl90ICoJ CWF0dHIsCistICAgIGdsb2J1c19ib29sX3QJCQkJcmZjMTczOF91cmwpOworKyAgICBnbG9idXNf ZnRwX2NsaWVudF9oYW5kbGVhdHRyX3QgKiAgICAgICAgICAgIGF0dHIsCisrICAgIGdsb2J1c19i b29sX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmZjMTczOF91cmwpOworIAorIGds b2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZWF0dHJfZ2V0X3JmYzE3Mzhf dXJsKAorLSAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX3QgKglhdHRyLAor LSAgICBnbG9idXNfYm9vbF90ICoJCQkJcmZjMTczOF91cmwpOworKyAgICBjb25zdCBnbG9idXNf ZnRwX2NsaWVudF9oYW5kbGVhdHRyX3QgKiAgICAgIGF0dHIsCisrICAgIGdsb2J1c19ib29sX3Qg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmZjMTczOF91cmwpOworIAorIHR5cGVkZWYg dm9pZCAoKmdsb2J1c19mdHBfY2xpZW50X3BpcGVsaW5lX2NhbGxiYWNrX3QpKAorICAgICBnbG9i dXNfZnRwX2NsaWVudF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgIGhhbmRsZSwKK0BAIC01NjUs MTggKzU2NSwxOCBAQCBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX2dldF9waXBlbGluZSgK KyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX3NldF9n cmlkZnRwMigKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl90ICoJCWF0dHIsCist ICAgIGdsb2J1c19ib29sX3QJCQkJZ3JpZGZ0cDIpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9o YW5kbGVhdHRyX3QgKiAgICAgICAgICAgIGF0dHIsCisrICAgIGdsb2J1c19ib29sX3QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZGZ0cDIpOworIAorIGdsb2J1c19yZXN1bHRfdAor IGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZWF0dHJfZ2V0X2dyaWRmdHAyKAorLSAgICBjb25zdCBn bG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX3QgKglhdHRyLAorLSAgICBnbG9idXNfYm9vbF90 ICoJCQkJZ3JpZGZ0cDIpOworKyAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRy X3QgKiAgICAgIGF0dHIsCisrICAgIGdsb2J1c19ib29sX3QgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3JpZGZ0cDIpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xp ZW50X2hhbmRsZWF0dHJfc2V0X25ldGxvZ2dlcigKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFu ZGxlYXR0cl90ICoJCWF0dHIsCistICAgIGdsb2J1c19uZXRsb2dnZXJfaGFuZGxlX3QgKgkgICAg ICAgICAgICAgICAgbmxfaGFuZGxlKTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0 cl90ICogICAgICAgICAgICBhdHRyLAorKyAgICBnbG9idXNfbmV0bG9nZ2VyX2hhbmRsZV90ICog ICAgICAgICAgICAgICAgIG5sX2hhbmRsZSk7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVz X2Z0cF9jbGllbnRfaGFuZGxlYXR0cl9zZXRfY2xpZW50aW5mbygKK0BAIC02MDEsMTMgKzYwMSwx MyBAQCBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX3NldF9uZXRsb2dnZXJfZnRwX2lvKAor IAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZWF0dHJfcmVtb3Zl X3BsdWdpbigKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl90ICoJCWF0dHIsCist ICAgIGdsb2J1c19mdHBfY2xpZW50X3BsdWdpbl90ICoJCXBsdWdpbik7CisrICAgIGdsb2J1c19m dHBfY2xpZW50X2hhbmRsZWF0dHJfdCAqICAgICAgICAgICAgYXR0ciwKKysgICAgZ2xvYnVzX2Z0 cF9jbGllbnRfcGx1Z2luX3QgKiAgICAgICAgICAgICAgICBwbHVnaW4pOworIAorIGdsb2J1c19y ZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZWF0dHJfYWRkX3BsdWdpbigKKy0gICAg Z2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl90ICoJCWF0dHIsCistICAgIGdsb2J1c19mdHBf Y2xpZW50X3BsdWdpbl90ICoJCXBsdWdpbik7CisrICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRs ZWF0dHJfdCAqICAgICAgICAgICAgYXR0ciwKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfcGx1Z2lu X3QgKiAgICAgICAgICAgICAgICBwbHVnaW4pOworICNlbmRpZgorIAorIC8qKgorQEAgLTYyNCwx MiArNjI0LDEyIEBAIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZWF0dHJfYWRkX3BsdWdpbigKKyAK KyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9jaG1vZCgKKy0gICAgZ2xvYnVz X2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJdV9oYW5kbGUsCistICAgIGNvbnN0IGNoYXIgKgkJCQl1 cmwsCistICAgIGludCAgICAgICAgIAkJCQltb2RlLAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9v cGVyYXRpb25hdHRyX3QgKgkJYXR0ciwKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfY29tcGxldGVf Y2FsbGJhY2tfdAljb21wbGV0ZV9jYWxsYmFjaywKKy0gICAgdm9pZCAqCQkJCQljYWxsYmFja19h cmcpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgIHVf aGFuZGxlLAorKyAgICBjb25zdCBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVybCwKKysgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt b2RlLAorKyAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKiAgICAgICAgIGF0 dHIsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X2NvbXBsZXRlX2NhbGxiYWNrX3QgICAgICAgY29t cGxldGVfY2FsbGJhY2ssCisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2FsbGJhY2tfYXJnKTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRw X2NsaWVudF9jaGdycCgKK0BAIC02NjAsNjMgKzY2MCw2MyBAQCBnbG9idXNfZnRwX2NsaWVudF9z eW1saW5rKAorIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X2Nrc20oCist ICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgY29uc3QgY2hh ciAqCQkJCXVybCwKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCWF0 dHIsCistICAgIGNoYXIgKgkJCQkJY2tzbSwKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxl X3QgKiAgICAgICAgICAgICAgICBoYW5kbGUsCisrICAgIGNvbnN0IGNoYXIgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdXJsLAorKyAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRp b25hdHRyX3QgKiAgICAgICAgIGF0dHIsCisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2tzbSwKKyAgICAgZ2xvYnVzX29mZl90ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvZmZzZXQsCisgICAgIGdsb2J1c19vZmZfdCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGVuZ3RoLAorLSAgICBjb25zdCBjaGFyICoJCQkJYWxnb3JpdGht LAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9jb21wbGV0ZV9jYWxsYmFja190CWNvbXBsZXRlX2Nh bGxiYWNrLAorLSAgICB2b2lkICoJCQkJCWNhbGxiYWNrX2FyZyk7CisrICAgIGNvbnN0IGNoYXIg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxnb3JpdGhtLAorKyAgICBnbG9idXNf ZnRwX2NsaWVudF9jb21wbGV0ZV9jYWxsYmFja190ICAgICAgIGNvbXBsZXRlX2NhbGxiYWNrLAor KyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNr X2FyZyk7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfZGVsZXRlKAor LSAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVfdCAqCQloYW5kbGUsCistICAgIGNvbnN0IGNo YXIgKgkJCQl1cmwsCistICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqCQlh dHRyLAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9jb21wbGV0ZV9jYWxsYmFja190CWNvbXBsZXRl X2NhbGxiYWNrLAorLSAgICB2b2lkICoJCQkJCWNhbGxiYWNrX2FyZyk7CisrICAgIGdsb2J1c19m dHBfY2xpZW50X2hhbmRsZV90ICogICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICBjb25zdCBj aGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCwKKysgICAgZ2xvYnVzX2Z0 cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICogICAgICAgICBhdHRyLAorKyAgICBnbG9idXNfZnRw X2NsaWVudF9jb21wbGV0ZV9jYWxsYmFja190ICAgICAgIGNvbXBsZXRlX2NhbGxiYWNrLAorKyAg ICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2Fy Zyk7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfbWtkaXIoCistICAg IGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgY29uc3QgY2hhciAq CQkJCXVybCwKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCWF0dHIs CistICAgIGdsb2J1c19mdHBfY2xpZW50X2NvbXBsZXRlX2NhbGxiYWNrX3QJY29tcGxldGVfY2Fs bGJhY2ssCistICAgIHZvaWQgKgkJCQkJY2FsbGJhY2tfYXJnKTsKKysgICAgZ2xvYnVzX2Z0cF9j bGllbnRfaGFuZGxlX3QgKiAgICAgICAgICAgICAgICBoYW5kbGUsCisrICAgIGNvbnN0IGNoYXIg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsLAorKyAgICBnbG9idXNfZnRwX2Ns aWVudF9vcGVyYXRpb25hdHRyX3QgKiAgICAgICAgIGF0dHIsCisrICAgIGdsb2J1c19mdHBfY2xp ZW50X2NvbXBsZXRlX2NhbGxiYWNrX3QgICAgICAgY29tcGxldGVfY2FsbGJhY2ssCisrICAgIHZv aWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfYXJnKTsK KyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9ybWRpcigKKy0gICAgZ2xv YnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICBjb25zdCBjaGFyICoJCQkJ dXJsLAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKgkJYXR0ciwKKy0g ICAgZ2xvYnVzX2Z0cF9jbGllbnRfY29tcGxldGVfY2FsbGJhY2tfdAljb21wbGV0ZV9jYWxsYmFj aywKKy0gICAgdm9pZCAqCQkJCQljYWxsYmFja19hcmcpOworKyAgICBnbG9idXNfZnRwX2NsaWVu dF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgY29uc3QgY2hhciAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisrICAgIGdsb2J1c19mdHBfY2xpZW50 X29wZXJhdGlvbmF0dHJfdCAqICAgICAgICAgYXR0ciwKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRf Y29tcGxldGVfY2FsbGJhY2tfdCAgICAgICBjb21wbGV0ZV9jYWxsYmFjaywKKysgICAgdm9pZCAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19hcmcpOworIAor IGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X2xpc3QoCistICAgIGdsb2J1c19m dHBfY2xpZW50X2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgY29uc3QgY2hhciAqCQkJCXVybCwK Ky0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCWF0dHIsCistICAgIGds b2J1c19mdHBfY2xpZW50X2NvbXBsZXRlX2NhbGxiYWNrX3QJY29tcGxldGVfY2FsbGJhY2ssCist ICAgIHZvaWQgKgkJCQkJY2FsbGJhY2tfYXJnKTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFu ZGxlX3QgKiAgICAgICAgICAgICAgICBoYW5kbGUsCisrICAgIGNvbnN0IGNoYXIgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdXJsLAorKyAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVy YXRpb25hdHRyX3QgKiAgICAgICAgIGF0dHIsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X2NvbXBs ZXRlX2NhbGxiYWNrX3QgICAgICAgY29tcGxldGVfY2FsbGJhY2ssCisrICAgIHZvaWQgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfYXJnKTsKKyAKKyBnbG9i dXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF92ZXJib3NlX2xpc3QoCistICAgIGdsb2J1 c19mdHBfY2xpZW50X2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgY29uc3QgY2hhciAqCQkJCXVy bCwKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCWF0dHIsCistICAg IGdsb2J1c19mdHBfY2xpZW50X2NvbXBsZXRlX2NhbGxiYWNrX3QJY29tcGxldGVfY2FsbGJhY2ss CistICAgIHZvaWQgKgkJCQkJY2FsbGJhY2tfYXJnKTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRf aGFuZGxlX3QgKiAgICAgICAgICAgICAgICBoYW5kbGUsCisrICAgIGNvbnN0IGNoYXIgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsLAorKyAgICBnbG9idXNfZnRwX2NsaWVudF9v cGVyYXRpb25hdHRyX3QgKiAgICAgICAgIGF0dHIsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X2Nv bXBsZXRlX2NhbGxiYWNrX3QgICAgICAgY29tcGxldGVfY2FsbGJhY2ssCisrICAgIHZvaWQgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfYXJnKTsKKyAKKyBn bG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9tYWNoaW5lX2xpc3QoCistICAgIGds b2J1c19mdHBfY2xpZW50X2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgY29uc3QgY2hhciAqCQkJ CXVybCwKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCWF0dHIsCist ICAgIGdsb2J1c19mdHBfY2xpZW50X2NvbXBsZXRlX2NhbGxiYWNrX3QJY29tcGxldGVfY2FsbGJh Y2ssCistICAgIHZvaWQgKgkJCQkJY2FsbGJhY2tfYXJnKTsKKysgICAgZ2xvYnVzX2Z0cF9jbGll bnRfaGFuZGxlX3QgKiAgICAgICAgICAgICAgICBoYW5kbGUsCisrICAgIGNvbnN0IGNoYXIgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsLAorKyAgICBnbG9idXNfZnRwX2NsaWVu dF9vcGVyYXRpb25hdHRyX3QgKiAgICAgICAgIGF0dHIsCisrICAgIGdsb2J1c19mdHBfY2xpZW50 X2NvbXBsZXRlX2NhbGxiYWNrX3QgICAgICAgY29tcGxldGVfY2FsbGJhY2ssCisrICAgIHZvaWQg KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfYXJnKTsKKyAK KyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9yZWN1cnNpdmVfbGlzdCgKK0BA IC03MjgsMTA2ICs3MjgsMTA2IEBAIGdsb2J1c19mdHBfY2xpZW50X3JlY3Vyc2l2ZV9saXN0KAor IAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X21sc3QoCistICAgIGdsb2J1 c19mdHBfY2xpZW50X2hhbmRsZV90ICoJCXVfaGFuZGxlLAorLSAgICBjb25zdCBjaGFyICoJCQkJ dXJsLAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKgkJYXR0ciwKKy0g ICAgZ2xvYnVzX2J5dGVfdCAqKiAgICAJCQltbHN0X2J1ZmZlciwKKysgICAgZ2xvYnVzX2Z0cF9j bGllbnRfaGFuZGxlX3QgKiAgICAgICAgICAgICAgICB1X2hhbmRsZSwKKysgICAgY29uc3QgY2hh ciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisrICAgIGdsb2J1c19mdHBf Y2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAgICAgICAgYXR0ciwKKysgICAgZ2xvYnVzX2J5dGVf dCAqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbHN0X2J1ZmZlciwKKyAgICAgZ2xvYnVz X3NpemVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbHN0X2J1ZmZlcl9sZW5ndGgs CistICAgIGdsb2J1c19mdHBfY2xpZW50X2NvbXBsZXRlX2NhbGxiYWNrX3QJY29tcGxldGVfY2Fs bGJhY2ssCistICAgIHZvaWQgKgkJCQkJY2FsbGJhY2tfYXJnKTsKKysgICAgZ2xvYnVzX2Z0cF9j bGllbnRfY29tcGxldGVfY2FsbGJhY2tfdCAgICAgICBjb21wbGV0ZV9jYWxsYmFjaywKKysgICAg dm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19hcmcp OworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X2N3ZCgKKy0gICAgZ2xv YnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJdV9oYW5kbGUsCistICAgIGNvbnN0IGNoYXIgKgkJ CQl1cmwsCistICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqCQlhdHRyLAor LSAgICBnbG9idXNfYnl0ZV90ICoqICAgIAkJCWN3ZF9idWZmZXIsCisrICAgIGdsb2J1c19mdHBf Y2xpZW50X2hhbmRsZV90ICogICAgICAgICAgICAgICAgdV9oYW5kbGUsCisrICAgIGNvbnN0IGNo YXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsLAorKyAgICBnbG9idXNfZnRw X2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKiAgICAgICAgIGF0dHIsCisrICAgIGdsb2J1c19ieXRl X3QgKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkX2J1ZmZlciwKKyAgICAgZ2xvYnVz X3NpemVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2RfYnVmZmVyX2xlbmd0aCwK Ky0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfY29tcGxldGVfY2FsbGJhY2tfdAljb21wbGV0ZV9jYWxs YmFjaywKKy0gICAgdm9pZCAqCQkJCQljYWxsYmFja19hcmcpOworKyAgICBnbG9idXNfZnRwX2Ns aWVudF9jb21wbGV0ZV9jYWxsYmFja190ICAgICAgIGNvbXBsZXRlX2NhbGxiYWNrLAorKyAgICB2 b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2FyZyk7 CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfc3RhdCgKKy0gICAgZ2xv YnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJdV9oYW5kbGUsCistICAgIGNvbnN0IGNoYXIgKgkJ CQl1cmwsCistICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqCQlhdHRyLAor LSAgICBnbG9idXNfYnl0ZV90ICoqICAgIAkJCXN0YXRfYnVmZmVyLAorKyAgICBnbG9idXNfZnRw X2NsaWVudF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgIHVfaGFuZGxlLAorKyAgICBjb25zdCBj aGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCwKKysgICAgZ2xvYnVzX2Z0 cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICogICAgICAgICBhdHRyLAorKyAgICBnbG9idXNfYnl0 ZV90ICoqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRfYnVmZmVyLAorICAgICBnbG9i dXNfc2l6ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRfYnVmZmVyX2xlbmd0 aCwKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfY29tcGxldGVfY2FsbGJhY2tfdAljb21wbGV0ZV9j YWxsYmFjaywKKy0gICAgdm9pZCAqCQkJCQljYWxsYmFja19hcmcpOworKyAgICBnbG9idXNfZnRw X2NsaWVudF9jb21wbGV0ZV9jYWxsYmFja190ICAgICAgIGNvbXBsZXRlX2NhbGxiYWNrLAorKyAg ICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2Fy Zyk7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfbW92ZSgKKy0gICAg Z2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICBjb25zdCBjaGFyICoJ CQkJc291cmNlX3VybCwKKy0gICAgY29uc3QgY2hhciAqCQkJCWRlc3RfdXJsLAorLSAgICBnbG9i dXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKgkJYXR0ciwKKy0gICAgZ2xvYnVzX2Z0cF9j bGllbnRfY29tcGxldGVfY2FsbGJhY2tfdAljb21wbGV0ZV9jYWxsYmFjaywKKy0gICAgdm9pZCAq CQkJCQljYWxsYmFja19hcmcpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVfdCAqICAg ICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgY29uc3QgY2hhciAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzb3VyY2VfdXJsLAorKyAgICBjb25zdCBjaGFyICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRlc3RfdXJsLAorKyAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVy YXRpb25hdHRyX3QgKiAgICAgICAgIGF0dHIsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X2NvbXBs ZXRlX2NhbGxiYWNrX3QgICAgICAgY29tcGxldGVfY2FsbGJhY2ssCisrICAgIHZvaWQgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfYXJnKTsKKyAKKyBnbG9i dXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9nZXQoCistICAgIGdsb2J1c19mdHBfY2xp ZW50X2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgY29uc3QgY2hhciAqCQkJCXVybCwKKy0gICAg Z2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCWF0dHIsCistICAgIGdsb2J1c19m dHBfY2xpZW50X3Jlc3RhcnRfbWFya2VyX3QgKglyZXN0YXJ0LAorLSAgICBnbG9idXNfZnRwX2Ns aWVudF9jb21wbGV0ZV9jYWxsYmFja190CWNvbXBsZXRlX2NhbGxiYWNrLAorLSAgICB2b2lkICoJ CQkJCWNhbGxiYWNrX2FyZyk7CisrICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV90ICogICAg ICAgICAgICAgICAgaGFuZGxlLAorKyAgICBjb25zdCBjaGFyICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVybCwKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90 ICogICAgICAgICBhdHRyLAorKyAgICBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0X21hcmtlcl90 ICogICAgICAgIHJlc3RhcnQsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X2NvbXBsZXRlX2NhbGxi YWNrX3QgICAgICAgY29tcGxldGVfY2FsbGJhY2ssCisrICAgIHZvaWQgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfYXJnKTsKKyAKKyBnbG9idXNfcmVzdWx0 X3QKKyBnbG9idXNfZnRwX2NsaWVudF9wdXQoCistICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRs ZV90ICoJCWhhbmRsZSwKKy0gICAgY29uc3QgY2hhciAqCQkJCXVybCwKKy0gICAgZ2xvYnVzX2Z0 cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCWF0dHIsCistICAgIGdsb2J1c19mdHBfY2xpZW50 X3Jlc3RhcnRfbWFya2VyX3QgKglyZXN0YXJ0LAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9jb21w bGV0ZV9jYWxsYmFja190CWNvbXBsZXRlX2NhbGxiYWNrLAorLSAgICB2b2lkICoJCQkJCWNhbGxi YWNrX2FyZyk7CisrICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV90ICogICAgICAgICAgICAg ICAgaGFuZGxlLAorKyAgICBjb25zdCBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVybCwKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICogICAgICAg ICBhdHRyLAorKyAgICBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0X21hcmtlcl90ICogICAgICAg IHJlc3RhcnQsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X2NvbXBsZXRlX2NhbGxiYWNrX3QgICAg ICAgY29tcGxldGVfY2FsbGJhY2ssCisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2FsbGJhY2tfYXJnKTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9i dXNfZnRwX2NsaWVudF90aGlyZF9wYXJ0eV90cmFuc2ZlcigKKy0gICAgZ2xvYnVzX2Z0cF9jbGll bnRfaGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICBjb25zdCBjaGFyICoJCQkJc291cmNlX3VybCwK Ky0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCXNvdXJjZV9hdHRyLAor LSAgICBjb25zdCBjaGFyICoJCQkJZGVzdF91cmwsCistICAgIGdsb2J1c19mdHBfY2xpZW50X29w ZXJhdGlvbmF0dHJfdCAqCQlkZXN0X2F0dHIsCistICAgIGdsb2J1c19mdHBfY2xpZW50X3Jlc3Rh cnRfbWFya2VyX3QgKglyZXN0YXJ0LAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9jb21wbGV0ZV9j YWxsYmFja190CWNvbXBsZXRlX2NhbGxiYWNrLAorLSAgICB2b2lkICoJCQkJCWNhbGxiYWNrX2Fy Zyk7CisrICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV90ICogICAgICAgICAgICAgICAgaGFu ZGxlLAorKyAgICBjb25zdCBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNv dXJjZV91cmwsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAgICAg ICAgc291cmNlX2F0dHIsCisrICAgIGNvbnN0IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVzdF91cmwsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJf dCAqICAgICAgICAgZGVzdF9hdHRyLAorKyAgICBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0X21h cmtlcl90ICogICAgICAgIHJlc3RhcnQsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X2NvbXBsZXRl X2NhbGxiYWNrX3QgICAgICAgY29tcGxldGVfY2FsbGJhY2ssCisrICAgIHZvaWQgKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfYXJnKTsKKyAKKyBnbG9idXNf cmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9wYXJ0aWFsX2dldCgKKy0gICAgZ2xvYnVzX2Z0 cF9jbGllbnRfaGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICBjb25zdCBjaGFyICoJCQkJdXJsLAor LSAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKgkJYXR0ciwKKy0gICAgZ2xv YnVzX2Z0cF9jbGllbnRfcmVzdGFydF9tYXJrZXJfdCAqCXJlc3RhcnQsCistICAgIGdsb2J1c19v ZmZfdAkJCQlwYXJ0aWFsX29mZnNldCwKKy0gICAgZ2xvYnVzX29mZl90CQkJCXBhcnRpYWxfZW5k X29mZnNldCwKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfY29tcGxldGVfY2FsbGJhY2tfdAljb21w bGV0ZV9jYWxsYmFjaywKKy0gICAgdm9pZCAqCQkJCQljYWxsYmFja19hcmcpOworKyAgICBnbG9i dXNfZnRwX2NsaWVudF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgY29u c3QgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisrICAgIGdsb2J1 c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAgICAgICAgYXR0ciwKKysgICAgZ2xvYnVz X2Z0cF9jbGllbnRfcmVzdGFydF9tYXJrZXJfdCAqICAgICAgICByZXN0YXJ0LAorKyAgICBnbG9i dXNfb2ZmX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxfb2Zmc2V0LAor KyAgICBnbG9idXNfb2ZmX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxf ZW5kX29mZnNldCwKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfY29tcGxldGVfY2FsbGJhY2tfdCAg ICAgICBjb21wbGV0ZV9jYWxsYmFjaywKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjYWxsYmFja19hcmcpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGds b2J1c19mdHBfY2xpZW50X3BhcnRpYWxfcHV0KAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5k bGVfdCAqCQloYW5kbGUsCistICAgIGNvbnN0IGNoYXIgKgkJCQl1cmwsCistICAgIGdsb2J1c19m dHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqCQlhdHRyLAorLSAgICBnbG9idXNfZnRwX2NsaWVu dF9yZXN0YXJ0X21hcmtlcl90ICoJcmVzdGFydCwKKy0gICAgZ2xvYnVzX29mZl90CQkJCXBhcnRp YWxfb2Zmc2V0LAorLSAgICBnbG9idXNfb2ZmX3QJCQkJcGFydGlhbF9lbmRfb2Zmc2V0LAorLSAg ICBnbG9idXNfZnRwX2NsaWVudF9jb21wbGV0ZV9jYWxsYmFja190CWNvbXBsZXRlX2NhbGxiYWNr LAorLSAgICB2b2lkICoJCQkJCWNhbGxiYWNrX2FyZyk7CisrICAgIGdsb2J1c19mdHBfY2xpZW50 X2hhbmRsZV90ICogICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICBjb25zdCBjaGFyICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCwKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRf b3BlcmF0aW9uYXR0cl90ICogICAgICAgICBhdHRyLAorKyAgICBnbG9idXNfZnRwX2NsaWVudF9y ZXN0YXJ0X21hcmtlcl90ICogICAgICAgIHJlc3RhcnQsCisrICAgIGdsb2J1c19vZmZfdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbF9vZmZzZXQsCisrICAgIGdsb2J1c19v ZmZfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbF9lbmRfb2Zmc2V0LAor KyAgICBnbG9idXNfZnRwX2NsaWVudF9jb21wbGV0ZV9jYWxsYmFja190ICAgICAgIGNvbXBsZXRl X2NhbGxiYWNrLAorKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNhbGxiYWNrX2FyZyk7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGll bnRfcGFydGlhbF90aGlyZF9wYXJ0eV90cmFuc2ZlcigKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRf aGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICBjb25zdCBjaGFyICoJCQkJc291cmNlX3VybCwKKy0g ICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCXNvdXJjZV9hdHRyLAorLSAg ICBjb25zdCBjaGFyICoJCQkJZGVzdF91cmwsCistICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJh dGlvbmF0dHJfdCAqCQlkZXN0X2F0dHIsCistICAgIGdsb2J1c19mdHBfY2xpZW50X3Jlc3RhcnRf bWFya2VyX3QgKglyZXN0YXJ0LAorLSAgICBnbG9idXNfb2ZmX3QJCQkJcGFydGlhbF9vZmZzZXQs CistICAgIGdsb2J1c19vZmZfdAkJCQlwYXJ0aWFsX2VuZF9vZmZzZXQsCistICAgIGdsb2J1c19m dHBfY2xpZW50X2NvbXBsZXRlX2NhbGxiYWNrX3QJY29tcGxldGVfY2FsbGJhY2ssCistICAgIHZv aWQgKgkJCQkJY2FsbGJhY2tfYXJnKTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3Qg KiAgICAgICAgICAgICAgICBoYW5kbGUsCisrICAgIGNvbnN0IGNoYXIgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc291cmNlX3VybCwKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3Bl cmF0aW9uYXR0cl90ICogICAgICAgICBzb3VyY2VfYXR0ciwKKysgICAgY29uc3QgY2hhciAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0X3VybCwKKysgICAgZ2xvYnVzX2Z0cF9j bGllbnRfb3BlcmF0aW9uYXR0cl90ICogICAgICAgICBkZXN0X2F0dHIsCisrICAgIGdsb2J1c19m dHBfY2xpZW50X3Jlc3RhcnRfbWFya2VyX3QgKiAgICAgICAgcmVzdGFydCwKKysgICAgZ2xvYnVz X29mZl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsX29mZnNldCwKKysg ICAgZ2xvYnVzX29mZl90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsX2Vu ZF9vZmZzZXQsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X2NvbXBsZXRlX2NhbGxiYWNrX3QgICAg ICAgY29tcGxldGVfY2FsbGJhY2ssCisrICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY2FsbGJhY2tfYXJnKTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9i dXNfZnRwX2NsaWVudF9leHRlbmRlZF9nZXQoCitAQCAtODY0LDMzICs4NjQsMzMgQEAgZ2xvYnVz X2Z0cF9jbGllbnRfZXh0ZW5kZWRfdGhpcmRfcGFydHlfdHJhbnNmZXIoCisgCisgZ2xvYnVzX3Jl c3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfYWJvcnQoCistICAgIGdsb2J1c19mdHBfY2xpZW50 X2hhbmRsZV90ICoJCWhhbmRsZSk7CisrICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV90ICog ICAgICAgICAgICAgICAgaGFuZGxlKTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRw X2NsaWVudF9tb2RpZmljYXRpb25fdGltZSgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxl X3QgKgkJaGFuZGxlLAorLSAgICBjb25zdCBjaGFyICoJCQkJdXJsLAorLSAgICBnbG9idXNfZnRw X2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKgkJYXR0ciwKKy0gICAgZ2xvYnVzX2Fic3RpbWVfdCAq CQkJCW1vZGlmaWNhdGlvbl90aW1lLAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9jb21wbGV0ZV9j YWxsYmFja190CWNvbXBsZXRlX2NhbGxiYWNrLAorLSAgICB2b2lkICoJCQkJCWNhbGxiYWNrX2Fy Zyk7CisrICAgIGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZV90ICogICAgICAgICAgICAgICAgaGFu ZGxlLAorKyAgICBjb25zdCBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVy bCwKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICogICAgICAgICBhdHRy LAorKyAgICBnbG9idXNfYWJzdGltZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlm aWNhdGlvbl90aW1lLAorKyAgICBnbG9idXNfZnRwX2NsaWVudF9jb21wbGV0ZV9jYWxsYmFja190 ICAgICAgIGNvbXBsZXRlX2NhbGxiYWNrLAorKyAgICB2b2lkICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2FyZyk7CisgCisgZ2xvYnVzX3Jlc3VsdF90Cisg Z2xvYnVzX2Z0cF9jbGllbnRfc2l6ZSgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3Qg KgkJaGFuZGxlLAorLSAgICBjb25zdCBjaGFyICoJCQkJdXJsLAorLSAgICBnbG9idXNfZnRwX2Ns aWVudF9vcGVyYXRpb25hdHRyX3QgKgkJYXR0ciwKKy0gICAgZ2xvYnVzX29mZl90ICoJCQkJc2l6 ZSwKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfY29tcGxldGVfY2FsbGJhY2tfdAljb21wbGV0ZV9j YWxsYmFjaywKKy0gICAgdm9pZCAqCQkJCQljYWxsYmFja19hcmcpOworKyAgICBnbG9idXNfZnRw X2NsaWVudF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgY29uc3QgY2hh ciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwsCisrICAgIGdsb2J1c19mdHBf Y2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAgICAgICAgYXR0ciwKKysgICAgZ2xvYnVzX29mZl90 ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLAorKyAgICBnbG9idXNfZnRwX2Ns aWVudF9jb21wbGV0ZV9jYWxsYmFja190ICAgICAgIGNvbXBsZXRlX2NhbGxiYWNrLAorKyAgICB2 b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2FyZyk7 CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfZXhpc3RzKAorLSAgICBn bG9idXNfZnRwX2NsaWVudF9oYW5kbGVfdCAqCQloYW5kbGUsCistICAgIGNvbnN0IGNoYXIgKgkJ CQl1cmwsCistICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqCQlhdHRyLAor LSAgICBnbG9idXNfZnRwX2NsaWVudF9jb21wbGV0ZV9jYWxsYmFja190CWNvbXBsZXRlX2NhbGxi YWNrLAorLSAgICB2b2lkICoJCQkJCWNhbGxiYWNrX2FyZyk7CisrICAgIGdsb2J1c19mdHBfY2xp ZW50X2hhbmRsZV90ICogICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICBjb25zdCBjaGFyICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCwKKysgICAgZ2xvYnVzX2Z0cF9jbGll bnRfb3BlcmF0aW9uYXR0cl90ICogICAgICAgICBhdHRyLAorKyAgICBnbG9idXNfZnRwX2NsaWVu dF9jb21wbGV0ZV9jYWxsYmFja190ICAgICAgIGNvbXBsZXRlX2NhbGxiYWNrLAorKyAgICB2b2lk ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2FyZyk7Cisg I2VuZGlmCisgCisgLyoqCitAQCAtOTA1LDIxICs5MDUsMjEgQEAgZ2xvYnVzX2Z0cF9jbGllbnRf ZXhpc3RzKAorICNpZm5kZWYgRE9YWUdFTgorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBf Y2xpZW50X29wZXJhdGlvbmF0dHJfaW5pdCgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0 aW9uYXR0cl90ICoJCWF0dHIpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRy X3QgKiAgICAgICAgIGF0dHIpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xp ZW50X29wZXJhdGlvbmF0dHJfZGVzdHJveSgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0 aW9uYXR0cl90ICoJCWF0dHIpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRy X3QgKiAgICAgICAgIGF0dHIpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xp ZW50X29wZXJhdGlvbmF0dHJfc2V0X3BhcmFsbGVsaXNtKAorLSAgICBnbG9idXNfZnRwX2NsaWVu dF9vcGVyYXRpb25hdHRyX3QgKgkJYXR0ciwKKy0gICAgY29uc3QgZ2xvYnVzX2Z0cF9jb250cm9s X3BhcmFsbGVsaXNtX3QgKglwYXJhbGxlbGlzbSk7CisrICAgIGdsb2J1c19mdHBfY2xpZW50X29w ZXJhdGlvbmF0dHJfdCAqICAgICAgICAgYXR0ciwKKysgICAgY29uc3QgZ2xvYnVzX2Z0cF9jb250 cm9sX3BhcmFsbGVsaXNtX3QgKiAgICBwYXJhbGxlbGlzbSk7CisgCisgZ2xvYnVzX3Jlc3VsdF90 CisgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl9nZXRfcGFyYWxsZWxpc20oCistICAg IGNvbnN0IGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqCWF0dHIsCistICAgIGds b2J1c19mdHBfY29udHJvbF9wYXJhbGxlbGlzbV90ICoJCXBhcmFsbGVsaXNtKTsKKysgICAgY29u c3QgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICogICBhdHRyLAorKyAgICBnbG9i dXNfZnRwX2NvbnRyb2xfcGFyYWxsZWxpc21fdCAqICAgICAgICAgIHBhcmFsbGVsaXNtKTsKKyAK KyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3NldF9z dG9yYWdlX21vZHVsZSgKK0BAIC05NjcsMjAyICs5NjcsMjAyIEBAIGdsb2J1c19mdHBfY2xpZW50 X29wZXJhdGlvbmF0dHJfZ2V0X2F1dGh6X2Fzc2VydCgKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBn bG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3NldF9zdHJpcGVkKAorLSAgICBnbG9idXNf ZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKgkJYXR0ciwKKy0gICAgZ2xvYnVzX2Jvb2xfdCAJ CQkJc3RyaXBlZCk7CisrICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAg ICAgICAgYXR0ciwKKysgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJpcGVkKTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9v cGVyYXRpb25hdHRyX2dldF9zdHJpcGVkKAorLSAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9v cGVyYXRpb25hdHRyX3QgKglhdHRyLAorLSAgICBnbG9idXNfYm9vbF90ICoJCQkJc3RyaXBlZCk7 CisrICAgIGNvbnN0IGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAgYXR0ciwK KysgICAgZ2xvYnVzX2Jvb2xfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpcGVk KTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRy X3NldF9sYXlvdXQoCistICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqCQlh dHRyLAorLSAgICBjb25zdCBnbG9idXNfZnRwX2NvbnRyb2xfbGF5b3V0X3QgKgkJbGF5b3V0KTsK KysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICogICAgICAgICBhdHRyLAor KyAgICBjb25zdCBnbG9idXNfZnRwX2NvbnRyb2xfbGF5b3V0X3QgKiAgICAgICAgIGxheW91dCk7 CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl9n ZXRfbGF5b3V0KAorLSAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3Qg KglhdHRyLAorLSAgICBnbG9idXNfZnRwX2NvbnRyb2xfbGF5b3V0X3QgKgkJbGF5b3V0KTsKKysg ICAgY29uc3QgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICogICBhdHRyLAorKyAg ICBnbG9idXNfZnRwX2NvbnRyb2xfbGF5b3V0X3QgKiAgICAgICAgICAgICAgIGxheW91dCk7Cisg CisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl9zZXRf dGNwX2J1ZmZlcigKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCWF0 dHIsCistICAgIGNvbnN0IGdsb2J1c19mdHBfY29udHJvbF90Y3BidWZmZXJfdCAqCXRjcF9idWZm ZXIpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKiAgICAgICAgIGF0 dHIsCisrICAgIGNvbnN0IGdsb2J1c19mdHBfY29udHJvbF90Y3BidWZmZXJfdCAqICAgICAgdGNw X2J1ZmZlcik7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0 aW9uYXR0cl9nZXRfdGNwX2J1ZmZlcigKKy0gICAgY29uc3QgZ2xvYnVzX2Z0cF9jbGllbnRfb3Bl cmF0aW9uYXR0cl90ICoJYXR0ciwKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9sX3RjcGJ1ZmZlcl90 ICoJCXRjcF9idWZmZXIpOworKyAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25h dHRyX3QgKiAgIGF0dHIsCisrICAgIGdsb2J1c19mdHBfY29udHJvbF90Y3BidWZmZXJfdCAqICAg ICAgICAgICAgdGNwX2J1ZmZlcik7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9j bGllbnRfb3BlcmF0aW9uYXR0cl9zZXRfdHlwZSgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3Bl cmF0aW9uYXR0cl90ICoJCWF0dHIsCistICAgIGdsb2J1c19mdHBfY29udHJvbF90eXBlX3QJCQl0 eXBlKTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICogICAgICAgICBh dHRyLAorKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfdHlwZV90ICAgICAgICAgICAgICAgICAgIHR5 cGUpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0 dHJfZ2V0X3R5cGUoCistICAgIGNvbnN0IGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJf dCAqCWF0dHIsCistICAgIGdsb2J1c19mdHBfY29udHJvbF90eXBlX3QgKgkJCXR5cGUpOworKyAg ICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKiAgIGF0dHIsCisrICAg IGdsb2J1c19mdHBfY29udHJvbF90eXBlX3QgKiAgICAgICAgICAgICAgICAgdHlwZSk7CisgCisg Z2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl9zZXRfbW9k ZSgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCWF0dHIsCistICAg IGdsb2J1c19mdHBfY29udHJvbF9tb2RlX3QJCQltb2RlKTsKKysgICAgZ2xvYnVzX2Z0cF9jbGll bnRfb3BlcmF0aW9uYXR0cl90ICogICAgICAgICBhdHRyLAorKyAgICBnbG9idXNfZnRwX2NvbnRy b2xfbW9kZV90ICAgICAgICAgICAgICAgICAgIG1vZGUpOworIAorIGdsb2J1c19yZXN1bHRfdAor IGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfZ2V0X21vZGUoCistICAgIGNvbnN0IGds b2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqCWF0dHIsCistICAgIGdsb2J1c19mdHBf Y29udHJvbF9tb2RlX3QgKgkJCW1vZGUpOworKyAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9v cGVyYXRpb25hdHRyX3QgKiAgIGF0dHIsCisrICAgIGdsb2J1c19mdHBfY29udHJvbF9tb2RlX3Qg KiAgICAgICAgICAgICAgICAgbW9kZSk7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0 cF9jbGllbnRfb3BlcmF0aW9uYXR0cl9zZXRfbGlzdF91c2VzX2RhdGFfbW9kZSgKKy0gICAgY29u c3QgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJYXR0ciwKKy0gICAgZ2xvYnVz X2Jvb2xfdCAgICAgICAgCQkJbGlzdF91c2VzX2RhdGFfbW9kZSk7CisrICAgIGNvbnN0IGdsb2J1 c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAgYXR0ciwKKysgICAgZ2xvYnVzX2Jvb2xf dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X3VzZXNfZGF0YV9tb2RlKTsKKyAK KyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX2dldF9s aXN0X3VzZXNfZGF0YV9tb2RlKAorLSAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRp b25hdHRyX3QgKglhdHRyLAorLSAgICBnbG9idXNfYm9vbF90ICogICAgIAkJCWxpc3RfdXNlc19k YXRhX21vZGUpOworKyAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3Qg KiAgIGF0dHIsCisrICAgIGdsb2J1c19ib29sX3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgbGlzdF91c2VzX2RhdGFfbW9kZSk7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0 cF9jbGllbnRfb3BlcmF0aW9uYXR0cl9zZXRfZGVsYXllZF9wYXN2KAorLSAgICBjb25zdCBnbG9i dXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKglhdHRyLAorLSAgICBnbG9idXNfYm9vbF90 ICAgICAgICAJCQlkZWxheWVkX3Bhc3YpOworKyAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9v cGVyYXRpb25hdHRyX3QgKiAgIGF0dHIsCisrICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGVsYXllZF9wYXN2KTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBn bG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX2dldF9kZWxheWVkX3Bhc3YoCistICAgIGNv bnN0IGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqCWF0dHIsCistICAgIGdsb2J1 c19ib29sX3QgKiAgICAgCQkJZGVsYXllZF9wYXN2KTsKKysgICAgY29uc3QgZ2xvYnVzX2Z0cF9j bGllbnRfb3BlcmF0aW9uYXR0cl90ICogICBhdHRyLAorKyAgICBnbG9idXNfYm9vbF90ICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5ZWRfcGFzdik7CisgCisgZ2xvYnVzX3Jlc3Vs dF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl9zZXRfZGNhdSgKKy0gICAgZ2xv YnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCWF0dHIsCistICAgIGNvbnN0IGdsb2J1 c19mdHBfY29udHJvbF9kY2F1X3QgKgkJZGNhdSk7CisrICAgIGdsb2J1c19mdHBfY2xpZW50X29w ZXJhdGlvbmF0dHJfdCAqICAgICAgICAgYXR0ciwKKysgICAgY29uc3QgZ2xvYnVzX2Z0cF9jb250 cm9sX2RjYXVfdCAqICAgICAgICAgICBkY2F1KTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9i dXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX2dldF9kY2F1KAorLSAgICBjb25zdCBnbG9idXNf ZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKglhdHRyLAorLSAgICBnbG9idXNfZnRwX2NvbnRy b2xfZGNhdV90ICoJCQlkY2F1KTsKKysgICAgY29uc3QgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0 aW9uYXR0cl90ICogICBhdHRyLAorKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfZGNhdV90ICogICAg ICAgICAgICAgICAgIGRjYXUpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xp ZW50X29wZXJhdGlvbmF0dHJfc2V0X2RhdGFfcHJvdGVjdGlvbigKKy0gICAgZ2xvYnVzX2Z0cF9j bGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCWF0dHIsCistICAgIGdsb2J1c19mdHBfY29udHJvbF9w cm90ZWN0aW9uX3QJCXByb3RlY3Rpb24pOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRp b25hdHRyX3QgKiAgICAgICAgIGF0dHIsCisrICAgIGdsb2J1c19mdHBfY29udHJvbF9wcm90ZWN0 aW9uX3QgICAgICAgICAgICAgcHJvdGVjdGlvbik7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xv YnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl9nZXRfZGF0YV9wcm90ZWN0aW9uKAorLSAgICBj b25zdCBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKglhdHRyLAorLSAgICBnbG9i dXNfZnRwX2NvbnRyb2xfcHJvdGVjdGlvbl90ICoJCXByb3RlY3Rpb24pOworKyAgICBjb25zdCBn bG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKiAgIGF0dHIsCisrICAgIGdsb2J1c19m dHBfY29udHJvbF9wcm90ZWN0aW9uX3QgKiAgICAgICAgICAgcHJvdGVjdGlvbik7CisgCisgZ2xv YnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl9zZXRfY29udHJv bF9wcm90ZWN0aW9uKAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKgkJ YXR0ciwKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9sX3Byb3RlY3Rpb25fdAkJcHJvdGVjdGlvbik7 CisrICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAgICAgICAgYXR0ciwK KysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX3Byb3RlY3Rpb25fdCAgICAgICAgICAgICBwcm90ZWN0 aW9uKTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25h dHRyX2dldF9jb250cm9sX3Byb3RlY3Rpb24oCistICAgIGNvbnN0IGdsb2J1c19mdHBfY2xpZW50 X29wZXJhdGlvbmF0dHJfdCAqCWF0dHIsCistICAgIGdsb2J1c19mdHBfY29udHJvbF9wcm90ZWN0 aW9uX3QgKgkJcHJvdGVjdGlvbik7CistICAgIAorKyAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVu dF9vcGVyYXRpb25hdHRyX3QgKiAgIGF0dHIsCisrICAgIGdsb2J1c19mdHBfY29udHJvbF9wcm90 ZWN0aW9uX3QgKiAgICAgICAgICAgcHJvdGVjdGlvbik7CisrCisgZ2xvYnVzX3Jlc3VsdF90Cisg Z2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl9zZXRfZGF0YV9zZWN1cml0eSgKKy0gICAg Z2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCWF0dHIsCisrICAgIGdsb2J1c19m dHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAgICAgICAgYXR0ciwKKyAgICAgaW50ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLAorICAgICB2b2lkICogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRlbnRpYWwpOworIAorIGdsb2J1 c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfZ2V0X2RhdGFfc2Vj dXJpdHkoCistICAgIGNvbnN0IGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqCWF0 dHIsCisrICAgIGNvbnN0IGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAgYXR0 ciwKKyAgICAgaW50ICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBl LAorICAgICB2b2lkICoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWRl bnRpYWwpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlv bmF0dHJfc2V0X3Jlc3VtZV90aGlyZF9wYXJ0eV90cmFuc2ZlcigKKy0gICAgZ2xvYnVzX2Z0cF9j bGllbnRfb3BlcmF0aW9uYXR0cl90ICoJCWF0dHIsCistICAgIGdsb2J1c19ib29sX3QJCQkJcmVz dW1lKTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICogICAgICAgICBh dHRyLAorKyAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c3VtZSk7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9u YXR0cl9nZXRfcmVzdW1lX3RoaXJkX3BhcnR5X3RyYW5zZmVyKAorLSAgICBjb25zdCBnbG9idXNf ZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKglhdHRyLAorLSAgICBnbG9idXNfYm9vbF90ICoJ CQkJcmVzdW1lKTsKKysgICAgY29uc3QgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90 ICogICBhdHRyLAorKyAgICBnbG9idXNfYm9vbF90ICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlc3VtZSk7CisgCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfb3Bl cmF0aW9uYXR0cl9zZXRfYXV0aG9yaXphdGlvbigKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3Bl cmF0aW9uYXR0cl90ICoJCWF0dHIsCistICAgIGdzc19jcmVkX2lkX3QJCQkJY3JlZGVudGlhbCwK Ky0gICAgY29uc3QgY2hhciAqCQkJCXVzZXIsCistICAgIGNvbnN0IGNoYXIgKgkJCQlwYXNzd29y ZCwKKy0gICAgY29uc3QgY2hhciAqCQkJCWFjY291bnQsCistICAgIGNvbnN0IGNoYXIgKgkJCQlz dWJqZWN0KTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICogICAgICAg ICBhdHRyLAorKyAgICBnc3NfY3JlZF9pZF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNyZWRlbnRpYWwsCisrICAgIGNvbnN0IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdXNlciwKKysgICAgY29uc3QgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwYXNzd29yZCwKKysgICAgY29uc3QgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhY2NvdW50LAorKyAgICBjb25zdCBjaGFyICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN1YmplY3QpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xp ZW50X29wZXJhdGlvbmF0dHJfZ2V0X2F1dGhvcml6YXRpb24oCistICAgIGNvbnN0IGdsb2J1c19m dHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqCWF0dHIsCistICAgIGdzc19jcmVkX2lkX3QgKgkJ CQljcmVkZW50aWFsLAorLSAgICBjaGFyICoqCQkJCQl1c2VyLAorLSAgICBjaGFyICoqCQkJCQlw YXNzd29yZCwKKy0gICAgY2hhciAqKgkJCQkJYWNjb3VudCwKKy0gICAgY2hhciAqKgkJCQkJc3Vi amVjdCk7CisrICAgIGNvbnN0IGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAg YXR0ciwKKysgICAgZ3NzX2NyZWRfaWRfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj cmVkZW50aWFsLAorKyAgICBjaGFyICoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVzZXIsCisrICAgIGNoYXIgKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGFzc3dvcmQsCisrICAgIGNoYXIgKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWNjb3VudCwKKysgICAgY2hhciAqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdWJqZWN0KTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVu dF9vcGVyYXRpb25hdHRyX3NldF9hcHBlbmQoCistICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJh dGlvbmF0dHJfdCAqCQlhdHRyLAorLSAgICBnbG9idXNfYm9vbF90CQkJCWFwcGVuZCk7CisrICAg IGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAgICAgICAgYXR0ciwKKysgICAg Z2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQpOworIAor IGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfZ2V0X2Fw cGVuZCgKKy0gICAgY29uc3QgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJYXR0 ciwKKy0gICAgZ2xvYnVzX2Jvb2xfdCAqCQkJCWFwcGVuZCk7CisrICAgIGNvbnN0IGdsb2J1c19m dHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAgYXR0ciwKKysgICAgZ2xvYnVzX2Jvb2xfdCAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQpOworIAorIGdsb2J1c19yZXN1bHRf dAorIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfc2V0X3JlYWRfYWxsKAorLSAgICBn bG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKgkJYXR0ciwKKy0gICAgZ2xvYnVzX2Jv b2xfdAkJCQlyZWFkX2FsbCwKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfZGF0YV9jYWxsYmFja190 CQlpbnRlcm1lZGlhdGVfY2FsbGJhY2tzLAorLSAgICB2b2lkICoJCQkJCWludGVybWVkaWF0ZV9j YWxsYmFja19hcmcpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKiAg ICAgICAgIGF0dHIsCisrICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVhZF9hbGwsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X2RhdGFfY2FsbGJhY2tfdCAg ICAgICAgICAgaW50ZXJtZWRpYXRlX2NhbGxiYWNrcywKKysgICAgdm9pZCAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVfY2FsbGJhY2tfYXJnKTsKKyAK KyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX2dldF9y ZWFkX2FsbCgKKy0gICAgY29uc3QgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICoJ YXR0ciwKKy0gICAgZ2xvYnVzX2Jvb2xfdCAqCQkJCXJlYWRfYWxsLAorLSAgICBnbG9idXNfZnRw X2NsaWVudF9kYXRhX2NhbGxiYWNrX3QgKgkJaW50ZXJtZWRpYXRlX2NhbGxiYWNrcywKKy0gICAg dm9pZCAqKgkJCQkJaW50ZXJtZWRpYXRlX2NhbGxiYWNrX2FyZyk7CisrICAgIGNvbnN0IGdsb2J1 c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAgYXR0ciwKKysgICAgZ2xvYnVzX2Jvb2xf dCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FsbCwKKysgICAgZ2xvYnVzX2Z0 cF9jbGllbnRfZGF0YV9jYWxsYmFja190ICogICAgICAgICBpbnRlcm1lZGlhdGVfY2FsbGJhY2tz LAorKyAgICB2b2lkICoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVy bWVkaWF0ZV9jYWxsYmFja19hcmcpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBf Y2xpZW50X29wZXJhdGlvbmF0dHJfc2V0X2FsbG93X2lwdjYoCistICAgIGdsb2J1c19mdHBfY2xp ZW50X29wZXJhdGlvbmF0dHJfdCAqCQlhdHRyLAorLSAgICBnbG9idXNfYm9vbF90CQkJCWFsbG93 KTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICogICAgICAgICBhdHRy LAorKyAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93 KTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRy X2dldF9hbGxvd19pcHY2KAorLSAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25h dHRyX3QgKglhdHRyLAorLSAgICBnbG9idXNfYm9vbF90ICoJCQkJYWxsb3cpOworKyAgICBjb25z dCBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKiAgIGF0dHIsCisrICAgIGdsb2J1 c19ib29sX3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3cpOworIAorIGdsb2J1 c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfc2V0X2FsbG9jYXRl KAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKgkJYXR0ciwKKy0gICAg Y29uc3QgZ2xvYnVzX29mZl90ICAJICAgICAgICAgICAgICAgIGFsbG9jYXRlZF9zaXplKTsKKy0g ICAgCisrICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdCAqICAgICAgICAgYXR0 ciwKKysgICAgY29uc3QgZ2xvYnVzX29mZl90ICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxv Y2F0ZWRfc2l6ZSk7CisrCisgZ2xvYnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfb3Bl cmF0aW9uYXR0cl9nZXRfYWxsb2NhdGUoCistICAgIGNvbnN0IGdsb2J1c19mdHBfY2xpZW50X29w ZXJhdGlvbmF0dHJfdCAqCWF0dHIsCistICAgIGdsb2J1c19vZmZfdCAqCQkgICAgICAgICAgICAg ICAgYWxsb2NhdGVkX3NpemUpOworKyAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRp b25hdHRyX3QgKiAgIGF0dHIsCisrICAgIGdsb2J1c19vZmZfdCAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWxsb2NhdGVkX3NpemUpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1 c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfY29weSgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRf b3BlcmF0aW9uYXR0cl90ICoJCWRzdCwKKy0gICAgY29uc3QgZ2xvYnVzX2Z0cF9jbGllbnRfb3Bl cmF0aW9uYXR0cl90ICoJc3JjKTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0 cl90ICogICAgICAgICBkc3QsCisrICAgIGNvbnN0IGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlv bmF0dHJfdCAqICAgc3JjKTsKKyAKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9idXNfZnRwX2NsaWVu dF9vcGVyYXRpb25hdHRyX3NldF9yZmMxNzM4X3VybCgKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRf b3BlcmF0aW9uYXR0cl90ICoJCWF0dHIsCistICAgIGdsb2J1c19ib29sX3QJCQkJcmZjMTczOF91 cmwpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKiAgICAgICAgIGF0 dHIsCisrICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmZj MTczOF91cmwpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGdsb2J1c19mdHBfY2xpZW50X29wZXJh dGlvbmF0dHJfZ2V0X3JmYzE3MzhfdXJsKAorLSAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9v cGVyYXRpb25hdHRyX3QgKglhdHRyLAorLSAgICBnbG9idXNfYm9vbF90ICoJCQkJcmZjMTczOF91 cmwpOworKyAgICBjb25zdCBnbG9idXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKiAgIGF0 dHIsCisrICAgIGdsb2J1c19ib29sX3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmZj MTczOF91cmwpOworICNlbmRpZgorIAorIC8qKgorQEAgLTExNzQsNyArMTE3NCw3IEBAIGdsb2J1 c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfZ2V0X3JmYzE3MzhfdXJsKAorICAqIGZvciByZWFk aW5nIG9yIHdyaXRpbmcgZGF0YSB0byBhbiBGVFAgc2VydmVyLiBUaGVzZSBvcGVyYXRpb25zIGFy ZQorICAqIGdsb2J1c19mdHBfY2xpZW50X2dldCgpLCBnbG9idXNfZnRwX2NsaWVudF9wYXJ0aWFs X2dldCgpLAorICAqIGdsb2J1c19mdHBfY2xpZW50X3B1dCgpLCBnbG9idXNfZnRwX2NsaWVudF9w YXJ0aWFsX3B1dCgpLAorLSAqIGdsb2J1c19mdHBfY2xpZW50X2xpc3QoKSwgZ2xvYnVzX2Z0cF9j bGllbnRfbWFjaGluZV9saXN0KCksIAorKyAqIGdsb2J1c19mdHBfY2xpZW50X2xpc3QoKSwgZ2xv YnVzX2Z0cF9jbGllbnRfbWFjaGluZV9saXN0KCksCisgICogZ2xvYnVzX2Z0cF9jbGllbnRfcmVj dXJzaXZlX2xpc3QoKSwgYW5kIGdsb2J1c19mdHBfY2xpZW50X3ZlcmJvc2VfbGlzdCgpLgorICAq CisgICogV2hlbiBkb2luZyB0aGVzZSBvcGVyYXRpb25zLCB0aGUgdXNlciBtdXN0IHBhc3MgZGF0 YSBidWZmZXJzCitAQCAtMTE5MCwyMSArMTE5MCwyMSBAQCBnbG9idXNfZnRwX2NsaWVudF9vcGVy YXRpb25hdHRyX2dldF9yZmMxNzM4X3VybCgKKyAjaWZuZGVmIERPWFlHRU4KKyBnbG9idXNfcmVz dWx0X3QKKyBnbG9idXNfZnRwX2NsaWVudF9yZWdpc3Rlcl9yZWFkKAorLSAgICBnbG9idXNfZnRw X2NsaWVudF9oYW5kbGVfdCAqCQloYW5kbGUsCistICAgIGdsb2J1c19ieXRlX3QgKgkJCQlidWZm ZXIsCistICAgIGdsb2J1c19zaXplX3QJCQkJYnVmZmVyX2xlbmd0aCwKKy0gICAgZ2xvYnVzX2Z0 cF9jbGllbnRfZGF0YV9jYWxsYmFja190CQljYWxsYmFjaywKKy0gICAgdm9pZCAqCQkJCQljYWxs YmFja19hcmcpOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVfdCAqICAgICAgICAgICAg ICAgIGhhbmRsZSwKKysgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBidWZmZXIsCisrICAgIGdsb2J1c19zaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYnVmZmVyX2xlbmd0aCwKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfZGF0YV9jYWxsYmFj a190ICAgICAgICAgICBjYWxsYmFjaywKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjYWxsYmFja19hcmcpOworIAorIGdsb2J1c19yZXN1bHRfdAorIGds b2J1c19mdHBfY2xpZW50X3JlZ2lzdGVyX3dyaXRlKAorLSAgICBnbG9idXNfZnRwX2NsaWVudF9o YW5kbGVfdCAqCQloYW5kbGUsCistICAgIGdsb2J1c19ieXRlX3QgKgkJCQlidWZmZXIsCistICAg IGdsb2J1c19zaXplX3QJCQkJYnVmZmVyX2xlbmd0aCwKKy0gICAgZ2xvYnVzX29mZl90CQkJCW9m ZnNldCwKKy0gICAgZ2xvYnVzX2Jvb2xfdAkJCQllb2YsCistICAgIGdsb2J1c19mdHBfY2xpZW50 X2RhdGFfY2FsbGJhY2tfdAkJY2FsbGJhY2ssCistICAgIHZvaWQgKgkJCQkJY2FsbGJhY2tfYXJn KTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKiAgICAgICAgICAgICAgICBoYW5k bGUsCisrICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVm ZmVyLAorKyAgICBnbG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1 ZmZlcl9sZW5ndGgsCisrICAgIGdsb2J1c19vZmZfdCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2Zmc2V0LAorKyAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVvZiwKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfZGF0YV9jYWxsYmFja190ICAgICAg ICAgICBjYWxsYmFjaywKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjYWxsYmFja19hcmcpOworICNlbmRpZgorIAorIC8qKgorQEAgLTEyMTIsNyArMTIx Miw3IEBAIGdsb2J1c19mdHBfY2xpZW50X3JlZ2lzdGVyX3dyaXRlKAorICAqIEBpbmdyb3VwIGds b2J1c19mdHBfY2xpZW50X29wZXJhdGlvbnMKKyAgKiBGQUxTRSBhbmQgVFJVRSBhcmUga25vd24g dG8gYmUgZmFjdCB0aGF0IGEgZmVhdHVyZSBkb2VzIG9yIGRvZXMgbm90IGV4aXN0CisgICogTUFZ QkUgbWVhbnMgdGhhdCB0aGUgZmVhdHVyZSBtYXkgZXhpc3QKKy0gKi8gCisrICovCisgdHlwZWRl ZiBlbnVtCisgeworICAgICBHTE9CVVNfRlRQX0NMSUVOVF9GQUxTRSA9IEdMT0JVU19GQUxTRSwK K0BAIC0xMjI0LDcgKzEyMjQsNyBAQCBnbG9idXNfZnRwX2NsaWVudF90cmlzdGF0ZV90OworIC8q KgorICAqIFR5cGVzIG9mIGZlYXR1cmVzCisgICogQGluZ3JvdXAgZ2xvYnVzX2Z0cF9jbGllbnRf b3BlcmF0aW9ucworLSAqLyAKKysgKi8KKyB0eXBlZGVmIGVudW0KKyB7CisgICAgIC8qIEJ1ZmZl ci1zaXplIHNldHRpbmcgY29tbWFuZHM7IGtlZXAgdGhlc2UgYXQgdGhlIGJlZ2lubmluZyBvZgor QEAgLTEyMzksNyArMTIzOSw3IEBAIHR5cGVkZWYgZW51bQorICAgICBHTE9CVVNfRlRQX0NMSUVO VF9GRUFUVVJFX0JVRlNJWkUsCisgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRVUkVfU0JVRiwK KyAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9BQlVGLAorLSAgICAKKysKKyAgICAgR0xP QlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9SRVNUX1NUUkVBTSwKKyAgICAgR0xPQlVTX0ZUUF9DTElF TlRfRkVBVFVSRV9QQVJBTExFTElTTSwKKyAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9E Q0FVLAorQEAgLTEyNzgsNyArMTI3OCw3IEBAIHR5cGVkZWYgc3RydWN0IGdsb2J1c19pX2Z0cF9j bGllbnRfZmVhdHVyZXNfcyAqIGdsb2J1c19mdHBfY2xpZW50X2ZlYXR1cmVzX3Q7CisgCisgZ2xv YnVzX3Jlc3VsdF90CisgZ2xvYnVzX2Z0cF9jbGllbnRfZmVhdCgKKy0gICAgZ2xvYnVzX2Z0cF9j bGllbnRfaGFuZGxlX3QgKiAgICAgICAgICAgICAgICAgdV9oYW5kbGUsIAorKyAgICBnbG9idXNf ZnRwX2NsaWVudF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgICB1X2hhbmRsZSwKKyAgICAgY2hh ciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsLAorICAgICBnbG9i dXNfZnRwX2NsaWVudF9vcGVyYXRpb25hdHRyX3QgKiAgICAgICAgICBhdHRyLAorICAgICBnbG9i dXNfZnRwX2NsaWVudF9mZWF0dXJlc190ICogICAgICAgICAgICAgICB1X2ZlYXR1cmVzLAorQEAg LTEzMDAsMTAgKzEzMDAsMTAgQEAgZ2xvYnVzX3Jlc3VsdF90IGdsb2J1c19mdHBfY2xpZW50X2Zl YXR1cmVzX2Rlc3Ryb3koCisgICogcmV0dXJucyB0aGUgRlRQIHJlc3BvbnNlIGNvZGUgZm9yIEdM T0JVU19FUlJPUl9UWVBFX0ZUUCBlcnJvcnMuCisgICogdGhpcyBmdW5jdGlvbiB3aWxsIHNlYXJj aCB0aGUgZW50aXJlIGNoYWluIGZvciB0aGUgY29ycmVjdCB0eXBlIGVycm9yIGFuZAorICAqIHJl dHVybiB0aGUgY29kZSBzdG9yZWQgaW4gdGhhdCBlcnJvci4KKy0gKiAKKysgKgorICAqIEBwYXJh bSBlcnJvcgorICAqICAgICAgYW4gZXJyb3Igb2JqZWN0IG9yIGNoYWluIHdpdGggdHlwZSBHTE9C VVNfRVJST1JfVFlQRV9GVFAKKy0gKiAKKysgKgorICAqIEByZXR1cm4KKyAgKiAgICAgIHRoZSBh c3NvY2lhdGVkIEZUUCByZXNwb25zZSBjb2RlIGlmIGZvdW5kLCAwIG90aGVyd2lzZS4KKyAgKi8K K0BAIC0xMzEzLDcgKzEzMTMsNyBAQCBnbG9idXNfZXJyb3JfZnRwX2Vycm9yX2dldF9jb2RlKAor IAorICNkZWZpbmUgR0xPQlVTX0VSUk9SX1RZUEVfRlRQICgmR0xPQlVTX0VSUk9SX1RZUEVfRlRQ X0RFRklOSVRJT04pCisgZXh0ZXJuIGNvbnN0IGdsb2J1c19vYmplY3RfdHlwZV90IEdMT0JVU19F UlJPUl9UWVBFX0ZUUF9ERUZJTklUSU9OOworLSAgIAorKworICNlbmRpZgorIEVYVEVSTl9DX0VO RAorIAorZGlmZiAtLWdpdCBhL2dyaWRmdHAvY2xpZW50L3NvdXJjZS9nbG9idXNfZnRwX2NsaWVu dF9zdGF0ZS5jIGIvZ3JpZGZ0cC9jbGllbnQvc291cmNlL2dsb2J1c19mdHBfY2xpZW50X3N0YXRl LmMKK2luZGV4IGYwMDY3MDcwNC4uY2Y2MmRjZTBjIDEwMDY0NAorLS0tIGEvZ3JpZGZ0cC9jbGll bnQvc291cmNlL2dsb2J1c19mdHBfY2xpZW50X3N0YXRlLmMKKysrKyBiL2dyaWRmdHAvY2xpZW50 L3NvdXJjZS9nbG9idXNfZnRwX2NsaWVudF9zdGF0ZS5jCitAQCAtMjMsOCArMjMsOCBAQAorIAor ICNpbmNsdWRlICJnbG9idXNfaV9mdHBfY2xpZW50LmgiCisgCistI2luY2x1ZGUgPHN0cmluZy5o PgkJLyogc3Ryc3RyKCksIHN0cm5jbXAoKSAqLworLSNpbmNsdWRlIDxjdHlwZS5oPgkJLyogaXN1 cHBlcigpICovCisrI2luY2x1ZGUgPHN0cmluZy5oPiAgICAgICAgICAgICAvKiBzdHJzdHIoKSwg c3RybmNtcCgpICovCisrI2luY2x1ZGUgPGN0eXBlLmg+ICAgICAgICAgICAgICAvKiBpc3VwcGVy KCkgKi8KKyAjaW5jbHVkZSA8dGltZS5oPgorIAorICNkZWZpbmUgQ1JMRiAiXHJcbiIKK0BAIC0z Myw3NyArMzMsNzcgQEAKKyBzdGF0aWMKKyBnbG9idXNfb2JqZWN0X3QgKgorIGdsb2J1c19sX2Z0 cF9jbGllbnRfcGFyc2Vfc2l0ZV9oZWxwKAorLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Rhcmdl dF90ICoJCXRhcmdldCwKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9sX3Jlc3BvbnNlX3QgKgkJcmVz cG9uc2UpOworKyAgICBnbG9idXNfaV9mdHBfY2xpZW50X3RhcmdldF90ICogICAgICAgICAgICAg IHRhcmdldCwKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX3Jlc3BvbnNlX3QgKiAgICAgICAgICAg ICByZXNwb25zZSk7CisgCisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2Z0cF9jbGllbnRfcGFy c2VfZmVhdCgKKy0gICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRfdCAqCQl0YXJnZXQsCist ICAgIGdsb2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICoJCXJlc3BvbnNlKTsKKysgICAgZ2xv YnVzX2lfZnRwX2NsaWVudF90YXJnZXRfdCAqICAgICAgICAgICAgICB0YXJnZXQsCisrICAgIGds b2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICogICAgICAgICAgICAgcmVzcG9uc2UpOworIAor IHN0YXRpYworIHZvaWQKKyBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX3Bhc3YoCisgICAgIGds b2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgaGFuZGxlLAorLSAgICBn bG9idXNfZnRwX2NvbnRyb2xfcmVzcG9uc2VfdCAqCQlyZXNwb25zZSwKKy0gICAgZ2xvYnVzX2Z0 cF9jb250cm9sX2hvc3RfcG9ydF90ICoqCQlob3N0X3BvcnQsCistICAgIGludCAqCQkJCQludW1f cGFzdl9hZGRyZXNzZXMpOworKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfcmVzcG9uc2VfdCAqICAg ICAgICAgICAgIHJlc3BvbnNlLAorKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfaG9zdF9wb3J0X3Qg KiogICAgICAgICAgIGhvc3RfcG9ydCwKKysgICAgaW50ICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBudW1fcGFzdl9hZGRyZXNzZXMpOworIAorIHN0YXRpYworIHZvaWQK KyBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX3Jlc3RhcnRfbWFya2VyKAorLSAgICBnbG9idXNf aV9mdHBfY2xpZW50X2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9s X3Jlc3BvbnNlX3QgKgkJcmVzcG9uc2UpOworKyAgICBnbG9idXNfaV9mdHBfY2xpZW50X2hhbmRs ZV90ICogICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX3Jlc3Bv bnNlX3QgKiAgICAgICAgICAgICByZXNwb25zZSk7CisgCisgc3RhdGljCisgY2hhciAqCisgZ2xv YnVzX2xfZnRwX2NsaWVudF9wYXJhbGxlbGlzbV9zdHJpbmcoCistICAgIGdsb2J1c19pX2Z0cF9j bGllbnRfdGFyZ2V0X3QgKgkJdGFyZ2V0KTsKKysgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJn ZXRfdCAqICAgICAgICAgICAgICB0YXJnZXQpOworIAorIHN0YXRpYworIGNoYXIgKgorIGdsb2J1 c19sX2Z0cF9jbGllbnRfbGF5b3V0X3N0cmluZygKKy0gICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90 YXJnZXRfdCAqCQl0YXJnZXQpOworKyAgICBnbG9idXNfaV9mdHBfY2xpZW50X3RhcmdldF90ICog ICAgICAgICAgICAgIHRhcmdldCk7CisgCisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2Z0cF9j bGllbnRfY29ubmVjdGlvbl9lcnJvcigKKy0gICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9oYW5kbGVf dCAqCQljbGllbnRfaGFuZGxlLAorLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3RhcmdldF90ICoJ CXRhcmdldCwKKy0gICAgZ2xvYnVzX29iamVjdF90ICoJCQkJZXJyb3IsCistICAgIGdsb2J1c19m dHBfY29udHJvbF9yZXNwb25zZV90ICoJCXJlc3BvbnNlKTsKKysgICAgZ2xvYnVzX2lfZnRwX2Ns aWVudF9oYW5kbGVfdCAqICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLAorKyAgICBnbG9idXNf aV9mdHBfY2xpZW50X3RhcmdldF90ICogICAgICAgICAgICAgIHRhcmdldCwKKysgICAgZ2xvYnVz X29iamVjdF90ICogICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwKKysgICAgZ2xvYnVz X2Z0cF9jb250cm9sX3Jlc3BvbnNlX3QgKiAgICAgICAgICAgICByZXNwb25zZSk7CisgCisgc3Rh dGljCisgY29uc3QgY2hhciAqCisgZ2xvYnVzX2xfZnRwX2NsaWVudF9ndWVzc19idWZmZXJfY29t bWFuZCgKKy0gICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9oYW5kbGVfdCAqCQloYW5kbGUsCistICAg IGdsb2J1c19pX2Z0cF9jbGllbnRfdGFyZ2V0X3QgKgkJdGFyZ2V0KTsKKysgICAgZ2xvYnVzX2lf ZnRwX2NsaWVudF9oYW5kbGVfdCAqICAgICAgICAgICAgICBoYW5kbGUsCisrICAgIGdsb2J1c19p X2Z0cF9jbGllbnRfdGFyZ2V0X3QgKiAgICAgICAgICAgICAgdGFyZ2V0KTsKKyAKKyBzdGF0aWMK KyB2b2lkCisgZ2xvYnVzX2xfZnRwX2NsaWVudF91cGRhdGVfYnVmZmVyX2ZlYXR1cmUoCistICAg IGdsb2J1c19pX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICBnbG9idXNfaV9m dHBfY2xpZW50X3RhcmdldF90ICoJCXRhcmdldCwKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfdHJp c3RhdGVfdAkJb2spOworKyAgICBnbG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICogICAgICAg ICAgICAgIGhhbmRsZSwKKysgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRfdCAqICAgICAg ICAgICAgICB0YXJnZXQsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X3RyaXN0YXRlX3QgICAgICAg ICAgICAgICAgb2spOworIAorIHN0YXRpYworIGdsb2J1c19ib29sX3QKKyBnbG9idXNfbF9mdHBf Y2xpZW50X2Nhbl9jYWNoZV9kYXRhX2Nvbm5lY3Rpb24oCistICAgIGdsb2J1c19pX2Z0cF9jbGll bnRfdGFyZ2V0X3QgKgkJdGFyZ2V0KTsKKysgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRf dCAqICAgICAgICAgICAgICB0YXJnZXQpOworIAorIHN0YXRpYworIHZvaWQKKyBnbG9idXNfbF9m dHBfY2xpZW50X2RhdGFfZm9yY2VfY2xvc2VfY2FsbGJhY2soCistICAgIHZvaWQgKgkJCQkJY2Fs bGJhY2tfYXJnLAorLSAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX3QgKgkJY29udHJvbF9o YW5kbGUsCistICAgIGdsb2J1c19vYmplY3RfdCAqCQkJCWVycm9yKTsKKysgICAgdm9pZCAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19hcmcsCisrICAgIGds b2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgY29udHJvbF9oYW5kbGUs CisrICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Ip OworIAorIHN0YXRpYworIHZvaWQKKyBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX21kdG0oCist ICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJY2xpZW50X2hhbmRsZSwKKy0gICAg Z2xvYnVzX2Z0cF9jb250cm9sX3Jlc3BvbnNlX3QgKgkJcmVzcG9uc2UpOworKyAgICBnbG9idXNf aV9mdHBfY2xpZW50X2hhbmRsZV90ICogICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUsCisrICAg IGdsb2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICogICAgICAgICAgICAgcmVzcG9uc2UpOwor IAorIHN0YXRpYworIHZvaWQKK0BAIC0xMTQsMjAgKzExNCwyMCBAQCBnbG9idXNfbF9mdHBfY2xp ZW50X3BhcnNlX2Nrc20oCisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2Z0cF9jbGllbnRfcGFy c2VfbWxzdCgKKy0gICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9oYW5kbGVfdCAqCQljbGllbnRfaGFu ZGxlLAorLSAgICBnbG9idXNfZnRwX2NvbnRyb2xfcmVzcG9uc2VfdCAqCQlyZXNwb25zZSk7Cisr ICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfaGFuZGxlX3QgKiAgICAgICAgICAgICAgY2xpZW50X2hh bmRsZSwKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX3Jlc3BvbnNlX3QgKiAgICAgICAgICAgICBy ZXNwb25zZSk7CisgCisgc3RhdGljCisgdm9pZAorIGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2Vf Y3dkKAorLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICoJCWNsaWVudF9oYW5kbGUs CistICAgIGdsb2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICoJCXJlc3BvbnNlKTsKKysgICAg Z2xvYnVzX2lfZnRwX2NsaWVudF9oYW5kbGVfdCAqICAgICAgICAgICAgICBjbGllbnRfaGFuZGxl LAorKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfcmVzcG9uc2VfdCAqICAgICAgICAgICAgIHJlc3Bv bnNlKTsKKyAKKyBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9zdGF0 KAorLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICoJCWNsaWVudF9oYW5kbGUsCist ICAgIGdsb2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICoJCXJlc3BvbnNlKTsKKysgICAgZ2xv YnVzX2lfZnRwX2NsaWVudF9oYW5kbGVfdCAqICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLAor KyAgICBnbG9idXNfZnRwX2NvbnRyb2xfcmVzcG9uc2VfdCAqICAgICAgICAgICAgIHJlc3BvbnNl KTsKKyAKKyBzdGF0aWMKKyBnbG9idXNfcmVzdWx0X3QKK0BAIC0xNjQsMjcgKzE2NCwyNyBAQCBn bG9idXNfbF9mdHBfY2xpZW50X3BwX3hmZXJfc3JjX2FkZCgKKyBzdGF0aWMKKyBnbG9idXNfcmVz dWx0X3QKKyBnbG9idXNfbF9mdHBfY2xpZW50X3VzZV9ncmlkZnRwMl9nZXRwdXQoCistICAgIGds b2J1c19pX2Z0cF9jbGllbnRfdGFyZ2V0X3QgKgkJdGFyZ2V0LAorKyAgICBnbG9idXNfaV9mdHBf Y2xpZW50X3RhcmdldF90ICogICAgICAgICAgICAgIHRhcmdldCwKKyAgICAgZ2xvYnVzX2Jvb2xf dCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRwdXQpOworIAorIHN0YXRpYworIGds b2J1c19yZXN1bHRfdAorIGdsb2J1c19sX2Z0cF9jbGllbnRfc2VuZF9nZXQoCistICAgIGdsb2J1 c19pX2Z0cF9jbGllbnRfdGFyZ2V0X3QgKgkJdGFyZ2V0LAorKyAgICBnbG9idXNfaV9mdHBfY2xp ZW50X3RhcmdldF90ICogICAgICAgICAgICAgIHRhcmdldCwKKyAgICAgY2hhciAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSwKKyAgICAgZ2xvYnVzX2Jvb2xf dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXN2KTsKKyAKKyBzdGF0aWMKKyBnbG9i dXNfcmVzdWx0X3QKKyBnbG9idXNfbF9mdHBfY2xpZW50X3NlbmRfcHV0KAorLSAgICBnbG9idXNf aV9mdHBfY2xpZW50X3RhcmdldF90ICoJCXRhcmdldCwKKysgICAgZ2xvYnVzX2lfZnRwX2NsaWVu dF90YXJnZXRfdCAqICAgICAgICAgICAgICB0YXJnZXQsCisgICAgIGNoYXIgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUsCisgICAgIGdsb2J1c19ib29sX3Qg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzdik7CisgCisgLyoqCisgICogQnVmZmVy IHNpemUgY29tbWFuZCBhcHBsaWNhYmlsaXR5IGluZm9ybWF0aW9uLgorICAqIEBpbnRlcm5hbAor LSAqIAorKyAqCisgICogVGhpcyBzdHJ1Y3R1cmUgaXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggb2Yg dGhlIFRDUCBidWZmZXIKKyAgKiBzZXR0aW5nIGNvbW1hbmRzIHRvIGhlbHAgdGhlIGNsaWVudCBs aWJyYXJ5IGRlY2lkZSB3aGV0aGVyCisgICogYSBjb21tYW5kIGlzIGNvbXBhdGlibGUgd2l0aCB0 aGUgb3BlcmF0aW9uIGJlaW5nIGRvbmUuCitAQCAtMTkzLDE3ICsxOTMsMTcgQEAgZ2xvYnVzX2xf ZnRwX2NsaWVudF9zZW5kX3B1dCgKKyAgKiBAc2VlIGdsb2J1c19sX2Z0cF9jbGllbnRfYnVmZmVy X2NtZF9pbmZvLAorICAqICAgICAgZ2xvYnVzX2xfZnRwX2NsaWVudF9ndWVzc19idWZmZXJfY29t bWFuZCgpCisgICovCistdHlwZWRlZiBzdHJ1Y3QgCisrdHlwZWRlZiBzdHJ1Y3QKKyB7CisgICAg IC8qKgorICAgICAgKiBUaGUgY29tbWFuZCBzdHJpbmcuIEl0IHNob3VsZCBtYXRjaCB0aGUgc2Vy dmVyJ3MgSEVMUCByZXNwb25zZSBpZgorICAgICAgKiBhcHBsaWNhYmxlLgorICAgICAgKi8KKy0g ICAgY2hhciAqCQkJCQlzdHJpbmc7CisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RyaW5nOworICAgICAvKiogVHJ1ZSBpZiB0aGlzIGNvbW1hbmQgaXMg dXNhYmxlIGZvciBTVE9SICovCistICAgIGdsb2J1c19ib29sX3QJCQkJc3Rvcl9vazsKKysgICAg Z2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yX29rOworICAg ICAvKiogVHJ1ZSBpZiB0aGlzIGNvbW1hbmQgaXMgdXNhYmxlIGZvciBSRVRSICovCistICAgIGds b2J1c19ib29sX3QJCQkJcmV0cl9vazsKKysgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXRyX29rOworIH0KKyBnbG9idXNfbF9mdHBfY2xpZW50X2J1ZmZl cl9jbWRfaW5mb190OworIAorQEAgLTI1MCw3ICsyNTAsNyBAQCBnbG9idXNfbF9mdHBfY2xpZW50 X2J1ZmZlcl9jbWRfaW5mb190IGdsb2J1c19sX2Z0cF9jbGllbnRfYnVmZmVyX2NtZF9pbmZvW10g PQorICAqICAgICAgICBUaGUgY29udHJvbCBoYW5kbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVz cG9uc2UuCisgICogQHBhcmFtIGVycm9yCisgICogICAgICAgIEEgR2xvYnVzIGVycm9yIG9iamVj dCBvciB0aGUgdmFsdWUgR0xPQlVTX1NVQ0NFU1MgaWYgdGhlCistICoJICByZXNwb25zZSB3YXMg cmVjZWl2ZWQgYW5kIHBhcnNlZCB3aXRob3V0IGVycm9yLgorKyAqICAgICAgICByZXNwb25zZSB3 YXMgcmVjZWl2ZWQgYW5kIHBhcnNlZCB3aXRob3V0IGVycm9yLgorICAqIEBwYXJhbSByZXNwb25z ZQorICAqICAgICAgICBUaGUgcGFyc2VkIHJlc3BvbnNlIHN0cmluZyBmcm9tIHRoZSBzZXJ2ZXIu IFRoaXMgaXMKKyAgKiAgICAgICAgaW50ZXJwcmV0ZWQgYmFzZWQgb24gdGhlIGNvbW1hbmQgY3Vy cmVudGx5IGJlaW5nIHByb2Nlc3NlZAorQEAgLTI1OCwzNyArMjU4LDM3IEBAIGdsb2J1c19sX2Z0 cF9jbGllbnRfYnVmZmVyX2NtZF9pbmZvX3QgZ2xvYnVzX2xfZnRwX2NsaWVudF9idWZmZXJfY21k X2luZm9bXSA9CisgICovCisgdm9pZAorIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2Fs bGJhY2soCistICAgIHZvaWQgKgkJCQkJdXNlcl9hcmcsCistICAgIGdsb2J1c19mdHBfY29udHJv bF9oYW5kbGVfdCAqCQloYW5kbGUsCistICAgIGdsb2J1c19vYmplY3RfdCAqCQkJCWluX2Vycm9y LAorLSAgICBnbG9idXNfZnRwX2NvbnRyb2xfcmVzcG9uc2VfdCAqCQlyZXNwb25zZSkKKysgICAg dm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2FyZywKKysg ICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hhbmRsZV90ICogICAgICAgICAgICAgICBoYW5kbGUsCisr ICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fZXJyb3Is CisrICAgIGdsb2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICogICAgICAgICAgICAgcmVzcG9u c2UpCisgeworLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3RhcmdldF90ICoJCXRhcmdldDsKKysg ICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRfdCAqICAgICAgICAgICAgICB0YXJnZXQ7Cisg ICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I7Cist ICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJY2xpZW50X2hhbmRsZTsKKy0gICAg Z2xvYnVzX3Jlc3VsdF90CQkJCXJlc3VsdDsKKy0gICAgZ2xvYnVzX2Jvb2xfdAkJCQlyZWdpc3Rl cmVkPUdMT0JVU19GQUxTRTsKKy0gICAgY2hhciAqCQkJCQl0bXBzdHIgPSBHTE9CVVNfTlVMTDsK Ky0gICAgY2hhciAqCQkJCQlhcmdzdHIgPSBHTE9CVVNfTlVMTDsKKy0gICAgY29uc3QgY2hhciAq CQkJCWJ1ZmZlcl9jbWQgPSBHTE9CVVNfTlVMTDsKKy0gICAgY2hhciAqCQkJCQlwYXJhbGxlbGlz bV9vcHQgPSBHTE9CVVNfTlVMTDsKKy0gICAgY2hhciAqCQkJCQlsYXlvdXRfb3B0ID0gR0xPQlVT X05VTEw7CistICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGlzdF9zdHIgPSBHTE9CVVNfTlVMTDsgICAgCistICAgIHVuc2lnbmVkIGxvbmcJCQkJcGJzeiA9 IDA7CistICAgIGludAkJCQkJCXJjLCBvbGRyYywgaTsKKysgICAgZ2xvYnVzX2lfZnRwX2NsaWVu dF9oYW5kbGVfdCAqICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlOworKyAgICBnbG9idXNfcmVz dWx0X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKysgICAgZ2xvYnVzX2Jv b2xfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RlcmVkPUdMT0JVU19GQUxT RTsKKysgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBz dHIgPSBHTE9CVVNfTlVMTDsKKysgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhcmdzdHIgPSBHTE9CVVNfTlVMTDsKKysgICAgY29uc3QgY2hhciAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY21kID0gR0xPQlVTX05VTEw7CisrICAg IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWxsZWxpc21f b3B0ID0gR0xPQlVTX05VTEw7CisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGF5b3V0X29wdCA9IEdMT0JVU19OVUxMOworKyAgICBjaGFyICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Rfc3RyID0gR0xPQlVTX05VTEw7Cisr ICAgIHVuc2lnbmVkIGxvbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGJzeiA9IDA7 CisrICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmMsIG9s ZHJjLCBpOworICAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBhdGhuYW1lOworLSAgICBnbG9idXNfYm9vbF90CQkJICAgICAgICBncmlkZnRwMl9nZXRwdXQ7 CisrICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JpZGZ0 cDJfZ2V0cHV0OworICAgICBHbG9idXNGdW5jTmFtZShnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3Bv bnNlX2NhbGxiYWNrKTsKKy0gICAgCisrCisgICAgIHRhcmdldCA9IChnbG9idXNfaV9mdHBfY2xp ZW50X3RhcmdldF90ICopIHVzZXJfYXJnOworICAgICBjbGllbnRfaGFuZGxlID0gdGFyZ2V0LT5v d25lcjsKKy0gICAgCistICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZGVidWdfcHJpbnRmKDEsIChz dGRlcnIsIAorKworKyAgICBnbG9idXNfaV9mdHBfY2xpZW50X2RlYnVnX3ByaW50ZigxLCAoc3Rk ZXJyLAorICAgICAgICAgImdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2soKSBl bnRlcmluZ1xuIikpOworICAgICBnbG9idXNfaV9mdHBfY2xpZW50X2RlYnVnX3N0YXRlcygyLCBj bGllbnRfaGFuZGxlKTsKKyAKKyAgICAgZ2xvYnVzX2Fzc2VydCghIEdMT0JVU19JX0ZUUF9DTElF TlRfQkFEX01BR0lDKCZjbGllbnRfaGFuZGxlKSk7CistICAgIAorKworICAgICBpZihpbl9lcnJv cikKKyAgICAgeworICAgICAgICAgZXJyb3IgPSBnbG9idXNfb2JqZWN0X2NvcHkoaW5fZXJyb3Ip OworQEAgLTI5NywxNiArMjk3LDE2IEBAIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2Fs bGJhY2soCisgICAgIHsKKyAgICAgICAgIGVycm9yID0gR0xPQlVTX05VTEw7CisgICAgIH0KKy0g ICAKKysKKyAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9oYW5kbGVfbG9jayhjbGllbnRfaGFuZGxl KTsKKy0gICAgCistICAgIAorLSAgICAKKysKKysKKysKKyAgICAgaWYocmVzcG9uc2UgJiYgKHJl c3BvbnNlLT5jb2RlID09IDEyNSB8fCByZXNwb25zZS0+Y29kZSA9PSAxNTApICYmCisgICAgICAg ICBjbGllbnRfaGFuZGxlLT5hdHRyLnBpcGVsaW5lX2NhbGxiYWNrKQorLSAgICB7ICAgICAgICAg ICAgICAgIAorKyAgICB7CisgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3VybF9lbnRfdCAq IHVybF9lbnQgPSBOVUxMOworLSAgICAgICAgCisrCisgICAgICAgICBpZih0YXJnZXQgPT0gY2xp ZW50X2hhbmRsZS0+c291cmNlKQorICAgICAgICAgeworICAgICAgICAgICAgIGlmKCFnbG9idXNf Zmlmb19lbXB0eSgmY2xpZW50X2hhbmRsZS0+c3JjX3Jlc3BvbnNlX3BlbmRpbmdfcXVldWUpKQor QEAgLTM0MSwxMCArMzQxLDEwIEBAIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJh Y2soCisgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPmRlc3RfdXJsID0gZ2xvYnVzX2xp YmNfc3RyZHVwKHVybF9lbnQtPmRlc3RfdXJsKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9 CistICAgIH0gICAgICAgICAgICAgICAgICAgICAgIAorLSAgICAKKy0gICAgCistICAgIAorKyAg ICB9CisrCisrCisrCisgICAgIGlmKHJlc3BvbnNlKQorICAgICB7CisgICAgICAgICBnbG9idXNf aV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfcmVzcG9uc2UoCitAQCAtMzU4LDggKzM1OCw4IEBA IGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2soCisgICAgIGlmKGNsaWVudF9o YW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCB8fAorICAgICAg ICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RB UlQpCisgICAgIHsKKy0JZ290byBmaW5pc2g7CistICAgIH0gICAgICAgIAorKyAgICAgICAgZ290 byBmaW5pc2g7CisrICAgIH0KKyAKKyAgICAgLyogVGhlIGJlaGF2aW91ciBvZiBzZXZlcmFsIHN0 YXRlcyBkZXBlbmRzIG9uIHdoZXRoZXIgdG8gdXNlIHRoZQorICAgICAgKiBHRkQuNDcgKGEuay5h IEdyaWRGVFAgMikgR0VUUFVUIGV4dGVuc2lvbi4KK0BAIC0zNzMsNTc5ICszNzMsMTYzIEBAIGds b2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2soCisgICAgIC8qIFRoaXMgcmVkbyBp cyB1c2VkIHRvIG1ha2UgYSBzZWNvbmQgcnVuIHRocm91Z2ggdGhlIHN0YXRlCisgICAgICAqIG1h Y2hpbmUsIHdoaWNoIGEgZmV3IHN0YXRlcyB3aWxsIHJlcXVpcmUuCisgICAgICAqLworLSAgICAK KysKKyAgICAgcGF0aG5hbWUgPSB0YXJnZXQtPnVybC51cmxfcGF0aCA/IHRhcmdldC0+dXJsLnVy bF9wYXRoIDogIi8iOworLSAgICAKKysKKyByZWRvOgorICAgICBzd2l0Y2godGFyZ2V0LT5zdGF0 ZSkKKyAgICAgeworICAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9DT05ORUNUOgor LQlnbG9idXNfYXNzZXJ0KAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZU UF9DTElFTlRfSEFORExFX1NPVVJDRV9DT05ORUNUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5z dGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9DT05ORUNUKTsKKy0KKy0JaWYo KCFlcnJvcikgJiYKKy0JICAgcmVzcG9uc2UtPnJlc3BvbnNlX2NsYXNzID09IEdMT0JVU19GVFBf UE9TSVRJVkVfQ09NUExFVElPTl9SRVBMWSkKKy0JeworLQkgICAgLyogU3VjY2Vzc2Z1bGx5IGNv bm5lY3RlZC4gQmVnaW4gYXV0aGVudGljYXRpb24gKi8KKy0JICAgIHRhcmdldC0+c3RhdGUgPSBH TE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfQVVUSEVOVElDQVRFOworLQorLQkgICAgZ2xvYnVzX2lf ZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2F1dGhlbnRpY2F0ZSgKKy0JCWNsaWVudF9oYW5kbGUs CistCQl0YXJnZXQtPnVybF9zdHJpbmcsCistCQkmdGFyZ2V0LT5hdXRoX2luZm8pOworLQorLQkg ICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FC T1JUIHx8CistCSAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVO VF9IQU5ETEVfUkVTVEFSVCB8fAorLQkgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xP QlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCistCSAgICB7CistCQlicmVhazsKKy0JICAg IH0KKy0KKy0JICAgIGdsb2J1c19hc3NlcnQoCistCQljbGllbnRfaGFuZGxlLT5zdGF0ZT09R0xP QlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9DT05ORUNUCistCQl8fAorLQkJY2xpZW50X2hh bmRsZS0+c3RhdGU9PUdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX0NPTk5FQ1QpOworLQor LQkgICAgcmVzdWx0ID0KKy0JCWdsb2J1c19mdHBfY29udHJvbF9hdXRoZW50aWNhdGUoCistCQkg ICAgaGFuZGxlLAorLQkJICAgICZ0YXJnZXQtPmF0dHItPmF1dGhfaW5mbywKKy0JCSAgICB0YXJn ZXQtPnVybC5zY2hlbWVfdHlwZT09R0xPQlVTX1VSTF9TQ0hFTUVfR1NJRlRQLAorLQkJICAgIGds b2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCistCQkgICAgdXNlcl9hcmcpOwor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistCSAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCistCSAgICB7CistCQkvKgorLQkJ ICogSWYgYXV0aGVudGljYXRpb24gZmFpbHMgd2l0aG91dCByZWdpc3RyYXRpb24sIG5vdGlmeSB0 aGUKKy0JCSAqIHBsdWdpbnMsIHRoZW4gZGVhbCB3aXRoIHRoZSBmYXVsdC4KKy0JCSAqLworLQkJ Z290byByZXN1bHRfZmF1bHQ7CistCistCSAgICB9CistCX0KKy0JZWxzZSBpZihlcnJvciB8fCBy ZXNwb25zZS0+cmVzcG9uc2VfY2xhc3MKKy0JCSE9IEdMT0JVU19GVFBfUE9TSVRJVkVfUFJFTElN SU5BUllfUkVQTFkpCistCXsKKy0JICAgIC8qIENvbm5lY3Rpb24gZmFpbGVkLCBkZWFsIHdpdGgg aXQgKGNvbm5lY3RfZXJyb3IKKy0JICAgICAqIHVubG9ja3MgdGhlIGhhbmRsZSkKKy0JICAgICAq LworLQkgICAgaWYoIWVycm9yICYmIHJlc3BvbnNlICYmIHJlc3BvbnNlLT5yZXNwb25zZV9idWZm ZXIpCistCSAgICB7CistCQllcnJvciA9IEdMT0JVU19JX0ZUUF9DTElFTlRfRVJST1JfUkVTUE9O U0UocmVzcG9uc2UpOworLQkgICAgfQorLQkgICAgZ290byBub3RpZnlfZmF1bHQ7CistCX0KKy0J LyogRWxzZSwgKHN1Y2Nlc3MgKyAxeXogcmVzcG9uc2UpLCB3aGljaCBqdXN0IG1lYW5zOiBzZXJ2 ZXIgd2lsbAorLQkgKiBnZXQgdG8geW91IGluIGEgbW9tZW50KQorLQkgKi8KKy0JYnJlYWs7Cist ICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0FVVEhFTlRJQ0FURToKKy0JZ2xvYnVz X2Fzc2VydCgKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5U X0hBTkRMRV9TT1VSQ0VfQ09OTkVDVCB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0g R0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfQ09OTkVDVCk7CistCistCWlmKCghZXJyb3Ip ICYmCistCSAgIHJlc3BvbnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZF X0NPTVBMRVRJT05fUkVQTFkpCistCXsKKy0jICAgICAgICAgICBpZiBCVUlMRF9ERUJVRworLQkg ICAgeworLQkJdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9T SVRFX0ZBVUxUOworLQkgICAgfQorLSMgICAgICAgICAgIGVsc2UKKy0JICAgIHsKKy0JCXRhcmdl dC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfU0lURV9IRUxQOworLQkg ICAgfQorLSMJICAgIGVuZGlmCistCSAgICBnb3RvIHJlZG87CistCX0KKy0JZWxzZQorLQl7Cist CSAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5F Q1RJT047CistCistCSAgICBnb3RvIG5vdGlmeV9mYXVsdDsKKy0JfQorLQlicmVhazsKKy0jIGlm IEJVSUxEX0RFQlVHCistICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1NJ VEVfRkFVTFQ6CistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX0NPTk5FQ1QgfHwKKy0JICAgIGNsaWVu dF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX0NPTk5FQ1Qp OworLQorLQl0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NJVEVfRkFV TFQ7CistCXRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX0lORk9STUFU SU9OOworLQorLQl0bXBzdHIgPSBnZXRlbnYoIkdMT0JVU19GVFBfQ0xJRU5UX0ZBVUxUX01PREUi KTsKKy0KKy0JaWYoISB0bXBzdHIpCistCXsKKy0JICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNf RlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfU0lURV9IRUxQOworLQorLQkgICAgZ290byByZWRvOwor LQl9CistCistCWdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorLQkg ICAgY2xpZW50X2hhbmRsZSwKKy0JICAgIHRhcmdldC0+dXJsX3N0cmluZywKKy0JICAgIHRhcmdl dC0+bWFzaywKKy0JICAgICJTSVRFIEZBVUxUICVzIiBDUkxGLAorLQkgICAgdG1wc3RyKTsKKy0K Ky0JaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FC T1JUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9I QU5ETEVfUkVTVEFSVCB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZU UF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCistCXsKKy0JICAgIGJyZWFrOworLQl9CistCistCWds b2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZT09R0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX1NPVVJDRV9DT05ORUNUCistCSAgICB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+ c3RhdGU9PUdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX0NPTk5FQ1QpOworLQorLQlyZXN1 bHQgPQorLQkgICAgZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKy0JCWhhbmRsZSwK Ky0JCSJTSVRFIEZBVUxUICVzIiBDUkxGLAorLQkJZ2xvYnVzX2lfZnRwX2NsaWVudF9yZXNwb25z ZV9jYWxsYmFjaywKKy0JCXVzZXJfYXJnLAorLQkJdG1wc3RyKTsKKy0KKy0JZ2xvYnVzX2xpYmNf dW5zZXRlbnYoIkdMT0JVU19GVFBfQ0xJRU5UX0ZBVUxUX01PREUiKTsKKy0KKy0JaWYocmVzdWx0 ICE9IEdMT0JVU19TVUNDRVNTKQorLQl7CistCSAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKy0JfQor LQlicmVhazsKKysgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAgICAgY2xpZW50X2hh bmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9DT05ORUNUIHx8 CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRf SEFORExFX0RFU1RfQ09OTkVDVCk7CisgCistICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFS R0VUX1NJVEVfRkFVTFQ6CistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5z dGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX0NPTk5FQ1QgfHwKKy0JICAg IGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX0NP Tk5FQ1QpOworLQorLQlpZigoIWVycm9yKSAmJgorLQkgICByZXNwb25zZS0+cmVzcG9uc2VfY2xh c3MgPT0gR0xPQlVTX0ZUUF9QT1NJVElWRV9DT01QTEVUSU9OX1JFUExZKQorLQl7CistCSAgICB0 YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1NJVEVfSEVMUDsK Ky0JICAgIGdvdG8gcmVkbzsKKy0JfQorLQllbHNlCistCXsKKy0JICAgIHRhcmdldC0+c3RhdGUg PSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElPTjsKKy0KKy0JICAgIGdv dG8gbm90aWZ5X2ZhdWx0OworLQl9CistCWJyZWFrOworKyAgICAgICAgaWYoKCFlcnJvcikgJiYK KysgICAgICAgICAgIHJlc3BvbnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lU SVZFX0NPTVBMRVRJT05fUkVQTFkpCisrICAgICAgICB7CisrICAgICAgICAgICAgLyogU3VjY2Vz c2Z1bGx5IGNvbm5lY3RlZC4gQmVnaW4gYXV0aGVudGljYXRpb24gKi8KKysgICAgICAgICAgICB0 YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0FVVEhFTlRJQ0FURTsKKyAK Ky0jIGVuZGlmCistICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1NJVEVf SEVMUDoKKy0JZ2xvYnVzX2Fzc2VydCgKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdM T0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfQ09OTkVDVCB8fAorLQkgICAgY2xpZW50X2hh bmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfQ09OTkVDVCk7Cisr ICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2F1dGhlbnRpY2F0 ZSgKKysgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZSwKKysgICAgICAgICAgICAgICAgdGFy Z2V0LT51cmxfc3RyaW5nLAorKyAgICAgICAgICAgICAgICAmdGFyZ2V0LT5hdXRoX2luZm8pOwor IAorLQl0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NJVEVfSEVMUDsK Ky0JdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfSU5GT1JNQVRJT047 CistCQorLSAgICAgICAgdGFyZ2V0LT5mZWF0dXJlcyA9IGdsb2J1c19pX2Z0cF9jbGllbnRfZmVh dHVyZXNfaW5pdCgpOworLSAgICAgICAgaWYoIXRhcmdldC0+ZmVhdHVyZXMpCistICAgICAgICB7 CistICAgICAgICAgICAgZXJyb3IgPSBHTE9CVVNfSV9GVFBfQ0xJRU5UX0VSUk9SX09VVF9PRl9N RU1PUlkoKTsKKy0JICAgIGdvdG8gbm90aWZ5X2ZhdWx0OworLSAgICAgICAgfQorLQorLQlnbG9i dXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKy0JICAgIGNsaWVudF9oYW5k bGUsCistCSAgICB0YXJnZXQtPnVybF9zdHJpbmcsCistCSAgICB0YXJnZXQtPm1hc2ssCistCSAg ICAiU0lURSBIRUxQIiBDUkxGKTsKKy0KKy0JaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xP QlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0 ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorLQkgICAgY2xpZW50X2hh bmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCistCXsKKy0J ICAgIGJyZWFrOworLQl9CistCistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxl LT5zdGF0ZT09R0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9DT05ORUNUCistCSAgICB8 fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGU9PUdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9E RVNUX0NPTk5FQ1QpOworLQorLQlyZXN1bHQgPQorLQkgICAgZ2xvYnVzX2Z0cF9jb250cm9sX3Nl bmRfY29tbWFuZCgKKy0JCWhhbmRsZSwKKy0JCSJTSVRFIEhFTFAiIENSTEYsCistCQlnbG9idXNf aV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorLQkJdXNlcl9hcmcpOworLQorLQlpZihy ZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gcmVzdWx0X2ZhdWx0Owor LQl9CistCWJyZWFrOworLSAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TSVRFX0hF TFA6CistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9C VVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX0NPTk5FQ1QgfHwKKy0JICAgIGNsaWVudF9oYW5k bGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX0NPTk5FQ1QpOworLQor LQlpZihlcnJvciAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byBub3RpZnlfZmF1 bHQ7CistCX0KKy0JZWxzZSBpZihyZXNwb25zZS0+cmVzcG9uc2VfY2xhc3M9PUdMT0JVU19GVFBf UE9TSVRJVkVfQ09NUExFVElPTl9SRVBMWSkKKy0JeworLQkgICAgLyoKKy0JICAgICAqIFBhcnNl IHRoZSByZXBseSB0byBmaW5kIG91dCB3aGF0IGlzIGltcGxlbWVudGVkIGJ5IHRoaXMKKy0JICAg ICAqIHNlcnZlcgorLQkgICAgICovCistCSAgICBlcnJvciA9IGdsb2J1c19sX2Z0cF9jbGllbnRf cGFyc2Vfc2l0ZV9oZWxwKHRhcmdldCwgcmVzcG9uc2UpOworLQkgICAgaWYoZXJyb3IgIT0gR0xP QlVTX1NVQ0NFU1MpCisrICAgICAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xP QlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CisrICAgICAgICAgICAgICAgY2xpZW50X2hh bmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwKKysgICAg ICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfRkFJTFVSRSkKKyAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIGdvdG8gbm90aWZ5 X2ZhdWx0OworKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICB9CistCX0KKy0K Ky0JdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9GRUFUOworLQl0YXJn ZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19JTkZPUk1BVElPTjsKKy0KKy0J Z2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCistCSAgICBjbGllbnRf aGFuZGxlLAorLQkgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorLQkgICAgdGFyZ2V0LT5tYXNrLAor LQkgICAgIkZFQVQiIENSTEYpOworLQorLQlpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9C VVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRl ID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CistCSAgICBjbGllbnRfaGFu ZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKy0JeworLQkg ICAgYnJlYWs7CistCX0KKy0JZ2xvYnVzX2Fzc2VydCgKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0 YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfQ09OTkVDVCB8fAorLQkgICAg Y2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfQ09O TkVDVCk7CistCistCXJlc3VsdCA9CistCSAgICBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9jb21t YW5kKAorLQkJaGFuZGxlLAorLQkJIkZFQVQiIENSTEYsCistCQlnbG9idXNfaV9mdHBfY2xpZW50 X3Jlc3BvbnNlX2NhbGxiYWNrLAorLQkJdXNlcl9hcmcpOworLQlpZihyZXN1bHQgIT0gR0xPQlVT X1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworLQl9CistCWJyZWFrOwor LSAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9GRUFUOgorLQlnbG9idXNfYXNzZXJ0 KAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X1NPVVJDRV9DT05ORUNUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNf RlRQX0NMSUVOVF9IQU5ETEVfREVTVF9DT05ORUNUKTsKKy0KKy0JaWYoZXJyb3IgIT0gR0xPQlVT X1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gbm90aWZ5X2ZhdWx0OworLQl9CistCWlmKHJlc3Bv bnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJT05fUkVQ TFkpCistCXsKKy0JICAgIC8qCistCSAgICAgKiBQYXJzZSB0aGUgcmVwbHkgdG8gZmluZCBvdXQg d2hhdCBpcyBpbXBsZW1lbnRlZCBieSB0aGlzCistCSAgICAgKiBzZXJ2ZXIKKy0JICAgICAqLwor LQkgICAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9mZWF0KHRhcmdldCwgcmVzcG9uc2UpOwor LQl9CistICAgICAgICAKKy0gICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9zZXQo CistICAgICAgICAgICAgdGFyZ2V0LT5mZWF0dXJlcywKKy0gICAgICAgICAgICBHTE9CVVNfRlRQ X0NMSUVOVF9GRUFUVVJFX0NMSUVOVElORk8sCistICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElF TlRfTUFZQkUpOworLSAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RB UkdFVF9TRVRVUF9DTElFTlRJTkZPOworIAorLQlpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBH TE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX0NPTk5FQ1QpCistCXsKKy0JICAgIGNsaWVu dF9oYW5kbGUtPnN0YXRlID0KKy0JCUdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VU VVBfQ09OTkVDVElPTjsKKy0JfQorLQllbHNlCistCXsKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0 YXRlID0KKy0JCUdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT047 CistCX0KKy0JZ290byByZWRvOworLSAgICAKKy0gICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9U QVJHRVRfU0VUVVBfQ0xJRU5USU5GTzoKKy0JdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJ RU5UX1RBUkdFVF9DTElFTlRJTkZPOworKyAgICAgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAg ICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlPT1HTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfU09VUkNFX0NPTk5FQ1QKKysgICAgICAgICAgICAgICAgfHwKKysgICAgICAgICAgICAgICAg Y2xpZW50X2hhbmRsZS0+c3RhdGU9PUdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX0NPTk5F Q1QpOworIAorLQlpZihnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfZ2V0KAorLQkJdGFyZ2V0 LT5mZWF0dXJlcywgCistCQlHTE9CVVNfRlRQX0NMSUVOVF9GRUFUVVJFX0NMSUVOVElORk8pID09 IEdMT0JVU19GQUxTRSkKKy0JeworLQkgICAgZ290byBza2lwX2NsaWVudGluZm87CistCX0KKysg ICAgICAgICAgICByZXN1bHQgPQorKyAgICAgICAgICAgICAgICBnbG9idXNfZnRwX2NvbnRyb2xf YXV0aGVudGljYXRlKAorKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICAgICAgICAg ICAgICAgICAgJnRhcmdldC0+YXR0ci0+YXV0aF9pbmZvLAorKyAgICAgICAgICAgICAgICAgICAg dGFyZ2V0LT51cmwuc2NoZW1lX3R5cGU9PUdMT0JVU19VUkxfU0NIRU1FX0dTSUZUUCwKKysgICAg ICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCisr ICAgICAgICAgICAgICAgICAgICB1c2VyX2FyZyk7CisgCistCXRhcmdldC0+bWFzayA9IEdMT0JV U19GVFBfQ0xJRU5UX0NNRF9NQVNLX0lORk9STUFUSU9OOworLSAgICAgICAgCistICAgICAgICBh cmdzdHIgPSBnbG9idXNfY29tbW9uX2NyZWF0ZV9zdHJpbmcoInNjaGVtZT0lczsiLCB0YXJnZXQt PnVybC5zY2hlbWUpOworLSAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+YXR0ci5jbGllbnRpbmZv X2FwcF9uYW1lKQorLSAgICAgICAgeworLSAgICAgICAgICAgIHRtcHN0ciA9IGdsb2J1c19jb21t b25fY3JlYXRlX3N0cmluZygKKy0gICAgICAgICAgICAgICAgIiVzYXBwbmFtZT1cIiVzXCI7Iiwg YXJnc3RyLCBjbGllbnRfaGFuZGxlLT5hdHRyLmNsaWVudGluZm9fYXBwX25hbWUpOworLSAgICAg ICAgICAgIGdsb2J1c19mcmVlKGFyZ3N0cik7CistICAgICAgICAgICAgYXJnc3RyID0gdG1wc3Ry OworLSAgICAgICAgfQorLSAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+YXR0ci5jbGllbnRpbmZv X2FwcF92ZXIpCistICAgICAgICB7CistICAgICAgICAgICAgdG1wc3RyID0gZ2xvYnVzX2NvbW1v bl9jcmVhdGVfc3RyaW5nKAorLSAgICAgICAgICAgICAgICAiJXNhcHB2ZXI9XCIlc1wiOyIsIGFy Z3N0ciwgY2xpZW50X2hhbmRsZS0+YXR0ci5jbGllbnRpbmZvX2FwcF92ZXIpOworLSAgICAgICAg ICAgIGdsb2J1c19mcmVlKGFyZ3N0cik7CistICAgICAgICAgICAgYXJnc3RyID0gdG1wc3RyOwor KyAgICAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICAgIC8qCisrICAgICAgICAgICAgICAgICAqIElmIGF1dGhlbnRpY2F0 aW9uIGZhaWxzIHdpdGhvdXQgcmVnaXN0cmF0aW9uLCBub3RpZnkgdGhlCisrICAgICAgICAgICAg ICAgICAqIHBsdWdpbnMsIHRoZW4gZGVhbCB3aXRoIHRoZSBmYXVsdC4KKysgICAgICAgICAgICAg ICAgICovCisrICAgICAgICAgICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworKworKyAgICAgICAg ICAgIH0KKyAgICAgICAgIH0KKy0gICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPmF0dHIuY2xpZW50 aW5mb19vdGhlcikKKysgICAgICAgIGVsc2UgaWYoZXJyb3IgfHwgcmVzcG9uc2UtPnJlc3BvbnNl X2NsYXNzCisrICAgICAgICAgICAgICAgICE9IEdMT0JVU19GVFBfUE9TSVRJVkVfUFJFTElNSU5B UllfUkVQTFkpCisgICAgICAgICB7CistICAgICAgICAgICAgdG1wc3RyID0gZ2xvYnVzX2NvbW1v bl9jcmVhdGVfc3RyaW5nKAorLSAgICAgICAgICAgICAgICAiJXMlcyIsIGFyZ3N0ciwgY2xpZW50 X2hhbmRsZS0+YXR0ci5jbGllbnRpbmZvX290aGVyKTsKKy0gICAgICAgICAgICBnbG9idXNfZnJl ZShhcmdzdHIpOworLSAgICAgICAgICAgIGFyZ3N0ciA9IHRtcHN0cjsKKysgICAgICAgICAgICAv KiBDb25uZWN0aW9uIGZhaWxlZCwgZGVhbCB3aXRoIGl0IChjb25uZWN0X2Vycm9yCisrICAgICAg ICAgICAgICogdW5sb2NrcyB0aGUgaGFuZGxlKQorKyAgICAgICAgICAgICAqLworKyAgICAgICAg ICAgIGlmKCFlcnJvciAmJiByZXNwb25zZSAmJiByZXNwb25zZS0+cmVzcG9uc2VfYnVmZmVyKQor KyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZXJyb3IgPSBHTE9CVVNfSV9GVFBfQ0xJ RU5UX0VSUk9SX1JFU1BPTlNFKHJlc3BvbnNlKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAg ICAgZ290byBub3RpZnlfZmF1bHQ7CisgICAgICAgICB9CisrICAgICAgICAvKiBFbHNlLCAoc3Vj Y2VzcyArIDF5eiByZXNwb25zZSksIHdoaWNoIGp1c3QgbWVhbnM6IHNlcnZlciB3aWxsCisrICAg ICAgICAgKiBnZXQgdG8geW91IGluIGEgbW9tZW50KQorKyAgICAgICAgICovCisrICAgICAgICBi cmVhazsKKysgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfQVVUSEVOVElDQVRFOgor KyAgICAgICAgZ2xvYnVzX2Fzc2VydCgKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0 ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX0NPTk5FQ1QgfHwKKysgICAgICAg ICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVT VF9DT05ORUNUKTsKKyAKKy0gICAgICAgIGlmKHRhcmdldC0+YXR0ci0+Y2xpZW50aW5mb19hcmdz dHIpCisrICAgICAgICBpZigoIWVycm9yKSAmJgorKyAgICAgICAgICAgcmVzcG9uc2UtPnJlc3Bv bnNlX2NsYXNzID09IEdMT0JVU19GVFBfUE9TSVRJVkVfQ09NUExFVElPTl9SRVBMWSkKKyAgICAg ICAgIHsKKy0gICAgICAgICAgICBnbG9idXNfZnJlZSh0YXJnZXQtPmF0dHItPmNsaWVudGluZm9f YXJnc3RyKTsKKy0gICAgICAgIH0KKy0gICAgICAgIHRhcmdldC0+YXR0ci0+Y2xpZW50aW5mb19h cmdzdHIgPSBhcmdzdHI7CistICAgICAgICAKKy0gICAgICAgIGlmKHRhcmdldC0+Y2xpZW50aW5m b19hcmdzdHIgJiYgCistICAgICAgICAgICAgc3RyY21wKHRhcmdldC0+Y2xpZW50aW5mb19hcmdz dHIsIAorLSAgICAgICAgICAgICAgICB0YXJnZXQtPmF0dHItPmNsaWVudGluZm9fYXJnc3RyKSA9 PSAwKQorLQl7CistCSAgICBnb3RvIHNraXBfY2xpZW50aW5mbzsKKy0JfQorLQkKKy0JZ2xvYnVz X2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCistCSAgICBjbGllbnRfaGFuZGxl LAorLQkgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorLQkgICAgdGFyZ2V0LT5tYXNrLAorLQkgICAg IlNJVEUgQ0xJRU5USU5GTyAlcyIsCistCSAgICB0YXJnZXQtPmF0dHItPmNsaWVudGluZm9fYXJn c3RyKTsKKy0KKy0JaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRf SEFORExFX0FCT1JUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQ X0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0g R0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCistCXsKKy0JICAgIGJyZWFrOworLQl9 CistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAg R0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OCistCSAgICB8 fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JICAgIEdMT0JVU19GVFBfQ0xJRU5U X0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworLQorLQlyZXN1bHQgPSBnbG9idXNfZnRw X2NvbnRyb2xfc2VuZF9jb21tYW5kKAorLQkgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKy0J ICAgICJTSVRFIENMSUVOVElORk8gJXMiIENSTEYsCistCSAgICBnbG9idXNfaV9mdHBfY2xpZW50 X3Jlc3BvbnNlX2NhbGxiYWNrLAorLQkgICAgdGFyZ2V0LAorLQkgICAgdGFyZ2V0LT5hdHRyLT5j bGllbnRpbmZvX2FyZ3N0cik7CistCistCWlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0J eworLQkgICAgZ290byByZXN1bHRfZmF1bHQ7CistCX0KKy0KKy0JYnJlYWs7CistCistICAgIGNh c2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0NMSUVOVElORk86CistCWdsb2J1c19hc3NlcnQo CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRf SEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5z dGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVD VElPTik7CistCistCWlmKCghZXJyb3IpICYmCistCSAgIHJlc3BvbnNlLT5yZXNwb25zZV9jbGFz cyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJT05fUkVQTFkpCistCXsKKy0JICAgIGlm KHRhcmdldC0+Y2xpZW50aW5mb19hcmdzdHIpCistCSAgICB7CistCSAgICAgICAgZ2xvYnVzX2Zy ZWUodGFyZ2V0LT5jbGllbnRpbmZvX2FyZ3N0cik7CistCSAgICB9CistCSAgICB0YXJnZXQtPmNs aWVudGluZm9fYXJnc3RyID0gCistCSAgICAgICAgZ2xvYnVzX2xpYmNfc3RyZHVwKHRhcmdldC0+ YXR0ci0+Y2xpZW50aW5mb19hcmdzdHIpOworLQl9CistCWVsc2UgaWYgKHJlc3BvbnNlKQorLQl7 CistICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCgKKy0gICAgICAg ICAgICAgICAgdGFyZ2V0LT5mZWF0dXJlcywKKy0gICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9D TElFTlRfRkVBVFVSRV9DTElFTlRJTkZPLAorLSAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NM SUVOVF9GQUxTRSk7CistICAgICAgICAgICAgcmVzcG9uc2UtPnJlc3BvbnNlX2NsYXNzID0gR0xP QlVTX0ZUUF9QT1NJVElWRV9DT01QTEVUSU9OX1JFUExZOworLSAgICAgICAgICAgIGdsb2J1c19v YmplY3RfZnJlZShlcnJvcik7CistICAgICAgICAgICAgZXJyb3IgPSBOVUxMOworKyMgICAgICAg ICAgIGlmIEJVSUxEX0RFQlVHCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICB0YXJn ZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1NJVEVfRkFVTFQ7Cisr ICAgICAgICAgICAgfQorKyMgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBf U0lURV9IRUxQOworKyAgICAgICAgICAgIH0KKysjICAgICAgICAgICBlbmRpZgorKyAgICAgICAg ICAgIGdvdG8gcmVkbzsKKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsKKy0J ICAgIGdvdG8gbm90aWZ5X2ZhdWx0OworLSAgICAgICAgfQorKyAgICAgICAgICAgIHRhcmdldC0+ c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElPTjsKKyAKKy0g ICAgc2tpcF9jbGllbnRpbmZvOgorLSAgICAJaWYgKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JV U19GVFBfQ0xJRU5UX0ZFQVQpCistCXsKKy0gICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xP QlVTX0ZUUF9DTElFTlRfVEFSR0VUX05FRURfQ09NUExFVEU7CistCX0JCistICAgICAgICBlbHNl CistICAgICAgICB7CistICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJ RU5UX1RBUkdFVF9TRVRVUF9UWVBFOworKyAgICAgICAgICAgIGdvdG8gbm90aWZ5X2ZhdWx0Owor ICAgICAgICAgfQorLSAgICAgICAgZ290byByZWRvOworLQorLSAgICBjYXNlIEdMT0JVU19GVFBf Q0xJRU5UX1RBUkdFVF9TRVRVUF9UWVBFOgorLQl0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9D TElFTlRfVEFSR0VUX1RZUEU7CistCistCWlmKHRhcmdldC0+YXR0ci0+dHlwZSA9PSB0YXJnZXQt PnR5cGUpCistCXsKKy0JICAgIGdvdG8gc2tpcF90eXBlOworLQl9CistCistCXRhcmdldC0+bWFz ayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX1RSQU5TRkVSX1BBUkFNRVRFUlM7CistCist CWdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorLQkgICAgY2xpZW50 X2hhbmRsZSwKKy0JICAgIHRhcmdldC0+dXJsX3N0cmluZywKKy0JICAgIHRhcmdldC0+bWFzaywK Ky0JICAgICJUWVBFICVjIiwKKy0JICAgIChjaGFyKSB0YXJnZXQtPmF0dHItPnR5cGUpOworLQor LQlpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJP UlQgfHwKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hB TkRMRV9SRVNUQVJUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQ X0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKy0JeworLQkgICAgYnJlYWs7CistCX0KKy0JZ2xvYnVz X2Fzc2VydCgKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCSAgICBHTE9CVVNfRlRQ X0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04KKy0JICAgIHx8CistCSAgICBj bGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RF U1RfU0VUVVBfQ09OTkVDVElPTik7CistCistCXJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9z ZW5kX2NvbW1hbmQoCistCSAgICB0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorLQkgICAgIlRZUEUg JWMiIENSTEYsCistCSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAor LQkgICAgdGFyZ2V0LAorLQkgICAgKGNoYXIpIHRhcmdldC0+YXR0ci0+dHlwZSk7CistCistCWlm KHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byByZXN1bHRfZmF1bHQ7 CistCX0KKy0KKy0JYnJlYWs7CistCistICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VU X1RZUEU6CistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQor LQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8 CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRf SEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CistCistCWlmKCghZXJyb3IpICYmCistCSAg IHJlc3BvbnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJ T05fUkVQTFkpCistCXsKKy0JICAgIHRhcmdldC0+dHlwZSA9IHRhcmdldC0+YXR0ci0+dHlwZTsK Ky0JICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF90eXBlKHRhcmdldC0+Y29u dHJvbF9oYW5kbGUsCistCQkJCQkJICAgdGFyZ2V0LT50eXBlLAorLQkJCQkJCSAgIDgpOworLQkg ICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorLQkgICAgeworLQkJZ290byByZXN1bHRf ZmF1bHQ7CistCSAgICB9CistCX0KKy0JZWxzZQorLQl7CistCSAgICB0YXJnZXQtPnN0YXRlID0g R0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CistCistCSAgICBnb3Rv IG5vdGlmeV9mYXVsdDsKKy0JfQorKyAgICAgICAgYnJlYWs7CisrIyBpZiBCVUlMRF9ERUJVRwor KyAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9TSVRFX0ZBVUxUOgorKyAg ICAgICAgZ2xvYnVzX2Fzc2VydCgKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX0NPTk5FQ1QgfHwKKysgICAgICAgICAg ICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9D T05ORUNUKTsKKyAKKy0gICAgc2tpcF90eXBlOgorLSAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdM T0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9BVVRIWl9BU1NFUlQ7CistICAgICAgICBnb3Rv IHJlZG87CisrICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VU X1NJVEVfRkFVTFQ7CisrICAgICAgICB0YXJnZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9D TURfTUFTS19JTkZPUk1BVElPTjsKKyAKKy0gICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJH RVRfU0VUVVBfQVVUSFpfQVNTRVJUOgorLSAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19G VFBfQ0xJRU5UX1RBUkdFVF9BVVRIWl9BU1NFUlQ7CisrICAgICAgICB0bXBzdHIgPSBnZXRlbnYo IkdMT0JVU19GVFBfQ0xJRU5UX0ZBVUxUX01PREUiKTsKKyAKKy0gICAgICAgIGlmICghdGFyZ2V0 LT5hdHRyLT5hdXRoel9hc3NlcnQpCistICAgICAgICB7CistICAgICAgICAgICAgZ290byBza2lw X2F1dGh6X2Fzc2VydDsKKy0gICAgICAgIH0KKy0gICAgICAgIGlmKHRhcmdldC0+YXV0aHpfYXNz ZXJ0ICYmCistICAgICAgICAgICAhc3RyY21wKHRhcmdldC0+YXR0ci0+YXV0aHpfYXNzZXJ0LCB0 YXJnZXQtPmF1dGh6X2Fzc2VydCkgJiYKKy0gICAgICAgICAgIHRhcmdldC0+YXR0ci0+Y2FjaGVf YXV0aHpfYXNzZXJ0KQorKyAgICAgICAgaWYoISB0bXBzdHIpCisgICAgICAgICB7CistICAgICAg ICAgICAgZ290byBza2lwX2F1dGh6X2Fzc2VydDsKKy0gICAgICAgIH0KKysgICAgICAgICAgICB0 YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1NJVEVfSEVMUDsK KyAKKy0gICAgICAgIHRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX01J U0M7CisrICAgICAgICAgICAgZ290byByZWRvOworKyAgICAgICAgfQorIAorICAgICAgICAgZ2xv YnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCisgICAgICAgICAgICAgY2xp ZW50X2hhbmRsZSwKKyAgICAgICAgICAgICB0YXJnZXQtPnVybF9zdHJpbmcsCisgICAgICAgICAg ICAgdGFyZ2V0LT5tYXNrLAorLSAgICAgICAgICAgICJTSVRFIEFVVEhaX0FTU0VSVCAlcyIsCist ICAgICAgICAgICAgdGFyZ2V0LT5hdHRyLT5hdXRoel9hc3NlcnQpOworLSAgICAgICAgCistICAg ICAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVf QUJPUlQgfHwgCisrICAgICAgICAgICAgIlNJVEUgRkFVTFQgJXMiIENSTEYsCisrICAgICAgICAg ICAgdG1wc3RyKTsKKysKKysgICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JV U19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCB8fAorICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUt PnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CisgICAgICAgICAg ICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxV UkUpCistICAgICAgICB7ICAgCisrICAgICAgICB7CisgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICB9CisrCisgICAgICAgICBnbG9idXNfYXNzZXJ0KAorLSAgICAgICAgICAgIGNsaWVudF9o YW5kbGUtPnN0YXRlID09CistICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NP VVJDRV9TRVRVUF9DT05ORUNUSU9OCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGU9 PUdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfQ09OTkVDVAorICAgICAgICAgICAgIHx8 CistICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0gICAgICAgICAgICBHTE9C VVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKy0gICAgICAgIAor LSAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKy0gICAg ICAgICAgICB0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorLSAgICAgICAgICAgICJTSVRFIEFVVEha X0FTU0VSVCAlcyIgQ1JMRiwKKy0gICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3Bv bnNlX2NhbGxiYWNrLAorLSAgICAgICAgICAgIHRhcmdldCwKKy0gICAgICAgICAgICB0YXJnZXQt PmF0dHItPmF1dGh6X2Fzc2VydCk7CistICAgICAgICAKKysgICAgICAgICAgICBjbGllbnRfaGFu ZGxlLT5zdGF0ZT09R0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfQ09OTkVDVCk7CisrCisr ICAgICAgICByZXN1bHQgPQorKyAgICAgICAgICAgIGdsb2J1c19mdHBfY29udHJvbF9zZW5kX2Nv bW1hbmQoCisrICAgICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgICAgICAgICAgICAgIlNJVEUg RkFVTFQgJXMiIENSTEYsCisrICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVz cG9uc2VfY2FsbGJhY2ssCisrICAgICAgICAgICAgICAgIHVzZXJfYXJnLAorKyAgICAgICAgICAg ICAgICB0bXBzdHIpOworKworKyAgICAgICAgZ2xvYnVzX2xpYmNfdW5zZXRlbnYoIkdMT0JVU19G VFBfQ0xJRU5UX0ZBVUxUX01PREUiKTsKKysKKyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNf U1VDQ0VTUykKKy0gICAgICAgIHsgICAKKysgICAgICAgIHsKKyAgICAgICAgICAgICBnb3RvIHJl c3VsdF9mYXVsdDsKKyAgICAgICAgIH0KKy0KKyAgICAgICAgIGJyZWFrOworIAorLSAgICBjYXNl IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9BVVRIWl9BU1NFUlQ6CisrICAgIGNhc2UgR0xPQlVT X0ZUUF9DTElFTlRfVEFSR0VUX1NJVEVfRkFVTFQ6CisgICAgICAgICBnbG9idXNfYXNzZXJ0KAor LSAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistICAgICAgICAgICAgR0xPQlVT X0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8CistICAgICAgICAg ICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0gICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVO VF9IQU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKysgICAgICAgICAgICBjbGllbnRfaGFu ZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX0NPTk5FQ1QgfHwK KysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9I QU5ETEVfREVTVF9DT05ORUNUKTsKKyAKKyAgICAgICAgIGlmKCghZXJyb3IpICYmCisgICAgICAg ICAgICByZXNwb25zZS0+cmVzcG9uc2VfY2xhc3MgPT0gR0xPQlVTX0ZUUF9QT1NJVElWRV9DT01Q TEVUSU9OX1JFUExZKQorICAgICAgICAgeworLSAgICAgICAgICAgIGlmICh0YXJnZXQtPmF1dGh6 X2Fzc2VydCkKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIGlmIChzdHJjbXAodGFy Z2V0LT5hdXRoel9hc3NlcnQsIHRhcmdldC0+YXR0ci0+YXV0aHpfYXNzZXJ0KSkKKy0gICAgICAg ICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2ZyZWUodGFyZ2V0LT5hdXRo el9hc3NlcnQpOworLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5hdXRoel9hc3NlcnQgPSBn bG9idXNfbGliY19zdHJkdXAoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0YXJnZXQtPmF0dHItPmF1dGh6X2Fzc2VydCk7CistICAgICAgICAgICAgICAgIH0K Ky0gICAgICAgICAgICB9CistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgIHsKKy0gICAg ICAgICAgICAgICAgdGFyZ2V0LT5hdXRoel9hc3NlcnQgPSAKKy0gICAgICAgICAgICAgICAgICAg IGdsb2J1c19saWJjX3N0cmR1cCh0YXJnZXQtPmF0dHItPmF1dGh6X2Fzc2VydCk7CistICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9U QVJHRVRfU0VUVVBfU0lURV9IRUxQOworKyAgICAgICAgICAgIGdvdG8gcmVkbzsKKyAgICAgICAg IH0KKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsKK0BAIC05NTMsMzIgKzUzNywyOSBAQCByZWRv OgorIAorICAgICAgICAgICAgIGdvdG8gbm90aWZ5X2ZhdWx0OworICAgICAgICAgfQorKyAgICAg ICAgYnJlYWs7CisgCistICAgIHNraXBfYXV0aHpfYXNzZXJ0OgorLQl0YXJnZXQtPnN0YXRlID0g R0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1NFVE5FVFNUQUNLOworLQlnb3RvIHJlZG87 CisrIyBlbmRpZgorKyAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9TSVRF X0hFTFA6CisrICAgICAgICBnbG9idXNfYXNzZXJ0KAorKyAgICAgICAgICAgIGNsaWVudF9oYW5k bGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfQ09OTkVDVCB8fAor KyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hB TkRMRV9ERVNUX0NPTk5FQ1QpOworIAorKyAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19G VFBfQ0xJRU5UX1RBUkdFVF9TSVRFX0hFTFA7CisrICAgICAgICB0YXJnZXQtPm1hc2sgPSBHTE9C VVNfRlRQX0NMSUVOVF9DTURfTUFTS19JTkZPUk1BVElPTjsKKyAKKy0gICAgY2FzZSBHTE9CVVNf RlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfU0VUTkVUU1RBQ0s6CistICAgICAgICB0YXJnZXQtPnN0 YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVE5FVFNUQUNLOworLSAgICAgICAgaWYo dGFyZ2V0LT5hdHRyLT5uZXRfc3RhY2tfc3RyID09IE5VTEwgfHwgIAorLSAgICAgICAgICAgICh0 YXJnZXQtPm5ldF9zdGFja19zdHIgIT0gTlVMTCAmJiAKKy0gICAgICAgICAgICBzdHJjbXAodGFy Z2V0LT5hdHRyLT5uZXRfc3RhY2tfc3RyLCB0YXJnZXQtPm5ldF9zdGFja19zdHIpID09IDApKQor KyAgICAgICAgdGFyZ2V0LT5mZWF0dXJlcyA9IGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZXNf aW5pdCgpOworKyAgICAgICAgaWYoIXRhcmdldC0+ZmVhdHVyZXMpCisgICAgICAgICB7CistICAg ICAgICAgICAgZ290byBza2lwX3NldG5ldHN0YWNrOworKyAgICAgICAgICAgIGVycm9yID0gR0xP QlVTX0lfRlRQX0NMSUVOVF9FUlJPUl9PVVRfT0ZfTUVNT1JZKCk7CisrICAgICAgICAgICAgZ290 byBub3RpZnlfZmF1bHQ7CisgICAgICAgICB9CistICAgICAgICAKKy0gICAgICAgIG1lbXNldCgm dGFyZ2V0LT5jYWNoZWRfZGF0YV9jb25uLAorLSAgICAgICAgICAgICAgICdcMCcsCistICAgICAg ICAgICAgICAgc2l6ZW9mKGdsb2J1c19pX2Z0cF9jbGllbnRfZGF0YV90YXJnZXRfdCkpOworIAor LSAgICAgICAgdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfVFJBTlNG RVJfUEFSQU1FVEVSUzsKKyAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25vdGlm eV9jb21tYW5kKAorICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUsCisgICAgICAgICAgICAgdGFy Z2V0LT51cmxfc3RyaW5nLAorICAgICAgICAgICAgIHRhcmdldC0+bWFzaywKKy0gICAgICAgICAg ICAiU0lURSBTRVRORVRTVEFDSyAlcyIgQ1JMRiwKKy0gICAgICAgICAgICB0YXJnZXQtPmF0dHIt Pm5ldF9zdGFja19zdHIpOworKyAgICAgICAgICAgICJTSVRFIEhFTFAiIENSTEYpOworIAorICAg ICAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X0FCT1JUIHx8CisgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZU UF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwKK0BAIC05ODgsMTAxICs1NjksMTMyMSBAQCByZWRv OgorICAgICAgICAgfQorIAorICAgICAgICAgZ2xvYnVzX2Fzc2VydCgKKy0gICAgICAgICAgICBj bGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLSAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hB TkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorLSAgICAgICAgICAgIGNsaWVudF9oYW5k bGUtPnN0YXRlID09CistICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1Rf U0VUVVBfQ09OTkVDVElPTik7CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGU9PUdM T0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfQ09OTkVDVAorKyAgICAgICAgICAgIHx8Cisr ICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGU9PUdMT0JVU19GVFBfQ0xJRU5UX0hBTkRM RV9ERVNUX0NPTk5FQ1QpOworKworKyAgICAgICAgcmVzdWx0ID0KKysgICAgICAgICAgICBnbG9i dXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorKyAgICAgICAgICAgICAgICBoYW5kbGUsCisr ICAgICAgICAgICAgICAgICJTSVRFIEhFTFAiIENSTEYsCisrICAgICAgICAgICAgICAgIGdsb2J1 c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCisrICAgICAgICAgICAgICAgIHVzZXJf YXJnKTsKKyAKKy0gICAgICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9zZW5kX2NvbW1h bmQoCistICAgICAgICAgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKy0gICAgICAgICAgICAi U0lURSBTRVRORVRTVEFDSyAlcyIgQ1JMRiwKKy0gICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xp ZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorLSAgICAgICAgICAgIHRhcmdldCwKKy0gICAgICAgICAg ICB0YXJnZXQtPmF0dHItPm5ldF9zdGFja19zdHIpOworICAgICAgICAgaWYocmVzdWx0ICE9IEdM T0JVU19TVUNDRVNTKQorICAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0 OworICAgICAgICAgfQorLQorICAgICAgICAgYnJlYWs7CistCistICAgIGNhc2UgR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX1NFVE5FVFNUQUNLOgorKyAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5U X1RBUkdFVF9TSVRFX0hFTFA6CisgICAgICAgICBnbG9idXNfYXNzZXJ0KAorLSAgICAgICAgICAg IGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRf SEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8CistICAgICAgICAgICAgY2xpZW50X2hh bmRsZS0+c3RhdGUgPT0KKy0gICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVT VF9TRVRVUF9DT05ORUNUSU9OKTsKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX0NPTk5FQ1QgfHwKKysgICAgICAgICAg ICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9D T05ORUNUKTsKKyAKKy0gICAgICAgIGlmKCghZXJyb3IpICYmCistICAgICAgICAgICByZXNwb25z ZS0+cmVzcG9uc2VfY2xhc3MgPT0gR0xPQlVTX0ZUUF9QT1NJVElWRV9DT01QTEVUSU9OX1JFUExZ KQorKyAgICAgICAgaWYoZXJyb3IgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICB7CistICAg ICAgICAgICAgZ2xvYnVzX3hpb19zdGFja190ICAgICAgICAgIHN0YWNrOworLSAgICAgICAgICAg IAorLSAgICAgICAgICAgIGlmKHRhcmdldC0+bmV0X3N0YWNrX3N0cikKKysgICAgICAgICAgICBn b3RvIG5vdGlmeV9mYXVsdDsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYocmVzcG9uc2Ut PnJlc3BvbnNlX2NsYXNzPT1HTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJT05fUkVQTFkpCisr ICAgICAgICB7CisrICAgICAgICAgICAgLyoKKysgICAgICAgICAgICAgKiBQYXJzZSB0aGUgcmVw bHkgdG8gZmluZCBvdXQgd2hhdCBpcyBpbXBsZW1lbnRlZCBieSB0aGlzCisrICAgICAgICAgICAg ICogc2VydmVyCisrICAgICAgICAgICAgICovCisrICAgICAgICAgICAgZXJyb3IgPSBnbG9idXNf bF9mdHBfY2xpZW50X3BhcnNlX3NpdGVfaGVscCh0YXJnZXQsIHJlc3BvbnNlKTsKKysgICAgICAg ICAgICBpZihlcnJvciAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgICAgICB7CistICAgICAg ICAgICAgICAgIGdsb2J1c19mcmVlKHRhcmdldC0+bmV0X3N0YWNrX3N0cik7CisrICAgICAgICAg ICAgICAgIGdvdG8gbm90aWZ5X2ZhdWx0OworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICB0 YXJnZXQtPm5ldF9zdGFja19zdHIgPSAKKy0gICAgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfc3Ry ZHVwKHRhcmdldC0+YXR0ci0+bmV0X3N0YWNrX3N0cik7CistICAgICAgICAgICAgCisrICAgICAg ICB9CisrCisrICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VU X0ZFQVQ7CisrICAgICAgICB0YXJnZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFT S19JTkZPUk1BVElPTjsKKysKKysgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25v dGlmeV9jb21tYW5kKAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUsCisrICAgICAgICAgICAg dGFyZ2V0LT51cmxfc3RyaW5nLAorKyAgICAgICAgICAgIHRhcmdldC0+bWFzaywKKysgICAgICAg ICAgICAiRkVBVCIgQ1JMRik7CisrCisrICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKysgICAgICAgICAgICBjbGllbnRf aGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorKyAg ICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRM RV9GQUlMVVJFKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQor KyAgICAgICAgZ2xvYnVzX2Fzc2VydCgKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0 ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX0NPTk5FQ1QgfHwKKysgICAgICAg ICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVT VF9DT05ORUNUKTsKKysKKysgICAgICAgIHJlc3VsdCA9CisrICAgICAgICAgICAgZ2xvYnVzX2Z0 cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKysgICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICAg ICAgICAgICAgICAiRkVBVCIgQ1JMRiwKKysgICAgICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2Ns aWVudF9yZXNwb25zZV9jYWxsYmFjaywKKysgICAgICAgICAgICAgICAgdXNlcl9hcmcpOworKyAg ICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgeworKyAgICAgICAg ICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworKyAgICAgICAgfQorKyAgICAgICAgYnJlYWs7CisrICAg IGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0ZFQVQ6CisrICAgICAgICBnbG9idXNfYXNz ZXJ0KAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJ RU5UX0hBTkRMRV9TT1VSQ0VfQ09OTkVDVCB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUt PnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX0NPTk5FQ1QpOworKworKyAg ICAgICAgaWYoZXJyb3IgIT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICB7CisrICAgICAgICAg ICAgZ290byBub3RpZnlfZmF1bHQ7CisrICAgICAgICB9CisrICAgICAgICBpZihyZXNwb25zZS0+ cmVzcG9uc2VfY2xhc3MgPT0gR0xPQlVTX0ZUUF9QT1NJVElWRV9DT01QTEVUSU9OX1JFUExZKQor KyAgICAgICAgeworKyAgICAgICAgICAgIC8qCisrICAgICAgICAgICAgICogUGFyc2UgdGhlIHJl cGx5IHRvIGZpbmQgb3V0IHdoYXQgaXMgaW1wbGVtZW50ZWQgYnkgdGhpcworKyAgICAgICAgICAg ICAqIHNlcnZlcgorKyAgICAgICAgICAgICAqLworKyAgICAgICAgICAgIGdsb2J1c19sX2Z0cF9j bGllbnRfcGFyc2VfZmVhdCh0YXJnZXQsIHJlc3BvbnNlKTsKKysgICAgICAgIH0KKysKKysgICAg ICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9zZXQoCisrICAgICAgICAgICAgdGFyZ2V0 LT5mZWF0dXJlcywKKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9GRUFUVVJFX0NMSUVO VElORk8sCisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfTUFZQkUpOworKyAgICAgICAg dGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9DTElFTlRJTkZP OworKworKyAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX1NPVVJDRV9DT05ORUNUKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGNsaWVu dF9oYW5kbGUtPnN0YXRlID0KKysgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFO RExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OOworKyAgICAgICAgfQorKyAgICAgICAgZWxzZQor KyAgICAgICAgeworKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID0KKysgICAgICAg ICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTjsK KysgICAgICAgIH0KKysgICAgICAgIGdvdG8gcmVkbzsKKysKKysgICAgY2FzZSBHTE9CVVNfRlRQ X0NMSUVOVF9UQVJHRVRfU0VUVVBfQ0xJRU5USU5GTzoKKysgICAgICAgIHRhcmdldC0+c3RhdGUg PSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfQ0xJRU5USU5GTzsKKysKKysgICAgICAgIGlmKGds b2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9nZXQoCisrICAgICAgICAgICAgICAgIHRhcmdldC0+ ZmVhdHVyZXMsCisrICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRVUkVfQ0xJ RU5USU5GTykgPT0gR0xPQlVTX0ZBTFNFKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8g c2tpcF9jbGllbnRpbmZvOworKyAgICAgICAgfQorKworKyAgICAgICAgdGFyZ2V0LT5tYXNrID0g R0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfSU5GT1JNQVRJT047CisrCisrICAgICAgICBhcmdz dHIgPSBnbG9idXNfY29tbW9uX2NyZWF0ZV9zdHJpbmcoInNjaGVtZT0lczsiLCB0YXJnZXQtPnVy bC5zY2hlbWUpOworKyAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+YXR0ci5jbGllbnRpbmZvX2Fw cF9uYW1lKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHRtcHN0ciA9IGdsb2J1c19jb21tb25f Y3JlYXRlX3N0cmluZygKKysgICAgICAgICAgICAgICAgIiVzYXBwbmFtZT1cIiVzXCI7IiwgYXJn c3RyLCBjbGllbnRfaGFuZGxlLT5hdHRyLmNsaWVudGluZm9fYXBwX25hbWUpOworKyAgICAgICAg ICAgIGdsb2J1c19mcmVlKGFyZ3N0cik7CisrICAgICAgICAgICAgYXJnc3RyID0gdG1wc3RyOwor KyAgICAgICAgfQorKyAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+YXR0ci5jbGllbnRpbmZvX2Fw cF92ZXIpCisrICAgICAgICB7CisrICAgICAgICAgICAgdG1wc3RyID0gZ2xvYnVzX2NvbW1vbl9j cmVhdGVfc3RyaW5nKAorKyAgICAgICAgICAgICAgICAiJXNhcHB2ZXI9XCIlc1wiOyIsIGFyZ3N0 ciwgY2xpZW50X2hhbmRsZS0+YXR0ci5jbGllbnRpbmZvX2FwcF92ZXIpOworKyAgICAgICAgICAg IGdsb2J1c19mcmVlKGFyZ3N0cik7CisrICAgICAgICAgICAgYXJnc3RyID0gdG1wc3RyOworKyAg ICAgICAgfQorKyAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+YXR0ci5jbGllbnRpbmZvX290aGVy KQorKyAgICAgICAgeworKyAgICAgICAgICAgIHRtcHN0ciA9IGdsb2J1c19jb21tb25fY3JlYXRl X3N0cmluZygKKysgICAgICAgICAgICAgICAgIiVzJXMiLCBhcmdzdHIsIGNsaWVudF9oYW5kbGUt PmF0dHIuY2xpZW50aW5mb19vdGhlcik7CisrICAgICAgICAgICAgZ2xvYnVzX2ZyZWUoYXJnc3Ry KTsKKysgICAgICAgICAgICBhcmdzdHIgPSB0bXBzdHI7CisrICAgICAgICB9CisrCisrICAgICAg ICBpZih0YXJnZXQtPmF0dHItPmNsaWVudGluZm9fYXJnc3RyKQorKyAgICAgICAgeworKyAgICAg ICAgICAgIGdsb2J1c19mcmVlKHRhcmdldC0+YXR0ci0+Y2xpZW50aW5mb19hcmdzdHIpOworKyAg ICAgICAgfQorKyAgICAgICAgdGFyZ2V0LT5hdHRyLT5jbGllbnRpbmZvX2FyZ3N0ciA9IGFyZ3N0 cjsKKysKKysgICAgICAgIGlmKHRhcmdldC0+Y2xpZW50aW5mb19hcmdzdHIgJiYKKysgICAgICAg ICAgICBzdHJjbXAodGFyZ2V0LT5jbGllbnRpbmZvX2FyZ3N0ciwKKysgICAgICAgICAgICAgICAg dGFyZ2V0LT5hdHRyLT5jbGllbnRpbmZvX2FyZ3N0cikgPT0gMCkKKysgICAgICAgIHsKKysgICAg ICAgICAgICBnb3RvIHNraXBfY2xpZW50aW5mbzsKKysgICAgICAgIH0KKysKKysgICAgICAgIGds b2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorKyAgICAgICAgICAgIGNs aWVudF9oYW5kbGUsCisrICAgICAgICAgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorKyAgICAgICAg ICAgIHRhcmdldC0+bWFzaywKKysgICAgICAgICAgICAiU0lURSBDTElFTlRJTkZPICVzIiwKKysg ICAgICAgICAgICB0YXJnZXQtPmF0dHItPmNsaWVudGluZm9fYXJnc3RyKTsKKysKKysgICAgICAg IGlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9S VCB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJ RU5UX0hBTkRMRV9SRVNUQVJUIHx8CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCisrICAgICAgICB7CisrICAgICAg ICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAgICAgICBnbG9idXNfYXNzZXJ0KAorKyAgICAg ICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9D TElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OCisrICAgICAgICAgICAgfHwKKysg ICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JVU19G VFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworKworKyAgICAgICAgcmVz dWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKysgICAgICAgICAgICB0YXJn ZXQtPmNvbnRyb2xfaGFuZGxlLAorKyAgICAgICAgICAgICJTSVRFIENMSUVOVElORk8gJXMiIENS TEYsCisrICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9yZXNwb25zZV9jYWxsYmFjaywK KysgICAgICAgICAgICB0YXJnZXQsCisrICAgICAgICAgICAgdGFyZ2V0LT5hdHRyLT5jbGllbnRp bmZvX2FyZ3N0cik7CisrCisrICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisr ICAgICAgICB7CisrICAgICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisrICAgICAgICB9Cisr CisrICAgICAgICBicmVhazsKKysKKysgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRf Q0xJRU5USU5GTzoKKysgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAgICAgY2xpZW50 X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVf U09VUkNFX1NFVFVQX0NPTk5FQ1RJT04gfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5z dGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQ X0NPTk5FQ1RJT04pOworKworKyAgICAgICAgaWYoKCFlcnJvcikgJiYKKysgICAgICAgICAgIHJl c3BvbnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJT05f UkVQTFkpCisrICAgICAgICB7CisrICAgICAgICAgICAgaWYodGFyZ2V0LT5jbGllbnRpbmZvX2Fy Z3N0cikKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGdsb2J1c19mcmVlKHRhcmdl dC0+Y2xpZW50aW5mb19hcmdzdHIpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICB0YXJn ZXQtPmNsaWVudGluZm9fYXJnc3RyID0KKysgICAgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfc3Ry ZHVwKHRhcmdldC0+YXR0ci0+Y2xpZW50aW5mb19hcmdzdHIpOworKyAgICAgICAgfQorKyAgICAg ICAgZWxzZSBpZiAocmVzcG9uc2UpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVzX2lf ZnRwX2NsaWVudF9mZWF0dXJlX3NldCgKKysgICAgICAgICAgICAgICAgdGFyZ2V0LT5mZWF0dXJl cywKKysgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9DTElFTlRJTkZP LAorKyAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9GQUxTRSk7CisrICAgICAgICAg ICAgcmVzcG9uc2UtPnJlc3BvbnNlX2NsYXNzID0gR0xPQlVTX0ZUUF9QT1NJVElWRV9DT01QTEVU SU9OX1JFUExZOworKyAgICAgICAgICAgIGdsb2J1c19vYmplY3RfZnJlZShlcnJvcik7CisrICAg ICAgICAgICAgZXJyb3IgPSBOVUxMOworKyAgICAgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAg ICAgeworKyAgICAgICAgICAgIGdvdG8gbm90aWZ5X2ZhdWx0OworKyAgICAgICAgfQorKworKyAg ICBza2lwX2NsaWVudGluZm86CisrICAgICAgICBpZiAoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xP QlVTX0ZUUF9DTElFTlRfRkVBVCkKKysgICAgICAgIHsKKysgICAgICAgICAgICB0YXJnZXQtPnN0 YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX05FRURfQ09NUExFVEU7CisrICAgICAgICB9 CisrICAgICAgICBlbHNlCisrICAgICAgICB7CisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9 IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9UWVBFOworKyAgICAgICAgfQorKyAgICAg ICAgZ290byByZWRvOworKworKyAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRV UF9UWVBFOgorKyAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdF VF9UWVBFOworKworKyAgICAgICAgaWYodGFyZ2V0LT5hdHRyLT50eXBlID09IHRhcmdldC0+dHlw ZSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIHNraXBfdHlwZTsKKysgICAgICAgIH0K KysKKysgICAgICAgIHRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX1RS QU5TRkVSX1BBUkFNRVRFUlM7CisrCisrICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdp bl9ub3RpZnlfY29tbWFuZCgKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLAorKyAgICAgICAg ICAgIHRhcmdldC0+dXJsX3N0cmluZywKKysgICAgICAgICAgICB0YXJnZXQtPm1hc2ssCisrICAg ICAgICAgICAgIlRZUEUgJWMiLAorKyAgICAgICAgICAgIChjaGFyKSB0YXJnZXQtPmF0dHItPnR5 cGUpOworKworKyAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9D TElFTlRfSEFORExFX0FCT1JUIHx8CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwKKysgICAgICAgICAgICBjbGll bnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKysg ICAgICAgIHsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0KKysgICAgICAgIGdsb2J1 c19hc3NlcnQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAg ICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04KKysg ICAgICAgICAgICB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAg ICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7 CisrCisrICAgICAgICByZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAor KyAgICAgICAgICAgIHRhcmdldC0+Y29udHJvbF9oYW5kbGUsCisrICAgICAgICAgICAgIlRZUEUg JWMiIENSTEYsCisrICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9yZXNwb25zZV9jYWxs YmFjaywKKysgICAgICAgICAgICB0YXJnZXQsCisrICAgICAgICAgICAgKGNoYXIpIHRhcmdldC0+ YXR0ci0+dHlwZSk7CisrCisrICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisr ICAgICAgICB7CisrICAgICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisrICAgICAgICB9Cisr CisrICAgICAgICBicmVhazsKKysKKysgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRf VFlQRToKKysgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRs ZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNF X1NFVFVQX0NPTk5FQ1RJT04gfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PQorKyAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5F Q1RJT04pOworKworKyAgICAgICAgaWYoKCFlcnJvcikgJiYKKysgICAgICAgICAgIHJlc3BvbnNl LT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJT05fUkVQTFkp CisrICAgICAgICB7CisrICAgICAgICAgICAgdGFyZ2V0LT50eXBlID0gdGFyZ2V0LT5hdHRyLT50 eXBlOworKyAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF90eXBl KHRhcmdldC0+Y29udHJvbF9oYW5kbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT50eXBlLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgpOworKyAgICAgICAgICAgIGlmKHJlc3Vs dCAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGdv dG8gcmVzdWx0X2ZhdWx0OworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIGVs c2UKKysgICAgICAgIHsKKysgICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9D TElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CisrCisrICAgICAgICAgICAgZ290byBub3Rp ZnlfZmF1bHQ7CisrICAgICAgICB9CisrCisrICAgIHNraXBfdHlwZToKKysgICAgICAgIHRhcmdl dC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQVVUSFpfQVNTRVJUOwor KyAgICAgICAgZ290byByZWRvOworKworKyAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdF VF9TRVRVUF9BVVRIWl9BU1NFUlQ6CisrICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX0FVVEhaX0FTU0VSVDsKKysKKysgICAgICAgIGlmICghdGFyZ2V0LT5h dHRyLT5hdXRoel9hc3NlcnQpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ290byBza2lwX2F1 dGh6X2Fzc2VydDsKKysgICAgICAgIH0KKysgICAgICAgIGlmKHRhcmdldC0+YXV0aHpfYXNzZXJ0 ICYmCisrICAgICAgICAgICAhc3RyY21wKHRhcmdldC0+YXR0ci0+YXV0aHpfYXNzZXJ0LCB0YXJn ZXQtPmF1dGh6X2Fzc2VydCkgJiYKKysgICAgICAgICAgIHRhcmdldC0+YXR0ci0+Y2FjaGVfYXV0 aHpfYXNzZXJ0KQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gc2tpcF9hdXRoel9hc3Nl cnQ7CisrICAgICAgICB9CisrCisrICAgICAgICB0YXJnZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NM SUVOVF9DTURfTUFTS19NSVNDOworKworKyAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVn aW5fbm90aWZ5X2NvbW1hbmQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZSwKKysgICAgICAg ICAgICB0YXJnZXQtPnVybF9zdHJpbmcsCisrICAgICAgICAgICAgdGFyZ2V0LT5tYXNrLAorKyAg ICAgICAgICAgICJTSVRFIEFVVEhaX0FTU0VSVCAlcyIsCisrICAgICAgICAgICAgdGFyZ2V0LT5h dHRyLT5hdXRoel9hc3NlcnQpOworKworKyAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CisrICAgICAgICAgICAgY2xpZW50 X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwKKysg ICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfRkFJTFVSRSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0K KysgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3Rh dGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQ X0NPTk5FQ1RJT04KKysgICAgICAgICAgICB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUt PnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VU VVBfQ09OTkVDVElPTik7CisrCisrICAgICAgICByZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xf c2VuZF9jb21tYW5kKAorKyAgICAgICAgICAgIHRhcmdldC0+Y29udHJvbF9oYW5kbGUsCisrICAg ICAgICAgICAgIlNJVEUgQVVUSFpfQVNTRVJUICVzIiBDUkxGLAorKyAgICAgICAgICAgIGdsb2J1 c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCisrICAgICAgICAgICAgdGFyZ2V0LAor KyAgICAgICAgICAgIHRhcmdldC0+YXR0ci0+YXV0aHpfYXNzZXJ0KTsKKysKKysgICAgICAgIGlm KHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3Rv IHJlc3VsdF9mYXVsdDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGJyZWFrOworKworKyAgICBj YXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9BVVRIWl9BU1NFUlQ6CisrICAgICAgICBnbG9i dXNfYXNzZXJ0KAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAg ICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8 CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9C VVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKysKKysgICAgICAg IGlmKCghZXJyb3IpICYmCisrICAgICAgICAgICByZXNwb25zZS0+cmVzcG9uc2VfY2xhc3MgPT0g R0xPQlVTX0ZUUF9QT1NJVElWRV9DT01QTEVUSU9OX1JFUExZKQorKyAgICAgICAgeworKyAgICAg ICAgICAgIGlmICh0YXJnZXQtPmF1dGh6X2Fzc2VydCkKKysgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgIGlmIChzdHJjbXAodGFyZ2V0LT5hdXRoel9hc3NlcnQsIHRhcmdldC0+YXR0ci0+ YXV0aHpfYXNzZXJ0KSkKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAg Z2xvYnVzX2ZyZWUodGFyZ2V0LT5hdXRoel9hc3NlcnQpOworKyAgICAgICAgICAgICAgICAgICAg dGFyZ2V0LT5hdXRoel9hc3NlcnQgPSBnbG9idXNfbGliY19zdHJkdXAoCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPmF0dHItPmF1dGh6X2Fzc2Vy dCk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxz ZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgdGFyZ2V0LT5hdXRoel9hc3NlcnQg PQorKyAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfc3RyZHVwKHRhcmdldC0+YXR0ci0+ YXV0aHpfYXNzZXJ0KTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgICBlbHNl CisrICAgICAgICB7CisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJ RU5UX1RBUkdFVF9TRVRVUF9DT05ORUNUSU9OOworKworKyAgICAgICAgICAgIGdvdG8gbm90aWZ5 X2ZhdWx0OworKyAgICAgICAgfQorKworKyAgICBza2lwX2F1dGh6X2Fzc2VydDoKKysgICAgICAg IHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfU0VUTkVUU1RB Q0s7CisrICAgICAgICBnb3RvIHJlZG87CisrCisrCisrICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElF TlRfVEFSR0VUX1NFVFVQX1NFVE5FVFNUQUNLOgorKyAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdM T0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRORVRTVEFDSzsKKysgICAgICAgIGlmKHRhcmdldC0+ YXR0ci0+bmV0X3N0YWNrX3N0ciA9PSBOVUxMIHx8CisrICAgICAgICAgICAgKHRhcmdldC0+bmV0 X3N0YWNrX3N0ciAhPSBOVUxMICYmCisrICAgICAgICAgICAgc3RyY21wKHRhcmdldC0+YXR0ci0+ bmV0X3N0YWNrX3N0ciwgdGFyZ2V0LT5uZXRfc3RhY2tfc3RyKSA9PSAwKSkKKysgICAgICAgIHsK KysgICAgICAgICAgICBnb3RvIHNraXBfc2V0bmV0c3RhY2s7CisrICAgICAgICB9CisrCisrICAg ICAgICBtZW1zZXQoJnRhcmdldC0+Y2FjaGVkX2RhdGFfY29ubiwKKysgICAgICAgICAgICAgICAn XDAnLAorKyAgICAgICAgICAgICAgIHNpemVvZihnbG9idXNfaV9mdHBfY2xpZW50X2RhdGFfdGFy Z2V0X3QpKTsKKysKKysgICAgICAgIHRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NN RF9NQVNLX1RSQU5TRkVSX1BBUkFNRVRFUlM7CisrICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50 X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLAorKyAg ICAgICAgICAgIHRhcmdldC0+dXJsX3N0cmluZywKKysgICAgICAgICAgICB0YXJnZXQtPm1hc2ss CisrICAgICAgICAgICAgIlNJVEUgU0VUTkVUU1RBQ0sgJXMiIENSTEYsCisrICAgICAgICAgICAg dGFyZ2V0LT5hdHRyLT5uZXRfc3RhY2tfc3RyKTsKKysKKysgICAgICAgIGlmKGNsaWVudF9oYW5k bGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCB8fAorKyAgICAgICAg ICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNU QVJUIHx8CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9D TElFTlRfSEFORExFX0ZBSUxVUkUpCisrICAgICAgICB7CisrICAgICAgICAgICAgYnJlYWs7Cisr ICAgICAgICB9CisrCisrICAgICAgICBnbG9idXNfYXNzZXJ0KAorKyAgICAgICAgICAgIGNsaWVu dF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+ c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9TRVRV UF9DT05ORUNUSU9OKTsKKysKKysgICAgICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9z ZW5kX2NvbW1hbmQoCisrICAgICAgICAgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKysgICAg ICAgICAgICAiU0lURSBTRVRORVRTVEFDSyAlcyIgQ1JMRiwKKysgICAgICAgICAgICBnbG9idXNf aV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAgICAgICAgICAgIHRhcmdldCwKKysg ICAgICAgICAgICB0YXJnZXQtPmF0dHItPm5ldF9zdGFja19zdHIpOworKyAgICAgICAgaWYocmVz dWx0ICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gcmVz dWx0X2ZhdWx0OworKyAgICAgICAgfQorKworKyAgICAgICAgYnJlYWs7CisrCisrICAgIGNhc2Ug R0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVE5FVFNUQUNLOgorKyAgICAgICAgZ2xvYnVzX2Fz c2VydCgKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAg IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorKyAg ICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZU UF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CisrCisrICAgICAgICBpZigo IWVycm9yKSAmJgorKyAgICAgICAgICAgcmVzcG9uc2UtPnJlc3BvbnNlX2NsYXNzID09IEdMT0JV U19GVFBfUE9TSVRJVkVfQ09NUExFVElPTl9SRVBMWSkKKysgICAgICAgIHsKKysgICAgICAgICAg ICBnbG9idXNfeGlvX3N0YWNrX3QgICAgICAgICAgc3RhY2s7CisrCisrICAgICAgICAgICAgaWYo dGFyZ2V0LT5uZXRfc3RhY2tfc3RyKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAg Z2xvYnVzX2ZyZWUodGFyZ2V0LT5uZXRfc3RhY2tfc3RyKTsKKysgICAgICAgICAgICB9CisrICAg ICAgICAgICAgdGFyZ2V0LT5uZXRfc3RhY2tfc3RyID0KKysgICAgICAgICAgICAgICAgZ2xvYnVz X2xpYmNfc3RyZHVwKHRhcmdldC0+YXR0ci0+bmV0X3N0YWNrX3N0cik7CisrCisgICAgICAgICAg ICAgaWYoY2xpZW50X2hhbmRsZS0+b3AgIT0gR0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNGRVIpCisg ICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBpZih0YXJnZXQtPm5ldF9zdGFja19saXN0 KQorLSAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBnbG9idXNfaV9mdHBf Y29udHJvbF91bmxvYWRfeGlvX2RyaXZlcnMoCistICAgICAgICAgICAgICAgICAgICAgICAgdGFy Z2V0LT5uZXRfc3RhY2tfbGlzdCk7CistICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPm5ldF9z dGFja19saXN0ID0gR0xPQlVTX05VTEw7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAg ICAgICAgICAgICAgICAKKy0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2lfZnRwX2Nv bnRyb2xfbG9hZF94aW9fZHJpdmVycygKKy0gICAgICAgICAgICAgICAgICAgIHRhcmdldC0+bmV0 X3N0YWNrX3N0ciwgJnRhcmdldC0+bmV0X3N0YWNrX2xpc3QpOworLSAgICAgICAgICAgICAgICBp ZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCistICAgICAgICAgICAgICAgIHsKKy0gICAgICAg ICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VU VVBfQ09OTkVDVElPTjsKKy0gICAgICAgIAorLSAgICAgICAgICAgICAgICAgICAgZ290byByZXN1 bHRfZmF1bHQ7CistICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgcmVzdWx0ID0g Z2xvYnVzX2lfZnRwX2NvbnRyb2xfY3JlYXRlX3N0YWNrKAorLSAgICAgICAgICAgICAgICAgICAg dGFyZ2V0LT5jb250cm9sX2hhbmRsZSwgdGFyZ2V0LT5uZXRfc3RhY2tfbGlzdCwgJnN0YWNrKTsK Ky0gICAgICAgICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorLSAgICAgICAg ICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CistICAgICAgICAKKy0gICAgICAgICAg ICAgICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworLSAgICAgICAgICAgICAgICB9CistICAgICAg ICAgICAgCistICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19pX2Z0cF9jb250cm9sX2Rh dGFfc2V0X3N0YWNrKAorLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRs ZSwgc3RhY2spOworLSAgICAgICAgICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1Mp CistICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUg PSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElPTjsKKy0gICAgICAgIAor LSAgICAgICAgICAgICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7CistICAgICAgICAgICAgICAg IH0KKy0gICAgICAgICAgICAgICAgZ2xvYnVzX3hpb19zdGFja19kZXN0cm95KHN0YWNrKTsKKy0g ICAgICAgICAgICB9ICAgICAgCisrICAgICAgICAgICAgICAgIGlmKHRhcmdldC0+bmV0X3N0YWNr X2xpc3QpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIGdsb2J1c19p X2Z0cF9jb250cm9sX3VubG9hZF94aW9fZHJpdmVycygKKysgICAgICAgICAgICAgICAgICAgICAg ICB0YXJnZXQtPm5ldF9zdGFja19saXN0KTsKKysgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+ bmV0X3N0YWNrX2xpc3QgPSBHTE9CVVNfTlVMTDsKKysgICAgICAgICAgICAgICAgfQorKworKyAg ICAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfaV9mdHBfY29udHJvbF9sb2FkX3hpb19kcml2 ZXJzKAorKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5uZXRfc3RhY2tfc3RyLCAmdGFyZ2V0 LT5uZXRfc3RhY2tfbGlzdCk7CisrICAgICAgICAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNf U1VDQ0VTUykKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0 LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9DT05ORUNUSU9OOworKwor KyAgICAgICAgICAgICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisrICAgICAgICAgICAgICAg IH0KKysgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2lfZnRwX2NvbnRyb2xfY3JlYXRl X3N0YWNrKAorKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwgdGFy Z2V0LT5uZXRfc3RhY2tfbGlzdCwgJnN0YWNrKTsKKysgICAgICAgICAgICAgICAgaWYocmVzdWx0 ICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAg ICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5F Q1RJT047CisrCisrICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKysgICAg ICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfaV9mdHBf Y29udHJvbF9kYXRhX3NldF9zdGFjaygKKysgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+Y29u dHJvbF9oYW5kbGUsIHN0YWNrKTsKKysgICAgICAgICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JV U19TVUNDRVNTKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICB0YXJn ZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047Cisr CisrICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKysgICAgICAgICAgICAg ICAgfQorKyAgICAgICAgICAgICAgICBnbG9idXNfeGlvX3N0YWNrX2Rlc3Ryb3koc3RhY2spOwor KyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysg ICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQ X0NPTk5FQ1RJT047CisrCisrICAgICAgICAgICAgZ290byBub3RpZnlfZmF1bHQ7CisrICAgICAg ICB9CisrCisrICAgIHNraXBfc2V0bmV0c3RhY2s6CisrICAgICAgICB0YXJnZXQtPnN0YXRlID0g R0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1NFVERJU0tTVEFDSzsKKysgICAgICAgIGdv dG8gcmVkbzsKKysKKysKKysgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBf U0VURElTS1NUQUNLOgorKyAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5U X1RBUkdFVF9TRVRESVNLU1RBQ0s7CisrICAgICAgICBpZih0YXJnZXQtPmF0dHItPmRpc2tfc3Rh Y2tfc3RyID09IE5VTEwgfHwKKysgICAgICAgICAgICAodGFyZ2V0LT5kaXNrX3N0YWNrX3N0ciAh PSBOVUxMICYmCisrICAgICAgICAgICAgc3RyY21wKHRhcmdldC0+YXR0ci0+ZGlza19zdGFja19z dHIsIHRhcmdldC0+ZGlza19zdGFja19zdHIpID09IDApKQorKyAgICAgICAgeworKyAgICAgICAg ICAgIGdvdG8gc2tpcF9zZXRkaXNrc3RhY2s7CisrICAgICAgICB9CisrCisrICAgICAgICBtZW1z ZXQoJnRhcmdldC0+Y2FjaGVkX2RhdGFfY29ubiwKKysgICAgICAgICAgICAgICAnXDAnLAorKyAg ICAgICAgICAgICAgIHNpemVvZihnbG9idXNfaV9mdHBfY2xpZW50X2RhdGFfdGFyZ2V0X3QpKTsK KysKKysgICAgICAgIHRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX1RS QU5TRkVSX1BBUkFNRVRFUlM7CisrICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9u b3RpZnlfY29tbWFuZCgKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLAorKyAgICAgICAgICAg IHRhcmdldC0+dXJsX3N0cmluZywKKysgICAgICAgICAgICB0YXJnZXQtPm1hc2ssCisrICAgICAg ICAgICAgIlNJVEUgU0VURElTS1NUQUNLICVzIiBDUkxGLAorKyAgICAgICAgICAgIHRhcmdldC0+ YXR0ci0+ZGlza19zdGFja19zdHIpOworKworKyAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3Rh dGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CisrICAgICAgICAgICAgY2xp ZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwK KysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9I QU5ETEVfRkFJTFVSRSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAg IH0KKysKKysgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRs ZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNF X1NFVFVQX0NPTk5FQ1RJT04gfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PQorKyAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5F Q1RJT04pOworKworKyAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29t bWFuZCgKKysgICAgICAgICAgICB0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorKyAgICAgICAgICAg ICJTSVRFIFNFVERJU0tTVEFDSyAlcyIgQ1JMRiwKKysgICAgICAgICAgICBnbG9idXNfaV9mdHBf Y2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAgICAgICAgICAgIHRhcmdldCwKKysgICAgICAg ICAgICB0YXJnZXQtPmF0dHItPmRpc2tfc3RhY2tfc3RyKTsKKysgICAgICAgIGlmKHJlc3VsdCAh PSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIHJlc3VsdF9m YXVsdDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGJyZWFrOworKworKyAgICBjYXNlIEdMT0JV U19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRESVNLU1RBQ0s6CisrICAgICAgICBnbG9idXNfYXNzZXJ0 KAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xP QlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8CisrICAgICAg ICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKysKKysgICAgICAgIGlmKCghZXJy b3IpICYmCisrICAgICAgICAgICByZXNwb25zZS0+cmVzcG9uc2VfY2xhc3MgPT0gR0xPQlVTX0ZU UF9QT1NJVElWRV9DT01QTEVUSU9OX1JFUExZKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGlm KHRhcmdldC0+ZGlza19zdGFja19zdHIpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ICBnbG9idXNfZnJlZSh0YXJnZXQtPmRpc2tfc3RhY2tfc3RyKTsKKysgICAgICAgICAgICB9Cisr ICAgICAgICAgICAgdGFyZ2V0LT5kaXNrX3N0YWNrX3N0ciA9CisrICAgICAgICAgICAgICAgIGds b2J1c19saWJjX3N0cmR1cCh0YXJnZXQtPmF0dHItPmRpc2tfc3RhY2tfc3RyKTsKKysgICAgICAg IH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgICB0YXJnZXQtPnN0YXRl ID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CisrCisrICAgICAg ICAgICAgZ290byBub3RpZnlfZmF1bHQ7CisrICAgICAgICB9CisrCisrICAgIHNraXBfc2V0ZGlz a3N0YWNrOgorKyAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdF VF9TRVRVUF9NT0RFOworKyAgICAgICAgZ290byByZWRvOworKworKworKyAgICBjYXNlIEdMT0JV U19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9NT0RFOgorKyAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9 IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9NT0RFOworKyAgICAgICAgaWYodGFyZ2V0LT5hdHRy LT5tb2RlID09IHRhcmdldC0+bW9kZSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIHNr aXBfbW9kZTsKKysgICAgICAgIH0KKysgICAgICAgIG1lbXNldCgmdGFyZ2V0LT5jYWNoZWRfZGF0 YV9jb25uLAorKyAgICAgICAgICAgICAgICdcMCcsCisrICAgICAgICAgICAgICAgc2l6ZW9mKGds b2J1c19pX2Z0cF9jbGllbnRfZGF0YV90YXJnZXRfdCkpOworKworKyAgICAgICAgdGFyZ2V0LT5t YXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfVFJBTlNGRVJfUEFSQU1FVEVSUzsKKysg ICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorKyAgICAg ICAgICAgIGNsaWVudF9oYW5kbGUsCisrICAgICAgICAgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAor KyAgICAgICAgICAgIHRhcmdldC0+bWFzaywKKysgICAgICAgICAgICAiTU9ERSAlYyIgQ1JMRiwK KysgICAgICAgICAgICAoY2hhcikgdGFyZ2V0LT5hdHRyLT5tb2RlKTsKKysKKysgICAgICAgIGlm KGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCB8 fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5U X0hBTkRMRV9SRVNUQVJUIHx8CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0g R0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCisrICAgICAgICB7CisrICAgICAgICAg ICAgYnJlYWs7CisrICAgICAgICB9CisrCisrICAgICAgICBnbG9idXNfYXNzZXJ0KAorKyAgICAg ICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9D TElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8CisrICAgICAgICAgICAgY2xp ZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKysKKysgICAgICAgIHJlc3VsdCA9IGdsb2J1c19m dHBfY29udHJvbF9zZW5kX2NvbW1hbmQoCisrICAgICAgICAgICAgdGFyZ2V0LT5jb250cm9sX2hh bmRsZSwKKysgICAgICAgICAgICAiTU9ERSAlYyIgQ1JMRiwKKysgICAgICAgICAgICBnbG9idXNf aV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAgICAgICAgICAgIHRhcmdldCwKKysg ICAgICAgICAgICAoY2hhcikgdGFyZ2V0LT5hdHRyLT5tb2RlKTsKKysKKysgICAgICAgIGlmKHJl c3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIHJl c3VsdF9mYXVsdDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGJyZWFrOworKworKyAgICBjYXNl IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9NT0RFOgorKyAgICAgICAgZ2xvYnVzX2Fzc2VydCgK KysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JV U19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorKyAgICAgICAg ICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CisrCisrICAgICAgICBpZigoIWVycm9y KSAmJgorKyAgICAgICAgICAgcmVzcG9uc2UtPnJlc3BvbnNlX2NsYXNzID09IEdMT0JVU19GVFBf UE9TSVRJVkVfQ09NUExFVElPTl9SRVBMWSkKKysgICAgICAgIHsKKysgICAgICAgICAgICB0YXJn ZXQtPm1vZGUgPSB0YXJnZXQtPmF0dHItPm1vZGU7CisrCisrICAgICAgICAgICAgLyogZGlzYWJs ZSBzb3VyY2UgcGFzdiAqLworKyAgICAgICAgICAgIGlmKHRhcmdldC0+bW9kZSA9PSBHTE9CVVNf RlRQX0NPTlRST0xfTU9ERV9FWFRFTkRFRF9CTE9DSykKKysgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnNvdXJjZV9wYXN2ID0gR0xPQlVTX0ZBTFNFOworKyAg ICAgICAgICAgIH0KKysKKysgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xf bG9jYWxfbW9kZSh0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+bW9kZSk7CisrICAgICAgICAg ICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgICAgIHsKKysgICAgICAg ICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQor KyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBH TE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElPTjsKKysKKysgICAgICAgICAg ICBnb3RvIG5vdGlmeV9mYXVsdDsKKysgICAgICAgIH0KKysKKysgICAgc2tpcF9tb2RlOgorKyAg ICAgICAgaWYoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfQ0tTTSkKKysg ICAgICAgIHsKKysgICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRf VEFSR0VUX1NFVFVQX0NLU007CisrICAgICAgICB9CisrICAgICAgICBlbHNlCisrICAgICAgICB7 CisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9T RVRVUF9TSVpFOworKyAgICAgICAgfQorKyAgICAgICAgZ290byByZWRvOworKworKyAgICBjYXNl IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9DS1NNOgorKworKworKyAgICAgICAgdGFy Z2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9ORUVEX0NPTVBMRVRFOworKwor KyAgICAgICAgdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfSU5GT1JN QVRJT047CisrCisrICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfY29t bWFuZCgKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLAorKyAgICAgICAgICAgIHRhcmdldC0+ dXJsX3N0cmluZywKKysgICAgICAgICAgICB0YXJnZXQtPm1hc2ssCisrICAgICAgICAgICAgIkNL U00gJXMgJSIgR0xPQlVTX09GRl9UX0ZPUk1BVCAiICUiIEdMT0JVU19PRkZfVF9GT1JNQVQgIiAl cyIgQ1JMRiwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5jaGVja3N1bV9hbGcsCisrICAg ICAgICAgICAgY2xpZW50X2hhbmRsZS0+Y2hlY2tzdW1fb2Zmc2V0LAorKyAgICAgICAgICAgIGNs aWVudF9oYW5kbGUtPmNoZWNrc3VtX2xlbmd0aCwKKysgICAgICAgICAgICBwYXRobmFtZSk7Cisr CisrICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9I QU5ETEVfQUJPUlQgfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9C VVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5k bGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorKyAgICAgICAg eworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKworKyAgICAgICAgZ2xvYnVzX2Fz c2VydChjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgICAgICAgICAgICBHTE9C VVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04gfHwKKysgICAgICAg ICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICAgICAg ICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7Cisr CisrICAgICAgICByZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorKyAg ICAgICAgICAgIHRhcmdldC0+Y29udHJvbF9oYW5kbGUsCisrICAgICAgICAgICAgIkNLU00gJXMg JSIgR0xPQlVTX09GRl9UX0ZPUk1BVCAiICUiIEdMT0JVU19PRkZfVF9GT1JNQVQgIiAlcyIgQ1JM RiwKKysgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAor KyAgICAgICAgICAgIHRhcmdldCwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5jaGVja3N1 bV9hbGcsCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+Y2hlY2tzdW1fb2Zmc2V0LAorKyAg ICAgICAgICAgIGNsaWVudF9oYW5kbGUtPmNoZWNrc3VtX2xlbmd0aCwKKysgICAgICAgICAgICBw YXRobmFtZSk7CisrCisrICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisrICAg ICAgICB7CisrICAgICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisrICAgICAgICB9CisrICAg ICAgICBicmVhazsKKysKKysgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBf U0laRToKKysgICAgICAgIC8qCisrICAgICAgICAgKiBEb2luZyBhIFNJWkUgaXNuJ3QgbmVjZXNz YXJ5IGJ1dCBpcyBuaWNlIGZvcgorKyAgICAgICAgICogLSByZXN1bWluZyAgc3RyZWFtIG1vZGUg M3JkIHBhcnR5IHRyYW5zZmVycworKyAgICAgICAgICoKKysgICAgICAgICAqIFNraXAgaWYKKysg ICAgICAgICAqIC0gc2VydmVyIGRvZXNuJ3QgZG8gU0laRQorKyAgICAgICAgICogLSBub3QgaW50 ZXJlc3RpbmcKKysgICAgICAgICAqICAgd2hlcmUgaW50ZXJlc3RpbmcgaXMKKysgICAgICAgICAq ICAgLSBkZXN0aW5hdGlvbiBvZiBzdHJlYW0gbW9kZSAzcmQgcGFydHkgdHJhbnNmZXIgdy8gcmVz dW1lCisrICAgICAgICAgKiAgICAgYXR0ciBzZXQgdG8gdHJ1ZQorKyAgICAgICAgICovCisrICAg ICAgICBpZihnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfZ2V0KAorKyAgICAgICAgICAgICAg ICB0YXJnZXQtPmZlYXR1cmVzLAorKyAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9G RUFUVVJFX1NJWkUpID09IEdMT0JVU19GQUxTRQorKyAgICAgICAgICAgfHwKKysgICAgICAgICAg ICghCisrICAgICAgICAgICAgICAgKAorKyAgICAgICAgICAgICAgICAgICAoY2xpZW50X2hhbmRs ZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNGRVIgJiYKKysgICAgICAgICAgICAgICAg ICAgIHRhcmdldCA9PSBjbGllbnRfaGFuZGxlLT5kZXN0ICYmCisrICAgICAgICAgICAgICAgICAg ICB0YXJnZXQtPmF0dHItPnJlc3VtZV90aGlyZF9wYXJ0eSAmJgorKyAgICAgICAgICAgICAgICAg ICAgdGFyZ2V0LT5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJPTF9NT0RFX1NUUkVBTSkKKysgICAg ICAgICAgICAgICAgICAgfHwKKysgICAgICAgICAgICAgICAgICAgKGNsaWVudF9oYW5kbGUtPm9w ID09IEdMT0JVU19GVFBfQ0xJRU5UX1NJWkUpCisrICAgICAgICAgICAgICAgKQorKyAgICAgICAg ICAgKQorKyAgICAgICAgICApCisrICAgICAgICB7CisrICAgICAgICAgICAgaWYoY2xpZW50X2hh bmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfU0laRSkKKysgICAgICAgICAgICB7CisrICAg ICAgICAgICAgICAgIGVycm9yID0gR0xPQlVTX0lfRlRQX0NMSUVOVF9FUlJPUl9VTlNVUFBPUlRF RF9GRUFUVVJFKCJTSVpFIik7CisrCisrICAgICAgICAgICAgICAgIGdvdG8gbm90aWZ5X2ZhdWx0 OworKworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBnb3RvIHNraXBfc2l6ZTsKKysgICAg ICAgIH0KKysKKysgICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJ RU5UX1NJWkUpCisrICAgICAgICB7CisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JV U19GVFBfQ0xJRU5UX1RBUkdFVF9ORUVEX0NPTVBMRVRFOworKyAgICAgICAgfQorKyAgICAgICAg ZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQ X0NMSUVOVF9UQVJHRVRfU0laRTsKKysgICAgICAgIH0KKysKKysgICAgICAgIHRhcmdldC0+bWFz ayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX0lORk9STUFUSU9OOworKworKyAgICAgICAg Z2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCisrICAgICAgICAgICAg Y2xpZW50X2hhbmRsZSwKKysgICAgICAgICAgICB0YXJnZXQtPnVybF9zdHJpbmcsCisrICAgICAg ICAgICAgdGFyZ2V0LT5tYXNrLAorKyAgICAgICAgICAgICJTSVpFICVzIiBDUkxGLAorKyAgICAg ICAgICAgIHBhdGhuYW1lKTsKKysKKysgICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09 IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCB8fAorKyAgICAgICAgICAgIGNsaWVudF9o YW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CisrICAg ICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X0ZBSUxVUkUpCisrICAgICAgICB7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9Cisr CisrICAgICAgICBnbG9idXNfYXNzZXJ0KGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAg ICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09O TkVDVElPTiB8fAorKyAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PQorKyAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9T RVRVUF9DT05ORUNUSU9OKTsKKysKKysgICAgICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJv bF9zZW5kX2NvbW1hbmQoCisrICAgICAgICAgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKysg ICAgICAgICAgICAiU0laRSAlcyIgQ1JMRiwKKysgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xp ZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAgICAgICAgICAgIHRhcmdldCwKKysgICAgICAgICAg ICBwYXRobmFtZSk7CisrCisrICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisr ICAgICAgICB7CisrICAgICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisrICAgICAgICB9Cisr ICAgICAgICBicmVhazsKKysKKysgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0la RToKKysgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+ c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NF VFVQX0NPTk5FQ1RJT04KKysgICAgICAgICAgICB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5k bGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1Rf U0VUVVBfQ09OTkVDVElPTik7CisrCisrICAgICAgICBpZihlcnJvciAhPSBHTE9CVVNfU1VDQ0VT UykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIG5vdGlmeV9mYXVsdDsKKysgICAgICAg IH0KKysgICAgICAgIGlmKHJlc3BvbnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BP U0lUSVZFX0NPTVBMRVRJT05fUkVQTFkpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVz X2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCgKKysgICAgICAgICAgICAgICAgdGFyZ2V0LT5mZWF0 dXJlcywKKysgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9TSVpFLAor KyAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9UUlVFKTsKKysKKysgICAgICAgICAg ICBpZihjbGllbnRfaGFuZGxlLT5zb3VyY2UgPT0gdGFyZ2V0KQorKyAgICAgICAgICAgIHsKKysg ICAgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfc2Nhbl9vZmZfdCgoY2hhciAqKSByZXNwb25zZS0+ cmVzcG9uc2VfYnVmZmVyKzQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmNsaWVudF9oYW5kbGUtPnNvdXJjZV9zaXplLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdMT0JVU19OVUxMKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAg ICAgZWxzZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX2J5dGVfdCAq IHNpemU7CisrICAgICAgICAgICAgICAgIGNvbnN0IGdsb2J1c19ieXRlX3QgKiBwOworKyAgICAg ICAgICAgICAgICBnbG9idXNfYnl0ZV90ICpxOworKworKyAgICAgICAgICAgICAgICBzaXplID0g Z2xvYnVzX2xpYmNfbWFsbG9jKAorKyAgICAgICAgICAgICAgICAgICAgc3RybGVuKChjaGFyICop IHJlc3BvbnNlLT5yZXNwb25zZV9idWZmZXIrMykpOworKyAgICAgICAgICAgICAgICBmb3IocCA9 IHJlc3BvbnNlLT5yZXNwb25zZV9idWZmZXIrNCwgcSA9IHNpemU7CisrICAgICAgICAgICAgICAg ICAgICBpc2RpZ2l0KCpwKTsKKysgICAgICAgICAgICAgICAgICAgIHArKyxxKyspCisrICAgICAg ICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICpxID0gKnA7CisrICAgICAgICAgICAg ICAgIH0KKysgICAgICAgICAgICAgICAgKnEgPSAnXDAnOworKworKyAgICAgICAgICAgICAgICBp Zih0YXJnZXQtPm1vZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX01PREVfU1RSRUFNICYmCisrICAg ICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnJlc3RhcnRfbWFya2VyLnR5cGUgPT0KKysg ICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfUkVTVEFSVF9OT05FKQorKyAgICAg ICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5yZXN0YXJ0 X21hcmtlci50eXBlID0KKysgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVO VF9SRVNUQVJUX1NUUkVBTTsKKysKKysgICAgICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX3Nj YW5fb2ZmX3QoCisrICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgc2l6ZSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAmY2xpZW50X2hhbmRsZS0+cmVzdGFydF9tYXJrZXIuc3RyZWFt Lm9mZnNldCwKKysgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCk7CisrCisrICAg ICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5yZXN0YXJ0X21hcmtlci5zdHJlYW0uYXNj aWlfb2Zmc2V0ID0KKysgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5yZXN0 YXJ0X21hcmtlci5zdHJlYW0ub2Zmc2V0OworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAg ICAgICAgIGdsb2J1c19saWJjX2ZyZWUoc2l6ZSk7CisrICAgICAgICAgICAgfQorKworKyAgICAg ICAgfQorKyAgICAgICAgZWxzZSBpZihyZXNwb25zZS0+Y29kZSAvIDEwID09IDUwKQorKyAgICAg ICAgeworKyAgICAgICAgICAgIC8qIEEgNTAwIHJlc3BvbnNlIG1lYW5zIHRoZSBzZXJ2ZXIgZG9l c24ndCBrbm93IGFib3V0IFNJWkUgKi8KKysgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50 X2ZlYXR1cmVfc2V0KAorKyAgICAgICAgICAgICAgICB0YXJnZXQtPmZlYXR1cmVzLAorKyAgICAg ICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9GRUFUVVJFX1NJWkUsCisrICAgICAgICAgICAg ICAgIEdMT0JVU19GVFBfQ0xJRU5UX0ZBTFNFKTsKKysKKysgICAgICAgIH0KKysgICAgICAgIGVs c2UgaWYocmVzcG9uc2UtPmNvZGUgPT0gNTUwICYmIC8qIGZpbGUgdW5hdmFpbGFibGUgKi8KKysg ICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+ZGVzdCA9PSB0YXJnZXQpCisrICAgICAgICB7 CisrICAgICAgICAgICAgLyoKKysgICAgICAgICAgICAgKiBUaGUgZmlsZSBtYXkgbm90IGV4aXN0 IG9uIHRoZSByZW1vdGUgc2lkZSBpZiB3ZSdyZQorKyAgICAgICAgICAgICAqIHJlc3RhcnRpbmcu CisrICAgICAgICAgICAgICovCisrICAgICAgICAgICAgOworKyAgICAgICAgfQorKyAgICAgICAg ZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIC8qIEFueSBvdGhlciByZXNwb25zZSBpcyBu b3QgZ29vZC4gKi8KKysgICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElF TlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CisrICAgICAgICAgICAgaWYoKCFjbGllbnRfaGFu ZGxlLT5lcnIpICYmICghZXJyb3IpKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAg ZXJyb3IgPSBHTE9CVVNfSV9GVFBfQ0xJRU5UX0VSUk9SX1JFU1BPTlNFKHJlc3BvbnNlKTsKKysg ICAgICAgICAgICB9CisrICAgICAgICAgICAgZ290byBjb25uZWN0aW9uX2Vycm9yOworKyAgICAg ICAgfQorKworKyAgICBza2lwX3NpemU6CisrICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVT X0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0JVRlNJWkU7CisrICAgICAgICBnb3RvIHJlZG87Cisr CisrICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0JVRlNJWkU6CisrICAg ICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0JVRlNJWkU7Cisr CisrICAgICAgICAvKgorKyAgICAgICAgICogVE9ETzogY29tcGFyZSBidWZmZXIgbW9kZS9zaXpl IHByb3Blcmx5IGZvciBhbGwgaW5zdGFuY2VzCisrICAgICAgICAgKiBvZiB1bmlvbiBjb21wb25l bnRzCisrICAgICAgICAgKi8KKysgICAgICAgIGlmKHRhcmdldC0+YXR0ci0+YnVmZmVyLm1vZGUg PT0gdGFyZ2V0LT50Y3BfYnVmZmVyLm1vZGUgJiYKKysgICAgICAgICAgIHRhcmdldC0+YXR0ci0+ YnVmZmVyLmZpeGVkLnNpemUgPT0gdGFyZ2V0LT50Y3BfYnVmZmVyLmZpeGVkLnNpemUpCisrICAg ICAgICB7CisrICAgICAgICAgICAgZ290byBza2lwX2J1ZnNpemU7CisrICAgICAgICB9CisrICAg IGlmKCEoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfR0VUIHx8CisrICAg ICAgICBjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9QVVQgfHwKKysgICAg ICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX0xJU1QgfHwKKysgICAg ICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX05MU1QgfHwKKysgICAg ICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX01MU0QgfHwKKysgICAg ICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX01MU1IgfHwKKysgICAg ICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX1RSQU5TRkVSKSkKKysg ICAgeworKyAgICAgICAgZ290byBza2lwX2J1ZnNpemU7CisrICAgIH0KKysKKysgICAgICAgIGJ1 ZmZlcl9jbWQgPSBnbG9idXNfbF9mdHBfY2xpZW50X2d1ZXNzX2J1ZmZlcl9jb21tYW5kKGNsaWVu dF9oYW5kbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0YXJnZXQpOworKyAgICAgICAgaWYoYnVmZmVyX2NtZCA9PSBHTE9C VVNfTlVMTCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBlcnJvciA9IEdMT0JVU19JX0ZUUF9D TElFTlRfRVJST1JfVU5TVVBQT1JURURfRkVBVFVSRSgKKysgICAgICAgICAgICAgICAgIkFkanVz dCBzb2NrZXQgYnVmZmVyIik7CisrCisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JV U19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9DT05ORUNUSU9OOworKworKyAgICAgICAgICAgIGdv dG8gbm90aWZ5X2ZhdWx0OworKyAgICAgICAgfQorKworKyAgICAgICAgLyogQ2hvb3NlIHRoZSBw cm9wZXIgc3RyaW5nIHRvIHBhc3MgYWxvbmcgd2l0aCB0aGUgY2hvc2VuCisrICAgICAgICAgKiBi dWZmZXIgc2l6ZSBjb21tYW5kLgorKyAgICAgICAgICovCisrICAgICAgICBzd2l0Y2godGFyZ2V0 LT5hdHRyLT5idWZmZXIubW9kZSkKKysgICAgICAgIHsKKysgICAgICAgIGNhc2UgR0xPQlVTX0ZU UF9DT05UUk9MX1RDUEJVRkZFUl9ERUZBVUxUOgorKyAgICAgICAgICAgIHRhcmdldC0+YXR0ci0+ YnVmZmVyLmZpeGVkLnNpemUgPSAwVUw7CisrICAgICAgICBjYXNlIEdMT0JVU19GVFBfQ09OVFJP TF9UQ1BCVUZGRVJfRklYRUQ6CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIEdM T0JVU19GVFBfQ09OVFJPTF9UQ1BCVUZGRVJfQVVUT01BVElDOgorKyAgICAgICAgICAgIGVycm9y ID0gR0xPQlVTX0lfRlRQX0NMSUVOVF9FUlJPUl9VTlNVUFBPUlRFRF9GRUFUVVJFKCJBQlVGIik7 CisrCisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdF VF9TRVRVUF9DT05ORUNUSU9OOworKworKyAgICAgICAgICAgIGdvdG8gbm90aWZ5X2ZhdWx0Owor KyAgICAgICAgfQorKyAgICAgICAgdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01E X01BU0tfVFJBTlNGRVJfUEFSQU1FVEVSUzsKKysgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRf cGx1Z2luX25vdGlmeV9jb21tYW5kKAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUsCisrICAg ICAgICAgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorKyAgICAgICAgICAgIHRhcmdldC0+bWFzaywK KysgICAgICAgICAgICAiJXMgJWx1IiBDUkxGLAorKyAgICAgICAgICAgIGJ1ZmZlcl9jbWQsCisr ICAgICAgICAgICAgdGFyZ2V0LT5hdHRyLT5idWZmZXIuZml4ZWQuc2l6ZSk7CisrCisrICAgICAg ICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJP UlQgfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRl ID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorKyAgICAgICAgeworKyAgICAg ICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKworKyAgICAgICAgZ2xvYnVzX2Fzc2VydChjbGll bnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04gfHwKKysgICAgICAgICAgICAgICAg ICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICAgICAgICAgICAgR0xP QlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CisrCisrICAgICAg ICByZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorKyAgICAgICAgICAg IHRhcmdldC0+Y29udHJvbF9oYW5kbGUsCisrICAgICAgICAgICAgIiVzICVsdSIgQ1JMRiwKKysg ICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAgICAg ICAgICAgIHRhcmdldCwKKysgICAgICAgICAgICBidWZmZXJfY21kLAorKyAgICAgICAgICAgIHRh cmdldC0+YXR0ci0+YnVmZmVyLmZpeGVkLnNpemUpOworKworKyAgICAgICAgaWYocmVzdWx0ICE9 IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gcmVzdWx0X2Zh dWx0OworKyAgICAgICAgfQorKyAgICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX0JVRlNJWkU6CisrICAgICAgICBnbG9idXNfYXNzZXJ0KAorKyAgICAg ICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9D TElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8CisrICAgICAgICAgICAgY2xp ZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKysKKysgICAgICAgIGlmKCghZXJyb3IpICYmCisr ICAgICAgICAgICByZXNwb25zZS0+cmVzcG9uc2VfY2xhc3MgPT0gR0xPQlVTX0ZUUF9QT1NJVElW RV9DT01QTEVUSU9OX1JFUExZKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdsb2J1c19sX2Z0 cF9jbGllbnRfdXBkYXRlX2J1ZmZlcl9mZWF0dXJlKAorKyAgICAgICAgICAgICAgICBjbGllbnRf aGFuZGxlLCB0YXJnZXQsIEdMT0JVU19GVFBfQ0xJRU5UX1RSVUUpOworKworKyAgICAgICAgICAg IHRhcmdldC0+dGNwX2J1ZmZlciA9IHRhcmdldC0+YXR0ci0+YnVmZmVyOworKworKyAgICAgICAg ICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF90Y3BfYnVmZmVyKAorKyAgICAg ICAgICAgICAgICB0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorKyAgICAgICAgICAgICAgICAmdGFy Z2V0LT50Y3BfYnVmZmVyKTsKKysKKysgICAgICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NV Q0NFU1MpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBnb3RvIHJlc3VsdF9mYXVs dDsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgICBlbHNlIGlmKGVycm9yKQor KyAgICAgICAgeworKyAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVO VF9UQVJHRVRfU0VUVVBfQ09OTkVDVElPTjsKKysKKysgICAgICAgICAgICBnb3RvIG5vdGlmeV9m YXVsdDsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAg ICBnbG9idXNfbF9mdHBfY2xpZW50X3VwZGF0ZV9idWZmZXJfZmVhdHVyZSgKKysgICAgICAgICAg ICAgICAgY2xpZW50X2hhbmRsZSwgdGFyZ2V0LCBHTE9CVVNfRlRQX0NMSUVOVF9GQUxTRSk7Cisr CisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9T RVRVUF9CVUZTSVpFOworKyAgICAgICAgICAgIGdvdG8gcmVkbzsKKysgICAgICAgIH0KKysKKysg ICAgc2tpcF9idWZzaXplOgorKyAgICAgICAgaWYodGFyZ2V0LT5tb2RlID09IEdMT0JVU19GVFBf Q09OVFJPTF9NT0RFX0VYVEVOREVEX0JMT0NLICYmCisrICAgICAgICAgICAgKGNsaWVudF9oYW5k bGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX0dFVCB8fAorKyAgICAgICAgICAgICBjbGllbnRf aGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9NTFNEIHx8CisrICAgICAgICAgICAgY2xp ZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfTUxTUiB8fAorKyAgICAgICAgICAg ICBjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9MSVNUIHx8CisrICAgICAg ICAgICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX05MU1QgfHwKKysg ICAgICAgICAgICAgKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX1RSQU5T RkVSICYmCisrICAgICAgICAgICAgICB0YXJnZXQgPT0gY2xpZW50X2hhbmRsZS0+c291cmNlKSkp CisrICAgICAgICB7CisrICAgICAgICAgICAgLyogT25seSBzZW5kIE9QVFMgUkVUUiBpZiB0aGUg c291cmNlIGNvbnRyb2wgaGFuZGxlIHdpbGwKKysgICAgICAgICAgICAgKiBiZSB1c2VkLgorKyAg ICAgICAgICAgICAqLworKyAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NM SUVOVF9UQVJHRVRfU0VUVVBfUkVNT1RFX1JFVFJfT1BUUzsKKysgICAgICAgIH0KKysgICAgICAg IGVsc2UgaWYodGFyZ2V0LT5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJPTF9NT0RFX0VYVEVOREVE X0JMT0NLICYmCisrICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19G VFBfQ0xJRU5UX1BVVCkKKysgICAgICAgIHsKKysgICAgICAgICAgICAvKiBPbmx5IGRvIGxvY2Fs X2xheW91dCBhbmQgbG9jYWxfcGFyYWxsZWxpc20gaWYgd2UgYXJlCisrICAgICAgICAgICAgICog cmVjZWl2aW5nIHRoZSBkYXRhIChub3QgM3JkIHBhcnR5KQorKyAgICAgICAgICAgICAqLworKyAg ICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBf TE9DQUxfUkVUUl9PUFRTOworKyAgICAgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAgICAgewor KyAgICAgICAgICAgIGdvdG8gc2tpcF9vcHRzX3JldHI7CisrICAgICAgICB9CisrCisrICAgICAg ICBnb3RvIHJlZG87CisrCisrICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQ X1JFTU9URV9SRVRSX09QVFM6CisrCisrICAgICAgICBwYXJhbGxlbGlzbV9vcHQgPSBnbG9idXNf bF9mdHBfY2xpZW50X3BhcmFsbGVsaXNtX3N0cmluZyh0YXJnZXQpOworKyAgICAgICAgbGF5b3V0 X29wdCA9IGdsb2J1c19sX2Z0cF9jbGllbnRfbGF5b3V0X3N0cmluZyh0YXJnZXQpOworKworKyAg ICAgICAgaWYoKCFwYXJhbGxlbGlzbV9vcHQpICYmICghbGF5b3V0X29wdCkpCisrICAgICAgICB7 CisrICAgICAgICAgICAgZ290byBza2lwX29wdHNfcmV0cjsKKysgICAgICAgIH0KKysKKysgICAg ICAgIHRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX1RSQU5TRkVSX1BB UkFNRVRFUlM7CisrCisrICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlf Y29tbWFuZCgKKysgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZSwKKysgICAgICAgICAgICAg ICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorKyAgICAgICAgICAgICAgICB0YXJnZXQtPm1hc2ssCisr ICAgICAgICAgICAgICAgICJPUFRTIFJFVFIgJXMlcyIgQ1JMRiwKKysgICAgICAgICAgICAgICAg bGF5b3V0X29wdCA/IGxheW91dF9vcHQgOiAiIiwKKysgICAgICAgICAgICAgICAgcGFyYWxsZWxp c21fb3B0ID8gcGFyYWxsZWxpc21fb3B0IDogIiIpOworKworKyAgICAgICAgaWYoY2xpZW50X2hh bmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CisrICAgICAg ICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JF U1RBUlQgfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQ X0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBpZihwYXJh bGxlbGlzbV9vcHQpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBnbG9idXNfbGli Y19mcmVlKHBhcmFsbGVsaXNtX29wdCk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGlm KGxheW91dF9vcHQpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBnbG9idXNfbGli Y19mcmVlKGxheW91dF9vcHQpOworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBicmVhazsK KysgICAgICAgIH0KKysgICAgICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9zZW5kX2Nv bW1hbmQoCisrICAgICAgICAgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKysgICAgICAgICAg ICAiT1BUUyBSRVRSICVzJXMiIENSTEYsCisrICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVu dF9yZXNwb25zZV9jYWxsYmFjaywKKysgICAgICAgICAgICB0YXJnZXQsCisrICAgICAgICAgICAg bGF5b3V0X29wdCA/IGxheW91dF9vcHQgOiAiIiwKKysgICAgICAgICAgICBwYXJhbGxlbGlzbV9v cHQgPyBwYXJhbGxlbGlzbV9vcHQgOiAiIik7CisrCisrICAgICAgICBpZihwYXJhbGxlbGlzbV9v cHQpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVzX2xpYmNfZnJlZShwYXJhbGxlbGlz bV9vcHQpOworKyAgICAgICAgfQorKyAgICAgICAgaWYobGF5b3V0X29wdCkKKysgICAgICAgIHsK KysgICAgICAgICAgICBnbG9idXNfbGliY19mcmVlKGxheW91dF9vcHQpOworKyAgICAgICAgfQor KyAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgeworKyAgICAg ICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworKyAgICAgICAgfQorKworKyAgICAgICAgdGFyZ2V0 LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9SRU1PVEVfUkVUUl9PUFRTOworKyAg ICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQ X0xPQ0FMX1JFVFJfT1BUUzoKKysKKysgICAgICAgIGlmKHRhcmdldC0+YXR0ci0+cGFyYWxsZWxp c20ubW9kZSA9PSB0YXJnZXQtPnBhcmFsbGVsaXNtLm1vZGUgJiYKKysgICAgICAgICAgICAodGFy Z2V0LT5wYXJhbGxlbGlzbS5tb2RlICE9IEdMT0JVU19GVFBfQ09OVFJPTF9QQVJBTExFTElTTV9G SVhFRAorKyAgICAgICAgICAgICAgICB8fCB0YXJnZXQtPmF0dHItPnBhcmFsbGVsaXNtLmZpeGVk LnNpemUgPT0KKysgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+cGFyYWxsZWxpc20uZml4ZWQu c2l6ZSkgJiYKKysgICAgICAgICAgICB0YXJnZXQtPmF0dHItPmxheW91dC5tb2RlID09IHRhcmdl dC0+bGF5b3V0Lm1vZGUgJiYKKysgICAgICAgICAgICAgICAgKHRhcmdldC0+bGF5b3V0Lm1vZGUg IT0KKysgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ09OVFJPTF9TVFJJUElOR19CTE9D S0VEX1JPVU5EX1JPQklOCisrICAgICAgICAgICAgICAgICAgICB8fCB0YXJnZXQtPmF0dHItPmxh eW91dC5yb3VuZF9yb2Jpbi5ibG9ja19zaXplID09CisrICAgICAgICAgICAgICAgICAgICAgICAg dGFyZ2V0LT5sYXlvdXQucm91bmRfcm9iaW4uYmxvY2tfc2l6ZSkpCisrICAgICAgICB7CisrICAg ICAgICAgICAgZ290byBza2lwX29wdHNfcmV0cjsKKysgICAgICAgIH0KKysKKysgICAgICAgIHJl c3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9wYXJhbGxlbGlzbSgKKysgICAgICAgICAg ICB0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorKyAgICAgICAgICAgICZ0YXJnZXQtPmF0dHItPnBh cmFsbGVsaXNtKTsKKysKKysgICAgICAgIGlmKHJlc3VsdCkKKysgICAgICAgIHsKKysgICAgICAg ICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKysgICAgICAgIH0KKysgICAgICAgIHJlc3VsdCA9IGds b2J1c19mdHBfY29udHJvbF9sb2NhbF9sYXlvdXQodGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhcmdldC0+ YXR0ci0+bGF5b3V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAwKTsKKysgICAgICAgIGlmKHJlc3VsdCkKKysgICAgICAgIHsKKysgICAgICAgICAg ICBnb3RvIHJlc3VsdF9mYXVsdDsKKysgICAgICAgIH0KKysKKysgICAgICAgIG1lbWNweSgmdGFy Z2V0LT5wYXJhbGxlbGlzbSwKKysgICAgICAgICAgICAgICAmdGFyZ2V0LT5hdHRyLT5wYXJhbGxl bGlzbSwKKysgICAgICAgICAgICAgICBzaXplb2YoZ2xvYnVzX2Z0cF9jb250cm9sX3BhcmFsbGVs aXNtX3QpKTsKKysKKysgICAgICAgIG1lbWNweSgmdGFyZ2V0LT5wYXJhbGxlbGlzbSwKKysgICAg ICAgICAgICAgICAmdGFyZ2V0LT5hdHRyLT5wYXJhbGxlbGlzbSwKKysgICAgICAgICAgICAgICBz aXplb2YoZ2xvYnVzX2Z0cF9jb250cm9sX3BhcmFsbGVsaXNtX3QpKTsKKysKKysgICAgICAgIGdv dG8gc2tpcF9vcHRzX3JldHI7CisrCisrICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VU X1JFTU9URV9SRVRSX09QVFM6CisrICAgICAgICBnbG9idXNfYXNzZXJ0KAorKyAgICAgICAgICAg IGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRf SEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OCisrICAgICAgICAgICAgfHwKKysgICAgICAg ICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJ RU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworKworKyAgICAgICAgaWYoKCFlcnJv cikgJiYKKysgICAgICAgICAgIHJlc3BvbnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQ X1BPU0lUSVZFX0NPTVBMRVRJT05fUkVQTFkpCisrICAgICAgICB7CisrICAgICAgICAgICAgbWVt Y3B5KCZ0YXJnZXQtPnBhcmFsbGVsaXNtLAorKyAgICAgICAgICAgICAgICAgICAmdGFyZ2V0LT5h dHRyLT5wYXJhbGxlbGlzbSwKKysgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGdsb2J1c19mdHBf Y29udHJvbF9wYXJhbGxlbGlzbV90KSk7CisrICAgICAgICAgICAgbWVtY3B5KCZ0YXJnZXQtPmxh eW91dCwKKysgICAgICAgICAgICAgICAgICAgJnRhcmdldC0+YXR0ci0+bGF5b3V0LAorKyAgICAg ICAgICAgICAgICAgICBzaXplb2YoZ2xvYnVzX2Z0cF9jb250cm9sX2xheW91dF90KSk7CisrICAg ICAgICB9CisrICAgICAgICBlbHNlIGlmKCghZXJyb3IpICYmIHJlc3BvbnNlLT5jb2RlIC8gMTAg PT0gNTApCisrICAgICAgICB7CisrICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0 dXJlX3NldCgKKysgICAgICAgICAgICAgICAgdGFyZ2V0LT5mZWF0dXJlcywKKysgICAgICAgICAg ICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9QQVJBTExFTElTTSwKKysgICAgICAgICAg ICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkFMU0UpOworKworKyAgICAgICAgICAgIGlmKHRhcmdl dC0+YXR0ci0+cGFyYWxsZWxpc20ubW9kZQorKyAgICAgICAgICAgICAgID09IEdMT0JVU19GVFBf Q09OVFJPTF9QQVJBTExFTElTTV9OT05FICYmCisrICAgICAgICAgICAgICAgdGFyZ2V0LT5hdHRy LT5sYXlvdXQubW9kZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfU1RSSVBJTkdfTk9ORSkKKysgICAg ICAgICAgICB7CisrICAgICAgICAgICAgICAgIG1lbWNweSgmdGFyZ2V0LT5wYXJhbGxlbGlzbSwK KysgICAgICAgICAgICAgICAgICAgICAgICZ0YXJnZXQtPmF0dHItPnBhcmFsbGVsaXNtLAorKyAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGdsb2J1c19mdHBfY29udHJvbF9wYXJhbGxlbGlz bV90KSk7CisrICAgICAgICAgICAgICAgIG1lbWNweSgmdGFyZ2V0LT5sYXlvdXQsCisrICAgICAg ICAgICAgICAgICAgICAgICAmdGFyZ2V0LT5hdHRyLT5sYXlvdXQsCisrICAgICAgICAgICAgICAg ICAgICAgICBzaXplb2YoZ2xvYnVzX2Z0cF9jb250cm9sX2xheW91dF90KSk7CisrICAgICAgICAg ICAgfQorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAg IHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElP TjsKKysKKysgICAgICAgICAgICAgICAgZ290byBjb25uZWN0aW9uX2Vycm9yOworKyAgICAgICAg ICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAg ICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJ T047CisrCisrICAgICAgICAgICAgZ290byBub3RpZnlfZmF1bHQ7CisrICAgICAgICB9CisrCisr ICAgIHNraXBfb3B0c19yZXRyOgorKyAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBf Q0xJRU5UX1RBUkdFVF9TRVRVUF9EQ1NDOworKyAgICAgICAgZ290byByZWRvOworKworKyAgICBj YXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9EQ1NDOgorKyAgICAgICAgdGFyZ2V0 LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9EQ1NDOworKworKyAgICAgICAgaWYo dGFyZ2V0LT5hdHRyLT5kY3NjX3R5cGUgPT0gMCB8fAorKyAgICAgICAgICAgICh0YXJnZXQtPmF0 dHItPmRjc2NfdHlwZSA9PSB0YXJnZXQtPmRjc2NfdHlwZSAmJgorKyAgICAgICAgICAgIHRhcmdl dC0+ZGNzY19ibG9iICYmIHRhcmdldC0+YXR0ci0+ZGNzY19ibG9iICYmCisrICAgICAgICAgICAg c3RyY21wKHRhcmdldC0+YXR0ci0+ZGNzY19ibG9iLCB0YXJnZXQtPmRjc2NfYmxvYikgPT0gMCkp CisrICAgICAgICB7CisrICAgICAgICAgICAgZ290byBza2lwX2Rjc2M7CisrICAgICAgICB9Cisr CisrICAgICAgICBpZihnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfZ2V0KHRhcmdldC0+ZmVh dHVyZXMsCisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9EQ1NDKSAhPSBH TE9CVVNfRlRQX0NMSUVOVF9UUlVFICYmCisrICAgICAgICAgICAgdGFyZ2V0LT51cmwuc2NoZW1l X3R5cGUgPT0gR0xPQlVTX1VSTF9TQ0hFTUVfR1NJRlRQKQorKyAgICAgICAgeworKyAgICAgICAg ICAgIGdvdG8gc2tpcF9kY3NjOworKyAgICAgICAgfQorKworKyAgICAgICAgLyogY2hhbmdpbmcg RENTQyBmb3JjZXMgdXMgdG8gdHJhc2ggb3VyIG9sZCBkYXRhIGNvbm5lY3Rpb25zICovCisrICAg ICAgICBtZW1zZXQoJnRhcmdldC0+Y2FjaGVkX2RhdGFfY29ubiwKKysgICAgICAgICAgICAgICAn XDAnLAorKyAgICAgICAgICAgICAgIHNpemVvZihnbG9idXNfaV9mdHBfY2xpZW50X2RhdGFfdGFy Z2V0X3QpKTsKKysKKysgICAgICAgIHRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NN RF9NQVNLX1RSQU5TRkVSX1BBUkFNRVRFUlM7CisrICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50 X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLAorKyAg ICAgICAgICAgIHRhcmdldC0+dXJsX3N0cmluZywKKysgICAgICAgICAgICB0YXJnZXQtPm1hc2ss CisrICAgICAgICAgICAgIkRDU0MgJWMlcyVzIiBDUkxGLAorKyAgICAgICAgICAgIChjaGFyKSB0 YXJnZXQtPmF0dHItPmRjc2NfdHlwZSwKKysgICAgICAgICAgICB0YXJnZXQtPmF0dHItPmRjc2Nf dHlwZSA9PSAnRCcgPyAiIiA6ICIgIiwKKysgICAgICAgICAgICB0YXJnZXQtPmF0dHItPmRjc2Nf dHlwZSA9PSAnRCcgPyAiIiA6IHRhcmdldC0+YXR0ci0+ZGNzY19ibG9iKTsKKysKKysgICAgICAg IGlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9S VCB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJ RU5UX0hBTkRMRV9SRVNUQVJUIHx8CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCisrICAgICAgICB7CisrICAgICAg ICAgICAgYnJlYWs7CisrICAgICAgICB9CisrCisrICAgICAgICBnbG9idXNfYXNzZXJ0KAorKyAg ICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZU UF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8CisrICAgICAgICAgICAg Y2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9I QU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKysKKysgICAgICAgIHJlc3VsdCA9IGdsb2J1 c19mdHBfY29udHJvbF9zZW5kX2NvbW1hbmQoCisrICAgICAgICAgICAgdGFyZ2V0LT5jb250cm9s X2hhbmRsZSwKKysgICAgICAgICAgICAiRENTQyAlYyVzJXMiIENSTEYsCisrICAgICAgICAgICAg Z2xvYnVzX2lfZnRwX2NsaWVudF9yZXNwb25zZV9jYWxsYmFjaywKKysgICAgICAgICAgICB0YXJn ZXQsCisrICAgICAgICAgICAgKGNoYXIpIHRhcmdldC0+YXR0ci0+ZGNzY190eXBlLAorKyAgICAg ICAgICAgIHRhcmdldC0+YXR0ci0+ZGNzY190eXBlID09ICdEJyA/ICIiIDogIiAiLAorKyAgICAg ICAgICAgIHRhcmdldC0+YXR0ci0+ZGNzY190eXBlID09ICdEJyA/ICIiIDogdGFyZ2V0LT5hdHRy LT5kY3NjX2Jsb2IpOworKworKyAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQor KyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworKyAgICAgICAgfQor KworKyAgICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VU X0RDU0M6CisrICAgICAgICBnbG9idXNfYXNzZXJ0KAorKyAgICAgICAgICAgIGNsaWVudF9oYW5k bGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJD RV9TRVRVUF9DT05ORUNUSU9OIHx8CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9TRVRVUF9DT05O RUNUSU9OKTsKKysKKysgICAgICAgIGlmKCghZXJyb3IpICYmCisrICAgICAgICAgICByZXNwb25z ZS0+cmVzcG9uc2VfY2xhc3MgPT0gR0xPQlVTX0ZUUF9QT1NJVElWRV9DT01QTEVUSU9OX1JFUExZ KQorKyAgICAgICAgeworKyAgICAgICAgICAgIHRhcmdldC0+ZGNzY190eXBlID0gdGFyZ2V0LT5h dHRyLT5kY3NjX3R5cGU7CisrICAgICAgICAgICAgaWYodGFyZ2V0LT5kY3NjX2Jsb2IpCisrICAg ICAgICAgICAgeworKyAgICAgICAgICAgICAgICBnbG9idXNfZnJlZSh0YXJnZXQtPmRjc2NfYmxv Yik7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIHRhcmdldC0+ZGNzY19ibG9iID0gZ2xv YnVzX2xpYmNfc3RyZHVwKHRhcmdldC0+YXR0ci0+ZGNzY19ibG9iKTsKKysgICAgICAgICAgICB0 YXJnZXQtPmRjc2NfcF9jcmVkID0gdGFyZ2V0LT5hdHRyLT5kY3NjX3BfY3JlZDsKKyAgICAgICAg IH0KKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsKKysgICAgICAgICAgICBlcnJvciA9IEdMT0JV U19JX0ZUUF9DTElFTlRfRVJST1JfVU5TVVBQT1JURURfRkVBVFVSRSgiRENTQyIpOworICAgICAg ICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09O TkVDVElPTjsKKyAKKyAgICAgICAgICAgICBnb3RvIG5vdGlmeV9mYXVsdDsKKyAgICAgICAgIH0K KyAKKy0gICAgc2tpcF9zZXRuZXRzdGFjazoKKy0gICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9C VVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfU0VURElTS1NUQUNLOworKyAgICBza2lwX2Rjc2M6 CisrICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQ X0RDQVU7CisgICAgICAgICBnb3RvIHJlZG87CisgCisrICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElF TlRfVEFSR0VUX1NFVFVQX0RDQVU6CisrICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX0RDQVU7CisgCistICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFS R0VUX1NFVFVQX1NFVERJU0tTVEFDSzoKKy0gICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNf RlRQX0NMSUVOVF9UQVJHRVRfU0VURElTS1NUQUNLOworLSAgICAgICAgaWYodGFyZ2V0LT5hdHRy LT5kaXNrX3N0YWNrX3N0ciA9PSBOVUxMIHx8ICAKKy0gICAgICAgICAgICAodGFyZ2V0LT5kaXNr X3N0YWNrX3N0ciAhPSBOVUxMICYmIAorLSAgICAgICAgICAgIHN0cmNtcCh0YXJnZXQtPmF0dHIt PmRpc2tfc3RhY2tfc3RyLCB0YXJnZXQtPmRpc2tfc3RhY2tfc3RyKSA9PSAwKSkKKysgICAgICAg IGlmKHRhcmdldC0+ZGNzY19wX2NyZWQgIT0gR1NTX0NfTk9fQ1JFREVOVElBTCkKKyAgICAgICAg IHsKKy0gICAgICAgICAgICBnb3RvIHNraXBfc2V0ZGlza3N0YWNrOworKyAgICAgICAgICAgIHRh cmdldC0+YXR0ci0+ZGNhdS5tb2RlID0gR0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVfU0VMRjsKKysg ICAgICAgIH0KKysgICAgICAgIGlmKHRhcmdldC0+YXR0ci0+ZGNhdS5tb2RlID09IHRhcmdldC0+ ZGNhdS5tb2RlICYmCisrICAgICAgICAgICB0YXJnZXQtPmRjYXUubW9kZSAhPSBHTE9CVVNfRlRQ X0NPTlRST0xfRENBVV9ERUZBVUxUKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gc2tp cF9kY2F1OworKyAgICAgICAgfQorKyAgICAgICAgaWYodGFyZ2V0LT5hdHRyLT5kY2F1Lm1vZGUg PT0gR0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVfREVGQVVMVCAmJgorKyAgICAgICAgICAgZ2xvYnVz X2lfZnRwX2NsaWVudF9mZWF0dXJlX2dldCgKKysgICAgICAgICAgICAgICB0YXJnZXQtPmZlYXR1 cmVzLAorKyAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRVUkVfRENBVSkgIT0g R0xPQlVTX0ZUUF9DTElFTlRfVFJVRSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIHNr aXBfZGNhdTsKKysgICAgICAgIH0KKysgICAgICAgIGlmKHRhcmdldC0+YXR0ci0+ZGNhdS5tb2Rl ID09IEdMT0JVU19GVFBfQ09OVFJPTF9EQ0FVX0RFRkFVTFQgJiYKKysgICAgICAgICAgICh0YXJn ZXQtPmRjYXUubW9kZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfRENBVV9TRUxGIHx8CisrICAgICAg ICAgICAgdGFyZ2V0LT5kY2F1Lm1vZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVfREVGQVVM VCkpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ290byBmaW5pc2hfZGNhdTsKKyAgICAgICAg IH0KKy0gICAgICAgIAorKworKyAgICAgICAgLyogY2hhbmdpbmcgRENBVSBmb3JjZXMgdXMgdG8g dHJhc2ggb3VyIG9sZCBkYXRhIGNvbm5lY3Rpb25zICovCisgICAgICAgICBtZW1zZXQoJnRhcmdl dC0+Y2FjaGVkX2RhdGFfY29ubiwKKyAgICAgICAgICAgICAgICAnXDAnLAorICAgICAgICAgICAg ICAgIHNpemVvZihnbG9idXNfaV9mdHBfY2xpZW50X2RhdGFfdGFyZ2V0X3QpKTsKK0BAIC0xMDky LDggKzE4OTMsMTMgQEAgcmVkbzoKKyAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLAorICAgICAg ICAgICAgIHRhcmdldC0+dXJsX3N0cmluZywKKyAgICAgICAgICAgICB0YXJnZXQtPm1hc2ssCist ICAgICAgICAgICAgIlNJVEUgU0VURElTS1NUQUNLICVzIiBDUkxGLAorLSAgICAgICAgICAgIHRh cmdldC0+YXR0ci0+ZGlza19zdGFja19zdHIpOworKyAgICAgICAgICAgICJEQ0FVICVjJXMlcyIg Q1JMRiwKKysgICAgICAgICAgICAoY2hhcikgdGFyZ2V0LT5hdHRyLT5kY2F1Lm1vZGUgPT0gR0xP QlVTX0ZUUF9DT05UUk9MX0RDQVVfREVGQVVMVAorKyAgICAgICAgICAgICAgICA/IEdMT0JVU19G VFBfQ09OVFJPTF9EQ0FVX1NFTEYgOiB0YXJnZXQtPmF0dHItPmRjYXUubW9kZSwKKysgICAgICAg ICAgICB0YXJnZXQtPmF0dHItPmRjYXUubW9kZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfRENBVV9T VUJKRUNUCisrICAgICAgICAgICAgICAgID8gIiAiIDogIiIsCisrICAgICAgICAgICAgdGFyZ2V0 LT5hdHRyLT5kY2F1Lm1vZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVfU1VCSkVDVAorKyAg ICAgICAgICAgICAgICA/IHRhcmdldC0+YXR0ci0+ZGNhdS5zdWJqZWN0LnN1YmplY3QgOiAiIik7 CisgCisgICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVO VF9IQU5ETEVfQUJPUlQgfHwKKyAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBH TE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorQEAgLTExMTAsMTAgKzE5MTYsMTYg QEAgcmVkbzoKKyAKKyAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9zZW5kX2Nv bW1hbmQoCisgICAgICAgICAgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKy0gICAgICAgICAg ICAiU0lURSBTRVRESVNLU1RBQ0sgJXMiIENSTEYsCisrICAgICAgICAgICAgIkRDQVUgJWMlcyVz IiBDUkxGLAorICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJh Y2ssCisgICAgICAgICAgICAgdGFyZ2V0LAorLSAgICAgICAgICAgIHRhcmdldC0+YXR0ci0+ZGlz a19zdGFja19zdHIpOworKyAgICAgICAgICAgIChjaGFyKSB0YXJnZXQtPmF0dHItPmRjYXUubW9k ZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfRENBVV9ERUZBVUxUCisrICAgICAgICAgICAgICAgID8g R0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVfU0VMRiA6IHRhcmdldC0+YXR0ci0+ZGNhdS5tb2RlLAor KyAgICAgICAgICAgIHRhcmdldC0+YXR0ci0+ZGNhdS5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJP TF9EQ0FVX1NVQkpFQ1QKKysgICAgICAgICAgICAgICAgPyAiICIgOiAiIiwKKysgICAgICAgICAg ICB0YXJnZXQtPmF0dHItPmRjYXUubW9kZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfRENBVV9TVUJK RUNUCisrICAgICAgICAgICAgICAgID8gdGFyZ2V0LT5hdHRyLT5kY2F1LnN1YmplY3Quc3ViamVj dCA6ICIiKTsKKysKKyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAg ICAgIHsKKyAgICAgICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKK0BAIC0xMTIxLDcgKzE5MzMs NyBAQCByZWRvOgorIAorICAgICAgICAgYnJlYWs7CisgCistICAgIGNhc2UgR0xPQlVTX0ZUUF9D TElFTlRfVEFSR0VUX1NFVERJU0tTVEFDSzoKKysgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9U QVJHRVRfRENBVToKKyAgICAgICAgIGdsb2J1c19hc3NlcnQoCisgICAgICAgICAgICAgY2xpZW50 X2hhbmRsZS0+c3RhdGUgPT0KKyAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVf U09VUkNFX1NFVFVQX0NPTk5FQ1RJT04gfHwKK0BAIC0xMTMxLDEyICsxOTQzLDYyIEBAIHJlZG86 CisgICAgICAgICBpZigoIWVycm9yKSAmJgorICAgICAgICAgICAgcmVzcG9uc2UtPnJlc3BvbnNl X2NsYXNzID09IEdMT0JVU19GVFBfUE9TSVRJVkVfQ09NUExFVElPTl9SRVBMWSkKKyAgICAgICAg IHsKKy0gICAgICAgICAgICBpZih0YXJnZXQtPmRpc2tfc3RhY2tfc3RyKQorKworKyAgICAgICAg ICAgIGlmKHRhcmdldC0+YXR0ci0+ZGNhdS5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJPTF9EQ0FV X1NVQkpFQ1QpCisgICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBnbG9idXNfZnJlZSh0 YXJnZXQtPmRpc2tfc3RhY2tfc3RyKTsKKysgICAgICAgICAgICAgICAgY2hhciAqIHRtcF9zdWJq OworKyAgICAgICAgICAgICAgICB0bXBfc3ViaiA9IHRhcmdldC0+ZGNhdS5zdWJqZWN0LnN1Ympl Y3Q7CisrCisrICAgICAgICAgICAgICAgIHRhcmdldC0+ZGNhdS5zdWJqZWN0LnN1YmplY3QgPQor KyAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfc3RyZHVwKHRhcmdldC0+YXR0ci0+ZGNh dS5zdWJqZWN0LnN1YmplY3QpOworKyAgICAgICAgICAgICAgICBpZighIHRhcmdldC0+ZGNhdS5z dWJqZWN0LnN1YmplY3QpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAg IGVycm9yID0gR0xPQlVTX0lfRlRQX0NMSUVOVF9FUlJPUl9PVVRfT0ZfTUVNT1JZKCk7CisrICAg ICAgICAgICAgICAgICAgICB0YXJnZXQtPmRjYXUuc3ViamVjdC5zdWJqZWN0ID0gdG1wX3N1Ymo7 CisrCisrICAgICAgICAgICAgICAgICAgICBnb3RvIG5vdGlmeV9mYXVsdDsKKysgICAgICAgICAg ICAgICAgfQorKyAgICAgICAgICAgICAgICBlbHNlIGlmKHRtcF9zdWJqKQorKyAgICAgICAgICAg ICAgICB7CisrICAgICAgICAgICAgICAgICAgICBnbG9idXNfbGliY19mcmVlKHRtcF9zdWJqKTsK KysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgIGZpbmlzaF9kY2F1 OgorKyAgICAgICAgICAgIGlmKHRhcmdldC0+YXR0ci0+ZGNhdS5tb2RlID09IEdMT0JVU19GVFBf Q09OVFJPTF9EQ0FVX0RFRkFVTFQpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBp ZighZ2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX2dldCgKKysgICAgICAgICAgICAgICAgICAg IHRhcmdldC0+ZmVhdHVyZXMsIEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRVUkVfRENBVSkpCisrICAg ICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+ZGNhdS5tb2RlID0g R0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVfTk9ORTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAg ICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAg IHRhcmdldC0+ZGNhdS5tb2RlID0gR0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVfU0VMRjsKKysgICAg ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlCisrICAgICAg ICAgICAgeworKyAgICAgICAgICAgICAgICB0YXJnZXQtPmRjYXUubW9kZSA9IHRhcmdldC0+YXR0 ci0+ZGNhdS5tb2RlOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBpZih0YXJnZXQt PmRjc2NfcF9jcmVkICE9IEdTU19DX05PX0NSRURFTlRJQUwpCisrICAgICAgICAgICAgeworKyAg ICAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfZGNhdSgKKysg ICAgICAgICAgICAgICAgICAgIHRhcmdldC0+Y29udHJvbF9oYW5kbGUsCisrICAgICAgICAgICAg ICAgICAgICAmdGFyZ2V0LT5kY2F1LAorKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5kY3Nj X3BfY3JlZCk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAg ICB7CisrICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9sb2NhbF9k Y2F1KAorKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKysgICAg ICAgICAgICAgICAgICAgICZ0YXJnZXQtPmRjYXUsCisrICAgICAgICAgICAgICAgICAgICB0YXJn ZXQtPmNvbnRyb2xfaGFuZGxlLT5jY19oYW5kbGUuYXV0aF9pbmZvLmNyZWRlbnRpYWxfaGFuZGxl KTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUND RVNTKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7 CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIHRhcmdldC0+ZGlza19zdGFja19zdHIgPSAK Ky0gICAgICAgICAgICAgICAgZ2xvYnVzX2xpYmNfc3RyZHVwKHRhcmdldC0+YXR0ci0+ZGlza19z dGFja19zdHIpOworICAgICAgICAgfQorICAgICAgICAgZWxzZQorICAgICAgICAgeworQEAgLTEx NDUsMTA2NyArMjAwNywyMDUgQEAgcmVkbzoKKyAgICAgICAgICAgICBnb3RvIG5vdGlmeV9mYXVs dDsKKyAgICAgICAgIH0KKyAKKy0gICAgc2tpcF9zZXRkaXNrc3RhY2s6CistICAgICAgICB0YXJn ZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX01PREU7CisrICAgIHNr aXBfZGNhdToKKysgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJH RVRfU0VUVVBfUEJTWjsKKyAgICAgICAgIGdvdG8gcmVkbzsKKyAKKysgICAgY2FzZSBHTE9CVVNf RlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfUEJTWjoKKysgICAgICAgIHRhcmdldC0+c3RhdGUgPSBH TE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfUEJTWjsKKyAKKy0gICAgY2FzZSBHTE9CVVNfRlRQX0NM SUVOVF9UQVJHRVRfU0VUVVBfTU9ERToKKy0JdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJ RU5UX1RBUkdFVF9NT0RFOworLQlpZih0YXJnZXQtPmF0dHItPm1vZGUgPT0gdGFyZ2V0LT5tb2Rl KQorLQl7CistCSAgICBnb3RvIHNraXBfbW9kZTsKKy0JfQorLQltZW1zZXQoJnRhcmdldC0+Y2Fj aGVkX2RhdGFfY29ubiwKKy0JICAgICAgICdcMCcsCistCSAgICAgICBzaXplb2YoZ2xvYnVzX2lf ZnRwX2NsaWVudF9kYXRhX3RhcmdldF90KSk7CistCistCXRhcmdldC0+bWFzayA9IEdMT0JVU19G VFBfQ0xJRU5UX0NNRF9NQVNLX1RSQU5TRkVSX1BBUkFNRVRFUlM7CistCWdsb2J1c19pX2Z0cF9j bGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorLQkgICAgY2xpZW50X2hhbmRsZSwKKy0JICAg IHRhcmdldC0+dXJsX3N0cmluZywKKy0JICAgIHRhcmdldC0+bWFzaywKKy0JICAgICJNT0RFICVj IiBDUkxGLAorLQkgICAgKGNoYXIpIHRhcmdldC0+YXR0ci0+bW9kZSk7CistCistCWlmKGNsaWVu dF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCB8fAorLQkg ICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RB UlQgfHwKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hB TkRMRV9GQUlMVVJFKQorLQl7CistCSAgICBicmVhazsKKy0JfQorLQorLQlnbG9idXNfYXNzZXJ0 KAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JICAgIEdMT0JVU19GVFBfQ0xJRU5U X0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+ c3RhdGUgPT0KKy0JICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5F Q1RJT04pOworLQorLQlyZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAor LQkgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKy0JICAgICJNT0RFICVjIiBDUkxGLAorLQkg ICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9yZXNwb25zZV9jYWxsYmFjaywKKy0JICAgIHRhcmdldCwK Ky0JICAgIChjaGFyKSB0YXJnZXQtPmF0dHItPm1vZGUpOworLQorLQlpZihyZXN1bHQgIT0gR0xP QlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworLQl9CistCistCWJy ZWFrOworLQorLSAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9NT0RFOgorLQlnbG9i dXNfYXNzZXJ0KAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JICAgIEdMT0JVU19G VFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorLQkgICAgY2xpZW50 X2hhbmRsZS0+c3RhdGUgPT0KKy0JICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NF VFVQX0NPTk5FQ1RJT04pOworLQorLQlpZigoIWVycm9yKSAmJgorLQkgICByZXNwb25zZS0+cmVz cG9uc2VfY2xhc3MgPT0gR0xPQlVTX0ZUUF9QT1NJVElWRV9DT01QTEVUSU9OX1JFUExZKQorLQl7 CistCSAgICB0YXJnZXQtPm1vZGUgPSB0YXJnZXQtPmF0dHItPm1vZGU7CistCSAgICAKKy0JICAg IC8qIGRpc2FibGUgc291cmNlIHBhc3YgKi8KKy0JICAgIGlmKHRhcmdldC0+bW9kZSA9PSBHTE9C VVNfRlRQX0NPTlRST0xfTU9ERV9FWFRFTkRFRF9CTE9DSykKKy0JICAgIHsKKy0JICAgICAgICBj bGllbnRfaGFuZGxlLT5zb3VyY2VfcGFzdiA9IEdMT0JVU19GQUxTRTsKKy0JICAgIH0KKy0JICAg IAorLQkgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX21vZGUodGFyZ2V0LT5j b250cm9sX2hhbmRsZSwKKy0JCQkJCQkgICB0YXJnZXQtPm1vZGUpOworLQkgICAgaWYocmVzdWx0 ICE9IEdMT0JVU19TVUNDRVNTKQorLQkgICAgeworLQkJZ290byByZXN1bHRfZmF1bHQ7CistCSAg ICB9CistCX0KKy0JZWxzZQorLQl7CistCSAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9D TElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CistCistCSAgICBnb3RvIG5vdGlmeV9mYXVs dDsKKy0JfQorLQorLSAgICBza2lwX21vZGU6CistCWlmKGNsaWVudF9oYW5kbGUtPm9wID09IEdM T0JVU19GVFBfQ0xJRU5UX0NLU00pCistCXsKKy0JICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNf RlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ0tTTTsKKy0JfQorLQllbHNlCistCXsKKy0JICAgIHRh cmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfU0laRTsKKy0JfQor LQlnb3RvIHJlZG87CistCistICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQ X0NLU006CisrICAgICAgICBpZih0YXJnZXQtPmRjYXUubW9kZSA9PSBHTE9CVVNfRlRQX0NPTlRS T0xfRENBVV9OT05FKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gc2tpcF9wYnN6Owor KyAgICAgICAgfQorIAorKyAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX2dldF9w YnN6KAorKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKysgICAg ICAgICAgICAgICAgICAgICZwYnN6KTsKKysgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VD Q0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKysgICAg ICAgIH0KKysgICAgICAgIGlmKHRhcmdldC0+cGJzeiA9PSBwYnN6KQorKyAgICAgICAgeworKyAg ICAgICAgICAgIGdvdG8gc2tpcF9wYnN6OworKyAgICAgICAgfQorIAorLQl0YXJnZXQtPnN0YXRl ID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX05FRURfQ09NUExFVEU7CistCQorLQl0YXJnZXQt Pm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19JTkZPUk1BVElPTjsKKysgICAgICAg IC8qIGNoYW5naW5nIFBCU1ogZm9yY2VzIHVzIHRvIHRyYXNoIG91ciBvbGQgZGF0YSBjb25uZWN0 aW9ucyAqLworKyAgICAgICAgbWVtc2V0KCZ0YXJnZXQtPmNhY2hlZF9kYXRhX2Nvbm4sCisrICAg ICAgICAgICAgICAgJ1wwJywKKysgICAgICAgICAgICAgICBzaXplb2YoZ2xvYnVzX2lfZnRwX2Ns aWVudF9kYXRhX3RhcmdldF90KSk7CisgCistCWdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25v dGlmeV9jb21tYW5kKAorKyAgICAgICAgdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRf Q01EX01BU0tfVFJBTlNGRVJfUEFSQU1FVEVSUzsKKysgICAgICAgIGdsb2J1c19pX2Z0cF9jbGll bnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUsCisg ICAgICAgICAgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorLSAgICAgICAgICAgIHRhcmdldC0+bWFz aywgIAorLSAgICAgICAgICAgICJDS1NNICVzICUiIEdMT0JVU19PRkZfVF9GT1JNQVQgIiAlIiBH TE9CVVNfT0ZGX1RfRk9STUFUICIgJXMiIENSTEYsCistCSAgICBjbGllbnRfaGFuZGxlLT5jaGVj a3N1bV9hbGcsCistCSAgICBjbGllbnRfaGFuZGxlLT5jaGVja3N1bV9vZmZzZXQsCistCSAgICBj bGllbnRfaGFuZGxlLT5jaGVja3N1bV9sZW5ndGgsCistICAgICAgICAgICAgcGF0aG5hbWUpOwor KyAgICAgICAgICAgIHRhcmdldC0+bWFzaywKKysgICAgICAgICAgICAiUEJTWiAlbHUiIENSTEYs CisrICAgICAgICAgICAgcGJzeik7CisgCistCWlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdM T0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCB8fAorKyAgICAgICAgaWYoY2xpZW50X2hhbmRs ZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CisgICAgICAgICAg ICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RB UlQgfHwKKyAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfRkFJTFVSRSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgIH0KKyAKKy0gICAgICAgIGdsb2J1c19hc3NlcnQoY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0KKy0gICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJD RV9TRVRVUF9DT05ORUNUSU9OIHx8CistICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5k bGUtPnN0YXRlID09CistICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hB TkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworKyAgICAgICAgZ2xvYnVzX2Fzc2VydCgKKysg ICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JVU19G VFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorKyAgICAgICAgICAg IGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRf SEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CisgCisgICAgICAgICByZXN1bHQgPSBnbG9i dXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorICAgICAgICAgICAgIHRhcmdldC0+Y29udHJv bF9oYW5kbGUsCistICAgICAgICAgICAgIkNLU00gJXMgJSIgR0xPQlVTX09GRl9UX0ZPUk1BVCAi ICUiIEdMT0JVU19PRkZfVF9GT1JNQVQgIiAlcyIgQ1JMRiwKKysgICAgICAgICAgICAiUEJTWiAl bHUiIENSTEYsCisgICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9yZXNwb25zZV9jYWxs YmFjaywKKyAgICAgICAgICAgICB0YXJnZXQsCistCSAgICBjbGllbnRfaGFuZGxlLT5jaGVja3N1 bV9hbGcsCistCSAgICBjbGllbnRfaGFuZGxlLT5jaGVja3N1bV9vZmZzZXQsCistCSAgICBjbGll bnRfaGFuZGxlLT5jaGVja3N1bV9sZW5ndGgsCistICAgICAgICAgICAgcGF0aG5hbWUpOworKyAg ICAgICAgICAgIHBic3opOworIAorICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNT KQorICAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworICAgICAgICAg fQorKworICAgICAgICAgYnJlYWs7CisgCistICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFS R0VUX1NFVFVQX1NJWkU6CistCS8qCistCSAqIERvaW5nIGEgU0laRSBpc24ndCBuZWNlc3Nhcnkg YnV0IGlzIG5pY2UgZm9yCistCSAqIC0gcmVzdW1pbmcgIHN0cmVhbSBtb2RlIDNyZCBwYXJ0eSB0 cmFuc2ZlcnMKKy0JICoKKy0JICogU2tpcCBpZgorLQkgKiAtIHNlcnZlciBkb2Vzbid0IGRvIFNJ WkUKKy0JICogLSBub3QgaW50ZXJlc3RpbmcKKy0JICogICB3aGVyZSBpbnRlcmVzdGluZyBpcwor LQkgKiAgIC0gZGVzdGluYXRpb24gb2Ygc3RyZWFtIG1vZGUgM3JkIHBhcnR5IHRyYW5zZmVyIHcv IHJlc3VtZQorLQkgKiAgICAgYXR0ciBzZXQgdG8gdHJ1ZQorLQkgKi8KKy0JaWYoZ2xvYnVzX2lf ZnRwX2NsaWVudF9mZWF0dXJlX2dldCgKKy0JCXRhcmdldC0+ZmVhdHVyZXMsIAorLQkJR0xPQlVT X0ZUUF9DTElFTlRfRkVBVFVSRV9TSVpFKSA9PSBHTE9CVVNfRkFMU0UKKy0JICAgfHwKKy0JICAg KCEKKy0JICAgICAgICgKKy0JCSAgIChjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NM SUVOVF9UUkFOU0ZFUiAmJgorLQkJICAgIHRhcmdldCA9PSBjbGllbnRfaGFuZGxlLT5kZXN0ICYm CistCQkgICAgdGFyZ2V0LT5hdHRyLT5yZXN1bWVfdGhpcmRfcGFydHkgJiYKKy0JCSAgICB0YXJn ZXQtPm1vZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX01PREVfU1RSRUFNKQorLQkJICAgfHwKKy0g ICAgICAgICAgICAgICAgICAgKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5U X1NJWkUpCistCSAgICAgICApCistCSAgICkKKy0JICApCistCXsKKy0JICAgIGlmKGNsaWVudF9o YW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX1NJWkUpCistCSAgICB7CistCQllcnJvciA9 IEdMT0JVU19JX0ZUUF9DTElFTlRfRVJST1JfVU5TVVBQT1JURURfRkVBVFVSRSgiU0laRSIpOwor LQorLQkJZ290byBub3RpZnlfZmF1bHQ7CistCistCSAgICB9CistCSAgICBnb3RvIHNraXBfc2l6 ZTsKKy0JfQorLQorLQlpZihjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9T SVpFKQorLQl7CistCSAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VU X05FRURfQ09NUExFVEU7CistCX0KKy0JZWxzZQorLQl7CistCSAgICB0YXJnZXQtPnN0YXRlID0g R0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NJWkU7CistCX0KKy0KKy0JdGFyZ2V0LT5tYXNrID0g R0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfSU5GT1JNQVRJT047CistCistCWdsb2J1c19pX2Z0 cF9jbGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorLQkgICAgY2xpZW50X2hhbmRsZSwKKy0J ICAgIHRhcmdldC0+dXJsX3N0cmluZywKKy0JICAgIHRhcmdldC0+bWFzaywKKy0JICAgICJTSVpF ICVzIiBDUkxGLAorLQkgICAgcGF0aG5hbWUpOworLQorLQlpZihjbGllbnRfaGFuZGxlLT5zdGF0 ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKy0JICAgIGNsaWVudF9oYW5k bGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CistCSAgICBj bGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkK Ky0JeworLQkgICAgYnJlYWs7CistCX0KKy0KKy0JZ2xvYnVzX2Fzc2VydChjbGllbnRfaGFuZGxl LT5zdGF0ZSA9PQorLQkJICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRV UF9DT05ORUNUSU9OIHx8CistCQkgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkJICAg ICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CistCist CXJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9zZW5kX2NvbW1hbmQoCistCSAgICB0YXJnZXQt PmNvbnRyb2xfaGFuZGxlLAorLQkgICAgIlNJWkUgJXMiIENSTEYsCistCSAgICBnbG9idXNfaV9m dHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorLQkgICAgdGFyZ2V0LAorLQkgICAgcGF0aG5h bWUpOworLQorLQlpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8g cmVzdWx0X2ZhdWx0OworLQl9CistCWJyZWFrOworKyAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5U X1RBUkdFVF9QQlNaOgorKyAgICAgICAgZ2xvYnVzX2Fzc2VydCgKKysgICAgICAgICAgICBjbGll bnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRM RV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUt PnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VU VVBfQ09OTkVDVElPTik7CisgCistICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NJ WkU6CistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkg ICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OCistCSAg ICB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JICAgIEdMT0JVU19GVFBfQ0xJ RU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworLQorLQlpZihlcnJvciAhPSBHTE9C VVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byBub3RpZnlfZmF1bHQ7CistCX0KKy0JaWYocmVz cG9uc2UtPnJlc3BvbnNlX2NsYXNzID09IEdMT0JVU19GVFBfUE9TSVRJVkVfQ09NUExFVElPTl9S RVBMWSkKKy0JeworLQkgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCgKKy0JICAg ICAgICB0YXJnZXQtPmZlYXR1cmVzLAorLQkgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRV UkVfU0laRSwKKy0JICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9UUlVFKTsKKy0KKy0JICAgIGlm KGNsaWVudF9oYW5kbGUtPnNvdXJjZSA9PSB0YXJnZXQpCistCSAgICB7CistCQlnbG9idXNfbGli Y19zY2FuX29mZl90KChjaGFyICopIHJlc3BvbnNlLT5yZXNwb25zZV9idWZmZXIrNCwKKy0JCQkJ ICAgICAgICZjbGllbnRfaGFuZGxlLT5zb3VyY2Vfc2l6ZSwKKy0JCQkJICAgICAgIEdMT0JVU19O VUxMKTsKKy0JICAgIH0KKy0JICAgIGVsc2UKKy0JICAgIHsKKy0JCWdsb2J1c19ieXRlX3QgKiBz aXplOworLQkJY29uc3QgZ2xvYnVzX2J5dGVfdCAqIHA7CistCQlnbG9idXNfYnl0ZV90ICpxOwor LQorLQkJc2l6ZSA9IGdsb2J1c19saWJjX21hbGxvYygKKy0JCSAgICBzdHJsZW4oKGNoYXIgKikg cmVzcG9uc2UtPnJlc3BvbnNlX2J1ZmZlciszKSk7CistCQlmb3IocCA9IHJlc3BvbnNlLT5yZXNw b25zZV9idWZmZXIrNCwgcSA9IHNpemU7CistCQkgICAgaXNkaWdpdCgqcCk7CistCQkgICAgcCsr LHErKykKKy0JCXsKKy0JCSAgICAqcSA9ICpwOworLQkJfQorLQkJKnEgPSAnXDAnOworLQorLQkJ aWYodGFyZ2V0LT5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJPTF9NT0RFX1NUUkVBTSAmJgorLQkJ ICAgY2xpZW50X2hhbmRsZS0+cmVzdGFydF9tYXJrZXIudHlwZSA9PQorLQkJICAgR0xPQlVTX0ZU UF9DTElFTlRfUkVTVEFSVF9OT05FKQorLQkJeworLQkJICAgIGNsaWVudF9oYW5kbGUtPnJlc3Rh cnRfbWFya2VyLnR5cGUgPQorLQkJCUdMT0JVU19GVFBfQ0xJRU5UX1JFU1RBUlRfU1RSRUFNOwor LQorLQkJICAgIGdsb2J1c19saWJjX3NjYW5fb2ZmX3QoCistCQkJKGNoYXIgKikgc2l6ZSwKKy0J CQkmY2xpZW50X2hhbmRsZS0+cmVzdGFydF9tYXJrZXIuc3RyZWFtLm9mZnNldCwKKy0JCQlHTE9C VVNfTlVMTCk7CistCistCQkgICAgY2xpZW50X2hhbmRsZS0+cmVzdGFydF9tYXJrZXIuc3RyZWFt LmFzY2lpX29mZnNldCA9CistCQkJY2xpZW50X2hhbmRsZS0+cmVzdGFydF9tYXJrZXIuc3RyZWFt Lm9mZnNldDsKKy0JCX0KKy0JCWdsb2J1c19saWJjX2ZyZWUoc2l6ZSk7CistCSAgICB9CistCist CX0KKy0JZWxzZSBpZihyZXNwb25zZS0+Y29kZSAvIDEwID09IDUwKQorLQl7CistCSAgICAvKiBB IDUwMCByZXNwb25zZSBtZWFucyB0aGUgc2VydmVyIGRvZXNuJ3Qga25vdyBhYm91dCBTSVpFICov CistCSAgICBnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfc2V0KAorLQkgICAgICAgIHRhcmdl dC0+ZmVhdHVyZXMsCistCSAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9TSVpFLAor LQkgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0ZBTFNFKTsKKy0KKy0JfQorLQllbHNlIGlmKHJl c3BvbnNlLT5jb2RlID09IDU1MCAmJiAvKiBmaWxlIHVuYXZhaWxhYmxlICovCistCQljbGllbnRf aGFuZGxlLT5kZXN0ID09IHRhcmdldCkKKy0JeworLQkgICAgLyoKKy0JICAgICAqIFRoZSBmaWxl IG1heSBub3QgZXhpc3Qgb24gdGhlIHJlbW90ZSBzaWRlIGlmIHdlJ3JlCistCSAgICAgKiByZXN0 YXJ0aW5nLgorLQkgICAgICovCistCSAgICA7CistCX0KKy0JZWxzZQorLQl7CistCSAgICAvKiBB bnkgb3RoZXIgcmVzcG9uc2UgaXMgbm90IGdvb2QuICovCistCSAgICB0YXJnZXQtPnN0YXRlID0g R0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CistCSAgICBpZigoIWNs aWVudF9oYW5kbGUtPmVycikgJiYgKCFlcnJvcikpCistCSAgICB7CistCQllcnJvciA9IEdMT0JV U19JX0ZUUF9DTElFTlRfRVJST1JfUkVTUE9OU0UocmVzcG9uc2UpOworLQkgICAgfQorLQkgICAg Z290byBjb25uZWN0aW9uX2Vycm9yOworLQl9CisrICAgICAgICBpZigoIWVycm9yKSAmJgorKyAg ICAgICAgICAgcmVzcG9uc2UtPnJlc3BvbnNlX2NsYXNzID09IEdMT0JVU19GVFBfUE9TSVRJVkVf Q09NUExFVElPTl9SRVBMWSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBjaGFyICogICAgICAg ICAgICAgICAgICAgICAgczsKKyAKKy0gICAgc2tpcF9zaXplOgorLQl0YXJnZXQtPnN0YXRlID0g R0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0JVRlNJWkU7CistCWdvdG8gcmVkbzsKKysg ICAgICAgICAgICBwYnN6ID0gMDsKKysgICAgICAgICAgICBzID0gc3Ryc3RyKChjaGFyICopIHJl c3BvbnNlLT5yZXNwb25zZV9idWZmZXIsICJQQlNaPSIpOworKyAgICAgICAgICAgIGlmKHMpCisr ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBzc2NhbmYocywgIlBCU1o9JWx1IiwgJnBi c3opOworKyAgICAgICAgICAgIH0KKyAKKy0gICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJH RVRfU0VUVVBfQlVGU0laRToKKy0JdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RB UkdFVF9CVUZTSVpFOworLQorLQkvKgorLQkgKiBUT0RPOiBjb21wYXJlIGJ1ZmZlciBtb2RlL3Np emUgcHJvcGVybHkgZm9yIGFsbCBpbnN0YW5jZXMKKy0JICogb2YgdW5pb24gY29tcG9uZW50cwor LQkgKi8KKy0JaWYodGFyZ2V0LT5hdHRyLT5idWZmZXIubW9kZSA9PSB0YXJnZXQtPnRjcF9idWZm ZXIubW9kZSAmJgorLQkgICB0YXJnZXQtPmF0dHItPmJ1ZmZlci5maXhlZC5zaXplID09IHRhcmdl dC0+dGNwX2J1ZmZlci5maXhlZC5zaXplKQorLQl7CistCSAgICBnb3RvIHNraXBfYnVmc2l6ZTsK Ky0JfQorLSAgICBpZighKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX0dF VCB8fAorLSAgICAgICAgY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfUFVU IHx8CistICAgICAgICBjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9MSVNU IHx8CistICAgICAgICBjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9OTFNU IHx8CistICAgICAgICBjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9NTFNE IHx8CistICAgICAgICBjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9NTFNS IHx8CistICAgICAgICBjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9UUkFO U0ZFUikpCistICAgIHsKKy0gICAgICAgIGdvdG8gc2tpcF9idWZzaXplOworLSAgICB9CistICAg IAorLQlidWZmZXJfY21kID0gZ2xvYnVzX2xfZnRwX2NsaWVudF9ndWVzc19idWZmZXJfY29tbWFu ZChjbGllbnRfaGFuZGxlLAorLQkJCQkJCQkgICAgICB0YXJnZXQpOworLQlpZihidWZmZXJfY21k ID09IEdMT0JVU19OVUxMKQorLQl7CistCSAgICBlcnJvciA9IEdMT0JVU19JX0ZUUF9DTElFTlRf RVJST1JfVU5TVVBQT1JURURfRkVBVFVSRSgKKy0JICAgICAgICAiQWRqdXN0IHNvY2tldCBidWZm ZXIiKTsKKy0KKy0JICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRf U0VUVVBfQ09OTkVDVElPTjsKKy0KKy0JICAgIGdvdG8gbm90aWZ5X2ZhdWx0OworLQl9CistCist CS8qIENob29zZSB0aGUgcHJvcGVyIHN0cmluZyB0byBwYXNzIGFsb25nIHdpdGggdGhlIGNob3Nl bgorLQkgKiBidWZmZXIgc2l6ZSBjb21tYW5kLgorLQkgKi8KKy0Jc3dpdGNoKHRhcmdldC0+YXR0 ci0+YnVmZmVyLm1vZGUpCistCXsKKy0JY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xfVENQQlVGRkVS X0RFRkFVTFQ6CistCSAgICB0YXJnZXQtPmF0dHItPmJ1ZmZlci5maXhlZC5zaXplID0gMFVMOwor LQljYXNlIEdMT0JVU19GVFBfQ09OVFJPTF9UQ1BCVUZGRVJfRklYRUQ6CistCSAgICBicmVhazsK Ky0JY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xfVENQQlVGRkVSX0FVVE9NQVRJQzoKKy0JICAgIGVy cm9yID0gR0xPQlVTX0lfRlRQX0NMSUVOVF9FUlJPUl9VTlNVUFBPUlRFRF9GRUFUVVJFKCJBQlVG Iik7CistCistCSAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NF VFVQX0NPTk5FQ1RJT047CistCistCSAgICBnb3RvIG5vdGlmeV9mYXVsdDsKKy0JfQorLQl0YXJn ZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19UUkFOU0ZFUl9QQVJBTUVURVJT OworLQlnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKy0JICAgIGNs aWVudF9oYW5kbGUsCistCSAgICB0YXJnZXQtPnVybF9zdHJpbmcsCistCSAgICB0YXJnZXQtPm1h c2ssCistCSAgICAiJXMgJWx1IiBDUkxGLAorLQkgICAgYnVmZmVyX2NtZCwKKy0JICAgIHRhcmdl dC0+YXR0ci0+YnVmZmVyLmZpeGVkLnNpemUpOworLQorLQlpZihjbGllbnRfaGFuZGxlLT5zdGF0 ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKy0JICAgIGNsaWVudF9oYW5k bGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CistCSAgICBj bGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkK Ky0JeworLQkgICAgYnJlYWs7CistCX0KKy0KKy0JZ2xvYnVzX2Fzc2VydChjbGllbnRfaGFuZGxl LT5zdGF0ZSA9PQorLQkJICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRV UF9DT05ORUNUSU9OIHx8CistCQkgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkJICAg ICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CistCist CXJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9zZW5kX2NvbW1hbmQoCistCSAgICB0YXJnZXQt PmNvbnRyb2xfaGFuZGxlLAorLQkgICAgIiVzICVsdSIgQ1JMRiwKKy0JICAgIGdsb2J1c19pX2Z0 cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCistCSAgICB0YXJnZXQsCistCSAgICBidWZmZXJf Y21kLAorLQkgICAgdGFyZ2V0LT5hdHRyLT5idWZmZXIuZml4ZWQuc2l6ZSk7CistCistCWlmKHJl c3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byByZXN1bHRfZmF1bHQ7Cist CX0KKy0JYnJlYWs7CisrICAgICAgICAgICAgaWYocGJzeiA9PSAwKQorKyAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX2dldF9wYnN6KAor KyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwgJnBic3opOworKyAg ICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICByZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfcGJzeigKKysgICAgICAg ICAgICAgICAgICAgIHRhcmdldC0+Y29udHJvbF9oYW5kbGUsIHBic3opOworKyAgICAgICAgICAg IH0KKyAKKy0gICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfQlVGU0laRToKKy0JZ2xv YnVzX2Fzc2VydCgKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCSAgICBHTE9CVVNf RlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04gfHwKKy0JICAgIGNsaWVu dF9oYW5kbGUtPnN0YXRlID09CistCSAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9T RVRVUF9DT05ORUNUSU9OKTsKKy0KKy0JaWYoKCFlcnJvcikgJiYKKy0JICAgcmVzcG9uc2UtPnJl c3BvbnNlX2NsYXNzID09IEdMT0JVU19GVFBfUE9TSVRJVkVfQ09NUExFVElPTl9SRVBMWSkKKy0J eworLQkgICAgZ2xvYnVzX2xfZnRwX2NsaWVudF91cGRhdGVfYnVmZmVyX2ZlYXR1cmUoCistCSAg ICAgICAgY2xpZW50X2hhbmRsZSwgdGFyZ2V0LCBHTE9CVVNfRlRQX0NMSUVOVF9UUlVFKTsKKy0K Ky0JICAgIHRhcmdldC0+dGNwX2J1ZmZlciA9IHRhcmdldC0+YXR0ci0+YnVmZmVyOworLQorLQkg ICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX3RjcF9idWZmZXIoCistCQl0YXJn ZXQtPmNvbnRyb2xfaGFuZGxlLAorLQkJJnRhcmdldC0+dGNwX2J1ZmZlcik7CistCistCSAgICBp ZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCistCSAgICB7CistCQlnb3RvIHJlc3VsdF9mYXVs dDsKKy0JICAgIH0KKy0JfQorLQllbHNlIGlmKGVycm9yKQorLQl7CistCSAgICB0YXJnZXQtPnN0 YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CistCistCSAg ICBnb3RvIG5vdGlmeV9mYXVsdDsKKy0JfQorLQllbHNlCistCXsKKy0JICAgIGdsb2J1c19sX2Z0 cF9jbGllbnRfdXBkYXRlX2J1ZmZlcl9mZWF0dXJlKAorLQkgICAgICAgIGNsaWVudF9oYW5kbGUs IHRhcmdldCwgR0xPQlVTX0ZUUF9DTElFTlRfRkFMU0UpOworLQorLQkgICAgdGFyZ2V0LT5zdGF0 ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9CVUZTSVpFOworLQkgICAgZ290byBy ZWRvOworLQl9CisrICAgICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorKyAg ICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisrICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIHRhcmdldC0+cGJzeiA9IHBic3o7CisrICAgICAgICB9Cisr ICAgICAgICBlbHNlCisrICAgICAgICB7CisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdM T0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9DT05ORUNUSU9OOworIAorLSAgICBza2lwX2J1 ZnNpemU6CistCWlmKHRhcmdldC0+bW9kZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfTU9ERV9FWFRF TkRFRF9CTE9DSyAmJgorLQkgICAgKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJ RU5UX0dFVCB8fAorLQkgICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5U X01MU0QgfHwKKy0gICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NM SUVOVF9NTFNSIHx8CistCSAgICAgY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElF TlRfTElTVCB8fAorLQkgICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5U X05MU1QgfHwKKy0JICAgICAoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRf VFJBTlNGRVIgJiYKKy0JICAgICAgdGFyZ2V0ID09IGNsaWVudF9oYW5kbGUtPnNvdXJjZSkpKQor LQl7CistCSAgICAvKiBPbmx5IHNlbmQgT1BUUyBSRVRSIGlmIHRoZSBzb3VyY2UgY29udHJvbCBo YW5kbGUgd2lsbAorLQkgICAgICogYmUgdXNlZC4KKy0JICAgICAqLworLQkgICAgdGFyZ2V0LT5z dGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9SRU1PVEVfUkVUUl9PUFRTOwor LQl9CistCWVsc2UgaWYodGFyZ2V0LT5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJPTF9NT0RFX0VY VEVOREVEX0JMT0NLICYmCistCQljbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVO VF9QVVQpCistCXsKKy0JICAgIC8qIE9ubHkgZG8gbG9jYWxfbGF5b3V0IGFuZCBsb2NhbF9wYXJh bGxlbGlzbSBpZiB3ZSBhcmUKKy0JICAgICAqIHJlY2VpdmluZyB0aGUgZGF0YSAobm90IDNyZCBw YXJ0eSkKKy0JICAgICAqLworLQkgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5U X1RBUkdFVF9TRVRVUF9MT0NBTF9SRVRSX09QVFM7CistCX0KKy0JZWxzZQorLQl7CistCSAgICBn b3RvIHNraXBfb3B0c19yZXRyOworLQl9CistCistCWdvdG8gcmVkbzsKKysgICAgICAgICAgICBn b3RvIG5vdGlmeV9mYXVsdDsKKysgICAgICAgIH0KKyAKKy0gICAgY2FzZSBHTE9CVVNfRlRQX0NM SUVOVF9UQVJHRVRfU0VUVVBfUkVNT1RFX1JFVFJfT1BUUzoKKysgICAgc2tpcF9wYnN6OgorKyAg ICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9QUk9U OworKyAgICAgICAgZ290byByZWRvOworIAorLQlwYXJhbGxlbGlzbV9vcHQgPSBnbG9idXNfbF9m dHBfY2xpZW50X3BhcmFsbGVsaXNtX3N0cmluZyh0YXJnZXQpOworLQlsYXlvdXRfb3B0ID0gZ2xv YnVzX2xfZnRwX2NsaWVudF9sYXlvdXRfc3RyaW5nKHRhcmdldCk7CistCistCWlmKCghcGFyYWxs ZWxpc21fb3B0KSAmJiAoIWxheW91dF9vcHQpKQorLQl7CistCSAgICBnb3RvIHNraXBfb3B0c19y ZXRyOworLQl9CistCistCXRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNL X1RSQU5TRkVSX1BBUkFNRVRFUlM7CistCistCWdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25v dGlmeV9jb21tYW5kKAorLQkJY2xpZW50X2hhbmRsZSwKKy0JCXRhcmdldC0+dXJsX3N0cmluZywK Ky0JCXRhcmdldC0+bWFzaywKKy0JCSJPUFRTIFJFVFIgJXMlcyIgQ1JMRiwKKy0JCWxheW91dF9v cHQgPyBsYXlvdXRfb3B0IDogIiIsCistCQlwYXJhbGxlbGlzbV9vcHQgPyBwYXJhbGxlbGlzbV9v cHQgOiAiIik7CistCistCWlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJ RU5UX0hBTkRMRV9BQk9SVCB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVT X0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRl ID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorLQl7CistCSAgICBpZihwYXJh bGxlbGlzbV9vcHQpCistCSAgICB7CistCSAgICAgICAgZ2xvYnVzX2xpYmNfZnJlZShwYXJhbGxl bGlzbV9vcHQpOworLQkgICAgfQorLQkgICAgaWYobGF5b3V0X29wdCkKKy0JICAgIHsKKy0JICAg ICAgICBnbG9idXNfbGliY19mcmVlKGxheW91dF9vcHQpOworLQkgICAgfQorLQkgICAgYnJlYWs7 CistCX0KKy0JcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKy0JICAg IHRhcmdldC0+Y29udHJvbF9oYW5kbGUsCistCSAgICAiT1BUUyBSRVRSICVzJXMiIENSTEYsCist CSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorLQkgICAgdGFyZ2V0 LAorLQkgICAgbGF5b3V0X29wdCA/IGxheW91dF9vcHQgOiAiIiwKKy0JICAgIHBhcmFsbGVsaXNt X29wdCA/IHBhcmFsbGVsaXNtX29wdCA6ICIiKTsKKy0KKy0JaWYocGFyYWxsZWxpc21fb3B0KQor LQl7CistCSAgICBnbG9idXNfbGliY19mcmVlKHBhcmFsbGVsaXNtX29wdCk7CistCX0KKy0JaWYo bGF5b3V0X29wdCkKKy0JeworLQkgICAgZ2xvYnVzX2xpYmNfZnJlZShsYXlvdXRfb3B0KTsKKy0J fQorLQlpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gcmVzdWx0 X2ZhdWx0OworLQl9CistCistCXRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJH RVRfUkVNT1RFX1JFVFJfT1BUUzsKKy0JYnJlYWs7CisrICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElF TlRfVEFSR0VUX1NFVFVQX1BST1Q6CisrICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX1BST1Q7CisgCistICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFS R0VUX1NFVFVQX0xPQ0FMX1JFVFJfT1BUUzoKKy0gICAgICAgIAorLSAgICAgICAgaWYodGFyZ2V0 LT5hdHRyLT5wYXJhbGxlbGlzbS5tb2RlID09IHRhcmdldC0+cGFyYWxsZWxpc20ubW9kZSAmJgor LSAgICAgICAgICAgICh0YXJnZXQtPnBhcmFsbGVsaXNtLm1vZGUgIT0gR0xPQlVTX0ZUUF9DT05U Uk9MX1BBUkFMTEVMSVNNX0ZJWEVEIAorLSAgICAgICAgICAgICAgICB8fCB0YXJnZXQtPmF0dHIt PnBhcmFsbGVsaXNtLmZpeGVkLnNpemUgPT0KKy0JICAgICAgICAgICAgdGFyZ2V0LT5wYXJhbGxl bGlzbS5maXhlZC5zaXplKSAmJgorLQkgICAgdGFyZ2V0LT5hdHRyLT5sYXlvdXQubW9kZSA9PSB0 YXJnZXQtPmxheW91dC5tb2RlICYmCistCSAgICAgICAgKHRhcmdldC0+bGF5b3V0Lm1vZGUgIT0K Ky0JICAgICAgICAgICAgR0xPQlVTX0ZUUF9DT05UUk9MX1NUUklQSU5HX0JMT0NLRURfUk9VTkRf Uk9CSU4KKy0JICAgICAgICAgICAgfHwgdGFyZ2V0LT5hdHRyLT5sYXlvdXQucm91bmRfcm9iaW4u YmxvY2tfc2l6ZSA9PQorLQkgICAgICAgICAgICAgICAgdGFyZ2V0LT5sYXlvdXQucm91bmRfcm9i aW4uYmxvY2tfc2l6ZSkpCisrICAgICAgICBpZih0YXJnZXQtPmRjYXUubW9kZSA9PSBHTE9CVVNf RlRQX0NPTlRST0xfRENBVV9OT05FKQorICAgICAgICAgeworLSAgICAgICAgICAgIGdvdG8gc2tp cF9vcHRzX3JldHI7CisrICAgICAgICAgICAgZ290byBza2lwX3Byb3Q7CisgICAgICAgICB9Cist ICAgICAgICAKKy0JcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX3BhcmFsbGVsaXNt KAorLQkgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKy0JICAgICZ0YXJnZXQtPmF0dHItPnBh cmFsbGVsaXNtKTsKKy0KKy0JaWYocmVzdWx0KQorLQl7CistCSAgICBnb3RvIHJlc3VsdF9mYXVs dDsKKy0JfQorLQlyZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfbGF5b3V0KHRhcmdl dC0+Y29udHJvbF9oYW5kbGUsCistCQkJCQkJICZ0YXJnZXQtPmF0dHItPmxheW91dCwKKy0JCQkJ CQkgMCk7CistCWlmKHJlc3VsdCkKKy0JeworLQkgICAgZ290byByZXN1bHRfZmF1bHQ7CistCX0K Ky0KKy0JbWVtY3B5KCZ0YXJnZXQtPnBhcmFsbGVsaXNtLAorLQkgICAgICAgJnRhcmdldC0+YXR0 ci0+cGFyYWxsZWxpc20sCistCSAgICAgICBzaXplb2YoZ2xvYnVzX2Z0cF9jb250cm9sX3BhcmFs bGVsaXNtX3QpKTsKKy0KKy0JbWVtY3B5KCZ0YXJnZXQtPnBhcmFsbGVsaXNtLAorLQkgICAgICAg JnRhcmdldC0+YXR0ci0+cGFyYWxsZWxpc20sCistCSAgICAgICBzaXplb2YoZ2xvYnVzX2Z0cF9j b250cm9sX3BhcmFsbGVsaXNtX3QpKTsKKy0KKy0JZ290byBza2lwX29wdHNfcmV0cjsKKy0KKy0g ICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfUkVNT1RFX1JFVFJfT1BUUzoKKy0JZ2xv YnVzX2Fzc2VydCgKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCSAgICBHTE9CVVNf RlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04KKy0JICAgIHx8CistCSAg ICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CistCistCWlmKCghZXJyb3IpICYmCistCSAgIHJlc3Bv bnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJT05fUkVQ TFkpCistCXsKKy0JICAgIG1lbWNweSgmdGFyZ2V0LT5wYXJhbGxlbGlzbSwKKy0JCSAgICZ0YXJn ZXQtPmF0dHItPnBhcmFsbGVsaXNtLAorLQkJICAgc2l6ZW9mKGdsb2J1c19mdHBfY29udHJvbF9w YXJhbGxlbGlzbV90KSk7CistCSAgICBtZW1jcHkoJnRhcmdldC0+bGF5b3V0LAorLQkJICAgJnRh cmdldC0+YXR0ci0+bGF5b3V0LAorLQkJICAgc2l6ZW9mKGdsb2J1c19mdHBfY29udHJvbF9sYXlv dXRfdCkpOworLQl9CistCWVsc2UgaWYoKCFlcnJvcikgJiYgcmVzcG9uc2UtPmNvZGUgLyAxMCA9 PSA1MCkKKy0JeworLQkgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCgKKy0gICAg ICAgICAgICAgICAgdGFyZ2V0LT5mZWF0dXJlcywKKy0gICAgICAgICAgICAgICAgR0xPQlVTX0ZU UF9DTElFTlRfRkVBVFVSRV9QQVJBTExFTElTTSwKKy0gICAgICAgICAgICAgICAgR0xPQlVTX0ZU UF9DTElFTlRfRkFMU0UpOworLQorLQkgICAgaWYodGFyZ2V0LT5hdHRyLT5wYXJhbGxlbGlzbS5t b2RlCistCSAgICAgICA9PSBHTE9CVVNfRlRQX0NPTlRST0xfUEFSQUxMRUxJU01fTk9ORSAmJgor LQkgICAgICAgdGFyZ2V0LT5hdHRyLT5sYXlvdXQubW9kZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xf U1RSSVBJTkdfTk9ORSkKKy0JICAgIHsKKy0JCW1lbWNweSgmdGFyZ2V0LT5wYXJhbGxlbGlzbSwK Ky0JCSAgICAgICAmdGFyZ2V0LT5hdHRyLT5wYXJhbGxlbGlzbSwKKy0JCSAgICAgICBzaXplb2Yo Z2xvYnVzX2Z0cF9jb250cm9sX3BhcmFsbGVsaXNtX3QpKTsKKy0JCW1lbWNweSgmdGFyZ2V0LT5s YXlvdXQsCistCQkgICAgICAgJnRhcmdldC0+YXR0ci0+bGF5b3V0LAorLQkJICAgICAgIHNpemVv ZihnbG9idXNfZnRwX2NvbnRyb2xfbGF5b3V0X3QpKTsKKy0JICAgIH0KKy0JICAgIGVsc2UKKy0J ICAgIHsKKy0JCXRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBf Q09OTkVDVElPTjsKKy0KKy0JCWdvdG8gY29ubmVjdGlvbl9lcnJvcjsKKy0JICAgIH0KKy0JfQor LQllbHNlCistCXsKKy0JICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJH RVRfU0VUVVBfQ09OTkVDVElPTjsKKy0KKy0JICAgIGdvdG8gbm90aWZ5X2ZhdWx0OworLQl9Cist CistICAgIHNraXBfb3B0c19yZXRyOgorLQl0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElF TlRfVEFSR0VUX1NFVFVQX0RDU0M7CistCWdvdG8gcmVkbzsKKy0KKy0gICAgY2FzZSBHTE9CVVNf RlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfRENTQzoKKy0JdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19G VFBfQ0xJRU5UX1RBUkdFVF9EQ1NDOworLQorLQlpZih0YXJnZXQtPmF0dHItPmRjc2NfdHlwZSA9 PSAwIHx8IAorLQkgICAgKHRhcmdldC0+YXR0ci0+ZGNzY190eXBlID09IHRhcmdldC0+ZGNzY190 eXBlICYmIAorLQkgICAgdGFyZ2V0LT5kY3NjX2Jsb2IgJiYgdGFyZ2V0LT5hdHRyLT5kY3NjX2Js b2IgJiYKKy0JICAgIHN0cmNtcCh0YXJnZXQtPmF0dHItPmRjc2NfYmxvYiwgdGFyZ2V0LT5kY3Nj X2Jsb2IpID09IDApKQorLQl7CistCSAgICBnb3RvIHNraXBfZGNzYzsKKy0JfQorLQorLSAgICAg ICAgaWYoZ2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX2dldCh0YXJnZXQtPmZlYXR1cmVzLCAK Ky0gICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9GRUFUVVJFX0RDU0MpICE9IEdMT0JVU19G VFBfQ0xJRU5UX1RSVUUgJiYKKy0gICAgICAgICAgICB0YXJnZXQtPnVybC5zY2hlbWVfdHlwZSA9 PSBHTE9CVVNfVVJMX1NDSEVNRV9HU0lGVFApCisrICAgICAgICBpZih0YXJnZXQtPmF0dHItPmRh dGFfcHJvdCA9PSB0YXJnZXQtPmRhdGFfcHJvdCkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICBn b3RvIHNraXBfZGNzYzsKKysgICAgICAgICAgICBnb3RvIHNraXBfcHJvdDsKKyAgICAgICAgIH0K KysgICAgICAgIC8qIGNoYW5naW5nIFBST1QgZm9yY2VzIHVzIHRvIHRyYXNoIG91ciBvbGQgZGF0 YSBjb25uZWN0aW9ucyBbdHJ1ZT9dICovCisrICAgICAgICBtZW1zZXQoJnRhcmdldC0+Y2FjaGVk X2RhdGFfY29ubiwKKysgICAgICAgICAgICAgICAnXDAnLAorKyAgICAgICAgICAgICAgIHNpemVv ZihnbG9idXNfaV9mdHBfY2xpZW50X2RhdGFfdGFyZ2V0X3QpKTsKKyAKKy0JLyogY2hhbmdpbmcg RENTQyBmb3JjZXMgdXMgdG8gdHJhc2ggb3VyIG9sZCBkYXRhIGNvbm5lY3Rpb25zICovCistCW1l bXNldCgmdGFyZ2V0LT5jYWNoZWRfZGF0YV9jb25uLAorLQkgICAgICAgJ1wwJywKKy0JICAgICAg IHNpemVvZihnbG9idXNfaV9mdHBfY2xpZW50X2RhdGFfdGFyZ2V0X3QpKTsKKy0KKy0JdGFyZ2V0 LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfVFJBTlNGRVJfUEFSQU1FVEVSUzsK Ky0JZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCistCSAgICBjbGll bnRfaGFuZGxlLAorLQkgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorLQkgICAgdGFyZ2V0LT5tYXNr LAorLQkgICAgIkRDU0MgJWMlcyVzIiBDUkxGLAorLQkgICAgKGNoYXIpIHRhcmdldC0+YXR0ci0+ ZGNzY190eXBlLAorLQkgICAgdGFyZ2V0LT5hdHRyLT5kY3NjX3R5cGUgPT0gJ0QnID8gIiIgOiAi ICIsCistCSAgICB0YXJnZXQtPmF0dHItPmRjc2NfdHlwZSA9PSAnRCcgPyAiIiA6IHRhcmdldC0+ YXR0ci0+ZGNzY19ibG9iKTsKKysgICAgICAgIHRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJ RU5UX0NNRF9NQVNLX1RSQU5TRkVSX1BBUkFNRVRFUlM7CisrICAgICAgICBnbG9idXNfaV9mdHBf Y2xpZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxl LAorKyAgICAgICAgICAgIHRhcmdldC0+dXJsX3N0cmluZywKKysgICAgICAgICAgICB0YXJnZXQt Pm1hc2ssCisrICAgICAgICAgICAgIlBST1QgJWMiIENSTEYsCisrICAgICAgICAgICAgKGNoYXIp IHRhcmdldC0+YXR0ci0+ZGF0YV9wcm90KTsKKyAKKy0JaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CistCSAgICBjbGllbnRfaGFuZGxl LT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorKyAgICAgICAg aWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JU IHx8CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX1JFU1RBUlQgfHwKKyAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKy0JeworLQkgICAgYnJlYWs7Cist CX0KKy0KKy0JZ2xvYnVzX2Fzc2VydCgKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09Cist CSAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04gfHwK Ky0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCSAgICBHTE9CVVNfRlRQX0NMSUVOVF9I QU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKy0KKy0JcmVzdWx0ID0gZ2xvYnVzX2Z0cF9j b250cm9sX3NlbmRfY29tbWFuZCgKKy0JICAgIHRhcmdldC0+Y29udHJvbF9oYW5kbGUsCistCSAg ICAiRENTQyAlYyVzJXMiIENSTEYsCistCSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNl X2NhbGxiYWNrLAorLQkgICAgdGFyZ2V0LAorLQkgICAgKGNoYXIpIHRhcmdldC0+YXR0ci0+ZGNz Y190eXBlLAorLQkgICAgdGFyZ2V0LT5hdHRyLT5kY3NjX3R5cGUgPT0gJ0QnID8gIiIgOiAiICIs CistCSAgICB0YXJnZXQtPmF0dHItPmRjc2NfdHlwZSA9PSAnRCcgPyAiIiA6IHRhcmdldC0+YXR0 ci0+ZGNzY19ibG9iKTsKKy0KKy0JaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorLQl7Cist CSAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKy0JfQorLQorLQlicmVhazsKKy0KKy0gICAgY2FzZSBH TE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfRENTQzoKKy0JZ2xvYnVzX2Fzc2VydCgKKy0JICAgIGNs aWVudF9oYW5kbGUtPnN0YXRlID09CistCSAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09V UkNFX1NFVFVQX0NPTk5FQ1RJT04gfHwKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09Cist CSAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKy0K Ky0JaWYoKCFlcnJvcikgJiYKKy0JICAgcmVzcG9uc2UtPnJlc3BvbnNlX2NsYXNzID09IEdMT0JV U19GVFBfUE9TSVRJVkVfQ09NUExFVElPTl9SRVBMWSkKKy0JeworLSAgICAgICAgICAgIHRhcmdl dC0+ZGNzY190eXBlID0gdGFyZ2V0LT5hdHRyLT5kY3NjX3R5cGU7CistICAgICAgICAgICAgaWYo dGFyZ2V0LT5kY3NjX2Jsb2IpCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBnbG9i dXNfZnJlZSh0YXJnZXQtPmRjc2NfYmxvYik7CistICAgICAgICAgICAgfQorLSAgICAgICAgICAg IHRhcmdldC0+ZGNzY19ibG9iID0gZ2xvYnVzX2xpYmNfc3RyZHVwKHRhcmdldC0+YXR0ci0+ZGNz Y19ibG9iKTsKKy0gICAgICAgICAgICB0YXJnZXQtPmRjc2NfcF9jcmVkID0gdGFyZ2V0LT5hdHRy LT5kY3NjX3BfY3JlZDsKKy0JfQorLQllbHNlCistCXsKKy0JICAgIGVycm9yID0gR0xPQlVTX0lf RlRQX0NMSUVOVF9FUlJPUl9VTlNVUFBPUlRFRF9GRUFUVVJFKCJEQ1NDIik7CistCSAgICB0YXJn ZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047Cisr ICAgICAgICB7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisgCistCSAgICBnb3Rv IG5vdGlmeV9mYXVsdDsKKy0JfQorKyAgICAgICAgZ2xvYnVzX2Fzc2VydCgKKysgICAgICAgICAg ICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5U X0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorKyAgICAgICAgICAgIGNsaWVudF9o YW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RF U1RfU0VUVVBfQ09OTkVDVElPTik7CisgCistICAgIHNraXBfZGNzYzoKKy0JdGFyZ2V0LT5zdGF0 ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9EQ0FVOworLQlnb3RvIHJlZG87Cisr ICAgICAgICByZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorKyAgICAg ICAgICAgIHRhcmdldC0+Y29udHJvbF9oYW5kbGUsCisrICAgICAgICAgICAgIlBST1QgJWMiIENS TEYsCisrICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9yZXNwb25zZV9jYWxsYmFjaywK KysgICAgICAgICAgICB0YXJnZXQsCisrICAgICAgICAgICAgKGNoYXIpIHRhcmdldC0+YXR0ci0+ ZGF0YV9wcm90KTsKKyAKKy0gICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBf RENBVToKKy0JdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9EQ0FVOwor LSAgICAgICAgCistICAgICAgICBpZih0YXJnZXQtPmRjc2NfcF9jcmVkICE9IEdTU19DX05PX0NS RURFTlRJQUwpCisrICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAg ICB7CistICAgICAgICAgICAgdGFyZ2V0LT5hdHRyLT5kY2F1Lm1vZGUgPSBHTE9CVVNfRlRQX0NP TlRST0xfRENBVV9TRUxGOworKyAgICAgICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworICAgICAg ICAgfQorLQlpZih0YXJnZXQtPmF0dHItPmRjYXUubW9kZSA9PSB0YXJnZXQtPmRjYXUubW9kZSAm JgorLQkgICB0YXJnZXQtPmRjYXUubW9kZSAhPSBHTE9CVVNfRlRQX0NPTlRST0xfRENBVV9ERUZB VUxUKQorLQl7CistCSAgICBnb3RvIHNraXBfZGNhdTsKKy0JfQorLQlpZih0YXJnZXQtPmF0dHIt PmRjYXUubW9kZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfRENBVV9ERUZBVUxUICYmCistCSAgIGds b2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9nZXQoCistCSAgICAgICB0YXJnZXQtPmZlYXR1cmVz LCAKKy0JICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRVUkVfRENBVSkgIT0gR0xPQlVTX0ZU UF9DTElFTlRfVFJVRSkKKy0JeworLQkgICAgZ290byBza2lwX2RjYXU7CistCX0KKy0JaWYodGFy Z2V0LT5hdHRyLT5kY2F1Lm1vZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVfREVGQVVMVCAm JgorLQkgICAodGFyZ2V0LT5kY2F1Lm1vZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVfU0VM RiB8fAorLQkgICAgdGFyZ2V0LT5kY2F1Lm1vZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVf REVGQVVMVCkpCistCXsKKy0JICAgIGdvdG8gZmluaXNoX2RjYXU7CistCX0KKy0KKy0JLyogY2hh bmdpbmcgRENBVSBmb3JjZXMgdXMgdG8gdHJhc2ggb3VyIG9sZCBkYXRhIGNvbm5lY3Rpb25zICov CistCW1lbXNldCgmdGFyZ2V0LT5jYWNoZWRfZGF0YV9jb25uLAorLQkgICAgICAgJ1wwJywKKy0J ICAgICAgIHNpemVvZihnbG9idXNfaV9mdHBfY2xpZW50X2RhdGFfdGFyZ2V0X3QpKTsKKy0KKy0J dGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfVFJBTlNGRVJfUEFSQU1F VEVSUzsKKy0JZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCistCSAg ICBjbGllbnRfaGFuZGxlLAorLQkgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorLQkgICAgdGFyZ2V0 LT5tYXNrLAorLQkgICAgIkRDQVUgJWMlcyVzIiBDUkxGLAorLQkgICAgKGNoYXIpIHRhcmdldC0+ YXR0ci0+ZGNhdS5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJPTF9EQ0FVX0RFRkFVTFQKKy0JICAg ICAgICA/IEdMT0JVU19GVFBfQ09OVFJPTF9EQ0FVX1NFTEYgOiB0YXJnZXQtPmF0dHItPmRjYXUu bW9kZSwKKy0JICAgIHRhcmdldC0+YXR0ci0+ZGNhdS5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJP TF9EQ0FVX1NVQkpFQ1QKKy0JCT8gIiAiIDogIiIsCistCSAgICB0YXJnZXQtPmF0dHItPmRjYXUu bW9kZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfRENBVV9TVUJKRUNUCistCQk/IHRhcmdldC0+YXR0 ci0+ZGNhdS5zdWJqZWN0LnN1YmplY3QgOiAiIik7CistCistCWlmKGNsaWVudF9oYW5kbGUtPnN0 YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCB8fAorLQkgICAgY2xpZW50X2hh bmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwKKy0gICAg ICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVf RkFJTFVSRSkKKy0JeworLQkgICAgYnJlYWs7CistCX0KKy0KKy0JZ2xvYnVzX2Fzc2VydCgKKy0J ICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCSAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04gfHwKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRl ID09CistCSAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9O KTsKKy0KKy0JcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKy0JICAg IHRhcmdldC0+Y29udHJvbF9oYW5kbGUsCistCSAgICAiRENBVSAlYyVzJXMiIENSTEYsCistCSAg ICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorLQkgICAgdGFyZ2V0LAor LQkgICAgKGNoYXIpIHRhcmdldC0+YXR0ci0+ZGNhdS5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJP TF9EQ0FVX0RFRkFVTFQKKy0JICAgICAgICA/IEdMT0JVU19GVFBfQ09OVFJPTF9EQ0FVX1NFTEYg OiB0YXJnZXQtPmF0dHItPmRjYXUubW9kZSwKKy0JICAgIHRhcmdldC0+YXR0ci0+ZGNhdS5tb2Rl ID09IEdMT0JVU19GVFBfQ09OVFJPTF9EQ0FVX1NVQkpFQ1QKKy0JCT8gIiAiIDogIiIsCistCSAg ICB0YXJnZXQtPmF0dHItPmRjYXUubW9kZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfRENBVV9TVUJK RUNUCistCQk/IHRhcmdldC0+YXR0ci0+ZGNhdS5zdWJqZWN0LnN1YmplY3QgOiAiIik7CistCist CWlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byByZXN1bHRfZmF1 bHQ7CistCX0KKy0KKy0JYnJlYWs7CistCistICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFS R0VUX0RDQVU6CistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9O IHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CistCistCWlmKCghZXJyb3IpICYmCist CSAgIHJlc3BvbnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBM RVRJT05fUkVQTFkpCistCXsKKy0KKy0JICAgIGlmKHRhcmdldC0+YXR0ci0+ZGNhdS5tb2RlID09 IEdMT0JVU19GVFBfQ09OVFJPTF9EQ0FVX1NVQkpFQ1QpCistCSAgICB7CistCQljaGFyICogdG1w X3N1Ymo7CistCQl0bXBfc3ViaiA9IHRhcmdldC0+ZGNhdS5zdWJqZWN0LnN1YmplY3Q7CistCist CQl0YXJnZXQtPmRjYXUuc3ViamVjdC5zdWJqZWN0ID0KKy0JCSAgICBnbG9idXNfbGliY19zdHJk dXAodGFyZ2V0LT5hdHRyLT5kY2F1LnN1YmplY3Quc3ViamVjdCk7CistCQlpZighIHRhcmdldC0+ ZGNhdS5zdWJqZWN0LnN1YmplY3QpCistCQl7CistCQkgICAgZXJyb3IgPSBHTE9CVVNfSV9GVFBf Q0xJRU5UX0VSUk9SX09VVF9PRl9NRU1PUlkoKTsKKy0JCSAgICB0YXJnZXQtPmRjYXUuc3ViamVj dC5zdWJqZWN0ID0gdG1wX3N1Ymo7CistCistCQkgICAgZ290byBub3RpZnlfZmF1bHQ7CistCQl9 CistCQllbHNlIGlmKHRtcF9zdWJqKQorLQkJeworLQkJICAgIGdsb2J1c19saWJjX2ZyZWUodG1w X3N1YmopOworLQkJfQorLQkgICAgfQorLQlmaW5pc2hfZGNhdToKKy0JICAgIGlmKHRhcmdldC0+ YXR0ci0+ZGNhdS5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJPTF9EQ0FVX0RFRkFVTFQpCistCSAg ICB7CistCSAgICAgICAgaWYoIWdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9nZXQoCistCSAg ICAgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMsIEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRVUkVfRENB VSkpCistCQl7CistCQkgICAgdGFyZ2V0LT5kY2F1Lm1vZGUgPSBHTE9CVVNfRlRQX0NPTlRST0xf RENBVV9OT05FOworLQkJfQorLQkJZWxzZQorLQkJeworLQkJICAgIHRhcmdldC0+ZGNhdS5tb2Rl ID0gR0xPQlVTX0ZUUF9DT05UUk9MX0RDQVVfU0VMRjsKKy0JCX0KKy0JICAgIH0KKy0JICAgIGVs c2UKKy0JICAgIHsKKy0JCXRhcmdldC0+ZGNhdS5tb2RlID0gdGFyZ2V0LT5hdHRyLT5kY2F1Lm1v ZGU7CistCSAgICB9CistICAgICAgICAgICAgCistICAgICAgICAgICAgaWYodGFyZ2V0LT5kY3Nj X3BfY3JlZCAhPSBHU1NfQ19OT19DUkVERU5USUFMKQorLSAgICAgICAgICAgIHsgICAgICAgICAg ICAgICAgCistICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9sb2Nh bF9kY2F1KAorLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKy0g ICAgICAgICAgICAgICAgICAgICZ0YXJnZXQtPmRjYXUsCistICAgICAgICAgICAgICAgICAgICB0 YXJnZXQtPmRjc2NfcF9jcmVkKTsKKy0gICAgICAgICAgICB9CistICAgICAgICAgICAgZWxzZQor LSAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250 cm9sX2xvY2FsX2RjYXUoCistICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPmNvbnRyb2xfaGFu ZGxlLAorLSAgICAgICAgICAgICAgICAgICAgJnRhcmdldC0+ZGNhdSwKKy0gICAgICAgICAgICAg ICAgICAgIHRhcmdldC0+Y29udHJvbF9oYW5kbGUtPmNjX2hhbmRsZS5hdXRoX2luZm8uY3JlZGVu dGlhbF9oYW5kbGUpOworLSAgICAgICAgICAgIH0KKy0JICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNf U1VDQ0VTUykKKy0JICAgIHsKKy0JCWdvdG8gcmVzdWx0X2ZhdWx0OworLQkgICAgfQorLQl9Cist CWVsc2UKKy0JeworLQkgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdF VF9TRVRVUF9DT05ORUNUSU9OOworIAorLQkgICAgZ290byBub3RpZnlfZmF1bHQ7CistCX0KKysg ICAgICAgIGJyZWFrOworIAorLSAgICBza2lwX2RjYXU6CistCXRhcmdldC0+c3RhdGUgPSBHTE9C VVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfUEJTWjsKKy0JZ290byByZWRvOworKyAgICBjYXNl IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9QUk9UOgorKyAgICAgICAgZ2xvYnVzX2Fzc2VydCgK KysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JV U19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorKyAgICAgICAg ICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CisgCistICAgIGNhc2UgR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX1NFVFVQX1BCU1o6CistCXRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQ X0NMSUVOVF9UQVJHRVRfUEJTWjsKKy0KKy0JaWYodGFyZ2V0LT5kY2F1Lm1vZGUgPT0gR0xPQlVT X0ZUUF9DT05UUk9MX0RDQVVfTk9ORSkKKy0JeworLQkgICAgZ290byBza2lwX3Bic3o7CistCX0K Ky0KKy0JcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX2dldF9wYnN6KAorLQkJICAgIHRhcmdl dC0+Y29udHJvbF9oYW5kbGUsCistCQkgICAgJnBic3opOworLQlpZihyZXN1bHQgIT0gR0xPQlVT X1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworLQl9CistCWlmKHRhcmdl dC0+cGJzeiA9PSBwYnN6KQorLQl7CistCSAgICBnb3RvIHNraXBfcGJzejsKKy0JfQorLQkKKy0J LyogY2hhbmdpbmcgUEJTWiBmb3JjZXMgdXMgdG8gdHJhc2ggb3VyIG9sZCBkYXRhIGNvbm5lY3Rp b25zICovCistCW1lbXNldCgmdGFyZ2V0LT5jYWNoZWRfZGF0YV9jb25uLAorLQkgICAgICAgJ1ww JywKKy0JICAgICAgIHNpemVvZihnbG9idXNfaV9mdHBfY2xpZW50X2RhdGFfdGFyZ2V0X3QpKTsK Ky0KKy0JdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfVFJBTlNGRVJf UEFSQU1FVEVSUzsKKy0JZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQo CistCSAgICBjbGllbnRfaGFuZGxlLAorLQkgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorLQkgICAg dGFyZ2V0LT5tYXNrLAorLQkgICAgIlBCU1ogJWx1IiBDUkxGLAorLQkgICAgcGJzeik7CistCist CWlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9S VCB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFO RExFX1JFU1RBUlQgfHwKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBf Q0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorLQl7CistCSAgICBicmVhazsKKy0JfQorLQorLQlnbG9i dXNfYXNzZXJ0KAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JICAgIEdMT0JVU19G VFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorLQkgICAgY2xpZW50 X2hhbmRsZS0+c3RhdGUgPT0KKy0JICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NF VFVQX0NPTk5FQ1RJT04pOworLQorLQlyZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9j b21tYW5kKAorLQkgICAgdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKy0JICAgICJQQlNaICVsdSIg Q1JMRiwKKy0JICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCistCSAg ICB0YXJnZXQsCistCSAgICBwYnN6KTsKKy0KKy0JaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNT KQorLQl7CistCSAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKy0JfQorLQorLQlicmVhazsKKysgICAg ICAgIGlmKCghZXJyb3IpICYmCisrICAgICAgICAgICByZXNwb25zZS0+cmVzcG9uc2VfY2xhc3Mg PT0gR0xPQlVTX0ZUUF9QT1NJVElWRV9DT01QTEVUSU9OX1JFUExZKQorKyAgICAgICAgeworKyAg ICAgICAgICAgIHRhcmdldC0+ZGF0YV9wcm90ID0gdGFyZ2V0LT5hdHRyLT5kYXRhX3Byb3Q7Cisg CistICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1BCU1o6CistCWdsb2J1c19hc3Nl cnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8CistCSAgICBjbGllbnRfaGFuZGxl LT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09O TkVDVElPTik7CistCistCWlmKCghZXJyb3IpICYmCistCSAgIHJlc3BvbnNlLT5yZXNwb25zZV9j bGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJT05fUkVQTFkpCistCXsKKy0JICAg IGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICBzOworLSAgICAgICAgICAgIAorLSAgICAgICAg ICAgIHBic3ogPSAwOworLSAgICAgICAgICAgIHMgPSBzdHJzdHIoKGNoYXIgKikgcmVzcG9uc2Ut PnJlc3BvbnNlX2J1ZmZlciwgIlBCU1o9Iik7CistICAgICAgICAgICAgaWYocykKKy0gICAgICAg ICAgICB7CistICAgICAgICAgICAgICAgIHNzY2FuZihzLCAiUEJTWj0lbHUiLCAmcGJzeik7Cist ICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorLSAgICAgICAgICAgIGlmKHBic3ogPT0gMCkK Ky0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29u dHJvbF9nZXRfcGJzeigKKy0gICAgICAgICAgICAgICAgICAgIHRhcmdldC0+Y29udHJvbF9oYW5k bGUsICZwYnN6KTsKKy0gICAgICAgICAgICB9CistICAgICAgICAgICAgZWxzZQorLSAgICAgICAg ICAgIHsKKy0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2Fs X3Bic3ooCistICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLCBwYnN6 KTsKKy0gICAgICAgICAgICB9CistICAgICAgICAgICAgCisrICAgICAgICAgICAgcmVzdWx0ID0g Z2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX3Byb3QodGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQt PmRhdGFfcHJvdCk7CisgICAgICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQor ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisgICAg ICAgICAgICAgfQorLSAgICAgICAgICAgIHRhcmdldC0+cGJzeiA9IHBic3o7CistCX0KKy0JZWxz ZQorLQl7CistCSAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NF VFVQX0NPTk5FQ1RJT047CistCistCSAgICBnb3RvIG5vdGlmeV9mYXVsdDsKKy0JfQorLQorLSAg ICBza2lwX3Bic3o6CistCXRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRf U0VUVVBfUFJPVDsKKy0JZ290byByZWRvOworLQorLSAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5U X1RBUkdFVF9TRVRVUF9QUk9UOgorLQl0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRf VEFSR0VUX1BST1Q7CistCistCWlmKHRhcmdldC0+ZGNhdS5tb2RlID09IEdMT0JVU19GVFBfQ09O VFJPTF9EQ0FVX05PTkUpCistCXsKKy0JICAgIGdvdG8gc2tpcF9wcm90OworLQl9CistCWlmKHRh cmdldC0+YXR0ci0+ZGF0YV9wcm90ID09IHRhcmdldC0+ZGF0YV9wcm90KQorLQl7CistCSAgICBn b3RvIHNraXBfcHJvdDsKKy0JfQorLQkvKiBjaGFuZ2luZyBQUk9UIGZvcmNlcyB1cyB0byB0cmFz aCBvdXIgb2xkIGRhdGEgY29ubmVjdGlvbnMgW3RydWU/XSAqLworLQltZW1zZXQoJnRhcmdldC0+ Y2FjaGVkX2RhdGFfY29ubiwKKy0JICAgICAgICdcMCcsCistCSAgICAgICBzaXplb2YoZ2xvYnVz X2lfZnRwX2NsaWVudF9kYXRhX3RhcmdldF90KSk7CistCistCXRhcmdldC0+bWFzayA9IEdMT0JV U19GVFBfQ0xJRU5UX0NNRF9NQVNLX1RSQU5TRkVSX1BBUkFNRVRFUlM7CistCWdsb2J1c19pX2Z0 cF9jbGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorLQkgICAgY2xpZW50X2hhbmRsZSwKKy0J ICAgIHRhcmdldC0+dXJsX3N0cmluZywKKy0JICAgIHRhcmdldC0+bWFzaywKKy0JICAgICJQUk9U ICVjIiBDUkxGLAorLQkgICAgKGNoYXIpIHRhcmdldC0+YXR0ci0+ZGF0YV9wcm90KTsKKy0KKy0J aWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JU IHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfUkVTVEFSVCB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9D TElFTlRfSEFORExFX0ZBSUxVUkUpCistCXsKKy0JICAgIGJyZWFrOworLQl9CistCistCWdsb2J1 c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZU UF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8CistCSAgICBjbGllbnRf aGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VU VVBfQ09OTkVDVElPTik7CistCistCXJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9zZW5kX2Nv bW1hbmQoCistCSAgICB0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorLQkgICAgIlBST1QgJWMiIENS TEYsCistCSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorLQkgICAg dGFyZ2V0LAorLQkgICAgKGNoYXIpIHRhcmdldC0+YXR0ci0+ZGF0YV9wcm90KTsKKy0KKy0JaWYo cmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorLQl7CistCSAgICBnb3RvIHJlc3VsdF9mYXVsdDsK Ky0JfQorLQorLQlicmVhazsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsK KysgICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NF VFVQX0NPTk5FQ1RJT047CisgCistICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1BS T1Q6CistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkg ICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8Cist CSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFO RExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CistCistCWlmKCghZXJyb3IpICYmCistCSAgIHJl c3BvbnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJT05f UkVQTFkpCistCXsKKy0JICAgIHRhcmdldC0+ZGF0YV9wcm90ID0gdGFyZ2V0LT5hdHRyLT5kYXRh X3Byb3Q7CistCistCSAgICByZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfcHJvdCh0 YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorLQkJCQkJCSAgIHRhcmdldC0+ZGF0YV9wcm90KTsKKy0J ICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JICAgIHsKKy0JCWdvdG8gcmVzdWx0 X2ZhdWx0OworLQkgICAgfQorLQl9CistCWVsc2UKKy0JeworLQkgICAgdGFyZ2V0LT5zdGF0ZSA9 IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9DT05ORUNUSU9OOworLQorLQkgICAgZ290 byBub3RpZnlfZmF1bHQ7CistCX0KKysgICAgICAgICAgICBnb3RvIG5vdGlmeV9mYXVsdDsKKysg ICAgICAgIH0KKyAKKyAgICAgc2tpcF9wcm90OgorLQl0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CistCWdvdG8gcmVkbzsKKysgICAgICAg IHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElP TjsKKysgICAgICAgIGdvdG8gcmVkbzsKKyAKKyAgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9U QVJHRVRfU0VUVVBfQ09OTkVDVElPTjoKKy0JLyogZm9yIG9wZXJhdGlvbnMgd2hpY2ggZG9uJ3Qg dXNlIGEgZGF0YSBjb25uZWN0aW9uLAorLQkgKiBza2lwIFBBU1YvUE9SVCAqLworLQlpZihjbGll bnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9DSE1PRCkKKy0JeworLQkgICAgdGFy Z2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9DSE1PRDsKKy0JfQor KyAgICAgICAgLyogZm9yIG9wZXJhdGlvbnMgd2hpY2ggZG9uJ3QgdXNlIGEgZGF0YSBjb25uZWN0 aW9uLAorKyAgICAgICAgICogc2tpcCBQQVNWL1BPUlQgKi8KKysgICAgICAgIGlmKGNsaWVudF9o YW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX0NITU9EKQorKyAgICAgICAgeworKyAgICAg ICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ0hN T0Q7CisrICAgICAgICB9CisgICAgIGVsc2UgaWYoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVT X0ZUUF9DTElFTlRfQ0hHUlApCisgICAgIHsKKyAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9C VVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ0hHUlA7CitAQCAtMjIxOCwzOSArMjIxOCwzOSBA QCByZWRvOgorICAgICB7CisgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElF TlRfVEFSR0VUX1NFVFVQX1NZTUxJTks7CisgICAgIH0KKy0JZWxzZSBpZihjbGllbnRfaGFuZGxl LT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9ERUxFVEUpCistCXsKKy0JICAgIHRhcmdldC0+c3Rh dGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfREVMRVRFOworLQl9CistCWVsc2Ug aWYoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfTUtESVIpCistCXsKKy0J ICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfTUtESVI7 CistCX0KKy0JZWxzZSBpZihjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9S TURJUikKKy0JeworLQkgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdF VF9TRVRVUF9STURJUjsKKy0JfQorLQllbHNlIGlmKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JV U19GVFBfQ0xJRU5UX0NXRCkKKy0JeworLQkgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBf Q0xJRU5UX1RBUkdFVF9TRVRVUF9DV0Q7CistCX0KKy0JZWxzZSBpZihjbGllbnRfaGFuZGxlLT5v cCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9NT1ZFKQorLQl7CistCSAgICB0YXJnZXQtPnN0YXRlID0g R0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1JORlI7CistCX0KKy0JZWxzZSBpZihjbGll bnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9NRFRNKQorLQl7CistCSAgICB0YXJn ZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX01EVE07CistCX0KKy0J ZWxzZSBpZihjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9NTFNUKQorLQl7 CistCSAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX01M U1Q7CistCX0KKy0JZWxzZSBpZihjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVO VF9TVEFUKQorLQl7CistCSAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFS R0VUX1NFVFVQX1NUQVQ7CistCX0KKy0gICAgICAgIGVsc2UgaWYoY2xpZW50X2hhbmRsZS0+b3Ag PT0gR0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNGRVIgJiYgCisrICAgICAgICBlbHNlIGlmKGNsaWVu dF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX0RFTEVURSkKKysgICAgICAgIHsKKysg ICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQ X0RFTEVURTsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYoY2xpZW50X2hhbmRsZS0+b3Ag PT0gR0xPQlVTX0ZUUF9DTElFTlRfTUtESVIpCisrICAgICAgICB7CisrICAgICAgICAgICAgdGFy Z2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9NS0RJUjsKKysgICAg ICAgIH0KKysgICAgICAgIGVsc2UgaWYoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9D TElFTlRfUk1ESVIpCisrICAgICAgICB7CisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdM T0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9STURJUjsKKysgICAgICAgIH0KKysgICAgICAg IGVsc2UgaWYoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfQ1dEKQorKyAg ICAgICAgeworKyAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9U QVJHRVRfU0VUVVBfQ1dEOworKyAgICAgICAgfQorKyAgICAgICAgZWxzZSBpZihjbGllbnRfaGFu ZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9NT1ZFKQorKyAgICAgICAgeworKyAgICAgICAg ICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfUk5GUjsK KysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVT X0ZUUF9DTElFTlRfTURUTSkKKysgICAgICAgIHsKKysgICAgICAgICAgICB0YXJnZXQtPnN0YXRl ID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX01EVE07CisrICAgICAgICB9CisrICAg ICAgICBlbHNlIGlmKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX01MU1Qp CisrICAgICAgICB7CisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJ RU5UX1RBUkdFVF9TRVRVUF9NTFNUOworKyAgICAgICAgfQorKyAgICAgICAgZWxzZSBpZihjbGll bnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9TVEFUKQorKyAgICAgICAgeworKyAg ICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBf U1RBVDsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYoY2xpZW50X2hhbmRsZS0+b3AgPT0g R0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNGRVIgJiYKKyAgICAgICAgICAgICB0YXJnZXQgPT0gY2xp ZW50X2hhbmRsZS0+c291cmNlICYmIGNsaWVudF9oYW5kbGUtPmRlc3QgJiYKKyAgICAgICAgICAg ICBjbGllbnRfaGFuZGxlLT5kZXN0LT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRf U0VUVVBfUEFTVikKKyAgICAgICAgIHsKK0BAIC0yMjYzLDcgKzIyNjMsNyBAQCByZWRvOgorICAg ICAgICAgfQorIAorICAgICAgICAgLyogZGVmYXVsdGluZyB0byBhIFBBU1Ygb24gdGhlIHNvdXJj ZSAqLworLSAgICAgICAgZWxzZSBpZihjbGllbnRfaGFuZGxlLT5zb3VyY2VfcGFzdiAmJiAKKysg ICAgICAgIGVsc2UgaWYoY2xpZW50X2hhbmRsZS0+c291cmNlX3Bhc3YgJiYKKyAgICAgICAgICAg ICB0YXJnZXQtPm1vZGUgIT0gR0xPQlVTX0ZUUF9DT05UUk9MX01PREVfRVhURU5ERURfQkxPQ0sp CisgICAgICAgICB7CisgICAgICAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xP QlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTikKK0BAIC0yMjcyLDE2 ICsyMjcyLDE2IEBAIHJlZG86CisgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPT0gY2xpZW50 X2hhbmRsZS0+ZGVzdCAmJiAhY2xpZW50X2hhbmRsZS0+bnVtX3Bhc3ZfYWRkcmVzc2VzKQorICAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBjbGllbnRfaGFu ZGxlLT5zb3VyY2U7CistICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAg ICAgIGVycm9yID0gZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRfYWN0aXZhdGUoCisgICAgICAg ICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZSwgdGFyZ2V0LCAmcmVnaXN0ZXJlZCk7Cist ICAgICAgICAgICAgICAgICAgICBpZihyZWdpc3RlcmVkID09IEdMT0JVU19GQUxTRSAmJiAKKysg ICAgICAgICAgICAgICAgICAgIGlmKHJlZ2lzdGVyZWQgPT0gR0xPQlVTX0ZBTFNFICYmCisgICAg ICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgIT0gR0xPQlVTX0ZUUF9D TElFTlRfSEFORExFX0FCT1JUICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hh bmRsZS0+c3RhdGUgIT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQpCisgICAgICAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBjb25uZWN0aW9u X2Vycm9yOworICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgCisr CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICBlbHNlCitAQCAtMjI4OSwzMSArMjI4OSwzMSBAQCByZWRvOgorICAgICAgICAg ICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRV UF9QT1JUOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAg IAorKworICAgICAgICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBf Q0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTikKKyAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRf U0VUVVBfUEFTVjsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CistCS8qIFByZWZlciBQQVNW IGRhdGEgY29ubmVjdGlvbnMgZm9yIHN0cmVhbSBjbGllbnQvc2VydmVyIG9wZXJhdGlvbnMgKi8K KysgICAgICAgIC8qIFByZWZlciBQQVNWIGRhdGEgY29ubmVjdGlvbnMgZm9yIHN0cmVhbSBjbGll bnQvc2VydmVyIG9wZXJhdGlvbnMgKi8KKyAgICAgICAgIC8qIHVubGVzcyBhc2tlZCBub3QgdG8g dmlhIEdMT0JVU19GVFBfQ0xJRU5UX05PX1NFUlZFUl9QQVNWIGVudiB2YXIgKi8KKy0JZWxzZSBp ZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkJR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RF U1RfU0VUVVBfQ09OTkVDVElPTiB8fAorLQkJKGNsaWVudF9oYW5kbGUtPm9wICE9IEdMT0JVU19G VFBfQ0xJRU5UX1RSQU5TRkVSICYmCistCQkgdGFyZ2V0LT5tb2RlID09IEdMT0JVU19GVFBfQ09O VFJPTF9NT0RFX1NUUkVBTSAmJiAKKysgICAgICAgIGVsc2UgaWYoY2xpZW50X2hhbmRsZS0+c3Rh dGUgPT0KKysgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VU VVBfQ09OTkVDVElPTiB8fAorKyAgICAgICAgICAgICAgICAoY2xpZW50X2hhbmRsZS0+b3AgIT0g R0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNGRVIgJiYKKysgICAgICAgICAgICAgICAgIHRhcmdldC0+ bW9kZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfTU9ERV9TVFJFQU0gJiYKKyAgICAgICAgICAgICAg ICAgICFnZXRlbnYoIkdMT0JVU19GVFBfQ0xJRU5UX05PX1NFUlZFUl9QQVNWIikpKQorLQl7Cist CSAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1BBU1Y7 CistCX0KKy0JLyogSW4gZXh0ZW5kZWQgYmxvY2sgbW9kZSwgd2UgTVVTVCBoYXZlIFJFVFIvTElT VCBpbiBQT1JUIG1vZGUgKi8KKy0JZWxzZQorLQl7CistCSAgICBnbG9idXNfYXNzZXJ0KGNsaWVu dF9oYW5kbGUtPnN0YXRlID09CistCQkJICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNF X1NFVFVQX0NPTk5FQ1RJT04pOworLQkgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJ RU5UX1RBUkdFVF9TRVRVUF9QT1JUOworLQl9CistCistCWdvdG8gcmVkbzsKKysgICAgICAgIHsK KysgICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NF VFVQX1BBU1Y7CisrICAgICAgICB9CisrICAgICAgICAvKiBJbiBleHRlbmRlZCBibG9jayBtb2Rl LCB3ZSBNVVNUIGhhdmUgUkVUUi9MSVNUIGluIFBPUlQgbW9kZSAqLworKyAgICAgICAgZWxzZQor KyAgICAgICAgeworKyAgICAgICAgICAgIGdsb2J1c19hc3NlcnQoY2xpZW50X2hhbmRsZS0+c3Rh dGUgPT0KKysgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRM RV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTik7CisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9 IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9QT1JUOworKyAgICAgICAgfQorKworKyAg ICAgICAgZ290byByZWRvOworIAorICAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9P UFRTX1BBU1ZfREVMQVlFRDoKKyAgICAgICAgIGdsb2J1c19hc3NlcnQoCitAQCAtMjMyNywxMyAr MjMyNywxMyBAQCByZWRvOgorICAgICAgICAgeworICAgICAgICAgICAgIHRhcmdldC0+ZGVsYXll ZF9wYXN2ID0gdGFyZ2V0LT5hdHRyLT5kZWxheWVkX3Bhc3Y7CisgICAgICAgICAgICAgdGFyZ2V0 LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9QQVNWOworLSAgICAgICAg ICAgIAorKworICAgICAgICAgICAgIGdvdG8gcmVkbzsKKyAgICAgICAgIH0KKyAgICAgICAgIC8q IFhYWCBuZWVkIHRvIGlnbm9yZSBlcnJvciAqLworLSAgICAgICAgCisrCisgICAgICAgICB0YXJn ZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047Cist ICAgICAgICBnb3RvIG5vdGlmeV9mYXVsdDsgICAgICAgCisrICAgICAgICBnb3RvIG5vdGlmeV9m YXVsdDsKKyAKKyAgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfUEFTVjoK KyAgICAgICAgIGlmKGdyaWRmdHAyX2dldHB1dCA9PSBHTE9CVVNfVFJVRSkKK0BAIC0yMzQxLDE3 ICsyMzQxLDE3IEBAIHJlZG86CisgICAgICAgICAgICAgZ290byBza2lwX3Bhc3Y7CisgICAgICAg ICB9CisgCistCWlmKGdsb2J1c19pX2Z0cF9jbGllbnRfY2FuX3JldXNlX2RhdGFfY29ubihjbGll bnRfaGFuZGxlKSkKKy0JeworLQkgICAgZ290byBza2lwX3Bhc3Y7CistCX0KKy0JCistICAgICAg ICBpZih0YXJnZXQtPmRlbGF5ZWRfcGFzdiAhPSB0YXJnZXQtPmF0dHItPmRlbGF5ZWRfcGFzdiAm JiAKKy0gICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfZ2V0KHRhcmdldC0+ ZmVhdHVyZXMsIAorKyAgICAgICAgaWYoZ2xvYnVzX2lfZnRwX2NsaWVudF9jYW5fcmV1c2VfZGF0 YV9jb25uKGNsaWVudF9oYW5kbGUpKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gc2tp cF9wYXN2OworKyAgICAgICAgfQorKworKyAgICAgICAgaWYodGFyZ2V0LT5kZWxheWVkX3Bhc3Yg IT0gdGFyZ2V0LT5hdHRyLT5kZWxheWVkX3Bhc3YgJiYKKysgICAgICAgICAgICBnbG9idXNfaV9m dHBfY2xpZW50X2ZlYXR1cmVfZ2V0KHRhcmdldC0+ZmVhdHVyZXMsCisgICAgICAgICAgICAgR0xP QlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9ERUxBWUVEX1BBU1YpID09IEdMT0JVU19GVFBfQ0xJRU5U X1RSVUUpCisgICAgICAgICB7CistCSAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElF TlRfVEFSR0VUX09QVFNfUEFTVl9ERUxBWUVEOworLSAgICAgICAgICAgIAorKyAgICAgICAgICAg IHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfT1BUU19QQVNWX0RFTEFZ RUQ7CisrCisgICAgICAgICAgICAgdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01E X01BU0tfVFJBTlNGRVJfUEFSQU1FVEVSUzsKKyAgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xp ZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKyAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRs ZSwKK0BAIC0yMzU5LDcgKzIzNTksNyBAQCByZWRvOgorICAgICAgICAgICAgICAgICB0YXJnZXQt Pm1hc2ssCisgICAgICAgICAgICAgICAgICJPUFRTIFBBU1YgQWxsb3dEZWxheWVkPSVjOyIgQ1JM RiwKKyAgICAgICAgICAgICAgICAgdGFyZ2V0LT5hdHRyLT5kZWxheWVkX3Bhc3YgPyAnMScgOiAn MCcpOworLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBpZihjbGllbnRfaGFuZGxl LT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKyAgICAgICAgICAg ICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JF U1RBUlQgfHwKKyAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVT X0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCitAQCAtMjM3MSw3ICsyMzcxLDcgQEAgcmVkbzoK KyAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9D T05ORUNUSU9OIHx8CisgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09Cisg ICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5F Q1RJT04pOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIHJlc3VsdCA9CisgICAgICAg ICAgICAgICAgIGdsb2J1c19mdHBfY29udHJvbF9zZW5kX2NvbW1hbmQoCisgICAgICAgICAgICAg ICAgIHRhcmdldC0+Y29udHJvbF9oYW5kbGUsCitAQCAtMjM3OSw2NyArMjM3OSw2NyBAQCByZWRv OgorICAgICAgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNr LAorICAgICAgICAgICAgICAgICB0YXJnZXQsCisgICAgICAgICAgICAgICAgIHRhcmdldC0+YXR0 ci0+ZGVsYXllZF9wYXN2ID8gJzEnIDogJzAnKTsKKy0gICAgICAgICAgICAKKysKKyAgICAgICAg ICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKyAgICAgICAgICAgICB9CistICAgICAgICAg ICAgCisrCisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CisgCistCWlmKChjbGllbnRf aGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9QVVQgfHwKKy0JICAgY2xpZW50X2hhbmRs ZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNGRVIpICYmCistCSAgICh0YXJnZXQtPmF0 dHItPmxheW91dC5tb2RlICE9IEdMT0JVU19GVFBfQ09OVFJPTF9TVFJJUElOR19OT05FIHx8Cist CSAgICB0YXJnZXQtPmF0dHItPmZvcmNlX3N0cmlwZWQpKQorLQl7CistCSAgICBpZih0YXJnZXQt PmF0dHItPmFsbG93X2lwdjYpCistCSAgICB7CistCSAgICAgICAgdG1wc3RyID0gIlNQQVMgMiI7 CistCSAgICB9CistCSAgICBlbHNlCistCSAgICB7CistCSAgICAgICAgdG1wc3RyID0gIlNQQVMi OworLQkgICAgfQorLQl9CistCWVsc2UgaWYodGFyZ2V0LT5hdHRyLT5hbGxvd19pcHY2KQorLQl7 CisrICAgICAgICBpZigoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfUFVU IHx8CisrICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9U UkFOU0ZFUikgJiYKKysgICAgICAgICAgICh0YXJnZXQtPmF0dHItPmxheW91dC5tb2RlICE9IEdM T0JVU19GVFBfQ09OVFJPTF9TVFJJUElOR19OT05FIHx8CisrICAgICAgICAgICAgdGFyZ2V0LT5h dHRyLT5mb3JjZV9zdHJpcGVkKSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBpZih0YXJnZXQt PmF0dHItPmFsbG93X2lwdjYpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICB0bXBz dHIgPSAiU1BBUyAyIjsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZQorKyAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgdG1wc3RyID0gIlNQQVMiOworKyAgICAgICAgICAg IH0KKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYodGFyZ2V0LT5hdHRyLT5hbGxvd19pcHY2 KQorKyAgICAgICAgeworICAgICAgICAgICAgIC8qIGlmIGlwdjYgaXMgZW5hYmxlZCwgZW5zdXJl IHdlIGNvbm5lY3RlZCB0byBhbiBpcHY2IGFkZHJlc3NlZAorLSAgICAgICAgICAgICAqIHNvdXJj ZSBiZWZvcmUgdXNpbmcgRVBTVi4gIG90aGVyd2lzZSwgaWYgZGVzdCBjb25uZWN0ZWQgb24gYSAK Ky0gICAgICAgICAgICAgKiB2NiBpbnRlcmZhY2Ugd2Ugd29uJ3QgaGF2ZSBhIGNvbXBhdGlibGUg ZGF0YSBhZGRyZXNzIHRvIHBhc3MgCisrICAgICAgICAgICAgICogc291cmNlIGJlZm9yZSB1c2lu ZyBFUFNWLiAgb3RoZXJ3aXNlLCBpZiBkZXN0IGNvbm5lY3RlZCBvbiBhCisrICAgICAgICAgICAg ICogdjYgaW50ZXJmYWNlIHdlIHdvbid0IGhhdmUgYSBjb21wYXRpYmxlIGRhdGEgYWRkcmVzcyB0 byBwYXNzCisgICAgICAgICAgICAgICogdG8gdGhlIHNvdXJjZSB2aWEgZXBydC9wb3J0LgorLSAg ICAgICAgICAgICAqLyAKKy0JICAgIGlmKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBf Q0xJRU5UX1RSQU5TRkVSICYmIAorLQkgICAgICAgIGNsaWVudF9oYW5kbGUtPnNvdXJjZSAmJiB0 YXJnZXQgPT0gY2xpZW50X2hhbmRsZS0+ZGVzdCkKKysgICAgICAgICAgICAgKi8KKysgICAgICAg ICAgICBpZihjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9UUkFOU0ZFUiAm JgorKyAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zb3VyY2UgJiYgdGFyZ2V0ID09IGNs aWVudF9oYW5kbGUtPmRlc3QpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBnbG9i dXNfZnRwX2NvbnRyb2xfaG9zdF9wb3J0X3QgKiAgICBob3N0X3BvcnQ7CistICAgICAgICAgICAg ICAgIAorLSAgICAgICAgICAgICAgICAvKiBpZiBzb3VyY2UgaGFzbid0IGNvbm5lY3RlZCB5ZXQs IGFjdGl2YXRlIGl0ICovIAorLSAgICAgICAgICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zb3Vy Y2UtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TVEFSVCB8fCAKKysKKysgICAg ICAgICAgICAgICAgLyogaWYgc291cmNlIGhhc24ndCBjb25uZWN0ZWQgeWV0LCBhY3RpdmF0ZSBp dCAqLworKyAgICAgICAgICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zb3VyY2UtPnN0YXRlID09 IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TVEFSVCB8fAorICAgICAgICAgICAgICAgICAgICAg Y2xpZW50X2hhbmRsZS0+c291cmNlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRf Q0xPU0VEKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICB0YXJnZXQg PSBjbGllbnRfaGFuZGxlLT5zb3VyY2U7CistICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAg ICAgICAgICAgICAgICAgIGVycm9yID0gZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRfYWN0aXZh dGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZSwgdGFyZ2V0LCAmcmVn aXN0ZXJlZCk7CistICAgICAgICAgICAgICAgICAgICBpZihyZWdpc3RlcmVkID09IEdMT0JVU19G QUxTRSAmJiAKKysgICAgICAgICAgICAgICAgICAgIGlmKHJlZ2lzdGVyZWQgPT0gR0xPQlVTX0ZB TFNFICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgIT0g R0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUICYmCisgICAgICAgICAgICAgICAgICAgICAg ICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgIT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RB UlQpCisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ290 byBjb25uZWN0aW9uX2Vycm9yOworICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAg ICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg ICAgfQorIAorICAgICAgICAgICAgICAgICBob3N0X3BvcnQgPSBnbG9idXNfbGliY19jYWxsb2Mo CisgICAgICAgICAgICAgICAgICAgICAxLCBzaXplb2YoZ2xvYnVzX2Z0cF9jb250cm9sX2hvc3Rf cG9ydF90KSk7CistICAgIAorKworICAgICAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNfZnRw X2NvbnRyb2xfY2xpZW50X2dldF9jb25uZWN0aW9uX2luZm9fZXgoCisgICAgICAgICAgICAgICAg ICAgICBjbGllbnRfaGFuZGxlLT5zb3VyY2UtPmNvbnRyb2xfaGFuZGxlLAorLSAgICAgICAgICAg ICAgICAgICAgR0xPQlVTX05VTEwsIAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX05VTEws CisgICAgICAgICAgICAgICAgICAgICBob3N0X3BvcnQpOworLSAgICAgICAgICAgICAgICAvKiB2 NG1hcHBlZCBhZGRyZXNzZXMgY2FuIHJldHVybiBhbiBlcnJvciwgYnV0IHdlIHdpbGwgCisrICAg ICAgICAgICAgICAgIC8qIHY0bWFwcGVkIGFkZHJlc3NlcyBjYW4gcmV0dXJuIGFuIGVycm9yLCBi dXQgd2Ugd2lsbAorICAgICAgICAgICAgICAgICAgICBjb3JyZWN0bHkgdXNlIFBBU1YgaW4gdGhh dCBjYXNlICovCisgICAgICAgICAgICAgICAgIGlmKHJlc3VsdCA9PSBHTE9CVVNfU1VDQ0VTUyAm JiBob3N0X3BvcnQtPmhvc3RsZW4gPT0gMTYpCisgICAgICAgICAgICAgICAgIHsKK0BAIC0yNDU1 LDc5ICsyNDU1LDc5IEBAIHJlZG86CisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICB0 bXBzdHIgPSAiRVBTViI7CisgICAgICAgICAgICAgfQorLQl9CistCWVsc2UKKy0JeworLQkgICAg dG1wc3RyID0gIlBBU1YiOworLQl9CistCistCXRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NM SUVOVF9UQVJHRVRfUEFTVjsKKy0KKy0JdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRf Q01EX01BU0tfREFUQV9FU1RBQkxJU0hNRU5UOworLQlnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdp bl9ub3RpZnlfY29tbWFuZCgKKy0JICAgIGNsaWVudF9oYW5kbGUsCistCSAgICB0YXJnZXQtPnVy bF9zdHJpbmcsCistCSAgICB0YXJnZXQtPm1hc2ssCistCSAgICAiJXMiIENSTEYsCistCSAgICB0 bXBzdHIpOworLQorLQlpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVO VF9IQU5ETEVfQUJPUlQgfHwKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19G VFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKy0JeworLQkgICAgYnJlYWs7Cist CX0KKy0JZ2xvYnVzX2Fzc2VydCgKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCSAg ICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04gfHwKKy0J ICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCSAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKy0KKy0JcmVzdWx0ID0KKy0JICAgIGdsb2J1c19m dHBfY29udHJvbF9zZW5kX2NvbW1hbmQoCistCQl0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorLQkJ IiVzIiBDUkxGLAorLQkJZ2xvYnVzX2lfZnRwX2NsaWVudF9yZXNwb25zZV9jYWxsYmFjaywKKy0J CXRhcmdldCwKKy0JCXRtcHN0cik7CistCistCWlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykK Ky0JeworLQkgICAgZ290byByZXN1bHRfZmF1bHQ7CistCX0KKy0KKy0JYnJlYWs7CisrICAgICAg ICB9CisrICAgICAgICBlbHNlCisrICAgICAgICB7CisrICAgICAgICAgICAgdG1wc3RyID0gIlBB U1YiOworKyAgICAgICAgfQorKworKyAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBf Q0xJRU5UX1RBUkdFVF9QQVNWOworKworKyAgICAgICAgdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZU UF9DTElFTlRfQ01EX01BU0tfREFUQV9FU1RBQkxJU0hNRU5UOworKyAgICAgICAgZ2xvYnVzX2lf ZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCisrICAgICAgICAgICAgY2xpZW50X2hh bmRsZSwKKysgICAgICAgICAgICB0YXJnZXQtPnVybF9zdHJpbmcsCisrICAgICAgICAgICAgdGFy Z2V0LT5tYXNrLAorKyAgICAgICAgICAgICIlcyIgQ1JMRiwKKysgICAgICAgICAgICB0bXBzdHIp OworKworKyAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX0FCT1JUIHx8CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0g R0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwKKysgICAgICAgICAgICBjbGllbnRf aGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKysgICAg ICAgIHsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0KKysgICAgICAgIGdsb2J1c19h c3NlcnQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAg ICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04gfHwKKysg ICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JVU19G VFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworKworKyAgICAgICAgcmVz dWx0ID0KKysgICAgICAgICAgICBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorKyAg ICAgICAgICAgICAgICB0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorKyAgICAgICAgICAgICAgICAi JXMiIENSTEYsCisrICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2Vf Y2FsbGJhY2ssCisrICAgICAgICAgICAgICAgIHRhcmdldCwKKysgICAgICAgICAgICAgICAgdG1w c3RyKTsKKysKKysgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAg IHsKKysgICAgICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKysgICAgICAgIH0KKysKKysgICAg ICAgIGJyZWFrOworIAorICAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9Q T1JUOgorLQlpZihnbG9idXNfaV9mdHBfY2xpZW50X2Nhbl9yZXVzZV9kYXRhX2Nvbm4oY2xpZW50 X2hhbmRsZSkpCistCXsKKy0JICAgIGdvdG8gc2tpcF9wb3J0OworLQl9CistCQorLQkvKiB0dXJu IG9mZiBkZWxheWVkIHBhc3Ygbm93IHRoYXQgd2UncmUgZ29pbmcgdG8gdXNlIFBPUlQgKi8KKy0J dGFyZ2V0LT5kZWxheWVkX3Bhc3YgPSBHTE9CVVNfRkFMU0U7CistCQorLQlpZihjbGllbnRfaGFu ZGxlLT5vcCAhPSBHTE9CVVNfRlRQX0NMSUVOVF9UUkFOU0ZFUikKKy0JeworLQkgICAgaWYoY2xp ZW50X2hhbmRsZS0+cGFzdl9hZGRyZXNzKQorLQkgICAgeworLQkgICAgICAgIGdsb2J1c19mcmVl KGNsaWVudF9oYW5kbGUtPnBhc3ZfYWRkcmVzcyk7CistCSAgICB9CistCSAgICBjbGllbnRfaGFu ZGxlLT5wYXN2X2FkZHJlc3MgPQorLQkgICAgICAgIGdsb2J1c19saWJjX21hbGxvYyhzaXplb2Yo Z2xvYnVzX2Z0cF9jb250cm9sX2hvc3RfcG9ydF90KSk7CistCSAgICBjbGllbnRfaGFuZGxlLT5u dW1fcGFzdl9hZGRyZXNzZXMgPSAxOworLSAgICAgICAgICAgIAorLQkgICAgbWVtc2V0KGNsaWVu dF9oYW5kbGUtPnBhc3ZfYWRkcmVzcywgMCwKKy0JICAgICAgICBzaXplb2YoZ2xvYnVzX2Z0cF9j b250cm9sX2hvc3RfcG9ydF90KSk7CistCistCSAgICByZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRy b2xfbG9jYWxfcGFzdih0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorLQkJCQkJICAgICAgICAgICBj bGllbnRfaGFuZGxlLT5wYXN2X2FkZHJlc3MpOworKyAgICAgICAgaWYoZ2xvYnVzX2lfZnRwX2Ns aWVudF9jYW5fcmV1c2VfZGF0YV9jb25uKGNsaWVudF9oYW5kbGUpKQorKyAgICAgICAgeworKyAg ICAgICAgICAgIGdvdG8gc2tpcF9wb3J0OworKyAgICAgICAgfQorKworKyAgICAgICAgLyogdHVy biBvZmYgZGVsYXllZCBwYXN2IG5vdyB0aGF0IHdlJ3JlIGdvaW5nIHRvIHVzZSBQT1JUICovCisr ICAgICAgICB0YXJnZXQtPmRlbGF5ZWRfcGFzdiA9IEdMT0JVU19GQUxTRTsKKysKKysgICAgICAg IGlmKGNsaWVudF9oYW5kbGUtPm9wICE9IEdMT0JVU19GVFBfQ0xJRU5UX1RSQU5TRkVSKQorKyAg ICAgICAgeworKyAgICAgICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPnBhc3ZfYWRkcmVzcykKKysg ICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGdsb2J1c19mcmVlKGNsaWVudF9oYW5kbGUt PnBhc3ZfYWRkcmVzcyk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGNsaWVudF9oYW5k bGUtPnBhc3ZfYWRkcmVzcyA9CisrICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX21hbGxvYyhz aXplb2YoZ2xvYnVzX2Z0cF9jb250cm9sX2hvc3RfcG9ydF90KSk7CisrICAgICAgICAgICAgY2xp ZW50X2hhbmRsZS0+bnVtX3Bhc3ZfYWRkcmVzc2VzID0gMTsKKysKKysgICAgICAgICAgICBtZW1z ZXQoY2xpZW50X2hhbmRsZS0+cGFzdl9hZGRyZXNzLCAwLAorKyAgICAgICAgICAgICAgICBzaXpl b2YoZ2xvYnVzX2Z0cF9jb250cm9sX2hvc3RfcG9ydF90KSk7CisrCisrICAgICAgICAgICAgcmVz dWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX2xvY2FsX3Bhc3YodGFyZ2V0LT5jb250cm9sX2hhbmRs ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj bGllbnRfaGFuZGxlLT5wYXN2X2FkZHJlc3MpOworICAgICAgICAgICAgIGlmKHJlc3VsdCA9PSBH TE9CVVNfU1VDQ0VTUyAmJiAhdGFyZ2V0LT5hdHRyLT5hbGxvd19pcHY2ICYmCisgICAgICAgICAg ICAgICAgIGNsaWVudF9oYW5kbGUtPnBhc3ZfYWRkcmVzc1swXS5ob3N0bGVuID09IDE2KQorICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgY3M7 CisgICAgICAgICAgICAgICAgIGdsb2J1c19zb2NrYWRkcl90ICAgICAgIGFkZHI7CistICAgICAg ICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAvKiBjb250cm9sIGNoYW5uZWwgd2FzIG1h ZGUgd2l0aCBpcHY2LCBidXQgd2UgbXVzdCBoYXZlCisgICAgICAgICAgICAgICAgICAqIGRpc2Fi bGVkIGlwdjYgc2luY2UgYW5kIG5lZWQgYW4gaXB2NCBhZGRyZXNzIG5vdy4KKyAgICAgICAgICAg ICAgICAgICoganVzdCB1c2UgbG9jYWxob3N0CitAQCAtMjUzNSw3ICsyNTM1LDcgQEAgcmVkbzoK KyAgICAgICAgICAgICAgICAgR2xvYnVzTGliY1NvY2thZGRyU2V0RmFtaWx5KGFkZHIsIEFGX0lO RVQpOworICAgICAgICAgICAgICAgICBHbG9idXNMaWJjU29ja2FkZHJTZXRQb3J0KGFkZHIsCisg ICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5wYXN2X2FkZHJlc3NbMF0ucG9ydCk7 CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNf bGliY19hZGRyX3RvX2NvbnRhY3Rfc3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgJmFkZHIs CisgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTElCQ19BRERSX0xPQ0FMIHwgR0xPQlVTX0xJ QkNfQUREUl9OVU1FUklDIHwKK0BAIC0yNTUwLDc1ICsyNTUwLDc1IEBAIHJlZG86CisgICAgICAg ICAgICAgICAgICAgICAgICAgJmNsaWVudF9oYW5kbGUtPnBhc3ZfYWRkcmVzc1swXS5wb3J0KTsK KyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAKKy0JICAg IGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JICAgIHsKKy0JCWdvdG8gcmVzdWx0X2Zh dWx0OworLQkgICAgfQorLQl9CisrCisrICAgICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19T VUNDRVNTKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZ290byByZXN1bHRfZmF1 bHQ7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorIAorICAgICAgICAgaWYoZ3JpZGZ0cDJf Z2V0cHV0ID09IEdMT0JVU19UUlVFKQorICAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gc2tp cF9wb3J0OworICAgICAgICAgfQorIAorLQl0bXBzdHIgPSBnbG9idXNfbGliY19tYWxsb2MoNTYg KiBjbGllbnRfaGFuZGxlLT5udW1fcGFzdl9hZGRyZXNzZXMKKy0JCQkJICAgKyA3IC8qU1BPUnxQ T1JUfEVQUlRcclxuXDAqLyk7CistCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogJyB8 Mnw8NDU+fDw1PnwnID09IDU2ICovCistCWlmKHRtcHN0ciA9PSBHTE9CVVNfTlVMTCkKKy0Jewor LQkgICAgZXJyb3IgPSBHTE9CVVNfRVJST1JfTk9fSU5GTzsKKy0KKy0JICAgIGdvdG8gbm90aWZ5 X2ZhdWx0OworLQl9CistCWVsc2UKKy0JeworLQkgICAgcmMgPSBvbGRyYyA9IDA7CistCSAgICBp ZihjbGllbnRfaGFuZGxlLT5udW1fcGFzdl9hZGRyZXNzZXMgPT0gMSkKKy0JICAgIHsKKy0JICAg ICAgICBpZih0YXJnZXQtPmF0dHItPmFsbG93X2lwdjYgJiYKKy0JICAgICAgICAgICAgY2xpZW50 X2hhbmRsZS0+cGFzdl9hZGRyZXNzWzBdLmhvc3RsZW4gPT0gMTYpCistCSAgICAgICAgeworLQkg ICAgICAgICAgICByYyArPSBzcHJpbnRmKHRtcHN0ciwgIkVQUlQiKTsKKy0JICAgICAgICB9Cist CSAgICAgICAgZWxzZQorLQkgICAgICAgIHsKKy0JCSAgICByYyArPSBzcHJpbnRmKHRtcHN0ciwg IlBPUlQiKTsKKy0JCX0KKy0JICAgIH0KKy0JICAgIGVsc2UKKy0JICAgIHsKKy0JCXJjICs9IHNw cmludGYodG1wc3RyLCAiU1BPUiIpOworLQkgICAgfQorLQorLQkgICAgaWYocmMgPT0gb2xkcmMp CistCSAgICB7CistCQllcnJvciA9IEdMT0JVU19FUlJPUl9OT19JTkZPOworLQorLQkgICAgICAg IGdvdG8gbm90aWZ5X2ZhdWx0OworLQkgICAgfQorLQorLQkgICAgZm9yKGkgPSAwOyBpIDwgY2xp ZW50X2hhbmRsZS0+bnVtX3Bhc3ZfYWRkcmVzc2VzOyBpKyspCistCSAgICB7CistCSAgICAgICAg b2xkcmMgPSByYzsKKy0JICAgICAgICBpZih0YXJnZXQtPmF0dHItPmFsbG93X2lwdjYgJiYKKy0J ICAgICAgICAgICAgKGNsaWVudF9oYW5kbGUtPm51bV9wYXN2X2FkZHJlc3NlcyA+IDEgfHwKKy0J ICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+cGFzdl9hZGRyZXNzWzBdLmhvc3RsZW4gPT0gMTYp KQorLQkgICAgICAgIHsKKy0JICAgICAgICAgICAgY2hhciAgICAgICAgICAgICAgICBidWZbNTBd OworLQkgICAgICAgICAgICAKKy0JICAgICAgICAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hvc3Rf cG9ydF9nZXRfaG9zdCgKKysgICAgICAgIHRtcHN0ciA9IGdsb2J1c19saWJjX21hbGxvYyg1NiAq IGNsaWVudF9oYW5kbGUtPm51bV9wYXN2X2FkZHJlc3NlcworKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKyA3IC8qU1BPUnxQT1JUfEVQUlRcclxuXDAqLyk7CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICcgfDJ8PDQ1Pnw8NT58JyA9PSA1NiAqLwor KyAgICAgICAgaWYodG1wc3RyID09IEdMT0JVU19OVUxMKQorKyAgICAgICAgeworKyAgICAgICAg ICAgIGVycm9yID0gR0xPQlVTX0VSUk9SX05PX0lORk87CisrCisrICAgICAgICAgICAgZ290byBu b3RpZnlfZmF1bHQ7CisrICAgICAgICB9CisrICAgICAgICBlbHNlCisrICAgICAgICB7CisrICAg ICAgICAgICAgcmMgPSBvbGRyYyA9IDA7CisrICAgICAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+ bnVtX3Bhc3ZfYWRkcmVzc2VzID09IDEpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ICBpZih0YXJnZXQtPmF0dHItPmFsbG93X2lwdjYgJiYKKysgICAgICAgICAgICAgICAgICAgIGNs aWVudF9oYW5kbGUtPnBhc3ZfYWRkcmVzc1swXS5ob3N0bGVuID09IDE2KQorKyAgICAgICAgICAg ICAgICB7CisrICAgICAgICAgICAgICAgICAgICByYyArPSBzcHJpbnRmKHRtcHN0ciwgIkVQUlQi KTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBlbHNlCisrICAgICAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIHJjICs9IHNwcmludGYodG1wc3RyLCAiUE9S VCIpOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVs c2UKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIHJjICs9IHNwcmludGYodG1wc3Ry LCAiU1BPUiIpOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBpZihyYyA9PSBvbGRy YykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGVycm9yID0gR0xPQlVTX0VSUk9S X05PX0lORk87CisrCisrICAgICAgICAgICAgICAgIGdvdG8gbm90aWZ5X2ZhdWx0OworKyAgICAg ICAgICAgIH0KKysKKysgICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCBjbGllbnRfaGFuZGxlLT5u dW1fcGFzdl9hZGRyZXNzZXM7IGkrKykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAg IG9sZHJjID0gcmM7CisrICAgICAgICAgICAgICAgIGlmKHRhcmdldC0+YXR0ci0+YWxsb3dfaXB2 NiAmJgorKyAgICAgICAgICAgICAgICAgICAgKGNsaWVudF9oYW5kbGUtPm51bV9wYXN2X2FkZHJl c3NlcyA+IDEgfHwKKysgICAgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnBhc3ZfYWRk cmVzc1swXS5ob3N0bGVuID09IDE2KSkKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAg ICAgICAgICAgY2hhciAgICAgICAgICAgICAgICBidWZbNTBdOworKworKyAgICAgICAgICAgICAg ICAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hvc3RfcG9ydF9nZXRfaG9zdCgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAmY2xpZW50X2hhbmRsZS0+cGFzdl9hZGRyZXNzW2ldLCBidWYpOworLSAg ICAKKy0JICAgICAgICAgICAgcmMgKz0gc3ByaW50ZigmdG1wc3RyW29sZHJjXSwKKysKKysgICAg ICAgICAgICAgICAgICAgIHJjICs9IHNwcmludGYoJnRtcHN0cltvbGRyY10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIiB8JWR8JXN8JWR8IiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5wYXN2X2FkZHJlc3NbaV0uaG9zdGxlbiA9 PSAxNgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMiA6IDEsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChpbnQpIGNsaWVudF9oYW5kbGUtPnBhc3ZfYWRkcmVzc1tpXS5wb3J0KTsK Ky0JICAgICAgICB9CistCSAgICAgICAgZWxzZQorLQkgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgfQorKyAgICAgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgIHJjICs9IHNwcmludGYoJnRtcHN0cltvbGRyY10sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIiAlZCwlZCwlZCwlZCwlZCwlZCIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+cGFzdl9hZGRyZXNzW2ldLmhvc3Rb MF0sCitAQCAtMjYzNSw0OTAgKzI2MzUsNDkwIEBAIHJlZG86CisgCisgICAgICAgICAgICAgICAg ICAgICBnb3RvIG5vdGlmeV9mYXVsdDsKKyAgICAgICAgICAgICAgICAgfQorLQkgICAgfQorLQor LQkgICAgdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfREFUQV9FU1RB QkxJU0hNRU5UOworLQkgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1h bmQoCistCQljbGllbnRfaGFuZGxlLAorLQkJdGFyZ2V0LT51cmxfc3RyaW5nLAorLQkJdGFyZ2V0 LT5tYXNrLAorLQkJIiVzIiBDUkxGLAorLQkJdG1wc3RyKTsKKy0KKy0JICAgIGlmKGNsaWVudF9o YW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCB8fAorLQkgICAg ICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RB UlQgfHwKKy0JICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5U X0hBTkRMRV9GQUlMVVJFKQorLQkgICAgeworLQkJZ2xvYnVzX2xpYmNfZnJlZSh0bXBzdHIpOwor LQkJYnJlYWs7CistCSAgICB9CistCSAgICBnbG9idXNfYXNzZXJ0KCBjbGllbnRfaGFuZGxlLT5z dGF0ZSA9PQorLQkJICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBf Q09OTkVDVElPTiB8fAorLQkJICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCQkgICAg ICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CistCist CSAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1BPUlQ7CistCist CSAgICByZXN1bHQgPQorLQkJZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKy0JCQl0 YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorLQkJCSIlcyIgQ1JMRiwKKy0JCQlnbG9idXNfaV9mdHBf Y2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorLQkJCXRhcmdldCwKKy0JCQl0bXBzdHIpOworLQor LQkgICAgZ2xvYnVzX2xpYmNfZnJlZSh0bXBzdHIpOworLQl9CistCistCWlmKHJlc3VsdCAhPSBH TE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byByZXN1bHRfZmF1bHQ7CistCX0KKy0KKy0J YnJlYWs7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIHRhcmdldC0+bWFzayA9IEdM T0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX0RBVEFfRVNUQUJMSVNITUVOVDsKKysgICAgICAgICAg ICBnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKysgICAgICAgICAg ICAgICAgY2xpZW50X2hhbmRsZSwKKysgICAgICAgICAgICAgICAgdGFyZ2V0LT51cmxfc3RyaW5n LAorKyAgICAgICAgICAgICAgICB0YXJnZXQtPm1hc2ssCisrICAgICAgICAgICAgICAgICIlcyIg Q1JMRiwKKysgICAgICAgICAgICAgICAgdG1wc3RyKTsKKysKKysgICAgICAgICAgICBpZihjbGll bnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKysg ICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9I QU5ETEVfUkVTVEFSVCB8fAorKyAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09 IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorKyAgICAgICAgICAgIHsKKysgICAg ICAgICAgICAgICAgZ2xvYnVzX2xpYmNfZnJlZSh0bXBzdHIpOworKyAgICAgICAgICAgICAgICBi cmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZ2xvYnVzX2Fzc2VydCggY2xpZW50 X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJ RU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorKyAgICAgICAgICAgICAgICAg ICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICAgICAgICAgICAgIEdM T0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworKworKyAgICAg ICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfUE9SVDsKKysK KysgICAgICAgICAgICByZXN1bHQgPQorKyAgICAgICAgICAgICAgICBnbG9idXNfZnRwX2NvbnRy b2xfc2VuZF9jb21tYW5kKAorKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+Y29udHJv bF9oYW5kbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiBDUkxGLAorKyAgICAgICAg ICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCisr ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LAorKyAgICAgICAgICAgICAgICAgICAgICAg IHRtcHN0cik7CisrCisrICAgICAgICAgICAgZ2xvYnVzX2xpYmNfZnJlZSh0bXBzdHIpOworKyAg ICAgICAgfQorKworKyAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICAg ICAgeworKyAgICAgICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworKyAgICAgICAgfQorKworKyAg ICAgICAgYnJlYWs7CisgCisgICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1BBU1Y6 CistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAg R0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OIHx8CistCSAg ICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CistCistCWlmKCghZXJyb3IpICYmCistCSAgIHJlc3Bv bnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJT05fUkVQ TFkpCistCXsKKy0JICAgIGlmKHRhcmdldC0+ZGVsYXllZF9wYXN2KQorLQkgICAgeworLQkgICAg ICAgIGdvdG8gc2tpcF9wYXN2OwkgICAgCistCSAgICB9CistCSAgICAKKy0JICAgIGdsb2J1c19s X2Z0cF9jbGllbnRfcGFyc2VfcGFzdigKKy0JICAgICAgICBoYW5kbGUsCistCSAgICAgICAgcmVz cG9uc2UsIAorLQkgICAgICAgICZjbGllbnRfaGFuZGxlLT5wYXN2X2FkZHJlc3MsIAorLQkgICAg ICAgICZjbGllbnRfaGFuZGxlLT5udW1fcGFzdl9hZGRyZXNzZXMpOworLSAgICAgICAgICAgIAor LQkgICAgaWYoY2xpZW50X2hhbmRsZS0+b3AgIT0gR0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNGRVIp CistCSAgICB7CistCSAgICAgICAgCistCQlpZihjbGllbnRfaGFuZGxlLT5udW1fcGFzdl9hZGRy ZXNzZXMgPT0gMSkKKy0JCXsKKy0JCSAgICByZXN1bHQgPQorLQkJCWdsb2J1c19mdHBfY29udHJv bF9sb2NhbF9wb3J0KAorLQkJCSAgICBoYW5kbGUsCistCQkJICAgIGNsaWVudF9oYW5kbGUtPnBh c3ZfYWRkcmVzcyk7CistCQl9CistCQllbHNlCistCQl7CistCQkgICAgcmVzdWx0ID0KKy0JCQln bG9idXNfZnRwX2NvbnRyb2xfbG9jYWxfc3BvcigKKy0JCQkgICAgaGFuZGxlLAorLQkJCSAgICBj bGllbnRfaGFuZGxlLT5wYXN2X2FkZHJlc3MsCistCQkJICAgIGNsaWVudF9oYW5kbGUtPm51bV9w YXN2X2FkZHJlc3Nlcyk7CistCQl9CistCQlpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCist CQl7CistCQkgICAgZ290byByZXN1bHRfZmF1bHQ7CistCQl9CistCSAgICB9CistCistCSAgICAv KiBTdG9yZSB0aGUgY3VycmVudCBkYXRhIGNvbm5lY3Rpb24gaW4gdGhlIGNhY2hlIGZvcgorLQkg ICAgICogdGhlIHRhcmdldCBhc3NvY2lhdGVkIHdpdGggdGhpcyB0cmFuc2ZlciwgaWYgdGhlIHNl cnZlcgorLQkgICAgICogd2lsbCBzdXBwb3J0IGl0LgorLQkgICAgICovCistCSAgICBpZihnbG9i dXNfbF9mdHBfY2xpZW50X2Nhbl9jYWNoZV9kYXRhX2Nvbm5lY3Rpb24odGFyZ2V0KSkKKy0JICAg IHsKKysgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+ c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NF VFVQX0NPTk5FQ1RJT04gfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQor KyAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJ T04pOworKworKyAgICAgICAgaWYoKCFlcnJvcikgJiYKKysgICAgICAgICAgIHJlc3BvbnNlLT5y ZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJT05fUkVQTFkpCisr ICAgICAgICB7CisrICAgICAgICAgICAgaWYodGFyZ2V0LT5kZWxheWVkX3Bhc3YpCisrICAgICAg ICAgICAgeworKyAgICAgICAgICAgICAgICBnb3RvIHNraXBfcGFzdjsKKysgICAgICAgICAgICB9 CisrCisrICAgICAgICAgICAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9wYXN2KAorKyAgICAg ICAgICAgICAgICBoYW5kbGUsCisrICAgICAgICAgICAgICAgIHJlc3BvbnNlLAorKyAgICAgICAg ICAgICAgICAmY2xpZW50X2hhbmRsZS0+cGFzdl9hZGRyZXNzLAorKyAgICAgICAgICAgICAgICAm Y2xpZW50X2hhbmRsZS0+bnVtX3Bhc3ZfYWRkcmVzc2VzKTsKKysKKysgICAgICAgICAgICBpZihj bGllbnRfaGFuZGxlLT5vcCAhPSBHTE9CVVNfRlRQX0NMSUVOVF9UUkFOU0ZFUikKKysgICAgICAg ICAgICB7CisrCisrICAgICAgICAgICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPm51bV9wYXN2X2Fk ZHJlc3NlcyA9PSAxKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBy ZXN1bHQgPQorKyAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19mdHBfY29udHJvbF9sb2Nh bF9wb3J0KAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGUsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnBhc3ZfYWRkcmVzcyk7CisrICAgICAg ICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICB7Cisr ICAgICAgICAgICAgICAgICAgICByZXN1bHQgPQorKyAgICAgICAgICAgICAgICAgICAgICAgIGds b2J1c19mdHBfY29udHJvbF9sb2NhbF9zcG9yKAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBoYW5kbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnBh c3ZfYWRkcmVzcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+ bnVtX3Bhc3ZfYWRkcmVzc2VzKTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAg ICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICAgICAgICAgIHsKKysgICAg ICAgICAgICAgICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworKyAgICAgICAgICAgICAgICB9Cisr ICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIC8qIFN0b3JlIHRoZSBjdXJyZW50IGRhdGEg Y29ubmVjdGlvbiBpbiB0aGUgY2FjaGUgZm9yCisrICAgICAgICAgICAgICogdGhlIHRhcmdldCBh c3NvY2lhdGVkIHdpdGggdGhpcyB0cmFuc2ZlciwgaWYgdGhlIHNlcnZlcgorKyAgICAgICAgICAg ICAqIHdpbGwgc3VwcG9ydCBpdC4KKysgICAgICAgICAgICAgKi8KKysgICAgICAgICAgICBpZihn bG9idXNfbF9mdHBfY2xpZW50X2Nhbl9jYWNoZV9kYXRhX2Nvbm5lY3Rpb24odGFyZ2V0KSkKKysg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPm9wID09IEdM T0JVU19GVFBfQ0xJRU5UX0xJU1QgfHwKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRs ZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfTkxTVCB8fAorICAgICAgICAgICAgICAgICAgICBj bGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9NTFNEIHx8CisgICAgICAgICAg ICAgICAgICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX01MU1IpCisg ICAgICAgICAgICAgICAgIHsKKy0gICAgICAgIAkgICAgdGFyZ2V0LT5jYWNoZWRfZGF0YV9jb25u Lm9wZXJhdGlvbiA9IEdMT0JVU19GVFBfQ0xJRU5UX0dFVDsKKysgICAgICAgICAgICAgICAgICAg IHRhcmdldC0+Y2FjaGVkX2RhdGFfY29ubi5vcGVyYXRpb24gPSBHTE9CVVNfRlRQX0NMSUVOVF9H RVQ7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgZWxzZQorKyAgICAgICAg ICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPmNhY2hlZF9kYXRhX2Nvbm4u b3BlcmF0aW9uID0gY2xpZW50X2hhbmRsZS0+b3A7CisrICAgICAgICAgICAgICAgIH0KKysKKysg ICAgICAgICAgICAgICAgdGFyZ2V0LT5jYWNoZWRfZGF0YV9jb25uLnNvdXJjZSA9IGNsaWVudF9o YW5kbGUtPnNvdXJjZTsKKysgICAgICAgICAgICAgICAgdGFyZ2V0LT5jYWNoZWRfZGF0YV9jb25u LmRlc3QgPSBjbGllbnRfaGFuZGxlLT5kZXN0OworKyAgICAgICAgICAgIH0KKysgICAgICAgICAg ICAvKiBJbiBhIDNyZCBwYXJ0eSB0cmFuc2Zlciwgd2UgbmVlZCB0byBjbGVhciB0aGUgcGVlcidz CisrICAgICAgICAgICAgICogZGF0YSBjb25uZWN0aW9uIGNhY2hlIGlmIHdlJ3ZlIGNhbGxlZCBw YXNzaXZlIG9uIHRoZQorKyAgICAgICAgICAgICAqIGRlc3RpbmF0aW9uIHNlcnZlci4KKysgICAg ICAgICAgICAgKi8KKysgICAgICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNf RlRQX0NMSUVOVF9UUkFOU0ZFUikKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIG1l bXNldCgmY2xpZW50X2hhbmRsZS0+c291cmNlLT5jYWNoZWRfZGF0YV9jb25uLAorKyAgICAgICAg ICAgICAgICAgICAgICAgJ1wwJywKKysgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihnbG9i dXNfaV9mdHBfY2xpZW50X2RhdGFfdGFyZ2V0X3QpKTsKKysgICAgICAgICAgICB9CisrCisrICAg ICAgICBza2lwX3Bhc3Y6CisrICAgICAgICAgICAgaWYoKGNsaWVudF9oYW5kbGUtPm9wID09IEdM T0JVU19GVFBfQ0xJRU5UX1BVVCB8fAorKyAgICAgICAgICAgICAgICAoY2xpZW50X2hhbmRsZS0+ b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNGRVIgJiYKKysgICAgICAgICAgICAgICAgY2xp ZW50X2hhbmRsZS0+ZGVzdCA9PSB0YXJnZXQpKSAmJgorKyAgICAgICAgICAgICAgICB0YXJnZXQt PmF0dHItPmFsbG9jYXRlZF9zaXplID4gMCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAg ICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQUxMTzsK KysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZSBpZihjbGllbnRfaGFuZGxlLT5yZXN0 YXJ0X21hcmtlci50eXBlICE9CisrICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfUkVT VEFSVF9OT05FKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgaWYodGFyZ2V0LT5t b2RlID09IEdMT0JVU19GVFBfQ09OVFJPTF9NT0RFX1NUUkVBTSkKKysgICAgICAgICAgICAgICAg eworKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5U X1RBUkdFVF9TRVRVUF9SRVNUX1NUUkVBTTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIHRh cmdldC0+Y2FjaGVkX2RhdGFfY29ubi5vcGVyYXRpb24gPSBjbGllbnRfaGFuZGxlLT5vcDsKKysg ICAgICAgICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJH RVRfU0VUVVBfUkVTVF9FQjsKKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAg ICAgICAKKy0JCXRhcmdldC0+Y2FjaGVkX2RhdGFfY29ubi5zb3VyY2UgPSBjbGllbnRfaGFuZGxl LT5zb3VyY2U7CistCQl0YXJnZXQtPmNhY2hlZF9kYXRhX2Nvbm4uZGVzdCA9IGNsaWVudF9oYW5k bGUtPmRlc3Q7CistCSAgICB9CistCSAgICAvKiBJbiBhIDNyZCBwYXJ0eSB0cmFuc2Zlciwgd2Ug bmVlZCB0byBjbGVhciB0aGUgcGVlcidzCistCSAgICAgKiBkYXRhIGNvbm5lY3Rpb24gY2FjaGUg aWYgd2UndmUgY2FsbGVkIHBhc3NpdmUgb24gdGhlCistCSAgICAgKiBkZXN0aW5hdGlvbiBzZXJ2 ZXIuCistCSAgICAgKi8KKy0JICAgIGlmKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBf Q0xJRU5UX1RSQU5TRkVSKQorLQkgICAgeworLQkJbWVtc2V0KCZjbGllbnRfaGFuZGxlLT5zb3Vy Y2UtPmNhY2hlZF9kYXRhX2Nvbm4sCistCQkgICAgICAgJ1wwJywKKy0JCSAgICAgICBzaXplb2Yo Z2xvYnVzX2lfZnRwX2NsaWVudF9kYXRhX3RhcmdldF90KSk7CistCSAgICB9CistCistCXNraXBf cGFzdjoKKy0gICAgICAgICAgICBpZigoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9D TElFTlRfUFVUIHx8CistICAgICAgICAgICAgICAgIChjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9C VVNfRlRQX0NMSUVOVF9UUkFOU0ZFUiAmJiAKKy0gICAgICAgICAgICAgICAgY2xpZW50X2hhbmRs ZS0+ZGVzdCA9PSB0YXJnZXQpKSAmJiAKKy0gICAgICAgICAgICAgICAgdGFyZ2V0LT5hdHRyLT5h bGxvY2F0ZWRfc2l6ZSA+IDApCisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UKKyAg ICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQ X0NMSUVOVF9UQVJHRVRfU0VUVVBfQUxMTzsKKysgICAgICAgICAgICAgICAgdGFyZ2V0LT5zdGF0 ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9PUEVSQVRJT047CisgICAgICAgICAg ICAgfQorLQkgICAgZWxzZSBpZihjbGllbnRfaGFuZGxlLT5yZXN0YXJ0X21hcmtlci50eXBlICE9 CistCSAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9SRVNUQVJUX05PTkUpCistCSAgICB7CistCQlp Zih0YXJnZXQtPm1vZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX01PREVfU1RSRUFNKQorLQkJewor LQkJICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfUkVT VF9TVFJFQU07CistCQl9CistCQllbHNlCistCQl7CistCQkgICAgdGFyZ2V0LT5zdGF0ZSA9IEdM T0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9SRVNUX0VCOworLQkJfQorLQkgICAgfQorLQkg ICAgZWxzZQorLQkgICAgeworLQkJdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RB UkdFVF9TRVRVUF9PUEVSQVRJT047CistCSAgICB9CistCistICAgICAgICAgICAgLyogaWYgdGhp cyB3YXMgYSBzb3VyY2UgcGFzdiwgY29udGludWUgc2V0dGluZyB1cCB0aGUgZGVzdCAqLyAKKysK KysgICAgICAgICAgICAvKiBpZiB0aGlzIHdhcyBhIHNvdXJjZSBwYXN2LCBjb250aW51ZSBzZXR0 aW5nIHVwIHRoZSBkZXN0ICovCisgICAgICAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+b3AgPT0g R0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNGRVIgJiYKKyAgICAgICAgICAgICAgICAgdGFyZ2V0ID09 IGNsaWVudF9oYW5kbGUtPnNvdXJjZSAmJiAhdGFyZ2V0LT5kZWxheWVkX3Bhc3YpCisgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICB0YXJnZXQgPSBjbGllbnRfaGFuZGxlLT5kZXN0Owor LSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgZXJyb3IgPSBnbG9idXNfaV9m dHBfY2xpZW50X3RhcmdldF9hY3RpdmF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9o YW5kbGUsIHRhcmdldCwgJnJlZ2lzdGVyZWQpOworLSAgICAgICAgICAgICAgICBpZihyZWdpc3Rl cmVkID09IEdMT0JVU19GQUxTRSAmJiAKKysgICAgICAgICAgICAgICAgaWYocmVnaXN0ZXJlZCA9 PSBHTE9CVVNfRkFMU0UgJiYKKyAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0 YXRlICE9IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCAmJgorICAgICAgICAgICAgICAg ICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgIT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JF U1RBUlQpCisgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gY29u bmVjdGlvbl9lcnJvcjsKKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAKKysK KyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgfQorLQl9CisrICAgICAgICB9 CisgICAgICAgICBlbHNlIGlmKCFlcnJvcikKKy0JeworKyAgICAgICAgeworICAgICAgICAgICAg IC8qIHRyeSB3aXRob3V0IGlwdjYgKi8KKy0JICAgIGlmKHRhcmdldC0+YXR0ci0+YWxsb3dfaXB2 NikKKy0JICAgIHsKKy0JICAgICAgICB0YXJnZXQtPmF0dHItPmFsbG93X2lwdjYgPSBHTE9CVVNf RkFMU0U7CistCSAgICAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2lwdjZfYWxsb3coaGFuZGxlLCBH TE9CVVNfRkFMU0UpOworLQkgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVO VF9UQVJHRVRfU0VUVVBfUEFTVjsKKy0JICAgIH0KKysgICAgICAgICAgICBpZih0YXJnZXQtPmF0 dHItPmFsbG93X2lwdjYpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICB0YXJnZXQt PmF0dHItPmFsbG93X2lwdjYgPSBHTE9CVVNfRkFMU0U7CisrICAgICAgICAgICAgICAgIGdsb2J1 c19mdHBfY29udHJvbF9pcHY2X2FsbG93KGhhbmRsZSwgR0xPQlVTX0ZBTFNFKTsKKysgICAgICAg ICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9Q QVNWOworKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAvKiBUcnkgZG9pbmcgYSBQT1JUIGZv ciBhIGNsaWVudC9zZXJ2ZXIgdHJhbnNmZXIgKi8KKy0JICAgIGVsc2UgaWYoY2xpZW50X2hhbmRs ZS0+b3AgIT0gR0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNGRVIgJiYKKy0JICAgICAgIHRhcmdldC0+ bW9kZSAhPSBHTE9CVVNfRlRQX0NPTlRST0xfTU9ERV9FWFRFTkRFRF9CTE9DSyApCistCSAgICB7 CistCSAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRV UF9QT1JUOworLQkgICAgfQorLQkgICAgLyogVHJ5IHRoZSBQQVNWIG9uIHRoZSBvdGhlciBzZXJ2 ZXIgZm9yIGEgM3JkIHBhcnR5IHRyYW5zZmVyICovCistCSAgICBlbHNlIGlmKGNsaWVudF9oYW5k bGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX1RSQU5TRkVSICYmCistCSAgICAgICB0YXJnZXQt Pm1vZGUgIT0gR0xPQlVTX0ZUUF9DT05UUk9MX01PREVfRVhURU5ERURfQkxPQ0sgJiYgCistCSAg ICAgICAhY2xpZW50X2hhbmRsZS0+dHJpZWRfYm90aF9wYXN2KQorLQkgICAgeyAgIAorKyAgICAg ICAgICAgIGVsc2UgaWYoY2xpZW50X2hhbmRsZS0+b3AgIT0gR0xPQlVTX0ZUUF9DTElFTlRfVFJB TlNGRVIgJiYKKysgICAgICAgICAgICAgICB0YXJnZXQtPm1vZGUgIT0gR0xPQlVTX0ZUUF9DT05U Uk9MX01PREVfRVhURU5ERURfQkxPQ0sgKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9QT1JUOwor KyAgICAgICAgICAgIH0KKysgICAgICAgICAgICAvKiBUcnkgdGhlIFBBU1Ygb24gdGhlIG90aGVy IHNlcnZlciBmb3IgYSAzcmQgcGFydHkgdHJhbnNmZXIgKi8KKysgICAgICAgICAgICBlbHNlIGlm KGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX1RSQU5TRkVSICYmCisrICAg ICAgICAgICAgICAgdGFyZ2V0LT5tb2RlICE9IEdMT0JVU19GVFBfQ09OVFJPTF9NT0RFX0VYVEVO REVEX0JMT0NLICYmCisrICAgICAgICAgICAgICAgIWNsaWVudF9oYW5kbGUtPnRyaWVkX2JvdGhf cGFzdikKKysgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnRy aWVkX2JvdGhfcGFzdiA9IEdMT0JVU19UUlVFOworICAgICAgICAgICAgICAgICB0YXJnZXQtPnN0 YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CisgICAgICAg ICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnNvdXJjZV9wYXN2ID0gIWNsaWVudF9oYW5kbGUtPnNv dXJjZV9wYXN2OworLSAgICAgICAgICAgICAgICB0YXJnZXQgPSAodGFyZ2V0ID09IGNsaWVudF9o YW5kbGUtPnNvdXJjZSkgPyAKKysgICAgICAgICAgICAgICAgdGFyZ2V0ID0gKHRhcmdldCA9PSBj bGllbnRfaGFuZGxlLT5zb3VyY2UpID8KKyAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5k bGUtPmRlc3QgOiBjbGllbnRfaGFuZGxlLT5zb3VyY2U7CisgCisgICAgICAgICAgICAgICAgIGVy cm9yID0gZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRfYWN0aXZhdGUoCisgICAgICAgICAgICAg ICAgICAgICBjbGllbnRfaGFuZGxlLCB0YXJnZXQsICZyZWdpc3RlcmVkKTsKKy0gICAgICAgICAg ICAgICAgaWYocmVnaXN0ZXJlZCA9PSBHTE9CVVNfRkFMU0UgJiYgCisrICAgICAgICAgICAgICAg IGlmKHJlZ2lzdGVyZWQgPT0gR0xPQlVTX0ZBTFNFICYmCisgICAgICAgICAgICAgICAgICAgICBj bGllbnRfaGFuZGxlLT5zdGF0ZSAhPSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgJiYK KyAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlICE9IEdMT0JVU19GVFBf Q0xJRU5UX0hBTkRMRV9SRVNUQVJUKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICBnb3RvIGNvbm5lY3Rpb25fZXJyb3I7CisgICAgICAgICAgICAgICAgIH0KKy0gICAg ICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIGJyZWFrOworLQkgICAgfSAgIAorLQkg ICAgZWxzZQorLQkgICAgeworLQkgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NM SUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElPTjsKKy0JICAgICAgICBnb3RvIG5vdGlmeV9mYXVs dDsKKy0JICAgIH0KKy0JfQorLQllbHNlCistCXsKKy0JICAgIHRhcmdldC0+c3RhdGUgPSBHTE9C VVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElPTjsKKy0JICAgIGdvdG8gbm90aWZ5 X2ZhdWx0OworLQl9CistCistCWdvdG8gcmVkbzsKKysgICAgICAgICAgICB9CisrICAgICAgICAg ICAgZWxzZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9 IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9DT05ORUNUSU9OOworKyAgICAgICAgICAg ICAgICBnb3RvIG5vdGlmeV9mYXVsdDsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAg ICAgICBlbHNlCisrICAgICAgICB7CisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JV U19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9DT05ORUNUSU9OOworKyAgICAgICAgICAgIGdvdG8g bm90aWZ5X2ZhdWx0OworKyAgICAgICAgfQorKworKyAgICAgICAgZ290byByZWRvOworIAorICAg ICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9QT1JUOgorLQlnbG9idXNfYXNzZXJ0KAor LQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hB TkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3Rh dGUgPT0KKy0JICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJ T04pOworLQorLQlpZigoIWVycm9yKSAmJgorLQkgICByZXNwb25zZS0+cmVzcG9uc2VfY2xhc3Mg PT0gR0xPQlVTX0ZUUF9QT1NJVElWRV9DT01QTEVUSU9OX1JFUExZKQorLQl7CistCSAgICBpZihn bG9idXNfbF9mdHBfY2xpZW50X2Nhbl9jYWNoZV9kYXRhX2Nvbm5lY3Rpb24odGFyZ2V0KSkKKy0J ICAgIHsKKysgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRs ZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNF X1NFVFVQX0NPTk5FQ1RJT04gfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PQorKyAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5F Q1RJT04pOworKworKyAgICAgICAgaWYoKCFlcnJvcikgJiYKKysgICAgICAgICAgIHJlc3BvbnNl LT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJT05fUkVQTFkp CisrICAgICAgICB7CisrICAgICAgICAgICAgaWYoZ2xvYnVzX2xfZnRwX2NsaWVudF9jYW5fY2Fj aGVfZGF0YV9jb25uZWN0aW9uKHRhcmdldCkpCisrICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICBpZihjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9MSVNUIHx8Cisg ICAgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5U X05MU1QgfHwKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVT X0ZUUF9DTElFTlRfTUxTRCB8fAorICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5v cCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9NTFNSKQorICAgICAgICAgICAgICAgICB7CistICAgICAg ICAJICAgIHRhcmdldC0+Y2FjaGVkX2RhdGFfY29ubi5vcGVyYXRpb24gPSBHTE9CVVNfRlRQX0NM SUVOVF9HRVQ7CisrICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPmNhY2hlZF9kYXRhX2Nvbm4u b3BlcmF0aW9uID0gR0xPQlVTX0ZUUF9DTElFTlRfR0VUOworICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICAgICAgdGFyZ2V0LT5jYWNoZWRfZGF0YV9jb25uLm9wZXJhdGlvbiA9IGNsaWVudF9oYW5kbGUt Pm9wOworICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICAgICAgIAorLQkJdGFy Z2V0LT5jYWNoZWRfZGF0YV9jb25uLnNvdXJjZSA9IGNsaWVudF9oYW5kbGUtPnNvdXJjZTsKKy0J CXRhcmdldC0+Y2FjaGVkX2RhdGFfY29ubi5kZXN0ID0gY2xpZW50X2hhbmRsZS0+ZGVzdDsKKy0J ICAgIH0KKyAKKy0Jc2tpcF9wb3J0OgorKyAgICAgICAgICAgICAgICB0YXJnZXQtPmNhY2hlZF9k YXRhX2Nvbm4uc291cmNlID0gY2xpZW50X2hhbmRsZS0+c291cmNlOworKyAgICAgICAgICAgICAg ICB0YXJnZXQtPmNhY2hlZF9kYXRhX2Nvbm4uZGVzdCA9IGNsaWVudF9oYW5kbGUtPmRlc3Q7Cisr ICAgICAgICAgICAgfQorKworKyAgICAgICAgc2tpcF9wb3J0OgorICAgICAgICAgICAgIGlmKChj bGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9QVVQgfHwKKy0gICAgICAgICAg ICAgICAgKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX1RSQU5TRkVSICYm IAorLSAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5kZXN0ID09IHRhcmdldCkpICYmIAor KyAgICAgICAgICAgICAgICAoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRf VFJBTlNGRVIgJiYKKysgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+ZGVzdCA9PSB0YXJn ZXQpKSAmJgorICAgICAgICAgICAgICAgICB0YXJnZXQtPmF0dHItPmFsbG9jYXRlZF9zaXplID4g MCkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9C VVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQUxMTzsKKyAgICAgICAgICAgICB9CistCSAgICBl bHNlIGlmKGNsaWVudF9oYW5kbGUtPnJlc3RhcnRfbWFya2VyLnR5cGUgIT0KKy0JICAgICAgIEdM T0JVU19GVFBfQ0xJRU5UX1JFU1RBUlRfTk9ORSkKKy0JICAgIHsKKy0JCWlmKHRhcmdldC0+bW9k ZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfTU9ERV9TVFJFQU0pCistCQl7CistCQkgICAgdGFyZ2V0 LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9SRVNUX1NUUkVBTTsKKy0J CX0KKy0JCWVsc2UKKy0JCXsKKy0JCSAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElF TlRfVEFSR0VUX1NFVFVQX1JFU1RfRUI7CistCQl9CistCSAgICB9CistCSAgICBlbHNlCistCSAg ICB7CistCQl0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX09Q RVJBVElPTjsKKy0JICAgIH0KKy0JfQorLQllbHNlIGlmKCFlcnJvciAmJiB0YXJnZXQtPmF0dHIt PmFsbG93X2lwdjYgJiYKKy0JICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJ RU5UX0dFVCkKKy0JeworLQkgICAgdGFyZ2V0LT5hdHRyLT5hbGxvd19pcHY2ID0gR0xPQlVTX0ZB TFNFOworLQkgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2lwdjZfYWxsb3coaGFuZGxlLCBHTE9CVVNf RkFMU0UpOworLQkgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9T RVRVUF9QT1JUOworLQl9CistCWVsc2UKKy0JeworLQkgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JV U19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9DT05ORUNUSU9OOworLQorLQkgICAgZ290byBub3Rp ZnlfZmF1bHQ7CistCX0KKy0JZ290byByZWRvOworKyAgICAgICAgICAgIGVsc2UgaWYoY2xpZW50 X2hhbmRsZS0+cmVzdGFydF9tYXJrZXIudHlwZSAhPQorKyAgICAgICAgICAgICAgIEdMT0JVU19G VFBfQ0xJRU5UX1JFU1RBUlRfTk9ORSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAg IGlmKHRhcmdldC0+bW9kZSA9PSBHTE9CVVNfRlRQX0NPTlRST0xfTU9ERV9TVFJFQU0pCisrICAg ICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9C VVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfUkVTVF9TVFJFQU07CisrICAgICAgICAgICAgICAg IH0KKysgICAgICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAg ICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQ X1JFU1RfRUI7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICAg ICAgZWxzZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9 IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9PUEVSQVRJT047CisrICAgICAgICAgICAg fQorKyAgICAgICAgfQorKyAgICAgICAgZWxzZSBpZighZXJyb3IgJiYgdGFyZ2V0LT5hdHRyLT5h bGxvd19pcHY2ICYmCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZU UF9DTElFTlRfR0VUKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHRhcmdldC0+YXR0ci0+YWxs b3dfaXB2NiA9IEdMT0JVU19GQUxTRTsKKysgICAgICAgICAgICBnbG9idXNfZnRwX2NvbnRyb2xf aXB2Nl9hbGxvdyhoYW5kbGUsIEdMT0JVU19GQUxTRSk7CisrICAgICAgICAgICAgdGFyZ2V0LT5z dGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9QT1JUOworKyAgICAgICAgfQor KyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBH TE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElPTjsKKysKKysgICAgICAgICAg ICBnb3RvIG5vdGlmeV9mYXVsdDsKKysgICAgICAgIH0KKysgICAgICAgIGdvdG8gcmVkbzsKKyAg ICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfUkVTVF9TVFJFQU06CistCS8q CistCSAqIFJFU1QgbXVzdCBiZSB0aGUgbGFzdCB0aGluZyBkb25lIG9uIHRoZSBjb250cm9sIGNv bm5lY3Rpb24KKy0JICogYmVmb3JlIHNlbmRpbmcgdGhlIFJFVFIsIFNUT1IsIEVSRVQsIG9yIEVT VE8gY29tbWFuZC4KKy0JICovCistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxl LT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9D T05ORUNUSU9OIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVT X0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CistCistCWlmKCFnbG9i dXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfZ2V0KCAKKy0JICAgIHRhcmdldC0+ZmVhdHVyZXMsIAor LQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9SRVNUX1NUUkVBTSkpCistCXsKKy0JICAg IHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElP TjsKKy0KKy0JICAgIGdvdG8gY29ubmVjdGlvbl9lcnJvcjsKKy0JfQorLQl0YXJnZXQtPnN0YXRl ID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1JFU1Q7CistCXRhcmdldC0+bWFzayA9IEdMT0JV U19GVFBfQ0xJRU5UX0NNRF9NQVNLX1RSQU5TRkVSX01PRElGSUVSUzsKKy0KKy0JZ2xvYnVzX2lf ZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCistCSAgICBjbGllbnRfaGFuZGxlLAor KyAgICAgICAgLyoKKysgICAgICAgICAqIFJFU1QgbXVzdCBiZSB0aGUgbGFzdCB0aGluZyBkb25l IG9uIHRoZSBjb250cm9sIGNvbm5lY3Rpb24KKysgICAgICAgICAqIGJlZm9yZSBzZW5kaW5nIHRo ZSBSRVRSLCBTVE9SLCBFUkVULCBvciBFU1RPIGNvbW1hbmQuCisrICAgICAgICAgKi8KKysgICAg ICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0K KysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5F Q1RJT04gfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAg ICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworKwor KyAgICAgICAgaWYoIWdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9nZXQoCisrICAgICAgICAg ICAgdGFyZ2V0LT5mZWF0dXJlcywKKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9GRUFU VVJFX1JFU1RfU1RSRUFNKSkKKysgICAgICAgIHsKKysgICAgICAgICAgICB0YXJnZXQtPnN0YXRl ID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CisrCisrICAgICAg ICAgICAgZ290byBjb25uZWN0aW9uX2Vycm9yOworKyAgICAgICAgfQorKyAgICAgICAgdGFyZ2V0 LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9SRVNUOworKyAgICAgICAgdGFyZ2V0 LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfVFJBTlNGRVJfTU9ESUZJRVJTOwor KworKyAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCisr ICAgICAgICAgICAgY2xpZW50X2hhbmRsZSwKKyAgICAgICAgICAgICB0YXJnZXQtPnVybF9zdHJp bmcsCistCSAgICB0YXJnZXQtPm1hc2ssCistCSAgICAiUkVTVCAlIiBHTE9CVVNfT0ZGX1RfRk9S TUFUIENSTEYsCistCSAgICB0YXJnZXQtPnR5cGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX1RZUEVf QVNDSUkKKy0JICAgICAgICA/IGNsaWVudF9oYW5kbGUtPnJlc3RhcnRfbWFya2VyLnN0cmVhbS5h c2NpaV9vZmZzZXQKKy0JICAgICAgICA6IGNsaWVudF9oYW5kbGUtPnJlc3RhcnRfbWFya2VyLnN0 cmVhbS5vZmZzZXQpOworLQorLQlpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQ X0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdM T0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5z dGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKy0JeworLQkgICAgYnJl YWs7CistCX0KKy0KKy0JZ2xvYnVzX2Fzc2VydCgKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRl ID09CistCSAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJ T04gfHwKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCSAgICBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKy0KKy0JcmVzdWx0ID0gZ2xvYnVz X2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKy0JICAgIGhhbmRsZSwKKy0JICAgICJSRVNUICUi IEdMT0JVU19PRkZfVF9GT1JNQVQgQ1JMRiwKKy0JICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVz cG9uc2VfY2FsbGJhY2ssCistCSAgICB1c2VyX2FyZywKKy0JICAgIHRhcmdldC0+dHlwZSA9PSBH TE9CVVNfRlRQX0NPTlRST0xfVFlQRV9BU0NJSQorLQkgICAgICAgID8gY2xpZW50X2hhbmRsZS0+ cmVzdGFydF9tYXJrZXIuc3RyZWFtLmFzY2lpX29mZnNldAorLQkgICAgICAgIDogY2xpZW50X2hh bmRsZS0+cmVzdGFydF9tYXJrZXIuc3RyZWFtLm9mZnNldCk7CistCWlmKHJlc3VsdCAhPSBHTE9C VVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byByZXN1bHRfZmF1bHQ7CistCX0KKy0JYnJlYWs7 CistCQorKyAgICAgICAgICAgIHRhcmdldC0+bWFzaywKKysgICAgICAgICAgICAiUkVTVCAlIiBH TE9CVVNfT0ZGX1RfRk9STUFUIENSTEYsCisrICAgICAgICAgICAgdGFyZ2V0LT50eXBlID09IEdM T0JVU19GVFBfQ09OVFJPTF9UWVBFX0FTQ0lJCisrICAgICAgICAgICAgICAgID8gY2xpZW50X2hh bmRsZS0+cmVzdGFydF9tYXJrZXIuc3RyZWFtLmFzY2lpX29mZnNldAorKyAgICAgICAgICAgICAg ICA6IGNsaWVudF9oYW5kbGUtPnJlc3RhcnRfbWFya2VyLnN0cmVhbS5vZmZzZXQpOworKworKyAg ICAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X0FCT1JUIHx8CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZU UF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5z dGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKysgICAgICAgIHsKKysg ICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0KKysKKysgICAgICAgIGdsb2J1c19hc3NlcnQo CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9C VVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04gfHwKKysgICAgICAg ICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJ RU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworKworKyAgICAgICAgcmVzdWx0ID0g Z2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKysgICAgICAgICAgICBoYW5kbGUsCisr ICAgICAgICAgICAgIlJFU1QgJSIgR0xPQlVTX09GRl9UX0ZPUk1BVCBDUkxGLAorKyAgICAgICAg ICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCisrICAgICAgICAgICAg dXNlcl9hcmcsCisrICAgICAgICAgICAgdGFyZ2V0LT50eXBlID09IEdMT0JVU19GVFBfQ09OVFJP TF9UWVBFX0FTQ0lJCisrICAgICAgICAgICAgICAgID8gY2xpZW50X2hhbmRsZS0+cmVzdGFydF9t YXJrZXIuc3RyZWFtLmFzY2lpX29mZnNldAorKyAgICAgICAgICAgICAgICA6IGNsaWVudF9oYW5k bGUtPnJlc3RhcnRfbWFya2VyLnN0cmVhbS5vZmZzZXQpOworKyAgICAgICAgaWYocmVzdWx0ICE9 IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gcmVzdWx0X2Zh dWx0OworKyAgICAgICAgfQorKyAgICAgICAgYnJlYWs7CisrCisgICAgIGNhc2UgR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX1NFVFVQX0FMTE86CistCS8qCistCSAqIEFMTE8gaXMgc2VudCBiZWZv cmUgYSBTVE9SLCBSRVNUIG9yIFNUT1IgaXMgbmV4dC4KKy0JICovCistCWdsb2J1c19hc3NlcnQo CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRf SEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CistCistCXRhcmdldC0+c3RhdGUgPSBHTE9C VVNfRlRQX0NMSUVOVF9UQVJHRVRfQUxMTzsKKy0JdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9D TElFTlRfQ01EX01BU0tfVFJBTlNGRVJfTU9ESUZJRVJTOworLQorLQlnbG9idXNfaV9mdHBfY2xp ZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKy0JICAgIGNsaWVudF9oYW5kbGUsCisrICAgICAg ICAvKgorKyAgICAgICAgICogQUxMTyBpcyBzZW50IGJlZm9yZSBhIFNUT1IsIFJFU1Qgb3IgU1RP UiBpcyBuZXh0LgorKyAgICAgICAgICovCisrICAgICAgICBnbG9idXNfYXNzZXJ0KAorKyAgICAg ICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9D TElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CisrCisrICAgICAgICB0YXJnZXQt PnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0FMTE87CisrICAgICAgICB0YXJnZXQt Pm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19UUkFOU0ZFUl9NT0RJRklFUlM7Cisr CisrICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKysg ICAgICAgICAgICBjbGllbnRfaGFuZGxlLAorICAgICAgICAgICAgIHRhcmdldC0+dXJsX3N0cmlu ZywKKy0JICAgIHRhcmdldC0+bWFzaywKKy0JICAgICJBTExPICUiIEdMT0JVU19PRkZfVF9GT1JN QVQgQ1JMRiwKKy0JICAgIHRhcmdldC0+YXR0ci0+YWxsb2NhdGVkX3NpemUpOworLQorLQlpZihj bGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwK Ky0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9S RVNUQVJUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVO VF9IQU5ETEVfRkFJTFVSRSkKKy0JeworLQkgICAgYnJlYWs7CistCX0KKy0KKy0JZ2xvYnVzX2Fz c2VydCgKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCSAgICBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKy0KKy0JcmVzdWx0ID0gZ2xvYnVz X2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKy0JICAgIGhhbmRsZSwKKy0JICAgICJBTExPICUi IEdMT0JVU19PRkZfVF9GT1JNQVQgQ1JMRiwKKy0JICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVz cG9uc2VfY2FsbGJhY2ssCistCSAgICB1c2VyX2FyZywKKy0JICAgIHRhcmdldC0+YXR0ci0+YWxs b2NhdGVkX3NpemUpOworLQlpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsKKy0JICAg IGdvdG8gcmVzdWx0X2ZhdWx0OworLQl9CistCWJyZWFrOworKyAgICAgICAgICAgIHRhcmdldC0+ bWFzaywKKysgICAgICAgICAgICAiQUxMTyAlIiBHTE9CVVNfT0ZGX1RfRk9STUFUIENSTEYsCisr ICAgICAgICAgICAgdGFyZ2V0LT5hdHRyLT5hbGxvY2F0ZWRfc2l6ZSk7CisrCisrICAgICAgICBp ZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQg fHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVO VF9IQU5ETEVfUkVTVEFSVCB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09 IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorKyAgICAgICAgeworKyAgICAgICAg ICAgIGJyZWFrOworKyAgICAgICAgfQorKworKyAgICAgICAgZ2xvYnVzX2Fzc2VydCgKKysgICAg ICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JVU19GVFBf Q0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworKworKyAgICAgICAgcmVzdWx0 ID0gZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKysgICAgICAgICAgICBoYW5kbGUs CisrICAgICAgICAgICAgIkFMTE8gJSIgR0xPQlVTX09GRl9UX0ZPUk1BVCBDUkxGLAorKyAgICAg ICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCisrICAgICAgICAg ICAgdXNlcl9hcmcsCisrICAgICAgICAgICAgdGFyZ2V0LT5hdHRyLT5hbGxvY2F0ZWRfc2l6ZSk7 CisrICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICB7CisrICAg ICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisrICAgICAgICB9CisrICAgICAgICBicmVhazsK KyAKKyAgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfUkVTVF9FQjoKKy0J LyoKKy0JICogUkVTVCBtdXN0IGJlIHRoZSBsYXN0IHRoaW5nIGRvbmUgb24gdGhlIGNvbnRyb2wg Y29ubmVjdGlvbgorLQkgKiBiZWZvcmUgc2VuZGluZyB0aGUgUkVUUiwgU1RPUiwgRVJFVCwgb3Ig RVNUTyBjb21tYW5kLgorLQkgKi8KKy0JZ2xvYnVzX2Fzc2VydCgKKy0JICAgIGNsaWVudF9oYW5k bGUtPnN0YXRlID09CistCSAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQ X0NPTk5FQ1RJT04gfHwKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCSAgICBHTE9C VVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKy0KKy0JZ2xvYnVz X2Z0cF9jbGllbnRfcmVzdGFydF9tYXJrZXJfdG9fc3RyaW5nKAorKyAgICAgICAgLyoKKysgICAg ICAgICAqIFJFU1QgbXVzdCBiZSB0aGUgbGFzdCB0aGluZyBkb25lIG9uIHRoZSBjb250cm9sIGNv bm5lY3Rpb24KKysgICAgICAgICAqIGJlZm9yZSBzZW5kaW5nIHRoZSBSRVRSLCBTVE9SLCBFUkVU LCBvciBFU1RPIGNvbW1hbmQuCisrICAgICAgICAgKi8KKysgICAgICAgIGdsb2J1c19hc3NlcnQo CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9C VVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04gfHwKKysgICAgICAg ICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJ RU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworKworKyAgICAgICAgZ2xvYnVzX2Z0 cF9jbGllbnRfcmVzdGFydF9tYXJrZXJfdG9fc3RyaW5nKAorICAgICAgICAgICAgICZjbGllbnRf aGFuZGxlLT5yZXN0YXJ0X21hcmtlciwKKyAgICAgICAgICAgICAmdG1wc3RyKTsKKyAKKy0JaWYo dG1wc3RyKQorLQl7CistCSAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFS R0VUX1JFU1Q7CistCSAgICB0YXJnZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFT S19UUkFOU0ZFUl9NT0RJRklFUlM7CistCistCSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdp bl9ub3RpZnlfY29tbWFuZCgKKy0JCWNsaWVudF9oYW5kbGUsCistCQl0YXJnZXQtPnVybF9zdHJp bmcsCistCQl0YXJnZXQtPm1hc2ssCistCQkiUkVTVCAlcyIgQ1JMRiwKKy0JCXRtcHN0cik7Cist CistCSAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfQUJPUlQgfHwKKy0JICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBf Q0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CistCSAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKy0JICAgIHsKKy0JCWJyZWFrOwor LQkgICAgfQorLQorLQkgICAgZ2xvYnVzX2Fzc2VydCgKKy0JCWNsaWVudF9oYW5kbGUtPnN0YXRl ID09CistCQlHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04g fHwKKy0JCWNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCQlHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKy0KKy0JICAgIHJlc3VsdCA9IGdsb2J1c19mdHBf Y29udHJvbF9zZW5kX2NvbW1hbmQoCistCQloYW5kbGUsCistCQkiUkVTVCAlcyIgQ1JMRiwKKy0J CWdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCistCQl1c2VyX2FyZywKKy0J CXRtcHN0cik7CistCistCSAgICBnbG9idXNfbGliY19mcmVlKHRtcHN0cik7CistCX0KKy0JZWxz ZQorLQl7CistCSAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NF VFVQX09QRVJBVElPTjsKKy0JICAgIGdvdG8gcmVkbzsKKy0JfQorLQlpZihyZXN1bHQgIT0gR0xP QlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworLQl9CistCWJyZWFr OworKyAgICAgICAgaWYodG1wc3RyKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHRhcmdldC0+ c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfUkVTVDsKKysgICAgICAgICAgICB0YXJn ZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19UUkFOU0ZFUl9NT0RJRklFUlM7 CisrCisrICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1h bmQoCisrICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUsCisrICAgICAgICAgICAgICAgIHRh cmdldC0+dXJsX3N0cmluZywKKysgICAgICAgICAgICAgICAgdGFyZ2V0LT5tYXNrLAorKyAgICAg ICAgICAgICAgICAiUkVTVCAlcyIgQ1JMRiwKKysgICAgICAgICAgICAgICAgdG1wc3RyKTsKKysK KysgICAgICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVO VF9IQU5ETEVfQUJPUlQgfHwKKysgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorKyAgICAgICAgICAgICAgIGNs aWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQor KyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQor KworKyAgICAgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAgICAgICAgIGNsaWVudF9o YW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRM RV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorKyAgICAgICAgICAgICAgICBjbGllbnRfaGFu ZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVf REVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKysKKysgICAgICAgICAgICByZXN1bHQgPSBnbG9idXNf ZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorKyAgICAgICAgICAgICAgICBoYW5kbGUsCisrICAg ICAgICAgICAgICAgICJSRVNUICVzIiBDUkxGLAorKyAgICAgICAgICAgICAgICBnbG9idXNfaV9m dHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAgICAgICAgICAgICAgICB1c2VyX2FyZywK KysgICAgICAgICAgICAgICAgdG1wc3RyKTsKKysKKysgICAgICAgICAgICBnbG9idXNfbGliY19m cmVlKHRtcHN0cik7CisrICAgICAgICB9CisrICAgICAgICBlbHNlCisrICAgICAgICB7CisrICAg ICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9P UEVSQVRJT047CisrICAgICAgICAgICAgZ290byByZWRvOworKyAgICAgICAgfQorKyAgICAgICAg aWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdv dG8gcmVzdWx0X2ZhdWx0OworKyAgICAgICAgfQorKyAgICAgICAgYnJlYWs7CisgCisgICAgIGNh c2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1JFU1Q6CistCWdsb2J1c19hc3NlcnQoCistCSAg ICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgZ2xvYnVzX2Fzc2VydCgKKysgICAg ICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorICAgICAgICAgICAgIEdMT0JVU19GVFBf Q0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTiB8fAorICAgICAgICAgICAgIGNs aWVudF9oYW5kbGUtPnN0YXRlID09CisgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFO RExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CisgCistCWlmKCghZXJyb3IpICYmCistCSAgIHJl c3BvbnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0lOVEVSTUVESUFU RV9SRVBMWSkKKy0JeworLQkgICAgaWYodGFyZ2V0LT5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJP TF9NT0RFX1NUUkVBTSkKKy0JICAgIHsKKy0JICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X2Zl YXR1cmVfc2V0KAorKyAgICAgICAgaWYoKCFlcnJvcikgJiYKKysgICAgICAgICAgIHJlc3BvbnNl LT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0lOVEVSTUVESUFURV9SRVBM WSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBpZih0YXJnZXQtPm1vZGUgPT0gR0xPQlVTX0ZU UF9DT05UUk9MX01PREVfU1RSRUFNKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAg Z2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCgKKyAgICAgICAgICAgICAgICAgICAgIHRh cmdldC0+ZmVhdHVyZXMsCisgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9G RUFUVVJFX1JFU1RfU1RSRUFNLAorICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElF TlRfVFJVRSk7CistCSAgICB9CistCX0KKy0JZWxzZQorLQl7CistCSAgICB0YXJnZXQtPnN0YXRl ID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CisrICAgICAgICAg ICAgfQorKyAgICAgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAg IHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElP TjsKKyAKKy0JICAgIGdvdG8gbm90aWZ5X2ZhdWx0OworLQl9CisrICAgICAgICAgICAgZ290byBu b3RpZnlfZmF1bHQ7CisrICAgICAgICB9CisgCistCXRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQ X0NMSUVOVF9UQVJHRVRfU0VUVVBfT1BFUkFUSU9OOworLQlnb3RvIHJlZG87CisrICAgICAgICB0 YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX09QRVJBVElPTjsK KysgICAgICAgIGdvdG8gcmVkbzsKKyAKKyAgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJH RVRfQUxMTzoKKy0JZ2xvYnVzX2Fzc2VydCgKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09 CistCSAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsK Ky0KKy0JaWYoKCFlcnJvcikgJiYKKy0JICAgcmVzcG9uc2UtPnJlc3BvbnNlX2NsYXNzID09IEdM T0JVU19GVFBfUE9TSVRJVkVfQ09NUExFVElPTl9SRVBMWSkKKy0JeworLQl9CistCWVsc2UKKy0J eworLQkgICAgLyogIERvbid0IHRoaW5rIHdlIHJlYWxseSBjYXJlIGFib3V0IGVycm9yIHJlc3Bv bnNlIGhlcmUKKy0JICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRf U0VUVVBfQ09OTkVDVElPTjsKKy0KKy0JICAgIGdvdG8gbm90aWZ5X2ZhdWx0OworLQkgICAgKi8K Ky0JfQorKyAgICAgICAgZ2xvYnVzX2Fzc2VydCgKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxl LT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NF VFVQX0NPTk5FQ1RJT04pOworKworKyAgICAgICAgaWYoKCFlcnJvcikgJiYKKysgICAgICAgICAg IHJlc3BvbnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJ T05fUkVQTFkpCisrICAgICAgICB7CisrICAgICAgICB9CisrICAgICAgICBlbHNlCisrICAgICAg ICB7CisrICAgICAgICAgICAgLyogIERvbid0IHRoaW5rIHdlIHJlYWxseSBjYXJlIGFib3V0IGVy cm9yIHJlc3BvbnNlIGhlcmUKKysgICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CisrCisrICAgICAgICAgICAgZ290byBu b3RpZnlfZmF1bHQ7CisrICAgICAgICAgICAgKi8KKysgICAgICAgIH0KKyAgICAgICAgIGlmKGNs aWVudF9oYW5kbGUtPnJlc3RhcnRfbWFya2VyLnR5cGUgIT0KKyAgICAgICAgICAgICBHTE9CVVNf RlRQX0NMSUVOVF9SRVNUQVJUX05PTkUpCisgICAgICAgICB7CitAQCAtMzEzNSwxNiArMzEzNSwx NiBAQCByZWRvOgorICAgICAgICAgeworICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9C VVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfT1BFUkFUSU9OOworICAgICAgICAgfQorLQlnb3Rv IHJlZG87CisrICAgICAgICBnb3RvIHJlZG87CisgCisgICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElF TlRfVEFSR0VUX1NFVFVQX09QRVJBVElPTjoKKy0Jc3dpdGNoKGNsaWVudF9oYW5kbGUtPm9wKQor LQl7CistCSAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9MSVNUOgorLQkgIGNhc2UgR0xPQlVTX0ZU UF9DTElFTlRfTkxTVDoKKy0JICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX01MU0Q6CisrICAgICAg ICBzd2l0Y2goY2xpZW50X2hhbmRsZS0+b3ApCisrICAgICAgICB7CisrICAgICAgICAgIGNhc2Ug R0xPQlVTX0ZUUF9DTElFTlRfTElTVDoKKysgICAgICAgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVO VF9OTFNUOgorKyAgICAgICAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX01MU0Q6CisgICAgICAg ICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfTUxTUjoKKy0JICAgIGlmKHRhcmdldC0+YXR0ci0+ Y3dkX2ZpcnN0KQorKyAgICAgICAgICAgIGlmKHRhcmdldC0+YXR0ci0+Y3dkX2ZpcnN0KQorICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBf Q0xJRU5UX1RBUkdFVF9TRVRVUF9MSVNUX0NXRDsKKyAgICAgICAgICAgICB9CitAQCAtMzE1Miw4 ICszMTUyLDggQEAgcmVkbzoKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHRhcmdl dC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfTElTVDsKKyAgICAgICAg ICAgICB9CistCSAgICBnb3RvIHJlZG87CistCSAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9HRVQ6 CisrICAgICAgICAgICAgZ290byByZWRvOworKyAgICAgICAgICBjYXNlIEdMT0JVU19GVFBfQ0xJ RU5UX0dFVDoKKyAgICAgICAgICAgICBpZiAoZ3JpZGZ0cDJfZ2V0cHV0ID09IEdMT0JVU19UUlVF KQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JV U19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9HRVRQVVRfR0VUOworQEAgLTMxNjMsNyArMzE2Myw3 IEBAIHJlZG86CisgICAgICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NM SUVOVF9UQVJHRVRfU0VUVVBfR0VUOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBnb3Rv IHJlZG87CistCSAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9QVVQ6CisrICAgICAgICAgIGNhc2Ug R0xPQlVTX0ZUUF9DTElFTlRfUFVUOgorICAgICAgICAgICAgIGlmIChncmlkZnRwMl9nZXRwdXQg PT0gR0xPQlVTX1RSVUUpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgdGFyZ2V0 LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9HRVRQVVRfUFVUOworQEAg LTMxNzIsNjcgKzMxNzIsNjcgQEAgcmVkbzoKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1BVVDsK KyAgICAgICAgICAgICB9CistCSAgICBnb3RvIHJlZG87CistCSAgY2FzZSBHTE9CVVNfRlRQX0NM SUVOVF9UUkFOU0ZFUjoKKy0JICAgIGlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCSAgICAg ICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKQorLQkgICAg eworKyAgICAgICAgICAgIGdvdG8gcmVkbzsKKysgICAgICAgICAgY2FzZSBHTE9CVVNfRlRQX0NM SUVOVF9UUkFOU0ZFUjoKKysgICAgICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQor KyAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5F Q1RJT04pCisrICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0g R0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1RSQU5TRkVSX0RFU1Q7CistCSAgICB9Cist CSAgICBlbHNlCistCSAgICB7CistCQl0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRf VEFSR0VUX1NFVFVQX1RSQU5TRkVSX1NPVVJDRTsKKy0JICAgIH0KKy0JICAgIGdvdG8gcmVkbzsK Ky0JICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX0lETEU6CistCSAgICBnbG9idXNfYXNzZXJ0KGNs aWVudF9oYW5kbGUtPm9wICE9IEdMT0JVU19GVFBfQ0xJRU5UX0lETEUpOworLQkgICAgZ290byBm aW5pc2g7CistCistCSAgZGVmYXVsdDovKiBObyBvdGhlciBzdGF0ZXMgc2hvdWxkIG9jY3VyICov CistCSAgICBnbG9idXNfYXNzZXJ0KDAgJiYgIlVuZXhwZWN0ZWQgc3RhdGUiKTsKKy0JfQorKyAg ICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAgICAg ICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1RS QU5TRkVSX1NPVVJDRTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZ290byByZWRvOwor KyAgICAgICAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX0lETEU6CisrICAgICAgICAgICAgZ2xv YnVzX2Fzc2VydChjbGllbnRfaGFuZGxlLT5vcCAhPSBHTE9CVVNfRlRQX0NMSUVOVF9JRExFKTsK KysgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKysKKysgICAgICAgICAgZGVmYXVsdDovKiBObyBv dGhlciBzdGF0ZXMgc2hvdWxkIG9jY3VyICovCisrICAgICAgICAgICAgZ2xvYnVzX2Fzc2VydCgw ICYmICJVbmV4cGVjdGVkIHN0YXRlIik7CisrICAgICAgICB9CisgCisgICAgIGNhc2UgR0xPQlVT X0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0xJU1RfQ1dEOgorLQkvKgorLQkgKiBDV0QgYmVmb3Jl IGEgbGlzdGluZyBvcGVyYXRpb24uCistCSAqLworLQlnbG9idXNfYXNzZXJ0KAorLQkgICAgY2xp ZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VS Q0VfU0VUVVBfQ09OTkVDVElPTik7CistCistCXRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NM SUVOVF9UQVJHRVRfU0VUVVBfTElTVDsKKy0JdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElF TlRfQ01EX01BU0tfRklMRV9BQ1RJT05TOworLQorLQlnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdp bl9ub3RpZnlfY29tbWFuZCgKKy0JICAgIGNsaWVudF9oYW5kbGUsCisrICAgICAgICAvKgorKyAg ICAgICAgICogQ1dEIGJlZm9yZSBhIGxpc3Rpbmcgb3BlcmF0aW9uLgorKyAgICAgICAgICovCisr ICAgICAgICBnbG9idXNfYXNzZXJ0KAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRl ID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9D T05ORUNUSU9OKTsKKysKKysgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVO VF9UQVJHRVRfU0VUVVBfTElTVDsKKysgICAgICAgIHRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBf Q0xJRU5UX0NNRF9NQVNLX0ZJTEVfQUNUSU9OUzsKKysKKysgICAgICAgIGdsb2J1c19pX2Z0cF9j bGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUs CisgICAgICAgICAgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorLQkgICAgdGFyZ2V0LT5tYXNrLAor LQkgICAgIkNXRCAlcyIgQ1JMRiwKKy0JICAgIHBhdGhuYW1lKTsKKy0KKy0JaWYoY2xpZW50X2hh bmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CistCSAgICBj bGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8 fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X0ZBSUxVUkUpCistCXsKKy0JICAgIGJyZWFrOworLQl9CistCistCXJlc3VsdCA9IGdsb2J1c19m dHBfY29udHJvbF9zZW5kX2NvbW1hbmQoCistCSAgICBoYW5kbGUsCistCSAgICAiQ1dEICVzIiBD UkxGLAorLQkgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9yZXNwb25zZV9jYWxsYmFjaywKKy0JICAg IHVzZXJfYXJnLAorLQkgICAgcGF0aG5hbWUpOworLQlpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NF U1MpCistCXsKKy0JICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworLQl9CistCWJyZWFrOworKyAgICAg ICAgICAgIHRhcmdldC0+bWFzaywKKysgICAgICAgICAgICAiQ1dEICVzIiBDUkxGLAorKyAgICAg ICAgICAgIHBhdGhuYW1lKTsKKysKKysgICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09 IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCB8fAorKyAgICAgICAgICAgIGNsaWVudF9o YW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CisrICAg ICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X0ZBSUxVUkUpCisrICAgICAgICB7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9Cisr CisrICAgICAgICByZXN1bHQgPSBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorKyAg ICAgICAgICAgIGhhbmRsZSwKKysgICAgICAgICAgICAiQ1dEICVzIiBDUkxGLAorKyAgICAgICAg ICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCisrICAgICAgICAgICAg dXNlcl9hcmcsCisrICAgICAgICAgICAgcGF0aG5hbWUpOworKyAgICAgICAgaWYocmVzdWx0ICE9 IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gcmVzdWx0X2Zh dWx0OworKyAgICAgICAgfQorKyAgICAgICAgYnJlYWs7CisgCisgICAgIGNhc2UgR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX1NFVFVQX0xJU1Q6CistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGll bnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJD RV9TRVRVUF9DT05ORUNUSU9OKTsKKysgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAg ICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVO VF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04pOworIAorICAgICAgICAgLyogaWYgdGhl cmUgaXMgYSByZXNwb25zZSBiZWZvcmUgdGhpcyBpdCBpcyBwcm9iYWJseSBmcm9tIGEKKyAgICAg ICAgICAgQ1dEIG9yIE5PT1AgKi8KK0BAIC0zMjQ1LDcgKzMyNDUsNyBAQCByZWRvOgorICAgICAg ICAgICAgIGVsc2UKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIHRhcmdldC0+c3Rh dGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElPTjsKKy0gICAgCisr CisgICAgICAgICAgICAgICAgIGdvdG8gbm90aWZ5X2ZhdWx0OworICAgICAgICAgICAgIH0KKyAg ICAgICAgIH0KK0BAIC0zMjYxLDE4OCArMzI2MSwxODggQEAgcmVkbzoKKyAgICAgICAgIHsKKyAg ICAgICAgICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKKyAgICAgICAgIH0KKy0gICAgICAg IAorLQl0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0xJU1Q7CisgCist CWlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byByZXN1bHRfZmF1 bHQ7CistCX0KKy0KKy0JY2xpZW50X2hhbmRsZS0+c3RhdGUgPQorLQkgICAgR0xPQlVTX0ZUUF9D TElFTlRfSEFORExFX1NPVVJDRV9MSVNUOworKyAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JV U19GVFBfQ0xJRU5UX1RBUkdFVF9MSVNUOworKworKyAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JV U19TVUNDRVNTKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0Owor KyAgICAgICAgfQorKworKyAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPQorKyAgICAgICAg ICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfTElTVDsKKyAKKy0JdGFyZ2V0LT5t YXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfRklMRV9BQ1RJT05TOworKyAgICAgICAg dGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfRklMRV9BQ1RJT05TOwor IAorLQlzd2l0Y2goY2xpZW50X2hhbmRsZS0+b3ApCistCXsKKy0JICBjYXNlIEdMT0JVU19GVFBf Q0xJRU5UX0xJU1Q6CistCSAgICBsaXN0X3N0ciA9ICJMSVNUIjsKKy0JICAgIGJyZWFrOworKyAg ICAgICAgc3dpdGNoKGNsaWVudF9oYW5kbGUtPm9wKQorKyAgICAgICAgeworKyAgICAgICAgICBj YXNlIEdMT0JVU19GVFBfQ0xJRU5UX0xJU1Q6CisrICAgICAgICAgICAgbGlzdF9zdHIgPSAiTElT VCI7CisrICAgICAgICAgICAgYnJlYWs7CisgCistCSAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9O TFNUOgorLQkgICAgbGlzdF9zdHIgPSAiTkxTVCI7CistCSAgICBicmVhazsKKysgICAgICAgICAg Y2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9OTFNUOgorKyAgICAgICAgICAgIGxpc3Rfc3RyID0gIk5M U1QiOworKyAgICAgICAgICAgIGJyZWFrOworIAorLQkgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRf TUxTRDoKKy0JICAgIGxpc3Rfc3RyID0gIk1MU0QiOworLQkgICAgYnJlYWs7CisrICAgICAgICAg IGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfTUxTRDoKKysgICAgICAgICAgICBsaXN0X3N0ciA9ICJN TFNEIjsKKysgICAgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgICAgY2FzZSBHTE9CVVNfRlRQ X0NMSUVOVF9NTFNSOgorICAgICAgICAgICAgIGxpc3Rfc3RyID0gIk1MU1IiOworICAgICAgICAg ICAgIGJyZWFrOworLSAgICAgICAgCisrCisgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg ICAgZ2xvYnVzX2Fzc2VydCgwICYmICJVbmV4cGVjdGVkIGxpc3Qgb3AiKTsKKyAgICAgICAgICAg ICBicmVhazsKKy0JfQorLQkKKy0JCistCWdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25vdGlm eV9jb21tYW5kKAorLQkgICAgY2xpZW50X2hhbmRsZSwKKy0JICAgIHRhcmdldC0+dXJsX3N0cmlu ZywKKy0JICAgIHRhcmdldC0+bWFzaywKKy0JICAgICIlcyAlcyIgQ1JMRiwKKy0JICAgIGxpc3Rf c3RyLAorLQkgICAgdGFyZ2V0LT5hdHRyLT5jd2RfZmlyc3QgPyAiIiA6IHBhdGhuYW1lKTsKKy0K Ky0JaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FC T1JUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9I QU5ETEVfUkVTVEFSVCB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZU UF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCistCXsKKy0JICAgIGJyZWFrOworLQl9CistCistCWds b2J1c19hc3NlcnQoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JCSAgICAgIEdMT0JVU19GVFBf Q0xJRU5UX0hBTkRMRV9TT1VSQ0VfTElTVCk7CistCistCXJlc3VsdCA9CistCSAgICBnbG9idXNf ZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorLQkJaGFuZGxlLAorLQkJIiVzICVzIiBDUkxGLAor LQkJZ2xvYnVzX2lfZnRwX2NsaWVudF9yZXNwb25zZV9jYWxsYmFjaywKKy0JCXVzZXJfYXJnLAor LQkJbGlzdF9zdHIsCistCQl0YXJnZXQtPmF0dHItPmN3ZF9maXJzdCA/ICIiIDogcGF0aG5hbWUp OworLQlpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gcmVzdWx0 X2ZhdWx0OworLQl9CistCWJyZWFrOworKyAgICAgICAgfQorKworKworKyAgICAgICAgZ2xvYnVz X2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCisrICAgICAgICAgICAgY2xpZW50 X2hhbmRsZSwKKysgICAgICAgICAgICB0YXJnZXQtPnVybF9zdHJpbmcsCisrICAgICAgICAgICAg dGFyZ2V0LT5tYXNrLAorKyAgICAgICAgICAgICIlcyAlcyIgQ1JMRiwKKysgICAgICAgICAgICBs aXN0X3N0ciwKKysgICAgICAgICAgICB0YXJnZXQtPmF0dHItPmN3ZF9maXJzdCA/ICIiIDogcGF0 aG5hbWUpOworKworKyAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZU UF9DTElFTlRfSEFORExFX0FCT1JUIHx8CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3Rh dGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwKKysgICAgICAgICAgICBj bGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkK KysgICAgICAgIHsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0KKysKKysgICAgICAg IGdsb2J1c19hc3NlcnQoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICAgICAg ICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9MSVNUKTsKKysKKysgICAgICAg IHJlc3VsdCA9CisrICAgICAgICAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgK KysgICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICAgICAgICAgICAgICAiJXMgJXMiIENSTEYs CisrICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ss CisrICAgICAgICAgICAgICAgIHVzZXJfYXJnLAorKyAgICAgICAgICAgICAgICBsaXN0X3N0ciwK KysgICAgICAgICAgICAgICAgdGFyZ2V0LT5hdHRyLT5jd2RfZmlyc3QgPyAiIiA6IHBhdGhuYW1l KTsKKysgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysg ICAgICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKysgICAgICAgIH0KKysgICAgICAgIGJyZWFr OworIAorICAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9NTFNUOgorIAor LQl0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX05FRURfQ09NUExFVEU7 CistCistCXRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX0ZJTEVfQUNU SU9OUzsKKy0KKy0JZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCist CSAgICBjbGllbnRfaGFuZGxlLAorLQkgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorLQkgICAgdGFy Z2V0LT5tYXNrLAorLQkgICAgIk1MU1QgJXMiIENSTEYsCistCSAgICBwYXRobmFtZSk7CistCist CWlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9S VCB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFO RExFX1JFU1RBUlQgfHwKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBf Q0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorLQl7CistCSAgICBicmVhazsKKy0JfQorLQorLQlnbG9i dXNfYXNzZXJ0KGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCQkgICAgICBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04pOworLQorLQlyZXN1bHQgPQorLQkg ICAgZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKy0JCWhhbmRsZSwKKy0JCSJNTFNU ICVzIiBDUkxGLAorLQkJZ2xvYnVzX2lfZnRwX2NsaWVudF9yZXNwb25zZV9jYWxsYmFjaywKKy0J CXVzZXJfYXJnLAorLQkJcGF0aG5hbWUpOworLQorLQlpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NF U1MpCistCXsKKy0JICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworLQl9CistCWJyZWFrOworKyAgICAg ICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9ORUVEX0NPTVBMRVRF OworKworKyAgICAgICAgdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tf RklMRV9BQ1RJT05TOworKworKyAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90 aWZ5X2NvbW1hbmQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZSwKKysgICAgICAgICAgICB0 YXJnZXQtPnVybF9zdHJpbmcsCisrICAgICAgICAgICAgdGFyZ2V0LT5tYXNrLAorKyAgICAgICAg ICAgICJNTFNUICVzIiBDUkxGLAorKyAgICAgICAgICAgIHBhdGhuYW1lKTsKKysKKysgICAgICAg IGlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9S VCB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJ RU5UX0hBTkRMRV9SRVNUQVJUIHx8CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCisrICAgICAgICB7CisrICAgICAg ICAgICAgYnJlYWs7CisrICAgICAgICB9CisrCisrICAgICAgICBnbG9idXNfYXNzZXJ0KGNsaWVu dF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJ RU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTik7CisrCisrICAgICAgICByZXN1bHQg PQorKyAgICAgICAgICAgIGdsb2J1c19mdHBfY29udHJvbF9zZW5kX2NvbW1hbmQoCisrICAgICAg ICAgICAgICAgIGhhbmRsZSwKKysgICAgICAgICAgICAgICAgIk1MU1QgJXMiIENSTEYsCisrICAg ICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCisrICAg ICAgICAgICAgICAgIHVzZXJfYXJnLAorKyAgICAgICAgICAgICAgICBwYXRobmFtZSk7CisrCisr ICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICB7CisrICAgICAg ICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisrICAgICAgICB9CisrICAgICAgICBicmVhazsKKyAK KyAgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfU1RBVDoKKyAKKy0JdGFy Z2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9ORUVEX0NPTVBMRVRFOworLQor LQl0YXJnZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19GSUxFX0FDVElPTlM7 CistCistCWdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorLQkgICAg Y2xpZW50X2hhbmRsZSwKKy0JICAgIHRhcmdldC0+dXJsX3N0cmluZywKKy0JICAgIHRhcmdldC0+ bWFzaywKKy0JICAgICJTVEFUICVzIiBDUkxGLAorLQkgICAgcGF0aG5hbWUpOworLQorLQlpZihj bGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwK Ky0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9S RVNUQVJUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVO VF9IQU5ETEVfRkFJTFVSRSkKKy0JeworLQkgICAgYnJlYWs7CistCX0KKy0KKy0JZ2xvYnVzX2Fz c2VydChjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkJICAgICAgR0xPQlVTX0ZUUF9DTElFTlRf SEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OKTsKKy0KKy0JcmVzdWx0ID0KKy0JICAgIGds b2J1c19mdHBfY29udHJvbF9zZW5kX2NvbW1hbmQoCistCQloYW5kbGUsCistCQkiU1RBVCAlcyIg Q1JMRiwKKy0JCWdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCistCQl1c2Vy X2FyZywKKy0JCXBhdGhuYW1lKTsKKy0KKy0JaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQor LQl7CistCSAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKy0JfQorLQlicmVhazsKKysgICAgICAgIHRh cmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfTkVFRF9DT01QTEVURTsKKysK KysgICAgICAgIHRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX0ZJTEVf QUNUSU9OUzsKKysKKysgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25vdGlmeV9j b21tYW5kKAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUsCisrICAgICAgICAgICAgdGFyZ2V0 LT51cmxfc3RyaW5nLAorKyAgICAgICAgICAgIHRhcmdldC0+bWFzaywKKysgICAgICAgICAgICAi U1RBVCAlcyIgQ1JMRiwKKysgICAgICAgICAgICBwYXRobmFtZSk7CisrCisrICAgICAgICBpZihj bGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwK KysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9I QU5ETEVfUkVTVEFSVCB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdM T0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorKyAgICAgICAgeworKyAgICAgICAgICAg IGJyZWFrOworKyAgICAgICAgfQorKworKyAgICAgICAgZ2xvYnVzX2Fzc2VydChjbGllbnRfaGFu ZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9I QU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04pOworKworKyAgICAgICAgcmVzdWx0ID0KKysg ICAgICAgICAgICBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorKyAgICAgICAgICAg ICAgICBoYW5kbGUsCisrICAgICAgICAgICAgICAgICJTVEFUICVzIiBDUkxGLAorKyAgICAgICAg ICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAgICAgICAg ICAgICAgICB1c2VyX2FyZywKKysgICAgICAgICAgICAgICAgcGF0aG5hbWUpOworKworKyAgICAg ICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgeworKyAgICAgICAgICAg IGdvdG8gcmVzdWx0X2ZhdWx0OworKyAgICAgICAgfQorKyAgICAgICAgYnJlYWs7CisgCisgICAg IGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NITU9EOgorIAorLQl0YXJnZXQt PnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX05FRURfQ09NUExFVEU7CistCistCXRh cmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX0ZJTEVfQUNUSU9OUzsKKy0K Ky0JZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCistCSAgICBjbGll bnRfaGFuZGxlLAorLQkgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorLQkgICAgdGFyZ2V0LT5tYXNr LAorLQkgICAgIlNJVEUgQ0hNT0QgJTA0byAlcyIgQ1JMRiwKKy0JICAgIGNsaWVudF9oYW5kbGUt PmNobW9kX2ZpbGVfbW9kZSwKKy0JICAgIHBhdGhuYW1lKTsKKy0KKy0JaWYoY2xpZW50X2hhbmRs ZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CistCSAgICBjbGll bnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAor LQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZB SUxVUkUpCistCXsKKy0JICAgIGJyZWFrOworLQl9CistCistCWdsb2J1c19hc3NlcnQoY2xpZW50 X2hhbmRsZS0+c3RhdGUgPT0KKy0JCSAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VS Q0VfU0VUVVBfQ09OTkVDVElPTik7CistCistCXJlc3VsdCA9CistCSAgICBnbG9idXNfZnRwX2Nv bnRyb2xfc2VuZF9jb21tYW5kKAorLQkJaGFuZGxlLAorLQkJIlNJVEUgQ0hNT0QgJTA0byAlcyIg Q1JMRiwKKy0JCWdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCistCQl1c2Vy X2FyZywKKy0JCWNsaWVudF9oYW5kbGUtPmNobW9kX2ZpbGVfbW9kZSwKKy0JCXBhdGhuYW1lKTsK Ky0KKy0JaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorLQl7CistCSAgICBnb3RvIHJlc3Vs dF9mYXVsdDsKKy0JfQorLQlicmVhazsKKy0JCisrICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xP QlVTX0ZUUF9DTElFTlRfVEFSR0VUX05FRURfQ09NUExFVEU7CisrCisrICAgICAgICB0YXJnZXQt Pm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19GSUxFX0FDVElPTlM7CisrCisrICAg ICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKysgICAgICAg ICAgICBjbGllbnRfaGFuZGxlLAorKyAgICAgICAgICAgIHRhcmdldC0+dXJsX3N0cmluZywKKysg ICAgICAgICAgICB0YXJnZXQtPm1hc2ssCisrICAgICAgICAgICAgIlNJVEUgQ0hNT0QgJTA0byAl cyIgQ1JMRiwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5jaG1vZF9maWxlX21vZGUsCisr ICAgICAgICAgICAgcGF0aG5hbWUpOworKworKyAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3Rh dGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CisrICAgICAgICAgICAgY2xp ZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwK KysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9I QU5ETEVfRkFJTFVSRSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAg IH0KKysKKysgICAgICAgIGdsb2J1c19hc3NlcnQoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysg ICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRV UF9DT05ORUNUSU9OKTsKKysKKysgICAgICAgIHJlc3VsdCA9CisrICAgICAgICAgICAgZ2xvYnVz X2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKysgICAgICAgICAgICAgICAgaGFuZGxlLAorKyAg ICAgICAgICAgICAgICAiU0lURSBDSE1PRCAlMDRvICVzIiBDUkxGLAorKyAgICAgICAgICAgICAg ICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAgICAgICAgICAgICAg ICB1c2VyX2FyZywKKysgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+Y2htb2RfZmlsZV9t b2RlLAorKyAgICAgICAgICAgICAgICBwYXRobmFtZSk7CisrCisrICAgICAgICBpZihyZXN1bHQg IT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICB7CisrICAgICAgICAgICAgZ290byByZXN1bHRf ZmF1bHQ7CisrICAgICAgICB9CisrICAgICAgICBicmVhazsKKysKKyAgICAgY2FzZSBHTE9CVVNf RlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ0hHUlA6CisgCisgICAgIHRhcmdldC0+c3RhdGUgPSBH TE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfTkVFRF9DT01QTEVURTsKK0BAIC0zNTM4LDE5ICszNTM4 LDE5IEBAIHJlZG86CisgICAgICAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX3QgIGhh bmRsZV9hdHRyOworICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNv ZGVkX3VybDsKKyAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2Vz OworLSAgICAgICAgCisrCisgICAgICAgICBoYW5kbGVfYXR0ciA9ICZjbGllbnRfaGFuZGxlLT5h dHRyOworLSAgICAKKysKKyAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVO VF9UQVJHRVRfTkVFRF9DT01QTEVURTsKKy0gICAgCisrCisgICAgICAgICB0YXJnZXQtPm1hc2sg PSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19GSUxFX0FDVElPTlM7CistICAgIAorKworICAg ICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl9nZXRfcmZjMTczOF91 cmwoJmhhbmRsZV9hdHRyLCAmcmZjMTczOF91cmwpOworICAgICAgICAgaWYocmVzdWx0ICE9IEdM T0JVU19TVUNDRVNTKQorICAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0 OworICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICBpZihyZmMxNzM4X3VybD09R0xP QlVTX1RSVUUpCisgICAgICAgICB7CisgICAgICAgICAgICAgcmVzdWx0ID0gKGdsb2J1c19yZXN1 bHRfdCkgZ2xvYnVzX3VybF9wYXJzZV9yZmMxNzM4KGNsaWVudF9oYW5kbGUtPmRlc3RfdXJsLCAm ZGVzdF91cmwpOworQEAgLTM1NTksMTcgKzM1NTksMTcgQEAgcmVkbzoKKyAgICAgICAgIHsKKyAg ICAgICAgICAgICByZXN1bHQgPSAoZ2xvYnVzX3Jlc3VsdF90KSBnbG9idXNfdXJsX3BhcnNlKGNs aWVudF9oYW5kbGUtPmRlc3RfdXJsLCAmZGVzdF91cmwpOworICAgICAgICAgfQorLSAgICAKKysK KyAgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgIHsKKyAgICAg ICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKyAgICAgICAgIH0KKy0gICAgCisrCisgICAgICAg ICBlbmNvZGVkX3VybCA9IGRlc3RfdXJsLnVybF9wYXRoOworICAgICAgICAgeworICAgICAgICAg ICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICBzOworICAgICAgICAgICAgIGNoYXIgKiAg ICAgICAgICAgICAgICAgICAgICBkOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIGZv cihzID0gZW5jb2RlZF91cmwsIHNwYWNlcyA9IDA7ICpzOyArK3MpCisgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICBpZigqcyA9PSAnICcpCitAQCAtMzU3Nyw3ICszNTc3LDcgQEAgcmVk bzoKKyAgICAgICAgICAgICAgICAgICAgICsrc3BhY2VzOworICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBpZihzcGFj ZXMpCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBlbmNvZGVkX3VybCA9IChjaGFy ICopIGdsb2J1c19tYWxsb2Moc3RybGVuKGRlc3RfdXJsLnVybF9wYXRoKSArICgyICogc3BhY2Vz KSArIDEpOworQEAgLTM2MDAsMzQ1ICszNjAwLDM0NSBAQCByZWRvOgorICAgICAgICAgICAgICAg ICAqZCA9ICdcMCc7CisgICAgICAgICAgICAgfQorICAgICAgICAgfQorLSAgICAgICAgCisrCisr ICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKysgICAg ICAgICAgICBjbGllbnRfaGFuZGxlLAorKyAgICAgICAgICAgIHRhcmdldC0+dXJsX3N0cmluZywK KysgICAgICAgICAgICB0YXJnZXQtPm1hc2ssCisrICAgICAgICAgICAgIlNJVEUgU1lNTElOSyAl cyAlcyIgQ1JMRiwKKysgICAgICAgICAgICBlbmNvZGVkX3VybCwKKysgICAgICAgICAgICBwYXRo bmFtZSk7CisrCisrICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQ X0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0 ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorKyAgICAgICAgICAgIGNs aWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQor KyAgICAgICAgeworKyAgICAgICAgICAgIGdsb2J1c191cmxfZGVzdHJveSgmZGVzdF91cmwpOwor KyAgICAgICAgICAgIGlmIChzcGFjZXMpIGdsb2J1c19mcmVlKGVuY29kZWRfdXJsKTsKKysgICAg ICAgICAgICBicmVhazsKKysgICAgICAgIH0KKysKKysgICAgICAgIGdsb2J1c19hc3NlcnQoY2xp ZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVO VF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04pOworKworKyAgICAgICAgcmVzdWx0ID0K KysgICAgICAgICAgICBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorKyAgICAgICAg ICAgIGhhbmRsZSwKKysgICAgICAgICAgICAiU0lURSBTWU1MSU5LICVzICVzIiBDUkxGLAorKyAg ICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCisrICAgICAg ICAgICAgdXNlcl9hcmcsCisrICAgICAgICAgICAgZW5jb2RlZF91cmwsCisrICAgICAgICAgICAg cGF0aG5hbWUpOworKworKyAgICAgICAgaWYgKHNwYWNlcykgZ2xvYnVzX2ZyZWUoZW5jb2RlZF91 cmwpOworKyAgICAgICAgZ2xvYnVzX3VybF9kZXN0cm95KCZkZXN0X3VybCk7CisrCisrICAgICAg ICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICB7CisrICAgICAgICAgICAg Z290byByZXN1bHRfZmF1bHQ7CisrICAgICAgICB9CisrICAgIH0KKysgICAgYnJlYWs7CisrCisr ICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0RFTEVURToKKysKKysgICAg ICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfTkVFRF9DT01QTEVU RTsKKysKKysgICAgICAgIHRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNL X0ZJTEVfQUNUSU9OUzsKKysKKysgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25v dGlmeV9jb21tYW5kKAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUsCisrICAgICAgICAgICAg dGFyZ2V0LT51cmxfc3RyaW5nLAorKyAgICAgICAgICAgIHRhcmdldC0+bWFzaywKKysgICAgICAg ICAgICAiREVMRSAlcyIgQ1JMRiwKKysgICAgICAgICAgICBwYXRobmFtZSk7CisrCisrICAgICAg ICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJP UlQgfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRl ID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorKyAgICAgICAgeworKyAgICAg ICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKworKyAgICAgICAgZ2xvYnVzX2Fzc2VydChjbGll bnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04pOworKworKyAgICAgICAgcmVzdWx0 ID0KKysgICAgICAgICAgICBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorKyAgICAg ICAgICAgICAgICBoYW5kbGUsCisrICAgICAgICAgICAgICAgICJERUxFICVzIiBDUkxGLAorKyAg ICAgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAg ICAgICAgICAgICAgICB1c2VyX2FyZywKKysgICAgICAgICAgICAgICAgcGF0aG5hbWUpOworKwor KyAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgeworKyAgICAg ICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworKyAgICAgICAgfQorKyAgICAgICAgYnJlYWs7Cisr CisrICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1JORlI6CisrCisrICAg ICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1JOVE87 CisrCisrICAgICAgICB0YXJnZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19G SUxFX0FDVElPTlM7CisrCisrICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3Rp ZnlfY29tbWFuZCgKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLAorKyAgICAgICAgICAgIHRh cmdldC0+dXJsX3N0cmluZywKKysgICAgICAgICAgICB0YXJnZXQtPm1hc2ssCisrICAgICAgICAg ICAgIlJORlIgJXMiIENSTEYsCisrICAgICAgICAgICAgcGF0aG5hbWUpOworKworKyAgICAgICAg aWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JU IHx8CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX1JFU1RBUlQgfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKysgICAgICAgIHsKKysgICAgICAg ICAgICBicmVhazsKKysgICAgICAgIH0KKysKKysgICAgICAgIGdsb2J1c19hc3NlcnQoY2xpZW50 X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OKTsKKysKKysgICAgICAgIHJlc3VsdCA9 CisrICAgICAgICAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKysgICAgICAg ICAgICAgICAgaGFuZGxlLAorKyAgICAgICAgICAgICAgICAiUk5GUiAlcyIgQ1JMRiwKKysgICAg ICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9yZXNwb25zZV9jYWxsYmFjaywKKysgICAg ICAgICAgICAgICAgdXNlcl9hcmcsCisrICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKKysKKysg ICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAg ICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKysgICAgICAgIH0KKysgICAgICAgIGJyZWFrOworKwor KyAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9STlRPOgorKyAgICB7Cisr ICAgICAgICBnbG9idXNfdXJsX3QgICAgICAgICAgICAgICAgICAgIGRlc3RfdXJsOworKyAgICAg ICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICByZmMxNzM4X3VybDsKKysgICAgICAg IGdsb2J1c19mdHBfY2xpZW50X2hhbmRsZWF0dHJfdCAgaGFuZGxlX2F0dHI7CisrCisrICAgICAg ICBoYW5kbGVfYXR0ciA9ICZjbGllbnRfaGFuZGxlLT5hdHRyOworKworKyAgICAgICAgdGFyZ2V0 LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9ORUVEX0NPTVBMRVRFOworKworKyAg ICAgICAgdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfRklMRV9BQ1RJ T05TOworKworKyAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl9n ZXRfcmZjMTczOF91cmwoJmhhbmRsZV9hdHRyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJmYzE3MzhfdXJsKTsKKysgICAgICAgIGlmKHJl c3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIHJl c3VsdF9mYXVsdDsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmKHJmYzE3MzhfdXJsPT1HTE9C VVNfVFJVRSkKKysgICAgICAgIHsKKysgICAgICAgICAgICByZXN1bHQgPSAoZ2xvYnVzX3Jlc3Vs dF90KSBnbG9idXNfdXJsX3BhcnNlX3JmYzE3MzgoY2xpZW50X2hhbmRsZS0+ZGVzdF91cmwsCisr ICAgICAgICAgICAgICAgICZkZXN0X3VybCk7CisrICAgICAgICB9CisrICAgICAgICBlbHNlCisr ICAgICAgICB7CisrICAgICAgICAgICAgcmVzdWx0ID0gKGdsb2J1c19yZXN1bHRfdCkgZ2xvYnVz X3VybF9wYXJzZShjbGllbnRfaGFuZGxlLT5kZXN0X3VybCwKKysgICAgICAgICAgICAgICAgJmRl c3RfdXJsKTsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VD Q0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKysgICAg ICAgIH0KKysKKyAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25vdGlmeV9jb21t YW5kKAorICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUsCisgICAgICAgICAgICAgdGFyZ2V0LT51 cmxfc3RyaW5nLAorICAgICAgICAgICAgIHRhcmdldC0+bWFzaywKKy0gICAgICAgICAgICAiU0lU RSBTWU1MSU5LICVzICVzIiBDUkxGLAorLSAgICAgICAgICAgIGVuY29kZWRfdXJsLAorLSAgICAg ICAgICAgIHBhdGhuYW1lKTsKKy0gICAgCisrICAgICAgICAgICAgIlJOVE8gJXMiIENSTEYsCisr ICAgICAgICAgICAgZGVzdF91cmwudXJsX3BhdGgpOworKworICAgICAgICAgaWYoY2xpZW50X2hh bmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CisgICAgICAg ICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JF U1RBUlQgfHwKKyAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQ X0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnbG9idXNf dXJsX2Rlc3Ryb3koJmRlc3RfdXJsKTsKKy0gICAgICAgICAgICBpZiAoc3BhY2VzKSBnbG9idXNf ZnJlZShlbmNvZGVkX3VybCk7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CistICAg IAorKworICAgICAgICAgZ2xvYnVzX2Fzc2VydChjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLSAg ICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09O TkVDVElPTik7CistICAgIAorLSAgICAgICAgcmVzdWx0ID0KKy0gICAgICAgICAgICBnbG9idXNf ZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorLSAgICAgICAgICAgIGhhbmRsZSwKKy0gICAgICAg ICAgICAiU0lURSBTWU1MSU5LICVzICVzIiBDUkxGLAorLSAgICAgICAgICAgIGdsb2J1c19pX2Z0 cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCistICAgICAgICAgICAgdXNlcl9hcmcsCistICAg ICAgICAgICAgZW5jb2RlZF91cmwsCistICAgICAgICAgICAgcGF0aG5hbWUpOworLSAgICAKKy0g ICAgICAgIGlmIChzcGFjZXMpIGdsb2J1c19mcmVlKGVuY29kZWRfdXJsKTsKKysgICAgICAgICAg ICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNU SU9OKTsKKysKKysgICAgICAgIHsKKysgICAgICAgICAgICByZXN1bHQgPQorKyAgICAgICAgICAg ICAgICBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorKyAgICAgICAgICAgICAgICAg ICAgaGFuZGxlLAorKyAgICAgICAgICAgICAgICAgICAgIlJOVE8gJXMiIENSTEYsCisrICAgICAg ICAgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAg ICAgICAgICAgICAgICAgICAgdXNlcl9hcmcsCisrICAgICAgICAgICAgICAgICAgICBkZXN0X3Vy bC51cmxfcGF0aCk7CisrICAgICAgICB9CisrCisgICAgICAgICBnbG9idXNfdXJsX2Rlc3Ryb3ko JmRlc3RfdXJsKTsKKy0gICAgICAgIAorKworICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19T VUNDRVNTKQorICAgICAgICAgeworICAgICAgICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworICAg ICAgICAgfQorKyAgICAgICAgYnJlYWs7CisgICAgIH0KKy0gICAgYnJlYWs7CisrICAgIGNhc2Ug R0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX01LRElSOgorIAorLSAgICBjYXNlIEdMT0JV U19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9ERUxFVEU6CisrICAgICAgICB0YXJnZXQtPnN0YXRl ID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX05FRURfQ09NUExFVEU7CisgCistCXRhcmdldC0+ c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfTkVFRF9DT01QTEVURTsKKy0KKy0JdGFy Z2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfRklMRV9BQ1RJT05TOworLQor LQlnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKy0JICAgIGNsaWVu dF9oYW5kbGUsCistCSAgICB0YXJnZXQtPnVybF9zdHJpbmcsCistCSAgICB0YXJnZXQtPm1hc2ss CistCSAgICAiREVMRSAlcyIgQ1JMRiwKKy0JICAgIHBhdGhuYW1lKTsKKy0KKy0JaWYoY2xpZW50 X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CistCSAg ICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFS VCB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFO RExFX0ZBSUxVUkUpCistCXsKKy0JICAgIGJyZWFrOworLQl9CistCistCWdsb2J1c19hc3NlcnQo Y2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JCSAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRM RV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTik7CistCistCXJlc3VsdCA9CistCSAgICBnbG9idXNf ZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorLQkJaGFuZGxlLAorLQkJIkRFTEUgJXMiIENSTEYs CistCQlnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorLQkJdXNlcl9hcmcs CistCQlwYXRobmFtZSk7CistCistCWlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0Jewor LQkgICAgZ290byByZXN1bHRfZmF1bHQ7CistCX0KKy0JYnJlYWs7CisrICAgICAgICB0YXJnZXQt Pm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19GSUxFX0FDVElPTlM7CisgCistICAg IGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1JORlI6CisrICAgICAgICBnbG9i dXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKysgICAgICAgICAgICBjbGll bnRfaGFuZGxlLAorKyAgICAgICAgICAgIHRhcmdldC0+dXJsX3N0cmluZywKKysgICAgICAgICAg ICB0YXJnZXQtPm1hc2ssCisrICAgICAgICAgICAgIk1LRCAlcyIgQ1JMRiwKKysgICAgICAgICAg ICBwYXRobmFtZSk7CisgCistCXRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJH RVRfU0VUVVBfUk5UTzsKKy0KKy0JdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01E X01BU0tfRklMRV9BQ1RJT05TOworLQorLQlnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3Rp ZnlfY29tbWFuZCgKKy0JICAgIGNsaWVudF9oYW5kbGUsCistCSAgICB0YXJnZXQtPnVybF9zdHJp bmcsCistCSAgICB0YXJnZXQtPm1hc2ssCistCSAgICAiUk5GUiAlcyIgQ1JMRiwKKy0JICAgIHBh dGhuYW1lKTsKKy0KKy0JaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX0FCT1JUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNf RlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCistCXsKKy0JICAgIGJyZWFrOwor LQl9CistCistCWdsb2J1c19hc3NlcnQoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JCSAgICAg IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTik7CistCist CXJlc3VsdCA9CistCSAgICBnbG9idXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorLQkJaGFu ZGxlLAorLQkJIlJORlIgJXMiIENSTEYsCistCQlnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNl X2NhbGxiYWNrLAorLQkJdXNlcl9hcmcsCistCQlwYXRobmFtZSk7CistCistCWlmKHJlc3VsdCAh PSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byByZXN1bHRfZmF1bHQ7CistCX0KKy0J YnJlYWs7CisrICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfQUJPUlQgfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorKyAgICAgICAgICAgIGNsaWVu dF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorKyAg ICAgICAgeworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorIAorLSAgICBjYXNlIEdM T0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9STlRPOgorLSAgICB7CistICAgICAgICBnbG9i dXNfdXJsX3QgICAgICAgICAgICAgICAgICAgIGRlc3RfdXJsOworLQlnbG9idXNfYm9vbF90CQkJ cmZjMTczOF91cmw7CistCWdsb2J1c19mdHBfY2xpZW50X2hhbmRsZWF0dHJfdCAgaGFuZGxlX2F0 dHI7CistCQorLQloYW5kbGVfYXR0ciA9ICZjbGllbnRfaGFuZGxlLT5hdHRyOworLQorLQl0YXJn ZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX05FRURfQ09NUExFVEU7CistCist CXRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX0ZJTEVfQUNUSU9OUzsK Ky0KKy0JcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl9nZXRfcmZjMTczOF91 cmwoJmhhbmRsZV9hdHRyLAorLQkJCQkJCSAgICAgJnJmYzE3MzhfdXJsKTsKKy0JaWYocmVzdWx0 ICE9IEdMT0JVU19TVUNDRVNTKQorLQl7CistCSAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKy0JfQor LQkKKy0gICAgICAgIGlmKHJmYzE3MzhfdXJsPT1HTE9CVVNfVFJVRSkKKy0JeworLQkgICAgcmVz dWx0ID0gKGdsb2J1c19yZXN1bHRfdCkgZ2xvYnVzX3VybF9wYXJzZV9yZmMxNzM4KGNsaWVudF9o YW5kbGUtPmRlc3RfdXJsLAorLSAgICAgICAgICAgICAgICAmZGVzdF91cmwpOworLQl9CistCWVs c2UKKy0JeworLQkgICAgcmVzdWx0ID0gKGdsb2J1c19yZXN1bHRfdCkgZ2xvYnVzX3VybF9wYXJz ZShjbGllbnRfaGFuZGxlLT5kZXN0X3VybCwgCistCSAgICAgICAgJmRlc3RfdXJsKTsKKy0JfQor KyAgICAgICAgZ2xvYnVzX2Fzc2VydChjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAg ICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5F Q1RJT04pOworKworKyAgICAgICAgcmVzdWx0ID0KKysgICAgICAgICAgICBnbG9idXNfZnRwX2Nv bnRyb2xfc2VuZF9jb21tYW5kKAorKyAgICAgICAgICAgICAgICBoYW5kbGUsCisrICAgICAgICAg ICAgICAgICJNS0QgJXMiIENSTEYsCisrICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGll bnRfcmVzcG9uc2VfY2FsbGJhY2ssCisrICAgICAgICAgICAgICAgIHVzZXJfYXJnLAorKyAgICAg ICAgICAgICAgICBwYXRobmFtZSk7CisgCisgICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NV Q0NFU1MpCistCXsKKy0JICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworLQl9CistCistCWdsb2J1c19p X2Z0cF9jbGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorLQkgICAgY2xpZW50X2hhbmRsZSwK Ky0JICAgIHRhcmdldC0+dXJsX3N0cmluZywKKy0JICAgIHRhcmdldC0+bWFzaywKKy0JICAgICJS TlRPICVzIiBDUkxGLAorLQkgICAgZGVzdF91cmwudXJsX3BhdGgpOworLQorLQlpZihjbGllbnRf aGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKy0JICAg IGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJU IHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfRkFJTFVSRSkKKy0JeworLSAgICAgICAgICAgIGdsb2J1c191cmxfZGVzdHJveSgmZGVzdF91 cmwpOworLQkgICAgYnJlYWs7CistCX0KKy0KKy0JZ2xvYnVzX2Fzc2VydChjbGllbnRfaGFuZGxl LT5zdGF0ZSA9PQorLQkJICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRV UF9DT05ORUNUSU9OKTsKKy0KKy0JeworLQkgICAgcmVzdWx0ID0KKy0JCWdsb2J1c19mdHBfY29u dHJvbF9zZW5kX2NvbW1hbmQoCistCQkgICAgaGFuZGxlLAorLQkJICAgICJSTlRPICVzIiBDUkxG LAorLQkJICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCistCQkgICAg dXNlcl9hcmcsCistCQkgICAgZGVzdF91cmwudXJsX3BhdGgpOworLQl9CisrICAgICAgICB7Cisr ICAgICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisrICAgICAgICB9CisrICAgICAgICBicmVh azsKKyAKKy0gICAgICAgIGdsb2J1c191cmxfZGVzdHJveSgmZGVzdF91cmwpOworKyAgICBjYXNl IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9STURJUjoKKyAKKy0JaWYocmVzdWx0ICE9 IEdMT0JVU19TVUNDRVNTKQorLQl7CistCSAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKy0JfQorLQli cmVhazsKKy0gICAgfQorLSAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9N S0RJUjoKKysgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRf TkVFRF9DT01QTEVURTsKKyAKKy0JdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RB UkdFVF9ORUVEX0NPTVBMRVRFOworLQorLQl0YXJnZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVO VF9DTURfTUFTS19GSUxFX0FDVElPTlM7CistCistCWdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2lu X25vdGlmeV9jb21tYW5kKAorLQkgICAgY2xpZW50X2hhbmRsZSwKKy0JICAgIHRhcmdldC0+dXJs X3N0cmluZywKKy0JICAgIHRhcmdldC0+bWFzaywKKy0JICAgICJNS0QgJXMiIENSTEYsCistCSAg ICBwYXRobmFtZSk7CistCistCWlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBf Q0xJRU5UX0hBTkRMRV9BQk9SVCB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xP QlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0 YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorLQl7CistCSAgICBicmVh azsKKy0JfQorLQorLQlnbG9idXNfYXNzZXJ0KGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCQkg ICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04pOwor LQorLQlyZXN1bHQgPQorLQkgICAgZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKy0J CWhhbmRsZSwKKy0JCSJNS0QgJXMiIENSTEYsCistCQlnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3Bv bnNlX2NhbGxiYWNrLAorLQkJdXNlcl9hcmcsCistCQlwYXRobmFtZSk7CistCistCWlmKHJlc3Vs dCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byByZXN1bHRfZmF1bHQ7CistCX0K Ky0JYnJlYWs7CisrICAgICAgICB0YXJnZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURf TUFTS19GSUxFX0FDVElPTlM7CisgCistICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VU X1NFVFVQX1JNRElSOgorKyAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5 X2NvbW1hbmQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZSwKKysgICAgICAgICAgICB0YXJn ZXQtPnVybF9zdHJpbmcsCisrICAgICAgICAgICAgdGFyZ2V0LT5tYXNrLAorKyAgICAgICAgICAg ICJSTUQgJXMiIENSTEYsCisrICAgICAgICAgICAgcGF0aG5hbWUpOworKworKyAgICAgICAgaWYo Y2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8 CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRf SEFORExFX1JFU1RBUlQgfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBH TE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKysgICAgICAgIHsKKysgICAgICAgICAg ICBicmVhazsKKysgICAgICAgIH0KKysKKysgICAgICAgIGdsb2J1c19hc3NlcnQoY2xpZW50X2hh bmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRf SEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OKTsKKysKKysgICAgICAgIHJlc3VsdCA9Cisr ICAgICAgICAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKysgICAgICAgICAg ICAgICAgaGFuZGxlLAorKyAgICAgICAgICAgICAgICAiUk1EICVzIiBDUkxGLAorKyAgICAgICAg ICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAgICAgICAg ICAgICAgICB1c2VyX2FyZywKKysgICAgICAgICAgICAgICAgcGF0aG5hbWUpOworIAorLQl0YXJn ZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX05FRURfQ09NUExFVEU7CistCist CXRhcmdldC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX0ZJTEVfQUNUSU9OUzsK Ky0KKy0JZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCistCSAgICBj bGllbnRfaGFuZGxlLAorLQkgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorLQkgICAgdGFyZ2V0LT5t YXNrLAorLQkgICAgIlJNRCAlcyIgQ1JMRiwKKy0JICAgIHBhdGhuYW1lKTsKKy0KKy0JaWYoY2xp ZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8Cist CSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVT VEFSVCB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRf SEFORExFX0ZBSUxVUkUpCistCXsKKy0JICAgIGJyZWFrOworLQl9CistCistCWdsb2J1c19hc3Nl cnQoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JCSAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hB TkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTik7CistCistCXJlc3VsdCA9CistCSAgICBnbG9i dXNfZnRwX2NvbnRyb2xfc2VuZF9jb21tYW5kKAorLQkJaGFuZGxlLAorLQkJIlJNRCAlcyIgQ1JM RiwKKy0JCWdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2ssCistCQl1c2VyX2Fy ZywKKy0JCXBhdGhuYW1lKTsKKy0KKy0JaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorLQl7 CistCSAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKy0JfQorLQlicmVhazsKKysgICAgICAgIGlmKHJl c3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIHJl c3VsdF9mYXVsdDsKKysgICAgICAgIH0KKysgICAgICAgIGJyZWFrOworIAorICAgICBjYXNlIEdM T0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9DV0Q6CisgCistCXRhcmdldC0+c3RhdGUgPSBH TE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfTkVFRF9DT01QTEVURTsKKysgICAgICAgIHRhcmdldC0+ c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfTkVFRF9DT01QTEVURTsKKyAKKy0JdGFy Z2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfRklMRV9BQ1RJT05TOworKyAg ICAgICAgdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfRklMRV9BQ1RJ T05TOworIAorIC8qCistCWdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5k KAorLQkgICAgY2xpZW50X2hhbmRsZSwKKy0JICAgIHRhcmdldC0+dXJsX3N0cmluZywKKy0JICAg IHRhcmdldC0+bWFzaywKKy0JICAgICJNTFNUICVzIiBDUkxGLAorLQkgICAgcGF0aG5hbWUpOwor KyAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCisrICAg ICAgICAgICAgY2xpZW50X2hhbmRsZSwKKysgICAgICAgICAgICB0YXJnZXQtPnVybF9zdHJpbmcs CisrICAgICAgICAgICAgdGFyZ2V0LT5tYXNrLAorKyAgICAgICAgICAgICJNTFNUICVzIiBDUkxG LAorKyAgICAgICAgICAgIHBhdGhuYW1lKTsKKyAqLworIAorLQlpZihjbGllbnRfaGFuZGxlLT5z dGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKy0JICAgIGNsaWVudF9o YW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CistCSAg ICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVS RSkKKy0JeworLQkgICAgYnJlYWs7CistCX0KKy0KKy0JZ2xvYnVzX2Fzc2VydChjbGllbnRfaGFu ZGxlLT5zdGF0ZSA9PQorLQkJICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9T RVRVUF9DT05ORUNUSU9OKTsKKy0KKy0JcmVzdWx0ID0KKy0JICAgIGdsb2J1c19mdHBfY29udHJv bF9zZW5kX2NvbW1hbmQoCistCQloYW5kbGUsCistCQkiQ1dEICVzIiBDUkxGLAorLQkJZ2xvYnVz X2lfZnRwX2NsaWVudF9yZXNwb25zZV9jYWxsYmFjaywKKy0JCXVzZXJfYXJnLAorLQkJcGF0aG5h bWUpOworLQorLQlpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8g cmVzdWx0X2ZhdWx0OworLQl9CistCWJyZWFrOworKyAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+ c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CisrICAgICAgICAgICAg Y2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQg fHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVO VF9IQU5ETEVfRkFJTFVSRSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBicmVhazsKKysgICAg ICAgIH0KKysKKysgICAgICAgIGdsb2J1c19hc3NlcnQoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0K KysgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9T RVRVUF9DT05ORUNUSU9OKTsKKysKKysgICAgICAgIHJlc3VsdCA9CisrICAgICAgICAgICAgZ2xv YnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKysgICAgICAgICAgICAgICAgaGFuZGxlLAor KyAgICAgICAgICAgICAgICAiQ1dEICVzIiBDUkxGLAorKyAgICAgICAgICAgICAgICBnbG9idXNf aV9mdHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorKyAgICAgICAgICAgICAgICB1c2VyX2Fy ZywKKysgICAgICAgICAgICAgICAgcGF0aG5hbWUpOworKworKyAgICAgICAgaWYocmVzdWx0ICE9 IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdvdG8gcmVzdWx0X2Zh dWx0OworKyAgICAgICAgfQorKyAgICAgICAgYnJlYWs7CisgCisgICAgIGNhc2UgR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX1NFVFVQX01EVE06CisgCistCXRhcmdldC0+c3RhdGUgPSBHTE9CVVNf RlRQX0NMSUVOVF9UQVJHRVRfTkVFRF9DT01QTEVURTsKKy0KKy0JdGFyZ2V0LT5tYXNrID0gR0xP QlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfRklMRV9BQ1RJT05TOworLQorLQlnbG9idXNfaV9mdHBf Y2xpZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKy0JICAgIGNsaWVudF9oYW5kbGUsCistCSAg ICB0YXJnZXQtPnVybF9zdHJpbmcsCistCSAgICB0YXJnZXQtPm1hc2ssCistCSAgICAiTURUTSAl cyIgQ1JMRiwKKy0JICAgIHBhdGhuYW1lKTsKKy0KKy0JaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CistCSAgICBjbGllbnRfaGFuZGxl LT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorLQkgICAgY2xp ZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCist CXsKKy0JICAgIGJyZWFrOworLQl9CistCistCWdsb2J1c19hc3NlcnQoY2xpZW50X2hhbmRsZS0+ c3RhdGUgPT0KKy0JCSAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBf Q09OTkVDVElPTik7CistCistCXJlc3VsdCA9CistCSAgICBnbG9idXNfZnRwX2NvbnRyb2xfc2Vu ZF9jb21tYW5kKAorLQkJaGFuZGxlLAorLQkJIk1EVE0gJXMiIENSTEYsCistCQlnbG9idXNfaV9m dHBfY2xpZW50X3Jlc3BvbnNlX2NhbGxiYWNrLAorLQkJdXNlcl9hcmcsCistCQlwYXRobmFtZSk7 CistCistCWlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JeworLQkgICAgZ290byByZXN1 bHRfZmF1bHQ7CistCX0KKy0JYnJlYWs7CisrICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVT X0ZUUF9DTElFTlRfVEFSR0VUX05FRURfQ09NUExFVEU7CisrCisrICAgICAgICB0YXJnZXQtPm1h c2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19GSUxFX0FDVElPTlM7CisrCisrICAgICAg ICBnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKysgICAgICAgICAg ICBjbGllbnRfaGFuZGxlLAorKyAgICAgICAgICAgIHRhcmdldC0+dXJsX3N0cmluZywKKysgICAg ICAgICAgICB0YXJnZXQtPm1hc2ssCisrICAgICAgICAgICAgIk1EVE0gJXMiIENSTEYsCisrICAg ICAgICAgICAgcGF0aG5hbWUpOworKworKyAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CisrICAgICAgICAgICAgY2xpZW50 X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwKKysg ICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfRkFJTFVSRSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0K KysKKysgICAgICAgIGdsb2J1c19hc3NlcnQoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAg ICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9D T05ORUNUSU9OKTsKKysKKysgICAgICAgIHJlc3VsdCA9CisrICAgICAgICAgICAgZ2xvYnVzX2Z0 cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKysgICAgICAgICAgICAgICAgaGFuZGxlLAorKyAgICAg ICAgICAgICAgICAiTURUTSAlcyIgQ1JMRiwKKysgICAgICAgICAgICAgICAgZ2xvYnVzX2lfZnRw X2NsaWVudF9yZXNwb25zZV9jYWxsYmFjaywKKysgICAgICAgICAgICAgICAgdXNlcl9hcmcsCisr ICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsKKysKKysgICAgICAgIGlmKHJlc3VsdCAhPSBHTE9C VVNfU1VDQ0VTUykKKysgICAgICAgIHsKKysgICAgICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsK KysgICAgICAgIH0KKysgICAgICAgIGJyZWFrOworIAorICAgICBjYXNlIEdMT0JVU19GVFBfQ0xJ RU5UX1RBUkdFVF9TRVRVUF9HRVQ6CistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFu ZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRV UF9DT05ORUNUSU9OKTsKKysgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAgICAgY2xp ZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04pOworIAorICAgICAgICAgaWYoIXRhcmdldC0+ZGVs YXllZF9wYXN2KQorICAgICAgICAgeworQEAgLTM5NTIsNDYgKzM5NTIsNDYgQEAgcmVkbzoKKyAg ICAgICAgICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKKyAgICAgICAgIH0KKyAKKy0JdGFy Z2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9SRVRSOworKyAgICAgICAgdGFy Z2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9SRVRSOworIAorLQlpZihyZXN1 bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworLQl9 CisrICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICB7CisrICAg ICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisrICAgICAgICB9CisgCistCWNsaWVudF9oYW5k bGUtPnN0YXRlID0KKy0JICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfUkVUUl9P Ul9FUkVUOworKyAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPQorKyAgICAgICAgICAgIEdM T0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfUkVUUl9PUl9FUkVUOworIAorLQl0YXJnZXQt Pm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19GSUxFX0FDVElPTlM7CisrICAgICAg ICB0YXJnZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19GSUxFX0FDVElPTlM7 CisgCisgICAgICAgICBpZih0YXJnZXQtPmF0dHItPm1vZHVsZV9hbGdfc3RyICE9IEdMT0JVU19O VUxMKQorLQl7CistCSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfY29tbWFu ZCgKKy0JCWNsaWVudF9oYW5kbGUsCistCQl0YXJnZXQtPnVybF9zdHJpbmcsCistCQl0YXJnZXQt Pm1hc2ssCistCQkiRVJFVCAlcyAlcyIgQ1JMRiwKKysgICAgICAgIHsKKysgICAgICAgICAgICBn bG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfY29tbWFuZCgKKysgICAgICAgICAgICAg ICAgY2xpZW50X2hhbmRsZSwKKysgICAgICAgICAgICAgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAor KyAgICAgICAgICAgICAgICB0YXJnZXQtPm1hc2ssCisrICAgICAgICAgICAgICAgICJFUkVUICVz ICVzIiBDUkxGLAorICAgICAgICAgICAgICAgICB0YXJnZXQtPmF0dHItPm1vZHVsZV9hbGdfc3Ry LAorLQkJcGF0aG5hbWUpOworLQl9CistCWVsc2UKKy0JeworLQkgICAgZ2xvYnVzX2lfZnRwX2Ns aWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCistCQljbGllbnRfaGFuZGxlLAorLQkJdGFyZ2V0 LT51cmxfc3RyaW5nLAorLQkJdGFyZ2V0LT5tYXNrLAorLQkJIlJFVFIgJXMiIENSTEYsCistCQlw YXRobmFtZSk7CistCX0KKy0JaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9D TElFTlRfSEFORExFX0FCT1JUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9C VVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3Rh dGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCistCXsKKy0JICAgIGJyZWFr OworLQl9CistCistCWdsb2J1c19hc3NlcnQoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JCSAg ICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfUkVUUl9PUl9FUkVUKTsKKysgICAg ICAgICAgICAgICAgcGF0aG5hbWUpOworKyAgICAgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAg ICAgeworKyAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25vdGlmeV9jb21t YW5kKAorKyAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLAorKyAgICAgICAgICAgICAgICB0 YXJnZXQtPnVybF9zdHJpbmcsCisrICAgICAgICAgICAgICAgIHRhcmdldC0+bWFzaywKKysgICAg ICAgICAgICAgICAgIlJFVFIgJXMiIENSTEYsCisrICAgICAgICAgICAgICAgIHBhdGhuYW1lKTsK KysgICAgICAgIH0KKysgICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19G VFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0 YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CisrICAgICAgICAgICAg Y2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUp CisrICAgICAgICB7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrCisrICAgICAg ICBnbG9idXNfYXNzZXJ0KGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgICAg ICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfUkVUUl9PUl9FUkVUKTsKKyAK KyAKKyAgICAgICAgIGlmKCEwKQorQEAgLTQwMTcsNyArNDAxNyw3IEBAIHJlZG86CisgICAgICAg ICAgICAgICAgICAgICAgICAgdXNlcl9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGF0 aG5hbWUpOworICAgICAgICAgICAgIH0KKy0gICAgCisrCisgICAgICAgICAgICAgaWYocmVzdWx0 ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg IGdvdG8gcmVzdWx0X2ZhdWx0OworQEAgLTQwMjcsMTIgKzQwMjcsMTIgQEAgcmVkbzoKKyAgICAg ICAgIGlmKGNsaWVudF9oYW5kbGUtPmF0dHIucGlwZWxpbmVfY2FsbGJhY2spCisgICAgICAgICB7 CisgICAgICAgICAgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAgICAgICAgICBhZGRlZCA9IEdM T0JVU19UUlVFOworLSAgICAgICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgIHdo aWxlKGFkZGVkKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xv YnVzX2xfZnRwX2NsaWVudF9wcF9zcmNfYWRkKAorICAgICAgICAgICAgICAgICAgICAgY2xpZW50 X2hhbmRsZSwKKy0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSwgCisrICAgICAgICAgICAgICAg ICAgICBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICB0YXJnZXQsCisgICAgICAgICAgICAg ICAgICAgICAmYWRkZWQpOworICAgICAgICAgICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NV Q0NFU1MpCitAQCAtNDA0NCwxMSArNDA0NCwxMSBAQCByZWRvOgorICAgICAgICAgYnJlYWs7Cisg CisgICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1BVVDoKKy0JZ2xvYnVz X2Fzc2VydCgKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCSAgICBHTE9CVVNfRlRQ X0NMSUVOVF9IQU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKysgICAgICAgIGdsb2J1c19h c3NlcnQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAg ICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9TRVRVUF9DT05ORUNUSU9OKTsKKyAKKy0g ICAgICAgIGlmKCF0YXJnZXQtPmRlbGF5ZWRfcGFzdikgICAgICAgCisrICAgICAgICBpZighdGFy Z2V0LT5kZWxheWVkX3Bhc3YpCisgICAgICAgICB7CisgICAgICAgICAgICAgcmVzdWx0ID0KKyAg ICAgICAgICAgICAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2RhdGFfY29ubmVjdF93cml0ZSh0YXJn ZXQtPmNvbnRyb2xfaGFuZGxlLAorQEAgLTQwNjAsNDcgKzQwNjAsNDcgQEAgcmVkbzoKKyAgICAg ICAgICAgICByZXN1bHQgPSBHTE9CVVNfU1VDQ0VTUzsKKyAgICAgICAgIH0KKyAKKy0JdGFyZ2V0 LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TVE9SOworKyAgICAgICAgdGFyZ2V0 LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TVE9SOworIAorLQlpZihyZXN1bHQg IT0gR0xPQlVTX1NVQ0NFU1MpCistCXsKKy0JICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworLQl9Cisr ICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICB7CisrICAgICAg ICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisrICAgICAgICB9CisgCistCWNsaWVudF9oYW5kbGUt PnN0YXRlID0KKy0JICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NUT1JfT1JfRVNU TzsKKysgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID0KKysgICAgICAgICAgICBHTE9CVVNf RlRQX0NMSUVOVF9IQU5ETEVfREVTVF9TVE9SX09SX0VTVE87CisgCistCXRhcmdldC0+bWFzayA9 IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX0ZJTEVfQUNUSU9OUzsKKysgICAgICAgIHRhcmdl dC0+bWFzayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX0ZJTEVfQUNUSU9OUzsKKyAKKy0J aWYodGFyZ2V0LT5hdHRyLT5tb2R1bGVfYWxnX3N0ciAhPSBHTE9CVVNfTlVMTCkKKy0JeworLQkg ICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2NvbW1hbmQoCistCQljbGllbnRf aGFuZGxlLAorLQkJdGFyZ2V0LT51cmxfc3RyaW5nLAorLQkJdGFyZ2V0LT5tYXNrLAorLQkJIkVT VE8gJXMgJXMiIENSTEYsCisrICAgICAgICBpZih0YXJnZXQtPmF0dHItPm1vZHVsZV9hbGdfc3Ry ICE9IEdMT0JVU19OVUxMKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9j bGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorKyAgICAgICAgICAgICAgICBjbGllbnRfaGFu ZGxlLAorKyAgICAgICAgICAgICAgICB0YXJnZXQtPnVybF9zdHJpbmcsCisrICAgICAgICAgICAg ICAgIHRhcmdldC0+bWFzaywKKysgICAgICAgICAgICAgICAgIkVTVE8gJXMgJXMiIENSTEYsCisg ICAgICAgICAgICAgICAgIHRhcmdldC0+YXR0ci0+bW9kdWxlX2FsZ19zdHIsCistCQlwYXRobmFt ZSk7CistCX0KKy0JZWxzZQorLQl7CistCSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3BsdWdpbl9u b3RpZnlfY29tbWFuZCgKKy0JCWNsaWVudF9oYW5kbGUsCistCQl0YXJnZXQtPnVybF9zdHJpbmcs CistCQl0YXJnZXQtPm1hc2ssCistCQkiJXMgJXMiIENSTEYsCistCQl0YXJnZXQtPmF0dHItPmFw cGVuZCA/ICJBUFBFIiA6ICJTVE9SIiwKKy0JCXBhdGhuYW1lKTsKKy0JfQorLQlpZihjbGllbnRf aGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKy0JICAg IGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJU IHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfRkFJTFVSRSkKKy0JeworLQkgICAgYnJlYWs7CistCX0KKy0KKy0JZ2xvYnVzX2Fzc2VydChj bGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkJICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X0RFU1RfU1RPUl9PUl9FU1RPKTsKKysgICAgICAgICAgICAgICAgcGF0aG5hbWUpOworKyAgICAg ICAgfQorKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIGdsb2J1c19pX2Z0 cF9jbGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorKyAgICAgICAgICAgICAgICBjbGllbnRf aGFuZGxlLAorKyAgICAgICAgICAgICAgICB0YXJnZXQtPnVybF9zdHJpbmcsCisrICAgICAgICAg ICAgICAgIHRhcmdldC0+bWFzaywKKysgICAgICAgICAgICAgICAgIiVzICVzIiBDUkxGLAorKyAg ICAgICAgICAgICAgICB0YXJnZXQtPmF0dHItPmFwcGVuZCA/ICJBUFBFIiA6ICJTVE9SIiwKKysg ICAgICAgICAgICAgICAgcGF0aG5hbWUpOworKyAgICAgICAgfQorKyAgICAgICAgaWYoY2xpZW50 X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CisrICAg ICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X1JFU1RBUlQgfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNf RlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBicmVh azsKKysgICAgICAgIH0KKysKKysgICAgICAgIGdsb2J1c19hc3NlcnQoY2xpZW50X2hhbmRsZS0+ c3RhdGUgPT0KKysgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X0RFU1RfU1RPUl9PUl9FU1RPKTsKKyAKKyAgICAgICAgIGlmKCEwKQorICAgICAgICAgeworQEAg LTQxNDQsNyArNDE0NCw3IEBAIHJlZG86CisgICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5hdHRy LnBpcGVsaW5lX2NhbGxiYWNrKQorICAgICAgICAgeworICAgICAgICAgICAgIGdsb2J1c19ib29s X3QgICAgICAgICAgICAgICAgICAgYWRkZWQgPSBHTE9CVVNfVFJVRTsKKy0gICAgICAgICAgICAg ICAgICAgICAgICAKKysKKyAgICAgICAgICAgICB3aGlsZShhZGRlZCkKKyAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19sX2Z0cF9jbGllbnRfcHBfZHN0X2Fk ZCgKK0BAIC00MTU5LDM2ICs0MTU5LDM2IEBAIHJlZG86CisgICAgICAgICAgICAgfQorICAgICAg ICAgfQorIAorLQlicmVhazsKKysgICAgICAgIGJyZWFrOworIAorICAgICBjYXNlIEdMT0JVU19G VFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9UUkFOU0ZFUl9ERVNUOgorLQlnbG9idXNfYXNzZXJ0KAor LQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hB TkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworKyAgICAgICAgZ2xvYnVzX2Fzc2VydCgKKysg ICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JVU19G VFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworIAorLQkvKiBUaGUgZGVz dGluYXRpb24gaXMgcHJlcGFyZWQgZmlyc3QuIFdlIHNlbmQgYWxsCistCSAqIG9mIHRoZSBjb21t YW5kcyB3ZSBuZWVkIHRvLCBpbmNsdWRpbmcgdGhlIFNUT1IKKy0JICogb3IgRVNUTywgYW5kIHRo ZW4gdHVybiBvdXIgYXR0ZW50aW9uIHRvIHRoZQorLQkgKiBzb3VyY2UuCistCSAqLworLQl0YXJn ZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19GSUxFX0FDVElPTlM7CisrICAg ICAgICAvKiBUaGUgZGVzdGluYXRpb24gaXMgcHJlcGFyZWQgZmlyc3QuIFdlIHNlbmQgYWxsCisr ICAgICAgICAgKiBvZiB0aGUgY29tbWFuZHMgd2UgbmVlZCB0bywgaW5jbHVkaW5nIHRoZSBTVE9S CisrICAgICAgICAgKiBvciBFU1RPLCBhbmQgdGhlbiB0dXJuIG91ciBhdHRlbnRpb24gdG8gdGhl CisrICAgICAgICAgKiBzb3VyY2UuCisrICAgICAgICAgKi8KKysgICAgICAgIHRhcmdldC0+bWFz ayA9IEdMT0JVU19GVFBfQ0xJRU5UX0NNRF9NQVNLX0ZJTEVfQUNUSU9OUzsKKyAKKyAgICAgICAg IGlmKGdyaWRmdHAyX2dldHB1dCkKKyAgICAgICAgIHsKKy0gICAgICAgICAgICByZXN1bHQgPSAK KysgICAgICAgICAgICByZXN1bHQgPQorICAgICAgICAgICAgICAgICBnbG9idXNfbF9mdHBfY2xp ZW50X3NlbmRfcHV0KHRhcmdldCwgcGF0aG5hbWUsIEdMT0JVU19UUlVFKTsKKyAgICAgICAgICAg ICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAg CisrCisgICAgICAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9D TElFTlRfSEFORExFX0FCT1JUIHx8CisgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3Rh dGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQgfHwKKyAgICAgICAgICAgICAg ICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVS RSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg IH0KKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBpZihnbG9idXNfaV9mdHBfY2xpZW50 X2Nhbl9yZXVzZV9kYXRhX2Nvbm4oY2xpZW50X2hhbmRsZSkpCisgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAvKiBJbiB0aGlzIGNhc2Ugd2UgZG8gbm90IGV4cGVjdCBhIDEyNyByZXBs eS4KK0BAIC00MTk4LDcgKzQxOTgsNyBAQCByZWRvOgorICAgICAgICAgICAgIGVsc2UKKyAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NM SUVOVF9UQVJHRVRfR0VUUFVUX1BBU1ZfVFJBTlNGRVI7CistICAgICAgICAgICAgCisrCisgICAg ICAgICAgICAgICAgIC8qIEluIHRoaXMgY2FzZSB3ZSBoYXZlIHRvIHdhaXQgZm9yIHRoZSAxMjcg cmVwbHkKKyAgICAgICAgICAgICAgICAgICogYmVmb3JlIHdlIGNhbiBzZXR1cCB0aGUgdHJhbnNm ZXIgYXQgdGhlIHNvdXJjZS4KKyAgICAgICAgICAgICAgICAgICovCitAQCAtNDIyNiwxOSArNDIy NiwxOSBAQCByZWRvOgorICAgICAgICAgICAgICAgICAgICAgIlNUT1IgJXMiIENSTEYsCisgICAg ICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAg IAorKworICAgICAgICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBf Q0xJRU5UX0hBTkRMRV9BQk9SVCB8fAorICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5z dGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAorICAgICAgICAgICAg ICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJ TFVSRSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg ICAgIH0KKy0gICAgICAgICAgICAKKysKKyAgICAgICAgICAgICBnbG9idXNfYXNzZXJ0KGNsaWVu dF9oYW5kbGUtPnN0YXRlID09CisgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hB TkRMRV9ERVNUX1NFVFVQX0NPTk5FQ1RJT04pOworLSAgICAgICAgICAgIAorKworICAgICAgICAg ICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU1RPUjsKKy0gICAg ICAgICAgICAKKysKKyAgICAgICAgICAgICBpZih0YXJnZXQtPmF0dHItPm1vZHVsZV9hbGdfc3Ry ICE9IEdMT0JVU19OVUxMKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgcmVzdWx0 ID0gZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKK0BAIC00MjY4LDcgKzQyNjgsNyBA QCByZWRvOgorICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGk7CisgICAgICAgICAgICAgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgYWRk ZWQgPSBHTE9CVVNfVFJVRTsKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF91 cmxfZW50X3QgKiB1cmxfZW50OworLSAgICAKKysKKyAgICAgICAgICAgICAgICAgLyogYWRkIHRo ZSBvbmUgd2UganVzdCBzZW50IHRvIHRoZSByZXNwb25zZSBxdWV1ZSAqLworICAgICAgICAgICAg ICAgICB1cmxfZW50ID0gZ2xvYnVzX21hbGxvYyhzaXplb2YoZ2xvYnVzX2lfZnRwX2NsaWVudF91 cmxfZW50X3QpKTsKKyAgICAgICAgICAgICAgICAgdXJsX2VudC0+c291cmNlX3VybCA9IE5VTEw7 CitAQCAtNDI3OSwxMiArNDI3OSwxMiBAQCByZWRvOgorICAgICAgICAgICAgICAgICAgICAgY2xp ZW50X2hhbmRsZS0+YXR0ci5yZmMxNzM4X3VybCk7CisgICAgICAgICAgICAgICAgIGdsb2J1c19m aWZvX2VucXVldWUoCisgICAgICAgICAgICAgICAgICAgICAmY2xpZW50X2hhbmRsZS0+ZHN0X3Jl c3BvbnNlX3BlbmRpbmdfcXVldWUsIHVybF9lbnQpOworLSAgICAKKysKKyAgICAgICAgICAgICAg ICAgY2xpZW50X2hhbmRsZS0+bm9fY2FsbGJhY2tfY291bnQrKzsKKyAgICAgICAgICAgICAgICAg Y2xpZW50X2hhbmRsZS0+YXR0ci5waXBlbGluZV9kb25lID0gR0xPQlVTX0ZBTFNFOworLSAgICAg ICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgZm9yKAorLSAgICAgICAgICAgICAgICAg ICAgaSA9IDA7IAorKyAgICAgICAgICAgICAgICAgICAgaSA9IDA7CisgICAgICAgICAgICAgICAg ICAgICBhZGRlZCAmJiBpIDwgY2xpZW50X2hhbmRsZS0+YXR0ci5vdXRzdGFuZGluZ19jb21tYW5k czsKKyAgICAgICAgICAgICAgICAgICAgIGkrKykKKyAgICAgICAgICAgICAgICAgeworQEAgLTQz MDEsNyArNDMwMSw3IEBAIHJlZG86CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9 CisgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgIGlmKCF0YXJnZXQtPmRlbGF5ZWRf cGFzdiAmJiAhY2xpZW50X2hhbmRsZS0+c291cmNlLT5kZWxheWVkX3Bhc3YpCisgICAgICAgICB7 CisgICAgICAgICAgICAgdGFyZ2V0ID0gY2xpZW50X2hhbmRsZS0+c291cmNlOworQEAgLTQzMjIs MzQgKzQzMjIsMzQgQEAgcmVkbzoKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0K KyAgICAgICAgIH0KKy0JYnJlYWs7CisrICAgICAgICBicmVhazsKKyAKKyAgICAgY2FzZSBHTE9C VVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfVFJBTlNGRVJfU09VUkNFOgorLQlnbG9idXNfYXNz ZXJ0KAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JICAgIEdMT0JVU19GVFBfQ0xJ RU5UX0hBTkRMRV9TT1VSQ0VfU0VUVVBfQ09OTkVDVElPTik7CisrICAgICAgICBnbG9idXNfYXNz ZXJ0KAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAg R0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OKTsKKyAKKy0J Y2xpZW50X2hhbmRsZS0+c3RhdGUgPQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1RI SVJEX1BBUlRZX1RSQU5TRkVSOworKyAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPQorKyAg ICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9USElSRF9QQVJUWV9UUkFOU0ZFUjsK KyAKKy0JdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfRklMRV9BQ1RJ T05TOworKyAgICAgICAgdGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tf RklMRV9BQ1RJT05TOworIAorICAgICAgICAgaWYoZ3JpZGZ0cDJfZ2V0cHV0KQorICAgICAgICAg eworLSAgICAgICAgICAgIHJlc3VsdCA9IAorKyAgICAgICAgICAgIHJlc3VsdCA9CisgICAgICAg ICAgICAgICAgIGdsb2J1c19sX2Z0cF9jbGllbnRfc2VuZF9nZXQodGFyZ2V0LCBwYXRobmFtZSwg R0xPQlVTX0ZBTFNFKTsKKyAgICAgICAgICAgICBpZihyZXN1bHQgIT0gR0xPQlVTX1NVQ0NFU1Mp CisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKyAg ICAgICAgICAgICB9CistICAgICAgICAKKysKKyAgICAgICAgICAgICBpZihjbGllbnRfaGFuZGxl LT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKyAgICAgICAgICAg ICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVT VEFSVCB8fAorICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19G VFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgYnJlYWs7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAg IHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfUkVUUjsKKyAgICAgICAg IH0KKyAgICAgICAgIGVsc2UKK0BAIC00MzczLDcgKzQzNzMsNyBAQCByZWRvOgorICAgICAgICAg ICAgICAgICAgICAgIlJFVFIgJXMiIENSTEYsCisgICAgICAgICAgICAgICAgICAgICBwYXRobmFt ZSk7CisgICAgICAgICAgICAgfQorLSAgICAKKysKKyAgICAgICAgICAgICBpZihjbGllbnRfaGFu ZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKyAgICAgICAg ICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X1JFU1RBUlQgfHwKKyAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xP QlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCitAQCAtNDM4Miw5ICs0MzgyLDkgQEAgcmVk bzoKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZ2xvYnVzX2Fzc2VydChjbGllbnRfaGFu ZGxlLT5zdGF0ZSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX1RISVJEX1BBUlRZX1RSQU5TRkVSKTsKKy0gICAgCisrCisgICAgICAgICAgICAg dGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9SRVRSOworLSAgICAKKysK KyAgICAgICAgICAgICBpZih0YXJnZXQtPmF0dHItPm1vZHVsZV9hbGdfc3RyKQorICAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jb250cm9sX3NlbmRf Y29tbWFuZCgKK0BAIC00NDA4LDEzICs0NDA4LDEzIEBAIHJlZG86CisgICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKyAgICAgICAgICAgICB9CistICAg ICAgICAgICAgCisrCisgICAgICAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+YXR0ci5waXBlbGlu ZV9jYWxsYmFjaykKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGludCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaTsKKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2Jvb2xfdCAg ICAgICAgICAgICAgICAgICBhZGRlZCA9IEdMT0JVU19UUlVFOworICAgICAgICAgICAgICAgICBn bG9idXNfaV9mdHBfY2xpZW50X3VybF9lbnRfdCAqIHVybF9lbnQ7CistICAgIAorKworICAgICAg ICAgICAgICAgICAvKiBhZGQgdGhlIG9uZSB3ZSBqdXN0IHNlbnQgdG8gdGhlIHJlc3BvbnNlIHF1 ZXVlICovCisgICAgICAgICAgICAgICAgIHVybF9lbnQgPSBnbG9idXNfbWFsbG9jKHNpemVvZihn bG9idXNfaV9mdHBfY2xpZW50X3VybF9lbnRfdCkpOworICAgICAgICAgICAgICAgICB1cmxfZW50 LT5zb3VyY2VfdXJsID0gZ2xvYnVzX2xpYmNfc3RyZHVwKHRhcmdldC0+dXJsX3N0cmluZyk7CitA QCAtNDQyNSwxMiArNDQyNSwxMiBAQCByZWRvOgorICAgICAgICAgICAgICAgICAgICAgY2xpZW50 X2hhbmRsZS0+YXR0ci5yZmMxNzM4X3VybCk7CisgICAgICAgICAgICAgICAgIGdsb2J1c19maWZv X2VucXVldWUoCisgICAgICAgICAgICAgICAgICAgICAmY2xpZW50X2hhbmRsZS0+c3JjX3Jlc3Bv bnNlX3BlbmRpbmdfcXVldWUsIHVybF9lbnQpOworLSAgICAKKysKKyAgICAgICAgICAgICAgICAg Y2xpZW50X2hhbmRsZS0+bm9fY2FsbGJhY2tfY291bnQrKzsKKyAgICAgICAgICAgICAgICAgY2xp ZW50X2hhbmRsZS0+YXR0ci5waXBlbGluZV9kb25lID0gR0xPQlVTX0ZBTFNFOworLSAgICAgICAg ICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgZm9yKAorLSAgICAgICAgICAgICAgICAgICAg aSA9IDA7IAorKyAgICAgICAgICAgICAgICAgICAgaSA9IDA7CisgICAgICAgICAgICAgICAgICAg ICBhZGRlZCAmJiBpIDwgY2xpZW50X2hhbmRsZS0+YXR0ci5vdXRzdGFuZGluZ19jb21tYW5kczsK KyAgICAgICAgICAgICAgICAgICAgIGkrKykKKyAgICAgICAgICAgICAgICAgeworQEAgLTQ0NDYs MTcgKzQ0NDYsMTcgQEAgcmVkbzoKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0K KyAgICAgICAgIH0KKy0gICAgICAgIAorKworICAgICAgICAgYnJlYWs7CisgCisgICAgIGNhc2Ug R0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0dFVFBVVF9HRVQ6CistCWdsb2J1c19hc3Nl cnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OKTsKKysgICAgICAgIGdsb2J1c19hc3Nl cnQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBH TE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04pOworIAorICAg ICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPQorICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfU09VUkNFX1JFVFJfT1JfRVJFVDsKKy0gICAgICAgIAorKworICAgICAgICAg aWYodGFyZ2V0LT5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJPTF9NT0RFX0VYVEVOREVEX0JMT0NL IHx8CisgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X2Nhbl9yZXVzZV9kYXRhX2Nvbm4o Y2xpZW50X2hhbmRsZSkpCisgICAgICAgICB7CitAQCAtNDQ4OCwyMSArNDQ4OCwyMSBAQCByZWRv OgorICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRf R0VUUFVUX1BBU1ZfR0VUOworICAgICAgICAgfQorIAorLQl0YXJnZXQtPm1hc2sgPSBHTE9CVVNf RlRQX0NMSUVOVF9DTURfTUFTS19GSUxFX0FDVElPTlM7CistICAgICAgICBpZih0YXJnZXQtPm1v ZGUgPT0gR0xPQlVTX0ZUUF9DT05UUk9MX01PREVfRVhURU5ERURfQkxPQ0spIAorKyAgICAgICAg dGFyZ2V0LT5tYXNrID0gR0xPQlVTX0ZUUF9DTElFTlRfQ01EX01BU0tfRklMRV9BQ1RJT05TOwor KyAgICAgICAgaWYodGFyZ2V0LT5tb2RlID09IEdMT0JVU19GVFBfQ09OVFJPTF9NT0RFX0VYVEVO REVEX0JMT0NLKQorICAgICAgICAgeworICAgICAgICAgICAgIC8qIEluIGV4dGVuZGVkIGJsb2Nr IG1vZGUsIHdlIHdpbGwgYmUgdGhlIHBhc3NpdmUKKyAgICAgICAgICAgICAgKiBwYXJ0eS4gR0xP QlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX1BPUlQgaGFzIGFscmVhZHkKKyAgICAgICAgICAg ICAgKiBmaWxsZWQgaW4gY2xpZW50X2hhbmRsZS0+cGFzdl9hZGRyZXNzLgorICAgICAgICAgICAg ICAqLworLSAgICAgICAgICAgIHJlc3VsdCA9IAorKyAgICAgICAgICAgIHJlc3VsdCA9CisgICAg ICAgICAgICAgICAgIGdsb2J1c19sX2Z0cF9jbGllbnRfc2VuZF9nZXQodGFyZ2V0LCBwYXRobmFt ZSwgR0xPQlVTX0ZBTFNFKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGVsc2UKKyAgICAgICAgIHsK KyAgICAgICAgICAgICAvKiBJbiBhbGwgb3RoZXIgY2FzZXMgd2UgcHJlZmVyIHRvIGJlIGFjdGl2 ZS4KKyAgICAgICAgICAgICAgKi8KKy0gICAgICAgICAgICByZXN1bHQgPSAKKysgICAgICAgICAg ICByZXN1bHQgPQorICAgICAgICAgICAgICAgICBnbG9idXNfbF9mdHBfY2xpZW50X3NlbmRfZ2V0 KHRhcmdldCwgcGF0aG5hbWUsIEdMT0JVU19UUlVFKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGlm KHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKK0BAIC00NTEyLDkgKzQ1MTIsOSBAQCByZWRvOgor ICAgICAgICAgYnJlYWs7CisgCisgICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NF VFVQX0dFVFBVVF9QVVQ6CistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGllbnRfaGFuZGxlLT5z dGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVD VElPTik7CisrICAgICAgICBnbG9idXNfYXNzZXJ0KAorKyAgICAgICAgICAgIGNsaWVudF9oYW5k bGUtPnN0YXRlID09CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1Rf U0VUVVBfQ09OTkVDVElPTik7CisgCisgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9IEdM T0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NUT1JfT1JfRVNUTzsKKyAKK0BAIC00NTM5LDI2 ICs0NTM5LDI2IEBAIHJlZG86CisgICAgICAgICB7CisgICAgICAgICAgICAgdGFyZ2V0LT5zdGF0 ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9HRVRQVVRfUEFTVl9QVVQ7CisgICAgICAgICB9 CistIAorLQl0YXJnZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURfTUFTS19GSUxFX0FD VElPTlM7CisrCisrICAgICAgICB0YXJnZXQtPm1hc2sgPSBHTE9CVVNfRlRQX0NMSUVOVF9DTURf TUFTS19GSUxFX0FDVElPTlM7CisgICAgICAgICByZXN1bHQgPSBnbG9idXNfbF9mdHBfY2xpZW50 X3NlbmRfcHV0KHRhcmdldCwgcGF0aG5hbWUsIEdMT0JVU19UUlVFKTsKKyAgICAgICAgIGlmKHJl c3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgICAgIHsKKyAgICAgICAgICAgICBnb3RvIHJl c3VsdF9mYXVsdDsKKy0gICAgICAgIH0gICAgICAgICAgIAorKyAgICAgICAgfQorICAgICAgICAg YnJlYWs7CisgCisgICAgIGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0dFVFBVVF9QQVNW X0dFVDoKKy0JaWYoKCFlcnJvcikgJiYKKy0JICAgcmVzcG9uc2UtPmNvZGUgPT0gMTI3KQorKyAg ICAgICAgaWYoKCFlcnJvcikgJiYKKysgICAgICAgICAgIHJlc3BvbnNlLT5jb2RlID09IDEyNykK KyAgICAgICAgIHsKKyAgICAgICAgICAgICAvKiBTZXR1cCBvdXIgc2lkZSBvZiBQQVNWLgorICAg ICAgICAgICAgICAqLworLQkgICAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9wYXN2KAorLQkg ICAgICAgIGhhbmRsZSwKKy0JICAgICAgICByZXNwb25zZSwgCistCSAgICAgICAgJmNsaWVudF9o YW5kbGUtPnBhc3ZfYWRkcmVzcywgCistCSAgICAgICAgJmNsaWVudF9oYW5kbGUtPm51bV9wYXN2 X2FkZHJlc3Nlcyk7CisrICAgICAgICAgICAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9wYXN2 KAorKyAgICAgICAgICAgICAgICBoYW5kbGUsCisrICAgICAgICAgICAgICAgIHJlc3BvbnNlLAor KyAgICAgICAgICAgICAgICAmY2xpZW50X2hhbmRsZS0+cGFzdl9hZGRyZXNzLAorKyAgICAgICAg ICAgICAgICAmY2xpZW50X2hhbmRsZS0+bnVtX3Bhc3ZfYWRkcmVzc2VzKTsKKyAKKyAgICAgICAg ICAgICBpZihjbGllbnRfaGFuZGxlLT5udW1fcGFzdl9hZGRyZXNzZXMgPT0gMSkKKyAgICAgICAg ICAgICB7CitAQCAtNDU3OSw3ICs0NTc5LDcgQEAgcmVkbzoKKyAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgIGdvdG8gcmVzdWx0X2ZhdWx0OworICAgICAgICAgICAgIH0KKy0gICAgICAg ICAgICAKKysKKyAgICAgICAgICAgICAvKiBDcmVhdGUgdGhlIGRhdGEgY29ubmVjdGlvbi4KKyAg ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICByZXN1bHQgPQorQEAgLTQ1OTAsOCArNDU5MCw4 IEBAIHJlZG86CisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBnb3RvIHJlc3VsdF9m YXVsdDsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgCistICAgICAgICAgICAgdGFyZ2V0 LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9SRVRSOyAgICAgICAgICAgICAgICAK KysKKysgICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VU X1JFVFI7CisgICAgICAgICB9CisgICAgICAgICBlbHNlCisgICAgICAgICB7CitAQCAtNDYwMCwx NyArNDYwMCwxNyBAQCByZWRvOgorICAgICAgICAgfQorICAgICAgICAgYnJlYWs7CisgCistICAg IGNhc2UgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0dFVFBVVF9QQVNWX1BVVDogICAgICAgIAor LQlpZigoIWVycm9yKSAmJgorLQkgICByZXNwb25zZS0+Y29kZSA9PSAxMjcpCisrICAgIGNhc2Ug R0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0dFVFBVVF9QQVNWX1BVVDoKKysgICAgICAgIGlmKCgh ZXJyb3IpICYmCisrICAgICAgICAgICByZXNwb25zZS0+Y29kZSA9PSAxMjcpCisgICAgICAgICB7 CisgICAgICAgICAgICAgLyogU2V0dXAgb3VyIHNpZGUgb2YgUEFTVi4KKyAgICAgICAgICAgICAg Ki8KKy0JICAgIGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2VfcGFzdigKKy0JICAgICAgICBoYW5k bGUsCistCSAgICAgICAgcmVzcG9uc2UsIAorLQkgICAgICAgICZjbGllbnRfaGFuZGxlLT5wYXN2 X2FkZHJlc3MsIAorLQkgICAgICAgICZjbGllbnRfaGFuZGxlLT5udW1fcGFzdl9hZGRyZXNzZXMp OworKyAgICAgICAgICAgIGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2VfcGFzdigKKysgICAgICAg ICAgICAgICAgaGFuZGxlLAorKyAgICAgICAgICAgICAgICByZXNwb25zZSwKKysgICAgICAgICAg ICAgICAgJmNsaWVudF9oYW5kbGUtPnBhc3ZfYWRkcmVzcywKKysgICAgICAgICAgICAgICAgJmNs aWVudF9oYW5kbGUtPm51bV9wYXN2X2FkZHJlc3Nlcyk7CisgCisgICAgICAgICAgICAgaWYoY2xp ZW50X2hhbmRsZS0+bnVtX3Bhc3ZfYWRkcmVzc2VzID09IDEpCisgICAgICAgICAgICAgeworQEAg LTQ2MzEsNyArNDYzMSw3IEBAIHJlZG86CisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICBnb3RvIHJlc3VsdF9mYXVsdDsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgCisrCisg ICAgICAgICAgICAgLyogQ3JlYXRlIHRoZSBkYXRhIGNvbm5lY3Rpb24uCisgICAgICAgICAgICAg ICovCisgICAgICAgICAgICAgcmVzdWx0ID0KK0BAIC00NjQyLDcgKzQ2NDIsNyBAQCByZWRvOgor ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgZ290byByZXN1bHRfZmF1bHQ7CisgICAg ICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUg PSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU1RPUjsKKyAgICAgICAgIH0KKyAgICAgICAgIGVs c2UKK0BAIC00NjUzLDE0ICs0NjUzLDE0IEBAIHJlZG86CisgICAgICAgICBicmVhazsKKyAKKyAg ICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfR0VUUFVUX1BBU1ZfVFJBTlNGRVI6Cist CWlmKCghZXJyb3IpICYmCistCSAgIHJlc3BvbnNlLT5jb2RlID09IDEyNykKKysgICAgICAgIGlm KCghZXJyb3IpICYmCisrICAgICAgICAgICByZXNwb25zZS0+Y29kZSA9PSAxMjcpCisgICAgICAg ICB7CistCSAgICBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX3Bhc3YoCistCSAgICAgICAgaGFu ZGxlLAorLQkgICAgICAgIHJlc3BvbnNlLCAKKy0JICAgICAgICAmY2xpZW50X2hhbmRsZS0+cGFz dl9hZGRyZXNzLCAKKy0JICAgICAgICAmY2xpZW50X2hhbmRsZS0+bnVtX3Bhc3ZfYWRkcmVzc2Vz KTsKKysgICAgICAgICAgICBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX3Bhc3YoCisrICAgICAg ICAgICAgICAgIGhhbmRsZSwKKysgICAgICAgICAgICAgICAgcmVzcG9uc2UsCisrICAgICAgICAg ICAgICAgICZjbGllbnRfaGFuZGxlLT5wYXN2X2FkZHJlc3MsCisrICAgICAgICAgICAgICAgICZj bGllbnRfaGFuZGxlLT5udW1fcGFzdl9hZGRyZXNzZXMpOworIAorICAgICAgICAgICAgIC8qIFRo ZSBwYXNzaXZlIGVuZCBvZiBhIDNyZCBwYXJ0eSB0cmFuc2ZlciBpcyBhbHdheXMgdGhlCisgICAg ICAgICAgICAgICogZGVzdGluYXRpb24uCitAQCAtNDY5OCwzOSArNDY5OCwzOSBAQCByZWRvOgor ICAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9MSVNUOgorICAgICBjYXNlIEdMT0JV U19GVFBfQ0xJRU5UX1RBUkdFVF9SRVRSOgorICAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5UX1RB UkdFVF9TVE9SOgorLQlnbG9idXNfYXNzZXJ0KAorLQkgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0KKy0JICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfTElTVCB8fAorLQkgICAg Y2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9T T1VSQ0VfUkVUUl9PUl9FUkVUIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkg ICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU1RPUl9PUl9FU1RPIHx8CistCSAgICBj bGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1RI SVJEX1BBUlRZX1RSQU5TRkVSIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkg ICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1RISVJEX1BBUlRZX1RSQU5TRkVSX09ORV9DT01Q TEVURSB8fAorLQkgICAgKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX1RS QU5TRkVSICYmCistCSAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElF TlRfSEFORExFX1NPVVJDRV9TRVRVUF9DT05ORUNUSU9OKSB8fAorLQkgICAgKGNsaWVudF9oYW5k bGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX1RSQU5TRkVSICYmCistCSAgICAgY2xpZW50X2hh bmRsZS0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9DT05ORUNUKSB8 fAorLQkgICAgKHRhcmdldC0+ZGVsYXllZF9wYXN2ICYmIGNsaWVudF9oYW5kbGUtPm9wID09IEdM T0JVU19GVFBfQ0xJRU5UX1RSQU5TRkVSICYmCistCSAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTikpOworLQor LQlpZigoIWVycm9yKSAmJgorLQkgICByZXNwb25zZS0+cmVzcG9uc2VfY2xhc3MgPT0gR0xPQlVT X0ZUUF9QT1NJVElWRV9QUkVMSU1JTkFSWV9SRVBMWSkKKy0JeworLQkgICAgaWYocmVzcG9uc2Ut PmNvZGUgPT0gMTI3IHx8IHJlc3BvbnNlLT5jb2RlID09IDEyOSkKKy0gICAgICAgICAgICB7Cist LyogWFhYIFNUQVJUIGNvcHkgZnJvbSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfUEFTViAqLyAg ICAKKysgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+ c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX0xJ U1QgfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAg IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfUkVUUl9PUl9FUkVUIHx8CisrICAgICAg ICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfREVTVF9TVE9SX09SX0VTVE8gfHwKKysgICAgICAgICAgICBjbGllbnRfaGFu ZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9USElS RF9QQVJUWV9UUkFOU0ZFUiB8fAorKyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09 CisrICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1RISVJEX1BBUlRZX1RSQU5T RkVSX09ORV9DT01QTEVURSB8fAorKyAgICAgICAgICAgIChjbGllbnRfaGFuZGxlLT5vcCA9PSBH TE9CVVNfRlRQX0NMSUVOVF9UUkFOU0ZFUiAmJgorKyAgICAgICAgICAgICBjbGllbnRfaGFuZGxl LT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJ T04pIHx8CisrICAgICAgICAgICAgKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJ RU5UX1RSQU5TRkVSICYmCisrICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdM T0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfQ09OTkVDVCkgfHwKKysgICAgICAgICAgICAo dGFyZ2V0LT5kZWxheWVkX3Bhc3YgJiYgY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9D TElFTlRfVFJBTlNGRVIgJiYKKysgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0g R0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTikpOworKworKyAg ICAgICAgaWYoKCFlcnJvcikgJiYKKysgICAgICAgICAgIHJlc3BvbnNlLT5yZXNwb25zZV9jbGFz cyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX1BSRUxJTUlOQVJZX1JFUExZKQorKyAgICAgICAgewor KyAgICAgICAgICAgIGlmKHJlc3BvbnNlLT5jb2RlID09IDEyNyB8fCByZXNwb25zZS0+Y29kZSA9 PSAxMjkpCisrICAgICAgICAgICAgeworKy8qIFhYWCBTVEFSVCBjb3B5IGZyb20gR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX1BBU1YgKi8KKyAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZnRwX2Ns aWVudF9wYXJzZV9wYXN2KAorICAgICAgICAgICAgICAgICAgICAgaGFuZGxlLAorLSAgICAgICAg ICAgICAgICAgICAgcmVzcG9uc2UsIAorLSAgICAgICAgICAgICAgICAgICAgJmNsaWVudF9oYW5k bGUtPnBhc3ZfYWRkcmVzcywgCisrICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwKKysgICAg ICAgICAgICAgICAgICAgICZjbGllbnRfaGFuZGxlLT5wYXN2X2FkZHJlc3MsCisgICAgICAgICAg ICAgICAgICAgICAmY2xpZW50X2hhbmRsZS0+bnVtX3Bhc3ZfYWRkcmVzc2VzKTsKKy0gICAgICAg ICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPm9wICE9IEdM T0JVU19GVFBfQ0xJRU5UX1RSQU5TRkVSKQorICAgICAgICAgICAgICAgICB7CistICAgICAgICAg ICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPm51 bV9wYXN2X2FkZHJlc3NlcyA9PSAxKQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc3VsdCA9CitAQCAtNDc1MSw3ICs0NzUxLDcgQEAgcmVkbzoKKyAg ICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHJlc3VsdF9mYXVsdDsKKyAgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgCisrCisgICAgICAgICAgICAg ICAgIC8qIFN0b3JlIHRoZSBjdXJyZW50IGRhdGEgY29ubmVjdGlvbiBpbiB0aGUgY2FjaGUgZm9y CisgICAgICAgICAgICAgICAgICAqIHRoZSB0YXJnZXQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdHJh bnNmZXIsIGlmIHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICogd2lsbCBzdXBwb3J0IGl0 LgorQEAgLTQ3NjksNyArNDc2OSw3IEBAIHJlZG86CisgICAgICAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5jYWNoZWRfZGF0YV9jb25uLm9wZXJhdGlv biA9IGNsaWVudF9oYW5kbGUtPm9wOworICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPmNhY2hl ZF9kYXRhX2Nvbm4uc291cmNlID0gY2xpZW50X2hhbmRsZS0+c291cmNlOworICAgICAgICAgICAg ICAgICAgICAgdGFyZ2V0LT5jYWNoZWRfZGF0YV9jb25uLmRlc3QgPSBjbGllbnRfaGFuZGxlLT5k ZXN0OworICAgICAgICAgICAgICAgICB9CitAQCAtNDc4MiwxMSArNDc4MiwxMSBAQCByZWRvOgor ICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCZjbGllbnRfaGFuZGxlLT5zb3VyY2UtPmNhY2hl ZF9kYXRhX2Nvbm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1wwJywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplb2YoZ2xvYnVzX2lfZnRwX2NsaWVudF9kYXRhX3Rhcmdl dF90KSk7CistICAgICAgICAgICAgICAgIH0gICAgICAgCistLyogWFhYIEVORCBjb3B5IGZyb20g R0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1BBU1YgKi8gICAgCisrICAgICAgICAgICAgICAgIH0K KysvKiBYWFggRU5EIGNvcHkgZnJvbSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfUEFTViAqLwor ICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgICAgICBpZigodGFyZ2V0LT5kZWxheWVkX3Bhc3Yg JiYgcmVzcG9uc2UtPmNvZGUgPT0gMTI1KSB8fCAKKysgICAgICAgICAgICBpZigodGFyZ2V0LT5k ZWxheWVkX3Bhc3YgJiYgcmVzcG9uc2UtPmNvZGUgPT0gMTI1KSB8fAorICAgICAgICAgICAgICAg ICByZXNwb25zZS0+Y29kZSA9PSAxMjcgfHwgcmVzcG9uc2UtPmNvZGUgPT0gMTI5KQorICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+b3AgIT0gR0xPQlVT X0ZUUF9DTElFTlRfVFJBTlNGRVIpCitAQCAtNDgxMyw5ICs0ODEzLDkgQEAgcmVkbzoKKyAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgIHsK Ky0gICAgICAgICAgICAgICAgICAgIHRhcmdldCA9ICh0YXJnZXQgPT0gY2xpZW50X2hhbmRsZS0+ c291cmNlKSA/IAorKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0ID0gKHRhcmdldCA9PSBjbGll bnRfaGFuZGxlLT5zb3VyY2UpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFu ZGxlLT5kZXN0IDogY2xpZW50X2hhbmRsZS0+c291cmNlOworLSAgICAgICAgICAgIAorKworICAg ICAgICAgICAgICAgICAgICAgZXJyb3IgPQorICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1 c19pX2Z0cF9jbGllbnRfdGFyZ2V0X2FjdGl2YXRlKGNsaWVudF9oYW5kbGUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0 LAorQEAgLTQ4MzIsOTMgKzQ4MzIsOTMgQEAgcmVkbzoKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ290byBjb25uZWN0aW9uX2Vycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgfSAKKy0gICAgICAgICAg ICB9IAorLSAgICAgICAgICAgIAorLQkgICAgaWYocmVzcG9uc2UtPmNvZGUgPT0gMTI3IHx8IHJl c3BvbnNlLT5jb2RlID09IDEyOSkKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0K KysKKysgICAgICAgICAgICBpZihyZXNwb25zZS0+Y29kZSA9PSAxMjcgfHwgcmVzcG9uc2UtPmNv ZGUgPT0gMTI5KQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICAgfQorIAorLQkgICAgLyoKKy0JICAgICAqIHRoaXMgc2hvdWxkIGJlIGEgImNvbm5l Y3RlZCIgb3IgInVzaW5nIGV4aXN0aW5nCistCSAgICAgKiBkYXRhIGNvbm5lY3Rpb24iIHJlc3Bv bnNlCistCSAgICAgKi8KKy0JICAgIGlmKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBf Q0xJRU5UX0xJU1QgfHwKKy0JICAgICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBf Q0xJRU5UX05MU1QgfHwKKy0JICAgICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBf Q0xJRU5UX01MU0QgfHwKKysgICAgICAgICAgICAvKgorKyAgICAgICAgICAgICAqIHRoaXMgc2hv dWxkIGJlIGEgImNvbm5lY3RlZCIgb3IgInVzaW5nIGV4aXN0aW5nCisrICAgICAgICAgICAgICog ZGF0YSBjb25uZWN0aW9uIiByZXNwb25zZQorKyAgICAgICAgICAgICAqLworKyAgICAgICAgICAg IGlmKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX0xJU1QgfHwKKysgICAg ICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9OTFNUIHx8 CisrICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRf TUxTRCB8fAorICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBf Q0xJRU5UX01MU1IgfHwKKy0JICAgICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBf Q0xJRU5UX0dFVCAgfHwKKy0JICAgICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBf Q0xJRU5UX1BVVCkKKy0JICAgIHsKKy0JCXRhcmdldC0+c3RhdGUgPQorLQkJICAgIEdMT0JVU19G VFBfQ0xJRU5UX1RBUkdFVF9SRUFEWV9GT1JfREFUQTsKKy0KKy0JCWVycm9yID0KKy0JCSAgICBn bG9idXNfaV9mdHBfY2xpZW50X2RhdGFfZGlzcGF0Y2hfcXVldWUoY2xpZW50X2hhbmRsZSk7Cist CistCQlpZihlcnJvciAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JCXsKKy0JCSAgICBnbG9idXNfaV9m dHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfZmF1bHQoCistCQkJY2xpZW50X2hhbmRsZSwKKy0JCQl0 YXJnZXQtPnVybF9zdHJpbmcsCistCQkJZXJyb3IpOworLSAgICAgICAgICAgICAgICAgICAgCisr ICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfR0VU ICB8fAorKyAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJ RU5UX1BVVCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUg PQorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1JFQURZX0ZP Ul9EQVRBOworKworKyAgICAgICAgICAgICAgICBlcnJvciA9CisrICAgICAgICAgICAgICAgICAg ICBnbG9idXNfaV9mdHBfY2xpZW50X2RhdGFfZGlzcGF0Y2hfcXVldWUoY2xpZW50X2hhbmRsZSk7 CisrCisrICAgICAgICAgICAgICAgIGlmKGVycm9yICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICAg ICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Bs dWdpbl9ub3RpZnlfZmF1bHQoCisrICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRs ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPnVybF9zdHJpbmcsCisrICAgICAg ICAgICAgICAgICAgICAgICAgZXJyb3IpOworKworICAgICAgICAgICAgICAgICAgICAgaWYoY2xp ZW50X2hhbmRsZS0+ZXJyKQorICAgICAgICAgICAgICAgICAgICAgeworLQkJICAgICAgICBnbG9i dXNfb2JqZWN0X2ZyZWUoZXJyb3IpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19v YmplY3RfZnJlZShlcnJvcik7CisgICAgICAgICAgICAgICAgIGVycm9yID0gTlVMTDsKKy0JCSAg ICB9CistCQkgICAgZWxzZQorLQkJICAgIHsKKy0JCSAgICAgICAgY2xpZW50X2hhbmRsZS0+ZXJy ID0gZXJyb3I7CistCQkgICAgICAgIGVycm9yID0gR0xPQlVTX05VTEw7CistCQkgICAgfQorLQor LQkJICAgIGlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IAorLQkJICAgICAgICBHTE9CVVNfRlRQ X0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKy0JCSAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0gCistCQkgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCB8fAor LQkgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gCistCSAgICAgICAgICAg ICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCistCQkgICAgeworLQkJ CWJyZWFrOworLQkJICAgIH0KKy0JCSAgICBnbG9idXNfYXNzZXJ0KAorLQkJCWNsaWVudF9oYW5k bGUtPnN0YXRlID09CistCQkJR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9MSVNUIHx8 CistCQkJY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JCQlHTE9CVVNfRlRQX0NMSUVOVF9IQU5E TEVfREVTVF9TVE9SX09SX0VTVE8gfHwKKy0JCQljbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkJ CUdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfUkVUUl9PUl9FUkVUKTsKKy0KKy0JCSAg ICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJF OworLQkJICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfRkFVTFQ7 CistCQkgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2ZvcmNlX2Nsb3NlKAorLQkJCXRhcmdldC0+Y29u dHJvbF9oYW5kbGUsCistCQkJZ2xvYnVzX2lfZnRwX2NsaWVudF9mb3JjZV9jbG9zZV9jYWxsYmFj aywKKy0JCQl0YXJnZXQpOworLQkJfQorLQkgICAgfQorLQkgICAgZWxzZQorLQkgICAgeworLQkJ LyogcGVyZm9ybWFuY2Ugb3IgcmVzdGFydCBtYXJrZXJzIGFyZSBvayBmb3IgM3JkIHBhcnR5ICov CistCQlpZihyZXNwb25zZS0+Y29kZSA9PSAxMTEpCistCQl7CistCQkgICAgZ2xvYnVzX2xfZnRw X2NsaWVudF9wYXJzZV9yZXN0YXJ0X21hcmtlcihjbGllbnRfaGFuZGxlLAorLQkJCQkJCQkgICAg IHJlc3BvbnNlKTsKKy0JCX0KKy0JICAgIH0KKy0JfQorLQllbHNlIGlmKCghZXJyb3IpICYmCist CQlyZXNwb25zZS0+cmVzcG9uc2VfY2xhc3MKKy0JCT09IEdMT0JVU19GVFBfUE9TSVRJVkVfQ09N UExFVElPTl9SRVBMWSkKKy0JeworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAg ICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAg ICAgICAgIGNsaWVudF9oYW5kbGUtPmVyciA9IGVycm9yOworKyAgICAgICAgICAgICAgICAgICAg ICAgIGVycm9yID0gR0xPQlVTX05VTEw7CisrICAgICAgICAgICAgICAgICAgICB9CisrCisrICAg ICAgICAgICAgICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAg ICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCB8fAorKyAgICAgICAg ICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CisrICAgICAg ICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCisrICAgICAg ICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAg ICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICBnbG9idXNfYXNzZXJ0KAorKyAg ICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAg ICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9MSVNUIHx8Cisr ICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAg ICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVTVF9TVE9SX09SX0VT VE8gfHwKKysgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQor KyAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0Vf UkVUUl9PUl9FUkVUKTsKKysKKysgICAgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0 YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkU7CisrICAgICAgICAgICAgICAg ICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0ZBVUxUOworKyAg ICAgICAgICAgICAgICAgICAgZ2xvYnVzX2Z0cF9jb250cm9sX2ZvcmNlX2Nsb3NlKAorKyAgICAg ICAgICAgICAgICAgICAgICAgIHRhcmdldC0+Y29udHJvbF9oYW5kbGUsCisrICAgICAgICAgICAg ICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9mb3JjZV9jbG9zZV9jYWxsYmFjaywKKysg ICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQpOworKyAgICAgICAgICAgICAgICB9CisrICAg ICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAgICAg ICAgICAgIC8qIHBlcmZvcm1hbmNlIG9yIHJlc3RhcnQgbWFya2VycyBhcmUgb2sgZm9yIDNyZCBw YXJ0eSAqLworKyAgICAgICAgICAgICAgICBpZihyZXNwb25zZS0+Y29kZSA9PSAxMTEpCisrICAg ICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2Z0cF9jbGllbnRf cGFyc2VfcmVzdGFydF9tYXJrZXIoY2xpZW50X2hhbmRsZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UpOworKyAg ICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAgZWxz ZSBpZigoIWVycm9yKSAmJgorKyAgICAgICAgICAgICAgICByZXNwb25zZS0+cmVzcG9uc2VfY2xh c3MKKysgICAgICAgICAgICAgICAgPT0gR0xPQlVTX0ZUUF9QT1NJVElWRV9DT01QTEVUSU9OX1JF UExZKQorKyAgICAgICAgeworICAgICAgICAgICAgIGlmKGNsaWVudF9oYW5kbGUtPmF0dHIucGlw ZWxpbmVfY2FsbGJhY2spCistICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAKKysgICAgICAg ICAgICB7CisgICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfdXJsX2VudF90ICog dXJsX2VudCA9IE5VTEw7CisgICAgICAgICAgICAgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAg ICAgICAgICAgYWRkZWQgPSBHTE9CVVNfRkFMU0U7CistICAgICAgICAgICAgICAgIAorKworICAg ICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5ub19jYWxsYmFja19jb3VudC0tOworICAgICAg ICAgICAgICAgICBpZih0YXJnZXQgPT0gY2xpZW50X2hhbmRsZS0+c291cmNlKQorICAgICAgICAg ICAgICAgICB7CitAQCAtNDkzOSw4ICs0OTM5LDggQEAgcmVkbzoKKyAgICAgICAgICAgICAgICAg ICAgIGNsaWVudF9oYW5kbGUtPnNvdXJjZV91cmwgPSB1cmxfZW50LT5zb3VyY2VfdXJsOworICAg ICAgICAgICAgICAgICAgICAgZ2xvYnVzX3VybF9kZXN0cm95KCZ1cmxfZW50LT5zcmNfdXJsKTsK KyAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19mcmVlKHVybF9lbnQpOworLSAgICAgICAgICAg IAorLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5U X1RBUkdFVF9SRVRSOyAgICAgICAgICAgICAgICAgICAgICAgIAorKworKyAgICAgICAgICAgICAg ICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9SRVRSOworICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGVsc2UgaWYodGFyZ2V0ID09IGNsaWVu dF9oYW5kbGUtPmRlc3QpCisgICAgICAgICAgICAgICAgIHsKK0BAIC00OTYxLDI0ICs0OTYxLDI0 IEBAIHJlZG86CisgICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5kZXN0X3VybCA9 IHVybF9lbnQtPmRlc3RfdXJsOworICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX3VybF9kZXN0 cm95KCZ1cmxfZW50LT5kc3RfdXJsKTsKKyAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19mcmVl KHVybF9lbnQpOworLSAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0 LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TVE9SOworICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgfQorLQkgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysg ICAgICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorICAgICAgICAgICAgICAgICBH TE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfVEhJUkRfUEFSVFlfVFJBTlNGRVIpCistCSAgICB7Cisr ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9Cisg ICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfVEhJUkRfUEFSVFlf VFJBTlNGRVJfT05FX0NPTVBMRVRFOworICAgICAgICAgICAgIH0KKy0JICAgIGVsc2UgaWYoY2xp ZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBlbHNlIGlmKGNsaWVudF9oYW5kbGUt PnN0YXRlID09CisgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9USElS RF9QQVJUWV9UUkFOU0ZFUl9PTkVfQ09NUExFVEUpCistCSAgICB7CisrICAgICAgICAgICAgewor ICAgICAgICAgICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5ub19jYWxsYmFja19jb3VudCA9PSAw KQorICAgICAgICAgICAgICAgICB7CistICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxl LT5zb3VyY2UtPnN0YXRlID0gCisrICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5z b3VyY2UtPnN0YXRlID0KKyAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVO VF9UQVJHRVRfQ09NUExFVEVEX09QRVJBVElPTjsKKy0gICAgICAgICAgICAgICAgICAgIGNsaWVu dF9oYW5kbGUtPmRlc3QtPnN0YXRlID0gCisrICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFu ZGxlLT5kZXN0LT5zdGF0ZSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9D TElFTlRfVEFSR0VUX0NPTVBMRVRFRF9PUEVSQVRJT047CisgCisgICAgICAgICAgICAgICAgICAg ICBnbG9idXNfaV9mdHBfY2xpZW50X3RyYW5zZmVyX2NvbXBsZXRlKGNsaWVudF9oYW5kbGUpOwor QEAgLTQ5ODksMTEzICs0OTg5LDExMyBAQCByZWRvOgorICAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgICAgICAgICAgfQorLQkgICAg fQorLQkgICAgZWxzZQorLQkgICAgeworLQkgICAgICAgIC8qIHRoaXMgc2hvdWxkbnQgcmVhbGx5 IGJlIHBvc3NpYmxlLCBidXQgaGFuZGxlIGl0ICovCistCSAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9 IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9ORUVEX0NPTVBMRVRFOworLQkgICAgICAgIGdsb2J1 c19pX2Z0cF9jbGllbnRfZGF0YV9mbHVzaChjbGllbnRfaGFuZGxlKTsKKy0JICAgICAgICBtZW1z ZXQoJnRhcmdldC0+Y2FjaGVkX2RhdGFfY29ubiwKKysgICAgICAgICAgICB9CisrICAgICAgICAg ICAgZWxzZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgLyogdGhpcyBzaG91bGRu dCByZWFsbHkgYmUgcG9zc2libGUsIGJ1dCBoYW5kbGUgaXQgKi8KKysgICAgICAgICAgICAgICAg dGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9ORUVEX0NPTVBMRVRFOwor KyAgICAgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X2RhdGFfZmx1c2goY2xpZW50X2hh bmRsZSk7CisrICAgICAgICAgICAgICAgIG1lbXNldCgmdGFyZ2V0LT5jYWNoZWRfZGF0YV9jb25u LAorICAgICAgICAgICAgICAgICAgICAgJ1wwJywgc2l6ZW9mKGdsb2J1c19pX2Z0cF9jbGllbnRf ZGF0YV90YXJnZXRfdCkpOworICAgICAgICAgICAgICAgICBnbG9idXNfZnRwX2NvbnRyb2xfZGF0 YV9mb3JjZV9jbG9zZSgKKy0JCSAgICB0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorLQkJICAgIGds b2J1c19sX2Z0cF9jbGllbnRfZGF0YV9mb3JjZV9jbG9zZV9jYWxsYmFjaywKKy0JCSAgICBHTE9C VVNfTlVMTCk7CistCSAgICAgICAgZ290byByZWRvOworLQkgICAgfQorLQl9CistCWVsc2UKKy0J eworLQkgICAgaWYoKCFjbGllbnRfaGFuZGxlLT5lcnIpICYmICghZXJyb3IpKQorLQkgICAgewor LQkJY2xpZW50X2hhbmRsZS0+ZXJyID0gCistCQkgICAgR0xPQlVTX0lfRlRQX0NMSUVOVF9FUlJP Ul9SRVNQT05TRShyZXNwb25zZSk7CistCistCQlnbG9idXNfZnRwX2NvbnRyb2xfZGF0YV9mb3Jj ZV9jbG9zZSgKKy0JCSAgICB0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorLQkJICAgIGdsb2J1c19s X2Z0cF9jbGllbnRfZGF0YV9mb3JjZV9jbG9zZV9jYWxsYmFjaywKKy0JCSAgICBHTE9CVVNfTlVM TCk7CistCSAgICB9CistCSAgICBlbHNlIGlmKCFjbGllbnRfaGFuZGxlLT5lcnIpCistCSAgICB7 CistCQljbGllbnRfaGFuZGxlLT5lcnIgPSBnbG9idXNfb2JqZWN0X2NvcHkoZXJyb3IpOworLQkg ICAgfQorLQkgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2ZhdWx0KAorLQkJ Y2xpZW50X2hhbmRsZSwKKy0JCXRhcmdldC0+dXJsX3N0cmluZywKKy0JCWNsaWVudF9oYW5kbGUt PmVycik7CistCistCSAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfQUJPUlQgfHwKKy0JICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdM T0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CistCSAgICAgICBjbGllbnRfaGFuZGxl LT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRSkKKy0JICAgIHsKKy0J CWJyZWFrOworLQkgICAgfQorLQorLQkgICAgZ2xvYnVzX2Fzc2VydCgKKy0JCWNsaWVudF9oYW5k bGUtPnN0YXRlID09CistCQlHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX0xJU1QgfHwK Ky0JCWNsaWVudF9oYW5kbGUtPnN0YXRlID09CistCQlHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVf U09VUkNFX1JFVFJfT1JfRVJFVCB8fAorLQkJY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JCUdM T0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NUT1JfT1JfRVNUTyB8fAorLQkJY2xpZW50X2hh bmRsZS0+c3RhdGUgPT0KKy0JCUdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9USElSRF9QQVJUWV9U UkFOU0ZFUiB8fAorLQkJY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JCUdMT0JVU19GVFBfQ0xJ RU5UX0hBTkRMRV9USElSRF9QQVJUWV9UUkFOU0ZFUl9PTkVfQ09NUExFVEUgfHwKKy0JCShjbGll bnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9UUkFOU0ZFUiAmJgorLQkJIGNsaWVu dF9oYW5kbGUtPnN0YXRlID09CistCQkgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9T RVRVUF9DT05ORUNUSU9OKSB8fAorLQkJKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBf Q0xJRU5UX1RSQU5TRkVSICYmCistCQkgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKy0JCSBHTE9C VVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX0NPTk5FQ1QpIHx8CistCQkodGFyZ2V0LT5kZWxh eWVkX3Bhc3YgJiYgY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNG RVIgJiYKKysgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+Y29udHJvbF9oYW5kbGUsCisrICAg ICAgICAgICAgICAgICAgICBnbG9idXNfbF9mdHBfY2xpZW50X2RhdGFfZm9yY2VfY2xvc2VfY2Fs bGJhY2ssCisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCk7CisrICAgICAgICAgICAg ICAgIGdvdG8gcmVkbzsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgICBlbHNl CisrICAgICAgICB7CisrICAgICAgICAgICAgaWYoKCFjbGllbnRfaGFuZGxlLT5lcnIpICYmICgh ZXJyb3IpKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+ ZXJyID0KKysgICAgICAgICAgICAgICAgICAgIEdMT0JVU19JX0ZUUF9DTElFTlRfRVJST1JfUkVT UE9OU0UocmVzcG9uc2UpOworKworKyAgICAgICAgICAgICAgICBnbG9idXNfZnRwX2NvbnRyb2xf ZGF0YV9mb3JjZV9jbG9zZSgKKysgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+Y29udHJvbF9o YW5kbGUsCisrICAgICAgICAgICAgICAgICAgICBnbG9idXNfbF9mdHBfY2xpZW50X2RhdGFfZm9y Y2VfY2xvc2VfY2FsbGJhY2ssCisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCk7Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UgaWYoIWNsaWVudF9oYW5kbGUtPmVycikK KysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPmVyciA9IGds b2J1c19vYmplY3RfY29weShlcnJvcik7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGds b2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25vdGlmeV9mYXVsdCgKKysgICAgICAgICAgICAgICAg Y2xpZW50X2hhbmRsZSwKKysgICAgICAgICAgICAgICAgdGFyZ2V0LT51cmxfc3RyaW5nLAorKyAg ICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5lcnIpOworKworKyAgICAgICAgICAgIGlmKGNs aWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9SVCB8fAor KyAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5U X0hBTkRMRV9SRVNUQVJUIHx8CisrICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUg PT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkUpCisrICAgICAgICAgICAgeworKyAg ICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgZ2xv YnVzX2Fzc2VydCgKKysgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0KKysg ICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJDRV9MSVNUIHx8Cisr ICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgICAg IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfUkVUUl9PUl9FUkVUIHx8CisrICAgICAg ICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAgICAgIEdMT0JV U19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NUT1JfT1JfRVNUTyB8fAorKyAgICAgICAgICAgICAg ICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorKyAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfVEhJUkRfUEFSVFlfVFJBTlNGRVIgfHwKKysgICAgICAgICAgICAgICAgY2xp ZW50X2hhbmRsZS0+c3RhdGUgPT0KKysgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRf SEFORExFX1RISVJEX1BBUlRZX1RSQU5TRkVSX09ORV9DT01QTEVURSB8fAorKyAgICAgICAgICAg ICAgICAoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNGRVIgJiYK KysgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09CisrICAgICAgICAgICAg ICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNFX1NFVFVQX0NPTk5FQ1RJT04pIHx8 CisrICAgICAgICAgICAgICAgIChjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVO VF9UUkFOU0ZFUiAmJgorKyAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0K KysgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9TT1VSQ0VfQ09OTkVD VCkgfHwKKysgICAgICAgICAgICAgICAgKHRhcmdldC0+ZGVsYXllZF9wYXN2ICYmIGNsaWVudF9o YW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX1RSQU5TRkVSICYmCisgICAgICAgICAgICAg ICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfREVT VF9TRVRVUF9DT05ORUNUSU9OKSk7CistCSAgICAgCistCSAgICB0YXJnZXQtPnN0YXRlID0gR0xP QlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5FQ1RJT047CistICAgICAgICAgICAgCisr CisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9T RVRVUF9DT05ORUNUSU9OOworKworICAgICAgICAgICAgIGdvdG8gY29ubmVjdGlvbl9lcnJvcjsK Ky0JfQorKyAgICAgICAgfQorIAorLQlicmVhazsKKysgICAgICAgIGJyZWFrOworICAgICBjYXNl IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9SRUFEWV9GT1JfREFUQToKKyAgICAgY2FzZSBHTE9C VVNfRlRQX0NMSUVOVF9UQVJHRVRfTkVFRF9FTVBUWV9BTkRfQ09NUExFVEU6CistCS8qCistCSAq IFdlJ3ZlIHJlY2VpdmVkIHRoZSBjYWxsYmFjayBmb3IgdGhpcyBvcGVyYXRpb24sIHNvIG5vdyB3 ZQorLQkgKiBqdXN0IG5lZWQgdG8gd2FpdCBmb3IgdGhlIGZpbmFsIGRhdGEgY2FsbGJhY2tzCist CSAqLworLQlpZihlcnJvcikKKy0JeworLQkgICAgaWYoY2xpZW50X2hhbmRsZS0+ZXJyID09IEdM T0JVU19TVUNDRVNTKQorLQkgICAgeworLQkJY2xpZW50X2hhbmRsZS0+ZXJyID0gZ2xvYnVzX29i amVjdF9jb3B5KGVycm9yKTsKKy0JICAgIH0KKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID0g R0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkU7CistCistCSAgICBnb3RvIG5vdGlmeV9m YXVsdDsKKy0JfQorLQllbHNlIGlmKHJlc3BvbnNlLT5yZXNwb25zZV9jbGFzcyA9PQorLQkJR0xP QlVTX0ZUUF9QT1NJVElWRV9QUkVMSU1JTkFSWV9SRVBMWSkKKy0JeworLQkgICAgaWYocmVzcG9u c2UtPmNvZGUgPT0gMTExKQorLQkgICAgeworLQkJZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9y ZXN0YXJ0X21hcmtlcihjbGllbnRfaGFuZGxlLAorLQkJCQkJCQkgcmVzcG9uc2UpOworLQkgICAg fQorLQkgICAgYnJlYWs7CistCX0KKysgICAgICAgIC8qCisrICAgICAgICAgKiBXZSd2ZSByZWNl aXZlZCB0aGUgY2FsbGJhY2sgZm9yIHRoaXMgb3BlcmF0aW9uLCBzbyBub3cgd2UKKysgICAgICAg ICAqIGp1c3QgbmVlZCB0byB3YWl0IGZvciB0aGUgZmluYWwgZGF0YSBjYWxsYmFja3MKKysgICAg ICAgICAqLworKyAgICAgICAgaWYoZXJyb3IpCisrICAgICAgICB7CisrICAgICAgICAgICAgaWYo Y2xpZW50X2hhbmRsZS0+ZXJyID09IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgICAgIHsKKysg ICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+ZXJyID0gZ2xvYnVzX29iamVjdF9jb3B5KGVy cm9yKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+c3RhdGUg PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJTFVSRTsKKysKKysgICAgICAgICAgICBnb3Rv IG5vdGlmeV9mYXVsdDsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYocmVzcG9uc2UtPnJl c3BvbnNlX2NsYXNzID09CisrICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfUE9TSVRJVkVfUFJF TElNSU5BUllfUkVQTFkpCisrICAgICAgICB7CisrICAgICAgICAgICAgaWYocmVzcG9uc2UtPmNv ZGUgPT0gMTExKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZnRw X2NsaWVudF9wYXJzZV9yZXN0YXJ0X21hcmtlcihjbGllbnRfaGFuZGxlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKTsK KysgICAgICAgICAgICB9CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisgICAgICAg ICBlbHNlCisgICAgICAgICB7CisgICAgICAgICAgICAgaWYocmVzcG9uc2UtPnJlc3BvbnNlX2Ns YXNzICE9IEdMT0JVU19GVFBfUE9TSVRJVkVfQ09NUExFVElPTl9SRVBMWQorICAgICAgICAgICAg ICAgICAmJiBjbGllbnRfaGFuZGxlLT5lcnIgPT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgICAgICAg ICAgeworLSAgICAgICAgICAgICAgICAvKiBhbnkgb3RoZXIgcmVzcG9uc2UgbXVzdCBiZSBhIHRy YW5zaWVudCBlcnJvciBzdWNoIGFzIAorKyAgICAgICAgICAgICAgICAvKiBhbnkgb3RoZXIgcmVz cG9uc2UgbXVzdCBiZSBhIHRyYW5zaWVudCBlcnJvciBzdWNoIGFzCisgICAgICAgICAgICAgICAg ICAqIDQyNiBkYXRhIHRpbWVvdXQKKyAgICAgICAgICAgICAgICAgICovCistICAgICAgICAgICAg ICAgIGNsaWVudF9oYW5kbGUtPmVyciA9IAorKyAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxl LT5lcnIgPQorICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0lfRlRQX0NMSUVOVF9FUlJPUl9S RVNQT05TRShyZXNwb25zZSk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIAorKworICAg ICAgICAgICAgIGlmKHRhcmdldC0+c3RhdGUgPT0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX05F RURfRU1QVFlfQU5EX0NPTVBMRVRFKQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg dGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9ORUVEX0VNUFRZX1FVRVVF OworQEAgLTUxMDUsNzIgKzUxMDUsNzIgQEAgcmVkbzoKKyAgICAgICAgICAgICAgICAgdGFyZ2V0 LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9ORUVEX0xBU1RfQkxPQ0s7CisgICAg ICAgICAgICAgfQorICAgICAgICAgfQorLQkKKy0JYnJlYWs7CisrCisrICAgICAgICBicmVhazsK KyAKKyAgICAgY2FzZSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfTkVFRF9DT01QTEVURToKKy0J LyogUmVzZXQgdGhlIHN0YXRlIHRvIHNldHVwX2Nvbm5lY3Rpb24sIHNvIHRoYXQgdGhlIHVybAor LQkgKiBjYWNoaW5nIGNvZGUga25vd3MgdG8ga2VlcCB0aGlzIG9uZSBhcm91bmQuCistCSAqLwor LQlpZighZXJyb3IpCistCXsKKy0JICAgIGlmKHJlc3BvbnNlLT5yZXNwb25zZV9jbGFzcyA9PQor LQkgICAgICAgR0xPQlVTX0ZUUF9QT1NJVElWRV9QUkVMSU1JTkFSWV9SRVBMWSkKKy0JICAgIHsK Ky0JCWlmKHJlc3BvbnNlLT5jb2RlID09IDExMSkKKy0JCXsKKy0JCSAgICBnbG9idXNfbF9mdHBf Y2xpZW50X3BhcnNlX3Jlc3RhcnRfbWFya2VyKGNsaWVudF9oYW5kbGUsCistCQkJCQkJCSAgICAg cmVzcG9uc2UpOworLQkJfQorLQkJYnJlYWs7CistCSAgICB9CistCSAgICBlbHNlCistCSAgICB7 CistCQl0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX1NFVFVQX0NPTk5F Q1RJT047CistCistCQlpZihyZXNwb25zZS0+cmVzcG9uc2VfY2xhc3MgIT0KKy0JCSAgIEdMT0JV U19GVFBfUE9TSVRJVkVfQ09NUExFVElPTl9SRVBMWSkKKy0JCXsKKy0JCSAgICBpZihjbGllbnRf aGFuZGxlLT5lcnIgPT0gR0xPQlVTX1NVQ0NFU1MpCistCQkgICAgeworLQkJCWNsaWVudF9oYW5k bGUtPmVyciA9CistCQkJICAgIEdMT0JVU19JX0ZUUF9DTElFTlRfRVJST1JfUkVTUE9OU0UocmVz cG9uc2UpOworLQkJICAgIH0KKy0JCSAgICBpZihjbGllbnRfaGFuZGxlLT5vcCAhPSBHTE9CVVNf RlRQX0NMSUVOVF9NRFRNICYmCistCQkgICAgICAgY2xpZW50X2hhbmRsZS0+b3AgIT0gR0xPQlVT X0ZUUF9DTElFTlRfU0laRSAmJgorLQkJICAgICAgIGNsaWVudF9oYW5kbGUtPm9wICE9IEdMT0JV U19GVFBfQ0xJRU5UX0ZFQVQgJiYKKy0JCSAgICAgICBjbGllbnRfaGFuZGxlLT5vcCAhPSBHTE9C VVNfRlRQX0NMSUVOVF9DS1NNICYmCistCQkgICAgICAgY2xpZW50X2hhbmRsZS0+b3AgIT0gR0xP QlVTX0ZUUF9DTElFTlRfTUxTVCAmJgorLQkJICAgICAgIGNsaWVudF9oYW5kbGUtPm9wICE9IEdM T0JVU19GVFBfQ0xJRU5UX0NXRCAmJgorLQkJICAgICAgIGNsaWVudF9oYW5kbGUtPm9wICE9IEdM T0JVU19GVFBfQ0xJRU5UX1NUQVQpCistCQkgICAgeworLQkJCWNsaWVudF9oYW5kbGUtPnN0YXRl ID0KKy0JCQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkU7CistCQkgICAgfQor LQkJfQorLQkJaWYoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfTURUTSAm JgorLQkJICAgcmVzcG9uc2UtPmNvZGUgPT0gMjEzKQorLQkJeworLQkJICAgIGdsb2J1c19sX2Z0 cF9jbGllbnRfcGFyc2VfbWR0bShjbGllbnRfaGFuZGxlLAorLQkJCSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc3BvbnNlKTsKKy0JCX0KKy0JCWVsc2UgaWYoY2xpZW50X2hhbmRsZS0+b3Ag PT0gR0xPQlVTX0ZUUF9DTElFTlRfU0laRSAmJgorLQkJCXJlc3BvbnNlLT5jb2RlID09IDIxMykK Ky0JCXsKKy0JCSAgICBnbG9idXNfbGliY19zY2FuX29mZl90KChjaGFyICopIHJlc3BvbnNlLT5y ZXNwb25zZV9idWZmZXIrNCwKKy0JCQkJCSAgIGNsaWVudF9oYW5kbGUtPnNpemVfcG9pbnRlciwK Ky0JCQkJCSAgIEdMT0JVU19OVUxMKTsKKy0JCX0KKy0JCWVsc2UgaWYoY2xpZW50X2hhbmRsZS0+ b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfQ0tTTSAmJgorLQkJCXJlc3BvbnNlLT5jb2RlID09IDIx MykKKy0JCXsKKy0JCSAgICBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX2Nrc20oY2xpZW50X2hh bmRsZSwKKy0JCQkJICAgIAkJICAgcmVzcG9uc2UpOworLQkJCQkgICAgCQkgICAKKy0JCX0KKy0J CWVsc2UgaWYoY2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfRkVBVCkKKy0J CXsKKy0JCSAgICBmb3IoaSA9IDA7IGkgPCBHTE9CVVNfRlRQX0NMSUVOVF9GRUFUVVJFX01BWDsg aSsrKQorKyAgICAgICAgLyogUmVzZXQgdGhlIHN0YXRlIHRvIHNldHVwX2Nvbm5lY3Rpb24sIHNv IHRoYXQgdGhlIHVybAorKyAgICAgICAgICogY2FjaGluZyBjb2RlIGtub3dzIHRvIGtlZXAgdGhp cyBvbmUgYXJvdW5kLgorKyAgICAgICAgICovCisrICAgICAgICBpZighZXJyb3IpCisrICAgICAg ICB7CisrICAgICAgICAgICAgaWYocmVzcG9uc2UtPnJlc3BvbnNlX2NsYXNzID09CisrICAgICAg ICAgICAgICAgR0xPQlVTX0ZUUF9QT1NJVElWRV9QUkVMSU1JTkFSWV9SRVBMWSkKKysgICAgICAg ICAgICB7CisrICAgICAgICAgICAgICAgIGlmKHJlc3BvbnNlLT5jb2RlID09IDExMSkKKysgICAg ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2xfZnRwX2NsaWVudF9w YXJzZV9yZXN0YXJ0X21hcmtlcihjbGllbnRfaGFuZGxlLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSk7CisrICAg ICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQor KyAgICAgICAgICAgIGVsc2UKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIHRhcmdl dC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElPTjsKKysK KysgICAgICAgICAgICAgICAgaWYocmVzcG9uc2UtPnJlc3BvbnNlX2NsYXNzICE9CisrICAgICAg ICAgICAgICAgICAgIEdMT0JVU19GVFBfUE9TSVRJVkVfQ09NUExFVElPTl9SRVBMWSkKKysgICAg ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+ZXJy ID09IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAg ICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPmVyciA9CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdMT0JVU19JX0ZUUF9DTElFTlRfRVJST1JfUkVTUE9OU0UocmVzcG9uc2UpOworKyAg ICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgaWYoY2xpZW50X2hhbmRs ZS0+b3AgIT0gR0xPQlVTX0ZUUF9DTElFTlRfTURUTSAmJgorKyAgICAgICAgICAgICAgICAgICAg ICAgY2xpZW50X2hhbmRsZS0+b3AgIT0gR0xPQlVTX0ZUUF9DTElFTlRfU0laRSAmJgorKyAgICAg ICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+b3AgIT0gR0xPQlVTX0ZUUF9DTElFTlRf RkVBVCAmJgorKyAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+b3AgIT0gR0xP QlVTX0ZUUF9DTElFTlRfQ0tTTSAmJgorKyAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hh bmRsZS0+b3AgIT0gR0xPQlVTX0ZUUF9DTElFTlRfTUxTVCAmJgorKyAgICAgICAgICAgICAgICAg ICAgICAgY2xpZW50X2hhbmRsZS0+b3AgIT0gR0xPQlVTX0ZUUF9DTElFTlRfQ1dEICYmCisrICAg ICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5vcCAhPSBHTE9CVVNfRlRQX0NMSUVO VF9TVEFUKQorKyAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAg IGNsaWVudF9oYW5kbGUtPnN0YXRlID0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xP QlVTX0ZUUF9DTElFTlRfSEFORExFX0ZBSUxVUkU7CisrICAgICAgICAgICAgICAgICAgICB9Cisr ICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+b3Ag PT0gR0xPQlVTX0ZUUF9DTElFTlRfTURUTSAmJgorKyAgICAgICAgICAgICAgICAgICByZXNwb25z ZS0+Y29kZSA9PSAyMTMpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAg IGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2VfbWR0bShjbGllbnRfaGFuZGxlLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKTsKKysg ICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBlbHNlIGlmKGNsaWVudF9oYW5kbGUt Pm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX1NJWkUgJiYKKysgICAgICAgICAgICAgICAgICAgICAg ICByZXNwb25zZS0+Y29kZSA9PSAyMTMpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgICAgIGdsb2J1c19saWJjX3NjYW5fb2ZmX3QoKGNoYXIgKikgcmVzcG9uc2UtPnJlc3Bv bnNlX2J1ZmZlcis0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjbGllbnRfaGFuZGxlLT5zaXplX3BvaW50ZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdMT0JVU19OVUxMKTsKKysgICAgICAgICAgICAgICAgfQorKyAg ICAgICAgICAgICAgICBlbHNlIGlmKGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJ RU5UX0NLU00gJiYKKysgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS0+Y29kZSA9PSAy MTMpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIGdsb2J1c19sX2Z0 cF9jbGllbnRfcGFyc2VfY2tzbShjbGllbnRfaGFuZGxlLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlKTsKKysKKysgICAgICAgICAg ICAgICAgfQorKyAgICAgICAgICAgICAgICBlbHNlIGlmKGNsaWVudF9oYW5kbGUtPm9wID09IEdM T0JVU19GVFBfQ0xJRU5UX0ZFQVQpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgICAgIGZvcihpID0gMDsgaSA8IEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRVUkVfTUFYOyBpKysp CisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVz X2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2xpZW50X2hhbmRsZS0+ZmVhdHVyZXNfcG9pbnRlciwKK0BAIC01MTc4LDE1OSArNTE3OCwxNTkg QEAgcmVkbzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVu dF9mZWF0dXJlX2dldCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+ ZmVhdHVyZXMsIGkpKTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKy0JCX0KKy0JCWVsc2UgaWYo Y2xpZW50X2hhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfQ1dEICYmCistCQkJcmVzcG9u c2UtPmNvZGUgPT0gMjUwKQorLQkJeworLQkJICAgIGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2Vf Y3dkKGNsaWVudF9oYW5kbGUsCistCQkJCQkJICByZXNwb25zZSk7CistCQl9CistCQllbHNlIGlm KGNsaWVudF9oYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX01MU1QgJiYKKy0JCQlyZXNw b25zZS0+Y29kZSA9PSAyNTApCistCQl7CistCQkgICAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJz ZV9tbHN0KGNsaWVudF9oYW5kbGUsCistCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz cG9uc2UpOworLQkJfQorLQkJZWxzZSBpZihjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQ X0NMSUVOVF9TVEFUKQorLQkJeworLQkJICAgIGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2Vfc3Rh dChjbGllbnRfaGFuZGxlLAorLQkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNl KTsKKy0JCX0KKy0JICAgIH0KKy0JfQorLQllbHNlCistCXsKKy0JICAgIHRhcmdldC0+c3RhdGUg PSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfU0VUVVBfQ09OTkVDVElPTjsKKy0JICAgIGlmKGNs aWVudF9oYW5kbGUtPmVyciA9PSBHTE9CVVNfU1VDQ0VTUykKKy0JICAgIHsKKy0JCWNsaWVudF9o YW5kbGUtPmVyciA9IGdsb2J1c19vYmplY3RfY29weShlcnJvcik7CistCSAgICB9CistCX0KKy0J CistCWdsb2J1c19pX2Z0cF9jbGllbnRfdHJhbnNmZXJfY29tcGxldGUoY2xpZW50X2hhbmRsZSk7 CistCQorLQlnb3RvIGRvX3JldHVybjsKKy0KKy0JYnJlYWs7CisrICAgICAgICAgICAgICAgIH0K KysgICAgICAgICAgICAgICAgZWxzZSBpZihjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQ X0NMSUVOVF9DV0QgJiYKKysgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS0+Y29kZSA9 PSAyNTApCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIGdsb2J1c19s X2Z0cF9jbGllbnRfcGFyc2VfY3dkKGNsaWVudF9oYW5kbGUsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSk7CisrICAgICAgICAgICAg ICAgIH0KKysgICAgICAgICAgICAgICAgZWxzZSBpZihjbGllbnRfaGFuZGxlLT5vcCA9PSBHTE9C VVNfRlRQX0NMSUVOVF9NTFNUICYmCisrICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Ut PmNvZGUgPT0gMjUwKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBn bG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX21sc3QoY2xpZW50X2hhbmRsZSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSk7CisrICAg ICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgZWxzZSBpZihjbGllbnRfaGFuZGxlLT5v cCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9TVEFUKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgICAgICBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX3N0YXQoY2xpZW50X2hhbmRs ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXNwb25zZSk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICB9 CisrICAgICAgICBlbHNlCisrICAgICAgICB7CisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9 IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9DT05ORUNUSU9OOworKyAgICAgICAgICAg IGlmKGNsaWVudF9oYW5kbGUtPmVyciA9PSBHTE9CVVNfU1VDQ0VTUykKKysgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPmVyciA9IGdsb2J1c19vYmplY3RfY29w eShlcnJvcik7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKworKyAgICAgICAgZ2xvYnVz X2lfZnRwX2NsaWVudF90cmFuc2Zlcl9jb21wbGV0ZShjbGllbnRfaGFuZGxlKTsKKysKKysgICAg ICAgIGdvdG8gZG9fcmV0dXJuOworKworKyAgICAgICAgYnJlYWs7CisgCisgICAgIGNhc2UgR0xP QlVTX0ZUUF9DTElFTlRfVEFSR0VUX0ZBVUxUOgorICAgICBjYXNlIEdMT0JVU19GVFBfQ0xJRU5U X1RBUkdFVF9DTE9TRUQ6CistCS8qCistCSAqIFRoaXMgc3RhdGUgb25seSBoYXBwZW5zIGlmIHRo aXMgaXMgYSBjYWxsYmFjayB3aGljaCB3YXMgYQorLQkgKiByZXN1bHQgb2YgYSBmb3JjZV9jbG9z ZS4gV2UgZG8gbm90aGluZywgYW5kIHRoZSBmb3JjZV9jbG9zZQorLQkgKiBjYWxsYmFjayBkZWFs cyB3aXRoIHRoZSBmYWlsdXJlLgorLQkgKi8KKy0JYnJlYWs7CisrICAgICAgICAvKgorKyAgICAg ICAgICogVGhpcyBzdGF0ZSBvbmx5IGhhcHBlbnMgaWYgdGhpcyBpcyBhIGNhbGxiYWNrIHdoaWNo IHdhcyBhCisrICAgICAgICAgKiByZXN1bHQgb2YgYSBmb3JjZV9jbG9zZS4gV2UgZG8gbm90aGlu ZywgYW5kIHRoZSBmb3JjZV9jbG9zZQorKyAgICAgICAgICogY2FsbGJhY2sgZGVhbHMgd2l0aCB0 aGUgZmFpbHVyZS4KKysgICAgICAgICAqLworKyAgICAgICAgYnJlYWs7CisgICAgIGNhc2UgR0xP QlVTX0ZUUF9DTElFTlRfVEFSR0VUX05PT1A6CistCWdsb2J1c19hc3NlcnQoCistCSAgICBjbGll bnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkgICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1NPVVJD RV9TRVRVUF9DT05ORUNUSU9OIHx8CistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PQorLQkg ICAgR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0RFU1RfU0VUVVBfQ09OTkVDVElPTik7CistICAg ICAgICAKKysgICAgICAgIGdsb2J1c19hc3NlcnQoCisrICAgICAgICAgICAgY2xpZW50X2hhbmRs ZS0+c3RhdGUgPT0KKysgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfU09VUkNF X1NFVFVQX0NPTk5FQ1RJT04gfHwKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 PQorKyAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9ERVNUX1NFVFVQX0NPTk5F Q1RJT04pOworKworICAgICAgICAgLyogcmVzcG9uc2Ugd2lsbCBiZSBOVUxMIGlmIHRoZSBOT09Q IHdhcyBmYWtlZCAqLworLQlpZigoIWVycm9yKSAmJiAoIXJlc3BvbnNlIHx8CistCSAgIHJlc3Bv bnNlLT5yZXNwb25zZV9jbGFzcyA9PSBHTE9CVVNfRlRQX1BPU0lUSVZFX0NPTVBMRVRJT05fUkVQ TFkpKQorLQl7CistCSAgICAvKiBOT09QIHN1Y2Nlc3NmdWwsIHdlIGNhbiByZS11c2UgdGhpcyB0 YXJnZXQgKi8KKy0JICAgIHRhcmdldC0+c3RhdGUgPQorLQkJR0xPQlVTX0ZUUF9DTElFTlRfVEFS R0VUX1NFVFVQX1RZUEU7CistCSAgICBnb3RvIHJlZG87CistCX0KKy0JZWxzZQorLQl7CistCSAg ICBnbG9idXNfaV9mdHBfY2xpZW50X3RhcmdldF90ICoJCW5ld190YXJnZXQ7CistCSAgICAvKgor LQkgICAgICogTk9PUCBmYWlsZWQtLS1UaGlzIG1lYW5zIHRoYXQgdGhlIGNhY2hlZCB0YXJnZXQg d2VudAorLQkgICAgICogYmFkLiBXZSdsbCBkaXNjYXJkIHRoaXMgdGFyZ2V0LCBhbmQgZmluZCBh IG5ldworLQkgICAgICogb25lLgorLQkgICAgICovCistCSAgICBnbG9idXNfYXNzZXJ0KGNsaWVu dF9oYW5kbGUtPnNvdXJjZSA9PSB0YXJnZXQgfHwKKy0JCQkgIGNsaWVudF9oYW5kbGUtPmRlc3Qg PT0gdGFyZ2V0KTsKKy0KKy0JICAgIGlmKGNsaWVudF9oYW5kbGUtPnNvdXJjZSA9PSB0YXJnZXQp CistCSAgICB7CistCQllcnJvciA9CistCQkgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRf ZmluZChjbGllbnRfaGFuZGxlLAorLQkJCQkJCSAgICBjbGllbnRfaGFuZGxlLT5zb3VyY2VfdXJs LAorLQkJCQkJCSAgICB0YXJnZXQtPmF0dHIsCistCQkJCQkJICAgICZuZXdfdGFyZ2V0KTsKKy0J CWlmKGVycm9yICE9IEdMT0JVU19TVUNDRVNTKQorLQkJeworLQkJICAgIHRhcmdldC0+c3RhdGUg PSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfRkFVTFQ7CistCistCQkgICAgZ290byBub3RpZnlf ZmF1bHQ7CistCQl9CistCQljbGllbnRfaGFuZGxlLT5zb3VyY2UgPSBuZXdfdGFyZ2V0OworLQkg ICAgfQorLQkgICAgZWxzZSBpZihjbGllbnRfaGFuZGxlLT5kZXN0ID09IHRhcmdldCkKKy0JICAg IHsKKy0JCWVycm9yID0KKy0JCSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3RhcmdldF9maW5kKGNs aWVudF9oYW5kbGUsCistCQkJCQkJICAgIGNsaWVudF9oYW5kbGUtPmRlc3RfdXJsLAorLQkJCQkJ CSAgICB0YXJnZXQtPmF0dHIsCistCQkJCQkJICAgICZuZXdfdGFyZ2V0KTsKKy0KKy0JCWlmKGVy cm9yICE9IEdMT0JVU19TVUNDRVNTKQorLQkJeworLQkJICAgIHRhcmdldC0+c3RhdGUgPSBHTE9C VVNfRlRQX0NMSUVOVF9UQVJHRVRfRkFVTFQ7CistCistCQkgICAgZ290byBub3RpZnlfZmF1bHQ7 CistCQl9CistCQljbGllbnRfaGFuZGxlLT5kZXN0ID0gbmV3X3RhcmdldDsKKy0JICAgIH0KKy0K Ky0JICAgIC8qIE1hcmsgdGhlIG9sZCB0YXJnZXQgZm9yIGRlc3RydWN0aW9uLi4uICovCistCSAg ICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0ZBVUxUOworLQkgICAg LyogQW5kIHJlbGVhc2UgaXQgKi8KKy0JICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfdGFyZ2V0X3Jl bGVhc2UoY2xpZW50X2hhbmRsZSwKKy0JCQkJCSAgICAgICB0YXJnZXQpOworLQorLQkgICAgLyog U3RhcnQgdGhpcyBuZXcgdGFyZ2V0IG9mZiAqLworLQkgICAgZXJyb3IgPSBnbG9idXNfaV9mdHBf Y2xpZW50X3RhcmdldF9hY3RpdmF0ZShjbGllbnRfaGFuZGxlLAorLQkJCQkJCQluZXdfdGFyZ2V0 LAorLQkJCQkJCQkmcmVnaXN0ZXJlZCk7CistCistCSAgICBpZihyZWdpc3RlcmVkID09IEdMT0JV U19GQUxTRSkKKy0JICAgIHsKKy0JCWdsb2J1c19hc3NlcnQoZXJyb3IgfHwKKy0JCSAgICBjbGll bnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKy0J CSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVT VEFSVCB8fAorLQkgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQ X0NMSUVOVF9IQU5ETEVfRkFJTFVSRSk7CistCQkvKgorLQkJICogQSByZXN0YXJ0IG9yIGFib3J0 IGhhcHBlbmVkIGR1cmluZyBhY3RpdmF0aW9uLCBiZWZvcmUgYW55CistCQkgKiBjYWxsYmFja3Mg d2VyZSByZWdpc3RlcmVkLiBXZSBtdXN0IGRlYWwgd2l0aCB0aGVtIGhlcmUuCistCQkgKi8KKy0J CWlmKGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9BQk9S VCB8fAorLQkJICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hB TkRMRV9SRVNUQVJUIHx8CistCSAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID09IEdM T0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorLQkJeworLQkJICAgIGJyZWFrOworLQkJ fQorLQkJZWxzZSBpZihlcnJvciAhPSBHTE9CVVNfU1VDQ0VTUykKKy0JCXsKKy0JCSAgICBnbG9i dXNfaV9mdHBfY2xpZW50X3BsdWdpbl9ub3RpZnlfZmF1bHQoCistCQkJY2xpZW50X2hhbmRsZSwK Ky0JCQl0YXJnZXQtPnVybF9zdHJpbmcsCistCQkJZXJyb3IpOworLSAgICAgICAgICAgICAgICAg ICAgCistCQkgICAgZ290byBjb25uZWN0aW9uX2Vycm9yOworLQkJfQorLQkgICAgfQorLQl9Cist CWJyZWFrOworKyAgICAgICAgaWYoKCFlcnJvcikgJiYgKCFyZXNwb25zZSB8fAorKyAgICAgICAg ICAgcmVzcG9uc2UtPnJlc3BvbnNlX2NsYXNzID09IEdMT0JVU19GVFBfUE9TSVRJVkVfQ09NUExF VElPTl9SRVBMWSkpCisrICAgICAgICB7CisrICAgICAgICAgICAgLyogTk9PUCBzdWNjZXNzZnVs LCB3ZSBjYW4gcmUtdXNlIHRoaXMgdGFyZ2V0ICovCisrICAgICAgICAgICAgdGFyZ2V0LT5zdGF0 ZSA9CisrICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9UWVBF OworKyAgICAgICAgICAgIGdvdG8gcmVkbzsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysg ICAgICAgIHsKKysgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X3RhcmdldF90ICogICAg ICAgICAgICAgIG5ld190YXJnZXQ7CisrICAgICAgICAgICAgLyoKKysgICAgICAgICAgICAgKiBO T09QIGZhaWxlZC0tLVRoaXMgbWVhbnMgdGhhdCB0aGUgY2FjaGVkIHRhcmdldCB3ZW50CisrICAg ICAgICAgICAgICogYmFkLiBXZSdsbCBkaXNjYXJkIHRoaXMgdGFyZ2V0LCBhbmQgZmluZCBhIG5l dworKyAgICAgICAgICAgICAqIG9uZS4KKysgICAgICAgICAgICAgKi8KKysgICAgICAgICAgICBn bG9idXNfYXNzZXJ0KGNsaWVudF9oYW5kbGUtPnNvdXJjZSA9PSB0YXJnZXQgfHwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPmRlc3QgPT0gdGFyZ2V0KTsKKysKKysg ICAgICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zb3VyY2UgPT0gdGFyZ2V0KQorKyAgICAgICAg ICAgIHsKKysgICAgICAgICAgICAgICAgZXJyb3IgPQorKyAgICAgICAgICAgICAgICAgICAgZ2xv YnVzX2lfZnRwX2NsaWVudF90YXJnZXRfZmluZChjbGllbnRfaGFuZGxlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5z b3VyY2VfdXJsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0YXJnZXQtPmF0dHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZuZXdfdGFyZ2V0KTsKKysgICAgICAgICAgICAgICAgaWYoZXJy b3IgIT0gR0xPQlVTX1NVQ0NFU1MpCisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg ICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfRkFVTFQ7Cisr CisrICAgICAgICAgICAgICAgICAgICBnb3RvIG5vdGlmeV9mYXVsdDsKKysgICAgICAgICAgICAg ICAgfQorKyAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zb3VyY2UgPSBuZXdfdGFyZ2V0 OworKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlIGlmKGNsaWVudF9oYW5kbGUtPmRl c3QgPT0gdGFyZ2V0KQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZXJyb3IgPQor KyAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRfZmluZChjbGll bnRfaGFuZGxlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjbGllbnRfaGFuZGxlLT5kZXN0X3VybCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5hdHRyLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X3RhcmdldCk7Cisr CisrICAgICAgICAgICAgICAgIGlmKGVycm9yICE9IEdMT0JVU19TVUNDRVNTKQorKyAgICAgICAg ICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZU UF9DTElFTlRfVEFSR0VUX0ZBVUxUOworKworKyAgICAgICAgICAgICAgICAgICAgZ290byBub3Rp ZnlfZmF1bHQ7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgY2xpZW50X2hh bmRsZS0+ZGVzdCA9IG5ld190YXJnZXQ7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAg IC8qIE1hcmsgdGhlIG9sZCB0YXJnZXQgZm9yIGRlc3RydWN0aW9uLi4uICovCisrICAgICAgICAg ICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9GQVVMVDsKKysgICAg ICAgICAgICAvKiBBbmQgcmVsZWFzZSBpdCAqLworKyAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9j bGllbnRfdGFyZ2V0X3JlbGVhc2UoY2xpZW50X2hhbmRsZSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCk7CisrCisrICAgICAgICAgICAgLyog U3RhcnQgdGhpcyBuZXcgdGFyZ2V0IG9mZiAqLworKyAgICAgICAgICAgIGVycm9yID0gZ2xvYnVz X2lfZnRwX2NsaWVudF90YXJnZXRfYWN0aXZhdGUoY2xpZW50X2hhbmRsZSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld190YXJnZXQs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmcmVnaXN0ZXJlZCk7CisrCisrICAgICAgICAgICAgaWYocmVnaXN0ZXJlZCA9PSBHTE9CVVNf RkFMU0UpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBnbG9idXNfYXNzZXJ0KGVy cm9yIHx8CisrICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9C VVNfRlRQX0NMSUVOVF9IQU5ETEVfQUJPUlQgfHwKKysgICAgICAgICAgICAgICAgICAgIGNsaWVu dF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8Cisr ICAgICAgICAgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NM SUVOVF9IQU5ETEVfRkFJTFVSRSk7CisrICAgICAgICAgICAgICAgIC8qCisrICAgICAgICAgICAg ICAgICAqIEEgcmVzdGFydCBvciBhYm9ydCBoYXBwZW5lZCBkdXJpbmcgYWN0aXZhdGlvbiwgYmVm b3JlIGFueQorKyAgICAgICAgICAgICAgICAgKiBjYWxsYmFja3Mgd2VyZSByZWdpc3RlcmVkLiBX ZSBtdXN0IGRlYWwgd2l0aCB0aGVtIGhlcmUuCisrICAgICAgICAgICAgICAgICAqLworKyAgICAg ICAgICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9I QU5ETEVfQUJPUlQgfHwKKysgICAgICAgICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRl ID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CisrICAgICAgICAgICAgICAg ICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfRkFJ TFVSRSkKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisr ICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgZWxzZSBpZihlcnJvciAhPSBHTE9C VVNfU1VDQ0VTUykKKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgZ2xv YnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90aWZ5X2ZhdWx0KAorKyAgICAgICAgICAgICAgICAg ICAgICAgIGNsaWVudF9oYW5kbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT51 cmxfc3RyaW5nLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKTsKKysKKysgICAgICAg ICAgICAgICAgICAgIGdvdG8gY29ubmVjdGlvbl9lcnJvcjsKKysgICAgICAgICAgICAgICAgfQor KyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICAgIGJyZWFrOworICAgICBkZWZhdWx0 OgorLQlnbG9idXNfYXNzZXJ0KDAgJiYgIkludmFsaWQgc3RhdGUiKTsKKysgICAgICAgIGdsb2J1 c19hc3NlcnQoMCAmJiAiSW52YWxpZCBzdGF0ZSIpOworICAgICB9CisgIGZpbmlzaDoKKyAgICAg Z2xvYnVzX2lfZnRwX2NsaWVudF9oYW5kbGVfdW5sb2NrKGNsaWVudF9oYW5kbGUpOworLSBkb19y ZXR1cm46ICAgCistICAgIAorKyBkb19yZXR1cm46CisrCisgICAgIGlmKGVycm9yKQorICAgICB7 CisgICAgICAgICBnbG9idXNfb2JqZWN0X2ZyZWUoZXJyb3IpOworICAgICB9CistICAgIGdsb2J1 c19pX2Z0cF9jbGllbnRfZGVidWdfcHJpbnRmKDEsIChzdGRlcnIsIAorKyAgICBnbG9idXNfaV9m dHBfY2xpZW50X2RlYnVnX3ByaW50ZigxLCAoc3RkZXJyLAorICAgICAgICAgImdsb2J1c19pX2Z0 cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2soKSBleGl0aW5nXG4iKSk7CisgICAgIGdsb2J1c19p X2Z0cF9jbGllbnRfZGVidWdfc3RhdGVzKDIsIGNsaWVudF9oYW5kbGUpOworIAorQEAgLTUzNDQs MTcgKzUzNDQsMTcgQEAgcmVkbzoKKyAgICAgZXJyb3IgPSBnbG9idXNfZXJyb3JfZ2V0KHJlc3Vs dCk7CisgIG5vdGlmeV9mYXVsdDoKKyAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9wbHVnaW5fbm90 aWZ5X2ZhdWx0KAorLQljbGllbnRfaGFuZGxlLAorLQl0YXJnZXQtPnVybF9zdHJpbmcsCistCWVy cm9yKTsKKysgICAgICAgIGNsaWVudF9oYW5kbGUsCisrICAgICAgICB0YXJnZXQtPnVybF9zdHJp bmcsCisrICAgICAgICBlcnJvcik7CisgIGNvbm5lY3Rpb25fZXJyb3I6CisgICAgIGdsb2J1c19s X2Z0cF9jbGllbnRfY29ubmVjdGlvbl9lcnJvcihjbGllbnRfaGFuZGxlLAorLQkJCQkJIHRhcmdl dCwKKy0JCQkJCSBlcnJvciwKKy0JCQkJCSByZXNwb25zZSk7CistICAgIAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXNwb25zZSk7CisrCisgICAgIGdsb2J1c19vYmplY3RfZnJlZShl cnJvcik7CistICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZGVidWdfcHJpbnRmKDEsIChzdGRlcnIs IAorKyAgICBnbG9idXNfaV9mdHBfY2xpZW50X2RlYnVnX3ByaW50ZigxLCAoc3RkZXJyLAorICAg ICAgICAgImdsb2J1c19pX2Z0cF9jbGllbnRfcmVzcG9uc2VfY2FsbGJhY2soKSBleGl0aW5nIHdp dGggZXJyb3JcbiIpKTsKKyAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9kZWJ1Z19zdGF0ZXMoMiwg Y2xpZW50X2hhbmRsZSk7CisgCitAQCAtNTM4Nyw4ICs1Mzg3LDggQEAgcmVkbzoKKyBzdGF0aWMK KyBnbG9idXNfb2JqZWN0X3QgKgorIGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2Vfc2l0ZV9oZWxw KAorLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3RhcmdldF90ICoJCXRhcmdldCwKKy0gICAgZ2xv YnVzX2Z0cF9jb250cm9sX3Jlc3BvbnNlX3QgKgkJcmVzcG9uc2UpCisrICAgIGdsb2J1c19pX2Z0 cF9jbGllbnRfdGFyZ2V0X3QgKiAgICAgICAgICAgICAgdGFyZ2V0LAorKyAgICBnbG9idXNfZnRw X2NvbnRyb2xfcmVzcG9uc2VfdCAqICAgICAgICAgICAgIHJlc3BvbnNlKQorIHsKKyAgICAgY2hh ciAqIHA7CisgCitAQCAtNTQwNyw3ICs1NDA3LDcgQEAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJz ZV9zaXRlX2hlbHAoCisgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7CisgICAg IH0KKyAgICAgaWYoKChwID0gc3Ryc3RyKChjaGFyICopIHJlc3BvbnNlLT5yZXNwb25zZV9idWZm ZXIsICJSQlVGU0laIikpICE9IDApICYmCistCSFpc3VwcGVyKCoocC0xKSkpCisrICAgICAgICAh aXN1cHBlcigqKHAtMSkpKQorICAgICB7CisgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X2Zl YXR1cmVfc2V0KAorICAgICAgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMsCitAQCAtNTQyOSw3ICs1 NDI5LDcgQEAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9zaXRlX2hlbHAoCisgICAgICAgICAg ICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7CisgICAgIH0KKyAgICAgaWYoKChwID0gc3Ryc3Ry KChjaGFyICopIHJlc3BvbnNlLT5yZXNwb25zZV9idWZmZXIsICJTQlVGU0laIikpICE9IDApICYm CistCSFpc3VwcGVyKCoocC0xKSkpCisrICAgICAgICAhaXN1cHBlcigqKHAtMSkpKQorICAgICB7 CisgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfc2V0KAorICAgICAgICAgICAg IHRhcmdldC0+ZmVhdHVyZXMsCitAQCAtNTQzNyw3ICs1NDM3LDcgQEAgZ2xvYnVzX2xfZnRwX2Ns aWVudF9wYXJzZV9zaXRlX2hlbHAoCisgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJV RSk7CisgICAgIH0KKyAgICAgaWYoKChwID0gc3Ryc3RyKChjaGFyICopIHJlc3BvbnNlLT5yZXNw b25zZV9idWZmZXIsICJCVUZTSVpFIikpICE9IDApICYmCistCSFpc3VwcGVyKCoocC0xKSkpCisr ICAgICAgICAhaXN1cHBlcigqKHAtMSkpKQorICAgICB7CisgICAgICAgICBnbG9idXNfaV9mdHBf Y2xpZW50X2ZlYXR1cmVfc2V0KAorICAgICAgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMsCitAQCAt NTQ0NSw3ICs1NDQ1LDcgQEAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9zaXRlX2hlbHAoCisg ICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7CisgICAgIH0KKyAgICAgaWYoKChw ID0gc3Ryc3RyKChjaGFyICopIHJlc3BvbnNlLT5yZXNwb25zZV9idWZmZXIsICJDSE1PRCIpKSAh PSAwKSAmJgorLQkhaXN1cHBlcigqKHAtMSkpKQorKyAgICAgICAgIWlzdXBwZXIoKihwLTEpKSkK KyAgICAgeworICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCgKKyAgICAg ICAgICAgICB0YXJnZXQtPmZlYXR1cmVzLAorQEAgLTU0NTksNyArNTQ1OSw3IEBAIGdsb2J1c19s X2Z0cF9jbGllbnRfcGFyc2Vfc2l0ZV9oZWxwKAorICAgICAgICAgICAgIHRhcmdldC0+ZmVhdHVy ZXMsCisgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9DSEdSUCwKKyAgICAg ICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9UUlVFKTsKKy0gICAgfSAgICAKKysgICAgfQorICAg ICBpZigoKHAgPSBzdHJzdHIoKGNoYXIgKikgcmVzcG9uc2UtPnJlc3BvbnNlX2J1ZmZlciwgIlVU SU1FIikpICE9IDApICYmCisgICAgICFpc3VwcGVyKCoocC0xKSkpCisgICAgIHsKK0BAIC01NDY3 LDcgKzU0NjcsNyBAQCBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX3NpdGVfaGVscCgKKyAgICAg ICAgICAgICB0YXJnZXQtPmZlYXR1cmVzLAorICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5U X0ZFQVRVUkVfVVRJTUUsCisgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7Cist ICAgIH0gICAgCisrICAgIH0KKyAgICAgaWYoKChwID0gc3Ryc3RyKChjaGFyICopIHJlc3BvbnNl LT5yZXNwb25zZV9idWZmZXIsICJTWU1MSU5LIikpICE9IDApICYmCisgICAgICFpc3VwcGVyKCoo cC0xKSkpCisgICAgIHsKK0BAIC01NDc1LDggKzU0NzUsOCBAQCBnbG9idXNfbF9mdHBfY2xpZW50 X3BhcnNlX3NpdGVfaGVscCgKKyAgICAgICAgICAgICB0YXJnZXQtPmZlYXR1cmVzLAorICAgICAg ICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRVUkVfU1lNTElOSywKKyAgICAgICAgICAgICBH TE9CVVNfRlRQX0NMSUVOVF9UUlVFKTsKKy0gICAgfSAgICAKKy0gICAgaWYoKChwID0gc3Ryc3Ry KChjaGFyICopIHJlc3BvbnNlLT5yZXNwb25zZV9idWZmZXIsICJBVVRIWl9BU1NFUlQiKSkgIT0g MCkgCisrICAgIH0KKysgICAgaWYoKChwID0gc3Ryc3RyKChjaGFyICopIHJlc3BvbnNlLT5yZXNw b25zZV9idWZmZXIsICJBVVRIWl9BU1NFUlQiKSkgIT0gMCkKKyAgICAgICAgICYmICFpc3VwcGVy KCoocC0xKSkpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9z ZXQoCitAQCAtNTQ4NCw3ICs1NDg0LDcgQEAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9zaXRl X2hlbHAoCisgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9BVVRIWl9BU1NF UlQsCisgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7CisgICAgIH0KKy0gICAg aWYoKChwID0gc3Ryc3RyKChjaGFyICopIHJlc3BvbnNlLT5yZXNwb25zZV9idWZmZXIsICJDTElF TlRJTkZPIikpICE9IDApIAorKyAgICBpZigoKHAgPSBzdHJzdHIoKGNoYXIgKikgcmVzcG9uc2Ut PnJlc3BvbnNlX2J1ZmZlciwgIkNMSUVOVElORk8iKSkgIT0gMCkKKyAgICAgICAgICYmICFpc3Vw cGVyKCoocC0xKSkpCisgICAgIHsKKyAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVy ZV9zZXQoCitAQCAtNTQ5Miw4ICs1NDkyLDggQEAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9z aXRlX2hlbHAoCisgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9DTElFTlRJ TkZPLAorICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX1RSVUUpOworICAgICB9CistICAg IAorLSAgICAKKysKKysKKyAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworIH0KKyAvKiBnbG9i dXNfbF9mdHBfY2xpZW50X3BhcnNlX3NpdGVfaGVscCgpICovCitAQCAtNTUxMywxODcgKzU1MTMs MTg3IEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2Vfc2l0ZV9oZWxwKAorIHN0YXRpYworIHZv aWQKKyBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX2ZlYXQoCistICAgIGdsb2J1c19pX2Z0cF9j bGllbnRfdGFyZ2V0X3QgKgkJdGFyZ2V0LAorLSAgICBnbG9idXNfZnRwX2NvbnRyb2xfcmVzcG9u c2VfdCAqCQlyZXNwb25zZSkKKysgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRfdCAqICAg ICAgICAgICAgICB0YXJnZXQsCisrICAgIGdsb2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICog ICAgICAgICAgICAgcmVzcG9uc2UpCisgeworLSAgICBjaGFyICoJCQkJCXA7CistICAgIGNoYXIg KgkJCQkJcHN0YXJ0OworLSAgICBnbG9idXNfYm9vbF90CQkJCWZpcnN0ID0gR0xPQlVTX1RSVUU7 CisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDsKKysg ICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3RhcnQ7Cisr ICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBH TE9CVVNfVFJVRTsKKysKKysgICAgaWYocmVzcG9uc2UtPmNvZGUgIT0gMjExKQorKyAgICB7Cisr ICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgcCA9IGdsb2J1c19saWJjX3N0cmR1cCgoY2hh ciAqKSByZXNwb25zZS0+cmVzcG9uc2VfYnVmZmVyKTsKKysgICAgcHN0YXJ0ID0gcDsKKysgICAg d2hpbGUoMSkKKysgICAgeworKyAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAg ICBlb2w7CisrICAgICAgICBlb2wgPSBzdHJzdHIocCwgQ1JMRik7CisrICAgICAgICBpZihlb2wg PT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBpbnQgaTsKKysgICAgICAgICAgICAvKiBM YXN0IGxpbmUgc2hvdWxkIGNvbnRhaW4gIjIxMSBFbmQiIENSTEYgT05MWSAqLworKyAgICAgICAg ICAgIGdsb2J1c19saWJjX2ZyZWUocHN0YXJ0KTsKKysKKysgICAgICAgICAgICAvKgorKyAgICAg ICAgICAgICAqIElmIHRoZXJlIGFyZSBhbnkgZmVhdHVyZXMgd2hpY2ggYXJlIGluIHRoZSB1bmtu b3duIHN0YXRlLAorKyAgICAgICAgICAgICAqIHNldCB0aGVtIHRvIGZhbHNlIG5vdy4KKysgICAg ICAgICAgICAgKi8KKysgICAgICAgICAgICBmb3IoaSA9IEdMT0JVU19GVFBfQ0xJRU5UX0ZJUlNU X0ZFQVRfRkVBVFVSRTsKKysgICAgICAgICAgICAgICAgaSA8PSBHTE9CVVNfRlRQX0NMSUVOVF9M QVNUX0ZFQVRfRkVBVFVSRTsKKysgICAgICAgICAgICAgICAgaSsrKQorKyAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgaWYoZ2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX2dldCgKKysg ICAgICAgICAgICAgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMsIGkpID09IEdMT0JVU19GVFBfQ0xJ RU5UX01BWUJFKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBnbG9i dXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfc2V0KAorKyAgICAgICAgICAgICAgICAgICAgICAgIHRh cmdldC0+ZmVhdHVyZXMsIGksIEdMT0JVU19GVFBfQ0xJRU5UX0ZBTFNFKTsKKysgICAgICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIH0KKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9 CisrICAgICAgICBlbHNlIGlmKGZpcnN0KQorKyAgICAgICAgeworKyAgICAgICAgICAgIC8qIEZp cnN0IGxpbmUgY29udGFpbnMgbm8gZmVhdHVyZS4gKi8KKysgICAgICAgICAgICBwID0gZW9sICsg MjsKKysgICAgICAgICAgICBmaXJzdCA9IEdMT0JVU19GQUxTRTsKKysgICAgICAgICAgICBjb250 aW51ZTsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAg ICAvKiBBbiBhY3R1YWwgZmVhdHVyZSEgKi8KKysgICAgICAgICAgICBjaGFyICogICAgICAgICAg ICAgICAgICAgICAgZmVhdHVyZV9sYWJlbDsKKysgICAgICAgICAgICBjaGFyICogICAgICAgICAg ICAgICAgICAgICAgZmVhdHVyZV9wYXJtczsKKysKKysgICAgICAgICAgICAqZW9sID0gJ1wwJzsK KysKKysgICAgICAgICAgICBmZWF0dXJlX2xhYmVsID0gcCArIDE7CisrICAgICAgICAgICAgZmVh dHVyZV9wYXJtcyA9IGZlYXR1cmVfbGFiZWw7CisrCisrICAgICAgICAgICAgLyogVkNIQVIgKCV4 MjEtJTdFKSAqLworKyAgICAgICAgICAgIHdoaWxlKCgqZmVhdHVyZV9wYXJtcykgPj0gKChjaGFy KTB4MjEpICYmCisrICAgICAgICAgICAgICAgICAgKCpmZWF0dXJlX3Bhcm1zKSA8PSAoKGNoYXIp MHg3ZSkpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBmZWF0dXJlX3Bhcm1zKys7 CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGlmKHN0cm5jbXAoZmVhdHVyZV9sYWJlbCwg IlJFU1QiLCA0KSA9PSAwKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgaWYoc3Ry c3RyKGZlYXR1cmVfcGFybXMsICJTVFJFQU0iKSkKKysgICAgICAgICAgICAgICAgeworKyAgICAg ICAgICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCgKKysgICAgICAg ICAgICAgICAgICAgICAgICB0YXJnZXQtPmZlYXR1cmVzLAorKyAgICAgICAgICAgICAgICAgICAg ICAgIEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRVUkVfUkVTVF9TVFJFQU0sCisrICAgICAgICAgICAg ICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7CisrICAgICAgICAgICAgICAgIH0K KysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZSBpZihzdHJuY21wKGZlYXR1cmVfbGFi ZWwsICJQQVJBTExFTCIsIDgpID09IDApCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg ICBnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfc2V0KAorKyAgICAgICAgICAgICAgICAgICAg dGFyZ2V0LT5mZWF0dXJlcywKKysgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5U X0ZFQVRVUkVfUEFSQUxMRUxJU00sCisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NM SUVOVF9UUlVFKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZSBpZihzdHJuY21w KGZlYXR1cmVfbGFiZWwsICJEQ0FVIiwgNCkgPT0gMCkKKysgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9zZXQoCisrICAgICAgICAgICAg ICAgICAgICB0YXJnZXQtPmZlYXR1cmVzLAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZU UF9DTElFTlRfRkVBVFVSRV9EQ0FVLAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9D TElFTlRfVFJVRSk7CisrICAgICAgICAgICAgICAgIC8qIFBlciBvdXIgZXh0ZW5zaW9ucyBkb2N1 bWVudCwgaWYgc2VydmVyIHB1Ymxpc2hlcworKyAgICAgICAgICAgICAgICAgKiBEQ0FVIGZlYXR1 cmUsIGl0IG11c3QgZGVmYXVsdCB0byBEQ0FVIFMoZWxmKQorKyAgICAgICAgICAgICAgICAgKiBp ZiB3ZSB1c2VkIFJGQyAyMjI4IGF1dGhlbnRpY2F0aW9uLgorKyAgICAgICAgICAgICAgICAgKgor KyAgICAgICAgICAgICAgICAgKiBnc2ktd3VmdHBkIDAuNSBhbmQgYmVsb3cgYXJlIGJyb2tlbiBp biB0aGlzIHJlZ2FyZC4KKysgICAgICAgICAgICAgICAgICovCisrICAgICAgICAgICAgICAgIGlm KHRhcmdldC0+dXJsLnNjaGVtZV90eXBlID09IEdMT0JVU19VUkxfU0NIRU1FX0dTSUZUUCkKKysg ICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LT5kY2F1Lm1vZGUg PSBHTE9CVVNfRlRQX0NPTlRST0xfRENBVV9ERUZBVUxUOworKyAgICAgICAgICAgICAgICB9Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UgaWYoc3RybmNtcChmZWF0dXJlX2xhYmVs LCAiRENTQyIsIDQpID09IDApCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBnbG9i dXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfc2V0KAorKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0 LT5mZWF0dXJlcywKKysgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRV UkVfRENTQywKKysgICAgICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX1RSVUUpOwor KyAgICAgICAgICAgIH0KKysgICAgICAgICAgICBlbHNlIGlmKHN0cm5jbXAoZmVhdHVyZV9sYWJl bCwgIkVTVE8iLCA0KSA9PSAwKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZ2xv YnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCgKKysgICAgICAgICAgICAgICAgICAgIHRhcmdl dC0+ZmVhdHVyZXMsCisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9GRUFU VVJFX0VTVE8sCisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9UUlVFKTsK KysgICAgICAgICAgICB9CisrICAgICAgICAgICAgZWxzZSBpZihzdHJuY21wKGZlYXR1cmVfbGFi ZWwsICJFUkVUIiwgNCkgPT0gMCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGds b2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9zZXQoCisrICAgICAgICAgICAgICAgICAgICB0YXJn ZXQtPmZlYXR1cmVzLAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVB VFVSRV9FUkVULAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7 CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGVsc2UgaWYoc3RybmNtcChmZWF0dXJlX2xh YmVsLCAiU0JVRiIsIDQpID09IDApCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBp bnQgaTsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCgK KysgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMsCisrICAgICAgICAgICAgICAg ICAgICBHTE9CVVNfRlRQX0NMSUVOVF9GRUFUVVJFX1NCVUYsCisrICAgICAgICAgICAgICAgICAg ICBHTE9CVVNfRlRQX0NMSUVOVF9UUlVFKTsKKysgICAgICAgICAgICAgICAgLyogSWYgU0JVRiBp cyBzdXBwb3J0ZWQsIHRoZW4gZG9uJ3QgYm90aGVyIHdpdGggb3RoZXIKKysgICAgICAgICAgICAg ICAgICogYnVmZmVyIHNpemUgY29tbWFuZHMKKysgICAgICAgICAgICAgICAgICovCisgCistICAg IGlmKHJlc3BvbnNlLT5jb2RlICE9IDIxMSkKKy0gICAgeworLQlyZXR1cm47CistICAgIH0KKy0g ICAgcCA9IGdsb2J1c19saWJjX3N0cmR1cCgoY2hhciAqKSByZXNwb25zZS0+cmVzcG9uc2VfYnVm ZmVyKTsKKy0gICAgcHN0YXJ0ID0gcDsKKy0gICAgd2hpbGUoMSkKKy0gICAgeworLQljaGFyICoJ CQkJZW9sOworLQllb2wgPSBzdHJzdHIocCwgQ1JMRik7CistCWlmKGVvbCA9PSAwKQorLQl7Cist CSAgICBpbnQgaTsKKy0JICAgIC8qIExhc3QgbGluZSBzaG91bGQgY29udGFpbiAiMjExIEVuZCIg Q1JMRiBPTkxZICovCistCSAgICBnbG9idXNfbGliY19mcmVlKHBzdGFydCk7CistCistCSAgICAv KgorLQkgICAgICogSWYgdGhlcmUgYXJlIGFueSBmZWF0dXJlcyB3aGljaCBhcmUgaW4gdGhlIHVu a25vd24gc3RhdGUsCistCSAgICAgKiBzZXQgdGhlbSB0byBmYWxzZSBub3cuCistCSAgICAgKi8K Ky0JICAgIGZvcihpID0gR0xPQlVTX0ZUUF9DTElFTlRfRklSU1RfRkVBVF9GRUFUVVJFOworLQkJ aSA8PSBHTE9CVVNfRlRQX0NMSUVOVF9MQVNUX0ZFQVRfRkVBVFVSRTsKKy0JCWkrKykKKy0JICAg IHsKKy0JCWlmKGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9nZXQoCistCQkgICAgdGFyZ2V0 LT5mZWF0dXJlcywgaSkgPT0gR0xPQlVTX0ZUUF9DTElFTlRfTUFZQkUpCistCQl7CistCQkgICAg Z2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCgKKy0JCSAgICAgICAgdGFyZ2V0LT5mZWF0 dXJlcywgaSwgR0xPQlVTX0ZUUF9DTElFTlRfRkFMU0UpOworLQkJfQorLQkgICAgfQorLQkgICAg cmV0dXJuOworLQl9CistCWVsc2UgaWYoZmlyc3QpCistCXsKKy0JICAgIC8qIEZpcnN0IGxpbmUg Y29udGFpbnMgbm8gZmVhdHVyZS4gKi8KKy0JICAgIHAgPSBlb2wgKyAyOworLQkgICAgZmlyc3Qg PSBHTE9CVVNfRkFMU0U7CistCSAgICBjb250aW51ZTsKKy0JfQorLQllbHNlCistCXsKKy0JICAg IC8qIEFuIGFjdHVhbCBmZWF0dXJlISAqLworLQkgICAgY2hhciAqCQkJZmVhdHVyZV9sYWJlbDsK Ky0JICAgIGNoYXIgKgkJCWZlYXR1cmVfcGFybXM7CistCistCSAgICAqZW9sID0gJ1wwJzsKKy0K Ky0JICAgIGZlYXR1cmVfbGFiZWwgPSBwICsgMTsKKy0JICAgIGZlYXR1cmVfcGFybXMgPSBmZWF0 dXJlX2xhYmVsOworLQorLQkgICAgLyogVkNIQVIgKCV4MjEtJTdFKSAqLworLQkgICAgd2hpbGUo KCpmZWF0dXJlX3Bhcm1zKSA+PSAoKGNoYXIpMHgyMSkgJiYKKy0JCSAgKCpmZWF0dXJlX3Bhcm1z KSA8PSAoKGNoYXIpMHg3ZSkpCistCSAgICB7CistCQlmZWF0dXJlX3Bhcm1zKys7CistCSAgICB9 CistCSAgICBpZihzdHJuY21wKGZlYXR1cmVfbGFiZWwsICJSRVNUIiwgNCkgPT0gMCkKKy0JICAg IHsKKy0JCWlmKHN0cnN0cihmZWF0dXJlX3Bhcm1zLCAiU1RSRUFNIikpCistCQl7CistCQkgICAg Z2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCgKKy0JCSAgICAgICAgdGFyZ2V0LT5mZWF0 dXJlcywKKy0JCSAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9SRVNUX1NUUkVBTSwK Ky0JCSAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7CistCQl9CistCSAgICB9CistCSAg ICBlbHNlIGlmKHN0cm5jbXAoZmVhdHVyZV9sYWJlbCwgIlBBUkFMTEVMIiwgOCkgPT0gMCkKKy0J ICAgIHsKKy0JICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfc2V0KAorLQkgICAg ICAgICAgICB0YXJnZXQtPmZlYXR1cmVzLAorLQkgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVO VF9GRUFUVVJFX1BBUkFMTEVMSVNNLAorLQkgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9U UlVFKTsKKy0JICAgIH0KKy0JICAgIGVsc2UgaWYoc3RybmNtcChmZWF0dXJlX2xhYmVsLCAiRENB VSIsIDQpID09IDApCistCSAgICB7CistCSAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0 dXJlX3NldCgKKy0JICAgICAgICAgICAgdGFyZ2V0LT5mZWF0dXJlcywKKy0JICAgICAgICAgICAg R0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9EQ0FVLAorLQkgICAgICAgICAgICBHTE9CVVNfRlRQ X0NMSUVOVF9UUlVFKTsKKy0JCS8qIFBlciBvdXIgZXh0ZW5zaW9ucyBkb2N1bWVudCwgaWYgc2Vy dmVyIHB1Ymxpc2hlcworLQkJICogRENBVSBmZWF0dXJlLCBpdCBtdXN0IGRlZmF1bHQgdG8gRENB VSBTKGVsZikKKy0JCSAqIGlmIHdlIHVzZWQgUkZDIDIyMjggYXV0aGVudGljYXRpb24uCistCQkg KgorLQkJICogZ3NpLXd1ZnRwZCAwLjUgYW5kIGJlbG93IGFyZSBicm9rZW4gaW4gdGhpcyByZWdh cmQuCistCQkgKi8KKy0JCWlmKHRhcmdldC0+dXJsLnNjaGVtZV90eXBlID09IEdMT0JVU19VUkxf U0NIRU1FX0dTSUZUUCkKKy0JCXsKKy0JCSAgICB0YXJnZXQtPmRjYXUubW9kZSA9IEdMT0JVU19G VFBfQ09OVFJPTF9EQ0FVX0RFRkFVTFQ7CistCQl9CistCSAgICB9CistCSAgICBlbHNlIGlmKHN0 cm5jbXAoZmVhdHVyZV9sYWJlbCwgIkRDU0MiLCA0KSA9PSAwKQorLQkgICAgeworLQkgICAgICAg IGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9zZXQoCistCSAgICAgICAgICAgIHRhcmdldC0+ ZmVhdHVyZXMsCistCSAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRVUkVfRENTQywK Ky0JICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7CistCSAgICB9CistCSAgICBl bHNlIGlmKHN0cm5jbXAoZmVhdHVyZV9sYWJlbCwgIkVTVE8iLCA0KSA9PSAwKQorLQkgICAgewor LQkgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9zZXQoCistCSAgICAgICAgICAg IHRhcmdldC0+ZmVhdHVyZXMsCistCSAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRV UkVfRVNUTywKKy0JICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7CistCSAgICB9 CistCSAgICBlbHNlIGlmKHN0cm5jbXAoZmVhdHVyZV9sYWJlbCwgIkVSRVQiLCA0KSA9PSAwKQor LQkgICAgeworLQkgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9zZXQoCistCSAg ICAgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMsCistCSAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJ RU5UX0ZFQVRVUkVfRVJFVCwKKy0JICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7 CistCSAgICB9CistCSAgICBlbHNlIGlmKHN0cm5jbXAoZmVhdHVyZV9sYWJlbCwgIlNCVUYiLCA0 KSA9PSAwKQorLQkgICAgeworLQkJaW50IGk7CistCQlnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1 cmVfc2V0KAorLQkJICAgIHRhcmdldC0+ZmVhdHVyZXMsCistCQkgICAgR0xPQlVTX0ZUUF9DTElF TlRfRkVBVFVSRV9TQlVGLAorLQkJICAgIEdMT0JVU19GVFBfQ0xJRU5UX1RSVUUpOworLQkJLyog SWYgU0JVRiBpcyBzdXBwb3J0ZWQsIHRoZW4gZG9uJ3QgYm90aGVyIHdpdGggb3RoZXIKKy0JCSAq IGJ1ZmZlciBzaXplIGNvbW1hbmRzCistCQkgKi8KKy0KKy0JCWZvcihpID0gMDsgaSA8IEdMT0JV U19GVFBfQ0xJRU5UX0ZFQVRVUkVfU0JVRjsgaSsrKQorLQkJeworLQkJICAgIGlmKGdsb2J1c19p X2Z0cF9jbGllbnRfZmVhdHVyZV9nZXQoCistCQkgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMsIGkp ID09IEdMT0JVU19GVFBfQ0xJRU5UX01BWUJFKQorLQkJICAgIHsKKy0JCSAgICAgICAgZ2xvYnVz X2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCgKKy0JCSAgICAgICAgICAgIHRhcmdldC0+ZmVhdHVy ZXMsIGksIEdMT0JVU19GVFBfQ0xJRU5UX0ZBTFNFKTsKKy0JCSAgICB9CistCQl9CistCSAgICB9 CistCSAgICBlbHNlIGlmKHN0cm5jbXAoZmVhdHVyZV9sYWJlbCwgIkFCVUYiLCA0KSA9PSAwKQor LQkgICAgeworLQkgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9zZXQoCistCSAg ICAgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMsCistCSAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJ RU5UX0ZFQVRVUkVfQUJVRiwKKy0JICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7 CistCSAgICB9CistCSAgICBlbHNlIGlmKHN0cm5jbXAoZmVhdHVyZV9sYWJlbCwgIlNJWkUiLCA0 KSA9PSAwKQorLQkgICAgeworLQkgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9z ZXQoCistCSAgICAgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMsCistCSAgICAgICAgICAgIEdMT0JV U19GVFBfQ0xJRU5UX0ZFQVRVUkVfU0laRSwKKy0JICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElF TlRfVFJVRSk7CistCSAgICB9CisrICAgICAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IEdMT0JV U19GVFBfQ0xJRU5UX0ZFQVRVUkVfU0JVRjsgaSsrKQorKyAgICAgICAgICAgICAgICB7CisrICAg ICAgICAgICAgICAgICAgICBpZihnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfZ2V0KAorKyAg ICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMsIGkpID09IEdMT0JVU19GVFBf Q0xJRU5UX01BWUJFKQorKyAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAg ICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9zZXQoCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMsIGksIEdMT0JVU19GVFBfQ0xJRU5UX0ZBTFNF KTsKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAg ICAgIH0KKysgICAgICAgICAgICBlbHNlIGlmKHN0cm5jbXAoZmVhdHVyZV9sYWJlbCwgIkFCVUYi LCA0KSA9PSAwKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgZ2xvYnVzX2lfZnRw X2NsaWVudF9mZWF0dXJlX3NldCgKKysgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+ZmVhdHVy ZXMsCisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9GRUFUVVJFX0FCVUYs CisrICAgICAgICAgICAgICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9UUlVFKTsKKysgICAgICAg ICAgICB9CisrICAgICAgICAgICAgZWxzZSBpZihzdHJuY21wKGZlYXR1cmVfbGFiZWwsICJTSVpF IiwgNCkgPT0gMCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0 cF9jbGllbnRfZmVhdHVyZV9zZXQoCisrICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPmZlYXR1 cmVzLAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9TSVpF LAorKyAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7CisrICAgICAg ICAgICAgfQorICAgICAgICAgICAgIGVsc2UgaWYoc3RybmNtcChmZWF0dXJlX2xhYmVsLCAiR0VU UFVUIiwgNikgPT0gMCkKKyAgICAgICAgICAgICB7CistCSAgICAgICAgZ2xvYnVzX2lfZnRwX2Ns aWVudF9mZWF0dXJlX3NldCgKKy0JICAgICAgICAgICAgdGFyZ2V0LT5mZWF0dXJlcywKKy0JICAg ICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9HRVRQVVQsCistCSAgICAgICAgICAg IEdMT0JVU19GVFBfQ0xJRU5UX1RSVUUpOyAgICAgICAgICAgICAgICAKKy0gICAgICAgICAgICB9 CistCSAgICBlbHNlIGlmKHN0cm5jbXAoZmVhdHVyZV9sYWJlbCwgIk1MU1QiLCA0KSA9PSAwKQor LQkgICAgeworLQkgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9zZXQoCistCSAg ICAgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMsCistCSAgICAgICAgICAgIEdMT0JVU19GVFBfQ0xJ RU5UX0ZFQVRVUkVfTUxTVCwKKy0JICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7 CistCSAgICB9CisrICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9z ZXQoCisrICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPmZlYXR1cmVzLAorKyAgICAgICAgICAg ICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9HRVRQVVQsCisrICAgICAgICAgICAg ICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9UUlVFKTsKKysgICAgICAgICAgICB9CisrICAgICAg ICAgICAgZWxzZSBpZihzdHJuY21wKGZlYXR1cmVfbGFiZWwsICJNTFNUIiwgNCkgPT0gMCkKKysg ICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVy ZV9zZXQoCisrICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPmZlYXR1cmVzLAorKyAgICAgICAg ICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9NTFNULAorKyAgICAgICAgICAg ICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSk7CisrICAgICAgICAgICAgfQorICAgICAg ICAgICAgIGVsc2UgaWYoc3RybmNtcChmZWF0dXJlX2xhYmVsLCAiUEFTViIsIDQpID09IDApCist CSAgICB7CistCQlpZihzdHJzdHIoZmVhdHVyZV9wYXJtcywgIkFsbG93RGVsYXllZCIpKQorLQkJ eworLQkJICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9zZXQoCistCQkgICAgICAgIHRh cmdldC0+ZmVhdHVyZXMsCistCQkgICAgICAgIEdMT0JVU19GVFBfQ0xJRU5UX0ZFQVRVUkVfREVM QVlFRF9QQVNWLAorLQkJICAgICAgICBHTE9CVVNfRlRQX0NMSUVOVF9UUlVFKTsKKy0JCX0KKy0J ICAgIH0KKy0JICAgIHAgPSBlb2wgKyAyOworLQorLQl9CisrICAgICAgICAgICAgeworKyAgICAg ICAgICAgICAgICBpZihzdHJzdHIoZmVhdHVyZV9wYXJtcywgIkFsbG93RGVsYXllZCIpKQorKyAg ICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50 X2ZlYXR1cmVfc2V0KAorKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMs CisrICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9ERUxB WUVEX1BBU1YsCisrICAgICAgICAgICAgICAgICAgICAgICAgR0xPQlVTX0ZUUF9DTElFTlRfVFJV RSk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgcCA9 IGVvbCArIDI7CisrCisrICAgICAgICB9CisgICAgIH0KKyB9CisgLyogZ2xvYnVzX2xfZnRwX2Ns aWVudF9wYXJzZV9mZWF0KCkgKi8KK0BAIC01NzE5LDE4ICs1NzE5LDE4IEBAIHN0YXRpYworIHZv aWQKKyBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX3Bhc3YoCisgICAgIGdsb2J1c19mdHBfY29u dHJvbF9oYW5kbGVfdCAqICAgICAgICAgICAgICAgaGFuZGxlLAorLSAgICBnbG9idXNfZnRwX2Nv bnRyb2xfcmVzcG9uc2VfdCAqCQlyZXNwb25zZSwKKy0gICAgZ2xvYnVzX2Z0cF9jb250cm9sX2hv c3RfcG9ydF90ICoqCQlob3N0X3BvcnQsCistICAgIGludCAqCQkJCQludW1fcGFzdl9hZGRyZXNz ZXMpCisrICAgIGdsb2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICogICAgICAgICAgICAgcmVz cG9uc2UsCisrICAgIGdsb2J1c19mdHBfY29udHJvbF9ob3N0X3BvcnRfdCAqKiAgICAgICAgICAg aG9zdF9wb3J0LAorKyAgICBpbnQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG51bV9wYXN2X2FkZHJlc3NlcykKKyB7CistICAgIGNoYXIgKgkJCQkJcDsKKy0gICAgaW50 CQkJCQkJcG9ydFsyXSA9IHswLDB9OworLSAgICBpbnQJCQkJCQlyYzsKKy0gICAgaW50CQkJCQkJ aTsKKy0gICAgaW50CQkJCQkJY29uc3VtZWQ7CisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcDsKKysgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwb3J0WzJdID0gezAsMH07CisrICAgIGludCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7CisrICAgIGludCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaTsKKysgICAgaW50ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdW1lZDsKKyAgICAgY2hhciAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZWxpbTsKKyAgICAgY2hhciAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBidWZbMTAwXTsKKy0gICAgCisrCisgICAgIHAgPSBzdHJj aHIoKGNoYXIgKikgcmVzcG9uc2UtPnJlc3BvbnNlX2J1ZmZlciwgJygnKTsKKyAgICAgaWYocmVz cG9uc2UtPmNvZGUgPT0gMjI5KQorICAgICB7CitAQCAtNTczOCwxNCArNTczOCwxNCBAQCBnbG9i dXNfbF9mdHBfY2xpZW50X3BhcnNlX3Bhc3YoCisgICAgICAgICB7CisgICAgICAgICAgICAgLyog c3BhcyAqLworICAgICAgICAgICAgICgqbnVtX3Bhc3ZfYWRkcmVzc2VzKSA9IC0yOworLSAgICAg ICAgICAgIAorKworICAgICAgICAgICAgIHAgPSAoY2hhciAqKSByZXNwb25zZS0+cmVzcG9uc2Vf YnVmZmVyOworICAgICAgICAgICAgIHdoaWxlKEdMT0JVU19OVUxMICE9IChwID0gc3RyY2hyKHAs ICdcbicpKSkKKyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICgqbnVtX3Bhc3ZfYWRk cmVzc2VzKSsrOworICAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICAgfQorLSAgICAK KysKKyAgICAgICAgICAgICAvKiBza2lwIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSAyMjkgcmVzcG9u c2UgKi8KKyAgICAgICAgICAgICBwID0gc3RyY2hyKChjaGFyICopIHJlc3BvbnNlLT5yZXNwb25z ZV9idWZmZXIsICdcbicpICsgMTsKKyAgICAgICAgICAgICB3aGlsZShpc3NwYWNlKCpwKSkgcCsr OworQEAgLTU3NTksMjcgKzU3NTksMjcgQEAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9wYXN2 KAorICAgICB9CisgICAgIGVsc2UKKyAgICAgeworLQkoKm51bV9wYXN2X2FkZHJlc3NlcykgPSAx OworLQorLQkvKiBza2lwIHRoZSBpbml0aWFsIDIyNyBpbiB0aGUgcmVzcG9uc2UgKi8KKy0JaWYo IXApCistCXsKKy0JICAgIHAgPSAoY2hhciAqKSByZXNwb25zZS0+cmVzcG9uc2VfYnVmZmVyICsg MzsKKy0JICAgIHdoaWxlKGlzc3BhY2UoKnApKSBwKys7CistCX0KKy0JZWxzZQorLQl7CistCSAg ICBwKys7CistCX0KKysgICAgICAgICgqbnVtX3Bhc3ZfYWRkcmVzc2VzKSA9IDE7CisrCisrICAg ICAgICAvKiBza2lwIHRoZSBpbml0aWFsIDIyNyBpbiB0aGUgcmVzcG9uc2UgKi8KKysgICAgICAg IGlmKCFwKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHAgPSAoY2hhciAqKSByZXNwb25zZS0+ cmVzcG9uc2VfYnVmZmVyICsgMzsKKysgICAgICAgICAgICB3aGlsZShpc3NwYWNlKCpwKSkgcCsr OworKyAgICAgICAgfQorKyAgICAgICAgZWxzZQorKyAgICAgICAgeworKyAgICAgICAgICAgIHAr KzsKKysgICAgICAgIH0KKyAgICAgfQorICAgICAoKmhvc3RfcG9ydCkgPSBnbG9idXNfbGliY19j YWxsb2MoKCpudW1fcGFzdl9hZGRyZXNzZXMpLAorLQkJCQkgICBzaXplb2YoZ2xvYnVzX2Z0cF9j b250cm9sX2hvc3RfcG9ydF90KSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YoZ2xvYnVzX2Z0cF9jb250cm9sX2hvc3RfcG9ydF90KSk7CisgCisgICAgIGlmKGlz ZGlnaXQoZGVsaW0gPSAqcCkpCisgICAgIHsKKyAgICAgICAgIGRlbGltID0gMDsKKyAgICAgfQor LSAgICAKKysKKyAgICAgZm9yKGkgPSAwOyBpIDwgKCpudW1fcGFzdl9hZGRyZXNzZXMpICYmICpw OyBpKyspCisgICAgIHsKKyAgICAgICAgIGlmKGRlbGltKQorQEAgLTU3OTYsMjMgKzU3OTYsMjMg QEAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9wYXN2KAorICAgICAgICAgICAgICAgICBpbnQg ICAgICAgICAgICAgICAgICAgICBqID0gMDsKKyAgICAgICAgICAgICAgICAgY2hhciAqICAgICAg ICAgICAgICAgICAgczsKKyAgICAgICAgICAgICAgICAgY2hhciAqICAgICAgICAgICAgICAgICAg YzsKKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAg ICAgICAgICAgYyA9IHN0cmNocihwLCAnOicpOworICAgICAgICAgICAgICAgICBzID0gc3RyY2hy KHAsIGRlbGltKTsKKy0gICAgICAgICAgICAgICAgCisrCisgICAgICAgICAgICAgICAgIGlmKCpw ICE9IGRlbGltKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICBpZihj ICYmIGMgPCBzKQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg ICAgIGJ1ZltqKytdID0gJ1snOworICAgICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAg ICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgIHdoaWxlKGogPCBzaXplb2YoYnVmKSAtIDEg JiYgcCA8IHMpCisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg ICAgYnVmW2orK10gPSAqKHArKyk7CisgICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAg ICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgIGlmKCpwID09IGRlbGltICYmIGog KyA3IDwgc2l6ZW9mKGJ1ZikpCisgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgcCsrOworQEAgLTU4MjAsNyArNTgyMCw3IEBAIGdsb2J1c19sX2Z0cF9jbGll bnRfcGFyc2VfcGFzdigKKyAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJ1ZltqKytdID0gJ10nOworICAgICAgICAgICAgICAgICAgICAgICAg IH0KKy0gICAgICAgICAgICAgICAgICAgICAgICAKKysKKyAgICAgICAgICAgICAgICAgICAgICAg ICBidWZbaisrXSA9ICc6JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZShqIDwgc2l6 ZW9mKGJ1ZikgLSAyICYmICpwICYmICpwICE9IGRlbGltKQorICAgICAgICAgICAgICAgICAgICAg ICAgIHsKK0BAIC01ODMxLDkgKzU4MzEsOSBAQCBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX3Bh c3YoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICAgICAK KysKKyAgICAgICAgICAgICAgICAgICAgIGJ1ZltqXSA9IDA7CistICAgICAgICAgICAgICAgICAg ICAKKysKKyAgICAgICAgICAgICAgICAgICAgIGdsb2J1c19saWJjX2NvbnRhY3Rfc3RyaW5nX3Rv X2ludHMoYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICgqaG9zdF9wb3J0KVtpXS5ob3N0 LAorICAgICAgICAgICAgICAgICAgICAgICAgICYoKmhvc3RfcG9ydClbaV0uaG9zdGxlbiwKK0BA IC01ODUyLDcgKzU4NTIsNyBAQCBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX3Bhc3YoCisgICAg ICAgICBlbHNlCisgICAgICAgICB7CisgICAgICAgICAgICAgd2hpbGUoKnAgJiYgIWlzZGlnaXQo KnApKSBwKys7CistICAgIAorKworICAgICAgICAgICAgIHJjID0gc3NjYW5mKHAsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIiVkLCVkLCVkLCVkLCVkLCVkJW4iLAorICAgICAgICAgICAgICAg ICAgICAgICAgICYoKmhvc3RfcG9ydClbaV0uaG9zdFswXSwKK0BAIC01ODkwLDQwICs1ODkwLDQw IEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2VfcGFzdigKKyBzdGF0aWMKKyBjaGFyICoKKyBn bG9idXNfbF9mdHBfY2xpZW50X2xheW91dF9zdHJpbmcoCistICAgIGdsb2J1c19pX2Z0cF9jbGll bnRfdGFyZ2V0X3QgKgkJdGFyZ2V0KQorKyAgICBnbG9idXNfaV9mdHBfY2xpZW50X3RhcmdldF90 ICogICAgICAgICAgICAgIHRhcmdldCkKKyB7CistICAgIGNoYXIgKgkJCQkJcHRyID0gR0xPQlVT X05VTEw7CistICAgIGdsb2J1c19zaXplX3QJCQkJbGVuZ3RoOworKyAgICBjaGFyICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0ciA9IEdMT0JVU19OVUxMOworKyAgICBn bG9idXNfc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aDsKKyAKKy0g ICAgbGVuZ3RoID0gMTY7CQkvKiAiIFN0cmlwZUxheW91dD07XDAiICovCisrICAgIGxlbmd0aCA9 IDE2OyAgICAgICAgICAgICAgICAvKiAiIFN0cmlwZUxheW91dD07XDAiICovCisgCisgICAgIHN3 aXRjaCh0YXJnZXQtPmF0dHItPmxheW91dC5tb2RlKQorICAgICB7CisgICAgIGNhc2UgR0xPQlVT X0ZUUF9DT05UUk9MX1NUUklQSU5HX1BBUlRJVElPTkVEOgorLQlpZih0YXJnZXQtPmxheW91dC5t b2RlICE9IEdMT0JVU19GVFBfQ09OVFJPTF9TVFJJUElOR19QQVJUSVRJT05FRCkKKy0JeworLQkg ICAgbGVuZ3RoICs9IDExOwkvKiAiUGFydGl0aW9uZWQiICovCistCSAgICBwdHIgPSBnbG9idXNf bGliY19tYWxsb2MobGVuZ3RoKTsKKy0JICAgIHNwcmludGYocHRyLCAiU3RyaXBlTGF5b3V0PVBh cnRpdGlvbmVkOyIpOworLQl9CistCWJyZWFrOworKyAgICAgICAgaWYodGFyZ2V0LT5sYXlvdXQu bW9kZSAhPSBHTE9CVVNfRlRQX0NPTlRST0xfU1RSSVBJTkdfUEFSVElUSU9ORUQpCisrICAgICAg ICB7CisrICAgICAgICAgICAgbGVuZ3RoICs9IDExOyAgICAgICAvKiAiUGFydGl0aW9uZWQiICov CisrICAgICAgICAgICAgcHRyID0gZ2xvYnVzX2xpYmNfbWFsbG9jKGxlbmd0aCk7CisrICAgICAg ICAgICAgc3ByaW50ZihwdHIsICJTdHJpcGVMYXlvdXQ9UGFydGl0aW9uZWQ7Iik7CisrICAgICAg ICB9CisrICAgICAgICBicmVhazsKKyAgICAgY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xfU1RSSVBJ TkdfQkxPQ0tFRF9ST1VORF9ST0JJTjoKKy0JaWYoKHRhcmdldC0+bGF5b3V0Lm1vZGUgIT0KKy0J ICAgICAgICBHTE9CVVNfRlRQX0NPTlRST0xfU1RSSVBJTkdfQkxPQ0tFRF9ST1VORF9ST0JJTikg fHwKKy0JICAgKHRhcmdldC0+YXR0ci0+bGF5b3V0LnJvdW5kX3JvYmluLmJsb2NrX3NpemUgIT0K Ky0JICAgICAgICB0YXJnZXQtPmxheW91dC5yb3VuZF9yb2Jpbi5ibG9ja19zaXplKSkKKy0Jewor LQkgICAgbGVuZ3RoICs9IDE4OwkvKiAiQmxvY2tlZDtCbG9ja1NpemU9IiAqLworLQkgICAgbGVu Z3RoICs9CistCQlnbG9idXNfaV9mdHBfY2xpZW50X2NvdW50X2RpZ2l0cygKKy0JCSAgICB0YXJn ZXQtPmF0dHItPmxheW91dC5yb3VuZF9yb2Jpbi5ibG9ja19zaXplKTsKKy0JICAgIHB0ciA9IGds b2J1c19saWJjX21hbGxvYyhsZW5ndGgpOworLQkgICAgc3ByaW50ZihwdHIsICJTdHJpcGVMYXlv dXQ9QmxvY2tlZDtCbG9ja1NpemU9JWQ7IiwKKy0JCSAgICAoaW50KSB0YXJnZXQtPmF0dHItPmxh eW91dC5yb3VuZF9yb2Jpbi5ibG9ja19zaXplKTsKKy0JfQorLQlicmVhazsKKysgICAgICAgIGlm KCh0YXJnZXQtPmxheW91dC5tb2RlICE9CisrICAgICAgICAgICAgICAgIEdMT0JVU19GVFBfQ09O VFJPTF9TVFJJUElOR19CTE9DS0VEX1JPVU5EX1JPQklOKSB8fAorKyAgICAgICAgICAgKHRhcmdl dC0+YXR0ci0+bGF5b3V0LnJvdW5kX3JvYmluLmJsb2NrX3NpemUgIT0KKysgICAgICAgICAgICAg ICAgdGFyZ2V0LT5sYXlvdXQucm91bmRfcm9iaW4uYmxvY2tfc2l6ZSkpCisrICAgICAgICB7Cisr ICAgICAgICAgICAgbGVuZ3RoICs9IDE4OyAgICAgICAvKiAiQmxvY2tlZDtCbG9ja1NpemU9IiAq LworKyAgICAgICAgICAgIGxlbmd0aCArPQorKyAgICAgICAgICAgICAgICBnbG9idXNfaV9mdHBf Y2xpZW50X2NvdW50X2RpZ2l0cygKKysgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+YXR0ci0+ bGF5b3V0LnJvdW5kX3JvYmluLmJsb2NrX3NpemUpOworKyAgICAgICAgICAgIHB0ciA9IGdsb2J1 c19saWJjX21hbGxvYyhsZW5ndGgpOworKyAgICAgICAgICAgIHNwcmludGYocHRyLCAiU3RyaXBl TGF5b3V0PUJsb2NrZWQ7QmxvY2tTaXplPSVkOyIsCisrICAgICAgICAgICAgICAgICAgICAoaW50 KSB0YXJnZXQtPmF0dHItPmxheW91dC5yb3VuZF9yb2Jpbi5ibG9ja19zaXplKTsKKysgICAgICAg IH0KKysgICAgICAgIGJyZWFrOworICAgICBjYXNlIEdMT0JVU19GVFBfQ09OVFJPTF9TVFJJUElO R19OT05FOgorLQlicmVhazsKKysgICAgICAgIGJyZWFrOworICAgICB9CisgICAgIHJldHVybiBw dHI7CisgfQorQEAgLTU5NDIsMzkgKzU5NDIsMzkgQEAgZ2xvYnVzX2xfZnRwX2NsaWVudF9sYXlv dXRfc3RyaW5nKAorIHN0YXRpYworIGNoYXIgKgorIGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyYWxs ZWxpc21fc3RyaW5nKAorLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3RhcmdldF90ICoJCXRhcmdl dCkKKysgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRfdCAqICAgICAgICAgICAgICB0YXJn ZXQpCisgeworLSAgICBjaGFyICoJCQkJCXB0ciA9IEdMT0JVU19OVUxMOworLSAgICBnbG9idXNf c2l6ZV90CQkJCWxlbmd0aDsKKysgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwdHIgPSBHTE9CVVNfTlVMTDsKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg7CisgCistICAgIGxlbmd0aCA9IDE3OwkJLyog IiBQYXJhbGxlbGlzbT0sLDtcMCIgKi8KKysgICAgbGVuZ3RoID0gMTc7ICAgICAgICAgICAgICAg IC8qICIgUGFyYWxsZWxpc209LCw7XDAiICovCisgCisgICAgIHN3aXRjaCh0YXJnZXQtPmF0dHIt PnBhcmFsbGVsaXNtLm1vZGUpCisgICAgIHsKKyAgICAgY2FzZSBHTE9CVVNfRlRQX0NPTlRST0xf UEFSQUxMRUxJU01fRklYRUQ6CistCWlmKCh0YXJnZXQtPnBhcmFsbGVsaXNtLm1vZGUgIT0KKy0J ICAgICAgICBHTE9CVVNfRlRQX0NPTlRST0xfUEFSQUxMRUxJU01fRklYRUQpIHx8CistCSAgICh0 YXJnZXQtPmF0dHItPnBhcmFsbGVsaXNtLmZpeGVkLnNpemUgIT0KKy0JICAgICAgICB0YXJnZXQt PnBhcmFsbGVsaXNtLmZpeGVkLnNpemUpKQorLQl7CistCSAgICBsZW5ndGggKz0gMyAqCistCQln bG9idXNfaV9mdHBfY2xpZW50X2NvdW50X2RpZ2l0cygKKy0JCSAgICB0YXJnZXQtPmF0dHItPnBh cmFsbGVsaXNtLmZpeGVkLnNpemUpOworLQkgICAgcHRyID0gZ2xvYnVzX2xpYmNfbWFsbG9jKGxl bmd0aCk7CistCSAgICBzcHJpbnRmKHB0ciwgIlBhcmFsbGVsaXNtPSVkLCVkLCVkOyIsCistCQkg ICAgKGludCkgdGFyZ2V0LT5hdHRyLT5wYXJhbGxlbGlzbS5maXhlZC5zaXplLAorLQkJICAgIChp bnQpIHRhcmdldC0+YXR0ci0+cGFyYWxsZWxpc20uZml4ZWQuc2l6ZSwKKy0JCSAgICAoaW50KSB0 YXJnZXQtPmF0dHItPnBhcmFsbGVsaXNtLmZpeGVkLnNpemUpOworLQl9CistCWJyZWFrOworKyAg ICAgICAgaWYoKHRhcmdldC0+cGFyYWxsZWxpc20ubW9kZSAhPQorKyAgICAgICAgICAgICAgICBH TE9CVVNfRlRQX0NPTlRST0xfUEFSQUxMRUxJU01fRklYRUQpIHx8CisrICAgICAgICAgICAodGFy Z2V0LT5hdHRyLT5wYXJhbGxlbGlzbS5maXhlZC5zaXplICE9CisrICAgICAgICAgICAgICAgIHRh cmdldC0+cGFyYWxsZWxpc20uZml4ZWQuc2l6ZSkpCisrICAgICAgICB7CisrICAgICAgICAgICAg bGVuZ3RoICs9IDMgKgorKyAgICAgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X2NvdW50 X2RpZ2l0cygKKysgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+YXR0ci0+cGFyYWxsZWxpc20u Zml4ZWQuc2l6ZSk7CisrICAgICAgICAgICAgcHRyID0gZ2xvYnVzX2xpYmNfbWFsbG9jKGxlbmd0 aCk7CisrICAgICAgICAgICAgc3ByaW50ZihwdHIsICJQYXJhbGxlbGlzbT0lZCwlZCwlZDsiLAor KyAgICAgICAgICAgICAgICAgICAgKGludCkgdGFyZ2V0LT5hdHRyLT5wYXJhbGxlbGlzbS5maXhl ZC5zaXplLAorKyAgICAgICAgICAgICAgICAgICAgKGludCkgdGFyZ2V0LT5hdHRyLT5wYXJhbGxl bGlzbS5maXhlZC5zaXplLAorKyAgICAgICAgICAgICAgICAgICAgKGludCkgdGFyZ2V0LT5hdHRy LT5wYXJhbGxlbGlzbS5maXhlZC5zaXplKTsKKysgICAgICAgIH0KKysgICAgICAgIGJyZWFrOwor ICAgICBjYXNlIEdMT0JVU19GVFBfQ09OVFJPTF9QQVJBTExFTElTTV9OT05FOgorICAgICAgICAg aWYoKHRhcmdldC0+cGFyYWxsZWxpc20ubW9kZSAhPQorLQkgICAgICAgIEdMT0JVU19GVFBfQ09O VFJPTF9QQVJBTExFTElTTV9OT05FKSAmJgorLQkgICAodGFyZ2V0LT5wYXJhbGxlbGlzbS5maXhl ZC5zaXplICE9IDEpKQorLQl7CistCSAgICBwdHIgPSBnbG9idXNfbGliY19zdHJkdXAoIlBhcmFs bGVsaXNtPTEsMSwxOyIpOworLQl9CistCWJyZWFrOworKyAgICAgICAgICAgICAgICBHTE9CVVNf RlRQX0NPTlRST0xfUEFSQUxMRUxJU01fTk9ORSkgJiYKKysgICAgICAgICAgICh0YXJnZXQtPnBh cmFsbGVsaXNtLmZpeGVkLnNpemUgIT0gMSkpCisrICAgICAgICB7CisrICAgICAgICAgICAgcHRy ID0gZ2xvYnVzX2xpYmNfc3RyZHVwKCJQYXJhbGxlbGlzbT0xLDEsMTsiKTsKKysgICAgICAgIH0K KysgICAgICAgIGJyZWFrOworICAgICB9CisgICAgIHJldHVybiBwdHI7CisgfQorQEAgLTU5ODgs OSArNTk4OCw5IEBAIGdsb2J1c19pX2Z0cF9jbGllbnRfZmFrZWRfZm9yY2VfY2xvc2VfY2FsbGJh Y2soCisgICAgIHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfYXJncykK KyB7CisgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfdGFyZ2V0X3QgKiAgICAgIHRhcmdldDsKKy0g ICAgCisrCisgICAgIHRhcmdldCA9IChnbG9idXNfaV9mdHBfY2xpZW50X3RhcmdldF90ICopIHVz ZXJfYXJnczsKKy0gICAgCisrCisgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZm9yY2VfY2xvc2Vf Y2FsbGJhY2soCisgICAgICAgICB0YXJnZXQsCisgICAgICAgICB0YXJnZXQtPmNvbnRyb2xfaGFu ZGxlLAorQEAgLTYwMjAsMzQgKzYwMjAsMzQgQEAgZ2xvYnVzX2lfZnRwX2NsaWVudF9mYWtlZF9m b3JjZV9jbG9zZV9jYWxsYmFjaygKKyBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZnRwX2NsaWVu dF9jb25uZWN0aW9uX2Vycm9yKAorLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICoJ CWNsaWVudF9oYW5kbGUsCistICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfdGFyZ2V0X3QgKgkJdGFy Z2V0LAorLSAgICBnbG9idXNfb2JqZWN0X3QgKgkJCQllcnJvciwKKy0gICAgZ2xvYnVzX2Z0cF9j b250cm9sX3Jlc3BvbnNlX3QgKgkJcmVzcG9uc2UpCisrICAgIGdsb2J1c19pX2Z0cF9jbGllbnRf aGFuZGxlX3QgKiAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZSwKKysgICAgZ2xvYnVzX2lfZnRw X2NsaWVudF90YXJnZXRfdCAqICAgICAgICAgICAgICB0YXJnZXQsCisrICAgIGdsb2J1c19vYmpl Y3RfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsCisrICAgIGdsb2J1c19mdHBf Y29udHJvbF9yZXNwb25zZV90ICogICAgICAgICAgICAgcmVzcG9uc2UpCisgeworLSAgICBnbG9i dXNfcmVzdWx0X3QJCQkJcmVzdWx0OworKyAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlc3VsdDsKKyAgICAgR2xvYnVzRnVuY05hbWUoZ2xvYnVzX2xfZnRw X2NsaWVudF9jb25uZWN0aW9uX2Vycm9yKTsKKy0gICAgCistICAgIGdsb2J1c19pX2Z0cF9jbGll bnRfZGVidWdfcHJpbnRmKDEsIAorKworKyAgICBnbG9idXNfaV9mdHBfY2xpZW50X2RlYnVnX3By aW50ZigxLAorICAgICAgICAgKHN0ZGVyciwgImdsb2J1c19sX2Z0cF9jbGllbnRfY29ubmVjdGlv bl9lcnJvcigpIGVudGVyaW5nXG4iKSk7CisgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZGVidWdf c3RhdGVzKDIsIGNsaWVudF9oYW5kbGUpOworIAorICAgICBpZihjbGllbnRfaGFuZGxlLT5lcnIg PT0gR0xPQlVTX05VTEwpCisgICAgIHsKKy0JaWYoZXJyb3IpCistCXsKKy0JICAgIGNsaWVudF9o YW5kbGUtPmVyciA9IGdsb2J1c19vYmplY3RfY29weShlcnJvcik7CistCX0KKy0JZWxzZSBpZihy ZXNwb25zZSAmJiByZXNwb25zZS0+cmVzcG9uc2VfYnVmZmVyKQorLQl7CistCSAgICBjbGllbnRf aGFuZGxlLT5lcnIgPSBHTE9CVVNfSV9GVFBfQ0xJRU5UX0VSUk9SX1JFU1BPTlNFKHJlc3BvbnNl KTsKKy0JfQorLQllbHNlCistCXsKKy0JICAgIGNsaWVudF9oYW5kbGUtPmVyciA9IEdMT0JVU19J X0ZUUF9DTElFTlRfRVJST1JfUFJPVE9DT0xfRVJST1IoKTsKKy0JfQorKyAgICAgICAgaWYoZXJy b3IpCisrICAgICAgICB7CisrICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+ZXJyID0gZ2xvYnVz X29iamVjdF9jb3B5KGVycm9yKTsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYocmVzcG9u c2UgJiYgcmVzcG9uc2UtPnJlc3BvbnNlX2J1ZmZlcikKKysgICAgICAgIHsKKysgICAgICAgICAg ICBjbGllbnRfaGFuZGxlLT5lcnIgPSBHTE9CVVNfSV9GVFBfQ0xJRU5UX0VSUk9SX1JFU1BPTlNF KHJlc3BvbnNlKTsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAg ICAgICAgICBjbGllbnRfaGFuZGxlLT5lcnIgPSBHTE9CVVNfSV9GVFBfQ0xJRU5UX0VSUk9SX1BS T1RPQ09MX0VSUk9SKCk7CisrICAgICAgICB9CisgICAgIH0KKy0gICAgCisrCisgICAgIC8qCisg ICAgICAqIE5vdywgbGV0J3MgZmlndXJlIG91dCB0byBjb3BlIHdpdGggdGhpcyBmYXVsdC4gR2V0 L1B1dCBhcmUKKyAgICAgICogc2ltaWxhciwgYnV0IDNyZCBwYXJ0eSB0cmFuc2ZlciBpcyByYXRo ZXIgZGlmZmVyZW50CitAQCAtNjA2NCw3NyArNjA2NCw3NyBAQCBnbG9idXNfbF9mdHBfY2xpZW50 X2Nvbm5lY3Rpb25fZXJyb3IoCisgICAgICAgICAgICAgLyogTWFyayB0aGUgdGFyZ2V0IGZvciBk ZXN0cnVjdGlvbiwgc2luY2Ugd2UgZmF1bHRlZCBvbiBpdC4gKi8KKyAgICAgICAgICAgICB0YXJn ZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0ZBVUxUOworICAgICAgICAgfQor LSAgICAgICAgCistCS8qIElmIHdlIGhhdmVuJ3QgYmVlbiByZXN0YXJ0ZWQgeWV0LCB0aGVuIHdl IHdpbGwgZGVhbCB3aXRoCistCSAqIHRoZSBmYXVsdCBoZXJlLgorLQkgKi8KKy0JaWYoY2xpZW50 X2hhbmRsZS0+c3RhdGUgIT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQpCistCXsK Ky0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0ZB SUxVUkU7CistCistCSAgICAvKgorLQkgICAgICogSWYgd2UncmUgaW4gdGhpcyBmdW5jdGlvbiwg dGhlbiB3aGF0ZXZlciBidWZmZXJzIHRoZQorLQkgICAgICogdXNlciBoYXMgcmVnaXN0ZXJlZCB3 aWxsIG5vdCB5ZXQgYmUgcGFzc2VkIHRvIHRoZQorLQkgICAgICogY29udHJvbCBsaWJyYXJ5LiBU aGF0IG1lYW5zIHdlJ3ZlIGdvdCB0byBjYWxsIGJhY2sgZm9yIGFsbAorLQkgICAgICogb2YgdGhl IGRhdGEgYnVmZmVycyB3aGljaCBoYXZlIGJlZW4gcmVnaXN0ZXJlZC4KKy0JICAgICAqCistCSAg ICAgKiBCZWNhdXNlIHdlIGFyZSBpbiB0aGUgRkFJTFVSRSBzdGF0ZSwgdGhlIHBsdWdpbnMgbWF5 CistCSAgICAgKiAqbm90KiBkbyBhIHJlc3RhcnQgbm93LgorLQkgICAgICovCistCSAgICBnbG9i dXNfaV9mdHBfY2xpZW50X2RhdGFfZmx1c2goY2xpZW50X2hhbmRsZSk7CistCistCSAgICAvKgor LQkgICAgICogSWYgdGhlcmUgYXJlIG5vIG1vcmUgYmxvY2tzIHJlZ2lzdGVyZWQgd2l0aCB0aGUg Y29udHJvbAorLQkgICAgICogbGlicmFyeSwgd2UncmUgZG9uZSwgb3RoZXJ3aXNlLCB0aGUgY2Fs bGJhY2tzIGZvciB0aG9zZQorLQkgICAgICogYmxvY2tzIHdpbGwgcGljayB0aGlzIHVwIGFuZCBj YWxsIGNvbXBsZXRlLgorLQkgICAgICovCistCistCSAgICBpZihjbGllbnRfaGFuZGxlLT5udW1f YWN0aXZlX2Jsb2NrcyA9PSAwKQorLQkgICAgeworLQkJZ2xvYnVzX2lfZnRwX2NsaWVudF90cmFu c2Zlcl9jb21wbGV0ZShjbGllbnRfaGFuZGxlKTsKKy0gICAgICAgICAgICAgICAgZ2xvYnVzX2lf ZnRwX2NsaWVudF9kZWJ1Z19wcmludGYoMSwgCisrCisrICAgICAgICAvKiBJZiB3ZSBoYXZlbid0 IGJlZW4gcmVzdGFydGVkIHlldCwgdGhlbiB3ZSB3aWxsIGRlYWwgd2l0aAorKyAgICAgICAgICog dGhlIGZhdWx0IGhlcmUuCisrICAgICAgICAgKi8KKysgICAgICAgIGlmKGNsaWVudF9oYW5kbGUt PnN0YXRlICE9IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUKQorKyAgICAgICAgewor KyAgICAgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfSEFO RExFX0ZBSUxVUkU7CisrCisrICAgICAgICAgICAgLyoKKysgICAgICAgICAgICAgKiBJZiB3ZSdy ZSBpbiB0aGlzIGZ1bmN0aW9uLCB0aGVuIHdoYXRldmVyIGJ1ZmZlcnMgdGhlCisrICAgICAgICAg ICAgICogdXNlciBoYXMgcmVnaXN0ZXJlZCB3aWxsIG5vdCB5ZXQgYmUgcGFzc2VkIHRvIHRoZQor KyAgICAgICAgICAgICAqIGNvbnRyb2wgbGlicmFyeS4gVGhhdCBtZWFucyB3ZSd2ZSBnb3QgdG8g Y2FsbCBiYWNrIGZvciBhbGwKKysgICAgICAgICAgICAgKiBvZiB0aGUgZGF0YSBidWZmZXJzIHdo aWNoIGhhdmUgYmVlbiByZWdpc3RlcmVkLgorKyAgICAgICAgICAgICAqCisrICAgICAgICAgICAg ICogQmVjYXVzZSB3ZSBhcmUgaW4gdGhlIEZBSUxVUkUgc3RhdGUsIHRoZSBwbHVnaW5zIG1heQor KyAgICAgICAgICAgICAqICpub3QqIGRvIGEgcmVzdGFydCBub3cuCisrICAgICAgICAgICAgICov CisrICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9kYXRhX2ZsdXNoKGNsaWVudF9oYW5k bGUpOworKworKyAgICAgICAgICAgIC8qCisrICAgICAgICAgICAgICogSWYgdGhlcmUgYXJlIG5v IG1vcmUgYmxvY2tzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgY29udHJvbAorKyAgICAgICAgICAgICAq IGxpYnJhcnksIHdlJ3JlIGRvbmUsIG90aGVyd2lzZSwgdGhlIGNhbGxiYWNrcyBmb3IgdGhvc2UK KysgICAgICAgICAgICAgKiBibG9ja3Mgd2lsbCBwaWNrIHRoaXMgdXAgYW5kIGNhbGwgY29tcGxl dGUuCisrICAgICAgICAgICAgICovCisrCisrICAgICAgICAgICAgaWYoY2xpZW50X2hhbmRsZS0+ bnVtX2FjdGl2ZV9ibG9ja3MgPT0gMCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAg IGdsb2J1c19pX2Z0cF9jbGllbnRfdHJhbnNmZXJfY29tcGxldGUoY2xpZW50X2hhbmRsZSk7Cisr ICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZGVidWdfcHJpbnRmKDEsCisgICAg ICAgICAgICAgICAgICAgICAoc3RkZXJyLCAiZ2xvYnVzX2xfZnRwX2NsaWVudF9jb25uZWN0aW9u X2Vycm9yKCkgZXhpdGluZ1xuIikpOworICAgICAgICAgICAgICAgICBnbG9idXNfaV9mdHBfY2xp ZW50X2RlYnVnX3N0YXRlcygyLCBjbGllbnRfaGFuZGxlKTsKKy0gICAgICAgICAgICAgICAgCist CQlyZXR1cm47CistCSAgICB9CistCX0KKysKKysgICAgICAgICAgICAgICAgcmV0dXJuOworKyAg ICAgICAgICAgIH0KKysgICAgICAgIH0KKyAgICAgfQorICAgICBlbHNlIGlmKGNsaWVudF9oYW5k bGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX1RSQU5TRkVSKQorICAgICB7CistCWlmKGNsaWVu dF9oYW5kbGUtPnN0YXRlICE9IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUKQorLQl7 CistCSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3RhcmdldF90ICoJCW90aGVyX3RhcmdldCA9IDA7 CistCistCSAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRM RV9GQUlMVVJFOworLQkgICAgLyogSW4gYSB0aGlyZCBwYXJ0eSB0cmFuc2ZlciwgdGhpcyBmYXVs dCBjYW4gaGFwcGVuIG9uCistCSAgICAgKiBlaXRoZXIgdGhlIHNvdXJjZSBvciBkZXN0aW5hdGlv biB0YXJnZXQncyBjb250cm9sCistCSAgICAgKiBoYW5kbGUuCistCSAgICAgKi8KKy0JICAgIGlm KGNsaWVudF9oYW5kbGUtPnNvdXJjZSA9PSB0YXJnZXQpCistCSAgICB7CistCQlvdGhlcl90YXJn ZXQgPSBjbGllbnRfaGFuZGxlLT5kZXN0OworLQkgICAgfQorLQkgICAgZWxzZSBpZihjbGllbnRf aGFuZGxlLT5kZXN0ID09IHRhcmdldCkKKy0JICAgIHsKKy0JCW90aGVyX3RhcmdldCA9IGNsaWVu dF9oYW5kbGUtPnNvdXJjZTsKKy0JICAgIH0KKy0JICAgIGdsb2J1c19hc3NlcnQob3RoZXJfdGFy Z2V0ICE9IEdMT0JVU19OVUxMKTsKKy0KKy0JICAgIC8qCistCSAgICAgKiBpZiB0aGUgb3RoZXIg dGFyZ2V0IGlzIGluIHRoZSBzdGFydCBvciBzZXR1cF9jb25uZWN0aW9uCistCSAgICAgKiBzdGF0 ZSwgdGhlbiB3ZSBjYW4gcmVsZWFzZSBjb21wbGV0ZSB3L2ZhaWx1cmUKKy0JICAgICAqIGltbWVk aWF0ZWx5LiBPdGhlcndpc2UsIHdlIG5lZWQgdG8gZWl0aGVyIGFib3J0IHRoZQorLQkgICAgICog YWN0aXZlIGNvbW1hbmQgb24gaXQsIG9yIGZvcmNlIGl0IHRvIGNsb3NlLgorLQkgICAgICovCist CSAgICBpZihvdGhlcl90YXJnZXQtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9T VEFSVCB8fAorLQkgICAgICAgb3RoZXJfdGFyZ2V0LT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVO VF9UQVJHRVRfU0VUVVBfQ09OTkVDVElPTikKKy0JICAgIHsKKy0JICAgICAgICBpZih0YXJnZXQt PnN0YXRlICE9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9GQVVMVCAmJgorLQkgICAgICAgICAg ICB0YXJnZXQtPnN0YXRlICE9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9DTE9TRUQpCistCSAg ICAgICAgeworLQkgICAgICAgICAgICB0YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRf VEFSR0VUX0ZBVUxUOworLQkgICAgICAgICAgICAKKysgICAgICAgIGlmKGNsaWVudF9oYW5kbGUt PnN0YXRlICE9IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUKQorKyAgICAgICAgewor KyAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfdGFyZ2V0X3QgKiAgICAgICAgICAgICAg b3RoZXJfdGFyZ2V0ID0gMDsKKysKKysgICAgICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9 IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFOworKyAgICAgICAgICAgIC8qIEluIGEg dGhpcmQgcGFydHkgdHJhbnNmZXIsIHRoaXMgZmF1bHQgY2FuIGhhcHBlbiBvbgorKyAgICAgICAg ICAgICAqIGVpdGhlciB0aGUgc291cmNlIG9yIGRlc3RpbmF0aW9uIHRhcmdldCdzIGNvbnRyb2wK KysgICAgICAgICAgICAgKiBoYW5kbGUuCisrICAgICAgICAgICAgICovCisrICAgICAgICAgICAg aWYoY2xpZW50X2hhbmRsZS0+c291cmNlID09IHRhcmdldCkKKysgICAgICAgICAgICB7CisrICAg ICAgICAgICAgICAgIG90aGVyX3RhcmdldCA9IGNsaWVudF9oYW5kbGUtPmRlc3Q7CisrICAgICAg ICAgICAgfQorKyAgICAgICAgICAgIGVsc2UgaWYoY2xpZW50X2hhbmRsZS0+ZGVzdCA9PSB0YXJn ZXQpCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBvdGhlcl90YXJnZXQgPSBjbGll bnRfaGFuZGxlLT5zb3VyY2U7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGdsb2J1c19h c3NlcnQob3RoZXJfdGFyZ2V0ICE9IEdMT0JVU19OVUxMKTsKKysKKysgICAgICAgICAgICAvKgor KyAgICAgICAgICAgICAqIGlmIHRoZSBvdGhlciB0YXJnZXQgaXMgaW4gdGhlIHN0YXJ0IG9yIHNl dHVwX2Nvbm5lY3Rpb24KKysgICAgICAgICAgICAgKiBzdGF0ZSwgdGhlbiB3ZSBjYW4gcmVsZWFz ZSBjb21wbGV0ZSB3L2ZhaWx1cmUKKysgICAgICAgICAgICAgKiBpbW1lZGlhdGVseS4gT3RoZXJ3 aXNlLCB3ZSBuZWVkIHRvIGVpdGhlciBhYm9ydCB0aGUKKysgICAgICAgICAgICAgKiBhY3RpdmUg Y29tbWFuZCBvbiBpdCwgb3IgZm9yY2UgaXQgdG8gY2xvc2UuCisrICAgICAgICAgICAgICovCisr ICAgICAgICAgICAgaWYob3RoZXJfdGFyZ2V0LT5zdGF0ZSA9PSBHTE9CVVNfRlRQX0NMSUVOVF9U QVJHRVRfU1RBUlQgfHwKKysgICAgICAgICAgICAgICBvdGhlcl90YXJnZXQtPnN0YXRlID09IEdM T0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9TRVRVUF9DT05ORUNUSU9OKQorKyAgICAgICAgICAgIHsK KysgICAgICAgICAgICAgICAgaWYodGFyZ2V0LT5zdGF0ZSAhPSBHTE9CVVNfRlRQX0NMSUVOVF9U QVJHRVRfRkFVTFQgJiYKKysgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgIT0gR0xP QlVTX0ZUUF9DTElFTlRfVEFSR0VUX0NMT1NFRCkKKysgICAgICAgICAgICAgICAgeworKyAgICAg ICAgICAgICAgICAgICAgdGFyZ2V0LT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9G QVVMVDsKKysKKyAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAg KiBLaWxsIHRoZSBjdXJyZW50IHRhcmdldC0tLXRoZSBvdGhlciBvbmUgaXMgaWRsZQorICAgICAg ICAgICAgICAgICAgICAgICovCitAQCAtNjE0Miw3ICs2MTQyLDcgQEAgZ2xvYnVzX2xfZnRwX2Ns aWVudF9jb25uZWN0aW9uX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC0+ Y29udHJvbF9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2Ns aWVudF9mb3JjZV9jbG9zZV9jYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn ZXQpOworLSAgICAgICAgICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAgICAgICAg aWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNTKQorICAgICAgICAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIFNob290LCB0aGF0IGRpZG4ndCB3b3JrLiBGYWtlIGl0 LiAqLworQEAgLTYxNTMsMTggKzYxNTMsMTggQEAgZ2xvYnVzX2xfZnRwX2NsaWVudF9jb25uZWN0 aW9uX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQpOworICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CistCSAgICB9CistCSAgICBlbHNl CistCSAgICB7CistCSAgICAgICAgaWYob3RoZXJfdGFyZ2V0LT5zdGF0ZSAhPSBHTE9CVVNfRlRQ X0NMSUVOVF9UQVJHRVRfRkFVTFQgJiYKKy0JICAgICAgICAgICAgb3RoZXJfdGFyZ2V0LT5zdGF0 ZSAhPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfQ0xPU0VEKQorLQkgICAgICAgIHsKKysgICAg ICAgICAgICB9CisrICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgaWYob3RoZXJfdGFyZ2V0LT5zdGF0ZSAhPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRf RkFVTFQgJiYKKysgICAgICAgICAgICAgICAgICAgIG90aGVyX3RhcmdldC0+c3RhdGUgIT0gR0xP QlVTX0ZUUF9DTElFTlRfVEFSR0VUX0NMT1NFRCkKKysgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAqIElmIHRoZSB0YXJnZXQg aXMgZG9pbmcgc29tZXRoaW5nIGVsc2UsIHRoZW4gd2Ugd2lsbAorICAgICAgICAgICAgICAgICAg ICAgICoganVzdCBraWxsIGl0LgorICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAg ICAgICAgICAgICBvdGhlcl90YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VU X0ZBVUxUOworLSAgICAgICAgCisrCisgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBnbG9i dXNfZnRwX2NvbnRyb2xfZm9yY2VfY2xvc2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgb3Ro ZXJfdGFyZ2V0LT5jb250cm9sX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBnbG9i dXNfaV9mdHBfY2xpZW50X2ZvcmNlX2Nsb3NlX2NhbGxiYWNrLAorQEAgLTYxNzksMjAgKzYxNzks MjAgQEAgZ2xvYnVzX2xfZnRwX2NsaWVudF9jb25uZWN0aW9uX2Vycm9yKAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvdGhlcl90YXJnZXQpOworICAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIAorKworICAgICAgICAgICAgICAg ICBpZih0YXJnZXQtPnN0YXRlICE9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9GQVVMVCAmJgor LQkgICAgICAgICAgICB0YXJnZXQtPnN0YXRlICE9IEdMT0JVU19GVFBfQ0xJRU5UX1RBUkdFVF9D TE9TRUQpCistCSAgICAgICAgeworLSAgICAJCSAgICAvKgorKyAgICAgICAgICAgICAgICAgICAg dGFyZ2V0LT5zdGF0ZSAhPSBHTE9CVVNfRlRQX0NMSUVOVF9UQVJHRVRfQ0xPU0VEKQorKyAgICAg ICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAg ICAgICogS2lsbCB0aGUgY3VycmVudCB0YXJnZXQtLS10aGUgb3RoZXIgb25lIGlzIGlkbGUgbm93 LgorICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICB0YXJnZXQt PnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0ZBVUxUOworLSAgICAKKysKKyAgICAg ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY29udHJvbF9mb3JjZV9jbG9zZSgK KyAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQtPmNvbnRyb2xfaGFuZGxlLAorICAgICAg ICAgICAgICAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfZm9yY2VfY2xvc2VfY2FsbGJh Y2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0KTsKKy0gICAgICAgICAgICAgICAg ICAgIAorKworICAgICAgICAgICAgICAgICAgICAgaWYocmVzdWx0ICE9IEdMT0JVU19TVUNDRVNT KQorICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNo b290LCB0aGF0IGRpZG4ndCB3b3JrLiBGYWtlIGl0LiAqLworQEAgLTYyMDMsOSArNjIwMyw5IEBA IGdsb2J1c19sX2Z0cF9jbGllbnRfY29ubmVjdGlvbl9lcnJvcigKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgfQorLQkgICAgfQorLQl9CistCWVsc2UgaWYoZXJyb3IpCisrICAgICAgICAgICAgfQor KyAgICAgICAgfQorKyAgICAgICAgZWxzZSBpZihlcnJvcikKKyAgICAgICAgIHsKKyAgICAgICAg ICAgICAvKiBNYXJrIHRoZSB0YXJnZXQgZm9yIGRlc3RydWN0aW9uLCBzaW5jZSB3ZSBmYXVsdGVk IG9uIGl0LiAqLworICAgICAgICAgICAgIHRhcmdldC0+c3RhdGUgPSBHTE9CVVNfRlRQX0NMSUVO VF9UQVJHRVRfRkFVTFQ7CitAQCAtNjIxOCwyOCArNjIxOCwyOCBAQCBnbG9idXNfbF9mdHBfY2xp ZW50X2Nvbm5lY3Rpb25fZXJyb3IoCisgICAgICAgICAgICAgLyogTWFyayB0aGUgdGFyZ2V0IGZv ciBkZXN0cnVjdGlvbiwgc2luY2Ugd2UgZmF1bHRlZCBvbiBpdC4gKi8KKyAgICAgICAgICAgICB0 YXJnZXQtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfVEFSR0VUX0ZBVUxUOworICAgICAgICAg fQorLSAgICAgICAgCistCS8qIElmIHdlIGhhdmVuJ3QgYmVlbiByZXN0YXJ0ZWQgeWV0LCB0aGVu IHdlIHdpbGwgZGVhbCB3aXRoCistCSAqIHRoZSBmYXVsdCBoZXJlLgorLQkgKi8KKy0JaWYoY2xp ZW50X2hhbmRsZS0+c3RhdGUgIT0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX1JFU1RBUlQpCist CXsKKy0JICAgIGNsaWVudF9oYW5kbGUtPnN0YXRlID0gR0xPQlVTX0ZUUF9DTElFTlRfSEFORExF X0ZBSUxVUkU7CistCSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3RyYW5zZmVyX2NvbXBsZXRlKGNs aWVudF9oYW5kbGUpOworLSAgICAgICAgICAgIAorLSAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9j bGllbnRfZGVidWdfcHJpbnRmKDEsIAorKworKyAgICAgICAgLyogSWYgd2UgaGF2ZW4ndCBiZWVu IHJlc3RhcnRlZCB5ZXQsIHRoZW4gd2Ugd2lsbCBkZWFsIHdpdGgKKysgICAgICAgICAqIHRoZSBm YXVsdCBoZXJlLgorKyAgICAgICAgICovCisrICAgICAgICBpZihjbGllbnRfaGFuZGxlLT5zdGF0 ZSAhPSBHTE9CVVNfRlRQX0NMSUVOVF9IQU5ETEVfUkVTVEFSVCkKKysgICAgICAgIHsKKysgICAg ICAgICAgICBjbGllbnRfaGFuZGxlLT5zdGF0ZSA9IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9G QUlMVVJFOworKyAgICAgICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfdHJhbnNmZXJfY29tcGxl dGUoY2xpZW50X2hhbmRsZSk7CisrCisrICAgICAgICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9k ZWJ1Z19wcmludGYoMSwKKyAgICAgICAgICAgICAgICAgKHN0ZGVyciwgImdsb2J1c19sX2Z0cF9j bGllbnRfY29ubmVjdGlvbl9lcnJvcigpIGV4aXRpbmdcbiIpKTsKKyAKKy0JICAgIHJldHVybjsK Ky0JfQorKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAgICAgfQorIAorICAgICBn bG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV91bmxvY2soY2xpZW50X2hhbmRsZSk7CistICAgIAor LSAgICBnbG9idXNfaV9mdHBfY2xpZW50X2RlYnVnX3ByaW50ZigxLCAKKysKKysgICAgZ2xvYnVz X2lfZnRwX2NsaWVudF9kZWJ1Z19wcmludGYoMSwKKyAgICAgICAgIChzdGRlcnIsICJnbG9idXNf bF9mdHBfY2xpZW50X2Nvbm5lY3Rpb25fZXJyb3IoKSBleGl0aW5nXG4iKSk7CisgICAgIGdsb2J1 c19pX2Z0cF9jbGllbnRfZGVidWdfc3RhdGVzKDIsIGNsaWVudF9oYW5kbGUpOworLSAgICAKKysK KyAgICAgcmV0dXJuOworIH0KKyAvKiBnbG9idXNfbF9mdHBfY2xpZW50X2Nvbm5lY3Rpb25fZXJy b3IoKSAqLworQEAgLTYyNDcsMTIgKzYyNDcsMTIgQEAgZ2xvYnVzX2xfZnRwX2NsaWVudF9jb25u ZWN0aW9uX2Vycm9yKAorIHN0YXRpYworIGNvbnN0IGNoYXIgKgorIGdsb2J1c19sX2Z0cF9jbGll bnRfZ3Vlc3NfYnVmZmVyX2NvbW1hbmQoCistICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfaGFuZGxl X3QgKgkJaGFuZGxlLAorLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3RhcmdldF90ICoJCXRhcmdl dCkKKysgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9oYW5kbGVfdCAqICAgICAgICAgICAgICBoYW5k bGUsCisrICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfdGFyZ2V0X3QgKiAgICAgICAgICAgICAgdGFy Z2V0KQorIHsKKy0gICAgaW50CQkJCQkJaTsKKy0gICAgZ2xvYnVzX2Jvb2xfdAkJCQlzdG9yX2Rl c2lyZWQgPSBHTE9CVVNfRkFMU0U7CistICAgIGdsb2J1c19ib29sX3QJCQkJcmV0cl9kZXNpcmVk ID0gR0xPQlVTX0ZBTFNFOworKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGk7CisrICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3Rvcl9kZXNpcmVkID0gR0xPQlVTX0ZBTFNFOworKyAgICBnbG9idXNfYm9vbF90ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJfZGVzaXJlZCA9IEdMT0JVU19GQUxTRTsK KyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdF9t YXliZTsKKyAKKyAgICAgaWYoaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9HRVQgfHwK K0BAIC02MjYyLDQxICs2MjYyLDQxIEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfZ3Vlc3NfYnVmZmVy X2NvbW1hbmQoCisgICAgICAgIGhhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfTUxTUiB8 fAorICAgICAgICAoaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9UUkFOU0ZFUiAmJiBo YW5kbGUtPnNvdXJjZSA9PSB0YXJnZXQpKQorICAgICB7CistCXJldHJfZGVzaXJlZCA9IEdMT0JV U19UUlVFOworKyAgICAgICAgcmV0cl9kZXNpcmVkID0gR0xPQlVTX1RSVUU7CisgICAgIH0KKyAg ICAgaWYoaGFuZGxlLT5vcCA9PSBHTE9CVVNfRlRQX0NMSUVOVF9QVVQgfHwKKyAgICAgICAgKGhh bmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNGRVIgJiYgaGFuZGxlLT5kZXN0ID09 IHRhcmdldCkpCisgICAgIHsKKy0Jc3Rvcl9kZXNpcmVkID0gR0xPQlVTX1RSVUU7CisrICAgICAg ICBzdG9yX2Rlc2lyZWQgPSBHTE9CVVNfVFJVRTsKKyAgICAgfQorLSAgICAKKysKKyAgICAgZmly c3RfbWF5YmUgPSAtMTsKKyAgICAgZm9yKGkgPSAwOyBpIDwgR0xPQlVTX0ZUUF9DTElFTlRfTEFT VF9CVUZGRVJfQ09NTUFORDsgaSsrKQorICAgICB7CisgICAgICAgICBnbG9idXNfZnRwX2NsaWVu dF90cmlzdGF0ZV90ICAgICAgICAgICAgaXNfc3VwcG9ydGVkOworLSAgICAgICAgCisrCisgICAg ICAgICBpc19zdXBwb3J0ZWQgPSBnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfZ2V0KHRhcmdl dC0+ZmVhdHVyZXMsIGkpOworLSAgICAgICAgCistCWlmKGlzX3N1cHBvcnRlZCAmJgorLQkgICAo KGdsb2J1c19sX2Z0cF9jbGllbnRfYnVmZmVyX2NtZF9pbmZvW2ldLnN0b3Jfb2sgJiYgc3Rvcl9k ZXNpcmVkKSB8fAorLQkgICAgKGdsb2J1c19sX2Z0cF9jbGllbnRfYnVmZmVyX2NtZF9pbmZvW2ld LnJldHJfb2sgJiYgcmV0cl9kZXNpcmVkKSkpCistCXsKKy0JICAgIGlmKGlzX3N1cHBvcnRlZCA9 PSBHTE9CVVNfRlRQX0NMSUVOVF9UUlVFKQorLQkgICAgeworLQkgICAgICAgIHJldHVybiBnbG9i dXNfbF9mdHBfY2xpZW50X2J1ZmZlcl9jbWRfaW5mb1tpXS5zdHJpbmc7CistCSAgICB9CistCSAg ICBlbHNlIGlmKGZpcnN0X21heWJlIDwgMCkKKy0JICAgIHsKKy0JICAgICAgICBmaXJzdF9tYXli ZSA9IGk7CistCSAgICB9CistCX0KKysKKysgICAgICAgIGlmKGlzX3N1cHBvcnRlZCAmJgorKyAg ICAgICAgICAgKChnbG9idXNfbF9mdHBfY2xpZW50X2J1ZmZlcl9jbWRfaW5mb1tpXS5zdG9yX29r ICYmIHN0b3JfZGVzaXJlZCkgfHwKKysgICAgICAgICAgICAoZ2xvYnVzX2xfZnRwX2NsaWVudF9i dWZmZXJfY21kX2luZm9baV0ucmV0cl9vayAmJiByZXRyX2Rlc2lyZWQpKSkKKysgICAgICAgIHsK KysgICAgICAgICAgICBpZihpc19zdXBwb3J0ZWQgPT0gR0xPQlVTX0ZUUF9DTElFTlRfVFJVRSkK KysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIHJldHVybiBnbG9idXNfbF9mdHBfY2xp ZW50X2J1ZmZlcl9jbWRfaW5mb1tpXS5zdHJpbmc7CisrICAgICAgICAgICAgfQorKyAgICAgICAg ICAgIGVsc2UgaWYoZmlyc3RfbWF5YmUgPCAwKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgZmlyc3RfbWF5YmUgPSBpOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKyAgICAg fQorLSAgICAKKysKKyAgICAgaWYoZmlyc3RfbWF5YmUgPj0gMCkKKyAgICAgeworICAgICAgICAg cmV0dXJuIGdsb2J1c19sX2Z0cF9jbGllbnRfYnVmZmVyX2NtZF9pbmZvW2ZpcnN0X21heWJlXS5z dHJpbmc7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJldHVybiBOVUxMOworIH0KKyAvKiBnbG9i dXNfbF9mdHBfY2xpZW50X2d1ZXNzX2J1ZmZlcl9jb21tYW5kKCkgKi8KK0BAIC02MzE2LDE4ICs2 MzE2LDE4IEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfZ3Vlc3NfYnVmZmVyX2NvbW1hbmQoCisgICog ICAgICAgIFRoZSBhY3R1YWwgZnRwIHRhcmdldCB0aGF0IHdlIHNlbnQgdGhlIGNvbW1hbmQgdG8u CisgICogQHBhcmFtIG9rCisgICogICAgICAgIElmIHNldCB0byBHTE9CVVNfVFJVRSwgdGhlbiB0 aGUgbGFzdCBmdHAgYnVmZmVyIGNvbW1hbmQKKy0gKgkgIHdvcmtlZC4gT3RoZXJ3aXNlLCBpdCBm YWlsZWQuCisrICogICAgICAgIHdvcmtlZC4gT3RoZXJ3aXNlLCBpdCBmYWlsZWQuCisgICovCisg c3RhdGljCisgdm9pZAorIGdsb2J1c19sX2Z0cF9jbGllbnRfdXBkYXRlX2J1ZmZlcl9mZWF0dXJl KAorLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICoJCWhhbmRsZSwKKy0gICAgZ2xv YnVzX2lfZnRwX2NsaWVudF90YXJnZXRfdCAqCQl0YXJnZXQsCistICAgIGdsb2J1c19mdHBfY2xp ZW50X3RyaXN0YXRlX3QJCW9rKQorKyAgICBnbG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICog ICAgICAgICAgICAgIGhhbmRsZSwKKysgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRfdCAq ICAgICAgICAgICAgICB0YXJnZXQsCisrICAgIGdsb2J1c19mdHBfY2xpZW50X3RyaXN0YXRlX3Qg ICAgICAgICAgICAgICAgb2spCisgeworLSAgICBpbnQJCQkJCQlpOworLSAgICBnbG9idXNfYm9v bF90CQkJCXN0b3JfZGVzaXJlZCA9IEdMT0JVU19GQUxTRTsKKy0gICAgZ2xvYnVzX2Jvb2xfdAkJ CQlyZXRyX2Rlc2lyZWQgPSBHTE9CVVNfRkFMU0U7CisrICAgIGludCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaTsKKysgICAgZ2xvYnVzX2Jvb2xfdCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdG9yX2Rlc2lyZWQgPSBHTE9CVVNfRkFMU0U7CisrICAgIGds b2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cl9kZXNpcmVkID0g R0xPQlVTX0ZBTFNFOworIAorICAgICBpZihoYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5U X0dFVCB8fAorICAgICAgICBoYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX0xJU1QgfHwK K0BAIC02MzM2LDI2ICs2MzM2LDI2IEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfdXBkYXRlX2J1ZmZl cl9mZWF0dXJlKAorICAgICAgICBoYW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX01MU1Ig fHwKKyAgICAgICAgKGhhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfVFJBTlNGRVIgJiYg aGFuZGxlLT5zb3VyY2UgPT0gdGFyZ2V0KSkKKyAgICAgeworLQlyZXRyX2Rlc2lyZWQgPSBHTE9C VVNfVFJVRTsKKysgICAgICAgIHJldHJfZGVzaXJlZCA9IEdMT0JVU19UUlVFOworICAgICB9Cisg ICAgIGlmKGhhbmRsZS0+b3AgPT0gR0xPQlVTX0ZUUF9DTElFTlRfUFVUIHx8CisgICAgICAgICho YW5kbGUtPm9wID09IEdMT0JVU19GVFBfQ0xJRU5UX1RSQU5TRkVSICYmIGhhbmRsZS0+ZGVzdCA9 PSB0YXJnZXQpKQorICAgICB7CistCXN0b3JfZGVzaXJlZCA9IEdMT0JVU19UUlVFOworKyAgICAg ICAgc3Rvcl9kZXNpcmVkID0gR0xPQlVTX1RSVUU7CisgICAgIH0KKyAKKyAgICAgZm9yKGkgPSAw OyBpIDwgR0xPQlVTX0ZUUF9DTElFTlRfTEFTVF9CVUZGRVJfQ09NTUFORDsgaSsrKQorICAgICB7 CistCWlmKGdsb2J1c19pX2Z0cF9jbGllbnRfZmVhdHVyZV9nZXQoIHRhcmdldC0+ZmVhdHVyZXMs IGkpICYmCistCSAgICgoZ2xvYnVzX2xfZnRwX2NsaWVudF9idWZmZXJfY21kX2luZm9baV0uc3Rv cl9vayAmJiBzdG9yX2Rlc2lyZWQpIHx8CistCSAgICAoZ2xvYnVzX2xfZnRwX2NsaWVudF9idWZm ZXJfY21kX2luZm9baV0ucmV0cl9vayAmJiByZXRyX2Rlc2lyZWQpKSkKKy0JeworLQkgICAgaWYo Z2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX2dldCh0YXJnZXQtPmZlYXR1cmVzLCBpKSAhPSBv aykKKy0JICAgIHsKKy0JICAgICAgICBnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfc2V0KHRh cmdldC0+ZmVhdHVyZXMsIGksIG9rKTsKKy0JCWJyZWFrOworLQkgICAgfQorLQl9CisrICAgICAg ICBpZihnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfZ2V0KCB0YXJnZXQtPmZlYXR1cmVzLCBp KSAmJgorKyAgICAgICAgICAgKChnbG9idXNfbF9mdHBfY2xpZW50X2J1ZmZlcl9jbWRfaW5mb1tp XS5zdG9yX29rICYmIHN0b3JfZGVzaXJlZCkgfHwKKysgICAgICAgICAgICAoZ2xvYnVzX2xfZnRw X2NsaWVudF9idWZmZXJfY21kX2luZm9baV0ucmV0cl9vayAmJiByZXRyX2Rlc2lyZWQpKSkKKysg ICAgICAgIHsKKysgICAgICAgICAgICBpZihnbG9idXNfaV9mdHBfY2xpZW50X2ZlYXR1cmVfZ2V0 KHRhcmdldC0+ZmVhdHVyZXMsIGkpICE9IG9rKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9mZWF0dXJlX3NldCh0YXJnZXQtPmZlYXR1cmVzLCBp LCBvayk7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAg IH0KKyAgICAgfQorIH0KKyAvKiBnbG9idXNfbF9mdHBfY2xpZW50X3VwZGF0ZV9idWZmZXJfZmVh dHVyZSgpICovCitAQCAtNjM3NSwxNyArNjM3NSwxNyBAQCBnbG9idXNfbF9mdHBfY2xpZW50X3Vw ZGF0ZV9idWZmZXJfZmVhdHVyZSgKKyBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZnRwX2NsaWVu dF9wYXJzZV9yZXN0YXJ0X21hcmtlcigKKy0gICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9oYW5kbGVf dCAqCQloYW5kbGUsCistICAgIGdsb2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICoJCXJlc3Bv bnNlKQorKyAgICBnbG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICogICAgICAgICAgICAgIGhh bmRsZSwKKysgICAgZ2xvYnVzX2Z0cF9jb250cm9sX3Jlc3BvbnNlX3QgKiAgICAgICAgICAgICBy ZXNwb25zZSkKKyB7CistICAgIGdsb2J1c19vZmZfdAkJCQlvZmZzZXQsIGVuZDsKKy0gICAgY2hh ciAqCQkJCQlwOworLSAgICBnbG9idXNfcmVzdWx0X3QgCQkJCXJlczsKKy0gICAgaW50CQkJCQkJ Y29uc3VtZWQ7CisrICAgIGdsb2J1c19vZmZfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgb2Zmc2V0LCBlbmQ7CisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcDsKKysgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZXM7CisrICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3VtZWQ7CisgCisgICAgIGlmKHJlc3BvbnNlLT5jb2RlICE9IDExMSkKKyAgICAgewor LQlyZXR1cm47CisrICAgICAgICByZXR1cm47CisgICAgIH0KKyAgICAgcCA9IChjaGFyICopIHJl c3BvbnNlLT5yZXNwb25zZV9idWZmZXI7CisgCitAQCAtNjM5NCwyOCArNjM5NCwyOCBAQCBnbG9i dXNfbF9mdHBfY2xpZW50X3BhcnNlX3Jlc3RhcnRfbWFya2VyKAorICAgICB3aGlsZSghaXNkaWdp dCgqcCkpIHArKzsKKyAKKyAgICAgd2hpbGUoIHNzY2FuZihwLCAiJSJHTE9CVVNfT0ZGX1RfRk9S TUFUIi0lIkdMT0JVU19PRkZfVF9GT1JNQVQiJW4iLAorLQkJICAmb2Zmc2V0LCAmZW5kLCAmY29u c3VtZWQpID49IDIpCisrICAgICAgICAgICAgICAgICAgJm9mZnNldCwgJmVuZCwgJmNvbnN1bWVk KSA+PSAyKQorICAgICB7CistCXJlcyA9IGdsb2J1c19mdHBfY2xpZW50X3Jlc3RhcnRfbWFya2Vy X2luc2VydF9yYW5nZSgKKy0JICAgICZoYW5kbGUtPnJlc3RhcnRfbWFya2VyLAorLQkgICAgb2Zm c2V0LAorLQkgICAgZW5kKTsKKy0KKy0JaWYocmVzKQorLQl7CistCSAgICBicmVhazsKKy0JfQor LQorLQlwICs9IGNvbnN1bWVkOworLQorLQlpZigqcCA9PSAnLCcpCistCXsKKy0JICAgIHArKzsK Ky0JfQorLQllbHNlCistCXsKKy0JICAgIGJyZWFrOworLQl9CisrICAgICAgICByZXMgPSBnbG9i dXNfZnRwX2NsaWVudF9yZXN0YXJ0X21hcmtlcl9pbnNlcnRfcmFuZ2UoCisrICAgICAgICAgICAg JmhhbmRsZS0+cmVzdGFydF9tYXJrZXIsCisrICAgICAgICAgICAgb2Zmc2V0LAorKyAgICAgICAg ICAgIGVuZCk7CisrCisrICAgICAgICBpZihyZXMpCisrICAgICAgICB7CisrICAgICAgICAgICAg YnJlYWs7CisrICAgICAgICB9CisrCisrICAgICAgICBwICs9IGNvbnN1bWVkOworKworKyAgICAg ICAgaWYoKnAgPT0gJywnKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHArKzsKKysgICAgICAg IH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgICBicmVhazsKKysgICAg ICAgIH0KKyAgICAgfQorIH0KKyAvKiBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX3Jlc3RhcnRf bWFya2VyKCkgKi8KK0BAIC02NDQ4LDEwICs2NDQ4LDEwIEBAIGdsb2J1c19sX2Z0cF9jbGllbnRf cGFyc2VfY2tzbSgKKyBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9t ZHRtKAorLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICoJCWNsaWVudF9oYW5kbGUs CistICAgIGdsb2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICoJCXJlc3BvbnNlKQorKyAgICBn bG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICogICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUs CisrICAgIGdsb2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICogICAgICAgICAgICAgcmVzcG9u c2UpCisgeworLSAgICBjaGFyICoJCQkJCXA7CisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcDsKKyAgICAgc3RydWN0IHRtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0bTsKKyAgICAgc3RydWN0IHRtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnbXRfbm93X3RtOworICAgICBzdHJ1Y3QgdG0gKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdtdF9ub3dfdG1fcDsKK0BAIC02NDU5LDE1ICs2NDU5LDE1IEBA IGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2VfbWR0bSgKKyAgICAgdGltZV90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnbXRfbm93OworICAgICB0aW1lX3QgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdzsKKyAgICAgdGltZV90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3RpbWU7CistICAgIGZsb2F0CQkJCQlmcmFj dGlvbjsKKy0gICAgdW5zaWduZWQgbG9uZwkJCQluc2VjID0gMFVMOworLSAgICBpbnQgCQkJCQly YzsKKy0gICAgaW50CQkJCQkJaTsKKysgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmcmFjdGlvbjsKKysgICAgdW5zaWduZWQgbG9uZyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBuc2VjID0gMFVMOworKyAgICBpbnQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJjOworKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGk7CisgICAgIEdsb2J1c0Z1bmNOYW1lKGdsb2J1c19sX2Z0cF9j bGllbnRfcGFyc2VfbWR0bSk7CisgCisgICAgIGlmKHJlc3BvbnNlLT5jb2RlICE9IDIxMykKKyAg ICAgeworLQlyZXR1cm47CisrICAgICAgICByZXR1cm47CisgICAgIH0KKyAgICAgcCA9IChjaGFy ICopIHJlc3BvbnNlLT5yZXNwb25zZV9idWZmZXI7CisgCitAQCAtNjQ3NiwxMiArNjQ3NiwxMiBA QCBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX21kdG0oCisgICAgIHdoaWxlKCFpc2RpZ2l0KCpw KSkgcCsrOworIAorICAgICBpZihzdHJsZW4ocCkgPCAxNCkKKy0JZ290byBlcnJvcl9leGl0Owor KyAgICAgICAgZ290byBlcnJvcl9leGl0OworIAorICAgICBmb3IoaSA9IDA7IGkgPCAxNDsgaSsr KQorICAgICB7CistCWlmKCFpc2RpZ2l0KCoocCtpKSkpCistCSAgICBnb3RvIGVycm9yX2V4aXQ7 CisrICAgICAgICBpZighaXNkaWdpdCgqKHAraSkpKQorKyAgICAgICAgICAgIGdvdG8gZXJyb3Jf ZXhpdDsKKyAgICAgfQorICAgICBtZW1zZXQoJnRtLCAnXDAnLCBzaXplb2Yoc3RydWN0IHRtKSk7 CisgCitAQCAtNjQ4OSw3ICs2NDg5LDcgQEAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9tZHRt KAorICAgICByYyA9IHNzY2FuZihwLCAiJTA0ZCIsICZ0bS50bV95ZWFyKTsKKyAgICAgaWYocmMg IT0gMSkKKyAgICAgeworLQlnb3RvIGVycm9yX2V4aXQ7CisrICAgICAgICBnb3RvIGVycm9yX2V4 aXQ7CisgICAgIH0KKyAgICAgdG0udG1feWVhciAtPSAxOTAwOworICAgICBwICs9IDQ7CitAQCAt NjQ5OCw3ICs2NDk4LDcgQEAgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9tZHRtKAorICAgICBy YyA9IHNzY2FuZihwLCAiJTAyZCIsICZ0bS50bV9tb24pOworICAgICBpZihyYyAhPSAxKQorICAg ICB7CistCWdvdG8gZXJyb3JfZXhpdDsKKysgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAg fQorICAgICB0bS50bV9tb24tLTsKKyAgICAgcCArPSAyOworQEAgLTY1MDcsNyArNjUwNyw3IEBA IGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2VfbWR0bSgKKyAgICAgcmMgPSBzc2NhbmYocCwgIiUw MmQiLCAmdG0udG1fbWRheSk7CisgICAgIGlmKHJjICE9IDEpCisgICAgIHsKKy0JZ290byBlcnJv cl9leGl0OworKyAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgICB9CisgICAgIHAgKz0gMjsK KyAKK0BAIC02NTE1LDcgKzY1MTUsNyBAQCBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX21kdG0o CisgICAgIHJjID0gc3NjYW5mKHAsICIlMDJkIiwgJnRtLnRtX2hvdXIpOworICAgICBpZihyYyAh PSAxKQorICAgICB7CistCWdvdG8gZXJyb3JfZXhpdDsKKysgICAgICAgIGdvdG8gZXJyb3JfZXhp dDsKKyAgICAgfQorICAgICBwICs9IDI7CisgCitAQCAtNjUyMyw3ICs2NTIzLDcgQEAgZ2xvYnVz X2xfZnRwX2NsaWVudF9wYXJzZV9tZHRtKAorICAgICByYyA9IHNzY2FuZihwLCAiJTAyZCIsICZ0 bS50bV9taW4pOworICAgICBpZihyYyAhPSAxKQorICAgICB7CistCWdvdG8gZXJyb3JfZXhpdDsK KysgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgfQorICAgICBwICs9IDI7CisgCitAQCAt NjUzMSw0MSArNjUzMSw0MSBAQCBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX21kdG0oCisgICAg IHJjID0gc3NjYW5mKHAsICIlMDJkIiwgJnRtLnRtX3NlYyk7CisgICAgIGlmKHJjICE9IDEpCisg ICAgIHsKKy0JZ290byBlcnJvcl9leGl0OworKyAgICAgICAgZ290byBlcnJvcl9leGl0OworICAg ICB9CisgICAgIHAgKz0gMjsKKyAKKyAgICAgaWYoKnAgPT0gJy4nKQorICAgICB7CistCXNzY2Fu ZihwLCAiJWYiLCAmZnJhY3Rpb24pOworLQluc2VjID0gZnJhY3Rpb24gKiAxMDAwMDAwMDAwOwor KyAgICAgICAgc3NjYW5mKHAsICIlZiIsICZmcmFjdGlvbik7CisrICAgICAgICBuc2VjID0gZnJh Y3Rpb24gKiAxMDAwMDAwMDAwOworICAgICB9CistICAgIAorKworICAgICBmaWxlX3RpbWUgPSBt a3RpbWUoJnRtKTsKKyAgICAgaWYoZmlsZV90aW1lID09ICh0aW1lX3QpIC0xKQorICAgICB7Cist CWdvdG8gZXJyb3JfZXhpdDsKKysgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgfQorLSAg ICAKKysKKyAgICAgbm93ID0gdGltZSgmbm93KTsKKyAgICAgaWYobm93ID09ICh0aW1lX3QpIC0x KQorICAgICB7CistCWdvdG8gZXJyb3JfZXhpdDsKKysgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsK KyAgICAgfQorLSAgICAKKysKKyAgICAgbWVtc2V0KCZnbXRfbm93X3RtLCAnXDAnLCBzaXplb2Yo c3RydWN0IHRtKSk7CisgICAgIGdtdF9ub3dfdG1fcCA9IGdsb2J1c19saWJjX2dtdGltZV9yKCZu b3csICZnbXRfbm93X3RtKTsKKyAgICAgaWYoZ210X25vd190bV9wID09IE5VTEwpCisgICAgIHsK Ky0JZ290byBlcnJvcl9leGl0OworKyAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgICB9Cist ICAgIAorKworICAgICBnbXRfbm93ID0gbWt0aW1lKCZnbXRfbm93X3RtKTsKKyAgICAgaWYoZ210 X25vdyA9PSAodGltZV90KSAtMSkKKyAgICAgeworLQlnb3RvIGVycm9yX2V4aXQ7CisrICAgICAg ICBnb3RvIGVycm9yX2V4aXQ7CisgICAgIH0KKy0gICAgCisrCisgICAgIG9mZnNldCA9IG5vdyAt IGdtdF9ub3c7CisgCisgICAgIGNsaWVudF9oYW5kbGUtPm1vZGlmaWNhdGlvbl90aW1lX3BvaW50 ZXItPnR2X3NlYyA9IGZpbGVfdGltZSArIG9mZnNldDsKK0BAIC02NTc2LDEyICs2NTc2LDEyIEBA IGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2VfbWR0bSgKKyBlcnJvcl9leGl0OgorICAgICBpZihj bGllbnRfaGFuZGxlLT5lcnIgPT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKy0JY2xpZW50X2hh bmRsZS0+ZXJyID0gR0xPQlVTX0lfRlRQX0NMSUVOVF9FUlJPUl9QUk9UT0NPTF9FUlJPUigpOwor KyAgICAgICAgY2xpZW50X2hhbmRsZS0+ZXJyID0gR0xPQlVTX0lfRlRQX0NMSUVOVF9FUlJPUl9Q Uk9UT0NPTF9FUlJPUigpOworICAgICB9CisgfQorIAorIC8qCistV2UgZXhwZWN0IHRoZSByZXNw b25zZSBidWZmZXIgZm9yIE1MU1QgdG8gbG9vayBsaWtlIHRoaXM6ICAgIAorK1dlIGV4cGVjdCB0 aGUgcmVzcG9uc2UgYnVmZmVyIGZvciBNTFNUIHRvIGxvb2sgbGlrZSB0aGlzOgorIAorIDI1MC1C ZWdpbjxDUkxGPgorIDxTUEFDRT50eXBlPWRpcjttb2RpZnk9MjAwMjAxMDEyMjQ4NTM7VU5JWC5t b2RlPTA3NTU8U1BBQ0U+L3B1Yi9rZXJuZWwvc29mdHdhcmU8Q1JMRj4KK0BAIC02NTg5LDcgKzY1 ODksNyBAQCBXZSBleHBlY3QgdGhlIHJlc3BvbnNlIGJ1ZmZlciBmb3IgTUxTVCB0byBsb29rIGxp a2UgdGhpczoKKyAKKyBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgZmFjdCBzdHJpbmcgbGluZXMsIGJ1 dCB0aGUgZmlsZW5hbWVzIG11c3QgYmUgdGhlIHNhbWUuIElmCisgdGhlcmUgYXJlIG11bHRpcGxl IGZhY3Qgc3RyaW5nIGxpbmVzLCB3ZSB2ZXJpZnkgdGhhdCB0aGUgZmlsZW5hbWVzIGFyZSB0aGUg c2FtZQorLWFuZCBjb25jYXRlbmF0ZSB0aGUgZmFjdCBsaXN0cyBpbnRvIGEgc2luZ2xlIGZhY3Qg bGlzdC4gIFRoZSB1c2VyIHdpbGwgYWx3YXlzIAorK2FuZCBjb25jYXRlbmF0ZSB0aGUgZmFjdCBs aXN0cyBpbnRvIGEgc2luZ2xlIGZhY3QgbGlzdC4gIFRoZSB1c2VyIHdpbGwgYWx3YXlzCisgZ2V0 IGEgc2luZ2xlIGxpbmUgY29uc2lzdGluZyBvZiAiZmFjdGxpc3Q8c3BhY2U+ZmlsZW5hbWUiLgor IAorIElmIHRoZSByZXNwb25zZSBidWZmZXIgZG9lc24ndCBsb29rIGxpa2UgdGhhdCB3ZSBleGl0 IHdpdGggYSBwcm90b2NvbCBlcnJvci4KK0BAIC02NTk3LDEwICs2NTk3LDEwIEBAIElmIHRoZSBy ZXNwb25zZSBidWZmZXIgZG9lc24ndCBsb29rIGxpa2UgdGhhdCB3ZSBleGl0IHdpdGggYSBwcm90 b2NvbCBlcnJvci4KKyBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9t bHN0KAorLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICoJCWNsaWVudF9oYW5kbGUs CistICAgIGdsb2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICoJCXJlc3BvbnNlKQorKyAgICBn bG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICogICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUs CisrICAgIGdsb2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICogICAgICAgICAgICAgcmVzcG9u c2UpCisgeworLSAgICBjaGFyICoJCQkJCXA7CisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcDsKKyAgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBidWZmZXI7CisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZmFjdF9saXN0OworICAgICBjaGFyICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRoaXNfZmlsZW5hbWU7CitAQCAtNjYxNCwxOSArNjYxNCwx OSBAQCBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX21sc3QoCisgCisgICAgIGlmKHJlc3BvbnNl LT5jb2RlICE9IDI1MCkKKyAgICAgeworLQlyZXR1cm47CisrICAgICAgICByZXR1cm47CisgICAg IH0KKy0gICAgCisrCisgICAgIGJ1ZmZlciA9IChnbG9idXNfYnl0ZV90ICopIGdsb2J1c19tYWxs b2MoCisgICAgICAgICByZXNwb25zZS0+cmVzcG9uc2VfbGVuZ3RoICogc2l6ZW9mKGdsb2J1c19i eXRlX3QpKTsKKyAgICAgaWYoYnVmZmVyID09IEdMT0JVU19OVUxMKQorICAgICB7CisgICAgICAg ICBnb3RvIG5vbWVtX2V4aXQ7CisgICAgIH0KKy0gICAgCisrCisgICAgIHAgPSAoY2hhciAqKSBy ZXNwb25zZS0+cmVzcG9uc2VfYnVmZmVyOworIAorLSAgICAvKiBhZHZhbmNpbmcgcGFzdCB0aGUg c3RhcnRpbmcgY29udHJvbCByZXNwb25zZSAqLyAgIAorKyAgICAvKiBhZHZhbmNpbmcgcGFzdCB0 aGUgc3RhcnRpbmcgY29udHJvbCByZXNwb25zZSAqLworICAgICB3aGlsZSgqcCAmJiAqcCAhPSAn XHInICYmICpwICE9ICdcbicpCisgICAgIHsKKyAgICAgICAgIHArKzsKK0BAIC02NjM1LDI0ICs2 NjM1LDI0IEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2VfbWxzdCgKKyAgICAgeworICAgICAg ICAgcCsrOworICAgICB9CistICAgIAorKworICAgICAvKiBldmVyeSBmYWN0IGxpbmUgc3RhcnRz IHdpdGggYSBzcGFjZSAqLworICAgICB3aGlsZSgqcCA9PSAnICcgJiYgKigrK3ApKQorLSAgICB7 ICAgICAgICAKKysgICAgeworICAgICAgICAgZmFjdF9saXN0ID0gcDsKKy0gICAgICAgIAorKwor ICAgICAgICAgLyogZmlsZW5hbWUgc3RhcnRzIGFmdGVyIHRoZSBmaXJzdCBzcGFjZQorICAgICAg ICAgICAgbm8gc3BhY2VzIGFyZSBhbGxvd2VkIGluIHRoZSBmYWN0IGxpc3QgKi8KKyAgICAgICAg IHRoaXNfZmlsZW5hbWUgPSBzdHJjaHIocCwgJyAnKTsKKyAgICAgICAgIGlmKHRoaXNfZmlsZW5h bWUgPT0gR0xPQlVTX05VTEwpCisgICAgICAgICB7CisgICAgICAgICAgICAgZ290byBlcnJvcl9l eGl0OworLSAgICAgICAgfSAgICAgICAgCisrICAgICAgICB9CisgICAgICAgICBmYWN0X2xpc3Rf bGVuZ3RoID0gdGhpc19maWxlbmFtZSAtIHA7CistICAgICAgICAKKy0gICAgICAgIC8qIGNvcHkg Y3VycmVudCBmYWN0IGxpc3QgdG8gYnVmZmVyICovICAgICAgICAKKysKKysgICAgICAgIC8qIGNv cHkgY3VycmVudCBmYWN0IGxpc3QgdG8gYnVmZmVyICovCisgICAgICAgICBtZW1jcHkoYnVmZmVy ICsgdG90YWxfZmFjdF9saXN0X2xlbmd0aCwgZmFjdF9saXN0LCBmYWN0X2xpc3RfbGVuZ3RoKTsK Ky0gICAgICAgIAorKworICAgICAgICAgdG90YWxfZmFjdF9saXN0X2xlbmd0aCArPSBmYWN0X2xp c3RfbGVuZ3RoOworIAorICAgICAgICAgLyogYWR2YW5jaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUg ZmlsZW5hbWUgKi8KK0BAIC02NjYwLDcgKzY2NjAsNyBAQCBnbG9idXNfbF9mdHBfY2xpZW50X3Bh cnNlX21sc3QoCisgICAgICAgICB3aGlsZSgqcCAmJiAqcCAhPSAnXHInICYmICpwICE9ICdcbicp CisgICAgICAgICB7CisgICAgICAgICAgICAgcCsrOworLSAgICAgICAgfSAgICAgICAgCisrICAg ICAgICB9CisgCisgICAgICAgICAvKiBpZiB3ZSBoYXZlIG11bHRpcGxlIGZhY3Qgc3RyaW5ncyBm b3IgdGhpcyBmaWxlLCBjaGVjayB0aGF0IHRoZQorICAgICAgICAgICAgZmlsZW5hbWVzIGFyZSB0 aGUgc2FtZS4gIGV4aXQgd2l0aCBwcm90b2NvbCBlcnJvciBpZiBub3QgKi8KK0BAIC02NjcxLDQy ICs2NjcxLDQyIEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2VfbWxzdCgKKyAgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgICAgICAgICB9Cist ICAgICAgICB9ICAgICAgICAKKysgICAgICAgIH0KKyAgICAgICAgIGVsc2UKKy0gICAgICAgIHsg ICAgCisrICAgICAgICB7CisgICAgICAgICAgICAgZmlsZW5hbWVfbGVuZ3RoID0gcCAtIHRoaXNf ZmlsZW5hbWU7CisgICAgICAgICAgICAgZmlsZW5hbWUgPSB0aGlzX2ZpbGVuYW1lOworICAgICAg ICAgfQorLSAgICAgICAgCisrCisgICAgICAgICAvKiBhZHZhbmNpbmcgcGFzdCB0aGUgQ1JMRiB0 byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgbGluZSAqLworICAgICAgICAgd2hpbGUoKnAgJiYgKCpw ID09ICdccicgfHwgKnAgPT0gJ1xuJykpCisgICAgICAgICB7CisgICAgICAgICAgICAgcCsrOwor LSAgICAgICAgfSAgICAgICAgCistICAgIH0gICAgCistICAgIAorKyAgICAgICAgfQorKyAgICB9 CisrCisgICAgIGlmKCpwID09ICdcMCcgfHwgZmlsZW5hbWVfbGVuZ3RoID09IDApCisgICAgIHsK KyAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgfQorLSAgICAgICAgCisrCisgICAgIG1l bWNweShidWZmZXIgKyB0b3RhbF9mYWN0X2xpc3RfbGVuZ3RoLCBmaWxlbmFtZSwgZmlsZW5hbWVf bGVuZ3RoKTsKKy0gICAgCisrCisgICAgIGRhdGFfbGVuZ3RoID0gdG90YWxfZmFjdF9saXN0X2xl bmd0aCArIGZpbGVuYW1lX2xlbmd0aDsKKy0gICAgCistICAgIC8qIG51bGwgdGVybWluYXRlIHRo ZSBidWZmZXIgc2luY2UgdGhlIHVzZXIgCisrCisrICAgIC8qIG51bGwgdGVybWluYXRlIHRoZSBi dWZmZXIgc2luY2UgdGhlIHVzZXIKKyAgICAgICAgd2lsbCBsaWtlbHkgdHJlYXQgaXQgYXMgYSBz dHJpbmcgKi8KKyAgICAgYnVmZmVyW2RhdGFfbGVuZ3RoXSA9ICdcMCc7CistICAgIAorKworICAg ICAqY2xpZW50X2hhbmRsZS0+bWxzdF9idWZmZXJfcG9pbnRlciA9IGJ1ZmZlcjsKKy0gICAgKmNs aWVudF9oYW5kbGUtPm1sc3RfYnVmZmVyX2xlbmd0aF9wb2ludGVyID0gZGF0YV9sZW5ndGg7IAor LSAgICAgIAorKyAgICAqY2xpZW50X2hhbmRsZS0+bWxzdF9idWZmZXJfbGVuZ3RoX3BvaW50ZXIg PSBkYXRhX2xlbmd0aDsKKysKKyAgICAgcmV0dXJuOworIAorIGVycm9yX2V4aXQ6CisgICAgIGlm KGNsaWVudF9oYW5kbGUtPmVyciA9PSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworLQljbGllbnRf aGFuZGxlLT5lcnIgPSBHTE9CVVNfSV9GVFBfQ0xJRU5UX0VSUk9SX1BST1RPQ09MX0VSUk9SKCk7 CisrICAgICAgICBjbGllbnRfaGFuZGxlLT5lcnIgPSBHTE9CVVNfSV9GVFBfQ0xJRU5UX0VSUk9S X1BST1RPQ09MX0VSUk9SKCk7CisgICAgIH0KKyAgICAgZ2xvYnVzX2ZyZWUoYnVmZmVyKTsKKyAg ICAgcmV0dXJuOworQEAgLTY3MTQsNyArNjcxNCw3IEBAIGVycm9yX2V4aXQ6Cisgbm9tZW1fZXhp dDoKKyAgICAgaWYoY2xpZW50X2hhbmRsZS0+ZXJyID09IEdMT0JVU19TVUNDRVNTKQorICAgICB7 CistCWNsaWVudF9oYW5kbGUtPmVyciA9IEdMT0JVU19JX0ZUUF9DTElFTlRfRVJST1JfT1VUX09G X01FTU9SWSgpOworKyAgICAgICAgY2xpZW50X2hhbmRsZS0+ZXJyID0gR0xPQlVTX0lfRlRQX0NM SUVOVF9FUlJPUl9PVVRfT0ZfTUVNT1JZKCk7CisgICAgIH0KKyAgICAgcmV0dXJuOworIH0gLyog Z2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9tbHN0KCkgKi8KK0BAIC02NzIzLDggKzY3MjMsOCBA QCBub21lbV9leGl0OgorIHN0YXRpYworIHZvaWQKKyBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNl X2N3ZCgKKy0gICAgZ2xvYnVzX2lfZnRwX2NsaWVudF9oYW5kbGVfdCAqCQljbGllbnRfaGFuZGxl LAorLSAgICBnbG9idXNfZnRwX2NvbnRyb2xfcmVzcG9uc2VfdCAqCQlyZXNwb25zZSkKKysgICAg Z2xvYnVzX2lfZnRwX2NsaWVudF9oYW5kbGVfdCAqICAgICAgICAgICAgICBjbGllbnRfaGFuZGxl LAorKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfcmVzcG9uc2VfdCAqICAgICAgICAgICAgIHJlc3Bv bnNlKQorIHsKKyAgICAgZ2xvYnVzX2J5dGVfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBidWZmZXI7CisgCitAQCAtNjczMiwxMiArNjczMiwxMiBAQCBnbG9idXNfbF9mdHBfY2xpZW50 X3BhcnNlX2N3ZCgKKyAKKyAgICAgaWYocmVzcG9uc2UtPmNvZGUgIT0gMjUwKQorICAgICB7Cist CXJldHVybjsKKysgICAgICAgIHJldHVybjsKKyAgICAgfQorLSAgICAKKysKKyAgICAgaWYgKCBj bGllbnRfaGFuZGxlLT5tbHN0X2J1ZmZlcl9wb2ludGVyID09IE5VTEwgfHwKKy0JIGNsaWVudF9o YW5kbGUtPm1sc3RfYnVmZmVyX2xlbmd0aF9wb2ludGVyID09IE5VTEwgKSB7CistCXJldHVybjsK KysgICAgICAgICBjbGllbnRfaGFuZGxlLT5tbHN0X2J1ZmZlcl9sZW5ndGhfcG9pbnRlciA9PSBO VUxMICkgeworKyAgICAgICAgcmV0dXJuOworICAgICB9CisgCisgICAgIGJ1ZmZlciA9IGdsb2J1 c19tYWxsb2MoCitAQCAtNjc1MCwxNCArNjc1MCwxNCBAQCBnbG9idXNfbF9mdHBfY2xpZW50X3Bh cnNlX2N3ZCgKKyAgICAgbWVtY3B5KCBidWZmZXIsIHJlc3BvbnNlLT5yZXNwb25zZV9idWZmZXIs IHJlc3BvbnNlLT5yZXNwb25zZV9sZW5ndGggKTsKKyAKKyAgICAgKmNsaWVudF9oYW5kbGUtPm1s c3RfYnVmZmVyX3BvaW50ZXIgPSBidWZmZXI7CistICAgICpjbGllbnRfaGFuZGxlLT5tbHN0X2J1 ZmZlcl9sZW5ndGhfcG9pbnRlciA9IHJlc3BvbnNlLT5yZXNwb25zZV9sZW5ndGg7IAorKyAgICAq Y2xpZW50X2hhbmRsZS0+bWxzdF9idWZmZXJfbGVuZ3RoX3BvaW50ZXIgPSByZXNwb25zZS0+cmVz cG9uc2VfbGVuZ3RoOworIAorICAgICByZXR1cm47CisgCisgbm9tZW1fZXhpdDoKKyAgICAgaWYo Y2xpZW50X2hhbmRsZS0+ZXJyID09IEdMT0JVU19TVUNDRVNTKQorICAgICB7CistCWNsaWVudF9o YW5kbGUtPmVyciA9IEdMT0JVU19JX0ZUUF9DTElFTlRfRVJST1JfT1VUX09GX01FTU9SWSgpOwor KyAgICAgICAgY2xpZW50X2hhbmRsZS0+ZXJyID0gR0xPQlVTX0lfRlRQX0NMSUVOVF9FUlJPUl9P VVRfT0ZfTUVNT1JZKCk7CisgICAgIH0KKyAgICAgcmV0dXJuOworIH0gLyogZ2xvYnVzX2xfZnRw X2NsaWVudF9wYXJzZV9jd2QoKSAqLworQEAgLTY3NjUsMTEgKzY3NjUsMTEgQEAgbm9tZW1fZXhp dDoKKyBzdGF0aWMKKyB2b2lkCisgZ2xvYnVzX2xfZnRwX2NsaWVudF9wYXJzZV9zdGF0KAorLSAg ICBnbG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICoJCWNsaWVudF9oYW5kbGUsCistICAgIGds b2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICoJCXJlc3BvbnNlKQorKyAgICBnbG9idXNfaV9m dHBfY2xpZW50X2hhbmRsZV90ICogICAgICAgICAgICAgIGNsaWVudF9oYW5kbGUsCisrICAgIGds b2J1c19mdHBfY29udHJvbF9yZXNwb25zZV90ICogICAgICAgICAgICAgcmVzcG9uc2UpCisgewor LSAgICBjaGFyICoJCQkJCXA7CistICAgIGNoYXIgKgkJCQkJbGlzdGluZ19zdGFydDsKKysgICAg Y2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwOworKyAgICBjaGFy ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Rpbmdfc3RhcnQ7Cisg ICAgIGdsb2J1c19ieXRlX3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyID0g TlVMTDsKKyAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs aXN0aW5nX2xlbmd0aCA9IDA7CisgICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmVzX2NvZGVbNV07CitAQCAtNjc4MCwyMSArNjc4MCwyMSBAQCBnbG9idXNf bF9mdHBfY2xpZW50X3BhcnNlX3N0YXQoCisgICAgICAgICByZXNwb25zZS0+Y29kZSAhPSAyMTIg JiYKKyAgICAgICAgIHJlc3BvbnNlLT5jb2RlICE9IDIxMykKKyAgICAgeworLQlnb3RvIGVycm9y X2V4aXQ7CisrICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgIH0KKy0gICAgCisrCisgICAg IHNucHJpbnRmKHJlc19jb2RlLCA1LCAiJWQgIiwgcmVzcG9uc2UtPmNvZGUpOworLSAgICAKKysK KyAgICAgYnVmZmVyID0gKGdsb2J1c19ieXRlX3QgKikgZ2xvYnVzX21hbGxvYygKKyAgICAgICAg IHJlc3BvbnNlLT5yZXNwb25zZV9sZW5ndGggKiBzaXplb2YoZ2xvYnVzX2J5dGVfdCkpOworICAg ICBpZihidWZmZXIgPT0gR0xPQlVTX05VTEwpCisgICAgIHsKKyAgICAgICAgIGdvdG8gbm9tZW1f ZXhpdDsKKyAgICAgfQorLSAgICAKKysKKyAgICAgcCA9IChjaGFyICopIHJlc3BvbnNlLT5yZXNw b25zZV9idWZmZXI7CisgCistICAgIC8qIGFkdmFuY2luZyBwYXN0IHRoZSBzdGFydGluZyBjb250 cm9sIHJlc3BvbnNlICovICAgCisrICAgIC8qIGFkdmFuY2luZyBwYXN0IHRoZSBzdGFydGluZyBj b250cm9sIHJlc3BvbnNlICovCisgICAgIHdoaWxlKCpwICYmICpwICE9ICdccicgJiYgKnAgIT0g J1xuJykKKyAgICAgeworICAgICAgICAgcCsrOworQEAgLTY4MDMsNDUgKzY4MDMsNDUgQEAgZ2xv YnVzX2xfZnRwX2NsaWVudF9wYXJzZV9zdGF0KAorICAgICB7CisgICAgICAgICBwKys7CisgICAg IH0KKy0gICAgCisrCisgICAgIGxpc3Rpbmdfc3RhcnQgPSBwOworIAorICAgICAvKiBjaGVjayBm b3IgdGhlIGVuZCBjb250cm9sIHJlc3BvbnNlICovCisgICAgIHdoaWxlKCpwICYmIHN0cm5jbXAo cCwgcmVzX2NvZGUsIDQpICE9IDApCistICAgIHsgICAgICAgICAgICAgICAgCisrICAgIHsKKyAg ICAgICAgIC8qIGFkdmFuY2luZyB0byB0aGUgZW5kIG9mIHRoZSBsaXN0aW5nICovCisgICAgICAg ICB3aGlsZSgqcCAmJiAqcCAhPSAnXHInICYmICpwICE9ICdcbicpCisgICAgICAgICB7CisgICAg ICAgICAgICAgcCsrOworLSAgICAgICAgfSAgICAgICAgCisrICAgICAgICB9CisgICAgICAgICAv KiBhZHZhbmNpbmcgcGFzdCB0aGUgQ1JMRiB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgbGluZSAq LworICAgICAgICAgd2hpbGUoKnAgJiYgKCpwID09ICdccicgfHwgKnAgPT0gJ1xuJykpCisgICAg ICAgICB7CisgICAgICAgICAgICAgcCsrOworLSAgICAgICAgfSAgICAgICAgCistICAgIH0gICAg CisrICAgICAgICB9CisrICAgIH0KKyAgICAgbGlzdGluZ19sZW5ndGggPSBwIC0gbGlzdGluZ19z dGFydDsKKy0gICAgCisrCisgICAgIGlmKCpwID09ICdcMCcgfHwgbGlzdGluZ19sZW5ndGggPT0g MCkKKyAgICAgeworICAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgICB9CistICAgICAgICAK KysKKyAgICAgbWVtY3B5KGJ1ZmZlciwgbGlzdGluZ19zdGFydCwgbGlzdGluZ19sZW5ndGgpOwor LSAgICAgICAgCistICAgIC8qIG51bGwgdGVybWluYXRlIHRoZSBidWZmZXIgc2luY2UgdGhlIHVz ZXIgCisrCisrICAgIC8qIG51bGwgdGVybWluYXRlIHRoZSBidWZmZXIgc2luY2UgdGhlIHVzZXIK KyAgICAgICAgd2lsbCBsaWtlbHkgdHJlYXQgaXQgYXMgYSBzdHJpbmcgKi8KKyAgICAgYnVmZmVy W2xpc3RpbmdfbGVuZ3RoXSA9ICdcMCc7CistICAgIAorKworICAgICAqY2xpZW50X2hhbmRsZS0+ bWxzdF9idWZmZXJfcG9pbnRlciA9IGJ1ZmZlcjsKKy0gICAgKmNsaWVudF9oYW5kbGUtPm1sc3Rf YnVmZmVyX2xlbmd0aF9wb2ludGVyID0gbGlzdGluZ19sZW5ndGg7IAorLSAgICAgIAorKyAgICAq Y2xpZW50X2hhbmRsZS0+bWxzdF9idWZmZXJfbGVuZ3RoX3BvaW50ZXIgPSBsaXN0aW5nX2xlbmd0 aDsKKysKKyAgICAgcmV0dXJuOworIAorIGVycm9yX2V4aXQ6CisgICAgIGlmKGNsaWVudF9oYW5k bGUtPmVyciA9PSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworLQljbGllbnRfaGFuZGxlLT5lcnIg PSBHTE9CVVNfSV9GVFBfQ0xJRU5UX0VSUk9SX1BST1RPQ09MX0VSUk9SKCk7CisrICAgICAgICBj bGllbnRfaGFuZGxlLT5lcnIgPSBHTE9CVVNfSV9GVFBfQ0xJRU5UX0VSUk9SX1BST1RPQ09MX0VS Uk9SKCk7CisgICAgIH0KKyAgICAgaWYoYnVmZmVyKQorICAgICB7CitAQCAtNjg1Miw3ICs2ODUy LDcgQEAgZXJyb3JfZXhpdDoKKyBub21lbV9leGl0OgorICAgICBpZihjbGllbnRfaGFuZGxlLT5l cnIgPT0gR0xPQlVTX1NVQ0NFU1MpCisgICAgIHsKKy0JY2xpZW50X2hhbmRsZS0+ZXJyID0gR0xP QlVTX0lfRlRQX0NMSUVOVF9FUlJPUl9PVVRfT0ZfTUVNT1JZKCk7CisrICAgICAgICBjbGllbnRf aGFuZGxlLT5lcnIgPSBHTE9CVVNfSV9GVFBfQ0xJRU5UX0VSUk9SX09VVF9PRl9NRU1PUlkoKTsK KyAgICAgfQorICAgICByZXR1cm47CisgfSAvKiBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX3N0 YXQoKSAqLworQEAgLTY4NjEsNyArNjg2MSw3IEBAIG5vbWVtX2V4aXQ6Cisgc3RhdGljCisgZ2xv YnVzX2Jvb2xfdAorIGdsb2J1c19sX2Z0cF9jbGllbnRfY2FuX2NhY2hlX2RhdGFfY29ubmVjdGlv bigKKy0gICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRfdCAqCQl0YXJnZXQpCisrICAgIGds b2J1c19pX2Z0cF9jbGllbnRfdGFyZ2V0X3QgKiAgICAgICAgICAgICAgdGFyZ2V0KQorIHsKKyAg ICAgcmV0dXJuIEdMT0JVU19UUlVFOworIH0KK0BAIC02ODY5LDkgKzY4NjksOSBAQCBnbG9idXNf bF9mdHBfY2xpZW50X2Nhbl9jYWNoZV9kYXRhX2Nvbm5lY3Rpb24oCisgc3RhdGljCisgdm9pZAor IGdsb2J1c19sX2Z0cF9jbGllbnRfZGF0YV9mb3JjZV9jbG9zZV9jYWxsYmFjaygKKy0gICAgdm9p ZCAqCQkJCQljYWxsYmFja19hcmcsCistICAgIGdsb2J1c19mdHBfY29udHJvbF9oYW5kbGVfdCAq CQljb250cm9sX2hhbmRsZSwKKy0gICAgZ2xvYnVzX29iamVjdF90ICoJCQkJZXJyb3IpCisrICAg IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfYXJn LAorKyAgICBnbG9idXNfZnRwX2NvbnRyb2xfaGFuZGxlX3QgKiAgICAgICAgICAgICAgIGNvbnRy b2xfaGFuZGxlLAorKyAgICBnbG9idXNfb2JqZWN0X3QgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVycm9yKQorIHsKKyB9CisgCitAQCAtNjg5NCw3ICs2ODk0LDcgQEAgZ2xvYnVzX2xfZnRw X2NsaWVudF9wcF9zcmNfYWRkKAorICAgICAgICAgJnBsX3NvdXJjZV91cmwsCisgICAgICAgICAm cGxfZGVzdF91cmwsCisgICAgICAgICBjbGllbnRfaGFuZGxlLT5hdHRyLnBpcGVsaW5lX2FyZyk7 CistICAgIAorKworICAgICBpZihwbF9zb3VyY2VfdXJsID09IE5VTEwpCisgICAgIHsKKyAgICAg ICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKK0BAIC02OTgzLDcgKzY5ODMsNyBAQCBnbG9idXNf bF9mdHBfY2xpZW50X3BwX2RzdF9hZGQoCisgICAgICAgICAmcGxfc291cmNlX3VybCwKKyAgICAg ICAgICZwbF9kZXN0X3VybCwKKyAgICAgICAgIGNsaWVudF9oYW5kbGUtPmF0dHIucGlwZWxpbmVf YXJnKTsKKy0gICAgCisrCisgICAgIGlmKHBsX2Rlc3RfdXJsID09IE5VTEwpCisgICAgIHsKKyAg ICAgICAgIHJldHVybiBHTE9CVVNfU1VDQ0VTUzsKK0BAIC03MDAwLDcgKzcwMDAsNyBAQCBnbG9i dXNfbF9mdHBfY2xpZW50X3BwX2RzdF9hZGQoCisgCisgICAgIGNsaWVudF9oYW5kbGUtPm5vX2Nh bGxiYWNrX2NvdW50Kys7CisgICAgIGdsb2J1c19maWZvX2VucXVldWUoJmNsaWVudF9oYW5kbGUt PmRzdF9yZXNwb25zZV9wZW5kaW5nX3F1ZXVlLCB1cmxfZW50KTsKKy0gICAgCisrCisgICAgIGlm KHRhcmdldC0+YXR0ci0+bW9kdWxlX2FsZ19zdHIgIT0gR0xPQlVTX05VTEwpCisgICAgIHsKKyAg ICAgICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfcGx1Z2luX25vdGlmeV9jb21tYW5kKAorQEAgLTcx MjUsNyArNzEyNSw3IEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfcHBfZ2V0X25leHQoCisgICAgICAg ICBtZW1jcHkoc3JjX3VybF9lbnQsIHVybF9lbnQsIHNpemVvZihnbG9idXNfaV9mdHBfY2xpZW50 X3VybF9lbnRfdCkpOworICAgICAgICAgZ2xvYnVzX2ZpZm9fZW5xdWV1ZSgmY2xpZW50X2hhbmRs ZS0+c3JjX29wX3F1ZXVlLCBzcmNfdXJsX2VudCk7CisgICAgIH0KKy0gICAgCisrCisgICAgIHJl dHVybiBHTE9CVVNfU1VDQ0VTUzsKKyB9CisgCitAQCAtNzE1Myw3ICs3MTUzLDcgQEAgZ2xvYnVz X2xfZnRwX2NsaWVudF9wcF94ZmVyX2RzdF9hZGQoCisgICAgIH0KKyAgICAgdXJsX2VudCA9IChn bG9idXNfaV9mdHBfY2xpZW50X3VybF9lbnRfdCAqKQorICAgICAgICAgZ2xvYnVzX2ZpZm9fZGVx dWV1ZSgmY2xpZW50X2hhbmRsZS0+ZHN0X29wX3F1ZXVlKTsKKy0gICAgCisrCisgICAgIGNsaWVu dF9oYW5kbGUtPm5vX2NhbGxiYWNrX2NvdW50Kys7CisgICAgIGdsb2J1c19maWZvX2VucXVldWUo JmNsaWVudF9oYW5kbGUtPmRzdF9yZXNwb25zZV9wZW5kaW5nX3F1ZXVlLCB1cmxfZW50KTsKKyAK K0BAIC03MjgzLDE5ICs3MjgzLDE5IEBAIHJlc3VsdF9mYXVsdDoKKyBzdGF0aWMKKyBnbG9idXNf cmVzdWx0X3QKKyBnbG9idXNfbF9mdHBfY2xpZW50X3VzZV9ncmlkZnRwMl9nZXRwdXQoCistICAg IGdsb2J1c19pX2Z0cF9jbGllbnRfdGFyZ2V0X3QgKgkJdGFyZ2V0LAorKyAgICBnbG9idXNfaV9m dHBfY2xpZW50X3RhcmdldF90ICogICAgICAgICAgICAgIHRhcmdldCwKKyAgICAgZ2xvYnVzX2Jv b2xfdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRwdXQpCisgeworLSAgICBnbG9i dXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICoJCWNsaWVudF9oYW5kbGU7CisrICAgIGdsb2J1c19p X2Z0cF9jbGllbnRfaGFuZGxlX3QgKiAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZTsKKyAgICAg Z2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl90ICAgICAgICAgICAgICBoYW5kbGVfYXR0cjsK Ky0gICAgZ2xvYnVzX3Jlc3VsdF90CQkJCXJlc3VsdDsKKysgICAgZ2xvYnVzX3Jlc3VsdF90ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7CisgCisgICAgIGNsaWVudF9oYW5kbGUg PSB0YXJnZXQtPm93bmVyOworICAgICBoYW5kbGVfYXR0ciA9ICZjbGllbnRfaGFuZGxlLT5hdHRy OworIAorLSAgICAvKiBEb2VzIHRhcmdldCBzdXBwb3J0IEdGRC40Nz8gCisrICAgIC8qIERvZXMg dGFyZ2V0IHN1cHBvcnQgR0ZELjQ3PworICAgICAgKi8KKy0gICAgcmVzdWx0ID0gCisrICAgIHJl c3VsdCA9CisgICAgICAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX2dldF9ncmlkZnRw MigmaGFuZGxlX2F0dHIsIGdldHB1dCk7CisgICAgIGlmKHJlc3VsdCAhPSBHTE9CVVNfU1VDQ0VT UyB8fCAqZ2V0cHV0ID09IEdMT0JVU19GQUxTRSkKKyAgICAgeworQEAgLTczMTQsNyArNzMxNCw3 IEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfdXNlX2dyaWRmdHAyX2dldHB1dCgKKyAKKyAgICAgLyog QXJlIEdGRC40NyBleHRlbnNpb25zIGVuYWJsZWQ/CisgICAgICAqLworLSAgICBpZiAoZ2xvYnVz X2lfZnRwX2NsaWVudF9mZWF0dXJlX2dldCggCisrICAgIGlmIChnbG9idXNfaV9mdHBfY2xpZW50 X2ZlYXR1cmVfZ2V0KAorICAgICAgICAgICAgIHRhcmdldC0+ZmVhdHVyZXMsCisgICAgICAgICAg ICAgR0xPQlVTX0ZUUF9DTElFTlRfRkVBVFVSRV9HRVRQVVQpICE9IEdMT0JVU19GVFBfQ0xJRU5U X1RSVUUpCisgICAgIHsKK0BAIC03MzU4LDE0ICs3MzU4LDE0IEBAIGdsb2J1c19sX2Z0cF9jbGll bnRfdXNlX2dyaWRmdHAyX2dldHB1dCgKKyBzdGF0aWMKKyBnbG9idXNfcmVzdWx0X3QKKyBnbG9i dXNfbF9mdHBfY2xpZW50X3NlbmRfZ2V0KAorLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Rhcmdl dF90ICoJCXRhcmdldCwKKysgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRfdCAqICAgICAg ICAgICAgICB0YXJnZXQsCisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGF0aG5hbWUsCisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFzdikKKyB7CistICAgIGNoYXIgKgkJCQkJdG1wc3RyID0gR0xPQlVTX05V TEw7CistICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJY2xpZW50X2hhbmRsZTsK Ky0gICAgaW50CQkJCQkJcmMsIG9sZHJjOworLSAgICBnbG9idXNfcmVzdWx0X3QJCQkJcmVzdWx0 OworKyAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcHN0 ciA9IEdMT0JVU19OVUxMOworKyAgICBnbG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICogICAg ICAgICAgICAgIGNsaWVudF9oYW5kbGU7CisrICAgIGludCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmMsIG9sZHJjOworKyAgICBnbG9idXNfcmVzdWx0X3QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKyAKKyAgICAgY2xpZW50X2hhbmRsZSA9IHRh cmdldC0+b3duZXI7CisgCitAQCAtNzQwMiw3ICs3NDAyLDcgQEAgZ2xvYnVzX2xfZnRwX2NsaWVu dF9zZW5kX2dldCgKKyAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+cGFzdl9h ZGRyZXNzWzBdLnBvcnQgJiAweGZmKTsKKyAgICAgICAgIGlmKHJjID09IG9sZHJjKQorICAgICAg ICAgeworLSAgICAgICAgICAgIGdsb2J1c19saWJjX2ZyZWUodG1wc3RyKTsgCisrICAgICAgICAg ICAgZ2xvYnVzX2xpYmNfZnJlZSh0bXBzdHIpOworICAgICAgICAgICAgIHJldHVybiBnbG9idXNf ZXJyb3JfcHV0KEdMT0JVU19FUlJPUl9OT19JTkZPKTsKKyAgICAgICAgIH0KKyAgICAgfQorQEAg LTc0MTQsNyArNzQxNCw3IEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfc2VuZF9nZXQoCisgICAgICAg ICAiR0VUIHBhdGg9JXM7JXMiIENSTEYsCisgICAgICAgICBwYXRobmFtZSwKKyAgICAgICAgIHRt cHN0cik7CistICAgICAgICAKKysKKyAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0gR0xP QlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CisgICAgICAgIGNsaWVudF9oYW5kbGUtPnN0 YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CisgICAgICAgIGNsaWVu dF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQorQEAg LTc0MjIsNyArNzQyMiw3IEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfc2VuZF9nZXQoCisgICAgICAg ICBnbG9idXNfbGliY19mcmVlKHRtcHN0cik7CisgICAgICAgICByZXR1cm4gR0xPQlVTX1NVQ0NF U1M7CisgICAgIH0KKy0gICAgICAgIAorKworICAgICByZXN1bHQgPQorICAgICAgICAgZ2xvYnVz X2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKyAgICAgICAgICAgICB0YXJnZXQtPmNvbnRyb2xf aGFuZGxlLAorQEAgLTc0MzEsNyArNzQzMSw3IEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfc2VuZF9n ZXQoCisgICAgICAgICAgICAgdGFyZ2V0LAorICAgICAgICAgICAgIHBhdGhuYW1lLAorICAgICAg ICAgICAgIHRtcHN0cik7CistICAgICAgICAKKysKKyAgICAgZ2xvYnVzX2xpYmNfZnJlZSh0bXBz dHIpOworIAorICAgICByZXR1cm4gcmVzdWx0OworQEAgLTc0NDMsMTQgKzc0NDMsMTQgQEAgZ2xv YnVzX2xfZnRwX2NsaWVudF9zZW5kX2dldCgKKyBzdGF0aWMKKyBnbG9idXNfcmVzdWx0X3QKKyBn bG9idXNfbF9mdHBfY2xpZW50X3NlbmRfcHV0KAorLSAgICBnbG9idXNfaV9mdHBfY2xpZW50X3Rh cmdldF90ICoJCXRhcmdldCwKKysgICAgZ2xvYnVzX2lfZnRwX2NsaWVudF90YXJnZXRfdCAqICAg ICAgICAgICAgICB0YXJnZXQsCisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGF0aG5hbWUsCisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGFzdikKKyB7CistICAgIGNoYXIgKgkJCQkJdG1wc3RyID0gR0xPQlVT X05VTEw7CistICAgIGdsb2J1c19pX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJY2xpZW50X2hhbmRs ZTsKKy0gICAgaW50CQkJCQkJcmMsIG9sZHJjOworLSAgICBnbG9idXNfcmVzdWx0X3QJCQkJcmVz dWx0OworKyAgICBjaGFyICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRt cHN0ciA9IEdMT0JVU19OVUxMOworKyAgICBnbG9idXNfaV9mdHBfY2xpZW50X2hhbmRsZV90ICog ICAgICAgICAgICAgIGNsaWVudF9oYW5kbGU7CisrICAgIGludCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcmMsIG9sZHJjOworKyAgICBnbG9idXNfcmVzdWx0X3QgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKyAKKyAgICAgY2xpZW50X2hhbmRsZSA9 IHRhcmdldC0+b3duZXI7CisgCitAQCAtNzQ4Nyw3ICs3NDg3LDcgQEAgZ2xvYnVzX2xfZnRwX2Ns aWVudF9zZW5kX3B1dCgKKyAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50X2hhbmRsZS0+cGFz dl9hZGRyZXNzWzBdLnBvcnQgJiAweGZmKTsKKyAgICAgICAgIGlmKHJjID09IG9sZHJjKQorICAg ICAgICAgeworLSAgICAgICAgICAgIGdsb2J1c19saWJjX2ZyZWUodG1wc3RyKTsgCisrICAgICAg ICAgICAgZ2xvYnVzX2xpYmNfZnJlZSh0bXBzdHIpOworICAgICAgICAgICAgIHJldHVybiBnbG9i dXNfZXJyb3JfcHV0KEdMT0JVU19FUlJPUl9OT19JTkZPKTsKKyAgICAgICAgIH0KKyAgICAgfQor QEAgLTc0OTksNyArNzQ5OSw3IEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfc2VuZF9wdXQoCisgICAg ICAgICAiUFVUIHBhdGg9JXM7JXMiIENSTEYsCisgICAgICAgICBwYXRobmFtZSwKKyAgICAgICAg IHRtcHN0cik7CistICAgICAgICAKKysKKyAgICAgaWYoY2xpZW50X2hhbmRsZS0+c3RhdGUgPT0g R0xPQlVTX0ZUUF9DTElFTlRfSEFORExFX0FCT1JUIHx8CisgICAgICAgIGNsaWVudF9oYW5kbGUt PnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9SRVNUQVJUIHx8CisgICAgICAgIGNs aWVudF9oYW5kbGUtPnN0YXRlID09IEdMT0JVU19GVFBfQ0xJRU5UX0hBTkRMRV9GQUlMVVJFKQor QEAgLTc1MDcsNyArNzUwNyw3IEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfc2VuZF9wdXQoCisgICAg ICAgICBnbG9idXNfbGliY19mcmVlKHRtcHN0cik7CisgICAgICAgICByZXR1cm4gR0xPQlVTX1NV Q0NFU1M7CisgICAgIH0KKy0gICAgICAgIAorKworICAgICByZXN1bHQgPQorICAgICAgICAgZ2xv YnVzX2Z0cF9jb250cm9sX3NlbmRfY29tbWFuZCgKKyAgICAgICAgICAgICB0YXJnZXQtPmNvbnRy b2xfaGFuZGxlLAorQEAgLTc1MTYsNyArNzUxNiw3IEBAIGdsb2J1c19sX2Z0cF9jbGllbnRfc2Vu ZF9wdXQoCisgICAgICAgICAgICAgdGFyZ2V0LAorICAgICAgICAgICAgIHBhdGhuYW1lLAorICAg ICAgICAgICAgIHRtcHN0cik7CistICAgICAgICAKKysKKyAgICAgZ2xvYnVzX2xpYmNfZnJlZSh0 bXBzdHIpOworIAorICAgICByZXR1cm4gcmVzdWx0OworZGlmZiAtLWdpdCBhL2dyaWRmdHAvY2xp ZW50L3NvdXJjZS90ZXN0L2xpbmdlcmluZy1nZXQtdGVzdC5jIGIvZ3JpZGZ0cC9jbGllbnQvc291 cmNlL3Rlc3QvbGluZ2VyaW5nLWdldC10ZXN0LmMKK2luZGV4IDUwMWY0MzMxYy4uZWU2OGE4Zjdi IDEwMDY0NAorLS0tIGEvZ3JpZGZ0cC9jbGllbnQvc291cmNlL3Rlc3QvbGluZ2VyaW5nLWdldC10 ZXN0LmMKKysrKyBiL2dyaWRmdHAvY2xpZW50L3NvdXJjZS90ZXN0L2xpbmdlcmluZy1nZXQtdGVz dC5jCitAQCAtMTgsNyArMTgsNyBAQAorICAqIHNpbXBsZSBhdXRoZW50aWNhdGVkIGdldCB3aGlj aCBpcyBub3QgY29tcGxldGVkIGJlZm9yZQorICAqIGRlYWN0aXZhdGlvbi4KKyAgKgorLSAqIG1h a2VzIHN1cmUgdGhhdCB0aGUgZnRwIGNsaWVudCBhbmQgY29udHJvbCBsaWJyYXJpZXMgd2lsbCAK KysgKiBtYWtlcyBzdXJlIHRoYXQgdGhlIGZ0cCBjbGllbnQgYW5kIGNvbnRyb2wgbGlicmFyaWVz IHdpbGwKKyAgKiBjb3JyZWN0bHkgZGVhbCB3aXRoIGEgaGFuZGxlIGluIGEgdW5maW5pc2hlZCBz dGF0ZSBiZWZvcmUKKyAgKiBkZWFjdGl2YXRpb24uCisgICovCitAQCAtMzMsOSArMzMsOSBAQCBz dGF0aWMgaW50IGRvbmUgPSAwOworIHN0YXRpYworIHZvaWQKKyBkb25lX2NiKAorLQl2b2lkICoJ CQkJCXVzZXJfYXJnLAorLQlnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVfdCAqCQloYW5kbGUsCist CWdsb2J1c19vYmplY3RfdCAqCQkJZXJyKQorKyAgICAgICAgdm9pZCAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVzZXJfYXJnLAorKyAgICAgICAgZ2xvYnVzX2Z0cF9jbGllbnRf aGFuZGxlX3QgKiAgICAgICAgICAgIGhhbmRsZSwKKysgICAgICAgIGdsb2J1c19vYmplY3RfdCAq ICAgICAgICAgICAgICAgICAgICAgICBlcnIpCisgeworICAgICBjaGFyICogdG1wc3RyOworIAor QEAgLTQ3LDE4ICs0NywxOCBAQCBkb25lX2NiKAorICAgICBkb25lID0gR0xPQlVTX1RSVUU7Cisg ICAgIGdsb2J1c19jb25kX3NpZ25hbCgmY29uZCk7CisgICAgIGdsb2J1c19tdXRleF91bmxvY2so JmxvY2spOworLSAgICAgICAKKysKKyB9CisgCisgaW50IG1haW4oaW50IGFyZ2MsCistCSBjaGFy ICphcmd2W10pCisrICAgICAgICAgY2hhciAqYXJndltdKQorIHsKKy0gICAgZ2xvYnVzX2Z0cF9j bGllbnRfaGFuZGxlX3QJCQloYW5kbGU7CistICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlv bmF0dHJfdAkJYXR0cjsKKy0gICAgZ2xvYnVzX3Jlc3VsdF90CQkJCXJlc3VsdDsKKy0gICAgY2hh ciAqCQkJCQlzcmM7CistICAgIGNoYXIgKgkJCQkJZHN0OworLSAgICBnbG9idXNfZnRwX2NsaWVu dF9oYW5kbGVhdHRyX3QJCWhhbmRsZV9hdHRyOworKyAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5k bGVfdCAgICAgICAgICAgICAgICAgIGhhbmRsZTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3Bl cmF0aW9uYXR0cl90ICAgICAgICAgICBhdHRyOworKyAgICBnbG9idXNfcmVzdWx0X3QgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDsKKysgICAgY2hhciAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzcmM7CisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZHN0OworKyAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVh dHRyX3QgICAgICAgICAgICAgIGhhbmRsZV9hdHRyOworIAorICAgICBMVERMX1NFVF9QUkVMT0FE RURfU1lNQk9MUygpOworICAgICBnbG9idXNfbW9kdWxlX2FjdGl2YXRlKEdMT0JVU19GVFBfQ0xJ RU5UX01PRFVMRSk7CitAQCAtNjYsMTIgKzY2LDEyIEBAIGludCBtYWluKGludCBhcmdjLAorICAg ICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX2luaXQoJmhhbmRsZV9hdHRyKTsKKyAgICAg Z2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl9pbml0KCZhdHRyKTsKKyAKKy0gICAgdGVz dF9wYXJzZV9hcmdzKGFyZ2MsIAorLQkJICAgIGFyZ3YsCistCQkgICAgJmhhbmRsZV9hdHRyLAor LQkJICAgICZhdHRyLAorLQkJICAgICZzcmMsCistCQkgICAgJmRzdCk7CisrICAgIHRlc3RfcGFy c2VfYXJncyhhcmdjLAorKyAgICAgICAgICAgICAgICAgICAgYXJndiwKKysgICAgICAgICAgICAg ICAgICAgICZoYW5kbGVfYXR0ciwKKysgICAgICAgICAgICAgICAgICAgICZhdHRyLAorKyAgICAg ICAgICAgICAgICAgICAgJnNyYywKKysgICAgICAgICAgICAgICAgICAgICZkc3QpOworIAorICAg ICBnbG9idXNfbXV0ZXhfaW5pdCgmbG9jaywgR0xPQlVTX05VTEwpOworICAgICBnbG9idXNfY29u ZF9pbml0KCZjb25kLCBHTE9CVVNfTlVMTCk7CitAQCAtODAsMTEgKzgwLDExIEBAIGludCBtYWlu KGludCBhcmdjLAorIAorICAgICBkb25lID0gR0xPQlVTX0ZBTFNFOworICAgICByZXN1bHQgPSBn bG9idXNfZnRwX2NsaWVudF9nZXQoJmhhbmRsZSwKKy0JCQkJICAgc3JjLAorLQkJCQkgICAmYXR0 ciwKKy0JCQkJICAgR0xPQlVTX05VTEwsCistCQkJCSAgIGRvbmVfY2IsCistCQkJCSAgIDApOwor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmF0dHIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHTE9CVVNfTlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRvbmVfY2IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAg Z2xvYnVzX21vZHVsZV9kZWFjdGl2YXRlX2FsbCgpOworIAorICAgICByZXR1cm4gZG9uZTsKK2Rp ZmYgLS1naXQgYS9ncmlkZnRwL2NsaWVudC9zb3VyY2UvdGVzdC9tdWx0aXBsZS1ibG9jay1nZXQt dGVzdC5jIGIvZ3JpZGZ0cC9jbGllbnQvc291cmNlL3Rlc3QvbXVsdGlwbGUtYmxvY2stZ2V0LXRl c3QuYworaW5kZXggODcxNzJiYWVhLi41MDk5ODM5ZWQgMTAwNjQ0CistLS0gYS9ncmlkZnRwL2Ns aWVudC9zb3VyY2UvdGVzdC9tdWx0aXBsZS1ibG9jay1nZXQtdGVzdC5jCisrKysgYi9ncmlkZnRw L2NsaWVudC9zb3VyY2UvdGVzdC9tdWx0aXBsZS1ibG9jay1nZXQtdGVzdC5jCitAQCAtMzMsNDUg KzMzLDQ1IEBAIHN0YXRpYyBnbG9idXNfYm9vbF90IGVycm9yID0gR0xPQlVTX0ZBTFNFOworIHN0 YXRpYworIHZvaWQKKyBkb25lX2NiKAorLQl2b2lkICoJCQkJCXVzZXJfYXJnLAorLQlnbG9idXNf ZnRwX2NsaWVudF9oYW5kbGVfdCAqCQloYW5kbGUsCistCWdsb2J1c19vYmplY3RfdCAqCQkJZXJy KQorKyAgICAgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJf YXJnLAorKyAgICAgICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKiAgICAgICAgICAgIGhh bmRsZSwKKysgICAgICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAgICAgICAgICAgICBl cnIpCisgeworICAgICBjaGFyICogdG1wc3RyOworIAorICAgICBpZihlcnIpIHRtcHN0ciA9ICIg YW4iOworICAgICBlbHNlICAgIHRtcHN0ciA9ICJvdXQiOworIAorLSAgICBpZihlcnIpIHsgcHJp bnRmKCJkb25lIHdpdGglcyBlcnJvclxuIiwgdG1wc3RyKTsgCisrICAgIGlmKGVycikgeyBwcmlu dGYoImRvbmUgd2l0aCVzIGVycm9yXG4iLCB0bXBzdHIpOworICAgICAgICAgICAgICAgZXJyb3Ig PSBHTE9CVVNfVFJVRTsgfQorIAorICAgICBnbG9idXNfbXV0ZXhfbG9jaygmbG9jayk7CisgICAg IGRvbmUgPSBHTE9CVVNfVFJVRTsKKyAgICAgZ2xvYnVzX2NvbmRfc2lnbmFsKCZjb25kKTsKKyAg ICAgZ2xvYnVzX211dGV4X3VubG9jaygmbG9jayk7CistICAgICAgIAorKworIH0KKyAKKyBzdGF0 aWMKKyB2b2lkCisgZGF0YV9jYigKKy0gICAgdm9pZCAqCQkJCQl1c2VyX2FyZywKKy0gICAgZ2xv YnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKgkJaGFuZGxlLAorLSAgICBnbG9idXNfb2JqZWN0X3Qg KgkJCQllcnIsCistICAgIGdsb2J1c19ieXRlX3QgKgkJCQlidWZmZXIsCistICAgIGdsb2J1c19z aXplX3QJCQkJbGVuZ3RoLAorLSAgICBnbG9idXNfb2ZmX3QJCQkJb2Zmc2V0LAorLSAgICBnbG9i dXNfYm9vbF90CQkJCWVvZikKKysgICAgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1c2VyX2FyZywKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QgKiAg ICAgICAgICAgICAgICBoYW5kbGUsCisrICAgIGdsb2J1c19vYmplY3RfdCAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgZXJyLAorKyAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJ1ZmZlciwKKysgICAgZ2xvYnVzX3NpemVfdCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsZW5ndGgsCisrICAgIGdsb2J1c19vZmZfdCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgb2Zmc2V0LAorKyAgICBnbG9idXNfYm9vbF90ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVvZikKKyB7CistICAgIGdsb2J1c19yZXN1bHRfdAkJCQlyZXN1bHQ7 CisrICAgIGdsb2J1c19yZXN1bHRfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0 OworICAgICBmd3JpdGUoYnVmZmVyLCAxLCBsZW5ndGgsIHN0ZG91dCk7CisgICAgIGlmKCFlb2Yp CisgICAgIHsKKy0JcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jbGllbnRfcmVnaXN0ZXJfcmVhZChoYW5k bGUsCistCQkJCQlidWZmZXIsCistCQkJCQlCVUZTSVpFLAorLQkJCQkJZGF0YV9jYiwKKy0JCQkJ CTApOworKyAgICAgICAgcmVzdWx0ID0gZ2xvYnVzX2Z0cF9jbGllbnRfcmVnaXN0ZXJfcmVhZCho YW5kbGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlVGU0laRSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9jYiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgIH0KKyAgICAgZWxzZQorICAg ICB7CitAQCAtODEsMTQgKzgxLDE0IEBAIGRhdGFfY2IoCisgCisgaW50IG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQorIHsKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlX3QJCQloYW5k bGU7CistICAgIGdsb2J1c19mdHBfY2xpZW50X29wZXJhdGlvbmF0dHJfdAkJYXR0cjsKKy0gICAg Z2xvYnVzX2J5dGVfdCAqCQkJCWJ1ZmZlcjsKKy0gICAgZ2xvYnVzX3Jlc3VsdF90CQkJCXJlc3Vs dDsKKy0gICAgaW50CQkJCQkJaTsKKy0gICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl90 CQloYW5kbGVfYXR0cjsKKy0gICAgY2hhciAqCQkJCQlzcmM7CistICAgIGNoYXIgKgkJCQkJZHN0 OworKyAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVfdCAgICAgICAgICAgICAgICAgIGhhbmRs ZTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICAgICAgICAgICBhdHRy OworKyAgICBnbG9idXNfYnl0ZV90ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZl cjsKKysgICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1 bHQ7CisrICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaTsK KysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfaGFuZGxlYXR0cl90ICAgICAgICAgICAgICBoYW5kbGVf YXR0cjsKKysgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz cmM7CisrICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0 OworIAorICAgICBMVERMX1NFVF9QUkVMT0FERURfU1lNQk9MUygpOworICAgICBnbG9idXNfbW9k dWxlX2FjdGl2YXRlKEdMT0JVU19GVFBfQ0xJRU5UX01PRFVMRSk7CitAQCAtOTksNDMgKzk5LDQz IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgZ2xvYnVzX2NvbmRfaW5p dCgmY29uZCwgR0xPQlVTX05VTEwpOworIAorICAgICB0ZXN0X3BhcnNlX2FyZ3MoYXJnYywKKy0J CSAgICBhcmd2LAorLQkJICAgICZoYW5kbGVfYXR0ciwKKy0JCSAgICAmYXR0ciwKKy0JCSAgICAm c3JjLAorLQkJICAgICZkc3QpOworKyAgICAgICAgICAgICAgICAgICAgYXJndiwKKysgICAgICAg ICAgICAgICAgICAgICZoYW5kbGVfYXR0ciwKKysgICAgICAgICAgICAgICAgICAgICZhdHRyLAor KyAgICAgICAgICAgICAgICAgICAgJnNyYywKKysgICAgICAgICAgICAgICAgICAgICZkc3QpOwor IAorICAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVfaW5pdCgmaGFuZGxlLCAgJmhhbmRsZV9h dHRyKTsKKyAKKyAgICAgZG9uZSA9IEdMT0JVU19GQUxTRTsKKyAgICAgcmVzdWx0ID0gZ2xvYnVz X2Z0cF9jbGllbnRfZ2V0KCZoYW5kbGUsCistCQkJCSAgIHNyYywKKy0JCQkJICAgJmF0dHIsCist CQkJCSAgIEdMT0JVU19OVUxMLAorLQkJCQkgICBkb25lX2NiLAorLQkJCQkgICAwKTsKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYywKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZhdHRyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR0xPQlVTX05VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb25l X2NiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgIGlmKHJl c3VsdCAhPSBHTE9CVVNfU1VDQ0VTUykKKyAgICAgeworLQllcnJvciA9IEdMT0JVU19UUlVFOwor LQlkb25lID0gR0xPQlVTX1RSVUU7CisrICAgICAgICBlcnJvciA9IEdMT0JVU19UUlVFOworKyAg ICAgICAgZG9uZSA9IEdMT0JVU19UUlVFOworICAgICB9CisgICAgIGVsc2UKKyAgICAgeworLQlm b3IoaSA9IDA7IGkgPCA1OyBpKyspCistCXsKKy0JICAgIGJ1ZmZlciA9IGdsb2J1c19saWJjX21h bGxvYyhCVUZTSVpFKTsKKy0JICAgIGdsb2J1c19mdHBfY2xpZW50X3JlZ2lzdGVyX3JlYWQoCist CQkmaGFuZGxlLAorLQkJYnVmZmVyLAorLQkJQlVGU0laRSwKKy0JCWRhdGFfY2IsCistCQkwKTsK Ky0JfQorKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgNTsgaSsrKQorKyAgICAgICAgeworKyAgICAg ICAgICAgIGJ1ZmZlciA9IGdsb2J1c19saWJjX21hbGxvYyhCVUZTSVpFKTsKKysgICAgICAgICAg ICBnbG9idXNfZnRwX2NsaWVudF9yZWdpc3Rlcl9yZWFkKAorKyAgICAgICAgICAgICAgICAmaGFu ZGxlLAorKyAgICAgICAgICAgICAgICBidWZmZXIsCisrICAgICAgICAgICAgICAgIEJVRlNJWkUs CisrICAgICAgICAgICAgICAgIGRhdGFfY2IsCisrICAgICAgICAgICAgICAgIDApOworKyAgICAg ICAgfQorICAgICB9CisgICAgIGdsb2J1c19tdXRleF9sb2NrKCZsb2NrKTsKKyAgICAgd2hpbGUo IWRvbmUpCisgICAgIHsKKy0JZ2xvYnVzX2NvbmRfd2FpdCgmY29uZCwgJmxvY2spOworKyAgICAg ICAgZ2xvYnVzX2NvbmRfd2FpdCgmY29uZCwgJmxvY2spOworICAgICB9CisgICAgIGdsb2J1c19t dXRleF91bmxvY2soJmxvY2spOworIAorQEAgLTE0NCw3ICsxNDQsNyBAQCBpbnQgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCisgCisgICAgIGlmKHRlc3RfYWJvcnRfY291bnQgJiYgZXJyb3Ip CisgICAgIHsKKy0JcmV0dXJuIDA7CisrICAgICAgICByZXR1cm4gMDsKKyAgICAgfQorICAgICBy ZXR1cm4gZXJyb3I7CisgfQorLS0gCisyLjU0LjAKKwoKZGlmZiAtLWdpdCBhLzAwMDItRml4LWNv bXBpbGVyLWFuZC1kb3h5Z2VuLXdhcm5pbmdzLnBhdGNoIGIvMDAwMi1GaXgtY29tcGlsZXItYW5k LWRveHlnZW4td2FybmluZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNjE4OGI1NwotLS0gL2Rldi9udWxsCisrKyBiLzAwMDItRml4LWNvbXBpbGVyLWFuZC1kb3h5 Z2VuLXdhcm5pbmdzLnBhdGNoCkBAIC0wLDAgKzEsMTE1IEBACitGcm9tIDRlZTA4ZDEzZTI5NjMz MDllMjA2M2RjNDVkZWRkMDY3MzM3ZDNiNzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9t OiBNYXR0aWFzIEVsbGVydCA8bWF0dGlhcy5lbGxlcnRAcGh5c2ljcy51dS5zZT4KK0RhdGU6IFdl ZCwgMjAgTWF5IDIwMjYgMDA6MTU6MzcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIEZpeCBj b21waWxlciBhbmQgZG94eWdlbiB3YXJuaW5ncworCistLS0KKyBncmlkZnRwL2NsaWVudC9zb3Vy Y2UvZ2xvYnVzX2Z0cF9jbGllbnQuaCAgICAgICAgICAgfCAgNiArKystLS0KKyBncmlkZnRwL2Ns aWVudC9zb3VyY2UvZ2xvYnVzX2Z0cF9jbGllbnRfc3RhdGUuYyAgICAgfCAgMyArLS0KKyBncmlk ZnRwL2NsaWVudC9zb3VyY2UvdGVzdC9saW5nZXJpbmctZ2V0LXRlc3QuYyAgICAgfCAxMyArKysr KystLS0tLS0tCisgLi4uL2NsaWVudC9zb3VyY2UvdGVzdC9tdWx0aXBsZS1ibG9jay1nZXQtdGVz dC5jICAgIHwgIDMgKy0tCisgNCBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxNCBk ZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dyaWRmdHAvY2xpZW50L3NvdXJjZS9nbG9idXNf ZnRwX2NsaWVudC5oIGIvZ3JpZGZ0cC9jbGllbnQvc291cmNlL2dsb2J1c19mdHBfY2xpZW50LmgK K2luZGV4IDNiZWY1NDJhMi4uODNjZDczYWYxIDEwMDY0NAorLS0tIGEvZ3JpZGZ0cC9jbGllbnQv c291cmNlL2dsb2J1c19mdHBfY2xpZW50LmgKKysrKyBiL2dyaWRmdHAvY2xpZW50L3NvdXJjZS9n bG9idXNfZnRwX2NsaWVudC5oCitAQCAtMTM3LDcgKzEzNyw3IEBAIHR5cGVkZWYgZW51bQorIAor IC8qKgorICAqIFJlc3RhcnQgbWFya2VyIHR5cGVzLgorLSAqIEBpbmdyb3VwIGdsb2J1c19mdHBf Y2xpZW50X3Jlc3RhcnRfbWFya2VycworKyAqIEBpbmdyb3VwIGdsb2J1c19mdHBfY2xpZW50X3Jl c3RhcnRfbWFya2VyCisgICogQGludGVybmFsCisgICoKKyAgKiBUaGlzIGVudW0gZGVmaW5lcyB0 aGUgZGlmZmVyZW50IHR5cGVzIG9mIHJlc3RhcnQgbWFya2VycyB3aGljaCBtYXkgYmUgdXNlZAor QEAgLTE1Myw3ICsxNTMsNyBAQCBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0X3R5cGVfdDsKKyAK KyAvKioKKyAgKiBAYnJpZWYgU3RyZWFtIG1vZGUgcmVzdGFydCBtYXJrZXIKKy0gKiBAaW5ncm91 cCBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0X21hcmtlcnMKKysgKiBAaW5ncm91cCBnbG9idXNf ZnRwX2NsaWVudF9yZXN0YXJ0X21hcmtlcgorICAqIEBpbnRlcm5hbAorICAqCisgICogVGhpcyBz dHJ1Y3R1cmUgY29udGFpbnMgYWxsIHJlc3RhcnQgbWFya2VyIGluZm9ybWF0aW9uIGZyb20gYQor QEAgLTE4NCw3ICsxODQsNyBAQCBnbG9idXNfZnRwX2NsaWVudF9yZXN0YXJ0X3N0cmVhbV90Owor IAorIC8qKgorICAqIEBicmllZiBFeHRlbmRlZCBibG9jayBtb2RlIHJlc3RhcnQgbWFya2VyCist ICogQGluZ3JvdXAgZ2xvYnVzX2Z0cF9jbGllbnRfcmVzdGFydF9tYXJrZXJzCisrICogQGluZ3Jv dXAgZ2xvYnVzX2Z0cF9jbGllbnRfcmVzdGFydF9tYXJrZXIKKyAgKiBAaW50ZXJuYWwKKyAgKgor ICAqIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGFsbCByZXN0YXJ0IG1hcmtlciBpbmZvcm1hdGlv biBmcm9tIGFuCitkaWZmIC0tZ2l0IGEvZ3JpZGZ0cC9jbGllbnQvc291cmNlL2dsb2J1c19mdHBf Y2xpZW50X3N0YXRlLmMgYi9ncmlkZnRwL2NsaWVudC9zb3VyY2UvZ2xvYnVzX2Z0cF9jbGllbnRf c3RhdGUuYworaW5kZXggY2Y2MmRjZTBjLi5hZTg1NmFjMGEgMTAwNjQ0CistLS0gYS9ncmlkZnRw L2NsaWVudC9zb3VyY2UvZ2xvYnVzX2Z0cF9jbGllbnRfc3RhdGUuYworKysrIGIvZ3JpZGZ0cC9j bGllbnQvc291cmNlL2dsb2J1c19mdHBfY2xpZW50X3N0YXRlLmMKK0BAIC02NDI3LDcgKzY0Mjcs NiBAQCBnbG9idXNfbF9mdHBfY2xpZW50X3BhcnNlX2Nrc20oCisgICAgIGdsb2J1c19mdHBfY29u dHJvbF9yZXNwb25zZV90ICogICAgICAgICAgICAgcmVzcG9uc2UpCisgeworICAgICBjaGFyICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHA7CistICAgIGludCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmM7CisgICAgIEdsb2J1c0Z1bmNOYW1l KGdsb2J1c19sX2Z0cF9jbGllbnRfcGFyc2VfY2tzbSk7CisgCisgICAgIGlmKHJlc3BvbnNlLT5j b2RlICE9IDIxMykKK0BAIC02NDQwLDcgKzY0MzksNyBAQCBnbG9idXNfbF9mdHBfY2xpZW50X3Bh cnNlX2Nrc20oCisgICAgIC8qIHNraXAgMjEzIDxTUD4gKi8KKyAgICAgcCArPSA0OworIAorLSAg ICByYz1zc2NhbmYocCwgIiVzIiwgY2xpZW50X2hhbmRsZS0+Y2hlY2tzdW0pOworKyAgICBzc2Nh bmYocCwgIiVzIiwgY2xpZW50X2hhbmRsZS0+Y2hlY2tzdW0pOworIAorIH0KKyAKK2RpZmYgLS1n aXQgYS9ncmlkZnRwL2NsaWVudC9zb3VyY2UvdGVzdC9saW5nZXJpbmctZ2V0LXRlc3QuYyBiL2dy aWRmdHAvY2xpZW50L3NvdXJjZS90ZXN0L2xpbmdlcmluZy1nZXQtdGVzdC5jCitpbmRleCBlZTY4 YThmN2IuLjg0ZWEyMTEyMSAxMDA2NDQKKy0tLSBhL2dyaWRmdHAvY2xpZW50L3NvdXJjZS90ZXN0 L2xpbmdlcmluZy1nZXQtdGVzdC5jCisrKysgYi9ncmlkZnRwL2NsaWVudC9zb3VyY2UvdGVzdC9s aW5nZXJpbmctZ2V0LXRlc3QuYworQEAgLTU1LDcgKzU1LDYgQEAgaW50IG1haW4oaW50IGFyZ2Ms CisgeworICAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVfdCAgICAgICAgICAgICAgICAgIGhh bmRsZTsKKyAgICAgZ2xvYnVzX2Z0cF9jbGllbnRfb3BlcmF0aW9uYXR0cl90ICAgICAgICAgICBh dHRyOworLSAgICBnbG9idXNfcmVzdWx0X3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl c3VsdDsKKyAgICAgY2hhciAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz cmM7CisgICAgIGNoYXIgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0 OworICAgICBnbG9idXNfZnRwX2NsaWVudF9oYW5kbGVhdHRyX3QgICAgICAgICAgICAgIGhhbmRs ZV9hdHRyOworQEAgLTc5LDEyICs3OCwxMiBAQCBpbnQgbWFpbihpbnQgYXJnYywKKyAgICAgZ2xv YnVzX2Z0cF9jbGllbnRfaGFuZGxlX2luaXQoJmhhbmRsZSwgICZoYW5kbGVfYXR0cik7CisgCisg ICAgIGRvbmUgPSBHTE9CVVNfRkFMU0U7CistICAgIHJlc3VsdCA9IGdsb2J1c19mdHBfY2xpZW50 X2dldCgmaGFuZGxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmF0dHIsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHTE9CVVNfTlVMTCwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRvbmVfY2IsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAwKTsKKysgICAgZ2xvYnVzX2Z0cF9jbGllbnRfZ2V0KCZoYW5kbGUsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICBzcmMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAmYXR0ciwK KysgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JVU19OVUxMLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgZG9uZV9jYiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAg ICBnbG9idXNfbW9kdWxlX2RlYWN0aXZhdGVfYWxsKCk7CisgCisgICAgIHJldHVybiBkb25lOwor ZGlmZiAtLWdpdCBhL2dyaWRmdHAvY2xpZW50L3NvdXJjZS90ZXN0L211bHRpcGxlLWJsb2NrLWdl dC10ZXN0LmMgYi9ncmlkZnRwL2NsaWVudC9zb3VyY2UvdGVzdC9tdWx0aXBsZS1ibG9jay1nZXQt dGVzdC5jCitpbmRleCA1MDk5ODM5ZWQuLjM0NzYxYTRjMyAxMDA2NDQKKy0tLSBhL2dyaWRmdHAv Y2xpZW50L3NvdXJjZS90ZXN0L211bHRpcGxlLWJsb2NrLWdldC10ZXN0LmMKKysrKyBiL2dyaWRm dHAvY2xpZW50L3NvdXJjZS90ZXN0L211bHRpcGxlLWJsb2NrLWdldC10ZXN0LmMKK0BAIC02Mywx MSArNjMsMTAgQEAgZGF0YV9jYigKKyAgICAgZ2xvYnVzX29mZl90ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvZmZzZXQsCisgICAgIGdsb2J1c19ib29sX3QgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZW9mKQorIHsKKy0gICAgZ2xvYnVzX3Jlc3VsdF90ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXN1bHQ7CisgICAgIGZ3cml0ZShidWZmZXIsIDEsIGxlbmd0aCwg c3Rkb3V0KTsKKyAgICAgaWYoIWVvZikKKyAgICAgeworLSAgICAgICAgcmVzdWx0ID0gZ2xvYnVz X2Z0cF9jbGllbnRfcmVnaXN0ZXJfcmVhZChoYW5kbGUsCisrICAgICAgICBnbG9idXNfZnRwX2Ns aWVudF9yZWdpc3Rlcl9yZWFkKGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCVUZTSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhX2NiLAorLS0gCisyLjU0LjAKKwoKZGlmZiAtLWdpdCBhL2dsb2J1cy1mdHAtY2xpZW50LnNw ZWMgYi9nbG9idXMtZnRwLWNsaWVudC5zcGVjCmluZGV4IGQxYmI2NGIuLjQzNmU3OWMgMTAwNjQ0 Ci0tLSBhL2dsb2J1cy1mdHAtY2xpZW50LnNwZWMKKysrIGIvZ2xvYnVzLWZ0cC1jbGllbnQuc3Bl YwpAQCAtMSwxMyArMSwxNSBAQAogTmFtZToJCWdsb2J1cy1mdHAtY2xpZW50CiAlZ2xvYmFsIF9u YW1lICUodHIgLSBfIDw8PCAle25hbWV9KQogVmVyc2lvbjoJOS45Ci1SZWxlYXNlOgkyJXs/ZGlz dH0KK1JlbGVhc2U6CTMlez9kaXN0fQogU3VtbWFyeToJR3JpZCBDb21tdW5pdHkgVG9vbGtpdCAt IEdyaWRGVFAgQ2xpZW50IExpYnJhcnkKIAogTGljZW5zZToJQXBhY2hlLTIuMAogVVJMOgkJaHR0 cHM6Ly9naXRodWIuY29tL2dyaWRjZi9nY3QvCiBTb3VyY2U6CQlodHRwczovL3JlcG8uZ3JpZGNm Lm9yZy9nY3Q2L3NvdXJjZXMvJXtfbmFtZX0tJXt2ZXJzaW9ufS50YXIuZ3oKIFNvdXJjZTg6CVJF QURNRQorUGF0Y2gwOgkJMDAwMS1VbnRhYmlmeS1hbmQtcmVtb3ZlLXRyYWlsaW5nLXdoaXRlLXNw YWNlLnBhdGNoCitQYXRjaDE6CQkwMDAyLUZpeC1jb21waWxlci1hbmQtZG94eWdlbi13YXJuaW5n cy5wYXRjaAogCiBCdWlsZFJlcXVpcmVzOgltYWtlCiBCdWlsZFJlcXVpcmVzOglnY2MKQEAgLTg1 LDYgKzg3LDggQEAgR3JpZEZUUCBDbGllbnQgTGlicmFyeSBEb2N1bWVudGF0aW9uIEZpbGVzCiAK ICVwcmVwCiAlc2V0dXAgLXEgLW4gJXtfbmFtZX0tJXt2ZXJzaW9ufQorJXBhdGNoIC1QMCAtcDQK KyVwYXRjaCAtUDEgLXA0CiAKICVidWlsZAogIyBSZWR1Y2Ugb3ZlcmxpbmtpbmcKQEAgLTEzOSw2 ICsxNDMsOSBAQCBHTE9CVVNfSE9TVE5BTUU9bG9jYWxob3N0ICVtYWtlX2J1aWxkIGNoZWNrCiAl bGljZW5zZSBHTE9CVVNfTElDRU5TRQogCiAlY2hhbmdlbG9nCisqIFN1biBKdW4gMTQgMjAyNiBN YXR0aWFzIEVsbGVydCA8bWF0dGlhcy5lbGxlcnRAcGh5c2ljcy51dS5zZT4gLSA5LjktMworLSBG aXggY29tcGlsZXIgYW5kIGRveHlnZW4gd2FybmluZ3MKKwogKiBGcmkgSmFuIDE2IDIwMjYgRmVk b3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSA5Ljkt MgogLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzQ0 X01hc3NfUmVidWlsZAogCg==