From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x62f.google.com (mail-ej1-x62f.google.com [IPv6:2a00:1450:4864:20::62f]) by sourceware.org (Postfix) with ESMTPS id E90D038560A7 for ; Thu, 16 Jun 2022 23:20:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E90D038560A7 Received: by mail-ej1-x62f.google.com with SMTP id me5so5547950ejb.2 for ; Thu, 16 Jun 2022 16:20:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=6wqUfG8iP1Tf/er+5MTyGRM7pywWf1o5wPbtanVrTH0=; b=j2fSCgmS1ng1PSaILadHl004o+k6olV166ZhyZfF/Z7wtDSkW8nZg7WPUvWjmDD8JD qKa9RWGL/e7pDh1xLOW2IPZAJ7jzcphK1PTHt6ztcOHs4/zVDdjzryECVimGbSsD+r0T zjKWbSPA9oxMA0JOJfPST8xcSQNxucQMS8C/kDNFjkNI3fAu+0mIdt9QStkewpiSePPA eZWd+XBev4O8lQvBdp7gskOyrXPkIUlWTfQ8FgmG//NIF8a0jw/fIcXuTYq/0jfyKinv nPlLuR+Mk5Tdofa9LQTo6Xzn2BMc4xyeLjbY+SwI7Fkb2m7eG+t87c5C+BgoJqHmH/Ht hPlQ== X-Gm-Message-State: AJIora8Untr6/jK/zbJnzyDGv231Qg8UksOUnPvcphiGLCxoCOIaYk22 Y4DAMD5HDTHYNLy7Zm+Uia8P1JztqKO+fh7lc+kYSYwkZgk= X-Google-Smtp-Source: AGRyM1tRvk/pXfFKsZeGikUbDwHcPpKiY5gtvGvGJm/jlGZZut7/+DEkmFRLIWRKeZSpXPKUnUfmg4ebwfCj5RSbve8= X-Received: by 2002:a17:907:16a2:b0:711:d048:7d41 with SMTP id hc34-20020a17090716a200b00711d0487d41mr6723095ejc.126.1655421640261; Thu, 16 Jun 2022 16:20:40 -0700 (PDT) MIME-Version: 1.0 From: Mohamed Atef Date: Fri, 17 Jun 2022 01:20:28 +0200 Message-ID: Subject: [PATCH] libgompd: Fix sizes in OMPD support and add local ICVs finctions. To: gcc-patches@gcc.gnu.org, Jakub Jelinek Content-Type: multipart/mixed; boundary="000000000000d268e505e198e2dd" X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 16 Jun 2022 23:20:46 -0000 --000000000000d268e505e198e2dd Content-Type: text/plain; charset="UTF-8" libgomp/ChangeLog 2022-06-17 Mohamed Atef * ompd-helper.h (DEREFERENCE, ACCESS_VALUE): New macros. (gompd_get_proc_bind): Change the returned value from ompd_word_t to const char *. (gompd_get_max_task_priority): Fix format. (gompd_stringize_gompd_enabled): Removed. (gompd_get_gompd_enabled): New function prototype. * ompd-helper.c (gompd_get_affinity_format): Call CHECK_RET. Fix format in gompd_enabled GET_VALUE. (gompd_stringize_gompd_enabled): Removed. (gompd_get_nthread, gompd_get_thread_limit, gompd_get_run_sched, gompd_get_run_sched_chunk_size, gompd_get_default_device, gompd_get_dynamic, gompd_get_max_active_levels, gompd_get_proc_bind, gompd_is_final, gompd_is_implicit, gompd_get_team_size): New functions. (gompd_get_gompd_enabled): Change the returned value from ompd_word_t to const char *. * ompd-init.c (ompd_process_initialize): Use sizeof_short instead of sizeof_long_long in GET_VALUE argument. * ompd-support.h: Change type from __UINT64_TYPE__ to unsigned short. (GOMPD_FOREACH_ACCESS): Add entries for gomp_task kind and final_task and gomp_team nthreads. * ompd-support.c (gompd_get_offset, gompd_get_sizeof_member, gompd_get_size, OMPD_SECTION): Define. (gompd_access_gomp_thread_handle, gompd_sizeof_gomp_thread_handle): New variables. (gompd_state): Change type from __UNIT64_TYPE__ to unsigned short. (gompd_load): Remove gompd_init_access, gompd_init_sizeof_members, gompd_init_sizes, gompd_access_gomp_thread_handle, gompd_sizeof_gomp_thread_handle. * ompd-icv.c (ompd_get_icv_from_scope): Add thread_handle, task_handle and parallel_handle. Fix format in ashandle definition. Call gompd_get_nthread, gompd_get_thread_limit, gomp_get_run_shed, gompd_get_run_sched_chunk_size, gompd_get_default_device, gompd_get_dynamic, gompd_get_max_active_levels, gompd_get_proc_bind, gompd_is_final, gompd_is_implicit, and gompd_get_team_size. (ompd_get_icv_string_from_scope): Fix format in ashandle definition. Add task_handle. Call gompd_get_gompd_enabled, and gompd_get_proc_bind. Remove the call to gompd_stringize_gompd_enabled. --000000000000d268e505e198e2dd Content-Type: text/plain; charset="US-ASCII"; name="diff.txt" Content-Disposition: attachment; filename="diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l4hna8lq0 ZGlmZiAtLWdpdCBhL2xpYmdvbXAvb21wZC1oZWxwZXIuYyBiL2xpYmdvbXAvb21wZC1oZWxwZXIu YwppbmRleCBhNDg4YmE3ZGYyZS4uOTc2MmI0OGRmZjggMTAwNjQ0Ci0tLSBhL2xpYmdvbXAvb21w ZC1oZWxwZXIuYworKysgYi9saWJnb21wL29tcGQtaGVscGVyLmMKQEAgLTExNiw2ICsxMTYsNyBA QCBnb21wZF9nZXRfYWZmaW5pdHlfZm9ybWF0IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3Qg KmFoLCBjb25zdCBjaGFyICoqc3RyaW5nKQogICBjaGFyICp0ZW1wX3N0cjsKICAgb21wZF93b3Jk X3QgYWRkcjsKICAgcmV0ID0gY2FsbGJhY2tzLT5hbGxvY19tZW1vcnkgKGxlbiArIDEsICh2b2lk ICoqKSAmdGVtcF9zdHIpOworICBDSEVDS19SRVQgKHJldCk7CiAgIHRlbXBfc3RyW2xlbl0gPSAn XDAnOwogICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHtPTVBEX1NFR01FTlRfVU5TUEVD SUZJRUQsIDB9OwogICByZXQgPSBjYWxsYmFja3MtPnN5bWJvbF9hZGRyX2xvb2t1cCAoYWgtPmNv bnRleHQsIE5VTEwsCkBAIC0yMzcsNyArMjM4LDcgQEAgZ29tcGRfZ2V0X2dvbXBkX2VuYWJsZWQg KG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWgsIGNvbnN0IGNoYXIgKipzdHJpbmcpCiAg IG9tcGRfcmNfdCByZXQ7CiAgIG9tcGRfYWRkcmVzc190IHN5bWJvbF9hZGRyID0ge09NUERfU0VH TUVOVF9VTlNQRUNJRklFRCwgMH07CiAgIEdFVF9WQUxVRSAoYWgtPmNvbnRleHQsIE5VTEwsICJn b21wZF9lbmFibGVkIiwgdGVtcCwgdGVtcCwKLSAgICAgICAgICAgICB0YXJnZXRfc2l6ZXMuc2l6 ZW9mX2ludCwgMSwgcmV0LCBzeW1ib2xfYWRkcik7CisJICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9m X2ludCwgMSwgcmV0LCBzeW1ib2xfYWRkcik7CiAgIHN0YXRpYyBjb25zdCBjaGFyICp0ZW1wX3N0 cmluZyA9ICJkaXNhYmxlZCI7CiAgIGlmICh0ZW1wID09IDEpCiAgICAgdGVtcF9zdHJpbmcgPSAi ZW5hYmxlZCI7CkBAIC0yNDYsMTUgKzI0NywzNjMgQEAgZ29tcGRfZ2V0X2dvbXBkX2VuYWJsZWQg KG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqYWgsIGNvbnN0IGNoYXIgKipzdHJpbmcpCiAg ICpzdHJpbmcgPSB0ZW1wX3N0cmluZzsKICAgcmV0dXJuIHJldDsKIH0KKy8qIEVuZCBvZiBnbG9i YWwgSUNWcyBmdW5jdGlvbnMuICAqLwogCisvKiBHZXQgcGVyIHRocmVhZCBJQ1ZzLiAgKi8KIG9t cGRfcmNfdAotZ29tcGRfc3RyaW5naXplX2dvbXBkX2VuYWJsZWQgKG9tcGRfYWRkcmVzc19zcGFj ZV9oYW5kbGVfdCAqYWgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqKnN0cmluZykKK2dvbXBkX2dldF9udGhyZWFkIChvbXBkX3RocmVhZF9oYW5kbGVfdCAqdGhy ZWFkX2hhbmRsZSwKKwkJICAgb21wZF93b3JkX3QgKm50aHJlYWRzX3ZhcikKIHsKLSAgcmV0dXJu IGdvbXBkX2dldF9nb21wZF9lbmFibGVkIChhaCwgc3RyaW5nKTsKKyAgLyogZ29tcF90aHJlYWQt PnRhc2stPmdvbXBfdGFza19pY3YubnRocmVhZHNfdmFyLiAgKi8KKyAgaWYgKHRocmVhZF9oYW5k bGUgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19zdGFsZV9oYW5kbGU7CisgIGlmIChudGhy ZWFkc192YXIgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19iYWRfaW5wdXQ7CisgIENIRUNL ICh0aHJlYWRfaGFuZGxlLT5haCk7CisKKyAgb21wZF93b3JkX3QgcmVzID0gMDsKKyAgb21wZF9h ZGRyZXNzX3Qgc3ltYm9sX2FkZHIgPSB0aHJlYWRfaGFuZGxlLT50aDsKKyAgb21wZF93b3JkX3Qg dGVtcF9vZmZzZXQ7CisgIG9tcGRfYWRkcmVzc190IHRlbXBfc3ltX2FkZHI7CisgIG9tcGRfYWRk cl90IHRlbXBfYWRkcjsKKyAgb21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqY29udGV4dCA9 IHRocmVhZF9oYW5kbGUtPmFoLT5jb250ZXh0OworICBvbXBkX3RocmVhZF9jb250ZXh0X3QgKnRf Y29udGV4dCA9IHRocmVhZF9oYW5kbGUtPnRocmVhZF9jb250ZXh0OworICBvbXBkX3JjX3QgcmV0 OworICAvKiBnb21wX3RocmVhZC0+dGFzay4gICovCisgIEFDQ0VTU19WQUxVRSAoY29udGV4dCwg dF9jb250ZXh0LCAiZ29tcGRfYWNjZXNzX2dvbXBfdGhyZWFkX3Rhc2siLAorCQl0ZW1wX29mZnNl dCwgMSwgcmV0LCBzeW1ib2xfYWRkciwgdGVtcF9zeW1fYWRkciwgdGVtcF9hZGRyKTsKKyAgLyog Z29tcF90aHJlYWQtPnRhc2stPnRhc2tfaWN2LiAgKi8KKyAgQUNDRVNTX1ZBTFVFIChjb250ZXh0 LCB0X2NvbnRleHQsICJnb21wZF9hY2Nlc3NfZ29tcF90YXNrX2ljdiIsIHRlbXBfb2Zmc2V0LAor CQkxLCByZXQsIHN5bWJvbF9hZGRyLCB0ZW1wX3N5bV9hZGRyLCB0ZW1wX2FkZHIpOworICAvKiBn b21wX3RocmVhZC0+dGFzay0+dGFza19pY3YubnRocmVhZHNfdmFyLiAgKi8KKyAgQUNDRVNTX1ZB TFVFIChjb250ZXh0LCB0X2NvbnRleHQsICJnb21wZF9hY2Nlc3NfZ29tcF90YXNrX2ljdl9udGhy ZWFkc192YXIiLAorCQl0ZW1wX29mZnNldCwgMCwgcmV0LCBzeW1ib2xfYWRkciwgdGVtcF9zeW1f YWRkciwgdGVtcF9hZGRyKTsKKyAgREVSRUZFUkVOQ0UgKGNvbnRleHQsIHRfY29udGV4dCwgc3lt Ym9sX2FkZHIsIHRhcmdldF9zaXplcy5zaXplb2ZfbG9uZ19sb25nLAorCSAgICAgICAxLCByZXMs IHJldCwgMCk7CisgICpudGhyZWFkc192YXIgPSByZXM7CisgIHJldHVybiBvbXBkX3JjX29rOwog fQogCi0vKiBFbmQgb2YgZ2xvYmFsIElDVnMgZnVuY3Rpb25zLiAgKi8KK29tcGRfcmNfdAorZ29t cGRfZ2V0X2RlZmF1bHRfZGV2aWNlIChvbXBkX3RocmVhZF9oYW5kbGVfdCAqdGhyZWFkX2hhbmRs ZSwKKwkJCSAgb21wZF93b3JkX3QgKmRlZmF1bHRfZGV2aWNlX3ZhcikKK3sKKyAgLyogZ29tcF90 aHJlYWQtPnRhc2stPmdvbXBfdGFza19pY3YuZGVmYXVsdF9kZXZpY2VfdmFyLiAgKi8KKyAgaWYg KHRocmVhZF9oYW5kbGUgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19zdGFsZV9oYW5kbGU7 CisgIGlmIChkZWZhdWx0X2RldmljZV92YXIgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19i YWRfaW5wdXQ7CisgIENIRUNLICh0aHJlYWRfaGFuZGxlLT5haCk7CisKKyAgb21wZF93b3JkX3Qg cmVzID0gMDsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9sX2FkZHIgPSB0aHJlYWRfaGFuZGxlLT50 aDsKKyAgb21wZF93b3JkX3QgdGVtcF9vZmZzZXQ7CisgIG9tcGRfYWRkcmVzc190IHRlbXBfc3lt X2FkZHI7CisgIG9tcGRfYWRkcl90IHRlbXBfYWRkcjsKKyAgb21wZF9hZGRyZXNzX3NwYWNlX2Nv bnRleHRfdCAqY29udGV4dCA9IHRocmVhZF9oYW5kbGUtPmFoLT5jb250ZXh0OworICBvbXBkX3Ro cmVhZF9jb250ZXh0X3QgKnRfY29udGV4dCA9IHRocmVhZF9oYW5kbGUtPnRocmVhZF9jb250ZXh0 OworICBvbXBkX3JjX3QgcmV0OworICAvKiBnb21wX3RocmVhZC0+dGFzay4gICovCisgIEFDQ0VT U19WQUxVRSAoY29udGV4dCwgdF9jb250ZXh0LCAiZ29tcGRfYWNjZXNzX2dvbXBfdGhyZWFkX3Rh c2siLAorCQl0ZW1wX29mZnNldCwgMSwgcmV0LCBzeW1ib2xfYWRkciwgdGVtcF9zeW1fYWRkciwg dGVtcF9hZGRyKTsKKyAgLyogZ29tcF90aHJlYWQtPnRhc2stPnRhc2tfaWN2LiAgKi8KKyAgQUND RVNTX1ZBTFVFIChjb250ZXh0LCB0X2NvbnRleHQsICJnb21wZF9hY2Nlc3NfZ29tcF90YXNrX2lj diIsIHRlbXBfb2Zmc2V0LAorCQkxLCByZXQsIHN5bWJvbF9hZGRyLCB0ZW1wX3N5bV9hZGRyLCB0 ZW1wX2FkZHIpOworICAvKiBnb21wX3RocmVhZC0+dGFzay0+dGFza19pY3YuZGVmYXVsdF9kZXZp Y2VfdmFyLiAgKi8KKyAgQUNDRVNTX1ZBTFVFIChjb250ZXh0LCB0X2NvbnRleHQsCisJCSJnb21w ZF9hY2Nlc3NfZ29tcF90YXNrX2ljdl9kZWZhdWx0X2RldmljZV92YXIiLCB0ZW1wX29mZnNldCwg MCwKKwkJcmV0LCBzeW1ib2xfYWRkciwgdGVtcF9zeW1fYWRkciwgdGVtcF9hZGRyKTsKKyAgREVS RUZFUkVOQ0UgKGNvbnRleHQsIHRfY29udGV4dCwgc3ltYm9sX2FkZHIsIHRhcmdldF9zaXplcy5z aXplb2ZfaW50LCAxLAorCSAgICAgICByZXMsIHJldCwgMCk7CisgICpkZWZhdWx0X2RldmljZV92 YXIgPSByZXM7CisgIHJldHVybiBvbXBkX3JjX29rOworfQorCitvbXBkX3JjX3QKK2dvbXBkX2dl dF9keW5hbWljIChvbXBkX3RocmVhZF9oYW5kbGVfdCAqdGhyZWFkX2hhbmRsZSwgb21wZF93b3Jk X3QgKmR5bl92YXIpCit7CisgIC8qIGdvbXBfdGhyZWFkLT50YXNrLT5nb21wX3Rhc2tfaWN2LmR5 bl92YXIuICAqLworICBpZiAodGhyZWFkX2hhbmRsZSA9PSBOVUxMKQorICAgIHJldHVybiBvbXBk X3JjX3N0YWxlX2hhbmRsZTsKKyAgaWYgKGR5bl92YXIgPT0gTlVMTCkKKyAgICByZXR1cm4gb21w ZF9yY19iYWRfaW5wdXQ7CisgIENIRUNLICh0aHJlYWRfaGFuZGxlLT5haCk7CisKKyAgb21wZF93 b3JkX3QgcmVzID0gMDsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9sX2FkZHIgPSB0aHJlYWRfaGFu ZGxlLT50aDsKKyAgb21wZF93b3JkX3QgdGVtcF9vZmZzZXQ7CisgIG9tcGRfYWRkcmVzc190IHRl bXBfc3ltX2FkZHI7CisgIG9tcGRfYWRkcl90IHRlbXBfYWRkcjsKKyAgb21wZF9hZGRyZXNzX3Nw YWNlX2NvbnRleHRfdCAqY29udGV4dCA9IHRocmVhZF9oYW5kbGUtPmFoLT5jb250ZXh0OworICBv bXBkX3RocmVhZF9jb250ZXh0X3QgKnRfY29udGV4dCA9IHRocmVhZF9oYW5kbGUtPnRocmVhZF9j b250ZXh0OworICBvbXBkX3JjX3QgcmV0OworICAvKiBnb21wX3RocmVhZC0+dGFzay4gICovCisg IEFDQ0VTU19WQUxVRSAoY29udGV4dCwgdF9jb250ZXh0LCAiZ29tcGRfYWNjZXNzX2dvbXBfdGhy ZWFkX3Rhc2siLAorCQl0ZW1wX29mZnNldCwgMSwgcmV0LCBzeW1ib2xfYWRkciwgdGVtcF9zeW1f YWRkciwgdGVtcF9hZGRyKTsKKyAgLyogZ29tcF90aHJlYWQtPnRhc2stPnRhc2tfaWN2LiAgKi8K KyAgQUNDRVNTX1ZBTFVFIChjb250ZXh0LCB0X2NvbnRleHQsICJnb21wZF9hY2Nlc3NfZ29tcF90 YXNrX2ljdiIsIHRlbXBfb2Zmc2V0LAorCQkxLCByZXQsIHN5bWJvbF9hZGRyLCB0ZW1wX3N5bV9h ZGRyLCB0ZW1wX2FkZHIpOworICAvKiBnb21wX3RocmVhZC0+dGFzay0+dGFza19pY3YuZHluX3Zh ci4gICovCisgIEFDQ0VTU19WQUxVRSAoY29udGV4dCwgdF9jb250ZXh0LCAiZ29tcGRfYWNjZXNz X2dvbXBfdGFza19pY3ZfZHluX3ZhciIsCisJCXRlbXBfb2Zmc2V0LCAwLCByZXQsIHN5bWJvbF9h ZGRyLCB0ZW1wX3N5bV9hZGRyLCB0ZW1wX2FkZHIpOworICBERVJFRkVSRU5DRSAoY29udGV4dCwg dF9jb250ZXh0LCBzeW1ib2xfYWRkciwgdGFyZ2V0X3NpemVzLnNpemVvZl9jaGFyLCAxLAorCSAg ICAgICByZXMsIHJldCwgMCk7CisgICpkeW5fdmFyID0gcmVzOworICByZXR1cm4gb21wZF9yY19v azsKK30KKy8qIEVuZCBvZiBwZXIgdGhyZWFkIElDVnMuICAqLworCisKKy8qIEdldCBwZXIgdGFz ayBJQ1ZzLiAgKi8KKworb21wZF9yY190Citnb21wZF9nZXRfdGhyZWFkX2xpbWl0IChvbXBkX3Rh c2tfaGFuZGxlX3QgKnRhc2tfaGFuZGxlLAorCQkJb21wZF93b3JkX3QgKnRocmVhZF9saW1pdF92 YXIpCit7CisgIC8qIGdvbXBfdGFzay0+Z29tcF90YXNrX2ljdi50aHJlYWRfbGltaXRfdmFyLiAg Ki8KKyAgaWYgKHRhc2tfaGFuZGxlID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfc3RhbGVf aGFuZGxlOworICBpZiAodGhyZWFkX2xpbWl0X3ZhciA9PSBOVUxMKQorICAgIHJldHVybiBvbXBk X3JjX2JhZF9pbnB1dDsKKyAgQ0hFQ0sgKHRhc2tfaGFuZGxlLT5haCk7CisKKyAgb21wZF93b3Jk X3QgcmVzID0gMDsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9sX2FkZHIgPSB0YXNrX2hhbmRsZS0+ dGg7CisgIG9tcGRfd29yZF90IHRlbXBfb2Zmc2V0OworICBvbXBkX2FkZHJlc3NfdCB0ZW1wX3N5 bV9hZGRyOworICBvbXBkX2FkZHJfdCB0ZW1wX2FkZHI7CisgIG9tcGRfYWRkcmVzc19zcGFjZV9j b250ZXh0X3QgKmNvbnRleHQgPSB0YXNrX2hhbmRsZS0+YWgtPmNvbnRleHQ7CisgIG9tcGRfcmNf dCByZXQ7CisgIC8qIGdvbXBfdGFzay0+dGFza19pY3YuICAqLworICBBQ0NFU1NfVkFMVUUgKGNv bnRleHQsIE5VTEwsICJnb21wZF9hY2Nlc3NfZ29tcF90YXNrX2ljdiIsIHRlbXBfb2Zmc2V0LAor CQkxLCByZXQsIHN5bWJvbF9hZGRyLCB0ZW1wX3N5bV9hZGRyLCB0ZW1wX2FkZHIpOworICAvKiBn b21wX3Rhc2stPnRhc2tfaWN2LnRocmVhZF9saW1pdF92YXIuICAqLworICBBQ0NFU1NfVkFMVUUg KGNvbnRleHQsIE5VTEwsCisJCSJnb21wZF9hY2Nlc3NfZ29tcF90YXNrX2ljdl90aHJlYWRfbGlt aXRfdmFyIiwgdGVtcF9vZmZzZXQsIDAsCisJCXJldCwgc3ltYm9sX2FkZHIsIHRlbXBfc3ltX2Fk ZHIsIHRlbXBfYWRkcik7CisgIERFUkVGRVJFTkNFIChjb250ZXh0LCBOVUxMLCBzeW1ib2xfYWRk ciwgdGFyZ2V0X3NpemVzLnNpemVvZl9pbnQsIDEsCisJICAgICAgIHJlcywgcmV0LCAwKTsKKyAg KnRocmVhZF9saW1pdF92YXIgPSByZXM7CisgIHJldHVybiBvbXBkX3JjX29rOworfQorCitvbXBk X3JjX3QKK2dvbXBkX2dldF9ydW5fc2NoZWRfY2h1bmtfc2l6ZSAob21wZF90YXNrX2hhbmRsZV90 ICp0YXNrX2hhbmRsZSwKKwkJCQlvbXBkX3dvcmRfdCAqcnVuX3NjaGVkX2NodW5rX3NpemUpCit7 CisgIC8qIGdvbXBfdGFzay0+Z29tcF90YXNrX2ljdi5ydW5fc2NoZWRfY2h1bmtfc2l6ZS4gICov CisgIGlmICh0YXNrX2hhbmRsZSA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hh bmRsZTsKKyAgaWYgKHJ1bl9zY2hlZF9jaHVua19zaXplID09IE5VTEwpCisgICAgcmV0dXJuIG9t cGRfcmNfYmFkX2lucHV0OworICBDSEVDSyAodGFza19oYW5kbGUtPmFoKTsKKworICBvbXBkX3dv cmRfdCByZXMgPSAwOworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHRhc2tfaGFuZGxl LT50aDsKKyAgb21wZF93b3JkX3QgdGVtcF9vZmZzZXQ7CisgIG9tcGRfYWRkcmVzc190IHRlbXBf c3ltX2FkZHI7CisgIG9tcGRfYWRkcl90IHRlbXBfYWRkcjsKKyAgb21wZF9hZGRyZXNzX3NwYWNl X2NvbnRleHRfdCAqY29udGV4dCA9IHRhc2tfaGFuZGxlLT5haC0+Y29udGV4dDsKKyAgb21wZF9y Y190IHJldDsKKyAgLyogZ29tcF90YXNrLT50YXNrX2ljdi4gICovCisgIEFDQ0VTU19WQUxVRSAo Y29udGV4dCwgTlVMTCwgImdvbXBkX2FjY2Vzc19nb21wX3Rhc2tfaWN2IiwgdGVtcF9vZmZzZXQs CisJCTEsIHJldCwgc3ltYm9sX2FkZHIsIHRlbXBfc3ltX2FkZHIsIHRlbXBfYWRkcik7CisgIC8q IGdvbXBfdGFzay0+dGFza19pY3YucnVuX3NjaGVkX2NodW5rX3NpemUuICAqLworICBBQ0NFU1Nf VkFMVUUgKGNvbnRleHQsIE5VTEwsCisJCSJnb21wZF9hY2Nlc3NfZ29tcF90YXNrX2ljdl9ydW5f c2NoZWRfY2h1bmtfc2l6ZSIsIHRlbXBfb2Zmc2V0LAorCQkwLCByZXQsIHN5bWJvbF9hZGRyLCB0 ZW1wX3N5bV9hZGRyLCB0ZW1wX2FkZHIpOworICBERVJFRkVSRU5DRSAoY29udGV4dCwgTlVMTCwg c3ltYm9sX2FkZHIsIHRhcmdldF9zaXplcy5zaXplb2ZfaW50LCAxLAorCSAgICAgICByZXMsIHJl dCwgMCk7CisgICpydW5fc2NoZWRfY2h1bmtfc2l6ZSA9IHJlczsKKyAgcmV0dXJuIG9tcGRfcmNf b2s7Cit9CisKK29tcGRfcmNfdAorZ29tcGRfZ2V0X3J1bl9zY2hlZCAob21wZF90YXNrX2hhbmRs ZV90ICp0YXNrX2hhbmRsZSwKKwkJICAgICBvbXBkX3dvcmRfdCAqcnVuX3NjaGVkX3ZhcikKK3sK KyAgLyogZ29tcF90YXNrLT5nb21wX3Rhc2tfaWN2LnJ1bl9zY2hlZF92YXIuICAqLworICBpZiAo dGFza19oYW5kbGUgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19zdGFsZV9oYW5kbGU7Cisg IGlmIChydW5fc2NoZWRfdmFyID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfYmFkX2lucHV0 OworICBDSEVDSyAodGFza19oYW5kbGUtPmFoKTsKKworICBvbXBkX3dvcmRfdCByZXMgPSAwOwor ICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHRhc2tfaGFuZGxlLT50aDsKKyAgb21wZF93 b3JkX3QgdGVtcF9vZmZzZXQ7CisgIG9tcGRfYWRkcmVzc190IHRlbXBfc3ltX2FkZHI7CisgIG9t cGRfYWRkcl90IHRlbXBfYWRkcjsKKyAgb21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqY29u dGV4dCA9IHRhc2tfaGFuZGxlLT5haC0+Y29udGV4dDsKKyAgb21wZF9yY190IHJldDsKKyAgLyog Z29tcF90YXNrLT50YXNrX2ljdi4gICovCisgIEFDQ0VTU19WQUxVRSAoY29udGV4dCwgTlVMTCwg ImdvbXBkX2FjY2Vzc19nb21wX3Rhc2tfaWN2IiwgdGVtcF9vZmZzZXQsCisJCTEsIHJldCwgc3lt Ym9sX2FkZHIsIHRlbXBfc3ltX2FkZHIsIHRlbXBfYWRkcik7CisgIC8qIGdvbXBfdGFzay0+dGFz a19pY3YucnVuX3NjaGVkX3Zhci4gICovCisgIEFDQ0VTU19WQUxVRSAoY29udGV4dCwgTlVMTCwg ImdvbXBkX2FjY2Vzc19nb21wX3Rhc2tfaWN2X3J1bl9zY2hlZF92YXIiLAorCQl0ZW1wX29mZnNl dCwgMCwgcmV0LCBzeW1ib2xfYWRkciwgdGVtcF9zeW1fYWRkciwgdGVtcF9hZGRyKTsKKyAgREVS RUZFUkVOQ0UgKGNvbnRleHQsIE5VTEwsIHN5bWJvbF9hZGRyLCB0YXJnZXRfc2l6ZXMuc2l6ZW9m X2ludCwgMSwKKwkgICAgICAgcmVzLCByZXQsIDApOworICAqcnVuX3NjaGVkX3ZhciA9IHJlczsK KyAgcmV0dXJuIG9tcGRfcmNfb2s7Cit9CisKK29tcGRfcmNfdAorZ29tcGRfZ2V0X21heF9hY3Rp dmVfbGV2ZWxzIChvbXBkX3Rhc2tfaGFuZGxlX3QgKnRhc2tfaGFuZGxlLAorCQkJICAgICBvbXBk X3dvcmRfdCAqbWF4X2FjdGl2ZV9sZXZlbHNfdmFyKQoreworICAvKiBnb21wX3Rhc2stPmdvbXBf dGFza19pY3YubWF4X2FjdGl2ZV9sZXZlbHNfdmFyLiAgKi8KKyAgaWYgKHRhc2tfaGFuZGxlID09 IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfc3RhbGVfaGFuZGxlOworICBpZiAobWF4X2FjdGl2 ZV9sZXZlbHNfdmFyID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfYmFkX2lucHV0OworICBD SEVDSyAodGFza19oYW5kbGUtPmFoKTsKKworICBvbXBkX3dvcmRfdCByZXMgPSAwOworICBvbXBk X2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHRhc2tfaGFuZGxlLT50aDsKKyAgb21wZF93b3JkX3Qg dGVtcF9vZmZzZXQ7CisgIG9tcGRfYWRkcmVzc190IHRlbXBfc3ltX2FkZHI7CisgIG9tcGRfYWRk cl90IHRlbXBfYWRkcjsKKyAgb21wZF9hZGRyZXNzX3NwYWNlX2NvbnRleHRfdCAqY29udGV4dCA9 IHRhc2tfaGFuZGxlLT5haC0+Y29udGV4dDsKKyAgb21wZF9yY190IHJldDsKKyAgLyogZ29tcF90 YXNrLT50YXNrX2ljdi4gICovCisgIEFDQ0VTU19WQUxVRSAoY29udGV4dCwgTlVMTCwgImdvbXBk X2FjY2Vzc19nb21wX3Rhc2tfaWN2IiwgdGVtcF9vZmZzZXQsCisJCTEsIHJldCwgc3ltYm9sX2Fk ZHIsIHRlbXBfc3ltX2FkZHIsIHRlbXBfYWRkcik7CisgIC8qIGdvbXBfdGFzay0+dGFza19pY3Yu cnVuX3NjaGVkX3Zhci4gICovCisgIEFDQ0VTU19WQUxVRSAoY29udGV4dCwgTlVMTCwKKwkJImdv bXBkX2FjY2Vzc19nb21wX3Rhc2tfaWN2X21heF9hY3RpdmVfbGV2ZWxzX3ZhciIsIHRlbXBfb2Zm c2V0LAorCQkwLCByZXQsIHN5bWJvbF9hZGRyLCB0ZW1wX3N5bV9hZGRyLCB0ZW1wX2FkZHIpOwor ICBERVJFRkVSRU5DRSAoY29udGV4dCwgTlVMTCwgc3ltYm9sX2FkZHIsIHRhcmdldF9zaXplcy5z aXplb2ZfY2hhciwgMSwKKwkgICAgICAgcmVzLCByZXQsIDApOworICAqbWF4X2FjdGl2ZV9sZXZl bHNfdmFyID0gcmVzOworICByZXR1cm4gb21wZF9yY19vazsKK30KKworb21wZF9yY190Citnb21w ZF9nZXRfcHJvY19iaW5kIChvbXBkX3Rhc2tfaGFuZGxlX3QgKnRhc2tfaGFuZGxlLCBjb25zdCBj aGFyICoqYmluZF92YXIpCit7CisgIC8qIGdvbXBfdGFzay0+Z29tcF90YXNrX2ljdi5iaW5kX3Zh ci4gICovCisgIGlmICh0YXNrX2hhbmRsZSA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0 YWxlX2hhbmRsZTsKKyAgaWYgKGJpbmRfdmFyID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNf YmFkX2lucHV0OworICBDSEVDSyAodGFza19oYW5kbGUtPmFoKTsKKworICBvbXBkX3dvcmRfdCBy ZXMgPSAwOworICBvbXBkX2FkZHJlc3NfdCBzeW1ib2xfYWRkciA9IHRhc2tfaGFuZGxlLT50aDsK KyAgb21wZF93b3JkX3QgdGVtcF9vZmZzZXQ7CisgIG9tcGRfYWRkcmVzc190IHRlbXBfc3ltX2Fk ZHI7CisgIG9tcGRfYWRkcl90IHRlbXBfYWRkcjsKKyAgb21wZF9hZGRyZXNzX3NwYWNlX2NvbnRl eHRfdCAqY29udGV4dCA9IHRhc2tfaGFuZGxlLT5haC0+Y29udGV4dDsKKyAgb21wZF9yY190IHJl dDsKKyAgLyogZ29tcF90YXNrLT50YXNrX2ljdi4gICovCisgIEFDQ0VTU19WQUxVRSAoY29udGV4 dCwgTlVMTCwgImdvbXBkX2FjY2Vzc19nb21wX3Rhc2tfaWN2IiwgdGVtcF9vZmZzZXQsCisJCTEs IHJldCwgc3ltYm9sX2FkZHIsIHRlbXBfc3ltX2FkZHIsIHRlbXBfYWRkcik7CisgIC8qIGdvbXBf dGFzay0+dGFza19pY3YuYmluZF92YXIuICAqLworICBBQ0NFU1NfVkFMVUUgKGNvbnRleHQsIE5V TEwsICJnb21wZF9hY2Nlc3NfZ29tcF90YXNrX2ljdl9iaW5kX3ZhciIsCisJCXRlbXBfb2Zmc2V0 LCAwLCByZXQsIHN5bWJvbF9hZGRyLCB0ZW1wX3N5bV9hZGRyLCB0ZW1wX2FkZHIpOworICBERVJF RkVSRU5DRSAoY29udGV4dCwgTlVMTCwgc3ltYm9sX2FkZHIsIHRhcmdldF9zaXplcy5zaXplb2Zf Y2hhciwgMSwKKwkgICAgICAgcmVzLCByZXQsIDApOworICBzdGF0aWMgY29uc3QgY2hhciAqdGVt cF9zdHJpbmcgPSAidW5kZWZpbmVkIjsKKyAgaWYgKHJlcyA9PSAwKQorICAgIHRlbXBfc3RyaW5n ID0gIkZBTFNFIjsKKyAgZWxzZSBpZiAocmVzID09IDEpCisgICAgdGVtcF9zdHJpbmcgPSAiVFJV RSI7CisgIGVsc2UgaWYgKHJlcyA9PSAyKQorICAgIHRlbXBfc3RyaW5nID0gIlBSSU1BUlkiOwor ICBlbHNlIGlmIChyZXMgPT0gMykKKyAgICB0ZW1wX3N0cmluZyA9ICJDTE9TRSI7CisgIGVsc2Ug aWYgKHJlcyA9PSA0KQorICAgIHRlbXBfc3RyaW5nID0gIlNQUkVBRCI7CisgIGVsc2UKKyAgICBy ZXR1cm4gb21wZF9yY19lcnJvcjsKKyAgKmJpbmRfdmFyID0gdGVtcF9zdHJpbmc7CisgIHJldHVy biBvbXBkX3JjX29rOworfQorCitvbXBkX3JjX3QKK2dvbXBkX2lzX2ZpbmFsIChvbXBkX3Rhc2tf aGFuZGxlX3QgKnRhc2tfaGFuZGxlLCBvbXBkX3dvcmRfdCAqZmluYWxfdGFzaykKK3sKKyAgLyog Z29tcF90YXNrLT5maW5hbF90YXNrLiAgKi8KKyAgaWYgKHRhc2tfaGFuZGxlID09IE5VTEwpCisg ICAgcmV0dXJuIG9tcGRfcmNfc3RhbGVfaGFuZGxlOworICBpZiAoZmluYWxfdGFzayA9PSBOVUxM KQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1dDsKKyAgQ0hFQ0sgKHRhc2tfaGFuZGxlLT5h aCk7CisKKyAgb21wZF93b3JkX3QgcmVzID0gMDsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9sX2Fk ZHIgPSB0YXNrX2hhbmRsZS0+dGg7CisgIG9tcGRfd29yZF90IHRlbXBfb2Zmc2V0OworICBvbXBk X2FkZHJlc3NfdCB0ZW1wX3N5bV9hZGRyOworICBvbXBkX2FkZHJfdCB0ZW1wX2FkZHI7CisgIG9t cGRfYWRkcmVzc19zcGFjZV9jb250ZXh0X3QgKmNvbnRleHQgPSB0YXNrX2hhbmRsZS0+YWgtPmNv bnRleHQ7CisgIG9tcGRfcmNfdCByZXQ7CisgIC8qIGdvbXBfdGFzay0+ZmluYWxfdGFzay4gICov CisgIEFDQ0VTU19WQUxVRSAoY29udGV4dCwgTlVMTCwgImdvbXBkX2FjY2Vzc19nb21wX3Rhc2tf ZmluYWxfdGFzayIsIHRlbXBfb2Zmc2V0LAorCQkxLCByZXQsIHN5bWJvbF9hZGRyLCB0ZW1wX3N5 bV9hZGRyLCB0ZW1wX2FkZHIpOworICBERVJFRkVSRU5DRSAoY29udGV4dCwgTlVMTCwgc3ltYm9s X2FkZHIsIHRhcmdldF9zaXplcy5zaXplb2ZfY2hhciwgMSwKKwkgICAgICAgcmVzLCByZXQsIDAp OworICAqZmluYWxfdGFzayA9IHJlczsKKyAgcmV0dXJuIG9tcGRfcmNfb2s7Cit9CisKK29tcGRf cmNfdAorZ29tcGRfaXNfaW1wbGljaXQgKG9tcGRfdGFza19oYW5kbGVfdCAqdGFza19oYW5kbGUs IG9tcGRfd29yZF90ICp0YXNrX2tpbmQpCit7CisgIC8qIGdvbXBfdGFzay0+a2luZC4gICovCisg IGlmICh0YXNrX2hhbmRsZSA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX3N0YWxlX2hhbmRs ZTsKKyAgaWYgKHRhc2tfa2luZCA9PSBOVUxMKQorICAgIHJldHVybiBvbXBkX3JjX2JhZF9pbnB1 dDsKKyAgQ0hFQ0sgKHRhc2tfaGFuZGxlLT5haCk7CisKKyAgb21wZF93b3JkX3QgcmVzID0gLTE7 CisgIG9tcGRfYWRkcmVzc190IHN5bWJvbF9hZGRyID0gdGFza19oYW5kbGUtPnRoOworICBvbXBk X3dvcmRfdCB0ZW1wX29mZnNldDsKKyAgb21wZF9hZGRyZXNzX3QgdGVtcF9zeW1fYWRkcjsKKyAg b21wZF9hZGRyX3QgdGVtcF9hZGRyOworICBvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICpj b250ZXh0ID0gdGFza19oYW5kbGUtPmFoLT5jb250ZXh0OworICBvbXBkX3JjX3QgcmV0OworICAv KiBnb21wX3Rhc2stPmtpbmQuICAqLworICBBQ0NFU1NfVkFMVUUgKGNvbnRleHQsIE5VTEwsICJn b21wZF9hY2Nlc3NfZ29tcF90YXNrX2tpbmQiLCB0ZW1wX29mZnNldCwgMSwKKwkJcmV0LCBzeW1i b2xfYWRkciwgdGVtcF9zeW1fYWRkciwgdGVtcF9hZGRyKTsKKyAgREVSRUZFUkVOQ0UgKGNvbnRl eHQsIE5VTEwsIHN5bWJvbF9hZGRyLCB0YXJnZXRfc2l6ZXMuc2l6ZW9mX2ludCwgMSwgcmVzLAor CSAgICAgICByZXQsIDApOworICAvKiBpZiB0YXNrIGlzIGltcGxpY2l0LCB0aGVuIHJlcyA9IDAu ICAqLworICByZXMgPSByZXMgPyAtMTogMDsKKyAgKnRhc2tfa2luZCA9IHJlczsKKyAgcmV0dXJu IG9tcGRfcmNfb2s7Cit9CisvKiBFbmQgb2YgdGFzayBJQ1ZzLiAgKi8KKworLyogR2V0IHBlciBw YXJhbGxlbCBoYW5kbGUgSUNWcy4gICovCitvbXBkX3JjX3QKK2dvbXBkX2dldF90ZWFtX3NpemUg KG9tcGRfcGFyYWxsZWxfaGFuZGxlX3QgKnBhcmFsbGVsX2hhbmRsZSwKKwkJICAgICBvbXBkX3dv cmRfdCAqbnRocmVhZHMpCit7CisgIC8qIGdvbXBfdGVhbS0+bnRocmVhZHMuICAqLworICBpZiAo cGFyYWxsZWxfaGFuZGxlID09IE5VTEwpCisgICAgcmV0dXJuIG9tcGRfcmNfc3RhbGVfaGFuZGxl OworICBpZiAobnRocmVhZHMgPT0gTlVMTCkKKyAgICByZXR1cm4gb21wZF9yY19iYWRfaW5wdXQ7 CisgIENIRUNLIChwYXJhbGxlbF9oYW5kbGUtPmFoKTsKKworICBvbXBkX3dvcmRfdCByZXMgPSAt MTsKKyAgb21wZF9hZGRyZXNzX3Qgc3ltYm9sX2FkZHIgPSBwYXJhbGxlbF9oYW5kbGUtPnRoOwor ICBvbXBkX3dvcmRfdCB0ZW1wX29mZnNldDsKKyAgb21wZF9hZGRyZXNzX3QgdGVtcF9zeW1fYWRk cjsKKyAgb21wZF9hZGRyX3QgdGVtcF9hZGRyOworICBvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4 dF90ICpjb250ZXh0ID0gcGFyYWxsZWxfaGFuZGxlLT5haC0+Y29udGV4dDsKKyAgb21wZF9yY190 IHJldDsKKyAgLyogZ29tcF90ZWFtLT5udGhyZWFkcy4gICovCisgIEFDQ0VTU19WQUxVRSAoY29u dGV4dCwgTlVMTCwgImdvbXBkX2FjY2Vzc19nb21wX3RlYW1fbnRocmVhZHMiLCB0ZW1wX29mZnNl dCwKKwkJMSwgcmV0LCBzeW1ib2xfYWRkciwgdGVtcF9zeW1fYWRkciwgdGVtcF9hZGRyKTsKKyAg REVSRUZFUkVOQ0UgKGNvbnRleHQsIE5VTEwsIHN5bWJvbF9hZGRyLCB0YXJnZXRfc2l6ZXMuc2l6 ZW9mX2ludCwgMSwKKwkgICAgICAgcmVzLCByZXQsIDApOworICAqbnRocmVhZHMgPSByZXM7Cisg IHJldHVybiBvbXBkX3JjX29rOworfQorLyogRW5kIG9mIHBhcmFsbGVsIGhhbmRsZSBJQ1ZzLiAg Ki8KIAogb21wZF9yY190CiBnb21wZF9nZXRfc2l6ZXMgKG9tcGRfYWRkcmVzc19zcGFjZV9jb250 ZXh0X3QgKmNvbnRleHQpCmRpZmYgLS1naXQgYS9saWJnb21wL29tcGQtaGVscGVyLmggYi9saWJn b21wL29tcGQtaGVscGVyLmgKaW5kZXggMjI1MTZhZjAxMmEuLmRiM2NhZDNkYjI1IDEwMDY0NAot LS0gYS9saWJnb21wL29tcGQtaGVscGVyLmgKKysrIGIvbGliZ29tcC9vbXBkLWhlbHBlci5oCkBA IC05MCw2ICs5MCwyOSBAQCB0eXBlZGVmIHN0cnVjdCBfb21wZF90YXNrX2hhbmRsZQogICAgIENI RUNLX1JFVCAocmV0KTsgXAogICB9IHdoaWxlICgwKQogCisjZGVmaW5lIERFUkVGRVJFTkNFKGNv bnRleHQsIHRocmVhZF9jb250ZXh0LCBzeW1ib2xfYWRkciwgc2l6ZSwgY291bnQsXAorICBidWZm LCByZXQsIGlzX3B0cikgXAorICBkbyB7XAorICAgIHJldCA9IGNhbGxiYWNrcy0+cmVhZF9tZW1v cnkgKGNvbnRleHQsIHRocmVhZF9jb250ZXh0LCAmc3ltYm9sX2FkZHIsIFwKKwkJCQkgIHNpemUs ICZidWZmKTsgXAorICAgIENIRUNLX1JFVCAocmV0KTsgXAorICAgIHJldCA9IGNhbGxiYWNrcy0+ ZGV2aWNlX3RvX2hvc3QgKGNvbnRleHQsICZidWZmLCBzaXplLCBjb3VudCwgJmJ1ZmYpOyBcCisg ICAgQ0hFQ0tfUkVUIChyZXQpOyBcCisgICAgaWYgKGlzX3B0cikgXAorICAgICAgc3ltYm9sX2Fk ZHIuYWRkcmVzcyA9IGJ1ZmY7IFwKKyAgfSB3aGlsZSAoMCk7CisKKyNkZWZpbmUgQUNDRVNTX1ZB TFVFKGNvbnRleHQsIHRocmVhZF9jb250ZXh0LCBuYW1lLCB0ZW1wX29mZnNldCwgXAorICBhY2Nl c3NfcG9pbnRlciwgcmV0LCBzeW1ib2xfYWRkciwgdGVtcF9zeW1fYWRkciwgdGVtcF9hZGRyKSBc CisgIGRvIHsgXAorICAgIEdFVF9WQUxVRSAoY29udGV4dCwgdGhyZWFkX2NvbnRleHQsIG5hbWUs IHRlbXBfb2Zmc2V0LCB0ZW1wX29mZnNldCwgXAorCSAgICAgICB0YXJnZXRfc2l6ZXMuc2l6ZW9m X3Nob3J0LCAxLCByZXQsIHRlbXBfc3ltX2FkZHIpOyBcCisgICAgc3ltYm9sX2FkZHIuYWRkcmVz cyArPSB0ZW1wX29mZnNldDsgXAorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYWNjZXNzX3BvaW50 ZXI7IGkrKykgXAorICAgICAgREVSRUZFUkVOQ0UgKGNvbnRleHQsIHRocmVhZF9jb250ZXh0LCBz eW1ib2xfYWRkciwgXAorCQkgICB0YXJnZXRfc2l6ZXMuc2l6ZW9mX3BvaW50ZXIsIDEsIHRlbXBf YWRkciwgcmV0LCAxKTsgXAorICB9IHdoaWxlICgwKTsKKwogI2RlZmluZSBDSEVDSyhhaCkgXAog ICBkbyB7ICAgXAogICAgIGlmIChhaCA9PSBOVUxMIHx8IGFoLT5jb250ZXh0ID09IE5VTEwpIFwK QEAgLTE1OCw3ICsxODEsNyBAQCBvbXBkX3JjX3QgZ29tcGRfZ2V0X3J1bl9zY2hlZF9jaHVua19z aXplIChvbXBkX3Rhc2tfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7CiBvbXBkX3JjX3QgZ29t cGRfZ2V0X2RlZmF1bHRfZGV2aWNlIChvbXBkX3RocmVhZF9oYW5kbGVfdCAqLCBvbXBkX3dvcmRf dCAqKTsKIG9tcGRfcmNfdCBnb21wZF9nZXRfZHluYW1pYyAob21wZF90aHJlYWRfaGFuZGxlX3Qg Kiwgb21wZF93b3JkX3QgKik7CiBvbXBkX3JjX3QgZ29tcGRfZ2V0X21heF9hY3RpdmVfbGV2ZWxz IChvbXBkX3Rhc2tfaGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7Ci1vbXBkX3JjX3QgZ29tcGRf Z2V0X3Byb2NfYmluZCAob21wZF90YXNrX2hhbmRsZV90ICosIG9tcGRfd29yZF90ICopOworb21w ZF9yY190IGdvbXBkX2dldF9wcm9jX2JpbmQgKG9tcGRfdGFza19oYW5kbGVfdCAqLCBjb25zdCBj aGFyICoqKTsKIG9tcGRfcmNfdCBnb21wZF9pc19maW5hbCAob21wZF90YXNrX2hhbmRsZV90ICos IG9tcGRfd29yZF90ICopOwogb21wZF9yY190IGdvbXBkX2lzX2ltcGxpY2l0IChvbXBkX3Rhc2tf aGFuZGxlX3QgKiwgb21wZF93b3JkX3QgKik7CiBvbXBkX3JjX3QgZ29tcGRfZ2V0X3RlYW1fc2l6 ZSAob21wZF9wYXJhbGxlbF9oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKQEAgLTE2Niw3ICsx ODksNyBAQCBvbXBkX3JjX3QgZ29tcGRfZ2V0X3RlYW1fc2l6ZSAob21wZF9wYXJhbGxlbF9oYW5k bGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKIC8qIEdldCBHbG9iYWwgSUNWcy4gICovCiBvbXBkX3Jj X3QgZ29tcGRfZ2V0X2NhbmNlbGxhdGlvbiAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICos IG9tcGRfd29yZF90ICopOwogb21wZF9yY190IGdvbXBkX2dldF9tYXhfdGFza19wcmlvcml0eSAo b21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosCi0gIAkJCQkgICAgICAgb21wZF93b3JkX3Qg Kik7CisJCQkJICAgICAgIG9tcGRfd29yZF90ICopOwogb21wZF9yY190IGdvbXBkX2dldF9zdGFj a3NpemUgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBvbXBkX3dvcmRfdCAqKTsKIG9t cGRfcmNfdCBnb21wZF9nZXRfZGVidWcgKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqLCBv bXBkX3dvcmRfdCAqKTsKIG9tcGRfcmNfdCBnb21wZF9nZXRfZGlzcGxheV9hZmZpbml0eSAob21w ZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosCkBAIC0xODYsOCArMjA5LDggQEAgb21wZF9yY190 IGdvbXBkX2dldF90aHJvdHRsZWRfc3Bpbl9jb3VudCAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRs ZV90ICosCiAJCQkJCSAgb21wZF93b3JkX3QgKik7CiBvbXBkX3JjX3QgZ29tcGRfZ2V0X21hbmFn ZWRfdGhyZWFkcyAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosCiAJCQkJICAgICBvbXBk X3dvcmRfdCAqKTsKLW9tcGRfcmNfdCBnb21wZF9zdHJpbmdpemVfZ29tcGRfZW5hYmxlZCAob21w ZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiopOworb21wZF9yY190IGdvbXBkX2dldF9nb21wZF9l bmFibGVkIChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKiwKKwkJCQkgICBjb25zdCBjaGFy ICoqKTsKIC8qRW5kIG9mIEdsb2JhbCBJQ1ZzLiAgKi8KIAogCmRpZmYgLS1naXQgYS9saWJnb21w L29tcGQtaWN2LmMgYi9saWJnb21wL29tcGQtaWN2LmMKaW5kZXggN2YxOThkMTYzOGQuLjc0Yzhm YmYxMjRhIDEwMDY0NAotLS0gYS9saWJnb21wL29tcGQtaWN2LmMKKysrIGIvbGliZ29tcC9vbXBk LWljdi5jCkBAIC05Nyw3ICs5NywxMyBAQCBvbXBkX2dldF9pY3ZfZnJvbV9zY29wZSAodm9pZCAq aGFuZGxlLCBvbXBkX3Njb3BlX3Qgc2NvcGUsIG9tcGRfaWN2X2lkX3QgaWN2X2lkLAogICAgIH0K ICAgLyogTm8gb2ZmbG9hZGluZyBzdXBwb3J0IGZvciBub3cuICAqLwogICBvbXBkX2FkZHJlc3Nf c3BhY2VfaGFuZGxlX3QgKmFzaGFuZGxlCi0gICAgPSAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRs ZV90ICopaGFuZGxlOworICAgID0gKG9tcGRfYWRkcmVzc19zcGFjZV9oYW5kbGVfdCAqKSBoYW5k bGU7CisgIG9tcGRfdGhyZWFkX2hhbmRsZV90ICp0aHJlYWRfaGFuZGxlCisgICAgPSAob21wZF90 aHJlYWRfaGFuZGxlX3QgKikgaGFuZGxlOworICBvbXBkX3Rhc2tfaGFuZGxlX3QgKnRhc2tfaGFu ZGxlCisgICAgPSAob21wZF90YXNrX2hhbmRsZV90ICopIGhhbmRsZTsKKyAgb21wZF9wYXJhbGxl bF9oYW5kbGVfdCAqcGFyYWxsZWxfaGFuZGxlCisgICAgPSAob21wZF9wYXJhbGxlbF9oYW5kbGVf dCAqKSBoYW5kbGU7CiAgIGlmIChkZXZpY2UgPT0gT01QRF9ERVZJQ0VfS0lORF9IT1NUKQogICAg IHsKICAgICAgIHN3aXRjaCAoaWN2X2lkKQpAQCAtMTMwLDYgKzEzNiwyNiBAQCBvbXBkX2dldF9p Y3ZfZnJvbV9zY29wZSAodm9pZCAqaGFuZGxlLCBvbXBkX3Njb3BlX3Qgc2NvcGUsIG9tcGRfaWN2 X2lkX3QgaWN2X2lkLAogCSAgICByZXR1cm4gZ29tcGRfZ2V0X3Rocm90dGxlZF9zcGluX2NvdW50 IChhc2hhbmRsZSwgaWN2X3ZhbHVlKTsKIAkgIGNhc2UgZ29tcGRfaWN2X21hbmFnZWRfdGhyZWFk c192YXI6CiAJICAgIHJldHVybiBnb21wZF9nZXRfbWFuYWdlZF90aHJlYWRzIChhc2hhbmRsZSwg aWN2X3ZhbHVlKTsKKwkgIGNhc2UgZ29tcGRfaWN2X250aHJlYWRzX3ZhcjoKKwkgICAgcmV0dXJu IGdvbXBkX2dldF9udGhyZWFkICh0aHJlYWRfaGFuZGxlLCBpY3ZfdmFsdWUpOworCSAgY2FzZSBn b21wZF9pY3ZfZGVmYXVsdF9kZXZpY2VfdmFyOgorCSAgICByZXR1cm4gZ29tcGRfZ2V0X2RlZmF1 bHRfZGV2aWNlICh0aHJlYWRfaGFuZGxlLCBpY3ZfdmFsdWUpOworCSAgY2FzZSBnb21wZF9pY3Zf ZHluX3ZhcjoKKwkgICAgcmV0dXJuIGdvbXBkX2dldF9keW5hbWljICh0aHJlYWRfaGFuZGxlLCBp Y3ZfdmFsdWUpOworCSAgY2FzZSBnb21wZF9pY3ZfdGhyZWFkX2xpbWl0X3ZhcjoKKwkgICAgcmV0 dXJuIGdvbXBkX2dldF90aHJlYWRfbGltaXQgKHRhc2tfaGFuZGxlLCBpY3ZfdmFsdWUpOworCSAg Y2FzZSBnb21wZF9pY3ZfcnVuX3NjaGVkX2NodW5rX3NpemU6CisJICAgIHJldHVybiBnb21wZF9n ZXRfcnVuX3NjaGVkX2NodW5rX3NpemUgKHRhc2tfaGFuZGxlLCBpY3ZfdmFsdWUpOworCSAgY2Fz ZSBnb21wZF9pY3ZfcnVuX3NjaGVkX3ZhcjoKKwkgICAgcmV0dXJuIGdvbXBkX2dldF9ydW5fc2No ZWQgKHRhc2tfaGFuZGxlLCBpY3ZfdmFsdWUpOworCSAgY2FzZSBnb21wZF9pY3ZfbWF4X2FjdGl2 ZV9sZXZlbHNfdmFyOgorCSAgICByZXR1cm4gZ29tcGRfZ2V0X21heF9hY3RpdmVfbGV2ZWxzICh0 YXNrX2hhbmRsZSwgaWN2X3ZhbHVlKTsKKwkgIGNhc2UgZ29tcGRfaWN2X2ZpbmFsX3Rhc2tfdmFy OgorCSAgICByZXR1cm4gZ29tcGRfaXNfZmluYWwgKHRhc2tfaGFuZGxlLCBpY3ZfdmFsdWUpOwor CSAgY2FzZSBnb21wZF9pY3ZfaW1wbGljaXRfdGFza192YXI6CisJICAgIHJldHVybiBnb21wZF9p c19pbXBsaWNpdCAodGFza19oYW5kbGUsIGljdl92YWx1ZSk7CisJICBjYXNlIGdvbXBkX2ljdl90 ZWFtX3NpemVfdmFyOgorCSAgICByZXR1cm4gZ29tcGRfZ2V0X3RlYW1fc2l6ZSAocGFyYWxsZWxf aGFuZGxlLCBpY3ZfdmFsdWUpOwogCSAgZGVmYXVsdDoKIAkgICAgcmV0dXJuIG9tcGRfcmNfdW5z dXBwb3J0ZWQ7CiAJfQpAQCAtMTY3LDcgKzE5Myw5IEBAIG9tcGRfZ2V0X2ljdl9zdHJpbmdfZnJv bV9zY29wZSAodm9pZCAqaGFuZGxlLCBvbXBkX3Njb3BlX3Qgc2NvcGUsCiAgICAgfQogICAvKiBO byBvZmZsb2FkaW5nIHN1cHBvcnQgZm9yIG5vdy4gICovCiAgIG9tcGRfYWRkcmVzc19zcGFjZV9o YW5kbGVfdCAqYXNoYW5kbGUKLSAgICA9IChvbXBkX2FkZHJlc3Nfc3BhY2VfaGFuZGxlX3QgKilo YW5kbGU7CisgICAgPSAob21wZF9hZGRyZXNzX3NwYWNlX2hhbmRsZV90ICopIGhhbmRsZTsKKyAg b21wZF90YXNrX2hhbmRsZV90ICp0YXNrX2hhbmRsZQorICAgID0gKG9tcGRfdGFza19oYW5kbGVf dCAqKSBoYW5kbGU7CiAgIGlmIChkZXZpY2UgPT0gT01QRF9ERVZJQ0VfS0lORF9IT1NUKQogICAg IHsKICAgICAgIHN3aXRjaCAoaWN2X2lkKQpAQCAtMTc1LDcgKzIwMyw5IEBAIG9tcGRfZ2V0X2lj dl9zdHJpbmdfZnJvbV9zY29wZSAodm9pZCAqaGFuZGxlLCBvbXBkX3Njb3BlX3Qgc2NvcGUsCiAJ ICBjYXNlIGdvbXBkX2ljdl9hZmZpbml0eV9mb3JtYXRfdmFyOgogCSAgICByZXR1cm4gZ29tcGRf Z2V0X2FmZmluaXR5X2Zvcm1hdCAoYXNoYW5kbGUsIGljdl92YWx1ZSk7CiAJICBjYXNlIGdvbXBk X2ljdl9vbXBkX3N0YXRlOgotCSAgICByZXR1cm4gZ29tcGRfc3RyaW5naXplX2dvbXBkX2VuYWJs ZWQgKGFzaGFuZGxlLCBpY3ZfdmFsdWUpOworCSAgICByZXR1cm4gZ29tcGRfZ2V0X2dvbXBkX2Vu YWJsZWQgKGFzaGFuZGxlLCBpY3ZfdmFsdWUpOworCSAgY2FzZSBnb21wZF9pY3ZfYmluZF92YXI6 CisJICAgIHJldHVybiBnb21wZF9nZXRfcHJvY19iaW5kICh0YXNrX2hhbmRsZSwgaWN2X3ZhbHVl KTsKIAkgIGRlZmF1bHQ6CiAJICAgIHJldHVybiBvbXBkX3JjX3Vuc3VwcG9ydGVkOwogCX0KZGlm ZiAtLWdpdCBhL2xpYmdvbXAvb21wZC1pbml0LmMgYi9saWJnb21wL29tcGQtaW5pdC5jCmluZGV4 IDUyODY2ZTRhOTlkLi4xMjY3OWRmMDU2NSAxMDA2NDQKLS0tIGEvbGliZ29tcC9vbXBkLWluaXQu YworKysgYi9saWJnb21wL29tcGQtaW5pdC5jCkBAIC04OSw3ICs4OSw3IEBAIG9tcGRfcHJvY2Vz c19pbml0aWFsaXplIChvbXBkX2FkZHJlc3Nfc3BhY2VfY29udGV4dF90ICpjb250ZXh0LAogICAv KiBOYWl2ZSB3YXkgdG8gcmVhZCBmcm9tIG1lbW9yeS4gICovCiAgIG9tcGRfYWRkcmVzc190IHN5 bWJvbF9hZGRyID0ge09NUERfU0VHTUVOVF9VTlNQRUNJRklFRCwgMH07CiAgIEdFVF9WQUxVRSAo Y29udGV4dCwgTlVMTCwgImdvbXBkX3N0YXRlIiwgZ29tcGRfc3RhdGUsIGdvbXBkX3N0YXRlLAot CSAgICAgdGFyZ2V0X3NpemVzLnNpemVvZl9sb25nX2xvbmcsIDEsIHJldCwgc3ltYm9sX2FkZHIp OworCSAgICAgdGFyZ2V0X3NpemVzLnNpemVvZl9zaG9ydCwgMSwgcmV0LCBzeW1ib2xfYWRkcik7 CiAKICAgcmV0ID0gY2FsbGJhY2tzLT5hbGxvY19tZW1vcnkgKHNpemVvZiAob21wZF9hZGRyZXNz X3NwYWNlX2hhbmRsZV90KSwKIAkJCQkgKHZvaWQgKiopIChoYW5kbGUpKTsKZGlmZiAtLWdpdCBh L2xpYmdvbXAvb21wZC1zdXBwb3J0LmMgYi9saWJnb21wL29tcGQtc3VwcG9ydC5jCmluZGV4IGQ4 YTcxNzRiMmYzLi43YzMzZTYxOGQ0MiAxMDA2NDQKLS0tIGEvbGliZ29tcC9vbXBkLXN1cHBvcnQu YworKysgYi9saWJnb21wL29tcGQtc3VwcG9ydC5jCkBAIC0yMCw0OCArMjAsNTEgQEAKIAogI2lu Y2x1ZGUgIm9tcGQtc3VwcG9ydC5oIgogCi0jZGVmaW5lIGdvbXBkX2RlY2xhcmVfYWNjZXNzKHQs IG0pIF9fVUlOVDY0X1RZUEVfXyBnb21wZF9hY2Nlc3NfIyN0IyNfIyNtOwotICBHT01QRF9GT1JF QUNIX0FDQ0VTUyAoZ29tcGRfZGVjbGFyZV9hY2Nlc3MpCi0jdW5kZWYgZ29tcGRfZGVjbGFyZV9h Y2Nlc3MKLQotI2RlZmluZSBnb21wZF9kZWNsYXJlX3NpemVvZl9tZW1iZXJzKHQsIG0pIFwKLSAg X19VSU5UNjRfVFlQRV9fIGdvbXBkX3NpemVvZl8jI3QjI18jI207Ci0gIEdPTVBEX0ZPUkVBQ0hf QUNDRVNTIChnb21wZF9kZWNsYXJlX3NpemVvZl9tZW1iZXJzKQotI3VuZGVmIGdvbXBkX2RlY2xh cmVfc2l6ZW9mX21lbWJlcnMKLQotI2RlZmluZSBnb21wZF9kZWNsYXJlX3NpemVzKHQpIF9fVUlO VDY0X1RZUEVfXyBnb21wZF9zaXplb2ZfIyN0OwotICBHT01QRF9TSVpFUyAoZ29tcGRfZGVjbGFy ZV9zaXplcykKLSN1bmRlZiBnb21wZF9kZWNsYXJlX3NpemVzCisjaWZkZWYgX19FTEZfXworI2Rl ZmluZSBPTVBEX1NFQ1RJT04gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCJPTVBEIikpKQorI2Vs c2UKKyNkZWZpbmUgT01QRF9TRUNUSU9OCisjZW5kaWYKKwordW5zaWduZWQgc2hvcnQgZ29tcGRf YWNjZXNzX2dvbXBfdGhyZWFkX2hhbmRsZTsKK3Vuc2lnbmVkIHNob3J0IGdvbXBkX3NpemVvZl9n b21wX3RocmVhZF9oYW5kbGU7CisKKy8qIEdldCBvZmZzZXQgb2YgdGhlIG1lbWJlciBtIGluIHN0 cnVjdCB0LiAgKi8KKyNkZWZpbmUgZ29tcGRfZ2V0X29mZnNldCh0LCBtKSBcCisgIGNvbnN0IHVu c2lnbmVkIHNob3J0IGdvbXBkX2FjY2Vzc18jI3QjI18jI20gX19hdHRyaWJ1dGVfXyAoKHVzZWQp KSBcCisgICAgT01QRF9TRUNUSU9OIFwKKyAgICAgID0gKHVuc2lnbmVkIHNob3J0KSBvZmZzZXRv ZiAoc3RydWN0IHQsIG0pOworICBHT01QRF9GT1JFQUNIX0FDQ0VTUyAoZ29tcGRfZ2V0X29mZnNl dCkKKyNpZmRlZiBHT01QX05FRURTX1RIUkVBRF9IQU5ETEUKKyAgZ29tcGRfYWNjZXNzX2dvbXBf dGhyZWFkX2hhbmRsZSBfX2F0dHJpYnV0ZV9fICgodXNlZCkpIE9NUERfU0VDVElPTgorICAgID0g KHVuc2lnbmVkIHNob3J0KSBvZmZzZXRvZiAoZ29tcF90aHJlYWQsIGhhbmRsZSk7CisjZW5kaWYK KyN1bmRlZiBnb21wZF9nZXRfb2Zmc2V0CisvKiBHZXQgc2l6ZSBvZiBtZW1iZXIgbSBpbiBzdHJ1 Y3QgdC4gICovCisjZGVmaW5lIGdvbXBkX2dldF9zaXplb2ZfbWVtYmVyKHQsIG0pIFwKKyAgY29u c3QgdW5zaWduZWQgc2hvcnQgZ29tcGRfc2l6ZW9mXyMjdCMjXyMjbSBfX2F0dHJpYnV0ZV9fICgo dXNlZCkpIFwKKyAgICBPTVBEX1NFQ1RJT04gXAorICAgICAgPSBzaXplb2YgKCgoc3RydWN0IHQg KikgTlVMTCktPm0pOworICBHT01QRF9GT1JFQUNIX0FDQ0VTUyAoZ29tcGRfZ2V0X3NpemVvZl9t ZW1iZXIpCisjaWZkZWYgR09NUF9ORUVEU19USFJFQURfSEFORExFCisgIGdvbXBkX3NpemVvZl9n b21wX3RocmVhZF9oYW5kbGUgX19hdHRyaWJ1dGVfXyAoKHVzZWQpKSBPTVBEX1NFQ1RJT04KKyAg ICA9IHNpemVvZiAoKChzdHJ1Y3QgZ29tcF90aHJlYWQgKikgTlVMTCktPmhhbmRsZSk7CisjZW5k aWYKKyN1bmRlZiBnb21wZF9nZXRfc2l6ZW9mX21lbWJlcgorLyogR2V0IHNpemUgb2Ygc3RydWN0 IHQuICAqLworI2RlZmluZSBnb21wZF9nZXRfc2l6ZSh0KSBcCisgIGNvbnN0IHVuc2lnbmVkIHNo b3J0IGdvbXBkX3NpemVvZl8jI3QjI18gX19hdHRyaWJ1dGVfXyAoKHVzZWQpKSBcCisgICAgT01Q RF9TRUNUSU9OIFwKKyAgICAgID0gc2l6ZW9mIChzdHJ1Y3QgdCk7CisgIEdPTVBEX1NJWkVTIChn b21wZF9nZXRfc2l6ZSkKKyN1bmRlZiBnb21wZF9nZXRfc2l6ZQogCiBjb25zdCBjaGFyICoqb21w ZF9kbGxfbG9jYXRpb25zID0gTlVMTDsKLV9fVUlOVDY0X1RZUEVfXyBnb21wZF9zdGF0ZTsKK3Vu c2lnbmVkIHNob3J0IGdvbXBkX3N0YXRlOwogCiB2b2lkCiBnb21wZF9sb2FkICh2b2lkKQogewot ICAvKiBHZXQgdGhlIG9mZnNldCBvZiB0aGUgc3RydWN0IG1lbWJlcnMuICAqLwotICAjZGVmaW5l IGdvbXBkX2luaXRfYWNjZXNzKHQsIG0pICBcCi0gICAgZ29tcGRfYWNjZXNzXyMjdCMjXyMjbSA9 IChfX1VJTlQ2NF9UWVBFX18pICYgKCgoc3RydWN0IHQgKikgTlVMTCktPm0pOwotICAgIEdPTVBE X0ZPUkVBQ0hfQUNDRVNTIChnb21wZF9pbml0X2FjY2Vzcyk7Ci0gICN1bmRlZiBnb21wZF9pbml0 X2FjY2VzcwotCi0gIC8qIEdldCBzaXplb2YgbWVtYmVycy4gICovCi0KLSAgI2RlZmluZSBnb21w ZF9pbml0X3NpemVvZl9tZW1iZXJzKHQsIG0pIFwKLSAgICBnb21wZF9zaXplb2ZfIyN0IyNfIyNt ID0gc2l6ZW9mICgoKHN0cnVjdCB0ICopIE5VTEwpLT5tKTsKLSAgICBHT01QRF9GT1JFQUNIX0FD Q0VTUyAoZ29tcGRfaW5pdF9zaXplb2ZfbWVtYmVycyk7Ci0gICN1bmRlZiBnb21wZF9kZWNsYXJl X3NpemVvZl9tZW1iZXJzCi0KLSAgI2RlZmluZSBnb21wZF9pbml0X3NpemVzKHQpIGdvbXBkX3Np emVvZl8jI3QgPSBzaXplb2YgKHN0cnVjdCB0KTsKLSAgICBHT01QRF9TSVpFUyAoZ29tcGRfaW5p dF9zaXplcykKLSAgI3VuZGVmIGdvbXBkX2luaXRfc2l6ZXMKLQotICAjaWZkZWYgR09NUF9ORUVE U19USFJFQURfSEFORExFCi0gICAgX19VSU5UNjRfVFlQRV9fIGdvbXBkX2FjY2Vzc19nb21wX3Ro cmVhZF9oYW5kbGUKLSAgICAgID0gKF9fVUlOVDY0X1RZUEVfXykgJiAoKChzdHJ1Y3QgZ29tcF90 aHJlYWQgKikgTlVMTCktPmhhbmRsZSk7Ci0gICAgX19VSU5UNjRfVFlQRV9fIGdvbXBkX3NpemVv Zl9nb21wX3RocmVhZF9oYW5kbGUKLSAgICAgID0gc2l6ZW9mICgoKHN0cnVjdCBnb21wX3RocmVh ZCAqKSBOVUxMKS0+aGFuZGxlKTsKLSAgI2VuZGlmCiAgIGdvbXBfZGVidWcgKDIsICJPTVAgT01Q RCBhY3RpdmVcbiIpOwogICBzdGF0aWMgY29uc3QgY2hhciAqb21wZF9kbGxfbG9jYXRpb25zX2Fy cmF5WzJdCiAgICAgPSB7ImxpYmdvbXBkIiBTT05BTUVfU1VGRklYICgxKSAsIE5VTEx9OwpkaWZm IC0tZ2l0IGEvbGliZ29tcC9vbXBkLXN1cHBvcnQuaCBiL2xpYmdvbXAvb21wZC1zdXBwb3J0LmgK aW5kZXggMzlkNTUxNjExMzIuLjE3MmY1OTI4MzM1IDEwMDY0NAotLS0gYS9saWJnb21wL29tcGQt c3VwcG9ydC5oCisrKyBiL2xpYmdvbXAvb21wZC1zdXBwb3J0LmgKQEAgLTY3LDcgKzY3LDcgQEAK ICNlbmRpZgogCiB2b2lkIGdvbXBkX2xvYWQgKHZvaWQpOwotZXh0ZXJuIF9fVUlOVDY0X1RZUEVf XyBnb21wZF9zdGF0ZTsKK2V4dGVybiB1bnNpZ25lZCBzaG9ydCBnb21wZF9zdGF0ZTsKIAogI2Rl ZmluZSBPTVBEX0VOQUJMRUQgMHgxCiAKQEAgLTgzLDcgKzgzLDEwIEBAIGV4dGVybiBfX1VJTlQ2 NF9UWVBFX18gZ29tcGRfc3RhdGU7CiAgIGdvbXBkX2FjY2VzcyAoZ29tcF90aHJlYWRfcG9vbCwg dGhyZWFkcykgXAogICBnb21wZF9hY2Nlc3MgKGdvbXBfdGhyZWFkLCB0cykgXAogICBnb21wZF9h Y2Nlc3MgKGdvbXBfdGVhbV9zdGF0ZSwgdGVhbV9pZCkgXAotICBnb21wZF9hY2Nlc3MgKGdvbXBf dGFzaywgaWN2KQorICBnb21wZF9hY2Nlc3MgKGdvbXBfdGFzaywgaWN2KSBcCisgIGdvbXBkX2Fj Y2VzcyAoZ29tcF90YXNrLCBraW5kKSBcCisgIGdvbXBkX2FjY2VzcyAoZ29tcF90YXNrLCBmaW5h bF90YXNrKSBcCisgIGdvbXBkX2FjY2VzcyAoZ29tcF90ZWFtLCBudGhyZWFkcykKIAogI2RlZmlu ZSBHT01QRF9TSVpFUyhnb21wZF9zaXplKSBcCiAgIGdvbXBkX3NpemUgKGdvbXBfdGhyZWFkKSBc Cg== --000000000000d268e505e198e2dd--