X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com X-Cam-AntiVirus: no malware found X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Message-ID: <1431507326.2980.52.camel@cam.ac.uk> Subject: Re: [geda-user] Using gerbv for assisting manual placement tasks (INITIAL CODE ATTACHED FOR BETA-TEST) From: Peter Clifton To: geda-user AT delorie DOT com Date: Wed, 13 May 2015 09:55:26 +0100 In-Reply-To: <201505130159.t4D1xkkd031338@envy.delorie.com> References: <1431386490 DOT 2980 DOT 28 DOT camel AT cam DOT ac DOT uk> <201505130159 DOT t4D1xkkd031338 AT envy DOT delorie DOT com> Content-Type: multipart/mixed; boundary="=-pAyQzMNWHxpEFp68X8r8" X-Mailer: Evolution 3.12.11-0ubuntu3 Mime-Version: 1.0 Reply-To: geda-user AT delorie DOT com Errors-To: nobody AT delorie DOT com X-Mailing-List: geda-user AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk --=-pAyQzMNWHxpEFp68X8r8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit On Tue, 2015-05-12 at 21:59 -0400, DJ Delorie wrote: > > You imply above that if it had been a gEDA board, you'd have had a > > better way to do it already. I'm curious what that way is, besides > > poking at PCB to make the refdes visible, > > I use a script that greps the BOM and highlights all matches in PCB... Exactly.. some machine-searchable data you can look at on screen is key. As this was non-gEDA data (not my board design), I couldn't just search / highlight the data in PCB. I'll probably augment my gerbv code to allow highlighting multiple component placements with the same value in one go, rather than just using the cross-hair. The entire feature was prototyped in a couple of hours whilst sitting at the prototype assembly house. It only took me a few placements to realising the futility of eye balling the silkscreen / looking up XY coordinates in the PnP data file by hand. Coding ensued after that. I "think" I've got commit access to gerbv.. if no maintainer pops forward wanting to review this stuff as patches, I'll shove stuff in. I'll need to clean it up a bit first, as it was rather "rapid prototyped" in a hurry. I've promised my friend who runs the assembly service I'd get him a Win32 copy for next week, so I should hopefully have someone prodding me to get this done ASAP! If anyone wanted to beta-test, my initial code is attached as a patch against git HEAD gerbv. This is a bit kludgy in places, so needs tidying up before it is pushed. Load a PCB format ".xy" file, and another layer for land-marking (I used top-silk), select the "Parts" tab. I've also attached my "TODO" list.. Peter -- Peter Clifton Clifton Electronics --=-pAyQzMNWHxpEFp68X8r8 Content-Disposition: attachment; filename="placement_notes.txt" Content-Transfer-Encoding: base64 Content-Type: text/plain; name="placement_notes.txt"; charset="UTF-8" RmVhdHVyZSBUT0RPcyBmb3IgZ2VyYnYgcGxhY2VtZW50IGhlbHBlci4KCkFkZCBwbGFjZWQgLyBu b24tcGxhY2VkIHN0YXR1cyB0byBkYXRhLXN0cnVjdHVyZQpBZGQgYWJpbGl0eSB0byByZWFkIGlu IHBsYWNlZCAvIG5vbi1wbGFjZWQgc3RhdHVzCkFkZCBhYmlsaXR5IHRvIHNhdmUgb3V0IHBsYWNl bWVudCBkYXRhIHRvIG5ldyBYWSBmaWxlClNvcnQgYnkgZGlmZmVyZW50IGNvbHVtbnM/CiAgLSBT b3J0IGJ5IHJlZmRlcwogIC0gU29ydCBieSB2YWx1ZQogIC0gU29ydCBieSBsb2NhdGlvbj8KCkV4 cGFuZCBhbGwgLyBDb2xsYXBzZSBhbGwgLyBFeHBhbmQgdW5wbGFjZWQgYnV0dG9ucz8KQWJpbGl0 eSB0byBleHBhbmQgLyBjb250YWN0IHRyZWUgbm9kZXMgd2l0aCBjdXJzb3IgYXJyb3cga2V5cwpB dXRvbWF0aWNhbGx5IG1hcmsgcGFyZW50IG5vZGVzIGFzIHN0cnVjay10aHJvdWdoIGlmIGFsbCBj aGlsZHJlbiBhcmUgcGxhY2VkPwpBZGQgY29tbWVudHMgZmllbGQgZm9yIG1ha2luZyBub3RlcyBh cyB0byBhbnkgcHJvYmxlbXMgZW5jb3VudGVyZWQKClNlYXJjaCBmZWF0dXJlIChieSByZWZkZXMg cHJvYmFibHk/KQoKCkNvdW50cywgcGVyIGdyb3VwICh1bnBsYWNlZCAvIHRvdGFsKQoKQ29kZSB0 byB1bnNldCBjcm9zc2hhaXIgd2hlbiBub3QgaW4gInBhcnQtcGxhY2VtZW50IG1vZGUiIC8gbm8g c2VsZWN0aW9uIGlzIG1hZGUgaW4gdGhlIGxpc3QgZXRjLi4KVmlzdWFsaXNhdGlvbiBvZiBzZWxl Y3RlZCBjb21wb25lbnQgYnkgcmluZyAvIGNvbG91ciBzYXR1cmF0aW9uIGhpZ2hsaWdodD8KVmlz dWFsaXNhdGlvbiBvZiBtdWx0aXBsZSBzZWxlY3RlZCBjb21wb25lbnRzIHNpbXVsdGFuZW91c2x5 PwoKQ29uc2lkZXIgaG93IGJhY2stc2lkZSBwbGFjZW1lbnQgd29ya3MsIGFuZCB3aGV0aGVyIGFu eSBjb2RlLWNoYW5nZXMgYXJlIHJlcXVpcmVkLgoKCkRPVCBmaWxlIHRvb2w6CgpBZGQgYWJpbGl0 eSB0byByZWFkIGluIC5ESUQgZmlsZSBmb3IgZG90IGRhdGEKQWRkIGFiaWxpdHkgdG8gc2F2ZSBh IC5ESUQgZmlsZSAoZnJvbSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbikKQ2hhbmdlIERJRCBleHBv cnQgb2YgZ2VyYmVyIGRhdGEgdG8gYSAiY3JlYXRlIG5ldyBESUQgbGF5ZXIgZnJvbSBQQVNURSBs YXllciIKQ29uc2lkZXIgaG93IHdlIGNhbiBsb2FkIGEgbWFwcGluZyBmaWxlIHRvIGRlZmluZSBk b3QgdHlwZSBuYW1lcyBmcm9tIHBhZCBzaXplCgoK --=-pAyQzMNWHxpEFp68X8r8 Content-Disposition: attachment; filename="0001-Add-manual-PnP-helper-functionality.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="0001-Add-manual-PnP-helper-functionality.patch"; charset="UTF-8" RnJvbSAwYmRhMjg0MjkzZGZkMDdhNTQ5MzJlMTY3OGFmNTNkZGFhODgwMWUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBDbGlmdG9uIDxwZXRlckBjbGlmdG9uLWVsZWN0cm9u aWNzLmNvLnVrPgpEYXRlOiBXZWQsIDEzIE1heSAyMDE1IDA5OjUxOjI4ICswMTAwClN1YmplY3Q6 IFtQQVRDSF0gQWRkIG1hbnVhbCBQblAgaGVscGVyIGZ1bmN0aW9uYWxpdHkKCi0tLQogc3JjL01h a2VmaWxlLmFtICAgICAgfCAgIDEgKwogc3JjL2NhbGxiYWNrcy5jICAgICAgfCAgMTAgKysrKwog c3JjL2NhbGxiYWNrcy5oICAgICAgfCAgIDEgKwogc3JjL2dlcmJ2LmggICAgICAgICAgfCAgIDgg KysrCiBzcmMvaW50ZXJmYWNlLmMgICAgICB8IDE1OCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbnRlcmZhY2UuaCAgICAgIHwgIDE2ICsr KysrKwogc3JjL21haW4uaCAgICAgICAgICAgfCAgIDMgKwogc3JjL3BpY2stYW5kLXBsYWNlLmMg fCAxMjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMvcGljay1h bmQtcGxhY2UuaCB8ICAgMSArCiBzcmMvcmVuZGVyLmMgICAgICAgICB8ICA0NiArKysrKysrKysr KysrKysKIHNyYy9yZW5kZXIuaCAgICAgICAgIHwgICAzICsKIDExIGZpbGVzIGNoYW5nZWQsIDM2 OCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxl LmFtIGIvc3JjL01ha2VmaWxlLmFtCmluZGV4IGEzNDYxMmYuLjNiNDQ1MzUgMTAwNjQ0Ci0tLSBh L3NyYy9NYWtlZmlsZS5hbQorKysgYi9zcmMvTWFrZWZpbGUuYW0KQEAgLTQyLDYgKzQyLDcgQEAg bGliZ2VyYnZfbGFfU09VUkNFUz0gXAogCQlkcmlsbC5jIGRyaWxsLmggXAogCQlkcmlsbF9zdGF0 cy5jIGRyaWxsX3N0YXRzLmggXAogCQlleHBvcnQtZHJpbGwuYyBcCisJCWV4cG9ydC1kb3RzLmMg XAogCQlleHBvcnQtcnMyNzR4LmMgXAogCQlleHBvcnRpbWFnZS5jIFwKIAkJZ2VyYl9maWxlLmMg Z2VyYl9maWxlLmggXApkaWZmIC0tZ2l0IGEvc3JjL2NhbGxiYWNrcy5jIGIvc3JjL2NhbGxiYWNr cy5jCmluZGV4IGRmYjI5ZGMuLmZmNjQzNWQgMTAwNjQ0Ci0tLSBhL3NyYy9jYWxsYmFja3MuYwor KysgYi9zcmMvY2FsbGJhY2tzLmMKQEAgLTQ2Miw2ICs0NjIsOCBAQCBjYWxsYmFja3NfZ2VuZXJp Y19zYXZlX2FjdGl2YXRlIChHdGtNZW51SXRlbSAgICAgKm1lbnVpdGVtLAogCQl3aW5kb3dUaXRs ZSA9IGdfc3RyZHVwIChfKCJFeHBvcnQgUlMtMjc0WCBmaWxlIGFzLi4uIikpOwogCWVsc2UgaWYg KHByb2Nlc3NUeXBlID09IENBTExCQUNLU19TQVZFX0ZJTEVfRFJJTEwpCiAJCXdpbmRvd1RpdGxl ID0gZ19zdHJkdXAgKF8oIkV4cG9ydCBFeGNlbGxvbiBkcmlsbCBmaWxlIGFzLi4uIikpOworCWVs c2UgaWYgKHByb2Nlc3NUeXBlID09IENBTExCQUNLU19TQVZFX0ZJTEVfRE9UUykKKwkJd2luZG93 VGl0bGUgPSBnX3N0cmR1cCAoXygiRXhwb3J0IERvdHMgZmlsZSBhcy4uLiIpKTsKIAllbHNlIGlm IChwcm9jZXNzVHlwZSA9PSBDQUxMQkFDS1NfU0FWRV9GSUxFX1JTMjc0WE0pCiAJCXdpbmRvd1Rp dGxlID0gZ19zdHJkdXAgKF8oIkV4cG9ydCBSUy0yNzRYbSBmaWxlIGFzLi4uIikpOwogCWVsc2Ug aWYgKHByb2Nlc3NUeXBlID09IENBTExCQUNLU19TQVZFX0ZJTEVfRFJJTExNKQpAQCAtNTY0LDYg KzU2NiwxMiBAQCBjYWxsYmFja3NfZ2VuZXJpY19zYXZlX2FjdGl2YXRlIChHdGtNZW51SXRlbSAg ICAgKm1lbnVpdGVtLAogCQkJCiAJCQlnZXJidl9leHBvcnRfZHJpbGxfZmlsZV9mcm9tX2ltYWdl IChmaWxlbmFtZSwgbWFpblByb2plY3QtPmZpbGVbaW5kZXhdLT5pbWFnZSwKIAkJCQkmbWFpblBy b2plY3QtPmZpbGVbaW5kZXhdLT50cmFuc2Zvcm0pOworCQl9CisJCWVsc2UgaWYgKHByb2Nlc3NU eXBlID09IENBTExCQUNLU19TQVZFX0ZJTEVfRE9UUykgeworCQkJZ2ludCBpbmRleD1jYWxsYmFj a3NfZ2V0X3NlbGVjdGVkX3Jvd19pbmRleCAoKTsKKworCQkJZ2VyYnZfZXhwb3J0X2RvdHNfZmls ZV9mcm9tX2ltYWdlIChmaWxlbmFtZSwgbWFpblByb2plY3QtPmZpbGVbaW5kZXhdLT5pbWFnZSwK KwkJCQkmbWFpblByb2plY3QtPmZpbGVbaW5kZXhdLT50cmFuc2Zvcm0pOwogCQl9CS8qIGNyZWF0 ZSBuZXcgaW1hZ2UuLi4uICAqLwogCQllbHNlIGlmIChwcm9jZXNzVHlwZSA9PSBDQUxMQkFDS1Nf U0FWRV9GSUxFX1JTMjc0WE0pIHsKIAkJCWdlcmJ2X2ltYWdlX3QgKmltYWdlOwpAQCAtMjk1MSw2 ICsyOTU5LDggQEAgY2FsbGJhY2tzX2RyYXdpbmdhcmVhX2V4cG9zZV9ldmVudCAoR3RrV2lkZ2V0 ICp3aWRnZXQsIEdka0V2ZW50RXhwb3NlICpldmVudCkKIAkJaWYgKHNjcmVlbi50b29sID09IE1F QVNVUkUgJiYgc2NyZWVuLnN0YXRlICE9IElOX01FQVNVUkUpIHsKIAkJCXJlbmRlcl90b2dnbGVf bWVhc3VyZV9saW5lKCk7CiAJCX0KKworICAgICAgICAgICAgICAgIHJlbmRlcl90b2dnbGVfY3Jv c3NoYWlyKCk7CiAgCiAJCXJldHVybiBGQUxTRTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvY2FsbGJh Y2tzLmggYi9zcmMvY2FsbGJhY2tzLmgKaW5kZXggMjM3NWFkMi4uNWQ1OTdlMiAxMDA2NDQKLS0t IGEvc3JjL2NhbGxiYWNrcy5oCisrKyBiL3NyYy9jYWxsYmFja3MuaApAQCAtMzQsNiArMzQsNyBA QCBlbnVtIHsKIAlDQUxMQkFDS1NfU0FWRV9GSUxFX1BORywKIAlDQUxMQkFDS1NfU0FWRV9GSUxF X1JTMjc0WCwKIAlDQUxMQkFDS1NfU0FWRV9GSUxFX0RSSUxMLAorCUNBTExCQUNLU19TQVZFX0ZJ TEVfRE9UUywKIAlDQUxMQkFDS1NfU0FWRV9GSUxFX1JTMjc0WE0sCiAJQ0FMTEJBQ0tTX1NBVkVf RklMRV9EUklMTE0sCiAJQ0FMTEJBQ0tTX1NBVkVfTEFZRVJfQVMsCmRpZmYgLS1naXQgYS9zcmMv Z2VyYnYuaCBiL3NyYy9nZXJidi5oCmluZGV4IDAwMmYyNDkuLjQ5ZTQyZmMgMTAwNjQ0Ci0tLSBh L3NyYy9nZXJidi5oCisrKyBiL3NyYy9nZXJidi5oCkBAIC04OTEsNiArODkxLDE0IEBAIGdlcmJ2 X2V4cG9ydF9kcmlsbF9maWxlX2Zyb21faW1hZ2UgKGNvbnN0IGdjaGFyICpmaWxlbmFtZSwgLyoh PCB0aGUgZmlsZW5hbWUgZm9yCiAJCWdlcmJ2X3VzZXJfdHJhbnNmb3JtYXRpb25fdCAqdHJhbnNm b3JtIC8qITwgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGFwcGx5IGJlZm9yZSBleHBvcnRpbmcgKi8K ICk7CiAKKy8vISBFeHBvcnQgYW4gaW1hZ2UgdG8gYSBuZXcgZmlsZSBpbiBkb3RzIGZvcm1hdAor Ly8hIFxyZXR1cm4gVFJVRSBpZiBzdWNjZXNzZnVsLCBvciBGQUxTRSBpZiBub3QKK2dib29sZWFu CitnZXJidl9leHBvcnRfZG90c19maWxlX2Zyb21faW1hZ2UgKGNvbnN0IGdjaGFyICpmaWxlbmFt ZSwgLyohPCB0aGUgZmlsZW5hbWUgZm9yIHRoZSBuZXcgZmlsZSAqLworCQlnZXJidl9pbWFnZV90 ICppbWFnZSwgLyohPCB0aGUgaW1hZ2UgdG8gZXhwb3J0ICovCisJCWdlcmJ2X3VzZXJfdHJhbnNm b3JtYXRpb25fdCAqdHJhbnNmb3JtIC8qITwgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGFwcGx5IGJl Zm9yZSBleHBvcnRpbmcgKi8KKyk7CisKIC8vISBEcmF3IGEgbGluZSBvbiB0aGUgc3BlY2lmaWVk IGltYWdlCiB2b2lkCiBnZXJidl9pbWFnZV9jcmVhdGVfbGluZV9vYmplY3QgKGdlcmJ2X2ltYWdl X3QgKmltYWdlLCAvKiE8IHRoZSBpbWFnZSB0byBkcmF3IHRvICovCmRpZmYgLS1naXQgYS9zcmMv aW50ZXJmYWNlLmMgYi9zcmMvaW50ZXJmYWNlLmMKaW5kZXggYWZkYzdiNC4uNzQwZjZiOCAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZS5jCisrKyBiL3NyYy9pbnRlcmZhY2UuYwpAQCAtMTI2LDYg KzEyNiw5NSBAQCByZXF1ZXN0X2xhYmVsX21heF9zaXplX2J5X3RleHQgKEd0a1dpZGdldCAqbGFi ZWwsIGNvbnN0IGdjaGFyICpzdHIpCiAJZ3RrX2xhYmVsX3NldF90ZXh0IChHVEtfTEFCRUwgKGxh YmVsKSwgIiIpOwogfQogCit2b2lkCitjYWxsYmFja3NfcGFydHNfc2VsZWN0aW9uX2NoYW5nZWQg KEd0a1RyZWVTZWxlY3Rpb24gKnNlbGVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3BvaW50ZXIgdXNlcmRhdGEpCit7CisgIEd0a1RyZWVJdGVyIGl0ZXI7CisgIEd0 a1RyZWVNb2RlbCAqbW9kZWw7CisgIGNoYXIgKnJlZmRlczsKKyAgZ2RvdWJsZSB4LCB5OworCisg IGlmICghZ3RrX3RyZWVfc2VsZWN0aW9uX2dldF9zZWxlY3RlZCAoc2VsZWN0aW9uLCAmbW9kZWws ICZpdGVyKSkKKyAgICByZXR1cm47IC8qIE5vdGhpbmcgc2VsZWN0ZWQgKi8KKworICBndGtfdHJl ZV9tb2RlbF9nZXQgKG1vZGVsLCAmaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICBQQVJUX1JF RkRFU19DT0xVTU4sICZyZWZkZXMsCisgICAgICAgICAgICAgICAgICAgICAgUEFSVF9YX0NPTFVN TiwgJngsCisgICAgICAgICAgICAgICAgICAgICAgUEFSVF9ZX0NPTFVNTiwgJnksCisgICAgICAg ICAgICAgICAgICAgICAgLTEpOworCisgIGlmIChyZWZkZXMgPT0gTlVMTCkKKyAgICByZXR1cm47 CisKKyAgc2NyZWVuLmNyb3NzaGFpcl94ID0geDsKKyAgc2NyZWVuLmNyb3NzaGFpcl95ID0geTsK KworICBjYWxsYmFja3NfZm9yY2VfZXhwb3NlX2V2ZW50X2Zvcl9zY3JlZW4oKTsKKworICBnX2Zy ZWUgKHJlZmRlcyk7Cit9CisKK3ZvaWQKK2NhbGxiYWNrc19wYXJ0c19yb3dfYWN0aXZhdGVkIChH dGtUcmVlVmlldyAgICAgICAqdHJlZV92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEd0a1RyZWVQYXRoICAgICAgICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEd0a1RyZWVWaWV3Q29sdW1uICpjb2x1bW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3BvaW50ZXIgdXNlcmRhdGEpCit7CisgIEd0a1RyZWVNb2RlbCAqbW9kZWw7CisgIEd0 a1RyZWVTdG9yZSAqc3RvcmU7CisgIEd0a1RyZWVJdGVyIGl0ZXI7CisgIGNoYXIgKnJlZmRlczsK KyAgZ2Jvb2xlYW4gcGxhY2VkOworCisgIG1vZGVsID0gZ3RrX3RyZWVfdmlld19nZXRfbW9kZWwg KHRyZWVfdmlldyk7CisgIGd0a190cmVlX21vZGVsX2dldF9pdGVyIChtb2RlbCwgJml0ZXIsIHBh dGgpOworICBndGtfdHJlZV9tb2RlbF9nZXQgKG1vZGVsLCAmaXRlciwKKyAgICAgICAgICAgICAg ICAgICAgICBQQVJUX1JFRkRFU19DT0xVTU4sICZyZWZkZXMsCisgICAgICAgICAgICAgICAgICAg ICAgUEFSVF9QTEFDRURfQ09MVU1OLCAmcGxhY2VkLAorICAgICAgICAgICAgICAgICAgICAgIC0x KTsKKworICBwbGFjZWQgPSAhcGxhY2VkOworCisgIHN0b3JlID0gR1RLX1RSRUVfU1RPUkUobW9k ZWwpOyAvKiBYWFg6ID8/PyAqLworICBndGtfdHJlZV9zdG9yZV9zZXQgKHN0b3JlLCAmaXRlciwK KyAgICAgICAgICAgICAgICAgICAgICBQQVJUX1BMQUNFRF9DT0xVTU4sIHBsYWNlZCwKKyAgICAg ICAgICAgICAgICAgICAgICAtMSk7CisKKyAgaWYgKHJlZmRlcyA9PSBOVUxMKQorICAgIHJldHVy bjsKKworICBwcmludGYgKCJBY3RpdmF0ZWQgcGFydCAlc1xuIiwgcmVmZGVzKTsKKworICBnX2Zy ZWUgKHJlZmRlcyk7Cit9CisKK2dib29sZWFuCitjYWxsYmFja19wYXJ0c19zZWFyY2ggKEd0a1Ry ZWVNb2RlbCAqbW9kZWwsCisgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgY29sdW1uLAorICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAg ICAgICBHdGtUcmVlSXRlciAqaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIg c2VhcmNoX2RhdGEpCit7CisgIGNoYXIgKnRleHQ7CisKKyAgZ3RrX3RyZWVfbW9kZWxfZ2V0ICht b2RlbCwgaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4sICZ0ZXh0LAorICAgICAg ICAgICAgICAgICAgICAgIC0xKTsKKworICAvLyBURVNUSU5HIQorICBpZiAoa2V5WzBdID09ICdh JykgeworICAgIGdfZnJlZSAodGV4dCk7CisgICAgcmV0dXJuIFRSVUU7CisgIH0gZWxzZSB7Cisg ICAgZ19mcmVlICh0ZXh0KTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KK30KKworLyogWFhYOiBO QVNUWSBHTE9CQUwgKi8KK0d0a1RyZWVTdG9yZSAqcGFydHNfdHJlZXN0b3JlOworCiAvKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiB2b2lkCiBpbnRl cmZhY2VfY3JlYXRlX2d1aSAoaW50IHJlcV93aWR0aCwgaW50IHJlcV9oZWlnaHQpCkBAIC0xNTQs NiArMjQzLDcgQEAgaW50ZXJmYWNlX2NyZWF0ZV9ndWkgKGludCByZXFfd2lkdGgsIGludCByZXFf aGVpZ2h0KQogCUd0a1dpZGdldCAqc3ZnOwogCUd0a1dpZGdldCAqcG9zdHNjcmlwdDsKIAlHdGtX aWRnZXQgKnJzMjc0eCwqZHJpbGwsKnJzMjc0eG0sKmRyaWxsbTsKKwlHdGtXaWRnZXQgKmRvdHM7 CiAJCiAJR3RrV2lkZ2V0ICpzZXBhcmF0b3IxOwogI2lmIEdUS19DSEVDS19WRVJTSU9OKDIsMTAs MCkKQEAgLTI4NCw2ICszNzQsMTMgQEAgaW50ZXJmYWNlX2NyZWF0ZV9ndWkgKGludCByZXFfd2lk dGgsIGludCByZXFfaGVpZ2h0KQogCUd0a1dpZGdldCAqY2xlYXJfbWVzc2FnZXNfYnV0dG9uOwog CUd0a1dpZGdldCAqTWVzc2FnZV9sYWJlbDsKIAlHdGtXaWRnZXQgKnZib3gyOworCUd0a1dpZGdl dCAqcGFydHNfdHJlZXZpZXc7CisJR3RrV2lkZ2V0ICpwYXJ0c19zY3JvbGxlZHdpbmRvdzsKKwlH dGtUcmVlVmlld0NvbHVtbiAqcGFydHNfdGV4dDsKKwlHdGtDZWxsUmVuZGVyZXIgKnBhcnRzX3Rl eHRfY2VsbHJlbmRlcmVyOworCUd0a1RyZWVJdGVyIHBhcnRzX2l0ZXI7CisJR3RrVHJlZVNlbGVj dGlvbiAqcGFydHNfc2VsZWN0aW9uOworCUd0a1dpZGdldCAqcGFydHNfbGFiZWw7CiAJR3RrV2lk Z2V0ICptYWluX3ZpZXdfdGFibGU7CiAJR3RrV2lkZ2V0ICpoUnVsZXI7CiAJR3RrV2lkZ2V0ICp2 UnVsZXI7CkBAIC00MjcsNiArNTI0LDEwIEBAIGludGVyZmFjZV9jcmVhdGVfZ3VpIChpbnQgcmVx X3dpZHRoLCBpbnQgcmVxX2hlaWdodCkKIAlndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5F UiAobWVudWl0ZW1fZmlsZV9leHBvcnRfbWVudSksIGRyaWxsKTsKIAlndGtfdG9vbHRpcHNfc2V0 X3RpcCAodG9vbHRpcHMsIGRyaWxsLCBfKCJFeHBvcnQgbGF5ZXIgdG8gYW4gRXhjZWxsb24gZHJp bGwgZmlsZSIpLCBOVUxMKTsKIAkKKwlkb3RzID0gZ3RrX21lbnVfaXRlbV9uZXdfd2l0aF9tbmVt b25pYyAoXygiX1Bhc3RlIGRvdHMuLi4iKSk7CisJZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05U QUlORVIgKG1lbnVpdGVtX2ZpbGVfZXhwb3J0X21lbnUpLCBkb3RzKTsKKwlndGtfdG9vbHRpcHNf c2V0X3RpcCAodG9vbHRpcHMsIGRvdHMsIF8oIkV4cG9ydCBsYXllciB0byBhIHBhc3RlIGRvdHMg ZmlsZSIpLCBOVUxMKTsKKwogCXJzMjc0eG0gPSBndGtfbWVudV9pdGVtX25ld193aXRoX21uZW1v bmljIChfKCJSUy0yNzRYIE1lcmdlIChHZXJiZXIpLi4uIikpOwogCWd0a19jb250YWluZXJfYWRk IChHVEtfQ09OVEFJTkVSIChtZW51aXRlbV9maWxlX2V4cG9ydF9tZW51KSwgcnMyNzR4bSk7CiAJ Z3RrX3Rvb2x0aXBzX3NldF90aXAgKHRvb2x0aXBzLCByczI3NHhtLCBfKCJFeHBvcnQgKG1lcmdl IHZpc2libGUgZ2VyYmVyIGxheWVycykgdG8gYSBSUy0yNzRYIChHZXJiZXIpIGZpbGUiKSwgTlVM TCk7CkBAIC0xMDk2LDggKzExOTcsNjIgQEAgaW50ZXJmYWNlX2NyZWF0ZV9ndWkgKGludCByZXFf d2lkdGgsIGludCByZXFfaGVpZ2h0KQogCQkJCSAgICBndGtfbm90ZWJvb2tfZ2V0X250aF9wYWdl IChHVEtfTk9URUJPT0sgKHNpZGVwYW5lX25vdGVib29rKSwgMSksIAogCQkJCSAgICBNZXNzYWdl X2xhYmVsKTsKIAorLy8vLworCisJcGFydHNfc2Nyb2xsZWR3aW5kb3cgPSBndGtfc2Nyb2xsZWRf d2luZG93X25ldyAoTlVMTCwgTlVMTCk7CisJZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5 IChHVEtfU0NST0xMRURfV0lORE9XIChwYXJ0c19zY3JvbGxlZHdpbmRvdyksCisJCQkJCUdUS19Q T0xJQ1lfQVVUT01BVElDLCBHVEtfUE9MSUNZX0FVVE9NQVRJQyk7CisKKwlndGtfY29udGFpbmVy X2FkZCAoR1RLX0NPTlRBSU5FUiAoc2lkZXBhbmVfbm90ZWJvb2spLCBwYXJ0c19zY3JvbGxlZHdp bmRvdyk7CisJZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoIChHVEtfQ09OVEFJTkVSIChw YXJ0c19zY3JvbGxlZHdpbmRvdyksIDMpOworCisJaWYgKHBhcnRzX3RyZWVzdG9yZSA9PSBOVUxM KSB7CisJICBwYXJ0c190cmVlc3RvcmUgPSBndGtfdHJlZV9zdG9yZV9uZXcgKFBBUlRfTlVNX0NP TFVNTlMsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9J TlQgLyogRGVwdGggaW4gdHJlZSAqLywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR19UWVBFX1NUUklORyAvKiBwYWNrYWdlICovLAorCSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HIC8qIHZhbHVlICovLAorCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HIC8qIHJlZmRl cyAqLywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1NU UklORyAvKiB0ZXh0ICovLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHX1RZUEVfQk9PTEVBTiAvKiBwbGFjZWQ/ICovLAorCSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHX1RZUEVfRE9VQkxFIC8qIFggKi8sCisJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9ET1VCTEUgLyogWSAqLyk7CisJfQorCisJ cGFydHNfdHJlZXZpZXcgPSBndGtfdHJlZV92aWV3X25ld193aXRoX21vZGVsIChHVEtfVFJFRV9N T0RFTCAocGFydHNfdHJlZXN0b3JlKSk7CisJZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlO RVIgKHBhcnRzX3Njcm9sbGVkd2luZG93KSwgcGFydHNfdHJlZXZpZXcpOworCWd0a193aWRnZXRf c2hvd19hbGwgKHBhcnRzX3RyZWV2aWV3KTsKKworCXBhcnRzX3RleHRfY2VsbHJlbmRlcmVyID0g Z3RrX2NlbGxfcmVuZGVyZXJfdGV4dF9uZXcgKCk7CisKKwlwYXJ0c190ZXh0ID0gZ3RrX3RyZWVf dmlld19jb2x1bW5fbmV3X3dpdGhfYXR0cmlidXRlcyAoIkNvbXBvbmVudCIsIHBhcnRzX3RleHRf Y2VsbHJlbmRlcmVyLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAidGV4dCIsIFBBUlRfVEVYVF9DT0xVTU4sCisJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpa2V0aHJvdWdoIiwg UEFSVF9QTEFDRURfQ09MVU1OLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworCWd0a190cmVlX3ZpZXdfYXBwZW5kX2NvbHVt biAoR1RLX1RSRUVfVklFVyAocGFydHNfdHJlZXZpZXcpLCBwYXJ0c190ZXh0KTsKKworCWd0a190 cmVlX3ZpZXdfc2V0X3NlYXJjaF9jb2x1bW4gKEdUS19UUkVFX1ZJRVcocGFydHNfdHJlZXZpZXcp LCBQQVJUX1RFWFRfQ09MVU1OKTsKKworCXBhcnRzX2xhYmVsID0gZ3RrX2xhYmVsX25ldyAoXygi UGFydHMiKSk7CisJZ3RrX25vdGVib29rX3NldF90YWJfbGFiZWwgKEdUS19OT1RFQk9PSyAoc2lk ZXBhbmVfbm90ZWJvb2spLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfbm90ZWJv b2tfZ2V0X250aF9wYWdlIChHVEtfTk9URUJPT0sgKHNpZGVwYW5lX25vdGVib29rKSwgMiksCisJ ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzX2xhYmVsKTsKKworCS8qIENvbm5lY3Qg c2lnbmFsIGZvciBzZWxlY3QgYW5kIGFjdGl2YXRlICovCisKKwlnX3NpZ25hbF9jb25uZWN0KHBh cnRzX3RyZWV2aWV3LCAicm93LWFjdGl2YXRlZCIsCisJICAgICAgICAgICAgICAgICBHX0NBTExC QUNLKGNhbGxiYWNrc19wYXJ0c19yb3dfYWN0aXZhdGVkKSwgTlVMTCk7CisKKwlwYXJ0c19zZWxl Y3Rpb24gPSBndGtfdHJlZV92aWV3X2dldF9zZWxlY3Rpb24oR1RLX1RSRUVfVklFVyhwYXJ0c190 cmVldmlldykpOworCWd0a190cmVlX3NlbGVjdGlvbl9zZXRfbW9kZSAocGFydHNfc2VsZWN0aW9u LCBHVEtfU0VMRUNUSU9OX1NJTkdMRSk7CisJZ19zaWduYWxfY29ubmVjdChwYXJ0c19zZWxlY3Rp b24sICJjaGFuZ2VkIiwKKwkgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0soY2FsbGJhY2tzX3Bh cnRzX3NlbGVjdGlvbl9jaGFuZ2VkKSwgTlVMTCk7CisKKy8vLy8KKwogCXZib3gyID0gZ3RrX3Zi b3hfbmV3IChGQUxTRSwgNCk7CiAJZ3RrX3BhbmVkX3BhY2syIChHVEtfUEFORUQgKGhwYW5lZDEp LCB2Ym94MiwgVFJVRSwgRkFMU0UpOworCiAJZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRo IChHVEtfQ09OVEFJTkVSICh2Ym94MiksIDQpOwogCQogCW1haW5fdmlld190YWJsZSA9IGd0a190 YWJsZV9uZXcgKDMsIDMsIEZBTFNFKTsKQEAgLTExOTksNiArMTM1NCw5IEBAIGludGVyZmFjZV9j cmVhdGVfZ3VpIChpbnQgcmVxX3dpZHRoLCBpbnQgcmVxX2hlaWdodCkKIAlnX3NpZ25hbF9jb25u ZWN0ICgoZ3BvaW50ZXIpIGRyaWxsLCAiYWN0aXZhdGUiLAogCSAgICAgICAgICAgICAgICAgIEdf Q0FMTEJBQ0sgKGNhbGxiYWNrc19nZW5lcmljX3NhdmVfYWN0aXZhdGUpLAogCSAgICAgICAgICAg ICAgICAgIChncG9pbnRlcikgQ0FMTEJBQ0tTX1NBVkVfRklMRV9EUklMTCk7CisJZ19zaWduYWxf Y29ubmVjdCAoKGdwb2ludGVyKSBkb3RzLCAiYWN0aXZhdGUiLAorCSAgICAgICAgICAgICAgICAg IEdfQ0FMTEJBQ0sgKGNhbGxiYWNrc19nZW5lcmljX3NhdmVfYWN0aXZhdGUpLAorCSAgICAgICAg ICAgICAgICAgIChncG9pbnRlcikgQ0FMTEJBQ0tTX1NBVkVfRklMRV9ET1RTKTsKIAlnX3NpZ25h bF9jb25uZWN0ICgoZ3BvaW50ZXIpIHJzMjc0eG0sICJhY3RpdmF0ZSIsCiAJICAgICAgICAgICAg ICAgICAgR19DQUxMQkFDSyAoY2FsbGJhY2tzX2dlbmVyaWNfc2F2ZV9hY3RpdmF0ZSksCiAJICAg ICAgICAgICAgICAgICAgKGdwb2ludGVyKSBDQUxMQkFDS1NfU0FWRV9GSUxFX1JTMjc0WE0pOwpk aWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZS5oIGIvc3JjL2ludGVyZmFjZS5oCmluZGV4IDgxOGIw YTMuLjEwODI2NGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2UuaAorKysgYi9zcmMvaW50ZXJm YWNlLmgKQEAgLTE5NCwzICsxOTQsMTkgQEAgaW50ZXJmYWNlX3Nob3dfYWxlcnRfZGlhbG9nIChn Y2hhciAqcHJpbWFyeVRleHQsCiB2b2lkCiBpbnRlcmZhY2Vfc2hvd19sYXllcl9lZGl0X2RpYWxv ZyAoZ2VyYnZfdXNlcl90cmFuc2Zvcm1hdGlvbl90ICp0cmFuc2Zvcm0sCiAJCQkJICBnZXJidl91 bml0X3Qgc2NyZWVuVW5pdCk7CisKKworZW51bSB7CisgIFBBUlRfREVQVEhfQ09MVU1OID0gMCwK KyAgUEFSVF9QQUNLQUdFX0NPTFVNTiwKKyAgUEFSVF9WQUxVRV9DT0xVTU4sCisgIFBBUlRfUkVG REVTX0NPTFVNTiwKKyAgUEFSVF9URVhUX0NPTFVNTiwKKyAgUEFSVF9QTEFDRURfQ09MVU1OLAor ICBQQVJUX1hfQ09MVU1OLAorICBQQVJUX1lfQ09MVU1OLAorICBQQVJUX05VTV9DT0xVTU5TCit9 OworCisvKiBYWFg6IE5BU1RZIEdMT0JBTCAqLworZXh0ZXJuIEd0a1RyZWVTdG9yZSAqcGFydHNf dHJlZXN0b3JlOwpkaWZmIC0tZ2l0IGEvc3JjL21haW4uaCBiL3NyYy9tYWluLmgKaW5kZXggZDIw ODczMC4uY2VhNjA4ZiAxMDA2NDQKLS0tIGEvc3JjL21haW4uaAorKysgYi9zcmMvbWFpbi5oCkBA IC0xMTQsNiArMTE0LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgIGdpbnQgb2ZmX3g7CQkJLyog T2Zmc2V0IGN1cnJlbnQgcGl4bWFwIHdoZW4gcGFubmluZyAqLwogICAgIGdpbnQgb2ZmX3k7CiAK KyAgICBnZG91YmxlIGNyb3NzaGFpcl94OwkvKiBDcm9zc2hhaXIgYm9hcmQgY29vcmRpbmF0ZXMg Ki8KKyAgICBnZG91YmxlIGNyb3NzaGFpcl95OworCiAgICAgZ2RvdWJsZSBtZWFzdXJlX3N0YXJ0 X3g7CS8qIE1lYXN1cmUgc3RhcnQgYm9hcmQgY29vcmRpbmF0ZXMgKi8KICAgICBnZG91YmxlIG1l YXN1cmVfc3RhcnRfeTsKICAgICBnZG91YmxlIG1lYXN1cmVfbGFzdF94OwkvKiBNZWFzdXJlIGVu ZCBib2FyZCBjb29yZGluYXRlcyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3BpY2stYW5kLXBsYWNlLmMg Yi9zcmMvcGljay1hbmQtcGxhY2UuYwppbmRleCA2M2M1ZjEzLi43ZThlZWM3IDEwMDY0NAotLS0g YS9zcmMvcGljay1hbmQtcGxhY2UuYworKysgYi9zcmMvcGljay1hbmQtcGxhY2UuYwpAQCAtMzcs NiArMzcsMTAgQEAKICNpbmNsdWRlICJjc3YuaCIKICNpbmNsdWRlICJwaWNrLWFuZC1wbGFjZS5o IgogCisvKiBIQUNLICovCisjaW5jbHVkZSAiaW50ZXJmYWNlLmgiCisKKwogdm9pZCBnZXJiX3Ry YW5zZl9mcmVlKGdlcmJ2X3RyYW5zZl90ICp0cmFuc2YpCiB7CiAgICAgZ19mcmVlKHRyYW5zZik7 CkBAIC0yMDUsNyArMjA5LDI0IEBAIHBpY2tfYW5kX3BsYWNlX3BhcnNlX2ZpbGUoZ2VyYl9maWxl X3QgKmZkKQogICAgIGdlcmJ2X3RyYW5zZl90ICp0cl9yb3QgPSBnZXJiX3RyYW5zZl9uZXcoKTsK ICAgICBHQXJyYXkgCSpwbnBQYXJzZURhdGFBcnJheSA9IGdfYXJyYXlfbmV3IChGQUxTRSwgRkFM U0UsIHNpemVvZihQbnBQYXJ0RGF0YSkpOwogICAgIGdib29sZWFuIGZvdW5kVmFsaWREYXRhUm93 ID0gRkFMU0U7Ci0gICAgCisgICAgR3RrVHJlZUl0ZXIgcGFja2FnZV9pdGVyOworICAgIEd0a1Ry ZWVJdGVyIHZhbHVlX2l0ZXI7CisgICAgR3RrVHJlZUl0ZXIgcmVmZGVzX2l0ZXI7CisKKyAgICBp ZiAocGFydHNfdHJlZXN0b3JlID09IE5VTEwpIHsKKyAgICAgIHBhcnRzX3RyZWVzdG9yZSA9IGd0 a190cmVlX3N0b3JlX25ldyAoUEFSVF9OVU1fQ09MVU1OUywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0lOVCAvKiBEZXB0aCBpbiB0cmVlICovLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5H IC8qIHBhY2thZ2UgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdfVFlQRV9TVFJJTkcgLyogdmFsdWUgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcgLyogcmVmZGVzICovLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HIC8qIHRleHQg Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9C T09MRUFOIC8qIHBsYWNlZD8gKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdfVFlQRV9ET1VCTEUgLyogWCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0RPVUJMRSAvKiBZICovKTsKKyAgICB9IGVsc2Ug eworICAgICAgZ3RrX3RyZWVfc3RvcmVfY2xlYXIgKHBhcnRzX3RyZWVzdG9yZSk7CisgICAgfQor CiAgICAgLyoKICAgICAgKiBtYW55IGxvY2FsZXMgcmVkZWZpbmUgIi4iIGFzICIsIiBhbmQgc28g b24sIHNvIHNzY2FuZiBoYXMgcHJvYmxlbXMgd2hlbgogICAgICAqIHJlYWRpbmcgUGljayBhbmQg UGxhY2UgZmlsZXMgdXNpbmcgJWYgZm9ybWF0IApAQCAtMzA0LDYgKzMyNSw3IEBAIHBpY2tfYW5k X3BsYWNlX3BhcnNlX2ZpbGUoZ2VyYl9maWxlX3QgKmZkKQogCWVsc2UgaWYgKHJvd1swXSAmJiBy b3dbMV0gJiYgcm93WzJdICYmIHJvd1szXSAmJiByb3dbNF0gJiYgcm93WzVdICYmIHJvd1s2XSkg ewogCSAgICBzbnByaW50ZiAocG5wUGFydERhdGEuZGVzaWduYXRvciwgc2l6ZW9mKHBucFBhcnRE YXRhLmRlc2lnbmF0b3IpLTEsICIlcyIsIHJvd1swXSk7CiAJICAgIHNucHJpbnRmIChwbnBQYXJ0 RGF0YS5mb290cHJpbnQsIHNpemVvZihwbnBQYXJ0RGF0YS5mb290cHJpbnQpLTEsICIlcyIsIHJv d1sxXSk7CQkKKwkgICAgc25wcmludGYgKHBucFBhcnREYXRhLnZhbHVlLCBzaXplb2YocG5wUGFy dERhdGEudmFsdWUpLTEsICIlcyIsIHJvd1syXSk7CiAJICAgIHNucHJpbnRmIChwbnBQYXJ0RGF0 YS5sYXllciwgc2l6ZW9mKHBucFBhcnREYXRhLmxheWVyKS0xLCAiJXMiLCByb3dbNl0pOwkKIAkg ICAgcG5wUGFydERhdGEubWlkX3ggPSBwaWNrX2FuZF9wbGFjZV9nZXRfZmxvYXRfdW5pdChyb3db M10pOwogCSAgICBwbnBQYXJ0RGF0YS5taWRfeSA9IHBpY2tfYW5kX3BsYWNlX2dldF9mbG9hdF91 bml0KHJvd1s0XSk7CkBAIC0zNDYsNiArMzY4LDEwNCBAQCBwaWNrX2FuZF9wbGFjZV9wYXJzZV9m aWxlKGdlcmJfZmlsZV90ICpmZCkKIAkgICAgfQogCX0gIAogCWdfYXJyYXlfYXBwZW5kX3ZhbCAo cG5wUGFyc2VEYXRhQXJyYXksIHBucFBhcnREYXRhKTsKKworICAgICAgICBpZiAoMSkgeworICAg ICAgICAgIGlmICghZ3RrX3RyZWVfbW9kZWxfZ2V0X2l0ZXJfZmlyc3QgKHBhcnRzX3RyZWVzdG9y ZSwgJnBhY2thZ2VfaXRlcikpIHsKKyAgICAgICAgICAgIC8qIE5vdCBmb3VuZCwgYXBwZW5kIGFu ZCBicmVhayAqLworCisgICAgICAgICAgICBndGtfdHJlZV9zdG9yZV9hcHBlbmQgKHBhcnRzX3Ry ZWVzdG9yZSwgJnBhY2thZ2VfaXRlciwgTlVMTCk7CisgICAgICAgICAgICBndGtfdHJlZV9zdG9y ZV9zZXQgKHBhcnRzX3RyZWVzdG9yZSwgJnBhY2thZ2VfaXRlciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUEFSVF9ERVBUSF9DT0xVTU4sIDAsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBBUlRfUEFDS0FHRV9DT0xVTU4sIHBucFBhcnREYXRhLmZvb3RwcmludCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9WQUxVRV9DT0xVTU4sIE5VTEws CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfUkVGREVTX0NPTFVNTiwgTlVM TCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9URVhUX0NPTFVNTiwgcG5w UGFydERhdGEuZm9vdHByaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJU X1BMQUNFRF9DT0xVTU4sIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ QVJUX1hfQ09MVU1OLCAwLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRf WV9DT0xVTU4sIDAuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpOworICAg ICAgICAgIH0gZWxzZQorICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNoYXIgKmZvb3Rwcmlu dDsKKyAgICAgICAgICAgIGd0a190cmVlX21vZGVsX2dldCAocGFydHNfdHJlZXN0b3JlLCAmcGFj a2FnZV9pdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1BBQ0tBR0Vf Q09MVU1OLCAmZm9vdHByaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSk7 CisgICAgICAgICAgICBpZiAoc3RyY21wIChmb290cHJpbnQsIHBucFBhcnREYXRhLmZvb3Rwcmlu dCkgPT0gMCkgLyogRm91bmQgaXQgKi8KKyAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg ICAgIGlmICghZ3RrX3RyZWVfbW9kZWxfaXRlcl9uZXh0IChwYXJ0c190cmVlc3RvcmUsICZwYWNr YWdlX2l0ZXIpKSB7CisgICAgICAgICAgICAgIC8qIE5vdCBmb3VuZCwgYXBwZW5kIGFuZCBicmVh ayAqLworCisgICAgICAgICAgICAgIGd0a190cmVlX3N0b3JlX2FwcGVuZCAocGFydHNfdHJlZXN0 b3JlLCAmcGFja2FnZV9pdGVyLCBOVUxMKTsKKyAgICAgICAgICAgICAgZ3RrX3RyZWVfc3RvcmVf c2V0IChwYXJ0c190cmVlc3RvcmUsICZwYWNrYWdlX2l0ZXIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUEFSVF9ERVBUSF9DT0xVTU4sIDAsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUEFSVF9QQUNLQUdFX0NPTFVNTiwgcG5wUGFydERhdGEuZm9vdHByaW50 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfVkFMVUVfQ09MVU1OLCBO VUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfUkVGREVTX0NPTFVN TiwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1RFWFRfQ09M VU1OLCBwbnBQYXJ0RGF0YS5mb290cHJpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUEFSVF9QTEFDRURfQ09MVU1OLCBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQQVJUX1hfQ09MVU1OLCAwLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUEFSVF9ZX0NPTFVNTiwgMC4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0xKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg ICAgfSB3aGlsZSAoMSk7CisKKyAgICAgICAgICBpZiAoIWd0a190cmVlX21vZGVsX2l0ZXJfY2hp bGRyZW4gKHBhcnRzX3RyZWVzdG9yZSwgJnZhbHVlX2l0ZXIsICZwYWNrYWdlX2l0ZXIpKSB7Cisg ICAgICAgICAgICAvKiBOb3QgZm91bmQsIGFwcGVuZCBhbmQgYnJlYWsgKi8KKworICAgICAgICAg ICAgZ3RrX3RyZWVfc3RvcmVfYXBwZW5kIChwYXJ0c190cmVlc3RvcmUsICZ2YWx1ZV9pdGVyLCAm cGFja2FnZV9pdGVyKTsKKyAgICAgICAgICAgIGd0a190cmVlX3N0b3JlX3NldCAocGFydHNfdHJl ZXN0b3JlLCAmdmFsdWVfaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFS VF9ERVBUSF9DT0xVTU4sIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRf UEFDS0FHRV9DT0xVTU4sIHBucFBhcnREYXRhLmZvb3RwcmludCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUEFSVF9WQUxVRV9DT0xVTU4sIHBucFBhcnREYXRhLnZhbHVlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1JFRkRFU19DT0xVTU4sIE5VTEwsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfVEVYVF9DT0xVTU4sIHBucFBhcnRE YXRhLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1BMQUNFRF9D T0xVTU4sIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1hfQ09M VU1OLCAwLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfWV9DT0xVTU4s IDAuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpOworICAgICAgICAgIH0g ZWxzZQorICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNoYXIgKnZhbHVlOworICAgICAgICAg ICAgZ3RrX3RyZWVfbW9kZWxfZ2V0IChwYXJ0c190cmVlc3RvcmUsICZ2YWx1ZV9pdGVyLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1ZBTFVFX0NPTFVNTiwgJnZhbHVlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSk7CisgICAgICAgICAgICBpZiAoc3Ry Y21wICh2YWx1ZSwgcG5wUGFydERhdGEudmFsdWUpID09IDApIC8qIEZvdW5kIGl0ICovCisgICAg ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBpZiAoIWd0a190cmVlX21vZGVsX2l0ZXJf bmV4dCAocGFydHNfdHJlZXN0b3JlLCAmdmFsdWVfaXRlcikpIHsKKyAgICAgICAgICAgICAgLyog Tm90IGZvdW5kLCBhcHBlbmQgYW5kIGJyZWFrICovCisKKyAgICAgICAgICAgIGd0a190cmVlX3N0 b3JlX2FwcGVuZCAocGFydHNfdHJlZXN0b3JlLCAmdmFsdWVfaXRlciwgJnBhY2thZ2VfaXRlcik7 CisgICAgICAgICAgICBndGtfdHJlZV9zdG9yZV9zZXQgKHBhcnRzX3RyZWVzdG9yZSwgJnZhbHVl X2l0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfREVQVEhfQ09MVU1O LCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1BBQ0tBR0VfQ09MVU1O LCBwbnBQYXJ0RGF0YS5mb290cHJpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFBBUlRfVkFMVUVfQ09MVU1OLCBwbnBQYXJ0RGF0YS52YWx1ZSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUEFSVF9SRUZERVNfQ09MVU1OLCBOVUxMLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQQVJUX1RFWFRfQ09MVU1OLCBwbnBQYXJ0RGF0YS52YWx1ZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9QTEFDRURfQ09MVU1OLCBGQUxTRSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9YX0NPTFVNTiwgMC4wLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1lfQ09MVU1OLCAwLjAsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0xKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICB9CisgICAgICAgICAgfSB3aGlsZSAoMSk7CisKKyAgICAgICAgICBndGtfdHJlZV9z dG9yZV9hcHBlbmQgKHBhcnRzX3RyZWVzdG9yZSwgJnJlZmRlc19pdGVyLCAmdmFsdWVfaXRlcik7 CisgICAgICAgICAgZ3RrX3RyZWVfc3RvcmVfc2V0IChwYXJ0c190cmVlc3RvcmUsICZyZWZkZXNf aXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfREVQVEhfQ09MVU1OLCAy LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9QQUNLQUdFX0NPTFVNTiwgcG5w UGFydERhdGEuZm9vdHByaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9W QUxVRV9DT0xVTU4sIHBucFBhcnREYXRhLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUEFSVF9SRUZERVNfQ09MVU1OLCBwbnBQYXJ0RGF0YS5kZXNpZ25hdG9yLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9URVhUX0NPTFVNTiwgcG5wUGFydERhdGEuZGVz aWduYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfUExBQ0VEX0NPTFVN TiwgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1hfQ09MVU1OLCBw bnBQYXJ0RGF0YS5taWRfeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfWV9D T0xVTU4sIHBucFBhcnREYXRhLm1pZF95LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LTEpOworCisgICAgICAgIH0KKwogCXBhcnNlZExpbmVzICs9IDE7CiAgICAgfSAgIAogICAgIGdl cmJfdHJhbnNmX2ZyZWUodHJfcm90KTsKZGlmZiAtLWdpdCBhL3NyYy9waWNrLWFuZC1wbGFjZS5o IGIvc3JjL3BpY2stYW5kLXBsYWNlLmgKaW5kZXggOTU3MzBlYi4uN2M5OWU4MCAxMDA2NDQKLS0t IGEvc3JjL3BpY2stYW5kLXBsYWNlLmgKKysrIGIvc3JjL3BpY2stYW5kLXBsYWNlLmgKQEAgLTQ0 LDYgKzQ0LDcgQEAgZW51bSBlX2Zvb3RwcmludCB7CiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgY2hh ciAgICAgZGVzaWduYXRvcltNQVhMXTsKICAgICBjaGFyICAgICBmb290cHJpbnRbTUFYTF07Cisg ICAgY2hhciAgICAgdmFsdWVbTUFYTF07CiAgICAgZG91YmxlICAgbWlkX3g7CiAgICAgZG91Ymxl ICAgbWlkX3k7CiAgICAgZG91YmxlICAgcmVmX3g7CmRpZmYgLS1naXQgYS9zcmMvcmVuZGVyLmMg Yi9zcmMvcmVuZGVyLmMKaW5kZXggN2YyNWE1Yi4uODVhYjU1MiAxMDA2NDQKLS0tIGEvc3JjL3Jl bmRlci5jCisrKyBiL3NyYy9yZW5kZXIuYwpAQCAtMzIwLDYgKzMyMCw1MiBAQCByZW5kZXJfdHJp bV9wb2ludChnZG91YmxlICpzdGFydF94LCBnZG91YmxlICpzdGFydF95LCBnZG91YmxlIGxhc3Rf eCwgZ2RvdWJsZSBsYQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qKiBEcmF3cy9lcmFzZXMgY3Jvc3NoYWlyCisgKi8K K3ZvaWQKK3JlbmRlcl90b2dnbGVfY3Jvc3NoYWlyKHZvaWQpCit7CisJY29uc3QgZ2RvdWJsZSBt YXhfY29vcmQgPSAoMTw8MTUpIC0gMjsvKiBhIHZhbHVlIHRoYXQgY2F1c2VzIG5vIG92ZXJmbG93 ICovCisKKwlHZGtHQyAqZ2M7CisJR2RrR0NWYWx1ZXMgdmFsdWVzOworCUdka0dDVmFsdWVzTWFz ayB2YWx1ZXNfbWFzazsKKwlnZG91YmxlIGNyb3NzaGFpcl94LCBjcm9zc2hhaXJfeTsKKwlnZG91 YmxlIHN0YXJ0X3gsIHN0YXJ0X3ksIGxhc3RfeCwgbGFzdF95OworCW1lbXNldCgmdmFsdWVzLCAw LCBzaXplb2YodmFsdWVzKSk7CisJdmFsdWVzLmZ1bmN0aW9uID0gR0RLX1hPUjsKKwlpZiAoIXNj cmVlbi56b29tX291dGxpbmVfY29sb3IucGl4ZWwpCisJCWdka19jb2xvcm1hcF9hbGxvY19jb2xv cihnZGtfY29sb3JtYXBfZ2V0X3N5c3RlbSgpLCAmc2NyZWVuLnpvb21fb3V0bGluZV9jb2xvciwg RkFMU0UsIFRSVUUpOworCXZhbHVlcy5mb3JlZ3JvdW5kID0gc2NyZWVuLnpvb21fb3V0bGluZV9j b2xvcjsKKwl2YWx1ZXNfbWFzayA9IEdES19HQ19GVU5DVElPTiB8IEdES19HQ19GT1JFR1JPVU5E OworCWdjID0gZ2RrX2djX25ld193aXRoX3ZhbHVlcyhzY3JlZW4uZHJhd2luZ19hcmVhLT53aW5k b3csICZ2YWx1ZXMsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc19tYXNrKTsK KworCXJlbmRlcl9ib2FyZDJzY3JlZW4oJmNyb3NzaGFpcl94LCAmY3Jvc3NoYWlyX3ksCisJICAg ICAgICAgICAgICAgICAgICBzY3JlZW4uY3Jvc3NoYWlyX3gsIHNjcmVlbi5jcm9zc2hhaXJfeSk7 CisKKwlzdGFydF94ID0gLW1heF9jb29yZDsKKwlzdGFydF95ID0gY3Jvc3NoYWlyX3k7CisJbGFz dF94ID0gbWF4X2Nvb3JkOworCWxhc3RfeSA9IGNyb3NzaGFpcl95OworCXJlbmRlcl90cmltX3Bv aW50KCZzdGFydF94LCAmc3RhcnRfeSwgbGFzdF94LCBsYXN0X3kpOworCXJlbmRlcl90cmltX3Bv aW50KCZsYXN0X3gsICZsYXN0X3ksIHN0YXJ0X3gsIHN0YXJ0X3kpOworCWdka19kcmF3X2xpbmUo c2NyZWVuLmRyYXdpbmdfYXJlYS0+d2luZG93LCBnYywgc3RhcnRfeCwKKwkgICAgICAgICAgICAg IHN0YXJ0X3ksIGxhc3RfeCwgbGFzdF95KTsKKworCXN0YXJ0X3ggPSBjcm9zc2hhaXJfeDsKKwlz dGFydF95ID0gLW1heF9jb29yZDsKKwlsYXN0X3ggPSBjcm9zc2hhaXJfeDsKKwlsYXN0X3kgPSBt YXhfY29vcmQ7CisJcmVuZGVyX3RyaW1fcG9pbnQoJnN0YXJ0X3gsICZzdGFydF95LCBsYXN0X3gs IGxhc3RfeSk7CisJcmVuZGVyX3RyaW1fcG9pbnQoJmxhc3RfeCwgJmxhc3RfeSwgc3RhcnRfeCwg c3RhcnRfeSk7CisJZ2RrX2RyYXdfbGluZShzY3JlZW4uZHJhd2luZ19hcmVhLT53aW5kb3csIGdj LCBzdGFydF94LAorCSAgICAgICAgICAgICAgc3RhcnRfeSwgbGFzdF94LCBsYXN0X3kpOworCisJ Z2RrX2djX3VucmVmKGdjKTsKK30gLyogdG9nZ2xlX2Nyb3NzaGFpciAqLworCisvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qKiBE cmF3cy9lcmFzZXMgbWVhc3VyZSBsaW5lCiAgKi8KIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9yZW5k ZXIuaCBiL3NyYy9yZW5kZXIuaAppbmRleCBkNzY5ZDZmLi4zZGM1MzBkIDEwMDY0NAotLS0gYS9z cmMvcmVuZGVyLmgKKysrIGIvc3JjL3JlbmRlci5oCkBAIC00OCw2ICs0OCw5IEBAIHZvaWQKIHJl bmRlcl9kcmF3X3pvb21fb3V0bGluZShnYm9vbGVhbiBjZW50ZXJlZCk7CiAKIHZvaWQKK3JlbmRl cl90b2dnbGVfY3Jvc3NoYWlyKHZvaWQpOworCit2b2lkCiByZW5kZXJfdG9nZ2xlX21lYXN1cmVf bGluZSh2b2lkKTsKIAogdm9pZAotLSAKMi4xLjQKCm== --=-pAyQzMNWHxpEFp68X8r8--