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 F1FAF3858D38 for ; Thu, 22 Sep 2022 18:56:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F1FAF3858D38 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=1663872994; 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: in-reply-to:in-reply-to:references:references; bh=mJ1WhW9AsBVAxd5cCTggc+MwGJPa4SSKJjstfEwSsZE=; b=hfZ9jhG+6mLQJceNK+DpaxSBhpzEKbMwIthlhhuC5pEc7XxkIbhRrcVD3qhWPDnPL1IUy+ jKJqKxz3OLQ3h1dTHEEM1dqAcX+/7ZhFkr96rcfZWNaBPYkWMXoIYTEEDx9GSmfckpXVwh zHoQ7KGDwgHHoh7d6dfeMBpw+l9y/kQ= Received: from mail-il1-f199.google.com (mail-il1-f199.google.com [209.85.166.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-373-j-5ANvjcMymt8eVKuz0IOQ-1; Thu, 22 Sep 2022 14:56:33 -0400 X-MC-Unique: j-5ANvjcMymt8eVKuz0IOQ-1 Received: by mail-il1-f199.google.com with SMTP id c7-20020a056e020bc700b002e59be6ce85so6194778ilu.12 for ; Thu, 22 Sep 2022 11:56:33 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date; bh=STZfviEEDRDJkKywvZnSMW+STbnK4vr6joSYOTS5iJw=; b=NaTssx7KPl6cStjbxEY4R8bwFCHkub7WSG5GSsEI+91IPdAOdtBBiZWubIZQ3YOwVB ZYjdl3gfJhCzQ0e7obnfXBdOe0C8vh4FGbOYlmKQcvIIJ01hI5KLGhTKkzZdPyx/f2KN TA2tOhqQ9jhUeU12DTTx9sHkK8cslepShWa6IaKxFmen9sdl41/E4aFv2BWIX2JUIyez MFaZ0iA0PGjAC04Fk20wcbJI2LgErbY3gRyG1C87weJjHFelkLKZXoIcNPi6zQOYzVPK Ccx6uxtLSOlNfmAeF8Ag5d+CCFAnpqimb31izVbeapmJ+h52j7kDhvqhuv4EwZEX5MaA 1H3g== X-Gm-Message-State: ACrzQf3rFYr8MLswGmrpsKjGNRG9ZuuEUrWld9T3NzGEeYMFqTdHtB0y MIM6Tr+Zb4JHDoUY3exOkybwTVXrcssmV+I+2f4/qazNvIaIq+nmVamvKnyY0l0btaoqkw9XYyi Cg/DoyPRO1HaH8mxiWtZH7PhIVFE2XQ053rKtV2p3HNxVLWCvziNbH9iqqAnHkHVWgW0OHg== X-Received: by 2002:a05:6638:430c:b0:35a:1c37:a343 with SMTP id bt12-20020a056638430c00b0035a1c37a343mr2766083jab.183.1663872992228; Thu, 22 Sep 2022 11:56:32 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6VJqf5vOJoysUjTuJk/e1107CJyvhBDZjTUAiqETIgd8db828BdCd/N0ZRyH96DruVN8NmEw== X-Received: by 2002:a05:6638:430c:b0:35a:1c37:a343 with SMTP id bt12-20020a056638430c00b0035a1c37a343mr2766068jab.183.1663872991894; Thu, 22 Sep 2022 11:56:31 -0700 (PDT) Received: from ?IPV6:2607:fea8:a263:f600::3dbe? ([2607:fea8:a263:f600::3dbe]) by smtp.gmail.com with ESMTPSA id m5-20020a023c05000000b0035ad6807a98sm2467092jaa.119.2022.09.22.11.56.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 22 Sep 2022 11:56:31 -0700 (PDT) Message-ID: <6d24be24-0924-f56b-7dfe-18b251b42ed5@redhat.com> Date: Thu, 22 Sep 2022 14:56:29 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.1 Subject: [PATCH 03/17] Create gimple_range_op_handler in a new source file. From: Andrew MacLeod To: gcc-patches Cc: "hernandez, aldy" References: <571782f9-72e6-5c30-da55-b8d62d3a153e@redhat.com> In-Reply-To: <571782f9-72e6-5c30-da55-b8d62d3a153e@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/mixed; boundary="------------faTfdGTLV3Igt0BKcESpALx6" Content-Language: en-US X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_LOW,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. --------------faTfdGTLV3Igt0BKcESpALx6 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit  Range-ops is meant to be IL independent.  Some gimple processing has be placed in range-ops, and some is located in gori.  Split it all into a file and isolate it in a new class gimple_range_op_handler. Bootstrapped on x86_64-pc-linux-gnu with no regressions.  Pushed. Andrew --------------faTfdGTLV3Igt0BKcESpALx6 Content-Type: text/x-patch; charset=UTF-8; name="0003-Create-gimple_range_op_handler-in-a-new-source-file.patch" Content-Disposition: attachment; filename*0="0003-Create-gimple_range_op_handler-in-a-new-source-file.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSA1MWNlMDYzODViZjI1OWEwOTJmODMwZjFhNmRjYzRiOTg3NTc5MTllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAcmVkaGF0LmNvbT4K RGF0ZTogVGh1LCAxIFNlcCAyMDIyIDEwOjM0OjU1IC0wNDAwClN1YmplY3Q6IFtQQVRDSCAwMy8x N10gQ3JlYXRlIGdpbXBsZV9yYW5nZV9vcF9oYW5kbGVyIGluIGEgbmV3IHNvdXJjZSBmaWxlLgoK UmFuZ2Utb3BzIGlzIG1lYW50IHRvIGJlIElMIGluZGVwZW5kZW50LiAgU29tZSBnaW1wbGUgcHJv Y2Vzc2luZyBoYXMKYmUgcGxhY2VkIGluIHJhbmdlLW9wcywgYW5kIHNvbWUgaXMgbG9jYXRlZCBp biBnb3JpLiAgU3BsaXQgaXQgYWxsIGludG8KYSBmaWxlIGFuZCBpc29sYXRlIGl0IGluIGEgbmV3 IGNsYXNzIGdpbXBsZV9yYW5nZV9vcF9oYW5kbGVyLgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBB ZGQgZ2ltcGxlLXJhbmdlLW9wLm8uCgkqIGdpbXBsZS1yYW5nZS1lZGdlLmNjIChnaW1wbGVfb3V0 Z29pbmdfcmFuZ2Vfc3RtdF9wKTogVXNlCglnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlci4KCSogZ2lt cGxlLXJhbmdlLWZvbGQuY2MgKGdpbXBsZV9yYW5nZV9iYXNlX29mX2Fzc2lnbm1lbnQpOiBNb3Zl Cgl0byBhIG1ldGhvZCBpbiBnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlci4KCShnaW1wbGVfcmFuZ2Vf b3BlcmFuZDEpOiBEaXR0by4KCShnaW1wbGVfcmFuZ2Vfb3BlcmFuZDIpOiBEaXR0by4KCShmb2xk X3VzaW5nX3JhbmdlOjpmb2xkX3N0bXQpOiBVc2UgZ2ltcGxlX3JhbmdlX29wX2hhbmRsZXIuCgko Zm9sZF91c2luZ19yYW5nZTo6cmFuZ2Vfb2ZfcmFuZ2Vfb3ApOiBEaXR0by4KCShmb2xkX3VzaW5n X3JhbmdlOjpyZWxhdGlvbl9mb2xkX2FuZF9vcik6IERpdHRvLgoJKGZ1cl9zb3VyY2U6OnJlZ2lz dGVyX291dGdvaW5nX2VkZ2VzKTogRGl0dG8uCgkoZ2ltcGxlX3JhbmdlX3NzYV9uYW1lcyk6IFJl bG9jYXRlIHRvIGdpbXBsZS1yYW5nZS1vcC5jYy4KCSogZ2ltcGxlLXJhbmdlLWZvbGQuaDogQWRq dXN0IHByb3RvdHlwZXMuCgkqIGdpbXBsZS1yYW5nZS1nb3JpLmNjIChnaW1wbGVfcmFuZ2VfY2Fs Y19vcDEpOiBNb3ZlCgl0byBhIG1ldGhvZCBpbiBnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlci4KCShn aW1wbGVfcmFuZ2VfY2FsY19vcDIpOiBEaXR0by4KCShnb3JpX2NvbXB1dGU6OmNvbXB1dGVfb3Bl cmFuZF9yYW5nZSk6IFVzZQoJZ2ltcGxlX3JhbmdlX29wX2hhbmRsZXIuCgkoZ29yaV9jb21wdXRl Ojpjb21wdXRlX2xvZ2ljYWxfb3BlcmFuZHMpOiBEaXR0by4KCShjb21wdXRlX29wZXJhbmQxX3Jh bmdlKTogRGl0dG8uCgkoZ29yaV9jb21wdXRlOjpjb21wdXRlX29wZXJhbmQyX3JhbmdlKTogRGl0 dG8uCgkoZ29yaV9jb21wdXRlOjpjb21wdXRlX29wZXJhbmQxX2FuZF9vcGVyYW5kMl9yYW5nZSk6 IERpdHRvLgoJKiBnaW1wbGUtcmFuZ2UtZ29yaS5oOiBBZGp1c3QgcHJvdG95cGVzLgoJKiBnaW1w bGUtcmFuZ2Utb3AuY2M6IE5ldy4gIFN1cHBseSBnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlciBtZXRo b2RzLgoJKiBnaW1wbGUtcmFuZ2Utb3AuaDogTmV3LiAgU3VwcGx5IGdpbXBsZV9yYW5nZV9vcF9o YW5kbGVyIGNsYXNzLgoJKiBnaW1wbGUtcmFuZ2UuY2MgKGdpbXBsZV9yYW5nZXI6OnByZWZpbGxf bmFtZSk6IFVzZQoJZ2ltcGxlX3JhbmdlX29wX2hhbmRsZXIuCgkoZ2ltcGxlX3Jhbmdlcjo6cHJl ZmlsbF9zdG10X2RlcGVuZGVuY2llcyk6IERpdHRvLgoJKiBnaW1wbGUtcmFuZ2UuaDogSW5jbHVk ZSBnaW1wbGUtcmFuZ2Utb3AuaC4KCSogcmFuZ2Utb3AuY2MgKHJhbmdlX29wX2hhbmRsZXI6OnJh bmdlX29wX2hhbmRsZXIpOiBBZGp1c3QgYW5kCglyZW1vdmUgZ2ltcGxlICogcGFyYW1ldGVyIG9w dGlvbi4KCSogcmFuZ2Utb3AuaDogQWRqdXN0IHByb3RvdHlwZXMuCi0tLQogZ2NjL01ha2VmaWxl LmluICAgICAgICAgIHwgICAxICsKIGdjYy9naW1wbGUtcmFuZ2UtZWRnZS5jYyB8ICAgMiArLQog Z2NjL2dpbXBsZS1yYW5nZS1mb2xkLmNjIHwgMTUzICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQog Z2NjL2dpbXBsZS1yYW5nZS1mb2xkLmggIHwgIDEyICstCiBnY2MvZ2ltcGxlLXJhbmdlLWdvcmku Y2MgfCAxMzQgKysrKysrLS0tLS0tLS0tLS0tLS0tCiBnY2MvZ2ltcGxlLXJhbmdlLWdvcmkuaCAg fCAgMjcgKystLS0KIGdjYy9naW1wbGUtcmFuZ2Utb3AuY2MgICB8IDI0NSArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIGdjYy9naW1wbGUtcmFuZ2Utb3AuaCAgICB8ICA1 MSArKysrKysrKwogZ2NjL2dpbXBsZS1yYW5nZS5jYyAgICAgIHwgIDExICstCiBnY2MvZ2ltcGxl LXJhbmdlLmggICAgICAgfCAgIDIgKy0KIGdjYy9yYW5nZS1vcC5jYyAgICAgICAgICB8ICAzNyAr Ky0tLS0KIGdjYy9yYW5nZS1vcC5oICAgICAgICAgICB8ICAgNCArLQogMTIgZmlsZXMgY2hhbmdl ZCwgMzg2IGluc2VydGlvbnMoKyksIDI5MyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvZ2ltcGxlLXJhbmdlLW9wLmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL2dpbXBsZS1y YW5nZS1vcC5oCgpkaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmlu CmluZGV4IGE0Njg5ZDUyZTM2Li41OWI2N2Q5OTQ0MSAxMDA2NDQKLS0tIGEvZ2NjL01ha2VmaWxl LmluCisrKyBiL2djYy9NYWtlZmlsZS5pbgpAQCAtMTQxNiw2ICsxNDE2LDcgQEAgT0JKUyA9IFwK IAlnaW1wbGUtcmFuZ2UtZm9sZC5vIFwKIAlnaW1wbGUtcmFuZ2UtZ29yaS5vIFwKIAlnaW1wbGUt cmFuZ2UtaW5mZXIubyBcCisJZ2ltcGxlLXJhbmdlLW9wLm8gXAogCWdpbXBsZS1yYW5nZS10cmFj ZS5vIFwKIAlnaW1wbGUtc3NhLWJhY2twcm9wLm8gXAogCWdpbXBsZS1zc2EtaXNvbGF0ZS1wYXRo cy5vIFwKZGlmZiAtLWdpdCBhL2djYy9naW1wbGUtcmFuZ2UtZWRnZS5jYyBiL2djYy9naW1wbGUt cmFuZ2UtZWRnZS5jYwppbmRleCAxOTRlOGY4N2E0Yi4uOTVkZWFkZmZjNTUgMTAwNjQ0Ci0tLSBh L2djYy9naW1wbGUtcmFuZ2UtZWRnZS5jYworKysgYi9nY2MvZ2ltcGxlLXJhbmdlLWVkZ2UuY2MK QEAgLTQzLDcgKzQzLDcgQEAgZ2ltcGxlX291dGdvaW5nX3JhbmdlX3N0bXRfcCAoYmFzaWNfYmxv Y2sgYmIpCiAgIGlmICghZ3NpX2VuZF9wIChnc2kpKQogICAgIHsKICAgICAgIGdpbXBsZSAqcyA9 IGdzaV9zdG10IChnc2kpOwotICAgICAgaWYgKGlzX2E8Z2NvbmQgKj4gKHMpICYmIHJhbmdlX29w X2hhbmRsZXIgKHMpKQorICAgICAgaWYgKGlzX2E8Z2NvbmQgKj4gKHMpICYmIGdpbXBsZV9yYW5n ZV9vcF9oYW5kbGVyOjpzdXBwb3J0ZWRfcCAocykpCiAJcmV0dXJuIGdzaV9zdG10IChnc2kpOwog ICAgICAgaWYgKGlzX2EgPGdzd2l0Y2ggKj4gKHMpKQogCXJldHVybiBnc2lfc3RtdCAoZ3NpKTsK ZGlmZiAtLWdpdCBhL2djYy9naW1wbGUtcmFuZ2UtZm9sZC5jYyBiL2djYy9naW1wbGUtcmFuZ2Ut Zm9sZC5jYwppbmRleCBhNDVmYzdhZDRjNi4uYWRkZjNlN2YyNTQgMTAwNjQ0Ci0tLSBhL2djYy9n aW1wbGUtcmFuZ2UtZm9sZC5jYworKysgYi9nY2MvZ2ltcGxlLXJhbmdlLWZvbGQuY2MKQEAgLTQy LDcgKzQyLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5v dCBzZWUKICNpbmNsdWRlICJ2ci12YWx1ZXMuaCIKICNpbmNsdWRlICJyYW5nZS5oIgogI2luY2x1 ZGUgInZhbHVlLXF1ZXJ5LmgiCi0jaW5jbHVkZSAicmFuZ2Utb3AuaCIKKyNpbmNsdWRlICJnaW1w bGUtcmFuZ2Utb3AuaCIKICNpbmNsdWRlICJnaW1wbGUtcmFuZ2UuaCIKIC8vIENvbnN0cnVjdCBh IGZ1cl9zb3VyY2UsIGFuZCBzZXQgdGhlIG1fcXVlcnkgZmllbGQuCiAKQEAgLTQ2Myw3MyArNDYz LDYgQEAgZ2ltcGxlX3JhbmdlX2FkanVzdG1lbnQgKHZyYW5nZSAmcmVzLCBjb25zdCBnaW1wbGUg KnN0bXQpCiAgICAgfQogfQogCi0vLyBSZXR1cm4gdGhlIGJhc2Ugb2YgdGhlIFJIUyBvZiBhbiBh c3NpZ25tZW50LgotCi1zdGF0aWMgdHJlZQotZ2ltcGxlX3JhbmdlX2Jhc2Vfb2ZfYXNzaWdubWVu dCAoY29uc3QgZ2ltcGxlICpzdG10KQotewotICBnY2NfY2hlY2tpbmdfYXNzZXJ0IChnaW1wbGVf Y29kZSAoc3RtdCkgPT0gR0lNUExFX0FTU0lHTik7Ci0gIHRyZWUgb3AxID0gZ2ltcGxlX2Fzc2ln bl9yaHMxIChzdG10KTsKLSAgaWYgKGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKHN0bXQpID09IEFE RFJfRVhQUikKLSAgICByZXR1cm4gZ2V0X2Jhc2VfYWRkcmVzcyAoVFJFRV9PUEVSQU5EIChvcDEs IDApKTsKLSAgcmV0dXJuIG9wMTsKLX0KLQotLy8gUmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIG9m IHRoaXMgc3RhdGVtZW50IGlmIGl0IGlzIGEgdmFsaWQgb3BlcmFuZAotLy8gc3VwcG9ydGVkIGJ5 IHJhbmdlcywgb3RoZXJ3aXNlIHJldHVybiBOVUxMX1RSRUUuICBTcGVjaWFsIGNhc2UgaXMKLS8v ICYoU1NBX05BTUUgZXhwciksIHJldHVybiB0aGUgU1NBX05BTUUgaW5zdGVhZCBvZiB0aGUgQURE UiBleHByLgotCi10cmVlCi1naW1wbGVfcmFuZ2Vfb3BlcmFuZDEgKGNvbnN0IGdpbXBsZSAqc3Rt dCkKLXsKLSAgZ2NjX2NoZWNraW5nX2Fzc2VydCAocmFuZ2Vfb3BfaGFuZGxlciAoc3RtdCkpOwot Ci0gIHN3aXRjaCAoZ2ltcGxlX2NvZGUgKHN0bXQpKQotICAgIHsKLSAgICAgIGNhc2UgR0lNUExF X0NPTkQ6Ci0JcmV0dXJuIGdpbXBsZV9jb25kX2xocyAoc3RtdCk7Ci0gICAgICBjYXNlIEdJTVBM RV9BU1NJR046Ci0JewotCSAgdHJlZSBiYXNlID0gZ2ltcGxlX3JhbmdlX2Jhc2Vfb2ZfYXNzaWdu bWVudCAoc3RtdCk7Ci0JICBpZiAoYmFzZSAmJiBUUkVFX0NPREUgKGJhc2UpID09IE1FTV9SRUYp Ci0JICAgIHsKLQkgICAgICAvLyBJZiB0aGUgYmFzZSBhZGRyZXNzIGlzIGFuIFNTQV9OQU1FLCB3 ZSByZXR1cm4gaXQKLQkgICAgICAvLyBoZXJlLiAgVGhpcyBhbGxvd3MgcHJvY2Vzc2luZyBvZiB0 aGUgcmFuZ2Ugb2YgdGhhdAotCSAgICAgIC8vIG5hbWUsIHdoaWxlIHRoZSByZXN0IG9mIHRoZSBl eHByZXNzaW9uIGlzIHNpbXBseQotCSAgICAgIC8vIGlnbm9yZWQuICBUaGUgY29kZSBpbiByYW5n ZV9vcHMgd2lsbCBzZWUgdGhlCi0JICAgICAgLy8gQUREUl9FWFBSIGFuZCBkbyB0aGUgcmlnaHQg dGhpbmcuCi0JICAgICAgdHJlZSBzc2EgPSBUUkVFX09QRVJBTkQgKGJhc2UsIDApOwotCSAgICAg IGlmIChUUkVFX0NPREUgKHNzYSkgPT0gU1NBX05BTUUpCi0JCXJldHVybiBzc2E7Ci0JICAgIH0K LQkgIHJldHVybiBiYXNlOwotCX0KLSAgICAgIGRlZmF1bHQ6Ci0JYnJlYWs7Ci0gICAgfQotICBy ZXR1cm4gTlVMTDsKLX0KLQotLy8gUmV0dXJuIHRoZSBzZWNvbmQgb3BlcmFuZCBvZiBzdGF0ZW1l bnQgU1RNVCwgb3RoZXJ3aXNlIHJldHVybiBOVUxMX1RSRUUuCi0KLXRyZWUKLWdpbXBsZV9yYW5n ZV9vcGVyYW5kMiAoY29uc3QgZ2ltcGxlICpzdG10KQotewotICBnY2NfY2hlY2tpbmdfYXNzZXJ0 IChyYW5nZV9vcF9oYW5kbGVyIChzdG10KSk7Ci0KLSAgc3dpdGNoIChnaW1wbGVfY29kZSAoc3Rt dCkpCi0gICAgewotICAgIGNhc2UgR0lNUExFX0NPTkQ6Ci0gICAgICByZXR1cm4gZ2ltcGxlX2Nv bmRfcmhzIChzdG10KTsKLSAgICBjYXNlIEdJTVBMRV9BU1NJR046Ci0gICAgICBpZiAoZ2ltcGxl X251bV9vcHMgKHN0bXQpID49IDMpCi0JcmV0dXJuIGdpbXBsZV9hc3NpZ25fcmhzMiAoc3RtdCk7 Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgcmV0dXJuIE5VTExfVFJFRTsK LX0KLQogLy8gQ2FsY3VsYXRlIGEgcmFuZ2UgZm9yIHN0YXRlbWVudCBTIGFuZCByZXR1cm4gaXQg aW4gUi4gSWYgTkFNRSBpcyBwcm92aWRlZCBpdAogLy8gcmVwcmVzZW50cyB0aGUgU1NBX05BTUUg b24gdGhlIExIUyBvZiB0aGUgc3RhdGVtZW50LiBJdCBpcyBvbmx5IHJlcXVpcmVkCiAvLyBpZiB0 aGVyZSBpcyBtb3JlIHRoYW4gb25lIGxocy9vdXRwdXQuICBJZiBhIHJhbmdlIGNhbm5vdApAQCAt NTUxLDggKzQ4NCw5IEBAIGZvbGRfdXNpbmdfcmFuZ2U6OmZvbGRfc3RtdCAodnJhbmdlICZyLCBn aW1wbGUgKnMsIGZ1cl9zb3VyY2UgJnNyYywgdHJlZSBuYW1lKQogICAgICAgJiYgZ2ltcGxlX2Fz c2lnbl9yaHNfY29kZSAocykgPT0gQUREUl9FWFBSKQogICAgIHJldHVybiByYW5nZV9vZl9hZGRy ZXNzIChhc19hIDxpcmFuZ2U+IChyKSwgcywgc3JjKTsKIAotICBpZiAocmFuZ2Vfb3BfaGFuZGxl ciAocykpCi0gICAgcmVzID0gcmFuZ2Vfb2ZfcmFuZ2Vfb3AgKHIsIHMsIHNyYyk7CisgIGdpbXBs ZV9yYW5nZV9vcF9oYW5kbGVyIGhhbmRsZXIgKHMpOworICBpZiAoaGFuZGxlcikKKyAgICByZXMg PSByYW5nZV9vZl9yYW5nZV9vcCAociwgaGFuZGxlciwgc3JjKTsKICAgZWxzZSBpZiAoaXNfYTxn cGhpICo+KHMpKQogICAgIHJlcyA9IHJhbmdlX29mX3BoaSAociwgYXNfYTxncGhpICo+IChzKSwg c3JjKTsKICAgZWxzZSBpZiAoaXNfYTxnY2FsbCAqPihzKSkKQEAgLTU4NywxNyArNTIxLDE5IEBA IGZvbGRfdXNpbmdfcmFuZ2U6OmZvbGRfc3RtdCAodnJhbmdlICZyLCBnaW1wbGUgKnMsIGZ1cl9z b3VyY2UgJnNyYywgdHJlZSBuYW1lKQogLy8gSWYgYSByYW5nZSBjYW5ub3QgYmUgY2FsY3VsYXRl ZCwgcmV0dXJuIGZhbHNlLgogCiBib29sCi1mb2xkX3VzaW5nX3JhbmdlOjpyYW5nZV9vZl9yYW5n ZV9vcCAodnJhbmdlICZyLCBnaW1wbGUgKnMsIGZ1cl9zb3VyY2UgJnNyYykKK2ZvbGRfdXNpbmdf cmFuZ2U6OnJhbmdlX29mX3JhbmdlX29wICh2cmFuZ2UgJnIsCisJCQkJICAgICBnaW1wbGVfcmFu Z2Vfb3BfaGFuZGxlciAmaGFuZGxlciwKKwkJCQkgICAgIGZ1cl9zb3VyY2UgJnNyYykKIHsKKyAg Z2NjX2NoZWNraW5nX2Fzc2VydCAoaGFuZGxlcik7CisgIGdpbXBsZSAqcyA9IGhhbmRsZXIuc3Rt dCAoKTsKICAgdHJlZSB0eXBlID0gZ2ltcGxlX3JhbmdlX3R5cGUgKHMpOwogICBpZiAoIXR5cGUp CiAgICAgcmV0dXJuIGZhbHNlOwotICByYW5nZV9vcF9oYW5kbGVyIGhhbmRsZXIgKHMpOwotICBn Y2NfY2hlY2tpbmdfYXNzZXJ0IChoYW5kbGVyKTsKIAotICB0cmVlIGxocyA9IGdpbXBsZV9nZXRf bGhzIChzKTsKLSAgdHJlZSBvcDEgPSBnaW1wbGVfcmFuZ2Vfb3BlcmFuZDEgKHMpOwotICB0cmVl IG9wMiA9IGdpbXBsZV9yYW5nZV9vcGVyYW5kMiAocyk7CisgIHRyZWUgbGhzID0gaGFuZGxlci5s aHMgKCk7CisgIHRyZWUgb3AxID0gaGFuZGxlci5vcGVyYW5kMSAoKTsKKyAgdHJlZSBvcDIgPSBo YW5kbGVyLm9wZXJhbmQyICgpOwogICBWYWx1ZV9SYW5nZSByYW5nZTEgKFRSRUVfVFlQRSAob3Ax KSk7CiAgIFZhbHVlX1JhbmdlIHJhbmdlMiAob3AyID8gVFJFRV9UWVBFIChvcDIpIDogVFJFRV9U WVBFIChvcDEpKTsKIApAQCAtMTQzMCw5ICsxMzY2LDEwIEBAIGZvbGRfdXNpbmdfcmFuZ2U6OnJl bGF0aW9uX2ZvbGRfYW5kX29yIChpcmFuZ2UmIGxoc19yYW5nZSwgZ2ltcGxlICpzLAogICBlbHNl IGlmIChjb2RlICE9IEJJVF9JT1JfRVhQUiAmJiBjb2RlICE9IFRSVVRIX09SX0VYUFIpCiAgICAg cmV0dXJuOwogCi0gIHRyZWUgbGhzID0gZ2ltcGxlX2dldF9saHMgKHMpOwotICB0cmVlIHNzYTEg PSBnaW1wbGVfcmFuZ2Vfc3NhX3AgKGdpbXBsZV9yYW5nZV9vcGVyYW5kMSAocykpOwotICB0cmVl IHNzYTIgPSBnaW1wbGVfcmFuZ2Vfc3NhX3AgKGdpbXBsZV9yYW5nZV9vcGVyYW5kMiAocykpOwor ICBnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlciBoYW5kbGVyIChzKTsKKyAgdHJlZSBsaHMgPSBoYW5k bGVyLmxocyAoKTsKKyAgdHJlZSBzc2ExID0gZ2ltcGxlX3JhbmdlX3NzYV9wIChoYW5kbGVyLm9w ZXJhbmQxICgpKTsKKyAgdHJlZSBzc2EyID0gZ2ltcGxlX3JhbmdlX3NzYV9wIChoYW5kbGVyLm9w ZXJhbmQyICgpKTsKIAogICAvLyBEZWFsIHdpdGggfHwgYW5kICYmIG9ubHkgd2hlbiB0aGVyZSBp cyBhIGZ1bGwgc2V0IG9mIHN5bWJvbGljcy4KICAgaWYgKCFsaHMgfHwgIXNzYTEgfHwgIXNzYTIK QEAgLTE0NDgsMTggKzEzODUsMTggQEAgZm9sZF91c2luZ19yYW5nZTo6cmVsYXRpb25fZm9sZF9h bmRfb3IgKGlyYW5nZSYgbGhzX3JhbmdlLCBnaW1wbGUgKnMsCiAgIGdpbXBsZSAqc3NhMV9zdG10 ID0gU1NBX05BTUVfREVGX1NUTVQgKHNzYTEpOwogICBnaW1wbGUgKnNzYTJfc3RtdCA9IFNTQV9O QU1FX0RFRl9TVE1UIChzc2EyKTsKIAotICByYW5nZV9vcF9oYW5kbGVyIGhhbmRsZXIxIChTU0Ff TkFNRV9ERUZfU1RNVCAoc3NhMSkpOwotICByYW5nZV9vcF9oYW5kbGVyIGhhbmRsZXIyIChTU0Ff TkFNRV9ERUZfU1RNVCAoc3NhMikpOworICBnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlciBoYW5kbGVy MSAoc3NhMV9zdG10KTsKKyAgZ2ltcGxlX3JhbmdlX29wX2hhbmRsZXIgaGFuZGxlcjIgKHNzYTJf c3RtdCk7CiAKICAgLy8gSWYgZWl0aGVyIGhhbmRsZXIgaXMgbm90IHByZXNlbnQsIG5vIHJlbGF0 aW9uIGNhbiBiZSBmb3VuZC4KICAgaWYgKCFoYW5kbGVyMSB8fCAhaGFuZGxlcjIpCiAgICAgcmV0 dXJuOwogCiAgIC8vIEJvdGggc3RtdHMgd2lsbCBuZWVkIHRvIGhhdmUgMiBzc2EgbmFtZXMgaW4g dGhlIHN0bXQuCi0gIHRyZWUgc3NhMV9kZXAxID0gZ2ltcGxlX3JhbmdlX3NzYV9wIChnaW1wbGVf cmFuZ2Vfb3BlcmFuZDEgKHNzYTFfc3RtdCkpOwotICB0cmVlIHNzYTFfZGVwMiA9IGdpbXBsZV9y YW5nZV9zc2FfcCAoZ2ltcGxlX3JhbmdlX29wZXJhbmQyIChzc2ExX3N0bXQpKTsKLSAgdHJlZSBz c2EyX2RlcDEgPSBnaW1wbGVfcmFuZ2Vfc3NhX3AgKGdpbXBsZV9yYW5nZV9vcGVyYW5kMSAoc3Nh Ml9zdG10KSk7Ci0gIHRyZWUgc3NhMl9kZXAyID0gZ2ltcGxlX3JhbmdlX3NzYV9wIChnaW1wbGVf cmFuZ2Vfb3BlcmFuZDIgKHNzYTJfc3RtdCkpOworICB0cmVlIHNzYTFfZGVwMSA9IGdpbXBsZV9y YW5nZV9zc2FfcCAoaGFuZGxlcjEub3BlcmFuZDEgKCkpOworICB0cmVlIHNzYTFfZGVwMiA9IGdp bXBsZV9yYW5nZV9zc2FfcCAoaGFuZGxlcjEub3BlcmFuZDIgKCkpOworICB0cmVlIHNzYTJfZGVw MSA9IGdpbXBsZV9yYW5nZV9zc2FfcCAoaGFuZGxlcjIub3BlcmFuZDEgKCkpOworICB0cmVlIHNz YTJfZGVwMiA9IGdpbXBsZV9yYW5nZV9zc2FfcCAoaGFuZGxlcjIub3BlcmFuZDIgKCkpOwogCiAg IGlmICghc3NhMV9kZXAxIHx8ICFzc2ExX2RlcDIgfHwgIXNzYTJfZGVwMSB8fCAhc3NhMl9kZXAy KQogICAgIHJldHVybjsKQEAgLTE1MTYsNyArMTQ1Myw3IEBAIGZ1cl9zb3VyY2U6OnJlZ2lzdGVy X291dGdvaW5nX2VkZ2VzIChnY29uZCAqcywgaXJhbmdlICZsaHNfcmFuZ2UsIGVkZ2UgZTAsIGVk Z2UKICAgdHJlZSBuYW1lOwogICBiYXNpY19ibG9jayBiYiA9IGdpbXBsZV9iYiAocyk7CiAKLSAg cmFuZ2Vfb3BfaGFuZGxlciBoYW5kbGVyIChzKTsKKyAgZ2ltcGxlX3JhbmdlX29wX2hhbmRsZXIg aGFuZGxlciAocyk7CiAgIGlmICghaGFuZGxlcikKICAgICByZXR1cm47CiAKQEAgLTE1MjksNyAr MTQ2Niw2IEBAIGZ1cl9zb3VyY2U6OnJlZ2lzdGVyX291dGdvaW5nX2VkZ2VzIChnY29uZCAqcywg aXJhbmdlICZsaHNfcmFuZ2UsIGVkZ2UgZTAsIGVkZ2UKIAllMCA9IE5VTEw7CiAgICAgfQogCi0K ICAgaWYgKGUxKQogICAgIHsKICAgICAgIC8vIElmIHRoaXMgZWRnZSBpcyBuZXZlciB0YWtlbiwg aWdub3JlIGl0LgpAQCAtMTU0NCw4ICsxNDgwLDggQEAgZnVyX3NvdXJjZTo6cmVnaXN0ZXJfb3V0 Z29pbmdfZWRnZXMgKGdjb25kICpzLCBpcmFuZ2UgJmxoc19yYW5nZSwgZWRnZSBlMCwgZWRnZQog CiAgIC8vIEZpcnN0LCByZWdpc3RlciB0aGUgZ2NvbmQgaXRzZWxmLiAgVGhpcyB3aWxsIGNhdGNo IHN0YXRlbWVudHMgbGlrZQogICAvLyBpZiAoYV8yIDwgYl81KQotICB0cmVlIHNzYTEgPSBnaW1w bGVfcmFuZ2Vfc3NhX3AgKGdpbXBsZV9yYW5nZV9vcGVyYW5kMSAocykpOwotICB0cmVlIHNzYTIg PSBnaW1wbGVfcmFuZ2Vfc3NhX3AgKGdpbXBsZV9yYW5nZV9vcGVyYW5kMiAocykpOworICB0cmVl IHNzYTEgPSBnaW1wbGVfcmFuZ2Vfc3NhX3AgKGhhbmRsZXIub3BlcmFuZDEgKCkpOworICB0cmVl IHNzYTIgPSBnaW1wbGVfcmFuZ2Vfc3NhX3AgKGhhbmRsZXIub3BlcmFuZDIgKCkpOwogICBpZiAo c3NhMSAmJiBzc2EyKQogICAgIHsKICAgICAgIGlmIChlMCkKQEAgLTE1NzUsMTEgKzE1MTEsMTEg QEAgZnVyX3NvdXJjZTo6cmVnaXN0ZXJfb3V0Z29pbmdfZWRnZXMgKGdjb25kICpzLCBpcmFuZ2Ug Jmxoc19yYW5nZSwgZWRnZSBlMCwgZWRnZQogICAgICAgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBF IChuYW1lKSkgIT0gQk9PTEVBTl9UWVBFKQogCWNvbnRpbnVlOwogICAgICAgZ2ltcGxlICpzdG10 ID0gU1NBX05BTUVfREVGX1NUTVQgKG5hbWUpOwotICAgICAgcmFuZ2Vfb3BfaGFuZGxlciBoYW5k bGVyIChzdG10KTsKKyAgICAgIGdpbXBsZV9yYW5nZV9vcF9oYW5kbGVyIGhhbmRsZXIgKHN0bXQp OwogICAgICAgaWYgKCFoYW5kbGVyKQogCWNvbnRpbnVlOwotICAgICAgdHJlZSBzc2ExID0gZ2lt cGxlX3JhbmdlX3NzYV9wIChnaW1wbGVfcmFuZ2Vfb3BlcmFuZDEgKHN0bXQpKTsKLSAgICAgIHRy ZWUgc3NhMiA9IGdpbXBsZV9yYW5nZV9zc2FfcCAoZ2ltcGxlX3JhbmdlX29wZXJhbmQyIChzdG10 KSk7CisgICAgICB0cmVlIHNzYTEgPSBnaW1wbGVfcmFuZ2Vfc3NhX3AgKGhhbmRsZXIub3BlcmFu ZDEgKCkpOworICAgICAgdHJlZSBzc2EyID0gZ2ltcGxlX3JhbmdlX3NzYV9wIChoYW5kbGVyLm9w ZXJhbmQyICgpKTsKICAgICAgIFZhbHVlX1JhbmdlIHIgKFRSRUVfVFlQRSAobmFtZSkpOwogICAg ICAgaWYgKHNzYTEgJiYgc3NhMikKIAl7CkBAIC0xNjAwLDM2ICsxNTM2LDMgQEAgZnVyX3NvdXJj ZTo6cmVnaXN0ZXJfb3V0Z29pbmdfZWRnZXMgKGdjb25kICpzLCBpcmFuZ2UgJmxoc19yYW5nZSwg ZWRnZSBlMCwgZWRnZQogCX0KICAgICB9CiB9Ci0KLS8vIEdpdmVuIHN0bXQgUywgZmlsbCBWRUMs IHVwIHRvIFZFQ19TSVpFIGVsZW1lbnRzLCB3aXRoIHJlbGV2YW50IHNzYS1uYW1lcwotLy8gb24g dGhlIHN0YXRlbWVudC4gIEZvciBlZmZpY2llbmN5LCBpdCBpcyBhbiBlcnJvciB0byBub3QgcGFz cyBpbiBlbm91Z2gKLS8vIGVsZW1lbnRzIGZvciB0aGUgdmVjdG9yLiAgUmV0dXJuIHRoZSBudW1i ZXIgb2Ygc3NhLW5hbWVzLgotCi11bnNpZ25lZAotZ2ltcGxlX3JhbmdlX3NzYV9uYW1lcyAodHJl ZSAqdmVjLCB1bnNpZ25lZCB2ZWNfc2l6ZSwgZ2ltcGxlICpzdG10KQotewotICB0cmVlIHNzYTsK LSAgaW50IGNvdW50ID0gMDsKLQotICBpZiAocmFuZ2Vfb3BfaGFuZGxlciAoc3RtdCkpCi0gICAg ewotICAgICAgZ2NjX2NoZWNraW5nX2Fzc2VydCAodmVjX3NpemUgPj0gMik7Ci0gICAgICBpZiAo KHNzYSA9IGdpbXBsZV9yYW5nZV9zc2FfcCAoZ2ltcGxlX3JhbmdlX29wZXJhbmQxIChzdG10KSkp KQotCXZlY1tjb3VudCsrXSA9IHNzYTsKLSAgICAgIGlmICgoc3NhID0gZ2ltcGxlX3JhbmdlX3Nz YV9wIChnaW1wbGVfcmFuZ2Vfb3BlcmFuZDIgKHN0bXQpKSkpCi0JdmVjW2NvdW50KytdID0gc3Nh OwotICAgIH0KLSAgZWxzZSBpZiAoaXNfYTxnYXNzaWduICo+IChzdG10KQotCSAgICYmIGdpbXBs ZV9hc3NpZ25fcmhzX2NvZGUgKHN0bXQpID09IENPTkRfRVhQUikKLSAgICB7Ci0gICAgICBnY2Nf Y2hlY2tpbmdfYXNzZXJ0ICh2ZWNfc2l6ZSA+PSAzKTsKLSAgICAgIGdhc3NpZ24gKnN0ID0gYXNf YTxnYXNzaWduICo+IChzdG10KTsKLSAgICAgIGlmICgoc3NhID0gZ2ltcGxlX3JhbmdlX3NzYV9w IChnaW1wbGVfYXNzaWduX3JoczEgKHN0KSkpKQotCXZlY1tjb3VudCsrXSA9IHNzYTsKLSAgICAg IGlmICgoc3NhID0gZ2ltcGxlX3JhbmdlX3NzYV9wIChnaW1wbGVfYXNzaWduX3JoczIgKHN0KSkp KQotCXZlY1tjb3VudCsrXSA9IHNzYTsKLSAgICAgIGlmICgoc3NhID0gZ2ltcGxlX3JhbmdlX3Nz YV9wIChnaW1wbGVfYXNzaWduX3JoczMgKHN0KSkpKQotCXZlY1tjb3VudCsrXSA9IHNzYTsKLSAg ICB9Ci0gIHJldHVybiBjb3VudDsKLX0KZGlmZiAtLWdpdCBhL2djYy9naW1wbGUtcmFuZ2UtZm9s ZC5oIGIvZ2NjL2dpbXBsZS1yYW5nZS1mb2xkLmgKaW5kZXggZjJlYWI3MjAyMTMuLmNlMThjNjZi OGU3IDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLXJhbmdlLWZvbGQuaAorKysgYi9nY2MvZ2ltcGxl LXJhbmdlLWZvbGQuaApAQCAtOTYsMTUgKzk2LDYgQEAgcmFuZ2VfY29tcGF0aWJsZV9wICh0cmVl IHR5cGUxLCB0cmVlIHR5cGUyKQogCSAgJiYgVFlQRV9TSUdOICh0eXBlMSkgPT0gVFlQRV9TSUdO ICh0eXBlMikpOwogfQogCi1leHRlcm4gdHJlZSBnaW1wbGVfcmFuZ2Vfb3BlcmFuZDEgKGNvbnN0 IGdpbXBsZSAqcyk7Ci1leHRlcm4gdHJlZSBnaW1wbGVfcmFuZ2Vfb3BlcmFuZDIgKGNvbnN0IGdp bXBsZSAqcyk7Ci0KLS8vIEdpdmVuIHN0bXQgUywgZmlsbCBWRUMsIHVwIHRvIFZFQ19TSVpFIGVs ZW1lbnRzLCB3aXRoIHJlbGV2YW50IHNzYS1uYW1lcwotLy8gb24gdGhlIHN0YXRlbWVudC4gIEZv ciBlZmZpY2llbmN5LCBpdCBpcyBhbiBlcnJvciB0byBub3QgcGFzcyBpbiBlbm91Z2gKLS8vIGVs ZW1lbnRzIGZvciB0aGUgdmVjdG9yLiAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygc3NhLW5hbWVzLgot Ci11bnNpZ25lZCBnaW1wbGVfcmFuZ2Vfc3NhX25hbWVzICh0cmVlICp2ZWMsIHVuc2lnbmVkIHZl Y19zaXplLCBnaW1wbGUgKnN0bXQpOwotCiAvLyBTb3VyY2Ugb2YgYWxsIG9wZXJhbmRzIGZvciBm b2xkX3VzaW5nX3JhbmdlIGFuZCBnb3JpX2NvbXB1dGUuCiAvLyBJdCBhYnN0cmFjdHMgb3V0IHRo ZSBzb3VyY2Ugb2YgYW4gb3BlcmFuZCBzbyBpdCBjYW4gY29tZSBmcm9tIGEgc3RtdCBvcgogLy8g YW5kIGVkZ2Ugb3IgYW55d2hlcmUgYSBkZXJpdmVkIGNsYXNzIG9mIGZ1cl9zb3VyY2Ugd2FudHMu CkBAIC0xNjksNyArMTYwLDggQEAgcHVibGljOgogICBib29sIGZvbGRfc3RtdCAodnJhbmdlICZy LCBnaW1wbGUgKnMsIGNsYXNzIGZ1cl9zb3VyY2UgJnNyYywKIAkJICB0cmVlIG5hbWUgPSBOVUxM X1RSRUUpOwogcHJvdGVjdGVkOgotICBib29sIHJhbmdlX29mX3JhbmdlX29wICh2cmFuZ2UgJnIs IGdpbXBsZSAqcywgZnVyX3NvdXJjZSAmc3JjKTsKKyAgYm9vbCByYW5nZV9vZl9yYW5nZV9vcCAo dnJhbmdlICZyLCBnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlciAmaGFuZGxlciwKKwkJCSAgZnVyX3Nv dXJjZSAmc3JjKTsKICAgYm9vbCByYW5nZV9vZl9jYWxsICh2cmFuZ2UgJnIsIGdjYWxsICpjYWxs LCBmdXJfc291cmNlICZzcmMpOwogICBib29sIHJhbmdlX29mX2NvbmRfZXhwciAodnJhbmdlICZy LCBnYXNzaWduKiBjb25kLCBmdXJfc291cmNlICZzcmMpOwogICBib29sIHJhbmdlX29mX2FkZHJl c3MgKGlyYW5nZSAmciwgZ2ltcGxlICpzLCBmdXJfc291cmNlICZzcmMpOwpkaWZmIC0tZ2l0IGEv Z2NjL2dpbXBsZS1yYW5nZS1nb3JpLmNjIGIvZ2NjL2dpbXBsZS1yYW5nZS1nb3JpLmNjCmluZGV4 IDk1N2I4ZDU0M2ZhLi40MGIyZjJmNmFlOSAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1yYW5nZS1n b3JpLmNjCisrKyBiL2djYy9naW1wbGUtcmFuZ2UtZ29yaS5jYwpAQCAtMjksODMgKzI5LDYgQEAg YWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICNpbmNs dWRlICJnaW1wbGUtcHJldHR5LXByaW50LmgiCiAjaW5jbHVkZSAiZ2ltcGxlLXJhbmdlLmgiCiAK LS8vIENhbGN1bGF0ZSB3aGF0IHdlIGNhbiBkZXRlcm1pbmUgb2YgdGhlIHJhbmdlIG9mIHRoaXMg dW5hcnkKLS8vIHN0YXRlbWVudCdzIG9wZXJhbmQgaWYgdGhlIGxocyBvZiB0aGUgZXhwcmVzc2lv biBoYXMgdGhlIHJhbmdlCi0vLyBMSFNfUkFOR0UuICBSZXR1cm4gZmFsc2UgaWYgbm90aGluZyBj YW4gYmUgZGV0ZXJtaW5lZC4KLQotYm9vbAotZ2ltcGxlX3JhbmdlX2NhbGNfb3AxICh2cmFuZ2Ug JnIsIGNvbnN0IGdpbXBsZSAqc3RtdCwgY29uc3QgdnJhbmdlICZsaHNfcmFuZ2UpCi17Ci0gIGdj Y19jaGVja2luZ19hc3NlcnQgKGdpbXBsZV9udW1fb3BzIChzdG10KSA8IDMpOwotICAvLyBHaXZl IHVwIG9uIGVtcHR5IHJhbmdlcy4KLSAgaWYgKGxoc19yYW5nZS51bmRlZmluZWRfcCAoKSkKLSAg ICByZXR1cm4gZmFsc2U7Ci0KLSAgLy8gVW5hcnkgb3BlcmF0aW9ucyByZXF1aXJlIHRoZSB0eXBl IG9mIHRoZSBmaXJzdCBvcGVyYW5kIGluIHRoZQotICAvLyBzZWNvbmQgcmFuZ2UgcG9zaXRpb24u Ci0gIHRyZWUgdHlwZSA9IFRSRUVfVFlQRSAoZ2ltcGxlX3JhbmdlX29wZXJhbmQxIChzdG10KSk7 Ci0gIFZhbHVlX1JhbmdlIHR5cGVfcmFuZ2UgKHR5cGUpOwotICB0eXBlX3JhbmdlLnNldF92YXJ5 aW5nICh0eXBlKTsKLSAgcmV0dXJuIHJhbmdlX29wX2hhbmRsZXIgKHN0bXQpLm9wMV9yYW5nZSAo ciwgdHlwZSwgbGhzX3JhbmdlLCB0eXBlX3JhbmdlKTsKLX0KLQotLy8gQ2FsY3VsYXRlIHdoYXQg d2UgY2FuIGRldGVybWluZSBvZiB0aGUgcmFuZ2Ugb2YgdGhpcyBzdGF0ZW1lbnQncwotLy8gZmly c3Qgb3BlcmFuZCBpZiB0aGUgbGhzIG9mIHRoZSBleHByZXNzaW9uIGhhcyB0aGUgcmFuZ2UgTEhT X1JBTkdFCi0vLyBhbmQgdGhlIHNlY29uZCBvcGVyYW5kIGhhcyB0aGUgcmFuZ2UgT1AyX1JBTkdF LiAgUmV0dXJuIGZhbHNlIGlmCi0vLyBub3RoaW5nIGNhbiBiZSBkZXRlcm1pbmVkLgotCi1ib29s Ci1naW1wbGVfcmFuZ2VfY2FsY19vcDEgKHZyYW5nZSAmciwgY29uc3QgZ2ltcGxlICpzdG10LAot CQkgICAgICAgY29uc3QgdnJhbmdlICZsaHNfcmFuZ2UsIGNvbnN0IHZyYW5nZSAmb3AyX3Jhbmdl KQotewotICAvLyBHaXZlIHVwIG9uIGVtcHR5IHJhbmdlcy4KLSAgaWYgKGxoc19yYW5nZS51bmRl ZmluZWRfcCAoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0KLSAgLy8gVW5hcnkgb3BlcmF0aW9uIGFy ZSBhbGxvd2VkIHRvIHBhc3MgYSByYW5nZSBpbiBmb3Igc2Vjb25kIG9wZXJhbmQKLSAgLy8gYXMg dGhlcmUgYXJlIG9mdGVuIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGJleW9uZCB0aGUgdHlwZSB3 aGljaAotICAvLyBjYW4gYmUgaW1wb3NlZC4gIFNlZSBvcGVyYXRvcl9jYXN0OjpvcDFfcmFuZ2Uo KS4KLSAgdHJlZSB0eXBlID0gVFJFRV9UWVBFIChnaW1wbGVfcmFuZ2Vfb3BlcmFuZDEgKHN0bXQp KTsKLSAgLy8gSWYgb3AyIGlzIHVuZGVmaW5lZCwgc29sdmUgYXMgaWYgaXQgaXMgdmFyeWluZy4K LSAgaWYgKG9wMl9yYW5nZS51bmRlZmluZWRfcCAoKSkKLSAgICB7Ci0gICAgICAvLyBUaGlzIGlz IHNvbWV0aW1lcyBpbnZva2VkIG9uIHNpbmdsZSBvcGVyYW5kIHN0bXRzLgotICAgICAgaWYgKGdp bXBsZV9udW1fb3BzIChzdG10KSA8IDMpCi0JcmV0dXJuIGZhbHNlOwotICAgICAgdHJlZSBvcDJf dHlwZSA9IFRSRUVfVFlQRSAoZ2ltcGxlX3JhbmdlX29wZXJhbmQyIChzdG10KSk7Ci0gICAgICBW YWx1ZV9SYW5nZSB0cmFuZ2UgKG9wMl90eXBlKTsKLSAgICAgIHRyYW5nZS5zZXRfdmFyeWluZyAo b3AyX3R5cGUpOwotICAgICAgcmV0dXJuIHJhbmdlX29wX2hhbmRsZXIgKHN0bXQpLm9wMV9yYW5n ZSAociwgdHlwZSwgbGhzX3JhbmdlLCB0cmFuZ2UpOwotICAgIH0KLSAgcmV0dXJuIHJhbmdlX29w X2hhbmRsZXIgKHN0bXQpLm9wMV9yYW5nZSAociwgdHlwZSwgbGhzX3JhbmdlLCBvcDJfcmFuZ2Up OwotfQotCi0vLyBDYWxjdWxhdGUgd2hhdCB3ZSBjYW4gZGV0ZXJtaW5lIG9mIHRoZSByYW5nZSBv ZiB0aGlzIHN0YXRlbWVudCdzCi0vLyBzZWNvbmQgb3BlcmFuZCBpZiB0aGUgbGhzIG9mIHRoZSBl eHByZXNzaW9uIGhhcyB0aGUgcmFuZ2UgTEhTX1JBTkdFCi0vLyBhbmQgdGhlIGZpcnN0IG9wZXJh bmQgaGFzIHRoZSByYW5nZSBPUDFfUkFOR0UuICBSZXR1cm4gZmFsc2UgaWYKLS8vIG5vdGhpbmcg Y2FuIGJlIGRldGVybWluZWQuCi0KLWJvb2wKLWdpbXBsZV9yYW5nZV9jYWxjX29wMiAodnJhbmdl ICZyLCBjb25zdCBnaW1wbGUgKnN0bXQsCi0JCSAgICAgICBjb25zdCB2cmFuZ2UgJmxoc19yYW5n ZSwgY29uc3QgdnJhbmdlICZvcDFfcmFuZ2UpCi17Ci0gIC8vIEdpdmUgdXAgb24gZW1wdHkgcmFu Z2VzLgotICBpZiAobGhzX3JhbmdlLnVuZGVmaW5lZF9wICgpKQotICAgIHJldHVybiBmYWxzZTsK LQotICB0cmVlIHR5cGUgPSBUUkVFX1RZUEUgKGdpbXBsZV9yYW5nZV9vcGVyYW5kMiAoc3RtdCkp OwotICAvLyBJZiBvcDEgaXMgdW5kZWZpbmVkLCBzb2x2ZSBhcyBpZiBpdCBpcyB2YXJ5aW5nLgot ICBpZiAob3AxX3JhbmdlLnVuZGVmaW5lZF9wICgpKQotICAgIHsKLSAgICAgIHRyZWUgb3AxX3R5 cGUgPSBUUkVFX1RZUEUgKGdpbXBsZV9yYW5nZV9vcGVyYW5kMSAoc3RtdCkpOwotICAgICAgVmFs dWVfUmFuZ2UgdHJhbmdlIChvcDFfdHlwZSk7Ci0gICAgICB0cmFuZ2Uuc2V0X3ZhcnlpbmcgKG9w MV90eXBlKTsKLSAgICAgIHJldHVybiByYW5nZV9vcF9oYW5kbGVyIChzdG10KS5vcDJfcmFuZ2Ug KHIsIHR5cGUsIGxoc19yYW5nZSwgdHJhbmdlKTsKLSAgICB9Ci0gIHJldHVybiByYW5nZV9vcF9o YW5kbGVyIChzdG10KS5vcDJfcmFuZ2UgKHIsIHR5cGUsIGxoc19yYW5nZSwKLQkJCQkJICAgIG9w MV9yYW5nZSk7Ci19Ci0KIC8vIFJldHVybiBUUlVFIGlmIEdTIGlzIGEgbG9naWNhbCAmJiBvciB8 fCBleHByZXNzaW9uLgogCiBzdGF0aWMgaW5saW5lIGJvb2wKQEAgLTY5NSwxNyArNjE4LDE4IEBA IGdvcmlfY29tcHV0ZTo6Y29tcHV0ZV9vcGVyYW5kX3JhbmdlICh2cmFuZ2UgJnIsIGdpbXBsZSAq c3RtdCwKICAgaWYgKGlzX2E8Z3N3aXRjaCAqPiAoc3RtdCkpCiAgICAgcmV0dXJuIGNvbXB1dGVf b3BlcmFuZF9yYW5nZV9zd2l0Y2ggKHIsIGFzX2E8Z3N3aXRjaCAqPiAoc3RtdCksIGxocywgbmFt ZSwKIAkJCQkJIHNyYyk7Ci0gIGlmICghcmFuZ2Vfb3BfaGFuZGxlciAoc3RtdCkpCisgIGdpbXBs ZV9yYW5nZV9vcF9oYW5kbGVyIGhhbmRsZXIgKHN0bXQpOworICBpZiAoIWhhbmRsZXIpCiAgICAg cmV0dXJuIGZhbHNlOwogCi0gIHRyZWUgb3AxID0gZ2ltcGxlX3JhbmdlX3NzYV9wIChnaW1wbGVf cmFuZ2Vfb3BlcmFuZDEgKHN0bXQpKTsKLSAgdHJlZSBvcDIgPSBnaW1wbGVfcmFuZ2Vfc3NhX3Ag KGdpbXBsZV9yYW5nZV9vcGVyYW5kMiAoc3RtdCkpOworICB0cmVlIG9wMSA9IGdpbXBsZV9yYW5n ZV9zc2FfcCAoaGFuZGxlci5vcGVyYW5kMSAoKSk7CisgIHRyZWUgb3AyID0gZ2ltcGxlX3Jhbmdl X3NzYV9wIChoYW5kbGVyLm9wZXJhbmQyICgpKTsKIAogICAvLyBIYW5kbGUgZW5kIG9mIGxvb2t1 cCBmaXJzdC4KICAgaWYgKG9wMSA9PSBuYW1lKQotICAgIHJldHVybiBjb21wdXRlX29wZXJhbmQx X3JhbmdlIChyLCBzdG10LCBsaHMsIG5hbWUsIHNyYyk7CisgICAgcmV0dXJuIGNvbXB1dGVfb3Bl cmFuZDFfcmFuZ2UgKHIsIGhhbmRsZXIsIGxocywgbmFtZSwgc3JjKTsKICAgaWYgKG9wMiA9PSBu YW1lKQotICAgIHJldHVybiBjb21wdXRlX29wZXJhbmQyX3JhbmdlIChyLCBzdG10LCBsaHMsIG5h bWUsIHNyYyk7CisgICAgcmV0dXJuIGNvbXB1dGVfb3BlcmFuZDJfcmFuZ2UgKHIsIGhhbmRsZXIs IGxocywgbmFtZSwgc3JjKTsKIAogICAvLyBOQU1FIGlzIG5vdCBpbiB0aGlzIHN0bXQsIGJ1dCBv bmUgb2YgdGhlIG5hbWVzIGluIGl0IG91Z2h0IHRvIGJlCiAgIC8vIGRlcml2ZWQgZnJvbSBpdC4K QEAgLTczMywxMCArNjU3LDEwIEBAIGdvcmlfY29tcHV0ZTo6Y29tcHV0ZV9vcGVyYW5kX3Jhbmdl ICh2cmFuZ2UgJnIsIGdpbXBsZSAqc3RtdCwKICAgICAgIHRyZWUgdHlwZSA9IFRSRUVfVFlQRSAo bmFtZSk7CiAgICAgICBWYWx1ZV9SYW5nZSBvcDFfdHJhbmdlICh0eXBlKSwgb3AxX2ZyYW5nZSAo dHlwZSk7CiAgICAgICBWYWx1ZV9SYW5nZSBvcDJfdHJhbmdlICh0eXBlKSwgb3AyX2ZyYW5nZSAo dHlwZSk7Ci0gICAgICBjb21wdXRlX2xvZ2ljYWxfb3BlcmFuZHMgKG9wMV90cmFuZ2UsIG9wMV9m cmFuZ2UsIHN0bXQsCisgICAgICBjb21wdXRlX2xvZ2ljYWxfb3BlcmFuZHMgKG9wMV90cmFuZ2Us IG9wMV9mcmFuZ2UsIGhhbmRsZXIsCiAJCQkJYXNfYSA8aXJhbmdlPiAobGhzKSwKIAkJCQluYW1l LCBzcmMsIG9wMSwgb3AxX2luX2NoYWluKTsKLSAgICAgIGNvbXB1dGVfbG9naWNhbF9vcGVyYW5k cyAob3AyX3RyYW5nZSwgb3AyX2ZyYW5nZSwgc3RtdCwKKyAgICAgIGNvbXB1dGVfbG9naWNhbF9v cGVyYW5kcyAob3AyX3RyYW5nZSwgb3AyX2ZyYW5nZSwgaGFuZGxlciwKIAkJCQlhc19hIDxpcmFu Z2U+IChsaHMpLAogCQkJCW5hbWUsIHNyYywgb3AyLCBvcDJfaW5fY2hhaW4pOwogICAgICAgcmVz ID0gbG9naWNhbF9jb21iaW5lIChyLApAQCAtNzQ4LDExICs2NzIsMTEgQEAgZ29yaV9jb21wdXRl Ojpjb21wdXRlX29wZXJhbmRfcmFuZ2UgKHZyYW5nZSAmciwgZ2ltcGxlICpzdG10LAogICAgIH0K ICAgLy8gRm9sbG93IHRoZSBhcHByb3ByaWF0ZSBvcGVyYW5kcyBub3cuCiAgIGVsc2UgaWYgKG9w MV9pbl9jaGFpbiAmJiBvcDJfaW5fY2hhaW4pCi0gICAgcmVzID0gY29tcHV0ZV9vcGVyYW5kMV9h bmRfb3BlcmFuZDJfcmFuZ2UgKHIsIHN0bXQsIGxocywgbmFtZSwgc3JjKTsKKyAgICByZXMgPSBj b21wdXRlX29wZXJhbmQxX2FuZF9vcGVyYW5kMl9yYW5nZSAociwgaGFuZGxlciwgbGhzLCBuYW1l LCBzcmMpOwogICBlbHNlIGlmIChvcDFfaW5fY2hhaW4pCi0gICAgcmVzID0gY29tcHV0ZV9vcGVy YW5kMV9yYW5nZSAociwgc3RtdCwgbGhzLCBuYW1lLCBzcmMpOworICAgIHJlcyA9IGNvbXB1dGVf b3BlcmFuZDFfcmFuZ2UgKHIsIGhhbmRsZXIsIGxocywgbmFtZSwgc3JjKTsKICAgZWxzZSBpZiAo b3AyX2luX2NoYWluKQotICAgIHJlcyA9IGNvbXB1dGVfb3BlcmFuZDJfcmFuZ2UgKHIsIHN0bXQs IGxocywgbmFtZSwgc3JjKTsKKyAgICByZXMgPSBjb21wdXRlX29wZXJhbmQyX3JhbmdlIChyLCBo YW5kbGVyLCBsaHMsIG5hbWUsIHNyYyk7CiAgIGVsc2UKICAgICBnY2NfdW5yZWFjaGFibGUgKCk7 CiAKQEAgLTk0NCwxMyArODY4LDE0IEBAIGdvcmlfY29tcHV0ZTo6bG9naWNhbF9jb21iaW5lICh2 cmFuZ2UgJnIsIGVudW0gdHJlZV9jb2RlIGNvZGUsCiAKIHZvaWQKIGdvcmlfY29tcHV0ZTo6Y29t cHV0ZV9sb2dpY2FsX29wZXJhbmRzICh2cmFuZ2UgJnRydWVfcmFuZ2UsIHZyYW5nZSAmZmFsc2Vf cmFuZ2UsCi0JCQkJCWdpbXBsZSAqc3RtdCwKKwkJCQkJZ2ltcGxlX3JhbmdlX29wX2hhbmRsZXIg JmhhbmRsZXIsCiAJCQkJCWNvbnN0IGlyYW5nZSAmbGhzLAogCQkJCQl0cmVlIG5hbWUsIGZ1cl9z b3VyY2UgJnNyYywKIAkJCQkJdHJlZSBvcCwgYm9vbCBvcF9pbl9jaGFpbikKIHsKKyAgZ2ltcGxl ICpzdG10ID0gaGFuZGxlci5zdG10ICgpOwogICBnaW1wbGUgKnNyY19zdG10ID0gZ2ltcGxlX3Jh bmdlX3NzYV9wIChvcCkgPyBTU0FfTkFNRV9ERUZfU1RNVCAob3ApIDogTlVMTDsKLSAgaWYgKCFv cF9pbl9jaGFpbiB8fCAhc3JjX3N0bXQgfHwgY2hhaW5faW1wb3J0X3AgKGdpbXBsZV9nZXRfbGhz IChzdG10KSwgb3ApKQorICBpZiAoIW9wX2luX2NoYWluIHx8ICFzcmNfc3RtdCB8fCBjaGFpbl9p bXBvcnRfcCAoaGFuZGxlci5saHMgKCksIG9wKSkKICAgICB7CiAgICAgICAvLyBJZiBvcCBpcyBu b3QgaW4gdGhlIGRlZiBjaGFpbiwgb3IgZGVmaW5lZCBpbiB0aGlzIGJsb2NrLAogICAgICAgLy8g dXNlIGl0cyBrbm93biB2YWx1ZSBvbiBlbnRyeSB0byB0aGUgYmxvY2suCkBAIC05OTksMTIgKzky NCwxNSBAQCBnb3JpX2NvbXB1dGU6OmNvbXB1dGVfbG9naWNhbF9vcGVyYW5kcyAodnJhbmdlICZ0 cnVlX3JhbmdlLCB2cmFuZ2UgJmZhbHNlX3JhbmdlLAogLy8gUiwgb3IgZmFsc2UgaWYgbm8gcmFu Z2UgY291bGQgYmUgY2FsY3VsYXRlZC4KIAogYm9vbAotZ29yaV9jb21wdXRlOjpjb21wdXRlX29w ZXJhbmQxX3JhbmdlICh2cmFuZ2UgJnIsIGdpbXBsZSAqc3RtdCwKK2dvcmlfY29tcHV0ZTo6Y29t cHV0ZV9vcGVyYW5kMV9yYW5nZSAodnJhbmdlICZyLAorCQkJCSAgICAgIGdpbXBsZV9yYW5nZV9v cF9oYW5kbGVyICZoYW5kbGVyLAogCQkJCSAgICAgIGNvbnN0IHZyYW5nZSAmbGhzLCB0cmVlIG5h bWUsCiAJCQkJICAgICAgZnVyX3NvdXJjZSAmc3JjKQogewotICB0cmVlIG9wMSA9IGdpbXBsZV9y YW5nZV9vcGVyYW5kMSAoc3RtdCk7Ci0gIHRyZWUgb3AyID0gZ2ltcGxlX3JhbmdlX29wZXJhbmQy IChzdG10KTsKKyAgZ2ltcGxlICpzdG10ID0gaGFuZGxlci5zdG10ICgpOworICB0cmVlIG9wMSA9 IGhhbmRsZXIub3BlcmFuZDEgKCk7CisgIHRyZWUgb3AyID0gaGFuZGxlci5vcGVyYW5kMiAoKTsK KwogICBWYWx1ZV9SYW5nZSBvcDFfcmFuZ2UgKFRSRUVfVFlQRSAob3AxKSk7CiAgIFZhbHVlX1Jh bmdlIHRtcCAoVFJFRV9UWVBFIChvcDEpKTsKICAgVmFsdWVfUmFuZ2Ugb3AyX3JhbmdlIChvcDIg PyBUUkVFX1RZUEUgKG9wMikgOiBUUkVFX1RZUEUgKG9wMSkpOwpAQCAtMTAxNiw3ICs5NDQsNyBA QCBnb3JpX2NvbXB1dGU6OmNvbXB1dGVfb3BlcmFuZDFfcmFuZ2UgKHZyYW5nZSAmciwgZ2ltcGxl ICpzdG10LAogICBpZiAob3AyKQogICAgIHsKICAgICAgIHNyYy5nZXRfb3BlcmFuZCAob3AyX3Jh bmdlLCBvcDIpOwotICAgICAgaWYgKCFnaW1wbGVfcmFuZ2VfY2FsY19vcDEgKHRtcCwgc3RtdCwg bGhzLCBvcDJfcmFuZ2UpKQorICAgICAgaWYgKCFoYW5kbGVyLmNhbGNfb3AxICh0bXAsIGxocywg b3AyX3JhbmdlKSkKIAlyZXR1cm4gZmFsc2U7CiAgICAgfQogICBlbHNlCkBAIC0xMDI0LDcgKzk1 Miw3IEBAIGdvcmlfY29tcHV0ZTo6Y29tcHV0ZV9vcGVyYW5kMV9yYW5nZSAodnJhbmdlICZyLCBn aW1wbGUgKnN0bXQsCiAgICAgICAvLyBXZSBwYXNzIG9wMV9yYW5nZSB0byB0aGUgdW5hcnkgb3Bl cmF0aW9uLiAgTm9tYWxseSBpdCdzIGEKICAgICAgIC8vIGhpZGRlbiByYW5nZV9mb3JfdHlwZSBw YXJhbWV0ZXIsIGJ1dCBzb21ldGltZXMgaGF2aW5nIHRoZQogICAgICAgLy8gYWN0dWFsIHJhbmdl IGNhbiByZXN1bHQgaW4gYmV0dGVyIGluZm9ybWF0aW9uLgotICAgICAgaWYgKCFnaW1wbGVfcmFu Z2VfY2FsY19vcDEgKHRtcCwgc3RtdCwgbGhzLCBvcDFfcmFuZ2UpKQorICAgICAgaWYgKCFoYW5k bGVyLmNhbGNfb3AxICh0bXAsIGxocywgb3AxX3JhbmdlKSkKIAlyZXR1cm4gZmFsc2U7CiAgICAg fQogCkBAIC0xMDc5LDEyICsxMDA3LDE1IEBAIGdvcmlfY29tcHV0ZTo6Y29tcHV0ZV9vcGVyYW5k MV9yYW5nZSAodnJhbmdlICZyLCBnaW1wbGUgKnN0bXQsCiAvLyBSLCBvciBmYWxzZSBpZiBubyBy YW5nZSBjb3VsZCBiZSBjYWxjdWxhdGVkLgogCiBib29sCi1nb3JpX2NvbXB1dGU6OmNvbXB1dGVf b3BlcmFuZDJfcmFuZ2UgKHZyYW5nZSAmciwgZ2ltcGxlICpzdG10LAorZ29yaV9jb21wdXRlOjpj b21wdXRlX29wZXJhbmQyX3JhbmdlICh2cmFuZ2UgJnIsCisJCQkJICAgICAgZ2ltcGxlX3Jhbmdl X29wX2hhbmRsZXIgJmhhbmRsZXIsCiAJCQkJICAgICAgY29uc3QgdnJhbmdlICZsaHMsIHRyZWUg bmFtZSwKIAkJCQkgICAgICBmdXJfc291cmNlICZzcmMpCiB7Ci0gIHRyZWUgb3AxID0gZ2ltcGxl X3JhbmdlX29wZXJhbmQxIChzdG10KTsKLSAgdHJlZSBvcDIgPSBnaW1wbGVfcmFuZ2Vfb3BlcmFu ZDIgKHN0bXQpOworICBnaW1wbGUgKnN0bXQgPSBoYW5kbGVyLnN0bXQgKCk7CisgIHRyZWUgb3Ax ID0gaGFuZGxlci5vcGVyYW5kMSAoKTsKKyAgdHJlZSBvcDIgPSBoYW5kbGVyLm9wZXJhbmQyICgp OworCiAgIFZhbHVlX1JhbmdlIG9wMV9yYW5nZSAoVFJFRV9UWVBFIChvcDEpKTsKICAgVmFsdWVf UmFuZ2Ugb3AyX3JhbmdlIChUUkVFX1RZUEUgKG9wMikpOwogICBWYWx1ZV9SYW5nZSB0bXAgKFRS RUVfVFlQRSAob3AyKSk7CkBAIC0xMDkzLDcgKzEwMjQsNyBAQCBnb3JpX2NvbXB1dGU6OmNvbXB1 dGVfb3BlcmFuZDJfcmFuZ2UgKHZyYW5nZSAmciwgZ2ltcGxlICpzdG10LAogICBzcmMuZ2V0X29w ZXJhbmQgKG9wMl9yYW5nZSwgb3AyKTsKIAogICAvLyBJbnRlcnNlY3Qgd2l0aCByYW5nZSBmb3Ig b3AyIGJhc2VkIG9uIGxocyBhbmQgb3AxLgotICBpZiAoIWdpbXBsZV9yYW5nZV9jYWxjX29wMiAo dG1wLCBzdG10LCBsaHMsIG9wMV9yYW5nZSkpCisgIGlmICghaGFuZGxlci5jYWxjX29wMiAodG1w LCBsaHMsIG9wMV9yYW5nZSkpCiAgICAgcmV0dXJuIGZhbHNlOwogCiAgIHVuc2lnbmVkIGlkeDsK QEAgLTExNDgsNyArMTA3OSw4IEBAIGdvcmlfY29tcHV0ZTo6Y29tcHV0ZV9vcGVyYW5kMl9yYW5n ZSAodnJhbmdlICZyLCBnaW1wbGUgKnN0bXQsCiAKIGJvb2wKIGdvcmlfY29tcHV0ZTo6Y29tcHV0 ZV9vcGVyYW5kMV9hbmRfb3BlcmFuZDJfcmFuZ2UgKHZyYW5nZSAmciwKLQkJCQkJCSAgIGdpbXBs ZSAqc3RtdCwKKwkJCQkJCSAgIGdpbXBsZV9yYW5nZV9vcF9oYW5kbGVyCisJCQkJCQkJCSAgICAg JmhhbmRsZXIsCiAJCQkJCQkgICBjb25zdCB2cmFuZ2UgJmxocywKIAkJCQkJCSAgIHRyZWUgbmFt ZSwKIAkJCQkJCSAgIGZ1cl9zb3VyY2UgJnNyYykKQEAgLTExNTcsMTEgKzEwODksMTEgQEAgZ29y aV9jb21wdXRlOjpjb21wdXRlX29wZXJhbmQxX2FuZF9vcGVyYW5kMl9yYW5nZSAodnJhbmdlICZy LAogCiAgIC8vIENhbGN1bGF0ZSBhIGdvb2QgYSByYW5nZSBmb3Igb3AyLiAgU2luY2Ugb3AxID09 IG9wMiwgdGhpcyB3aWxsCiAgIC8vIGhhdmUgYWxyZWFkeSBpbmNsdWRlZCB3aGF0ZXZlciB0aGUg YWN0dWFsIHJhbmdlIG9mIG5hbWUgaXMuCi0gIGlmICghY29tcHV0ZV9vcGVyYW5kMl9yYW5nZSAo b3BfcmFuZ2UsIHN0bXQsIGxocywgbmFtZSwgc3JjKSkKKyAgaWYgKCFjb21wdXRlX29wZXJhbmQy X3JhbmdlIChvcF9yYW5nZSwgaGFuZGxlciwgbGhzLCBuYW1lLCBzcmMpKQogICAgIHJldHVybiBm YWxzZTsKIAogICAvLyBOb3cgZ2V0IHRoZSByYW5nZSB0aHJ1IG9wMS4KLSAgaWYgKCFjb21wdXRl X29wZXJhbmQxX3JhbmdlIChyLCBzdG10LCBsaHMsIG5hbWUsIHNyYykpCisgIGlmICghY29tcHV0 ZV9vcGVyYW5kMV9yYW5nZSAociwgaGFuZGxlciwgbGhzLCBuYW1lLCBzcmMpKQogICAgIHJldHVy biBmYWxzZTsKIAogICAvLyBCb3RoIG9wZXJhbmRzIGhhdmUgdG8gYmUgc2ltdWx0YW5lb3VzbHkg dHJ1ZSwgc28gcGVyZm9ybSBhbiBpbnRlcnNlY3Rpb24uCmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxl LXJhbmdlLWdvcmkuaCBiL2djYy9naW1wbGUtcmFuZ2UtZ29yaS5oCmluZGV4IDNkNTdhYjk0NjI0 Li4wYzc3NmVmODUzZiAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1yYW5nZS1nb3JpLmgKKysrIGIv Z2NjL2dpbXBsZS1yYW5nZS1nb3JpLmgKQEAgLTE3MCwxNyArMTcwLDE4IEBAIHByaXZhdGU6CiAJ CQkgICAgICB0cmVlIG5hbWUsIGNsYXNzIGZ1cl9zb3VyY2UgJnNyYyk7CiAgIGJvb2wgY29tcHV0 ZV9vcGVyYW5kX3JhbmdlX3N3aXRjaCAodnJhbmdlICZyLCBnc3dpdGNoICpzLCBjb25zdCB2cmFu Z2UgJmxocywKIAkJCQkgICAgIHRyZWUgbmFtZSwgZnVyX3NvdXJjZSAmc3JjKTsKLSAgYm9vbCBj b21wdXRlX29wZXJhbmQxX3JhbmdlICh2cmFuZ2UgJnIsIGdpbXBsZSAqc3RtdCwgY29uc3QgdnJh bmdlICZsaHMsCi0JCQkgICAgICAgdHJlZSBuYW1lLCBmdXJfc291cmNlICZzcmMpOwotICBib29s IGNvbXB1dGVfb3BlcmFuZDJfcmFuZ2UgKHZyYW5nZSAmciwgZ2ltcGxlICpzdG10LCBjb25zdCB2 cmFuZ2UgJmxocywKLQkJCSAgICAgICB0cmVlIG5hbWUsIGZ1cl9zb3VyY2UgJnNyYyk7Ci0gIGJv b2wgY29tcHV0ZV9vcGVyYW5kMV9hbmRfb3BlcmFuZDJfcmFuZ2UgKHZyYW5nZSAmciwgZ2ltcGxl ICpzdG10LAorICBib29sIGNvbXB1dGVfb3BlcmFuZDFfcmFuZ2UgKHZyYW5nZSAmciwgZ2ltcGxl X3JhbmdlX29wX2hhbmRsZXIgJmhhbmRsZXIsCisJCQkgICAgICAgY29uc3QgdnJhbmdlICZsaHMs IHRyZWUgbmFtZSwgZnVyX3NvdXJjZSAmc3JjKTsKKyAgYm9vbCBjb21wdXRlX29wZXJhbmQyX3Jh bmdlICh2cmFuZ2UgJnIsIGdpbXBsZV9yYW5nZV9vcF9oYW5kbGVyICZoYW5kbGVyLAorCQkJICAg ICAgIGNvbnN0IHZyYW5nZSAmbGhzLCB0cmVlIG5hbWUsIGZ1cl9zb3VyY2UgJnNyYyk7CisgIGJv b2wgY29tcHV0ZV9vcGVyYW5kMV9hbmRfb3BlcmFuZDJfcmFuZ2UgKHZyYW5nZSAmciwKKwkJCQkJ ICAgIGdpbXBsZV9yYW5nZV9vcF9oYW5kbGVyICZoYW5kbGVyLAogCQkJCQkgICAgY29uc3QgdnJh bmdlICZsaHMsIHRyZWUgbmFtZSwKIAkJCQkJICAgIGZ1cl9zb3VyY2UgJnNyYyk7CiAgIHZvaWQg Y29tcHV0ZV9sb2dpY2FsX29wZXJhbmRzICh2cmFuZ2UgJnRydWVfcmFuZ2UsIHZyYW5nZSAmZmFs c2VfcmFuZ2UsCi0JCQkJIGdpbXBsZSAqc3RtdCwgY29uc3QgaXJhbmdlICZsaHMsCi0JCQkJIHRy ZWUgbmFtZSwgZnVyX3NvdXJjZSAmc3JjLCB0cmVlIG9wLAotCQkJCSBib29sIG9wX2luX2NoYWlu KTsKKwkJCQkgZ2ltcGxlX3JhbmdlX29wX2hhbmRsZXIgJmhhbmRsZXIsCisJCQkJIGNvbnN0IGly YW5nZSAmbGhzLCB0cmVlIG5hbWUsIGZ1cl9zb3VyY2UgJnNyYywKKwkJCQkgdHJlZSBvcCwgYm9v bCBvcF9pbl9jaGFpbik7CiAgIGJvb2wgbG9naWNhbF9jb21iaW5lICh2cmFuZ2UgJnIsIGVudW0g dHJlZV9jb2RlIGNvZGUsIGNvbnN0IGlyYW5nZSAmbGhzLAogCQkJY29uc3QgdnJhbmdlICZvcDFf dHJ1ZSwgY29uc3QgdnJhbmdlICZvcDFfZmFsc2UsCiAJCQljb25zdCB2cmFuZ2UgJm9wMl90cnVl LCBjb25zdCB2cmFuZ2UgJm9wMl9mYWxzZSk7CkBAIC0xOTIsMTYgKzE5Myw2IEBAIHByaXZhdGU6 CiAgIGludCBtX25vdF9leGVjdXRhYmxlX2ZsYWc7CiB9OwogCi0vLyBUaGVzZSByb3V0aW5lcyBw cm92aWRlIGEgR0lNUExFIGludGVyZmFjZSB0byB0aGUgcmFuZ2Utb3BzIGNvZGUuCi1leHRlcm4g Ym9vbCBnaW1wbGVfcmFuZ2VfY2FsY19vcDEgKHZyYW5nZSAmciwgY29uc3QgZ2ltcGxlICpzLAot CQkJCSAgIGNvbnN0IHZyYW5nZSAmbGhzX3JhbmdlKTsKLWV4dGVybiBib29sIGdpbXBsZV9yYW5n ZV9jYWxjX29wMSAodnJhbmdlICZyLCBjb25zdCBnaW1wbGUgKnMsCi0JCQkJICAgY29uc3QgdnJh bmdlICZsaHNfcmFuZ2UsCi0JCQkJICAgY29uc3QgdnJhbmdlICZvcDJfcmFuZ2UpOwotZXh0ZXJu IGJvb2wgZ2ltcGxlX3JhbmdlX2NhbGNfb3AyICh2cmFuZ2UgJnIsIGNvbnN0IGdpbXBsZSAqcywK LQkJCQkgICBjb25zdCB2cmFuZ2UgJmxoc19yYW5nZSwKLQkJCQkgICBjb25zdCB2cmFuZ2UgJm9w MV9yYW5nZSk7Ci0KIC8vIEZvciBlYWNoIG5hbWUgdGhhdCBpcyBhbiBpbXBvcnQgaW50byBCQidz IGV4cG9ydHMuLgogI2RlZmluZSBGT1JfRUFDSF9HT1JJX0lNUE9SVF9OQU1FKGdvcmksIGJiLCBu YW1lKQkJCVwKICAgZm9yIChnb3JpX2V4cG9ydF9pdGVyYXRvciBpdGVyICgoZ29yaSkuaW1wb3J0 cyAoKGJiKSkpOwlcCmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxlLXJhbmdlLW9wLmNjIGIvZ2NjL2dp bXBsZS1yYW5nZS1vcC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZjAzMTI1YTBmYzUKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvZ2ltcGxlLXJhbmdlLW9wLmNjCkBA IC0wLDAgKzEsMjQ1IEBACisvKiBDb2RlIGZvciBHSU1QTEUgcmFuZ2Ugb3AgcmVsYXRlZCByb3V0 aW5lcy4KKyAgIENvcHlyaWdodCAoQykgMjAxOS0yMDIyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorICAgQ29udHJpYnV0ZWQgYnkgQW5kcmV3IE1hY0xlb2QgPGFtYWNsZW9kQHJlZGhh dC5jb20+CisgICBhbmQgQWxkeSBIZXJuYW5kZXogPGFsZHloQHJlZGhhdC5jb20+LgorCitUaGlz IGZpbGUgaXMgcGFydCBvZiBHQ0MuCisKK0dDQyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKQorYW55 IGxhdGVyIHZlcnNpb24uCisKK0dDQyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisKK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCithbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBm aWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInN5c3RlbS5oIgorI2luY2x1 ZGUgImNvcmV0eXBlcy5oIgorI2luY2x1ZGUgImJhY2tlbmQuaCIKKyNpbmNsdWRlICJpbnNuLWNv ZGVzLmgiCisjaW5jbHVkZSAidHJlZS5oIgorI2luY2x1ZGUgImdpbXBsZS5oIgorI2luY2x1ZGUg InNzYS5oIgorI2luY2x1ZGUgImdpbXBsZS1wcmV0dHktcHJpbnQuaCIKKyNpbmNsdWRlICJvcHRh YnMtdHJlZS5oIgorI2luY2x1ZGUgImdpbXBsZS1pdGVyYXRvci5oIgorI2luY2x1ZGUgImdpbXBs ZS1mb2xkLmgiCisjaW5jbHVkZSAid2lkZS1pbnQuaCIKKyNpbmNsdWRlICJmb2xkLWNvbnN0Lmgi CisjaW5jbHVkZSAiY2FzZS1jZm4tbWFjcm9zLmgiCisjaW5jbHVkZSAib21wLWdlbmVyYWwuaCIK KyNpbmNsdWRlICJjZmdsb29wLmgiCisjaW5jbHVkZSAidHJlZS1zc2EtbG9vcC5oIgorI2luY2x1 ZGUgInRyZWUtc2NhbGFyLWV2b2x1dGlvbi5oIgorI2luY2x1ZGUgImxhbmdob29rcy5oIgorI2lu Y2x1ZGUgInZyLXZhbHVlcy5oIgorI2luY2x1ZGUgInJhbmdlLmgiCisjaW5jbHVkZSAidmFsdWUt cXVlcnkuaCIKKyNpbmNsdWRlICJnaW1wbGUtcmFuZ2UuaCIKKworLy8gR2l2ZW4gc3RtdCBTLCBm aWxsIFZFQywgdXAgdG8gVkVDX1NJWkUgZWxlbWVudHMsIHdpdGggcmVsZXZhbnQgc3NhLW5hbWVz CisvLyBvbiB0aGUgc3RhdGVtZW50LiAgRm9yIGVmZmljaWVuY3ksIGl0IGlzIGFuIGVycm9yIHRv IG5vdCBwYXNzIGluIGVub3VnaAorLy8gZWxlbWVudHMgZm9yIHRoZSB2ZWN0b3IuICBSZXR1cm4g dGhlIG51bWJlciBvZiBzc2EtbmFtZXMuCisKK3Vuc2lnbmVkCitnaW1wbGVfcmFuZ2Vfc3NhX25h bWVzICh0cmVlICp2ZWMsIHVuc2lnbmVkIHZlY19zaXplLCBnaW1wbGUgKnN0bXQpCit7CisgIHRy ZWUgc3NhOworICBpbnQgY291bnQgPSAwOworCisgIGdpbXBsZV9yYW5nZV9vcF9oYW5kbGVyIGhh bmRsZXIgKHN0bXQpOworICBpZiAoaGFuZGxlcikKKyAgICB7CisgICAgICBnY2NfY2hlY2tpbmdf YXNzZXJ0ICh2ZWNfc2l6ZSA+PSAyKTsKKyAgICAgIGlmICgoc3NhID0gZ2ltcGxlX3JhbmdlX3Nz YV9wIChoYW5kbGVyLm9wZXJhbmQxICgpKSkpCisJdmVjW2NvdW50KytdID0gc3NhOworICAgICAg aWYgKChzc2EgPSBnaW1wbGVfcmFuZ2Vfc3NhX3AgKGhhbmRsZXIub3BlcmFuZDIgKCkpKSkKKwl2 ZWNbY291bnQrK10gPSBzc2E7CisgICAgfQorICBlbHNlIGlmIChpc19hPGdhc3NpZ24gKj4gKHN0 bXQpCisJICAgJiYgZ2ltcGxlX2Fzc2lnbl9yaHNfY29kZSAoc3RtdCkgPT0gQ09ORF9FWFBSKQor ICAgIHsKKyAgICAgIGdjY19jaGVja2luZ19hc3NlcnQgKHZlY19zaXplID49IDMpOworICAgICAg Z2Fzc2lnbiAqc3QgPSBhc19hPGdhc3NpZ24gKj4gKHN0bXQpOworICAgICAgaWYgKChzc2EgPSBn aW1wbGVfcmFuZ2Vfc3NhX3AgKGdpbXBsZV9hc3NpZ25fcmhzMSAoc3QpKSkpCisJdmVjW2NvdW50 KytdID0gc3NhOworICAgICAgaWYgKChzc2EgPSBnaW1wbGVfcmFuZ2Vfc3NhX3AgKGdpbXBsZV9h c3NpZ25fcmhzMiAoc3QpKSkpCisJdmVjW2NvdW50KytdID0gc3NhOworICAgICAgaWYgKChzc2Eg PSBnaW1wbGVfcmFuZ2Vfc3NhX3AgKGdpbXBsZV9hc3NpZ25fcmhzMyAoc3QpKSkpCisJdmVjW2Nv dW50KytdID0gc3NhOworICAgIH0KKyAgcmV0dXJuIGNvdW50OworfQorCisvLyBSZXR1cm4gdGhl IGJhc2Ugb2YgdGhlIFJIUyBvZiBhbiBhc3NpZ25tZW50LgorCitzdGF0aWMgdHJlZQorZ2ltcGxl X3JhbmdlX2Jhc2Vfb2ZfYXNzaWdubWVudCAoY29uc3QgZ2ltcGxlICpzdG10KQoreworICBnY2Nf Y2hlY2tpbmdfYXNzZXJ0IChnaW1wbGVfY29kZSAoc3RtdCkgPT0gR0lNUExFX0FTU0lHTik7Cisg IHRyZWUgb3AxID0gZ2ltcGxlX2Fzc2lnbl9yaHMxIChzdG10KTsKKyAgaWYgKGdpbXBsZV9hc3Np Z25fcmhzX2NvZGUgKHN0bXQpID09IEFERFJfRVhQUikKKyAgICByZXR1cm4gZ2V0X2Jhc2VfYWRk cmVzcyAoVFJFRV9PUEVSQU5EIChvcDEsIDApKTsKKyAgcmV0dXJuIG9wMTsKK30KKworLy8gSWYg c3RhdGVtZW50IGlzIHN1cHBvcnRlZCBieSByYW5nZS1vcHMsIHNldCB0aGUgQ09ERSBhbmQgcmV0 dXJuIHRoZSBUWVBFLgorCitzdGF0aWMgdHJlZQorZ2V0X2NvZGVfYW5kX3R5cGUgKGdpbXBsZSAq cywgZW51bSB0cmVlX2NvZGUgJmNvZGUpCit7CisgIHRyZWUgdHlwZSA9IE5VTExfVFJFRTsKKyAg Y29kZSA9IE5PUF9FWFBSOworCisgIGlmIChjb25zdCBnYXNzaWduICphc3MgPSBkeW5fY2FzdDxj b25zdCBnYXNzaWduICo+IChzKSkKKyAgICB7CisgICAgICBjb2RlID0gZ2ltcGxlX2Fzc2lnbl9y aHNfY29kZSAoYXNzKTsKKyAgICAgIC8vIFRoZSBMSFMgb2YgYSBjb21wYXJpc29uIGlzIGFsd2F5 cyBhbiBpbnQsIHNvIHdlIG11c3QgbG9vayBhdAorICAgICAgLy8gdGhlIG9wZXJhbmRzLgorICAg ICAgaWYgKFRSRUVfQ09ERV9DTEFTUyAoY29kZSkgPT0gdGNjX2NvbXBhcmlzb24pCisJdHlwZSA9 IFRSRUVfVFlQRSAoZ2ltcGxlX2Fzc2lnbl9yaHMxIChhc3MpKTsKKyAgICAgIGVsc2UKKwl0eXBl ID0gVFJFRV9UWVBFIChnaW1wbGVfYXNzaWduX2xocyAoYXNzKSk7CisgICAgfQorICBlbHNlIGlm IChjb25zdCBnY29uZCAqY29uZCA9IGR5bl9jYXN0PGNvbnN0IGdjb25kICo+IChzKSkKKyAgICB7 CisgICAgICBjb2RlID0gZ2ltcGxlX2NvbmRfY29kZSAoY29uZCk7CisgICAgICB0eXBlID0gVFJF RV9UWVBFIChnaW1wbGVfY29uZF9saHMgKGNvbmQpKTsKKyAgICB9CisgIHJldHVybiB0eXBlOwor fQorCisvLyBJZiBzdGF0ZW1lbnQgUyBoYXMgYSBzdXBwb3J0ZWQgcmFuZ2Vfb3AgaGFuZGxlciBy ZXR1cm4gVFJVRS4KKworYm9vbAorZ2ltcGxlX3JhbmdlX29wX2hhbmRsZXI6OnN1cHBvcnRlZF9w IChnaW1wbGUgKnMpCit7CisgIGVudW0gdHJlZV9jb2RlIGNvZGU7CisgIHRyZWUgdHlwZSA9IGdl dF9jb2RlX2FuZF90eXBlIChzLCBjb2RlKTsKKyAgcmV0dXJuICh0eXBlICYmIHJhbmdlX29wX2hh bmRsZXIgKGNvZGUsIHR5cGUpKTsKK30KKworLy8gQ29uc3RydWN0IGEgaGFuZGxlciBvYmplY3Qg Zm9yIHN0YXRlbWVudCBTLgorCitnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlcjo6Z2ltcGxlX3Jhbmdl X29wX2hhbmRsZXIgKGdpbXBsZSAqcykKK3sKKyAgZW51bSB0cmVlX2NvZGUgY29kZTsKKyAgdHJl ZSB0eXBlID0gZ2V0X2NvZGVfYW5kX3R5cGUgKHMsIGNvZGUpOworICBtX3N0bXQgPSBzOworICBp ZiAodHlwZSkKKyAgICBzZXRfb3BfaGFuZGxlciAoY29kZSwgdHlwZSk7CisKKyAgaWYgKG1fdmFs aWQpCisgICAgc3dpdGNoIChnaW1wbGVfY29kZSAobV9zdG10KSkKKyAgICAgIHsKKwljYXNlIEdJ TVBMRV9DT05EOgorCSAgbV9vcDEgPSBnaW1wbGVfY29uZF9saHMgKG1fc3RtdCk7CisJICBtX29w MiA9IGdpbXBsZV9jb25kX3JocyAobV9zdG10KTsKKwkgIGJyZWFrOworCWNhc2UgR0lNUExFX0FT U0lHTjoKKwkgIG1fb3AxID0gZ2ltcGxlX3JhbmdlX2Jhc2Vfb2ZfYXNzaWdubWVudCAobV9zdG10 KTsKKwkgIGlmIChtX29wMSAmJiBUUkVFX0NPREUgKG1fb3AxKSA9PSBNRU1fUkVGKQorCSAgICB7 CisJICAgICAgLy8gSWYgdGhlIGJhc2UgYWRkcmVzcyBpcyBhbiBTU0FfTkFNRSwgd2UgcmV0dXJu IGl0CisJICAgICAgLy8gaGVyZS4gIFRoaXMgYWxsb3dzIHByb2Nlc3Npbmcgb2YgdGhlIHJhbmdl IG9mIHRoYXQKKwkgICAgICAvLyBuYW1lLCB3aGlsZSB0aGUgcmVzdCBvZiB0aGUgZXhwcmVzc2lv biBpcyBzaW1wbHkKKwkgICAgICAvLyBpZ25vcmVkLiAgVGhlIGNvZGUgaW4gcmFuZ2Vfb3BzIHdp bGwgc2VlIHRoZQorCSAgICAgIC8vIEFERFJfRVhQUiBhbmQgZG8gdGhlIHJpZ2h0IHRoaW5nLgor CSAgICAgIHRyZWUgc3NhID0gVFJFRV9PUEVSQU5EIChtX29wMSwgMCk7CisJICAgICAgaWYgKFRS RUVfQ09ERSAoc3NhKSA9PSBTU0FfTkFNRSkKKwkJbV9vcDEgPSBzc2E7CisJICAgIH0KKwkgIGlm IChnaW1wbGVfbnVtX29wcyAobV9zdG10KSA+PSAzKQorCSAgICBtX29wMiA9IGdpbXBsZV9hc3Np Z25fcmhzMiAobV9zdG10KTsKKwkgIGVsc2UKKwkgICAgbV9vcDIgPSBOVUxMX1RSRUU7CisJICBi cmVhazsKKwlkZWZhdWx0OgorCSAgbV9vcDEgPSBOVUxMX1RSRUU7CisJICBtX29wMiA9IE5VTExf VFJFRTsKKwkgIGJyZWFrOworICAgICAgfQorfQorCisvLyBDYWxjdWxhdGUgd2hhdCB3ZSBjYW4g ZGV0ZXJtaW5lIG9mIHRoZSByYW5nZSBvZiB0aGlzIHVuYXJ5CisvLyBzdGF0ZW1lbnQncyBvcGVy YW5kIGlmIHRoZSBsaHMgb2YgdGhlIGV4cHJlc3Npb24gaGFzIHRoZSByYW5nZQorLy8gTEhTX1JB TkdFLiAgUmV0dXJuIGZhbHNlIGlmIG5vdGhpbmcgY2FuIGJlIGRldGVybWluZWQuCisKK2Jvb2wK K2dpbXBsZV9yYW5nZV9vcF9oYW5kbGVyOjpjYWxjX29wMSAodnJhbmdlICZyLCBjb25zdCB2cmFu Z2UgJmxoc19yYW5nZSkKK3sKKyAgZ2NjX2NoZWNraW5nX2Fzc2VydCAoZ2ltcGxlX251bV9vcHMg KG1fc3RtdCkgPCAzKTsKKyAgLy8gR2l2ZSB1cCBvbiBlbXB0eSByYW5nZXMuCisgIGlmIChsaHNf cmFuZ2UudW5kZWZpbmVkX3AgKCkpCisgICAgcmV0dXJuIGZhbHNlOworCisgIC8vIFVuYXJ5IG9w ZXJhdGlvbnMgcmVxdWlyZSB0aGUgdHlwZSBvZiB0aGUgZmlyc3Qgb3BlcmFuZCBpbiB0aGUKKyAg Ly8gc2Vjb25kIHJhbmdlIHBvc2l0aW9uLgorICB0cmVlIHR5cGUgPSBUUkVFX1RZUEUgKG9wZXJh bmQxICgpKTsKKyAgVmFsdWVfUmFuZ2UgdHlwZV9yYW5nZSAodHlwZSk7CisgIHR5cGVfcmFuZ2Uu c2V0X3ZhcnlpbmcgKHR5cGUpOworICByZXR1cm4gb3AxX3JhbmdlIChyLCB0eXBlLCBsaHNfcmFu Z2UsIHR5cGVfcmFuZ2UpOworfQorCisvLyBDYWxjdWxhdGUgd2hhdCB3ZSBjYW4gZGV0ZXJtaW5l IG9mIHRoZSByYW5nZSBvZiB0aGlzIHN0YXRlbWVudCdzCisvLyBmaXJzdCBvcGVyYW5kIGlmIHRo ZSBsaHMgb2YgdGhlIGV4cHJlc3Npb24gaGFzIHRoZSByYW5nZSBMSFNfUkFOR0UKKy8vIGFuZCB0 aGUgc2Vjb25kIG9wZXJhbmQgaGFzIHRoZSByYW5nZSBPUDJfUkFOR0UuICBSZXR1cm4gZmFsc2Ug aWYKKy8vIG5vdGhpbmcgY2FuIGJlIGRldGVybWluZWQuCisKK2Jvb2wKK2dpbXBsZV9yYW5nZV9v cF9oYW5kbGVyOjpjYWxjX29wMSAodnJhbmdlICZyLCBjb25zdCB2cmFuZ2UgJmxoc19yYW5nZSwK KwkJCQkgICBjb25zdCB2cmFuZ2UgJm9wMl9yYW5nZSkKK3sKKyAgLy8gR2l2ZSB1cCBvbiBlbXB0 eSByYW5nZXMuCisgIGlmIChsaHNfcmFuZ2UudW5kZWZpbmVkX3AgKCkpCisgICAgcmV0dXJuIGZh bHNlOworCisgIC8vIFVuYXJ5IG9wZXJhdGlvbiBhcmUgYWxsb3dlZCB0byBwYXNzIGEgcmFuZ2Ug aW4gZm9yIHNlY29uZCBvcGVyYW5kCisgIC8vIGFzIHRoZXJlIGFyZSBvZnRlbiBhZGRpdGlvbmFs IHJlc3RyaWN0aW9ucyBiZXlvbmQgdGhlIHR5cGUgd2hpY2gKKyAgLy8gY2FuIGJlIGltcG9zZWQu ICBTZWUgb3BlcmF0b3JfY2FzdDo6b3AxX3JhbmdlKCkuCisgIHRyZWUgdHlwZSA9IFRSRUVfVFlQ RSAob3BlcmFuZDEgKCkpOworICAvLyBJZiBvcDIgaXMgdW5kZWZpbmVkLCBzb2x2ZSBhcyBpZiBp dCBpcyB2YXJ5aW5nLgorICBpZiAob3AyX3JhbmdlLnVuZGVmaW5lZF9wICgpKQorICAgIHsKKyAg ICAgIC8vIFRoaXMgaXMgc29tZXRpbWVzIGludm9rZWQgb24gc2luZ2xlIG9wZXJhbmQgc3RtdHMu CisgICAgICBpZiAoZ2ltcGxlX251bV9vcHMgKG1fc3RtdCkgPCAzKQorCXJldHVybiBmYWxzZTsK KyAgICAgIHRyZWUgb3AyX3R5cGUgPSBUUkVFX1RZUEUgKG9wZXJhbmQyICgpKTsKKyAgICAgIFZh bHVlX1JhbmdlIHRyYW5nZSAob3AyX3R5cGUpOworICAgICAgdHJhbmdlLnNldF92YXJ5aW5nIChv cDJfdHlwZSk7CisgICAgICByZXR1cm4gb3AxX3JhbmdlIChyLCB0eXBlLCBsaHNfcmFuZ2UsIHRy YW5nZSk7CisgICAgfQorICByZXR1cm4gb3AxX3JhbmdlIChyLCB0eXBlLCBsaHNfcmFuZ2UsIG9w Ml9yYW5nZSk7Cit9CisKKy8vIENhbGN1bGF0ZSB3aGF0IHdlIGNhbiBkZXRlcm1pbmUgb2YgdGhl IHJhbmdlIG9mIHRoaXMgc3RhdGVtZW50J3MKKy8vIHNlY29uZCBvcGVyYW5kIGlmIHRoZSBsaHMg b2YgdGhlIGV4cHJlc3Npb24gaGFzIHRoZSByYW5nZSBMSFNfUkFOR0UKKy8vIGFuZCB0aGUgZmly c3Qgb3BlcmFuZCBoYXMgdGhlIHJhbmdlIE9QMV9SQU5HRS4gIFJldHVybiBmYWxzZSBpZgorLy8g bm90aGluZyBjYW4gYmUgZGV0ZXJtaW5lZC4KKworYm9vbAorZ2ltcGxlX3JhbmdlX29wX2hhbmRs ZXI6OmNhbGNfb3AyICh2cmFuZ2UgJnIsIGNvbnN0IHZyYW5nZSAmbGhzX3JhbmdlLAorCQkJCSAg IGNvbnN0IHZyYW5nZSAmb3AxX3JhbmdlKQoreworICAvLyBHaXZlIHVwIG9uIGVtcHR5IHJhbmdl cy4KKyAgaWYgKGxoc19yYW5nZS51bmRlZmluZWRfcCAoKSkKKyAgICByZXR1cm4gZmFsc2U7CisK KyAgdHJlZSB0eXBlID0gVFJFRV9UWVBFIChvcGVyYW5kMiAoKSk7CisgIC8vIElmIG9wMSBpcyB1 bmRlZmluZWQsIHNvbHZlIGFzIGlmIGl0IGlzIHZhcnlpbmcuCisgIGlmIChvcDFfcmFuZ2UudW5k ZWZpbmVkX3AgKCkpCisgICAgeworICAgICAgdHJlZSBvcDFfdHlwZSA9IFRSRUVfVFlQRSAob3Bl cmFuZDEgKCkpOworICAgICAgVmFsdWVfUmFuZ2UgdHJhbmdlIChvcDFfdHlwZSk7CisgICAgICB0 cmFuZ2Uuc2V0X3ZhcnlpbmcgKG9wMV90eXBlKTsKKyAgICAgIHJldHVybiBvcDJfcmFuZ2UgKHIs IHR5cGUsIGxoc19yYW5nZSwgdHJhbmdlKTsKKyAgICB9CisgIHJldHVybiBvcDJfcmFuZ2UgKHIs IHR5cGUsIGxoc19yYW5nZSwgb3AxX3JhbmdlKTsKK30KZGlmZiAtLWdpdCBhL2djYy9naW1wbGUt cmFuZ2Utb3AuaCBiL2djYy9naW1wbGUtcmFuZ2Utb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uOGJjMGE4ZmJlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvZ2lt cGxlLXJhbmdlLW9wLmgKQEAgLTAsMCArMSw1MSBAQAorLyogSGVhZGVyIGZpbGUgZm9yIHRoZSBH SU1QTEUgcmFuZ2Utb3AgaW50ZXJmYWNlLgorICAgQ29weXJpZ2h0IChDKSAyMDIyIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgQ29udHJpYnV0ZWQgYnkgQW5kcmV3IE1hY0xlb2Qg PGFtYWNsZW9kQHJlZGhhdC5jb20+CisgICBhbmQgQWxkeSBIZXJuYW5kZXogPGFsZHloQHJlZGhh dC5jb20+LgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiBHQ0MuCisKK0dDQyBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCit0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIKK3ZlcnNpb24uCisKK0dDQyBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkKK1dBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9y CitGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyBmb3IgbW9yZSBkZXRhaWxzLgorCitZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorYWxvbmcgd2l0 aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKzxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpZm5kZWYgR0NDX0dJTVBMRV9SQU5HRV9PUF9ICisj ZGVmaW5lIEdDQ19HSU1QTEVfUkFOR0VfT1BfSAorCisjaW5jbHVkZSAicmFuZ2Utb3AuaCIKKwor CitjbGFzcyBnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlciA6IHB1YmxpYyByYW5nZV9vcF9oYW5kbGVy Cit7CitwdWJsaWM6CisgIHN0YXRpYyBib29sIHN1cHBvcnRlZF9wIChnaW1wbGUgKnMpOworICBn aW1wbGVfcmFuZ2Vfb3BfaGFuZGxlciAoZ2ltcGxlICpzKTsKKyAgaW5saW5lIGdpbXBsZSAqc3Rt dCAoKSBjb25zdCB7IHJldHVybiBtX3N0bXQ7IH0KKyAgaW5saW5lIHRyZWUgbGhzICgpIGNvbnN0 IHsgcmV0dXJuIGdpbXBsZV9nZXRfbGhzIChtX3N0bXQpOyB9CisgIHRyZWUgb3BlcmFuZDEgKCkg Y29uc3QgeyBnY2NfY2hlY2tpbmdfYXNzZXJ0IChtX3ZhbGlkKTsgcmV0dXJuIG1fb3AxOyB9Cisg IHRyZWUgb3BlcmFuZDIgKCkgY29uc3QgeyBnY2NfY2hlY2tpbmdfYXNzZXJ0IChtX3ZhbGlkKTsg cmV0dXJuIG1fb3AyOyB9CisgIGJvb2wgY2FsY19vcDEgKHZyYW5nZSAmciwgY29uc3QgdnJhbmdl ICZsaHNfcmFuZ2UpOworICBib29sIGNhbGNfb3AxICh2cmFuZ2UgJnIsIGNvbnN0IHZyYW5nZSAm bGhzX3JhbmdlLCBjb25zdCB2cmFuZ2UgJm9wMl9yYW5nZSk7CisgIGJvb2wgY2FsY19vcDIgKHZy YW5nZSAmciwgY29uc3QgdnJhbmdlICZsaHNfcmFuZ2UsIGNvbnN0IHZyYW5nZSAmb3AxX3Jhbmdl KTsKK3ByaXZhdGU6CisgIGdpbXBsZSAqbV9zdG10OworICB0cmVlIG1fb3AxLCBtX29wMjsKK307 CisKKy8vIEdpdmVuIHN0bXQgUywgZmlsbCBWRUMsIHVwIHRvIFZFQ19TSVpFIGVsZW1lbnRzLCB3 aXRoIHJlbGV2YW50IHNzYS1uYW1lcworLy8gb24gdGhlIHN0YXRlbWVudC4gIEZvciBlZmZpY2ll bmN5LCBpdCBpcyBhbiBlcnJvciB0byBub3QgcGFzcyBpbiBlbm91Z2gKKy8vIGVsZW1lbnRzIGZv ciB0aGUgdmVjdG9yLiAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygc3NhLW5hbWVzLgorCit1bnNpZ25l ZCBnaW1wbGVfcmFuZ2Vfc3NhX25hbWVzICh0cmVlICp2ZWMsIHVuc2lnbmVkIHZlY19zaXplLCBn aW1wbGUgKnN0bXQpOworCisjZW5kaWYgLy8gR0NDX0dJTVBMRV9SQU5HRV9PUF9ICmRpZmYgLS1n aXQgYS9nY2MvZ2ltcGxlLXJhbmdlLmNjIGIvZ2NjL2dpbXBsZS1yYW5nZS5jYwppbmRleCBlYjM0 N2VlZTQ1Yi4uZDY3ZDY0OTljNzggMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUtcmFuZ2UuY2MKKysr IGIvZ2NjL2dpbXBsZS1yYW5nZS5jYwpAQCAtMzQxLDcgKzM0MSw3IEBAIGdpbXBsZV9yYW5nZXI6 OnByZWZpbGxfbmFtZSAodnJhbmdlICZyLCB0cmVlIG5hbWUpCiAgIGlmICghZ2ltcGxlX3Jhbmdl X3NzYV9wIChuYW1lKSkKICAgICByZXR1cm47CiAgIGdpbXBsZSAqc3RtdCA9IFNTQV9OQU1FX0RF Rl9TVE1UIChuYW1lKTsKLSAgaWYgKCFyYW5nZV9vcF9oYW5kbGVyIChzdG10KSAmJiAhaXNfYTxn cGhpICo+IChzdG10KSkKKyAgaWYgKCFnaW1wbGVfcmFuZ2Vfb3BfaGFuZGxlcjo6c3VwcG9ydGVk X3AgKHN0bXQpICYmICFpc19hPGdwaGkgKj4gKHN0bXQpKQogICAgIHJldHVybjsKIAogICBib29s IGN1cnJlbnQ7CkBAIC0zNjQsNyArMzY0LDcgQEAgZ2ltcGxlX3Jhbmdlcjo6cHJlZmlsbF9zdG10 X2RlcGVuZGVuY2llcyAodHJlZSBzc2EpCiAgIGdjY19jaGVja2luZ19hc3NlcnQgKHN0bXQgJiYg Z2ltcGxlX2JiIChzdG10KSk7CiAKICAgLy8gT25seSBwcmUtcHJvY2VzcyByYW5nZS1vcHMgYW5k IHBoaXMuCi0gIGlmICghcmFuZ2Vfb3BfaGFuZGxlciAoc3RtdCkgJiYgIWlzX2E8Z3BoaSAqPiAo c3RtdCkpCisgIGlmICghZ2ltcGxlX3JhbmdlX29wX2hhbmRsZXI6OnN1cHBvcnRlZF9wIChzdG10 KSAmJiAhaXNfYTxncGhpICo+IChzdG10KSkKICAgICByZXR1cm47CiAKICAgLy8gTWFyayB3aGVy ZSBvbiB0aGUgc3RhY2sgd2UgYXJlIHN0YXJ0aW5nLgpAQCAtNDIyLDE0ICs0MjIsMTUgQEAgZ2lt cGxlX3Jhbmdlcjo6cHJlZmlsbF9zdG10X2RlcGVuZGVuY2llcyAodHJlZSBzc2EpCiAJfQogICAg ICAgZWxzZQogCXsKLQkgIGdjY19jaGVja2luZ19hc3NlcnQgKHJhbmdlX29wX2hhbmRsZXIgKHN0 bXQpKTsKLQkgIHRyZWUgb3AgPSBnaW1wbGVfcmFuZ2Vfb3BlcmFuZDIgKHN0bXQpOworCSAgZ2lt cGxlX3JhbmdlX29wX2hhbmRsZXIgaGFuZGxlciAoc3RtdCk7CisJICBnY2NfY2hlY2tpbmdfYXNz ZXJ0IChoYW5kbGVyKTsKKwkgIHRyZWUgb3AgPSBoYW5kbGVyLm9wZXJhbmQyICgpOwogCSAgaWYg KG9wKQogCSAgICB7CiAJICAgICAgVmFsdWVfUmFuZ2UgciAoVFJFRV9UWVBFIChvcCkpOwogCSAg ICAgIHByZWZpbGxfbmFtZSAociwgb3ApOwogCSAgICB9Ci0JICBvcCA9IGdpbXBsZV9yYW5nZV9v cGVyYW5kMSAoc3RtdCk7CisJICBvcCA9IGhhbmRsZXIub3BlcmFuZDEgKCk7CiAJICBpZiAob3Ap CiAJICAgIHsKIAkgICAgICBWYWx1ZV9SYW5nZSByIChUUkVFX1RZUEUgKG9wKSk7CmRpZmYgLS1n aXQgYS9nY2MvZ2ltcGxlLXJhbmdlLmggYi9nY2MvZ2ltcGxlLXJhbmdlLmgKaW5kZXggMzRmNjEw MjVhYzMuLjhiMmZmNTY4NWU1IDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLXJhbmdlLmgKKysrIGIv Z2NjL2dpbXBsZS1yYW5nZS5oCkBAIC0yNCw3ICsyNCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUg dGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCiAKICNpbmNsdWRlICJyYW5nZS5oIgogI2lu Y2x1ZGUgInZhbHVlLXF1ZXJ5LmgiCi0jaW5jbHVkZSAicmFuZ2Utb3AuaCIKKyNpbmNsdWRlICJn aW1wbGUtcmFuZ2Utb3AuaCIKICNpbmNsdWRlICJnaW1wbGUtcmFuZ2UtdHJhY2UuaCIKICNpbmNs dWRlICJnaW1wbGUtcmFuZ2UtZWRnZS5oIgogI2luY2x1ZGUgImdpbXBsZS1yYW5nZS1mb2xkLmgi CmRpZmYgLS1naXQgYS9nY2MvcmFuZ2Utb3AuY2MgYi9nY2MvcmFuZ2Utb3AuY2MKaW5kZXggZjY0 MmIzZjI2ZGUuLjlhZTQyYjgzMzFmIDEwMDY0NAotLS0gYS9nY2MvcmFuZ2Utb3AuY2MKKysrIGIv Z2NjL3JhbmdlLW9wLmNjCkBAIC00MTgyLDQyICs0MTgyLDE5IEBAIHJhbmdlX29wX2hhbmRsZXI6 OnNldF9vcF9oYW5kbGVyICh0cmVlX2NvZGUgY29kZSwgdHJlZSB0eXBlKQogICAgIH0KIH0KIAot cmFuZ2Vfb3BfaGFuZGxlcjo6cmFuZ2Vfb3BfaGFuZGxlciAodHJlZV9jb2RlIGNvZGUsIHRyZWUg dHlwZSkKK3JhbmdlX29wX2hhbmRsZXI6OnJhbmdlX29wX2hhbmRsZXIgKCkKIHsKLSAgc2V0X29w X2hhbmRsZXIgKGNvZGUsIHR5cGUpOworICBtX2ludCA9IE5VTEw7CisgIG1fZmxvYXQgPSBOVUxM OworICBtX3ZhbGlkID0gZmFsc2U7CiB9CiAKLXJhbmdlX29wX2hhbmRsZXI6OnJhbmdlX29wX2hh bmRsZXIgKGNvbnN0IGdpbXBsZSAqcykKK3JhbmdlX29wX2hhbmRsZXI6OnJhbmdlX29wX2hhbmRs ZXIgKHRyZWVfY29kZSBjb2RlLCB0cmVlIHR5cGUpCiB7Ci0gIHRyZWVfY29kZSBjb2RlID0gTk9Q X0VYUFI7Ci0gIHRyZWUgdHlwZSA9IE5VTExfVFJFRTsKLQotICBpZiAoY29uc3QgZ2Fzc2lnbiAq YXNzID0gZHluX2Nhc3Q8Y29uc3QgZ2Fzc2lnbiAqPiAocykpCi0gICAgewotICAgICAgY29kZSA9 IGdpbXBsZV9hc3NpZ25fcmhzX2NvZGUgKGFzcyk7Ci0gICAgICAvLyBUaGUgTEhTIG9mIGEgY29t cGFyaXNvbiBpcyBhbHdheXMgYW4gaW50LCBzbyB3ZSBtdXN0IGxvb2sgYXQKLSAgICAgIC8vIHRo ZSBvcGVyYW5kcy4KLSAgICAgIGlmIChUUkVFX0NPREVfQ0xBU1MgKGNvZGUpID09IHRjY19jb21w YXJpc29uKQotCXR5cGUgPSBUUkVFX1RZUEUgKGdpbXBsZV9hc3NpZ25fcmhzMSAoYXNzKSk7Ci0g ICAgICBlbHNlCi0JdHlwZSA9IFRSRUVfVFlQRSAoZ2ltcGxlX2Fzc2lnbl9saHMgKGFzcykpOwot ICAgIH0KLSAgZWxzZSBpZiAoY29uc3QgZ2NvbmQgKmNvbmQgPSBkeW5fY2FzdDxjb25zdCBnY29u ZCAqPiAocykpCi0gICAgewotICAgICAgY29kZSA9IGdpbXBsZV9jb25kX2NvZGUgKGNvbmQpOwot ICAgICAgdHlwZSA9IFRSRUVfVFlQRSAoZ2ltcGxlX2NvbmRfbGhzIChjb25kKSk7Ci0gICAgfQot Ci0gIGlmICghdHlwZSkKLSAgICB7Ci0gICAgICBtX2ludCA9IE5VTEw7Ci0gICAgICBtX2Zsb2F0 ID0gTlVMTDsKLSAgICAgIG1fdmFsaWQgPSBmYWxzZTsKLSAgICB9Ci0gIGVsc2UKLSAgICBzZXRf b3BfaGFuZGxlciAoY29kZSwgdHlwZSk7CisgIHNldF9vcF9oYW5kbGVyIChjb2RlLCB0eXBlKTsK IH0KIAorCiBib29sCiByYW5nZV9vcF9oYW5kbGVyOjpmb2xkX3JhbmdlICh2cmFuZ2UgJnIsIHRy ZWUgdHlwZSwKIAkJCSAgICAgIGNvbnN0IHZyYW5nZSAmbGgsCmRpZmYgLS1naXQgYS9nY2MvcmFu Z2Utb3AuaCBiL2djYy9yYW5nZS1vcC5oCmluZGV4IDU2YzU3YzQ2YThlLi5iNGI1MTAxYTllMCAx MDA2NDQKLS0tIGEvZ2NjL3JhbmdlLW9wLmgKKysrIGIvZ2NjL3JhbmdlLW9wLmgKQEAgLTE2MCw4 ICsxNjAsOCBAQCBwdWJsaWM6CiBjbGFzcyByYW5nZV9vcF9oYW5kbGVyCiB7CiBwdWJsaWM6Cisg IHJhbmdlX29wX2hhbmRsZXIgKCk7CiAgIHJhbmdlX29wX2hhbmRsZXIgKGVudW0gdHJlZV9jb2Rl IGNvZGUsIHRyZWUgdHlwZSk7Ci0gIHJhbmdlX29wX2hhbmRsZXIgKGNvbnN0IGdpbXBsZSAqcyk7 CiAgIGlubGluZSBvcGVyYXRvciBib29sICgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsaWQ7IH0KIAog ICBib29sIGZvbGRfcmFuZ2UgKHZyYW5nZSAmciwgdHJlZSB0eXBlLApAQCAtMTg1LDcgKzE4NSw3 IEBAIHB1YmxpYzoKIAkJCQkgIGNvbnN0IHZyYW5nZSAmb3AyLAogCQkJCSAgcmVsYXRpb25fa2lu ZCA9IFZSRUxfVkFSWUlORykgY29uc3Q7CiAgIHJlbGF0aW9uX2tpbmQgb3AxX29wMl9yZWxhdGlv biAoY29uc3QgdnJhbmdlICZsaHMpIGNvbnN0OwotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgdm9p ZCBzZXRfb3BfaGFuZGxlciAoZW51bSB0cmVlX2NvZGUgY29kZSwgdHJlZSB0eXBlKTsKICAgYm9v bCBtX3ZhbGlkOwogICByYW5nZV9vcGVyYXRvciAqbV9pbnQ7Ci0tIAoyLjM3LjMKCg== --------------faTfdGTLV3Igt0BKcESpALx6--