From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IOf1o-0003PX-KV for qemu-devel@nongnu.org; Fri, 24 Aug 2007 15:41:08 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IOf1l-0003Mo-Fm for qemu-devel@nongnu.org; Fri, 24 Aug 2007 15:41:08 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IOf1k-0003M4-QK for qemu-devel@nongnu.org; Fri, 24 Aug 2007 15:41:05 -0400 Received: from nf-out-0910.google.com ([64.233.182.185]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IOf1h-0002Qm-Ra for qemu-devel@nongnu.org; Fri, 24 Aug 2007 15:41:03 -0400 Received: by nf-out-0910.google.com with SMTP id 30so653229nfu for ; Fri, 24 Aug 2007 12:40:59 -0700 (PDT) Message-ID: Date: Fri, 24 Aug 2007 22:40:58 +0300 From: "Blue Swirl" In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_99721_13484370.1187984458502" References: Subject: [Qemu-devel] Re: PATCH, RFC: Generic DMA framework Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel ------=_Part_99721_13484370.1187984458502 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline I have now converted the ISA DMA devices (SB16, FDC), most PCI devices and targets. gdma.diff: Generic DMA pc_ppc_dma_to_gdma.diff: Convert x86 and PPC to GDMA pc_sb16_to_gdma.diff: Convert SB16 to GDMA pc_fdc_to_gdma.diff: FDC pc_dma_cleanup.diff: Remove unused functions sparc_gdma.diff: Convert Sparc32 to GDMA sparc32_dma_esp_le_to_gdma.diff: Convert ESP and Lance sun4c.diff: Preliminary Sun4c (Sparcstation-1) support pci_gdma.diff: Convert PCI devices and targets Any comments? The patches are a bit intrusive and I can't test the targets except that they compile. ------=_Part_99721_13484370.1187984458502 Content-Type: text/x-diff; name=gdma.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5r35xyg Content-Disposition: attachment; filename="gdma.diff" SW5kZXg6IHFlbXUvdmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdmwuaAkyMDA3LTA4LTIw IDE3OjU3OjA1LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS92bC5oCTIwMDctMDgtMjIgMTk6Mjk6 NTcuMDAwMDAwMDAwICswMDAwCkBAIC03MzMsNiArNzMzLDUwIEBACiAKICNpbmNsdWRlICJody9p cnEuaCIKIAorLyogR2VuZXJpYyBETUEgQVBJICovCit0eXBlZGVmIHZvaWQgKCpxZW11X2RtYV9o YW5kbGVyKSh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNfd3Jp dGUpOworCit0eXBlZGVmIHN0cnVjdCBRRU1VRE1BU3RhdGUgeworICAgIHFlbXVfZG1hX2hhbmRs ZXIgaGFuZGxlcjsKKyAgICB2b2lkICpvcGFxdWU7Cit9IHFlbXVfZG1hOworCitzdGF0aWMgaW5s aW5lIHZvaWQgZG1hX21lbW9yeV9yZWFkKHFlbXVfZG1hICpkbWFfb3BhcXVlLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuKQorewor ICAgIGlmIChkbWFfb3BhcXVlKQorICAgICAgICBkbWFfb3BhcXVlLT5oYW5kbGVyKGRtYV9vcGFx dWUtPm9wYXF1ZSwgYWRkciwgYnVmLCBsZW4sIDApOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQg ZG1hX21lbW9yeV93cml0ZShxZW11X2RtYSAqZG1hX29wYXF1ZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuKQoreworICAgIGlm IChkbWFfb3BhcXVlKQorICAgICAgICBkbWFfb3BhcXVlLT5oYW5kbGVyKGRtYV9vcGFxdWUtPm9w YXF1ZSwgYWRkciwgYnVmLCBsZW4sIDEpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZG1hX21l bW9yeV9ydyhxZW11X2RtYSAqZG1hX29wYXF1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNfd3JpdGUpCit7CisgICAgaWYg KGRtYV9vcGFxdWUpCisgICAgICAgIGRtYV9vcGFxdWUtPmhhbmRsZXIoZG1hX29wYXF1ZS0+b3Bh cXVlLCBhZGRyLCBidWYsIGxlbiwgaXNfd3JpdGUpOworfQorCitzdGF0aWMgaW5saW5lIHFlbXVf ZG1hICpxZW11X2luaXRfZG1hKHFlbXVfZG1hX2hhbmRsZXIgaGFuZGxlciwgdm9pZCAqb3BhcXVl KQoreworICAgIHFlbXVfZG1hICpwOworCisgICAgcCA9IChxZW11X2RtYSAqKXFlbXVfbWFsbG9j eihzaXplb2YocWVtdV9kbWEpKTsKKyAgICBwLT5oYW5kbGVyID0gaGFuZGxlcjsKKyAgICBwLT5v cGFxdWUgPSBvcGFxdWU7CisKKyAgICByZXR1cm4gcDsKK30KKwogLyogSVNBIGJ1cyAqLwogCiBl eHRlcm4gdGFyZ2V0X3BoeXNfYWRkcl90IGlzYV9tZW1fYmFzZTsK ------=_Part_99721_13484370.1187984458502 Content-Type: text/x-diff; name=pc_ppc_dma_to_gdma.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5r36eyv Content-Disposition: attachment; filename="pc_ppc_dma_to_gdma.diff" SW5kZXg6IHFlbXUvaHcvcGMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvcGMuYwkyMDA3 LTA4LTIyIDE5OjI5OjU3LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9wYy5jCTIwMDctMDgt MjIgMTk6NDI6MTMuMDAwMDAwMDAwICswMDAwCkBAIC02MDEsNiArNjAxLDEyIEBACiAgICAgY3B1 X3Jlc2V0KGVudik7CiB9CiAKK3N0YXRpYyB2b2lkIGlzYV9kbWFfbWVtb3J5X3J3KHZvaWQgKm9w YXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBpc193cml0ZSkKK3sKKyAgICBjcHVfcGh5 c2ljYWxfbWVtb3J5X3J3KGFkZHIsIGJ1ZiwgbGVuLCBpc193cml0ZSk7Cit9CisKIHN0YXRpYyBj b25zdCBpbnQgaWRlX2lvYmFzZVsyXSA9IHsgMHgxZjAsIDB4MTcwIH07CiBzdGF0aWMgY29uc3Qg aW50IGlkZV9pb2Jhc2UyWzJdID0geyAweDNmNiwgMHgzNzYgfTsKIHN0YXRpYyBjb25zdCBpbnQg aWRlX2lycVsyXSA9IHsgMTQsIDE1IH07CkBAIC02NzUsNiArNjgxLDcgQEAKICAgICBOSUNJbmZv ICpuZDsKICAgICBxZW11X2lycSAqY3B1X2lycTsKICAgICBxZW11X2lycSAqaTgyNTk7CisgICAg cWVtdV9kbWEgKnBoeXNpY2FsX2RtYSwgKippc2FfZG1hOwogCiAgICAgbGludXhfYm9vdCA9IChr ZXJuZWxfZmlsZW5hbWUgIT0gTlVMTCk7CiAKQEAgLTc3OSw3ICs3ODYsOSBAQAogICAgIC8qIG1h cCBhbGwgdGhlIGJpb3MgYXQgdGhlIHRvcCBvZiBtZW1vcnkgKi8KICAgICBjcHVfcmVnaXN0ZXJf cGh5c2ljYWxfbWVtb3J5KCh1aW50MzJfdCkoLWJpb3Nfc2l6ZSksIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmlvc19zaXplLCBiaW9zX29mZnNldCB8IElPX01FTV9ST00pOwot ICAgIAorCisgICAgcGh5c2ljYWxfZG1hID0gcWVtdV9pbml0X2RtYShpc2FfZG1hX21lbW9yeV9y dywgTlVMTCk7CisKICAgICBib2Noc19iaW9zX2luaXQoKTsKIAogICAgIGlmIChsaW51eF9ib290 KQpAQCAtODg3LDcgKzg5Niw3IEBACiAgICAgfQogCiAgICAgaTgwNDJfaW5pdChpODI1OVsxXSwg aTgyNTlbMTJdLCAweDYwKTsKLSAgICBETUFfaW5pdCgwKTsKKyAgICBETUFfaW5pdCgwLCBwaHlz aWNhbF9kbWEsICZpc2FfZG1hKTsKICNpZmRlZiBIQVNfQVVESU8KICAgICBhdWRpb19pbml0KHBj aV9lbmFibGVkID8gcGNpX2J1cyA6IE5VTEwsIGk4MjU5KTsKICNlbmRpZgpJbmRleDogcWVtdS9o dy9kbWEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvZG1hLmMJMjAwNy0wOC0yMiAxOToy OTo1Ny4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvZG1hLmMJMjAwNy0wOC0yMiAxOTo0NDoy My4wMDAwMDAwMDAgKzAwMDAKQEAgLTQ4LDYgKzQ4LDcgQEAKICAgICB1aW50OF90IGVvcDsKICAg ICBETUFfdHJhbnNmZXJfaGFuZGxlciB0cmFuc2Zlcl9oYW5kbGVyOwogICAgIHZvaWQgKm9wYXF1 ZTsKKyAgICBxZW11X2RtYSAqcGFyZW50X2RtYTsKIH07CiAKICNkZWZpbmUgQUREUiAwCkBAIC0z ODAsMTYgKzM4MSwxNSBAQAogICAgIHItPm9wYXF1ZSA9IG9wYXF1ZTsKIH0KIAotaW50IERNQV9y ZWFkX21lbW9yeSAoaW50IG5jaGFuLCB2b2lkICpidWYsIGludCBwb3MsIGludCBsZW4pCitzdGF0 aWMgaW50IGRtYV9yZWFkX21lbW9yeSAoc3RydWN0IGRtYV9yZWdzICpyLCB2b2lkICpidWYsIGlu dCBwb3MsIGludCBsZW4pCiB7Ci0gICAgc3RydWN0IGRtYV9yZWdzICpyID0gJmRtYV9jb250cm9s bGVyc1tuY2hhbiA+IDNdLnJlZ3NbbmNoYW4gJiAzXTsKICAgICB0YXJnZXRfcGh5c19hZGRyX3Qg YWRkciA9ICgoci0+cGFnZWggJiAweDdmKSA8PCAyNCkgfCAoci0+cGFnZSA8PCAxNikgfCByLT5u b3dbQUREUl07CiAKICAgICBpZiAoci0+bW9kZSAmIDB4MjApIHsKICAgICAgICAgaW50IGk7CiAg ICAgICAgIHVpbnQ4X3QgKnAgPSBidWY7CiAKLSAgICAgICAgY3B1X3BoeXNpY2FsX21lbW9yeV9y ZWFkIChhZGRyIC0gcG9zIC0gbGVuLCBidWYsIGxlbik7CisgICAgICAgIGRtYV9tZW1vcnlfcmVh ZCAoci0+cGFyZW50X2RtYSwgYWRkciAtIHBvcyAtIGxlbiwgYnVmLCBsZW4pOwogICAgICAgICAv KiBXaGF0IGFib3V0IDE2Yml0IHRyYW5zZmVycz8gKi8KICAgICAgICAgZm9yIChpID0gMDsgaSA8 IGxlbiA+PiAxOyBpKyspIHsKICAgICAgICAgICAgIHVpbnQ4X3QgYiA9IHBbbGVuIC0gaSAtIDFd OwpAQCAtMzk3LDIxICszOTcsMjAgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCi0gICAg ICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZCAoYWRkciArIHBvcywgYnVmLCBsZW4pOworICAg ICAgICBkbWFfbWVtb3J5X3JlYWQgKHItPnBhcmVudF9kbWEsIGFkZHIgKyBwb3MsIGJ1ZiwgbGVu KTsKIAogICAgIHJldHVybiBsZW47CiB9CiAKLWludCBETUFfd3JpdGVfbWVtb3J5IChpbnQgbmNo YW4sIHZvaWQgKmJ1ZiwgaW50IHBvcywgaW50IGxlbikKK3N0YXRpYyBpbnQgZG1hX3dyaXRlX21l bW9yeSAoc3RydWN0IGRtYV9yZWdzICpyLCB2b2lkICpidWYsIGludCBwb3MsIGludCBsZW4pCiB7 Ci0gICAgc3RydWN0IGRtYV9yZWdzICpyID0gJmRtYV9jb250cm9sbGVyc1tuY2hhbiA+IDNdLnJl Z3NbbmNoYW4gJiAzXTsKICAgICB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciA9ICgoci0+cGFnZWgg JiAweDdmKSA8PCAyNCkgfCAoci0+cGFnZSA8PCAxNikgfCByLT5ub3dbQUREUl07CiAKICAgICBp ZiAoci0+bW9kZSAmIDB4MjApIHsKICAgICAgICAgaW50IGk7CiAgICAgICAgIHVpbnQ4X3QgKnAg PSBidWY7CiAKLSAgICAgICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZSAoYWRkciAtIHBvcyAt IGxlbiwgYnVmLCBsZW4pOworICAgICAgICBkbWFfbWVtb3J5X3dyaXRlIChyLT5wYXJlbnRfZG1h LCBhZGRyIC0gcG9zIC0gbGVuLCBidWYsIGxlbik7CiAgICAgICAgIC8qIFdoYXQgYWJvdXQgMTZi aXQgdHJhbnNmZXJzPyAqLwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAg ICAgICAgICAgIHVpbnQ4X3QgYiA9IHBbbGVuIC0gaSAtIDFdOwpAQCAtNDE5LDExICs0MTgsMzYg QEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCi0gICAgICAgIGNwdV9waHlzaWNhbF9tZW1v cnlfd3JpdGUgKGFkZHIgKyBwb3MsIGJ1ZiwgbGVuKTsKKyAgICAgICAgZG1hX21lbW9yeV93cml0 ZSAoci0+cGFyZW50X2RtYSwgYWRkciArIHBvcywgYnVmLCBsZW4pOwogCiAgICAgcmV0dXJuIGxl bjsKIH0KIAorc3RhdGljIHZvaWQgRE1BX21lbW9yeV9ydyh2b2lkICpvcGFxdWUsIHRhcmdldF9w aHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYs IGludCBsZW4sIGludCBpc193cml0ZSkKK3sKKyAgICBzdHJ1Y3QgZG1hX3JlZ3MgKnIgPSAoc3Ry dWN0IGRtYV9yZWdzICopb3BhcXVlOworCisgICAgaWYgKGlzX3dyaXRlKQorICAgICAgICBkbWFf d3JpdGVfbWVtb3J5KHIsIGJ1ZiwgMCwgbGVuKTsKKyAgICBlbHNlCisgICAgICAgIGRtYV9yZWFk X21lbW9yeShyLCBidWYsIDAsIGxlbik7Cit9CisKK2ludCBETUFfcmVhZF9tZW1vcnkgKGludCBu Y2hhbiwgdm9pZCAqYnVmLCBpbnQgcG9zLCBpbnQgbGVuKQoreworICAgIHN0cnVjdCBkbWFfcmVn cyAqciA9ICZkbWFfY29udHJvbGxlcnNbbmNoYW4gPiAzXS5yZWdzW25jaGFuICYgM107CisKKyAg ICByZXR1cm4gZG1hX3JlYWRfbWVtb3J5KHIsIGJ1ZiwgcG9zLCBsZW4pOworfQorCitpbnQgRE1B X3dyaXRlX21lbW9yeSAoaW50IG5jaGFuLCB2b2lkICpidWYsIGludCBwb3MsIGludCBsZW4pCit7 CisgICAgc3RydWN0IGRtYV9yZWdzICpyID0gJmRtYV9jb250cm9sbGVyc1tuY2hhbiA+IDNdLnJl Z3NbbmNoYW4gJiAzXTsKKworICAgIHJldHVybiBkbWFfd3JpdGVfbWVtb3J5KHIsIGJ1ZiwgcG9z LCBsZW4pOworfQorCiAvKiByZXF1ZXN0IHRoZSBlbXVsYXRvciB0byB0cmFuc2ZlciBhIG5ldyBE TUEgbWVtb3J5IGJsb2NrIEFTQVAgKi8KIHZvaWQgRE1BX3NjaGVkdWxlKGludCBuY2hhbikKIHsK QEAgLTUyNiwxMiArNTUwLDIyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgRE1BX2luaXQg KGludCBoaWdoX3BhZ2VfZW5hYmxlKQordm9pZCBETUFfaW5pdCAoaW50IGhpZ2hfcGFnZV9lbmFi bGUsIHFlbXVfZG1hICpwYXJlbnRfZG1hLCBxZW11X2RtYSAqKippc2FfZG1hKQogeworICAgIHVu c2lnbmVkIGludCBpOworCiAgICAgZG1hX2luaXQyKCZkbWFfY29udHJvbGxlcnNbMF0sIDB4MDAs IDAsIDB4ODAsCiAgICAgICAgICAgICAgIGhpZ2hfcGFnZV9lbmFibGUgPyAweDQ4MCA6IC0xKTsK ICAgICBkbWFfaW5pdDIoJmRtYV9jb250cm9sbGVyc1sxXSwgMHhjMCwgMSwgMHg4OCwKICAgICAg ICAgICAgICAgaGlnaF9wYWdlX2VuYWJsZSA/IDB4NDg4IDogLTEpOworCisgICAgKmlzYV9kbWEg PSBxZW11X21hbGxvY3ooc2l6ZW9mKHZvaWQgKikgKiA4KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwg ODsgaSsrKSB7CisgICAgICAgICppc2FfZG1hW2ldID0gcWVtdV9pbml0X2RtYShETUFfbWVtb3J5 X3J3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtYV9jb250cm9sbGVy c1tpID4gM10ucmVnc1tpICYgM10pOworICAgICAgICBkbWFfY29udHJvbGxlcnNbaSA+IDNdLnJl Z3NbaSAmIDNdLnBhcmVudF9kbWEgPSBwYXJlbnRfZG1hOworICAgIH0KKwogICAgIHJlZ2lzdGVy X3NhdmV2bSAoImRtYSIsIDAsIDEsIGRtYV9zYXZlLCBkbWFfbG9hZCwgJmRtYV9jb250cm9sbGVy c1swXSk7CiAgICAgcmVnaXN0ZXJfc2F2ZXZtICgiZG1hIiwgMSwgMSwgZG1hX3NhdmUsIGRtYV9s b2FkLCAmZG1hX2NvbnRyb2xsZXJzWzFdKTsKIH0KSW5kZXg6IHFlbXUvdmwuaAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBxZW11Lm9yaWcvdmwuaAkyMDA3LTA4LTIyIDE5OjI5OjU3LjAwMDAwMDAwMCArMDAwMAor KysgcWVtdS92bC5oCTIwMDctMDgtMjIgMTk6NDI6NTQuMDAwMDAwMDAwICswMDAwCkBAIC0xMDYz LDcgKzEwNjMsNyBAQAogdm9pZCBETUFfcmVsZWFzZV9EUkVRIChpbnQgbmNoYW4pOwogdm9pZCBE TUFfc2NoZWR1bGUoaW50IG5jaGFuKTsKIHZvaWQgRE1BX3J1biAodm9pZCk7Ci12b2lkIERNQV9p bml0IChpbnQgaGlnaF9wYWdlX2VuYWJsZSk7Cit2b2lkIERNQV9pbml0IChpbnQgaGlnaF9wYWdl X2VuYWJsZSwgcWVtdV9kbWEgKnBhcmVudF9kbWEsIHFlbXVfZG1hICoqKmlzYV9kbWEpOwogdm9p ZCBETUFfcmVnaXN0ZXJfY2hhbm5lbCAoaW50IG5jaGFuLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgRE1BX3RyYW5zZmVyX2hhbmRsZXIgdHJhbnNmZXJfaGFuZGxlciwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZvaWQgKm9wYXF1ZSk7CkluZGV4OiBxZW11L2h3L3BwY19wcmVwLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L3BwY19wcmVwLmMJMjAwNy0wOC0yMiAxOToyOTo1 Ny4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvcHBjX3ByZXAuYwkyMDA3LTA4LTIyIDE5OjQ2 OjI3LjAwMDAwMDAwMCArMDAwMApAQCAtNTEwLDYgKzUxMCwxMiBAQAogCiAjZGVmaW5lIE5WUkFN X1NJWkUgICAgICAgIDB4MjAwMAogCitzdGF0aWMgdm9pZCBwcGNfaXNhX2RtYV9tZW1vcnlfcnco dm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBpc193cml0ZSkKK3sK KyAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3J3KGFkZHIsIGJ1ZiwgbGVuLCBpc193cml0ZSk7Cit9 CisKIC8qIFBvd2VyUEMgUFJFUCBoYXJkd2FyZSBpbml0aWFsaXNhdGlvbiAqLwogc3RhdGljIHZv aWQgcHBjX3ByZXBfaW5pdCAoaW50IHJhbV9zaXplLCBpbnQgdmdhX3JhbV9zaXplLCBpbnQgYm9v dF9kZXZpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5U3RhdGUgKmRzLCBj b25zdCBjaGFyICoqZmRfZmlsZW5hbWUsCkBAIC01MjgsNiArNTM0LDcgQEAKICAgICBwcGNfZGVm X3QgKmRlZjsKICAgICBQQ0lCdXMgKnBjaV9idXM7CiAgICAgcWVtdV9pcnEgKmk4MjU5OworICAg IHFlbXVfZG1hICpwaHlzaWNhbF9kbWEsICoqaXNhX2RtYTsKIAogICAgIHN5c2N0cmwgPSBxZW11 X21hbGxvY3ooc2l6ZW9mKHN5c2N0cmxfdCkpOwogICAgIGlmIChzeXNjdHJsID09IE5VTEwpCkBA IC01OTgsNiArNjA1LDggQEAKICAgICAgICAgaW5pdHJkX3NpemUgPSAwOwogICAgIH0KIAorICAg IHBoeXNpY2FsX2RtYSA9IHFlbXVfaW5pdF9kbWEocHBjX2lzYV9kbWFfbWVtb3J5X3J3LCBOVUxM KTsKKwogICAgIGlzYV9tZW1fYmFzZSA9IDB4YzAwMDAwMDA7CiAgICAgaWYgKFBQQ19JTlBVVChl bnYpICE9IFBQQ19GTEFHU19JTlBVVF82eHgpIHsKICAgICAgICAgY3B1X2Fib3J0KGVudiwgIk9u bHkgNnh4IGJ1cyBpcyBzdXBwb3J0ZWQgb24gUFJFUCBtYWNoaW5lXG4iKTsKQEAgLTY0MSw3ICs2 NTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgYnNfdGFibGVbMiAqIGldLCBic190YWJsZVsy ICogaSArIDFdKTsKICAgICB9CiAgICAgaTgwNDJfaW5pdChpODI1OVsxXSwgaTgyNTlbMTJdLCAw eDYwKTsKLSAgICBETUFfaW5pdCgxKTsKKyAgICBETUFfaW5pdCgxLCBwaHlzaWNhbF9kbWEsICZp c2FfZG1hKTsKICAgICAvLyAgICBBVURfaW5pdCgpOwogICAgIC8vICAgIFNCMTZfaW5pdCgpOwog Cg== ------=_Part_99721_13484370.1187984458502 Content-Type: text/x-diff; name=pc_sb16_to_gdma.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5r36kzz Content-Disposition: attachment; filename="pc_sb16_to_gdma.diff" SW5kZXg6IHFlbXUvaHcvcGMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvcGMuYwkyMDA3 LTA4LTIyIDE5OjQyOjEzLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9wYy5jCTIwMDctMDgt MjIgMTk6NDc6MjIuMDAwMDAwMDAwICswMDAwCkBAIC02MjMsNyArNjIzLDggQEAKIHN0YXRpYyBp bnQgcGFyYWxsZWxfaXJxW01BWF9QQVJBTExFTF9QT1JUU10gPSB7IDcsIDcsIDcgfTsKIAogI2lm ZGVmIEhBU19BVURJTwotc3RhdGljIHZvaWQgYXVkaW9faW5pdCAoUENJQnVzICpwY2lfYnVzLCBx ZW11X2lycSAqcGljKQorc3RhdGljIHZvaWQgYXVkaW9faW5pdCAoUENJQnVzICpwY2lfYnVzLCBx ZW11X2lycSAqcGljLCBxZW11X2RtYSAqcGFyZW50X2RtYSwKKyAgICAgICAgICAgICAgICAgICAg ICAgIHFlbXVfZG1hICpwYXJlbnRfaGRtYSkKIHsKICAgICBzdHJ1Y3Qgc291bmRodyAqYzsKICAg ICBpbnQgYXVkaW9fZW5hYmxlZCA9IDA7CkBAIC02NDAsNyArNjQxLDcgQEAKICAgICAgICAgICAg IGZvciAoYyA9IHNvdW5kaHc7IGMtPm5hbWU7ICsrYykgewogICAgICAgICAgICAgICAgIGlmIChj LT5lbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjLT5pc2EpIHsKLSAgICAgICAg ICAgICAgICAgICAgICAgIGMtPmluaXQuaW5pdF9pc2EgKHMsIHBpYyk7CisgICAgICAgICAgICAg ICAgICAgICAgICBjLT5pbml0LmluaXRfaXNhIChzLCBwaWMsIHBhcmVudF9kbWEsIHBhcmVudF9o ZG1hKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlIHsK ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwY2lfYnVzKSB7CkBAIC04OTgsNyArODk5LDcg QEAKICAgICBpODA0Ml9pbml0KGk4MjU5WzFdLCBpODI1OVsxMl0sIDB4NjApOwogICAgIERNQV9p bml0KDAsIHBoeXNpY2FsX2RtYSwgJmlzYV9kbWEpOwogI2lmZGVmIEhBU19BVURJTwotICAgIGF1 ZGlvX2luaXQocGNpX2VuYWJsZWQgPyBwY2lfYnVzIDogTlVMTCwgaTgyNTkpOworICAgIGF1ZGlv X2luaXQocGNpX2VuYWJsZWQgPyBwY2lfYnVzIDogTlVMTCwgaTgyNTksIGlzYV9kbWFbMV0sIGlz YV9kbWFbNV0pOwogI2VuZGlmCiAKICAgICBmbG9wcHlfY29udHJvbGxlciA9IGZkY3RybF9pbml0 KGk4MjU5WzZdLCAyLCAwLCAweDNmMCwgZmRfdGFibGUpOwpJbmRleDogcWVtdS92bC5oCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHFlbXUub3JpZy92bC5oCTIwMDctMDgtMjIgMTk6NDI6NTQuMDAwMDAwMDAwICsw MDAwCisrKyBxZW11L3ZsLmgJMjAwNy0wOC0yMiAxOTo0NzoyMi4wMDAwMDAwMDAgKzAwMDAKQEAg LTkzNiw3ICs5MzYsOCBAQAogICAgIGludCBlbmFibGVkOwogICAgIGludCBpc2E7CiAgICAgdW5p b24gewotICAgICAgICBpbnQgKCppbml0X2lzYSkgKEF1ZGlvU3RhdGUgKnMsIHFlbXVfaXJxICpw aWMpOworICAgICAgICBpbnQgKCppbml0X2lzYSkgKEF1ZGlvU3RhdGUgKnMsIHFlbXVfaXJxICpw aWMsIHFlbXVfZG1hICpwYXJlbnRfZG1hLAorICAgICAgICAgICAgICAgICAgICAgICAgIHFlbXVf ZG1hICpwYXJlbnRfaGRtYSk7CiAgICAgICAgIGludCAoKmluaXRfcGNpKSAoUENJQnVzICpidXMs IEF1ZGlvU3RhdGUgKnMpOwogICAgIH0gaW5pdDsKIH07CkBAIC0xMDQ2LDcgKzEwNDcsOCBAQAog aW50IGVzMTM3MF9pbml0IChQQ0lCdXMgKmJ1cywgQXVkaW9TdGF0ZSAqcyk7CiAKIC8qIHNiMTYu YyAqLwotaW50IFNCMTZfaW5pdCAoQXVkaW9TdGF0ZSAqcywgcWVtdV9pcnEgKnBpYyk7CitpbnQg U0IxNl9pbml0IChBdWRpb1N0YXRlICphdWRpbywgcWVtdV9pcnEgKnBpYywgcWVtdV9kbWEgKnBh cmVudF9kbWEsCisgICAgICAgICAgICAgICBxZW11X2RtYSAqcGFyZW50X2hkbWEpOwogCiAvKiBh ZGxpYi5jICovCiBpbnQgQWRsaWJfaW5pdCAoQXVkaW9TdGF0ZSAqcywgcWVtdV9pcnEgKnBpYyk7 CkluZGV4OiBxZW11L2h3L3NiMTYuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvc2IxNi5j CTIwMDctMDgtMjIgMTk6NDE6NDMuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3NiMTYuYwky MDA3LTA4LTIyIDE5OjQ3OjIyLjAwMDAwMDAwMCArMDAwMApAQCAtNTcsNyArNTcsOSBAQAogICAg IHFlbXVfaXJxICpwaWM7CiAgICAgaW50IGlycTsKICAgICBpbnQgZG1hOworICAgIHFlbXVfZG1h ICpwYXJlbnRfZG1hOwogICAgIGludCBoZG1hOworICAgIHFlbXVfZG1hICpwYXJlbnRfaGRtYTsK ICAgICBpbnQgcG9ydDsKICAgICBpbnQgdmVyOwogCkBAIC0xMTY5LDggKzExNzEsMTIgQEAKICAg ICAgICAgICAgIHRvX2NvcHkgPSBzaXplb2YgKHRtcGJ1Zik7CiAgICAgICAgIH0KIAotICAgICAg ICBjb3BpZWQgPSBETUFfcmVhZF9tZW1vcnkgKG5jaGFuLCB0bXBidWYsIGRtYV9wb3MsIHRvX2Nv cHkpOwotICAgICAgICBjb3BpZWQgPSBBVURfd3JpdGUgKHMtPnZvaWNlLCB0bXBidWYsIGNvcGll ZCk7CisgICAgICAgIGlmIChzLT51c2VfaGRtYSkKKyAgICAgICAgICAgIGRtYV9tZW1vcnlfcmVh ZChzLT5wYXJlbnRfaGRtYSwgMCwgdG1wYnVmICsgZG1hX3BvcywgdG9fY29weSk7CisgICAgICAg IGVsc2UKKyAgICAgICAgICAgIGRtYV9tZW1vcnlfcmVhZChzLT5wYXJlbnRfZG1hLCAwLCB0bXBi dWYgKyBkbWFfcG9zLCB0b19jb3B5KTsKKworICAgICAgICBjb3BpZWQgPSBBVURfd3JpdGUgKHMt PnZvaWNlLCB0bXBidWYsIHRvX2NvcHkpOwogCiAgICAgICAgIHRlbXAgLT0gY29waWVkOwogICAg ICAgICBkbWFfcG9zID0gKGRtYV9wb3MgKyBjb3BpZWQpICUgZG1hX2xlbjsKQEAgLTEzOTAsNyAr MTM5Niw4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBTQjE2X2luaXQgKEF1ZGlvU3RhdGUg KmF1ZGlvLCBxZW11X2lycSAqcGljKQoraW50IFNCMTZfaW5pdCAoQXVkaW9TdGF0ZSAqYXVkaW8s IHFlbXVfaXJxICpwaWMsIHFlbXVfZG1hICpwYXJlbnRfZG1hLAorICAgICAgICAgICAgICAgcWVt dV9kbWEgKnBhcmVudF9oZG1hKQogewogICAgIFNCMTZTdGF0ZSAqczsKICAgICBpbnQgaTsK ------=_Part_99721_13484370.1187984458502 Content-Type: text/x-diff; name=pc_fdc_to_gdma.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5r36s1b Content-Disposition: attachment; filename="pc_fdc_to_gdma.diff" SW5kZXg6IHFlbXUvaHcvZmRjLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L2ZkYy5jCTIw MDctMDgtMjIgMTk6NDE6NDAuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L2ZkYy5jCTIwMDct MDgtMjIgMTk6NDc6NTkuMDAwMDAwMDAwICswMDAwCkBAIC0zNzAsNiArMzcwLDcgQEAKICAgICAv KiBIVyAqLwogICAgIHFlbXVfaXJxIGlycTsKICAgICBpbnQgZG1hX2NoYW5uOworICAgIHFlbXVf ZG1hICpwYXJlbnRfZG1hOwogICAgIHRhcmdldF9waHlzX2FkZHJfdCBpb19iYXNlOwogICAgIC8q IENvbnRyb2xsZXIgc3RhdGUgKi8KICAgICBRRU1VVGltZXIgKnJlc3VsdF90aW1lcjsKQEAgLTU4 MCw3ICs1ODEsOCBAQAogCiBmZGN0cmxfdCAqZmRjdHJsX2luaXQgKHFlbXVfaXJxIGlycSwgaW50 IGRtYV9jaGFubiwgaW50IG1lbV9tYXBwZWQsIAogICAgICAgICAgICAgICAgICAgICAgICB0YXJn ZXRfcGh5c19hZGRyX3QgaW9fYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgQmxvY2tEcml2 ZXJTdGF0ZSAqKmZkcykKKyAgICAgICAgICAgICAgICAgICAgICAgQmxvY2tEcml2ZXJTdGF0ZSAq KmZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgcWVtdV9kbWEgKnBhcmVudF9kbWEpCiB7CiAg ICAgZmRjdHJsX3QgKmZkY3RybDsKICAgICBpbnQgaW9fbWVtOwpAQCAtNTk4LDYgKzYwMCw3IEBA CiAgICAgZmRjdHJsLT5kbWFfY2hhbm4gPSBkbWFfY2hhbm47CiAgICAgZmRjdHJsLT5pb19iYXNl ID0gaW9fYmFzZTsKICAgICBmZGN0cmwtPmNvbmZpZyA9IDB4NjA7IC8qIEltcGxpY2l0IHNlZWss IHBvbGxpbmcgJiBGSUZPIGVuYWJsZWQgKi8KKyAgICBmZGN0cmwtPnBhcmVudF9kbWEgPSBwYXJl bnRfZG1hOwogICAgIGlmIChmZGN0cmwtPmRtYV9jaGFubiAhPSAtMSkgewogICAgICAgICBmZGN0 cmwtPmRtYV9lbiA9IDE7CiAgICAgICAgIERNQV9yZWdpc3Rlcl9jaGFubmVsKGRtYV9jaGFubiwg JmZkY3RybF90cmFuc2Zlcl9oYW5kbGVyLCBmZGN0cmwpOwpAQCAtMTA4NywxNyArMTA5MCwxMyBA QAogCXN3aXRjaCAoZmRjdHJsLT5kYXRhX2RpcikgewogCWNhc2UgRkRfRElSX1JFQUQ6CiAJICAg IC8qIFJFQUQgY29tbWFuZHMgKi8KLSAgICAgICAgICAgIERNQV93cml0ZV9tZW1vcnkgKG5jaGFu LCBmZGN0cmwtPmZpZm8gKyByZWxfcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmRjdHJsLT5kYXRhX3BvcywgbGVuKTsKLS8qIAkgICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0 ZShhZGRyICsgZmRjdHJsLT5kYXRhX3BvcywgKi8KLS8qIAkJCQkgICAgICBmZGN0cmwtPmZpZm8g KyByZWxfcG9zLCBsZW4pOyAqLworICAgICAgICAgICAgZG1hX21lbW9yeV93cml0ZShmZGN0cmwt PnBhcmVudF9kbWEsIDAsIGZkY3RybC0+ZmlmbyArIHJlbF9wb3MgKworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmZGN0cmwtPmRhdGFfcG9zLCBsZW4pOwogCSAgICBicmVhazsKIAljYXNl IEZEX0RJUl9XUklURToKICAgICAgICAgICAgIC8qIFdSSVRFIGNvbW1hbmRzICovCi0gICAgICAg ICAgICBETUFfcmVhZF9tZW1vcnkgKG5jaGFuLCBmZGN0cmwtPmZpZm8gKyByZWxfcG9zLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmZGN0cmwtPmRhdGFfcG9zLCBsZW4pOwotLyogICAg ICAgICAgICAgY3B1X3BoeXNpY2FsX21lbW9yeV9yZWFkKGFkZHIgKyBmZGN0cmwtPmRhdGFfcG9z LCAqLwotLyogCQkJCSAgICAgZmRjdHJsLT5maWZvICsgcmVsX3BvcywgbGVuKTsgKi8KKyAgICAg ICAgICAgIGRtYV9tZW1vcnlfcmVhZChmZGN0cmwtPnBhcmVudF9kbWEsIDAsIGZkY3RybC0+Zmlm byArIHJlbF9wb3MgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkY3RybC0+ZGF0YV9w b3MsIGxlbik7CiAgICAgICAgICAgICBpZiAoYmRydl93cml0ZShjdXJfZHJ2LT5icywgZmRfc2Vj dG9yKGN1cl9kcnYpLAogCQkJICAgZmRjdHJsLT5maWZvLCAxKSA8IDApIHsKICAgICAgICAgICAg ICAgICBGTE9QUFlfRVJST1IoIndyaXR0aW5nIHNlY3RvciAlZFxuIiwgZmRfc2VjdG9yKGN1cl9k cnYpKTsKQEAgLTExMTAsOSArMTEwOSw4IEBACiAgICAgICAgICAgICB7CiAJCXVpbnQ4X3QgdG1w YnVmW0ZEX1NFQ1RPUl9MRU5dOwogICAgICAgICAgICAgICAgIGludCByZXQ7Ci0gICAgICAgICAg ICAgICAgRE1BX3JlYWRfbWVtb3J5IChuY2hhbiwgdG1wYnVmLCBmZGN0cmwtPmRhdGFfcG9zLCBs ZW4pOwotLyogICAgICAgICAgICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZChhZGRyICsg ZmRjdHJsLT5kYXRhX3BvcywgKi8KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdG1wYnVmLCBsZW4pOyAqLworICAgICAgICAgICAgICAgIGRtYV9tZW1vcnlfcmVh ZChmZGN0cmwtPnBhcmVudF9kbWEsIDAsIHRtcGJ1ZiArCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZkY3RybC0+ZGF0YV9wb3MsIGxlbik7CiAgICAgICAgICAgICAgICAgcmV0ID0g bWVtY21wKHRtcGJ1ZiwgZmRjdHJsLT5maWZvICsgcmVsX3BvcywgbGVuKTsKICAgICAgICAgICAg ICAgICBpZiAocmV0ID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgc3RhdHVzMiA9IDB4MDg7 CkluZGV4OiBxZW11L3ZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3ZsLmgJMjAwNy0wOC0y MiAxOTo0NzoyMi4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvdmwuaAkyMDA3LTA4LTIyIDE5OjQ3 OjU5LjAwMDAwMDAwMCArMDAwMApAQCAtMTA3Nyw3ICsxMDc3LDggQEAKIAogZmRjdHJsX3QgKmZk Y3RybF9pbml0IChxZW11X2lycSBpcnEsIGludCBkbWFfY2hhbm4sIGludCBtZW1fbWFwcGVkLCAK ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3BoeXNfYWRkcl90IGlvX2Jhc2UsCi0gICAg ICAgICAgICAgICAgICAgICAgIEJsb2NrRHJpdmVyU3RhdGUgKipmZHMpOworICAgICAgICAgICAg ICAgICAgICAgICBCbG9ja0RyaXZlclN0YXRlICoqZmRzLAorICAgICAgICAgICAgICAgICAgICAg ICBxZW11X2RtYSAqcGFyZW50X2RtYSk7CiBpbnQgZmRjdHJsX2dldF9kcml2ZV90eXBlKGZkY3Ry bF90ICpmZGN0cmwsIGludCBkcml2ZV9udW0pOwogCiAvKiBlZXBybzEwMC5jICovCkluZGV4OiBx ZW11L2h3L3BjLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L3BjLmMJMjAwNy0wOC0yMiAx OTo0NzoyMi4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvcGMuYwkyMDA3LTA4LTIyIDE5OjQ3 OjU5LjAwMDAwMDAwMCArMDAwMApAQCAtOTAyLDcgKzkwMiw3IEBACiAgICAgYXVkaW9faW5pdChw Y2lfZW5hYmxlZCA/IHBjaV9idXMgOiBOVUxMLCBpODI1OSwgaXNhX2RtYVsxXSwgaXNhX2RtYVs1 XSk7CiAjZW5kaWYKIAotICAgIGZsb3BweV9jb250cm9sbGVyID0gZmRjdHJsX2luaXQoaTgyNTlb Nl0sIDIsIDAsIDB4M2YwLCBmZF90YWJsZSk7CisgICAgZmxvcHB5X2NvbnRyb2xsZXIgPSBmZGN0 cmxfaW5pdChpODI1OVs2XSwgMiwgMCwgMHgzZjAsIGZkX3RhYmxlLCBpc2FfZG1hWzJdKTsKIAog ICAgIGNtb3NfaW5pdChyYW1fc2l6ZSwgYm9vdF9kZXZpY2UsIGJzX3RhYmxlKTsKIAo= ------=_Part_99721_13484370.1187984458502 Content-Type: text/x-diff; name=pc_dma_cleanup.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5r36x0f Content-Disposition: attachment; filename="pc_dma_cleanup.diff" SW5kZXg6IHFlbXUvaHcvZG1hLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L2RtYS5jCTIw MDctMDgtMjIgMTk6NDQ6MjMuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L2RtYS5jCTIwMDct MDgtMjIgMTk6NTE6MzEuMDAwMDAwMDAwICswMDAwCkBAIC00MzQsMjAgKzQzNCw2IEBACiAgICAg ICAgIGRtYV9yZWFkX21lbW9yeShyLCBidWYsIDAsIGxlbik7CiB9CiAKLWludCBETUFfcmVhZF9t ZW1vcnkgKGludCBuY2hhbiwgdm9pZCAqYnVmLCBpbnQgcG9zLCBpbnQgbGVuKQotewotICAgIHN0 cnVjdCBkbWFfcmVncyAqciA9ICZkbWFfY29udHJvbGxlcnNbbmNoYW4gPiAzXS5yZWdzW25jaGFu ICYgM107Ci0KLSAgICByZXR1cm4gZG1hX3JlYWRfbWVtb3J5KHIsIGJ1ZiwgcG9zLCBsZW4pOwot fQotCi1pbnQgRE1BX3dyaXRlX21lbW9yeSAoaW50IG5jaGFuLCB2b2lkICpidWYsIGludCBwb3Ms IGludCBsZW4pCi17Ci0gICAgc3RydWN0IGRtYV9yZWdzICpyID0gJmRtYV9jb250cm9sbGVyc1tu Y2hhbiA+IDNdLnJlZ3NbbmNoYW4gJiAzXTsKLQotICAgIHJldHVybiBkbWFfd3JpdGVfbWVtb3J5 KHIsIGJ1ZiwgcG9zLCBsZW4pOwotfQotCiAvKiByZXF1ZXN0IHRoZSBlbXVsYXRvciB0byB0cmFu c2ZlciBhIG5ldyBETUEgbWVtb3J5IGJsb2NrIEFTQVAgKi8KIHZvaWQgRE1BX3NjaGVkdWxlKGlu dCBuY2hhbikKIHsKSW5kZXg6IHFlbXUvdmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdmwu aAkyMDA3LTA4LTIyIDE5OjQ3OjU5LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS92bC5oCTIwMDct MDgtMjIgMTk6NTE6MzEuMDAwMDAwMDAwICswMDAwCkBAIC0xMDU5LDggKzEwNTksNiBAQAogLyog ZG1hLmMgKi8KIHR5cGVkZWYgaW50ICgqRE1BX3RyYW5zZmVyX2hhbmRsZXIpICh2b2lkICpvcGFx dWUsIGludCBuY2hhbiwgaW50IHBvcywgaW50IHNpemUpOwogaW50IERNQV9nZXRfY2hhbm5lbF9t b2RlIChpbnQgbmNoYW4pOwotaW50IERNQV9yZWFkX21lbW9yeSAoaW50IG5jaGFuLCB2b2lkICpi dWYsIGludCBwb3MsIGludCBzaXplKTsKLWludCBETUFfd3JpdGVfbWVtb3J5IChpbnQgbmNoYW4s IHZvaWQgKmJ1ZiwgaW50IHBvcywgaW50IHNpemUpOwogdm9pZCBETUFfaG9sZF9EUkVRIChpbnQg bmNoYW4pOwogdm9pZCBETUFfcmVsZWFzZV9EUkVRIChpbnQgbmNoYW4pOwogdm9pZCBETUFfc2No ZWR1bGUoaW50IG5jaGFuKTsK ------=_Part_99721_13484370.1187984458502 Content-Type: text/x-diff; name=sparc_gdma.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5r36yaf Content-Disposition: attachment; filename="sparc_gdma.diff" SW5kZXg6IHFlbXUvaHcvc3VuNG0uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvc3VuNG0u YwkyMDA3LTA4LTIwIDIwOjExOjMxLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9zdW40bS5j CTIwMDctMDgtMjIgMjA6MDM6MjguMDAwMDAwMDAwICswMDAwCkBAIC04MiwxOSArODIsMTAgQEAK IHsKICAgICByZXR1cm4gMDsKIH0KLWludCBETUFfcmVhZF9tZW1vcnkgKGludCBuY2hhbiwgdm9p ZCAqYnVmLCBpbnQgcG9zLCBpbnQgc2l6ZSkKLXsKLSAgICByZXR1cm4gMDsKLX0KLWludCBETUFf d3JpdGVfbWVtb3J5IChpbnQgbmNoYW4sIHZvaWQgKmJ1ZiwgaW50IHBvcywgaW50IHNpemUpCi17 Ci0gICAgcmV0dXJuIDA7Ci19CiB2b2lkIERNQV9ob2xkX0RSRVEgKGludCBuY2hhbikge30KIHZv aWQgRE1BX3JlbGVhc2VfRFJFUSAoaW50IG5jaGFuKSB7fQogdm9pZCBETUFfc2NoZWR1bGUoaW50 IG5jaGFuKSB7fQogdm9pZCBETUFfcnVuICh2b2lkKSB7fQotdm9pZCBETUFfaW5pdCAoaW50IGhp Z2hfcGFnZV9lbmFibGUpIHt9CiB2b2lkIERNQV9yZWdpc3Rlcl9jaGFubmVsIChpbnQgbmNoYW4s CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUFfdHJhbnNmZXJfaGFuZGxlciB0cmFuc2Zl cl9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlKQpAQCAt Mjg5LDYgKzI4MCwxNyBAQAogICAgIHNsYXZpb19zZXRfcG93ZXJfZmFpbChzbGF2aW9fbWlzYywg MSk7CiB9CiAKK3N0YXRpYyB2b2lkIHNwYXJjX2RtYV9tZW1vcnlfcncodm9pZCAqb3BhcXVlLCB0 YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNfd3JpdGUpCit7CisgICAgY3B1X3BoeXNpY2Fs X21lbW9yeV9ydyhhZGRyLCBidWYsIGxlbiwgaXNfd3JpdGUpOworfQorCitzdGF0aWMgdm9pZCBz cGFyY19kdW1teV9tZW1vcnlfcncodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRk ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBs ZW4sIGludCBpc193cml0ZSkKK3sKK30KKwogc3RhdGljIHZvaWQgbWFpbl9jcHVfcmVzZXQodm9p ZCAqb3BhcXVlKQogewogICAgIENQVVN0YXRlICplbnYgPSBvcGFxdWU7CkBAIC0zMTYsNiArMzE4 LDcgQEAKICAgICBxZW11X2lycSAqY3B1X2lycXNbTUFYX0NQVVNdLCAqc2xhdmlvX2lycSwgKnNs YXZpb19jcHVfaXJxLAogICAgICAgICAqZXNwZG1hX2lycSwgKmxlZG1hX2lycTsKICAgICBxZW11 X2lycSAqZXNwX3Jlc2V0LCAqbGVfcmVzZXQ7CisgICAgcWVtdV9kbWEgKnBoeXNpY2FsX2RtYSwg KmR1bW15X2RtYSwgKmR2bWE7CiAKICAgICAvKiBpbml0IENQVXMgKi8KICAgICBzcGFyY19maW5k X2J5X25hbWUoY3B1X21vZGVsLCAmZGVmKTsKQEAgLTM0NCw3ICszNDcsMTEgQEAKICAgICAvKiBh bGxvY2F0ZSBSQU0gKi8KICAgICBjcHVfcmVnaXN0ZXJfcGh5c2ljYWxfbWVtb3J5KDAsIFJBTV9z aXplLCAwKTsKIAotICAgIGlvbW11ID0gaW9tbXVfaW5pdChod2RlZi0+aW9tbXVfYmFzZSk7Cisg ICAgcGh5c2ljYWxfZG1hID0gcWVtdV9pbml0X2RtYShzcGFyY19kbWFfbWVtb3J5X3J3LCBOVUxM KTsKKyAgICBkdW1teV9kbWEgPSBxZW11X2luaXRfZG1hKHNwYXJjX2R1bW15X21lbW9yeV9ydywg TlVMTCk7CisKKyAgICBpb21tdSA9IGlvbW11X2luaXQoaHdkZWYtPmlvbW11X2Jhc2UsIHBoeXNp Y2FsX2RtYSwgJmR2bWEpOworCiAgICAgc2xhdmlvX2ludGN0bCA9IHNsYXZpb19pbnRjdGxfaW5p dChod2RlZi0+aW50Y3RsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBod2RlZi0+aW50Y3RsX2Jhc2UgKyAweDEwMDAwVUxMLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmh3ZGVmLT5pbnRiaXRfdG9fbGV2ZWxbMF0sCkBAIC0zOTEs NyArMzk4LDggQEAKICAgICAvLyBTbGF2aW8gVFRZQiAoYmFzZSswLCBMaW51eCB0dHlTMSkgaXMg dGhlIHNlY29uZCBRZW11IHNlcmlhbCBkZXZpY2UKICAgICBzbGF2aW9fc2VyaWFsX2luaXQoaHdk ZWYtPnNlcmlhbF9iYXNlLCBzbGF2aW9faXJxW2h3ZGVmLT5zZXJfaXJxXSwKICAgICAgICAgICAg ICAgICAgICAgICAgc2VyaWFsX2hkc1sxXSwgc2VyaWFsX2hkc1swXSk7Ci0gICAgZmRjdHJsX2lu aXQoc2xhdmlvX2lycVtod2RlZi0+ZmRfaXJxXSwgMCwgMSwgaHdkZWYtPmZkX2Jhc2UsIGZkX3Rh YmxlKTsKKyAgICBmZGN0cmxfaW5pdChzbGF2aW9faXJxW2h3ZGVmLT5mZF9pcnFdLCAwLCAxLCBo d2RlZi0+ZmRfYmFzZSwgZmRfdGFibGUsCisgICAgICAgICAgICAgICAgZHVtbXlfZG1hKTsKIAog ICAgIG1haW5fZXNwID0gZXNwX2luaXQoYnNfdGFibGUsIGh3ZGVmLT5lc3BfYmFzZSwgZXNwZG1h LCAqZXNwZG1hX2lycSwKICAgICAgICAgICAgICAgICAgICAgICAgIGVzcF9yZXNldCk7CkluZGV4 OiBxZW11L2h3L2lvbW11LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L2lvbW11LmMJMjAw Ny0wOC0yMCAyMDoxMTozMS4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvaW9tbXUuYwkyMDA3 LTA4LTIyIDE5OjUzOjQwLjAwMDAwMDAwMCArMDAwMApAQCAtMTA0LDYgKzEwNCw3IEBACiAgICAg dGFyZ2V0X3BoeXNfYWRkcl90IGFkZHI7CiAgICAgdWludDMyX3QgcmVnc1tJT01NVV9OUkVHU107 CiAgICAgdGFyZ2V0X3BoeXNfYWRkcl90IGlvc3RhcnQ7CisgICAgcWVtdV9kbWEgKnBhcmVudF9k bWE7CiB9IElPTU1VU3RhdGU7CiAKIHN0YXRpYyB1aW50MzJfdCBpb21tdV9tZW1fcmVhZHcodm9p ZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKQEAgLTIwMiw3ICsyMDMsOCBAQAog CiBzdGF0aWMgdWludDMyX3QgaW9tbXVfcGFnZV9nZXRfZmxhZ3MoSU9NTVVTdGF0ZSAqcywgdGFy Z2V0X3BoeXNfYWRkcl90IGFkZHIpCiB7Ci0gICAgdWludDMyX3QgaW9wdGUsIHJldDsKKyAgICB1 aW50MzJfdCByZXQ7CisgICAgdGFyZ2V0X3BoeXNfYWRkcl90IGlvcHRlOwogI2lmZGVmIERFQlVH X0lPTU1VCiAgICAgdGFyZ2V0X3BoeXNfYWRkcl90IHBhID0gYWRkcjsKICNlbmRpZgpAQCAtMjEw LDcgKzIxMiw4IEBACiAgICAgaW9wdGUgPSBzLT5yZWdzW0lPTU1VX0JBU0VdIDw8IDQ7CiAgICAg YWRkciAmPSB+cy0+aW9zdGFydDsKICAgICBpb3B0ZSArPSAoYWRkciA+PiAoUEFHRV9TSElGVCAt IDIpKSAmIH4zOwotICAgIHJldCA9IGxkbF9waHlzKGlvcHRlKTsKKyAgICBkbWFfbWVtb3J5X3Jl YWQocy0+cGFyZW50X2RtYSwgaW9wdGUsICh1aW50OF90ICopJnJldCwgNCk7CisgICAgYnN3YXAz MnMoJnJldCk7CiAgICAgRFBSSU5URigiZ2V0IGZsYWdzIGFkZHIgIiBUQVJHRVRfRk1UX3BseCAi ID0+IHB0ZSAleCwgKnB0ZXMgPSAleFxuIiwgcGEsCiAgICAgICAgICAgICBpb3B0ZSwgcmV0KTsK IApAQCAtMjQ1LDYgKzI0OCw3IEBACiB2b2lkIHNwYXJjX2lvbW11X21lbW9yeV9ydyh2b2lkICpv cGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNfd3JpdGUpCiB7CisgICAgSU9NTVVTdGF0 ZSAqcyA9IG9wYXF1ZTsKICAgICBpbnQgbDsKICAgICB1aW50MzJfdCBmbGFnczsKICAgICB0YXJn ZXRfcGh5c19hZGRyX3QgcGFnZSwgcGh5c19hZGRyOwpAQCAtMjU5LDE2ICsyNjMsMTIgQEAKICAg ICAgICAgICAgIGlvbW11X2JhZF9hZGRyKG9wYXF1ZSwgcGFnZSwgaXNfd3JpdGUpOwogICAgICAg ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHBoeXNfYWRkciA9IGlvbW11X3RyYW5z bGF0ZV9wYShvcGFxdWUsIGFkZHIsIGZsYWdzKTsKLSAgICAgICAgaWYgKGlzX3dyaXRlKSB7Ci0g ICAgICAgICAgICBpZiAoIShmbGFncyAmIElPUFRFX1dSSVRFKSkgewotICAgICAgICAgICAgICAg IGlvbW11X2JhZF9hZGRyKG9wYXF1ZSwgcGFnZSwgaXNfd3JpdGUpOwotICAgICAgICAgICAgICAg IHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlf d3JpdGUocGh5c19hZGRyLCBidWYsIGxlbik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg ICBjcHVfcGh5c2ljYWxfbWVtb3J5X3JlYWQocGh5c19hZGRyLCBidWYsIGxlbik7CisgICAgICAg IGlmIChpc193cml0ZSAmJiAhKGZsYWdzICYgSU9QVEVfV1JJVEUpKSB7CisgICAgICAgICAgICBp b21tdV9iYWRfYWRkcihvcGFxdWUsIHBhZ2UsIGlzX3dyaXRlKTsKKyAgICAgICAgICAgIHJldHVy bjsKICAgICAgICAgfQorICAgICAgICBwaHlzX2FkZHIgPSBpb21tdV90cmFuc2xhdGVfcGEob3Bh cXVlLCBhZGRyLCBmbGFncyk7CisgICAgICAgIGRtYV9tZW1vcnlfcncocy0+cGFyZW50X2RtYSwg cGh5c19hZGRyLCBidWYsIGxlbiwgaXNfd3JpdGUpOwogICAgICAgICBsZW4gLT0gbDsKICAgICAg ICAgYnVmICs9IGw7CiAgICAgICAgIGFkZHIgKz0gbDsKQEAgLTMwOSw3ICszMDksOCBAQAogICAg IHMtPnJlZ3NbSU9NTVVfQ1RSTF0gPSBJT01NVV9WRVJTSU9OOwogfQogCi12b2lkICppb21tdV9p bml0KHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQordm9pZCAqaW9tbXVfaW5pdCh0YXJnZXRfcGh5 c19hZGRyX3QgYWRkciwgcWVtdV9kbWEgKnBhcmVudF9kbWEsCisgICAgICAgICAgICAgICAgIHFl bXVfZG1hICoqZHZtYSkKIHsKICAgICBJT01NVVN0YXRlICpzOwogICAgIGludCBpb21tdV9pb19t ZW1vcnk7CkBAIC0zMjIsNyArMzIzLDEwIEBACiAKICAgICBpb21tdV9pb19tZW1vcnkgPSBjcHVf cmVnaXN0ZXJfaW9fbWVtb3J5KDAsIGlvbW11X21lbV9yZWFkLCBpb21tdV9tZW1fd3JpdGUsIHMp OwogICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNhbF9tZW1vcnkoYWRkciwgSU9NTVVfTlJFR1MgKiA0 LCBpb21tdV9pb19tZW1vcnkpOwotICAgIAorCisgICAgcy0+cGFyZW50X2RtYSA9IHBhcmVudF9k bWE7CisgICAgKmR2bWEgPSBxZW11X2luaXRfZG1hKHNwYXJjX2lvbW11X21lbW9yeV9ydywgcyk7 CisKICAgICByZWdpc3Rlcl9zYXZldm0oImlvbW11IiwgYWRkciwgMiwgaW9tbXVfc2F2ZSwgaW9t bXVfbG9hZCwgcyk7CiAgICAgcWVtdV9yZWdpc3Rlcl9yZXNldChpb21tdV9yZXNldCwgcyk7CiAg ICAgcmV0dXJuIHM7CkluZGV4OiBxZW11L3ZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3Zs LmgJMjAwNy0wOC0yMiAxOTo1MTozMS4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvdmwuaAkyMDA3 LTA4LTIyIDIwOjAzOjA5LjAwMDAwMDAwMCArMDAwMApAQCAtMTI2Myw3ICsxMjYzLDggQEAKIGV4 dGVybiBRRU1VTWFjaGluZSBzczVfbWFjaGluZSwgc3MxMF9tYWNoaW5lOwogCiAvKiBpb21tdS5j ICovCi12b2lkICppb21tdV9pbml0KHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKTsKK3ZvaWQgKmlv bW11X2luaXQodGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHFlbXVfZG1hICpwYXJlbnRfZG1hLAor ICAgICAgICAgICAgICAgICBxZW11X2RtYSAqKmR2bWEpOwogdm9pZCBzcGFyY19pb21tdV9tZW1v cnlfcncodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbiwgaW50IGlzX3dyaXRl KTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBzcGFyY19pb21tdV9tZW1vcnlfcmVhZCh2b2lkICpvcGFx dWUsCg== ------=_Part_99721_13484370.1187984458502 Content-Type: text/x-diff; name=sun4c.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5r37hev Content-Disposition: attachment; filename="sun4c.diff" SW5kZXg6IHFlbXUvaHcvc3VuNG0uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvc3VuNG0u YwkyMDA3LTA4LTIyIDIwOjAzOjQ3LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9zdW40bS5j CTIwMDctMDgtMjMgMTc6MzA6MjIuMDAwMDAwMDAwICswMDAwCkBAIC0xLDcgKzEsNyBAQAogLyoK LSAqIFFFTVUgU3VuNG0gU3lzdGVtIEVtdWxhdG9yCisgKiBRRU1VIFN1bjRtL1N1bjRjIFN5c3Rl bSBFbXVsYXRvcgogICogCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNSBGYWJyaWNlIEJlbGxh cmQKKyAqIENvcHlyaWdodCAoYykgMjAwMy0yMDA1LCAyMDA3IEZhYnJpY2UgQmVsbGFyZAogICog CiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55 IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbApAQCAtMzYs NiArMzYsMTMgQEAKICAqIFNQQVJDc3RhdGlvbiAyMC94eCwgU1BBUkNzZXJ2ZXIgMjAKICAqIFNQ QVJDc3RhdGlvbiA0CiAgKgorICogU3VuNGMgYXJjaGl0ZWN0dXJlIHdhcyB1c2VkIGluIHRoZSBm b2xsb3dpbmcgbWFjaGluZXM6CisgKiBTUEFSQ3N0YXRpb24gMS8xKywgU1BBUkNzZXJ2ZXIgMS8x KworICogU1BBUkNzdGF0aW9uIFNMQworICogU1BBUkNzdGF0aW9uIElQQworICogU1BBUkNzdGF0 aW9uIEVMQworICogU1BBUkNzdGF0aW9uIElQWAorICoKICAqIFNlZSBmb3IgZXhhbXBsZTogaHR0 cDovL3d3dy5zdW5oZWxwLm9yZy9mYXEvc3VucmVmMS5odG1sCiAgKi8KIApAQCAtNjIsNiArNjks NyBAQAogICAgIHRhcmdldF9waHlzX2FkZHJfdCBzZXJpYWxfYmFzZSwgZmRfYmFzZTsKICAgICB0 YXJnZXRfcGh5c19hZGRyX3QgZG1hX2Jhc2UsIGVzcF9iYXNlLCBsZV9iYXNlOwogICAgIHRhcmdl dF9waHlzX2FkZHJfdCB0Y3hfYmFzZSwgY3NfYmFzZSwgcG93ZXJfYmFzZTsKKyAgICB0YXJnZXRf cGh5c19hZGRyX3Qgc3VuNGNfaW50Y3RsX2Jhc2UsIHN1bjRjX2NvdW50ZXJfYmFzZTsKICAgICBs b25nIHZyYW1fc2l6ZSwgbnZyYW1fc2l6ZTsKICAgICAvLyBJUlEgbnVtYmVycyBhcmUgbm90IFBJ TCBvbmVzLCBidXQgbWFzdGVyIGludGVycnVwdCBjb250cm9sbGVyIHJlZ2lzdGVyCiAgICAgLy8g Yml0IG51bWJlcnMKQEAgLTI4Niw2ICsyOTQsMTIgQEAKICAgICBjcHVfcGh5c2ljYWxfbWVtb3J5 X3J3KGFkZHIsIGJ1ZiwgbGVuLCBpc193cml0ZSk7CiB9CiAKK3N0YXRpYyB2b2lkIHN1bjRjX2Rt YV9tZW1vcnlfcncodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNf d3JpdGUpCit7CisgICAgY3B1X21lbW9yeV9yd19kZWJ1ZyhvcGFxdWUsIGFkZHIsIGJ1ZiwgbGVu LCBpc193cml0ZSk7Cit9CisKIHN0YXRpYyB2b2lkIHNwYXJjX2R1bW15X21lbW9yeV9ydyh2b2lk ICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbiwgaW50IGlzX3dyaXRlKQogewpAQCAt NDE4LDYgKzQzMiw5MyBAQAogICAgIHJldHVybiBudnJhbTsKIH0KIAorc3RhdGljIHZvaWQgKnN1 bjRjX2h3X2luaXQoY29uc3Qgc3RydWN0IGh3ZGVmICpod2RlZiwgaW50IFJBTV9zaXplLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheVN0YXRlICpkcywgY29uc3QgY2hhciAqY3B1 X21vZGVsKQorCit7CisgICAgQ1BVU3RhdGUgKmVudjsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAg ICB2b2lkICplc3BkbWEsICpsZWRtYSwgKm1haW5fZXNwLCAqbnZyYW07CisgICAgY29uc3Qgc3Bh cmNfZGVmX3QgKmRlZjsKKyAgICBxZW11X2lycSAqY3B1X2lycXMsICpzbGF2aW9faXJxLCAqZXNw ZG1hX2lycSwgKmxlZG1hX2lycTsKKyAgICBxZW11X2lycSAqZXNwX3Jlc2V0LCAqbGVfcmVzZXQ7 CisgICAgcWVtdV9kbWEgKnBoeXNpY2FsX2RtYSwgKmR1bW15X2RtYSwgKm1tdV9kbWEsICplc3Bf ZHZtYSwgKmxlX2R2bWE7CisKKyAgICAvKiBpbml0IENQVSAqLworICAgIHNwYXJjX2ZpbmRfYnlf bmFtZShjcHVfbW9kZWwsICZkZWYpOworICAgIGlmIChkZWYgPT0gTlVMTCkgeworICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIlVuYWJsZSB0byBmaW5kIFNwYXJjIENQVSBkZWZpbml0aW9uXG4iKTsK KyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICBlbnYgPSBjcHVfaW5pdCgpOworICAgIGNw dV9zcGFyY19yZWdpc3RlcihlbnYsIGRlZik7CisgICAgcWVtdV9yZWdpc3Rlcl9yZXNldChtYWlu X2NwdV9yZXNldCwgZW52KTsKKyAgICByZWdpc3Rlcl9zYXZldm0oImNwdSIsIDAsIDMsIGNwdV9z YXZlLCBjcHVfbG9hZCwgZW52KTsKKyAgICBjcHVfaXJxcyA9IHFlbXVfYWxsb2NhdGVfaXJxcyhj cHVfc2V0X2lycSwgZW52LCBNQVhfUElMUyk7CisKKyAgICAvKiBhbGxvY2F0ZSBSQU0gKi8KKyAg ICBjcHVfcmVnaXN0ZXJfcGh5c2ljYWxfbWVtb3J5KDAsIFJBTV9zaXplLCAwKTsKKworICAgIHBo eXNpY2FsX2RtYSA9IHFlbXVfaW5pdF9kbWEoc3BhcmNfZG1hX21lbW9yeV9ydywgTlVMTCk7Cisg ICAgZHVtbXlfZG1hID0gcWVtdV9pbml0X2RtYShzcGFyY19kdW1teV9tZW1vcnlfcncsIE5VTEwp OworICAgIG1tdV9kbWEgPSBxZW11X2luaXRfZG1hKHN1bjRjX2RtYV9tZW1vcnlfcncsIGVudik7 CisKKyAgICBzbGF2aW9faW50Y3RsID0gc3VuNGNfaW50Y3RsX2luaXQoaHdkZWYtPnN1bjRjX2lu dGN0bF9iYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2xhdmlv X2lycSwgY3B1X2lycXMpOworCisgICAgZXNwZG1hID0gc3BhcmMzMl9kbWFfaW5pdChod2RlZi0+ ZG1hX2Jhc2UsIHNsYXZpb19pcnFbaHdkZWYtPmVzcF9pcnFdLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmVzcGRtYV9pcnEsIG1tdV9kbWEsICZlc3BfZHZtYSwgMSwgJmVzcF9yZXNl dCk7CisKKyAgICBsZWRtYSA9IHNwYXJjMzJfZG1hX2luaXQoaHdkZWYtPmRtYV9iYXNlICsgMTZV TEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsYXZpb19pcnFbaHdkZWYtPmxlX2ly cV0sICZsZWRtYV9pcnEsIG1tdV9kbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZs ZV9kdm1hLCAwLCAmbGVfcmVzZXQpOworCisKKyAgICBpZiAoZ3JhcGhpY19kZXB0aCAhPSA4ICYm IGdyYXBoaWNfZGVwdGggIT0gMjQpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11OiBV bnN1cHBvcnRlZCBkZXB0aDogJWRcbiIsIGdyYXBoaWNfZGVwdGgpOworICAgICAgICBleGl0ICgx KTsKKyAgICB9CisgICAgdGN4X2luaXQoZHMsIGh3ZGVmLT50Y3hfYmFzZSwgcGh5c19yYW1fYmFz ZSArIFJBTV9zaXplLCBSQU1fc2l6ZSwKKyAgICAgICAgICAgICBod2RlZi0+dnJhbV9zaXplLCBn cmFwaGljX3dpZHRoLCBncmFwaGljX2hlaWdodCwgZ3JhcGhpY19kZXB0aCk7CisKKyAgICBpZiAo bmRfdGFibGVbMF0ubW9kZWwgPT0gTlVMTAorICAgICAgICB8fCBzdHJjbXAobmRfdGFibGVbMF0u bW9kZWwsICJsYW5jZSIpID09IDApIHsKKyAgICAgICAgbGFuY2VfaW5pdCgmbmRfdGFibGVbMF0s IGh3ZGVmLT5sZV9iYXNlLCAqbGVkbWFfaXJxLCBsZV9kdm1hLCBsZV9yZXNldCk7CisgICAgfSBl bHNlIGlmIChzdHJjbXAobmRfdGFibGVbMF0ubW9kZWwsICI/IikgPT0gMCkgeworICAgICAgICBm cHJpbnRmKHN0ZGVyciwgInFlbXU6IFN1cHBvcnRlZCBOSUNzOiBsYW5jZVxuIik7CisgICAgICAg IGV4aXQgKDEpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAicWVtdTog VW5zdXBwb3J0ZWQgTklDOiAlc1xuIiwgbmRfdGFibGVbMF0ubW9kZWwpOworICAgICAgICBleGl0 ICgxKTsKKyAgICB9CisKKyAgICBudnJhbSA9IG00OHQ1OV9pbml0KHNsYXZpb19pcnFbMF0sIGh3 ZGVmLT5udnJhbV9iYXNlLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgaHdkZWYtPm52cmFt X3NpemUsIDgpOworCisgICAgc2xhdmlvX3RpbWVyX2luaXQoaHdkZWYtPnN1bjRjX2NvdW50ZXJf YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICBzbGF2aW9faXJxW2h3ZGVmLT5jbG9ja19pcnFd LCAyKTsKKworICAgIHNsYXZpb19zZXJpYWxfbXNfa2JkX2luaXQoaHdkZWYtPm1zX2tiX2Jhc2Us IHNsYXZpb19pcnFbaHdkZWYtPm1zX2tiX2lycV0pOworICAgIC8vIFNsYXZpbyBUVFlBIChiYXNl KzQsIExpbnV4IHR0eVMwKSBpcyB0aGUgZmlyc3QgUWVtdSBzZXJpYWwgZGV2aWNlCisgICAgLy8g U2xhdmlvIFRUWUIgKGJhc2UrMCwgTGludXggdHR5UzEpIGlzIHRoZSBzZWNvbmQgUWVtdSBzZXJp YWwgZGV2aWNlCisgICAgc2xhdmlvX3NlcmlhbF9pbml0KGh3ZGVmLT5zZXJpYWxfYmFzZSwgc2xh dmlvX2lycVtod2RlZi0+c2VyX2lycV0sCisgICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbF9o ZHNbMV0sIHNlcmlhbF9oZHNbMF0pOworICAgIGZkY3RybF9pbml0KHNsYXZpb19pcnFbaHdkZWYt PmZkX2lycV0sIDAsIDEsIGh3ZGVmLT5mZF9iYXNlLCBmZF90YWJsZSwKKyAgICAgICAgICAgICAg ICBkdW1teV9kbWEpOworCisgICAgbWFpbl9lc3AgPSBlc3BfaW5pdChic190YWJsZSwgaHdkZWYt PmVzcF9iYXNlLCAqZXNwZG1hX2lycSwgZXNwX2R2bWEsCisgICAgICAgICAgICAgICAgICAgICAg ICBlc3BfcmVzZXQpOworCisgICAgZm9yIChpID0gMDsgaSA8IE1BWF9ESVNLUzsgaSsrKSB7Cisg ICAgICAgIGlmIChic190YWJsZVtpXSkgeworICAgICAgICAgICAgZXNwX3Njc2lfYXR0YWNoKG1h aW5fZXNwLCBic190YWJsZVtpXSwgaSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g bnZyYW07Cit9CisKIHN0YXRpYyB2b2lkIHN1bjRtX2xvYWRfa2VybmVsKGxvbmcgdnJhbV9zaXpl LCBpbnQgUkFNX3NpemUsIGludCBib290X2RldmljZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKmtlcm5lbF9maWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKmtlcm5lbF9jbWRsaW5lLApAQCAtNTAxLDYgKzYwMiw4IEBA CiAgICAgICAgIC5lc3BfYmFzZSAgICAgPSAweDc4ODAwMDAwLAogICAgICAgICAubGVfYmFzZSAg ICAgID0gMHg3OGMwMDAwMCwKICAgICAgICAgLnBvd2VyX2Jhc2UgICA9IDB4N2EwMDAwMDAsCisg ICAgICAgIC5zdW40Y19pbnRjdGxfYmFzZSAgPSAtMSwKKyAgICAgICAgLnN1bjRjX2NvdW50ZXJf YmFzZSA9IC0xLAogICAgICAgICAudnJhbV9zaXplICAgID0gMHgwMDEwMDAwMCwKICAgICAgICAg Lm52cmFtX3NpemUgICA9IDB4MjAwMCwKICAgICAgICAgLmVzcF9pcnEgPSAxOCwKQEAgLTUzNCw2 ICs2MzcsOCBAQAogICAgICAgICAuZXNwX2Jhc2UgICAgID0gMHhlZjA4MDAwMDBVTEwsCiAgICAg ICAgIC5sZV9iYXNlICAgICAgPSAweGVmMGMwMDAwMFVMTCwKICAgICAgICAgLnBvd2VyX2Jhc2Ug ICA9IDB4ZWZhMDAwMDAwVUxMLAorICAgICAgICAuc3VuNGNfaW50Y3RsX2Jhc2UgID0gLTEsCisg ICAgICAgIC5zdW40Y19jb3VudGVyX2Jhc2UgPSAtMSwKICAgICAgICAgLnZyYW1fc2l6ZSAgICA9 IDB4MDAxMDAwMDAsCiAgICAgICAgIC5udnJhbV9zaXplICAgPSAweDIwMDAsCiAgICAgICAgIC5l c3BfaXJxID0gMTgsCkBAIC01NTEsNiArNjU2LDM3IEBACiAgICAgICAgICAgICA2LCAwLCA0LCAx MCwgOCwgMCwgMTEsIDAsCTAsIDAsIDAsIDAsIDE1LCAwLCAxNSwgMCwKICAgICAgICAgfSwKICAg ICB9LAorICAgIC8qIFNTLTIgKi8KKyAgICB7CisgICAgICAgIC5pb21tdV9iYXNlICAgPSAweGY4 MDAwMDAwLAorICAgICAgICAudGN4X2Jhc2UgICAgID0gMHhmZTAwMDAwMCwKKyAgICAgICAgLmNz X2Jhc2UgICAgICA9IC0xLAorICAgICAgICAuc2xhdmlvX2Jhc2UgID0gMHhmMDAwMDAwMCwKKyAg ICAgICAgLm1zX2tiX2Jhc2UgICA9IDB4ZjAwMDAwMDAsCisgICAgICAgIC5zZXJpYWxfYmFzZSAg PSAweGYxMDAwMDAwLAorICAgICAgICAubnZyYW1fYmFzZSAgID0gMHhmMjAwMDAwMCwKKyAgICAg ICAgLmZkX2Jhc2UgICAgICA9IDB4ZjcyMDAwMDAsCisgICAgICAgIC5jb3VudGVyX2Jhc2UgPSAt MSwKKyAgICAgICAgLmludGN0bF9iYXNlICA9IC0xLAorICAgICAgICAuZG1hX2Jhc2UgICAgID0g MHhmODQwMDAwMCwKKyAgICAgICAgLmVzcF9iYXNlICAgICA9IDB4Zjg4MDAwMDAsCisgICAgICAg IC5sZV9iYXNlICAgICAgPSAweGY4YzAwMDAwLAorICAgICAgICAucG93ZXJfYmFzZSAgID0gLTEs CisgICAgICAgIC5zdW40Y19pbnRjdGxfYmFzZSAgPSAweGY1MDAwMDAwLAorICAgICAgICAuc3Vu NGNfY291bnRlcl9iYXNlID0gMHhmMzAwMDAwMCwKKyAgICAgICAgLnZyYW1fc2l6ZSAgICA9IDB4 MDAxMDAwMDAsCisgICAgICAgIC5udnJhbV9zaXplICAgPSAweDIwMDAsIC8vIFhYWCAweDgwMCwK KyAgICAgICAgLmVzcF9pcnEgPSAyLAorICAgICAgICAubGVfaXJxID0gMywKKyAgICAgICAgLmNs b2NrX2lycSA9IDUsCisgICAgICAgIC5jbG9jazFfaXJxID0gNywKKyAgICAgICAgLm1zX2tiX2ly cSA9IDEsCisgICAgICAgIC5zZXJfaXJxID0gMSwKKyAgICAgICAgLmZkX2lycSA9IDEsCisgICAg ICAgIC5tZV9pcnEgPSAxLAorICAgICAgICAuY3NfaXJxID0gLTEsCisgICAgICAgIC5tYWNoaW5l X2lkID0gMHg1NSwKKyAgICB9LAogfTsKIAogc3RhdGljIHZvaWQgc3VuNG1fY29tbW9uX2luaXQo aW50IFJBTV9zaXplLCBpbnQgYm9vdF9kZXZpY2UsIERpc3BsYXlTdGF0ZSAqZHMsCkBAIC01OTks NiArNzM1LDMyIEBACiAgICAgICAgICAgICAgICAgICAgICAgMSwgUFJPTV9BRERSKTsgLy8gWFhY IHByb20gb3ZlcmxhcCwgYWN0dWFsbHkgZmlyc3QgNEdCIG9rCiB9CiAKKy8qIFNQQVJDc3RhdGlv biAyIGhhcmR3YXJlIGluaXRpYWxpc2F0aW9uICovCitzdGF0aWMgdm9pZCBzczJfaW5pdChpbnQg UkFNX3NpemUsIGludCB2Z2FfcmFtX3NpemUsIGludCBib290X2RldmljZSwKKyAgICAgICAgICAg ICAgICAgICAgIERpc3BsYXlTdGF0ZSAqZHMsIGNvbnN0IGNoYXIgKipmZF9maWxlbmFtZSwgaW50 IHNuYXBzaG90LAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqa2VybmVsX2ZpbGVu YW1lLCBjb25zdCBjaGFyICprZXJuZWxfY21kbGluZSwKKyAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKmluaXRyZF9maWxlbmFtZSwgY29uc3QgY2hhciAqY3B1X21vZGVsKQoreworICAg IHZvaWQgKm52cmFtOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBtYXhfcmFtID0gMHgxMDAwMDAw MDsKKyAgICBjb25zdCBpbnQgbWFjaGluZSA9IDI7CisKKyAgICBpZiAoY3B1X21vZGVsID09IE5V TEwpCisgICAgICAgIGNwdV9tb2RlbCA9ICJDeXByZXNzIENZN0M2MDEiOworCisgICAgaWYgKCh1 bnNpZ25lZCBpbnQpUkFNX3NpemUgPiBtYXhfcmFtKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJy LCAicWVtdTogVG9vIG11Y2ggbWVtb3J5IGZvciB0aGlzIG1hY2hpbmU6ICVkLCBtYXhpbXVtICVk XG4iLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpUkFNX3NpemUgLyAoMTAyNCAqIDEw MjQpLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpbWF4X3JhbSAvICgxMDI0ICogMTAy NCkpOworICAgICAgICBleGl0KDEpOworICAgIH0KKyAgICBudnJhbSA9IHN1bjRjX2h3X2luaXQo Jmh3ZGVmc1ttYWNoaW5lXSwgUkFNX3NpemUsIGRzLCBjcHVfbW9kZWwpOworCisgICAgc3VuNG1f bG9hZF9rZXJuZWwoaHdkZWZzW21hY2hpbmVdLnZyYW1fc2l6ZSwgUkFNX3NpemUsIGJvb3RfZGV2 aWNlLAorICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbF9maWxlbmFtZSwga2VybmVsX2NtZGxp bmUsIGluaXRyZF9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBod2RlZnNbbWFjaGlu ZV0ubWFjaGluZV9pZCwgbnZyYW0pOworfQorCiBRRU1VTWFjaGluZSBzczVfbWFjaGluZSA9IHsK ICAgICAiU1MtNSIsCiAgICAgIlN1bjRtIHBsYXRmb3JtLCBTUEFSQ3N0YXRpb24gNSIsCkBAIC02 MTAsMyArNzcyLDkgQEAKICAgICAiU3VuNG0gcGxhdGZvcm0sIFNQQVJDc3RhdGlvbiAxMCIsCiAg ICAgc3MxMF9pbml0LAogfTsKKworUUVNVU1hY2hpbmUgc3MyX21hY2hpbmUgPSB7CisgICAgIlNT LTIiLAorICAgICJTdW40YyBwbGF0Zm9ybSwgU1BBUkNzdGF0aW9uIDIiLAorICAgIHNzMl9pbml0 LAorfTsKSW5kZXg6IHFlbXUvdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHFlbXUub3JpZy90YXJnZXQtc3BhcmMvdHJhbnNsYXRlLmMJMjAwNy0wOC0yMiAxOTo1NjozNy4w MDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jCTIwMDctMDgt MjIgMjA6MDM6NTUuMDAwMDAwMDAwICswMDAwCkBAIC0zNDU2LDYgKzM0NTYsMTIgQEAKICAgICB9 LAogI2Vsc2UKICAgICB7CisgICAgICAgIC5uYW1lID0gIkN5cHJlc3MgQ1k3QzYwMSIsCisgICAg ICAgIC5pdV92ZXJzaW9uID0gMHgxMSA8PCAyNCwgLyogSW1wbCAxLCB2ZXIgMSAqLworICAgICAg ICAuZnB1X3ZlcnNpb24gPSAzIDw8IDE3LCAvKiBGUFUgdmVyc2lvbiAzIChXZWl0ZWsgV1RMMzE3 MC8yKSAqLworICAgICAgICAubW11X3ZlcnNpb24gPSAwLAorICAgIH0sCisgICAgewogICAgICAg ICAubmFtZSA9ICJGdWppdHN1IE1CODY5MDQiLAogICAgICAgICAuaXVfdmVyc2lvbiA9IDB4MDQg PDwgMjQsIC8qIEltcGwgMCwgdmVyIDQgKi8KICAgICAgICAgLmZwdV92ZXJzaW9uID0gNCA8PCAx NywgLyogRlBVIHZlcnNpb24gNCAoTWVpa28pICovCkluZGV4OiBxZW11L3ZsLmMKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gcWVtdS5vcmlnL3ZsLmMJMjAwNy0wOC0yMiAxOTo1NjozNy4wMDAwMDAwMDAgKzAwMDAK KysrIHFlbXUvdmwuYwkyMDA3LTA4LTIyIDIwOjAzOjU1LjAwMDAwMDAwMCArMDAwMApAQCAtNzEy Nyw2ICs3MTI3LDcgQEAKICNlbHNlCiAgICAgcWVtdV9yZWdpc3Rlcl9tYWNoaW5lKCZzczVfbWFj aGluZSk7CiAgICAgcWVtdV9yZWdpc3Rlcl9tYWNoaW5lKCZzczEwX21hY2hpbmUpOworICAgIHFl bXVfcmVnaXN0ZXJfbWFjaGluZSgmc3MyX21hY2hpbmUpOwogI2VuZGlmCiAjZWxpZiBkZWZpbmVk KFRBUkdFVF9BUk0pCiAgICAgcWVtdV9yZWdpc3Rlcl9tYWNoaW5lKCZpbnRlZ3JhdG9yY3BfbWFj aGluZSk7CkluZGV4OiBxZW11L3ZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3ZsLmgJMjAw Ny0wOC0yMiAyMDowMzo0Ny4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvdmwuaAkyMDA3LTA4LTIy IDIwOjAzOjU1LjAwMDAwMDAwMCArMDAwMApAQCAtMTI2MCw3ICsxMjYwLDcgQEAKIHZvaWQgUFBD X2RlYnVnX3dyaXRlICh2b2lkICpvcGFxdWUsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCk7 CiAKIC8qIHN1bjRtLmMgKi8KLWV4dGVybiBRRU1VTWFjaGluZSBzczVfbWFjaGluZSwgc3MxMF9t YWNoaW5lOworZXh0ZXJuIFFFTVVNYWNoaW5lIHNzNV9tYWNoaW5lLCBzczEwX21hY2hpbmUsIHNz Ml9tYWNoaW5lOwogCiAvKiBpb21tdS5jICovCiB2b2lkICppb21tdV9pbml0KHRhcmdldF9waHlz X2FkZHJfdCBhZGRyLCBxZW11X2RtYSAqcGFyZW50X2RtYSwKQEAgLTEyNzksNiArMTI3OSwxMCBA QAogdm9pZCBzbGF2aW9fcGljX2luZm8odm9pZCAqb3BhcXVlKTsKIHZvaWQgc2xhdmlvX2lycV9p bmZvKHZvaWQgKm9wYXF1ZSk7CiAKKy8qIHN1bjRjX2ludGN0bC5jICovCit2b2lkICpzdW40Y19p bnRjdGxfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgcWVtdV9pcnEgKippcnEsCisgICAg ICAgICAgICAgICAgICAgICAgICBxZW11X2lycSAqcGFyZW50X2lycSk7CisKIC8qIGxvYWRlci5j ICovCiBpbnQgZ2V0X2ltYWdlX3NpemUoY29uc3QgY2hhciAqZmlsZW5hbWUpOwogaW50IGxvYWRf aW1hZ2UoY29uc3QgY2hhciAqZmlsZW5hbWUsIHVpbnQ4X3QgKmFkZHIpOwpJbmRleDogcWVtdS9o dy9zdW40Y19pbnRjdGwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvc3VuNGNfaW50Y3RsLmMJMjAwNy0wOC0y MiAyMDowMzo1NS4wMDAwMDAwMDAgKzAwMDAKQEAgLTAsMCArMSwyMjEgQEAKKy8qCisgKiBRRU1V IFNwYXJjIFN1bjRjIGludGVycnVwdCBjb250cm9sbGVyIGVtdWxhdGlvbgorICoKKyAqIENvcHly aWdodCAoYykgMjAwNyBGYWJyaWNlIEJlbGxhcmQKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVi eSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5 CisgKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMg KHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAorICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cworICogdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LCBhbmQvb3Igc2VsbAorICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5 cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVk IGluCisgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2Fy ZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJS QU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBF VkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s CisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF IE9SIE9USEVSIERFQUxJTkdTIElOCisgKiBUSEUgU09GVFdBUkUuCisgKi8KKyNpbmNsdWRlICJ2 bC5oIgorLy8jZGVmaW5lIERFQlVHX0lSUV9DT1VOVAorLy8jZGVmaW5lIERFQlVHX0lSUQorCisj aWZkZWYgREVCVUdfSVJRCisjZGVmaW5lIERQUklOVEYoZm10LCBhcmdzLi4uKSBcCitkbyB7IHBy aW50ZigiSVJROiAiIGZtdCAsICMjYXJncyk7IH0gd2hpbGUgKDApCisjZWxzZQorI2RlZmluZSBE UFJJTlRGKGZtdCwgYXJncy4uLikKKyNlbmRpZgorCisvKgorICogUmVnaXN0ZXJzIG9mIGludGVy cnVwdCBjb250cm9sbGVyIGluIHN1bjRjLgorICoKKyAqLworCisjZGVmaW5lIE1BWF9QSUxTIDE2 CisKK3R5cGVkZWYgc3RydWN0IFN1bjRjX0lOVENUTFN0YXRlIHsKKyNpZmRlZiBERUJVR19JUlFf Q09VTlQKKyAgICB1aW50NjRfdCBpcnFfY291bnQ7CisjZW5kaWYKKyAgICBxZW11X2lycSAqY3B1 X2lycXM7CisgICAgY29uc3QgdWludDMyX3QgKmludGJpdF90b19sZXZlbDsKKyAgICB1aW50MzJf dCBwaWxfb3V0OworICAgIHVpbnQ4X3QgcmVnOworICAgIHVpbnQ4X3QgcGVuZGluZzsKK30gU3Vu NGNfSU5UQ1RMU3RhdGU7CisKKyNkZWZpbmUgSU5UQ1RMX01BWEFERFIgMAorI2RlZmluZSBJTlRD VExfU0laRSAoSU5UQ1RMX01BWEFERFIgKyAxKQorCitzdGF0aWMgdm9pZCBzdW40Y19jaGVja19p bnRlcnJ1cHRzKHZvaWQgKm9wYXF1ZSk7CisKK3N0YXRpYyB1aW50MzJfdCBzdW40Y19pbnRjdGxf bWVtX3JlYWRiKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIpCit7CisgICAg U3VuNGNfSU5UQ1RMU3RhdGUgKnMgPSBvcGFxdWU7CisgICAgdWludDMyX3QgcmV0OworCisgICAg cmV0ID0gcy0+cmVnOworICAgIERQUklOVEYoInJlYWQgcmVnIDB4IiBUQVJHRVRfRk1UX3BseCAi ID0gJXhcbiIsIGFkZHIsIHJldCk7CisKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9p ZCBzdW40Y19pbnRjdGxfbWVtX3dyaXRlYih2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJf dCBhZGRyLCB1aW50MzJfdCB2YWwpCit7CisgICAgU3VuNGNfSU5UQ1RMU3RhdGUgKnMgPSBvcGFx dWU7CisKKyAgICBEUFJJTlRGKCJ3cml0ZSByZWcgMHgiIFRBUkdFVF9GTVRfcGx4ICIgPSAleFxu IiwgYWRkciwgdmFsKTsKKyAgICB2YWwgJj0gMHhiZjsKKyAgICBzLT5yZWcgPSB2YWw7CisgICAg c3VuNGNfY2hlY2tfaW50ZXJydXB0cyhzKTsKK30KKworc3RhdGljIENQVVJlYWRNZW1vcnlGdW5j ICpzdW40Y19pbnRjdGxfbWVtX3JlYWRbM10gPSB7CisgICAgc3VuNGNfaW50Y3RsX21lbV9yZWFk YiwKKyAgICBzdW40Y19pbnRjdGxfbWVtX3JlYWRiLAorICAgIHN1bjRjX2ludGN0bF9tZW1fcmVh ZGIsCit9OworCitzdGF0aWMgQ1BVV3JpdGVNZW1vcnlGdW5jICpzdW40Y19pbnRjdGxfbWVtX3dy aXRlWzNdID0geworICAgIHN1bjRjX2ludGN0bF9tZW1fd3JpdGViLAorICAgIHN1bjRjX2ludGN0 bF9tZW1fd3JpdGViLAorICAgIHN1bjRjX2ludGN0bF9tZW1fd3JpdGViLAorfTsKKwordm9pZCBz dW40Y19waWNfaW5mbyh2b2lkICpvcGFxdWUpCit7CisgICAgU3VuNGNfSU5UQ1RMU3RhdGUgKnMg PSBvcGFxdWU7CisKKyAgICB0ZXJtX3ByaW50ZigibWFzdGVyOiBwZW5kaW5nIDB4JTIuMngsIGVu YWJsZWQgMHglMi4yeFxuIiwgcy0+cGVuZGluZywgcy0+cmVnKTsKK30KKwordm9pZCBzdW40Y19p cnFfaW5mbyh2b2lkICpvcGFxdWUpCit7CisjaWZuZGVmIERFQlVHX0lSUV9DT1VOVAorICAgIHRl cm1fcHJpbnRmKCJpcnEgc3RhdGlzdGljIGNvZGUgbm90IGNvbXBpbGVkLlxuIik7CisjZWxzZQor ICAgIFN1bjRjX0lOVENUTFN0YXRlICpzID0gb3BhcXVlOworICAgIGludDY0X3QgY291bnQ7CisK KyAgICB0ZXJtX3ByaW50ZigiSVJRIHN0YXRpc3RpY3M6XG4iKTsKKyAgICBjb3VudCA9IHMtPmly cV9jb3VudFtpXTsKKyAgICBpZiAoY291bnQgPiAwKQorICAgICAgICB0ZXJtX3ByaW50ZigiJTJk OiAlIiBQUklkNjQgIlxuIiwgaSwgY291bnQpOworI2VuZGlmCit9CisKK3N0YXRpYyBjb25zdCB1 aW50MzJfdCBpbnRiaXRfdG9fbGV2ZWxbXSA9IHsgMCwgMSwgNCwgNiwgOCwgMTAsIDAsIDE0LCB9 OworCitzdGF0aWMgdm9pZCBzdW40Y19jaGVja19pbnRlcnJ1cHRzKHZvaWQgKm9wYXF1ZSkKK3sK KyAgICBTdW40Y19JTlRDVExTdGF0ZSAqcyA9IG9wYXF1ZTsKKyAgICB1aW50MzJfdCBwaWxfcGVu ZGluZzsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIERQUklOVEYoInBlbmRpbmcgJXggZGlz YWJsZWQgJXhcbiIsIHBlbmRpbmcsIHMtPmludHJlZ21fZGlzYWJsZWQpOworICAgIHBpbF9wZW5k aW5nID0gMDsKKyAgICBpZiAocy0+cGVuZGluZyAmJiAhKHMtPnJlZyAmIDB4ODAwMDAwMDApKSB7 CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAgICAgICAgICAgIGlmIChzLT5w ZW5kaW5nICYgKDEgPDwgaSkpCisgICAgICAgICAgICAgICAgcGlsX3BlbmRpbmcgfD0gMSA8PCBp bnRiaXRfdG9fbGV2ZWxbaV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBp IDwgTUFYX1BJTFM7IGkrKykgeworICAgICAgICBpZiAocGlsX3BlbmRpbmcgJiAoMSA8PCBpKSkg eworICAgICAgICAgICAgaWYgKCEocy0+cGlsX291dCAmICgxIDw8IGkpKSkKKyAgICAgICAgICAg ICAgICBxZW11X2lycV9yYWlzZShzLT5jcHVfaXJxc1tpXSk7CisgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICBpZiAocy0+cGlsX291dCAmICgxIDw8IGkpKQorICAgICAgICAgICAgICAgIHFl bXVfaXJxX2xvd2VyKHMtPmNwdV9pcnFzW2ldKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzLT5w aWxfb3V0ID0gcGlsX3BlbmRpbmc7Cit9CisKKy8qCisgKiAiaXJxIiBoZXJlIGlzIHRoZSBiaXQg bnVtYmVyIGluIHRoZSBzeXN0ZW0gaW50ZXJydXB0IHJlZ2lzdGVyCisgKi8KK3N0YXRpYyB2b2lk IHN1bjRjX3NldF9pcnEodm9pZCAqb3BhcXVlLCBpbnQgaXJxLCBpbnQgbGV2ZWwpCit7CisgICAg U3VuNGNfSU5UQ1RMU3RhdGUgKnMgPSBvcGFxdWU7CisgICAgdWludDMyX3QgbWFzayA9IDEgPDwg aXJxOworICAgIHVpbnQzMl90IHBpbCA9IGludGJpdF90b19sZXZlbFtpcnFdOworCisgICAgRFBS SU5URigiU2V0IGlycSAlZCAtPiBwaWwgJWQgbGV2ZWwgJWRcbiIsIGlycSwgcGlsLAorICAgICAg ICAgICAgbGV2ZWwpOworICAgIGlmIChwaWwgPiAwKSB7CisgICAgICAgIGlmIChsZXZlbCkgewor I2lmZGVmIERFQlVHX0lSUV9DT1VOVAorICAgICAgICAgICAgcy0+aXJxX2NvdW50W3BpbF0rKzsK KyNlbmRpZgorICAgICAgICAgICAgcy0+cGVuZGluZyB8PSBtYXNrOworICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgcy0+cGVuZGluZyAmPSB+bWFzazsKKyAgICAgICAgfQorICAgICAgICBz dW40Y19jaGVja19pbnRlcnJ1cHRzKHMpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgc3VuNGNf aW50Y3RsX3NhdmUoUUVNVUZpbGUgKmYsIHZvaWQgKm9wYXF1ZSkKK3sKKyAgICBTdW40Y19JTlRD VExTdGF0ZSAqcyA9IG9wYXF1ZTsKKworICAgIHFlbXVfcHV0XzhzKGYsICZzLT5yZWcpOworICAg IHFlbXVfcHV0XzhzKGYsICZzLT5wZW5kaW5nKTsKK30KKworc3RhdGljIGludCBzdW40Y19pbnRj dGxfbG9hZChRRU1VRmlsZSAqZiwgdm9pZCAqb3BhcXVlLCBpbnQgdmVyc2lvbl9pZCkKK3sKKyAg ICBTdW40Y19JTlRDVExTdGF0ZSAqcyA9IG9wYXF1ZTsKKworICAgIGlmICh2ZXJzaW9uX2lkICE9 IDEpCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgcWVtdV9nZXRfOHMoZiwgJnMtPnJl Zyk7CisgICAgcWVtdV9nZXRfOHMoZiwgJnMtPnBlbmRpbmcpOworICAgIHN1bjRjX2NoZWNrX2lu dGVycnVwdHMocyk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc3VuNGNfaW50 Y3RsX3Jlc2V0KHZvaWQgKm9wYXF1ZSkKK3sKKyAgICBTdW40Y19JTlRDVExTdGF0ZSAqcyA9IG9w YXF1ZTsKKworICAgIHMtPnJlZyA9IDE7CisgICAgcy0+cGVuZGluZyA9IDA7CisgICAgc3VuNGNf Y2hlY2tfaW50ZXJydXB0cyhzKTsKK30KKwordm9pZCAqc3VuNGNfaW50Y3RsX2luaXQodGFyZ2V0 X3BoeXNfYWRkcl90IGFkZHIsIHFlbXVfaXJxICoqaXJxLAorICAgICAgICAgICAgICAgICAgICAg ICAgcWVtdV9pcnEgKnBhcmVudF9pcnEpCit7CisgICAgaW50IHN1bjRjX2ludGN0bF9pb19tZW1v cnk7CisgICAgU3VuNGNfSU5UQ1RMU3RhdGUgKnM7CisKKyAgICBzID0gcWVtdV9tYWxsb2N6KHNp emVvZihTdW40Y19JTlRDVExTdGF0ZSkpOworICAgIGlmICghcykKKyAgICAgICAgcmV0dXJuIE5V TEw7CisKKyAgICBzdW40Y19pbnRjdGxfaW9fbWVtb3J5ID0gY3B1X3JlZ2lzdGVyX2lvX21lbW9y eSgwLCBzdW40Y19pbnRjdGxfbWVtX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3VuNGNfaW50Y3RsX21lbV93cml0ZSwgcyk7CisgICAg Y3B1X3JlZ2lzdGVyX3BoeXNpY2FsX21lbW9yeShhZGRyLCBJTlRDVExfU0laRSwgc3VuNGNfaW50 Y3RsX2lvX21lbW9yeSk7CisgICAgcy0+Y3B1X2lycXMgPSBwYXJlbnRfaXJxOworCisgICAgcmVn aXN0ZXJfc2F2ZXZtKCJzdW40Y19pbnRjdGwiLCBhZGRyLCAxLCBzdW40Y19pbnRjdGxfc2F2ZSwK KyAgICAgICAgICAgICAgICAgICAgc3VuNGNfaW50Y3RsX2xvYWQsIHMpOworCisgICAgcWVtdV9y ZWdpc3Rlcl9yZXNldChzdW40Y19pbnRjdGxfcmVzZXQsIHMpOworICAgICppcnEgPSBxZW11X2Fs bG9jYXRlX2lycXMoc3VuNGNfc2V0X2lycSwgcywgOCk7CisKKyAgICBzdW40Y19pbnRjdGxfcmVz ZXQocyk7CisgICAgcmV0dXJuIHM7Cit9CisKSW5kZXg6IHFlbXUvTWFrZWZpbGUudGFyZ2V0Cj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHFlbXUub3JpZy9NYWtlZmlsZS50YXJnZXQJMjAwNy0wOC0yMiAxOTo1Njoz Ny4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvTWFrZWZpbGUudGFyZ2V0CTIwMDctMDgtMjIgMjA6 MDM6NTUuMDAwMDAwMDAwICswMDAwCkBAIC00NTQsNyArNDU0LDcgQEAKIGVsc2UKIFZMX09CSlMr PSBzdW40bS5vIHRjeC5vIHBjbmV0Lm8gaW9tbXUubyBtNDh0NTkubyBzbGF2aW9faW50Y3RsLm8K IFZMX09CSlMrPSBzbGF2aW9fdGltZXIubyBzbGF2aW9fc2VyaWFsLm8gc2xhdmlvX21pc2MubyBm ZGMubyBlc3AubyBzcGFyYzMyX2RtYS5vCi1WTF9PQkpTKz0gY3M0MjMxLm8gcHRpbWVyLm8KK1ZM X09CSlMrPSBjczQyMzEubyBwdGltZXIubyBzdW40Y19pbnRjdGwubwogZW5kaWYKIGVuZGlmCiBp ZmVxICgkKFRBUkdFVF9CQVNFX0FSQ0gpLCBhcm0pCg== ------=_Part_99721_13484370.1187984458502 Content-Type: text/x-diff; name=pci_gdma.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5r37mjb Content-Disposition: attachment; filename="pci_gdma.diff" SW5kZXg6IHFlbXUvaHcvcGNpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L3BjaS5jCTIw MDctMDgtMjMgMTc6NTI6NDkuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3BjaS5jCTIwMDct MDgtMjMgMTg6MjU6MzUuMDAwMDAwMDAwICswMDAwCkBAIC01NzQsMjAgKzU3NCwyMCBAQAogfQog CiAvKiBJbml0aWFsaXplIGEgUENJIE5JQy4gICovCi12b2lkIHBjaV9uaWNfaW5pdChQQ0lCdXMg KmJ1cywgTklDSW5mbyAqbmQsIGludCBkZXZmbikKK3ZvaWQgcGNpX25pY19pbml0KFBDSUJ1cyAq YnVzLCBOSUNJbmZvICpuZCwgaW50IGRldmZuLCBxZW11X2RtYSAqcGFyZW50X2RtYSkKIHsKICAg ICBpZiAoc3RyY21wKG5kLT5tb2RlbCwgIm5lMmtfcGNpIikgPT0gMCkgewogICAgICAgICBwY2lf bmUyMDAwX2luaXQoYnVzLCBuZCwgZGV2Zm4pOwogICAgIH0gZWxzZSBpZiAoc3RyY21wKG5kLT5t b2RlbCwgImk4MjU1MSIpID09IDApIHsKLSAgICAgICAgcGNpX2k4MjU1MV9pbml0KGJ1cywgbmQs IGRldmZuKTsKKyAgICAgICAgcGNpX2k4MjU1MV9pbml0KGJ1cywgbmQsIGRldmZuLCBwYXJlbnRf ZG1hKTsKICAgICB9IGVsc2UgaWYgKHN0cmNtcChuZC0+bW9kZWwsICJpODI1NTdiIikgPT0gMCkg ewotICAgICAgICBwY2lfaTgyNTU3Yl9pbml0KGJ1cywgbmQsIGRldmZuKTsKKyAgICAgICAgcGNp X2k4MjU1N2JfaW5pdChidXMsIG5kLCBkZXZmbiwgcGFyZW50X2RtYSk7CiAgICAgfSBlbHNlIGlm IChzdHJjbXAobmQtPm1vZGVsLCAiaTgyNTU5ZXIiKSA9PSAwKSB7Ci0gICAgICAgIHBjaV9pODI1 NTllcl9pbml0KGJ1cywgbmQsIGRldmZuKTsKKyAgICAgICAgcGNpX2k4MjU1OWVyX2luaXQoYnVz LCBuZCwgZGV2Zm4sIHBhcmVudF9kbWEpOwogICAgIH0gZWxzZSBpZiAoc3RyY21wKG5kLT5tb2Rl bCwgInJ0bDgxMzkiKSA9PSAwKSB7Ci0gICAgICAgIHBjaV9ydGw4MTM5X2luaXQoYnVzLCBuZCwg ZGV2Zm4pOworICAgICAgICBwY2lfcnRsODEzOV9pbml0KGJ1cywgbmQsIGRldmZuLCBwYXJlbnRf ZG1hKTsKICAgICB9IGVsc2UgaWYgKHN0cmNtcChuZC0+bW9kZWwsICJwY25ldCIpID09IDApIHsK LSAgICAgICAgcGNpX3BjbmV0X2luaXQoYnVzLCBuZCwgZGV2Zm4pOworICAgICAgICBwY2lfcGNu ZXRfaW5pdChidXMsIG5kLCBkZXZmbiwgcGFyZW50X2RtYSk7CiAgICAgfSBlbHNlIGlmIChzdHJj bXAobmQtPm1vZGVsLCAiPyIpID09IDApIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11 OiBTdXBwb3J0ZWQgUENJIE5JQ3M6IGk4MjU1MSBpODI1NTdiIGk4MjU1OWVyIgogICAgICAgICAg ICAgICAgICAgICAgICAgIiBuZTJrX3BjaSBwY25ldCBydGw4MTM5XG4iKTsKSW5kZXg6IHFlbXUv aHcvcnRsODEzOS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9ydGw4MTM5LmMJMjAwNy0w OC0yMyAxNzo0NDozMi4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvcnRsODEzOS5jCTIwMDct MDgtMjMgMTc6NTY6MjIuMDAwMDAwMDAwICswMDAwCkBAIC00MTAsOSArNDEwLDYgQEAKIC8qIENs ZWFycyBhbGwgdGFsbHkgY291bnRlcnMgKi8KIHN0YXRpYyB2b2lkIFJUTDgxMzlUYWxseUNvdW50 ZXJzX2NsZWFyKFJUTDgxMzlUYWxseUNvdW50ZXJzKiBjb3VudGVycyk7CiAKLS8qIFdyaXRlcyB0 YWxseSBjb3VudGVycyB0byBzcGVjaWZpZWQgcGh5c2ljYWwgbWVtb3J5IGFkZHJlc3MgKi8KLXN0 YXRpYyB2b2lkIFJUTDgxMzlUYWxseUNvdW50ZXJzX3BoeXNpY2FsX21lbW9yeV93cml0ZSh0YXJn ZXRfcGh5c19hZGRyX3QgdGNfYWRkciwgUlRMODEzOVRhbGx5Q291bnRlcnMqIGNvdW50ZXJzKTsK LQogLyogTG9hZHMgdmFsdWVzIG9mIHRhbGx5IGNvdW50ZXJzIGZyb20gVk0gc3RhdGUgZmlsZSAq Lwogc3RhdGljIHZvaWQgUlRMODEzOVRhbGx5Q291bnRlcnNfbG9hZChRRU1VRmlsZSogZiwgUlRM ODEzOVRhbGx5Q291bnRlcnMgKnRhbGx5X2NvdW50ZXJzKTsKIApAQCAtNDkyLDggKzQ4OSwxMyBA QAogICAgIC8qIFBDSSBpbnRlcnJ1cHQgdGltZXIgKi8KICAgICBRRU1VVGltZXIgKnRpbWVyOwog CisgICAgLyogTWVtb3J5IGFjY2VzcyAqLworICAgIHFlbXVfZG1hICpkbWE7CiB9IFJUTDgxMzlT dGF0ZTsKIAorLyogV3JpdGVzIHRhbGx5IGNvdW50ZXJzIHRvIHNwZWNpZmllZCBwaHlzaWNhbCBt ZW1vcnkgYWRkcmVzcyAqLworc3RhdGljIHZvaWQgUlRMODEzOVRhbGx5Q291bnRlcnNfcGh5c2lj YWxfbWVtb3J5X3dyaXRlKFJUTDgxMzlTdGF0ZSAqcywgdGFyZ2V0X3BoeXNfYWRkcl90IHRjX2Fk ZHIsIFJUTDgxMzlUYWxseUNvdW50ZXJzKiB0YWxseV9jb3VudGVycyk7CisKIHZvaWQgcHJvbTkz NDZfZGVjb2RlX2NvbW1hbmQoRUVwcm9tOTM0NiAqZWVwcm9tLCB1aW50OF90IGNvbW1hbmQpCiB7 CiAgICAgREVCVUdfUFJJTlQoKCJSVEw4MTM5OiBlZXByb20gY29tbWFuZCAweCUwMnhcbiIsIGNv bW1hbmQpKTsKQEAgLTc1MiwxNCArNzU0LDE0IEBACiAKICAgICAgICAgICAgIGlmIChzaXplID4g d3JhcHBlZCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjcHVfcGh5c2ljYWxfbWVt b3J5X3dyaXRlKCBzLT5SeEJ1ZiArIHMtPlJ4QnVmQWRkciwKKyAgICAgICAgICAgICAgICBkbWFf bWVtb3J5X3dyaXRlKCBzLT5kbWEsIHMtPlJ4QnVmICsgcy0+UnhCdWZBZGRyLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Ziwgc2l6ZS13cmFwcGVkICk7CiAg ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8qIHJlc2V0IGJ1ZmZlciBwb2ludGVyICovCiAg ICAgICAgICAgICBzLT5SeEJ1ZkFkZHIgPSAwOwogCi0gICAgICAgICAgICBjcHVfcGh5c2ljYWxf bWVtb3J5X3dyaXRlKCBzLT5SeEJ1ZiArIHMtPlJ4QnVmQWRkciwKKyAgICAgICAgICAgIGRtYV9t ZW1vcnlfd3JpdGUoIHMtPmRtYSwgcy0+UnhCdWYgKyBzLT5SeEJ1ZkFkZHIsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYgKyAoc2l6ZS13cmFwcGVkKSwgd3JhcHBl ZCApOwogCiAgICAgICAgICAgICBzLT5SeEJ1ZkFkZHIgPSB3cmFwcGVkOwpAQCAtNzY5LDcgKzc3 MSw3IEBACiAgICAgfQogCiAgICAgLyogbm9uLXdyYXBwaW5nIHBhdGggb3Igb3ZlcndyYXBwaW5n IGVuYWJsZWQgKi8KLSAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3dyaXRlKCBzLT5SeEJ1ZiArIHMt PlJ4QnVmQWRkciwgYnVmLCBzaXplICk7CisgICAgZG1hX21lbW9yeV93cml0ZSggcy0+ZG1hLCBz LT5SeEJ1ZiArIHMtPlJ4QnVmQWRkciwgYnVmLCBzaXplICk7CiAKICAgICBzLT5SeEJ1ZkFkZHIg Kz0gc2l6ZTsKIH0KQEAgLTk2MiwxMyArOTY0LDEzIEBACiAKICAgICAgICAgdWludDMyX3QgdmFs LCByeGR3MCxyeGR3MSxyeGJ1ZkxPLHJ4YnVmSEk7CiAKLSAgICAgICAgY3B1X3BoeXNpY2FsX21l bW9yeV9yZWFkKGNwbHVzX3J4X3JpbmdfZGVzYywgICAgKHVpbnQ4X3QgKikmdmFsLCA0KTsKKyAg ICAgICAgZG1hX21lbW9yeV9yZWFkKCBzLT5kbWEsIGNwbHVzX3J4X3JpbmdfZGVzYywgICAgKHVp bnQ4X3QgKikmdmFsLCA0KTsKICAgICAgICAgcnhkdzAgPSBsZTMyX3RvX2NwdSh2YWwpOwotICAg ICAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3JlYWQoY3BsdXNfcnhfcmluZ19kZXNjKzQsICAodWlu dDhfdCAqKSZ2YWwsIDQpOworICAgICAgICBkbWFfbWVtb3J5X3JlYWQoIHMtPmRtYSwgY3BsdXNf cnhfcmluZ19kZXNjKzQsICAodWludDhfdCAqKSZ2YWwsIDQpOwogICAgICAgICByeGR3MSA9IGxl MzJfdG9fY3B1KHZhbCk7Ci0gICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZChjcGx1c19y eF9yaW5nX2Rlc2MrOCwgICh1aW50OF90ICopJnZhbCwgNCk7CisgICAgICAgIGRtYV9tZW1vcnlf cmVhZCggcy0+ZG1hLCBjcGx1c19yeF9yaW5nX2Rlc2MrOCwgICh1aW50OF90ICopJnZhbCwgNCk7 CiAgICAgICAgIHJ4YnVmTE8gPSBsZTMyX3RvX2NwdSh2YWwpOwotICAgICAgICBjcHVfcGh5c2lj YWxfbWVtb3J5X3JlYWQoY3BsdXNfcnhfcmluZ19kZXNjKzEyLCAodWludDhfdCAqKSZ2YWwsIDQp OworICAgICAgICBkbWFfbWVtb3J5X3JlYWQoIHMtPmRtYSwgY3BsdXNfcnhfcmluZ19kZXNjKzEy LCAodWludDhfdCAqKSZ2YWwsIDQpOwogICAgICAgICByeGJ1ZkhJID0gbGUzMl90b19jcHUodmFs KTsKIAogICAgICAgICBERUJVR19QUklOVCgoIlJUTDgxMzk6ICsrKyBDKyBtb2RlIFJYIGRlc2Ny aXB0b3IgJWQgJTA4eCAlMDh4ICUwOHggJTA4eFxuIiwKQEAgLTEwMTMsNyArMTAxNSw3IEBACiAg ICAgICAgIHRhcmdldF9waHlzX2FkZHJfdCByeF9hZGRyID0gcnRsODEzOV9hZGRyNjQocnhidWZM TywgcnhidWZISSk7CiAKICAgICAgICAgLyogcmVjZWl2ZS9jb3B5IHRvIHRhcmdldCBtZW1vcnkg Ki8KLSAgICAgICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZSggcnhfYWRkciwgYnVmLCBzaXpl ICk7CisgICAgICAgIGRtYV9tZW1vcnlfd3JpdGUoIHMtPmRtYSwgcnhfYWRkciwgYnVmLCBzaXpl ICk7CiAKICAgICAgICAgaWYgKHMtPkNwQ21kICYgQ1BsdXNSeENoa1N1bSkKICAgICAgICAgewpA QCAtMTAyNiw3ICsxMDI4LDcgQEAKICNlbHNlCiAgICAgICAgIHZhbCA9IDA7CiAjZW5kaWYKLSAg ICAgICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZSggcnhfYWRkcitzaXplLCAodWludDhfdCAq KSZ2YWwsIDQpOworICAgICAgICBkbWFfbWVtb3J5X3dyaXRlKCBzLT5kbWEsIHJ4X2FkZHIrc2l6 ZSwgKHVpbnQ4X3QgKikmdmFsLCA0KTsKIAogLyogZmlyc3Qgc2VnbWVudCBvZiByZWNlaXZlZCBw YWNrZXQgZmxhZyAqLwogI2RlZmluZSBDUF9SWF9TVEFUVVNfRlMgKDE8PDI5KQpAQCAtMTA3NSw5 ICsxMDc3LDkgQEAKIAogICAgICAgICAvKiB1cGRhdGUgcmluZyBkYXRhICovCiAgICAgICAgIHZh bCA9IGNwdV90b19sZTMyKHJ4ZHcwKTsKLSAgICAgICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0 ZShjcGx1c19yeF9yaW5nX2Rlc2MsICAgICh1aW50OF90ICopJnZhbCwgNCk7CisgICAgICAgIGRt YV9tZW1vcnlfd3JpdGUoIHMtPmRtYSwgY3BsdXNfcnhfcmluZ19kZXNjLCAgICAodWludDhfdCAq KSZ2YWwsIDQpOwogICAgICAgICB2YWwgPSBjcHVfdG9fbGUzMihyeGR3MSk7Ci0gICAgICAgIGNw dV9waHlzaWNhbF9tZW1vcnlfd3JpdGUoY3BsdXNfcnhfcmluZ19kZXNjKzQsICAodWludDhfdCAq KSZ2YWwsIDQpOworICAgICAgICBkbWFfbWVtb3J5X3dyaXRlKCBzLT5kbWEsIGNwbHVzX3J4X3Jp bmdfZGVzYys0LCAgKHVpbnQ4X3QgKikmdmFsLCA0KTsKIAogICAgICAgICAvKiB1cGRhdGUgdGFs bHkgY291bnRlciAqLwogICAgICAgICArK3MtPnRhbGx5X2NvdW50ZXJzLlJ4T2s7CkBAIC0xMjY4 LDUwICsxMjcwLDUwIEBACiAgICAgY291bnRlcnMtPlR4VW5kcm4gPSAwOwogfQogCi1zdGF0aWMg dm9pZCBSVEw4MTM5VGFsbHlDb3VudGVyc19waHlzaWNhbF9tZW1vcnlfd3JpdGUodGFyZ2V0X3Bo eXNfYWRkcl90IHRjX2FkZHIsIFJUTDgxMzlUYWxseUNvdW50ZXJzKiB0YWxseV9jb3VudGVycykK K3N0YXRpYyB2b2lkIFJUTDgxMzlUYWxseUNvdW50ZXJzX3BoeXNpY2FsX21lbW9yeV93cml0ZShS VEw4MTM5U3RhdGUgKnMsIHRhcmdldF9waHlzX2FkZHJfdCB0Y19hZGRyLCBSVEw4MTM5VGFsbHlD b3VudGVycyogdGFsbHlfY291bnRlcnMpCiB7CiAgICAgdWludDE2X3QgdmFsMTY7CiAgICAgdWlu dDMyX3QgdmFsMzI7CiAgICAgdWludDY0X3QgdmFsNjQ7CiAKICAgICB2YWw2NCA9IGNwdV90b19s ZTY0KHRhbGx5X2NvdW50ZXJzLT5UeE9rKTsKLSAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3dyaXRl KHRjX2FkZHIgKyAwLCAgICAodWludDhfdCAqKSZ2YWw2NCwgOCk7CisgICAgZG1hX21lbW9yeV93 cml0ZSggcy0+ZG1hLCB0Y19hZGRyICsgMCwgICAgKHVpbnQ4X3QgKikmdmFsNjQsIDgpOwogCiAg ICAgdmFsNjQgPSBjcHVfdG9fbGU2NCh0YWxseV9jb3VudGVycy0+UnhPayk7Ci0gICAgY3B1X3Bo eXNpY2FsX21lbW9yeV93cml0ZSh0Y19hZGRyICsgOCwgICAgKHVpbnQ4X3QgKikmdmFsNjQsIDgp OworICAgIGRtYV9tZW1vcnlfd3JpdGUoIHMtPmRtYSwgdGNfYWRkciArIDgsICAgICh1aW50OF90 ICopJnZhbDY0LCA4KTsKIAogICAgIHZhbDY0ID0gY3B1X3RvX2xlNjQodGFsbHlfY291bnRlcnMt PlR4RVJSKTsKLSAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3dyaXRlKHRjX2FkZHIgKyAxNiwgICAg KHVpbnQ4X3QgKikmdmFsNjQsIDgpOworICAgIGRtYV9tZW1vcnlfd3JpdGUoIHMtPmRtYSwgdGNf YWRkciArIDE2LCAgICAodWludDhfdCAqKSZ2YWw2NCwgOCk7CiAKICAgICB2YWwzMiA9IGNwdV90 b19sZTMyKHRhbGx5X2NvdW50ZXJzLT5SeEVSUik7Ci0gICAgY3B1X3BoeXNpY2FsX21lbW9yeV93 cml0ZSh0Y19hZGRyICsgMjQsICAgICh1aW50OF90ICopJnZhbDMyLCA0KTsKKyAgICBkbWFfbWVt b3J5X3dyaXRlKCBzLT5kbWEsIHRjX2FkZHIgKyAyNCwgICAgKHVpbnQ4X3QgKikmdmFsMzIsIDQp OwogCiAgICAgdmFsMTYgPSBjcHVfdG9fbGUxNih0YWxseV9jb3VudGVycy0+TWlzc1BrdCk7Ci0g ICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZSh0Y19hZGRyICsgMjgsICAgICh1aW50OF90ICop JnZhbDE2LCAyKTsKKyAgICBkbWFfbWVtb3J5X3dyaXRlKCBzLT5kbWEsIHRjX2FkZHIgKyAyOCwg ICAgKHVpbnQ4X3QgKikmdmFsMTYsIDIpOwogCiAgICAgdmFsMTYgPSBjcHVfdG9fbGUxNih0YWxs eV9jb3VudGVycy0+RkFFKTsKLSAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3dyaXRlKHRjX2FkZHIg KyAzMCwgICAgKHVpbnQ4X3QgKikmdmFsMTYsIDIpOworICAgIGRtYV9tZW1vcnlfd3JpdGUoIHMt PmRtYSwgdGNfYWRkciArIDMwLCAgICAodWludDhfdCAqKSZ2YWwxNiwgMik7CiAKICAgICB2YWwz MiA9IGNwdV90b19sZTMyKHRhbGx5X2NvdW50ZXJzLT5UeDFDb2wpOwotICAgIGNwdV9waHlzaWNh bF9tZW1vcnlfd3JpdGUodGNfYWRkciArIDMyLCAgICAodWludDhfdCAqKSZ2YWwzMiwgNCk7Cisg ICAgZG1hX21lbW9yeV93cml0ZSggcy0+ZG1hLCB0Y19hZGRyICsgMzIsICAgICh1aW50OF90ICop JnZhbDMyLCA0KTsKIAogICAgIHZhbDMyID0gY3B1X3RvX2xlMzIodGFsbHlfY291bnRlcnMtPlR4 TUNvbCk7Ci0gICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZSh0Y19hZGRyICsgMzYsICAgICh1 aW50OF90ICopJnZhbDMyLCA0KTsKKyAgICBkbWFfbWVtb3J5X3dyaXRlKCBzLT5kbWEsIHRjX2Fk ZHIgKyAzNiwgICAgKHVpbnQ4X3QgKikmdmFsMzIsIDQpOwogCiAgICAgdmFsNjQgPSBjcHVfdG9f bGU2NCh0YWxseV9jb3VudGVycy0+UnhPa1BoeSk7Ci0gICAgY3B1X3BoeXNpY2FsX21lbW9yeV93 cml0ZSh0Y19hZGRyICsgNDAsICAgICh1aW50OF90ICopJnZhbDY0LCA4KTsKKyAgICBkbWFfbWVt b3J5X3dyaXRlKCBzLT5kbWEsIHRjX2FkZHIgKyA0MCwgICAgKHVpbnQ4X3QgKikmdmFsNjQsIDgp OwogCiAgICAgdmFsNjQgPSBjcHVfdG9fbGU2NCh0YWxseV9jb3VudGVycy0+UnhPa0JyZCk7Ci0g ICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZSh0Y19hZGRyICsgNDgsICAgICh1aW50OF90ICop JnZhbDY0LCA4KTsKKyAgICBkbWFfbWVtb3J5X3dyaXRlKCBzLT5kbWEsIHRjX2FkZHIgKyA0OCwg ICAgKHVpbnQ4X3QgKikmdmFsNjQsIDgpOwogCiAgICAgdmFsMzIgPSBjcHVfdG9fbGUzMih0YWxs eV9jb3VudGVycy0+UnhPa011bCk7Ci0gICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZSh0Y19h ZGRyICsgNTYsICAgICh1aW50OF90ICopJnZhbDMyLCA0KTsKKyAgICBkbWFfbWVtb3J5X3dyaXRl KCBzLT5kbWEsIHRjX2FkZHIgKyA1NiwgICAgKHVpbnQ4X3QgKikmdmFsMzIsIDQpOwogCiAgICAg dmFsMTYgPSBjcHVfdG9fbGUxNih0YWxseV9jb3VudGVycy0+VHhBYnQpOwotICAgIGNwdV9waHlz aWNhbF9tZW1vcnlfd3JpdGUodGNfYWRkciArIDYwLCAgICAodWludDhfdCAqKSZ2YWwxNiwgMik7 CisgICAgZG1hX21lbW9yeV93cml0ZSggcy0+ZG1hLCB0Y19hZGRyICsgNjAsICAgICh1aW50OF90 ICopJnZhbDE2LCAyKTsKIAogICAgIHZhbDE2ID0gY3B1X3RvX2xlMTYodGFsbHlfY291bnRlcnMt PlR4VW5kcm4pOwotICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfd3JpdGUodGNfYWRkciArIDYyLCAg ICAodWludDhfdCAqKSZ2YWwxNiwgMik7CisgICAgZG1hX21lbW9yeV93cml0ZSggcy0+ZG1hLCB0 Y19hZGRyICsgNjIsICAgICh1aW50OF90ICopJnZhbDE2LCAyKTsKIH0KIAogLyogTG9hZHMgdmFs dWVzIG9mIHRhbGx5IGNvdW50ZXJzIGZyb20gVk0gc3RhdGUgZmlsZSAqLwpAQCAtMTc3OSw3ICsx NzgxLDcgQEAKICAgICBERUJVR19QUklOVCgoIlJUTDgxMzk6ICsrKyB0cmFuc21pdCByZWFkaW5n ICVkIGJ5dGVzIGZyb20gaG9zdCBtZW1vcnkgYXQgMHglMDh4XG4iLAogICAgICAgICAgICAgICAg ICB0eHNpemUsIHMtPlR4QWRkcltkZXNjcmlwdG9yXSkpOwogCi0gICAgY3B1X3BoeXNpY2FsX21l bW9yeV9yZWFkKHMtPlR4QWRkcltkZXNjcmlwdG9yXSwgdHhidWZmZXIsIHR4c2l6ZSk7CisgICAg ZG1hX21lbW9yeV9yZWFkKCBzLT5kbWEsIHMtPlR4QWRkcltkZXNjcmlwdG9yXSwgdHhidWZmZXIs IHR4c2l6ZSk7CiAKICAgICAvKiBNYXJrIGRlc2NyaXB0b3IgYXMgdHJhbnNmZXJyZWQgKi8KICAg ICBzLT5UeFN0YXR1c1tkZXNjcmlwdG9yXSB8PSBUeEhvc3RPd25zOwpAQCAtMTkxMCwxMyArMTkx MiwxMyBAQAogCiAgICAgdWludDMyX3QgdmFsLCB0eGR3MCx0eGR3MSx0eGJ1ZkxPLHR4YnVmSEk7 CiAKLSAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3JlYWQoY3BsdXNfdHhfcmluZ19kZXNjLCAgICAo dWludDhfdCAqKSZ2YWwsIDQpOworICAgIGRtYV9tZW1vcnlfcmVhZCggcy0+ZG1hLCBjcGx1c190 eF9yaW5nX2Rlc2MsICAgICh1aW50OF90ICopJnZhbCwgNCk7CiAgICAgdHhkdzAgPSBsZTMyX3Rv X2NwdSh2YWwpOwotICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZChjcGx1c190eF9yaW5nX2Rl c2MrNCwgICh1aW50OF90ICopJnZhbCwgNCk7CisgICAgZG1hX21lbW9yeV9yZWFkKCBzLT5kbWEs IGNwbHVzX3R4X3JpbmdfZGVzYys0LCAgKHVpbnQ4X3QgKikmdmFsLCA0KTsKICAgICB0eGR3MSA9 IGxlMzJfdG9fY3B1KHZhbCk7Ci0gICAgY3B1X3BoeXNpY2FsX21lbW9yeV9yZWFkKGNwbHVzX3R4 X3JpbmdfZGVzYys4LCAgKHVpbnQ4X3QgKikmdmFsLCA0KTsKKyAgICBkbWFfbWVtb3J5X3JlYWQo IHMtPmRtYSwgY3BsdXNfdHhfcmluZ19kZXNjKzgsICAodWludDhfdCAqKSZ2YWwsIDQpOwogICAg IHR4YnVmTE8gPSBsZTMyX3RvX2NwdSh2YWwpOwotICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVh ZChjcGx1c190eF9yaW5nX2Rlc2MrMTIsICh1aW50OF90ICopJnZhbCwgNCk7CisgICAgZG1hX21l bW9yeV9yZWFkKCBzLT5kbWEsIGNwbHVzX3R4X3JpbmdfZGVzYysxMiwgKHVpbnQ4X3QgKikmdmFs LCA0KTsKICAgICB0eGJ1ZkhJID0gbGUzMl90b19jcHUodmFsKTsKIAogICAgIERFQlVHX1BSSU5U KCgiUlRMODEzOTogKysrIEMrIG1vZGUgVFggZGVzY3JpcHRvciAlZCAlMDh4ICUwOHggJTA4eCAl MDh4XG4iLApAQCAtMjAyMCw3ICsyMDIyLDcgQEAKICAgICBERUJVR19QUklOVCgoIlJUTDgxMzk6 ICsrKyBDKyBtb2RlIHRyYW5zbWl0IHJlYWRpbmcgJWQgYnl0ZXMgZnJvbSBob3N0IG1lbW9yeSBh dCAlMDE2IiBQUkl4NjQgIiB0byBvZmZzZXQgJWRcbiIsCiAgICAgICAgICAgICAgICAgIHR4c2l6 ZSwgKHVpbnQ2NF90KXR4X2FkZHIsIHMtPmNwbHVzX3R4YnVmZmVyX29mZnNldCkpOwogCi0gICAg Y3B1X3BoeXNpY2FsX21lbW9yeV9yZWFkKHR4X2FkZHIsIHMtPmNwbHVzX3R4YnVmZmVyICsgcy0+ Y3BsdXNfdHhidWZmZXJfb2Zmc2V0LCB0eHNpemUpOworICAgIGRtYV9tZW1vcnlfcmVhZCggcy0+ ZG1hLCB0eF9hZGRyLCBzLT5jcGx1c190eGJ1ZmZlciArIHMtPmNwbHVzX3R4YnVmZmVyX29mZnNl dCwgdHhzaXplKTsKICAgICBzLT5jcGx1c190eGJ1ZmZlcl9vZmZzZXQgKz0gdHhzaXplOwogCiAg ICAgLyogc2VlayB0byBuZXh0IFJ4IGRlc2NyaXB0b3IgKi8KQEAgLTIwNDcsOSArMjA0OSw5IEBA CiAKICAgICAvKiB1cGRhdGUgcmluZyBkYXRhICovCiAgICAgdmFsID0gY3B1X3RvX2xlMzIodHhk dzApOwotICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfd3JpdGUoY3BsdXNfdHhfcmluZ19kZXNjLCAg ICAodWludDhfdCAqKSZ2YWwsIDQpOworICAgIGRtYV9tZW1vcnlfd3JpdGUoIHMtPmRtYSwgY3Bs dXNfdHhfcmluZ19kZXNjLCAgICAodWludDhfdCAqKSZ2YWwsIDQpOwogLy8gICAgdmFsID0gY3B1 X3RvX2xlMzIodHhkdzEpOwotLy8gICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZShjcGx1c190 eF9yaW5nX2Rlc2MrNCwgICZ2YWwsIDQpOworLy8gICAgZG1hX21lbW9yeV93cml0ZSggcy0+ZG1h LCBjcGx1c190eF9yaW5nX2Rlc2MrNCwgICZ2YWwsIDQpOwogCiAgICAgLyogTm93IGRlY2lkZSBp ZiBkZXNjcmlwdG9yIGJlaW5nIHByb2Nlc3NlZCBpcyBob2xkaW5nIHRoZSBsYXN0IHNlZ21lbnQg b2YgcGFja2V0ICovCiAgICAgaWYgKHR4ZHcwICYgQ1BfVFhfTFMpCkBAIC0yMzc1LDcgKzIzNzcs NyBAQAogICAgICAgICAgICAgdGFyZ2V0X3BoeXNfYWRkcl90IHRjX2FkZHIgPSBydGw4MTM5X2Fk ZHI2NChzLT5UeFN0YXR1c1swXSAmIH4weDNmLCBzLT5UeFN0YXR1c1sxXSk7CiAKICAgICAgICAg ICAgIC8qIGR1bXAgdGFsbHkgY291bnRlcnMgdG8gc3BlY2lmaWVkIG1lbW9yeSBsb2NhdGlvbiAq LwotICAgICAgICAgICAgUlRMODEzOVRhbGx5Q291bnRlcnNfcGh5c2ljYWxfbWVtb3J5X3dyaXRl KCB0Y19hZGRyLCAmcy0+dGFsbHlfY291bnRlcnMpOworICAgICAgICAgICAgUlRMODEzOVRhbGx5 Q291bnRlcnNfcGh5c2ljYWxfbWVtb3J5X3dyaXRlKCBzLCB0Y19hZGRyLCAmcy0+dGFsbHlfY291 bnRlcnMpOwogCiAgICAgICAgICAgICAvKiBtYXJrIGR1bXAgY29tcGxldGVkICovCiAgICAgICAg ICAgICBzLT5UeFN0YXR1c1swXSAmPSB+MHg4OwpAQCAtMzQwNSw3ICszNDA3LDcgQEAKIH0KICNl bmRpZiAvKiBSVEw4MTM5X09OQk9BUkRfVElNRVIgKi8KIAotdm9pZCBwY2lfcnRsODEzOV9pbml0 KFBDSUJ1cyAqYnVzLCBOSUNJbmZvICpuZCwgaW50IGRldmZuKQordm9pZCBwY2lfcnRsODEzOV9p bml0KFBDSUJ1cyAqYnVzLCBOSUNJbmZvICpuZCwgaW50IGRldmZuLCBxZW11X2RtYSAqcGFyZW50 X2RtYSkKIHsKICAgICBQQ0lSVEw4MTM5U3RhdGUgKmQ7CiAgICAgUlRMODEzOVN0YXRlICpzOwpA QCAtMzQ0Miw2ICszNDQ0LDcgQEAKIAogICAgIHMtPnBjaV9kZXYgPSAoUENJRGV2aWNlICopZDsK ICAgICBtZW1jcHkocy0+bWFjYWRkciwgbmQtPm1hY2FkZHIsIDYpOworICAgIHMtPmRtYSA9IHBh cmVudF9kbWE7CiAgICAgcnRsODEzOV9yZXNldChzKTsKICAgICBzLT52YyA9IHFlbXVfbmV3X3Zs YW5fY2xpZW50KG5kLT52bGFuLCBydGw4MTM5X3JlY2VpdmUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBydGw4MTM5X2Nhbl9yZWNlaXZlLCBzKTsKSW5kZXg6IHFlbXUvdmwuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdmwuaAkyMDA3LTA4LTIzIDE3OjM5OjE5LjAwMDAwMDAw MCArMDAwMAorKysgcWVtdS92bC5oCTIwMDctMDgtMjMgMjA6MzE6MDEuMDAwMDAwMDAwICswMDAw CkBAIC04NzcsNyArODc3LDcgQEAKIFBDSUJ1cyAqcGNpX3JlZ2lzdGVyX2J1cyhwY2lfc2V0X2ly cV9mbiBzZXRfaXJxLCBwY2lfbWFwX2lycV9mbiBtYXBfaXJxLAogICAgICAgICAgICAgICAgICAg ICAgICAgIHFlbXVfaXJxICpwaWMsIGludCBkZXZmbl9taW4sIGludCBuaXJxKTsKIAotdm9pZCBw Y2lfbmljX2luaXQoUENJQnVzICpidXMsIE5JQ0luZm8gKm5kLCBpbnQgZGV2Zm4pOwordm9pZCBw Y2lfbmljX2luaXQoUENJQnVzICpidXMsIE5JQ0luZm8gKm5kLCBpbnQgZGV2Zm4sIHFlbXVfZG1h ICpwYXJlbnRfZG1hKTsKIHZvaWQgcGNpX2RhdGFfd3JpdGUodm9pZCAqb3BhcXVlLCB1aW50MzJf dCBhZGRyLCB1aW50MzJfdCB2YWwsIGludCBsZW4pOwogdWludDMyX3QgcGNpX2RhdGFfcmVhZCh2 b2lkICpvcGFxdWUsIHVpbnQzMl90IGFkZHIsIGludCBsZW4pOwogaW50IHBjaV9idXNfbnVtKFBD SUJ1cyAqcyk7CkBAIC04OTcsOCArODk3LDkgQEAKIFBDSUJ1cyAqcGNpX3BtYWNfaW5pdChxZW11 X2lycSAqcGljKTsKIAogLyogYXBiX3BjaS5jICovCi1QQ0lCdXMgKnBjaV9hcGJfaW5pdCh0YXJn ZXRfcGh5c19hZGRyX3Qgc3BlY2lhbF9iYXNlLCB0YXJnZXRfcGh5c19hZGRyX3QgbWVtX2Jhc2Us Ci0gICAgICAgICAgICAgICAgICAgICBxZW11X2lycSAqcGljKTsKK1BDSUJ1cyAqcGNpX2FwYl9p bml0KHRhcmdldF9waHlzX2FkZHJfdCBzcGVjaWFsX2Jhc2UsCisgICAgICAgICAgICAgICAgICAg ICB0YXJnZXRfcGh5c19hZGRyX3QgbWVtX2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICBxZW11 X2lycSAqcGljLCBxZW11X2RtYSAqcGFyZW50X2RtYSwgcWVtdV9kbWEgKipkdm1hKTsKIAogUENJ QnVzICpwY2lfdnBiX2luaXQocWVtdV9pcnEgKnBpYywgaW50IGlycSwgaW50IHJlYWx2aWV3KTsK IApAQCAtOTM4LDcgKzkzOSw3IEBACiAgICAgdW5pb24gewogICAgICAgICBpbnQgKCppbml0X2lz YSkgKEF1ZGlvU3RhdGUgKnMsIHFlbXVfaXJxICpwaWMsIHFlbXVfZG1hICpwYXJlbnRfZG1hLAog ICAgICAgICAgICAgICAgICAgICAgICAgIHFlbXVfZG1hICpwYXJlbnRfaGRtYSk7Ci0gICAgICAg IGludCAoKmluaXRfcGNpKSAoUENJQnVzICpidXMsIEF1ZGlvU3RhdGUgKnMpOworICAgICAgICBp bnQgKCppbml0X3BjaSkgKFBDSUJ1cyAqYnVzLCBBdWRpb1N0YXRlICpzLCBxZW11X2RtYSAqcGFy ZW50X2RtYSk7CiAgICAgfSBpbml0OwogfTsKIApAQCAtMTA0NCw3ICsxMDQ1LDcgQEAKIGRzMTIy NXlfdCAqZHMxMjI1eV9pbml0KHRhcmdldF9waHlzX2FkZHJfdCBtZW1fYmFzZSwgY29uc3QgY2hh ciAqZmlsZW5hbWUpOwogCiAvKiBlczEzNzAuYyAqLwotaW50IGVzMTM3MF9pbml0IChQQ0lCdXMg KmJ1cywgQXVkaW9TdGF0ZSAqcyk7CitpbnQgZXMxMzcwX2luaXQgKFBDSUJ1cyAqYnVzLCBBdWRp b1N0YXRlICphdWRpbywgcWVtdV9kbWEgKnBhcmVudF9kbWEpOwogCiAvKiBzYjE2LmMgKi8KIGlu dCBTQjE2X2luaXQgKEF1ZGlvU3RhdGUgKmF1ZGlvLCBxZW11X2lycSAqcGljLCBxZW11X2RtYSAq cGFyZW50X2RtYSwKQEAgLTEwODEsOSArMTA4MiwxMiBAQAogCiAvKiBlZXBybzEwMC5jICovCiAK LXZvaWQgcGNpX2k4MjU1MV9pbml0KFBDSUJ1cyAqYnVzLCBOSUNJbmZvICpuZCwgaW50IGRldmZu KTsKLXZvaWQgcGNpX2k4MjU1N2JfaW5pdChQQ0lCdXMgKmJ1cywgTklDSW5mbyAqbmQsIGludCBk ZXZmbik7Ci12b2lkIHBjaV9pODI1NTllcl9pbml0KFBDSUJ1cyAqYnVzLCBOSUNJbmZvICpuZCwg aW50IGRldmZuKTsKK3ZvaWQgcGNpX2k4MjU1MV9pbml0KFBDSUJ1cyAqIGJ1cywgTklDSW5mbyAq IG5kLCBpbnQgZGV2Zm4sCisgICAgICAgICAgICAgICAgICAgICBxZW11X2RtYSAqcGFyZW50X2Rt YSk7Cit2b2lkIHBjaV9pODI1NTdiX2luaXQoUENJQnVzICogYnVzLCBOSUNJbmZvICogbmQsIGlu dCBkZXZmbiwKKyAgICAgICAgICAgICAgICAgICAgICBxZW11X2RtYSAqcGFyZW50X2RtYSk7Cit2 b2lkIHBjaV9pODI1NTllcl9pbml0KFBDSUJ1cyAqIGJ1cywgTklDSW5mbyAqIG5kLCBpbnQgZGV2 Zm4sCisgICAgICAgICAgICAgICAgICAgICAgIHFlbXVfZG1hICpwYXJlbnRfZG1hKTsKIAogLyog bmUyMDAwLmMgKi8KIApAQCAtMTA5MiwxMSArMTA5NiwxMSBAQAogCiAvKiBydGw4MTM5LmMgKi8K IAotdm9pZCBwY2lfcnRsODEzOV9pbml0KFBDSUJ1cyAqYnVzLCBOSUNJbmZvICpuZCwgaW50IGRl dmZuKTsKK3ZvaWQgcGNpX3J0bDgxMzlfaW5pdChQQ0lCdXMgKmJ1cywgTklDSW5mbyAqbmQsIGlu dCBkZXZmbiwgcWVtdV9kbWEgKnBhcmVudF9kbWEpOwogCiAvKiBwY25ldC5jICovCiAKLXZvaWQg cGNpX3BjbmV0X2luaXQoUENJQnVzICpidXMsIE5JQ0luZm8gKm5kLCBpbnQgZGV2Zm4pOwordm9p ZCBwY2lfcGNuZXRfaW5pdChQQ0lCdXMgKmJ1cywgTklDSW5mbyAqbmQsIGludCBkZXZmbiwgcWVt dV9kbWEgKnBhcmVudF9kbWEpOwogdm9pZCBsYW5jZV9pbml0KE5JQ0luZm8gKm5kLCB0YXJnZXRf cGh5c19hZGRyX3QgbGVhZGRyLCBxZW11X2lycSBpcnEsCiAgICAgICAgICAgICAgICAgcWVtdV9k bWEgKnBhcmVudF9kbWEsIHFlbXVfaXJxICpyZXNldCk7CiAKSW5kZXg6IHFlbXUvaHcvZWVwcm8x MDAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvZWVwcm8xMDAuYwkyMDA3LTA4LTIzIDE3 OjQ0OjIxLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9lZXBybzEwMC5jCTIwMDctMDgtMjMg MTg6MjM6MzcuMDAwMDAwMDAwICswMDAwCkBAIC0yNTEsNiArMjUxLDcgQEAKIAogICAgIC8qIERh dGEgaW4gbWVtIGlzIGFsd2F5cyBpbiB0aGUgYnl0ZSBvcmRlciBvZiB0aGUgY29udHJvbGxlciAo bGUpLiAqLwogICAgIHVpbnQ4X3QgbWVtW1BDSV9NRU1fU0laRV07CisgICAgcWVtdV9kbWEgKmRt YTsKIH0gRUVQUk8xMDBTdGF0ZTsKIAogLyogRGVmYXVsdCB2YWx1ZXMgZm9yIE1ESSAoUEhZKSBy ZWdpc3RlcnMgKi8KQEAgLTY0Miw3ICs2NDMsNyBAQAogICAgICAqIHZhbHVlcyB3aGljaCByZWFs bHkgbWF0dGVyLgogICAgICAqIE51bWJlciBvZiBkYXRhIHNob3VsZCBjaGVjayBjb25maWd1cmF0 aW9uISEhCiAgICAgICovCi0gICAgY3B1X3BoeXNpY2FsX21lbW9yeV93cml0ZShzLT5zdGF0c2Fk ZHIsICh1aW50OF90ICopICYgcy0+c3RhdGlzdGljcywgNjQpOworICAgIGRtYV9tZW1vcnlfd3Jp dGUocy0+ZG1hLCBzLT5zdGF0c2FkZHIsICh1aW50OF90ICopICYgcy0+c3RhdGlzdGljcywgNjQp OwogICAgIHN0bF9waHlzKHMtPnN0YXRzYWRkciArIDAsIHMtPnN0YXRpc3RpY3MudHhfZ29vZF9m cmFtZXMpOwogICAgIHN0bF9waHlzKHMtPnN0YXRzYWRkciArIDM2LCBzLT5zdGF0aXN0aWNzLnJ4 X2dvb2RfZnJhbWVzKTsKICAgICBzdGxfcGh5cyhzLT5zdGF0c2FkZHIgKyA0OCwgcy0+c3RhdGlz dGljcy5yeF9yZXNvdXJjZV9lcnJvcnMpOwpAQCAtNjcyLDcgKzY3Myw3IEBACiAgICAgICAgIHMt PmN1X29mZnNldCA9IHMtPnBvaW50ZXI7CiAgICAgICBuZXh0X2NvbW1hbmQ6CiAgICAgICAgIGNi X2FkZHJlc3MgPSBzLT5jdV9iYXNlICsgcy0+Y3Vfb2Zmc2V0OwotICAgICAgICBjcHVfcGh5c2lj YWxfbWVtb3J5X3JlYWQoY2JfYWRkcmVzcywgKHVpbnQ4X3QgKikgJiB0eCwgc2l6ZW9mKHR4KSk7 CisgICAgICAgIGRtYV9tZW1vcnlfcmVhZChzLT5kbWEsIGNiX2FkZHJlc3MsICh1aW50OF90ICop ICYgdHgsIHNpemVvZih0eCkpOwogICAgICAgICB1aW50MTZfdCBzdGF0dXMgPSBsZTE2X3RvX2Nw dSh0eC5zdGF0dXMpOwogICAgICAgICB1aW50MTZfdCBjb21tYW5kID0gbGUxNl90b19jcHUodHgu Y29tbWFuZCk7CiAgICAgICAgIGxvZ291dApAQCAtNjkwLDEyICs2OTEsMTIgQEAKICAgICAgICAg ICAgIC8qIERvIG5vdGhpbmcuICovCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD bWRJQVNldHVwOgotICAgICAgICAgICAgY3B1X3BoeXNpY2FsX21lbW9yeV9yZWFkKGNiX2FkZHJl c3MgKyA4LCAmcy0+bWFjYWRkclswXSwgNik7CisgICAgICAgICAgICBkbWFfbWVtb3J5X3JlYWQo cy0+ZG1hLCBjYl9hZGRyZXNzICsgOCwgJnMtPm1hY2FkZHJbMF0sIDYpOwogICAgICAgICAgICAg bG9nb3V0KCJtYWNhZGRyOiAlc1xuIiwgbmljX2R1bXAoJnMtPm1hY2FkZHJbMF0sIDYpKTsKICAg ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENtZENvbmZpZ3VyZToKLSAgICAgICAgICAg IGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZChjYl9hZGRyZXNzICsgOCwgJnMtPmNvbmZpZ3VyYXRp b25bMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHMtPmNv bmZpZ3VyYXRpb24pKTsKKyAgICAgICAgICAgIGRtYV9tZW1vcnlfcmVhZChzLT5kbWEsIGNiX2Fk ZHJlc3MgKyA4LCAmcy0+Y29uZmlndXJhdGlvblswXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplb2Yocy0+Y29uZmlndXJhdGlvbikpOwogICAgICAgICAgICAgbG9nb3V0KCJjb25m aWd1cmF0aW9uOiAlc1xuIiwgbmljX2R1bXAoJnMtPmNvbmZpZ3VyYXRpb25bMF0sIDE2KSk7CiAg ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDbWRNdWx0aWNhc3RMaXN0OgpAQCAtNzI5 LDggKzczMCw4IEBACiAgICAgICAgICAgICAgICAgbG9nb3V0CiAgICAgICAgICAgICAgICAgICAg ICgiVEJEIChzaW1wbGlmaWVkIG1vZGUpOiBidWZmZXIgYWRkcmVzcyAweCUwOHgsIHNpemUgMHgl MDR4XG4iLAogICAgICAgICAgICAgICAgICAgICAgdHhfYnVmZmVyX2FkZHJlc3MsIHR4X2J1ZmZl cl9zaXplKTsKLSAgICAgICAgICAgICAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3JlYWQodHhfYnVm ZmVyX2FkZHJlc3MsICZidWZbc2l6ZV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHR4X2J1ZmZlcl9zaXplKTsKKyAgICAgICAgICAgICAgICBkbWFfbWVtb3J5X3Jl YWQocy0+ZG1hLCB0eF9idWZmZXJfYWRkcmVzcywgJmJ1ZltzaXplXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdHhfYnVmZmVyX3NpemUpOwogICAgICAgICAgICAgICAgIHNpemUg Kz0gdHhfYnVmZmVyX3NpemU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodGJkX2Fy cmF5ID09IDB4ZmZmZmZmZmYpIHsKQEAgLTc0OSw4ICs3NTAsOCBAQAogICAgICAgICAgICAgICAg ICAgICAgICAgbG9nb3V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJUQkQgKGV4dGVu ZGVkIG1vZGUpOiBidWZmZXIgYWRkcmVzcyAweCUwOHgsIHNpemUgMHglMDR4XG4iLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0eF9idWZmZXJfYWRkcmVzcywgdHhfYnVmZmVyX3NpemUp OwotICAgICAgICAgICAgICAgICAgICAgICAgY3B1X3BoeXNpY2FsX21lbW9yeV9yZWFkKHR4X2J1 ZmZlcl9hZGRyZXNzLCAmYnVmW3NpemVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHR4X2J1ZmZlcl9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIGRtYV9tZW1vcnlfcmVhZChzLT5kbWEsIHR4X2J1ZmZlcl9hZGRyZXNzLCAmYnVmW3NpemVd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR4X2J1ZmZlcl9zaXpl KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgKz0gdHhfYnVmZmVyX3NpemU7CiAgICAg ICAgICAgICAgICAgICAgICAgICBpZiAodHhfYnVmZmVyX2VsICYgMSkgewogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzY2LDggKzc2Nyw4IEBACiAgICAgICAgICAgICAg ICAgICAgIGxvZ291dAogICAgICAgICAgICAgICAgICAgICAgICAgKCJUQkQgKGZsZXhpYmxlIG1v ZGUpOiBidWZmZXIgYWRkcmVzcyAweCUwOHgsIHNpemUgMHglMDR4XG4iLAogICAgICAgICAgICAg ICAgICAgICAgICAgIHR4X2J1ZmZlcl9hZGRyZXNzLCB0eF9idWZmZXJfc2l6ZSk7Ci0gICAgICAg ICAgICAgICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZCh0eF9idWZmZXJfYWRkcmVzcywg JmJ1ZltzaXplXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHR4X2J1ZmZlcl9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgZG1hX21lbW9yeV9yZWFkKHMt PmRtYSwgdHhfYnVmZmVyX2FkZHJlc3MsICZidWZbc2l6ZV0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0eF9idWZmZXJfc2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgIHNp emUgKz0gdHhfYnVmZmVyX3NpemU7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0eF9idWZmZXJf ZWwgJiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMTIsMTAgKzEx MTMsMTAgQEAKICAgICBjYXNlIFBPUlRfU0VMRlRFU1Q6CiAgICAgICAgIGxvZ291dCgic2VsZnRl c3QgYWRkcmVzcz0weCUwOHhcbiIsIGFkZHJlc3MpOwogICAgICAgICBlZXBybzEwMF9zZWxmdGVz dF90IGRhdGE7Ci0gICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZChhZGRyZXNzLCAodWlu dDhfdCAqKSAmIGRhdGEsIHNpemVvZihkYXRhKSk7CisgICAgICAgIGRtYV9tZW1vcnlfcmVhZChz LT5kbWEsIGFkZHJlc3MsICh1aW50OF90ICopICYgZGF0YSwgc2l6ZW9mKGRhdGEpKTsKICAgICAg ICAgZGF0YS5zdF9zaWduID0gMHhmZmZmZmZmZjsKICAgICAgICAgZGF0YS5zdF9yZXN1bHQgPSAw OwotICAgICAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3dyaXRlKGFkZHJlc3MsICh1aW50OF90ICop ICYgZGF0YSwgc2l6ZW9mKGRhdGEpKTsKKyAgICAgICAgZG1hX21lbW9yeV93cml0ZShzLT5kbWEs IGFkZHJlc3MsICh1aW50OF90ICopICYgZGF0YSwgc2l6ZW9mKGRhdGEpKTsKICAgICAgICAgYnJl YWs7CiAgICAgY2FzZSBQT1JUX1NFTEVDVElWRV9SRVNFVDoKICAgICAgICAgbG9nb3V0KCJzZWxl Y3RpdmUgcmVzZXQsIHNlbGZ0ZXN0IGFkZHJlc3M9MHglMDh4XG4iLCBhZGRyZXNzKTsKQEAgLTE1 MzQsOCArMTUzNSw4IEBACiAgICAgLy9+ICEhIQogLy9+ICQzID0ge3N0YXR1cyA9IDB4MCwgY29t bWFuZCA9IDB4YzAwMCwgbGluayA9IDB4MmQyMjAsIHJ4X2J1Zl9hZGRyID0gMHgyMDdkYywgY291 bnQgPSAweDAsIHNpemUgPSAweDVmOCwgcGFja2V0ID0gezB4MCA8cmVwZWF0cyAxNTE4IHRpbWVz Pn19CiAgICAgZWVwcm8xMDBfcnhfdCByeDsKLSAgICBjcHVfcGh5c2ljYWxfbWVtb3J5X3JlYWQo cy0+cnVfYmFzZSArIHMtPnJ1X29mZnNldCwgKHVpbnQ4X3QgKikgJiByeCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoZWVwcm8xMDBfcnhfdCwgcGFja2V0KSk7CisgICAg ZG1hX21lbW9yeV9yZWFkKHMtPmRtYSwgcy0+cnVfYmFzZSArIHMtPnJ1X29mZnNldCwgKHVpbnQ4 X3QgKikgJiByeCwKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoZWVwcm8xMDBfcnhfdCwg cGFja2V0KSk7CiAgICAgdWludDE2X3QgcmZkX2NvbW1hbmQgPSBsZTE2X3RvX2NwdShyeC5jb21t YW5kKTsKICAgICB1aW50MTZfdCByZmRfc2l6ZSA9IGxlMTZfdG9fY3B1KHJ4LnNpemUpOwogICAg IGFzc2VydChzaXplIDw9IHJmZF9zaXplKTsKQEAgLTE1NTMsOCArMTU1NCw4IEBACiAgICAgYXNz ZXJ0KCEocy0+Y29uZmlndXJhdGlvblsxOF0gJiA0KSk7CiAgICAgLyogVE9ETzogY2hlY2sgc3Ry aXBwaW5nIGVuYWJsZSBiaXQuICovCiAgICAgLy9+IGFzc2VydCghKHMtPmNvbmZpZ3VyYXRpb25b MTddICYgMSkpOwotICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfd3JpdGUocy0+cnVfYmFzZSArIHMt PnJ1X29mZnNldCArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZihlZXBy bzEwMF9yeF90LCBwYWNrZXQpLCBidWYsIHNpemUpOworICAgIGRtYV9tZW1vcnlfd3JpdGUocy0+ ZG1hLCBzLT5ydV9iYXNlICsgcy0+cnVfb2Zmc2V0ICsKKyAgICAgICAgICAgICAgICAgICAgIG9m ZnNldG9mKGVlcHJvMTAwX3J4X3QsIHBhY2tldCksIGJ1Ziwgc2l6ZSk7CiAgICAgcy0+c3RhdGlz dGljcy5yeF9nb29kX2ZyYW1lcysrOwogICAgIGVlcHJvMTAwX2ZyX2ludGVycnVwdChzKTsKICAg ICBzLT5ydV9vZmZzZXQgPSBsZTMyX3RvX2NwdShyeC5saW5rKTsKQEAgLTE3MzYsNyArMTczNyw3 IEBACiB9CiAKIHN0YXRpYyB2b2lkIG5pY19pbml0KFBDSUJ1cyAqIGJ1cywgTklDSW5mbyAqIG5k LAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgdWludDMyX3QgZGV2aWNl KQorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgdWludDMyX3QgZGV2aWNl LCBxZW11X2RtYSAqcGFyZW50X2RtYSkKIHsKICAgICBQQ0lFRVBSTzEwMFN0YXRlICpkOwogICAg IEVFUFJPMTAwU3RhdGUgKnM7CkBAIC0xNzUwLDYgKzE3NTEsNyBAQAogICAgIHMgPSAmZC0+ZWVw cm8xMDA7CiAgICAgcy0+ZGV2aWNlID0gZGV2aWNlOwogICAgIHMtPnBjaV9kZXYgPSAmZC0+ZGV2 OworICAgIHMtPmRtYSA9IHBhcmVudF9kbWE7CiAKICAgICBwY2lfcmVzZXQocyk7CiAKQEAgLTE3 ODksMjAgKzE3OTEsMjMgQEAKICAgICByZWdpc3Rlcl9zYXZldm0obmFtZSwgMCwgMywgbmljX3Nh dmUsIG5pY19sb2FkLCBzKTsKIH0KIAotdm9pZCBwY2lfaTgyNTUxX2luaXQoUENJQnVzICogYnVz LCBOSUNJbmZvICogbmQsIGludCBkZXZmbikKK3ZvaWQgcGNpX2k4MjU1MV9pbml0KFBDSUJ1cyAq IGJ1cywgTklDSW5mbyAqIG5kLCBpbnQgZGV2Zm4sCisgICAgICAgICAgICAgICAgICAgICBxZW11 X2RtYSAqcGFyZW50X2RtYSkKIHsKLSAgICBuaWNfaW5pdChidXMsIG5kLCAiaTgyNTUxIiwgaTgy NTUxKTsKKyAgICBuaWNfaW5pdChidXMsIG5kLCAiaTgyNTUxIiwgaTgyNTUxLCBwYXJlbnRfZG1h KTsKICAgICAvL34gdWludDhfdCAqcGNpX2NvbmYgPSBkLT5kZXYuY29uZmlnOwogfQogCi12b2lk IHBjaV9pODI1NTdiX2luaXQoUENJQnVzICogYnVzLCBOSUNJbmZvICogbmQsIGludCBkZXZmbikK K3ZvaWQgcGNpX2k4MjU1N2JfaW5pdChQQ0lCdXMgKiBidXMsIE5JQ0luZm8gKiBuZCwgaW50IGRl dmZuLAorICAgICAgICAgICAgICAgICAgICAgIHFlbXVfZG1hICpwYXJlbnRfZG1hKQogewotICAg IG5pY19pbml0KGJ1cywgbmQsICJpODI1NTdiIiwgaTgyNTU3Qik7CisgICAgbmljX2luaXQoYnVz LCBuZCwgImk4MjU1N2IiLCBpODI1NTdCLCBwYXJlbnRfZG1hKTsKIH0KIAotdm9pZCBwY2lfaTgy NTU5ZXJfaW5pdChQQ0lCdXMgKiBidXMsIE5JQ0luZm8gKiBuZCwgaW50IGRldmZuKQordm9pZCBw Y2lfaTgyNTU5ZXJfaW5pdChQQ0lCdXMgKiBidXMsIE5JQ0luZm8gKiBuZCwgaW50IGRldmZuLAor ICAgICAgICAgICAgICAgICAgICAgICBxZW11X2RtYSAqcGFyZW50X2RtYSkKIHsKLSAgICBuaWNf aW5pdChidXMsIG5kLCAiaTgyNTU5ZXIiLCBpODI1NTlFUik7CisgICAgbmljX2luaXQoYnVzLCBu ZCwgImk4MjU1OWVyIiwgaTgyNTU5RVIsIHBhcmVudF9kbWEpOwogfQogCiAvKiBlb2YgKi8KSW5k ZXg6IHFlbXUvaHcvcGNuZXQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvcGNuZXQuYwky MDA3LTA4LTIzIDE4OjI1OjI2LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9wY25ldC5jCTIw MDctMDgtMjMgMTg6Mjc6MTAuMDAwMDAwMDAwICswMDAwCkBAIC0xOTQ3LDE2ICsxOTQ3LDE2IEBA CiBzdGF0aWMgdm9pZCBwY2lfcGh5c2ljYWxfbWVtb3J5X3dyaXRlKHZvaWQgKmRtYV9vcGFxdWUs IHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBkb19ic3dhcCkKIHsKLSAgICBjcHVf cGh5c2ljYWxfbWVtb3J5X3dyaXRlKGFkZHIsIGJ1ZiwgbGVuKTsKKyAgICBkbWFfbWVtb3J5X3dy aXRlKGRtYV9vcGFxdWUsIGFkZHIsIGJ1ZiwgbGVuKTsKIH0KIAogc3RhdGljIHZvaWQgcGNpX3Bo eXNpY2FsX21lbW9yeV9yZWFkKHZvaWQgKmRtYV9vcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBh ZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1Ziwg aW50IGxlbiwgaW50IGRvX2Jzd2FwKQogewotICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVhZChh ZGRyLCBidWYsIGxlbik7CisgICAgZG1hX21lbW9yeV9yZWFkKGRtYV9vcGFxdWUsIGFkZHIsIGJ1 ZiwgbGVuKTsKIH0KIAotdm9pZCBwY2lfcGNuZXRfaW5pdChQQ0lCdXMgKmJ1cywgTklDSW5mbyAq bmQsIGludCBkZXZmbikKK3ZvaWQgcGNpX3BjbmV0X2luaXQoUENJQnVzICpidXMsIE5JQ0luZm8g Km5kLCBpbnQgZGV2Zm4sIHFlbXVfZG1hICpwYXJlbnRfZG1hKQogewogICAgIFBDTmV0U3RhdGUg KmQ7CiAgICAgdWludDhfdCAqcGNpX2NvbmY7CkBAIC0yMDAyLDYgKzIwMDIsNyBAQAogICAgIGQt PnBoeXNfbWVtX3JlYWQgPSBwY2lfcGh5c2ljYWxfbWVtb3J5X3JlYWQ7CiAgICAgZC0+cGh5c19t ZW1fd3JpdGUgPSBwY2lfcGh5c2ljYWxfbWVtb3J5X3dyaXRlOwogICAgIGQtPnBjaV9kZXYgPSAm ZC0+ZGV2OworICAgIGQtPmRtYV9vcGFxdWUgPSBwYXJlbnRfZG1hOwogCiAgICAgcGNuZXRfY29t bW9uX2luaXQoZCwgbmQsICJwY25ldCIpOwogfQpJbmRleDogcWVtdS9ody9taXBzX21hbHRhLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L21pcHNfbWFsdGEuYwkyMDA3LTA4LTIzIDE4OjM1 OjM5LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9ody9taXBzX21hbHRhLmMJMjAwNy0wOC0yMyAy MDozNzo1Mi4wMDAwMDAwMDAgKzAwMDAKQEAgLTQzNSw3ICs0MzUsNyBAQAogCiAvKiBBdWRpbyBz dXBwb3J0ICovCiAjaWZkZWYgSEFTX0FVRElPCi1zdGF0aWMgdm9pZCBhdWRpb19pbml0IChQQ0lC dXMgKnBjaV9idXMpCitzdGF0aWMgdm9pZCBhdWRpb19pbml0IChQQ0lCdXMgKnBjaV9idXMsIHFl bXVfZG1hICpwYXJlbnRfZG1hKQogewogICAgIHN0cnVjdCBzb3VuZGh3ICpjOwogICAgIGludCBh dWRpb19lbmFibGVkID0gMDsKQEAgLTQ1MSw3ICs0NTEsNyBAQAogICAgICAgICBpZiAocykgewog ICAgICAgICAgICAgZm9yIChjID0gc291bmRodzsgYy0+bmFtZTsgKytjKSB7CiAgICAgICAgICAg ICAgICAgaWYgKGMtPmVuYWJsZWQpCi0gICAgICAgICAgICAgICAgICAgIGMtPmluaXQuaW5pdF9w Y2kgKHBjaV9idXMsIHMpOworICAgICAgICAgICAgICAgICAgICBjLT5pbml0LmluaXRfcGNpIChw Y2lfYnVzLCBzLCBwYXJlbnRfZG1hKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0K QEAgLTQ1OSw3ICs0NTksNyBAQAogI2VuZGlmCiAKIC8qIE5ldHdvcmsgc3VwcG9ydCAqLwotc3Rh dGljIHZvaWQgbmV0d29ya19pbml0IChQQ0lCdXMgKnBjaV9idXMpCitzdGF0aWMgdm9pZCBuZXR3 b3JrX2luaXQgKFBDSUJ1cyAqcGNpX2J1cywgcWVtdV9kbWEgKnBhcmVudF9kbWEpCiB7CiAgICAg aW50IGk7CiAgICAgTklDSW5mbyAqbmQ7CkBAIC00NzEsMTMgKzQ3MSwxOSBAQAogICAgICAgICB9 CiAgICAgICAgIGlmIChpID09IDAgICYmIHN0cmNtcChuZC0+bW9kZWwsICJwY25ldCIpID09IDAp IHsKICAgICAgICAgICAgIC8qIFRoZSBtYWx0YSBib2FyZCBoYXMgYSBQQ05ldCBjYXJkIHVzaW5n IFBDSSBTTE9UIDExICovCi0gICAgICAgICAgICBwY2lfbmljX2luaXQocGNpX2J1cywgbmQsIDg4 KTsKKyAgICAgICAgICAgIHBjaV9uaWNfaW5pdChwY2lfYnVzLCBuZCwgODgsIHBhcmVudF9kbWEp OwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcGNpX25pY19pbml0KHBjaV9idXMsIG5k LCAtMSk7CisgICAgICAgICAgICBwY2lfbmljX2luaXQocGNpX2J1cywgbmQsIC0xLCBwYXJlbnRf ZG1hKTsKICAgICAgICAgfQogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgbWlwc19kbWFfbWVtb3J5 X3J3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNfd3JpdGUpCit7 CisgICAgY3B1X3BoeXNpY2FsX21lbW9yeV9ydyhhZGRyLCBidWYsIGxlbiwgaXNfd3JpdGUpOwor fQorCiAvKiBST00gYW5kIHBzZXVkbyBib290bG9hZGVyCiAKICAgIFRoZSBmb2xsb3dpbmcgY29k ZSBpbXBsZW1lbnRzIGEgdmVyeSB2ZXJ5IHNpbXBsZSBib290bG9hZGVyLiBJdCBmaXJzdApAQCAt NzU5LDYgKzc2NSw3IEBACiAgICAgaW50IHBpaXg0X2RldmZuOwogICAgIHVpbnQ4X3QgKmVlcHJv bV9idWY7CiAgICAgaTJjX2J1cyAqc21idXM7CisgICAgcWVtdV9kbWEgKnBoeXNpY2FsX2RtYSwg Kippc2FfZG1hOwogICAgIGludCBpOwogCiAgICAgLyogaW5pdCBDUFVzICovCkBAIC04NTMsNyAr ODYwLDggQEAKICAgICAgICAgc21idXNfZWVwcm9tX2RldmljZV9pbml0KHNtYnVzLCAweDUwICsg aSwgZWVwcm9tX2J1ZiArIChpICogMjU2KSk7CiAgICAgfQogICAgIHBpdCA9IHBpdF9pbml0KDB4 NDAsIGk4MjU5WzBdKTsKLSAgICBETUFfaW5pdCgwKTsKKyAgICBwaHlzaWNhbF9kbWEgPSBxZW11 X2luaXRfZG1hKG1pcHNfZG1hX21lbW9yeV9ydywgTlVMTCk7CisgICAgRE1BX2luaXQoMCwgcGh5 c2ljYWxfZG1hLCAmaXNhX2RtYSk7CiAKICAgICAvKiBTdXBlciBJL08gKi8KICAgICBpODA0Ml9p bml0KGk4MjU5WzFdLCBpODI1OVsxMl0sIDB4NjApOwpAQCAtODcwLDExICs4NzgsMTEgQEAKIAog ICAgIC8qIFNvdW5kIGNhcmQgKi8KICNpZmRlZiBIQVNfQVVESU8KLSAgICBhdWRpb19pbml0KHBj aV9idXMpOworICAgIGF1ZGlvX2luaXQocGNpX2J1cywgcGh5c2ljYWxfZG1hKTsKICNlbmRpZgog CiAgICAgLyogTmV0d29yayBjYXJkICovCi0gICAgbmV0d29ya19pbml0KHBjaV9idXMpOworICAg IG5ldHdvcmtfaW5pdChwY2lfYnVzLCBwaHlzaWNhbF9kbWEpOwogCiAgICAgLyogT3B0aW9uYWwg UENJIHZpZGVvIGNhcmQgKi8KICAgICBwY2lfY2lycnVzX3ZnYV9pbml0KHBjaV9idXMsIGRzLCBw aHlzX3JhbV9iYXNlICsgcmFtX3NpemUsCkluZGV4OiBxZW11L2h3L3BjLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gcWVtdS5vcmlnL2h3L3BjLmMJMjAwNy0wOC0yMyAxODozNDozNS4wMDAwMDAwMDAgKzAwMDAK KysrIHFlbXUvaHcvcGMuYwkyMDA3LTA4LTIzIDIwOjM0OjAyLjAwMDAwMDAwMCArMDAwMApAQCAt NjQ1LDcgKzY0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGNpX2J1cykgewotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGMtPmluaXQuaW5pdF9wY2kgKHBjaV9idXMsIHMpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmluaXQuaW5pdF9wY2kgKHBjaV9idXMsIHMsIHBh cmVudF9kbWEpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg ICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtODc3LDcgKzg3Nyw3IEBACiAgICAgICAgIH0gZWxz ZSBpZiAocGNpX2VuYWJsZWQpIHsKICAgICAgICAgICAgIGlmIChzdHJjbXAobmQtPm1vZGVsLCAi PyIpID09IDApCiAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11OiBTdXBwb3J0 ZWQgSVNBIE5JQ3M6IG5lMmtfaXNhXG4iKTsKLSAgICAgICAgICAgIHBjaV9uaWNfaW5pdChwY2lf YnVzLCBuZCwgLTEpOworICAgICAgICAgICAgcGNpX25pY19pbml0KHBjaV9idXMsIG5kLCAtMSwg cGh5c2ljYWxfZG1hKTsKICAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAobmQtPm1vZGVsLCAiPyIp ID09IDApIHsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicWVtdTogU3VwcG9ydGVkIElT QSBOSUNzOiBuZTJrX2lzYVxuIik7CiAgICAgICAgICAgICBleGl0KDEpOwpAQCAtODk5LDcgKzg5 OSw4IEBACiAgICAgaTgwNDJfaW5pdChpODI1OVsxXSwgaTgyNTlbMTJdLCAweDYwKTsKICAgICBE TUFfaW5pdCgwLCBwaHlzaWNhbF9kbWEsICZpc2FfZG1hKTsKICNpZmRlZiBIQVNfQVVESU8KLSAg ICBhdWRpb19pbml0KHBjaV9lbmFibGVkID8gcGNpX2J1cyA6IE5VTEwsIGk4MjU5LCBpc2FfZG1h WzFdLCBpc2FfZG1hWzVdKTsKKyAgICBhdWRpb19pbml0KHBjaV9lbmFibGVkID8gcGNpX2J1cyA6 IE5VTEwsIGk4MjU5LAorICAgICAgICAgICAgICAgcGNpX2VuYWJsZWQgPyBwaHlzaWNhbF9kbWEg OiBpc2FfZG1hWzFdLCBpc2FfZG1hWzVdKTsKICNlbmRpZgogCiAgICAgZmxvcHB5X2NvbnRyb2xs ZXIgPSBmZGN0cmxfaW5pdChpODI1OVs2XSwgMiwgMCwgMHgzZjAsIGZkX3RhYmxlLCBpc2FfZG1h WzJdKTsKSW5kZXg6IHFlbXUvaHcvbWlwc19waWNhNjEuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9y aWcvaHcvbWlwc19waWNhNjEuYwkyMDA3LTA4LTIzIDE4OjQ2OjUwLjAwMDAwMDAwMCArMDAwMAor KysgcWVtdS9ody9taXBzX3BpY2E2MS5jCTIwMDctMDgtMjMgMTg6NDg6MTcuMDAwMDAwMDAwICsw MDAwCkBAIC00Nyw2ICs0NywxMiBAQAogCiBleHRlcm4gRklMRSAqbG9nZmlsZTsKIAorc3RhdGlj IHZvaWQgbWlwc19kbWFfbWVtb3J5X3J3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90 IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQg bGVuLCBpbnQgaXNfd3JpdGUpCit7CisgICAgY3B1X3BoeXNpY2FsX21lbW9yeV9ydyhhZGRyLCBi dWYsIGxlbiwgaXNfd3JpdGUpOworfQorCiBzdGF0aWMgdm9pZCBtYWluX2NwdV9yZXNldCh2b2lk ICpvcGFxdWUpCiB7CiAgICAgQ1BVU3RhdGUgKmVudiA9IG9wYXF1ZTsKQEAgLTY4LDYgKzc0LDcg QEAKICAgICBtaXBzX2RlZl90ICpkZWY7CiAgICAgaW50IGF2YWlsYWJsZV9yYW07CiAgICAgcWVt dV9pcnEgKmk4MjU5OworICAgIHFlbXVfZG1hICpwaHlzaWNhbF9kbWEsICoqaXNhX2RtYTsKIAog ICAgIC8qIGluaXQgQ1BVcyAqLwogICAgIGlmIChjcHVfbW9kZWwgPT0gTlVMTCkgewpAQCAtMTI5 LDYgKzEzNiw4IEBACiAgICAgaTgyNTkgPSBpODI1OV9pbml0KGVudi0+aXJxWzJdKTsKICAgICBy dGNfbW1faW5pdCgweDgwMDA0MDcwLCAxLCBpODI1OVsxNF0pOwogICAgIHBpdF9pbml0KDB4NDAs IDApOworICAgIHBoeXNpY2FsX2RtYSA9IHFlbXVfaW5pdF9kbWEobWlwc19kbWFfbWVtb3J5X3J3 LCBOVUxMKTsKKyAgICBETUFfaW5pdCgwLCBwaHlzaWNhbF9kbWEsICZpc2FfZG1hKTsKIAogICAg IC8qIEtleWJvYXJkIChpODA0MikgKi8KICAgICBpODA0Ml9tbV9pbml0KGk4MjU5WzZdLCBpODI1 OVs3XSwgMHg4MDAwNTA2MCwgMCk7CkBAIC0xNDUsNyArMTU0LDcgQEAKICAgICAvKiBGSVhNRTog bWlzc2luZyBOQ1IgNTNDOTQgKi8KIAogICAgIC8qIElTQSBkZXZpY2VzIChmbG9wcHksIHNlcmlh bCwgcGFyYWxsZWwpICovCi0gICAgZmRjdHJsX2luaXQoaTgyNTlbMV0sIDEsIDEsIDB4ODAwMDMw MDAsIGZkX3RhYmxlKTsKKyAgICBmZGN0cmxfaW5pdChpODI1OVsxXSwgMSwgMSwgMHg4MDAwMzAw MCwgZmRfdGFibGUsIGlzYV9kbWFbMV0pOwogICAgIGZvcihpID0gMDsgaSA8IE1BWF9TRVJJQUxf UE9SVFM7IGkrKykgewogICAgICAgICBpZiAoc2VyaWFsX2hkc1tpXSkgewogICAgICAgICAgICAg c2VyaWFsX21tX2luaXQoc2VyaWFsX2Jhc2VbaV0sIDAsIGk4MjU5W3NlcmlhbF9pcnFbaV1dLCBz ZXJpYWxfaGRzW2ldLCAxKTsKSW5kZXg6IHFlbXUvaHcvcmVhbHZpZXcuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBxZW11Lm9yaWcvaHcvcmVhbHZpZXcuYwkyMDA3LTA4LTIzIDE4OjQwOjQ4LjAwMDAwMDAwMCAr MDAwMAorKysgcWVtdS9ody9yZWFsdmlldy5jCTIwMDctMDgtMjMgMTk6Mzk6MTYuMDAwMDAwMDAw ICswMDAwCkBAIC0xMCw2ICsxMCwxMiBAQAogI2luY2x1ZGUgInZsLmgiCiAjaW5jbHVkZSAiYXJt X3BpYy5oIgogCitzdGF0aWMgdm9pZCBhcm1fZG1hX21lbW9yeV9ydyh2b2lkICpvcGFxdWUsIHRh cmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNfd3JpdGUpCit7CisgICAgY3B1X3BoeXNpY2FsX21l bW9yeV9ydyhhZGRyLCBidWYsIGxlbiwgaXNfd3JpdGUpOworfQorCiAvKiBCb2FyZCBpbml0LiAg Ki8KIAogc3RhdGljIHZvaWQgcmVhbHZpZXdfaW5pdChpbnQgcmFtX3NpemUsIGludCB2Z2FfcmFt X3NpemUsIGludCBib290X2RldmljZSwKQEAgLTI0LDYgKzMwLDcgQEAKICAgICBOSUNJbmZvICpu ZDsKICAgICBpbnQgbjsKICAgICBpbnQgZG9uZV9zbWMgPSAwOworICAgIHFlbXVfZG1hICpwaHlz aWNhbF9kbWE7CiAKICAgICBlbnYgPSBjcHVfaW5pdCgpOwogICAgIGlmICghY3B1X21vZGVsKQpA QCAtNTksNiArNjYsOCBAQAogCiAgICAgcGwwMzFfaW5pdCgweDEwMDE3MDAwLCBwaWNbMTBdKTsK IAorICAgIHBoeXNpY2FsX2RtYSA9IHFlbXVfaW5pdF9kbWEoYXJtX2RtYV9tZW1vcnlfcncsIE5V TEwpOworCiAgICAgcGNpX2J1cyA9IHBjaV92cGJfaW5pdChwaWMsIDQ4LCAxKTsKICAgICBpZiAo dXNiX2VuYWJsZWQpIHsKICAgICAgICAgdXNiX29oY2lfaW5pdF9wY2kocGNpX2J1cywgMywgLTEp OwpAQCAtNzYsNyArODUsNyBAQAogICAgICAgICBpZiAoc3RyY21wKG5kLT5tb2RlbCwgInNtYzkx YzExMSIpID09IDApIHsKICAgICAgICAgICAgIHNtYzkxYzExMV9pbml0KG5kLCAweDRlMDAwMDAw LCBwaWNbMjhdKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBjaV9uaWNfaW5pdChw Y2lfYnVzLCBuZCwgLTEpOworICAgICAgICAgICAgcGNpX25pY19pbml0KHBjaV9idXMsIG5kLCAt MSwgcGh5c2ljYWxfZG1hKTsKICAgICAgICAgfQogICAgIH0KIApJbmRleDogcWVtdS9ody9wcGNf Y2hycC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9wcGNfY2hycC5jCTIwMDctMDgtMjMg MTg6NTA6NTUuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3BwY19jaHJwLmMJMjAwNy0wOC0y MyAxODo1OTo1OS4wMDAwMDAwMDAgKzAwMDAKQEAgLTI4OSw2ICsyODksMTIgQEAKICAgICBidWZb MV0gPSBudnJhbV9jaGtzdW0oYnVmLCAxNik7CiB9ICAgIAogCitzdGF0aWMgdm9pZCBwcGNfZG1h X21lbW9yeV9ydyh2b2lkICpvcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNfd3Jp dGUpCit7CisgICAgY3B1X3BoeXNpY2FsX21lbW9yeV9ydyhhZGRyLCBidWYsIGxlbiwgaXNfd3Jp dGUpOworfQorCiAvKiBQb3dlclBDIENIUlAgaGFyZHdhcmUgaW5pdGlhbGlzYXRpb24gKi8KIHN0 YXRpYyB2b2lkIHBwY19jaHJwX2luaXQgKGludCByYW1fc2l6ZSwgaW50IHZnYV9yYW1fc2l6ZSwg aW50IGJvb3RfZGV2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheVN0YXRl ICpkcywgY29uc3QgY2hhciAqKmZkX2ZpbGVuYW1lLApAQCAtMzEyLDYgKzMxOCw3IEBACiAgICAg Y29uc3QgY2hhciAqYXJjaF9uYW1lOwogICAgIGludCB2Z2FfYmlvc19zaXplLCBiaW9zX3NpemU7 CiAgICAgcWVtdV9pcnEgKmR1bW15X2lycTsKKyAgICBxZW11X2RtYSAqcGh5c2ljYWxfZG1hOwog CiAgICAgbGludXhfYm9vdCA9IChrZXJuZWxfZmlsZW5hbWUgIT0gTlVMTCk7CiAKQEAgLTQwOCw2 ICs0MTUsOCBAQAogICAgICAgICBpbml0cmRfc2l6ZSA9IDA7CiAgICAgfQogCisgICAgcGh5c2lj YWxfZG1hID0gcWVtdV9pbml0X2RtYShwcGNfZG1hX21lbW9yeV9ydywgTlVMTCk7CisKICAgICBp ZiAoaXNfaGVhdGhyb3cpIHsKICAgICAgICAgaXNhX21lbV9iYXNlID0gMHg4MDAwMDAwMDsKIApA QCAtNDM0LDcgKzQ0Myw3IEBACiAgICAgICAgIGZvcihpID0gMDsgaSA8IG5iX25pY3M7IGkrKykg ewogICAgICAgICAgICAgaWYgKCFuZF90YWJsZVtpXS5tb2RlbCkKICAgICAgICAgICAgICAgICBu ZF90YWJsZVtpXS5tb2RlbCA9ICJuZTJrX3BjaSI7Ci0gICAgICAgICAgICBwY2lfbmljX2luaXQo cGNpX2J1cywgJm5kX3RhYmxlW2ldLCAtMSk7CisgICAgICAgICAgICBwY2lfbmljX2luaXQocGNp X2J1cywgJm5kX3RhYmxlW2ldLCAtMSwgcGh5c2ljYWxfZG1hKTsKICAgICAgICAgfQogICAgICAg ICAKICAgICAgICAgcGNpX2NtZDY0Nl9pZGVfaW5pdChwY2lfYnVzLCAmYnNfdGFibGVbMF0sIDAp OwpAQCAtNTI0LDcgKzUzMyw3IEBACiAgICAgICAgIGZvcihpID0gMDsgaSA8IG5iX25pY3M7IGkr KykgewogICAgICAgICAgICAgaWYgKCFuZF90YWJsZVtpXS5tb2RlbCkKICAgICAgICAgICAgICAg ICBuZF90YWJsZVtpXS5tb2RlbCA9ICJuZTJrX3BjaSI7Ci0gICAgICAgICAgICBwY2lfbmljX2lu aXQocGNpX2J1cywgJm5kX3RhYmxlW2ldLCAtMSk7CisgICAgICAgICAgICBwY2lfbmljX2luaXQo cGNpX2J1cywgJm5kX3RhYmxlW2ldLCAtMSwgcGh5c2ljYWxfZG1hKTsKICAgICAgICAgfQogI2lm IDEKICAgICAgICAgaWRlMF9tZW1faW5kZXggPSBwbWFjX2lkZV9pbml0KCZic190YWJsZVswXSwg cGljWzB4MTNdKTsKSW5kZXg6IHFlbXUvaHcvYXBiX3BjaS5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUu b3JpZy9ody9hcGJfcGNpLmMJMjAwNy0wOC0yMyAxOToxNTowOC4wMDAwMDAwMDAgKzAwMDAKKysr IHFlbXUvaHcvYXBiX3BjaS5jCTIwMDctMDgtMjMgMTk6Mjg6MzcuMDAwMDAwMDAwICswMDAwCkBA IC0zMCw3ICszMCwxMCBAQAogdHlwZWRlZiB0YXJnZXRfcGh5c19hZGRyX3QgcGNpX2FkZHJfdDsK ICNpbmNsdWRlICJwY2lfaG9zdC5oIgogCi10eXBlZGVmIFBDSUhvc3RTdGF0ZSBBUEJTdGF0ZTsK K3R5cGVkZWYgc3RydWN0IEFQQlN0YXRlIHsKKyAgICBQQ0lIb3N0U3RhdGUgcGNpOworICAgIHFl bXVfZG1hICpkbWE7Cit9IEFQQlN0YXRlOwogCiBzdGF0aWMgdm9pZCBwY2lfYXBiX2NvbmZpZ193 cml0ZWwgKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbCkKQEAgLTQyLDcgKzQ1 LDcgQEAKICAgICAgICAgaWYgKCh2YWwgJiAoMSA8PCBpKSkgIT0gMCkKICAgICAgICAgICAgIGJy ZWFrOwogICAgIH0KLSAgICBzLT5jb25maWdfcmVnID0gKDEgPDwgMTYpIHwgKHZhbCAmIDB4N0ZD KSB8IChpIDw8IDExKTsKKyAgICBzLT5wY2kuY29uZmlnX3JlZyA9ICgxIDw8IDE2KSB8ICh2YWwg JiAweDdGQykgfCAoaSA8PCAxMSk7CiB9CiAKIHN0YXRpYyB1aW50MzJfdCBwY2lfYXBiX2NvbmZp Z19yZWFkbCAodm9pZCAqb3BhcXVlLApAQCAtNTIsOCArNTUsOSBAQAogICAgIHVpbnQzMl90IHZh bDsKICAgICBpbnQgZGV2Zm47CiAKLSAgICBkZXZmbiA9IChzLT5jb25maWdfcmVnID4+IDgpICYg MHhGRjsKLSAgICB2YWwgPSAoMSA8PCAoZGV2Zm4gPj4gMykpIHwgKChkZXZmbiAmIDB4MDcpIDw8 IDgpIHwgKHMtPmNvbmZpZ19yZWcgJiAweEZDKTsKKyAgICBkZXZmbiA9IChzLT5wY2kuY29uZmln X3JlZyA+PiA4KSAmIDB4RkY7CisgICAgdmFsID0gKDEgPDwgKGRldmZuID4+IDMpKSB8ICgoZGV2 Zm4gJiAweDA3KSA8PCA4KSB8CisgICAgICAgIChzLT5wY2kuY29uZmlnX3JlZyAmIDB4RkMpOwog ICAgIHJldHVybiB2YWw7CiB9CiAKQEAgLTIwNiw5ICsyMTAsMTggQEAKICAgICBxZW11X3NldF9p cnEocGljW2lycV9udW1dLCBsZXZlbCk7CiB9CiAKK3N0YXRpYyB2b2lkIGFwYl9kbWFfbWVtb3J5 X3J3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBpc193cml0ZSkKK3sK KyAgICBBUEJTdGF0ZSAqcyA9IG9wYXF1ZTsKKworICAgIC8vIFhYWCBpbXBsZW1lbnQgSU9NTVUK KyAgICBkbWFfbWVtb3J5X3J3KHMtPmRtYSwgYWRkciwgYnVmLCBsZW4sIGlzX3dyaXRlKTsKK30K KwogUENJQnVzICpwY2lfYXBiX2luaXQodGFyZ2V0X3BoeXNfYWRkcl90IHNwZWNpYWxfYmFzZSwK ICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9waHlzX2FkZHJfdCBtZW1fYmFzZSwKLSAgICAg ICAgICAgICAgICAgICAgIHFlbXVfaXJxICpwaWMpCisgICAgICAgICAgICAgICAgICAgICBxZW11 X2lycSAqcGljLCBxZW11X2RtYSAqcGFyZW50X2RtYSwgcWVtdV9kbWEgKipkdm1hKQogewogICAg IEFQQlN0YXRlICpzOwogICAgIFBDSURldmljZSAqZDsKQEAgLTIxNyw3ICsyMzAsNyBAQAogCiAg ICAgcyA9IHFlbXVfbWFsbG9jeihzaXplb2YoQVBCU3RhdGUpKTsKICAgICAvKiBVbHRyYXNwYXJj IFBCTSBtYWluIGJ1cyAqLwotICAgIHMtPmJ1cyA9IHBjaV9yZWdpc3Rlcl9idXMocGNpX2FwYl9z ZXRfaXJxLCBwY2lfcGJtX21hcF9pcnEsIHBpYywgMCwgMzIpOworICAgIHMtPnBjaS5idXMgPSBw Y2lfcmVnaXN0ZXJfYnVzKHBjaV9hcGJfc2V0X2lycSwgcGNpX3BibV9tYXBfaXJxLCBwaWMsIDAs IDMyKTsKIAogICAgIHBjaV9tZW1fY29uZmlnID0gY3B1X3JlZ2lzdGVyX2lvX21lbW9yeSgwLCBw Y2lfYXBiX2NvbmZpZ19yZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwY2lfYXBiX2NvbmZpZ193cml0ZSwgcyk7CkBAIC0yMzMsNyArMjQ2LDcgQEAKICAg ICBjcHVfcmVnaXN0ZXJfcGh5c2ljYWxfbWVtb3J5KHNwZWNpYWxfYmFzZSArIDB4MjAwMDAwMFVM TCwgMHgxMDAwMCwgcGNpX2lvcG9ydCk7CiAgICAgY3B1X3JlZ2lzdGVyX3BoeXNpY2FsX21lbW9y eShtZW1fYmFzZSwgMHgxMDAwMDAwMCwgcGNpX21lbV9kYXRhKTsgLy8gWFhYIHNpemUgc2hvdWxk IGJlIDRHLXByb20KIAotICAgIGQgPSBwY2lfcmVnaXN0ZXJfZGV2aWNlKHMtPmJ1cywgIkFkdmFu Y2VkIFBDSSBCdXMiLCBzaXplb2YoUENJRGV2aWNlKSwgCisgICAgZCA9IHBjaV9yZWdpc3Rlcl9k ZXZpY2Uocy0+cGNpLmJ1cywgIkFkdmFuY2VkIFBDSSBCdXMiLCBzaXplb2YoUENJRGV2aWNlKSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCBOVUxMKTsKICAgICBkLT5jb25m aWdbMHgwMF0gPSAweDhlOyAvLyB2ZW5kb3JfaWQgOiBTdW4KICAgICBkLT5jb25maWdbMHgwMV0g PSAweDEwOwpAQCAtMjUxLDggKzI2NCwxMiBAQAogICAgIGQtPmNvbmZpZ1sweDBFXSA9IDB4MDA7 IC8vIGhlYWRlcl90eXBlCiAKICAgICAvKiBBUEIgc2Vjb25kYXJ5IGJ1c3NlcyAqLwotICAgIHNl Y29uZGFyeSA9IHBjaV9icmlkZ2VfaW5pdChzLT5idXMsIDgsIDB4MTA4ZTUwMDAsIHBjaV9hcGJf bWFwX2lycSwgIkFkdmFuY2VkIFBDSSBCdXMgc2Vjb25kYXJ5IGJyaWRnZSAxIik7Ci0gICAgcGNp X2JyaWRnZV9pbml0KHMtPmJ1cywgOSwgMHgxMDhlNTAwMCwgcGNpX2FwYl9tYXBfaXJxLCAiQWR2 YW5jZWQgUENJIEJ1cyBzZWNvbmRhcnkgYnJpZGdlIDIiKTsKKyAgICBzZWNvbmRhcnkgPSBwY2lf YnJpZGdlX2luaXQocy0+cGNpLmJ1cywgOCwgMHgxMDhlNTAwMCwgcGNpX2FwYl9tYXBfaXJxLCAi QWR2YW5jZWQgUENJIEJ1cyBzZWNvbmRhcnkgYnJpZGdlIDEiKTsKKyAgICBwY2lfYnJpZGdlX2lu aXQocy0+cGNpLmJ1cywgOSwgMHgxMDhlNTAwMCwgcGNpX2FwYl9tYXBfaXJxLCAiQWR2YW5jZWQg UENJIEJ1cyBzZWNvbmRhcnkgYnJpZGdlIDIiKTsKKworICAgIHMtPmRtYSA9IHBhcmVudF9kbWE7 CisgICAgKmR2bWEgPSBxZW11X2luaXRfZG1hKGFwYl9kbWFfbWVtb3J5X3J3LCBkKTsKKwogICAg IHJldHVybiBzZWNvbmRhcnk7CiB9CiAKSW5kZXg6IHFlbXUvaHcvc3VuNHUuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBxZW11Lm9yaWcvaHcvc3VuNHUuYwkyMDA3LTA4LTIzIDE5OjExOjQwLjAwMDAwMDAwMCAr MDAwMAorKysgcWVtdS9ody9zdW40dS5jCTIwMDctMDgtMjMgMTk6MjE6MjUuMDAwMDAwMDAwICsw MDAwCkBAIC00NywxOSArNDcsMTAgQEAKIHsKICAgICByZXR1cm4gMDsKIH0KLWludCBETUFfcmVh ZF9tZW1vcnkgKGludCBuY2hhbiwgdm9pZCAqYnVmLCBpbnQgcG9zLCBpbnQgc2l6ZSkKLXsKLSAg ICByZXR1cm4gMDsKLX0KLWludCBETUFfd3JpdGVfbWVtb3J5IChpbnQgbmNoYW4sIHZvaWQgKmJ1 ZiwgaW50IHBvcywgaW50IHNpemUpCi17Ci0gICAgcmV0dXJuIDA7Ci19CiB2b2lkIERNQV9ob2xk X0RSRVEgKGludCBuY2hhbikge30KIHZvaWQgRE1BX3JlbGVhc2VfRFJFUSAoaW50IG5jaGFuKSB7 fQogdm9pZCBETUFfc2NoZWR1bGUoaW50IG5jaGFuKSB7fQogdm9pZCBETUFfcnVuICh2b2lkKSB7 fQotdm9pZCBETUFfaW5pdCAoaW50IGhpZ2hfcGFnZV9lbmFibGUpIHt9CiB2b2lkIERNQV9yZWdp c3Rlcl9jaGFubmVsIChpbnQgbmNoYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBETUFf dHJhbnNmZXJfaGFuZGxlciB0cmFuc2Zlcl9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgdm9pZCAqb3BhcXVlKQpAQCAtMzE4LDYgKzMwOSwxMiBAQAogewogfQogCitzdGF0aWMg dm9pZCBzdW40dV9kbWFfbWVtb3J5X3J3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90 IGFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50 IGxlbiwgaW50IGlzX3dyaXRlKQoreworICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcncoYWRkciwg YnVmLCBsZW4sIGlzX3dyaXRlKTsKK30KKwogc3RhdGljIGNvbnN0IGludCBpZGVfaW9iYXNlWzJd ID0geyAweDFmMCwgMHgxNzAgfTsKIHN0YXRpYyBjb25zdCBpbnQgaWRlX2lvYmFzZTJbMl0gPSB7 IDB4M2Y2LCAweDM3NiB9Owogc3RhdGljIGNvbnN0IGludCBpZGVfaXJxWzJdID0geyAxNCwgMTUg fTsKQEAgLTM0Niw2ICszNDMsNyBAQAogICAgIGNvbnN0IHNwYXJjX2RlZl90ICpkZWY7CiAgICAg UUVNVUJIICpiaDsKICAgICBxZW11X2lycSAqaXJxOworICAgIHFlbXVfZG1hICpwaHlzaWNhbF9k bWEsICpwY2lfZHZtYTsKIAogICAgIGxpbnV4X2Jvb3QgPSAoa2VybmVsX2ZpbGVuYW1lICE9IE5V TEwpOwogCkBAIC00MjUsNyArNDIzLDEwIEBACiAJICAgIH0KICAgICAgICAgfQogICAgIH0KLSAg ICBwY2lfYnVzID0gcGNpX2FwYl9pbml0KEFQQl9TUEVDSUFMX0JBU0UsIEFQQl9NRU1fQkFTRSwg TlVMTCk7CisgICAgcGh5c2ljYWxfZG1hID0gcWVtdV9pbml0X2RtYShzdW40dV9kbWFfbWVtb3J5 X3J3LCBOVUxMKTsKKyAgICBwY2lfYnVzID0gcGNpX2FwYl9pbml0KEFQQl9TUEVDSUFMX0JBU0Us IEFQQl9NRU1fQkFTRSwgTlVMTCwgcGh5c2ljYWxfZG1hLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgJnBjaV9kdm1hKTsKKwogICAgIGlzYV9tZW1fYmFzZSA9IFZHQV9CQVNFOwogICAgIHBj aV9jaXJydXNfdmdhX2luaXQocGNpX2J1cywgZHMsIHBoeXNfcmFtX2Jhc2UgKyByYW1fc2l6ZSwg cmFtX3NpemUsIHZnYV9yYW1fc2l6ZSk7CiAKQEAgLTQ0NCw3ICs0NDUsNyBAQAogICAgIGZvcihp ID0gMDsgaSA8IG5iX25pY3M7IGkrKykgewogICAgICAgICBpZiAoIW5kX3RhYmxlW2ldLm1vZGVs KQogICAgICAgICAgICAgbmRfdGFibGVbaV0ubW9kZWwgPSAibmUya19wY2kiOwotCXBjaV9uaWNf aW5pdChwY2lfYnVzLCAmbmRfdGFibGVbaV0sIC0xKTsKKwlwY2lfbmljX2luaXQocGNpX2J1cywg Jm5kX3RhYmxlW2ldLCAtMSwgcGNpX2R2bWEpOwogICAgIH0KIAogICAgIGlycSA9IHFlbXVfYWxs b2NhdGVfaXJxcyhkdW1teV9jcHVfc2V0X2lycSwgTlVMTCwgMzIpOwpAQCAtNDUyLDcgKzQ1Myw3 IEBACiAgICAgcGNpX3BpaXgzX2lkZV9pbml0KHBjaV9idXMsIGJzX3RhYmxlLCAtMSwgaXJxKTsK ICAgICAvKiBGSVhNRTogd2lyZSB1cCBpbnRlcnJ1cHRzLiAgKi8KICAgICBpODA0Ml9pbml0KE5V TEwvKjEqLywgTlVMTC8qMTIqLywgMHg2MCk7Ci0gICAgZmxvcHB5X2NvbnRyb2xsZXIgPSBmZGN0 cmxfaW5pdChOVUxMLyo2Ki8sIDIsIDAsIDB4M2YwLCBmZF90YWJsZSk7CisgICAgZmxvcHB5X2Nv bnRyb2xsZXIgPSBmZGN0cmxfaW5pdChOVUxMLyo2Ki8sIDIsIDAsIDB4M2YwLCBmZF90YWJsZSwg cGNpX2R2bWEpOwogICAgIG52cmFtID0gbTQ4dDU5X2luaXQoTlVMTC8qOCovLCAwLCAweDAwNzQs IE5WUkFNX1NJWkUsIDU5KTsKICAgICBzdW40dV9OVlJBTV9zZXRfcGFyYW1zKG52cmFtLCBOVlJB TV9TSVpFLCAiU3VuNHUiLCByYW1fc2l6ZSwgYm9vdF9kZXZpY2UsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgS0VSTkVMX0xPQURfQUREUiwga2VybmVsX3NpemUsCkluZGV4OiBxZW11L2h3L3Zl cnNhdGlsZXBiLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L3ZlcnNhdGlsZXBiLmMJMjAw Ny0wOC0yMyAxOTozODoxMC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvdmVyc2F0aWxlcGIu YwkyMDA3LTA4LTIzIDE5OjM5OjMzLjAwMDAwMDAwMCArMDAwMApAQCAtMTQ1LDYgKzE0NSwxMiBA QAogICAgIHJldHVybiBxaTsKIH0KIAorc3RhdGljIHZvaWQgYXJtX2RtYV9tZW1vcnlfcncodm9p ZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbiwgaW50IGlzX3dyaXRlKQoreworICAgIGNw dV9waHlzaWNhbF9tZW1vcnlfcncoYWRkciwgYnVmLCBsZW4sIGlzX3dyaXRlKTsKK30KKwogLyog Qm9hcmQgaW5pdC4gICovCiAKIC8qIFRoZSBBQiBhbmQgUEIgYm9hcmRzIGJvdGggdXNlIHRoZSBz YW1lIGNvcmUsIGp1c3Qgd2l0aCBkaWZmZXJlbnQKQEAgLTE2Myw2ICsxNjksNyBAQAogICAgIHZv aWQgKnNjc2lfaGJhOwogICAgIFBDSUJ1cyAqcGNpX2J1czsKICAgICBOSUNJbmZvICpuZDsKKyAg ICBxZW11X2RtYSAqcGh5c2ljYWxfZG1hOwogICAgIGludCBuOwogICAgIGludCBkb25lX3NtYyA9 IDA7CiAKQEAgLTE4MSw2ICsxODgsOCBAQAogICAgIHBsMDUwX2luaXQoMHgxMDAwNjAwMCwgc2lj WzNdLCAwKTsKICAgICBwbDA1MF9pbml0KDB4MTAwMDcwMDAsIHNpY1s0XSwgMSk7CiAKKyAgICBw aHlzaWNhbF9kbWEgPSBxZW11X2luaXRfZG1hKGFybV9kbWFfbWVtb3J5X3J3LCBOVUxMKTsKKwog ICAgIHBjaV9idXMgPSBwY2lfdnBiX2luaXQoc2ljLCAyNywgMCk7CiAgICAgLyogVGhlIFZlcnNh dGlsZSBQQ0kgYnJpZGdlIGRvZXMgbm90IHByb3ZpZGUgYWNjZXNzIHRvIFBDSSBJTyBzcGFjZSwK ICAgICAgICBzbyBtYW55IG9mIHRoZSBxZW11IFBDSSBkZXZpY2VzIGFyZSBub3QgdXNlYWJsZS4g ICovCkBAIC0xOTEsNyArMjAwLDcgQEAKICAgICAgICAgaWYgKHN0cmNtcChuZC0+bW9kZWwsICJz bWM5MWMxMTEiKSA9PSAwKSB7CiAgICAgICAgICAgICBzbWM5MWMxMTFfaW5pdChuZCwgMHgxMDAx MDAwMCwgc2ljWzI1XSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwY2lfbmljX2lu aXQocGNpX2J1cywgbmQsIC0xKTsKKyAgICAgICAgICAgIHBjaV9uaWNfaW5pdChwY2lfYnVzLCBu ZCwgLTEsIHBoeXNpY2FsX2RtYSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHVzYl9lbmFi bGVkKSB7CkluZGV4OiBxZW11L2h3L2VzMTM3MC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9o dy9lczEzNzAuYwkyMDA3LTA4LTIzIDIwOjI0OjU4LjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS9o dy9lczEzNzAuYwkyMDA3LTA4LTIzIDIwOjI5OjU0LjAwMDAwMDAwMCArMDAwMApAQCAtMjc1LDYg KzI3NSw3IEBACiAgICAgdWludDMyX3QgbWVtcGFnZTsKICAgICB1aW50MzJfdCBjb2RlYzsKICAg ICB1aW50MzJfdCBzY3RsOworICAgIHFlbXVfZG1hICpkbWE7CiB9IEVTMTM3MFN0YXRlOwogCiB0 eXBlZGVmIHN0cnVjdCBQQ0lFUzEzNzBTdGF0ZSB7CkBAIC04MDUsNyArODA2LDcgQEAKICAgICAg ICAgICAgIGlmICghYWNxdWlyZWQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg ICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfd3JpdGUgKGFkZHIsIHRtcGJ1ZiwgYWNxdWlyZWQpOwor ICAgICAgICAgICAgZG1hX21lbW9yeV93cml0ZShzLT5kbWEsIGFkZHIsIHRtcGJ1ZiwgYWNxdWly ZWQpOwogCiAgICAgICAgICAgICB0ZW1wIC09IGFjcXVpcmVkOwogICAgICAgICAgICAgYWRkciAr PSBhY3F1aXJlZDsKQEAgLTgxOSw3ICs4MjAsNyBAQAogICAgICAgICAgICAgaW50IGNvcGllZCwg dG9fY29weTsKIAogICAgICAgICAgICAgdG9fY29weSA9IGF1ZGlvX01JTiAoKHNpemVfdCkgdGVt cCwgc2l6ZW9mICh0bXBidWYpKTsKLSAgICAgICAgICAgIGNwdV9waHlzaWNhbF9tZW1vcnlfcmVh ZCAoYWRkciwgdG1wYnVmLCB0b19jb3B5KTsKKyAgICAgICAgICAgIGRtYV9tZW1vcnlfcmVhZCAo cy0+ZG1hLCBhZGRyLCB0bXBidWYsIHRvX2NvcHkpOwogICAgICAgICAgICAgY29waWVkID0gQVVE X3dyaXRlICh2b2ljZSwgdG1wYnVmLCB0b19jb3B5KTsKICAgICAgICAgICAgIGlmICghY29waWVk KQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTk2LDcgKzk5Nyw3IEBACiAgICAgZXMxMzcw X3Jlc2V0IChzKTsKIH0KIAotaW50IGVzMTM3MF9pbml0IChQQ0lCdXMgKmJ1cywgQXVkaW9TdGF0 ZSAqYXVkaW8pCitpbnQgZXMxMzcwX2luaXQgKFBDSUJ1cyAqYnVzLCBBdWRpb1N0YXRlICphdWRp bywgcWVtdV9kbWEgKnBhcmVudF9kbWEpCiB7CiAgICAgUENJRVMxMzcwU3RhdGUgKmQ7CiAgICAg RVMxMzcwU3RhdGUgKnM7CkBAIC0xMDUxLDYgKzEwNTIsNyBAQAogCiAgICAgcyA9ICZkLT5lczEz NzA7CiAgICAgcy0+cGNpX2RldiA9ICZkLT5kZXY7CisgICAgcy0+ZG1hID0gcGFyZW50X2RtYTsK IAogICAgIHBjaV9yZWdpc3Rlcl9pb19yZWdpb24gKCZkLT5kZXYsIDAsIDI1NiwgUENJX0FERFJF U1NfU1BBQ0VfSU8sIGVzMTM3MF9tYXApOwogICAgIHJlZ2lzdGVyX3NhdmV2bSAoImVzMTM3MCIs IDAsIDEsIGVzMTM3MF9zYXZlLCBlczEzNzBfbG9hZCwgcyk7Cg== ------=_Part_99721_13484370.1187984458502 Content-Type: text/x-diff; name=sparc32_dma_esp_le_to_gdma.diff; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_f5r38wg7 Content-Disposition: attachment; filename="sparc32_dma_esp_le_to_gdma.diff" SW5kZXg6IHFlbXUvaHcvc3BhcmMzMl9kbWEuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcv c3BhcmMzMl9kbWEuYwkyMDA3LTA4LTIyIDIwOjAzOjA5LjAwMDAwMDAwMCArMDAwMAorKysgcWVt dS9ody9zcGFyYzMyX2RtYS5jCTIwMDctMDgtMjIgMjA6MDM6NDcuMDAwMDAwMDAwICswMDAwCkBA IC01OCw2MiArNTgsMTAgQEAKIHN0cnVjdCBETUFTdGF0ZSB7CiAgICAgdWludDMyX3QgZG1hcmVn c1tETUFfUkVHU107CiAgICAgcWVtdV9pcnEgaXJxOwotICAgIHZvaWQgKmlvbW11OwogICAgIHFl bXVfaXJxIGRldl9yZXNldDsKKyAgICBxZW11X2RtYSAqZG1hOwogfTsKIAotLyogTm90ZTogb24g c3BhcmMsIHRoZSBsYW5jZSAxNiBiaXQgYnVzIGlzIHN3YXBwZWQgKi8KLXZvaWQgbGVkbWFfbWVt b3J5X3JlYWQodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgCi0gICAgICAg ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbiwgaW50IGRvX2Jzd2FwKQotewot ICAgIERNQVN0YXRlICpzID0gb3BhcXVlOwotICAgIGludCBpOwotCi0gICAgRFBSSU5URigiRE1B IHdyaXRlLCBkaXJlY3Rpb246ICVjLCBhZGRyIDB4JTguOHhcbiIsCi0gICAgICAgICAgICBzLT5k bWFyZWdzWzBdICYgRE1BX1dSSVRFX01FTSA/ICd3JzogJ3InLCBzLT5kbWFyZWdzWzFdKTsKLSAg ICBhZGRyIHw9IHMtPmRtYXJlZ3NbM107Ci0gICAgaWYgKGRvX2Jzd2FwKSB7Ci0gICAgICAgIHNw YXJjX2lvbW11X21lbW9yeV9yZWFkKHMtPmlvbW11LCBhZGRyLCBidWYsIGxlbik7Ci0gICAgfSBl bHNlIHsKLSAgICAgICAgYWRkciAmPSB+MTsKLSAgICAgICAgbGVuICY9IH4xOwotICAgICAgICBz cGFyY19pb21tdV9tZW1vcnlfcmVhZChzLT5pb21tdSwgYWRkciwgYnVmLCBsZW4pOwotICAgICAg ICBmb3IoaSA9IDA7IGkgPCBsZW47IGkgKz0gMikgewotICAgICAgICAgICAgYnN3YXAxNnMoKHVp bnQxNl90ICopKGJ1ZiArIGkpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBsZWRtYV9t ZW1vcnlfd3JpdGUodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgCi0gICAg ICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBkb19ic3dhcCkK LXsKLSAgICBETUFTdGF0ZSAqcyA9IG9wYXF1ZTsKLSAgICBpbnQgbCwgaTsKLSAgICB1aW50MTZf dCB0bXBfYnVmWzMyXTsKLQotICAgIERQUklOVEYoIkRNQSByZWFkLCBkaXJlY3Rpb246ICVjLCBh ZGRyIDB4JTguOHhcbiIsCi0gICAgICAgICAgICBzLT5kbWFyZWdzWzBdICYgRE1BX1dSSVRFX01F TSA/ICd3JzogJ3InLCBzLT5kbWFyZWdzWzFdKTsKLSAgICBhZGRyIHw9IHMtPmRtYXJlZ3NbM107 Ci0gICAgaWYgKGRvX2Jzd2FwKSB7Ci0gICAgICAgIHNwYXJjX2lvbW11X21lbW9yeV93cml0ZShz LT5pb21tdSwgYWRkciwgYnVmLCBsZW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGFkZHIgJj0g fjE7Ci0gICAgICAgIGxlbiAmPSB+MTsKLSAgICAgICAgd2hpbGUgKGxlbiA+IDApIHsKLSAgICAg ICAgICAgIGwgPSBsZW47Ci0gICAgICAgICAgICBpZiAobCA+IHNpemVvZih0bXBfYnVmKSkKLSAg ICAgICAgICAgICAgICBsID0gc2l6ZW9mKHRtcF9idWYpOwotICAgICAgICAgICAgZm9yKGkgPSAw OyBpIDwgbDsgaSArPSAyKSB7Ci0gICAgICAgICAgICAgICAgdG1wX2J1ZltpID4+IDFdID0gYnN3 YXAxNigqKHVpbnQxNl90ICopKGJ1ZiArIGkpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg IHNwYXJjX2lvbW11X21lbW9yeV93cml0ZShzLT5pb21tdSwgYWRkciwgKHVpbnQ4X3QgKil0bXBf YnVmLCBsKTsKLSAgICAgICAgICAgIGxlbiAtPSBsOwotICAgICAgICAgICAgYnVmICs9IGw7Ci0g ICAgICAgICAgICBhZGRyICs9IGw7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIHN0YXRpYyB2b2lk IGRtYV9zZXRfaXJxKHZvaWQgKm9wYXF1ZSwgaW50IGlycSwgaW50IGxldmVsKQogewogICAgIERN QVN0YXRlICpzID0gb3BhcXVlOwpAQCAtMTI4LDI0ICs3NiwyOSBAQAogICAgIH0KIH0KIAotdm9p ZCBlc3BkbWFfbWVtb3J5X3JlYWQodm9pZCAqb3BhcXVlLCB1aW50OF90ICpidWYsIGludCBsZW4p CitzdGF0aWMgdm9pZCBsZWRtYV9tZW1vcnlfcncodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19h ZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGlu dCBsZW4sIGludCBpc193cml0ZSkKIHsKICAgICBETUFTdGF0ZSAqcyA9IG9wYXF1ZTsKIAotICAg IERQUklOVEYoIkRNQSByZWFkLCBkaXJlY3Rpb246ICVjLCBhZGRyIDB4JTguOHhcbiIsCi0gICAg ICAgICAgICBzLT5kbWFyZWdzWzBdICYgRE1BX1dSSVRFX01FTSA/ICd3JzogJ3InLCBzLT5kbWFy ZWdzWzFdKTsKLSAgICBzcGFyY19pb21tdV9tZW1vcnlfcmVhZChzLT5pb21tdSwgcy0+ZG1hcmVn c1sxXSwgYnVmLCBsZW4pOwotICAgIHMtPmRtYXJlZ3NbMF0gfD0gRE1BX0lOVFI7Ci0gICAgcy0+ ZG1hcmVnc1sxXSArPSBsZW47CisgICAgRFBSSU5URigiRE1BICVzLCBkaXJlY3Rpb246ICVjLCBh ZGRyIDB4JTguOHhcbiIsCisgICAgICAgICAgICBpc193cml0ZSA/ICJ3cml0ZSIgOiAicmVhZCIs CisgICAgICAgICAgICBzLT5kbWFyZWdzWzBdICYgRE1BX1dSSVRFX01FTSA/ICd3JzogJ3InLCBh ZGRyKTsKKyAgICBhZGRyIHw9IHMtPmRtYXJlZ3NbM107CisgICAgYWRkciAmPSB+MTsKKyAgICBs ZW4gJj0gfjE7CisgICAgZG1hX21lbW9yeV9ydyhzLT5kbWEsIGFkZHIsIGJ1ZiwgbGVuLCBpc193 cml0ZSk7CiB9CiAKLXZvaWQgZXNwZG1hX21lbW9yeV93cml0ZSh2b2lkICpvcGFxdWUsIHVpbnQ4 X3QgKmJ1ZiwgaW50IGxlbikKK3N0YXRpYyB2b2lkIGVzcGRtYV9tZW1vcnlfcncodm9pZCAqb3Bh cXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNfd3JpdGUpCiB7CiAgICAgRE1BU3RhdGUg KnMgPSBvcGFxdWU7CiAKLSAgICBEUFJJTlRGKCJETUEgd3JpdGUsIGRpcmVjdGlvbjogJWMsIGFk ZHIgMHglOC44eFxuIiwKKyAgICBEUFJJTlRGKCJETUEgJXMsIGRpcmVjdGlvbjogJWMsIGFkZHIg MHglOC44eFxuIiwKKyAgICAgICAgICAgIGlzX3dyaXRlID8gIndyaXRlIiA6ICJyZWFkIiwKICAg ICAgICAgICAgIHMtPmRtYXJlZ3NbMF0gJiBETUFfV1JJVEVfTUVNID8gJ3cnOiAncicsIHMtPmRt YXJlZ3NbMV0pOwotICAgIHNwYXJjX2lvbW11X21lbW9yeV93cml0ZShzLT5pb21tdSwgcy0+ZG1h cmVnc1sxXSwgYnVmLCBsZW4pOworICAgIGRtYV9tZW1vcnlfcncocy0+ZG1hLCBzLT5kbWFyZWdz WzFdLCBidWYsIGxlbiwgaXNfd3JpdGUpOwogICAgIHMtPmRtYXJlZ3NbMF0gfD0gRE1BX0lOVFI7 CiAgICAgcy0+ZG1hcmVnc1sxXSArPSBsZW47CiB9CkBAIC0yMzgsNyArMTkxLDggQEAKIH0KIAog dm9pZCAqc3BhcmMzMl9kbWFfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgZGFkZHIsIHFlbXVfaXJx IHBhcmVudF9pcnEsCi0gICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmlvbW11LCBxZW11X2ly cSAqKmRldl9pcnEsIHFlbXVfaXJxICoqcmVzZXQpCisgICAgICAgICAgICAgICAgICAgICAgIHFl bXVfaXJxICoqZGV2X2lycSwgcWVtdV9kbWEgKnBhcmVudF9kbWEsCisgICAgICAgICAgICAgICAg ICAgICAgIHFlbXVfZG1hICoqZGV2X2RtYSwgaW50IGlzX2VzcGRtYSwgcWVtdV9pcnEgKipyZXNl dCkKIHsKICAgICBETUFTdGF0ZSAqczsKICAgICBpbnQgZG1hX2lvX21lbW9yeTsKQEAgLTI0OCw3 ICsyMDIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHMtPmlycSA9IHBhcmVudF9p cnE7Ci0gICAgcy0+aW9tbXUgPSBpb21tdTsKKyAgICBzLT5kbWEgPSBwYXJlbnRfZG1hOwogCiAg ICAgZG1hX2lvX21lbW9yeSA9IGNwdV9yZWdpc3Rlcl9pb19tZW1vcnkoMCwgZG1hX21lbV9yZWFk LCBkbWFfbWVtX3dyaXRlLCBzKTsKICAgICBjcHVfcmVnaXN0ZXJfcGh5c2ljYWxfbWVtb3J5KGRh ZGRyLCBETUFfU0laRSwgZG1hX2lvX21lbW9yeSk7CkBAIC0yNTksNSArMjEzLDEwIEBACiAKICAg ICAqcmVzZXQgPSAmcy0+ZGV2X3Jlc2V0OwogCisgICAgaWYgKGlzX2VzcGRtYSkKKyAgICAgICAg KmRldl9kbWEgPSBxZW11X2luaXRfZG1hKGVzcGRtYV9tZW1vcnlfcncsIHMpOworICAgIGVsc2UK KyAgICAgICAgKmRldl9kbWEgPSBxZW11X2luaXRfZG1hKGxlZG1hX21lbW9yeV9ydywgcyk7CisK ICAgICByZXR1cm4gczsKIH0KSW5kZXg6IHFlbXUvaHcvc3VuNG0uYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBx ZW11Lm9yaWcvaHcvc3VuNG0uYwkyMDA3LTA4LTIyIDIwOjAzOjI4LjAwMDAwMDAwMCArMDAwMAor KysgcWVtdS9ody9zdW40bS5jCTIwMDctMDgtMjIgMjA6MDM6NDcuMDAwMDAwMDAwICswMDAwCkBA IC0zMTgsNyArMzE4LDcgQEAKICAgICBxZW11X2lycSAqY3B1X2lycXNbTUFYX0NQVVNdLCAqc2xh dmlvX2lycSwgKnNsYXZpb19jcHVfaXJxLAogICAgICAgICAqZXNwZG1hX2lycSwgKmxlZG1hX2ly cTsKICAgICBxZW11X2lycSAqZXNwX3Jlc2V0LCAqbGVfcmVzZXQ7Ci0gICAgcWVtdV9kbWEgKnBo eXNpY2FsX2RtYSwgKmR1bW15X2RtYSwgKmR2bWE7CisgICAgcWVtdV9kbWEgKnBoeXNpY2FsX2Rt YSwgKmR1bW15X2RtYSwgKmR2bWEsICplc3BfZHZtYSwgKmxlX2R2bWE7CiAKICAgICAvKiBpbml0 IENQVXMgKi8KICAgICBzcGFyY19maW5kX2J5X25hbWUoY3B1X21vZGVsLCAmZGVmKTsKQEAgLTM2 MCwxMSArMzYwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo d2RlZi0+Y2xvY2tfaXJxKTsKIAogICAgIGVzcGRtYSA9IHNwYXJjMzJfZG1hX2luaXQoaHdkZWYt PmRtYV9iYXNlLCBzbGF2aW9faXJxW2h3ZGVmLT5lc3BfaXJxXSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlvbW11LCAmZXNwZG1hX2lycSwgJmVzcF9yZXNldCk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmZXNwZG1hX2lycSwgZHZtYSwgJmVzcF9kdm1hLCAxLCAmZXNw X3Jlc2V0KTsKIAogICAgIGxlZG1hID0gc3BhcmMzMl9kbWFfaW5pdChod2RlZi0+ZG1hX2Jhc2Ug KyAxNlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xhdmlvX2lycVtod2RlZi0+ bGVfaXJxXSwgaW9tbXUsICZsZWRtYV9pcnEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZsZV9yZXNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsYXZpb19pcnFbaHdk ZWYtPmxlX2lycV0sICZsZWRtYV9pcnEsIGR2bWEsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZsZV9kdm1hLCAwLCAmbGVfcmVzZXQpOwogCiAgICAgaWYgKGdyYXBoaWNfZGVwdGggIT0g OCAmJiBncmFwaGljX2RlcHRoICE9IDI0KSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicWVt dTogVW5zdXBwb3J0ZWQgZGVwdGg6ICVkXG4iLCBncmFwaGljX2RlcHRoKTsKQEAgLTM3NSw3ICsz NzUsNyBAQAogCiAgICAgaWYgKG5kX3RhYmxlWzBdLm1vZGVsID09IE5VTEwKICAgICAgICAgfHwg c3RyY21wKG5kX3RhYmxlWzBdLm1vZGVsLCAibGFuY2UiKSA9PSAwKSB7Ci0gICAgICAgIGxhbmNl X2luaXQoJm5kX3RhYmxlWzBdLCBod2RlZi0+bGVfYmFzZSwgbGVkbWEsICpsZWRtYV9pcnEsIGxl X3Jlc2V0KTsKKyAgICAgICAgbGFuY2VfaW5pdCgmbmRfdGFibGVbMF0sIGh3ZGVmLT5sZV9iYXNl LCAqbGVkbWFfaXJxLCBsZV9kdm1hLCBsZV9yZXNldCk7CiAgICAgfSBlbHNlIGlmIChzdHJjbXAo bmRfdGFibGVbMF0ubW9kZWwsICI/IikgPT0gMCkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwg InFlbXU6IFN1cHBvcnRlZCBOSUNzOiBsYW5jZVxuIik7CiAgICAgICAgIGV4aXQgKDEpOwpAQCAt NDAxLDcgKzQwMSw3IEBACiAgICAgZmRjdHJsX2luaXQoc2xhdmlvX2lycVtod2RlZi0+ZmRfaXJx XSwgMCwgMSwgaHdkZWYtPmZkX2Jhc2UsIGZkX3RhYmxlLAogICAgICAgICAgICAgICAgIGR1bW15 X2RtYSk7CiAKLSAgICBtYWluX2VzcCA9IGVzcF9pbml0KGJzX3RhYmxlLCBod2RlZi0+ZXNwX2Jh c2UsIGVzcGRtYSwgKmVzcGRtYV9pcnEsCisgICAgbWFpbl9lc3AgPSBlc3BfaW5pdChic190YWJs ZSwgaHdkZWYtPmVzcF9iYXNlLCAqZXNwZG1hX2lycSwgZXNwX2R2bWEsCiAgICAgICAgICAgICAg ICAgICAgICAgICBlc3BfcmVzZXQpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IE1BWF9ESVNLUzsg aSsrKSB7CkluZGV4OiBxZW11L3ZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL3ZsLmgJMjAw Ny0wOC0yMiAyMDowMzowOS4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvdmwuaAkyMDA3LTA4LTIy IDIwOjAzOjQ3LjAwMDAwMDAwMCArMDAwMApAQCAtMTA5Nyw4ICsxMDk3LDggQEAKIC8qIHBjbmV0 LmMgKi8KIAogdm9pZCBwY2lfcGNuZXRfaW5pdChQQ0lCdXMgKmJ1cywgTklDSW5mbyAqbmQsIGlu dCBkZXZmbik7Ci12b2lkIGxhbmNlX2luaXQoTklDSW5mbyAqbmQsIHRhcmdldF9waHlzX2FkZHJf dCBsZWFkZHIsIHZvaWQgKmRtYV9vcGFxdWUsCi0gICAgICAgICAgICAgICAgcWVtdV9pcnEgaXJx LCBxZW11X2lycSAqcmVzZXQpOwordm9pZCBsYW5jZV9pbml0KE5JQ0luZm8gKm5kLCB0YXJnZXRf cGh5c19hZGRyX3QgbGVhZGRyLCBxZW11X2lycSBpcnEsCisgICAgICAgICAgICAgICAgcWVtdV9k bWEgKnBhcmVudF9kbWEsIHFlbXVfaXJxICpyZXNldCk7CiAKIC8qIHZtbW91c2UuYyAqLwogdm9p ZCAqdm1tb3VzZV9pbml0KHZvaWQgKm0pOwpAQCAtMTI2NSwyMSArMTI2NSw2IEBACiAvKiBpb21t dS5jICovCiB2b2lkICppb21tdV9pbml0KHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLCBxZW11X2Rt YSAqcGFyZW50X2RtYSwKICAgICAgICAgICAgICAgICAgcWVtdV9kbWEgKipkdm1hKTsKLXZvaWQg c3BhcmNfaW9tbXVfbWVtb3J5X3J3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFk ZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBs ZW4sIGludCBpc193cml0ZSk7Ci1zdGF0aWMgaW5saW5lIHZvaWQgc3BhcmNfaW9tbXVfbWVtb3J5 X3JlYWQodm9pZCAqb3BhcXVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbikKLXsKLSAgICBzcGFyY19p b21tdV9tZW1vcnlfcncob3BhcXVlLCBhZGRyLCBidWYsIGxlbiwgMCk7Ci19Ci0KLXN0YXRpYyBp bmxpbmUgdm9pZCBzcGFyY19pb21tdV9tZW1vcnlfd3JpdGUodm9pZCAqb3BhcXVlLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcGh5c19hZGRyX3Qg YWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhf dCAqYnVmLCBpbnQgbGVuKQotewotICAgIHNwYXJjX2lvbW11X21lbW9yeV9ydyhvcGFxdWUsIGFk ZHIsIGJ1ZiwgbGVuLCAxKTsKLX0KIAogLyogdGN4LmMgKi8KIHZvaWQgdGN4X2luaXQoRGlzcGxh eVN0YXRlICpkcywgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVpbnQ4X3QgKnZyYW1fYmFzZSwK QEAgLTEzMTgsMTcgKzEzMDMsMTIgQEAKIC8qIGVzcC5jICovCiB2b2lkIGVzcF9zY3NpX2F0dGFj aCh2b2lkICpvcGFxdWUsIEJsb2NrRHJpdmVyU3RhdGUgKmJkLCBpbnQgaWQpOwogdm9pZCAqZXNw X2luaXQoQmxvY2tEcml2ZXJTdGF0ZSAqKmJkLCB0YXJnZXRfcGh5c19hZGRyX3QgZXNwYWRkciwK LSAgICAgICAgICAgICAgIHZvaWQgKmRtYV9vcGFxdWUsIHFlbXVfaXJxIGlycSwgcWVtdV9pcnEg KnJlc2V0KTsKKyAgICAgICAgICAgICAgIHFlbXVfaXJxIGlycSwgcWVtdV9kbWEgKnBhcmVudF9k bWEsIHFlbXVfaXJxICpyZXNldCk7CiAKIC8qIHNwYXJjMzJfZG1hLmMgKi8KIHZvaWQgKnNwYXJj MzJfZG1hX2luaXQodGFyZ2V0X3BoeXNfYWRkcl90IGRhZGRyLCBxZW11X2lycSBwYXJlbnRfaXJx LAotICAgICAgICAgICAgICAgICAgICAgICB2b2lkICppb21tdSwgcWVtdV9pcnEgKipkZXZfaXJx LCBxZW11X2lycSAqKnJlc2V0KTsKLXZvaWQgbGVkbWFfbWVtb3J5X3JlYWQodm9pZCAqb3BhcXVl LCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgCi0gICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4 X3QgKmJ1ZiwgaW50IGxlbiwgaW50IGRvX2Jzd2FwKTsKLXZvaWQgbGVkbWFfbWVtb3J5X3dyaXRl KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIAotICAgICAgICAgICAgICAg ICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgZG9fYnN3YXApOwotdm9pZCBlc3Bk bWFfbWVtb3J5X3JlYWQodm9pZCAqb3BhcXVlLCB1aW50OF90ICpidWYsIGludCBsZW4pOwotdm9p ZCBlc3BkbWFfbWVtb3J5X3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDhfdCAqYnVmLCBpbnQgbGVu KTsKKyAgICAgICAgICAgICAgICAgICAgICAgcWVtdV9pcnEgKipkZXZfaXJxLCBxZW11X2RtYSAq cGFyZW50X2RtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgcWVtdV9kbWEgKipkZXZfZG1hLCBp bnQgaXNfZXNwZG1hLCBxZW11X2lycSAqKnJlc2V0KTsKIAogLyogY3M0MjMxLmMgKi8KIHZvaWQg Y3NfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgYmFzZSwgaW50IGlycSwgdm9pZCAqaW50Y3RsKTsK SW5kZXg6IHFlbXUvaHcvZXNwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L2VzcC5jCTIw MDctMDgtMjIgMjA6MDM6MDkuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L2VzcC5jCTIwMDct MDgtMjIgMjA6MDM6NDcuMDAwMDAwMDAwICswMDAwCkBAIC01Miw2ICs1Miw3IEBACiAKIHN0cnVj dCBFU1BTdGF0ZSB7CiAgICAgcWVtdV9pcnEgaXJxOworICAgIHFlbXVfZG1hICpwYXJlbnRfZG1h OwogICAgIEJsb2NrRHJpdmVyU3RhdGUgKipiZDsKICAgICB1aW50OF90IHJyZWdzW0VTUF9SRUdT XTsKICAgICB1aW50OF90IHdyZWdzW0VTUF9SRUdTXTsKQEAgLTczLDcgKzc0LDYgQEAKICAgICB1 aW50MzJfdCBkbWFfY291bnRlcjsKICAgICB1aW50OF90ICphc3luY19idWY7CiAgICAgdWludDMy X3QgYXN5bmNfbGVuOwotICAgIHZvaWQgKmRtYV9vcGFxdWU7CiB9OwogCiAjZGVmaW5lIFNUQVRf RE8gMHgwMApAQCAtMTA1LDcgKzEwNSw3IEBACiAgICAgdGFyZ2V0ID0gcy0+d3JlZ3NbNF0gJiA3 OwogICAgIERQUklOVEYoImdldF9jbWQ6IGxlbiAlZCB0YXJnZXQgJWRcbiIsIGRtYWxlbiwgdGFy Z2V0KTsKICAgICBpZiAocy0+ZG1hKSB7Ci0gICAgICAgIGVzcGRtYV9tZW1vcnlfcmVhZChzLT5k bWFfb3BhcXVlLCBidWYsIGRtYWxlbik7CisgICAgICAgIGRtYV9tZW1vcnlfcmVhZChzLT5wYXJl bnRfZG1hLCAwLCBidWYsIGRtYWxlbik7CiAgICAgfSBlbHNlIHsKIAlidWZbMF0gPSAwOwogCW1l bWNweSgmYnVmWzFdLCBzLT50aV9idWYsIGRtYWxlbik7CkBAIC0xODksNyArMTg5LDcgQEAKICAg ICBzLT50aV9idWZbMF0gPSBzLT5zZW5zZTsKICAgICBzLT50aV9idWZbMV0gPSAwOwogICAgIGlm IChzLT5kbWEpIHsKLSAgICAgICAgZXNwZG1hX21lbW9yeV93cml0ZShzLT5kbWFfb3BhcXVlLCBz LT50aV9idWYsIDIpOworICAgICAgICBkbWFfbWVtb3J5X3dyaXRlKHMtPnBhcmVudF9kbWEsIDAs IHMtPnRpX2J1ZiwgMik7CiAJcy0+cnJlZ3NbNF0gPSBTVEFUX0lOIHwgU1RBVF9UQyB8IFNUQVRf U1Q7CiAJcy0+cnJlZ3NbNV0gPSBJTlRSX0JTIHwgSU5UUl9GQzsKIAlzLT5ycmVnc1s2XSA9IFNF UV9DRDsKQEAgLTIyMiw3ICsyMjIsNyBAQAogICAgIGxlbiA9IHMtPmRtYV9sZWZ0OwogICAgIGlm IChzLT5kb19jbWQpIHsKICAgICAgICAgRFBSSU5URigiY29tbWFuZCBsZW4gJWQgKyAlZFxuIiwg cy0+Y21kbGVuLCBsZW4pOwotICAgICAgICBlc3BkbWFfbWVtb3J5X3JlYWQocy0+ZG1hX29wYXF1 ZSwgJnMtPmNtZGJ1ZltzLT5jbWRsZW5dLCBsZW4pOworICAgICAgICBkbWFfbWVtb3J5X3JlYWQo cy0+cGFyZW50X2RtYSwgMCwgJnMtPmNtZGJ1ZltzLT5jbWRsZW5dLCBsZW4pOwogICAgICAgICBz LT50aV9zaXplID0gMDsKICAgICAgICAgcy0+Y21kbGVuID0gMDsKICAgICAgICAgcy0+ZG9fY21k ID0gMDsKQEAgLTIzNyw5ICsyMzcsOSBAQAogICAgICAgICBsZW4gPSBzLT5hc3luY19sZW47CiAg ICAgfQogICAgIGlmICh0b19kZXZpY2UpIHsKLSAgICAgICAgZXNwZG1hX21lbW9yeV9yZWFkKHMt PmRtYV9vcGFxdWUsIHMtPmFzeW5jX2J1ZiwgbGVuKTsKKyAgICAgICAgZG1hX21lbW9yeV9yZWFk KHMtPnBhcmVudF9kbWEsIDAsIHMtPmFzeW5jX2J1ZiwgbGVuKTsKICAgICB9IGVsc2UgewotICAg ICAgICBlc3BkbWFfbWVtb3J5X3dyaXRlKHMtPmRtYV9vcGFxdWUsIHMtPmFzeW5jX2J1ZiwgbGVu KTsKKyAgICAgICAgZG1hX21lbW9yeV93cml0ZShzLT5wYXJlbnRfZG1hLCAwLCBzLT5hc3luY19i dWYsIGxlbik7CiAgICAgfQogICAgIHMtPmRtYV9sZWZ0IC09IGxlbjsKICAgICBzLT5hc3luY19i dWYgKz0gbGVuOwpAQCAtNTc1LDcgKzU3NSw3IEBACiB9CiAKIHZvaWQgKmVzcF9pbml0KEJsb2Nr RHJpdmVyU3RhdGUgKipiZCwgdGFyZ2V0X3BoeXNfYWRkcl90IGVzcGFkZHIsCi0gICAgICAgICAg ICAgICB2b2lkICpkbWFfb3BhcXVlLCBxZW11X2lycSBpcnEsIHFlbXVfaXJxICpyZXNldCkKKyAg ICAgICAgICAgICAgIHFlbXVfaXJxIGlycSwgcWVtdV9kbWEgKnBhcmVudF9kbWEsIHFlbXVfaXJx ICpyZXNldCkKIHsKICAgICBFU1BTdGF0ZSAqczsKICAgICBpbnQgZXNwX2lvX21lbW9yeTsKQEAg LTU4Niw3ICs1ODYsNyBAQAogCiAgICAgcy0+YmQgPSBiZDsKICAgICBzLT5pcnEgPSBpcnE7Ci0g ICAgcy0+ZG1hX29wYXF1ZSA9IGRtYV9vcGFxdWU7CisgICAgcy0+cGFyZW50X2RtYSA9IHBhcmVu dF9kbWE7CiAKICAgICBlc3BfaW9fbWVtb3J5ID0gY3B1X3JlZ2lzdGVyX2lvX21lbW9yeSgwLCBl c3BfbWVtX3JlYWQsIGVzcF9tZW1fd3JpdGUsIHMpOwogICAgIGNwdV9yZWdpc3Rlcl9waHlzaWNh bF9tZW1vcnkoZXNwYWRkciwgRVNQX1NJWkUsIGVzcF9pb19tZW1vcnkpOwpJbmRleDogcWVtdS9o dy9wY25ldC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9ody9wY25ldC5jCTIwMDctMDgtMjIg MjA6MDM6MDkuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3BjbmV0LmMJMjAwNy0wOC0yMiAy MDowMzo0Ny4wMDAwMDAwMDAgKzAwMDAKQEAgLTczLDYgKzczLDcgQEAKICAgICB2b2lkICgqcGh5 c19tZW1fd3JpdGUpKHZvaWQgKmRtYV9vcGFxdWUsIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAog ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBkb19i c3dhcCk7CiAgICAgdm9pZCAqZG1hX29wYXF1ZTsKKyAgICBxZW11X2RtYSAqcGFyZW50X2RtYTsK IH07CiAKIHN0cnVjdCBxZW11X2V0aGVyX2hlYWRlciB7CkBAIC0yMDE1LDYgKzIwMTYsNDYgQEAK ICAgICAgICAgcGNuZXRfaF9yZXNldChvcGFxdWUpOwogfQogCisvKiBOb3RlOiBvbiBzcGFyYywg dGhlIGxhbmNlIDE2IGJpdCBidXMgaXMgc3dhcHBlZCAqLworc3RhdGljIHZvaWQgbGVkbWFfbWVt b3J5X3JlYWQodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbiwgaW50IGRvX2Jzd2Fw KQoreworICAgIGludCBpOworCisgICAgaWYgKGRvX2Jzd2FwKSB7CisgICAgICAgIGRtYV9tZW1v cnlfcmVhZChvcGFxdWUsIGFkZHIsIGJ1ZiwgbGVuKTsKKyAgICB9IGVsc2UgeworICAgICAgICBk bWFfbWVtb3J5X3JlYWQob3BhcXVlLCBhZGRyLCBidWYsIGxlbik7CisgICAgICAgIGZvcihpID0g MDsgaSA8IGxlbjsgaSArPSAyKSB7CisgICAgICAgICAgICBic3dhcDE2cygodWludDE2X3QgKiko YnVmICsgaSkpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBsZWRtYV9tZW1v cnlfd3JpdGUodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBkb19ic3dh cCkKK3sKKyAgICBpbnQgbCwgaTsKKyAgICB1aW50MTZfdCB0bXBfYnVmWzMyXTsKKworICAgIGlm IChkb19ic3dhcCkgeworICAgICAgICBkbWFfbWVtb3J5X3dyaXRlKG9wYXF1ZSwgYWRkciwgYnVm LCBsZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIHdoaWxlIChsZW4gPiAwKSB7CisgICAgICAg ICAgICBsID0gbGVuOworICAgICAgICAgICAgaWYgKGwgPiBzaXplb2YodG1wX2J1ZikpCisgICAg ICAgICAgICAgICAgbCA9IHNpemVvZih0bXBfYnVmKTsKKyAgICAgICAgICAgIGZvcihpID0gMDsg aSA8IGw7IGkgKz0gMikgeworICAgICAgICAgICAgICAgIHRtcF9idWZbaSA+PiAxXSA9IGJzd2Fw MTYoKih1aW50MTZfdCAqKShidWYgKyBpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBk bWFfbWVtb3J5X3dyaXRlKG9wYXF1ZSwgYWRkciwgKHVpbnQ4X3QgKil0bXBfYnVmLCBsKTsKKyAg ICAgICAgICAgIGxlbiAtPSBsOworICAgICAgICAgICAgYnVmICs9IGw7CisgICAgICAgICAgICBh ZGRyICs9IGw7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHN0YXRpYyB2b2lkIGxhbmNlX21lbV93 cml0ZXcodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgdmFsKQogewpAQCAtMjA1MCw4ICsyMDkxLDggQEAK ICAgICBsYW5jZV9tZW1fd3JpdGV3LAogfTsKIAotdm9pZCBsYW5jZV9pbml0KE5JQ0luZm8gKm5k LCB0YXJnZXRfcGh5c19hZGRyX3QgbGVhZGRyLCB2b2lkICpkbWFfb3BhcXVlLAotICAgICAgICAg ICAgICAgIHFlbXVfaXJxIGlycSwgcWVtdV9pcnEgKnJlc2V0KQordm9pZCBsYW5jZV9pbml0KE5J Q0luZm8gKm5kLCB0YXJnZXRfcGh5c19hZGRyX3QgbGVhZGRyLCBxZW11X2lycSBpcnEsCisgICAg ICAgICAgICAgICAgcWVtdV9kbWEgKnBhcmVudF9kbWEsIHFlbXVfaXJxICpyZXNldCkKIHsKICAg ICBQQ05ldFN0YXRlICpkOwogICAgIGludCBsYW5jZV9pb19tZW1vcnk7CkBAIC0yMDYzLDcgKzIx MDQsNyBAQAogICAgIGxhbmNlX2lvX21lbW9yeSA9CiAgICAgICAgIGNwdV9yZWdpc3Rlcl9pb19t ZW1vcnkoMCwgbGFuY2VfbWVtX3JlYWQsIGxhbmNlX21lbV93cml0ZSwgZCk7CiAKLSAgICBkLT5k bWFfb3BhcXVlID0gZG1hX29wYXF1ZTsKKyAgICBkLT5kbWFfb3BhcXVlID0gcGFyZW50X2RtYTsK IAogICAgICpyZXNldCA9ICpxZW11X2FsbG9jYXRlX2lycXMocGFyZW50X2xhbmNlX3Jlc2V0LCBk LCAxKTsKIAo= ------=_Part_99721_13484370.1187984458502--