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 1w7CeE-00542z-1y for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 13:27:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7CeB-003Piu-2O for pgsql-hackers@arkaria.postgresql.org; Mon, 30 Mar 2026 13:27:16 +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 1w7CeB-003Pil-0D for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 13:27:15 +0000 Received: from mail-qt1-x844.google.com ([2607:f8b0:4864:20::844]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7Ce8-00000001oCG-2vtb for pgsql-hackers@lists.postgresql.org; Mon, 30 Mar 2026 13:27:14 +0000 Received: by mail-qt1-x844.google.com with SMTP id d75a77b69052e-5091d71aa11so53679911cf.1 for ; Mon, 30 Mar 2026 06:27:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1774877231; x=1775482031; darn=lists.postgresql.org; h=autocrypt:subject:to:content-language:from:user-agent:mime-version :date:message-id:from:to:cc:subject:date:message-id:reply-to; bh=Lxqh+vLUExP7aPJXQBMHBRGgJQRDybIJiAPezY5iy0A=; b=BrybwSHuCjUzixVhw/H6z8G2h+Y4r0M9lFGbLey+ICLEylm2DgvkVaVqHIiqvYwRIi U3//2GmC8vk7qmRGBweRGK77ObEaH6+hVlq12dZaKDcGVZwwfcHB43XO4pQokLFyIl+I 9CiN8IfsJsUMYUYfp5slHCtPg8JfBPvoik/AiujTeG/5EH1eZvKy9SDXREVHtv432PRU McLWVHpZz6uUAQsF5/CIbld7TfbDY3avQ+P+clPOT12xcqOqgM/oGGhGxMXgPEVMSDGH 2YnCz1tNefkFKH+0RhUJXiW6sldYTY9dHDPdnr4nsRKk+Fs4+/oXfnluIwsp97AhEkyX xG+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774877231; x=1775482031; h=autocrypt:subject:to:content-language:from:user-agent:mime-version :date:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Lxqh+vLUExP7aPJXQBMHBRGgJQRDybIJiAPezY5iy0A=; b=BoWKPTxB1KIFhIVCbY9KCEDkzPrqLfME7Us9jDGBghO+G0kO6njE+xJi52ZJ/6M2Ul m3nF6/3hKOK+RHhYnZHelv3SJp/FNy5T5GjkeZYbbCicpQdtXicsd466Vt8hVualcZoU GG2t1QN+RT2RTNfVjfmQ5lER9W9ooln05qzwkG4jUFwPOxb26kEGz2gIuEDajzBG8M0H dXS+MK/7J9nqAi9XVX2U9w4lEUsx9dbKsRe9M9eZz3l0V/wKz0d5e3kaS9JdMoT7iZ2B Y3F8zZlgCcQntwE3SfgcKxZYQIbMKYShazOCw/8FWg39Qx2SUReEA96PJQYfh/PcIOlq 0XrA== X-Gm-Message-State: AOJu0YzjuUnSATobyThvAhFdSpVdgZq6xI6FauKOCAkdmMQvy2w229FM uoCx7S4hon9cXHZYpOYC28m6xel0WFIr3nFKuQq80iDfT/z50ZVMxiC9/6lUQh3+12yQL+4V92B 1gks7X941QA== X-Gm-Gg: ATEYQzxm+JWrLKI7+uTpJsH+BZ1aiszYAWINiXWy33+4zQdsAXaNT5bnnR0tHYiQn5e LOCVSYuWzzpC2xqoN5XRgISA+MoZ3aVsOApI85v0GMeyu1JutsV40Q1sew9mYyZNBEISye8w1W2 1MJlaR4EK9GJBG7wtr6+1ygYP6aklVdB8MvVzkzoArrJh/h2XwFVzlH0EKJ092SpgTuSPCwRdJh HWPR6NeTraTUHSsX4+TcOJlHtQr5lTD9HRzIzl2heU9umveA+axKQSmCkF1FmRlNMUPn8OXyFhs xuIdvPZ5Lg7ulLRBlVcJ08G+0uRP+8lE7kMnQkX0HWva56M75/ZOP7caVVLubdazM9acnUp0Jdq MhQk5o2t8AXDMxZpJWJopuixUQMiRavzlzuVVNnIpV6In0QcYHKv9PxMZFURTM3CNLWexID3IQa zQ6VstdSqxS9JRVEiEd6RSg+rbdnRkgQ== X-Received: by 2002:a05:622a:1314:b0:501:3b85:272c with SMTP id d75a77b69052e-50ba4ea291dmr143206271cf.31.1774877230679; Mon, 30 Mar 2026 06:27:10 -0700 (PDT) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id d75a77b69052e-50bb2e1121fsm61402481cf.21.2026.03.30.06.27.10 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 30 Mar 2026 06:27:10 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------sLURw8E7ZV7sYhMbCqhYNDP4" Message-ID: Date: Mon, 30 Mar 2026 09:27:08 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Andrew Dunstan Content-Language: en-US To: PostgreSQL Hackers Subject: scale parallel_tuple_cost by tuple width Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAlwQTAQgAQQIbAwIX gAIZAQULCQgHAwUVCgkICwUWAgMBAAIeBRYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNGd BQkdEO8nAAoJEJn6f8tZ/DuBq74H/jkTR4Zi3stbw+xC7v2u3QozssK7MYPL2AsVfh7OealS h182fiWXpfvmmAB7WUHbhk9GC2RAOnHI/2d2jgKaMLAHsGYOT0YopTVIwRY43fCw/mK67yxc wmDcX+zyKfLaivNbf5A7QPLNwda98bEAMSJ8Sn652Uc6cA8t3uKGsVzbRBQOoYzjgvBCfSrE 9ql3PDNg0l4BfAqabd2f70ZUm9VAMEPrgv/v2xI7M2XiL4g5BVmqLCOwxLM8RMCotCuoweUr VO43DeBCIDwLxotMJKvGWDjBzQYlU1NPUAtNcz/gN9ITUe1VUGjyvGj4u1lxBOcQQUw7l1+T 5moZ4iZxXzvOwE0ETspYWQEIANGc4zQULOxhbqO2dyD51YhqCNRmm9oKWaqf+wmW4tpDe/VV cxAnNizd4LWCHfzpb5cHAtGkOPePMfzWVf6nvdF7d3eglbtf59+zG7O7llV0xSSoFiieQBsr GvqDInXYX/4mRRXMtyhM353/tixC9RWLs1oofyYmCPPXXY7h9R7en3B8BoVrRFcdzlIY/NFN hFGW/9dkEiGjgna2Rk6e15kln4ZvFBWUg23p93w/pqXcxY6+k/8TEk+C4R+M6w7o2PLGOjdZ +kPiUcw5H85zf/yZJwQXzisXaNduwWB6Vads9YC9dj6kPR1c4VGRqAaYL++LAEOqrlvm2Tvq QqZRtnEAEQEAAcLAfAQYAQgAJgIbDBYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNI2BQkd EODdAAoJEJn6f8tZ/DuBfw0IAKTsfD40teP/pp+bsLLMSxPXUYrrprTj7WFB5v61p6dkpSr/ qXmMlyahdxQFaPmfVgVirB1Vk/kHiWNnnGjfUV9nB2Zg9LI0Xb9/ts3LsUiRWXzG3tkMY6XL vsVOxW4XFRND9l2q+WW93aZ1DZl+fqWfYgMvsusFRhmGFOKTRfKPta2Pkv+AhA24N4+PrR5p bU4k2MO8PAGiK8eaYKGFG1bHKuAvoDoF7WXJ3FHxuWqLnKEt4dfOLm5pAe3zq1Lt6q8azT9i QWGpSAK5vQUWQHBHpiDjdPeqKZ6HiAXIIKfSmb+jrvXBqoP+D6/K7rUjG2aXiRtTIAXms9sm VRu7cmw= List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------sLURw8E7ZV7sYhMbCqhYNDP4 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit While investigating a performance issue, I found that it was extremely difficult to get a parallel plan in some cases due to the fixed parallel_tuple_cost. But this cost is not really fixed - it's going to be larger for larger tuples. So this proposal adjusts the cost used according to how large we expect the results to be. The result is that in the common case where, say, you're getting a group id and some aggregates, a parallel plan is more likely to be chosen. By contrast, queries that generate very wide results will be less likely to choose parallel plans. The formula chosen does have a fixed cost piece built into it, which accounts for the shm_mq_sendv() and shm_mq_receive() synchronization that occurs regardless of width. The patch itself is pretty simple. Also attached is a benchmark report that I had claude create. Its main result shows a speedup of about 2.7x. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com --------------sLURw8E7ZV7sYhMbCqhYNDP4 Content-Type: text/x-patch; charset=UTF-8; name="0001-Scale-parallel_tuple_cost-by-tuple-width-at-Gather-n.patch" Content-Disposition: attachment; filename*0="0001-Scale-parallel_tuple_cost-by-tuple-width-at-Gather-n.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0Yzk0NGQ0ZTdmNGJiYWU3YmRjY2QxOTQ5MDc0ZTQxNGE3YjU2YjJlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5l Lm5ldD4KRGF0ZTogTW9uLCAzMCBNYXIgMjAyNiAwODowMDoyMyAtMDQwMApTdWJqZWN0OiBT Y2FsZSBwYXJhbGxlbF90dXBsZV9jb3N0IGJ5IHR1cGxlIHdpZHRoIGF0IEdhdGhlciBub2Rl cwoKVGhlIHBhcmFsbGVsX3R1cGxlX2Nvc3QgR1VDIGFwcGxpZXMgYSBmbGF0IHBlci10dXBs ZSBwZW5hbHR5IHRvIGFsbApHYXRoZXIgYW5kIEdhdGhlciBNZXJnZSBub2RlcywgcmVnYXJk bGVzcyBvZiBob3cgd2lkZSBvciBuYXJyb3cgdGhlCnR1cGxlcyBwYXNzaW5nIHRocm91Z2gg dGhlIHNoYXJlZC1tZW1vcnkgcXVldWUgYWN0dWFsbHkgYXJlLiAgVGhpcwpvdmVyY2hhcmdl cyBmb3IgbmFycm93IHR1cGxlcyAoc3VjaCBhcyBwYXJ0aWFsIGFnZ3JlZ2F0ZSByZXN1bHRz IHdpdGgKYSBmZXcgaW50ZWdlciBjb2x1bW5zKSBhbmQgdW5kZXJjaGFyZ2VzIGZvciB3aWRl IHR1cGxlcy4KClRoZSBwaHlzaWNhbCBjb3N0IG9mIHRoZSB0dXBsZSBxdWV1ZSBpcyBkb21p bmF0ZWQgYnkgbWVtY3B5LCB3aGljaCBpcwpwcm9wb3J0aW9uYWwgdG8gdHVwbGUgd2lkdGgu ICBJbnRyb2R1Y2UgYSB3aWR0aC1iYXNlZCBzY2FsaW5nIGZhY3RvcgpzbyB0aGF0IHBhcmFs bGVsX3R1cGxlX2Nvc3QgcmVwcmVzZW50cyB0aGUgY29zdCBhdCBhIHJlZmVyZW5jZSB3aWR0 aApvZiAxMDAgYnl0ZXMsIHdpdGggYSAxMCUgZml4ZWQgZmxvb3IgZm9yIGlycmVkdWNpYmxl IHBlci10dXBsZSBxdWV1ZQpzeW5jaHJvbml6YXRpb24gb3ZlcmhlYWQuCgpGb3IgYSBHYXRo ZXIgcGFzc2luZyAxMi1ieXRlIHBhcnRpYWwgYWdncmVnYXRlIHR1cGxlcywgdGhlIGVmZmVj dGl2ZQpwZXItdHVwbGUgY29zdCBkcm9wcyBmcm9tIDAuMSB0byB+MC4wMiwgd2hpY2ggbGV0 cyB0aGUgcGxhbm5lciBjaG9vc2UKcGFyYWxsZWwgcGxhbnMgZm9yIGFnZ3JlZ2F0aW9uLWhl YXZ5IHF1ZXJpZXMuCgpUdXBsZXMgYXQgdGhlIHJlZmVyZW5jZSB3aWR0aCAoMTAwIGJ5dGVz KSBjb3N0IHRoZSBzYW1lIGFzIGJlZm9yZS4KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9jb3N0c2l6ZS5jIHwgMjAgKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgfCAgNCArKystCiBzcmMvaW5jbHVkZS9vcHRp bWl6ZXIvY29zdC5oICAgICAgICAgIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKysrCiAz IGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKaW5kZXggMWM1NzVlNTZmZjYuLjY5 NWNkZWQ5MTBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0 c2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKQEAg LTExLDcgKzExLDkgQEAKICAqCWNwdV90dXBsZV9jb3N0CQlDb3N0IG9mIHR5cGljYWwgQ1BV IHRpbWUgdG8gcHJvY2VzcyBhIHR1cGxlCiAgKgljcHVfaW5kZXhfdHVwbGVfY29zdCAgQ29z dCBvZiB0eXBpY2FsIENQVSB0aW1lIHRvIHByb2Nlc3MgYW4gaW5kZXggdHVwbGUKICAqCWNw dV9vcGVyYXRvcl9jb3N0CUNvc3Qgb2YgQ1BVIHRpbWUgdG8gZXhlY3V0ZSBhbiBvcGVyYXRv ciBvciBmdW5jdGlvbgotICoJcGFyYWxsZWxfdHVwbGVfY29zdCBDb3N0IG9mIENQVSB0aW1l IHRvIHBhc3MgYSB0dXBsZSBmcm9tIHdvcmtlciB0byBsZWFkZXIgYmFja2VuZAorICoJcGFy YWxsZWxfdHVwbGVfY29zdCBDb3N0IG9mIENQVSB0aW1lIHRvIHBhc3MgYSB0dXBsZSBmcm9t IHdvcmtlciB0byBsZWFkZXIKKyAqCQkJCQkJYmFja2VuZC4gIFNjYWxlZCBieSB0dXBsZSB3 aWR0aCByZWxhdGl2ZSB0byBhIHJlZmVyZW5jZQorICoJCQkJCQl3aWR0aCAoc2VlIHdpZHRo X2FkanVzdGVkX3BhcmFsbGVsX3R1cGxlX2Nvc3QpLgogICoJcGFyYWxsZWxfc2V0dXBfY29z dCBDb3N0IG9mIHNldHRpbmcgdXAgc2hhcmVkIG1lbW9yeSBmb3IgcGFyYWxsZWxpc20KICAq CiAgKiBXZSBleHBlY3QgdGhhdCB0aGUga2VybmVsIHdpbGwgdHlwaWNhbGx5IGRvIHNvbWUg YW1vdW50IG9mIHJlYWQtYWhlYWQKQEAgLTQ0Niw5ICs0NDgsMTAgQEAgY29zdF9nYXRoZXIo R2F0aGVyUGF0aCAqcGF0aCwgUGxhbm5lckluZm8gKnJvb3QsCgogCXJ1bl9jb3N0ID0gcGF0 aC0+c3VicGF0aC0+dG90YWxfY29zdCAtIHBhdGgtPnN1YnBhdGgtPnN0YXJ0dXBfY29zdDsK Ci0JLyogUGFyYWxsZWwgc2V0dXAgYW5kIGNvbW11bmljYXRpb24gY29zdC4gKi8KKwkvKiBQ YXJhbGxlbCBzZXR1cCBhbmQgY29tbXVuaWNhdGlvbiBjb3N0LCBzY2FsZWQgYnkgdHVwbGUg d2lkdGguICovCiAJc3RhcnR1cF9jb3N0ICs9IHBhcmFsbGVsX3NldHVwX2Nvc3Q7Ci0JcnVu X2Nvc3QgKz0gcGFyYWxsZWxfdHVwbGVfY29zdCAqIHBhdGgtPnBhdGgucm93czsKKwlydW5f Y29zdCArPSB3aWR0aF9hZGp1c3RlZF9wYXJhbGxlbF90dXBsZV9jb3N0KHBhdGgtPnBhdGgu cGF0aHRhcmdldC0+d2lkdGgpICoKKwkJcGF0aC0+cGF0aC5yb3dzOwoKIAlwYXRoLT5wYXRo LmRpc2FibGVkX25vZGVzID0gcGF0aC0+c3VicGF0aC0+ZGlzYWJsZWRfbm9kZXMKIAkJKyAo KHJlbC0+cGdzX21hc2sgJiBQR1NfR0FUSEVSKSAhPSAwID8gMCA6IDEpOwpAQCAtNTA5LDEz ICs1MTIsMTQgQEAgY29zdF9nYXRoZXJfbWVyZ2UoR2F0aGVyTWVyZ2VQYXRoICpwYXRoLCBQ bGFubmVySW5mbyAqcm9vdCwKIAlydW5fY29zdCArPSBjcHVfb3BlcmF0b3JfY29zdCAqIHBh dGgtPnBhdGgucm93czsKCiAJLyoKLQkgKiBQYXJhbGxlbCBzZXR1cCBhbmQgY29tbXVuaWNh dGlvbiBjb3N0LiAgU2luY2UgR2F0aGVyIE1lcmdlLCB1bmxpa2UKLQkgKiBHYXRoZXIsIHJl cXVpcmVzIHVzIHRvIGJsb2NrIHVudGlsIGEgdHVwbGUgaXMgYXZhaWxhYmxlIGZyb20gZXZl cnkKLQkgKiB3b3JrZXIsIHdlIGJ1bXAgdGhlIElQQyBjb3N0IHVwIGEgbGl0dGxlIGJpdCBh cyBjb21wYXJlZCB3aXRoIEdhdGhlci4KLQkgKiBGb3IgbGFjayBvZiBhIGJldHRlciBpZGVh LCBjaGFyZ2UgYW4gZXh0cmEgNSUuCisJICogUGFyYWxsZWwgc2V0dXAgYW5kIGNvbW11bmlj YXRpb24gY29zdCwgc2NhbGVkIGJ5IHR1cGxlIHdpZHRoLiAgU2luY2UKKwkgKiBHYXRoZXIg TWVyZ2UsIHVubGlrZSBHYXRoZXIsIHJlcXVpcmVzIHVzIHRvIGJsb2NrIHVudGlsIGEgdHVw bGUgaXMKKwkgKiBhdmFpbGFibGUgZnJvbSBldmVyeSB3b3JrZXIsIHdlIGJ1bXAgdGhlIElQ QyBjb3N0IHVwIGEgbGl0dGxlIGJpdCBhcworCSAqIGNvbXBhcmVkIHdpdGggR2F0aGVyLiAg Rm9yIGxhY2sgb2YgYSBiZXR0ZXIgaWRlYSwgY2hhcmdlIGFuIGV4dHJhIDUlLgogCSAqLwog CXN0YXJ0dXBfY29zdCArPSBwYXJhbGxlbF9zZXR1cF9jb3N0OwotCXJ1bl9jb3N0ICs9IHBh cmFsbGVsX3R1cGxlX2Nvc3QgKiBwYXRoLT5wYXRoLnJvd3MgKiAxLjA1OworCXJ1bl9jb3N0 ICs9IHdpZHRoX2FkanVzdGVkX3BhcmFsbGVsX3R1cGxlX2Nvc3QocGF0aC0+cGF0aC5wYXRo dGFyZ2V0LT53aWR0aCkgKgorCQlwYXRoLT5wYXRoLnJvd3MgKiAxLjA1OwoKIAlwYXRoLT5w YXRoLmRpc2FibGVkX25vZGVzID0gcGF0aC0+c3VicGF0aC0+ZGlzYWJsZWRfbm9kZXMKIAkJ KyAoKHJlbC0+cGdzX21hc2sgJiBQR1NfR0FUSEVSX01FUkdFKSAhPSAwID8gMCA6IDEpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IGQxOTgwMGFkNmE1Li44 OGQwM2VjZmI0ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAt NTgwLDcgKzU4MCw5IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBj aGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCQlnYXRoZXItPnBsYW4u c3RhcnR1cF9jb3N0ID0gdG9wX3BsYW4tPnN0YXJ0dXBfY29zdCArCiAJCQlwYXJhbGxlbF9z ZXR1cF9jb3N0OwogCQlnYXRoZXItPnBsYW4udG90YWxfY29zdCA9IHRvcF9wbGFuLT50b3Rh bF9jb3N0ICsKLQkJCXBhcmFsbGVsX3NldHVwX2Nvc3QgKyBwYXJhbGxlbF90dXBsZV9jb3N0 ICogdG9wX3BsYW4tPnBsYW5fcm93czsKKwkJCXBhcmFsbGVsX3NldHVwX2Nvc3QgKworCQkJ d2lkdGhfYWRqdXN0ZWRfcGFyYWxsZWxfdHVwbGVfY29zdCh0b3BfcGxhbi0+cGxhbl93aWR0 aCkgKgorCQkJdG9wX3BsYW4tPnBsYW5fcm93czsKIAkJZ2F0aGVyLT5wbGFuLnBsYW5fcm93 cyA9IHRvcF9wbGFuLT5wbGFuX3Jvd3M7CiAJCWdhdGhlci0+cGxhbi5wbGFuX3dpZHRoID0g dG9wX3BsYW4tPnBsYW5fd2lkdGg7CiAJCWdhdGhlci0+cGxhbi5wYXJhbGxlbF9hd2FyZSA9 IGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL2Nvc3QuaCBiL3Ny Yy9pbmNsdWRlL29wdGltaXplci9jb3N0LmgKaW5kZXggZjJmZDVkMzE1MDcuLmQ3OTk3Nzc5 YjNlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvY29zdC5oCisrKyBiL3Ny Yy9pbmNsdWRlL29wdGltaXplci9jb3N0LmgKQEAgLTE3NSw2ICsxNzUsMzAgQEAgZXh0ZXJu IHZvaWQgaW5pdGlhbF9jb3N0X2hhc2hqb2luKFBsYW5uZXJJbmZvICpyb290LAogZXh0ZXJu IHZvaWQgZmluYWxfY29zdF9oYXNoam9pbihQbGFubmVySW5mbyAqcm9vdCwgSGFzaFBhdGgg KnBhdGgsCiAJCQkJCQkJCUpvaW5Db3N0V29ya3NwYWNlICp3b3Jrc3BhY2UsCiAJCQkJCQkJ CUpvaW5QYXRoRXh0cmFEYXRhICpleHRyYSk7CisKKy8qCisgKiBXaWR0aC1hZGp1c3RlZCBw YXJhbGxlbCB0dXBsZSBjb3N0LgorICoKKyAqIFRoZSBjb3N0IG9mIHBhc3NpbmcgYSB0dXBs ZSB0aHJvdWdoIHRoZSBzaGFyZWQtbWVtb3J5IHR1cGxlIHF1ZXVlIGhhcyBhCisgKiBmaXhl ZCBjb21wb25lbnQgKHF1ZXVlIHN5bmNocm9uaXphdGlvbiwgc2xvdCBvcGVyYXRpb25zKSBh bmQgYSB2YXJpYWJsZQorICogY29tcG9uZW50IHByb3BvcnRpb25hbCB0byB0dXBsZSB3aWR0 aCAobWVtY3B5IGludG8vb3V0IG9mIHRoZSByaW5nIGJ1ZmZlcikuCisgKiBwYXJhbGxlbF90 dXBsZV9jb3N0IGlzIGNhbGlicmF0ZWQgZm9yIFBBUkFMTEVMX1RVUExFX0NPU1RfUkVGX1dJ RFRIIGJ5dGVzOworICogd2Ugc2NhbGUgcHJvcG9ydGlvbmFsbHkgc28gbmFycm93IHR1cGxl cyAoZS5nLiBwYXJ0aWFsIGFnZ3JlZ2F0ZSByZXN1bHRzKQorICogYXJlIGNoZWFwZXIgYW5k IHdpZGUgdHVwbGVzIGFyZSBtb3JlIGV4cGVuc2l2ZS4KKyAqCisgKiBQQVJBTExFTF9UVVBM RV9DT1NUX0ZJWEVEX0ZSQUMgaXMgdGhlIGlycmVkdWNpYmxlIHBlci10dXBsZSBvdmVyaGVh ZAorICogKHF1ZXVlIHN5bmNocm9uaXphdGlvbikgYXMgYSBmcmFjdGlvbiBvZiB0aGUgdG90 YWwgY29zdCBhdCB0aGUgcmVmZXJlbmNlCisgKiB3aWR0aC4KKyAqLworI2RlZmluZSBQQVJB TExFTF9UVVBMRV9DT1NUX1JFRl9XSURUSAkxMDAgLyogYnl0ZXMgKi8KKyNkZWZpbmUgUEFS QUxMRUxfVFVQTEVfQ09TVF9GSVhFRF9GUkFDCTAuMTAJLyogZml4ZWQgb3ZlcmhlYWQgZnJh Y3Rpb24gKi8KKworI2RlZmluZSB3aWR0aF9hZGp1c3RlZF9wYXJhbGxlbF90dXBsZV9jb3N0 KHdpZHRoKSBcCisJKHBhcmFsbGVsX3R1cGxlX2Nvc3QgKiBcCisJIChQQVJBTExFTF9UVVBM RV9DT1NUX0ZJWEVEX0ZSQUMgKyBcCisJICAoMS4wIC0gUEFSQUxMRUxfVFVQTEVfQ09TVF9G SVhFRF9GUkFDKSAqIFwKKwkgIChkb3VibGUpIE1heCgod2lkdGgpLCAxKSAvIFBBUkFMTEVM X1RVUExFX0NPU1RfUkVGX1dJRFRIKSkKKwogZXh0ZXJuIHZvaWQgY29zdF9nYXRoZXIoR2F0 aGVyUGF0aCAqcGF0aCwgUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQlSZWxPcHRJbmZvICpy ZWwsIFBhcmFtUGF0aEluZm8gKnBhcmFtX2luZm8sIGRvdWJsZSAqcm93cyk7CiBleHRlcm4g dm9pZCBjb3N0X2dhdGhlcl9tZXJnZShHYXRoZXJNZXJnZVBhdGggKnBhdGgsIFBsYW5uZXJJ bmZvICpyb290LAotLQoyLjQzLjAK --------------sLURw8E7ZV7sYhMbCqhYNDP4 Content-Type: text/plain; charset=UTF-8; name="parallel-tuple-cost-benchmark-2026-03-30.txt" Content-Disposition: attachment; filename="parallel-tuple-cost-benchmark-2026-03-30.txt" Content-Transfer-Encoding: base64 QmVuY2htYXJrOiBXaWR0aC1BZGp1c3RlZCBwYXJhbGxlbF90dXBsZV9jb3N0Cj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGltZXN0YW1wOiAyMDI2 LTAzLTMwVDEyOjE5OjAwWgpQYXRjaDogMDAwMS1TY2FsZS1wYXJhbGxlbF90dXBsZV9jb3N0 LWJ5LXR1cGxlLXdpZHRoLWF0LUdhdGhlci1uLnBhdGNoCkJhc2UgY29tbWl0OiAwMWQ1OGQ3 ZTNmZiAoUG9zdGdyZVNRTCAxOWRldmVsKQoKSGFyZHdhcmUKLS0tLS0tLS0KQXJjaGl0ZWN0 dXJlOiBhYXJjaDY0IChBUk02NCkKQ1BVczogICAgICAgICA2ClJBTTogICAgICAgICAgMTEg R0IKRGlzazogICAgICAgICBTU0QKClBvc3RncmVTUUwgQ29uZmlndXJhdGlvbgotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0Kc2hhcmVkX2J1ZmZlcnM6ICAgICAgICAgICAgICAgICAgMkdC CndvcmtfbWVtOiAgICAgICAgICAgICAgICAgICAgICAgIDMyTUIKbWF4X3BhcmFsbGVsX3dv cmtlcnNfcGVyX2dhdGhlcjogNAptYXhfcGFyYWxsZWxfd29ya2VyczogICAgICAgICAgICA4 CnBhcmFsbGVsX3R1cGxlX2Nvc3Q6ICAgICAgICAgICAgIDAuMSAoZGVmYXVsdCkKaW9fbWV0 aG9kOiAgICAgICAgICAgICAgICAgICAgICAgc3luYwpCdWlsZCBmbGFnczogICAgICAgICAg ICAgICAgICAgICAtRGNhc3NlcnQ9ZmFsc2UgLURiX25kZWJ1Zz10cnVlIC1EYnVpbGR0eXBl PWRlYnVnb3B0aW1pemVkCgoKT3ZlcnZpZXcKLS0tLS0tLS0KVGhlIHBhcmFsbGVsX3R1cGxl X2Nvc3QgR1VDIGFwcGxpZXMgYSBmbGF0IHBlci10dXBsZSBwZW5hbHR5IHRvIEdhdGhlcgph bmQgR2F0aGVyIE1lcmdlIG5vZGVzIHJlZ2FyZGxlc3Mgb2YgaG93IHdpZGUgdGhlIHR1cGxl cyBhcmUuICBGb3IKcXVlcmllcyB3aGVyZSBwYXJ0aWFsIGFnZ3JlZ2F0ZSByZXN1bHRzIHBh c3MgdGhyb3VnaCB0aGUgdHVwbGUgcXVldWUsCnRoZXNlIHR1cGxlcyBhcmUgdHlwaWNhbGx5 IHZlcnkgbmFycm93ICg4LTUyIGJ5dGVzKSwgYnV0IGFyZSBjaGFyZ2VkIHRoZQpzYW1lIDAu MS90dXBsZSBhcyB3aWRlIHJvd3MuICBUaGlzIG92ZXJjaGFyZ2VzIG5hcnJvdy10dXBsZSBH YXRoZXJzIGFuZApjYW4gY2F1c2UgdGhlIHBsYW5uZXIgdG8gcmVqZWN0IHBhcmFsbGVsIHBs YW5zIHRoYXQgYXJlIDItM3ggZmFzdGVyLgoKVGhlIHBhdGNoIHNjYWxlcyBwYXJhbGxlbF90 dXBsZV9jb3N0IGJ5IHR1cGxlIHdpZHRoIHJlbGF0aXZlIHRvIGEKMTAwLWJ5dGUgcmVmZXJl bmNlLCB3aXRoIGEgMTAlIGZpeGVkIGZsb29yIGZvciBpcnJlZHVjaWJsZSBxdWV1ZQpzeW5j aHJvbml6YXRpb24gb3ZlcmhlYWQ6CgogICAgZWZmZWN0aXZlX2Nvc3QgPSBwYXJhbGxlbF90 dXBsZV9jb3N0ICoKICAgICAgICAoMC4xMCArIDAuOTAgKiBtYXgod2lkdGgsIDEpIC8gMTAw KQoKV2lkdGggMTIgYnl0ZXMgIC0+IGZhY3RvciAwLjIwOCAgLT4gZWZmZWN0aXZlIGNvc3Qg MC4wMjEvdHVwbGUKV2lkdGggNTIgYnl0ZXMgIC0+IGZhY3RvciAwLjU2OCAgLT4gZWZmZWN0 aXZlIGNvc3QgMC4wNTcvdHVwbGUKV2lkdGggMTAwIGJ5dGVzIC0+IGZhY3RvciAxLjAwMCAg LT4gZWZmZWN0aXZlIGNvc3QgMC4xMDAvdHVwbGUgKHVuY2hhbmdlZCkKV2lkdGggMTQ4IGJ5 dGVzIC0+IGZhY3RvciAxLjQzMiAgLT4gZWZmZWN0aXZlIGNvc3QgMC4xNDMvdHVwbGUKCgpC ZW5jaG1hcmsgMTogTmFycm93LU91dHB1dCBBZ2dyZWdhdGUgKFBsYW4gRmxpcDogU2VyaWFs IC0+IFBhcmFsbGVsKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKVGFibGUgc2V0dXA6CgogICAgQ1JFQVRF IFRBQkxFIGJlbmNoX3dpZGUgQVMKICAgIFNFTEVDVAogICAgICBpIEFTIGlkLAogICAgICAo aSAlIDUwMDAwMDApIEFTIGdyb3VwX2lkLAogICAgICByYW5kb20oKSAqIDEwMDAgQVMgdmFs MSwKICAgICAgcmFuZG9tKCkgKiAxMDAwIEFTIHZhbDIsCiAgICAgIHJlcGVhdCgneCcsIDIw MCkgQVMgcGFkZGluZwogICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMDAwMDApIGk7 CiAgICBWQUNVVU0gQU5BTFlaRSBiZW5jaF93aWRlOwoKICA1ME0gcm93cywgMTIgR0Igb24g ZGlzay4KICA1IGNvbHVtbnM6IGlkIGludDQgKDQgYnl0ZXMpLCBncm91cF9pZCBpbnQ0ICg0 IGJ5dGVzKSwKICAgICAgICAgICAgIHZhbDEgZmxvYXQ4ICg4IGJ5dGVzKSwgdmFsMiBmbG9h dDggKDggYnl0ZXMpLAogICAgICAgICAgICAgcGFkZGluZyB0ZXh0IChhdmcgMjA0IGJ5dGVz KS4KICA1TSBkaXN0aW5jdCBncm91cF9pZCB2YWx1ZXMgKDEwIHJvd3MgcGVyIGdyb3VwKS4K ICBTb3VyY2Ugcm93cyBhcmUgd2lkZSAoYXZnIH4yMjggYnl0ZXMpIGJ1dCB0aGUgYWdncmVn YXRlIG91dHB1dCBpcwogIG5hcnJvdzogZ3JvdXBfaWQgKyAzIGFnZ3JlZ2F0ZSBhY2N1bXVs YXRvcnMgPSB3aWR0aCA1MiBhdCBHYXRoZXIuCgpRdWVyeToKCiAgICBTRUxFQ1QgZ3JvdXBf aWQsIGNvdW50KCopLCBzdW0odmFsMSksIGF2Zyh2YWwyKQogICAgRlJPTSBiZW5jaF93aWRl CiAgICBHUk9VUCBCWSBncm91cF9pZAogICAgT1JERVIgQlkgY291bnQoKikgREVTQwogICAg TElNSVQgMTA7CgpXaXRoIDQgd29ya2VycyBhbmQgNU0gZ3JvdXBzLCB0aGlzIHByb2R1Y2Vz IH4yMi41TSBwYXJ0aWFsIGFnZ3JlZ2F0ZQpyb3dzICh3aWR0aCA1MikgdGhyb3VnaCBHYXRo ZXIgTWVyZ2UuICBUaGUgR2F0aGVyIE1lcmdlIGNvc3QKY29udHJpYnV0aW9uIGlzIHRoZSBk ZWNpc2l2ZSBmYWN0b3I6CgogIFVucGF0Y2hlZDogMC4xICogMjIuNU0gICAgICAgICA9IDIs MjUwLDAwMAogIFBhdGNoZWQ6ICAgMC4xICogMC41NjggKiAyMi41TSA9IDEsMjc4LDAwMCAg KDQzJSBsZXNzKQoKUmVzdWx0czoKCiAgVU5QQVRDSEVEIOKAlCBwbGFubmVyIGNob29zZXMg c2VyaWFsIGRlc3BpdGUgcGFyYWxsZWwgYmVpbmcgYXZhaWxhYmxlOgoKICAgIExpbWl0ICAo Y29zdD02NzM0MDQxLi42NzM0MDQxIHJvd3M9MTAgd2lkdGg9MjgpCiAgICAgIC0+ICBTb3J0 ICAoY29zdD02NzM0MDQxLi42NzQ4MDc4IHJvd3M9NTYxNDY2NiB3aWR0aD0yOCkKICAgICAg ICAgICAgLT4gIEhhc2hBZ2dyZWdhdGUgIChjb3N0PTU5NTY2MDAuLjY2MTI3MTAgcm93cz01 NjE0NjY2IHdpZHRoPTI4KQogICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IGdyb3VwX2lk CiAgICAgICAgICAgICAgICAgIFBsYW5uZWQgUGFydGl0aW9uczogMzIKICAgICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIGJlbmNoX3dpZGUgIChjb3N0PTAuLjIxMTI5MTkgcm93 cz00OTk5OTEwMCB3aWR0aD0yMCkKCiAgICBFeGVjdXRpb24gdGltZXM6IDMwNzgzbXMsIDI3 Mzg2bXMsIDI0NTU1bXMsIDI0ODI2bXMKICAgIE1lZGlhbjogfjI2cwoKICBQQVRDSEVEIOKA lCBwbGFubmVyIG5vdyBjb3JyZWN0bHkgY2hvb3NlcyBwYXJhbGxlbDoKCiAgICBMaW1pdCAg KGNvc3Q9NTc1MzUxOC4uNTc1MzUxOCByb3dzPTEwIHdpZHRoPTI4KQogICAgICAtPiAgU29y dCAgKGNvc3Q9NTc1MzUxOC4uNTc2NzU1NSByb3dzPTU2MTQ2NjYgd2lkdGg9MjgpCiAgICAg ICAgICAgIC0+ICBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZSAgKGNvc3Q9MzQ2ODcwNS4uNTYz MjE4NyByb3dzPTU2MTQ2NjYgd2lkdGg9MjgpCiAgICAgICAgICAgICAgICAgIC0+ICBHYXRo ZXIgTWVyZ2UgIChjb3N0PTM0Njg3MDUuLjUzMzc0MTcgcm93cz0yMjQ1ODY2NCB3aWR0aD01 MikKICAgICAgICAgICAgICAgICAgICAgICAgV29ya2VycyBQbGFubmVkOiA0CiAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlICAoY29zdD0zNDY3 NzA1Li4zNjgwMDk5IHJvd3M9NTYxNDY2NiB3aWR0aD01MikKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNvcnQgIChjb3N0PTM0Njc3MDUuLjM0OTg5NTUgcm93cz0xMjQ5 OTc3NSB3aWR0aD0yMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFBhcmFsbGVsIFNlcSBTY2FuIG9uIGJlbmNoX3dpZGUgIChjb3N0PTAuLjE3Mzc5MjYgcm93 cz0xMjQ5OTc3NSB3aWR0aD0yMCkKCiAgICBFeGVjdXRpb24gdGltZXM6IDkxOTdtcywgOTY3 NW1zLCA5MDU2bXMsIDExMDc4bXMKICAgIE1lZGlhbjogfjkuNHMKCiAgVmVyaWZpY2F0aW9u IOKAlCB1bnBhdGNoZWQgYmluYXJ5LCBwYXJhbGxlbCBmb3JjZWQgd2l0aCBwYXJhbGxlbF90 dXBsZV9jb3N0PTAuMDAxOgoKICAgIFNhbWUgcGFyYWxsZWwgcGxhbiBzdHJ1Y3R1cmUgYXMg cGF0Y2hlZC4KICAgIEV4ZWN1dGlvbiB0aW1lczogOTAyM21zLCA5NjQ2bXMsIDk1NDhtcywg MTExOTZtcwogICAgTWVkaWFuOiB+OS42cwoKICBTdW1tYXJ5OgogICAgVW5wYXRjaGVkIChz ZXJpYWwsIHBsYW5uZXIncyBjaG9pY2UpOiAgIH4yNnMKICAgIFBhdGNoZWQgICAocGFyYWxs ZWwsIHBsYW5uZXIncyBjaG9pY2UpOiAgfjkuNHMKICAgIFNwZWVkdXA6IDIuN3gKCiAgICBU aGUgcGFyYWxsZWwgcGxhbiBpcyBnZW51aW5lbHkgZmFzdGVyLiAgVGhlIHVucGF0Y2hlZCBw bGFubmVyIHJlZnVzZWQKICAgIHRvIHBpY2sgaXQgYmVjYXVzZSB0aGUgZmxhdCAwLjEvdHVw bGUgKiAyMi41TSByb3dzID0gMi4yNU0gR2F0aGVyCiAgICBjb3N0IG1hZGUgdGhlIHBhcmFs bGVsIHRvdGFsICg1Ljc1TSkgYXBwZWFyIGNsb3NlIHRvIHRoZSBzZXJpYWwgdG90YWwKICAg ICg2LjczTSksIGFuZCB0aGUgc2VyaWFsIHBsYW4gYXZvaWRlZCB0aGUgRmluYWxpemUgR3Jv dXBBZ2dyZWdhdGUKICAgIG92ZXJoZWFkLiAgV2l0aCB3aWR0aCBhZGp1c3RtZW50LCB0aGUg R2F0aGVyIGNvc3QgZHJvcHMgdG8gMS4yOE0sCiAgICBtYWtpbmcgdGhlIHBhcmFsbGVsIHBs YW4gY2xlYXJseSBjaGVhcGVyLgoKCkJlbmNobWFyayAyOiBXaWRlLU91dHB1dCBBZ2dyZWdh dGUgKE5vIFJlZ3Jlc3Npb24pCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQoKVGFibGUgc2V0dXA6CgogICAgQ1JFQVRFIFRBQkxFIGJlbmNo X25hcnJvdyBBUwogICAgU0VMRUNUCiAgICAgIGkgQVMgaWQsCiAgICAgIChpICUgNTAwMDAw KSBBUyBncm91cF9pZCwKICAgICAgKHJhbmRvbSgpICogMTAwMCk6Om51bWVyaWMoMTAsMikg QVMgdmFsMSwKICAgICAgKHJhbmRvbSgpICogMTAwMCk6Om51bWVyaWMoMTAsMikgQVMgdmFs MiwKICAgICAgKHJhbmRvbSgpICogMTAwMCk6Om51bWVyaWMoMTAsMikgQVMgdmFsMywKICAg ICAgKHJhbmRvbSgpICogMTAwMCk6Om51bWVyaWMoMTAsMikgQVMgdmFsNCwKICAgICAgKHJh bmRvbSgpICogMTAwMCk6Om51bWVyaWMoMTAsMikgQVMgdmFsNSwKICAgICAgKHJhbmRvbSgp ICogMTAwMCk6Om51bWVyaWMoMTAsMikgQVMgdmFsNiwKICAgICAgKHJhbmRvbSgpICogMTAw MCk6Om51bWVyaWMoMTAsMikgQVMgdmFsNywKICAgICAgKHJhbmRvbSgpICogMTAwMCk6Om51 bWVyaWMoMTAsMikgQVMgdmFsOAogICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwMDAw MDApIGk7CiAgICBWQUNVVU0gQU5BTFlaRSBiZW5jaF9uYXJyb3c7CgogIDIwTSByb3dzLCAx Nzc2IE1CIG9uIGRpc2suCiAgMTAgY29sdW1uczogaWQgaW50NCAoNCBieXRlcyksIGdyb3Vw X2lkIGludDQgKDQgYnl0ZXMpLAogICAgICAgICAgICAgIHZhbDEuLnZhbDggbnVtZXJpYygx MCwyKSAoYXZnIDYgYnl0ZXMgZWFjaCkuCiAgNTAwSyBkaXN0aW5jdCBncm91cF9pZCB2YWx1 ZXMgKDQwIHJvd3MgcGVyIGdyb3VwKS4KICBTb3VyY2Ugcm93cyBhcmUgbmFycm93IChhdmcg fjUyIGJ5dGVzKSBidXQgdGhlIGFnZ3JlZ2F0ZSBvdXRwdXQgaXMKICB3aWRlOiBncm91cF9p ZCArIGNvdW50ICsgNCBzdW1zICsgNCBhdmdzIChlYWNoIGF2ZyBleHBhbmRzIHRvCiAgc3Vt ICsgY291bnQgaW50ZXJuYWxseSkgPSB3aWR0aCAyNjggYXQgR2F0aGVyIE1lcmdlLgoKUXVl cnk6CgogICAgU0VMRUNUIGdyb3VwX2lkLAogICAgICAgICAgIGNvdW50KCopLCBzdW0odmFs MSksIHN1bSh2YWwyKSwgc3VtKHZhbDMpLCBzdW0odmFsNCksCiAgICAgICAgICAgYXZnKHZh bDUpLCBhdmcodmFsNiksIGF2Zyh2YWw3KSwgYXZnKHZhbDgpCiAgICBGUk9NIGJlbmNoX25h cnJvdwogICAgR1JPVVAgQlkgZ3JvdXBfaWQKICAgIE9SREVSIEJZIGNvdW50KCopIERFU0MK ICAgIExJTUlUIDEwOwoKV2l0aCA0IHdvcmtlcnMgYW5kIDUwMEsgZ3JvdXBzLCB0aGlzIHBy b2R1Y2VzIH4yTSBwYXJ0aWFsIGFnZ3JlZ2F0ZQpyb3dzICh3aWR0aCAyNjgpIHRocm91Z2gg R2F0aGVyIE1lcmdlLiAgVGhlIHdpZHRoLWFkanVzdGVkIGNvc3QKY29ycmVjdGx5IGNoYXJn ZXMgTU9SRSBmb3IgdGhlc2Ugd2lkZSB0dXBsZXM6CgogIFVucGF0Y2hlZCBHYXRoZXIgTWVy Z2U6IGNvc3QgMSwzNzIsMDM4ICAoMC4xICogMi4wOE0gPSAyMDhLIGNvbnRyaWJ1dGlvbikK ICBQYXRjaGVkICAgR2F0aGVyIE1lcmdlOiBjb3N0IDEsNzAyLDc4NyAgKDAuMSAqIDIuNDEy ICogMi4wOE0gPSA1MDJLIGNvbnRyaWJ1dGlvbikKCkJvdGggcGF0Y2hlZCBhbmQgdW5wYXRj aGVkIGNob29zZSB0aGUgc2FtZSBwYXJhbGxlbCBwbGFuLgoKUmVzdWx0czoKCiAgVU5QQVRD SEVEOgoKICAgIExpbWl0ICAoY29zdD0xNDkyNjY4Li4xNDkyNjY4IHJvd3M9MTAgd2lkdGg9 MjY4KQogICAgICAtPiAgU29ydCAgKGNvc3Q9MTQ5MjY2OC4uMTQ5Mzk3MCByb3dzPTUyMDgz MiB3aWR0aD0yNjgpCiAgICAgICAgICAgIC0+ICBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZSAg KGNvc3Q9MTEyMjU5MS4uMTQ4MTQxMyByb3dzPTUyMDgzMiB3aWR0aD0yNjgpCiAgICAgICAg ICAgICAgICAgIC0+ICBHYXRoZXIgTWVyZ2UgIChjb3N0PTExMjI1OTEuLjEzNzIwMzggcm93 cz0yMDgzMzI4IHdpZHRoPTI2OCkKICAgICAgICAgICAgICAgICAgICAgICAgV29ya2VycyBQ bGFubmVkOiA0CiAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0ICAoY29zdD0xMTIx NTkxLi4xMTIyODkzIHJvd3M9NTIwODMyIHdpZHRoPTI2OCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZSAgKGNvc3Q9ODkyOTgyLi4x MDA2MjY3IHJvd3M9NTIwODMyIHdpZHRoPTI2OCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcmFsbGVsIFNlcSBTY2FuIG9uIGJlbmNoX25hcnJvdyAgKGNv c3Q9MC4uMjc3MzMwIHJvd3M9NTAwMDIxNiB3aWR0aD01MikKCiAgICBFeGVjdXRpb24gdGlt ZXM6IDY1MjVtcywgNjU3NW1zLCA2NDQ3bXMKICAgIE1lZGlhbjogfjYuNXMKCiAgUEFUQ0hF RDoKCiAgICBMaW1pdCAgKGNvc3Q9MTgyMzQxNy4uMTgyMzQxNyByb3dzPTEwIHdpZHRoPTI2 OCkKICAgICAgLT4gIFNvcnQgIChjb3N0PTE4MjM0MTcuLjE4MjQ3MTkgcm93cz01MjA4MzIg d2lkdGg9MjY4KQogICAgICAgICAgICAtPiAgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUgIChj b3N0PTExMjI1OTEuLjE4MTIxNjIgcm93cz01MjA4MzIgd2lkdGg9MjY4KQogICAgICAgICAg ICAgICAgICAtPiAgR2F0aGVyIE1lcmdlICAoY29zdD0xMTIyNTkxLi4xNzAyNzg3IHJvd3M9 MjA4MzMyOCB3aWR0aD0yNjgpCiAgICAgICAgICAgICAgICAgICAgICAgIFdvcmtlcnMgUGxh bm5lZDogNAogICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydCAgKGNvc3Q9MTEyMTU5 MS4uMTEyMjg5MyByb3dzPTUyMDgzMiB3aWR0aD0yNjgpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUgIChjb3N0PTg5Mjk4Mi4uMTAw NjI2NyByb3dzPTUyMDgzMiB3aWR0aD0yNjgpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBQYXJhbGxlbCBTZXEgU2NhbiBvbiBiZW5jaF9uYXJyb3cgIChjb3N0 PTAuLjI3NzMzMCByb3dzPTUwMDAyMTYgd2lkdGg9NTIpCgogICAgRXhlY3V0aW9uIHRpbWVz OiA2Nzg0bXMsIDY4NjltcywgNzA0N21zCiAgICBNZWRpYW46IH42LjlzCgogIFN1bW1hcnk6 CiAgICBTYW1lIHBsYW4gb24gYm90aC4gIFBhdGNoZWQgZXN0aW1hdGVkIGNvc3QgaXMgMjIl IGhpZ2hlciAoMS44Mk0gdnMKICAgIDEuNDlNKSBiZWNhdXNlIGl0IGNvcnJlY3RseSBjaGFy Z2VzIDIuNDF4IHRoZSBiYXNlIHJhdGUgZm9yIHdpZHRoLTI2OAogICAgdHVwbGVzLiAgRXhl Y3V0aW9uIHRpbWVzIGFyZSB3aXRoaW4gbm9pc2Ug4oCUIHRoZSBoaWdoZXIgY29zdCBlc3Rp bWF0ZQogICAgZG9lcyBub3QgY2F1c2UgYSByZWdyZXNzaW9uIHRvIHNlcmlhbC4K --------------sLURw8E7ZV7sYhMbCqhYNDP4--