Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rjf1m-0070lp-Rx for pgsql-hackers@arkaria.postgresql.org; Mon, 11 Mar 2024 12:45:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rjf1l-00DcYJ-Bj for pgsql-hackers@arkaria.postgresql.org; Mon, 11 Mar 2024 12:45:13 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rjf1k-00DcVD-P7 for pgsql-hackers@lists.postgresql.org; Mon, 11 Mar 2024 12:45:13 +0000 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rjf1h-003x1N-Ch for pgsql-hackers@postgresql.org; Mon, 11 Mar 2024 12:45:12 +0000 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-1dd97fd66cdso7420055ad.1 for ; Mon, 11 Mar 2024 05:45:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=timescale.com; s=google; t=1710161109; x=1710765909; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=qp4IwnIGxbkusE8zW4N1UwiGGlGvvLWEpGrvIz1Ra3U=; b=QOxihSXD2eFKNXFE5H8dn+V8aeWyDP9DrbWTTT/vIg404f13fsN7j20Tn601UL6jIq /rHIBES7KEdhuuiFAvhq0teog5JEjCyrQtIoDsgCs/oqwnxzOJYraWCZtBeeSiA4jRmq pfYqbeEHspQBiVGeZz33M11t43ee9oq6mk5W4ambG+j5RkG2uisZx8md2Sh9oh7G/sk6 /oaIHm0uBBE9sCEKKzHMO/8nzMxJtDepulE35I7Fxk7wAIMkvPrDuOMCIwaCTLaUTfo/ DReZgDiY2JmUd3p1gJ25EnI2/3cVa+mWlmCmiwfZrWrDAncx4oIuw09stVPDVuNe0lNG CuwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710161109; x=1710765909; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=qp4IwnIGxbkusE8zW4N1UwiGGlGvvLWEpGrvIz1Ra3U=; b=rppEXos5d9Kn4//mAmLfAGONe45uwzcbVV6CqwGmOM7MeKUaAltnBlxm1+1YPM16nT rVZPDsaiidr9nAlmRXhxs1w4bQIl9Y95tbYgwaq2a9dTNaPpiu7Mtjxv8LyQeO/ZnWpD GLGktxZWjMK5D7Om3ybw2owXuq0LxVtyh7wRhDz7BtWeYjQW9WMfcxuKHeM1X2xclHs3 FMVEZdfL9oaVau/87XQcJ2ETPbXLIvwHJj0BMOOSsV4Ir/NMsVxlptT5aVQaAyTAl+6D Sx7v3kURAT+hhfel8p8XYUTshBDElIY/jsBJcfJmExXpPltMYzvLKAfRiEiqB80aIb1+ MQgQ== X-Gm-Message-State: AOJu0YzV+r8swRn78ybu6PU/ik0KjEIgayiqawHflNn8SEnXavPhZBCh eMW9T9LgXTdDIjTshph7R+68elQcXmkv2A+fm9eTJb2OWi+VVedf/7CEntpZLRfKrEPuUwUJ11C F2XePgW4/GZBS2L5fOiYe/CDVHpqEDCA6sPPFk459LQRyM0fCqUM= X-Google-Smtp-Source: AGHT+IGSlXtiZC93tITkusvZQWde0wktskeJGr95EjlPLdh3gILZ7vjqkLoz8pUVtKGpo08QW69N3+GhWOUEiuY4pGY= X-Received: by 2002:a17:903:2342:b0:1db:fa72:25eb with SMTP id c2-20020a170903234200b001dbfa7225ebmr8194716plh.52.1710161109657; Mon, 11 Mar 2024 05:45:09 -0700 (PDT) MIME-Version: 1.0 References: <0A0D7507-C434-46AC-BCC4-1166C5A2742A@yandex-team.ru> <1459150585.359059.1706132985954@mail.yahoo.com> <00B784AB-5B52-4CC7-8A0D-B1C0C53B52DC@yandex-team.ru> <1014147035.642629.1706202245918@mail.yahoo.com> <5932FFF8-4E5F-44DC-8FEA-22E8302759C7@yandex-team.ru> <8AA22330-7D3A-46CF-B311-2FF874D7C713@yandex-team.ru> <1971811009.2132347.1706599708209@mail.yahoo.com> <72C1E7CB-E2EC-46CF-AD2C-B3180CED885B@yandex-team.ru> <0906F8BA-CA52-4956-AA68-E9193E50DFDF@yandex-team.ru> <10553e4c-6b66-44b9-86a7-80bb1958a767@eisentraut.org> <5D22C2BF-5DED-43CA-A3D7-B724EE0A159D@yandex-team.ru> In-Reply-To: <5D22C2BF-5DED-43CA-A3D7-B724EE0A159D@yandex-team.ru> From: Aleksander Alekseev Date: Mon, 11 Mar 2024 15:44:58 +0300 Message-ID: Subject: Re: UUID v7 To: pgsql-hackers mailing list Cc: "Andrey M. Borodin" , Peter Eisentraut , Sergey Prokhorenko , Jelte Fennema-Nio , =?UTF-8?Q?Przemys=C5=82aw_Sztoch?= , "David G. Johnston" , Mat Arye , Matthias van de Meent , Nikolay Samokhvalov , Junwang Zhao Content-Type: multipart/mixed; boundary="0000000000007364fc061361e9a3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000007364fc061361e9a3 Content-Type: text/plain; charset="UTF-8" Hi, > Oops, CFbot expectedly found a problem... > Sorry for the noise, this version, I hope, will pass all the tests. > Thanks! > > Best regards, Andrey Borodin. I had some issues applying v19 against the current `master` branch. PFA the rebased and minorly tweaked v20. The patch LGTM. I think it could be merged unless there are any open issues left. I don't think so, but maybe I missed something. -- Best regards, Aleksander Alekseev --0000000000007364fc061361e9a3 Content-Type: application/octet-stream; name="v20-0001-Implement-UUID-v7.patch" Content-Disposition: attachment; filename="v20-0001-Implement-UUID-v7.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ltmxrdd70 RnJvbSA5MzFkYzczMjExMWQ4MzhhMmM2OTdjMTU0MTZmYzdjN2U5YjIyNDdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQW5kcmV5IE0uIEJvcm9kaW4iIDx4NG1tbUBuaWdodC5sb2Nh bD4KRGF0ZTogU3VuLCAyMCBBdWcgMjAyMyAyMzo1NTozMSArMDMwMApTdWJqZWN0OiBbUEFUQ0gg djIwXSBJbXBsZW1lbnQgVVVJRCB2NwpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRl eHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoK VGhpcyBjb21taXQgYWRkcyBmdW5jdGlvbiBmb3IgVVVJRCBnZW5lcmF0aW9uLiBNb3N0IGltcG9y dGFudCBmdW5jdGlvbiBoZXJlCmlzIHV1aWR2NygpIHdoaWNoIGdlbmVyYXRlcyBuZXcgVVVJRCBh Y2NvcmRpbmcgdG8gdGhlIG5ldyBzdGFuZGFyZC4KRm9yIGNvZGUgcmVhZGFiaWxpdHkgdGhpcyBj b21taXQgYWRkcyBhbGlhcyB1dWlkdjQoKSB0byBmdW5jdGlvbgpnZW5fcmFuZG9tX3V1aWQoKS4K CkFsc28gd2UgYWRkIGEgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aW1lc3RhbXAgZnJvbSBVVUlEIHYx LCB2NiBhbmQgdjcuClRvIGFsbG93IHVzZXIgdG8gZGlzdGluZ3Vpc2ggdmFyaW91cyBVVUlEIHZl cnNpb25zIGFuZCB2YXJpYW50cwp3ZSBhZGQgZnVuY3Rpb25zIHV1aWRfZXh0cmFjdF92ZXJzaW9u KCkgYW5kIHV1aWRfZXh0cmFjdF92YXJpYW50KCkuCgpBdXRob3I6IEFuZHJleSBCb3JvZGluClJl dmlld2VkLWJ5OiBTZXJnZXkgUHJva2hvcmVua28sIEtpcmsgV29sYWssIFByemVteXPFgmF3IFN6 dG9jaApSZXZpZXdlZC1ieTogTmlrb2xheSBTYW1va2h2YWxvdiwgSmVsdGUgRmVubmVtYS1OaW8s IEFsZWtzYW5kZXIgQWxla3NlZXYKUmV2aWV3ZWQtYnk6IFBldGVyIEVpc2VudHJhdXQsIENocmlz IFRyYXZlcnMsIEx1a2FzIEZpdHRsCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FB aEZSeGl0SnYlM0R5b0duWFVnZUxCX08lMkJNN0oyQkpBbWI1anFBVDlnWjNiaWozdUxEQSU0MG1h aWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCAgICAgICAgICAgICAgICAg ICB8ICA1NCArKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3V1aWQuYyAgICAgICAgICAgICB8 IDI4MCArKysrKysrKysrKysrKysrKysrKysrLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdCAgICAgICAgICB8ICAxNSArKwogc3JjL2luY2x1ZGUvZGF0YXR5cGUvdGltZXN0YW1wLmgg ICAgICAgICB8ICAgMyArLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91 dCB8ICAgNSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3V1aWQub3V0ICAgICAgIHwgIDcx ICsrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwgICAgICAgICAgICB8ICAyNiAr KysKIDcgZmlsZXMgY2hhbmdlZCwgNDQ5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jLnNn bWwKaW5kZXggMGJiN2FlYjQwZS4uYWUyYjhkYzQ5MSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2Z1bmMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sCkBAIC0xNDEyNywxMyArMTQx MjcsNjEgQEAgQ1JFQVRFIFRZUEUgcmFpbmJvdyBBUyBFTlVNICgncmVkJywgJ29yYW5nZScsICd5 ZWxsb3cnLCAnZ3JlZW4nLCAnYmx1ZScsICdwdXJwbGUKICAgIDxwcmltYXJ5Pmdlbl9yYW5kb21f dXVpZDwvcHJpbWFyeT4KICAgPC9pbmRleHRlcm0+CiAKKyAgPGluZGV4dGVybT4KKyAgIDxwcmlt YXJ5PnV1aWR2NDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPGluZGV4dGVybT4KKyAg IDxwcmltYXJ5PnV1aWR2NzwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPGluZGV4dGVy bT4KKyAgIDxwcmltYXJ5PnV1aWRfZXh0cmFjdF90aW1lc3RhbXA8L3ByaW1hcnk+CisgIDwvaW5k ZXh0ZXJtPgorCisgIDxpbmRleHRlcm0+CisgICA8cHJpbWFyeT51dWlkX2V4dHJhY3RfdmVyc2lv bjwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAgPGluZGV4dGVybT4KKyAgIDxwcmltYXJ5 PnV1aWRfZXh0cmFjdF92YXJpYW50PC9wcmltYXJ5PgorICA8L2luZGV4dGVybT4KKwogICA8cGFy YT4KLSAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gaW5jbHVkZXMgb25l IGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgVVVJRDoKKyAgIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FM PC9wcm9kdWN0bmFtZT4gaW5jbHVkZXMgc2V2ZXJhbCBmdW5jdGlvbnMgdG8gZ2VuZXJhdGUgYSBV VUlELgogPHN5bm9wc2lzPgogPGZ1bmN0aW9uPmdlbl9yYW5kb21fdXVpZDwvZnVuY3Rpb24+ICgp IDxyZXR1cm52YWx1ZT51dWlkPC9yZXR1cm52YWx1ZT4KKzxmdW5jdGlvbj51dWlkdjQ8L2Z1bmN0 aW9uPiAoKSA8cmV0dXJudmFsdWU+dXVpZDwvcmV0dXJudmFsdWU+Cis8L3N5bm9wc2lzPgorICAg VGhlc2UgZnVuY3Rpb25zIHJldHVybiBhIHZlcnNpb24gNCAocmFuZG9tKSBVVUlELgorPHN5bm9w c2lzPgorPGZ1bmN0aW9uPnV1aWR2NzwvZnVuY3Rpb24+ICgpIDxyZXR1cm52YWx1ZT51dWlkPC9y ZXR1cm52YWx1ZT4KKzwvc3lub3BzaXM+CisgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSB2ZXJz aW9uIDcgVVVJRCAoVU5JWCB0aW1lc3RhbXAgd2l0aCAxbXMgcHJlY2lzaW9uICsKKyAgIHJhbmRv bWx5IHNlZWRlZCBjb3VudGVyICsgcmFuZG9tKS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorPHN5 bm9wc2lzPgorPGZ1bmN0aW9uPnV1aWRfZXh0cmFjdF90aW1lc3RhbXA8L2Z1bmN0aW9uPiAodXVp ZCkgPHJldHVybnZhbHVlPnRpbWVzdGFtcHR6PC9yZXR1cm52YWx1ZT4KKzwvc3lub3BzaXM+Cisg ICBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIGEgPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6b25l PC90eXBlPiBmcm9tIFVVSUQgdmVyc2lvbnMgMSwgNiBhbmQgNy4KKyAgIEZvciBvdGhlciB2ZXJz aW9ucyBhbmQgdmFyaWFudHMgdGhpcyBmdW5jdGlvbiByZXR1cm5zIE5VTEwuIFRoZSBleHRyYWN0 ZWQgdGltZXN0YW1wCisgICBkb2VzIG5vdCBuZWNlc3NhcmlseSBlcXVhdGUgdG8gdGhlIHRpbWUg b2YgVVVJRCBnZW5lcmF0aW9uLiBIb3cgY2xvc2UgaXQgaXMKKyAgIHRvIHRoZSBhY3R1YWwgdGlt ZSBkZXBlbmRzIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGdlbmVyYXRlZCBVVUlELgorICAg VGhlIHV1aWR2NygpIGZ1bmN0aW9uIHByb3ZpZGVkIGJ5IFBvc3RncmVTUUwgd2lsbCBub3JtYWxs eSBzdG9yZSB0aGUgYWN0dWFsIHRpbWUsCisgICB3aXRoIHNvbWUgZXhjZXB0aW9uczogcHJldmVu dGlvbiBvZiB0aW1lIGxlYXBzIGJhY2t3YXJkcyBhbmQgY291bnRlciBvdmVyZmxvdworICAgYmVp bmcgY2FycmllZCB0byB0aW1lIHN0ZXAuCis8c3lub3BzaXM+Cis8ZnVuY3Rpb24+dXVpZF9leHRy YWN0X3ZlcnNpb248L2Z1bmN0aW9uPiAodXVpZCkgPHJldHVybnZhbHVlPnNtYWxsaW50PC9yZXR1 cm52YWx1ZT4KKzwvc3lub3BzaXM+CisgICBUaGlzIGZ1bmN0aW9uIGV4dHJhY3RzIGEgdmVyc2lv biBiaXRzIGZyb20gVVVJRCBvZiB2YXJpYW50IGRlc2NyaWJlZCBieQorICAgPHVsaW5rIHVybD0i aHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9kcmFmdC1pZXRmLXV1aWRyZXYt cmZjNDEyMmJpcyI+SUVURiBzdGFuZGFyZCBkcmFmdDwvdWxpbms+CisgICAoYjEweHggdmFyaWFu dCkuIEZvciBvdGhlciB2YXJpYW50cyB0aGlzIGZ1bmN0aW9uIHJldHVybnMgTlVMTC4KKzxzeW5v cHNpcz4KKzxmdW5jdGlvbj51dWlkX2V4dHJhY3RfdmFyaWFudDwvZnVuY3Rpb24+ICh1dWlkKSA8 cmV0dXJudmFsdWU+c21hbGxpbnQ8L3JldHVybnZhbHVlPgogPC9zeW5vcHNpcz4KLSAgIFRoaXMg ZnVuY3Rpb24gcmV0dXJucyBhIHZlcnNpb24gNCAocmFuZG9tKSBVVUlELiAgVGhpcyBpcyB0aGUg bW9zdCBjb21tb25seQotICAgdXNlZCB0eXBlIG9mIFVVSUQgYW5kIGlzIGFwcHJvcHJpYXRlIGZv ciBtb3N0IGFwcGxpY2F0aW9ucy4KKyAgIFRoaXMgZnVuY3Rpb24gZXh0cmFjdHMgYSB2YXJ0aWFu dCBiaXRzIGZyb20gVVVJRC4KICAgPC9wYXJhPgogCiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3V1aWQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC91dWlkLmMK aW5kZXggZTljMWVjNjE1My4uNTgxY2Q5NDhhMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3V1aWQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdXVpZC5jCkBAIC0xMywx MyArMTMsMTggQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlIDxzeXMvdGlt ZS5oPgorCisjaW5jbHVkZSAiYWNjZXNzL3hsb2cuaCIKICNpbmNsdWRlICJjb21tb24vaGFzaGZu LmgiCiAjaW5jbHVkZSAibGliL2h5cGVybG9nbG9nLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3Jt YXQuaCIKICNpbmNsdWRlICJwb3J0L3BnX2Jzd2FwLmgiCi0jaW5jbHVkZSAidXRpbHMvZm1ncnBy b3Rvcy5oIgorI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0 ZXRpbWUuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKICNpbmNsdWRlICJ1dGlscy9zb3J0c3Vw cG9ydC5oIgorI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUgInV0aWxzL3V1 aWQuaCIKIAogLyogc29ydHN1cHBvcnQgZm9yIHV1aWQgKi8KQEAgLTQwNiw2ICs0MTEsMTEgQEAg dXVpZF9oYXNoX2V4dGVuZGVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmV0dXJuIGhhc2hfYW55X2V4 dGVuZGVkKGtleS0+ZGF0YSwgVVVJRF9MRU4sIFBHX0dFVEFSR19JTlQ2NCgxKSk7CiB9CiAKKy8q CisgKiBSb3V0aW5lIHRvIGdlbmVyYXRlIFVVSUQgdmVyc2lvbiA0LgorICogQWxsIFVVSUQgYnl0 ZXMgYXJlIGZpbGxlZCB3aXRoIHN0cm9uZyByYW5kb20gbnVtYmVycyBleGNlcHQgdmVyc2lvbiBh bmQKKyAqIHZhcmlhbnQgMGIxMCBiaXRzLgorICovCiBEYXR1bQogZ2VuX3JhbmRvbV91dWlkKFBH X0ZVTkNUSU9OX0FSR1MpCiB7CkBAIC00MjUsMyArNDM1LDI3MSBAQCBnZW5fcmFuZG9tX3V1aWQo UEdfRlVOQ1RJT05fQVJHUykKIAogCVBHX1JFVFVSTl9VVUlEX1AodXVpZCk7CiB9CisKK3N0YXRp YyB1aW50MzJfdCBzZXF1ZW5jZV9jb3VudGVyOworc3RhdGljIHVpbnQ2NF90IHByZXZpb3VzX3Rp bWVzdGFtcCA9IDA7CisKKy8qCisgKiBSb3V0aW5lIHRvIGdlbmVyYXRlIFVVSUQgdmVyc2lvbiA3 LgorICogRm9sbG93aW5nIGRlc2NyaXB0aW9uIGlzIHRha2VuIGZyb20gUkZDIGRyYWZ0IGFuZCBz bGlnaHRseSBleHRlbmRlZCB0bworICogcmVmbGVjdCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBj aG9pY2VzLgorICoKKyAqIFVVSUR2NyBGaWVsZCBhbmQgQml0IExheW91dDoKKyAqIC0tLS0tLS0t LS0KKyAqICAwICAgICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgICAgMiAgICAgICAg ICAgICAgICAgICAzCisgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzIDQgNSA2IDcgOCA5IDAg MSAyIDMgNCA1IDYgNyA4IDkgMCAxCisgKiArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuaXhfdHNfbXMgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICstKy0r LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst Ky0rCisgKiB8ICAgICAgICAgIHVuaXhfdHNfbXMgICAgICAgICAgIHwgIHZlciAgfCAgICAgICBy YW5kX2EgICAgICAgICAgfAorICogKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSst Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKKyAqIHx2YXJ8ICAgICAgICAgICAgICAgICAg ICAgICAgcmFuZF9iICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLSstKy0rLSst Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKwor ICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kX2IgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwKKyAqICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0r LSstKy0rLSstKy0rLSstKy0rLSstKy0rCisgKgorICogdW5peF90c19tczoKKyAqICA0OCBiaXQg YmlnLWVuZGlhbiB1bnNpZ25lZCBudW1iZXIgb2YgVW5peCBlcG9jaCB0aW1lc3RhbXAgaW4gbWls bGlzZWNvbmRzCisgKiAgYXMgcGVyIFNlY3Rpb24gNi4xLiBPY2N1cGllcyBiaXRzIDAgdGhyb3Vn aCA0NyAob2N0ZXRzIDAtNSkuCisgKgorICogdmVyOgorICogIFRoZSA0IGJpdCB2ZXJzaW9uIGZp ZWxkIGFzIGRlZmluZWQgYnkgU2VjdGlvbiA0LjIsIHNldCB0byAwYjAxMTEgKDcpLgorICogIE9j Y3VwaWVzIGJpdHMgNDggdGhyb3VnaCA1MSBvZiBvY3RldCA2LgorICoKKyAqIHJhbmRfYToKKyAq ICBNb3N0IHNpZ25pZmljYW50IDEyIGJpdHMgb2YgMTgtYml0IGNvdW50ZXIuIFRoaXMgY291bnRl ciBpcyBkZXNpZ25lZCB0bworICogIGd1YXJhbnRlZSBhZGRpdGlvbmFsIG1vbm90b25pY2l0eSBh cyBwZXIgU2VjdGlvbiA2LjIgKE1ldGhvZCAyKS4gcmFuZF9hCisgKiAgb2NjdXBpZXMgYml0cyA1 MiB0aHJvdWdoIDYzIChvY3RldHMgNi03KS4KKyAqCisgKiB2YXI6CisgKiAgVGhlIDIgYml0IHZh cmlhbnQgZmllbGQgYXMgZGVmaW5lZCBieSBTZWN0aW9uIDQuMSwgc2V0IHRvIDBiMTAuIE9jY3Vw aWVzCisgKiAgYml0cyA2NCBhbmQgNjUgb2Ygb2N0ZXQgOC4KKyAqCisgKiByYW5kX2I6CisgKiAg U3RhcnRpbmcgNiBiaXRzIGFyZSBsZWFzdCBzaWduaWZpY2FudCA2IGJpdHMgb2YgYSBjb3VudGVy LiBUaGUgZmluYWwgNTYKKyAqICBiaXRzIGZpbGxlZCB3aXRoIHBzZXVkby1yYW5kb20gZGF0YSB0 byBwcm92aWRlIHVuaXF1ZW5lc3MgYXMgcGVyCisgKiAgU2VjdGlvbiA2LjkuIHJhbmRfYiBPY2N1 cGllcyBiaXRzIDY2IHRocm91Z2ggMTI3IChvY3RldHMgOC0xNSkuCisgKiAtLS0tLS0tLS0tCisg KiAKKyAqIE1vbm90b25pYyBSYW5kb20gKE1ldGhvZCAyKSBjYW4gYmUgaW1wbGVtZW50ZWQgd2l0 aCBhcmJpdHJhcnkgc2l6ZSBvZiBhCisgKiBjb3VudGVyLiBXZSBjaG9vc2Ugc2l6ZSAxOCB0byBy ZXVzZSBhbGwgc3BhY2Ugb2YgYnl0ZXMgdGhhdCBhcmUgdG91Y2hlZCBieQorICogdmVyIGFuZCB2 YXIgZmllbGRzICsgcmFuZF9hIGJ5dGVzIGJldHdlZW4gdGhlbS4KKyAqIFdoZW5ldmVyIHRpbWVz dGFtcCB1bml4X3RzX21zIGlzIG1vdmluZyBmb3J3YXJkLCB0aGlzIGNvdW50ZXIgYml0cyBhcmUK KyAqIHJlaW5pdGlhbGl6ZWQuIFJpbmlsaWFsaXphdGlvbiBhbHdheXMgc2V0cyBtb3N0IHNpZ25p ZmljYW50IGJpdCB0byAwLCBvdGhlcgorICogYml0cyBhcmUgaW5pdGlhbGl6ZWQgd2l0aCByYW5k b20gbnVtYmVycy4gVGhpcyBnaXZlcyBhcyBhcHByb3hpbWF0ZWx5IDE5MksKKyAqIFVVSURzIHdp dGhpbiBvbmUgbWlsbGlzZWNvbmQgd2l0aG91dCBvdmVyZmxvdy4gT3V0aCB0byBiZSBlbm91Z2gu CisgKiBXaGVuZXZlciBjb3VudGVyIG92ZXJmbG93IGhhcHBlbnMsIHRoaXMgb3ZlcmZsb3cgaXMg dHJhbnNsYXRlZCB0byBpbmNyZW1lbnQKKyAqIG9mIHVuaXhfdHNfbXMuIFNvIGdlbmVyYXRpb24g b2YgVVVJRHMgYXRlIHJhdGUgaGlnaGVyIHRoYW4gMTI4TUh6IG1pZ2h0IGxlYWQKKyAqIHRvIHVz aW5nIHRpbWVzdGFtcHMgYWhlYWQgb2YgdGltZS4KKyAqCisgKiBBbGwgVVVJRCBnZW5lcmF0b3Ig c3RhdGUgaXMgYmFja2VuZC1sb2NhbC4gRm9yIFVVSURzIGdlbmVyYXRlZCBpbiBvbmUKKyAqIGJh Y2tlbmQgd2UgZ3VhcmFudGVlIG1vbm90b25pY2l0eS4gVVVJRHMgZ2VuZXJhdGVkIG9uIGRpZmZl cmVudCBiYWNrZW5kcworICogd2lsbCBiZSBtb3N0bHkgbW9ub3RvbmljIGlmIHRoZXkgYXJlIGdl bmVyYXRlZCBhdCBmcmVxdWVuY2VzIGxlc3MgdGhhbiAxS0h6LAorICogYnV0IHRoaXMgbW9ub3Rv bmljaXR5IGlzIG5vdCBzdHJpY3RseSBndWFyYW50ZWVkLiBVVUlEcyBnZW5lcmF0ZWQgb24KKyAq IGRpZmZlcmVudCBub2RlcyBhcmUgbW9zdGx5IG1vbm90b25pYyB3aXRoIHJlZ2FyZHMgdG8gcG9z c2libGUgY2xvY2sgZHJpZnQuCisgKi8KK0RhdHVtCit1dWlkdjcoUEdfRlVOQ1RJT05fQVJHUykK K3sKKwlwZ191dWlkX3QgICp1dWlkID0gcGFsbG9jKFVVSURfTEVOKTsKKwl1aW50NjRfdCB0bXM7 CisJc3RydWN0IHRpbWV2YWwgdHA7CisJYm9vbCBpbmNyZW1lbnRfY291bnRlcjsKKworCWdldHRp bWVvZmRheSgmdHAsIE5VTEwpOworCXRtcyA9ICgodWludDY0X3QpdHAudHZfc2VjKSAqIDEwMDAg KyAodHAudHZfdXNlYykgLyAxMDAwOworCS8qIHRpbWUgZnJvbSBjbG9jayBpcyBwcm90ZWN0ZWQg ZnJvbSBiYWNrd2FyZCBsZWFwcyAqLworCWluY3JlbWVudF9jb3VudGVyID0gKHRtcyA8PSBwcmV2 aW91c190aW1lc3RhbXApOworCisJaWYgKGluY3JlbWVudF9jb3VudGVyKQorCXsKKwkJLyogVGlt ZSBkaWQgbm90IGFkdmFuY2UgZnJvbSB0aGUgcHJldmlvdXMgZ2VuZXJhdGlvbiwgd2UgbXVzdCBp bmNyZW1lbnQgY291bnRlciAqLworCQkrK3NlcXVlbmNlX2NvdW50ZXI7CisJCWlmIChzZXF1ZW5j ZV9jb3VudGVyID4gMHgzZmZmZikKKwkJeworCQkJLyogV2Ugb25seSBoYXZlIDE4LWJpdCBjb3Vu dGVyICovCisJCQlzZXF1ZW5jZV9jb3VudGVyID0gMDsKKwkJCXByZXZpb3VzX3RpbWVzdGFtcCsr OworCQl9CisKKwkJLyogcHJvdGVjdGlvbiBmcm9tIGxlYXAgYmFja3dhcmQgKi8KKwkJdG1zID0g cHJldmlvdXNfdGltZXN0YW1wOworCisJCS8qIGZpbGwgZXZlcnl0aGluZyBhZnRlciB0aGUgdGlt ZXN0YW1wIGFuZCBjb3VudGVyIHdpdGggcmFuZG9tIGJ5dGVzICovCisJCWlmICghcGdfc3Ryb25n X3JhbmRvbSgmdXVpZC0+ZGF0YVs4XSwgVVVJRF9MRU4gLSA4KSkKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5URVJOQUxfRVJST1IpLAorCQkJCQllcnJtc2coImNv dWxkIG5vdCBnZW5lcmF0ZSByYW5kb20gdmFsdWVzIikpKTsKKworCQkvKiBtb3N0IHNpZ25pZmlj YW50IDQgYml0cyBvZiAxOC1iaXQgY291bnRlciAqLworCQl1dWlkLT5kYXRhWzZdID0gKHVuc2ln bmVkIGNoYXIpKHNlcXVlbmNlX2NvdW50ZXIgPj4gMTQpOworCQkvKiBuZXh0IDggYml0cyAqLwor CQl1dWlkLT5kYXRhWzddID0gKHVuc2lnbmVkIGNoYXIpKHNlcXVlbmNlX2NvdW50ZXIgPj4gNik7 CisJCS8qIGxlYXN0IHNpZ25pZmljYW50IDYgYml0cyAqLworCQl1dWlkLT5kYXRhWzhdID0gKHVu c2lnbmVkIGNoYXIpKHNlcXVlbmNlX2NvdW50ZXIpOworCX0KKwllbHNlCisJeworCQkvKiBmaWxs IGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIHRpbWVzdGFtcCB3aXRoIHJhbmRvbSBieXRlcyAqLworCQlp ZiAoIXBnX3N0cm9uZ19yYW5kb20oJnV1aWQtPmRhdGFbNl0sIFVVSURfTEVOIC0gNikpCisJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVEVSTkFMX0VSUk9SKSwKKwkJ CQkJZXJybXNnKCJjb3VsZCBub3QgZ2VuZXJhdGUgcmFuZG9tIHZhbHVlcyIpKSk7CisKKwkJLyoK KwkJICogTGVmdC1tb3N0IGNvdW50ZXIgYml0cyBhcmUgaW5pdGlhbGl6ZWQgYXMgemVybyBmb3Ig dGhlIHNvbGUgcHVycG9zZQorCQkgKiBvZiBndWFyZGluZyBhZ2FpbnN0IGNvdW50ZXIgcm9sbG92 ZXJzLgorCQkgKiBTZWUgc2VjdGlvbiAiRml4ZWQtTGVuZ3RoIERlZGljYXRlZCBDb3VudGVyIFNl ZWRpbmciCisJCSAqIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvZHJhZnQt aWV0Zi11dWlkcmV2LXJmYzQxMjJiaXMtMDkjbW9ub3RvbmljaXR5X2NvdW50ZXJzCisJCSAqLwor CQl1dWlkLT5kYXRhWzZdID0gKHV1aWQtPmRhdGFbNl0gJiAweGY3KTsKKworCQkvKiByZWFkIHJh bmRvbWx5IGluaXRpYWxpemVkIGJpdHMgb2YgY291bnRlciAqLworCQlzZXF1ZW5jZV9jb3VudGVy ID0gKCh1aW50MzJfdCl1dWlkLT5kYXRhWzhdICYgMHgzZikgKworCQkJCQkJCSgoKHVpbnQzMl90 KXV1aWQtPmRhdGFbN10pIDw8IDYpICsKKwkJCQkJCQkoKCh1aW50MzJfdCl1dWlkLT5kYXRhWzZd ICYgMHgwZikgPDwgMTQpOworCisJCXByZXZpb3VzX3RpbWVzdGFtcCA9IHRtczsKKwl9CisKKwkv KiBGaWxsIGluIHRpbWUgcGFydCAqLworCXV1aWQtPmRhdGFbMF0gPSAodW5zaWduZWQgY2hhciko dG1zID4+IDQwKTsKKwl1dWlkLT5kYXRhWzFdID0gKHVuc2lnbmVkIGNoYXIpKHRtcyA+PiAzMik7 CisJdXVpZC0+ZGF0YVsyXSA9ICh1bnNpZ25lZCBjaGFyKSh0bXMgPj4gMjQpOworCXV1aWQtPmRh dGFbM10gPSAodW5zaWduZWQgY2hhcikodG1zID4+IDE2KTsKKwl1dWlkLT5kYXRhWzRdID0gKHVu c2lnbmVkIGNoYXIpKHRtcyA+PiA4KTsKKwl1dWlkLT5kYXRhWzVdID0gKHVuc2lnbmVkIGNoYXIp dG1zOworCisJLyoKKwkgKiBTZXQgbWFnaWMgbnVtYmVycyBmb3IgYSAidmVyc2lvbiA3IiAocHNl dWRvcmFuZG9tKSBVVUlELCBzZWUKKwkgKiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2Rv Yy9odG1sL2RyYWZ0LWlldGYtdXVpZHJldi1yZmM0MTIyYmlzCisJICovCisJLyogc2V0IHZlcnNp b24gZmllbGQsIHRvcCBmb3VyIGJpdHMgYXJlIDAsIDEsIDEsIDEgKi8KKwl1dWlkLT5kYXRhWzZd ID0gKHV1aWQtPmRhdGFbNl0gJiAweDBmKSB8IDB4NzA7CisJLyogc2V0IHZhcmlhbnQgZmllbGQs IHRvcCB0d28gYml0cyBhcmUgMSwgMCAqLworCXV1aWQtPmRhdGFbOF0gPSAodXVpZC0+ZGF0YVs4 XSAmIDB4M2YpIHwgMHg4MDsKKworCVBHX1JFVFVSTl9VVUlEX1AodXVpZCk7Cit9CisKKy8qCisg KiBSb3V0aW5lIHRvIGV4dHJhY3QgVVVJRCB2ZXJzaW9uIGZyb20gdmFyaWFudCAwYjEwCisgKiBS ZXR1cm5zIE5VTEwgaWYgVVVJRCBpcyBub3QgMGIxMCBvciB2ZXJzaW9uIGlzIG5vdCAxLDYgb3I3 LgorICovCitEYXR1bQordXVpZF9leHRyYWN0X3RpbWVzdGFtcChQR19GVU5DVElPTl9BUkdTKQor eworCXBnX3V1aWRfdCAgKnV1aWQgPSBQR19HRVRBUkdfVVVJRF9QKDApOworCVRpbWVzdGFtcFR6 IHRzOworCXVpbnQ2NF90IHRtczsKKworCWlmICgodXVpZC0+ZGF0YVs4XSAmIDB4YzApICE9IDB4 ODApCisJCVBHX1JFVFVSTl9OVUxMKCk7CisKKwlpZiAoKHV1aWQtPmRhdGFbNl0gJiAweGYwKSA9 PSAweDcwKQorCXsKKwkJdG1zID0JCQkgIHV1aWQtPmRhdGFbNV07CisJCXRtcyArPSAoKHVpbnQ2 NF90KXV1aWQtPmRhdGFbNF0pIDw8IDg7CisJCXRtcyArPSAoKHVpbnQ2NF90KXV1aWQtPmRhdGFb M10pIDw8IDE2OworCQl0bXMgKz0gKCh1aW50NjRfdCl1dWlkLT5kYXRhWzJdKSA8PCAyNDsKKwkJ dG1zICs9ICgodWludDY0X3QpdXVpZC0+ZGF0YVsxXSkgPDwgMzI7CisJCXRtcyArPSAoKHVpbnQ2 NF90KXV1aWQtPmRhdGFbMF0pIDw8IDQwOworCisJCXRzID0gKFRpbWVzdGFtcFR6KSAodG1zICog MTAwMCkgLSAvKiBjb252ZXJ0IG1zIHRvIHVzLCB0aGFuIGFkanVzdCAqLworCQkJKFBPU1RHUkVT X0VQT0NIX0pEQVRFIC0gVU5JWF9FUE9DSF9KREFURSkgKiBTRUNTX1BFUl9EQVkgKiBVU0VDU19Q RVJfU0VDOworCisJCVBHX1JFVFVSTl9USU1FU1RBTVBUWih0cyk7CisJfQorCisJaWYgKCh1dWlk LT5kYXRhWzZdICYgMHhmMCkgPT0gMHgxMCkKKwl7CisJCXRtcyA9ICAoKHVpbnQ2NF90KXV1aWQt PmRhdGFbMF0pIDw8IDI0OworCQl0bXMgKz0gKCh1aW50NjRfdCl1dWlkLT5kYXRhWzFdKSA8PCAx NjsKKwkJdG1zICs9ICgodWludDY0X3QpdXVpZC0+ZGF0YVsyXSkgPDwgODsKKwkJdG1zICs9ICgo dWludDY0X3QpdXVpZC0+ZGF0YVszXSk7CisJCXRtcyArPSAoKHVpbnQ2NF90KXV1aWQtPmRhdGFb NF0pIDw8IDQwOworCQl0bXMgKz0gKCh1aW50NjRfdCl1dWlkLT5kYXRhWzVdKSA8PCAzMjsKKwkJ dG1zICs9ICgoKHVpbnQ2NF90KXV1aWQtPmRhdGFbNl0pJjB4ZikgPDwgNTY7CisJCXRtcyArPSAo KHVpbnQ2NF90KXV1aWQtPmRhdGFbN10pIDw8IDQ4OworCisJCXRzID0gKFRpbWVzdGFtcFR6KSAo dG1zIC8gMTApIC0gLyogY29udmVydCAxMDAtbnMgaW50ZXJ2YWxzIHRvIHVzLCB0aGFuIGFkanVz dCAqLworCQkJKCh1aW50NjRfdClQT1NUR1JFU19FUE9DSF9KREFURSAtIEdSRUdPUklBTl9FUE9D SF9KREFURSkgKiBTRUNTX1BFUl9EQVkgKiBVU0VDU19QRVJfU0VDOworCisJCVBHX1JFVFVSTl9U SU1FU1RBTVBUWih0cyk7CisJfQorCisJaWYgKCh1dWlkLT5kYXRhWzZdICYgMHhmMCkgPT0gMHg2 MCkKKwl7CisJCXRtcyA9ICAoKHVpbnQ2NF90KXV1aWQtPmRhdGFbMF0pIDw8IDUyOworCQl0bXMg Kz0gKCh1aW50NjRfdCl1dWlkLT5kYXRhWzFdKSA8PCA0NDsKKwkJdG1zICs9ICgodWludDY0X3Qp dXVpZC0+ZGF0YVsyXSkgPDwgMzY7CisJCXRtcyArPSAoKHVpbnQ2NF90KXV1aWQtPmRhdGFbM10p IDw8IDI4OworCQl0bXMgKz0gKCh1aW50NjRfdCl1dWlkLT5kYXRhWzRdKSA8PCAyMDsKKwkJdG1z ICs9ICgodWludDY0X3QpdXVpZC0+ZGF0YVs1XSkgPDwgMTI7CisJCXRtcyArPSAoKCh1aW50NjRf dCl1dWlkLT5kYXRhWzZdKSYweGYpIDw8IDg7CisJCXRtcyArPSAoKHVpbnQ2NF90KXV1aWQtPmRh dGFbN10pOworCisJCXRzID0gKFRpbWVzdGFtcFR6KSAodG1zIC8gMTApIC0gLyogY29udmVydCAx MDAtbnMgaW50ZXJ2YWxzIHRvIHVzLCB0aGFuIGFkanVzdCAqLworCQkJKCh1aW50NjRfdClQT1NU R1JFU19FUE9DSF9KREFURSAtIEdSRUdPUklBTl9FUE9DSF9KREFURSkgKiBTRUNTX1BFUl9EQVkg KiBVU0VDU19QRVJfU0VDOworCisJCVBHX1JFVFVSTl9USU1FU1RBTVBUWih0cyk7CisJfQorCisJ UEdfUkVUVVJOX05VTEwoKTsKK30KKworLyoKKyAqIFJvdXRpbmUgdG8gZXh0cmFjdCBVVUlEIHZl cnNpb24gZnJvbSB2YXJpYW50IDBiMTAKKyAqIFJldHVybnMgTlVMTCBpZiBVVUlEIGlzIG5vdCAw YjEwCisgKi8KK0RhdHVtCit1dWlkX2V4dHJhY3RfdmVyc2lvbihQR19GVU5DVElPTl9BUkdTKQor eworCXBnX3V1aWRfdCAgKnV1aWQgPSBQR19HRVRBUkdfVVVJRF9QKDApOworCXVpbnQxNl90IHJl c3VsdDsKKworCWlmICgodXVpZC0+ZGF0YVs4XSAmIDB4YzApICE9IDB4ODApCisJCVBHX1JFVFVS Tl9OVUxMKCk7CisJcmVzdWx0ID0gdXVpZC0+ZGF0YVs2XSA+PiA0OworCisJUEdfUkVUVVJOX1VJ TlQxNihyZXN1bHQpOworfQorCisvKgorICogUm91dGluZSB0byBleHRyYWN0IFVVSUQgdmFyaWFu dC4gQ2FuIHJldHVybiBvbmx5IDAsIDBiMTAsIDBiMTEwIGFuZCAwYjExMS4KKyAqLworRGF0dW0K K3V1aWRfZXh0cmFjdF92YXJpYW50KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJcGdfdXVpZF90ICAq dXVpZCA9IFBHX0dFVEFSR19VVUlEX1AoMCk7CisJdWludDE2X3QgcmVzdWx0OworCisJLyoKKwkg KiBUaGUgY29udGVudHMgb2YgdGhlIHZhcmlhbnQgZmllbGQsIHdoZXJlIHRoZSBsZXR0ZXIgIngi IGluZGljYXRlcyBhCisJICogImRvbid0LWNhcmUiIHZhbHVlLgorCSAqIC0tLS0tLS0tLS0KKwkg KiBNc2IwCQlNc2IxCU1zYjIJTXNiMwlWYXJpYW50CURlc2NyaXB0aW9uCisJICogMAkJeAkJeAkJ eAkJMS03CQlSZXNlcnZlZCwgTkNTIGJhY2t3YXJkCisJICogCQkJCQkJCQkJCQljb21wYXRpYmls aXR5IGFuZCBpbmNsdWRlcyBOaWwKKwkgKiAJCQkJCQkJCQkJCVVVSUQgYXMgcGVyIFNlY3Rpb24g NS45LgorCSAqIDEJCTAJCXgJCXgJCTgtOSxBLUIJVGhlIHZhcmlhbnQgc3BlY2lmaWVkIGluIFJG Qy4KKwkgKiAxCQkxCQkwCQl4CQlDLUQJCVJlc2VydmVkLCBNaWNyb3NvZnQgQ29ycG9yYXRpb24K KwkgKiAJCQkJCQkJCQkJCWJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisJICogMQkJMQkJMQkJeAkJ RS1GCQlSZXNlcnZlZCBmb3IgZnV0dXJlIGRlZmluaXRpb24KKwkgKiAJCQkJCQkJCQkJCWFuZCBp bmNsdWRlcyBNYXggVVVJRCBhcyBwZXIKKwkgKiAJCQkJCQkJCQkJCVNlY3Rpb24gNS4xMCBvZiBS RkMuCisJICogLS0tLS0tLS0tLQorCSAqLworCisJdWludDhfdCBuaWJibGUgPSB1dWlkLT5kYXRh WzhdID4+IDQ7CisJaWYgKG5pYmJsZSA8IDgpCisJCXJlc3VsdCA9IDA7CisJZWxzZSBpZiAobmli YmxlIDwgMHhDKQorCQlyZXN1bHQgPSAwYjEwOworCWVsc2UgaWYgKG5pYmJsZSA8IDB4RSkKKwkJ cmVzdWx0ID0gMGIxMTA7CisJZWxzZQorCQlyZXN1bHQgPSAwYjExMTsKKworCVBHX1JFVFVSTl9V SU5UMTYocmVzdWx0KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDI5MWVkODc2ZmMu Ljc3ZjExMDIwYzYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtOTE2Nyw2ICs5MTY3LDIx IEBACiB7IG9pZCA9PiAnMzQzMicsIGRlc2NyID0+ICdnZW5lcmF0ZSByYW5kb20gVVVJRCcsCiAg IHByb25hbWUgPT4gJ2dlbl9yYW5kb21fdXVpZCcsIHByb2xlYWtwcm9vZiA9PiAndCcsIHByb3Zv bGF0aWxlID0+ICd2JywKICAgcHJvcmV0dHlwZSA9PiAndXVpZCcsIHByb2FyZ3R5cGVzID0+ICcn LCBwcm9zcmMgPT4gJ2dlbl9yYW5kb21fdXVpZCcgfSwKK3sgb2lkID0+ICc5ODk1JywgZGVzY3Ig PT4gJ2dlbmVyYXRlIFVVSUQgdmVyc2lvbiA0JywKKyAgcHJvbmFtZSA9PiAndXVpZHY0JywgcHJv bGVha3Byb29mID0+ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd1 dWlkJywgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAnZ2VuX3JhbmRvbV91dWlkJyB9LAor eyBvaWQgPT4gJzk4OTYnLCBkZXNjciA9PiAnZ2VuZXJhdGUgVVVJRCB2ZXJzaW9uIDcnLAorICBw cm9uYW1lID0+ICd1dWlkdjcnLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAn dicsCisgIHByb3JldHR5cGUgPT4gJ3V1aWQnLCBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ ICd1dWlkdjcnIH0sCit7IG9pZCA9PiAnOTg5NycsIGRlc2NyID0+ICdleHRyYWN0IHRpbWVzdGFt cCBmcm9tIFVVSUQgdmVyc2lvbiAxLCA2IG9yIDcnLAorICBwcm9uYW1lID0+ICd1dWlkX2V4dHJh Y3RfdGltZXN0YW1wJywgcHJvbGVha3Byb29mID0+ICd0JywKKyAgcHJvcmV0dHlwZSA9PiAndGlt ZXN0YW1wdHonLCBwcm9hcmd0eXBlcyA9PiAndXVpZCcsIHByb3NyYyA9PiAndXVpZF9leHRyYWN0 X3RpbWVzdGFtcCcgfSwKK3sgb2lkID0+ICc5ODk4JywgZGVzY3IgPT4gJ2V4dHJhY3QgdmVyc2lv biBmcm9tIFJGQyA0MTIyIFVVSUQnLAorICBwcm9uYW1lID0+ICd1dWlkX2V4dHJhY3RfdmVyc2lv bicsIHByb2xlYWtwcm9vZiA9PiAndCcsCisgIHByb3JldHR5cGUgPT4gJ2ludDInLCBwcm9hcmd0 eXBlcyA9PiAndXVpZCcsIHByb3NyYyA9PiAndXVpZF9leHRyYWN0X3ZlcnNpb24nIH0sCit7IG9p ZCA9PiAnOTg5OScsIGRlc2NyID0+ICdleHRyYWN0IHZhcmlhbnQgZnJvbSBVVUlEJywKKyAgcHJv bmFtZSA9PiAndXVpZF9leHRyYWN0X3ZhcmlhbnQnLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLAorICBw cm9yZXR0eXBlID0+ICdpbnQyJywgcHJvYXJndHlwZXMgPT4gJ3V1aWQnLCBwcm9zcmMgPT4gJ3V1 aWRfZXh0cmFjdF92YXJpYW50JyB9LAogCiAjIHBnX2xzbgogeyBvaWQgPT4gJzMyMjknLCBkZXNj ciA9PiAnSS9PJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2RhdGF0eXBlL3RpbWVzdGFtcC5o IGIvc3JjL2luY2x1ZGUvZGF0YXR5cGUvdGltZXN0YW1wLmgKaW5kZXggM2EzN2NiNjYxZS4uNjUy YWViNDI4ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZGF0YXR5cGUvdGltZXN0YW1wLmgKKysr IGIvc3JjL2luY2x1ZGUvZGF0YXR5cGUvdGltZXN0YW1wLmgKQEAgLTIzMCw5ICsyMzAsMTAgQEAg c3RydWN0IHBnX2l0bV9pbgogCSAoKHkpIDwgSlVMSUFOX01BWFlFQVIgfHwgXAogCSAgKCh5KSA9 PSBKVUxJQU5fTUFYWUVBUiAmJiAoKG0pIDwgSlVMSUFOX01BWE1PTlRIKSkpKQogCi0vKiBKdWxp YW4tZGF0ZSBlcXVpdmFsZW50cyBvZiBEYXkgMCBpbiBVbml4IGFuZCBQb3N0Z3JlcyByZWNrb25p bmcgKi8KKy8qIEp1bGlhbi1kYXRlIGVxdWl2YWxlbnRzIG9mIERheSAwIGluIFVuaXgsIFBvc3Rn cmVzIGFuZCBHcmVnb3JpYW4gZXBvY2hzICovCiAjZGVmaW5lIFVOSVhfRVBPQ0hfSkRBVEUJCTI0 NDA1ODggLyogPT0gZGF0ZTJqKDE5NzAsIDEsIDEpICovCiAjZGVmaW5lIFBPU1RHUkVTX0VQT0NI X0pEQVRFCTI0NTE1NDUgLyogPT0gZGF0ZTJqKDIwMDAsIDEsIDEpICovCisjZGVmaW5lIEdSRUdP UklBTl9FUE9DSF9KREFURQkyMjk5MTYxIC8qID09IGRhdGUyaigxNTgyLDEwLDE1KSAqLwogCiAv KgogICogUmFuZ2UgbGltaXRzIGZvciBkYXRlcyBhbmQgdGltZXN0YW1wcy4KZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0CmluZGV4IDc2MTBiMDExZDYuLjQ0NTQyYzU2ZWYg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dApAQCAtODcyLDYgKzg3 MiwxMSBAQCB4aWQ4Z2UoeGlkOCx4aWQ4KQogeGlkOGVxKHhpZDgseGlkOCkKIHhpZDhuZSh4aWQ4 LHhpZDgpCiB4aWQ4Y21wKHhpZDgseGlkOCkKK3V1aWR2NCgpCit1dWlkdjcoKQordXVpZF9leHRy YWN0X3RpbWVzdGFtcCh1dWlkKQordXVpZF9leHRyYWN0X3ZlcnNpb24odXVpZCkKK3V1aWRfZXh0 cmFjdF92YXJpYW50KHV1aWQpCiAtLSByZXN0b3JlIG5vcm1hbCBvdXRwdXQgbW9kZQogXGFcdAog LS0gTGlzdCBvZiBmdW5jdGlvbnMgdXNlZCBieSBsaWJwcSdzIGZlLWxvYmouYwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91dWlkLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvdXVpZC5vdXQKaW5kZXggOGU3ZjIxOTEwZC4uMjkzMGJjYzdmMCAxMDA2NDQKLS0t IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91dWlkLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3V1aWQub3V0CkBAIC0xNjgsNSArMTY4LDc2IEBAIFNFTEVDVCBjb3VudChE SVNUSU5DVCBndWlkX2ZpZWxkKSBGUk9NIGd1aWQxOwogICAgICAyCiAoMSByb3cpCiAKKy0tIHRl c3Qgb2YgdXVpZHY0KCkgYWxpYXMKK1RSVU5DQVRFIGd1aWQxOworSU5TRVJUIElOVE8gZ3VpZDEg KGd1aWRfZmllbGQpIFZBTFVFUyAodXVpZHY0KCkpOworSU5TRVJUIElOVE8gZ3VpZDEgKGd1aWRf ZmllbGQpIFZBTFVFUyAodXVpZHY0KCkpOworU0VMRUNUIGNvdW50KERJU1RJTkNUIGd1aWRfZmll bGQpIEZST00gZ3VpZDE7CisgY291bnQgCistLS0tLS0tCisgICAgIDIKKygxIHJvdykKKworLS0g Z2VuZXJhdGlvbiB0ZXN0IGZvciB2NworVFJVTkNBVEUgZ3VpZDE7CitJTlNFUlQgSU5UTyBndWlk MSAoZ3VpZF9maWVsZCkgVkFMVUVTICh1dWlkdjcoKSk7CitJTlNFUlQgSU5UTyBndWlkMSAoZ3Vp ZF9maWVsZCkgVkFMVUVTICh1dWlkdjcoKSk7CitTRUxFQ1QgY291bnQoRElTVElOQ1QgZ3VpZF9m aWVsZCkgRlJPTSBndWlkMTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMgorKDEgcm93KQorCist LSBzdXBwb3J0IGZ1bmN0aW9ucyBmb3IgVVVJRCB2ZXJzaW9ucyBhbmQgdmFyaWFudHMKK1NFTEVD VCB1dWlkX2V4dHJhY3RfdmVyc2lvbih1dWlkdjcoKSk7CisgdXVpZF9leHRyYWN0X3ZlcnNpb24g CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgIDcKKygxIHJvdykK KworU0VMRUNUIHV1aWRfZXh0cmFjdF92ZXJzaW9uKCcxMTExMTExMS0xMTExLTExMTEtMTExMS0x MTExMTExMTExMTEnKSBJUyBOVUxMOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJv dykKKworU0VMRUNUIHV1aWRfZXh0cmFjdF92ZXJzaW9uKCcxMTExMTExMS0xMTExLTUxMTEtODEx MS0xMTExMTExMTExMTEnKTsKKyB1dWlkX2V4dHJhY3RfdmVyc2lvbiAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgNQorKDEgcm93KQorCitTRUxFQ1QgdXVpZF9l eHRyYWN0X3ZhcmlhbnQodXVpZHY3KCkpOworIHV1aWRfZXh0cmFjdF92YXJpYW50IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAyCisoMSByb3cpCisKKy0tIHV1 aWRfZXh0cmFjdF90aW1lc3RhbXAoKSBtdXN0IHJlZnVzZSB0byBhY2NlcHQgbm9uLVVVSUR2Nwor U0VMRUNUIHV1aWRfZXh0cmFjdF90aW1lc3RhbXAoZ2VuX3JhbmRvbV91dWlkKCkpOworIHV1aWRf ZXh0cmFjdF90aW1lc3RhbXAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykK KworLS0gZXh0cmFjdCBVVUlEIHYxLCB2NiBhbmQgdjcgdGltZXN0YW1wCitTRUxFQ1QgdXVpZF9l eHRyYWN0X3RpbWVzdGFtcCgnQzIzMkFCMDAtOTQxNC0xMUVDLUIzQzgtOUY2QkRFQ0VEODQ2Jykg PSAnVHVlc2RheSwgRmVicnVhcnkgMjIsIDIwMjIgMjoyMjoyMi4wMCBQTSBHTVQrMDU6MDAnOwor ID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIHV1aWRfZXh0cmFj dF90aW1lc3RhbXAoJzFFQzk0MTRDLTIzMkEtNkIwMC1CM0M4LTlGNkJERUNFRDg0NicpID0gJ1R1 ZXNkYXksIEZlYnJ1YXJ5IDIyLCAyMDIyIDI6MjI6MjIuMDAgUE0gR01UKzA1OjAwJzsKKyA/Y29s dW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCB1dWlkX2V4dHJhY3RfdGlt ZXN0YW1wKCcwMTdGMjJFMi03OUIwLTdDQzMtOThDNC1EQzBDMEMwNzM5OEYnKSA9ICdUdWVzZGF5 LCBGZWJydWFyeSAyMiwgMjAyMiAyOjIyOjIyLjAwIFBNIEdNVCswNTowMCc7CisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCiAtLSBjbGVhbiB1cAogRFJPUCBUQUJMRSBndWlk MSwgZ3VpZDIgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3V1aWQu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwKaW5kZXggOWE4ZjQzN2M3ZC4uMGY5 YmQxYTY2MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwKQEAgLTg1LDUgKzg1LDMxIEBAIElOU0VSVCBJ TlRPIGd1aWQxIChndWlkX2ZpZWxkKSBWQUxVRVMgKGdlbl9yYW5kb21fdXVpZCgpKTsKIElOU0VS VCBJTlRPIGd1aWQxIChndWlkX2ZpZWxkKSBWQUxVRVMgKGdlbl9yYW5kb21fdXVpZCgpKTsKIFNF TEVDVCBjb3VudChESVNUSU5DVCBndWlkX2ZpZWxkKSBGUk9NIGd1aWQxOwogCistLSB0ZXN0IG9m IHV1aWR2NCgpIGFsaWFzCitUUlVOQ0FURSBndWlkMTsKK0lOU0VSVCBJTlRPIGd1aWQxIChndWlk X2ZpZWxkKSBWQUxVRVMgKHV1aWR2NCgpKTsKK0lOU0VSVCBJTlRPIGd1aWQxIChndWlkX2ZpZWxk KSBWQUxVRVMgKHV1aWR2NCgpKTsKK1NFTEVDVCBjb3VudChESVNUSU5DVCBndWlkX2ZpZWxkKSBG Uk9NIGd1aWQxOworCistLSBnZW5lcmF0aW9uIHRlc3QgZm9yIHY3CitUUlVOQ0FURSBndWlkMTsK K0lOU0VSVCBJTlRPIGd1aWQxIChndWlkX2ZpZWxkKSBWQUxVRVMgKHV1aWR2NygpKTsKK0lOU0VS VCBJTlRPIGd1aWQxIChndWlkX2ZpZWxkKSBWQUxVRVMgKHV1aWR2NygpKTsKK1NFTEVDVCBjb3Vu dChESVNUSU5DVCBndWlkX2ZpZWxkKSBGUk9NIGd1aWQxOworCistLSBzdXBwb3J0IGZ1bmN0aW9u cyBmb3IgVVVJRCB2ZXJzaW9ucyBhbmQgdmFyaWFudHMKK1NFTEVDVCB1dWlkX2V4dHJhY3RfdmVy c2lvbih1dWlkdjcoKSk7CitTRUxFQ1QgdXVpZF9leHRyYWN0X3ZlcnNpb24oJzExMTExMTExLTEx MTEtMTExMS0xMTExLTExMTExMTExMTExMScpIElTIE5VTEw7CitTRUxFQ1QgdXVpZF9leHRyYWN0 X3ZlcnNpb24oJzExMTExMTExLTExMTEtNTExMS04MTExLTExMTExMTExMTExMScpOworU0VMRUNU IHV1aWRfZXh0cmFjdF92YXJpYW50KHV1aWR2NygpKTsKKworLS0gdXVpZF9leHRyYWN0X3RpbWVz dGFtcCgpIG11c3QgcmVmdXNlIHRvIGFjY2VwdCBub24tVVVJRHY3CitTRUxFQ1QgdXVpZF9leHRy YWN0X3RpbWVzdGFtcChnZW5fcmFuZG9tX3V1aWQoKSk7CisKKy0tIGV4dHJhY3QgVVVJRCB2MSwg djYgYW5kIHY3IHRpbWVzdGFtcAorU0VMRUNUIHV1aWRfZXh0cmFjdF90aW1lc3RhbXAoJ0MyMzJB QjAwLTk0MTQtMTFFQy1CM0M4LTlGNkJERUNFRDg0NicpID0gJ1R1ZXNkYXksIEZlYnJ1YXJ5IDIy LCAyMDIyIDI6MjI6MjIuMDAgUE0gR01UKzA1OjAwJzsKK1NFTEVDVCB1dWlkX2V4dHJhY3RfdGlt ZXN0YW1wKCcxRUM5NDE0Qy0yMzJBLTZCMDAtQjNDOC05RjZCREVDRUQ4NDYnKSA9ICdUdWVzZGF5 LCBGZWJydWFyeSAyMiwgMjAyMiAyOjIyOjIyLjAwIFBNIEdNVCswNTowMCc7CitTRUxFQ1QgdXVp ZF9leHRyYWN0X3RpbWVzdGFtcCgnMDE3RjIyRTItNzlCMC03Q0MzLTk4QzQtREMwQzBDMDczOThG JykgPSAnVHVlc2RheSwgRmVicnVhcnkgMjIsIDIwMjIgMjoyMjoyMi4wMCBQTSBHTVQrMDU6MDAn OworCiAtLSBjbGVhbiB1cAogRFJPUCBUQUJMRSBndWlkMSwgZ3VpZDIgQ0FTQ0FERTsKLS0gCjIu NDQuMAoK --0000000000007364fc061361e9a3--