From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: =?UTF-8?Q?Nicolas_B=C3=A9rtolo?= Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] [WIP] Port feature/native-comp to Windows. Date: Wed, 13 May 2020 11:09:42 -0300 Message-ID: References: <5eb5b953.1c69fb81.a67ce.a764@mx.google.com> <83lfm1hc91.fsf@gnu.org> <83wo5lds87.fsf@gnu.org> <83lflzd8es.fsf@gnu.org> <83ftc7d4zu.fsf@gnu.org> <83blmvd2if.fsf@gnu.org> <833686d08r.fsf@gnu.org> <83eerp852g.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000005f3dbf05a58822a9" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="24797"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , emacs-devel@gnu.org To: Andrea Corallo Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed May 13 16:10:45 2020 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jYs5s-0006Kd-Qm for ged-emacs-devel@m.gmane-mx.org; Wed, 13 May 2020 16:10:45 +0200 Original-Received: from localhost ([::1]:35162 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jYs5r-0007Vu-Sk for ged-emacs-devel@m.gmane-mx.org; Wed, 13 May 2020 10:10:43 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:52704) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jYs58-0006yK-T4 for emacs-devel@gnu.org; Wed, 13 May 2020 10:09:58 -0400 Original-Received: from mail-ot1-x329.google.com ([2607:f8b0:4864:20::329]:42607) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jYs56-0004pq-00; Wed, 13 May 2020 10:09:58 -0400 Original-Received: by mail-ot1-x329.google.com with SMTP id m18so13454859otq.9; Wed, 13 May 2020 07:09:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=RuYf4Qy0JXv94J29IYg+21b0Sd1eCyTSPAM+TaLagwQ=; b=Bxxj+Q2Rr1vwmXY5VvoRwAoLDT5qFkRS5gItkClY/Ub9Svqyo1/7lxZw+8pfOjpsS7 voehEJ40K2WsEJosEdGVQNeDiSR5r5UUgLvaXiKkTuiOxqTtHHfzgFejGK3e96ua2sl1 IYu4l14AsaltJ7NKDWsLa+3tz2H/qieZCqhoyQJB7BYULPuyrEjtRBWZwqvsynaAhsP/ aT0mj3V14ehCV+2XhHvzmM7IdjOzfHCOkGryq+THJXIGfrvzRCnn/+piVOpkkhNoSkD3 tj679yO9RJzmXwvsTkoqV2V5WpWu5muMc0MYjUppEjggy8e0dRbZ6et3HaTF4Cmh8LsN yxsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=RuYf4Qy0JXv94J29IYg+21b0Sd1eCyTSPAM+TaLagwQ=; b=mGSKYv0/0h8FKatVKA/8HUe8cQ/jZVz1J9D8LaWV3EnFzIuj5h5uKZoNRO7gsIHJtW c5SXTeiDFXhDlxLL+Lnxqy8AMU8lBobz0iwi0NTva0ILJuaBvdkYtpMlVuGm1CLHtsoB jEJltnaXY/gajb6euVv8rtXbKMXNYsvDICcsSDEPzjlcuUZOyXa1yLm8hcAp/7f5/jyq S5CevQJagGiXd+1G7Y34vwMZudlwtOG/hFbMfKKo2Fo2DdSmsFcXjEg02FnZ0a0rQ+gY +JRCbZT8zpHCsw3tWrHcN3aXdStH4IYqzTSmyqeK34JTXreC57S3oNYTtdPdIcegr+Te 7lWA== X-Gm-Message-State: AGi0PuYok699lSEN0kyRV5Egfs8x+tZcOh4PTxb0JtdiyBEnzo5BPAxY eXk76Spn0zkDmTgFC6QmClTBLgOAKXDLhcniQBE= X-Google-Smtp-Source: APiQypKZE8zV2DTstv38bPdrqSsnhf0v2PtNfgW05grmWx1rmsqd9nt68weIpac+PrMK6NXk2HjosM8UmFg4SkgY0Hw= X-Received: by 2002:a9d:3988:: with SMTP id y8mr19772133otb.352.1589378994339; Wed, 13 May 2020 07:09:54 -0700 (PDT) In-Reply-To: Received-SPF: pass client-ip=2607:f8b0:4864:20::329; envelope-from=nicolasbertolo@gmail.com; helo=mail-ot1-x329.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:250124 Archived-At: --0000000000005f3dbf05a58822a9 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable > I think Qjson is a refuse from kill and yank. Heh, it turns out that fixing that uncovered a bug. We need to clear Vlibrary_cache when loading a dump (or prevent it from being dumped) becaus= e otherwise it will have a `gccjit` entry from when temacs loaded libgccjit a= nd then w32_delayed_load() will think that libgccjit is already loaded in the process. New version attached. PS: Shall I open a bug where we can track this? Nicolas El mar., 12 may. 2020 a las 17:33, Andrea Corallo () escribi= =C3=B3: > > Andrea Corallo writes: > > > Nicolas B=C3=A9rtolo writes: > > > >>> libdl exists only in MinGW64, I think. > >> > >>> Why do you need it? is it because the code uses dlopen/dlsym > >>> somewhere? > >> > >> The code uses `dynlib_open` and `dynlib_sym` which are implemented usi= ng libdl > >> in Posix systems. The original libgccjit uses it to implement the > >> `compile_to_memory` function that we do not use. The version of libgcc= jit I am > >> using implements that feature using native Windows functions, so libdl= is not > >> necessary. > >> > >> I don't think we can remove it because that part of the code runs only= when the > >> platform is not Mingw, and in that case libdl is necessary. > >> > >>> I think it's good to #undef each symbol before defining it. > >> > >> Fixed in the new patch. > > > > Hi Nicolas, > > > > I think would be handy to have 'native-comp-available-p' always defined > > also when compiling without the native compiler. Similarly to what we > > have for gnutls-available-p and libxml-available-p. > > > > +static bool > > +load_gccjit_if_necessary(bool mandatory) > > ^^^ > > space here > > +{ > > +#ifdef WINDOWSNT > > + if (!gccjit_initialized) > > + { > > + Lisp_Object status; > > + gccjit_initialized =3D init_gccjit_functions (); > > + > > > > Also I think gccjit_initialized should be declared be static inside > > load_gccjit_if_necessary given should and is used only there. > > > > Thanks > > > > Andrea > > Also > > + gccjit_initialized =3D init_gccjit_functions (); > + status =3D gccjit_initialized ? Qt : Qnil; > + Vlibrary_cache =3D Fcons (Fcons (Qjson, status), Vlibrary_cache); > > I think Qjson is a refuse from kill and yank. > > Thanks > > Andrea > > -- > akrl@sdf.org --0000000000005f3dbf05a58822a9 Content-Type: application/octet-stream; name="Load-libgccjit-dynamically-in-Windows.patch" Content-Disposition: attachment; filename="Load-libgccjit-dynamically-in-Windows.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ka5f4vqz0 RnJvbSA1MTE5ODk4ZmJkMzQ3NzUyYzQ2YjA5ZGVlY2IyMzY1ZDZjN2ZjZTdmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/Tmljb2w9QzM9QTFzPTIwQj1DMz1BOXJ0b2xv Pz0gPG5pY29sYXNiZXJ0b2xvQGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxMSBNYXkgMjAyMCAyMDo0 MzowNiAtMDMwMApTdWJqZWN0OiBbUEFUQ0hdIExvYWQgbGliZ2Njaml0IGR5bmFtaWNhbGx5IGlu IFdpbmRvd3MuCgoqIGNvbmZpZ3VyZS5hYzogZG9uJ3QgYWRkIGxpbmtlciBmbGFncyBpZiBjb21w aWxpbmcgb24KV2luZG93cy4gQ29tcGlsZSBkeW5saWIuYyBpZiBtb2R1bGVzIG9yIG5hdGl2ZSBj b21waWxhdGlvbiBhcmUKZW5hYmxlZC4gQWx3YXlzIGNvbXBpbGUgY29tcC5jCiogbGlzcC90ZXJt L3czMi13aW4uZWw6IE1hcCAnZ2Njaml0IHRvICJsaWJnY2NqaXQuZGxsIiBpbgpgZHluYW1pYy1s aWJyYXJ5LWFsaXN0YC4KKiBzcmMvTWFrZWZpbGUuaW46IFVwZGF0ZSBjb21tZW50cy4gVXBkYXRl IHRvIGhhbmRsZSBjaGFuZ2VzIGluCmNvbmZpZ3VyZS5hYy4KKiBzcmMvY29tcC5jOiBBZGQgZGVj bGFyYXRpb25zIG9mIHVzZWQgbGliZ2Njaml0IGZ1bmN0aW9ucyB1c2luZwpERUZfRExMX0ZOLiBB ZGQgY2FsbHMgdG8gbG9hZF9nY2NqaXRfaWZfbmVjZXNzYXJ5KCkgd2hlcmUgbmVjZXNzYXJ5LgpB ZGQgYG5hdGl2ZS1jb21wLWF2YWlsYWJsZS1wYAoqIHNyYy9jb21wLmg6IFJlbW92ZSBGbmF0aXZl X2VsaXNwX2xvYWQuIEFkZCBzeW1zX29mX2NvbXAoKS4KKiBzcmMvZW1hY3MuYyAobWFpbik6IEFs d2F5cyBjYWxsIHN5bXNfb2ZfY29tcCgpCiogc3JjL3czMi5jIChnbG9iYWxzX29mX3czMik6IENs ZWFyIFZsaWJyYXJ5X2NhY2hlIHdoZW4gc3RhcnRpbmcKYmVjYXVzZSB0aGUgbGlicmFyaWVzIGxv YWRlZCB3aGVuIGR1bXBpbmcgd2lsbCBub3QgYmUgbG9hZGVkIHdoZW4Kc3RhcnRpbmcuCiogc3Jj L3czMmZucy5jOiBBZGQgUWdjY2ppdCBzeW1ib2wuCi0tLQogY29uZmlndXJlLmFjICAgICAgICAg fCAgMTkgKystCiBsaXNwL3Rlcm0vdzMyLXdpbi5lbCB8ICAgMyArLQogc3JjL01ha2VmaWxlLmlu ICAgICAgfCAgIDkgKy0KIHNyYy9jb21wLmMgICAgICAgICAgIHwgMzc0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9jb21wLmggICAgICAgICAgIHwgICA2 ICstCiBzcmMvZW1hY3MuYyAgICAgICAgICB8ICAgMiAtCiBzcmMvdzMyLmMgICAgICAgICAgICB8 ICAgNCArCiBzcmMvdzMyZm5zLmMgICAgICAgICB8ICAgMSArCiA4IGZpbGVzIGNoYW5nZWQsIDM5 OCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb25maWd1cmUu YWMgYi9jb25maWd1cmUuYWMKaW5kZXggMjNiOTRjZjZjYS4uZWEwMTQ0ZjQwNCAxMDA2NDQKLS0t IGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMzY2Niw2ICszNjY2LDcgQEAg QUNfREVGVU4KIExJQk1PRFVMRVM9CiBIQVZFX01PRFVMRVM9bm8KIE1PRFVMRVNfT0JKPQorTkVF RF9EWU5MSUI9bm8KIGNhc2UgJG9wc3lzIGluCiAgIGN5Z3dpbnxtaW5ndzMyKSBNT0RVTEVTX1NV RkZJWD0iLmRsbCIgOzsKICAgZGFyd2luKSBNT0RVTEVTX1NVRkZJWD0iLmR5bGliIiA7OwpAQCAt MzcwMSw3ICszNzAyLDggQEAgQUNfREVGVU4KIGZpCiAKIGlmIHRlc3QgIiR7SEFWRV9NT0RVTEVT fSIgPSB5ZXM7IHRoZW4KLSAgIE1PRFVMRVNfT0JKPSJkeW5saWIubyBlbWFjcy1tb2R1bGUubyIK KyAgIE1PRFVMRVNfT0JKPSJlbWFjcy1tb2R1bGUubyIKKyAgIE5FRURfRFlOTElCPXllcwogICAg QUNfREVGSU5FKEhBVkVfTU9EVUxFUywgMSwgW0RlZmluZSB0byAxIGlmIGR5bmFtaWMgbW9kdWxl cyBhcmUgZW5hYmxlZF0pCiAgICBBQ19ERUZJTkVfVU5RVU9URUQoTU9EVUxFU19TVUZGSVgsICIk TU9EVUxFU19TVUZGSVgiLAogICAgICBbU3lzdGVtIGV4dGVuc2lvbiBmb3IgZHluYW1pYyBsaWJy YXJpZXNdKQpAQCAtMzc4NSw3ICszNzg3LDYgQEAgQUNfREVGVU4KIAogSEFWRV9OQVRJVkVfQ09N UD1ubwogTElCR0NDSklUX0xJQj0KLUNPTVBfT0JKPQogaWYgdGVzdCAiJHt3aXRoX25hdGl2ZWNv bXB9IiAhPSAibm8iOyB0aGVuCiAgICAgZW1hY3Nfc2F2ZV9MSUJTPSRMSUJTCiAgICAgTElCUz0i LWxnY2NqaXQiCkBAIC0zNzkzLDggKzM3OTQsMTEgQEAgQUNfREVGVU4KICAgICAgIFtBQ19MSU5L X0lGRUxTRShbbGliZ2Njaml0X3Ntb2tlX3Rlc3RdLCBbXSwgW2xpYmdjY2ppdF9ub3RfZm91bmRd KV0pCiAgICAgTElCUz0kZW1hY3Nfc2F2ZV9MSUJTCiAgICAgSEFWRV9OQVRJVkVfQ09NUD15ZXMK LSAgICBMSUJHQ0NKSVRfTElCPSItbGdjY2ppdCAtbGRsIgotICAgIENPTVBfT0JKPSJjb21wLm8i CisgICAgIyBtaW5ndzMyIGxvYWRzIHRoZSBsaWJyYXJ5IGR5bmFtaWNhbGx5LgorICAgIGlmIHRl c3QgIiR7b3BzeXN9IiAhPSAibWluZ3czMiI7IHRoZW4KKyAgICAgIExJQkdDQ0pJVF9MSUI9Ii1s Z2Njaml0IC1sZGwiCisgICAgZmkKKyAgICBORUVEX0RZTkxJQj15ZXMKICAgICBBQ19ERUZJTkUo SEFWRV9OQVRJVkVfQ09NUCwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBsaWJnY2Nq aXQgbGlicmFyeSAoLWxnY2NqaXQpLl0pCiBmaQogaWYgdGVzdCAiJHtIQVZFX05BVElWRV9DT01Q fSIgPSB5ZXMgJiYgdGVzdCAiJHtIQVZFX1BEVU1QRVJ9IiA9IG5vOyB0aGVuCkBAIC0zODA0LDcg KzM4MDgsMTIgQEAgQUNfREVGVU4KICAgW1N5c3RlbSBleHRlbnNpb24gZm9yIG5hdGl2ZSBjb21w aWxlZCBlbGlzcF0pCiBBQ19TVUJTVChIQVZFX05BVElWRV9DT01QKQogQUNfU1VCU1QoTElCR0ND SklUX0xJQikKLUFDX1NVQlNUKENPTVBfT0JKKQorCitEWU5MSUJfT0JKPQoraWYgdGVzdCAiJHtO RUVEX0RZTkxJQn0iID0geWVzOyB0aGVuCisgIERZTkxJQl9PQko9ImR5bmxpYi5vIgorZmkKK0FD X1NVQlNUKERZTkxJQl9PQkopCiAKICMjIyBVc2UgLWxwbmcgaWYgYXZhaWxhYmxlLCB1bmxlc3Mg Jy0td2l0aC1wbmc9bm8nLgogSEFWRV9QTkc9bm8KZGlmZiAtLWdpdCBhL2xpc3AvdGVybS93MzIt d2luLmVsIGIvbGlzcC90ZXJtL3czMi13aW4uZWwKaW5kZXggNTkwMWUwMjk1ZS4uNmI5NzE2Y2Ez MCAxMDA2NDQKLS0tIGEvbGlzcC90ZXJtL3czMi13aW4uZWwKKysrIGIvbGlzcC90ZXJtL3czMi13 aW4uZWwKQEAgLTI4OSw3ICsyODksOCBAQCBsaWJnbnV0bHMtdmVyc2lvbgogICAgICAgICcobGli eG1sMiAibGlieG1sMi0yLmRsbCIgImxpYnhtbDIuZGxsIikKICAgICAgICAnKHpsaWIgInpsaWIx LmRsbCIgImxpYnotMS5kbGwiKQogICAgICAgICcobGNtczIgImxpYmxjbXMyLTIuZGxsIikKLSAg ICAgICAnKGpzb24gImxpYmphbnNzb24tNC5kbGwiKSkpCisgICAgICAgJyhqc29uICJsaWJqYW5z c29uLTQuZGxsIikKKyAgICAgICAnKGdjY2ppdCAibGliZ2Njaml0LmRsbCIpKSkKIAogOzs7IG11 bHRpLXR0eSBzdXBwb3J0CiAoZGVmdmFyIHczMi1pbml0aWFsaXplZCBuaWwKZGlmZiAtLWdpdCBh L3NyYy9NYWtlZmlsZS5pbiBiL3NyYy9NYWtlZmlsZS5pbgppbmRleCA2M2Y5MDlhZTE0Li44NTcw OTE4NGRhIDEwMDY0NAotLS0gYS9zcmMvTWFrZWZpbGUuaW4KKysrIGIvc3JjL01ha2VmaWxlLmlu CkBAIC0yNDEsNyArMjQxLDcgQEAgTElCWiA9CiAKICMjIHN5c3RlbS1zcGVjaWZpYyBsaWJzIGZv ciBkeW5hbWljIG1vZHVsZXMsIGVsc2UgZW1wdHkKIExJQk1PRFVMRVMgPSBATElCTU9EVUxFU0AK LSMjIGR5bmxpYi5vIGVtYWNzLW1vZHVsZS5vIGlmIG1vZHVsZXMgZW5hYmxlZCwgZWxzZSBlbXB0 eQorIyMgZW1hY3MtbW9kdWxlLm8gaWYgbW9kdWxlcyBlbmFibGVkLCBlbHNlIGVtcHR5CiBNT0RV TEVTX09CSiA9IEBNT0RVTEVTX09CSkAKIAogWFJBTkRSX0xJQlMgPSBAWFJBTkRSX0xJQlNACkBA IC0zMjcsOCArMzI3LDkgQEAgR01QX0xJQiA9CiBHTVBfT0JKID0gQEdNUF9PQkpACiAKIExJQkdD Q0pJVCA9IEBMSUJHQ0NKSVRfTElCQAotIyMgZHlubGliLm8gY29tcC5vIGlmIG5hdGl2ZSBjb21w aWxlciBpcyBlbmFibGVkLCBvdGhlcndpc2UgZW1wdHkuCi1DT01QX09CSiA9IEBDT01QX09CSkAK KworIyMgZHlubGliLm8gaWYgbmVjZXNzYXJ5LCBlbHNlIGVtcHR5CitEWU5MSUJfT0JKID0gQERZ TkxJQl9PQkpACiAKIFJVTl9URU1BQ1MgPSAuL3RlbWFjcwogCkBAIC00MTgsNyArNDE5LDcgQEAg YmFzZV9vYmogPQogCWNtZHMubyBjYXNldGFiLm8gY2FzZWZpZGRsZS5vIGluZGVudC5vIHNlYXJj aC5vIHJlZ2V4LWVtYWNzLm8gdW5kby5vIFwKIAlhbGxvYy5vIHBkdW1wZXIubyBkYXRhLm8gZG9j Lm8gZWRpdGZucy5vIGNhbGxpbnQubyBcCiAJZXZhbC5vIGZsb2F0Zm5zLm8gZm5zLm8gZm9udC5v IHByaW50Lm8gbHJlYWQubyAkKE1PRFVMRVNfT0JKKSBcCi0Jc3ludGF4Lm8gJChVTkVYRUNfT0JK KSBieXRlY29kZS5vICQoQ09NUF9PQkopIFwKKwlzeW50YXgubyAkKFVORVhFQ19PQkopIGJ5dGVj b2RlLm8gY29tcC5vICQoRFlOTElCX09CSikgXAogCXByb2Nlc3MubyBnbnV0bHMubyBjYWxscHJv Yy5vIFwKIAlyZWdpb24tY2FjaGUubyBzb3VuZC5vIHRpbWVmbnMubyBhdGltZXIubyBcCiAJZG9w cm50Lm8gaW50ZXJ2YWxzLm8gdGV4dHByb3AubyBjb21wb3NpdGUubyB4bWwubyBsY21zLm8gJChO T1RJRllfT0JKKSBcCmRpZmYgLS1naXQgYS9zcmMvY29tcC5jIGIvc3JjL2NvbXAuYwppbmRleCA2 OTUyNWFjZmMwLi5iNDNkM2VkZGIzIDEwMDY0NAotLS0gYS9zcmMvY29tcC5jCisrKyBiL3NyYy9j b21wLmMKQEAgLTIwLDYgKzIwLDggQEAKIAogI2luY2x1ZGUgPGNvbmZpZy5oPgogCisjaW5jbHVk ZSAibGlzcC5oIgorCiAjaWZkZWYgSEFWRV9OQVRJVkVfQ09NUAogCiAjaW5jbHVkZSA8c2V0am1w Lmg+CkBAIC0yOCw3ICszMCw2IEBACiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8bGli Z2Njaml0Lmg+CiAKLSNpbmNsdWRlICJsaXNwLmgiCiAjaW5jbHVkZSAicHVyZXNpemUuaCIKICNp bmNsdWRlICJ3aW5kb3cuaCIKICNpbmNsdWRlICJkeW5saWIuaCIKQEAgLTM2LDYgKzM3LDM0NyBA QAogI2luY2x1ZGUgImJsb2NraW5wdXQuaCIKICNpbmNsdWRlICJzaGE1MTIuaCIKIAorDAorLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogRHluYW1pYyBsb2FkaW5nIG9mIGxp YmdjY2ppdCAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZkZWYg V0lORE9XU05UCisjIGluY2x1ZGUgInczMmNvbW1vbi5oIgorCisjdW5kZWYgZ2NjX2ppdF9ibG9j a19hZGRfYXNzaWdubWVudAorI3VuZGVmIGdjY19qaXRfYmxvY2tfYWRkX2NvbW1lbnQKKyN1bmRl ZiBnY2Nfaml0X2Jsb2NrX2FkZF9ldmFsCisjdW5kZWYgZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF9j b25kaXRpb25hbAorI3VuZGVmIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfanVtcAorI3VuZGVmIGdj Y19qaXRfYmxvY2tfZW5kX3dpdGhfcmV0dXJuCisjdW5kZWYgZ2NjX2ppdF9ibG9ja19lbmRfd2l0 aF92b2lkX3JldHVybgorI3VuZGVmIGdjY19qaXRfY29udGV4dF9hY3F1aXJlCisjdW5kZWYgZ2Nj X2ppdF9jb250ZXh0X2NvbXBpbGVfdG9fZmlsZQorI3VuZGVmIGdjY19qaXRfY29udGV4dF9kdW1w X3JlcHJvZHVjZXJfdG9fZmlsZQorI3VuZGVmIGdjY19qaXRfY29udGV4dF9kdW1wX3RvX2ZpbGUK KyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfZ2V0X2J1aWx0aW5fZnVuY3Rpb24KKyN1bmRlZiBnY2Nf aml0X2NvbnRleHRfZ2V0X2ZpcnN0X2Vycm9yCisjdW5kZWYgZ2NjX2ppdF9jb250ZXh0X2dldF9p bnRfdHlwZQorI3VuZGVmIGdjY19qaXRfY29udGV4dF9nZXRfdHlwZQorI3VuZGVmIGdjY19qaXRf Y29udGV4dF9uZXdfYXJyYXlfYWNjZXNzCisjdW5kZWYgZ2NjX2ppdF9jb250ZXh0X25ld19hcnJh eV90eXBlCisjdW5kZWYgZ2NjX2ppdF9jb250ZXh0X25ld19iaW5hcnlfb3AKKyN1bmRlZiBnY2Nf aml0X2NvbnRleHRfbmV3X2NhbGwKKyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfbmV3X2NhbGxfdGhy b3VnaF9wdHIKKyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfbmV3X2NvbXBhcmlzb24KKyN1bmRlZiBn Y2Nfaml0X2NvbnRleHRfbmV3X2ZpZWxkCisjdW5kZWYgZ2NjX2ppdF9jb250ZXh0X25ld19mdW5j dGlvbgorI3VuZGVmIGdjY19qaXRfY29udGV4dF9uZXdfZnVuY3Rpb25fcHRyX3R5cGUKKyN1bmRl ZiBnY2Nfaml0X2NvbnRleHRfbmV3X2dsb2JhbAorI3VuZGVmIGdjY19qaXRfY29udGV4dF9uZXdf b3BhcXVlX3N0cnVjdAorI3VuZGVmIGdjY19qaXRfY29udGV4dF9uZXdfcGFyYW0KKyN1bmRlZiBn Y2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2ludAorI3VuZGVmIGdjY19qaXRfY29udGV4 dF9uZXdfcnZhbHVlX2Zyb21fbG9uZworI3VuZGVmIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVl X2Zyb21fcHRyCisjdW5kZWYgZ2NjX2ppdF9jb250ZXh0X25ld19zdHJ1Y3RfdHlwZQorI3VuZGVm IGdjY19qaXRfY29udGV4dF9uZXdfdW5hcnlfb3AKKyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfbmV3 X3VuaW9uX3R5cGUKKyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfcmVsZWFzZQorI3VuZGVmIGdjY19q aXRfY29udGV4dF9zZXRfYm9vbF9vcHRpb24KKyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfc2V0X2lu dF9vcHRpb24KKyN1bmRlZiBnY2Nfaml0X2NvbnRleHRfc2V0X2xvZ2ZpbGUKKyN1bmRlZiBnY2Nf aml0X2Z1bmN0aW9uX2dldF9wYXJhbQorI3VuZGVmIGdjY19qaXRfZnVuY3Rpb25fbmV3X2Jsb2Nr CisjdW5kZWYgZ2NjX2ppdF9mdW5jdGlvbl9uZXdfbG9jYWwKKyN1bmRlZiBnY2Nfaml0X2x2YWx1 ZV9hY2Nlc3NfZmllbGQKKyN1bmRlZiBnY2Nfaml0X2x2YWx1ZV9hc19ydmFsdWUKKyN1bmRlZiBn Y2Nfaml0X2x2YWx1ZV9nZXRfYWRkcmVzcworI3VuZGVmIGdjY19qaXRfcGFyYW1fYXNfbHZhbHVl CisjdW5kZWYgZ2NjX2ppdF9wYXJhbV9hc19ydmFsdWUKKyN1bmRlZiBnY2Nfaml0X3J2YWx1ZV9h Y2Nlc3NfZmllbGQKKyN1bmRlZiBnY2Nfaml0X3J2YWx1ZV9kZXJlZmVyZW5jZQorI3VuZGVmIGdj Y19qaXRfcnZhbHVlX2RlcmVmZXJlbmNlX2ZpZWxkCisjdW5kZWYgZ2NjX2ppdF9ydmFsdWVfZ2V0 X3R5cGUKKyN1bmRlZiBnY2Nfaml0X3N0cnVjdF9hc190eXBlCisjdW5kZWYgZ2NjX2ppdF9zdHJ1 Y3Rfc2V0X2ZpZWxkcworI3VuZGVmIGdjY19qaXRfdHlwZV9nZXRfcG9pbnRlcgorCisvKiBJbiBh bHBoYWJldGljYWwgb3JkZXIgKi8KK0RFRl9ETExfRk4gKGdjY19qaXRfcnZhbHVlICosIGdjY19q aXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50LAorICAgICAgICAgICAgKGdjY19qaXRfY29u dGV4dCAqY3R4dCwgZ2NjX2ppdF90eXBlICpudW1lcmljX3R5cGUsIGludCB2YWx1ZSkpOworREVG X0RMTF9GTiAoZ2NjX2ppdF9ydmFsdWUgKiwgZ2NjX2ppdF9sdmFsdWVfYXNfcnZhbHVlLAorICAg ICAgICAgICAgKGdjY19qaXRfbHZhbHVlICpsdmFsdWUpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRf cnZhbHVlICosIGdjY19qaXRfcnZhbHVlX2FjY2Vzc19maWVsZCwKKyAgICAgICAgICAgIChnY2Nf aml0X3J2YWx1ZSAqc3RydWN0X29yX3VuaW9uLCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisgICAg ICAgICAgICAgZ2NjX2ppdF9maWVsZCAqZmllbGQpKTsKK0RFRl9ETExfRk4gKHZvaWQsIGdjY19q aXRfYmxvY2tfYWRkX2NvbW1lbnQsCisgICAgICAgICAgICAoZ2NjX2ppdF9ibG9jayAqYmxvY2ss IGdjY19qaXRfbG9jYXRpb24gKmxvYywgY29uc3QgY2hhciAqdGV4dCkpOworREVGX0RMTF9GTiAo dm9pZCwgZ2NjX2ppdF9jb250ZXh0X3JlbGVhc2UsIChnY2Nfaml0X2NvbnRleHQgKmN0eHQpKTsK K0RFRl9ETExfRk4gKGNvbnN0IGNoYXIgKiwgZ2NjX2ppdF9jb250ZXh0X2dldF9maXJzdF9lcnJv ciwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQpKTsKK0RFRl9ETExfRk4gKGdj Y19qaXRfYmxvY2sgKiwgZ2NjX2ppdF9mdW5jdGlvbl9uZXdfYmxvY2ssCisgICAgICAgICAgICAo Z2NjX2ppdF9mdW5jdGlvbiAqZnVuYywgY29uc3QgY2hhciAqbmFtZSkpOworREVGX0RMTF9GTiAo Z2NjX2ppdF9jb250ZXh0ICosIGdjY19qaXRfY29udGV4dF9hY3F1aXJlLCAodm9pZCkpOworREVG X0RMTF9GTiAoZ2NjX2ppdF9maWVsZCAqLCBnY2Nfaml0X2NvbnRleHRfbmV3X2ZpZWxkLAorICAg ICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLCBn Y2Nfaml0X3R5cGUgKnR5cGUsCisgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkpOworREVG X0RMTF9GTiAoZ2NjX2ppdF9mdW5jdGlvbiAqLCBnY2Nfaml0X2NvbnRleHRfZ2V0X2J1aWx0aW5f ZnVuY3Rpb24sCisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBjb25zdCBjaGFy ICpuYW1lKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X2Z1bmN0aW9uICosIGdjY19qaXRfY29udGV4 dF9uZXdfZnVuY3Rpb24sCisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nf aml0X2xvY2F0aW9uICpsb2MsCisgICAgICAgICAgICAgZW51bSBnY2Nfaml0X2Z1bmN0aW9uX2tp bmQga2luZCwgZ2NjX2ppdF90eXBlICpyZXR1cm5fdHlwZSwKKyAgICAgICAgICAgICBjb25zdCBj aGFyICpuYW1lLCBpbnQgbnVtX3BhcmFtcywgZ2NjX2ppdF9wYXJhbSAqKnBhcmFtcywKKyAgICAg ICAgICAgICBpbnQgaXNfdmFyaWFkaWMpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRfbHZhbHVlICos IGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfYWNjZXNzLAorICAgICAgICAgICAgKGdjY19qaXRf Y29udGV4dCAqY3R4dCwgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLCBnY2Nfaml0X3J2YWx1ZSAqcHRy LAorICAgICAgICAgICAgIGdjY19qaXRfcnZhbHVlICppbmRleCkpOworREVGX0RMTF9GTiAoZ2Nj X2ppdF9sdmFsdWUgKiwgZ2NjX2ppdF9jb250ZXh0X25ld19nbG9iYWwsCisgICAgICAgICAgICAo Z2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisgICAgICAgICAg ICAgZW51bSBnY2Nfaml0X2dsb2JhbF9raW5kIGtpbmQsIGdjY19qaXRfdHlwZSAqdHlwZSwKKyAg ICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X2x2YWx1 ZSAqLCBnY2Nfaml0X2Z1bmN0aW9uX25ld19sb2NhbCwKKyAgICAgICAgICAgIChnY2Nfaml0X2Z1 bmN0aW9uICpmdW5jLCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsIGdjY19qaXRfdHlwZSAqdHlwZSwK KyAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X2x2 YWx1ZSAqLCBnY2Nfaml0X2x2YWx1ZV9hY2Nlc3NfZmllbGQsCisgICAgICAgICAgICAoZ2NjX2pp dF9sdmFsdWUgKnN0cnVjdF9vcl91bmlvbiwgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLAorICAgICAg ICAgICAgIGdjY19qaXRfZmllbGQgKmZpZWxkKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X2x2YWx1 ZSAqLCBnY2Nfaml0X3BhcmFtX2FzX2x2YWx1ZSwgKGdjY19qaXRfcGFyYW0gKnBhcmFtKSk7CitE RUZfRExMX0ZOIChnY2Nfaml0X2x2YWx1ZSAqLCBnY2Nfaml0X3J2YWx1ZV9kZXJlZmVyZW5jZSwK KyAgICAgICAgICAgIChnY2Nfaml0X3J2YWx1ZSAqcnZhbHVlLCBnY2Nfaml0X2xvY2F0aW9uICps b2MpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRfbHZhbHVlICosIGdjY19qaXRfcnZhbHVlX2RlcmVm ZXJlbmNlX2ZpZWxkLAorICAgICAgICAgICAgKGdjY19qaXRfcnZhbHVlICpwdHIsIGdjY19qaXRf bG9jYXRpb24gKmxvYywgZ2NjX2ppdF9maWVsZCAqZmllbGQpKTsKK0RFRl9ETExfRk4gKGdjY19q aXRfcGFyYW0gKiwgZ2NjX2ppdF9jb250ZXh0X25ld19wYXJhbSwKKyAgICAgICAgICAgIChnY2Nf aml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfbG9jYXRpb24gKmxvYywgZ2NjX2ppdF90eXBlICp0 eXBlLAorICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpKTsKK0RFRl9ETExfRk4gKGdjY19q aXRfcGFyYW0gKiwgZ2NjX2ppdF9mdW5jdGlvbl9nZXRfcGFyYW0sCisgICAgICAgICAgICAoZ2Nj X2ppdF9mdW5jdGlvbiAqZnVuYywgaW50IGluZGV4KSk7CitERUZfRExMX0ZOIChnY2Nfaml0X3J2 YWx1ZSAqLCBnY2Nfaml0X2NvbnRleHRfbmV3X2JpbmFyeV9vcCwKKyAgICAgICAgICAgIChnY2Nf aml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfbG9jYXRpb24gKmxvYywKKyAgICAgICAgICAgICBl bnVtIGdjY19qaXRfYmluYXJ5X29wIG9wLCBnY2Nfaml0X3R5cGUgKnJlc3VsdF90eXBlLAorICAg ICAgICAgICAgIGdjY19qaXRfcnZhbHVlICphLCBnY2Nfaml0X3J2YWx1ZSAqYikpOworREVGX0RM TF9GTiAoZ2NjX2ppdF9ydmFsdWUgKiwgZ2NjX2ppdF9jb250ZXh0X25ld19jYWxsLAorICAgICAg ICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLAorICAg ICAgICAgICAgIGdjY19qaXRfZnVuY3Rpb24gKmZ1bmMsIGludCBudW1hcmdzICwgZ2NjX2ppdF9y dmFsdWUgKiphcmdzKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X3J2YWx1ZSAqLCBnY2Nfaml0X2Nv bnRleHRfbmV3X2NhbGxfdGhyb3VnaF9wdHIsCisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0 ICpjdHh0LCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsCisgICAgICAgICAgICAgZ2NjX2ppdF9ydmFs dWUgKmZuX3B0ciwgaW50IG51bWFyZ3MsIGdjY19qaXRfcnZhbHVlICoqYXJncykpOworREVGX0RM TF9GTiAoZ2NjX2ppdF9ydmFsdWUgKiwgZ2NjX2ppdF9jb250ZXh0X25ld19jb21wYXJpc29uLAor ICAgICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgZ2NjX2ppdF9sb2NhdGlvbiAqbG9j LAorICAgICAgICAgICAgIGVudW0gZ2NjX2ppdF9jb21wYXJpc29uIG9wLCBnY2Nfaml0X3J2YWx1 ZSAqYSwgZ2NjX2ppdF9ydmFsdWUgKmIpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRfcnZhbHVlICos IGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21fbG9uZywKKyAgICAgICAgICAgIChnY2Nf aml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfdHlwZSAqbnVtZXJpY190eXBlLCBsb25nIHZhbHVl KSk7CitERUZfRExMX0ZOIChnY2Nfaml0X3J2YWx1ZSAqLCBnY2Nfaml0X2NvbnRleHRfbmV3X3J2 YWx1ZV9mcm9tX3B0ciwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19q aXRfdHlwZSAqcG9pbnRlcl90eXBlLCB2b2lkICp2YWx1ZSkpOworREVGX0RMTF9GTiAoZ2NjX2pp dF9ydmFsdWUgKiwgZ2NjX2ppdF9jb250ZXh0X25ld191bmFyeV9vcCwKKyAgICAgICAgICAgIChn Y2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfbG9jYXRpb24gKmxvYywKKyAgICAgICAgICAg ICBlbnVtIGdjY19qaXRfdW5hcnlfb3Agb3AsIGdjY19qaXRfdHlwZSAqcmVzdWx0X3R5cGUsCisg ICAgICAgICAgICAgZ2NjX2ppdF9ydmFsdWUgKnJ2YWx1ZSkpOworREVGX0RMTF9GTiAoZ2NjX2pp dF9ydmFsdWUgKiwgZ2NjX2ppdF9sdmFsdWVfZ2V0X2FkZHJlc3MsCisgICAgICAgICAgICAoZ2Nj X2ppdF9sdmFsdWUgKmx2YWx1ZSwgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jKSk7CitERUZfRExMX0ZO IChnY2Nfaml0X3J2YWx1ZSAqLCBnY2Nfaml0X3BhcmFtX2FzX3J2YWx1ZSwgKGdjY19qaXRfcGFy YW0gKnBhcmFtKSk7CitERUZfRExMX0ZOIChnY2Nfaml0X3N0cnVjdCAqLCBnY2Nfaml0X2NvbnRl eHRfbmV3X29wYXF1ZV9zdHJ1Y3QsCisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0 LCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsIGNvbnN0IGNoYXIgKm5hbWUpKTsKK0RFRl9ETExfRk4g KGdjY19qaXRfc3RydWN0ICosIGdjY19qaXRfY29udGV4dF9uZXdfc3RydWN0X3R5cGUsCisgICAg ICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsIGNv bnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgaW50IG51bV9maWVsZHMsIGdjY19qaXRfZmll bGQgKipmaWVsZHMpKTsKK0RFRl9ETExfRk4gKGdjY19qaXRfdHlwZSAqLCBnY2Nfaml0X2NvbnRl eHRfZ2V0X2ludF90eXBlLAorICAgICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgaW50 IG51bV9ieXRlcywgaW50IGlzX3NpZ25lZCkpOworREVGX0RMTF9GTiAoZ2NjX2ppdF90eXBlICos IGdjY19qaXRfY29udGV4dF9nZXRfdHlwZSwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQg KmN0eHQsIGVudW0gZ2NjX2ppdF90eXBlcyB0eXBlXykpOworREVGX0RMTF9GTiAoZ2NjX2ppdF90 eXBlICosIGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfdHlwZSwKKyAgICAgICAgICAgIChnY2Nf aml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRfbG9jYXRpb24gKmxvYywKKyAgICAgICAgICAgICBn Y2Nfaml0X3R5cGUgKmVsZW1lbnRfdHlwZSwgaW50IG51bV9lbGVtZW50cykpOworREVGX0RMTF9G TiAoZ2NjX2ppdF90eXBlICosIGdjY19qaXRfY29udGV4dF9uZXdfZnVuY3Rpb25fcHRyX3R5cGUs CisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBnY2Nfaml0X2xvY2F0aW9uICps b2MsCisgICAgICAgICAgICAgZ2NjX2ppdF90eXBlICpyZXR1cm5fdHlwZSwgaW50IG51bV9wYXJh bXMsCisgICAgICAgICAgICAgZ2NjX2ppdF90eXBlICoqcGFyYW1fdHlwZXMsIGludCBpc192YXJp YWRpYykpOworREVGX0RMTF9GTiAoZ2NjX2ppdF90eXBlICosIGdjY19qaXRfY29udGV4dF9uZXdf dW5pb25fdHlwZSwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQgKmN0eHQsIGdjY19qaXRf bG9jYXRpb24gKmxvYywgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICBpbnQgbnVtX2Zp ZWxkcywgZ2NjX2ppdF9maWVsZCAqKmZpZWxkcykpOworREVGX0RMTF9GTiAoZ2NjX2ppdF90eXBl ICosIGdjY19qaXRfcnZhbHVlX2dldF90eXBlLCAoZ2NjX2ppdF9ydmFsdWUgKnJ2YWx1ZSkpOwor REVGX0RMTF9GTiAoZ2NjX2ppdF90eXBlICosIGdjY19qaXRfc3RydWN0X2FzX3R5cGUsCisgICAg ICAgICAgICAoZ2NjX2ppdF9zdHJ1Y3QgKnN0cnVjdF90eXBlKSk7CitERUZfRExMX0ZOIChnY2Nf aml0X3R5cGUgKiwgZ2NjX2ppdF90eXBlX2dldF9wb2ludGVyLCAoZ2NjX2ppdF90eXBlICp0eXBl KSk7CitERUZfRExMX0ZOICh2b2lkLCBnY2Nfaml0X2Jsb2NrX2FkZF9hc3NpZ25tZW50LAorICAg ICAgICAgICAgKGdjY19qaXRfYmxvY2sgKmJsb2NrLCBnY2Nfaml0X2xvY2F0aW9uICpsb2MsIGdj Y19qaXRfbHZhbHVlICpsdmFsdWUsCisgICAgICAgICAgICAgZ2NjX2ppdF9ydmFsdWUgKnJ2YWx1 ZSkpOworREVGX0RMTF9GTiAodm9pZCwgZ2NjX2ppdF9ibG9ja19hZGRfZXZhbCwKKyAgICAgICAg ICAgIChnY2Nfaml0X2Jsb2NrICpibG9jaywgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLAorICAgICAg ICAgICAgIGdjY19qaXRfcnZhbHVlICpydmFsdWUpKTsKK0RFRl9ETExfRk4gKHZvaWQsIGdjY19q aXRfYmxvY2tfZW5kX3dpdGhfY29uZGl0aW9uYWwsCisgICAgICAgICAgICAoZ2NjX2ppdF9ibG9j ayAqYmxvY2ssIGdjY19qaXRfbG9jYXRpb24gKmxvYywKKyAgICAgICAgICAgICBnY2Nfaml0X3J2 YWx1ZSAqYm9vbHZhbCwgZ2NjX2ppdF9ibG9jayAqb25fdHJ1ZSwKKyAgICAgICAgICAgICBnY2Nf aml0X2Jsb2NrICpvbl9mYWxzZSkpOworREVGX0RMTF9GTiAodm9pZCwgZ2NjX2ppdF9ibG9ja19l bmRfd2l0aF9qdW1wLAorICAgICAgICAgICAgKGdjY19qaXRfYmxvY2sgKmJsb2NrLCBnY2Nfaml0 X2xvY2F0aW9uICpsb2MsCisgICAgICAgICAgICAgZ2NjX2ppdF9ibG9jayAqdGFyZ2V0KSk7CitE RUZfRExMX0ZOICh2b2lkLCBnY2Nfaml0X2Jsb2NrX2VuZF93aXRoX3JldHVybiwKKyAgICAgICAg ICAgIChnY2Nfaml0X2Jsb2NrICpibG9jaywgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLAorICAgICAg ICAgICAgIGdjY19qaXRfcnZhbHVlICpydmFsdWUpKTsKK0RFRl9ETExfRk4gKHZvaWQsIGdjY19q aXRfYmxvY2tfZW5kX3dpdGhfdm9pZF9yZXR1cm4sCisgICAgICAgICAgICAoZ2NjX2ppdF9ibG9j ayAqYmxvY2ssIGdjY19qaXRfbG9jYXRpb24gKmxvYykpOworREVGX0RMTF9GTiAodm9pZCwgZ2Nj X2ppdF9jb250ZXh0X2NvbXBpbGVfdG9fZmlsZSwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRl eHQgKmN0eHQsIGVudW0gZ2NjX2ppdF9vdXRwdXRfa2luZCBvdXRwdXRfa2luZCwKKyAgICAgICAg ICAgICBjb25zdCBjaGFyICpvdXRwdXRfcGF0aCkpOworREVGX0RMTF9GTiAodm9pZCwgZ2NjX2pp dF9jb250ZXh0X2R1bXBfcmVwcm9kdWNlcl90b19maWxlLAorICAgICAgICAgICAgKGdjY19qaXRf Y29udGV4dCAqY3R4dCwgY29uc3QgY2hhciAqcGF0aCkpOworREVGX0RMTF9GTiAodm9pZCwgZ2Nj X2ppdF9jb250ZXh0X2R1bXBfdG9fZmlsZSwKKyAgICAgICAgICAgIChnY2Nfaml0X2NvbnRleHQg KmN0eHQsIGNvbnN0IGNoYXIgKnBhdGgsIGludCB1cGRhdGVfbG9jYXRpb25zKSk7CitERUZfRExM X0ZOICh2b2lkLCBnY2Nfaml0X2NvbnRleHRfc2V0X2Jvb2xfb3B0aW9uLAorICAgICAgICAgICAg KGdjY19qaXRfY29udGV4dCAqY3R4dCwgZW51bSBnY2Nfaml0X2Jvb2xfb3B0aW9uIG9wdCwgaW50 IHZhbHVlKSk7CitERUZfRExMX0ZOICh2b2lkLCBnY2Nfaml0X2NvbnRleHRfc2V0X2ludF9vcHRp b24sCisgICAgICAgICAgICAoZ2NjX2ppdF9jb250ZXh0ICpjdHh0LCBlbnVtIGdjY19qaXRfaW50 X29wdGlvbiBvcHQsIGludCB2YWx1ZSkpOworREVGX0RMTF9GTiAodm9pZCwgZ2NjX2ppdF9jb250 ZXh0X3NldF9sb2dmaWxlLAorICAgICAgICAgICAgKGdjY19qaXRfY29udGV4dCAqY3R4dCwgRklM RSAqbG9nZmlsZSwgaW50IGZsYWdzLCBpbnQgdmVyYm9zaXR5KSk7CitERUZfRExMX0ZOICh2b2lk LCBnY2Nfaml0X3N0cnVjdF9zZXRfZmllbGRzLAorICAgICAgICAgICAgKGdjY19qaXRfc3RydWN0 ICpzdHJ1Y3RfdHlwZSwgZ2NjX2ppdF9sb2NhdGlvbiAqbG9jLCBpbnQgbnVtX2ZpZWxkcywKKyAg ICAgICAgICAgICBnY2Nfaml0X2ZpZWxkICoqZmllbGRzKSk7CisKK3N0YXRpYyBib29sCitpbml0 X2djY2ppdF9mdW5jdGlvbnMgKHZvaWQpCit7CisgIEhNT0RVTEUgbGlicmFyeTsKKworICBpZiAo IShsaWJyYXJ5ID0gdzMyX2RlbGF5ZWRfbG9hZCAoUWdjY2ppdCkpKQorICAgIHsKKyAgICAgIHJl dHVybiBmYWxzZTsKKyAgICB9CisKKyAgLyogSW4gYWxwaGFiZXRpY2FsIG9yZGVyICovCisgIExP QURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfYmxvY2tfYWRkX2Fzc2lnbm1lbnQpOworICBMT0FE X0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2Jsb2NrX2FkZF9jb21tZW50KTsKKyAgTE9BRF9ETExf Rk4obGlicmFyeSwgZ2NjX2ppdF9ibG9ja19hZGRfZXZhbCk7CisgIExPQURfRExMX0ZOKGxpYnJh cnksIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfY29uZGl0aW9uYWwpOworICBMT0FEX0RMTF9GTihs aWJyYXJ5LCBnY2Nfaml0X2Jsb2NrX2VuZF93aXRoX2p1bXApOworICBMT0FEX0RMTF9GTihsaWJy YXJ5LCBnY2Nfaml0X2Jsb2NrX2VuZF93aXRoX3JldHVybik7CisgIExPQURfRExMX0ZOKGxpYnJh cnksIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfdm9pZF9yZXR1cm4pOworICBMT0FEX0RMTF9GTihs aWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfYWNxdWlyZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnks IGdjY19qaXRfY29udGV4dF9jb21waWxlX3RvX2ZpbGUpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5 LCBnY2Nfaml0X2NvbnRleHRfZHVtcF9yZXByb2R1Y2VyX3RvX2ZpbGUpOworICBMT0FEX0RMTF9G TihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfZHVtcF90b19maWxlKTsKKyAgTE9BRF9ETExfRk4o bGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X2dldF9idWlsdGluX2Z1bmN0aW9uKTsKKyAgTE9BRF9E TExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X2dldF9maXJzdF9lcnJvcik7CisgIExPQURf RExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9nZXRfaW50X3R5cGUpOworICBMT0FEX0RM TF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfZ2V0X3R5cGUpOworICBMT0FEX0RMTF9GTihs aWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X2FycmF5X2FjY2Vzcyk7CisgIExPQURfRExMX0ZO KGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdfYXJyYXlfdHlwZSk7CisgIExPQURfRExMX0ZO KGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdfYmluYXJ5X29wKTsKKyAgTE9BRF9ETExfRk4o bGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X25ld19jYWxsKTsKKyAgTE9BRF9ETExfRk4obGlicmFy eSwgZ2NjX2ppdF9jb250ZXh0X25ld19jYWxsX3Rocm91Z2hfcHRyKTsKKyAgTE9BRF9ETExfRk4o bGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X25ld19jb21wYXJpc29uKTsKKyAgTE9BRF9ETExfRk4o bGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X25ld19maWVsZCk7CisgIExPQURfRExMX0ZOKGxpYnJh cnksIGdjY19qaXRfY29udGV4dF9uZXdfZnVuY3Rpb24pOworICBMT0FEX0RMTF9GTihsaWJyYXJ5 LCBnY2Nfaml0X2NvbnRleHRfbmV3X2Z1bmN0aW9uX3B0cl90eXBlKTsKKyAgTE9BRF9ETExfRk4o bGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X25ld19nbG9iYWwpOworICBMT0FEX0RMTF9GTihsaWJy YXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X29wYXF1ZV9zdHJ1Y3QpOworICBMT0FEX0RMTF9GTihs aWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X3BhcmFtKTsKKyAgTE9BRF9ETExfRk4obGlicmFy eSwgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9pbnQpOworICBMT0FEX0RMTF9GTihs aWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2xvbmcpOworICBMT0FEX0RM TF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX3B0cik7CisgIExP QURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfY29udGV4dF9uZXdfc3RydWN0X3R5cGUpOworICBM T0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfbmV3X3VuYXJ5X29wKTsKKyAgTE9B RF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X25ld191bmlvbl90eXBlKTsKKyAgTE9B RF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X3JlbGVhc2UpOworICBMT0FEX0RMTF9G TihsaWJyYXJ5LCBnY2Nfaml0X2NvbnRleHRfc2V0X2Jvb2xfb3B0aW9uKTsKKyAgTE9BRF9ETExf Rk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X3NldF9pbnRfb3B0aW9uKTsKKyAgTE9BRF9ETExf Rk4obGlicmFyeSwgZ2NjX2ppdF9jb250ZXh0X3NldF9sb2dmaWxlKTsKKyAgTE9BRF9ETExfRk4o bGlicmFyeSwgZ2NjX2ppdF9mdW5jdGlvbl9nZXRfcGFyYW0pOworICBMT0FEX0RMTF9GTihsaWJy YXJ5LCBnY2Nfaml0X2Z1bmN0aW9uX25ld19ibG9jayk7CisgIExPQURfRExMX0ZOKGxpYnJhcnks IGdjY19qaXRfZnVuY3Rpb25fbmV3X2xvY2FsKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2Nj X2ppdF9sdmFsdWVfYWNjZXNzX2ZpZWxkKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2pp dF9sdmFsdWVfYXNfcnZhbHVlKTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9sdmFs dWVfZ2V0X2FkZHJlc3MpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X3BhcmFtX2Fz X2x2YWx1ZSk7CisgIExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfcGFyYW1fYXNfcnZhbHVl KTsKKyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9ydmFsdWVfYWNjZXNzX2ZpZWxkKTsK KyAgTE9BRF9ETExfRk4obGlicmFyeSwgZ2NjX2ppdF9ydmFsdWVfZGVyZWZlcmVuY2UpOworICBM T0FEX0RMTF9GTihsaWJyYXJ5LCBnY2Nfaml0X3J2YWx1ZV9kZXJlZmVyZW5jZV9maWVsZCk7Cisg IExPQURfRExMX0ZOKGxpYnJhcnksIGdjY19qaXRfcnZhbHVlX2dldF90eXBlKTsKKyAgTE9BRF9E TExfRk4obGlicmFyeSwgZ2NjX2ppdF9zdHJ1Y3RfYXNfdHlwZSk7CisgIExPQURfRExMX0ZOKGxp YnJhcnksIGdjY19qaXRfc3RydWN0X3NldF9maWVsZHMpOworICBMT0FEX0RMTF9GTihsaWJyYXJ5 LCBnY2Nfaml0X3R5cGVfZ2V0X3BvaW50ZXIpOworCisgIHJldHVybiB0cnVlOworfQorCisvKiBJ biBhbHBoYWJldGljYWwgb3JkZXIgKi8KKyNkZWZpbmUgZ2NjX2ppdF9ibG9ja19hZGRfYXNzaWdu bWVudCBmbl9nY2Nfaml0X2Jsb2NrX2FkZF9hc3NpZ25tZW50CisjZGVmaW5lIGdjY19qaXRfYmxv Y2tfYWRkX2NvbW1lbnQgZm5fZ2NjX2ppdF9ibG9ja19hZGRfY29tbWVudAorI2RlZmluZSBnY2Nf aml0X2Jsb2NrX2FkZF9ldmFsIGZuX2djY19qaXRfYmxvY2tfYWRkX2V2YWwKKyNkZWZpbmUgZ2Nj X2ppdF9ibG9ja19lbmRfd2l0aF9jb25kaXRpb25hbCBmbl9nY2Nfaml0X2Jsb2NrX2VuZF93aXRo X2NvbmRpdGlvbmFsCisjZGVmaW5lIGdjY19qaXRfYmxvY2tfZW5kX3dpdGhfanVtcCBmbl9nY2Nf aml0X2Jsb2NrX2VuZF93aXRoX2p1bXAKKyNkZWZpbmUgZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF9y ZXR1cm4gZm5fZ2NjX2ppdF9ibG9ja19lbmRfd2l0aF9yZXR1cm4KKyNkZWZpbmUgZ2NjX2ppdF9i bG9ja19lbmRfd2l0aF92b2lkX3JldHVybiBmbl9nY2Nfaml0X2Jsb2NrX2VuZF93aXRoX3ZvaWRf cmV0dXJuCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9hY3F1aXJlIGZuX2djY19qaXRfY29udGV4 dF9hY3F1aXJlCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9jb21waWxlX3RvX2ZpbGUgZm5fZ2Nj X2ppdF9jb250ZXh0X2NvbXBpbGVfdG9fZmlsZQorI2RlZmluZSBnY2Nfaml0X2NvbnRleHRfZHVt cF9yZXByb2R1Y2VyX3RvX2ZpbGUgZm5fZ2NjX2ppdF9jb250ZXh0X2R1bXBfcmVwcm9kdWNlcl90 b19maWxlCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9kdW1wX3RvX2ZpbGUgZm5fZ2NjX2ppdF9j b250ZXh0X2R1bXBfdG9fZmlsZQorI2RlZmluZSBnY2Nfaml0X2NvbnRleHRfZ2V0X2J1aWx0aW5f ZnVuY3Rpb24gZm5fZ2NjX2ppdF9jb250ZXh0X2dldF9idWlsdGluX2Z1bmN0aW9uCisjZGVmaW5l IGdjY19qaXRfY29udGV4dF9nZXRfZmlyc3RfZXJyb3IgZm5fZ2NjX2ppdF9jb250ZXh0X2dldF9m aXJzdF9lcnJvcgorI2RlZmluZSBnY2Nfaml0X2NvbnRleHRfZ2V0X2ludF90eXBlIGZuX2djY19q aXRfY29udGV4dF9nZXRfaW50X3R5cGUKKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X2dldF90eXBl IGZuX2djY19qaXRfY29udGV4dF9nZXRfdHlwZQorI2RlZmluZSBnY2Nfaml0X2NvbnRleHRfbmV3 X2FycmF5X2FjY2VzcyBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X2FycmF5X2FjY2VzcworI2RlZmlu ZSBnY2Nfaml0X2NvbnRleHRfbmV3X2FycmF5X3R5cGUgZm5fZ2NjX2ppdF9jb250ZXh0X25ld19h cnJheV90eXBlCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9uZXdfYmluYXJ5X29wIGZuX2djY19q aXRfY29udGV4dF9uZXdfYmluYXJ5X29wCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9uZXdfY2Fs bCBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X2NhbGwKKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X25l d19jYWxsX3Rocm91Z2hfcHRyIGZuX2djY19qaXRfY29udGV4dF9uZXdfY2FsbF90aHJvdWdoX3B0 cgorI2RlZmluZSBnY2Nfaml0X2NvbnRleHRfbmV3X2NvbXBhcmlzb24gZm5fZ2NjX2ppdF9jb250 ZXh0X25ld19jb21wYXJpc29uCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9uZXdfZmllbGQgZm5f Z2NjX2ppdF9jb250ZXh0X25ld19maWVsZAorI2RlZmluZSBnY2Nfaml0X2NvbnRleHRfbmV3X2Z1 bmN0aW9uIGZuX2djY19qaXRfY29udGV4dF9uZXdfZnVuY3Rpb24KKyNkZWZpbmUgZ2NjX2ppdF9j b250ZXh0X25ld19mdW5jdGlvbl9wdHJfdHlwZSBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X2Z1bmN0 aW9uX3B0cl90eXBlCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9uZXdfZ2xvYmFsIGZuX2djY19q aXRfY29udGV4dF9uZXdfZ2xvYmFsCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9uZXdfb3BhcXVl X3N0cnVjdCBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X29wYXF1ZV9zdHJ1Y3QKKyNkZWZpbmUgZ2Nj X2ppdF9jb250ZXh0X25ld19wYXJhbSBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X3BhcmFtCisjZGVm aW5lIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVlX2Zyb21faW50IGZuX2djY19qaXRfY29udGV4 dF9uZXdfcnZhbHVlX2Zyb21faW50CisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9uZXdfcnZhbHVl X2Zyb21fbG9uZyBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X3J2YWx1ZV9mcm9tX2xvbmcKKyNkZWZp bmUgZ2NjX2ppdF9jb250ZXh0X25ld19ydmFsdWVfZnJvbV9wdHIgZm5fZ2NjX2ppdF9jb250ZXh0 X25ld19ydmFsdWVfZnJvbV9wdHIKKyNkZWZpbmUgZ2NjX2ppdF9jb250ZXh0X25ld19zdHJ1Y3Rf dHlwZSBmbl9nY2Nfaml0X2NvbnRleHRfbmV3X3N0cnVjdF90eXBlCisjZGVmaW5lIGdjY19qaXRf Y29udGV4dF9uZXdfdW5hcnlfb3AgZm5fZ2NjX2ppdF9jb250ZXh0X25ld191bmFyeV9vcAorI2Rl ZmluZSBnY2Nfaml0X2NvbnRleHRfbmV3X3VuaW9uX3R5cGUgZm5fZ2NjX2ppdF9jb250ZXh0X25l d191bmlvbl90eXBlCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9yZWxlYXNlIGZuX2djY19qaXRf Y29udGV4dF9yZWxlYXNlCisjZGVmaW5lIGdjY19qaXRfY29udGV4dF9zZXRfYm9vbF9vcHRpb24g Zm5fZ2NjX2ppdF9jb250ZXh0X3NldF9ib29sX29wdGlvbgorI2RlZmluZSBnY2Nfaml0X2NvbnRl eHRfc2V0X2ludF9vcHRpb24gZm5fZ2NjX2ppdF9jb250ZXh0X3NldF9pbnRfb3B0aW9uCisjZGVm aW5lIGdjY19qaXRfY29udGV4dF9zZXRfbG9nZmlsZSBmbl9nY2Nfaml0X2NvbnRleHRfc2V0X2xv Z2ZpbGUKKyNkZWZpbmUgZ2NjX2ppdF9mdW5jdGlvbl9nZXRfcGFyYW0gZm5fZ2NjX2ppdF9mdW5j dGlvbl9nZXRfcGFyYW0KKyNkZWZpbmUgZ2NjX2ppdF9mdW5jdGlvbl9uZXdfYmxvY2sgZm5fZ2Nj X2ppdF9mdW5jdGlvbl9uZXdfYmxvY2sKKyNkZWZpbmUgZ2NjX2ppdF9mdW5jdGlvbl9uZXdfbG9j YWwgZm5fZ2NjX2ppdF9mdW5jdGlvbl9uZXdfbG9jYWwKKyNkZWZpbmUgZ2NjX2ppdF9sdmFsdWVf YWNjZXNzX2ZpZWxkIGZuX2djY19qaXRfbHZhbHVlX2FjY2Vzc19maWVsZAorI2RlZmluZSBnY2Nf aml0X2x2YWx1ZV9hc19ydmFsdWUgZm5fZ2NjX2ppdF9sdmFsdWVfYXNfcnZhbHVlCisjZGVmaW5l IGdjY19qaXRfbHZhbHVlX2dldF9hZGRyZXNzIGZuX2djY19qaXRfbHZhbHVlX2dldF9hZGRyZXNz CisjZGVmaW5lIGdjY19qaXRfcGFyYW1fYXNfbHZhbHVlIGZuX2djY19qaXRfcGFyYW1fYXNfbHZh bHVlCisjZGVmaW5lIGdjY19qaXRfcGFyYW1fYXNfcnZhbHVlIGZuX2djY19qaXRfcGFyYW1fYXNf cnZhbHVlCisjZGVmaW5lIGdjY19qaXRfcnZhbHVlX2FjY2Vzc19maWVsZCBmbl9nY2Nfaml0X3J2 YWx1ZV9hY2Nlc3NfZmllbGQKKyNkZWZpbmUgZ2NjX2ppdF9ydmFsdWVfZGVyZWZlcmVuY2UgZm5f Z2NjX2ppdF9ydmFsdWVfZGVyZWZlcmVuY2UKKyNkZWZpbmUgZ2NjX2ppdF9ydmFsdWVfZGVyZWZl cmVuY2VfZmllbGQgZm5fZ2NjX2ppdF9ydmFsdWVfZGVyZWZlcmVuY2VfZmllbGQKKyNkZWZpbmUg Z2NjX2ppdF9ydmFsdWVfZ2V0X3R5cGUgZm5fZ2NjX2ppdF9ydmFsdWVfZ2V0X3R5cGUKKyNkZWZp bmUgZ2NjX2ppdF9zdHJ1Y3RfYXNfdHlwZSBmbl9nY2Nfaml0X3N0cnVjdF9hc190eXBlCisjZGVm aW5lIGdjY19qaXRfc3RydWN0X3NldF9maWVsZHMgZm5fZ2NjX2ppdF9zdHJ1Y3Rfc2V0X2ZpZWxk cworI2RlZmluZSBnY2Nfaml0X3R5cGVfZ2V0X3BvaW50ZXIgZm5fZ2NjX2ppdF90eXBlX2dldF9w b2ludGVyCisKKyNlbmRpZgorCitzdGF0aWMgYm9vbAorbG9hZF9nY2NqaXRfaWZfbmVjZXNzYXJ5 IChib29sIG1hbmRhdG9yeSkKK3sKKyNpZmRlZiBXSU5ET1dTTlQKKyAgc3RhdGljIGJvb2wgdHJp ZWRfdG9faW5pdGlhbGl6ZV9vbmNlOworICBzdGF0aWMgYm9vbCBnY2NqaXRfaW5pdGlhbGl6ZWQ7 CisKKyAgaWYgKCF0cmllZF90b19pbml0aWFsaXplX29uY2UpCisgICAgeworICAgICAgdHJpZWRf dG9faW5pdGlhbGl6ZV9vbmNlID0gdHJ1ZTsKKyAgICAgIExpc3BfT2JqZWN0IHN0YXR1czsKKyAg ICAgIGdjY2ppdF9pbml0aWFsaXplZCA9IGluaXRfZ2Njaml0X2Z1bmN0aW9ucyAoKTsKKyAgICAg IHN0YXR1cyA9IGdjY2ppdF9pbml0aWFsaXplZCA/IFF0IDogUW5pbDsKKyAgICAgIFZsaWJyYXJ5 X2NhY2hlID0gRmNvbnMgKEZjb25zIChRZ2Njaml0LCBzdGF0dXMpLCBWbGlicmFyeV9jYWNoZSk7 CisgICAgfQorCisgIGlmIChtYW5kYXRvcnkgJiYgIWdjY2ppdF9pbml0aWFsaXplZCkKKyAgICB4 c2lnbmFsMShRbmF0aXZlX2NvbXBpbGVyX2Vycm9yLCBidWlsZF9zdHJpbmcoImxpYmdjY2ppdCBu b3QgZm91bmQiKSk7CisKKyAgcmV0dXJuIGdjY2ppdF9pbml0aWFsaXplZDsKKyNlbHNlCisgIHJl dHVybiB0cnVlOworI2VuZGlmCit9CisKKwwKIC8qIEMgc3ltYm9scyBlbWl0dGVkIGZvciB0aGUg bG9hZCByZWxvY2F0aW9uIG1lY2hhbmlzbS4gICovCiAjZGVmaW5lIENVUlJFTlRfVEhSRUFEX1JF TE9DX1NZTSAiY3VycmVudF90aHJlYWRfcmVsb2MiCiAjZGVmaW5lIFBVUkVfUFRSX1NZTSAicHVy ZV9wdHIiCkBAIC0zMzI4LDYgKzM2NzAsOCBAQCBERUZVTiAoImNvbXAtLWluaXQtY3R4dCIsIEZj b21wX19pbml0X2N0eHQsIFNjb21wX19pbml0X2N0eHQsCiAgICAgICAgZG9jOiAvKiBJbml0aWFs aXplIHRoZSBuYXRpdmUgY29tcGlsZXIgY29udGV4dC4gUmV0dXJuIHQgb24gc3VjY2Vzcy4gICov KQogICAgICAodm9pZCkKIHsKKyAgbG9hZF9nY2NqaXRfaWZfbmVjZXNzYXJ5KHRydWUpOworCiAg IGlmIChjb21wLmN0eHQpCiAgICAgewogICAgICAgeHNpZ25hbDEgKFFuYXRpdmVfaWNlLApAQCAt MzQ3NCw2ICszODE4LDggQEAgREVGVU4gKCJjb21wLS1yZWxlYXNlLWN0eHQiLCBGY29tcF9fcmVs ZWFzZV9jdHh0LCBTY29tcF9fcmVsZWFzZV9jdHh0LAogICAgICAgIGRvYzogLyogUmVsZWFzZSB0 aGUgbmF0aXZlIGNvbXBpbGVyIGNvbnRleHQuICAqLykKICAgICAgKHZvaWQpCiB7CisgIGxvYWRf Z2Njaml0X2lmX25lY2Vzc2FyeSh0cnVlKTsKKwogICBpZiAoY29tcC5jdHh0KQogICAgIGdjY19q aXRfY29udGV4dF9yZWxlYXNlIChjb21wLmN0eHQpOwogCkBAIC0zNDkwLDYgKzM4MzYsOCBAQCBE RUZVTiAoImNvbXAtLWNvbXBpbGUtY3R4dC10by1maWxlIiwgRmNvbXBfX2NvbXBpbGVfY3R4dF90 b19maWxlLAogICAgICAgIGRvYzogLyogQ29tcGlsZSBhcyBuYXRpdmUgY29kZSB0aGUgY3VycmVu dCBjb250ZXh0IHRvIGZpbGUuICAqLykKICAgICAgKExpc3BfT2JqZWN0IGJhc2VfbmFtZSkKIHsK KyAgbG9hZF9nY2NqaXRfaWZfbmVjZXNzYXJ5KHRydWUpOworCiAgIENIRUNLX1NUUklORyAoYmFz ZV9uYW1lKTsKIAogICBnY2Nfaml0X2NvbnRleHRfc2V0X2ludF9vcHRpb24gKGNvbXAuY3R4dCwK QEAgLTM2NjAsNiArNDAwOCw5IEBAIG1heWJlX2RlZmVyX25hdGl2ZV9jb21waWxhdGlvbiAoTGlz cF9PYmplY3QgZnVuY3Rpb25fbmFtZSwKICAgICAgIGZmbHVzaCAoZik7CiAgICAgfQogI2VuZGlm CisgIGlmICghbG9hZF9nY2NqaXRfaWZfbmVjZXNzYXJ5KGZhbHNlKSkKKyAgICByZXR1cm47CisK ICAgaWYgKCFjb21wX2RlZmVycmVkX2NvbXBpbGF0aW9uCiAgICAgICB8fCBub25pbnRlcmFjdGl2 ZQogICAgICAgfHwgIU5JTFAgKFZwdXJpZnlfZmxhZykKQEAgLTM5MjgsMTAgKzQyNzksMjYgQEAg REVGVU4gKCJuYXRpdmUtZWxpc3AtbG9hZCIsIEZuYXRpdmVfZWxpc3BfbG9hZCwgU25hdGl2ZV9l bGlzcF9sb2FkLCAxLCAyLCAwLAogICByZXR1cm4gUXQ7CiB9CiAKKyNlbmRpZiAvKiBIQVZFX05B VElWRV9DT01QICovCisKK0RFRlVOICgibmF0aXZlLWNvbXAtYXZhaWxhYmxlLXAiLCBGbmF0aXZl X2NvbXBfYXZhaWxhYmxlX3AsCisgICAgICAgU25hdGl2ZV9jb21wX2F2YWlsYWJsZV9wLCAwLCAw LCAwLAorICAgICAgIGRvYzogLyogUmV0dXJucyB0IGlmIG5hdGl2ZSBjb21waWxhdGlvbiBvZiBM aXNwIGZpbGVzIGlzIGF2YWlsYWJsZSBpbgordGhpcyBpbnN0YW5jZSBvZiBFbWFjcy4gKi8pCisg ICh2b2lkKQoreworI2lmZGVmIEhBVkVfTkFUSVZFX0NPTVAKKyAgcmV0dXJuIGxvYWRfZ2Njaml0 X2lmX25lY2Vzc2FyeShmYWxzZSkgPyBRdCA6IFFuaWw7CisjZWxzZQorICByZXR1cm4gUW5pbDsK KyNlbmRpZgorfQorCiAMCiB2b2lkCiBzeW1zX29mX2NvbXAgKHZvaWQpCiB7CisjaWZkZWYgSEFW RV9OQVRJVkVfQ09NUAogICAvKiBDb21waWxlciBjb250cm9sIGN1c3RvbWl6ZXMuICAqLwogICBE RUZWQVJfQk9PTCAoImNvbXAtZGVmZXJyZWQtY29tcGlsYXRpb24iLCBjb21wX2RlZmVycmVkX2Nv bXBpbGF0aW9uLAogCSAgICAgICBkb2M6IC8qIElmIHQgY29tcGlsZSBhc3luY3Jvbm91c2x5IGV2 ZXJ5IC5lbGMgZmlsZSBsb2FkZWQuICAqLyk7CkBAIC00MDczLDYgKzQ0NDAsNyBAQCBzeW1zX29m X2NvbXAgKHZvaWQpCiAJICAgICAgIGRvYzogLyogSGFzaCB0YWJsZSBzeW1ib2wtbmFtZSAtPiBm dW5jdGlvbi12YWx1ZS4gIEZvcgogCQkgICAgICAgaW50ZXJuYWwgdXNlIGR1cmluZyAgKi8pOwog ICBWY29tcF9kZWZlcnJlZF9wZW5kaW5nX2ggPSBDQUxMTiAoRm1ha2VfaGFzaF90YWJsZSwgUUN0 ZXN0LCBRZXEpOwotfQorI2VuZGlmCiAKLSNlbmRpZiAvKiBIQVZFX05BVElWRV9DT01QICovCisg IGRlZnN1YnIgKCZTbmF0aXZlX2NvbXBfYXZhaWxhYmxlX3ApOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2NvbXAuaCBiL3NyYy9jb21wLmgKaW5kZXggY2JkY2FjY2Q1Zi4uZTZhYjMyZmY4ZSAxMDA2NDQK LS0tIGEvc3JjL2NvbXAuaAorKysgYi9zcmMvY29tcC5oCkBAIC04MiwxMSArODIsNyBAQCBtYXli ZV9kZWZlcl9uYXRpdmVfY29tcGlsYXRpb24gKExpc3BfT2JqZWN0IGZ1bmN0aW9uX25hbWUsCiAJ CQkJTGlzcF9PYmplY3QgZGVmaW5pdGlvbikKIHt9CiAKLXN0YXRpYyBpbmxpbmUgTGlzcF9PYmpl Y3QKLUZuYXRpdmVfZWxpc3BfbG9hZCAoTGlzcF9PYmplY3QgZmlsZSwgTGlzcF9PYmplY3QgbGF0 ZV9sb2FkKQotewotICBlYXNzdW1lIChmYWxzZSk7Ci19CitleHRlcm4gdm9pZCBzeW1zX29mX2Nv bXAgKHZvaWQpOwogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvc3JjL2VtYWNzLmMgYi9zcmMvZW1h Y3MuYwppbmRleCAyYzkwODI1NzQyLi5lNzVjYjU4ODM0IDEwMDY0NAotLS0gYS9zcmMvZW1hY3Mu YworKysgYi9zcmMvZW1hY3MuYwpAQCAtMTYwNiwxMCArMTYwNiw4IEBAIG1haW4gKGludCBhcmdj LCBjaGFyICoqYXJndikKICAgaW5pdF9qc29uICgpOwogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX05B VElWRV9DT01QCiAgIGlmICghaW5pdGlhbGl6ZWQpCiAgICAgc3ltc19vZl9jb21wICgpOwotI2Vu ZGlmCiAKICAgbm9fbG9hZHVwCiAgICAgPSBhcmdtYXRjaCAoYXJndiwgYXJnYywgIi1ubCIsICIt LW5vLWxvYWR1cCIsIDYsIE5VTEwsICZza2lwX2FyZ3MpOwpkaWZmIC0tZ2l0IGEvc3JjL3czMi5j IGIvc3JjL3czMi5jCmluZGV4IGE4Yzc2M2YyM2UuLmNlYjhmN2VmNjYgMTAwNjQ0Ci0tLSBhL3Ny Yy93MzIuYworKysgYi9zcmMvdzMyLmMKQEAgLTEwNTg2LDYgKzEwNTg2LDEwIEBAIGdsb2JhbHNf b2ZfdzMyICh2b2lkKQogI2VuZGlmCiAKICAgdzMyX2NyeXB0b19ocHJvdiA9IChIQ1JZUFRQUk9W KTA7CisKKyAgLyogV2UgbmVlZCB0byBmb3JnZXQgYWJvdXQgbGlicmFyaWVzIHRoYXQgd2VyZSBs b2FkZWQgZHVyaW5nIHRoZQorICAgICBkdW1waW5nIHByb2Nlc3MgKGUuZy4gbGliZ2Njaml0KSAq LworICBWbGlicmFyeV9jYWNoZSA9IFFuaWw7CiB9CiAKIC8qIEZvciBtYWtlLXNlcmlhbC1wcm9j ZXNzICAqLwpkaWZmIC0tZ2l0IGEvc3JjL3czMmZucy5jIGIvc3JjL3czMmZucy5jCmluZGV4IGU1 OTViMDI4NWEuLmVlYjczNDg5ZGQgMTAwNjQ0Ci0tLSBhL3NyYy93MzJmbnMuYworKysgYi9zcmMv dzMyZm5zLmMKQEAgLTEwNDYyLDYgKzEwNDYyLDcgQEAgc3ltc19vZl93MzJmbnMgKHZvaWQpCiAg IERFRlNZTSAoUXpsaWIsICJ6bGliIik7CiAgIERFRlNZTSAoUWxjbXMyLCAibGNtczIiKTsKICAg REVGU1lNIChRanNvbiwgImpzb24iKTsKKyAgREVGU1lNIChRZ2Njaml0LCAiZ2Njaml0Iik7CiAK ICAgRnB1dCAoUXVuZGVmaW5lZF9jb2xvciwgUWVycm9yX2NvbmRpdGlvbnMsCiAJcHVyZV9saXN0 IChRdW5kZWZpbmVkX2NvbG9yLCBRZXJyb3IpKTsKLS0gCjIuMjUuMS53aW5kb3dzLjEKCg== --0000000000005f3dbf05a58822a9--