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: Tomas Mraz To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: - new upstream version fixing CVE-2010-3864 (#649304) Date: Tue, 09 Jun 2026 12:42:17 GMT Message-ID: <178100893709.1.18091933973584440850.rpms-openssl-3ff2d49a83bc@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: 3ff2d49a83bc6aed93deba67ad602802de9e38e2 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzbApCcmFu Y2ggOiByZWJhc2VfNDBiZXRhCkNvbW1pdCA6IDNmZjJkNDlhODNiYzZhZWQ5M2RlYmE2N2FkNjAy ODAyZGU5ZTM4ZTIKQXV0aG9yIDogVG9tYXMgTXJheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+ CkRhdGUgICA6IDIwMTAtMTEtMTZUMTg6MjE6MzkrMDE6MDAKU3RhdHMgIDogKzI5MTQvLTI5MTQg aW4gNyBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMv b3BlbnNzbC9jLzNmZjJkNDlhODNiYzZhZWQ5M2RlYmE2N2FkNjAyODAyZGU5ZTM4ZTI/YnJhbmNo PXJlYmFzZV80MGJldGEKCkxvZzoKLSBuZXcgdXBzdHJlYW0gdmVyc2lvbiBmaXhpbmcgQ1ZFLTIw MTAtMzg2NCAoIzY0OTMwNCkKCi0tLQpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMC1iZXRhNC1h ZXNuaS5wYXRjaCBiL29wZW5zc2wtMS4wLjAtYmV0YTQtYWVzbmkucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGY1NzkxOGIuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMC1i ZXRhNC1hZXNuaS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzODggKzAsMCBAQAotZGlmZiAt dXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9Db25maWd1cmUuYWVzbmkgb3BlbnNzbC0xLjAuMC1iZXRh NC9Db25maWd1cmUKLS0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L0NvbmZpZ3VyZS5hZXNuaQkyMDEw LTAxLTA3IDIzOjM4OjMxLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQv Q29uZmlndXJlCTIwMTAtMDEtMTIgMjI6MTg6MDYuMDAwMDAwMDAwICswMTAwCi1AQCAtMTIzLDEx ICsxMjMsMTEgQEAgbXkgJHRsaWI9Ii1sbnNsIC1sc29ja2V0IjsKLSBteSAkYml0czE9IlRISVJU WV9UV09fQklUICI7Ci0gbXkgJGJpdHMyPSJTSVhUWV9GT1VSX0JJVCAiOwotIAotLW15ICR4ODZf YXNtPSJ4ODZjcHVpZC5vOmJuLTU4Ni5vIGNvLTU4Ni5vIHg4Ni1tb250Lm86ZGVzLTU4Ni5vIGNy eXB0NTg2Lm86YWVzLTU4Ni5vOmJmLTU4Ni5vOm1kNS01ODYubzpzaGExLTU4Ni5vIHNoYTI1Ni01 ODYubyBzaGE1MTItNTg2Lm86Y2FzdC01ODYubzpyYzQtNTg2Lm86cm1kLTU4Ni5vOnJjNS01ODYu bzp3cF9ibG9jay5vIHdwLW1teC5vOmNtbGwteDg2Lm8iOwotK215ICR4ODZfYXNtPSJ4ODZjcHVp ZC5vOmJuLTU4Ni5vIGNvLTU4Ni5vIHg4Ni1tb250Lm86ZGVzLTU4Ni5vIGNyeXB0NTg2Lm86YWVz LTU4Ni5vIGFlc25pLXg4Ni5vOmJmLTU4Ni5vOm1kNS01ODYubzpzaGExLTU4Ni5vIHNoYTI1Ni01 ODYubyBzaGE1MTItNTg2Lm86Y2FzdC01ODYubzpyYzQtNTg2Lm86cm1kLTU4Ni5vOnJjNS01ODYu bzp3cF9ibG9jay5vIHdwLW1teC5vOmNtbGwteDg2Lm8iOwotIAotIG15ICR4ODZfZWxmX2FzbT0i JHg4Nl9hc206ZWxmIjsKLSAKLS1teSAkeDg2XzY0X2FzbT0ieDg2XzY0Y3B1aWQubzp4ODZfNjQt Z2NjLm8geDg2XzY0LW1vbnQubzo6YWVzLXg4Nl82NC5vOjptZDUteDg2XzY0Lm86c2hhMS14ODZf NjQubyBzaGEyNTYteDg2XzY0Lm8gc2hhNTEyLXg4Nl82NC5vOjpyYzQteDg2XzY0Lm86Ojp3cC14 ODZfNjQubzpjbWxsLXg4Nl82NC5vIGNtbGxfbWlzYy5vIjsKLStteSAkeDg2XzY0X2FzbT0ieDg2 XzY0Y3B1aWQubzp4ODZfNjQtZ2NjLm8geDg2XzY0LW1vbnQubzo6YWVzLXg4Nl82NC5vIGFlc25p LXg4Nl82NC5vOjptZDUteDg2XzY0Lm86c2hhMS14ODZfNjQubyBzaGEyNTYteDg2XzY0Lm8gc2hh NTEyLXg4Nl82NC5vOjpyYzQteDg2XzY0Lm86Ojp3cC14ODZfNjQubzpjbWxsLXg4Nl82NC5vIGNt bGxfbWlzYy5vIjsKLSBteSAkaWE2NF9hc209ImlhNjRjcHVpZC5vOmJuLWlhNjQubzo6YWVzX2Nv cmUubyBhZXNfY2JjLm8gYWVzLWlhNjQubzo6bWQ1LWlhNjQubzpzaGExLWlhNjQubyBzaGEyNTYt aWE2NC5vIHNoYTUxMi1pYTY0Lm86OnJjNC1pYTY0Lm8gcmM0X3NrZXkubzo6Ojo6dm9pZCI7Ci0g bXkgJHNwYXJjdjlfYXNtPSJzcGFyY3Y5Y2FwLm8gc3BhcmNjcHVpZC5vOmJuLXNwYXJjdjkubyBz cGFyY3Y5LW1vbnQubyBzcGFyY3Y5YS1tb250Lm86ZGVzX2VuYy1zcGFyYy5vIGZjcnlwdF9iLm86 YWVzX2NvcmUubyBhZXNfY2JjLm8gYWVzLXNwYXJjdjkubzo6OnNoYTEtc3BhcmN2OS5vIHNoYTI1 Ni1zcGFyY3Y5Lm8gc2hhNTEyLXNwYXJjdjkubzo6Ojo6Ojp2b2lkIjsKLSBteSAkc3BhcmN2OF9h c209IjpzcGFyY3Y4Lm86ZGVzX2VuYy1zcGFyYy5vIGZjcnlwdF9iLm86Ojo6Ojo6Ojo6OnZvaWQi OwotQEAgLTQ5MSw3ICs0OTEsNyBAQCBteSAldGFibGU9KAotICMKLSAjIFdpbjY0IHRhcmdldHMs IFdJTjY0SSBkZW5vdGVzIElBLTY0IGFuZCBXSU42NEEgLSBBTUQ2NAotICJWQy1XSU42NEkiLCJj bDotVzMgLUdzMCAtR3kgLW5vbG9nbyAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xF QU5fQU5EX01FQU4gLURMX0VORElBTiAtRFVOSUNPREUgLURfVU5JQ09ERSAtRF9DUlRfU0VDVVJF X05PX0RFUFJFQ0FURTo6OldJTjY0STo6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERFU19J TlQgRVhQT1JUX1ZBUl9BU19GTjppYTY0Y3B1aWQubzppYTY0Lm86OmFlc19jb3JlLm8gYWVzX2Ni Yy5vIGFlcy1pYTY0Lm86Om1kNS1pYTY0Lm86c2hhMS1pYTY0Lm8gc2hhMjU2LWlhNjQubyBzaGE1 MTItaWE2NC5vOjo6Ojo6Omlhczp3aW4zMiIsCi0tIlZDLVdJTjY0QSIsImNsOi1XMyAtR3MwIC1H eSAtbm9sb2dvIC1ET1BFTlNTTF9TWVNOQU1FX1dJTjMyIC1EV0lOMzJfTEVBTl9BTkRfTUVBTiAt RExfRU5ESUFOIC1EVU5JQ09ERSAtRF9VTklDT0RFIC1EX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRF Ojo6V0lONjRBOjpTSVhUWV9GT1VSX0JJVCBSQzRfQ0hVTktfTEwgREVTX0lOVCBFWFBPUlRfVkFS X0FTX0ZOOng4Nl82NGNwdWlkLm86Ym5fYXNtLm8geDg2XzY0LW1vbnQubzo6YWVzLXg4Nl82NC5v OjptZDUteDg2XzY0Lm86c2hhMS14ODZfNjQubyBzaGEyNTYteDg2XzY0Lm8gc2hhNTEyLXg4Nl82 NC5vOjpyYzQteDg2XzY0Lm86Ojp3cC14ODZfNjQubzpjbWxsLXg4Nl82NC5vIGNtbGxfbWlzYy5v OmF1dG86d2luMzIiLAotKyJWQy1XSU42NEEiLCJjbDotVzMgLUdzMCAtR3kgLW5vbG9nbyAtRE9Q RU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRFVO SUNPREUgLURfVU5JQ09ERSAtRF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTo6OldJTjY0QTo6U0lY VFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERFU19JTlQgRVhQT1JUX1ZBUl9BU19GTjp4ODZfNjRj cHVpZC5vOmJuX2FzbS5vIHg4Nl82NC1tb250Lm86OmFlcy14ODZfNjQubyBhZXNuaS14ODZfNjQu bzo6bWQ1LXg4Nl82NC5vOnNoYTEteDg2XzY0Lm8gc2hhMjU2LXg4Nl82NC5vIHNoYTUxMi14ODZf NjQubzo6cmM0LXg4Nl82NC5vOjo6d3AteDg2XzY0Lm86Y21sbC14ODZfNjQubyBjbWxsX21pc2Mu bzphdXRvOndpbjMyIiwKLSAjIHg4NiBXaW4zMiB0YXJnZXQgZGVmYXVsdHMgdG8gQU5TSSBBUEks IGlmIHlvdSB3YW50IFVOSUNPREUsIGNvbXBsZW1lbnQKLSAjICdwZXJsIENvbmZpZ3VyZSBWQy1X SU4zMicgd2l0aCAnLURVTklDT0RFIC1EX1VOSUNPREUnCi0gIlZDLVdJTjMyIiwiY2w6LVczIC1X WCAtR3MwIC1HRiAtR3kgLW5vbG9nbyAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xF QU5fQU5EX01FQU4gLURMX0VORElBTiAtRF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTo6OldJTjMy OjpCTl9MTE9ORyBSQzRfSU5ERVggRVhQT1JUX1ZBUl9BU19GTiAke3g4Nl9nY2Nfb3B0c306JHt4 ODZfYXNtfTp3aW4zMm46d2luMzIiLAotQEAgLTE0MTAsNiArMTQxMCw3IEBAIGlmICgkcm1kMTYw X29iaiA9fiAvXC5vJC8pCi0gaWYgKCRhZXNfb2JqID1+IC9cLm8kLykKLSAJewotIAkkY2ZsYWdz Lj0iIC1EQUVTX0FTTSI7Ci0rCSRhZXNfb2JqID1+IHMvXHMqYWVzbmlcLXg4Nlwuby8vIGlmICgk bm9fc3NlMik7Ci0gCX0KLSBlbHNlCXsKLSAJJGFlc19vYmo9JGFlc19lbmM7Ci1kaWZmIC11cCBv cGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9hZXMvYXNtL2Flc25pLXg4Ni5wbC5hZXNuaSBvcGVu c3NsLTEuMC4wLWJldGE0L2NyeXB0by9hZXMvYXNtL2Flc25pLXg4Ni5wbAotLS0tIG9wZW5zc2wt MS4wLjAtYmV0YTQvY3J5cHRvL2Flcy9hc20vYWVzbmkteDg2LnBsLmFlc25pCTIwMTAtMDEtMTIg MjI6MTg6MDYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8v YWVzL2FzbS9hZXNuaS14ODYucGwJMjAxMC0wMS0xMiAyMjoxODowNi4wMDAwMDAwMDAgKzAxMDAK LUBAIC0wLDAgKzEsNzY1IEBACi0rIyEvdXNyL2Jpbi9lbnYgcGVybAotKwotKyMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLSsjIFdyaXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9AZnkuY2hhbG1lcnMuc2U+IGZv ciB0aGUgT3BlblNTTAotKyMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBs aWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAotKyMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRp bmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKLSsjIGRldGFpbHMgc2VlIGh0 dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dhbXMvLgotKyMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LSsjCi0rIyBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEludGVsIEFFUy1OSSBl eHRlbnNpb24uIEluCi0rIyBPcGVuU1NMIGNvbnRleHQgaXQncyB1c2VkIHdpdGggSW50ZWwgZW5n aW5lLCBidXQgY2FuIGFsc28gYmUgdXNlZCBhcwotKyMgZHJvcC1pbiByZXBsYWNlbWVudCBmb3Ig Y3J5cHRvL2Flcy9hc20vYWVzLTU4Ni5wbCBbc2VlIGJlbG93IGZvcgotKyMgZGV0YWlsc10uCi0r Ci0rJFBSRUZJWD0iYWVzbmkiOwkjIGlmICRQUkVGSVggaXMgc2V0IHRvICJBRVMiLCB0aGUgc2Ny aXB0Ci0rCQkJIyBnZW5lcmF0ZXMgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IKLSsJCQkjIGNyeXB0 by9hZXMvYXNtL2Flcy01ODYucGw6LSkKLSsKLSskMCA9fiBtLyguKltcL1xcXSlbXlwvXFxdKyQv OyAkZGlyPSQxOwotK3B1c2goQElOQywiJHtkaXJ9IiwiJHtkaXJ9Li4vLi4vcGVybGFzbSIpOwot K3JlcXVpcmUgIng4NmFzbS5wbCI7Ci0rCi0rJmFzbV9pbml0KCRBUkdWWzBdLCQwKTsKLSsKLSsk bW92ZWtleSA9IGV2YWwoJFJSRUZJWCBlcSAiYXNlbmkiID8gIiptb3ZhcHMiIDogIiptb3Z1cHMi KTsKLSsKLSskbGVuPSJlYXgiOwotKyRyb3VuZHM9ImVjeCI7Ci0rJGtleT0iZWR4IjsKLSskaW5w PSJlc2kiOwotKyRvdXQ9ImVkaSI7Ci0rJHJvdW5kc189ImVieCI7CSMgYmFja3VwIGNvcHkgZm9y ICRyb3VuZHMKLSska2V5Xz0iZWJwIjsJIyBiYWNrdXAgY29weSBmb3IgJGtleQotKwotKyRpbm91 dDA9InhtbTAiOwotKyRpbm91dDE9InhtbTEiOwotKyRpbm91dDI9InhtbTIiOwotKyRybmRrZXkw PSJ4bW0zIjsKLSskcm5ka2V5MT0ieG1tNCI7Ci0rJGl2ZWM9InhtbTUiOwotKyRpbjA9InhtbTYi OwotKyRpbjE9InhtbTciOwkkaW5vdXQzPSJ4bW03IjsKLSsKLSsjIElubGluZSB2ZXJzaW9uIG9m IGludGVybmFsIGFlc25pX1tlbnxkZV1jcnlwdDEKLStzdWIgYWVzbmlfaW5saW5lX2dlbmVyYXRl MQotK3sgbXkgJHA9c2hpZnQ7Ci0rCi0rICAgICYkbW92ZWtleQkJKCRybmRrZXkwLCZRV1AoMCwk a2V5KSk7Ci0rICAgICYkbW92ZWtleQkJKCRybmRrZXkxLCZRV1AoMTYsJGtleSkpOwotKyAgICAm bGVhCQkoJGtleSwmRFdQKDMyLCRrZXkpKTsKLSsgICAgJnB4b3IJCSgkaW5vdXQwLCRybmRrZXkw KTsKLSsgICAgJnNldF9sYWJlbCgiJHtwfTFfbG9vcCIpOwotKwlldmFsIiZhZXMke3B9CSgkaW5v dXQwLCRybmRrZXkxKSI7Ci0rCSZkZWMJCSgkcm91bmRzKTsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5 MSwmUVdQKDAsJGtleSkpOwotKwkmbGVhCQkoJGtleSwmRFdQKDE2LCRrZXkpKTsKLSsgICAgJmpu egkJKCZsYWJlbCgiJHtwfTFfbG9vcCIpKTsKLSsgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91 dDAsJHJuZGtleTEpIjsKLSt9Ci0rCi0rc3ViIGFlc25pX2dlbmVyYXRlMQkjIGZ1bGx5IHVucm9s bGVkIGxvb3AKLSt7IG15ICRwPXNoaWZ0OwotKwotKyAgICAmZnVuY3Rpb25fYmVnaW5fQigiX2Fl c25pXyR7cH1yeXB0MSIpOwotKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7Ci0r CSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgweDEwLCRrZXkpKTsKLSsJJmNtcAkJKCRyb3VuZHMs MTEpOwotKwkmcHhvcgkJKCRpbm91dDAsJHJuZGtleTApOwotKwkmJG1vdmVrZXkJKCRybmRrZXkw LCZRV1AoMHgyMCwka2V5KSk7Ci0rCSZsZWEJCSgka2V5LCZEV1AoMHgzMCwka2V5KSk7Ci0rCSZq YgkJKCZsYWJlbCgiJHtwfTEyOCIpKTsKLSsJJmxlYQkJKCRrZXksJkRXUCgweDIwLCRrZXkpKTsK LSsJJmplCQkoJmxhYmVsKCIke3B9MTkyIikpOwotKwkmbGVhCQkoJGtleSwmRFdQKDB4MjAsJGtl eSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7Ci0rCSYkbW92ZWtleQko JHJuZGtleTEsJlFXUCgtMHg0MCwka2V5KSk7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJu ZGtleTApIjsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKC0weDMwLCRrZXkpKTsKLSsgICAg JnNldF9sYWJlbCgiJHtwfTE5MiIpOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkx KSI7Ci0rCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgtMHgyMCwka2V5KSk7Ci0rCWV2YWwiJmFl cyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKC0w eDEwLCRrZXkpKTsKLSsgICAgJnNldF9sYWJlbCgiJHtwfTEyOCIpOwotKwlldmFsIiZhZXMke3B9 CSgkaW5vdXQwLCRybmRrZXkxKSI7Ci0rCSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgwLCRrZXkp KTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MCkiOwotKwkmJG1vdmVrZXkJKCRy bmRrZXkwLCZRV1AoMHgxMCwka2V5KSk7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtl eTEpIjsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDB4MjAsJGtleSkpOwotKwlldmFsIiZh ZXMke3B9CSgkaW5vdXQwLCRybmRrZXkwKSI7Ci0rCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgw eDMwLCRrZXkpKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOwotKwkmJG1v dmVrZXkJKCRybmRrZXkxLCZRV1AoMHg0MCwka2V5KSk7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91 dDAsJHJuZGtleTApIjsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDB4NTAsJGtleSkpOwot KwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7Ci0rCSYkbW92ZWtleQkoJHJuZGtl eTEsJlFXUCgweDYwLCRrZXkpKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MCki OwotKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMHg3MCwka2V5KSk7Ci0rCWV2YWwiJmFlcyR7 cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKLSsgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDAs JHJuZGtleTApIjsKLSsgICAgJnJldCgpOwotKyAgICAmZnVuY3Rpb25fZW5kX0IoIl9hZXNuaV8k e3B9cnlwdDEiKTsKLSt9Ci0rCi0rIyB2b2lkICRQUkVGSVhfZW5jcnlwdCAoY29uc3Qgdm9pZCAq aW5wLHZvaWQgKm91dCxjb25zdCBBRVNfS0VZICprZXkpOwotKyMgJmFlc25pX2dlbmVyYXRlMSgi ZGVjIik7Ci0rJmZ1bmN0aW9uX2JlZ2luX0IoIiR7UFJFRklYfV9lbmNyeXB0Iik7Ci0rCSZtb3YJ KCJlYXgiLCZ3cGFyYW0oMCkpOwotKwkmbW92CSgka2V5LCZ3cGFyYW0oMikpOwotKwkmbW92dXBz CSgkaW5vdXQwLCZRV1AoMCwiZWF4IikpOwotKwkmbW92CSgkcm91bmRzLCZEV1AoMjQwLCRrZXkp KTsKLSsJJm1vdgkoImVheCIsJndwYXJhbSgxKSk7Ci0rCSZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUx KCJlbmMiKTsJIyAmY2FsbAkoIl9hZXNuaV9lbmNyeXB0MSIpOwotKwkmbW92dXBzCSgmUVdQKDAs ImVheCIpLCRpbm91dDApOwotKwkmcmV0CSgpOwotKyZmdW5jdGlvbl9lbmRfQigiJHtQUkVGSVh9 X2VuY3J5cHQiKTsKLSsKLSsjIHZvaWQgJFBSRUZJWF9kZWNyeXB0IChjb25zdCB2b2lkICppbnAs dm9pZCAqb3V0LGNvbnN0IEFFU19LRVkgKmtleSk7Ci0rIyAmYWVzbmlfZ2VuZXJhdGUxKCJkZWMi KTsKLSsmZnVuY3Rpb25fYmVnaW5fQigiJHtQUkVGSVh9X2RlY3J5cHQiKTsKLSsJJm1vdgkoImVh eCIsJndwYXJhbSgwKSk7Ci0rCSZtb3YJKCRrZXksJndwYXJhbSgyKSk7Ci0rCSZtb3Z1cHMJKCRp bm91dDAsJlFXUCgwLCJlYXgiKSk7Ci0rCSZtb3YJKCRyb3VuZHMsJkRXUCgyNDAsJGtleSkpOwot KwkmbW92CSgiZWF4Iiwmd3BhcmFtKDEpKTsKLSsJJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImRl YyIpOwkjICZjYWxsCSgiX2Flc25pX2RlY3J5cHQxIik7Ci0rCSZtb3Z1cHMJKCZRV1AoMCwiZWF4 IiksJGlub3V0MCk7Ci0rCSZyZXQJKCk7Ci0rJmZ1bmN0aW9uX2VuZF9CKCIke1BSRUZJWH1fZGVj cnlwdCIpOwotKwwKLSsjIF9hZXNuaV9bZW58ZGVdY3J5cHRbMzRdIGFyZSBwcml2YXRlIGludGVy ZmFjZXMsIE4gZGVub3RlcyBpbnRlcmxlYXZlCi0rIyBmYWN0b3IuIFdoeSAzeCBzdWJyb3V0aW5l IGlzIHVzZWQgaW4gbG9vcHM/IEV2ZW4gdGhvdWdoIGFlc1tlbmN8ZGVjXQotKyMgbGF0ZW5jeSBp cyA2LCBpdCB0dXJuZWQgb3V0IHRoYXQgaXQgY2FuIGJlIHNjaGVkdWxlZCBvbmx5IGV2ZXJ5Ci0r IyAqc2Vjb25kKiBjeWNsZS4gVGh1cyAzeCBpbnRlcmxlYXZlIGlzIHRoZSBvbmUgcHJvdmlkaW5n IG9wdGltYWwKLSsjIHV0aWxpemF0aW9uLCBpLmUuIHdoZW4gc3Vicm91dGluZSdzIHRocm91Z2hw dXQgaXMgdmlydHVhbGx5IHNhbWUgYXMKLSsjIG9mIG5vbi1pbnRlcmxlYXZlZCBzdWJyb3V0aW5l IFtmb3IgbnVtYmVyIG9mIGlucHV0IGJsb2NrcyB1cCB0byAzXS4KLSsjIFRoaXMgaXMgd2h5IGl0 IG1ha2VzIG5vIHNlbnNlIHRvIGltcGxlbWVudCAyeCBzdWJyb3V0aW5lLiBBcyBzb29uCi0rIyBh cy9pZiBJbnRlbCBpbXByb3ZlcyB0aHJvdWdocHV0IGJ5IG1ha2luZyBpdCBwb3NzaWJsZSB0byBz Y2hlZHVsZQotKyMgdGhlIGluc3RydWN0aW9ucyBpbiBxdWVzdGlvbiAqZXZlcnkqIGN5Y2xlcyBJ IHdvdWxkIGhhdmUgdG8KLSsjIGltcGxlbWVudCA2eCBpbnRlcmxlYXZlIGFuZCB1c2UgaXQgaW4g bG9vcC4uLgotK3N1YiBhZXNuaV9nZW5lcmF0ZTMKLSt7IG15ICRwPXNoaWZ0OwotKwotKyAgICAm ZnVuY3Rpb25fYmVnaW5fQigiX2Flc25pXyR7cH1yeXB0MyIpOwotKwkmJG1vdmVrZXkJKCRybmRr ZXkwLCZRV1AoMCwka2V5KSk7Ci0rCSZzaHIJCSgkcm91bmRzLDEpOwotKwkmJG1vdmVrZXkJKCRy bmRrZXkxLCZRV1AoMTYsJGtleSkpOwotKwkmbGVhCQkoJGtleSwmRFdQKDMyLCRrZXkpKTsKLSsJ JnB4b3IJCSgkaW5vdXQwLCRybmRrZXkwKTsKLSsJJnB4b3IJCSgkaW5vdXQxLCRybmRrZXkwKTsK LSsJJnB4b3IJCSgkaW5vdXQyLCRybmRrZXkwKTsKLSsJJmptcAkJKCZsYWJlbCgiJHtwfTNfbG9v cCIpKTsKLSsgICAgJnNldF9sYWJlbCgiJHtwfTNfbG9vcCIsMTYpOwotKwlldmFsIiZhZXMke3B9 CSgkaW5vdXQwLCRybmRrZXkxKSI7Ci0rCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgwLCRrZXkp KTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MSwkcm5ka2V5MSkiOwotKwkmZGVjCQkoJHJvdW5k cyk7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDIsJHJuZGtleTEpIjsKLSsJJiRtb3Zla2V5CSgk cm5ka2V5MSwmUVdQKDE2LCRrZXkpKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5 MCkiOwotKwkmbGVhCQkoJGtleSwmRFdQKDMyLCRrZXkpKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlu b3V0MSwkcm5ka2V5MCkiOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQyLCRybmRrZXkwKSI7Ci0r CSZqbnoJCSgmbGFiZWwoIiR7cH0zX2xvb3AiKSk7Ci0rICAgIGV2YWwiJmFlcyR7cH0JKCRpbm91 dDAsJHJuZGtleTEpIjsKLSsgICAgJiRtb3Zla2V5CQkoJHJuZGtleTAsJlFXUCgwLCRrZXkpKTsK LSsgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0MSwkcm5ka2V5MSkiOwotKyAgICBldmFsIiZhZXMk e3B9CSgkaW5vdXQyLCRybmRrZXkxKSI7Ci0rICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQw LCRybmRrZXkwKSI7Ci0rICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQxLCRybmRrZXkwKSI7 Ci0rICAgIGV2YWwiJmFlcyR7cH1sYXN0CSgkaW5vdXQyLCRybmRrZXkwKSI7Ci0rICAgICZyZXQo KTsKLSsgICAgJmZ1bmN0aW9uX2VuZF9CKCJfYWVzbmlfJHtwfXJ5cHQzIik7Ci0rfQotKwotKyMg NHggaW50ZXJsZWF2ZSBpcyBpbXBsZW1lbnRlZCB0byBpbXByb3ZlIHNtYWxsIGJsb2NrIHBlcmZv cm1hbmNlLAotKyMgbW9zdCBub3RhYmx5IFthbmQgbmF0dXJhbGx5XSA0IGJsb2NrIGJ5IH4zMCUu IE9uZSBjYW4gYXJndWUgdGhhdCBvbmUKLSsjIHNob3VsZCBoYXZlIGltcGxlbWVudGVkIDV4IGFz IHdlbGwsIGJ1dCBpbXByb3ZlbWVudCAgd291bGQgYmUgPDIwJSwKLSsjIHNvIGl0J3Mgbm90IHdv cnRoIGl0Li4uCi0rc3ViIGFlc25pX2dlbmVyYXRlNAotK3sgbXkgJHA9c2hpZnQ7Ci0rCi0rICAg ICZmdW5jdGlvbl9iZWdpbl9CKCJfYWVzbmlfJHtwfXJ5cHQ0Iik7Ci0rCSYkbW92ZWtleQkoJHJu ZGtleTAsJlFXUCgwLCRrZXkpKTsKLSsJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDE2LCRrZXkp KTsKLSsJJnNocgkJKCRyb3VuZHMsMSk7Ci0rCSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOwot KwkmcHhvcgkJKCRpbm91dDAsJHJuZGtleTApOwotKwkmcHhvcgkJKCRpbm91dDEsJHJuZGtleTAp OwotKwkmcHhvcgkJKCRpbm91dDIsJHJuZGtleTApOwotKwkmcHhvcgkJKCRpbm91dDMsJHJuZGtl eTApOwotKwkmam1wCQkoJmxhYmVsKCIke3B9M19sb29wIikpOwotKyAgICAmc2V0X2xhYmVsKCIk e3B9M19sb29wIiwxNik7Ci0rCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKLSsJ JiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOwotKwlldmFsIiZhZXMke3B9CSgkaW5v dXQxLCRybmRrZXkxKSI7Ci0rCSZkZWMJCSgkcm91bmRzKTsKLSsJZXZhbCImYWVzJHtwfQkoJGlu b3V0Miwkcm5ka2V5MSkiOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQzLCRybmRrZXkxKSI7Ci0r CSYkbW92ZWtleQkoJHJuZGtleTEsJlFXUCgxNiwka2V5KSk7Ci0rCWV2YWwiJmFlcyR7cH0JKCRp bm91dDAsJHJuZGtleTApIjsKLSsJJmxlYQkJKCRrZXksJkRXUCgzMiwka2V5KSk7Ci0rCWV2YWwi JmFlcyR7cH0JKCRpbm91dDEsJHJuZGtleTApIjsKLSsJZXZhbCImYWVzJHtwfQkoJGlub3V0Miwk cm5ka2V5MCkiOwotKwlldmFsIiZhZXMke3B9CSgkaW5vdXQzLCRybmRrZXkwKSI7Ci0rCSZqbnoJ CSgmbGFiZWwoIiR7cH0zX2xvb3AiKSk7Ci0rICAgIGV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJu ZGtleTEpIjsKLSsgICAgJiRtb3Zla2V5CQkoJHJuZGtleTAsJlFXUCgwLCRrZXkpKTsKLSsgICAg ZXZhbCImYWVzJHtwfQkoJGlub3V0MSwkcm5ka2V5MSkiOwotKyAgICBldmFsIiZhZXMke3B9CSgk aW5vdXQyLCRybmRrZXkxKSI7Ci0rICAgIGV2YWwiJmFlcyR7cH0JKCRpbm91dDMsJHJuZGtleTEp IjsKLSsgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDAsJHJuZGtleTApIjsKLSsgICAgZXZh bCImYWVzJHtwfWxhc3QJKCRpbm91dDEsJHJuZGtleTApIjsKLSsgICAgZXZhbCImYWVzJHtwfWxh c3QJKCRpbm91dDIsJHJuZGtleTApIjsKLSsgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDMs JHJuZGtleTApIjsKLSsgICAgJnJldCgpOwotKyAgICAmZnVuY3Rpb25fZW5kX0IoIl9hZXNuaV8k e3B9cnlwdDQiKTsKLSt9Ci0rJmFlc25pX2dlbmVyYXRlMygiZW5jIikgaWYgKCRQUkVGSVggZXEg ImFlc25pIik7Ci0rJmFlc25pX2dlbmVyYXRlMygiZGVjIik7Ci0rJmFlc25pX2dlbmVyYXRlNCgi ZW5jIikgaWYgKCRQUkVGSVggZXEgImFlc25pIik7Ci0rJmFlc25pX2dlbmVyYXRlNCgiZGVjIik7 Ci0rCi0raWYgKCRQUkVGSVggZXEgImFlc25pIikgewotKyMgdm9pZCBhZXNuaV9lY2JfZW5jcnlw dCAoY29uc3Qgdm9pZCAqaW4sIHZvaWQgKm91dCwKLSsjICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVfdCBsZW5ndGgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSsjICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBlbmMpOwotKyZmdW5jdGlvbl9iZWdpbigiYWVzbmlfZWNiX2VuY3J5cHQiKTsK LSsJJm1vdgkoJGlucCwmd3BhcmFtKDApKTsKLSsJJm1vdgkoJG91dCwmd3BhcmFtKDEpKTsKLSsJ Jm1vdgkoJGxlbiwmd3BhcmFtKDIpKTsKLSsJJm1vdgkoJGtleSwmd3BhcmFtKDMpKTsKLSsJJm1v dgkoJHJvdW5kcywmd3BhcmFtKDQpKTsKLSsJJmNtcAkoJGxlbiwxNik7Ci0rCSZqYgkoJmxhYmVs KCJlY2JfcmV0IikpOwotKwkmYW5kCSgkbGVuLC0xNik7Ci0rCSZ0ZXN0CSgkcm91bmRzLCRyb3Vu ZHMpCi0rCSZtb3YJKCRyb3VuZHMsJkRXUCgyNDAsJGtleSkpOwotKwkmbW92CSgka2V5Xywka2V5 KTsJCSMgYmFja3VwICRrZXkKLSsJJm1vdgkoJHJvdW5kc18sJHJvdW5kcyk7CSMgYmFja3VwICRy b3VuZHMKLSsJJmp6CSgmbGFiZWwoImVjYl9kZWNyeXB0IikpOwotKwotKwkmc3ViCSgkbGVuLDB4 NDApOwotKwkmamJlCSgmbGFiZWwoImVjYl9lbmNfdGFpbCIpKTsKLSsJJmptcAkoJmxhYmVsKCJl Y2JfZW5jX2xvb3AzIikpOwotKwotKyZzZXRfbGFiZWwoImVjYl9lbmNfbG9vcDMiLDE2KTsKLSsJ Jm1vdnVwcwkoJGlub3V0MCwmUVdQKDAsJGlucCkpOwotKwkmbW92dXBzCSgkaW5vdXQxLCZRV1Ao MHgxMCwkaW5wKSk7Ci0rCSZtb3Z1cHMJKCRpbm91dDIsJlFXUCgweDIwLCRpbnApKTsKLSsJJmNh bGwJKCJfYWVzbmlfZW5jcnlwdDMiKTsKLSsJJnN1YgkoJGxlbiwweDMwKTsKLSsJJmxlYQkoJGlu cCwmRFdQKDB4MzAsJGlucCkpOwotKwkmbGVhCSgkb3V0LCZEV1AoMHgzMCwkb3V0KSk7Ci0rCSZt b3Z1cHMJKCZRV1AoLTB4MzAsJG91dCksJGlub3V0MCk7Ci0rCSZtb3YJKCRrZXksJGtleV8pOwkJ IyByZXN0b3JlICRrZXkKLSsJJm1vdnVwcwkoJlFXUCgtMHgyMCwkb3V0KSwkaW5vdXQxKTsKLSsJ Jm1vdgkoJHJvdW5kcywkcm91bmRzXyk7CSMgcmVzdG9yZSAkcm91bmRzCi0rCSZtb3Z1cHMJKCZR V1AoLTB4MTAsJG91dCksJGlub3V0Mik7Ci0rCSZqYQkoJmxhYmVsKCJlY2JfZW5jX2xvb3AzIikp OwotKwotKyZzZXRfbGFiZWwoImVjYl9lbmNfdGFpbCIpOwotKwkmYWRkCSgkbGVuLDB4NDApOwot KwkmanoJKCZsYWJlbCgiZWNiX3JldCIpKTsKLSsKLSsJJmNtcAkoJGxlbiwweDEwKTsKLSsJJm1v dnVwcwkoJGlub3V0MCwmUVdQKDAsJGlucCkpOwotKwkmamUJKCZsYWJlbCgiZWNiX2VuY19vbmUi KSk7Ci0rCSZjbXAJKCRsZW4sMHgyMCk7Ci0rCSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgweDEwLCRp bnApKTsKLSsJJmplCSgmbGFiZWwoImVjYl9lbmNfdHdvIikpOwotKwkmY21wCSgkbGVuLDB4MzAp OwotKwkmbW92dXBzCSgkaW5vdXQyLCZRV1AoMHgyMCwkaW5wKSk7Ci0rCSZqZQkoJmxhYmVsKCJl Y2JfZW5jX3RocmVlIikpOwotKwkmbW92dXBzCSgkaW5vdXQzLCZRV1AoMHgzMCwkaW5wKSk7Ci0r CSZjYWxsCSgiX2Flc25pX2VuY3J5cHQ0Iik7Ci0rCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5v dXQwKTsKLSsJJm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOwotKwkmbW92dXBzCSgm UVdQKDB4MjAsJG91dCksJGlub3V0Mik7Ci0rCSZtb3Z1cHMJKCZRV1AoMHgzMCwkb3V0KSwkaW5v dXQzKTsKLSsJam1wCSgmbGFiZWwoImVjYl9yZXQiKSk7Ci0rCi0rJnNldF9sYWJlbCgiZWNiX2Vu Y19vbmUiLDE2KTsKLSsJJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImVuYyIpOwkjICZjYWxsCSgi X2Flc25pX2VuY3J5cHQxIik7Ci0rCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKLSsJ JmptcAkoJmxhYmVsKCJlY2JfcmV0IikpOwotKwotKyZzZXRfbGFiZWwoImVjYl9lbmNfdHdvIiwx Nik7Ci0rCSZjYWxsCSgiX2Flc25pX2VuY3J5cHQzIik7Ci0rCSZtb3Z1cHMJKCZRV1AoMCwkb3V0 KSwkaW5vdXQwKTsKLSsJJm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOwotKwkmam1w CSgmbGFiZWwoImVjYl9yZXQiKSk7Ci0rCi0rJnNldF9sYWJlbCgiZWNiX2VuY190aHJlZSIsMTYp OwotKwkmY2FsbAkoIl9hZXNuaV9lbmNyeXB0MyIpOwotKwkmbW92dXBzCSgmUVdQKDAsJG91dCks JGlub3V0MCk7Ci0rCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKLSsJJm1vdnVw cwkoJlFXUCgweDIwLCRvdXQpLCRpbm91dDIpOwotKwkmam1wCSgmbGFiZWwoImVjYl9yZXQiKSk7 Ci0rCi0rJnNldF9sYWJlbCgiZWNiX2RlY3J5cHQiLDE2KTsKLSsJJnN1YgkoJGxlbiwweDQwKTsK LSsJJmpiZQkoJmxhYmVsKCJlY2JfZGVjX3RhaWwiKSk7Ci0rCSZqbXAJKCZsYWJlbCgiZWNiX2Rl Y19sb29wMyIpKTsKLSsKLSsmc2V0X2xhYmVsKCJlY2JfZGVjX2xvb3AzIiwxNik7Ci0rCSZtb3Z1 cHMJKCRpbm91dDAsJlFXUCgwLCRpbnApKTsKLSsJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAs JGlucCkpOwotKwkmbW92dXBzCSgkaW5vdXQyLCZRV1AoMHgyMCwkaW5wKSk7Ci0rCSZjYWxsCSgi X2Flc25pX2RlY3J5cHQzIik7Ci0rCSZzdWIJKCRsZW4sMHgzMCk7Ci0rCSZsZWEJKCRpbnAsJkRX UCgweDMwLCRpbnApKTsKLSsJJmxlYQkoJG91dCwmRFdQKDB4MzAsJG91dCkpOwotKwkmbW92dXBz CSgmUVdQKC0weDMwLCRvdXQpLCRpbm91dDApOwotKwkmbW92CSgka2V5LCRrZXlfKTsJCSMgcmVz dG9yZSAka2V5Ci0rCSZtb3Z1cHMJKCZRV1AoLTB4MjAsJG91dCksJGlub3V0MSk7Ci0rCSZtb3YJ KCRyb3VuZHMsJHJvdW5kc18pOwkjIHJlc3RvcmUgJHJvdW5kcwotKwkmbW92dXBzCSgmUVdQKC0w eDEwLCRvdXQpLCRpbm91dDIpOwotKwkmamEJKCZsYWJlbCgiZWNiX2RlY19sb29wMyIpKTsKLSsK LSsmc2V0X2xhYmVsKCJlY2JfZGVjX3RhaWwiKTsKLSsJJmFkZAkoJGxlbiwweDQwKTsKLSsJJmp6 CSgmbGFiZWwoImVjYl9yZXQiKSk7Ci0rCi0rCSZjbXAJKCRsZW4sMHgxMCk7Ci0rCSZtb3Z1cHMJ KCRpbm91dDAsJlFXUCgwLCRpbnApKTsKLSsJJmplCSgmbGFiZWwoImVjYl9kZWNfb25lIikpOwot KwkmY21wCSgkbGVuLDB4MjApOwotKwkmbW92dXBzCSgkaW5vdXQxLCZRV1AoMHgxMCwkaW5wKSk7 Ci0rCSZqZQkoJmxhYmVsKCJlY2JfZGVjX3R3byIpKTsKLSsJJmNtcAkoJGxlbiwweDMwKTsKLSsJ Jm1vdnVwcwkoJGlub3V0MiwmUVdQKDB4MjAsJGlucCkpOwotKwkmamUJKCZsYWJlbCgiZWNiX2Rl Y190aHJlZSIpKTsKLSsJJm1vdnVwcwkoJGlub3V0MywmUVdQKDB4MzAsJGlucCkpOwotKwkmY2Fs bAkoIl9hZXNuaV9kZWNyeXB0NCIpOwotKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7 Ci0rCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKLSsJJm1vdnVwcwkoJlFXUCgw eDIwLCRvdXQpLCRpbm91dDIpOwotKwkmbW92dXBzCSgmUVdQKDB4MzAsJG91dCksJGlub3V0Myk7 Ci0rCSZqbXAJKCZsYWJlbCgiZWNiX3JldCIpKTsKLSsKLSsmc2V0X2xhYmVsKCJlY2JfZGVjX29u ZSIsMTYpOwotKwkmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgiZGVjIik7CSMgJmNhbGwJKCJfYWVz bmlfZGVjcnlwdDMiKTsKLSsJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOwotKwkmam1w CSgmbGFiZWwoImVjYl9yZXQiKSk7Ci0rCi0rJnNldF9sYWJlbCgiZWNiX2RlY190d28iLDE2KTsK LSsJJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDMiKTsKLSsJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRp bm91dDApOwotKwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7Ci0rCSZqbXAJKCZs YWJlbCgiZWNiX3JldCIpKTsKLSsKLSsmc2V0X2xhYmVsKCJlY2JfZGVjX3RocmVlIiwxNik7Ci0r CSZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7Ci0rCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5v dXQwKTsKLSsJJm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOwotKwkmbW92dXBzCSgm UVdQKDB4MjAsJG91dCksJGlub3V0Mik7Ci0rCi0rJnNldF9sYWJlbCgiZWNiX3JldCIpOwotKyZm dW5jdGlvbl9lbmQoImFlc25pX2VjYl9lbmNyeXB0Iik7Ci0rfQotKwotKyMgdm9pZCAkUFJFRklY X2NiY19lbmNyeXB0IChjb25zdCB2b2lkICppbnAsIHZvaWQgKm91dCwKLSsjICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwgY29uc3QgQUVTX0tFWSAqa2V5LAotKyMgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICppdnAsY29uc3QgaW50IGVuYyk7 Ci0rJmZ1bmN0aW9uX2JlZ2luKCIke1BSRUZJWH1fY2JjX2VuY3J5cHQiKTsKLSsJJm1vdgkoJGlu cCwmd3BhcmFtKDApKTsKLSsJJm1vdgkoJG91dCwmd3BhcmFtKDEpKTsKLSsJJm1vdgkoJGxlbiwm d3BhcmFtKDIpKTsKLSsJJm1vdgkoJGtleSwmd3BhcmFtKDMpKTsKLSsJJnRlc3QJKCRsZW4sJGxl bik7Ci0rCSZtb3YJKCRrZXlfLCZ3cGFyYW0oNCkpOwotKwkmanoJKCZsYWJlbCgiY2JjX3JldCIp KTsKLSsKLSsJJmNtcAkoJndwYXJhbSg1KSwwKTsKLSsJJm1vdnVwcwkoJGl2ZWMsJlFXUCgwLCRr ZXlfKSk7CSMgbG9hZCBJVgotKwkmbW92CSgkcm91bmRzLCZEV1AoMjQwLCRrZXkpKTsKLSsJJm1v dgkoJGtleV8sJGtleSk7CQkjIGJhY2t1cCAka2V5Ci0rCSZtb3YJKCRyb3VuZHNfLCRyb3VuZHMp OwkjIGJhY2t1cCAkcm91bmRzCi0rCSZqZQkoJmxhYmVsKCJjYmNfZGVjcnlwdCIpKTsKLSsKLSsJ Jm1vdmFwcwkoJGlub3V0MCwkaXZlYyk7Ci0rCSZjbXAJKCRsZW4sMTYpOwotKwkmamIJKCZsYWJl bCgiY2JjX2VuY190YWlsIikpOwotKwkmc3ViCSgkbGVuLDE2KTsKLSsJJmptcAkoJmxhYmVsKCJj YmNfZW5jX2xvb3AiKSk7Ci0rCi0rJnNldF9sYWJlbCgiY2JjX2VuY19sb29wIiwxNik7Ci0rCSZt b3Z1cHMJKCRpdmVjLCZRV1AoMCwkaW5wKSk7Ci0rCSZsZWEJKCRpbnAsJkRXUCgxNiwkaW5wKSk7 Ci0rCSZweG9yCSgkaW5vdXQwLCRpdmVjKTsKLSsJJmFlc25pX2lubGluZV9nZW5lcmF0ZTEoImVu YyIpOwkjICZjYWxsCSgiX2Flc25pX2VuY3J5cHQzIik7Ci0rCSZzdWIJKCRsZW4sMTYpOwotKwkm bGVhCSgkb3V0LCZEV1AoMTYsJG91dCkpOwotKwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsJIyBy ZXN0b3JlICRyb3VuZHMKLSsJJm1vdgkoJGtleSwka2V5Xyk7CQkjIHJlc3RvcmUgJGtleQotKwkm bW92dXBzCSgmUVdQKC0xNiwkb3V0KSwkaW5vdXQwKTsKLSsJJmpuYwkoJmxhYmVsKCJjYmNfZW5j X2xvb3AiKSk7Ci0rCSZhZGQJKCRsZW4sMTYpOwotKwkmam56CSgmbGFiZWwoImNiY19lbmNfdGFp bCIpKTsKLSsJJm1vdmFwcwkoJGl2ZWMsJGlub3V0MCk7Ci0rCSZqbXAJKCZsYWJlbCgiY2JjX3Jl dCIpKTsKLSsKLSsmc2V0X2xhYmVsKCJjYmNfZW5jX3RhaWwiKTsKLSsJJm1vdgkoImVjeCIsJGxl bik7CQkjIHphcHMgJHJvdW5kcwotKwkmZGF0YV93b3JkKDB4QTRGM0Y2ODkpOwkJIyByZXAgbW92 c2IKLSsJJm1vdgkoImVjeCIsMTYpOwkJIyB6ZXJvIHRhaWwKLSsJJnN1YgkoImVjeCIsJGxlbik7 Ci0rCSZ4b3IJKCJlYXgiLCJlYXgiKTsJCSMgemFwcyAkbGVuCi0rCSZkYXRhX3dvcmQoMHhBQUYz RjY4OSk7CQkjIHJlcCBzdG9zYgotKwkmbGVhCSgkb3V0LCZEV1AoLTE2LCRvdXQpKTsJIyByZXdp bmQgJG91dCBieSAxIGJsb2NrCi0rCSZtb3YJKCRyb3VuZHMsJHJvdW5kc18pOwkjIHJlc3RvcmUg JHJvdW5kcwotKwkmbW92CSgkaW5wLCRvdXQpOwkJIyAkaW5wIGFuZCAkb3V0IGFyZSB0aGUgc2Ft ZQotKwkmbW92CSgka2V5LCRrZXlfKTsJCSMgcmVzdG9yZSAka2V5Ci0rCSZqbXAJKCZsYWJlbCgi Y2JjX2VuY19sb29wIikpOwotKwotKyZzZXRfbGFiZWwoImNiY19kZWNyeXB0IiwxNik7Ci0rCSZz dWIJKCRsZW4sMHg0MCk7Ci0rCSZqYmUJKCZsYWJlbCgiY2JjX2RlY190YWlsIikpOwotKwkmam1w CSgmbGFiZWwoImNiY19kZWNfbG9vcDMiKSk7Ci0rCi0rJnNldF9sYWJlbCgiY2JjX2RlY19sb29w MyIsMTYpOwotKwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMCwkaW5wKSk7Ci0rCSZtb3Z1cHMJKCRp bm91dDEsJlFXUCgweDEwLCRpbnApKTsKLSsJJm1vdnVwcwkoJGlub3V0MiwmUVdQKDB4MjAsJGlu cCkpOwotKwkmbW92YXBzCSgkaW4wLCRpbm91dDApOwotKwkmbW92YXBzCSgkaW4xLCRpbm91dDEp OwotKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MyIpOwotKwkmc3ViCSgkbGVuLDB4MzApOwotKwkm bGVhCSgkaW5wLCZEV1AoMHgzMCwkaW5wKSk7Ci0rCSZsZWEJKCRvdXQsJkRXUCgweDMwLCRvdXQp KTsKLSsJJnB4b3IJKCRpbm91dDAsJGl2ZWMpOwotKwkmcHhvcgkoJGlub3V0MSwkaW4wKTsKLSsJ Jm1vdnVwcwkoJGl2ZWMsJlFXUCgtMHgxMCwkaW5wKSk7Ci0rCSZweG9yCSgkaW5vdXQyLCRpbjEp OwotKwkmbW92dXBzCSgmUVdQKC0weDMwLCRvdXQpLCRpbm91dDApOwotKwkmbW92CSgkcm91bmRz LCRyb3VuZHNfKQkjIHJlc3RvcmUgJHJvdW5kcwotKwkmbW92dXBzCSgmUVdQKC0weDIwLCRvdXQp LCRpbm91dDEpOwotKwkmbW92CSgka2V5LCRrZXlfKTsJCSMgcmVzdG9yZSAka2V5Ci0rCSZtb3Z1 cHMJKCZRV1AoLTB4MTAsJG91dCksJGlub3V0Mik7Ci0rCSZqYQkoJmxhYmVsKCJjYmNfZGVjX2xv b3AzIikpOwotKwotKyZzZXRfbGFiZWwoImNiY19kZWNfdGFpbCIpOwotKwkmYWRkCSgkbGVuLDB4 NDApOwotKwkmanoJKCZsYWJlbCgiY2JjX3JldCIpKTsKLSsKLSsJJm1vdnVwcwkoJGlub3V0MCwm UVdQKDAsJGlucCkpOwotKwkmY21wCSgkbGVuLDB4MTApOwotKwkmbW92YXBzCSgkaW4wLCRpbm91 dDApOwotKwkmamJlCSgmbGFiZWwoImNiY19kZWNfb25lIikpOwotKwkmbW92dXBzCSgkaW5vdXQx LCZRV1AoMHgxMCwkaW5wKSk7Ci0rCSZjbXAJKCRsZW4sMHgyMCk7Ci0rCSZtb3ZhcHMJKCRpbjEs JGlub3V0MSk7Ci0rCSZqYmUJKCZsYWJlbCgiY2JjX2RlY190d28iKSk7Ci0rCSZtb3Z1cHMJKCRp bm91dDIsJlFXUCgweDIwLCRpbnApKTsKLSsJJmNtcAkoJGxlbiwweDMwKTsKLSsJJmpiZQkoJmxh YmVsKCJjYmNfZGVjX3RocmVlIikpOwotKwkmbW92dXBzCSgkaW5vdXQzLCZRV1AoMHgzMCwkaW5w KSk7Ci0rCSZjYWxsCSgiX2Flc25pX2RlY3J5cHQ0Iik7Ci0rCSZtb3Z1cHMJKCRybmRrZXkwLCZR V1AoMHgxMCwkaW5wKSk7Ci0rCSZtb3Z1cHMJKCRybmRrZXkxLCZRV1AoMHgyMCwkaW5wKSk7Ci0r CSZweG9yCSgkaW5vdXQwLCRpdmVjKTsKLSsJJnB4b3IJKCRpbm91dDEsJGluMCk7Ci0rCSZtb3Z1 cHMJKCRpdmVjLCZRV1AoMHgzMCwkaW5wKSk7Ci0rCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5v dXQwKTsKLSsJJnB4b3IJKCRpbm91dDIsJHJuZGtleTApOwotKwkmcHhvcgkoJGlub3V0Mywkcm5k a2V5MSk7Ci0rCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKLSsJJm1vdnVwcwko JlFXUCgweDIwLCRvdXQpLCRpbm91dDIpOwotKwkmbW92YXBzCSgkaW5vdXQwLCRpbm91dDMpOwot KwkmbGVhCSgkb3V0LCZEV1AoMHgzMCwkb3V0KSk7Ci0rCSZqbXAJKCZsYWJlbCgiY2JjX2RlY190 YWlsX2NvbGxlY3RlZCIpKTsKLSsKLSsmc2V0X2xhYmVsKCJjYmNfZGVjX29uZSIpOwotKwkmYWVz bmlfaW5saW5lX2dlbmVyYXRlMSgiZGVjIik7CSMgJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDMiKTsK LSsJJnB4b3IJKCRpbm91dDAsJGl2ZWMpOwotKwkmbW92YXBzCSgkaXZlYywkaW4wKTsKLSsJJmpt cAkoJmxhYmVsKCJjYmNfZGVjX3RhaWxfY29sbGVjdGVkIikpOwotKwotKyZzZXRfbGFiZWwoImNi Y19kZWNfdHdvIik7Ci0rCSZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7Ci0rCSZweG9yCSgkaW5v dXQwLCRpdmVjKTsKLSsJJnB4b3IJKCRpbm91dDEsJGluMCk7Ci0rCSZtb3Z1cHMJKCZRV1AoMCwk b3V0KSwkaW5vdXQwKTsKLSsJJm1vdmFwcwkoJGlub3V0MCwkaW5vdXQxKTsKLSsJJm1vdmFwcwko JGl2ZWMsJGluMSk7Ci0rCSZsZWEJKCRvdXQsJkRXUCgweDEwLCRvdXQpKTsKLSsJJmptcAkoJmxh YmVsKCJjYmNfZGVjX3RhaWxfY29sbGVjdGVkIikpOwotKwotKyZzZXRfbGFiZWwoImNiY19kZWNf dGhyZWUiKTsKLSsJJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDMiKTsKLSsJJnB4b3IJKCRpbm91dDAs JGl2ZWMpOwotKwkmcHhvcgkoJGlub3V0MSwkaW4wKTsKLSsJJnB4b3IJKCRpbm91dDIsJGluMSk7 Ci0rCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQwKTsKLSsJJm1vdnVwcwkoJlFXUCgweDEw LCRvdXQpLCRpbm91dDEpOwotKwkmbW92YXBzCSgkaW5vdXQwLCRpbm91dDIpOwotKwkmbW92dXBz CSgkaXZlYywmUVdQKDB4MjAsJGlucCkpOwotKwkmbGVhCSgkb3V0LCZEV1AoMHgyMCwkb3V0KSk7 Ci0rCi0rJnNldF9sYWJlbCgiY2JjX2RlY190YWlsX2NvbGxlY3RlZCIpOwotKwkmYW5kCSgkbGVu LDE1KTsKLSsJJmpuegkoJmxhYmVsKCJjYmNfZGVjX3RhaWxfcGFydGlhbCIpKTsKLSsJJm1vdnVw cwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOwotKwkmam1wCSgmbGFiZWwoImNiY19yZXQiKSk7Ci0r Ci0rJnNldF9sYWJlbCgiY2JjX2RlY190YWlsX3BhcnRpYWwiKTsKLSsJJm1vdgkoJGtleV8sImVz cCIpOwotKwkmc3ViCSgiZXNwIiwxNik7Ci0rCSZhbmQJKCJlc3AiLC0xNik7Ci0rCSZtb3ZhcHMJ KCZRV1AoMCwiZXNwIiksJGlub3V0MCk7Ci0rCSZtb3YJKCRpbnAsImVzcCIpOwotKwkmbW92CSgi ZWN4IiwkbGVuKTsKLSsJJmRhdGFfd29yZCgweEE0RjNGNjg5KTsJCSMgcmVwIG1vdnNiCi0rCSZt b3YJKCJlc3AiLCRrZXlfKTsKLSsKLSsmc2V0X2xhYmVsKCJjYmNfcmV0Iik7Ci0rCSZtb3YJKCRr ZXlfLCZ3cGFyYW0oNCkpOwotKwkmbW92dXBzCSgmUVdQKDAsJGtleV8pLCRpdmVjKTsJIyBvdXRw dXQgSVYKLSsmZnVuY3Rpb25fZW5kKCIke1BSRUZJWH1fY2JjX2VuY3J5cHQiKTsKLSsKLSsjIE1l Y2hhbmljYWwgcG9ydCBmcm9tIGFlc25pLXg4Nl82NC5wbC4KLSsjCi0rIyBfYWVzbmlfc2V0X2Vu Y3J5cHRfa2V5IGlzIHByaXZhdGUgaW50ZXJmYWNlLAotKyMgaW5wdXQ6Ci0rIwkiZWF4Igljb25z dCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5Ci0rIwkkcm91bmRzCWludCBiaXRzCi0rIwkka2V5CUFF U19LRVkgKmtleQotKyMgb3V0cHV0OgotKyMJImVheCIJcmV0dXJuIGNvZGUKLSsjCSRyb3VuZAly b3VuZHMKLSsKLSsmZnVuY3Rpb25fYmVnaW5fQigiX2Flc25pX3NldF9lbmNyeXB0X2tleSIpOwot KwkmdGVzdAkoImVheCIsImVheCIpOwotKwkmanoJKCZsYWJlbCgiYmFkX3BvaW50ZXIiKSk7Ci0r CSZ0ZXN0CSgka2V5LCRrZXkpOwotKwkmanoJKCZsYWJlbCgiYmFkX3BvaW50ZXIiKSk7Ci0rCi0r CSZtb3Z1cHMJKCJ4bW0wIiwmUVdQKDAsImVheCIpKTsJIyBwdWxsIGZpcnN0IDEyOCBiaXRzIG9m ICp1c2VyS2V5Ci0rCSZweG9yCSgieG1tNCIsInhtbTQiKTsJIyBsb3cgZHdvcmQgb2YgeG1tNCBp cyBhc3N1bWVkIDAKLSsJJmxlYQkoJGtleSwmRFdQKDE2LCRrZXkpKTsKLSsJJmNtcAkoJHJvdW5k cywyNTYpOwotKwkmamUJKCZsYWJlbCgiMTRyb3VuZHMiKSk7Ci0rCSZjbXAJKCRyb3VuZHMsMTky KTsKLSsJJmplCSgmbGFiZWwoIjEycm91bmRzIikpOwotKwkmY21wCSgkcm91bmRzLDEyOCk7Ci0r CSZqbmUJKCZsYWJlbCgiYmFkX2tleWJpdHMiKSk7Ci0rCi0rJnNldF9sYWJlbCgiMTByb3VuZHMi LDE2KTsKLSsJJm1vdgkJKCRyb3VuZHMsOSk7Ci0rCSYkbW92ZWtleQkoJlFXUCgtMTYsJGtleSks InhtbTAiKTsJIyByb3VuZCAwCi0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDAx KTsJCSMgcm91bmQgMQotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOF9jb2xkIikpOwotKwkmYWVz a2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgyKTsJCSMgcm91bmQgMgotKwkmY2FsbAkJKCZs YWJlbCgia2V5XzEyOCIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MDQp OwkJIyByb3VuZCAzCi0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4IikpOwotKwkmYWVza2V5Z2Vu YXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwOCk7CQkjIHJvdW5kIDQKLSsJJmNhbGwJCSgmbGFiZWwo ImtleV8xMjgiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDEwKTsJCSMg cm91bmQgNQotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKLSsJJmFlc2tleWdlbmFzc2lz dCgieG1tMSIsInhtbTAiLDB4MjApOwkJIyByb3VuZCA2Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlf MTI4IikpOwotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHg0MCk7CQkjIHJvdW5k IDcKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInht bTEiLCJ4bW0wIiwweDgwKTsJCSMgcm91bmQgOAotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIp KTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MWIpOwkJIyByb3VuZCA5Ci0r CSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4IikpOwotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwi eG1tMCIsMHgzNik7CQkjIHJvdW5kIDEwCi0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4IikpOwot KwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMCIpOwotKwkmbW92CQkoJkRXUCg4MCwka2V5 KSwkcm91bmRzKTsKLSsJJnhvcgkJKCJlYXgiLCJlYXgiKTsKLSsJJnJldCgpOwotKwotKyZzZXRf bGFiZWwoImtleV8xMjgiLDE2KTsKLSsJJiRtb3Zla2V5CSgmUVdQKDAsJGtleSksInhtbTAiKTsK LSsJJmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7Ci0rJnNldF9sYWJlbCgia2V5XzEyOF9jb2xk Iik7Ci0rCSZzaHVmcHMJCSgieG1tNCIsInhtbTAiLDBiMDAwMTAwMDApOwotKwkmcHhvcgkJKCJ4 bW0wIiwieG1tNCIpOwotKwkmc2h1ZnBzCQkoInhtbTQiLCJ4bW0wIiwwYjEwMDAxMTAwLCk7Ci0r CSZweG9yCQkoInhtbTAiLCJ4bW00Iik7Ci0rCSZwc2h1ZmQJCSgieG1tMSIsInhtbTEiLDBiMTEx MTExMTEpOwkjIGNyaXRpY2FsIHBhdGgKLSsJJnB4b3IJCSgieG1tMCIsInhtbTEiKTsKLSsJJnJl dCgpOwotKwotKyZzZXRfbGFiZWwoIjEycm91bmRzIiwxNik7Ci0rCSZtb3ZxCQkoInhtbTIiLCZR V1AoMTYsImVheCIpKTsJIyByZW1haW5pbmcgMS8zIG9mICp1c2VyS2V5Ci0rCSZtb3YJCSgkcm91 bmRzLDExKTsKLSsJJiRtb3Zla2V5CSgmUVdQKC0xNiwka2V5KSwieG1tMCIpCQkjIHJvdW5kIDAK LSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDEpOwkJIyByb3VuZCAxLDIKLSsJ JmNhbGwJCSgmbGFiZWwoImtleV8xOTJhX2NvbGQiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInht bTEiLCJ4bW0yIiwweDAyKTsJCSMgcm91bmQgMiwzCi0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTky YiIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDQpOwkJIyByb3VuZCA0 LDUKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJhIikpOwotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4 bW0xIiwieG1tMiIsMHgwOCk7CQkjIHJvdW5kIDUsNgotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5 MmIiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDEwKTsJCSMgcm91bmQg Nyw4Ci0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTkyYSIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgi eG1tMSIsInhtbTIiLDB4MjApOwkJIyByb3VuZCA4LDkKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8x OTJiIikpOwotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHg0MCk7CQkjIHJvdW5k IDEwLDExCi0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTkyYSIpKTsKLSsJJmFlc2tleWdlbmFzc2lz dCgieG1tMSIsInhtbTIiLDB4ODApOwkJIyByb3VuZCAxMSwxMgotKwkmY2FsbAkJKCZsYWJlbCgi a2V5XzE5MmIiKSk7Ci0rCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7Ci0rCSZtb3YJ CSgmRFdQKDQ4LCRrZXkpLCRyb3VuZHMpOwotKwkmeG9yCQkoImVheCIsImVheCIpOwotKwkmcmV0 KCk7Ci0rCi0rJnNldF9sYWJlbCgia2V5XzE5MmEiLDE2KTsKLSsJJiRtb3Zla2V5CSgmUVdQKDAs JGtleSksInhtbTAiKTsKLSsJJmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7Ci0rJnNldF9sYWJl bCgia2V5XzE5MmFfY29sZCIsMTYpOwotKwkmbW92YXBzCQkoInhtbTUiLCJ4bW0yIik7Ci0rJnNl dF9sYWJlbCgia2V5XzE5MmJfd2FybSIpOwotKwkmc2h1ZnBzCQkoInhtbTQiLCJ4bW0wIiwwYjAw MDEwMDAwKTsKLSsJJm1vdmFwcwkJKCJ4bW0zIiwieG1tMiIpOwotKwkmcHhvcgkJKCJ4bW0wIiwi eG1tNCIpOwotKwkmc2h1ZnBzCQkoInhtbTQiLCJ4bW0wIiwwYjEwMDAxMTAwKTsKLSsJJnBzbGxk cQkJKCJ4bW0zIiw0KTsKLSsJJnB4b3IJCSgieG1tMCIsInhtbTQiKTsKLSsJJnBzaHVmZAkJKCJ4 bW0xIiwieG1tMSIsMGIwMTAxMDEwMSk7CSMgY3JpdGljYWwgcGF0aAotKwkmcHhvcgkJKCJ4bW0y IiwieG1tMyIpOwotKwkmcHhvcgkJKCJ4bW0wIiwieG1tMSIpOwotKwkmcHNodWZkCQkoInhtbTMi LCJ4bW0wIiwwYjExMTExMTExKTsKLSsJJnB4b3IJCSgieG1tMiIsInhtbTMiKTsKLSsJJnJldCgp OwotKwotKyZzZXRfbGFiZWwoImtleV8xOTJiIiwxNik7Ci0rCSZtb3ZhcHMJCSgieG1tMyIsInht bTAiKTsKLSsJJnNodWZwcwkJKCJ4bW01IiwieG1tMCIsMGIwMTAwMDEwMCk7Ci0rCSYkbW92ZWtl eQkoJlFXUCgwLCRrZXkpLCJ4bW01Iik7Ci0rCSZzaHVmcHMJCSgieG1tMyIsInhtbTIiLDBiMDEw MDExMTApOwotKwkmJG1vdmVrZXkJKCZRV1AoMTYsJGtleSksInhtbTMiKTsKLSsJJmxlYQkJKCRr ZXksJkRXUCgzMiwka2V5KSk7Ci0rCSZqbXAJCSgmbGFiZWwoImtleV8xOTJiX3dhcm0iKSk7Ci0r Ci0rJnNldF9sYWJlbCgiMTRyb3VuZHMiLDE2KTsKLSsJJm1vdnVwcwkJKCJ4bW0yIiwmUVdQKDE2 LCJlYXgiKSk7CSMgcmVtYWluaW5nIGhhbGYgb2YgKnVzZXJLZXkKLSsJJm1vdgkJKCRyb3VuZHMs MTMpOwotKwkmbGVhCQkoJGtleSwmRFdQKDE2LCRrZXkpKTsKLSsJJiRtb3Zla2V5CSgmUVdQKC0z Miwka2V5KSwieG1tMCIpOwkjIHJvdW5kIDAKLSsJJiRtb3Zla2V5CSgmUVdQKC0xNiwka2V5KSwi eG1tMiIpOwkjIHJvdW5kIDEKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MDEp OwkJIyByb3VuZCAyCi0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YV9jb2xkIikpOwotKwkmYWVz a2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwMSk7CQkjIHJvdW5kIDMKLSsJJmNhbGwJCSgm bGFiZWwoImtleV8yNTZiIikpOwotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgw Mik7CQkjIHJvdW5kIDQKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZhIikpOwotKwkmYWVza2V5 Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwMik7CQkjIHJvdW5kIDUKLSsJJmNhbGwJCSgmbGFi ZWwoImtleV8yNTZiIikpOwotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgwNCk7 CQkjIHJvdW5kIDYKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZhIikpOwotKwkmYWVza2V5Z2Vu YXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgwNCk7CQkjIHJvdW5kIDcKLSsJJmNhbGwJCSgmbGFiZWwo ImtleV8yNTZiIikpOwotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgwOCk7CQkj IHJvdW5kIDgKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZhIikpOwotKwkmYWVza2V5Z2VuYXNz aXN0KCJ4bW0xIiwieG1tMCIsMHgwOCk7CQkjIHJvdW5kIDkKLSsJJmNhbGwJCSgmbGFiZWwoImtl eV8yNTZiIikpOwotKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgxMCk7CQkjIHJv dW5kIDEwCi0rCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKLSsJJmFlc2tleWdlbmFzc2lz dCgieG1tMSIsInhtbTAiLDB4MTApOwkJIyByb3VuZCAxMQotKwkmY2FsbAkJKCZsYWJlbCgia2V5 XzI1NmIiKSk7Ci0rCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDIwKTsJCSMgcm91 bmQgMTIKLSsJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZhIikpOwotKwkmYWVza2V5Z2VuYXNzaXN0 KCJ4bW0xIiwieG1tMCIsMHgyMCk7CQkjIHJvdW5kIDEzCi0rCSZjYWxsCQkoJmxhYmVsKCJrZXlf MjU2YiIpKTsKLSsJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4NDApOwkJIyByb3Vu ZCAxNAotKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmEiKSk7Ci0rCSYkbW92ZWtleQkoJlFXUCgw LCRrZXkpLCJ4bW0wIik7Ci0rCSZtb3YJCSgmRFdQKDE2LCRrZXkpLCRyb3VuZHMpOwotKwkmeG9y CQkoImVheCIsImVheCIpOwotKwkmcmV0KCk7Ci0rCi0rJnNldF9sYWJlbCgia2V5XzI1NmEiLDE2 KTsKLSsJJiRtb3Zla2V5CSgmUVdQKDAsJGtleSksInhtbTIiKTsKLSsJJmxlYQkJKCRrZXksJkRX UCgxNiwka2V5KSk7Ci0rJnNldF9sYWJlbCgia2V5XzI1NmFfY29sZCIpOwotKwkmc2h1ZnBzCQko InhtbTQiLCJ4bW0wIiwwYjAwMDEwMDAwKTsKLSsJJnB4b3IJCSgieG1tMCIsInhtbTQiKTsKLSsJ JnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIxMDAwMTEwMCk7Ci0rCSZweG9yCQkoInhtbTAiLCJ4 bW00Iik7Ci0rCSZwc2h1ZmQJCSgieG1tMSIsInhtbTEiLDBiMTExMTExMTEpOwkjIGNyaXRpY2Fs IHBhdGgKLSsJJnB4b3IJCSgieG1tMCIsInhtbTEiKTsKLSsJJnJldCgpOwotKwotKyZzZXRfbGFi ZWwoImtleV8yNTZiIiwxNik7Ci0rCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7Ci0r CSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkpOwotKwotKwkmc2h1ZnBzCQkoInhtbTQiLCJ4bW0y IiwwYjAwMDEwMDAwKTsKLSsJJnB4b3IJCSgieG1tMiIsInhtbTQiKTsKLSsJJnNodWZwcwkJKCJ4 bW00IiwieG1tMiIsMGIxMDAwMTEwMCk7Ci0rCSZweG9yCQkoInhtbTIiLCJ4bW00Iik7Ci0rCSZw c2h1ZmQJCSgieG1tMSIsInhtbTEiLDBiMTAxMDEwMTApOwkjIGNyaXRpY2FsIHBhdGgKLSsJJnB4 b3IJCSgieG1tMiIsInhtbTEiKTsKLSsJJnJldCgpOwotKwotKyZzZXRfbGFiZWwoImJhZF9wb2lu dGVyIiw0KTsKLSsJJm1vdgkoImVheCIsLTEpOwotKwkmcmV0CSgpOwotKyZzZXRfbGFiZWwoImJh ZF9rZXliaXRzIiw0KTsKLSsJJm1vdgkoImVheCIsLTIpOwotKwkmcmV0CSgpOwotKyZmdW5jdGlv bl9lbmRfQigiX2Flc25pX3NldF9lbmNyeXB0X2tleSIpOwotKwotKyMgaW50ICRQUkVGSVhfc2V0 X2VuY3J5cHRfa2V5IChjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBpbnQgYml0cywKLSsj ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUVTX0tFWSAqa2V5KQotKyZmdW5jdGlvbl9i ZWdpbl9CKCIke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5Iik7Ci0rCSZtb3YJKCJlYXgiLCZ3cGFy YW0oMCkpOwotKwkmbW92CSgkcm91bmRzLCZ3cGFyYW0oMSkpOwotKwkmbW92CSgka2V5LCZ3cGFy YW0oMikpOwotKwkmY2FsbAkoIl9hZXNuaV9zZXRfZW5jcnlwdF9rZXkiKTsKLSsJJnJldAkoKTsK LSsmZnVuY3Rpb25fZW5kX0IoIiR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXkiKTsKLSsKLSsjIGlu dCAkUFJFRklYX3NldF9kZWNyeXB0X2tleSAoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwg aW50IGJpdHMsCi0rIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFFU19LRVkgKmtleSkK LSsmZnVuY3Rpb25fYmVnaW5fQigiJHtQUkVGSVh9X3NldF9kZWNyeXB0X2tleSIpOwotKwkmbW92 CSgiZWF4Iiwmd3BhcmFtKDApKTsKLSsJJm1vdgkoJHJvdW5kcywmd3BhcmFtKDEpKTsKLSsJJm1v dgkoJGtleSwmd3BhcmFtKDIpKTsKLSsJJmNhbGwJKCJfYWVzbmlfc2V0X2VuY3J5cHRfa2V5Iik7 Ci0rCSZtb3YJKCRrZXksJndwYXJhbSgyKSk7Ci0rCSZzaGwJKCRyb3VuZHMsNCkJIyByb3VuZHMt MSBhZnRlciBfYWVzbmlfc2V0X2VuY3J5cHRfa2V5Ci0rCSZ0ZXN0CSgiZWF4IiwiZWF4Iik7Ci0r CSZqbnoJKCZsYWJlbCgiZGVjX2tleV9yZXQiKSk7Ci0rCSZsZWEJKCJlYXgiLCZEV1AoMTYsJGtl eSwkcm91bmRzKSk7CSMgZW5kIG9mIGtleSBzY2hlZHVsZQotKwotKwkmJG1vdmVrZXkJKCJ4bW0w IiwmUVdQKDAsJGtleSkpOwkjIGp1c3Qgc3dhcAotKwkmJG1vdmVrZXkJKCJ4bW0xIiwmUVdQKDAs ImVheCIpKTsKLSsJJiRtb3Zla2V5CSgmUVdQKDAsImVheCIpLCJ4bW0wIik7Ci0rCSYkbW92ZWtl eQkoJlFXUCgwLCRrZXkpLCJ4bW0xIik7Ci0rCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkpOwot KwkmbGVhCQkoImVheCIsJkRXUCgtMTYsImVheCIpKTsKLSsKLSsmc2V0X2xhYmVsKCJkZWNfa2V5 X2ludmVyc2UiKTsKLSsJJiRtb3Zla2V5CSgieG1tMCIsJlFXUCgwLCRrZXkpKTsJIyBzd2FwIGFu ZCBpbnZlcnNlCi0rCSYkbW92ZWtleQkoInhtbTEiLCZRV1AoMCwiZWF4IikpOwotKwkmYWVzaW1j CQkoInhtbTAiLCJ4bW0wIik7Ci0rCSZhZXNpbWMJCSgieG1tMSIsInhtbTEiKTsKLSsJJmxlYQkJ KCRrZXksJkRXUCgxNiwka2V5KSk7Ci0rCSZsZWEJCSgiZWF4IiwmRFdQKC0xNiwiZWF4IikpOwot KwkmY21wCQkoImVheCIsJGtleSk7Ci0rCSYkbW92ZWtleQkoJlFXUCgxNiwiZWF4IiksInhtbTAi KTsKLSsJJiRtb3Zla2V5CSgmUVdQKC0xNiwka2V5KSwieG1tMSIpOwotKwkmamEJCSgmbGFiZWwo ImRlY19rZXlfaW52ZXJzZSIpKTsKLSsKLSsJJiRtb3Zla2V5CSgieG1tMCIsJlFXUCgwLCRrZXkp KTsJIyBpbnZlcnNlIG1pZGRsZQotKwkmYWVzaW1jCQkoInhtbTAiLCJ4bW0wIik7Ci0rCSYkbW92 ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7Ci0rCi0rCSZ4b3IJCSgiZWF4IiwiZWF4Iik7CQkj IHJldHVybiBzdWNjZXNzCi0rJnNldF9sYWJlbCgiZGVjX2tleV9yZXQiKTsKLSsJJnJldAkoKTsK LSsmZnVuY3Rpb25fZW5kX0IoIiR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXkiKTsKLSsmYXNjaXoo IkFFUyBmb3IgSW50ZWwgQUVTLU5JLCBDUllQVE9HQU1TIGJ5IDxhcHByb1xAb3BlbnNzbC5vcmc+ Iik7Ci0rCi0rJmFzbV9maW5pc2goKTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5 cHRvL2Flcy9hc20vYWVzbmkteDg2XzY0LnBsLmFlc25pIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5 cHRvL2Flcy9hc20vYWVzbmkteDg2XzY0LnBsCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlw dG8vYWVzL2FzbS9hZXNuaS14ODZfNjQucGwuYWVzbmkJMjAxMC0wMS0xMiAyMjoxODowNi4wMDAw MDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9hZXMvYXNtL2Flc25p LXg4Nl82NC5wbAkyMDEwLTAxLTEyIDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCAr MSw5OTEgQEAKLSsjIS91c3IvYmluL2VudiBwZXJsCi0rIwotKyMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsjIFdy aXR0ZW4gYnkgQW5keSBQb2x5YWtvdiA8YXBwcm9AZnkuY2hhbG1lcnMuc2U+IGZvciB0aGUgT3Bl blNTTAotKyMgcHJvamVjdC4gVGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1 bmRlciBPcGVuU1NMIGFuZAotKyMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hl cmUgeW91IG9idGFpbiBpdC4gRm9yIGZ1cnRoZXIKLSsjIGRldGFpbHMgc2VlIGh0dHA6Ly93d3cu b3BlbnNzbC5vcmcvfmFwcHJvL2NyeXB0b2dhbXMvLgotKyMgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsjCi0rIyBU aGlzIG1vZHVsZSBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIEludGVsIEFFUy1OSSBleHRlbnNpb24u IEluCi0rIyBPcGVuU1NMIGNvbnRleHQgaXQncyB1c2VkIHdpdGggSW50ZWwgZW5naW5lLCBidXQg Y2FuIGFsc28gYmUgdXNlZCBhcwotKyMgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgY3J5cHRvL2Fl cy9hc20vYWVzLXg4Nl82NC5wbCBbc2VlIGJlbG93IGZvcgotKyMgZGV0YWlsc10uCi0rCi0rJFBS RUZJWD0iYWVzbmkiOwkjIGlmICRQUkVGSVggaXMgc2V0IHRvICJBRVMiLCB0aGUgc2NyaXB0Ci0r CQkJIyBnZW5lcmF0ZXMgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IKLSsJCQkjIGNyeXB0by9hZXMv YXNtL2Flcy14ODZfNjQucGw6LSkKLSsKLSskZmxhdm91ciA9IHNoaWZ0OwotKyRvdXRwdXQgID0g c2hpZnQ7Ci0raWYgKCRmbGF2b3VyID1+IC9cLi8pIHsgJG91dHB1dCA9ICRmbGF2b3VyOyB1bmRl ZiAkZmxhdm91cjsgfQotKwotKyR3aW42ND0wOyAkd2luNjQ9MSBpZiAoJGZsYXZvdXIgPX4gL1tu bV1hc218bWluZ3c2NC8gfHwgJG91dHB1dCA9fiAvXC5hc20kLyk7Ci0rCi0rJDAgPX4gbS8oLipb XC9cXF0pW15cL1xcXSskLzsgJGRpcj0kMTsKLSsoICR4bGF0ZT0iJHtkaXJ9eDg2XzY0LXhsYXRl LnBsIiBhbmQgLWYgJHhsYXRlICkgb3IKLSsoICR4bGF0ZT0iJHtkaXJ9Li4vLi4vcGVybGFzbS94 ODZfNjQteGxhdGUucGwiIGFuZCAtZiAkeGxhdGUpIG9yCi0rZGllICJjYW4ndCBsb2NhdGUgeDg2 XzY0LXhsYXRlLnBsIjsKLSsKLStvcGVuIFNURE9VVCwifCAkXlggJHhsYXRlICRmbGF2b3VyICRv dXRwdXQiOwotKwotKyRtb3ZrZXkgPSAkUFJFRklYIGVxICJhZXNuaSIgPyAibW92YXBzIiA6ICJt b3Z1cHMiOwotK0BfNGFyZ3M9JHdpbjY0PwkoIiVyY3giLCIlcmR4IiwiJXI4IiwgIiVyOSIpIDoJ IyBXaW42NCBvcmRlcgotKwkJKCIlcmRpIiwiJXJzaSIsIiVyZHgiLCIlcmN4Iik7CSMgVW5peCBv cmRlcgotKwotKyRjb2RlPSIudGV4dFxuIjsKLSsKLSskcm91bmRzPSIlZWF4IjsJIyBpbnB1dCB0 byBhbmQgY2hhbmdlZCBieSBhZXNuaV9bZW58ZGVdY3J5cHROICEhIQotKyMgdGhpcyBpcyBuYXR1 cmFsIFVuaXggYXJndW1lbnQgb3JkZXIgZm9yIHB1YmxpYyAkUFJFRklYX1tlY2J8Y2JjXV9lbmNy eXB0IC4uLgotKyRpbnA9IiVyZGkiOwotKyRvdXQ9IiVyc2kiOwotKyRsZW49IiVyZHgiOwotKyRr ZXk9IiVyY3giOwkjIGlucHV0IHRvIGFuZCBjaGFuZ2VkIGJ5IGFlc25pX1tlbnxkZV1jcnlwdE4g ISEhCi0rJGl2cD0iJXI4IjsJIyBjYmMKLSsKLSskcm5kc189IiVyMTBkIjsJIyBiYWNrdXAgY29w eSBmb3IgJHJvdW5kcwotKyRrZXlfPSIlcjExIjsJIyBiYWNrdXAgY29weSBmb3IgJGtleQotKwot KyMgJXhtbSByZWdpc3RlciBsYXlvdXQKLSskaW5vdXQwPSIleG1tMCI7CSRpbm91dDE9IiV4bW0x IjsKLSskaW5vdXQyPSIleG1tMiI7CSRpbm91dDM9IiV4bW0zIjsKLSskcm5ka2V5MD0iJXhtbTQi Owkkcm5ka2V5MT0iJXhtbTUiOwotKwotKyRpdj0iJXhtbTYiOwkJJGluMD0iJXhtbTciOwkjIHVz ZWQgaW4gQ0JDIGRlY3J5cHQKLSskaW4xPSIleG1tOCI7CQkkaW4yPSIleG1tOSI7Ci0rDAotKyMg SW5saW5lIHZlcnNpb24gb2YgaW50ZXJuYWwgYWVzbmlfW2VufGRlXWNyeXB0MS4KLSsjCi0rIyBX aHkgZm9sZGVkIGxvb3A/IEJlY2F1c2UgYWVzW2VuY3xkZWNdIGlzIHNsb3cgZW5vdWdoIHRvIGFj Y29tbW9kYXRlCi0rIyBjeWNsZXMgd2hpY2ggdGFrZSBjYXJlIG9mIGxvb3AgdmFyaWFibGVzLi4u Ci0reyBteSAkc247Ci0rc3ViIGFlc25pX2dlbmVyYXRlMSB7Ci0rbXkgKCRwLCRrZXksJHJvdW5k cyk9QF87Ci0rKyskc247Ci0rJGNvZGUuPTw8X19fOwotKwkkbW92a2V5CSgka2V5KSwkcm5ka2V5 MAotKwkkbW92a2V5CTE2KCRrZXkpLCRybmRrZXkxCi0rCWxlYQkzMigka2V5KSwka2V5Ci0rCXB4 b3IJJHJuZGtleTAsJGlub3V0MAotKy5Mb29wXyR7cH0xXyRzbjoKLSsJYWVzJHtwfQkkcm5ka2V5 MSwkaW5vdXQwCi0rCWRlYwkkcm91bmRzCi0rCSRtb3ZrZXkJKCRrZXkpLCRybmRrZXkxCi0rCWxl YQkxNigka2V5KSwka2V5Ci0rCWpuegkuTG9vcF8ke3B9MV8kc24JIyBsb29wIGJvZHkgaXMgMTYg Ynl0ZXMKLSsJYWVzJHtwfWxhc3QJJHJuZGtleTEsJGlub3V0MAotK19fXwotK319Ci0rIyB2b2lk ICRQUkVGSVhfW2VufGRlXWNyeXB0IChjb25zdCB2b2lkICppbnAsdm9pZCAqb3V0LGNvbnN0IEFF U19LRVkgKmtleSk7Ci0rIwotK3sgbXkgKCRpbnAsJG91dCwka2V5KSA9IEBfNGFyZ3M7Ci0rCi0r JGNvZGUuPTw8X19fOwotKy5nbG9ibAkke1BSRUZJWH1fZW5jcnlwdAotKy50eXBlCSR7UFJFRklY fV9lbmNyeXB0LFxAYWJpLW9tbmlwb3RlbnQKLSsuYWxpZ24JMTYKLSske1BSRUZJWH1fZW5jcnlw dDoKLSsJbW92dXBzCSgkaW5wKSwkaW5vdXQwCQkjIGxvYWQgaW5wdXQKLSsJbW92CTI0MCgka2V5 KSwkcm91bmRzCSMgcHVsbCAkcm91bmRzCi0rX19fCi0rCSZhZXNuaV9nZW5lcmF0ZTEoImVuYyIs JGtleSwkcm91bmRzKTsKLSskY29kZS49PDxfX187Ci0rCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQkJ IyBvdXRwdXQKLSsJcmV0Ci0rLnNpemUJJHtQUkVGSVh9X2VuY3J5cHQsLi0ke1BSRUZJWH1fZW5j cnlwdAotKwotKy5nbG9ibAkke1BSRUZJWH1fZGVjcnlwdAotKy50eXBlCSR7UFJFRklYfV9kZWNy eXB0LFxAYWJpLW9tbmlwb3RlbnQKLSsuYWxpZ24JMTYKLSske1BSRUZJWH1fZGVjcnlwdDoKLSsJ bW92dXBzCSgkaW5wKSwkaW5vdXQwCQkjIGxvYWQgaW5wdXQKLSsJbW92CTI0MCgka2V5KSwkcm91 bmRzCSMgcHVsbCAkcm91bmRzCi0rX19fCi0rCSZhZXNuaV9nZW5lcmF0ZTEoImRlYyIsJGtleSwk cm91bmRzKTsKLSskY29kZS49PDxfX187Ci0rCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQkJIyBvdXRw dXQKLSsJcmV0Ci0rLnNpemUJJHtQUkVGSVh9X2RlY3J5cHQsIC4tJHtQUkVGSVh9X2RlY3J5cHQK LStfX18KLSt9Ci0rDAotKyMgX2Flc25pX1tlbnxkZV1jcnlwdFszNF0gYXJlIHByaXZhdGUgaW50 ZXJmYWNlcywgTiBkZW5vdGVzIGludGVybGVhdmUKLSsjIGZhY3Rvci4gV2h5IDN4IHN1YnJvdXRp bmUgaXMgdXNlZCBpbiBsb29wcz8gRXZlbiB0aG91Z2ggYWVzW2VuY3xkZWNdCi0rIyBsYXRlbmN5 IGlzIDYsIGl0IHR1cm5lZCBvdXQgdGhhdCBpdCBjYW4gYmUgc2NoZWR1bGVkIG9ubHkgZXZlcnkK LSsjICpzZWNvbmQqIGN5Y2xlLiBUaHVzIDN4IGludGVybGVhdmUgaXMgdGhlIG9uZSBwcm92aWRp bmcgb3B0aW1hbAotKyMgdXRpbGl6YXRpb24sIGkuZS4gd2hlbiBzdWJyb3V0aW5lJ3MgdGhyb3Vn aHB1dCBpcyB2aXJ0dWFsbHkgc2FtZSBhcwotKyMgb2Ygbm9uLWludGVybGVhdmVkIHN1YnJvdXRp bmUgW2ZvciBudW1iZXIgb2YgaW5wdXQgYmxvY2tzIHVwIHRvIDNdLgotKyMgVGhpcyBpcyB3aHkg aXQgbWFrZXMgbm8gc2Vuc2UgdG8gaW1wbGVtZW50IDJ4IHN1YnJvdXRpbmUuIEFzIHNvb24KLSsj IGFzL2lmIEludGVsIGltcHJvdmVzIHRocm91Z2hwdXQgYnkgbWFraW5nIGl0IHBvc3NpYmxlIHRv IHNjaGVkdWxlCi0rIyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHF1ZXN0aW9uICpldmVyeSogY3ljbGVz IEkgd291bGQgaGF2ZSB0bwotKyMgaW1wbGVtZW50IDZ4IGludGVybGVhdmUgYW5kIHVzZSBpdCBp biBsb29wLi4uCi0rc3ViIGFlc25pX2dlbmVyYXRlMyB7Ci0rbXkgJGRpcj1zaGlmdDsKLSsjIEFz IGFscmVhZHkgbWVudGlvbmVkIGl0IHRha2VzIGluICRrZXkgYW5kICRyb3VuZHMsIHdoaWNoIGFy ZSAqbm90KgotKyMgcHJlc2VydmVkLiAkaW5vdXRbMC0yXSBpcyBjaXBoZXIvY2xlYXIgdGV4dC4u LgotKyRjb2RlLj08PF9fXzsKLSsudHlwZQlfYWVzbmlfJHtkaXJ9cnlwdDMsXEBhYmktb21uaXBv dGVudAotKy5hbGlnbgkxNgotK19hZXNuaV8ke2Rpcn1yeXB0MzoKLSsJJG1vdmtleQkoJGtleSks JHJuZGtleTAKLSsJc2hyCVwkMSwkcm91bmRzCi0rCSRtb3ZrZXkJMTYoJGtleSksJHJuZGtleTEK LSsJbGVhCTMyKCRrZXkpLCRrZXkKLSsJcHhvcgkkcm5ka2V5MCwkaW5vdXQwCi0rCXB4b3IJJHJu ZGtleTAsJGlub3V0MQotKwlweG9yCSRybmRrZXkwLCRpbm91dDIKLSsKLSsuTCR7ZGlyfV9sb29w MzoKLSsJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKLSsJJG1vdmtleQkJKCRrZXkpLCRybmRr ZXkwCi0rCWFlcyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQxCi0rCWRlYwkJJHJvdW5kcwotKwlhZXMk e2Rpcn0JJHJuZGtleTEsJGlub3V0MgotKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MAotKwkk bW92a2V5CQkxNigka2V5KSwkcm5ka2V5MQotKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MQot KwlsZWEJCTMyKCRrZXkpLCRrZXkKLSsJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDIKLSsJam56 CQkuTCR7ZGlyfV9sb29wMwotKwotKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MAotKwkkbW92 a2V5CQkoJGtleSksJHJuZGtleTAKLSsJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDEKLSsJYWVz JHtkaXJ9CSRybmRrZXkxLCRpbm91dDIKLSsJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQw Ci0rCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0MQotKwlhZXMke2Rpcn1sYXN0CSRybmRr ZXkwLCRpbm91dDIKLSsJcmV0Ci0rLnNpemUJX2Flc25pXyR7ZGlyfXJ5cHQzLC4tX2Flc25pXyR7 ZGlyfXJ5cHQzCi0rX19fCi0rfQotKyMgNHggaW50ZXJsZWF2ZSBpcyBpbXBsZW1lbnRlZCB0byBp bXByb3ZlIHNtYWxsIGJsb2NrIHBlcmZvcm1hbmNlLAotKyMgbW9zdCBub3RhYmx5IFthbmQgbmF0 dXJhbGx5XSA0IGJsb2NrIGJ5IH4zMCUuIE9uZSBjYW4gYXJndWUgdGhhdCBvbmUKLSsjIHNob3Vs ZCBoYXZlIGltcGxlbWVudGVkIDV4IGFzIHdlbGwsIGJ1dCBpbXByb3ZlbWVudCB3b3VsZCBiZSA8 MjAlLAotKyMgc28gaXQncyBub3Qgd29ydGggaXQuLi4KLStzdWIgYWVzbmlfZ2VuZXJhdGU0IHsK LStteSAkZGlyPXNoaWZ0OwotKyMgQXMgYWxyZWFkeSBtZW50aW9uZWQgaXQgdGFrZXMgaW4gJGtl eSBhbmQgJHJvdW5kcywgd2hpY2ggYXJlICpub3QqCi0rIyBwcmVzZXJ2ZWQuICRpbm91dFswLTNd IGlzIGNpcGhlci9jbGVhciB0ZXh0Li4uCi0rJGNvZGUuPTw8X19fOwotKy50eXBlCV9hZXNuaV8k e2Rpcn1yeXB0NCxcQGFiaS1vbW5pcG90ZW50Ci0rLmFsaWduCTE2Ci0rX2Flc25pXyR7ZGlyfXJ5 cHQ0OgotKwkkbW92a2V5CSgka2V5KSwkcm5ka2V5MAotKwlzaHIJXCQxLCRyb3VuZHMKLSsJJG1v dmtleQkxNigka2V5KSwkcm5ka2V5MQotKwlsZWEJMzIoJGtleSksJGtleQotKwlweG9yCSRybmRr ZXkwLCRpbm91dDAKLSsJcHhvcgkkcm5ka2V5MCwkaW5vdXQxCi0rCXB4b3IJJHJuZGtleTAsJGlu b3V0MgotKwlweG9yCSRybmRrZXkwLCRpbm91dDMKLSsKLSsuTCR7ZGlyfV9sb29wNDoKLSsJYWVz JHtkaXJ9CSRybmRrZXkxLCRpbm91dDAKLSsJJG1vdmtleQkJKCRrZXkpLCRybmRrZXkwCi0rCWFl cyR7ZGlyfQkkcm5ka2V5MSwkaW5vdXQxCi0rCWRlYwkJJHJvdW5kcwotKwlhZXMke2Rpcn0JJHJu ZGtleTEsJGlub3V0MgotKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MwotKwlhZXMke2Rpcn0J JHJuZGtleTAsJGlub3V0MAotKwkkbW92a2V5CQkxNigka2V5KSwkcm5ka2V5MQotKwlhZXMke2Rp cn0JJHJuZGtleTAsJGlub3V0MQotKwlsZWEJCTMyKCRrZXkpLCRrZXkKLSsJYWVzJHtkaXJ9CSRy bmRrZXkwLCRpbm91dDIKLSsJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDMKLSsJam56CQkuTCR7 ZGlyfV9sb29wNAotKwotKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MAotKwkkbW92a2V5CQko JGtleSksJHJuZGtleTAKLSsJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDEKLSsJYWVzJHtkaXJ9 CSRybmRrZXkxLCRpbm91dDIKLSsJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDMKLSsJYWVzJHtk aXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQwCi0rCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0 MQotKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDIKLSsJYWVzJHtkaXJ9bGFzdAkkcm5k a2V5MCwkaW5vdXQzCi0rCXJldAotKy5zaXplCV9hZXNuaV8ke2Rpcn1yeXB0NCwuLV9hZXNuaV8k e2Rpcn1yeXB0NAotK19fXwotK30KLSsmYWVzbmlfZ2VuZXJhdGUzKCJlbmMiKSBpZiAoJFBSRUZJ WCBlcSAiYWVzbmkiKTsKLSsmYWVzbmlfZ2VuZXJhdGUzKCJkZWMiKTsKLSsmYWVzbmlfZ2VuZXJh dGU0KCJlbmMiKSBpZiAoJFBSRUZJWCBlcSAiYWVzbmkiKTsKLSsmYWVzbmlfZ2VuZXJhdGU0KCJk ZWMiKTsKLSsMCi0raWYgKCRQUkVGSVggZXEgImFlc25pIikgewotKyMgdm9pZCBhZXNuaV9lY2Jf ZW5jcnlwdCAoY29uc3Qgdm9pZCAqaW4sIHZvaWQgKm91dCwKLSsjCQkJICBzaXplX3QgbGVuZ3Ro LCBjb25zdCBBRVNfS0VZICprZXksCi0rIwkJCSAgaW50IGVuYyk7Ci0rJGNvZGUuPTw8X19fOwot Ky5nbG9ibAlhZXNuaV9lY2JfZW5jcnlwdAotKy50eXBlCWFlc25pX2VjYl9lbmNyeXB0LFxAZnVu Y3Rpb24sNQotKy5hbGlnbgkxNgotK2Flc25pX2VjYl9lbmNyeXB0OgotKwljbXAJXCQxNiwkbGVu CQkjIGNoZWNrIGxlbmd0aAotKwlqYgkuTGVjYl9yZXQKLSsKLSsJbW92CTI0MCgka2V5KSwkcm91 bmRzCSMgcHVsbCAkcm91bmRzCi0rCWFuZAlcJC0xNiwkbGVuCi0rCW1vdgkka2V5LCRrZXlfCQkj IGJhY2t1cCAka2V5Ci0rCXRlc3QJJXI4ZCwlcjhkCQkjIDV0aCBhcmd1bWVudAotKwltb3YJJHJv dW5kcywkcm5kc18JCSMgYmFja3VwICRyb3VuZHMKLSsJanoJLkxlY2JfZGVjcnlwdAotKyMtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRUNCIEVOQ1JZUFQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tIwotKwlzdWIJXCQweDQwLCRsZW4KLSsJamJlCS5MZWNiX2VuY190YWlsCi0rCWpt cAkuTGVjYl9lbmNfbG9vcDMKLSsuYWxpZ24gMTYKLSsuTGVjYl9lbmNfbG9vcDM6Ci0rCW1vdnVw cwkoJGlucCksJGlub3V0MAotKwltb3Z1cHMJMHgxMCgkaW5wKSwkaW5vdXQxCi0rCW1vdnVwcwkw eDIwKCRpbnApLCRpbm91dDIKLSsJY2FsbAlfYWVzbmlfZW5jcnlwdDMKLSsJc3ViCVwkMHgzMCwk bGVuCi0rCWxlYQkweDMwKCRpbnApLCRpbnAKLSsJbGVhCTB4MzAoJG91dCksJG91dAotKwltb3Z1 cHMJJGlub3V0MCwtMHgzMCgkb3V0KQotKwltb3YJJHJuZHNfLCRyb3VuZHMJCSMgcmVzdG9yZSAk cm91bmRzCi0rCW1vdnVwcwkkaW5vdXQxLC0weDIwKCRvdXQpCi0rCW1vdgkka2V5Xywka2V5CQkj IHJlc3RvcmUgJGtleQotKwltb3Z1cHMJJGlub3V0MiwtMHgxMCgkb3V0KQotKwlqYQkuTGVjYl9l bmNfbG9vcDMKLSsKLSsuTGVjYl9lbmNfdGFpbDoKLSsJYWRkCVwkMHg0MCwkbGVuCi0rCWp6CS5M ZWNiX3JldAotKwotKwljbXAJXCQweDEwLCRsZW4KLSsJbW92dXBzCSgkaW5wKSwkaW5vdXQwCi0r CWplCS5MZWNiX2VuY19vbmUKLSsJY21wCVwkMHgyMCwkbGVuCi0rCW1vdnVwcwkweDEwKCRpbnAp LCRpbm91dDEKLSsJamUJLkxlY2JfZW5jX3R3bwotKwljbXAJXCQweDMwLCRsZW4KLSsJbW92dXBz CTB4MjAoJGlucCksJGlub3V0MgotKwlqZQkuTGVjYl9lbmNfdGhyZWUKLSsJbW92dXBzCTB4MzAo JGlucCksJGlub3V0MwotKwljYWxsCV9hZXNuaV9lbmNyeXB0NAotKwltb3Z1cHMJJGlub3V0MCwo JG91dCkKLSsJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQotKwltb3Z1cHMJJGlub3V0MiwweDIw KCRvdXQpCi0rCW1vdnVwcwkkaW5vdXQzLDB4MzAoJG91dCkKLSsJam1wCS5MZWNiX3JldAotKy5h bGlnbgkxNgotKy5MZWNiX2VuY19vbmU6Ci0rX19fCi0rCSZhZXNuaV9nZW5lcmF0ZTEoImVuYyIs JGtleSwkcm91bmRzKTsKLSskY29kZS49PDxfX187Ci0rCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQot KwlqbXAJLkxlY2JfcmV0Ci0rLmFsaWduCTE2Ci0rLkxlY2JfZW5jX3R3bzoKLSsJY2FsbAlfYWVz bmlfZW5jcnlwdDMKLSsJbW92dXBzCSRpbm91dDAsKCRvdXQpCi0rCW1vdnVwcwkkaW5vdXQxLDB4 MTAoJG91dCkKLSsJam1wCS5MZWNiX3JldAotKy5hbGlnbgkxNgotKy5MZWNiX2VuY190aHJlZToK LSsJY2FsbAlfYWVzbmlfZW5jcnlwdDMKLSsJbW92dXBzCSRpbm91dDAsKCRvdXQpCi0rCW1vdnVw cwkkaW5vdXQxLDB4MTAoJG91dCkKLSsJbW92dXBzCSRpbm91dDIsMHgyMCgkb3V0KQotKwlqbXAJ LkxlY2JfcmV0Ci0rDCMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRUNCIERFQ1JZUFQgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIwotKy5hbGlnbgkxNgotKy5MZWNiX2RlY3J5cHQ6 Ci0rCXN1YglcJDB4NDAsJGxlbgotKwlqYmUJLkxlY2JfZGVjX3RhaWwKLSsJam1wCS5MZWNiX2Rl Y19sb29wMwotKy5hbGlnbiAxNgotKy5MZWNiX2RlY19sb29wMzoKLSsJbW92dXBzCSgkaW5wKSwk aW5vdXQwCi0rCW1vdnVwcwkweDEwKCRpbnApLCRpbm91dDEKLSsJbW92dXBzCTB4MjAoJGlucCks JGlub3V0MgotKwljYWxsCV9hZXNuaV9kZWNyeXB0MwotKwlzdWIJXCQweDMwLCRsZW4KLSsJbGVh CTB4MzAoJGlucCksJGlucAotKwlsZWEJMHgzMCgkb3V0KSwkb3V0Ci0rCW1vdnVwcwkkaW5vdXQw LC0weDMwKCRvdXQpCi0rCW1vdgkkcm5kc18sJHJvdW5kcwkJIyByZXN0b3JlICRyb3VuZHMKLSsJ bW92dXBzCSRpbm91dDEsLTB4MjAoJG91dCkKLSsJbW92CSRrZXlfLCRrZXkJCSMgcmVzdG9yZSAk a2V5Ci0rCW1vdnVwcwkkaW5vdXQyLC0weDEwKCRvdXQpCi0rCWphCS5MZWNiX2RlY19sb29wMwot KwotKy5MZWNiX2RlY190YWlsOgotKwlhZGQJXCQweDQwLCRsZW4KLSsJanoJLkxlY2JfcmV0Ci0r Ci0rCWNtcAlcJDB4MTAsJGxlbgotKwltb3Z1cHMJKCRpbnApLCRpbm91dDAKLSsJamUJLkxlY2Jf ZGVjX29uZQotKwljbXAJXCQweDIwLCRsZW4KLSsJbW92dXBzCTB4MTAoJGlucCksJGlub3V0MQot KwlqZQkuTGVjYl9kZWNfdHdvCi0rCWNtcAlcJDB4MzAsJGxlbgotKwltb3Z1cHMJMHgyMCgkaW5w KSwkaW5vdXQyCi0rCWplCS5MZWNiX2RlY190aHJlZQotKwltb3Z1cHMJMHgzMCgkaW5wKSwkaW5v dXQzCi0rCWNhbGwJX2Flc25pX2RlY3J5cHQ0Ci0rCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQotKwlt b3Z1cHMJJGlub3V0MSwweDEwKCRvdXQpCi0rCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKLSsJ bW92dXBzCSRpbm91dDMsMHgzMCgkb3V0KQotKwlqbXAJLkxlY2JfcmV0Ci0rLmFsaWduCTE2Ci0r LkxlY2JfZGVjX29uZToKLStfX18KLSsJJmFlc25pX2dlbmVyYXRlMSgiZGVjIiwka2V5LCRyb3Vu ZHMpOwotKyRjb2RlLj08PF9fXzsKLSsJbW92dXBzCSRpbm91dDAsKCRvdXQpCi0rCWptcAkuTGVj Yl9yZXQKLSsuYWxpZ24JMTYKLSsuTGVjYl9kZWNfdHdvOgotKwljYWxsCV9hZXNuaV9kZWNyeXB0 MwotKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKLSsJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQot KwlqbXAJLkxlY2JfcmV0Ci0rLmFsaWduCTE2Ci0rLkxlY2JfZGVjX3RocmVlOgotKwljYWxsCV9h ZXNuaV9kZWNyeXB0MwotKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKLSsJbW92dXBzCSRpbm91dDEs MHgxMCgkb3V0KQotKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCi0rCi0rLkxlY2JfcmV0Ogot KwlyZXQKLSsuc2l6ZQlhZXNuaV9lY2JfZW5jcnlwdCwuLWFlc25pX2VjYl9lbmNyeXB0Ci0rX19f Ci0rfQotKwwKLSsjIHZvaWQgJFBSRUZJWF9jYmNfZW5jcnlwdCAoY29uc3Qgdm9pZCAqaW5wLCB2 b2lkICpvdXQsCi0rIwkJCSAgICBzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCi0r IwkJCSAgICB1bnNpZ25lZCBjaGFyICppdnAsY29uc3QgaW50IGVuYyk7Ci0rJHJlc2VydmVkID0g JHdpbjY0PzB4NDA6LTB4MTg7CSMgdXNlZCBpbiBkZWNyeXB0Ci0rJGNvZGUuPTw8X19fOwotKy5n bG9ibAkke1BSRUZJWH1fY2JjX2VuY3J5cHQKLSsudHlwZQkke1BSRUZJWH1fY2JjX2VuY3J5cHQs XEBmdW5jdGlvbiw2Ci0rLmFsaWduCTE2Ci0rJHtQUkVGSVh9X2NiY19lbmNyeXB0OgotKwl0ZXN0 CSRsZW4sJGxlbgkJIyBjaGVjayBsZW5ndGgKLSsJanoJLkxjYmNfcmV0Ci0rCi0rCW1vdgkyNDAo JGtleSksJHJuZHNfCSMgcHVsbCAkcm91bmRzCi0rCW1vdgkka2V5LCRrZXlfCQkjIGJhY2t1cCAk a2V5Ci0rCXRlc3QJJXI5ZCwlcjlkCQkjIDZ0aCBhcmd1bWVudAotKwlqegkuTGNiY19kZWNyeXB0 Ci0rIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDQkMgRU5DUllQVCAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0jCi0rCW1vdnVwcwkoJGl2cCksJGlub3V0MAkJIyBsb2FkIGl2IGFz IGluaXRpYWwgc3RhdGUKLSsJY21wCVwkMTYsJGxlbgotKwltb3YJJHJuZHNfLCRyb3VuZHMKLSsJ amIJLkxjYmNfZW5jX3RhaWwKLSsJc3ViCVwkMTYsJGxlbgotKwlqbXAJLkxjYmNfZW5jX2xvb3AK LSsuYWxpZ24gMTYKLSsuTGNiY19lbmNfbG9vcDoKLSsJbW92dXBzCSgkaW5wKSwkaW5vdXQxCQkj IGxvYWQgaW5wdXQKLSsJbGVhCTE2KCRpbnApLCRpbnAKLSsJcHhvcgkkaW5vdXQxLCRpbm91dDAK LStfX18KLSsJJmFlc25pX2dlbmVyYXRlMSgiZW5jIiwka2V5LCRyb3VuZHMpOwotKyRjb2RlLj08 PF9fXzsKLSsJc3ViCVwkMTYsJGxlbgotKwlsZWEJMTYoJG91dCksJG91dAotKwltb3YJJHJuZHNf LCRyb3VuZHMJCSMgcmVzdG9yZSAkcm91bmRzCi0rCW1vdgkka2V5Xywka2V5CQkjIHJlc3RvcmUg JGtleQotKwltb3Z1cHMJJGlub3V0MCwtMTYoJG91dCkJIyBzdG9yZSBvdXRwdXQKLSsJam5jCS5M Y2JjX2VuY19sb29wCi0rCWFkZAlcJDE2LCRsZW4KLSsJam56CS5MY2JjX2VuY190YWlsCi0rCW1v dnVwcwkkaW5vdXQwLCgkaXZwKQotKwlqbXAJLkxjYmNfcmV0Ci0rCi0rLkxjYmNfZW5jX3RhaWw6 Ci0rCW1vdgkkbGVuLCVyY3gJIyB6YXBzICRrZXkKLSsJeGNoZwkkaW5wLCRvdXQJIyAkaW5wIGlz ICVyc2kgYW5kICRvdXQgaXMgJXJkaSBub3cKLSsJLmxvbmcJMHg5MDY2QTRGMwkjIHJlcCBtb3Zz YgotKwltb3YJXCQxNiwlZWN4CSMgemVybyB0YWlsCi0rCXN1YgkkbGVuLCVyY3gKLSsJeG9yCSVl YXgsJWVheAotKwkubG9uZwkweDkwNjZBQUYzCSMgcmVwIHN0b3NiCi0rCWxlYQktMTYoJXJkaSks JXJkaQkjIHJld2luZCAkb3V0IGJ5IDEgYmxvY2sKLSsJbW92CSRybmRzXywkcm91bmRzCSMgcmVz dG9yZSAkcm91bmRzCi0rCW1vdgklcmRpLCVyc2kJIyAkaW5wIGFuZCAkb3V0IGFyZSB0aGUgc2Ft ZQotKwltb3YJJGtleV8sJGtleQkjIHJlc3RvcmUgJGtleQotKwl4b3IJJGxlbiwkbGVuCSMgbGVu PTE2Ci0rCWptcAkuTGNiY19lbmNfbG9vcAkjIG9uZSBtb3JlIHNwaW4KLSsMIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSBDQkMgREVDUllQVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0jCi0rLmFsaWduCTE2Ci0rLkxjYmNfZGVjcnlwdDoKLStfX18KLSskY29kZS49PDxfX18gaWYg KCR3aW42NCk7Ci0rCWxlYQktMHg1OCglcnNwKSwlcnNwCi0rCW1vdmFwcwkleG1tNiwoJXJzcCkK LSsJbW92YXBzCSV4bW03LDB4MTAoJXJzcCkKLSsJbW92YXBzCSV4bW04LDB4MjAoJXJzcCkKLSsJ bW92YXBzCSV4bW05LDB4MzAoJXJzcCkKLSsuTGNiY19kZWNyeXB0X2JvZHk6Ci0rX19fCi0rJGNv ZGUuPTw8X19fOwotKwltb3Z1cHMJKCRpdnApLCRpdgotKwlzdWIJXCQweDQwLCRsZW4KLSsJbW92 CSRybmRzXywkcm91bmRzCi0rCWpiZQkuTGNiY19kZWNfdGFpbAotKwlqbXAJLkxjYmNfZGVjX2xv b3AzCi0rLmFsaWduIDE2Ci0rLkxjYmNfZGVjX2xvb3AzOgotKwltb3Z1cHMJKCRpbnApLCRpbm91 dDAKLSsJbW92dXBzCTB4MTAoJGlucCksJGlub3V0MQotKwltb3Z1cHMJMHgyMCgkaW5wKSwkaW5v dXQyCi0rCW1vdmFwcwkkaW5vdXQwLCRpbjAKLSsJbW92YXBzCSRpbm91dDEsJGluMQotKwltb3Zh cHMJJGlub3V0MiwkaW4yCi0rCWNhbGwJX2Flc25pX2RlY3J5cHQzCi0rCXN1YglcJDB4MzAsJGxl bgotKwlsZWEJMHgzMCgkaW5wKSwkaW5wCi0rCWxlYQkweDMwKCRvdXQpLCRvdXQKLSsJcHhvcgkk aXYsJGlub3V0MAotKwlweG9yCSRpbjAsJGlub3V0MQotKwltb3ZhcHMJJGluMiwkaXYKLSsJcHhv cgkkaW4xLCRpbm91dDIKLSsJbW92dXBzCSRpbm91dDAsLTB4MzAoJG91dCkKLSsJbW92CSRybmRz Xywkcm91bmRzCSMgcmVzdG9yZSAkcm91bmRzCi0rCW1vdnVwcwkkaW5vdXQxLC0weDIwKCRvdXQp Ci0rCW1vdgkka2V5Xywka2V5CSMgcmVzdG9yZSAka2V5Ci0rCW1vdnVwcwkkaW5vdXQyLC0weDEw KCRvdXQpCi0rCWphCS5MY2JjX2RlY19sb29wMwotKwotKy5MY2JjX2RlY190YWlsOgotKwlhZGQJ XCQweDQwLCRsZW4KLSsJbW92dXBzCSRpdiwoJGl2cCkKLSsJanoJLkxjYmNfZGVjX3JldAotKwot Kwltb3Z1cHMJKCRpbnApLCRpbm91dDAKLSsJY21wCVwkMHgxMCwkbGVuCi0rCW1vdmFwcwkkaW5v dXQwLCRpbjAKLSsJamJlCS5MY2JjX2RlY19vbmUKLSsJbW92dXBzCTB4MTAoJGlucCksJGlub3V0 MQotKwljbXAJXCQweDIwLCRsZW4KLSsJbW92YXBzCSRpbm91dDEsJGluMQotKwlqYmUJLkxjYmNf ZGVjX3R3bwotKwltb3Z1cHMJMHgyMCgkaW5wKSwkaW5vdXQyCi0rCWNtcAlcJDB4MzAsJGxlbgot Kwltb3ZhcHMJJGlub3V0MiwkaW4yCi0rCWpiZQkuTGNiY19kZWNfdGhyZWUKLSsJbW92dXBzCTB4 MzAoJGlucCksJGlub3V0MwotKwljYWxsCV9hZXNuaV9kZWNyeXB0NAotKwlweG9yCSRpdiwkaW5v dXQwCi0rCW1vdnVwcwkweDMwKCRpbnApLCRpdgotKwlweG9yCSRpbjAsJGlub3V0MQotKwltb3Z1 cHMJJGlub3V0MCwoJG91dCkKLSsJcHhvcgkkaW4xLCRpbm91dDIKLSsJbW92dXBzCSRpbm91dDEs MHgxMCgkb3V0KQotKwlweG9yCSRpbjIsJGlub3V0MwotKwltb3Z1cHMJJGlub3V0MiwweDIwKCRv dXQpCi0rCW1vdmFwcwkkaW5vdXQzLCRpbm91dDAKLSsJbGVhCTB4MzAoJG91dCksJG91dAotKwlq bXAJLkxjYmNfZGVjX3RhaWxfY29sbGVjdGVkCi0rLmFsaWduCTE2Ci0rLkxjYmNfZGVjX29uZToK LStfX18KLSsJJmFlc25pX2dlbmVyYXRlMSgiZGVjIiwka2V5LCRyb3VuZHMpOwotKyRjb2RlLj08 PF9fXzsKLSsJcHhvcgkkaXYsJGlub3V0MAotKwltb3ZhcHMJJGluMCwkaXYKLSsJam1wCS5MY2Jj X2RlY190YWlsX2NvbGxlY3RlZAotKy5hbGlnbgkxNgotKy5MY2JjX2RlY190d286Ci0rCWNhbGwJ X2Flc25pX2RlY3J5cHQzCi0rCXB4b3IJJGl2LCRpbm91dDAKLSsJcHhvcgkkaW4wLCRpbm91dDEK LSsJbW92dXBzCSRpbm91dDAsKCRvdXQpCi0rCW1vdmFwcwkkaW4xLCRpdgotKwltb3ZhcHMJJGlu b3V0MSwkaW5vdXQwCi0rCWxlYQkweDEwKCRvdXQpLCRvdXQKLSsJam1wCS5MY2JjX2RlY190YWls X2NvbGxlY3RlZAotKy5hbGlnbgkxNgotKy5MY2JjX2RlY190aHJlZToKLSsJY2FsbAlfYWVzbmlf ZGVjcnlwdDMKLSsJcHhvcgkkaXYsJGlub3V0MAotKwlweG9yCSRpbjAsJGlub3V0MQotKwltb3Z1 cHMJJGlub3V0MCwoJG91dCkKLSsJcHhvcgkkaW4xLCRpbm91dDIKLSsJbW92dXBzCSRpbm91dDEs MHgxMCgkb3V0KQotKwltb3ZhcHMJJGluMiwkaXYKLSsJbW92YXBzCSRpbm91dDIsJGlub3V0MAot KwlsZWEJMHgyMCgkb3V0KSwkb3V0Ci0rCWptcAkuTGNiY19kZWNfdGFpbF9jb2xsZWN0ZWQKLSsu YWxpZ24JMTYKLSsuTGNiY19kZWNfdGFpbF9jb2xsZWN0ZWQ6Ci0rCWFuZAlcJDE1LCRsZW4KLSsJ bW92dXBzCSRpdiwoJGl2cCkKLSsJam56CS5MY2JjX2RlY190YWlsX3BhcnRpYWwKLSsJbW92dXBz CSRpbm91dDAsKCRvdXQpCi0rCWptcAkuTGNiY19kZWNfcmV0Ci0rLkxjYmNfZGVjX3RhaWxfcGFy dGlhbDoKLSsJbW92YXBzCSRpbm91dDAsJHJlc2VydmVkKCVyc3ApCi0rCW1vdgkkb3V0LCVyZGkK LSsJbW92CSRsZW4sJXJjeAotKwlsZWEJJHJlc2VydmVkKCVyc3ApLCVyc2kKLSsJLmxvbmcJMHg5 MDY2QTRGMwkjIHJlcCBtb3ZzYgotKwotKy5MY2JjX2RlY19yZXQ6Ci0rX19fCi0rJGNvZGUuPTw8 X19fIGlmICgkd2luNjQpOwotKwltb3ZhcHMJKCVyc3ApLCV4bW02Ci0rCW1vdmFwcwkweDEwKCVy c3ApLCV4bW03Ci0rCW1vdmFwcwkweDIwKCVyc3ApLCV4bW04Ci0rCW1vdmFwcwkweDMwKCVyc3Ap LCV4bW05Ci0rCWxlYQkweDU4KCVyc3ApLCVyc3AKLStfX18KLSskY29kZS49PDxfX187Ci0rLkxj YmNfcmV0OgotKwlyZXQKLSsuc2l6ZQkke1BSRUZJWH1fY2JjX2VuY3J5cHQsLi0ke1BSRUZJWH1f Y2JjX2VuY3J5cHQKLStfX18KLSsMCi0rIyBpbnQgJFBSRUZJWF9zZXRfW2VufGRlXWNyeXB0X2tl eSAoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwKLSsjCQkJCWludCBiaXRzLCBBRVNfS0VZ ICprZXkpCi0reyBteSAoJGlucCwkYml0cywka2V5KSA9IEBfNGFyZ3M7Ci0rICAkYml0cyA9fiBz LyVyLyVlLzsKLSsKLSskY29kZS49PDxfX187Ci0rLmdsb2JsCSR7UFJFRklYfV9zZXRfZGVjcnlw dF9rZXkKLSsudHlwZQkke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5LFxAYWJpLW9tbmlwb3RlbnQK LSsuYWxpZ24JMTYKLSske1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5OgotKwkuYnl0ZQkweDQ4LDB4 ODMsMHhFQywweDA4CSMgc3ViIHJzcCw4Ci0rCWNhbGwJX2Flc25pX3NldF9lbmNyeXB0X2tleQot KwlzaGwJXCQ0LCRiaXRzCQkjIHJvdW5kcy0xIGFmdGVyIF9hZXNuaV9zZXRfZW5jcnlwdF9rZXkK LSsJdGVzdAklZWF4LCVlYXgKLSsJam56CS5MZGVjX2tleV9yZXQKLSsJbGVhCTE2KCRrZXksJGJp dHMpLCRpbnAJIyBwb2ludHMgYXQgdGhlIGVuZCBvZiBrZXkgc2NoZWR1bGUKLSsKLSsJJG1vdmtl eQkoJGtleSksJXhtbTAJCSMganVzdCBzd2FwCi0rCSRtb3ZrZXkJKCRpbnApLCV4bW0xCi0rCSRt b3ZrZXkJJXhtbTAsKCRpbnApCi0rCSRtb3ZrZXkJJXhtbTEsKCRrZXkpCi0rCWxlYQkxNigka2V5 KSwka2V5Ci0rCWxlYQktMTYoJGlucCksJGlucAotKwotKy5MZGVjX2tleV9pbnZlcnNlOgotKwkk bW92a2V5CSgka2V5KSwleG1tMAkJIyBzd2FwIGFuZCBpbnZlcnNlCi0rCSRtb3ZrZXkJKCRpbnAp LCV4bW0xCi0rCWFlc2ltYwkleG1tMCwleG1tMAotKwlhZXNpbWMJJXhtbTEsJXhtbTEKLSsJbGVh CTE2KCRrZXkpLCRrZXkKLSsJbGVhCS0xNigkaW5wKSwkaW5wCi0rCWNtcAkka2V5LCRpbnAKLSsJ JG1vdmtleQkleG1tMCwxNigkaW5wKQotKwkkbW92a2V5CSV4bW0xLC0xNigka2V5KQotKwlqYQku TGRlY19rZXlfaW52ZXJzZQotKwotKwkkbW92a2V5CSgka2V5KSwleG1tMAkJIyBpbnZlcnNlIG1p ZGRsZQotKwlhZXNpbWMJJXhtbTAsJXhtbTAKLSsJJG1vdmtleQkleG1tMCwoJGlucCkKLSsuTGRl Y19rZXlfcmV0OgotKwlhZGQJXCQ4LCVyc3AKLSsJcmV0Ci0rLkxTRUhfZW5kX3NldF9kZWNyeXB0 X2tleToKLSsuc2l6ZQkke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5LC4tJHtQUkVGSVh9X3NldF9k ZWNyeXB0X2tleQotK19fXwotKwwKLSsjIFRoaXMgaXMgYmFzZWQgb24gc3VibWlzc2lvbiBieQot KyMKLSsjCUh1YW5nIFlpbmcgPHlpbmcuaHVhbmdAaW50ZWwuY29tPgotKyMJVmlub2RoIEdvcGFs IDx2aW5vZGguZ29wYWxAaW50ZWwuY29tPgotKyMJS2FocmFtYW4gQWtkZW1pcgotKyMKLSsjIEFn cmVzc2l2ZWx5IG9wdGltaXplZCBpbiByZXNwZWN0IHRvIGFlc2tleWdlbmFzc2lzdCdzIGNyaXRp Y2FsIHBhdGgKLSsjIGFuZCBpcyBjb250YWluZWQgaW4gJXhtbTAtNSB0byBtZWV0IFdpbjY0IEFC SSByZXF1aXJlbWVudC4KLSsjCi0rJGNvZGUuPTw8X19fOwotKy5nbG9ibAkke1BSRUZJWH1fc2V0 X2VuY3J5cHRfa2V5Ci0rLnR5cGUJJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleSxcQGFiaS1vbW5p cG90ZW50Ci0rLmFsaWduCTE2Ci0rJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleToKLStfYWVzbmlf c2V0X2VuY3J5cHRfa2V5OgotKwkuYnl0ZQkweDQ4LDB4ODMsMHhFQywweDA4CSMgc3ViIHJzcCw4 Ci0rCXRlc3QJJGlucCwkaW5wCi0rCW1vdglcJC0xLCVyYXgKLSsJanoJLkxlbmNfa2V5X3JldAot Kwl0ZXN0CSRrZXksJGtleQotKwlqegkuTGVuY19rZXlfcmV0Ci0rCi0rCW1vdnVwcwkoJGlucCks JXhtbTAJCSMgcHVsbCBmaXJzdCAxMjggYml0cyBvZiAqdXNlcktleQotKwlweG9yCSV4bW00LCV4 bW00CQkjIGxvdyBkd29yZCBvZiB4bW00IGlzIGFzc3VtZWQgMAotKwlsZWEJMTYoJGtleSksJXJh eAotKwljbXAJXCQyNTYsJGJpdHMKLSsJamUJLkwxNHJvdW5kcwotKwljbXAJXCQxOTIsJGJpdHMK LSsJamUJLkwxMnJvdW5kcwotKwljbXAJXCQxMjgsJGJpdHMKLSsJam5lCS5MYmFkX2tleWJpdHMK LSsKLSsuTDEwcm91bmRzOgotKwltb3YJXCQ5LCRiaXRzCQkJIyAxMCByb3VuZHMgZm9yIDEyOC1i aXQga2V5Ci0rCSRtb3ZrZXkJJXhtbTAsKCRrZXkpCQkJIyByb3VuZCAwCi0rCWFlc2tleWdlbmFz c2lzdAlcJDB4MSwleG1tMCwleG1tMQkjIHJvdW5kIDEKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9u XzEyOF9jb2xkCi0rCWFlc2tleWdlbmFzc2lzdAlcJDB4MiwleG1tMCwleG1tMQkjIHJvdW5kIDIK LSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQsJXht bTAsJXhtbTEJIyByb3VuZCAzCi0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKLSsJYWVza2V5 Z2VuYXNzaXN0CVwkMHg4LCV4bW0wLCV4bW0xCSMgcm91bmQgNAotKwljYWxsCQkuTGtleV9leHBh bnNpb25fMTI4Ci0rCWFlc2tleWdlbmFzc2lzdAlcJDB4MTAsJXhtbTAsJXhtbTEJIyByb3VuZCA1 Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHgyMCwl eG1tMCwleG1tMQkjIHJvdW5kIDYKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAotKwlhZXNr ZXlnZW5hc3Npc3QJXCQweDQwLCV4bW0wLCV4bW0xCSMgcm91bmQgNwotKwljYWxsCQkuTGtleV9l eHBhbnNpb25fMTI4Ci0rCWFlc2tleWdlbmFzc2lzdAlcJDB4ODAsJXhtbTAsJXhtbTEJIyByb3Vu ZCA4Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHgx YiwleG1tMCwleG1tMQkjIHJvdW5kIDkKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAotKwlh ZXNrZXlnZW5hc3Npc3QJXCQweDM2LCV4bW0wLCV4bW0xCSMgcm91bmQgMTAKLSsJY2FsbAkJLkxr ZXlfZXhwYW5zaW9uXzEyOAotKwkkbW92a2V5CSV4bW0wLCglcmF4KQotKwltb3YJJGJpdHMsODAo JXJheCkJIyAyNDAoJXJkeCkKLSsJeG9yCSVlYXgsJWVheAotKwlqbXAJLkxlbmNfa2V5X3JldAot KwotKy5hbGlnbgkxNgotKy5MMTJyb3VuZHM6Ci0rCW1vdnEJMTYoJGlucCksJXhtbTIJCQkjIHJl bWFpbmluZyAxLzMgb2YgKnVzZXJLZXkKLSsJbW92CVwkMTEsJGJpdHMJCQkjIDEyIHJvdW5kcyBm b3IgMTkyCi0rCSRtb3ZrZXkJJXhtbTAsKCRrZXkpCQkJIyByb3VuZCAwCi0rCWFlc2tleWdlbmFz c2lzdAlcJDB4MSwleG1tMiwleG1tMQkjIHJvdW5kIDEsMgotKwljYWxsCQkuTGtleV9leHBhbnNp b25fMTkyYV9jb2xkCi0rCWFlc2tleWdlbmFzc2lzdAlcJDB4MiwleG1tMiwleG1tMQkjIHJvdW5k IDIsMwotKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTkyYgotKwlhZXNrZXlnZW5hc3Npc3QJXCQw eDQsJXhtbTIsJXhtbTEJIyByb3VuZCA0LDUKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmEK LSsJYWVza2V5Z2VuYXNzaXN0CVwkMHg4LCV4bW0yLCV4bW0xCSMgcm91bmQgNSw2Ci0rCWNhbGwJ CS5Ma2V5X2V4cGFuc2lvbl8xOTJiCi0rCWFlc2tleWdlbmFzc2lzdAlcJDB4MTAsJXhtbTIsJXht bTEJIyByb3VuZCA3LDgKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmEKLSsJYWVza2V5Z2Vu YXNzaXN0CVwkMHgyMCwleG1tMiwleG1tMQkjIHJvdW5kIDgsOQotKwljYWxsCQkuTGtleV9leHBh bnNpb25fMTkyYgotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQwLCV4bW0yLCV4bW0xCSMgcm91bmQg MTAsMTEKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmEKLSsJYWVza2V5Z2VuYXNzaXN0CVwk MHg4MCwleG1tMiwleG1tMQkjIHJvdW5kIDExLDEyCi0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8x OTJiCi0rCSRtb3ZrZXkJJXhtbTAsKCVyYXgpCi0rCW1vdgkkYml0cyw0OCglcmF4KQkjIDI0MCgl cmR4KQotKwl4b3IJJXJheCwgJXJheAotKwlqbXAJLkxlbmNfa2V5X3JldAotKwotKy5hbGlnbgkx NgotKy5MMTRyb3VuZHM6Ci0rCW1vdnVwcwkxNigkaW5wKSwleG1tMgkJCSMgcmVtYW5pbmcgaGFs ZiBvZiAqdXNlcktleQotKwltb3YJXCQxMywkYml0cwkJCSMgMTQgcm91bmRzIGZvciAyNTYKLSsJ bGVhCTE2KCVyYXgpLCVyYXgKLSsJJG1vdmtleQkleG1tMCwoJGtleSkJCQkjIHJvdW5kIDAKLSsJ JG1vdmtleQkleG1tMiwxNigka2V5KQkJCSMgcm91bmQgMQotKwlhZXNrZXlnZW5hc3Npc3QJXCQw eDEsJXhtbTIsJXhtbTEJIyByb3VuZCAyCi0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhX2Nv bGQKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHgxLCV4bW0wLCV4bW0xCSMgcm91bmQgMwotKwljYWxs CQkuTGtleV9leHBhbnNpb25fMjU2YgotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIsJXhtbTIsJXht bTEJIyByb3VuZCA0Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCi0rCWFlc2tleWdlbmFz c2lzdAlcJDB4MiwleG1tMCwleG1tMQkjIHJvdW5kIDUKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9u XzI1NmIKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHg0LCV4bW0yLCV4bW0xCSMgcm91bmQgNgotKwlj YWxsCQkuTGtleV9leHBhbnNpb25fMjU2YQotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQsJXhtbTAs JXhtbTEJIyByb3VuZCA3Ci0rCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCi0rCWFlc2tleWdl bmFzc2lzdAlcJDB4OCwleG1tMiwleG1tMQkjIHJvdW5kIDgKLSsJY2FsbAkJLkxrZXlfZXhwYW5z aW9uXzI1NmEKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHg4LCV4bW0wLCV4bW0xCSMgcm91bmQgOQot KwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YgotKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEwLCV4 bW0yLCV4bW0xCSMgcm91bmQgMTAKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmEKLSsJYWVz a2V5Z2VuYXNzaXN0CVwkMHgxMCwleG1tMCwleG1tMQkjIHJvdW5kIDExCi0rCWNhbGwJCS5Ma2V5 X2V4cGFuc2lvbl8yNTZiCi0rCWFlc2tleWdlbmFzc2lzdAlcJDB4MjAsJXhtbTIsJXhtbTEJIyBy b3VuZCAxMgotKwljYWxsCQkuTGtleV9leHBhbnNpb25fMjU2YQotKwlhZXNrZXlnZW5hc3Npc3QJ XCQweDIwLCV4bW0wLCV4bW0xCSMgcm91bmQgMTMKLSsJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1 NmIKLSsJYWVza2V5Z2VuYXNzaXN0CVwkMHg0MCwleG1tMiwleG1tMQkjIHJvdW5kIDE0Ci0rCWNh bGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCi0rCSRtb3ZrZXkJJXhtbTAsKCVyYXgpCi0rCW1vdgkk Yml0cywxNiglcmF4KQkjIDI0MCglcmR4KQotKwl4b3IJJXJheCwlcmF4Ci0rCWptcAkuTGVuY19r ZXlfcmV0Ci0rCi0rLmFsaWduCTE2Ci0rLkxiYWRfa2V5Yml0czoKLSsJbW92CVwkLTIsJXJheAot Ky5MZW5jX2tleV9yZXQ6Ci0rCWFkZAlcJDgsJXJzcAotKwlyZXQKLSsuTFNFSF9lbmRfc2V0X2Vu Y3J5cHRfa2V5OgotKwwKLSsuYWxpZ24JMTYKLSsuTGtleV9leHBhbnNpb25fMTI4OgotKwkkbW92 a2V5CSV4bW0wLCglcmF4KQotKwlsZWEJMTYoJXJheCksJXJheAotKy5Ma2V5X2V4cGFuc2lvbl8x MjhfY29sZDoKLSsJc2h1ZnBzCVwkMGIwMDAxMDAwMCwleG1tMCwleG1tNAotKwlweG9yCSV4bW00 LCAleG1tMAotKwlzaHVmcHMJXCQwYjEwMDAxMTAwLCV4bW0wLCV4bW00Ci0rCXB4b3IJJXhtbTQs ICV4bW0wCi0rCXBzaHVmZAlcJDBiMTExMTExMTEsJXhtbTEsJXhtbTEJIyBjcml0aWNhbCBwYXRo Ci0rCXB4b3IJJXhtbTEsJXhtbTAKLSsJcmV0Ci0rCi0rLmFsaWduIDE2Ci0rLkxrZXlfZXhwYW5z aW9uXzE5MmE6Ci0rCSRtb3ZrZXkJJXhtbTAsKCVyYXgpCi0rCWxlYQkxNiglcmF4KSwlcmF4Ci0r LkxrZXlfZXhwYW5zaW9uXzE5MmFfY29sZDoKLSsJbW92YXBzCSV4bW0yLCAleG1tNQotKy5Ma2V5 X2V4cGFuc2lvbl8xOTJiX3dhcm06Ci0rCXNodWZwcwlcJDBiMDAwMTAwMDAsJXhtbTAsJXhtbTQK LSsJbW92YXBzCSV4bW0yLCV4bW0zCi0rCXB4b3IJJXhtbTQsJXhtbTAKLSsJc2h1ZnBzCVwkMGIx MDAwMTEwMCwleG1tMCwleG1tNAotKwlwc2xsZHEJXCQ0LCV4bW0zCi0rCXB4b3IJJXhtbTQsJXht bTAKLSsJcHNodWZkCVwkMGIwMTAxMDEwMSwleG1tMSwleG1tMQkjIGNyaXRpY2FsIHBhdGgKLSsJ cHhvcgkleG1tMywleG1tMgotKwlweG9yCSV4bW0xLCV4bW0wCi0rCXBzaHVmZAlcJDBiMTExMTEx MTEsJXhtbTAsJXhtbTMKLSsJcHhvcgkleG1tMywleG1tMgotKwlyZXQKLSsKLSsuYWxpZ24gMTYK LSsuTGtleV9leHBhbnNpb25fMTkyYjoKLSsJbW92YXBzCSV4bW0wLCV4bW0zCi0rCXNodWZwcwlc JDBiMDEwMDAxMDAsJXhtbTAsJXhtbTUKLSsJJG1vdmtleQkleG1tNSwoJXJheCkKLSsJc2h1ZnBz CVwkMGIwMTAwMTExMCwleG1tMiwleG1tMwotKwkkbW92a2V5CSV4bW0zLDE2KCVyYXgpCi0rCWxl YQkzMiglcmF4KSwlcmF4Ci0rCWptcAkuTGtleV9leHBhbnNpb25fMTkyYl93YXJtCi0rCi0rLmFs aWduCTE2Ci0rLkxrZXlfZXhwYW5zaW9uXzI1NmE6Ci0rCSRtb3ZrZXkJJXhtbTIsKCVyYXgpCi0r CWxlYQkxNiglcmF4KSwlcmF4Ci0rLkxrZXlfZXhwYW5zaW9uXzI1NmFfY29sZDoKLSsJc2h1ZnBz CVwkMGIwMDAxMDAwMCwleG1tMCwleG1tNAotKwlweG9yCSV4bW00LCV4bW0wCi0rCXNodWZwcwlc JDBiMTAwMDExMDAsJXhtbTAsJXhtbTQKLSsJcHhvcgkleG1tNCwleG1tMAotKwlwc2h1ZmQJXCQw YjExMTExMTExLCV4bW0xLCV4bW0xCSMgY3JpdGljYWwgcGF0aAotKwlweG9yCSV4bW0xLCV4bW0w Ci0rCXJldAotKwotKy5hbGlnbiAxNgotKy5Ma2V5X2V4cGFuc2lvbl8yNTZiOgotKwkkbW92a2V5 CSV4bW0wLCglcmF4KQotKwlsZWEJMTYoJXJheCksJXJheAotKwotKwlzaHVmcHMJXCQwYjAwMDEw MDAwLCV4bW0yLCV4bW00Ci0rCXB4b3IJJXhtbTQsJXhtbTIKLSsJc2h1ZnBzCVwkMGIxMDAwMTEw MCwleG1tMiwleG1tNAotKwlweG9yCSV4bW00LCV4bW0yCi0rCXBzaHVmZAlcJDBiMTAxMDEwMTAs JXhtbTEsJXhtbTEJIyBjcml0aWNhbCBwYXRoCi0rCXB4b3IJJXhtbTEsJXhtbTIKLSsJcmV0Ci0r LnNpemUJJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleSwuLSR7UFJFRklYfV9zZXRfZW5jcnlwdF9r ZXkKLStfX18KLSt9Ci0rDAotKyRjb2RlLj08PF9fXzsKLSsuYXNjaXogICJBRVMgZm9yIEludGVs IEFFUy1OSSwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKLSsuYWxpZ24JNjQK LStfX18KLSsKLSsjIEVYQ0VQVElPTl9ESVNQT1NJVElPTiBoYW5kbGVyIChFWENFUFRJT05fUkVD T1JEICpyZWMsVUxPTkc2NCBmcmFtZSwKLSsjCQlDT05URVhUICpjb250ZXh0LERJU1BBVENIRVJf Q09OVEVYVCAqZGlzcCkKLStpZiAoJHdpbjY0KSB7Ci0rJHJlYz0iJXJjeCI7Ci0rJGZyYW1lPSIl cmR4IjsKLSskY29udGV4dD0iJXI4IjsKLSskZGlzcD0iJXI5IjsKLSsKLSskY29kZS49PDxfX187 Ci0rLmV4dGVybglfX2ltcF9SdGxWaXJ0dWFsVW53aW5kCi0rLnR5cGUJY2JjX3NlX2hhbmRsZXIs XEBhYmktb21uaXBvdGVudAotKy5hbGlnbgkxNgotK2NiY19zZV9oYW5kbGVyOgotKwlwdXNoCSVy c2kKLSsJcHVzaAklcmRpCi0rCXB1c2gJJXJieAotKwlwdXNoCSVyYnAKLSsJcHVzaAklcjEyCi0r CXB1c2gJJXIxMwotKwlwdXNoCSVyMTQKLSsJcHVzaAklcjE1Ci0rCXB1c2hmcQotKwlzdWIJXCQ2 NCwlcnNwCi0rCi0rCW1vdgkxNTIoJGNvbnRleHQpLCVyYXgJIyBwdWxsIGNvbnRleHQtPlJzcAot Kwltb3YJMjQ4KCRjb250ZXh0KSwlcmJ4CSMgcHVsbCBjb250ZXh0LT5SaXAKLSsKLSsJbGVhCS5M Y2JjX2RlY3J5cHQoJXJpcCksJXIxMAotKwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcDwi cHJvbG9ndWUiIGxhYmVsCi0rCWpiCS5MaW5fcHJvbG9ndWUKLSsKLSsJbGVhCS5MY2JjX2RlY3J5 cHRfYm9keSglcmlwKSwlcjEwCi0rCWNtcAklcjEwLCVyYngJCSMgY29udGV4dC0+UmlwPGNiY19k ZWNyeXB0X2JvZHkKLSsJamIJLkxyZXN0b3JlX3JheAotKwotKwlsZWEJLkxjYmNfcmV0KCVyaXAp LCVyMTAKLSsJY21wCSVyMTAsJXJieAkJIyBjb250ZXh0LT5SaXA+PSJlcGlsb2d1ZSIgbGFiZWwK LSsJamFlCS5MaW5fcHJvbG9ndWUKLSsKLSsJbGVhCTAoJXJheCksJXJzaQkJIyB0b3Agb2Ygc3Rh Y2sKLSsJbGVhCTUxMigkY29udGV4dCksJXJkaQkjICZjb250ZXh0LlhtbTYKLSsJbW92CVwkOCwl ZWN4CQkjIDQqc2l6ZW9mKCV4bW0wKS9zaXplb2YoJXJheCkKLSsJLmxvbmcJMHhhNTQ4ZjNmYwkJ IyBjbGQ7IHJlcCBtb3ZzcQotKwlsZWEJMHg1OCglcmF4KSwlcmF4CQkjIGFkanVzdCBzdGFjayBw b2ludGVyCi0rCWptcAkuTGluX3Byb2xvZ3VlCi0rCi0rLkxyZXN0b3JlX3JheDoKLSsJbW92CTEy MCgkY29udGV4dCksJXJheAotKy5MaW5fcHJvbG9ndWU6Ci0rCW1vdgk4KCVyYXgpLCVyZGkKLSsJ bW92CTE2KCVyYXgpLCVyc2kKLSsJbW92CSVyYXgsMTUyKCRjb250ZXh0KQkjIHJlc3RvcmUgY29u dGV4dC0+UnNwCi0rCW1vdgklcnNpLDE2OCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJz aQotKwltb3YJJXJkaSwxNzYoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5SZGkKLSsKLSsJ am1wCS5MY29tbW9uX3NlaF9leGl0Ci0rLnNpemUJY2JjX3NlX2hhbmRsZXIsLi1jYmNfc2VfaGFu ZGxlcgotKwotKy50eXBlCWVjYl9zZV9oYW5kbGVyLFxAYWJpLW9tbmlwb3RlbnQKLSsuYWxpZ24J MTYKLStlY2Jfc2VfaGFuZGxlcjoKLSsJcHVzaAklcnNpCi0rCXB1c2gJJXJkaQotKwlwdXNoCSVy YngKLSsJcHVzaAklcmJwCi0rCXB1c2gJJXIxMgotKwlwdXNoCSVyMTMKLSsJcHVzaAklcjE0Ci0r CXB1c2gJJXIxNQotKwlwdXNoZnEKLSsJc3ViCVwkNjQsJXJzcAotKwotKwltb3YJMTUyKCRjb250 ZXh0KSwlcmF4CSMgcHVsbCBjb250ZXh0LT5Sc3AKLSsJbW92CTgoJXJheCksJXJkaQotKwltb3YJ MTYoJXJheCksJXJzaQotKwltb3YJJXJzaSwxNjgoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0 LT5Sc2kKLSsJbW92CSVyZGksMTc2KCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UmRpCi0r Ci0rLkxjb21tb25fc2VoX2V4aXQ6Ci0rCi0rCW1vdgk0MCgkZGlzcCksJXJkaQkJIyBkaXNwLT5D b250ZXh0UmVjb3JkCi0rCW1vdgkkY29udGV4dCwlcnNpCQkjIGNvbnRleHQKLSsJbW92CVwkMTU0 LCVlY3gJCSMgc2l6ZW9mKENPTlRFWFQpCi0rCS5sb25nCTB4YTU0OGYzZmMJCSMgY2xkOyByZXAg bW92c3EKLSsKLSsJbW92CSRkaXNwLCVyc2kKLSsJeG9yCSVyY3gsJXJjeAkJIyBhcmcxLCBVTldf RkxBR19OSEFORExFUgotKwltb3YJOCglcnNpKSwlcmR4CQkjIGFyZzIsIGRpc3AtPkltYWdlQmFz ZQotKwltb3YJMCglcnNpKSwlcjgJCSMgYXJnMywgZGlzcC0+Q29udHJvbFBjCi0rCW1vdgkxNigl cnNpKSwlcjkJCSMgYXJnNCwgZGlzcC0+RnVuY3Rpb25FbnRyeQotKwltb3YJNDAoJXJzaSksJXIx MAkJIyBkaXNwLT5Db250ZXh0UmVjb3JkCi0rCWxlYQk1NiglcnNpKSwlcjExCQkjICZkaXNwLT5I YW5kbGVyRGF0YQotKwlsZWEJMjQoJXJzaSksJXIxMgkJIyAmZGlzcC0+RXN0YWJsaXNoZXJGcmFt ZQotKwltb3YJJXIxMCwzMiglcnNwKQkJIyBhcmc1Ci0rCW1vdgklcjExLDQwKCVyc3ApCQkjIGFy ZzYKLSsJbW92CSVyMTIsNDgoJXJzcCkJCSMgYXJnNwotKwltb3YJJXJjeCw1NiglcnNwKQkJIyBh cmc4LCAoTlVMTCkKLSsJY2FsbAkqX19pbXBfUnRsVmlydHVhbFVud2luZCglcmlwKQotKwotKwlt b3YJXCQxLCVlYXgJCSMgRXhjZXB0aW9uQ29udGludWVTZWFyY2gKLSsJYWRkCVwkNjQsJXJzcAot Kwlwb3BmcQotKwlwb3AJJXIxNQotKwlwb3AJJXIxNAotKwlwb3AJJXIxMwotKwlwb3AJJXIxMgot Kwlwb3AJJXJicAotKwlwb3AJJXJieAotKwlwb3AJJXJkaQotKwlwb3AJJXJzaQotKwlyZXQKLSsu c2l6ZQljYmNfc2VfaGFuZGxlciwuLWNiY19zZV9oYW5kbGVyCi0rCi0rLnNlY3Rpb24JLnBkYXRh Ci0rLmFsaWduCTQKLSsJLnJ2YQkuTFNFSF9iZWdpbl8ke1BSRUZJWH1fZWNiX2VuY3J5cHQKLSsJ LnJ2YQkuTFNFSF9lbmRfJHtQUkVGSVh9X2VjYl9lbmNyeXB0Ci0rCS5ydmEJLkxTRUhfaW5mb19l Y2IKLSsKLSsJLnJ2YQkuTFNFSF9iZWdpbl8ke1BSRUZJWH1fY2JjX2VuY3J5cHQKLSsJLnJ2YQku TFNFSF9lbmRfJHtQUkVGSVh9X2NiY19lbmNyeXB0Ci0rCS5ydmEJLkxTRUhfaW5mb19jYmMKLSsK LSsJLnJ2YQkke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5Ci0rCS5ydmEJLkxTRUhfZW5kX3NldF9k ZWNyeXB0X2tleQotKwkucnZhCS5MU0VIX2luZm9fa2V5Ci0rCi0rCS5ydmEJJHtQUkVGSVh9X3Nl dF9lbmNyeXB0X2tleQotKwkucnZhCS5MU0VIX2VuZF9zZXRfZW5jcnlwdF9rZXkKLSsJLnJ2YQku TFNFSF9pbmZvX2tleQotKy5zZWN0aW9uCS54ZGF0YQotKy5hbGlnbgk4Ci0rLkxTRUhfaW5mb19l Y2I6Ci0rCS5ieXRlCTksMCwwLDAKLSsJLnJ2YQllY2Jfc2VfaGFuZGxlcgotKy5MU0VIX2luZm9f Y2JjOgotKwkuYnl0ZQk5LDAsMCwwCi0rCS5ydmEJY2JjX3NlX2hhbmRsZXIKLSsuTFNFSF9pbmZv X2tleToKLSsJLmJ5dGUJMHgwMSwweDA0LDB4MDEsMHgwMAotKwkuYnl0ZQkweDA0LDB4MDIsMHgw MCwweDAwCi0rX19fCi0rfQotKwotK3N1YiByZXggewotKyBsb2NhbCAqb3Bjb2RlPXNoaWZ0Owot KyBteSAoJGRzdCwkc3JjKT1AXzsKLSsKLSsgICBpZiAoJGRzdD49OCB8fCAkc3JjPj04KSB7Ci0r CSRyZXg9MHg0MDsKLSsJJHJleHw9MHgwNCBpZigkZHN0Pj04KTsKLSsJJHJleHw9MHgwMSBpZigk c3JjPj04KTsKLSsJcHVzaCBAb3Bjb2RlLCRyZXg7Ci0rICAgfQotK30KLSsKLStzdWIgYWVzbmkg ewotKyAgbXkgJGxpbmU9c2hpZnQ7Ci0rICBteSBAb3Bjb2RlPSgweDY2KTsKLSsKLSsgICAgaWYg KCRsaW5lPX4vKGFlc2tleWdlbmFzc2lzdClccytcJChbeDAtOWEtZl0rKSxccyoleG1tKFswLTld KyksXHMqJXhtbShbMC05XSspLykgewotKwlyZXgoXEBvcGNvZGUsJDQsJDMpOwotKwlwdXNoIEBv cGNvZGUsMHgwZiwweDNhLDB4ZGY7Ci0rCXB1c2ggQG9wY29kZSwweGMwfCgkMyY3KXwoKCQ0Jjcp PDwzKTsJIyBNb2RSL00KLSsJbXkgJGM9JDI7Ci0rCXB1c2ggQG9wY29kZSwkYz1+L14wLz9vY3Qo JGMpOiRjOwotKwlyZXR1cm4gIi5ieXRlXHQiLmpvaW4oJywnLEBvcGNvZGUpOwotKyAgICB9Ci0r ICAgIGVsc2lmICgkbGluZT1+LyhhZXNbYS16XSspXHMrJXhtbShbMC05XSspLFxzKiV4bW0oWzAt OV0rKS8pIHsKLSsJbXkgJW9wY29kZWxldCA9ICgKLSsJCSJhZXNpbWMiID0+IDB4ZGIsCi0rCQki YWVzZW5jIiA9PiAweGRjLAkiYWVzZW5jbGFzdCIgPT4gMHhkZCwKLSsJCSJhZXNkZWMiID0+IDB4 ZGUsCSJhZXNkZWNsYXN0IiA9PiAweGRmCi0rCSk7Ci0rCXJldHVybiB1bmRlZiBpZiAoIWRlZmlu ZWQoJG9wY29kZWxldHskMX0pKTsKLSsJcmV4KFxAb3Bjb2RlLCQzLCQyKTsKLSsJcHVzaCBAb3Bj b2RlLDB4MGYsMHgzOCwkb3Bjb2RlbGV0eyQxfTsKLSsJcHVzaCBAb3Bjb2RlLDB4YzB8KCQyJjcp fCgoJDMmNyk8PDMpOwkjIE1vZFIvTQotKwlyZXR1cm4gIi5ieXRlXHQiLmpvaW4oJywnLEBvcGNv ZGUpOwotKyAgICB9Ci0rICAgIHJldHVybiAkbGluZTsKLSt9Ci0rCi0rJGNvZGUgPX4gcy9cYChb XlxgXSopXGAvZXZhbCgkMSkvZ2VtOwotKyRjb2RlID1+IHMvXGIoYWVzLioleG1tWzAtOV0rKS4q JC9hZXNuaSgkMSkvZ2VtOwotKwotK3ByaW50ICRjb2RlOwotKwotK2Nsb3NlIFNURE9VVDsKLWRp ZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2Flcy9NYWtlZmlsZS5hZXNuaSBvcGVu c3NsLTEuMC4wLWJldGE0L2NyeXB0by9hZXMvTWFrZWZpbGUKLS0tLSBvcGVuc3NsLTEuMC4wLWJl dGE0L2NyeXB0by9hZXMvTWFrZWZpbGUuYWVzbmkJMjAwOC0xMi0yMyAxMjozMzowMC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9hZXMvTWFrZWZpbGUJMjAx MC0wMS0xMiAyMjoxODowNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC01MCw5ICs1MCwxMyBAQCBhZXMt aWE2NC5zOiBhc20vYWVzLWlhNjQuUwotIAotIGFlcy01ODYuczoJYXNtL2Flcy01ODYucGwgLi4v cGVybGFzbS94ODZhc20ucGwKLSAJJChQRVJMKSBhc20vYWVzLTU4Ni5wbCAkKFBFUkxBU01fU0NI RU1FKSAkKENGTEFHUykgJChQUk9DRVNTT1IpID4gJEAKLSthZXNuaS14ODYuczoJYXNtL2Flc25p LXg4Ni5wbCAuLi9wZXJsYXNtL3g4NmFzbS5wbAotKwkkKFBFUkwpIGFzbS9hZXNuaS14ODYucGwg JChQRVJMQVNNX1NDSEVNRSkgJChDRkxBR1MpICQoUFJPQ0VTU09SKSA+ICRACi0gCi0gYWVzLXg4 Nl82NC5zOiBhc20vYWVzLXg4Nl82NC5wbAotIAkkKFBFUkwpIGFzbS9hZXMteDg2XzY0LnBsICQo UEVSTEFTTV9TQ0hFTUUpID4gJEAKLSthZXNuaS14ODZfNjQuczogYXNtL2Flc25pLXg4Nl82NC5w bAotKwkkKFBFUkwpIGFzbS9hZXNuaS14ODZfNjQucGwgJChQRVJMQVNNX1NDSEVNRSkgPiAkQAot IAotIGFlcy1zcGFyY3Y5LnM6IGFzbS9hZXMtc3BhcmN2OS5wbAotIAkkKFBFUkwpIGFzbS9hZXMt c3BhcmN2OS5wbCAkKENGTEFHUykgPiAkQAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNC9j cnlwdG8vZW5naW5lL2VuZ19hZXNuaS5jLmFlc25pIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRv L2VuZ2luZS9lbmdfYWVzbmkuYwotLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2lu ZS9lbmdfYWVzbmkuYy5hZXNuaQkyMDEwLTAxLTEyIDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAot KysrIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9lbmdfYWVzbmkuYwkyMDEwLTAx LTEyIDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSw0MTMgQEAKLSsvKgotKyAq IFN1cHBvcnQgZm9yIEludGVsIEFFUy1OSSBpbnRydWN0aW9uIHNldAotKyAqICAgQXV0aG9yOiBI dWFuZyBZaW5nIDx5aW5nLmh1YW5nQGludGVsLmNvbT4KLSsgKgotKyAqIEludGVsIEFFUy1OSSBp cyBhIG5ldyBzZXQgb2YgU2luZ2xlIEluc3RydWN0aW9uIE11bHRpcGxlIERhdGEKLSsgKiAoU0lN RCkgaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIGludHJvZHVjZWQgaW4gdGhlIG5l eHQKLSsgKiBnZW5lcmF0aW9uIG9mIEludGVsIHByb2Nlc3NvciwgYXMgb2YgMjAwOS4gVGhlc2Ug aW5zdHJ1Y3Rpb25zCi0rICogZW5hYmxlIGZhc3QgYW5kIHNlY3VyZSBkYXRhIGVuY3J5cHRpb24g YW5kIGRlY3J5cHRpb24sIHVzaW5nIHRoZQotKyAqIEFkdmFuY2VkIEVuY3J5cHRpb24gU3RhbmRh cmQgKEFFUyksIGRlZmluZWQgYnkgRklQUyBQdWJsaWNhdGlvbgotKyAqIG51bWJlciAxOTcuICBU aGUgYXJjaGl0ZWN0dXJlIGludHJvZHVjZXMgc2l4IGluc3RydWN0aW9ucyB0aGF0Ci0rICogb2Zm ZXIgZnVsbCBoYXJkd2FyZSBzdXBwb3J0IGZvciBBRVMuIEZvdXIgb2YgdGhlbSBzdXBwb3J0IGhp Z2gKLSsgKiBwZXJmb3JtYW5jZSBkYXRhIGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24sIGFuZCB0 aGUgb3RoZXIgdHdvCi0rICogaW5zdHJ1Y3Rpb25zIHN1cHBvcnQgdGhlIEFFUyBrZXkgZXhwYW5z aW9uIHByb2NlZHVyZS4KLSsgKgotKyAqIFRoZSB3aGl0ZSBwYXBlciBjYW4gYmUgZG93bmxvYWRl ZCBmcm9tOgotKyAqICAgaHR0cDovL3NvZnR3YXJlY29tbXVuaXR5LmludGVsLmNvbS9pc24vZG93 bmxvYWRzL2ludGVsYXZ4L0FFUy1JbnN0cnVjdGlvbnMtU2V0X1dQLnBkZgotKyAqCi0rICogVGhp cyBmaWxlIGlzIGJhc2VkIG9uIGVuZ2luZXMvZV9wYWRsb2NrLmMKLSsgKi8KLSsKLSsvKiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotKyAqIENvcHlyaWdodCAoYykgMTk5OS0yMDAxIFRoZSBPcGVuU1NMIFByb2plY3Qu ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqCi0rICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0rICogbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z Ci0rICogYXJlIG1ldDoKLSsgKgotKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0rICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKyAqCi0rICog Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92 ZSBjb3B5cmlnaHQKLSsgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KLSsgKiAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0rICogICAgZGlzdHJpYnV0aW9u LgotKyAqCi0rICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1 cmVzIG9yIHVzZSBvZiB0aGlzCi0rICogICAgc29mdHdhcmUgbXVzdCBkaXNwbGF5IHRoZSBmb2xs b3dpbmcgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0 d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1c2UgaW4g dGhlIE9wZW5TU0wgVG9vbGtpdC4gKGh0dHA6Ly93d3cuT3BlblNTTC5vcmcvKSIKLSsgKgotKyAq IDQuIFRoZSBuYW1lcyAiT3BlblNTTCBUb29sa2l0IiBhbmQgIk9wZW5TU0wgUHJvamVjdCIgbXVz dCBub3QgYmUgdXNlZCB0bwotKyAqICAgIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp dmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0Ci0rICogICAgcHJpb3Igd3JpdHRlbiBwZXJt aXNzaW9uLiBGb3Igd3JpdHRlbiBwZXJtaXNzaW9uLCBwbGVhc2UgY29udGFjdAotKyAqICAgIGxp Y2Vuc2luZ0BPcGVuU1NMLm9yZy4KLSsgKgotKyAqIDUuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0 aGlzIHNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJPcGVuU1NMIgotKyAqICAgIG5vciBtYXkg Ik9wZW5TU0wiIGFwcGVhciBpbiB0aGVpciBuYW1lcyB3aXRob3V0IHByaW9yIHdyaXR0ZW4KLSsg KiAgICBwZXJtaXNzaW9uIG9mIHRoZSBPcGVuU1NMIFByb2plY3QuCi0rICoKLSsgKiA2LiBSZWRp c3RyaWJ1dGlvbnMgb2YgYW55IGZvcm0gd2hhdHNvZXZlciBtdXN0IHJldGFpbiB0aGUgZm9sbG93 aW5nCi0rICogICAgYWNrbm93bGVkZ21lbnQ6Ci0rICogICAgIlRoaXMgcHJvZHVjdCBpbmNsdWRl cyBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgdGhlIE9wZW5TU0wgUHJvamVjdAotKyAqICAgIGZvciB1 c2UgaW4gdGhlIE9wZW5TU0wgVG9vbGtpdCAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgotKyAq Ci0rICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBg QVMgSVMnJyBBTkQgQU5ZCi0rICogRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotKyAqIElNUExJRUQgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotKyAqIFBVUlBP U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgT3BlblNTTCBQUk9KRUNU IE9SCi0rICogSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS RUNULCBJTkNJREVOVEFMLAotKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVAotKyAqIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotKyAqIExPU1MgT0YgVVNFLCBEQVRB LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0rICogSE9XRVZFUiBDQVVT RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULAot KyAqIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U SEVSV0lTRSkKLSsgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VECi0rICogT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg REFNQUdFLgotKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0rICoKLSsgKiBUaGlzIHByb2R1Y3QgaW5jbHVkZXMg Y3J5cHRvZ3JhcGhpYyBzb2Z0d2FyZSB3cml0dGVuIGJ5IEVyaWMgWW91bmcKLSsgKiAoZWF5QGNy eXB0c29mdC5jb20pLiAgVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIHdyaXR0ZW4gYnkg VGltCi0rICogSHVkc29uICh0amhAY3J5cHRzb2Z0LmNvbSkuCi0rICoKLSsgKi8KLSsKLSsKLSsj aW5jbHVkZSA8b3BlbnNzbC9vcGVuc3NsY29uZi5oPgotKwotKyNpZiAhZGVmaW5lZChPUEVOU1NM X05PX0hXKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0hXX0FFU19OSSkgJiYgIWRlZmluZWQoT1BF TlNTTF9OT19BRVMpCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgImNyeXB0bGli LmgiCi0rI2luY2x1ZGUgPG9wZW5zc2wvZHNvLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZW5naW5l Lmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvYWVzLmg+ Ci0rI2luY2x1ZGUgPG9wZW5zc2wvZXJyLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvbW9kZXMuaD4K LSsKLSsvKiBBRVMtTkkgaXMgYXZhaWxhYmxlICpPTkxZKiBvbiBzb21lIHg4NiBDUFVzLiAgTm90 IG9ubHkgdGhhdCBpdAotKyAgIGRvZXNuJ3QgZXhpc3QgZWxzZXdoZXJlLCBidXQgaXQgZXZlbiBj YW4ndCBiZSBjb21waWxlZCBvbiBvdGhlcgotKyAgIHBsYXRmb3JtcyEgKi8KLSsjdW5kZWYgQ09N UElMRV9IV19BRVNOSQotKyNpZiAoZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBcCi0rICAgICBkZWZpbmVkKF9NX0FNRDY0KSB8fCBkZWZpbmVkKF9NX1g2NCkgfHwg XAotKyAgICAgZGVmaW5lZChPUEVOU1NMX0lBMzJfU1NFMikpICYmICFkZWZpbmVkKE9QRU5TU0xf Tk9fQVNNKQotKyNkZWZpbmUgQ09NUElMRV9IV19BRVNOSQotK3N0YXRpYyBFTkdJTkUgKkVOR0lO RV9hZXNuaSAodm9pZCk7Ci0rI2VuZGlmCi0rCi0rdm9pZCBFTkdJTkVfbG9hZF9hZXNuaSAodm9p ZCkKLSt7Ci0rLyogT24gbm9uLXg4NiBDUFVzIGl0IGp1c3QgcmV0dXJucy4gKi8KLSsjaWZkZWYg Q09NUElMRV9IV19BRVNOSQotKwlFTkdJTkUgKnRvYWRkID0gRU5HSU5FX2Flc25pKCk7Ci0rCWlm ICghdG9hZGQpCi0rCQlyZXR1cm47Ci0rCUVOR0lORV9hZGQgKHRvYWRkKTsKLSsJRU5HSU5FX3Jl Z2lzdGVyX2NvbXBsZXRlICh0b2FkZCk7Ci0rCUVOR0lORV9mcmVlICh0b2FkZCk7Ci0rCUVSUl9j bGVhcl9lcnJvciAoKTsKLSsjZW5kaWYKLSt9Ci0rCi0rI2lmZGVmIENPTVBJTEVfSFdfQUVTTkkK LStpbnQgYWVzbmlfc2V0X2VuY3J5cHRfa2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXks IGludCBiaXRzLAotKwkJCSAgICAgIEFFU19LRVkgKmtleSk7Ci0raW50IGFlc25pX3NldF9kZWNy eXB0X2tleShjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5LCBpbnQgYml0cywKLSsJCQkgICAg ICBBRVNfS0VZICprZXkpOwotKwotK3ZvaWQgYWVzbmlfZW5jcnlwdChjb25zdCB1bnNpZ25lZCBj aGFyICppbiwgdW5zaWduZWQgY2hhciAqb3V0LAotKwkJICAgICAgIGNvbnN0IEFFU19LRVkgKmtl eSk7Ci0rdm9pZCBhZXNuaV9kZWNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCB1bnNpZ25l ZCBjaGFyICpvdXQsCi0rCQkgICAgICAgY29uc3QgQUVTX0tFWSAqa2V5KTsKLSsKLSt2b2lkIGFl c25pX2VjYl9lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLAotKwkJCSAgIHVuc2lnbmVk IGNoYXIgKm91dCwKLSsJCQkgICBzaXplX3QgbGVuZ3RoLAotKwkJCSAgIGNvbnN0IEFFU19LRVkg KmtleSwKLSsJCQkgICBpbnQgZW5jKTsKLSt2b2lkIGFlc25pX2NiY19lbmNyeXB0KGNvbnN0IHVu c2lnbmVkIGNoYXIgKmluLAotKwkJCSAgIHVuc2lnbmVkIGNoYXIgKm91dCwKLSsJCQkgICBzaXpl X3QgbGVuZ3RoLAotKwkJCSAgIGNvbnN0IEFFU19LRVkgKmtleSwKLSsJCQkgICB1bnNpZ25lZCBj aGFyICppdmVjLCBpbnQgZW5jKTsKLSsKLSsvKiBGdW5jdGlvbiBmb3IgRU5HSU5FIGRldGVjdGlv biBhbmQgY29udHJvbCAqLwotK3N0YXRpYyBpbnQgYWVzbmlfaW5pdChFTkdJTkUgKmUpOwotKwot Ky8qIENpcGhlciBTdHVmZiAqLwotK3N0YXRpYyBpbnQgYWVzbmlfY2lwaGVycyhFTkdJTkUgKmUs IGNvbnN0IEVWUF9DSVBIRVIgKipjaXBoZXIsCi0rCQkJCWNvbnN0IGludCAqKm5pZHMsIGludCBu aWQpOwotKwotKyNkZWZpbmUgQUVTTklfTUlOX0FMSUdOCTE2Ci0rI2RlZmluZSBBRVNOSV9BTElH Tih4KSBcCi0rCSgodm9pZCAqKSgoKHVuc2lnbmVkIGxvbmcpKHgpK0FFU05JX01JTl9BTElHTi0x KSZ+KEFFU05JX01JTl9BTElHTi0xKSkpCi0rCi0rLyogRW5naW5lIG5hbWVzICovCi0rc3RhdGlj IGNvbnN0IGNoYXIgICBhZXNuaV9pZFtdID0gImFlc25pIiwKLSsJCSAgICBhZXNuaV9uYW1lW10g PSAiSW50ZWwgQUVTLU5JIGVuZ2luZSIsCi0rCQkgICAgbm9fYWVzbmlfbmFtZVtdID0gIkludGVs IEFFUy1OSSBlbmdpbmUgKG5vLWFlc25pKSI7Ci0rCi0rLyogPT09PT0gRW5naW5lICJtYW5hZ2Vt ZW50IiBmdW5jdGlvbnMgPT09PT0gKi8KLSsKLSsjaWYgZGVmaW5lZChfV0lOMzIpCi0rdHlwZWRl ZiB1bnNpZ25lZCBfX2ludDY0IElBMzJDQVA7Ci0rI2Vsc2UKLSt0eXBlZGVmIHVuc2lnbmVkIGxv bmcgbG9uZyBJQTMyQ0FQOwotKyNlbmRpZgotKwotKy8qIFByZXBhcmUgdGhlIEVOR0lORSBzdHJ1 Y3R1cmUgZm9yIHJlZ2lzdHJhdGlvbiAqLwotK3N0YXRpYyBpbnQKLSthZXNuaV9iaW5kX2hlbHBl cihFTkdJTkUgKmUpCi0rewotKwlpbnQgZW5nYWdlOwotKwlpZiAoc2l6ZW9mKE9QRU5TU0xfaWEz MmNhcF9QKSA+IDQpIHsKLSsJCWVuZ2FnZSA9IChPUEVOU1NMX2lhMzJjYXBfUCA+PiA1NykgJiAx OwotKwl9IGVsc2UgewotKwkJSUEzMkNBUCBPUEVOU1NMX2lhMzJfY3B1aWQodm9pZCk7Ci0rCQll bmdhZ2UgPSAoT1BFTlNTTF9pYTMyX2NwdWlkKCkgPj4gNTcpICYgMTsKLSsJfQotKwotKwkvKiBS ZWdpc3RlciBldmVyeXRoaW5nIG9yIHJldHVybiB3aXRoIGFuIGVycm9yICovCi0rCWlmICghRU5H SU5FX3NldF9pZChlLCBhZXNuaV9pZCkgfHwKLSsJICAgICFFTkdJTkVfc2V0X25hbWUoZSwgZW5n YWdlID8gYWVzbmlfbmFtZSA6IG5vX2Flc25pX25hbWUpIHx8Ci0rCi0rCSAgICAhRU5HSU5FX3Nl dF9pbml0X2Z1bmN0aW9uKGUsIGFlc25pX2luaXQpIHx8Ci0rCSAgICAoZW5nYWdlICYmICFFTkdJ TkVfc2V0X2NpcGhlcnMgKGUsIGFlc25pX2NpcGhlcnMpKQotKwkgICAgKQotKwkJcmV0dXJuIDA7 Ci0rCi0rCS8qIEV2ZXJ5dGhpbmcgbG9va3MgZ29vZCAqLwotKwlyZXR1cm4gMTsKLSt9Ci0rCi0r LyogQ29uc3RydWN0b3IgKi8KLStzdGF0aWMgRU5HSU5FICoKLStFTkdJTkVfYWVzbmkodm9pZCkK LSt7Ci0rCUVOR0lORSAqZW5nID0gRU5HSU5FX25ldygpOwotKwotKwlpZiAoIWVuZykgewotKwkJ cmV0dXJuIE5VTEw7Ci0rCX0KLSsKLSsJaWYgKCFhZXNuaV9iaW5kX2hlbHBlcihlbmcpKSB7Ci0r CQlFTkdJTkVfZnJlZShlbmcpOwotKwkJcmV0dXJuIE5VTEw7Ci0rCX0KLSsKLSsJcmV0dXJuIGVu ZzsKLSt9Ci0rCi0rLyogQ2hlY2sgYXZhaWxhYmlsaXR5IG9mIHRoZSBlbmdpbmUgKi8KLStzdGF0 aWMgaW50Ci0rYWVzbmlfaW5pdChFTkdJTkUgKmUpCi0rewotKwlyZXR1cm4gMTsKLSt9Ci0rCi0r I2lmIGRlZmluZWQoTklEX2Flc18xMjhfY2ZiMTI4KSAmJiAhIGRlZmluZWQgKE5JRF9hZXNfMTI4 X2NmYikKLSsjZGVmaW5lIE5JRF9hZXNfMTI4X2NmYglOSURfYWVzXzEyOF9jZmIxMjgKLSsjZW5k aWYKLSsKLSsjaWYgZGVmaW5lZChOSURfYWVzXzEyOF9vZmIxMjgpICYmICEgZGVmaW5lZCAoTklE X2Flc18xMjhfb2ZiKQotKyNkZWZpbmUgTklEX2Flc18xMjhfb2ZiCU5JRF9hZXNfMTI4X29mYjEy OAotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkKE5JRF9hZXNfMTkyX2NmYjEyOCkgJiYgISBkZWZp bmVkIChOSURfYWVzXzE5Ml9jZmIpCi0rI2RlZmluZSBOSURfYWVzXzE5Ml9jZmIJTklEX2Flc18x OTJfY2ZiMTI4Ci0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQoTklEX2Flc18xOTJfb2ZiMTI4KSAm JiAhIGRlZmluZWQgKE5JRF9hZXNfMTkyX29mYikKLSsjZGVmaW5lIE5JRF9hZXNfMTkyX29mYglO SURfYWVzXzE5Ml9vZmIxMjgKLSsjZW5kaWYKLSsKLSsjaWYgZGVmaW5lZChOSURfYWVzXzI1Nl9j ZmIxMjgpICYmICEgZGVmaW5lZCAoTklEX2Flc18yNTZfY2ZiKQotKyNkZWZpbmUgTklEX2Flc18y NTZfY2ZiCU5JRF9hZXNfMjU2X2NmYjEyOAotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkKE5JRF9h ZXNfMjU2X29mYjEyOCkgJiYgISBkZWZpbmVkIChOSURfYWVzXzI1Nl9vZmIpCi0rI2RlZmluZSBO SURfYWVzXzI1Nl9vZmIJTklEX2Flc18yNTZfb2ZiMTI4Ci0rI2VuZGlmCi0rCi0rLyogTGlzdCBv ZiBzdXBwb3J0ZWQgY2lwaGVycy4gKi8KLStzdGF0aWMgaW50IGFlc25pX2NpcGhlcl9uaWRzW10g PSB7Ci0rCU5JRF9hZXNfMTI4X2VjYiwKLSsJTklEX2Flc18xMjhfY2JjLAotKwlOSURfYWVzXzEy OF9jZmIsCi0rCU5JRF9hZXNfMTI4X29mYiwKLSsKLSsJTklEX2Flc18xOTJfZWNiLAotKwlOSURf YWVzXzE5Ml9jYmMsCi0rCU5JRF9hZXNfMTkyX2NmYiwKLSsJTklEX2Flc18xOTJfb2ZiLAotKwot KwlOSURfYWVzXzI1Nl9lY2IsCi0rCU5JRF9hZXNfMjU2X2NiYywKLSsJTklEX2Flc18yNTZfY2Zi LAotKwlOSURfYWVzXzI1Nl9vZmIsCi0rfTsKLStzdGF0aWMgaW50IGFlc25pX2NpcGhlcl9uaWRz X251bSA9Ci0rCShzaXplb2YoYWVzbmlfY2lwaGVyX25pZHMpL3NpemVvZihhZXNuaV9jaXBoZXJf bmlkc1swXSkpOwotKwotK3R5cGVkZWYgc3RydWN0Ci0rewotKwlBRVNfS0VZIGtzOwotKwl1bnNp Z25lZCBpbnQgX3BhZDFbM107Ci0rfSBBRVNOSV9LRVk7Ci0rCi0rc3RhdGljIGludAotK2Flc25p X2luaXRfa2V5KEVWUF9DSVBIRVJfQ1RYICpjdHgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJf a2V5LAotKwkJICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKml2LCBpbnQgZW5jKQotK3sKLSsJaW50 IHJldDsKLSsJQUVTX0tFWSAqa2V5ID0gQUVTTklfQUxJR04oY3R4LT5jaXBoZXJfZGF0YSk7Ci0r Ci0rCWlmICgoY3R4LT5jaXBoZXItPmZsYWdzICYgRVZQX0NJUEhfTU9ERSkgPT0gRVZQX0NJUEhf Q0ZCX01PREUKLSsJICAgIHx8IChjdHgtPmNpcGhlci0+ZmxhZ3MgJiBFVlBfQ0lQSF9NT0RFKSA9 PSBFVlBfQ0lQSF9PRkJfTU9ERQotKwkgICAgfHwgZW5jKQotKwkJcmV0PWFlc25pX3NldF9lbmNy eXB0X2tleSh1c2VyX2tleSwgY3R4LT5rZXlfbGVuICogOCwga2V5KTsKLSsJZWxzZQotKwkJcmV0 PWFlc25pX3NldF9kZWNyeXB0X2tleSh1c2VyX2tleSwgY3R4LT5rZXlfbGVuICogOCwga2V5KTsK LSsKLSsJaWYocmV0IDwgMCkgewotKwkJRVZQZXJyKEVWUF9GX0FFU05JX0lOSVRfS0VZLEVWUF9S X0FFU19LRVlfU0VUVVBfRkFJTEVEKTsKLSsJCXJldHVybiAwOwotKwl9Ci0rCi0rCXJldHVybiAx OwotK30KLSsKLStzdGF0aWMgaW50IGFlc25pX2NpcGhlcl9lY2IoRVZQX0NJUEhFUl9DVFggKmN0 eCwgdW5zaWduZWQgY2hhciAqb3V0LAotKwkJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBzaXpl X3QgaW5sKQotK3sJQUVTX0tFWSAqa2V5ID0gQUVTTklfQUxJR04oY3R4LT5jaXBoZXJfZGF0YSk7 Ci0rCWFlc25pX2VjYl9lbmNyeXB0KGluLCBvdXQsIGlubCwga2V5LCBjdHgtPmVuY3J5cHQpOwot KwlyZXR1cm4gMTsKLSt9Ci0rc3RhdGljIGludCBhZXNuaV9jaXBoZXJfY2JjKEVWUF9DSVBIRVJf Q1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwKLSsJCSBjb25zdCB1bnNpZ25lZCBjaGFyICpp biwgc2l6ZV90IGlubCkKLSt7CUFFU19LRVkgKmtleSA9IEFFU05JX0FMSUdOKGN0eC0+Y2lwaGVy X2RhdGEpOwotKwlhZXNuaV9jYmNfZW5jcnlwdChpbiwgb3V0LCBpbmwsIGtleSwKLSsJCQkgICAg ICBjdHgtPml2LCBjdHgtPmVuY3J5cHQpOwotKwlyZXR1cm4gMTsKLSt9Ci0rc3RhdGljIGludCBh ZXNuaV9jaXBoZXJfY2ZiKEVWUF9DSVBIRVJfQ1RYICpjdHgsIHVuc2lnbmVkIGNoYXIgKm91dCwK LSsJCSBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubCkKLSt7CUFFU19LRVkgKmtl eSA9IEFFU05JX0FMSUdOKGN0eC0+Y2lwaGVyX2RhdGEpOwotKwlDUllQVE9fY2ZiMTI4X2VuY3J5 cHQoaW4sIG91dCwgaW5sLCBrZXksIGN0eC0+aXYsCi0rCQkJCSZjdHgtPm51bSwgY3R4LT5lbmNy eXB0LAotKwkJCQkoYmxvY2sxMjhfZilhZXNuaV9lbmNyeXB0KTsKLSsJcmV0dXJuIDE7Ci0rfQot K3N0YXRpYyBpbnQgYWVzbmlfY2lwaGVyX29mYihFVlBfQ0lQSEVSX0NUWCAqY3R4LCB1bnNpZ25l ZCBjaGFyICpvdXQsCi0rCQkgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVfdCBpbmwpCi0r ewlBRVNfS0VZICprZXkgPSBBRVNOSV9BTElHTihjdHgtPmNpcGhlcl9kYXRhKTsKLSsJQ1JZUFRP X29mYjEyOF9lbmNyeXB0KGluLCBvdXQsIGlubCwga2V5LCBjdHgtPml2LAotKwkJCQkmY3R4LT5u dW0sIChibG9jazEyOF9mKWFlc25pX2VuY3J5cHQpOwotKwlyZXR1cm4gMTsKLSt9Ci0rCi0rI2Rl ZmluZSBBRVNfQkxPQ0tfU0laRQkJMTYKLSsKLSsjZGVmaW5lIEVWUF9DSVBIRVJfYmxvY2tfc2l6 ZV9FQ0IJQUVTX0JMT0NLX1NJWkUKLSsjZGVmaW5lIEVWUF9DSVBIRVJfYmxvY2tfc2l6ZV9DQkMJ QUVTX0JMT0NLX1NJWkUKLSsjZGVmaW5lIEVWUF9DSVBIRVJfYmxvY2tfc2l6ZV9PRkIJMQotKyNk ZWZpbmUgRVZQX0NJUEhFUl9ibG9ja19zaXplX0NGQgkxCi0rCi0rLyogRGVjbGFyaW5nIHNvIG1h bnkgY2lwaGVycyBieSBoYW5kIHdvdWxkIGJlIGEgcGFpbi4KLSsgICBJbnN0ZWFkIGludHJvZHVj ZSBhIGJpdCBvZiBwcmVwcm9jZXNzb3IgbWFnaWMgOi0pICovCi0rI2RlZmluZQlERUNMQVJFX0FF U19FVlAoa3NpemUsbG1vZGUsdW1vZGUpCVwKLStzdGF0aWMgY29uc3QgRVZQX0NJUEhFUiBhZXNu aV8jI2tzaXplIyNfIyNsbW9kZSA9IHsJXAotKwlOSURfYWVzXyMja3NpemUjI18jI2xtb2RlLAkJ CVwKLSsJRVZQX0NJUEhFUl9ibG9ja19zaXplXyMjdW1vZGUsCQkJXAotKwlrc2l6ZSAvIDgsCQkJ CQlcCi0rCUFFU19CTE9DS19TSVpFLAkJCQkJXAotKwkwIHwgRVZQX0NJUEhfIyN1bW9kZSMjX01P REUsCQkJXAotKwlhZXNuaV9pbml0X2tleSwJCQkJXAotKwlhZXNuaV9jaXBoZXJfIyNsbW9kZSwJ CQkJXAotKwlOVUxMLAkJCQkJCVwKLSsJc2l6ZW9mKEFFU05JX0tFWSksCQkJCVwKLSsJRVZQX0NJ UEhFUl9zZXRfYXNuMV9pdiwJCQkJXAotKwlFVlBfQ0lQSEVSX2dldF9hc24xX2l2LAkJCQlcCi0r CU5VTEwsCQkJCQkJXAotKwlOVUxMCQkJCQkJXAotK30KLSsKLStERUNMQVJFX0FFU19FVlAoMTI4 LGVjYixFQ0IpOwotK0RFQ0xBUkVfQUVTX0VWUCgxMjgsY2JjLENCQyk7Ci0rREVDTEFSRV9BRVNf RVZQKDEyOCxjZmIsQ0ZCKTsKLStERUNMQVJFX0FFU19FVlAoMTI4LG9mYixPRkIpOwotKwotK0RF Q0xBUkVfQUVTX0VWUCgxOTIsZWNiLEVDQik7Ci0rREVDTEFSRV9BRVNfRVZQKDE5MixjYmMsQ0JD KTsKLStERUNMQVJFX0FFU19FVlAoMTkyLGNmYixDRkIpOwotK0RFQ0xBUkVfQUVTX0VWUCgxOTIs b2ZiLE9GQik7Ci0rCi0rREVDTEFSRV9BRVNfRVZQKDI1NixlY2IsRUNCKTsKLStERUNMQVJFX0FF U19FVlAoMjU2LGNiYyxDQkMpOwotK0RFQ0xBUkVfQUVTX0VWUCgyNTYsY2ZiLENGQik7Ci0rREVD TEFSRV9BRVNfRVZQKDI1NixvZmIsT0ZCKTsKLSsKLStzdGF0aWMgaW50Ci0rYWVzbmlfY2lwaGVy cyAoRU5HSU5FICplLCBjb25zdCBFVlBfQ0lQSEVSICoqY2lwaGVyLAotKwkJICAgICAgY29uc3Qg aW50ICoqbmlkcywgaW50IG5pZCkKLSt7Ci0rCS8qIE5vIHNwZWNpZmljIGNpcGhlciA9PiByZXR1 cm4gYSBsaXN0IG9mIHN1cHBvcnRlZCBuaWRzIC4uLiAqLwotKwlpZiAoIWNpcGhlcikgewotKwkJ Km5pZHMgPSBhZXNuaV9jaXBoZXJfbmlkczsKLSsJCXJldHVybiBhZXNuaV9jaXBoZXJfbmlkc19u dW07Ci0rCX0KLSsKLSsJLyogLi4uIG9yIHRoZSByZXF1ZXN0ZWQgImNpcGhlciIgb3RoZXJ3aXNl ICovCi0rCXN3aXRjaCAobmlkKSB7Ci0rCWNhc2UgTklEX2Flc18xMjhfZWNiOgotKwkJKmNpcGhl ciA9ICZhZXNuaV8xMjhfZWNiOwotKwkJYnJlYWs7Ci0rCWNhc2UgTklEX2Flc18xMjhfY2JjOgot KwkJKmNpcGhlciA9ICZhZXNuaV8xMjhfY2JjOwotKwkJYnJlYWs7Ci0rCWNhc2UgTklEX2Flc18x MjhfY2ZiOgotKwkJKmNpcGhlciA9ICZhZXNuaV8xMjhfY2ZiOwotKwkJYnJlYWs7Ci0rCWNhc2Ug TklEX2Flc18xMjhfb2ZiOgotKwkJKmNpcGhlciA9ICZhZXNuaV8xMjhfb2ZiOwotKwkJYnJlYWs7 Ci0rCi0rCWNhc2UgTklEX2Flc18xOTJfZWNiOgotKwkJKmNpcGhlciA9ICZhZXNuaV8xOTJfZWNi OwotKwkJYnJlYWs7Ci0rCWNhc2UgTklEX2Flc18xOTJfY2JjOgotKwkJKmNpcGhlciA9ICZhZXNu aV8xOTJfY2JjOwotKwkJYnJlYWs7Ci0rCWNhc2UgTklEX2Flc18xOTJfY2ZiOgotKwkJKmNpcGhl ciA9ICZhZXNuaV8xOTJfY2ZiOwotKwkJYnJlYWs7Ci0rCWNhc2UgTklEX2Flc18xOTJfb2ZiOgot KwkJKmNpcGhlciA9ICZhZXNuaV8xOTJfb2ZiOwotKwkJYnJlYWs7Ci0rCi0rCWNhc2UgTklEX2Fl c18yNTZfZWNiOgotKwkJKmNpcGhlciA9ICZhZXNuaV8yNTZfZWNiOwotKwkJYnJlYWs7Ci0rCWNh c2UgTklEX2Flc18yNTZfY2JjOgotKwkJKmNpcGhlciA9ICZhZXNuaV8yNTZfY2JjOwotKwkJYnJl YWs7Ci0rCWNhc2UgTklEX2Flc18yNTZfY2ZiOgotKwkJKmNpcGhlciA9ICZhZXNuaV8yNTZfY2Zi OwotKwkJYnJlYWs7Ci0rCWNhc2UgTklEX2Flc18yNTZfb2ZiOgotKwkJKmNpcGhlciA9ICZhZXNu aV8yNTZfb2ZiOwotKwkJYnJlYWs7Ci0rCi0rCWRlZmF1bHQ6Ci0rCQkvKiBTb3JyeSwgd2UgZG9u J3Qgc3VwcG9ydCB0aGlzIE5JRCAqLwotKwkJKmNpcGhlciA9IE5VTEw7Ci0rCQlyZXR1cm4gMDsK LSsJfQotKwotKwlyZXR1cm4gMTsKLSt9Ci0rCi0rI2VuZGlmIC8qIENPTVBJTEVfSFdfQUVTTkkg Ki8KLSsjZW5kaWYgLyogIWRlZmluZWQoT1BFTlNTTF9OT19IVykgJiYgIWRlZmluZWQoT1BFTlNT TF9OT19IV19BRVNOSSkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19BRVMpICovCi1kaWZmIC11cCBv cGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9lbmdpbmUvZW5nX2FsbC5jLmFlc25pIG9wZW5zc2wt MS4wLjAtYmV0YTQvY3J5cHRvL2VuZ2luZS9lbmdfYWxsLmMKLS0tLSBvcGVuc3NsLTEuMC4wLWJl dGE0L2NyeXB0by9lbmdpbmUvZW5nX2FsbC5jLmFlc25pCTIwMTAtMDEtMDcgMjM6Mzg6MzEuMDAw MDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZW5naW5lL2VuZ19h bGwuYwkyMDEwLTAxLTEyIDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAotQEAgLTg1LDYgKzg1LDkg QEAgdm9pZCBFTkdJTkVfbG9hZF9idWlsdGluX2VuZ2luZXModm9pZCkKLSAjaWYgIWRlZmluZWQo T1BFTlNTTF9OT19IVykgJiYgKGRlZmluZWQoX19PcGVuQlNEX18pIHx8IGRlZmluZWQoX19GcmVl QlNEX18pIHx8IGRlZmluZWQoSEFWRV9DUllQVE9ERVYpKQotIAlFTkdJTkVfbG9hZF9jcnlwdG9k ZXYoKTsKLSAjZW5kaWYKLSsjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19IVykgJiYgIWRlZmluZWQo T1BFTlNTTF9OT19IV19BRVNOSSkKLSsJRU5HSU5FX2xvYWRfYWVzbmkoKTsKLSsjZW5kaWYKLSAJ RU5HSU5FX2xvYWRfZHluYW1pYygpOwotICNpZm5kZWYgT1BFTlNTTF9OT19TVEFUSUNfRU5HSU5F Ci0gI2lmbmRlZiBPUEVOU1NMX05PX0hXCi1kaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE0L2Ny eXB0by9lbmdpbmUvZW5naW5lLmguYWVzbmkgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZW5n aW5lL2VuZ2luZS5oCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZW5naW5lL2VuZ2lu ZS5oLmFlc25pCTIwMTAtMDEtMDcgMjM6Mzg6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNz bC0xLjAuMC1iZXRhNC9jcnlwdG8vZW5naW5lL2VuZ2luZS5oCTIwMTAtMDEtMTIgMjI6MTg6MDYu MDAwMDAwMDAwICswMTAwCi1AQCAtMzQyLDYgKzM0Miw3IEBAIHZvaWQgRU5HSU5FX2xvYWRfZ29z dCh2b2lkKTsKLSAjZW5kaWYKLSAjZW5kaWYKLSB2b2lkIEVOR0lORV9sb2FkX2NyeXB0b2Rldih2 b2lkKTsKLSt2b2lkIEVOR0lORV9sb2FkX2Flc25pKHZvaWQpOwotIHZvaWQgRU5HSU5FX2xvYWRf YnVpbHRpbl9lbmdpbmVzKHZvaWQpOwotIAotIC8qIEdldCBhbmQgc2V0IGdsb2JhbCBmbGFncyAo RU5HSU5FX1RBQkxFX0ZMQUdfKioqKSBmb3IgdGhlIGltcGxlbWVudGF0aW9uCi1kaWZmIC11cCBv cGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9lbmdpbmUvTWFrZWZpbGUuYWVzbmkgb3BlbnNzbC0x LjAuMC1iZXRhNC9jcnlwdG8vZW5naW5lL01ha2VmaWxlCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRh NC9jcnlwdG8vZW5naW5lL01ha2VmaWxlLmFlc25pCTIwMDgtMDYtMDQgMTM6MDE6MjkuMDAwMDAw MDAwICswMjAwCi0rKysgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZW5naW5lL01ha2VmaWxl CTIwMTAtMDEtMTIgMjI6MTg6MDYuMDAwMDAwMDAwICswMTAwCi1AQCAtMjEsMTIgKzIxLDE0IEBA IExJQlNSQz0gZW5nX2Vyci5jIGVuZ19saWIuYyBlbmdfbGlzdC5jIGUKLSAJZW5nX3RhYmxlLmMg ZW5nX3BrZXkuYyBlbmdfZmF0LmMgZW5nX2FsbC5jIFwKLSAJdGJfcnNhLmMgdGJfZHNhLmMgdGJf ZWNkc2EuYyB0Yl9kaC5jIHRiX2VjZGguYyB0Yl9yYW5kLmMgdGJfc3RvcmUuYyBcCi0gCXRiX2Np cGhlci5jIHRiX2RpZ2VzdC5jIHRiX3BrbWV0aC5jIHRiX2Fzbm10aC5jIFwKLS0JZW5nX29wZW5z c2wuYyBlbmdfY25mLmMgZW5nX2R5bi5jIGVuZ19jcnlwdG9kZXYuYwotKwllbmdfb3BlbnNzbC5j IGVuZ19jbmYuYyBlbmdfZHluLmMgZW5nX2NyeXB0b2Rldi5jIFwKLSsJZW5nX2Flc25pLmMKLSBM SUJPQko9IGVuZ19lcnIubyBlbmdfbGliLm8gZW5nX2xpc3QubyBlbmdfaW5pdC5vIGVuZ19jdHJs Lm8gXAotIAllbmdfdGFibGUubyBlbmdfcGtleS5vIGVuZ19mYXQubyBlbmdfYWxsLm8gXAotIAl0 Yl9yc2EubyB0Yl9kc2EubyB0Yl9lY2RzYS5vIHRiX2RoLm8gdGJfZWNkaC5vIHRiX3JhbmQubyB0 Yl9zdG9yZS5vIFwKLSAJdGJfY2lwaGVyLm8gdGJfZGlnZXN0Lm8gdGJfcGttZXRoLm8gdGJfYXNu bXRoLm8gXAotLQllbmdfb3BlbnNzbC5vIGVuZ19jbmYubyBlbmdfZHluLm8gZW5nX2NyeXB0b2Rl di5vCi0rCWVuZ19vcGVuc3NsLm8gZW5nX2NuZi5vIGVuZ19keW4ubyBlbmdfY3J5cHRvZGV2Lm8g XAotKwllbmdfYWVzbmkubwotIAotIFNSQz0gJChMSUJTUkMpCi0gCi1kaWZmIC11cCBvcGVuc3Ns LTEuMC4wLWJldGE0L2NyeXB0by9ldnAvZXZwX2Vyci5jLmFlc25pIG9wZW5zc2wtMS4wLjAtYmV0 YTQvY3J5cHRvL2V2cC9ldnBfZXJyLmMKLS0tLSBvcGVuc3NsLTEuMC4wLWJldGE0L2NyeXB0by9l dnAvZXZwX2Vyci5jLmFlc25pCTIwMTAtMDEtMDcgMjM6Mzg6MzEuMDAwMDAwMDAwICswMTAwCi0r Kysgb3BlbnNzbC0xLjAuMC1iZXRhNC9jcnlwdG8vZXZwL2V2cF9lcnIuYwkyMDEwLTAxLTEyIDIy OjE4OjA2LjAwMDAwMDAwMCArMDEwMAotQEAgLTEsNiArMSw2IEBACi0gLyogY3J5cHRvL2V2cC9l dnBfZXJyLmMgKi8KLSAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLSAqIENvcHlyaWdodCAoYykgMTk5OS0yMDA4 IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAqIENvcHlyaWdo dCAoYykgMTk5OS0yMDA5IFRoZSBPcGVuU1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVk LgotICAqCi0gICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi1AQCAtNzAsNiArNzAsNyBAQAot IAotIHN0YXRpYyBFUlJfU1RSSU5HX0RBVEEgRVZQX3N0cl9mdW5jdHNbXT0KLSAJewotK3tFUlJf RlVOQyhFVlBfRl9BRVNOSV9JTklUX0tFWSksCSJBRVNOSV9JTklUX0tFWSJ9LAotIHtFUlJfRlVO QyhFVlBfRl9BRVNfSU5JVF9LRVkpLAkiQUVTX0lOSVRfS0VZIn0sCi0ge0VSUl9GVU5DKEVWUF9G X0NBTUVMTElBX0lOSVRfS0VZKSwJIkNBTUVMTElBX0lOSVRfS0VZIn0sCi0ge0VSUl9GVU5DKEVW UF9GX0QySV9QS0VZKSwJIkQySV9QS0VZIn0sCi1AQCAtODUsNyArODYsNyBAQCBzdGF0aWMgRVJS X1NUUklOR19EQVRBIEVWUF9zdHJfZnVuY3RzW109Ci0ge0VSUl9GVU5DKEVWUF9GX0VWUF9ESUdF U1RJTklUX0VYKSwJIkVWUF9EaWdlc3RJbml0X2V4In0sCi0ge0VSUl9GVU5DKEVWUF9GX0VWUF9F TkNSWVBURklOQUxfRVgpLAkiRVZQX0VuY3J5cHRGaW5hbF9leCJ9LAotIHtFUlJfRlVOQyhFVlBf Rl9FVlBfTURfQ1RYX0NPUFlfRVgpLAkiRVZQX01EX0NUWF9jb3B5X2V4In0sCi0te0VSUl9GVU5D KEVWUF9GX0VWUF9NRF9TSVpFKSwJIkVWUF9NRF9TSVpFIn0sCi0re0VSUl9GVU5DKEVWUF9GX0VW UF9NRF9TSVpFKSwJIkVWUF9NRF9zaXplIn0sCi0ge0VSUl9GVU5DKEVWUF9GX0VWUF9PUEVOSU5J VCksCSJFVlBfT3BlbkluaXQifSwKLSB7RVJSX0ZVTkMoRVZQX0ZfRVZQX1BCRV9BTEdfQUREKSwJ IkVWUF9QQkVfYWxnX2FkZCJ9LAotIHtFUlJfRlVOQyhFVlBfRl9FVlBfUEJFX0FMR19BRERfVFlQ RSksCSJFVlBfUEJFX2FsZ19hZGRfdHlwZSJ9LAotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRh NC9jcnlwdG8vZXZwL2V2cC5oLmFlc25pIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2V2cC9l dnAuaAotLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTQvY3J5cHRvL2V2cC9ldnAuaC5hZXNuaQkyMDEw LTAxLTA3IDIzOjM4OjMxLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjAtYmV0YTQv Y3J5cHRvL2V2cC9ldnAuaAkyMDEwLTAxLTEyIDIyOjE4OjA2LjAwMDAwMDAwMCArMDEwMAotQEAg LTExNjIsNiArMTE2Miw3IEBAIHZvaWQgRVJSX2xvYWRfRVZQX3N0cmluZ3Modm9pZCk7Ci0gLyog RXJyb3IgY29kZXMgZm9yIHRoZSBFVlAgZnVuY3Rpb25zLiAqLwotIAotIC8qIEZ1bmN0aW9uIGNv ZGVzLiAqLwotKyNkZWZpbmUgRVZQX0ZfQUVTTklfSU5JVF9LRVkJCQkJIDE2MwotICNkZWZpbmUg RVZQX0ZfQUVTX0lOSVRfS0VZCQkJCSAxMzMKLSAjZGVmaW5lIEVWUF9GX0NBTUVMTElBX0lOSVRf S0VZCQkJCSAxNTkKLSAjZGVmaW5lIEVWUF9GX0QySV9QS0VZCQkJCQkgMTAwCi1kaWZmIC11cCBv cGVuc3NsLTEuMC4wLWJldGE0L3Rlc3QvdGVzdF9hZXNuaS5hZXNuaSBvcGVuc3NsLTEuMC4wLWJl dGE0L3Rlc3QvdGVzdF9hZXNuaQotLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTQvdGVzdC90ZXN0X2Fl c25pLmFlc25pCTIwMTAtMDEtMTIgMjI6MTg6MDYuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNz bC0xLjAuMC1iZXRhNC90ZXN0L3Rlc3RfYWVzbmkJMjAxMC0wMS0xMiAyMjoxODowNi4wMDAwMDAw MDAgKzAxMDAKLUBAIC0wLDAgKzEsNjkgQEAKLSsjIS9iaW4vc2gKLSsKLStQUk9HPSQxCi0rCi0r aWYgWyAteCAkUFJPRyBdOyB0aGVuCi0rICAgIGlmIGV4cHIgInhgJFBST0cgdmVyc2lvbmAiIDog InhPcGVuU1NMIiA+IC9kZXYvbnVsbDsgdGhlbgotKwk6Ci0rICAgIGVsc2UKLSsJZWNobyAiJFBS T0cgaXMgbm90IE9wZW5TU0wgZXhlY3V0YWJsZSIKLSsJZXhpdCAxCi0rICAgIGZpCi0rZWxzZQot KyAgICBlY2hvICIkUFJPRyBpcyBub3QgZXhlY3V0YWJsZSIKLSsgICAgZXhpdCAxOwotK2ZpCi0r Ci0raWYgJFBST0cgZW5naW5lIGFlc25pIHwgZ3JlcCAtdiBuby1hZXNuaTsgdGhlbgotKwotKyAg ICBIQVNIPWBjYXQgJFBST0cgfCAkUFJPRyBkZ3N0IC1oZXhgCi0rCi0rICAgIEFFU19BTEdTPSIJ YWVzLTEyOC1lY2IgYWVzLTE5Mi1lY2IgYWVzLTI1Ni1lY2IgXAotKwkJYWVzLTEyOC1jYmMgYWVz LTE5Mi1jYmMgYWVzLTI1Ni1jYmMgXAotKwkJYWVzLTEyOC1jZmIgYWVzLTE5Mi1jZmIgYWVzLTI1 Ni1jZmIgXAotKwkJYWVzLTEyOC1vZmIgYWVzLTE5Mi1vZmIgYWVzLTI1Ni1vZmIiCi0rICAgIEJV RlNJWkU9IjE2IDMyIDQ4IDY0IDgwIDk2IDEyOCAxNDQgOTk5IgotKwotKyAgICBuZXJyPTAKLSsK LSsgICAgZm9yIGFsZyBpbiAkQUVTX0FMR1M7IGRvCi0rCWVjaG8gJGFsZwotKwlmb3IgYnVmc2l6 ZSBpbiAkQlVGU0laRTsgZG8KLSsJICAgIFRFU1Q9YCgJY2F0ICRQUk9HIHwgXAotKwkJJFBST0cg ZW5jIC1lIC1rICIkSEFTSCIgLSRhbGcgLWJ1ZnNpemUgJGJ1ZnNpemUgLWVuZ2luZSBhZXNuaSB8 IFwKLSsJCSRQUk9HIGVuYyAtZCAtayAiJEhBU0giIC0kYWxnIHwgXAotKwkJJFBST0cgZGdzdCAt aGV4ICkgMj4vZGV2L251bGxgCi0rCSAgICBpZiBbICIkVEVTVCIgIT0gIiRIQVNIIiBdOyB0aGVu Ci0rCQllY2hvICItJGFsZy8kYnVmc2l6ZSBlbmNyeXB0IHRlc3QgZmFpbGVkIgotKwkJbmVycj1g ZXhwciAkbmVyciArIDFgCi0rCSAgICBmaQotKwlkb25lCi0rCWZvciBidWZzaXplIGluICRCVUZT SVpFOyBkbyAKLSsJICAgIFRFU1Q9YCgJY2F0ICRQUk9HIHwgXAotKwkJJFBST0cgZW5jIC1lIC1r ICIkSEFTSCIgLSRhbGcgfCBcCi0rCQkkUFJPRyBlbmMgLWQgLWsgIiRIQVNIIiAtJGFsZyAtYnVm c2l6ZSAkYnVmc2l6ZSAtZW5naW5lIGFlc25pIHwgXAotKwkJJFBST0cgZGdzdCAtaGV4ICkgMj4v ZGV2L251bGxgCi0rCSAgICBpZiBbICIkVEVTVCIgIT0gIiRIQVNIIiBdOyB0aGVuCi0rCQllY2hv ICItJGFsZy8kYnVmc2l6ZSBkZWNyeXB0IHRlc3QgZmFpbGVkIgotKwkJbmVycj1gZXhwciAkbmVy ciArIDFgCi0rCSAgICBmaQotKwlkb25lCi0rCVRFU1Q9YCgJY2F0ICRQUk9HIHwgXAotKwkJJFBS T0cgZW5jIC1lIC1rICIkSEFTSCIgLSRhbGcgLWVuZ2luZSBhZXNuaSB8IFwKLSsJCSRQUk9HIGVu YyAtZCAtayAiJEhBU0giIC0kYWxnIC1lbmdpbmUgYWVzbmkgfCBcCi0rCQkkUFJPRyBkZ3N0IC1o ZXggKSAyPi9kZXYvbnVsbGAKLSsJaWYgWyAiJFRFU1QiICE9ICIkSEFTSCIgXTsgdGhlbgotKwkJ ZWNobyAiLSRhbGcgZW4vZGVjcnlwdCB0ZXN0IGZhaWxlZCIKLSsJCW5lcnI9YGV4cHIgJG5lcnIg KyAxYAotKwlmaQotKyAgICBkb25lCi0rCi0rICAgIGlmIFsgJG5lcnIgLWd0IDAgXTsgdGhlbgot KwllY2hvICJBRVNOSSBlbmdpbmUgdGVzdCBmYWlsZWQuIgotKwlleGl0IDE7Ci0rICAgIGZpCi0r ZWxzZQotKyAgICBlY2hvICJBRVNOSSBlbmdpbmUgaXMgbm90IGF2YWlsYWJsZSIKLStmaQotKwot K2V4aXQgMAoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjAtYmV0YTUtaXB2Ni1hcHBzLnBhdGNo IGIvb3BlbnNzbC0xLjAuMC1iZXRhNS1pcHY2LWFwcHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDQzMDRjMDEuLjAwMDAwMDAKLS0tIGEvb3BlbnNzbC0xLjAuMC1iZXRhNS1p cHY2LWFwcHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OTkgKzAsMCBAQAotZGlmZiAtdXAg b3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3NfYXBwcy5oLmlwdjYtYXBwcyBvcGVuc3NsLTEuMC4w LWJldGE1L2FwcHMvc19hcHBzLmgKLS0tLSBvcGVuc3NsLTEuMC4wLWJldGE1L2FwcHMvc19hcHBz LmguaXB2Ni1hcHBzCTIwMTAtMDItMDMgMDk6NDM6NDkuMDAwMDAwMDAwICswMTAwCi0rKysgb3Bl bnNzbC0xLjAuMC1iZXRhNS9hcHBzL3NfYXBwcy5oCTIwMTAtMDItMDMgMDk6NDM6NDkuMDAwMDAw MDAwICswMTAwCi1AQCAtMTQ4LDcgKzE0OCw3IEBAIHR5cGVkZWYgZmRfbWFzayBmZF9zZXQ7Ci0g I2RlZmluZSBQT1JUX1NUUiAgICAgICAgIjQ0MzMiCi0gI2RlZmluZSBQUk9UT0NPTCAgICAgICAg InRjcCIKLSAKLS1pbnQgZG9fc2VydmVyKGludCBwb3J0LCBpbnQgdHlwZSwgaW50ICpyZXQsIGlu dCAoKmNiKSAoY2hhciAqaG9zdG5hbWUsIGludCBzLCB1bnNpZ25lZCBjaGFyICpjb250ZXh0KSwg dW5zaWduZWQgY2hhciAqY29udGV4dCk7Ci0raW50IGRvX3NlcnZlcihjaGFyICpwb3J0LCBpbnQg dHlwZSwgaW50ICpyZXQsIGludCAoKmNiKSAoY2hhciAqaG9zdG5hbWUsIGludCBzLCB1bnNpZ25l ZCBjaGFyICpjb250ZXh0KSwgdW5zaWduZWQgY2hhciAqY29udGV4dCk7Ci0gI2lmZGVmIEhFQURF Ul9YNTA5X0gKLSBpbnQgTVNfQ0FMTEJBQ0sgdmVyaWZ5X2NhbGxiYWNrKGludCBvaywgWDUwOV9T VE9SRV9DVFggKmN0eCk7Ci0gI2VuZGlmCi1AQCAtMTU2LDEwICsxNTYsOSBAQCBpbnQgTVNfQ0FM TEJBQ0sgdmVyaWZ5X2NhbGxiYWNrKGludCBvaywgCi0gaW50IHNldF9jZXJ0X3N0dWZmKFNTTF9D VFggKmN0eCwgY2hhciAqY2VydF9maWxlLCBjaGFyICprZXlfZmlsZSk7Ci0gaW50IHNldF9jZXJ0 X2tleV9zdHVmZihTU0xfQ1RYICpjdHgsIFg1MDkgKmNlcnQsIEVWUF9QS0VZICprZXkpOwotICNl bmRpZgotLWludCBpbml0X2NsaWVudChpbnQgKnNvY2ssIGNoYXIgKnNlcnZlciwgaW50IHBvcnQs IGludCB0eXBlKTsKLStpbnQgaW5pdF9jbGllbnQoaW50ICpzb2NrLCBjaGFyICpzZXJ2ZXIsIGNo YXIgKnBvcnQsIGludCB0eXBlKTsKLSBpbnQgc2hvdWxkX3JldHJ5KGludCBpKTsKLS1pbnQgZXh0 cmFjdF9wb3J0KGNoYXIgKnN0ciwgc2hvcnQgKnBvcnRfcHRyKTsKLS1pbnQgZXh0cmFjdF9ob3N0 X3BvcnQoY2hhciAqc3RyLGNoYXIgKipob3N0X3B0cix1bnNpZ25lZCBjaGFyICppcCxzaG9ydCAq cCk7Ci0raW50IGV4dHJhY3RfaG9zdF9wb3J0KGNoYXIgKnN0cixjaGFyICoqaG9zdF9wdHIsY2hh ciAqKnBvcnRfcHRyKTsKLSAKLSBsb25nIE1TX0NBTExCQUNLIGJpb19kdW1wX2NhbGxiYWNrKEJJ TyAqYmlvLCBpbnQgY21kLCBjb25zdCBjaGFyICphcmdwLAotIAkJCQkgICBpbnQgYXJnaSwgbG9u ZyBhcmdsLCBsb25nIHJldCk7Ci1kaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE1L2FwcHMvc19j bGllbnQuYy5pcHY2LWFwcHMgb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3NfY2xpZW50LmMKLS0t LSBvcGVuc3NsLTEuMC4wLWJldGE1L2FwcHMvc19jbGllbnQuYy5pcHY2LWFwcHMJMjAxMC0wMi0w MyAwOTo0Mzo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4wLWJldGE1L2FwcHMv c19jbGllbnQuYwkyMDEwLTAyLTAzIDA5OjQzOjQ5LjAwMDAwMDAwMCArMDEwMAotQEAgLTM4OSw3 ICszODksNyBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCWludCBjYnVmX2xl bixjYnVmX29mZjsKLSAJaW50IHNidWZfbGVuLHNidWZfb2ZmOwotIAlmZF9zZXQgcmVhZGZkcyx3 cml0ZWZkczsKLS0Jc2hvcnQgcG9ydD1QT1JUOwotKwljaGFyICpwb3J0X3N0ciA9IFBPUlRfU1RS OwotIAlpbnQgZnVsbF9sb2c9MTsKLSAJY2hhciAqaG9zdD1TU0xfSE9TVF9OQU1FOwotIAljaGFy ICpjZXJ0X2ZpbGU9TlVMTCwqa2V5X2ZpbGU9TlVMTDsKLUBAIC00ODgsMTMgKzQ4OCwxMiBAQCBp bnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQllbHNlIGlmCShzdHJjbXAoKmFyZ3Ys Ii1wb3J0IikgPT0gMCkKLSAJCQl7Ci0gCQkJaWYgKC0tYXJnYyA8IDEpIGdvdG8gYmFkOwotLQkJ CXBvcnQ9YXRvaSgqKCsrYXJndikpOwotLQkJCWlmIChwb3J0ID09IDApIGdvdG8gYmFkOwotKwkJ CXBvcnRfc3RyPSAqKCsrYXJndik7Ci0gCQkJfQotIAkJZWxzZSBpZiAoc3RyY21wKCphcmd2LCIt Y29ubmVjdCIpID09IDApCi0gCQkJewotIAkJCWlmICgtLWFyZ2MgPCAxKSBnb3RvIGJhZDsKLS0J CQlpZiAoIWV4dHJhY3RfaG9zdF9wb3J0KCooKythcmd2KSwmaG9zdCxOVUxMLCZwb3J0KSkKLSsJ CQlpZiAoIWV4dHJhY3RfaG9zdF9wb3J0KCooKythcmd2KSwmaG9zdCwmcG9ydF9zdHIpKQotIAkJ CQlnb3RvIGJhZDsKLSAJCQl9Ci0gCQllbHNlIGlmCShzdHJjbXAoKmFyZ3YsIi12ZXJpZnkiKSA9 PSAwKQotQEAgLTk2Nyw3ICs5NjYsNyBAQCBiYWQ6Ci0gCi0gcmVfc3RhcnQ6Ci0gCi0tCWlmIChp bml0X2NsaWVudCgmcyxob3N0LHBvcnQsc29ja2V0X3R5cGUpID09IDApCi0rCWlmIChpbml0X2Ns aWVudCgmcyxob3N0LHBvcnRfc3RyLHNvY2tldF90eXBlKSA9PSAwKQotIAkJewotIAkJQklPX3By aW50ZihiaW9fZXJyLCJjb25uZWN0OmVycm5vPSVkXG4iLGdldF9sYXN0X3NvY2tldF9lcnJvcigp KTsKLSAJCVNIVVRET1dOKHMpOwotZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3Nf c2VydmVyLmMuaXB2Ni1hcHBzIG9wZW5zc2wtMS4wLjAtYmV0YTUvYXBwcy9zX3NlcnZlci5jCi0t LS0gb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3Nfc2VydmVyLmMuaXB2Ni1hcHBzCTIwMTAtMDIt MDMgMDk6NDM6NDkuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBz L3Nfc2VydmVyLmMJMjAxMC0wMi0wMyAwOTo0Mzo0OS4wMDAwMDAwMDAgKzAxMDAKLUBAIC04Mzgs NyArODM4LDcgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJewotIAlYNTA5 X1ZFUklGWV9QQVJBTSAqdnBtID0gTlVMTDsKLSAJaW50IGJhZGFyZyA9IDA7Ci0tCXNob3J0IHBv cnQ9UE9SVDsKLSsJY2hhciAqcG9ydF9zdHIgPSBQT1JUX1NUUjsKLSAJY2hhciAqQ0FwYXRoPU5V TEwsKkNBZmlsZT1OVUxMOwotIAl1bnNpZ25lZCBjaGFyICpjb250ZXh0ID0gTlVMTDsKLSAJY2hh ciAqZGhmaWxlID0gTlVMTDsKLUBAIC05MDksOCArOTA5LDcgQEAgaW50IE1BSU4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKLSAJCQkgKHN0cmNtcCgqYXJndiwiLWFjY2VwdCIpID09IDApKQotIAkJ CXsKLSAJCQlpZiAoLS1hcmdjIDwgMSkgZ290byBiYWQ7Ci0tCQkJaWYgKCFleHRyYWN0X3BvcnQo KigrK2FyZ3YpLCZwb3J0KSkKLS0JCQkJZ290byBiYWQ7Ci0rCQkJcG9ydF9zdHI9ICooKythcmd2 KTsKLSAJCQl9Ci0gCQllbHNlIGlmCShzdHJjbXAoKmFyZ3YsIi12ZXJpZnkiKSA9PSAwKQotIAkJ CXsKLUBAIC0xNzAwLDkgKzE2OTksOSBAQCBiYWQ6Ci0gCUJJT19wcmludGYoYmlvX3Nfb3V0LCJB Q0NFUFRcbiIpOwotIAkodm9pZClCSU9fZmx1c2goYmlvX3Nfb3V0KTsKLSAJaWYgKHd3dykKLS0J CWRvX3NlcnZlcihwb3J0LHNvY2tldF90eXBlLCZhY2NlcHRfc29ja2V0LHd3d19ib2R5LCBjb250 ZXh0KTsKLSsJCWRvX3NlcnZlcihwb3J0X3N0cixzb2NrZXRfdHlwZSwmYWNjZXB0X3NvY2tldCx3 d3dfYm9keSwgY29udGV4dCk7Ci0gCWVsc2UKLS0JCWRvX3NlcnZlcihwb3J0LHNvY2tldF90eXBl LCZhY2NlcHRfc29ja2V0LHN2X2JvZHksIGNvbnRleHQpOwotKwkJZG9fc2VydmVyKHBvcnRfc3Ry LHNvY2tldF90eXBlLCZhY2NlcHRfc29ja2V0LHN2X2JvZHksIGNvbnRleHQpOwotIAlwcmludF9z dGF0cyhiaW9fc19vdXQsY3R4KTsKLSAJcmV0PTA7Ci0gZW5kOgotZGlmZiAtdXAgb3BlbnNzbC0x LjAuMC1iZXRhNS9hcHBzL3Nfc29ja2V0LmMuaXB2Ni1hcHBzIG9wZW5zc2wtMS4wLjAtYmV0YTUv YXBwcy9zX3NvY2tldC5jCi0tLS0gb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3Nfc29ja2V0LmMu aXB2Ni1hcHBzCTIwMDktMDgtMjYgMTM6MjE6NTAuMDAwMDAwMDAwICswMjAwCi0rKysgb3BlbnNz bC0xLjAuMC1iZXRhNS9hcHBzL3Nfc29ja2V0LmMJMjAxMC0wMi0wMyAxMDowMDozMC4wMDAwMDAw MDAgKzAxMDAKLUBAIC0xMDIsOSArMTAyLDcgQEAgc3RhdGljIHN0cnVjdCBob3N0ZW50ICpHZXRI b3N0QnlOYW1lKGNoYQotIHN0YXRpYyB2b2lkIHNzbF9zb2NrX2NsZWFudXAodm9pZCk7Ci0gI2Vu ZGlmCi0gc3RhdGljIGludCBzc2xfc29ja19pbml0KHZvaWQpOwotLXN0YXRpYyBpbnQgaW5pdF9j bGllbnRfaXAoaW50ICpzb2NrLHVuc2lnbmVkIGNoYXIgaXBbNF0sIGludCBwb3J0LCBpbnQgdHlw ZSk7Ci0tc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGludCBwb3J0LCBpbnQgdHlw ZSk7Ci0tc3RhdGljIGludCBpbml0X3NlcnZlcl9sb25nKGludCAqc29jaywgaW50IHBvcnQsY2hh ciAqaXAsIGludCB0eXBlKTsKLStzdGF0aWMgaW50IGluaXRfc2VydmVyKGludCAqc29jaywgY2hh ciAqcG9ydCwgaW50IHR5cGUpOwotIHN0YXRpYyBpbnQgZG9fYWNjZXB0KGludCBhY2Nfc29jaywg aW50ICpzb2NrLCBjaGFyICoqaG9zdCk7Ci0gc3RhdGljIGludCBob3N0X2lwKGNoYXIgKnN0ciwg dW5zaWduZWQgY2hhciBpcFs0XSk7Ci0gCi1AQCAtMjM0LDU4ICsyMzIsNzAgQEAgc3RhdGljIGlu dCBzc2xfc29ja19pbml0KHZvaWQpCi0gCXJldHVybigxKTsKLSAJfQotIAotLWludCBpbml0X2Ns aWVudChpbnQgKnNvY2ssIGNoYXIgKmhvc3QsIGludCBwb3J0LCBpbnQgdHlwZSkKLStpbnQgaW5p dF9jbGllbnQoaW50ICpzb2NrLCBjaGFyICpob3N0LCBjaGFyICpwb3J0LCBpbnQgdHlwZSkKLSAJ ewotLQl1bnNpZ25lZCBjaGFyIGlwWzRdOwotLQotLQlpZiAoIWhvc3RfaXAoaG9zdCwmKGlwWzBd KSkpCi0tCQl7Ci0tCQlyZXR1cm4oMCk7Ci0tCQl9Ci0tCXJldHVybihpbml0X2NsaWVudF9pcChz b2NrLGlwLHBvcnQsdHlwZSkpOwotLQl9Ci0tCi0tc3RhdGljIGludCBpbml0X2NsaWVudF9pcChp bnQgKnNvY2ssIHVuc2lnbmVkIGNoYXIgaXBbNF0sIGludCBwb3J0LCBpbnQgdHlwZSkKLS0Jewot LQl1bnNpZ25lZCBsb25nIGFkZHI7Ci0tCXN0cnVjdCBzb2NrYWRkcl9pbiB0aGVtOwotLQlpbnQg cyxpOwotKwlzdHJ1Y3QgYWRkcmluZm8gKnJlcywgKnJlczAsIGhpbnRzOwotKwljaGFyICogZmFp bGVkX2NhbGwgPSBOVUxMOwotKwlpbnQgczsKLSsJaW50IGU7Ci0gCi0gCWlmICghc3NsX3NvY2tf aW5pdCgpKSByZXR1cm4oMCk7Ci0gCi0tCW1lbXNldCgoY2hhciAqKSZ0aGVtLDAsc2l6ZW9mKHRo ZW0pKTsKLS0JdGhlbS5zaW5fZmFtaWx5PUFGX0lORVQ7Ci0tCXRoZW0uc2luX3BvcnQ9aHRvbnMo KHVuc2lnbmVkIHNob3J0KXBvcnQpOwotLQlhZGRyPSh1bnNpZ25lZCBsb25nKQotLQkJKCh1bnNp Z25lZCBsb25nKWlwWzBdPDwyNEwpfAotLQkJKCh1bnNpZ25lZCBsb25nKWlwWzFdPDwxNkwpfAot LQkJKCh1bnNpZ25lZCBsb25nKWlwWzJdPDwgOEwpfAotLQkJKCh1bnNpZ25lZCBsb25nKWlwWzNd KTsKLS0JdGhlbS5zaW5fYWRkci5zX2FkZHI9aHRvbmwoYWRkcik7Ci0tCi0tCWlmICh0eXBlID09 IFNPQ0tfU1RSRUFNKQotLQkJcz1zb2NrZXQoQUZfSU5FVCxTT0NLX1NUUkVBTSxTT0NLRVRfUFJP VE9DT0wpOwotLQllbHNlIC8qICggdHlwZSA9PSBTT0NLX0RHUkFNKSAqLwotLQkJcz1zb2NrZXQo QUZfSU5FVCxTT0NLX0RHUkFNLElQUFJPVE9fVURQKTsKLS0JCQkKLS0JaWYgKHMgPT0gSU5WQUxJ RF9TT0NLRVQpIHsgcGVycm9yKCJzb2NrZXQiKTsgcmV0dXJuKDApOyB9Ci0rCW1lbXNldCgmaGlu dHMsICdcMCcsIHNpemVvZihoaW50cykpOwotKwloaW50cy5haV9zb2NrdHlwZSA9IHR5cGU7Ci0r CWhpbnRzLmFpX2ZsYWdzID0gQUlfQUREUkNPTkZJRzsKLSsKLSsJZSA9IGdldGFkZHJpbmZvKGhv c3QsIHBvcnQsICZoaW50cywgJnJlcyk7Ci0rCWlmIChlKQotKwl7Ci0rCQlmcHJpbnRmKHN0ZGVy ciwgImdldGFkZHJpbmZvOiAlc1xuIiwgZ2FpX3N0cmVycm9yKGUpKTsKLSsJCWlmIChlID09IEVB SV9TWVNURU0pCi0rCQkJcGVycm9yKCJnZXRhZGRyaW5mbyIpOwotKwkJcmV0dXJuICgwKTsKLSsJ CX0KLSAKLSsJcmVzMCA9IHJlczsKLSsJd2hpbGUgKHJlcykKLSsJCXsKLSsJCXMgPSBzb2NrZXQo cmVzLT5haV9mYW1pbHksIHJlcy0+YWlfc29ja3R5cGUsIHJlcy0+YWlfcHJvdG9jb2wpOwotKwkJ aWYgKHMgPT0gSU5WQUxJRF9TT0NLRVQpCi0rCQkJewotKwkJCWZhaWxlZF9jYWxsID0gInNvY2tl dCI7Ci0rCQkJZ290byBuZXh0cmVzOwotKwkJCX0KLSAjaWYgZGVmaW5lZChTT19LRUVQQUxJVkUp ICYmICFkZWZpbmVkKE9QRU5TU0xfU1lTX01QRSkKLSAJaWYgKHR5cGUgPT0gU09DS19TVFJFQU0p Ci0gCQl7Ci0tCQlpPTA7Ci0tCQlpPXNldHNvY2tvcHQocyxTT0xfU09DS0VULFNPX0tFRVBBTElW RSwoY2hhciAqKSZpLHNpemVvZihpKSk7Ci0tCQlpZiAoaSA8IDApIHsgcGVycm9yKCJrZWVwYWxp dmUiKTsgcmV0dXJuKDApOyB9Ci0rCQkJaW50IGk9MDsKLSsJCQlpPXNldHNvY2tvcHQocyxTT0xf U09DS0VULFNPX0tFRVBBTElWRSwKLSsJCQkJKGNoYXIgKikmaSxzaXplb2YoaSkpOwotKwkJCWlm IChpIDwgMCkgewotKwkJCQlmYWlsZWRfY2FsbCA9ICJrZWVwYWxpdmUiOwotKwkJCQlnb3RvIG5l eHRyZXM7Ci0rCQkJCX0KLSAJCX0KLSAjZW5kaWYKLS0KLS0JaWYgKGNvbm5lY3Qocywoc3RydWN0 IHNvY2thZGRyICopJnRoZW0sc2l6ZW9mKHRoZW0pKSA9PSAtMSkKLS0JCXsgY2xvc2Vzb2NrZXQo cyk7IHBlcnJvcigiY29ubmVjdCIpOyByZXR1cm4oMCk7IH0KLSsJCWlmIChjb25uZWN0KHMsKHN0 cnVjdCBzb2NrYWRkciAqKXJlcy0+YWlfYWRkciwKLSsJCQlyZXMtPmFpX2FkZHJsZW4pID09IDAp Ci0rCQkJewotKwkJCWZyZWVhZGRyaW5mbyhyZXMwKTsKLSAJKnNvY2s9czsKLSAJcmV0dXJuKDEp OwotIAl9Ci0gCi0taW50IGRvX3NlcnZlcihpbnQgcG9ydCwgaW50IHR5cGUsIGludCAqcmV0LCBp bnQgKCpjYikoY2hhciAqaG9zdG5hbWUsIGludCBzLCB1bnNpZ25lZCBjaGFyICpjb250ZXh0KSwg dW5zaWduZWQgY2hhciAqY29udGV4dCkKLSsJCWZhaWxlZF9jYWxsID0gInNvY2tldCI7Ci0rbmV4 dHJlczoKLSsJCWlmIChzICE9IElOVkFMSURfU09DS0VUKQotKwkJCWNsb3NlKHMpOwotKwkJcmVz ID0gcmVzLT5haV9uZXh0OwotKwkJfQotKwlmcmVlYWRkcmluZm8ocmVzMCk7Ci0rCi0rCXBlcnJv cihmYWlsZWRfY2FsbCk7Ci0rCXJldHVybigwKTsKLSsJfQotKwotK2ludCBkb19zZXJ2ZXIoY2hh ciAqcG9ydCwgaW50IHR5cGUsIGludCAqcmV0LCBpbnQgKCpjYikoY2hhciAqaG9zdG5hbWUsIGlu dCBzLCB1bnNpZ25lZCBjaGFyICpjb250ZXh0KSwgdW5zaWduZWQgY2hhciAqY29udGV4dCkKLSAJ ewotIAlpbnQgc29jazsKLSAJY2hhciAqbmFtZSA9IE5VTEw7Ci1AQCAtMzIzLDMzICszMzMsMzgg QEAgaW50IGRvX3NlcnZlcihpbnQgcG9ydCwgaW50IHR5cGUsIGludCAqcgotIAkJfQotIAl9Ci0g Ci0tc3RhdGljIGludCBpbml0X3NlcnZlcl9sb25nKGludCAqc29jaywgaW50IHBvcnQsIGNoYXIg KmlwLCBpbnQgdHlwZSkKLStzdGF0aWMgaW50IGluaXRfc2VydmVyKGludCAqc29jaywgY2hhciAq cG9ydCwgaW50IHR5cGUpCi0gCXsKLS0JaW50IHJldD0wOwotLQlzdHJ1Y3Qgc29ja2FkZHJfaW4g c2VydmVyOwotLQlpbnQgcz0gLTEsaTsKLSsJc3RydWN0IGFkZHJpbmZvICpyZXMsICpyZXMwLCBo aW50czsKLSsJY2hhciAqIGZhaWxlZF9jYWxsID0gTlVMTDsKLSsJY2hhciBwb3J0X25hbWVbOF07 Ci0rCWludCBzOwotKwlpbnQgZTsKLSAKLSAJaWYgKCFzc2xfc29ja19pbml0KCkpIHJldHVybigw KTsKLSAKLS0JbWVtc2V0KChjaGFyICopJnNlcnZlciwwLHNpemVvZihzZXJ2ZXIpKTsKLS0Jc2Vy dmVyLnNpbl9mYW1pbHk9QUZfSU5FVDsKLS0Jc2VydmVyLnNpbl9wb3J0PWh0b25zKCh1bnNpZ25l ZCBzaG9ydClwb3J0KTsKLS0JaWYgKGlwID09IE5VTEwpCi0tCQlzZXJ2ZXIuc2luX2FkZHIuc19h ZGRyPUlOQUREUl9BTlk7Ci0tCWVsc2UKLS0vKiBBZGRlZCBmb3IgVDNFLCBhZGRyZXNzLW9mIGZh aWxzIG9uIGJpdCBmaWVsZCAoYmVja21hbkBhY2wubGFubC5nb3YpICovCi0tI2lmbmRlZiBCSVRf RklFTERfTElNSVRTCi0tCQltZW1jcHkoJnNlcnZlci5zaW5fYWRkci5zX2FkZHIsaXAsNCk7Ci0t I2Vsc2UKLS0JCW1lbWNweSgmc2VydmVyLnNpbl9hZGRyLGlwLDQpOwotLSNlbmRpZgotKwltZW1z ZXQoJmhpbnRzLCAnXDAnLCBzaXplb2YoaGludHMpKTsKLSsJaGludHMuYWlfc29ja3R5cGUgPSB0 eXBlOwotKwloaW50cy5haV9mbGFncyA9IEFJX1BBU1NJVkUgfCBBSV9BRERSQ09ORklHOwotIAkK LS0JCWlmICh0eXBlID09IFNPQ0tfU1RSRUFNKQotLQkJCXM9c29ja2V0KEFGX0lORVQsU09DS19T VFJFQU0sU09DS0VUX1BST1RPQ09MKTsKLS0JCWVsc2UgLyogdHlwZSA9PSBTT0NLX0RHUkFNICov Ci0tCQkJcz1zb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSxJUFBST1RPX1VEUCk7Ci0rCWUgPSBn ZXRhZGRyaW5mbyhOVUxMLCBwb3J0LCAmaGludHMsICZyZXMpOwotKwlpZiAoZSkKLSsJCXsKLSsJ CWZwcmludGYoc3RkZXJyLCAiZ2V0YWRkcmluZm86ICVzXG4iLCBnYWlfc3RyZXJyb3IoZSkpOwot KwkJaWYgKGUgPT0gRUFJX1NZU1RFTSkKLSsJCQlwZXJyb3IoImdldGFkZHJpbmZvIik7Ci0rCQly ZXR1cm4gKDApOwotKwkJfQotIAotLQlpZiAocyA9PSBJTlZBTElEX1NPQ0tFVCkgZ290byBlcnI7 Ci0rCXJlczAgPSByZXM7Ci0rCXdoaWxlIChyZXMpCi0rCQl7Ci0rCQlzID0gc29ja2V0KHJlcy0+ YWlfZmFtaWx5LCByZXMtPmFpX3NvY2t0eXBlLCByZXMtPmFpX3Byb3RvY29sKTsKLSsJCWlmIChz ID09IElOVkFMSURfU09DS0VUKQotKwkJCXsKLSsJCQlmYWlsZWRfY2FsbCA9ICJzb2NrZXQiOwot KwkJCWdvdG8gbmV4dHJlczsKLSsJCQl9Ci0gI2lmIGRlZmluZWQgU09MX1NPQ0tFVCAmJiBkZWZp bmVkIFNPX1JFVVNFQUREUgotIAkJewotIAkJaW50IGogPSAxOwotQEAgLTM1NywzNiArMzcyLDM5 IEBAIHN0YXRpYyBpbnQgaW5pdF9zZXJ2ZXJfbG9uZyhpbnQgKnNvY2ssIGkKLSAJCQkgICAodm9p ZCAqKSAmaiwgc2l6ZW9mIGopOwotIAkJfQotICNlbmRpZgotLQlpZiAoYmluZChzLChzdHJ1Y3Qg c29ja2FkZHIgKikmc2VydmVyLHNpemVvZihzZXJ2ZXIpKSA9PSAtMSkKLSsKLSsJCWlmIChiaW5k KHMsKHN0cnVjdCBzb2NrYWRkciAqKXJlcy0+YWlfYWRkciwgcmVzLT5haV9hZGRybGVuKSA9PSAt MSkKLSAJCXsKLS0jaWZuZGVmIE9QRU5TU0xfU1lTX1dJTkRPV1MKLS0JCXBlcnJvcigiYmluZCIp OwotLSNlbmRpZgotLQkJZ290byBlcnI7Ci0rCQkJZmFpbGVkX2NhbGwgPSAiYmluZCI7Ci0rCQkJ Z290byBuZXh0cmVzOwotIAkJfQotLQkvKiBNYWtlIGl0IDEyOCBmb3IgbGludXggKi8KLS0JaWYg KHR5cGU9PVNPQ0tfU1RSRUFNICYmIGxpc3RlbihzLDEyOCkgPT0gLTEpIGdvdG8gZXJyOwotLQlp PTA7Ci0tCSpzb2NrPXM7Ci0tCXJldD0xOwotLWVycjoKLS0JaWYgKChyZXQgPT0gMCkgJiYgKHMg IT0gLTEpKQotKwkJaWYgKHR5cGU9PVNPQ0tfU1RSRUFNICYmIGxpc3RlbihzLDEyOCkgPT0gLTEp Ci0gCQl7Ci0tCQlTSFVURE9XTihzKTsKLSsJCQlmYWlsZWRfY2FsbCA9ICJsaXN0ZW4iOwotKwkJ CWdvdG8gbmV4dHJlczsKLSAJCX0KLS0JcmV0dXJuKHJldCk7Ci0rCi0rCQkqc29jaz1zOwotKwkJ cmV0dXJuKDEpOwotKwotK25leHRyZXM6Ci0rCQlpZiAocyAhPSBJTlZBTElEX1NPQ0tFVCkKLSsJ CQljbG9zZShzKTsKLSsJCXJlcyA9IHJlcy0+YWlfbmV4dDsKLSAJfQotKwlmcmVlYWRkcmluZm8o cmVzMCk7Ci0gCi0tc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGludCBwb3J0LCBp bnQgdHlwZSkKLS0JewotLQlyZXR1cm4oaW5pdF9zZXJ2ZXJfbG9uZyhzb2NrLCBwb3J0LCBOVUxM LCB0eXBlKSk7Ci0rCWlmIChzID09IElOVkFMSURfU09DS0VUKSB7IHBlcnJvcigic29ja2V0Iik7 IHJldHVybigwKTsgfQotKwotKwlwZXJyb3IoZmFpbGVkX2NhbGwpOwotKwlyZXR1cm4oMCk7Ci0g CX0KLSAKLSBzdGF0aWMgaW50IGRvX2FjY2VwdChpbnQgYWNjX3NvY2ssIGludCAqc29jaywgY2hh ciAqKmhvc3QpCi0gCXsKLS0JaW50IHJldCxpOwotLQlzdHJ1Y3QgaG9zdGVudCAqaDEsKmgyOwot LQlzdGF0aWMgc3RydWN0IHNvY2thZGRyX2luIGZyb207Ci0rCXN0YXRpYyBzdHJ1Y3Qgc29ja2Fk ZHJfc3RvcmFnZSBmcm9tOwotKwljaGFyIGJ1ZmZlcltOSV9NQVhIT1NUXTsKLSsJaW50IHJldDsK LSAJaW50IGxlbjsKLSAvKglzdHJ1Y3QgbGluZ2VyIGxpbmc7ICovCi0gCi1AQCAtNDMyLDEzNiAr NDUwLDU4IEBAIHJlZG9pdDoKLSAqLwotIAotIAlpZiAoaG9zdCA9PSBOVUxMKSBnb3RvIGVuZDsK LS0jaWZuZGVmIEJJVF9GSUVMRF9MSU1JVFMKLS0JLyogSSBzaG91bGQgdXNlIFdTQUFzeW5jR2V0 SG9zdEJ5TmFtZSgpIHVuZGVyIHdpbmRvd3MgKi8KLS0JaDE9Z2V0aG9zdGJ5YWRkcigoY2hhciAq KSZmcm9tLnNpbl9hZGRyLnNfYWRkciwKLS0JCXNpemVvZihmcm9tLnNpbl9hZGRyLnNfYWRkciks QUZfSU5FVCk7Ci0tI2Vsc2UKLS0JaDE9Z2V0aG9zdGJ5YWRkcigoY2hhciAqKSZmcm9tLnNpbl9h ZGRyLAotLQkJc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSxBRl9JTkVUKTsKLS0jZW5kaWYKLS0JaWYg KGgxID09IE5VTEwpCi0rCi0rCWlmIChnZXRuYW1laW5mbygoc3RydWN0IHNvY2thZGRyICopJmZy b20sIHNpemVvZihmcm9tKSwKLSsJCWJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCi0rCQlOVUxMLCAw LCAwKSkKLSAJCXsKLS0JCUJJT19wcmludGYoYmlvX2VyciwiYmFkIGdldGhvc3RieWFkZHJcbiIp OwotKwkJQklPX3ByaW50ZihiaW9fZXJyLCJnZXRuYW1laW5mbyBmYWlsZWRcbiIpOwotIAkJKmhv c3Q9TlVMTDsKLSAJCS8qIHJldHVybigwKTsgKi8KLSAJCX0KLSAJZWxzZQotIAkJewotLQkJaWYg KCgqaG9zdD0oY2hhciAqKU9QRU5TU0xfbWFsbG9jKHN0cmxlbihoMS0+aF9uYW1lKSsxKSkgPT0g TlVMTCkKLSsJCWlmICgoKmhvc3Q9KGNoYXIgKilPUEVOU1NMX21hbGxvYyhzdHJsZW4oYnVmZmVy KSsxKSkgPT0gTlVMTCkKLSAJCQl7Ci0gCQkJcGVycm9yKCJPUEVOU1NMX21hbGxvYyIpOwotIAkJ CXJldHVybigwKTsKLSAJCQl9Ci0tCQlCVUZfc3RybGNweSgqaG9zdCxoMS0+aF9uYW1lLHN0cmxl bihoMS0+aF9uYW1lKSsxKTsKLS0KLS0JCWgyPUdldEhvc3RCeU5hbWUoKmhvc3QpOwotLQkJaWYg KGgyID09IE5VTEwpCi0tCQkJewotLQkJCUJJT19wcmludGYoYmlvX2VyciwiZ2V0aG9zdGJ5bmFt ZSBmYWlsdXJlXG4iKTsKLS0JCQlyZXR1cm4oMCk7Ci0tCQkJfQotLQkJaT0wOwotLQkJaWYgKGgy LT5oX2FkZHJ0eXBlICE9IEFGX0lORVQpCi0tCQkJewotLQkJCUJJT19wcmludGYoYmlvX2Vyciwi Z2V0aG9zdGJ5bmFtZSBhZGRyIGlzIG5vdCBBRl9JTkVUXG4iKTsKLS0JCQlyZXR1cm4oMCk7Ci0t CQkJfQotKwkJc3RyY3B5KCpob3N0LCBidWZmZXIpOwotIAkJfQotIGVuZDoKLSAJKnNvY2s9cmV0 OwotIAlyZXR1cm4oMSk7Ci0gCX0KLSAKLS1pbnQgZXh0cmFjdF9ob3N0X3BvcnQoY2hhciAqc3Ry LCBjaGFyICoqaG9zdF9wdHIsIHVuc2lnbmVkIGNoYXIgKmlwLAotLQkgICAgIHNob3J0ICpwb3J0 X3B0cikKLStpbnQgZXh0cmFjdF9ob3N0X3BvcnQoY2hhciAqc3RyLCBjaGFyICoqaG9zdF9wdHIs IAotKwkgICAgIGNoYXIgKipwb3J0X3B0cikKLSAJewotLQljaGFyICpoLCpwOwotKwljaGFyICpo LCpwLCp4OwotIAotLQloPXN0cjsKLS0JcD1zdHJjaHIoc3RyLCc6Jyk7Ci0rCXg9aD1zdHI7Ci0r CWlmICgqaCA9PSAnWycpCi0rCQl7Ci0rCQloKys7Ci0rCQlwPXN0cmNocihoLCddJyk7Ci0gCWlm IChwID09IE5VTEwpCi0gCQl7Ci0tCQlCSU9fcHJpbnRmKGJpb19lcnIsIm5vIHBvcnQgZGVmaW5l ZFxuIik7Ci0rCQkJQklPX3ByaW50ZihiaW9fZXJyLCJubyBlbmRpbmcgYnJhY2tldCBmb3IgSVB2 NiBhZGRyZXNzXG4iKTsKLSAJCXJldHVybigwKTsKLSAJCX0KLSAJKihwKyspPSdcMCc7Ci0tCi0t CWlmICgoaXAgIT0gTlVMTCkgJiYgIWhvc3RfaXAoc3RyLGlwKSkKLS0JCWdvdG8gZXJyOwotLQlp ZiAoaG9zdF9wdHIgIT0gTlVMTCkgKmhvc3RfcHRyPWg7Ci0tCi0tCWlmICghZXh0cmFjdF9wb3J0 KHAscG9ydF9wdHIpKQotLQkJZ290byBlcnI7Ci0tCXJldHVybigxKTsKLS1lcnI6Ci0tCXJldHVy bigwKTsKLSsJCXggPSBwOwotIAl9Ci0tCi0tc3RhdGljIGludCBob3N0X2lwKGNoYXIgKnN0ciwg dW5zaWduZWQgY2hhciBpcFs0XSkKLS0JewotLQl1bnNpZ25lZCBpbnQgaW5bNF07IAotLQlpbnQg aTsKLS0KLS0JaWYgKHNzY2FuZihzdHIsIiV1LiV1LiV1LiV1IiwmKGluWzBdKSwmKGluWzFdKSwm KGluWzJdKSwmKGluWzNdKSkgPT0gNCkKLS0JCXsKLS0JCWZvciAoaT0wOyBpPDQ7IGkrKykKLS0J CQlpZiAoaW5baV0gPiAyNTUpCi0tCQkJCXsKLS0JCQkJQklPX3ByaW50ZihiaW9fZXJyLCJpbnZh bGlkIElQIGFkZHJlc3NcbiIpOwotLQkJCQlnb3RvIGVycjsKLS0JCQkJfQotLQkJaXBbMF09aW5b MF07Ci0tCQlpcFsxXT1pblsxXTsKLS0JCWlwWzJdPWluWzJdOwotLQkJaXBbM109aW5bM107Ci0t CQl9Ci0tCWVsc2UKLS0JCXsgLyogZG8gYSBnZXRob3N0YnluYW1lICovCi0tCQlzdHJ1Y3QgaG9z dGVudCAqaGU7Ci0tCi0tCQlpZiAoIXNzbF9zb2NrX2luaXQoKSkgcmV0dXJuKDApOwotLQotLQkJ aGU9R2V0SG9zdEJ5TmFtZShzdHIpOwotLQkJaWYgKGhlID09IE5VTEwpCi0tCQkJewotLQkJCUJJ T19wcmludGYoYmlvX2VyciwiZ2V0aG9zdGJ5bmFtZSBmYWlsdXJlXG4iKTsKLS0JCQlnb3RvIGVy cjsKLS0JCQl9Ci0tCQkvKiBjYXN0IHRvIHNob3J0IGJlY2F1c2Ugb2Ygd2luMTYgd2luc29jayBk ZWZpbml0aW9uICovCi0tCQlpZiAoKHNob3J0KWhlLT5oX2FkZHJ0eXBlICE9IEFGX0lORVQpCi0r CXA9c3RyY2hyKHgsJzonKTsKLSsJaWYgKHAgPT0gTlVMTCkKLSAJCQl7Ci0tCQkJQklPX3ByaW50 ZihiaW9fZXJyLCJnZXRob3N0YnluYW1lIGFkZHIgaXMgbm90IEFGX0lORVRcbiIpOwotLQkJCXJl dHVybigwKTsKLS0JCQl9Ci0tCQlpcFswXT1oZS0+aF9hZGRyX2xpc3RbMF1bMF07Ci0tCQlpcFsx XT1oZS0+aF9hZGRyX2xpc3RbMF1bMV07Ci0tCQlpcFsyXT1oZS0+aF9hZGRyX2xpc3RbMF1bMl07 Ci0tCQlpcFszXT1oZS0+aF9hZGRyX2xpc3RbMF1bM107Ci0tCQl9Ci0tCXJldHVybigxKTsKLS1l cnI6Ci0rCQlCSU9fcHJpbnRmKGJpb19lcnIsIm5vIHBvcnQgZGVmaW5lZFxuIik7Ci0gCXJldHVy bigwKTsKLSAJfQotKwkqKHArKyk9J1wwJzsKLSAKLS1pbnQgZXh0cmFjdF9wb3J0KGNoYXIgKnN0 ciwgc2hvcnQgKnBvcnRfcHRyKQotLQl7Ci0tCWludCBpOwotLQlzdHJ1Y3Qgc2VydmVudCAqczsK LSsJaWYgKGhvc3RfcHRyICE9IE5VTEwpICpob3N0X3B0cj1oOwotKwlpZiAocG9ydF9wdHIgIT0g TlVMTCkgKnBvcnRfcHRyPXA7Ci0gCi0tCWk9YXRvaShzdHIpOwotLQlpZiAoaSAhPSAwKQotLQkJ KnBvcnRfcHRyPSh1bnNpZ25lZCBzaG9ydClpOwotLQllbHNlCi0tCQl7Ci0tCQlzPWdldHNlcnZi eW5hbWUoc3RyLCJ0Y3AiKTsKLS0JCWlmIChzID09IE5VTEwpCi0tCQkJewotLQkJCUJJT19wcmlu dGYoYmlvX2VyciwiZ2V0c2VydmJ5bmFtZSBmYWlsdXJlIGZvciAlc1xuIixzdHIpOwotLQkJCXJl dHVybigwKTsKLS0JCQl9Ci0tCQkqcG9ydF9wdHI9bnRvaHMoKHVuc2lnbmVkIHNob3J0KXMtPnNf cG9ydCk7Ci0tCQl9Ci0gCXJldHVybigxKTsKLSAJfQotIAoKZGlmZiAtLWdpdCBhL29wZW5zc2wt MS4wLjBhLXZlcnNpb24ucGF0Y2ggYi9vcGVuc3NsLTEuMC4wYS12ZXJzaW9uLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTAwM2FmLi4wMDAwMDAwCi0tLSBhL29wZW5zc2wt MS4wLjBhLXZlcnNpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1kaWZm IC11cCBvcGVuc3NsLTEuMC4wYS9jcnlwdG8vb3BlbnNzbHYuaC52ZXJzaW9uIG9wZW5zc2wtMS4w LjBhL2NyeXB0by9vcGVuc3Nsdi5oCi0tLS0gb3BlbnNzbC0xLjAuMGEvY3J5cHRvL29wZW5zc2x2 LmgudmVyc2lvbgkyMDEwLTA4LTEzIDEyOjQwOjAwLjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5z c2wtMS4wLjBhL2NyeXB0by9vcGVuc3Nsdi5oCTIwMTAtMDktMDcgMjE6Mzg6NDEuMDAwMDAwMDAw ICswMjAwCi1AQCAtMjUsNyArMjUsOCBAQAotICAqIChQcmlvciB0byAwLjkuNWEgYmV0YTEsIGEg ZGlmZmVyZW50IHNjaGVtZSB3YXMgdXNlZDogTU1OTkZGUkJCIGZvcgotICAqICBtYWpvciBtaW5v ciBmaXggZmluYWwgcGF0Y2gvYmV0YSkKLSAgKi8KLS0jZGVmaW5lIE9QRU5TU0xfVkVSU0lPTl9O VU1CRVIJMHgxMDAwMDAxZkwKLSsvKiB3ZSBoYXZlIHRvIGtlZXAgdGhlIHZlcnNpb24gbnVtYmVy IHRvIG5vdCBicmVhayB0aGUgYWJpICovCi0rI2RlZmluZSBPUEVOU1NMX1ZFUlNJT05fTlVNQkVS CTB4MTAwMDAwMDNMCi0gI2lmZGVmIE9QRU5TU0xfRklQUwotICNkZWZpbmUgT1BFTlNTTF9WRVJT SU9OX1RFWFQJIk9wZW5TU0wgMS4wLjBhLWZpcHMgMSBKdW4gMjAxMCIKLSAjZWxzZQotQEAgLTgz LDcgKzg0LDcgQEAKLSAgKiBzaG91bGQgb25seSBrZWVwIHRoZSB2ZXJzaW9ucyB0aGF0IGFyZSBi aW5hcnkgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50LgotICAqLwotICNkZWZpbmUgU0hMSUJf VkVSU0lPTl9ISVNUT1JZICIiCi0tI2RlZmluZSBTSExJQl9WRVJTSU9OX05VTUJFUiAiMS4wLjAi Ci0rI2RlZmluZSBTSExJQl9WRVJTSU9OX05VTUJFUiAiMS4wLjBhIgotIAotIAotICNlbmRpZiAv KiBIRUFERVJfT1BFTlNTTFZfSCAqLwoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjBiLWFlc25p LnBhdGNoIGIvb3BlbnNzbC0xLjAuMGItYWVzbmkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uMWRkYTZiZgotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wtMS4wLjBi LWFlc25pLnBhdGNoCkBAIC0wLDAgKzEsMjM4OCBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIv Q29uZmlndXJlLmFlc25pIG9wZW5zc2wtMS4wLjBiL0NvbmZpZ3VyZQorLS0tIG9wZW5zc2wtMS4w LjBiL0NvbmZpZ3VyZS5hZXNuaQkyMDEwLTExLTE2IDE3OjMzOjIyLjAwMDAwMDAwMCArMDEwMAor KysrIG9wZW5zc2wtMS4wLjBiL0NvbmZpZ3VyZQkyMDEwLTExLTE2IDE3OjM1OjE1LjAwMDAwMDAw MCArMDEwMAorQEAgLTEyMywxMSArMTIzLDExIEBAIG15ICR0bGliPSItbG5zbCAtbHNvY2tldCI7 CisgbXkgJGJpdHMxPSJUSElSVFlfVFdPX0JJVCAiOworIG15ICRiaXRzMj0iU0lYVFlfRk9VUl9C SVQgIjsKKyAKKy1teSAkeDg2X2FzbT0ieDg2Y3B1aWQubzpibi01ODYubyBjby01ODYubyB4ODYt bW9udC5vOmRlcy01ODYubyBjcnlwdDU4Ni5vOmFlcy01ODYubzpiZi01ODYubzptZDUtNTg2Lm86 c2hhMS01ODYubyBzaGEyNTYtNTg2Lm8gc2hhNTEyLTU4Ni5vOmNhc3QtNTg2Lm86cmM0LTU4Ni5v OnJtZC01ODYubzpyYzUtNTg2Lm86d3BfYmxvY2subyB3cC1tbXgubzpjbWxsLXg4Ni5vIjsKKytt eSAkeDg2X2FzbT0ieDg2Y3B1aWQubzpibi01ODYubyBjby01ODYubyB4ODYtbW9udC5vOmRlcy01 ODYubyBjcnlwdDU4Ni5vOmFlcy01ODYubyBhZXNuaS14ODYubzpiZi01ODYubzptZDUtNTg2Lm86 c2hhMS01ODYubyBzaGEyNTYtNTg2Lm8gc2hhNTEyLTU4Ni5vOmNhc3QtNTg2Lm86cmM0LTU4Ni5v OnJtZC01ODYubzpyYzUtNTg2Lm86d3BfYmxvY2subyB3cC1tbXgubzpjbWxsLXg4Ni5vIjsKKyAK KyBteSAkeDg2X2VsZl9hc209IiR4ODZfYXNtOmVsZiI7CisgCistbXkgJHg4Nl82NF9hc209Ing4 Nl82NGNwdWlkLm86eDg2XzY0LWdjYy5vIHg4Nl82NC1tb250Lm86OmFlcy14ODZfNjQubzo6bWQ1 LXg4Nl82NC5vOnNoYTEteDg2XzY0Lm8gc2hhMjU2LXg4Nl82NC5vIHNoYTUxMi14ODZfNjQubzo6 cmM0LXg4Nl82NC5vOjo6d3AteDg2XzY0Lm86Y21sbC14ODZfNjQubyBjbWxsX21pc2MubyI7Cisr bXkgJHg4Nl82NF9hc209Ing4Nl82NGNwdWlkLm86eDg2XzY0LWdjYy5vIHg4Nl82NC1tb250Lm86 OmFlcy14ODZfNjQubyBhZXNuaS14ODZfNjQubzo6bWQ1LXg4Nl82NC5vOnNoYTEteDg2XzY0Lm8g c2hhMjU2LXg4Nl82NC5vIHNoYTUxMi14ODZfNjQubzo6cmM0LXg4Nl82NC5vOjo6d3AteDg2XzY0 Lm86Y21sbC14ODZfNjQubyBjbWxsX21pc2MubyI7CisgbXkgJGlhNjRfYXNtPSJpYTY0Y3B1aWQu bzpibi1pYTY0Lm86OmFlc19jb3JlLm8gYWVzX2NiYy5vIGFlcy1pYTY0Lm86Om1kNS1pYTY0Lm86 c2hhMS1pYTY0Lm8gc2hhMjU2LWlhNjQubyBzaGE1MTItaWE2NC5vOjpyYzQtaWE2NC5vIHJjNF9z a2V5Lm86Ojo6OnZvaWQiOworIG15ICRzcGFyY3Y5X2FzbT0ic3BhcmN2OWNhcC5vIHNwYXJjY3B1 aWQubzpibi1zcGFyY3Y5Lm8gc3BhcmN2OS1tb250Lm8gc3BhcmN2OWEtbW9udC5vOmRlc19lbmMt c3BhcmMubyBmY3J5cHRfYi5vOmFlc19jb3JlLm8gYWVzX2NiYy5vIGFlcy1zcGFyY3Y5Lm86Ojpz aGExLXNwYXJjdjkubyBzaGEyNTYtc3BhcmN2OS5vIHNoYTUxMi1zcGFyY3Y5Lm86Ojo6Ojo6dm9p ZCI7CisgbXkgJHNwYXJjdjhfYXNtPSI6c3BhcmN2OC5vOmRlc19lbmMtc3BhcmMubyBmY3J5cHRf Yi5vOjo6Ojo6Ojo6Ojp2b2lkIjsKK0BAIC00OTEsNyArNDkxLDcgQEAgbXkgJXRhYmxlPSgKKyAj CisgIyBXaW42NCB0YXJnZXRzLCBXSU42NEkgZGVub3RlcyBJQS02NCBhbmQgV0lONjRBIC0gQU1E NjQKKyAiVkMtV0lONjRJIiwiY2w6LVczIC1HczAgLUd5IC1ub2xvZ28gLURPUEVOU1NMX1NZU05B TUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9NRUFOIC1ETF9FTkRJQU4gLURVTklDT0RFIC1EX1VO SUNPREUgLURfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU6OjpXSU42NEk6OlNJWFRZX0ZPVVJfQklU IFJDNF9DSFVOS19MTCBERVNfSU5UIEVYUE9SVF9WQVJfQVNfRk46aWE2NGNwdWlkLm86aWE2NC5v OjphZXNfY29yZS5vIGFlc19jYmMubyBhZXMtaWE2NC5vOjptZDUtaWE2NC5vOnNoYTEtaWE2NC5v IHNoYTI1Ni1pYTY0Lm8gc2hhNTEyLWlhNjQubzo6Ojo6OjppYXM6d2luMzIiLAorLSJWQy1XSU42 NEEiLCJjbDotVzMgLUdzMCAtR3kgLW5vbG9nbyAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJ TjMyX0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRFVOSUNPREUgLURfVU5JQ09ERSAtRF9DUlRf U0VDVVJFX05PX0RFUFJFQ0FURTo6OldJTjY0QTo6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xM IERFU19JTlQgRVhQT1JUX1ZBUl9BU19GTjp4ODZfNjRjcHVpZC5vOmJuX2FzbS5vIHg4Nl82NC1t b250Lm86OmFlcy14ODZfNjQubzo6bWQ1LXg4Nl82NC5vOnNoYTEteDg2XzY0Lm8gc2hhMjU2LXg4 Nl82NC5vIHNoYTUxMi14ODZfNjQubzo6cmM0LXg4Nl82NC5vOjo6d3AteDg2XzY0Lm86Y21sbC14 ODZfNjQubyBjbWxsX21pc2MubzphdXRvOndpbjMyIiwKKysiVkMtV0lONjRBIiwiY2w6LVczIC1H czAgLUd5IC1ub2xvZ28gLURPUEVOU1NMX1NZU05BTUVfV0lOMzIgLURXSU4zMl9MRUFOX0FORF9N RUFOIC1ETF9FTkRJQU4gLURVTklDT0RFIC1EX1VOSUNPREUgLURfQ1JUX1NFQ1VSRV9OT19ERVBS RUNBVEU6OjpXSU42NEE6OlNJWFRZX0ZPVVJfQklUIFJDNF9DSFVOS19MTCBERVNfSU5UIEVYUE9S VF9WQVJfQVNfRk46eDg2XzY0Y3B1aWQubzpibl9hc20ubyB4ODZfNjQtbW9udC5vOjphZXMteDg2 XzY0Lm8gYWVzbmkteDg2XzY0Lm86Om1kNS14ODZfNjQubzpzaGExLXg4Nl82NC5vIHNoYTI1Ni14 ODZfNjQubyBzaGE1MTIteDg2XzY0Lm86OnJjNC14ODZfNjQubzo6OndwLXg4Nl82NC5vOmNtbGwt eDg2XzY0Lm8gY21sbF9taXNjLm86YXV0bzp3aW4zMiIsCisgImRlYnVnLVZDLVdJTjY0SSIsImNs Oi1XMyAtR3MwIC1HeSAtWmkgLW5vbG9nbyAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMy X0xFQU5fQU5EX01FQU4gLURMX0VORElBTiAtRFVOSUNPREUgLURfVU5JQ09ERSAtRF9DUlRfU0VD VVJFX05PX0RFUFJFQ0FURTo6OldJTjY0STo6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERF U19JTlQgRVhQT1JUX1ZBUl9BU19GTjppYTY0Y3B1aWQubzppYTY0Lm86OmFlc19jb3JlLm8gYWVz X2NiYy5vIGFlcy1pYTY0Lm86Om1kNS1pYTY0Lm86c2hhMS1pYTY0Lm8gc2hhMjU2LWlhNjQubyBz aGE1MTItaWE2NC5vOjo6Ojo6Omlhczp3aW4zMiIsCisgImRlYnVnLVZDLVdJTjY0QSIsImNsOi1X MyAtR3MwIC1HeSAtWmkgLW5vbG9nbyAtRE9QRU5TU0xfU1lTTkFNRV9XSU4zMiAtRFdJTjMyX0xF QU5fQU5EX01FQU4gLURMX0VORElBTiAtRFVOSUNPREUgLURfVU5JQ09ERSAtRF9DUlRfU0VDVVJF X05PX0RFUFJFQ0FURTo6OldJTjY0QTo6U0lYVFlfRk9VUl9CSVQgUkM0X0NIVU5LX0xMIERFU19J TlQgRVhQT1JUX1ZBUl9BU19GTjp4ODZfNjRjcHVpZC5vOmJuX2FzbS5vIHg4Nl82NC1tb250Lm86 OmFlcy14ODZfNjQubzo6bWQ1LXg4Nl82NC5vOnNoYTEteDg2XzY0Lm8gc2hhMjU2LXg4Nl82NC5v IHNoYTUxMi14ODZfNjQubzo6cmM0LXg4Nl82NC5vOjo6d3AteDg2XzY0Lm86Y21sbC14ODZfNjQu byBjbWxsX21pc2MubzphdXRvOndpbjMyIiwKKyAjIHg4NiBXaW4zMiB0YXJnZXQgZGVmYXVsdHMg dG8gQU5TSSBBUEksIGlmIHlvdSB3YW50IFVOSUNPREUsIGNvbXBsZW1lbnQKK0BAIC0xNDE5LDYg KzE0MTksNyBAQCBpZiAoJHJtZDE2MF9vYmogPX4gL1wubyQvKQorIGlmICgkYWVzX29iaiA9fiAv XC5vJC8pCisgCXsKKyAJJGNmbGFncy49IiAtREFFU19BU00iOworKwkkYWVzX29iaiA9fiBzL1xz KmFlc25pXC14ODZcLm8vLyBpZiAoJG5vX3NzZTIpOworIAl9CisgZWxzZQl7CisgCSRhZXNfb2Jq PSRhZXNfZW5jOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Flcy9hc20vYWVzbmkt eDg2LnBsLmFlc25pIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9hZXMvYXNtL2Flc25pLXg4Ni5wbAor LS0tIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9hZXMvYXNtL2Flc25pLXg4Ni5wbC5hZXNuaQkyMDEw LTExLTE2IDE3OjMzOjIzLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjBiL2NyeXB0 by9hZXMvYXNtL2Flc25pLXg4Ni5wbAkyMDEwLTExLTE2IDE3OjMzOjIzLjAwMDAwMDAwMCArMDEw MAorQEAgLTAsMCArMSw3NjUgQEAKKysjIS91c3IvYmluL2VudiBwZXJsCisrCisrIyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorKyMgV3JpdHRlbiBieSBBbmR5IFBvbHlha292IDxhcHByb0BmeS5jaGFsbWVycy5zZT4g Zm9yIHRoZSBPcGVuU1NMCisrIyBwcm9qZWN0LiBUaGUgbW9kdWxlIGlzLCBob3dldmVyLCBkdWFs IGxpY2Vuc2VkIHVuZGVyIE9wZW5TU0wgYW5kCisrIyBDUllQVE9HQU1TIGxpY2Vuc2VzIGRlcGVu ZGluZyBvbiB3aGVyZSB5b3Ugb2J0YWluIGl0LiBGb3IgZnVydGhlcgorKyMgZGV0YWlscyBzZWUg aHR0cDovL3d3dy5vcGVuc3NsLm9yZy9+YXBwcm8vY3J5cHRvZ2Ftcy8uCisrIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorKyMKKysjIFRoaXMgbW9kdWxlIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgSW50ZWwgQUVTLU5J IGV4dGVuc2lvbi4gSW4KKysjIE9wZW5TU0wgY29udGV4dCBpdCdzIHVzZWQgd2l0aCBJbnRlbCBl bmdpbmUsIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGFzCisrIyBkcm9wLWluIHJlcGxhY2VtZW50IGZv ciBjcnlwdG8vYWVzL2FzbS9hZXMtNTg2LnBsIFtzZWUgYmVsb3cgZm9yCisrIyBkZXRhaWxzXS4K KysKKyskUFJFRklYPSJhZXNuaSI7CSMgaWYgJFBSRUZJWCBpcyBzZXQgdG8gIkFFUyIsIHRoZSBz Y3JpcHQKKysJCQkjIGdlbmVyYXRlcyBkcm9wLWluIHJlcGxhY2VtZW50IGZvcgorKwkJCSMgY3J5 cHRvL2Flcy9hc20vYWVzLTU4Ni5wbDotKQorKworKyQwID1+IG0vKC4qW1wvXFxdKVteXC9cXF0r JC87ICRkaXI9JDE7CisrcHVzaChASU5DLCIke2Rpcn0iLCIke2Rpcn0uLi8uLi9wZXJsYXNtIik7 CisrcmVxdWlyZSAieDg2YXNtLnBsIjsKKysKKysmYXNtX2luaXQoJEFSR1ZbMF0sJDApOworKwor KyRtb3Zla2V5ID0gZXZhbCgkUlJFRklYIGVxICJhc2VuaSIgPyAiKm1vdmFwcyIgOiAiKm1vdnVw cyIpOworKworKyRsZW49ImVheCI7CisrJHJvdW5kcz0iZWN4IjsKKyska2V5PSJlZHgiOworKyRp bnA9ImVzaSI7CisrJG91dD0iZWRpIjsKKyskcm91bmRzXz0iZWJ4IjsJIyBiYWNrdXAgY29weSBm b3IgJHJvdW5kcworKyRrZXlfPSJlYnAiOwkjIGJhY2t1cCBjb3B5IGZvciAka2V5CisrCisrJGlu b3V0MD0ieG1tMCI7CisrJGlub3V0MT0ieG1tMSI7CisrJGlub3V0Mj0ieG1tMiI7CisrJHJuZGtl eTA9InhtbTMiOworKyRybmRrZXkxPSJ4bW00IjsKKyskaXZlYz0ieG1tNSI7CisrJGluMD0ieG1t NiI7CisrJGluMT0ieG1tNyI7CSRpbm91dDM9InhtbTciOworKworKyMgSW5saW5lIHZlcnNpb24g b2YgaW50ZXJuYWwgYWVzbmlfW2VufGRlXWNyeXB0MQorK3N1YiBhZXNuaV9pbmxpbmVfZ2VuZXJh dGUxCisreyBteSAkcD1zaGlmdDsKKysKKysgICAgJiRtb3Zla2V5CQkoJHJuZGtleTAsJlFXUCgw LCRrZXkpKTsKKysgICAgJiRtb3Zla2V5CQkoJHJuZGtleTEsJlFXUCgxNiwka2V5KSk7CisrICAg ICZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOworKyAgICAmcHhvcgkJKCRpbm91dDAsJHJuZGtl eTApOworKyAgICAmc2V0X2xhYmVsKCIke3B9MV9sb29wIik7CisrCWV2YWwiJmFlcyR7cH0JKCRp bm91dDAsJHJuZGtleTEpIjsKKysJJmRlYwkJKCRyb3VuZHMpOworKwkmJG1vdmVrZXkJKCRybmRr ZXkxLCZRV1AoMCwka2V5KSk7CisrCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkpOworKyAgICAm am56CQkoJmxhYmVsKCIke3B9MV9sb29wIikpOworKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlu b3V0MCwkcm5ka2V5MSkiOworK30KKysKKytzdWIgYWVzbmlfZ2VuZXJhdGUxCSMgZnVsbHkgdW5y b2xsZWQgbG9vcAorK3sgbXkgJHA9c2hpZnQ7CisrCisrICAgICZmdW5jdGlvbl9iZWdpbl9CKCJf YWVzbmlfJHtwfXJ5cHQxIik7CisrCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgwLCRrZXkpKTsK KysJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDB4MTAsJGtleSkpOworKwkmY21wCQkoJHJvdW5k cywxMSk7CisrCSZweG9yCQkoJGlub3V0MCwkcm5ka2V5MCk7CisrCSYkbW92ZWtleQkoJHJuZGtl eTAsJlFXUCgweDIwLCRrZXkpKTsKKysJJmxlYQkJKCRrZXksJkRXUCgweDMwLCRrZXkpKTsKKysJ JmpiCQkoJmxhYmVsKCIke3B9MTI4IikpOworKwkmbGVhCQkoJGtleSwmRFdQKDB4MjAsJGtleSkp OworKwkmamUJCSgmbGFiZWwoIiR7cH0xOTIiKSk7CisrCSZsZWEJCSgka2V5LCZEV1AoMHgyMCwk a2V5KSk7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKKysJJiRtb3Zla2V5 CSgkcm5ka2V5MSwmUVdQKC0weDQwLCRrZXkpKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwk cm5ka2V5MCkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoLTB4MzAsJGtleSkpOworKyAg ICAmc2V0X2xhYmVsKCIke3B9MTkyIik7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtl eTEpIjsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKC0weDIwLCRrZXkpKTsKKysJZXZhbCIm YWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MCkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1Ao LTB4MTAsJGtleSkpOworKyAgICAmc2V0X2xhYmVsKCIke3B9MTI4Iik7CisrCWV2YWwiJmFlcyR7 cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDAsJGtl eSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkwKSI7CisrCSYkbW92ZWtleQko JHJuZGtleTAsJlFXUCgweDEwLCRrZXkpKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5k a2V5MSkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMHgyMCwka2V5KSk7CisrCWV2YWwi JmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTApIjsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQ KDB4MzAsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkxKSI7CisrCSYk bW92ZWtleQkoJHJuZGtleTEsJlFXUCgweDQwLCRrZXkpKTsKKysJZXZhbCImYWVzJHtwfQkoJGlu b3V0MCwkcm5ka2V5MCkiOworKwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMHg1MCwka2V5KSk7 CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKKysJJiRtb3Zla2V5CSgkcm5k a2V5MSwmUVdQKDB4NjAsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRrZXkw KSI7CisrCSYkbW92ZWtleQkoJHJuZGtleTAsJlFXUCgweDcwLCRrZXkpKTsKKysJZXZhbCImYWVz JHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOworKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0 MCwkcm5ka2V5MCkiOworKyAgICAmcmV0KCk7CisrICAgICZmdW5jdGlvbl9lbmRfQigiX2Flc25p XyR7cH1yeXB0MSIpOworK30KKysKKysjIHZvaWQgJFBSRUZJWF9lbmNyeXB0IChjb25zdCB2b2lk ICppbnAsdm9pZCAqb3V0LGNvbnN0IEFFU19LRVkgKmtleSk7CisrIyAmYWVzbmlfZ2VuZXJhdGUx KCJkZWMiKTsKKysmZnVuY3Rpb25fYmVnaW5fQigiJHtQUkVGSVh9X2VuY3J5cHQiKTsKKysJJm1v dgkoImVheCIsJndwYXJhbSgwKSk7CisrCSZtb3YJKCRrZXksJndwYXJhbSgyKSk7CisrCSZtb3Z1 cHMJKCRpbm91dDAsJlFXUCgwLCJlYXgiKSk7CisrCSZtb3YJKCRyb3VuZHMsJkRXUCgyNDAsJGtl eSkpOworKwkmbW92CSgiZWF4Iiwmd3BhcmFtKDEpKTsKKysJJmFlc25pX2lubGluZV9nZW5lcmF0 ZTEoImVuYyIpOwkjICZjYWxsCSgiX2Flc25pX2VuY3J5cHQxIik7CisrCSZtb3Z1cHMJKCZRV1Ao MCwiZWF4IiksJGlub3V0MCk7CisrCSZyZXQJKCk7CisrJmZ1bmN0aW9uX2VuZF9CKCIke1BSRUZJ WH1fZW5jcnlwdCIpOworKworKyMgdm9pZCAkUFJFRklYX2RlY3J5cHQgKGNvbnN0IHZvaWQgKmlu cCx2b2lkICpvdXQsY29uc3QgQUVTX0tFWSAqa2V5KTsKKysjICZhZXNuaV9nZW5lcmF0ZTEoImRl YyIpOworKyZmdW5jdGlvbl9iZWdpbl9CKCIke1BSRUZJWH1fZGVjcnlwdCIpOworKwkmbW92CSgi ZWF4Iiwmd3BhcmFtKDApKTsKKysJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsKKysJJm1vdnVwcwko JGlub3V0MCwmUVdQKDAsImVheCIpKTsKKysJJm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7 CisrCSZtb3YJKCJlYXgiLCZ3cGFyYW0oMSkpOworKwkmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgi ZGVjIik7CSMgJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDEiKTsKKysJJm1vdnVwcwkoJlFXUCgwLCJl YXgiKSwkaW5vdXQwKTsKKysJJnJldAkoKTsKKysmZnVuY3Rpb25fZW5kX0IoIiR7UFJFRklYfV9k ZWNyeXB0Iik7CisrDAorKyMgX2Flc25pX1tlbnxkZV1jcnlwdFszNF0gYXJlIHByaXZhdGUgaW50 ZXJmYWNlcywgTiBkZW5vdGVzIGludGVybGVhdmUKKysjIGZhY3Rvci4gV2h5IDN4IHN1YnJvdXRp bmUgaXMgdXNlZCBpbiBsb29wcz8gRXZlbiB0aG91Z2ggYWVzW2VuY3xkZWNdCisrIyBsYXRlbmN5 IGlzIDYsIGl0IHR1cm5lZCBvdXQgdGhhdCBpdCBjYW4gYmUgc2NoZWR1bGVkIG9ubHkgZXZlcnkK KysjICpzZWNvbmQqIGN5Y2xlLiBUaHVzIDN4IGludGVybGVhdmUgaXMgdGhlIG9uZSBwcm92aWRp bmcgb3B0aW1hbAorKyMgdXRpbGl6YXRpb24sIGkuZS4gd2hlbiBzdWJyb3V0aW5lJ3MgdGhyb3Vn aHB1dCBpcyB2aXJ0dWFsbHkgc2FtZSBhcworKyMgb2Ygbm9uLWludGVybGVhdmVkIHN1YnJvdXRp bmUgW2ZvciBudW1iZXIgb2YgaW5wdXQgYmxvY2tzIHVwIHRvIDNdLgorKyMgVGhpcyBpcyB3aHkg aXQgbWFrZXMgbm8gc2Vuc2UgdG8gaW1wbGVtZW50IDJ4IHN1YnJvdXRpbmUuIEFzIHNvb24KKysj IGFzL2lmIEludGVsIGltcHJvdmVzIHRocm91Z2hwdXQgYnkgbWFraW5nIGl0IHBvc3NpYmxlIHRv IHNjaGVkdWxlCisrIyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHF1ZXN0aW9uICpldmVyeSogY3ljbGVz IEkgd291bGQgaGF2ZSB0bworKyMgaW1wbGVtZW50IDZ4IGludGVybGVhdmUgYW5kIHVzZSBpdCBp biBsb29wLi4uCisrc3ViIGFlc25pX2dlbmVyYXRlMworK3sgbXkgJHA9c2hpZnQ7CisrCisrICAg ICZmdW5jdGlvbl9iZWdpbl9CKCJfYWVzbmlfJHtwfXJ5cHQzIik7CisrCSYkbW92ZWtleQkoJHJu ZGtleTAsJlFXUCgwLCRrZXkpKTsKKysJJnNocgkJKCRyb3VuZHMsMSk7CisrCSYkbW92ZWtleQko JHJuZGtleTEsJlFXUCgxNiwka2V5KSk7CisrCSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOwor KwkmcHhvcgkJKCRpbm91dDAsJHJuZGtleTApOworKwkmcHhvcgkJKCRpbm91dDEsJHJuZGtleTAp OworKwkmcHhvcgkJKCRpbm91dDIsJHJuZGtleTApOworKwkmam1wCQkoJmxhYmVsKCIke3B9M19s b29wIikpOworKyAgICAmc2V0X2xhYmVsKCIke3B9M19sb29wIiwxNik7CisrCWV2YWwiJmFlcyR7 cH0JKCRpbm91dDAsJHJuZGtleTEpIjsKKysJJiRtb3Zla2V5CSgkcm5ka2V5MCwmUVdQKDAsJGtl eSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQxLCRybmRrZXkxKSI7CisrCSZkZWMJCSgkcm91 bmRzKTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0Miwkcm5ka2V5MSkiOworKwkmJG1vdmVrZXkJ KCRybmRrZXkxLCZRV1AoMTYsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQwLCRybmRr ZXkwKSI7CisrCSZsZWEJCSgka2V5LCZEV1AoMzIsJGtleSkpOworKwlldmFsIiZhZXMke3B9CSgk aW5vdXQxLCRybmRrZXkwKSI7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDIsJHJuZGtleTApIjsK KysJJmpuegkJKCZsYWJlbCgiJHtwfTNfbG9vcCIpKTsKKysgICAgZXZhbCImYWVzJHtwfQkoJGlu b3V0MCwkcm5ka2V5MSkiOworKyAgICAmJG1vdmVrZXkJCSgkcm5ka2V5MCwmUVdQKDAsJGtleSkp OworKyAgICBldmFsIiZhZXMke3B9CSgkaW5vdXQxLCRybmRrZXkxKSI7CisrICAgIGV2YWwiJmFl cyR7cH0JKCRpbm91dDIsJHJuZGtleTEpIjsKKysgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91 dDAsJHJuZGtleTApIjsKKysgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDEsJHJuZGtleTAp IjsKKysgICAgZXZhbCImYWVzJHtwfWxhc3QJKCRpbm91dDIsJHJuZGtleTApIjsKKysgICAgJnJl dCgpOworKyAgICAmZnVuY3Rpb25fZW5kX0IoIl9hZXNuaV8ke3B9cnlwdDMiKTsKKyt9CisrCisr IyA0eCBpbnRlcmxlYXZlIGlzIGltcGxlbWVudGVkIHRvIGltcHJvdmUgc21hbGwgYmxvY2sgcGVy Zm9ybWFuY2UsCisrIyBtb3N0IG5vdGFibHkgW2FuZCBuYXR1cmFsbHldIDQgYmxvY2sgYnkgfjMw JS4gT25lIGNhbiBhcmd1ZSB0aGF0IG9uZQorKyMgc2hvdWxkIGhhdmUgaW1wbGVtZW50ZWQgNXgg YXMgd2VsbCwgYnV0IGltcHJvdmVtZW50ICB3b3VsZCBiZSA8MjAlLAorKyMgc28gaXQncyBub3Qg d29ydGggaXQuLi4KKytzdWIgYWVzbmlfZ2VuZXJhdGU0CisreyBteSAkcD1zaGlmdDsKKysKKysg ICAgJmZ1bmN0aW9uX2JlZ2luX0IoIl9hZXNuaV8ke3B9cnlwdDQiKTsKKysJJiRtb3Zla2V5CSgk cm5ka2V5MCwmUVdQKDAsJGtleSkpOworKwkmJG1vdmVrZXkJKCRybmRrZXkxLCZRV1AoMTYsJGtl eSkpOworKwkmc2hyCQkoJHJvdW5kcywxKTsKKysJJmxlYQkJKCRrZXksJkRXUCgzMiwka2V5KSk7 CisrCSZweG9yCQkoJGlub3V0MCwkcm5ka2V5MCk7CisrCSZweG9yCQkoJGlub3V0MSwkcm5ka2V5 MCk7CisrCSZweG9yCQkoJGlub3V0Miwkcm5ka2V5MCk7CisrCSZweG9yCQkoJGlub3V0Mywkcm5k a2V5MCk7CisrCSZqbXAJCSgmbGFiZWwoIiR7cH0zX2xvb3AiKSk7CisrICAgICZzZXRfbGFiZWwo IiR7cH0zX2xvb3AiLDE2KTsKKysJZXZhbCImYWVzJHtwfQkoJGlub3V0MCwkcm5ka2V5MSkiOwor KwkmJG1vdmVrZXkJKCRybmRrZXkwLCZRV1AoMCwka2V5KSk7CisrCWV2YWwiJmFlcyR7cH0JKCRp bm91dDEsJHJuZGtleTEpIjsKKysJJmRlYwkJKCRyb3VuZHMpOworKwlldmFsIiZhZXMke3B9CSgk aW5vdXQyLCRybmRrZXkxKSI7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDMsJHJuZGtleTEpIjsK KysJJiRtb3Zla2V5CSgkcm5ka2V5MSwmUVdQKDE2LCRrZXkpKTsKKysJZXZhbCImYWVzJHtwfQko JGlub3V0MCwkcm5ka2V5MCkiOworKwkmbGVhCQkoJGtleSwmRFdQKDMyLCRrZXkpKTsKKysJZXZh bCImYWVzJHtwfQkoJGlub3V0MSwkcm5ka2V5MCkiOworKwlldmFsIiZhZXMke3B9CSgkaW5vdXQy LCRybmRrZXkwKSI7CisrCWV2YWwiJmFlcyR7cH0JKCRpbm91dDMsJHJuZGtleTApIjsKKysJJmpu egkJKCZsYWJlbCgiJHtwfTNfbG9vcCIpKTsKKysgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0MCwk cm5ka2V5MSkiOworKyAgICAmJG1vdmVrZXkJCSgkcm5ka2V5MCwmUVdQKDAsJGtleSkpOworKyAg ICBldmFsIiZhZXMke3B9CSgkaW5vdXQxLCRybmRrZXkxKSI7CisrICAgIGV2YWwiJmFlcyR7cH0J KCRpbm91dDIsJHJuZGtleTEpIjsKKysgICAgZXZhbCImYWVzJHtwfQkoJGlub3V0Mywkcm5ka2V5 MSkiOworKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0MCwkcm5ka2V5MCkiOworKyAgICBl dmFsIiZhZXMke3B9bGFzdAkoJGlub3V0MSwkcm5ka2V5MCkiOworKyAgICBldmFsIiZhZXMke3B9 bGFzdAkoJGlub3V0Miwkcm5ka2V5MCkiOworKyAgICBldmFsIiZhZXMke3B9bGFzdAkoJGlub3V0 Mywkcm5ka2V5MCkiOworKyAgICAmcmV0KCk7CisrICAgICZmdW5jdGlvbl9lbmRfQigiX2Flc25p XyR7cH1yeXB0NCIpOworK30KKysmYWVzbmlfZ2VuZXJhdGUzKCJlbmMiKSBpZiAoJFBSRUZJWCBl cSAiYWVzbmkiKTsKKysmYWVzbmlfZ2VuZXJhdGUzKCJkZWMiKTsKKysmYWVzbmlfZ2VuZXJhdGU0 KCJlbmMiKSBpZiAoJFBSRUZJWCBlcSAiYWVzbmkiKTsKKysmYWVzbmlfZ2VuZXJhdGU0KCJkZWMi KTsKKysKKytpZiAoJFBSRUZJWCBlcSAiYWVzbmkiKSB7CisrIyB2b2lkIGFlc25pX2VjYl9lbmNy eXB0IChjb25zdCB2b2lkICppbiwgdm9pZCAqb3V0LAorKyMgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZV90IGxlbmd0aCwgY29uc3QgQUVTX0tFWSAqa2V5LAorKyMgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGVuYyk7CisrJmZ1bmN0aW9uX2JlZ2luKCJhZXNuaV9lY2JfZW5jcnlwdCIp OworKwkmbW92CSgkaW5wLCZ3cGFyYW0oMCkpOworKwkmbW92CSgkb3V0LCZ3cGFyYW0oMSkpOwor KwkmbW92CSgkbGVuLCZ3cGFyYW0oMikpOworKwkmbW92CSgka2V5LCZ3cGFyYW0oMykpOworKwkm bW92CSgkcm91bmRzLCZ3cGFyYW0oNCkpOworKwkmY21wCSgkbGVuLDE2KTsKKysJJmpiCSgmbGFi ZWwoImVjYl9yZXQiKSk7CisrCSZhbmQJKCRsZW4sLTE2KTsKKysJJnRlc3QJKCRyb3VuZHMsJHJv dW5kcykKKysJJm1vdgkoJHJvdW5kcywmRFdQKDI0MCwka2V5KSk7CisrCSZtb3YJKCRrZXlfLCRr ZXkpOwkJIyBiYWNrdXAgJGtleQorKwkmbW92CSgkcm91bmRzXywkcm91bmRzKTsJIyBiYWNrdXAg JHJvdW5kcworKwkmanoJKCZsYWJlbCgiZWNiX2RlY3J5cHQiKSk7CisrCisrCSZzdWIJKCRsZW4s MHg0MCk7CisrCSZqYmUJKCZsYWJlbCgiZWNiX2VuY190YWlsIikpOworKwkmam1wCSgmbGFiZWwo ImVjYl9lbmNfbG9vcDMiKSk7CisrCisrJnNldF9sYWJlbCgiZWNiX2VuY19sb29wMyIsMTYpOwor KwkmbW92dXBzCSgkaW5vdXQwLCZRV1AoMCwkaW5wKSk7CisrCSZtb3Z1cHMJKCRpbm91dDEsJlFX UCgweDEwLCRpbnApKTsKKysJJm1vdnVwcwkoJGlub3V0MiwmUVdQKDB4MjAsJGlucCkpOworKwkm Y2FsbAkoIl9hZXNuaV9lbmNyeXB0MyIpOworKwkmc3ViCSgkbGVuLDB4MzApOworKwkmbGVhCSgk aW5wLCZEV1AoMHgzMCwkaW5wKSk7CisrCSZsZWEJKCRvdXQsJkRXUCgweDMwLCRvdXQpKTsKKysJ Jm1vdnVwcwkoJlFXUCgtMHgzMCwkb3V0KSwkaW5vdXQwKTsKKysJJm1vdgkoJGtleSwka2V5Xyk7 CQkjIHJlc3RvcmUgJGtleQorKwkmbW92dXBzCSgmUVdQKC0weDIwLCRvdXQpLCRpbm91dDEpOwor KwkmbW92CSgkcm91bmRzLCRyb3VuZHNfKTsJIyByZXN0b3JlICRyb3VuZHMKKysJJm1vdnVwcwko JlFXUCgtMHgxMCwkb3V0KSwkaW5vdXQyKTsKKysJJmphCSgmbGFiZWwoImVjYl9lbmNfbG9vcDMi KSk7CisrCisrJnNldF9sYWJlbCgiZWNiX2VuY190YWlsIik7CisrCSZhZGQJKCRsZW4sMHg0MCk7 CisrCSZqegkoJmxhYmVsKCJlY2JfcmV0IikpOworKworKwkmY21wCSgkbGVuLDB4MTApOworKwkm bW92dXBzCSgkaW5vdXQwLCZRV1AoMCwkaW5wKSk7CisrCSZqZQkoJmxhYmVsKCJlY2JfZW5jX29u ZSIpKTsKKysJJmNtcAkoJGxlbiwweDIwKTsKKysJJm1vdnVwcwkoJGlub3V0MSwmUVdQKDB4MTAs JGlucCkpOworKwkmamUJKCZsYWJlbCgiZWNiX2VuY190d28iKSk7CisrCSZjbXAJKCRsZW4sMHgz MCk7CisrCSZtb3Z1cHMJKCRpbm91dDIsJlFXUCgweDIwLCRpbnApKTsKKysJJmplCSgmbGFiZWwo ImVjYl9lbmNfdGhyZWUiKSk7CisrCSZtb3Z1cHMJKCRpbm91dDMsJlFXUCgweDMwLCRpbnApKTsK KysJJmNhbGwJKCJfYWVzbmlfZW5jcnlwdDQiKTsKKysJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRp bm91dDApOworKwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisrCSZtb3Z1cHMJ KCZRV1AoMHgyMCwkb3V0KSwkaW5vdXQyKTsKKysJJm1vdnVwcwkoJlFXUCgweDMwLCRvdXQpLCRp bm91dDMpOworKwlqbXAJKCZsYWJlbCgiZWNiX3JldCIpKTsKKysKKysmc2V0X2xhYmVsKCJlY2Jf ZW5jX29uZSIsMTYpOworKwkmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgiZW5jIik7CSMgJmNhbGwJ KCJfYWVzbmlfZW5jcnlwdDEiKTsKKysJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOwor Kwkmam1wCSgmbGFiZWwoImVjYl9yZXQiKSk7CisrCisrJnNldF9sYWJlbCgiZWNiX2VuY190d28i LDE2KTsKKysJJmNhbGwJKCJfYWVzbmlfZW5jcnlwdDMiKTsKKysJJm1vdnVwcwkoJlFXUCgwLCRv dXQpLCRpbm91dDApOworKwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisrCSZq bXAJKCZsYWJlbCgiZWNiX3JldCIpKTsKKysKKysmc2V0X2xhYmVsKCJlY2JfZW5jX3RocmVlIiwx Nik7CisrCSZjYWxsCSgiX2Flc25pX2VuY3J5cHQzIik7CisrCSZtb3Z1cHMJKCZRV1AoMCwkb3V0 KSwkaW5vdXQwKTsKKysJJm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOworKwkmbW92 dXBzCSgmUVdQKDB4MjAsJG91dCksJGlub3V0Mik7CisrCSZqbXAJKCZsYWJlbCgiZWNiX3JldCIp KTsKKysKKysmc2V0X2xhYmVsKCJlY2JfZGVjcnlwdCIsMTYpOworKwkmc3ViCSgkbGVuLDB4NDAp OworKwkmamJlCSgmbGFiZWwoImVjYl9kZWNfdGFpbCIpKTsKKysJJmptcAkoJmxhYmVsKCJlY2Jf ZGVjX2xvb3AzIikpOworKworKyZzZXRfbGFiZWwoImVjYl9kZWNfbG9vcDMiLDE2KTsKKysJJm1v dnVwcwkoJGlub3V0MCwmUVdQKDAsJGlucCkpOworKwkmbW92dXBzCSgkaW5vdXQxLCZRV1AoMHgx MCwkaW5wKSk7CisrCSZtb3Z1cHMJKCRpbm91dDIsJlFXUCgweDIwLCRpbnApKTsKKysJJmNhbGwJ KCJfYWVzbmlfZGVjcnlwdDMiKTsKKysJJnN1YgkoJGxlbiwweDMwKTsKKysJJmxlYQkoJGlucCwm RFdQKDB4MzAsJGlucCkpOworKwkmbGVhCSgkb3V0LCZEV1AoMHgzMCwkb3V0KSk7CisrCSZtb3Z1 cHMJKCZRV1AoLTB4MzAsJG91dCksJGlub3V0MCk7CisrCSZtb3YJKCRrZXksJGtleV8pOwkJIyBy ZXN0b3JlICRrZXkKKysJJm1vdnVwcwkoJlFXUCgtMHgyMCwkb3V0KSwkaW5vdXQxKTsKKysJJm1v dgkoJHJvdW5kcywkcm91bmRzXyk7CSMgcmVzdG9yZSAkcm91bmRzCisrCSZtb3Z1cHMJKCZRV1Ao LTB4MTAsJG91dCksJGlub3V0Mik7CisrCSZqYQkoJmxhYmVsKCJlY2JfZGVjX2xvb3AzIikpOwor KworKyZzZXRfbGFiZWwoImVjYl9kZWNfdGFpbCIpOworKwkmYWRkCSgkbGVuLDB4NDApOworKwkm anoJKCZsYWJlbCgiZWNiX3JldCIpKTsKKysKKysJJmNtcAkoJGxlbiwweDEwKTsKKysJJm1vdnVw cwkoJGlub3V0MCwmUVdQKDAsJGlucCkpOworKwkmamUJKCZsYWJlbCgiZWNiX2RlY19vbmUiKSk7 CisrCSZjbXAJKCRsZW4sMHgyMCk7CisrCSZtb3Z1cHMJKCRpbm91dDEsJlFXUCgweDEwLCRpbnAp KTsKKysJJmplCSgmbGFiZWwoImVjYl9kZWNfdHdvIikpOworKwkmY21wCSgkbGVuLDB4MzApOwor KwkmbW92dXBzCSgkaW5vdXQyLCZRV1AoMHgyMCwkaW5wKSk7CisrCSZqZQkoJmxhYmVsKCJlY2Jf ZGVjX3RocmVlIikpOworKwkmbW92dXBzCSgkaW5vdXQzLCZRV1AoMHgzMCwkaW5wKSk7CisrCSZj YWxsCSgiX2Flc25pX2RlY3J5cHQ0Iik7CisrCSZtb3Z1cHMJKCZRV1AoMCwkb3V0KSwkaW5vdXQw KTsKKysJJm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOworKwkmbW92dXBzCSgmUVdQ KDB4MjAsJG91dCksJGlub3V0Mik7CisrCSZtb3Z1cHMJKCZRV1AoMHgzMCwkb3V0KSwkaW5vdXQz KTsKKysJJmptcAkoJmxhYmVsKCJlY2JfcmV0IikpOworKworKyZzZXRfbGFiZWwoImVjYl9kZWNf b25lIiwxNik7CisrCSZhZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJkZWMiKTsJIyAmY2FsbAkoIl9h ZXNuaV9kZWNyeXB0MyIpOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZq bXAJKCZsYWJlbCgiZWNiX3JldCIpKTsKKysKKysmc2V0X2xhYmVsKCJlY2JfZGVjX3R3byIsMTYp OworKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MyIpOworKwkmbW92dXBzCSgmUVdQKDAsJG91dCks JGlub3V0MCk7CisrCSZtb3Z1cHMJKCZRV1AoMHgxMCwkb3V0KSwkaW5vdXQxKTsKKysJJmptcAko JmxhYmVsKCJlY2JfcmV0IikpOworKworKyZzZXRfbGFiZWwoImVjYl9kZWNfdGhyZWUiLDE2KTsK KysJJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDMiKTsKKysJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRp bm91dDApOworKwkmbW92dXBzCSgmUVdQKDB4MTAsJG91dCksJGlub3V0MSk7CisrCSZtb3Z1cHMJ KCZRV1AoMHgyMCwkb3V0KSwkaW5vdXQyKTsKKysKKysmc2V0X2xhYmVsKCJlY2JfcmV0Iik7Cisr JmZ1bmN0aW9uX2VuZCgiYWVzbmlfZWNiX2VuY3J5cHQiKTsKKyt9CisrCisrIyB2b2lkICRQUkVG SVhfY2JjX2VuY3J5cHQgKGNvbnN0IHZvaWQgKmlucCwgdm9pZCAqb3V0LAorKyMgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisrIyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKml2cCxjb25zdCBpbnQgZW5j KTsKKysmZnVuY3Rpb25fYmVnaW4oIiR7UFJFRklYfV9jYmNfZW5jcnlwdCIpOworKwkmbW92CSgk aW5wLCZ3cGFyYW0oMCkpOworKwkmbW92CSgkb3V0LCZ3cGFyYW0oMSkpOworKwkmbW92CSgkbGVu LCZ3cGFyYW0oMikpOworKwkmbW92CSgka2V5LCZ3cGFyYW0oMykpOworKwkmdGVzdAkoJGxlbiwk bGVuKTsKKysJJm1vdgkoJGtleV8sJndwYXJhbSg0KSk7CisrCSZqegkoJmxhYmVsKCJjYmNfcmV0 IikpOworKworKwkmY21wCSgmd3BhcmFtKDUpLDApOworKwkmbW92dXBzCSgkaXZlYywmUVdQKDAs JGtleV8pKTsJIyBsb2FkIElWCisrCSZtb3YJKCRyb3VuZHMsJkRXUCgyNDAsJGtleSkpOworKwkm bW92CSgka2V5Xywka2V5KTsJCSMgYmFja3VwICRrZXkKKysJJm1vdgkoJHJvdW5kc18sJHJvdW5k cyk7CSMgYmFja3VwICRyb3VuZHMKKysJJmplCSgmbGFiZWwoImNiY19kZWNyeXB0IikpOworKwor KwkmbW92YXBzCSgkaW5vdXQwLCRpdmVjKTsKKysJJmNtcAkoJGxlbiwxNik7CisrCSZqYgkoJmxh YmVsKCJjYmNfZW5jX3RhaWwiKSk7CisrCSZzdWIJKCRsZW4sMTYpOworKwkmam1wCSgmbGFiZWwo ImNiY19lbmNfbG9vcCIpKTsKKysKKysmc2V0X2xhYmVsKCJjYmNfZW5jX2xvb3AiLDE2KTsKKysJ Jm1vdnVwcwkoJGl2ZWMsJlFXUCgwLCRpbnApKTsKKysJJmxlYQkoJGlucCwmRFdQKDE2LCRpbnAp KTsKKysJJnB4b3IJKCRpbm91dDAsJGl2ZWMpOworKwkmYWVzbmlfaW5saW5lX2dlbmVyYXRlMSgi ZW5jIik7CSMgJmNhbGwJKCJfYWVzbmlfZW5jcnlwdDMiKTsKKysJJnN1YgkoJGxlbiwxNik7Cisr CSZsZWEJKCRvdXQsJkRXUCgxNiwkb3V0KSk7CisrCSZtb3YJKCRyb3VuZHMsJHJvdW5kc18pOwkj IHJlc3RvcmUgJHJvdW5kcworKwkmbW92CSgka2V5LCRrZXlfKTsJCSMgcmVzdG9yZSAka2V5Cisr CSZtb3Z1cHMJKCZRV1AoLTE2LCRvdXQpLCRpbm91dDApOworKwkmam5jCSgmbGFiZWwoImNiY19l bmNfbG9vcCIpKTsKKysJJmFkZAkoJGxlbiwxNik7CisrCSZqbnoJKCZsYWJlbCgiY2JjX2VuY190 YWlsIikpOworKwkmbW92YXBzCSgkaXZlYywkaW5vdXQwKTsKKysJJmptcAkoJmxhYmVsKCJjYmNf cmV0IikpOworKworKyZzZXRfbGFiZWwoImNiY19lbmNfdGFpbCIpOworKwkmbW92CSgiZWN4Iiwk bGVuKTsJCSMgemFwcyAkcm91bmRzCisrCSZkYXRhX3dvcmQoMHhBNEYzRjY4OSk7CQkjIHJlcCBt b3ZzYgorKwkmbW92CSgiZWN4IiwxNik7CQkjIHplcm8gdGFpbAorKwkmc3ViCSgiZWN4IiwkbGVu KTsKKysJJnhvcgkoImVheCIsImVheCIpOwkJIyB6YXBzICRsZW4KKysJJmRhdGFfd29yZCgweEFB RjNGNjg5KTsJCSMgcmVwIHN0b3NiCisrCSZsZWEJKCRvdXQsJkRXUCgtMTYsJG91dCkpOwkjIHJl d2luZCAkb3V0IGJ5IDEgYmxvY2sKKysJJm1vdgkoJHJvdW5kcywkcm91bmRzXyk7CSMgcmVzdG9y ZSAkcm91bmRzCisrCSZtb3YJKCRpbnAsJG91dCk7CQkjICRpbnAgYW5kICRvdXQgYXJlIHRoZSBz YW1lCisrCSZtb3YJKCRrZXksJGtleV8pOwkJIyByZXN0b3JlICRrZXkKKysJJmptcAkoJmxhYmVs KCJjYmNfZW5jX2xvb3AiKSk7CisrCisrJnNldF9sYWJlbCgiY2JjX2RlY3J5cHQiLDE2KTsKKysJ JnN1YgkoJGxlbiwweDQwKTsKKysJJmpiZQkoJmxhYmVsKCJjYmNfZGVjX3RhaWwiKSk7CisrCSZq bXAJKCZsYWJlbCgiY2JjX2RlY19sb29wMyIpKTsKKysKKysmc2V0X2xhYmVsKCJjYmNfZGVjX2xv b3AzIiwxNik7CisrCSZtb3Z1cHMJKCRpbm91dDAsJlFXUCgwLCRpbnApKTsKKysJJm1vdnVwcwko JGlub3V0MSwmUVdQKDB4MTAsJGlucCkpOworKwkmbW92dXBzCSgkaW5vdXQyLCZRV1AoMHgyMCwk aW5wKSk7CisrCSZtb3ZhcHMJKCRpbjAsJGlub3V0MCk7CisrCSZtb3ZhcHMJKCRpbjEsJGlub3V0 MSk7CisrCSZjYWxsCSgiX2Flc25pX2RlY3J5cHQzIik7CisrCSZzdWIJKCRsZW4sMHgzMCk7Cisr CSZsZWEJKCRpbnAsJkRXUCgweDMwLCRpbnApKTsKKysJJmxlYQkoJG91dCwmRFdQKDB4MzAsJG91 dCkpOworKwkmcHhvcgkoJGlub3V0MCwkaXZlYyk7CisrCSZweG9yCSgkaW5vdXQxLCRpbjApOwor KwkmbW92dXBzCSgkaXZlYywmUVdQKC0weDEwLCRpbnApKTsKKysJJnB4b3IJKCRpbm91dDIsJGlu MSk7CisrCSZtb3Z1cHMJKCZRV1AoLTB4MzAsJG91dCksJGlub3V0MCk7CisrCSZtb3YJKCRyb3Vu ZHMsJHJvdW5kc18pCSMgcmVzdG9yZSAkcm91bmRzCisrCSZtb3Z1cHMJKCZRV1AoLTB4MjAsJG91 dCksJGlub3V0MSk7CisrCSZtb3YJKCRrZXksJGtleV8pOwkJIyByZXN0b3JlICRrZXkKKysJJm1v dnVwcwkoJlFXUCgtMHgxMCwkb3V0KSwkaW5vdXQyKTsKKysJJmphCSgmbGFiZWwoImNiY19kZWNf bG9vcDMiKSk7CisrCisrJnNldF9sYWJlbCgiY2JjX2RlY190YWlsIik7CisrCSZhZGQJKCRsZW4s MHg0MCk7CisrCSZqegkoJmxhYmVsKCJjYmNfcmV0IikpOworKworKwkmbW92dXBzCSgkaW5vdXQw LCZRV1AoMCwkaW5wKSk7CisrCSZjbXAJKCRsZW4sMHgxMCk7CisrCSZtb3ZhcHMJKCRpbjAsJGlu b3V0MCk7CisrCSZqYmUJKCZsYWJlbCgiY2JjX2RlY19vbmUiKSk7CisrCSZtb3Z1cHMJKCRpbm91 dDEsJlFXUCgweDEwLCRpbnApKTsKKysJJmNtcAkoJGxlbiwweDIwKTsKKysJJm1vdmFwcwkoJGlu MSwkaW5vdXQxKTsKKysJJmpiZQkoJmxhYmVsKCJjYmNfZGVjX3R3byIpKTsKKysJJm1vdnVwcwko JGlub3V0MiwmUVdQKDB4MjAsJGlucCkpOworKwkmY21wCSgkbGVuLDB4MzApOworKwkmamJlCSgm bGFiZWwoImNiY19kZWNfdGhyZWUiKSk7CisrCSZtb3Z1cHMJKCRpbm91dDMsJlFXUCgweDMwLCRp bnApKTsKKysJJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDQiKTsKKysJJm1vdnVwcwkoJHJuZGtleTAs JlFXUCgweDEwLCRpbnApKTsKKysJJm1vdnVwcwkoJHJuZGtleTEsJlFXUCgweDIwLCRpbnApKTsK KysJJnB4b3IJKCRpbm91dDAsJGl2ZWMpOworKwkmcHhvcgkoJGlub3V0MSwkaW4wKTsKKysJJm1v dnVwcwkoJGl2ZWMsJlFXUCgweDMwLCRpbnApKTsKKysJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRp bm91dDApOworKwkmcHhvcgkoJGlub3V0Miwkcm5ka2V5MCk7CisrCSZweG9yCSgkaW5vdXQzLCRy bmRrZXkxKTsKKysJJm1vdnVwcwkoJlFXUCgweDEwLCRvdXQpLCRpbm91dDEpOworKwkmbW92dXBz CSgmUVdQKDB4MjAsJG91dCksJGlub3V0Mik7CisrCSZtb3ZhcHMJKCRpbm91dDAsJGlub3V0Myk7 CisrCSZsZWEJKCRvdXQsJkRXUCgweDMwLCRvdXQpKTsKKysJJmptcAkoJmxhYmVsKCJjYmNfZGVj X3RhaWxfY29sbGVjdGVkIikpOworKworKyZzZXRfbGFiZWwoImNiY19kZWNfb25lIik7CisrCSZh ZXNuaV9pbmxpbmVfZ2VuZXJhdGUxKCJkZWMiKTsJIyAmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MyIp OworKwkmcHhvcgkoJGlub3V0MCwkaXZlYyk7CisrCSZtb3ZhcHMJKCRpdmVjLCRpbjApOworKwkm am1wCSgmbGFiZWwoImNiY19kZWNfdGFpbF9jb2xsZWN0ZWQiKSk7CisrCisrJnNldF9sYWJlbCgi Y2JjX2RlY190d28iKTsKKysJJmNhbGwJKCJfYWVzbmlfZGVjcnlwdDMiKTsKKysJJnB4b3IJKCRp bm91dDAsJGl2ZWMpOworKwkmcHhvcgkoJGlub3V0MSwkaW4wKTsKKysJJm1vdnVwcwkoJlFXUCgw LCRvdXQpLCRpbm91dDApOworKwkmbW92YXBzCSgkaW5vdXQwLCRpbm91dDEpOworKwkmbW92YXBz CSgkaXZlYywkaW4xKTsKKysJJmxlYQkoJG91dCwmRFdQKDB4MTAsJG91dCkpOworKwkmam1wCSgm bGFiZWwoImNiY19kZWNfdGFpbF9jb2xsZWN0ZWQiKSk7CisrCisrJnNldF9sYWJlbCgiY2JjX2Rl Y190aHJlZSIpOworKwkmY2FsbAkoIl9hZXNuaV9kZWNyeXB0MyIpOworKwkmcHhvcgkoJGlub3V0 MCwkaXZlYyk7CisrCSZweG9yCSgkaW5vdXQxLCRpbjApOworKwkmcHhvcgkoJGlub3V0MiwkaW4x KTsKKysJJm1vdnVwcwkoJlFXUCgwLCRvdXQpLCRpbm91dDApOworKwkmbW92dXBzCSgmUVdQKDB4 MTAsJG91dCksJGlub3V0MSk7CisrCSZtb3ZhcHMJKCRpbm91dDAsJGlub3V0Mik7CisrCSZtb3Z1 cHMJKCRpdmVjLCZRV1AoMHgyMCwkaW5wKSk7CisrCSZsZWEJKCRvdXQsJkRXUCgweDIwLCRvdXQp KTsKKysKKysmc2V0X2xhYmVsKCJjYmNfZGVjX3RhaWxfY29sbGVjdGVkIik7CisrCSZhbmQJKCRs ZW4sMTUpOworKwkmam56CSgmbGFiZWwoImNiY19kZWNfdGFpbF9wYXJ0aWFsIikpOworKwkmbW92 dXBzCSgmUVdQKDAsJG91dCksJGlub3V0MCk7CisrCSZqbXAJKCZsYWJlbCgiY2JjX3JldCIpKTsK KysKKysmc2V0X2xhYmVsKCJjYmNfZGVjX3RhaWxfcGFydGlhbCIpOworKwkmbW92CSgka2V5Xywi ZXNwIik7CisrCSZzdWIJKCJlc3AiLDE2KTsKKysJJmFuZAkoImVzcCIsLTE2KTsKKysJJm1vdmFw cwkoJlFXUCgwLCJlc3AiKSwkaW5vdXQwKTsKKysJJm1vdgkoJGlucCwiZXNwIik7CisrCSZtb3YJ KCJlY3giLCRsZW4pOworKwkmZGF0YV93b3JkKDB4QTRGM0Y2ODkpOwkJIyByZXAgbW92c2IKKysJ Jm1vdgkoImVzcCIsJGtleV8pOworKworKyZzZXRfbGFiZWwoImNiY19yZXQiKTsKKysJJm1vdgko JGtleV8sJndwYXJhbSg0KSk7CisrCSZtb3Z1cHMJKCZRV1AoMCwka2V5XyksJGl2ZWMpOwkjIG91 dHB1dCBJVgorKyZmdW5jdGlvbl9lbmQoIiR7UFJFRklYfV9jYmNfZW5jcnlwdCIpOworKworKyMg TWVjaGFuaWNhbCBwb3J0IGZyb20gYWVzbmkteDg2XzY0LnBsLgorKyMKKysjIF9hZXNuaV9zZXRf ZW5jcnlwdF9rZXkgaXMgcHJpdmF0ZSBpbnRlcmZhY2UsCisrIyBpbnB1dDoKKysjCSJlYXgiCWNv bnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXkKKysjCSRyb3VuZHMJaW50IGJpdHMKKysjCSRrZXkJ QUVTX0tFWSAqa2V5CisrIyBvdXRwdXQ6CisrIwkiZWF4IglyZXR1cm4gY29kZQorKyMJJHJvdW5k CXJvdW5kcworKworKyZmdW5jdGlvbl9iZWdpbl9CKCJfYWVzbmlfc2V0X2VuY3J5cHRfa2V5Iik7 CisrCSZ0ZXN0CSgiZWF4IiwiZWF4Iik7CisrCSZqegkoJmxhYmVsKCJiYWRfcG9pbnRlciIpKTsK KysJJnRlc3QJKCRrZXksJGtleSk7CisrCSZqegkoJmxhYmVsKCJiYWRfcG9pbnRlciIpKTsKKysK KysJJm1vdnVwcwkoInhtbTAiLCZRV1AoMCwiZWF4IikpOwkjIHB1bGwgZmlyc3QgMTI4IGJpdHMg b2YgKnVzZXJLZXkKKysJJnB4b3IJKCJ4bW00IiwieG1tNCIpOwkjIGxvdyBkd29yZCBvZiB4bW00 IGlzIGFzc3VtZWQgMAorKwkmbGVhCSgka2V5LCZEV1AoMTYsJGtleSkpOworKwkmY21wCSgkcm91 bmRzLDI1Nik7CisrCSZqZQkoJmxhYmVsKCIxNHJvdW5kcyIpKTsKKysJJmNtcAkoJHJvdW5kcywx OTIpOworKwkmamUJKCZsYWJlbCgiMTJyb3VuZHMiKSk7CisrCSZjbXAJKCRyb3VuZHMsMTI4KTsK KysJJmpuZQkoJmxhYmVsKCJiYWRfa2V5Yml0cyIpKTsKKysKKysmc2V0X2xhYmVsKCIxMHJvdW5k cyIsMTYpOworKwkmbW92CQkoJHJvdW5kcyw5KTsKKysJJiRtb3Zla2V5CSgmUVdQKC0xNiwka2V5 KSwieG1tMCIpOwkjIHJvdW5kIDAKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4 MDEpOwkJIyByb3VuZCAxCisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4X2NvbGQiKSk7CisrCSZh ZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDIpOwkJIyByb3VuZCAyCisrCSZjYWxsCQko JmxhYmVsKCJrZXlfMTI4IikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgw NCk7CQkjIHJvdW5kIDMKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisrCSZhZXNrZXln ZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDA4KTsJCSMgcm91bmQgNAorKwkmY2FsbAkJKCZsYWJl bCgia2V5XzEyOCIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTAiLDB4MTApOwkJ IyByb3VuZCA1CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4IikpOworKwkmYWVza2V5Z2VuYXNz aXN0KCJ4bW0xIiwieG1tMCIsMHgyMCk7CQkjIHJvdW5kIDYKKysJJmNhbGwJCSgmbGFiZWwoImtl eV8xMjgiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDQwKTsJCSMgcm91 bmQgNworKwkmY2FsbAkJKCZsYWJlbCgia2V5XzEyOCIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgi eG1tMSIsInhtbTAiLDB4ODApOwkJIyByb3VuZCA4CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMTI4 IikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMCIsMHgxYik7CQkjIHJvdW5kIDkK KysJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEi LCJ4bW0wIiwweDM2KTsJCSMgcm91bmQgMTAKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xMjgiKSk7 CisrCSYkbW92ZWtleQkoJlFXUCgwLCRrZXkpLCJ4bW0wIik7CisrCSZtb3YJCSgmRFdQKDgwLCRr ZXkpLCRyb3VuZHMpOworKwkmeG9yCQkoImVheCIsImVheCIpOworKwkmcmV0KCk7CisrCisrJnNl dF9sYWJlbCgia2V5XzEyOCIsMTYpOworKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMCIp OworKwkmbGVhCQkoJGtleSwmRFdQKDE2LCRrZXkpKTsKKysmc2V0X2xhYmVsKCJrZXlfMTI4X2Nv bGQiKTsKKysJJnNodWZwcwkJKCJ4bW00IiwieG1tMCIsMGIwMDAxMDAwMCk7CisrCSZweG9yCQko InhtbTAiLCJ4bW00Iik7CisrCSZzaHVmcHMJCSgieG1tNCIsInhtbTAiLDBiMTAwMDExMDAsKTsK KysJJnB4b3IJCSgieG1tMCIsInhtbTQiKTsKKysJJnBzaHVmZAkJKCJ4bW0xIiwieG1tMSIsMGIx MTExMTExMSk7CSMgY3JpdGljYWwgcGF0aAorKwkmcHhvcgkJKCJ4bW0wIiwieG1tMSIpOworKwkm cmV0KCk7CisrCisrJnNldF9sYWJlbCgiMTJyb3VuZHMiLDE2KTsKKysJJm1vdnEJCSgieG1tMiIs JlFXUCgxNiwiZWF4IikpOwkjIHJlbWFpbmluZyAxLzMgb2YgKnVzZXJLZXkKKysJJm1vdgkJKCRy b3VuZHMsMTEpOworKwkmJG1vdmVrZXkJKCZRV1AoLTE2LCRrZXkpLCJ4bW0wIikJCSMgcm91bmQg MAorKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgwMSk7CQkjIHJvdW5kIDEsMgor KwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5MmFfY29sZCIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgi eG1tMSIsInhtbTIiLDB4MDIpOwkJIyByb3VuZCAyLDMKKysJJmNhbGwJCSgmbGFiZWwoImtleV8x OTJiIikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgwNCk7CQkjIHJvdW5k IDQsNQorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzE5MmEiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3Qo InhtbTEiLCJ4bW0yIiwweDA4KTsJCSMgcm91bmQgNSw2CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlf MTkyYiIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MTApOwkJIyByb3Vu ZCA3LDgKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJhIikpOworKwkmYWVza2V5Z2VuYXNzaXN0 KCJ4bW0xIiwieG1tMiIsMHgyMCk7CQkjIHJvdW5kIDgsOQorKwkmY2FsbAkJKCZsYWJlbCgia2V5 XzE5MmIiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDQwKTsJCSMgcm91 bmQgMTAsMTEKKysJJmNhbGwJCSgmbGFiZWwoImtleV8xOTJhIikpOworKwkmYWVza2V5Z2VuYXNz aXN0KCJ4bW0xIiwieG1tMiIsMHg4MCk7CQkjIHJvdW5kIDExLDEyCisrCSZjYWxsCQkoJmxhYmVs KCJrZXlfMTkyYiIpKTsKKysJJiRtb3Zla2V5CSgmUVdQKDAsJGtleSksInhtbTAiKTsKKysJJm1v dgkJKCZEV1AoNDgsJGtleSksJHJvdW5kcyk7CisrCSZ4b3IJCSgiZWF4IiwiZWF4Iik7CisrCSZy ZXQoKTsKKysKKysmc2V0X2xhYmVsKCJrZXlfMTkyYSIsMTYpOworKwkmJG1vdmVrZXkJKCZRV1Ao MCwka2V5KSwieG1tMCIpOworKwkmbGVhCQkoJGtleSwmRFdQKDE2LCRrZXkpKTsKKysmc2V0X2xh YmVsKCJrZXlfMTkyYV9jb2xkIiwxNik7CisrCSZtb3ZhcHMJCSgieG1tNSIsInhtbTIiKTsKKysm c2V0X2xhYmVsKCJrZXlfMTkyYl93YXJtIik7CisrCSZzaHVmcHMJCSgieG1tNCIsInhtbTAiLDBi MDAwMTAwMDApOworKwkmbW92YXBzCQkoInhtbTMiLCJ4bW0yIik7CisrCSZweG9yCQkoInhtbTAi LCJ4bW00Iik7CisrCSZzaHVmcHMJCSgieG1tNCIsInhtbTAiLDBiMTAwMDExMDApOworKwkmcHNs bGRxCQkoInhtbTMiLDQpOworKwkmcHhvcgkJKCJ4bW0wIiwieG1tNCIpOworKwkmcHNodWZkCQko InhtbTEiLCJ4bW0xIiwwYjAxMDEwMTAxKTsJIyBjcml0aWNhbCBwYXRoCisrCSZweG9yCQkoInht bTIiLCJ4bW0zIik7CisrCSZweG9yCQkoInhtbTAiLCJ4bW0xIik7CisrCSZwc2h1ZmQJCSgieG1t MyIsInhtbTAiLDBiMTExMTExMTEpOworKwkmcHhvcgkJKCJ4bW0yIiwieG1tMyIpOworKwkmcmV0 KCk7CisrCisrJnNldF9sYWJlbCgia2V5XzE5MmIiLDE2KTsKKysJJm1vdmFwcwkJKCJ4bW0zIiwi eG1tMCIpOworKwkmc2h1ZnBzCQkoInhtbTUiLCJ4bW0wIiwwYjAxMDAwMTAwKTsKKysJJiRtb3Zl a2V5CSgmUVdQKDAsJGtleSksInhtbTUiKTsKKysJJnNodWZwcwkJKCJ4bW0zIiwieG1tMiIsMGIw MTAwMTExMCk7CisrCSYkbW92ZWtleQkoJlFXUCgxNiwka2V5KSwieG1tMyIpOworKwkmbGVhCQko JGtleSwmRFdQKDMyLCRrZXkpKTsKKysJJmptcAkJKCZsYWJlbCgia2V5XzE5MmJfd2FybSIpKTsK KysKKysmc2V0X2xhYmVsKCIxNHJvdW5kcyIsMTYpOworKwkmbW92dXBzCQkoInhtbTIiLCZRV1Ao MTYsImVheCIpKTsJIyByZW1haW5pbmcgaGFsZiBvZiAqdXNlcktleQorKwkmbW92CQkoJHJvdW5k cywxMyk7CisrCSZsZWEJCSgka2V5LCZEV1AoMTYsJGtleSkpOworKwkmJG1vdmVrZXkJKCZRV1Ao LTMyLCRrZXkpLCJ4bW0wIik7CSMgcm91bmQgMAorKwkmJG1vdmVrZXkJKCZRV1AoLTE2LCRrZXkp LCJ4bW0yIik7CSMgcm91bmQgMQorKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHgw MSk7CQkjIHJvdW5kIDIKKysJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZhX2NvbGQiKSk7CisrCSZh ZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDAxKTsJCSMgcm91bmQgMworKwkmY2FsbAkJ KCZsYWJlbCgia2V5XzI1NmIiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiww eDAyKTsJCSMgcm91bmQgNAorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmEiKSk7CisrCSZhZXNr ZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDAyKTsJCSMgcm91bmQgNQorKwkmY2FsbAkJKCZs YWJlbCgia2V5XzI1NmIiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDA0 KTsJCSMgcm91bmQgNgorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmEiKSk7CisrCSZhZXNrZXln ZW5hc3Npc3QoInhtbTEiLCJ4bW0wIiwweDA0KTsJCSMgcm91bmQgNworKwkmY2FsbAkJKCZsYWJl bCgia2V5XzI1NmIiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDA4KTsJ CSMgcm91bmQgOAorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmEiKSk7CisrCSZhZXNrZXlnZW5h c3Npc3QoInhtbTEiLCJ4bW0wIiwweDA4KTsJCSMgcm91bmQgOQorKwkmY2FsbAkJKCZsYWJlbCgi a2V5XzI1NmIiKSk7CisrCSZhZXNrZXlnZW5hc3Npc3QoInhtbTEiLCJ4bW0yIiwweDEwKTsJCSMg cm91bmQgMTAKKysJJmNhbGwJCSgmbGFiZWwoImtleV8yNTZhIikpOworKwkmYWVza2V5Z2VuYXNz aXN0KCJ4bW0xIiwieG1tMCIsMHgxMCk7CQkjIHJvdW5kIDExCisrCSZjYWxsCQkoJmxhYmVsKCJr ZXlfMjU2YiIpKTsKKysJJmFlc2tleWdlbmFzc2lzdCgieG1tMSIsInhtbTIiLDB4MjApOwkJIyBy b3VuZCAxMgorKwkmY2FsbAkJKCZsYWJlbCgia2V5XzI1NmEiKSk7CisrCSZhZXNrZXlnZW5hc3Np c3QoInhtbTEiLCJ4bW0wIiwweDIwKTsJCSMgcm91bmQgMTMKKysJJmNhbGwJCSgmbGFiZWwoImtl eV8yNTZiIikpOworKwkmYWVza2V5Z2VuYXNzaXN0KCJ4bW0xIiwieG1tMiIsMHg0MCk7CQkjIHJv dW5kIDE0CisrCSZjYWxsCQkoJmxhYmVsKCJrZXlfMjU2YSIpKTsKKysJJiRtb3Zla2V5CSgmUVdQ KDAsJGtleSksInhtbTAiKTsKKysJJm1vdgkJKCZEV1AoMTYsJGtleSksJHJvdW5kcyk7CisrCSZ4 b3IJCSgiZWF4IiwiZWF4Iik7CisrCSZyZXQoKTsKKysKKysmc2V0X2xhYmVsKCJrZXlfMjU2YSIs MTYpOworKwkmJG1vdmVrZXkJKCZRV1AoMCwka2V5KSwieG1tMiIpOworKwkmbGVhCQkoJGtleSwm RFdQKDE2LCRrZXkpKTsKKysmc2V0X2xhYmVsKCJrZXlfMjU2YV9jb2xkIik7CisrCSZzaHVmcHMJ CSgieG1tNCIsInhtbTAiLDBiMDAwMTAwMDApOworKwkmcHhvcgkJKCJ4bW0wIiwieG1tNCIpOwor Kwkmc2h1ZnBzCQkoInhtbTQiLCJ4bW0wIiwwYjEwMDAxMTAwKTsKKysJJnB4b3IJCSgieG1tMCIs InhtbTQiKTsKKysJJnBzaHVmZAkJKCJ4bW0xIiwieG1tMSIsMGIxMTExMTExMSk7CSMgY3JpdGlj YWwgcGF0aAorKwkmcHhvcgkJKCJ4bW0wIiwieG1tMSIpOworKwkmcmV0KCk7CisrCisrJnNldF9s YWJlbCgia2V5XzI1NmIiLDE2KTsKKysJJiRtb3Zla2V5CSgmUVdQKDAsJGtleSksInhtbTAiKTsK KysJJmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7CisrCisrCSZzaHVmcHMJCSgieG1tNCIsInht bTIiLDBiMDAwMTAwMDApOworKwkmcHhvcgkJKCJ4bW0yIiwieG1tNCIpOworKwkmc2h1ZnBzCQko InhtbTQiLCJ4bW0yIiwwYjEwMDAxMTAwKTsKKysJJnB4b3IJCSgieG1tMiIsInhtbTQiKTsKKysJ JnBzaHVmZAkJKCJ4bW0xIiwieG1tMSIsMGIxMDEwMTAxMCk7CSMgY3JpdGljYWwgcGF0aAorKwkm cHhvcgkJKCJ4bW0yIiwieG1tMSIpOworKwkmcmV0KCk7CisrCisrJnNldF9sYWJlbCgiYmFkX3Bv aW50ZXIiLDQpOworKwkmbW92CSgiZWF4IiwtMSk7CisrCSZyZXQJKCk7CisrJnNldF9sYWJlbCgi YmFkX2tleWJpdHMiLDQpOworKwkmbW92CSgiZWF4IiwtMik7CisrCSZyZXQJKCk7CisrJmZ1bmN0 aW9uX2VuZF9CKCJfYWVzbmlfc2V0X2VuY3J5cHRfa2V5Iik7CisrCisrIyBpbnQgJFBSRUZJWF9z ZXRfZW5jcnlwdF9rZXkgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGludCBiaXRzLAor KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRVNfS0VZICprZXkpCisrJmZ1bmN0aW9u X2JlZ2luX0IoIiR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXkiKTsKKysJJm1vdgkoImVheCIsJndw YXJhbSgwKSk7CisrCSZtb3YJKCRyb3VuZHMsJndwYXJhbSgxKSk7CisrCSZtb3YJKCRrZXksJndw YXJhbSgyKSk7CisrCSZjYWxsCSgiX2Flc25pX3NldF9lbmNyeXB0X2tleSIpOworKwkmcmV0CSgp OworKyZmdW5jdGlvbl9lbmRfQigiJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleSIpOworKworKyMg aW50ICRQUkVGSVhfc2V0X2RlY3J5cHRfa2V5IChjb25zdCB1bnNpZ25lZCBjaGFyICp1c2VyS2V5 LCBpbnQgYml0cywKKysjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUVTX0tFWSAqa2V5 KQorKyZmdW5jdGlvbl9iZWdpbl9CKCIke1BSRUZJWH1fc2V0X2RlY3J5cHRfa2V5Iik7CisrCSZt b3YJKCJlYXgiLCZ3cGFyYW0oMCkpOworKwkmbW92CSgkcm91bmRzLCZ3cGFyYW0oMSkpOworKwkm bW92CSgka2V5LCZ3cGFyYW0oMikpOworKwkmY2FsbAkoIl9hZXNuaV9zZXRfZW5jcnlwdF9rZXki KTsKKysJJm1vdgkoJGtleSwmd3BhcmFtKDIpKTsKKysJJnNobAkoJHJvdW5kcyw0KQkjIHJvdW5k cy0xIGFmdGVyIF9hZXNuaV9zZXRfZW5jcnlwdF9rZXkKKysJJnRlc3QJKCJlYXgiLCJlYXgiKTsK KysJJmpuegkoJmxhYmVsKCJkZWNfa2V5X3JldCIpKTsKKysJJmxlYQkoImVheCIsJkRXUCgxNiwk a2V5LCRyb3VuZHMpKTsJIyBlbmQgb2Yga2V5IHNjaGVkdWxlCisrCisrCSYkbW92ZWtleQkoInht bTAiLCZRV1AoMCwka2V5KSk7CSMganVzdCBzd2FwCisrCSYkbW92ZWtleQkoInhtbTEiLCZRV1Ao MCwiZWF4IikpOworKwkmJG1vdmVrZXkJKCZRV1AoMCwiZWF4IiksInhtbTAiKTsKKysJJiRtb3Zl a2V5CSgmUVdQKDAsJGtleSksInhtbTEiKTsKKysJJmxlYQkJKCRrZXksJkRXUCgxNiwka2V5KSk7 CisrCSZsZWEJCSgiZWF4IiwmRFdQKC0xNiwiZWF4IikpOworKworKyZzZXRfbGFiZWwoImRlY19r ZXlfaW52ZXJzZSIpOworKwkmJG1vdmVrZXkJKCJ4bW0wIiwmUVdQKDAsJGtleSkpOwkjIHN3YXAg YW5kIGludmVyc2UKKysJJiRtb3Zla2V5CSgieG1tMSIsJlFXUCgwLCJlYXgiKSk7CisrCSZhZXNp bWMJCSgieG1tMCIsInhtbTAiKTsKKysJJmFlc2ltYwkJKCJ4bW0xIiwieG1tMSIpOworKwkmbGVh CQkoJGtleSwmRFdQKDE2LCRrZXkpKTsKKysJJmxlYQkJKCJlYXgiLCZEV1AoLTE2LCJlYXgiKSk7 CisrCSZjbXAJCSgiZWF4Iiwka2V5KTsKKysJJiRtb3Zla2V5CSgmUVdQKDE2LCJlYXgiKSwieG1t MCIpOworKwkmJG1vdmVrZXkJKCZRV1AoLTE2LCRrZXkpLCJ4bW0xIik7CisrCSZqYQkJKCZsYWJl bCgiZGVjX2tleV9pbnZlcnNlIikpOworKworKwkmJG1vdmVrZXkJKCJ4bW0wIiwmUVdQKDAsJGtl eSkpOwkjIGludmVyc2UgbWlkZGxlCisrCSZhZXNpbWMJCSgieG1tMCIsInhtbTAiKTsKKysJJiRt b3Zla2V5CSgmUVdQKDAsJGtleSksInhtbTAiKTsKKysKKysJJnhvcgkJKCJlYXgiLCJlYXgiKTsJ CSMgcmV0dXJuIHN1Y2Nlc3MKKysmc2V0X2xhYmVsKCJkZWNfa2V5X3JldCIpOworKwkmcmV0CSgp OworKyZmdW5jdGlvbl9lbmRfQigiJHtQUkVGSVh9X3NldF9kZWNyeXB0X2tleSIpOworKyZhc2Np eigiQUVTIGZvciBJbnRlbCBBRVMtTkksIENSWVBUT0dBTVMgYnkgPGFwcHJvXEBvcGVuc3NsLm9y Zz4iKTsKKysKKysmYXNtX2ZpbmlzaCgpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvY3J5cHRv L2Flcy9hc20vYWVzbmkteDg2XzY0LnBsLmFlc25pIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9hZXMv YXNtL2Flc25pLXg4Nl82NC5wbAorLS0tIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9hZXMvYXNtL2Fl c25pLXg4Nl82NC5wbC5hZXNuaQkyMDEwLTExLTE2IDE3OjMzOjIzLjAwMDAwMDAwMCArMDEwMAor KysrIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9hZXMvYXNtL2Flc25pLXg4Nl82NC5wbAkyMDEwLTEx LTE2IDE3OjMzOjIzLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSw5OTEgQEAKKysjIS91c3Iv YmluL2VudiBwZXJsCisrIworKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysjIFdyaXR0ZW4gYnkgQW5keSBQb2x5 YWtvdiA8YXBwcm9AZnkuY2hhbG1lcnMuc2U+IGZvciB0aGUgT3BlblNTTAorKyMgcHJvamVjdC4g VGhlIG1vZHVsZSBpcywgaG93ZXZlciwgZHVhbCBsaWNlbnNlZCB1bmRlciBPcGVuU1NMIGFuZAor KyMgQ1JZUFRPR0FNUyBsaWNlbnNlcyBkZXBlbmRpbmcgb24gd2hlcmUgeW91IG9idGFpbiBpdC4g Rm9yIGZ1cnRoZXIKKysjIGRldGFpbHMgc2VlIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvfmFwcHJv L2NyeXB0b2dhbXMvLgorKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysjCisrIyBUaGlzIG1vZHVsZSBpbXBsZW1l bnRzIHN1cHBvcnQgZm9yIEludGVsIEFFUy1OSSBleHRlbnNpb24uIEluCisrIyBPcGVuU1NMIGNv bnRleHQgaXQncyB1c2VkIHdpdGggSW50ZWwgZW5naW5lLCBidXQgY2FuIGFsc28gYmUgdXNlZCBh cworKyMgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgY3J5cHRvL2Flcy9hc20vYWVzLXg4Nl82NC5w bCBbc2VlIGJlbG93IGZvcgorKyMgZGV0YWlsc10uCisrCisrJFBSRUZJWD0iYWVzbmkiOwkjIGlm ICRQUkVGSVggaXMgc2V0IHRvICJBRVMiLCB0aGUgc2NyaXB0CisrCQkJIyBnZW5lcmF0ZXMgZHJv cC1pbiByZXBsYWNlbWVudCBmb3IKKysJCQkjIGNyeXB0by9hZXMvYXNtL2Flcy14ODZfNjQucGw6 LSkKKysKKyskZmxhdm91ciA9IHNoaWZ0OworKyRvdXRwdXQgID0gc2hpZnQ7CisraWYgKCRmbGF2 b3VyID1+IC9cLi8pIHsgJG91dHB1dCA9ICRmbGF2b3VyOyB1bmRlZiAkZmxhdm91cjsgfQorKwor KyR3aW42ND0wOyAkd2luNjQ9MSBpZiAoJGZsYXZvdXIgPX4gL1tubV1hc218bWluZ3c2NC8gfHwg JG91dHB1dCA9fiAvXC5hc20kLyk7CisrCisrJDAgPX4gbS8oLipbXC9cXF0pW15cL1xcXSskLzsg JGRpcj0kMTsKKysoICR4bGF0ZT0iJHtkaXJ9eDg2XzY0LXhsYXRlLnBsIiBhbmQgLWYgJHhsYXRl ICkgb3IKKysoICR4bGF0ZT0iJHtkaXJ9Li4vLi4vcGVybGFzbS94ODZfNjQteGxhdGUucGwiIGFu ZCAtZiAkeGxhdGUpIG9yCisrZGllICJjYW4ndCBsb2NhdGUgeDg2XzY0LXhsYXRlLnBsIjsKKysK KytvcGVuIFNURE9VVCwifCAkXlggJHhsYXRlICRmbGF2b3VyICRvdXRwdXQiOworKworKyRtb3Zr ZXkgPSAkUFJFRklYIGVxICJhZXNuaSIgPyAibW92YXBzIiA6ICJtb3Z1cHMiOworK0BfNGFyZ3M9 JHdpbjY0PwkoIiVyY3giLCIlcmR4IiwiJXI4IiwgIiVyOSIpIDoJIyBXaW42NCBvcmRlcgorKwkJ KCIlcmRpIiwiJXJzaSIsIiVyZHgiLCIlcmN4Iik7CSMgVW5peCBvcmRlcgorKworKyRjb2RlPSIu dGV4dFxuIjsKKysKKyskcm91bmRzPSIlZWF4IjsJIyBpbnB1dCB0byBhbmQgY2hhbmdlZCBieSBh ZXNuaV9bZW58ZGVdY3J5cHROICEhIQorKyMgdGhpcyBpcyBuYXR1cmFsIFVuaXggYXJndW1lbnQg b3JkZXIgZm9yIHB1YmxpYyAkUFJFRklYX1tlY2J8Y2JjXV9lbmNyeXB0IC4uLgorKyRpbnA9IiVy ZGkiOworKyRvdXQ9IiVyc2kiOworKyRsZW49IiVyZHgiOworKyRrZXk9IiVyY3giOwkjIGlucHV0 IHRvIGFuZCBjaGFuZ2VkIGJ5IGFlc25pX1tlbnxkZV1jcnlwdE4gISEhCisrJGl2cD0iJXI4IjsJ IyBjYmMKKysKKyskcm5kc189IiVyMTBkIjsJIyBiYWNrdXAgY29weSBmb3IgJHJvdW5kcworKyRr ZXlfPSIlcjExIjsJIyBiYWNrdXAgY29weSBmb3IgJGtleQorKworKyMgJXhtbSByZWdpc3RlciBs YXlvdXQKKyskaW5vdXQwPSIleG1tMCI7CSRpbm91dDE9IiV4bW0xIjsKKyskaW5vdXQyPSIleG1t MiI7CSRpbm91dDM9IiV4bW0zIjsKKyskcm5ka2V5MD0iJXhtbTQiOwkkcm5ka2V5MT0iJXhtbTUi OworKworKyRpdj0iJXhtbTYiOwkJJGluMD0iJXhtbTciOwkjIHVzZWQgaW4gQ0JDIGRlY3J5cHQK KyskaW4xPSIleG1tOCI7CQkkaW4yPSIleG1tOSI7CisrDAorKyMgSW5saW5lIHZlcnNpb24gb2Yg aW50ZXJuYWwgYWVzbmlfW2VufGRlXWNyeXB0MS4KKysjCisrIyBXaHkgZm9sZGVkIGxvb3A/IEJl Y2F1c2UgYWVzW2VuY3xkZWNdIGlzIHNsb3cgZW5vdWdoIHRvIGFjY29tbW9kYXRlCisrIyBjeWNs ZXMgd2hpY2ggdGFrZSBjYXJlIG9mIGxvb3AgdmFyaWFibGVzLi4uCisreyBteSAkc247Cisrc3Vi IGFlc25pX2dlbmVyYXRlMSB7CisrbXkgKCRwLCRrZXksJHJvdW5kcyk9QF87CisrKyskc247Cisr JGNvZGUuPTw8X19fOworKwkkbW92a2V5CSgka2V5KSwkcm5ka2V5MAorKwkkbW92a2V5CTE2KCRr ZXkpLCRybmRrZXkxCisrCWxlYQkzMigka2V5KSwka2V5CisrCXB4b3IJJHJuZGtleTAsJGlub3V0 MAorKy5Mb29wXyR7cH0xXyRzbjoKKysJYWVzJHtwfQkkcm5ka2V5MSwkaW5vdXQwCisrCWRlYwkk cm91bmRzCisrCSRtb3ZrZXkJKCRrZXkpLCRybmRrZXkxCisrCWxlYQkxNigka2V5KSwka2V5Cisr CWpuegkuTG9vcF8ke3B9MV8kc24JIyBsb29wIGJvZHkgaXMgMTYgYnl0ZXMKKysJYWVzJHtwfWxh c3QJJHJuZGtleTEsJGlub3V0MAorK19fXworK319CisrIyB2b2lkICRQUkVGSVhfW2VufGRlXWNy eXB0IChjb25zdCB2b2lkICppbnAsdm9pZCAqb3V0LGNvbnN0IEFFU19LRVkgKmtleSk7CisrIwor K3sgbXkgKCRpbnAsJG91dCwka2V5KSA9IEBfNGFyZ3M7CisrCisrJGNvZGUuPTw8X19fOworKy5n bG9ibAkke1BSRUZJWH1fZW5jcnlwdAorKy50eXBlCSR7UFJFRklYfV9lbmNyeXB0LFxAYWJpLW9t bmlwb3RlbnQKKysuYWxpZ24JMTYKKyske1BSRUZJWH1fZW5jcnlwdDoKKysJbW92dXBzCSgkaW5w KSwkaW5vdXQwCQkjIGxvYWQgaW5wdXQKKysJbW92CTI0MCgka2V5KSwkcm91bmRzCSMgcHVsbCAk cm91bmRzCisrX19fCisrCSZhZXNuaV9nZW5lcmF0ZTEoImVuYyIsJGtleSwkcm91bmRzKTsKKysk Y29kZS49PDxfX187CisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQkJIyBvdXRwdXQKKysJcmV0Cisr LnNpemUJJHtQUkVGSVh9X2VuY3J5cHQsLi0ke1BSRUZJWH1fZW5jcnlwdAorKworKy5nbG9ibAkk e1BSRUZJWH1fZGVjcnlwdAorKy50eXBlCSR7UFJFRklYfV9kZWNyeXB0LFxAYWJpLW9tbmlwb3Rl bnQKKysuYWxpZ24JMTYKKyske1BSRUZJWH1fZGVjcnlwdDoKKysJbW92dXBzCSgkaW5wKSwkaW5v dXQwCQkjIGxvYWQgaW5wdXQKKysJbW92CTI0MCgka2V5KSwkcm91bmRzCSMgcHVsbCAkcm91bmRz CisrX19fCisrCSZhZXNuaV9nZW5lcmF0ZTEoImRlYyIsJGtleSwkcm91bmRzKTsKKyskY29kZS49 PDxfX187CisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQkJIyBvdXRwdXQKKysJcmV0CisrLnNpemUJ JHtQUkVGSVh9X2RlY3J5cHQsIC4tJHtQUkVGSVh9X2RlY3J5cHQKKytfX18KKyt9CisrDAorKyMg X2Flc25pX1tlbnxkZV1jcnlwdFszNF0gYXJlIHByaXZhdGUgaW50ZXJmYWNlcywgTiBkZW5vdGVz IGludGVybGVhdmUKKysjIGZhY3Rvci4gV2h5IDN4IHN1YnJvdXRpbmUgaXMgdXNlZCBpbiBsb29w cz8gRXZlbiB0aG91Z2ggYWVzW2VuY3xkZWNdCisrIyBsYXRlbmN5IGlzIDYsIGl0IHR1cm5lZCBv dXQgdGhhdCBpdCBjYW4gYmUgc2NoZWR1bGVkIG9ubHkgZXZlcnkKKysjICpzZWNvbmQqIGN5Y2xl LiBUaHVzIDN4IGludGVybGVhdmUgaXMgdGhlIG9uZSBwcm92aWRpbmcgb3B0aW1hbAorKyMgdXRp bGl6YXRpb24sIGkuZS4gd2hlbiBzdWJyb3V0aW5lJ3MgdGhyb3VnaHB1dCBpcyB2aXJ0dWFsbHkg c2FtZSBhcworKyMgb2Ygbm9uLWludGVybGVhdmVkIHN1YnJvdXRpbmUgW2ZvciBudW1iZXIgb2Yg aW5wdXQgYmxvY2tzIHVwIHRvIDNdLgorKyMgVGhpcyBpcyB3aHkgaXQgbWFrZXMgbm8gc2Vuc2Ug dG8gaW1wbGVtZW50IDJ4IHN1YnJvdXRpbmUuIEFzIHNvb24KKysjIGFzL2lmIEludGVsIGltcHJv dmVzIHRocm91Z2hwdXQgYnkgbWFraW5nIGl0IHBvc3NpYmxlIHRvIHNjaGVkdWxlCisrIyB0aGUg aW5zdHJ1Y3Rpb25zIGluIHF1ZXN0aW9uICpldmVyeSogY3ljbGVzIEkgd291bGQgaGF2ZSB0bwor KyMgaW1wbGVtZW50IDZ4IGludGVybGVhdmUgYW5kIHVzZSBpdCBpbiBsb29wLi4uCisrc3ViIGFl c25pX2dlbmVyYXRlMyB7CisrbXkgJGRpcj1zaGlmdDsKKysjIEFzIGFscmVhZHkgbWVudGlvbmVk IGl0IHRha2VzIGluICRrZXkgYW5kICRyb3VuZHMsIHdoaWNoIGFyZSAqbm90KgorKyMgcHJlc2Vy dmVkLiAkaW5vdXRbMC0yXSBpcyBjaXBoZXIvY2xlYXIgdGV4dC4uLgorKyRjb2RlLj08PF9fXzsK KysudHlwZQlfYWVzbmlfJHtkaXJ9cnlwdDMsXEBhYmktb21uaXBvdGVudAorKy5hbGlnbgkxNgor K19hZXNuaV8ke2Rpcn1yeXB0MzoKKysJJG1vdmtleQkoJGtleSksJHJuZGtleTAKKysJc2hyCVwk MSwkcm91bmRzCisrCSRtb3ZrZXkJMTYoJGtleSksJHJuZGtleTEKKysJbGVhCTMyKCRrZXkpLCRr ZXkKKysJcHhvcgkkcm5ka2V5MCwkaW5vdXQwCisrCXB4b3IJJHJuZGtleTAsJGlub3V0MQorKwlw eG9yCSRybmRrZXkwLCRpbm91dDIKKysKKysuTCR7ZGlyfV9sb29wMzoKKysJYWVzJHtkaXJ9CSRy bmRrZXkxLCRpbm91dDAKKysJJG1vdmtleQkJKCRrZXkpLCRybmRrZXkwCisrCWFlcyR7ZGlyfQkk cm5ka2V5MSwkaW5vdXQxCisrCWRlYwkJJHJvdW5kcworKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlu b3V0MgorKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MAorKwkkbW92a2V5CQkxNigka2V5KSwk cm5ka2V5MQorKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MQorKwlsZWEJCTMyKCRrZXkpLCRr ZXkKKysJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDIKKysJam56CQkuTCR7ZGlyfV9sb29wMwor KworKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MAorKwkkbW92a2V5CQkoJGtleSksJHJuZGtl eTAKKysJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDEKKysJYWVzJHtkaXJ9CSRybmRrZXkxLCRp bm91dDIKKysJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQwCisrCWFlcyR7ZGlyfWxhc3QJ JHJuZGtleTAsJGlub3V0MQorKwlhZXMke2Rpcn1sYXN0CSRybmRrZXkwLCRpbm91dDIKKysJcmV0 CisrLnNpemUJX2Flc25pXyR7ZGlyfXJ5cHQzLC4tX2Flc25pXyR7ZGlyfXJ5cHQzCisrX19fCisr fQorKyMgNHggaW50ZXJsZWF2ZSBpcyBpbXBsZW1lbnRlZCB0byBpbXByb3ZlIHNtYWxsIGJsb2Nr IHBlcmZvcm1hbmNlLAorKyMgbW9zdCBub3RhYmx5IFthbmQgbmF0dXJhbGx5XSA0IGJsb2NrIGJ5 IH4zMCUuIE9uZSBjYW4gYXJndWUgdGhhdCBvbmUKKysjIHNob3VsZCBoYXZlIGltcGxlbWVudGVk IDV4IGFzIHdlbGwsIGJ1dCBpbXByb3ZlbWVudCB3b3VsZCBiZSA8MjAlLAorKyMgc28gaXQncyBu b3Qgd29ydGggaXQuLi4KKytzdWIgYWVzbmlfZ2VuZXJhdGU0IHsKKytteSAkZGlyPXNoaWZ0Owor KyMgQXMgYWxyZWFkeSBtZW50aW9uZWQgaXQgdGFrZXMgaW4gJGtleSBhbmQgJHJvdW5kcywgd2hp Y2ggYXJlICpub3QqCisrIyBwcmVzZXJ2ZWQuICRpbm91dFswLTNdIGlzIGNpcGhlci9jbGVhciB0 ZXh0Li4uCisrJGNvZGUuPTw8X19fOworKy50eXBlCV9hZXNuaV8ke2Rpcn1yeXB0NCxcQGFiaS1v bW5pcG90ZW50CisrLmFsaWduCTE2CisrX2Flc25pXyR7ZGlyfXJ5cHQ0OgorKwkkbW92a2V5CSgk a2V5KSwkcm5ka2V5MAorKwlzaHIJXCQxLCRyb3VuZHMKKysJJG1vdmtleQkxNigka2V5KSwkcm5k a2V5MQorKwlsZWEJMzIoJGtleSksJGtleQorKwlweG9yCSRybmRrZXkwLCRpbm91dDAKKysJcHhv cgkkcm5ka2V5MCwkaW5vdXQxCisrCXB4b3IJJHJuZGtleTAsJGlub3V0MgorKwlweG9yCSRybmRr ZXkwLCRpbm91dDMKKysKKysuTCR7ZGlyfV9sb29wNDoKKysJYWVzJHtkaXJ9CSRybmRrZXkxLCRp bm91dDAKKysJJG1vdmtleQkJKCRrZXkpLCRybmRrZXkwCisrCWFlcyR7ZGlyfQkkcm5ka2V5MSwk aW5vdXQxCisrCWRlYwkJJHJvdW5kcworKwlhZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MgorKwlh ZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MworKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0MAor KwkkbW92a2V5CQkxNigka2V5KSwkcm5ka2V5MQorKwlhZXMke2Rpcn0JJHJuZGtleTAsJGlub3V0 MQorKwlsZWEJCTMyKCRrZXkpLCRrZXkKKysJYWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDIKKysJ YWVzJHtkaXJ9CSRybmRrZXkwLCRpbm91dDMKKysJam56CQkuTCR7ZGlyfV9sb29wNAorKworKwlh ZXMke2Rpcn0JJHJuZGtleTEsJGlub3V0MAorKwkkbW92a2V5CQkoJGtleSksJHJuZGtleTAKKysJ YWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDEKKysJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDIK KysJYWVzJHtkaXJ9CSRybmRrZXkxLCRpbm91dDMKKysJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwk aW5vdXQwCisrCWFlcyR7ZGlyfWxhc3QJJHJuZGtleTAsJGlub3V0MQorKwlhZXMke2Rpcn1sYXN0 CSRybmRrZXkwLCRpbm91dDIKKysJYWVzJHtkaXJ9bGFzdAkkcm5ka2V5MCwkaW5vdXQzCisrCXJl dAorKy5zaXplCV9hZXNuaV8ke2Rpcn1yeXB0NCwuLV9hZXNuaV8ke2Rpcn1yeXB0NAorK19fXwor K30KKysmYWVzbmlfZ2VuZXJhdGUzKCJlbmMiKSBpZiAoJFBSRUZJWCBlcSAiYWVzbmkiKTsKKysm YWVzbmlfZ2VuZXJhdGUzKCJkZWMiKTsKKysmYWVzbmlfZ2VuZXJhdGU0KCJlbmMiKSBpZiAoJFBS RUZJWCBlcSAiYWVzbmkiKTsKKysmYWVzbmlfZ2VuZXJhdGU0KCJkZWMiKTsKKysMCisraWYgKCRQ UkVGSVggZXEgImFlc25pIikgeworKyMgdm9pZCBhZXNuaV9lY2JfZW5jcnlwdCAoY29uc3Qgdm9p ZCAqaW4sIHZvaWQgKm91dCwKKysjCQkJICBzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICpr ZXksCisrIwkJCSAgaW50IGVuYyk7CisrJGNvZGUuPTw8X19fOworKy5nbG9ibAlhZXNuaV9lY2Jf ZW5jcnlwdAorKy50eXBlCWFlc25pX2VjYl9lbmNyeXB0LFxAZnVuY3Rpb24sNQorKy5hbGlnbgkx NgorK2Flc25pX2VjYl9lbmNyeXB0OgorKwljbXAJXCQxNiwkbGVuCQkjIGNoZWNrIGxlbmd0aAor KwlqYgkuTGVjYl9yZXQKKysKKysJbW92CTI0MCgka2V5KSwkcm91bmRzCSMgcHVsbCAkcm91bmRz CisrCWFuZAlcJC0xNiwkbGVuCisrCW1vdgkka2V5LCRrZXlfCQkjIGJhY2t1cCAka2V5CisrCXRl c3QJJXI4ZCwlcjhkCQkjIDV0aCBhcmd1bWVudAorKwltb3YJJHJvdW5kcywkcm5kc18JCSMgYmFj a3VwICRyb3VuZHMKKysJanoJLkxlY2JfZGVjcnlwdAorKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0gRUNCIEVOQ1JZUFQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIworKwlzdWIJ XCQweDQwLCRsZW4KKysJamJlCS5MZWNiX2VuY190YWlsCisrCWptcAkuTGVjYl9lbmNfbG9vcDMK KysuYWxpZ24gMTYKKysuTGVjYl9lbmNfbG9vcDM6CisrCW1vdnVwcwkoJGlucCksJGlub3V0MAor Kwltb3Z1cHMJMHgxMCgkaW5wKSwkaW5vdXQxCisrCW1vdnVwcwkweDIwKCRpbnApLCRpbm91dDIK KysJY2FsbAlfYWVzbmlfZW5jcnlwdDMKKysJc3ViCVwkMHgzMCwkbGVuCisrCWxlYQkweDMwKCRp bnApLCRpbnAKKysJbGVhCTB4MzAoJG91dCksJG91dAorKwltb3Z1cHMJJGlub3V0MCwtMHgzMCgk b3V0KQorKwltb3YJJHJuZHNfLCRyb3VuZHMJCSMgcmVzdG9yZSAkcm91bmRzCisrCW1vdnVwcwkk aW5vdXQxLC0weDIwKCRvdXQpCisrCW1vdgkka2V5Xywka2V5CQkjIHJlc3RvcmUgJGtleQorKwlt b3Z1cHMJJGlub3V0MiwtMHgxMCgkb3V0KQorKwlqYQkuTGVjYl9lbmNfbG9vcDMKKysKKysuTGVj Yl9lbmNfdGFpbDoKKysJYWRkCVwkMHg0MCwkbGVuCisrCWp6CS5MZWNiX3JldAorKworKwljbXAJ XCQweDEwLCRsZW4KKysJbW92dXBzCSgkaW5wKSwkaW5vdXQwCisrCWplCS5MZWNiX2VuY19vbmUK KysJY21wCVwkMHgyMCwkbGVuCisrCW1vdnVwcwkweDEwKCRpbnApLCRpbm91dDEKKysJamUJLkxl Y2JfZW5jX3R3bworKwljbXAJXCQweDMwLCRsZW4KKysJbW92dXBzCTB4MjAoJGlucCksJGlub3V0 MgorKwlqZQkuTGVjYl9lbmNfdGhyZWUKKysJbW92dXBzCTB4MzAoJGlucCksJGlub3V0MworKwlj YWxsCV9hZXNuaV9lbmNyeXB0NAorKwltb3Z1cHMJJGlub3V0MCwoJG91dCkKKysJbW92dXBzCSRp bm91dDEsMHgxMCgkb3V0KQorKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCisrCW1vdnVwcwkk aW5vdXQzLDB4MzAoJG91dCkKKysJam1wCS5MZWNiX3JldAorKy5hbGlnbgkxNgorKy5MZWNiX2Vu Y19vbmU6CisrX19fCisrCSZhZXNuaV9nZW5lcmF0ZTEoImVuYyIsJGtleSwkcm91bmRzKTsKKysk Y29kZS49PDxfX187CisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorKwlqbXAJLkxlY2JfcmV0Cisr LmFsaWduCTE2CisrLkxlY2JfZW5jX3R3bzoKKysJY2FsbAlfYWVzbmlfZW5jcnlwdDMKKysJbW92 dXBzCSRpbm91dDAsKCRvdXQpCisrCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91dCkKKysJam1wCS5M ZWNiX3JldAorKy5hbGlnbgkxNgorKy5MZWNiX2VuY190aHJlZToKKysJY2FsbAlfYWVzbmlfZW5j cnlwdDMKKysJbW92dXBzCSRpbm91dDAsKCRvdXQpCisrCW1vdnVwcwkkaW5vdXQxLDB4MTAoJG91 dCkKKysJbW92dXBzCSRpbm91dDIsMHgyMCgkb3V0KQorKwlqbXAJLkxlY2JfcmV0CisrDCMtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRUNCIERFQ1JZUFQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tIworKy5hbGlnbgkxNgorKy5MZWNiX2RlY3J5cHQ6CisrCXN1YglcJDB4NDAsJGxl bgorKwlqYmUJLkxlY2JfZGVjX3RhaWwKKysJam1wCS5MZWNiX2RlY19sb29wMworKy5hbGlnbiAx NgorKy5MZWNiX2RlY19sb29wMzoKKysJbW92dXBzCSgkaW5wKSwkaW5vdXQwCisrCW1vdnVwcwkw eDEwKCRpbnApLCRpbm91dDEKKysJbW92dXBzCTB4MjAoJGlucCksJGlub3V0MgorKwljYWxsCV9h ZXNuaV9kZWNyeXB0MworKwlzdWIJXCQweDMwLCRsZW4KKysJbGVhCTB4MzAoJGlucCksJGlucAor KwlsZWEJMHgzMCgkb3V0KSwkb3V0CisrCW1vdnVwcwkkaW5vdXQwLC0weDMwKCRvdXQpCisrCW1v dgkkcm5kc18sJHJvdW5kcwkJIyByZXN0b3JlICRyb3VuZHMKKysJbW92dXBzCSRpbm91dDEsLTB4 MjAoJG91dCkKKysJbW92CSRrZXlfLCRrZXkJCSMgcmVzdG9yZSAka2V5CisrCW1vdnVwcwkkaW5v dXQyLC0weDEwKCRvdXQpCisrCWphCS5MZWNiX2RlY19sb29wMworKworKy5MZWNiX2RlY190YWls OgorKwlhZGQJXCQweDQwLCRsZW4KKysJanoJLkxlY2JfcmV0CisrCisrCWNtcAlcJDB4MTAsJGxl bgorKwltb3Z1cHMJKCRpbnApLCRpbm91dDAKKysJamUJLkxlY2JfZGVjX29uZQorKwljbXAJXCQw eDIwLCRsZW4KKysJbW92dXBzCTB4MTAoJGlucCksJGlub3V0MQorKwlqZQkuTGVjYl9kZWNfdHdv CisrCWNtcAlcJDB4MzAsJGxlbgorKwltb3Z1cHMJMHgyMCgkaW5wKSwkaW5vdXQyCisrCWplCS5M ZWNiX2RlY190aHJlZQorKwltb3Z1cHMJMHgzMCgkaW5wKSwkaW5vdXQzCisrCWNhbGwJX2Flc25p X2RlY3J5cHQ0CisrCW1vdnVwcwkkaW5vdXQwLCgkb3V0KQorKwltb3Z1cHMJJGlub3V0MSwweDEw KCRvdXQpCisrCW1vdnVwcwkkaW5vdXQyLDB4MjAoJG91dCkKKysJbW92dXBzCSRpbm91dDMsMHgz MCgkb3V0KQorKwlqbXAJLkxlY2JfcmV0CisrLmFsaWduCTE2CisrLkxlY2JfZGVjX29uZToKKytf X18KKysJJmFlc25pX2dlbmVyYXRlMSgiZGVjIiwka2V5LCRyb3VuZHMpOworKyRjb2RlLj08PF9f XzsKKysJbW92dXBzCSRpbm91dDAsKCRvdXQpCisrCWptcAkuTGVjYl9yZXQKKysuYWxpZ24JMTYK KysuTGVjYl9kZWNfdHdvOgorKwljYWxsCV9hZXNuaV9kZWNyeXB0MworKwltb3Z1cHMJJGlub3V0 MCwoJG91dCkKKysJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorKwlqbXAJLkxlY2JfcmV0Cisr LmFsaWduCTE2CisrLkxlY2JfZGVjX3RocmVlOgorKwljYWxsCV9hZXNuaV9kZWNyeXB0MworKwlt b3Z1cHMJJGlub3V0MCwoJG91dCkKKysJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorKwltb3Z1 cHMJJGlub3V0MiwweDIwKCRvdXQpCisrCisrLkxlY2JfcmV0OgorKwlyZXQKKysuc2l6ZQlhZXNu aV9lY2JfZW5jcnlwdCwuLWFlc25pX2VjYl9lbmNyeXB0CisrX19fCisrfQorKwwKKysjIHZvaWQg JFBSRUZJWF9jYmNfZW5jcnlwdCAoY29uc3Qgdm9pZCAqaW5wLCB2b2lkICpvdXQsCisrIwkJCSAg ICBzaXplX3QgbGVuZ3RoLCBjb25zdCBBRVNfS0VZICprZXksCisrIwkJCSAgICB1bnNpZ25lZCBj aGFyICppdnAsY29uc3QgaW50IGVuYyk7CisrJHJlc2VydmVkID0gJHdpbjY0PzB4NDA6LTB4MTg7 CSMgdXNlZCBpbiBkZWNyeXB0CisrJGNvZGUuPTw8X19fOworKy5nbG9ibAkke1BSRUZJWH1fY2Jj X2VuY3J5cHQKKysudHlwZQkke1BSRUZJWH1fY2JjX2VuY3J5cHQsXEBmdW5jdGlvbiw2CisrLmFs aWduCTE2CisrJHtQUkVGSVh9X2NiY19lbmNyeXB0OgorKwl0ZXN0CSRsZW4sJGxlbgkJIyBjaGVj ayBsZW5ndGgKKysJanoJLkxjYmNfcmV0CisrCisrCW1vdgkyNDAoJGtleSksJHJuZHNfCSMgcHVs bCAkcm91bmRzCisrCW1vdgkka2V5LCRrZXlfCQkjIGJhY2t1cCAka2V5CisrCXRlc3QJJXI5ZCwl cjlkCQkjIDZ0aCBhcmd1bWVudAorKwlqegkuTGNiY19kZWNyeXB0CisrIy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSBDQkMgRU5DUllQVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0j CisrCW1vdnVwcwkoJGl2cCksJGlub3V0MAkJIyBsb2FkIGl2IGFzIGluaXRpYWwgc3RhdGUKKysJ Y21wCVwkMTYsJGxlbgorKwltb3YJJHJuZHNfLCRyb3VuZHMKKysJamIJLkxjYmNfZW5jX3RhaWwK KysJc3ViCVwkMTYsJGxlbgorKwlqbXAJLkxjYmNfZW5jX2xvb3AKKysuYWxpZ24gMTYKKysuTGNi Y19lbmNfbG9vcDoKKysJbW92dXBzCSgkaW5wKSwkaW5vdXQxCQkjIGxvYWQgaW5wdXQKKysJbGVh CTE2KCRpbnApLCRpbnAKKysJcHhvcgkkaW5vdXQxLCRpbm91dDAKKytfX18KKysJJmFlc25pX2dl bmVyYXRlMSgiZW5jIiwka2V5LCRyb3VuZHMpOworKyRjb2RlLj08PF9fXzsKKysJc3ViCVwkMTYs JGxlbgorKwlsZWEJMTYoJG91dCksJG91dAorKwltb3YJJHJuZHNfLCRyb3VuZHMJCSMgcmVzdG9y ZSAkcm91bmRzCisrCW1vdgkka2V5Xywka2V5CQkjIHJlc3RvcmUgJGtleQorKwltb3Z1cHMJJGlu b3V0MCwtMTYoJG91dCkJIyBzdG9yZSBvdXRwdXQKKysJam5jCS5MY2JjX2VuY19sb29wCisrCWFk ZAlcJDE2LCRsZW4KKysJam56CS5MY2JjX2VuY190YWlsCisrCW1vdnVwcwkkaW5vdXQwLCgkaXZw KQorKwlqbXAJLkxjYmNfcmV0CisrCisrLkxjYmNfZW5jX3RhaWw6CisrCW1vdgkkbGVuLCVyY3gJ IyB6YXBzICRrZXkKKysJeGNoZwkkaW5wLCRvdXQJIyAkaW5wIGlzICVyc2kgYW5kICRvdXQgaXMg JXJkaSBub3cKKysJLmxvbmcJMHg5MDY2QTRGMwkjIHJlcCBtb3ZzYgorKwltb3YJXCQxNiwlZWN4 CSMgemVybyB0YWlsCisrCXN1YgkkbGVuLCVyY3gKKysJeG9yCSVlYXgsJWVheAorKwkubG9uZwkw eDkwNjZBQUYzCSMgcmVwIHN0b3NiCisrCWxlYQktMTYoJXJkaSksJXJkaQkjIHJld2luZCAkb3V0 IGJ5IDEgYmxvY2sKKysJbW92CSRybmRzXywkcm91bmRzCSMgcmVzdG9yZSAkcm91bmRzCisrCW1v dgklcmRpLCVyc2kJIyAkaW5wIGFuZCAkb3V0IGFyZSB0aGUgc2FtZQorKwltb3YJJGtleV8sJGtl eQkjIHJlc3RvcmUgJGtleQorKwl4b3IJJGxlbiwkbGVuCSMgbGVuPTE2CisrCWptcAkuTGNiY19l bmNfbG9vcAkjIG9uZSBtb3JlIHNwaW4KKysMIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBD QkMgREVDUllQVCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0jCisrLmFsaWduCTE2Cisr LkxjYmNfZGVjcnlwdDoKKytfX18KKyskY29kZS49PDxfX18gaWYgKCR3aW42NCk7CisrCWxlYQkt MHg1OCglcnNwKSwlcnNwCisrCW1vdmFwcwkleG1tNiwoJXJzcCkKKysJbW92YXBzCSV4bW03LDB4 MTAoJXJzcCkKKysJbW92YXBzCSV4bW04LDB4MjAoJXJzcCkKKysJbW92YXBzCSV4bW05LDB4MzAo JXJzcCkKKysuTGNiY19kZWNyeXB0X2JvZHk6CisrX19fCisrJGNvZGUuPTw8X19fOworKwltb3Z1 cHMJKCRpdnApLCRpdgorKwlzdWIJXCQweDQwLCRsZW4KKysJbW92CSRybmRzXywkcm91bmRzCisr CWpiZQkuTGNiY19kZWNfdGFpbAorKwlqbXAJLkxjYmNfZGVjX2xvb3AzCisrLmFsaWduIDE2Cisr LkxjYmNfZGVjX2xvb3AzOgorKwltb3Z1cHMJKCRpbnApLCRpbm91dDAKKysJbW92dXBzCTB4MTAo JGlucCksJGlub3V0MQorKwltb3Z1cHMJMHgyMCgkaW5wKSwkaW5vdXQyCisrCW1vdmFwcwkkaW5v dXQwLCRpbjAKKysJbW92YXBzCSRpbm91dDEsJGluMQorKwltb3ZhcHMJJGlub3V0MiwkaW4yCisr CWNhbGwJX2Flc25pX2RlY3J5cHQzCisrCXN1YglcJDB4MzAsJGxlbgorKwlsZWEJMHgzMCgkaW5w KSwkaW5wCisrCWxlYQkweDMwKCRvdXQpLCRvdXQKKysJcHhvcgkkaXYsJGlub3V0MAorKwlweG9y CSRpbjAsJGlub3V0MQorKwltb3ZhcHMJJGluMiwkaXYKKysJcHhvcgkkaW4xLCRpbm91dDIKKysJ bW92dXBzCSRpbm91dDAsLTB4MzAoJG91dCkKKysJbW92CSRybmRzXywkcm91bmRzCSMgcmVzdG9y ZSAkcm91bmRzCisrCW1vdnVwcwkkaW5vdXQxLC0weDIwKCRvdXQpCisrCW1vdgkka2V5Xywka2V5 CSMgcmVzdG9yZSAka2V5CisrCW1vdnVwcwkkaW5vdXQyLC0weDEwKCRvdXQpCisrCWphCS5MY2Jj X2RlY19sb29wMworKworKy5MY2JjX2RlY190YWlsOgorKwlhZGQJXCQweDQwLCRsZW4KKysJbW92 dXBzCSRpdiwoJGl2cCkKKysJanoJLkxjYmNfZGVjX3JldAorKworKwltb3Z1cHMJKCRpbnApLCRp bm91dDAKKysJY21wCVwkMHgxMCwkbGVuCisrCW1vdmFwcwkkaW5vdXQwLCRpbjAKKysJamJlCS5M Y2JjX2RlY19vbmUKKysJbW92dXBzCTB4MTAoJGlucCksJGlub3V0MQorKwljbXAJXCQweDIwLCRs ZW4KKysJbW92YXBzCSRpbm91dDEsJGluMQorKwlqYmUJLkxjYmNfZGVjX3R3bworKwltb3Z1cHMJ MHgyMCgkaW5wKSwkaW5vdXQyCisrCWNtcAlcJDB4MzAsJGxlbgorKwltb3ZhcHMJJGlub3V0Miwk aW4yCisrCWpiZQkuTGNiY19kZWNfdGhyZWUKKysJbW92dXBzCTB4MzAoJGlucCksJGlub3V0Mwor KwljYWxsCV9hZXNuaV9kZWNyeXB0NAorKwlweG9yCSRpdiwkaW5vdXQwCisrCW1vdnVwcwkweDMw KCRpbnApLCRpdgorKwlweG9yCSRpbjAsJGlub3V0MQorKwltb3Z1cHMJJGlub3V0MCwoJG91dCkK KysJcHhvcgkkaW4xLCRpbm91dDIKKysJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorKwlweG9y CSRpbjIsJGlub3V0MworKwltb3Z1cHMJJGlub3V0MiwweDIwKCRvdXQpCisrCW1vdmFwcwkkaW5v dXQzLCRpbm91dDAKKysJbGVhCTB4MzAoJG91dCksJG91dAorKwlqbXAJLkxjYmNfZGVjX3RhaWxf Y29sbGVjdGVkCisrLmFsaWduCTE2CisrLkxjYmNfZGVjX29uZToKKytfX18KKysJJmFlc25pX2dl bmVyYXRlMSgiZGVjIiwka2V5LCRyb3VuZHMpOworKyRjb2RlLj08PF9fXzsKKysJcHhvcgkkaXYs JGlub3V0MAorKwltb3ZhcHMJJGluMCwkaXYKKysJam1wCS5MY2JjX2RlY190YWlsX2NvbGxlY3Rl ZAorKy5hbGlnbgkxNgorKy5MY2JjX2RlY190d286CisrCWNhbGwJX2Flc25pX2RlY3J5cHQzCisr CXB4b3IJJGl2LCRpbm91dDAKKysJcHhvcgkkaW4wLCRpbm91dDEKKysJbW92dXBzCSRpbm91dDAs KCRvdXQpCisrCW1vdmFwcwkkaW4xLCRpdgorKwltb3ZhcHMJJGlub3V0MSwkaW5vdXQwCisrCWxl YQkweDEwKCRvdXQpLCRvdXQKKysJam1wCS5MY2JjX2RlY190YWlsX2NvbGxlY3RlZAorKy5hbGln bgkxNgorKy5MY2JjX2RlY190aHJlZToKKysJY2FsbAlfYWVzbmlfZGVjcnlwdDMKKysJcHhvcgkk aXYsJGlub3V0MAorKwlweG9yCSRpbjAsJGlub3V0MQorKwltb3Z1cHMJJGlub3V0MCwoJG91dCkK KysJcHhvcgkkaW4xLCRpbm91dDIKKysJbW92dXBzCSRpbm91dDEsMHgxMCgkb3V0KQorKwltb3Zh cHMJJGluMiwkaXYKKysJbW92YXBzCSRpbm91dDIsJGlub3V0MAorKwlsZWEJMHgyMCgkb3V0KSwk b3V0CisrCWptcAkuTGNiY19kZWNfdGFpbF9jb2xsZWN0ZWQKKysuYWxpZ24JMTYKKysuTGNiY19k ZWNfdGFpbF9jb2xsZWN0ZWQ6CisrCWFuZAlcJDE1LCRsZW4KKysJbW92dXBzCSRpdiwoJGl2cCkK KysJam56CS5MY2JjX2RlY190YWlsX3BhcnRpYWwKKysJbW92dXBzCSRpbm91dDAsKCRvdXQpCisr CWptcAkuTGNiY19kZWNfcmV0CisrLkxjYmNfZGVjX3RhaWxfcGFydGlhbDoKKysJbW92YXBzCSRp bm91dDAsJHJlc2VydmVkKCVyc3ApCisrCW1vdgkkb3V0LCVyZGkKKysJbW92CSRsZW4sJXJjeAor KwlsZWEJJHJlc2VydmVkKCVyc3ApLCVyc2kKKysJLmxvbmcJMHg5MDY2QTRGMwkjIHJlcCBtb3Zz YgorKworKy5MY2JjX2RlY19yZXQ6CisrX19fCisrJGNvZGUuPTw8X19fIGlmICgkd2luNjQpOwor Kwltb3ZhcHMJKCVyc3ApLCV4bW02CisrCW1vdmFwcwkweDEwKCVyc3ApLCV4bW03CisrCW1vdmFw cwkweDIwKCVyc3ApLCV4bW04CisrCW1vdmFwcwkweDMwKCVyc3ApLCV4bW05CisrCWxlYQkweDU4 KCVyc3ApLCVyc3AKKytfX18KKyskY29kZS49PDxfX187CisrLkxjYmNfcmV0OgorKwlyZXQKKysu c2l6ZQkke1BSRUZJWH1fY2JjX2VuY3J5cHQsLi0ke1BSRUZJWH1fY2JjX2VuY3J5cHQKKytfX18K KysMCisrIyBpbnQgJFBSRUZJWF9zZXRfW2VufGRlXWNyeXB0X2tleSAoY29uc3QgdW5zaWduZWQg Y2hhciAqdXNlcktleSwKKysjCQkJCWludCBiaXRzLCBBRVNfS0VZICprZXkpCisreyBteSAoJGlu cCwkYml0cywka2V5KSA9IEBfNGFyZ3M7CisrICAkYml0cyA9fiBzLyVyLyVlLzsKKysKKyskY29k ZS49PDxfX187CisrLmdsb2JsCSR7UFJFRklYfV9zZXRfZGVjcnlwdF9rZXkKKysudHlwZQkke1BS RUZJWH1fc2V0X2RlY3J5cHRfa2V5LFxAYWJpLW9tbmlwb3RlbnQKKysuYWxpZ24JMTYKKyske1BS RUZJWH1fc2V0X2RlY3J5cHRfa2V5OgorKwkuYnl0ZQkweDQ4LDB4ODMsMHhFQywweDA4CSMgc3Vi IHJzcCw4CisrCWNhbGwJX2Flc25pX3NldF9lbmNyeXB0X2tleQorKwlzaGwJXCQ0LCRiaXRzCQkj IHJvdW5kcy0xIGFmdGVyIF9hZXNuaV9zZXRfZW5jcnlwdF9rZXkKKysJdGVzdAklZWF4LCVlYXgK KysJam56CS5MZGVjX2tleV9yZXQKKysJbGVhCTE2KCRrZXksJGJpdHMpLCRpbnAJIyBwb2ludHMg YXQgdGhlIGVuZCBvZiBrZXkgc2NoZWR1bGUKKysKKysJJG1vdmtleQkoJGtleSksJXhtbTAJCSMg anVzdCBzd2FwCisrCSRtb3ZrZXkJKCRpbnApLCV4bW0xCisrCSRtb3ZrZXkJJXhtbTAsKCRpbnAp CisrCSRtb3ZrZXkJJXhtbTEsKCRrZXkpCisrCWxlYQkxNigka2V5KSwka2V5CisrCWxlYQktMTYo JGlucCksJGlucAorKworKy5MZGVjX2tleV9pbnZlcnNlOgorKwkkbW92a2V5CSgka2V5KSwleG1t MAkJIyBzd2FwIGFuZCBpbnZlcnNlCisrCSRtb3ZrZXkJKCRpbnApLCV4bW0xCisrCWFlc2ltYwkl eG1tMCwleG1tMAorKwlhZXNpbWMJJXhtbTEsJXhtbTEKKysJbGVhCTE2KCRrZXkpLCRrZXkKKysJ bGVhCS0xNigkaW5wKSwkaW5wCisrCWNtcAkka2V5LCRpbnAKKysJJG1vdmtleQkleG1tMCwxNigk aW5wKQorKwkkbW92a2V5CSV4bW0xLC0xNigka2V5KQorKwlqYQkuTGRlY19rZXlfaW52ZXJzZQor KworKwkkbW92a2V5CSgka2V5KSwleG1tMAkJIyBpbnZlcnNlIG1pZGRsZQorKwlhZXNpbWMJJXht bTAsJXhtbTAKKysJJG1vdmtleQkleG1tMCwoJGlucCkKKysuTGRlY19rZXlfcmV0OgorKwlhZGQJ XCQ4LCVyc3AKKysJcmV0CisrLkxTRUhfZW5kX3NldF9kZWNyeXB0X2tleToKKysuc2l6ZQkke1BS RUZJWH1fc2V0X2RlY3J5cHRfa2V5LC4tJHtQUkVGSVh9X3NldF9kZWNyeXB0X2tleQorK19fXwor KwwKKysjIFRoaXMgaXMgYmFzZWQgb24gc3VibWlzc2lvbiBieQorKyMKKysjCUh1YW5nIFlpbmcg PHlpbmcuaHVhbmdAaW50ZWwuY29tPgorKyMJVmlub2RoIEdvcGFsIDx2aW5vZGguZ29wYWxAaW50 ZWwuY29tPgorKyMJS2FocmFtYW4gQWtkZW1pcgorKyMKKysjIEFncmVzc2l2ZWx5IG9wdGltaXpl ZCBpbiByZXNwZWN0IHRvIGFlc2tleWdlbmFzc2lzdCdzIGNyaXRpY2FsIHBhdGgKKysjIGFuZCBp cyBjb250YWluZWQgaW4gJXhtbTAtNSB0byBtZWV0IFdpbjY0IEFCSSByZXF1aXJlbWVudC4KKysj CisrJGNvZGUuPTw8X19fOworKy5nbG9ibAkke1BSRUZJWH1fc2V0X2VuY3J5cHRfa2V5CisrLnR5 cGUJJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleSxcQGFiaS1vbW5pcG90ZW50CisrLmFsaWduCTE2 CisrJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleToKKytfYWVzbmlfc2V0X2VuY3J5cHRfa2V5Ogor KwkuYnl0ZQkweDQ4LDB4ODMsMHhFQywweDA4CSMgc3ViIHJzcCw4CisrCXRlc3QJJGlucCwkaW5w CisrCW1vdglcJC0xLCVyYXgKKysJanoJLkxlbmNfa2V5X3JldAorKwl0ZXN0CSRrZXksJGtleQor KwlqegkuTGVuY19rZXlfcmV0CisrCisrCW1vdnVwcwkoJGlucCksJXhtbTAJCSMgcHVsbCBmaXJz dCAxMjggYml0cyBvZiAqdXNlcktleQorKwlweG9yCSV4bW00LCV4bW00CQkjIGxvdyBkd29yZCBv ZiB4bW00IGlzIGFzc3VtZWQgMAorKwlsZWEJMTYoJGtleSksJXJheAorKwljbXAJXCQyNTYsJGJp dHMKKysJamUJLkwxNHJvdW5kcworKwljbXAJXCQxOTIsJGJpdHMKKysJamUJLkwxMnJvdW5kcwor KwljbXAJXCQxMjgsJGJpdHMKKysJam5lCS5MYmFkX2tleWJpdHMKKysKKysuTDEwcm91bmRzOgor Kwltb3YJXCQ5LCRiaXRzCQkJIyAxMCByb3VuZHMgZm9yIDEyOC1iaXQga2V5CisrCSRtb3ZrZXkJ JXhtbTAsKCRrZXkpCQkJIyByb3VuZCAwCisrCWFlc2tleWdlbmFzc2lzdAlcJDB4MSwleG1tMCwl eG1tMQkjIHJvdW5kIDEKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOF9jb2xkCisrCWFlc2tl eWdlbmFzc2lzdAlcJDB4MiwleG1tMCwleG1tMQkjIHJvdW5kIDIKKysJY2FsbAkJLkxrZXlfZXhw YW5zaW9uXzEyOAorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQsJXhtbTAsJXhtbTEJIyByb3VuZCAz CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xMjgKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHg4LCV4 bW0wLCV4bW0xCSMgcm91bmQgNAorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4CisrCWFlc2tl eWdlbmFzc2lzdAlcJDB4MTAsJXhtbTAsJXhtbTEJIyByb3VuZCA1CisrCWNhbGwJCS5Ma2V5X2V4 cGFuc2lvbl8xMjgKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgyMCwleG1tMCwleG1tMQkjIHJvdW5k IDYKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQw LCV4bW0wLCV4bW0xCSMgcm91bmQgNworKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTI4CisrCWFl c2tleWdlbmFzc2lzdAlcJDB4ODAsJXhtbTAsJXhtbTEJIyByb3VuZCA4CisrCWNhbGwJCS5Ma2V5 X2V4cGFuc2lvbl8xMjgKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgxYiwleG1tMCwleG1tMQkjIHJv dW5kIDkKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAorKwlhZXNrZXlnZW5hc3Npc3QJXCQw eDM2LCV4bW0wLCV4bW0xCSMgcm91bmQgMTAKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzEyOAor KwkkbW92a2V5CSV4bW0wLCglcmF4KQorKwltb3YJJGJpdHMsODAoJXJheCkJIyAyNDAoJXJkeCkK KysJeG9yCSVlYXgsJWVheAorKwlqbXAJLkxlbmNfa2V5X3JldAorKworKy5hbGlnbgkxNgorKy5M MTJyb3VuZHM6CisrCW1vdnEJMTYoJGlucCksJXhtbTIJCQkjIHJlbWFpbmluZyAxLzMgb2YgKnVz ZXJLZXkKKysJbW92CVwkMTEsJGJpdHMJCQkjIDEyIHJvdW5kcyBmb3IgMTkyCisrCSRtb3ZrZXkJ JXhtbTAsKCRrZXkpCQkJIyByb3VuZCAwCisrCWFlc2tleWdlbmFzc2lzdAlcJDB4MSwleG1tMiwl eG1tMQkjIHJvdW5kIDEsMgorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTkyYV9jb2xkCisrCWFl c2tleWdlbmFzc2lzdAlcJDB4MiwleG1tMiwleG1tMQkjIHJvdW5kIDIsMworKwljYWxsCQkuTGtl eV9leHBhbnNpb25fMTkyYgorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQsJXhtbTIsJXhtbTEJIyBy b3VuZCA0LDUKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmEKKysJYWVza2V5Z2VuYXNzaXN0 CVwkMHg4LCV4bW0yLCV4bW0xCSMgcm91bmQgNSw2CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8x OTJiCisrCWFlc2tleWdlbmFzc2lzdAlcJDB4MTAsJXhtbTIsJXhtbTEJIyByb3VuZCA3LDgKKysJ Y2FsbAkJLkxrZXlfZXhwYW5zaW9uXzE5MmEKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgyMCwleG1t MiwleG1tMQkjIHJvdW5kIDgsOQorKwljYWxsCQkuTGtleV9leHBhbnNpb25fMTkyYgorKwlhZXNr ZXlnZW5hc3Npc3QJXCQweDQwLCV4bW0yLCV4bW0xCSMgcm91bmQgMTAsMTEKKysJY2FsbAkJLkxr ZXlfZXhwYW5zaW9uXzE5MmEKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHg4MCwleG1tMiwleG1tMQkj IHJvdW5kIDExLDEyCisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8xOTJiCisrCSRtb3ZrZXkJJXht bTAsKCVyYXgpCisrCW1vdgkkYml0cyw0OCglcmF4KQkjIDI0MCglcmR4KQorKwl4b3IJJXJheCwg JXJheAorKwlqbXAJLkxlbmNfa2V5X3JldAorKworKy5hbGlnbgkxNgorKy5MMTRyb3VuZHM6Cisr CW1vdnVwcwkxNigkaW5wKSwleG1tMgkJCSMgcmVtYW5pbmcgaGFsZiBvZiAqdXNlcktleQorKwlt b3YJXCQxMywkYml0cwkJCSMgMTQgcm91bmRzIGZvciAyNTYKKysJbGVhCTE2KCVyYXgpLCVyYXgK KysJJG1vdmtleQkleG1tMCwoJGtleSkJCQkjIHJvdW5kIDAKKysJJG1vdmtleQkleG1tMiwxNigk a2V5KQkJCSMgcm91bmQgMQorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEsJXhtbTIsJXhtbTEJIyBy b3VuZCAyCisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhX2NvbGQKKysJYWVza2V5Z2VuYXNz aXN0CVwkMHgxLCV4bW0wLCV4bW0xCSMgcm91bmQgMworKwljYWxsCQkuTGtleV9leHBhbnNpb25f MjU2YgorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIsJXhtbTIsJXhtbTEJIyByb3VuZCA0CisrCWNh bGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZhCisrCWFlc2tleWdlbmFzc2lzdAlcJDB4MiwleG1tMCwl eG1tMQkjIHJvdW5kIDUKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmIKKysJYWVza2V5Z2Vu YXNzaXN0CVwkMHg0LCV4bW0yLCV4bW0xCSMgcm91bmQgNgorKwljYWxsCQkuTGtleV9leHBhbnNp b25fMjU2YQorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDQsJXhtbTAsJXhtbTEJIyByb3VuZCA3Cisr CWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCisrCWFlc2tleWdlbmFzc2lzdAlcJDB4OCwleG1t MiwleG1tMQkjIHJvdW5kIDgKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmEKKysJYWVza2V5 Z2VuYXNzaXN0CVwkMHg4LCV4bW0wLCV4bW0xCSMgcm91bmQgOQorKwljYWxsCQkuTGtleV9leHBh bnNpb25fMjU2YgorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDEwLCV4bW0yLCV4bW0xCSMgcm91bmQg MTAKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmEKKysJYWVza2V5Z2VuYXNzaXN0CVwkMHgx MCwleG1tMCwleG1tMQkjIHJvdW5kIDExCisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lvbl8yNTZiCisr CWFlc2tleWdlbmFzc2lzdAlcJDB4MjAsJXhtbTIsJXhtbTEJIyByb3VuZCAxMgorKwljYWxsCQku TGtleV9leHBhbnNpb25fMjU2YQorKwlhZXNrZXlnZW5hc3Npc3QJXCQweDIwLCV4bW0wLCV4bW0x CSMgcm91bmQgMTMKKysJY2FsbAkJLkxrZXlfZXhwYW5zaW9uXzI1NmIKKysJYWVza2V5Z2VuYXNz aXN0CVwkMHg0MCwleG1tMiwleG1tMQkjIHJvdW5kIDE0CisrCWNhbGwJCS5Ma2V5X2V4cGFuc2lv bl8yNTZhCisrCSRtb3ZrZXkJJXhtbTAsKCVyYXgpCisrCW1vdgkkYml0cywxNiglcmF4KQkjIDI0 MCglcmR4KQorKwl4b3IJJXJheCwlcmF4CisrCWptcAkuTGVuY19rZXlfcmV0CisrCisrLmFsaWdu CTE2CisrLkxiYWRfa2V5Yml0czoKKysJbW92CVwkLTIsJXJheAorKy5MZW5jX2tleV9yZXQ6Cisr CWFkZAlcJDgsJXJzcAorKwlyZXQKKysuTFNFSF9lbmRfc2V0X2VuY3J5cHRfa2V5OgorKwwKKysu YWxpZ24JMTYKKysuTGtleV9leHBhbnNpb25fMTI4OgorKwkkbW92a2V5CSV4bW0wLCglcmF4KQor KwlsZWEJMTYoJXJheCksJXJheAorKy5Ma2V5X2V4cGFuc2lvbl8xMjhfY29sZDoKKysJc2h1ZnBz CVwkMGIwMDAxMDAwMCwleG1tMCwleG1tNAorKwlweG9yCSV4bW00LCAleG1tMAorKwlzaHVmcHMJ XCQwYjEwMDAxMTAwLCV4bW0wLCV4bW00CisrCXB4b3IJJXhtbTQsICV4bW0wCisrCXBzaHVmZAlc JDBiMTExMTExMTEsJXhtbTEsJXhtbTEJIyBjcml0aWNhbCBwYXRoCisrCXB4b3IJJXhtbTEsJXht bTAKKysJcmV0CisrCisrLmFsaWduIDE2CisrLkxrZXlfZXhwYW5zaW9uXzE5MmE6CisrCSRtb3Zr ZXkJJXhtbTAsKCVyYXgpCisrCWxlYQkxNiglcmF4KSwlcmF4CisrLkxrZXlfZXhwYW5zaW9uXzE5 MmFfY29sZDoKKysJbW92YXBzCSV4bW0yLCAleG1tNQorKy5Ma2V5X2V4cGFuc2lvbl8xOTJiX3dh cm06CisrCXNodWZwcwlcJDBiMDAwMTAwMDAsJXhtbTAsJXhtbTQKKysJbW92YXBzCSV4bW0yLCV4 bW0zCisrCXB4b3IJJXhtbTQsJXhtbTAKKysJc2h1ZnBzCVwkMGIxMDAwMTEwMCwleG1tMCwleG1t NAorKwlwc2xsZHEJXCQ0LCV4bW0zCisrCXB4b3IJJXhtbTQsJXhtbTAKKysJcHNodWZkCVwkMGIw MTAxMDEwMSwleG1tMSwleG1tMQkjIGNyaXRpY2FsIHBhdGgKKysJcHhvcgkleG1tMywleG1tMgor KwlweG9yCSV4bW0xLCV4bW0wCisrCXBzaHVmZAlcJDBiMTExMTExMTEsJXhtbTAsJXhtbTMKKysJ cHhvcgkleG1tMywleG1tMgorKwlyZXQKKysKKysuYWxpZ24gMTYKKysuTGtleV9leHBhbnNpb25f MTkyYjoKKysJbW92YXBzCSV4bW0wLCV4bW0zCisrCXNodWZwcwlcJDBiMDEwMDAxMDAsJXhtbTAs JXhtbTUKKysJJG1vdmtleQkleG1tNSwoJXJheCkKKysJc2h1ZnBzCVwkMGIwMTAwMTExMCwleG1t MiwleG1tMworKwkkbW92a2V5CSV4bW0zLDE2KCVyYXgpCisrCWxlYQkzMiglcmF4KSwlcmF4Cisr CWptcAkuTGtleV9leHBhbnNpb25fMTkyYl93YXJtCisrCisrLmFsaWduCTE2CisrLkxrZXlfZXhw YW5zaW9uXzI1NmE6CisrCSRtb3ZrZXkJJXhtbTIsKCVyYXgpCisrCWxlYQkxNiglcmF4KSwlcmF4 CisrLkxrZXlfZXhwYW5zaW9uXzI1NmFfY29sZDoKKysJc2h1ZnBzCVwkMGIwMDAxMDAwMCwleG1t MCwleG1tNAorKwlweG9yCSV4bW00LCV4bW0wCisrCXNodWZwcwlcJDBiMTAwMDExMDAsJXhtbTAs JXhtbTQKKysJcHhvcgkleG1tNCwleG1tMAorKwlwc2h1ZmQJXCQwYjExMTExMTExLCV4bW0xLCV4 bW0xCSMgY3JpdGljYWwgcGF0aAorKwlweG9yCSV4bW0xLCV4bW0wCisrCXJldAorKworKy5hbGln biAxNgorKy5Ma2V5X2V4cGFuc2lvbl8yNTZiOgorKwkkbW92a2V5CSV4bW0wLCglcmF4KQorKwls ZWEJMTYoJXJheCksJXJheAorKworKwlzaHVmcHMJXCQwYjAwMDEwMDAwLCV4bW0yLCV4bW00Cisr CXB4b3IJJXhtbTQsJXhtbTIKKysJc2h1ZnBzCVwkMGIxMDAwMTEwMCwleG1tMiwleG1tNAorKwlw eG9yCSV4bW00LCV4bW0yCisrCXBzaHVmZAlcJDBiMTAxMDEwMTAsJXhtbTEsJXhtbTEJIyBjcml0 aWNhbCBwYXRoCisrCXB4b3IJJXhtbTEsJXhtbTIKKysJcmV0CisrLnNpemUJJHtQUkVGSVh9X3Nl dF9lbmNyeXB0X2tleSwuLSR7UFJFRklYfV9zZXRfZW5jcnlwdF9rZXkKKytfX18KKyt9CisrDAor KyRjb2RlLj08PF9fXzsKKysuYXNjaXogICJBRVMgZm9yIEludGVsIEFFUy1OSSwgQ1JZUFRPR0FN UyBieSA8YXBwcm9cQG9wZW5zc2wub3JnPiIKKysuYWxpZ24JNjQKKytfX18KKysKKysjIEVYQ0VQ VElPTl9ESVNQT1NJVElPTiBoYW5kbGVyIChFWENFUFRJT05fUkVDT1JEICpyZWMsVUxPTkc2NCBm cmFtZSwKKysjCQlDT05URVhUICpjb250ZXh0LERJU1BBVENIRVJfQ09OVEVYVCAqZGlzcCkKKytp ZiAoJHdpbjY0KSB7CisrJHJlYz0iJXJjeCI7CisrJGZyYW1lPSIlcmR4IjsKKyskY29udGV4dD0i JXI4IjsKKyskZGlzcD0iJXI5IjsKKysKKyskY29kZS49PDxfX187CisrLmV4dGVybglfX2ltcF9S dGxWaXJ0dWFsVW53aW5kCisrLnR5cGUJY2JjX3NlX2hhbmRsZXIsXEBhYmktb21uaXBvdGVudAor Ky5hbGlnbgkxNgorK2NiY19zZV9oYW5kbGVyOgorKwlwdXNoCSVyc2kKKysJcHVzaAklcmRpCisr CXB1c2gJJXJieAorKwlwdXNoCSVyYnAKKysJcHVzaAklcjEyCisrCXB1c2gJJXIxMworKwlwdXNo CSVyMTQKKysJcHVzaAklcjE1CisrCXB1c2hmcQorKwlzdWIJXCQ2NCwlcnNwCisrCisrCW1vdgkx NTIoJGNvbnRleHQpLCVyYXgJIyBwdWxsIGNvbnRleHQtPlJzcAorKwltb3YJMjQ4KCRjb250ZXh0 KSwlcmJ4CSMgcHVsbCBjb250ZXh0LT5SaXAKKysKKysJbGVhCS5MY2JjX2RlY3J5cHQoJXJpcCks JXIxMAorKwljbXAJJXIxMCwlcmJ4CQkjIGNvbnRleHQtPlJpcDwicHJvbG9ndWUiIGxhYmVsCisr CWpiCS5MaW5fcHJvbG9ndWUKKysKKysJbGVhCS5MY2JjX2RlY3J5cHRfYm9keSglcmlwKSwlcjEw CisrCWNtcAklcjEwLCVyYngJCSMgY29udGV4dC0+UmlwPGNiY19kZWNyeXB0X2JvZHkKKysJamIJ LkxyZXN0b3JlX3JheAorKworKwlsZWEJLkxjYmNfcmV0KCVyaXApLCVyMTAKKysJY21wCSVyMTAs JXJieAkJIyBjb250ZXh0LT5SaXA+PSJlcGlsb2d1ZSIgbGFiZWwKKysJamFlCS5MaW5fcHJvbG9n dWUKKysKKysJbGVhCTAoJXJheCksJXJzaQkJIyB0b3Agb2Ygc3RhY2sKKysJbGVhCTUxMigkY29u dGV4dCksJXJkaQkjICZjb250ZXh0LlhtbTYKKysJbW92CVwkOCwlZWN4CQkjIDQqc2l6ZW9mKCV4 bW0wKS9zaXplb2YoJXJheCkKKysJLmxvbmcJMHhhNTQ4ZjNmYwkJIyBjbGQ7IHJlcCBtb3ZzcQor KwlsZWEJMHg1OCglcmF4KSwlcmF4CQkjIGFkanVzdCBzdGFjayBwb2ludGVyCisrCWptcAkuTGlu X3Byb2xvZ3VlCisrCisrLkxyZXN0b3JlX3JheDoKKysJbW92CTEyMCgkY29udGV4dCksJXJheAor Ky5MaW5fcHJvbG9ndWU6CisrCW1vdgk4KCVyYXgpLCVyZGkKKysJbW92CTE2KCVyYXgpLCVyc2kK KysJbW92CSVyYXgsMTUyKCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UnNwCisrCW1vdgkl cnNpLDE2OCgkY29udGV4dCkJIyByZXN0b3JlIGNvbnRleHQtPlJzaQorKwltb3YJJXJkaSwxNzYo JGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5SZGkKKysKKysJam1wCS5MY29tbW9uX3NlaF9l eGl0CisrLnNpemUJY2JjX3NlX2hhbmRsZXIsLi1jYmNfc2VfaGFuZGxlcgorKworKy50eXBlCWVj Yl9zZV9oYW5kbGVyLFxAYWJpLW9tbmlwb3RlbnQKKysuYWxpZ24JMTYKKytlY2Jfc2VfaGFuZGxl cjoKKysJcHVzaAklcnNpCisrCXB1c2gJJXJkaQorKwlwdXNoCSVyYngKKysJcHVzaAklcmJwCisr CXB1c2gJJXIxMgorKwlwdXNoCSVyMTMKKysJcHVzaAklcjE0CisrCXB1c2gJJXIxNQorKwlwdXNo ZnEKKysJc3ViCVwkNjQsJXJzcAorKworKwltb3YJMTUyKCRjb250ZXh0KSwlcmF4CSMgcHVsbCBj b250ZXh0LT5Sc3AKKysJbW92CTgoJXJheCksJXJkaQorKwltb3YJMTYoJXJheCksJXJzaQorKwlt b3YJJXJzaSwxNjgoJGNvbnRleHQpCSMgcmVzdG9yZSBjb250ZXh0LT5Sc2kKKysJbW92CSVyZGks MTc2KCRjb250ZXh0KQkjIHJlc3RvcmUgY29udGV4dC0+UmRpCisrCisrLkxjb21tb25fc2VoX2V4 aXQ6CisrCisrCW1vdgk0MCgkZGlzcCksJXJkaQkJIyBkaXNwLT5Db250ZXh0UmVjb3JkCisrCW1v dgkkY29udGV4dCwlcnNpCQkjIGNvbnRleHQKKysJbW92CVwkMTU0LCVlY3gJCSMgc2l6ZW9mKENP TlRFWFQpCisrCS5sb25nCTB4YTU0OGYzZmMJCSMgY2xkOyByZXAgbW92c3EKKysKKysJbW92CSRk aXNwLCVyc2kKKysJeG9yCSVyY3gsJXJjeAkJIyBhcmcxLCBVTldfRkxBR19OSEFORExFUgorKwlt b3YJOCglcnNpKSwlcmR4CQkjIGFyZzIsIGRpc3AtPkltYWdlQmFzZQorKwltb3YJMCglcnNpKSwl cjgJCSMgYXJnMywgZGlzcC0+Q29udHJvbFBjCisrCW1vdgkxNiglcnNpKSwlcjkJCSMgYXJnNCwg ZGlzcC0+RnVuY3Rpb25FbnRyeQorKwltb3YJNDAoJXJzaSksJXIxMAkJIyBkaXNwLT5Db250ZXh0 UmVjb3JkCisrCWxlYQk1NiglcnNpKSwlcjExCQkjICZkaXNwLT5IYW5kbGVyRGF0YQorKwlsZWEJ MjQoJXJzaSksJXIxMgkJIyAmZGlzcC0+RXN0YWJsaXNoZXJGcmFtZQorKwltb3YJJXIxMCwzMigl cnNwKQkJIyBhcmc1CisrCW1vdgklcjExLDQwKCVyc3ApCQkjIGFyZzYKKysJbW92CSVyMTIsNDgo JXJzcCkJCSMgYXJnNworKwltb3YJJXJjeCw1NiglcnNwKQkJIyBhcmc4LCAoTlVMTCkKKysJY2Fs bAkqX19pbXBfUnRsVmlydHVhbFVud2luZCglcmlwKQorKworKwltb3YJXCQxLCVlYXgJCSMgRXhj ZXB0aW9uQ29udGludWVTZWFyY2gKKysJYWRkCVwkNjQsJXJzcAorKwlwb3BmcQorKwlwb3AJJXIx NQorKwlwb3AJJXIxNAorKwlwb3AJJXIxMworKwlwb3AJJXIxMgorKwlwb3AJJXJicAorKwlwb3AJ JXJieAorKwlwb3AJJXJkaQorKwlwb3AJJXJzaQorKwlyZXQKKysuc2l6ZQljYmNfc2VfaGFuZGxl ciwuLWNiY19zZV9oYW5kbGVyCisrCisrLnNlY3Rpb24JLnBkYXRhCisrLmFsaWduCTQKKysJLnJ2 YQkuTFNFSF9iZWdpbl8ke1BSRUZJWH1fZWNiX2VuY3J5cHQKKysJLnJ2YQkuTFNFSF9lbmRfJHtQ UkVGSVh9X2VjYl9lbmNyeXB0CisrCS5ydmEJLkxTRUhfaW5mb19lY2IKKysKKysJLnJ2YQkuTFNF SF9iZWdpbl8ke1BSRUZJWH1fY2JjX2VuY3J5cHQKKysJLnJ2YQkuTFNFSF9lbmRfJHtQUkVGSVh9 X2NiY19lbmNyeXB0CisrCS5ydmEJLkxTRUhfaW5mb19jYmMKKysKKysJLnJ2YQkke1BSRUZJWH1f c2V0X2RlY3J5cHRfa2V5CisrCS5ydmEJLkxTRUhfZW5kX3NldF9kZWNyeXB0X2tleQorKwkucnZh CS5MU0VIX2luZm9fa2V5CisrCisrCS5ydmEJJHtQUkVGSVh9X3NldF9lbmNyeXB0X2tleQorKwku cnZhCS5MU0VIX2VuZF9zZXRfZW5jcnlwdF9rZXkKKysJLnJ2YQkuTFNFSF9pbmZvX2tleQorKy5z ZWN0aW9uCS54ZGF0YQorKy5hbGlnbgk4CisrLkxTRUhfaW5mb19lY2I6CisrCS5ieXRlCTksMCww LDAKKysJLnJ2YQllY2Jfc2VfaGFuZGxlcgorKy5MU0VIX2luZm9fY2JjOgorKwkuYnl0ZQk5LDAs MCwwCisrCS5ydmEJY2JjX3NlX2hhbmRsZXIKKysuTFNFSF9pbmZvX2tleToKKysJLmJ5dGUJMHgw MSwweDA0LDB4MDEsMHgwMAorKwkuYnl0ZQkweDA0LDB4MDIsMHgwMCwweDAwCisrX19fCisrfQor KworK3N1YiByZXggeworKyBsb2NhbCAqb3Bjb2RlPXNoaWZ0OworKyBteSAoJGRzdCwkc3JjKT1A XzsKKysKKysgICBpZiAoJGRzdD49OCB8fCAkc3JjPj04KSB7CisrCSRyZXg9MHg0MDsKKysJJHJl eHw9MHgwNCBpZigkZHN0Pj04KTsKKysJJHJleHw9MHgwMSBpZigkc3JjPj04KTsKKysJcHVzaCBA b3Bjb2RlLCRyZXg7CisrICAgfQorK30KKysKKytzdWIgYWVzbmkgeworKyAgbXkgJGxpbmU9c2hp ZnQ7CisrICBteSBAb3Bjb2RlPSgweDY2KTsKKysKKysgICAgaWYgKCRsaW5lPX4vKGFlc2tleWdl bmFzc2lzdClccytcJChbeDAtOWEtZl0rKSxccyoleG1tKFswLTldKyksXHMqJXhtbShbMC05XSsp LykgeworKwlyZXgoXEBvcGNvZGUsJDQsJDMpOworKwlwdXNoIEBvcGNvZGUsMHgwZiwweDNhLDB4 ZGY7CisrCXB1c2ggQG9wY29kZSwweGMwfCgkMyY3KXwoKCQ0JjcpPDwzKTsJIyBNb2RSL00KKysJ bXkgJGM9JDI7CisrCXB1c2ggQG9wY29kZSwkYz1+L14wLz9vY3QoJGMpOiRjOworKwlyZXR1cm4g Ii5ieXRlXHQiLmpvaW4oJywnLEBvcGNvZGUpOworKyAgICB9CisrICAgIGVsc2lmICgkbGluZT1+ LyhhZXNbYS16XSspXHMrJXhtbShbMC05XSspLFxzKiV4bW0oWzAtOV0rKS8pIHsKKysJbXkgJW9w Y29kZWxldCA9ICgKKysJCSJhZXNpbWMiID0+IDB4ZGIsCisrCQkiYWVzZW5jIiA9PiAweGRjLAki YWVzZW5jbGFzdCIgPT4gMHhkZCwKKysJCSJhZXNkZWMiID0+IDB4ZGUsCSJhZXNkZWNsYXN0IiA9 PiAweGRmCisrCSk7CisrCXJldHVybiB1bmRlZiBpZiAoIWRlZmluZWQoJG9wY29kZWxldHskMX0p KTsKKysJcmV4KFxAb3Bjb2RlLCQzLCQyKTsKKysJcHVzaCBAb3Bjb2RlLDB4MGYsMHgzOCwkb3Bj b2RlbGV0eyQxfTsKKysJcHVzaCBAb3Bjb2RlLDB4YzB8KCQyJjcpfCgoJDMmNyk8PDMpOwkjIE1v ZFIvTQorKwlyZXR1cm4gIi5ieXRlXHQiLmpvaW4oJywnLEBvcGNvZGUpOworKyAgICB9CisrICAg IHJldHVybiAkbGluZTsKKyt9CisrCisrJGNvZGUgPX4gcy9cYChbXlxgXSopXGAvZXZhbCgkMSkv Z2VtOworKyRjb2RlID1+IHMvXGIoYWVzLioleG1tWzAtOV0rKS4qJC9hZXNuaSgkMSkvZ2VtOwor KworK3ByaW50ICRjb2RlOworKworK2Nsb3NlIFNURE9VVDsKK2RpZmYgLXVwIG9wZW5zc2wtMS4w LjBiL2NyeXB0by9hZXMvTWFrZWZpbGUuYWVzbmkgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2Flcy9N YWtlZmlsZQorLS0tIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9hZXMvTWFrZWZpbGUuYWVzbmkJMjAw OC0xMi0yMyAxMjozMzowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4wYi9jcnlw dG8vYWVzL01ha2VmaWxlCTIwMTAtMTEtMTYgMTc6MzM6MjMuMDAwMDAwMDAwICswMTAwCitAQCAt NTAsOSArNTAsMTMgQEAgYWVzLWlhNjQuczogYXNtL2Flcy1pYTY0LlMKKyAKKyBhZXMtNTg2LnM6 CWFzbS9hZXMtNTg2LnBsIC4uL3Blcmxhc20veDg2YXNtLnBsCisgCSQoUEVSTCkgYXNtL2Flcy01 ODYucGwgJChQRVJMQVNNX1NDSEVNRSkgJChDRkxBR1MpICQoUFJPQ0VTU09SKSA+ICRACisrYWVz bmkteDg2LnM6CWFzbS9hZXNuaS14ODYucGwgLi4vcGVybGFzbS94ODZhc20ucGwKKysJJChQRVJM KSBhc20vYWVzbmkteDg2LnBsICQoUEVSTEFTTV9TQ0hFTUUpICQoQ0ZMQUdTKSAkKFBST0NFU1NP UikgPiAkQAorIAorIGFlcy14ODZfNjQuczogYXNtL2Flcy14ODZfNjQucGwKKyAJJChQRVJMKSBh c20vYWVzLXg4Nl82NC5wbCAkKFBFUkxBU01fU0NIRU1FKSA+ICRACisrYWVzbmkteDg2XzY0LnM6 IGFzbS9hZXNuaS14ODZfNjQucGwKKysJJChQRVJMKSBhc20vYWVzbmkteDg2XzY0LnBsICQoUEVS TEFTTV9TQ0hFTUUpID4gJEAKKyAKKyBhZXMtc3BhcmN2OS5zOiBhc20vYWVzLXNwYXJjdjkucGwK KyAJJChQRVJMKSBhc20vYWVzLXNwYXJjdjkucGwgJChDRkxBR1MpID4gJEAKK2RpZmYgLXVwIG9w ZW5zc2wtMS4wLjBiL2NyeXB0by9lbmdpbmUvZW5nX2Flc25pLmMuYWVzbmkgb3BlbnNzbC0xLjAu MGIvY3J5cHRvL2VuZ2luZS9lbmdfYWVzbmkuYworLS0tIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9l bmdpbmUvZW5nX2Flc25pLmMuYWVzbmkJMjAxMC0xMS0xNiAxNzozMzoyMy4wMDAwMDAwMDAgKzAx MDAKKysrKyBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZW5naW5lL2VuZ19hZXNuaS5jCTIwMTAtMTEt MTYgMTc6MzM6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDQxMyBAQAorKy8qCisrICog U3VwcG9ydCBmb3IgSW50ZWwgQUVTLU5JIGludHJ1Y3Rpb24gc2V0CisrICogICBBdXRob3I6IEh1 YW5nIFlpbmcgPHlpbmcuaHVhbmdAaW50ZWwuY29tPgorKyAqCisrICogSW50ZWwgQUVTLU5JIGlz IGEgbmV3IHNldCBvZiBTaW5nbGUgSW5zdHJ1Y3Rpb24gTXVsdGlwbGUgRGF0YQorKyAqIChTSU1E KSBpbnN0cnVjdGlvbnMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgaW50cm9kdWNlZCBpbiB0aGUgbmV4 dAorKyAqIGdlbmVyYXRpb24gb2YgSW50ZWwgcHJvY2Vzc29yLCBhcyBvZiAyMDA5LiBUaGVzZSBp bnN0cnVjdGlvbnMKKysgKiBlbmFibGUgZmFzdCBhbmQgc2VjdXJlIGRhdGEgZW5jcnlwdGlvbiBh bmQgZGVjcnlwdGlvbiwgdXNpbmcgdGhlCisrICogQWR2YW5jZWQgRW5jcnlwdGlvbiBTdGFuZGFy ZCAoQUVTKSwgZGVmaW5lZCBieSBGSVBTIFB1YmxpY2F0aW9uCisrICogbnVtYmVyIDE5Ny4gIFRo ZSBhcmNoaXRlY3R1cmUgaW50cm9kdWNlcyBzaXggaW5zdHJ1Y3Rpb25zIHRoYXQKKysgKiBvZmZl ciBmdWxsIGhhcmR3YXJlIHN1cHBvcnQgZm9yIEFFUy4gRm91ciBvZiB0aGVtIHN1cHBvcnQgaGln aAorKyAqIHBlcmZvcm1hbmNlIGRhdGEgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiwgYW5kIHRo ZSBvdGhlciB0d28KKysgKiBpbnN0cnVjdGlvbnMgc3VwcG9ydCB0aGUgQUVTIGtleSBleHBhbnNp b24gcHJvY2VkdXJlLgorKyAqCisrICogVGhlIHdoaXRlIHBhcGVyIGNhbiBiZSBkb3dubG9hZGVk IGZyb206CisrICogICBodHRwOi8vc29mdHdhcmVjb21tdW5pdHkuaW50ZWwuY29tL2lzbi9kb3du bG9hZHMvaW50ZWxhdngvQUVTLUluc3RydWN0aW9ucy1TZXRfV1AucGRmCisrICoKKysgKiBUaGlz IGZpbGUgaXMgYmFzZWQgb24gZW5naW5lcy9lX3BhZGxvY2suYworKyAqLworKworKy8qID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisrICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEgVGhlIE9wZW5TU0wgUHJvamVjdC4g IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICoKKysgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKysgKiBtb2RpZmljYXRp b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK KysgKiBhcmUgbWV0OgorKyAqCisrICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKysgKiAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisrICoKKysgKiAy LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl IGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24u CisrICoKKysgKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVy ZXMgb3IgdXNlIG9mIHRoaXMKKysgKiAgICBzb2Z0d2FyZSBtdXN0IGRpc3BsYXkgdGhlIGZvbGxv d2luZyBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3 YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVzZSBpbiB0 aGUgT3BlblNTTCBUb29sa2l0LiAoaHR0cDovL3d3dy5PcGVuU1NMLm9yZy8pIgorKyAqCisrICog NC4gVGhlIG5hbWVzICJPcGVuU1NMIFRvb2xraXQiIGFuZCAiT3BlblNTTCBQcm9qZWN0IiBtdXN0 IG5vdCBiZSB1c2VkIHRvCisrICogICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2 ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKKysgKiAgICBwcmlvciB3cml0dGVuIHBlcm1p c3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0CisrICogICAgbGlj ZW5zaW5nQE9wZW5TU0wub3JnLgorKyAqCisrICogNS4gUHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo aXMgc29mdHdhcmUgbWF5IG5vdCBiZSBjYWxsZWQgIk9wZW5TU0wiCisrICogICAgbm9yIG1heSAi T3BlblNTTCIgYXBwZWFyIGluIHRoZWlyIG5hbWVzIHdpdGhvdXQgcHJpb3Igd3JpdHRlbgorKyAq ICAgIHBlcm1pc3Npb24gb2YgdGhlIE9wZW5TU0wgUHJvamVjdC4KKysgKgorKyAqIDYuIFJlZGlz dHJpYnV0aW9ucyBvZiBhbnkgZm9ybSB3aGF0c29ldmVyIG11c3QgcmV0YWluIHRoZSBmb2xsb3dp bmcKKysgKiAgICBhY2tub3dsZWRnbWVudDoKKysgKiAgICAiVGhpcyBwcm9kdWN0IGluY2x1ZGVz IHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUgT3BlblNTTCBQcm9qZWN0CisrICogICAgZm9yIHVz ZSBpbiB0aGUgT3BlblNTTCBUb29sa2l0IChodHRwOi8vd3d3Lk9wZW5TU0wub3JnLykiCisrICoK KysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBB UyBJUycnIEFORCBBTlkKKysgKiBFWFBSRVNTRUQgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisrICogSU1QTElFRCBXQVJSQU5USUVTIE9G IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisrICogUFVSUE9T RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBPcGVuU1NMIFBST0pFQ1Qg T1IKKysgKiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF Q1QsIElOQ0lERU5UQUwsCisrICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM IERBTUFHRVMgKElOQ0xVRElORywgQlVUCisrICogTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisrICogTE9TUyBPRiBVU0UsIERBVEEs IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKysgKiBIT1dFVkVSIENBVVNF RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsCisr ICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI RVJXSVNFKQorKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP RlRXQVJFLCBFVkVOIElGIEFEVklTRUQKKysgKiBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE QU1BR0UuCisrICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKysgKgorKyAqIFRoaXMgcHJvZHVjdCBpbmNsdWRlcyBj cnlwdG9ncmFwaGljIHNvZnR3YXJlIHdyaXR0ZW4gYnkgRXJpYyBZb3VuZworKyAqIChlYXlAY3J5 cHRzb2Z0LmNvbSkuICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgd3JpdHRlbiBieSBU aW0KKysgKiBIdWRzb24gKHRqaEBjcnlwdHNvZnQuY29tKS4KKysgKgorKyAqLworKworKworKyNp bmNsdWRlIDxvcGVuc3NsL29wZW5zc2xjb25mLmg+CisrCisrI2lmICFkZWZpbmVkKE9QRU5TU0xf Tk9fSFcpICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fSFdfQUVTX05JKSAmJiAhZGVmaW5lZChPUEVO U1NMX05PX0FFUykKKysKKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSAiY3J5cHRsaWIu aCIKKysjaW5jbHVkZSA8b3BlbnNzbC9kc28uaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lbmdpbmUu aD4KKysjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9hZXMuaD4K KysjaW5jbHVkZSA8b3BlbnNzbC9lcnIuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9tb2Rlcy5oPgor KworKy8qIEFFUy1OSSBpcyBhdmFpbGFibGUgKk9OTFkqIG9uIHNvbWUgeDg2IENQVXMuICBOb3Qg b25seSB0aGF0IGl0CisrICAgZG9lc24ndCBleGlzdCBlbHNld2hlcmUsIGJ1dCBpdCBldmVuIGNh bid0IGJlIGNvbXBpbGVkIG9uIG90aGVyCisrICAgcGxhdGZvcm1zISAqLworKyN1bmRlZiBDT01Q SUxFX0hXX0FFU05JCisrI2lmIChkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IFwKKysgICAgIGRlZmluZWQoX01fQU1ENjQpIHx8IGRlZmluZWQoX01fWDY0KSB8fCBc CisrICAgICBkZWZpbmVkKE9QRU5TU0xfSUEzMl9TU0UyKSkgJiYgIWRlZmluZWQoT1BFTlNTTF9O T19BU00pCisrI2RlZmluZSBDT01QSUxFX0hXX0FFU05JCisrc3RhdGljIEVOR0lORSAqRU5HSU5F X2Flc25pICh2b2lkKTsKKysjZW5kaWYKKysKKyt2b2lkIEVOR0lORV9sb2FkX2Flc25pICh2b2lk KQorK3sKKysvKiBPbiBub24teDg2IENQVXMgaXQganVzdCByZXR1cm5zLiAqLworKyNpZmRlZiBD T01QSUxFX0hXX0FFU05JCisrCUVOR0lORSAqdG9hZGQgPSBFTkdJTkVfYWVzbmkoKTsKKysJaWYg KCF0b2FkZCkKKysJCXJldHVybjsKKysJRU5HSU5FX2FkZCAodG9hZGQpOworKwlFTkdJTkVfcmVn aXN0ZXJfY29tcGxldGUgKHRvYWRkKTsKKysJRU5HSU5FX2ZyZWUgKHRvYWRkKTsKKysJRVJSX2Ns ZWFyX2Vycm9yICgpOworKyNlbmRpZgorK30KKysKKysjaWZkZWYgQ09NUElMRV9IV19BRVNOSQor K2ludCBhZXNuaV9zZXRfZW5jcnlwdF9rZXkoY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcktleSwg aW50IGJpdHMsCisrCQkJICAgICAgQUVTX0tFWSAqa2V5KTsKKytpbnQgYWVzbmlfc2V0X2RlY3J5 cHRfa2V5KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzZXJLZXksIGludCBiaXRzLAorKwkJCSAgICAg IEFFU19LRVkgKmtleSk7CisrCisrdm9pZCBhZXNuaV9lbmNyeXB0KGNvbnN0IHVuc2lnbmVkIGNo YXIgKmluLCB1bnNpZ25lZCBjaGFyICpvdXQsCisrCQkgICAgICAgY29uc3QgQUVTX0tFWSAqa2V5 KTsKKyt2b2lkIGFlc25pX2RlY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHVuc2lnbmVk IGNoYXIgKm91dCwKKysJCSAgICAgICBjb25zdCBBRVNfS0VZICprZXkpOworKworK3ZvaWQgYWVz bmlfZWNiX2VuY3J5cHQoY29uc3QgdW5zaWduZWQgY2hhciAqaW4sCisrCQkJICAgdW5zaWduZWQg Y2hhciAqb3V0LAorKwkJCSAgIHNpemVfdCBsZW5ndGgsCisrCQkJICAgY29uc3QgQUVTX0tFWSAq a2V5LAorKwkJCSAgIGludCBlbmMpOworK3ZvaWQgYWVzbmlfY2JjX2VuY3J5cHQoY29uc3QgdW5z aWduZWQgY2hhciAqaW4sCisrCQkJICAgdW5zaWduZWQgY2hhciAqb3V0LAorKwkJCSAgIHNpemVf dCBsZW5ndGgsCisrCQkJICAgY29uc3QgQUVTX0tFWSAqa2V5LAorKwkJCSAgIHVuc2lnbmVkIGNo YXIgKml2ZWMsIGludCBlbmMpOworKworKy8qIEZ1bmN0aW9uIGZvciBFTkdJTkUgZGV0ZWN0aW9u IGFuZCBjb250cm9sICovCisrc3RhdGljIGludCBhZXNuaV9pbml0KEVOR0lORSAqZSk7CisrCisr LyogQ2lwaGVyIFN0dWZmICovCisrc3RhdGljIGludCBhZXNuaV9jaXBoZXJzKEVOR0lORSAqZSwg Y29uc3QgRVZQX0NJUEhFUiAqKmNpcGhlciwKKysJCQkJY29uc3QgaW50ICoqbmlkcywgaW50IG5p ZCk7CisrCisrI2RlZmluZSBBRVNOSV9NSU5fQUxJR04JMTYKKysjZGVmaW5lIEFFU05JX0FMSUdO KHgpIFwKKysJKCh2b2lkICopKCgodW5zaWduZWQgbG9uZykoeCkrQUVTTklfTUlOX0FMSUdOLTEp Jn4oQUVTTklfTUlOX0FMSUdOLTEpKSkKKysKKysvKiBFbmdpbmUgbmFtZXMgKi8KKytzdGF0aWMg Y29uc3QgY2hhciAgIGFlc25pX2lkW10gPSAiYWVzbmkiLAorKwkJICAgIGFlc25pX25hbWVbXSA9 ICJJbnRlbCBBRVMtTkkgZW5naW5lIiwKKysJCSAgICBub19hZXNuaV9uYW1lW10gPSAiSW50ZWwg QUVTLU5JIGVuZ2luZSAobm8tYWVzbmkpIjsKKysKKysvKiA9PT09PSBFbmdpbmUgIm1hbmFnZW1l bnQiIGZ1bmN0aW9ucyA9PT09PSAqLworKworKyNpZiBkZWZpbmVkKF9XSU4zMikKKyt0eXBlZGVm IHVuc2lnbmVkIF9faW50NjQgSUEzMkNBUDsKKysjZWxzZQorK3R5cGVkZWYgdW5zaWduZWQgbG9u ZyBsb25nIElBMzJDQVA7CisrI2VuZGlmCisrCisrLyogUHJlcGFyZSB0aGUgRU5HSU5FIHN0cnVj dHVyZSBmb3IgcmVnaXN0cmF0aW9uICovCisrc3RhdGljIGludAorK2Flc25pX2JpbmRfaGVscGVy KEVOR0lORSAqZSkKKyt7CisrCWludCBlbmdhZ2U7CisrCWlmIChzaXplb2YoT1BFTlNTTF9pYTMy Y2FwX1ApID4gNCkgeworKwkJZW5nYWdlID0gKE9QRU5TU0xfaWEzMmNhcF9QID4+IDU3KSAmIDE7 CisrCX0gZWxzZSB7CisrCQlJQTMyQ0FQIE9QRU5TU0xfaWEzMl9jcHVpZCh2b2lkKTsKKysJCWVu Z2FnZSA9IChPUEVOU1NMX2lhMzJfY3B1aWQoKSA+PiA1NykgJiAxOworKwl9CisrCisrCS8qIFJl Z2lzdGVyIGV2ZXJ5dGhpbmcgb3IgcmV0dXJuIHdpdGggYW4gZXJyb3IgKi8KKysJaWYgKCFFTkdJ TkVfc2V0X2lkKGUsIGFlc25pX2lkKSB8fAorKwkgICAgIUVOR0lORV9zZXRfbmFtZShlLCBlbmdh Z2UgPyBhZXNuaV9uYW1lIDogbm9fYWVzbmlfbmFtZSkgfHwKKysKKysJICAgICFFTkdJTkVfc2V0 X2luaXRfZnVuY3Rpb24oZSwgYWVzbmlfaW5pdCkgfHwKKysJICAgIChlbmdhZ2UgJiYgIUVOR0lO RV9zZXRfY2lwaGVycyAoZSwgYWVzbmlfY2lwaGVycykpCisrCSAgICApCisrCQlyZXR1cm4gMDsK KysKKysJLyogRXZlcnl0aGluZyBsb29rcyBnb29kICovCisrCXJldHVybiAxOworK30KKysKKysv KiBDb25zdHJ1Y3RvciAqLworK3N0YXRpYyBFTkdJTkUgKgorK0VOR0lORV9hZXNuaSh2b2lkKQor K3sKKysJRU5HSU5FICplbmcgPSBFTkdJTkVfbmV3KCk7CisrCisrCWlmICghZW5nKSB7CisrCQly ZXR1cm4gTlVMTDsKKysJfQorKworKwlpZiAoIWFlc25pX2JpbmRfaGVscGVyKGVuZykpIHsKKysJ CUVOR0lORV9mcmVlKGVuZyk7CisrCQlyZXR1cm4gTlVMTDsKKysJfQorKworKwlyZXR1cm4gZW5n OworK30KKysKKysvKiBDaGVjayBhdmFpbGFiaWxpdHkgb2YgdGhlIGVuZ2luZSAqLworK3N0YXRp YyBpbnQKKythZXNuaV9pbml0KEVOR0lORSAqZSkKKyt7CisrCXJldHVybiAxOworK30KKysKKysj aWYgZGVmaW5lZChOSURfYWVzXzEyOF9jZmIxMjgpICYmICEgZGVmaW5lZCAoTklEX2Flc18xMjhf Y2ZiKQorKyNkZWZpbmUgTklEX2Flc18xMjhfY2ZiCU5JRF9hZXNfMTI4X2NmYjEyOAorKyNlbmRp ZgorKworKyNpZiBkZWZpbmVkKE5JRF9hZXNfMTI4X29mYjEyOCkgJiYgISBkZWZpbmVkIChOSURf YWVzXzEyOF9vZmIpCisrI2RlZmluZSBOSURfYWVzXzEyOF9vZmIJTklEX2Flc18xMjhfb2ZiMTI4 CisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQoTklEX2Flc18xOTJfY2ZiMTI4KSAmJiAhIGRlZmlu ZWQgKE5JRF9hZXNfMTkyX2NmYikKKysjZGVmaW5lIE5JRF9hZXNfMTkyX2NmYglOSURfYWVzXzE5 Ml9jZmIxMjgKKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZChOSURfYWVzXzE5Ml9vZmIxMjgpICYm ICEgZGVmaW5lZCAoTklEX2Flc18xOTJfb2ZiKQorKyNkZWZpbmUgTklEX2Flc18xOTJfb2ZiCU5J RF9hZXNfMTkyX29mYjEyOAorKyNlbmRpZgorKworKyNpZiBkZWZpbmVkKE5JRF9hZXNfMjU2X2Nm YjEyOCkgJiYgISBkZWZpbmVkIChOSURfYWVzXzI1Nl9jZmIpCisrI2RlZmluZSBOSURfYWVzXzI1 Nl9jZmIJTklEX2Flc18yNTZfY2ZiMTI4CisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQoTklEX2Fl c18yNTZfb2ZiMTI4KSAmJiAhIGRlZmluZWQgKE5JRF9hZXNfMjU2X29mYikKKysjZGVmaW5lIE5J RF9hZXNfMjU2X29mYglOSURfYWVzXzI1Nl9vZmIxMjgKKysjZW5kaWYKKysKKysvKiBMaXN0IG9m IHN1cHBvcnRlZCBjaXBoZXJzLiAqLworK3N0YXRpYyBpbnQgYWVzbmlfY2lwaGVyX25pZHNbXSA9 IHsKKysJTklEX2Flc18xMjhfZWNiLAorKwlOSURfYWVzXzEyOF9jYmMsCisrCU5JRF9hZXNfMTI4 X2NmYiwKKysJTklEX2Flc18xMjhfb2ZiLAorKworKwlOSURfYWVzXzE5Ml9lY2IsCisrCU5JRF9h ZXNfMTkyX2NiYywKKysJTklEX2Flc18xOTJfY2ZiLAorKwlOSURfYWVzXzE5Ml9vZmIsCisrCisr CU5JRF9hZXNfMjU2X2VjYiwKKysJTklEX2Flc18yNTZfY2JjLAorKwlOSURfYWVzXzI1Nl9jZmIs CisrCU5JRF9hZXNfMjU2X29mYiwKKyt9OworK3N0YXRpYyBpbnQgYWVzbmlfY2lwaGVyX25pZHNf bnVtID0KKysJKHNpemVvZihhZXNuaV9jaXBoZXJfbmlkcykvc2l6ZW9mKGFlc25pX2NpcGhlcl9u aWRzWzBdKSk7CisrCisrdHlwZWRlZiBzdHJ1Y3QKKyt7CisrCUFFU19LRVkga3M7CisrCXVuc2ln bmVkIGludCBfcGFkMVszXTsKKyt9IEFFU05JX0tFWTsKKysKKytzdGF0aWMgaW50CisrYWVzbmlf aW5pdF9rZXkoRVZQX0NJUEhFUl9DVFggKmN0eCwgY29uc3QgdW5zaWduZWQgY2hhciAqdXNlcl9r ZXksCisrCQkgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaXYsIGludCBlbmMpCisreworKwlpbnQg cmV0OworKwlBRVNfS0VZICprZXkgPSBBRVNOSV9BTElHTihjdHgtPmNpcGhlcl9kYXRhKTsKKysK KysJaWYgKChjdHgtPmNpcGhlci0+ZmxhZ3MgJiBFVlBfQ0lQSF9NT0RFKSA9PSBFVlBfQ0lQSF9D RkJfTU9ERQorKwkgICAgfHwgKGN0eC0+Y2lwaGVyLT5mbGFncyAmIEVWUF9DSVBIX01PREUpID09 IEVWUF9DSVBIX09GQl9NT0RFCisrCSAgICB8fCBlbmMpCisrCQlyZXQ9YWVzbmlfc2V0X2VuY3J5 cHRfa2V5KHVzZXJfa2V5LCBjdHgtPmtleV9sZW4gKiA4LCBrZXkpOworKwllbHNlCisrCQlyZXQ9 YWVzbmlfc2V0X2RlY3J5cHRfa2V5KHVzZXJfa2V5LCBjdHgtPmtleV9sZW4gKiA4LCBrZXkpOwor KworKwlpZihyZXQgPCAwKSB7CisrCQlFVlBlcnIoRVZQX0ZfQUVTTklfSU5JVF9LRVksRVZQX1Jf QUVTX0tFWV9TRVRVUF9GQUlMRUQpOworKwkJcmV0dXJuIDA7CisrCX0KKysKKysJcmV0dXJuIDE7 CisrfQorKworK3N0YXRpYyBpbnQgYWVzbmlfY2lwaGVyX2VjYihFVlBfQ0lQSEVSX0NUWCAqY3R4 LCB1bnNpZ25lZCBjaGFyICpvdXQsCisrCQkgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sIHNpemVf dCBpbmwpCisrewlBRVNfS0VZICprZXkgPSBBRVNOSV9BTElHTihjdHgtPmNpcGhlcl9kYXRhKTsK KysJYWVzbmlfZWNiX2VuY3J5cHQoaW4sIG91dCwgaW5sLCBrZXksIGN0eC0+ZW5jcnlwdCk7Cisr CXJldHVybiAxOworK30KKytzdGF0aWMgaW50IGFlc25pX2NpcGhlcl9jYmMoRVZQX0NJUEhFUl9D VFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LAorKwkJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlu LCBzaXplX3QgaW5sKQorK3sJQUVTX0tFWSAqa2V5ID0gQUVTTklfQUxJR04oY3R4LT5jaXBoZXJf ZGF0YSk7CisrCWFlc25pX2NiY19lbmNyeXB0KGluLCBvdXQsIGlubCwga2V5LAorKwkJCSAgICAg IGN0eC0+aXYsIGN0eC0+ZW5jcnlwdCk7CisrCXJldHVybiAxOworK30KKytzdGF0aWMgaW50IGFl c25pX2NpcGhlcl9jZmIoRVZQX0NJUEhFUl9DVFggKmN0eCwgdW5zaWduZWQgY2hhciAqb3V0LAor KwkJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBzaXplX3QgaW5sKQorK3sJQUVTX0tFWSAqa2V5 ID0gQUVTTklfQUxJR04oY3R4LT5jaXBoZXJfZGF0YSk7CisrCUNSWVBUT19jZmIxMjhfZW5jcnlw dChpbiwgb3V0LCBpbmwsIGtleSwgY3R4LT5pdiwKKysJCQkJJmN0eC0+bnVtLCBjdHgtPmVuY3J5 cHQsCisrCQkJCShibG9jazEyOF9mKWFlc25pX2VuY3J5cHQpOworKwlyZXR1cm4gMTsKKyt9Cisr c3RhdGljIGludCBhZXNuaV9jaXBoZXJfb2ZiKEVWUF9DSVBIRVJfQ1RYICpjdHgsIHVuc2lnbmVk IGNoYXIgKm91dCwKKysJCSBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgc2l6ZV90IGlubCkKKyt7 CUFFU19LRVkgKmtleSA9IEFFU05JX0FMSUdOKGN0eC0+Y2lwaGVyX2RhdGEpOworKwlDUllQVE9f b2ZiMTI4X2VuY3J5cHQoaW4sIG91dCwgaW5sLCBrZXksIGN0eC0+aXYsCisrCQkJCSZjdHgtPm51 bSwgKGJsb2NrMTI4X2YpYWVzbmlfZW5jcnlwdCk7CisrCXJldHVybiAxOworK30KKysKKysjZGVm aW5lIEFFU19CTE9DS19TSVpFCQkxNgorKworKyNkZWZpbmUgRVZQX0NJUEhFUl9ibG9ja19zaXpl X0VDQglBRVNfQkxPQ0tfU0laRQorKyNkZWZpbmUgRVZQX0NJUEhFUl9ibG9ja19zaXplX0NCQwlB RVNfQkxPQ0tfU0laRQorKyNkZWZpbmUgRVZQX0NJUEhFUl9ibG9ja19zaXplX09GQgkxCisrI2Rl ZmluZSBFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfQ0ZCCTEKKysKKysvKiBEZWNsYXJpbmcgc28gbWFu eSBjaXBoZXJzIGJ5IGhhbmQgd291bGQgYmUgYSBwYWluLgorKyAgIEluc3RlYWQgaW50cm9kdWNl IGEgYml0IG9mIHByZXByb2Nlc3NvciBtYWdpYyA6LSkgKi8KKysjZGVmaW5lCURFQ0xBUkVfQUVT X0VWUChrc2l6ZSxsbW9kZSx1bW9kZSkJXAorK3N0YXRpYyBjb25zdCBFVlBfQ0lQSEVSIGFlc25p XyMja3NpemUjI18jI2xtb2RlID0gewlcCisrCU5JRF9hZXNfIyNrc2l6ZSMjXyMjbG1vZGUsCQkJ XAorKwlFVlBfQ0lQSEVSX2Jsb2NrX3NpemVfIyN1bW9kZSwJCQlcCisrCWtzaXplIC8gOCwJCQkJ CVwKKysJQUVTX0JMT0NLX1NJWkUsCQkJCQlcCisrCTAgfCBFVlBfQ0lQSF8jI3Vtb2RlIyNfTU9E RSwJCQlcCisrCWFlc25pX2luaXRfa2V5LAkJCQlcCisrCWFlc25pX2NpcGhlcl8jI2xtb2RlLAkJ CQlcCisrCU5VTEwsCQkJCQkJXAorKwlzaXplb2YoQUVTTklfS0VZKSwJCQkJXAorKwlFVlBfQ0lQ SEVSX3NldF9hc24xX2l2LAkJCQlcCisrCUVWUF9DSVBIRVJfZ2V0X2FzbjFfaXYsCQkJCVwKKysJ TlVMTCwJCQkJCQlcCisrCU5VTEwJCQkJCQlcCisrfQorKworK0RFQ0xBUkVfQUVTX0VWUCgxMjgs ZWNiLEVDQik7CisrREVDTEFSRV9BRVNfRVZQKDEyOCxjYmMsQ0JDKTsKKytERUNMQVJFX0FFU19F VlAoMTI4LGNmYixDRkIpOworK0RFQ0xBUkVfQUVTX0VWUCgxMjgsb2ZiLE9GQik7CisrCisrREVD TEFSRV9BRVNfRVZQKDE5MixlY2IsRUNCKTsKKytERUNMQVJFX0FFU19FVlAoMTkyLGNiYyxDQkMp OworK0RFQ0xBUkVfQUVTX0VWUCgxOTIsY2ZiLENGQik7CisrREVDTEFSRV9BRVNfRVZQKDE5Mixv ZmIsT0ZCKTsKKysKKytERUNMQVJFX0FFU19FVlAoMjU2LGVjYixFQ0IpOworK0RFQ0xBUkVfQUVT X0VWUCgyNTYsY2JjLENCQyk7CisrREVDTEFSRV9BRVNfRVZQKDI1NixjZmIsQ0ZCKTsKKytERUNM QVJFX0FFU19FVlAoMjU2LG9mYixPRkIpOworKworK3N0YXRpYyBpbnQKKythZXNuaV9jaXBoZXJz IChFTkdJTkUgKmUsIGNvbnN0IEVWUF9DSVBIRVIgKipjaXBoZXIsCisrCQkgICAgICBjb25zdCBp bnQgKipuaWRzLCBpbnQgbmlkKQorK3sKKysJLyogTm8gc3BlY2lmaWMgY2lwaGVyID0+IHJldHVy biBhIGxpc3Qgb2Ygc3VwcG9ydGVkIG5pZHMgLi4uICovCisrCWlmICghY2lwaGVyKSB7CisrCQkq bmlkcyA9IGFlc25pX2NpcGhlcl9uaWRzOworKwkJcmV0dXJuIGFlc25pX2NpcGhlcl9uaWRzX251 bTsKKysJfQorKworKwkvKiAuLi4gb3IgdGhlIHJlcXVlc3RlZCAiY2lwaGVyIiBvdGhlcndpc2Ug Ki8KKysJc3dpdGNoIChuaWQpIHsKKysJY2FzZSBOSURfYWVzXzEyOF9lY2I6CisrCQkqY2lwaGVy ID0gJmFlc25pXzEyOF9lY2I7CisrCQlicmVhazsKKysJY2FzZSBOSURfYWVzXzEyOF9jYmM6Cisr CQkqY2lwaGVyID0gJmFlc25pXzEyOF9jYmM7CisrCQlicmVhazsKKysJY2FzZSBOSURfYWVzXzEy OF9jZmI6CisrCQkqY2lwaGVyID0gJmFlc25pXzEyOF9jZmI7CisrCQlicmVhazsKKysJY2FzZSBO SURfYWVzXzEyOF9vZmI6CisrCQkqY2lwaGVyID0gJmFlc25pXzEyOF9vZmI7CisrCQlicmVhazsK KysKKysJY2FzZSBOSURfYWVzXzE5Ml9lY2I6CisrCQkqY2lwaGVyID0gJmFlc25pXzE5Ml9lY2I7 CisrCQlicmVhazsKKysJY2FzZSBOSURfYWVzXzE5Ml9jYmM6CisrCQkqY2lwaGVyID0gJmFlc25p XzE5Ml9jYmM7CisrCQlicmVhazsKKysJY2FzZSBOSURfYWVzXzE5Ml9jZmI6CisrCQkqY2lwaGVy ID0gJmFlc25pXzE5Ml9jZmI7CisrCQlicmVhazsKKysJY2FzZSBOSURfYWVzXzE5Ml9vZmI6Cisr CQkqY2lwaGVyID0gJmFlc25pXzE5Ml9vZmI7CisrCQlicmVhazsKKysKKysJY2FzZSBOSURfYWVz XzI1Nl9lY2I6CisrCQkqY2lwaGVyID0gJmFlc25pXzI1Nl9lY2I7CisrCQlicmVhazsKKysJY2Fz ZSBOSURfYWVzXzI1Nl9jYmM6CisrCQkqY2lwaGVyID0gJmFlc25pXzI1Nl9jYmM7CisrCQlicmVh azsKKysJY2FzZSBOSURfYWVzXzI1Nl9jZmI6CisrCQkqY2lwaGVyID0gJmFlc25pXzI1Nl9jZmI7 CisrCQlicmVhazsKKysJY2FzZSBOSURfYWVzXzI1Nl9vZmI6CisrCQkqY2lwaGVyID0gJmFlc25p XzI1Nl9vZmI7CisrCQlicmVhazsKKysKKysJZGVmYXVsdDoKKysJCS8qIFNvcnJ5LCB3ZSBkb24n dCBzdXBwb3J0IHRoaXMgTklEICovCisrCQkqY2lwaGVyID0gTlVMTDsKKysJCXJldHVybiAwOwor Kwl9CisrCisrCXJldHVybiAxOworK30KKysKKysjZW5kaWYgLyogQ09NUElMRV9IV19BRVNOSSAq LworKyNlbmRpZiAvKiAhZGVmaW5lZChPUEVOU1NMX05PX0hXKSAmJiAhZGVmaW5lZChPUEVOU1NM X05PX0hXX0FFU05JKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0FFUykgKi8KK2RpZmYgLXVwIG9w ZW5zc2wtMS4wLjBiL2NyeXB0by9lbmdpbmUvZW5nX2FsbC5jLmFlc25pIG9wZW5zc2wtMS4wLjBi L2NyeXB0by9lbmdpbmUvZW5nX2FsbC5jCistLS0gb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2VuZ2lu ZS9lbmdfYWxsLmMuYWVzbmkJMjAxMC0xMS0xNiAxNzozMzoyMi4wMDAwMDAwMDAgKzAxMDAKKysr KyBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZW5naW5lL2VuZ19hbGwuYwkyMDEwLTExLTE2IDE3OjMz OjIzLjAwMDAwMDAwMCArMDEwMAorQEAgLTg1LDYgKzg1LDkgQEAgdm9pZCBFTkdJTkVfbG9hZF9i dWlsdGluX2VuZ2luZXModm9pZCkKKyAjaWYgIWRlZmluZWQoT1BFTlNTTF9OT19IVykgJiYgKGRl ZmluZWQoX19PcGVuQlNEX18pIHx8IGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoSEFW RV9DUllQVE9ERVYpKQorIAlFTkdJTkVfbG9hZF9jcnlwdG9kZXYoKTsKKyAjZW5kaWYKKysjaWYg IWRlZmluZWQoT1BFTlNTTF9OT19IVykgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19IV19BRVNOSSkK KysJRU5HSU5FX2xvYWRfYWVzbmkoKTsKKysjZW5kaWYKKyAJRU5HSU5FX2xvYWRfZHluYW1pYygp OworICNpZm5kZWYgT1BFTlNTTF9OT19TVEFUSUNfRU5HSU5FCisgI2lmbmRlZiBPUEVOU1NMX05P X0hXCitkaWZmIC11cCBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZW5naW5lL2VuZ2luZS5oLmFlc25p IG9wZW5zc2wtMS4wLjBiL2NyeXB0by9lbmdpbmUvZW5naW5lLmgKKy0tLSBvcGVuc3NsLTEuMC4w Yi9jcnlwdG8vZW5naW5lL2VuZ2luZS5oLmFlc25pCTIwMTAtMTEtMTYgMTc6MzM6MjIuMDAwMDAw MDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2VuZ2luZS9lbmdpbmUuaAkyMDEw LTExLTE2IDE3OjMzOjIzLjAwMDAwMDAwMCArMDEwMAorQEAgLTMzOCw2ICszMzgsNyBAQCB2b2lk IEVOR0lORV9sb2FkX2dvc3Qodm9pZCk7CisgI2VuZGlmCisgI2VuZGlmCisgdm9pZCBFTkdJTkVf bG9hZF9jcnlwdG9kZXYodm9pZCk7Cisrdm9pZCBFTkdJTkVfbG9hZF9hZXNuaSh2b2lkKTsKKyB2 b2lkIEVOR0lORV9sb2FkX2J1aWx0aW5fZW5naW5lcyh2b2lkKTsKKyAKKyAvKiBHZXQgYW5kIHNl dCBnbG9iYWwgZmxhZ3MgKEVOR0lORV9UQUJMRV9GTEFHXyoqKikgZm9yIHRoZSBpbXBsZW1lbnRh dGlvbgorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2VuZ2luZS9NYWtlZmlsZS5hZXNu aSBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vZW5naW5lL01ha2VmaWxlCistLS0gb3BlbnNzbC0xLjAu MGIvY3J5cHRvL2VuZ2luZS9NYWtlZmlsZS5hZXNuaQkyMDEwLTExLTE1IDE1OjQ0OjQ5LjAwMDAw MDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9lbmdpbmUvTWFrZWZpbGUJMjAx MC0xMS0xNiAxNzozMzoyMy4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMSwxMiArMjEsMTQgQEAgTElC U1JDPSBlbmdfZXJyLmMgZW5nX2xpYi5jIGVuZ19saXN0LmMgZQorIAllbmdfdGFibGUuYyBlbmdf cGtleS5jIGVuZ19mYXQuYyBlbmdfYWxsLmMgXAorIAl0Yl9yc2EuYyB0Yl9kc2EuYyB0Yl9lY2Rz YS5jIHRiX2RoLmMgdGJfZWNkaC5jIHRiX3JhbmQuYyB0Yl9zdG9yZS5jIFwKKyAJdGJfY2lwaGVy LmMgdGJfZGlnZXN0LmMgdGJfcGttZXRoLmMgdGJfYXNubXRoLmMgXAorLQllbmdfb3BlbnNzbC5j IGVuZ19jbmYuYyBlbmdfZHluLmMgZW5nX2NyeXB0b2Rldi5jCisrCWVuZ19vcGVuc3NsLmMgZW5n X2NuZi5jIGVuZ19keW4uYyBlbmdfY3J5cHRvZGV2LmMgXAorKwllbmdfYWVzbmkuYworIExJQk9C Sj0gZW5nX2Vyci5vIGVuZ19saWIubyBlbmdfbGlzdC5vIGVuZ19pbml0Lm8gZW5nX2N0cmwubyBc CisgCWVuZ190YWJsZS5vIGVuZ19wa2V5Lm8gZW5nX2ZhdC5vIGVuZ19hbGwubyBcCisgCXRiX3Jz YS5vIHRiX2RzYS5vIHRiX2VjZHNhLm8gdGJfZGgubyB0Yl9lY2RoLm8gdGJfcmFuZC5vIHRiX3N0 b3JlLm8gXAorIAl0Yl9jaXBoZXIubyB0Yl9kaWdlc3QubyB0Yl9wa21ldGgubyB0Yl9hc25tdGgu byBcCistCWVuZ19vcGVuc3NsLm8gZW5nX2NuZi5vIGVuZ19keW4ubyBlbmdfY3J5cHRvZGV2Lm8K KysJZW5nX29wZW5zc2wubyBlbmdfY25mLm8gZW5nX2R5bi5vIGVuZ19jcnlwdG9kZXYubyBcCisr CWVuZ19hZXNuaS5vCisgCisgU1JDPSAkKExJQlNSQykKKyAKK2RpZmYgLXVwIG9wZW5zc2wtMS4w LjBiL2NyeXB0by9ldnAvZXZwX2Vyci5jLmFlc25pIG9wZW5zc2wtMS4wLjBiL2NyeXB0by9ldnAv ZXZwX2Vyci5jCistLS0gb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2V2cC9ldnBfZXJyLmMuYWVzbmkJ MjAxMC0xMS0xNiAxNzozMzoyMi4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4wYi9j cnlwdG8vZXZwL2V2cF9lcnIuYwkyMDEwLTExLTE2IDE3OjMzOjIzLjAwMDAwMDAwMCArMDEwMAor QEAgLTEsNiArMSw2IEBACisgLyogY3J5cHRvL2V2cC9ldnBfZXJyLmMgKi8KKyAvKiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLSAqIENvcHlyaWdodCAoYykgMTk5OS0yMDA4IFRoZSBPcGVuU1NMIFByb2plY3QuICBB bGwgcmlnaHRzIHJlc2VydmVkLgorKyAqIENvcHlyaWdodCAoYykgMTk5OS0yMDA5IFRoZSBPcGVu U1NMIFByb2plY3QuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAqCisgICogUmVkaXN0cmlidXRp b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zCitAQCAtNzAsNiArNzAsNyBAQAorIAorIHN0YXRpYyBFUlJfU1RSSU5HX0RB VEEgRVZQX3N0cl9mdW5jdHNbXT0KKyAJeworK3tFUlJfRlVOQyhFVlBfRl9BRVNOSV9JTklUX0tF WSksCSJBRVNOSV9JTklUX0tFWSJ9LAorIHtFUlJfRlVOQyhFVlBfRl9BRVNfSU5JVF9LRVkpLAki QUVTX0lOSVRfS0VZIn0sCisge0VSUl9GVU5DKEVWUF9GX0NBTUVMTElBX0lOSVRfS0VZKSwJIkNB TUVMTElBX0lOSVRfS0VZIn0sCisge0VSUl9GVU5DKEVWUF9GX0QySV9QS0VZKSwJIkQySV9QS0VZ In0sCitAQCAtODYsNyArODcsNyBAQCBzdGF0aWMgRVJSX1NUUklOR19EQVRBIEVWUF9zdHJfZnVu Y3RzW109Cisge0VSUl9GVU5DKEVWUF9GX0VWUF9ESUdFU1RJTklUX0VYKSwJIkVWUF9EaWdlc3RJ bml0X2V4In0sCisge0VSUl9GVU5DKEVWUF9GX0VWUF9FTkNSWVBURklOQUxfRVgpLAkiRVZQX0Vu Y3J5cHRGaW5hbF9leCJ9LAorIHtFUlJfRlVOQyhFVlBfRl9FVlBfTURfQ1RYX0NPUFlfRVgpLAki RVZQX01EX0NUWF9jb3B5X2V4In0sCiste0VSUl9GVU5DKEVWUF9GX0VWUF9NRF9TSVpFKSwJIkVW UF9NRF9TSVpFIn0sCisre0VSUl9GVU5DKEVWUF9GX0VWUF9NRF9TSVpFKSwJIkVWUF9NRF9zaXpl In0sCisge0VSUl9GVU5DKEVWUF9GX0VWUF9PUEVOSU5JVCksCSJFVlBfT3BlbkluaXQifSwKKyB7 RVJSX0ZVTkMoRVZQX0ZfRVZQX1BCRV9BTEdfQUREKSwJIkVWUF9QQkVfYWxnX2FkZCJ9LAorIHtF UlJfRlVOQyhFVlBfRl9FVlBfUEJFX0FMR19BRERfVFlQRSksCSJFVlBfUEJFX2FsZ19hZGRfdHlw ZSJ9LAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2V2cC9ldnAuaC5hZXNuaSBvcGVu c3NsLTEuMC4wYi9jcnlwdG8vZXZwL2V2cC5oCistLS0gb3BlbnNzbC0xLjAuMGIvY3J5cHRvL2V2 cC9ldnAuaC5hZXNuaQkyMDEwLTExLTE2IDE3OjMzOjIyLjAwMDAwMDAwMCArMDEwMAorKysrIG9w ZW5zc2wtMS4wLjBiL2NyeXB0by9ldnAvZXZwLmgJMjAxMC0xMS0xNiAxNzozMzoyMy4wMDAwMDAw MDAgKzAxMDAKK0BAIC0xMTY3LDYgKzExNjcsNyBAQCB2b2lkIEVSUl9sb2FkX0VWUF9zdHJpbmdz KHZvaWQpOworIC8qIEVycm9yIGNvZGVzIGZvciB0aGUgRVZQIGZ1bmN0aW9ucy4gKi8KKyAKKyAv KiBGdW5jdGlvbiBjb2Rlcy4gKi8KKysjZGVmaW5lIEVWUF9GX0FFU05JX0lOSVRfS0VZCQkJCSAx NjMKKyAjZGVmaW5lIEVWUF9GX0FFU19JTklUX0tFWQkJCQkgMTMzCisgI2RlZmluZSBFVlBfRl9D QU1FTExJQV9JTklUX0tFWQkJCQkgMTU5CisgI2RlZmluZSBFVlBfRl9EMklfUEtFWQkJCQkJIDEw MAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvdGVzdC90ZXN0X2Flc25pLmFlc25pIG9wZW5zc2wt MS4wLjBiL3Rlc3QvdGVzdF9hZXNuaQorLS0tIG9wZW5zc2wtMS4wLjBiL3Rlc3QvdGVzdF9hZXNu aS5hZXNuaQkyMDEwLTExLTE2IDE3OjMzOjIzLjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wt MS4wLjBiL3Rlc3QvdGVzdF9hZXNuaQkyMDEwLTExLTE2IDE3OjMzOjIzLjAwMDAwMDAwMCArMDEw MAorQEAgLTAsMCArMSw2OSBAQAorKyMhL2Jpbi9zaAorKworK1BST0c9JDEKKysKKytpZiBbIC14 ICRQUk9HIF07IHRoZW4KKysgICAgaWYgZXhwciAieGAkUFJPRyB2ZXJzaW9uYCIgOiAieE9wZW5T U0wiID4gL2Rldi9udWxsOyB0aGVuCisrCToKKysgICAgZWxzZQorKwllY2hvICIkUFJPRyBpcyBu b3QgT3BlblNTTCBleGVjdXRhYmxlIgorKwlleGl0IDEKKysgICAgZmkKKytlbHNlCisrICAgIGVj aG8gIiRQUk9HIGlzIG5vdCBleGVjdXRhYmxlIgorKyAgICBleGl0IDE7CisrZmkKKysKKytpZiAk UFJPRyBlbmdpbmUgYWVzbmkgfCBncmVwIC12IG5vLWFlc25pOyB0aGVuCisrCisrICAgIEhBU0g9 YGNhdCAkUFJPRyB8ICRQUk9HIGRnc3QgLWhleGAKKysKKysgICAgQUVTX0FMR1M9IglhZXMtMTI4 LWVjYiBhZXMtMTkyLWVjYiBhZXMtMjU2LWVjYiBcCisrCQlhZXMtMTI4LWNiYyBhZXMtMTkyLWNi YyBhZXMtMjU2LWNiYyBcCisrCQlhZXMtMTI4LWNmYiBhZXMtMTkyLWNmYiBhZXMtMjU2LWNmYiBc CisrCQlhZXMtMTI4LW9mYiBhZXMtMTkyLW9mYiBhZXMtMjU2LW9mYiIKKysgICAgQlVGU0laRT0i MTYgMzIgNDggNjQgODAgOTYgMTI4IDE0NCA5OTkiCisrCisrICAgIG5lcnI9MAorKworKyAgICBm b3IgYWxnIGluICRBRVNfQUxHUzsgZG8KKysJZWNobyAkYWxnCisrCWZvciBidWZzaXplIGluICRC VUZTSVpFOyBkbworKwkgICAgVEVTVD1gKAljYXQgJFBST0cgfCBcCisrCQkkUFJPRyBlbmMgLWUg LWsgIiRIQVNIIiAtJGFsZyAtYnVmc2l6ZSAkYnVmc2l6ZSAtZW5naW5lIGFlc25pIHwgXAorKwkJ JFBST0cgZW5jIC1kIC1rICIkSEFTSCIgLSRhbGcgfCBcCisrCQkkUFJPRyBkZ3N0IC1oZXggKSAy Pi9kZXYvbnVsbGAKKysJICAgIGlmIFsgIiRURVNUIiAhPSAiJEhBU0giIF07IHRoZW4KKysJCWVj aG8gIi0kYWxnLyRidWZzaXplIGVuY3J5cHQgdGVzdCBmYWlsZWQiCisrCQluZXJyPWBleHByICRu ZXJyICsgMWAKKysJICAgIGZpCisrCWRvbmUKKysJZm9yIGJ1ZnNpemUgaW4gJEJVRlNJWkU7IGRv IAorKwkgICAgVEVTVD1gKAljYXQgJFBST0cgfCBcCisrCQkkUFJPRyBlbmMgLWUgLWsgIiRIQVNI IiAtJGFsZyB8IFwKKysJCSRQUk9HIGVuYyAtZCAtayAiJEhBU0giIC0kYWxnIC1idWZzaXplICRi dWZzaXplIC1lbmdpbmUgYWVzbmkgfCBcCisrCQkkUFJPRyBkZ3N0IC1oZXggKSAyPi9kZXYvbnVs bGAKKysJICAgIGlmIFsgIiRURVNUIiAhPSAiJEhBU0giIF07IHRoZW4KKysJCWVjaG8gIi0kYWxn LyRidWZzaXplIGRlY3J5cHQgdGVzdCBmYWlsZWQiCisrCQluZXJyPWBleHByICRuZXJyICsgMWAK KysJICAgIGZpCisrCWRvbmUKKysJVEVTVD1gKAljYXQgJFBST0cgfCBcCisrCQkkUFJPRyBlbmMg LWUgLWsgIiRIQVNIIiAtJGFsZyAtZW5naW5lIGFlc25pIHwgXAorKwkJJFBST0cgZW5jIC1kIC1r ICIkSEFTSCIgLSRhbGcgLWVuZ2luZSBhZXNuaSB8IFwKKysJCSRQUk9HIGRnc3QgLWhleCApIDI+ L2Rldi9udWxsYAorKwlpZiBbICIkVEVTVCIgIT0gIiRIQVNIIiBdOyB0aGVuCisrCQllY2hvICIt JGFsZyBlbi9kZWNyeXB0IHRlc3QgZmFpbGVkIgorKwkJbmVycj1gZXhwciAkbmVyciArIDFgCisr CWZpCisrICAgIGRvbmUKKysKKysgICAgaWYgWyAkbmVyciAtZ3QgMCBdOyB0aGVuCisrCWVjaG8g IkFFU05JIGVuZ2luZSB0ZXN0IGZhaWxlZC4iCisrCWV4aXQgMTsKKysgICAgZmkKKytlbHNlCisr ICAgIGVjaG8gIkFFU05JIGVuZ2luZSBpcyBub3QgYXZhaWxhYmxlIgorK2ZpCisrCisrZXhpdCAw CgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMGItaXB2Ni1hcHBzLnBhdGNoIGIvb3BlbnNzbC0x LjAuMGItaXB2Ni1hcHBzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmI4NWE1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMC4wYi1pcHY2LWFwcHMucGF0 Y2gKQEAgLTAsMCArMSw0OTYgQEAKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjBiL2FwcHMvc19hcHBz LmguaXB2Ni1hcHBzIG9wZW5zc2wtMS4wLjBiL2FwcHMvc19hcHBzLmgKKy0tLSBvcGVuc3NsLTEu MC4wYi9hcHBzL3NfYXBwcy5oLmlwdjYtYXBwcwkyMDEwLTExLTE2IDE3OjE5OjI5LjAwMDAwMDAw MCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjBiL2FwcHMvc19hcHBzLmgJMjAxMC0xMS0xNiAxNzox OToyOS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNDgsNyArMTQ4LDcgQEAgdHlwZWRlZiBmZF9tYXNr IGZkX3NldDsKKyAjZGVmaW5lIFBPUlRfU1RSICAgICAgICAiNDQzMyIKKyAjZGVmaW5lIFBST1RP Q09MICAgICAgICAidGNwIgorIAorLWludCBkb19zZXJ2ZXIoaW50IHBvcnQsIGludCB0eXBlLCBp bnQgKnJldCwgaW50ICgqY2IpIChjaGFyICpob3N0bmFtZSwgaW50IHMsIHVuc2lnbmVkIGNoYXIg KmNvbnRleHQpLCB1bnNpZ25lZCBjaGFyICpjb250ZXh0KTsKKytpbnQgZG9fc2VydmVyKGNoYXIg KnBvcnQsIGludCB0eXBlLCBpbnQgKnJldCwgaW50ICgqY2IpIChjaGFyICpob3N0bmFtZSwgaW50 IHMsIHVuc2lnbmVkIGNoYXIgKmNvbnRleHQpLCB1bnNpZ25lZCBjaGFyICpjb250ZXh0KTsKKyAj aWZkZWYgSEVBREVSX1g1MDlfSAorIGludCBNU19DQUxMQkFDSyB2ZXJpZnlfY2FsbGJhY2soaW50 IG9rLCBYNTA5X1NUT1JFX0NUWCAqY3R4KTsKKyAjZW5kaWYKK0BAIC0xNTYsMTAgKzE1Niw5IEBA IGludCBNU19DQUxMQkFDSyB2ZXJpZnlfY2FsbGJhY2soaW50IG9rLCAKKyBpbnQgc2V0X2NlcnRf c3R1ZmYoU1NMX0NUWCAqY3R4LCBjaGFyICpjZXJ0X2ZpbGUsIGNoYXIgKmtleV9maWxlKTsKKyBp bnQgc2V0X2NlcnRfa2V5X3N0dWZmKFNTTF9DVFggKmN0eCwgWDUwOSAqY2VydCwgRVZQX1BLRVkg KmtleSk7CisgI2VuZGlmCistaW50IGluaXRfY2xpZW50KGludCAqc29jaywgY2hhciAqc2VydmVy LCBpbnQgcG9ydCwgaW50IHR5cGUpOworK2ludCBpbml0X2NsaWVudChpbnQgKnNvY2ssIGNoYXIg KnNlcnZlciwgY2hhciAqcG9ydCwgaW50IHR5cGUpOworIGludCBzaG91bGRfcmV0cnkoaW50IGkp OworLWludCBleHRyYWN0X3BvcnQoY2hhciAqc3RyLCBzaG9ydCAqcG9ydF9wdHIpOworLWludCBl eHRyYWN0X2hvc3RfcG9ydChjaGFyICpzdHIsY2hhciAqKmhvc3RfcHRyLHVuc2lnbmVkIGNoYXIg KmlwLHNob3J0ICpwKTsKKytpbnQgZXh0cmFjdF9ob3N0X3BvcnQoY2hhciAqc3RyLGNoYXIgKipo b3N0X3B0cixjaGFyICoqcG9ydF9wdHIpOworIAorIGxvbmcgTVNfQ0FMTEJBQ0sgYmlvX2R1bXBf Y2FsbGJhY2soQklPICpiaW8sIGludCBjbWQsIGNvbnN0IGNoYXIgKmFyZ3AsCisgCQkJCSAgIGlu dCBhcmdpLCBsb25nIGFyZ2wsIGxvbmcgcmV0KTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjBiL2Fw cHMvc19jbGllbnQuYy5pcHY2LWFwcHMgb3BlbnNzbC0xLjAuMGIvYXBwcy9zX2NsaWVudC5jCist LS0gb3BlbnNzbC0xLjAuMGIvYXBwcy9zX2NsaWVudC5jLmlwdjYtYXBwcwkyMDEwLTExLTE2IDE3 OjE5OjI5LjAwMDAwMDAwMCArMDEwMAorKysrIG9wZW5zc2wtMS4wLjBiL2FwcHMvc19jbGllbnQu YwkyMDEwLTExLTE2IDE3OjE5OjI5LjAwMDAwMDAwMCArMDEwMAorQEAgLTM4OSw3ICszODksNyBA QCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCWludCBjYnVmX2xlbixjYnVmX29m ZjsKKyAJaW50IHNidWZfbGVuLHNidWZfb2ZmOworIAlmZF9zZXQgcmVhZGZkcyx3cml0ZWZkczsK Ky0Jc2hvcnQgcG9ydD1QT1JUOworKwljaGFyICpwb3J0X3N0ciA9IFBPUlRfU1RSOworIAlpbnQg ZnVsbF9sb2c9MTsKKyAJY2hhciAqaG9zdD1TU0xfSE9TVF9OQU1FOworIAljaGFyICpjZXJ0X2Zp bGU9TlVMTCwqa2V5X2ZpbGU9TlVMTDsKK0BAIC00ODgsMTMgKzQ4OCwxMiBAQCBpbnQgTUFJTihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQllbHNlIGlmCShzdHJjbXAoKmFyZ3YsIi1wb3J0Iikg PT0gMCkKKyAJCQl7CisgCQkJaWYgKC0tYXJnYyA8IDEpIGdvdG8gYmFkOworLQkJCXBvcnQ9YXRv aSgqKCsrYXJndikpOworLQkJCWlmIChwb3J0ID09IDApIGdvdG8gYmFkOworKwkJCXBvcnRfc3Ry PSAqKCsrYXJndik7CisgCQkJfQorIAkJZWxzZSBpZiAoc3RyY21wKCphcmd2LCItY29ubmVjdCIp ID09IDApCisgCQkJeworIAkJCWlmICgtLWFyZ2MgPCAxKSBnb3RvIGJhZDsKKy0JCQlpZiAoIWV4 dHJhY3RfaG9zdF9wb3J0KCooKythcmd2KSwmaG9zdCxOVUxMLCZwb3J0KSkKKysJCQlpZiAoIWV4 dHJhY3RfaG9zdF9wb3J0KCooKythcmd2KSwmaG9zdCwmcG9ydF9zdHIpKQorIAkJCQlnb3RvIGJh ZDsKKyAJCQl9CisgCQllbHNlIGlmCShzdHJjbXAoKmFyZ3YsIi12ZXJpZnkiKSA9PSAwKQorQEAg LTk2Nyw3ICs5NjYsNyBAQCBiYWQ6CisgCisgcmVfc3RhcnQ6CisgCistCWlmIChpbml0X2NsaWVu dCgmcyxob3N0LHBvcnQsc29ja2V0X3R5cGUpID09IDApCisrCWlmIChpbml0X2NsaWVudCgmcyxo b3N0LHBvcnRfc3RyLHNvY2tldF90eXBlKSA9PSAwKQorIAkJeworIAkJQklPX3ByaW50ZihiaW9f ZXJyLCJjb25uZWN0OmVycm5vPSVkXG4iLGdldF9sYXN0X3NvY2tldF9lcnJvcigpKTsKKyAJCVNI VVRET1dOKHMpOworZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvYXBwcy9zX3NlcnZlci5jLmlwdjYt YXBwcyBvcGVuc3NsLTEuMC4wYi9hcHBzL3Nfc2VydmVyLmMKKy0tLSBvcGVuc3NsLTEuMC4wYi9h cHBzL3Nfc2VydmVyLmMuaXB2Ni1hcHBzCTIwMTAtMTEtMTYgMTc6MTk6MjkuMDAwMDAwMDAwICsw MTAwCisrKysgb3BlbnNzbC0xLjAuMGIvYXBwcy9zX3NlcnZlci5jCTIwMTAtMTEtMTYgMTc6MTk6 MjkuMDAwMDAwMDAwICswMTAwCitAQCAtODM4LDcgKzgzOCw3IEBAIGludCBNQUlOKGludCBhcmdj LCBjaGFyICphcmd2W10pCisgCXsKKyAJWDUwOV9WRVJJRllfUEFSQU0gKnZwbSA9IE5VTEw7Cisg CWludCBiYWRhcmcgPSAwOworLQlzaG9ydCBwb3J0PVBPUlQ7CisrCWNoYXIgKnBvcnRfc3RyID0g UE9SVF9TVFI7CisgCWNoYXIgKkNBcGF0aD1OVUxMLCpDQWZpbGU9TlVMTDsKKyAJdW5zaWduZWQg Y2hhciAqY29udGV4dCA9IE5VTEw7CisgCWNoYXIgKmRoZmlsZSA9IE5VTEw7CitAQCAtOTA5LDgg KzkwOSw3IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCQkJIChzdHJjbXAo KmFyZ3YsIi1hY2NlcHQiKSA9PSAwKSkKKyAJCQl7CisgCQkJaWYgKC0tYXJnYyA8IDEpIGdvdG8g YmFkOworLQkJCWlmICghZXh0cmFjdF9wb3J0KCooKythcmd2KSwmcG9ydCkpCistCQkJCWdvdG8g YmFkOworKwkJCXBvcnRfc3RyPSAqKCsrYXJndik7CisgCQkJfQorIAkJZWxzZSBpZgkoc3RyY21w KCphcmd2LCItdmVyaWZ5IikgPT0gMCkKKyAJCQl7CitAQCAtMTcwMCw5ICsxNjk5LDkgQEAgYmFk OgorIAlCSU9fcHJpbnRmKGJpb19zX291dCwiQUNDRVBUXG4iKTsKKyAJKHZvaWQpQklPX2ZsdXNo KGJpb19zX291dCk7CisgCWlmICh3d3cpCistCQlkb19zZXJ2ZXIocG9ydCxzb2NrZXRfdHlwZSwm YWNjZXB0X3NvY2tldCx3d3dfYm9keSwgY29udGV4dCk7CisrCQlkb19zZXJ2ZXIocG9ydF9zdHIs c29ja2V0X3R5cGUsJmFjY2VwdF9zb2NrZXQsd3d3X2JvZHksIGNvbnRleHQpOworIAllbHNlCist CQlkb19zZXJ2ZXIocG9ydCxzb2NrZXRfdHlwZSwmYWNjZXB0X3NvY2tldCxzdl9ib2R5LCBjb250 ZXh0KTsKKysJCWRvX3NlcnZlcihwb3J0X3N0cixzb2NrZXRfdHlwZSwmYWNjZXB0X3NvY2tldCxz dl9ib2R5LCBjb250ZXh0KTsKKyAJcHJpbnRfc3RhdHMoYmlvX3Nfb3V0LGN0eCk7CisgCXJldD0w OworIGVuZDoKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjBiL2FwcHMvc19zb2NrZXQuYy5pcHY2LWFw cHMgb3BlbnNzbC0xLjAuMGIvYXBwcy9zX3NvY2tldC5jCistLS0gb3BlbnNzbC0xLjAuMGIvYXBw cy9zX3NvY2tldC5jLmlwdjYtYXBwcwkyMDEwLTA3LTA1IDEzOjAzOjIyLjAwMDAwMDAwMCArMDIw MAorKysrIG9wZW5zc2wtMS4wLjBiL2FwcHMvc19zb2NrZXQuYwkyMDEwLTExLTE2IDE3OjI3OjE4 LjAwMDAwMDAwMCArMDEwMAorQEAgLTEwMiw5ICsxMDIsNyBAQCBzdGF0aWMgc3RydWN0IGhvc3Rl bnQgKkdldEhvc3RCeU5hbWUoY2hhCisgc3RhdGljIHZvaWQgc3NsX3NvY2tfY2xlYW51cCh2b2lk KTsKKyAjZW5kaWYKKyBzdGF0aWMgaW50IHNzbF9zb2NrX2luaXQodm9pZCk7Cistc3RhdGljIGlu dCBpbml0X2NsaWVudF9pcChpbnQgKnNvY2ssdW5zaWduZWQgY2hhciBpcFs0XSwgaW50IHBvcnQs IGludCB0eXBlKTsKKy1zdGF0aWMgaW50IGluaXRfc2VydmVyKGludCAqc29jaywgaW50IHBvcnQs IGludCB0eXBlKTsKKy1zdGF0aWMgaW50IGluaXRfc2VydmVyX2xvbmcoaW50ICpzb2NrLCBpbnQg cG9ydCxjaGFyICppcCwgaW50IHR5cGUpOworK3N0YXRpYyBpbnQgaW5pdF9zZXJ2ZXIoaW50ICpz b2NrLCBjaGFyICpwb3J0LCBpbnQgdHlwZSk7Cisgc3RhdGljIGludCBkb19hY2NlcHQoaW50IGFj Y19zb2NrLCBpbnQgKnNvY2ssIGNoYXIgKipob3N0KTsKKyBzdGF0aWMgaW50IGhvc3RfaXAoY2hh ciAqc3RyLCB1bnNpZ25lZCBjaGFyIGlwWzRdKTsKKyAKK0BAIC0yMzQsNTggKzIzMiw3MCBAQCBz dGF0aWMgaW50IHNzbF9zb2NrX2luaXQodm9pZCkKKyAJcmV0dXJuKDEpOworIAl9CisgCistaW50 IGluaXRfY2xpZW50KGludCAqc29jaywgY2hhciAqaG9zdCwgaW50IHBvcnQsIGludCB0eXBlKQor K2ludCBpbml0X2NsaWVudChpbnQgKnNvY2ssIGNoYXIgKmhvc3QsIGNoYXIgKnBvcnQsIGludCB0 eXBlKQorIAl7CistCXVuc2lnbmVkIGNoYXIgaXBbNF07CistCistCWlmICghaG9zdF9pcChob3N0 LCYoaXBbMF0pKSkKKy0JCXsKKy0JCXJldHVybigwKTsKKy0JCX0KKy0JcmV0dXJuKGluaXRfY2xp ZW50X2lwKHNvY2ssaXAscG9ydCx0eXBlKSk7CistCX0KKy0KKy1zdGF0aWMgaW50IGluaXRfY2xp ZW50X2lwKGludCAqc29jaywgdW5zaWduZWQgY2hhciBpcFs0XSwgaW50IHBvcnQsIGludCB0eXBl KQorLQl7CistCXVuc2lnbmVkIGxvbmcgYWRkcjsKKy0Jc3RydWN0IHNvY2thZGRyX2luIHRoZW07 CistCWludCBzLGk7CisrCXN0cnVjdCBhZGRyaW5mbyAqcmVzLCAqcmVzMCwgaGludHM7CisrCWNo YXIgKiBmYWlsZWRfY2FsbCA9IE5VTEw7CisrCWludCBzOworKwlpbnQgZTsKKyAKKyAJaWYgKCFz c2xfc29ja19pbml0KCkpIHJldHVybigwKTsKKyAKKy0JbWVtc2V0KChjaGFyICopJnRoZW0sMCxz aXplb2YodGhlbSkpOworLQl0aGVtLnNpbl9mYW1pbHk9QUZfSU5FVDsKKy0JdGhlbS5zaW5fcG9y dD1odG9ucygodW5zaWduZWQgc2hvcnQpcG9ydCk7CistCWFkZHI9KHVuc2lnbmVkIGxvbmcpCist CQkoKHVuc2lnbmVkIGxvbmcpaXBbMF08PDI0TCl8CistCQkoKHVuc2lnbmVkIGxvbmcpaXBbMV08 PDE2TCl8CistCQkoKHVuc2lnbmVkIGxvbmcpaXBbMl08PCA4TCl8CistCQkoKHVuc2lnbmVkIGxv bmcpaXBbM10pOworLQl0aGVtLnNpbl9hZGRyLnNfYWRkcj1odG9ubChhZGRyKTsKKy0KKy0JaWYg KHR5cGUgPT0gU09DS19TVFJFQU0pCistCQlzPXNvY2tldChBRl9JTkVULFNPQ0tfU1RSRUFNLFNP Q0tFVF9QUk9UT0NPTCk7CistCWVsc2UgLyogKCB0eXBlID09IFNPQ0tfREdSQU0pICovCistCQlz PXNvY2tldChBRl9JTkVULFNPQ0tfREdSQU0sSVBQUk9UT19VRFApOworLQkJCQorLQlpZiAocyA9 PSBJTlZBTElEX1NPQ0tFVCkgeyBwZXJyb3IoInNvY2tldCIpOyByZXR1cm4oMCk7IH0KKysJbWVt c2V0KCZoaW50cywgJ1wwJywgc2l6ZW9mKGhpbnRzKSk7CisrCWhpbnRzLmFpX3NvY2t0eXBlID0g dHlwZTsKKysJaGludHMuYWlfZmxhZ3MgPSBBSV9BRERSQ09ORklHOworKworKwllID0gZ2V0YWRk cmluZm8oaG9zdCwgcG9ydCwgJmhpbnRzLCAmcmVzKTsKKysJaWYgKGUpCisrCXsKKysJCWZwcmlu dGYoc3RkZXJyLCAiZ2V0YWRkcmluZm86ICVzXG4iLCBnYWlfc3RyZXJyb3IoZSkpOworKwkJaWYg KGUgPT0gRUFJX1NZU1RFTSkKKysJCQlwZXJyb3IoImdldGFkZHJpbmZvIik7CisrCQlyZXR1cm4g KDApOworKwkJfQorIAorKwlyZXMwID0gcmVzOworKwl3aGlsZSAocmVzKQorKwkJeworKwkJcyA9 IHNvY2tldChyZXMtPmFpX2ZhbWlseSwgcmVzLT5haV9zb2NrdHlwZSwgcmVzLT5haV9wcm90b2Nv bCk7CisrCQlpZiAocyA9PSBJTlZBTElEX1NPQ0tFVCkKKysJCQl7CisrCQkJZmFpbGVkX2NhbGwg PSAic29ja2V0IjsKKysJCQlnb3RvIG5leHRyZXM7CisrCQkJfQorICNpZiBkZWZpbmVkKFNPX0tF RVBBTElWRSkgJiYgIWRlZmluZWQoT1BFTlNTTF9TWVNfTVBFKQorIAlpZiAodHlwZSA9PSBTT0NL X1NUUkVBTSkKKyAJCXsKKy0JCWk9MDsKKy0JCWk9c2V0c29ja29wdChzLFNPTF9TT0NLRVQsU09f S0VFUEFMSVZFLChjaGFyICopJmksc2l6ZW9mKGkpKTsKKy0JCWlmIChpIDwgMCkgeyBwZXJyb3Io ImtlZXBhbGl2ZSIpOyByZXR1cm4oMCk7IH0KKysJCQlpbnQgaT0wOworKwkJCWk9c2V0c29ja29w dChzLFNPTF9TT0NLRVQsU09fS0VFUEFMSVZFLAorKwkJCQkoY2hhciAqKSZpLHNpemVvZihpKSk7 CisrCQkJaWYgKGkgPCAwKSB7CisrCQkJCWZhaWxlZF9jYWxsID0gImtlZXBhbGl2ZSI7CisrCQkJ CWdvdG8gbmV4dHJlczsKKysJCQkJfQorIAkJfQorICNlbmRpZgorLQorLQlpZiAoY29ubmVjdChz LChzdHJ1Y3Qgc29ja2FkZHIgKikmdGhlbSxzaXplb2YodGhlbSkpID09IC0xKQorLQkJeyBjbG9z ZXNvY2tldChzKTsgcGVycm9yKCJjb25uZWN0Iik7IHJldHVybigwKTsgfQorKwkJaWYgKGNvbm5l Y3Qocywoc3RydWN0IHNvY2thZGRyICopcmVzLT5haV9hZGRyLAorKwkJCXJlcy0+YWlfYWRkcmxl bikgPT0gMCkKKysJCQl7CisrCQkJZnJlZWFkZHJpbmZvKHJlczApOworIAkqc29jaz1zOworIAly ZXR1cm4oMSk7CisgCX0KKyAKKy1pbnQgZG9fc2VydmVyKGludCBwb3J0LCBpbnQgdHlwZSwgaW50 ICpyZXQsIGludCAoKmNiKShjaGFyICpob3N0bmFtZSwgaW50IHMsIHVuc2lnbmVkIGNoYXIgKmNv bnRleHQpLCB1bnNpZ25lZCBjaGFyICpjb250ZXh0KQorKwkJZmFpbGVkX2NhbGwgPSAic29ja2V0 IjsKKytuZXh0cmVzOgorKwkJaWYgKHMgIT0gSU5WQUxJRF9TT0NLRVQpCisrCQkJY2xvc2Uocyk7 CisrCQlyZXMgPSByZXMtPmFpX25leHQ7CisrCQl9CisrCWZyZWVhZGRyaW5mbyhyZXMwKTsKKysK KysJcGVycm9yKGZhaWxlZF9jYWxsKTsKKysJcmV0dXJuKDApOworKwl9CisrCisraW50IGRvX3Nl cnZlcihjaGFyICpwb3J0LCBpbnQgdHlwZSwgaW50ICpyZXQsIGludCAoKmNiKShjaGFyICpob3N0 bmFtZSwgaW50IHMsIHVuc2lnbmVkIGNoYXIgKmNvbnRleHQpLCB1bnNpZ25lZCBjaGFyICpjb250 ZXh0KQorIAl7CisgCWludCBzb2NrOworIAljaGFyICpuYW1lID0gTlVMTDsKK0BAIC0zMjMsMzMg KzMzMywzOCBAQCBpbnQgZG9fc2VydmVyKGludCBwb3J0LCBpbnQgdHlwZSwgaW50ICpyCisgCQl9 CisgCX0KKyAKKy1zdGF0aWMgaW50IGluaXRfc2VydmVyX2xvbmcoaW50ICpzb2NrLCBpbnQgcG9y dCwgY2hhciAqaXAsIGludCB0eXBlKQorK3N0YXRpYyBpbnQgaW5pdF9zZXJ2ZXIoaW50ICpzb2Nr LCBjaGFyICpwb3J0LCBpbnQgdHlwZSkKKyAJeworLQlpbnQgcmV0PTA7CistCXN0cnVjdCBzb2Nr YWRkcl9pbiBzZXJ2ZXI7CistCWludCBzPSAtMTsKKysJc3RydWN0IGFkZHJpbmZvICpyZXMsICpy ZXMwLCBoaW50czsKKysJY2hhciAqIGZhaWxlZF9jYWxsID0gTlVMTDsKKysJY2hhciBwb3J0X25h bWVbOF07CisrCWludCBzOworKwlpbnQgZTsKKyAKKyAJaWYgKCFzc2xfc29ja19pbml0KCkpIHJl dHVybigwKTsKKyAKKy0JbWVtc2V0KChjaGFyICopJnNlcnZlciwwLHNpemVvZihzZXJ2ZXIpKTsK Ky0Jc2VydmVyLnNpbl9mYW1pbHk9QUZfSU5FVDsKKy0Jc2VydmVyLnNpbl9wb3J0PWh0b25zKCh1 bnNpZ25lZCBzaG9ydClwb3J0KTsKKy0JaWYgKGlwID09IE5VTEwpCistCQlzZXJ2ZXIuc2luX2Fk ZHIuc19hZGRyPUlOQUREUl9BTlk7CistCWVsc2UKKy0vKiBBZGRlZCBmb3IgVDNFLCBhZGRyZXNz LW9mIGZhaWxzIG9uIGJpdCBmaWVsZCAoYmVja21hbkBhY2wubGFubC5nb3YpICovCistI2lmbmRl ZiBCSVRfRklFTERfTElNSVRTCistCQltZW1jcHkoJnNlcnZlci5zaW5fYWRkci5zX2FkZHIsaXAs NCk7CistI2Vsc2UKKy0JCW1lbWNweSgmc2VydmVyLnNpbl9hZGRyLGlwLDQpOworLSNlbmRpZgor KwltZW1zZXQoJmhpbnRzLCAnXDAnLCBzaXplb2YoaGludHMpKTsKKysJaGludHMuYWlfc29ja3R5 cGUgPSB0eXBlOworKwloaW50cy5haV9mbGFncyA9IEFJX1BBU1NJVkUgfCBBSV9BRERSQ09ORklH OworIAkKKy0JCWlmICh0eXBlID09IFNPQ0tfU1RSRUFNKQorLQkJCXM9c29ja2V0KEFGX0lORVQs U09DS19TVFJFQU0sU09DS0VUX1BST1RPQ09MKTsKKy0JCWVsc2UgLyogdHlwZSA9PSBTT0NLX0RH UkFNICovCistCQkJcz1zb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSxJUFBST1RPX1VEUCk7Cisr CWUgPSBnZXRhZGRyaW5mbyhOVUxMLCBwb3J0LCAmaGludHMsICZyZXMpOworKwlpZiAoZSkKKysJ CXsKKysJCWZwcmludGYoc3RkZXJyLCAiZ2V0YWRkcmluZm86ICVzXG4iLCBnYWlfc3RyZXJyb3Io ZSkpOworKwkJaWYgKGUgPT0gRUFJX1NZU1RFTSkKKysJCQlwZXJyb3IoImdldGFkZHJpbmZvIik7 CisrCQlyZXR1cm4gKDApOworKwkJfQorIAorLQlpZiAocyA9PSBJTlZBTElEX1NPQ0tFVCkgZ290 byBlcnI7CisrCXJlczAgPSByZXM7CisrCXdoaWxlIChyZXMpCisrCQl7CisrCQlzID0gc29ja2V0 KHJlcy0+YWlfZmFtaWx5LCByZXMtPmFpX3NvY2t0eXBlLCByZXMtPmFpX3Byb3RvY29sKTsKKysJ CWlmIChzID09IElOVkFMSURfU09DS0VUKQorKwkJCXsKKysJCQlmYWlsZWRfY2FsbCA9ICJzb2Nr ZXQiOworKwkJCWdvdG8gbmV4dHJlczsKKysJCQl9CisgI2lmIGRlZmluZWQgU09MX1NPQ0tFVCAm JiBkZWZpbmVkIFNPX1JFVVNFQUREUgorIAkJeworIAkJaW50IGogPSAxOworQEAgLTM1NywzNSAr MzcyLDM5IEBAIHN0YXRpYyBpbnQgaW5pdF9zZXJ2ZXJfbG9uZyhpbnQgKnNvY2ssIGkKKyAJCQkg ICAodm9pZCAqKSAmaiwgc2l6ZW9mIGopOworIAkJfQorICNlbmRpZgorLQlpZiAoYmluZChzLChz dHJ1Y3Qgc29ja2FkZHIgKikmc2VydmVyLHNpemVvZihzZXJ2ZXIpKSA9PSAtMSkKKysKKysJCWlm IChiaW5kKHMsKHN0cnVjdCBzb2NrYWRkciAqKXJlcy0+YWlfYWRkciwgcmVzLT5haV9hZGRybGVu KSA9PSAtMSkKKyAJCXsKKy0jaWZuZGVmIE9QRU5TU0xfU1lTX1dJTkRPV1MKKy0JCXBlcnJvcigi YmluZCIpOworLSNlbmRpZgorLQkJZ290byBlcnI7CisrCQkJZmFpbGVkX2NhbGwgPSAiYmluZCI7 CisrCQkJZ290byBuZXh0cmVzOworIAkJfQorLQkvKiBNYWtlIGl0IDEyOCBmb3IgbGludXggKi8K Ky0JaWYgKHR5cGU9PVNPQ0tfU1RSRUFNICYmIGxpc3RlbihzLDEyOCkgPT0gLTEpIGdvdG8gZXJy OworLQkqc29jaz1zOworLQlyZXQ9MTsKKy1lcnI6CistCWlmICgocmV0ID09IDApICYmIChzICE9 IC0xKSkKKysJCWlmICh0eXBlPT1TT0NLX1NUUkVBTSAmJiBsaXN0ZW4ocywxMjgpID09IC0xKQor IAkJeworLQkJU0hVVERPV04ocyk7CisrCQkJZmFpbGVkX2NhbGwgPSAibGlzdGVuIjsKKysJCQln b3RvIG5leHRyZXM7CisgCQl9CistCXJldHVybihyZXQpOworKworKwkJKnNvY2s9czsKKysJCXJl dHVybigxKTsKKysKKytuZXh0cmVzOgorKwkJaWYgKHMgIT0gSU5WQUxJRF9TT0NLRVQpCisrCQkJ Y2xvc2Uocyk7CisrCQlyZXMgPSByZXMtPmFpX25leHQ7CisgCX0KKysJZnJlZWFkZHJpbmZvKHJl czApOworIAorLXN0YXRpYyBpbnQgaW5pdF9zZXJ2ZXIoaW50ICpzb2NrLCBpbnQgcG9ydCwgaW50 IHR5cGUpCistCXsKKy0JcmV0dXJuKGluaXRfc2VydmVyX2xvbmcoc29jaywgcG9ydCwgTlVMTCwg dHlwZSkpOworKwlpZiAocyA9PSBJTlZBTElEX1NPQ0tFVCkgeyBwZXJyb3IoInNvY2tldCIpOyBy ZXR1cm4oMCk7IH0KKysKKysJcGVycm9yKGZhaWxlZF9jYWxsKTsKKysJcmV0dXJuKDApOworIAl9 CisgCisgc3RhdGljIGludCBkb19hY2NlcHQoaW50IGFjY19zb2NrLCBpbnQgKnNvY2ssIGNoYXIg Kipob3N0KQorIAl7CisrCXN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBmcm9tOworKwlj aGFyIGJ1ZmZlcltOSV9NQVhIT1NUXTsKKyAJaW50IHJldDsKKy0Jc3RydWN0IGhvc3RlbnQgKmgx LCpoMjsKKy0Jc3RhdGljIHN0cnVjdCBzb2NrYWRkcl9pbiBmcm9tOworIAlpbnQgbGVuOworIC8q CXN0cnVjdCBsaW5nZXIgbGluZzsgKi8KKyAKK0BAIC00MzIsMTM1ICs0NTEsNTggQEAgcmVkb2l0 OgorICovCisgCisgCWlmIChob3N0ID09IE5VTEwpIGdvdG8gZW5kOworLSNpZm5kZWYgQklUX0ZJ RUxEX0xJTUlUUworLQkvKiBJIHNob3VsZCB1c2UgV1NBQXN5bmNHZXRIb3N0QnlOYW1lKCkgdW5k ZXIgd2luZG93cyAqLworLQloMT1nZXRob3N0YnlhZGRyKChjaGFyICopJmZyb20uc2luX2FkZHIu c19hZGRyLAorLQkJc2l6ZW9mKGZyb20uc2luX2FkZHIuc19hZGRyKSxBRl9JTkVUKTsKKy0jZWxz ZQorLQloMT1nZXRob3N0YnlhZGRyKChjaGFyICopJmZyb20uc2luX2FkZHIsCistCQlzaXplb2Yo c3RydWN0IGluX2FkZHIpLEFGX0lORVQpOworLSNlbmRpZgorLQlpZiAoaDEgPT0gTlVMTCkKKysK KysJaWYgKGdldG5hbWVpbmZvKChzdHJ1Y3Qgc29ja2FkZHIgKikmZnJvbSwgc2l6ZW9mKGZyb20p LAorKwkJYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKKysJCU5VTEwsIDAsIDApKQorIAkJeworLQkJ QklPX3ByaW50ZihiaW9fZXJyLCJiYWQgZ2V0aG9zdGJ5YWRkclxuIik7CisrCQlCSU9fcHJpbnRm KGJpb19lcnIsImdldG5hbWVpbmZvIGZhaWxlZFxuIik7CisgCQkqaG9zdD1OVUxMOworIAkJLyog cmV0dXJuKDApOyAqLworIAkJfQorIAllbHNlCisgCQl7CistCQlpZiAoKCpob3N0PShjaGFyICop T1BFTlNTTF9tYWxsb2Moc3RybGVuKGgxLT5oX25hbWUpKzEpKSA9PSBOVUxMKQorKwkJaWYgKCgq aG9zdD0oY2hhciAqKU9QRU5TU0xfbWFsbG9jKHN0cmxlbihidWZmZXIpKzEpKSA9PSBOVUxMKQor IAkJCXsKKyAJCQlwZXJyb3IoIk9QRU5TU0xfbWFsbG9jIik7CisgCQkJcmV0dXJuKDApOworIAkJ CX0KKy0JCUJVRl9zdHJsY3B5KCpob3N0LGgxLT5oX25hbWUsc3RybGVuKGgxLT5oX25hbWUpKzEp OworLQorLQkJaDI9R2V0SG9zdEJ5TmFtZSgqaG9zdCk7CistCQlpZiAoaDIgPT0gTlVMTCkKKy0J CQl7CistCQkJQklPX3ByaW50ZihiaW9fZXJyLCJnZXRob3N0YnluYW1lIGZhaWx1cmVcbiIpOwor LQkJCXJldHVybigwKTsKKy0JCQl9CistCQlpZiAoaDItPmhfYWRkcnR5cGUgIT0gQUZfSU5FVCkK Ky0JCQl7CistCQkJQklPX3ByaW50ZihiaW9fZXJyLCJnZXRob3N0YnluYW1lIGFkZHIgaXMgbm90 IEFGX0lORVRcbiIpOworLQkJCXJldHVybigwKTsKKy0JCQl9CisrCQlzdHJjcHkoKmhvc3QsIGJ1 ZmZlcik7CisgCQl9CisgZW5kOgorIAkqc29jaz1yZXQ7CisgCXJldHVybigxKTsKKyAJfQorIAor LWludCBleHRyYWN0X2hvc3RfcG9ydChjaGFyICpzdHIsIGNoYXIgKipob3N0X3B0ciwgdW5zaWdu ZWQgY2hhciAqaXAsCistCSAgICAgc2hvcnQgKnBvcnRfcHRyKQorK2ludCBleHRyYWN0X2hvc3Rf cG9ydChjaGFyICpzdHIsIGNoYXIgKipob3N0X3B0ciwgCisrCSAgICAgY2hhciAqKnBvcnRfcHRy KQorIAl7CistCWNoYXIgKmgsKnA7CisrCWNoYXIgKmgsKnAsKng7CisgCistCWg9c3RyOworLQlw PXN0cmNocihzdHIsJzonKTsKKysJeD1oPXN0cjsKKysJaWYgKCpoID09ICdbJykKKysJCXsKKysJ CWgrKzsKKysJCXA9c3RyY2hyKGgsJ10nKTsKKyAJaWYgKHAgPT0gTlVMTCkKKyAJCXsKKy0JCUJJ T19wcmludGYoYmlvX2Vyciwibm8gcG9ydCBkZWZpbmVkXG4iKTsKKysJCQlCSU9fcHJpbnRmKGJp b19lcnIsIm5vIGVuZGluZyBicmFja2V0IGZvciBJUHY2IGFkZHJlc3NcbiIpOworIAkJcmV0dXJu KDApOworIAkJfQorIAkqKHArKyk9J1wwJzsKKy0KKy0JaWYgKChpcCAhPSBOVUxMKSAmJiAhaG9z dF9pcChzdHIsaXApKQorLQkJZ290byBlcnI7CistCWlmIChob3N0X3B0ciAhPSBOVUxMKSAqaG9z dF9wdHI9aDsKKy0KKy0JaWYgKCFleHRyYWN0X3BvcnQocCxwb3J0X3B0cikpCistCQlnb3RvIGVy cjsKKy0JcmV0dXJuKDEpOworLWVycjoKKy0JcmV0dXJuKDApOworKwkJeCA9IHA7CisgCX0KKy0K Ky1zdGF0aWMgaW50IGhvc3RfaXAoY2hhciAqc3RyLCB1bnNpZ25lZCBjaGFyIGlwWzRdKQorLQl7 CistCXVuc2lnbmVkIGludCBpbls0XTsgCistCWludCBpOworLQorLQlpZiAoc3NjYW5mKHN0ciwi JXUuJXUuJXUuJXUiLCYoaW5bMF0pLCYoaW5bMV0pLCYoaW5bMl0pLCYoaW5bM10pKSA9PSA0KQor LQkJeworLQkJZm9yIChpPTA7IGk8NDsgaSsrKQorLQkJCWlmIChpbltpXSA+IDI1NSkKKy0JCQkJ eworLQkJCQlCSU9fcHJpbnRmKGJpb19lcnIsImludmFsaWQgSVAgYWRkcmVzc1xuIik7CistCQkJ CWdvdG8gZXJyOworLQkJCQl9CistCQlpcFswXT1pblswXTsKKy0JCWlwWzFdPWluWzFdOworLQkJ aXBbMl09aW5bMl07CistCQlpcFszXT1pblszXTsKKy0JCX0KKy0JZWxzZQorLQkJeyAvKiBkbyBh IGdldGhvc3RieW5hbWUgKi8KKy0JCXN0cnVjdCBob3N0ZW50ICpoZTsKKy0KKy0JCWlmICghc3Ns X3NvY2tfaW5pdCgpKSByZXR1cm4oMCk7CistCistCQloZT1HZXRIb3N0QnlOYW1lKHN0cik7Cist CQlpZiAoaGUgPT0gTlVMTCkKKy0JCQl7CistCQkJQklPX3ByaW50ZihiaW9fZXJyLCJnZXRob3N0 YnluYW1lIGZhaWx1cmVcbiIpOworLQkJCWdvdG8gZXJyOworLQkJCX0KKy0JCS8qIGNhc3QgdG8g c2hvcnQgYmVjYXVzZSBvZiB3aW4xNiB3aW5zb2NrIGRlZmluaXRpb24gKi8KKy0JCWlmICgoc2hv cnQpaGUtPmhfYWRkcnR5cGUgIT0gQUZfSU5FVCkKKysJcD1zdHJjaHIoeCwnOicpOworKwlpZiAo cCA9PSBOVUxMKQorIAkJCXsKKy0JCQlCSU9fcHJpbnRmKGJpb19lcnIsImdldGhvc3RieW5hbWUg YWRkciBpcyBub3QgQUZfSU5FVFxuIik7CistCQkJcmV0dXJuKDApOworLQkJCX0KKy0JCWlwWzBd PWhlLT5oX2FkZHJfbGlzdFswXVswXTsKKy0JCWlwWzFdPWhlLT5oX2FkZHJfbGlzdFswXVsxXTsK Ky0JCWlwWzJdPWhlLT5oX2FkZHJfbGlzdFswXVsyXTsKKy0JCWlwWzNdPWhlLT5oX2FkZHJfbGlz dFswXVszXTsKKy0JCX0KKy0JcmV0dXJuKDEpOworLWVycjoKKysJCUJJT19wcmludGYoYmlvX2Vy ciwibm8gcG9ydCBkZWZpbmVkXG4iKTsKKyAJcmV0dXJuKDApOworIAl9CisrCSoocCsrKT0nXDAn OworIAorLWludCBleHRyYWN0X3BvcnQoY2hhciAqc3RyLCBzaG9ydCAqcG9ydF9wdHIpCistCXsK Ky0JaW50IGk7CistCXN0cnVjdCBzZXJ2ZW50ICpzOworKwlpZiAoaG9zdF9wdHIgIT0gTlVMTCkg Kmhvc3RfcHRyPWg7CisrCWlmIChwb3J0X3B0ciAhPSBOVUxMKSAqcG9ydF9wdHI9cDsKKyAKKy0J aT1hdG9pKHN0cik7CistCWlmIChpICE9IDApCistCQkqcG9ydF9wdHI9KHVuc2lnbmVkIHNob3J0 KWk7CistCWVsc2UKKy0JCXsKKy0JCXM9Z2V0c2VydmJ5bmFtZShzdHIsInRjcCIpOworLQkJaWYg KHMgPT0gTlVMTCkKKy0JCQl7CistCQkJQklPX3ByaW50ZihiaW9fZXJyLCJnZXRzZXJ2YnluYW1l IGZhaWx1cmUgZm9yICVzXG4iLHN0cik7CistCQkJcmV0dXJuKDApOworLQkJCX0KKy0JCSpwb3J0 X3B0cj1udG9ocygodW5zaWduZWQgc2hvcnQpcy0+c19wb3J0KTsKKy0JCX0KKyAJcmV0dXJuKDEp OworIAl9CisgCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMGItdmVyc2lvbi5wYXRjaCBiL29w ZW5zc2wtMS4wLjBiLXZlcnNpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYmRiNmFiNgotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wtMS4wLjBiLXZlcnNpb24u cGF0Y2gKQEAgLTAsMCArMSwyMiBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMGIvY3J5cHRvL29w ZW5zc2x2LmgudmVyc2lvbiBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vb3BlbnNzbHYuaAorLS0tIG9w ZW5zc2wtMS4wLjBiL2NyeXB0by9vcGVuc3Nsdi5oLnZlcnNpb24JMjAxMC0xMS0xNiAxNzozMToy My4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4wYi9jcnlwdG8vb3BlbnNzbHYuaAky MDEwLTExLTE2IDE3OjMyOjU5LjAwMDAwMDAwMCArMDEwMAorQEAgLTI1LDcgKzI1LDggQEAKKyAg KiAoUHJpb3IgdG8gMC45LjVhIGJldGExLCBhIGRpZmZlcmVudCBzY2hlbWUgd2FzIHVzZWQ6IE1N Tk5GRlJCQiBmb3IKKyAgKiAgbWFqb3IgbWlub3IgZml4IGZpbmFsIHBhdGNoL2JldGEpCisgICov CistI2RlZmluZSBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSCTB4MTAwMDAwMmYKKysvKiB3ZSBoYXZl IHRvIGtlZXAgdGhlIHZlcnNpb24gbnVtYmVyIHRvIG5vdCBicmVhayB0aGUgYWJpICovCisrI2Rl ZmluZSBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSCTB4MTAwMDAwMDMKKyAjaWZkZWYgT1BFTlNTTF9G SVBTCisgI2RlZmluZSBPUEVOU1NMX1ZFUlNJT05fVEVYVAkiT3BlblNTTCAxLjAuMGItZmlwcyAx NiBOb3YgMjAxMCIKKyAjZWxzZQorQEAgLTgzLDcgKzg0LDcgQEAKKyAgKiBzaG91bGQgb25seSBr ZWVwIHRoZSB2ZXJzaW9ucyB0aGF0IGFyZSBiaW5hcnkgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJy ZW50LgorICAqLworICNkZWZpbmUgU0hMSUJfVkVSU0lPTl9ISVNUT1JZICIiCistI2RlZmluZSBT SExJQl9WRVJTSU9OX05VTUJFUiAiMS4wLjAiCisrI2RlZmluZSBTSExJQl9WRVJTSU9OX05VTUJF UiAiMS4wLjBiIgorIAorIAorICNlbmRpZiAvKiBIRUFERVJfT1BFTlNTTFZfSCAqLwoKZGlmZiAt LWdpdCBhL29wZW5zc2wuc3BlYyBiL29wZW5zc2wuc3BlYwppbmRleCAxN2E4ZDY3Li44ZTRhOWRl IDEwMDY0NAotLS0gYS9vcGVuc3NsLnNwZWMKKysrIGIvb3BlbnNzbC5zcGVjCkBAIC0yMCw4ICsy MCw4IEBACiAKIFN1bW1hcnk6IEEgZ2VuZXJhbCBwdXJwb3NlIGNyeXB0b2dyYXBoeSBsaWJyYXJ5 IHdpdGggVExTIGltcGxlbWVudGF0aW9uCiBOYW1lOiBvcGVuc3NsCi1WZXJzaW9uOiAxLjAuMGEK LVJlbGVhc2U6IDMlez9kaXN0fQorVmVyc2lvbjogMS4wLjBiCitSZWxlYXNlOiAxJXs/ZGlzdH0K ICMgV2UgcmVtb3ZlIGNlcnRhaW4gcGF0ZW50ZWQgYWxnb3JpdGhtcyBmcm9tIHRoZSBvcGVuc3Ns IHNvdXJjZSB0YXJiYWxsCiAjIHdpdGggdGhlIGhvYmJsZS1vcGVuc3NsIHNjcmlwdCB3aGljaCBp cyBpbmNsdWRlZCBiZWxvdy4KIFNvdXJjZTogb3BlbnNzbC0le3ZlcnNpb259LXVzYS50YXIuYnoy CkBAIC01MCw3ICs1MCw3IEBAIFBhdGNoMzM6IG9wZW5zc2wtMS4wLjAtYmV0YTQtY2EtZGlyLnBh dGNoCiBQYXRjaDM0OiBvcGVuc3NsLTAuOS42LXg1MDkucGF0Y2gKIFBhdGNoMzU6IG9wZW5zc2wt MC45LjhqLXZlcnNpb24tYWRkLWVuZ2luZXMucGF0Y2gKIFBhdGNoMzg6IG9wZW5zc2wtMS4wLjAt YmV0YTUtY2lwaGVyLWNoYW5nZS5wYXRjaAotUGF0Y2gzOTogb3BlbnNzbC0xLjAuMC1iZXRhNS1p cHY2LWFwcHMucGF0Y2gKK1BhdGNoMzk6IG9wZW5zc2wtMS4wLjBiLWlwdjYtYXBwcy5wYXRjaAog UGF0Y2g0MDogb3BlbnNzbC0xLjAuMGEtZmlwcy5wYXRjaAogUGF0Y2g0MTogb3BlbnNzbC0xLjAu MC1iZXRhMy1maXBzY2hlY2sucGF0Y2gKIFBhdGNoNDM6IG9wZW5zc2wtMS4wLjBhLWZpcHNtb2Rl LnBhdGNoCkBAIC01OSw4ICs1OSw4IEBAIFBhdGNoNDU6IG9wZW5zc2wtMC45LjhqLWVudi1ub3ps aWIucGF0Y2gKIFBhdGNoNDc6IG9wZW5zc2wtMS4wLjAtYmV0YTUtcmVhZG1lLXdhcm5pbmcucGF0 Y2gKIFBhdGNoNDk6IG9wZW5zc2wtMS4wLjAtYmV0YTQtYWxnby1kb2MucGF0Y2gKIFBhdGNoNTA6 IG9wZW5zc2wtMS4wLjAtYmV0YTQtZHRsczEtYWJpLnBhdGNoCi1QYXRjaDUxOiBvcGVuc3NsLTEu MC4wYS12ZXJzaW9uLnBhdGNoCi1QYXRjaDUyOiBvcGVuc3NsLTEuMC4wLWJldGE0LWFlc25pLnBh dGNoCitQYXRjaDUxOiBvcGVuc3NsLTEuMC4wYi12ZXJzaW9uLnBhdGNoCitQYXRjaDUyOiBvcGVu c3NsLTEuMC4wYi1hZXNuaS5wYXRjaAogUGF0Y2g1Mzogb3BlbnNzbC0xLjAuMC1uYW1lLWhhc2gu cGF0Y2gKICMgQmFja3BvcnRlZCBmaXhlcyBpbmNsdWRpbmcgc2VjdXJpdHkgZml4ZXMKIApAQCAt MzkzLDYgKzM5Myw5IEBAIHJtIC1yZiAkUlBNX0JVSUxEX1JPT1QvJXtfbGliZGlyfS9maXBzY2Fu aXN0ZXIuKgogJXBvc3R1biAtcCAvc2Jpbi9sZGNvbmZpZwogCiAlY2hhbmdlbG9nCisqIFR1ZSBO b3YgMTYgMjAxMCBUb21hcyBNcmF6IDx0bXJhekByZWRoYXQuY29tPiAxLjAuMGItMQorLSBuZXcg dXBzdHJlYW0gdmVyc2lvbiBmaXhpbmcgQ1ZFLTIwMTAtMzg2NCAoIzY0OTMwNCkKKwogKiBUdWUg U2VwICA3IDIwMTAgVG9tYXMgTXJheiA8dG1yYXpAcmVkaGF0LmNvbT4gMS4wLjBhLTMKIC0gbWFr ZSBTSExJQl9WRVJTSU9OIHJlZmxlY3QgdGhlIGxpYnJhcnkgc3VmZml4CiAK