From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=ALL_TRUSTED,URIBL_BLACK autolearn=no autolearn_force=no version=3.4.4 Received: from inbox.vuxu.org (inbox.vuxu.org [IPv6:::1]) by inbox.vuxu.org (Postfix) with ESMTP id 8F51E21CD2 for ; Thu, 25 Apr 2024 05:32:28 +0200 (CEST) Content-Type: multipart/mixed; boundary="===============5067957683151893943==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_New_package=3A_xiphos-4=2E2=2E1?= To: ml@inbox.vuxu.org From: jonpikum Reply-to: ml@inbox.vuxu.org Message-ID: Date: Thu, 25 Apr 2024 05:32:28 +0200 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============5067957683151893943== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IGpvbnBpa3VtIGFnYWluc3QgbWFzdGVyIG9u IHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9qb25waWt1 bS92b2lkLXBhY2thZ2VzIHhpcGhvcwpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lk LXBhY2thZ2VzL3B1bGwvNTAwMjgKCk5ldyBwYWNrYWdlOiB4aXBob3MtNC4yLjEKIyMjIyBUZXN0 aW5nIHRoZSBjaGFuZ2VzDQotIEkgdGVzdGVkIHRoZSBjaGFuZ2VzIGluIHRoaXMgUFI6ICoqYnJp ZWZseSoqDQoNCiMjIyMgTmV3IHBhY2thZ2UNCi0gVGhpcyBuZXcgcGFja2FnZSBjb25mb3JtcyB0 byB0aGUgW3BhY2thZ2UgcmVxdWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51 eC92b2lkLXBhY2thZ2VzL2Jsb2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZCNwYWNrYWdlLXJlcXVp cmVtZW50cyk6ICoqWUVTKioNCg0KIyMjIyBMb2NhbCBidWlsZCB0ZXN0aW5nDQotIEkgYnVpbHQg dGhpcyBQUiBsb2NhbGx5IGZvciBteSBuYXRpdmUgYXJjaGl0ZWN0dXJlLCB4ODZfNjQtZ2xpYmMN Ci0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9yIHRoZXNlIGFyY2hpdGVjdHVyZXMgKGlmIHN1 cHBvcnRlZC4gbWFyayBjcm9zc2J1aWxkcyk6DQogIC0geDg2XzY0LW11c2wgKGNyb3NzKQ0KICAt IGFhcmNoNjQtZ2xpYmMgKGNyb3NzKQ0KICAtIGFybXY3bC1nbGliYyAoY3Jvc3MpDQoNCkJhc2Vk IG9uIGh0dHBzOi8vZ2l0bGFiLmFyY2hsaW51eC5vcmcvYXJjaGxpbnV4L3BhY2thZ2luZy9wYWNr YWdlcy94aXBob3MvLS9ibG9iL21haW4vUEtHQlVJTEQNCkRvIG5vdGUgdGhlIGNhdXNlIG9mIHRo ZSBwYXRjaGVzOg0KLSBodHRwczovL2dpdGh1Yi5jb20vY3Jvc3N3aXJlL3hpcGhvcy9pc3N1ZXMv MTA4Mw0KLSBodHRwczovL2dpdGh1Yi5jb20vY3Jvc3N3aXJlL3hpcGhvcy9pc3N1ZXMvNzk0DQoN CkkgZGlkIG5vdCBpbmNsdWRlIHRoZSBodHRwcyBwYXRjaA0KDQpjbG9zZXMgIzUwMDI2IAoKQSBw YXRjaCBmaWxlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdl cy9wdWxsLzUwMDI4LnBhdGNoIGlzIGF0dGFjaGVk --===============5067957683151893943== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-xiphos-50028.patch" RnJvbSAyZDg2ZTlmY2IxMTE2Y2FjY2M4MTRiNWZmNTFkYjQ4MTg0OTk0MWNhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb25hdGhhbiBCcmFkbGV5IDxqY2JAcGlrdW0ueHl6PgpEYXRl OiBXZWQsIDI0IEFwciAyMDI0IDIyOjA5OjMxIC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gTmV3IHBh Y2thZ2U6IHhpcGhvcwoKLS0tCiAuLi4vcGF0Y2hlcy9kaXNhYmxlLXdlYmtpdC1lZGl0b3IucGF0 Y2ggICAgICAgfCAxMzMyICsrKysrKysrKysrKysrKysrCiBzcmNwa2dzL3hpcGhvcy9wYXRjaGVz L3hpcGhvcy1nbGliYy5wYXRjaCAgICAgfCAgIDEwICsKIHNyY3BrZ3MveGlwaG9zL3RlbXBsYXRl ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKwogMyBmaWxlcyBjaGFuZ2VkLCAxMzYzIGlu c2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3hpcGhvcy9wYXRjaGVzL2Rp c2FibGUtd2Via2l0LWVkaXRvci5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MveGlw aG9zL3BhdGNoZXMveGlwaG9zLWdsaWJjLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy94aXBob3MvdGVtcGxhdGUKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3hpcGhvcy9wYXRjaGVzL2Rp c2FibGUtd2Via2l0LWVkaXRvci5wYXRjaCBiL3NyY3BrZ3MveGlwaG9zL3BhdGNoZXMvZGlzYWJs ZS13ZWJraXQtZWRpdG9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMDAwLi42MWNmOTA3MTU0MjUxNQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MveGlwaG9z L3BhdGNoZXMvZGlzYWJsZS13ZWJraXQtZWRpdG9yLnBhdGNoCkBAIC0wLDAgKzEsMTMzMiBAQAor RnJvbTogQmFzdGlhbiBHZXJtYW5uIDxiYWdlQGRlYmlhbi5vcmc+CitEYXRlOiBTYXQsIDI3IEp1 biAyMDIwIDE5OjM2OjI1ICswMjAwCitTdWJqZWN0OiBEaXNhYmxlIHdlYmtpdCBlZGl0b3IKKwor LS0tCisgc3JjL2VkaXRvci9lZGl0b3IuYyAgICAgICAgfCAgICAyICstCisgc3JjL2VkaXRvci93 ZWJraXRfZWRpdG9yLmMgfCAxMDY1ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxMDY0IGRlbGV0aW9ucygtKQor CitkaWZmIC0tZ2l0IGEvc3JjL2VkaXRvci9lZGl0b3IuYyBiL3NyYy9lZGl0b3IvZWRpdG9yLmMK K2luZGV4IDBhN2NhYjQuLjAwNmVlZWIgMTAwNjQ0CistLS0gYS9zcmMvZWRpdG9yL2VkaXRvci5j CisrKysgYi9zcmMvZWRpdG9yL2VkaXRvci5jCitAQCAtMjMsNyArMjMsNyBAQAorICNpbmNsdWRl IDxjb25maWcuaD4KKyAjZW5kaWYKKyAKKy0jaWZkZWYgVVNFX1dFQktJVF9FRElUT1IKKysjaWZu ZGVmIFVTRV9XRUJLSVRfRURJVE9SCisgCisgLyogWCBrZXlib2FyZCAjZGVmaW5pdGlvbnMsIHRv IGhhbmRsZSBzaG9ydGN1dHMgKi8KKyAvKiB3ZSBtdXN0IGRlZmluZSB0aGUgY2F0ZWdvcmllcyBv ZiAjZGVmaW5pdGlvbnMgd2UgbmVlZC4gKi8KK2RpZmYgLS1naXQgYS9zcmMvZWRpdG9yL3dlYmtp dF9lZGl0b3IuYyBiL3NyYy9lZGl0b3Ivd2Via2l0X2VkaXRvci5jCitpbmRleCA4Mjk5ZDIzLi44 NTA3ZjY0IDEwMDY0NAorLS0tIGEvc3JjL2VkaXRvci93ZWJraXRfZWRpdG9yLmMKKysrKyBiL3Ny Yy9lZGl0b3Ivd2Via2l0X2VkaXRvci5jCitAQCAtMjksNyArMjksNiBAQAorICNpbmNsdWRlIDxj dHlwZS5oPgorIAorICNpbmNsdWRlIDxnbGliLmg+CistI2luY2x1ZGUgPHdlYmtpdC93ZWJraXQu aD4KKyAKKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KK0BAIC05 Myw3ICs5Miw2IEBAIHN0YXRpYyB2b2lkCisgb25fYWJvdXRfZGlhbG9nX3Jlc3BvbnNlKEd0a0Rp YWxvZyAqZGlhbG9nLAorIAkJCSBnaW50IHJlc3BvbnNlX2lkLCBncG9pbnRlciB1c2VyX2RhdGEp CisgeworLQlndGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChkaWFsb2cpKTsKKyB9CisgCisg LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorQEAgLTExNSwzOSArMTEzLDIxIEBAIG9uX2Fib3V0X2Rp YWxvZ19yZXNwb25zZShHdGtEaWFsb2cgKmRpYWxvZywKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAor IGFjdGlvbl9hYm91dF9hY3RpdmF0ZV9jYihHdGtXaWRnZXQgKndpZGdldCwgRURJVE9SICplKQor IHsKKy0JR3RrV2lkZ2V0ICphYm91dDsKKy0JR2RrUGl4YnVmICphYm91dF9sb2dvOworLQorLQlh Ym91dF9sb2dvID0gcGl4YnVmX2ZpbmRlcigieGlwaG9zLWJ1dHRvbi0xMjUucG5nIiwgMCwgTlVM TCk7CistCWFib3V0ID0gZ3RrX2Fib3V0X2RpYWxvZ19uZXcoKTsKKy0KKy0JZ19zaWduYWxfY29u bmVjdChhYm91dCwgInJlc3BvbnNlIiwKKy0JCQkgR19DQUxMQkFDSyhvbl9hYm91dF9kaWFsb2df cmVzcG9uc2UpLCBOVUxMKTsKKy0JZ3RrX2Fib3V0X2RpYWxvZ19zZXRfcHJvZ3JhbV9uYW1lKEdU S19BQk9VVF9ESUFMT0coYWJvdXQpLCAiV2ViS2l0IGVkaXRvciwgWGlwaG9zIik7CistCWd0a19h Ym91dF9kaWFsb2dfc2V0X3ZlcnNpb24oR1RLX0FCT1VUX0RJQUxPRyhhYm91dCksIChnY2hhciAq KVZFUlNJT04pOworLQlndGtfYWJvdXRfZGlhbG9nX3NldF9jb21tZW50cyhHVEtfQUJPVVRfRElB TE9HKGFib3V0KSwgIlJlcGxhY2VtZW50IGZvciBndGtodG1sIGVkaXRvciIpOworLQlndGtfYWJv dXRfZGlhbG9nX3NldF9sb2dvKEdUS19BQk9VVF9ESUFMT0coYWJvdXQpLCBhYm91dF9sb2dvKTsK Ky0Jc2V0X3dpbmRvd19pY29uKEdUS19XSU5ET1coYWJvdXQpKTsKKy0JZ3RrX3dpZGdldF9zaG93 KGFib3V0KTsKKyB9CisgCisgR19NT0RVTEVfRVhQT1JUIHZvaWQKKyBhY3Rpb25faW5jcmVhc2Vf aW5kZW50X2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisgeworLQll ZGl0b3JfZXhlY3V0ZV9zY3JpcHQoImRvY3VtZW50LmV4ZWNDb21tYW5kKCdJbmRlbnQnLCBmYWxz ZSwgZmFsc2UpOyIsIGUpOworLQllZGl0b3JfaW5zZXJ0X25ld19vdXRsaW5lX2xldmVsKGUtPnRv b2xpdGVtcy5vdXRsaW5lX2xldmVsLCBlKTsKKyB9CisgCisgR19NT0RVTEVfRVhQT1JUIHZvaWQK KyBhY3Rpb25fZGVjcmVhc2VfaW5kZW50X2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBF RElUT1IgKmUpCisgeworLQllZGl0b3JfZXhlY3V0ZV9zY3JpcHQoImRvY3VtZW50LmV4ZWNDb21t YW5kKCdPdXRkZW50JywgZmFsc2UsIGZhbHNlKTsiLCBlKTsKKyB9CisgCisgR19NT0RVTEVfRVhQ T1JUIHZvaWQKKyBhY3Rpb25faW5zZXJ0X3J1bGVfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRn ZXQsIEVESVRPUiAqZSkKKyB7CistCWVkaXRvcl9pbnNlcnRfaHRtbCgiPGhyPiIsIGUpOworIH0K KyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAorQEAgLTE1OCwxNDEgKzEzOCw4MCBAQCBhY3Rpb25f aW5zZXJ0X3RhYmxlX2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisg R19NT0RVTEVfRVhQT1JUIHZvaWQKKyBhY3Rpb25faW5zZXJ0X2Vtb3RpY29uX2FjdGl2YXRlX2Ni KEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisgeworLQkvLyBUaGlzIGlzIHN0dXBpZCwg aWYgd2UgZG9uJ3QgaGF2ZSBlbW90aWNvbnMgd29ya2luZywgdGhlbiB3ZSBzb3VsZAorLQkvLyBy ZW1vdmUgdGhlIGJ1dHRvbiB1c2VycyBzZWUuCistCistCS8vc2NyaXB0ID0gZ19zdHJkdXAgKCJk b2N1bWVudC5leGVjQ29tbWFuZCgnJywgbnVsbCwgXCJcIik7Iik7CisgfQorIAorIEdfTU9EVUxF X0VYUE9SVCB2b2lkCisgYWN0aW9uX2luc2VydF9pbWFnZV9hY3RpdmF0ZV9jYihHdGtXaWRnZXQg KndpZGdldCwgRURJVE9SICplKQorIHsKKy0JZ2NoYXIgKmZpbGVuYW1lID0gTlVMTDsKKy0KKy0J R3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtfZmlsZV9jaG9vc2VyX2RpYWxvZ19uZXcoIlNlbGVjdCBh biBpbWFnZSBmaWxlIiwKKy0JCQkJCQkJTlVMTCwKKy0JCQkJCQkJR1RLX0ZJTEVfQ0hPT1NFUl9B Q1RJT05fT1BFTiwKKy0jaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMTAsIDApCistCQkJCQkJCSJf Q2FuY2VsIiwgR1RLX1JFU1BPTlNFX0NBTkNFTCwKKy0JCQkJCQkJIl9PSyIsIEdUS19SRVNQT05T RV9BQ0NFUFQsCistI2Vsc2UKKy0JCQkJCQkJR1RLX1NUT0NLX0NBTkNFTCwKKy0JCQkJCQkJR1RL X1JFU1BPTlNFX0NBTkNFTCwKKy0JCQkJCQkJR1RLX1NUT0NLX09LLCBHVEtfUkVTUE9OU0VfQUND RVBULAorLSNlbmRpZgorLQkJCQkJCQlOVUxMKTsKKy0KKy0JaWYgKGd0a19kaWFsb2dfcnVuKEdU S19ESUFMT0coZGlhbG9nKSkgPT0gR1RLX1JFU1BPTlNFX09LKSB7CistCQlmaWxlbmFtZSA9IGd0 a19maWxlX2Nob29zZXJfZ2V0X2ZpbGVuYW1lKEdUS19GSUxFX0NIT09TRVIoZGlhbG9nKSk7Cist CQlnY2hhciAqc2NyaXB0ID0gZ19zdHJkdXBfcHJpbnRmKCJkb2N1bWVudC5leGVjQ29tbWFuZCgn aW5zZXJ0SW1hZ2UnLCBudWxsLCAnJXMnKTsiLCBmaWxlbmFtZSk7CistCQllZGl0b3JfZXhlY3V0 ZV9zY3JpcHQoc2NyaXB0LCBlKTsKKy0JCWdfZnJlZShzY3JpcHQpOworLQl9CistCistCWlmIChm aWxlbmFtZSkKKy0JCWdfZnJlZShmaWxlbmFtZSk7CistCWd0a193aWRnZXRfZGVzdHJveShkaWFs b2cpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAorIGFjdGlvbl9pbnNlcnRfb3V0bGlu ZV9hY3RpdmF0ZV9jYihHdGtXaWRnZXQgKndpZGdldCwgRURJVE9SICplKQorIHsKKy0JZWRpdG9y X2V4ZWN1dGVfc2NyaXB0KCJkb2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIG51bGws IFwiPE9MIENMQVNTPUwxPjxMST4gPC9MST48L09MPiBcIik7IiwgZSk7CisgfQorIAorIEdfTU9E VUxFX0VYUE9SVCB2b2lkCisgYWN0aW9uX2p1c3RpZnlfcmlnaHRfYWN0aXZhdGVfY2IoR3RrV2lk Z2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKyB7CistCWVkaXRvcl9leGVjdXRlX3NjcmlwdCgiZG9j dW1lbnQuZXhlY0NvbW1hbmQoJ2p1c3RpZnlyaWdodCcsIGZhbHNlLCBmYWxzZSk7IiwgZSk7Cisg fQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgYWN0aW9uX2p1c3RpZnlfbGVmdF9hY3RpdmF0 ZV9jYihHdGtXaWRnZXQgKndpZGdldCwgRURJVE9SICplKQorIHsKKy0JZWRpdG9yX2V4ZWN1dGVf c2NyaXB0KCJkb2N1bWVudC5leGVjQ29tbWFuZCgnanVzdGlmeWxlZnQnLCBmYWxzZSwgZmFsc2Up OyIsIGUpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAorIGFjdGlvbl9qdXN0aWZ5X2Nl bnRlcl9hY3RpdmF0ZV9jYihHdGtXaWRnZXQgKndpZGdldCwgRURJVE9SICplKQorIHsKKy0JZWRp dG9yX2V4ZWN1dGVfc2NyaXB0KCJkb2N1bWVudC5leGVjQ29tbWFuZCgnanVzdGlmeWNlbnRlcics IGZhbHNlLCBmYWxzZSk7IiwgZSk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgYWN0 aW9uX2p1c3RpZnlfZnVsbF9hY3RpdmF0ZV9jYihHdGtXaWRnZXQgKndpZGdldCwgRURJVE9SICpl KQorIHsKKy0JZWRpdG9yX2V4ZWN1dGVfc2NyaXB0KCJkb2N1bWVudC5leGVjQ29tbWFuZCgnanVz dGlmeWZ1bGwnLCBmYWxzZSwgZmFsc2UpOyIsIGUpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQg dm9pZAorIGFjdGlvbl9ib2xkX2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1Ig KmUpCisgeworLQlpZiAoYnV0dG9uc19zdGF0ZS5ub2NoYW5nZSkKKy0JCXJldHVybjsKKy0KKy0J ZWRpdG9yX2V4ZWN1dGVfc2NyaXB0KCJkb2N1bWVudC5leGVjQ29tbWFuZCgnYm9sZCcsZmFsc2Us ZmFsc2UpOyIsIGUpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAorIGFjdGlvbl9pdGFs aWNfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKyB7CistCS8vZXh0 ZXJuIEJVVFRPTlNfU1RBVEUgYnV0dG9uc19zdGF0ZTsKKy0JaWYgKGJ1dHRvbnNfc3RhdGUubm9j aGFuZ2UpCistCQlyZXR1cm47CistCistCWVkaXRvcl9leGVjdXRlX3NjcmlwdCgiZG9jdW1lbnQu ZXhlY0NvbW1hbmQoJ2l0YWxpYycsZmFsc2UsZmFsc2UpOyIsIGUpOworIH0KKyAKKyBHX01PRFVM RV9FWFBPUlQgdm9pZAorIGFjdGlvbl91bmRvX2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0 LCBFRElUT1IgKmUpCisgeworLQllZGl0b3JfZXhlY3V0ZV9zY3JpcHQoImRvY3VtZW50LmV4ZWND b21tYW5kKCd1bmRvJyxmYWxzZSxmYWxzZSk7IiwgZSk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9S VCB2b2lkCisgYWN0aW9uX3JlZG9fYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRP UiAqZSkKKyB7CistCWVkaXRvcl9leGVjdXRlX3NjcmlwdCgiZG9jdW1lbnQuZXhlY0NvbW1hbmQo J3JlZG8nLGZhbHNlLGZhbHNlKTsiLCBlKTsKKyB9CisgCisgR19NT0RVTEVfRVhQT1JUIHZvaWQK KyBhY3Rpb25fdW5kZXJsaW5lX2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1Ig KmUpCisgeworLQkvL2V4dGVybiBCVVRUT05TX1NUQVRFIGJ1dHRvbnNfc3RhdGU7CistCWlmIChi dXR0b25zX3N0YXRlLm5vY2hhbmdlKQorLQkJcmV0dXJuOworLQorLQllZGl0b3JfZXhlY3V0ZV9z Y3JpcHQoImRvY3VtZW50LmV4ZWNDb21tYW5kKCd1bmRlcmxpbmUnLCBmYWxzZSwgZmFsc2UpOyIs IGUpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAorIGFjdGlvbl9zdHJpa2V0aHJvdWdo X2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisgeworLQkvL2V4dGVy biBCVVRUT05TX1NUQVRFIGJ1dHRvbnNfc3RhdGU7CistCWlmIChidXR0b25zX3N0YXRlLm5vY2hh bmdlKQorLQkJcmV0dXJuOworLQorLQllZGl0b3JfZXhlY3V0ZV9zY3JpcHQoImRvY3VtZW50LmV4 ZWNDb21tYW5kKCdzdHJpa2V0aHJvdWdoJywgZmFsc2UsIGZhbHNlKTsiLCBlKTsKKyB9CisgCisg R19NT0RVTEVfRVhQT1JUIHZvaWQgYWN0aW9uX2N1dF9hY3RpdmF0ZV9jYihHdGtXaWRnZXQgKndp ZGdldCwgRURJVE9SICplKQorIHsKKy0JZWRpdG9yX2N1dChlKTsKKyB9CisgCisgR19NT0RVTEVf RVhQT1JUIHZvaWQKKyBhY3Rpb25fY29weV9hY3RpdmF0ZV9jYihHdGtXaWRnZXQgKndpZGdldCwg RURJVE9SICplKQorIHsKKy0JaWYgKGVkaXRvcl9jb3B5KGUpKQorLQkJWElfbWVzc2FnZSgoIiVz IiwgImNvcHkgc3VjY2VzcyIpKTsKKy0JZWxzZQorLQkJWElfbWVzc2FnZSgoIiVzIiwgImNvcHkg ZmFpbGVkIikpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAorIGFjdGlvbl9wYXN0ZV9h Y3RpdmF0ZV9jYihHdGtXaWRnZXQgKndpZGdldCwgRURJVE9SICplKQorIHsKKy0JZWRpdG9yX3Bh c3RlKGUpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAorQEAgLTMwMyw3MzcgKzIyMiw5 MyBAQCBhY3Rpb25fZGVsZXRlX2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1Ig KmUpCisgR19NT0RVTEVfRVhQT1JUIHZvaWQKKyBhY3Rpb25fZGVsZXRlX2l0ZW1fYWN0aXZhdGVf Y2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKyB7CistCWlmIChlLT5zdHVkeXBhZCkK Ky0JCXJldHVybjsKKy0KKy0JZ2NoYXIgKmJ1ZiA9IAorLQkJZ19zdHJkdXBfcHJpbnRmKCI8c3Bh biB3ZWlnaHQ9XCJib2xkXCIgc2l6ZT1cImxhcmdlclwiPiVzICVzPzwvc3Bhbj4iLAorLQkJCQlf KCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoZSBub3RlIGZvciIpLCBlLT5rZXkp OworLQorLQlpZiAoZ3VpX3llc19ub19kaWFsb2coYnVmLAorLSNpZiBHVEtfQ0hFQ0tfVkVSU0lP TigzLCAxMCwgMCkKKy0JCQkgICAgICAiZGlhbG9nLXdhcm5pbmciCistI2Vsc2UKKy0JCQkgICAg ICBHVEtfU1RPQ0tfRElBTE9HX1dBUk5JTkcKKy0jZW5kaWYKKy0JCQkgICAgICApKSB7CistCist CQltYWluX2RlbGV0ZV9ub3RlKGUtPm1vZHVsZSwgZS0+a2V5KTsKKy0KKy0JCS8qIG5ldyBlbXB0 eSBkb2N1bWVudCBmcm9tIHRlbXBsYXRlICovCistCQlnY2hhciAqZm5hbWUgPSBnX2J1aWxkX2Zp bGVuYW1lKHNldHRpbmdzLmdTd29yZERpciwgInN0dWR5cGFkLnNwdCIsIE5VTEwpOworLQkJWElf bWVzc2FnZSgoImFjdGlvbiBkZWxldGUgaXRlbSBbJXNdIiwgZm5hbWUpKTsKKy0JCWdjaGFyICp0 ZXh0ID0gaW5oYWxlX3RleHRfZnJvbV9maWxlKGZuYW1lKTsKKy0JCWdfZnJlZShmbmFtZSk7Cist CistCQlpZiAodGV4dCAmJiBzdHJsZW4odGV4dCkpIHsKKy0JCQl3ZWJraXRfd2ViX3ZpZXdfbG9h ZF9zdHJpbmcoKFdlYktpdFdlYlZpZXcgKikKKy0JCQkJCQkgICAgZS0+aHRtbF93aWRnZXQsCist CQkJCQkJICAgIHRleHQsCistCQkJCQkJICAgICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiLCAidXRm XzgiLAorLQkJCQkJCSAgICAiZmlsZTovLyIpOworLQkJfQorLQkJaWYgKHRleHQpCistCQkJZ19m cmVlKHRleHQpOworLQl9CistCistCWdfZnJlZShidWYpOworLQllLT5pc19jaGFuZ2VkID0gRkFM U0U7CisgfQorIAorIHZvaWQgc2V0X2J1dHRvbl9zdGF0ZShCVVRUT05TX1NUQVRFIHN0YXRlLCBF RElUT1IgKmUpCisgeworLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA0LCAwKQorLQlHZGtSR0JB IHJnYmE7CistI2Vsc2UKKy0JR2RrQ29sb3IgY29sb3I7CistI2VuZGlmCistCWd0a190b2dnbGVf dG9vbF9idXR0b25fc2V0X2FjdGl2ZShlLT50b29saXRlbXMuYm9sZCwgc3RhdGUuYm9sZCk7Cist CWd0a190b2dnbGVfdG9vbF9idXR0b25fc2V0X2FjdGl2ZShlLT50b29saXRlbXMuaXRhbGljLCBz dGF0ZS5pdGFsaWMpOworLQlndGtfdG9nZ2xlX3Rvb2xfYnV0dG9uX3NldF9hY3RpdmUoZS0+dG9v bGl0ZW1zLnVuZGVybGluZSwgc3RhdGUudW5kZXJsaW5lKTsKKy0JZ3RrX3RvZ2dsZV90b29sX2J1 dHRvbl9zZXRfYWN0aXZlKGUtPnRvb2xpdGVtcy5zdHJpa2UsIHN0YXRlLnN0cmlrZSk7CistCWd0 a19jb21ib19ib3hfc2V0X2FjdGl2ZSgoR3RrQ29tYm9Cb3ggKillLT50b29saXRlbXMuY2IsIHN0 YXRlLnN0eWxlKTsKKy0KKy0JaWYgKHN0YXRlLmNvbG9yKSB7CistCQlYSV9tZXNzYWdlKCgic3Rh dGUuY29sb3I6ICVzIiwgc3RhdGUuY29sb3IpKTsKKy0jaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywg NCwgMCkKKy0JCWlmIChnZGtfcmdiYV9wYXJzZSgmcmdiYSwgc3RhdGUuY29sb3IpKQorLQkJCWd0 a19jb2xvcl9jaG9vc2VyX3NldF9yZ2JhKChHdGtDb2xvckNob29zZXIgKikKKy0JCQkJCQkgICBl LT50b29saXRlbXMuY29sb3IsCistCQkJCQkJICAgJnJnYmEpOworLSNlbHNlCistCQlpZiAoZ2Rr X2NvbG9yX3BhcnNlKHN0YXRlLmNvbG9yLCAmY29sb3IpKQorLQkJCWd0a19jb2xvcl9idXR0b25f c2V0X2NvbG9yKChHdGtDb2xvckJ1dHRvbiAqKQorLQkJCQkJCSAgIGUtPnRvb2xpdGVtcy5jb2xv ciwKKy0JCQkJCQkgICAmY29sb3IpOworLSNlbmRpZgorLQl9CisgfQorIAorIEdfTU9EVUxFX0VY UE9SVCB2b2lkCisgY29sb3JidXR0b24xX2NvbG9yX3NldF9jYihHdGtDb2xvckJ1dHRvbiAqd2lk Z2V0LCBFRElUT1IgKmUpCisgeworLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA0LCAwKQorLQlH ZGtSR0JBIGNvbG9yOworLSNlbHNlCistCUdka0NvbG9yIGNvbG9yOworLSNlbmRpZgorLQlnY2hh ciAqY29sb3Jfc3RyOworLQlnY2hhciAqZm9yZWNvbG9yID0gTlVMTDsKKy0KKy0jaWYgR1RLX0NI RUNLX1ZFUlNJT04oMywgNCwgMCkKKy0JZ3RrX2NvbG9yX2Nob29zZXJfZ2V0X3JnYmEoKEd0a0Nv bG9yQ2hvb3NlciAqKXdpZGdldCwgJmNvbG9yKTsKKy0JY29sb3Jfc3RyID0gZ2RrX3JnYmFfdG9f c3RyaW5nKCZjb2xvcik7CistI2Vsc2UKKy0JZ3RrX2NvbG9yX2J1dHRvbl9nZXRfY29sb3IoKEd0 a0NvbG9yQnV0dG9uICopd2lkZ2V0LCAmY29sb3IpOworLQkvKiBGSVhNRTogdWdseSBuZWVkIHNv bWV0aGluZyBiZXR0ZXIgKi8KKy0JY29sb3Jfc3RyID0gZ19zdHJkdXBfcHJpbnRmKCJyZ2IoJXUs JXUsJXUpIiwgY29sb3IucmVkID4+IDgsIGNvbG9yLmdyZWVuID4+IDgsIGNvbG9yLmJsdWUgPj4g OCk7CistI2VuZGlmCistCWZvcmVjb2xvciA9IGdfc3RyZHVwX3ByaW50ZigiZG9jdW1lbnQuZXhl Y0NvbW1hbmQoJ2ZvcmVjb2xvcicsIG51bGwsICclcycpOyIsIGNvbG9yX3N0cik7CistCWVkaXRv cl9leGVjdXRlX3NjcmlwdChmb3JlY29sb3IsIGUpOworLQlnX2ZyZWUoZm9yZWNvbG9yKTsKKy0J Z19mcmVlKGNvbG9yX3N0cik7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgY29sb3Ji dXR0b25faGlnaGxpZ2h0X2NvbG9yX3NldF9jYihHdGtDb2xvckJ1dHRvbiAqd2lkZ2V0LCBFRElU T1IgKmUpCisgeworLQorLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA0LCAwKQorLQlHZGtSR0JB IGNvbG9yOworLSNlbHNlCistCUdka0NvbG9yIGNvbG9yOworLSNlbmRpZgorLQlnY2hhciAqY29s b3Jfc3RyOworLQlnY2hhciAqaGlnaGxpZ2h0Y29sb3IgPSBOVUxMOworLQorLSNpZiBHVEtfQ0hF Q0tfVkVSU0lPTigzLCA0LCAwKQorLQlndGtfY29sb3JfY2hvb3Nlcl9nZXRfcmdiYSgoR3RrQ29s b3JDaG9vc2VyICopd2lkZ2V0LCAmY29sb3IpOworLQljb2xvcl9zdHIgPSBnZGtfcmdiYV90b19z dHJpbmcoJmNvbG9yKTsKKy0jZWxzZQorLQlndGtfY29sb3JfYnV0dG9uX2dldF9jb2xvcigoR3Rr Q29sb3JCdXR0b24gKil3aWRnZXQsICZjb2xvcik7CistCS8qIEZJWE1FOiB1Z2x5IG5lZWQgc29t ZXRoaW5nIGJldHRlciAqLworLQljb2xvcl9zdHIgPSBnX3N0cmR1cF9wcmludGYoInJnYigldSwl dSwldSkiLCBjb2xvci5yZWQgPj4gOCwgY29sb3IuZ3JlZW4gPj4gOCwgY29sb3IuYmx1ZSA+PiA4 KTsKKy0jZW5kaWYKKy0JaGlnaGxpZ2h0Y29sb3IgPSBnX3N0cmR1cF9wcmludGYoImRvY3VtZW50 LmV4ZWNDb21tYW5kKCdiYWNrQ29sb3InLCBudWxsLCAnJXMnKTsiLCBjb2xvcl9zdHIpOworLQll ZGl0b3JfZXhlY3V0ZV9zY3JpcHQoaGlnaGxpZ2h0Y29sb3IsIGUpOworLQlnX2ZyZWUoaGlnaGxp Z2h0Y29sb3IpOworLQlnX2ZyZWUoY29sb3Jfc3RyKTsKKy19CistCistc3RhdGljIGdjaGFyICpn ZXRfZm9udF9zaXplX2Zyb21fbmFtZShHU3RyaW5nICpmb250bmFtZSkKKy17CistCWdjaGFyIGJ1 Zls4MF07CistCWdpbnQgbGVuLCBpID0gMCwgaiA9IDA7CistCistCWxlbiA9IGZvbnRuYW1lLT5s ZW47CistCVhJX21lc3NhZ2UoKCJcbmxlbmd0aDogJWRcbiIsIGxlbikpOworLQlmb3IgKGkgPSAw OyAoaSA8IDc5ICYmIGkgPCBsZW4pOyBpKyspIHsKKy0JCWlmIChpc2RpZ2l0KGZvbnRuYW1lLT5z dHJbaV0pKSB7CistCQkJWElfbWVzc2FnZSgoIlxuXG5mb250bmFtZS0+c3RyW2ldOiAlYyIsCist CQkJCSAgICBmb250bmFtZS0+c3RyW2ldKSk7CistCQkJYnVmW2pdID0gZm9udG5hbWUtPnN0cltp XTsKKy0JCQlidWZbaiArIDFdID0gJ1wwJzsKKy0JCQlqKys7CistCQl9CistCX0KKy0JcmV0dXJu IGdfc3RyZHVwKGJ1Zik7CisgfQorIAorLUdfTU9EVUxFX0VYUE9SVCB2b2lkCistYWN0aW9uX2Zv bnRfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKy17CistCUd0a1dp ZGdldCAqZGlhbG9nOworLQlnY2hhciAqc2VsZWN0ZWRfdGV4dCA9IE5VTEw7CistCWdjaGFyICpz aXplID0gTlVMTDsKKy0jaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMiwgMCkKKy0JZGlhbG9nID0g Z3RrX2ZvbnRfY2hvb3Nlcl9kaWFsb2dfbmV3KCJTZWxlY3QgZm9udCIsIE5VTEwpOworLQlndGtf Zm9udF9jaG9vc2VyX3NldF9mb250KChHdGtGb250Q2hvb3NlciAqKWRpYWxvZywKKy0jZWxzZQor LQlkaWFsb2cgPSBndGtfZm9udF9zZWxlY3Rpb25fZGlhbG9nX25ldygiU2VsZWN0IGZvbnQiKTsK Ky0JZ3RrX2ZvbnRfc2VsZWN0aW9uX2RpYWxvZ19zZXRfZm9udF9uYW1lKChHdGtGb250U2VsZWN0 aW9uRGlhbG9nICopCistCQkJCQkJZGlhbG9nLAorLSNlbmRpZgorLQkJCQkgICJEcm9pZCBTYW5z IDE0Iik7CistCistCWlmIChndGtfZGlhbG9nX3J1bihHVEtfRElBTE9HKGRpYWxvZykpID09IEdU S19SRVNQT05TRV9PSykgeworLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAyLCAwKQorLQkJY29u c3QgZ2NoYXIgKmZvbnRuYW1lID0gZ3RrX2ZvbnRfY2hvb3Nlcl9nZXRfZm9udCgoR3RrRm9udENo b29zZXIgKilkaWFsb2cpOworLSNlbHNlCistCQljb25zdCBnY2hhciAqZm9udG5hbWUgPSBndGtf Zm9udF9zZWxlY3Rpb25fZGlhbG9nX2dldF9mb250X25hbWUoKEd0a0ZvbnRTZWxlY3Rpb25EaWFs b2cgKilkaWFsb2cpOworLSNlbmRpZgorLQkJR1N0cmluZyAqbmFtZSA9IGdfc3RyaW5nX25ldyhm b250bmFtZSk7CistCQlzaXplID0gZ2V0X2ZvbnRfc2l6ZV9mcm9tX25hbWUobmFtZSk7CistCQln X3N0cmluZ19mcmVlKG5hbWUsIFRSVUUpOworLQorLQkJc2VsZWN0ZWRfdGV4dCA9IGVkaXRvcl9n ZXRfc2VsZWN0ZWRfdGV4dChlKTsKKy0jaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgMiwgMCkKKy0J CVBhbmdvRm9udERlc2NyaXB0aW9uICpmb250X2Rlc2NyaXB0aW9uID0KKy0JCQlndGtfZm9udF9j aG9vc2VyX2dldF9mb250X2Rlc2MoKEd0a0ZvbnRDaG9vc2VyICopCistCQkJCQkJICAgICAgIGRp YWxvZyk7CistCQlmb250bmFtZSA9IHBhbmdvX2ZvbnRfZGVzY3JpcHRpb25fZ2V0X2ZhbWlseShm b250X2Rlc2NyaXB0aW9uKTsKKy0jZWxzZQorLQkJUGFuZ29Gb250RGVzY3JpcHRpb24gKmZvbnRf ZGVzY3JpcHRpb24gPQorLQkJCXBhbmdvX2ZvbnRfZGVzY3JpcHRpb25fZnJvbV9zdHJpbmcoZm9u dG5hbWUpOworLQkJZm9udG5hbWUgPSBwYW5nb19mb250X2Rlc2NyaXB0aW9uX2dldF9mYW1pbHko Zm9udF9kZXNjcmlwdGlvbik7CistI2VuZGlmCistCistCQlnY2hhciAqc2NyaXB0ID0gZ19zdHJk dXBfcHJpbnRmKCI8U1BBTiBTVFlMRT1cImZvbnQtZmFtaWx5OiVzO2ZvbnQtc2l6ZTolc3B4O1wi PiVzPC9TUEFOPiIsCistCQkJCQkJZm9udG5hbWUsIHNpemUsIHNlbGVjdGVkX3RleHQpOworLQor LQkJZWRpdG9yX2luc2VydF9odG1sKHNjcmlwdCwgZSk7CistCQlnX2ZyZWUoc2NyaXB0KTsKKy0J fQorLQlpZiAoc2l6ZSkKKy0JCWdfZnJlZShzaXplKTsKKy0JaWYgKHNlbGVjdGVkX3RleHQpCist CQlnX2ZyZWUoc2VsZWN0ZWRfdGV4dCk7CistCWd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOwor LX0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAorIGZpbmRfcmVwbGFjZV9yZXNwb25zZV9jYihH dGtEaWFsb2cgKmRpYWxvZywgZ2ludCByZXNwb25zZV9pZCwgRURJVE9SICplKQorIHsKKy0Jc3dp dGNoIChyZXNwb25zZV9pZCkgeworLQljYXNlIEdUS19SRVNQT05TRV9DQU5DRUw6CistCQlndGtf d2lkZ2V0X2hpZGUoZmluZF9kaWFsb2cud2luZG93KTsKKy0JCWJyZWFrOworLQljYXNlIDE6Cist CQllZGl0b3JfZmluZF9zdHJpbmcoKGdjaGFyICopCistCQkJCSAgIGd0a19lbnRyeV9nZXRfdGV4 dChHVEtfRU5UUlkoZmluZF9kaWFsb2cuZmluZF9lbnRyeSkpLAorLQkJCQkgICBlKTsKKy0JCWJy ZWFrOworLQljYXNlIDI6CistCQllZGl0b3JfcmVwbGFjZV9zdHJpbmcoKGdjaGFyICopCistCQkJ CSAgICAgIGd0a19lbnRyeV9nZXRfdGV4dChHVEtfRU5UUlkoZmluZF9kaWFsb2cuZmluZF9lbnRy eSkpLAorLQkJCQkgICAgICAoZ2NoYXIgKikKKy0JCQkJICAgICAgZ3RrX2VudHJ5X2dldF90ZXh0 KEdUS19FTlRSWShmaW5kX2RpYWxvZy5yZXBsYWNlX2VudHJ5KSksCistCQkJCSAgICAgIGUpOwor LQkJYnJlYWs7CistCWRlZmF1bHQ6CistCQlndGtfd2lkZ2V0X2hpZGUoZmluZF9kaWFsb2cud2lu ZG93KTsKKy0JCWJyZWFrOworLQl9CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgYWN0 aW9uX2ZpbmRfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKyB7Cist CWd0a193aWRnZXRfc2hvdyhmaW5kX2RpYWxvZy53aW5kb3cpOworLQlndGtfd2lkZ2V0X2hpZGUo ZmluZF9kaWFsb2cuYm94X3JlcGxhY2UpOworLQlndGtfd2lkZ2V0X2hpZGUoZmluZF9kaWFsb2cu YnV0dG9uX3JlcGxhY2UpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAorIGFjdGlvbl9y ZXBsYWNlX2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisgeworLQln dGtfd2lkZ2V0X3Nob3coZmluZF9kaWFsb2cud2luZG93KTsKKy0JZ3RrX3dpZGdldF9zaG93KGZp bmRfZGlhbG9nLmJveF9yZXBsYWNlKTsKKy0JZ3RrX3dpZGdldF9zaG93KGZpbmRfZGlhbG9nLmJ1 dHRvbl9yZXBsYWNlKTsKKy19CistCistc3RhdGljIHZvaWQgaGFuZGxlX2Vycm9yKEdFcnJvciAq KmVycm9yKQorLXsKKy0JaWYgKCplcnJvciAhPSBOVUxMKSB7CistCQlnX3dhcm5pbmcoIiVzIiwg KCplcnJvciktPm1lc3NhZ2UpOworLQkJZ19jbGVhcl9lcnJvcihlcnJvcik7CistCX0KKy19Cist Cistc3RhdGljIHZvaWQgZG9fZXhpdChFRElUT1IgKmUpCisteworLQlpZiAoZS0+ZmlsZW5hbWUp IHsKKy0JCWdfZnJlZShlLT5maWxlbmFtZSk7CistCX0KKy0JaWYgKGUtPm1vZHVsZSkgeworLQkJ Z19mcmVlKGUtPm1vZHVsZSk7CistCX0KKy0JaWYgKGUtPmtleSkgeworLQkJZ19mcmVlKGUtPmtl eSk7CistCX0KKy0JaWYgKGUtPndpbmRvdykKKy0JCWd0a193aWRnZXRfZGVzdHJveShlLT53aW5k b3cpOworLQlnX2ZyZWUoZSk7CistfQorLQorLXN0YXRpYyB2b2lkIHJlY2VudF9pdGVtX2NiKEd0 a1JlY2VudENob29zZXIgKmNob29zZXIsIEVESVRPUiAqZSkKKy17CistCWdjaGFyICpmaWxlX3Vy aSA9IGd0a19yZWNlbnRfY2hvb3Nlcl9nZXRfY3VycmVudF91cmkoY2hvb3Nlcik7CistCistCVhJ X21lc3NhZ2UoKCJmaWxlX3VyaTogJXMiLCBmaWxlX3VyaSkpOworLQlpZiAoZS0+ZmlsZW5hbWUp CistCQlnX2ZyZWUoZS0+ZmlsZW5hbWUpOworLQllLT5maWxlbmFtZSA9IGdfc3RyZHVwKGZpbGVf dXJpKTsKKy0KKy0JLy9lZGl0b3Jfb3Blbl9yZWNlbnQgKGZpbGVfdXJpLCBlKTsKKy0JX2xvYWRf ZmlsZShlLCBmaWxlX3VyaSk7CistCXhtbF9zZXRfdmFsdWUoIlhpcGhvcyIsICJzdHVkeXBhZCIs ICJsYXN0ZmlsZSIsIGUtPmZpbGVuYW1lKTsKKy0Jc2V0dGluZ3Muc3R1ZHlwYWRmaWxlbmFtZSA9 IHhtbF9nZXRfdmFsdWUoInN0dWR5cGFkIiwgImxhc3RmaWxlIik7CistCistCWNoYW5nZV93aW5k b3dfdGl0bGUoZS0+d2luZG93LCBlLT5maWxlbmFtZSk7CistfQorLQorLXN0YXRpYyB2b2lkIGNo YW5nZV93aW5kb3dfdGl0bGUoR3RrV2lkZ2V0ICp3aW5kb3csIGNvbnN0IGdjaGFyICp3aW5kb3df dGl0bGUpCisteworLQlndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksIHdp bmRvd190aXRsZSk7CistfQorLQorLXN0YXRpYyBHdGtQcmludE9wZXJhdGlvblJlc3VsdAorLXBy aW50KFdlYktpdFdlYlZpZXcgKmh0bWwsIEd0a1ByaW50T3BlcmF0aW9uQWN0aW9uIGFjdGlvbikK Ky17CistCUd0a1ByaW50T3BlcmF0aW9uICpvcGVyYXRpb247CistCUd0a1ByaW50T3BlcmF0aW9u UmVzdWx0IHJlc3VsdDsKKy0JR0Vycm9yICplcnJvciA9IE5VTEw7CistCVdlYktpdFdlYkZyYW1l ICpmcmFtZTsKKy0KKy0JZnJhbWUgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X21haW5fZnJhbWUoaHRt bCk7CistCW9wZXJhdGlvbiA9IGd0a19wcmludF9vcGVyYXRpb25fbmV3KCk7CistCistCXJlc3Vs dCA9IHdlYmtpdF93ZWJfZnJhbWVfcHJpbnRfZnVsbChmcmFtZSwgb3BlcmF0aW9uLCBhY3Rpb24s ICZlcnJvcik7CistCistCWdfb2JqZWN0X3VucmVmKG9wZXJhdGlvbik7CistCWhhbmRsZV9lcnJv cigmZXJyb3IpOworLQorLQlyZXR1cm4gcmVzdWx0OworLX0KKy0KKy1zdGF0aWMgZ2ludCBvcGVu X2RpYWxvZyhFRElUT1IgKmUpCisteworLQlHdGtXaWRnZXQgKmRpYWxvZzsKKy0JZ2ludCByZXNw b25zZTsKKy0KKy0JZGlhbG9nID0gZ3RrX2ZpbGVfY2hvb3Nlcl9kaWFsb2dfbmV3KF8oIk9wZW4i KSwgR1RLX1dJTkRPVyhlLT53aW5kb3cpLAorLQkJCQkJICAgICBHVEtfRklMRV9DSE9PU0VSX0FD VElPTl9PUEVOLAorLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAxMCwgMCkKKy0JCQkJCSAgICAg Il9DYW5jZWwiLCBHVEtfUkVTUE9OU0VfQ0FOQ0VMLAorLQkJCQkJICAgICAiX09wZW4iLCBHVEtf UkVTUE9OU0VfQUNDRVBULAorLSNlbHNlCistCQkJCQkgICAgIEdUS19TVE9DS19DQU5DRUwsCist CQkJCQkgICAgIEdUS19SRVNQT05TRV9DQU5DRUwsCistCQkJCQkgICAgIEdUS19TVE9DS19PUEVO LAorLQkJCQkJICAgICBHVEtfUkVTUE9OU0VfQUNDRVBULAorLSNlbmRpZgorLQkJCQkJICAgICBO VUxMKTsKKy0KKy0JZ3RrX2ZpbGVfY2hvb3Nlcl9zZXRfY3VycmVudF9mb2xkZXIoR1RLX0ZJTEVf Q0hPT1NFUihkaWFsb2cpLCBzZXR0aW5ncy5zdHVkeXBhZGRpcik7CistCistCXJlc3BvbnNlID0g Z3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKTsKKy0KKy0JaWYgKHJlc3BvbnNlID09 IEdUS19SRVNQT05TRV9BQ0NFUFQpIHsKKy0JCWdjaGFyICpuZXdfZmlsZW5hbWU7CistCistCQlu ZXdfZmlsZW5hbWUgPSBndGtfZmlsZV9jaG9vc2VyX2dldF9maWxlbmFtZShHVEtfRklMRV9DSE9P U0VSKGRpYWxvZykpOworLQkJX2xvYWRfZmlsZShlLCBuZXdfZmlsZW5hbWUpOworLQkJZ19mcmVl KG5ld19maWxlbmFtZSk7CistCX0KKy0KKy0JZ3RrX3dpZGdldF9kZXN0cm95KGRpYWxvZyk7Cist CistCXJldHVybiByZXNwb25zZTsKKyB9CisgCisgR19NT0RVTEVfRVhQT1JUIHZvaWQgYWN0aW9u X3ByaW50X2NiKEd0a0FjdGlvbiAqYWN0aW9uLCBFRElUT1IgKmUpCisgeworLQlwcmludChXRUJL SVRfV0VCX1ZJRVcoZS0+aHRtbF93aWRnZXQpLAorLQkgICAgICBHVEtfUFJJTlRfT1BFUkFUSU9O X0FDVElPTl9QUklOVF9ESUFMT0cpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZCBhY3Rp b25fcHJpbnRfcHJldmlld19jYihHdGtBY3Rpb24gKmFjdGlvbiwgRURJVE9SICplKQorIHsKKy0J cHJpbnQoV0VCS0lUX1dFQl9WSUVXKGUtPmh0bWxfd2lkZ2V0KSwKKy0JICAgICAgR1RLX1BSSU5U X09QRVJBVElPTl9BQ1RJT05fUFJFVklFVyk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lk IGFjdGlvbl9xdWl0X2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisg eworLQlkZWxldGVfZXZlbnQoTlVMTCwgTlVMTCwgZSk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9S VCB2b2lkIGFjdGlvbl9vcGVuX2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1Ig KmUpCisgeworLQlvcGVuX2RpYWxvZyhlKTsKKyB9CisgCisgR19NT0RVTEVfRVhQT1JUIHZvaWQg YWN0aW9uX3NhdmVfYWN0aXZhdGVfY2IoR3RrV2lkZ2V0ICp3aWRnZXQsIEVESVRPUiAqZSkKKyB7 CistCXN3aXRjaCAoZS0+dHlwZSkgeworLQljYXNlIFNUVURZUEFEX0VESVRPUjoKKy0JCV9zYXZl X2ZpbGUoZSk7CistCQlicmVhazsKKy0JY2FzZSBOT1RFX0VESVRPUjoKKy0JCV9zYXZlX25vdGUo ZSk7CistCQlicmVhazsKKy0JY2FzZSBCT09LX0VESVRPUjoKKy0JCV9zYXZlX2Jvb2soZSk7Cist CQlicmVhazsKKy0JZGVmYXVsdDoKKy0JCVhJX21lc3NhZ2UoKCJcbmFjdGlvbl9zYXZlX2NiIG9v cHMhXG4iKSk7CistCQlicmVhazsKKy0JfQorIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZCBh Y3Rpb25fbmV3X2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisgeyAv KiBmb3Igc3R1ZHlwYWQgb25seSAqLworLQlnY2hhciAqZmlsZW5hbWUgPSBOVUxMOworLQorLQlp ZiAoZS0+aXNfY2hhbmdlZCkKKy0JCWFza19hYm91dF9zYXZpbmcoZSk7CistCistCWZpbGVuYW1l ID0gZ19zdHJkdXBfcHJpbnRmKCIlcy8lcyIsIHNldHRpbmdzLmdTd29yZERpciwgInN0dWR5cGFk LnNwdCIpOworLQorLQlfbG9hZF9maWxlKGUsIGZpbGVuYW1lKTsKKy0KKy0JaWYgKGUtPmZpbGVu YW1lKQorLQkJZ19mcmVlKGUtPmZpbGVuYW1lKTsKKy0JZS0+ZmlsZW5hbWUgPSBnX3N0cmR1cChf KCJVbnRpdGxlZCBkb2N1bWVudCIpKTsKKy0KKy0JeG1sX3NldF92YWx1ZSgiWGlwaG9zIiwgInN0 dWR5cGFkIiwgImxhc3RmaWxlIiwgZS0+ZmlsZW5hbWUpOworLQlzZXR0aW5ncy5zdHVkeXBhZGZp bGVuYW1lID0geG1sX2dldF92YWx1ZSgic3R1ZHlwYWQiLCAibGFzdGZpbGUiKTsKKy0JY2hhbmdl X3dpbmRvd190aXRsZShlLT53aW5kb3csIGUtPmZpbGVuYW1lKTsKKy0JZS0+aXNfY2hhbmdlZCA9 IFRSVUU7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkCisgYWN0aW9uX2luc2VydF9zd29y ZF9saW5rX2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBncG9pbnRlciBkYXRhKQorIHsK Ky0JZWRpdG9yX2xpbmtfZGlhbG9nKGRhdGEpOyAvL2VkaXRvcl9pbnNlcnRfc3dvcmRfbGluaygp OworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAorIGFjdGlvbl9pbnNlcnRfbGlua19hY3Rp dmF0ZV9jYihHdGtXaWRnZXQgKndpZGdldCwgRURJVE9SICplKQorIHsKKy0JZWRpdG9yX2xpbmtf ZGlhbG9nKGUpOworIH0KKyAKKyBHX01PRFVMRV9FWFBPUlQgdm9pZAorIGFjdGlvbl9zYXZlX2Fz X2FjdGl2YXRlX2NiKEd0a1dpZGdldCAqd2lkZ2V0LCBFRElUT1IgKmUpCisgeworLQlpZiAoZS0+ ZmlsZW5hbWUpCistCQlnX2ZyZWUoZS0+ZmlsZW5hbWUpOworLQllLT5maWxlbmFtZSA9IE5VTEw7 CistCV9zYXZlX2ZpbGUoZSk7CisgfQorIAorIEdfTU9EVUxFX0VYUE9SVCB2b2lkIGNvbWJvX2Jv eF9jaGFuZ2VkX2NiKEd0a0NvbWJvQm94ICp3aWRnZXQsIEVESVRPUiAqZSkKKyB7CistCWdjaGFy ICpzY3JpcHQgPSBOVUxMOworLQlnaW50IGNob2ljZSA9IGd0a19jb21ib19ib3hfZ2V0X2FjdGl2 ZSh3aWRnZXQpOworLQkvKiB3ZSBuZWVkIHRoZSBsaW5lIG9mIHRleHQgd2hlcmUgdGhlIGN1cnNv ciBpcyAqLworLQkvL2V4dGVybiBCVVRUT05TX1NUQVRFIGJ1dHRvbnNfc3RhdGU7CistCistCWlm IChidXR0b25zX3N0YXRlLm5vY2hhbmdlKQorLQkJcmV0dXJuOworLQorLQlzd2l0Y2ggKGNob2lj ZSkgeworLQljYXNlIDA6IC8qIE5vcm1hbCAgKi8KKy0JCXNjcmlwdCA9ICJkb2N1bWVudC5leGVj Q29tbWFuZCgnZm9ybWF0QmxvY2snLCBmYWxzZSwgXCJkaXZcIik7IjsKKy0JCWJyZWFrOworLQor LQljYXNlIDE6IC8qIEgxICAqLworLQkJc2NyaXB0ID0gImRvY3VtZW50LmV4ZWNDb21tYW5kKCdm b3JtYXRCbG9jaycsIG51bGwsIFwiSDFcIik7IjsKKy0JCWJyZWFrOworLQorLQljYXNlIDI6IC8q IEgyICovCistCQlzY3JpcHQgPSAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2Zvcm1hdEJsb2NrJywg bnVsbCwgXCJIMlwiKTsiOworLQkJYnJlYWs7CistCistCWNhc2UgMzogLyogSDMgICovCistCQlz Y3JpcHQgPSAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2Zvcm1hdEJsb2NrJywgbnVsbCwgXCJIM1wi KTsiOworLQkJYnJlYWs7CistCistCWNhc2UgNDogLyogSDQgICovCistCQlzY3JpcHQgPSAiZG9j dW1lbnQuZXhlY0NvbW1hbmQoJ2Zvcm1hdEJsb2NrJywgbnVsbCwgXCJINFwiKTsiOworLQkJYnJl YWs7CistCistCWNhc2UgNTogLyogSDUgKi8KKy0JCXNjcmlwdCA9ICJkb2N1bWVudC5leGVjQ29t bWFuZCgnZm9ybWF0QmxvY2snLCBudWxsLCBcIkg1XCIpOyI7CistCQlicmVhazsKKy0KKy0JY2Fz ZSA2OiAvKiBINiAgKi8KKy0JCXNjcmlwdCA9ICJkb2N1bWVudC5leGVjQ29tbWFuZCgnZm9ybWF0 QmxvY2snLCBudWxsLCBcIkg2XCIpOyI7CistCQlicmVhazsKKy0KKy0JY2FzZSA3OiAvKiBBZGRy ZXNzICAqLworLQkJc2NyaXB0ID0gImRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb3JtYXRCbG9jaycs IG51bGwsIFwiQUREUkVTU1wiKTsiOworLQkJYnJlYWs7CistCistCWNhc2UgODogLyogUHJlZm9y bWF0dGVkICAqLworLQkJc2NyaXB0ID0gImRvY3VtZW50LmV4ZWNDb21tYW5kKCdmb3JtYXRCbG9j aycsIG51bGwsIFwiUFJFXCIpOyI7CistCQlicmVhazsKKy0KKy0JY2FzZSA5OiAvKiBCdWxsZXRl ZCBMaXN0ICBpbnNlcnRVbm9yZGVyZWRMaXN0ICovCistCQlzY3JpcHQgPSAiZG9jdW1lbnQuZXhl Y0NvbW1hbmQoJ2luc2VydFVub3JkZXJlZExpc3QnLCBudWxsLCBcIlwiKTsiOworLQkJYnJlYWs7 CistCistCWNhc2UgMTA6IC8qIFJvbWFuIE51bWVyYWwgTGlzdCAgKi8KKy0JCXNjcmlwdCA9ICJk b2N1bWVudC5leGVjQ29tbWFuZCgnaW5zZXJ0SFRNTCcsIG51bGwsIFwiPE9MIHR5cGU9ST48TEk+ IDwvTEk+PC9PTD4gXCIpOyI7CistCQlicmVhazsKKy0KKy0JY2FzZSAxMTogLyogTnVtYmVyZWQg TGlzdCAgaW5zZXJ0T3JkZXJlZExpc3QgKi8KKy0JCXNjcmlwdCA9ICJkb2N1bWVudC5leGVjQ29t bWFuZCgnaW5zZXJ0T3JkZXJlZExpc3QnLCBudWxsLCBcIlwiKTsiOworLQkJYnJlYWs7CistCist CWNhc2UgMTI6IC8qIEFscGhhYmV0aWNhbCBMaXN0ICAqLworLQkJc2NyaXB0ID0gImRvY3VtZW50 LmV4ZWNDb21tYW5kKCdpbnNlcnRIVE1MJywgbnVsbCwgXCI8T0wgdHlwZT1BPjxMST4gPC9MST48 L09MPiBcIik7IjsKKy0JCWJyZWFrOworLQorLQlkZWZhdWx0OgorLQkJYnJlYWs7CistCX0KKy0K Ky0JaWYgKHNjcmlwdCkgeworLQkJWElfbWVzc2FnZSgoIiVzIiwgc2NyaXB0KSk7CistCQllZGl0 b3JfZXhlY3V0ZV9zY3JpcHQoc2NyaXB0LCBlKTsKKy0JfQorLX0KKy0KKy0vKiBuZWVkIG5vdGUg dG9vbGJhcnMgd2hlbiB0eXBlIGlzIG5vdGUgKi8KKy1zdGF0aWMgR3RrV2lkZ2V0ICplZGl0b3Jf bmV3KGNvbnN0IGdjaGFyICp0aXRsZSwgRURJVE9SICplKQorLXsKKy0JR3RrV2lkZ2V0ICp3aW5k b3c7CistCUd0a1dpZGdldCAqc2Nyb2xsd2luZG93OworLQlHdGtXaWRnZXQgKnN0YXR1c2JhcjsK Ky0JR3RrQnVpbGRlciAqYnVpbGRlcjsKKy0JZ2NoYXIgKmdidWlsZGVyX2ZpbGU7CistCUdFcnJv ciAqZXJyb3IgPSBOVUxMOworLQlHdGtNZW51SXRlbSAqaXRlbTsKKy0JR3RrV2lkZ2V0ICpyZWNl bnRfaXRlbTsKKy0KKy0JYnV0dG9uc19zdGF0ZS5ub2NoYW5nZSA9IDE7CistCistCWdidWlsZGVy X2ZpbGUgPSBndWlfZ2VuZXJhbF91c2VyX2ZpbGUoCistI2lmZGVmIFVTRV9HVEtfMworLQkgICAg Imd0a193ZWJlZGl0LnVpIgorLSNlbHNlCistCSAgICAiZ3RrMl93ZWJlZGl0LnVpIgorLSNlbmRp ZgorLQkgICAgLAorLQkgICAgRkFMU0UpOworLQlidWlsZGVyID0gZ3RrX2J1aWxkZXJfbmV3KCk7 CistCistCWlmICghZ3RrX2J1aWxkZXJfYWRkX2Zyb21fZmlsZShidWlsZGVyLCBnYnVpbGRlcl9m aWxlLCAmZXJyb3IpKSB7CistCQlnX3dhcm5pbmcoIkNvdWxkbid0IGxvYWQgYnVpbGRlciBmaWxl OiAlcyIsCistCQkJICBlcnJvci0+bWVzc2FnZSk7CistCQlnX2Vycm9yX2ZyZWUoZXJyb3IpOwor LQl9CistCistCXdpbmRvdyA9IEdUS19XSURHRVQoZ3RrX2J1aWxkZXJfZ2V0X29iamVjdChidWls ZGVyLCAid2luZG93IikpOworLQllLT53aW5kb3cgPSB3aW5kb3c7CistCWd0a193aW5kb3dfc2V0 X3RpdGxlKEdUS19XSU5ET1cod2luZG93KSwgdGl0bGUpOworLQorLQlzdGF0dXNiYXIgPSBHVEtf V0lER0VUKGd0a19idWlsZGVyX2dldF9vYmplY3QoYnVpbGRlciwgInN0YXR1c2JhcjEiKSk7Cist CWd0a193aWRnZXRfaGlkZShzdGF0dXNiYXIpOworLQorLQllLT50b29saXRlbXMub3V0bGluZV9s ZXZlbCA9IDA7CistCWUtPnRvb2xpdGVtcy5ib2xkID0gR1RLX1RPR0dMRV9UT09MX0JVVFRPTihn dGtfYnVpbGRlcl9nZXRfb2JqZWN0KGJ1aWxkZXIsICJ0b29sYnV0dG9uX2JvbGQiKSk7CistCWUt PnRvb2xpdGVtcy5pdGFsaWMgPSBHVEtfVE9HR0xFX1RPT0xfQlVUVE9OKGd0a19idWlsZGVyX2dl dF9vYmplY3QoYnVpbGRlciwgInRvb2xidXR0b25faXRhbGljIikpOworLQllLT50b29saXRlbXMu dW5kZXJsaW5lID0gR1RLX1RPR0dMRV9UT09MX0JVVFRPTihndGtfYnVpbGRlcl9nZXRfb2JqZWN0 KGJ1aWxkZXIsICJ0b29sYnV0dG9udW5kZXJsaW5lIikpOworLQllLT50b29saXRlbXMuc3RyaWtl ID0gR1RLX1RPR0dMRV9UT09MX0JVVFRPTihndGtfYnVpbGRlcl9nZXRfb2JqZWN0KGJ1aWxkZXIs ICJ0b29sYnV0dG9uX3N0cmlrZXRocm91Z2giKSk7CistCWUtPnRvb2xpdGVtcy5vcGVuID0gR1RL X1RPT0xfQlVUVE9OKGd0a19idWlsZGVyX2dldF9vYmplY3QoYnVpbGRlciwgInRvb2xidXR0b25f b3BlbiIpKTsKKy0JZS0+dG9vbGl0ZW1zLm5ld2RvYyA9IEdUS19UT09MX0JVVFRPTihndGtfYnVp bGRlcl9nZXRfb2JqZWN0KGJ1aWxkZXIsICJ0b29sYnV0dG9uX25ldyIpKTsKKy0JZS0+dG9vbGl0 ZW1zLmRlbGV0ZWRvYyA9IEdUS19UT09MX0JVVFRPTihndGtfYnVpbGRlcl9nZXRfb2JqZWN0KGJ1 aWxkZXIsICJ0b29sYnV0dG9uX2RlbGV0ZSIpKTsKKy0JZS0+dG9vbGl0ZW1zLmNvbG9yID0gR1RL X0NPTE9SX0JVVFRPTihndGtfYnVpbGRlcl9nZXRfb2JqZWN0KGJ1aWxkZXIsICJjb2xvcmJ1dHRv bjEiKSk7CistCWUtPnRvb2xpdGVtcy5jYiA9IEdUS19DT01CT19CT1hfVEVYVChndGtfYnVpbGRl cl9nZXRfb2JqZWN0KGJ1aWxkZXIsICJjb21ib2JveHRleHQxIikpOworLQorLQlndGtfY29tYm9f Ym94X3NldF9hY3RpdmUoKEd0a0NvbWJvQm94ICopZS0+dG9vbGl0ZW1zLmNiLCAwKTsKKy0KKy0J aXRlbSA9IEdUS19NRU5VX0lURU0oZ3RrX2J1aWxkZXJfZ2V0X29iamVjdChidWlsZGVyLCAibWVu dWl0ZW1fcmVjZW50IikpOworLQorLQlzd2l0Y2ggKGUtPnR5cGUpIHsKKy0JY2FzZSBTVFVEWVBB RF9FRElUT1I6CistCQlndGtfd2lkZ2V0X2hpZGUoR1RLX1dJREdFVChlLT50b29saXRlbXMuZGVs ZXRlZG9jKSk7CistCistCQlyZWNlbnRfaXRlbSA9IGd0a19yZWNlbnRfY2hvb3Nlcl9tZW51X25l dygpOworLQkJZ19zaWduYWxfY29ubmVjdChHX09CSkVDVChyZWNlbnRfaXRlbSksICJpdGVtLWFj dGl2YXRlZCIsCistCQkJCSBHX0NBTExCQUNLKHJlY2VudF9pdGVtX2NiKSwgZSk7CistCQlndGtf bWVudV9pdGVtX3NldF9zdWJtZW51KGl0ZW0sIHJlY2VudF9pdGVtKTsKKy0JCWJyZWFrOworLQlj YXNlIE5PVEVfRURJVE9SOgorLQkJZ3RrX3dpZGdldF9oaWRlKEdUS19XSURHRVQoZS0+dG9vbGl0 ZW1zLm9wZW4pKTsKKy0JCWd0a193aWRnZXRfaGlkZShHVEtfV0lER0VUKGUtPnRvb2xpdGVtcy5u ZXdkb2MpKTsKKy0JCWd0a193aWRnZXRfaGlkZShHVEtfV0lER0VUKGl0ZW0pKTsKKy0JCWJyZWFr OworLQljYXNlIEJPT0tfRURJVE9SOgorLQkJZ3RrX3dpZGdldF9oaWRlKEdUS19XSURHRVQoZS0+ dG9vbGl0ZW1zLm9wZW4pKTsKKy0JCWd0a193aWRnZXRfaGlkZShHVEtfV0lER0VUKGUtPnRvb2xp dGVtcy5uZXdkb2MpKTsKKy0JCWd0a193aWRnZXRfaGlkZShHVEtfV0lER0VUKGl0ZW0pKTsKKy0J CWJyZWFrOworLQl9CistCistCWUtPm5hdmJhcl9ib3ggPSBHVEtfV0lER0VUKGd0a19idWlsZGVy X2dldF9vYmplY3QoYnVpbGRlciwgImJveF9uYXZiYXIiKSk7CistCWUtPmJveCA9IEdUS19XSURH RVQoZ3RrX2J1aWxkZXJfZ2V0X29iamVjdChidWlsZGVyLCAidmJveDEiKSk7CistCistCXNjcm9s bHdpbmRvdyA9IEdUS19XSURHRVQoZ3RrX2J1aWxkZXJfZ2V0X29iamVjdChidWlsZGVyLCAic2Ny b2xsZWR3aW5kb3cxIikpOworLQljcmVhdGVfZWRpdG9yX3dpbmRvdyhzY3JvbGx3aW5kb3csIGUp OworLQllLT5pc19jaGFuZ2VkID0gRkFMU0U7CistCistCS8qIFRoaXMgaXMgaW1wb3J0YW50ICov CistCWd0a19idWlsZGVyX2Nvbm5lY3Rfc2lnbmFscyhidWlsZGVyLCAoRURJVE9SICopZSk7Cist CistCWZpbmRfZGlhbG9nLndpbmRvdyA9IEdUS19XSURHRVQoZ3RrX2J1aWxkZXJfZ2V0X29iamVj dChidWlsZGVyLCAiZGlhbG9nX2ZpbmRfcmVwbGFjZSIpKTsKKy0JZmluZF9kaWFsb2cuZmluZF9l bnRyeSA9IEdUS19XSURHRVQoZ3RrX2J1aWxkZXJfZ2V0X29iamVjdChidWlsZGVyLCAiZW50cnkx IikpOworLQlmaW5kX2RpYWxvZy5yZXBsYWNlX2VudHJ5ID0gR1RLX1dJREdFVChndGtfYnVpbGRl cl9nZXRfb2JqZWN0KGJ1aWxkZXIsICJlbnRyeTIiKSk7CistCWZpbmRfZGlhbG9nLmJveF9yZXBs YWNlID0gR1RLX1dJREdFVChndGtfYnVpbGRlcl9nZXRfb2JqZWN0KGJ1aWxkZXIsICJib3g0Iikp OworLQlmaW5kX2RpYWxvZy5idXR0b25fcmVwbGFjZSA9IEdUS19XSURHRVQoZ3RrX2J1aWxkZXJf Z2V0X29iamVjdChidWlsZGVyLCAiYnV0dG9uX3JlcGxhY2UiKSk7CistCistCWdfb2JqZWN0X3Vu cmVmKGJ1aWxkZXIpOworLQorLQlyZXR1cm4gd2luZG93OworLX0KKy0KKy1zdGF0aWMgdm9pZCBf c2F2ZV9ub3RlKEVESVRPUiAqZSkKKy17CistCUdTdHJpbmcgKmRhdGEgPSBnX3N0cmluZ19uZXco IiIpOworLQorLQllZGl0b3JfZ2V0X2RvY3VtZW50X2NvbnRlbnQoZGF0YSwgZSk7CistCW1haW5f c2F2ZV9ub3RlKGUtPm1vZHVsZSwgZS0+a2V5LCBkYXRhLT5zdHIpOworLQllLT5pc19jaGFuZ2Vk ID0gRkFMU0U7CistCWdfc3RyaW5nX2ZyZWUoZGF0YSwgVFJVRSk7CistfQorLQorLXN0YXRpYyB2 b2lkIF9zYXZlX2Jvb2soRURJVE9SICplKQorLXsKKy0JR1N0cmluZyAqZGF0YSA9IGdfc3RyaW5n X25ldygiIik7CistCistCWVkaXRvcl9nZXRfZG9jdW1lbnRfY29udGVudChkYXRhLCBlKTsKKy0J bWFpbl90cmVla2V5X3NhdmVfYm9va190ZXh0KGUtPm1vZHVsZSwgZS0+a2V5LCBkYXRhLT5zdHIp OworLQllLT5pc19jaGFuZ2VkID0gRkFMU0U7CistCWdfc3RyaW5nX2ZyZWUoZGF0YSwgVFJVRSk7 CistfQorLQorLXN0YXRpYyB2b2lkIF9zYXZlX2ZpbGUoRURJVE9SICplKQorLXsKKy0JR3RrUmVj ZW50TWFuYWdlciAqcm0gPSBOVUxMOworLQlHU3RyaW5nICpkYXRhID0gZ19zdHJpbmdfbmV3KCIi KTsKKy0KKy0JZWRpdG9yX2dldF9kb2N1bWVudF9jb250ZW50KGRhdGEsIGUpOworLQlYSV9tZXNz YWdlKCgiJXMiLCBkYXRhLT5zdHIpKTsKKy0KKy0JaWYgKCFlLT5maWxlbmFtZSB8fCAoMCA9PSBn X3N0cmNtcDAoIlVudGl0bGVkIGRvY3VtZW50IiwgZS0+ZmlsZW5hbWUpKSB8fCBnX3N0cnJzdHIo ZS0+ZmlsZW5hbWUsICIuc3B0IikpIHsKKy0JCUd0a1dpZGdldCAqZGlhbG9nID0gZ3RrX2ZpbGVf Y2hvb3Nlcl9kaWFsb2dfbmV3KCJTYXZlIGFzIiwJCSAgICAgIC8vY29uc3QgZ2NoYXIgKnRpdGxl LAorLQkJCQkJCQkJTlVMTCwJCQkgICAgICAvL0d0a1dpbmRvdyAqcGFyZW50LAorLQkJCQkJCQkJ R1RLX0ZJTEVfQ0hPT1NFUl9BQ1RJT05fU0FWRSwgLy9HdGtGaWxlQ2hvb3NlckFjdGlvbiBhY3Rp b24sCistI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDEwLCAwKQorLQkJCQkJCQkJIl9PSyIsCist CQkJCQkJCQlHVEtfUkVTUE9OU0VfT0ssCistCQkJCQkJCQkiX0NhbmNlbCIsCistCQkJCQkJCQlH VEtfUkVTUE9OU0VfQ0FOQ0VMLAorLSNlbHNlCistCQkJCQkJCQlHVEtfU1RPQ0tfT0ssCistCQkJ CQkJCQlHVEtfUkVTUE9OU0VfT0ssCistCQkJCQkJCQlHVEtfU1RPQ0tfQ0FOQ0VMLAorLQkJCQkJ CQkJR1RLX1JFU1BPTlNFX0NBTkNFTCwKKy0jZW5kaWYKKy0JCQkJCQkJCU5VTEwpOworLQkJZ3Rr X2ZpbGVfY2hvb3Nlcl9zZXRfZG9fb3ZlcndyaXRlX2NvbmZpcm1hdGlvbihHVEtfRklMRV9DSE9P U0VSKGRpYWxvZyksIFRSVUUpOworLQorLQkJZ3RrX2ZpbGVfY2hvb3Nlcl9zZXRfY3VycmVudF9m b2xkZXIoR1RLX0ZJTEVfQ0hPT1NFUihkaWFsb2cpLAorLQkJCQkJCSAgICBzZXR0aW5ncy5zdHVk eXBhZGRpcik7CistCQlpZiAoZ3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKSA9PSBH VEtfUkVTUE9OU0VfT0spIHsKKy0JCQlnY2hhciAqZmlsZW5hbWUgPSBndGtfZmlsZV9jaG9vc2Vy X2dldF9maWxlbmFtZShHVEtfRklMRV9DSE9PU0VSKGRpYWxvZykpOworLQkJCWUtPmZpbGVuYW1l ID0gZ19zdHJkdXAoZmlsZW5hbWUpOworLQkJCUdGaWxlICpnZmlsZSA9IGdfZmlsZV9wYXJzZV9u YW1lKGZpbGVuYW1lKTsKKy0JCQlnX2ZpbGVfcmVwbGFjZV9jb250ZW50cyhnZmlsZSwgZGF0YS0+ c3RyLCBkYXRhLT5sZW4sIE5VTEwsIFRSVUUsIEdfRklMRV9DUkVBVEVfTk9ORSwgTlVMTCwgTlVM TCwgTlVMTCk7IC8vR0Vycm9yICoqZXJyb3IKKy0JCX0KKy0JCWNoYW5nZV93aW5kb3dfdGl0bGUo ZS0+d2luZG93LCBlLT5maWxlbmFtZSk7CistCQlndGtfd2lkZ2V0X2Rlc3Ryb3koZGlhbG9nKTsK Ky0KKy0JfSBlbHNlIHsKKy0KKy0JCUdGaWxlICpnZmlsZSA9IGdfZmlsZV9wYXJzZV9uYW1lKGUt PmZpbGVuYW1lKTsKKy0JCWdfZmlsZV9yZXBsYWNlX2NvbnRlbnRzKGdmaWxlLCBkYXRhLT5zdHIs IGRhdGEtPmxlbiwgTlVMTCwgVFJVRSwgR19GSUxFX0NSRUFURV9OT05FLCBOVUxMLCBOVUxMLCBO VUxMKTsgLy9HRXJyb3IgKiplcnJvcgorLQl9CistCistCXJtID0gZ3RrX3JlY2VudF9tYW5hZ2Vy X2dldF9kZWZhdWx0KCk7CistCWd0a19yZWNlbnRfbWFuYWdlcl9hZGRfaXRlbShybSwgZS0+Zmls ZW5hbWUpOworLQorLQllLT5pc19jaGFuZ2VkID0gRkFMU0U7CistCWdfc3RyaW5nX2ZyZWUoZGF0 YSwgVFJVRSk7CistfQorLQorLXN0YXRpYyB2b2lkIF9sb2FkX2ZpbGUoRURJVE9SICplLCBjb25z dCBnY2hhciAqZmlsZW5hbWUpCisteworLQljaGFyICp0ZXh0ID0gTlVMTDsKKy0JR3RrUmVjZW50 TWFuYWdlciAqcm0gPSBOVUxMOworLQorLQlybSA9IGd0a19yZWNlbnRfbWFuYWdlcl9nZXRfZGVm YXVsdCgpOworLQlndGtfcmVjZW50X21hbmFnZXJfYWRkX2l0ZW0ocm0sIGZpbGVuYW1lKTsKKy0K Ky0JaWYgKGUtPmZpbGVuYW1lKQorLQkJZ19mcmVlKGUtPmZpbGVuYW1lKTsKKy0JZS0+ZmlsZW5h bWUgPSBnX3N0cmR1cChmaWxlbmFtZSk7CistCistCVhJX21lc3NhZ2UoKCJfbG9hZF9maWxlIGZp bGVuYW1lOiAlcyIsIGZpbGVuYW1lKSk7CistCistCXhtbF9zZXRfdmFsdWUoIlhpcGhvcyIsICJz dHVkeXBhZCIsICJsYXN0ZmlsZSIsIGUtPmZpbGVuYW1lKTsKKy0Jc2V0dGluZ3Muc3R1ZHlwYWRm aWxlbmFtZSA9IHhtbF9nZXRfdmFsdWUoInN0dWR5cGFkIiwgImxhc3RmaWxlIik7CistCistCWNo YW5nZV93aW5kb3dfdGl0bGUoZS0+d2luZG93LCBlLT5maWxlbmFtZSk7CistCXRleHQgPSBpbmhh bGVfdGV4dF9mcm9tX2ZpbGUoIXN0cm5jbXAoZmlsZW5hbWUsICJmaWxlOiIsIDUpCistCQkJCQkg PyBmaWxlbmFtZSArIDUKKy0JCQkJCSA6IGZpbGVuYW1lKTsKKy0KKy0JWElfbWVzc2FnZSgoIndl YiB2aWV3IGxvYWQgc3RyaW5nIFslc10iLCB0ZXh0KSk7CistCXdlYmtpdF93ZWJfdmlld19sb2Fk X3N0cmluZyhXRUJLSVRfV0VCX1ZJRVcoZS0+aHRtbF93aWRnZXQpLAorLQkJCQkgICAgdGV4dCwg ImFwcGxpY2F0aW9uL3hodG1sK3htbCIsICJ1dGZfOCIsICJmaWxlOi8vIik7CistCistCWdfZnJl ZSh0ZXh0KTsKKy0JZS0+aXNfY2hhbmdlZCA9IEZBTFNFOworIH0KKyAKKyBnYm9vbGVhbiBlZGl0 b3JfaXNfZGlydHkoRURJVE9SICplKQorIHsKKy0JcmV0dXJuIGUtPmlzX2NoYW5nZWQ7CisrCXJl dHVybiBGQUxTRTsKKyB9CisgCisgdm9pZCBlZGl0b3Jfc2F2ZV9ib29rKEVESVRPUiAqZSkKKyB7 CistCWlmIChlZGl0b3JfaXNfZGlydHkoZSkpCistCQlfc2F2ZV9ib29rKGUpOworIH0KKyAKKyAv KiBzYXZlIGlmIG5lZWRlZCBpcyBkb25lIGluIHRyZWVreS1lZGl0b3IuYyBiZWZvcmUgY2FsbGlu ZyBlZGl0b3JfbG9hZF9ib29rKCkgKi8KKyB2b2lkIGVkaXRvcl9sb2FkX2Jvb2soRURJVE9SICpl KQorIHsKKy0JZ2NoYXIgKnRpdGxlID0gTlVMTCwgKnRleHQgPSBOVUxMOworLQorLQlpZiAoIWdf YXNjaWlfaXNkaWdpdChlLT5rZXlbMF0pKQorLQkJcmV0dXJuOyAvKiBtYWtlIHN1cmUgaXMgYSBu dW1iZXIgKG9mZnNldCkgKi8KKy0KKy0JWElfbWVzc2FnZSgoImJvb2s6ICVzXG5vZmZzZXQgOiVz IiwgZS0+bW9kdWxlLCBlLT5rZXkpKTsKKy0KKy0JaWYgKGF0b2woZS0+a2V5KSAhPSAwKQorLQkJ dGV4dCA9IG1haW5fZ2V0X2Jvb2tfcmF3X3RleHQoZS0+bW9kdWxlLCBlLT5rZXkpOworLQllbHNl CistCQl0ZXh0ID0gZ19zdHJkdXAoZS0+bW9kdWxlKTsKKy0KKy0JaWYgKCh0ZXh0ID09IE5VTEwp IHx8IHN0cmxlbih0ZXh0KSA9PSAwKSB7CistCQlpZiAodGV4dCkKKy0JCQlnX2ZyZWUodGV4dCk7 CistCistCQkvKiBuZXcgZW1wdHkgZG9jdW1lbnQgZnJvbSB0ZW1wbGF0ZSAqLworLQkJZ2NoYXIg KmZuYW1lID0gZ19idWlsZF9maWxlbmFtZShzZXR0aW5ncy5nU3dvcmREaXIsICJzdHVkeXBhZC5z cHQiLCBOVUxMKTsKKy0JCVhJX21lc3NhZ2UoKCJlZGl0b3IgbG9hZCBCT09LIFslc10iLCBmbmFt ZSkpOworLQkJdGV4dCA9IGluaGFsZV90ZXh0X2Zyb21fZmlsZShmbmFtZSk7CistCQlnX2ZyZWUo Zm5hbWUpOworLQl9CistCistCWlmICh0ZXh0ICYmIHN0cmxlbih0ZXh0KSkgeworLQkJd2Via2l0 X3dlYl92aWV3X2xvYWRfc3RyaW5nKChXZWJLaXRXZWJWaWV3ICopCistCQkJCQkgICAgZS0+aHRt bF93aWRnZXQsCistCQkJCQkgICAgdGV4dCwKKy0JCQkJCSAgICAiYXBwbGljYXRpb24veGh0bWwr eG1sIiwgInV0Zl84IiwKKy0JCQkJCSAgICAiZmlsZTovLyIpOworLQl9CistCistCWlmICh0ZXh0 KQorLQkJZ19mcmVlKHRleHQpOworLQorLQl0aXRsZSA9IGdfc3RyZHVwX3ByaW50ZigiJXMiLCBl LT5tb2R1bGUpOworLQljaGFuZ2Vfd2luZG93X3RpdGxlKGUtPndpbmRvdywgdGl0bGUpOworLQln X2ZyZWUodGl0bGUpOworLQorLQllLT5pc19jaGFuZ2VkID0gRkFMU0U7CisgfQorIAorIC8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKK0BAIC0xMDU0LDI4MSArMzI5LDE5IEBAIHZvaWQgZWRpdG9yX2xv YWRfYm9vayhFRElUT1IgKmUpCisgCisgdm9pZCBlZGl0b3Jfc3luY193aXRoX21haW4odm9pZCkK KyB7CistCUdMaXN0ICp0bXAgPSBOVUxMOworLQorLQl0bXAgPSBnX2xpc3RfZmlyc3QoZWRpdG9y c19hbGwpOworLQl3aGlsZSAodG1wICE9IE5VTEwpIHsKKy0JCUVESVRPUiAqZSA9IChFRElUT1Ig Kil0bXAtPmRhdGE7CistCistCQlzd2l0Y2ggKGUtPnR5cGUpIHsKKy0JCWNhc2UgU1RVRFlQQURf RURJVE9SOgorLQkJY2FzZSBCT09LX0VESVRPUjoKKy0JCQlicmVhazsKKy0JCWNhc2UgTk9URV9F RElUT1I6CistCQkJaWYgKGUtPnN5bmMpCistCQkJCWVkaXRvcl9sb2FkX25vdGUoZSwgTlVMTCwK Ky0JCQkJCQkgc2V0dGluZ3MuY3VycmVudHZlcnNlKTsKKy0JCQlicmVhazsKKy0JCX0KKy0JCXRt cCA9IGdfbGlzdF9uZXh0KHRtcCk7CistCX0KKyB9CisgCisgdm9pZAorIGVkaXRvcl9sb2FkX25v dGUoRURJVE9SICplLCBjb25zdCBnY2hhciAqbW9kdWxlX25hbWUsIGNvbnN0IGdjaGFyICprZXkp CisgeworLQlnY2hhciAqdGl0bGUgPSBOVUxMLCAqdGV4dCA9IE5VTEw7CistCistCWlmIChlLT5p c19jaGFuZ2VkKQorLQkJX3NhdmVfbm90ZShlKTsKKy0KKy0JaWYgKG1vZHVsZV9uYW1lKSB7Cist CQlpZiAoZS0+bW9kdWxlKQorLQkJCWdfZnJlZShlLT5tb2R1bGUpOworLQkJZS0+bW9kdWxlID0g Z19zdHJkdXAobW9kdWxlX25hbWUpOworLQl9CistCWlmIChrZXkpIHsKKy0JCWlmIChlLT5rZXkp CistCQkJZ19mcmVlKGUtPmtleSk7CistCQllLT5rZXkgPSBnX3N0cmR1cChrZXkpOworLQl9Cist CistCXRleHQgPSBtYWluX2dldF9yYXdfdGV4dCgoZ2NoYXIgKillLT5tb2R1bGUsIChnY2hhciAq KWUtPmtleSk7CistCistCWlmICgodGV4dCA9PSBOVUxMKSB8fCBzdHJsZW4odGV4dCkgPT0gMCkg eworLQkJaWYgKHRleHQpCistCQkJZ19mcmVlKHRleHQpOworLQorLQkJLyogbmV3IGVtcHR5IGRv Y3VtZW50IGZyb20gdGVtcGxhdGUgKi8KKy0JCWdjaGFyICpmbmFtZSA9IGdfYnVpbGRfZmlsZW5h bWUoc2V0dGluZ3MuZ1N3b3JkRGlyLCAic3R1ZHlwYWQuc3B0IiwgTlVMTCk7CistCQlYSV9tZXNz YWdlKCgiZWRpdG9yIGxvYWQgTk9URSBbJXNdIiwgZm5hbWUpKTsKKy0JCXRleHQgPSBpbmhhbGVf dGV4dF9mcm9tX2ZpbGUoZm5hbWUpOworLQkJZ19mcmVlKGZuYW1lKTsKKy0JfQorLQorLQlpZiAo dGV4dCAmJiBzdHJsZW4odGV4dCkpIHsKKy0JCXdlYmtpdF93ZWJfdmlld19sb2FkX3N0cmluZygo V2ViS2l0V2ViVmlldyAqKQorLQkJCQkJICAgIGUtPmh0bWxfd2lkZ2V0LAorLQkJCQkJICAgIHRl eHQsCistCQkJCQkgICAgImFwcGxpY2F0aW9uL3hodG1sK3htbCIsICJ1dGZfOCIsCistCQkJCQkg ICAgImZpbGU6Ly8iKTsKKy0JfQorLQorLQllLT5pc19jaGFuZ2VkID0gRkFMU0U7CistCWlmIChl LT50eXBlID09IE5PVEVfRURJVE9SKSB7CistCQllLT5uYXZiYXIudmFsaWRfa2V5ID0gVFJVRTsK Ky0JCW1haW5fbmF2YmFyX3ZlcnNla2V5X3NldChlLT5uYXZiYXIsIGUtPmtleSk7CistCX0KKy0K Ky0JaWYgKHRleHQpCistCQlnX2ZyZWUodGV4dCk7CistCistCXRpdGxlID0gZ19zdHJkdXBfcHJp bnRmKCIlcyAtICVzIiwgZS0+bW9kdWxlLCBlLT5rZXkpOworLQljaGFuZ2Vfd2luZG93X3RpdGxl KGUtPndpbmRvdywgdGl0bGUpOworLQlnX2ZyZWUodGl0bGUpOworIH0KKyAKKyBHX01PRFVMRV9F WFBPUlQgaW50CisgZGVsZXRlX2V2ZW50KEd0a1dpZGdldCAqd2lkZ2V0LCBHZGtFdmVudCAqZXZl bnQsIEVESVRPUiAqZSkKKyB7CistCWlmIChlLT5pc19jaGFuZ2VkKSB7CistCQlzd2l0Y2ggKGFz a19hYm91dF9zYXZpbmcoZSkpIHsKKy0JCWNhc2UgR1NfWUVTOiAvKiBleGl0IHNhdmluZyAqLwor LQkJCWJyZWFrOworLQorLQkJY2FzZSBHU19OTzogLyogZXhpdCB3aXRob3V0IHNhdmluZyAqLwor LQkJCWJyZWFrOworLQorLQkJY2FzZSBHU19DQU5DRUw6CistCQkJcmV0dXJuIFRSVUU7CistCQl9 CistCX0KKy0JZWRpdG9yc19hbGwgPSBnX2xpc3RfcmVtb3ZlKGVkaXRvcnNfYWxsLCBlKTsKKy0J ZG9fZXhpdChlKTsKKyAJcmV0dXJuIEZBTFNFOworIH0KKyAKKy1naW50IGFza19hYm91dF9zYXZp bmcoRURJVE9SICplKQorLXsKKy0JZ2ludCB0ZXN0OworLQlHU19ESUFMT0cgKmluZm87CistCWdj aGFyICpidWYgPSBOVUxMOworLQlnY2hhciAqYnVmMSA9IE5VTEw7CistCWdjaGFyICpidWYyID0g TlVMTDsKKy0JZ2NoYXIgKmJ1ZjMgPSBOVUxMOworLQlnaW50IHJldHZhbCA9IEZBTFNFOworLQor LQlzd2l0Y2ggKGUtPnR5cGUpIHsKKy0JY2FzZSBCT09LX0VESVRPUjoKKy0JY2FzZSBOT1RFX0VE SVRPUjoKKy0JCWluZm8gPSBndWlfbmV3X2RpYWxvZygpOworLQkJaW5mby0+c3RvY2tfaWNvbiA9 CistI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDEwLCAwKQorLQkJICAgICJkaWFsb2ctd2Fybmlu ZyI7CistI2Vsc2UKKy0JCSAgICBHVEtfU1RPQ0tfRElBTE9HX1dBUk5JTkc7CistI2VuZGlmCist CistCQlidWYgPSBnX3N0cmR1cF9wcmludGYoIiVzOiAlcyIsIGUtPm1vZHVsZSwgZS0+a2V5KTsK Ky0JCWJ1ZjEgPSBfKCJTYXZlIHRoZSBjaGFuZ2VzIHRvIGRvY3VtZW50Iik7CistCQlidWYyID0g XygiYmVmb3JlIGNsb3Npbmc/Iik7CistCQlidWYzID0gZ19zdHJkdXBfcHJpbnRmKCI8c3BhbiB3 ZWlnaHQ9XCJib2xkXCIgc2l6ZT1cImxhcmdlclwiPiVzICVzICVzPC9zcGFuPiIsCistCQkJCSAg ICAgICBidWYxLCBidWYsIGJ1ZjIpOworLQkJaW5mby0+bGFiZWxfdG9wID0gYnVmMzsKKy0JCWlu Zm8tPmxhYmVsMiA9IF8oIklmIHlvdSBkb24ndCBzYXZlLCBjaGFuZ2VzIHdpbGwgYmUgcGVybWFu ZW50bHkgbG9zdC4iKTsKKy0JCWluZm8tPnNhdmUgPSBUUlVFOworLQkJaW5mby0+Y2FuY2VsID0g VFJVRTsKKy0JCWluZm8tPm5vX3NhdmUgPSBUUlVFOworLQorLQkJdGVzdCA9IGd1aV9hbGVydF9k aWFsb2coaW5mbyk7CistCQlyZXR2YWwgPSB0ZXN0OworLQorLQkJaWYgKHRlc3QgPT0gR1NfWUVT KSB7CistCQkJaWYgKGUtPnR5cGUgPT0gTk9URV9FRElUT1IpIHsKKy0JCQkJLyogc2F2ZSBub3Rl cyBhbmQgcHJheWVyIGxpc3RzICovCistCQkJCV9zYXZlX25vdGUoZSk7CistCistCQkJfSBlbHNl IHsKKy0JCQkJLyogc2F2ZSBub3RlcyBhbmQgcHJheWVyIGxpc3RzICovCistCQkJCV9zYXZlX2Jv b2soZSk7CistCQkJfQorLQkJfQorLQkJZ19mcmVlKGluZm8pOworLQkJZ19mcmVlKGJ1Zik7Cist CQlnX2ZyZWUoYnVmMyk7CistCQlicmVhazsKKy0KKy0JY2FzZSBTVFVEWVBBRF9FRElUT1I6Cist CQlpbmZvID0gZ3VpX25ld19kaWFsb2coKTsKKy0JCWluZm8tPnN0b2NrX2ljb24gPQorLSNpZiBH VEtfQ0hFQ0tfVkVSU0lPTigzLCAxMCwgMCkKKy0JCSAgICAiZGlhbG9nLXdhcm5pbmciOworLSNl bHNlCistCQkgICAgR1RLX1NUT0NLX0RJQUxPR19XQVJOSU5HOworLSNlbmRpZgorLQkJaWYgKHNl dHRpbmdzLnN0dWR5cGFkZmlsZW5hbWUpCistCQkJYnVmID0gc2V0dGluZ3Muc3R1ZHlwYWRmaWxl bmFtZTsKKy0JCWVsc2UKKy0JCQlidWYgPSBOXygiRmlsZSIpOworLQkJYnVmMSA9IF8oIlNhdmUg dGhlIGNoYW5nZXMgdG8gZG9jdW1lbnQiKTsKKy0JCWJ1ZjIgPSBfKCJiZWZvcmUgY2xvc2luZz8i KTsKKy0JCWJ1ZjMgPSBnX3N0cmR1cF9wcmludGYoIjxzcGFuIHdlaWdodD1cImJvbGRcIiBzaXpl PVwibGFyZ2VyXCI+JXMgJXMgJXM8L3NwYW4+IiwKKy0JCQkJICAgICAgIGJ1ZjEsIGJ1ZiwgYnVm Mik7CistCQlpbmZvLT5sYWJlbF90b3AgPSBidWYzOworLQkJaW5mby0+bGFiZWwyID0gXygiSWYg eW91IGRvbid0IHNhdmUsIGNoYW5nZXMgd2lsbCBiZSBwZXJtYW5lbnRseSBsb3N0LiIpOworLQkJ aW5mby0+c2F2ZSA9IFRSVUU7CistCQlpbmZvLT5jYW5jZWwgPSBUUlVFOworLQkJaW5mby0+bm9f c2F2ZSA9IFRSVUU7CistCistCQl0ZXN0ID0gZ3VpX2FsZXJ0X2RpYWxvZyhpbmZvKTsKKy0JCXJl dHZhbCA9IHRlc3Q7CistCQlpZiAodGVzdCA9PSBHU19ZRVMpIHsKKy0JCQlfc2F2ZV9maWxlKGUp OworLQkJfQorLQkJZ19mcmVlKGluZm8pOworLQkJZ19mcmVlKGJ1ZjMpOworLQkJYnJlYWs7Cist CX0KKy0Jc3luY193aW5kb3dzKCk7CistCXJldHVybiByZXR2YWw7CistfQorLQorLXN0YXRpYyBn aW50IF9jcmVhdGVfbmV3KGNvbnN0IGdjaGFyICpmaWxlbmFtZSwgY29uc3QgZ2NoYXIgKmtleSwK Ky0JCQlnaW50IGVkaXRvcl90eXBlKQorLXsKKy0JRURJVE9SICplZGl0b3I7CistCUd0a1dpZGdl dCAqdG9vbGJhcl9uYXYgPSBOVUxMOworLQorLQllZGl0b3IgPSBnX25ldyhFRElUT1IsIDEpOwor LQllZGl0b3ItPmh0bWxfd2lkZ2V0ID0gTlVMTDsKKy0JZWRpdG9yLT5zeW5jID0gRkFMU0U7Cist CWVkaXRvci0+dHlwZSA9IGVkaXRvcl90eXBlOworLQorLQlzd2l0Y2ggKGVkaXRvcl90eXBlKSB7 CistCWNhc2UgU1RVRFlQQURfRURJVE9SOgorLQkJZWRpdG9yLT5zdHVkeXBhZCA9IFRSVUU7Cist CQllZGl0b3ItPmJvb2tlZGl0b3IgPSBGQUxTRTsKKy0JCWVkaXRvci0+bm90ZWVkaXRvciA9IEZB TFNFOworLQkJZWRpdG9yLT5tb2R1bGUgPSBOVUxMOworLQkJZWRpdG9yLT5rZXkgPSBOVUxMOwor LQkJZWRpdG9yLT5maWxlbmFtZSA9IE5VTEw7CistCQl3aWRnZXRzLnN0dWR5cGFkX2RpYWxvZyA9 IGVkaXRvcl9uZXcoXygiU3R1ZHlQYWQiKSwgZWRpdG9yKTsKKy0KKy0JCWlmIChmaWxlbmFtZSkg eworLQkJCWVkaXRvci0+ZmlsZW5hbWUgPSBnX3N0cmR1cChmaWxlbmFtZSk7CistCQkJX2xvYWRf ZmlsZShlZGl0b3IsIGdfc3RyZHVwKGZpbGVuYW1lKSk7CistCQl9CistCQlicmVhazsKKy0JY2Fz ZSBOT1RFX0VESVRPUjoKKy0JCWVkaXRvci0+bm90ZWVkaXRvciA9IFRSVUU7CistCQllZGl0b3It PmJvb2tlZGl0b3IgPSBGQUxTRTsKKy0JCWVkaXRvci0+c3R1ZHlwYWQgPSBGQUxTRTsKKy0JCWVk aXRvci0+ZmlsZW5hbWUgPSBOVUxMOworLQkJZWRpdG9yLT5tb2R1bGUgPSBnX3N0cmR1cChmaWxl bmFtZSk7CistCQllZGl0b3ItPmtleSA9IGdfc3RyZHVwKGtleSk7CistCQllZGl0b3ItPm5hdmJh ci5rZXkgPSBOVUxMOworLQkJZWRpdG9yX25ldyhfKCJOb3RlIEVkaXRvciIpLCBlZGl0b3IpOwor LQorLQkJdG9vbGJhcl9uYXYgPSBndWlfbmF2YmFyX3ZlcnNla2V5X2VkaXRvcl9uZXcoZWRpdG9y KTsKKy0JCWd0a193aWRnZXRfc2hvdyh0b29sYmFyX25hdik7CistCQlndGtfYm94X3BhY2tfc3Rh cnQoR1RLX0JPWChlZGl0b3ItPm5hdmJhcl9ib3gpLAorLQkJCQkgICBHVEtfV0lER0VUKHRvb2xi YXJfbmF2KSwgRkFMU0UsIFRSVUUsCistCQkJCSAgIDApOworLQorLQkJZWRpdG9yX2xvYWRfbm90 ZShlZGl0b3IsIE5VTEwsIE5VTEwpOworLQkJYnJlYWs7CistCWNhc2UgQk9PS19FRElUT1I6Cist CQllZGl0b3ItPmJvb2tlZGl0b3IgPSBUUlVFOworLQkJZWRpdG9yLT5ub3RlZWRpdG9yID0gRkFM U0U7CistCQllZGl0b3ItPnN0dWR5cGFkID0gRkFMU0U7CistCQllZGl0b3ItPmZpbGVuYW1lID0g TlVMTDsKKy0JCWVkaXRvci0+bW9kdWxlID0gZ19zdHJkdXAoZmlsZW5hbWUpOworLQkJZWRpdG9y LT5rZXkgPSBnX3N0cmR1cChrZXkpOworLQkJZWRpdG9yX25ldyhfKCJQcmF5ZXIgTGlzdC9Kb3Vy bmFsIEVkaXRvciIpLCBlZGl0b3IpOworLQorLQkJR3RrV2lkZ2V0ICpib3g7CistCQlVSV9WQk9Y KGJveCwgRkFMU0UsIDApOworLQkJZ3RrX3dpZGdldF9zaG93KGJveCk7CistCQlHdGtXaWRnZXQg KmhwYW5lZDEgPSBVSV9IUEFORSgpOworLQkJZ3RrX3dpZGdldF9zaG93KGhwYW5lZDEpOworLQkJ Z3RrX3BhbmVkX3BhY2syKEdUS19QQU5FRChocGFuZWQxKSwgYm94LCBUUlVFLCBUUlVFKTsKKy0K Ky0JCUd0a1dpZGdldCAqc2Nyb2xsYmFyID0gZ3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwg TlVMTCk7CistCQlndGtfd2lkZ2V0X3Nob3coc2Nyb2xsYmFyKTsKKy0JCWd0a19wYW5lZF9wYWNr MShHVEtfUEFORUQoaHBhbmVkMSksIEdUS19XSURHRVQoc2Nyb2xsYmFyKSwKKy0JCQkJVFJVRSwg VFJVRSk7CistCQlndGtfc2Nyb2xsZWRfd2luZG93X3NldF9wb2xpY3koR1RLX1NDUk9MTEVEX1dJ TkRPVyhzY3JvbGxiYXIpLAorLQkJCQkJICAgICAgIEdUS19QT0xJQ1lfQVVUT01BVElDLAorLQkJ CQkJICAgICAgIEdUS19QT0xJQ1lfQVVUT01BVElDKTsKKy0JCWd0a19zY3JvbGxlZF93aW5kb3df c2V0X3NoYWRvd190eXBlKChHdGtTY3JvbGxlZFdpbmRvdyAqKQorLQkJCQkJCSAgICBzY3JvbGxi YXIsCistCQkJCQkJICAgIHNldHRpbmdzLnNoYWRvd190eXBlKTsKKy0KKy0JCWVkaXRvci0+dHJl ZXZpZXcgPSBndWlfY3JlYXRlX2VkaXRvcl90cmVlKGVkaXRvcik7CistCQlndGtfd2lkZ2V0X3No b3coZWRpdG9yLT50cmVldmlldyk7CistCQlndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVS KHNjcm9sbGJhciksCistCQkJCSAgZWRpdG9yLT50cmVldmlldyk7CistCQlndGtfcGFuZWRfc2V0 X3Bvc2l0aW9uKEdUS19QQU5FRChocGFuZWQxKSwgMTI1KTsKKy0JCWd0a190cmVlX3ZpZXdfZXhw YW5kX2FsbCgoR3RrVHJlZVZpZXcgKillZGl0b3ItPnRyZWV2aWV3KTsKKy0vLyB0aGVuIHdlIHNo b3VsZCBleHBhbmQgb24gdGhlIGl0ZW0gdG8gd2hpY2ggd2UndmUgb3BlbmVkIGZvciBlZGl0Lgor LQorLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCAxMCwgMCkKKy0JCWd0a19jb250YWluZXJfYWRk KEdUS19DT05UQUlORVIoYm94KSwgZWRpdG9yLT5ib3gpOworLSNlbHNlCistCQlndGtfd2lkZ2V0 X3JlcGFyZW50KGVkaXRvci0+Ym94LCBib3gpOworLSNlbmRpZgorLQorLQkJZ3RrX2NvbnRhaW5l cl9hZGQoR1RLX0NPTlRBSU5FUihlZGl0b3ItPndpbmRvdyksIGhwYW5lZDEpOworLQorLQkJZWRp dG9yX2xvYWRfYm9vayhlZGl0b3IpOworLQorLQkJYnJlYWs7CistCX0KKy0JZWRpdG9yLT5pc19j aGFuZ2VkID0gRkFMU0U7CistCWVkaXRvcnNfYWxsID0gZ19saXN0X2FwcGVuZChlZGl0b3JzX2Fs bCwgKEVESVRPUiAqKWVkaXRvcik7CistCXJldHVybiAxOworLX0KKy0KKyAvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisgICogTmFtZQorICAqICAgZWRpdG9yX2NyZWF0ZV9uZXcKK0BAIC0xMzQ4LDg1 ICszNjEsMTEgQEAgc3RhdGljIGdpbnQgX2NyZWF0ZV9uZXcoY29uc3QgZ2NoYXIgKmZpbGVuYW1l LCBjb25zdCBnY2hhciAqa2V5LAorIGdpbnQgZWRpdG9yX2NyZWF0ZV9uZXcoY29uc3QgZ2NoYXIg KmZpbGVuYW1lLCBjb25zdCBnY2hhciAqa2V5LAorIAkJICAgICAgIGdpbnQgZWRpdG9yX3R5cGUp CisgeworLQlHTGlzdCAqdG1wID0gTlVMTDsKKy0KKy0JdG1wID0gZ19saXN0X2ZpcnN0KGVkaXRv cnNfYWxsKTsKKy0Jd2hpbGUgKHRtcCAhPSBOVUxMKSB7CistCQlFRElUT1IgKmUgPSAoRURJVE9S ICopdG1wLT5kYXRhOworLQkJc3dpdGNoIChlZGl0b3JfdHlwZSkgeworLQkJY2FzZSBTVFVEWVBB RF9FRElUT1I6CistCQkJaWYgKGUtPnN0dWR5cGFkKSB7CistCQkJCWlmIChlZGl0b3JfaXNfZGly dHkoZSkpCistCQkJCQlfc2F2ZV9maWxlKGUpOworLQkJCQlpZiAoZS0+ZmlsZW5hbWUpCistCQkJ CQlnX2ZyZWUoZS0+ZmlsZW5hbWUpOworLQkJCQllLT5maWxlbmFtZSA9IGdfc3RyZHVwKGZpbGVu YW1lKTsKKy0JCQkJZ3RrX3dpZGdldF9zaG93KGUtPndpbmRvdyk7CistCQkJCWdka193aW5kb3df cmFpc2UoZ3RrX3dpZGdldF9nZXRfcGFyZW50X3dpbmRvdyhHVEtfV0lER0VUKGUtPndpbmRvdykp KTsKKy0KKy0JCQkJX2xvYWRfZmlsZShlLCBnX3N0cmR1cChmaWxlbmFtZSkpOworLQkJCQlyZXR1 cm4gMTsKKy0JCQl9CistCQkJYnJlYWs7CistCQljYXNlIE5PVEVfRURJVE9SOgorLQkJCWlmICgh ZS0+bm90ZWVkaXRvcikKKy0JCQkJYnJlYWs7CistCQkJaWYgKGVkaXRvcl9pc19kaXJ0eShlKSkK Ky0JCQkJX3NhdmVfbm90ZShlKTsKKy0JCQlpZiAoZS0+bW9kdWxlKQorLQkJCQlnX2ZyZWUoZS0+ bW9kdWxlKTsKKy0JCQllLT5tb2R1bGUgPSBnX3N0cmR1cChmaWxlbmFtZSk7CistCQkJaWYgKGUt PmtleSkKKy0JCQkJZ19mcmVlKGUtPmtleSk7CistCQkJZS0+a2V5ID0gZ19zdHJkdXAoa2V5KTsK Ky0JCQlndGtfd2lkZ2V0X3Nob3coZS0+d2luZG93KTsKKy0JCQlnZGtfd2luZG93X3JhaXNlKGd0 a193aWRnZXRfZ2V0X3BhcmVudF93aW5kb3coR1RLX1dJREdFVChlLT53aW5kb3cpKSk7CistCist CQkJZWRpdG9yX2xvYWRfbm90ZShlLCBOVUxMLCBOVUxMKTsKKy0KKy0JCQlyZXR1cm4gMTsKKy0J CQlicmVhazsKKy0JCWNhc2UgQk9PS19FRElUT1I6CistCQkJaWYgKCFlLT5ib29rZWRpdG9yKQor LQkJCQlicmVhazsKKy0JCQlpZiAoZWRpdG9yX2lzX2RpcnR5KGUpKQorLQkJCQlfc2F2ZV9ib29r KGUpOworLQkJCWlmIChlLT5tb2R1bGUpCistCQkJCWdfZnJlZShlLT5tb2R1bGUpOworLQkJCWUt Pm1vZHVsZSA9IGdfc3RyZHVwKGZpbGVuYW1lKTsKKy0JCQlpZiAoZS0+a2V5KQorLQkJCQlnX2Zy ZWUoZS0+a2V5KTsKKy0JCQllLT5rZXkgPSBnX3N0cmR1cChrZXkpOworLQkJCWd0a193aWRnZXRf c2hvdyhlLT53aW5kb3cpOworLQkJCWdka193aW5kb3dfcmFpc2UoZ3RrX3dpZGdldF9nZXRfcGFy ZW50X3dpbmRvdyhHVEtfV0lER0VUKGUtPndpbmRvdykpKTsKKy0JCQltYWluX2xvYWRfYm9va190 cmVlX2luX2VkaXRvcihHVEtfVFJFRV9WSUVXKGUtPnRyZWV2aWV3KSwKKy0JCQkJCQkgICAgICBl LT5tb2R1bGUpOworLQkJCWVkaXRvcl9sb2FkX2Jvb2soZSk7CistCistCQkJcmV0dXJuIDE7Cist CQkJYnJlYWs7CistCQl9CistCQl0bXAgPSBnX2xpc3RfbmV4dCh0bXApOworLQl9CistCVhJX21l c3NhZ2UoKCJmaWxlbmFtZSAlcywga2V5ICVzIiwKKy0JCSAgICAoZmlsZW5hbWUgPyBmaWxlbmFt ZSA6ICItbnVsbC0iKSwKKy0JCSAgICAoa2V5ID8ga2V5IDogIi1udWxsLSIpKSk7CistCXJldHVy biBfY3JlYXRlX25ldyhmaWxlbmFtZSwga2V5LCBlZGl0b3JfdHlwZSk7CisrCXJldHVybiAxOwor IH0KKyAKKyB2b2lkIGVkaXRvcl9tYXliZV9zYXZlX2FsbCh2b2lkKQorIHsKKy0JR0xpc3QgKnRt cCwgKnRtcDI7CistCistCXRtcCA9IGdfbGlzdF9maXJzdChlZGl0b3JzX2FsbCk7CistCXdoaWxl ICh0bXAgIT0gTlVMTCkgeworLQkJLyogMm5kYXJ5IGxpc3QgY2hhc2VyOgorLQkJICAgZWxlbWVu dHMgd2lsbCBiZSByZW1vdmVkIGJ5IHRoZSBzYXZlci4gKi8KKy0JCXRtcDIgPSBnX2xpc3RfbmV4 dCh0bXApOworLQorLQkJZGVsZXRlX2V2ZW50KE5VTEwsIE5VTEwsIChFRElUT1IgKil0bXAtPmRh dGEpOworLQkJdG1wID0gdG1wMjsKKy0JfQorIH0KKyAKKyAjZW5kaWYgLyogVVNFX1dFQktJVF9F RElUT1IgKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MveGlwaG9zL3BhdGNoZXMveGlwaG9zLWdsaWJj LnBhdGNoIGIvc3JjcGtncy94aXBob3MvcGF0Y2hlcy94aXBob3MtZ2xpYmMucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAuLmI3ZjNhNDkyNzY3ZThkCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy94aXBob3MvcGF0Y2hlcy94aXBob3MtZ2xpYmMucGF0Y2gK QEAgLTAsMCArMSwxMCBAQAorLS0tIGEvY21ha2UvY29uZmlnLmguY21ha2UuaW4KKysrKyBiL2Nt YWtlL2NvbmZpZy5oLmNtYWtlLmluCitAQCAtNjUsMyArNjUsNyBAQAorIAorIAorICNlbmRpZgor KworKyNpZm5kZWYgR0xJQl9WRVJTSU9OX01JTl9SRVFVSVJFRAorKyNkZWZpbmUgR0xJQl9WRVJT SU9OX01JTl9SRVFVSVJFRCAoR0xJQl9WRVJTSU9OXzJfMjYpCisrI2VuZGlmCmRpZmYgLS1naXQg YS9zcmNwa2dzL3hpcGhvcy90ZW1wbGF0ZSBiL3NyY3BrZ3MveGlwaG9zL3RlbXBsYXRlCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi4yMzAyOGMzMDBjOTU0MQotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MveGlwaG9zL3RlbXBsYXRlCkBAIC0wLDAgKzEsMjEgQEAK KyMgVGVtcGxhdGUgZmlsZSBmb3IgJ3hpcGhvcycKK3BrZ25hbWU9eGlwaG9zCit2ZXJzaW9uPTQu Mi4xCityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1jbWFrZQoraG9zdG1ha2VkZXBlbmRzPSJhcHBz dHJlYW0tZ2xpYi1kZXZlbCBwa2ctY29uZmlnIGdsaWItZGV2ZWwgZGJ1cy1nbGliLWRldmVsCisg Z2V0dGV4dCBkZXNrdG9wLWZpbGUtdXRpbHMgbGlieG1sMi1weXRob24zIHB5dGhvbjMtbHhtbCB5 ZWxwLXRvb2xzIHppcCIKK21ha2VkZXBlbmRzPSJiaWJsZXN5bmMtZGV2ZWwgZGJ1cy1nbGliLWRl dmVsIGd0a21tLWRldmVsIGludGx0b29sIGl0c3Rvb2wKKyBsaWJmZmktZGV2ZWwgbGlic291cC1k ZXZlbCBsaWJ3ZWJraXRndGs2MC1kZXZlbCBsaWJ4c2x0IG1pbml6aXAtZGV2ZWwKKyBzd29yZC1k ZXZlbCB1dGlsLWxpbnV4IHdlYmtpdDJndGstZGV2ZWwgemlwIgorZGVwZW5kcz0iYmlibGVzeW5j IGRidXMtZ2xpYiBpY3UgaWN1LWxpYnMgbWluaXppcCBzd29yZCB3ZWJraXQyZ3RrIgorc2hvcnRf ZGVzYz0iQSBHVEszIEJpYmxlIHRvb2wgZm9yIHJlYWRpbmcsIHN0dWR5LCBhbmQgcmVzZWFyY2gi CittYWludGFpbmVyPSJqb25waWt1bSA8amNiQHBpa3VtLnh5ej4iCitsaWNlbnNlPSJHUEwtMi4w LW9yLWxhdGVyIgoraG9tZXBhZ2U9Imh0dHBzOi8veGlwaG9zLm9yZy8iCitkaXN0ZmlsZXM9Imh0 dHBzOi8vZ2l0aHViLmNvbS9jcm9zc3dpcmUveGlwaG9zL3JlbGVhc2VzL2Rvd25sb2FkLyR7dmVy c2lvbn0veGlwaG9zLSR7dmVyc2lvbn0udGFyLnh6IgorY2hlY2tzdW09ZDM0MzUzZjYyMjI0MzAy YzkyNDc1N2ZjYTU1ZmYwZmMxOWY5NjgxNWYyMGI4OTMyNzljZWVmM2Q3ZDA1NDEyOAorCitwb3N0 X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgQ09QWUlORworfQo= --===============5067957683151893943==--