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 1vdUkH-001Jdd-1s for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Jan 2026 14:42:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vdUkF-00EMUQ-1y for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Jan 2026 14:42:44 +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 1vdUkE-00EMUG-36 for pgsql-hackers@lists.postgresql.org; Wed, 07 Jan 2026 14:42:44 +0000 Received: from mail-ot1-x32a.google.com ([2607:f8b0:4864:20::32a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vdUkC-004j6i-2t for pgsql-hackers@lists.postgresql.org; Wed, 07 Jan 2026 14:42:42 +0000 Received: by mail-ot1-x32a.google.com with SMTP id 46e09a7af769-7ce2b17a2e4so1328771a34.3 for ; Wed, 07 Jan 2026 06:42:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tigerdata.com; s=google; t=1767796959; x=1768401759; darn=lists.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=syQTA4DUWRNy44YqkkTgFQOzWcPxwo26J5sxZYxSNPw=; b=VR/L/HTSUzrjU/xCVwHU7enebw1LdGkSzm0/5Hd4gTSjalNu1c0WbMx/pQ9vSmndUm LlSct2xkptQQT9W5506Xf1lW4vG4oO9kPnnweGR7/Q4lWsth0o/rTowt9boWI2qMIexM GB2irjs8PHYYqtTQAYaIUJ+DrzTsSYJgvwc7m/byxBP3hZbFuQzluMs+vmi67nlUDt9B 7mqm8SuvfQ2Ttrhqubk1bV3nXmJSX2em8lSVe7zTHAQCWHgiA+/pYSEHKfOGVDJkEGi3 E9xOxpqJZ29/xQcuFUsF9u3X6d7ZvDmtDUnS/iq9+jn14ny69SSb8EHPsMj9qLAgWYc9 RXEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767796959; x=1768401759; 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=syQTA4DUWRNy44YqkkTgFQOzWcPxwo26J5sxZYxSNPw=; b=sGgfP4uJeKIMpivDzvrJ2cTfP8z2huu1BeBY8r6siUwRh3P92UGvUhP/zAuIad6NQN 50ZMvjh9S2A1GGilawoVgdSnYWTGl/eJ9xGOFFZrz1cV8HVH+6UfUdq/oxSnYj6UZlGd Y/UTwM/nFqO5X8R8vaG9Xe+57sitnOmjERkAHnwnwVhx5m8lw5u2O/eUqaE+lqINjXFC KGyIXLXW5Jbq2Fj+bbeuro7HrEO2UhHp0Alq76R8wSiaNu9EErRKt0Oi6isYFuNROm3e tHwaXL+vPw5T7bDZPRrpRXy/jMVtHeMwDlr2mwRHkcc2ctuAKuFhTjhpvdujLE2OGbBd TKgw== X-Gm-Message-State: AOJu0YxmcTFy9QEJiZj6Zojf7dpjd9B9m9eBvFkcQyTXETYxdFGLA+K0 WqaPCmzOogmQep9EPJR1j/koFoLVNMjTdyHq5uFTIFp+glRbI1HIsl1bElummP9bAkxtc8Fc4or 1yIDnjIE4qI37l4dTeqr3K6A4OzyQM4qkkR7CL0fdDugTpNfU0zDmAtHdjbSz X-Gm-Gg: AY/fxX7I9Wo++/Dx6CXqywY5h2xPb25JPsPoIOjCqpJy+aVO50MLqM8joqlHpMUmjc9 BFkvrkJO5dfSfxV5NV5TBgcumK4pvJdCSNM0ibLfaPQBO77WWhl3MDh9LsKwSnb8L+g3a6sw2P/ LQz8IxX+Yqo1xZoScrMCGWD7T0UDqwv3+UbWlptncEp8stmAAy6JVfCjCwEP915zQ4KYO2wGrGj Ld6/TM3QxTrAzdPQ1P6Zmgzp7LIpwLkYAFldOZ7XzELadf/Qdgp9tH4icAe6VwFizXaOF2GzKn2 fA9rQXs= X-Google-Smtp-Source: AGHT+IHbRkPeyn0Ymuepq+BUwm3Qbr1cSx5hVVHOEwDNVXlQ60VFblOW6ES3unfaNLEvE6crSG7HXLroq7LN67fj+ig= X-Received: by 2002:a05:6830:3483:b0:7b4:1768:ff3b with SMTP id 46e09a7af769-7ce50a29cf9mr1552962a34.22.1767796958905; Wed, 07 Jan 2026 06:42:38 -0800 (PST) MIME-Version: 1.0 References: <174319365391.60294.17413945943923890743.pgcf@coridan.postgresql.org> <8da558b6-14fe-4f04-a6bd-98e9961c9ff5@iki.fi> In-Reply-To: <8da558b6-14fe-4f04-a6bd-98e9961c9ff5@iki.fi> From: Aleksander Alekseev Date: Wed, 7 Jan 2026 17:42:27 +0300 X-Gm-Features: AQt7F2qiXOo4M8MyzKEQrXfYZ7FdBUeBOGkWGSyiYx9jGn0HxJbi_uesm4gMzfA Message-ID: Subject: Re: [PATCH] Refactor SLRU to always use long file names To: pgsql-hackers@lists.postgresql.org Cc: Heikki Linnakangas , Rustam ALLAKOV , Michael Paquier Content-Type: multipart/mixed; boundary="000000000000c571920647cd4d28" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c571920647cd4d28 Content-Type: text/plain; charset="UTF-8" Hi Heikki, > Since commit bd8d9c9bdf "Widen MultiXactOffset to 64 bits", > "pg_multixact/members" should not be in that list anymore. I missed this one. Fixed, thanks. > Also, it seems misleading that a function called "check_*" doesn't > merely check for things, but renames files. Fair point. I renamed it to `ensure_long_slru_segment_filenames`. > Could we copy/link them with the new long names to begin with? That's an interesting idea. What I personally don't like about it is the fact that a single migration will affect the logic of every run of pg_upgrade, even in the far future, for instances that don't need this migration. Previously I showed [1] that the entire migration takes little time (note that we had to migrate pg_multixact/members back then). So I don't think this optimization is a good idea in the long run, unless we reach a consensus on the opposite. [1]: https://www.postgresql.org/message-id/CAJ7c6TPdDSnVR2ZGn-oirfvvFXZghS5PAXYwmtb7_nNps53eEg%40mail.gmail.com -- Best regards, Aleksander Alekseev --000000000000c571920647cd4d28 Content-Type: text/x-patch; charset="US-ASCII"; name="v8-0001-Always-use-long-SLRU-segment-file-names.patch" Content-Disposition: attachment; filename="v8-0001-Always-use-long-SLRU-segment-file-names.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk44f13o0 RnJvbSA4MjIzNjYxZjkxOTRhNzZkMWQzZTA5YTJmYWQ0ZWYzY2VjOGY5MDlmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpbWVz Y2FsZS5jb20+CkRhdGU6IFdlZCwgMTEgU2VwIDIwMjQgMTM6MTc6MzMgKzAzMDAKU3ViamVjdDog W1BBVENIIHY4XSBBbHdheXMgdXNlIGxvbmcgU0xSVSBzZWdtZW50IGZpbGUgbmFtZXMKClBHMTcg aW50cm9kdWNlZCBsb25nIFNMUlUgc2VnbWVudCBmaWxlIG5hbWVzIChjb21taXQgNGVkOGYwOTEz YmZkKS4gV2UgdXNlZApzaG9ydCBvciBsb25nIGZpbGUgbmFtZXMgZGVwZW5kaW5nIG9uIFNscnVD dGwtPmxvbmdfc2VnbWVudF9uYW1lcy4gVGhpcyBjb21taXQKcmVmYWN0b3JzIFNMUlUgdG8gYWx3 YXlzIHVzZSBsb25nIGZpbGUgbmFtZXMgaW4gb3JkZXIgdG8gc2ltcGxpZnkgdGhlIGNvZGUuCgpB dXRob3I6IEFsZWtzYW5kZXIgQWxla3NlZXYgPGFsZWtzYW5kZXJAdGlnZXJkYXRhLmNvbT4KUmV2 aWV3ZWQtYnk6IE1pY2hhZWwgUGFxdWllciA8bWljaGFlbEBwYXF1aWVyLnh5ej4KUmV2aWV3ZWQt Ynk6IFJ1c3RhbSBBTExBS09WIDxydXN0YW1hbGxha292QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IEhlaWtraSBMaW5uYWthbmdhcyA8aGxpbm5ha2FAaWtpLmZpPgpEaXNjdXNzaW9uOiBodHRwczov L3Bvc3Rnci5lcy9tL0NBSjdjNlRPeTdmVVc5TXVOZU9Xb3IzY1NGblFnOXRnej1talhIRGI5NEdP UnRNX0V5Z0BtYWlsLmdtYWlsLmNvbQoKKCEhISkgYnVtcCBjYXR2ZXJzaW9uIGFuZCBjaGFuZ2Ug dGhlIGNvcnJlc3BvbmRpbmcgVE9ETyBGSVhNRSBsaW5lIGluIHBnX3VwZ3JhZGUuaAotLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYyAgICAgICAgICAgICB8ICAyICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYyAgICAgICAgfCAgMyArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgICAgICAgIHwgIDYgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYyAgICAgICAgICAgICB8IDcxICsrKystLS0tLS0tLS0t LS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYyAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgICAgICAgICAgICAgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgICAgICAgICAgfCAgMiArLQog c3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYyAgICAgICAgICAgICAgIHwgNzMgKysrKysr KysrKysrKysrKysrKwogc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCAgICAgICAgICAg ICAgIHwgIDYgKysKIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAzX2NvcnJ1cHRpb24ucGwg ICB8ICAyICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oICAgICAgICAgICAgICAgICAgICAg fCAxMCArLS0KIC4uLi90ZXN0X3NscnUvdC8wMDJfbXVsdGl4YWN0X3dyYXBhcm91bmQucGwgICB8 ICA2ICstCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90ZXN0X3NscnUuYyAgICAgICAgfCAg OCArLQogMTMgZmlsZXMgY2hhbmdlZCwgMTA1IGluc2VydGlvbnMoKyksIDg4IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwppbmRleCBiNWMzOGJiYjE2Mi4uZTQ2ZGMxM2Zi NWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMKQEAgLTgwOSw3ICs4MDksNyBAQCBDTE9H U2htZW1Jbml0KHZvaWQpCiAJWGFjdEN0bC0+UGFnZVByZWNlZGVzID0gQ0xPR1BhZ2VQcmVjZWRl czsKIAlTaW1wbGVMcnVJbml0KFhhY3RDdGwsICJ0cmFuc2FjdGlvbiIsIENMT0dTaG1lbUJ1ZmZl cnMoKSwgQ0xPR19MU05TX1BFUl9QQUdFLAogCQkJCSAgInBnX3hhY3QiLCBMV1RSQU5DSEVfWEFD VF9CVUZGRVIsCi0JCQkJICBMV1RSQU5DSEVfWEFDVF9TTFJVLCBTWU5DX0hBTkRMRVJfQ0xPRywg ZmFsc2UpOworCQkJCSAgTFdUUkFOQ0hFX1hBQ1RfU0xSVSwgU1lOQ19IQU5ETEVSX0NMT0cpOwog CVNscnVQYWdlUHJlY2VkZXNVbml0VGVzdHMoWGFjdEN0bCwgQ0xPR19YQUNUU19QRVJfUEFHRSk7 CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMKaW5kZXggMDgyYjU2NGRh OGYuLjI1Nzc0ZmJjMWI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9j b21taXRfdHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYwpA QCAtNTU0LDggKzU1NCw3IEBAIENvbW1pdFRzU2htZW1Jbml0KHZvaWQpCiAJU2ltcGxlTHJ1SW5p dChDb21taXRUc0N0bCwgImNvbW1pdF90aW1lc3RhbXAiLCBDb21taXRUc1NobWVtQnVmZmVycygp LCAwLAogCQkJCSAgInBnX2NvbW1pdF90cyIsIExXVFJBTkNIRV9DT01NSVRUU19CVUZGRVIsCiAJ CQkJICBMV1RSQU5DSEVfQ09NTUlUVFNfU0xSVSwKLQkJCQkgIFNZTkNfSEFORExFUl9DT01NSVRf VFMsCi0JCQkJICBmYWxzZSk7CisJCQkJICBTWU5DX0hBTkRMRVJfQ09NTUlUX1RTKTsKIAlTbHJ1 UGFnZVByZWNlZGVzVW5pdFRlc3RzKENvbW1pdFRzQ3RsLCBDT01NSVRfVFNfWEFDVFNfUEVSX1BB R0UpOwogCiAJY29tbWl0VHNTaGFyZWQgPSBTaG1lbUluaXRTdHJ1Y3QoIkNvbW1pdFRzIHNoYXJl ZCIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCmluZGV4IDNmNDIzNjM2YjQ4 Li4zNDgyYjFjMTZhZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVs dGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAg LTE3MzYsMTUgKzE3MzYsMTMgQEAgTXVsdGlYYWN0U2htZW1Jbml0KHZvaWQpCiAJCQkJICAibXVs dGl4YWN0X29mZnNldCIsIG11bHRpeGFjdF9vZmZzZXRfYnVmZmVycywgMCwKIAkJCQkgICJwZ19t dWx0aXhhY3Qvb2Zmc2V0cyIsIExXVFJBTkNIRV9NVUxUSVhBQ1RPRkZTRVRfQlVGRkVSLAogCQkJ CSAgTFdUUkFOQ0hFX01VTFRJWEFDVE9GRlNFVF9TTFJVLAotCQkJCSAgU1lOQ19IQU5ETEVSX01V TFRJWEFDVF9PRkZTRVQsCi0JCQkJICBmYWxzZSk7CisJCQkJICBTWU5DX0hBTkRMRVJfTVVMVElY QUNUX09GRlNFVCk7CiAJU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhNdWx0aVhhY3RPZmZzZXRD dGwsIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFKTsKIAlTaW1wbGVMcnVJbml0KE11bHRpWGFj dE1lbWJlckN0bCwKIAkJCQkgICJtdWx0aXhhY3RfbWVtYmVyIiwgbXVsdGl4YWN0X21lbWJlcl9i dWZmZXJzLCAwLAogCQkJCSAgInBnX211bHRpeGFjdC9tZW1iZXJzIiwgTFdUUkFOQ0hFX01VTFRJ WEFDVE1FTUJFUl9CVUZGRVIsCiAJCQkJICBMV1RSQU5DSEVfTVVMVElYQUNUTUVNQkVSX1NMUlUs Ci0JCQkJICBTWU5DX0hBTkRMRVJfTVVMVElYQUNUX01FTUJFUiwKLQkJCQkgIHRydWUpOworCQkJ CSAgU1lOQ19IQU5ETEVSX01VTFRJWEFDVF9NRU1CRVIpOwogCS8qIGRvZXNuJ3QgY2FsbCBTaW1w bGVMcnVUcnVuY2F0ZSgpIG9yIG1lZXQgY3JpdGVyaWEgZm9yIHVuaXQgdGVzdHMgKi8KIAogCS8q IEluaXRpYWxpemUgb3VyIHNoYXJlZCBzdGF0ZSBzdHJ1Y3QgKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3NscnUuYwppbmRleCA1NDljN2UzZTY0Yi4uMThiYWVkZDZkZTYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS9zbHJ1LmMKQEAgLTc3LDQxICs3NywyMSBAQAogICoKICAqICJwYXRoIiBzaG91bGQgcG9p bnQgdG8gYSBidWZmZXIgYXQgbGVhc3QgTUFYUEdQQVRIIGNoYXJhY3RlcnMgbG9uZy4KICAqCi0g KiBJZiBjdGwtPmxvbmdfc2VnbWVudF9uYW1lcyBpcyB0cnVlLCBzZWdubyBjYW4gYmUgaW4gdGhl IHJhbmdlIFswLCAyXjYwLTFdLgotICogVGhlIHJlc3VsdGluZyBmaWxlIG5hbWUgaXMgbWFkZSBv ZiAxNSBjaGFyYWN0ZXJzLCBlLmcuIGRpci8xMjM0NTY3ODlBQkNERUYuCi0gKgotICogSWYgY3Rs LT5sb25nX3NlZ21lbnRfbmFtZXMgaXMgZmFsc2UsIHNlZ25vIGNhbiBiZSBpbiB0aGUgcmFuZ2Ug WzAsIDJeMjQtMV0uCi0gKiBUaGUgcmVzdWx0aW5nIGZpbGUgbmFtZSBpcyBtYWRlIG9mIDQgdG8g NiBjaGFyYWN0ZXJzLCBhcyBvZjoKLSAqCi0gKiAgZGlyLzEyMzQgICBmb3IgWzAsIDJeMTYtMV0K LSAqICBkaXIvMTIzNDUgIGZvciBbMl4xNiwgMl4yMC0xXQotICogIGRpci8xMjM0NTYgZm9yIFsy XjIwLCAyXjI0LTFdCisgKiBzZWdubyBjYW4gYmUgaW4gdGhlIHJhbmdlIFswLCAyXjYwLTFdLiBU aGUgcmVzdWx0aW5nIGZpbGUgbmFtZSBpcyBtYWRlCisgKiBvZiAxNSBjaGFyYWN0ZXJzLCBlLmcu IGRpci8xMjM0NTY3ODlBQkNERUYuCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50CiBTbHJ1RmlsZU5h bWUoU2xydUN0bCBjdGwsIGNoYXIgKnBhdGgsIGludDY0IHNlZ25vKQogewotCWlmIChjdGwtPmxv bmdfc2VnbWVudF9uYW1lcykKLQl7Ci0JCS8qCi0JCSAqIFdlIGNvdWxkIHVzZSAxNiBjaGFyYWN0 ZXJzIGhlcmUgYnV0IHRoZSBkaXNhZHZhbnRhZ2Ugd291bGQgYmUgdGhhdAotCQkgKiB0aGUgU0xS VSBzZWdtZW50cyB3aWxsIGJlIGhhcmQgdG8gZGlzdGluZ3Vpc2ggZnJvbSBXQUwgc2VnbWVudHMu Ci0JCSAqCi0JCSAqIEZvciB0aGlzIHJlYXNvbiB3ZSB1c2UgMTUgY2hhcmFjdGVycy4gSXQgaXMg ZW5vdWdoIGJ1dCBhbHNvIG1lYW5zCi0JCSAqIHRoYXQgaW4gdGhlIGZ1dHVyZSB3ZSBjYW4ndCBk ZWNyZWFzZSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UIGVhc2lseS4KLQkJICovCi0JCUFzc2VydChz ZWdubyA+PSAwICYmIHNlZ25vIDw9IElOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkZGRkYpKTsKLQkJ cmV0dXJuIHNucHJpbnRmKHBhdGgsIE1BWFBHUEFUSCwgIiVzLyUwMTUiIFBSSVg2NCwgY3RsLT5E aXIsIHNlZ25vKTsKLQl9Ci0JZWxzZQotCXsKLQkJLyoKLQkJICogRGVzcGl0ZSB0aGUgZmFjdCB0 aGF0ICUwNFggZm9ybWF0IHN0cmluZyBpcyB1c2VkIHVwIHRvIDI0IGJpdAotCQkgKiBpbnRlZ2Vy cyBhcmUgYWxsb3dlZC4gU2VlIFNscnVDb3JyZWN0U2VnbWVudEZpbGVuYW1lTGVuZ3RoKCkKLQkJ ICovCi0JCUFzc2VydChzZWdubyA+PSAwICYmIHNlZ25vIDw9IElOVDY0Q09OU1QoMHhGRkZGRkYp KTsKLQkJcmV0dXJuIHNucHJpbnRmKHBhdGgsIE1BWFBHUEFUSCwgIiVzLyUwNFgiLCAoY3RsKS0+ RGlyLAotCQkJCQkJKHVuc2lnbmVkIGludCkgc2Vnbm8pOwotCX0KKwkvKgorCSAqIFdlIGNvdWxk IHVzZSAxNiBjaGFyYWN0ZXJzIGhlcmUgYnV0IHRoZSBkaXNhZHZhbnRhZ2Ugd291bGQgYmUgdGhh dAorCSAqIHRoZSBTTFJVIHNlZ21lbnRzIHdpbGwgYmUgaGFyZCB0byBkaXN0aW5ndWlzaCBmcm9t IFdBTCBzZWdtZW50cy4KKwkgKgorCSAqIEZvciB0aGlzIHJlYXNvbiB3ZSB1c2UgMTUgY2hhcmFj dGVycy4gSXQgaXMgZW5vdWdoIGJ1dCBhbHNvIG1lYW5zCisJICogdGhhdCBpbiB0aGUgZnV0dXJl IHdlIGNhbid0IGRlY3JlYXNlIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQgZWFzaWx5LgorCSAqLwor CUFzc2VydChzZWdubyA+PSAwICYmIHNlZ25vIDw9IElOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkZG RkYpKTsKKwlyZXR1cm4gc25wcmludGYocGF0aCwgTUFYUEdQQVRILCAiJXMvJTAxNSIgUFJJWDY0 LCBjdGwtPkRpciwgc2Vnbm8pOwogfQogCiAvKgpAQCAtMjUxLDcgKzIzMSw3IEBAIFNpbXBsZUxy dUF1dG90dW5lQnVmZmVycyhpbnQgZGl2aXNvciwgaW50IG1heCkKIHZvaWQKIFNpbXBsZUxydUlu aXQoU2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuc2xvdHMsIGludCBubHNucywK IAkJCSAgY29uc3QgY2hhciAqc3ViZGlyLCBpbnQgYnVmZmVyX3RyYW5jaGVfaWQsIGludCBiYW5r X3RyYW5jaGVfaWQsCi0JCQkgIFN5bmNSZXF1ZXN0SGFuZGxlciBzeW5jX2hhbmRsZXIsIGJvb2wg bG9uZ19zZWdtZW50X25hbWVzKQorCQkJICBTeW5jUmVxdWVzdEhhbmRsZXIgc3luY19oYW5kbGVy KQogewogCVNscnVTaGFyZWQJc2hhcmVkOwogCWJvb2wJCWZvdW5kOwpAQCAtMzQyLDcgKzMyMiw2 IEBAIFNpbXBsZUxydUluaXQoU2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuc2xv dHMsIGludCBubHNucywKIAkgKi8KIAljdGwtPnNoYXJlZCA9IHNoYXJlZDsKIAljdGwtPnN5bmNf aGFuZGxlciA9IHN5bmNfaGFuZGxlcjsKLQljdGwtPmxvbmdfc2VnbWVudF9uYW1lcyA9IGxvbmdf c2VnbWVudF9uYW1lczsKIAljdGwtPm5iYW5rcyA9IG5iYW5rczsKIAlzdHJsY3B5KGN0bC0+RGly LCBzdWJkaXIsIHNpemVvZihjdGwtPkRpcikpOwogfQpAQCAtMTc3MywzMCArMTc1Miw2IEBAIFNs cnVTY2FuRGlyQ2JEZWxldGVBbGwoU2xydUN0bCBjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBz ZWdwYWdlLCB2b2lkICpkYXRhKQogCXJldHVybiBmYWxzZTsJCQkJLyoga2VlcCBnb2luZyAqLwog fQogCi0vKgotICogQW4gaW50ZXJuYWwgZnVuY3Rpb24gdXNlZCBieSBTbHJ1U2NhbkRpcmVjdG9y eSgpLgotICoKLSAqIFJldHVybnMgdHJ1ZSBpZiBhIGZpbGUgd2l0aCBhIG5hbWUgb2YgYSBnaXZl biBsZW5ndGggbWF5IGJlIGEgY29ycmVjdAotICogU0xSVSBzZWdtZW50LgotICovCi1zdGF0aWMg aW5saW5lIGJvb2wKLVNscnVDb3JyZWN0U2VnbWVudEZpbGVuYW1lTGVuZ3RoKFNscnVDdGwgY3Rs LCBzaXplX3QgbGVuKQotewotCWlmIChjdGwtPmxvbmdfc2VnbWVudF9uYW1lcykKLQkJcmV0dXJu IChsZW4gPT0gMTUpOwkJLyogc2VlIFNscnVGaWxlTmFtZSgpICovCi0JZWxzZQotCi0JCS8qCi0J CSAqIENvbW1pdCA2MzhjZjA5ZTc2ZCBhbGxvd2VkIDUtY2hhcmFjdGVyIGxlbmd0aHMuIExhdGVy IGNvbW1pdAotCQkgKiA3M2M5ODZhZGRlNSBhbGxvd2VkIDYtY2hhcmFjdGVyIGxlbmd0aC4KLQkJ ICoKLQkJICogTm90ZTogVGhlcmUgaXMgYW4gb25nb2luZyBwbGFuIHRvIG1pZ3JhdGUgYWxsIFNM UlVzIHRvIDY0LWJpdCBwYWdlCi0JCSAqIG51bWJlcnMsIGFuZCB0aGUgY29ycmVzcG9uZGluZyAx NS1jaGFyYWN0ZXIgZmlsZSBuYW1lcywgd2hpY2ggbWF5Ci0JCSAqIGV2ZW50dWFsbHkgZGVwcmVj YXRlIHRoZSBzdXBwb3J0IGZvciA0LCA1LCBhbmQgNi1jaGFyYWN0ZXIgbmFtZXMuCi0JCSAqLwot CQlyZXR1cm4gKGxlbiA9PSA0IHx8IGxlbiA9PSA1IHx8IGxlbiA9PSA2KTsKLX0KLQogLyoKICAq IFNjYW4gdGhlIFNpbXBsZUxydSBkaXJlY3RvcnkgYW5kIGFwcGx5IGEgY2FsbGJhY2sgdG8gZWFj aCBmaWxlIGZvdW5kIGluIGl0LgogICoKQEAgLTE4MjgsNyArMTc4Myw3IEBAIFNscnVTY2FuRGly ZWN0b3J5KFNscnVDdGwgY3RsLCBTbHJ1U2NhbkNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICpkYXRh KQogCiAJCWxlbiA9IHN0cmxlbihjbGRlLT5kX25hbWUpOwogCi0JCWlmIChTbHJ1Q29ycmVjdFNl Z21lbnRGaWxlbmFtZUxlbmd0aChjdGwsIGxlbikgJiYKKwkJaWYgKChsZW4gPT0gMTUpICYmCiAJ CQlzdHJzcG4oY2xkZS0+ZF9uYW1lLCAiMDEyMzQ1Njc4OUFCQ0RFRiIpID09IGxlbikKIAkJewog CQkJc2Vnbm8gPSBzdHJ0b2k2NChjbGRlLT5kX25hbWUsIE5VTEwsIDE2KTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9zdWJ0cmFucy5jCmluZGV4IGMwOTg3ZjQzZjExLi4zNTM2OTcxY2E3ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jCkBAIC0yNDIsNyArMjQyLDcgQEAgU1VC VFJBTlNTaG1lbUluaXQodm9pZCkKIAlTdWJUcmFuc0N0bC0+UGFnZVByZWNlZGVzID0gU3ViVHJh bnNQYWdlUHJlY2VkZXM7CiAJU2ltcGxlTHJ1SW5pdChTdWJUcmFuc0N0bCwgInN1YnRyYW5zYWN0 aW9uIiwgU1VCVFJBTlNTaG1lbUJ1ZmZlcnMoKSwgMCwKIAkJCQkgICJwZ19zdWJ0cmFucyIsIExX VFJBTkNIRV9TVUJUUkFOU19CVUZGRVIsCi0JCQkJICBMV1RSQU5DSEVfU1VCVFJBTlNfU0xSVSwg U1lOQ19IQU5ETEVSX05PTkUsIGZhbHNlKTsKKwkJCQkgIExXVFJBTkNIRV9TVUJUUkFOU19TTFJV LCBTWU5DX0hBTkRMRVJfTk9ORSk7CiAJU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhTdWJUcmFu c0N0bCwgU1VCVFJBTlNfWEFDVFNfUEVSX1BBR0UpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9hc3luYy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwppbmRl eCA0MGM0MmY1NzJlZC4uMGRkMWE5MjNmYzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2FzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwpAQCAtNTM2LDcg KzUzNiw3IEBAIEFzeW5jU2htZW1Jbml0KHZvaWQpCiAJTm90aWZ5Q3RsLT5QYWdlUHJlY2VkZXMg PSBhc3luY1F1ZXVlUGFnZVByZWNlZGVzOwogCVNpbXBsZUxydUluaXQoTm90aWZ5Q3RsLCAibm90 aWZ5Iiwgbm90aWZ5X2J1ZmZlcnMsIDAsCiAJCQkJICAicGdfbm90aWZ5IiwgTFdUUkFOQ0hFX05P VElGWV9CVUZGRVIsIExXVFJBTkNIRV9OT1RJRllfU0xSVSwKLQkJCQkgIFNZTkNfSEFORExFUl9O T05FLCB0cnVlKTsKKwkJCQkgIFNZTkNfSEFORExFUl9OT05FKTsKIAogCWlmICghZm91bmQpCiAJ ewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGZlNzVlYWQzNTAxLi44ZTk3 YmIzNTIyNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtODE0LDcgKzgx NCw3IEBAIFNlcmlhbEluaXQodm9pZCkKIAlTaW1wbGVMcnVJbml0KFNlcmlhbFNscnVDdGwsICJz ZXJpYWxpemFibGUiLAogCQkJCSAgc2VyaWFsaXphYmxlX2J1ZmZlcnMsIDAsICJwZ19zZXJpYWwi LAogCQkJCSAgTFdUUkFOQ0hFX1NFUklBTF9CVUZGRVIsIExXVFJBTkNIRV9TRVJJQUxfU0xSVSwK LQkJCQkgIFNZTkNfSEFORExFUl9OT05FLCBmYWxzZSk7CisJCQkJICBTWU5DX0hBTkRMRVJfTk9O RSk7CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwogCVNlcmlhbFBhZ2VQcmVjZWRlc0xvZ2lj YWxseVVuaXRUZXN0cygpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUv cGdfdXBncmFkZS5jIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYwppbmRleCAyMTI3 ZDI5N2JmZS4uOTQ5NjRmMzJlYWUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191 cGdyYWRlLmMKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYwpAQCAtNDEsNiAr NDEsNyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKIAorI2luY2x1ZGUgPGRpcmVudC5o PgogI2luY2x1ZGUgPHRpbWUuaD4KIAogI2luY2x1ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKQEAg LTY0LDYgKzY1LDggQEAgc3RhdGljIHZvaWQgcHJlcGFyZV9uZXdfY2x1c3Rlcih2b2lkKTsKIHN0 YXRpYyB2b2lkIHByZXBhcmVfbmV3X2dsb2JhbHModm9pZCk7CiBzdGF0aWMgdm9pZCBjcmVhdGVf bmV3X29iamVjdHModm9pZCk7CiBzdGF0aWMgdm9pZCBjb3B5X3hhY3RfeGxvZ194aWQodm9pZCk7 CitzdGF0aWMgdm9pZCBlbnN1cmVfbG9uZ19zbHJ1X3NlZ21lbnRfZmlsZW5hbWVzKHZvaWQpOwor c3RhdGljIHZvaWQgcmVuYW1lX3NscnVfc2VnbWVudHMoY29uc3QgY2hhciAqZGlybmFtZSk7CiBz dGF0aWMgdm9pZCBzZXRfZnJvemVueGlkcyhib29sIG1pbm14aWRfb25seSk7CiBzdGF0aWMgdm9p ZCBtYWtlX291dHB1dGRpcnMoY2hhciAqcGdkYXRhKTsKIHN0YXRpYyB2b2lkIHNldHVwKGNoYXIg KmFyZ3YwKTsKQEAgLTE2Miw2ICsxNjUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK IAogCWNvcHlfeGFjdF94bG9nX3hpZCgpOwogCXNldF9uZXdfY2x1c3Rlcl9jaGFyX3NpZ25lZG5l c3MoKTsKKwllbnN1cmVfbG9uZ19zbHJ1X3NlZ21lbnRfZmlsZW5hbWVzKCk7CiAKIAkvKiBOZXcg bm93IHVzaW5nIHhpZHMgb2YgdGhlIG9sZCBzeXN0ZW0gKi8KIApAQCAtOTAyLDYgKzkwNiw3NSBA QCBjb3B5X3hhY3RfeGxvZ194aWQodm9pZCkKIAljaGVja19vaygpOwogfQogCitzdGF0aWMgdm9p ZAorcmVuYW1lX3NscnVfc2VnbWVudHMoY29uc3QgY2hhciogZGlybmFtZSkKK3sKKwlESVIJCSAg ICpkaXI7CisJc3RydWN0IGRpcmVudCAqZGU7CisJaW50IAkJbGVuOworCWludDY0IAkJc2Vnbm87 CisJY2hhcgkJZGlyX3BhdGhbTUFYUEdQQVRIXTsKKwljaGFyCQlvbGRfcGF0aFtNQVhQR1BBVEhd OworCWNoYXIJCW5ld19wYXRoW01BWFBHUEFUSF07CisKKwlwcmVwX3N0YXR1cygiUmVuYW1pbmcg U0xSVSBzZWdtZW50cyBpbiAlcyIsIGRpcm5hbWUpOworCXNucHJpbnRmKGRpcl9wYXRoLCBzaXpl b2YoZGlyX3BhdGgpLCAiJXMvJXMiLCBuZXdfY2x1c3Rlci5wZ2RhdGEsIGRpcm5hbWUpOworCisJ ZGlyID0gb3BlbmRpcihkaXJfcGF0aCk7CisJaWYgKGRpciA9PSBOVUxMKQorCQlwZ19mYXRhbCgi Y291bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBkaXJfcGF0aCk7CisKKwl3aGls ZSAoZXJybm8gPSAwLCAoZGUgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpCisJeworCQkvKgorCQkg KiBpZ25vcmUgJy4nLCAnLi4nIGFuZCBldmVyeXRoaW5nIGVsc2UgdGhhdCBkb2Vzbid0IGxvb2sK KwkJICogbGlrZSBhbiBTTFJVIHNlZ21lbnQgd2l0aCBhIHNob3J0IGZpbGUgbmFtZQorCQkgKi8K KworCQlsZW4gPSBzdHJsZW4oZGUtPmRfbmFtZSk7CisJCWlmKGxlbiAhPSA0ICYmIGxlbiAhPSA1 ICYmIGxlbiAhPSA2KQorCQkJY29udGludWU7CisKKwkJaWYoc3Ryc3BuKGRlLT5kX25hbWUsICIw MTIzNDU2Nzg5QUJDREVGIikgIT0gbGVuKQorCQkJY29udGludWU7CisKKwkJc2Vnbm8gPSBzdHJ0 b2k2NChkZS0+ZF9uYW1lLCBOVUxMLCAxNik7CisJCXNucHJpbnRmKG5ld19wYXRoLCBNQVhQR1BB VEgsICIlcy8lMDE1bGxYIiwgZGlyX3BhdGgsCisJCQkJCShsb25nIGxvbmcpIHNlZ25vKTsKKwkJ c25wcmludGYob2xkX3BhdGgsIE1BWFBHUEFUSCwgIiVzLyVzIiwgZGlyX3BhdGgsIGRlLT5kX25h bWUpOworCisJCWlmIChwZ19tdl9maWxlKG9sZF9wYXRoLCBuZXdfcGF0aCkgIT0gMCkKKwkJCXBn X2ZhdGFsKCJjb3VsZCBub3QgcmVuYW1lIGZpbGUgXCIlc1wiIHRvIFwiJXNcIjogJW0iLAorCQkJ CQkgb2xkX3BhdGgsIG5ld19wYXRoKTsKKwl9CisKKwlpZiAoZXJybm8pCisJCXBnX2ZhdGFsKCJj b3VsZCBub3QgcmVhZCBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIGRpcl9wYXRoKTsKKworCWlmIChj bG9zZWRpcihkaXIpKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGNsb3NlIGRpcmVjdG9yeSBcIiVz XCI6ICVtIiwgZGlyX3BhdGgpOworCisJY2hlY2tfb2soKTsKK30KKworc3RhdGljIHZvaWQKK2Vu c3VyZV9sb25nX3NscnVfc2VnbWVudF9maWxlbmFtZXModm9pZCkKK3sKKwlpbnQgaTsKKwlzdGF0 aWMgY29uc3QgY2hhciogZGlyc1tdID0geworCQkicGdfeGFjdCIsCisJCSJwZ19jb21taXRfdHMi LAorCQkicGdfbXVsdGl4YWN0L29mZnNldHMiLAorCQkicGdfc3VidHJhbnMiLAorCQkicGdfc2Vy aWFsIiwKKwl9OworCisJaWYob2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA+PSBTTFJV X1NFR19GSUxFTkFNRVNfQ0hBTkdFX0NBVF9WRVIpCisJCXJldHVybjsKKworCWZvciAoaSA9IDA7 IGkgPCBzaXplb2YoZGlycykvc2l6ZW9mKGRpcnNbMF0pOyBpKyspCisJCXJlbmFtZV9zbHJ1X3Nl Z21lbnRzKGRpcnNbaV0pOworfQogCiAvKgogICoJc2V0X2Zyb3plbnhpZHMoKQpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCBiL3NyYy9iaW4vcGdfdXBncmFkZS9w Z191cGdyYWRlLmgKaW5kZXggZWMwMThlNGYyOTIuLjU4MTAyZTZhNDgzIDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9w Z191cGdyYWRlLmgKQEAgLTEzOCw2ICsxMzgsMTIgQEAgZXh0ZXJuIGNoYXIgKm91dHB1dF9maWxl c1tdOwogICovCiAjZGVmaW5lIERFRkFVTFRfQ0hBUl9TSUdORURORVNTX0NBVF9WRVIgMjAyNTAy MjEyCiAKKy8qCisgKiBjaGFuZ2Ugb2YgU0xSVSBzZWdtZW50IGZpbGVuYW1lcyBsZW5ndGggaW4g UEcxOQorICogVE9ETyBGSVhNRSBDSEFOR0UgVE8gVEhFIEFDVFVBTCBWQUxVRSBCRUZPUkUgQ09N TUlUVElORworICovCisjZGVmaW5lIFNMUlVfU0VHX0ZJTEVOQU1FU19DSEFOR0VfQ0FUX1ZFUiAy MDI2MDEwNjEKKwogLyoKICAqIEVhY2ggcmVsYXRpb24gaXMgcmVwcmVzZW50ZWQgYnkgYSByZWxp bmZvIHN0cnVjdHVyZS4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAv dC8wMDNfY29ycnVwdGlvbi5wbCBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAzX2NvcnJ1 cHRpb24ucGwKaW5kZXggYjFkNjViOGFhMGYuLjQ2NzdlOTU4NGNhIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwM19jb3JydXB0aW9uLnBsCisrKyBiL3NyYy9iaW4vcGdf dmVyaWZ5YmFja3VwL3QvMDAzX2NvcnJ1cHRpb24ucGwKQEAgLTI0Niw3ICsyNDYsNyBAQCBzdWIg bXV0aWxhdGVfZXh0cmFfdGFibGVzcGFjZV9maWxlCiBzdWIgbXV0aWxhdGVfbWlzc2luZ19maWxl CiB7CiAJbXkgKCRiYWNrdXBfcGF0aCkgPSBAXzsKLQlteSAkcGF0aG5hbWUgPSAiJGJhY2t1cF9w YXRoL3BnX3hhY3QvMDAwMCI7CisJbXkgJHBhdGhuYW1lID0gIiRiYWNrdXBfcGF0aC9wZ194YWN0 LzAwMDAwMDAwMDAwMDAwMCI7CiAJdW5saW5rKCRwYXRobmFtZSkgfHwgZGllICIkcGF0aG5hbWU6 ICQhIjsKIAlyZXR1cm47CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaAppbmRleCA0Y2I4ZjQ3OGZjZS4uNTQxZmViZjg2 YmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3NscnUuaApAQCAtMTE2LDEzICsxMTYsNiBAQCB0eXBlZGVmIHN0cnVjdCBTbHJ1 Q3RsRGF0YQogCS8qIE51bWJlciBvZiBiYW5rcyBpbiB0aGlzIFNMUlUuICovCiAJdWludDE2CQlu YmFua3M7CiAKLQkvKgotCSAqIElmIHRydWUsIHVzZSBsb25nIHNlZ21lbnQgZmlsZSBuYW1lcy4g IE90aGVyd2lzZSwgdXNlIHNob3J0IGZpbGUgbmFtZXMuCi0JICoKLQkgKiBGb3IgZGV0YWlscyBh Ym91dCB0aGUgZmlsZSBuYW1lIGZvcm1hdCwgc2VlIFNscnVGaWxlTmFtZSgpLgotCSAqLwotCWJv b2wJCWxvbmdfc2VnbWVudF9uYW1lczsKLQogCS8qCiAJICogV2hpY2ggc3luYyBoYW5kbGVyIGZ1 bmN0aW9uIHRvIHVzZSB3aGVuIGhhbmRpbmcgc3luYyByZXF1ZXN0cyBvdmVyIHRvCiAJICogdGhl IGNoZWNrcG9pbnRlci4gIFNZTkNfSEFORExFUl9OT05FIHRvIGRpc2FibGUgZnN5bmMgKGVnIHBn X25vdGlmeSkuCkBAIC0xNjksOCArMTYyLDcgQEAgZXh0ZXJuIFNpemUgU2ltcGxlTHJ1U2htZW1T aXplKGludCBuc2xvdHMsIGludCBubHNucyk7CiBleHRlcm4gaW50CVNpbXBsZUxydUF1dG90dW5l QnVmZmVycyhpbnQgZGl2aXNvciwgaW50IG1heCk7CiBleHRlcm4gdm9pZCBTaW1wbGVMcnVJbml0 KFNscnVDdGwgY3RsLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbnNsb3RzLCBpbnQgbmxzbnMsCiAJ CQkJCQkgIGNvbnN0IGNoYXIgKnN1YmRpciwgaW50IGJ1ZmZlcl90cmFuY2hlX2lkLAotCQkJCQkJ ICBpbnQgYmFua190cmFuY2hlX2lkLCBTeW5jUmVxdWVzdEhhbmRsZXIgc3luY19oYW5kbGVyLAot CQkJCQkJICBib29sIGxvbmdfc2VnbWVudF9uYW1lcyk7CisJCQkJCQkgIGludCBiYW5rX3RyYW5j aGVfaWQsIFN5bmNSZXF1ZXN0SGFuZGxlciBzeW5jX2hhbmRsZXIpOwogZXh0ZXJuIGludAlTaW1w bGVMcnVaZXJvUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vKTsKIGV4dGVybiB2b2lkIFNp bXBsZUxydVplcm9BbmRXcml0ZVBhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2Vubyk7CiBleHRl cm4gaW50CVNpbXBsZUxydVJlYWRQYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sIGJvb2wg d3JpdGVfb2ssCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90LzAwMl9t dWx0aXhhY3Rfd3JhcGFyb3VuZC5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3QvMDAy X211bHRpeGFjdF93cmFwYXJvdW5kLnBsCmluZGV4IDM3OTNhYzFjNDUwLi44YjQ2MDFhYjhlMSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdC8wMDJfbXVsdGl4YWN0X3dy YXBhcm91bmQucGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdC8wMDJfbXVsdGl4 YWN0X3dyYXBhcm91bmQucGwKQEAgLTQwLDcgKzQwLDcgQEAgbXkgJHNscnVfcGFnZXNfcGVyX3Nl Z21lbnQgPSAkMTsKIG15ICRtdWx0aXhhY3Rfb2Zmc2V0c19wZXJfcGFnZSA9ICRibGNrc3ogLyA4 OyAgICMgc2l6ZW9mKE11bHRpWGFjdE9mZnNldCkgPT0gOAogbXkgJHNlZ25vID0KICAgaW50KDB4 RkZGRkZGRjggLyAkbXVsdGl4YWN0X29mZnNldHNfcGVyX3BhZ2UgLyAkc2xydV9wYWdlc19wZXJf c2VnbWVudCk7Ci1teSAkc2xydV9maWxlID0gc3ByaW50ZignJXMvcGdfbXVsdGl4YWN0L29mZnNl dHMvJTA0WCcsICRub2RlX3BnZGF0YSwgJHNlZ25vKTsKK215ICRzbHJ1X2ZpbGUgPSBzcHJpbnRm KCclcy9wZ19tdWx0aXhhY3Qvb2Zmc2V0cy8lMDE1WCcsICRub2RlX3BnZGF0YSwgJHNlZ25vKTsK IG9wZW4gbXkgJGZoLCAiPiIsICRzbHJ1X2ZpbGUKICAgb3IgZGllICJjb3VsZCBub3Qgb3BlbiBc IiRzbHJ1X2ZpbGVcIjogJCEiOwogYmlubW9kZSAkZmg7CkBAIC01MCw4ICs1MCw4IEBAIHN5c3dy aXRlKCRmaCwgIlwwIiB4ICRieXRlc19wZXJfc2VnKSA9PSAkYnl0ZXNfcGVyX3NlZwogY2xvc2Ug JGZoOwogCiAjIHJlbW92ZSBvbGQgZmlsZQotdW5saW5rKCIkbm9kZV9wZ2RhdGEvcGdfbXVsdGl4 YWN0L29mZnNldHMvMDAwMCIpCi0gIG9yIGRpZSAiY291bGQgbm90IHVubGluayBcIiRub2RlX3Bn ZGF0YS9wZ19tdWx0aXhhY3Qvb2Zmc2V0cy8wMDAwXCI6ICQhIjsKK3VubGluaygiJG5vZGVfcGdk YXRhL3BnX211bHRpeGFjdC9vZmZzZXRzLzAwMDAwMDAwMDAwMDAwMCIpCisgIG9yIGRpZSAiY291 bGQgbm90IHVubGluayBcIiRub2RlX3BnZGF0YS9wZ19tdWx0aXhhY3Qvb2Zmc2V0cy8wMDAwMDAw MDAwMDAwMDBcIjogJCEiOwogCiAjIENvbnN1bWUgbXVsdGl4aWRzIHRvIHdyYXAgYXJvdW5kLiAg V2Ugc3RhcnQgYXQgMHhGRkZGRkZGOCwgc28gYWZ0ZXIKICMgY3JlYXRpbmcgMTYgbXVsdGl4YWN0 cyB3ZSBzaG91bGQgZGVmaW5pdGVseSBoYXZlIHdyYXBwZWQgYXJvdW5kLgpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdGVzdF9zbHJ1LmMgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2xydS90ZXN0X3NscnUuYwppbmRleCA0ZGM3NGUxOTYyMC4uNjQyZjFhZWI4Y2EgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3Rlc3Rfc2xydS5jCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3Rlc3Rfc2xydS5jCkBAIC0yMTMsMTEgKzIxMyw2IEBA IHRlc3Rfc2xydV9wYWdlX3ByZWNlZGVzX2xvZ2ljYWxseShpbnQ2NCBwYWdlMSwgaW50NjQgcGFn ZTIpCiBzdGF0aWMgdm9pZAogdGVzdF9zbHJ1X3NobWVtX3N0YXJ0dXAodm9pZCkKIHsKLQkvKgot CSAqIFNob3J0IHNlZ21lbnRzIG5hbWVzIGFyZSB3ZWxsIHRlc3RlZCBlbHNld2hlcmUgc28gaW4g dGhpcyB0ZXN0IHdlIGFyZQotCSAqIGZvY3VzaW5nIG9uIGxvbmcgbmFtZXMuCi0JICovCi0JY29u c3QgYm9vbAlsb25nX3NlZ21lbnRfbmFtZXMgPSB0cnVlOwogCWNvbnN0IGNoYXIJc2xydV9kaXJf bmFtZVtdID0gInBnX3Rlc3Rfc2xydSI7CiAJaW50CQkJdGVzdF90cmFuY2hlX2lkID0gLTE7CiAJ aW50CQkJdGVzdF9idWZmZXJfdHJhbmNoZV9pZCA9IC0xOwpAQCAtMjQ3LDggKzI0Miw3IEBAIHRl c3Rfc2xydV9zaG1lbV9zdGFydHVwKHZvaWQpCiAJVGVzdFNscnVDdGwtPlBhZ2VQcmVjZWRlcyA9 IHRlc3Rfc2xydV9wYWdlX3ByZWNlZGVzX2xvZ2ljYWxseTsKIAlTaW1wbGVMcnVJbml0KFRlc3RT bHJ1Q3RsLCAiVGVzdFNMUlUiLAogCQkJCSAgTlVNX1RFU1RfQlVGRkVSUywgMCwgc2xydV9kaXJf bmFtZSwKLQkJCQkgIHRlc3RfYnVmZmVyX3RyYW5jaGVfaWQsIHRlc3RfdHJhbmNoZV9pZCwgU1lO Q19IQU5ETEVSX05PTkUsCi0JCQkJICBsb25nX3NlZ21lbnRfbmFtZXMpOworCQkJCSAgdGVzdF9i dWZmZXJfdHJhbmNoZV9pZCwgdGVzdF90cmFuY2hlX2lkLCBTWU5DX0hBTkRMRVJfTk9ORSk7CiB9 CiAKIHZvaWQKLS0gCjIuNDMuMAoK --000000000000c571920647cd4d28--