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.96) (envelope-from ) id 1vTMX0-001436-38 for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Dec 2025 15:55:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vTMWy-00CWlZ-17 for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Dec 2025 15:55:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vTMWx-00CWlR-32 for pgsql-hackers@lists.postgresql.org; Wed, 10 Dec 2025 15:55:08 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vTMWv-0000QC-38 for pgsql-hackers@lists.postgresql.org; Wed, 10 Dec 2025 15:55:07 +0000 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-b7cf4a975d2so70457466b.2 for ; Wed, 10 Dec 2025 07:55:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec.at; s=google; t=1765382103; x=1765986903; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=kI8EXUV/O64AmsCXUUFBMVRbhkukaBbN1MLEmIl5YDk=; b=bMD7qWYyKTEg/ew/dXvTRkdtHl0tru1ep3fiGdzQeTW89MtdF0dhhPCsT6E9U8WV0o lkx1lKqpamLbTIz74pAGzPmxDzGFAjTPSRvcGjNsN5BXhc7qjzSguAdlRIBRQSz0/Bbr 1QiSIRJitXasj39REt6BBjYrNgncyOTdf10ump80yYioXGXUfVFLEJbbNLI5XQRugl2b nbHBsxksAdo47ft/4sOEs3C+or3/yqf1eIG/yz5fRBoLy02K/MvxGq/amT6UF5rTN4lX hzlVA6HXkNjh7XwY+0s74Pra1yFNk057iSrFwb3ubtcfM6YrNh1gcSrZLXVSRSzasei1 NfdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765382103; x=1765986903; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=kI8EXUV/O64AmsCXUUFBMVRbhkukaBbN1MLEmIl5YDk=; b=qw4dPwB4AJlcaWs1VBjx3ZmICI9veIio4IWEYkbUW7qL6d+x8r/X9Qx57Ht2e9nc0e x4tu3sgV1MSrbKyPztX85d5dxhgXwKOCXF0VF/hhI+s5cA4WnOjWLI8BCwp2cV9EWBHJ hz0jMUqlGIHhecftLoBLCa/t1OUtMUSeHJEQJkVIfyTlJKSFnFosToWsJJYznfR+f7cv Y/Deu9s3sENpgT0tdrLnBPxJaodMzmq5+wo4wpKjssx5zBD9bUBetnGlLd0qpAIJE7q5 V/YRYXxvH0ayzaZK8DQYacnb38BxUrjfMnWXEKd0J6R8Rlc4nzSfTS77EKj9LufBvDXo P7ew== X-Gm-Message-State: AOJu0Yx9x5VqPJQ4YHb4QBhDEjEsk6DjRM3HBrEilC32YW6w1kPhI3R5 WgnNeHw78Z4nUjXj2RSCJ216OMFfuHRd2yEXVOSzd4Y7vK6Wy3yoyUhf9tJxO0AbK9lSz7L5ZaQ Bkfq1vSAhsfgS5YA6KXTMBeskqWj3h5eSEistPM4DddP6rJS0M89F6OFbAL4y X-Gm-Gg: ASbGncsw1OQPsxl6iXJaRKWnHdefCoKwjqAW7jEydSAM18vMfAxaMBxBwwcLKiVgjMX PaB4D0A+6mKB+0FJaxUQcwToPr3/khGxlfPvN6kxK5EbjJprQ1voIwgB92977fOLWiWLJ0sN/Wv Ffoaob9Q/SC8ERKJShvBt5PFU+knXCfOP/q3wrtu1+ltPLPlB/1mh50SH9MA+Va7o2j8IPxciLK SosvcKhJ7mYlT2G2Cum5LjY/AnknMxG+oyanB1FN0Y3aSmrPnOvyX8XITDyauLyJkbdVJ4= X-Google-Smtp-Source: AGHT+IFisB79P/ZkwL8suWaPwxIiZZSDUJk4p4ID941BM55AKG37qQWDtVXkuPacZRrkmzAJjWAZ3hOTb5UrJOLL7eI= X-Received: by 2002:a17:906:4fce:b0:b7a:1bde:1224 with SMTP id a640c23a62f3a-b7ce851c2b7mr296276666b.65.1765382103296; Wed, 10 Dec 2025 07:55:03 -0800 (PST) MIME-Version: 1.0 From: Pavlo Golub Date: Wed, 10 Dec 2025 16:54:56 +0100 X-Gm-Features: AQt7F2ojfFSCcGyBpC-Xf5Lh9jypq093xVDJsJFaWOUDXVjv9T2xSsW4upKzM08 Message-ID: Subject: [PATCH] Add last_executed timestamp to pg_stat_statements To: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000029209a06459b0d35" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000029209a06459b0d35 Content-Type: text/plain; charset="UTF-8" Hello, I would like to propose adding a last_executed timestamptz column to pg_stat_statements. This column records when each tracked statement was most recently executed. The motivation comes from real world experience with monitoring tools like pgwatch that poll pg_stat_statements regularly. Currently, these tools must fetch and store statistics for all statements, even those that haven't executed recently. This creates significant storage overhead. For a database with around 3400 statements polled every 3 minutes, storing full query text requires roughly 2.5 MB per snapshot. Over two weeks, this accumulates to about 17 GB. Even without query text, storage reaches 10 GB. With a last_executed timestamptz, monitoring tools can simply filter statements by "last_executed > NOW() - polling_interval" to fetch only statements that have been executed since the last poll. This eliminates the need for complex workarounds that some tools currently use to identify changed statements (https://github.com/cybertec-postgresql/pgwatch/blob/759df3a149cbbe973165547186068aa7b5332f9d/internal/metrics/metrics.yaml#L2605-L2766). Beyond monitoring efficiency, the timestamp enables other useful queries. You can find statements that haven't executed in 30 days to identify deprecated code paths. You can correlate statement execution with specific time windows during incident investigation. You can also make informed decisions about which statistics to reset. The implementation is straightforward. The timestamp is stored in the Counters structure and updated on every statement execution, protected by the existing spinlock. The overhead is minimal, just a single timestamp assignment per execution. The timestamp persists with other statistics across server restarts. I've bumped the stats file format version to handle the structure change cleanly. The patch includes a new pg_stat_statements_1_14 function, the upgrade script from 1.13 to 1.14, and regression tests. All existing tests continue to pass. I believe this is a simple addition that addresses a real pain point for database monitoring and provides useful functionality for understanding query patterns over time. Thanks in advance! Attached patch applies cleanly to the current master. --00000000000029209a06459b0d35 Content-Type: application/octet-stream; name="0001-pg_stat_statements_last_executed.patch" Content-Disposition: attachment; filename="0001-pg_stat_statements_last_executed.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj06ujpk0 RnJvbSA5N2FlZDE0ODNkMjEzNTlkMGMwZGZkMWMzMzJjMGU1NjlmNjZhYzA5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQYXZsbyBHb2x1YiA8cGF2bG8uZ29sdWJAY3liZXJ0ZWMuYXQ+ CkRhdGU6IFdlZCwgMTAgRGVjIDIwMjUgMTU6MTQ6MjIgKzAwMDAKU3ViamVjdDogW1BBVENIXSBB ZGQgbGFzdF9leGVjdXRlZCB0aW1lc3RhbXAgdG8gcGdfc3RhdF9zdGF0ZW1lbnRzCgpUaGlzIHBh dGNoIGFkZHMgYSBsYXN0X2V4ZWN1dGVkIHRpbWVzdGFtcCBjb2x1bW4gdG8gcGdfc3RhdF9zdGF0 ZW1lbnRzLApyZWNvcmRpbmcgd2hlbiBlYWNoIHN0YXRlbWVudCB3YXMgbW9zdCByZWNlbnRseSBl eGVjdXRlZC4gVGhpcyBlbmFibGVzCmVmZmljaWVudCBmaWx0ZXJpbmcgb2YgYWN0aXZlIHN0YXRl bWVudHMsIHdoaWNoIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwKZm9yIG1vbml0b3Jpbmcgc3lzdGVt cyB0aGF0IHBvbGwgcGdfc3RhdF9zdGF0ZW1lbnRzIHBlcmlvZGljYWxseS4KClRoZSBuZXcgY29s dW1uIGhlbHBzIHJlZHVjZSBzdG9yYWdlIG92ZXJoZWFkIGluIG1vbml0b3Jpbmcgc3lzdGVtcy4g Rm9yCmV4YW1wbGUsIGEgc3lzdGVtIHBvbGxpbmcgZXZlcnkgMyBtaW51dGVzIGNhbiBub3cgZmls dGVyIHN0YXRlbWVudHMKZXhlY3V0ZWQgc2luY2UgdGhlIGxhc3QgcG9sbCwgYXZvaWRpbmcgc3Rv cmFnZSBvZiB1bmNoYW5nZWQgc3RhdGlzdGljcy4KClRoZSBpbXBsZW1lbnRhdGlvbiB1cGRhdGVz IHRoZSB0aW1lc3RhbXAgb24gZXZlcnkgc3RhdGVtZW50IGV4ZWN1dGlvbgp3aXRoIG1pbmltYWwg b3ZlcmhlYWQsIHByb3RlY3RlZCBieSB0aGUgZXhpc3Rpbmcgc3BpbmxvY2suIFRoZSB0aW1lc3Rh bXAKaXMgcGVyc2lzdGVkIHdpdGggb3RoZXIgc3RhdGlzdGljcyBhbmQgc3Vydml2ZXMgc2VydmVy IHJlc3RhcnRzLgoKQ2hhbmdlcyBpbmNsdWRlOgotIE5ldyBsYXN0X2V4ZWN1dGVkIGNvbHVtbiBv ZiB0eXBlIHRpbWVzdGFtcHR6IGluIHBnX3N0YXRfc3RhdGVtZW50cyB2aWV3Ci0gcGdfc3RhdF9z dGF0ZW1lbnRzXzFfMTQgZnVuY3Rpb24gZm9yIHZlcnNpb24gMS4xNAotIFVwZ3JhZGUgc2NyaXB0 IGZyb20gdmVyc2lvbiAxLjEzIHRvIDEuMTQKLSBSZWdyZXNzaW9uIHRlc3QgY292ZXJpbmcgdGlt ZXN0YW1wIGJlaGF2aW9yCi0gVXBkYXRlZCBmaWxlIGhlYWRlciBtYWdpYyBudW1iZXIgZm9yIHN0 YXRzIGZpbGUgZm9ybWF0IGNoYW5nZQotIERvY3VtZW50YXRpb24gdXBkYXRlcwoKLS0tCiBjb250 cmliL3BnX3N0YXRfc3RhdGVtZW50cy9NYWtlZmlsZSAgICAgICAgICAgfCAgIDMgKy0KIC4uLi9l eHBlY3RlZC9sYXN0X2V4ZWN1dGVkLm91dCAgICAgICAgICAgICAgICB8IDExMyArKysrKysrKysr KysrKysrKysKIGNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL21lc29uLmJ1aWxkICAgICAgICB8 ICAgMiArCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRzLS0xLjEzLS0xLjE0LnNxbCAgICAgICAgfCAg NzkgKysrKysrKysrKysrCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50 cy5jICAgfCAgMzAgKysrKy0KIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMuY29udHJvbCAgICAgICAg ICAgICAgICB8ICAgMiArLQogLi4uL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvbGFzdF9leGVjdXRl ZC5zcWwgIHwgIDUyICsrKysrKysrCiBkb2Mvc3JjL3NnbWwvcGdzdGF0c3RhdGVtZW50cy5zZ21s ICAgICAgICAgICAgfCAgIDkgKysKIDggZmlsZXMgY2hhbmdlZCwgMjg2IGluc2VydGlvbnMoKyks IDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19zdGF0X3N0YXRl bWVudHMvZXhwZWN0ZWQvbGFzdF9leGVjdXRlZC5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBjb250 cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMtLTEuMTMtLTEuMTQuc3Fs CiBjcmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvc3FsL2xhc3Rf ZXhlY3V0ZWQuc3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvTWFr ZWZpbGUgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9NYWtlZmlsZQppbmRleCBmZTA0Nzhh YzU1Mi4uNTE4MDMwZDIxODggMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRz L01ha2VmaWxlCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL01ha2VmaWxlCkBAIC03 LDYgKzcsNyBAQCBPQkpTID0gXAogCiBFWFRFTlNJT04gPSBwZ19zdGF0X3N0YXRlbWVudHMKIERB VEEgPSBwZ19zdGF0X3N0YXRlbWVudHMtLTEuNC5zcWwgXAorCXBnX3N0YXRfc3RhdGVtZW50cy0t MS4xMy0tMS4xNC5zcWwgXAogCXBnX3N0YXRfc3RhdGVtZW50cy0tMS4xMi0tMS4xMy5zcWwgXAog CXBnX3N0YXRfc3RhdGVtZW50cy0tMS4xMS0tMS4xMi5zcWwgcGdfc3RhdF9zdGF0ZW1lbnRzLS0x LjEwLS0xLjExLnNxbCBcCiAJcGdfc3RhdF9zdGF0ZW1lbnRzLS0xLjktLTEuMTAuc3FsIHBnX3N0 YXRfc3RhdGVtZW50cy0tMS44LS0xLjkuc3FsIFwKQEAgLTIxLDcgKzIyLDcgQEAgTERGTEFHU19T TCArPSAkKGZpbHRlciAtbG0sICQoTElCUykpCiBSRUdSRVNTX09QVFMgPSAtLXRlbXAtY29uZmln ICQodG9wX3NyY2RpcikvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1l bnRzLmNvbmYKIFJFR1JFU1MgPSBzZWxlY3QgZG1sIGN1cnNvcnMgdXRpbGl0eSBsZXZlbF90cmFj a2luZyBwbGFubmluZyBcCiAJdXNlcl9hY3Rpdml0eSB3YWwgZW50cnlfdGltZXN0YW1wIHByaXZp bGVnZXMgZXh0ZW5kZWQgXAotCXBhcmFsbGVsIHBsYW5jYWNoZSBjbGVhbnVwIG9sZGV4dHZlcnNp b25zIHNxdWFzaGluZworCXBhcmFsbGVsIHBsYW5jYWNoZSBjbGVhbnVwIG9sZGV4dHZlcnNpb25z IHNxdWFzaGluZyBsYXN0X2V4ZWN1dGVkCiAjIERpc2FibGVkIGJlY2F1c2UgdGhlc2UgdGVzdHMg cmVxdWlyZSAic2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzPXBnX3N0YXRfc3RhdGVtZW50cyIsCiAj IHdoaWNoIHR5cGljYWwgaW5zdGFsbGNoZWNrIHVzZXJzIGRvIG5vdCBoYXZlIChlLmcuIGJ1aWxk ZmFybSBjbGllbnRzKS4KIE5PX0lOU1RBTExDSEVDSyA9IDEKZGlmZiAtLWdpdCBhL2NvbnRyaWIv cGdfc3RhdF9zdGF0ZW1lbnRzL2V4cGVjdGVkL2xhc3RfZXhlY3V0ZWQub3V0IGIvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvbGFzdF9leGVjdXRlZC5vdXQKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjlkNjUwMjU2NmIxCi0tLSAvZGV2L251bGwKKysr IGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvZXhwZWN0ZWQvbGFzdF9leGVjdXRlZC5vdXQK QEAgLTAsMCArMSwxMTMgQEAKKy0tCistLSBsYXN0X2V4ZWN1dGVkIHRpbWVzdGFtcAorLS0KK1NF TEVDVCBwZ19zdGF0X3N0YXRlbWVudHNfcmVzZXQoKSBJUyBOT1QgTlVMTCBBUyB0OworIHQgCist LS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCAxIEFTICJMQVNUMSI7CisgTEFTVDEgCistLS0tLS0t CisgICAgIDEKKygxIHJvdykKKworU0VMRUNUIG5vdygpIEFTIHJlZl90czEgXGdzZXQKK1NFTEVD VCBwZ19zbGVlcCgwLjEpOworIHBnX3NsZWVwIAorLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitT RUxFQ1QgMiBBUyAiTEFTVDIiOworIExBU1QyIAorLS0tLS0tLQorICAgICAyCisoMSByb3cpCisK K1NFTEVDVCBub3coKSBBUyByZWZfdHMyIFxnc2V0CistLSB2ZXJpZnkgbGFzdF9leGVjdXRlZCBp cyBzZXQgYW5kIHVwZGF0ZWQKK1NFTEVDVCAKKyAgICBxdWVyeSwKKyAgICBsYXN0X2V4ZWN1dGVk IElTIE5PVCBOVUxMIGFzIGhhc190cywKKyAgICBsYXN0X2V4ZWN1dGVkID49IDoncmVmX3RzMScg YXMgYWZ0ZXJfcmVmMSwKKyAgICBzdGF0c19zaW5jZSA8PSBsYXN0X2V4ZWN1dGVkIGFzIGFmdGVy X3N0YXRzX3NpbmNlCitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAn JUxBU1QlJworT1JERVIgQlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgIHF1ZXJ5ICAgICAg ICAgfCBoYXNfdHMgfCBhZnRlcl9yZWYxIHwgYWZ0ZXJfc3RhdHNfc2luY2UgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tCisg U0VMRUNUICQxIEFTICJMQVNUMSIgfCB0ICAgICAgfCB0ICAgICAgICAgIHwgdAorKDEgcm93KQor CistLSBleGVjdXRlIGFnYWluIGFuZCB2ZXJpZnkgdXBkYXRlCitTRUxFQ1QgcGdfc2xlZXAoMC4x KTsKKyBwZ19zbGVlcCAKKy0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIDEgQVMgIkxB U1QxIjsKKyBMQVNUMSAKKy0tLS0tLS0KKyAgICAgMQorKDEgcm93KQorCitTRUxFQ1Qgbm93KCkg QVMgcmVmX3RzMyBcZ3NldAorU0VMRUNUIAorICAgIHF1ZXJ5LAorICAgIGxhc3RfZXhlY3V0ZWQg Pj0gOidyZWZfdHMzJyBhcyB1cGRhdGVkCitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUg cXVlcnkgTElLRSAnJUxBU1QxJSc7CisgICAgICAgIHF1ZXJ5ICAgICAgICAgfCB1cGRhdGVkIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBTRUxFQ1QgJDEgQVMgIkxBU1QxIiB8 IGYKKygxIHJvdykKKworLS0gdGVzdCBmaWx0ZXJpbmcgKG1vbml0b3JpbmcgdXNlIGNhc2UpCitT RUxFQ1QgcXVlcnksIGNvdW50KCopIGFzIGNvdW50CitGUk9NIHBnX3N0YXRfc3RhdGVtZW50cwor V0hFUkUgbGFzdF9leGVjdXRlZCA+PSA6J3JlZl90czInCitHUk9VUCBCWSBxdWVyeQorT1JERVIg QlkgcXVlcnkgQ09MTEFURSAiQyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnkgICAg ICAgICAgICAgICAgICAgICAgICAgfCBjb3VudCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFNFTEVDVCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgICAgIDEKKyAgICAgcXVlcnks ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICt8IAorICAgICBsYXN0 X2V4ZWN1dGVkID49ICQxIGFzIHVwZGF0ZWQgICAgICAgICAgICAgICAgICAgK3wgCisgRlJPTSBw Z19zdGF0X3N0YXRlbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArfCAKKyBXSEVS RSBxdWVyeSBMSUtFICQyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorIFNF TEVDVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgK3wgICAg IDEKKyAgICAgcXVlcnksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICt8IAorICAgICBsYXN0X2V4ZWN1dGVkIElTIE5PVCBOVUxMIGFzIGhhc190cywgICAgICAgICAg ICAgK3wgCisgICAgIGxhc3RfZXhlY3V0ZWQgPj0gJDEgYXMgYWZ0ZXJfcmVmMSwgICAgICAgICAg ICAgICArfCAKKyAgICAgc3RhdHNfc2luY2UgPD0gbGFzdF9leGVjdXRlZCBhcyBhZnRlcl9zdGF0 c19zaW5jZSt8IAorIEZST00gcGdfc3RhdF9zdGF0ZW1lbnRzICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgK3wgCisgV0hFUkUgcXVlcnkgTElLRSAkMiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArfCAKKyBPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIiAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IAorIFNFTEVDVCAkMSBBUyAiTEFTVDEiICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgIDEKKyBTRUxFQ1Qgbm93KCkgQVMgcmVmX3RzMSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAxCisgU0VMRUNUIHBnX3NsZWVwKCQxKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMQorKDUgcm93cykKKworLS0gbWlu bWF4IHJlc2V0IHNob3VsZCBub3QgYWZmZWN0IGxhc3RfZXhlY3V0ZWQKK1NFTEVDVCBwZ19zdGF0 X3N0YXRlbWVudHNfcmVzZXQoMCwgMCwgcXVlcnlpZCwgdHJ1ZSkKK0ZST00gcGdfc3RhdF9zdGF0 ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclTEFTVDElJyBcZ3NldAorU0VMRUNUIAorICAgIHF1 ZXJ5LAorICAgIGxhc3RfZXhlY3V0ZWQgPj0gOidyZWZfdHMzJyBhcyB0c19wcmVzZXJ2ZWQKK0ZS T00gcGdfc3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBxdWVyeSBMSUtFICclTEFTVDElJzsKKyAgICAg ICAgcXVlcnkgICAgICAgICB8IHRzX3ByZXNlcnZlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0KKyBTRUxFQ1QgJDEgQVMgIkxBU1QxIiB8IGYKKygxIHJvdykKKworU0VM RUNUIHBnX3N0YXRfc3RhdGVtZW50c19yZXNldCgpIElTIE5PVCBOVUxMIEFTIHQ7CisgdCAKKy0t LQorIHQKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv bWVzb24uYnVpbGQgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9tZXNvbi5idWlsZAppbmRl eCA3YjhiZmJiMWRlNy4uMTI3NjBmOWMzYTEgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9z dGF0ZW1lbnRzL21lc29uLmJ1aWxkCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL21l c29uLmJ1aWxkCkBAIC0yMSw2ICsyMSw3IEBAIGNvbnRyaWJfdGFyZ2V0cyArPSBwZ19zdGF0X3N0 YXRlbWVudHMKIGluc3RhbGxfZGF0YSgKICAgJ3BnX3N0YXRfc3RhdGVtZW50cy5jb250cm9sJywK ICAgJ3BnX3N0YXRfc3RhdGVtZW50cy0tMS40LnNxbCcsCisgICdwZ19zdGF0X3N0YXRlbWVudHMt LTEuMTMtLTEuMTQuc3FsJywKICAgJ3BnX3N0YXRfc3RhdGVtZW50cy0tMS4xMi0tMS4xMy5zcWwn LAogICAncGdfc3RhdF9zdGF0ZW1lbnRzLS0xLjExLS0xLjEyLnNxbCcsCiAgICdwZ19zdGF0X3N0 YXRlbWVudHMtLTEuMTAtLTEuMTEuc3FsJywKQEAgLTU5LDYgKzYwLDcgQEAgdGVzdHMgKz0gewog ICAgICAgJ2NsZWFudXAnLAogICAgICAgJ29sZGV4dHZlcnNpb25zJywKICAgICAgICdzcXVhc2hp bmcnLAorICAgICAgJ2xhc3RfZXhlY3V0ZWQnLAogICAgIF0sCiAgICAgJ3JlZ3Jlc3NfYXJncyc6 IFsnLS10ZW1wLWNvbmZpZycsIGZpbGVzKCdwZ19zdGF0X3N0YXRlbWVudHMuY29uZicpXSwKICAg ICAjIERpc2FibGVkIGJlY2F1c2UgdGhlc2UgdGVzdHMgcmVxdWlyZQpkaWZmIC0tZ2l0IGEvY29u dHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLS0xLjEzLS0xLjE0LnNx bCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy0tMS4xMy0t MS4xNC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjViOWNhOGIy Zjc3Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3Rh dF9zdGF0ZW1lbnRzLS0xLjEzLS0xLjE0LnNxbApAQCAtMCwwICsxLDc5IEBACisvKiBjb250cmli L3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMtLTEuMTMtLTEuMTQuc3FsICov CisKKy0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBzcWwsIHJhdGhlciB0aGFu IHZpYSBBTFRFUiBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQUxURVIgRVhURU5TSU9OIHBnX3N0YXRf c3RhdGVtZW50cyBVUERBVEUgVE8gJzEuMTQnIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKwor LyogRmlyc3Qgd2UgaGF2ZSB0byByZW1vdmUgdGhlbSBmcm9tIHRoZSBleHRlbnNpb24gKi8KK0FM VEVSIEVYVEVOU0lPTiBwZ19zdGF0X3N0YXRlbWVudHMgRFJPUCBWSUVXIHBnX3N0YXRfc3RhdGVt ZW50czsKK0FMVEVSIEVYVEVOU0lPTiBwZ19zdGF0X3N0YXRlbWVudHMgRFJPUCBGVU5DVElPTiBw Z19zdGF0X3N0YXRlbWVudHMoYm9vbGVhbik7CisKKy8qIFRoZW4gd2UgY2FuIGRyb3AgdGhlbSAq LworRFJPUCBWSUVXIHBnX3N0YXRfc3RhdGVtZW50czsKK0RST1AgRlVOQ1RJT04gcGdfc3RhdF9z dGF0ZW1lbnRzKGJvb2xlYW4pOworCisvKiBOb3cgcmVkZWZpbmUgKi8KK0NSRUFURSBGVU5DVElP TiBwZ19zdGF0X3N0YXRlbWVudHMoSU4gc2hvd3RleHQgYm9vbGVhbiwKKyAgICBPVVQgdXNlcmlk IG9pZCwKKyAgICBPVVQgZGJpZCBvaWQsCisgICAgT1VUIHRvcGxldmVsIGJvb2wsCisgICAgT1VU IHF1ZXJ5aWQgYmlnaW50LAorICAgIE9VVCBxdWVyeSB0ZXh0LAorICAgIE9VVCBwbGFucyBpbnQ4 LAorICAgIE9VVCB0b3RhbF9wbGFuX3RpbWUgZmxvYXQ4LAorICAgIE9VVCBtaW5fcGxhbl90aW1l IGZsb2F0OCwKKyAgICBPVVQgbWF4X3BsYW5fdGltZSBmbG9hdDgsCisgICAgT1VUIG1lYW5fcGxh bl90aW1lIGZsb2F0OCwKKyAgICBPVVQgc3RkZGV2X3BsYW5fdGltZSBmbG9hdDgsCisgICAgT1VU IGNhbGxzIGludDgsCisgICAgT1VUIHRvdGFsX2V4ZWNfdGltZSBmbG9hdDgsCisgICAgT1VUIG1p bl9leGVjX3RpbWUgZmxvYXQ4LAorICAgIE9VVCBtYXhfZXhlY190aW1lIGZsb2F0OCwKKyAgICBP VVQgbWVhbl9leGVjX3RpbWUgZmxvYXQ4LAorICAgIE9VVCBzdGRkZXZfZXhlY190aW1lIGZsb2F0 OCwKKyAgICBPVVQgcm93cyBpbnQ4LAorICAgIE9VVCBzaGFyZWRfYmxrc19oaXQgaW50OCwKKyAg ICBPVVQgc2hhcmVkX2Jsa3NfcmVhZCBpbnQ4LAorICAgIE9VVCBzaGFyZWRfYmxrc19kaXJ0aWVk IGludDgsCisgICAgT1VUIHNoYXJlZF9ibGtzX3dyaXR0ZW4gaW50OCwKKyAgICBPVVQgbG9jYWxf Ymxrc19oaXQgaW50OCwKKyAgICBPVVQgbG9jYWxfYmxrc19yZWFkIGludDgsCisgICAgT1VUIGxv Y2FsX2Jsa3NfZGlydGllZCBpbnQ4LAorICAgIE9VVCBsb2NhbF9ibGtzX3dyaXR0ZW4gaW50OCwK KyAgICBPVVQgdGVtcF9ibGtzX3JlYWQgaW50OCwKKyAgICBPVVQgdGVtcF9ibGtzX3dyaXR0ZW4g aW50OCwKKyAgICBPVVQgc2hhcmVkX2Jsa19yZWFkX3RpbWUgZmxvYXQ4LAorICAgIE9VVCBzaGFy ZWRfYmxrX3dyaXRlX3RpbWUgZmxvYXQ4LAorICAgIE9VVCBsb2NhbF9ibGtfcmVhZF90aW1lIGZs b2F0OCwKKyAgICBPVVQgbG9jYWxfYmxrX3dyaXRlX3RpbWUgZmxvYXQ4LAorICAgIE9VVCB0ZW1w X2Jsa19yZWFkX3RpbWUgZmxvYXQ4LAorICAgIE9VVCB0ZW1wX2Jsa193cml0ZV90aW1lIGZsb2F0 OCwKKyAgICBPVVQgd2FsX3JlY29yZHMgaW50OCwKKyAgICBPVVQgd2FsX2ZwaSBpbnQ4LAorICAg IE9VVCB3YWxfYnl0ZXMgbnVtZXJpYywKKyAgICBPVVQgd2FsX2J1ZmZlcnNfZnVsbCBpbnQ4LAor ICAgIE9VVCBqaXRfZnVuY3Rpb25zIGludDgsCisgICAgT1VUIGppdF9nZW5lcmF0aW9uX3RpbWUg ZmxvYXQ4LAorICAgIE9VVCBqaXRfaW5saW5pbmdfY291bnQgaW50OCwKKyAgICBPVVQgaml0X2lu bGluaW5nX3RpbWUgZmxvYXQ4LAorICAgIE9VVCBqaXRfb3B0aW1pemF0aW9uX2NvdW50IGludDgs CisgICAgT1VUIGppdF9vcHRpbWl6YXRpb25fdGltZSBmbG9hdDgsCisgICAgT1VUIGppdF9lbWlz c2lvbl9jb3VudCBpbnQ4LAorICAgIE9VVCBqaXRfZW1pc3Npb25fdGltZSBmbG9hdDgsCisgICAg T1VUIGppdF9kZWZvcm1fY291bnQgaW50OCwKKyAgICBPVVQgaml0X2RlZm9ybV90aW1lIGZsb2F0 OCwKKyAgICBPVVQgcGFyYWxsZWxfd29ya2Vyc190b19sYXVuY2ggaW50OCwKKyAgICBPVVQgcGFy YWxsZWxfd29ya2Vyc19sYXVuY2hlZCBpbnQ4LAorICAgIE9VVCBnZW5lcmljX3BsYW5fY2FsbHMg aW50OCwKKyAgICBPVVQgY3VzdG9tX3BsYW5fY2FsbHMgaW50OCwKKyAgICBPVVQgc3RhdHNfc2lu Y2UgdGltZXN0YW1wIHdpdGggdGltZSB6b25lLAorICAgIE9VVCBtaW5tYXhfc3RhdHNfc2luY2Ug dGltZXN0YW1wIHdpdGggdGltZSB6b25lLAorICAgIE9VVCBsYXN0X2V4ZWN1dGVkIHRpbWVzdGFt cCB3aXRoIHRpbWUgem9uZQorKQorUkVUVVJOUyBTRVRPRiByZWNvcmQKK0FTICdNT0RVTEVfUEFU SE5BTUUnLCAncGdfc3RhdF9zdGF0ZW1lbnRzXzFfMTQnCitMQU5HVUFHRSBDIFNUUklDVCBWT0xB VElMRSBQQVJBTExFTCBTQUZFOworCitDUkVBVEUgVklFVyBwZ19zdGF0X3N0YXRlbWVudHMgQVMK KyAgU0VMRUNUICogRlJPTSBwZ19zdGF0X3N0YXRlbWVudHModHJ1ZSk7CisKK0dSQU5UIFNFTEVD VCBPTiBwZ19zdGF0X3N0YXRlbWVudHMgVE8gUFVCTElDOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9w Z19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRf c3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRleCAzOTIwOGY4MGI1Yi4uZGY1ODkw ZTNmZWMgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3Rh dGVtZW50cy5jCisrKyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVt ZW50cy5jCkBAIC04Niw3ICs4Niw3IEBAIFBHX01PRFVMRV9NQUdJQ19FWFQoCiAjZGVmaW5lIFBH U1NfVEVYVF9GSUxFCVBHX1NUQVRfVE1QX0RJUiAiL3Bnc3NfcXVlcnlfdGV4dHMuc3RhdCIKIAog LyogTWFnaWMgbnVtYmVyIGlkZW50aWZ5aW5nIHRoZSBzdGF0cyBmaWxlIGZvcm1hdCAqLwotc3Rh dGljIGNvbnN0IHVpbnQzMiBQR1NTX0ZJTEVfSEVBREVSID0gMHgyMDI1MDczMTsKK3N0YXRpYyBj b25zdCB1aW50MzIgUEdTU19GSUxFX0hFQURFUiA9IDB4MjAyNTEyMTA7CiAKIC8qIFBvc3RncmVT UUwgbWFqb3IgdmVyc2lvbiBudW1iZXIsIGNoYW5nZXMgaW4gd2hpY2ggaW52YWxpZGF0ZSBhbGwg ZW50cmllcyAqLwogc3RhdGljIGNvbnN0IHVpbnQzMiBQR1NTX1BHX01BSk9SX1ZFUlNJT04gPSBQ R19WRVJTSU9OX05VTSAvIDEwMDsKQEAgLTExNiw2ICsxMTYsNyBAQCB0eXBlZGVmIGVudW0gcGdz c1ZlcnNpb24KIAlQR1NTX1YxXzExLAogCVBHU1NfVjFfMTIsCiAJUEdTU19WMV8xMywKKwlQR1NT X1YxXzE0LAogfSBwZ3NzVmVyc2lvbjsKIAogdHlwZWRlZiBlbnVtIHBnc3NTdG9yZUtpbmQKQEAg LTIxMyw2ICsyMTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb3VudGVycwogCQkJCQkJCQkJCQkgKiBs YXVuY2hlZCAqLwogCWludDY0CQlnZW5lcmljX3BsYW5fY2FsbHM7IC8qIG51bWJlciBvZiBjYWxs cyB1c2luZyBhIGdlbmVyaWMgcGxhbiAqLwogCWludDY0CQljdXN0b21fcGxhbl9jYWxsczsJLyog bnVtYmVyIG9mIGNhbGxzIHVzaW5nIGEgY3VzdG9tIHBsYW4gKi8KKwlUaW1lc3RhbXBUeiBsYXN0 X2V4ZWN1dGVkOwkvKiB0aW1lc3RhbXAgb2YgbGFzdCBzdGF0ZW1lbnQgZXhlY3V0aW9uICovCiB9 IENvdW50ZXJzOwogCiAvKgpAQCAtMzI3LDYgKzMyOSw3IEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEo cGdfc3RhdF9zdGF0ZW1lbnRzXzFfMTApOwogUEdfRlVOQ1RJT05fSU5GT19WMShwZ19zdGF0X3N0 YXRlbWVudHNfMV8xMSk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnX3N0YXRfc3RhdGVtZW50c18x XzEyKTsKIFBHX0ZVTkNUSU9OX0lORk9fVjEocGdfc3RhdF9zdGF0ZW1lbnRzXzFfMTMpOworUEdf RlVOQ1RJT05fSU5GT19WMShwZ19zdGF0X3N0YXRlbWVudHNfMV8xNCk7CiBQR19GVU5DVElPTl9J TkZPX1YxKHBnX3N0YXRfc3RhdGVtZW50cyk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnX3N0YXRf c3RhdGVtZW50c19pbmZvKTsKIApAQCAtMTUxMyw2ICsxNTE2LDkgQEAgcGdzc19zdG9yZShjb25z dCBjaGFyICpxdWVyeSwgaW50NjQgcXVlcnlJZCwKIAkJZWxzZSBpZiAocGxhbk9yaWdpbiA9PSBQ TEFOX1NUTVRfQ0FDSEVfQ1VTVE9NKQogCQkJZW50cnktPmNvdW50ZXJzLmN1c3RvbV9wbGFuX2Nh bGxzKys7CiAKKwkJLyogVXBkYXRlIGxhc3RfZXhlY3V0ZWQgdGltZXN0YW1wICovCisJCWVudHJ5 LT5jb3VudGVycy5sYXN0X2V4ZWN1dGVkID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCiAJCVNw aW5Mb2NrUmVsZWFzZSgmZW50cnktPm11dGV4KTsKIAl9CiAKQEAgLTE1ODEsNyArMTU4Nyw4IEBA IHBnX3N0YXRfc3RhdGVtZW50c19yZXNldChQR19GVU5DVElPTl9BUkdTKQogI2RlZmluZSBQR19T VEFUX1NUQVRFTUVOVFNfQ09MU19WMV8xMQk0OQogI2RlZmluZSBQR19TVEFUX1NUQVRFTUVOVFNf Q09MU19WMV8xMgk1MgogI2RlZmluZSBQR19TVEFUX1NUQVRFTUVOVFNfQ09MU19WMV8xMwk1NAot I2RlZmluZSBQR19TVEFUX1NUQVRFTUVOVFNfQ09MUwkJCTU0CS8qIG1heGltdW0gb2YgYWJvdmUg Ki8KKyNkZWZpbmUgUEdfU1RBVF9TVEFURU1FTlRTX0NPTFNfVjFfMTQJNTUKKyNkZWZpbmUgUEdf U1RBVF9TVEFURU1FTlRTX0NPTFMJCQk1NQkvKiBtYXhpbXVtIG9mIGFib3ZlICovCiAKIC8qCiAg KiBSZXRyaWV2ZSBzdGF0ZW1lbnQgc3RhdGlzdGljcy4KQEAgLTE1OTMsNiArMTYwMCwxNiBAQCBw Z19zdGF0X3N0YXRlbWVudHNfcmVzZXQoUEdfRlVOQ1RJT05fQVJHUykKICAqIGV4cGVjdGVkIEFQ SSB2ZXJzaW9uIGlzIGlkZW50aWZpZWQgYnkgZW1iZWRkaW5nIGl0IGluIHRoZSBDIG5hbWUgb2Yg dGhlCiAgKiBmdW5jdGlvbi4gIFVuZm9ydHVuYXRlbHkgd2Ugd2VyZW4ndCBicmlnaHQgZW5vdWdo IHRvIGRvIHRoYXQgZm9yIDEuMS4KICAqLworRGF0dW0KK3BnX3N0YXRfc3RhdGVtZW50c18xXzE0 KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJYm9vbAkJc2hvd3RleHQgPSBQR19HRVRBUkdfQk9PTCgw KTsKKworCXBnX3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChmY2luZm8sIFBHU1NfVjFfMTQsIHNo b3d0ZXh0KTsKKworCXJldHVybiAoRGF0dW0pIDA7Cit9CisKIERhdHVtCiBwZ19zdGF0X3N0YXRl bWVudHNfMV8xMyhQR19GVU5DVElPTl9BUkdTKQogewpAQCAtMTc2NSw2ICsxNzgyLDEwIEBAIHBn X3N0YXRfc3RhdGVtZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCWlm IChhcGlfdmVyc2lvbiAhPSBQR1NTX1YxXzEzKQogCQkJCWVsb2coRVJST1IsICJpbmNvcnJlY3Qg bnVtYmVyIG9mIG91dHB1dCBhcmd1bWVudHMiKTsKIAkJCWJyZWFrOworCQljYXNlIFBHX1NUQVRf U1RBVEVNRU5UU19DT0xTX1YxXzE0OgorCQkJaWYgKGFwaV92ZXJzaW9uICE9IFBHU1NfVjFfMTQp CisJCQkJZWxvZyhFUlJPUiwgImluY29ycmVjdCBudW1iZXIgb2Ygb3V0cHV0IGFyZ3VtZW50cyIp OworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAiaW5jb3JyZWN0IG51bWJl ciBvZiBvdXRwdXQgYXJndW1lbnRzIik7CiAJfQpAQCAtMjAyNyw2ICsyMDQ4LDEwIEBAIHBnX3N0 YXRfc3RhdGVtZW50c19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywKIAkJCXZhbHVl c1tpKytdID0gVGltZXN0YW1wVHpHZXREYXR1bShzdGF0c19zaW5jZSk7CiAJCQl2YWx1ZXNbaSsr XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0obWlubWF4X3N0YXRzX3NpbmNlKTsKIAkJfQorCQlpZiAo YXBpX3ZlcnNpb24gPj0gUEdTU19WMV8xNCkKKwkJeworCQkJdmFsdWVzW2krK10gPSBUaW1lc3Rh bXBUekdldERhdHVtKHRtcC5sYXN0X2V4ZWN1dGVkKTsKKwkJfQogCiAJCUFzc2VydChpID09IChh cGlfdmVyc2lvbiA9PSBQR1NTX1YxXzAgPyBQR19TVEFUX1NUQVRFTUVOVFNfQ09MU19WMV8wIDoK IAkJCQkJIGFwaV92ZXJzaW9uID09IFBHU1NfVjFfMSA/IFBHX1NUQVRfU1RBVEVNRU5UU19DT0xT X1YxXzEgOgpAQCAtMjAzOCw2ICsyMDYzLDcgQEAgcGdfc3RhdF9zdGF0ZW1lbnRzX2ludGVybmFs KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCQkJCQkgYXBpX3ZlcnNpb24gPT0gUEdTU19WMV8x MSA/IFBHX1NUQVRfU1RBVEVNRU5UU19DT0xTX1YxXzExIDoKIAkJCQkJIGFwaV92ZXJzaW9uID09 IFBHU1NfVjFfMTIgPyBQR19TVEFUX1NUQVRFTUVOVFNfQ09MU19WMV8xMiA6CiAJCQkJCSBhcGlf dmVyc2lvbiA9PSBQR1NTX1YxXzEzID8gUEdfU1RBVF9TVEFURU1FTlRTX0NPTFNfVjFfMTMgOgor CQkJCQkgYXBpX3ZlcnNpb24gPT0gUEdTU19WMV8xNCA/IFBHX1NUQVRfU1RBVEVNRU5UU19DT0xT X1YxXzE0IDoKIAkJCQkJIC0xIC8qIGZhaWwgaWYgeW91IGZvcmdldCB0byB1cGRhdGUgdGhpcyBh c3NlcnQgKi8gKSk7CiAKIAkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQs IHJzaW5mby0+c2V0RGVzYywgdmFsdWVzLCBudWxscyk7CmRpZmYgLS1naXQgYS9jb250cmliL3Bn X3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuY29udHJvbCBiL2NvbnRyaWIvcGdf c3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jb250cm9sCmluZGV4IDJlZWUwY2Vm ZmE4Li42MWFlNDFlZmMxNCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMv cGdfc3RhdF9zdGF0ZW1lbnRzLmNvbnRyb2wKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmNvbnRyb2wKQEAgLTEsNSArMSw1IEBACiAjIHBnX3N0YXRf c3RhdGVtZW50cyBleHRlbnNpb24KIGNvbW1lbnQgPSAndHJhY2sgcGxhbm5pbmcgYW5kIGV4ZWN1 dGlvbiBzdGF0aXN0aWNzIG9mIGFsbCBTUUwgc3RhdGVtZW50cyBleGVjdXRlZCcKLWRlZmF1bHRf dmVyc2lvbiA9ICcxLjEzJworZGVmYXVsdF92ZXJzaW9uID0gJzEuMTQnCiBtb2R1bGVfcGF0aG5h bWUgPSAnJGxpYmRpci9wZ19zdGF0X3N0YXRlbWVudHMnCiByZWxvY2F0YWJsZSA9IHRydWUKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9sYXN0X2V4ZWN1dGVkLnNx bCBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3NxbC9sYXN0X2V4ZWN1dGVkLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjY4ZWMyMTY1YmUKLS0tIC9kZXYv bnVsbAorKysgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9zcWwvbGFzdF9leGVjdXRlZC5z cWwKQEAgLTAsMCArMSw1MiBAQAorLS0KKy0tIGxhc3RfZXhlY3V0ZWQgdGltZXN0YW1wCistLQor CitTRUxFQ1QgcGdfc3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKKwor U0VMRUNUIDEgQVMgIkxBU1QxIjsKK1NFTEVDVCBub3coKSBBUyByZWZfdHMxIFxnc2V0CitTRUxF Q1QgcGdfc2xlZXAoMC4xKTsKK1NFTEVDVCAyIEFTICJMQVNUMiI7CitTRUxFQ1Qgbm93KCkgQVMg cmVmX3RzMiBcZ3NldAorCistLSB2ZXJpZnkgbGFzdF9leGVjdXRlZCBpcyBzZXQgYW5kIHVwZGF0 ZWQKK1NFTEVDVCAKKyAgICBxdWVyeSwKKyAgICBsYXN0X2V4ZWN1dGVkIElTIE5PVCBOVUxMIGFz IGhhc190cywKKyAgICBsYXN0X2V4ZWN1dGVkID49IDoncmVmX3RzMScgYXMgYWZ0ZXJfcmVmMSwK KyAgICBzdGF0c19zaW5jZSA8PSBsYXN0X2V4ZWN1dGVkIGFzIGFmdGVyX3N0YXRzX3NpbmNlCitG Uk9NIHBnX3N0YXRfc3RhdGVtZW50cworV0hFUkUgcXVlcnkgTElLRSAnJUxBU1QlJworT1JERVIg QlkgcXVlcnkgQ09MTEFURSAiQyI7CisKKy0tIGV4ZWN1dGUgYWdhaW4gYW5kIHZlcmlmeSB1cGRh dGUKK1NFTEVDVCBwZ19zbGVlcCgwLjEpOworU0VMRUNUIDEgQVMgIkxBU1QxIjsKK1NFTEVDVCBu b3coKSBBUyByZWZfdHMzIFxnc2V0CisKK1NFTEVDVCAKKyAgICBxdWVyeSwKKyAgICBsYXN0X2V4 ZWN1dGVkID49IDoncmVmX3RzMycgYXMgdXBkYXRlZAorRlJPTSBwZ19zdGF0X3N0YXRlbWVudHMK K1dIRVJFIHF1ZXJ5IExJS0UgJyVMQVNUMSUnOworCistLSB0ZXN0IGZpbHRlcmluZyAobW9uaXRv cmluZyB1c2UgY2FzZSkKK1NFTEVDVCBxdWVyeSwgY291bnQoKikgYXMgY291bnQKK0ZST00gcGdf c3RhdF9zdGF0ZW1lbnRzCitXSEVSRSBsYXN0X2V4ZWN1dGVkID49IDoncmVmX3RzMicKK0dST1VQ IEJZIHF1ZXJ5CitPUkRFUiBCWSBxdWVyeSBDT0xMQVRFICJDIjsKKworLS0gbWlubWF4IHJlc2V0 IHNob3VsZCBub3QgYWZmZWN0IGxhc3RfZXhlY3V0ZWQKK1NFTEVDVCBwZ19zdGF0X3N0YXRlbWVu dHNfcmVzZXQoMCwgMCwgcXVlcnlpZCwgdHJ1ZSkKK0ZST00gcGdfc3RhdF9zdGF0ZW1lbnRzCitX SEVSRSBxdWVyeSBMSUtFICclTEFTVDElJyBcZ3NldAorCitTRUxFQ1QgCisgICAgcXVlcnksCisg ICAgbGFzdF9leGVjdXRlZCA+PSA6J3JlZl90czMnIGFzIHRzX3ByZXNlcnZlZAorRlJPTSBwZ19z dGF0X3N0YXRlbWVudHMKK1dIRVJFIHF1ZXJ5IExJS0UgJyVMQVNUMSUnOworCitTRUxFQ1QgcGdf c3RhdF9zdGF0ZW1lbnRzX3Jlc2V0KCkgSVMgTk9UIE5VTEwgQVMgdDsKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9wZ3N0YXRzdGF0ZW1lbnRzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcGdzdGF0c3Rh dGVtZW50cy5zZ21sCmluZGV4IGQ3NTNkZTU4MzZlLi5lNWQ3NWM2YTJmNSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3Bnc3RhdHN0YXRlbWVudHMuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcGdz dGF0c3RhdGVtZW50cy5zZ21sCkBAIC01OTMsNiArNTkzLDE1IEBACiAgICAgICAgPHN0cnVjdGZp ZWxkPm1heF9leGVjX3RpbWU8L3N0cnVjdGZpZWxkPikKICAgICAgIDwvcGFyYT48L2VudHJ5Pgog ICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0 ZmllbGQ+bGFzdF9leGVjdXRlZDwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3aXRoIHRp bWUgem9uZTwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRpbWUg YXQgd2hpY2ggdGhlIHN0YXRlbWVudCB3YXMgbGFzdCBleGVjdXRlZAorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJs ZT4KLS0gCjIuNTIuMAoK --00000000000029209a06459b0d35--