From: Ashish Agarwal Date: May 14 2012 11:19am Subject: bzr push into mysql-trunk branch (ashish.y.agarwal:3887 to 3888) List-Archive: http://lists.mysql.com/commits/143824 Message-Id: <201205141119.q4EBJJw9028647@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM4ODggQXNoaXNoIEFnYXJ3YWwJMjAxMi0wNS0xNAogICAgICBXTDI3Mzk6IEF1ZGl0aW5nIFBh c3N3b3JkIFNlY3VyaXR5CiAgICAgICAgICAgICAgSW1wbGVtZW50aW5nIHJldmlldyBjb21tZW50 cy4KCiAgICByZW1vdmVkOgogICAgICBpbmNsdWRlL215c3FsL3NlcnZpY2VfcGFzc3dvcmRfc3Ry aW5nLmgKICAgICAgbGlic2VydmljZXMvcGFzc3dvcmRfc3RyaW5nX3NlcnZpY2UuYwogICAgYWRk ZWQ6CiAgICAgIGluY2x1ZGUvbXlzcWwvc2VydmljZV9teXNxbF9zdHJpbmcuaAogICAgICBsaWJz ZXJ2aWNlcy9teXNxbF9zdHJpbmdfc2VydmljZS5jCiAgICBtb2RpZmllZDoKICAgICAgaW5jbHVk ZS9teXNxbC9wbHVnaW5fYXVkaXQuaC5wcAogICAgICBpbmNsdWRlL215c3FsL3BsdWdpbl9hdXRo LmgucHAKICAgICAgaW5jbHVkZS9teXNxbC9wbHVnaW5fZnRwYXJzZXIuaC5wcAogICAgICBpbmNs dWRlL215c3FsL3BsdWdpbl92YWxpZGF0ZV9wYXNzd29yZC5oCiAgICAgIGluY2x1ZGUvbXlzcWwv c2VydmljZXMuaAogICAgICBpbmNsdWRlL3NlcnZpY2VfdmVyc2lvbnMuaAogICAgICBsaWJzZXJ2 aWNlcy9DTWFrZUxpc3RzLnR4dAogICAgICBteXNxbC10ZXN0L2luY2x1ZGUvaGF2ZV92YWxpZGF0 ZV9wYXNzd29yZF9wbHVnaW4uaW5jCiAgICAgIG15c3FsLXRlc3QvaW5jbHVkZS9wbHVnaW4uZGVm cwogICAgICBteXNxbC10ZXN0L3IvdmFsaWRhdGVfcGFzc3dvcmRfcGx1Z2luLnJlc3VsdAogICAg ICBteXNxbC10ZXN0L3QvdmFsaWRhdGVfcGFzc3dvcmRfcGx1Z2luLW1hc3Rlci5vcHQKICAgICAg bXlzcWwtdGVzdC90L3ZhbGlkYXRlX3Bhc3N3b3JkX3BsdWdpbi50ZXN0CiAgICAgIHBsdWdpbi9w YXNzd29yZF92YWxpZGF0aW9uL0NNYWtlTGlzdHMudHh0CiAgICAgIHBsdWdpbi9wYXNzd29yZF92 YWxpZGF0aW9uL3ZhbGlkYXRlX3Bhc3N3b3JkLmNjCiAgICAgIHNxbC9pdGVtX2Z1bmMuY2MKICAg ICAgc3FsL2l0ZW1fc3RyZnVuYy5jYwogICAgICBzcWwvc2hhcmUvZXJybXNnLXV0ZjgudHh0CiAg ICAgIHNxbC9zcWxfYWNsLmNjCiAgICAgIHNxbC9zcWxfcGx1Z2luLmgKICAgICAgc3FsL3NxbF9w bHVnaW5fc2VydmljZXMuaAogMzg4NyBBc2hpc2ggQWdhcndhbAkyMDEyLTA1LTEwCiAgICAgIHds MjczOTogQXVkaXRpbmcgUGFzc3dvcmQgU2VjdXJpdHkKICAgICAgICAgICAgICBCdWlsZCBmYWls dXJlIGluIHdpbmRvd3MuCgogICAgbW9kaWZpZWQ6CiAgICAgIHBsdWdpbi9wYXNzd29yZF92YWxp ZGF0aW9uL3ZhbGlkYXRlX3Bhc3N3b3JkLmNjCj09PSBtb2RpZmllZCBmaWxlICdpbmNsdWRlL215 c3FsL3BsdWdpbl9hdWRpdC5oLnBwJwotLS0gYS9pbmNsdWRlL215c3FsL3BsdWdpbl9hdWRpdC5o LnBwCTIwMTItMDUtMTAgMTQ6MTU6MDEgKzAwMDAKKysrIGIvaW5jbHVkZS9teXNxbC9wbHVnaW5f YXVkaXQuaC5wcAkyMDEyLTA1LTE0IDExOjE4OjEzICswMDAwCkBAIC03MywyMSArNzMsMjYgQEAg ZXh0ZXJuIHN0cnVjdCBteV9wbHVnaW5fbG9nX3NlcnZpY2UKIH0gKm15X3BsdWdpbl9sb2dfc2Vy dmljZTsKIGludCBteV9wbHVnaW5fbG9nX21lc3NhZ2UoTVlTUUxfUExVR0lOICpwbHVnaW4sIGVu dW0gcGx1Z2luX2xvZ19sZXZlbCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgY2hhciAqZm9ybWF0LCAuLi4pOwotI2luY2x1ZGUgPG15c3FsL3NlcnZpY2VfcGFzc3dvcmRf c3RyaW5nLmg+Ci1zdHJ1Y3QgcGFzc3dvcmRfY2hhcl9jYXNlCi17Ci0gIGludCBoYXNfbnVtYmVy czsKLSAgaW50IGhhc19sb3dlcjsKLSAgaW50IGhhc191cHBlcjsKLSAgaW50IGhhc19zcGVjaWFs X2NoYXJzOwotfTsKLXR5cGVkZWYgc3RydWN0IHBhc3N3b3JkX2NoYXJfY2FzZSBQQVNTV09SRF9D SEFSX0NBU0U7Ci1leHRlcm4gc3RydWN0IHBhc3N3b3JkX3N0cmluZ19zZXJ2aWNlX3N0IHsKLSAg dm9pZCAoKnBhc3N3b3JkX3N0cmluZ19jYXNlX3R5cGUpKFBBU1NXT1JEX0NIQVJfQ0FTRSAqLCB2 b2lkICopOwotICBjb25zdCBjaGFyICooKnBhc3N3b3JkX3N0cmluZ19jYXNlZG5fdHlwZSkodm9p ZCAqKTsKLX0gKnBhc3N3b3JkX3N0cmluZ19zZXJ2aWNlOwotdm9pZCBwYXNzd29yZF9zdHJpbmdf Y2FzZShQQVNTV09SRF9DSEFSX0NBU0UgKmNoYXJzX2Nhc2UsIHZvaWQgKnBhc3N3b3JkKTsKLWNv bnN0IGNoYXIgKnBhc3N3b3JkX3N0cmluZ19jYXNlZG4odm9pZCAqcGFzc3dvcmQpOworI2luY2x1 ZGUgPG15c3FsL3NlcnZpY2VfbXlzcWxfc3RyaW5nLmg+Cit0eXBlZGVmIHZvaWQgKm15c3FsX3N0 cmluZ19wdHI7CitleHRlcm4gc3RydWN0IG15c3FsX3N0cmluZ19zZXJ2aWNlX3N0IHsKKyAgY29u c3QgY2hhciAqKCpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2JlZ190eXBlKShteXNxbF9zdHJpbmdf cHRyKTsKKyAgY29uc3QgY2hhciAqKCpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2VuZF90eXBlKSht eXNxbF9zdHJpbmdfcHRyKTsKKyAgY29uc3QgY2hhciAqKCpteXNxbF9zdHJpbmdfY2hhcmFjdGVy X2Nhc2Vkbl90eXBlKShteXNxbF9zdHJpbmdfcHRyKTsKKyAgaW50ICgqbXlzcWxfc3RyaW5nX2No YXJhY3Rlcl9jdHlwZV90eXBlKQorICAgICAgKG15c3FsX3N0cmluZ19wdHIsIGludCAqLCBjb25z dCBjaGFyKik7CisgIGludCAoKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXN1cHBlcl90eXBlKShp bnQpOworICBpbnQgKCpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzbG93ZXJfdHlwZSkoaW50KTsK KyAgaW50ICgqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2RpZ2l0X3R5cGUpKGludCk7Cit9ICpt eXNxbF9zdHJpbmdfc2VydmljZTsKK2NvbnN0IGNoYXIgKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJf YmVnKG15c3FsX3N0cmluZ19wdHIgc3RyaW5nX3B0cik7Citjb25zdCBjaGFyICpteXNxbF9zdHJp bmdfY2hhcmFjdGVyX2VuZChteXNxbF9zdHJpbmdfcHRyIHN0cmluZ19wdHIpOworY29uc3QgY2hh ciAqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9jYXNlZG4obXlzcWxfc3RyaW5nX3B0ciBzdHJpbmdf cHRyKTsKK2ludCBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2N0eXBlKG15c3FsX3N0cmluZ19wdHIg c3RyaW5nX3B0ciwgaW50ICpjaGFyX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICogY3VycmVudF9wdHIpOworaW50IG15c3FsX3N0cmluZ19jaGFyYWN0 ZXJfaXN1cHBlcihpbnQgY2hhcl90eXBlKTsKK2ludCBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lz bG93ZXIoaW50IGNoYXJfdHlwZSk7CitpbnQgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2RpZ2l0 KGludCBjaGFyX3R5cGUpOwogc3RydWN0IHN0X215c3FsX3hpZCB7CiAgIGxvbmcgZm9ybWF0SUQ7 CiAgIGxvbmcgZ3RyaWRfbGVuZ3RoOwoKPT09IG1vZGlmaWVkIGZpbGUgJ2luY2x1ZGUvbXlzcWwv cGx1Z2luX2F1dGguaC5wcCcKLS0tIGEvaW5jbHVkZS9teXNxbC9wbHVnaW5fYXV0aC5oLnBwCTIw MTItMDUtMTAgMTQ6MTU6MDEgKzAwMDAKKysrIGIvaW5jbHVkZS9teXNxbC9wbHVnaW5fYXV0aC5o LnBwCTIwMTItMDUtMTQgMTE6MTg6MTMgKzAwMDAKQEAgLTczLDIxICs3MywyNiBAQCBleHRlcm4g c3RydWN0IG15X3BsdWdpbl9sb2dfc2VydmljZQogfSAqbXlfcGx1Z2luX2xvZ19zZXJ2aWNlOwog aW50IG15X3BsdWdpbl9sb2dfbWVzc2FnZShNWVNRTF9QTFVHSU4gKnBsdWdpbiwgZW51bSBwbHVn aW5fbG9nX2xldmVsIGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICpmb3JtYXQsIC4uLik7Ci0jaW5jbHVkZSA8bXlzcWwvc2VydmljZV9wYXNzd29yZF9zdHJpbmcu aD4KLXN0cnVjdCBwYXNzd29yZF9jaGFyX2Nhc2UKLXsKLSAgaW50IGhhc19udW1iZXJzOwotICBp bnQgaGFzX2xvd2VyOwotICBpbnQgaGFzX3VwcGVyOwotICBpbnQgaGFzX3NwZWNpYWxfY2hhcnM7 Ci19OwotdHlwZWRlZiBzdHJ1Y3QgcGFzc3dvcmRfY2hhcl9jYXNlIFBBU1NXT1JEX0NIQVJfQ0FT RTsKLWV4dGVybiBzdHJ1Y3QgcGFzc3dvcmRfc3RyaW5nX3NlcnZpY2Vfc3QgewotICB2b2lkICgq cGFzc3dvcmRfc3RyaW5nX2Nhc2VfdHlwZSkoUEFTU1dPUkRfQ0hBUl9DQVNFICosIHZvaWQgKik7 Ci0gIGNvbnN0IGNoYXIgKigqcGFzc3dvcmRfc3RyaW5nX2Nhc2Vkbl90eXBlKSh2b2lkICopOwot fSAqcGFzc3dvcmRfc3RyaW5nX3NlcnZpY2U7Ci12b2lkIHBhc3N3b3JkX3N0cmluZ19jYXNlKFBB U1NXT1JEX0NIQVJfQ0FTRSAqY2hhcnNfY2FzZSwgdm9pZCAqcGFzc3dvcmQpOwotY29uc3QgY2hh ciAqcGFzc3dvcmRfc3RyaW5nX2Nhc2Vkbih2b2lkICpwYXNzd29yZCk7CisjaW5jbHVkZSA8bXlz cWwvc2VydmljZV9teXNxbF9zdHJpbmcuaD4KK3R5cGVkZWYgdm9pZCAqbXlzcWxfc3RyaW5nX3B0 cjsKK2V4dGVybiBzdHJ1Y3QgbXlzcWxfc3RyaW5nX3NlcnZpY2Vfc3QgeworICBjb25zdCBjaGFy ICooKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfYmVnX3R5cGUpKG15c3FsX3N0cmluZ19wdHIpOwor ICBjb25zdCBjaGFyICooKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfZW5kX3R5cGUpKG15c3FsX3N0 cmluZ19wdHIpOworICBjb25zdCBjaGFyICooKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY2FzZWRu X3R5cGUpKG15c3FsX3N0cmluZ19wdHIpOworICBpbnQgKCpteXNxbF9zdHJpbmdfY2hhcmFjdGVy X2N0eXBlX3R5cGUpCisgICAgICAobXlzcWxfc3RyaW5nX3B0ciwgaW50ICosIGNvbnN0IGNoYXIq KTsKKyAgaW50ICgqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc3VwcGVyX3R5cGUpKGludCk7Cisg IGludCAoKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXNsb3dlcl90eXBlKShpbnQpOworICBpbnQg KCpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzZGlnaXRfdHlwZSkoaW50KTsKK30gKm15c3FsX3N0 cmluZ19zZXJ2aWNlOworY29uc3QgY2hhciAqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9iZWcobXlz cWxfc3RyaW5nX3B0ciBzdHJpbmdfcHRyKTsKK2NvbnN0IGNoYXIgKm15c3FsX3N0cmluZ19jaGFy YWN0ZXJfZW5kKG15c3FsX3N0cmluZ19wdHIgc3RyaW5nX3B0cik7Citjb25zdCBjaGFyICpteXNx bF9zdHJpbmdfY2hhcmFjdGVyX2Nhc2VkbihteXNxbF9zdHJpbmdfcHRyIHN0cmluZ19wdHIpOwor aW50IG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY3R5cGUobXlzcWxfc3RyaW5nX3B0ciBzdHJpbmdf cHRyLCBpbnQgKmNoYXJfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKiBjdXJyZW50X3B0cik7CitpbnQgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc3Vw cGVyKGludCBjaGFyX3R5cGUpOworaW50IG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXNsb3dlcihp bnQgY2hhcl90eXBlKTsKK2ludCBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzZGlnaXQoaW50IGNo YXJfdHlwZSk7CiBzdHJ1Y3Qgc3RfbXlzcWxfeGlkIHsKICAgbG9uZyBmb3JtYXRJRDsKICAgbG9u ZyBndHJpZF9sZW5ndGg7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnaW5jbHVkZS9teXNxbC9wbHVnaW5f ZnRwYXJzZXIuaC5wcCcKLS0tIGEvaW5jbHVkZS9teXNxbC9wbHVnaW5fZnRwYXJzZXIuaC5wcAky MDEyLTA1LTEwIDE0OjE1OjAxICswMDAwCisrKyBiL2luY2x1ZGUvbXlzcWwvcGx1Z2luX2Z0cGFy c2VyLmgucHAJMjAxMi0wNS0xNCAxMToxODoxMyArMDAwMApAQCAtNzMsMjEgKzczLDI2IEBAIGV4 dGVybiBzdHJ1Y3QgbXlfcGx1Z2luX2xvZ19zZXJ2aWNlCiB9ICpteV9wbHVnaW5fbG9nX3NlcnZp Y2U7CiBpbnQgbXlfcGx1Z2luX2xvZ19tZXNzYWdlKE1ZU1FMX1BMVUdJTiAqcGx1Z2luLCBlbnVt IHBsdWdpbl9sb2dfbGV2ZWwgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKmZvcm1hdCwgLi4uKTsKLSNpbmNsdWRlIDxteXNxbC9zZXJ2aWNlX3Bhc3N3b3JkX3N0 cmluZy5oPgotc3RydWN0IHBhc3N3b3JkX2NoYXJfY2FzZQotewotICBpbnQgaGFzX251bWJlcnM7 Ci0gIGludCBoYXNfbG93ZXI7Ci0gIGludCBoYXNfdXBwZXI7Ci0gIGludCBoYXNfc3BlY2lhbF9j aGFyczsKLX07Ci10eXBlZGVmIHN0cnVjdCBwYXNzd29yZF9jaGFyX2Nhc2UgUEFTU1dPUkRfQ0hB Ul9DQVNFOwotZXh0ZXJuIHN0cnVjdCBwYXNzd29yZF9zdHJpbmdfc2VydmljZV9zdCB7Ci0gIHZv aWQgKCpwYXNzd29yZF9zdHJpbmdfY2FzZV90eXBlKShQQVNTV09SRF9DSEFSX0NBU0UgKiwgdm9p ZCAqKTsKLSAgY29uc3QgY2hhciAqKCpwYXNzd29yZF9zdHJpbmdfY2FzZWRuX3R5cGUpKHZvaWQg Kik7Ci19ICpwYXNzd29yZF9zdHJpbmdfc2VydmljZTsKLXZvaWQgcGFzc3dvcmRfc3RyaW5nX2Nh c2UoUEFTU1dPUkRfQ0hBUl9DQVNFICpjaGFyc19jYXNlLCB2b2lkICpwYXNzd29yZCk7Ci1jb25z dCBjaGFyICpwYXNzd29yZF9zdHJpbmdfY2FzZWRuKHZvaWQgKnBhc3N3b3JkKTsKKyNpbmNsdWRl IDxteXNxbC9zZXJ2aWNlX215c3FsX3N0cmluZy5oPgordHlwZWRlZiB2b2lkICpteXNxbF9zdHJp bmdfcHRyOworZXh0ZXJuIHN0cnVjdCBteXNxbF9zdHJpbmdfc2VydmljZV9zdCB7CisgIGNvbnN0 IGNoYXIgKigqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9iZWdfdHlwZSkobXlzcWxfc3RyaW5nX3B0 cik7CisgIGNvbnN0IGNoYXIgKigqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9lbmRfdHlwZSkobXlz cWxfc3RyaW5nX3B0cik7CisgIGNvbnN0IGNoYXIgKigqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9j YXNlZG5fdHlwZSkobXlzcWxfc3RyaW5nX3B0cik7CisgIGludCAoKm15c3FsX3N0cmluZ19jaGFy YWN0ZXJfY3R5cGVfdHlwZSkKKyAgICAgIChteXNxbF9zdHJpbmdfcHRyLCBpbnQgKiwgY29uc3Qg Y2hhciopOworICBpbnQgKCpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzdXBwZXJfdHlwZSkoaW50 KTsKKyAgaW50ICgqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2xvd2VyX3R5cGUpKGludCk7Cisg IGludCAoKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXNkaWdpdF90eXBlKShpbnQpOworfSAqbXlz cWxfc3RyaW5nX3NlcnZpY2U7Citjb25zdCBjaGFyICpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2Jl ZyhteXNxbF9zdHJpbmdfcHRyIHN0cmluZ19wdHIpOworY29uc3QgY2hhciAqbXlzcWxfc3RyaW5n X2NoYXJhY3Rlcl9lbmQobXlzcWxfc3RyaW5nX3B0ciBzdHJpbmdfcHRyKTsKK2NvbnN0IGNoYXIg Km15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY2FzZWRuKG15c3FsX3N0cmluZ19wdHIgc3RyaW5nX3B0 cik7CitpbnQgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9jdHlwZShteXNxbF9zdHJpbmdfcHRyIHN0 cmluZ19wdHIsIGludCAqY2hhcl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqIGN1cnJlbnRfcHRyKTsKK2ludCBteXNxbF9zdHJpbmdfY2hhcmFjdGVy X2lzdXBwZXIoaW50IGNoYXJfdHlwZSk7CitpbnQgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2xv d2VyKGludCBjaGFyX3R5cGUpOworaW50IG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXNkaWdpdChp bnQgY2hhcl90eXBlKTsKIHN0cnVjdCBzdF9teXNxbF94aWQgewogICBsb25nIGZvcm1hdElEOwog ICBsb25nIGd0cmlkX2xlbmd0aDsKCj09PSBtb2RpZmllZCBmaWxlICdpbmNsdWRlL215c3FsL3Bs dWdpbl92YWxpZGF0ZV9wYXNzd29yZC5oJwotLS0gYS9pbmNsdWRlL215c3FsL3BsdWdpbl92YWxp ZGF0ZV9wYXNzd29yZC5oCTIwMTItMDUtMTAgMTA6NTQ6MzcgKzAwMDAKKysrIGIvaW5jbHVkZS9t eXNxbC9wbHVnaW5fdmFsaWRhdGVfcGFzc3dvcmQuaAkyMDEyLTA1LTE0IDExOjE4OjEzICswMDAw CkBAIC0xNSwxNyArMTUsMTUgQEAKIAogI2lmbmRlZiBNWVNRTF9QTFVHSU5fVkFMSURBVEVfUEFT U1dPUkRfSU5DTFVERUQKICNkZWZpbmUgTVlTUUxfUExVR0lOX1ZBTElEQVRFX1BBU1NXT1JEX0lO Q0xVREVECi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgotICBBUEkgZm9yIHZhbGlkYXRlX3Bhc3N3b3JkIHBs dWdpbi4gKE1ZU1FMX1ZBTElEQVRFX1BBU1NXT1JEX1BMVUdJTikKLSovCiAKLSNpbmNsdWRlIDxt eXNxbC9wbHVnaW4uaD4KKy8qIEFQSSBmb3IgdmFsaWRhdGVfcGFzc3dvcmQgcGx1Z2luLiAoTVlT UUxfVkFMSURBVEVfUEFTU1dPUkRfUExVR0lOKSAqLwogCisjaW5jbHVkZSA8bXlzcWwvcGx1Z2lu Lmg+CiAjZGVmaW5lIE1ZU1FMX1ZBTElEQVRFX1BBU1NXT1JEX0lOVEVSRkFDRV9WRVJTSU9OIDB4 MDEwMAogCiB0eXBlZGVmIHZvaWQqIHN0cmluZ19oYW5kbGU7CiAKLS8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisvKiAgCiAgIFRoZSBkZXNjcmlwdG9yIHN0cnVjdHVyZSBmb3IgdGhlIHBsdWdpbiwgdGhhdCBp cyByZWZlcnJlZCBmcm9tCiAgIHN0X215c3FsX3BsdWdpbi4KICovCkBAIC0zMywxMyArMzEsMTMg QEAgdHlwZWRlZiB2b2lkKiBzdHJpbmdfaGFuZGxlOwogc3RydWN0IHN0X215c3FsX3ZhbGlkYXRl X3Bhc3N3b3JkCiB7CiAgIGludCBpbnRlcmZhY2VfdmVyc2lvbjsKLSAgLyoqCisgIC8qICAKICAg ICBUaGlzIGZ1bmN0aW9uIHJldHVucyBUUlVFIGZvciBwYXNzd29yZHMgd2hpY2ggc2F0aXNmeSB0 aGUgcGFzc3dvcmQKICAgICBwb2xpY3kgKGFzIGNob29zZW4gYnkgcGx1Z2luIHZhcmlhYmxlKSBh bmQgRkFMU0UgZm9yIGFsbCBvdGhlcgogICAgIHBhc3N3b3JkCiAgICovCiAgIGludCAoKnZhbGlk YXRlX3Bhc3N3b3JkKShzdHJpbmdfaGFuZGxlIHBhc3N3b3JkLCBzaXplX3QgcGFzc3dvcmRfbGVu Z3RoKTsKLSAgLyoqCisgIC8qICAKICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHBhc3N3 b3JkIHN0cmVuZ3RoICgwLTEwMCkgZGVwZW5kaW5nCiAgICAgdXBvbiB0aGUgcG9saWNpZXMKICAg Ki8KCj09PSBhZGRlZCBmaWxlICdpbmNsdWRlL215c3FsL3NlcnZpY2VfbXlzcWxfc3RyaW5nLmgn Ci0tLSBhL2luY2x1ZGUvbXlzcWwvc2VydmljZV9teXNxbF9zdHJpbmcuaAkxOTcwLTAxLTAxIDAw OjAwOjAwICswMDAwCisrKyBiL2luY2x1ZGUvbXlzcWwvc2VydmljZV9teXNxbF9zdHJpbmcuaAky MDEyLTA1LTE0IDExOjE4OjEzICswMDAwCkBAIC0wLDAgKzEsMTA1IEBACisvKiBDb3B5cmlnaHQg wqkgMjAxMiwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4KKworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisKKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh bmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgIFVTQSAqLworCisv KiBUaGlzIHNlcnZpY2UgcHJvdmlkZXMgZnVuY3Rpb25zIHRvIHBhcnNlIG15c3FsIFN0cmluZyAq LworCisjaWZuZGVmIE1ZU1FMX1NFUlZJQ0VfTVlTUUxfU1RSSU5HX0lOQ0xVREVECisjZGVmaW5l IE1ZU1FMX1NFUlZJQ0VfTVlTUUxfU1RSSU5HX0lOQ0xVREVECisKKyNpZm5kZWYgTVlTUUxfQUJJ X0NIRUNLCisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVz CitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHZvaWQgKm15c3FsX3N0cmluZ19wdHI7 CisKK2V4dGVybiBzdHJ1Y3QgbXlzcWxfc3RyaW5nX3NlcnZpY2Vfc3QgeworICBjb25zdCBjaGFy ICooKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfYmVnX3R5cGUpKG15c3FsX3N0cmluZ19wdHIpOwor ICBjb25zdCBjaGFyICooKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfZW5kX3R5cGUpKG15c3FsX3N0 cmluZ19wdHIpOworICBjb25zdCBjaGFyICooKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY2FzZWRu X3R5cGUpKG15c3FsX3N0cmluZ19wdHIpOworICBpbnQgKCpteXNxbF9zdHJpbmdfY2hhcmFjdGVy X2N0eXBlX3R5cGUpCisgICAgICAobXlzcWxfc3RyaW5nX3B0ciwgaW50ICosIGNvbnN0IGNoYXIq KTsKKyAgaW50ICgqbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc3VwcGVyX3R5cGUpKGludCk7Cisg IGludCAoKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXNsb3dlcl90eXBlKShpbnQpOworICBpbnQg KCpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzZGlnaXRfdHlwZSkoaW50KTsKK30gKm15c3FsX3N0 cmluZ19zZXJ2aWNlOworCisjaWZkZWYgTVlTUUxfRFlOQU1JQ19QTFVHSU4KKworI2RlZmluZSBt eXNxbF9zdHJpbmdfY2hhcmFjdGVyX2JlZyhzdHJpbmdfcHRyKSBcCisgICAgICAgIG15c3FsX3N0 cmluZ19zZXJ2aWNlLT5teXNxbF9zdHJpbmdfY2hhcmFjdGVyX2JlZ190eXBlKHN0cmluZ19wdHIp CisKKyNkZWZpbmUgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9lbmQoc3RyaW5nX3B0cikgXAorICAg ICAgICBteXNxbF9zdHJpbmdfc2VydmljZS0+bXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9lbmRfdHlw ZShzdHJpbmdfcHRyKQorCisjZGVmaW5lIG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY2FzZWRuKHN0 cmluZ19wdHIpIFwKKyAgICAgICAgbXlzcWxfc3RyaW5nX3NlcnZpY2UtPm15c3FsX3N0cmluZ19j aGFyYWN0ZXJfY2FzZWRuX3R5cGUoc3RyaW5nX3B0cikKKworI2RlZmluZSBteXNxbF9zdHJpbmdf Y2hhcmFjdGVyX2N0eXBlKHN0cmluZ19wdHIsIGNoYXJfdHlwZSwgY3VycmVudF9wdHIpIFwKKyAg ICAgICAgbXlzcWxfc3RyaW5nX3NlcnZpY2UtPm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY3R5cGVf dHlwZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nX3B0ciwgY2hhcl90 eXBlLCBjdXJyZW50X3B0cikKKworI2RlZmluZSBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lzdXBw ZXIoY2hhcl90eXBlKSBcCisgICAgICAgIG15c3FsX3N0cmluZ19zZXJ2aWNlLT5teXNxbF9zdHJp bmdfY2hhcmFjdGVyX2lzdXBwZXJfdHlwZShjaGFyX3R5cGUpCisKKyNkZWZpbmUgbXlzcWxfc3Ry aW5nX2NoYXJhY3Rlcl9pc2xvd2VyKGNoYXJfdHlwZSkgXAorICAgICAgICBteXNxbF9zdHJpbmdf c2VydmljZS0+bXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2xvd2VyX3R5cGUoY2hhcl90eXBlKQor CisjZGVmaW5lIG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXNkaWdpdChjaGFyX3R5cGUpIFwKKyAg ICAgICAgbXlzcWxfc3RyaW5nX3NlcnZpY2UtPm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXNkaWdp dF90eXBlKGNoYXJfdHlwZSkKKyNlbHNlCisKKy8qIFRoaXMgc2VydmljZSBmdW5jdGlvbiByZXR1 cm5zIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG15c3FsIFN0cmluZyAqLworY29uc3QgY2hhciAqbXlz cWxfc3RyaW5nX2NoYXJhY3Rlcl9iZWcobXlzcWxfc3RyaW5nX3B0ciBzdHJpbmdfcHRyKTsKKwor LyogVGhpcyBzZXJ2aWNlIGZ1bmN0aW9uIHJldHVybnMgdGhlIGVuZCBvZiB0aGUgbXlzcWwgU3Ry aW5nICovCitjb25zdCBjaGFyICpteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2VuZChteXNxbF9zdHJp bmdfcHRyIHN0cmluZ19wdHIpOworCisvKiBUaGlzIHNlcnZpY2UgZnVuY3Rpb24gY29udmVydHMg bXlzcWwgU3RyaW5nIGludG8gbG93ZXJjYXNlICovCitjb25zdCBjaGFyICpteXNxbF9zdHJpbmdf Y2hhcmFjdGVyX2Nhc2VkbihteXNxbF9zdHJpbmdfcHRyIHN0cmluZ19wdHIpOworCisvKiAgCisg IFRoaXMgc2VydmljZSBmdW5jdGlvbiB0YWtlcyBteXNxbCBzdHJpbmcsIGN1cnJlbnQgc3RyaW5n IHBvc2l0aW9uCisgIGNhbGN1bGF0ZSB0aGUgY3R5cGUgb2YgdGhlIGNoYXJhY3RlciBiYXNlZCBv biBjbGllbnQgY2hhcmFjdGVyIHNldAorICBzdG9yZSBpdCBpbiBjaGFyX3R5cGUgYW5kIHJldHVy biB0aGUgY2hhcmFjdGVyIGxlbmd0aAorKi8KK2ludCBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2N0 eXBlKG15c3FsX3N0cmluZ19wdHIgc3RyaW5nX3B0ciwgaW50ICpjaGFyX3R5cGUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjdXJyZW50X3B0cik7CisKKy8q ICAKKyAgVGhpcyBzZXJ2aWNlIGZ1bmN0aW9uIHJldHVybiAxIGlmIGNoYXJhY3RlciBpcyBhIHVw cGVyY2FzZQorICBjaGFyYWN0ZXIgZWxzZSByZXR1cm4gMCBmb3IgY2xpZW50IGNoYXJhY3RlciBz ZXQuCisqLworaW50IG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXN1cHBlcihpbnQgY2hhcl90eXBl KTsKKy8qICAKKyAgVGhpcyBzZXJ2aWNlIGZ1bmN0aW9uIHJldHVybiAxIGlmIGNoYXJhY3RlciBp cyBhIGxvd2VyY2FzZQorICBjaGFyYWN0ZXIgZWxzZSByZXR1cm4gMCBmb3IgY2xpZW50IGNoYXJh Y3RlciBzZXQuCisqLworaW50IG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXNsb3dlcihpbnQgY2hh cl90eXBlKTsKKy8qICAKKyAgVGhpcyBzZXJ2aWNlIGZ1bmN0aW9uIHJldHVybiAxIGlmIGNoYXJh Y3RlciBpcyBhIGRpZ2l0CisgIGVsc2UgcmV0dXJuIDAgZm9yIGNsaWVudCBjaGFyYWN0ZXIgc2V0 cy4KKyovCitpbnQgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2RpZ2l0KGludCBjaGFyX3R5cGUp OworCisjZW5kaWYKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZgoKPT09 IHJlbW92ZWQgZmlsZSAnaW5jbHVkZS9teXNxbC9zZXJ2aWNlX3Bhc3N3b3JkX3N0cmluZy5oJwot LS0gYS9pbmNsdWRlL215c3FsL3NlcnZpY2VfcGFzc3dvcmRfc3RyaW5nLmgJMjAxMi0wNS0xMCAx NDoxNTowMSArMDAwMAorKysgYi9pbmNsdWRlL215c3FsL3NlcnZpY2VfcGFzc3dvcmRfc3RyaW5n LmgJMTk3MC0wMS0wMSAwMDowMDowMCArMDAwMApAQCAtMSw3NiArMCwwIEBACi0vKiBDb3B5cmln aHQgwqkgMjAxMiwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNl cnZlZC4KLQotICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0gICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0KLSAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0KLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICAgRm91bmRhdGlvbiwgSW5jLiwgNTEg RnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgIFVTQSAqLwot Ci0vKioKLSAgQGZpbGUKLSAgVGhpcyBzZXJ2aWNlIHByb3ZpZGVzIGZ1bmN0aW9ucyB0byBwYXJz ZSBwYXNzd29yZCBTdHJpbmcKLSovCi0KLSNpZm5kZWYgTVlTUUxfU0VSVklDRV9QQVNTV09SRF9T VFJJTkdfSU5DTFVERUQKLSNkZWZpbmUgTVlTUUxfU0VSVklDRV9QQVNTV09SRF9TVFJJTkdfSU5D TFVERUQKLQotI2lmbmRlZiBNWVNRTF9BQklfQ0hFQ0sKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNl bmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLXN0cnVj dCBwYXNzd29yZF9jaGFyX2Nhc2UKLXsKLSAgaW50IGhhc19udW1iZXJzOwotICBpbnQgaGFzX2xv d2VyOwotICBpbnQgaGFzX3VwcGVyOwotICBpbnQgaGFzX3NwZWNpYWxfY2hhcnM7Ci19OwotCi10 eXBlZGVmIHN0cnVjdCBwYXNzd29yZF9jaGFyX2Nhc2UgUEFTU1dPUkRfQ0hBUl9DQVNFOwotCi1l eHRlcm4gc3RydWN0IHBhc3N3b3JkX3N0cmluZ19zZXJ2aWNlX3N0IHsKLSAgdm9pZCAoKnBhc3N3 b3JkX3N0cmluZ19jYXNlX3R5cGUpKFBBU1NXT1JEX0NIQVJfQ0FTRSAqLCB2b2lkICopOwotICBj b25zdCBjaGFyICooKnBhc3N3b3JkX3N0cmluZ19jYXNlZG5fdHlwZSkodm9pZCAqKTsKLX0gKnBh c3N3b3JkX3N0cmluZ19zZXJ2aWNlOwotCi0jaWZkZWYgTVlTUUxfRFlOQU1JQ19QTFVHSU4KLQot I2RlZmluZSBwYXNzd29yZF9zdHJpbmdfY2FzZShjaGFyc19jYXNlLCBwYXNzd29yZCkgXAotICAg ICAgICBwYXNzd29yZF9zdHJpbmdfc2VydmljZS0+cGFzc3dvcmRfc3RyaW5nX2Nhc2VfdHlwZSBc Ci0gICAgICAgIChjaGFyc19jYXNlLCBwYXNzd29yZCkKLSNkZWZpbmUgcGFzc3dvcmRfc3RyaW5n X2Nhc2VkbihwYXNzd29yZCkgXAotICAgICAgICBwYXNzd29yZF9zdHJpbmdfc2VydmljZS0+cGFz c3dvcmRfc3RyaW5nX2Nhc2Vkbl90eXBlKHBhc3N3b3JkKQotI2Vsc2UKLQotLyoqCi0gICBJdCB0 YWtlcyBwYXNzd29yZCBzdHJpbmcgYW5kIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHVwcGVyY2Fz ZSwKLSAgIGxvd2VyY2FzZSwgZGlnaXRzIGFuZCBzcGVjaWFsIGNoYXJhY3Rlci4gc3RvcmVzIHRo ZSB2YWx1ZSBpbgotICAgUEFTU1dPUkRfQ0hBUl9DQVNFLiBTdXBwb3J0IG15c3FsIGNoYXJhY3Rl ciBzZXRzLgotKi8gCi12b2lkIHBhc3N3b3JkX3N0cmluZ19jYXNlKFBBU1NXT1JEX0NIQVJfQ0FT RSAqY2hhcnNfY2FzZSwgdm9pZCAqcGFzc3dvcmQpOwotCi0vKioKLSAgIEl0IGNvbnZlcnRzIHRo ZSB1cHBlcmNhc2UgaW50byBsb3dlcmNhc2UgYmFzZWQgb24gdGhlCi0gICBjaGFyYWN0ZXIgc2V0 Ci0qLwotY29uc3QgY2hhciAqcGFzc3dvcmRfc3RyaW5nX2Nhc2Vkbih2b2lkICpwYXNzd29yZCk7 Ci0KLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKLQoK PT09IG1vZGlmaWVkIGZpbGUgJ2luY2x1ZGUvbXlzcWwvc2VydmljZXMuaCcKLS0tIGEvaW5jbHVk ZS9teXNxbC9zZXJ2aWNlcy5oCTIwMTItMDUtMTAgMTA6NTQ6MzcgKzAwMDAKKysrIGIvaW5jbHVk ZS9teXNxbC9zZXJ2aWNlcy5oCTIwMTItMDUtMTQgMTE6MTg6MTMgKzAwMDAKQEAgLTIzLDcgKzIz LDcgQEAgZXh0ZXJuICJDIiB7CiAjaW5jbHVkZSA8bXlzcWwvc2VydmljZV90aGRfd2FpdC5oPgog I2luY2x1ZGUgPG15c3FsL3NlcnZpY2VfdGhyZWFkX3NjaGVkdWxlci5oPgogI2luY2x1ZGUgPG15 c3FsL3NlcnZpY2VfbXlfcGx1Z2luX2xvZy5oPgotI2luY2x1ZGUgPG15c3FsL3NlcnZpY2VfcGFz c3dvcmRfc3RyaW5nLmg+CisjaW5jbHVkZSA8bXlzcWwvc2VydmljZV9teXNxbF9zdHJpbmcuaD4K IAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnaW5jbHVkZS9zZXJ2 aWNlX3ZlcnNpb25zLmgnCi0tLSBhL2luY2x1ZGUvc2VydmljZV92ZXJzaW9ucy5oCTIwMTItMDUt MTAgMTA6NTQ6MzcgKzAwMDAKKysrIGIvaW5jbHVkZS9zZXJ2aWNlX3ZlcnNpb25zLmgJMjAxMi0w NS0xNCAxMToxODoxMyArMDAwMApAQCAtMjQsNCArMjQsNCBAQAogI2RlZmluZSBWRVJTSU9OX3Ro ZF93YWl0ICAgICAgICAweDAxMDAKICNkZWZpbmUgVkVSU0lPTl9teV90aHJlYWRfc2NoZWR1bGVy IDB4MDEwMAogI2RlZmluZSBWRVJTSU9OX215X3BsdWdpbl9sb2cgMHgwMTAwCi0jZGVmaW5lIFZF UlNJT05fcGFzc3dvcmRfc3RyaW5nICAweDAxMDAKKyNkZWZpbmUgVkVSU0lPTl9teXNxbF9zdHJp bmcgIDB4MDEwMAoKPT09IG1vZGlmaWVkIGZpbGUgJ2xpYnNlcnZpY2VzL0NNYWtlTGlzdHMudHh0 JwotLS0gYS9saWJzZXJ2aWNlcy9DTWFrZUxpc3RzLnR4dAkyMDEyLTA1LTEwIDEwOjU0OjM3ICsw MDAwCisrKyBiL2xpYnNlcnZpY2VzL0NNYWtlTGlzdHMudHh0CTIwMTItMDUtMTQgMTE6MTg6MTMg KzAwMDAKQEAgLTIxLDcgKzIxLDcgQEAgU0VUKE1ZU1FMU0VSVklDRVNfU09VUkNFUwogICB0aGRf d2FpdF9zZXJ2aWNlLmMKICAgbXlfcGx1Z2luX2xvZ19zZXJ2aWNlLmMKICAgbXlfdGhyZWFkX3Nj aGVkdWxlcl9zZXJ2aWNlLmMKLSAgcGFzc3dvcmRfc3RyaW5nX3NlcnZpY2UuYykKKyAgbXlzcWxf c3RyaW5nX3NlcnZpY2UuYykKIAogQUREX0xJQlJBUlkobXlzcWxzZXJ2aWNlcyAke01ZU1FMU0VS VklDRVNfU09VUkNFU30pCiBJTlNUQUxMKFRBUkdFVFMgbXlzcWxzZXJ2aWNlcyBERVNUSU5BVElP TiAke0lOU1RBTExfTElCRElSfSBDT01QT05FTlQgRGV2ZWxvcG1lbnQpCgo9PT0gYWRkZWQgZmls ZSAnbGlic2VydmljZXMvbXlzcWxfc3RyaW5nX3NlcnZpY2UuYycKLS0tIGEvbGlic2VydmljZXMv bXlzcWxfc3RyaW5nX3NlcnZpY2UuYwkxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwCisrKyBiL2xp YnNlcnZpY2VzL215c3FsX3N0cmluZ19zZXJ2aWNlLmMJMjAxMi0wNS0xNCAxMToxODoxMyArMDAw MApAQCAtMCwwICsxLDE4IEBACisvKiAgQ29weXJpZ2h0IMKpIDIwMTIsIE9yYWNsZSBhbmQvb3Ig aXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgCisgICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzCisgICAgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZl cnNpb24gMiBvZiB0aGUKKyAgICBMaWNlbnNlLgorICAgIAorICAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiBTZWUgdGhlCisgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyAgICAKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgICAgRm91bmRhdGlvbiwgSW5jLiwgNTEg RnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBICovCisK KyNpbmNsdWRlIDxzZXJ2aWNlX3ZlcnNpb25zLmg+CitTRVJWSUNFX1ZFUlNJT04gKm15c3FsX3N0 cmluZ19zZXJ2aWNlPSAodm9pZCopVkVSU0lPTl9teXNxbF9zdHJpbmc7Cgo9PT0gcmVtb3ZlZCBm aWxlICdsaWJzZXJ2aWNlcy9wYXNzd29yZF9zdHJpbmdfc2VydmljZS5jJwotLS0gYS9saWJzZXJ2 aWNlcy9wYXNzd29yZF9zdHJpbmdfc2VydmljZS5jCTIwMTItMDUtMTAgMTA6NTQ6MzcgKzAwMDAK KysrIGIvbGlic2VydmljZXMvcGFzc3dvcmRfc3RyaW5nX3NlcnZpY2UuYwkxOTcwLTAxLTAxIDAw OjAwOjAwICswMDAwCkBAIC0xLDE4ICswLDAgQEAKLS8qICBDb3B5cmlnaHQgwqkgMjAxMiwgT3Jh Y2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAgICAKLSAg ICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMKLSAgICBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZQotICAgIExpY2Vuc2UuCi0gICAgCi0gICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotICAgIAotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgICBGb3VuZGF0aW9u LCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMw MSBVU0EgKi8KLQotI2luY2x1ZGUgPHNlcnZpY2VfdmVyc2lvbnMuaD4KLVNFUlZJQ0VfVkVSU0lP TiAqcGFzc3dvcmRfc3RyaW5nX3NlcnZpY2U9ICh2b2lkKilWRVJTSU9OX3Bhc3N3b3JkX3N0cmlu ZzsKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L2luY2x1ZGUvaGF2ZV92YWxpZGF0ZV9w YXNzd29yZF9wbHVnaW4uaW5jJwotLS0gYS9teXNxbC10ZXN0L2luY2x1ZGUvaGF2ZV92YWxpZGF0 ZV9wYXNzd29yZF9wbHVnaW4uaW5jCTIwMTItMDQtMTYgMTI6MjU6MjEgKzAwMDAKKysrIGIvbXlz cWwtdGVzdC9pbmNsdWRlL2hhdmVfdmFsaWRhdGVfcGFzc3dvcmRfcGx1Z2luLmluYwkyMDEyLTA1 LTE0IDExOjE4OjEzICswMDAwCkBAIC0xLDIwICsxLDUgQEAKLSMKLSMgQ2hlY2sgaWYgc2VydmVy IGhhcyBzdXBwb3J0IGZvciBsb2FkaW5nIHBsdWdpbnMKLSMKLWlmIChgU0VMRUNUIEBAaGF2ZV9k eW5hbWljX2xvYWRpbmcgIT0gJ1lFUydgKSB7Ci0gIC0tc2tpcCB2YWxpZGF0ZSBwYXNzd29yZCBy ZXF1aXJlcyBkeW5hbWljIGxvYWRpbmcKLX0KLQotIwotIyBDaGVjayBpZiB0aGUgdmFyaWFibGUg VkFMSURBVEVfUEFTU1dPUkQgaXMgc2V0Ci0jCi1pZiAoISRWQUxJREFURV9QQVNTV09SRCkgewot ICAtLXNraXAgdmFsaWRhdGUgcGFzc3dvcmQgcmVxdWlyZXMgdGhlIGVudmlyb25tZW50IHZhcmlh YmxlIFwkVkFMSURBVEVfUEFTU1dPUkQgdG8gYmUgc2V0IChub3JtYWxseSBkb25lIGJ5IG10cikK LX0KLQotIwotIyBDaGVjayBpZiAtLXBsdWdpbi1kaXIgd2FzIHNldHVwIGZvciB2YWxpZGF0ZSBw YXNzd29yZAotIwotaWYgKGBTRUxFQ1QgQ09OQ0FUKCctLXBsdWdpbi1kaXI9JywgUkVQTEFDRShA QHBsdWdpbl9kaXIsICdcXFxcJywgJy8nKSkgIT0gJyRWQUxJREFURV9QQVNTV09SRF9PUFQvJ2Ap IHsKLSAgLS1za2lwIHZhbGlkYXRlIHBhc3N3b3JkIHJlcXVpcmVzIHRoYXQgLS1wbHVnaW4tZGly IGlzIHNldCB0byB0aGUgdmFsaWRhdGUgcGFzc3dvcmQgZGlyIChlaXRoZXIgdGhlIC5vcHQgZmls ZSBkb2VzIG5vdCBjb250YWluIFwkVkFMSURBVEVfUEFTU1dPUkRfT1BUIG9yIGFub3RoZXIgcGx1 Z2luIGlzIGluIHVzZSkKLX0KK2Rpc2FibGVfcXVlcnlfbG9nOworLS1yZXF1aXJlIHIvdHJ1ZS5y ZXF1aXJlCitzZWxlY3QgKFBMVUdJTl9MSUJSQVJZIExJS0UgJ3ZhbGlkYXRlX3Bhc3N3b3JkJScp IGFzIGBUUlVFYCBGUk9NIElORk9STUFUSU9OX1NDSEVNQS5QTFVHSU5TCisgIFdIRVJFIFBMVUdJ Tl9OQU1FPSd2YWxpZGF0ZV9wYXNzd29yZCc7CitlbmFibGVfcXVlcnlfbG9nOwoKPT09IG1vZGlm aWVkIGZpbGUgJ215c3FsLXRlc3QvaW5jbHVkZS9wbHVnaW4uZGVmcycKLS0tIGEvbXlzcWwtdGVz dC9pbmNsdWRlL3BsdWdpbi5kZWZzCTIwMTItMDQtMTYgMTI6MjU6MjEgKzAwMDAKKysrIGIvbXlz cWwtdGVzdC9pbmNsdWRlL3BsdWdpbi5kZWZzCTIwMTItMDUtMTQgMTE6MTg6MTMgKzAwMDAKQEAg LTQ0LDQgKzQ0LDQgQEAgYWR0X251bGwgICAgICAgICAgIHBsdWdpbi9hdWRpdF9udWxsICBBVQog bGliZGFlbW9uX2V4YW1wbGUgIHBsdWdpbi9kYWVtb25fZXhhbXBsZSBEQUVNT05FWEFNUExFCiBs aWJtZW1jYWNoZWQgICAgICAgcGx1Z2luL2lubm9kYl9tZW1jYWNoZWQvZGFlbW9uX21lbWNhY2hl ZCBEQUVNT05fTUVNQ0FDSEVEIGRhZW1vbl9tZW1jYWNoZWQKIGlubm9kYl9lbmdpbmUgICAgICBw bHVnaW4vaW5ub2RiX21lbWNhY2hlZC9pbm5vZGJfbWVtY2FjaGUgSU5OT0RCX0VOR0lORQotdmFs aWRhdGVfcGFzc3dvcmQgIHBsdWdpbi9wYXNzd29yZF92YWxpZGF0aW9uIFZBTElEQVRFX1BBU1NX T1JECit2YWxpZGF0ZV9wYXNzd29yZCAgcGx1Z2luL3Bhc3N3b3JkX3ZhbGlkYXRpb24gVkFMSURB VEVfUEFTU1dPUkQgdmFsaWRhdGVfcGFzc3dvcmQKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10 ZXN0L3IvdmFsaWRhdGVfcGFzc3dvcmRfcGx1Z2luLnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9y L3ZhbGlkYXRlX3Bhc3N3b3JkX3BsdWdpbi5yZXN1bHQJMjAxMi0wNS0xMCAxNDoxNTowMSArMDAw MAorKysgYi9teXNxbC10ZXN0L3IvdmFsaWRhdGVfcGFzc3dvcmRfcGx1Z2luLnJlc3VsdAkyMDEy LTA1LTE0IDExOjE4OjEzICswMDAwCkBAIC0xLDM2ICsxLDM1IEBACi1DUkVBVEUgVVNFUiAnYmFz ZV91c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICcnOwotR1JBTlQgQUxMIE9OIG15c3Fs LiogVE8gJ3VzZXInQCdsb2NhbGhvc3QnIElERU5USUZJRUQgQlkgJ3Bhc3N3b3JkJzsKLUlOU1RB TEwgUExVR0lOIHZhbGlkYXRlX3Bhc3N3b3JkIFNPTkFNRSAndmFsaWRhdGVfcGFzc3dvcmQuc28n OworU0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeV9udW1iZXI9IDE7CitDUkVB VEUgVVNFUiAnYmFzZV91c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICdwYXNzd29yZCc7 CitHUkFOVCBBTEwgT04gbXlzcWwuKiBUTyAndXNlcjEnQCdsb2NhbGhvc3QnIElERU5USUZJRUQg QlkgJ3Bhc3N3b3JkJzsKICMgcGFzc3dvcmQgcG9saWN5IGxvdyAod2hpY2ggb25seSBjaGVjayBm b3IgcGFzc3dvcmQgbGVuZ3RoKQogIyBkZWZhdWx0IGNhc2U6IHBhc3N3b3JkIGxlbmd0aCBzaG91 bGQgYmUgbWluaW11bSA4Ci1TRVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5X251 bWJlcj0gMTsKIENSRUFURSBVU0VSICd1c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICcn OwotRVJST1IgSFkwMDA6IG5vdCBhIHZhbGlkIHBhc3N3b3JkICcnCitFUlJPUiBIWTAwMDogWW91 ciBwYXNzd29yZCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBjdXJyZW50IHBvbGljeSByZXF1aXJlbWVu dHMgJycKIFNFVCBQQVNTV09SRCBGT1IgJ2Jhc2VfdXNlcidAJ2xvY2FsaG9zdCc9IFBBU1NXT1JE KCdwYXNzd29yZCcpOwogU0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX2xlbmd0aD0gMTI7 CiBVUERBVEUgbXlzcWwudXNlciBTRVQgUEFTU1dPUkQ9IFBBU1NXT1JEKCdwYXNzd29yZCcpIFdI RVJFIHVzZXI9J2Jhc2VfdXNlcic7Ci1FUlJPUiBIWTAwMDogbm90IGEgdmFsaWQgcGFzc3dvcmQg J3Bhc3N3b3JkJworRVJST1IgSFkwMDA6IFlvdXIgcGFzc3dvcmQgZG9lcyBub3Qgc2F0aXNmeSB0 aGUgY3VycmVudCBwb2xpY3kgcmVxdWlyZW1lbnRzICdwYXNzd29yZCcKIEdSQU5UIFVTQUdFIE9O ICouKiBUTyAnYmFzZV91c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICdwYXNzd29yZDEy MzQnOwogU0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX2xlbmd0aD0gODsKICMgcGFzc3dv cmQgcG9saWN5IG1lZGl1bSAoY2hlY2sgZm9yIG1peGVkX2Nhc2UsIGRpZ2l0cywgc3BlY2lhbF9j aGFycykKICMgZGVmYXVsdCBjYXNlIDogYXRsZWFzdCAxIG1peGVkX2Nhc2UsIDEgZGlnaXQsIDEg c3BlY2lhbF9jaGFyCiBTRVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5X251bWJl cj0gMjsKIENSRUFURSBVU0VSICd1c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICdwYXNz d29yZCc7Ci1FUlJPUiBIWTAwMDogbm90IGEgdmFsaWQgcGFzc3dvcmQgJ3Bhc3N3b3JkJworRVJS T1IgSFkwMDA6IFlvdXIgcGFzc3dvcmQgZG9lcyBub3Qgc2F0aXNmeSB0aGUgY3VycmVudCBwb2xp Y3kgcmVxdWlyZW1lbnRzICdwYXNzd29yZCcKIFNFVCBQQVNTV09SRCBGT1IgJ2Jhc2VfdXNlcidA J2xvY2FsaG9zdCc9IFBBU1NXT1JEKCdwYXNzd29yZDFBIycpOwogU0VUIEBAZ2xvYmFsLnZhbGlk YXRlX3Bhc3N3b3JkX251bWJlcl9jb3VudD0gMjsKIFVQREFURSBteXNxbC51c2VyIFNFVCBQQVNT V09SRD0gUEFTU1dPUkQoJ3Bhc3N3b3JkMUEjJykgV0hFUkUgdXNlcj0nYmFzZV91c2VyJzsKLUVS Uk9SIEhZMDAwOiBub3QgYSB2YWxpZCBwYXNzd29yZCAncGFzc3dvcmQxQSMnCitFUlJPUiBIWTAw MDogWW91ciBwYXNzd29yZCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBjdXJyZW50IHBvbGljeSByZXF1 aXJlbWVudHMgJ3Bhc3N3b3JkMUEjJwogVVBEQVRFIG15c3FsLnVzZXIgU0VUIFBBU1NXT1JEPSBQ QVNTV09SRCgncGFzc3dvcmQxMkEjJykgV0hFUkUgdXNlcj0nYmFzZV91c2VyJzsKIFNFVCBAQGds b2JhbC52YWxpZGF0ZV9wYXNzd29yZF9udW1iZXJfY291bnQ9IDE7CiBTRVQgQEBnbG9iYWwudmFs aWRhdGVfcGFzc3dvcmRfbWl4ZWRfY2FzZV9jb3VudD0gMjsKIFVQREFURSBteXNxbC51c2VyIFNF VCBQQVNTV09SRD0gUEFTU1dPUkQoJ3Bhc3N3b3JkMUEjJykgV0hFUkUgdXNlcj0nYmFzZV91c2Vy JzsKLUVSUk9SIEhZMDAwOiBub3QgYSB2YWxpZCBwYXNzd29yZCAncGFzc3dvcmQxQSMnCitFUlJP UiBIWTAwMDogWW91ciBwYXNzd29yZCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBjdXJyZW50IHBvbGlj eSByZXF1aXJlbWVudHMgJ3Bhc3N3b3JkMUEjJwogVVBEQVRFIG15c3FsLnVzZXIgU0VUIFBBU1NX T1JEPSBQQVNTV09SRCgncGFzc3dvcmQxQUIjJykgV0hFUkUgdXNlcj0nYmFzZV91c2VyJzsKIFNF VCBAQGdsb2JhbC52YWxpZGF0ZV9wYXNzd29yZF9taXhlZF9jYXNlX2NvdW50PSAxOwogU0VUIEBA Z2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX3NwZWNpYWxfY2hhcl9jb3VudD0gMjsKIEdSQU5UIFVT QUdFIE9OICouKiBUTyAnYmFzZV91c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICdwYXNz d29yZDFBIyc7Ci1FUlJPUiBIWTAwMDogbm90IGEgdmFsaWQgcGFzc3dvcmQgJ3Bhc3N3b3JkMUEj JworRVJST1IgSFkwMDA6IFlvdXIgcGFzc3dvcmQgZG9lcyBub3Qgc2F0aXNmeSB0aGUgY3VycmVu dCBwb2xpY3kgcmVxdWlyZW1lbnRzICdwYXNzd29yZDFBIycKIEdSQU5UIFVTQUdFIE9OICouKiBU TyAnYmFzZV91c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICdwYXNzd29yZDFBIyQnOwog U0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX3NwZWNpYWxfY2hhcl9jb3VudD0gMTsKICMg cGFzc3dvcmQgcG9saWN5IHN0cm9uZwpAQCAtMzgsMTMgKzM3LDEzIEBAIFNFVCBAQGdsb2JhbC52 YWxpZGF0ZV9wYXNzd29yZF9zcGVjaWFsX2MKIFNFVEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3Jk X2RpY3Rpb25hcnlfZmlsZT0nTVlTUUxfRVJSTVNHX0JBU0VESVIvZGljdGlvbmFyeS50eHQnOwog U0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeV9udW1iZXI9IDM7CiBDUkVBVEUg VVNFUiAndXNlcidAJ2xvY2FsaG9zdCcgSURFTlRJRklFRCBCWSAncGFzc3dvcmQnOwotRVJST1Ig SFkwMDA6IG5vdCBhIHZhbGlkIHBhc3N3b3JkICdwYXNzd29yZCcKK0VSUk9SIEhZMDAwOiBZb3Vy IHBhc3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhlIGN1cnJlbnQgcG9saWN5IHJlcXVpcmVtZW50 cyAncGFzc3dvcmQnCiBTRVQgUEFTU1dPUkQgRk9SICdiYXNlX3VzZXInQCdsb2NhbGhvc3QnPSBQ QVNTV09SRCgncGFzc3dvcmQxQSMnKTsKLUVSUk9SIEhZMDAwOiBub3QgYSB2YWxpZCBwYXNzd29y ZCAncGFzc3dvcmQxYSMnCitFUlJPUiBIWTAwMDogWW91ciBwYXNzd29yZCBkb2VzIG5vdCBzYXRp c2Z5IHRoZSBjdXJyZW50IHBvbGljeSByZXF1aXJlbWVudHMgJ3Bhc3N3b3JkMWEjJwogVVBEQVRF IG15c3FsLnVzZXIgU0VUIFBBU1NXT1JEPSBQQVNTV09SRCgncGFzczEyMzQ1QSMnKSBXSEVSRSB1 c2VyPSdiYXNlX3VzZXInOwotRVJST1IgSFkwMDA6IG5vdCBhIHZhbGlkIHBhc3N3b3JkICdwYXNz MTIzNDVhIycKK0VSUk9SIEhZMDAwOiBZb3VyIHBhc3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhl IGN1cnJlbnQgcG9saWN5IHJlcXVpcmVtZW50cyAncGFzczEyMzQ1YSMnCiBVUERBVEUgbXlzcWwu dXNlciBTRVQgUEFTU1dPUkQ9IFBBU1NXT1JEKCdwYXNzMDAwMEEjJykgV0hFUkUgdXNlcj0nYmFz ZV91c2VyJzsKLUVSUk9SIEhZMDAwOiBub3QgYSB2YWxpZCBwYXNzd29yZCAncGFzczAwMDBhIycK K0VSUk9SIEhZMDAwOiBZb3VyIHBhc3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhlIGN1cnJlbnQg cG9saWN5IHJlcXVpcmVtZW50cyAncGFzczAwMDBhIycKIEdSQU5UIFVTQUdFIE9OICouKiBUTyAn YmFzZV91c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICdQQTAwd3JkISMnOwogIyB0ZXN0 IGZvciBwYXNzd29yZF92YWxpZGF0ZV9zdHJlbmd0aCBmdW5jdGlvbgogU0VMRUNUIFZBTElEQVRF X1BBU1NXT1JEX1NUUkVOR1RIKCdwYXNzd29yZCcsIDApOwpAQCAtNzIsNyArNzEsNyBAQCBWQUxJ REFURV9QQVNTV09SRF9TVFJFTkdUSCgnUEExMndyZCEjJykKIFNFTEVDVCBWQUxJREFURV9QQVNT V09SRF9TVFJFTkdUSCgnUEEwMHdyZCEjJyk7CiBWQUxJREFURV9QQVNTV09SRF9TVFJFTkdUSCgn UEEwMHdyZCEjJykKIDEwMAotU0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX2RpY3Rpb25h cnlfZmlsZT0nTlVMTCc7CitTRVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfZGljdGlvbmFy eV9maWxlPU5VTEw7CiAjIHNhbWUgcGFzc3dvcmQgd2FzIG5vdCBhY2NlcHRlZCBhcyBpdCB3YXMg cHJlc2VudCBpbiB0aGUgZGljdGlvbmFyeSBmaWxlCiBTRVQgUEFTU1dPUkQgRk9SICdiYXNlX3Vz ZXInQCdsb2NhbGhvc3QnPSBQQVNTV09SRCgncGFzc3dvcmQxQSMnKTsKIFNFTEVDVCBWQUxJREFU RV9QQVNTV09SRF9TVFJFTkdUSCgncGFzc3dvcmQxQSMnKTsKQEAgLTkxLDEzICs5MCwxMiBAQCBT RVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfc3BlY2lhbF9jCiBFUlJPUiA0MjAwMDogQWNj ZXNzIGRlbmllZDsgeW91IG5lZWQgKGF0IGxlYXN0IG9uZSBvZikgdGhlIFNVUEVSIHByaXZpbGVn ZShzKSBmb3IgdGhpcyBvcGVyYXRpb24KIFNFVCBAQGdsb2JhbC52YWxpZGF0ZV9wYXNzd29yZF9t aXhlZF9jYXNlX2NvdW50PSAwOwogRVJST1IgNDIwMDA6IEFjY2VzcyBkZW5pZWQ7IHlvdSBuZWVk IChhdCBsZWFzdCBvbmUgb2YpIHRoZSBTVVBFUiBwcml2aWxlZ2UocykgZm9yIHRoaXMgb3BlcmF0 aW9uCi1VUERBVEUgbXlzcWwudXNlciBTRVQgUEFTU1dPUkQ9IFBBU1NXT1JEKCdwYXNzd29yZCcp IFdIRVJFIHVzZXI9J3VzZXInOwotRVJST1IgSFkwMDA6IG5vdCBhIHZhbGlkIHBhc3N3b3JkICdw YXNzd29yZCcKLVVQREFURSBteXNxbC51c2VyIFNFVCBQQVNTV09SRD0gUEFTU1dPUkQoJ1BBMDB3 cmQhIycpIFdIRVJFIHVzZXI9J3VzZXInOwotQ1JFQVRFIFVTRVIgJ3VzZXIxJ0AnbG9jYWxob3N0 JyBJREVOVElGSUVEIEJZICdwYXNzd29yZCc7Ci1FUlJPUiBIWTAwMDogbm90IGEgdmFsaWQgcGFz c3dvcmQgJ3Bhc3N3b3JkJwotQ1JFQVRFIFVTRVIgJ3VzZXIxJ0AnbG9jYWxob3N0JyBJREVOVElG SUVEIEJZICdQQTAwd3JkISMnOwotRFJPUCBVU0VSICd1c2VyMSdAJ2xvY2FsaG9zdCc7CitDUkVB VEUgVVNFUiAndXNlcjInQCdsb2NhbGhvc3QnIElERU5USUZJRUQgQlkgJ3Bhc3N3b3JkJzsKK0VS Uk9SIEhZMDAwOiBZb3VyIHBhc3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhlIGN1cnJlbnQgcG9s aWN5IHJlcXVpcmVtZW50cyAncGFzc3dvcmQnCitDUkVBVEUgVVNFUiAndXNlcjInQCdsb2NhbGhv c3QnIElERU5USUZJRUQgQlkgJ1BBMDB3cmQhIyc7CitVUERBVEUgbXlzcWwudXNlciBTRVQgUEFT U1dPUkQ9IFBBU1NXT1JEKCdwYXNzd29yZCcpIFdIRVJFIHVzZXI9J3VzZXIyJzsKK0VSUk9SIEhZ MDAwOiBZb3VyIHBhc3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhlIGN1cnJlbnQgcG9saWN5IHJl cXVpcmVtZW50cyAncGFzc3dvcmQnCitVUERBVEUgbXlzcWwudXNlciBTRVQgUEFTU1dPUkQ9IFBB U1NXT1JEKCdQQTAwd3JkISMnKSBXSEVSRSB1c2VyPSd1c2VyMic7CitEUk9QIFVTRVIgJ3VzZXIy J0AnbG9jYWxob3N0JzsKIERST1AgVVNFUiAnYmFzZV91c2VyJ0AnbG9jYWxob3N0JzsKLURST1Ag VVNFUiAndXNlcidAJ2xvY2FsaG9zdCc7Ci1VTklOU1RBTEwgUExVR0lOIHZhbGlkYXRlX3Bhc3N3 b3JkOworRFJPUCBVU0VSICd1c2VyMSdAJ2xvY2FsaG9zdCc7Cgo9PT0gbW9kaWZpZWQgZmlsZSAn bXlzcWwtdGVzdC90L3ZhbGlkYXRlX3Bhc3N3b3JkX3BsdWdpbi1tYXN0ZXIub3B0JwotLS0gYS9t eXNxbC10ZXN0L3QvdmFsaWRhdGVfcGFzc3dvcmRfcGx1Z2luLW1hc3Rlci5vcHQJMjAxMi0wNC0x NiAxMjoyNToyMSArMDAwMAorKysgYi9teXNxbC10ZXN0L3QvdmFsaWRhdGVfcGFzc3dvcmRfcGx1 Z2luLW1hc3Rlci5vcHQJMjAxMi0wNS0xNCAxMToxODoxMyArMDAwMApAQCAtMSArMSwyIEBACiAk VkFMSURBVEVfUEFTU1dPUkRfT1BUCiskVkFMSURBVEVfUEFTU1dPUkRfTE9BRAoKPT09IG1vZGlm aWVkIGZpbGUgJ215c3FsLXRlc3QvdC92YWxpZGF0ZV9wYXNzd29yZF9wbHVnaW4udGVzdCcKLS0t IGEvbXlzcWwtdGVzdC90L3ZhbGlkYXRlX3Bhc3N3b3JkX3BsdWdpbi50ZXN0CTIwMTItMDUtMTAg MTQ6MTU6MDEgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC90L3ZhbGlkYXRlX3Bhc3N3b3JkX3BsdWdp bi50ZXN0CTIwMTItMDUtMTQgMTE6MTg6MTMgKzAwMDAKQEAgLTMsMTIgKzMsOSBAQAogCiBsZXQg JE1ZU1FMX0VSUk1TR19CQVNFRElSPWBzZWxlY3QgQEBsY19tZXNzYWdlc19kaXJgOwogCi0jIFBs dWdpbiBub3QgaW5zdGFsbGVkIG5vIHBhc3N3b3JkIHJlcXVpcmVkCi1DUkVBVEUgVVNFUiAnYmFz ZV91c2VyJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICcnOwotR1JBTlQgQUxMIE9OIG15c3Fs LiogVE8gJ3VzZXInQCdsb2NhbGhvc3QnIElERU5USUZJRUQgQlkgJ3Bhc3N3b3JkJzsKLQotLS1y ZXBsYWNlX3JlZ2V4IC9cLmRsbC8uc28vCi1ldmFsIElOU1RBTEwgUExVR0lOIHZhbGlkYXRlX3Bh c3N3b3JkIFNPTkFNRSAnJFZBTElEQVRFX1BBU1NXT1JEJzsKK1NFVCBAQGdsb2JhbC52YWxpZGF0 ZV9wYXNzd29yZF9wb2xpY3lfbnVtYmVyPSAxOworQ1JFQVRFIFVTRVIgJ2Jhc2VfdXNlcidAJ2xv Y2FsaG9zdCcgSURFTlRJRklFRCBCWSAncGFzc3dvcmQnOworR1JBTlQgQUxMIE9OIG15c3FsLiog VE8gJ3VzZXIxJ0AnbG9jYWxob3N0JyBJREVOVElGSUVEIEJZICdwYXNzd29yZCc7CiAKICMgdGVz dCBmb3IgYWxsIHRoZSB0aHJlZSBwYXNzd29yZCBwb2xpY3kKICMgcG9saWN5OiBsb3c9IDEsIG1l ZGl1bT0gMiwgc3Ryb25nPSAzCkBAIC0xNiw3ICsxMyw2IEBAIGV2YWwgSU5TVEFMTCBQTFVHSU4g dmFsaWRhdGVfcGFzc3dvcmQgU08KIC0tZWNobyAjIHBhc3N3b3JkIHBvbGljeSBsb3cgKHdoaWNo IG9ubHkgY2hlY2sgZm9yIHBhc3N3b3JkIGxlbmd0aCkKIC0tZWNobyAjIGRlZmF1bHQgY2FzZTog cGFzc3dvcmQgbGVuZ3RoIHNob3VsZCBiZSBtaW5pbXVtIDgKIAotU0VUIEBAZ2xvYmFsLnZhbGlk YXRlX3Bhc3N3b3JkX3BvbGljeV9udW1iZXI9IDE7CiAtLWVycm9yIEVSX05PVF9WQUxJRF9QQVNT V09SRAogQ1JFQVRFIFVTRVIgJ3VzZXInQCdsb2NhbGhvc3QnIElERU5USUZJRUQgQlkgJyc7CiBT RVQgUEFTU1dPUkQgRk9SICdiYXNlX3VzZXInQCdsb2NhbGhvc3QnPSBQQVNTV09SRCgncGFzc3dv cmQnKTsKQEAgLTgxLDcgKzc3LDcgQEAgU0VMRUNUIFZBTElEQVRFX1BBU1NXT1JEX1NUUkVOR1RI KCdwYXNzdwogU0VMRUNUIFZBTElEQVRFX1BBU1NXT1JEX1NUUkVOR1RIKCdQQTEyd3JkISMnKTsK IFNFTEVDVCBWQUxJREFURV9QQVNTV09SRF9TVFJFTkdUSCgnUEEwMHdyZCEjJyk7CiAKLVNFVCBA QGdsb2JhbC52YWxpZGF0ZV9wYXNzd29yZF9kaWN0aW9uYXJ5X2ZpbGU9J05VTEwnOworU0VUIEBA Z2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX2RpY3Rpb25hcnlfZmlsZT1OVUxMOwogLS1lY2hvICMg c2FtZSBwYXNzd29yZCB3YXMgbm90IGFjY2VwdGVkIGFzIGl0IHdhcyBwcmVzZW50IGluIHRoZSBk aWN0aW9uYXJ5IGZpbGUKIAogU0VUIFBBU1NXT1JEIEZPUiAnYmFzZV91c2VyJ0AnbG9jYWxob3N0 Jz0gUEFTU1dPUkQoJ3Bhc3N3b3JkMUEjJyk7CkBAIC05OCw3ICs5NCw3IEBAIFNFTEVDVCBWQUxJ REFURV9QQVNTV09SRF9TVFJFTkdUSCgnUEExMncKIFNFVCBAQGdsb2JhbC52YWxpZGF0ZV9wYXNz d29yZF9wb2xpY3lfbnVtYmVyPSAyOwogCiAjIE5ldyBjb25uZWN0aW9uCi1jb25uZWN0IChwbHVn X2Nvbixsb2NhbGhvc3QsdXNlcixwYXNzd29yZCk7Citjb25uZWN0IChwbHVnX2Nvbixsb2NhbGhv c3QsdXNlcjEscGFzc3dvcmQpOwogLS1lcnJvciBFUl9TUEVDSUZJQ19BQ0NFU1NfREVOSUVEX0VS Uk9SCiBTRVQgQEBnbG9iYWwudmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5X251bWJlcj0gMTsKIC0t ZXJyb3IgRVJfU1BFQ0lGSUNfQUNDRVNTX0RFTklFRF9FUlJPUgpAQCAtMTEwLDE0ICsxMDYsMTQg QEAgU0VUIEBAZ2xvYmFsLnZhbGlkYXRlX3Bhc3N3b3JkX21peGVkX2NhcwogIyB1c2VyIGhhcyB0 aGUgdXBkYXRlL2NyZWF0ZSBwcml2aWxlZ2UgYnV0IG5lZWRzIHRvIHNhdGlzZnkgcGFzc3dvcmQg cG9saWN5CiAjIHRvIHVwZGF0ZS9jcmVhdGUgbmV3IGFjY291bnQgCiAtLWVycm9yIEVSX05PVF9W QUxJRF9QQVNTV09SRAotVVBEQVRFIG15c3FsLnVzZXIgU0VUIFBBU1NXT1JEPSBQQVNTV09SRCgn cGFzc3dvcmQnKSBXSEVSRSB1c2VyPSd1c2VyJzsKLVVQREFURSBteXNxbC51c2VyIFNFVCBQQVNT V09SRD0gUEFTU1dPUkQoJ1BBMDB3cmQhIycpIFdIRVJFIHVzZXI9J3VzZXInOwogLS1lcnJvciBF Ul9OT1RfVkFMSURfUEFTU1dPUkQKLUNSRUFURSBVU0VSICd1c2VyMSdAJ2xvY2FsaG9zdCcgSURF TlRJRklFRCBCWSAncGFzc3dvcmQnOwotQ1JFQVRFIFVTRVIgJ3VzZXIxJ0AnbG9jYWxob3N0JyBJ REVOVElGSUVEIEJZICdQQTAwd3JkISMnOwotRFJPUCBVU0VSICd1c2VyMSdAJ2xvY2FsaG9zdCc7 CitDUkVBVEUgVVNFUiAndXNlcjInQCdsb2NhbGhvc3QnIElERU5USUZJRUQgQlkgJ3Bhc3N3b3Jk JzsKK0NSRUFURSBVU0VSICd1c2VyMidAJ2xvY2FsaG9zdCcgSURFTlRJRklFRCBCWSAnUEEwMHdy ZCEjJzsKKy0tZXJyb3IgRVJfTk9UX1ZBTElEX1BBU1NXT1JECitVUERBVEUgbXlzcWwudXNlciBT RVQgUEFTU1dPUkQ9IFBBU1NXT1JEKCdwYXNzd29yZCcpIFdIRVJFIHVzZXI9J3VzZXIyJzsKK1VQ REFURSBteXNxbC51c2VyIFNFVCBQQVNTV09SRD0gUEFTU1dPUkQoJ1BBMDB3cmQhIycpIFdIRVJF IHVzZXI9J3VzZXIyJzsKK0RST1AgVVNFUiAndXNlcjInQCdsb2NhbGhvc3QnOwogY29ubmVjdGlv biBkZWZhdWx0OwogCiBEUk9QIFVTRVIgJ2Jhc2VfdXNlcidAJ2xvY2FsaG9zdCc7Ci1EUk9QIFVT RVIgJ3VzZXInQCdsb2NhbGhvc3QnOwotVU5JTlNUQUxMIFBMVUdJTiB2YWxpZGF0ZV9wYXNzd29y ZDsKK0RST1AgVVNFUiAndXNlcjEnQCdsb2NhbGhvc3QnOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3Bs dWdpbi9wYXNzd29yZF92YWxpZGF0aW9uL0NNYWtlTGlzdHMudHh0JwotLS0gYS9wbHVnaW4vcGFz c3dvcmRfdmFsaWRhdGlvbi9DTWFrZUxpc3RzLnR4dAkyMDEyLTA1LTEwIDEwOjU0OjM3ICswMDAw CisrKyBiL3BsdWdpbi9wYXNzd29yZF92YWxpZGF0aW9uL0NNYWtlTGlzdHMudHh0CTIwMTItMDUt MTQgMTE6MTg6MTMgKzAwMDAKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoYykgMjAwNiwg MjAxMCwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K KyMgQ29weXJpZ2h0IMKpIDIwMTIsIE9yYWNsZSBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBy aWdodHMgcmVzZXJ2ZWQuCiAjIAogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQoKPT09IG1v ZGlmaWVkIGZpbGUgJ3BsdWdpbi9wYXNzd29yZF92YWxpZGF0aW9uL3ZhbGlkYXRlX3Bhc3N3b3Jk LmNjJwotLS0gYS9wbHVnaW4vcGFzc3dvcmRfdmFsaWRhdGlvbi92YWxpZGF0ZV9wYXNzd29yZC5j YwkyMDEyLTA1LTEwIDE1OjUzOjE3ICswMDAwCisrKyBiL3BsdWdpbi9wYXNzd29yZF92YWxpZGF0 aW9uL3ZhbGlkYXRlX3Bhc3N3b3JkLmNjCTIwMTItMDUtMTQgMTE6MTg6MTMgKzAwMDAKQEAgLTE4 LDcgKzE4LDEzIEBACiAjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPGlvc3RyZWFtPgogI2luY2x1 ZGUgPGZzdHJlYW0+CisjaW5jbHVkZSA8cHRocmVhZC5oPgogCisvKiAgCisgIF9fYXR0cmlidXRl X18oQSkgbmVlZHMgdG8gYmUgZGVmaW5lZCBmb3IgV2luZG93cyBlbHNlIGNvbXBsaWVyCisgIGRv IG5vdCByZWNvZ25pc2UgaXQuIEFyZ3VtZW50IGluIHBsdWdpbl9pbml0IGFuZCBwbHVnaW5fZGVp bml0CisgIFVzZWQgaW4gb3RoZXIgcGx1Z2lucyBhcyB3ZWxsLgorKi8KICNpZiAhZGVmaW5lZChf X2F0dHJpYnV0ZV9fKSAmJiAoZGVmaW5lZChfX2NwbHVzcGx1cykgfHwgIWRlZmluZWQoX19HTlVD X18pICB8fCBfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fIDwgOCkKICNkZWZpbmUgX19h dHRyaWJ1dGVfXyhBKQogI2VuZGlmCkBAIC0yNywxNCArMzMsMjAgQEAKICNkZWZpbmUgUEFTU1dP UkRfU0NPUkUgICAgICAgICAgICAgICAgMjUKICNkZWZpbmUgTUlOX0RJQ1RJT05BUllfV09SRF9M RU5HVEggICAgNAogCi1lbnVtIFBBU1NXT1JEX1BPTElDWSB7IFBBU1NXT1JEX1NUUkVOR1RIX1JF SkVDVEVELCBQQVNTV09SRF9TVFJFTkdUSF9MT1csCi0gICAgICAgICAgICAgICAgICAgICAgIFBB U1NXT1JEX1NUUkVOR1RIX01FRElVTSwgUEFTU1dPUkRfU1RSRU5HVEhfU1RST05HIH07CisvKiAg CisgIFRoZXNlIGFyZSB0aGUgMyBwYXNzd29yZCBwb2xpY2llcyB0aGF0IHRoaXMgcGx1Z2luIGFs bG93IHRvIHNldAorICBhbmQgY29uZmlndXJlIGFzIHBlciB0aGUgcmVxdWlyZW1lbnRzLgorKi8K K2VudW0gcGFzc3dvcmRfcG9saWN5X25hbWVfZW51bSB7IFBBU1NXT1JEX1BPTElDWV9MT1c9IDEs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVNTV09SRF9QT0xJQ1lfTUVESVVN LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFTU1dPUkRfUE9MSUNZX1NUUk9O RworfTsKIAorcHRocmVhZF9tdXRleF90IGRpY3Rpb25hcnlfbXV0ZXg7CiB0eXBlZGVmIHN0ZDo6 c3RyaW5nIHN0cmluZ190eXBlOwogdHlwZWRlZiBzdGQ6OnNldDxzdHJpbmdfdHlwZT4gc2V0X3R5 cGU7CiBzZXRfdHlwZSBkaWN0aW9uYXJ5X3dvcmRzOwogCi1zdGF0aWMgY2hhciAqZGljdGlvbmFy eV9maWxlPSBOVUxMOwogc3RhdGljIGludCB2YWxpZGF0ZV9wYXNzd29yZF9sZW5ndGg7CiBzdGF0 aWMgaW50IHZhbGlkYXRlX3Bhc3N3b3JkX251bWJlcl9jb3VudDsKIHN0YXRpYyBpbnQgdmFsaWRh dGVfcGFzc3dvcmRfbWl4ZWRfY2FzZV9jb3VudDsKQEAgLTQ3LDcgKzU5LDcgQEAgc3RhdGljIHZv aWQgcmVhZF9kaWN0aW9uYXJ5X2ZpbGUoKQogewogICBzdHJpbmdfdHlwZSB3b3JkczsKICAgbG9u ZyBmaWxlX2xlbmd0aDsKLSAgc3RkOjppZnN0cmVhbSBkaWN0aW9uYXJ5X3N0cmVhbShkaWN0aW9u YXJ5X2ZpbGUpOworICBzdGQ6Omlmc3RyZWFtIGRpY3Rpb25hcnlfc3RyZWFtKHZhbGlkYXRlX3Bh c3N3b3JkX2RpY3Rpb25hcnlfZmlsZSk7CiAKICAgaWYgKCFkaWN0aW9uYXJ5X3N0cmVhbSkKICAg ICByZXR1cm47CkBAIC01OSwxMSArNzEsMTMgQEAgc3RhdGljIHZvaWQgcmVhZF9kaWN0aW9uYXJ5 X2ZpbGUoKQogICAgIGRpY3Rpb25hcnlfc3RyZWFtLmNsb3NlKCk7CiAgICAgcmV0dXJuOwogICB9 CisgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZGljdGlvbmFyeV9tdXRleCk7CiAgIHdoaWxlIChkaWN0 aW9uYXJ5X3N0cmVhbS5nb29kKCkpCiAgIHsKICAgICBzdGQ6OmdldGxpbmUoZGljdGlvbmFyeV9z dHJlYW0sIHdvcmRzKTsKICAgICBkaWN0aW9uYXJ5X3dvcmRzLmluc2VydCh3b3Jkcyk7CiAgIH0K KyAgcHRocmVhZF9tdXRleF91bmxvY2soJmRpY3Rpb25hcnlfbXV0ZXgpOwogICBkaWN0aW9uYXJ5 X3N0cmVhbS5jbG9zZSgpOwogfQogCkBAIC03MSwzMSArODUsMzIgQEAgc3RhdGljIHZvaWQgcmVh ZF9kaWN0aW9uYXJ5X2ZpbGUoKQogc3RhdGljIHZvaWQgZnJlZV9kaWN0aW9uYXJ5X2ZpbGUoKQog ewogICBpZiAoIWRpY3Rpb25hcnlfd29yZHMuZW1wdHkoKSkKLSAgIGRpY3Rpb25hcnlfd29yZHMu Y2xlYXIoKTsKKyAgeworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZGljdGlvbmFyeV9tdXRleCk7 CisgICAgZGljdGlvbmFyeV93b3Jkcy5jbGVhcigpOworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2Nr KCZkaWN0aW9uYXJ5X211dGV4KTsKKyAgfQogfQogCi0vKiogQ2hlY2tzIHdlYXRoZXIgcGFzc3dv cmQgb3Igc3Vic3RyaW5nIG9mIHBhc3N3b3JkCi0gICAgaXMgcHJlc2VudCBpbiBkaWN0aW9uYXJ5 IGZpbGUgc3RvcmVkIGFzIHN0ZDo6c2V0CisvKiAgCisgIENoZWNrcyB3ZWF0aGVyIHBhc3N3b3Jk IG9yIHN1YnN0cmluZyBvZiBwYXNzd29yZAorICBpcyBwcmVzZW50IGluIGRpY3Rpb25hcnkgZmls ZSBzdG9yZWQgYXMgc3RkOjpzZXQKICovCiBzdGF0aWMgaW50IHZhbGlkYXRlX2RpY3Rpb25hcnlf Y2hlY2soc3RyaW5nX2hhbmRsZSBwYXNzd29yZCwgc2l6ZV90IGxlbmd0aCkKIHsKICAgc2l6ZV90 IHN1YnN0cl9wb3M9IDA7CiAgIHNpemVfdCBzdWJzdHJfbGVuZ3RoPSBsZW5ndGg7Ci0gIHN0cmlu Z190eXBlIHBhc3N3b3JkX3N0cj0gcGFzc3dvcmRfc3RyaW5nX2Nhc2VkbihwYXNzd29yZCk7Cisg IHN0cmluZ190eXBlIHBhc3N3b3JkX3N0cj0gKGNvbnN0IGNoYXIgKilteXNxbF9zdHJpbmdfY2hh cmFjdGVyX2Nhc2VkbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHBhc3N3b3JkKTsKICAgc3RyaW5nX3R5cGUgcGFzc3dvcmRfc3Vic3RyOwogICBzZXRfdHlwZTo6 aXRlcmF0b3IgaXRyOwotCi0gIC8qIE5ldyBkaWN0aW9uYXJ5IGZpbGUgKi8KLSAgaWYgKGRpY3Rp b25hcnlfZmlsZSAhPSB2YWxpZGF0ZV9wYXNzd29yZF9kaWN0aW9uYXJ5X2ZpbGUpCi0gIHsKLSAg ICBkaWN0aW9uYXJ5X2ZpbGU9IHZhbGlkYXRlX3Bhc3N3b3JkX2RpY3Rpb25hcnlfZmlsZTsKLSAg ICBmcmVlX2RpY3Rpb25hcnlfZmlsZSgpOwotICAgIHJlYWRfZGljdGlvbmFyeV9maWxlKCk7Ci0g IH0KLSAgLyogc3RkOjpzZXQgYXMgY29udGFpbmVyIHN0b3JlcyB0aGUgZGljdGlvbmFyeSB3b3Jk cywKLSAgICAgYmluYXJ5IGNvbXBhcmlzb24gYmV0d2VlbiBkaWN0aW9uYXJ5IHdvcmRzIGFuZCBw YXNzd29yZCAqLworICAvKiAgCisgICAgc3RkOjpzZXQgYXMgY29udGFpbmVyIHN0b3JlcyB0aGUg ZGljdGlvbmFyeSB3b3JkcywKKyAgICBiaW5hcnkgY29tcGFyaXNvbiBiZXR3ZWVuIGRpY3Rpb25h cnkgd29yZHMgYW5kIHBhc3N3b3JkCisgICovCiAgIGlmICghZGljdGlvbmFyeV93b3Jkcy5lbXB0 eSgpKQogICB7CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZkaWN0aW9uYXJ5X211dGV4KTsKICAg ICB3aGlsZSAoc3Vic3RyX2xlbmd0aCA+PSBNSU5fRElDVElPTkFSWV9XT1JEX0xFTkdUSCkKICAg ICB7CiAgICAgICBzdWJzdHJfcG9zPSAwOwpAQCAtMTA0LDM2ICsxMTksNTQgQEAgc3RhdGljIGlu dCB2YWxpZGF0ZV9kaWN0aW9uYXJ5X2NoZWNrKHN0cgogICAgICAgICBwYXNzd29yZF9zdWJzdHI9 IHBhc3N3b3JkX3N0ci5zdWJzdHIoc3Vic3RyX3Bvcywgc3Vic3RyX2xlbmd0aCk7CiAgICAgICAg IGl0cj0gZGljdGlvbmFyeV93b3Jkcy5maW5kKHBhc3N3b3JkX3N1YnN0cik7CiAgICAgICAgIGlm IChpdHIgIT0gZGljdGlvbmFyeV93b3Jkcy5lbmQoKSkKKyAgICAgICAgeworICAgICAgICAgIHB0 aHJlYWRfbXV0ZXhfdW5sb2NrKCZkaWN0aW9uYXJ5X211dGV4KTsKICAgICAgICAgICByZXR1cm4g KDApOworICAgICAgICB9CiAgICAgICAgIHN1YnN0cl9wb3MrKzsKICAgICAgIH0KICAgICAgIHN1 YnN0cl9sZW5ndGgtLTsKICAgICB9CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmRpY3Rpb25h cnlfbXV0ZXgpOwogICB9CiAgIHJldHVybiAoMSk7CiB9CiAKIHN0YXRpYyBpbnQgdmFsaWRhdGVf cGFzc3dvcmRfcG9saWN5KHN0cmluZ19oYW5kbGUgcGFzc3dvcmQsIHNpemVfdCBsZW5ndGgsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvbGljeSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwb2xpY3kpCiB7Ci0gIFBBU1NXT1JEX0NI QVJfQ0FTRSBjaGFyc19jYXNlOwotICBjaGFyc19jYXNlLmhhc19udW1iZXJzPSAwOwotICBjaGFy c19jYXNlLmhhc19sb3dlcj0gMDsKLSAgY2hhcnNfY2FzZS5oYXNfdXBwZXI9IDA7Ci0gIGNoYXJz X2Nhc2UuaGFzX3NwZWNpYWxfY2hhcnM9IDA7CisgIGludCBoYXNfbnVtYmVycz0gMDsKKyAgaW50 IGhhc19sb3dlcj0gMDsKKyAgaW50IGhhc191cHBlcj0gMDsKKyAgaW50IGhhc19zcGVjaWFsX2No YXJzPSAwOworICBpbnQgY2hhcl90eXBlLCBjaGFyX2xlbjsKKyAgY29uc3QgY2hhciAqY3VycmVu dF9wdHIsICplbmRfcHRyOwogCiAgIGlmICgoaW50KWxlbmd0aCA+PSB2YWxpZGF0ZV9wYXNzd29y ZF9sZW5ndGgpCiAgIHsKLSAgICBpZiAocG9saWN5ID09IFBBU1NXT1JEX1NUUkVOR1RIX0xPVykK KyAgICBpZiAocG9saWN5ID09IFBBU1NXT1JEX1BPTElDWV9MT1cpCiAgICAgICByZXR1cm4gKDEp OwotICAgIHBhc3N3b3JkX3N0cmluZ19jYXNlKCZjaGFyc19jYXNlLCBwYXNzd29yZCk7Ci0KLSAg ICBpZiAoY2hhcnNfY2FzZS5oYXNfdXBwZXIgPj0gdmFsaWRhdGVfcGFzc3dvcmRfbWl4ZWRfY2Fz ZV9jb3VudCAmJgotICAgICAgICBjaGFyc19jYXNlLmhhc19sb3dlciA+PSB2YWxpZGF0ZV9wYXNz d29yZF9taXhlZF9jYXNlX2NvdW50ICYmCi0gICAgICAgIGNoYXJzX2Nhc2UuaGFzX3NwZWNpYWxf Y2hhcnMgPj0gdmFsaWRhdGVfcGFzc3dvcmRfc3BlY2lhbF9jaGFyX2NvdW50ICYmCi0gICAgICAg IGNoYXJzX2Nhc2UuaGFzX251bWJlcnMgPj0gdmFsaWRhdGVfcGFzc3dvcmRfbnVtYmVyX2NvdW50 KQorICAgIGN1cnJlbnRfcHRyPSBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2JlZyhwYXNzd29yZCk7 CisgICAgZW5kX3B0cj0gbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9lbmQocGFzc3dvcmQpOworICAg IHdoaWxlIChjdXJyZW50X3B0ciA8IGVuZF9wdHIpCiAgICAgewotICAgICAgaWYgKHBvbGljeSA9 PSBQQVNTV09SRF9TVFJFTkdUSF9NRURJVU0gfHwKKyAgICAgIGNoYXJfbGVuPSBteXNxbF9zdHJp bmdfY2hhcmFjdGVyX2N0eXBlKHBhc3N3b3JkLCAmY2hhcl90eXBlLCBjdXJyZW50X3B0cik7Cisg ICAgICBpZiAobXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2xvd2VyKGNoYXJfdHlwZSkpCisgICAg ICAgIGhhc19sb3dlcisrOworICAgICAgZWxzZSBpZiAobXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9p c3VwcGVyKGNoYXJfdHlwZSkpCisgICAgICAgIGhhc191cHBlcisrOworICAgICAgZWxzZSBpZiAo bXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2RpZ2l0KGNoYXJfdHlwZSkpCisgICAgICAgIGhhc19u dW1iZXJzKys7CisgICAgICBlbHNlCisgICAgICAgIGhhc19zcGVjaWFsX2NoYXJzKys7CisgICAg ICBjdXJyZW50X3B0cis9IChjaGFyX2xlbiA+IDAgPyBjaGFyX2xlbiA6IChjaGFyX2xlbiA8IDAg PyAtY2hhcl9sZW4gOiAxKSk7CisgICAgfQorICAgIGlmIChoYXNfdXBwZXIgPj0gdmFsaWRhdGVf cGFzc3dvcmRfbWl4ZWRfY2FzZV9jb3VudCAmJgorICAgICAgICBoYXNfbG93ZXIgPj0gdmFsaWRh dGVfcGFzc3dvcmRfbWl4ZWRfY2FzZV9jb3VudCAmJgorICAgICAgICBoYXNfc3BlY2lhbF9jaGFy cyA+PSB2YWxpZGF0ZV9wYXNzd29yZF9zcGVjaWFsX2NoYXJfY291bnQgJiYKKyAgICAgICAgaGFz X251bWJlcnMgPj0gdmFsaWRhdGVfcGFzc3dvcmRfbnVtYmVyX2NvdW50KQorICAgIHsKKyAgICAg IGlmIChwb2xpY3kgPT0gUEFTU1dPUkRfUE9MSUNZX01FRElVTSB8fAogICAgICAgICAgIHZhbGlk YXRlX2RpY3Rpb25hcnlfY2hlY2socGFzc3dvcmQsIGxlbmd0aCkpCiAgICAgICAgIHJldHVybiAo MSk7CiAgICAgfQpAQCAtMTUxLDI4ICsxODQsMjUgQEAgc3RhdGljIGludCB2YWxpZGF0ZV9wYXNz d29yZChzdHJpbmdfaGFuZAogLyogUGFzc3dvcmQgc3RyZW5ndGggYmV0d2VlbiAoMC0xMDApICov CiBzdGF0aWMgaW50IGdldF9wYXNzd29yZF9zdHJlbmd0aChzdHJpbmdfaGFuZGxlIHBhc3N3b3Jk LCBzaXplX3QgbGVuZ3RoKQogewotICBpbnQgcG9saWN5PTA7CisgIGludCBwb2xpY3k9IDA7CiAg IAogICBpZiAobGVuZ3RoIDwgTUlOX0RJQ1RJT05BUllfV09SRF9MRU5HVEgpCiAgICAgcmV0dXJu IHBvbGljeTsKIAotICBpZiAodmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5KHBhc3N3b3JkLCBsZW5n dGgsIFBBU1NXT1JEX1NUUkVOR1RIX0xPVykpCisgIGlmICh2YWxpZGF0ZV9wYXNzd29yZF9wb2xp Y3kocGFzc3dvcmQsIGxlbmd0aCwgUEFTU1dPUkRfUE9MSUNZX0xPVykpCiAgIHsKLSAgICBwb2xp Y3k9IFBBU1NXT1JEX1NUUkVOR1RIX0xPVzsKLSAgICBpZiAodmFsaWRhdGVfcGFzc3dvcmRfcG9s aWN5KHBhc3N3b3JkLCBsZW5ndGgsIFBBU1NXT1JEX1NUUkVOR1RIX01FRElVTSkpCisgICAgcG9s aWN5PSBQQVNTV09SRF9QT0xJQ1lfTE9XOworICAgIGlmICh2YWxpZGF0ZV9wYXNzd29yZF9wb2xp Y3kocGFzc3dvcmQsIGxlbmd0aCwgUEFTU1dPUkRfUE9MSUNZX01FRElVTSkpCiAgICAgewotICAg ICAgcG9saWN5PSBQQVNTV09SRF9TVFJFTkdUSF9NRURJVU07CisgICAgICBwb2xpY3k9IFBBU1NX T1JEX1BPTElDWV9NRURJVU07CiAgICAgICBpZiAodmFsaWRhdGVfZGljdGlvbmFyeV9jaGVjayhw YXNzd29yZCwgbGVuZ3RoKSkKLSAgICAgICAgcG9saWN5PSBQQVNTV09SRF9TVFJFTkdUSF9TVFJP Tkc7CisgICAgICAgIHBvbGljeT0gUEFTU1dPUkRfUE9MSUNZX1NUUk9ORzsKICAgICB9CiAgIH0K ICAgcmV0dXJuIChwb2xpY3kgKiBQQVNTV09SRF9TQ09SRSArIFBBU1NXT1JEX1NDT1JFKTsKIH0K IAotLyoKLSAgUGx1Z2luIHR5cGUtc3BlY2lmaWMgZGVzY3JpcHRvcgotKi8KLQorLyogUGx1Z2lu IHR5cGUtc3BlY2lmaWMgZGVzY3JpcHRvciAqLwogc3RhdGljIHN0cnVjdCBzdF9teXNxbF92YWxp ZGF0ZV9wYXNzd29yZCB2YWxpZGF0ZV9wYXNzd29yZF9kZXNjcmlwdG9yPQogewogICBNWVNRTF9W QUxJREFURV9QQVNTV09SRF9JTlRFUkZBQ0VfVkVSU0lPTiwKQEAgLTE4MCwxOSArMjEwLDIwIEBA IHN0YXRpYyBzdHJ1Y3Qgc3RfbXlzcWxfdmFsaWRhdGVfcGFzc3dvcmQKICAgZ2V0X3Bhc3N3b3Jk X3N0cmVuZ3RoICAgICAgICAgICAgICAgICAgICAgIC8qIHZhbGlkYXRlIHN0cmVuZ3RoIGZ1bmN0 aW9uICovCiB9OwogCi0vKioKLSAgICBJbml0aWFsaXplIHRoZSBwYXNzd29yZCBwbHVnaW4gYXQg c2VydmVyIHN0YXJ0IG9yIHBsdWdpbiBpbnN0YWxsYXRpb24KLSAgICBEb2VzIG5vdGhpbmcsIHJl dHVybiAwCisvKiAgCisgIEluaXRpYWxpemUgdGhlIHBhc3N3b3JkIHBsdWdpbiBhdCBzZXJ2ZXIg c3RhcnQgb3IgcGx1Z2luIGluc3RhbGxhdGlvbiwKKyAgcmVhZCBkaWN0aW9uYXJ5IGZpbGUgaW50 byBzdGQ6OnNldC4KICovCiAKIHN0YXRpYyBpbnQgdmFsaWRhdGVfcGFzc3dvcmRfaW5pdCh2b2lk ICphcmcgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCiB7CisgIHJlYWRfZGljdGlvbmFyeV9maWxl KCk7CiAgIHJldHVybiAoMCk7CiB9CiAKLS8qKgotICAgVGVybWluYXRlIHRoZSBwYXNzd29yZCBw bHVnaW4gYXQgc2VydmVyIHNodXRkb3duIG9yIHBsdWdpbiBkZWluc3RhbGxhdGlvbi4KLSAgIEl0 IGVtcHR5IHRoZSBzdGQ6OnNldCBhbmQgcmV0dXJucyAwCisvKiAgCisgIFRlcm1pbmF0ZSB0aGUg cGFzc3dvcmQgcGx1Z2luIGF0IHNlcnZlciBzaHV0ZG93biBvciBwbHVnaW4gZGVpbnN0YWxsYXRp b24uCisgIEl0IGVtcHR5IHRoZSBzdGQ6OnNldCBhbmQgcmV0dXJucyAwCiAqLwogCiBzdGF0aWMg aW50IHZhbGlkYXRlX3Bhc3N3b3JkX2RlaW5pdCh2b2lkICphcmcgX19hdHRyaWJ1dGVfXygodW51 c2VkKSkpCkBAIC0yMDEsOSArMjMyLDIxIEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfcGFzc3dvcmRf ZGVpbml0KHZvaWQKICAgcmV0dXJuICgwKTsKIH0KIAotLyoKLSAgUGx1Z2luIHN5c3RlbSB2YXJp YWJsZXMuCi0qLworLyogIAorICBXaGVuIGRpY3Rpb25hcnkgZmlsZSBpcyBjaGFuZ2VkIGl0IHJl bG9hZHMgdGhlIG5ldyBmaWxlIGluCisgIHN0ZDo6c2V0CisqLyAgCitzdGF0aWMgdm9pZCB2YWxp ZGF0ZV9wYXNzd29yZF9kaWN0aW9uYXJ5X2ZpbGVfdXBkYXRlKFRIRCAqdGhkLCBzdHJ1Y3QKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RfbXlz cWxfc3lzX3ZhciAqdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2b2lkICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpzYXZlKQoreworICAqKGNoYXIgKiop IGRlc3Q9ICooY2hhciAqKikgc2F2ZTsKKyAgZnJlZV9kaWN0aW9uYXJ5X2ZpbGUoKTsKKyAgcmVh ZF9kaWN0aW9uYXJ5X2ZpbGUoKTsKK30KKworLyogUGx1Z2luIHN5c3RlbSB2YXJpYWJsZXMgKi8K IAogc3RhdGljIE1ZU1FMX1NZU1ZBUl9JTlQobGVuZ3RoLCB2YWxpZGF0ZV9wYXNzd29yZF9sZW5n dGgsCiAgIFBMVUdJTl9WQVJfUlFDTURBUkcsCkBAIC0yMjEsMTkgKzI2NCwyMCBAQCBzdGF0aWMg TVlTUUxfU1lTVkFSX0lOVChtaXhlZF9jYXNlX2NvdW50CiAgIE5VTEwsIE5VTEwsIDEsIDAsIDAs IDApOwogCiBzdGF0aWMgTVlTUUxfU1lTVkFSX0lOVChzcGVjaWFsX2NoYXJfY291bnQsCi0gICAg ICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfcGFzc3dvcmRfc3BlY2lhbF9jaGFyX2NvdW50LCBQ TFVHSU5fVkFSX1JRQ01EQVJHLAorICB2YWxpZGF0ZV9wYXNzd29yZF9zcGVjaWFsX2NoYXJfY291 bnQsIFBMVUdJTl9WQVJfUlFDTURBUkcsCiAgICJwYXNzd29yZCB2YWxpZGF0ZSBzcGVjaWFsIHRv IGVuc3VyZSBtaW5pbXVtIHNwZWNpYWwgY2hhcmFjdGVyIGluIHBhc3N3b3JkIiwKICAgTlVMTCwg TlVMTCwgMSwgMCwgMCwgMCk7CiAKIHN0YXRpYyBNWVNRTF9TWVNWQVJfSU5UKHBvbGljeV9udW1i ZXIsIHZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeV9udW1iZXIsCiAgIFBMVUdJTl9WQVJfUlFDTURB UkcsCi0gICJwYXNzd29yZF92YWxpZGF0ZV9wb2xpY3kgY2hvb3NlbiBwb2xpY3kgdG8gdmFsaWRh dGUgcGFzc3dvcmQiLAotICBOVUxMLCBOVUxMLCAyLCAxLCAzLCAwKTsKKyAgInBhc3N3b3JkX3Zh bGlkYXRlX3BvbGljeSBjaG9vc2VuIHBvbGljeSB0byB2YWxpZGF0ZSBwYXNzd29yZCIKKyAgInBv c3NpYmxlIHZhbHVlcyBhcmUgTE9XPTEsIE1FRElVTT0yIChkZWZhdWx0KSwgSElHSD0zIiwKKyAg TlVMTCwgTlVMTCwgMiwgMSwgMywgMCApOwogCiBzdGF0aWMgTVlTUUxfU1lTVkFSX1NUUihkaWN0 aW9uYXJ5X2ZpbGUsIHZhbGlkYXRlX3Bhc3N3b3JkX2RpY3Rpb25hcnlfZmlsZSwKICAgUExVR0lO X1ZBUl9SUUNNREFSRyB8IFBMVUdJTl9WQVJfTUVNQUxMT0MsCiAgICJwYXNzd29yZF92YWxpZGF0 ZV9kaWN0aW9uYXJ5IGZpbGUgdG8gYmUgbG9hZGVkIGFuZCBjaGVjayBmb3IgcGFzc3dvcmQiLAot ICBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgTlVMTCwgdmFsaWRhdGVfcGFzc3dvcmRfZGljdGlvbmFy eV9maWxlX3VwZGF0ZSwgTlVMTCk7CiAKIHN0YXRpYyBzdHJ1Y3Qgc3RfbXlzcWxfc3lzX3Zhciog dmFsaWRhdGVfcGFzc3dvcmRfc3lzdGVtX3ZhcmlhYmxlc1tdPSB7CiAgIE1ZU1FMX1NZU1ZBUihs ZW5ndGgpLAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9pdGVtX2Z1bmMuY2MnCi0tLSBhL3NxbC9p dGVtX2Z1bmMuY2MJMjAxMi0wNS0xMCAxMDo1NDozNyArMDAwMAorKysgYi9zcWwvaXRlbV9mdW5j LmNjCTIwMTItMDUtMTQgMTE6MTg6MTMgKzAwMDAKQEAgLTMyMjksNyArMzIyOSw2IEBAIHZvaWQg SXRlbV9mdW5jX2xvY2F0ZTo6cHJpbnQoU3RyaW5nICpzdHIKIAogbG9uZ2xvbmcgSXRlbV9mdW5j X3ZhbGlkYXRlX3Bhc3N3b3JkX3N0cmVuZ3RoOjp2YWxfaW50KCkKIHsKLSAgREJVR19BU1NFUlQo Zml4ZWQgPT0gMSk7CiAgIFN0cmluZyAqZmllbGQ7CiAgIGlmICghKGZpZWxkPSBhcmdzWzBdLT52 YWxfc3RyKCZ2YWx1ZSkpKQogICAgIHJldHVybiAwOwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9p dGVtX3N0cmZ1bmMuY2MnCi0tLSBhL3NxbC9pdGVtX3N0cmZ1bmMuY2MJMjAxMi0wNC0zMCAwNjoz NjowMSArMDAwMAorKysgYi9zcWwvaXRlbV9zdHJmdW5jLmNjCTIwMTItMDUtMTQgMTE6MTg6MTMg KzAwMDAKQEAgLTE5NTAsNiArMTk1MCw3IEBAIFN0cmluZyAqSXRlbV9mdW5jX29sZF9wYXNzd29y ZDo6dmFsX3N0cl8KICAgU3RyaW5nICpyZXM9IGFyZ3NbMF0tPnZhbF9zdHIoc3RyKTsKICAgaWYg KChudWxsX3ZhbHVlPWFyZ3NbMF0tPm51bGxfdmFsdWUpKQogICAgIHJldHVybiAwOworICBjaGVj a19wYXNzd29yZF9wb2xpY3kocmVzKTsKICAgaWYgKHJlcy0+bGVuZ3RoKCkgPT0gMCkKICAgICBy ZXR1cm4gbWFrZV9lbXB0eV9yZXN1bHQoKTsKICAgbXlfbWFrZV9zY3JhbWJsZWRfcGFzc3dvcmRf MzIzKHRtcF92YWx1ZSwgcmVzLT5wdHIoKSwgcmVzLT5sZW5ndGgoKSk7Cgo9PT0gbW9kaWZpZWQg ZmlsZSAnc3FsL3NoYXJlL2Vycm1zZy11dGY4LnR4dCcKLS0tIGEvc3FsL3NoYXJlL2Vycm1zZy11 dGY4LnR4dAkyMDEyLTA0LTE2IDEyOjI1OjIxICswMDAwCisrKyBiL3NxbC9zaGFyZS9lcnJtc2ct dXRmOC50eHQJMjAxMi0wNS0xNCAxMToxODoxMyArMDAwMApAQCAtNjc0NSw4ICs2NzQ1LDYgQEAg RVJfVU5LTk9XTl9BTFRFUl9BTEdPUklUSE0KICAgZW5nICJVbmtub3duIEFMR09SSVRITSAnJXMn IgogRVJfVU5LTk9XTl9BTFRFUl9MT0NLCiAgIGVuZyAiVW5rbm93biBMT0NLIHR5cGUgJyVzJyIK LUVSX05PVF9WQUxJRF9QQVNTV09SRAotICBlbmcgIm5vdCBhIHZhbGlkIHBhc3N3b3JkICclcyci CiAKIEVSX01UU19DSEFOR0VfTUFTVEVSX0NBTlRfUlVOX1dJVEhfR0FQUwogICBlbmcgIkNIQU5H RSBNQVNURVIgY2Fubm90IGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHNsYXZlIHdhcyBzdG9wcGVkIHdp dGggYW4gZXJyb3Igb3Iga2lsbGVkIGluIE1UUyBtb2RlLiBDb25zaWRlciB1c2luZyBSRVNFVCBT TEFWRSBvciBTVEFSVCBTTEFWRSBVTlRJTC4iCkBAIC02NzU0LDYgKzY3NTIsOSBAQCBFUl9NVFNf UkVDT1ZFUllfRkFJTFVSRQogICBlbmcgIkNhbm5vdCByZWNvdmVyIGFmdGVyIFNMQVZFIGVycm9y ZWQgb3V0IGluIHBhcmFsbGVsIGV4ZWN1dGlvbiBtb2RlLiBBZGRpdGlvbmFsIGVycm9yIG1lc3Nh Z2VzIGNhbiBiZSBmb3VuZCBpbiB0aGUgTXlTUUwgZXJyb3IgbG9nLiIKIEVSX01UU19SRVNFVF9X T1JLRVJTCiAgIGVuZyAiQ2Fubm90IGNsZWFuIHVwIHdvcmtlciBpbmZvIHRhYmxlcy4gQWRkaXRp b25hbCBlcnJvciBtZXNzYWdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIE15U1FMIGVycm9yIGxvZy4i CisKK0VSX05PVF9WQUxJRF9QQVNTV09SRAorICBlbmcgIllvdXIgcGFzc3dvcmQgZG9lcyBub3Qg c2F0aXNmeSB0aGUgY3VycmVudCBwb2xpY3kgcmVxdWlyZW1lbnRzICclcyciCiAjCiAjICBFbmQg b2YgNS42IGVycm9yIG1lc3NhZ2VzLgogIwoKPT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfYWNs LmNjJwotLS0gYS9zcWwvc3FsX2FjbC5jYwkyMDEyLTA1LTEwIDEwOjU0OjM3ICswMDAwCisrKyBi L3NxbC9zcWxfYWNsLmNjCTIwMTItMDUtMTQgMTE6MTg6MTMgKzAwMDAKQEAgLTk5MTAsMTMgKzk5 MTAsMTIgQEAgbXlzcWxfZGVjbGFyZV9wbHVnaW4obXlzcWxfcGFzc3dvcmQpCiB9CiBteXNxbF9k ZWNsYXJlX3BsdWdpbl9lbmQ7CiAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8qICAKICBQQVNTV09SRF9WQUxJ REFUSU9OX0NPREUsIGludm9raW5nIGFwcHJvcHJpYXRlIHBsdWdpbiB0byB2YWxpZGF0ZQogIHRo ZSBwYXNzd29yZCBzdHJlbmd0aC4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisqLwogCiAvKiBmb3IgdmFsaWRh dGVfcGFzc3dvcmRfc3RyZW5ndGggU1FMIGZ1bmN0aW9uICovCi0KIGludCBjaGVja19wYXNzd29y ZF9zdHJlbmd0aChTdHJpbmcgKnBhc3N3b3JkKQogewogICBpbnQgcmVzPSAwOwpAQCAtOTkzNCw3 ICs5OTMzLDYgQEAgaW50IGNoZWNrX3Bhc3N3b3JkX3N0cmVuZ3RoKFN0cmluZyAqcGFzcwogfQog CiAvKiBjYWxsZWQgd2hlbiBuZXcgdXNlciBpcyBjcmVhdGVkIG9yIGV4c2lzdGluZyBwYXNzd29y ZCBpcyBjaGFuZ2VkICovCi0KIHZvaWQgY2hlY2tfcGFzc3dvcmRfcG9saWN5KFN0cmluZyAqcGFz c3dvcmQpCiB7CiAgIHBsdWdpbl9yZWYgcGx1Z2luPSBteV9wbHVnaW5fbG9ja19ieV9uYW1lKDAs ICZ2YWxpZGF0ZV9wYXNzd29yZF9wbHVnaW5fbmFtZSwKQEAgLTk5NTAsNjAgKzk5NDgsOTcgQEAg dm9pZCBjaGVja19wYXNzd29yZF9wb2xpY3koU3RyaW5nICpwYXNzdwogICB9CiB9CiAKLS8qIFRo aXMgZnVuY3Rpb24gcHJvdmlkZSBwbHVnaW4gc2VydmljZSBmb3IgY2FsY3VsYXRpbmcgbnVtYmVy IG9mIAotICAgdXBwZXJfY2FzZSwgbG93ZXJfY2FzZSwgZGlnaXRzLiBDYWxjdWxhdGlvbiBkZXBl bmRzIG9uIHRoZQotICAgY2xpZW50IGNoYXJhY3RlciBzZXQuCi0qLyAKLWV4dGVybiAiQyIKLXZv aWQgcGFzc3dvcmRfc3RyaW5nX2Nhc2UoUEFTU1dPUkRfQ0hBUl9DQVNFICpjaGFyc19jYXNlLCB2 b2lkICpwYXNzd29yZCkKLXsKLSAgU3RyaW5nICpwYXNzd29yZF9zdHI9IChTdHJpbmcgKikgcGFz c3dvcmQ7Ci0gIGNvbnN0IENIQVJTRVRfSU5GTyAqY3M9IHBhc3N3b3JkX3N0ci0+Y2hhcnNldCgp OwotICBjaGFyICpiZWc9IChjaGFyKikgcGFzc3dvcmRfc3RyLT5wdHIoKTsKLSAgY2hhciAqZW5k PSAoY2hhciopIHBhc3N3b3JkX3N0ci0+cHRyKCkgKyBwYXNzd29yZF9zdHItPmxlbmd0aCgpOwot ICB3aGlsZSAoYmVnIDwgZW5kKQotICB7Ci0gICAgaW50IGN0eXBlLCBjaGFyX2xlbjsKLSAgICBj aGFyX2xlbj0gY3MtPmNzZXQtPmN0eXBlKGNzLCAmY3R5cGUsICh1Y2hhciopIGJlZywgKHVjaGFy KikgZW5kKTsKLSAgICBpZiAoY3R5cGUgJiBfTVlfTk1SKQotICAgICAgY2hhcnNfY2FzZS0+aGFz X251bWJlcnMrKzsKLSAgICBlbHNlIGlmIChjdHlwZSAmIF9NWV9MKQotICAgICAgY2hhcnNfY2Fz ZS0+aGFzX2xvd2VyKys7Ci0gICAgZWxzZSBpZiAoY3R5cGUgJiBfTVlfVSkKLSAgICAgIGNoYXJz X2Nhc2UtPmhhc191cHBlcisrOwotICAgIGVsc2UKLSAgICAgIGNoYXJzX2Nhc2UtPmhhc19zcGVj aWFsX2NoYXJzKys7Ci0gICAgYmVnKz0gKGNoYXJfbGVuID4gMCA/IGNoYXJfbGVuIDogKGNoYXJf bGVuIDwgMCA/IC1jaGFyX2xlbiA6IDEpKTsKLSAgfQorLyogIAorICBUaGlzIGlzIHBsdWdpbiBz ZXJ2aWNlIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgdGhlIGJlZ2lubmluZyBvZiB0aGUKKyAgbXlz cWwgU3RyaW5nLgorKi8KK2V4dGVybiAiQyIKK2NvbnN0IGNoYXIgKm15c3FsX3N0cmluZ19jaGFy YWN0ZXJfYmVnKG15c3FsX3N0cmluZ19wdHIgc3RyaW5nX3B0cikKK3sKKyAgU3RyaW5nICpzdHI9 IChTdHJpbmcgKikgc3RyaW5nX3B0cjsKKyAgcmV0dXJuIHN0ci0+cHRyKCk7Cit9CisKKy8qIFRo aXMgaXMgcGx1Z2luIHNlcnZpY2UgZnVuY3Rpb24gd2hpY2ggZW5kIG9mIHRoZSBteXNxbCBTdHJp bmcgKi8KK2V4dGVybiAiQyIKK2NvbnN0IGNoYXIgKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfZW5k KG15c3FsX3N0cmluZ19wdHIgc3RyaW5nX3B0cikKK3sKKyAgU3RyaW5nICpzdHI9IChTdHJpbmcg Kikgc3RyaW5nX3B0cjsKKyAgcmV0dXJuIChzdHItPnB0cigpICsgc3RyLT5sZW5ndGgoKSk7Cit9 CisKKy8qICAKKyAgVGhpcyBpcyBwbHVnaW4gc2VydmljZSBmdW5jdGlvbiB3aGljaCB0ZWxscyB3 ZWF0aGVyIHRoZSBjaGFyYWN0ZXIKKyAgaXMgYSB1cHBlcmNhc2UgY2hhcmFjdGVyIG9yIG5vdCwg Zm9yIGNsaWVudCBjaGFyYWN0ZXIgc2V0CisqLworZXh0ZXJuICJDIgoraW50IG15c3FsX3N0cmlu Z19jaGFyYWN0ZXJfaXN1cHBlcihpbnQgY2hhcl90eXBlKQoreworICByZXR1cm4gKGNoYXJfdHlw ZSAmIF9NWV9VKTsKK30KKworLyogIAorICBUaGlzIGlzIHBsdWdpbiBzZXJ2aWNlIGZ1bmN0aW9u IHdoaWNoIHRlbGxzIHdlYXRoZXIgdGhlIGNoYXJhY3RlcgorICBpcyBhIGxvd2VyY2FzZSBjaGFy YWN0ZXIgb3Igbm90LCBmb3IgY2xpZW50IGNoYXJhY3RlciBzZXQKKyovCitleHRlcm4gIkMiCitp bnQgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2xvd2VyKGludCBjaGFyX3R5cGUpCit7CisgIHJl dHVybiAoY2hhcl90eXBlICYgX01ZX0wpOworfQorCisvKiAgCisgIFRoaXMgaXMgcGx1Z2luIHNl cnZpY2UgZnVuY3Rpb24gd2hpY2ggdGVsbHMgd2VhdGhlciB0aGUgY2hhcmFjdGVyCisgIGlzIGEg ZGlnaXQgb3Igbm90LCBmb3IgY2xpZW50IGNoYXJhY3RlciBzZXQKKyovCitleHRlcm4gIkMiCitp bnQgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9pc2RpZ2l0KGludCBjaGFyX3R5cGUpCit7CisgIHJl dHVybiAoY2hhcl90eXBlICYgX01ZX05NUik7Cit9CisKKy8qICAKKyAgVGhpcyBpcyBwbHVnaW4g c2VydmljZSBmdW5jdGlvbiB3aGljaCBldmFsdWF0ZSB0aGUgY3R5cGUgYW5kCisgIHJldHVybnMg dGhlIGNoYXJhY3RlciBsZW5ndGgsIGZvciBjbGllbnQgY2hhcmFjdGVyIHNldC4KKyovCitleHRl cm4gIkMiCitpbnQgbXlzcWxfc3RyaW5nX2NoYXJhY3Rlcl9jdHlwZShteXNxbF9zdHJpbmdfcHRy IHN0cmluZ19wdHIsIGludCAqY2hhcl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqY3VycmVudF9wdHIpCit7CisgIFN0cmluZyAqc3RyPSAoU3RyaW5n ICopIHN0cmluZ19wdHI7CisgIGNvbnN0IENIQVJTRVRfSU5GTyAqY3M9IHN0ci0+Y2hhcnNldCgp OworICBjaGFyICplbmQ9IChjaGFyKikgc3RyLT5wdHIoKSArIHN0ci0+bGVuZ3RoKCk7CisgIHJl dHVybiAoY3MtPmNzZXQtPmN0eXBlKGNzLCBjaGFyX3R5cGUsICh1Y2hhciopIGN1cnJlbnRfcHRy LAorICAgICAgICAgICAgICAgICAgICAgICAgICAodWNoYXIqKSBlbmQpKTsKIH0KIAotLyogVGhp cyBmdW5jdGlvbiBwcm92aWRlIHBsdWdpbiBzZXJ2aWNlIHRvIGNvbnZlcnQgYSBTdHJpbmcgaW50 bwotICAgbG93ZXIgY2FzZS4gQ29udmVyc2lvbiBkZXBlbmRzIG9uIHRoZSBjbGluZXQgY2hhcmFj dGVyIHNldCBpbmZvCisvKiAgCisgIFRoaXMgZnVuY3Rpb24gcHJvdmlkZSBwbHVnaW4gc2Vydmlj ZSB0byBjb252ZXJ0IGEgU3RyaW5nIGludG8KKyAgbG93ZXIgY2FzZS4gQ29udmVyc2lvbiBkZXBl bmRzIG9uIHRoZSBjbGllbnQgY2hhcmFjdGVyIHNldCBpbmZvCiAqLwogZXh0ZXJuICJDIgotY29u c3QgY2hhciAqcGFzc3dvcmRfc3RyaW5nX2Nhc2Vkbih2b2lkICpwYXNzd29yZCkKK2NvbnN0IGNo YXIgKm15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY2FzZWRuKG15c3FsX3N0cmluZ19wdHIgc3RyaW5n X3B0cikKIHsKLSAgU3RyaW5nICpwYXNzd29yZF9zdHI9IChTdHJpbmcgKikgcGFzc3dvcmQ7Ci0g IGNvbnN0IENIQVJTRVRfSU5GTyAqY3M9IHBhc3N3b3JkX3N0ci0+Y2hhcnNldCgpOwotICBTdHJp bmcgdG1wX3Bhc3N3b3JkX3N0cjsKKyAgU3RyaW5nICpzdHI9IChTdHJpbmcgKikgc3RyaW5nX3B0 cjsKKyAgU3RyaW5nIHRlbXBfc3RyOworICBjb25zdCBDSEFSU0VUX0lORk8gKmNzPSBzdHItPmNo YXJzZXQoKTsKKyAKICAgaWYgKGNzLT5jYXNlZG5fbXVsdGlwbHkgPT0gMSkKICAgewogICAgIHVp bnQgbGVuOwotICAgIGxlbj0gY3MtPmNzZXQtPmNhc2VkbihjcywgKGNoYXIqKSBwYXNzd29yZF9z dHItPnB0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZF9zdHItPmxlbmd0 aCgpLCAoY2hhciopIHBhc3N3b3JkX3N0ci0+cHRyKCksCi0gICAgICAgICAgICAgICAgICAgICAg ICAgIHBhc3N3b3JkX3N0ci0+bGVuZ3RoKCkpOwotICAgIHBhc3N3b3JkX3N0ci0+bGVuZ3RoKGxl bik7CisgICAgbGVuPSBjcy0+Y3NldC0+Y2FzZWRuKGNzLCAoY2hhciopIHN0ci0+cHRyKCksIHN0 ci0+bGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKikgc3RyLT5wdHIo KSwgc3RyLT5sZW5ndGgoKSk7CisgICAgc3RyLT5sZW5ndGgobGVuKTsKICAgfQogICBlbHNlCiAg IHsKLSAgICB1aW50IGxlbj0gcGFzc3dvcmRfc3RyLT5sZW5ndGgoKSAqIGNzLT5jYXNlZG5fbXVs dGlwbHk7Ci0gICAgdG1wX3Bhc3N3b3JkX3N0ci5hbGxvYyhsZW4pOwotICAgIHRtcF9wYXNzd29y ZF9zdHIuc2V0X2NoYXJzZXQoY3MpOwotICAgIGxlbj0gY3MtPmNzZXQtPmNhc2VkbihjcywgKGNo YXIqKSBwYXNzd29yZF9zdHItPnB0cigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNz d29yZF9zdHItPmxlbmd0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopIHRt cF9wYXNzd29yZF9zdHIucHRyKCksIGxlbik7Ci0gICAgdG1wX3Bhc3N3b3JkX3N0ci5sZW5ndGgo bGVuKTsKLSAgICBwYXNzd29yZF9zdHI9ICZ0bXBfcGFzc3dvcmRfc3RyOworICAgIHVpbnQgbGVu PSBzdHItPmxlbmd0aCgpICogY3MtPmNhc2Vkbl9tdWx0aXBseTsKKyAgICB0ZW1wX3N0ci5hbGxv YyhsZW4pOworICAgIHRlbXBfc3RyLnNldF9jaGFyc2V0KGNzKTsKKyAgICBsZW49IGNzLT5jc2V0 LT5jYXNlZG4oY3MsIChjaGFyKikgc3RyLT5wdHIoKSwgc3RyLT5sZW5ndGgoKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNoYXIqKSB0ZW1wX3N0ci5wdHIoKSwgbGVuKTsKKyAgICB0ZW1w X3N0ci5sZW5ndGgobGVuKTsKKyAgICBzdHI9ICZ0ZW1wX3N0cjsKICAgfQotICByZXR1cm4gcGFz c3dvcmRfc3RyLT5wdHIoKTsKKyAgcmV0dXJuIChzdHItPnB0cigpKTsKIH0KCj09PSBtb2RpZmll ZCBmaWxlICdzcWwvc3FsX3BsdWdpbi5oJwotLS0gYS9zcWwvc3FsX3BsdWdpbi5oCTIwMTItMDUt MTAgMTA6NTQ6MzcgKzAwMDAKKysrIGIvc3FsL3NxbF9wbHVnaW4uaAkyMDEyLTA1LTE0IDExOjE4 OjEzICswMDAwCkBAIC0xMzgsNiArMTM4LDcgQEAgZXh0ZXJuIElfTGlzdDxpX3N0cmluZz4gKm9w dF9wbHVnaW5fbG9hZAogZXh0ZXJuIGNoYXIgKm9wdF9wbHVnaW5fZGlyX3B0cjsKIGV4dGVybiBj aGFyIG9wdF9wbHVnaW5fZGlyW0ZOX1JFRkxFTl07CiBleHRlcm4gY29uc3QgTEVYX1NUUklORyBw bHVnaW5fdHlwZV9uYW1lc1tdOworCiBleHRlcm4gaW50IHBsdWdpbl9pbml0KGludCAqYXJnYywg Y2hhciAqKmFyZ3YsIGludCBpbml0X2ZsYWdzKTsKIGV4dGVybiB2b2lkIHBsdWdpbl9zaHV0ZG93 bih2b2lkKTsKIHZvaWQgYWRkX3BsdWdpbl9vcHRpb25zKHN0ZDo6dmVjdG9yPG15X29wdGlvbj4g Km9wdGlvbnMsIE1FTV9ST09UICptZW1fcm9vdCk7Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3FsL3Nx bF9wbHVnaW5fc2VydmljZXMuaCcKLS0tIGEvc3FsL3NxbF9wbHVnaW5fc2VydmljZXMuaAkyMDEy LTA1LTEwIDEwOjU0OjM3ICswMDAwCisrKyBiL3NxbC9zcWxfcGx1Z2luX3NlcnZpY2VzLmgJMjAx Mi0wNS0xNCAxMToxODoxMyArMDAwMApAQCAtNTAsMTIgKzUwLDE2IEBAIHN0YXRpYyBzdHJ1Y3Qg bXlfcGx1Z2luX2xvZ19zZXJ2aWNlIG15X3AKICAgbXlfcGx1Z2luX2xvZ19tZXNzYWdlCiB9Owog Ci1zdGF0aWMgc3RydWN0IHBhc3N3b3JkX3N0cmluZ19zZXJ2aWNlX3N0IHBhc3N3b3JkX3N0cmlu Z19oYW5kbGVyPSB7Ci0gIHBhc3N3b3JkX3N0cmluZ19jYXNlLAotICBwYXNzd29yZF9zdHJpbmdf Y2FzZWRuLAorc3RhdGljIHN0cnVjdCBteXNxbF9zdHJpbmdfc2VydmljZV9zdCBteXNxbF9zdHJp bmdfaGFuZGxlcj0geworICBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2JlZywKKyAgbXlzcWxfc3Ry aW5nX2NoYXJhY3Rlcl9lbmQsCisgIG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfY2FzZWRuLAorICBt eXNxbF9zdHJpbmdfY2hhcmFjdGVyX2N0eXBlLAorICBteXNxbF9zdHJpbmdfY2hhcmFjdGVyX2lz dXBwZXIsCisgIG15c3FsX3N0cmluZ19jaGFyYWN0ZXJfaXNsb3dlciwKKyAgbXlzcWxfc3RyaW5n X2NoYXJhY3Rlcl9pc2RpZ2l0LAogfTsKIAotCiBzdGF0aWMgc3RydWN0IHN0X3NlcnZpY2VfcmVm IGxpc3Rfb2Zfc2VydmljZXNbXT0KIHsKICAgeyAibXlfc25wcmludGZfc2VydmljZSIsIFZFUlNJ T05fbXlfc25wcmludGYsICZteV9zbnByaW50Zl9oYW5kbGVyIH0sCkBAIC02NCw3ICs2OCw3IEBA IHN0YXRpYyBzdHJ1Y3Qgc3Rfc2VydmljZV9yZWYgbGlzdF9vZl9zZXIKICAgeyAibXlfdGhyZWFk X3NjaGVkdWxlcl9zZXJ2aWNlIiwKICAgICBWRVJTSU9OX215X3RocmVhZF9zY2hlZHVsZXIsICZt eV90aHJlYWRfc2NoZWR1bGVyX2hhbmRsZXIgfSwKICAgeyAibXlfcGx1Z2luX2xvZ19zZXJ2aWNl IiwgVkVSU0lPTl9teV9wbHVnaW5fbG9nLCAmbXlfcGx1Z2luX2xvZ19oYW5kbGVyIH0sCi0gIHsg InBhc3N3b3JkX3N0cmluZ19zZXJ2aWNlIiwKLSAgICBWRVJTSU9OX3Bhc3N3b3JkX3N0cmluZywg JnBhc3N3b3JkX3N0cmluZ19oYW5kbGVyIH0sCisgIHsgIm15c3FsX3N0cmluZ19zZXJ2aWNlIiwK KyAgICBWRVJTSU9OX215c3FsX3N0cmluZywgJm15c3FsX3N0cmluZ19oYW5kbGVyIH0sCiB9Owog CgpObyBidW5kbGUgKHJlYXNvbjogdXNlbGVzcyBmb3IgcHVzaCBlbWFpbHMpLg==