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 1ny5qr-0000re-SL for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jun 2022 06:04:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ny5qq-00049g-LB for pgsql-hackers@arkaria.postgresql.org; Mon, 06 Jun 2022 06:04:32 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ny5qq-00049X-5f for pgsql-hackers@lists.postgresql.org; Mon, 06 Jun 2022 06:04:32 +0000 Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1ny5qn-0003Ks-4b for pgsql-hackers@lists.postgresql.org; Mon, 06 Jun 2022 06:04:31 +0000 Received: by mail-ej1-x62b.google.com with SMTP id h23so15792993ejj.12 for ; Sun, 05 Jun 2022 23:04:29 -0700 (PDT) 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=3nQQXdReDTCG1L354Mp/JHVACcnPfNDHfkpQEum+V8c=; b=XxZV9O+OdYk6mw4nsSyU5z5mhG1L1ikw1oOneQKG9tosqC4WAGhxoWHmUdrlOaYICi JNjredFKFOYruwlQsmlolkcVoVN3PXjKKoGmnpbXknf9+qjD+luU7+LGMZ+wdOzhSCIT uJqcxY8jn51gW9zXTb4A2NHXZAa6IPG56hX9+1cFwdWn06sDQObifrwEQ0XvB86LeWqw fbCO4wRuFOykrQZfD3mQel6ScPTR3uJGRrCCDAxdZ17EfJT6AKlI6XuP3eEKq/rBt9C/ rTUpc6tN5GFjamXf091w1pOzdUQTQdwJre9kvFWCf8biANBs3PKcyIC+u5h3ld9QzPSl OmyQ== 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=3nQQXdReDTCG1L354Mp/JHVACcnPfNDHfkpQEum+V8c=; b=jJZLGImlF6HX9uV6aN3DT8hNXHXe9S4RpPp2Uk8zJuC/mYTZIh/KhrlOKi/N+O5RsH NKOF0z5yUVmPJs+YjRPTTXjpNPBdO7FDQBGRA8g4TurzZS/CHJwuafV+pWIDW2SazrrG PJKSan9YXg9LkX5JfYbaKYgbqucwCIFUdcnishPxygF0v40J0IIqo/n5sybjHUKukhqk tYaiNmXunx05cWUmJac0aA2LUmwA+LGTdK3F0uYWugJ3oL3FvoEdN5DBi8Znxy6aOeNp Wr2j0FwevnU6YFIVOnVSqa217aNZpbRyAIU65uFH+ttnuzbRyOc08sVSSvkorE6X6FP/ PPOw== X-Gm-Message-State: AOAM533G/6hBdPUJwhiJ3Y0pyB+GAXohfMi1fchGtklRNHc91KFGOBeH HYRL10hm9pE8qX72f5QPL77pMa/FmPkd4PqUS4Y= X-Google-Smtp-Source: ABdhPJzNoL1W/JZ6BnI6e0Eb+6Fg6ywZAOAbV2ejYd/vqWU+nSPDCm8S0ZcosX27exU8nW0Rat+B0pVNn1SbKG5QOqU= X-Received: by 2002:a17:906:794e:b0:6ff:32a2:b2c0 with SMTP id l14-20020a170906794e00b006ff32a2b2c0mr18697485ejo.210.1654495468099; Sun, 05 Jun 2022 23:04:28 -0700 (PDT) MIME-Version: 1.0 References: <20220309141750.jirvp5o5v5zpr4lz@jrouhaud> <20220311100428.amj6hmqyaokgyxf2@jrouhaud> <20220311121300.2uh7k2zbrx2exdtq@jrouhaud> <20220314114555.pqj5pnuxz76vdscn@jrouhaud> In-Reply-To: From: Nitin Jadhav Date: Mon, 6 Jun 2022 11:33:50 +0530 Message-ID: Subject: Re: Report checkpoint progress with pg_stat_progress_checkpoint (was: Report checkpoint progress in server logs) To: Julien Rouhaud Cc: Matthias van de Meent , Bharath Rupireddy , Ashutosh Sharma , Bruce Momjian , Tom Lane , Magnus Hagander , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000a8c33905e0c13e98" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a8c33905e0c13e98 Content-Type: text/plain; charset="UTF-8" Hi, Here is the update patch which fixes the previous comments discussed in this thread. I am sorry for the long gap in the discussion. Kindly let me know if I have missed any of the comments or anything new. Thanks & Regards, Nitin Jadhav On Fri, Mar 18, 2022 at 4:52 PM Nitin Jadhav wrote: > > > > > I don't get it. The checkpoint flags and the view flags (set by > > > > pgstat_progrss_update*) are different, so why can't we add this flag to the > > > > view flags? The fact that checkpointer.c doesn't update the passed flag and > > > > instead look in the shmem to see if CHECKPOINT_IMMEDIATE has been set since is > > > > an implementation detail, and the view shouldn't focus on which flags were > > > > initially passed to the checkpointer but instead which flags the checkpointer > > > > is actually enforcing, as that's what the user should be interested in. If you > > > > want to store it in another field internally but display it in the view with > > > > the rest of the flags, I'm fine with it. > > > > > > Just to be in sync with the way code behaves, it is better not to > > > update the next checkpoint request's CHECKPOINT_IMMEDIATE with the > > > current checkpoint 'flags' field. Because the current checkpoint > > > starts with a different set of flags and when there is a new request > > > (with CHECKPOINT_IMMEDIATE), it just processes the pending operations > > > quickly to take up next requests. If we update this information in the > > > 'flags' field of the view, it says that the current checkpoint is > > > started with CHECKPOINT_IMMEDIATE which is not true. > > > > Which is why I suggested to only take into account CHECKPOINT_REQUESTED (to > > be able to display that a new checkpoint was requested) > > I will take care in the next patch. > > > > Hence I had > > > thought of adding a new field ('next flags' or 'upcoming flags') which > > > contain all the flag values of new checkpoint requests. This field > > > indicates whether the current checkpoint is throttled or not and also > > > it indicates there are new requests. > > > > I'm not opposed to having such a field, I'm opposed to having a view with "the > > current checkpoint is throttled but if there are some flags in the next > > checkpoint flags and those flags contain checkpoint immediate then the current > > checkpoint isn't actually throttled anymore" behavior. > > I understand your point and I also agree that it becomes difficult for > the user to understand the context. > > > and > > CHECKPOINT_IMMEDIATE, to be able to display that the current checkpoint isn't > > throttled anymore if it were. > > > > I still don't understand why you want so much to display "how the checkpoint > > was initially started" rather than "how the checkpoint is really behaving right > > now". The whole point of having a progress view is to have something dynamic > > that reflects the current activity. > > As of now I will not consider adding this information to the view. If > required and nobody opposes having this included in the 'flags' field > of the view, then I will consider adding. > > Thanks & Regards, > Nitin Jadhav > > On Mon, Mar 14, 2022 at 5:16 PM Julien Rouhaud wrote: > > > > On Mon, Mar 14, 2022 at 03:16:50PM +0530, Nitin Jadhav wrote: > > > > > I am not suggesting > > > > > removing the existing 'flags' field of pg_stat_progress_checkpoint > > > > > view and adding a new field 'throttled'. The content of the 'flags' > > > > > field remains the same. I was suggesting replacing the 'next_flags' > > > > > field with 'throttled' field since the new request with > > > > > CHECKPOINT_IMMEDIATE flag enabled will affect the current checkpoint. > > > > > > > > Are you saying that this new throttled flag will only be set by the overloaded > > > > flags in ckpt_flags? > > > > > > Yes. you are right. > > > > > > > So you can have a checkpoint with a CHECKPOINT_IMMEDIATE > > > > flags that's throttled, and a checkpoint without the CHECKPOINT_IMMEDIATE flag > > > > that's not throttled? > > > > > > I think it's the reverse. A checkpoint with a CHECKPOINT_IMMEDIATE > > > flags that's not throttled (disables delays between writes) and a > > > checkpoint without the CHECKPOINT_IMMEDIATE flag that's throttled > > > (enables delays between writes) > > > > Yes that's how it's supposed to work, but my point was that your suggested > > 'throttled' flag could say the opposite, which is bad. > > > > > > I don't get it. The checkpoint flags and the view flags (set by > > > > pgstat_progrss_update*) are different, so why can't we add this flag to the > > > > view flags? The fact that checkpointer.c doesn't update the passed flag and > > > > instead look in the shmem to see if CHECKPOINT_IMMEDIATE has been set since is > > > > an implementation detail, and the view shouldn't focus on which flags were > > > > initially passed to the checkpointer but instead which flags the checkpointer > > > > is actually enforcing, as that's what the user should be interested in. If you > > > > want to store it in another field internally but display it in the view with > > > > the rest of the flags, I'm fine with it. > > > > > > Just to be in sync with the way code behaves, it is better not to > > > update the next checkpoint request's CHECKPOINT_IMMEDIATE with the > > > current checkpoint 'flags' field. Because the current checkpoint > > > starts with a different set of flags and when there is a new request > > > (with CHECKPOINT_IMMEDIATE), it just processes the pending operations > > > quickly to take up next requests. If we update this information in the > > > 'flags' field of the view, it says that the current checkpoint is > > > started with CHECKPOINT_IMMEDIATE which is not true. > > > > Which is why I suggested to only take into account CHECKPOINT_REQUESTED (to > > be able to display that a new checkpoint was requested) and > > CHECKPOINT_IMMEDIATE, to be able to display that the current checkpoint isn't > > throttled anymore if it were. > > > > I still don't understand why you want so much to display "how the checkpoint > > was initially started" rather than "how the checkpoint is really behaving right > > now". The whole point of having a progress view is to have something dynamic > > that reflects the current activity. > > > > > Hence I had > > > thought of adding a new field ('next flags' or 'upcoming flags') which > > > contain all the flag values of new checkpoint requests. This field > > > indicates whether the current checkpoint is throttled or not and also > > > it indicates there are new requests. > > > > I'm not opposed to having such a field, I'm opposed to having a view with "the > > current checkpoint is throttled but if there are some flags in the next > > checkpoint flags and those flags contain checkpoint immediate then the current > > checkpoint isn't actually throttled anymore" behavior. --000000000000a8c33905e0c13e98 Content-Type: application/octet-stream; name="v6-0001-pg_stat_progress_checkpoint-view.patch" Content-Disposition: attachment; filename="v6-0001-pg_stat_progress_checkpoint-view.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l42buxh70 RnJvbSAxMDQxODRmNmNiYTdkZmUzM2ViNzEwZGU4MTU4YjIxZTY5MzdiZjUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXRpbiBKYWRoYXYgPG5pdGluamFkaGF2QG1pY3Jvc29mdC5j b20+CkRhdGU6IE1vbiwgNiBKdW4gMjAyMiAwNTo1NTowNiArMDAwMApTdWJqZWN0OiBbUEFUQ0hd IHBnX3N0YXRfcHJvZ3Jlc3NfY2hlY2twb2ludC12aWV3CgotLS0KIGRvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgICAgICAgICAgfCA0MDUgKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGRv Yy9zcmMvc2dtbC9yZWYvY2hlY2twb2ludC5zZ21sICAgICAgfCAgIDcgKwogZG9jL3NyYy9zZ21s L3dhbC5zZ21sICAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZy5jICAgICB8IDEwMiArKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwgIHwgIDUxICsrKysKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2twb2lu dGVyLmMgfCAgMTUgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jICAgfCAg IDcgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYyAgICAgICB8ICAgNiArCiBzcmMv YmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2Nv bW1hbmRzL3Byb2dyZXNzLmggICAgICAgfCAgMzggKysrCiBzcmMvaW5jbHVkZS91dGlscy9iYWNr ZW5kX3Byb2dyZXNzLmggIHwgICAzICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVz Lm91dCAgIHwgIDcwICsrKysrCiAxMiBmaWxlcyBjaGFuZ2VkLCA3MDYgaW5zZXJ0aW9ucygrKSwg NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21s IGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCA0NTQ5YzI1NjBlLi41ZmUwYmE0 NDkyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTQxNCw2ICs0MTQsMTMgQEAgcG9zdGdyZXMgICAy NzA5MyAgMC4wICAwLjAgIDMwMDk2ICAyNzUyID8gICAgICAgIFNzICAgMTE6MzQgICAwOjAwIHBv c3RncmVzOiBzZXIKICAgICAgICBTZWUgPHhyZWYgbGlua2VuZD0nY29weS1wcm9ncmVzcy1yZXBv cnRpbmcnLz4uCiAgICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAg ICAgPGVudHJ5PjxzdHJ1Y3RuYW1lPnBnX3N0YXRfcHJvZ3Jlc3NfY2hlY2twb2ludDwvc3RydWN0 bmFtZT48aW5kZXh0ZXJtPjxwcmltYXJ5PnBnX3N0YXRfcHJvZ3Jlc3NfY2hlY2twb2ludDwvcHJp bWFyeT48L2luZGV4dGVybT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk9uZSByb3cgb25seSwgc2hv d2luZyB0aGUgcHJvZ3Jlc3Mgb2YgdGhlIGNoZWNrcG9pbnQuCisgICAgICAgU2VlIDx4cmVmIGxp bmtlbmQ9J2NoZWNrcG9pbnQtcHJvZ3Jlc3MtcmVwb3J0aW5nJy8+LgorICAgICAgPC9lbnRyeT4K KyAgICAgPC9yb3c+CiAgICAgPC90Ym9keT4KICAgIDwvdGdyb3VwPgogICA8L3RhYmxlPgpAQCAt NTczNiw3ICs1NzQzLDcgQEAgU0VMRUNUIHBnX3N0YXRfZ2V0X2JhY2tlbmRfcGlkKHMuYmFja2Vu ZGlkKSBBUyBwaWQsCiAgICB3aGljaCBzdXBwb3J0IHByb2dyZXNzIHJlcG9ydGluZyBhcmUgPGNv bW1hbmQ+QU5BTFlaRTwvY29tbWFuZD4sCiAgICA8Y29tbWFuZD5DTFVTVEVSPC9jb21tYW5kPiwK ICAgIDxjb21tYW5kPkNSRUFURSBJTkRFWDwvY29tbWFuZD4sIDxjb21tYW5kPlZBQ1VVTTwvY29t bWFuZD4sCi0gICA8Y29tbWFuZD5DT1BZPC9jb21tYW5kPiwKKyAgIDxjb21tYW5kPkNPUFk8L2Nv bW1hbmQ+LCA8Y29tbWFuZD5DSEVDS1BPSU5UPC9jb21tYW5kPgogICAgYW5kIDx4cmVmIGxpbmtl bmQ9InByb3RvY29sLXJlcGxpY2F0aW9uLWJhc2UtYmFja3VwIi8+IChpLmUuLCByZXBsaWNhdGlv bgogICAgY29tbWFuZCB0aGF0IDx4cmVmIGxpbmtlbmQ9ImFwcC1wZ2Jhc2ViYWNrdXAiLz4gaXNz dWVzIHRvIHRha2UKICAgIGEgYmFzZSBiYWNrdXApLgpAQCAtNzAyNCw2ICs3MDMxLDQwMiBAQCBT RUxFQ1QgcGdfc3RhdF9nZXRfYmFja2VuZF9waWQocy5iYWNrZW5kaWQpIEFTIHBpZCwKICAgPC90 YWJsZT4KICA8L3NlY3QyPgogCisgPHNlY3QyIGlkPSJjaGVja3BvaW50LXByb2dyZXNzLXJlcG9y dGluZyI+CisgIDx0aXRsZT5DaGVja3BvaW50IFByb2dyZXNzIFJlcG9ydGluZzwvdGl0bGU+CisK KyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5PnBnX3N0YXRfcHJvZ3Jlc3NfY2hlY2twb2ludDwv cHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBXaGVuZXZlciB0aGUgY2hl Y2twb2ludCBvcGVyYXRpb24gaXMgcnVubmluZywgdGhlCisgICA8c3RydWN0bmFtZT5wZ19zdGF0 X3Byb2dyZXNzX2NoZWNrcG9pbnQ8L3N0cnVjdG5hbWU+IHZpZXcgd2lsbCBjb250YWluIGEKKyAg IHNpbmdsZSByb3cgaW5kaWNhdGluZyB0aGUgcHJvZ3Jlc3Mgb2YgdGhlIGNoZWNrcG9pbnQuIFRo ZSB0YWJsZXMgYmVsb3cKKyAgIGRlc2NyaWJlIHRoZSBpbmZvcm1hdGlvbiB0aGF0IHdpbGwgYmUg cmVwb3J0ZWQgYW5kIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQKKyAgIGhvdyB0byBpbnRlcnBy ZXQgaXQuCisgIDwvcGFyYT4KKworICA8dGFibGUgaWQ9InBnLXN0YXQtcHJvZ3Jlc3MtY2hlY2tw b2ludC12aWV3IiB4cmVmbGFiZWw9InBnX3N0YXRfcHJvZ3Jlc3NfY2hlY2twb2ludCI+CisgICA8 dGl0bGU+PHN0cnVjdG5hbWU+cGdfc3RhdF9wcm9ncmVzc19jaGVja3BvaW50PC9zdHJ1Y3RuYW1l PiBWaWV3PC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICBDb2x1bW4gVHlwZQorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgRGVzY3JpcHRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorCisgICAgPHRib2R5PgorICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ aW50ZWdlcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFByb2Nl c3MgSUQgb2YgdGhlIGNoZWNrcG9pbnRlciBwcm9jZXNzLgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD50eXBlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIFR5cGUgb2YgdGhlIGNoZWNrcG9pbnQuIFNlZSA8eHJl ZiBsaW5rZW5kPSJjaGVja3BvaW50LXR5cGVzIi8+LgorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5mbGFnczwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBGbGFncyBvZiB0aGUgY2hlY2twb2ludC4gU2VlIDx4cmVm IGxpbmtlbmQ9ImNoZWNrcG9pbnQtZmxhZ3MiLz4uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZp ZWxkPnN0YXJ0X2xzbjwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgY2hlY2twb2ludCBzdGFydCBsb2NhdGlvbi4K KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3RhcnRfdGltZTwvc3RydWN0ZmllbGQ+IDx0 eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIFN0YXJ0IHRpbWUgb2YgdGhlIGNoZWNrcG9pbnQuCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgPHN0cnVjdGZpZWxkPnBoYXNlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4K KyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEN1cnJlbnQgcHJvY2Vzc2luZyBw aGFzZS4gU2VlIDx4cmVmIGxpbmtlbmQ9ImNoZWNrcG9pbnQtcGhhc2VzIi8+LgorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5idWZmZXJzX3RvdGFsPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ymln aW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVG90YWwgbnVt YmVyIG9mIGJ1ZmZlcnMgdG8gYmUgd3JpdHRlbi4gVGhpcyBpcyBlc3RpbWF0ZWQgYW5kIHJlcG9y dGVkCisgICAgICAgYXMgb2YgdGhlIGJlZ2lubmluZyBvZiBidWZmZXIgd3JpdGUgb3BlcmF0aW9u LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2Rl ZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5idWZmZXJzX3Byb2Nlc3NlZDwvc3RydWN0 ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIE51bWJlciBvZiBidWZmZXJzIHByb2Nlc3NlZC4gVGhpcyBjb3VudGVyIGluY3JlYXNl cyB3aGVuIHRoZSB0YXJnZXRlZAorICAgICAgIGJ1ZmZlciBpcyBwcm9jZXNzZWQuIFRoaXMgbnVt YmVyIHdpbGwgZXZlbnR1YWxseSBiZWNvbWUgZXF1YWwgdG8KKyAgICAgICA8bGl0ZXJhbD5idWZm ZXJzX3RvdGFsPC9saXRlcmFsPiB3aGVuIHRoZSBjaGVja3BvaW50IGlzCisgICAgICAgY29tcGxl dGUuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmJ1ZmZlcnNfd3JpdHRlbjwvc3RydWN0 ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIE51bWJlciBvZiBidWZmZXJzIHdyaXR0ZW4uIFRoaXMgY291bnRlciBvbmx5IGFkdmFu Y2VzIHdoZW4gdGhlIHRhcmdldGVkCisgICAgICAgYnVmZmVycyBpcyB3cml0dGVuLiBOb3RlIHRo YXQgc29tZSBvZiB0aGUgYnVmZmVycyBhcmUgcHJvY2Vzc2VkIGJ1dCBtYXkKKyAgICAgICBub3Qg cmVxdWlyZWQgdG8gYmUgd3JpdHRlbi4gU28gdGhpcyBjb3VudCB3aWxsIGFsd2F5cyBiZSAgbGVz cyB0aGFuIG9yCisgICAgICAgZXF1YWwgdG8gIDxsaXRlcmFsPmJ1ZmZlcnNfdG90YWw8L2xpdGVy YWw+LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+Cisg ICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5maWxlc190b3RhbDwvc3RydWN0Zmll bGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIFRvdGFsIG51bWJlciBvZiBmaWxlcyB0byBiZSBzeW5jZWQuIFRoaXMgaXMgZXN0aW1hdGVk IGFuZCByZXBvcnRlZCBhcyBvZgorICAgICAgIHRoZSBiZWdpbm5pbmcgb2Ygc3luYyBvcGVyYXRp b24uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAg ICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5f ZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmZpbGVzX3N5bmNlZDwvc3RydWN0Zmll bGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIE51bWJlciBvZiBmaWxlcyBzeW5jZWQuIFRoaXMgY291bnRlciBhZHZhbmNlcyB3aGVuIHRo ZSB0YXJnZXRlZCBmaWxlIGlzCisgICAgICAgc3luY2VkLiBUaGlzIG51bWJlciB3aWxsIGV2ZW50 dWFsbHkgYmVjb21lIGVxdWFsIHRvCisgICAgICAgPGxpdGVyYWw+ZmlsZXNfdG90YWw8L2xpdGVy YWw+ICB3aGVuIHRoZSBjaGVja3BvaW50IGlzIGNvbXBsZXRlLgorICAgICAgPC9wYXJhPjwvZW50 cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD5uZXdfcmVxdWVzdHM8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgor ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVHJ1ZSBpZiBhbnkgb2YgdGhlIGJh Y2tlbmQgaXMgcmVxdWVzdGVkIGZvciBhIGNoZWNrcG9pbnQgd2hpbGUgdGhlCisgICAgICAgY3Vy cmVudCBjaGVja3BvaW50IGlzIGluIHByb2dyZXNzLCBGYWxzZSBvdGhlcndpc2UuCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgor ICA8L3RhYmxlPgorCisgIDx0YWJsZSBpZD0iY2hlY2twb2ludC10eXBlcyI+CisgICA8dGl0bGU+ Q2hlY2twb2ludCBUeXBlczwvdGl0bGU+CisgICA8dGdyb3VwIGNvbHM9IjIiPgorICAgIDxjb2xz cGVjIGNvbG5hbWU9ImNvbDEiIGNvbHdpZHRoPSIxKiIvPgorICAgIDxjb2xzcGVjIGNvbG5hbWU9 ImNvbDIiIGNvbHdpZHRoPSIyKiIvPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeT5UeXBlczwvZW50cnk+CisgICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAg ICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeT48bGl0ZXJhbD5jaGVja3BvaW50PC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+ CisgICAgICAgVGhlIGN1cnJlbnQgb3BlcmF0aW9uIGlzIGNoZWNrcG9pbnQuCisgICAgICA8L2Vu dHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5yZXN0 YXJ0cG9pbnQ8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgY3Vy cmVudCBvcGVyYXRpb24gaXMgcmVzdGFydHBvaW50LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9y b3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorCisgIDx0YWJsZSBp ZD0iY2hlY2twb2ludC1mbGFncyI+CisgICA8dGl0bGU+Q2hlY2twb2ludCBGbGFnczwvdGl0bGU+ CisgICA8dGdyb3VwIGNvbHM9IjIiPgorICAgIDxjb2xzcGVjIGNvbG5hbWU9ImNvbDEiIGNvbHdp ZHRoPSIxKiIvPgorICAgIDxjb2xzcGVjIGNvbG5hbWU9ImNvbDIiIGNvbHdpZHRoPSIyKiIvPgor ICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT5GbGFnczwvZW50cnk+CisgICAg ICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgor ICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5zaHV0ZG93bjwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVja3BvaW50IGlz IGZvciBzaHV0ZG93bi4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93Pgor ICAgICAgPGVudHJ5PjxsaXRlcmFsPmVuZC1vZi1yZWNvdmVyeTwvbGl0ZXJhbD48L2VudHJ5Pgor ICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVja3BvaW50IGlzIGZvciBlbmQtb2YtcmVjb3Zl cnkuCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eT48bGl0ZXJhbD5pbW1lZGlhdGU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAg ICAgICBUaGUgY2hlY2twb2ludCBoYXBwZW5zIHdpdGhvdXQgZGVsYXlzLgorICAgICAgPC9lbnRy eT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+Zm9yY2U8 L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgY2hlY2twb2ludCBp cyBzdGFydGVkIGJlY2F1c2Ugc29tZSBvcGVyYXRpb24gKGZvciB3aGljaCB0aGUKKyAgICAgICBj aGVja3BvaW50IGlzIG5lY2Vzc2FyeSkgZm9yY2VkIGEgY2hlY2twb2ludC4KKyAgICAgIDwvZW50 cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmZsdXNo IGFsbDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVja3Bv aW50IGZsdXNoZXMgYWxsIHBhZ2VzLCBpbmNsdWRpbmcgdGhvc2UgYmVsb25naW5nIHRvIHVubG9n Z2VkCisgICAgICAgdGFibGVzLgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxy b3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+d2FpdDwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg PGVudHJ5PgorICAgICAgIFRoZSBvcGVyYXRpb25zIHdoaWNoIHJlcXVlc3RlZCB0aGUgY2hlY2tw b2ludCB3YWl0cyBmb3IgY29tcGxldGlvbgorICAgICAgIGJlZm9yZSByZXR1cm5pbmcuCisgICAg ICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVy YWw+cmVxdWVzdGVkPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhl IGNoZWNrcG9pbnQgcmVxdWVzdCBoYXMgYmVlbiBtYWRlLgorICAgICAgPC9lbnRyeT4KKyAgICAg PC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+d2FsPC9saXRlcmFsPjwv ZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNoZWNrcG9pbnQgaXMgc3RhcnRlZCBi ZWNhdXNlIDxsaXRlcmFsPm1heF93YWxfc2l6ZTwvbGl0ZXJhbD4gaXMKKyAgICAgICByZWFjaGVk LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+ PGxpdGVyYWw+dGltZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRo ZSBjaGVja3BvaW50IGlzIHN0YXJ0ZWQgYmVjYXVzZSA8bGl0ZXJhbD5jaGVja3BvaW50X3RpbWVv dXQ8L2xpdGVyYWw+CisgICAgICAgZXhwaXJlZC4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93 PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKworICA8dGFibGUgaWQ9 ImNoZWNrcG9pbnQtcGhhc2VzIj4KKyAgIDx0aXRsZT5DaGVja3BvaW50IFBoYXNlczwvdGl0bGU+ CisgICA8dGdyb3VwIGNvbHM9IjIiPgorICAgIDxjb2xzcGVjIGNvbG5hbWU9ImNvbDEiIGNvbHdp ZHRoPSIxKiIvPgorICAgIDxjb2xzcGVjIGNvbG5hbWU9ImNvbDIiIGNvbHdpZHRoPSIyKiIvPgor ICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT5QaGFzZTwvZW50cnk+CisgICAg ICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgor ICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5pbml0aWFsaXpp bmc8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgY2hlY2twb2lu dGVyIHByb2Nlc3MgaXMgcHJlcGFyaW5nIHRvIGJlZ2luIHRoZSBjaGVja3BvaW50IG9wZXJhdGlv bi4KKyAgICAgICBUaGlzIHBoYXNlIGlzIGV4cGVjdGVkIHRvIGJlIHZlcnkgYnJpZWYuCisgICAg ICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJh bD5nZXR0aW5nIHZpcnR1YWwgdHJhbnNhY3Rpb24gSURzPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICA8ZW50cnk+CisgICAgICAgVGhlIGNoZWNrcG9pbnRlciBwcm9jZXNzIGlzIGdldHRpbmcgdGhl IHZpcnR1YWwgdHJhbnNhY3Rpb24gSURzIHRoYXQKKyAgICAgICBhcmUgZGVsYXlpbmcgdGhlIGNo ZWNrcG9pbnQuCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGl0ZXJhbD5jaGVja3BvaW50aW5nIHJlcGxpY2F0aW9uIHNsb3RzPC9saXRlcmFs PjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNoZWNrcG9pbnRlciBwcm9jZXNz IGlzIGN1cnJlbnRseSBmbHVzaGluZyBhbGwgdGhlIHJlcGxpY2F0aW9uIHNsb3RzCisgICAgICAg dG8gZGlzay4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAg PGVudHJ5PjxsaXRlcmFsPmNoZWNrcG9pbnRpbmcgbG9naWNhbCByZXBsaWNhdGlvbiBzbmFwc2hv dCBmaWxlczwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVj a3BvaW50ZXIgcHJvY2VzcyBpcyBjdXJyZW50bHkgcmVtb3ZpbmcgYWxsIHRoZSBzZXJpYWxpemVk CisgICAgICAgc25hcHNob3QgZmlsZXMgdGhhdCBhcmUgbm90IHJlcXVpcmVkIGFueW1vcmUuCisg ICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0 ZXJhbD5jaGVja3BvaW50aW5nIGxvZ2ljYWwgcmV3cml0ZSBtYXBwaW5nIGZpbGVzPC9saXRlcmFs PjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNoZWNrcG9pbnRlciBwcm9jZXNz IGlzIGN1cnJlbnRseSByZW1vdmluZyB1bndhbnRlZCBvciBmbHVzaGluZworICAgICAgIHJlcXVp cmVkIGxvZ2ljYWwgcmV3cml0ZSBtYXBwaW5nIGZpbGVzLgorICAgICAgPC9lbnRyeT4KKyAgICAg PC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+Y2hlY2twb2ludGluZyBy ZXBsaWNhdGlvbiBvcmlnaW48L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAg ICBUaGUgY2hlY2twb2ludGVyIHByb2Nlc3MgaXMgY3VycmVudGx5IHBlcmZvcm1pbmcgYSBjaGVj a3BvaW50IG9mIGVhY2gKKyAgICAgICByZXBsaWNhdGlvbiBvcmlnaW4ncyBwcm9ncmVzcyB3aXRo IHJlc3BlY3QgdG8gdGhlIHJlcGxheWVkIHJlbW90ZSBMU04uCisgICAgICA8L2VudHJ5PgorICAg ICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5jaGVja3BvaW50aW5n IGNvbW1pdCBsb2cgcGFnZXM8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAg ICBUaGUgY2hlY2twb2ludGVyIHByb2Nlc3MgaXMgY3VycmVudGx5IHdyaXRpbmcgY29tbWl0IGxv ZyBwYWdlcyB0byBkaXNrLgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+ CisgICAgICA8ZW50cnk+PGxpdGVyYWw+Y2hlY2twb2ludGluZyBjb21taXQgdGltZSBzdGFtcCBw YWdlczwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVja3Bv aW50ZXIgcHJvY2VzcyBpcyBjdXJyZW50bHkgd3JpdGluZyBjb21taXQgdGltZSBzdGFtcCBwYWdl cyB0bworICAgICAgIGRpc2suCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5jaGVja3BvaW50aW5nIHN1YnRyYW5zYWN0aW9uIHBh Z2VzPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNoZWNrcG9p bnRlciBwcm9jZXNzIGlzIGN1cnJlbnRseSB3cml0aW5nIHN1YnRyYW5zYWN0aW9uIHBhZ2VzIHRv IGRpc2suCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeT48bGl0ZXJhbD5jaGVja3BvaW50aW5nIG11bHRpeGFjdCBwYWdlczwvbGl0ZXJhbD48L2Vu dHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVja3BvaW50ZXIgcHJvY2VzcyBpcyBj dXJyZW50bHkgd3JpdGluZyBtdWx0aXhhY3QgcGFnZXMgdG8gZGlzay4KKyAgICAgIDwvZW50cnk+ CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmNoZWNrcG9p bnRpbmcgcHJlZGljYXRlIGxvY2sgcGFnZXM8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT4KKyAgICAgICBUaGUgY2hlY2twb2ludGVyIHByb2Nlc3MgaXMgY3VycmVudGx5IHdyaXRpbmcg cHJlZGljYXRlIGxvY2sgcGFnZXMgdG8gZGlzay4KKyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93 PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmNoZWNrcG9pbnRpbmcgYnVmZmVy czwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVja3BvaW50 ZXIgcHJvY2VzcyBpcyBjdXJyZW50bHkgd3JpdGluZyBidWZmZXJzIHRvIGRpc2suCisgICAgICA8 L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5w cm9jZXNzaW5nIGZpbGUgc3luYyByZXF1ZXN0czwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVu dHJ5PgorICAgICAgIFRoZSBjaGVja3BvaW50ZXIgcHJvY2VzcyBpcyBjdXJyZW50bHkgcHJvY2Vz c2luZyBmaWxlIHN5bmMgcmVxdWVzdHMuCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5wZXJmb3JtaW5nIHR3byBwaGFzZSBjaGVj a3BvaW50PC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNoZWNr cG9pbnRlciBwcm9jZXNzIGlzIGN1cnJlbnRseSBwZXJmb3JtaW5nIHR3byBwaGFzZSBjaGVja3Bv aW50LgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50 cnk+PGxpdGVyYWw+cGVyZm9ybWluZyBwb3N0IGNoZWNrcG9pbnQgY2xlYW51cDwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgPGVudHJ5PgorICAgICAgIFRoZSBjaGVja3BvaW50ZXIgcHJvY2VzcyBp cyBjdXJyZW50bHkgcGVyZm9ybWluZyBwb3N0IGNoZWNrcG9pbnQgY2xlYW51cC4KKyAgICAgICBJ dCByZW1vdmVzIGFueSBsaW5nZXJpbmcgZmlsZXMgdGhhdCBjYW4gYmUgc2FmZWx5IHJlbW92ZWQu CisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48 bGl0ZXJhbD5pbnZhbGlkYXRpbmcgcmVwbGljYXRpb24gc2xvdHM8L2xpdGVyYWw+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgY2hlY2twb2ludGVyIHByb2Nlc3MgaXMgY3VycmVu dGx5IGludmFsaWRhdGluZyByZXBsaWNhdGlvbiBzbG90cy4KKyAgICAgIDwvZW50cnk+CisgICAg IDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnJlY3ljbGluZyBvbGQg V0FMIGZpbGVzPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+CisgICAgICAgVGhlIGNo ZWNrcG9pbnRlciBwcm9jZXNzIGlzIGN1cnJlbnRseSByZWN5Y2xpbmcgb2xkIFdBTCBmaWxlcy4K KyAgICAgIDwvZW50cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5Pjxs aXRlcmFsPnRydW5jYXRpbmcgc3VidHJhbnNhY3Rpb25zPC9saXRlcmFsPjwvZW50cnk+CisgICAg ICA8ZW50cnk+CisgICAgICAgVGhlIGNoZWNrcG9pbnRlciBwcm9jZXNzIGlzIGN1cnJlbnRseSBy ZW1vdmluZyB0aGUgc3VidHJhbnNhY3Rpb24KKyAgICAgICBzZWdtZW50cy4KKyAgICAgIDwvZW50 cnk+CisgICAgIDwvcm93PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPmZpbmFs aXppbmc8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT4KKyAgICAgICBUaGUgY2hlY2tw b2ludGVyIHByb2Nlc3MgaXMgZmluYWxpemluZyB0aGUgY2hlY2twb2ludCBvcGVyYXRpb24uCisg ICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+Cisg IDwvdGFibGU+CisKKyA8L3NlY3QyPgorCiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0iZHluYW1p Yy10cmFjZSI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NoZWNrcG9pbnQuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY2hlY2twb2ludC5zZ21sCmluZGV4IDFjZWJjMDNkMTUuLmYzM2Ri NTBjZmMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY2hlY2twb2ludC5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvY2hlY2twb2ludC5zZ21sCkBAIC01Niw2ICs1NiwxMyBAQCBDSEVD S1BPSU5UCiAgICB0aGUgPGxpbmsgbGlua2VuZD0icHJlZGVmaW5lZC1yb2xlcy10YWJsZSI+PGxp dGVyYWw+cGdfY2hlY2twb2ludGVyPC9saXRlcmFsPjwvbGluaz4KICAgIHJvbGUgY2FuIGNhbGwg PGNvbW1hbmQ+Q0hFQ0tQT0lOVDwvY29tbWFuZD4uCiAgIDwvcGFyYT4KKworICA8cGFyYT4KKyAg ICBUaGUgY2hlY2twb2ludGVyIHByb2Nlc3MgcnVubmluZyB0aGUgY2hlY2twb2ludCB3aWxsIHJl cG9ydCBpdHMgcHJvZ3Jlc3MKKyAgICBpbiB0aGUgPHN0cnVjdG5hbWU+cGdfc3RhdF9wcm9ncmVz c19jaGVja3BvaW50PC9zdHJ1Y3RuYW1lPiB2aWV3IGV4Y2VwdCBmb3IKKyAgICB0aGUgc2h1dGRv d24gYW5kIGVuZC1vZi1yZWNvdmVyeSBjYXNlcy4gU2VlCisgICAgPHhyZWYgbGlua2VuZD0iY2hl Y2twb2ludC1wcm9ncmVzcy1yZXBvcnRpbmciLz4gZm9yIGRldGFpbHMuCisgIDwvcGFyYT4KICA8 L3JlZnNlY3QxPgogCiAgPHJlZnNlY3QxPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3dhbC5z Z21sIGIvZG9jL3NyYy9zZ21sL3dhbC5zZ21sCmluZGV4IDRiNmVmMjgzYzEuLjYwN2YyMWRmZDQg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC93YWwuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvd2Fs LnNnbWwKQEAgLTUzMCw3ICs1MzAsMTEgQEAKICAgIGFkanVzdCB0aGUgPHhyZWYgbGlua2VuZD0i Z3VjLWFyY2hpdmUtdGltZW91dCIvPiBwYXJhbWV0ZXIgcmF0aGVyIHRoYW4gdGhlCiAgICBjaGVj a3BvaW50IHBhcmFtZXRlcnMuKQogICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBmb3JjZSBhIGNo ZWNrcG9pbnQgYnkgdXNpbmcgdGhlIFNRTAotICAgY29tbWFuZCA8Y29tbWFuZD5DSEVDS1BPSU5U PC9jb21tYW5kPi4KKyAgIGNvbW1hbmQgPGNvbW1hbmQ+Q0hFQ0tQT0lOVDwvY29tbWFuZD4uIFRo ZSBjaGVja3BvaW50ZXIgcHJvY2VzcyBydW5uaW5nIHRoZQorICAgY2hlY2twb2ludCB3aWxsIHJl cG9ydCBpdHMgcHJvZ3Jlc3MgaW4gdGhlCisgICA8c3RydWN0bmFtZT5wZ19zdGF0X3Byb2dyZXNz X2NoZWNrcG9pbnQ8L3N0cnVjdG5hbWU+IHZpZXcgZXhjZXB0IGZvciB0aGUKKyAgIHNodXRkb3du IGFuZCBlbmQtb2YtcmVjb3ZlcnkgY2FzZXMuIFNlZQorICAgPHhyZWYgbGlua2VuZD0iY2hlY2tw b2ludC1wcm9ncmVzcy1yZXBvcnRpbmciLz4gZm9yIGRldGFpbHMuCiAgIDwvcGFyYT4KIAogICA8 cGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCA3MTEzNmIxMWEyLi44MjcyZDAy YjFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC02Niw2ICs2Niw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9jYXR2ZXJzaW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9s LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19kYXRhYmFzZS5oIgorI2luY2x1ZGUgImNvbW1hbmRz L3Byb2dyZXNzLmgiCiAjaW5jbHVkZSAiY29tbW9uL2NvbnRyb2xkYXRhX3V0aWxzLmgiCiAjaW5j bHVkZSAiY29tbW9uL2ZpbGVfdXRpbHMuaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50 LmgiCkBAIC02OTUsNiArNjk2LDggQEAgc3RhdGljIHZvaWQgV0FMSW5zZXJ0TG9ja0FjcXVpcmVF eGNsdXNpdmUodm9pZCk7CiBzdGF0aWMgdm9pZCBXQUxJbnNlcnRMb2NrUmVsZWFzZSh2b2lkKTsK IHN0YXRpYyB2b2lkIFdBTEluc2VydExvY2tVcGRhdGVJbnNlcnRpbmdBdChYTG9nUmVjUHRyIGlu c2VydGluZ0F0KTsKIAorc3RhdGljIHZvaWQgY2hlY2twb2ludF9wcm9ncmVzc19zdGFydChpbnQg ZmxhZ3MsIGludCB0eXBlKTsKKwogLyoKICAqIEluc2VydCBhbiBYTE9HIHJlY29yZCByZXByZXNl bnRlZCBieSBhbiBhbHJlYWR5LWNvbnN0cnVjdGVkIGNoYWluIG9mIGRhdGEKICAqIGNodW5rcy4g IFRoaXMgaXMgYSBsb3ctbGV2ZWwgcm91dGluZTsgdG8gY29uc3RydWN0IHRoZSBXQUwgcmVjb3Jk IGhlYWRlcgpAQCAtNjQyOSw2ICs2NDMyLDkgQEAgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3Mp CiAJWExvZ0N0bC0+UmVkb1JlY1B0ciA9IGNoZWNrUG9pbnQucmVkbzsKIAlTcGluTG9ja1JlbGVh c2UoJlhMb2dDdGwtPmluZm9fbGNrKTsKIAorCS8qIFByZXBhcmUgdG8gcmVwb3J0IHByb2dyZXNz IG9mIHRoZSBjaGVja3BvaW50LiAqLworCWNoZWNrcG9pbnRfcHJvZ3Jlc3Nfc3RhcnQoZmxhZ3Ms IFBST0dSRVNTX0NIRUNLUE9JTlRfVFlQRV9DSEVDS1BPSU5UKTsKKwogCS8qCiAJICogSWYgZW5h YmxlZCwgbG9nIGNoZWNrcG9pbnQgc3RhcnQuICBXZSBwb3N0cG9uZSB0aGlzIHVudGlsIG5vdyBz byBhcyBub3QKIAkgKiB0byBsb2cgYW55dGhpbmcgaWYgd2UgZGVjaWRlZCB0byBza2lwIHRoZSBj aGVja3BvaW50LgpAQCAtNjUxMSw2ICs2NTE3LDggQEAgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxh Z3MpCiAJICogY2xvZyBhbmQgd2Ugd2lsbCBjb3JyZWN0bHkgZmx1c2ggdGhlIHVwZGF0ZSBiZWxv dy4gIFNvIHdlIGNhbm5vdCBtaXNzCiAJICogYW55IHhhY3RzIHdlIG5lZWQgdG8gd2FpdCBmb3Iu CiAJICovCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DSEVDS1BPSU5U X1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9HRVRfVklSVFVBTF9U UkFOU0FDVElPTl9JRFMpOwogCXZ4aWRzID0gR2V0VmlydHVhbFhJRHNEZWxheWluZ0Noa3B0KCZu dnhpZHMsIERFTEFZX0NIS1BUX1NUQVJUKTsKIAlpZiAobnZ4aWRzID4gMCkKIAl7CkBAIC02NjI2 LDYgKzY2MzQsOCBAQCBDcmVhdGVDaGVja1BvaW50KGludCBmbGFncykKIAkvKgogCSAqIExldCBz bWdyIGRvIHBvc3QtY2hlY2twb2ludCBjbGVhbnVwIChlZywgZGVsZXRpbmcgb2xkIGZpbGVzKS4K IAkgKi8KKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NIRUNLUE9JTlRf UEhBU0UsCisJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX1BPU1RfQ0hFQ0tQT0lO VF9DTEVBTlVQKTsKIAlTeW5jUG9zdENoZWNrcG9pbnQoKTsKIAogCS8qCkBAIC02NjQxLDYgKzY2 NTEsOSBAQCBDcmVhdGVDaGVja1BvaW50KGludCBmbGFncykKIAkgKi8KIAlYTEJ5dGVUb1NlZyhS ZWRvUmVjUHRyLCBfbG9nU2VnTm8sIHdhbF9zZWdtZW50X3NpemUpOwogCUtlZXBMb2dTZWcocmVj cHRyLCAmX2xvZ1NlZ05vKTsKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNT X0NIRUNLUE9JTlRfUEhBU0UsCisJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX0lO VkFMSURBVEVfUkVQTElfU0xPVFMpOworCiAJaWYgKEludmFsaWRhdGVPYnNvbGV0ZVJlcGxpY2F0 aW9uU2xvdHMoX2xvZ1NlZ05vKSkKIAl7CiAJCS8qCkBAIC02NjUxLDYgKzY2NjQsOCBAQCBDcmVh dGVDaGVja1BvaW50KGludCBmbGFncykKIAkJS2VlcExvZ1NlZyhyZWNwdHIsICZfbG9nU2VnTm8p OwogCX0KIAlfbG9nU2VnTm8tLTsKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0NIRUNLUE9JTlRfUEhBU0UsCisJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNF X1JFQ1lDTEVfT0xEX1hMT0cpOwogCVJlbW92ZU9sZFhsb2dGaWxlcyhfbG9nU2VnTm8sIFJlZG9S ZWNQdHIsIHJlY3B0ciwKIAkJCQkJICAgY2hlY2tQb2ludC5UaGlzVGltZUxpbmVJRCk7CiAKQEAg LTY2NjksMTEgKzY2ODQsMjEgQEAgQ3JlYXRlQ2hlY2tQb2ludChpbnQgZmxhZ3MpCiAJICogU3Rh cnR1cFNVQlRSQU5TIGhhc24ndCBiZWVuIGNhbGxlZCB5ZXQuCiAJICovCiAJaWYgKCFSZWNvdmVy eUluUHJvZ3Jlc3MoKSkKKwl7CisJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNF X1RSVU5DQVRFX1NVQlRSQU5TKTsKIAkJVHJ1bmNhdGVTVUJUUkFOUyhHZXRPbGRlc3RUcmFuc2Fj dGlvbklkQ29uc2lkZXJlZFJ1bm5pbmcoKSk7CisJfQorCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0 ZV9wYXJhbShQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ0hF Q0tQT0lOVF9QSEFTRV9GSU5BTElaRSk7CiAKIAkvKiBSZWFsIHdvcmsgaXMgZG9uZTsgbG9nIGFu ZCB1cGRhdGUgc3RhdHMuICovCiAJTG9nQ2hlY2twb2ludEVuZChmYWxzZSk7CiAKKwkvKiBTdG9w IHJlcG9ydGluZyBwcm9ncmVzcyBvZiB0aGUgY2hlY2twb2ludC4gKi8KKwlwZ3N0YXRfcHJvZ3Jl c3NfZW5kX2NvbW1hbmQoKTsKKwogCS8qIFJlc2V0IHRoZSBwcm9jZXNzIHRpdGxlICovCiAJdXBk YXRlX2NoZWNrcG9pbnRfZGlzcGxheShmbGFncywgZmFsc2UsIHRydWUpOwogCkBAIC02ODMwLDI5 ICs2ODU1LDYzIEBAIHN0YXRpYyB2b2lkCiBDaGVja1BvaW50R3V0cyhYTG9nUmVjUHRyIGNoZWNr UG9pbnRSZWRvLCBpbnQgZmxhZ3MpCiB7CiAJQ2hlY2tQb2ludFJlbGF0aW9uTWFwKCk7CisKKwlw Z3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0UsCisJ CQkJCQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX1JFUExJX1NMT1RTKTsKIAlDaGVja1Bv aW50UmVwbGljYXRpb25TbG90cygpOworCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQ Uk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9Q SEFTRV9TTkFQU0hPVFMpOwogCUNoZWNrUG9pbnRTbmFwQnVpbGQoKTsKKworCXBnc3RhdF9wcm9n cmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJIFBS T0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfTE9HSUNBTF9SRVdSSVRFX01BUFBJTkdTKTsKIAlDaGVj a1BvaW50TG9naWNhbFJld3JpdGVIZWFwKCk7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3Bh cmFtKFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0UsCisJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BP SU5UX1BIQVNFX1JFUExJX09SSUdJTik7CiAJQ2hlY2tQb2ludFJlcGxpY2F0aW9uT3JpZ2luKCk7 CiAKIAkvKiBXcml0ZSBvdXQgYWxsIGRpcnR5IGRhdGEgaW4gU0xSVXMgYW5kIHRoZSBtYWluIGJ1 ZmZlciBwb29sICovCiAJVFJBQ0VfUE9TVEdSRVNRTF9CVUZGRVJfQ0hFQ0tQT0lOVF9TVEFSVChm bGFncyk7CiAJQ2hlY2twb2ludFN0YXRzLmNrcHRfd3JpdGVfdCA9IEdldEN1cnJlbnRUaW1lc3Rh bXAoKTsKKworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0hFQ0tQT0lO VF9QSEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfQ0xPR19QQUdFUyk7 CiAJQ2hlY2tQb2ludENMT0coKTsKKworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhB U0VfQ09NTUlUVFNfUEFHRVMpOwogCUNoZWNrUG9pbnRDb21taXRUcygpOworCisJcGdzdGF0X3By b2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFLAorCQkJCQkJCQkg UFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9TVUJUUkFOU19QQUdFUyk7CiAJQ2hlY2tQb2ludFNV QlRSQU5TKCk7CisKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NIRUNL UE9JTlRfUEhBU0UsCisJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX01VTFRJWEFD VF9QQUdFUyk7CiAJQ2hlY2tQb2ludE11bHRpWGFjdCgpOworCisJcGdzdGF0X3Byb2dyZXNzX3Vw ZGF0ZV9wYXJhbShQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1Nf Q0hFQ0tQT0lOVF9QSEFTRV9QUkVESUNBVEVfTE9DS19QQUdFUyk7CiAJQ2hlY2tQb2ludFByZWRp Y2F0ZSgpOworCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DSEVDS1BP SU5UX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9CVUZGRVJTKTsK IAlDaGVja1BvaW50QnVmZmVycyhmbGFncyk7CiAKIAkvKiBQZXJmb3JtIGFsbCBxdWV1ZWQgdXAg ZnN5bmNzICovCiAJVFJBQ0VfUE9TVEdSRVNRTF9CVUZGRVJfQ0hFQ0tQT0lOVF9TWU5DX1NUQVJU KCk7CiAJQ2hlY2twb2ludFN0YXRzLmNrcHRfc3luY190ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgp OworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFT RSwKKwkJCQkJCQkJIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfU1lOQ19GSUxFUyk7CiAJUHJv Y2Vzc1N5bmNSZXF1ZXN0cygpOwogCUNoZWNrcG9pbnRTdGF0cy5ja3B0X3N5bmNfZW5kX3QgPSBH ZXRDdXJyZW50VGltZXN0YW1wKCk7CiAJVFJBQ0VfUE9TVEdSRVNRTF9CVUZGRVJfQ0hFQ0tQT0lO VF9ET05FKCk7CiAKIAkvKiBXZSBkZWxpYmVyYXRlbHkgZGVsYXkgMlBDIGNoZWNrcG9pbnRpbmcg YXMgbG9uZyBhcyBwb3NzaWJsZSAqLworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJP R1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwKKwkJCQkJCQkJIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhB U0VfVFdPX1BIQVNFKTsKIAlDaGVja1BvaW50VHdvUGhhc2UoY2hlY2tQb2ludFJlZG8pOwogfQog CkBAIC03MDAyLDYgKzcwNjEsOSBAQCBDcmVhdGVSZXN0YXJ0UG9pbnQoaW50IGZsYWdzKQogCU1l bVNldCgmQ2hlY2twb2ludFN0YXRzLCAwLCBzaXplb2YoQ2hlY2twb2ludFN0YXRzKSk7CiAJQ2hl Y2twb2ludFN0YXRzLmNrcHRfc3RhcnRfdCA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKIAorCS8q IFByZXBhcmUgdG8gcmVwb3J0IHByb2dyZXNzIG9mIHRoZSByZXN0YXJ0cG9pbnQuICovCisJY2hl Y2twb2ludF9wcm9ncmVzc19zdGFydChmbGFncywgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9UWVBFX1JF U1RBUlRQT0lOVCk7CisKIAlpZiAobG9nX2NoZWNrcG9pbnRzKQogCQlMb2dDaGVja3BvaW50U3Rh cnQoZmxhZ3MsIHRydWUpOwogCkBAIC03MDg1LDYgKzcxNDcsOSBAQCBDcmVhdGVSZXN0YXJ0UG9p bnQoaW50IGZsYWdzKQogCXJlcGxheVB0ciA9IEdldFhMb2dSZXBsYXlSZWNQdHIoJnJlcGxheVRM SSk7CiAJZW5kcHRyID0gKHJlY2VpdmVQdHIgPCByZXBsYXlQdHIpID8gcmVwbGF5UHRyIDogcmVj ZWl2ZVB0cjsKIAlLZWVwTG9nU2VnKGVuZHB0ciwgJl9sb2dTZWdObyk7CisJcGdzdGF0X3Byb2dy ZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFLAorCQkJCQkJCQkgUFJP R1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9JTlZBTElEQVRFX1JFUExJX1NMT1RTKTsKKwogCWlmIChJ bnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNsb3RzKF9sb2dTZWdObykpCiAJewogCQkvKgpA QCAtNzExMSw2ICs3MTc2LDggQEAgQ3JlYXRlUmVzdGFydFBvaW50KGludCBmbGFncykKIAlpZiAo IVJlY292ZXJ5SW5Qcm9ncmVzcygpKQogCQlyZXBsYXlUTEkgPSBYTG9nQ3RsLT5JbnNlcnRUaW1l TGluZUlEOwogCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DSEVDS1BP SU5UX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9SRUNZQ0xFX09M RF9YTE9HKTsKIAlSZW1vdmVPbGRYbG9nRmlsZXMoX2xvZ1NlZ05vLCBSZWRvUmVjUHRyLCBlbmRw dHIsIHJlcGxheVRMSSk7CiAKIAkvKgpAQCAtNzEyNywxMSArNzE5NCwyMCBAQCBDcmVhdGVSZXN0 YXJ0UG9pbnQoaW50IGZsYWdzKQogCSAqIHRoaXMgYmVjYXVzZSBTdGFydHVwU1VCVFJBTlMgaGFz bid0IGJlZW4gY2FsbGVkIHlldC4KIAkgKi8KIAlpZiAoRW5hYmxlSG90U3RhbmRieSkKKwl7CisJ CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRSwK KwkJCQkJCQkJCSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX1RSVU5DQVRFX1NVQlRSQU5TKTsK IAkJVHJ1bmNhdGVTVUJUUkFOUyhHZXRPbGRlc3RUcmFuc2FjdGlvbklkQ29uc2lkZXJlZFJ1bm5p bmcoKSk7CisJfQogCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DSEVD S1BPSU5UX1BIQVNFLAorCQkJCQkJCQkgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9GSU5BTEla RSk7CiAJLyogUmVhbCB3b3JrIGlzIGRvbmU7IGxvZyBhbmQgdXBkYXRlIHN0YXRzLiAqLwogCUxv Z0NoZWNrcG9pbnRFbmQodHJ1ZSk7CiAKKwkvKiBTdG9wIHJlcG9ydGluZyBwcm9ncmVzcyBvZiB0 aGUgcmVzdGFydHBvaW50LiAqLworCXBnc3RhdF9wcm9ncmVzc19lbmRfY29tbWFuZCgpOworCiAJ LyogUmVzZXQgdGhlIHByb2Nlc3MgdGl0bGUgKi8KIAl1cGRhdGVfY2hlY2twb2ludF9kaXNwbGF5 KGZsYWdzLCB0cnVlLCB0cnVlKTsKIApAQCAtODg4MCwzICs4OTU2LDI5IEBAIFNldFdhbFdyaXRl clNsZWVwaW5nKGJvb2wgc2xlZXBpbmcpCiAJWExvZ0N0bC0+V2FsV3JpdGVyU2xlZXBpbmcgPSBz bGVlcGluZzsKIAlTcGluTG9ja1JlbGVhc2UoJlhMb2dDdGwtPmluZm9fbGNrKTsKIH0KKworLyoK KyAqIFN0YXJ0IHJlcG9ydGluZyBwcm9ncmVzcyBvZiB0aGUgY2hlY2twb2ludC4KKyAqLworc3Rh dGljIHZvaWQKK2NoZWNrcG9pbnRfcHJvZ3Jlc3Nfc3RhcnQoaW50IGZsYWdzLCBpbnQgdHlwZSkK K3sKKwljb25zdCBpbnQJaW5kZXhbXSA9IHsKKwkJUFJPR1JFU1NfQ0hFQ0tQT0lOVF9UWVBFLAor CQlQUk9HUkVTU19DSEVDS1BPSU5UX0ZMQUdTLAorCQlQUk9HUkVTU19DSEVDS1BPSU5UX0xTTiwK KwkJUFJPR1JFU1NfQ0hFQ0tQT0lOVF9TVEFSVF9USU1FU1RBTVAsCisJCVBST0dSRVNTX0NIRUNL UE9JTlRfUEhBU0UKKwkJfTsKKwlpbnQ2NAkJdmFsWzVdOworCisJcGdzdGF0X3Byb2dyZXNzX3N0 YXJ0X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFORF9DSEVDS1BPSU5ULCBJbnZhbGlkT2lkKTsKKwor CXZhbFswXSA9IHR5cGU7CisJdmFsWzFdID0gZmxhZ3M7CisJdmFsWzJdID0gUmVkb1JlY1B0cjsK Kwl2YWxbM10gPSBDaGVja3BvaW50U3RhdHMuY2twdF9zdGFydF90OworCXZhbFs0XSA9IFBST0dS RVNTX0NIRUNLUE9JTlRfUEhBU0VfSU5JVDsKKworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVs dGlfcGFyYW0oNSwgaW5kZXgsIHZhbCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IGZlZGFlZDUzM2IuLjIwZDAyOWE1 NDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEyNjUsNiArMTI2NSw1 NyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3Byb2dyZXNzX2NvcHkgQVMKICAgICBGUk9NIHBnX3N0 YXRfZ2V0X3Byb2dyZXNzX2luZm8oJ0NPUFknKSBBUyBTCiAgICAgICAgIExFRlQgSk9JTiBwZ19k YXRhYmFzZSBEIE9OIFMuZGF0aWQgPSBELm9pZDsKIAorQ1JFQVRFIFZJRVcgcGdfc3RhdF9wcm9n cmVzc19jaGVja3BvaW50IEFTCisgICAgU0VMRUNUCisgICAgICAgIFMucGlkIEFTIHBpZCwKKyAg ICAgICAgQ0FTRSBTLnBhcmFtMSBXSEVOIDEgVEhFTiAnY2hlY2twb2ludCcKKyAgICAgICAgICAg ICAgICAgICAgICBXSEVOIDIgVEhFTiAncmVzdGFydHBvaW50JworICAgICAgICAgICAgICAgICAg ICAgIEVORCBBUyB0eXBlLAorICAgICAgICAoIENBU0UgV0hFTiAoUy5wYXJhbTIgJiA0KSA+IDAg VEhFTiAnaW1tZWRpYXRlICcgRUxTRSAnJyBFTkQgfHwKKyAgICAgICAgICBDQVNFIFdIRU4gKFMu cGFyYW0yICYgOCkgPiAwIFRIRU4gJ2ZvcmNlICcgRUxTRSAnJyBFTkQgfHwKKyAgICAgICAgICBD QVNFIFdIRU4gKFMucGFyYW0yICYgMTYpID4gMCBUSEVOICdmbHVzaC1hbGwgJyBFTFNFICcnIEVO RCB8fAorICAgICAgICAgIENBU0UgV0hFTiAoUy5wYXJhbTIgJiAzMikgPiAwIFRIRU4gJ3dhaXQg JyBFTFNFICcnIEVORCB8fAorICAgICAgICAgIENBU0UgV0hFTiAoUy5wYXJhbTIgJiAxMjgpID4g MCBUSEVOICd3YWwgJyBFTFNFICcnIEVORCB8fAorICAgICAgICAgIENBU0UgV0hFTiAoUy5wYXJh bTIgJiAyNTYpID4gMCBUSEVOICd0aW1lICcgRUxTRSAnJyBFTkQKKyAgICAgICAgKSBBUyBmbGFn cywKKyAgICAgICAgKCAnMC8wJzo6cGdfbHNuICsKKyAgICAgICAgICAoKENBU0UKKyAgICAgICAg ICAgICAgICBXSEVOIFMucGFyYW0zIDwgMCBUSEVOIHBvdygyOjpudW1lcmljLCA2NDo6bnVtZXJp Yyk6Om51bWVyaWMKKyAgICAgICAgICAgICAgICBFTFNFIDA6Om51bWVyaWMKKyAgICAgICAgICAg IEVORCkgKworICAgICAgICAgICBTLnBhcmFtMzo6bnVtZXJpYykKKyAgICAgICAgKSBBUyBzdGFy dF9sc24sCisgICAgICAgIHRvX3RpbWVzdGFtcCg5NDY2ODQ4MDAgKyAoUy5wYXJhbTQ6OmZsb2F0 OCAvIDEwMDAwMDApKSBBUyBzdGFydF90aW1lLAorICAgICAgICBDQVNFIFMucGFyYW01IFdIRU4g MSBUSEVOICdpbml0aWFsaXppbmcnCisgICAgICAgICAgICAgICAgICAgICAgV0hFTiAyIFRIRU4g J2dldHRpbmcgdmlydHVhbCB0cmFuc2FjdGlvbiBJRHMnCisgICAgICAgICAgICAgICAgICAgICAg V0hFTiAzIFRIRU4gJ2NoZWNrcG9pbnRpbmcgcmVwbGljYXRpb24gc2xvdHMnCisgICAgICAgICAg ICAgICAgICAgICAgV0hFTiA0IFRIRU4gJ2NoZWNrcG9pbnRpbmcgbG9naWNhbCByZXBsaWNhdGlv biBzbmFwc2hvdCBmaWxlcycKKyAgICAgICAgICAgICAgICAgICAgICBXSEVOIDUgVEhFTiAnY2hl Y2twb2ludGluZyBsb2dpY2FsIHJld3JpdGUgbWFwcGluZyBmaWxlcycKKyAgICAgICAgICAgICAg ICAgICAgICBXSEVOIDYgVEhFTiAnY2hlY2twb2ludGluZyByZXBsaWNhdGlvbiBvcmlnaW4nCisg ICAgICAgICAgICAgICAgICAgICAgV0hFTiA3IFRIRU4gJ2NoZWNrcG9pbnRpbmcgY29tbWl0IGxv ZyBwYWdlcycKKyAgICAgICAgICAgICAgICAgICAgICBXSEVOIDggVEhFTiAnY2hlY2twb2ludGlu ZyBjb21taXQgdGltZSBzdGFtcCBwYWdlcycKKyAgICAgICAgICAgICAgICAgICAgICBXSEVOIDkg VEhFTiAnY2hlY2twb2ludGluZyBzdWJ0cmFuc2FjdGlvbiBwYWdlcycKKyAgICAgICAgICAgICAg ICAgICAgICBXSEVOIDEwIFRIRU4gJ2NoZWNrcG9pbnRpbmcgbXVsdGl4YWN0IHBhZ2VzJworICAg ICAgICAgICAgICAgICAgICAgIFdIRU4gMTEgVEhFTiAnY2hlY2twb2ludGluZyBwcmVkaWNhdGUg bG9jayBwYWdlcycKKyAgICAgICAgICAgICAgICAgICAgICBXSEVOIDEyIFRIRU4gJ2NoZWNrcG9p bnRpbmcgYnVmZmVycycKKyAgICAgICAgICAgICAgICAgICAgICBXSEVOIDEzIFRIRU4gJ3Byb2Nl c3NpbmcgZmlsZSBzeW5jIHJlcXVlc3RzJworICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMTQg VEhFTiAncGVyZm9ybWluZyB0d28gcGhhc2UgY2hlY2twb2ludCcKKyAgICAgICAgICAgICAgICAg ICAgICBXSEVOIDE1IFRIRU4gJ3BlcmZvcm1pbmcgcG9zdCBjaGVja3BvaW50IGNsZWFudXAnCisg ICAgICAgICAgICAgICAgICAgICAgV0hFTiAxNiBUSEVOICdpbnZhbGlkYXRpbmcgcmVwbGljYXRp b24gc2xvdHMnCisgICAgICAgICAgICAgICAgICAgICAgV0hFTiAxNyBUSEVOICdyZWN5Y2xpbmcg b2xkIFdBTCBmaWxlcycKKyAgICAgICAgICAgICAgICAgICAgICBXSEVOIDE4IFRIRU4gJ3RydW5j YXRpbmcgc3VidHJhbnNhY3Rpb25zJworICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMTkgVEhF TiAnZmluYWxpemluZycKKyAgICAgICAgICAgICAgICAgICAgICBFTkQgQVMgcGhhc2UsCisgICAg ICAgIFMucGFyYW02IEFTIGJ1ZmZlcnNfdG90YWwsCisgICAgICAgIFMucGFyYW03IEFTIGJ1ZmZl cnNfcHJvY2Vzc2VkLAorICAgICAgICBTLnBhcmFtOCBBUyBidWZmZXJzX3dyaXR0ZW4sCisgICAg ICAgIFMucGFyYW05IEFTIGZpbGVzX3RvdGFsLAorICAgICAgICBTLnBhcmFtMTAgQVMgZmlsZXNf c3luY2VkLAorICAgICAgICBDQVNFIFMucGFyYW0xMSBXSEVOIDAgVEhFTiAnZmFsc2UnCisgICAg ICAgICAgICAgICAgICAgICAgIFdIRU4gMSBUSEVOICd0cnVlJworICAgICAgICAgICAgICAgICAg ICAgICBFTkQgQVMgbmV3X3JlcXVlc3RzCisgICAgRlJPTSBwZ19zdGF0X2dldF9wcm9ncmVzc19p bmZvKCdDSEVDS1BPSU5UJykgQVMgUzsKKwogQ1JFQVRFIFZJRVcgcGdfdXNlcl9tYXBwaW5ncyBB UwogICAgIFNFTEVDVAogICAgICAgICBVLm9pZCAgICAgICBBUyB1bWlkLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvY2hlY2twb2ludGVyLmMKaW5kZXggYzkzN2MzOWY1MC4uNzljYWU3ZTljYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ19pbnRlcm5hbC5oIgogI2lu Y2x1ZGUgImFjY2Vzcy94bG9ncmVjb3ZlcnkuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9wcm9ncmVz cy5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgi CiAjaW5jbHVkZSAicGdzdGF0LmgiCkBAIC0xNjMsNyArMTY0LDcgQEAgc3RhdGljIHBnX3RpbWVf dCBsYXN0X3hsb2dfc3dpdGNoX3RpbWU7CiBzdGF0aWMgdm9pZCBIYW5kbGVDaGVja3BvaW50ZXJJ bnRlcnJ1cHRzKHZvaWQpOwogc3RhdGljIHZvaWQgQ2hlY2tBcmNoaXZlVGltZW91dCh2b2lkKTsK IHN0YXRpYyBib29sIElzQ2hlY2twb2ludE9uU2NoZWR1bGUoZG91YmxlIHByb2dyZXNzKTsKLXN0 YXRpYyBib29sIEltbWVkaWF0ZUNoZWNrcG9pbnRSZXF1ZXN0ZWQodm9pZCk7CitzdGF0aWMgYm9v bCBJbW1lZGlhdGVDaGVja3BvaW50UmVxdWVzdGVkKGludCBmbGFncyk7CiBzdGF0aWMgYm9vbCBD b21wYWN0Q2hlY2twb2ludGVyUmVxdWVzdFF1ZXVlKHZvaWQpOwogc3RhdGljIHZvaWQgVXBkYXRl U2hhcmVkTWVtb3J5Q29uZmlnKHZvaWQpOwogCkBAIC02NjcsMTYgKzY2OCwyNCBAQCBDaGVja0Fy Y2hpdmVUaW1lb3V0KHZvaWQpCiAgKiB0aGVyZSBpcyBvbmUgcGVuZGluZyBiZWhpbmQgaXQuKQog ICovCiBzdGF0aWMgYm9vbAotSW1tZWRpYXRlQ2hlY2twb2ludFJlcXVlc3RlZCh2b2lkKQorSW1t ZWRpYXRlQ2hlY2twb2ludFJlcXVlc3RlZChpbnQgZmxhZ3MpCiB7CiAJdm9sYXRpbGUgQ2hlY2tw b2ludGVyU2htZW1TdHJ1Y3QgKmNwcyA9IENoZWNrcG9pbnRlclNobWVtOwogCisJaWYgKGNwcy0+ Y2twdF9mbGFncyAmIENIRUNLUE9JTlRfUkVRVUVTVEVEKQorCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBk YXRlX3BhcmFtKFBST0dSRVNTX0NIRUNLUE9JTlRfTkVXX1JFUVVFU1RTLCB0cnVlKTsKKwogCS8q CiAJICogV2UgZG9uJ3QgbmVlZCB0byBhY3F1aXJlIHRoZSBja3B0X2xjayBpbiB0aGlzIGNhc2Ug YmVjYXVzZSB3ZSdyZSBvbmx5CiAJICogbG9va2luZyBhdCBhIHNpbmdsZSBmbGFnIGJpdC4KIAkg Ki8KIAlpZiAoY3BzLT5ja3B0X2ZsYWdzICYgQ0hFQ0tQT0lOVF9JTU1FRElBVEUpCisJeworCQlw Z3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NIRUNLUE9JTlRfRkxBR1MsCisJ CQkJCQkJCQkgKGZsYWdzIHwgQ0hFQ0tQT0lOVF9JTU1FRElBVEUpKTsKIAkJcmV0dXJuIHRydWU7 CisJfQorCiAJcmV0dXJuIGZhbHNlOwogfQogCkBAIC03MDgsNyArNzE3LDcgQEAgQ2hlY2twb2lu dFdyaXRlRGVsYXkoaW50IGZsYWdzLCBkb3VibGUgcHJvZ3Jlc3MpCiAJICovCiAJaWYgKCEoZmxh Z3MgJiBDSEVDS1BPSU5UX0lNTUVESUFURSkgJiYKIAkJIVNodXRkb3duUmVxdWVzdFBlbmRpbmcg JiYKLQkJIUltbWVkaWF0ZUNoZWNrcG9pbnRSZXF1ZXN0ZWQoKSAmJgorCQkhSW1tZWRpYXRlQ2hl Y2twb2ludFJlcXVlc3RlZChmbGFncykgJiYKIAkJSXNDaGVja3BvaW50T25TY2hlZHVsZShwcm9n cmVzcykpCiAJewogCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zm1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZm ZXIvYnVmbWdyLmMKaW5kZXggYWUxMzAxMWQyNy4uNTVmMDNjMTMwMSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvYnVmbWdyLmMKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL2Nh dGFsb2cuaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2UuaCIKICNpbmNsdWRlICJjYXRhbG9n L3N0b3JhZ2VfeGxvZy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3Byb2dyZXNzLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgogI2luY2x1ZGUgImxpYi9iaW5hcnloZWFwLmgiCiAj aW5jbHVkZSAibWlzY2FkbWluLmgiCkBAIC0yMDE5LDYgKzIwMjAsOCBAQCBCdWZmZXJTeW5jKGlu dCBmbGFncykKIAlXcml0ZWJhY2tDb250ZXh0SW5pdCgmd2JfY29udGV4dCwgJmNoZWNrcG9pbnRf Zmx1c2hfYWZ0ZXIpOwogCiAJVFJBQ0VfUE9TVEdSRVNRTF9CVUZGRVJfU1lOQ19TVEFSVChOQnVm ZmVycywgbnVtX3RvX3NjYW4pOworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JF U1NfQ0hFQ0tQT0lOVF9CVUZGRVJTX1RPVEFMLAorCQkJCQkJCQkgbnVtX3RvX3NjYW4pOwogCiAJ LyoKIAkgKiBTb3J0IGJ1ZmZlcnMgdGhhdCBuZWVkIHRvIGJlIHdyaXR0ZW4gdG8gcmVkdWNlIHRo ZSBsaWtlbGlob29kIG9mIHJhbmRvbQpAQCAtMjEzNiw2ICsyMTM5LDggQEAgQnVmZmVyU3luYyhp bnQgZmxhZ3MpCiAJCWJ1ZkhkciA9IEdldEJ1ZmZlckRlc2NyaXB0b3IoYnVmX2lkKTsKIAogCQlu dW1fcHJvY2Vzc2VkKys7CisJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1Nf Q0hFQ0tQT0lOVF9CVUZGRVJTX1BST0NFU1NFRCwKKwkJCQkJCQkJCSBudW1fcHJvY2Vzc2VkKTsK IAogCQkvKgogCQkgKiBXZSBkb24ndCBuZWVkIHRvIGFjcXVpcmUgdGhlIGxvY2sgaGVyZSwgYmVj YXVzZSB3ZSdyZSBvbmx5IGxvb2tpbmcKQEAgLTIxNTYsNiArMjE2MSw4IEBAIEJ1ZmZlclN5bmMo aW50IGZsYWdzKQogCQkJCVRSQUNFX1BPU1RHUkVTUUxfQlVGRkVSX1NZTkNfV1JJVFRFTihidWZf aWQpOwogCQkJCVBlbmRpbmdDaGVja3BvaW50ZXJTdGF0cy5idWZfd3JpdHRlbl9jaGVja3BvaW50 cysrOwogCQkJCW51bV93cml0dGVuKys7CisJCQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJh bShQUk9HUkVTU19DSEVDS1BPSU5UX0JVRkZFUlNfV1JJVFRFTiwKKwkJCQkJCQkJCQkJIG51bV93 cml0dGVuKTsKIAkJCX0KIAkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5 bmMvc3luYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9zeW5jL3N5bmMuYwppbmRleCBlMWZiNjMx MDAzLi4zYWNiZjk0YzVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL3N5bmMvc3lu Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uvc3luYy9zeW5jLmMKQEAgLTIzLDYgKzIzLDcg QEAKICNpbmNsdWRlICJhY2Nlc3MvbXVsdGl4YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2cu aCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3V0aWxzLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvcHJv Z3Jlc3MuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCkBAIC0zNjgsNiArMzY5LDkgQEAgUHJvY2Vz c1N5bmNSZXF1ZXN0cyh2b2lkKQogCS8qIE5vdyBzY2FuIHRoZSBoYXNodGFibGUgZm9yIGZzeW5j IHJlcXVlc3RzIHRvIHByb2Nlc3MgKi8KIAlhYnNvcmJfY291bnRlciA9IEZTWU5DU19QRVJfQUJT T1JCOwogCWhhc2hfc2VxX2luaXQoJmhzdGF0LCBwZW5kaW5nT3BzKTsKKwlwZ3N0YXRfcHJvZ3Jl c3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NIRUNLUE9JTlRfRklMRVNfVE9UQUwsCisJCQkJCQkJ CSBoYXNoX2dldF9udW1fZW50cmllcyhwZW5kaW5nT3BzKSk7CisKIAl3aGlsZSAoKGVudHJ5ID0g KFBlbmRpbmdGc3luY0VudHJ5ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQog CXsKIAkJaW50CQkJZmFpbHVyZXM7CkBAIC00MzEsNiArNDM1LDggQEAgUHJvY2Vzc1N5bmNSZXF1 ZXN0cyh2b2lkKQogCQkJCQkJbG9uZ2VzdCA9IGVsYXBzZWQ7CiAJCQkJCXRvdGFsX2VsYXBzZWQg Kz0gZWxhcHNlZDsKIAkJCQkJcHJvY2Vzc2VkKys7CisJCQkJCXBnc3RhdF9wcm9ncmVzc191cGRh dGVfcGFyYW0oUFJPR1JFU1NfQ0hFQ0tQT0lOVF9GSUxFU19TWU5DRUQsCisJCQkJCQkJCQkJCQkg cHJvY2Vzc2VkKTsKIAogCQkJCQlpZiAobG9nX2NoZWNrcG9pbnRzKQogCQkJCQkJZWxvZyhERUJV RzEsICJjaGVja3BvaW50IHN5bmM6IG51bWJlcj0lZCBmaWxlPSVzIHRpbWU9JS4zZiBtcyIsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCmluZGV4IDg5MzY5MGRhZDUuLmMwZGU3NjZmZGUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jCkBAIC00NzYsNiArNDc2LDggQEAgcGdf c3RhdF9nZXRfcHJvZ3Jlc3NfaW5mbyhQR19GVU5DVElPTl9BUkdTKQogCQljbWR0eXBlID0gUFJP R1JFU1NfQ09NTUFORF9CQVNFQkFDS1VQOwogCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAoY21kLCAi Q09QWSIpID09IDApCiAJCWNtZHR5cGUgPSBQUk9HUkVTU19DT01NQU5EX0NPUFk7CisJIGVsc2Ug aWYgKHBnX3N0cmNhc2VjbXAoY21kLCAiQ0hFQ0tQT0lOVCIpID09IDApCisJCWNtZHR5cGUgPSBQ Uk9HUkVTU19DT01NQU5EX0NIRUNLUE9JTlQ7CiAJZWxzZQogCQllcmVwb3J0KEVSUk9SLAogCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3By b2dyZXNzLmgKaW5kZXggYTI4OTM4Y2FmNC4uMzNhNjRkMmYwYiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9n cmVzcy5oCkBAIC0xNTEsNCArMTUxLDQyIEBACiAjZGVmaW5lIFBST0dSRVNTX0NPUFlfVFlQRV9Q SVBFIDMKICNkZWZpbmUgUFJPR1JFU1NfQ09QWV9UWVBFX0NBTExCQUNLIDQKIAorLyogUHJvZ3Jl c3MgcGFyYW1ldGVycyBmb3IgY2hlY2twb2ludCAqLworI2RlZmluZSBQUk9HUkVTU19DSEVDS1BP SU5UX1RZUEUgICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lO VF9GTEFHUyAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRf TFNOICAgICAgICAgICAgICAgICAgICAgMgorI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX1NU QVJUX1RJTUVTVEFNUCAgICAgICAgIDMKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFT RSAgICAgICAgICAgICAgICAgICA0CisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfQlVGRkVS U19UT1RBTCAgICAgICAgICAgNQorI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX0JVRkZFUlNf UFJPQ0VTU0VEICAgICAgIDYKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9CVUZGRVJTX1dS SVRURU4gICAgICAgICA3CisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfRklMRVNfVE9UQUwg ICAgICAgICAgICAgOAorI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX0ZJTEVTX1NZTkNFRCAg ICAgICAgICAgIDkKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9ORVdfUkVRVUVTVFMgICAg ICAgICAgICAxMAorCisvKiBUeXBlcyBvZiBjaGVja3BvaW50IChhcyBhZHZlcnRpc2VkIHZpYSBQ Uk9HUkVTU19DSEVDS1BPSU5UX1RZUEUpICovCisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRf VFlQRV9DSEVDS1BPSU5UICAgICAgICAgMQorI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX1RZ UEVfUkVTVEFSVFBPSU5UICAgICAgIDIKKworLyogUGhhc2VzIG9mIGNoZWNrcG9pbnQgKGFzIGFk dmVydGlzZWQgdmlhIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0UpICovCisjZGVmaW5lIFBST0dS RVNTX0NIRUNLUE9JTlRfUEhBU0VfSU5JVCAgICAgICAgICAgICAgICAgICAgICAgICAgMQorI2Rl ZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX0dFVF9WSVJUVUFMX1RSQU5TQUNUSU9OX0lE UyAgIDIKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9SRVBMSV9TTE9UUyAgICAg ICAgICAgICAgICAgICAzCisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfU05BUFNI T1RTICAgICAgICAgICAgICAgICAgICAgNAorI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX1BI QVNFX0xPR0lDQUxfUkVXUklURV9NQVBQSU5HUyAgICAgIDUKKyNkZWZpbmUgUFJPR1JFU1NfQ0hF Q0tQT0lOVF9QSEFTRV9SRVBMSV9PUklHSU4gICAgICAgICAgICAgICAgICA2CisjZGVmaW5lIFBS T0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfQ0xPR19QQUdFUyAgICAgICAgICAgICAgICAgICAgNwor I2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX0NPTU1JVFRTX1BBR0VTICAgICAgICAg ICAgICAgIDgKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9TVUJUUkFOU19QQUdF UyAgICAgICAgICAgICAgICA5CisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfTVVM VElYQUNUX1BBR0VTICAgICAgICAgICAgICAgMTAKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lO VF9QSEFTRV9QUkVESUNBVEVfTE9DS19QQUdFUyAgICAgICAgICAxMQorI2RlZmluZSBQUk9HUkVT U19DSEVDS1BPSU5UX1BIQVNFX0JVRkZFUlMgICAgICAgICAgICAgICAgICAgICAgIDEyCisjZGVm aW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfU1lOQ19GSUxFUyAgICAgICAgICAgICAgICAg ICAgMTMKKyNkZWZpbmUgUFJPR1JFU1NfQ0hFQ0tQT0lOVF9QSEFTRV9UV09fUEhBU0UgICAgICAg ICAgICAgICAgICAgICAxNAorI2RlZmluZSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX1BPU1Rf Q0hFQ0tQT0lOVF9DTEVBTlVQICAgICAgIDE1CisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRf UEhBU0VfSU5WQUxJREFURV9SRVBMSV9TTE9UUyAgICAgICAgMTYKKyNkZWZpbmUgUFJPR1JFU1Nf Q0hFQ0tQT0lOVF9QSEFTRV9SRUNZQ0xFX09MRF9YTE9HICAgICAgICAgICAgICAxNworI2RlZmlu ZSBQUk9HUkVTU19DSEVDS1BPSU5UX1BIQVNFX1RSVU5DQVRFX1NVQlRSQU5TICAgICAgICAgICAg IDE4CisjZGVmaW5lIFBST0dSRVNTX0NIRUNLUE9JTlRfUEhBU0VfRklOQUxJWkUgICAgICAgICAg ICAgICAgICAgICAgMTkKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9i YWNrZW5kX3Byb2dyZXNzLmggYi9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3Byb2dyZXNzLmgK aW5kZXggNDdiZjgwMjliMC4uMDJkNTFmYjk0OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRp bHMvYmFja2VuZF9wcm9ncmVzcy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfcHJv Z3Jlc3MuaApAQCAtMjcsNyArMjcsOCBAQCB0eXBlZGVmIGVudW0gUHJvZ3Jlc3NDb21tYW5kVHlw ZQogCVBST0dSRVNTX0NPTU1BTkRfQ0xVU1RFUiwKIAlQUk9HUkVTU19DT01NQU5EX0NSRUFURV9J TkRFWCwKIAlQUk9HUkVTU19DT01NQU5EX0JBU0VCQUNLVVAsCi0JUFJPR1JFU1NfQ09NTUFORF9D T1BZCisJUFJPR1JFU1NfQ09NTUFORF9DT1BZLAorCVBST0dSRVNTX0NPTU1BTkRfQ0hFQ0tQT0lO VAogfSBQcm9ncmVzc0NvbW1hbmRUeXBlOwogCiAjZGVmaW5lIFBHU1RBVF9OVU1fUFJPR1JFU1Nf UEFSQU0JMjAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggZmMzY2RlMzIyNi4u ZWMxMzBkYWQyYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTE5MTIsNiAr MTkxMiw3NiBAQCBwZ19zdGF0X3Byb2dyZXNzX2Jhc2ViYWNrdXB8IFNFTEVDVCBzLnBpZCwKICAg ICBzLnBhcmFtNCBBUyB0YWJsZXNwYWNlc190b3RhbCwKICAgICBzLnBhcmFtNSBBUyB0YWJsZXNw YWNlc19zdHJlYW1lZAogICAgRlJPTSBwZ19zdGF0X2dldF9wcm9ncmVzc19pbmZvKCdCQVNFQkFD S1VQJzo6dGV4dCkgcyhwaWQsIGRhdGlkLCByZWxpZCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMywg cGFyYW00LCBwYXJhbTUsIHBhcmFtNiwgcGFyYW03LCBwYXJhbTgsIHBhcmFtOSwgcGFyYW0xMCwg cGFyYW0xMSwgcGFyYW0xMiwgcGFyYW0xMywgcGFyYW0xNCwgcGFyYW0xNSwgcGFyYW0xNiwgcGFy YW0xNywgcGFyYW0xOCwgcGFyYW0xOSwgcGFyYW0yMCk7CitwZ19zdGF0X3Byb2dyZXNzX2NoZWNr cG9pbnR8IFNFTEVDVCBzLnBpZCwKKyAgICAgICAgQ0FTRSBzLnBhcmFtMQorICAgICAgICAgICAg V0hFTiAxIFRIRU4gJ2NoZWNrcG9pbnQnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDIgVEhFTiAn cmVzdGFydHBvaW50Jzo6dGV4dAorICAgICAgICAgICAgRUxTRSBOVUxMOjp0ZXh0CisgICAgICAg IEVORCBBUyB0eXBlLAorICAgICgoKCgoCisgICAgICAgIENBU0UKKyAgICAgICAgICAgIFdIRU4g KChzLnBhcmFtMiAmICg0KTo6YmlnaW50KSA+IDApIFRIRU4gJ2ltbWVkaWF0ZSAnOjp0ZXh0Cisg ICAgICAgICAgICBFTFNFICcnOjp0ZXh0CisgICAgICAgIEVORCB8fAorICAgICAgICBDQVNFCisg ICAgICAgICAgICBXSEVOICgocy5wYXJhbTIgJiAoOCk6OmJpZ2ludCkgPiAwKSBUSEVOICdmb3Jj ZSAnOjp0ZXh0CisgICAgICAgICAgICBFTFNFICcnOjp0ZXh0CisgICAgICAgIEVORCkgfHwKKyAg ICAgICAgQ0FTRQorICAgICAgICAgICAgV0hFTiAoKHMucGFyYW0yICYgKDE2KTo6YmlnaW50KSA+ IDApIFRIRU4gJ2ZsdXNoLWFsbCAnOjp0ZXh0CisgICAgICAgICAgICBFTFNFICcnOjp0ZXh0Cisg ICAgICAgIEVORCkgfHwKKyAgICAgICAgQ0FTRQorICAgICAgICAgICAgV0hFTiAoKHMucGFyYW0y ICYgKDMyKTo6YmlnaW50KSA+IDApIFRIRU4gJ3dhaXQgJzo6dGV4dAorICAgICAgICAgICAgRUxT RSAnJzo6dGV4dAorICAgICAgICBFTkQpIHx8CisgICAgICAgIENBU0UKKyAgICAgICAgICAgIFdI RU4gKChzLnBhcmFtMiAmICgxMjgpOjpiaWdpbnQpID4gMCkgVEhFTiAnd2FsICc6OnRleHQKKyAg ICAgICAgICAgIEVMU0UgJyc6OnRleHQKKyAgICAgICAgRU5EKSB8fAorICAgICAgICBDQVNFCisg ICAgICAgICAgICBXSEVOICgocy5wYXJhbTIgJiAoMjU2KTo6YmlnaW50KSA+IDApIFRIRU4gJ3Rp bWUgJzo6dGV4dAorICAgICAgICAgICAgRUxTRSAnJzo6dGV4dAorICAgICAgICBFTkQpIEFTIGZs YWdzLAorICAgICgnMC8wJzo6cGdfbHNuICsgKAorICAgICAgICBDQVNFCisgICAgICAgICAgICBX SEVOIChzLnBhcmFtMyA8IDApIFRIRU4gcG93KCgyKTo6bnVtZXJpYywgKDY0KTo6bnVtZXJpYykK KyAgICAgICAgICAgIEVMU0UgKDApOjpudW1lcmljCisgICAgICAgIEVORCArIChzLnBhcmFtMyk6 Om51bWVyaWMpKSBBUyBzdGFydF9sc24sCisgICAgdG9fdGltZXN0YW1wKCgoOTQ2Njg0ODAwKTo6 ZG91YmxlIHByZWNpc2lvbiArICgocy5wYXJhbTQpOjpkb3VibGUgcHJlY2lzaW9uIC8gKDEwMDAw MDApOjpkb3VibGUgcHJlY2lzaW9uKSkpIEFTIHN0YXJ0X3RpbWUsCisgICAgICAgIENBU0Ugcy5w YXJhbTUKKyAgICAgICAgICAgIFdIRU4gMSBUSEVOICdpbml0aWFsaXppbmcnOjp0ZXh0CisgICAg ICAgICAgICBXSEVOIDIgVEhFTiAnZ2V0dGluZyB2aXJ0dWFsIHRyYW5zYWN0aW9uIElEcyc6OnRl eHQKKyAgICAgICAgICAgIFdIRU4gMyBUSEVOICdjaGVja3BvaW50aW5nIHJlcGxpY2F0aW9uIHNs b3RzJzo6dGV4dAorICAgICAgICAgICAgV0hFTiA0IFRIRU4gJ2NoZWNrcG9pbnRpbmcgbG9naWNh bCByZXBsaWNhdGlvbiBzbmFwc2hvdCBmaWxlcyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gNSBU SEVOICdjaGVja3BvaW50aW5nIGxvZ2ljYWwgcmV3cml0ZSBtYXBwaW5nIGZpbGVzJzo6dGV4dAor ICAgICAgICAgICAgV0hFTiA2IFRIRU4gJ2NoZWNrcG9pbnRpbmcgcmVwbGljYXRpb24gb3JpZ2lu Jzo6dGV4dAorICAgICAgICAgICAgV0hFTiA3IFRIRU4gJ2NoZWNrcG9pbnRpbmcgY29tbWl0IGxv ZyBwYWdlcyc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gOCBUSEVOICdjaGVja3BvaW50aW5nIGNv bW1pdCB0aW1lIHN0YW1wIHBhZ2VzJzo6dGV4dAorICAgICAgICAgICAgV0hFTiA5IFRIRU4gJ2No ZWNrcG9pbnRpbmcgc3VidHJhbnNhY3Rpb24gcGFnZXMnOjp0ZXh0CisgICAgICAgICAgICBXSEVO IDEwIFRIRU4gJ2NoZWNrcG9pbnRpbmcgbXVsdGl4YWN0IHBhZ2VzJzo6dGV4dAorICAgICAgICAg ICAgV0hFTiAxMSBUSEVOICdjaGVja3BvaW50aW5nIHByZWRpY2F0ZSBsb2NrIHBhZ2VzJzo6dGV4 dAorICAgICAgICAgICAgV0hFTiAxMiBUSEVOICdjaGVja3BvaW50aW5nIGJ1ZmZlcnMnOjp0ZXh0 CisgICAgICAgICAgICBXSEVOIDEzIFRIRU4gJ3Byb2Nlc3NpbmcgZmlsZSBzeW5jIHJlcXVlc3Rz Jzo6dGV4dAorICAgICAgICAgICAgV0hFTiAxNCBUSEVOICdwZXJmb3JtaW5nIHR3byBwaGFzZSBj aGVja3BvaW50Jzo6dGV4dAorICAgICAgICAgICAgV0hFTiAxNSBUSEVOICdwZXJmb3JtaW5nIHBv c3QgY2hlY2twb2ludCBjbGVhbnVwJzo6dGV4dAorICAgICAgICAgICAgV0hFTiAxNiBUSEVOICdp bnZhbGlkYXRpbmcgcmVwbGljYXRpb24gc2xvdHMnOjp0ZXh0CisgICAgICAgICAgICBXSEVOIDE3 IFRIRU4gJ3JlY3ljbGluZyBvbGQgV0FMIGZpbGVzJzo6dGV4dAorICAgICAgICAgICAgV0hFTiAx OCBUSEVOICd0cnVuY2F0aW5nIHN1YnRyYW5zYWN0aW9ucyc6OnRleHQKKyAgICAgICAgICAgIFdI RU4gMTkgVEhFTiAnZmluYWxpemluZyc6OnRleHQKKyAgICAgICAgICAgIEVMU0UgTlVMTDo6dGV4 dAorICAgICAgICBFTkQgQVMgcGhhc2UsCisgICAgcy5wYXJhbTYgQVMgYnVmZmVyc190b3RhbCwK KyAgICBzLnBhcmFtNyBBUyBidWZmZXJzX3Byb2Nlc3NlZCwKKyAgICBzLnBhcmFtOCBBUyBidWZm ZXJzX3dyaXR0ZW4sCisgICAgcy5wYXJhbTkgQVMgZmlsZXNfdG90YWwsCisgICAgcy5wYXJhbTEw IEFTIGZpbGVzX3N5bmNlZCwKKyAgICAgICAgQ0FTRSBzLnBhcmFtMTEKKyAgICAgICAgICAgIFdI RU4gMCBUSEVOICdmYWxzZSc6OnRleHQKKyAgICAgICAgICAgIFdIRU4gMSBUSEVOICd0cnVlJzo6 dGV4dAorICAgICAgICAgICAgRUxTRSBOVUxMOjp0ZXh0CisgICAgICAgIEVORCBBUyBuZXdfcmVx dWVzdHMKKyAgIEZST00gcGdfc3RhdF9nZXRfcHJvZ3Jlc3NfaW5mbygnQ0hFQ0tQT0lOVCc6OnRl eHQpIHMocGlkLCBkYXRpZCwgcmVsaWQsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMsIHBhcmFtNCwg cGFyYW01LCBwYXJhbTYsIHBhcmFtNywgcGFyYW04LCBwYXJhbTksIHBhcmFtMTAsIHBhcmFtMTEs IHBhcmFtMTIsIHBhcmFtMTMsIHBhcmFtMTQsIHBhcmFtMTUsIHBhcmFtMTYsIHBhcmFtMTcsIHBh cmFtMTgsIHBhcmFtMTksIHBhcmFtMjApOwogcGdfc3RhdF9wcm9ncmVzc19jbHVzdGVyfCBTRUxF Q1Qgcy5waWQsCiAgICAgcy5kYXRpZCwKICAgICBkLmRhdG5hbWUsCi0tIAoyLjI1LjEKCg== --000000000000a8c33905e0c13e98--