From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 70FD43857407 for ; Thu, 13 Oct 2022 15:30:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 70FD43857407 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1665675034; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type; bh=IzRTYeCbjvLIiFXX+QMs6n4vmwDSRjI98PUqwNJagpM=; b=QSFmT12E/G1l82UrVMOYm50iQ91gDjwXlu1MqTWxstHdp7RrK5YM9Wr4bqAgfQm4cx5BYH UmVt2WEPsBX7wqK5Jpde5qYNrARzabXOXm1NNh85WuJ6qfI4jKTltilTz4sk36LFrs4kNO zgQpCOf/qD1HoBBu35cTqFLPFWFuE3E= Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-93-wogbHgPkMlOj3r9p6DahUw-1; Thu, 13 Oct 2022 11:30:33 -0400 X-MC-Unique: wogbHgPkMlOj3r9p6DahUw-1 Received: by mail-qv1-f69.google.com with SMTP id i7-20020a0cab47000000b004b4376895bfso1624291qvb.20 for ; Thu, 13 Oct 2022 08:30:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=4r1zjwJgdxy/ThvLqBMAg5yOKKfQJKh6g4qF4GtIASI=; b=WXqFBfamsura7qpQLXWuofJp7f7H1VFkAW4yJN1ySIhTWIIDknvzbqes8867cL4h20 tgbUN6TX8iIEuFpx4RXIVnZSZt3DWzdfqbaHTnbEw65Nz+TZkh/U7p+wARTUGFrfZjll iehaSnmhky8Ui7MDwIRO+1vgBgK5ddTeoEfdlsLTzgrXT5qtHPhIoqoP/Mh8u34atc1Q +wz9Sh9UvXy3x/E2YaKObPH/vFP4Grda8ApvXn2xkWpUmmmUuG650jOvb/H+oDg9+F3R uC8uZ3xO1lqS90N0oHWm7CY+JKd2wT/g/GPhWpN3WmFSX8zF7rDUmrtqvuwy+9E3jczs RGjw== X-Gm-Message-State: ACrzQf2lZvxL7V4ZWD/d1/9ugzdavI75os+IIUJQCg540xgCCsrQPmKY to3LpqrQzzxCVj2M2V/NYDfZbTjg1lo8JZgU0ETuK80dMGYtRqivUEGlybQJu232wzdRmrheXI3 xSOpiBET3i+wk3SSnYrueopcRT5SAsYHl6gO2XmHEi9P1hojBDbDIjGxpmu2TXPCDMO5Nxw== X-Received: by 2002:a05:622a:30c:b0:39c:d45b:4d85 with SMTP id q12-20020a05622a030c00b0039cd45b4d85mr274576qtw.467.1665675032193; Thu, 13 Oct 2022 08:30:32 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7K6XPZAm909sed7ONzhJ/wpTKBGoLbyymAzG3cbs4y435DbnUAGA63JbgHYVbasLny40ttAQ== X-Received: by 2002:a05:622a:30c:b0:39c:d45b:4d85 with SMTP id q12-20020a05622a030c00b0039cd45b4d85mr274553qtw.467.1665675031903; Thu, 13 Oct 2022 08:30:31 -0700 (PDT) Received: from ?IPV6:2607:fea8:a263:f600::50d4? ([2607:fea8:a263:f600::50d4]) by smtp.gmail.com with ESMTPSA id i14-20020ac871ce000000b00398d83256ddsm149094qtp.31.2022.10.13.08.30.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 13 Oct 2022 08:30:30 -0700 (PDT) Message-ID: <8c6b6582-59c7-6e1d-4bd9-6673d455a7af@redhat.com> Date: Thu, 13 Oct 2022 11:30:29 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 To: gcc-patches Cc: "hernandez, aldy" From: Andrew MacLeod Subject: [COMMITTED 1/4] Add partial equivalence support to the relation oracle. X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------L7NXCExHA9hdVPr8YKsSuw0T" Content-Language: en-US X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------L7NXCExHA9hdVPr8YKsSuw0T Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit This patch provide the new relation kinds as well as management of the partial equivalency slice table. Bootstrapped on x86_64-pc-linux-gnu with no regressions.  Pushed Andrew --------------L7NXCExHA9hdVPr8YKsSuw0T Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-partial-equivalence-support-to-the-relation-orac.patch" Content-Disposition: attachment; filename*0="0001-Add-partial-equivalence-support-to-the-relation-orac.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiNTU2MzQxMGVhNjEzZmYyYjJkN2M2ZmExODQ3Y2ZjYjFmZjkxZWZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogVGh1LCA2IE9jdCAyMDIyIDE1OjAwOjUyIC0wNDAwClN1YmplY3Q6IFtQQVRDSCAxLzRd IEFkZCBwYXJ0aWFsIGVxdWl2YWxlbmNlIHN1cHBvcnQgdG8gdGhlIHJlbGF0aW9uIG9yYWNsZS4K ClRoaXMgcHJvdmlkZXMgZW5oYW5jZW1lbnRzIHRvIHRoZSBlcXVpdmFsZW5jZSBvcmFjbGUgdG8g YWxzbyB0cmFjawpwYXJ0aWFsIGVxdWl2YWxlbmNlcy4gIFRoZXkgYXJlIHRyYWNrZWQgc2ltaWxh ciB0byBlcXVpdmFsZW5jZXMsIGV4Y2VwdAppdCB0cmFja3MgYSAnc2xpY2UnIG9mIGFub3RoZXIg c3NhIG5hbWUuICAgOCwgMTYsIDMyIGFuZCA2NCBiaXQgc2xpY2VzIGFyZQp0cmFja2VkLiAgVGhp cyB3aWxsIGFsbG93IGNhc3RzIGFuZCBtYXNrIG9mIHRoZSBzYW1lIHZhbHVlIHRvIGNvbXBhcmUK ZXF1YWwuCgoJKiB2YWx1ZS1yZWxhdGlvbi5jYyAoZXF1aXZfY2hhaW46OmR1bXApOiBEb24ndCBw cmludCBlbXB0eQoJZXF1aXZhbGVuY2VzLgoJKGVxdWl2X29yYWNsZTo6ZXF1aXZfb3JhY2xlKTog QWxsb2NhdGUgYSBwYXJ0aWFsIGVxdWl2IHRhYmxlLgoJKGVxdWl2X29yYWNsZTo6fmVxdWl2X29y YWNsZSk6IFJlbGVhc2UgdGhlIHBhcnRpYWwgZXF1aXYgdGFibGUuCgkoZXF1aXZfb3JhY2xlOjph ZGRfcGFydGlhbF9lcXVpdik6IE5ldy4KCShlcXVpdl9vcmFjbGU6OnBhcnRpYWxfZXF1aXZfc2V0 KTogTmV3LgoJKGVxdWl2X29yYWNsZTo6cGFydGlhbF9lcXVpdik6IE5ldy4KCShlcXVpdl9vcmFj bGU6OnF1ZXJ5X3JlbGF0aW9uKTogQ2hlY2sgZm9yIHBhcnRpYWwgZXF1aXZzIHRvby4KCShlcXVp dl9vcmFjbGU6OmR1bXApOiBBbHNvIGR1bXAgcGFydGlhbCBlcXVpdnMuCgkoZG9tX29yYWNsZTo6 cmVnaXN0ZXJfcmVsYXRpb24pOiBIYW5kbGUgcGFydGlhbCBlcXVpdnMuCgkoZG9tX29yYWNsZTo6 cXVlcnlfcmVsYXRpb24pOiBDaGVjayBmb3IgcGFydGlhbCBlcXVpdnMuCgkqIHZhbHVlLXJlbGF0 aW9uLmggKGVudW0gcmVsYXRpb25fa2luZF90KTogQWRkIHBhcnRpYWwgZXF1aXZzLgoJKHJlbGF0 aW9uX3BhcnRpYWxfZXF1aXZfcCk6IE5ldy4KCShyZWxhdGlvbl9lcXVpdl9wKTogTmV3LgoJKGNs YXNzIHBlX3NsaWNlKTogTmV3LgoJKGNsYXNzIGVxdWl2X29yYWNsZSk6IEFkZCBwcm90b3R5cGVz LgoJKHBlX3RvX2JpdHMpOiBOZXcuCgkoYml0c190b19wZSk6IE5ldy4KCShwZV9taW4pOiBOZXcu Ci0tLQogZ2NjL3ZhbHVlLXJlbGF0aW9uLmNjIHwgMTY1ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLQogZ2NjL3ZhbHVlLXJlbGF0aW9uLmggIHwgIDc4ICsrKysrKysr KysrKysrKysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDIyOSBpbnNlcnRpb25zKCspLCAxNCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9nY2MvdmFsdWUtcmVsYXRpb24uY2MgYi9nY2MvdmFsdWUt cmVsYXRpb24uY2MKaW5kZXggMWVlNmRhMTk5ZjIuLmNlZWNhNTNlMGExIDEwMDY0NAotLS0gYS9n Y2MvdmFsdWUtcmVsYXRpb24uY2MKKysrIGIvZ2NjL3ZhbHVlLXJlbGF0aW9uLmNjCkBAIC0zMiwx MCArMzIsMTEgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5v dCBzZWUKICNpbmNsdWRlICJhbGxvYy1wb29sLmgiCiAjaW5jbHVkZSAiZG9taW5hbmNlLmgiCiAK LSNkZWZpbmUgVlJFTF9MQVNUICAgICAgICAgICAgICAgVlJFTF9ORQorI2RlZmluZSBWUkVMX0xB U1QgICAgICAgICAgICAgICBWUkVMX1BFNjQKIAogc3RhdGljIGNvbnN0IGNoYXIgKmtpbmRfc3Ry aW5nW1ZSRUxfTEFTVCArIDFdID0KLXsgInZhcnlpbmciLCAidW5kZWZpbmVkIiwgIjwiLCAiPD0i LCAiPiIsICI+PSIsICI9PSIsICIhPSIgfTsKK3sgInZhcnlpbmciLCAidW5kZWZpbmVkIiwgIjwi LCAiPD0iLCAiPiIsICI+PSIsICI9PSIsICIhPSIsICJwZTgiLCAicGUxNiIsCisgICJwZTMyIiwg InBlNjQiIH07CiAKIC8vIFByaW50IGEgcmVsYXRpb25fa2luZCBSRUwgdG8gZmlsZSBGLgogCkBA IC0zMDIsNyArMzAzLDcgQEAgZXF1aXZfY2hhaW46OmR1bXAgKEZJTEUgKmYpIGNvbnN0CiAgIGJp dG1hcF9pdGVyYXRvciBiaTsKICAgdW5zaWduZWQgaTsKIAotICBpZiAoIW1fbmFtZXMpCisgIGlm ICghbV9uYW1lcyB8fCBiaXRtYXBfZW1wdHlfcCAobV9uYW1lcykpCiAgICAgcmV0dXJuOwogICBm cHJpbnRmIChmLCAiRXF1aXZhbGVuY2Ugc2V0IDogWyIpOwogICB1bnNpZ25lZCBjID0gMDsKQEAg LTMyOSwxOCArMzMwLDEyNCBAQCBlcXVpdl9vcmFjbGU6OmVxdWl2X29yYWNsZSAoKQogICBvYnN0 YWNrX2luaXQgKCZtX2NoYWluX29ic3RhY2spOwogICBtX3NlbGZfZXF1aXYuY3JlYXRlICgwKTsK ICAgbV9zZWxmX2VxdWl2LnNhZmVfZ3Jvd19jbGVhcmVkIChudW1fc3NhX25hbWVzICsgMSk7Cisg IG1fcGFydGlhbC5jcmVhdGUgKDApOworICBtX3BhcnRpYWwuc2FmZV9ncm93X2NsZWFyZWQgKG51 bV9zc2FfbmFtZXMgKyAxKTsKIH0KIAogLy8gRGVzdHJ1Y3QgYW4gZXF1aXZhbGVuY3kgb3JhY2xl LgogCiBlcXVpdl9vcmFjbGU6On5lcXVpdl9vcmFjbGUgKCkKIHsKKyAgbV9wYXJ0aWFsLnJlbGVh c2UgKCk7CiAgIG1fc2VsZl9lcXVpdi5yZWxlYXNlICgpOwogICBvYnN0YWNrX2ZyZWUgKCZtX2No YWluX29ic3RhY2ssIE5VTEwpOwogICBtX2VxdWl2LnJlbGVhc2UgKCk7CiAgIGJpdG1hcF9vYnN0 YWNrX3JlbGVhc2UgKCZtX2JpdG1hcHMpOwogfQogCisvLyBBZGQgYSBwYXJ0aWFsIGVxdWl2YWxl bmNlIFIgYmV0d2VlbiBPUDEgYW5kIE9QMi4KKwordm9pZAorZXF1aXZfb3JhY2xlOjphZGRfcGFy dGlhbF9lcXVpdiAocmVsYXRpb25fa2luZCByLCB0cmVlIG9wMSwgdHJlZSBvcDIpCit7CisgIGlu dCB2MSA9IFNTQV9OQU1FX1ZFUlNJT04gKG9wMSk7CisgIGludCB2MiA9IFNTQV9OQU1FX1ZFUlNJ T04gKG9wMik7CisgIGludCBwcmVjMiA9IFRZUEVfUFJFQ0lTSU9OIChUUkVFX1RZUEUgKG9wMikp OworICBpbnQgYml0cyA9IHBlX3RvX2JpdHMgKHIpOworICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChi aXRzICYmIHByZWMyID49IGJpdHMpOworCisgIGlmICh2MSA+PSAoaW50KW1fcGFydGlhbC5sZW5n dGggKCkgfHwgdjIgPj0gKGludCltX3BhcnRpYWwubGVuZ3RoICgpKQorICAgIG1fcGFydGlhbC5z YWZlX2dyb3dfY2xlYXJlZCAobnVtX3NzYV9uYW1lcyArIDEpOworICBnY2NfY2hlY2tpbmdfYXNz ZXJ0ICh2MSA8IChpbnQpbV9wYXJ0aWFsLmxlbmd0aCAoKQorCQkgICAgICAgJiYgdjIgPCAoaW50 KW1fcGFydGlhbC5sZW5ndGggKCkpOworCisgIHBlX3NsaWNlICZwZTEgPSBtX3BhcnRpYWxbdjFd OworICBwZV9zbGljZSAmcGUyID0gbV9wYXJ0aWFsW3YyXTsKKworICBpZiAocGUxLm1lbWJlcnMp CisgICAgeworICAgICAgLy8gSWYgdGhlIGRlZmluaXRpb24gcGUxIGFscmVhZHkgaGFzIGFuIGVu dHJ5LCBlaXRoZXIgdGhlIHN0bXQgaXMKKyAgICAgIC8vIGJlaW5nIHJlLWV2YWx1YXRlZCwgb3Ig dGhlIGRlZiB3YXMgdXNlZCBiZWZvcmUgYmVpbmcgcmVnaXN0ZXJlZC4KKyAgICAgIC8vIEluIGVp dGhlciBjYXNlLCBpZiBQRTIgaGFzIGFuIGVudHJ5LCB3ZSBzaW1wbHkgZG8gbm90aGluZy4KKyAg ICAgIGlmIChwZTIubWVtYmVycykKKwlyZXR1cm47CisgICAgICAvLyBQRTEgaXMgdGhlIExIUyBh bmQgYWxyZWFkeSBoYXMgbWVtYmVycywgc28gZXZlcnl0aGluZyBpbiB0aGUgc2V0CisgICAgICAv LyBzaG91bGQgYmUgYSBzbGljZSBvZiBQRTIgcmF0aGVyIHRoYW4gUEUxLgorICAgICAgcGUyLmNv ZGUgPSBwZV9taW4gKHIsIHBlMS5jb2RlKTsKKyAgICAgIHBlMi5zc2FfYmFzZSA9IG9wMjsKKyAg ICAgIHBlMi5tZW1iZXJzID0gcGUxLm1lbWJlcnM7CisgICAgICBiaXRtYXBfaXRlcmF0b3IgYmk7 CisgICAgICB1bnNpZ25lZCB4OworICAgICAgRVhFQ1VURV9JRl9TRVRfSU5fQklUTUFQIChwZTEu bWVtYmVycywgMCwgeCwgYmkpCisJeworCSAgbV9wYXJ0aWFsW3hdLnNzYV9iYXNlID0gb3AyOwor CSAgbV9wYXJ0aWFsW3hdLmNvZGUgPSBwZTIuY29kZTsKKwl9CisgICAgICBiaXRtYXBfc2V0X2Jp dCAocGUxLm1lbWJlcnMsIHYyKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIGlmIChwZTIubWVt YmVycykKKyAgICB7CisgICAgICBwZTEuc3NhX2Jhc2UgPSBwZTIuc3NhX2Jhc2U7CisgICAgICAv LyBJZiBwZTIgaXMgYSAxNiBiaXQgdmFsdWUsIGJ1dCBvbmx5IGFuIDggYml0IGNvcHksIHdlIGNh bid0IGJlIGFueQorICAgICAgLy8gbW9yZSB0aGFuIGFuIDggYml0IGVxdWl2YWxlbmNlIGhlcmUs IHNvIGNob29zZSBNSU4gdmFsdWUuCisgICAgICBwZTEuY29kZSA9IHBlX21pbiAociwgcGUyLmNv ZGUpOworICAgICAgcGUxLm1lbWJlcnMgPSBwZTIubWVtYmVyczsKKyAgICAgIGJpdG1hcF9zZXRf Yml0IChwZTEubWVtYmVycywgdjEpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIC8vIE5l aXRoZXIgbmFtZSBoYXMgYW4gZW50cnksIHNpbXBseSBjcmVhdGUgb3AxIGFzIHNsaWNlIG9mIG9w Mi4KKyAgICAgIHBlMi5jb2RlID0gYml0c190b19wZSAoVFlQRV9QUkVDSVNJT04gKFRSRUVfVFlQ RSAob3AyKSkpOworICAgICAgaWYgKHBlMi5jb2RlID09IFZSRUxfVkFSWUlORykKKwlyZXR1cm47 CisgICAgICBwZTIuc3NhX2Jhc2UgPSBvcDI7CisgICAgICBwZTIubWVtYmVycyA9IEJJVE1BUF9B TExPQyAoJm1fYml0bWFwcyk7CisgICAgICBiaXRtYXBfc2V0X2JpdCAocGUyLm1lbWJlcnMsIHYy KTsKKyAgICAgIHBlMS5zc2FfYmFzZSA9IG9wMjsKKyAgICAgIHBlMS5jb2RlID0gcjsKKyAgICAg IHBlMS5tZW1iZXJzID0gcGUyLm1lbWJlcnM7CisgICAgICBiaXRtYXBfc2V0X2JpdCAocGUxLm1l bWJlcnMsIHYxKTsKKyAgICB9Cit9CisKKy8vIFJldHVybiB0aGUgc2V0IG9mIHBhcnRpYWwgZXF1 aXZhbGVuY2VzIGFzc29jaWF0ZWQgd2l0aCBOQU1FLiAgVGhlIGJpdG1hcAorLy8gd2lsbCBiZSBO VUxMIGlmIHRoZXJlIGFyZSBub25lLgorCitjb25zdCBwZV9zbGljZSAqCitlcXVpdl9vcmFjbGU6 OnBhcnRpYWxfZXF1aXZfc2V0ICh0cmVlIG5hbWUpCit7CisgIGludCB2ID0gU1NBX05BTUVfVkVS U0lPTiAobmFtZSk7CisgIGlmICh2ID49IChpbnQpbV9wYXJ0aWFsLmxlbmd0aCAoKSkKKyAgICBy ZXR1cm4gTlVMTDsKKyAgcmV0dXJuICZtX3BhcnRpYWxbdl07Cit9CisKKy8vIFF1ZXJ5IGlmIHRo ZXJlIGlzIGEgcGFydGlhbCBlcXVpdmFsZW5jZSBiZXR3ZWVuIFNTQTEgYW5kIFNTQTIuICBSZXR1 cm4KKy8vIFZSRUxfVkFSWUlORyBpZiB0aGVyZSBpcyBub3Qgb25lLiAgSWYgQkFTRSBpcyBub24t bnVsbCwgcmV0dXJuIHRoZSBiYXNlCisvLyBzc2EtbmFtZSB0aGlzIGlzIGEgc2xpY2Ugb2YuCisK K3JlbGF0aW9uX2tpbmQKK2VxdWl2X29yYWNsZTo6cGFydGlhbF9lcXVpdiAodHJlZSBzc2ExLCB0 cmVlIHNzYTIsIHRyZWUgKmJhc2UpIGNvbnN0Cit7CisgIGludCB2MSA9IFNTQV9OQU1FX1ZFUlNJ T04gKHNzYTEpOworICBpbnQgdjIgPSBTU0FfTkFNRV9WRVJTSU9OIChzc2EyKTsKKworICBpZiAo djEgPj0gKGludCltX3BhcnRpYWwubGVuZ3RoICgpIHx8IHYyID49IChpbnQpbV9wYXJ0aWFsLmxl bmd0aCAoKSkKKyAgICByZXR1cm4gVlJFTF9WQVJZSU5HOworCisgIGNvbnN0IHBlX3NsaWNlICZw ZTEgPSBtX3BhcnRpYWxbdjFdOworICBjb25zdCBwZV9zbGljZSAmcGUyID0gbV9wYXJ0aWFsW3Yy XTsKKyAgaWYgKHBlMS5tZW1iZXJzICYmIHBlMi5tZW1iZXJzID09IHBlMS5tZW1iZXJzKQorICAg IHsKKyAgICAgIGlmIChiYXNlKQorCSpiYXNlID0gcGUxLnNzYV9iYXNlOworICAgICAgcmV0dXJu IHBlX21pbiAocGUxLmNvZGUsIHBlMi5jb2RlKTsKKyAgICB9CisgIHJldHVybiBWUkVMX1ZBUllJ Tkc7Cit9CisKKwogLy8gRmluZCBhbmQgcmV0dXJuIHRoZSBlcXVpdmFsZW5jeSBzZXQgZm9yIFNT QSBhbG9uZyB0aGUgZG9taW5hdG9ycyBvZiBCQi4KIC8vIFRoaXMgaXMgdGhlIGV4dGVybmFsIEFQ SS4KIApAQCAtMzY1LDcgKzQ3Miw3IEBAIGVxdWl2X29yYWNsZTo6ZXF1aXZfc2V0ICh0cmVlIHNz YSwgYmFzaWNfYmxvY2sgYmIpCiAgIHJldHVybiBtX3NlbGZfZXF1aXZbdl07CiB9CiAKLS8vIFF1 ZXJ5IGlmIHRocmUgaXMgYSByZWxhdGlvbiAoZXF1aXZhbGVuY2UpIGJldHdlZW4gMiBTU0FfTkFN RXMuCisvLyBRdWVyeSBpZiB0aGVyZSBpcyBhIHJlbGF0aW9uIChlcXVpdmFsZW5jZSkgYmV0d2Vl biAyIFNTQV9OQU1Fcy4KIAogcmVsYXRpb25fa2luZAogZXF1aXZfb3JhY2xlOjpxdWVyeV9yZWxh dGlvbiAoYmFzaWNfYmxvY2sgYmIsIHRyZWUgc3NhMSwgdHJlZSBzc2EyKQpAQCAtMzczLDcgKzQ4 MCw5IEBAIGVxdWl2X29yYWNsZTo6cXVlcnlfcmVsYXRpb24gKGJhc2ljX2Jsb2NrIGJiLCB0cmVl IHNzYTEsIHRyZWUgc3NhMikKICAgLy8gSWYgdGhlIDIgc3NhIG5hbWVzIHNoYXJlIHRoZSBzYW1l IGVxdWl2IHNldCwgdGhleSBhcmUgZXF1YWwuCiAgIGlmIChlcXVpdl9zZXQgKHNzYTEsIGJiKSA9 PSBlcXVpdl9zZXQgKHNzYTIsIGJiKSkKICAgICByZXR1cm4gVlJFTF9FUTsKLSAgcmV0dXJuIFZS RUxfVkFSWUlORzsKKworICAvLyBDaGVjayBpZiB0aGVyZSBpcyBhIHBhcnRpYWwgZXF1aXZhbGVu Y2UuCisgIHJldHVybiBwYXJ0aWFsX2VxdWl2IChzc2ExLCBzc2EyKTsKIH0KIAogLy8gUXVlcnkg aWYgdGhyZSBpcyBhIHJlbGF0aW9uIChlcXVpdmFsZW5jZSkgYmV0d2VlbiAyIFNTQV9OQU1Fcy4K QEAgLTUxNSw2ICs2MjQsMTIgQEAgdm9pZAogZXF1aXZfb3JhY2xlOjpyZWdpc3Rlcl9yZWxhdGlv biAoYmFzaWNfYmxvY2sgYmIsIHJlbGF0aW9uX2tpbmQgaywgdHJlZSBzc2ExLAogCQkJCSB0cmVl IHNzYTIpCiB7CisgIC8vIFByb2Nlc3MgcGFydGlhbCBlcXVpdmFsZW5jaWVzLgorICBpZiAocmVs YXRpb25fcGFydGlhbF9lcXVpdl9wIChrKSkKKyAgICB7CisgICAgICBhZGRfcGFydGlhbF9lcXVp diAoaywgc3NhMSwgc3NhMik7CisgICAgICByZXR1cm47CisgICAgfQogICAvLyBPbmx5IGhhbmRs ZSBlcXVhbGl0eSByZWxhdGlvbnMuCiAgIGlmIChrICE9IFZSRUxfRVEpCiAgICAgcmV0dXJuOwpA QCAtNjExLDEyICs3MjYsMzQgQEAgZXF1aXZfb3JhY2xlOjpkdW1wIChGSUxFICpmLCBiYXNpY19i bG9jayBiYikgY29uc3QKIHsKICAgaWYgKGJiLT5pbmRleCA+PSAoaW50KW1fZXF1aXYubGVuZ3Ro ICgpKQogICAgIHJldHVybjsKLSAgaWYgKCFtX2VxdWl2W2JiLT5pbmRleF0pCi0gICAgcmV0dXJu OwotCi0gIGVxdWl2X2NoYWluICpwdHIgPSBtX2VxdWl2W2JiLT5pbmRleF0tPm1fbmV4dDsKLSAg Zm9yICg7IHB0cjsgcHRyID0gcHRyLT5tX25leHQpCi0gICAgcHRyLT5kdW1wIChmKTsKKyAgLy8g UHJvY2VzcyBlcXVpdmFsZW5jZXMuCisgIGlmIChtX2VxdWl2W2JiLT5pbmRleF0pCisgICAgewor ICAgICAgZXF1aXZfY2hhaW4gKnB0ciA9IG1fZXF1aXZbYmItPmluZGV4XS0+bV9uZXh0OworICAg ICAgZm9yICg7IHB0cjsgcHRyID0gcHRyLT5tX25leHQpCisJcHRyLT5kdW1wIChmKTsKKyAgICB9 CisgIC8vIExvb2sgZm9yIHBhcnRpYWwgZXF1aXZhbGVuY2VzIGRlZmluZWQgaW4gdGhpcyBibG9j ay4uCisgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1fc3NhX25hbWVzOyBpKyspCisgICAg eworICAgICAgdHJlZSBuYW1lID0gc3NhX25hbWUgKGkpOworICAgICAgaWYgKCFnaW1wbGVfcmFu Z2Vfc3NhX3AgKG5hbWUpIHx8ICFTU0FfTkFNRV9ERUZfU1RNVCAobmFtZSkpCisJY29udGludWU7 CisgICAgICBpZiAoaSA+PSBtX3BhcnRpYWwubGVuZ3RoICgpKQorCWJyZWFrOworICAgICB0cmVl IGJhc2UgPSBtX3BhcnRpYWxbaV0uc3NhX2Jhc2U7CisgICAgICBpZiAoYmFzZSAmJiBuYW1lICE9 IGJhc2UgJiYgZ2ltcGxlX2JiIChTU0FfTkFNRV9ERUZfU1RNVCAobmFtZSkpID09IGJiKQorCXsK KwkgIHJlbGF0aW9uX2tpbmQgayA9IHBhcnRpYWxfZXF1aXYgKG5hbWUsIGJhc2UpOworCSAgaWYg KGsgIT0gVlJFTF9WQVJZSU5HKQorCSAgICB7CisJICAgICAgdmFsdWVfcmVsYXRpb24gdnIgKGss IG5hbWUsIGJhc2UpOworCSAgICAgIGZwcmludGYgKGYsICJQYXJ0aWFsIGVxdWl2ICIpOworCSAg ICAgIHZyLmR1bXAgKGYpOworCSAgICAgIGZwdXRjICgnXG4nLGYpOworCSAgICB9CisJfQorICAg IH0KIH0KIAogLy8gRHVtcCBhbGwgZXF1aXZhbGVuY2Ugc2V0cyBrbm93biB0byB0aGUgb3JhY2xl LgpAQCAtOTA2LDcgKzEwNDMsNyBAQCBkb21fb3JhY2xlOjpyZWdpc3Rlcl9yZWxhdGlvbiAoYmFz aWNfYmxvY2sgYmIsIHJlbGF0aW9uX2tpbmQgaywgdHJlZSBvcDEsCiAgICAgcmV0dXJuOwogCiAg IC8vIEVxdWl2YWxlbmNpZXMgYXJlIGhhbmRsZWQgYnkgdGhlIGVxdWl2YWxlbmNlIG9yYWNsZS4K LSAgaWYgKGsgPT0gVlJFTF9FUSkKKyAgaWYgKHJlbGF0aW9uX2VxdWl2X3AgKGspKQogICAgIGVx dWl2X29yYWNsZTo6cmVnaXN0ZXJfcmVsYXRpb24gKGJiLCBrLCBvcDEsIG9wMik7CiAgIGVsc2UK ICAgICB7CkBAIC0xMjEwLDYgKzEzNDcsMTAgQEAgZG9tX29yYWNsZTo6cXVlcnlfcmVsYXRpb24g KGJhc2ljX2Jsb2NrIGJiLCB0cmVlIHNzYTEsIHRyZWUgc3NhMikKICAgaWYgKGJpdG1hcF9iaXRf cCAoZXF1aXYxLCB2MikgJiYgYml0bWFwX2JpdF9wIChlcXVpdjIsIHYxKSkKICAgICByZXR1cm4g VlJFTF9FUTsKIAorICBraW5kID0gcGFydGlhbF9lcXVpdiAoc3NhMSwgc3NhMik7CisgIGlmIChr aW5kICE9IFZSRUxfVkFSWUlORykKKyAgICByZXR1cm4ga2luZDsKKwogICAvLyBJbml0aWFsbHkg bG9vayBmb3IgYSBkaXJlY3QgcmVsYXRpb25zaGlwIGFuZCBqdXN0IHJldHVybiB0aGF0LgogICBr aW5kID0gZmluZF9yZWxhdGlvbl9kb20gKGJiLCB2MSwgdjIpOwogICBpZiAoa2luZCAhPSBWUkVM X1ZBUllJTkcpCmRpZmYgLS1naXQgYS9nY2MvdmFsdWUtcmVsYXRpb24uaCBiL2djYy92YWx1ZS1y ZWxhdGlvbi5oCmluZGV4IGUxMzQ3ZWE4YWQ4Li5mNWYyNTI0YWQ1NiAxMDA2NDQKLS0tIGEvZ2Nj L3ZhbHVlLXJlbGF0aW9uLmgKKysrIGIvZ2NjL3ZhbHVlLXJlbGF0aW9uLmgKQEAgLTcwLDcgKzcw LDExIEBAIHR5cGVkZWYgZW51bSByZWxhdGlvbl9raW5kX3QKICAgVlJFTF9HVCwJCS8vIHIxID4g cjIKICAgVlJFTF9HRSwJCS8vIHIxID49IHIyCiAgIFZSRUxfRVEsCQkvLyByMSA9PSByMgotICBW UkVMX05FCQkvLyByMSAhPSByMgorICBWUkVMX05FLAkJLy8gcjEgIT0gcjIKKyAgVlJFTF9QRTgs CQkvLyA4IGJpdCBwYXJ0aWFsIGVxdWl2YWxlbmN5CisgIFZSRUxfUEUxNiwJCS8vIDE2IGJpdCBw YXJ0aWFsIGVxdWl2YWxlbmN5CisgIFZSRUxfUEUzMiwJCS8vIDMyIGJpdCBwYXJ0aWFsIGVxdWl2 YWxlbmN5CisgIFZSRUxfUEU2NAkJLy8gNjQgYml0IHBhcnRpYWwgZXF1aXZhbGVuY3kKIH0gcmVs YXRpb25fa2luZDsKIAogLy8gR2VuZXJhbCByZWxhdGlvbiBraW5kIHRyYW5zZm9ybWF0aW9ucy4K QEAgLTc5LDcgKzgzLDEyIEBAIHJlbGF0aW9uX2tpbmQgcmVsYXRpb25faW50ZXJzZWN0IChyZWxh dGlvbl9raW5kIHIxLCByZWxhdGlvbl9raW5kIHIyKTsKIHJlbGF0aW9uX2tpbmQgcmVsYXRpb25f bmVnYXRlIChyZWxhdGlvbl9raW5kIHIpOwogcmVsYXRpb25fa2luZCByZWxhdGlvbl9zd2FwIChy ZWxhdGlvbl9raW5kIHIpOwogaW5saW5lIGJvb2wgcmVsYXRpb25fbHRfbGVfZ3RfZ2VfcCAocmVs YXRpb25fa2luZCByKQotCQkJCSAgICB7IHJldHVybiAociA+PSBWUkVMX0xUICYmIHIgPD0gVlJF TF9HRSk7IH0KKwkJICAgICAgeyByZXR1cm4gKHIgPj0gVlJFTF9MVCAmJiByIDw9IFZSRUxfR0Up OyB9CitpbmxpbmUgYm9vbCByZWxhdGlvbl9wYXJ0aWFsX2VxdWl2X3AgKHJlbGF0aW9uX2tpbmQg cikKKwkJICAgICAgeyByZXR1cm4gKHIgPj0gVlJFTF9QRTggJiYgciA8PSBWUkVMX1BFNjQpOyB9 CitpbmxpbmUgYm9vbCByZWxhdGlvbl9lcXVpdl9wIChyZWxhdGlvbl9raW5kIHIpCisJCSAgICAg IHsgcmV0dXJuIHIgPT0gVlJFTF9FUSB8fCByZWxhdGlvbl9wYXJ0aWFsX2VxdWl2X3AgKHIpOyB9 CisKIHZvaWQgcHJpbnRfcmVsYXRpb24gKEZJTEUgKmYsIHJlbGF0aW9uX2tpbmQgcmVsKTsKIAog Y2xhc3MgcmVsYXRpb25fb3JhY2xlCkBAIC05Myw2ICsxMDIsNyBAQCBwdWJsaWM6CiAKICAgLy8g UmV0dXJuIGVxdWl2YWxlbmN5IHNldCBmb3IgYW4gU1NBIG5hbWUgaW4gYSBiYXNpYyBibG9jay4K ICAgdmlydHVhbCBjb25zdF9iaXRtYXAgZXF1aXZfc2V0ICh0cmVlLCBiYXNpY19ibG9jaykgPSAw OworICB2aXJ0dWFsIGNvbnN0IGNsYXNzIHBlX3NsaWNlICpwYXJ0aWFsX2VxdWl2X3NldCAodHJl ZSkgeyByZXR1cm4gTlVMTDsgfQogICAvLyByZWdpc3RlciBhIHJlbGF0aW9uIGJldHdlZW4gMiBz c2EgbmFtZXMgaW4gYSBiYXNpYyBibG9jay4KICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyX3JlbGF0 aW9uIChiYXNpY19ibG9jaywgcmVsYXRpb25fa2luZCwgdHJlZSwgdHJlZSkgPSAwOwogICAvLyBR dWVyeSBmb3IgYSByZWxhdGlvbiBiZXR3ZWVuIHR3byBzc2EgbmFtZXMgaW4gYSBiYXNpYyBibG9j ay4KQEAgLTEyNSw2ICsxMzUsMTQgQEAgcHVibGljOgogICBlcXVpdl9jaGFpbiAqZmluZCAodW5z aWduZWQgc3NhKTsKIH07CiAKK2NsYXNzIHBlX3NsaWNlCit7CitwdWJsaWM6CisgIHRyZWUgc3Nh X2Jhc2U7ICAJLy8gU2xpY2Ugb2YgdGhpcyBuYW1lLgorICByZWxhdGlvbl9raW5kIGNvZGU7CS8v IGJpdHMgdGhhdCBhcmUgZXF1aXZhbGVudC4KKyAgYml0bWFwIG1lbWJlcnM7CS8vIE90aGVyIG1l bWJlcnMgaW4gdGhlIHBhcnRpYWwgZXF1aXZhbGVuY3kuCit9OworCiAvLyBUaGUgZXF1aXZhbGVu Y3kgb3JhY2xlIG1haW50YWlucyBlcXVpdmFsZW5jaWVzIHVzaW5nIHRoZSBkb21pbmF0b3IgdHJl ZS4KIC8vIEVxdWl2YWxlbmNpZXMgYXBwbHkgdG8gYW4gZW50aXJlIGJhc2ljIGJsb2NrLiAgRXF1 aXZhbGVuY2llcyBvbiBlZGdlcwogLy8gY2FuIGJlIHJlcHJlc2VudGVkIG9ubHkgb24gZWRnZXMg d2hvc2UgZGVzdGluYXRpb24gaXMgYSBzaW5nbGUtcHJlZCBibG9jaywKQEAgLTEzNyw5ICsxNTUs MTIgQEAgcHVibGljOgogICB+ZXF1aXZfb3JhY2xlICgpOwogCiAgIGNvbnN0X2JpdG1hcCBlcXVp dl9zZXQgKHRyZWUgc3NhLCBiYXNpY19ibG9jayBiYikgZmluYWwgb3ZlcnJpZGU7CisgIGNvbnN0 IHBlX3NsaWNlICpwYXJ0aWFsX2VxdWl2X3NldCAodHJlZSBuYW1lKSBmaW5hbCBvdmVycmlkZTsK ICAgdm9pZCByZWdpc3Rlcl9yZWxhdGlvbiAoYmFzaWNfYmxvY2sgYmIsIHJlbGF0aW9uX2tpbmQg aywgdHJlZSBzc2ExLAogCQkJICB0cmVlIHNzYTIpIG92ZXJyaWRlOwogCisgIHZvaWQgYWRkX3Bh cnRpYWxfZXF1aXYgKHJlbGF0aW9uX2tpbmQsIHRyZWUsIHRyZWUpOworICByZWxhdGlvbl9raW5k IHBhcnRpYWxfZXF1aXYgKHRyZWUgc3NhMSwgdHJlZSBzc2EyLCB0cmVlICpiYXNlID0gTlVMTCkg Y29uc3Q7CiAgIHJlbGF0aW9uX2tpbmQgcXVlcnlfcmVsYXRpb24gKGJhc2ljX2Jsb2NrLCB0cmVl LCB0cmVlKSBvdmVycmlkZTsKICAgcmVsYXRpb25fa2luZCBxdWVyeV9yZWxhdGlvbiAoYmFzaWNf YmxvY2ssIGNvbnN0X2JpdG1hcCwgY29uc3RfYml0bWFwKQogICAgIG92ZXJyaWRlOwpAQCAtMTUz LDYgKzE3NCw3IEBAIHByaXZhdGU6CiAgIGJpdG1hcCBtX2VxdWl2X3NldDsJLy8gSW5kZXggYnkg c3NhLW5hbWUuIHRydWUgaWYgYW4gZXF1aXZhbGVuY2UgZXhpc3RzLgogICB2ZWMgPGVxdWl2X2No YWluICo+IG1fZXF1aXY7CS8vIEluZGV4IGJ5IEJCLiAgbGlzdCBvZiBlcXVpdmFsZW5jZXMuCiAg IHZlYyA8Yml0bWFwPiBtX3NlbGZfZXF1aXY7ICAvLyBJbmRleCBieSBzc2EtbmFtZSwgc2VsZiBl cXVpdmFsZW5jeSBzZXQuCisgIHZlYyA8cGVfc2xpY2U+IG1fcGFydGlhbDsgIC8vIFBhcnRpYWwg ZXF1aXZhbGVuY2llcy4KIAogICB2b2lkIGxpbWl0X2NoZWNrIChiYXNpY19ibG9jayBiYiA9IE5V TEwpOwogICBlcXVpdl9jaGFpbiAqZmluZF9lcXVpdl9ibG9jayAodW5zaWduZWQgc3NhLCBpbnQg YmIpIGNvbnN0OwpAQCAtMzE1LDQgKzMzNyw1NiBAQCB2YWx1ZV9yZWxhdGlvbjo6dmFsdWVfcmVs YXRpb24gKHJlbGF0aW9uX2tpbmQga2luZCwgdHJlZSBuMSwgdHJlZSBuMikKICAgc2V0X3JlbGF0 aW9uIChraW5kLCBuMSwgbjIpOwogfQogCisvLyBSZXR1cm4gdGhlIG51bWJlciBvZiBiaXRzIGFz c29jaWF0ZWQgd2l0aCBwYXJ0aWFsIGVxdWl2YWxlbmN5IFQuCisvLyBSZXR1cm4gMCBpZiB0aGlz IGlzIG5vdCBhIHN1cHBvcnRlZCBwYXJ0aWFsIGVxdWl2YWxlbmN5IHJlbGF0aW9uLgorCitpbmxp bmUgaW50CitwZV90b19iaXRzIChyZWxhdGlvbl9raW5kIHQpCit7CisgIHN3aXRjaCAodCkKKyAg eworICAgIGNhc2UgVlJFTF9QRTg6CisgICAgICByZXR1cm4gODsKKyAgICBjYXNlIFZSRUxfUEUx NjoKKyAgICAgIHJldHVybiAxNjsKKyAgICBjYXNlIFZSRUxfUEUzMjoKKyAgICAgIHJldHVybiAz MjsKKyAgICBjYXNlIFZSRUxfUEU2NDoKKyAgICAgIHJldHVybiA2NDsKKyAgICBkZWZhdWx0Ogor ICAgICAgcmV0dXJuIDA7CisgIH0KK30KKworLy8gUmV0dXJuIHRoZSBwYXJ0aWFsIGVxdWl2YWxl bmN5IGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBudW1iZXIgb2YgQklUUy4KKy8vIHJldHVybiBW UkVMX1ZBUllJTkcgaWYgdGhlcmUgaXMgbm8gZXhhY3QgbWF0Y2guCisKK2lubGluZSByZWxhdGlv bl9raW5kCitiaXRzX3RvX3BlIChpbnQgYml0cykKK3sKKyAgc3dpdGNoIChiaXRzKQorICB7Cisg ICAgY2FzZSA4OgorICAgICAgcmV0dXJuIFZSRUxfUEU4OworICAgIGNhc2UgMTY6CisgICAgICBy ZXR1cm4gVlJFTF9QRTE2OworICAgIGNhc2UgMzI6CisgICAgICByZXR1cm4gVlJFTF9QRTMyOwor ICAgIGNhc2UgNjQ6CisgICAgICByZXR1cm4gVlJFTF9QRTY0OworICAgIGRlZmF1bHQ6CisgICAg ICByZXR1cm4gVlJFTF9WQVJZSU5HOworICB9Cit9CisKKy8vIEdpdmVuIHBhcnRpYWwgZXF1aXZh bGVuY2llcyBUMSBhbmQgVDIsIHJldHVybiB0aGUgc25tYWxsZXN0IGtpbmQuCisKK2lubGluZSBy ZWxhdGlvbl9raW5kCitwZV9taW4gKHJlbGF0aW9uX2tpbmQgdDEsIHJlbGF0aW9uX2tpbmQgdDIp Cit7CisgIGdjY19jaGVja2luZ19hc3NlcnQgKHJlbGF0aW9uX3BhcnRpYWxfZXF1aXZfcCAodDEp KTsKKyAgZ2NjX2NoZWNraW5nX2Fzc2VydCAocmVsYXRpb25fcGFydGlhbF9lcXVpdl9wICh0Mikp OworICAvLyBWUkVMX1BFIGFyZSBkZWNsYXJlZCBzbWFsbCB0byBsYXJnZSwgc28gc2ltcGxlIG1p biB3aWxsIHN1ZmZpY2UuCisgIHJldHVybiBNSU4gKHQxLCB0Mik7Cit9CiAjZW5kaWYgIC8qIEdD Q19WQUxVRV9SRUxBVElPTl9IICovCi0tIAoyLjM3LjMKCg== --------------L7NXCExHA9hdVPr8YKsSuw0T--