Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nI3Ki-0001tK-Uo for pgsql-hackers@arkaria.postgresql.org; Thu, 10 Feb 2022 06:53:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nI3Kh-0001Hr-4F for pgsql-hackers@arkaria.postgresql.org; Thu, 10 Feb 2022 06:53:35 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nI3Kg-0001Hh-CC for pgsql-hackers@lists.postgresql.org; Thu, 10 Feb 2022 06:53:34 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nI3KZ-00080z-GX for pgsql-hackers@lists.postgresql.org; Thu, 10 Feb 2022 06:53:33 +0000 Received: by mail-ej1-x630.google.com with SMTP id p24so12972889ejo.1 for ; Wed, 09 Feb 2022 22:53:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=nNmW7Oln9GpDJbypiCXDO6Tf6mYjDV2DKPXi6mplwCw=; b=fnF27VaGYNl6jyXlUYtdTFJ9eVaXI5zSvnLGi7yDQ+CjHWDyrnWxXA328z/R7J6JVC IO2PSQXYA9Bqff/ipGckrXUL1TW1Kl7HrfTOPCml12no3856mGjEaNcXjO1NZwJ9FmtC OToYg/x09ws7jqGAZxRh09UifR8q8T+NKRyEm/ufZKxjhQYUrhA38XXXQbg33AdfkYQD keDJtRpZtU577LO2kcIG6GKimuXTfJ/hf90KN2l82aT1+06IapTXl3XP1CpgzjRzVn2G 3/A0OvOgvD0dfmweHB7t/tVTQD2/Hyubievrgb0VlSRQpl5GKrwN7t5/nqD72bgfJXbh eeDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=nNmW7Oln9GpDJbypiCXDO6Tf6mYjDV2DKPXi6mplwCw=; b=nTZqTi+5yj0kfqGfII+xbbR5q66fvLjkjwvU4vWG+ItDu2WwzB4AS0v3KBxMIFTD/B R7OM0YcmKMyKX3aKBmia/gF89mFc2ZtqXfXkAZGmwtMYv/h0//YbkhnogGzeeHnAgkrY LftJSOkq1nNtXO0BeIutKF02tDym4QGgq1ma0YXp3QETFJTPm7hYYobrdh+OBAPG5O+F guDsNXe6vNaLJarbMRpBvjVui0CgUAB6mTCT2Omay7fDTJRMZi7I01wk+H530ZFAp4Lk 3Zx0TvsLwb3uH66CbKCOtSBB2U2bK4SeQ+L5eluuyD6puBUKUXRRNh0c7yp7WC6OXA9H HiCw== X-Gm-Message-State: AOAM533uziYO4IKDh2difPyCOxYY2TBlSb6m8sbhPaiENYMdIpKuwtPi QMQVv/546jkTtVfeapJYnMD360C+QWWHXPra6Kg= X-Google-Smtp-Source: ABdhPJyV7qbxW8hYPMEtYcIZnx5XCqVd7EVVtp2OmF4EEr80UUvu+uQyOpJJUVs4SBR89ubhYp1RIemRlGv7lXKVZK0= X-Received: by 2002:a17:906:240d:: with SMTP id z13mr5223023eja.210.1644476005359; Wed, 09 Feb 2022 22:53:25 -0800 (PST) MIME-Version: 1.0 References: <2031846.1640792459@sss.pgh.pa.us> In-Reply-To: From: Nitin Jadhav Date: Thu, 10 Feb 2022 12:22:48 +0530 Message-ID: Subject: Re: Report checkpoint progress with pg_stat_progress_checkpoint (was: Report checkpoint progress in server logs) To: Bharath Rupireddy Cc: Bruce Momjian , Tom Lane , Magnus Hagander , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000243c3505d7a4682e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000243c3505d7a4682e Content-Type: text/plain; charset="UTF-8" > > We need at least a trace of the number of buffers to sync (num_to_scan) before the checkpoint start, instead of just emitting the stats at the end. > > > > Bharat, it would be good to show the buffers synced counter and the total buffers to sync, checkpointer pid, substep it is running, whether it is on target for completion, checkpoint_Reason > > (manual/times/forced). BufferSync has several variables tracking the sync progress locally, and we may need some refactoring here. > > I agree to provide above mentioned information as part of showing the > progress of current checkpoint operation. I am currently looking into > the code to know if any other information can be added. Here is the initial patch to show the progress of checkpoint through pg_stat_progress_checkpoint view. Please find the attachment. The information added to this view are pid - process ID of a CHECKPOINTER process, kind - kind of checkpoint indicates the reason for checkpoint (values can be wal, time or force), phase - indicates the current phase of checkpoint operation, total_buffer_writes - total number of buffers to be written, buffers_processed - number of buffers processed, buffers_written - number of buffers written, total_file_syncs - total number of files to be synced, files_synced - number of files synced. There are many operations happen as part of checkpoint. For each of the operation I am updating the phase field of pg_stat_progress_checkpoint view. The values supported for this field are initializing, checkpointing replication slots, checkpointing snapshots, checkpointing logical rewrite mappings, checkpointing CLOG pages, checkpointing CommitTs pages, checkpointing SUBTRANS pages, checkpointing MULTIXACT pages, checkpointing SLRU pages, checkpointing buffers, performing sync requests, performing two phase checkpoint, recycling old XLOG files and Finalizing. In case of checkpointing buffers phase, the fields total_buffer_writes, buffers_processed and buffers_written shows the detailed progress of writing buffers. In case of performing sync requests phase, the fields total_file_syncs and files_synced shows the detailed progress of syncing files. In other phases, only the phase field is getting updated and it is difficult to show the progress because we do not get the total number of files count without traversing the directory. It is not worth to calculate that as it affects the performance of the checkpoint. I also gave a thought to just mention the number of files processed, but this wont give a meaningful progress information (It can be treated as statistics). Hence just updating the phase field in those scenarios. Apart from above fields, I am planning to add few more fields to the view in the next patch. That is, process ID of the backend process which triggered a CHECKPOINT command, checkpoint start location, filed to indicate whether it is a checkpoint or restartpoint and elapsed time of the checkpoint operation. Please share your thoughts. I would be happy to add any other information that contributes to showing the progress of checkpoint. As per the discussion in this thread, there should be some mechanism to show the progress of checkpoint during shutdown and end-of-recovery cases as we cannot access pg_stat_progress_checkpoint in those cases. I am working on this to use log_startup_progress_interval mechanism to log the progress in the server logs. Kindly review the patch and share your thoughts. On Fri, Jan 28, 2022 at 12:24 PM Bharath Rupireddy wrote: > > On Fri, Jan 21, 2022 at 11:07 AM Nitin Jadhav > wrote: > > > > > I think the right choice to solve the *general* problem is the > > > mentioned pg_stat_progress_checkpoints. > > > > > > We may want to *additionally* have the ability to log the progress > > > specifically for the special cases when we're not able to use that > > > view. And in those case, we can perhaps just use the existing > > > log_startup_progress_interval parameter for this as well -- at least > > > for the startup checkpoint. > > > > +1 > > > > > We need at least a trace of the number of buffers to sync (num_to_scan) before the checkpoint start, instead of just emitting the stats at the end. > > > > > > Bharat, it would be good to show the buffers synced counter and the total buffers to sync, checkpointer pid, substep it is running, whether it is on target for completion, checkpoint_Reason > > > (manual/times/forced). BufferSync has several variables tracking the sync progress locally, and we may need some refactoring here. > > > > I agree to provide above mentioned information as part of showing the > > progress of current checkpoint operation. I am currently looking into > > the code to know if any other information can be added. > > As suggested in the other thread by Julien, I'm changing the subject > of this thread to reflect the discussion. > > Regards, > Bharath Rupireddy. --000000000000243c3505d7a4682e Content-Type: application/octet-stream; name="0001-pg_stat_progress_checkpoint-view.patch" Content-Disposition: attachment; filename="0001-pg_stat_progress_checkpoint-view.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kzgmius90 RnJvbSA1YjY4ZGY3NGQ2ODkyMjY4NWRmZjRlYjY2NWE2NDMxYzUwNDZmODQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXRpbiBKYWRoYXYgPG5pdGluamFkaGF2QG1pY3Jvc29mdC5j b20+CkRhdGU6IFdlZCwgOSBGZWIgMjAyMiAxMjowMDoxMSArMDAwMApTdWJqZWN0OiBbUEFUQ0hd IHBnX3N0YXRfcHJvZ3Jlc3NfY2hlY2twb2ludCB2aWV3CgotLS0KIGRvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgICAgICAgICB8IDI2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNy Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAgICB8IDEyMyArKysrKysrKysrKystCiBz cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgfCAgMjkgKysrCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyAgfCAgMTAgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9z eW5jL3N5bmMuYyAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVu Y3MuYyAgfCAgIDIgKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaCAgICAgICAgICAgIHwgICA0 ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmggICAgICB8ICAzMSArKysrCiBzcmMv aW5jbHVkZS9zdG9yYWdlL3N5bmMuaCAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3V0 aWxzL2JhY2tlbmRfcHJvZ3Jlc3MuaCB8ICAgMyArLQogMTAgZmlsZXMgY2hhbmdlZCwgNDczIGlu c2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21v bml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggNjJmMmEz MzMyYi4uYTY4OTNkNDU0MyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC00MDEsNiArNDAxLDEzIEBA IHBvc3RncmVzICAgMjcwOTMgIDAuMCAgMC4wICAzMDA5NiAgMjc1MiA/ICAgICAgICBTcyAgIDEx OjM0ICAgMDowMCBwb3N0Z3Jlczogc2VyCiAgICAgICAgU2VlIDx4cmVmIGxpbmtlbmQ9J2NvcHkt cHJvZ3Jlc3MtcmVwb3J0aW5nJy8+LgogICAgICAgPC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0bmFtZT5wZ19zdGF0X3Byb2dyZXNzX2NoZWNr cG9pbnQ8L3N0cnVjdG5hbWU+PGluZGV4dGVybT48cHJpbWFyeT5wZ19zdGF0X3Byb2dyZXNzX2No ZWNrcG9pbnQ8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5PbmUg cm93IG9ubHksIHNob3dpbmcgdGhlIHByb2dyZXNzIG9mIDxjb21tYW5kPkNIRUNLUE9JTlQ8L2Nv bW1hbmQ+IG9wZXJhdGlvbi4KKyAgICAgICBTZWUgPHhyZWYgbGlua2VuZD0nY2hlY2twb2ludC1w cm9ncmVzcy1yZXBvcnRpbmcnLz4uCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KICAgICA8 L3Rib2R5PgogICAgPC90Z3JvdXA+CiAgIDwvdGFibGU+CkBAIC02ODg2LDYgKzY4OTMsMjYyIEBA IFNFTEVDVCBwZ19zdGF0X2dldF9iYWNrZW5kX3BpZChzLmJhY2tlbmRpZCkgQVMgcGlkLAogICA8 L3RhYmxlPgogIDwvc2VjdDI+CiAKKyA8c2VjdDIgaWQ9ImNoZWNrcG9pbnQtcHJvZ3Jlc3MtcmVw b3J0aW5nIj4KKyAgPHRpdGxlPkNIRUNLUE9JTlQgUHJvZ3Jlc3MgUmVwb3J0aW5nPC90aXRsZT4K KworICA8aW5kZXh0ZXJtPgorICAgPHByaW1hcnk+cGdfc3RhdF9wcm9ncmVzc19jaGVja3BvaW50 PC9wcmltYXJ5PgorICA8L2luZGV4dGVybT4KKworICA8cGFyYT4KKyAgIFdoZW5ldmVyIHRoZSBj aGVja3BvaW50IG9wZXJhdGlvbiBpcyBydW5uaW5nLCB0aGUKKyAgIDxzdHJ1Y3RuYW1lPnBnX3N0 YXRfcHJvZ3Jlc3NfY2hlY2twb2ludDwvc3RydWN0bmFtZT4gdmlldyB3aWxsIGNvbnRhaW4gYQor ICAgc2luZ2xlIHJvdyBpbmRpY2F0aW5nIHRoZSBwcm9ncmVzcyBvZiBjaGVja3BvaW50IG9wZXJh dGlvbi4gVGhlIHRhYmxlcyBiZWxvdworICAgZGVzY3JpYmUgdGhlIGluZm9ybWF0aW9uIHRoYXQg d2lsbCBiZSByZXBvcnRlZCBhbmQgcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dAorICAgaG93IHRv IGludGVycHJldCBpdC4KKyAgPC9wYXJhPgorCisgIDx0YWJsZSBpZD0icGctc3RhdC1wcm9ncmVz cy1jaGVja3BvaW50LXZpZXciIHhyZWZsYWJlbD0icGdfc3RhdF9wcm9ncmVzc19jaGVja3BvaW50 Ij4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19zdGF0X3Byb2dyZXNzX2NoZWNrcG9pbnQ8L3N0 cnVjdG5hbWU+IFZpZXc8L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8dGhlYWQ+ CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBUeXBlCisgICAgICA8 L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAgICA8dGJvZHk+CisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5waWQ8L3N0cnVjdGZpZWxk PiA8dHlwZT5pbnRlZ2VyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgUHJvY2VzcyBJRCBvZiBhIENIRUNLUE9JTlRFUiBwcm9jZXNzLgorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0 YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAg IDxzdHJ1Y3RmaWVsZD5raW5kczwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBLaW5kIG9mIGNoZWNrcG9pbnQuIFNlZSA8 eHJlZiBsaW5rZW5kPSJjaGVja3BvaW50LWtpbmRzIi8+LgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5waGFzZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBDdXJyZW50IHByb2Nlc3NpbmcgcGhhc2UuIFNlZSA8 eHJlZiBsaW5rZW5kPSJjaGVja3BvaW50LXBoYXNlcyIvPi4KKyAgICAgIDwvcGFyYT48L2VudHJ5 PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2df dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3Ry dWN0ZmllbGQ+dG90YWxfYnVmZmVyX3dyaXRlczwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRvdGFsIG51bWJlciBv ZiBidWZmZXJzIHRvIGJlIHdyaXR0ZW4uIFRoaXMgaXMgZXN0aW1hdGVkIGFuZCByZXBvcnRlZAor ICAgICAgIGFzIG9mIHRoZSBiZWdpbm5pbmcgb2YgYnVmZmVyIHdyaXRlIG9wZXJhdGlvbi4KKyAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+YnVmZmVyc19wcm9jZXNzZWQ8L3N0cnVjdGZpZWxk PiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAg ICBOdW1iZXIgb2YgYnVmZmVycyBwcm9jZXNzZWQuIFRoaXMgY291bnRlciBpbmNyZWFzZXMgd2hl biB0aGUgdGFyZ2V0ZWQKKyAgICAgICBidWZmZXIgaXMgcHJvY2Vzc2VkLiBUaGlzIG51bWJlciB3 aWxsIGV2ZW50dWFsbHkgYmVjb21lIGVxdWFsIHRvCisgICAgICAgPGxpdGVyYWw+IHRvdGFsX2J1 ZmZlcl93cml0ZXMgPC9saXRlcmFsPiB3aGVuIHRoZSBjaGVja3BvaW50IGlzCisgICAgICAgY29t cGxldGUuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmJ1ZmZlcnNfd3JpdHRlbjwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIE51bWJlciBvZiBidWZmZXJzIHdyaXR0ZW4uIFRoaXMgY291bnRlciBvbmx5IGFk dmFuY2VzIHdoZW4gdGhlIHRhcmdldGVkCisgICAgICAgYnVmZmVycyBpcyB3cml0dGVuLiBOb3Rl IHRoYXQgc29tZSBvZiB0aGUgYnVmZmVycyBhcmUgcHJvY2Vzc2VkIGJ1dCBtYXkKKyAgICAgICBu b3QgcmVxdWlyZWQgdG8gYmUgd3JpdHRlbi4gU28gdGhpcyBjb3VudCB3aWxsIGFsd2F5cyBiZSAg bGVzcyB0aGFuIG9yCisgICAgICAgZXF1YWwgdG8gIDxsaXRlcmFsPnRvdGFsX2J1ZmZlcl93cml0 ZXM8L2xpdGVyYWw+LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD50b3RhbF9maWxlX3N5 bmNzPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgVG90YWwgbnVtYmVyIG9mIGZpbGVzIHRvIGJlIHN5bmNlZC4gVGhp cyBpcyBlc3RpbWF0ZWQgYW5kIHJlcG9ydGVkIGFzIG9mCisgICAgICAgdGhlIGJlZ2lubmluZyBv ZiBzeW5jIG9wZXJhdGlvbi4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ZmlsZXNfc3lu Y2VkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgTnVtYmVyIG9mIGZpbGVzIHN5bmNlZC4gVGhpcyBjb3VudGVyIGFk dmFuY2VzIHdoZW4gdGhlIHRhcmdldGVkIGZpbGUgaXMKKyAgICAgICBzeW5jZWQuIFRoaXMgbnVt YmVyIHdpbGwgZXZlbnR1YWxseSBiZWNvbWUgZXF1YWwgdG8KKyAgICAgICA8bGl0ZXJhbD50b3Rh bF9maWxlX3N5bmNzPC9saXRlcmFsPiAgd2hlbiB0aGUgY2hlY2twb2ludCBpcyBjb21wbGV0ZS4K KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90 Z3JvdXA+CisgIDwvdGFibGU+CisKKyAgPHRhYmxlIGlkPSJjaGVja3BvaW50LWtpbmRzIj4KKyAg IDx0aXRsZT5DSEVDS1BPSU5UIGtpbmRzPC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMiI+Cisg ICAgPGNvbHNwZWMgY29sbmFtZT0iY29sMSIgY29sd2lkdGg9IjEqIi8+CisgICAgPGNvbHNwZWMg Y29sbmFtZT0iY29sMiIgY29sd2lkdGg9IjIqIi8+CisgICAgPHRoZWFkPgorICAgICA8cm93Pgor ICAgICAgPGVudHJ5PktpbmRzPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5EZXNjcmlwdGlvbjwvZW50 cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisgICAgPHRib2R5PgorICAgICA8cm93Pgor ICAgICAgPGVudHJ5PjxsaXRlcmFsPndhbDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5 PgorICAgICAgIFRoZSBjaGVja3BvaW50IG9wZXJhdGlvbiBpcyByZXF1ZXN0ZWQgZHVlIHRvIFhM T0cgZmlsbGluZy4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAg ICAgPGVudHJ5PjxsaXRlcmFsPnRpbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4K KyAgICAgICBUaGUgY2hlY2twb2ludCBvcGVyYXRpb24gaXMgcmVxdWVzdGVkIGR1ZSB0byB0aW1l b3V0LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50 cnk+PGxpdGVyYWw+Zm9yY2U8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAg ICBUaGUgY2hlY2twb2ludCBvcGVyYXRpb24gaXMgZm9yY2VkIGV2ZW4gaWYgbm8gWExPRyBhY3Rp dml0eSBoYXMgb2NjdXJyZWQKKyAgICAgICBzaW5jZSB0aGUgbGFzdCBvbmUuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+ CisKKyAgPHRhYmxlIGlkPSJjaGVja3BvaW50LXBoYXNlcyI+CisgICA8dGl0bGU+Q0hFQ0tQT0lO VCBwaGFzZXM8L3RpdGxlPgorICAgPHRncm91cCBjb2xzPSIyIj4KKyAgICA8Y29sc3BlYyBjb2xu YW1lPSJjb2wxIiBjb2x3aWR0aD0iMSoiLz4KKyAgICA8Y29sc3BlYyBjb2xuYW1lPSJjb2wyIiBj b2x3aWR0aD0iMioiLz4KKyAgICA8dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+UGhh c2U8L2VudHJ5PgorICAgICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+ CisgICAgPC90aGVhZD4KKyAgICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxp dGVyYWw+aW5pdGlhbGl6aW5nPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAg ICAgVGhlIENIRUNLUE9JTlRFUiBwcm9jZXNzIGlzIHByZXBhcmluZyB0byBiZWdpbiB0aGUgY2hl Y2twb2ludCBvcGVyYXRpb24uCisgICAgICAgVGhpcyBwaGFzZSBpcyBleHBlY3RlZCB0byBiZSB2 ZXJ5IGJyaWVmLgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PGxpdGVyYWw+Y2hlY2twb2ludGluZyByZXBsaWNhdGlvbiBzbG90czwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBDSEVDS1BPSU5URVIgcHJvY2Vz cyBpcyBjdXJyZW50bHkgZmx1c2hpbmcgYWxsIHRoZSByZXBsaWNhdGlvbiBzbG90cyB0bworICAg ICAgIGRpc2suCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGl0ZXJhbD5jaGVja3BvaW50aW5nIHNuYXBzaG90czwvbGl0ZXJhbD48L2VudHJ5 PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBDSEVDS1BPSU5URVIgcHJvY2VzcyBpcyBjdXJy ZW50bHkgcmVtb3ZpbmcgYWxsIHRoZSBzZXJpYWxpemVkCisgICAgICAgc25hcHNob3RzIHRoYXQg YXJlIG5vdCByZXF1aXJlZCBhbnltb3JlLgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+Cisg ICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+Y2hlY2twb2ludGluZyBsb2dpY2FsIHJl d3JpdGUgbWFwcGluZ3M8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBU aGUgQ0hFQ0tQT0lOVEVSIHByb2Nlc3MgaXMgY3VycmVudGx5IHJlbW92aW5nL2ZsdXNoaW5nIHRo ZSBsb2dpY2FsCisgICAgICAgcmV3cml0ZSBtYXBwaW5ncy4KKyAgICAgIDwvZW50cnk+CisgICAg IDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmNoZWNrcG9pbnRpbmcg Q0xPRyBwYWdlczwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBD SEVDS1BPSU5URVIgcHJvY2VzcyBpcyBjdXJyZW50bHkgd3JpdGluZyBDTE9HIHBhZ2VzIHRvIGRp c2suCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eT48bGl0ZXJhbD5jaGVja3BvaW50aW5nIENvbW1pdFRzIHBhZ2VzPC9saXRlcmFsPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIENIRUNLUE9JTlRFUiBwcm9jZXNzIGlzIGN1cnJl bnRseSB3cml0aW5nIENvbW1pdFRzIHBhZ2VzIHRvIGRpc2suCisgICAgICA8L2VudHJ5PgorICAg ICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5jaGVja3BvaW50aW5n IFNVQlRSQU5TIHBhZ2VzPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAg VGhlIENIRUNLUE9JTlRFUiBwcm9jZXNzIGlzIGN1cnJlbnRseSB3cml0aW5nIFNVQlRSQU5TIHBh Z2VzIHRvIGRpc2suCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeT48bGl0ZXJhbD5jaGVja3BvaW50aW5nIE1VTFRJWEFDVCBwYWdlczwvbGl0ZXJh bD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBDSEVDS1BPSU5URVIgcHJvY2Vz cyBpcyBjdXJyZW50bHkgd3JpdGluZyBNVUxUSVhBQ1QgcGFnZXMgdG8gZGlzay4KKyAgICAgIDwv ZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmNo ZWNrcG9pbnRpbmcgU0xSVSBwYWdlczwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pgor ICAgICAgIFRoZSBDSEVDS1BPSU5URVIgcHJvY2VzcyBpcyBjdXJyZW50bHkgd3JpdGluZyBTTFJV IHBhZ2VzIHRvIGRpc2suCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeT48bGl0ZXJhbD5jaGVja3BvaW50aW5nIGJ1ZmZlcnM8L2xpdGVyYWw+PC9l bnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgQ0hFQ0tQT0lOVEVSIHByb2Nlc3MgaXMg Y3VycmVudGx5IHdyaXRpbmcgYnVmZmVycyB0byBkaXNrLgorICAgICAgPC9lbnRyeT4KKyAgICAg PC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+cGVyZm9ybWluZyBzeW5j IHJlcXVlc3RzPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIENI RUNLUE9JTlRFUiBwcm9jZXNzIGlzIGN1cnJlbnRseSBwZXJmb3JtaW5nIHN5bmMgcmVxdWVzdHMu CisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48 bGl0ZXJhbD5wZXJmb3JtaW5nIHR3byBwaGFzZSBjaGVja3BvaW50PC9saXRlcmFsPjwvZW50cnk+ CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIENIRUNLUE9JTlRFUiBwcm9jZXNzIGlzIGN1cnJl bnRseSBwZXJmb3JtaW5nIHR3byBwaGFzZSBjaGVja3BvaW50LgorICAgICAgPC9lbnRyeT4KKyAg ICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+cmVjeWNsaW5nIG9s ZCBYTE9HIGZpbGVzPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhl IENIRUNLUE9JTlRFUiBwcm9jZXNzIGlzIGN1cnJlbnRseSByZWN5Y2xpbmcgb2xkIFhMT0cgZmls ZXMuCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eT48bGl0ZXJhbD5maW5hbGl6aW5nPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+Cisg ICAgICAgVGhlIENIRUNLUE9JTlRFUiBwcm9jZXNzIGlzIGZpbmFsaXppbmcgdGhlIGNoZWNrcG9p bnQgb3BlcmF0aW9uLiAKKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+ CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKworIDwvc2VjdDI+CisKICA8L3NlY3QxPgogCiAg PHNlY3QxIGlkPSJkeW5hbWljLXRyYWNlIj4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRl eCA5NTgyMjBjNDk1Li5kZjU2OGVlY2Q4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBA IC05MDg5LDYgKzkwODksOSBAQCBDcmVhdGVDaGVja1BvaW50KGludCBmbGFncykKIAlpZiAoUmVj b3ZlcnlJblByb2dyZXNzKCkgJiYgKGZsYWdzICYgQ0hFQ0tQT0lOVF9FTkRfT0ZfUkVDT1ZFUlkp ID09IDApCiAJCWVsb2coRVJST1IsICJjYW4ndCBjcmVhdGUgYSBjaGVja3BvaW50IGR1cmluZyBy ZWNvdmVyeSIpOwogCisJLyogUHJlcGFyZSB0byByZXBvcnQgcHJvZ3Jlc3Mgb2YgdGhlIGNoZWNr cG9pbnQuICovCisJY2hlY2twb2ludF9wcm9ncmVzc19zdGFydChmbGFncyk7CisKIAkvKgogCSAq IFByZXBhcmUgdG8gYWNjdW11bGF0ZSBzdGF0aXN0aWNzLgogCSAqCkBAIC05NDMyLDggKzk0MzUs MTIgQEAgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3MpCiAJCUtlZXBMb2dTZWcocmVjcHRyLCAm X2xvZ1NlZ05vKTsKIAl9CiAJX2xvZ1NlZ05vLS07CisJY2hlY2twb2ludF9wcm9ncmVzc191cGRh dGVfcGFyYW0oZmxhZ3MsIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0UsCisJCQkJCQkJCQkgUFJP R1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9PTERfWExPR19SRUNZQ0xFKTsKIAlSZW1vdmVPbGRYbG9n RmlsZXMoX2xvZ1NlZ05vLCBSZWRvUmVjUHRyLCByZWNwdHIsCiAJCQkJCSAgIGNoZWNrUG9pbnQu VGhpc1RpbWVMaW5lSUQpOworCWNoZWNrcG9pbnRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKGZsYWdz LCBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFLAorCQkJCQkJCQkJIFBST0dSRVNTX0NIRUNLUE9J TlRfUEhBU0VfRklOQUxJWkUpOwogCiAJLyoKIAkgKiBNYWtlIG1vcmUgbG9nIHNlZ21lbnRzIGlm IG5lZWRlZC4gIChEbyB0aGlzIGFmdGVyIHJlY3ljbGluZyBvbGQgbG9nCkBAIC05NDU1LDYgKzk0 NjIsOSBAQCBDcmVhdGVDaGVja1BvaW50KGludCBmbGFncykKIAkvKiBSZWFsIHdvcmsgaXMgZG9u ZTsgbG9nIGFuZCB1cGRhdGUgc3RhdHMuICovCiAJTG9nQ2hlY2twb2ludEVuZChmYWxzZSk7CiAK KwkvKiBTdG9wIHJlcG9ydGluZyBwcm9ncmVzcyBvZiB0aGUgY2hlY2twb2ludC4gKi8KKwljaGVj a3BvaW50X3Byb2dyZXNzX2VuZChmbGFncyk7CisKIAkvKiBSZXNldCB0aGUgcHJvY2VzcyB0aXRs ZSAqLwogCXVwZGF0ZV9jaGVja3BvaW50X2Rpc3BsYXkoZmxhZ3MsIGZhbHNlLCB0cnVlKTsKIApA QCAtOTU2OCwyOSArOTU3OCw2MCBAQCBzdGF0aWMgdm9pZAogQ2hlY2tQb2ludEd1dHMoWExvZ1Jl Y1B0ciBjaGVja1BvaW50UmVkbywgaW50IGZsYWdzKQogewogCUNoZWNrUG9pbnRSZWxhdGlvbk1h cCgpOworCisJY2hlY2twb2ludF9wcm9ncmVzc191cGRhdGVfcGFyYW0oZmxhZ3MsIFBST0dSRVNT X0NIRUNLUE9JTlRfUEhBU0UsCisJCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9S RVBMSV9TTE9UUyk7CiAJQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHMoKTsKKworCWNoZWNrcG9p bnRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKGZsYWdzLCBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNF LAorCQkJCQkJCQkJIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfU05BUFNIT1RTKTsKIAlDaGVj a1BvaW50U25hcEJ1aWxkKCk7CisKKwljaGVja3BvaW50X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShm bGFncywgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJCSBQUk9HUkVTU19DSEVD S1BPSU5UX1BIQVNFX0xPR0lDQUxfUkVXUklURV9NQVBQSU5HUyk7CiAJQ2hlY2tQb2ludExvZ2lj YWxSZXdyaXRlSGVhcCgpOwogCUNoZWNrUG9pbnRSZXBsaWNhdGlvbk9yaWdpbigpOwogCiAJLyog V3JpdGUgb3V0IGFsbCBkaXJ0eSBkYXRhIGluIFNMUlVzIGFuZCB0aGUgbWFpbiBidWZmZXIgcG9v bCAqLwogCVRSQUNFX1BPU1RHUkVTUUxfQlVGRkVSX0NIRUNLUE9JTlRfU1RBUlQoZmxhZ3MpOwog CUNoZWNrcG9pbnRTdGF0cy5ja3B0X3dyaXRlX3QgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisK KwljaGVja3BvaW50X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShmbGFncywgUFJPR1JFU1NfQ0hFQ0tQ T0lOVF9QSEFTRSwKKwkJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX0NMT0dfUEFH RVMpOwogCUNoZWNrUG9pbnRDTE9HKCk7CisKKwljaGVja3BvaW50X3Byb2dyZXNzX3VwZGF0ZV9w YXJhbShmbGFncywgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJCSBQUk9HUkVT U19DSEVDS1BPSU5UX1BIQVNFX0NPTU1JVFRTX1BBR0VTKTsKIAlDaGVja1BvaW50Q29tbWl0VHMo KTsKKworCWNoZWNrcG9pbnRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKGZsYWdzLCBQUk9HUkVTU19D SEVDS1BPSU5UX1BIQVNFLAorCQkJCQkJCQkJIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfU1VC VFJBTlNfUEFHRVMpOwogCUNoZWNrUG9pbnRTVUJUUkFOUygpOworCisJY2hlY2twb2ludF9wcm9n cmVzc191cGRhdGVfcGFyYW0oZmxhZ3MsIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0UsCisJCQkJ CQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9NVUxUSVhBQ1RfUEFHRVMpOwogCUNoZWNr UG9pbnRNdWx0aVhhY3QoKTsKKworCWNoZWNrcG9pbnRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKGZs YWdzLCBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFLAorCQkJCQkJCQkJIFBST0dSRVNTX0NIRUNL UE9JTlRfUEhBU0VfU0xSVV9QQUdFUyk7CiAJQ2hlY2tQb2ludFByZWRpY2F0ZSgpOworCisJY2hl Y2twb2ludF9wcm9ncmVzc191cGRhdGVfcGFyYW0oZmxhZ3MsIFBST0dSRVNTX0NIRUNLUE9JTlRf UEhBU0UsCisJCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9CVUZGRVJTKTsKIAlD aGVja1BvaW50QnVmZmVycyhmbGFncyk7CiAKIAkvKiBQZXJmb3JtIGFsbCBxdWV1ZWQgdXAgZnN5 bmNzICovCiAJVFJBQ0VfUE9TVEdSRVNRTF9CVUZGRVJfQ0hFQ0tQT0lOVF9TWU5DX1NUQVJUKCk7 CiAJQ2hlY2twb2ludFN0YXRzLmNrcHRfc3luY190ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwot CVByb2Nlc3NTeW5jUmVxdWVzdHMoKTsKKwljaGVja3BvaW50X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShmbGFncywgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJCSBQUk9HUkVTU19D SEVDS1BPSU5UX1BIQVNFX0ZJTEVfU1lOQyk7CisJUHJvY2Vzc1N5bmNSZXF1ZXN0cyhmbGFncyk7 CiAJQ2hlY2twb2ludFN0YXRzLmNrcHRfc3luY19lbmRfdCA9IEdldEN1cnJlbnRUaW1lc3RhbXAo KTsKIAlUUkFDRV9QT1NUR1JFU1FMX0JVRkZFUl9DSEVDS1BPSU5UX0RPTkUoKTsKIAogCS8qIFdl IGRlbGliZXJhdGVseSBkZWxheSAyUEMgY2hlY2twb2ludGluZyBhcyBsb25nIGFzIHBvc3NpYmxl ICovCisJY2hlY2twb2ludF9wcm9ncmVzc191cGRhdGVfcGFyYW0oZmxhZ3MsIFBST0dSRVNTX0NI RUNLUE9JTlRfUEhBU0UsCisJCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9UV09f UEhBU0UpOwogCUNoZWNrUG9pbnRUd29QaGFzZShjaGVja1BvaW50UmVkbyk7CiB9CiAKQEAgLTk3 MjcsNiArOTc2OCw5IEBAIENyZWF0ZVJlc3RhcnRQb2ludChpbnQgZmxhZ3MpCiAJWExvZ0N0bC0+ UmVkb1JlY1B0ciA9IGxhc3RDaGVja1BvaW50LnJlZG87CiAJU3BpbkxvY2tSZWxlYXNlKCZYTG9n Q3RsLT5pbmZvX2xjayk7CiAKKwkvKiBQcmVwYXJlIHRvIHJlcG9ydCBwcm9ncmVzcyBvZiB0aGUg Y2hlY2twb2ludC4gKi8KKwljaGVja3BvaW50X3Byb2dyZXNzX3N0YXJ0KGZsYWdzKTsKKwogCS8q CiAJICogUHJlcGFyZSB0byBhY2N1bXVsYXRlIHN0YXRpc3RpY3MuCiAJICoKQEAgLTk4MzcsNyAr OTg4MSwxMSBAQCBDcmVhdGVSZXN0YXJ0UG9pbnQoaW50IGZsYWdzKQogCWlmICghUmVjb3ZlcnlJ blByb2dyZXNzKCkpCiAJCXJlcGxheVRMSSA9IFhMb2dDdGwtPkluc2VydFRpbWVMaW5lSUQ7CiAK KwljaGVja3BvaW50X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShmbGFncywgUFJPR1JFU1NfQ0hFQ0tQ T0lOVF9QSEFTRSwKKwkJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX09MRF9YTE9H X1JFQ1lDTEUpOwogCVJlbW92ZU9sZFhsb2dGaWxlcyhfbG9nU2VnTm8sIFJlZG9SZWNQdHIsIGVu ZHB0ciwgcmVwbGF5VExJKTsKKwljaGVja3BvaW50X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShmbGFn cywgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BP SU5UX1BIQVNFX0ZJTkFMSVpFKTsKIAogCS8qCiAJICogTWFrZSBtb3JlIGxvZyBzZWdtZW50cyBp ZiBuZWVkZWQuICAoRG8gdGhpcyBhZnRlciByZWN5Y2xpbmcgb2xkIGxvZwpAQCAtOTg1OCw2ICs5 OTA2LDkgQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAkvKiBSZWFsIHdvcmsgaXMg ZG9uZTsgbG9nIGFuZCB1cGRhdGUgc3RhdHMuICovCiAJTG9nQ2hlY2twb2ludEVuZCh0cnVlKTsK IAorCS8qIFN0b3AgcmVwb3J0aW5nIHByb2dyZXNzIG9mIHRoZSBjaGVja3BvaW50LiAqLworCWNo ZWNrcG9pbnRfcHJvZ3Jlc3NfZW5kKGZsYWdzKTsKKwogCS8qIFJlc2V0IHRoZSBwcm9jZXNzIHRp dGxlICovCiAJdXBkYXRlX2NoZWNrcG9pbnRfZGlzcGxheShmbGFncywgdHJ1ZSwgdHJ1ZSk7CiAK QEAgLTEzMjQyLDMgKzEzMjkzLDczIEBAIFhMb2dSZXF1ZXN0V2FsUmVjZWl2ZXJSZXBseSh2b2lk KQogewogCWRvUmVxdWVzdFdhbFJlY2VpdmVyUmVwbHkgPSB0cnVlOwogfQorCisvKgorICogU3Rh cnQgcmVwb3J0aW5nIHByb2dyZXNzIG9mIHRoZSBjaGVja3BvaW50LgorICovCit2b2lkCitjaGVj a3BvaW50X3Byb2dyZXNzX3N0YXJ0KGludCBmbGFncykKK3sKKwkvKiBJbiBib290c3RyYXAgbW9k ZSwgd2UgZG9uJ3QgYWN0dWFsbHkgcmVjb3JkIGFueXRoaW5nLiAqLworCWlmIChJc0Jvb3RzdHJh cFByb2Nlc3NpbmdNb2RlKCkpCisJCXJldHVybjsKKworCS8qCisJICogQ2Fubm90IGFjY2VzcyBw Z19zdGF0X3Byb2dyZXNzX2NoZWNrcG9pbnQgdmlldyBpbiBjYXNlIG9mIGNoZWNrcG9pbnQKKwkg KiBkdXJpbmcgc2h1dGRvd24gYW5kIGVuZC1vZi1yZWNvdmVyeS4KKwkgKi8KKwlpZiAoKGZsYWdz ICYgKENIRUNLUE9JTlRfSVNfU0hVVERPV04gfCBDSEVDS1BPSU5UX0VORF9PRl9SRUNPVkVSWSkp ID09IDApCisJeworCQlwZ3N0YXRfcHJvZ3Jlc3Nfc3RhcnRfY29tbWFuZChQUk9HUkVTU19DT01N QU5EX0NIRUNLUE9JTlQsIEludmFsaWRPaWQpOworCQljaGVja3BvaW50X3Byb2dyZXNzX3VwZGF0 ZV9wYXJhbShmbGFncywgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJCQkgUFJP R1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9JTklUKTsKKwkJaWYgKGZsYWdzICYgQ0hFQ0tQT0lOVF9D QVVTRV9YTE9HKQorCQkJY2hlY2twb2ludF9wcm9ncmVzc191cGRhdGVfcGFyYW0oZmxhZ3MsIFBS T0dSRVNTX0NIRUNLUE9JTlRfS0lORCwKKwkJCQkJCQkJCQkJIFBST0dSRVNTX0NIRUNLUE9JTlRf S0lORF9XQUwpOworCQllbHNlIGlmIChmbGFncyAmIENIRUNLUE9JTlRfQ0FVU0VfVElNRSkKKwkJ CWNoZWNrcG9pbnRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKGZsYWdzLCBQUk9HUkVTU19DSEVDS1BP SU5UX0tJTkQsCisJCQkJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX0tJTkRfVElNRSk7CisJ CWVsc2UgaWYgKGZsYWdzICYgQ0hFQ0tQT0lOVF9GT1JDRSkKKwkJCWNoZWNrcG9pbnRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKGZsYWdzLCBQUk9HUkVTU19DSEVDS1BPSU5UX0tJTkQsCisJCQkJCQkJ CQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX0tJTkRfRk9SQ0UpOworCQllbHNlCisJCQljaGVja3Bv aW50X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShmbGFncywgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9LSU5E LAorCQkJCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9LSU5EX1VOS05PV04pOworCX0KK30K KworLyoKKyAqIFVwZGF0ZSBpbmRleCd0aCBtZW1iZXIgaW4gc3RfcHJvZ3Jlc3NfcGFyYW1bXSBh cnJheSB3aXRoIHRoZSBsYXRlc3QgdmFsdWUuCisgKi8KK3ZvaWQKK2NoZWNrcG9pbnRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKGludCBmbGFncywgaW50IGluZGV4LCBpbnQ2NCB2YWwpCit7CisJLyog SW4gYm9vdHN0cmFwIG1vZGUsIHdlIGRvbid0IGFjdHVhbGx5IHJlY29yZCBhbnl0aGluZy4gKi8K KwlpZiAoSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKQorCQlyZXR1cm47CisKKwkvKgorCSAq IENhbm5vdCBhY2Nlc3MgcGdfc3RhdF9wcm9ncmVzc19jaGVja3BvaW50IHZpZXcgaW4gY2FzZSBv ZiBjaGVja3BvaW50CisJICogZHVyaW5nIHNodXRkb3duIGFuZCBlbmQtb2YtcmVjb3ZlcnkuCisJ ICovCisJaWYgKChmbGFncyAmIChDSEVDS1BPSU5UX0lTX1NIVVRET1dOIHwgQ0hFQ0tQT0lOVF9F TkRfT0ZfUkVDT1ZFUlkpKSA9PSAwKQorCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKGlu ZGV4LCB2YWwpOworfQorCisvKgorICogU3RvcCByZXBvcnRpbmcgcHJvZ3Jlc3Mgb2YgdGhlIGNo ZWNrcG9pbnQuCisgKi8KK3ZvaWQKK2NoZWNrcG9pbnRfcHJvZ3Jlc3NfZW5kKGludCBmbGFncykK K3sKKwkvKiBJbiBib290c3RyYXAgbW9kZSwgd2UgZG9uJ3QgYWN0dWFsbHkgcmVjb3JkIGFueXRo aW5nLiAqLworCWlmIChJc0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkpCisJCXJldHVybjsKKwor CS8qCisJICogQ2Fubm90IGFjY2VzcyBwZ19zdGF0X3Byb2dyZXNzX2NoZWNrcG9pbnQgdmlldyBp biBjYXNlIG9mIGNoZWNrcG9pbnQKKwkgKiBkdXJpbmcgc2h1dGRvd24gYW5kIGVuZC1vZi1yZWNv dmVyeS4KKwkgKi8KKwlpZiAoKGZsYWdzICYgKENIRUNLUE9JTlRfSVNfU0hVVERPV04gfCBDSEVD S1BPSU5UX0VORF9PRl9SRUNPVkVSWSkpID09IDApCisJCXBnc3RhdF9wcm9ncmVzc19lbmRfY29t bWFuZCgpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbAppbmRleCAzY2I2OWIxZjg3Li42YTkwZDYzZmZmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMjg2LDMgKzEyODYsMzIgQEAgQ1JFQVRFIFZJRVcg cGdfc3RhdF9zdWJzY3JpcHRpb25fd29ya2VycyBBUwogICAgICAgICAgIEZST00gcGdfc3Vic2Ny aXB0aW9uX3JlbCkgc3IsCiAgICAgICAgICAgTEFURVJBTCBwZ19zdGF0X2dldF9zdWJzY3JpcHRp b25fd29ya2VyKHNyLnN1YmlkLCBzci5yZWxpZCkgdwogICAgICAgICAgIEpPSU4gcGdfc3Vic2Ny aXB0aW9uIHMgT04gKHcuc3ViaWQgPSBzLm9pZCk7CisKK0NSRUFURSBWSUVXIHBnX3N0YXRfcHJv Z3Jlc3NfY2hlY2twb2ludCBBUworICAgIFNFTEVDVAorICAgICAgICBTLnBpZCBBUyBwaWQsCisg ICAgICAgIENBU0UgUy5wYXJhbTEgV0hFTiAwIFRIRU4gJ3dhbCcKKyAgICAgICAgICAgICAgICAg ICAgICBXSEVOIDEgVEhFTiAndGltZScKKyAgICAgICAgICAgICAgICAgICAgICBXSEVOIDIgVEhF TiAnZm9yY2UnCisgICAgICAgICAgICAgICAgICAgICAgRU5EIEFTIGtpbmQsCisgICAgICAgIENB U0UgUy5wYXJhbTIgV0hFTiAwIFRIRU4gJ2luaXRpYWxpemluZycKKyAgICAgICAgICAgICAgICAg ICAgICBXSEVOIDEgVEhFTiAnY2hlY2twb2ludGluZyByZXBsaWNhdGlvbiBzbG90cycKKyAgICAg ICAgICAgICAgICAgICAgICBXSEVOIDIgVEhFTiAnY2hlY2twb2ludGluZyBzbmFwc2hvdHMnCisg ICAgICAgICAgICAgICAgICAgICAgV0hFTiAzIFRIRU4gJ2NoZWNrcG9pbnRpbmcgbG9naWNhbCBy ZXdyaXRlIG1hcHBpbmdzJworICAgICAgICAgICAgICAgICAgICAgIFdIRU4gNCBUSEVOICdjaGVj a3BvaW50aW5nIENMT0cgcGFnZXMnCisgICAgICAgICAgICAgICAgICAgICAgV0hFTiA1IFRIRU4g J2NoZWNrcG9pbnRpbmcgQ29tbWl0VHMgcGFnZXMnCisgICAgICAgICAgICAgICAgICAgICAgV0hF TiA2IFRIRU4gJ2NoZWNrcG9pbnRpbmcgU1VCVFJBTlMgcGFnZXMnCisgICAgICAgICAgICAgICAg ICAgICAgV0hFTiA3IFRIRU4gJ2NoZWNrcG9pbnRpbmcgTVVMVElYQUNUIHBhZ2VzJworICAgICAg ICAgICAgICAgICAgICAgIFdIRU4gOCBUSEVOICdjaGVja3BvaW50aW5nIFNMUlUgcGFnZXMnCisg ICAgICAgICAgICAgICAgICAgICAgV0hFTiA5IFRIRU4gJ2NoZWNrcG9pbnRpbmcgYnVmZmVycycK KyAgICAgICAgICAgICAgICAgICAgICBXSEVOIDEwIFRIRU4gJ3BlcmZvcm1pbmcgc3luYyByZXF1 ZXN0cycKKyAgICAgICAgICAgICAgICAgICAgICBXSEVOIDExIFRIRU4gJ3BlcmZvcm1pbmcgdHdv IHBoYXNlIGNoZWNrcG9pbnQnCisgICAgICAgICAgICAgICAgICAgICAgV0hFTiAxMiBUSEVOICdy ZWN5Y2xpbmcgb2xkIFhMT0cgZmlsZXMnCisgICAgICAgICAgICAgICAgICAgICAgV0hFTiAxMyBU SEVOICdGaW5hbGl6aW5nJworICAgICAgICAgICAgICAgICAgICAgIEVORCBBUyBwaGFzZSwKKyAg ICAgICAgUy5wYXJhbTMgQVMgdG90YWxfYnVmZmVyX3dyaXRlcywKKyAgICAgICAgUy5wYXJhbTQg QVMgYnVmZmVyc19wcm9jZXNzZWQsCisgICAgICAgIFMucGFyYW01IEFTIGJ1ZmZlcnNfd3JpdHRl biwKKyAgICAgICAgUy5wYXJhbTYgQVMgdG90YWxfZmlsZV9zeW5jcywKKyAgICAgICAgUy5wYXJh bTcgQVMgZmlsZXNfc3luY2VkCisgICAgRlJPTSBwZ19zdGF0X2dldF9wcm9ncmVzc19pbmZvKCdD SEVDS1BPSU5UJykgQVMgUzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVy L2J1Zm1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKaW5kZXggZjU0 NTljNjhmOC4uY2YwYWQyOTlmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvYnVmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKQEAg LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9jYXRhbG9nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9zdG9yYWdlLmgiCisjaW5jbHVk ZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50Lmgi CiAjaW5jbHVkZSAibGliL2JpbmFyeWhlYXAuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAg LTIwMTIsNiArMjAxMyw5IEBAIEJ1ZmZlclN5bmMoaW50IGZsYWdzKQogCVdyaXRlYmFja0NvbnRl eHRJbml0KCZ3Yl9jb250ZXh0LCAmY2hlY2twb2ludF9mbHVzaF9hZnRlcik7CiAKIAlUUkFDRV9Q T1NUR1JFU1FMX0JVRkZFUl9TWU5DX1NUQVJUKE5CdWZmZXJzLCBudW1fdG9fc2Nhbik7CisJY2hl Y2twb2ludF9wcm9ncmVzc191cGRhdGVfcGFyYW0oZmxhZ3MsCisJCQkJCQkJCQkgUFJPR1JFU1Nf Q0hFQ0tQT0lOVF9UT1RBTF9CVUZGRVJfV1JJVEVTLAorCQkJCQkJCQkJIG51bV90b19zY2FuKTsK IAogCS8qCiAJICogU29ydCBidWZmZXJzIHRoYXQgbmVlZCB0byBiZSB3cml0dGVuIHRvIHJlZHVj ZSB0aGUgbGlrZWxpaG9vZCBvZiByYW5kb20KQEAgLTIxMjksNiArMjEzMyw5IEBAIEJ1ZmZlclN5 bmMoaW50IGZsYWdzKQogCQlidWZIZHIgPSBHZXRCdWZmZXJEZXNjcmlwdG9yKGJ1Zl9pZCk7CiAK IAkJbnVtX3Byb2Nlc3NlZCsrOworCQljaGVja3BvaW50X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShm bGFncywKKwkJCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9CVUZGRVJTX1BST0NFU1NFRCwK KwkJCQkJCQkJCQkgbnVtX3Byb2Nlc3NlZCk7CiAKIAkJLyoKIAkJICogV2UgZG9uJ3QgbmVlZCB0 byBhY3F1aXJlIHRoZSBsb2NrIGhlcmUsIGJlY2F1c2Ugd2UncmUgb25seSBsb29raW5nCkBAIC0y MTQ5LDYgKzIxNTYsOSBAQCBCdWZmZXJTeW5jKGludCBmbGFncykKIAkJCQlUUkFDRV9QT1NUR1JF U1FMX0JVRkZFUl9TWU5DX1dSSVRURU4oYnVmX2lkKTsKIAkJCQlQZW5kaW5nQ2hlY2twb2ludGVy U3RhdHMubV9idWZfd3JpdHRlbl9jaGVja3BvaW50cysrOwogCQkJCW51bV93cml0dGVuKys7CisJ CQkJY2hlY2twb2ludF9wcm9ncmVzc191cGRhdGVfcGFyYW0oZmxhZ3MsCisJCQkJCQkJCQkJCQkg UFJPR1JFU1NfQ0hFQ0tQT0lOVF9CVUZGRVJTX1dSSVRURU4sCisJCQkJCQkJCQkJCQkgbnVtX3dy aXR0ZW4pOwogCQkJfQogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3lu Yy9zeW5jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3luYy5jCmluZGV4IDU0M2Y2OTFm MmQuLmI4ZjZhZWJiN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5j LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwpAQCAtMjMsNiArMjMsNyBA QAogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5o IgogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9wcm9n cmVzcy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJtaXNj YWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKQEAgLTI3Nyw3ICsyNzgsNyBAQCBTeW5jUG9z dENoZWNrcG9pbnQodm9pZCkKICAqCVByb2Nlc3NTeW5jUmVxdWVzdHMoKSAtLSBQcm9jZXNzIHF1 ZXVlZCBmc3luYyByZXF1ZXN0cy4KICAqLwogdm9pZAotUHJvY2Vzc1N5bmNSZXF1ZXN0cyh2b2lk KQorUHJvY2Vzc1N5bmNSZXF1ZXN0cyhpbnQgZmxhZ3MpCiB7CiAJc3RhdGljIGJvb2wgc3luY19p bl9wcm9ncmVzcyA9IGZhbHNlOwogCkBAIC0zNTUsNiArMzU2LDEwIEBAIFByb2Nlc3NTeW5jUmVx dWVzdHModm9pZCkKIAkvKiBOb3cgc2NhbiB0aGUgaGFzaHRhYmxlIGZvciBmc3luYyByZXF1ZXN0 cyB0byBwcm9jZXNzICovCiAJYWJzb3JiX2NvdW50ZXIgPSBGU1lOQ1NfUEVSX0FCU09SQjsKIAlo YXNoX3NlcV9pbml0KCZoc3RhdCwgcGVuZGluZ09wcyk7CisJY2hlY2twb2ludF9wcm9ncmVzc191 cGRhdGVfcGFyYW0oZmxhZ3MsCisJCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9UT1RBTF9G SUxFX1NZTkNTLAorCQkJCQkJCQkJIGhhc2hfZ2V0X251bV9lbnRyaWVzKHBlbmRpbmdPcHMpKTsK KwogCXdoaWxlICgoZW50cnkgPSAoUGVuZGluZ0ZzeW5jRW50cnkgKikgaGFzaF9zZXFfc2VhcmNo KCZoc3RhdCkpICE9IE5VTEwpCiAJewogCQlpbnQJCQlmYWlsdXJlczsKQEAgLTQxOCw2ICs0MjMs OSBAQCBQcm9jZXNzU3luY1JlcXVlc3RzKHZvaWQpCiAJCQkJCQlsb25nZXN0ID0gZWxhcHNlZDsK IAkJCQkJdG90YWxfZWxhcHNlZCArPSBlbGFwc2VkOwogCQkJCQlwcm9jZXNzZWQrKzsKKwkJCQkJ Y2hlY2twb2ludF9wcm9ncmVzc191cGRhdGVfcGFyYW0oZmxhZ3MsCisJCQkJCQkJCQkJCQkJIFBS T0dSRVNTX0NIRUNLUE9JTlRfRklMRVNfU1lOQ0VELAorCQkJCQkJCQkJCQkJCSBwcm9jZXNzZWQp OwogCiAJCQkJCWlmIChsb2dfY2hlY2twb2ludHMpCiAJCQkJCQllbG9nKERFQlVHMSwgImNoZWNr cG9pbnQgc3luYzogbnVtYmVyPSVkIGZpbGU9JXMgdGltZT0lLjNmIG1zIiwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXggMTVjYjE3YWNlNC4uNzQzOGUwY2U4NCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKQEAgLTQ5NCw2ICs0OTQsOCBAQCBwZ19zdGF0X2dldF9w cm9ncmVzc19pbmZvKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNtZHR5cGUgPSBQUk9HUkVTU19DT01N QU5EX0JBU0VCQUNLVVA7CiAJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChjbWQsICJDT1BZIikgPT0g MCkKIAkJY21kdHlwZSA9IFBST0dSRVNTX0NPTU1BTkRfQ09QWTsKKwkgZWxzZSBpZiAocGdfc3Ry Y2FzZWNtcChjbWQsICJDSEVDS1BPSU5UIikgPT0gMCkKKwkJY21kdHlwZSA9IFBST0dSRVNTX0NP TU1BTkRfQ0hFQ0tQT0lOVDsKIAllbHNlCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCBhNGIxYzEy ODZmLi41OGM1NDdiMmQ1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCisr KyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKQEAgLTM1Myw2ICszNTMsMTAgQEAgZXh0ZXJu IHZvaWQgZG9fcGdfYWJvcnRfYmFja3VwKGludCBjb2RlLCBEYXR1bSBhcmcpOwogZXh0ZXJuIHZv aWQgcmVnaXN0ZXJfcGVyc2lzdGVudF9hYm9ydF9iYWNrdXBfaGFuZGxlcih2b2lkKTsKIGV4dGVy biBTZXNzaW9uQmFja3VwU3RhdGUgZ2V0X2JhY2t1cF9zdGF0dXModm9pZCk7CiAKK2V4dGVybiB2 b2lkIGNoZWNrcG9pbnRfcHJvZ3Jlc3Nfc3RhcnQoaW50IGZsYWdzKTsKK2V4dGVybiB2b2lkIGNo ZWNrcG9pbnRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKGludCBmbGFncywgaW50IGluZGV4LCBpbnQ2 NCB2YWwpOworZXh0ZXJuIHZvaWQgY2hlY2twb2ludF9wcm9ncmVzc19lbmQoaW50IGZsYWdzKTsK KwogLyogRmlsZSBwYXRoIG5hbWVzIChhbGwgcmVsYXRpdmUgdG8gJFBHREFUQSkgKi8KICNkZWZp bmUgUkVDT1ZFUllfU0lHTkFMX0ZJTEUJInJlY292ZXJ5LnNpZ25hbCIKICNkZWZpbmUgU1RBTkRC WV9TSUdOQUxfRklMRQkJInN0YW5kYnkuc2lnbmFsIgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvcHJvZ3Jlc3MuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgKaW5k ZXggYTI4OTM4Y2FmNC4uZTFjNTc0ZDA1MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvcHJvZ3Jlc3MuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCkBAIC0x NTEsNCArMTUxLDM1IEBACiAjZGVmaW5lIFBST0dSRVNTX0NPUFlfVFlQRV9QSVBFIDMKICNkZWZp bmUgUFJPR1JFU1NfQ09QWV9UWVBFX0NBTExCQUNLIDQKIAorLyogUHJvZ3Jlc3MgcGFyYW1ldGVy cyBmb3IgY2hlY2twb2ludCAqLworI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX0tJTkQgICAg ICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSAgICAg ICAgICAgICAgICAgICAxCisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfVE9UQUxfQlVGRkVS X1dSSVRFUyAgICAgMgorI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX0JVRkZFUlNfUFJPQ0VT U0VEICAgICAgIDMKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9CVUZGRVJTX1dSSVRURU4g ICAgICAgICA0CisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfVE9UQUxfRklMRV9TWU5DUyAg ICAgICAgNQorI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX0ZJTEVTX1NZTkNFRCAgICAgICAg ICAgIDYKKworLyogS2luZHMgb2YgY2hlY2twb2ludCAoYXMgYWR2ZXJ0aXNlZCB2aWEgUFJPR1JF U1NfQ0hFQ0tQT0lOVF9LSU5EKSAqLworI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX0tJTkRf V0FMICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9LSU5EX1RJ TUUgICAgICAgICAgICAgICAxCisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfS0lORF9GT1JD RSAgICAgICAgICAgICAgMgorI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX0tJTkRfVU5LTk9X TiAgICAgICAgICAgIDMKKworLyogUGhhc2VzIG9mIGNoZWNrcG9pbnQgKGFzIGFkdmVydGlzZWQg dmlhIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0UpICovCisjZGVmaW5lIFBST0dSRVNTX0NIRUNL UE9JTlRfUEhBU0VfSU5JVCAgICAgICAgICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBQUk9H UkVTU19DSEVDS1BPSU5UX1BIQVNFX1JFUExJX1NMT1RTICAgICAgICAgICAgICAgICAgIDEKKyNk ZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9TTkFQU0hPVFMgICAgICAgICAgICAgICAg ICAgICAyCisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfTE9HSUNBTF9SRVdSSVRF X01BUFBJTkdTICAgICAgMworI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX0NMT0df UEFHRVMgICAgICAgICAgICAgICAgICAgIDQKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9Q SEFTRV9DT01NSVRUU19QQUdFUyAgICAgICAgICAgICAgICA1CisjZGVmaW5lIFBST0dSRVNTX0NI RUNLUE9JTlRfUEhBU0VfU1VCVFJBTlNfUEFHRVMgICAgICAgICAgICAgICAgNgorI2RlZmluZSBQ Uk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX01VTFRJWEFDVF9QQUdFUyAgICAgICAgICAgICAgIDcK KyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9TTFJVX1BBR0VTICAgICAgICAgICAg ICAgICAgICA4CisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfQlVGRkVSUyAgICAg ICAgICAgICAgICAgICAgICAgOQorI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX0ZJ TEVfU1lOQyAgICAgICAgICAgICAgICAgICAgIDEwCisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9J TlRfUEhBU0VfVFdPX1BIQVNFICAgICAgICAgICAgICAgICAgICAgMTEKKyNkZWZpbmUgUFJPR1JF U1NfQ0hFQ0tQT0lOVF9QSEFTRV9PTERfWExPR19SRUNZQ0xFICAgICAgICAgICAgICAxMgorI2Rl ZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX0ZJTkFMSVpFICAgICAgICAgICAgICAgICAg ICAgIDEzCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zeW5jLmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N5bmMuaAppbmRleCA5NzM3ZTFlYjY3Li5mZWQ1MmVmYTMw IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N5bmMuaAorKysgYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL3N5bmMuaApAQCAtNTgsNyArNTgsNyBAQCB0eXBlZGVmIHN0cnVjdCBGaWxlVGFn CiBleHRlcm4gdm9pZCBJbml0U3luYyh2b2lkKTsKIGV4dGVybiB2b2lkIFN5bmNQcmVDaGVja3Bv aW50KHZvaWQpOwogZXh0ZXJuIHZvaWQgU3luY1Bvc3RDaGVja3BvaW50KHZvaWQpOwotZXh0ZXJu IHZvaWQgUHJvY2Vzc1N5bmNSZXF1ZXN0cyh2b2lkKTsKK2V4dGVybiB2b2lkIFByb2Nlc3NTeW5j UmVxdWVzdHMoaW50IGZsYWdzKTsKIGV4dGVybiB2b2lkIFJlbWVtYmVyU3luY1JlcXVlc3QoY29u c3QgRmlsZVRhZyAqZnRhZywgU3luY1JlcXVlc3RUeXBlIHR5cGUpOwogZXh0ZXJuIGJvb2wgUmVn aXN0ZXJTeW5jUmVxdWVzdChjb25zdCBGaWxlVGFnICpmdGFnLCBTeW5jUmVxdWVzdFR5cGUgdHlw ZSwKIAkJCQkJCQkJYm9vbCByZXRyeU9uRXJyb3IpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvYmFja2VuZF9wcm9ncmVzcy5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9wcm9n cmVzcy5oCmluZGV4IDQ3YmY4MDI5YjAuLjAyZDUxZmI5NDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL2JhY2tlbmRfcHJvZ3Jlc3MuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9iYWNr ZW5kX3Byb2dyZXNzLmgKQEAgLTI3LDcgKzI3LDggQEAgdHlwZWRlZiBlbnVtIFByb2dyZXNzQ29t bWFuZFR5cGUKIAlQUk9HUkVTU19DT01NQU5EX0NMVVNURVIsCiAJUFJPR1JFU1NfQ09NTUFORF9D UkVBVEVfSU5ERVgsCiAJUFJPR1JFU1NfQ09NTUFORF9CQVNFQkFDS1VQLAotCVBST0dSRVNTX0NP TU1BTkRfQ09QWQorCVBST0dSRVNTX0NPTU1BTkRfQ09QWSwKKwlQUk9HUkVTU19DT01NQU5EX0NI RUNLUE9JTlQKIH0gUHJvZ3Jlc3NDb21tYW5kVHlwZTsKIAogI2RlZmluZSBQR1NUQVRfTlVNX1BS T0dSRVNTX1BBUkFNCTIwCi0tIAoyLjI1LjEKCg== --000000000000243c3505d7a4682e--