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 1vJ2DX-007YFl-1N for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Nov 2025 04:12:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vJ2DU-0096O2-27 for pgsql-hackers@arkaria.postgresql.org; Wed, 12 Nov 2025 04:12:20 +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.96) (envelope-from ) id 1vJ2DU-0096Nt-0L for pgsql-hackers@lists.postgresql.org; Wed, 12 Nov 2025 04:12:20 +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.96) (envelope-from ) id 1vJ2DR-006eua-2p for pgsql-hackers@postgresql.org; Wed, 12 Nov 2025 04:12:19 +0000 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-297f6ccc890so335875ad.2 for ; Tue, 11 Nov 2025 20:12:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1762920736; x=1763525536; 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=YtUBT8YrNhJeXFCNafAR+9Svdm0fzGaqlrDtvJKUURM=; b=fgUoySPmeDAzFTv3Pw0Hdfsuk/HlRYYrUmwN5p2TJzkU+ENZRz+nj+Fbn3mTCEj6jK 1Er0p80Zc3x7U3PvgWOa0CgxUdTKe4NXS9vPMJtJG40/nR1Hib2MwZUmUfTGPZ4NVCtA Ytg+o4yvf+NHAqj584n34LKSHedJ31IFcC2dVbMQQu0rbsHdnG7BNUN/SVnDk/i41FXC IoeYSgAhgAzTYvsbc4LhgJNMQ/xedb5dM8N7OsGDHkm9LUnt/LPLBFkeYxrAORDMWP0V LOhAGYgytulyzr35LkrcWIU+G4CHAvwnAf9pM6UjKug1LvMG9B4FTvhZKv5RIDFJ8Os9 bJHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762920736; x=1763525536; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=YtUBT8YrNhJeXFCNafAR+9Svdm0fzGaqlrDtvJKUURM=; b=l7dJLOTinHxHsOOOzfUoJVwpRz1dEeoKkuZeP0TmComxqFq4A6FF9ikMmdV8qLmkTt JMoPYAah1z+YauDhW+4Yut62nd2O8kvV1/G9VNF0LPF5eiCJGSAiDxXOIqTDFr6YmxlD ISddJaWHYkWorrPvXeEF2KR8NK7gy7/46pUufuTNwUD4HCKu9poDcNSLtCcDKajbMDKY f6+TytN+wREJtJ/QvbamcI9OVHyzKTlPoRsOD5bLWz1RPbEr82f6duyBvQoKxdMdzBFL W791ph/ObX8abiTfYzFiT3mWbcMit2YYe5fQSYAJgQKtSoOem2cv3JRg9d8RVeKOJhxm Sd7w== X-Forwarded-Encrypted: i=1; AJvYcCXZXL5F7zm5cKdDm9+GsqMpSA8UQOxXk840JHHbrH8uEzpPUBQwrqzPftIVuJr035v3GbXeuVQ8J3UjyBeq@postgresql.org X-Gm-Message-State: AOJu0YwvDf8xteUT+aLmQXLicJpg1CIkrwsGRKDnd+yEjnxnqjWdOuAG ffKP99UoX83CPqyU0BtdhY82c+8nLPv/dYFa94TEvJaqc+RAhIYePMS12lM4Chm45ftSDLZ8Suq NpUHUpzqgDr0uBU2dwK2TcE5vguFbYlE= X-Gm-Gg: ASbGnctbmezAX0R743VbFvts9vbENZqJvzToCougzL6vJBfFYfADQWtLcLzlwUt4gQ5 nBRpGirlF87+OVsWVc/BoJxjFWXcfxwGpasWe4NG8M/Cdf4ns3lsrDVt7xHkt2B8veWLVRrbgCc 83ojpvw07i8xb+9YU86nvz1V5SO26PW0zLuW3z2FNNNQsdEyMuoP1l/x5ARafmXzxsieWiERzus Y04b5GTL1+OmBJpd3FFfjwbRHwImdBbY1JavD8xhsLPPSL5RbOrBrVrz1/1NTZ6Is0HhxLzoqmJ /Vsq7TiJH+28BXuGmch547TygKM4o6CF4qT+Q4mCSw== X-Google-Smtp-Source: AGHT+IEd3yn4YfxE4GVJYoDrcvSlyQJdzRxS2vl3g+r220E0Fjeddw81SaMfCm73C6TAwMN5kSPX3jgl2ztdkPChSv0= X-Received: by 2002:a17:902:ec84:b0:267:8b4f:df1f with SMTP id d9443c01a7336-2984ed324cfmr10827735ad.1.1762920736412; Tue, 11 Nov 2025 20:12:16 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Thomas Munro Date: Wed, 12 Nov 2025 17:11:39 +1300 X-Gm-Features: AWmQ_bnJtx0vJT_KSJp_GoosonMj5NHV_X9KYUXzB0MgO5IZbkPJijn0ZuJZOIc Message-ID: Subject: Re: Trying out read streams in pgvector (an extension) To: Melanie Plageman Cc: "Jonathan S. Katz" , pgsql-hackers Content-Type: multipart/mixed; boundary="00000000000042f6a206435df854" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000042f6a206435df854 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Nov 12, 2025 at 12:19=E2=80=AFPM Thomas Munro wrote: > On Wed, Nov 12, 2025 at 11:52=E2=80=AFAM Melanie Plageman > wrote: > > If we are worried about regressing other extensions using > > read_stream_reset(), we could make the read stream reset which > > preserves the distance a different function in backbranches. Here is a draft patch like that, that tries to be as small as possible. Trying out the name read_stream_resume(). --00000000000042f6a206435df854 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Fix-overloaded-remit-of-read_stream_reset.patch" Content-Disposition: attachment; filename="0001-Fix-overloaded-remit-of-read_stream_reset.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhvhfzw90 RnJvbSBhYjQ5NGM2ZTVjY2Y5MzU2M2RjZjcwNTlmN2VlYzdkNDI1MjI5NGY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMTUgSnVuIDIwMjQgMTQ6Mzc6MjYgKzEyMDAKU3ViamVjdDogW1BBVENIIDEv Ml0gRml4IG92ZXJsb2FkZWQgcmVtaXQgb2YgcmVhZF9zdHJlYW1fcmVzZXQoKS4KClNvbWUgZXh0 ZW5zaW9ucyBuZWVkIHRvIGV4YW1pbmUgcGFnZSBjb250ZW50cyB0byBmaW5kIG1vcmUgYmxvY2sg bnVtYmVycwp0byBzdHJlYW0uICBUaGF0IGN1cnJlbnRseSBtZWFucyB0aGF0IHRoZXkgaGF2ZSB0 byBzaWduYWwgZW5kLW9mLXN0cmVhbQp3aGVuIGRhdGEgcnVucyBvdXQsIGJ1dCBsYXRlciAicmVz ZXQiIHRoZSBzdHJlYW0gdG8gcmVzdW1lIHdpdGggbmV3CmluZm9ybWF0aW9uLgoKQXMgYW4gdW5m b3J0dW5hdGUgYnktcHJvZHVjdCBvZiB0aGF0IEFQSSBlY29ub215LCB0aGUgbG9vay1haGVhZApk aXN0YW5jZSB3b3VsZCBzdGFydCBvdXQgYXQgb25lIGFnYWluLCBhbmQgdGhlbiBuZWVkIHRvIHJh bXAgYmFjayB1cCB0bwpmaW5kIGEgdXNlZnVsIGNvbmN1cnJlbmN5IGxldmVsLiAgVGhpcyBjcmVh dGVkIGEgc2lnbmlmaWNhbnQgbG9zcyBvZgpwZXJmb3JtYW5jZSBmb3Igc2VsZi1yZWZlcmVudGlh bCBibG9jayBzdHJlYW1zIHdpdGggYSBoaWdoIGRlZ3JlZSBvZgpmYW4tb3V0LCBhcyBkaXNjb3Zl cmVkIGJ5IHRoZSBwZ3ZlY3RvciBwcm9qZWN0LgoKU3BsaXQgb3V0IGEgc2VwYXJhdGUgZnVuY3Rp b24gcmVhZF9zdHJlYW1fcmVzdW1lKCkgdGhhdCBpcyBleHBsaWNpdGx5CmludGVuZGVkIGZvciB0 aGF0IHVzYWdlIHBhdHRlcm4uICBTaW5jZSBkaXN0YW5jZSA9PSAwIGlzIHRoZSBpbnRlcm5hbApy ZXByZXNlbnRhdGlvbiBvZiBlbmQtb2Ytc3RyZWFtLCBhbGwgaXQgaGFzIHRvIGRvIGlzIHJlc3Rv cmUgdGhlCmRpc3RhbmNlIHJlY29yZGVkIGF0IHRoZSB0aW1lIGVuZC1vZi1zdHJlYW0gd2FzIHNp Z25hbGVkIHRvIHJlc3VtZQpsb29raW5nIGFoZWFkIHdpdGggdGhlIHNhbWUgSS9PIGNvbmN1cnJl bmN5IGxldmVsIGFmdGVyIGEgcGFnZSBqdW1wLgoKV2UgZG9uJ3QgaGF2ZSBhbnkgc2VsZi1yZWZl cmVudGlhbCBzdHJlYW1pbmcgaW4gUG9zdGdyZVNRTCBpdHNlbGYgeWV0LApidXQgd2UgZGVjaWRl ZCB0byBjYWxsIHRoaXMgYSBidWcgYWxsIHRoZSBzYW1lIGFuZCBiYWNrLXBhdGNoIGEgZml4LgpU aGUgaW50ZW50aW9uIHdhcyB0byBzdXBwb3J0IHRoYXQgZXhhY3QgdXNhZ2UgcGF0dGVybiwgdGhl IEFQSSBqdXN0Cm1pc3NlZCB0aGUgbWFyayBieSB0cnlpbmcgdG8gaGFuZGxlIHRvbyBtYW55IHVz ZSBjYXNlcy4gIFN1Y2ggZXh0ZW5zaW9ucwpzaG91bGQgYmUgYWJsZSB0byBiZW5lZml0IGZyb20g c3RyZWFtaW5nLCBhbmQgdGhlIGJlaGF2aW9yIGNoYW5nZSBpcwppc29sYXRlZCB0byBjb2RlIHRo YXQgY2FsbHMgdGhlIG5ldyB2YXJpYW50LCBzbyBhIHNlcGFyYXRpb24gb2YgZHV0aWVzCnNlZW1z IHdhcnJhbnRlZCBhbmQgc2FmZSB0byBiYWNrLXBhdGNoLgoKVGhlIHByb2JsZW0gd2FzIHJlcG9y dGVkIGFzIGV4dHJlbWVseSBwb29yIGxvb2stYWhlYWQgcGVyZm9ybWFuY2UgaW4gdjE4CnVzaW5n IEFJTyBmb3IgcHJlZmV0Y2hpbmcsIGJ1dCBpdCBhbHNvIGFmZmVjdHMgdGhlIGZhZHZpc2UtYmFz ZWQKcHJlZmV0Y2hpbmcgaW4gdjE3LCB3aGVyZSByZWFkX3N0cmVhbS5jIGFycml2ZWQuCgpSZXZp ZXdlZC1ieToKVGVzdGVkLWJ5OgpCYWNrcGF0Y2gtdGhyb3VnaDogMTcKRGlzY3Vzc2lvbjogaHR0 cHM6Ly9wb3N0Z3IuZXMvbS9DQSUyQmhVS0dMLTNtQnRrQTlSVGJMRkh1U1M1Y3ZpdXYwa283bkJo Q2c5S003US1HU0VrdyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9h aW8vcmVhZF9zdHJlYW0uYyB8IDE1ICsrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvc3RvcmFn ZS9yZWFkX3N0cmVhbS5oICAgICB8ICAxICsKIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9u cygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL3JlYWRfc3RyZWFtLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9yZWFkX3N0cmVhbS5jCmluZGV4IDAzMWZkZTlmNGNi Li5iZWFlOGVmMzI1YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vcmVhZF9z dHJlYW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9yZWFkX3N0cmVhbS5jCkBAIC0x MDAsNiArMTAwLDcgQEAgc3RydWN0IFJlYWRTdHJlYW0KIAlpbnQxNgkJcGlubmVkX2J1ZmZlcnM7 CiAJaW50MTYJCWRpc3RhbmNlOwogCWludDE2CQlpbml0aWFsaXplZF9idWZmZXJzOworCWludDE2 CQlyZXN1bWVfZGlzdGFuY2U7CiAJaW50CQkJcmVhZF9idWZmZXJzX2ZsYWdzOwogCWJvb2wJCXN5 bmNfbW9kZTsJCS8qIHVzaW5nIGlvX21ldGhvZD1zeW5jICovCiAJYm9vbAkJYmF0Y2hfbW9kZTsJ CS8qIFJFQURfU1RSRUFNX1VTRV9CQVRDSElORyAqLwpAQCAtNDY0LDYgKzQ2NSw3IEBAIHJlYWRf c3RyZWFtX2xvb2tfYWhlYWQoUmVhZFN0cmVhbSAqc3RyZWFtKQogCQlpZiAoYmxvY2tudW0gPT0g SW52YWxpZEJsb2NrTnVtYmVyKQogCQl7CiAJCQkvKiBFbmQgb2Ygc3RyZWFtLiAqLworCQkJc3Ry ZWFtLT5yZXN1bWVfZGlzdGFuY2UgPSBzdHJlYW0tPmRpc3RhbmNlOwogCQkJc3RyZWFtLT5kaXN0 YW5jZSA9IDA7CiAJCQlicmVhazsKIAkJfQpAQCAtNzExLDYgKzcxMyw3IEBAIHJlYWRfc3RyZWFt X2JlZ2luX2ltcGwoaW50IGZsYWdzLAogCQlzdHJlYW0tPmRpc3RhbmNlID0gTWluKG1heF9waW5u ZWRfYnVmZmVycywgc3RyZWFtLT5pb19jb21iaW5lX2xpbWl0KTsKIAllbHNlCiAJCXN0cmVhbS0+ ZGlzdGFuY2UgPSAxOworCXN0cmVhbS0+cmVzdW1lX2Rpc3RhbmNlID0gc3RyZWFtLT5kaXN0YW5j ZTsKIAogCS8qCiAJICogU2luY2Ugd2UgYWx3YXlzIGFjY2VzcyB0aGUgc2FtZSByZWxhdGlvbiwg d2UgY2FuIGluaXRpYWxpemUgcGFydHMgb2YKQEAgLTg2Miw2ICs4NjUsNyBAQCByZWFkX3N0cmVh bV9uZXh0X2J1ZmZlcihSZWFkU3RyZWFtICpzdHJlYW0sIHZvaWQgKipwZXJfYnVmZmVyX2RhdGEp CiAJCWVsc2UKIAkJewogCQkJLyogTm8gbW9yZSBibG9ja3MsIGVuZCBvZiBzdHJlYW0uICovCisJ CQlzdHJlYW0tPnJlc3VtZV9kaXN0YW5jZSA9IHN0cmVhbS0+ZGlzdGFuY2U7CiAJCQlzdHJlYW0t PmRpc3RhbmNlID0gMDsKIAkJCXN0cmVhbS0+b2xkZXN0X2J1ZmZlcl9pbmRleCA9IHN0cmVhbS0+ bmV4dF9idWZmZXJfaW5kZXg7CiAJCQlzdHJlYW0tPnBpbm5lZF9idWZmZXJzID0gMDsKQEAgLTEw MzQsNiArMTAzOCwxNyBAQCByZWFkX3N0cmVhbV9uZXh0X2Jsb2NrKFJlYWRTdHJlYW0gKnN0cmVh bSwgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgKnN0cmF0ZWd5KQogCXJldHVybiByZWFkX3N0cmVhbV9n ZXRfYmxvY2soc3RyZWFtLCBOVUxMKTsKIH0KIAorLyoKKyAqIFJlc3VtZSBsb29raW5nIGFoZWFk IGFmdGVyIHRoZSBibG9jayBudW1iZXIgY2FsbGJhY2sgcmVwb3J0ZWQgZW5kLW9mLXN0cmVhbS4K KyAqIFRoaXMgaXMgdXNlZnVsIGZvciBzdHJlYW1zIG9mIHNlbGYtcmVmZXJlbnRpYWwgYmxvY2tz LCBhZnRlciBhIGJ1ZmZlciBuZWVkZWQKKyAqIHRvIGJlIGNvbnN1bWVkIGFuZCBleGFtaW5lZCB0 byBmaW5kIG1vcmUgYmxvY2sgbnVtYmVycy4KKyAqLwordm9pZAorcmVhZF9zdHJlYW1fcmVzdW1l KFJlYWRTdHJlYW0gKnN0cmVhbSkKK3sKKwlzdHJlYW0tPmRpc3RhbmNlID0gc3RyZWFtLT5yZXN1 bWVfZGlzdGFuY2U7Cit9CisKIC8qCiAgKiBSZXNldCBhIHJlYWQgc3RyZWFtIGJ5IHJlbGVhc2lu ZyBhbnkgcXVldWVkIHVwIGJ1ZmZlcnMsIGFsbG93aW5nIHRoZSBzdHJlYW0KICAqIHRvIGJlIHVz ZWQgYWdhaW4gZm9yIGRpZmZlcmVudCBibG9ja3MuICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNsZWFy IGFuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3JlYWRfc3RyZWFtLmggYi9zcmMv aW5jbHVkZS9zdG9yYWdlL3JlYWRfc3RyZWFtLmgKaW5kZXggOWIwZDY1MTYxZDAuLmUyOWFjNTBm YzllIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3JlYWRfc3RyZWFtLmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9yZWFkX3N0cmVhbS5oCkBAIC05OSw2ICs5OSw3IEBAIGV4dGVy biBSZWFkU3RyZWFtICpyZWFkX3N0cmVhbV9iZWdpbl9zbWdyX3JlbGF0aW9uKGludCBmbGFncywK IAkJCQkJCQkJCQkJCSAgIFJlYWRTdHJlYW1CbG9ja051bWJlckNCIGNhbGxiYWNrLAogCQkJCQkJ CQkJCQkJICAgdm9pZCAqY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLAogCQkJCQkJCQkJCQkJICAgc2l6 ZV90IHBlcl9idWZmZXJfZGF0YV9zaXplKTsKK2V4dGVybiB2b2lkIHJlYWRfc3RyZWFtX3Jlc3Vt ZShSZWFkU3RyZWFtICpzdHJlYW0pOwogZXh0ZXJuIHZvaWQgcmVhZF9zdHJlYW1fcmVzZXQoUmVh ZFN0cmVhbSAqc3RyZWFtKTsKIGV4dGVybiB2b2lkIHJlYWRfc3RyZWFtX2VuZChSZWFkU3RyZWFt ICpzdHJlYW0pOwogCi0tIAoyLjUxLjEKCg== --00000000000042f6a206435df854 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Add-smoke-test-for-read_stream_resume.patch" Content-Disposition: attachment; filename="0002-Add-smoke-test-for-read_stream_resume.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhvhg2z01 RnJvbSBhM2MwNTIwYWEzODI4NzRjNzAyOGM0MmQ3ZDcyMDQxNWQ0YjNiMjZkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMTIgTm92IDIwMjUgMTY6NDk6NTcgKzEzMDAKU3ViamVjdDogW1BBVENIIDIv Ml0gQWRkIHNtb2tlIHRlc3QgZm9yIHJlYWRfc3RyZWFtX3Jlc3VtZSgpLgoKWFhYIE5vdCBzdXJl IGlmIGl0J3Mgd29ydGggYSBwZXJtYW5lbnQgdGVzdCBmb3IgdGhpcywgYnV0IHNpbmNlIHRoZSBu ZXcKZnVuY3Rpb24gaXMgbm90IGV4ZXJjaXNlZCBpbiB0aGUgdHJlZSBpdCBzZWVtZWQgd29ydGgg d3JpdGluZyBhIHNpbXBsZQpkZW1vLi4uCi0tLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby9N YWtlZmlsZSAgICAgICAgICAgfCAgMyArLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby9tZXNv bi5idWlsZCAgICAgICAgfCAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3QvMDAxX2Fp by5wbCAgICAgICB8IDIxICsrKysrCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3Rlc3RfYWlv LS0xLjAuc3FsICB8ICA5ICsrCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3Rlc3RfcmVhZF9z dHJlYW0uYyB8IDg5ICsrKysrKysrKysrKysrKysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCAgICAgICAgICAgICB8ICAxICsKIDYgZmlsZXMgY2hhbmdlZCwgMTIzIGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYWlvL3Rlc3RfcmVhZF9zdHJlYW0uYwoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21v ZHVsZXMvdGVzdF9haW8vTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL01ha2Vm aWxlCmluZGV4IGY1M2NjNjQ2NzFhLi40NjVlYjA5ZWU0ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2Fpby9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlv L01ha2VmaWxlCkBAIC01LDcgKzUsOCBAQCBQR0ZJTEVERVNDID0gInRlc3RfYWlvIC0gdGVzdCBj b2RlIGZvciBBSU8iCiBNT0RVTEVfYmlnID0gdGVzdF9haW8KIE9CSlMgPSBcCiAJJChXSU4zMlJF UykgXAotCXRlc3RfYWlvLm8KKwl0ZXN0X2Fpby5vIFwKKwl0ZXN0X3JlYWRfc3RyZWFtLm8KIAog RVhURU5TSU9OID0gdGVzdF9haW8KIERBVEEgPSB0ZXN0X2Fpby0tMS4wLnNxbApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9haW8vbWVzb24uYnVpbGQKaW5kZXggNzNkMmZkNjhlYWEuLjZlNmZjYmZkYWQ5IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL21lc29uLmJ1aWxkCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9haW8vbWVzb24uYnVpbGQKQEAgLTIsNiArMiw3IEBACiAKIHRl c3RfYWlvX3NvdXJjZXMgPSBmaWxlcygKICAgJ3Rlc3RfYWlvLmMnLAorICAndGVzdF9yZWFkX3N0 cmVhbS5jJywKICkKIAogaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3QvMDAxX2Fpby5wbCBiL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9haW8vdC8wMDFfYWlvLnBsCmluZGV4IDNmMDQ1MzYxOWU4Li5jZDFmZDYzM2JkOCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90LzAwMV9haW8ucGwKKysrIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90LzAwMV9haW8ucGwKQEAgLTE0ODksNiArMTQ4OSwyNiBA QCBTRUxFQ1QgcmVhZF9yZWxfYmxvY2tfbGwoJ3RibF9jc19mYWlsJywgMywgbmJsb2Nrcz0+MSwg emVyb19vbl9lcnJvcj0+dHJ1ZSk7KSwKIAkkcHNxbC0+cXVpdCgpOwogfQogCisjIFJlYWQgc3Ry ZWFtIHRlc3RzCitzdWIgdGVzdF9yZWFkX3N0cmVhbQoreworCW15ICRpb19tZXRob2QgPSBzaGlm dDsKKwlteSAkbm9kZSA9IHNoaWZ0OworCW15ICgkcmV0LCAkb3V0cHV0KTsKKworCW15ICRwc3Fs ID0gJG5vZGUtPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBvbl9lcnJvcl9zdG9wID0+IDAp OworCisJJHBzcWwtPnF1ZXJ5X3NhZmUoCisJCXFxKAorQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSB0 bXBfcmVhZF9zdHJlYW0oZGF0YSBpbnQgbm90IG51bGwpOworSU5TRVJUIElOVE8gdG1wX3JlYWRf c3RyZWFtIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApOworU0VMRUNUIHRlc3RfcmVh ZF9zdHJlYW1fcmVzdW1lKCd0bXBfcmVhZF9zdHJlYW0nLCAwKTsKK0RST1AgVEFCTEUgdG1wX3Jl YWRfc3RyZWFtOworKSk7CisJJHBzcWwtPnF1aXQoKTsKK30KKworCiAKICMgUnVuIGFsbCB0ZXN0 cyB0aGF0IGFyZSBzdXBwb3J0ZWQgZm9yIGFsbCBpb19tZXRob2RzCiBzdWIgdGVzdF9nZW5lcmlj CkBAIC0xNTI1LDYgKzE1NDUsNyBAQCBDSEVDS1BPSU5UOwogCXRlc3RfY2hlY2tzdW0oJGlvX21l dGhvZCwgJG5vZGUpOwogCXRlc3RfaWdub3JlX2NoZWNrc3VtKCRpb19tZXRob2QsICRub2RlKTsK IAl0ZXN0X2NoZWNrc3VtX2NyZWF0ZWRiKCRpb19tZXRob2QsICRub2RlKTsKKwl0ZXN0X3JlYWRf c3RyZWFtKCRpb19tZXRob2QsICRub2RlKTsKIAogICBTS0lQOgogCXsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9haW8vdGVzdF9haW8tLTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfYWlvL3Rlc3RfYWlvLS0xLjAuc3FsCmluZGV4IGU0OTU0ODFjNDFlLi5kZGU4ZGUz NWJjNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90ZXN0X2Fpby0tMS4w LnNxbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYWlvL3Rlc3RfYWlvLS0xLjAuc3FsCkBA IC0xMDYsMyArMTA2LDEyIEBAIEFTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CiBDUkVB VEUgRlVOQ1RJT04gaW5qX2lvX3Jlb3Blbl9kZXRhY2goKQogUkVUVVJOUyBwZ19jYXRhbG9nLnZv aWQgU1RSSUNUCiBBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBDOworCisKKworLyoKKyAq IFJlYWQgc3RyZWFtIHJlbGF0ZWQgZnVuY3Rpb25zCisgKi8KK0NSRUFURSBGVU5DVElPTiB0ZXN0 X3JlYWRfc3RyZWFtX3Jlc3VtZShyZWwgcmVnY2xhc3MsIGJsb2Nrbm8gaW50NCkKK1JFVFVSTlMg cGdfY2F0YWxvZy52b2lkIFNUUklDVAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9haW8vdGVzdF9yZWFkX3N0cmVhbS5j IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90ZXN0X3JlYWRfc3RyZWFtLmMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmJmNjA4ZGI4YTcyCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90ZXN0X3JlYWRfc3RyZWFtLmMKQEAgLTAs MCArMSw4OSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdGVzdF9yZWFkX3N0cmVhbS5j CisgKgkJSGVscGVycyB0byB3cml0ZSB0ZXN0cyBmb3IgcmVhZF9zdHJlYW0uYworICoKKyAqIENv cHlyaWdodCAoYykgMjAyMC0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91 cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9haW8v dGVzdF9yZWFkX3N0cmVhbS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1 ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKKyNpbmNsdWRl ICJmbWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdl L3JlYWRfc3RyZWFtLmgiCisKK3R5cGVkZWYgc3RydWN0Cit7CisJQmxvY2tOdW1iZXIgYmxrbm87 CisJaW50CQkJY291bnQ7Cit9IHRlc3RfcmVhZF9zdHJlYW1fcmVzdW1lX3N0YXRlOworCitzdGF0 aWMgQmxvY2tOdW1iZXIKK3Rlc3RfcmVhZF9zdHJlYW1fcmVzdW1lX2NiKFJlYWRTdHJlYW0gKnN0 cmVhbSwKKwkJCQkJCSAgIHZvaWQgKmNhbGxiYWNrX3ByaXZhdGVfZGF0YSwKKwkJCQkJCSAgIHZv aWQgKnBlcl9idWZmZXJfZGF0YSkKK3sKKwl0ZXN0X3JlYWRfc3RyZWFtX3Jlc3VtZV9zdGF0ZSAq c3RhdGUgPSBjYWxsYmFja19wcml2YXRlX2RhdGE7CisKKwkvKiBQZXJpb2RpYyBlbmQtb2Ytc3Ry ZWFtLiAqLworCWlmICgrK3N0YXRlLT5jb3VudCAlIDMgPT0gMCkKKwkJcmV0dXJuIEludmFsaWRC bG9ja051bWJlcjsKKworCXJldHVybiBzdGF0ZS0+Ymxrbm87Cit9CisKKy8qCisgKiBUZXN0IHJl YWRfc3RyZWFtX3Jlc3VtZSgpLCBhbGxvd2luZyBhIHN0cmVhbSB0byBlbmQgdGVtcG9yYXJpbHkg YW5kIHRoZW4KKyAqIGNvbnRpbnVlIHdoZXJlIGl0IGxlZnQgb2ZmLgorICovCitQR19GVU5DVElP Tl9JTkZPX1YxKHRlc3RfcmVhZF9zdHJlYW1fcmVzdW1lKTsKK0RhdHVtCit0ZXN0X3JlYWRfc3Ry ZWFtX3Jlc3VtZShQR19GVU5DVElPTl9BUkdTKQoreworCU9pZAkJCXJlbGlkID0gUEdfR0VUQVJH X09JRCgwKTsKKwlCbG9ja051bWJlciBibGtubyA9IFBHX0dFVEFSR19VSU5UMzIoMSk7CisJUmVs YXRpb24JcmVsOworCUJ1ZmZlcgkJYnVmOworCVJlYWRTdHJlYW0gKnN0cmVhbTsKKwl0ZXN0X3Jl YWRfc3RyZWFtX3Jlc3VtZV9zdGF0ZSBzdGF0ZSA9IHsuYmxrbm8gPSBibGtub307CisKKwlyZWwg PSByZWxhdGlvbl9vcGVuKHJlbGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCXN0cmVhbSA9IHJlYWRf c3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RSRUFNX0RFRkFVTFQsCisJCQkJCQkJCQkJTlVM TCwKKwkJCQkJCQkJCQlyZWwsCisJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAorCQkJCQkJCQkJCXRl c3RfcmVhZF9zdHJlYW1fcmVzdW1lX2NiLAorCQkJCQkJCQkJCSZzdGF0ZSwKKwkJCQkJCQkJCQkw KTsKKworCWZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKQorCXsKKwkJLyogU2FtZSBibG9jayB0 d2ljZS4gKi8KKwkJYnVmID0gcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKTsK KwkJQXNzZXJ0KEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZikgPT0gYmxrbm8pOworCQlSZWxlYXNl QnVmZmVyKGJ1Zik7CisJCWJ1ZiA9IHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVM TCk7CisJCUFzc2VydChCdWZmZXJHZXRCbG9ja051bWJlcihidWYpID09IGJsa25vKTsKKwkJUmVs ZWFzZUJ1ZmZlcihidWYpOworCisJCS8qIEVuZC1vZi1zdHJlYW0uICovCisJCWJ1ZiA9IHJlYWRf c3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCk7CisJCUFzc2VydChidWYgPT0gSW52YWxp ZEJ1ZmZlcik7CisJCWJ1ZiA9IHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCk7 CisJCUFzc2VydChidWYgPT0gSW52YWxpZEJ1ZmZlcik7CisKKwkJLyogUmVzdW1lLiAqLworCQly ZWFkX3N0cmVhbV9yZXN1bWUoc3RyZWFtKTsKKwl9CisKKwlyZWFkX3N0cmVhbV9lbmQoc3RyZWFt KTsKKwlyZWxhdGlvbl9jbG9zZShyZWwsIE5vTG9jayk7CisKKwlQR19SRVRVUk5fVk9JRCgpOwor fQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA0MzI1MDkyNzdjOS4uY2E0YzA3MWRlZDIg MTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC00MTQ0LDYgKzQxNDQsNyBAQCB0ZF9lbnRy eQogdGVTZWN0aW9uCiB0ZW1wX3RhYmxlc3BhY2VzX2V4dHJhCiB0ZXN0X3JlX2ZsYWdzCit0ZXN0 X3JlYWRfc3RyZWFtX3Jlc3VtZV9zdGF0ZQogdGVzdF9yZWdleF9jdHgKIHRlc3Rfc2htX21xX2hl YWRlcgogdGVzdF9zcGVjCi0tIAoyLjUxLjEKCg== --00000000000042f6a206435df854--