Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:34098 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 79119 invoked by uid 1010); 19 Dec 2007 09:14:23 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 79104 invoked from network); 19 Dec 2007 09:14:23 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 19 Dec 2007 09:14:23 -0000 Authentication-Results: pb1.pair.com smtp.mail=dmitry@zend.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=dmitry@zend.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain zend.com designates 212.25.124.162 as permitted sender) X-PHP-List-Original-Sender: dmitry@zend.com X-Host-Fingerprint: 212.25.124.162 mail.zend.com Linux 2.5 (sometimes 2.4) (4) Received: from [212.25.124.162] ([212.25.124.162:12491] helo=mail.zend.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 76/B2-54125-CE0E8674 for ; Wed, 19 Dec 2007 04:14:23 -0500 Received: (qmail 3330 invoked from network); 19 Dec 2007 08:49:49 -0000 Received: from internal.zend.office (HELO ?127.0.0.1?) (10.1.1.1) by internal.zend.office with SMTP; 19 Dec 2007 08:49:49 -0000 Message-ID: <4768DB2D.9060907@zend.com> Date: Wed, 19 Dec 2007 11:49:49 +0300 User-Agent: Thunderbird 2.0.0.9 (Windows/20071031) MIME-Version: 1.0 To: Derick Rethans CC: PHP Developers Mailing List References: <698DE66518E7CA45812BD18E807866CEF88FDD@us-ex1.zend.net> <475578BE.40908@daylessday.org> <4755A797.1020905@lerdorf.com> <-4460533375996444588@unknownmsgid> <698DE66518E7CA45812BD18E807866CEF89334@us-ex1.zend.net> <47570A20.8070901@zend.com> <698DE66518E7CA45812BD18E807866CEF895BF@us-ex1.zend.net> <4757D355.2060705@zend.com> <4757DA73.5070308@zend.com> <47598BAB.1080808@zend.com> <476157A6.4070400@zend.com> <476646E0.5090608@zend.com> In-Reply-To: Content-Type: multipart/mixed; boundary="------------070107000006090906050109" Subject: Re: [PHP-DEV] Garbage collector patch From: dmitry@zend.com (Dmitry Stogov) --------------070107000006090906050109 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit updated patch. Dmitry. Derick Rethans wrote: > On Mon, 17 Dec 2007, Dmitry Stogov wrote: > >> Didn't I send it to you? > > Maybe, maybe not :) I couldn't find it atleast. > I just tried to apply this to PHP 5.3, but it gives lots of failed > chucks... Are you sure this is the one against 5.3? > > regards, > Derick > --------------070107000006090906050109 Content-Type: text/plain; name="gc-5.3-3.diff.txt" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="gc-5.3-3.diff.txt" SW5kZXg6IGNvbmZpZ3VyZS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9y eS9waHAtc3JjL2NvbmZpZ3VyZS5pbix2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41NzkuMi41 Mi4yLjc3LjIuNgpkaWZmIC11IC1wIC1kIC1yMS41NzkuMi41Mi4yLjc3LjIuNiBjb25maWd1 cmUuaW4KLS0tIGNvbmZpZ3VyZS5pbgk2IE5vdiAyMDA3IDExOjUwOjUxIC0wMDAwCTEuNTc5 LjIuNTIuMi43Ny4yLjYKKysrIGNvbmZpZ3VyZS5pbgkxOSBEZWMgMjAwNyAwODozMjozMSAt MDAwMApAQCAtMTMyNiw3ICsxMzI2LDcgQEAgUEhQX0FERF9TT1VSQ0VTKFplbmQsIFwKICAg ICB6ZW5kX3ZhcmlhYmxlcy5jIHplbmQuYyB6ZW5kX0FQSS5jIHplbmRfZXh0ZW5zaW9ucy5j IHplbmRfaGFzaC5jIFwKICAgICB6ZW5kX2xpc3QuYyB6ZW5kX2luZGVudC5jIHplbmRfYnVp bHRpbl9mdW5jdGlvbnMuYyB6ZW5kX3NwcmludGYuYyBcCiAgICAgemVuZF9pbmkuYyB6ZW5k X3Fzb3J0LmMgemVuZF9tdWx0aWJ5dGUuYyB6ZW5kX3RzX2hhc2guYyB6ZW5kX3N0cmVhbS5j IFwKLSAgICB6ZW5kX2l0ZXJhdG9ycy5jIHplbmRfaW50ZXJmYWNlcy5jIHplbmRfZXhjZXB0 aW9ucy5jIHplbmRfc3RydG9kLmMpCisgICAgemVuZF9pdGVyYXRvcnMuYyB6ZW5kX2ludGVy ZmFjZXMuYyB6ZW5kX2V4Y2VwdGlvbnMuYyB6ZW5kX3N0cnRvZC5jIHplbmRfZ2MuYykKIAog aWYgdGVzdCAtciAiJGFic19zcmNkaXIvWmVuZC96ZW5kX29iamVjdHMuYyI7IHRoZW4KICAg UEhQX0FERF9TT1VSQ0VTKFplbmQsIHplbmRfb2JqZWN0cy5jIHplbmRfb2JqZWN0X2hhbmRs ZXJzLmMgemVuZF9vYmplY3RzX0FQSS5jIFwKSW5kZXg6IFplbmQvemVuZC5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1plbmRFbmdpbmUyL3plbmQuYyx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4zMDguMi4xMi4yLjM1LjIuMwpkaWZmIC11IC1wIC1kIC1yMS4z MDguMi4xMi4yLjM1LjIuMyB6ZW5kLmMKLS0tIFplbmQvemVuZC5jCTIgTm92IDIwMDcgMTk6 NDA6MzcgLTAwMDAJMS4zMDguMi4xMi4yLjM1LjIuMworKysgWmVuZC96ZW5kLmMJMTkgRGVj IDIwMDcgMDg6MzI6MzEgLTAwMDAKQEAgLTc0LDggKzc0LDIxIEBAIHN0YXRpYyBaRU5EX0lO SV9NSChPblVwZGF0ZUVycm9yUmVwb3J0aW4KIH0KIC8qIH19fSAqLwogCitzdGF0aWMgWkVO RF9JTklfTUgoT25VcGRhdGVHQ0VuYWJsZWQpIC8qIHt7eyAqLworeworCU9uVXBkYXRlQm9v bChlbnRyeSwgbmV3X3ZhbHVlLCBuZXdfdmFsdWVfbGVuZ3RoLCBtaF9hcmcxLCBtaF9hcmcy LCBtaF9hcmczLCBzdGFnZSBUU1JNTFNfQ0MpOworCisJaWYgKEdDX0coZ2NfZW5hYmxlZCkp IHsKKwkJZ2NfaW5pdChUU1JNTFNfQyk7CisJfQorCisJcmV0dXJuIFNVQ0NFU1M7Cit9Cisv KiB9fX0gKi8KKwogWkVORF9JTklfQkVHSU4oKQogCVpFTkRfSU5JX0VOVFJZKCJlcnJvcl9y ZXBvcnRpbmciLAkJCQlOVUxMLAkJWkVORF9JTklfQUxMLAkJT25VcGRhdGVFcnJvclJlcG9y dGluZykKKwlTVERfWkVORF9JTklfQk9PTEVBTigiemVuZC5lbmFibGVfZ2MiLAkJCQkiMSIs CVpFTkRfSU5JX0FMTCwJCU9uVXBkYXRlR0NFbmFibGVkLCAgICAgIGdjX2VuYWJsZWQsICAg ICB6ZW5kX2djX2dsb2JhbHMsICAgICAgICBnY19nbG9iYWxzKQogCVNURF9aRU5EX0lOSV9C T09MRUFOKCJ6ZW5kLnplMV9jb21wYXRpYmlsaXR5X21vZGUiLAkiMCIsCVpFTkRfSU5JX0FM TCwJCU9uVXBkYXRlQm9vbCwJemUxX2NvbXBhdGliaWxpdHlfbW9kZSwJemVuZF9leGVjdXRv cl9nbG9iYWxzLAlleGVjdXRvcl9nbG9iYWxzKQogI2lmZGVmIFpFTkRfTVVMVElCWVRFCiAJ U1REX1pFTkRfSU5JX0JPT0xFQU4oImRldGVjdF91bmljb2RlIiwgIjEiLCBaRU5EX0lOSV9B TEwsIE9uVXBkYXRlQm9vbCwgZGV0ZWN0X3VuaWNvZGUsIHplbmRfY29tcGlsZXJfZ2xvYmFs cywgY29tcGlsZXJfZ2xvYmFscykKQEAgLTgyMiw2ICs4MzUsNyBAQCBaRU5EX0FQSSBjaGFy ICpnZXRfemVuZF92ZXJzaW9uKHZvaWQpIC8qCiAKIHZvaWQgemVuZF9hY3RpdmF0ZShUU1JN TFNfRCkgLyoge3t7ICovCiB7CisJZ2NfcmVzZXQoVFNSTUxTX0MpOwogCWluaXRfY29tcGls ZXIoVFNSTUxTX0MpOwogCWluaXRfZXhlY3V0b3IoVFNSTUxTX0MpOwogCXN0YXJ0dXBfc2Nh bm5lcihUU1JNTFNfQyk7CkBAIC04NzEsNiArODg1LDEyIEBAIHZvaWQgemVuZF9kZWFjdGl2 YXRlKFRTUk1MU19EKSAvKiB7e3sgKi8KIAogCXplbmRfZGVzdHJveV9yc3JjX2xpc3QoJkVH KHJlZ3VsYXJfbGlzdCkgVFNSTUxTX0NDKTsKIAorI2lmZGVmIFpFTkRfREVCVUcKKwlpZiAo R0NfRyhnY19lbmFibGVkKSAmJiAhQ0codW5jbGVhbl9zaHV0ZG93bikpIHsKKwkJZ2NfY29s bGVjdF9jeWNsZXMoVFNSTUxTX0MpOworCX0KKyNlbmRpZgorCiAJemVuZF90cnkgewogCQl6 ZW5kX2luaV9kZWFjdGl2YXRlKFRTUk1MU19DKTsKIAl9IHplbmRfZW5kX3RyeSgpOwpJbmRl eDogWmVuZC96ZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVu ZEVuZ2luZTIvemVuZC5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjI5My4yLjExLjIuOS4y LjE0CmRpZmYgLXUgLXAgLWQgLXIxLjI5My4yLjExLjIuOS4yLjE0IHplbmQuaAotLS0gWmVu ZC96ZW5kLmgJMjMgTm92IDIwMDcgMTU6MDM6MDIgLTAwMDAJMS4yOTMuMi4xMS4yLjkuMi4x NAorKysgWmVuZC96ZW5kLmgJMTkgRGVjIDIwMDcgMDg6MzI6MzEgLTAwMDAKQEAgLTcwOSw2 ICs3MDksNyBAQCBFTkRfRVhURVJOX0MoKQogCiAjZGVmaW5lIFpFTkRfTUFYX1JFU0VSVkVE X1JFU09VUkNFUwk0CiAKKyNpbmNsdWRlICJ6ZW5kX2djLmgiCiAjaW5jbHVkZSAiemVuZF9v cGVyYXRvcnMuaCIKICNpbmNsdWRlICJ6ZW5kX3ZhcmlhYmxlcy5oIgogCkluZGV4OiBaZW5k L3plbmRfYnVpbHRpbl9mdW5jdGlvbnMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVw b3NpdG9yeS9aZW5kRW5naW5lMi96ZW5kX2J1aWx0aW5fZnVuY3Rpb25zLmMsdgpyZXRyaWV2 aW5nIHJldmlzaW9uIDEuMjc3LjIuMTIuMi4yNS4yLjYKZGlmZiAtdSAtcCAtZCAtcjEuMjc3 LjIuMTIuMi4yNS4yLjYgemVuZF9idWlsdGluX2Z1bmN0aW9ucy5jCi0tLSBaZW5kL3plbmRf YnVpbHRpbl9mdW5jdGlvbnMuYwkyMiBOb3YgMjAwNyAxMzoyNzoxMSAtMDAwMAkxLjI3Ny4y LjEyLjIuMjUuMi42CisrKyBaZW5kL3plbmRfYnVpbHRpbl9mdW5jdGlvbnMuYwkxOSBEZWMg MjAwNyAwODozMjozMSAtMDAwMApAQCAtODUsNiArODUsMTAgQEAgc3RhdGljIFpFTkRfRlVO Q1RJT04oemVuZF90ZXN0X2Z1bmMpOwogc3RhdGljIFpFTkRfRlVOQ1RJT04oemVuZF90aHJl YWRfaWQpOwogI2VuZGlmCiAjZW5kaWYKK3N0YXRpYyBaRU5EX0ZVTkNUSU9OKGdjX2NvbGxl Y3RfY3ljbGVzKTsKK3N0YXRpYyBaRU5EX0ZVTkNUSU9OKGdjX2VuYWJsZWQpOworc3RhdGlj IFpFTkRfRlVOQ1RJT04oZ2NfZW5hYmxlKTsKK3N0YXRpYyBaRU5EX0ZVTkNUSU9OKGdjX2Rp c2FibGUpOwogCiAjaW5jbHVkZSAiemVuZF9hcmdfZGVmcy5jIgogCkBAIC0xNDgsNiArMTUy LDEwIEBAIHN0YXRpYyBjb25zdCB6ZW5kX2Z1bmN0aW9uX2VudHJ5IGJ1aWx0aW4KIAlaRU5E X0ZFKHplbmRfdGhyZWFkX2lkLAkJTlVMTCkKICNlbmRpZgogI2VuZGlmCisJWkVORF9GRShn Y19jb2xsZWN0X2N5Y2xlcywgTlVMTCkKKwlaRU5EX0ZFKGdjX2VuYWJsZWQsIE5VTEwpCisJ WkVORF9GRShnY19lbmFibGUsIE5VTEwpCisJWkVORF9GRShnY19kaXNhYmxlLCBOVUxMKQog CXsgTlVMTCwgTlVMTCwgTlVMTCB9CiB9OwogCkBAIC0xNjYsNiArMTc0LDM4IEBAIFpFTkRf RlVOQ1RJT04oemVuZF92ZXJzaW9uKQogfQogLyogfX19ICovCiAKKy8qIHt7eyBwcm90byBp bnQgZ2NfY29sbGVjdF9jeWNsZXModm9pZCkKKyAgIEZvcmNlcyBjb2xsZWN0aW9uIG9mIGFu eSBleGlzdGluZyBnYXJiYWdlIGN5Y2xlcy4KKyAgIFJldHVybnMgbnVtYmVyIG9mIGZyZWVk IHp2YWxzICovCitaRU5EX0ZVTkNUSU9OKGdjX2NvbGxlY3RfY3ljbGVzKQoreworCVJFVFVS Tl9MT05HKGdjX2NvbGxlY3RfY3ljbGVzKFRTUk1MU19DKSk7Cit9CisvKiB9fX0gKi8KKwor Lyoge3t7IHByb3RvIHZvaWQgZ2NfZW5hYmxlZCh2b2lkKQorICAgUmV0dXJucyBzdGF0dXMg b2YgdGhlIGNpcmN1bGFyIHJlZmVyZW5jZSBjb2xsZWN0b3IgKi8KK1pFTkRfRlVOQ1RJT04o Z2NfZW5hYmxlZCkKK3sKKwlSRVRVUk5fQk9PTChHQ19HKGdjX2VuYWJsZWQpKTsKK30KKy8q IH19fSAqLworCisvKiB7e3sgcHJvdG8gdm9pZCBnY19lbmFibGUodm9pZCkKKyAgIEFjdGl2 YXRlcyB0aGUgY2lyY3VsYXIgcmVmZXJlbmNlIGNvbGxlY3RvciAqLworWkVORF9GVU5DVElP TihnY19lbmFibGUpCit7CisJemVuZF9hbHRlcl9pbmlfZW50cnkoInplbmQuZW5hYmxlX2dj Iiwgc2l6ZW9mKCJ6ZW5kLmVuYWJsZV9nYyIpLCAiMSIsIHNpemVvZigiMSIpLTEsIFpFTkRf SU5JX1VTRVIsIFpFTkRfSU5JX1NUQUdFX1JVTlRJTUUpOworfQorLyogfX19ICovCisKKy8q IHt7eyBwcm90byB2b2lkIGdjX2Rpc2FibGUodm9pZCkKKyAgIERlYWN0aXZhdGVzIHRoZSBj aXJjdWxhciByZWZlcmVuY2UgY29sbGVjdG9yICovCitaRU5EX0ZVTkNUSU9OKGdjX2Rpc2Fi bGUpCit7CisJemVuZF9hbHRlcl9pbmlfZW50cnkoInplbmQuZW5hYmxlX2djIiwgc2l6ZW9m KCJ6ZW5kLmVuYWJsZV9nYyIpLCAiMCIsIHNpemVvZigiMCIpLTEsIFpFTkRfSU5JX1VTRVIs IFpFTkRfSU5JX1NUQUdFX1JVTlRJTUUpOworfQorLyogfX19ICovCiAKIC8qIHt7eyBwcm90 byBpbnQgZnVuY19udW1fYXJncyh2b2lkKQogICAgR2V0IHRoZSBudW1iZXIgb2YgYXJndW1l bnRzIHRoYXQgd2VyZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uICovCkluZGV4OiBaZW5kL3pl bmRfZXhlY3V0ZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1plbmRF bmdpbmUyL3plbmRfZXhlY3V0ZS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjcxNi4yLjEy LjIuMjQuMi45CmRpZmYgLXUgLXAgLWQgLXIxLjcxNi4yLjEyLjIuMjQuMi45IHplbmRfZXhl Y3V0ZS5jCi0tLSBaZW5kL3plbmRfZXhlY3V0ZS5jCTE0IERlYyAyMDA3IDE0OjE0OjUwIC0w MDAwCTEuNzE2LjIuMTIuMi4yNC4yLjkKKysrIFplbmQvemVuZF9leGVjdXRlLmMJMTkgRGVj IDIwMDcgMDg6MzI6MzEgLTAwMDAKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIHZvaWQgemVu ZF9leHRlbnNpb25fZmNhbGxfZW5kX2hhbgogCiAjZGVmaW5lIFRFTVBfVkFSX1NUQUNLX0xJ TUlUIDIwMDAKIAotc3RhdGljIGlubGluZSB2b2lkIHplbmRfcHp2YWxfdW5sb2NrX2Z1bmMo enZhbCAqeiwgemVuZF9mcmVlX29wICpzaG91bGRfZnJlZSwgaW50IHVucmVmKQorc3RhdGlj IGlubGluZSB2b2lkIHplbmRfcHp2YWxfdW5sb2NrX2Z1bmMoenZhbCAqeiwgemVuZF9mcmVl X29wICpzaG91bGRfZnJlZSwgaW50IHVucmVmIFRTUk1MU19EQykKIHsKIAlpZiAoIVpfREVM UkVGX1AoeikpIHsKIAkJWl9TRVRfUkVGQ09VTlRfUCh6LCAxKTsKQEAgLTc2LDE5ICs3Niwy MSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgemVuZF9wenZhbF91bmxvY2tfZnVuCiAJCWlmICh1 bnJlZiAmJiBaX0lTUkVGX1AoeikgJiYgWl9SRUZDT1VOVF9QKHopID09IDEpIHsKIAkJCVpf VU5TRVRfSVNSRUZfUCh6KTsKIAkJfQorCQlHQ19aVkFMX0NIRUNLX1BPU1NJQkxFX1JPT1Qo eik7CiAJfQogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgemVuZF9wenZhbF91bmxvY2tfZnJl ZV9mdW5jKHp2YWwgKnopCiB7CiAJaWYgKCFaX0RFTFJFRl9QKHopKSB7CisJCUdDX1JFTU9W RV9aVkFMX0ZST01fQlVGRkVSKHopOwogCQl6dmFsX2R0b3Ioeik7CiAJCXNhZmVfZnJlZV96 dmFsX3B0cih6KTsKIAl9CiB9CiAKLSNkZWZpbmUgUFpWQUxfVU5MT0NLKHosIGYpIHplbmRf cHp2YWxfdW5sb2NrX2Z1bmMoeiwgZiwgMSkKLSNkZWZpbmUgUFpWQUxfVU5MT0NLX0VYKHos IGYsIHUpIHplbmRfcHp2YWxfdW5sb2NrX2Z1bmMoeiwgZiwgdSkKKyNkZWZpbmUgUFpWQUxf VU5MT0NLKHosIGYpIHplbmRfcHp2YWxfdW5sb2NrX2Z1bmMoeiwgZiwgMSBUU1JNTFNfQ0Mp CisjZGVmaW5lIFBaVkFMX1VOTE9DS19FWCh6LCBmLCB1KSB6ZW5kX3B6dmFsX3VubG9ja19m dW5jKHosIGYsIHUgVFNSTUxTX0NDKQogI2RlZmluZSBQWlZBTF9VTkxPQ0tfRlJFRSh6KSB6 ZW5kX3B6dmFsX3VubG9ja19mcmVlX2Z1bmMoeikKICNkZWZpbmUgUFpWQUxfTE9DSyh6KSBa X0FERFJFRl9QKCh6KSkKICNkZWZpbmUgUkVUVVJOX1ZBTFVFX1VOVVNFRChwem4pCSgoKHB6 biktPnUuRUEudHlwZSAmIEVYVF9UWVBFX1VOVVNFRCkpCkBAIC03ODUsNiArNzg3LDcgQEAg c3RhdGljIGlubGluZSB6dmFsKiB6ZW5kX2Fzc2lnbl90b192YXJpYQogCQkJCQkqdmFyaWFi bGVfcHRyID0gdG1wOwogCQkJCX0gZWxzZSB7CiAJCQkJCVpfQUREUkVGX1AodmFsdWUpOwor CQkJCQlHQ19SRU1PVkVfWlZBTF9GUk9NX0JVRkZFUih2YXJpYWJsZV9wdHIpOwogCQkJCQl6 ZW5kaV96dmFsX2R0b3IoKnZhcmlhYmxlX3B0cik7CiAJCQkJCXNhZmVfZnJlZV96dmFsX3B0 cih2YXJpYWJsZV9wdHIpOwogCQkJCQkqdmFyaWFibGVfcHRyX3B0ciA9IHZhbHVlOwpJbmRl eDogWmVuZC96ZW5kX2V4ZWN1dGVfQVBJLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3Jl cG9zaXRvcnkvWmVuZEVuZ2luZTIvemVuZF9leGVjdXRlX0FQSS5jLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjMzMS4yLjIwLjIuMjQuMi4xNApkaWZmIC11IC1wIC1kIC1yMS4zMzEuMi4y MC4yLjI0LjIuMTQgemVuZF9leGVjdXRlX0FQSS5jCi0tLSBaZW5kL3plbmRfZXhlY3V0ZV9B UEkuYwk3IERlYyAyMDA3IDE3OjExOjIzIC0wMDAwCTEuMzMxLjIuMjAuMi4yNC4yLjE0Cisr KyBaZW5kL3plbmRfZXhlY3V0ZV9BUEkuYwkxOSBEZWMgMjAwNyAwODozMjozMSAtMDAwMApA QCAtNDE4LDE3ICs0MTgsMjIgQEAgWkVORF9BUEkgdm9pZCBfenZhbF9wdHJfZHRvcih6dmFs ICoqenZhbAogI2VuZGlmCiAJWl9ERUxSRUZfUFAoenZhbF9wdHIpOwogCWlmIChaX1JFRkNP VU5UX1BQKHp2YWxfcHRyKSA9PSAwKSB7CisJCUdDX1JFTU9WRV9aVkFMX0ZST01fQlVGRkVS KCp6dmFsX3B0cik7CiAJCXp2YWxfZHRvcigqenZhbF9wdHIpOwogCQlzYWZlX2ZyZWVfenZh bF9wdHJfcmVsKCp6dmFsX3B0ciBaRU5EX0ZJTEVfTElORV9SRUxBWV9DQyBaRU5EX0ZJTEVf TElORV9DQyk7Ci0JfSBlbHNlIGlmIChaX1JFRkNPVU5UX1BQKHp2YWxfcHRyKSA9PSAxKSB7 Ci0JCWlmICgoKnp2YWxfcHRyKS0+dHlwZSA9PSBJU19PQkpFQ1QpIHsKLQkJCVRTUk1MU19G RVRDSCgpOworCX0gZWxzZSB7CisJCVRTUk1MU19GRVRDSCgpOwogCi0JCQlpZiAoRUcoemUx X2NvbXBhdGliaWxpdHlfbW9kZSkpIHsKLQkJCQlyZXR1cm47CisJCWlmIChaX1JFRkNPVU5U X1BQKHp2YWxfcHRyKSA9PSAxKSB7CisJCQlpZiAoKCp6dmFsX3B0ciktPnR5cGUgPT0gSVNf T0JKRUNUKSB7CisJCQkJaWYgKEVHKHplMV9jb21wYXRpYmlsaXR5X21vZGUpKSB7CisJCQkJ CXJldHVybjsKKwkJCQl9CiAJCQl9CisJCQlaX1VOU0VUX0lTUkVGX1BQKHp2YWxfcHRyKTsK IAkJfQotCQlaX1VOU0VUX0lTUkVGX1BQKHp2YWxfcHRyKTsKKworCQlHQ19aVkFMX0NIRUNL X1BPU1NJQkxFX1JPT1QoKnp2YWxfcHRyKTsKIAl9CiB9CiAvKiB9fX0gKi8KSW5kZXg6IFpl bmQvemVuZF9nYy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFplbmQvemVuZF9nYy5jCmRp ZmYgLU4gWmVuZC96ZW5kX2djLmMKLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAw IC0wMDAwCisrKyBaZW5kL3plbmRfZ2MuYwkxOSBEZWMgMjAwNyAwODozMjozMiAtMDAwMApA QCAtMCwwICsxLDUxNiBAQAorLyoKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBaZW5k IEVuZ2luZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgQ29weXJpZ2h0IChj KSAxOTk4LTIwMDcgWmVuZCBUZWNobm9sb2dpZXMgTHRkLiAoaHR0cDovL3d3dy56ZW5kLmNv bSkgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IFRoaXMgc291cmNlIGZpbGUgaXMg c3ViamVjdCB0byB2ZXJzaW9uIDIuMDAgb2YgdGhlIFplbmQgbGljZW5zZSwgICAgIHwKKyAg IHwgdGhhdCBpcyBidW5kbGVkIHdpdGggdGhpcyBwYWNrYWdlIGluIHRoZSBmaWxlIExJQ0VO U0UsIGFuZCBpcyAgICAgICAgfAorICAgfCBhdmFpbGFibGUgdGhyb3VnaCB0aGUgd29ybGQt d2lkZS13ZWIgYXQgdGhlIGZvbGxvd2luZyB1cmw6ICAgICAgICAgICB8CisgICB8IGh0dHA6 Ly93d3cuemVuZC5jb20vbGljZW5zZS8yXzAwLnR4dC4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwKKyAgIHwgSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhl IFplbmQgbGljZW5zZSBhbmQgYXJlIHVuYWJsZSB0byAgfAorICAgfCBvYnRhaW4gaXQgdGhy b3VnaCB0aGUgd29ybGQtd2lkZS13ZWIsIHBsZWFzZSBzZW5kIGEgbm90ZSB0byAgICAgICAg ICB8CisgICB8IGxpY2Vuc2VAemVuZC5jb20gc28gd2UgY2FuIG1haWwgeW91IGEgY29weSBp bW1lZGlhdGVseS4gICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAg fCBBdXRob3JzOiBEYXZpZCBXYW5nIDxwbGFuZXRiZWluZ0BnbWFpbC5jb20+ICAgICAgICAg ICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgIERtaXRyeSBTdG9nb3YgPGRtaXRy eUB6ZW5kLmNvbT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKworKi8KKworLyogJElkOiQgKi8KKworI2luY2x1ZGUgInplbmQuaCIKKyNp bmNsdWRlICJ6ZW5kX0FQSS5oIgorCisjZGVmaW5lIEdDX1JPT1RfQlVGRkVSX01BWF9FTlRS SUVTIDEwMDAwCisKKyNpZmRlZiBaVFMKK1pFTkRfQVBJIGludCBnY19nbG9iYWxzX2lkOwor I2Vsc2UKK1pFTkRfQVBJIHplbmRfZ2NfZ2xvYmFscyBnY19nbG9iYWxzOworI2VuZGlmCisK Ky8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCitzdGF0aWMgaW50IGNoaWxkcmVuX3NjYW5f YmxhY2soenZhbCAqKnB6IFRTUk1MU19EQyk7CitzdGF0aWMgaW50IGNoaWxkcmVuX21hcmtf Z3JleSh6dmFsICoqcHogVFNSTUxTX0RDKTsKK3N0YXRpYyBpbnQgY2hpbGRyZW5fY29sbGVj dF93aGl0ZSh6dmFsICoqcHogVFNSTUxTX0RDKTsKK3N0YXRpYyBpbnQgY2hpbGRyZW5fc2Nh bih6dmFsICoqcHogVFNSTUxTX0RDKTsKKworc3RhdGljIHZvaWQgcm9vdF9idWZmZXJfZHRv cih6ZW5kX2djX2dsb2JhbHMgKmdjX2dsb2JhbHMgVFNSTUxTX0RDKQoreworCWlmIChnY19n bG9iYWxzLT5idWYpIHsKKwkJZnJlZShnY19nbG9iYWxzLT5idWYpOworCQlnY19nbG9iYWxz LT5idWYgPSBOVUxMOworCX0JCit9CisKK3N0YXRpYyB2b2lkIGdjX2dsb2JhbHNfY3Rvcl9l eCh6ZW5kX2djX2dsb2JhbHMgKmdjX2dsb2JhbHMgVFNSTUxTX0RDKQoreworCWdjX2dsb2Jh bHMtPmdjX2VuYWJsZWQgPSAwOworCisJZ2NfZ2xvYmFscy0+YnVmID0gTlVMTDsKKworCWdj X2dsb2JhbHMtPnJvb3RzLm5leHQgPSBOVUxMOworCWdjX2dsb2JhbHMtPnJvb3RzLnByZXYg PSBOVUxMOworCWdjX2dsb2JhbHMtPnVudXNlZCA9IE5VTEw7CisJZ2NfZ2xvYmFscy0+enZh bF90b19mcmVlID0gTlVMTDsKKworCWdjX2dsb2JhbHMtPmdjX3J1bnMgPSAwOworCWdjX2ds b2JhbHMtPmNvbGxlY3RlZCA9IDA7CisKKyNpZiBHQ19CRU5DSAorCWdjX2dsb2JhbHMtPnJv b3RfYnVmX2xlbmd0aCA9IDA7CisJZ2NfZ2xvYmFscy0+cm9vdF9idWZfcGVhayA9IDA7CisJ Z2NfZ2xvYmFscy0+enZhbF9wb3NzaWJsZV9yb290ID0gMDsKKwlnY19nbG9iYWxzLT56b2Jq X3Bvc3NpYmxlX3Jvb3QgPSAwOworCWdjX2dsb2JhbHMtPnp2YWxfYnVmZmVyZWQgPSAwOwor CWdjX2dsb2JhbHMtPnpvYmpfYnVmZmVyZWQgPSAwOworCWdjX2dsb2JhbHMtPnp2YWxfcmVt b3ZlX2Zyb21fYnVmZmVyID0gMDsKKwlnY19nbG9iYWxzLT56b2JqX3JlbW92ZV9mcm9tX2J1 ZmZlciA9IDA7CisJZ2NfZ2xvYmFscy0+enZhbF9tYXJrZWRfZ3JleSA9IDA7CisJZ2NfZ2xv YmFscy0+em9ial9tYXJrZWRfZ3JleSA9IDA7CisjZW5kaWYKK30KKworWkVORF9BUEkgdm9p ZCBnY19nbG9iYWxzX2N0b3IoVFNSTUxTX0QpCit7CisjaWZkZWYgWlRTCisJdHNfYWxsb2Nh dGVfaWQoJmdjX2dsb2JhbHNfaWQsIHNpemVvZih6ZW5kX2djX2dsb2JhbHMpLCAodHNfYWxs b2NhdGVfY3RvcikgZ2NfZ2xvYmFsc19jdG9yX2V4LCAodHNfYWxsb2NhdGVfZHRvcikgcm9v dF9idWZmZXJfZHRvcik7CisjZWxzZQorCWdjX2dsb2JhbHNfY3Rvcl9leCgmZ2NfZ2xvYmFs cyk7CisjZW5kaWYKK30KKworWkVORF9BUEkgdm9pZCBnY19nbG9iYWxzX2R0b3IoVFNSTUxT X0QpCit7CisjaWZuZGVmIFpUUworCXJvb3RfYnVmZmVyX2R0b3IoJmdjX2dsb2JhbHMgVFNS TUxTX0RDKTsKKyNlbmRpZgorfQorCitaRU5EX0FQSSB2b2lkIGdjX3Jlc2V0KFRTUk1MU19E KQoreworCWludCBpOworCisJR0NfRyhnY19ydW5zKSA9IDA7CisJR0NfRyhjb2xsZWN0ZWQp ID0gMDsKKworI2lmIEdDX0JFTkNICisJR0NfRyhyb290X2J1Zl9sZW5ndGgpID0gMDsKKwlH Q19HKHJvb3RfYnVmX3BlYWspID0gMDsKKwlHQ19HKHp2YWxfcG9zc2libGVfcm9vdCkgPSAw OworCUdDX0coem9ial9wb3NzaWJsZV9yb290KSA9IDA7CisJR0NfRyh6dmFsX2J1ZmZlcmVk KSA9IDA7CisJR0NfRyh6b2JqX2J1ZmZlcmVkKSA9IDA7CisJR0NfRyh6dmFsX3JlbW92ZV9m cm9tX2J1ZmZlcikgPSAwOworCUdDX0coem9ial9yZW1vdmVfZnJvbV9idWZmZXIpID0gMDsK KwlHQ19HKHp2YWxfbWFya2VkX2dyZXkpID0gMDsKKwlHQ19HKHpvYmpfbWFya2VkX2dyZXkp ID0gMDsKKyNlbmRpZgorCisJaWYgKEdDX0coYnVmKSAmJgorCSAgICAoR0NfRyhyb290cyku bmV4dCAhPSAmR0NfRyhyb290cykgfHwKKwkgICAgIEdDX0cocm9vdHMpLnByZXYgIT0gJkdD X0cocm9vdHMpKSkgeworCisJCUdDX0cocm9vdHMpLm5leHQgPSAmR0NfRyhyb290cyk7CisJ CUdDX0cocm9vdHMpLnByZXYgPSAmR0NfRyhyb290cyk7CisKKwkJR0NfRyh1bnVzZWQpID0g JkdDX0coYnVmKVswXTsKKwkJZm9yIChpID0gMDsgaSA8IEdDX1JPT1RfQlVGRkVSX01BWF9F TlRSSUVTLTE7IGkrKykgeworCQkJR0NfRyhidWYpW2ldLnByZXYgPSAmR0NfRyhidWYpW2kr MV07CisJCX0KKwkJR0NfRyhidWYpW0dDX1JPT1RfQlVGRkVSX01BWF9FTlRSSUVTLTFdLnBy ZXYgPSBOVUxMOworCisJCUdDX0coenZhbF90b19mcmVlKSA9IE5VTEw7CisJfQorfQorCita RU5EX0FQSSB2b2lkIGdjX2luaXQoVFNSTUxTX0QpCit7CisJaWYgKEdDX0coYnVmKSA9PSBO VUxMICYmIEdDX0coZ2NfZW5hYmxlZCkpIHsKKwkJR0NfRyhidWYpID0gKGdjX3Jvb3RfYnVm ZmVyKikgbWFsbG9jKHNpemVvZihnY19yb290X2J1ZmZlcikgKiBHQ19ST09UX0JVRkZFUl9N QVhfRU5UUklFUyk7CisJCWdjX3Jlc2V0KFRTUk1MU19DKTsKKwl9Cit9CisKK1pFTkRfQVBJ IHZvaWQgZ2NfenZhbF9wb3NzaWJsZV9yb290KHp2YWwgKnp2IFRTUk1MU19EQykKK3sKKwlp ZiAoenYtPnR5cGUgPT0gSVNfT0JKRUNUKSB7CisJCUdDX1pPQkpfQ0hFQ0tfUE9TU0lCTEVf Uk9PVCh6dik7CisJCXJldHVybjsKKwl9CisKKwlHQ19CRU5DSF9JTkMoenZhbF9wb3NzaWJs ZV9yb290KTsKKworCWlmIChHQ19aVkFMX0dFVF9DT0xPUih6dikgIT0gR0NfUFVSUExFKSB7 CisJCUdDX1pWQUxfU0VUX1BVUlBMRSh6dik7CisKKwkJaWYgKCFHQ19aVkFMX0FERFJFU1Mo enYpKSB7CisJCQlnY19yb290X2J1ZmZlciAqbmV3Um9vdCA9IEdDX0codW51c2VkKTsKKwor CQkJaWYgKCFuZXdSb290KSB7CisJCQkJaWYgKCFHQ19HKGdjX2VuYWJsZWQpKSB7CisJCQkJ CUdDX1pWQUxfU0VUX0JMQUNLKHp2KTsKKwkJCQkJcmV0dXJuOworCQkJCX0KKwkJCQl6di0+ cmVmY291bnRfX2djKys7CisJCQkJZ2NfY29sbGVjdF9jeWNsZXMoVFNSTUxTX0MpOworCQkJ CXp2LT5yZWZjb3VudF9fZ2MtLTsKKwkJCQlHQ19aVkFMX1NFVF9QVVJQTEUoenYpOworCQkJ CW5ld1Jvb3QgPSBHQ19HKHVudXNlZCk7CisJCQl9CisKKwkJCUdDX0codW51c2VkKSA9IG5l d1Jvb3QtPnByZXY7CisKKwkJCW5ld1Jvb3QtPm5leHQgPSBHQ19HKHJvb3RzKS5uZXh0Owor CQkJbmV3Um9vdC0+cHJldiA9ICZHQ19HKHJvb3RzKTsKKwkJCUdDX0cocm9vdHMpLm5leHQt PnByZXYgPSBuZXdSb290OworCQkJR0NfRyhyb290cykubmV4dCA9IG5ld1Jvb3Q7CisKKwkJ CUdDX1pWQUxfU0VUX0FERFJFU1MoenYsIG5ld1Jvb3QpOworCisJCQluZXdSb290LT5oYW5k bGUgPSAwOworCQkJbmV3Um9vdC0+dS5weiA9IHp2OworCisJCQlHQ19CRU5DSF9JTkMoenZh bF9idWZmZXJlZCk7CisJCQlHQ19CRU5DSF9JTkMocm9vdF9idWZfbGVuZ3RoKTsKKwkJCUdD X0JFTkNIX1BFQUsocm9vdF9idWZfcGVhaywgcm9vdF9idWZfbGVuZ3RoKTsKKwkJfQorCX0K K30KKworWkVORF9BUEkgdm9pZCBnY196b2JqX3Bvc3NpYmxlX3Jvb3QoenZhbCAqenYgVFNS TUxTX0RDKQoreworCXN0cnVjdCBfc3RvcmVfb2JqZWN0ICpvYmo7CisKKwlpZiAoVU5FWFBF Q1RFRChaX09CSl9IVF9QKHp2KS0+Z2V0X3Byb3BlcnRpZXMgPT0gTlVMTCkpIHsKKwkJcmV0 dXJuOworCX0KKworCUdDX0JFTkNIX0lOQyh6b2JqX3Bvc3NpYmxlX3Jvb3QpOworCisJb2Jq ID0gJkVHKG9iamVjdHNfc3RvcmUpLm9iamVjdF9idWNrZXRzW1pfT0JKX0hBTkRMRV9QKHp2 KV0uYnVja2V0Lm9iajsKKwlpZiAoR0NfR0VUX0NPTE9SKG9iai0+YnVmZmVyZWQpICE9IEdD X1BVUlBMRSkgeworCQlHQ19TRVRfUFVSUExFKG9iai0+YnVmZmVyZWQpOworCQlpZiAoIUdD X0FERFJFU1Mob2JqLT5idWZmZXJlZCkpIHsKKwkJCWdjX3Jvb3RfYnVmZmVyICpuZXdSb290 ID0gR0NfRyh1bnVzZWQpOworCisJCQlpZiAoIW5ld1Jvb3QpIHsKKwkJCQlpZiAoIUdDX0co Z2NfZW5hYmxlZCkpIHsKKwkJCQkJR0NfWlZBTF9TRVRfQkxBQ0soenYpOworCQkJCQlyZXR1 cm47CisJCQkJfQorCQkJCXp2LT5yZWZjb3VudF9fZ2MrKzsKKwkJCQlnY19jb2xsZWN0X2N5 Y2xlcyhUU1JNTFNfQyk7CisJCQkJenYtPnJlZmNvdW50X19nYy0tOworCQkJCUdDX1NFVF9Q VVJQTEUob2JqLT5idWZmZXJlZCk7CisJCQkJbmV3Um9vdCA9IEdDX0codW51c2VkKTsKKwkJ CX0KKworCQkJR0NfRyh1bnVzZWQpID0gbmV3Um9vdC0+cHJldjsKKworCQkJbmV3Um9vdC0+ bmV4dCA9IEdDX0cocm9vdHMpLm5leHQ7CisJCQluZXdSb290LT5wcmV2ID0gJkdDX0cocm9v dHMpOworCQkJR0NfRyhyb290cykubmV4dC0+cHJldiA9IG5ld1Jvb3Q7CisJCQlHQ19HKHJv b3RzKS5uZXh0ID0gbmV3Um9vdDsKKworCQkJR0NfU0VUX0FERFJFU1Mob2JqLT5idWZmZXJl ZCwgbmV3Um9vdCk7CisKKwkJCW5ld1Jvb3QtPmhhbmRsZSA9IFpfT0JKX0hBTkRMRV9QKHp2 KTsKKwkJCW5ld1Jvb3QtPnUuaGFuZGxlcnMgPSBaX09CSl9IVF9QKHp2KTsKKworCQkJR0Nf QkVOQ0hfSU5DKHpvYmpfYnVmZmVyZWQpOworCQkJR0NfQkVOQ0hfSU5DKHJvb3RfYnVmX2xl bmd0aCk7CisJCQlHQ19CRU5DSF9QRUFLKHJvb3RfYnVmX3BlYWssIHJvb3RfYnVmX2xlbmd0 aCk7CisJCX0KKwl9Cit9CisKK3N0YXRpYyB2b2lkIHpvYmpfc2Nhbl9ibGFjayhzdHJ1Y3Qg X3N0b3JlX29iamVjdCAqb2JqLCB6dmFsICpweiBUU1JNTFNfREMpCit7CisJR0NfU0VUX0JM QUNLKG9iai0+YnVmZmVyZWQpOworCisJaWYgKEVYUEVDVEVEKFpfT0JKX0hBTkRMRVJfUChw eiwgZ2V0X3Byb3BlcnRpZXMpICE9IE5VTEwpKSB7CisJCXplbmRfaGFzaF9hcHBseShaX09C SlBST1BfUChweiksIChhcHBseV9mdW5jX3QpIGNoaWxkcmVuX3NjYW5fYmxhY2sgVFNSTUxT X0NDKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkIHp2YWxfc2Nhbl9ibGFjayh6dmFsICpweiBU U1JNTFNfREMpCit7CisJR0NfWlZBTF9TRVRfQkxBQ0socHopOworCisJaWYgKFpfVFlQRV9Q KHB6KSA9PSBJU19PQkpFQ1QpIHsKKwkJc3RydWN0IF9zdG9yZV9vYmplY3QgKm9iaiA9ICZF RyhvYmplY3RzX3N0b3JlKS5vYmplY3RfYnVja2V0c1taX09CSl9IQU5ETEVfUChweildLmJ1 Y2tldC5vYmo7CisKKwkJb2JqLT5yZWZjb3VudCsrOworCQlpZiAoR0NfR0VUX0NPTE9SKG9i ai0+YnVmZmVyZWQpICE9IEdDX0JMQUNLKSB7CisJCQl6b2JqX3NjYW5fYmxhY2sob2JqLCBw eiBUU1JNTFNfQ0MpOworCQl9CisJfSBlbHNlIGlmIChaX1RZUEVfUChweikgPT0gSVNfQVJS QVkpIHsKKwkJaWYgKFpfQVJSVkFMX1AocHopICE9ICZFRyhzeW1ib2xfdGFibGUpKSB7CisJ CQl6ZW5kX2hhc2hfYXBwbHkoWl9BUlJWQUxfUChweiksIChhcHBseV9mdW5jX3QpIGNoaWxk cmVuX3NjYW5fYmxhY2sgVFNSTUxTX0NDKTsKKwkJfQorCX0KK30KKworc3RhdGljIGludCBj aGlsZHJlbl9zY2FuX2JsYWNrKHp2YWwgKipweiBUU1JNTFNfREMpCit7CisJKCpweiktPnJl ZmNvdW50X19nYysrOworCisJaWYgKEdDX1pWQUxfR0VUX0NPTE9SKCpweikgIT0gR0NfQkxB Q0spIHsKKwkJenZhbF9zY2FuX2JsYWNrKCpweiBUU1JNTFNfQ0MpOworCX0KKworCXJldHVy biAwOworfQorCitzdGF0aWMgdm9pZCB6b2JqX21hcmtfZ3JleShzdHJ1Y3QgX3N0b3JlX29i amVjdCAqb2JqLCB6dmFsICpweiBUU1JNTFNfREMpCit7CisJaWYgKEdDX0dFVF9DT0xPUihv YmotPmJ1ZmZlcmVkKSAhPSBHQ19HUkVZKSB7CisJCUdDX0JFTkNIX0lOQyh6b2JqX21hcmtl ZF9ncmV5KTsKKwkJR0NfU0VUX0NPTE9SKG9iai0+YnVmZmVyZWQsIEdDX0dSRVkpOworCQlp ZiAoRVhQRUNURUQoWl9PQkpfSEFORExFUl9QKHB6LCBnZXRfcHJvcGVydGllcykgIT0gTlVM TCkpIHsKKwkJCXplbmRfaGFzaF9hcHBseShaX09CSlBST1BfUChweiksIChhcHBseV9mdW5j X3QpIGNoaWxkcmVuX21hcmtfZ3JleSBUU1JNTFNfQ0MpOworCQl9CisJfQorfQorCitzdGF0 aWMgdm9pZCB6dmFsX21hcmtfZ3JleSh6dmFsICpweiBUU1JNTFNfREMpCit7CisJaWYgKEdD X1pWQUxfR0VUX0NPTE9SKHB6KSAhPSBHQ19HUkVZKSB7CisJCUdDX0JFTkNIX0lOQyh6dmFs X21hcmtlZF9ncmV5KTsKKwkJR0NfWlZBTF9TRVRfQ09MT1IocHosIEdDX0dSRVkpOworCisJ CWlmIChaX1RZUEVfUChweikgPT0gSVNfT0JKRUNUKSB7CisJCQlzdHJ1Y3QgX3N0b3JlX29i amVjdCAqb2JqID0gJkVHKG9iamVjdHNfc3RvcmUpLm9iamVjdF9idWNrZXRzW1pfT0JKX0hB TkRMRV9QKHB6KV0uYnVja2V0Lm9iajsKKworCQkJb2JqLT5yZWZjb3VudC0tOworCQkJem9i al9tYXJrX2dyZXkob2JqLCBweiBUU1JNTFNfQ0MpOworCQl9IGVsc2UgaWYgKFpfVFlQRV9Q KHB6KSA9PSBJU19BUlJBWSkgeworCQkJaWYgKFpfQVJSVkFMX1AocHopID09ICZFRyhzeW1i b2xfdGFibGUpKSB7CisJCQkJR0NfWlZBTF9TRVRfQkxBQ0socHopOworCQkJfSBlbHNlIHsK KwkJCQl6ZW5kX2hhc2hfYXBwbHkoWl9BUlJWQUxfUChweiksIChhcHBseV9mdW5jX3QpIGNo aWxkcmVuX21hcmtfZ3JleSBUU1JNTFNfQ0MpOworCQkJfQorCQl9CisJfQorfQorCitzdGF0 aWMgaW50IGNoaWxkcmVuX21hcmtfZ3JleSh6dmFsICoqcHogVFNSTUxTX0RDKQoreworCSgq cHopLT5yZWZjb3VudF9fZ2MtLTsKKwl6dmFsX21hcmtfZ3JleSgqcHogVFNSTUxTX0NDKTsK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZ2NfbWFya19yb290cyhUU1JNTFNfRCkK K3sKKwlnY19yb290X2J1ZmZlciAqY3VycmVudCA9IEdDX0cocm9vdHMpLm5leHQ7CisKKwl3 aGlsZSAoY3VycmVudCAhPSAmR0NfRyhyb290cykpIHsKKwkJaWYgKGN1cnJlbnQtPmhhbmRs ZSkgeworCQkJc3RydWN0IF9zdG9yZV9vYmplY3QgKm9iaiA9ICZFRyhvYmplY3RzX3N0b3Jl KS5vYmplY3RfYnVja2V0c1tjdXJyZW50LT5oYW5kbGVdLmJ1Y2tldC5vYmo7CisKKwkJCWlm IChHQ19HRVRfQ09MT1Iob2JqLT5idWZmZXJlZCkgPT0gR0NfUFVSUExFKSB7CisJCQkJenZh bCB6OworCisJCQkJSU5JVF9QWlZBTCgmeik7CisJCQkJWl9PQkpfSEFORExFKHopID0gY3Vy cmVudC0+aGFuZGxlOworCQkJCVpfT0JKX0hUKHopID0gY3VycmVudC0+dS5oYW5kbGVyczsK KwkJCQl6b2JqX21hcmtfZ3JleShvYmosICZ6IFRTUk1MU19DQyk7CisJCQl9IGVsc2Ugewor CQkJCUdDX1NFVF9BRERSRVNTKG9iai0+YnVmZmVyZWQsIE5VTEwpOworCQkJCUdDX1JFTU9W RV9GUk9NX0JVRkZFUihjdXJyZW50KTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWlmIChHQ19a VkFMX0dFVF9DT0xPUihjdXJyZW50LT51LnB6KSA9PSBHQ19QVVJQTEUpIHsKKwkJCQl6dmFs X21hcmtfZ3JleShjdXJyZW50LT51LnB6IFRTUk1MU19DQyk7CisJCQl9IGVsc2UgeworCQkJ CUdDX1pWQUxfU0VUX0FERFJFU1MoY3VycmVudC0+dS5weiwgTlVMTCk7CisJCQkJR0NfUkVN T1ZFX0ZST01fQlVGRkVSKGN1cnJlbnQpOworCQkJfQorCQl9CisJCWN1cnJlbnQgPSBjdXJy ZW50LT5uZXh0OworCX0KK30KKworc3RhdGljIHZvaWQgem9ial9zY2FuKHp2YWwgKnB6IFRT Uk1MU19EQykKK3sKKwlzdHJ1Y3QgX3N0b3JlX29iamVjdCAqb2JqID0gJkVHKG9iamVjdHNf c3RvcmUpLm9iamVjdF9idWNrZXRzW1pfT0JKX0hBTkRMRV9QKHB6KV0uYnVja2V0Lm9iajsK KworCWlmIChHQ19HRVRfQ09MT1Iob2JqLT5idWZmZXJlZCkgPT0gR0NfR1JFWSkgeworCQlp ZiAob2JqLT5yZWZjb3VudCA+IDApIHsKKwkJCXpvYmpfc2Nhbl9ibGFjayhvYmosIHB6IFRT Uk1MU19DQyk7CisJCX0gZWxzZSB7CisJCQlHQ19TRVRfQ09MT1Iob2JqLT5idWZmZXJlZCwg R0NfV0hJVEUpOworCQkJaWYgKEVYUEVDVEVEKFpfT0JKX0hBTkRMRVJfUChweiwgZ2V0X3By b3BlcnRpZXMpICE9IE5VTEwpKSB7CisJCQkJemVuZF9oYXNoX2FwcGx5KFpfT0JKUFJPUF9Q KHB6KSwgKGFwcGx5X2Z1bmNfdCkgY2hpbGRyZW5fc2NhbiBUU1JNTFNfQ0MpOworCQkJfQor CQl9CisJfQorfQorCitzdGF0aWMgaW50IHp2YWxfc2Nhbih6dmFsICpweiBUU1JNTFNfREMp Cit7CisJaWYgKEdDX1pWQUxfR0VUX0NPTE9SKHB6KSA9PSBHQ19HUkVZKSB7CisJCWlmIChw ei0+cmVmY291bnRfX2djID4gMCkgeworCQkJenZhbF9zY2FuX2JsYWNrKHB6IFRTUk1MU19D Qyk7CisJCX0gZWxzZSB7CisJCQlHQ19aVkFMX1NFVF9DT0xPUihweiwgR0NfV0hJVEUpOwor CisJCQlpZiAoWl9UWVBFX1AocHopID09IElTX09CSkVDVCkgeworCQkJCXpvYmpfc2Nhbihw eiBUU1JNTFNfQ0MpOworCQkJfSBlbHNlIGlmIChaX1RZUEVfUChweikgPT0gSVNfQVJSQVkp IHsKKwkJCQlpZiAoWl9BUlJWQUxfUChweikgPT0gJkVHKHN5bWJvbF90YWJsZSkpIHsKKwkJ CQkJR0NfWlZBTF9TRVRfQkxBQ0socHopOworCQkJCX0gZWxzZSB7CisJCQkJCXplbmRfaGFz aF9hcHBseShaX0FSUlZBTF9QKHB6KSwgKGFwcGx5X2Z1bmNfdCkgY2hpbGRyZW5fc2NhbiBU U1JNTFNfQ0MpOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBjaGlsZHJlbl9zY2FuKHp2YWwgKipweiBUU1JNTFNfREMpCit7CisJenZhbF9z Y2FuKCpweiBUU1JNTFNfQ0MpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBnY19z Y2FuX3Jvb3RzKFRTUk1MU19EKQoreworCWdjX3Jvb3RfYnVmZmVyICpjdXJyZW50ID0gR0Nf Ryhyb290cykubmV4dDsKKworCXdoaWxlIChjdXJyZW50ICE9ICZHQ19HKHJvb3RzKSkgewor CQlpZiAoY3VycmVudC0+aGFuZGxlKSB7CisJCQl6dmFsIHo7CisKKwkJCUlOSVRfUFpWQUwo JnopOworCQkJWl9PQkpfSEFORExFKHopID0gY3VycmVudC0+aGFuZGxlOworCQkJWl9PQkpf SFQoeikgPSBjdXJyZW50LT51LmhhbmRsZXJzOworCQkJem9ial9zY2FuKCZ6IFRTUk1MU19D Qyk7CisJCX0gZWxzZSB7CisJCQl6dmFsX3NjYW4oY3VycmVudC0+dS5weiBUU1JNTFNfQ0Mp OworCQl9CisJCWN1cnJlbnQgPSBjdXJyZW50LT5uZXh0OworCX0KK30KKworc3RhdGljIHZv aWQgem9ial9jb2xsZWN0X3doaXRlKHp2YWwgKnB6IFRTUk1MU19EQykKK3sKKwl6ZW5kX29i amVjdF9oYW5kbGUgaGFuZGxlID0gWl9PQkpfSEFORExFX1AocHopOworCXN0cnVjdCBfc3Rv cmVfb2JqZWN0ICpvYmogPSAmRUcob2JqZWN0c19zdG9yZSkub2JqZWN0X2J1Y2tldHNbaGFu ZGxlXS5idWNrZXQub2JqOworCisJaWYgKG9iai0+YnVmZmVyZWQgPT0gKGdjX3Jvb3RfYnVm ZmVyKilHQ19XSElURSkgeworCQlHQ19TRVRfQkxBQ0sob2JqLT5idWZmZXJlZCk7CisKKwkJ aWYgKEVYUEVDVEVEKFpfT0JKX0hBTkRMRVJfUChweiwgZ2V0X3Byb3BlcnRpZXMpICE9IE5V TEwpKSB7CisJCQl6ZW5kX2hhc2hfYXBwbHkoWl9PQkpQUk9QX1AocHopLCAoYXBwbHlfZnVu Y190KSBjaGlsZHJlbl9jb2xsZWN0X3doaXRlIFRTUk1MU19DQyk7CisJCX0KKwl9Cit9CisK K3N0YXRpYyB2b2lkIHp2YWxfY29sbGVjdF93aGl0ZSh6dmFsICpweiBUU1JNTFNfREMpCit7 CisJaWYgKCgoenZhbF9nY19pbmZvKikocHopKS0+dS5idWZmZXJlZCA9PSAoZ2Nfcm9vdF9i dWZmZXIqKUdDX1dISVRFKSB7CisJCUdDX1pWQUxfU0VUX0JMQUNLKHB6KTsKKworCQlpZiAo Wl9UWVBFX1AocHopID09IElTX09CSkVDVCkgeworCQkJem9ial9jb2xsZWN0X3doaXRlKHB6 IFRTUk1MU19DQyk7CisJCX0gZWxzZSB7CisJCQlpZiAoWl9UWVBFX1AocHopID09IElTX0FS UkFZKSB7CisJCQkJaWYgKFpfQVJSVkFMX1AocHopID09ICZFRyhzeW1ib2xfdGFibGUpKSB7 CisJCQkJCXJldHVybjsKKwkJCQl9CisJCQkJemVuZF9oYXNoX2FwcGx5KFpfQVJSVkFMX1Ao cHopLCAoYXBwbHlfZnVuY190KSBjaGlsZHJlbl9jb2xsZWN0X3doaXRlIFRTUk1MU19DQyk7 CisJCQl9CisJCQkvKiByZXN0b3JlIHJlZmNvdW50ICovCisJCQlwei0+cmVmY291bnRfX2dj Kys7CisJCX0KKworCQkoKHp2YWxfZ2NfaW5mbyopcHopLT51Lm5leHQgPSBHQ19HKHp2YWxf dG9fZnJlZSk7CisJCUdDX0coenZhbF90b19mcmVlKSA9ICh6dmFsX2djX2luZm8qKXB6Owor CX0KK30KKworc3RhdGljIGludCBjaGlsZHJlbl9jb2xsZWN0X3doaXRlKHp2YWwgKipweiBU U1JNTFNfREMpCit7CisJenZhbF9jb2xsZWN0X3doaXRlKCpweiBUU1JNTFNfQ0MpOworCXJl dHVybiAwOworfQorCitzdGF0aWMgdm9pZCBnY19jb2xsZWN0X3Jvb3RzKFRTUk1MU19EKQor eworCWdjX3Jvb3RfYnVmZmVyICpjdXJyZW50ID0gR0NfRyhyb290cykubmV4dDsKKworCXdo aWxlIChjdXJyZW50ICE9ICZHQ19HKHJvb3RzKSkgeworCQlpZiAoY3VycmVudC0+aGFuZGxl KSB7CisJCQlzdHJ1Y3QgX3N0b3JlX29iamVjdCAqb2JqID0gJkVHKG9iamVjdHNfc3RvcmUp Lm9iamVjdF9idWNrZXRzW2N1cnJlbnQtPmhhbmRsZV0uYnVja2V0Lm9iajsKKwkJCXp2YWwg ejsKKworCQkJR0NfU0VUX0FERFJFU1Mob2JqLT5idWZmZXJlZCwgTlVMTCk7CisJCQlJTklU X1BaVkFMKCZ6KTsKKwkJCVpfT0JKX0hBTkRMRSh6KSA9IGN1cnJlbnQtPmhhbmRsZTsKKwkJ CVpfT0JKX0hUKHopID0gY3VycmVudC0+dS5oYW5kbGVyczsKKwkJCXpvYmpfY29sbGVjdF93 aGl0ZSgmeiBUU1JNTFNfQ0MpOworCQl9IGVsc2UgeworCQkJR0NfWlZBTF9TRVRfQUREUkVT UyhjdXJyZW50LT51LnB6LCBOVUxMKTsKKwkJCXp2YWxfY29sbGVjdF93aGl0ZShjdXJyZW50 LT51LnB6IFRTUk1MU19DQyk7CisJCX0KKworCQlHQ19SRU1PVkVfRlJPTV9CVUZGRVIoY3Vy cmVudCk7CisJCWN1cnJlbnQgPSBjdXJyZW50LT5uZXh0OworCX0KK30KKworWkVORF9BUEkg aW50IGdjX2NvbGxlY3RfY3ljbGVzKFRTUk1MU19EKQoreworCWludCBjb3VudCA9IDA7CisK KwlpZiAoR0NfRyhyb290cykubmV4dCAhPSAmR0NfRyhyb290cykpIHsKKwkJenZhbF9nY19p bmZvICpwLCAqcTsKKworCQlHQ19HKGdjX3J1bnMpKys7CisJCUdDX0coenZhbF90b19mcmVl KSA9IE5VTEw7CisJCWdjX21hcmtfcm9vdHMoVFNSTUxTX0MpOworCQlnY19zY2FuX3Jvb3Rz KFRTUk1MU19DKTsKKwkJZ2NfY29sbGVjdF9yb290cyhUU1JNTFNfQyk7CisKKwkJcCA9IEdD X0coenZhbF90b19mcmVlKTsKKwkJR0NfRyh6dmFsX3RvX2ZyZWUpID0gTlVMTDsKKwkJd2hp bGUgKHApIHsKKwkJCXEgPSBwLT51Lm5leHQ7CisJCQlpZiAoWl9UWVBFKHAtPnopID09IElT X09CSkVDVCkgeworCQkJCWlmIChFRyhvYmplY3RzX3N0b3JlKS5vYmplY3RfYnVja2V0cyAm JgorCQkJCQlFRyhvYmplY3RzX3N0b3JlKS5vYmplY3RfYnVja2V0c1taX09CSl9IQU5ETEUo cC0+eildLnZhbGlkICYmCisJCQkJCUVHKG9iamVjdHNfc3RvcmUpLm9iamVjdF9idWNrZXRz W1pfT0JKX0hBTkRMRShwLT56KV0uYnVja2V0Lm9iai5yZWZjb3VudCA8PSAxKSB7CisJCQkJ CWlmIChFWFBFQ1RFRChaX09CSl9IQU5ETEVSKHAtPnosIGdldF9wcm9wZXJ0aWVzKSAhPSBO VUxMKSkgeworCQkJCQkJWl9PQkpQUk9QKHAtPnopLT5wRGVzdHJ1Y3RvciA9IE5VTEw7CisJ CQkJCX0KKwkJCQkJRUcob2JqZWN0c19zdG9yZSkub2JqZWN0X2J1Y2tldHNbWl9PQkpfSEFO RExFKHAtPnopXS5idWNrZXQub2JqLnJlZmNvdW50ID0gMTsKKwkJCQkJemVuZF9vYmplY3Rz X3N0b3JlX2RlbF9yZWZfYnlfaGFuZGxlKFpfT0JKX0hBTkRMRShwLT56KSBUU1JNTFNfQ0Mp OworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJaWYgKFpfVFlQRShwLT56KSA9PSBJU19BUlJB WSkgeworCQkJCQlaX0FSUlZBTChwLT56KS0+cERlc3RydWN0b3IgPSBOVUxMOworCQkJCX0K KwkJCQl6dmFsX2R0b3IoJnAtPnopOworCQkJfQorCQkJRlJFRV9aVkFMX0VYKCZwLT56KTsK KwkJCXAgPSBxOworCQkJY291bnQrKzsKKwkJfQorCQlHQ19HKGNvbGxlY3RlZCkgKz0gY291 bnQ7CisJfQorCisJcmV0dXJuIGNvdW50OworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVz OgorICogdGFiLXdpZHRoOiA0CisgKiBjLWJhc2ljLW9mZnNldDogNAorICogaW5kZW50LXRh YnMtbW9kZTogdAorICogRW5kOgorICovCkluZGV4OiBaZW5kL3plbmRfZ2MuaAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiBaZW5kL3plbmRfZ2MuaApkaWZmIC1OIFplbmQvemVuZF9nYy5o Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgWmVuZC96ZW5k X2djLmgJMTkgRGVjIDIwMDcgMDg6MzI6MzIgLTAwMDAKQEAgLTAsMCArMSwyNDUgQEAKKy8q CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgWmVuZCBFbmdpbmUgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rCisgICB8IENvcHlyaWdodCAoYykgMTk5OC0yMDA3IFplbmQgVGVj aG5vbG9naWVzIEx0ZC4gKGh0dHA6Ly93d3cuemVuZC5jb20pIHwKKyAgICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKworICAgfCBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdmVyc2lvbiAy LjAwIG9mIHRoZSBaZW5kIGxpY2Vuc2UsICAgICB8CisgICB8IHRoYXQgaXMgYnVuZGxlZCB3 aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLCBhbmQgaXMgICAgICAgIHwK KyAgIHwgYXZhaWxhYmxlIHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViIGF0IHRoZSBmb2xs b3dpbmcgdXJsOiAgICAgICAgICAgfAorICAgfCBodHRwOi8vd3d3LnplbmQuY29tL2xpY2Vu c2UvMl8wMC50eHQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8IElm IHlvdSBkaWQgbm90IHJlY2VpdmUgYSBjb3B5IG9mIHRoZSBaZW5kIGxpY2Vuc2UgYW5kIGFy ZSB1bmFibGUgdG8gIHwKKyAgIHwgb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUt d2ViLCBwbGVhc2Ugc2VuZCBhIG5vdGUgdG8gICAgICAgICAgfAorICAgfCBsaWNlbnNlQHpl bmQuY29tIHNvIHdlIGNhbiBtYWlsIHlvdSBhIGNvcHkgaW1tZWRpYXRlbHkuICAgICAgICAg ICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgQXV0aG9yczogRGF2aWQgV2Fu ZyA8cGxhbmV0YmVpbmdAZ21haWwuY29tPiAgICAgICAgICAgICAgICAgICAgICAgICAgfAor ICAgfCAgICAgICAgICBEbWl0cnkgU3RvZ292IDxkbWl0cnlAemVuZC5jb20+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyovCisKKy8q ICRJZDokICovCisKKyNpZm5kZWYgWkVORF9HQ19ICisjZGVmaW5lIFpFTkRfR0NfSAorCisj aWZuZGVmIEdDX0JFTkNICisjIGRlZmluZSBHQ19CRU5DSCAwCisjZW5kaWYKKworI2lmIEdD X0JFTkNICisjIGRlZmluZSBHQ19CRU5DSF9JTkMoY291bnRlcikgR0NfRyhjb3VudGVyKSsr CisjIGRlZmluZSBHQ19CRU5DSF9ERUMoY291bnRlcikgR0NfRyhjb3VudGVyKS0tCisjIGRl ZmluZSBHQ19CRU5DSF9QRUFLKHBlYWssIGNvdW50ZXIpIGRvIHsJCVwKKwkJaWYgKEdDX0co Y291bnRlcikgPiBHQ19HKHBlYWspKSB7CQlcCisJCQlHQ19HKHBlYWspID0gR0NfRyhjb3Vu dGVyKTsJCQlcCisJCX0JCQkJCQkJCQkJXAorCX0gd2hpbGUgKDApCisjZWxzZQorIyBkZWZp bmUgR0NfQkVOQ0hfSU5DKGNvdW50ZXIpCisjIGRlZmluZSBHQ19CRU5DSF9ERUMoY291bnRl cikKKyMgZGVmaW5lIEdDX0JFTkNIX1BFQUsocGVhaywgY291bnRlcikKKyNlbmRpZgorCisj ZGVmaW5lIEdDX0NPTE9SICAweDAzCisKKyNkZWZpbmUgR0NfQkxBQ0sgIDB4MDAKKyNkZWZp bmUgR0NfV0hJVEUgIDB4MDEKKyNkZWZpbmUgR0NfR1JFWSAgIDB4MDIKKyNkZWZpbmUgR0Nf UFVSUExFIDB4MDMKKworI2RlZmluZSBHQ19BRERSRVNTKHYpIFwKKwkoKGdjX3Jvb3RfYnVm ZmVyKikoKCh6ZW5kX3VpbnRwdHJfdCkodikpICYgfkdDX0NPTE9SKSkKKyNkZWZpbmUgR0Nf U0VUX0FERFJFU1ModiwgYSkgXAorCSh2KSA9ICgoZ2Nfcm9vdF9idWZmZXIqKSgoKCh6ZW5k X3VpbnRwdHJfdCkodikpICYgR0NfQ09MT1IpIHwgKCh6ZW5kX3VpbnRwdHJfdCkoYSkpKSkK KyNkZWZpbmUgR0NfR0VUX0NPTE9SKHYpIFwKKwkoKCh6ZW5kX3VpbnRwdHJfdCkodikpICYg R0NfQ09MT1IpCisjZGVmaW5lIEdDX1NFVF9DT0xPUih2LCBjKSBcCisJKHYpID0gKChnY19y b290X2J1ZmZlciopKCgoKHplbmRfdWludHB0cl90KSh2KSkgJiB+R0NfQ09MT1IpIHwgKGMp KSkKKyNkZWZpbmUgR0NfU0VUX0JMQUNLKHYpIFwKKwkodikgPSAoKGdjX3Jvb3RfYnVmZmVy KikoKCh6ZW5kX3VpbnRwdHJfdCkodikpICYgfkdDX0NPTE9SKSkKKyNkZWZpbmUgR0NfU0VU X1BVUlBMRSh2KSBcCisJKHYpID0gKChnY19yb290X2J1ZmZlciopKCgoemVuZF91aW50cHRy X3QpKHYpKSB8IEdDX1BVUlBMRSkpCisKKyNkZWZpbmUgR0NfWlZBTF9JTklUKHopIFwKKwko KHp2YWxfZ2NfaW5mbyopKHopKS0+dS5idWZmZXJlZCA9IE5VTEwKKyNkZWZpbmUgR0NfWlZB TF9BRERSRVNTKHYpIFwKKwlHQ19BRERSRVNTKCgoenZhbF9nY19pbmZvKikodikpLT51LmJ1 ZmZlcmVkKQorI2RlZmluZSBHQ19aVkFMX1NFVF9BRERSRVNTKHYsIGEpIFwKKwlHQ19TRVRf QUREUkVTUygoKHp2YWxfZ2NfaW5mbyopKHYpKS0+dS5idWZmZXJlZCwgKGEpKQorI2RlZmlu ZSBHQ19aVkFMX0dFVF9DT0xPUih2KSBcCisJR0NfR0VUX0NPTE9SKCgoenZhbF9nY19pbmZv KikodikpLT51LmJ1ZmZlcmVkKQorI2RlZmluZSBHQ19aVkFMX1NFVF9DT0xPUih2LCBjKSBc CisJR0NfU0VUX0NPTE9SKCgoenZhbF9nY19pbmZvKikodikpLT51LmJ1ZmZlcmVkLCAoYykp CisjZGVmaW5lIEdDX1pWQUxfU0VUX0JMQUNLKHYpIFwKKwlHQ19TRVRfQkxBQ0soKCh6dmFs X2djX2luZm8qKSh2KSktPnUuYnVmZmVyZWQpCisjZGVmaW5lIEdDX1pWQUxfU0VUX1BVUlBM RSh2KSBcCisJR0NfU0VUX1BVUlBMRSgoKHp2YWxfZ2NfaW5mbyopKHYpKS0+dS5idWZmZXJl ZCkKKworI2RlZmluZSBHQ19PQkpfSU5JVCh6KSBcCisJKHopLT5idWZmZXJlZCA9IE5VTEwK KwordHlwZWRlZiBzdHJ1Y3QgX2djX3Jvb3RfYnVmZmVyIHsKKwlzdHJ1Y3QgX2djX3Jvb3Rf YnVmZmVyICAgKnByZXY7CQkvKiBkb3VibGUtbGlua2VkIGxpc3QgICAgICAgICAgICAgICAq LworCXN0cnVjdCBfZ2Nfcm9vdF9idWZmZXIgICAqbmV4dDsKKwl6ZW5kX29iamVjdF9oYW5k bGUgICAgICAgIGhhbmRsZTsJLyogbXVzdCBiZSAwIGZvciB6dmFsICAgICAgICAgICAgICAg Ki8KKwl1bmlvbiB7CisJCXp2YWwgICAgICAgICAgICAgICAgICpwejsKKwkJemVuZF9vYmpl Y3RfaGFuZGxlcnMgKmhhbmRsZXJzOworCX0gdTsKK30gZ2Nfcm9vdF9idWZmZXI7CisKK3R5 cGVkZWYgc3RydWN0IF96dmFsX2djX2luZm8geworCXp2YWwgejsKKwl1bmlvbiB7CisJCWdj X3Jvb3RfYnVmZmVyICAgICAgICpidWZmZXJlZDsKKwkJc3RydWN0IF96dmFsX2djX2luZm8g Km5leHQ7CisJfSB1OworfSB6dmFsX2djX2luZm87CisKK3R5cGVkZWYgc3RydWN0IF96ZW5k X2djX2dsb2JhbHMgeworCXplbmRfYm9vbCAgICAgICAgIGdjX2VuYWJsZWQ7CisKKwlnY19y b290X2J1ZmZlciAgICpidWY7CQkJCS8qIHByZWFsbG9jYXRlZCBhcnJheXMgb2YgYnVmZmVy cyAgICovCisJZ2Nfcm9vdF9idWZmZXIgICAgcm9vdHM7CQkJLyogbGlzdCBvZiBwb3NzaWJs ZSByb290cyBvZiBjeWNsZXMgKi8KKwlnY19yb290X2J1ZmZlciAgICp1bnVzZWQ7CQkJLyog bGlzdCBvZiB1bnVzZWQgYnVmZmVycyAgICAgICAgICAgKi8KKworCXp2YWxfZ2NfaW5mbyAg ICAgKnp2YWxfdG9fZnJlZTsJCS8qIHRlbXBvcmFyeXQgbGlzdCBvZiB6dmFscyB0byBmcmVl ICovCisKKwl6ZW5kX3VpbnQgZ2NfcnVuczsKKwl6ZW5kX3VpbnQgY29sbGVjdGVkOworCisj aWYgR0NfQkVOQ0gKKwl6ZW5kX3VpbnQgcm9vdF9idWZfbGVuZ3RoOworCXplbmRfdWludCBy b290X2J1Zl9wZWFrOworCXplbmRfdWludCB6dmFsX3Bvc3NpYmxlX3Jvb3Q7CisJemVuZF91 aW50IHpvYmpfcG9zc2libGVfcm9vdDsKKwl6ZW5kX3VpbnQgenZhbF9idWZmZXJlZDsKKwl6 ZW5kX3VpbnQgem9ial9idWZmZXJlZDsKKwl6ZW5kX3VpbnQgenZhbF9yZW1vdmVfZnJvbV9i dWZmZXI7CisJemVuZF91aW50IHpvYmpfcmVtb3ZlX2Zyb21fYnVmZmVyOworCXplbmRfdWlu dCB6dmFsX21hcmtlZF9ncmV5OworCXplbmRfdWludCB6b2JqX21hcmtlZF9ncmV5OworI2Vu ZGlmCisKK30gemVuZF9nY19nbG9iYWxzOworCisjaWZkZWYgWlRTCitCRUdJTl9FWFRFUk5f QygpCitaRU5EX0FQSSBleHRlcm4gaW50IGdjX2dsb2JhbHNfaWQ7CitFTkRfRVhURVJOX0Mo KQorI2RlZmluZSBHQ19HKHYpIFRTUk1HKGdjX2dsb2JhbHNfaWQsIHplbmRfZ2NfZ2xvYmFs cyAqLCB2KQorI2Vsc2UKKyNkZWZpbmUgR0NfRyh2KSAoZ2NfZ2xvYmFscy52KQorZXh0ZXJu IFpFTkRfQVBJIHplbmRfZ2NfZ2xvYmFscyBnY19nbG9iYWxzOworI2VuZGlmCisKK0JFR0lO X0VYVEVSTl9DKCkKK1pFTkRfQVBJIGludCAgZ2NfY29sbGVjdF9jeWNsZXMoVFNSTUxTX0Qp OworWkVORF9BUEkgdm9pZCBnY196dmFsX3Bvc3NpYmxlX3Jvb3QoenZhbCAqenYgVFNSTUxT X0RDKTsKK1pFTkRfQVBJIHZvaWQgZ2Nfem9ial9wb3NzaWJsZV9yb290KHp2YWwgKnp2IFRT Uk1MU19EQyk7CitaRU5EX0FQSSB2b2lkIGdjX2dsb2JhbHNfY3RvcihUU1JNTFNfRCk7Cita RU5EX0FQSSB2b2lkIGdjX2dsb2JhbHNfZHRvcihUU1JNTFNfRCk7CitaRU5EX0FQSSB2b2lk IGdjX2luaXQoVFNSTUxTX0QpOworWkVORF9BUEkgdm9pZCBnY19yZXNldChUU1JNTFNfRCk7 CitFTkRfRVhURVJOX0MoKQorCisjZGVmaW5lIEdDX1pWQUxfQ0hFQ0tfUE9TU0lCTEVfUk9P VCh6KSBcCisJZ2NfenZhbF9jaGVja19wb3NzaWJsZV9yb290KCh6KSBUU1JNTFNfQ0MpCisK KyNkZWZpbmUgR0NfUkVNT1ZFX0ZST01fQlVGRkVSKGN1cnJlbnQpIFwKKwlnY19yZW1vdmVf ZnJvbV9idWZmZXIoKGN1cnJlbnQpIFRTUk1MU19DQykKKworI2RlZmluZSBHQ19SRU1PVkVf WlZBTF9GUk9NX0JVRkZFUih6KSBcCisJZ2NfcmVtb3ZlX3p2YWxfZnJvbV9idWZmZXIoeikK KworI2RlZmluZSBHQ19aT0JKX0NIRUNLX1BPU1NJQkxFX1JPT1Qoem9iamVjdCkJCQkJCQkJ CQlcCisJZG8gewkJCQkJCQkJCQkJCQkJCQkJCVwKKwkJaWYgKEVYUEVDVEVEKEVHKG9iamVj dHNfc3RvcmUpLm9iamVjdF9idWNrZXRzICE9IE5VTEwpICYmCQkJCVwKKwkJICAgIEVHKG9i amVjdHNfc3RvcmUpLm9iamVjdF9idWNrZXRzW1pfT0JKX0hBTkRMRV9QKHpvYmplY3QpXS52 YWxpZCkgewlcCisJCQlnY196b2JqX3Bvc3NpYmxlX3Jvb3Qoem9iamVjdCBUU1JNTFNfQ0Mp OwkJCQkJCQlcCisJCX0JCQkJCQkJCQkJCQkJCQkJCQlcCisJfSB3aGlsZSAoMCkKKworI2Rl ZmluZSBHQ19SRU1PVkVfWk9CSl9GUk9NX0JVRkZFUihvYmopCQkJCQkJCQkJXAorCWRvIHsJ CQkJCQkJCQkJCQkJCQkJXAorCQlpZiAoR0NfQUREUkVTUygob2JqKS0+YnVmZmVyZWQpKSB7 CQkJCQkJCQlcCisJCQlHQ19CRU5DSF9JTkMoem9ial9yZW1vdmVfZnJvbV9idWZmZXIpOwkJ CQkJCVwKKwkJCUdDX1JFTU9WRV9GUk9NX0JVRkZFUihHQ19BRERSRVNTKChvYmopLT5idWZm ZXJlZCkpOwkJCVwKKwkJCShvYmopLT5idWZmZXJlZCA9IE5VTEw7CQkJCQkJCQkJCVwKKwkJ fQkJCQkJCQkJCQkJCQkJCQlcCisJfSB3aGlsZSAoMCkKKworc3RhdGljIHplbmRfYWx3YXlz X2lubGluZSB2b2lkIGdjX3p2YWxfY2hlY2tfcG9zc2libGVfcm9vdCh6dmFsICp6IFRTUk1M U19EQykKK3sKKwlpZiAoei0+dHlwZSA9PSBJU19BUlJBWSB8fCB6LT50eXBlID09IElTX09C SkVDVCkgeworCQlnY196dmFsX3Bvc3NpYmxlX3Jvb3QoeiBUU1JNTFNfQ0MpOworCX0KK30K Kworc3RhdGljIHplbmRfYWx3YXlzX2lubGluZSB2b2lkIGdjX3JlbW92ZV9mcm9tX2J1ZmZl cihnY19yb290X2J1ZmZlciAqcm9vdCBUU1JNTFNfREMpCit7CisJcm9vdC0+bmV4dC0+cHJl diA9IHJvb3QtPnByZXY7CisJcm9vdC0+cHJldi0+bmV4dCA9IHJvb3QtPm5leHQ7CisJcm9v dC0+cHJldiA9IEdDX0codW51c2VkKTsKKwlHQ19HKHVudXNlZCkgPSByb290OworCUdDX0JF TkNIX0RFQyhyb290X2J1Zl9sZW5ndGgpOworfQorCitzdGF0aWMgemVuZF9hbHdheXNfaW5s aW5lIHZvaWQgZ2NfcmVtb3ZlX3p2YWxfZnJvbV9idWZmZXIoenZhbCogeikKK3sKKwlnY19y b290X2J1ZmZlciogcm9vdF9idWZmZXI7CisKKwlyb290X2J1ZmZlciA9IEdDX0FERFJFU1Mo KCh6dmFsX2djX2luZm8qKXopLT51LmJ1ZmZlcmVkKTsKKwlpZiAocm9vdF9idWZmZXIpIHsK KwkJVFNSTUxTX0ZFVENIKCk7CisKKwkJR0NfQkVOQ0hfSU5DKHp2YWxfcmVtb3ZlX2Zyb21f YnVmZmVyKTsKKwkJR0NfUkVNT1ZFX0ZST01fQlVGRkVSKHJvb3RfYnVmZmVyKTsKKwkJKCh6 dmFsX2djX2luZm8qKXopLT51LmJ1ZmZlcmVkID0gTlVMTDsKKwl9Cit9CisKKy8qIFRoZSBm b2xsb3dpbmcgbWFjcm9zZXMgb3ZlcnJpZGUgbWFjcm9zZXMgZnJvbSB6ZW5kX2FsbG9jLmgg Ki8KKyN1bmRlZiAgQUxMT0NfWlZBTAorI2RlZmluZSBBTExPQ19aVkFMKHopIAkJCQkJCQkJ CVwKKwlkbyB7CQkJCQkJCQkJCQkJXAorCQkoeikgPSAoenZhbCopZW1hbGxvYyhzaXplb2Yo enZhbF9nY19pbmZvKSk7CQlcCisJCUdDX1pWQUxfSU5JVCh6KTsJCQkJCQkJCVwKKwl9IHdo aWxlICgwKQorCisjdW5kZWYgIEZSRUVfWlZBTAorI2RlZmluZSBGUkVFX1pWQUwoeikgCQkJ CQkJCQkJXAorCWRvIHsJCQkJCQkJCQkJCQlcCisJICAgIEdDX1JFTU9WRV9aVkFMX0ZST01f QlVGRkVSKHopOwkJCQkJXAorCQllZnJlZSh6KTsJCQkJCQkJCQkJXAorCX0gd2hpbGUgKDAp CisKKyN1bmRlZiAgQUxMT0NfWlZBTF9SRUwKKyNkZWZpbmUgQUxMT0NfWlZBTF9SRUwoeikJ CQkJCQkJCVwKKwlkbyB7CQkJCQkJCQkJCQkJXAorCQkoeikgPSAoenZhbCopZW1hbGxvY19y ZWwoc2l6ZW9mKHp2YWxfZ2NfaW5mbykpOwlcCisJCUdDX1pWQUxfSU5JVCh6KTsJCQkJCQkJ CVwKKwl9IHdoaWxlICgwKQorCisjdW5kZWYgIEZSRUVfWlZBTF9SRUwKKyNkZWZpbmUgRlJF RV9aVkFMX1JFTCh6KQkJCQkJCQkJXAorCWRvIHsJCQkJCQkJCQkJCQlcCisJICAgIEdDX1JF TU9WRV9aVkFMX0ZST01fQlVGRkVSKHopOwkJCQkJXAorCQllZnJlZV9yZWwoeik7CQkJCQkJ CQkJXAorCX0gd2hpbGUgKDApCisKKyNkZWZpbmUgRlJFRV9aVkFMX0VYKHopCQkJCQkJCQkJ XAorCWVmcmVlKHopCisKKyNkZWZpbmUgRlJFRV9aVkFMX1JFTF9FWCh6KQkJCQkJCQkJXAor CWVmcmVlX3JlbCh6KQorCisjZW5kaWYgLyogWkVORF9HQ19IICovCisKKy8qCisgKiBMb2Nh bCB2YXJpYWJsZXM6CisgKiB0YWItd2lkdGg6IDQKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0Cisg KiBpbmRlbnQtdGFicy1tb2RlOiB0CisgKiBFbmQ6CisgKi8KSW5kZXg6IFplbmQvemVuZF9v YmplY3RzX0FQSS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0b3J5L1plbmRF bmdpbmUyL3plbmRfb2JqZWN0c19BUEkuYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40Ny4y LjYuMi42LjIuMQpkaWZmIC11IC1wIC1kIC1yMS40Ny4yLjYuMi42LjIuMSB6ZW5kX29iamVj dHNfQVBJLmMKLS0tIFplbmQvemVuZF9vYmplY3RzX0FQSS5jCTcgT2N0IDIwMDcgMDU6MjI6 MDMgLTAwMDAJMS40Ny4yLjYuMi42LjIuMQorKysgWmVuZC96ZW5kX29iamVjdHNfQVBJLmMJ MTkgRGVjIDIwMDcgMDg6MzI6MzIgLTAwMDAKQEAgLTg0LDYgKzg0LDggQEAgWkVORF9BUEkg dm9pZCB6ZW5kX29iamVjdHNfc3RvcmVfZnJlZV9vYgogCQlpZiAob2JqZWN0cy0+b2JqZWN0 X2J1Y2tldHNbaV0udmFsaWQpIHsKIAkJCXN0cnVjdCBfc3RvcmVfb2JqZWN0ICpvYmogPSAm b2JqZWN0cy0+b2JqZWN0X2J1Y2tldHNbaV0uYnVja2V0Lm9iajsKIAorCQkJR0NfUkVNT1ZF X1pPQkpfRlJPTV9CVUZGRVIob2JqKTsKKwogCQkJb2JqZWN0cy0+b2JqZWN0X2J1Y2tldHNb aV0udmFsaWQgPSAwOwogCQkJaWYgKG9iai0+ZnJlZV9zdG9yYWdlKSB7CiAJCQkJb2JqLT5m cmVlX3N0b3JhZ2Uob2JqLT5vYmplY3QgVFNSTUxTX0NDKTsKQEAgLTExNiw2ICsxMTgsNyBA QCBaRU5EX0FQSSB6ZW5kX29iamVjdF9oYW5kbGUgemVuZF9vYmplY3RzCiAJRUcob2JqZWN0 c19zdG9yZSkub2JqZWN0X2J1Y2tldHNbaGFuZGxlXS52YWxpZCA9IDE7CiAKIAlvYmotPnJl ZmNvdW50ID0gMTsKKwlHQ19PQkpfSU5JVChvYmopOwogCW9iai0+b2JqZWN0ID0gb2JqZWN0 OwogCW9iai0+ZHRvciA9IGR0b3I/ZHRvcjooemVuZF9vYmplY3RzX3N0b3JlX2R0b3JfdCl6 ZW5kX29iamVjdHNfZGVzdHJveV9vYmplY3Q7CiAJb2JqLT5mcmVlX3N0b3JhZ2UgPSBmcmVl X3N0b3JhZ2U7CkBAIC0xNjcsNiArMTcwLDggQEAgWkVORF9BUEkgdm9pZCB6ZW5kX29iamVj dHNfc3RvcmVfZGVsX3JlZgogCVpfQUREUkVGX1Aoem9iamVjdCk7CiAJemVuZF9vYmplY3Rz X3N0b3JlX2RlbF9yZWZfYnlfaGFuZGxlKGhhbmRsZSBUU1JNTFNfQ0MpOwogCVpfREVMUkVG X1Aoem9iamVjdCk7CisKKwlHQ19aT0JKX0NIRUNLX1BPU1NJQkxFX1JPT1Qoem9iamVjdCk7 CiB9CiAKIC8qCkBAIC0yMDEsNiArMjA2LDcgQEAgWkVORF9BUEkgdm9pZCB6ZW5kX29iamVj dHNfc3RvcmVfZGVsX3JlZgogCQkJCX0KIAkJCX0KIAkJCWlmIChvYmotPnJlZmNvdW50ID09 IDEpIHsKKwkJCQlHQ19SRU1PVkVfWk9CSl9GUk9NX0JVRkZFUihvYmopOwogCQkJCWlmIChv YmotPmZyZWVfc3RvcmFnZSkgewogCQkJCQl6ZW5kX3RyeSB7CiAJCQkJCQlvYmotPmZyZWVf c3RvcmFnZShvYmotPm9iamVjdCBUU1JNTFNfQ0MpOwpJbmRleDogWmVuZC96ZW5kX29iamVj dHNfQVBJLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3JlcG9zaXRvcnkvWmVuZEVuZ2lu ZTIvemVuZF9vYmplY3RzX0FQSS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIwLjIuMS4y LjQKZGlmZiAtdSAtcCAtZCAtcjEuMjAuMi4xLjIuNCB6ZW5kX29iamVjdHNfQVBJLmgKLS0t IFplbmQvemVuZF9vYmplY3RzX0FQSS5oCTIxIEp1bCAyMDA3IDAwOjM1OjE0IC0wMDAwCTEu MjAuMi4xLjIuNAorKysgWmVuZC96ZW5kX29iamVjdHNfQVBJLmgJMTkgRGVjIDIwMDcgMDg6 MzI6MzIgLTAwMDAKQEAgLTM4LDYgKzM4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX3plbmRfb2Jq ZWN0X3N0b3JlX2J1Y2tldAogCQkJemVuZF9vYmplY3RzX2ZyZWVfb2JqZWN0X3N0b3JhZ2Vf dCBmcmVlX3N0b3JhZ2U7CiAJCQl6ZW5kX29iamVjdHNfc3RvcmVfY2xvbmVfdCBjbG9uZTsK IAkJCXplbmRfdWludCByZWZjb3VudDsKKwkJCWdjX3Jvb3RfYnVmZmVyICpidWZmZXJlZDsK IAkJfSBvYmo7CiAJCXN0cnVjdCB7CiAJCQlpbnQgbmV4dDsKSW5kZXg6IFplbmQvemVuZF9v cGVyYXRvcnMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9aZW5kRW5n aW5lMi96ZW5kX29wZXJhdG9ycy5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIwOC4yLjQu Mi4yMy4yLjQKZGlmZiAtdSAtcCAtZCAtcjEuMjA4LjIuNC4yLjIzLjIuNCB6ZW5kX29wZXJh dG9ycy5jCi0tLSBaZW5kL3plbmRfb3BlcmF0b3JzLmMJMTcgRGVjIDIwMDcgMTA6MDI6MTMg LTAwMDAJMS4yMDguMi40LjIuMjMuMi40CisrKyBaZW5kL3plbmRfb3BlcmF0b3JzLmMJMTkg RGVjIDIwMDcgMDg6MzI6MzIgLTAwMDAKQEAgLTEzNTAsNiArMTM1MCw3IEBAIFpFTkRfQVBJ IGludCBudW1lcmljX2NvbXBhcmVfZnVuY3Rpb24oenYKIHN0YXRpYyBpbmxpbmUgdm9pZCB6 ZW5kX2ZyZWVfb2JqX2dldF9yZXN1bHQoenZhbCAqb3ApCiB7CiAJaWYgKFpfUkVGQ09VTlRf UChvcCkgPT0gMCkgeworCQlHQ19SRU1PVkVfWlZBTF9GUk9NX0JVRkZFUihvcCk7CiAJCXp2 YWxfZHRvcihvcCk7CiAJCUZSRUVfWlZBTChvcCk7CiAJfSBlbHNlIHsKSW5kZXg6IFplbmQv emVuZF92bV9kZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9aZW5k RW5naW5lMi96ZW5kX3ZtX2RlZi5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjU5LjIuMjku Mi40OC4yLjI1CmRpZmYgLXUgLXAgLWQgLXIxLjU5LjIuMjkuMi40OC4yLjI1IHplbmRfdm1f ZGVmLmgKLS0tIFplbmQvemVuZF92bV9kZWYuaAkxNCBEZWMgMjAwNyAxNDoxNDo1MCAtMDAw MAkxLjU5LjIuMjkuMi40OC4yLjI1CisrKyBaZW5kL3plbmRfdm1fZGVmLmgJMTkgRGVjIDIw MDcgMDg6MzI6MzIgLTAwMDAKQEAgLTM1MCw2ICszNTAsNyBAQCBaRU5EX1ZNX0hFTFBFUl9F WCh6ZW5kX2JpbmFyeV9hc3NpZ25fb3BfCiAJCQkJCXp2YWwgKnZhbHVlID0gWl9PQkpfSFRf UCh6KS0+Z2V0KHogVFNSTUxTX0NDKTsKIAogCQkJCQlpZiAoWl9SRUZDT1VOVF9QKHopID09 IDApIHsKKwkJCQkJCUdDX1JFTU9WRV9aVkFMX0ZST01fQlVGRkVSKHopOwogCQkJCQkJenZh bF9kdG9yKHopOwogCQkJCQkJRlJFRV9aVkFMKHopOwogCQkJCQl9CkBAIC01ODgsNiArNTg5 LDcgQEAgWkVORF9WTV9IRUxQRVJfRVgoemVuZF9wcmVfaW5jZGVjX3Byb3BlcgogCQkJCXp2 YWwgKnZhbHVlID0gWl9PQkpfSFRfUCh6KS0+Z2V0KHogVFNSTUxTX0NDKTsKIAogCQkJCWlm IChaX1JFRkNPVU5UX1AoeikgPT0gMCkgeworCQkJCQlHQ19SRU1PVkVfWlZBTF9GUk9NX0JV RkZFUih6KTsKIAkJCQkJenZhbF9kdG9yKHopOwogCQkJCQlGUkVFX1pWQUwoeik7CiAJCQkJ fQpAQCAtNjc4LDYgKzY4MCw3IEBAIFpFTkRfVk1fSEVMUEVSX0VYKHplbmRfcG9zdF9pbmNk ZWNfcHJvcGUKIAkJCQl6dmFsICp2YWx1ZSA9IFpfT0JKX0hUX1AoeiktPmdldCh6IFRTUk1M U19DQyk7CiAKIAkJCQlpZiAoWl9SRUZDT1VOVF9QKHopID09IDApIHsKKwkJCQkJR0NfUkVN T1ZFX1pWQUxfRlJPTV9CVUZGRVIoeik7CiAJCQkJCXp2YWxfZHRvcih6KTsKIAkJCQkJRlJF RV9aVkFMKHopOwogCQkJCX0KQEAgLTEyMjcsNiArMTIzMCw3IEBAIFpFTkRfVk1fSEVMUEVS X0VYKHplbmRfZmV0Y2hfcHJvcGVydHlfYWQKIAogCQlpZiAoUkVUVVJOX1ZBTFVFX1VOVVNF RCgmb3BsaW5lLT5yZXN1bHQpKSB7CiAJCQlpZiAoWl9SRUZDT1VOVF9QKHJldHZhbCkgPT0g MCkgeworCQkJCUdDX1JFTU9WRV9aVkFMX0ZST01fQlVGRkVSKHJldHZhbCk7CiAJCQkJenZh bF9kdG9yKHJldHZhbCk7CiAJCQkJRlJFRV9aVkFMKHJldHZhbCk7CiAJCQl9CkluZGV4OiBa ZW5kL3plbmRfdm1fZXhlY3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9yZXBvc2l0 b3J5L1plbmRFbmdpbmUyL3plbmRfdm1fZXhlY3V0ZS5oLHYKcmV0cmlldmluZyByZXZpc2lv biAxLjYyLjIuMzAuMi40OS4yLjI2CmRpZmYgLXUgLXAgLWQgLXIxLjYyLjIuMzAuMi40OS4y LjI2IHplbmRfdm1fZXhlY3V0ZS5oCi0tLSBaZW5kL3plbmRfdm1fZXhlY3V0ZS5oCTE0IERl YyAyMDA3IDE0OjE0OjUwIC0wMDAwCTEuNjIuMi4zMC4yLjQ5LjIuMjYKKysrIFplbmQvemVu ZF92bV9leGVjdXRlLmgJMTkgRGVjIDIwMDcgMDg6MzI6MzIgLTAwMDAKQEAgLTg4NDYsNiAr ODg0Niw3IEBAIHN0YXRpYyBpbnQgemVuZF9iaW5hcnlfYXNzaWduX29wX29ial9oZWwKIAkJ CQkJenZhbCAqdmFsdWUgPSBaX09CSl9IVF9QKHopLT5nZXQoeiBUU1JNTFNfQ0MpOwogCiAJ CQkJCWlmIChaX1JFRkNPVU5UX1AoeikgPT0gMCkgeworCQkJCQkJR0NfUkVNT1ZFX1pWQUxf RlJPTV9CVUZGRVIoeik7CiAJCQkJCQl6dmFsX2R0b3Ioeik7CiAJCQkJCQlGUkVFX1pWQUwo eik7CiAJCQkJCX0KQEAgLTkwODMsNiArOTA4NCw3IEBAIHN0YXRpYyBpbnQgemVuZF9wcmVf aW5jZGVjX3Byb3BlcnR5X2hlbHAKIAkJCQl6dmFsICp2YWx1ZSA9IFpfT0JKX0hUX1Aoeikt PmdldCh6IFRTUk1MU19DQyk7CiAKIAkJCQlpZiAoWl9SRUZDT1VOVF9QKHopID09IDApIHsK KwkJCQkJR0NfUkVNT1ZFX1pWQUxfRlJPTV9CVUZGRVIoeik7CiAJCQkJCXp2YWxfZHRvcih6 KTsKIAkJCQkJRlJFRV9aVkFMKHopOwogCQkJCX0KQEAgLTkxNzMsNiArOTE3NSw3IEBAIHN0 YXRpYyBpbnQgemVuZF9wb3N0X2luY2RlY19wcm9wZXJ0eV9oZWwKIAkJCQl6dmFsICp2YWx1 ZSA9IFpfT0JKX0hUX1AoeiktPmdldCh6IFRTUk1MU19DQyk7CiAKIAkJCQlpZiAoWl9SRUZD T1VOVF9QKHopID09IDApIHsKKwkJCQkJR0NfUkVNT1ZFX1pWQUxfRlJPTV9CVUZGRVIoeik7 CiAJCQkJCXp2YWxfZHRvcih6KTsKIAkJCQkJRlJFRV9aVkFMKHopOwogCQkJCX0KQEAgLTk0 MDMsNiArOTQwNiw3IEBAIHN0YXRpYyBpbnQgemVuZF9mZXRjaF9wcm9wZXJ0eV9hZGRyZXNz X3IKIAogCQlpZiAoUkVUVVJOX1ZBTFVFX1VOVVNFRCgmb3BsaW5lLT5yZXN1bHQpKSB7CiAJ CQlpZiAoWl9SRUZDT1VOVF9QKHJldHZhbCkgPT0gMCkgeworCQkJCUdDX1JFTU9WRV9aVkFM X0ZST01fQlVGRkVSKHJldHZhbCk7CiAJCQkJenZhbF9kdG9yKHJldHZhbCk7CiAJCQkJRlJF RV9aVkFMKHJldHZhbCk7CiAJCQl9CkBAIC0xMDU4NSw2ICsxMDU4OSw3IEBAIHN0YXRpYyBp bnQgemVuZF9iaW5hcnlfYXNzaWduX29wX29ial9oZWwKIAkJCQkJenZhbCAqdmFsdWUgPSBa X09CSl9IVF9QKHopLT5nZXQoeiBUU1JNTFNfQ0MpOwogCiAJCQkJCWlmIChaX1JFRkNPVU5U X1AoeikgPT0gMCkgeworCQkJCQkJR0NfUkVNT1ZFX1pWQUxfRlJPTV9CVUZGRVIoeik7CiAJ CQkJCQl6dmFsX2R0b3Ioeik7CiAJCQkJCQlGUkVFX1pWQUwoeik7CiAJCQkJCX0KQEAgLTEw ODIzLDYgKzEwODI4LDcgQEAgc3RhdGljIGludCB6ZW5kX3ByZV9pbmNkZWNfcHJvcGVydHlf aGVscAogCQkJCXp2YWwgKnZhbHVlID0gWl9PQkpfSFRfUCh6KS0+Z2V0KHogVFNSTUxTX0ND KTsKIAogCQkJCWlmIChaX1JFRkNPVU5UX1AoeikgPT0gMCkgeworCQkJCQlHQ19SRU1PVkVf WlZBTF9GUk9NX0JVRkZFUih6KTsKIAkJCQkJenZhbF9kdG9yKHopOwogCQkJCQlGUkVFX1pW QUwoeik7CiAJCQkJfQpAQCAtMTA5MTMsNiArMTA5MTksNyBAQCBzdGF0aWMgaW50IHplbmRf cG9zdF9pbmNkZWNfcHJvcGVydHlfaGVsCiAJCQkJenZhbCAqdmFsdWUgPSBaX09CSl9IVF9Q KHopLT5nZXQoeiBUU1JNTFNfQ0MpOwogCiAJCQkJaWYgKFpfUkVGQ09VTlRfUCh6KSA9PSAw KSB7CisJCQkJCUdDX1JFTU9WRV9aVkFMX0ZST01fQlVGRkVSKHopOwogCQkJCQl6dmFsX2R0 b3Ioeik7CiAJCQkJCUZSRUVfWlZBTCh6KTsKIAkJCQl9CkBAIC0xMTE0Myw2ICsxMTE1MCw3 IEBAIHN0YXRpYyBpbnQgemVuZF9mZXRjaF9wcm9wZXJ0eV9hZGRyZXNzX3IKIAogCQlpZiAo UkVUVVJOX1ZBTFVFX1VOVVNFRCgmb3BsaW5lLT5yZXN1bHQpKSB7CiAJCQlpZiAoWl9SRUZD T1VOVF9QKHJldHZhbCkgPT0gMCkgeworCQkJCUdDX1JFTU9WRV9aVkFMX0ZST01fQlVGRkVS KHJldHZhbCk7CiAJCQkJenZhbF9kdG9yKHJldHZhbCk7CiAJCQkJRlJFRV9aVkFMKHJldHZh bCk7CiAJCQl9CkBAIC0xMjI1Niw2ICsxMjI2NCw3IEBAIHN0YXRpYyBpbnQgemVuZF9iaW5h cnlfYXNzaWduX29wX29ial9oZWwKIAkJCQkJenZhbCAqdmFsdWUgPSBaX09CSl9IVF9QKHop LT5nZXQoeiBUU1JNTFNfQ0MpOwogCiAJCQkJCWlmIChaX1JFRkNPVU5UX1AoeikgPT0gMCkg eworCQkJCQkJR0NfUkVNT1ZFX1pWQUxfRlJPTV9CVUZGRVIoeik7CiAJCQkJCQl6dmFsX2R0 b3Ioeik7CiAJCQkJCQlGUkVFX1pWQUwoeik7CiAJCQkJCX0KQEAgLTEyNDk0LDYgKzEyNTAz LDcgQEAgc3RhdGljIGludCB6ZW5kX3ByZV9pbmNkZWNfcHJvcGVydHlfaGVscAogCQkJCXp2 YWwgKnZhbHVlID0gWl9PQkpfSFRfUCh6KS0+Z2V0KHogVFNSTUxTX0NDKTsKIAogCQkJCWlm IChaX1JFRkNPVU5UX1AoeikgPT0gMCkgeworCQkJCQlHQ19SRU1PVkVfWlZBTF9GUk9NX0JV RkZFUih6KTsKIAkJCQkJenZhbF9kdG9yKHopOwogCQkJCQlGUkVFX1pWQUwoeik7CiAJCQkJ fQpAQCAtMTI1ODQsNiArMTI1OTQsNyBAQCBzdGF0aWMgaW50IHplbmRfcG9zdF9pbmNkZWNf cHJvcGVydHlfaGVsCiAJCQkJenZhbCAqdmFsdWUgPSBaX09CSl9IVF9QKHopLT5nZXQoeiBU U1JNTFNfQ0MpOwogCiAJCQkJaWYgKFpfUkVGQ09VTlRfUCh6KSA9PSAwKSB7CisJCQkJCUdD X1JFTU9WRV9aVkFMX0ZST01fQlVGRkVSKHopOwogCQkJCQl6dmFsX2R0b3Ioeik7CiAJCQkJ CUZSRUVfWlZBTCh6KTsKIAkJCQl9CkBAIC0xMjgxNCw2ICsxMjgyNSw3IEBAIHN0YXRpYyBp bnQgemVuZF9mZXRjaF9wcm9wZXJ0eV9hZGRyZXNzX3IKIAogCQlpZiAoUkVUVVJOX1ZBTFVF X1VOVVNFRCgmb3BsaW5lLT5yZXN1bHQpKSB7CiAJCQlpZiAoWl9SRUZDT1VOVF9QKHJldHZh bCkgPT0gMCkgeworCQkJCUdDX1JFTU9WRV9aVkFMX0ZST01fQlVGRkVSKHJldHZhbCk7CiAJ CQkJenZhbF9kdG9yKHJldHZhbCk7CiAJCQkJRlJFRV9aVkFMKHJldHZhbCk7CiAJCQl9CkBA IC0xMzczMCw2ICsxMzc0Miw3IEBAIHN0YXRpYyBpbnQgemVuZF9iaW5hcnlfYXNzaWduX29w X29ial9oZWwKIAkJCQkJenZhbCAqdmFsdWUgPSBaX09CSl9IVF9QKHopLT5nZXQoeiBUU1JN TFNfQ0MpOwogCiAJCQkJCWlmIChaX1JFRkNPVU5UX1AoeikgPT0gMCkgeworCQkJCQkJR0Nf UkVNT1ZFX1pWQUxfRlJPTV9CVUZGRVIoeik7CiAJCQkJCQl6dmFsX2R0b3Ioeik7CiAJCQkJ CQlGUkVFX1pWQUwoeik7CiAJCQkJCX0KQEAgLTE0NTMzLDYgKzE0NTQ2LDcgQEAgc3RhdGlj IGludCB6ZW5kX2JpbmFyeV9hc3NpZ25fb3Bfb2JqX2hlbAogCQkJCQl6dmFsICp2YWx1ZSA9 IFpfT0JKX0hUX1AoeiktPmdldCh6IFRTUk1MU19DQyk7CiAKIAkJCQkJaWYgKFpfUkVGQ09V TlRfUCh6KSA9PSAwKSB7CisJCQkJCQlHQ19SRU1PVkVfWlZBTF9GUk9NX0JVRkZFUih6KTsK IAkJCQkJCXp2YWxfZHRvcih6KTsKIAkJCQkJCUZSRUVfWlZBTCh6KTsKIAkJCQkJfQpAQCAt MTQ3NzAsNiArMTQ3ODQsNyBAQCBzdGF0aWMgaW50IHplbmRfcHJlX2luY2RlY19wcm9wZXJ0 eV9oZWxwCiAJCQkJenZhbCAqdmFsdWUgPSBaX09CSl9IVF9QKHopLT5nZXQoeiBUU1JNTFNf Q0MpOwogCiAJCQkJaWYgKFpfUkVGQ09VTlRfUCh6KSA9PSAwKSB7CisJCQkJCUdDX1JFTU9W RV9aVkFMX0ZST01fQlVGRkVSKHopOwogCQkJCQl6dmFsX2R0b3Ioeik7CiAJCQkJCUZSRUVf WlZBTCh6KTsKIAkJCQl9CkBAIC0xNDg2MCw2ICsxNDg3NSw3IEBAIHN0YXRpYyBpbnQgemVu ZF9wb3N0X2luY2RlY19wcm9wZXJ0eV9oZWwKIAkJCQl6dmFsICp2YWx1ZSA9IFpfT0JKX0hU X1AoeiktPmdldCh6IFRTUk1MU19DQyk7CiAKIAkJCQlpZiAoWl9SRUZDT1VOVF9QKHopID09 IDApIHsKKwkJCQkJR0NfUkVNT1ZFX1pWQUxfRlJPTV9CVUZGRVIoeik7CiAJCQkJCXp2YWxf ZHRvcih6KTsKIAkJCQkJRlJFRV9aVkFMKHopOwogCQkJCX0KQEAgLTE1MDkwLDYgKzE1MTA2 LDcgQEAgc3RhdGljIGludCB6ZW5kX2ZldGNoX3Byb3BlcnR5X2FkZHJlc3NfcgogCiAJCWlm IChSRVRVUk5fVkFMVUVfVU5VU0VEKCZvcGxpbmUtPnJlc3VsdCkpIHsKIAkJCWlmIChaX1JF RkNPVU5UX1AocmV0dmFsKSA9PSAwKSB7CisJCQkJR0NfUkVNT1ZFX1pWQUxfRlJPTV9CVUZG RVIocmV0dmFsKTsKIAkJCQl6dmFsX2R0b3IocmV0dmFsKTsKIAkJCQlGUkVFX1pWQUwocmV0 dmFsKTsKIAkJCX0KQEAgLTE2MDgzLDYgKzE2MTAwLDcgQEAgc3RhdGljIGludCB6ZW5kX2Jp bmFyeV9hc3NpZ25fb3Bfb2JqX2hlbAogCQkJCQl6dmFsICp2YWx1ZSA9IFpfT0JKX0hUX1Ao eiktPmdldCh6IFRTUk1MU19DQyk7CiAKIAkJCQkJaWYgKFpfUkVGQ09VTlRfUCh6KSA9PSAw KSB7CisJCQkJCQlHQ19SRU1PVkVfWlZBTF9GUk9NX0JVRkZFUih6KTsKIAkJCQkJCXp2YWxf ZHRvcih6KTsKIAkJCQkJCUZSRUVfWlZBTCh6KTsKIAkJCQkJfQpAQCAtMTYzMTksNiArMTYz MzcsNyBAQCBzdGF0aWMgaW50IHplbmRfcHJlX2luY2RlY19wcm9wZXJ0eV9oZWxwCiAJCQkJ enZhbCAqdmFsdWUgPSBaX09CSl9IVF9QKHopLT5nZXQoeiBUU1JNTFNfQ0MpOwogCiAJCQkJ aWYgKFpfUkVGQ09VTlRfUCh6KSA9PSAwKSB7CisJCQkJCUdDX1JFTU9WRV9aVkFMX0ZST01f QlVGRkVSKHopOwogCQkJCQl6dmFsX2R0b3Ioeik7CiAJCQkJCUZSRUVfWlZBTCh6KTsKIAkJ CQl9CkBAIC0xNjQwOSw2ICsxNjQyOCw3IEBAIHN0YXRpYyBpbnQgemVuZF9wb3N0X2luY2Rl Y19wcm9wZXJ0eV9oZWwKIAkJCQl6dmFsICp2YWx1ZSA9IFpfT0JKX0hUX1AoeiktPmdldCh6 IFRTUk1MU19DQyk7CiAKIAkJCQlpZiAoWl9SRUZDT1VOVF9QKHopID09IDApIHsKKwkJCQkJ R0NfUkVNT1ZFX1pWQUxfRlJPTV9CVUZGRVIoeik7CiAJCQkJCXp2YWxfZHRvcih6KTsKIAkJ CQkJRlJFRV9aVkFMKHopOwogCQkJCX0KQEAgLTE2NDg4LDYgKzE2NTA4LDcgQEAgc3RhdGlj IGludCB6ZW5kX2ZldGNoX3Byb3BlcnR5X2FkZHJlc3NfcgogCiAJCWlmIChSRVRVUk5fVkFM VUVfVU5VU0VEKCZvcGxpbmUtPnJlc3VsdCkpIHsKIAkJCWlmIChaX1JFRkNPVU5UX1AocmV0 dmFsKSA9PSAwKSB7CisJCQkJR0NfUkVNT1ZFX1pWQUxfRlJPTV9CVUZGRVIocmV0dmFsKTsK IAkJCQl6dmFsX2R0b3IocmV0dmFsKTsKIAkJCQlGUkVFX1pWQUwocmV0dmFsKTsKIAkJCX0K QEAgLTE3MTQ5LDYgKzE3MTcwLDcgQEAgc3RhdGljIGludCB6ZW5kX2JpbmFyeV9hc3NpZ25f b3Bfb2JqX2hlbAogCQkJCQl6dmFsICp2YWx1ZSA9IFpfT0JKX0hUX1AoeiktPmdldCh6IFRT Uk1MU19DQyk7CiAKIAkJCQkJaWYgKFpfUkVGQ09VTlRfUCh6KSA9PSAwKSB7CisJCQkJCQlH Q19SRU1PVkVfWlZBTF9GUk9NX0JVRkZFUih6KTsKIAkJCQkJCXp2YWxfZHRvcih6KTsKIAkJ CQkJCUZSRUVfWlZBTCh6KTsKIAkJCQkJfQpAQCAtMTczODYsNiArMTc0MDgsNyBAQCBzdGF0 aWMgaW50IHplbmRfcHJlX2luY2RlY19wcm9wZXJ0eV9oZWxwCiAJCQkJenZhbCAqdmFsdWUg PSBaX09CSl9IVF9QKHopLT5nZXQoeiBUU1JNTFNfQ0MpOwogCiAJCQkJaWYgKFpfUkVGQ09V TlRfUCh6KSA9PSAwKSB7CisJCQkJCUdDX1JFTU9WRV9aVkFMX0ZST01fQlVGRkVSKHopOwog CQkJCQl6dmFsX2R0b3Ioeik7CiAJCQkJCUZSRUVfWlZBTCh6KTsKIAkJCQl9CkBAIC0xNzQ3 Niw2ICsxNzQ5OSw3IEBAIHN0YXRpYyBpbnQgemVuZF9wb3N0X2luY2RlY19wcm9wZXJ0eV9o ZWwKIAkJCQl6dmFsICp2YWx1ZSA9IFpfT0JKX0hUX1AoeiktPmdldCh6IFRTUk1MU19DQyk7 CiAKIAkJCQlpZiAoWl9SRUZDT1VOVF9QKHopID09IDApIHsKKwkJCQkJR0NfUkVNT1ZFX1pW QUxfRlJPTV9CVUZGRVIoeik7CiAJCQkJCXp2YWxfZHRvcih6KTsKIAkJCQkJRlJFRV9aVkFM KHopOwogCQkJCX0KQEAgLTE3NTU1LDYgKzE3NTc5LDcgQEAgc3RhdGljIGludCB6ZW5kX2Zl dGNoX3Byb3BlcnR5X2FkZHJlc3NfcgogCiAJCWlmIChSRVRVUk5fVkFMVUVfVU5VU0VEKCZv cGxpbmUtPnJlc3VsdCkpIHsKIAkJCWlmIChaX1JFRkNPVU5UX1AocmV0dmFsKSA9PSAwKSB7 CisJCQkJR0NfUkVNT1ZFX1pWQUxfRlJPTV9CVUZGRVIocmV0dmFsKTsKIAkJCQl6dmFsX2R0 b3IocmV0dmFsKTsKIAkJCQlGUkVFX1pWQUwocmV0dmFsKTsKIAkJCX0KQEAgLTE4MTQ1LDYg KzE4MTcwLDcgQEAgc3RhdGljIGludCB6ZW5kX2JpbmFyeV9hc3NpZ25fb3Bfb2JqX2hlbAog CQkJCQl6dmFsICp2YWx1ZSA9IFpfT0JKX0hUX1AoeiktPmdldCh6IFRTUk1MU19DQyk7CiAK IAkJCQkJaWYgKFpfUkVGQ09VTlRfUCh6KSA9PSAwKSB7CisJCQkJCQlHQ19SRU1PVkVfWlZB TF9GUk9NX0JVRkZFUih6KTsKIAkJCQkJCXp2YWxfZHRvcih6KTsKIAkJCQkJCUZSRUVfWlZB TCh6KTsKIAkJCQkJfQpAQCAtMTgzODIsNiArMTg0MDgsNyBAQCBzdGF0aWMgaW50IHplbmRf cHJlX2luY2RlY19wcm9wZXJ0eV9oZWxwCiAJCQkJenZhbCAqdmFsdWUgPSBaX09CSl9IVF9Q KHopLT5nZXQoeiBUU1JNTFNfQ0MpOwogCiAJCQkJaWYgKFpfUkVGQ09VTlRfUCh6KSA9PSAw KSB7CisJCQkJCUdDX1JFTU9WRV9aVkFMX0ZST01fQlVGRkVSKHopOwogCQkJCQl6dmFsX2R0 b3Ioeik7CiAJCQkJCUZSRUVfWlZBTCh6KTsKIAkJCQl9CkBAIC0xODQ3Miw2ICsxODQ5OSw3 IEBAIHN0YXRpYyBpbnQgemVuZF9wb3N0X2luY2RlY19wcm9wZXJ0eV9oZWwKIAkJCQl6dmFs ICp2YWx1ZSA9IFpfT0JKX0hUX1AoeiktPmdldCh6IFRTUk1MU19DQyk7CiAKIAkJCQlpZiAo Wl9SRUZDT1VOVF9QKHopID09IDApIHsKKwkJCQkJR0NfUkVNT1ZFX1pWQUxfRlJPTV9CVUZG RVIoeik7CiAJCQkJCXp2YWxfZHRvcih6KTsKIAkJCQkJRlJFRV9aVkFMKHopOwogCQkJCX0K QEAgLTE4NTUxLDYgKzE4NTc5LDcgQEAgc3RhdGljIGludCB6ZW5kX2ZldGNoX3Byb3BlcnR5 X2FkZHJlc3NfcgogCiAJCWlmIChSRVRVUk5fVkFMVUVfVU5VU0VEKCZvcGxpbmUtPnJlc3Vs dCkpIHsKIAkJCWlmIChaX1JFRkNPVU5UX1AocmV0dmFsKSA9PSAwKSB7CisJCQkJR0NfUkVN T1ZFX1pWQUxfRlJPTV9CVUZGRVIocmV0dmFsKTsKIAkJCQl6dmFsX2R0b3IocmV0dmFsKTsK IAkJCQlGUkVFX1pWQUwocmV0dmFsKTsKIAkJCX0KQEAgLTE5MTQxLDYgKzE5MTcwLDcgQEAg c3RhdGljIGludCB6ZW5kX2JpbmFyeV9hc3NpZ25fb3Bfb2JqX2hlbAogCQkJCQl6dmFsICp2 YWx1ZSA9IFpfT0JKX0hUX1AoeiktPmdldCh6IFRTUk1MU19DQyk7CiAKIAkJCQkJaWYgKFpf UkVGQ09VTlRfUCh6KSA9PSAwKSB7CisJCQkJCQlHQ19SRU1PVkVfWlZBTF9GUk9NX0JVRkZF Uih6KTsKIAkJCQkJCXp2YWxfZHRvcih6KTsKIAkJCQkJCUZSRUVfWlZBTCh6KTsKIAkJCQkJ fQpAQCAtMTk0MDgsNiArMTk0MzgsNyBAQCBzdGF0aWMgaW50IHplbmRfYmluYXJ5X2Fzc2ln bl9vcF9vYmpfaGVsCiAJCQkJCXp2YWwgKnZhbHVlID0gWl9PQkpfSFRfUCh6KS0+Z2V0KHog VFNSTUxTX0NDKTsKIAogCQkJCQlpZiAoWl9SRUZDT1VOVF9QKHopID09IDApIHsKKwkJCQkJ CUdDX1JFTU9WRV9aVkFMX0ZST01fQlVGRkVSKHopOwogCQkJCQkJenZhbF9kdG9yKHopOwog CQkJCQkJRlJFRV9aVkFMKHopOwogCQkJCQl9CkBAIC0xOTY0NCw2ICsxOTY3NSw3IEBAIHN0 YXRpYyBpbnQgemVuZF9wcmVfaW5jZGVjX3Byb3BlcnR5X2hlbHAKIAkJCQl6dmFsICp2YWx1 ZSA9IFpfT0JKX0hUX1AoeiktPmdldCh6IFRTUk1MU19DQyk7CiAKIAkJCQlpZiAoWl9SRUZD T1VOVF9QKHopID09IDApIHsKKwkJCQkJR0NfUkVNT1ZFX1pWQUxfRlJPTV9CVUZGRVIoeik7 CiAJCQkJCXp2YWxfZHRvcih6KTsKIAkJCQkJRlJFRV9aVkFMKHopOwogCQkJCX0KQEAgLTE5 NzM0LDYgKzE5NzY2LDcgQEAgc3RhdGljIGludCB6ZW5kX3Bvc3RfaW5jZGVjX3Byb3BlcnR5 X2hlbAogCQkJCXp2YWwgKnZhbHVlID0gWl9PQkpfSFRfUCh6KS0+Z2V0KHogVFNSTUxTX0ND KTsKIAogCQkJCWlmIChaX1JFRkNPVU5UX1AoeikgPT0gMCkgeworCQkJCQlHQ19SRU1PVkVf WlZBTF9GUk9NX0JVRkZFUih6KTsKIAkJCQkJenZhbF9kdG9yKHopOwogCQkJCQlGUkVFX1pW QUwoeik7CiAJCQkJfQpAQCAtMTk4MTMsNiArMTk4NDYsNyBAQCBzdGF0aWMgaW50IHplbmRf ZmV0Y2hfcHJvcGVydHlfYWRkcmVzc19yCiAKIAkJaWYgKFJFVFVSTl9WQUxVRV9VTlVTRUQo Jm9wbGluZS0+cmVzdWx0KSkgewogCQkJaWYgKFpfUkVGQ09VTlRfUChyZXR2YWwpID09IDAp IHsKKwkJCQlHQ19SRU1PVkVfWlZBTF9GUk9NX0JVRkZFUihyZXR2YWwpOwogCQkJCXp2YWxf ZHRvcihyZXR2YWwpOwogCQkJCUZSRUVfWlZBTChyZXR2YWwpOwogCQkJfQpAQCAtMjE4ODMs NiArMjE5MTcsNyBAQCBzdGF0aWMgaW50IHplbmRfYmluYXJ5X2Fzc2lnbl9vcF9vYmpfaGVs CiAJCQkJCXp2YWwgKnZhbHVlID0gWl9PQkpfSFRfUCh6KS0+Z2V0KHogVFNSTUxTX0NDKTsK IAogCQkJCQlpZiAoWl9SRUZDT1VOVF9QKHopID09IDApIHsKKwkJCQkJCUdDX1JFTU9WRV9a VkFMX0ZST01fQlVGRkVSKHopOwogCQkJCQkJenZhbF9kdG9yKHopOwogCQkJCQkJRlJFRV9a VkFMKHopOwogCQkJCQl9CkBAIC0yMjExOSw2ICsyMjE1NCw3IEBAIHN0YXRpYyBpbnQgemVu ZF9wcmVfaW5jZGVjX3Byb3BlcnR5X2hlbHAKIAkJCQl6dmFsICp2YWx1ZSA9IFpfT0JKX0hU X1AoeiktPmdldCh6IFRTUk1MU19DQyk7CiAKIAkJCQlpZiAoWl9SRUZDT1VOVF9QKHopID09 IDApIHsKKwkJCQkJR0NfUkVNT1ZFX1pWQUxfRlJPTV9CVUZGRVIoeik7CiAJCQkJCXp2YWxf ZHRvcih6KTsKIAkJCQkJRlJFRV9aVkFMKHopOwogCQkJCX0KQEAgLTIyMjA5LDYgKzIyMjQ1 LDcgQEAgc3RhdGljIGludCB6ZW5kX3Bvc3RfaW5jZGVjX3Byb3BlcnR5X2hlbAogCQkJCXp2 YWwgKnZhbHVlID0gWl9PQkpfSFRfUCh6KS0+Z2V0KHogVFNSTUxTX0NDKTsKIAogCQkJCWlm IChaX1JFRkNPVU5UX1AoeikgPT0gMCkgeworCQkJCQlHQ19SRU1PVkVfWlZBTF9GUk9NX0JV RkZFUih6KTsKIAkJCQkJenZhbF9kdG9yKHopOwogCQkJCQlGUkVFX1pWQUwoeik7CiAJCQkJ fQpAQCAtMjI0MzgsNiArMjI0NzUsNyBAQCBzdGF0aWMgaW50IHplbmRfZmV0Y2hfcHJvcGVy dHlfYWRkcmVzc19yCiAKIAkJaWYgKFJFVFVSTl9WQUxVRV9VTlVTRUQoJm9wbGluZS0+cmVz dWx0KSkgewogCQkJaWYgKFpfUkVGQ09VTlRfUChyZXR2YWwpID09IDApIHsKKwkJCQlHQ19S RU1PVkVfWlZBTF9GUk9NX0JVRkZFUihyZXR2YWwpOwogCQkJCXp2YWxfZHRvcihyZXR2YWwp OwogCQkJCUZSRUVfWlZBTChyZXR2YWwpOwogCQkJfQpAQCAtMjM0NDksNiArMjM0ODcsNyBA QCBzdGF0aWMgaW50IHplbmRfYmluYXJ5X2Fzc2lnbl9vcF9vYmpfaGVsCiAJCQkJCXp2YWwg KnZhbHVlID0gWl9PQkpfSFRfUCh6KS0+Z2V0KHogVFNSTUxTX0NDKTsKIAogCQkJCQlpZiAo Wl9SRUZDT1VOVF9QKHopID09IDApIHsKKwkJCQkJCUdDX1JFTU9WRV9aVkFMX0ZST01fQlVG RkVSKHopOwogCQkJCQkJenZhbF9kdG9yKHopOwogCQkJCQkJRlJFRV9aVkFMKHopOwogCQkJ CQl9CkBAIC0yMzY4Niw2ICsyMzcyNSw3IEBAIHN0YXRpYyBpbnQgemVuZF9wcmVfaW5jZGVj X3Byb3BlcnR5X2hlbHAKIAkJCQl6dmFsICp2YWx1ZSA9IFpfT0JKX0hUX1AoeiktPmdldCh6 IFRTUk1MU19DQyk7CiAKIAkJCQlpZiAoWl9SRUZDT1VOVF9QKHopID09IDApIHsKKwkJCQkJ R0NfUkVNT1ZFX1pWQUxfRlJPTV9CVUZGRVIoeik7CiAJCQkJCXp2YWxfZHRvcih6KTsKIAkJ CQkJRlJFRV9aVkFMKHopOwogCQkJCX0KQEAgLTIzNzc2LDYgKzIzODE2LDcgQEAgc3RhdGlj IGludCB6ZW5kX3Bvc3RfaW5jZGVjX3Byb3BlcnR5X2hlbAogCQkJCXp2YWwgKnZhbHVlID0g Wl9PQkpfSFRfUCh6KS0+Z2V0KHogVFNSTUxTX0NDKTsKIAogCQkJCWlmIChaX1JFRkNPVU5U X1AoeikgPT0gMCkgeworCQkJCQlHQ19SRU1PVkVfWlZBTF9GUk9NX0JVRkZFUih6KTsKIAkJ CQkJenZhbF9kdG9yKHopOwogCQkJCQlGUkVFX1pWQUwoeik7CiAJCQkJfQpAQCAtMjQwMDUs NiArMjQwNDYsNyBAQCBzdGF0aWMgaW50IHplbmRfZmV0Y2hfcHJvcGVydHlfYWRkcmVzc19y CiAKIAkJaWYgKFJFVFVSTl9WQUxVRV9VTlVTRUQoJm9wbGluZS0+cmVzdWx0KSkgewogCQkJ aWYgKFpfUkVGQ09VTlRfUChyZXR2YWwpID09IDApIHsKKwkJCQlHQ19SRU1PVkVfWlZBTF9G Uk9NX0JVRkZFUihyZXR2YWwpOwogCQkJCXp2YWxfZHRvcihyZXR2YWwpOwogCQkJCUZSRUVf WlZBTChyZXR2YWwpOwogCQkJfQpAQCAtMjUwMTksNiArMjUwNjEsNyBAQCBzdGF0aWMgaW50 IHplbmRfYmluYXJ5X2Fzc2lnbl9vcF9vYmpfaGVsCiAJCQkJCXp2YWwgKnZhbHVlID0gWl9P QkpfSFRfUCh6KS0+Z2V0KHogVFNSTUxTX0NDKTsKIAogCQkJCQlpZiAoWl9SRUZDT1VOVF9Q KHopID09IDApIHsKKwkJCQkJCUdDX1JFTU9WRV9aVkFMX0ZST01fQlVGRkVSKHopOwogCQkJ CQkJenZhbF9kdG9yKHopOwogCQkJCQkJRlJFRV9aVkFMKHopOwogCQkJCQl9CkBAIC0yNTI1 Niw2ICsyNTI5OSw3IEBAIHN0YXRpYyBpbnQgemVuZF9wcmVfaW5jZGVjX3Byb3BlcnR5X2hl bHAKIAkJCQl6dmFsICp2YWx1ZSA9IFpfT0JKX0hUX1AoeiktPmdldCh6IFRTUk1MU19DQyk7 CiAKIAkJCQlpZiAoWl9SRUZDT1VOVF9QKHopID09IDApIHsKKwkJCQkJR0NfUkVNT1ZFX1pW QUxfRlJPTV9CVUZGRVIoeik7CiAJCQkJCXp2YWxfZHRvcih6KTsKIAkJCQkJRlJFRV9aVkFM KHopOwogCQkJCX0KQEAgLTI1MzQ2LDYgKzI1MzkwLDcgQEAgc3RhdGljIGludCB6ZW5kX3Bv c3RfaW5jZGVjX3Byb3BlcnR5X2hlbAogCQkJCXp2YWwgKnZhbHVlID0gWl9PQkpfSFRfUCh6 KS0+Z2V0KHogVFNSTUxTX0NDKTsKIAogCQkJCWlmIChaX1JFRkNPVU5UX1AoeikgPT0gMCkg eworCQkJCQlHQ19SRU1PVkVfWlZBTF9GUk9NX0JVRkZFUih6KTsKIAkJCQkJenZhbF9kdG9y KHopOwogCQkJCQlGUkVFX1pWQUwoeik7CiAJCQkJfQpAQCAtMjU1NzUsNiArMjU2MjAsNyBA QCBzdGF0aWMgaW50IHplbmRfZmV0Y2hfcHJvcGVydHlfYWRkcmVzc19yCiAKIAkJaWYgKFJF VFVSTl9WQUxVRV9VTlVTRUQoJm9wbGluZS0+cmVzdWx0KSkgewogCQkJaWYgKFpfUkVGQ09V TlRfUChyZXR2YWwpID09IDApIHsKKwkJCQlHQ19SRU1PVkVfWlZBTF9GUk9NX0JVRkZFUihy ZXR2YWwpOwogCQkJCXp2YWxfZHRvcihyZXR2YWwpOwogCQkJCUZSRUVfWlZBTChyZXR2YWwp OwogCQkJfQpAQCAtMjYzOTEsNiArMjY0MzcsNyBAQCBzdGF0aWMgaW50IHplbmRfYmluYXJ5 X2Fzc2lnbl9vcF9vYmpfaGVsCiAJCQkJCXp2YWwgKnZhbHVlID0gWl9PQkpfSFRfUCh6KS0+ Z2V0KHogVFNSTUxTX0NDKTsKIAogCQkJCQlpZiAoWl9SRUZDT1VOVF9QKHopID09IDApIHsK KwkJCQkJCUdDX1JFTU9WRV9aVkFMX0ZST01fQlVGRkVSKHopOwogCQkJCQkJenZhbF9kdG9y KHopOwogCQkJCQkJRlJFRV9aVkFMKHopOwogCQkJCQl9CkBAIC0yNzEwMyw2ICsyNzE1MCw3 IEBAIHN0YXRpYyBpbnQgemVuZF9iaW5hcnlfYXNzaWduX29wX29ial9oZWwKIAkJCQkJenZh bCAqdmFsdWUgPSBaX09CSl9IVF9QKHopLT5nZXQoeiBUU1JNTFNfQ0MpOwogCiAJCQkJCWlm IChaX1JFRkNPVU5UX1AoeikgPT0gMCkgeworCQkJCQkJR0NfUkVNT1ZFX1pWQUxfRlJPTV9C VUZGRVIoeik7CiAJCQkJCQl6dmFsX2R0b3Ioeik7CiAJCQkJCQlGUkVFX1pWQUwoeik7CiAJ CQkJCX0KQEAgLTI3MzM5LDYgKzI3Mzg3LDcgQEAgc3RhdGljIGludCB6ZW5kX3ByZV9pbmNk ZWNfcHJvcGVydHlfaGVscAogCQkJCXp2YWwgKnZhbHVlID0gWl9PQkpfSFRfUCh6KS0+Z2V0 KHogVFNSTUxTX0NDKTsKIAogCQkJCWlmIChaX1JFRkNPVU5UX1AoeikgPT0gMCkgeworCQkJ CQlHQ19SRU1PVkVfWlZBTF9GUk9NX0JVRkZFUih6KTsKIAkJCQkJenZhbF9kdG9yKHopOwog CQkJCQlGUkVFX1pWQUwoeik7CiAJCQkJfQpAQCAtMjc0MjksNiArMjc0NzgsNyBAQCBzdGF0 aWMgaW50IHplbmRfcG9zdF9pbmNkZWNfcHJvcGVydHlfaGVsCiAJCQkJenZhbCAqdmFsdWUg PSBaX09CSl9IVF9QKHopLT5nZXQoeiBUU1JNTFNfQ0MpOwogCiAJCQkJaWYgKFpfUkVGQ09V TlRfUCh6KSA9PSAwKSB7CisJCQkJCUdDX1JFTU9WRV9aVkFMX0ZST01fQlVGRkVSKHopOwog CQkJCQl6dmFsX2R0b3Ioeik7CiAJCQkJCUZSRUVfWlZBTCh6KTsKIAkJCQl9CkBAIC0yNzY1 OCw2ICsyNzcwOCw3IEBAIHN0YXRpYyBpbnQgemVuZF9mZXRjaF9wcm9wZXJ0eV9hZGRyZXNz X3IKIAogCQlpZiAoUkVUVVJOX1ZBTFVFX1VOVVNFRCgmb3BsaW5lLT5yZXN1bHQpKSB7CiAJ CQlpZiAoWl9SRUZDT1VOVF9QKHJldHZhbCkgPT0gMCkgeworCQkJCUdDX1JFTU9WRV9aVkFM X0ZST01fQlVGRkVSKHJldHZhbCk7CiAJCQkJenZhbF9kdG9yKHJldHZhbCk7CiAJCQkJRlJF RV9aVkFMKHJldHZhbCk7CiAJCQl9CkluZGV4OiBaZW5kL3Rlc3RzL2djXzAwMS5waHB0Cj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KUkNTIGZpbGU6IFplbmQvdGVzdHMvZ2NfMDAxLnBocHQKZGlmZiAtTiBa ZW5kL3Rlc3RzL2djXzAwMS5waHB0Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDow MCAtMDAwMAorKysgWmVuZC90ZXN0cy9nY18wMDEucGhwdAkxOSBEZWMgMjAwNyAwODozMjoz MiAtMDAwMApAQCAtMCwwICsxLDEyIEBACistLVRFU1QtLQorR0MgMDAxOiBnY19lbmFibGUo KS9nY19kaWFibGUoKS9nY19lbmFibGVkKCkKKy0tRklMRS0tCis8P3BocAorZ2NfZGlzYWJs ZSgpOwordmFyX2R1bXAoZ2NfZW5hYmxlZCgpKTsKK2djX2VuYWJsZSgpOwordmFyX2R1bXAo Z2NfZW5hYmxlZCgpKTsKKz8+CistLUVYUEVDVC0tCitib29sKGZhbHNlKQorYm9vbCh0cnVl KQpJbmRleDogWmVuZC90ZXN0cy9nY18wMDIucGhwdAo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiBaZW5kL3Rlc3RzL2djXzAwMi5waHB0CmRpZmYgLU4gWmVuZC90ZXN0cy9nY18wMDIucGhw dAotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIFplbmQvdGVz dHMvZ2NfMDAyLnBocHQJMTkgRGVjIDIwMDcgMDg6MzI6MzIgLTAwMDAKQEAgLTAsMCArMSwx NiBAQAorLS1URVNULS0KK0dDIDAwMjogZ2NfZW5hYmxlKCkvZ2NfZGlhYmxlKCkgYW5kIGlu aV9nZXQoKQorLS1GSUxFLS0KKzw/cGhwCitnY19kaXNhYmxlKCk7Cit2YXJfZHVtcChnY19l bmFibGVkKCkpOworZWNobyBpbmlfZ2V0KCd6ZW5kLmVuYWJsZV9nYycpIC4gIlxuIjsKK2dj X2VuYWJsZSgpOwordmFyX2R1bXAoZ2NfZW5hYmxlZCgpKTsKK2VjaG8gaW5pX2dldCgnemVu ZC5lbmFibGVfZ2MnKSAuICJcbiI7Cis/PgorLS1FWFBFQ1QtLQorYm9vbChmYWxzZSkKKzAK K2Jvb2wodHJ1ZSkKKzEKSW5kZXg6IFplbmQvdGVzdHMvZ2NfMDAzLnBocHQKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpSQ1MgZmlsZTogWmVuZC90ZXN0cy9nY18wMDMucGhwdApkaWZmIC1OIFplbmQvdGVz dHMvZ2NfMDAzLnBocHQKLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAw CisrKyBaZW5kL3Rlc3RzL2djXzAwMy5waHB0CTE5IERlYyAyMDA3IDA4OjMyOjMyIC0wMDAw CkBAIC0wLDAgKzEsMTYgQEAKKy0tVEVTVC0tCitHQyAwMDM6IGdjX2VuYWJsZWQoKSBhbmQg aW5pX3NldCgpCistLUZJTEUtLQorPD9waHAKK2luaV9zZXQoJ3plbmQuZW5hYmxlX2djJywn MCcpOwordmFyX2R1bXAoZ2NfZW5hYmxlZCgpKTsKK2VjaG8gaW5pX2dldCgnemVuZC5lbmFi bGVfZ2MnKSAuICJcbiI7Citpbmlfc2V0KCd6ZW5kLmVuYWJsZV9nYycsJzEnKTsKK3Zhcl9k dW1wKGdjX2VuYWJsZWQoKSk7CitlY2hvIGluaV9nZXQoJ3plbmQuZW5hYmxlX2djJykgLiAi XG4iOworPz4KKy0tRVhQRUNULS0KK2Jvb2woZmFsc2UpCiswCitib29sKHRydWUpCisxCklu ZGV4OiBaZW5kL3Rlc3RzL2djXzAwNC5waHB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFpl bmQvdGVzdHMvZ2NfMDA0LnBocHQKZGlmZiAtTiBaZW5kL3Rlc3RzL2djXzAwNC5waHB0Ci0t LSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgWmVuZC90ZXN0cy9n Y18wMDQucGhwdAkxOSBEZWMgMjAwNyAwODozMjozMiAtMDAwMApAQCAtMCwwICsxLDI0IEBA CistLVRFU1QtLQorR0MgMDA0OiBTaW1wbGUgYXJyYXkgY3ljbGUKKy0tRklMRS0tCis8P3Bo cAorJGEgPSBhcnJheSgpOworJGFbXSA9JiAkYTsKK3Zhcl9kdW1wKCRhKTsKK3Vuc2V0KCRh KTsKK3Zhcl9kdW1wKGdjX2NvbGxlY3RfY3ljbGVzKCkpOworZWNobyAib2tcbiIKKz8+Cist LUVYUEVDVC0tCithcnJheSgxKSB7CisgIFswXT0+CisgICZhcnJheSgxKSB7CisgICAgWzBd PT4KKyAgICAmYXJyYXkoMSkgeworICAgICAgWzBdPT4KKyAgICAgICpSRUNVUlNJT04qCisg ICAgfQorICB9Cit9CitpbnQoMSkKK29rCkluZGV4OiBaZW5kL3Rlc3RzL2djXzAwNS5waHB0 Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFplbmQvdGVzdHMvZ2NfMDA1LnBocHQKZGlmZiAt TiBaZW5kL3Rlc3RzL2djXzAwNS5waHB0Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDow MDowMCAtMDAwMAorKysgWmVuZC90ZXN0cy9nY18wMDUucGhwdAkxOSBEZWMgMjAwNyAwODoz MjozMiAtMDAwMApAQCAtMCwwICsxLDIxIEBACistLVRFU1QtLQorR0MgMDA1OiBTaW1wbGUg b2JqZWN0IGN5Y2xlCistLUZJTEUtLQorPD9waHAKKyRhID0gbmV3IHN0ZENsYXNzKCk7Cisk YS0+YSA9ICRhOwordmFyX2R1bXAoJGEpOwordW5zZXQoJGEpOwordmFyX2R1bXAoZ2NfY29s bGVjdF9jeWNsZXMoKSk7CitlY2hvICJva1xuIgorPz4KKy0tRVhQRUNULS0KK29iamVjdChz dGRDbGFzcykjMSAoMSkgeworICBbImEiXT0+CisgIG9iamVjdChzdGRDbGFzcykjMSAoMSkg eworICAgIFsiYSJdPT4KKyAgICAqUkVDVVJTSU9OKgorICB9Cit9CitpbnQoMSkKK29rCklu ZGV4OiBaZW5kL3Rlc3RzL2djXzAwNi5waHB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFpl bmQvdGVzdHMvZ2NfMDA2LnBocHQKZGlmZiAtTiBaZW5kL3Rlc3RzL2djXzAwNi5waHB0Ci0t LSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgWmVuZC90ZXN0cy9n Y18wMDYucGhwdAkxOSBEZWMgMjAwNyAwODozMjozMiAtMDAwMApAQCAtMCwwICsxLDI4IEBA CistLVRFU1QtLQorR0MgMDA2OiBTaW1wbGUgYXJyYXktb2JqZWN0IGN5Y2xlCistLUZJTEUt LQorPD9waHAKKyRhID0gbmV3IHN0ZENsYXNzKCk7CiskYS0+YSA9IGFycmF5KCk7CiskYS0+ YVswXSA9JiAkYTsKK3Zhcl9kdW1wKCRhKTsKK3Vuc2V0KCRhKTsKK3Zhcl9kdW1wKGdjX2Nv bGxlY3RfY3ljbGVzKCkpOworZWNobyAib2tcbiIKKz8+CistLUVYUEVDVC0tCitvYmplY3Qo c3RkQ2xhc3MpIzEgKDEpIHsKKyAgWyJhIl09PgorICBhcnJheSgxKSB7CisgICAgWzBdPT4K KyAgICAmb2JqZWN0KHN0ZENsYXNzKSMxICgxKSB7CisgICAgICBbImEiXT0+CisgICAgICBh cnJheSgxKSB7CisgICAgICAgIFswXT0+CisgICAgICAgICpSRUNVUlNJT04qCisgICAgICB9 CisgICAgfQorICB9Cit9CitpbnQoMikKK29rCkluZGV4OiBaZW5kL3Rlc3RzL2djXzAwNy5w aHB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFplbmQvdGVzdHMvZ2NfMDA3LnBocHQKZGlm ZiAtTiBaZW5kL3Rlc3RzL2djXzAwNy5waHB0Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAw MDowMDowMCAtMDAwMAorKysgWmVuZC90ZXN0cy9nY18wMDcucGhwdAkxOSBEZWMgMjAwNyAw ODozMjozMiAtMDAwMApAQCAtMCwwICsxLDI2IEBACistLVRFU1QtLQorR0MgMDA3OiBVbnJl ZmVyZW5zZWQgYXJyYXkgY3ljbGUKKy0tRklMRS0tCis8P3BocAorJGEgPSBhcnJheShhcnJh eSgpKTsKKyRhWzBdWzBdID0mICRhWzBdOwordmFyX2R1bXAoJGFbMF0pOwordmFyX2R1bXAo Z2NfY29sbGVjdF9jeWNsZXMoKSk7Cit1bnNldCgkYSk7Cit2YXJfZHVtcChnY19jb2xsZWN0 X2N5Y2xlcygpKTsKK2VjaG8gIm9rXG4iCis/PgorLS1FWFBFQ1QtLQorYXJyYXkoMSkgewor ICBbMF09PgorICAmYXJyYXkoMSkgeworICAgIFswXT0+CisgICAgJmFycmF5KDEpIHsKKyAg ICAgIFswXT0+CisgICAgICAqUkVDVVJTSU9OKgorICAgIH0KKyAgfQorfQoraW50KDApCitp bnQoMSkKK29rCkluZGV4OiBaZW5kL3Rlc3RzL2djXzAwOC5waHB0Cj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IFplbmQvdGVzdHMvZ2NfMDA4LnBocHQKZGlmZiAtTiBaZW5kL3Rlc3RzL2dj XzAwOC5waHB0Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysg WmVuZC90ZXN0cy9nY18wMDgucGhwdAkxOSBEZWMgMjAwNyAwODozMjozMiAtMDAwMApAQCAt MCwwICsxLDI0IEBACistLVRFU1QtLQorR0MgMDA4OiBVbnJlZmVyZW5zZWQgb2JqZWN0IGN5 Y2xlCistLUZJTEUtLQorPD9waHAKKyRhID0gbmV3IHN0ZENsYXNzKCk7CiskYS0+YSA9IG5l dyBzdGRDbGFzcygpOworJGEtPmEtPmEgPSAkYS0+YTsKK3Zhcl9kdW1wKCRhLT5hKTsKK3Zh cl9kdW1wKGdjX2NvbGxlY3RfY3ljbGVzKCkpOwordW5zZXQoJGEpOwordmFyX2R1bXAoZ2Nf Y29sbGVjdF9jeWNsZXMoKSk7CitlY2hvICJva1xuIgorPz4KKy0tRVhQRUNULS0KK29iamVj dChzdGRDbGFzcykjMiAoMSkgeworICBbImEiXT0+CisgIG9iamVjdChzdGRDbGFzcykjMiAo MSkgeworICAgIFsiYSJdPT4KKyAgICAqUkVDVVJTSU9OKgorICB9Cit9CitpbnQoMCkKK2lu dCgxKQorb2sKSW5kZXg6IFplbmQvdGVzdHMvZ2NfMDA5LnBocHQKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogWmVuZC90ZXN0cy9nY18wMDkucGhwdApkaWZmIC1OIFplbmQvdGVzdHMvZ2Nf MDA5LnBocHQKLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBa ZW5kL3Rlc3RzL2djXzAwOS5waHB0CTE5IERlYyAyMDA3IDA4OjMyOjMyIC0wMDAwCkBAIC0w LDAgKzEsMzEgQEAKKy0tVEVTVC0tCitHQyAwMDk6IFVucmVmZXJlbnNlZCBhcnJheS1vYmpl Y3QgY3ljbGUKKy0tRklMRS0tCis8P3BocAorJGEgPSBhcnJheSgpOworJGFbMF0gPSBuZXcg c3RkQ2xhc3MoKTsKKyRhWzBdLT5hID0gYXJyYXkoKTsKKyRhWzBdLT5hWzBdID0mICRhWzBd OwordmFyX2R1bXAoJGFbMF0pOwordmFyX2R1bXAoZ2NfY29sbGVjdF9jeWNsZXMoKSk7Cit1 bnNldCgkYSk7Cit2YXJfZHVtcChnY19jb2xsZWN0X2N5Y2xlcygpKTsKK2VjaG8gIm9rXG4i Cis/PgorLS1FWFBFQ1QtLQorb2JqZWN0KHN0ZENsYXNzKSMxICgxKSB7CisgIFsiYSJdPT4K KyAgYXJyYXkoMSkgeworICAgIFswXT0+CisgICAgJm9iamVjdChzdGRDbGFzcykjMSAoMSkg eworICAgICAgWyJhIl09PgorICAgICAgYXJyYXkoMSkgeworICAgICAgICBbMF09PgorICAg ICAgICAqUkVDVVJTSU9OKgorICAgICAgfQorICAgIH0KKyAgfQorfQoraW50KDApCitpbnQo MikKK29rCkluZGV4OiBaZW5kL3Rlc3RzL2djXzAxMC5waHB0Cj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IFplbmQvdGVzdHMvZ2NfMDEwLnBocHQKZGlmZiAtTiBaZW5kL3Rlc3RzL2djXzAx MC5waHB0Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgWmVu ZC90ZXN0cy9nY18wMTAucGhwdAkxOSBEZWMgMjAwNyAwODozMjozMiAtMDAwMApAQCAtMCww ICsxLDI1IEBACistLVRFU1QtLQorR0MgMDEwOiBDeWNsZSB3aXRoIHJlZmVyZW5jZSB0byAk R0xPQkFMUworLS1GSUxFLS0KKzw/cGhwCiskYSA9IGFycmF5KCk7CiskYVtdID0mICRhOwor dmFyX2R1bXAoJGEpOworJGFbXSA9JiAkR0xPQkFMUzsKK3Vuc2V0KCRhKTsKK3Zhcl9kdW1w KGdjX2NvbGxlY3RfY3ljbGVzKCkpOworZWNobyAib2tcbiIKKz8+CistLUVYUEVDVC0tCith cnJheSgxKSB7CisgIFswXT0+CisgICZhcnJheSgxKSB7CisgICAgWzBdPT4KKyAgICAmYXJy YXkoMSkgeworICAgICAgWzBdPT4KKyAgICAgICpSRUNVUlNJT04qCisgICAgfQorICB9Cit9 CitpbnQoMSkKK29rCkluZGV4OiBaZW5kL3Rlc3RzL2djXzAxMS5waHB0Cj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IFplbmQvdGVzdHMvZ2NfMDExLnBocHQKZGlmZiAtTiBaZW5kL3Rlc3Rz L2djXzAxMS5waHB0Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAor KysgWmVuZC90ZXN0cy9nY18wMTEucGhwdAkxOSBEZWMgMjAwNyAwODozMjozMiAtMDAwMApA QCAtMCwwICsxLDI4IEBACistLVRFU1QtLQorR0MgMDExOiBHQyBhbmQgZGVzdHJ1Y3RvcnMK Ky0tRklMRS0tCis8P3BocAorY2xhc3MgRm9vIHsKKwlwdWJsaWMgJGE7CisJZnVuY3Rpb24g X19kZXN0cnVjdCgpIHsKKwkJZWNobyBfX0ZVTkNUSU9OX18sIlxuIjsKKwl9Cit9CiskYSA9 IG5ldyBGb28oKTsKKyRhLT5hID0gJGE7Cit2YXJfZHVtcCgkYSk7Cit1bnNldCgkYSk7Cit2 YXJfZHVtcChnY19jb2xsZWN0X2N5Y2xlcygpKTsKK2VjaG8gIm9rXG4iCis/PgorLS1FWFBF Q1QtLQorb2JqZWN0KEZvbykjMSAoMSkgeworICBbImEiXT0+CisgIG9iamVjdChGb28pIzEg KDEpIHsKKyAgICBbImEiXT0+CisgICAgKlJFQ1VSU0lPTioKKyAgfQorfQorX19kZXN0cnVj dAoraW50KDEpCitvawpJbmRleDogWmVuZC90ZXN0cy9nY18wMTIucGhwdAo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ClJDUyBmaWxlOiBaZW5kL3Rlc3RzL2djXzAxMi5waHB0CmRpZmYgLU4gWmVuZC90ZXN0 cy9nY18wMTIucGhwdAotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAK KysrIFplbmQvdGVzdHMvZ2NfMDEyLnBocHQJMTkgRGVjIDIwMDcgMDg6MzI6MzIgLTAwMDAK QEAgLTAsMCArMSwxNyBAQAorLS1URVNULS0KK0dDIDAxMjogY29sbGVjdGlvbiBvZiBtYW55 IGxvb3BzIGF0IG9uY2UKKy0tRklMRS0tCis8P3BocAorJGE9YXJyYXkoKTsKK2ZvciAoJGk9 MDsgJGkgPCAxMDAwOyAkaSsrKSB7CisJJGFbJGldID0gYXJyYXkoYXJyYXkoKSk7CisJJGFb JGldWzBdID0gJiAkYVskaV07Cit9Cit2YXJfZHVtcChnY19jb2xsZWN0X2N5Y2xlcygpKTsK K3Vuc2V0KCRhKTsKK3Zhcl9kdW1wKGdjX2NvbGxlY3RfY3ljbGVzKCkpOworZWNobyAib2tc biI7CistLUVYUEVDVC0tCitpbnQoMCkKK2ludCgxMDAwKQorb2sKSW5kZXg6IFplbmQvdGVz dHMvZ2NfMDEzLnBocHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogWmVuZC90ZXN0cy9nY18w MTMucGhwdApkaWZmIC1OIFplbmQvdGVzdHMvZ2NfMDEzLnBocHQKLS0tIC9kZXYvbnVsbAkx IEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBaZW5kL3Rlc3RzL2djXzAxMy5waHB0CTE5 IERlYyAyMDA3IDA4OjMyOjMyIC0wMDAwCkBAIC0wLDAgKzEsMTYgQEAKKy0tVEVTVC0tCitH QyAgMDEzOiBUb28gbWFueSBjeWNsZXMgaW4gb25lIGFycmF5CistLUZJTEUtLQorPD9waHAK KyRhID0gYXJyYXkoKTsKK2ZvciAoJGkgPSAwOyAkaSA8IDEwMDAxOyAkaSsrKSB7CisJJGFb JGldID0mICRhOworfQorJGFbXSA9ICJ4eHgiOwordW5zZXQoJGEpOwordmFyX2R1bXAoZ2Nf Y29sbGVjdF9jeWNsZXMoKSk7CitlY2hvICJva1xuIjsKKz8+CistLUVYUEVDVC0tCitpbnQo MikKK29rCkluZGV4OiBaZW5kL3Rlc3RzL2djXzAxNC5waHB0Cj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IFplbmQvdGVzdHMvZ2NfMDE0LnBocHQKZGlmZiAtTiBaZW5kL3Rlc3RzL2djXzAx NC5waHB0Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgWmVu ZC90ZXN0cy9nY18wMTQucGhwdAkxOSBEZWMgMjAwNyAwODozMjozMiAtMDAwMApAQCAtMCww ICsxLDE4IEBACistLVRFU1QtLQorR0MgIDAxNDogVG9vIG1hbnkgY3ljbGVzIGluIG9uZSBv YmplY3QKKy0tRklMRS0tCis8P3BocAorJGEgPSBuZXcgc3RkQ2xhc3MoKTsKK2ZvciAoJGkg PSAwOyAkaSA8IDEwMDAxOyAkaSsrKSB7CisJJGIgPSYgJGE7CisJJGEtPnsiYSIuJGl9ID0g JGE7Cit9Cit1bnNldCgkYik7CiskYS0+YiA9ICJ4eHgiOwordW5zZXQoJGEpOwordmFyX2R1 bXAoZ2NfY29sbGVjdF9jeWNsZXMoKSk7CitlY2hvICJva1xuIjsKKz8+CistLUVYUEVDVC0t CitpbnQoMTAwMDIpCitvawpJbmRleDogWmVuZC90ZXN0cy9nY18wMTUucGhwdAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiBaZW5kL3Rlc3RzL2djXzAxNS5waHB0CmRpZmYgLU4gWmVuZC90 ZXN0cy9nY18wMTUucGhwdAotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAw MDAKKysrIFplbmQvdGVzdHMvZ2NfMDE1LnBocHQJMTkgRGVjIDIwMDcgMDg6MzI6MzIgLTAw MDAKQEAgLTAsMCArMSwxOCBAQAorLS1URVNULS0KK0dDICAwMTU6IE9iamVjdCBhcyByb290 IG9mIGN5Y2xlCistLUZJTEUtLQorPD9waHAKKyRhID0gbmV3IHN0ZENsYXNzKCk7CiskYyA9 JiAkYTsKKyRiID0gJGE7CiskYS0+YSA9ICRhOworJGEtPmIgPSAieHh4IjsKK3Vuc2V0KCRj KTsKK3Vuc2V0KCRhKTsKK3Vuc2V0KCRiKTsKK3Zhcl9kdW1wKGdjX2NvbGxlY3RfY3ljbGVz KCkpOworZWNobyAib2tcbiI7Cis/PgorLS1FWFBFQ1QtLQoraW50KDIpCitvawpJbmRleDog WmVuZC90ZXN0cy9nY18wMTYucGhwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBaZW5kL3Rl c3RzL2djXzAxNi5waHB0CmRpZmYgLU4gWmVuZC90ZXN0cy9nY18wMTYucGhwdAotLS0gL2Rl di9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIFplbmQvdGVzdHMvZ2NfMDE2 LnBocHQJMTkgRGVjIDIwMDcgMDg6MzI6MzIgLTAwMDAKQEAgLTAsMCArMSwyNCBAQAorLS1U RVNULS0KK0dDIDAxNjogbmVzdGVkIEdDIGNhbGxzCistLUZJTEUtLQorPD9waHAKK2NsYXNz IEZvbyB7CisJcHVibGljICRhOworCWZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKSB7CisJCWVjaG8g Ii0+ICI7CisJCSRhID0gYXJyYXkoKTsKKwkJJGFbXSA9JiAkYTsKKwkJdW5zZXQoJGEpOwor CQl2YXJfZHVtcChnY19jb2xsZWN0X2N5Y2xlcygpKTsKKwl9Cit9CiskYSA9IG5ldyBGb28o KTsKKyRhLT5hID0gJGE7Cit1bnNldCgkYSk7Cit2YXJfZHVtcChnY19jb2xsZWN0X2N5Y2xl cygpKTsKK2VjaG8gIm9rXG4iCis/PgorLS1FWFBFQ1QtLQorLT4gaW50KDEpCitpbnQoMSkK K29rCkluZGV4OiBaZW5kL3Rlc3RzL2djXzAxNy5waHB0Cj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IFplbmQvdGVzdHMvZ2NfMDE3LnBocHQKZGlmZiAtTiBaZW5kL3Rlc3RzL2djXzAxNy5w aHB0Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDowMDowMCAtMDAwMAorKysgWmVuZC90 ZXN0cy9nY18wMTcucGhwdAkxOSBEZWMgMjAwNyAwODozMjozMiAtMDAwMApAQCAtMCwwICsx LDQxIEBACistLVRFU1QtLQorR0MgMDE3OiBHQyBhbmQgZGVzdHJ1Y3RvcnMgd2l0aCB1bnNl dAorLS1GSUxFLS0KKzw/cGhwCitjbGFzcyBOb2RlIHsKKwlwdWJsaWMgJG5hbWU7CisJcHVi bGljICRjaGlsZHJlbjsKKwlwdWJsaWMgJHBhcmVudDsKKwlmdW5jdGlvbiBfX2NvbnN0cnVj dCgkbmFtZSkgeworCQkkdGhpcy0+bmFtZSA9ICRuYW1lOworCQkkdGhpcy0+Y2hpbGRyZW4g PSBhcnJheSgpOworCQkkdGhpcy0+cGFyZW50ID0gbnVsbDsKKwl9CisJZnVuY3Rpb24gaW5z ZXJ0KCRub2RlKSB7CisJCSRub2RlLT5wYXJlbnQgPSAkdGhpczsKKwkJJHRoaXMtPmNoaWxk cmVuW10gPSAkbm9kZTsKKwl9CisJZnVuY3Rpb24gX19kZXN0cnVjdCgpIHsKKwkJdmFyX2R1 bXAoJHRoaXMtPm5hbWUpOworCQl1bnNldCgkdGhpcy0+bmFtZSk7CisJCXVuc2V0KCR0aGlz LT5jaGlsZHJlbik7CisJCXVuc2V0KCR0aGlzLT5wYXJlbnQpOworCX0KK30KKyRhID0gbmV3 IE5vZGUoJ0EnKTsKKyRiID0gbmV3IE5vZGUoJ0InKTsKKyRjID0gbmV3IE5vZGUoJ0MnKTsK KyRhLT5pbnNlcnQoJGIpOworJGEtPmluc2VydCgkYyk7Cit1bnNldCgkYSk7Cit1bnNldCgk Yik7Cit1bnNldCgkYyk7Cit2YXJfZHVtcChnY19jb2xsZWN0X2N5Y2xlcygpKTsKK2VjaG8g Im9rXG4iCis/PgorLS1FWFBFQ1RGLS0KK3N0cmluZygxKSAiJXMiCitzdHJpbmcoMSkgIiVz Igorc3RyaW5nKDEpICIlcyIKK2ludCgxMCkKK29rCkluZGV4OiBaZW5kL3Rlc3RzL2djXzAx OC5waHB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFplbmQvdGVzdHMvZ2NfMDE4LnBocHQK ZGlmZiAtTiBaZW5kL3Rlc3RzL2djXzAxOC5waHB0Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3 MCAwMDowMDowMCAtMDAwMAorKysgWmVuZC90ZXN0cy9nY18wMTgucGhwdAkxOSBEZWMgMjAw NyAwODozMjozMiAtMDAwMApAQCAtMCwwICsxLDEzIEBACistLVRFU1QtLQorR0MgMDE4OiBH QyBkZXRhY2ggd2l0aCBhc3NpZ24KKy0tRklMRS0tCis8P3BocAorJGEgPSBhcnJheShhcnJh eSgpKTsKKyRhWzBdWzBdID0mICRhWzBdOworJGEgPSAxOwordmFyX2R1bXAoZ2NfY29sbGVj dF9jeWNsZXMoKSk7CitlY2hvICJva1xuIgorPz4KKy0tRVhQRUNULS0KK2ludCgxKQorb2sK SW5kZXg6IFplbmQvdGVzdHMvZ2NfMDE5LnBocHQKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog WmVuZC90ZXN0cy9nY18wMTkucGhwdApkaWZmIC1OIFplbmQvdGVzdHMvZ2NfMDE5LnBocHQK LS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBaZW5kL3Rlc3Rz L2djXzAxOS5waHB0CTE5IERlYyAyMDA3IDA4OjMyOjMyIC0wMDAwCkBAIC0wLDAgKzEsMTQg QEAKKy0tVEVTVC0tCitHQyAwMTk6IEdDIGRldGFjaCB3aXRoIGFzc2lnbiBieSByZWZlcmVu Y2UKKy0tRklMRS0tCis8P3BocAorJGEgPSBhcnJheShhcnJheSgpKTsKKyRhWzBdWzBdID0m ICRhWzBdOworJGIgPSAxOworJGEgPSYgJGI7Cit2YXJfZHVtcChnY19jb2xsZWN0X2N5Y2xl cygpKTsKK2VjaG8gIm9rXG4iCis/PgorLS1FWFBFQ1QtLQoraW50KDEpCitvawpJbmRleDog WmVuZC90ZXN0cy9nY18wMjAucGhwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBaZW5kL3Rl c3RzL2djXzAyMC5waHB0CmRpZmYgLU4gWmVuZC90ZXN0cy9nY18wMjAucGhwdAotLS0gL2Rl di9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIFplbmQvdGVzdHMvZ2NfMDIw LnBocHQJMTkgRGVjIDIwMDcgMDg6MzI6MzIgLTAwMDAKQEAgLTAsMCArMSwxNSBAQAorLS1U RVNULS0KK0dDIDAyMDogR0MgZGV0YWNoIHJlZmVyZW5jZSB3aXRoIGFzc2lnbgorLS1GSUxF LS0KKzw/cGhwCiskYSA9IGFycmF5KCk7CiskYVswXSA9JiAkYTsKKyRhWzFdID0gYXJyYXko KTsKKyRhWzFdWzBdID0mICRhWzFdOworJGEgPSAxOwordmFyX2R1bXAoZ2NfY29sbGVjdF9j eWNsZXMoKSk7CitlY2hvICJva1xuIgorPz4KKy0tRVhQRUNULS0KK2ludCgxKQorb2sKSW5k ZXg6IFplbmQvdGVzdHMvZ2NfMDIxLnBocHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogWmVu ZC90ZXN0cy9nY18wMjEucGhwdApkaWZmIC1OIFplbmQvdGVzdHMvZ2NfMDIxLnBocHQKLS0t IC9kZXYvbnVsbAkxIEphbiAxOTcwIDAwOjAwOjAwIC0wMDAwCisrKyBaZW5kL3Rlc3RzL2dj XzAyMS5waHB0CTE5IERlYyAyMDA3IDA4OjMyOjMyIC0wMDAwCkBAIC0wLDAgKzEsMTYgQEAK Ky0tVEVTVC0tCitHQyAwMjE6IEdDIGRldGFjaCByZWZlcmVuY2Ugd2l0aCBhc3NpZ24gYnkg cmVmZXJlbmNlCistLUZJTEUtLQorPD9waHAKKyRhID0gYXJyYXkoKTsKKyRhWzBdID0mICRh OworJGFbMV0gPSBhcnJheSgpOworJGFbMV1bMF0gPSYgJGFbMV07CiskYiA9IDE7CiskYSA9 JiAkYjsKK3Zhcl9kdW1wKGdjX2NvbGxlY3RfY3ljbGVzKCkpOworZWNobyAib2tcbiIKKz8+ CistLUVYUEVDVC0tCitpbnQoMikKK29rCkluZGV4OiBaZW5kL3Rlc3RzL2djXzAyMi5waHB0 Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFplbmQvdGVzdHMvZ2NfMDIyLnBocHQKZGlmZiAt TiBaZW5kL3Rlc3RzL2djXzAyMi5waHB0Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDow MDowMCAtMDAwMAorKysgWmVuZC90ZXN0cy9nY18wMjIucGhwdAkxOSBEZWMgMjAwNyAwODoz MjozMiAtMDAwMApAQCAtMCwwICsxLDE1IEBACistLVRFU1QtLQorR0MgMDIyOiBHQyBkZXRh Y2ggcmVmZXJlbmNlIGluIGV4ZWN1dG9yJ3MgUFpWQUxfVU5MT0NLKCkKKy0tSU5JLS0KK2Vy cm9yX3JlcG9ydGluZz0wCistLUZJTEUtLQorPD9waHAKKyRhID0gYXJyYXkoYXJyYXkoKSk7 CiskYVswXVswXSA9JiAkYVswXTsKKyRzID0gYXJyYXkoMSkgKyB1bnNlcmlhbGl6ZShzZXJp YWxpemUoJiRhWzBdKSk7Cit2YXJfZHVtcChnY19jb2xsZWN0X2N5Y2xlcygpKTsKK2VjaG8g Im9rXG4iCis/PgorLS1FWFBFQ1QtLQoraW50KDEpCitvawpJbmRleDogWmVuZC90ZXN0cy9n Y18wMjMucGhwdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiBaZW5kL3Rlc3RzL2djXzAyMy5w aHB0CmRpZmYgLU4gWmVuZC90ZXN0cy9nY18wMjMucGhwdAotLS0gL2Rldi9udWxsCTEgSmFu IDE5NzAgMDA6MDA6MDAgLTAwMDAKKysrIFplbmQvdGVzdHMvZ2NfMDIzLnBocHQJMTkgRGVj IDIwMDcgMDg6MzI6MzIgLTAwMDAKQEAgLTAsMCArMSwyNyBAQAorLS1URVNULS0KK0dDIDAy MzogUm9vdCBidWZmZXIgb3ZlcmZsb3cgKGF1dG9tYXRpYyBjb2xsZWN0aW9uKQorLS1GSUxF LS0KKzw/cGhwCiskYT1hcnJheSgpOworZm9yICgkaT0wOyAkaSA8IDk5OTk7ICRpKyspIHsK KwkkYVskaV0gPSBhcnJheShhcnJheSgpKTsKKwkkYVskaV1bMF0gPSAmICRhWyRpXTsKK30K K3Zhcl9kdW1wKGdjX2NvbGxlY3RfY3ljbGVzKCkpOwordW5zZXQoJGEpOwordmFyX2R1bXAo Z2NfY29sbGVjdF9jeWNsZXMoKSk7CiskYT1hcnJheSgpOworZm9yICgkaT0wOyAkaSA8IDEw MDAxOyAkaSsrKSB7CisJJGFbJGldID0gYXJyYXkoYXJyYXkoKSk7CisJJGFbJGldWzBdID0g JiAkYVskaV07Cit9Cit2YXJfZHVtcChnY19jb2xsZWN0X2N5Y2xlcygpKTsKK3Vuc2V0KCRh KTsgLy8gMTAwMDAgenZhbHMgY29sbGVjdGVkIGF1dG9tYXRpYwordmFyX2R1bXAoZ2NfY29s bGVjdF9jeWNsZXMoKSk7CitlY2hvICJva1xuIjsKKy0tRVhQRUNULS0KK2ludCgwKQoraW50 KDk5OTkpCitpbnQoMCkKK2ludCgxKQorb2sKSW5kZXg6IFplbmQvdGVzdHMvZ2NfMDI0LnBo cHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogWmVuZC90ZXN0cy9nY18wMjQucGhwdApkaWZm IC1OIFplbmQvdGVzdHMvZ2NfMDI0LnBocHQKLS0tIC9kZXYvbnVsbAkxIEphbiAxOTcwIDAw OjAwOjAwIC0wMDAwCisrKyBaZW5kL3Rlc3RzL2djXzAyNC5waHB0CTE5IERlYyAyMDA3IDA4 OjMyOjMyIC0wMDAwCkBAIC0wLDAgKzEsMTUgQEAKKy0tVEVTVC0tCitHQyAwMjQ6IEdDIGFu ZCBvYmplY3RzIHdpdGggbm9uLXN0YW5kYXJkIGhhbmRsZXJzCistLVNLSVBJRi0tCis8P3Bo cCBpZiAoIWV4dGVuc2lvbl9sb2FkZWQoInNwbCIpKSBwcmludCAic2tpcCI7ID8+CistLUZJ TEUtLQorPD9waHAKKyRhID0gbmV3IEFycmF5T2JqZWN0KCk7CiskYVswXSA9ICRhOwordW5z ZXQoJGEpOwordmFyX2R1bXAoZ2NfY29sbGVjdF9jeWNsZXMoKSk7CitlY2hvICJva1xuIjsK Kz8+CistLUVYUEVDVC0tCitpbnQoMSkKK29rCkluZGV4OiBaZW5kL3Rlc3RzL2djXzAyNS5w aHB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFplbmQvdGVzdHMvZ2NfMDI1LnBocHQKZGlm ZiAtTiBaZW5kL3Rlc3RzL2djXzAyNS5waHB0Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAw MDowMDowMCAtMDAwMAorKysgWmVuZC90ZXN0cy9nY18wMjUucGhwdAkxOSBEZWMgMjAwNyAw ODozMjozMiAtMDAwMApAQCAtMCwwICsxLDExIEBACistLVRFU1QtLQorR0MgMDI1OiBBdXRv bWF0aWMgR0Mgb24gcmVxdWVzdCBzaHV0ZG93bgorLS1GSUxFLS0KKzw/cGhwCiskYSA9IGFy cmF5KGFycmF5KCkpOworJGFbMF1bMF0gPSYgJGFbMF07Cit1bnNldCgkYSk7CitlY2hvICJv a1xuIgorPz4KKy0tRVhQRUNULS0KK29rCkluZGV4OiBaZW5kL3Rlc3RzL2djXzAyNi5waHB0 Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IFplbmQvdGVzdHMvZ2NfMDI2LnBocHQKZGlmZiAt TiBaZW5kL3Rlc3RzL2djXzAyNi5waHB0Ci0tLSAvZGV2L251bGwJMSBKYW4gMTk3MCAwMDow MDowMCAtMDAwMAorKysgWmVuZC90ZXN0cy9nY18wMjYucGhwdAkxOSBEZWMgMjAwNyAwODoz MjozMiAtMDAwMApAQCAtMCwwICsxLDE0IEBACistLVRFU1QtLQorR0MgMDI2OiBBdXRvbWF0 aWMgR0Mgb24gcmVxdWVzdCBzaHV0ZG93biAoR0MgZW5hYmxlZCBhdCBydW4tdGltZSkKKy0t SU5JLS0KK3plbmQuZW5hYmxlX2djPTAKKy0tRklMRS0tCis8P3BocAorZ2NfZW5hYmxlKCk7 CiskYSA9IGFycmF5KGFycmF5KCkpOworJGFbMF1bMF0gPSYgJGFbMF07Cit1bnNldCgkYSk7 CitlY2hvICJva1xuIgorPz4KKy0tRVhQRUNULS0KK29rCkluZGV4OiBtYWluL21haW4uYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvcmVwb3NpdG9yeS9waHAtc3JjL21haW4vbWFpbi5j LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjY0MC4yLjIzLjIuNTcuMi40CmRpZmYgLXUgLXAg LWQgLXIxLjY0MC4yLjIzLjIuNTcuMi40IG1haW4uYwotLS0gbWFpbi9tYWluLmMJMjIgTm92 IDIwMDcgMTM6Mjc6MTMgLTAwMDAJMS42NDAuMi4yMy4yLjU3LjIuNAorKysgbWFpbi9tYWlu LmMJMTkgRGVjIDIwMDcgMDg6MzI6MzMgLTAwMDAKQEAgLTE3MDEsNiArMTcwMSw4IEBAIGlu dCBwaHBfbW9kdWxlX3N0YXJ0dXAoc2FwaV9tb2R1bGVfc3RydWMKIAl0c19hbGxvY2F0ZV9p ZCgmcGhwX3dpbjMyX2NvcmVfZ2xvYmFsc19pZCwgc2l6ZW9mKHBocF93aW4zMl9jb3JlX2ds b2JhbHMpLCAodHNfYWxsb2NhdGVfY3RvcikgcGhwX3dpbjMyX2NvcmVfZ2xvYmFsc19jdG9y LCAodHNfYWxsb2NhdGVfZHRvcikgcGhwX3dpbjMyX2NvcmVfZ2xvYmFsc19kdG9yKTsKICNl bmRpZgogI2VuZGlmCisJZ2NfZ2xvYmFsc19jdG9yKFRTUk1MU19DKTsKKwogCUVHKGJhaWxv dXQpID0gTlVMTDsKIAlFRyhlcnJvcl9yZXBvcnRpbmcpID0gRV9BTEwgJiB+RV9OT1RJQ0U7 CiAKQEAgLTE5MDIsNiArMTkwNCw3IEBAIHZvaWQgcGhwX21vZHVsZV9zaHV0ZG93bihUU1JN TFNfRCkKIAl6ZW5kX2luaV9zaHV0ZG93bihUU1JNTFNfQyk7CiAJc2h1dGRvd25fbWVtb3J5 X21hbmFnZXIoQ0codW5jbGVhbl9zaHV0ZG93biksIDEgVFNSTUxTX0NDKTsKIAljb3JlX2ds b2JhbHNfZHRvcigmY29yZV9nbG9iYWxzIFRTUk1MU19DQyk7CisJZ2NfZ2xvYmFsc19kdG9y KFRTUk1MU19DKTsKICNlbHNlCiAJemVuZF9pbmlfZ2xvYmFsX3NodXRkb3duKFRTUk1MU19D KTsKIAl0c19mcmVlX2lkKGNvcmVfZ2xvYmFsc19pZCk7Cg== --------------070107000006090906050109--