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 1tX8ce-004ENH-5y for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Jan 2025 00:48:05 +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 1tX8cb-004qvy-Vx for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Jan 2025 00:48:02 +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.94.2) (envelope-from ) id 1tX8cb-004qs8-F4 for pgsql-hackers@lists.postgresql.org; Mon, 13 Jan 2025 00:48:02 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tX8cY-0004qI-31 for pgsql-hackers@lists.postgresql.org; Mon, 13 Jan 2025 00:48:01 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1736729277; bh=uatgL5MNX4HJi3cHAqzBSlmlqN2K0TPEI8/5BwNFHO8=; h=Subject:Date:To:From:Cc:Message-ID:In-Reply-To:References:From; b=zVGRwBCfVXkVK8MWqatVV3yRLOHaxe2jXmprZ2YPBmXdMCWgyGhyIP74kURvGfeLA 7lpIIKRhK9rcyjqTLsMq1TgMYAKrnEsmeyyT0lWqXY678i08XfgPdzf4u2GiWm6hIM 4div6YMvIN3EO7Cy0SzAmfNC5M5Hh2az5wLOYpC2H89BgyO2AABnJAgVQEBJT75DEj bG100iwQRP2bvTMJS4eOqlTDchqPBoaXNtVP07uOvp1Ve+Z/6my9yMZuf5FmYrcCvt oU1z2EEMB2OEGqrIm+R3NLK4p5J8GH5Ju+xD+54DhVEhX4dONsAguINSubA5H/Nlv/ IlUlOrZNpSDtA== Received: from localhost (broadband-46-242-12-77.ip.moscow.rt.ru [46.242.12.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: y.sokolov@postgrespro.ru) by mail.postgrespro.ru (Postfix/465) with ESMTPSA id CC228601ED; Mon, 13 Jan 2025 03:47:56 +0300 (MSK) MIME-Version: 1.0 Subject: Re: POC, WIP: OR-clause support for indexes Date: Mon, 13 Jan 2025 03:47:56 +0300 To: Alexander Korotkov From: Yura Sokolov Cc: Alena Rybakina , Ranier Vilela , Alexander Lakhin , Andrei Lepikhov , jian he , Robert Haas , Nikolay Shaplov , pgsql-hackers@lists.postgresql.org, pgsql-hackers@postgresql.org, Peter Geoghegan , Marcos Pegoraro , teodor@sigaev.ru, Peter Eisentraut Message-ID: In-Reply-To: References: <567ED6CA.2040504@sigaev.ru>,,,<45050ba9-3777-4cc1-89ad-a02deebe7729@gmail.com>,,,<0026f562-d403-4f97-b9dc-3fe3a279e8c9@postgrespro.ru>,,,<37bf870a-22e0-4aba-b845-549482118f8d@gmail.com>,,<8174de69-9e1a-0827-0e81-ef97f56a5939@gmail.com>,,,<3b717020-14d9-425f-8c60-ce336b5a23b3@postgrespro.ru>,,<43db6a40-5c5f-4909-ad62-3060b297e686@ postgrespro.ru>,, Gmail-Client-Draft-ID: msg-a:r-8141901786928049275 Gmail-Client-Draft-Thread-ID: SU5CT1gucGdzcWwtaGFja2Vycy8xMjMzNjQ=:2fddc1e211e788bb Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 X-KSMG-AntiPhishing: NotDetected, bases: 2025/01/12 23:56:00 X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/01/12 21:59:00 #26991125 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk PGRpdj7QktGBLCAxMiDRj9C90LIuIDIwMjXigK/Qsy4g0LIgMjE6MzksIEFsZXhhbmRlciBLb3Jv dGtvdiAmbHQ7YWVrb3JvdGtvdkBnbWFpbC5jb20mZ3Q7Ojxicj48L2Rpdj48ZGl2PjxkaXYgY2xh c3M9ImdtYWlsX3F1b3RlIGdtYWlsX3F1b3RlX2NvbnRhaW5lciI+PGJsb2NrcXVvdGUgY2xhc3M9 ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNj Y2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleDsiPk9uIEZyaSwgTm92IDI5LCAyMDI0IGF0IDk6NTTi gK9BTSBBbGV4YW5kZXIgS29yb3Rrb3YgJmx0O2Fla29yb3Rrb3ZAZ21haWwuY29tJmd0OyB3cm90 ZToKPGJyPiZndDsgT24gRnJpLCBOb3YgMjksIDIwMjQgYXQgNzo1MeKAr0FNIEFsZW5hIFJ5YmFr aW5hCjxicj4mZ3Q7ICZsdDthLnJ5YmFraW5hQHBvc3RncmVzcHJvLnJ1Jmd0OyB3cm90ZToKPGJy PiZndDsgJmd0Owo8YnI+Jmd0OyAmZ3Q7IE9uIDI5LjExLjIwMjQgMDM6MDQsIEFsZXhhbmRlciBL b3JvdGtvdiB3cm90ZToKPGJyPiZndDsgJmd0OyAmZ3Q7IE9uIFRodSwgTm92IDI4LCAyMDI0IGF0 IDk6MzPigK9QTSBBbGVuYSBSeWJha2luYQo8YnI+Jmd0OyAmZ3Q7ICZndDsgJmx0O2EucnliYWtp bmFAcG9zdGdyZXNwcm8ucnUmZ3Q7IHdyb3RlOgo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7IE9uIDI4 LjExLjIwMjQgMjI6MjgsIFJhbmllciBWaWxlbGEgd3JvdGU6Cjxicj4mZ3Q7ICZndDsgJmd0OyZn dDsKPGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyBFbSBxdWkuLCAyOCBkZSBub3YuIGRlIDIwMjQgw6Bz IDE2OjAzLCBBbGVuYSBSeWJha2luYSAmbHQ7YS5yeWJha2luYUBwb3N0Z3Jlc3Byby5ydSZndDsg ZXNjcmV2ZXU6Cjxicj4mZ3Q7ICZndDsgJmd0OyZndDsmZ3Q7IEhpISBUaGFuayB5b3UgZm9yIHRo ZSBjYXNlLgo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7Jmd0Owo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7 Jmd0OyBPbiAyOC4xMS4yMDI0IDIxOjAwLCBBbGV4YW5kZXIgTGFraGluIHdyb3RlOgo8YnI+Jmd0 OyAmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgSGVsbG8gQWxleGFuZGVyLAo8YnI+Jmd0OyAmZ3Q7ICZn dDsmZ3Q7Jmd0OyZndDsKPGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IDIxLjExLjIwMjQg MDk6MzQsIEFsZXhhbmRlciBLb3JvdGtvdiB3cm90ZToKPGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyZn dDsmZ3Q7Jmd0OyBJJ20gZ29pbmcgdG8gcHVzaCB0aGlzIGlmIG5vIG9iamVjdGlvbnMuCjxicj4m Z3Q7ICZndDsgJmd0OyZndDsmZ3Q7Jmd0OyBQbGVhc2UgbG9vayBhdCB0aGUgZm9sbG93aW5nIHF1 ZXJ5LCB3aGljaCB0cmlnZ2VycyBhbiBlcnJvciBhZnRlcgo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7 Jmd0OyZndDsgYWU0NTY5MTYxOgo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgU0VUIHJh bmRvbV9wYWdlX2Nvc3QgPSAxOwo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgQ1JFQVRF IFRBQkxFIHRibCh1IFVVSUQpOwo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgQ1JFQVRF IElOREVYIGlkeCBPTiB0YmwgVVNJTkcgSEFTSCAodSk7Cjxicj4mZ3Q7ICZndDsgJmd0OyZndDsm Z3Q7Jmd0OyBTRUxFQ1QgQ09VTlQoKikgRlJPTSB0YmwgV0hFUkUgdSA9ICcwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMCcgT1IKPGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7ICAg IHUgPSAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnOwo8YnI+Jmd0OyAmZ3Q7ICZn dDsmZ3Q7Jmd0OyZndDsKPGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IEVSUk9SOiAgWFgw MDA6IFNjYWxhckFycmF5T3BFeHByIGluZGV4IHF1YWwgZm91bmQgd2hlcmUgbm90IGFsbG93ZWQK PGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IExPQ0FUSU9OOiAgRXhlY0luZGV4QnVpbGRT Y2FuS2V5cywgbm9kZUluZGV4c2Nhbi5jOjE2MjUKPGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyZndDsm Z3Q7Cjxicj4mZ3Q7ICZndDsgJmd0OyZndDsmZ3Q7Jmd0Owo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7 Jmd0OyBJIGZvdW5kIG91dCB3aGF0IHRoZSBwcm9ibGVtIGlzIGluZGV4IHNjYW4gbWV0aG9kIHdh cyBub3QgZ2VuZXJhdGVkLiBXZQo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7Jmd0OyBuZWVkIHRvIGNo ZWNrIHRoaXMgZHVyaW5nIE9SIGNsYXVzZXMgZm9yIFNBT1AgdHJhbnNmb3JtYXRpb24uCjxicj4m Z3Q7ICZndDsgJmd0OyZndDsmZ3Q7Cjxicj4mZ3Q7ICZndDsgJmd0OyZndDsmZ3Q7IFRoZXJlIGlz IGEgcGF0Y2ggdG8gZml4IHRoaXMgcHJvYmxlbS4KPGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyBIaS4K PGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyBUaGFua3MgZm9yIHRoZSBxdWljayBmaXguCjxicj4mZ3Q7 ICZndDsgJmd0OyZndDsKPGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyBCdXQgSSB3b25kZXIgaWYgaXQg aXMgbm90IHBvc3NpYmxlIHRvIGF2b2lkIGFsbCBpZiB0aGUgaW5kZXggaXMgdXNlbGVzcz8KPGJy PiZndDsgJmd0OyAmZ3Q7Jmd0OyBNYXliZSBtb3ZpbmcgeW91ciBmaXggdG8gdGhlIGJlZ2lubmlu ZyBvZiB0aGUgZnVuY3Rpb24/Cjxicj4mZ3Q7ICZndDsgJmd0OyZndDsKPGJyPiZndDsgJmd0OyAm Z3Q7Jmd0OyBkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGgu PHdicj5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYwo8YnI+Jmd0OyAm Z3Q7ICZndDsmZ3Q7IGluZGV4IGQ4MjdmYzlmNGQuLjVlYTBiMjdkMDEgMTAwNjQ0Cjxicj4mZ3Q7 ICZndDsgJmd0OyZndDsgLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGgu Ywo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7ICsrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2luZHhwYXRoLmMKPGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyBAQCAtMzI0OCw2ICszMjQ4LDEwIEBA IG1hdGNoX29yY2xhdXNlX3RvX2luZGV4Y29sKFBsYW5uZXJJbmZvICpyb290LAo8YnI+Jmd0OyAm Z3Q7ICZndDsmZ3Q7ICAgIEFzc2VydChJc0Eob3JjbGF1c2UsIEJvb2xFeHByKSk7Cjxicj4mZ3Q7 ICZndDsgJmd0OyZndDsgICAgQXNzZXJ0KG9yY2xhdXNlLSZndDtib29sb3AgPT0gT1JfRVhQUik7 Cjxicj4mZ3Q7ICZndDsgJmd0OyZndDsKPGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyArIC8qIElnbm9y ZSBpbmRleCBpZiBpdCBkb2Vzbid0IHN1cHBvcnQgaW5kZXggc2NhbnMgKi8KPGJyPiZndDsgJmd0 OyAmZ3Q7Jmd0OyArIGlmKCFpbmRleC0mZ3Q7YW1zZWFyY2hhcnJheSkKPGJyPiZndDsgJmd0OyAm Z3Q7Jmd0OyArIHJldHVybiBOVUxMOwo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7ICsKPGJyPiZndDsg Jmd0OyAmZ3Q7Jmd0Owo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7IEFncmVlLiBJIGhhdmUgdXBkYXRl ZCB0aGUgcGF0Y2gKPGJyPiZndDsgJmd0OyAmZ3Q7Jmd0Owo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7 ICAgIC8qCjxicj4mZ3Q7ICZndDsgJmd0OyZndDsgICAgKiBUcnkgdG8gY29udmVydCBhIGxpc3Qg b2YgT1ItY2xhdXNlcyB0byBhIHNpbmdsZSBTQU9QIGV4cHJlc3Npb24uIEVhY2gKPGJyPiZndDsg Jmd0OyAmZ3Q7Jmd0OyAgICAqIE9SIGVudHJ5IG11c3QgYmUgaW4gdGhlIGZvcm06IChpbmRleGtl eSBvcGVyYXRvciBjb25zdGFudCkgb3IgKGNvbnN0YW50Cjxicj4mZ3Q7ICZndDsgJmd0OyZndDsK PGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyBUaGUgdGVzdCBidWc6Cjxicj4mZ3Q7ICZndDsgJmd0OyZn dDsgRVhQTEFJTiBTRUxFQ1QgQ09VTlQoKikgRlJPTSB0YmwgV0hFUkUgdSA9ICcwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc8d2JyPiBPUiB1ID0gJzExMTExMTExMTExMTExMTExMTEx MTExMTExMTExMTExJzsKPGJyPiZndDsgJmd0OyAmZ3Q7Jmd0OyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTgo8YnI+ Jmd0OyAmZ3Q7ICZndDsmZ3Q7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPHdicj4t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTx3YnI+LS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS08d2JyPi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPGJyPiZn dDsgJmd0OyAmZ3Q7Jmd0OyAgIEFnZ3JlZ2F0ZSAgKGNvc3Q9MTIuNDYuLjEyLjQ3IHJvd3M9MSB3 aWR0aD04KQo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7ICAgICAtJmd0OyAgQml0bWFwIEhlYXAgU2Nh biBvbiB0YmwgIChjb3N0PTIuMTQuLjEyLjQxIHJvd3M9MTggd2lkdGg9MCkKPGJyPiZndDsgJmd0 OyAmZ3Q7Jmd0OyAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKHUgPSAnMDAwMDAwMDAtMDAwMC0w MDAwLTAwMDAtMDAwMDAwMDAwMDAwJzx3YnI+Ojp1dWlkKSBPUiAodSA9ICcxMTExMTExMS0xMTEx LTExMTEtMTExMS0xMTExMTExMTExMTEnPHdicj46OnV1aWQpKQo8YnI+Jmd0OyAmZ3Q7ICZndDsm Z3Q7ICAgICAgICAgICAtJmd0OyAgQml0bWFwT3IgIChjb3N0PTIuMTQuLjIuMTQgcm93cz0xOCB3 aWR0aD0wKQo8YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7ICAgICAgICAgICAgICAgICAtJmd0OyAgQml0 bWFwIEluZGV4IFNjYW4gb24gaWR4ICAoY29zdD0wLjAwLi4xLjA3IHJvd3M9OSB3aWR0aD0wKQo8 YnI+Jmd0OyAmZ3Q7ICZndDsmZ3Q7ICAgICAgICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAo dSA9ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnPHdicj46OnV1aWQpCjxi cj4mZ3Q7ICZndDsgJmd0OyZndDsgICAgICAgICAgICAgICAgIC0mZ3Q7ICBCaXRtYXAgSW5kZXgg U2NhbiBvbiBpZHggIChjb3N0PTAuMDAuLjEuMDcgcm93cz05IHdpZHRoPTApCjxicj4mZ3Q7ICZn dDsgJmd0OyZndDsgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6ICh1ID0gJzExMTEx MTExLTExMTEtMTExMS0xMTExLTExMTExMTExMTExMSc8d2JyPjo6dXVpZCkKPGJyPiZndDsgJmd0 OyAmZ3Q7Jmd0OyAoOCByb3dzKQo8YnI+Jmd0OyAmZ3Q7ICZndDsgSSBzbGlnaHRseSByZXZpc2Vk IHRoZSBmaXggYW5kIGFkZGVkIHNpbWlsYXIgY2hlY2sgdG8KPGJyPiZndDsgJmd0OyAmZ3Q7IGdy b3VwX3NpbWlsYXJfb3JfYXJncygpLiAgQ291bGQgeW91LCBwbGVhc2UsIHJldmlldyB0aGF0IGJl Zm9yZQo8YnI+Jmd0OyAmZ3Q7ICZndDsgY29tbWl0Pwo8YnI+Jmd0OyAmZ3Q7ICZndDsKPGJyPiZn dDsgJmd0OyBJIGFncmVlIHdpdGggY2hhbmdlcy4gVGhhbmsgeW91IQo8YnI+Jmd0Owo8YnI+Jmd0 OyBBbmRyZWksIEFsZW5hLCB0aGFuayB5b3UgZm9yIHRoZSBmZWVkYmFjay4gUHVzaGVkIQo8YnI+ Cjxicj5JIHRoaW5rIHdlIHNob3VsZCBnaXZlIHNvbWUgbW9yZSBhdHRlbnRpb24gdG8gdGhlIHBh dGNoIGVuYWJsaW5nIE9SIHRvCjxicj5TQU9QIHRyYW5zZm9ybWF0aW9uIGZvciBqb2lucyAoZmly c3QgdGltZSBwb3N0ZWQgaW4gWzFdKS4gIEkgdGhpbmsgd2UKPGJyPnRyaWVkIHRvIG9ubHkgd29y ayB3aXRoIENvbnN0IGFuZCBQYXJhbSwgYmVjYXVzZSB3ZSB3ZXJlIHByZXZpb3VzbHkKPGJyPndv cmtpbmcgZHVyaW5nIHBhcnNlIHN0YWdlLiBTbywgYXQgdGhhdCBzdGFnZSBpZiB3ZSBoYXZlIHRo ZSBjbGF1c2UKPGJyPmxpa2UgImEueCA9IDEgT1IgYS54ID0gYi54IE9SIGIueCA9IDIiLCB0aGVu IHdlIGRvbid0IGtub3cgaWYgd2UKPGJyPnNob3VsZCB0cmFuc2Zvcm0gaXQgaW50byAiYS54ID0g QU5ZKDEsIGIueCkgT1IgYi54ID0gMiIgb3IgaW50byAiYS54Cjxicj49MSBPUiBiLnggPSBBTlko YS54LCAyKSIuIEJ1dCBpZiB3ZSBkbyB0aGUgdHJhbnNmb3JtYXRpb24gZHVyaW5nIHRoZQo8YnI+ aW5kZXggbWF0Y2hpbmcsIHdlIHdvdWxkIGFjdHVhbGx5IGJlIGFibGUgdG8gdHJ5IHRoZSBib3Ro IGFuZCBzZWxlY3QKPGJyPnRoZSBiZXN0Lgo8L2Jsb2NrcXVvdGU+PGRpdiBkaXI9ImF1dG8iPjxi cj48L2Rpdj48ZGl2IGRpcj0iYXV0byI+QnV0IHdoeSBub3Qg4oCcYS54ID0gQU5ZKDEsIGIueCkg T1IgYi54ID0gQU5ZKGEueCwgMinigJ0gPyBMb29rcyBzdHJhbmdlLCBidXQgY29ycmVjdCApKTwv ZGl2PjxkaXYgZGlyPSJhdXRvIj48YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1 b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7 cGFkZGluZy1sZWZ0OjFleDsiIGRpcj0iYXV0byI+PGJyPlRoZSByZXZpc2VkIHBhdGNoIGlzIGF0 dGFjaGVkLiAgTW9zdCBub3RhYmx5IGl0IHJldmlzZXMKPGJyPmdyb3VwX3NpbWlsYXJfb3JfYXJn cygpIHRvIGhhdmUgdGhlIHNhbWUgbm90aW9uIG9mIGNvbnN0LW5lc3MgYXMKPGJyPm90aGVycy4g IEluIHRoYXQgZnVuY3Rpb24gd2Ugc3BsaXQgcG90ZW50aWFsIGluZGV4IGtleSBhbmQgY29uc3Rh bnQKPGJyPmVhcmx5IHRvIHNhdmUgdGltZSBvbiBlbnVtZXJhdGluZyBhbGwgcG9zc2libGUgaW5k ZXgga2V5cy4gIEJ1dCBpdAo8YnI+YXBwZWFycyB0byBiZSBwb3NzaWJsZSB0byBzcGxpdCBieSBy ZWxpZHMgYml0bWFwc2V0czogaW5kZXgga2V5IHNob3VsZAo8YnI+dXNlIG91ciByZWxpZCwgd2hp bGUgY29uc3Qgc2hvdWxkbid0LiAgT3RoZXIgdGhhdCB0aGF0LCBjb21tZW50cywKPGJyPmNvbW1p dCBtZXNzYWdlIGFuZCBuYW1pbmcgYXJlIHJldmlzZWQuCjxicj4KPGJyPkxpbmtzLgo8YnI+MS4g aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS08d2JyPmlkL0NBUHBIZmR1OVFKJTNE R2J1YTNDVVVIMktLR184dXJha0pUZW40SkQ0N1BHaDl3V1AlM0RReFElNDBtYWlsLjx3YnI+Z21h aWwuY29tCjxicj4KPGJyPi0tLS0tLQo8YnI+UmVnYXJkcywKPGJyPkFsZXhhbmRlciBLb3JvdGtv dgo8YnI+U3VwYWJhc2UKPGJyPjwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj4=