Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n03jD-0002vB-AA for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Dec 2021 15:40:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1n03jC-00034M-1V for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Dec 2021 15:40:30 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n03jB-00034D-4z for pgsql-hackers@lists.postgresql.org; Wed, 22 Dec 2021 15:40:29 +0000 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1n03j3-0002IL-ET for pgsql-hackers@lists.postgresql.org; Wed, 22 Dec 2021 15:40:28 +0000 Received: by mail-ed1-x534.google.com with SMTP id z29so10243670edl.7 for ; Wed, 22 Dec 2021 07:40:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=message-id:date:mime-version:user-agent:subject:content-language :from:to:cc:references:in-reply-to; bh=PoCLUpmaan1vTu/qFh7XE2WqVPrL+zvXXxrmCalxvmw=; b=drzfVv+hfkbHeIv/xmvIEhyTT09rfdSsHDrmJoijwNNF72rE2shR236eURhkbKkDym +2ROulyLGJ/lVElVdMvkngrz+vkSZo2krPntgYQJbDc7+4QxQ+WEMXhP8RMOIL87p0ck 66rvqY/L1ZDI5Q46ipFdS2N7xYATRVxNz7zX7pnVu8g3wWSMJ0hy5wf/lLZox8MolbLK 2nKq/NKlZU/lBhuCengFuptbQonfXzTvqEK3h31TNgYOczLB6q13ye49qspT7cWQIW6B R5J3MSRdB6vCVs/vLn3tjMsBgBbnZaz9vUZt15vRkA/xCu3JHjq2PSwQPJtpDm3JIeJt YDug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:from:to:cc:references:in-reply-to; bh=PoCLUpmaan1vTu/qFh7XE2WqVPrL+zvXXxrmCalxvmw=; b=w0J1xKDaxFxnkxe67L/VGqS2AJtXF9/x0giDLay93CGGrcB1xJ+2+h9jYqA72yhxbR UCfFO6NO6c2UAPMr3JCivYvQkzmbwcaWqvzI4oD7iGJmQqd1KU8gCl4S+zc8jVK+AVcZ i5fteYvLcxIInliMsyX69CoZmR1S13s4J9aLSHjir6278ETb93cI21cwb3IQZwBM55mD Syrftk77GbBRzeHoJq1h9gqmRZUvdCVobtmOGkYM7Lw5o9RL/B7cuIZiGavJ15ZTz28C I16YvMusN1mbQsWd3JOqFnv6UHlAYUT9+nsl15NNhahzFwamA8PSjrCryho9yUJw9LaV M9aw== X-Gm-Message-State: AOAM530xbCKmJ5ucBh4f51XphHaTa9t/EGM1iK0AInFEE4PSU7olnQXb OyVMoP6UtzcK4sSZpVoy5cCN6UHXEz9p2ZHtachGwvRR3NXDIOgHxnsotOj+Zko39VLX7QY1v2m yZglwIuPYCIFfURNNGGmniA/QcqQfmUAodM3Zu2rmT7brDvXbTfEsH9kFanuY2T/9Zs6pS07aeq 12GCgUAcLHJvyzfNycEcLKQRE/C0FP+PSVvuePMAJ0+eLnpAetvRfN X-Google-Smtp-Source: ABdhPJy7615d2bPrB6NM2BPoDNMrBigs1L2Cql5TSyLbkSRh4V6DcklmBpX9tGd+1JxnBZLA/a7ZWQ== X-Received: by 2002:a17:906:af52:: with SMTP id ly18mr2823870ejb.616.1640187619985; Wed, 22 Dec 2021 07:40:19 -0800 (PST) Received: from [10.137.0.18] (static-84-42-175-93.net.upcbroadband.cz. [84.42.175.93]) by smtp.gmail.com with ESMTPSA id n25sm1020153eds.9.2021.12.22.07.40.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 22 Dec 2021 07:40:19 -0800 (PST) Content-Type: multipart/mixed; boundary="------------NQr9xOgNVjXIyBTcV0JPdvCk" Message-ID: Date: Wed, 22 Dec 2021 16:40:17 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Subject: Re: logical decoding and replication of sequences Content-Language: en-US From: Tomas Vondra To: Amit Kapila Cc: Peter Eisentraut , PostgreSQL Hackers , Petr Jelinek References: <3005299b-267d-8e4a-68a3-abdad3e96aba@enterprisedb.com> <3d6df331-5532-6848-eb45-344b265e0238@enterprisedb.com> <482c10c1-b110-819f-b0e7-17549fa2f0dc@enterprisedb.com> <12a9ecd6-4edb-a367-33da-4e2d03b0aace@enterprisedb.com> <2cd38bab-c874-8e0b-98e7-d9abaaf9806a@enterprisedb.com> <118b249f-e4ef-2faf-8e25-dd25236dc964@enterprisedb.com> <90b4e402-3f07-14f4-deca-5eaca31f70a3@enterprisedb.com> In-Reply-To: <90b4e402-3f07-14f4-deca-5eaca31f70a3@enterprisedb.com> X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 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. --------------NQr9xOgNVjXIyBTcV0JPdvCk Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, Here's an updated version of the patch series. The primary change is tweaking the WAL-logging of sequences modified per [1]. This changes test output in test_decoding and built-in replication patches, and to make it clearer I left the changes in separate patches. Assuming the WAL logging changes are acceptable, that resolves the data loss issue. I'm wondering what to do about changes with is_called=false, i.e. changes generated by ALTER SEQUENCE etc. The current patch does decode them and passes them to the output plugin, but I'm starting to think that may not be the right behavior - if we haven't generated any data from the sequence, there's no point in replicating that, I think. regards [1] https://www.postgresql.org/message-id/712cad46-a9c8-1389-aef8-faf0203c9be9%40enterprisedb.com -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --------------NQr9xOgNVjXIyBTcV0JPdvCk Content-Type: text/x-patch; charset=UTF-8; name="0001-WAL-log-individual-sequence-fetches-20211222.patch" Content-Disposition: attachment; filename="0001-WAL-log-individual-sequence-fetches-20211222.patch" Content-Transfer-Encoding: base64 RnJvbSBlZWFhN2NiMzZjNjlhZjA0OGYwMzIxZTQ4ODM4NjRlYmUyNTQyNDI5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogV2VkLCAyMiBEZWMgMjAyMSAwMzoxODo0NiArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggMS82XSBXQUwtbG9nIGluZGl2aWR1YWwgc2VxdWVuY2UgZmV0Y2hlcwoK LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jIHwgMTggKysrKysrKysrKysr KysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRleCA3MmJmZGMwN2E0Li4wZjMwOWQw YTRlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKQEAgLTUyLDYgKzUyLDkgQEAKICAq IFdlIGRvbid0IHdhbnQgdG8gbG9nIGVhY2ggZmV0Y2hpbmcgb2YgYSB2YWx1ZSBmcm9tIGEg c2VxdWVuY2UsCiAgKiBzbyB3ZSBwcmUtbG9nIGEgZmV3IGZldGNoZXMgaW4gYWR2YW5jZS4g SW4gdGhlIGV2ZW50IG9mCiAgKiBjcmFzaCB3ZSBjYW4gbG9zZSAoc2tpcCBvdmVyKSBhcyBt YW55IHZhbHVlcyBhcyB3ZSBwcmUtbG9nZ2VkLgorICoKKyAqIFdlIG9ubHkgcHJlLWxvZyBm ZXRjaGVzIGluIHdhbF9sZXZlbD1taW5pbWFsLiBGb3IgaGlnaGVyIGxldmVscyB3ZQorICog V0FMLWxvZyBldmVyeSBpbmRpdmlkdWFsIHNlcXVlbmNlIGluY3JlbWVudCwgYXMgaWYgdGhp cyB3YXMgMC4KICAqLwogI2RlZmluZSBTRVFfTE9HX1ZBTFMJMzIKIApAQCAtNjY2LDExICs2 NjksMTggQEAgbmV4dHZhbF9pbnRlcm5hbChPaWQgcmVsaWQsIGJvb2wgY2hlY2tfcGVybWlz c2lvbnMpCiAJICogV0FMIHJlY29yZCB0byBiZSB3cml0dGVuIGFueXdheSwgZWxzZSByZXBs YXkgc3RhcnRpbmcgZnJvbSB0aGUKIAkgKiBjaGVja3BvaW50IHdvdWxkIGZhaWwgdG8gYWR2 YW5jZSB0aGUgc2VxdWVuY2UgcGFzdCB0aGUgbG9nZ2VkIHZhbHVlcy4KIAkgKiBJbiB0aGlz IGNhc2Ugd2UgbWF5IGFzIHdlbGwgZmV0Y2ggZXh0cmEgdmFsdWVzLgorCSAqCisJICogV2Ug b25seSBwcmUtbG9nIGZldGNoZXMgaW4gd2FsX2xldmVsPW1pbmltYWwuIEZvciBoaWdoZXIg bGV2ZWxzIHdlCisJICogV0FMLWxvZyBldmVyeSBpbmRpdmlkdWFsIHNlcXVlbmNlIGluY3Jl bWVudC4KIAkgKi8KIAlpZiAobG9nIDwgZmV0Y2ggfHwgIXNlcS0+aXNfY2FsbGVkKQogCXsK IAkJLyogZm9yY2VkIGxvZyB0byBzYXRpc2Z5IGxvY2FsIGRlbWFuZCBmb3IgdmFsdWVzICov Ci0JCWZldGNoID0gbG9nID0gZmV0Y2ggKyBTRVFfTE9HX1ZBTFM7CisJCWlmIChYTG9nSXNO ZWVkZWQoKSkKKwkJCWZldGNoID0gbG9nID0gZmV0Y2g7CisJCWVsc2UKKwkJCWZldGNoID0g bG9nID0gZmV0Y2ggKyBTRVFfTE9HX1ZBTFM7CisKIAkJbG9naXQgPSB0cnVlOwogCX0KIAll bHNlCkBAIC02ODAsNyArNjkwLDExIEBAIG5leHR2YWxfaW50ZXJuYWwoT2lkIHJlbGlkLCBi b29sIGNoZWNrX3Blcm1pc3Npb25zKQogCQlpZiAoUGFnZUdldExTTihwYWdlKSA8PSByZWRv cHRyKQogCQl7CiAJCQkvKiBsYXN0IHVwZGF0ZSBvZiBzZXEgd2FzIGJlZm9yZSBjaGVja3Bv aW50ICovCi0JCQlmZXRjaCA9IGxvZyA9IGZldGNoICsgU0VRX0xPR19WQUxTOworCQkJaWYg KFhMb2dJc05lZWRlZCgpKQorCQkJCWZldGNoID0gbG9nID0gZmV0Y2g7CisJCQllbHNlCisJ CQkJZmV0Y2ggPSBsb2cgPSBmZXRjaCArIFNFUV9MT0dfVkFMUzsKKwogCQkJbG9naXQgPSB0 cnVlOwogCQl9CiAJfQotLSAKMi4zMS4xCgo= --------------NQr9xOgNVjXIyBTcV0JPdvCk Content-Type: text/x-patch; charset=UTF-8; name="0002-Logical-decoding-of-sequences-20211222.patch" Content-Disposition: attachment; filename="0002-Logical-decoding-of-sequences-20211222.patch" Content-Transfer-Encoding: base64 RnJvbSBiNWRhOGNiYmE0YTEwZGI0ZmY0YjdjZGM3ZWQ2NTU1YmM4OGQ2MjMyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogRnJpLCAyNCBTZXAgMjAyMSAwMDo0MTozMyArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMi82XSBMb2dpY2FsIGRlY29kaW5nIG9mIHNlcXVlbmNlcwoKVGhpcyBh ZGRzIHRoZSBpbmZyYXN0cnVjdHVyZSBmb3IgbG9naWNhbCBkZWNvZGluZyBvZiBzZXF1ZW5j ZXMuIFN1cHBvcnQKZm9yIGJ1aWx0LWluIGxvZ2ljYWwgcmVwbGljYXRpb24gYW5kIHRlc3Rf ZGVjb2RpbmcgaXMgYWRkZWQgc2VwYXJhdGVseS4KCldoZW4gZGVjb2Rpbmcgc2VxdWVuY2Vz LCB3ZSBkaWZmZXJlbnRpYXRlIGJldHdlZW4gYSBzZXF1ZW5jZXMgY3JlYXRlZCBpbgphIChy dW5uaW5nKSB0cmFuc2FjdGlvbiwgYW5kIHNlcXVlbmNlcyBjcmVhdGVkIGluIG90aGVyIChh bHJlYWR5CmNvbW1pdHRlZCkgdHJhbnNhY3Rpb25zLiBDaGFuZ2VzIGZvciBzZXF1ZW5jZXMg Y3JlYXRlZCBpbiB0aGUgc2FtZQp0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gYXJlIHRyZWF0ZWQg YXMgInRyYW5zYWN0aW9uYWwiIGkuZS4ganVzdCBsaWtlIGFueQpvdGhlciBjaGFuZ2UgZnJv bSB0aGF0IHRyYW5zYWN0aW9uIChhbmQgZGlzY2FyZGVkIGluIGNhc2Ugb2YgYQpyb2xsYmFj aykuIENoYW5nZXMgZm9yIHNlcXVlbmNlcyBjcmVhdGVkIGVhcmxpZXIgYXJlIHRyZWF0ZWQg YXMgbm90CnRyYW5zYWN0aW9uYWwgLSBhcmUgcHJvY2Vzc2VkIGltbWVkaWF0ZWx5LCBhcyBp ZiBwZXJmb3JtZWQgb3V0c2lkZSBhbnkKdHJhbnNhY3Rpb24gKGFuZCB0aHVzIG5vdCByb2xs ZWQgYmFjaykuCgpUaGlzIG1peGVkIGJlaGF2aW9yIGlzIG5lY2Vzc2FyeSAtIHNlcXVlbmNl cyBhcmUgbm9uLXRyYW5zYWN0aW9uYWwgKGUuZy4KUk9MTEJBQ0sgZG9lcyBub3QgdW5kbyB0 aGUgc2VxdWVuY2UgaW5jcmVtZW50cykuIEJ1dCBmb3IgbmV3IHNlcXVlbmNlcywKd2UgbmVl ZCB0byBoYW5kbGUgdGhlbSBpbiBhIHRyYW5zYWN0aW9uYWwgd2F5LCBiZWNhdXNlIGlmIHdl IGV2ZXIgZ2V0CnNvbWUgRERMIHN1cHBvcnQsIHRoZSBzZXF1ZW5jZSB3b24ndCBleGlzdCB1 bnRpbCB0aGUgdHJhbnNhY3Rpb24gZ2V0cwphcHBsaWVkLiBTbyB3ZSBuZWVkIHRvIGVuc3Vy ZSB0aGUgaW5jcmVtZW50cyBkb24ndCBoYXBwZW4gdW50aWwgdGhlCnNlcXVlbmNlIGdldHMg Y3JlYXRlZC4KClRvIGRpZmZlcmVudGlhdGUgd2hpY2ggc2VxdWVuY2VzIGFyZSAib2xkIiBh bmQgd2hpY2ggd2VyZSBjcmVhdGVkIGluIGEKc3RpbGwtcnVubmluZyB0cmFuc2FjdGlvbiwg d2UgdHJhY2sgc2VxdWVuY2VzIGNyZWF0ZWQgaW4gcnVubmluZwp0cmFuc2FjdGlvbnMgaW4g YSBoYXNoIHRhYmxlLiBFYWNoIHNlcXVlbmNlIGlzIGlkZW50aWZpZWQgYnkgaXQncwpyZWxm aWxlbm9kZSwgYW5kIGF0IHRyYW5zYWN0aW9uIGNvbW1pdCB3ZSBkaXNjYXJkIGFsbCBzZXF1 ZW5jZXMgY3JlYXRlZAppbiB0aGF0IHBhcnRpY3VsYXIgdHJhbnNhY3Rpb24uIEZvciBlYWNo IHNlcXVlbmNlIHdlIHRyYWNrIHRoZSBYSUQgb2YKdGhlIChzdWIpdHJhbnNhY3Rpb24gdGhh dCBjcmVhdGVkIGl0LCBhbmQgd2UgY2xlYW51cCB0aGUgc2VxdWVuY2VzIGZvcgplYWNoIHN1 YnRyYW5zYWN0aW9uIHdoZW4gaXQgY29tcGxldGVzIChjb21taXQvcm9sbGJhY2spLgoKV2Ug ZG9uJ3QgdXNlIHRoZSBYSUQgdG8gY2hlY2sgaWYgaXQncyB0aGUgc2FtZSB0b3AtbGV2ZWwg dHJhbnNhY3Rpb24uCkl0J3MgZW5vdWdoIHRvIGtub3cgaXQgd2FzIGNyZWF0ZWQgaW4gYW4g aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24sIGFuZCB3ZQprbm93IGl0IG11c3QgYmUgdGhlIGN1 cnJlbnQgb25lIGJlY2F1c2Ugb3RoZXJ3aXNlIGl0IHdvdWxkbid0IHNlZSB0aGUKc2VxdWVu Y2Ugb2JqZWN0LgoKVGhlIG1haW4gY2hhbmdlcyBpbiB0aGlzIHBhdGNoIGFyZToKCjEpIGVu c3VyZSBXQUwtbG9nZ2luZyBvZiBhbGwgbmVjZXNzYXJ5IGluZm8gZm9yIHNlcXVlbmNlIGFk dmFuY2VzCgpXZSBuZWVkIHRvIGJlIGFibGUgdG8gYXNzb2NpYXRlIHRoZSBhZHZhbmNlIHdp dGggYSBYSUQsIGJ1dCB1bnRpbCBub3cKc2VxdWVuY2UgYWR2YW5jZSBtaWdodCBoYXZlIFhJ RCAwIGlmIGl0IHdhcyB0aGUgZmlyc3QgdGhpbmcgdGhlCnRyYW5zYWN0aW9uIGRpZC4gU28g d2UgZW5zdXJlIHRoZSB0cmFuc2FjdGlvbiBoYXMgWElELgoKTm90ZTogVGhpcyBpcyBuZWVk ZWQgYmVjYXVzZSBvZiBzdWJ4YWN0cy4gQSBYSUQgMCBtaWdodCBzdGlsbCBoYXZlIHRoZQpz ZXF1ZW5jZSBjcmVhdGVkIGluIGEgZGlmZmVyZW50IHN1YnhhY3Qgb2YgdGhlIHNhbWUgdG9w LWxldmVsIHhhY3QuCgpUaGVuIHRoZXJlJ3MgYSAiY3JlYXRlZCIgZmxhZyBhZGRlZCB0byB0 aGUgeGxfc2VxX3JlYywgd2hpY2ggaXMKbmVjZXNzYXJ5IHRvIGRpZmZlcmVudGlhdGUgV0FM IGZvciBjcmVhdGVkL3Jlc2V0IHNlcXVlbmNlcy4KCjIpIGRlY29kaW5nIC8gcXVldWVpbmcg b2Ygc2VxdWVuY2VzIGludG8gUmVvcmRlckJ1ZmZlcgoKVGhpcyBpcyBtb3N0bHkgY29weS1w YXN0ZSBvZiBleGlzdGluZyBjb2RlIGZvciBvdGhlciBkZWNvZGVkIGV2ZW50cy4KCjMpIHRy YWNraW5nIHNlcXVlbmNlcyBjcmVhdGVkIGluIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucwoK V2UgdXNlIGEgc2ltcGxlIGhhc2ggdGFibGUsIGluZGV4ZWQgYnkgcmVsZmlsZW5vZGUuCi0t LQogZG9jL3NyYy9zZ21sL2xvZ2ljYWxkZWNvZGluZy5zZ21sICAgICAgICAgICAgIHwgIDYy ICsrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYyAgICAgICAgICAgICAgIHwg IDMyICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAgICAg fCAxMzEgKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWwu YyAgICAgfCAgODggKysrKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZl ci5jICAgICAgIHwgNDAwICsrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvY29tbWFu ZHMvc2VxdWVuY2UuaCAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL291dHB1dF9wbHVnaW4uaCAgICAgICB8ICAyNyArKwogc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgIHwgIDQzICstCiA4IGZpbGVzIGNoYW5n ZWQsIDc3OCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsZGVjb2Rpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2Fs ZGVjb2Rpbmcuc2dtbAppbmRleCBiNjM1M2M3YTEyLi42MGEyYjdkMWNjIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvbG9naWNhbGRlY29kaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2xvZ2ljYWxkZWNvZGluZy5zZ21sCkBAIC00NTgsNiArNDU4LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgT3V0cHV0UGx1Z2luQ2FsbGJhY2tzCiAgICAgTG9naWNhbERlY29kZVRydW5jYXRlQ0Ig dHJ1bmNhdGVfY2I7CiAgICAgTG9naWNhbERlY29kZUNvbW1pdENCIGNvbW1pdF9jYjsKICAg ICBMb2dpY2FsRGVjb2RlTWVzc2FnZUNCIG1lc3NhZ2VfY2I7CisgICAgTG9naWNhbERlY29k ZVNlcXVlbmNlQ0Igc2VxdWVuY2VfY2I7CiAgICAgTG9naWNhbERlY29kZUZpbHRlckJ5T3Jp Z2luQ0IgZmlsdGVyX2J5X29yaWdpbl9jYjsKICAgICBMb2dpY2FsRGVjb2RlU2h1dGRvd25D QiBzaHV0ZG93bl9jYjsKICAgICBMb2dpY2FsRGVjb2RlRmlsdGVyUHJlcGFyZUNCIGZpbHRl cl9wcmVwYXJlX2NiOwpAQCAtNDcyLDYgKzQ3Myw3IEBAIHR5cGVkZWYgc3RydWN0IE91dHB1 dFBsdWdpbkNhbGxiYWNrcwogICAgIExvZ2ljYWxEZWNvZGVTdHJlYW1Db21taXRDQiBzdHJl YW1fY29tbWl0X2NiOwogICAgIExvZ2ljYWxEZWNvZGVTdHJlYW1DaGFuZ2VDQiBzdHJlYW1f Y2hhbmdlX2NiOwogICAgIExvZ2ljYWxEZWNvZGVTdHJlYW1NZXNzYWdlQ0Igc3RyZWFtX21l c3NhZ2VfY2I7CisgICAgTG9naWNhbERlY29kZVN0cmVhbVNlcXVlbmNlQ0Igc3RyZWFtX3Nl cXVlbmNlX2NiOwogICAgIExvZ2ljYWxEZWNvZGVTdHJlYW1UcnVuY2F0ZUNCIHN0cmVhbV90 cnVuY2F0ZV9jYjsKIH0gT3V0cHV0UGx1Z2luQ2FsbGJhY2tzOwogCkBAIC00ODEsOSArNDgz LDEyIEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxPdXRwdXRQbHVnaW5Jbml0KSAoc3RydWN0 IE91dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpOwogICAgICBhbmQgPGZ1bmN0aW9uPmNvbW1p dF9jYjwvZnVuY3Rpb24+IGNhbGxiYWNrcyBhcmUgcmVxdWlyZWQsCiAgICAgIHdoaWxlIDxm dW5jdGlvbj5zdGFydHVwX2NiPC9mdW5jdGlvbj4sCiAgICAgIDxmdW5jdGlvbj5maWx0ZXJf Ynlfb3JpZ2luX2NiPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj50cnVuY2F0ZV9jYjwvZnVuY3Rp b24+LAorICAgICA8ZnVuY3Rpb24+c2VxdWVuY2VfY2I8L2Z1bmN0aW9uPiwKICAgICAgYW5k IDxmdW5jdGlvbj5zaHV0ZG93bl9jYjwvZnVuY3Rpb24+IGFyZSBvcHRpb25hbC4KICAgICAg SWYgPGZ1bmN0aW9uPnRydW5jYXRlX2NiPC9mdW5jdGlvbj4gaXMgbm90IHNldCBidXQgYQog ICAgICA8Y29tbWFuZD5UUlVOQ0FURTwvY29tbWFuZD4gaXMgdG8gYmUgZGVjb2RlZCwgdGhl IGFjdGlvbiB3aWxsIGJlIGlnbm9yZWQuCisgICAgIFNpbWlsYXJseSwgaWYgPGZ1bmN0aW9u PnNlcXVlbmNlX2NiPC9mdW5jdGlvbj4gaXMgbm90IHNldCBhbmQgYSBzZXF1ZW5jZQorICAg ICBjaGFuZ2UgaXMgdG8gYmUgZGVjb2RlZCwgdGhlIGFjdGlvbiB3aWxsIGJlIGlnbm9yZWQu CiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+CkBAIC00OTIsNyArNDk3LDggQEAgdHlwZWRl ZiB2b2lkICgqTG9naWNhbE91dHB1dFBsdWdpbkluaXQpIChzdHJ1Y3QgT3V0cHV0UGx1Z2lu Q2FsbGJhY2tzICpjYik7CiAgICAgIDxmdW5jdGlvbj5zdHJlYW1fc3RvcF9jYjwvZnVuY3Rp b24+LCA8ZnVuY3Rpb24+c3RyZWFtX2Fib3J0X2NiPC9mdW5jdGlvbj4sCiAgICAgIDxmdW5j dGlvbj5zdHJlYW1fY29tbWl0X2NiPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5zdHJlYW1fY2hh bmdlX2NiPC9mdW5jdGlvbj4sCiAgICAgIGFuZCA8ZnVuY3Rpb24+c3RyZWFtX3ByZXBhcmVf Y2I8L2Z1bmN0aW9uPgotICAgICBhcmUgcmVxdWlyZWQsIHdoaWxlIDxmdW5jdGlvbj5zdHJl YW1fbWVzc2FnZV9jYjwvZnVuY3Rpb24+IGFuZAorICAgICBhcmUgcmVxdWlyZWQsIHdoaWxl IDxmdW5jdGlvbj5zdHJlYW1fbWVzc2FnZV9jYjwvZnVuY3Rpb24+LAorICAgICA8ZnVuY3Rp b24+c3RyZWFtX3NlcXVlbmNlX2NiPC9mdW5jdGlvbj4sIGFuZAogICAgICA8ZnVuY3Rpb24+ c3RyZWFtX3RydW5jYXRlX2NiPC9mdW5jdGlvbj4gYXJlIG9wdGlvbmFsLgogICAgIDwvcGFy YT4KIApAQCAtODA4LDYgKzgxNCwzNSBAQCB0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2Rl TWVzc2FnZUNCKSAoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKICAgICAg PC9wYXJhPgogICAgIDwvc2VjdDM+CiAKKyAgICA8c2VjdDMgaWQ9ImxvZ2ljYWxkZWNvZGlu Zy1vdXRwdXQtcGx1Z2luLXNlcXVlbmNlIj4KKyAgICAgPHRpdGxlPlNlcXVlbmNlIENhbGxi YWNrPC90aXRsZT4KKworICAgICA8cGFyYT4KKyAgICAgIFRoZSBvcHRpb25hbCA8ZnVuY3Rp b24+c2VxdWVuY2VfY2I8L2Z1bmN0aW9uPiBjYWxsYmFjayBpcyBjYWxsZWQgZm9yCisgICAg ICBhY3Rpb25zIHRoYXQgdXBkYXRlIGEgc2VxdWVuY2UgdmFsdWUuCis8cHJvZ3JhbWxpc3Rp bmc+Cit0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2RlU2VxdWVuY2VDQikgKHN0cnVjdCBM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uIHJlbCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB0cmFuc2Fj dGlvbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2 NCBsYXN0X3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQ2NCBsb2dfY250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBib29sIGlzX2NhbGxlZCk7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAgVGhlIDxw YXJhbWV0ZXI+dHhuPC9wYXJhbWV0ZXI+IHBhcmFtZXRlciBjb250YWlucyBtZXRhIGluZm9y bWF0aW9uIGFib3V0CisgICAgICB0aGUgdHJhbnNhY3Rpb24gdGhlIHNlcXVlbmNlIGNoYW5n ZSBpcyBwYXJ0IG9mLiBOb3RlIGhvd2V2ZXIgdGhhdCBpdCBjYW4KKyAgICAgIGJlIE5VTEwg d2hlbiB0aGUgc2VxdWVuY2UgY2hhbmdlIGlzIG5vbi10cmFuc2FjdGlvbmFsIGFuZCB0aGUg WElEIHdhcyBub3QKKyAgICAgIGFzc2lnbmVkIHlldCBpbiB0aGUgdHJhbnNhY3Rpb24gd2hp Y2ggdXBkYXRlZCB0aGUgc2VxdWVuY2UgdmFsdWUuCisgICAgICBUaGUgPHBhcmFtZXRlcj5z ZXF1ZW5jZV9sc248L3BhcmFtZXRlcj4gaGFzIFdBTCBsb2NhdGlvbiBvZiB0aGUgc2VxdWVu Y2UKKyAgICAgIHVwZGF0ZS4gVGhlIDxwYXJhbWV0ZXI+dHJhbnNhY3Rpb25hbDwvcGFyYW1l dGVyPiBzYXlzIGlmIHRoZSBzZXF1ZW5jZSBoYXMKKyAgICAgIHRvIGJlIHJlcGxheWVkIGFz IHBhcnQgb2YgdGhlIHRyYW5zYWN0aW9uIG9yIGRpcmVjdGx5LgorCisgICAgICBUaGUgPHBh cmFtZXRlcj5sYXN0X3ZhbHVlPC9wYXJhbWV0ZXI+LCA8cGFyYW1ldGVyPmxvZ19jbnQ8L3Bh cmFtZXRlcj4gYW5kCisgICAgICA8cGFyYW1ldGVyPmlzX2NhbGxlZDwvcGFyYW1ldGVyPiBw YXJhbWV0ZXJzIGRlc2NyaWJlIHRoZSBzZXF1ZW5jZSBjaGFuZ2UuCisgICAgIDwvcGFyYT4K KyAgICA8L3NlY3QzPgorCiAgICAgPHNlY3QzIGlkPSJsb2dpY2FsZGVjb2Rpbmctb3V0cHV0 LXBsdWdpbi1maWx0ZXItcHJlcGFyZSI+CiAgICAgIDx0aXRsZT5QcmVwYXJlIEZpbHRlciBD YWxsYmFjazwvdGl0bGU+CiAKQEAgLTEwMTcsNiArMTA1MiwyNiBAQCB0eXBlZGVmIHZvaWQg KCpMb2dpY2FsRGVjb2RlU3RyZWFtTWVzc2FnZUNCKSAoc3RydWN0IExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eAogICAgICA8L3BhcmE+CiAgICAgPC9zZWN0Mz4KIAorICAgIDxzZWN0 MyBpZD0ibG9naWNhbGRlY29kaW5nLW91dHB1dC1wbHVnaW4tc3RyZWFtLXNlcXVlbmNlIj4K KyAgICAgPHRpdGxlPlN0cmVhbSBTZXF1ZW5jZSBDYWxsYmFjazwvdGl0bGU+CisgICAgIDxw YXJhPgorICAgICAgVGhlIG9wdGlvbmFsIDxmdW5jdGlvbj5zdHJlYW1fc2VxdWVuY2VfY2I8 L2Z1bmN0aW9uPiBjYWxsYmFjayBpcyBjYWxsZWQKKyAgICAgIGZvciBhY3Rpb25zIHRoYXQg Y2hhbmdlIGEgc2VxdWVuY2UgaW4gYSBibG9jayBvZiBzdHJlYW1lZCBjaGFuZ2VzCisgICAg ICAoZGVtYXJjYXRlZCBieSA8ZnVuY3Rpb24+c3RyZWFtX3N0YXJ0X2NiPC9mdW5jdGlvbj4g YW5kCisgICAgICA8ZnVuY3Rpb24+c3RyZWFtX3N0b3BfY2I8L2Z1bmN0aW9uPiBjYWxscyku Cis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2RlU3RyZWFt U2VxdWVuY2VDQikgKHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlb3JkZXJCdWZm ZXJUWE4gKnR4biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uIHJlbCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB0cmFuc2FjdGlvbmFsLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NCBs YXN0X3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQ2NCBsb2dfY250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBib29sIGlzX2NhbGxlZCk7Cis8L3Byb2dyYW1saXN0aW5nPgorICAg ICA8L3BhcmE+CisgICAgPC9zZWN0Mz4KKwogICAgIDxzZWN0MyBpZD0ibG9naWNhbGRlY29k aW5nLW91dHB1dC1wbHVnaW4tc3RyZWFtLXRydW5jYXRlIj4KICAgICAgPHRpdGxlPlN0cmVh bSBUcnVuY2F0ZSBDYWxsYmFjazwvdGl0bGU+CiAgICAgIDxwYXJhPgpAQCAtMTE5Nyw4ICsx MjUyLDkgQEAgT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKICAgICBpbi1wcm9ncmVz cyB0cmFuc2FjdGlvbnMuIFRoZXJlIGFyZSBtdWx0aXBsZSByZXF1aXJlZCBzdHJlYW1pbmcg Y2FsbGJhY2tzCiAgICAgKDxmdW5jdGlvbj5zdHJlYW1fc3RhcnRfY2I8L2Z1bmN0aW9uPiwg PGZ1bmN0aW9uPnN0cmVhbV9zdG9wX2NiPC9mdW5jdGlvbj4sCiAgICAgPGZ1bmN0aW9uPnN0 cmVhbV9hYm9ydF9jYjwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+c3RyZWFtX2NvbW1pdF9jYjwv ZnVuY3Rpb24+Ci0gICAgYW5kIDxmdW5jdGlvbj5zdHJlYW1fY2hhbmdlX2NiPC9mdW5jdGlv bj4pIGFuZCB0d28gb3B0aW9uYWwgY2FsbGJhY2tzCi0gICAgKDxmdW5jdGlvbj5zdHJlYW1f bWVzc2FnZV9jYjwvZnVuY3Rpb24+IGFuZCA8ZnVuY3Rpb24+c3RyZWFtX3RydW5jYXRlX2Ni PC9mdW5jdGlvbj4pLgorICAgIGFuZCA8ZnVuY3Rpb24+c3RyZWFtX2NoYW5nZV9jYjwvZnVu Y3Rpb24+KSBhbmQgbXVsdGlwbGUgb3B0aW9uYWwgY2FsbGJhY2tzCisgICAgKDxmdW5jdGlv bj5zdHJlYW1fbWVzc2FnZV9jYjwvZnVuY3Rpb24+LCA8ZnVuY3Rpb24+c3RyZWFtX3NlcXVl bmNlX2NiPC9mdW5jdGlvbj4sCisgICAgYW5kIDxmdW5jdGlvbj5zdHJlYW1fdHJ1bmNhdGVf Y2I8L2Z1bmN0aW9uPikuCiAgICAgQWxzbywgaWYgc3RyZWFtaW5nIG9mIHR3by1waGFzZSBj b21tYW5kcyBpcyB0byBiZSBzdXBwb3J0ZWQsIHRoZW4gYWRkaXRpb25hbAogICAgIGNhbGxi YWNrcyBtdXN0IGJlIHByb3ZpZGVkLiAoU2VlIDx4cmVmIGxpbmtlbmQ9ImxvZ2ljYWxkZWNv ZGluZy10d28tcGhhc2UtY29tbWl0cyIvPgogICAgIGZvciBkZXRhaWxzKS4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zZXF1ZW5jZS5jCmluZGV4IDBmMzA5ZDBhNGUuLmE1NDM1OTEwYTIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc2VxdWVuY2UuYwpAQCAtMzgxLDggKzM4MSwxMyBAQCBmaWxsX3NlcV93aXRo X2RhdGEoUmVsYXRpb24gcmVsLCBIZWFwVHVwbGUgdHVwbGUpCiAKIAkvKiBjaGVjayB0aGUg Y29tbWVudCBhYm92ZSBuZXh0dmFsX2ludGVybmFsKCkncyBlcXVpdmFsZW50IGNhbGwuICov CiAJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVsKSkKKwl7CiAJCUdldFRvcFRyYW5zYWN0aW9u SWQoKTsKIAorCQlpZiAoWExvZ0xvZ2ljYWxJbmZvQWN0aXZlKCkpCisJCQlHZXRDdXJyZW50 VHJhbnNhY3Rpb25JZCgpOworCX0KKwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCiAJTWFy a0J1ZmZlckRpcnR5KGJ1Zik7CkBAIC00MDIsNiArNDA3LDcgQEAgZmlsbF9zZXFfd2l0aF9k YXRhKFJlbGF0aW9uIHJlbCwgSGVhcFR1cGxlIHR1cGxlKQogCQlYTG9nUmVnaXN0ZXJCdWZm ZXIoMCwgYnVmLCBSRUdCVUZfV0lMTF9JTklUKTsKIAogCQl4bHJlYy5ub2RlID0gcmVsLT5y ZF9ub2RlOworCQl4bHJlYy5jcmVhdGVkID0gdHJ1ZTsKIAogCQlYTG9nUmVnaXN0ZXJEYXRh KChjaGFyICopICZ4bHJlYywgc2l6ZW9mKHhsX3NlcV9yZWMpKTsKIAkJWExvZ1JlZ2lzdGVy RGF0YSgoY2hhciAqKSB0dXBsZS0+dF9kYXRhLCB0dXBsZS0+dF9sZW4pOwpAQCAtNzc4LDEw ICs3ODQsMjggQEAgbmV4dHZhbF9pbnRlcm5hbChPaWQgcmVsaWQsIGJvb2wgY2hlY2tfcGVy bWlzc2lvbnMpCiAJICogSXQncyBzdWZmaWNpZW50IHRvIGVuc3VyZSB0aGUgdG9wbGV2ZWwg dHJhbnNhY3Rpb24gaGFzIGFuIHhpZCwgbm8gbmVlZAogCSAqIHRvIGFzc2lnbiB4aWRzIHN1 YnhhY3RzLCB0aGF0J2xsIGFscmVhZHkgdHJpZ2dlciBhbiBhcHByb3ByaWF0ZSB3YWl0Lgog CSAqIChIYXZlIHRvIGRvIHRoYXQgaGVyZSwgc28gd2UncmUgb3V0c2lkZSB0aGUgY3JpdGlj YWwgc2VjdGlvbikKKwkgKgorCSAqIFdlIGhhdmUgdG8gZW5zdXJlIHdlIGhhdmUgYSBwcm9w ZXIgWElELCB3aGljaCB3aWxsIGJlIGluY2x1ZGVkIGluCisJICogdGhlIFhMT0cgcmVjb3Jk IGJ5IFhMb2dSZWNvcmRBc3NlbWJsZS4gT3RoZXJ3aXNlIHRoZSBmaXJzdCBuZXh0dmFsKCkK KwkgKiBpbiBhIHN1YnhhY3QgKHdpdGhvdXQgYW55IHByZWNlZGluZyBjaGFuZ2VzKSB3b3Vs ZCBnZXQgWElEIDAsIGFuZCBpdAorCSAqIHdvdWxkIHRoZW4gYmUgaW1wb3NzaWJsZSB0byBk ZWNpZGUgd2hpY2ggdG9wIHhhY3QgaXQgYmVsb25ncyB0by4KKwkgKiBJdCdkIGFsc28gdHJp Z2dlciBhc3NlcnQgaW4gRGVjb2RlU2VxdWVuY2UuIFdlIG9ubHkgZG8gdGhhdCB3aXRoCisJ ICogd2FsX2xldmVsPWxvZ2ljYWwsIHRob3VnaC4KKwkgKgorCSAqIFhYWCBUaGlzIG1pZ2h0 IHNlZW0gdW5uZWNlc3NhcnksIGJlY2F1c2UgaWYgdGhlcmUncyBubyBYSUQgdGhlIHhhY3QK KwkgKiBjb3VsZG4ndCBoYXZlIGRvbmUgYW55dGhpbmcgaW1wb3J0YW50IHlldCwgZS5nLiBp dCBjb3VsZCBub3QgaGF2ZQorCSAqIGNyZWF0ZWQgYSBzZXF1ZW5jZS4gQnV0IHRoYXQncyBp bmNvcnJlY3QsIGFzIGl0IGlnbm9yZXMgc3VieGFjdHMuIFRoZQorCSAqIGN1cnJlbnQgc3Vi dHJhbnNhY3Rpb24gbWlnaHQgbm90IGhhdmUgZG9uZSBhbnl0aGluZyB5ZXQgKHRodXMgbm8g WElEKSwKKwkgKiBidXQgYW4gZWFybGllciBvbmUgbWlnaHQgaGF2ZSBjcmVhdGVkIHRoZSBz ZXF1ZW5jZS4KIAkgKi8KIAlpZiAobG9naXQgJiYgUmVsYXRpb25OZWVkc1dBTChzZXFyZWwp KQorCXsKIAkJR2V0VG9wVHJhbnNhY3Rpb25JZCgpOwogCisJCWlmIChYTG9nTG9naWNhbElu Zm9BY3RpdmUoKSkKKwkJCUdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CisJfQorCiAJLyog cmVhZHkgdG8gY2hhbmdlIHRoZSBvbi1kaXNrIChvciByZWFsbHksIGluLWJ1ZmZlcikgdHVw bGUgKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIApAQCAtODE3LDYgKzg0MSw3IEBAIG5l eHR2YWxfaW50ZXJuYWwoT2lkIHJlbGlkLCBib29sIGNoZWNrX3Blcm1pc3Npb25zKQogCQlz ZXEtPmxvZ19jbnQgPSAwOwogCiAJCXhscmVjLm5vZGUgPSBzZXFyZWwtPnJkX25vZGU7CisJ CXhscmVjLmNyZWF0ZWQgPSBmYWxzZTsKIAogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICop ICZ4bHJlYywgc2l6ZW9mKHhsX3NlcV9yZWMpKTsKIAkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hh ciAqKSBzZXFkYXRhdHVwbGUudF9kYXRhLCBzZXFkYXRhdHVwbGUudF9sZW4pOwpAQCAtOTkx LDggKzEwMTYsMTMgQEAgZG9fc2V0dmFsKE9pZCByZWxpZCwgaW50NjQgbmV4dCwgYm9vbCBp c2NhbGxlZCkKIAogCS8qIGNoZWNrIHRoZSBjb21tZW50IGFib3ZlIG5leHR2YWxfaW50ZXJu YWwoKSdzIGVxdWl2YWxlbnQgY2FsbC4gKi8KIAlpZiAoUmVsYXRpb25OZWVkc1dBTChzZXFy ZWwpKQorCXsKIAkJR2V0VG9wVHJhbnNhY3Rpb25JZCgpOwogCisJCWlmIChYTG9nTG9naWNh bEluZm9BY3RpdmUoKSkKKwkJCUdldEN1cnJlbnRUcmFuc2FjdGlvbklkKCk7CisJfQorCiAJ LyogcmVhZHkgdG8gY2hhbmdlIHRoZSBvbi1kaXNrIChvciByZWFsbHksIGluLWJ1ZmZlcikg dHVwbGUgKi8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIApAQCAtMTAxMyw2ICsxMDQzLDgg QEAgZG9fc2V0dmFsKE9pZCByZWxpZCwgaW50NjQgbmV4dCwgYm9vbCBpc2NhbGxlZCkKIAkJ WExvZ1JlZ2lzdGVyQnVmZmVyKDAsIGJ1ZiwgUkVHQlVGX1dJTExfSU5JVCk7CiAKIAkJeGxy ZWMubm9kZSA9IHNlcXJlbC0+cmRfbm9kZTsKKwkJeGxyZWMuY3JlYXRlZCA9IGZhbHNlOwor CiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVjLCBzaXplb2YoeGxfc2VxX3Jl YykpOwogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFyICopIHNlcWRhdGF0dXBsZS50X2RhdGEs IHNlcWRhdGF0dXBsZS50X2xlbik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RlY29kZS5jCmluZGV4IDU5YWVkNmNlZTYuLjY5NjViZTUzY2EgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNDIsNiArNDIsNyBAQAog I2luY2x1ZGUgInJlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9zbmFwYnVpbGQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnkuaCIKKyNp bmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogCiB0eXBlZGVmIHN0cnVjdCBYTG9nUmVj b3JkQnVmZmVyCiB7CkBAIC03NCwxMCArNzUsMTEgQEAgc3RhdGljIHZvaWQgRGVjb2RlQWJv cnQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYs CiAJCQkJCQlib29sIHR3b19waGFzZSk7CiBzdGF0aWMgdm9pZCBEZWNvZGVQcmVwYXJlKExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCQkJ CQkJICB4bF94YWN0X3BhcnNlZF9wcmVwYXJlICpwYXJzZWQpOwotCitzdGF0aWMgdm9pZCBE ZWNvZGVTZXF1ZW5jZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRC dWZmZXIgKmJ1Zik7CiAKIC8qIGNvbW1vbiBmdW5jdGlvbiB0byBkZWNvZGUgdHVwbGVzICov CiBzdGF0aWMgdm9pZCBEZWNvZGVYTG9nVHVwbGUoY2hhciAqZGF0YSwgU2l6ZSBsZW4sIFJl b3JkZXJCdWZmZXJUdXBsZUJ1ZiAqdHVwKTsKK3N0YXRpYyB2b2lkIERlY29kZVNlcVR1cGxl KGNoYXIgKmRhdGEsIFNpemUgbGVuLCBSZW9yZGVyQnVmZmVyVHVwbGVCdWYgKnR1cGxlKTsK IAogLyogaGVscGVyIGZ1bmN0aW9ucyBmb3IgZGVjb2RpbmcgdHJhbnNhY3Rpb25zICovCiBz dGF0aWMgaW5saW5lIGJvb2wgRmlsdGVyUHJlcGFyZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsCkBAIC0xNTgsNiArMTYwLDEwIEBAIExvZ2ljYWxEZWNvZGluZ1Byb2Nlc3NSZWNv cmQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVhZGVyU3RhdGUgKnJlY29y CiAJCQlEZWNvZGVMb2dpY2FsTXNnT3AoY3R4LCAmYnVmKTsKIAkJCWJyZWFrOwogCisJCWNh c2UgUk1fU0VRX0lEOgorCQkJRGVjb2RlU2VxdWVuY2UoY3R4LCAmYnVmKTsKKwkJCWJyZWFr OworCiAJCQkvKgogCQkJICogUm1ncnMgaXJyZWxldmFudCBmb3IgbG9naWNhbCBkZWNvZGlu ZzsgdGhleSBkZXNjcmliZSBzdHVmZiBub3QKIAkJCSAqIHJlcHJlc2VudGVkIGluIGxvZ2lj YWwgZGVjb2RpbmcuIEFkZCBuZXcgcm1ncnMgaW4gcm1ncmxpc3QuaCdzCkBAIC0xNzMsNyAr MTc5LDYgQEAgTG9naWNhbERlY29kaW5nUHJvY2Vzc1JlY29yZChMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3IKIAkJY2FzZSBSTV9IQVNIX0lE OgogCQljYXNlIFJNX0dJTl9JRDoKIAkJY2FzZSBSTV9HSVNUX0lEOgotCQljYXNlIFJNX1NF UV9JRDoKIAkJY2FzZSBSTV9TUEdJU1RfSUQ6CiAJCWNhc2UgUk1fQlJJTl9JRDoKIAkJY2Fz ZSBSTV9DT01NSVRfVFNfSUQ6CkBAIC0xMzEzLDMgKzEzMTgsMTI1IEBAIERlY29kZVRYTk5l ZWRTa2lwKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAq YnVmLAogCQkJKHR4bl9kYmlkICE9IEludmFsaWRPaWQgJiYgdHhuX2RiaWQgIT0gY3R4LT5z bG90LT5kYXRhLmRhdGFiYXNlKSB8fAogCQkJY3R4LT5mYXN0X2ZvcndhcmQgfHwgRmlsdGVy QnlPcmlnaW4oY3R4LCBvcmlnaW5faWQpKTsKIH0KKworLyoKKyAqIERlY29kZSBTZXF1ZW5j ZSBUdXBsZQorICovCitzdGF0aWMgdm9pZAorRGVjb2RlU2VxVHVwbGUoY2hhciAqZGF0YSwg U2l6ZSBsZW4sIFJlb3JkZXJCdWZmZXJUdXBsZUJ1ZiAqdHVwbGUpCit7CisJaW50CQkJZGF0 YWxlbiA9IGxlbiAtIHNpemVvZih4bF9zZXFfcmVjKSAtIFNpemVvZkhlYXBUdXBsZUhlYWRl cjsKKworCUFzc2VydChkYXRhbGVuID49IDApOworCisJdHVwbGUtPnR1cGxlLnRfbGVuID0g ZGF0YWxlbiArIFNpemVvZkhlYXBUdXBsZUhlYWRlcjs7CisKKwlJdGVtUG9pbnRlclNldElu dmFsaWQoJnR1cGxlLT50dXBsZS50X3NlbGYpOworCisJdHVwbGUtPnR1cGxlLnRfdGFibGVP aWQgPSBJbnZhbGlkT2lkOworCisJbWVtY3B5KCgoY2hhciAqKSB0dXBsZS0+dHVwbGUudF9k YXRhKSwKKwkJICAgZGF0YSArIHNpemVvZih4bF9zZXFfcmVjKSwKKwkJICAgU2l6ZW9mSGVh cFR1cGxlSGVhZGVyKTsKKworCW1lbWNweSgoKGNoYXIgKikgdHVwbGUtPnR1cGxlLnRfZGF0 YSkgKyBTaXplb2ZIZWFwVHVwbGVIZWFkZXIsCisJCSAgIGRhdGEgKyBzaXplb2YoeGxfc2Vx X3JlYykgKyBTaXplb2ZIZWFwVHVwbGVIZWFkZXIsCisJCSAgIGRhdGFsZW4pOworfQorCisv KgorICogSGFuZGxlIHNlcXVlbmNlIGRlY29kZQorICoKKyAqIERlY29kaW5nIHNlcXVlbmNl cyBpcyBhIGJpdCB0cmlja3ksIGJlY2F1c2Ugd2hpbGUgbW9zdCBzZXF1ZW5jZSBhY3Rpb25z CisgKiBhcmUgbm9uLXRyYW5zYWN0aW9uYWwgKG5vdCBzdWJqZWN0IHRvIHJvbGxiYWNrKSwg c29tZSBuZWVkIHRvIGJlIGhhbmRsZWQKKyAqIGFzIHRyYW5zYWN0aW9uYWwuCisgKgorICog QnkgZGVmYXVsdCwgYSBzZXF1ZW5jZSBpbmNyZW1lbnQgaXMgbm9uLXRyYW5zYWN0aW9uYWwg LSB3ZSBtdXN0IG5vdCBxdWV1ZQorICogaXQgaW4gYSB0cmFuc2FjdGlvbiBhcyBvdGhlciBj aGFuZ2VzLCBiZWNhdXNlIHRoZSB0cmFuc2FjdGlvbiBtaWdodCBnZXQKKyAqIHJvbGxlZCBi YWNrIGFuZCB3ZSdkIGRpc2NhcmQgdGhlIGluY3JlbWVudC4gVGhlIGRvd25zdHJlYW0gd291 bGQgbm90IGJlCisgKiBub3RpZmllZCBhYm91dCB0aGUgaW5jcmVtZW50LCB3aGljaCBpcyB3 cm9uZy4KKyAqCisgKiBPbiB0aGUgb3RoZXIgaGFuZCwgdGhlIHNlcXVlbmNlIG1heSBiZSBj cmVhdGVkIGluIGEgdHJhbnNhY3Rpb24uIEluIHRoaXMKKyAqIGNhc2Ugd2UgKnNob3VsZCog cXVldWUgdGhlIGNoYW5nZSBhcyBvdGhlciBjaGFuZ2VzIGluIHRoZSB0cmFuc2FjdGlvbiwK KyAqIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBzZW5kIHRoZSBpbmNyZW1lbnRzIGZvciB1 bmtub3duIHNlcXVlbmNlIHRvIHRoZQorICogcGx1Z2luIC0gaXQgbWlnaHQgZ2V0IGNvbmZ1 c2VkIGFib3V0IHdoaWNoIHNlcXVlbmNlIGl0J3MgcmVsYXRlZCB0byBldGMuCisgKi8KK3N0 YXRpYyB2b2lkCitEZWNvZGVTZXF1ZW5jZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgs IFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKK3sKKwlTbmFwQnVpbGQgICpidWlsZGVyID0gY3R4 LT5zbmFwc2hvdF9idWlsZGVyOworCVJlb3JkZXJCdWZmZXJUdXBsZUJ1ZiAqdHVwbGVidWY7 CisJUmVsRmlsZU5vZGUgdGFyZ2V0X25vZGU7CisJWExvZ1JlYWRlclN0YXRlICpyID0gYnVm LT5yZWNvcmQ7CisJY2hhcgkgICAqdHVwbGVkYXRhID0gTlVMTDsKKwlTaXplCQl0dXBsZWxl bjsKKwlTaXplCQlkYXRhbGVuID0gMDsKKwlUcmFuc2FjdGlvbklkIHhpZCA9IFhMb2dSZWNH ZXRYaWQocik7CisJdWludDgJCWluZm8gPSBYTG9nUmVjR2V0SW5mbyhidWYtPnJlY29yZCkg JiB+WExSX0lORk9fTUFTSzsKKwl4bF9zZXFfcmVjICp4bHJlYzsKKwlTbmFwc2hvdAlzbmFw c2hvdDsKKwlSZXBPcmlnaW5JZCBvcmlnaW5faWQgPSBYTG9nUmVjR2V0T3JpZ2luKHIpOwor CWJvb2wJCXRyYW5zYWN0aW9uYWw7CisKKwkvKiBvbmx5IGRlY29kZSBjaGFuZ2VzIGZsYWdn ZWQgd2l0aCBYTE9HX1NFUV9MT0cgKi8KKwlpZiAoaW5mbyAhPSBYTE9HX1NFUV9MT0cpCisJ CWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIFJNX1NFUV9JRCByZWNvcmQgdHlwZTogJXUiLCBp bmZvKTsKKworCS8qCisJICogSWYgd2UgZG9uJ3QgaGF2ZSBzbmFwc2hvdCBvciB3ZSBhcmUg anVzdCBmYXN0LWZvcndhcmRpbmcsIHRoZXJlIGlzIG5vCisJICogcG9pbnQgaW4gZGVjb2Rp bmcgbWVzc2FnZXMuCisJICovCisJaWYgKFNuYXBCdWlsZEN1cnJlbnRTdGF0ZShidWlsZGVy KSA8IFNOQVBCVUlMRF9GVUxMX1NOQVBTSE9UIHx8CisJCWN0eC0+ZmFzdF9mb3J3YXJkKQor CQlyZXR1cm47CisKKwkvKiBvbmx5IGludGVyZXN0ZWQgaW4gb3VyIGRhdGFiYXNlICovCisJ WExvZ1JlY0dldEJsb2NrVGFnKHIsIDAsICZ0YXJnZXRfbm9kZSwgTlVMTCwgTlVMTCk7CisJ aWYgKHRhcmdldF9ub2RlLmRiTm9kZSAhPSBjdHgtPnNsb3QtPmRhdGEuZGF0YWJhc2UpCisJ CXJldHVybjsKKworCS8qIG91dHB1dCBwbHVnaW4gZG9lc24ndCBsb29rIGZvciB0aGlzIG9y aWdpbiwgbm8gbmVlZCB0byBxdWV1ZSAqLworCWlmIChGaWx0ZXJCeU9yaWdpbihjdHgsIFhM b2dSZWNHZXRPcmlnaW4ocikpKQorCQlyZXR1cm47CisKKwl0dXBsZWRhdGEgPSBYTG9nUmVj R2V0RGF0YShyKTsKKwlkYXRhbGVuID0gWExvZ1JlY0dldERhdGFMZW4ocik7CisJdHVwbGVs ZW4gPSBkYXRhbGVuIC0gU2l6ZU9mSGVhcEhlYWRlciAtIHNpemVvZih4bF9zZXFfcmVjKTsK KworCS8qIGV4dHJhY3QgdGhlIFdBTCByZWNvcmQsIHdpdGggImNyZWF0ZWQiIGZsYWcgKi8K Kwl4bHJlYyA9ICh4bF9zZXFfcmVjICopIFhMb2dSZWNHZXREYXRhKHIpOworCisJLyogWFhY IGhvdyBjb3VsZCB3ZSBoYXZlIHNlcXVlbmNlIGNoYW5nZSB3aXRob3V0IGRhdGE/ICovCisJ aWYoIWRhdGFsZW4gfHwgIXR1cGxlZGF0YSkKKwkJcmV0dXJuOworCisJdHVwbGVidWYgPSBS ZW9yZGVyQnVmZmVyR2V0VHVwbGVCdWYoY3R4LT5yZW9yZGVyLCB0dXBsZWxlbik7CisJRGVj b2RlU2VxVHVwbGUodHVwbGVkYXRhLCBkYXRhbGVuLCB0dXBsZWJ1Zik7CisKKwkvKgorCSAq IFNob3VsZCB3ZSBoYW5kbGUgdGhlIHNlcXVlbmNlIGluY3JlbWVudCBhcyB0cmFuc2FjdGlv bmFsIG9yIG5vdD8KKwkgKgorCSAqIElmIHRoZSBzZXF1ZW5jZSB3YXMgY3JlYXRlZCBpbiBh IHN0aWxsLXJ1bm5pbmcgdHJhbnNhY3Rpb24sIHRyZWF0CisJICogaXQgYXMgdHJhbnNhY3Rp b25hbCBhbmQgcXVldWUgdGhlIGluY3JlbWVudHMuIE90aGVyd2lzZSBpdCBuZWVkcworCSAq IHRvIGJlIHRyZWF0ZWQgYXMgbm9uLXRyYW5zYWN0aW9uYWwsIGluIHdoaWNoIGNhc2Ugd2Ug c2VuZCBpdCB0bworCSAqIHRoZSBwbHVnaW4gcmlnaHQgYXdheS4KKwkgKi8KKwl0cmFuc2Fj dGlvbmFsID0gUmVvcmRlckJ1ZmZlclNlcXVlbmNlSXNUcmFuc2FjdGlvbmFsKGN0eC0+cmVv cmRlciwKKwkJCQkJCQkJCQkJCQkJIHRhcmdldF9ub2RlLAorCQkJCQkJCQkJCQkJCQkgeGxy ZWMtPmNyZWF0ZWQpOworCisJLyogU2tpcCB0aGUgY2hhbmdlIGlmIGFscmVhZHkgcHJvY2Vz c2VkIChwZXIgdGhlIHNuYXBzaG90KS4gKi8KKwlpZiAodHJhbnNhY3Rpb25hbCAmJgorCQkh U25hcEJ1aWxkUHJvY2Vzc0NoYW5nZShidWlsZGVyLCB4aWQsIGJ1Zi0+b3JpZ3B0cikpCisJ CXJldHVybjsKKwllbHNlIGlmICghdHJhbnNhY3Rpb25hbCAmJgorCQkJIChTbmFwQnVpbGRD dXJyZW50U3RhdGUoYnVpbGRlcikgIT0gU05BUEJVSUxEX0NPTlNJU1RFTlQgfHwKKwkJCSAg U25hcEJ1aWxkWGFjdE5lZWRzU2tpcChidWlsZGVyLCBidWYtPm9yaWdwdHIpKSkKKwkJcmV0 dXJuOworCisJLyogUXVldWUgdGhlIGluY3JlbWVudCAob3Igc2VuZCBpbW1lZGlhdGVseSBp ZiBub3QgdHJhbnNhY3Rpb25hbCkuICovCisJc25hcHNob3QgPSBTbmFwQnVpbGRHZXRPckJ1 aWxkU25hcHNob3QoYnVpbGRlciwgeGlkKTsKKwlSZW9yZGVyQnVmZmVyUXVldWVTZXF1ZW5j ZShjdHgtPnJlb3JkZXIsIHhpZCwgc25hcHNob3QsIGJ1Zi0+ZW5kcHRyLAorCQkJCQkJCSAg IG9yaWdpbl9pZCwgdGFyZ2V0X25vZGUsIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkJICAgeGxy ZWMtPmNyZWF0ZWQsIHR1cGxlYnVmKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sb2dpY2FsLmMKaW5kZXggMTBjYmRlYTEyNC4uYWFiNWUxMjI2ZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKQEAgLTczLDYgKzcz LDEwIEBAIHN0YXRpYyB2b2lkIHRydW5jYXRlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAq Y2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIHN0YXRpYyB2b2lkIG1lc3NhZ2VfY2Jf d3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAog CQkJCQkJCSAgIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwK IAkJCQkJCQkgICBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUgbWVzc2FnZV9zaXplLCBjb25z dCBjaGFyICptZXNzYWdlKTsKK3N0YXRpYyB2b2lkIHNlcXVlbmNlX2NiX3dyYXBwZXIoUmVv cmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJWExv Z1JlY1B0ciBzZXF1ZW5jZV9sc24sIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJYm9vbCB0cmFu c2FjdGlvbmFsLAorCQkJCQkJCQlpbnQ2NCBsYXN0X3ZhbHVlLCBpbnQ2NCBsb2dfY250LCBi b29sIGlzX2NhbGxlZCk7CiAKIC8qIHN0cmVhbWluZyBjYWxsYmFja3MgKi8KIHN0YXRpYyB2 b2lkIHN0cmVhbV9zdGFydF9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCkBAIC05MCw2ICs5NCwxMCBAQCBzdGF0aWMgdm9pZCBzdHJl YW1fY2hhbmdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4bgogc3RhdGljIHZvaWQgc3RyZWFtX21lc3NhZ2VfY2Jfd3JhcHBlcihSZW9y ZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJCQkJICBY TG9nUmVjUHRyIG1lc3NhZ2VfbHNuLCBib29sIHRyYW5zYWN0aW9uYWwsCiAJCQkJCQkJCQkg IGNvbnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBtZXNzYWdlX3NpemUsIGNvbnN0IGNoYXIgKm1l c3NhZ2UpOworc3RhdGljIHZvaWQgc3RyZWFtX3NlcXVlbmNlX2NiX3dyYXBwZXIoUmVvcmRl ckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCSAgIFhM b2dSZWNQdHIgc2VxdWVuY2VfbHNuLCBSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkgICBib29s IHRyYW5zYWN0aW9uYWwsCisJCQkJCQkJCQkgICBpbnQ2NCBsYXN0X3ZhbHVlLCBpbnQ2NCBs b2dfY250LCBib29sIGlzX2NhbGxlZCk7CiBzdGF0aWMgdm9pZCBzdHJlYW1fdHJ1bmNhdGVf Y2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhu LAogCQkJCQkJCQkJICAgaW50IG5yZWxhdGlvbnMsIFJlbGF0aW9uIHJlbGF0aW9uc1tdLCBS ZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UpOwogCkBAIC0yMTgsNiArMjI2LDcgQEAgU3Rh cnR1cERlY29kaW5nQ29udGV4dChMaXN0ICpvdXRwdXRfcGx1Z2luX29wdGlvbnMsCiAJY3R4 LT5yZW9yZGVyLT5hcHBseV90cnVuY2F0ZSA9IHRydW5jYXRlX2NiX3dyYXBwZXI7CiAJY3R4 LT5yZW9yZGVyLT5jb21taXQgPSBjb21taXRfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXIt Pm1lc3NhZ2UgPSBtZXNzYWdlX2NiX3dyYXBwZXI7CisJY3R4LT5yZW9yZGVyLT5zZXF1ZW5j ZSA9IHNlcXVlbmNlX2NiX3dyYXBwZXI7CiAKIAkvKgogCSAqIFRvIHN1cHBvcnQgc3RyZWFt aW5nLCB3ZSByZXF1aXJlIHN0YXJ0L3N0b3AvYWJvcnQvY29tbWl0L2NoYW5nZQpAQCAtMjM0 LDYgKzI0Myw3IEBAIFN0YXJ0dXBEZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0X3BsdWdp bl9vcHRpb25zLAogCQkoY3R4LT5jYWxsYmFja3Muc3RyZWFtX2NvbW1pdF9jYiAhPSBOVUxM KSB8fAogCQkoY3R4LT5jYWxsYmFja3Muc3RyZWFtX2NoYW5nZV9jYiAhPSBOVUxMKSB8fAog CQkoY3R4LT5jYWxsYmFja3Muc3RyZWFtX21lc3NhZ2VfY2IgIT0gTlVMTCkgfHwKKwkJKGN0 eC0+Y2FsbGJhY2tzLnN0cmVhbV9zZXF1ZW5jZV9jYiAhPSBOVUxMKSB8fAogCQkoY3R4LT5j YWxsYmFja3Muc3RyZWFtX3RydW5jYXRlX2NiICE9IE5VTEwpOwogCiAJLyoKQEAgLTI1MSw2 ICsyNjEsNyBAQCBTdGFydHVwRGVjb2RpbmdDb250ZXh0KExpc3QgKm91dHB1dF9wbHVnaW5f b3B0aW9ucywKIAljdHgtPnJlb3JkZXItPnN0cmVhbV9jb21taXQgPSBzdHJlYW1fY29tbWl0 X2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9yZGVyLT5zdHJlYW1fY2hhbmdlID0gc3RyZWFtX2No YW5nZV9jYl93cmFwcGVyOwogCWN0eC0+cmVvcmRlci0+c3RyZWFtX21lc3NhZ2UgPSBzdHJl YW1fbWVzc2FnZV9jYl93cmFwcGVyOworCWN0eC0+cmVvcmRlci0+c3RyZWFtX3NlcXVlbmNl ID0gc3RyZWFtX3NlcXVlbmNlX2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9yZGVyLT5zdHJlYW1f dHJ1bmNhdGUgPSBzdHJlYW1fdHJ1bmNhdGVfY2Jfd3JhcHBlcjsKIAogCkBAIC0xMjAzLDYg KzEyMTQsNDIgQEAgbWVzc2FnZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBS ZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxi YWNrLnByZXZpb3VzOwogfQogCitzdGF0aWMgdm9pZAorc2VxdWVuY2VfY2Jfd3JhcHBlcihS ZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQlYTG9n UmVjUHRyIHNlcXVlbmNlX2xzbiwgUmVsYXRpb24gcmVsLCBib29sIHRyYW5zYWN0aW9uYWws CisJCQkJCWludDY0IGxhc3RfdmFsdWUsIGludDY0IGxvZ19jbnQsIGJvb2wgaXNfY2FsbGVk KQoreworCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCA9IGNhY2hlLT5wcml2YXRlX2Rh dGE7CisJTG9naWNhbEVycm9yQ2FsbGJhY2tTdGF0ZSBzdGF0ZTsKKwlFcnJvckNvbnRleHRD YWxsYmFjayBlcnJjYWxsYmFjazsKKworCUFzc2VydCghY3R4LT5mYXN0X2ZvcndhcmQpOwor CisJaWYgKGN0eC0+Y2FsbGJhY2tzLnNlcXVlbmNlX2NiID09IE5VTEwpCisJCXJldHVybjsK KworCS8qIFB1c2ggY2FsbGJhY2sgKyBpbmZvIG9uIHRoZSBlcnJvciBjb250ZXh0IHN0YWNr ICovCisJc3RhdGUuY3R4ID0gY3R4OworCXN0YXRlLmNhbGxiYWNrX25hbWUgPSAic2VxdWVu Y2UiOworCXN0YXRlLnJlcG9ydF9sb2NhdGlvbiA9IHNlcXVlbmNlX2xzbjsKKwllcnJjYWxs YmFjay5jYWxsYmFjayA9IG91dHB1dF9wbHVnaW5fZXJyb3JfY2FsbGJhY2s7CisJZXJyY2Fs bGJhY2suYXJnID0gKHZvaWQgKikgJnN0YXRlOworCWVycmNhbGxiYWNrLnByZXZpb3VzID0g ZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxi YWNrOworCisJLyogc2V0IG91dHB1dCBzdGF0ZSAqLworCWN0eC0+YWNjZXB0X3dyaXRlcyA9 IHRydWU7CisJY3R4LT53cml0ZV94aWQgPSB0eG4gIT0gTlVMTCA/IHR4bi0+eGlkIDogSW52 YWxpZFRyYW5zYWN0aW9uSWQ7CisJY3R4LT53cml0ZV9sb2NhdGlvbiA9IHNlcXVlbmNlX2xz bjsKKworCS8qIGRvIHRoZSBhY3R1YWwgd29yazogY2FsbCBjYWxsYmFjayAqLworCWN0eC0+ Y2FsbGJhY2tzLnNlcXVlbmNlX2NiKGN0eCwgdHhuLCBzZXF1ZW5jZV9sc24sIHJlbCwgdHJh bnNhY3Rpb25hbCwKKwkJCQkJCQkgICBsYXN0X3ZhbHVlLCBsb2dfY250LCBpc19jYWxsZWQp OworCisJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCisJZXJyb3JfY29udGV4 dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOworfQorCiBzdGF0aWMgdm9pZAogc3Ry ZWFtX3N0YXJ0X2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZm ZXJUWE4gKnR4biwKIAkJCQkJCVhMb2dSZWNQdHIgZmlyc3RfbHNuKQpAQCAtMTUwOCw2ICsx NTU1LDQ3IEBAIHN0cmVhbV9tZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2Fj aGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJy Y2FsbGJhY2sucHJldmlvdXM7CiB9CiAKK3N0YXRpYyB2b2lkCitzdHJlYW1fc2VxdWVuY2Vf Y2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhu LAorCQkJCQkJICAgWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sIFJlbGF0aW9uIHJlbCwKKwkJ CQkJCSAgIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCSAgIGludDY0IGxhc3RfdmFsdWUs IGludDY0IGxvZ19jbnQsIGJvb2wgaXNfY2FsbGVkKQoreworCUxvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCA9IGNhY2hlLT5wcml2YXRlX2RhdGE7CisJTG9naWNhbEVycm9yQ2FsbGJh Y2tTdGF0ZSBzdGF0ZTsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKwor CUFzc2VydCghY3R4LT5mYXN0X2ZvcndhcmQpOworCisJLyogV2UncmUgb25seSBzdXBwb3Nl ZCB0byBjYWxsIHRoaXMgd2hlbiBzdHJlYW1pbmcgaXMgc3VwcG9ydGVkLiAqLworCUFzc2Vy dChjdHgtPnN0cmVhbWluZyk7CisKKwkvKiB0aGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsICov CisJaWYgKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9zZXF1ZW5jZV9jYiA9PSBOVUxMKQorCQly ZXR1cm47CisKKwkvKiBQdXNoIGNhbGxiYWNrICsgaW5mbyBvbiB0aGUgZXJyb3IgY29udGV4 dCBzdGFjayAqLworCXN0YXRlLmN0eCA9IGN0eDsKKwlzdGF0ZS5jYWxsYmFja19uYW1lID0g InN0cmVhbV9zZXF1ZW5jZSI7CisJc3RhdGUucmVwb3J0X2xvY2F0aW9uID0gc2VxdWVuY2Vf bHNuOworCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gb3V0cHV0X3BsdWdpbl9lcnJvcl9jYWxs YmFjazsKKwllcnJjYWxsYmFjay5hcmcgPSAodm9pZCAqKSAmc3RhdGU7CisJZXJyY2FsbGJh Y2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRfc3Rh Y2sgPSAmZXJyY2FsbGJhY2s7CisKKwkvKiBzZXQgb3V0cHV0IHN0YXRlICovCisJY3R4LT5h Y2NlcHRfd3JpdGVzID0gdHJ1ZTsKKwljdHgtPndyaXRlX3hpZCA9IHR4biAhPSBOVUxMID8g dHhuLT54aWQgOiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwljdHgtPndyaXRlX2xvY2F0aW9u ID0gc2VxdWVuY2VfbHNuOworCisJLyogZG8gdGhlIGFjdHVhbCB3b3JrOiBjYWxsIGNhbGxi YWNrICovCisJY3R4LT5jYWxsYmFja3Muc2VxdWVuY2VfY2IoY3R4LCB0eG4sIHNlcXVlbmNl X2xzbiwgcmVsLCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCSAgIGxhc3RfdmFsdWUsIGxvZ19j bnQsIGlzX2NhbGxlZCk7CisKKwkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8K KwllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7Cit9CisKIHN0 YXRpYyB2b2lkCiBzdHJlYW1fdHJ1bmNhdGVfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpj YWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJICAgaW50IG5yZWxhdGlvbnMs IFJlbGF0aW9uIHJlbGF0aW9uc1tdLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCA3YWE1NjQ3YTJjLi42YjZkMGQ5Yjk1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYwpAQCAtNzcsNiArNzcsMzUgQEAKICAqCSAgYSBiaXQgbW9yZSBtZW1vcnkgdG8g dGhlIG9sZGVzdCBzdWJ0cmFuc2FjdGlvbnMsIGJlY2F1c2UgaXQncyBsaWtlbHkKICAqCSAg dGhleSBhcmUgdGhlIHNvdXJjZSBmb3IgdGhlIG5leHQgc2VxdWVuY2Ugb2YgY2hhbmdlcy4K ICAqCisgKgkgIFdoZW4gZGVjb2Rpbmcgc2VxdWVuY2VzLCB3ZSBkaWZmZXJlbnRpYXRlIGJl dHdlZW4gYSBzZXF1ZW5jZXMgY3JlYXRlZAorICoJICBpbiBhIChydW5uaW5nKSB0cmFuc2Fj dGlvbiwgYW5kIHNlcXVlbmNlcyBjcmVhdGVkIGluIG90aGVyIChhbHJlYWR5CisgKgkgIGNv bW1pdHRlZCkgdHJhbnNhY3Rpb25zLiBDaGFuZ2VzIGZvciBzZXF1ZW5jZXMgY3JlYXRlZCBp biB0aGUgc2FtZQorICoJICB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gYXJlIHRyZWF0ZWQgYXMg InRyYW5zYWN0aW9uYWwiIGkuZS4ganVzdCBsaWtlCisgKgkgIGFueSBvdGhlciBjaGFuZ2Ug ZnJvbSB0aGF0IHRyYW5zYWN0aW9uIChhbmQgZGlzY2FyZGVkIGluIGNhc2Ugb2YgYQorICoJ ICByb2xsYmFjaykuIENoYW5nZXMgZm9yIHNlcXVlbmNlcyBjcmVhdGVkIGVhcmxpZXIgYXJl IHRyZWF0ZWQgYXMgbm90CisgKgkgIHRyYW5zYWN0aW9uYWwgLSBhcmUgcHJvY2Vzc2VkIGlt bWVkaWF0ZWx5LCBhcyBpZiBwZXJmb3JtZWQgb3V0c2lkZQorICoJICBhbnkgdHJhbnNhY3Rp b24gKGFuZCB0aHVzIG5vdCByb2xsZWQgYmFjaykuCisgKgorICoJICBUaGlzIG1peGVkIGJl aGF2aW9yIGlzIG5lY2Vzc2FyeSAtIHNlcXVlbmNlcyBhcmUgbm9uLXRyYW5zYWN0aW9uYWwK KyAqCSAgKGUuZy4gUk9MTEJBQ0sgZG9lcyBub3QgdW5kbyB0aGUgc2VxdWVuY2UgaW5jcmVt ZW50cykuIEJ1dCBmb3IgbmV3CisgKgkgIHNlcXVlbmNlcywgd2UgbmVlZCB0byBoYW5kbGUg dGhlbSBpbiBhIHRyYW5zYWN0aW9uYWwgd2F5LCBiZWNhdXNlIGlmCisgKgkgIHdlIGV2ZXIg Z2V0IHNvbWUgRERMIHN1cHBvcnQsIHRoZSBzZXF1ZW5jZSB3b24ndCBleGlzdCB1bnRpbCB0 aGUKKyAqCSAgdHJhbnNhY3Rpb24gZ2V0cyBhcHBsaWVkLiBTbyB3ZSBuZWVkIHRvIGVuc3Vy ZSB0aGUgaW5jcmVtZW50cyBkb24ndAorICoJICBoYXBwZW4gdW50aWwgdGhlIHNlcXVlbmNl IGdldHMgY3JlYXRlZC4KKyAqCisgKgkgIFRvIGRpZmZlcmVudGlhdGUgd2hpY2ggc2VxdWVu Y2VzIGFyZSAib2xkIiBhbmQgd2hpY2ggd2VyZSBjcmVhdGVkCisgKgkgIGluIGEgc3RpbGwt cnVubmluZyB0cmFuc2FjdGlvbiwgd2UgdHJhY2sgc2VxdWVuY2VzIGNyZWF0ZWQgaW4gcnVu bmluZworICoJICB0cmFuc2FjdGlvbnMgaW4gYSBoYXNoIHRhYmxlLiBFYWNoIHNlcXVlbmNl IGlzIGlkZW50aWZpZWQgYnkgaXQncworICoJICByZWxmaWxlbm9kZSwgYW5kIGF0IHRyYW5z YWN0aW9uIGNvbW1pdCB3ZSBkaXNjYXJkIGFsbCBzZXF1ZW5jZXMKKyAqCSAgY3JlYXRlZCBp biB0aGF0IHBhcnRpY3VsYXIgdHJhbnNhY3Rpb24uIEZvciBlYWNoIHNlcXVlbmNlIHdlIHRy YWNrCisgKgkgIHRoZSBYSUQgb2YgdGhlIChzdWIpdHJhbnNhY3Rpb24gdGhhdCBjcmVhdGVk IGl0LCBhbmQgd2UgY2xlYW51cCB0aGUKKyAqCSAgc2VxdWVuY2VzIGZvciBlYWNoIHN1YnRy YW5zYWN0aW9uIHdoZW4gaXQgY29tcGxldGVzIChjb21taXQvcm9sbGJhY2spLgorICoKKyAq CSAgV2UgZG9uJ3QgdXNlIHRoZSBYSUQgdG8gY2hlY2sgaWYgaXQncyB0aGUgc2FtZSB0b3At bGV2ZWwgdHJhbnNhY3Rpb24uCisgKgkgIEl0J3MgZW5vdWdoIHRvIGtub3cgaXQgd2FzIGNy ZWF0ZWQgaW4gYW4gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24sCisgKgkgIGFuZCB3ZSBrbm93 IGl0IG11c3QgYmUgdGhlIGN1cnJlbnQgb25lIGJlY2F1c2Ugb3RoZXJ3aXNlIGl0IHdvdWxk bid0CisgKgkgIHNlZSB0aGUgc2VxdWVuY2Ugb2JqZWN0LgorICoKICAqIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAqLwogI2luY2x1ZGUgInBvc3RncmVzLmgiCkBAIC05MSw2ICsxMjAsNyBA QAogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50 ZXJuYWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL2NhdGFsb2cuaCIKKyNpbmNsdWRlICJjb21t YW5kcy9zZXF1ZW5jZS5oIgogI2luY2x1ZGUgImxpYi9iaW5hcnloZWFwLmgiCiAjaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCkBAIC0xMTYsNiArMTQ2LDEz IEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE5CeUlkRW50CiAJUmVvcmRlckJ1 ZmZlclRYTiAqdHhuOwogfSBSZW9yZGVyQnVmZmVyVFhOQnlJZEVudDsKIAorLyogZW50cnkg Zm9yIGhhc2ggdGFibGUgd2UgdXNlIHRvIHRyYWNrIHNlcXVlbmNlcyBjcmVhdGVkIGluIHJ1 bm5pbmcgeGFjdHMgKi8KK3R5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVu dAoreworCVJlbEZpbGVOb2RlCQlybm9kZTsKKwlUcmFuc2FjdGlvbklkCXhpZDsKK30gUmVv cmRlckJ1ZmZlclNlcXVlbmNlRW50OworCiAvKiBkYXRhIHN0cnVjdHVyZXMgZm9yIChyZWxm aWxlbm9kZSwgY3RpZCkgPT4gKGNtaW4sIGNtYXgpIG1hcHBpbmcgKi8KIHR5cGVkZWYgc3Ry dWN0IFJlb3JkZXJCdWZmZXJUdXBsZUNpZEtleQogewpAQCAtMzM5LDYgKzM3NiwxNCBAQCBS ZW9yZGVyQnVmZmVyQWxsb2NhdGUodm9pZCkKIAlidWZmZXItPmJ5X3R4biA9IGhhc2hfY3Jl YXRlKCJSZW9yZGVyQnVmZmVyQnlYaWQiLCAxMDAwLCAmaGFzaF9jdGwsCiAJCQkJCQkJCSBI QVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKIAorCS8qIGhhc2ggdGFi bGUgb2Ygc2VxdWVuY2VzLCBtYXBwaW5nIHJlbGZpbGVub2RlIHRvIFhJRCBvZiB0cmFuc2Fj dGlvbiAqLworCWhhc2hfY3RsLmtleXNpemUgPSBzaXplb2YoUmVsRmlsZU5vZGUpOworCWhh c2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihSZW9yZGVyQnVmZmVyU2VxdWVuY2VFbnQpOwor CWhhc2hfY3RsLmhjeHQgPSBidWZmZXItPmNvbnRleHQ7CisKKwlidWZmZXItPnNlcXVlbmNl cyA9IGhhc2hfY3JlYXRlKCJSZW9yZGVyQnVmZmVyU2VxdWVuY2VIYXNoIiwgMTAwMCwgJmhh c2hfY3RsLAorCQkJCQkJCQkgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVY VCk7CisKIAlidWZmZXItPmJ5X3R4bl9sYXN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklk OwogCWJ1ZmZlci0+YnlfdHhuX2xhc3RfdHhuID0gTlVMTDsKIApAQCAtNTI1LDYgKzU3MCwx MyBAQCBSZW9yZGVyQnVmZmVyUmV0dXJuQ2hhbmdlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9y ZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UsCiAJCQkJY2hhbmdlLT5kYXRhLnRydW5jYXRlLnJl bGlkcyA9IE5VTEw7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBSRU9SREVSX0JVRkZFUl9D SEFOR0VfU0VRVUVOQ0U6CisJCQlpZiAoY2hhbmdlLT5kYXRhLnNlcXVlbmNlLnR1cGxlKQor CQkJeworCQkJCVJlb3JkZXJCdWZmZXJSZXR1cm5UdXBsZUJ1ZihyYiwgY2hhbmdlLT5kYXRh LnNlcXVlbmNlLnR1cGxlKTsKKwkJCQljaGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUgPSBO VUxMOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lO VEVSTkFMX1NQRUNfQ09ORklSTToKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5U RVJOQUxfU1BFQ19BQk9SVDoKIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5URVJO QUxfQ09NTUFORF9JRDoKQEAgLTg1OSw2ICs5MTEsMjMwIEBAIFJlb3JkZXJCdWZmZXJRdWV1 ZU1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCX0KIH0K IAorLyoKKyAqIFRyZWF0IHRoZSBzZXF1ZW5jZSBpbmNyZW1lbnQgYXMgdHJhbnNhY3Rpb25h bD8KKyAqCisgKiBUaGUgaGFzaCB0YWJsZSB0cmFja3MgYWxsIHNlcXVlbmNlcyBjcmVhdGVk IGluIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucywKKyAqIHNvIHdlIHNpbXBseSBkbyBhIGxv b2t1cCAodGhlIHNlcXVlbmNlIGlzIGlkZW50aWZpZWQgYnkgcmVsZmlsZW5kZSkuIElmCisg KiB3ZSBmaW5kIGEgbWF0Y2gsIHRoZSBpbmNyZW1lbnQgc2hvdWxkIGJlIGhhbmRsZWQgYXMg dHJhbnNhY3Rpb25hbC4KKyAqLworYm9vbAorUmVvcmRlckJ1ZmZlclNlcXVlbmNlSXNUcmFu c2FjdGlvbmFsKFJlb3JkZXJCdWZmZXIgKnJiLAorCQkJCQkJCQkJIFJlbEZpbGVOb2RlIHJu b2RlLCBib29sIGNyZWF0ZWQpCit7CisJYm9vbAlmb3VuZCA9IGZhbHNlOworCisJaWYgKGNy ZWF0ZWQpCisJCXJldHVybiB0cnVlOworCisJaGFzaF9zZWFyY2gocmItPnNlcXVlbmNlcywK KwkJCQkodm9pZCAqKSAmcm5vZGUsCisJCQkJSEFTSF9GSU5ELAorCQkJCSZmb3VuZCk7CisK KwlyZXR1cm4gZm91bmQ7Cit9CisKKy8qCisgKiBDbGVhbnVwIHNlcXVlbmNlcyBjcmVhdGVk IGluIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKyAqCisgKiBUaGVyZSdzIG5vIHdheSB0 byBzZWFyY2ggYnkgWElELCBzbyB3ZSBzaW1wbHkgZG8gYSBzZXFzY2FuIG9mIGFsbAorICog dGhlIGVudHJpZXMgaW4gdGhlIGhhc2ggdGFibGUuIEhvcGVmdWxseSB0aGVyZSBhcmUgb25s eSBhIGNvdXBsZQorICogZW50cmllcyBpbiBtb3N0IGNhc2VzIC0gcGVvcGxlIGdlbmVyYWxs eSBkb24ndCBjcmVhdGUgbWFueSBuZXcKKyAqIHNlcXVlbmNlcyBvdmVyIGFuZCBvdmVyLgor ICovCitzdGF0aWMgdm9pZAorUmVvcmRlckJ1ZmZlclNlcXVlbmNlQ2xlYW51cChSZW9yZGVy QnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJSEFTSF9TRVFfU1RBVFVTIHNj YW5fc3RhdHVzOworCVJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqZW50OworCisJaGFzaF9z ZXFfaW5pdCgmc2Nhbl9zdGF0dXMsIHJiLT5zZXF1ZW5jZXMpOworCXdoaWxlICgoZW50ID0g KFJlb3JkZXJCdWZmZXJTZXF1ZW5jZUVudCAqKSBoYXNoX3NlcV9zZWFyY2goJnNjYW5fc3Rh dHVzKSkgIT0gTlVMTCkKKwl7CisJCS8qIHNraXAgc2VxdWVuY2VzIG5vdCBmcm9tIHRoaXMg dHJhbnNhY3Rpb24gKi8KKwkJaWYgKGVudC0+eGlkICE9IHhpZCkKKwkJCWNvbnRpbnVlOwor CisJCSh2b2lkKSBoYXNoX3NlYXJjaChyYi0+c2VxdWVuY2VzLAorCQkJCQkgICAodm9pZCAq KSAmKGVudC0+cm5vZGUpLAorCQkJCQkgICBIQVNIX1JFTU9WRSwgTlVMTCk7CisJfQorfQor CisvKgorICogQSB0cmFuc2FjdGlvbmFsIHNlcXVlbmNlIGluY3JlbWVudCBpcyBxdWV1ZWQg dG8gYmUgcHJvY2Vzc2VkIHVwb24gY29tbWl0CisgKiBhbmQgYSBub24tdHJhbnNhY3Rpb25h bCBpbmNyZW1lbnQgZ2V0cyBwcm9jZXNzZWQgaW1tZWRpYXRlbHkuCisgKgorICogQSBzZXF1 ZW5jZSB1cGRhdGUgbWF5IGJlIGJvdGggdHJhbnNhY3Rpb25hbCBhbmQgbm9uLXRyYW5zYWN0 aW9uYWwuIFdoZW4KKyAqIGNyZWF0ZWQgaW4gYSBydW5uaW5nIHRyYW5zYWN0aW9uLCB0cmVh dCBpdCBhcyB0cmFuc2FjdGlvbmFsIGFuZCBxdWV1ZQorICogdGhlIGNoYW5nZSBpbiBpdC4g T3RoZXJ3aXNlIHRyZWF0IGl0IGFzIG5vbi10cmFuc2FjdGlvbmFsLCBzbyB0aGF0IHdlCisg KiBkb24ndCBmb3JnZXQgdGhlIGluY3JlbWVudCBpbiBjYXNlIG9mIGEgcm9sbGJhY2suCisg Ki8KK3ZvaWQKK1Jlb3JkZXJCdWZmZXJRdWV1ZVNlcXVlbmNlKFJlb3JkZXJCdWZmZXIgKnJi LCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LCBYTG9n UmVjUHRyIGxzbiwgUmVwT3JpZ2luSWQgb3JpZ2luX2lkLAorCQkJCQkJICAgUmVsRmlsZU5v ZGUgcm5vZGUsIGJvb2wgdHJhbnNhY3Rpb25hbCwgYm9vbCBjcmVhdGVkLAorCQkJCQkJICAg UmVvcmRlckJ1ZmZlclR1cGxlQnVmICp0dXBsZWJ1ZikKK3sKKwkvKgorCSAqIENoYW5nZSBu ZWVkcyB0byBiZSBoYW5kbGVkIGFzIHRyYW5zYWN0aW9uYWwsIGJlY2F1c2UgdGhlIHNlcXVl bmNlIHdhcworCSAqIGNyZWF0ZWQgaW4gYSB0cmFuc2FjdGlvbiB0aGF0IGlzIHN0aWxsIHJ1 bm5pbmcuIEluIHRoYXQgY2FzZSBhbGwgdGhlCisJICogY2hhbmdlcyBuZWVkIHRvIGJlIHF1 ZXVlZCBpbiB0aGF0IHRyYW5zYWN0aW9uLCB3ZSBtdXN0IG5vdCBzZW5kIHRoZW0KKwkgKiB0 byB0aGUgZG93bnN0cmVhbSB1bnRpbCB0aGUgdHJhbnNhY3Rpb24gY29tbWl0cy4KKwkgKgor CSAqIFRoZXJlJ3MgYSBiaXQgb2YgYSB0cm91YmxlIHdpdGggc3VidHJhbnNhY3Rpb25zIC0g d2UgY2FuJ3QgcXVldWUgaXQKKwkgKiBpbnRvIHRoZSBzdWJ4YWN0LCBiZWNhdXNlIGl0IG1p Z2h0IGJlIHJvbGxlZCBiYWNrIGFuZCB3ZSdkIGxvc2UgdGhlCisJICogaW5jcmVtZW50LiBX ZSBuZWVkIHRvIHF1ZXVlIGl0IGludG8gdGhlIHNhbWUgKHN1Yil4YWN0IHRoYXQgY3JlYXRl ZAorCSAqIHRoZSBzZXF1ZW5jZSwgd2hpY2ggaXMgd2h5IHdlIHRyYWNrIHRoZSBYSUQgaW4g dGhlIGhhc2ggdGFibGUuCisJICovCisJaWYgKHRyYW5zYWN0aW9uYWwpCisJeworCQlNZW1v cnlDb250ZXh0IG9sZGNvbnRleHQ7CisJCVJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZTsK KworCQkvKiBsb29rdXAgc2VxdWVuY2UgYnkgcmVsZmlsZW5vZGUgKi8KKwkJUmVvcmRlckJ1 ZmZlclNlcXVlbmNlRW50ICAgKmVudDsKKwkJYm9vbAkJCQkJCWZvdW5kOworCisJCS8qIHRy YW5zYWN0aW9uYWwgY2hhbmdlcyByZXF1aXJlIGEgdHJhbnNhY3Rpb24gKi8KKwkJQXNzZXJ0 KHhpZCAhPSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CisKKwkJLyogc2VhcmNoIHRoZSBsb29r dXAgdGFibGUgKHdlIGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlLCBmb3VuZCBpcyBlbm91Z2gp ICovCisJCWVudCA9IGhhc2hfc2VhcmNoKHJiLT5zZXF1ZW5jZXMsCisJCQkJCQkgICh2b2lk ICopICZybm9kZSwKKwkJCQkJCSAgY3JlYXRlZCA/IEhBU0hfRU5URVIgOiBIQVNIX0ZJTkQs CisJCQkJCQkgICZmb3VuZCk7CisKKwkJLyoKKwkJICogSWYgdGhpcyBpcyB0aGUgImNyZWF0 ZSIgaW5jcmVtZW50LCB3ZSBtdXN0IG5vdCBoYXZlIGZvdW5kIGFueQorCQkgKiBwcmUtZXhp c3RpbmcgZW50cnkgaW4gdGhlIGhhc2ggdGFibGUgKGkuZS4gdGhlcmUgbXVzdCBub3QgYmUK KwkJICogYW55IGNvbmZsaWN0aW5nIHNlcXVlbmNlKS4KKwkJICovCisJCUFzc2VydCghKGNy ZWF0ZWQgJiYgZm91bmQpKTsKKworCQkvKiBCdXQgd2UgbXVzdCBoYXZlIGVpdGhlciBjcmVh dGVkIG9yIGZvdW5kIGFuIGV4aXN0aW5nIGVudHJ5LiAqLworCQlBc3NlcnQoY3JlYXRlZCB8 fCBmb3VuZCk7CisKKwkJLyoKKwkJICogV2hlbiBjcmVhdGluZyB0aGUgc2VxdWVuY2UsIHJl bWVtYmVyIHRoZSBYSUQgb2YgdGhlIHRyYW5zYWN0aW9uCisJCSAqIHRoYXQgY3JlYXRlZCBp ZC4KKwkJICovCisJCWlmIChjcmVhdGVkKQorCQkJZW50LT54aWQgPSB4aWQ7CisKKwkJLyog WFhYIE1heWJlIGNoZWNrIHRoYXQgd2UncmUgc3RpbGwgaW4gdGhlIHNhbWUgdG9wLWxldmVs IHhhY3Q/ICovCisKKwkJLyogT0ssIGFsbG9jYXRlIGFuZCBxdWV1ZSB0aGUgY2hhbmdlICov CisJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8ocmItPmNvbnRleHQpOwor CisJCWNoYW5nZSA9IFJlb3JkZXJCdWZmZXJHZXRDaGFuZ2UocmIpOworCisJCWNoYW5nZS0+ YWN0aW9uID0gUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNFOworCQljaGFuZ2UtPm9y aWdpbl9pZCA9IG9yaWdpbl9pZDsKKworCQltZW1jcHkoJmNoYW5nZS0+ZGF0YS5zZXF1ZW5j ZS5yZWxub2RlLCAmcm5vZGUsIHNpemVvZihSZWxGaWxlTm9kZSkpOworCisJCWNoYW5nZS0+ ZGF0YS5zZXF1ZW5jZS50dXBsZSA9IHR1cGxlYnVmOworCisJCS8qIGFkZCBpdCB0byB0aGUg c2FtZSBzdWJ4YWN0IHRoYXQgY3JlYXRlZCB0aGUgc2VxdWVuY2UgKi8KKwkJUmVvcmRlckJ1 ZmZlclF1ZXVlQ2hhbmdlKHJiLCBlbnQtPnhpZCwgbHNuLCBjaGFuZ2UsIGZhbHNlKTsKKwor CQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJfQorCWVsc2UKKwl7CisJ CS8qCisJCSAqIFRoaXMgaW5jcmVtZW50IGlzIGZvciBhIHNlcXVlbmNlIHRoYXQgd2FzIG5v dCBjcmVhdGVkIGluIGFueQorCQkgKiBydW5uaW5nIHRyYW5zYWN0aW9uLCBzbyB3ZSB0cmVh dCBpdCBhcyBub24tdHJhbnNhY3Rpb25hbCBhbmQKKwkJICoganVzdCBzZW5kIGl0IHRvIHRo ZSBvdXRwdXQgcGx1Z2luIGRpcmVjdGx5LgorCQkgKi8KKwkJUmVvcmRlckJ1ZmZlclRYTiAq dHhuID0gTlVMTDsKKwkJdm9sYXRpbGUgU25hcHNob3Qgc25hcHNob3Rfbm93ID0gc25hcHNo b3Q7CisJCWJvb2wJdXNpbmdfc3VidHhuOworCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lO RworCQkvKiBBbGwgImNyZWF0ZXMiIGhhdmUgdG8gYmUgaGFuZGxlZCBhcyB0cmFuc2FjdGlv bmFsLiAqLworCQlBc3NlcnQoIWNyZWF0ZWQpOworCisJCS8qIE1ha2Ugc3VyZSB0aGUgc2Vx dWVuY2UgaXMgbm90IGluIHRoZSBoYXNoIHRhYmxlLiAqLworCQl7CisJCQlib29sCWZvdW5k OworCQkJaGFzaF9zZWFyY2gocmItPnNlcXVlbmNlcywKKwkJCQkJCSh2b2lkICopICZybm9k ZSwKKwkJCQkJCUhBU0hfRklORCwgJmZvdW5kKTsKKwkJCUFzc2VydCghZm91bmQpOworCQl9 CisjZW5kaWYKKworCQlpZiAoeGlkICE9IEludmFsaWRUcmFuc2FjdGlvbklkKQorCQkJdHhu ID0gUmVvcmRlckJ1ZmZlclRYTkJ5WGlkKHJiLCB4aWQsIHRydWUsIE5VTEwsIGxzbiwgdHJ1 ZSk7CisKKwkJLyogc2V0dXAgc25hcHNob3QgdG8gYWxsb3cgY2F0YWxvZyBhY2Nlc3MgKi8K KwkJU2V0dXBIaXN0b3JpY1NuYXBzaG90KHNuYXBzaG90X25vdywgTlVMTCk7CisKKwkJLyoK KwkJICogRGVjb2RpbmcgbmVlZHMgYWNjZXNzIHRvIHN5c2NhY2hlcyBldCBhbC4sIHdoaWNo IGluIHR1cm4gdXNlCisJCSAqIGhlYXZ5d2VpZ2h0IGxvY2tzIGFuZCBzdWNoLiBUaHVzIHdl IG5lZWQgdG8gaGF2ZSBlbm91Z2ggc3RhdGUgYXJvdW5kIHRvCisJCSAqIGtlZXAgdHJhY2sg b2YgdGhvc2UuICBUaGUgZWFzaWVzdCB3YXkgaXMgdG8gc2ltcGx5IHVzZSBhIHRyYW5zYWN0 aW9uCisJCSAqIGludGVybmFsbHkuICBUaGF0IGFsc28gYWxsb3dzIHVzIHRvIGVhc2lseSBl bmZvcmNlIHRoYXQgbm90aGluZyB3cml0ZXMKKwkJICogdG8gdGhlIGRhdGFiYXNlIGJ5IGNo ZWNraW5nIGZvciB4aWQgYXNzaWdubWVudHMuCisJCSAqCisJCSAqIFdoZW4gd2UncmUgY2Fs bGVkIHZpYSB0aGUgU1FMIFNSRiB0aGVyZSdzIGFscmVhZHkgYSB0cmFuc2FjdGlvbgorCQkg KiBzdGFydGVkLCBzbyBzdGFydCBhbiBleHBsaWNpdCBzdWJ0cmFuc2FjdGlvbiB0aGVyZS4K KwkJICovCisJCXVzaW5nX3N1YnR4biA9IElzVHJhbnNhY3Rpb25PclRyYW5zYWN0aW9uQmxv Y2soKTsKKworCQlQR19UUlkoKTsKKwkJeworCQkJUmVsYXRpb24JcmVsYXRpb247CisJCQlI ZWFwVHVwbGUJdHVwbGU7CisJCQlGb3JtX3BnX3NlcXVlbmNlX2RhdGEgc2VxOworCQkJT2lk CQkJcmVsb2lkOworCisJCQlpZiAodXNpbmdfc3VidHhuKQorCQkJCUJlZ2luSW50ZXJuYWxT dWJUcmFuc2FjdGlvbigic2VxdWVuY2UiKTsKKwkJCWVsc2UKKwkJCQlTdGFydFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCisJCQlyZWxvaWQgPSBSZWxpZEJ5UmVsZmlsZW5vZGUocm5vZGUu c3BjTm9kZSwgcm5vZGUucmVsTm9kZSk7CisKKwkJCWlmIChyZWxvaWQgPT0gSW52YWxpZE9p ZCkKKwkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IG1hcCBmaWxlbm9kZSBcIiVzXCIgdG8g cmVsYXRpb24gT0lEIiwKKwkJCQkJIHJlbHBhdGhwZXJtKHJub2RlLAorCQkJCQkJCQkgTUFJ Tl9GT1JLTlVNKSk7CisKKwkJCXJlbGF0aW9uID0gUmVsYXRpb25JZEdldFJlbGF0aW9uKHJl bG9pZCk7CisJCQl0dXBsZSA9ICZ0dXBsZWJ1Zi0+dHVwbGU7CisJCQlzZXEgPSAoRm9ybV9w Z19zZXF1ZW5jZV9kYXRhKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCQlyYi0+c2VxdWVuY2Uo cmIsIHR4biwgbHNuLCByZWxhdGlvbiwgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCSBzZXEtPmxh c3RfdmFsdWUsIHNlcS0+bG9nX2NudCwgc2VxLT5pc19jYWxsZWQpOworCisJCQlSZWxhdGlv bkNsb3NlKHJlbGF0aW9uKTsKKworCQkJVGVhcmRvd25IaXN0b3JpY1NuYXBzaG90KGZhbHNl KTsKKworCQkJQWJvcnRDdXJyZW50VHJhbnNhY3Rpb24oKTsKKworCQkJaWYgKHVzaW5nX3N1 YnR4bikKKwkJCQlSb2xsYmFja0FuZFJlbGVhc2VDdXJyZW50U3ViVHJhbnNhY3Rpb24oKTsK KwkJfQorCQlQR19DQVRDSCgpOworCQl7CisJCQlUZWFyZG93bkhpc3RvcmljU25hcHNob3Qo dHJ1ZSk7CisKKwkJCUFib3J0Q3VycmVudFRyYW5zYWN0aW9uKCk7CisKKwkJCWlmICh1c2lu Z19zdWJ0eG4pCisJCQkJUm9sbGJhY2tBbmRSZWxlYXNlQ3VycmVudFN1YlRyYW5zYWN0aW9u KCk7CisKKwkJCVBHX1JFX1RIUk9XKCk7CisJCX0KKwkJUEdfRU5EX1RSWSgpOworCX0KK30K KwogLyoKICAqIEFzc2VydFRYTkxzbk9yZGVyCiAgKgkJVmVyaWZ5IExTTiBvcmRlcmluZyBv ZiB0cmFuc2FjdGlvbiBsaXN0cyBpbiB0aGUgcmVvcmRlcmJ1ZmZlcgpAQCAtMTUzNSw2ICsx ODExLDkgQEAgUmVvcmRlckJ1ZmZlckNsZWFudXBUWE4oUmVvcmRlckJ1ZmZlciAqcmIsIFJl b3JkZXJCdWZmZXJUWE4gKnR4bikKIAkJCQkmZm91bmQpOwogCUFzc2VydChmb3VuZCk7CiAK KwkvKiBSZW1vdmUgc2VxdWVuY2VzIGNyZWF0ZWQgaW4gdGhpcyB0cmFuc2FjdGlvbiAoaWYg YW55KS4gKi8KKwlSZW9yZGVyQnVmZmVyU2VxdWVuY2VDbGVhbnVwKHJiLCB0eG4tPnhpZCk7 CisKIAkvKiByZW1vdmUgZW50cmllcyBzcGlsbGVkIHRvIGRpc2sgKi8KIAlpZiAocmJ0eG5f aXNfc2VyaWFsaXplZCh0eG4pKQogCQlSZW9yZGVyQnVmZmVyUmVzdG9yZUNsZWFudXAocmIs IHR4bik7CkBAIC0xOTUwLDYgKzIyMjksMjkgQEAgUmVvcmRlckJ1ZmZlckFwcGx5TWVzc2Fn ZShSZW9yZGVyQnVmZmVyICpyYiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQljaGFu Z2UtPmRhdGEubXNnLm1lc3NhZ2UpOwogfQogCisvKgorICogSGVscGVyIGZ1bmN0aW9uIGZv ciBSZW9yZGVyQnVmZmVyUHJvY2Vzc1RYTiBmb3IgYXBwbHlpbmcgc2VxdWVuY2VzLgorICov CitzdGF0aWMgaW5saW5lIHZvaWQKK1Jlb3JkZXJCdWZmZXJBcHBseVNlcXVlbmNlKFJlb3Jk ZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkgICBSZWxhdGlv biByZWxhdGlvbiwgUmVvcmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlLAorCQkJCQkJICAgYm9v bCBzdHJlYW1pbmcpCit7CisJSGVhcFR1cGxlCXR1cGxlOworCUZvcm1fcGdfc2VxdWVuY2Vf ZGF0YSBzZXE7CisKKwl0dXBsZSA9ICZjaGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUtPnR1 cGxlOworCXNlcSA9IChGb3JtX3BnX3NlcXVlbmNlX2RhdGEpIEdFVFNUUlVDVCh0dXBsZSk7 CisKKwkvKiBPbmx5IGV2ZXIgY2FsbGVkIGZyb20gUmVvcmRlckJ1ZmZlckFwcGx5U2VxdWVu Y2UsIHNvIHRyYW5zYXRpb25hbC4gKi8KKwlpZiAoc3RyZWFtaW5nKQorCQlyYi0+c3RyZWFt X3NlcXVlbmNlKHJiLCB0eG4sIGNoYW5nZS0+bHNuLCByZWxhdGlvbiwgdHJ1ZSwKKwkJCQkJ CQlzZXEtPmxhc3RfdmFsdWUsIHNlcS0+bG9nX2NudCwgc2VxLT5pc19jYWxsZWQpOworCWVs c2UKKwkJcmItPnNlcXVlbmNlKHJiLCB0eG4sIGNoYW5nZS0+bHNuLCByZWxhdGlvbiwgdHJ1 ZSwKKwkJCQkJIHNlcS0+bGFzdF92YWx1ZSwgc2VxLT5sb2dfY250LCBzZXEtPmlzX2NhbGxl ZCk7Cit9CisKIC8qCiAgKiBGdW5jdGlvbiB0byBzdG9yZSB0aGUgY29tbWFuZCBpZCBhbmQg c25hcHNob3QgYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudAogICogc3RyZWFtIHNvIHRoYXQg d2UgY2FuIHJldXNlIHRoZSBzYW1lIHdoaWxlIHNlbmRpbmcgdGhlIG5leHQgc3RyZWFtLgpA QCAtMjM5Miw2ICsyNjk0LDMxIEBAIFJlb3JkZXJCdWZmZXJQcm9jZXNzVFhOKFJlb3JkZXJC dWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJY2FzZSBSRU9SREVSX0JV RkZFUl9DSEFOR0VfSU5URVJOQUxfVFVQTEVDSUQ6CiAJCQkJCWVsb2coRVJST1IsICJ0dXBs ZWNpZCB2YWx1ZSBpbiBjaGFuZ2VxdWV1ZSIpOwogCQkJCQlicmVhazsKKworCQkJCWNhc2Ug UkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1NFUVVFTkNFOgorCQkJCQlBc3NlcnQoc25hcHNob3Rf bm93KTsKKworCQkJCQlyZWxvaWQgPSBSZWxpZEJ5UmVsZmlsZW5vZGUoY2hhbmdlLT5kYXRh LnNlcXVlbmNlLnJlbG5vZGUuc3BjTm9kZSwKKwkJCQkJCQkJCQkJCWNoYW5nZS0+ZGF0YS5z ZXF1ZW5jZS5yZWxub2RlLnJlbE5vZGUpOworCisJCQkJCWlmIChyZWxvaWQgPT0gSW52YWxp ZE9pZCkKKwkJCQkJCWVsb2coRVJST1IsICJjb3VsZCBub3QgbWFwIGZpbGVub2RlIFwiJXNc IiB0byByZWxhdGlvbiBPSUQiLAorCQkJCQkJCSByZWxwYXRocGVybShjaGFuZ2UtPmRhdGEu c2VxdWVuY2UucmVsbm9kZSwKKwkJCQkJCQkJCQkgTUFJTl9GT1JLTlVNKSk7CisKKwkJCQkJ cmVsYXRpb24gPSBSZWxhdGlvbklkR2V0UmVsYXRpb24ocmVsb2lkKTsKKworCQkJCQlpZiAo IVJlbGF0aW9uSXNWYWxpZChyZWxhdGlvbikpCisJCQkJCQllbG9nKEVSUk9SLCAiY291bGQg bm90IG9wZW4gcmVsYXRpb24gd2l0aCBPSUQgJXUgKGZvciBmaWxlbm9kZSBcIiVzXCIpIiwK KwkJCQkJCQkgcmVsb2lkLAorCQkJCQkJCSByZWxwYXRocGVybShjaGFuZ2UtPmRhdGEuc2Vx dWVuY2UucmVsbm9kZSwKKwkJCQkJCQkJCQkgTUFJTl9GT1JLTlVNKSk7CisKKwkJCQkJaWYg KFJlbGF0aW9uSXNMb2dpY2FsbHlMb2dnZWQocmVsYXRpb24pKQorCQkJCQkJUmVvcmRlckJ1 ZmZlckFwcGx5U2VxdWVuY2UocmIsIHR4biwgcmVsYXRpb24sIGNoYW5nZSwgc3RyZWFtaW5n KTsKKworCQkJCQlSZWxhdGlvbkNsb3NlKHJlbGF0aW9uKTsKKwkJCQkJYnJlYWs7CiAJCQl9 CiAJCX0KIApAQCAtMzc3Niw2ICs0MTAzLDM5IEBAIFJlb3JkZXJCdWZmZXJTZXJpYWxpemVD aGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQlt ZW1jcHkoZGF0YSwgY2hhbmdlLT5kYXRhLnRydW5jYXRlLnJlbGlkcywgc2l6ZSk7CiAJCQkJ ZGF0YSArPSBzaXplOwogCisJCQkJYnJlYWs7CisJCQl9CisJCWNhc2UgUkVPUkRFUl9CVUZG RVJfQ0hBTkdFX1NFUVVFTkNFOgorCQkJeworCQkJCWNoYXIJICAgKmRhdGE7CisJCQkJUmVv cmRlckJ1ZmZlclR1cGxlQnVmICp0dXA7CisJCQkJU2l6ZQkJbGVuID0gMDsKKworCQkJCXR1 cCA9IGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZTsKKworCQkJCWlmICh0dXApCisJCQkJ eworCQkJCQlzeiArPSBzaXplb2YoSGVhcFR1cGxlRGF0YSk7CisJCQkJCWxlbiA9IHR1cC0+ dHVwbGUudF9sZW47CisJCQkJCXN6ICs9IGxlbjsKKwkJCQl9CisKKwkJCQkvKiBtYWtlIHN1 cmUgd2UgaGF2ZSBlbm91Z2ggc3BhY2UgKi8KKwkJCQlSZW9yZGVyQnVmZmVyU2VyaWFsaXpl UmVzZXJ2ZShyYiwgc3opOworCisJCQkJZGF0YSA9ICgoY2hhciAqKSByYi0+b3V0YnVmKSAr IHNpemVvZihSZW9yZGVyQnVmZmVyRGlza0NoYW5nZSk7CisJCQkJLyogbWlnaHQgaGF2ZSBi ZWVuIHJlYWxsb2NhdGVkIGFib3ZlICovCisJCQkJb25kaXNrID0gKFJlb3JkZXJCdWZmZXJE aXNrQ2hhbmdlICopIHJiLT5vdXRidWY7CisKKwkJCQlpZiAobGVuKQorCQkJCXsKKwkJCQkJ bWVtY3B5KGRhdGEsICZ0dXAtPnR1cGxlLCBzaXplb2YoSGVhcFR1cGxlRGF0YSkpOworCQkJ CQlkYXRhICs9IHNpemVvZihIZWFwVHVwbGVEYXRhKTsKKworCQkJCQltZW1jcHkoZGF0YSwg dHVwLT50dXBsZS50X2RhdGEsIGxlbik7CisJCQkJCWRhdGEgKz0gbGVuOworCQkJCX0KKwog CQkJCWJyZWFrOwogCQkJfQogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5B TF9TUEVDX0NPTkZJUk06CkBAIC00MDQwLDYgKzQ0MDAsMjIgQEAgUmVvcmRlckJ1ZmZlckNo YW5nZVNpemUoUmVvcmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlKQogCQkJewogCQkJCXN6ICs9 IHNpemVvZihPaWQpICogY2hhbmdlLT5kYXRhLnRydW5jYXRlLm5yZWxpZHM7CiAKKwkJCQli cmVhazsKKwkJCX0KKwkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfU0VRVUVOQ0U6CisJ CQl7CisJCQkJUmVvcmRlckJ1ZmZlclR1cGxlQnVmICp0dXA7CisJCQkJU2l6ZQkJbGVuID0g MDsKKworCQkJCXR1cCA9IGNoYW5nZS0+ZGF0YS5zZXF1ZW5jZS50dXBsZTsKKworCQkJCWlm ICh0dXApCisJCQkJeworCQkJCQlzeiArPSBzaXplb2YoSGVhcFR1cGxlRGF0YSk7CisJCQkJ CWxlbiA9IHR1cC0+dHVwbGUudF9sZW47CisJCQkJCXN6ICs9IGxlbjsKKwkJCQl9CisKIAkJ CQlicmVhazsKIAkJCX0KIAkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfSU5URVJOQUxf U1BFQ19DT05GSVJNOgpAQCAtNDM0MSw2ICs0NzE3LDMwIEBAIFJlb3JkZXJCdWZmZXJSZXN0 b3JlQ2hhbmdlKFJlb3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAK IAkJCQlicmVhazsKIAkJCX0KKworCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9TRVFV RU5DRToKKwkJCWlmIChjaGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUpCisJCQl7CisJCQkJ dWludDMyCQl0dXBsZWxlbiA9ICgoSGVhcFR1cGxlKSBkYXRhKS0+dF9sZW47CisKKwkJCQlj aGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUgPQorCQkJCQlSZW9yZGVyQnVmZmVyR2V0VHVw bGVCdWYocmIsIHR1cGxlbGVuIC0gU2l6ZW9mSGVhcFR1cGxlSGVhZGVyKTsKKworCQkJCS8q IHJlc3RvcmUgLT50dXBsZSAqLworCQkJCW1lbWNweSgmY2hhbmdlLT5kYXRhLnNlcXVlbmNl LnR1cGxlLT50dXBsZSwgZGF0YSwKKwkJCQkJICAgc2l6ZW9mKEhlYXBUdXBsZURhdGEpKTsK KwkJCQlkYXRhICs9IHNpemVvZihIZWFwVHVwbGVEYXRhKTsKKworCQkJCS8qIHJlc2V0IHRf ZGF0YSBwb2ludGVyIGludG8gdGhlIG5ldyB0dXBsZWJ1ZiAqLworCQkJCWNoYW5nZS0+ZGF0 YS5zZXF1ZW5jZS50dXBsZS0+dHVwbGUudF9kYXRhID0KKwkJCQkJUmVvcmRlckJ1ZmZlclR1 cGxlQnVmRGF0YShjaGFuZ2UtPmRhdGEuc2VxdWVuY2UudHVwbGUpOworCisJCQkJLyogcmVz dG9yZSB0dXBsZSBkYXRhIGl0c2VsZiAqLworCQkJCW1lbWNweShjaGFuZ2UtPmRhdGEuc2Vx dWVuY2UudHVwbGUtPnR1cGxlLnRfZGF0YSwgZGF0YSwgdHVwbGVsZW4pOworCQkJCWRhdGEg Kz0gdHVwbGVsZW47CisJCQl9CisJCQlicmVhazsKKwogCQljYXNlIFJFT1JERVJfQlVGRkVS X0NIQU5HRV9JTlRFUk5BTF9TUEVDX0NPTkZJUk06CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJf Q0hBTkdFX0lOVEVSTkFMX1NQRUNfQUJPUlQ6CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hB TkdFX0lOVEVSTkFMX0NPTU1BTkRfSUQ6CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21t YW5kcy9zZXF1ZW5jZS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaAppbmRl eCA0MDU0NGRkNGM3Li41OTE5ZmI5MGVlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21t YW5kcy9zZXF1ZW5jZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgK QEAgLTQ4LDYgKzQ4LDcgQEAgdHlwZWRlZiBGb3JtRGF0YV9wZ19zZXF1ZW5jZV9kYXRhICpG b3JtX3BnX3NlcXVlbmNlX2RhdGE7CiB0eXBlZGVmIHN0cnVjdCB4bF9zZXFfcmVjCiB7CiAJ UmVsRmlsZU5vZGUgbm9kZTsKKwlib29sCQljcmVhdGVkOwkvKiBpcyB0aGlzIGEgQ1JFQVRF IFNFUVVFTkNFICovCiAJLyogU0VRVUVOQ0UgVFVQTEUgREFUQSBGT0xMT1dTIEFUIFRIRSBF TkQgKi8KIH0geGxfc2VxX3JlYzsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vb3V0cHV0X3BsdWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0 X3BsdWdpbi5oCmluZGV4IDgxMDQ5NWVkMGUuLjQzYjhhNjNlZTQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaAorKysgYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmgKQEAgLTg4LDYgKzg4LDE4IEBAIHR5cGVk ZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVNZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkJCVNpemUgbWVzc2FnZV9zaXplLAogCQkJCQkJ CQkJCWNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisvKgorICogQ2FsbGVkIGZvciB0aGUgZ2Vu ZXJpYyBsb2dpY2FsIGRlY29kaW5nIHNlcXVlbmNlcy4KKyAqLwordHlwZWRlZiB2b2lkICgq TG9naWNhbERlY29kZVNlcXVlbmNlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LAorCQkJCQkJCQkJCSBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJ IFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLAorCQkJCQkJCQkJCSBSZWxhdGlvbiByZWwsCisJ CQkJCQkJCQkJIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkJCQkgaW50NjQgbGFzdF92 YWx1ZSwKKwkJCQkJCQkJCQkgaW50NjQgbG9nX2NudCwKKwkJCQkJCQkJCQkgYm9vbCBpc19j YWxsZWQpOworCiAvKgogICogRmlsdGVyIGNoYW5nZXMgYnkgb3JpZ2luLgogICovCkBAIC0x OTksNiArMjExLDE5IEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVTdHJlYW1NZXNz YWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4CiAJCQkJCQkJCQkJ CSAgU2l6ZSBtZXNzYWdlX3NpemUsCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqbWVzc2Fn ZSk7CiAKKy8qCisgKiBDYWxsZWQgZm9yIHRoZSBzdHJlYW1pbmcgZ2VuZXJpYyBsb2dpY2Fs IGRlY29kaW5nIHNlcXVlbmNlcyBmcm9tIGluLXByb2dyZXNzCisgKiB0cmFuc2FjdGlvbnMu CisgKi8KK3R5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVTdHJlYW1TZXF1ZW5jZUNCKSAo c3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCQkJCQkJICAgUmVv cmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkJCQkgICBYTG9nUmVjUHRyIHNlcXVlbmNl X2xzbiwKKwkJCQkJCQkJCQkJICAgUmVsYXRpb24gcmVsLAorCQkJCQkJCQkJCQkgICBib29s IHRyYW5zYWN0aW9uYWwsCisJCQkJCQkJCQkJCSAgIGludDY0IGxhc3RfdmFsdWUsCisJCQkJ CQkJCQkJCSAgIGludDY0IGxvZ19jbnQsCisJCQkJCQkJCQkJCSAgIGJvb2wgaXNfY2FsbGVk KTsKKwogLyoKICAqIENhbGxiYWNrIGZvciBzdHJlYW1pbmcgdHJ1bmNhdGVzIGZyb20gaW4t cHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgogICovCkBAIC0yMTksNiArMjQ0LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgT3V0cHV0UGx1Z2luQ2FsbGJhY2tzCiAJTG9naWNhbERlY29kZVRydW5jYXRl Q0IgdHJ1bmNhdGVfY2I7CiAJTG9naWNhbERlY29kZUNvbW1pdENCIGNvbW1pdF9jYjsKIAlM b2dpY2FsRGVjb2RlTWVzc2FnZUNCIG1lc3NhZ2VfY2I7CisJTG9naWNhbERlY29kZVNlcXVl bmNlQ0Igc2VxdWVuY2VfY2I7CiAJTG9naWNhbERlY29kZUZpbHRlckJ5T3JpZ2luQ0IgZmls dGVyX2J5X29yaWdpbl9jYjsKIAlMb2dpY2FsRGVjb2RlU2h1dGRvd25DQiBzaHV0ZG93bl9j YjsKIApAQCAtMjM3LDYgKzI2Myw3IEBAIHR5cGVkZWYgc3RydWN0IE91dHB1dFBsdWdpbkNh bGxiYWNrcwogCUxvZ2ljYWxEZWNvZGVTdHJlYW1Db21taXRDQiBzdHJlYW1fY29tbWl0X2Ni OwogCUxvZ2ljYWxEZWNvZGVTdHJlYW1DaGFuZ2VDQiBzdHJlYW1fY2hhbmdlX2NiOwogCUxv Z2ljYWxEZWNvZGVTdHJlYW1NZXNzYWdlQ0Igc3RyZWFtX21lc3NhZ2VfY2I7CisJTG9naWNh bERlY29kZVN0cmVhbVNlcXVlbmNlQ0Igc3RyZWFtX3NlcXVlbmNlX2NiOwogCUxvZ2ljYWxE ZWNvZGVTdHJlYW1UcnVuY2F0ZUNCIHN0cmVhbV90cnVuY2F0ZV9jYjsKIH0gT3V0cHV0UGx1 Z2luQ2FsbGJhY2tzOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9y ZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVy LmgKaW5kZXggNWI0MGZmNzVmNy4uYWI0NjlmYjIxMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAtNjQsNyArNjQsOCBAQCBlbnVtIFJlb3JkZXJC dWZmZXJDaGFuZ2VUeXBlCiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVEVSTkFMX1NQRUNf SU5TRVJULAogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5BTF9TUEVDX0NPTkZJUk0s CiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVEVSTkFMX1NQRUNfQUJPUlQsCi0JUkVPUkRF Ul9CVUZGRVJfQ0hBTkdFX1RSVU5DQVRFCisJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX1RSVU5D QVRFLAorCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9TRVFVRU5DRQogfTsKIAogLyogZm9yd2Fy ZCBkZWNsYXJhdGlvbiAqLwpAQCAtMTU4LDYgKzE1OSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBS ZW9yZGVyQnVmZmVyQ2hhbmdlCiAJCQl1aW50MzIJCW5pbnZhbGlkYXRpb25zOyAvKiBOdW1i ZXIgb2YgbWVzc2FnZXMgKi8KIAkJCVNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKmludmFs aWRhdGlvbnM7CS8qIGludmFsaWRhdGlvbiBtZXNzYWdlICovCiAJCX0JCQlpbnZhbDsKKwor CQkvKiBDb250ZXh0IGRhdGEgZm9yIFNlcXVlbmNlIGNoYW5nZXMgKi8KKwkJc3RydWN0CisJ CXsKKwkJCVJlbEZpbGVOb2RlIHJlbG5vZGU7CisJCQlSZW9yZGVyQnVmZmVyVHVwbGVCdWYg KnR1cGxlOworCQl9CQkJc2VxdWVuY2U7CiAJfQkJCWRhdGE7CiAKIAkvKgpAQCAtNDMwLDYg KzQzOCwxNSBAQCB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyTWVzc2FnZUNCKSAoUmVv cmRlckJ1ZmZlciAqcmIsCiAJCQkJCQkJCQkJY29uc3QgY2hhciAqcHJlZml4LCBTaXplIHN6 LAogCQkJCQkJCQkJCWNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisvKiBzZXF1ZW5jZSBjYWxs YmFjayBzaWduYXR1cmUgKi8KK3R5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJTZXF1ZW5j ZUNCKSAoUmVvcmRlckJ1ZmZlciAqcmIsCisJCQkJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4g KnR4biwKKwkJCQkJCQkJCQkgWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sCisJCQkJCQkJCQkJ IFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJCQkgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJ CQkJCSBpbnQ2NCBsYXN0X3ZhbHVlLCBpbnQ2NCBsb2dfY250LAorCQkJCQkJCQkJCSBib29s IGlzX2NhbGxlZCk7CisKIC8qIGJlZ2luIHByZXBhcmUgY2FsbGJhY2sgc2lnbmF0dXJlICov CiB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyQmVnaW5QcmVwYXJlQ0IpIChSZW9yZGVy QnVmZmVyICpyYiwKIAkJCQkJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4gKnR4bik7CkBAIC00 OTYsNiArNTEzLDE1IEBAIHR5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJTdHJlYW1NZXNz YWdlQ0IpICgKIAkJCQkJCQkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUgc3osCiAJ CQkJCQkJCQkJCSAgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qIHN0cmVhbSBzZXF1ZW5j ZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KK3R5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJT dHJlYW1TZXF1ZW5jZUNCKSAoUmVvcmRlckJ1ZmZlciAqcmIsCisJCQkJCQkJCQkJCSAgIFJl b3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBzZXF1ZW5j ZV9sc24sCisJCQkJCQkJCQkJCSAgIFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJCQkJICAgYm9v bCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJCQkgICBpbnQ2NCBsYXN0X3ZhbHVlLCBpbnQ2 NCBsb2dfY250LAorCQkJCQkJCQkJCQkgICBib29sIGlzX2NhbGxlZCk7CisKIC8qIHN0cmVh bSB0cnVuY2F0ZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KIHR5cGVkZWYgdm9pZCAoKlJlb3Jk ZXJCdWZmZXJTdHJlYW1UcnVuY2F0ZUNCKSAoCiAJCQkJCQkJCQkJCSAgIFJlb3JkZXJCdWZm ZXIgKnJiLApAQCAtNTExLDYgKzUzNywxMiBAQCBzdHJ1Y3QgUmVvcmRlckJ1ZmZlcgogCSAq LwogCUhUQUIJICAgKmJ5X3R4bjsKIAorCS8qCisJICogcmVsZmlsZW5vZGUgPT4gWElEIGxv b2t1cCB0YWJsZSBmb3Igc2VxdWVuY2VzIGNyZWF0ZWQgaW4gYSB0cmFuc2FjdGlvbgorCSAq IChhbHNvIGluY2x1ZGVzIGFsdGVyZWQgc2VxdWVuY2VzLCB3aGljaCBhc3NpZ25zIG5ldyBy ZWxmaWxlbm9kZSkKKwkgKi8KKwlIVEFCCSAgICpzZXF1ZW5jZXM7CisKIAkvKgogCSAqIFRy YW5zYWN0aW9ucyB0aGF0IGNvdWxkIGJlIGEgdG9wbGV2ZWwgeGFjdCwgb3JkZXJlZCBieSBM U04gb2YgdGhlIGZpcnN0CiAJICogcmVjb3JkIGJlYXJpbmcgdGhhdCB4aWQuCkBAIC01NDEs NiArNTczLDcgQEAgc3RydWN0IFJlb3JkZXJCdWZmZXIKIAlSZW9yZGVyQnVmZmVyQXBwbHlU cnVuY2F0ZUNCIGFwcGx5X3RydW5jYXRlOwogCVJlb3JkZXJCdWZmZXJDb21taXRDQiBjb21t aXQ7CiAJUmVvcmRlckJ1ZmZlck1lc3NhZ2VDQiBtZXNzYWdlOworCVJlb3JkZXJCdWZmZXJT ZXF1ZW5jZUNCIHNlcXVlbmNlOwogCiAJLyoKIAkgKiBDYWxsYmFja3MgdG8gYmUgY2FsbGVk IHdoZW4gc3RyZWFtaW5nIGEgdHJhbnNhY3Rpb24gYXQgcHJlcGFyZSB0aW1lLgpAQCAtNTYw LDYgKzU5Myw3IEBAIHN0cnVjdCBSZW9yZGVyQnVmZmVyCiAJUmVvcmRlckJ1ZmZlclN0cmVh bUNvbW1pdENCIHN0cmVhbV9jb21taXQ7CiAJUmVvcmRlckJ1ZmZlclN0cmVhbUNoYW5nZUNC IHN0cmVhbV9jaGFuZ2U7CiAJUmVvcmRlckJ1ZmZlclN0cmVhbU1lc3NhZ2VDQiBzdHJlYW1f bWVzc2FnZTsKKwlSZW9yZGVyQnVmZmVyU3RyZWFtU2VxdWVuY2VDQiBzdHJlYW1fc2VxdWVu Y2U7CiAJUmVvcmRlckJ1ZmZlclN0cmVhbVRydW5jYXRlQ0Igc3RyZWFtX3RydW5jYXRlOwog CiAJLyoKQEAgLTYzNSw2ICs2NjksMTAgQEAgdm9pZAkJUmVvcmRlckJ1ZmZlclF1ZXVlQ2hh bmdlKFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwKIHZvaWQJCVJlb3JkZXJCdWZm ZXJRdWV1ZU1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBTbmFwc2hv dCBzbmFwc2hvdCwgWExvZ1JlY1B0ciBsc24sCiAJCQkJCQkJCQkgIGJvb2wgdHJhbnNhY3Rp b25hbCwgY29uc3QgY2hhciAqcHJlZml4LAogCQkJCQkJCQkJICBTaXplIG1lc3NhZ2Vfc2l6 ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7Cit2b2lkCQlSZW9yZGVyQnVmZmVyUXVldWVTZXF1 ZW5jZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJCQkg ICBTbmFwc2hvdCBzbmFwc2hvdCwgWExvZ1JlY1B0ciBsc24sIFJlcE9yaWdpbklkIG9yaWdp bl9pZCwKKwkJCQkJCQkJCSAgIFJlbEZpbGVOb2RlIHJub2RlLCBib29sIHRyYW5zYWN0aW9u YWwsIGJvb2wgY3JlYXRlZCwKKwkJCQkJCQkJCSAgIFJlb3JkZXJCdWZmZXJUdXBsZUJ1ZiAq dHVwbGVidWYpOwogdm9pZAkJUmVvcmRlckJ1ZmZlckNvbW1pdChSZW9yZGVyQnVmZmVyICos IFRyYW5zYWN0aW9uSWQsCiAJCQkJCQkJCVhMb2dSZWNQdHIgY29tbWl0X2xzbiwgWExvZ1Jl Y1B0ciBlbmRfbHNuLAogCQkJCQkJCQlUaW1lc3RhbXBUeiBjb21taXRfdGltZSwgUmVwT3Jp Z2luSWQgb3JpZ2luX2lkLCBYTG9nUmVjUHRyIG9yaWdpbl9sc24pOwpAQCAtNjgyLDQgKzcy MCw3IEBAIHZvaWQJCVJlb3JkZXJCdWZmZXJTZXRSZXN0YXJ0UG9pbnQoUmVvcmRlckJ1ZmZl ciAqLCBYTG9nUmVjUHRyIHB0cik7CiAKIHZvaWQJCVN0YXJ0dXBSZW9yZGVyQnVmZmVyKHZv aWQpOwogCitib29sCQlSZW9yZGVyQnVmZmVyU2VxdWVuY2VJc1RyYW5zYWN0aW9uYWwoUmVv cmRlckJ1ZmZlciAqcmIsCisJCQkJCQkJCQkJCQkgUmVsRmlsZU5vZGUgcm5vZGUsIGJvb2wg Y3JlYXRlZCk7CisKICNlbmRpZgotLSAKMi4zMS4xCgo= --------------NQr9xOgNVjXIyBTcV0JPdvCk Content-Type: text/x-patch; charset=UTF-8; name="0003-Add-support-for-decoding-sequences-to-test_-20211222.patch" Content-Disposition: attachment; filename*0="0003-Add-support-for-decoding-sequences-to-test_-20211222.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0YjI0OWU2NWI1NWQ1ZTlmYjdiMDgxMzVlYWQ2OGJmYTNjNTgwMzRjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogRnJpLCAyNCBTZXAgMjAyMSAwMDo0MjowNCArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMy82XSBBZGQgc3VwcG9ydCBmb3IgZGVjb2Rpbmcgc2VxdWVuY2VzIHRv IHRlc3RfZGVjb2RpbmcKCi0tLQogY29udHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlICAg ICAgICAgICAgICB8ICAgMyArLQogY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3Nl cXVlbmNlLm91dCB8IDMyNyArKysrKysrKysrKysrKysrKysrKwogY29udHJpYi90ZXN0X2Rl Y29kaW5nL3NxbC9zZXF1ZW5jZS5zcWwgICAgICB8IDExOSArKysrKysrCiBjb250cmliL3Rl c3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jICAgICAgIHwgIDY5ICsrKysrCiA0IGZpbGVz IGNoYW5nZWQsIDUxNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9k ZSAxMDA2NDQgY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3NlcXVlbmNlLm91dAog Y3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvc2VxdWVuY2Uu c3FsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlIGIvY29u dHJpYi90ZXN0X2RlY29kaW5nL01ha2VmaWxlCmluZGV4IDlhMzFlMGI4NzkuLjU2ZGRjM2Fi YWUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZQorKysgYi9j b250cmliL3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUKQEAgLTUsNyArNSw4IEBAIFBHRklMRURF U0MgPSAidGVzdF9kZWNvZGluZyAtIGV4YW1wbGUgb2YgYSBsb2dpY2FsIGRlY29kaW5nIG91 dHB1dCBwbHVnaW4iCiAKIFJFR1JFU1MgPSBkZGwgeGFjdCByZXdyaXRlIHRvYXN0IHBlcm1p c3Npb25zIGRlY29kaW5nX2luX3hhY3QgXAogCWRlY29kaW5nX2ludG9fcmVsIGJpbmFyeSBw cmVwYXJlZCByZXBsb3JpZ2luIHRpbWUgbWVzc2FnZXMgXAotCXNwaWxsIHNsb3QgdHJ1bmNh dGUgc3RyZWFtIHN0YXRzIHR3b3BoYXNlIHR3b3BoYXNlX3N0cmVhbQorCXNwaWxsIHNsb3Qg dHJ1bmNhdGUgc3RyZWFtIHN0YXRzIHR3b3BoYXNlIHR3b3BoYXNlX3N0cmVhbSBcCisJc2Vx dWVuY2UKIElTT0xBVElPTiA9IG14YWN0IGRlbGF5ZWRfc3RhcnR1cCBvbmRpc2tfc3RhcnR1 cCBjb25jdXJyZW50X2RkbF9kbWwgXAogCW9sZGVzdF94bWluIHNuYXBzaG90X3RyYW5zZmVy IHN1YnhhY3Rfd2l0aG91dF90b3AgY29uY3VycmVudF9zdHJlYW0gXAogCXR3b3BoYXNlX3Nu YXBzaG90CmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvc2Vx dWVuY2Uub3V0IGIvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3NlcXVlbmNlLm91 dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5jM2MyYTE4YTM1Ci0t LSAvZGV2L251bGwKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3NlcXVl bmNlLm91dApAQCAtMCwwICsxLDMyNyBAQAorLS0gcHJlZGljdGFiaWxpdHkKK1NFVCBzeW5j aHJvbm91c19jb21taXQgPSBvbjsKK1NFTEVDVCAnaW5pdCcgRlJPTSBwZ19jcmVhdGVfbG9n aWNhbF9yZXBsaWNhdGlvbl9zbG90KCdyZWdyZXNzaW9uX3Nsb3QnLCAndGVzdF9kZWNvZGlu ZycpOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGluaXQKKygxIHJvdykKKworQ1JFQVRF IFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2U7CistLSB0ZXN0IHRoZSBzZXF1ZW5jZSBjaGFuZ2Vz IGJ5IHNldmVyYWwgbmV4dHZhbCgpIGNhbGxzCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1 ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAgICAxCisoMSByb3cpCisKK1NF TEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQor ICAgICAgIDIKKygxIHJvdykKKworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsK KyBuZXh0dmFsIAorLS0tLS0tLS0tCisgICAgICAgMworKDEgcm93KQorCitTRUxFQ1QgbmV4 dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAgICA0 CisoMSByb3cpCisKKy0tIHRlc3QgdGhlIHNlcXVlbmNlIGNoYW5nZXMgYnkgc2V2ZXJhbCBB TFRFUiBjb21tYW5kcworQUxURVIgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZSBJTkNSRU1FTlQg QlkgMTA7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCist LS0tLS0tLS0KKyAgICAgIDE0CisoMSByb3cpCisKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2Vx dWVuY2UgU1RBUlQgV0lUSCAzMDAwOworQUxURVIgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZSBN QVhWQUxVRSAxMDAwMDsKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgUkVTVEFSVCBX SVRIIDQwMDA7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwg CistLS0tLS0tLS0KKyAgICA0MDAwCisoMSByb3cpCisKKy0tIHRlc3QgdGhlIHNlcXVlbmNl IGNoYW5nZXMgYnkgc2V2ZXJhbCBzZXR2YWwoKSBjYWxscworU0VMRUNUIHNldHZhbCgndGVz dF9zZXF1ZW5jZScsIDM1MDApOworIHNldHZhbCAKKy0tLS0tLS0tCisgICAzNTAwCisoMSBy b3cpCisKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0t LS0tLS0tLQorICAgIDM1MTAKKygxIHJvdykKKworU0VMRUNUIHNldHZhbCgndGVzdF9zZXF1 ZW5jZScsIDM1MDAsIHRydWUpOworIHNldHZhbCAKKy0tLS0tLS0tCisgICAzNTAwCisoMSBy b3cpCisKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0t LS0tLS0tLQorICAgIDM1MTAKKygxIHJvdykKKworU0VMRUNUIHNldHZhbCgndGVzdF9zZXF1 ZW5jZScsIDM1MDAsIGZhbHNlKTsKKyBzZXR2YWwgCistLS0tLS0tLQorICAgMzUwMAorKDEg cm93KQorCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCist LS0tLS0tLS0KKyAgICAzNTAwCisoMSByb3cpCisKKy0tIHNob3cgcmVzdWx0cyBhbmQgZHJv cCBzZXF1ZW5jZQorU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5n ZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcs ICdza2lwLWVtcHR5LXhhY3RzJywgJzAnLCAnc2tpcC1zZXF1ZW5jZXMnLCAnMCcpOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQkVHSU4KKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJh bnNhY3Rpb25hbDoxIGxhc3RfdmFsdWU6MSBsb2dfY250OjAgaXNfY2FsbGVkOjAKKyBDT01N SVQKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxh c3RfdmFsdWU6MzMgbG9nX2NudDowIGlzX2NhbGxlZDoxCisgQkVHSU4KKyBzZXF1ZW5jZSBw dWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDoxIGxhc3RfdmFsdWU6NCBsb2df Y250OjAgaXNfY2FsbGVkOjEKKyBDT01NSVQKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1 ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6MzM0IGxvZ19jbnQ6MCBpc19jYWxs ZWQ6MQorIEJFR0lOCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0 aW9uYWw6MSBsYXN0X3ZhbHVlOjE0IGxvZ19jbnQ6MzIgaXNfY2FsbGVkOjEKKyBDT01NSVQK KyBCRUdJTgorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFs OjEgbGFzdF92YWx1ZToxNCBsb2dfY250OjAgaXNfY2FsbGVkOjEKKyBDT01NSVQKKyBCRUdJ TgorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOjEgbGFz dF92YWx1ZTo0MDAwIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MAorIENPTU1JVAorIHNlcXVlbmNl IHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOjAgbGFzdF92YWx1ZTo0MzIw IGxvZ19jbnQ6MCBpc19jYWxsZWQ6MQorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNl OiB0cmFuc2FjdGlvbmFsOjAgbGFzdF92YWx1ZTozNTAwIGxvZ19jbnQ6MCBpc19jYWxsZWQ6 MQorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOjAgbGFz dF92YWx1ZTozODMwIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MQorIHNlcXVlbmNlIHB1YmxpYy50 ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOjAgbGFzdF92YWx1ZTozNTAwIGxvZ19jbnQ6 MCBpc19jYWxsZWQ6MQorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2Fj dGlvbmFsOjAgbGFzdF92YWx1ZTozODMwIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MQorIHNlcXVl bmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOjAgbGFzdF92YWx1ZToz NTAwIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MAorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVl bmNlOiB0cmFuc2FjdGlvbmFsOjAgbGFzdF92YWx1ZTozODIwIGxvZ19jbnQ6MCBpc19jYWxs ZWQ6MQorKDI0IHJvd3MpCisKK0RST1AgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZTsKKy0tIHJv bGxiYWNrIG9uIHNlcXVlbmNlIGNyZWF0aW9uIGFuZCB1cGRhdGUKK0JFR0lOOworQ1JFQVRF IFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2U7CitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAoYSBJ TlQpOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0dmFsIAorLS0t LS0tLS0tCisgICAgICAgMQorKDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1 ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAgICAyCisoMSByb3cpCisKK1NF TEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQor ICAgICAgIDMKKygxIHJvdykKKworU0VMRUNUIHNldHZhbCgndGVzdF9zZXF1ZW5jZScsIDMw MDApOworIHNldHZhbCAKKy0tLS0tLS0tCisgICAzMDAwCisoMSByb3cpCisKK1NFTEVDVCBu ZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisgbmV4dHZhbCAKKy0tLS0tLS0tLQorICAgIDMw MDEKKygxIHJvdykKKworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKKyBuZXh0 dmFsIAorLS0tLS0tLS0tCisgICAgMzAwMgorKDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgn dGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAzMDAzCisoMSBy b3cpCisKK0FMVEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgUkVTVEFSVCBXSVRIIDYwMDA7 CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIFZBTFVFUyggKFNFTEVDVCBuZXh0dmFsKCd0ZXN0 X3NlcXVlbmNlJykpICk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworIG5l eHR2YWwgCistLS0tLS0tLS0KKyAgICA2MDAxCisoMSByb3cpCisKK1JPTExCQUNLOworU0VM RUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25f c2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhh Y3RzJywgJzEnLCAnc2tpcC1zZXF1ZW5jZXMnLCAnMCcpOworIGRhdGEgCistLS0tLS0KKygw IHJvd3MpCisKKy0tIHJvbGxiYWNrIG9uIHRhYmxlIGNyZWF0aW9uIHdpdGggc2VyaWFsIGNv bHVtbgorQkVHSU47CitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAoYSBTRVJJQUwsIGIgSU5U KTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMTAwKTsKK0lOU0VSVCBJ TlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMjAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFi bGUgKGIpIFZBTFVFUyAoMzAwKTsKK1NFTEVDVCBzZXR2YWwoJ3Rlc3RfdGFibGVfYV9zZXEn LCAzMDAwKTsKKyBzZXR2YWwgCistLS0tLS0tLQorICAgMzAwMAorKDEgcm93KQorCitJTlNF UlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDQwMCk7CitJTlNFUlQgSU5UTyB0ZXN0 X3RhYmxlIChiKSBWQUxVRVMgKDUwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBW QUxVRVMgKDYwMCk7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3RhYmxlX2Ffc2VxIFJFU1RBUlQg V0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg3MDApOwor SU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg4MDApOworSU5TRVJUIElOVE8g dGVzdF90YWJsZSAoYikgVkFMVUVTICg5MDApOworUk9MTEJBQ0s7CitTRUxFQ1QgZGF0YSBG Uk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVM TCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMScs ICdza2lwLXNlcXVlbmNlcycsICcwJyk7CisgZGF0YSAKKy0tLS0tLQorKDAgcm93cykKKwor LS0gcm9sbGJhY2sgb24gdGFibGUgd2l0aCBzZXJpYWwgY29sdW1uCitDUkVBVEUgVEFCTEUg dGVzdF90YWJsZSAoYSBTRVJJQUwsIGIgSU5UKTsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVz dF90YWJsZSAoYikgVkFMVUVTICgxMDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikg VkFMVUVTICgyMDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgzMDAp OworU0VMRUNUIHNldHZhbCgndGVzdF90YWJsZV9hX3NlcScsIDMwMDApOworIHNldHZhbCAK Ky0tLS0tLS0tCisgICAzMDAwCisoMSByb3cpCisKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUg KGIpIFZBTFVFUyAoNDAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAo NTAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoNjAwKTsKK0FMVEVS IFNFUVVFTkNFIHRlc3RfdGFibGVfYV9zZXEgUkVTVEFSVCBXSVRIIDYwMDA7CitJTlNFUlQg SU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDcwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3Rh YmxlIChiKSBWQUxVRVMgKDgwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxV RVMgKDkwMCk7CitST0xMQkFDSzsKKy0tIGNoZWNrIHRhYmxlIGFuZCBzZXF1ZW5jZSB2YWx1 ZXMgYWZ0ZXIgcm9sbGJhY2sKK1NFTEVDVCAqIGZyb20gdGVzdF90YWJsZV9hX3NlcTsKKyBs YXN0X3ZhbHVlIHwgbG9nX2NudCB8IGlzX2NhbGxlZCAKKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyAgICAgICAzMDAzIHwgICAgICAzMCB8IHQKKygxIHJvdykKKwor U0VMRUNUIG5leHR2YWwoJ3Rlc3RfdGFibGVfYV9zZXEnKTsKKyBuZXh0dmFsIAorLS0tLS0t LS0tCisgICAgMzAwNAorKDEgcm93KQorCitEUk9QIFRBQkxFIHRlc3RfdGFibGU7CitTRUxF Q1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9z bG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFj dHMnLCAnMCcsICdza2lwLXNlcXVlbmNlcycsICcwJyk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBCRUdJTgorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3RhYmxlX2Ffc2VxOiB0cmFuc2FjdGlv bmFsOjEgbGFzdF92YWx1ZToxIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MAorIENPTU1JVAorIHNl cXVlbmNlIHB1YmxpYy50ZXN0X3RhYmxlX2Ffc2VxOiB0cmFuc2FjdGlvbmFsOjAgbGFzdF92 YWx1ZTozMyBsb2dfY250OjAgaXNfY2FsbGVkOjEKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF90 YWJsZV9hX3NlcTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6MzAwMCBsb2dfY250OjAg aXNfY2FsbGVkOjEKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF90YWJsZV9hX3NlcTogdHJhbnNh Y3Rpb25hbDowIGxhc3RfdmFsdWU6MzAzMyBsb2dfY250OjAgaXNfY2FsbGVkOjEKKyBCRUdJ TgorIENPTU1JVAorKDggcm93cykKKworLS0gc2F2ZXBvaW50IHRlc3Qgb24gdGFibGUgd2l0 aCBzZXJpYWwgY29sdW1uCitCRUdJTjsKK0NSRUFURSBUQUJMRSB0ZXN0X3RhYmxlIChhIFNF UklBTCwgYiBJTlQpOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgxMDAp OworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgyMDApOworU0FWRVBPSU5U IGE7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDMwMCk7CitST0xMQkFD SyBUTyBTQVZFUE9JTlQgYTsKK0RST1AgVEFCTEUgdGVzdF90YWJsZTsKK0NPTU1JVDsKK1NF TEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9u X3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14 YWN0cycsICcwJywgJ3NraXAtc2VxdWVuY2VzJywgJzAnKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg QkVHSU4KKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF90YWJsZV9hX3NlcTogdHJhbnNhY3Rpb25h bDoxIGxhc3RfdmFsdWU6MSBsb2dfY250OjAgaXNfY2FsbGVkOjAKKyBzZXF1ZW5jZSBwdWJs aWMudGVzdF90YWJsZV9hX3NlcTogdHJhbnNhY3Rpb25hbDoxIGxhc3RfdmFsdWU6MzMgbG9n X2NudDowIGlzX2NhbGxlZDoxCisgdGFibGUgcHVibGljLnRlc3RfdGFibGU6IElOU0VSVDog YVtpbnRlZ2VyXToxIGJbaW50ZWdlcl06MTAwCisgdGFibGUgcHVibGljLnRlc3RfdGFibGU6 IElOU0VSVDogYVtpbnRlZ2VyXToyIGJbaW50ZWdlcl06MjAwCisgQ09NTUlUCisoNiByb3dz KQorCistLSBzYXZlcG9pbnQgdGVzdCBvbiB0YWJsZSB3aXRoIHNlcmlhbCBjb2x1bW4KK0JF R0lOOworQ1JFQVRFIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2U7CitTRUxFQ1QgbmV4dHZhbCgn dGVzdF9zZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAgICAxCisoMSBy b3cpCisKK1NFTEVDVCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCAzMDAwKTsKKyBzZXR2YWwg CistLS0tLS0tLQorICAgMzAwMAorKDEgcm93KQorCitTRUxFQ1QgbmV4dHZhbCgndGVzdF9z ZXF1ZW5jZScpOworIG5leHR2YWwgCistLS0tLS0tLS0KKyAgICAzMDAxCisoMSByb3cpCisK K1NBVkVQT0lOVCBhOworQUxURVIgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZSBTVEFSVCBXSVRI IDcwMDA7CitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNlJywgNTAwMCk7Cisgc2V0dmFs IAorLS0tLS0tLS0KKyAgIDUwMDAKKygxIHJvdykKKworUk9MTEJBQ0sgVE8gU0FWRVBPSU5U IGE7CitTRUxFQ1QgKiBGUk9NIHRlc3Rfc2VxdWVuY2U7CisgbGFzdF92YWx1ZSB8IGxvZ19j bnQgfCBpc19jYWxsZWQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg ICAgICAgMzAwMSB8ICAgICAgMzIgfCB0CisoMSByb3cpCisKK0RST1AgU0VRVUVOQ0UgdGVz dF9zZXF1ZW5jZTsKK0NPTU1JVDsKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90 X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14 aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcwJywgJ3NraXAtc2VxdWVuY2VzJywg JzAnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIEJFR0lOCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2Vx dWVuY2U6IHRyYW5zYWN0aW9uYWw6MSBsYXN0X3ZhbHVlOjEgbG9nX2NudDowIGlzX2NhbGxl ZDowCisgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6MSBs YXN0X3ZhbHVlOjMzIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MQorIHNlcXVlbmNlIHB1YmxpYy50 ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOjEgbGFzdF92YWx1ZTozMDAwIGxvZ19jbnQ6 MCBpc19jYWxsZWQ6MQorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2Fj dGlvbmFsOjEgbGFzdF92YWx1ZTozMDMzIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MQorIENPTU1J VAorKDYgcm93cykKKworU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgncmVncmVz c2lvbl9zbG90Jyk7CisgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvY29udHJpYi90ZXN0 X2RlY29kaW5nL3NxbC9zZXF1ZW5jZS5zcWwgYi9jb250cmliL3Rlc3RfZGVjb2Rpbmcvc3Fs L3NlcXVlbmNlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4y MWM0Yjc5MjIyCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3Nx bC9zZXF1ZW5jZS5zcWwKQEAgLTAsMCArMSwxMTkgQEAKKy0tIHByZWRpY3RhYmlsaXR5CitT RVQgc3luY2hyb25vdXNfY29tbWl0ID0gb247CitTRUxFQ1QgJ2luaXQnIEZST00gcGdfY3Jl YXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90JywgJ3Rlc3Rf ZGVjb2RpbmcnKTsKKworQ1JFQVRFIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2U7CisKKy0tIHRl c3QgdGhlIHNlcXVlbmNlIGNoYW5nZXMgYnkgc2V2ZXJhbCBuZXh0dmFsKCkgY2FsbHMKK1NF TEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9z ZXF1ZW5jZScpOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKK1NFTEVDVCBu ZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CisKKy0tIHRlc3QgdGhlIHNlcXVlbmNlIGNoYW5n ZXMgYnkgc2V2ZXJhbCBBTFRFUiBjb21tYW5kcworQUxURVIgU0VRVUVOQ0UgdGVzdF9zZXF1 ZW5jZSBJTkNSRU1FTlQgQlkgMTA7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScp OworCitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIFNUQVJUIFdJVEggMzAwMDsKK0FM VEVSIFNFUVVFTkNFIHRlc3Rfc2VxdWVuY2UgTUFYVkFMVUUgMTAwMDA7CitBTFRFUiBTRVFV RU5DRSB0ZXN0X3NlcXVlbmNlIFJFU1RBUlQgV0lUSCA0MDAwOworU0VMRUNUIG5leHR2YWwo J3Rlc3Rfc2VxdWVuY2UnKTsKKworLS0gdGVzdCB0aGUgc2VxdWVuY2UgY2hhbmdlcyBieSBz ZXZlcmFsIHNldHZhbCgpIGNhbGxzCitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3NlcXVlbmNlJywg MzUwMCk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworU0VMRUNUIHNldHZh bCgndGVzdF9zZXF1ZW5jZScsIDM1MDAsIHRydWUpOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rf c2VxdWVuY2UnKTsKK1NFTEVDVCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCAzNTAwLCBmYWxz ZSk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworCistLSBzaG93IHJlc3Vs dHMgYW5kIGRyb3Agc2VxdWVuY2UKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90 X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14 aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcwJywgJ3NraXAtc2VxdWVuY2VzJywg JzAnKTsKK0RST1AgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZTsKKworLS0gcm9sbGJhY2sgb24g c2VxdWVuY2UgY3JlYXRpb24gYW5kIHVwZGF0ZQorQkVHSU47CitDUkVBVEUgU0VRVUVOQ0Ug dGVzdF9zZXF1ZW5jZTsKK0NSRUFURSBUQUJMRSB0ZXN0X3RhYmxlIChhIElOVCk7CitTRUxF Q1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2Vx dWVuY2UnKTsKK1NFTEVDVCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxFQ1Qgc2V0 dmFsKCd0ZXN0X3NlcXVlbmNlJywgMzAwMCk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1 ZW5jZScpOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rfc2VxdWVuY2UnKTsKK1NFTEVDVCBuZXh0 dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIFJF U1RBUlQgV0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSBWQUxVRVMoIChTRUxF Q1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpKSApOworU0VMRUNUIG5leHR2YWwoJ3Rlc3Rf c2VxdWVuY2UnKTsKK1JPTExCQUNLOworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Ns b3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNsdWRl LXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnc2tpcC1zZXF1ZW5jZXMn LCAnMCcpOworCistLSByb2xsYmFjayBvbiB0YWJsZSBjcmVhdGlvbiB3aXRoIHNlcmlhbCBj b2x1bW4KK0JFR0lOOworQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUgKGEgU0VSSUFMLCBiIElO VCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDEwMCk7CitJTlNFUlQg SU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDIwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3Rh YmxlIChiKSBWQUxVRVMgKDMwMCk7CitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3RhYmxlX2Ffc2Vx JywgMzAwMCk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDQwMCk7CitJ TlNFUlQgSU5UTyB0ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDUwMCk7CitJTlNFUlQgSU5UTyB0 ZXN0X3RhYmxlIChiKSBWQUxVRVMgKDYwMCk7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3RhYmxl X2Ffc2VxIFJFU1RBUlQgV0lUSCA2MDAwOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikg VkFMVUVTICg3MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg4MDAp OworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg5MDApOworUk9MTEJBQ0s7 CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVz c2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1w dHkteGFjdHMnLCAnMScsICdza2lwLXNlcXVlbmNlcycsICcwJyk7CisKKy0tIHJvbGxiYWNr IG9uIHRhYmxlIHdpdGggc2VyaWFsIGNvbHVtbgorQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGUg KGEgU0VSSUFMLCBiIElOVCk7CisKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAo YikgVkFMVUVTICgxMDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgy MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICgzMDApOworU0VMRUNU IHNldHZhbCgndGVzdF90YWJsZV9hX3NlcScsIDMwMDApOworSU5TRVJUIElOVE8gdGVzdF90 YWJsZSAoYikgVkFMVUVTICg0MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFM VUVTICg1MDApOworSU5TRVJUIElOVE8gdGVzdF90YWJsZSAoYikgVkFMVUVTICg2MDApOwor QUxURVIgU0VRVUVOQ0UgdGVzdF90YWJsZV9hX3NlcSBSRVNUQVJUIFdJVEggNjAwMDsKK0lO U0VSVCBJTlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoNzAwKTsKK0lOU0VSVCBJTlRPIHRl c3RfdGFibGUgKGIpIFZBTFVFUyAoODAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFibGUgKGIp IFZBTFVFUyAoOTAwKTsKK1JPTExCQUNLOworCistLSBjaGVjayB0YWJsZSBhbmQgc2VxdWVu Y2UgdmFsdWVzIGFmdGVyIHJvbGxiYWNrCitTRUxFQ1QgKiBmcm9tIHRlc3RfdGFibGVfYV9z ZXE7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF90YWJsZV9hX3NlcScpOworCitEUk9QIFRBQkxF IHRlc3RfdGFibGU7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hh bmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcw JywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMCcsICdza2lwLXNlcXVlbmNlcycsICcwJyk7CisK Ky0tIHNhdmVwb2ludCB0ZXN0IG9uIHRhYmxlIHdpdGggc2VyaWFsIGNvbHVtbgorQkVHSU47 CitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZSAoYSBTRVJJQUwsIGIgSU5UKTsKK0lOU0VSVCBJ TlRPIHRlc3RfdGFibGUgKGIpIFZBTFVFUyAoMTAwKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFi bGUgKGIpIFZBTFVFUyAoMjAwKTsKK1NBVkVQT0lOVCBhOworSU5TRVJUIElOVE8gdGVzdF90 YWJsZSAoYikgVkFMVUVTICgzMDApOworUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIGE7CitEUk9Q IFRBQkxFIHRlc3RfdGFibGU7CitDT01NSVQ7CitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2lj YWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2lu Y2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFjdHMnLCAnMCcsICdza2lwLXNlcXVl bmNlcycsICcwJyk7CisKKy0tIHNhdmVwb2ludCB0ZXN0IG9uIHRhYmxlIHdpdGggc2VyaWFs IGNvbHVtbgorQkVHSU47CitDUkVBVEUgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZTsKK1NFTEVD VCBuZXh0dmFsKCd0ZXN0X3NlcXVlbmNlJyk7CitTRUxFQ1Qgc2V0dmFsKCd0ZXN0X3NlcXVl bmNlJywgMzAwMCk7CitTRUxFQ1QgbmV4dHZhbCgndGVzdF9zZXF1ZW5jZScpOworU0FWRVBP SU5UIGE7CitBTFRFUiBTRVFVRU5DRSB0ZXN0X3NlcXVlbmNlIFNUQVJUIFdJVEggNzAwMDsK K1NFTEVDVCBzZXR2YWwoJ3Rlc3Rfc2VxdWVuY2UnLCA1MDAwKTsKK1JPTExCQUNLIFRPIFNB VkVQT0lOVCBhOworU0VMRUNUICogRlJPTSB0ZXN0X3NlcXVlbmNlOworRFJPUCBTRVFVRU5D RSB0ZXN0X3NlcXVlbmNlOworQ09NTUlUOworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2Fs X3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsIE5VTEwsICdpbmNs dWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzAnLCAnc2tpcC1zZXF1ZW5j ZXMnLCAnMCcpOworCitTRUxFQ1QgcGdfZHJvcF9yZXBsaWNhdGlvbl9zbG90KCdyZWdyZXNz aW9uX3Nsb3QnKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2Rl Y29kaW5nLmMgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5jCmluZGV4 IGU1Y2Q4NGU4NWUuLmJjMzI1MGI4ZjQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNv ZGluZy90ZXN0X2RlY29kaW5nLmMKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3Rf ZGVjb2RpbmcuYwpAQCAtMzUsNiArMzUsNyBAQCB0eXBlZGVmIHN0cnVjdAogCWJvb2wJCWlu Y2x1ZGVfdGltZXN0YW1wOwogCWJvb2wJCXNraXBfZW1wdHlfeGFjdHM7CiAJYm9vbAkJb25s eV9sb2NhbDsKKwlib29sCQlza2lwX3NlcXVlbmNlczsKIH0gVGVzdERlY29kaW5nRGF0YTsK IAogLyoKQEAgLTc2LDYgKzc3LDEwIEBAIHN0YXRpYyB2b2lkIHBnX2RlY29kZV9tZXNzYWdl KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkgIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKIAkJCQkJCQkgIGJvb2wgdHJhbnNh Y3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LAogCQkJCQkJCSAgU2l6ZSBzeiwgY29uc3Qg Y2hhciAqbWVzc2FnZSk7CitzdGF0aWMgdm9pZCBwZ19kZWNvZGVfc2VxdWVuY2UoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhu LCBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwKKwkJCQkJCQkgIFJlbGF0aW9uIHJlbCwgYm9v bCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCSAgaW50NjQgbGFzdF92YWx1ZSwgaW50NjQgbG9n X2NudCwgYm9vbCBpc19jYWxsZWQpOwogc3RhdGljIGJvb2wgcGdfZGVjb2RlX2ZpbHRlcl9w cmVwYXJlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkJCSBUcmFuc2Fj dGlvbklkIHhpZCwKIAkJCQkJCQkJCSBjb25zdCBjaGFyICpnaWQpOwpAQCAtMTE2LDYgKzEy MSwxMCBAQCBzdGF0aWMgdm9pZCBwZ19kZWNvZGVfc3RyZWFtX21lc3NhZ2UoTG9naWNhbERl Y29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwg WExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKIAkJCQkJCQkJCSBib29sIHRyYW5zYWN0aW9uYWws IGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCQkJCQkJCSBTaXplIHN6LCBjb25zdCBjaGFyICpt ZXNzYWdlKTsKK3N0YXRpYyB2b2lkIHBnX2RlY29kZV9zdHJlYW1fc2VxdWVuY2UoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0 eG4sIFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLAorCQkJCQkJCQkJICBSZWxhdGlvbiByZWws IGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkJCSAgaW50NjQgbGFzdF92YWx1ZSwgaW50 NjQgbG9nX2NudCwgYm9vbCBpc19jYWxsZWQpOwogc3RhdGljIHZvaWQgcGdfZGVjb2RlX3N0 cmVhbV90cnVuY2F0ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCQkg IFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJCQkJCSAgaW50IG5yZWxhdGlvbnMsIFJl bGF0aW9uIHJlbGF0aW9uc1tdLApAQCAtMTQxLDYgKzE1MCw3IEBAIF9QR19vdXRwdXRfcGx1 Z2luX2luaXQoT3V0cHV0UGx1Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+ZmlsdGVyX2J5X29y aWdpbl9jYiA9IHBnX2RlY29kZV9maWx0ZXI7CiAJY2ItPnNodXRkb3duX2NiID0gcGdfZGVj b2RlX3NodXRkb3duOwogCWNiLT5tZXNzYWdlX2NiID0gcGdfZGVjb2RlX21lc3NhZ2U7CisJ Y2ItPnNlcXVlbmNlX2NiID0gcGdfZGVjb2RlX3NlcXVlbmNlOwogCWNiLT5maWx0ZXJfcHJl cGFyZV9jYiA9IHBnX2RlY29kZV9maWx0ZXJfcHJlcGFyZTsKIAljYi0+YmVnaW5fcHJlcGFy ZV9jYiA9IHBnX2RlY29kZV9iZWdpbl9wcmVwYXJlX3R4bjsKIAljYi0+cHJlcGFyZV9jYiA9 IHBnX2RlY29kZV9wcmVwYXJlX3R4bjsKQEAgLTE1Myw2ICsxNjMsNyBAQCBfUEdfb3V0cHV0 X3BsdWdpbl9pbml0KE91dHB1dFBsdWdpbkNhbGxiYWNrcyAqY2IpCiAJY2ItPnN0cmVhbV9j b21taXRfY2IgPSBwZ19kZWNvZGVfc3RyZWFtX2NvbW1pdDsKIAljYi0+c3RyZWFtX2NoYW5n ZV9jYiA9IHBnX2RlY29kZV9zdHJlYW1fY2hhbmdlOwogCWNiLT5zdHJlYW1fbWVzc2FnZV9j YiA9IHBnX2RlY29kZV9zdHJlYW1fbWVzc2FnZTsKKwljYi0+c3RyZWFtX3NlcXVlbmNlX2Ni ID0gcGdfZGVjb2RlX3N0cmVhbV9zZXF1ZW5jZTsKIAljYi0+c3RyZWFtX3RydW5jYXRlX2Ni ID0gcGdfZGVjb2RlX3N0cmVhbV90cnVuY2F0ZTsKIH0KIApAQCAtMTc1LDYgKzE4Niw5IEBA IHBnX2RlY29kZV9zdGFydHVwKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0 UGx1Z2luT3B0aW9ucyAqb3B0LAogCWRhdGEtPnNraXBfZW1wdHlfeGFjdHMgPSBmYWxzZTsK IAlkYXRhLT5vbmx5X2xvY2FsID0gZmFsc2U7CiAKKwkvKiBza2lwIHNlcXVlbmNlcyBieSBk ZWZhdWx0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAqLworCWRhdGEtPnNraXBfc2Vx dWVuY2VzID0gdHJ1ZTsKKwogCWN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlID0gZGF0YTsK IAogCW9wdC0+b3V0cHV0X3R5cGUgPSBPVVRQVVRfUExVR0lOX1RFWFRVQUxfT1VUUFVUOwpA QCAtMjY1LDYgKzI3OSwxNyBAQCBwZ19kZWNvZGVfc3RhcnR1cChMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAkJCQkJCSBlcnJtc2co ImNvdWxkIG5vdCBwYXJzZSB2YWx1ZSBcIiVzXCIgZm9yIHBhcmFtZXRlciBcIiVzXCIiLAog CQkJCQkJCQlzdHJWYWwoZWxlbS0+YXJnKSwgZWxlbS0+ZGVmbmFtZSkpKTsKIAkJfQorCQll bHNlIGlmIChzdHJjbXAoZWxlbS0+ZGVmbmFtZSwgInNraXAtc2VxdWVuY2VzIikgPT0gMCkK KwkJeworCisJCQlpZiAoZWxlbS0+YXJnID09IE5VTEwpCisJCQkJY29udGludWU7CS8qIHRy dWUgYnkgZGVmYXVsdCAqLworCQkJZWxzZSBpZiAoIXBhcnNlX2Jvb2woc3RyVmFsKGVsZW0t PmFyZyksICZkYXRhLT5za2lwX3NlcXVlbmNlcykpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkJ IGVycm1zZygiY291bGQgbm90IHBhcnNlIHZhbHVlIFwiJXNcIiBmb3IgcGFyYW1ldGVyIFwi JXNcIiIsCisJCQkJCQkJCXN0clZhbChlbGVtLT5hcmcpLCBlbGVtLT5kZWZuYW1lKSkpOwor CQl9CiAJCWVsc2UKIAkJewogCQkJZXJlcG9ydChFUlJPUiwKQEAgLTc0NCw2ICs3NjksMjgg QEAgcGdfZGVjb2RlX21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCU91 dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiB9CiAKK3N0YXRpYyB2b2lkCitwZ19kZWNv ZGVfc2VxdWVuY2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVy VFhOICp0eG4sCisJCQkJICAgWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sIFJlbGF0aW9uIHJl bCwKKwkJCQkgICBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJICAgaW50NjQgbGFzdF92YWx1 ZSwgaW50NjQgbG9nX2NudCwgYm9vbCBpc19jYWxsZWQpCit7CisJVGVzdERlY29kaW5nRGF0 YSAqZGF0YSA9IGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCisJLyogcmV0dXJuIGlm IHJlcXVlc3RlZCB0byBza2lwX3NlcXVlbmNlcyAqLworCWlmIChkYXRhLT5za2lwX3NlcXVl bmNlcykKKwkJcmV0dXJuOworCisJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1 ZSk7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjdHgtPm91dCwgInNlcXVlbmNlICIpOwor CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoY3R4LT5vdXQsCisJCQkJCQkgICBxdW90ZV9xdWFs aWZpZWRfaWRlbnRpZmllcihnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1lc3BhY2Uo UmVsYXRpb25HZXRSZWxpZChyZWwpKSksCisJCQkJCQkJCQkJCQkJICBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSk7CisJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgCSI6IHRy YW5zYWN0aW9uYWw6JWQgbGFzdF92YWx1ZTolenUgbG9nX2NudDolenUgaXNfY2FsbGVkOiVk IiwKKwkJCQkJIHRyYW5zYWN0aW9uYWwsIGxhc3RfdmFsdWUsIGxvZ19jbnQsIGlzX2NhbGxl ZCk7CisJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKK30KKwogc3RhdGljIHZvaWQK IHBnX2RlY29kZV9zdHJlYW1fc3RhcnQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAog CQkJCQkgICBSZW9yZGVyQnVmZmVyVFhOICp0eG4pCkBAIC05NDMsNiArOTkwLDI4IEBAIHBn X2RlY29kZV9zdHJlYW1fbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJ T3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIH0KIAorc3RhdGljIHZvaWQKK3BnX2Rl Y29kZV9zdHJlYW1fc2VxdWVuY2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkgIFhMb2dSZWNQdHIgc2VxdWVuY2VfbHNuLCBS ZWxhdGlvbiByZWwsCisJCQkJCQkgIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCSAgaW50 NjQgbGFzdF92YWx1ZSwgaW50NjQgbG9nX2NudCwgYm9vbCBpc19jYWxsZWQpCit7CisJVGVz dERlY29kaW5nRGF0YSAqZGF0YSA9IGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCisJ LyogcmV0dXJuIGlmIHJlcXVlc3RlZCB0byBza2lwX3NlcXVlbmNlcyAqLworCWlmIChkYXRh LT5za2lwX3NlcXVlbmNlcykKKwkJcmV0dXJuOworCisJT3V0cHV0UGx1Z2luUHJlcGFyZVdy aXRlKGN0eCwgdHJ1ZSk7CisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhjdHgtPm91dCwgInN0 cmVhbWluZyBzZXF1ZW5jZSAiKTsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGN0eC0+b3V0 LAorCQkJCQkJICAgcXVvdGVfcXVhbGlmaWVkX2lkZW50aWZpZXIoZ2V0X25hbWVzcGFjZV9u YW1lKGdldF9yZWxfbmFtZXNwYWNlKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkpLAorCQkJCQkJ CQkJCQkJCSAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpOworCWFwcGVuZFN0cmlu Z0luZm8oY3R4LT5vdXQsIAkiOiB0cmFuc2FjdGlvbmFsOiVkIGxhc3RfdmFsdWU6JXp1IGxv Z19jbnQ6JXp1IGlzX2NhbGxlZDolZCIsCisJCQkJCSB0cmFuc2FjdGlvbmFsLCBsYXN0X3Zh bHVlLCBsb2dfY250LCBpc19jYWxsZWQpOworCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1 ZSk7Cit9CisKIC8qCiAgKiBJbiBzdHJlYW1pbmcgbW9kZSwgd2UgZG9uJ3QgZGlzcGxheSB0 aGUgZGV0YWlsZWQgaW5mb3JtYXRpb24gb2YgVHJ1bmNhdGUuCiAgKiBTZWUgcGdfZGVjb2Rl X3N0cmVhbV9jaGFuZ2UuCi0tIAoyLjMxLjEKCg== --------------NQr9xOgNVjXIyBTcV0JPdvCk Content-Type: text/x-patch; charset=UTF-8; name="0004-tweak-test_decoding-tests-20211222.patch" Content-Disposition: attachment; filename="0004-tweak-test_decoding-tests-20211222.patch" Content-Transfer-Encoding: base64 RnJvbSBlZTBmNGZmZTI1ZDZjZWQ1N2NkMjgyMjYxNmNlYjEzMTQwN2FlYjVkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogV2VkLCAyMiBEZWMgMjAyMSAwMzo1MzoxMCArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNC82XSB0d2VhayB0ZXN0X2RlY29kaW5nIHRlc3RzCgotLS0KIGNvbnRy aWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9zZXF1ZW5jZS5vdXQgfCA0OCArKysrKysrKysr KysrLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAxOSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQv c2VxdWVuY2Uub3V0IGIvY29udHJpYi90ZXN0X2RlY29kaW5nL2V4cGVjdGVkL3NlcXVlbmNl Lm91dAppbmRleCBjM2MyYTE4YTM1Li45NzEzNzNlMDgzIDEwMDY0NAotLS0gYS9jb250cmli L3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvc2VxdWVuY2Uub3V0CisrKyBiL2NvbnRyaWIvdGVz dF9kZWNvZGluZy9leHBlY3RlZC9zZXF1ZW5jZS5vdXQKQEAgLTkzLDEzICs5MywxNiBAQCBT RUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lv bl9zbG90JywgTlVMTCwgTlVMTCwgJ2luYwogIEJFR0lOCiAgc2VxdWVuY2UgcHVibGljLnRl c3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6MSBsYXN0X3ZhbHVlOjEgbG9nX2NudDowIGlz X2NhbGxlZDowCiAgQ09NTUlUCi0gc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRy YW5zYWN0aW9uYWw6MCBsYXN0X3ZhbHVlOjMzIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MQorIHNl cXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOjAgbGFzdF92YWx1 ZToxIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MQorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVl bmNlOiB0cmFuc2FjdGlvbmFsOjAgbGFzdF92YWx1ZToyIGxvZ19jbnQ6MCBpc19jYWxsZWQ6 MQorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOjAgbGFz dF92YWx1ZTozIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MQorIHNlcXVlbmNlIHB1YmxpYy50ZXN0 X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOjAgbGFzdF92YWx1ZTo0IGxvZ19jbnQ6MCBpc19j YWxsZWQ6MQogIEJFR0lOCiAgc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5z YWN0aW9uYWw6MSBsYXN0X3ZhbHVlOjQgbG9nX2NudDowIGlzX2NhbGxlZDoxCiAgQ09NTUlU Ci0gc2VxdWVuY2UgcHVibGljLnRlc3Rfc2VxdWVuY2U6IHRyYW5zYWN0aW9uYWw6MCBsYXN0 X3ZhbHVlOjMzNCBsb2dfY250OjAgaXNfY2FsbGVkOjEKKyBzZXF1ZW5jZSBwdWJsaWMudGVz dF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6MTQgbG9nX2NudDowIGlz X2NhbGxlZDoxCiAgQkVHSU4KLSBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJh bnNhY3Rpb25hbDoxIGxhc3RfdmFsdWU6MTQgbG9nX2NudDozMiBpc19jYWxsZWQ6MQorIHNl cXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOjEgbGFzdF92YWx1 ZToxNCBsb2dfY250OjAgaXNfY2FsbGVkOjEKICBDT01NSVQKICBCRUdJTgogIHNlcXVlbmNl IHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOjEgbGFzdF92YWx1ZToxNCBs b2dfY250OjAgaXNfY2FsbGVkOjEKQEAgLTEwNywxNCArMTEwLDE0IEBAIFNFTEVDVCBkYXRh IEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBO VUxMLCBOVUxMLCAnaW5jCiAgQkVHSU4KICBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5j ZTogdHJhbnNhY3Rpb25hbDoxIGxhc3RfdmFsdWU6NDAwMCBsb2dfY250OjAgaXNfY2FsbGVk OjAKICBDT01NSVQKLSBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rp b25hbDowIGxhc3RfdmFsdWU6NDMyMCBsb2dfY250OjAgaXNfY2FsbGVkOjEKKyBzZXF1ZW5j ZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6NDAw MCBsb2dfY250OjAgaXNfY2FsbGVkOjEKICBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5j ZTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6MzUwMCBsb2dfY250OjAgaXNfY2FsbGVk OjEKLSBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxh c3RfdmFsdWU6MzgzMCBsb2dfY250OjAgaXNfY2FsbGVkOjEKKyBzZXF1ZW5jZSBwdWJsaWMu dGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6MzUxMCBsb2dfY250 OjAgaXNfY2FsbGVkOjEKICBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNh Y3Rpb25hbDowIGxhc3RfdmFsdWU6MzUwMCBsb2dfY250OjAgaXNfY2FsbGVkOjEKLSBzZXF1 ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6 MzgzMCBsb2dfY250OjAgaXNfY2FsbGVkOjEKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1 ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6MzUxMCBsb2dfY250OjAgaXNfY2Fs bGVkOjEKICBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDow IGxhc3RfdmFsdWU6MzUwMCBsb2dfY250OjAgaXNfY2FsbGVkOjAKLSBzZXF1ZW5jZSBwdWJs aWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDowIGxhc3RfdmFsdWU6MzgyMCBsb2df Y250OjAgaXNfY2FsbGVkOjEKLSgyNCByb3dzKQorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3Nl cXVlbmNlOiB0cmFuc2FjdGlvbmFsOjAgbGFzdF92YWx1ZTozNTAwIGxvZ19jbnQ6MCBpc19j YWxsZWQ6MQorKDI3IHJvd3MpCiAKIERST1AgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZTsKIC0t IHJvbGxiYWNrIG9uIHNlcXVlbmNlIGNyZWF0aW9uIGFuZCB1cGRhdGUKQEAgLTIyNiw3ICsy MjksNyBAQCBST0xMQkFDSzsKIFNFTEVDVCAqIGZyb20gdGVzdF90YWJsZV9hX3NlcTsKICBs YXN0X3ZhbHVlIHwgbG9nX2NudCB8IGlzX2NhbGxlZCAKIC0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0KLSAgICAgICAzMDAzIHwgICAgICAzMCB8IHQKKyAgICAgICAzMDAz IHwgICAgICAgMCB8IHQKICgxIHJvdykKIAogU0VMRUNUIG5leHR2YWwoJ3Rlc3RfdGFibGVf YV9zZXEnKTsKQEAgLTI0MiwxMiArMjQ1LDE3IEBAIFNFTEVDVCBkYXRhIEZST00gcGdfbG9n aWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAn aW5jCiAgQkVHSU4KICBzZXF1ZW5jZSBwdWJsaWMudGVzdF90YWJsZV9hX3NlcTogdHJhbnNh Y3Rpb25hbDoxIGxhc3RfdmFsdWU6MSBsb2dfY250OjAgaXNfY2FsbGVkOjAKICBDT01NSVQK LSBzZXF1ZW5jZSBwdWJsaWMudGVzdF90YWJsZV9hX3NlcTogdHJhbnNhY3Rpb25hbDowIGxh c3RfdmFsdWU6MzMgbG9nX2NudDowIGlzX2NhbGxlZDoxCisgc2VxdWVuY2UgcHVibGljLnRl c3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9uYWw6MCBsYXN0X3ZhbHVlOjEgbG9nX2NudDow IGlzX2NhbGxlZDoxCisgc2VxdWVuY2UgcHVibGljLnRlc3RfdGFibGVfYV9zZXE6IHRyYW5z YWN0aW9uYWw6MCBsYXN0X3ZhbHVlOjIgbG9nX2NudDowIGlzX2NhbGxlZDoxCisgc2VxdWVu Y2UgcHVibGljLnRlc3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9uYWw6MCBsYXN0X3ZhbHVl OjMgbG9nX2NudDowIGlzX2NhbGxlZDoxCiAgc2VxdWVuY2UgcHVibGljLnRlc3RfdGFibGVf YV9zZXE6IHRyYW5zYWN0aW9uYWw6MCBsYXN0X3ZhbHVlOjMwMDAgbG9nX2NudDowIGlzX2Nh bGxlZDoxCi0gc2VxdWVuY2UgcHVibGljLnRlc3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9u YWw6MCBsYXN0X3ZhbHVlOjMwMzMgbG9nX2NudDowIGlzX2NhbGxlZDoxCisgc2VxdWVuY2Ug cHVibGljLnRlc3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9uYWw6MCBsYXN0X3ZhbHVlOjMw MDEgbG9nX2NudDowIGlzX2NhbGxlZDoxCisgc2VxdWVuY2UgcHVibGljLnRlc3RfdGFibGVf YV9zZXE6IHRyYW5zYWN0aW9uYWw6MCBsYXN0X3ZhbHVlOjMwMDIgbG9nX2NudDowIGlzX2Nh bGxlZDoxCisgc2VxdWVuY2UgcHVibGljLnRlc3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9u YWw6MCBsYXN0X3ZhbHVlOjMwMDMgbG9nX2NudDowIGlzX2NhbGxlZDoxCisgc2VxdWVuY2Ug cHVibGljLnRlc3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9uYWw6MCBsYXN0X3ZhbHVlOjMw MDQgbG9nX2NudDowIGlzX2NhbGxlZDoxCiAgQkVHSU4KICBDT01NSVQKLSg4IHJvd3MpCiso MTMgcm93cykKIAogLS0gc2F2ZXBvaW50IHRlc3Qgb24gdGFibGUgd2l0aCBzZXJpYWwgY29s dW1uCiBCRUdJTjsKQEAgLTI2MCwxNSArMjY4LDE3IEBAIFJPTExCQUNLIFRPIFNBVkVQT0lO VCBhOwogRFJPUCBUQUJMRSB0ZXN0X3RhYmxlOwogQ09NTUlUOwogU0VMRUNUIGRhdGEgRlJP TSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEws IE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzAnLCAn c2tpcC1zZXF1ZW5jZXMnLCAnMCcpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog IEJFR0lOCiAgc2VxdWVuY2UgcHVibGljLnRlc3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9u YWw6MSBsYXN0X3ZhbHVlOjEgbG9nX2NudDowIGlzX2NhbGxlZDowCi0gc2VxdWVuY2UgcHVi bGljLnRlc3RfdGFibGVfYV9zZXE6IHRyYW5zYWN0aW9uYWw6MSBsYXN0X3ZhbHVlOjMzIGxv Z19jbnQ6MCBpc19jYWxsZWQ6MQorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3RhYmxlX2Ffc2Vx OiB0cmFuc2FjdGlvbmFsOjEgbGFzdF92YWx1ZToxIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MQog IHRhYmxlIHB1YmxpYy50ZXN0X3RhYmxlOiBJTlNFUlQ6IGFbaW50ZWdlcl06MSBiW2ludGVn ZXJdOjEwMAorIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3RhYmxlX2Ffc2VxOiB0cmFuc2FjdGlv bmFsOjEgbGFzdF92YWx1ZToyIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MQogIHRhYmxlIHB1Ymxp Yy50ZXN0X3RhYmxlOiBJTlNFUlQ6IGFbaW50ZWdlcl06MiBiW2ludGVnZXJdOjIwMAorIHNl cXVlbmNlIHB1YmxpYy50ZXN0X3RhYmxlX2Ffc2VxOiB0cmFuc2FjdGlvbmFsOjEgbGFzdF92 YWx1ZTozIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MQogIENPTU1JVAotKDYgcm93cykKKyg4IHJv d3MpCiAKIC0tIHNhdmVwb2ludCB0ZXN0IG9uIHRhYmxlIHdpdGggc2VyaWFsIGNvbHVtbgog QkVHSU47CkBAIC0zMDMsNyArMzEzLDcgQEAgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIGE7CiBT RUxFQ1QgKiBGUk9NIHRlc3Rfc2VxdWVuY2U7CiAgbGFzdF92YWx1ZSB8IGxvZ19jbnQgfCBp c19jYWxsZWQgCiAtLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tCi0gICAgICAg MzAwMSB8ICAgICAgMzIgfCB0CisgICAgICAgMzAwMSB8ICAgICAgIDAgfCB0CiAoMSByb3cp CiAKIERST1AgU0VRVUVOQ0UgdGVzdF9zZXF1ZW5jZTsKQEAgLTMxMyw5ICszMjMsOSBAQCBT RUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lv bl9zbG90JywgTlVMTCwgTlVMTCwgJ2luYwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICBCRUdJTgogIHNlcXVlbmNlIHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2Fj dGlvbmFsOjEgbGFzdF92YWx1ZToxIGxvZ19jbnQ6MCBpc19jYWxsZWQ6MAotIHNlcXVlbmNl IHB1YmxpYy50ZXN0X3NlcXVlbmNlOiB0cmFuc2FjdGlvbmFsOjEgbGFzdF92YWx1ZTozMyBs b2dfY250OjAgaXNfY2FsbGVkOjEKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTog dHJhbnNhY3Rpb25hbDoxIGxhc3RfdmFsdWU6MSBsb2dfY250OjAgaXNfY2FsbGVkOjEKICBz ZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDoxIGxhc3RfdmFs dWU6MzAwMCBsb2dfY250OjAgaXNfY2FsbGVkOjEKLSBzZXF1ZW5jZSBwdWJsaWMudGVzdF9z ZXF1ZW5jZTogdHJhbnNhY3Rpb25hbDoxIGxhc3RfdmFsdWU6MzAzMyBsb2dfY250OjAgaXNf Y2FsbGVkOjEKKyBzZXF1ZW5jZSBwdWJsaWMudGVzdF9zZXF1ZW5jZTogdHJhbnNhY3Rpb25h bDoxIGxhc3RfdmFsdWU6MzAwMSBsb2dfY250OjAgaXNfY2FsbGVkOjEKICBDT01NSVQKICg2 IHJvd3MpCiAKLS0gCjIuMzEuMQoK --------------NQr9xOgNVjXIyBTcV0JPdvCk Content-Type: text/x-patch; charset=UTF-8; name="0005-Add-support-for-decoding-sequences-to-built-20211222.patch" Content-Disposition: attachment; filename*0="0005-Add-support-for-decoding-sequences-to-built-20211222.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0ZWFiODc3Mzk3NjEzNzIzNGU5ZmVjNDZiMGJjMDFiNWZkZGU3ZTc5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQDJuZHF1YWRyYW50 LmNvbT4KRGF0ZTogVHVlLCAxNCBEZWMgMjAyMSAwMDoyOTowOSArMDEwMApTdWJqZWN0OiBb UEFUQ0ggNS82XSBBZGQgc3VwcG9ydCBmb3IgZGVjb2Rpbmcgc2VxdWVuY2VzIHRvIGJ1aWx0 LWluCiByZXBsaWNhdGlvbgoKLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAg ICAgICAgICAgICAgIHwgIDcxICsrKysKIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGlj YXRpb24uc2dtbCAgICAgfCAgMjQgKy0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2Ny aXB0aW9uLnNnbWwgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uYyAgICAgICAgfCAxNDkgKysrKysrKystCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwgICAgICAgIHwgIDEwICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3B1 YmxpY2F0aW9uY21kcy5jICAgICAgfCAzNTAgKysrKysrKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgICAgICAgICAgfCAgNzkgKysrKysKIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgfCAyNzIgKysrKysr KysrKysrKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYyAgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyAgICAgICAgICAgICAg IHwgICAxICsKIHNyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYyAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICB8 ICAzMiArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICB8 ICA1MiArKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMg fCAxMTggKysrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YyAgICB8ICA2MCArKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jIHwgIDg1ICsrKystCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j ICAgICAgICAgIHwgICA0ICstCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgICAgICAg ICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAg ICAgICAgICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24u aCAgICAgICAgfCAgMTQgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaCAgICAg ICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAg ICAgICAgIHwgICA2ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5o ICAgICAgfCAgMTkgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggICAg ICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICAg ICAgICB8ICAgOCArCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjdfc2VxdWVuY2VzLnBs ICAgIHwgMTk2ICsrKysrKysrKysrCiAyNiBmaWxlcyBjaGFuZ2VkLCAxNTM4IGluc2VydGlv bnMoKyksIDMyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyN19zZXF1ZW5jZXMucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDAz ZTI1MzdiMDcuLjBkZmViMzZmMDMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC05NTE0LDYgKzk1 MTQsMTEgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3Vu dCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgIDxlbnRyeT5wcmVw YXJlZCB0cmFuc2FjdGlvbnM8L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93Pgor ICAgICAgPGVudHJ5PjxsaW5rIGxpbmtlbmQ9InZpZXctcGctcHVibGljYXRpb24tc2VxdWVu Y2VzIj48c3RydWN0bmFtZT5wZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM8L3N0cnVjdG5hbWU+ PC9saW5rPjwvZW50cnk+CisgICAgICA8ZW50cnk+cHVibGljYXRpb25zIGFuZCB0aGVpciBh c3NvY2lhdGVkIHNlcXVlbmNlczwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+ CiAgICAgICA8ZW50cnk+PGxpbmsgbGlua2VuZD0idmlldy1wZy1wdWJsaWNhdGlvbi10YWJs ZXMiPjxzdHJ1Y3RuYW1lPnBnX3B1YmxpY2F0aW9uX3RhYmxlczwvc3RydWN0bmFtZT48L2xp bms+PC9lbnRyeT4KICAgICAgIDxlbnRyeT5wdWJsaWNhdGlvbnMgYW5kIHRoZWlyIGFzc29j aWF0ZWQgdGFibGVzPC9lbnRyeT4KQEAgLTExMzQ5LDYgKzExMzU0LDcyIEBAIFNFTEVDVCAq IEZST00gcGdfbG9ja3MgcGwgTEVGVCBKT0lOIHBnX3ByZXBhcmVkX3hhY3RzIHBweAogCiAg PC9zZWN0MT4KIAorIDxzZWN0MSBpZD0idmlldy1wZy1wdWJsaWNhdGlvbi1zZXF1ZW5jZXMi PgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcHVibGljYXRpb25fc2VxdWVuY2VzPC9zdHJ1 Y3RuYW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJ2aWV3LXBnLXB1YmxpY2F0 aW9uLXNlcXVlbmNlcyI+CisgICA8cHJpbWFyeT5wZ19wdWJsaWNhdGlvbl9zZXF1ZW5jZXM8 L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisgIDxwYXJhPgorICAgVGhlIHZpZXcgPHN0 cnVjdG5hbWU+cGdfcHVibGljYXRpb25fc2VxdWVuY2VzPC9zdHJ1Y3RuYW1lPiBwcm92aWRl cworICAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1hcHBpbmcgYmV0d2VlbiBwdWJsaWNhdGlv bnMgYW5kIHRoZSBzZXF1ZW5jZXMgdGhleQorICAgY29udGFpbi4gIFVubGlrZSB0aGUgdW5k ZXJseWluZyBjYXRhbG9nCisgICA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXB1YmxpY2F0 aW9uLXJlbCI+PHN0cnVjdG5hbWU+cGdfcHVibGljYXRpb25fcmVsPC9zdHJ1Y3RuYW1lPjwv bGluaz4sCisgICB0aGlzIHZpZXcgZXhwYW5kcworICAgcHVibGljYXRpb25zIGRlZmluZWQg YXMgPGxpdGVyYWw+Rk9SIEFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+LCBzbyBmb3Igc3VjaAor ICAgcHVibGljYXRpb25zIHRoZXJlIHdpbGwgYmUgYSByb3cgZm9yIGVhY2ggZWxpZ2libGUg c2VxdWVuY2UuCisgIDwvcGFyYT4KKworICA8dGFibGU+CisgICA8dGl0bGU+PHN0cnVjdG5h bWU+cGdfcHVibGljYXRpb25fc2VxdWVuY2VzPC9zdHJ1Y3RuYW1lPiBDb2x1bW5zPC90aXRs ZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KKyAgICAgICBDb2x1bW4gVHlwZQorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgRGVzY3JpcHRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorCisgICAgPHRib2R5PgorICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cHVibmFtZTwvc3RydWN0 ZmllbGQ+IDx0eXBlPm5hbWU8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlu a2VuZD0iY2F0YWxvZy1wZy1wdWJsaWNhdGlvbiI+PHN0cnVjdG5hbWU+cGdfcHVibGljYXRp b248L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+cHVibmFtZTwvc3RydWN0Zmll bGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgTmFtZSBvZiBwdWJs aWNhdGlvbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zY2hlbWFuYW1l PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgICAocmVmZXJlbmNlcyA8 bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLW5hbWVzcGFjZSI+PHN0cnVjdG5hbWU+cGdfbmFt ZXNwYWNlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm5zcG5hbWU8L3N0cnVj dGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2Yg c2NoZW1hIGNvbnRhaW5pbmcgc2VxdWVuY2UKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAg ICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFi bGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3Ry dWN0ZmllbGQ+c2VxdWVuY2VuYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlwZT4K KyAgICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWNsYXNzIj48 c3RydWN0bmFtZT5wZ19jbGFzczwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5y ZWxuYW1lPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAg ICAgICBOYW1lIG9mIHNlcXVlbmNlCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CisgICAgPC90Ym9keT4KKyAgIDwvdGdyb3VwPgorICA8L3RhYmxlPgorIDwvc2VjdDE+ CisKICA8c2VjdDEgaWQ9InZpZXctcGctcHVibGljYXRpb24tdGFibGVzIj4KICAgPHRpdGxl PjxzdHJ1Y3RuYW1lPnBnX3B1YmxpY2F0aW9uX3RhYmxlczwvc3RydWN0bmFtZT48L3RpdGxl PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXggYmI0 ZWY1ZTVlMi4uNGQxNjZhZDNmOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRl cl9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGlj YXRpb24uc2dtbApAQCAtMzEsNyArMzEsOSBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8 cgogPHBocmFzZT53aGVyZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGlj YXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAg VEFCTEUgWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25h bWU8L3JlcGxhY2VhYmxlPiBbICogXSBbLCAuLi4gXQorICAgIFNFUVVFTkNFIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXF1ZW5jZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAq IF0gWywgLi4uIF0KICAgICBBTEwgVEFCTEVTIElOIFNDSEVNQSB7IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5zY2hlbWFfbmFtZTwvcmVwbGFjZWFibGU+IHwgQ1VSUkVOVF9T Q0hFTUEgfSBbLCAuLi4gXQorICAgIEFMTCBTRVFVRU5DRSBJTiBTQ0hFTUEgeyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2NoZW1hX25hbWU8L3JlcGxhY2VhYmxlPiB8IENV UlJFTlRfU0NIRU1BIH0gWywgLi4uIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNpc2Rp dj4KIApAQCAtNTYsNyArNTgsMTggQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAg PC9wYXJhPgogCiAgIDxwYXJhPgotICAgVGhlIGZvdXJ0aCB2YXJpYW50IG9mIHRoaXMgY29t bWFuZCBsaXN0ZWQgaW4gdGhlIHN5bm9wc2lzIGNhbiBjaGFuZ2UKKyAgIFRoZSBuZXh0IHRo cmVlIHZhcmlhbnRzIGNoYW5nZSB3aGljaCBzZXF1ZW5jZXMgYXJlIHBhcnQgb2YgdGhlIHB1 YmxpY2F0aW9uLgorICAgVGhlIDxsaXRlcmFsPlNFVCBTRVFVRU5DRTwvbGl0ZXJhbD4gY2xh dXNlIHdpbGwgcmVwbGFjZSB0aGUgbGlzdCBvZiBzZXF1ZW5jZXMKKyAgIGluIHRoZSBwdWJs aWNhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgb25lLiAgVGhlIDxsaXRlcmFsPkFERCBTRVFV RU5DRTwvbGl0ZXJhbD4KKyAgIGFuZCA8bGl0ZXJhbD5EUk9QIFNFUVVFTkNFPC9saXRlcmFs PiBjbGF1c2VzIHdpbGwgYWRkIGFuZCByZW1vdmUgb25lIG9yIG1vcmUKKyAgIHNlcXVlbmNl cyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4gIE5vdGUgdGhhdCBhZGRpbmcgc2VxdWVuY2VzIHRv IGEgcHVibGljYXRpb24KKyAgIHRoYXQgaXMgYWxyZWFkeSBzdWJzY3JpYmVkIHRvIHdpbGwg cmVxdWlyZSBhIDxsaXRlcmFsPkFMVEVSIFNVQlNDUklQVElPTgorICAgLi4uIFJFRlJFU0gg UFVCTElDQVRJT048L2xpdGVyYWw+IGFjdGlvbiBvbiB0aGUgc3Vic2NyaWJpbmcgc2lkZSBp biBvcmRlcgorICAgdG8gYmVjb21lIGVmZmVjdGl2ZS4KKyAgPC9wYXJhPgorCisgIDxwYXJh PgorICAgVGhlIHNldmVudGggdmFyaWFudCBvZiB0aGlzIGNvbW1hbmQgbGlzdGVkIGluIHRo ZSBzeW5vcHNpcyBjYW4gY2hhbmdlCiAgICBhbGwgb2YgdGhlIHB1YmxpY2F0aW9uIHByb3Bl cnRpZXMgc3BlY2lmaWVkIGluCiAgICA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGlj YXRpb24iLz4uICBQcm9wZXJ0aWVzIG5vdCBtZW50aW9uZWQgaW4gdGhlCiAgICBjb21tYW5k IHJldGFpbiB0aGVpciBwcmV2aW91cyBzZXR0aW5ncy4KQEAgLTEyMyw2ICsxMzYsMTUgQEAg QUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8 L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJs aXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNlcXVlbmNlX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgTmFtZSBvZiBhbiBleGlzdGlu ZyBzZXF1ZW5jZS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxp c3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5TRVQg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fcGFyYW1ldGVy PC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVl PC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICk8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxsaXN0 aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9u LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4 IDBiMDI3Y2MzNDYuLjhmMjhjZjAzZjQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9z dWJzY3JpcHRpb24uc2dtbApAQCAtMTQ3LDcgKzE0Nyw3IEBAIEFMVEVSIFNVQlNDUklQVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJF TkFNRSBUTyA8CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIEZldGNoIG1p c3NpbmcgdGFibGUgaW5mb3JtYXRpb24gZnJvbSBwdWJsaXNoZXIuICBUaGlzIHdpbGwgc3Rh cnQKLSAgICAgIHJlcGxpY2F0aW9uIG9mIHRhYmxlcyB0aGF0IHdlcmUgYWRkZWQgdG8gdGhl IHN1YnNjcmliZWQtdG8gcHVibGljYXRpb25zCisgICAgICByZXBsaWNhdGlvbiBvZiB0YWJs ZXMgYW5kIHNlcXVlbmNlcyB0aGF0IHdlcmUgYWRkZWQgdG8gdGhlIHN1YnNjcmliZWQtdG8g cHVibGljYXRpb25zCiAgICAgICBzaW5jZSA8Y29tbWFuZD5DUkVBVEUgU1VCU0NSSVBUSU9O PC9jb21tYW5kPiBvcgogICAgICAgdGhlIGxhc3QgaW52b2NhdGlvbiBvZiA8Y29tbWFuZD5S RUZSRVNIIFBVQkxJQ0FUSU9OPC9jb21tYW5kPi4KICAgICAgPC9wYXJhPgpAQCAtMTY0LDcg KzE2NCw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8CiAgICAgICAgICAgU3BlY2lm aWVzIHdoZXRoZXIgdG8gY29weSBwcmUtZXhpc3RpbmcgZGF0YSBpbiB0aGUgcHVibGljYXRp b25zCiAgICAgICAgICAgdGhhdCBhcmUgYmVpbmcgc3Vic2NyaWJlZCB0byB3aGVuIHRoZSBy ZXBsaWNhdGlvbiBzdGFydHMuCiAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+ dHJ1ZTwvbGl0ZXJhbD4uICAoUHJldmlvdXNseS1zdWJzY3JpYmVkCi0gICAgICAgICAgdGFi bGVzIGFyZSBub3QgY29waWVkLikKKyAgICAgICAgICB0YWJsZXMgYW5kIHNlcXVlbmNlcyBh cmUgbm90IGNvcGllZC4pCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+ CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0 aW9uLmMKaW5kZXggNjJmMTBiY2JkMi4uNjg0NGFjNjE4OSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvcGdfcHVibGljYXRpb24uYwpAQCAtNTQsNyArNTQsOCBAQCBjaGVja19wdWJsaWNhdGlv bl9hZGRfcmVsYXRpb24oUmVsYXRpb24gdGFyZ2V0cmVsKQogewogCS8qIE11c3QgYmUgYSBy ZWd1bGFyIG9yIHBhcnRpdGlvbmVkIHRhYmxlICovCiAJaWYgKFJlbGF0aW9uR2V0Rm9ybSh0 YXJnZXRyZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKLQkJUmVsYXRpb25H ZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJM RSkKKwkJUmVsYXRpb25HZXRGb3JtKHRhcmdldHJlbCktPnJlbGtpbmQgIT0gUkVMS0lORF9Q QVJUSVRJT05FRF9UQUJMRSAmJgorCQlSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVs a2luZCAhPSBSRUxLSU5EX1NFUVVFTkNFKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coImNh bm5vdCBhZGQgcmVsYXRpb24gXCIlc1wiIHRvIHB1YmxpY2F0aW9uIiwKQEAgLTEzMSw3ICsx MzIsOCBAQCBzdGF0aWMgYm9vbAogaXNfcHVibGlzaGFibGVfY2xhc3MoT2lkIHJlbGlkLCBG b3JtX3BnX2NsYXNzIHJlbHR1cGxlKQogewogCXJldHVybiAocmVsdHVwbGUtPnJlbGtpbmQg PT0gUkVMS0lORF9SRUxBVElPTiB8fAotCQkJcmVsdHVwbGUtPnJlbGtpbmQgPT0gUkVMS0lO RF9QQVJUSVRJT05FRF9UQUJMRSkgJiYKKwkJCXJlbHR1cGxlLT5yZWxraW5kID09IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUgfHwKKwkJCXJlbHR1cGxlLT5yZWxraW5kID09IFJFTEtJ TkRfU0VRVUVOQ0UpICYmCiAJCSFJc0NhdGFsb2dSZWxhdGlvbk9pZChyZWxpZCkgJiYKIAkJ cmVsdHVwbGUtPnJlbHBlcnNpc3RlbmNlID09IFJFTFBFUlNJU1RFTkNFX1BFUk1BTkVOVCAm JgogCQlyZWxpZCA+PSBGaXJzdE5vcm1hbE9iamVjdElkOwpAQCAtNTAyLDYgKzUwNCwxMSBA QCBHZXRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9w dCBwdWJfcGFydG9wdCkKIAkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVsOwogCiAJ CXB1YnJlbCA9IChGb3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCk7CisK KwkJLyogc2tpcCBzZXF1ZW5jZXMgaGVyZSAqLworCQlpZiAoZ2V0X3JlbF9yZWxraW5kKHB1 YnJlbC0+cHJyZWxpZCkgPT0gUkVMS0lORF9TRVFVRU5DRSkKKwkJCWNvbnRpbnVlOworCiAJ CXJlc3VsdCA9IEdldFB1YlBhcnRpdGlvbk9wdGlvblJlbGF0aW9ucyhyZXN1bHQsIHB1Yl9w YXJ0b3B0LAogCQkJCQkJCQkJCQkJcHVicmVsLT5wcnJlbGlkKTsKIAl9CkBAIC01MTYsNiAr NTIzLDQ5IEBAIEdldFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRp b25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBH ZXRzIGxpc3Qgb2YgcmVsYXRpb24gb2lkcyBmb3IgYSBwdWJsaWNhdGlvbiAoc2VxdWVuY2Vz IG9ubHkpLgorICoKKyAqIFRoaXMgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3Igbm9ybWFsIHB1 YmxpY2F0aW9ucywgdGhlIEZPUiBBTEwgVEFCTEVTCisgKiBzaG91bGQgdXNlIEdldEFsbFNl cXVlbmNlc1B1YmxpY2F0aW9uUmVsYXRpb25zKCkuCisgKi8KK0xpc3QgKgorR2V0UHVibGlj YXRpb25TZXF1ZW5jZVJlbGF0aW9ucyhPaWQgcHViaWQpCit7CisJTGlzdAkgICAqcmVzdWx0 OworCVJlbGF0aW9uCXB1YnJlbHNyZWw7CisJU2NhbktleURhdGEgc2NhbmtleTsKKwlTeXNT Y2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXA7CisKKwkvKiBGaW5kIGFsbCBwdWJsaWNh dGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWxhdGlvbi4gKi8KKwlwdWJyZWxzcmVsID0g dGFibGVfb3BlbihQdWJsaWNhdGlvblJlbFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwlTY2FuS2V5SW5pdCgmc2NhbmtleSwKKwkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3Jl bF9wcnB1YmlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlP YmplY3RJZEdldERhdHVtKHB1YmlkKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2Fu KHB1YnJlbHNyZWwsIFB1YmxpY2F0aW9uUmVsUHJyZWxpZFBycHViaWRJbmRleElkLAorCQkJ CQkJCSAgdHJ1ZSwgTlVMTCwgMSwgJnNjYW5rZXkpOworCisJcmVzdWx0ID0gTklMOworCXdo aWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQor CXsKKwkJRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwgcHVicmVsOworCisJCXB1YnJlbCA9IChG b3JtX3BnX3B1YmxpY2F0aW9uX3JlbCkgR0VUU1RSVUNUKHR1cCk7CisKKwkJaWYgKGdldF9y ZWxfcmVsa2luZChwdWJyZWwtPnBycmVsaWQpID09IFJFTEtJTkRfU0VRVUVOQ0UpCisJCQly ZXN1bHQgPSBsYXBwZW5kX29pZChyZXN1bHQsIHB1YnJlbC0+cHJyZWxpZCk7CisJfQorCisJ c3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwl0YWJsZV9jbG9zZShwdWJyZWxzcmVsLCBBY2Nl c3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIEdldHMgbGlz dCBvZiBwdWJsaWNhdGlvbiBvaWRzIGZvciBwdWJsaWNhdGlvbnMgbWFya2VkIGFzIEZPUiBB TEwgVEFCTEVTLgogICovCkBAIC03NjEsNiArODExLDQ2IEBAIEdldEFsbFNjaGVtYVB1Ymxp Y2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0 b3B0KQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBHZXRzIGxpc3Qgb2YgYWxsIHJl bGF0aW9uIHB1Ymxpc2hlZCBieSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbihzKS4KKyAq CisgKiBJZiB0aGUgcHVibGljYXRpb24gcHVibGlzaGVzIHBhcnRpdGlvbiBjaGFuZ2VzIHZp YSB0aGVpciByZXNwZWN0aXZlIHJvb3QKKyAqIHBhcnRpdGlvbmVkIHRhYmxlcywgd2UgbXVz dCBleGNsdWRlIHBhcnRpdGlvbnMgaW4gZmF2b3Igb2YgaW5jbHVkaW5nIHRoZQorICogcm9v dCBwYXJ0aXRpb25lZCB0YWJsZXMuCisgKi8KK0xpc3QgKgorR2V0QWxsU2VxdWVuY2VzUHVi bGljYXRpb25SZWxhdGlvbnModm9pZCkKK3sKKwlSZWxhdGlvbgljbGFzc1JlbDsKKwlTY2Fu S2V5RGF0YSBrZXlbMV07CisJVGFibGVTY2FuRGVzYyBzY2FuOworCUhlYXBUdXBsZQl0dXBs ZTsKKwlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CisKKwljbGFzc1JlbCA9IHRhYmxlX29wZW4o UmVsYXRpb25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJU2NhbktleUluaXQo JmtleVswXSwKKwkJCQlBbnVtX3BnX2NsYXNzX3JlbGtpbmQsCisJCQkJQlRFcXVhbFN0cmF0 ZWd5TnVtYmVyLCBGX0NIQVJFUSwKKwkJCQlDaGFyR2V0RGF0dW0oUkVMS0lORF9TRVFVRU5D RSkpOworCisJc2NhbiA9IHRhYmxlX2JlZ2luc2Nhbl9jYXRhbG9nKGNsYXNzUmVsLCAxLCBr ZXkpOworCisJd2hpbGUgKCh0dXBsZSA9IGhlYXBfZ2V0bmV4dChzY2FuLCBGb3J3YXJkU2Nh bkRpcmVjdGlvbikpICE9IE5VTEwpCisJeworCQlGb3JtX3BnX2NsYXNzIHJlbEZvcm0gPSAo Rm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxlKTsKKwkJT2lkCQkJcmVsaWQgPSByZWxG b3JtLT5vaWQ7CisKKwkJaWYgKGlzX3B1Ymxpc2hhYmxlX2NsYXNzKHJlbGlkLCByZWxGb3Jt KSkKKwkJCXJlc3VsdCA9IGxhcHBlbmRfb2lkKHJlc3VsdCwgcmVsaWQpOworCX0KKworCXRh YmxlX2VuZHNjYW4oc2Nhbik7CisKKwl0YWJsZV9jbG9zZShjbGFzc1JlbCwgQWNjZXNzU2hh cmVMb2NrKTsKKwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgogICogR2V0IHB1YmxpY2F0aW9u IHVzaW5nIG9pZAogICoKQEAgLTc4MywxMCArODczLDEyIEBAIEdldFB1YmxpY2F0aW9uKE9p ZCBwdWJpZCkKIAlwdWItPm9pZCA9IHB1YmlkOwogCXB1Yi0+bmFtZSA9IHBzdHJkdXAoTmFt ZVN0cihwdWJmb3JtLT5wdWJuYW1lKSk7CiAJcHViLT5hbGx0YWJsZXMgPSBwdWJmb3JtLT5w dWJhbGx0YWJsZXM7CisJcHViLT5hbGxzZXF1ZW5jZXMgPSBwdWJmb3JtLT5wdWJhbGxzZXF1 ZW5jZXM7CiAJcHViLT5wdWJhY3Rpb25zLnB1Ymluc2VydCA9IHB1YmZvcm0tPnB1Ymluc2Vy dDsKIAlwdWItPnB1YmFjdGlvbnMucHVidXBkYXRlID0gcHViZm9ybS0+cHVidXBkYXRlOwog CXB1Yi0+cHViYWN0aW9ucy5wdWJkZWxldGUgPSBwdWJmb3JtLT5wdWJkZWxldGU7CiAJcHVi LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0gcHViZm9ybS0+cHVidHJ1bmNhdGU7CisJcHVi LT5wdWJhY3Rpb25zLnB1YnNlcXVlbmNlID0gcHViZm9ybS0+cHVic2VxdWVuY2U7CiAJcHVi LT5wdWJ2aWFyb290ID0gcHViZm9ybS0+cHVidmlhcm9vdDsKIAogCVJlbGVhc2VTeXNDYWNo ZSh0dXApOwpAQCAtOTM2LDMgKzEwMjgsNTYgQEAgcGdfZ2V0X3B1YmxpY2F0aW9uX3RhYmxl cyhQR19GVU5DVElPTl9BUkdTKQogCiAJU1JGX1JFVFVSTl9ET05FKGZ1bmNjdHgpOwogfQor CisvKgorICogUmV0dXJucyBPaWRzIG9mIHNlcXVlbmNlcyBpbiBhIHB1YmxpY2F0aW9uLgor ICovCitEYXR1bQorcGdfZ2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNlcyhQR19GVU5DVElPTl9B UkdTKQoreworCUZ1bmNDYWxsQ29udGV4dCAqZnVuY2N0eDsKKwljaGFyCSAgICpwdWJuYW1l ID0gdGV4dF90b19jc3RyaW5nKFBHX0dFVEFSR19URVhUX1BQKDApKTsKKwlQdWJsaWNhdGlv biAqcHVibGljYXRpb247CisJTGlzdAkgICAqc2VxdWVuY2VzOworCisJLyogc3R1ZmYgZG9u ZSBvbmx5IG9uIHRoZSBmaXJzdCBjYWxsIG9mIHRoZSBmdW5jdGlvbiAqLworCWlmIChTUkZf SVNfRklSU1RDQUxMKCkpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwkJ LyogY3JlYXRlIGEgZnVuY3Rpb24gY29udGV4dCBmb3IgY3Jvc3MtY2FsbCBwZXJzaXN0ZW5j ZSAqLworCQlmdW5jY3R4ID0gU1JGX0ZJUlNUQ0FMTF9JTklUKCk7CisKKwkJLyogc3dpdGNo IHRvIG1lbW9yeSBjb250ZXh0IGFwcHJvcHJpYXRlIGZvciBtdWx0aXBsZSBmdW5jdGlvbiBj YWxscyAqLworCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGZ1bmNjdHgt Pm11bHRpX2NhbGxfbWVtb3J5X2N0eCk7CisKKwkJcHVibGljYXRpb24gPSBHZXRQdWJsaWNh dGlvbkJ5TmFtZShwdWJuYW1lLCBmYWxzZSk7CisKKwkJLyoKKwkJICogUHVibGljYXRpb25z IHN1cHBvcnQgcGFydGl0aW9uZWQgdGFibGVzLCBhbHRob3VnaCBhbGwgY2hhbmdlcyBhcmUK KwkJICogcmVwbGljYXRlZCB1c2luZyBsZWFmIHBhcnRpdGlvbiBpZGVudGl0eSBhbmQgc2No ZW1hLCBzbyB3ZSBvbmx5CisJCSAqIG5lZWQgdGhvc2UuCisJCSAqLworCQlpZiAocHVibGlj YXRpb24tPmFsbHNlcXVlbmNlcykKKwkJCXNlcXVlbmNlcyA9IEdldEFsbFNlcXVlbmNlc1B1 YmxpY2F0aW9uUmVsYXRpb25zKCk7CisJCWVsc2UKKwkJCXNlcXVlbmNlcyA9IEdldFB1Ymxp Y2F0aW9uU2VxdWVuY2VSZWxhdGlvbnMocHVibGljYXRpb24tPm9pZCk7CisKKwkJZnVuY2N0 eC0+dXNlcl9mY3R4ID0gKHZvaWQgKikgc2VxdWVuY2VzOworCisJCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisKKwkvKiBzdHVmZiBkb25lIG9uIGV2ZXJ5IGNh bGwgb2YgdGhlIGZ1bmN0aW9uICovCisJZnVuY2N0eCA9IFNSRl9QRVJDQUxMX1NFVFVQKCk7 CisJc2VxdWVuY2VzID0gKExpc3QgKikgZnVuY2N0eC0+dXNlcl9mY3R4OworCisJaWYgKGZ1 bmNjdHgtPmNhbGxfY250ciA8IGxpc3RfbGVuZ3RoKHNlcXVlbmNlcykpCisJeworCQlPaWQJ CQlyZWxpZCA9IGxpc3RfbnRoX29pZChzZXF1ZW5jZXMsIGZ1bmNjdHgtPmNhbGxfY250cik7 CisKKwkJU1JGX1JFVFVSTl9ORVhUKGZ1bmNjdHgsIE9iamVjdElkR2V0RGF0dW0ocmVsaWQp KTsKKwl9CisKKwlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7Cit9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggNjFiNTE1Y2RiOC4uMGRmOTFkN2E1YSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMzcyLDYgKzM3MiwxNiBA QCBDUkVBVEUgVklFVyBwZ19wdWJsaWNhdGlvbl90YWJsZXMgQVMKICAgICAgICAgIHBnX2Ns YXNzIEMgSk9JTiBwZ19uYW1lc3BhY2UgTiBPTiAoTi5vaWQgPSBDLnJlbG5hbWVzcGFjZSkK ICAgICBXSEVSRSBDLm9pZCA9IEdQVC5yZWxpZDsKIAorQ1JFQVRFIFZJRVcgcGdfcHVibGlj YXRpb25fc2VxdWVuY2VzIEFTCisgICAgU0VMRUNUCisgICAgICAgIFAucHVibmFtZSBBUyBw dWJuYW1lLAorICAgICAgICBOLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKKyAgICAgICAgQy5y ZWxuYW1lIEFTIHNlcXVlbmNlbmFtZQorICAgIEZST00gcGdfcHVibGljYXRpb24gUCwKKyAg ICAgICAgIExBVEVSQUwgcGdfZ2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNlcyhQLnB1Ym5hbWUp IEdQVCwKKyAgICAgICAgIHBnX2NsYXNzIEMgSk9JTiBwZ19uYW1lc3BhY2UgTiBPTiAoTi5v aWQgPSBDLnJlbG5hbWVzcGFjZSkKKyAgICBXSEVSRSBDLm9pZCA9IEdQVC5yZWxpZDsKKwog Q1JFQVRFIFZJRVcgcGdfbG9ja3MgQVMKICAgICBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tfc3Rh dHVzKCkgQVMgTDsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGlj YXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpp bmRleCA0MDRiYjVkMGM4Li4yYzE4M2Q2M2Y3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNz L2dlbmFtLmgiCiAjaW5jbHVkZSAiYWNjZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUg ImFjY2Vzcy9yZWxhdGlvbi5oIgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1 ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9jYXRhbG9nLmgiCkBAIC01 OSw2ICs2MCwxMiBAQCBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFNjaGVtYXMoT2lkIHB1 YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIGlmX25vdF9leGlzdHMsCiAJCQkJCQkJCSAgQWx0 ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwogc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9w U2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vayk7CiAK K3N0YXRpYyBMaXN0ICpPcGVuU2VxdWVuY2VMaXN0KExpc3QgKnNlcXVlbmNlcyk7CitzdGF0 aWMgdm9pZCBDbG9zZVNlcXVlbmNlTGlzdChMaXN0ICpyZWxzKTsKK3N0YXRpYyB2b2lkIFB1 YmxpY2F0aW9uQWRkU2VxdWVuY2VzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9u b3RfZXhpc3RzLAorCQkJCQkJCQkgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOworc3Rh dGljIHZvaWQgUHVibGljYXRpb25Ecm9wU2VxdWVuY2VzKE9pZCBwdWJpZCwgTGlzdCAqcmVs cywgYm9vbCBtaXNzaW5nX29rKTsKKwogc3RhdGljIHZvaWQKIHBhcnNlX3B1YmxpY2F0aW9u X29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICBMaXN0ICpvcHRpb25zLApA QCAtNzcsNiArODQsNyBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAlwdWJhY3Rpb25zLT5wdWJ1cGRhdGUgPSB0cnVlOwogCXB1YmFjdGlvbnMt PnB1YmRlbGV0ZSA9IHRydWU7CiAJcHViYWN0aW9ucy0+cHVidHJ1bmNhdGUgPSB0cnVlOwor CXB1YmFjdGlvbnMtPnB1YnNlcXVlbmNlID0gdHJ1ZTsKIAkqcHVibGlzaF92aWFfcGFydGl0 aW9uX3Jvb3QgPSBmYWxzZTsKIAogCS8qIFBhcnNlIG9wdGlvbnMgKi8KQEAgLTEwMSw2ICsx MDksNyBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwK IAkJCXB1YmFjdGlvbnMtPnB1YnVwZGF0ZSA9IGZhbHNlOwogCQkJcHViYWN0aW9ucy0+cHVi ZGVsZXRlID0gZmFsc2U7CiAJCQlwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSA9IGZhbHNlOwor CQkJcHViYWN0aW9ucy0+cHVic2VxdWVuY2UgPSBmYWxzZTsKIAogCQkJKnB1Ymxpc2hfZ2l2 ZW4gPSB0cnVlOwogCQkJcHVibGlzaCA9IGRlZkdldFN0cmluZyhkZWZlbCk7CkBAIC0xMjMs NiArMTMyLDggQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCQkJCXB1YmFjdGlvbnMtPnB1YmRlbGV0ZSA9IHRydWU7CiAJCQkJZWxzZSBpZiAo c3RyY21wKHB1Ymxpc2hfb3B0LCAidHJ1bmNhdGUiKSA9PSAwKQogCQkJCQlwdWJhY3Rpb25z LT5wdWJ0cnVuY2F0ZSA9IHRydWU7CisJCQkJZWxzZSBpZiAoc3RyY21wKHB1Ymxpc2hfb3B0 LCAic2VxdWVuY2UiKSA9PSAwKQorCQkJCQlwdWJhY3Rpb25zLT5wdWJzZXF1ZW5jZSA9IHRy dWU7CiAJCQkJZWxzZQogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTE0OSw3ICsxNjAsOSBAQCBwYXJzZV9wdWJsaWNh dGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKICAqLwogc3RhdGljIHZvaWQKIE9i amVjdHNJblB1YmxpY2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VT dGF0ZSAqcHN0YXRlLAotCQkJCQkJICAgTGlzdCAqKnJlbHMsIExpc3QgKipzY2hlbWFzKQor CQkJCQkJICAgTGlzdCAqKnRhYmxlcywgTGlzdCAqKnNlcXVlbmNlcywKKwkJCQkJCSAgIExp c3QgKip0YWJsZXNfc2NoZW1hcywgTGlzdCAqKnNlcXVlbmNlc19zY2hlbWFzLAorCQkJCQkJ ICAgTGlzdCAqKnNjaGVtYXMpCiB7CiAJTGlzdENlbGwgICAqY2VsbDsKIAlQdWJsaWNhdGlv bk9ialNwZWMgKnB1Ym9iajsKQEAgLTE2NywxMiArMTgwLDIzIEBAIE9iamVjdHNJblB1Ymxp Y2F0aW9uVG9PaWRzKExpc3QgKnB1Ym9ianNwZWNfbGlzdCwgUGFyc2VTdGF0ZSAqcHN0YXRl LAogCQlzd2l0Y2ggKHB1Ym9iai0+cHVib2JqdHlwZSkKIAkJewogCQkJY2FzZSBQVUJMSUNB VElPTk9CSl9UQUJMRToKLQkJCQkqcmVscyA9IGxhcHBlbmQoKnJlbHMsIHB1Ym9iai0+cHVi dGFibGUpOworCQkJCSp0YWJsZXMgPSBsYXBwZW5kKCp0YWJsZXMsIHB1Ym9iai0+cHVidGFi bGUpOworCQkJCWJyZWFrOworCQkJY2FzZSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRToKKwkJ CQkqc2VxdWVuY2VzID0gbGFwcGVuZCgqc2VxdWVuY2VzLCBwdWJvYmotPnB1YnRhYmxlKTsK IAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJT05PQkpfVEFCTEVfSU5fU0NIRU1BOgog CQkJCXNjaGVtYWlkID0gZ2V0X25hbWVzcGFjZV9vaWQocHVib2JqLT5uYW1lLCBmYWxzZSk7 CiAKIAkJCQkvKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNlciBzcGVjaWZpZXMgInNj aDEsIHNjaDEiICovCisJCQkJKnRhYmxlc19zY2hlbWFzID0gbGlzdF9hcHBlbmRfdW5pcXVl X29pZCgqdGFibGVzX3NjaGVtYXMsIHNjaGVtYWlkKTsKKwkJCQkqc2NoZW1hcyA9IGxpc3Rf YXBwZW5kX3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNjaGVtYWlkKTsKKwkJCQlicmVhazsKKwkJ CWNhc2UgUFVCTElDQVRJT05PQkpfU0VRVUVOQ0VfSU5fU0NIRU1BOgorCQkJCXNjaGVtYWlk ID0gZ2V0X25hbWVzcGFjZV9vaWQocHVib2JqLT5uYW1lLCBmYWxzZSk7CisKKwkJCQkvKiBG aWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNlciBzcGVjaWZpZXMgInNjaDEsIHNjaDEiICov CisJCQkJKnNlcXVlbmNlc19zY2hlbWFzID0gbGlzdF9hcHBlbmRfdW5pcXVlX29pZCgqc2Vx dWVuY2VzX3NjaGVtYXMsIHNjaGVtYWlkKTsKIAkJCQkqc2NoZW1hcyA9IGxpc3RfYXBwZW5k X3VuaXF1ZV9vaWQoKnNjaGVtYXMsIHNjaGVtYWlkKTsKIAkJCQlicmVhazsKIAkJCWNhc2Ug UFVCTElDQVRJT05PQkpfVEFCTEVfSU5fQ1VSX1NDSEVNQToKQEAgLTE4Niw2ICsyMTAsMjEg QEAgT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQ YXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJbGlzdF9mcmVlKHNlYXJjaF9wYXRoKTsKIAogCQkJ CS8qIEZpbHRlciBvdXQgZHVwbGljYXRlcyBpZiB1c2VyIHNwZWNpZmllcyAic2NoMSwgc2No MSIgKi8KKwkJCQkqdGFibGVzX3NjaGVtYXMgPSBsaXN0X2FwcGVuZF91bmlxdWVfb2lkKCp0 YWJsZXNfc2NoZW1hcywgc2NoZW1haWQpOworCQkJCSpzY2hlbWFzID0gbGlzdF9hcHBlbmRf dW5pcXVlX29pZCgqc2NoZW1hcywgc2NoZW1haWQpOworCQkJCWJyZWFrOworCQkJY2FzZSBQ VUJMSUNBVElPTk9CSl9TRVFVRU5DRV9JTl9DVVJfU0NIRU1BOgorCQkJCXNlYXJjaF9wYXRo ID0gZmV0Y2hfc2VhcmNoX3BhdGgoZmFsc2UpOworCQkJCWlmIChzZWFyY2hfcGF0aCA9PSBO SUwpIC8qIG5vdGhpbmcgdmFsaWQgaW4gc2VhcmNoX3BhdGg/ICovCisJCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9TQ0hFTUEpLAorCQkJ CQkJCWVycm1zZygibm8gc2NoZW1hIGhhcyBiZWVuIHNlbGVjdGVkIGZvciBDVVJSRU5UX1ND SEVNQSIpKTsKKworCQkJCXNjaGVtYWlkID0gbGluaXRpYWxfb2lkKHNlYXJjaF9wYXRoKTsK KwkJCQlsaXN0X2ZyZWUoc2VhcmNoX3BhdGgpOworCisJCQkJLyogRmlsdGVyIG91dCBkdXBs aWNhdGVzIGlmIHVzZXIgc3BlY2lmaWVzICJzY2gxLCBzY2gxIiAqLworCQkJCSpzZXF1ZW5j ZXNfc2NoZW1hcyA9IGxpc3RfYXBwZW5kX3VuaXF1ZV9vaWQoKnNlcXVlbmNlc19zY2hlbWFz LCBzY2hlbWFpZCk7CiAJCQkJKnNjaGVtYXMgPSBsaXN0X2FwcGVuZF91bmlxdWVfb2lkKCpz Y2hlbWFzLCBzY2hlbWFpZCk7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgpAQCAtMjUxLDcg KzI5MCwxMCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0 ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAlib29sCQlwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdF9naXZlbjsKIAlib29sCQlwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdDsKIAlBY2xS ZXN1bHQJYWNscmVzdWx0OwotCUxpc3QJICAgKnJlbGF0aW9ucyA9IE5JTDsKKwlMaXN0CSAg ICp0YWJsZXMgPSBOSUw7CisJTGlzdAkgICAqc2VxdWVuY2VzID0gTklMOworCUxpc3QJICAg KnRhYmxlc19zY2hlbWFpZGxpc3QgPSBOSUw7CisJTGlzdAkgICAqc2VxdWVuY2VzX3NjaGVt YWlkbGlzdCA9IE5JTDsKIAlMaXN0CSAgICpzY2hlbWFpZGxpc3QgPSBOSUw7CiAKIAkvKiBt dXN0IGhhdmUgQ1JFQVRFIHByaXZpbGVnZSBvbiBkYXRhYmFzZSAqLwpAQCAtMzA2LDYgKzM0 OCw4IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVi bGljYXRpb25TdG10ICpzdG10KQogCQlCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJkZWxl dGUpOwogCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnRydW5jYXRlIC0gMV0gPQog CQlCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSk7CisJdmFsdWVzW0FudW1f cGdfcHVibGljYXRpb25fcHVic2VxdWVuY2UgLSAxXSA9CisJCUJvb2xHZXREYXR1bShwdWJh Y3Rpb25zLnB1YnNlcXVlbmNlKTsKIAl2YWx1ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJ2 aWFyb290IC0gMV0gPQogCQlCb29sR2V0RGF0dW0ocHVibGlzaF92aWFfcGFydGl0aW9uX3Jv b3QpOwogCkBAIC0zMzAsMjYgKzM3NCw0MCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0 YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAl9CiAJZWxzZQog CXsKLQkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0 YXRlLCAmcmVsYXRpb25zLAorCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5w dWJvYmplY3RzLCBwc3RhdGUsCisJCQkJCQkJCSAgICZ0YWJsZXMsICZzZXF1ZW5jZXMsCisJ CQkJCQkJCSAgICZ0YWJsZXNfc2NoZW1haWRsaXN0LAorCQkJCQkJCQkgICAmc2VxdWVuY2Vz X3NjaGVtYWlkbGlzdCwKIAkJCQkJCQkJICAgJnNjaGVtYWlkbGlzdCk7CiAKIAkJLyogRk9S IEFMTCBUQUJMRVMgSU4gU0NIRU1BIHJlcXVpcmVzIHN1cGVydXNlciAqLwotCQlpZiAobGlz dF9sZW5ndGgoc2NoZW1haWRsaXN0KSA+IDAgJiYgIXN1cGVydXNlcigpKQorCQlpZiAobGlz dF9sZW5ndGgodGFibGVzX3NjaGVtYWlkbGlzdCkgPiAwICYmICFzdXBlcnVzZXIoKSkKIAkJ CWVyZXBvcnQoRVJST1IsCiAJCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJ VklMRUdFKSwKIAkJCQkJZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0byBjcmVhdGUgRk9S IEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1YmxpY2F0aW9uIikpOwogCi0JCWlmIChsaXN0X2xl bmd0aChyZWxhdGlvbnMpID4gMCkKKwkJaWYgKGxpc3RfbGVuZ3RoKHRhYmxlcykgPiAwKQog CQl7CiAJCQlMaXN0CSAgICpyZWxzOwogCi0JCQlyZWxzID0gT3BlblRhYmxlTGlzdChyZWxh dGlvbnMpOwotCQkJQ2hlY2tPYmpTY2hlbWFOb3RBbHJlYWR5SW5QdWJsaWNhdGlvbihyZWxz LCBzY2hlbWFpZGxpc3QsCisJCQlyZWxzID0gT3BlblRhYmxlTGlzdCh0YWJsZXMpOworCQkJ Q2hlY2tPYmpTY2hlbWFOb3RBbHJlYWR5SW5QdWJsaWNhdGlvbihyZWxzLCB0YWJsZXNfc2No ZW1haWRsaXN0LAogCQkJCQkJCQkJCQkJICBQVUJMSUNBVElPTk9CSl9UQUJMRSk7CiAJCQlQ dWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwpOwogCQkJQ2xv c2VUYWJsZUxpc3QocmVscyk7CiAJCX0KIAorCQlpZiAobGlzdF9sZW5ndGgoc2VxdWVuY2Vz KSA+IDApCisJCXsKKwkJCUxpc3QJICAgKnJlbHM7CisKKwkJCXJlbHMgPSBPcGVuU2VxdWVu Y2VMaXN0KHNlcXVlbmNlcyk7CisJCQlDaGVja09ialNjaGVtYU5vdEFscmVhZHlJblB1Ymxp Y2F0aW9uKHJlbHMsIHNlcXVlbmNlc19zY2hlbWFpZGxpc3QsCisJCQkJCQkJCQkJCQkgIFBV QkxJQ0FUSU9OT0JKX1NFUVVFTkNFKTsKKwkJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9p ZCwgcmVscywgdHJ1ZSwgTlVMTCk7CisJCQlDbG9zZVNlcXVlbmNlTGlzdChyZWxzKTsKKwkJ fQorCiAJCWlmIChsaXN0X2xlbmd0aChzY2hlbWFpZGxpc3QpID4gMCkKIAkJewogCQkJLyoK QEAgLTY1MSwxMiArNzA5LDEzIEBAIEFsdGVyUHVibGljYXRpb25TY2hlbWFzKEFsdGVyUHVi bGljYXRpb25TdG10ICpzdG10LAogICovCiBzdGF0aWMgdm9pZAogQ2hlY2tBbHRlclB1Ymxp Y2F0aW9uKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAotCQkJ CQkgIExpc3QgKnRhYmxlcywgTGlzdCAqc2NoZW1haWRsaXN0KQorCQkJCQkgIExpc3QgKnRh YmxlcywgTGlzdCAqdGFibGVzX3NjaGVtYWlkbGlzdCwKKwkJCQkJICBMaXN0ICpzZXF1ZW5j ZXMsIExpc3QgKnNlcXVlbmNlc19zY2hlbWFpZGxpc3QpCiB7CiAJRm9ybV9wZ19wdWJsaWNh dGlvbiBwdWJmb3JtID0gKEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOwog CiAJaWYgKChzdG10LT5hY3Rpb24gPT0gREVGRUxFTV9BREQgfHwgc3RtdC0+YWN0aW9uID09 IERFRkVMRU1fU0VUKSAmJgotCQlzY2hlbWFpZGxpc3QgJiYgIXN1cGVydXNlcigpKQorCQko dGFibGVzX3NjaGVtYWlkbGlzdCB8fCBzZXF1ZW5jZXNfc2NoZW1haWRsaXN0KSAmJiAhc3Vw ZXJ1c2VyKCkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNV RkZJQ0lFTlRfUFJJVklMRUdFKSwKIAkJCQkgZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciB0 byBhZGQgb3Igc2V0IHNjaGVtYXMiKSkpOwpAQCAtNjY1LDEzICs3MjQsMjQgQEAgQ2hlY2tB bHRlclB1YmxpY2F0aW9uKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUg dHVwLAogCSAqIENoZWNrIHRoYXQgdXNlciBpcyBhbGxvd2VkIHRvIG1hbmlwdWxhdGUgdGhl IHB1YmxpY2F0aW9uIHRhYmxlcyBpbgogCSAqIHNjaGVtYQogCSAqLwotCWlmIChzY2hlbWFp ZGxpc3QgJiYgcHViZm9ybS0+cHViYWxsdGFibGVzKQorCWlmICh0YWJsZXNfc2NoZW1haWRs aXN0ICYmIHB1YmZvcm0tPnB1YmFsbHRhYmxlcykKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJ CQkgZXJybXNnKCJwdWJsaWNhdGlvbiBcIiVzXCIgaXMgZGVmaW5lZCBhcyBGT1IgQUxMIFRB QkxFUyIsCiAJCQkJCQlOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSwKIAkJCQkgZXJyZGV0 YWlsKCJUYWJsZXMgZnJvbSBzY2hlbWEgY2Fubm90IGJlIGFkZGVkIHRvLCBkcm9wcGVkIGZy b20sIG9yIHNldCBvbiBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbnMuIikpKTsKIAorCS8q CisJICogQ2hlY2sgdGhhdCB1c2VyIGlzIGFsbG93ZWQgdG8gbWFuaXB1bGF0ZSB0aGUgcHVi bGljYXRpb24gc2VxdWVuY2VzIGluCisJICogc2NoZW1hCisJICovCisJaWYgKHNlcXVlbmNl c19zY2hlbWFpZGxpc3QgJiYgcHViZm9ybS0+cHViYWxsc2VxdWVuY2VzKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBpcyBkZWZpbmVk IGFzIEZPUiBBTEwgU0VRVUVOQ0VTIiwKKwkJCQkJCU5hbWVTdHIocHViZm9ybS0+cHVibmFt ZSkpLAorCQkJCSBlcnJkZXRhaWwoIlNlcXVlbmNlcyBmcm9tIHNjaGVtYSBjYW5ub3QgYmUg YWRkZWQgdG8sIGRyb3BwZWQgZnJvbSwgb3Igc2V0IG9uIEZPUiBBTEwgU0VRVUVOQ0VTIHB1 YmxpY2F0aW9ucy4iKSkpOworCiAJLyogQ2hlY2sgdGhhdCB1c2VyIGlzIGFsbG93ZWQgdG8g bWFuaXB1bGF0ZSB0aGUgcHVibGljYXRpb24gdGFibGVzLiAqLwogCWlmICh0YWJsZXMgJiYg cHViZm9ybS0+cHViYWxsdGFibGVzKQogCQllcmVwb3J0KEVSUk9SLApAQCAtNjc5LDYgKzc0 OSwxMDggQEAgQ2hlY2tBbHRlclB1YmxpY2F0aW9uKEFsdGVyUHVibGljYXRpb25TdG10ICpz dG10LCBIZWFwVHVwbGUgdHVwLAogCQkJCSBlcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBp cyBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTIiwKIAkJCQkJCU5hbWVTdHIocHViZm9ybS0+ cHVibmFtZSkpLAogCQkJCSBlcnJkZXRhaWwoIlRhYmxlcyBjYW5ub3QgYmUgYWRkZWQgdG8g b3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9ucy4iKSkpOworCisJ LyogQ2hlY2sgdGhhdCB1c2VyIGlzIGFsbG93ZWQgdG8gbWFuaXB1bGF0ZSB0aGUgcHVibGlj YXRpb24gdGFibGVzLiAqLworCWlmIChzZXF1ZW5jZXMgJiYgcHViZm9ybS0+cHViYWxsc2Vx dWVuY2VzKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNU X05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInB1YmxpY2F0aW9u IFwiJXNcIiBpcyBkZWZpbmVkIGFzIEZPUiBBTEwgU0VRVUVOQ0VTIiwKKwkJCQkJCU5hbWVT dHIocHViZm9ybS0+cHVibmFtZSkpLAorCQkJCSBlcnJkZXRhaWwoIlNlcXVlbmNlcyBjYW5u b3QgYmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwgU0VRVUVOQ0VTIHB1Ymxp Y2F0aW9ucy4iKSkpOworfQorCisvKgorICogQWRkIG9yIHJlbW92ZSBzZXF1ZW5jZSB0by9m cm9tIHB1YmxpY2F0aW9uLgorICovCitzdGF0aWMgdm9pZAorQWx0ZXJQdWJsaWNhdGlvblNl cXVlbmNlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKKwkJ CQkJCSAgTGlzdCAqc2VxdWVuY2VzLCBMaXN0ICpzY2hlbWFpZGxpc3QpCit7CisJTGlzdAkg ICAqcmVscyA9IE5JTDsKKwlGb3JtX3BnX3B1YmxpY2F0aW9uIHB1YmZvcm0gPSAoRm9ybV9w Z19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7CisJT2lkCQkJcHViaWQgPSBwdWJmb3Jt LT5vaWQ7CisKKwkvKgorCSAqIEl0IGlzIHF1aXRlIHBvc3NpYmxlIHRoYXQgZm9yIHRoZSBT RVQgY2FzZSB1c2VyIGhhcyBub3Qgc3BlY2lmaWVkIGFueQorCSAqIHRhYmxlcyBpbiB3aGlj aCBjYXNlIHdlIG5lZWQgdG8gcmVtb3ZlIGFsbCB0aGUgZXhpc3RpbmcgdGFibGVzLgorCSAq LworCWlmICghc2VxdWVuY2VzICYmIHN0bXQtPmFjdGlvbiAhPSBERUZFTEVNX1NFVCkKKwkJ cmV0dXJuOworCisJcmVscyA9IE9wZW5TZXF1ZW5jZUxpc3Qoc2VxdWVuY2VzKTsKKworCWlm IChzdG10LT5hY3Rpb24gPT0gREVGRUxFTV9BREQpCisJeworCQlMaXN0CSAgICpzY2hlbWFz ID0gTklMOworCisJCS8qCisJCSAqIENoZWNrIGlmIHRoZSByZWxhdGlvbiBpcyBtZW1iZXIg b2YgdGhlIGV4aXN0aW5nIHNjaGVtYSBpbiB0aGUKKwkJICogcHVibGljYXRpb24gb3IgbWVt YmVyIG9mIHRoZSBzY2hlbWEgbGlzdCBzcGVjaWZpZWQuCisJCSAqLworCQlzY2hlbWFzID0g bGlzdF9jb25jYXRfY29weShzY2hlbWFpZGxpc3QsIEdldFB1YmxpY2F0aW9uU2NoZW1hcyhw dWJpZCkpOworCQlDaGVja09ialNjaGVtYU5vdEFscmVhZHlJblB1YmxpY2F0aW9uKHJlbHMs IHNjaGVtYXMsCisJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05PQkpfU0VRVUVOQ0UpOworCQlQ dWJsaWNhdGlvbkFkZFNlcXVlbmNlcyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQpOworCX0K KwllbHNlIGlmIChzdG10LT5hY3Rpb24gPT0gREVGRUxFTV9EUk9QKQorCQlQdWJsaWNhdGlv bkRyb3BTZXF1ZW5jZXMocHViaWQsIHJlbHMsIGZhbHNlKTsKKwllbHNlCQkJCQkJLyogREVG RUxFTV9TRVQgKi8KKwl7CisJCUxpc3QJICAgKm9sZHJlbGlkcyA9IEdldFB1YmxpY2F0aW9u UmVsYXRpb25zKHB1YmlkLAorCQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1Qp OworCQlMaXN0CSAgICpkZWxyZWxzID0gTklMOworCQlMaXN0Q2VsbCAgICpvbGRsYzsKKwor CQlDaGVja09ialNjaGVtYU5vdEFscmVhZHlJblB1YmxpY2F0aW9uKHJlbHMsIHNjaGVtYWlk bGlzdCwKKwkJCQkJCQkJCQkJICBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRSk7CisKKwkJLyog Q2FsY3VsYXRlIHdoaWNoIHJlbGF0aW9ucyB0byBkcm9wLiAqLworCQlmb3JlYWNoKG9sZGxj LCBvbGRyZWxpZHMpCisJCXsKKwkJCU9pZAkJCW9sZHJlbGlkID0gbGZpcnN0X29pZChvbGRs Yyk7CisJCQlMaXN0Q2VsbCAgICpuZXdsYzsKKwkJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisK KwkJCWZvcmVhY2gobmV3bGMsIHJlbHMpCisJCQl7CisJCQkJUHVibGljYXRpb25SZWxJbmZv ICpuZXdwdWJyZWw7CisKKwkJCQluZXdwdWJyZWwgPSAoUHVibGljYXRpb25SZWxJbmZvICop IGxmaXJzdChuZXdsYyk7CisJCQkJaWYgKFJlbGF0aW9uR2V0UmVsaWQobmV3cHVicmVsLT5y ZWxhdGlvbikgPT0gb2xkcmVsaWQpCisJCQkJeworCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJ CWJyZWFrOworCQkJCX0KKwkJCX0KKwkJCS8qIE5vdCB5ZXQgaW4gdGhlIGxpc3QsIG9wZW4g aXQgYW5kIGFkZCB0byB0aGUgbGlzdCAqLworCQkJaWYgKCFmb3VuZCkKKwkJCXsKKwkJCQlS ZWxhdGlvbglvbGRyZWw7CisJCQkJUHVibGljYXRpb25SZWxJbmZvICpwdWJyZWw7CisKKwkJ CQkvKiBXcmFwIHJlbGF0aW9uIGludG8gUHVibGljYXRpb25SZWxJbmZvICovCisJCQkJb2xk cmVsID0gdGFibGVfb3BlbihvbGRyZWxpZCwgU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrKTsK KworCQkJCXB1YnJlbCA9IHBhbGxvYyhzaXplb2YoUHVibGljYXRpb25SZWxJbmZvKSk7CisJ CQkJcHVicmVsLT5yZWxhdGlvbiA9IG9sZHJlbDsKKworCQkJCWRlbHJlbHMgPSBsYXBwZW5k KGRlbHJlbHMsIHB1YnJlbCk7CisJCQl9CisJCX0KKworCQkvKiBBbmQgZHJvcCB0aGVtLiAq LworCQlQdWJsaWNhdGlvbkRyb3BTZXF1ZW5jZXMocHViaWQsIGRlbHJlbHMsIHRydWUpOwor CisJCS8qCisJCSAqIERvbid0IGJvdGhlciBjYWxjdWxhdGluZyB0aGUgZGlmZmVyZW5jZSBm b3IgYWRkaW5nLCB3ZSdsbCBjYXRjaCBhbmQKKwkJICogc2tpcCBleGlzdGluZyBvbmVzIHdo ZW4gZG9pbmcgY2F0YWxvZyB1cGRhdGUuCisJCSAqLworCQlQdWJsaWNhdGlvbkFkZFNlcXVl bmNlcyhwdWJpZCwgcmVscywgdHJ1ZSwgc3RtdCk7CisKKwkJQ2xvc2VTZXF1ZW5jZUxpc3Qo ZGVscmVscyk7CisJfQorCisJQ2xvc2VTZXF1ZW5jZUxpc3QocmVscyk7CiB9CiAKIC8qCkBA IC03MTYsMTMgKzg4OCwyMSBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCUFsdGVyUHVibGljYXRpb25PcHRp b25zKHBzdGF0ZSwgc3RtdCwgcmVsLCB0dXApOwogCWVsc2UKIAl7Ci0JCUxpc3QJICAgKnJl bGF0aW9ucyA9IE5JTDsKKwkJTGlzdAkgICAqdGFibGVzID0gTklMOworCQlMaXN0CSAgICpz ZXF1ZW5jZXMgPSBOSUw7CisJCUxpc3QJICAgKnRhYmxlc19zY2hlbWFpZGxpc3QgPSBOSUw7 CisJCUxpc3QJICAgKnNlcXVlbmNlc19zY2hlbWFpZGxpc3QgPSBOSUw7CiAJCUxpc3QJICAg KnNjaGVtYWlkbGlzdCA9IE5JTDsKIAotCQlPYmplY3RzSW5QdWJsaWNhdGlvblRvT2lkcyhz dG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCisJCU9iamVjdHNJblB1Ymxp Y2F0aW9uVG9PaWRzKHN0bXQtPnB1Ym9iamVjdHMsIHBzdGF0ZSwKKwkJCQkJCQkJICAgJnRh YmxlcywgJnNlcXVlbmNlcywKKwkJCQkJCQkJICAgJnRhYmxlc19zY2hlbWFpZGxpc3QsCisJ CQkJCQkJCSAgICZzZXF1ZW5jZXNfc2NoZW1haWRsaXN0LAogCQkJCQkJCQkgICAmc2NoZW1h aWRsaXN0KTsKIAotCQlDaGVja0FsdGVyUHVibGljYXRpb24oc3RtdCwgdHVwLCByZWxhdGlv bnMsIHNjaGVtYWlkbGlzdCk7CisJCUNoZWNrQWx0ZXJQdWJsaWNhdGlvbihzdG10LCB0dXAs CisJCQkJCQkJICB0YWJsZXMsIHRhYmxlc19zY2hlbWFpZGxpc3QsCisJCQkJCQkJICBzZXF1 ZW5jZXMsIHNlcXVlbmNlc19zY2hlbWFpZGxpc3QpOwogCiAJCS8qCiAJCSAqIExvY2sgdGhl IHB1YmxpY2F0aW9uIHNvIG5vYm9keSBlbHNlIGNhbiBkbyBhbnl0aGluZyB3aXRoIGl0LiBU aGlzCkBAIC03NDcsNyArOTI3LDkgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpw c3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJCQllcnJtc2coInB1Ymxp Y2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCiAJCQkJCQkgICBzdG10LT5wdWJuYW1l KSk7CiAKLQkJQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhzdG10LCB0dXAsIHJlbGF0aW9ucywg c2NoZW1haWRsaXN0KTsKKwkJQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhzdG10LCB0dXAsIHRh YmxlcywgdGFibGVzX3NjaGVtYWlkbGlzdCk7CisJCUFsdGVyUHVibGljYXRpb25TZXF1ZW5j ZXMoc3RtdCwgdHVwLCBzZXF1ZW5jZXMsIHNlcXVlbmNlc19zY2hlbWFpZGxpc3QpOworCiAJ CUFsdGVyUHVibGljYXRpb25TY2hlbWFzKHN0bXQsIHR1cCwgc2NoZW1haWRsaXN0KTsKIAl9 CiAKQEAgLTExNTUsNiArMTMzNywxNDQgQEAgUHVibGljYXRpb25Ecm9wU2NoZW1hcyhPaWQg cHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vaykKIAl9CiB9CiAKKy8qCisg KiBPcGVuIHJlbGF0aW9ucyBzcGVjaWZpZWQgYnkgYSBQdWJsaWNhdGlvblRhYmxlIGxpc3Qu CisgKiBJbiB0aGUgcmV0dXJuZWQgbGlzdCBvZiBQdWJsaWNhdGlvblJlbEluZm8sIHRhYmxl cyBhcmUgbG9ja2VkCisgKiBpbiBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sgbW9kZSBpbiBv cmRlciB0byBhZGQgdGhlbSB0byBhIHB1YmxpY2F0aW9uLgorICovCitzdGF0aWMgTGlzdCAq CitPcGVuU2VxdWVuY2VMaXN0KExpc3QgKnNlcXVlbmNlcykKK3sKKwlMaXN0CSAgICpyZWxp ZHMgPSBOSUw7CisJTGlzdAkgICAqcmVscyA9IE5JTDsKKwlMaXN0Q2VsbCAgICpsYzsKKwor CS8qCisJICogT3Blbiwgc2hhcmUtbG9jaywgYW5kIGNoZWNrIGFsbCB0aGUgZXhwbGljaXRs eS1zcGVjaWZpZWQgcmVsYXRpb25zCisJICovCisJZm9yZWFjaChsYywgc2VxdWVuY2VzKQor CXsKKwkJUHVibGljYXRpb25UYWJsZSAqcyA9IGxmaXJzdF9ub2RlKFB1YmxpY2F0aW9uVGFi bGUsIGxjKTsKKwkJUmVsYXRpb24JcmVsOworCQlPaWQJCQlteXJlbGlkOworCQlQdWJsaWNh dGlvblJlbEluZm8gKnB1Yl9yZWw7CisKKwkJLyogQWxsb3cgcXVlcnkgY2FuY2VsIGluIGNh c2UgdGhpcyB0YWtlcyBhIGxvbmcgdGltZSAqLworCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OworCisJCXJlbCA9IHRhYmxlX29wZW5ydihzLT5yZWxhdGlvbiwgU2hhcmVVcGRhdGVFeGNs dXNpdmVMb2NrKTsKKwkJbXlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocmVsKTsKKworCQkv KgorCQkgKiBGaWx0ZXIgb3V0IGR1cGxpY2F0ZXMgaWYgdXNlciBzcGVjaWZpZXMgImZvbywg Zm9vIi4KKwkJICoKKwkJICogTm90ZSB0aGF0IHRoaXMgYWxnb3JpdGhtIGlzIGtub3duIHRv IG5vdCBiZSB2ZXJ5IGVmZmljaWVudCAoTyhOXjIpKQorCQkgKiBidXQgZ2l2ZW4gdGhhdCBp dCBvbmx5IHdvcmtzIG9uIGxpc3Qgb2YgdGFibGVzIGdpdmVuIHRvIHVzIGJ5IHVzZXIKKwkJ ICogaXQncyBkZWVtZWQgYWNjZXB0YWJsZS4KKwkJICovCisJCWlmIChsaXN0X21lbWJlcl9v aWQocmVsaWRzLCBteXJlbGlkKSkKKwkJeworCQkJdGFibGVfY2xvc2UocmVsLCBTaGFyZVVw ZGF0ZUV4Y2x1c2l2ZUxvY2spOworCQkJY29udGludWU7CisJCX0KKworCQlwdWJfcmVsID0g cGFsbG9jKHNpemVvZihQdWJsaWNhdGlvblJlbEluZm8pKTsKKwkJcHViX3JlbC0+cmVsYXRp b24gPSByZWw7CisJCXJlbHMgPSBsYXBwZW5kKHJlbHMsIHB1Yl9yZWwpOworCQlyZWxpZHMg PSBsYXBwZW5kX29pZChyZWxpZHMsIG15cmVsaWQpOworCX0KKworCWxpc3RfZnJlZShyZWxp ZHMpOworCisJcmV0dXJuIHJlbHM7Cit9CisKKy8qCisgKiBDbG9zZSBhbGwgcmVsYXRpb25z IGluIHRoZSBsaXN0LgorICovCitzdGF0aWMgdm9pZAorQ2xvc2VTZXF1ZW5jZUxpc3QoTGlz dCAqcmVscykKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIHJlbHMpCisJ eworCQlQdWJsaWNhdGlvblJlbEluZm8gKnB1Yl9yZWw7CisKKwkJcHViX3JlbCA9IChQdWJs aWNhdGlvblJlbEluZm8gKikgbGZpcnN0KGxjKTsKKwkJdGFibGVfY2xvc2UocHViX3JlbC0+ cmVsYXRpb24sIE5vTG9jayk7CisJfQorfQorCisvKgorICogQWRkIGxpc3RlZCB0YWJsZXMg dG8gdGhlIHB1YmxpY2F0aW9uLgorICovCitzdGF0aWMgdm9pZAorUHVibGljYXRpb25BZGRT ZXF1ZW5jZXMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCisJ CQkJCQlBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsK KworCUFzc2VydCghc3RtdCB8fCAhc3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMpOworCisJZm9y ZWFjaChsYywgcmVscykKKwl7CisJCVB1YmxpY2F0aW9uUmVsSW5mbyAqcHViX3JlbCA9IChQ dWJsaWNhdGlvblJlbEluZm8gKikgbGZpcnN0KGxjKTsKKwkJUmVsYXRpb24JcmVsID0gcHVi X3JlbC0+cmVsYXRpb247CisJCU9iamVjdEFkZHJlc3Mgb2JqOworCisJCS8qIE11c3QgYmUg b3duZXIgb2YgdGhlIHNlcXVlbmNlIG9yIHN1cGVydXNlci4gKi8KKwkJaWYgKCFwZ19jbGFz c19vd25lcmNoZWNrKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgR2V0VXNlcklkKCkpKQorCQkJ YWNsY2hlY2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBnZXRfcmVsa2luZF9vYmp0eXBl KHJlbC0+cmRfcmVsLT5yZWxraW5kKSwKKwkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbCkpOworCisJCW9iaiA9IHB1YmxpY2F0aW9uX2FkZF9yZWxhdGlvbihwdWJpZCwg cHViX3JlbCwgaWZfbm90X2V4aXN0cyk7CisJCWlmIChzdG10KQorCQl7CisJCQlFdmVudFRy aWdnZXJDb2xsZWN0U2ltcGxlQ29tbWFuZChvYmosIEludmFsaWRPYmplY3RBZGRyZXNzLAor CQkJCQkJCQkJCQkgKE5vZGUgKikgc3RtdCk7CisKKwkJCUludm9rZU9iamVjdFBvc3RDcmVh dGVIb29rKFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwKKwkJCQkJCQkJCSAgIG9iai5vYmpl Y3RJZCwgMCk7CisJCX0KKwl9Cit9CisKKy8qCisgKiBSZW1vdmUgbGlzdGVkIHNlcXVlbmNl cyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK1B1YmxpY2F0aW9u RHJvcFNlcXVlbmNlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vaykK K3sKKwlPYmplY3RBZGRyZXNzIG9iajsKKwlMaXN0Q2VsbCAgICpsYzsKKwlPaWQJCQlwcmlk OworCisJZm9yZWFjaChsYywgcmVscykKKwl7CisJCVJlbGF0aW9uCXJlbCA9IChSZWxhdGlv bikgbGZpcnN0KGxjKTsKKwkJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7 CisKKwkJcHJpZCA9IEdldFN5c0NhY2hlT2lkMihQVUJMSUNBVElPTlJFTE1BUCwgQW51bV9w Z19wdWJsaWNhdGlvbl9yZWxfb2lkLAorCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocmVs aWQpLAorCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ocHViaWQpKTsKKwkJaWYgKCFPaWRJ c1ZhbGlkKHByaWQpKQorCQl7CisJCQlpZiAobWlzc2luZ19vaykKKwkJCQljb250aW51ZTsK KworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURf T0JKRUNUKSwKKwkJCQkJIGVycm1zZygicmVsYXRpb24gXCIlc1wiIGlzIG5vdCBwYXJ0IG9m IHRoZSBwdWJsaWNhdGlvbiIsCisJCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSkpKTsKKwkJfQorCisJCU9iamVjdEFkZHJlc3NTZXQob2JqLCBQdWJsaWNhdGlvblJlbFJl bGF0aW9uSWQsIHByaWQpOworCQlwZXJmb3JtRGVsZXRpb24oJm9iaiwgRFJPUF9DQVNDQURF LCAwKTsKKwl9Cit9CisKKwogLyoKICAqIEludGVybmFsIHdvcmtob3JzZSBmb3IgY2hhbmdp bmcgYSBwdWJsaWNhdGlvbiBvd25lcgogICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zZXF1ZW5jZS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpp bmRleCBhNTQzNTkxMGEyLi45YTY4OWU2MzA1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zZXF1ZW5jZS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNl LmMKQEAgLTMzOSw2ICszMzksODUgQEAgUmVzZXRTZXF1ZW5jZShPaWQgc2VxX3JlbGlkKQog CXJlbGF0aW9uX2Nsb3NlKHNlcV9yZWwsIE5vTG9jayk7CiB9CiAKKy8qCisgKiBSZXNldCBh IHNlcXVlbmNlIHRvIGl0cyBpbml0aWFsIHZhbHVlLgorICoKKyAqIFRoZSBjaGFuZ2UgaXMg bWFkZSB0cmFuc2FjdGlvbmFsbHksIHNvIHRoYXQgb24gZmFpbHVyZSBvZiB0aGUgY3VycmVu dAorICogdHJhbnNhY3Rpb24sIHRoZSBzZXF1ZW5jZSB3aWxsIGJlIHJlc3RvcmVkIHRvIGl0 cyBwcmV2aW91cyBzdGF0ZS4KKyAqIFdlIGRvIHRoYXQgYnkgY3JlYXRpbmcgYSB3aG9sZSBu ZXcgcmVsZmlsZW5vZGUgZm9yIHRoZSBzZXF1ZW5jZTsgc28gdGhpcworICogd29ya3MgbXVj aCBsaWtlIHRoZSByZXdyaXRpbmcgZm9ybXMgb2YgQUxURVIgVEFCTEUuCisgKgorICogQ2Fs bGVyIGlzIGFzc3VtZWQgdG8gaGF2ZSBhY3F1aXJlZCBBY2Nlc3NFeGNsdXNpdmVMb2NrIG9u IHRoZSBzZXF1ZW5jZSwKKyAqIHdoaWNoIG11c3Qgbm90IGJlIHJlbGVhc2VkIHVudGlsIGVu ZCBvZiB0cmFuc2FjdGlvbi4gIENhbGxlciBpcyBhbHNvCisgKiByZXNwb25zaWJsZSBmb3Ig cGVybWlzc2lvbnMgY2hlY2tpbmcuCisgKi8KK3ZvaWQKK1Jlc2V0U2VxdWVuY2UyKE9pZCBz ZXFfcmVsaWQsIGludDY0IGxhc3RfdmFsdWUsIGludDY0IGxvZ19jbnQsIGJvb2wgaXNfY2Fs bGVkKQoreworCVJlbGF0aW9uCXNlcV9yZWw7CisJU2VxVGFibGUJZWxtOworCUZvcm1fcGdf c2VxdWVuY2VfZGF0YSBzZXE7CisJQnVmZmVyCQlidWY7CisJSGVhcFR1cGxlRGF0YSBzZXFk YXRhdHVwbGU7CisJSGVhcFR1cGxlCXR1cGxlOworCisJLyoKKwkgKiBSZWFkIHRoZSBvbGQg c2VxdWVuY2UuICBUaGlzIGRvZXMgYSBiaXQgbW9yZSB3b3JrIHRoYW4gcmVhbGx5CisJICog bmVjZXNzYXJ5LCBidXQgaXQncyBzaW1wbGUsIGFuZCB3ZSBkbyB3YW50IHRvIGRvdWJsZS1j aGVjayB0aGF0IGl0J3MKKwkgKiBpbmRlZWQgYSBzZXF1ZW5jZS4KKwkgKi8KKwlpbml0X3Nl cXVlbmNlKHNlcV9yZWxpZCwgJmVsbSwgJnNlcV9yZWwpOworCSh2b2lkKSByZWFkX3NlcV90 dXBsZShzZXFfcmVsLCAmYnVmLCAmc2VxZGF0YXR1cGxlKTsKKworCS8qCisJICogQ29weSB0 aGUgZXhpc3Rpbmcgc2VxdWVuY2UgdHVwbGUuCisJICovCisJdHVwbGUgPSBoZWFwX2NvcHl0 dXBsZSgmc2VxZGF0YXR1cGxlKTsKKworCS8qIE5vdyB3ZSdyZSBkb25lIHdpdGggdGhlIG9s ZCBwYWdlICovCisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOworCisJLyoKKwkgKiBNb2Rp ZnkgdGhlIGNvcGllZCB0dXBsZSB0byBleGVjdXRlIHRoZSByZXN0YXJ0IChjb21wYXJlIHRo ZSBSRVNUQVJUCisJICogYWN0aW9uIGluIEFsdGVyU2VxdWVuY2UpCisJICovCisJc2VxID0g KEZvcm1fcGdfc2VxdWVuY2VfZGF0YSkgR0VUU1RSVUNUKHR1cGxlKTsKKwlzZXEtPmxhc3Rf dmFsdWUgPSBsYXN0X3ZhbHVlOworCXNlcS0+aXNfY2FsbGVkID0gaXNfY2FsbGVkOworCXNl cS0+bG9nX2NudCA9IGxvZ19jbnQ7CisKKwkvKgorCSAqIENyZWF0ZSBhIG5ldyBzdG9yYWdl IGZpbGUgZm9yIHRoZSBzZXF1ZW5jZS4KKwkgKi8KKwlSZWxhdGlvblNldE5ld1JlbGZpbGVu b2RlKHNlcV9yZWwsIHNlcV9yZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UpOworCisJLyoK KwkgKiBFbnN1cmUgc2VxdWVuY2UncyByZWxmcm96ZW54aWQgaXMgYXQgMCwgc2luY2UgaXQg d29uJ3QgY29udGFpbiBhbnkKKwkgKiB1bmZyb3plbiBYSURzLiAgU2FtZSB3aXRoIHJlbG1p bm14aWQsIHNpbmNlIGEgc2VxdWVuY2Ugd2lsbCBuZXZlcgorCSAqIGNvbnRhaW4gbXVsdGl4 YWN0cy4KKwkgKi8KKwlBc3NlcnQoc2VxX3JlbC0+cmRfcmVsLT5yZWxmcm96ZW54aWQgPT0g SW52YWxpZFRyYW5zYWN0aW9uSWQpOworCUFzc2VydChzZXFfcmVsLT5yZF9yZWwtPnJlbG1p bm14aWQgPT0gSW52YWxpZE11bHRpWGFjdElkKTsKKworCS8qCisJICogSW5zZXJ0IHRoZSBt b2RpZmllZCB0dXBsZSBpbnRvIHRoZSBuZXcgc3RvcmFnZSBmaWxlLgorCSAqCisJICogWFhY IE1heWJlIHRoaXMgc2hvdWxkIGFsc28gdXNlIGNyZWF0ZWQ9dHJ1ZSwganVzdCBsaWtlIHRo ZSBvdGhlciBwbGFjZXMKKwkgKiBjYWxsaW5nIGZpbGxfc2VxX3dpdGhfZGF0YS4gVGhhdCdz IHByb2JhYmx5IG5lZWRlZCBmb3IgY29ycmVjdCBjYXNjYWRpbmcKKwkgKiByZXBsaWNhdGlv bi4KKwkgKgorCSAqIFhYWCBUaGF0J2QgbWVhbiBhbGwgZmlsbF9zZXFfd2l0aF9kYXRhIGNh bGxlcnMgdXNlIGNyZWF0ZWQ9dHJ1ZSwgbWFraW5nCisJICogdGhlIHBhcmFtZXRlciB1bm5l Y2Vzc2FyeS4KKwkgKi8KKwlmaWxsX3NlcV93aXRoX2RhdGEoc2VxX3JlbCwgdHVwbGUpOwor CisJLyogQ2xlYXIgbG9jYWwgY2FjaGUgc28gdGhhdCB3ZSBkb24ndCB0aGluayB3ZSBoYXZl IGNhY2hlZCBudW1iZXJzICovCisJLyogTm90ZSB0aGF0IHdlIGRvIG5vdCBjaGFuZ2UgdGhl IGN1cnJ2YWwoKSBzdGF0ZSAqLworCWVsbS0+Y2FjaGVkID0gZWxtLT5sYXN0OworCisJcmVs YXRpb25fY2xvc2Uoc2VxX3JlbCwgTm9Mb2NrKTsKK30KKwogLyoKICAqIEluaXRpYWxpemUg YSBzZXF1ZW5jZSdzIHJlbGF0aW9uIHdpdGggdGhlIHNwZWNpZmllZCB0dXBsZSBhcyBjb250 ZW50CiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlv bmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRl eCAyYjY1ODA4MGZlLi5mYzYzNzRjNDQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jCkBAIC04NSw2ICs4NSw3IEBAIHR5cGVkZWYgc3RydWN0IFN1Yk9w dHMKIH0gU3ViT3B0czsKIAogc3RhdGljIExpc3QgKmZldGNoX3RhYmxlX2xpc3QoV2FsUmVj ZWl2ZXJDb25uICp3cmNvbm4sIExpc3QgKnB1YmxpY2F0aW9ucyk7CitzdGF0aWMgTGlzdCAq ZmV0Y2hfc2VxdWVuY2VfbGlzdChXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgTGlzdCAqcHVi bGljYXRpb25zKTsKIHN0YXRpYyB2b2lkIGNoZWNrX2R1cGxpY2F0ZXNfaW5fcHVibGlzdChM aXN0ICpwdWJsaXN0LCBEYXR1bSAqZGF0dW1zKTsKIHN0YXRpYyBMaXN0ICptZXJnZV9wdWJs aWNhdGlvbnMoTGlzdCAqb2xkcHVibGlzdCwgTGlzdCAqbmV3cHVibGlzdCwgYm9vbCBhZGRw dWIsIGNvbnN0IGNoYXIgKnN1Ym5hbWUpOwogc3RhdGljIHZvaWQgUmVwb3J0U2xvdENvbm5l Y3Rpb25FcnJvcihMaXN0ICpyc3RhdGVzLCBPaWQgc3ViaWQsIGNoYXIgKnNsb3RuYW1lLCBj aGFyICplcnIpOwpAQCAtNDk2LDYgKzQ5Nyw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCWNoYXIJ ICAgKmVycjsKIAkJV2FsUmVjZWl2ZXJDb25uICp3cmNvbm47CiAJCUxpc3QJICAgKnRhYmxl czsKKwkJTGlzdAkgICAqc2VxdWVuY2VzOwogCQlMaXN0Q2VsbCAgICpsYzsKIAkJY2hhcgkJ dGFibGVfc3RhdGU7CiAKQEAgLTUzNCw2ICs1MzYsMjYgQEAgQ3JlYXRlU3Vic2NyaXB0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJ CQkJCQkJCQlJbnZhbGlkWExvZ1JlY1B0cik7CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBHZXQg dGhlIHNlcXVlbmNlIGxpc3QgZnJvbSBwdWJsaXNoZXIgYW5kIGJ1aWxkIGxvY2FsIHNlcXVl bmNlCisJCQkgKiBzdGF0dXMgaW5mby4KKwkJCSAqLworCQkJc2VxdWVuY2VzID0gZmV0Y2hf c2VxdWVuY2VfbGlzdCh3cmNvbm4sIHB1YmxpY2F0aW9ucyk7CisJCQlmb3JlYWNoKGxjLCBz ZXF1ZW5jZXMpCisJCQl7CisJCQkJUmFuZ2VWYXIgICAqcnYgPSAoUmFuZ2VWYXIgKikgbGZp cnN0KGxjKTsKKwkJCQlPaWQJCQlyZWxpZDsKKworCQkJCXJlbGlkID0gUmFuZ2VWYXJHZXRS ZWxpZChydiwgQWNjZXNzU2hhcmVMb2NrLCBmYWxzZSk7CisKKwkJCQkvKiBDaGVjayBmb3Ig c3VwcG9ydGVkIHJlbGtpbmQuICovCisJCQkJQ2hlY2tTdWJzY3JpcHRpb25SZWxraW5kKGdl dF9yZWxfcmVsa2luZChyZWxpZCksCisJCQkJCQkJCQkJIHJ2LT5zY2hlbWFuYW1lLCBydi0+ cmVsbmFtZSk7CisKKwkJCQlBZGRTdWJzY3JpcHRpb25SZWxTdGF0ZShzdWJpZCwgcmVsaWQs IHRhYmxlX3N0YXRlLAorCQkJCQkJCQkJCUludmFsaWRYTG9nUmVjUHRyKTsKKwkJCX0KKwog CQkJLyoKIAkJCSAqIElmIHJlcXVlc3RlZCwgY3JlYXRlIHBlcm1hbmVudCBzbG90IGZvciB0 aGUgc3Vic2NyaXB0aW9uLiBXZQogCQkJICogd29uJ3QgdXNlIHRoZSBpbml0aWFsIHNuYXBz aG90IGZvciBhbnl0aGluZywgc28gbm8gbmVlZCB0bwpAQCAtNzA2LDYgKzcyOCwxMCBAQCBB bHRlclN1YnNjcmlwdGlvbl9yZWZyZXNoKFN1YnNjcmlwdGlvbiAqc3ViLCBib29sIGNvcHlf ZGF0YSkKIAkJewogCQkJT2lkCQkJcmVsaWQgPSBzdWJyZWxfbG9jYWxfb2lkc1tvZmZdOwog CisJCQkvKiBYWFggaWdub3JlIHNlcXVlbmNlcyAtIG1heWJlIGRvIHRoaXMgaW4gR2V0U3Vi c2NyaXB0aW9uUmVsYXRpb25zPyAqLworCQkJaWYgKGdldF9yZWxfcmVsa2luZChyZWxpZCkg PT0gUkVMS0lORF9TRVFVRU5DRSkKKwkJCQljb250aW51ZTsKKwogCQkJaWYgKCFic2VhcmNo KCZyZWxpZCwgcHVicmVsX2xvY2FsX29pZHMsCiAJCQkJCQkgbGlzdF9sZW5ndGgocHVicmVs X25hbWVzKSwgc2l6ZW9mKE9pZCksIG9pZF9jbXApKQogCQkJewpAQCAtNzk3LDYgKzgyMywx ODMgQEAgQWx0ZXJTdWJzY3JpcHRpb25fcmVmcmVzaChTdWJzY3JpcHRpb24gKnN1YiwgYm9v bCBjb3B5X2RhdGEpCiAJCQkJUmVwbGljYXRpb25TbG90RHJvcEF0UHViTm9kZSh3cmNvbm4s IHN5bmNzbG90bmFtZSwgdHJ1ZSk7CiAJCQl9CiAJCX0KKworCQkvKgorCQkgKiBYWFggbm93 IGRvIHRoZSBzYW1lIHRoaW5nIGZvciBzZXF1ZW5jZXMsIG1heWJlIGJlZm9yZSB0aGUgcHJl Y2VkaW5nCisJCSAqIGJsb2NrLCBvciBlYXJsaWVyPworCQkgKi8KKworCQkvKiBHZXQgdGhl IHRhYmxlIGxpc3QgZnJvbSBwdWJsaXNoZXIuICovCisJCXB1YnJlbF9uYW1lcyA9IGZldGNo X3NlcXVlbmNlX2xpc3Qod3Jjb25uLCBzdWItPnB1YmxpY2F0aW9ucyk7CisKKwkJLyogR2V0 IGxvY2FsIHRhYmxlIGxpc3QuICovCisJCXN1YnJlbF9zdGF0ZXMgPSBHZXRTdWJzY3JpcHRp b25SZWxhdGlvbnMoc3ViLT5vaWQpOworCisJCS8qCisJCSAqIEJ1aWxkIHFzb3J0ZWQgYXJy YXkgb2YgbG9jYWwgdGFibGUgb2lkcyBmb3IgZmFzdGVyIGxvb2t1cC4gVGhpcyBjYW4KKwkJ ICogcG90ZW50aWFsbHkgY29udGFpbiBhbGwgdGFibGVzIGluIHRoZSBkYXRhYmFzZSBzbyBz cGVlZCBvZiBsb29rdXAKKwkJICogaXMgaW1wb3J0YW50LgorCQkgKi8KKwkJc3VicmVsX2xv Y2FsX29pZHMgPSBwYWxsb2MobGlzdF9sZW5ndGgoc3VicmVsX3N0YXRlcykgKiBzaXplb2Yo T2lkKSk7CisJCW9mZiA9IDA7CisJCWZvcmVhY2gobGMsIHN1YnJlbF9zdGF0ZXMpCisJCXsK KwkJCVN1YnNjcmlwdGlvblJlbFN0YXRlICpyZWxzdGF0ZSA9IChTdWJzY3JpcHRpb25SZWxT dGF0ZSAqKSBsZmlyc3QobGMpOworCisJCQlzdWJyZWxfbG9jYWxfb2lkc1tvZmYrK10gPSBy ZWxzdGF0ZS0+cmVsaWQ7CisJCX0KKwkJcXNvcnQoc3VicmVsX2xvY2FsX29pZHMsIGxpc3Rf bGVuZ3RoKHN1YnJlbF9zdGF0ZXMpLAorCQkJICBzaXplb2YoT2lkKSwgb2lkX2NtcCk7CisK KwkJLyoKKwkJICogUmVscyB0aGF0IHdlIHdhbnQgdG8gcmVtb3ZlIGZyb20gc3Vic2NyaXB0 aW9uIGFuZCBkcm9wIGFueSBzbG90cworCQkgKiBhbmQgb3JpZ2lucyBjb3JyZXNwb25kaW5n IHRvIHRoZW0uCisJCSAqLworCQlzdWJfcmVtb3ZlX3JlbHMgPSBwYWxsb2MobGlzdF9sZW5n dGgoc3VicmVsX3N0YXRlcykgKiBzaXplb2YoU3ViUmVtb3ZlUmVscykpOworCisJCS8qCisJ CSAqIFdhbGsgb3ZlciB0aGUgcmVtb3RlIHRhYmxlcyBhbmQgdHJ5IHRvIG1hdGNoIHRoZW0g dG8gbG9jYWxseSBrbm93bgorCQkgKiB0YWJsZXMuIElmIHRoZSB0YWJsZSBpcyBub3Qga25v d24gbG9jYWxseSBjcmVhdGUgYSBuZXcgc3RhdGUgZm9yCisJCSAqIGl0LgorCQkgKgorCQkg KiBBbHNvIGJ1aWxkcyBhcnJheSBvZiBsb2NhbCBvaWRzIG9mIHJlbW90ZSB0YWJsZXMgZm9y IHRoZSBuZXh0IHN0ZXAuCisJCSAqLworCQlvZmYgPSAwOworCQlwdWJyZWxfbG9jYWxfb2lk cyA9IHBhbGxvYyhsaXN0X2xlbmd0aChwdWJyZWxfbmFtZXMpICogc2l6ZW9mKE9pZCkpOwor CisJCWZvcmVhY2gobGMsIHB1YnJlbF9uYW1lcykKKwkJeworCQkJUmFuZ2VWYXIgICAqcnYg PSAoUmFuZ2VWYXIgKikgbGZpcnN0KGxjKTsKKwkJCU9pZAkJCXJlbGlkOworCisJCQlyZWxp ZCA9IFJhbmdlVmFyR2V0UmVsaWQocnYsIEFjY2Vzc1NoYXJlTG9jaywgZmFsc2UpOworCisJ CQkvKiBDaGVjayBmb3Igc3VwcG9ydGVkIHJlbGtpbmQuICovCisJCQlDaGVja1N1YnNjcmlw dGlvblJlbGtpbmQoZ2V0X3JlbF9yZWxraW5kKHJlbGlkKSwKKwkJCQkJCQkJCSBydi0+c2No ZW1hbmFtZSwgcnYtPnJlbG5hbWUpOworCisJCQlwdWJyZWxfbG9jYWxfb2lkc1tvZmYrK10g PSByZWxpZDsKKworCQkJaWYgKCFic2VhcmNoKCZyZWxpZCwgc3VicmVsX2xvY2FsX29pZHMs CisJCQkJCQkgbGlzdF9sZW5ndGgoc3VicmVsX3N0YXRlcyksIHNpemVvZihPaWQpLCBvaWRf Y21wKSkKKwkJCXsKKwkJCQlBZGRTdWJzY3JpcHRpb25SZWxTdGF0ZShzdWItPm9pZCwgcmVs aWQsCisJCQkJCQkJCQkJY29weV9kYXRhID8gU1VCUkVMX1NUQVRFX0lOSVQgOiBTVUJSRUxf U1RBVEVfUkVBRFksCisJCQkJCQkJCQkJSW52YWxpZFhMb2dSZWNQdHIpOworCQkJCWVyZXBv cnQoREVCVUcxLAorCQkJCQkJKGVycm1zZ19pbnRlcm5hbCgidGFibGUgXCIlcy4lc1wiIGFk ZGVkIHRvIHN1YnNjcmlwdGlvbiBcIiVzXCIiLAorCQkJCQkJCQkJCSBydi0+c2NoZW1hbmFt ZSwgcnYtPnJlbG5hbWUsIHN1Yi0+bmFtZSkpKTsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAq IE5leHQgcmVtb3ZlIHN0YXRlIGZvciB0YWJsZXMgd2Ugc2hvdWxkIG5vdCBjYXJlIGFib3V0 IGFueW1vcmUgdXNpbmcKKwkJICogdGhlIGRhdGEgd2UgY29sbGVjdGVkIGFib3ZlCisJCSAq LworCQlxc29ydChwdWJyZWxfbG9jYWxfb2lkcywgbGlzdF9sZW5ndGgocHVicmVsX25hbWVz KSwKKwkJCSAgc2l6ZW9mKE9pZCksIG9pZF9jbXApOworCisJCXJlbW92ZV9yZWxfbGVuID0g MDsKKwkJZm9yIChvZmYgPSAwOyBvZmYgPCBsaXN0X2xlbmd0aChzdWJyZWxfc3RhdGVzKTsg b2ZmKyspCisJCXsKKwkJCU9pZAkJCXJlbGlkID0gc3VicmVsX2xvY2FsX29pZHNbb2ZmXTsK KworCQkJLyogWFhYIGlnbm9yZSBub24tc2VxdWVuY2VzIC0gbWF5YmUgZG8gdGhpcyBpbiBH ZXRTdWJzY3JpcHRpb25SZWxhdGlvbnM/ICovCisJCQlpZiAoZ2V0X3JlbF9yZWxraW5kKHJl bGlkKSAhPSBSRUxLSU5EX1NFUVVFTkNFKQorCQkJCWNvbnRpbnVlOworCisJCQlpZiAoIWJz ZWFyY2goJnJlbGlkLCBwdWJyZWxfbG9jYWxfb2lkcywKKwkJCQkJCSBsaXN0X2xlbmd0aChw dWJyZWxfbmFtZXMpLCBzaXplb2YoT2lkKSwgb2lkX2NtcCkpCisJCQl7CisJCQkJY2hhcgkJ c3RhdGU7CisJCQkJWExvZ1JlY1B0cglzdGF0ZWxzbjsKKworCQkJCS8qCisJCQkJICogTG9j ayBwZ19zdWJzY3JpcHRpb25fcmVsIHdpdGggQWNjZXNzRXhjbHVzaXZlTG9jayB0bworCQkJ CSAqIHByZXZlbnQgYW55IHJhY2UgY29uZGl0aW9ucyB3aXRoIHRoZSBhcHBseSB3b3JrZXIK KwkJCQkgKiByZS1sYXVuY2hpbmcgd29ya2VycyBhdCB0aGUgc2FtZSB0aW1lIHRoaXMgY29k ZSBpcyB0cnlpbmcKKwkJCQkgKiB0byByZW1vdmUgdGhvc2UgdGFibGVzLgorCQkJCSAqCisJ CQkJICogRXZlbiBpZiBuZXcgd29ya2VyIGZvciB0aGlzIHBhcnRpY3VsYXIgcmVsIGlzIHJl c3RhcnRlZCBpdAorCQkJCSAqIHdvbid0IGJlIGFibGUgdG8gbWFrZSBhbnkgcHJvZ3Jlc3Mg YXMgd2UgaG9sZCBleGNsdXNpdmUKKwkJCQkgKiBsb2NrIG9uIHN1YnNjcmlwdGlvbl9yZWwg dGlsbCB0aGUgdHJhbnNhY3Rpb24gZW5kLiBJdCB3aWxsCisJCQkJICogc2ltcGx5IGV4aXQg YXMgdGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyByZWwgZW50cnkuCisJCQkJICoKKwkJCQkg KiBUaGlzIGxvY2tpbmcgYWxzbyBlbnN1cmVzIHRoYXQgdGhlIHN0YXRlIG9mIHJlbHMgd29u J3QKKwkJCQkgKiBjaGFuZ2UgdGlsbCB3ZSBhcmUgZG9uZSB3aXRoIHRoaXMgcmVmcmVzaCBv cGVyYXRpb24uCisJCQkJICovCisJCQkJaWYgKCFyZWwpCisJCQkJCXJlbCA9IHRhYmxlX29w ZW4oU3Vic2NyaXB0aW9uUmVsUmVsYXRpb25JZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisK KwkJCQkvKiBMYXN0IGtub3duIHJlbCBzdGF0ZS4gKi8KKwkJCQlzdGF0ZSA9IEdldFN1YnNj cmlwdGlvblJlbFN0YXRlKHN1Yi0+b2lkLCByZWxpZCwgJnN0YXRlbHNuKTsKKworCQkJCXN1 Yl9yZW1vdmVfcmVsc1tyZW1vdmVfcmVsX2xlbl0ucmVsaWQgPSByZWxpZDsKKwkJCQlzdWJf cmVtb3ZlX3JlbHNbcmVtb3ZlX3JlbF9sZW4rK10uc3RhdGUgPSBzdGF0ZTsKKworCQkJCVJl bW92ZVN1YnNjcmlwdGlvblJlbChzdWItPm9pZCwgcmVsaWQpOworCisJCQkJbG9naWNhbHJl cF93b3JrZXJfc3RvcChzdWItPm9pZCwgcmVsaWQpOworCisJCQkJLyoKKwkJCQkgKiBGb3Ig UkVBRFkgc3RhdGUsIHdlIHdvdWxkIGhhdmUgYWxyZWFkeSBkcm9wcGVkIHRoZQorCQkJCSAq IHRhYmxlc3luYyBvcmlnaW4uCisJCQkJICovCisJCQkJaWYgKHN0YXRlICE9IFNVQlJFTF9T VEFURV9SRUFEWSkKKwkJCQl7CisJCQkJCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5d OworCisJCQkJCS8qCisJCQkJCSAqIERyb3AgdGhlIHRhYmxlc3luYydzIG9yaWdpbiB0cmFj a2luZyBpZiBleGlzdHMuCisJCQkJCSAqCisJCQkJCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQg dGhlIG9yaWdpbiBpcyBub3QgeWV0IGNyZWF0ZWQgZm9yCisJCQkJCSAqIHRhYmxlc3luYyB3 b3JrZXIsIHRoaXMgY2FuIGhhcHBlbiBmb3IgdGhlIHN0YXRlcyBiZWZvcmUKKwkJCQkJICog U1VCUkVMX1NUQVRFX0ZJTklTSEVEQ09QWS4gVGhlIGFwcGx5IHdvcmtlciBjYW4gYWxzbwor CQkJCQkgKiBjb25jdXJyZW50bHkgdHJ5IHRvIGRyb3AgdGhlIG9yaWdpbiBhbmQgYnkgdGhp cyB0aW1lCisJCQkJCSAqIHRoZSBvcmlnaW4gbWlnaHQgYmUgYWxyZWFkeSByZW1vdmVkLiBG b3IgdGhlc2UgcmVhc29ucywKKwkJCQkJICogcGFzc2luZyBtaXNzaW5nX29rID0gdHJ1ZS4K KwkJCQkJICovCisJCQkJCVJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvclRhYmxlc3luYyhzdWIt Pm9pZCwgcmVsaWQsIG9yaWdpbm5hbWUsCisJCQkJCQkJCQkJCQkJICBzaXplb2Yob3JpZ2lu bmFtZSkpOworCQkJCQlyZXBsb3JpZ2luX2Ryb3BfYnlfbmFtZShvcmlnaW5uYW1lLCB0cnVl LCBmYWxzZSk7CisJCQkJfQorCisJCQkJZXJlcG9ydChERUJVRzEsCisJCQkJCQkoZXJybXNn X2ludGVybmFsKCJ0YWJsZSBcIiVzLiVzXCIgcmVtb3ZlZCBmcm9tIHN1YnNjcmlwdGlvbiBc IiVzXCIiLAorCQkJCQkJCQkJCSBnZXRfbmFtZXNwYWNlX25hbWUoZ2V0X3JlbF9uYW1lc3Bh Y2UocmVsaWQpKSwKKwkJCQkJCQkJCQkgZ2V0X3JlbF9uYW1lKHJlbGlkKSwKKwkJCQkJCQkJ CQkgc3ViLT5uYW1lKSkpOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogRHJvcCB0aGUgdGFi bGVzeW5jIHNsb3RzIGFzc29jaWF0ZWQgd2l0aCByZW1vdmVkIHRhYmxlcy4gVGhpcyBoYXMK KwkJICogdG8gYmUgYXQgdGhlIGVuZCBiZWNhdXNlIG90aGVyd2lzZSBpZiB0aGVyZSBpcyBh biBlcnJvciB3aGlsZSBkb2luZworCQkgKiB0aGUgZGF0YWJhc2Ugb3BlcmF0aW9ucyB3ZSB3 b24ndCBiZSBhYmxlIHRvIHJvbGxiYWNrIGRyb3BwZWQgc2xvdHMuCisJCSAqLworCQlmb3Ig KG9mZiA9IDA7IG9mZiA8IHJlbW92ZV9yZWxfbGVuOyBvZmYrKykKKwkJeworCQkJaWYgKHN1 Yl9yZW1vdmVfcmVsc1tvZmZdLnN0YXRlICE9IFNVQlJFTF9TVEFURV9SRUFEWSAmJgorCQkJ CXN1Yl9yZW1vdmVfcmVsc1tvZmZdLnN0YXRlICE9IFNVQlJFTF9TVEFURV9TWU5DRE9ORSkK KwkJCXsKKwkJCQljaGFyCQlzeW5jc2xvdG5hbWVbTkFNRURBVEFMRU5dID0gezB9OworCisJ CQkJLyoKKwkJCQkgKiBGb3IgUkVBRFkvU1lOQ0RPTkUgc3RhdGVzIHdlIGtub3cgdGhlIHRh Ymxlc3luYyBzbG90IGhhcworCQkJCSAqIGFscmVhZHkgYmVlbiBkcm9wcGVkIGJ5IHRoZSB0 YWJsZXN5bmMgd29ya2VyLgorCQkJCSAqCisJCQkJICogRm9yIG90aGVyIHN0YXRlcywgdGhl cmUgaXMgbm8gY2VydGFpbnR5LCBtYXliZSB0aGUgc2xvdAorCQkJCSAqIGRvZXMgbm90IGV4 aXN0IHlldC4gQWxzbywgaWYgd2UgZmFpbCBhZnRlciByZW1vdmluZyBzb21lIG9mCisJCQkJ ICogdGhlIHNsb3RzLCBuZXh0IHRpbWUsIGl0IHdpbGwgYWdhaW4gdHJ5IHRvIGRyb3AgYWxy ZWFkeQorCQkJCSAqIGRyb3BwZWQgc2xvdHMgYW5kIGZhaWwuIEZvciB0aGVzZSByZWFzb25z LCB3ZSBhbGxvdworCQkJCSAqIG1pc3Npbmdfb2sgPSB0cnVlIGZvciB0aGUgZHJvcC4KKwkJ CQkgKi8KKwkJCQlSZXBsaWNhdGlvblNsb3ROYW1lRm9yVGFibGVzeW5jKHN1Yi0+b2lkLCBz dWJfcmVtb3ZlX3JlbHNbb2ZmXS5yZWxpZCwKKwkJCQkJCQkJCQkJCXN5bmNzbG90bmFtZSwg c2l6ZW9mKHN5bmNzbG90bmFtZSkpOworCQkJCVJlcGxpY2F0aW9uU2xvdERyb3BBdFB1Yk5v ZGUod3Jjb25uLCBzeW5jc2xvdG5hbWUsIHRydWUpOworCQkJfQorCQl9CisKIAl9CiAJUEdf RklOQUxMWSgpOwogCXsKQEAgLTE2MTQsNiArMTgxNyw3NSBAQCBmZXRjaF90YWJsZV9saXN0 KFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uLCBMaXN0ICpwdWJsaWNhdGlvbnMpCiAJcmV0dXJu IHRhYmxlbGlzdDsKIH0KIAorLyoKKyAqIEdldCB0aGUgbGlzdCBvZiBzZXF1ZW5jZXMgd2hp Y2ggYmVsb25nIHRvIHNwZWNpZmllZCBwdWJsaWNhdGlvbnMgb24gdGhlCisgKiBwdWJsaXNo ZXIgY29ubmVjdGlvbi4KKyAqLworc3RhdGljIExpc3QgKgorZmV0Y2hfc2VxdWVuY2VfbGlz dChXYWxSZWNlaXZlckNvbm4gKndyY29ubiwgTGlzdCAqcHVibGljYXRpb25zKQoreworCVdh bFJjdkV4ZWNSZXN1bHQgKnJlczsKKwlTdHJpbmdJbmZvRGF0YSBjbWQ7CisJVHVwbGVUYWJs ZVNsb3QgKnNsb3Q7CisJT2lkCQkJdGFibGVSb3dbMl0gPSB7VEVYVE9JRCwgVEVYVE9JRH07 CisJTGlzdENlbGwgICAqbGM7CisJYm9vbAkJZmlyc3Q7CisJTGlzdAkgICAqdGFibGVsaXN0 ID0gTklMOworCisJQXNzZXJ0KGxpc3RfbGVuZ3RoKHB1YmxpY2F0aW9ucykgPiAwKTsKKwor CWluaXRTdHJpbmdJbmZvKCZjbWQpOworCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwg IlNFTEVDVCBESVNUSU5DVCBzLnNjaGVtYW5hbWUsIHMuc2VxdWVuY2VuYW1lXG4iCisJCQkJ CQkgICAiICBGUk9NIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25fc2VxdWVuY2VzIHNcbiIK KwkJCQkJCSAgICIgV0hFUkUgcy5wdWJuYW1lIElOICgiKTsKKwlmaXJzdCA9IHRydWU7CisJ Zm9yZWFjaChsYywgcHVibGljYXRpb25zKQorCXsKKwkJY2hhcgkgICAqcHVibmFtZSA9IHN0 clZhbChsZmlyc3QobGMpKTsKKworCQlpZiAoZmlyc3QpCisJCQlmaXJzdCA9IGZhbHNlOwor CQllbHNlCisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZjbWQsICIsICIpOworCisJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgcXVvdGVfbGl0ZXJhbF9jc3RyKHB1Ym5hbWUp KTsKKwl9CisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmNtZCwgJyknKTsKKworCXJlcyA9IHdh bHJjdl9leGVjKHdyY29ubiwgY21kLmRhdGEsIDIsIHRhYmxlUm93KTsKKwlwZnJlZShjbWQu ZGF0YSk7CisKKwlpZiAocmVzLT5zdGF0dXMgIT0gV0FMUkNWX09LX1RVUExFUykKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJybXNnKCJjb3VsZCBub3QgcmVjZWl2ZSBsaXN0IG9mIHJl cGxpY2F0ZWQgdGFibGVzIGZyb20gdGhlIHB1Ymxpc2hlcjogJXMiLAorCQkJCQkJcmVzLT5l cnIpKSk7CisKKwkvKiBQcm9jZXNzIHRhYmxlcy4gKi8KKwlzbG90ID0gTWFrZVNpbmdsZVR1 cGxlVGFibGVTbG90KHJlcy0+dHVwbGVkZXNjLCAmVFRTT3BzTWluaW1hbFR1cGxlKTsKKwl3 aGlsZSAodHVwbGVzdG9yZV9nZXR0dXBsZXNsb3QocmVzLT50dXBsZXN0b3JlLCB0cnVlLCBm YWxzZSwgc2xvdCkpCisJeworCQljaGFyCSAgICpuc3BuYW1lOworCQljaGFyCSAgICpyZWxu YW1lOworCQlib29sCQlpc251bGw7CisJCVJhbmdlVmFyICAgKnJ2OworCisJCW5zcG5hbWUg PSBUZXh0RGF0dW1HZXRDU3RyaW5nKHNsb3RfZ2V0YXR0cihzbG90LCAxLCAmaXNudWxsKSk7 CisJCUFzc2VydCghaXNudWxsKTsKKwkJcmVsbmFtZSA9IFRleHREYXR1bUdldENTdHJpbmco c2xvdF9nZXRhdHRyKHNsb3QsIDIsICZpc251bGwpKTsKKwkJQXNzZXJ0KCFpc251bGwpOwor CisJCXJ2ID0gbWFrZVJhbmdlVmFyKG5zcG5hbWUsIHJlbG5hbWUsIC0xKTsKKwkJdGFibGVs aXN0ID0gbGFwcGVuZCh0YWJsZWxpc3QsIHJ2KTsKKworCQlFeGVjQ2xlYXJUdXBsZShzbG90 KTsKKwl9CisJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChzbG90KTsKKworCXdhbHJj dl9jbGVhcl9yZXN1bHQocmVzKTsKKworCXJldHVybiB0YWJsZWxpc3Q7Cit9CisKIC8qCiAg KiBUaGlzIGlzIHRvIHJlcG9ydCB0aGUgY29ubmVjdGlvbiBmYWlsdXJlIHdoaWxlIGRyb3Bw aW5nIHJlcGxpY2F0aW9uIHNsb3RzLgogICogSGVyZSwgd2UgcmVwb3J0IHRoZSBXQVJOSU5H IGZvciBhbGwgdGFibGVzeW5jIHNsb3RzIHNvIHRoYXQgdXNlciBjYW4gZHJvcApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwppbmRleCA1NzRkN2QyN2ZkLi42ZjBk NDJkNTUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRp b24uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUmVwbGljYXRpb24uYwpAQCAt NjA4LDcgKzYwOCw3IEBAIHZvaWQKIENoZWNrU3Vic2NyaXB0aW9uUmVsa2luZChjaGFyIHJl bGtpbmQsIGNvbnN0IGNoYXIgKm5zcG5hbWUsCiAJCQkJCQkgY29uc3QgY2hhciAqcmVsbmFt ZSkKIHsKLQlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmIHJlbGtpbmQgIT0g UkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwlpZiAocmVsa2luZCAhPSBSRUxLSU5EX1JF TEFUSU9OICYmIHJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSAmJiByZWxr aW5kICE9IFJFTEtJTkRfU0VRVUVOQ0UpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCiAJCQkJIGVycm1zZygiY2Fubm90IHVz ZSByZWxhdGlvbiBcIiVzLiVzXCIgYXMgbG9naWNhbCByZXBsaWNhdGlvbiB0YXJnZXQiLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCBkZjBiNzQ3ODgzLi42YTU3MTg1NzJmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtNDg0Niw2ICs0ODQ2LDcgQEAgX2NvcHlDcmVhdGVQ dWJsaWNhdGlvblN0bXQoY29uc3QgQ3JlYXRlUHVibGljYXRpb25TdG10ICpmcm9tKQogCUNP UFlfTk9ERV9GSUVMRChvcHRpb25zKTsKIAlDT1BZX05PREVfRklFTEQocHVib2JqZWN0cyk7 CiAJQ09QWV9TQ0FMQVJfRklFTEQoZm9yX2FsbF90YWJsZXMpOworCUNPUFlfU0NBTEFSX0ZJ RUxEKGZvcl9hbGxfc2VxdWVuY2VzKTsKIAogCXJldHVybiBuZXdub2RlOwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9k ZXMvZXF1YWxmdW5jcy5jCmluZGV4IGNiN2RkZDQ2M2MuLjVkY2NjMGQwYWQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9u b2Rlcy9lcXVhbGZ1bmNzLmMKQEAgLTIzMzYsNiArMjMzNiw3IEBAIF9lcXVhbEFsdGVyUHVi bGljYXRpb25TdG10KGNvbnN0IEFsdGVyUHVibGljYXRpb25TdG10ICphLAogCUNPTVBBUkVf Tk9ERV9GSUVMRChvcHRpb25zKTsKIAlDT01QQVJFX05PREVfRklFTEQocHVib2JqZWN0cyk7 CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoZm9yX2FsbF90YWJsZXMpOworCUNPTVBBUkVfU0NB TEFSX0ZJRUxEKGZvcl9hbGxfc2VxdWVuY2VzKTsKIAlDT01QQVJFX1NDQUxBUl9GSUVMRChh Y3Rpb24pOwogCiAJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCAzZDRkZDQzZTQ3 Li5mMDM3YzE3OTg1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55Cisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTk3NjIsNiArOTc2MiwyNiBAQCBQ dWJsaWNhdGlvbk9ialNwZWM6CiAJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElDQVRJT05P QkpfVEFCTEVfSU5fQ1VSX1NDSEVNQTsKIAkJCQkJJCQtPmxvY2F0aW9uID0gQDU7CiAJCQkJ fQorCQkJfCBTRVFVRU5DRSByZWxhdGlvbl9leHByCisJCQkJeworCQkJCQkkJCA9IG1ha2VO b2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CisJCQkJCSQkLT5wdWJvYmp0eXBlID0gUFVCTElD QVRJT05PQkpfU0VRVUVOQ0U7CisJCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1Ymxp Y2F0aW9uVGFibGUpOworCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0gJDI7CisJCQkJ fQorCQkJfCBBTEwgU0VRVUVOQ0UgSU5fUCBTQ0hFTUEgQ29sSWQKKwkJCQl7CisJCQkJCSQk ID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKKwkJCQkJJCQtPnB1Ym9ianR5cGUg PSBQVUJMSUNBVElPTk9CSl9TRVFVRU5DRV9JTl9TQ0hFTUE7CisJCQkJCSQkLT5uYW1lID0g JDU7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEA1OworCQkJCX0KKwkJCXwgQUxMIFNFUVVFTkNF UyBJTl9QIFNDSEVNQSBDVVJSRU5UX1NDSEVNQQorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9k ZShQdWJsaWNhdGlvbk9ialNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FU SU9OT0JKX1NFUVVFTkNFX0lOX0NVUl9TQ0hFTUE7CisJCQkJCSQkLT5sb2NhdGlvbiA9IEA1 OworCQkJCX0KIAkJCXwgQ29sSWQKIAkJCQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGlj YXRpb25PYmpTcGVjKTsKQEAgLTEwMDk3LDYgKzEwMTE3LDEyIEBAIFVubGlzdGVuU3RtdDoK IAkJCQl9CiAJCTsKIAorLyoKKyAqIEZJWE1FCisgKgorICogb3B0X3B1YmxpY2F0aW9uX2Zv cl9zZXF1ZW5jZXMgYW5kIHB1YmxpY2F0aW9uX2Zvcl9zZXF1ZW5jZXMgc2hvdWxkIGJlCisg KiBjb3BpZXMgZm9yIHNlcXVlbmNlcworICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KgogICoKQEAgLTEwMTA1LDYgKzEwMTMxLDEyIEBAIFVubGlzdGVuU3RtdDoKICAqCQlCRUdJ TiAvIENPTU1JVCAvIFJPTExCQUNLCiAgKgkJKGFsc28gb2xkZXIgdmVyc2lvbnMgRU5EIC8g QUJPUlQpCiAgKgorICogQUxURVIgUFVCTElDQVRJT04gbmFtZSBBREQgU0VRVUVOQ0Ugc2Vx dWVuY2UgWywgc2VxdWVuY2UyXQorICoKKyAqIEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgRFJP UCBTRVFVRU5DRSBzZXF1ZW5jZSBbLCBzZXF1ZW5jZTJdCisgKgorICogQUxURVIgUFVCTElD QVRJT04gbmFtZSBTRVQgU0VRVUVOQ0Ugc2VxdWVuY2UgWywgc2VxdWVuY2UyXQorICoKICAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KIAogVHJhbnNhY3Rpb25TdG10OgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCmluZGV4IDlmNWJmNGI2MzkuLjc5YzZm NjI2MzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJv dG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKQEAg LTY0Nyw2ICs2NDcsNTYgQEAgbG9naWNhbHJlcF93cml0ZV9tZXNzYWdlKFN0cmluZ0luZm8g b3V0LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCiAJcHFfc2VuZGJ5dGVz KG91dCwgbWVzc2FnZSwgc3opOwogfQogCisvKgorICogV3JpdGUgU0VRVUVOQ0UgdG8gc3Ry ZWFtCisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfd3JpdGVfc2VxdWVuY2UoU3RyaW5nSW5mbyBv dXQsIFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkgIFhMb2dSZWNQ dHIgbHNuLCBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkgIGludDY0IGxhc3RfdmFsdWUs IGludDY0IGxvZ19jbnQsIGJvb2wgaXNfY2FsbGVkKQoreworCXVpbnQ4CQlmbGFncyA9IDA7 CisJY2hhcgkgICAqcmVsbmFtZTsKKworCXBxX3NlbmRieXRlKG91dCwgTE9HSUNBTF9SRVBf TVNHX1NFUVVFTkNFKTsKKworCS8qIHRyYW5zYWN0aW9uIElEIChpZiBub3QgdmFsaWQsIHdl J3JlIG5vdCBzdHJlYW1pbmcpICovCisJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkp CisJCXBxX3NlbmRpbnQzMihvdXQsIHhpZCk7CisKKwlwcV9zZW5kaW50OChvdXQsIGZsYWdz KTsKKwlwcV9zZW5kaW50NjQob3V0LCBsc24pOworCisJbG9naWNhbHJlcF93cml0ZV9uYW1l c3BhY2Uob3V0LCBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpKTsKKwlyZWxuYW1lID0gUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKTsKKwlwcV9zZW5kc3RyaW5nKG91dCwgcmVsbmFt ZSk7CisKKwlwcV9zZW5kaW50OChvdXQsIHRyYW5zYWN0aW9uYWwpOworCXBxX3NlbmRpbnQ2 NChvdXQsIGxhc3RfdmFsdWUpOworCXBxX3NlbmRpbnQ2NChvdXQsIGxvZ19jbnQpOworCXBx X3NlbmRpbnQ4KG91dCwgaXNfY2FsbGVkKTsKK30KKworLyoKKyAqIFJlYWQgU0VRVUVOQ0Ug ZnJvbSB0aGUgc3RyZWFtLgorICovCit2b2lkCitsb2dpY2FscmVwX3JlYWRfc2VxdWVuY2Uo U3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFNlcXVlbmNlICpzZXFkYXRhKQoreworCS8qIFhY WCBza2lwcGluZyBmbGFncyBhbmQgbHNuICovCisJcHFfZ2V0bXNnaW50KGluLCAxKTsKKwlw cV9nZXRtc2dpbnQ2NChpbik7CisKKwkvKiBSZWFkIHJlbGF0aW9uIG5hbWUgZnJvbSBzdHJl YW0gKi8KKwlzZXFkYXRhLT5uc3BuYW1lID0gcHN0cmR1cChsb2dpY2FscmVwX3JlYWRfbmFt ZXNwYWNlKGluKSk7CisJc2VxZGF0YS0+c2VxbmFtZSA9IHBzdHJkdXAocHFfZ2V0bXNnc3Ry aW5nKGluKSk7CisKKwlzZXFkYXRhLT50cmFuc2FjdGlvbmFsID0gcHFfZ2V0bXNnaW50KGlu LCAxKTsKKwlzZXFkYXRhLT5sYXN0X3ZhbHVlID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCXNl cWRhdGEtPmxvZ19jbnQgPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJc2VxZGF0YS0+aXNfY2Fs bGVkID0gcHFfZ2V0bXNnaW50KGluLCAxKTsKK30KKwogLyoKICAqIFdyaXRlIHJlbGF0aW9u IGRlc2NyaXB0aW9uIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgogICovCkBAIC0xMjAzLDYgKzEy NTMsOCBAQCBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rp b24pCiAJCQlyZXR1cm4gIlNUUkVBTSBBQk9SVCI7CiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNH X1NUUkVBTV9QUkVQQVJFOgogCQkJcmV0dXJuICJTVFJFQU0gUFJFUEFSRSI7CisJCWNhc2Ug TE9HSUNBTF9SRVBfTVNHX1NFUVVFTkNFOgorCQkJcmV0dXJuICJTRVFVRU5DRSI7CiAJfQog CiAJZWxvZyhFUlJPUiwgImludmFsaWQgbG9naWNhbCByZXBsaWNhdGlvbiBtZXNzYWdlIHR5 cGUgXCIlY1wiIiwgYWN0aW9uKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3RhYmxlc3luYy5jCmluZGV4IGYwNzk4M2E0M2MuLjI0MzY5YTE1MjIgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtMTAwLDYg KzEwMCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29weS5o IgorI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCkBAIC0zNTcsNiArMzU4LDEyIEBAIHByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9y X3N5bmMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKICAqCiAgKiBJZiB0aGUgc3luY2hyb25p emF0aW9uIHBvc2l0aW9uIGlzIHJlYWNoZWQgKFNZTkNET05FKSwgdGhlbiB0aGUgdGFibGUg Y2FuCiAgKiBiZSBtYXJrZWQgYXMgUkVBRFkgYW5kIGlzIG5vIGxvbmdlciB0cmFja2VkLgor ICoKKyAqIFhYWCBUaGlzIG5lZWRzIHRvIGhhbmRsZSBzZXF1ZW5jZXMgdG9vIC0gYWZ0ZXIg QWx0ZXJTdWJzY3JpcHRpb25fcmVmcmVzaAorICogc3RhcnRzIGNhcmluZyBhYm91dCBzZXF1 ZW5jZXMsIEdldFN1YnNjcmlwdGlvbk5vdFJlYWR5UmVsYXRpb25zIHdvbid0CisgKiByZXR1 cm4ganVzdCB0YWJsZXMsIGFuZCB3ZSdsbCBoYXZlIHRvIHN5bmMgdGhlbSBoZXJlLiBOb3Qg c3VyZSBpdCdzIHdvcnRoCisgKiBjcmVhdGluZyBhIG5ldyAic3luYyIgd29ya2VyIHBlciBz ZXF1ZW5jZSwgbWF5YmUgd2Ugc2hvdWxkIGp1c3Qgc3luYyB0aGVtCisgKiBpbiB0aGUgY3Vy cmVudCBwcm9jZXNzIChpdCdzIHByZXR0eSBsaWdodC13ZWlnaHQpLgogICovCiBzdGF0aWMg dm9pZAogcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJy ZW50X2xzbikKQEAgLTg3MSw2ICs4NzgsOTkgQEAgY29weV90YWJsZShSZWxhdGlvbiByZWwp CiAJbG9naWNhbHJlcF9yZWxfY2xvc2UocmVsbWFwZW50cnksIE5vTG9jayk7CiB9CiAKKwor CisvKgorICogRklYTUUgYWRkIGNvbW1lbnQKKyAqLworc3RhdGljIHZvaWQKK2ZldGNoX3Nl cXVlbmNlX2RhdGEoY2hhciAqbnNwbmFtZSwgY2hhciAqcmVsbmFtZSwKKwkJCQkJaW50NjQg Kmxhc3RfdmFsdWUsIGludDY0ICpsb2dfY250LCBib29sICppc19jYWxsZWQpCit7CisJV2Fs UmN2RXhlY1Jlc3VsdCAqcmVzOworCVN0cmluZ0luZm9EYXRhIGNtZDsKKwlUdXBsZVRhYmxl U2xvdCAqc2xvdDsKKwlPaWQJCQl0YWJsZVJvd1szXSA9IHtJTlQ4T0lELCBJTlQ4T0lELCBC T09MT0lEfTsKKworCWluaXRTdHJpbmdJbmZvKCZjbWQpOworCWFwcGVuZFN0cmluZ0luZm8o JmNtZCwgIlNFTEVDVCBsYXN0X3ZhbHVlLCBsb2dfY250LCBpc19jYWxsZWRcbiIKKwkJCQkJ ICAgIiAgRlJPTSAlcyIsIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKG5zcG5hbWUsIHJl bG5hbWUpKTsKKworCXJlcyA9IHdhbHJjdl9leGVjKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4s IGNtZC5kYXRhLCAzLCB0YWJsZVJvdyk7CisJcGZyZWUoY21kLmRhdGEpOworCisJaWYgKHJl cy0+c3RhdHVzICE9IFdBTFJDVl9PS19UVVBMRVMpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJ KGVycm1zZygiY291bGQgbm90IHJlY2VpdmUgbGlzdCBvZiByZXBsaWNhdGVkIHRhYmxlcyBm cm9tIHRoZSBwdWJsaXNoZXI6ICVzIiwKKwkJCQkJCXJlcy0+ZXJyKSkpOworCisJLyogUHJv Y2VzcyB0aGUgc2VxdWVuY2UuICovCisJc2xvdCA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xv dChyZXMtPnR1cGxlZGVzYywgJlRUU09wc01pbmltYWxUdXBsZSk7CisJd2hpbGUgKHR1cGxl c3RvcmVfZ2V0dHVwbGVzbG90KHJlcy0+dHVwbGVzdG9yZSwgdHJ1ZSwgZmFsc2UsIHNsb3Qp KQorCXsKKwkJYm9vbAkJaXNudWxsOworCisJCSpsYXN0X3ZhbHVlID0gRGF0dW1HZXRJbnQ2 NChzbG90X2dldGF0dHIoc2xvdCwgMSwgJmlzbnVsbCkpOworCQlBc3NlcnQoIWlzbnVsbCk7 CisKKwkJKmxvZ19jbnQgPSBEYXR1bUdldEludDY0KHNsb3RfZ2V0YXR0cihzbG90LCAyLCAm aXNudWxsKSk7CisJCUFzc2VydCghaXNudWxsKTsKKworCQkqaXNfY2FsbGVkID0gRGF0dW1H ZXRCb29sKHNsb3RfZ2V0YXR0cihzbG90LCAzLCAmaXNudWxsKSk7CisJCUFzc2VydCghaXNu dWxsKTsKKworCQlFeGVjQ2xlYXJUdXBsZShzbG90KTsKKwl9CisJRXhlY0Ryb3BTaW5nbGVU dXBsZVRhYmxlU2xvdChzbG90KTsKKworCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKK30K KworLyoKKyAqIENvcHkgZXhpc3RpbmcgZGF0YSBvZiBhIHNlcXVlbmNlIGZyb20gcHVibGlz aGVyLgorICoKKyAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbG9ja2luZyB0aGUgbG9j YWwgcmVsYXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCitjb3B5X3NlcXVlbmNlKFJlbGF0aW9u IHJlbCkKK3sKKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbG1hcGVudHJ5OworCUxvZ2lj YWxSZXBSZWxhdGlvbiBscmVsOworCVN0cmluZ0luZm9EYXRhIGNtZDsKKwlpbnQ2NAkJbGFz dF92YWx1ZSA9IDAsCisJCQkJbG9nX2NudCA9IDA7CisJYm9vbAkJaXNfY2FsbGVkID0gMDsK KworCS8qIEdldCB0aGUgcHVibGlzaGVyIHJlbGF0aW9uIGluZm8uICovCisJZmV0Y2hfcmVt b3RlX3RhYmxlX2luZm8oZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNl KHJlbCkpLAorCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksICZscmVsKTsK KworCS8qIFB1dCB0aGUgcmVsYXRpb24gaW50byByZWxtYXAuICovCisJbG9naWNhbHJlcF9y ZWxtYXBfdXBkYXRlKCZscmVsKTsKKworCS8qIE1hcCB0aGUgcHVibGlzaGVyIHJlbGF0aW9u IHRvIGxvY2FsIG9uZS4gKi8KKwlyZWxtYXBlbnRyeSA9IGxvZ2ljYWxyZXBfcmVsX29wZW4o bHJlbC5yZW1vdGVpZCwgTm9Mb2NrKTsKKwlBc3NlcnQocmVsID09IHJlbG1hcGVudHJ5LT5s b2NhbHJlbCk7CisKKwkvKiBTdGFydCBjb3B5IG9uIHRoZSBwdWJsaXNoZXIuICovCisJaW5p dFN0cmluZ0luZm8oJmNtZCk7CisKKwlBc3NlcnQobHJlbC5yZWxraW5kID09IFJFTEtJTkRf U0VRVUVOQ0UpOworCisJZmV0Y2hfc2VxdWVuY2VfZGF0YShscmVsLm5zcG5hbWUsIGxyZWwu cmVsbmFtZSwgJmxhc3RfdmFsdWUsICZsb2dfY250LCAmaXNfY2FsbGVkKTsKKworCWVsb2co V0FSTklORywgInNlcXVlbmNlICVzIGluZm8gbGFzdF92YWx1ZSAlbGQgbG9nX2NudCAlbGQg aXNfY2FsbGVkICVkIiwKKwkJIHF1b3RlX3F1YWxpZmllZF9pZGVudGlmaWVyKGxyZWwubnNw bmFtZSwgbHJlbC5yZWxuYW1lKSwKKwkJIGxhc3RfdmFsdWUsIGxvZ19jbnQsIGlzX2NhbGxl ZCk7CisKKwlSZXNldFNlcXVlbmNlMihSZWxhdGlvbkdldFJlbGlkKHJlbCksIGxhc3RfdmFs dWUsIGxvZ19jbnQsIGlzX2NhbGxlZCk7CisKKwlsb2dpY2FscmVwX3JlbF9jbG9zZShyZWxt YXBlbnRyeSwgTm9Mb2NrKTsKK30KKworCisKKwogLyoKICAqIERldGVybWluZSB0aGUgdGFi bGVzeW5jIHNsb3QgbmFtZS4KICAqCkBAIC0xMTA2LDEwICsxMjA2LDIwIEBAIExvZ2ljYWxS ZXBTeW5jVGFibGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJCQkJCQlv cmlnaW5uYW1lKSkpOwogCX0KIAotCS8qIE5vdyBkbyB0aGUgaW5pdGlhbCBkYXRhIGNvcHkg Ki8KLQlQdXNoQWN0aXZlU25hcHNob3QoR2V0VHJhbnNhY3Rpb25TbmFwc2hvdCgpKTsKLQlj b3B5X3RhYmxlKHJlbCk7Ci0JUG9wQWN0aXZlU25hcHNob3QoKTsKKwlpZiAoZ2V0X3JlbF9y ZWxraW5kKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkgPT0gUkVMS0lORF9TRVFVRU5DRSkKKwl7 CisJCS8qIE5vdyBkbyB0aGUgaW5pdGlhbCBzZXF1ZW5jZSBjb3B5ICovCisJCVB1c2hBY3Rp dmVTbmFwc2hvdChHZXRUcmFuc2FjdGlvblNuYXBzaG90KCkpOworCQljb3B5X3NlcXVlbmNl KHJlbCk7CisJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisJfQorCWVsc2UKKwl7CisJCS8qIE5v dyBkbyB0aGUgaW5pdGlhbCBkYXRhIGNvcHkgKi8KKwkJUHVzaEFjdGl2ZVNuYXBzaG90KEdl dFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCWNvcHlfdGFibGUocmVsKTsKKwkJUG9wQWN0 aXZlU25hcHNob3QoKTsKKwl9CiAKIAlyZXMgPSB3YWxyY3ZfZXhlYyhMb2dSZXBXb3JrZXJX YWxSY3ZDb25uLCAiQ09NTUlUIiwgMCwgTlVMTCk7CiAJaWYgKHJlcy0+c3RhdHVzICE9IFdB TFJDVl9PS19DT01NQU5EKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMKaW5kZXggMmU3OTMwMmE0OC4uMDg5ZDk4OWRkNyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0xNDQsNiArMTQ0LDcgQEAKICNpbmNs dWRlICJjYXRhbG9nL3BnX3RhYmxlc3BhY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJs ZWNtZHMuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZXNwYWNlLmgiCisjaW5jbHVkZSAi Y29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAj aW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVj UGFydGl0aW9uLmgiCkBAIC0xMDkxLDYgKzEwOTIsNjEgQEAgYXBwbHlfaGFuZGxlX29yaWdp bihTdHJpbmdJbmZvIHMpCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiT1JJR0lOIG1lc3NhZ2Ug c2VudCBvdXQgb2Ygb3JkZXIiKSkpOwogfQogCisvKgorICogSGFuZGxlIFNFUVVFTkNFIG1l c3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVfc2VxdWVuY2UoU3RyaW5n SW5mbyBzKQoreworCUxvZ2ljYWxSZXBTZXF1ZW5jZQlzZXE7CisJT2lkCQkJCQlyZWxpZDsK KworCWlmIChoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTE9HSUNBTF9SRVBfTVNHX1NF UVVFTkNFLCBzKSkKKwkJcmV0dXJuOworCisJbG9naWNhbHJlcF9yZWFkX3NlcXVlbmNlKHMs ICZzZXEpOworCisJLyoKKwkgKiBOb24tdHJhbnNhY3Rpb25hbCBzZXF1ZW5jZSB1cGRhdGVz IHNob3VsZCBub3QgYmUgcGFydCBvZiBhIHJlbW90ZQorCSAqIHRyYW5zYWN0aW9uLiBUaGVy ZSBzaG91bGQgbm90IGJlIGFueSBydW5uaW5nIHRyYW5zYWN0aW9uLgorCSAqLworCUFzc2Vy dCgoIXNlcS50cmFuc2FjdGlvbmFsKSB8fCBpbl9yZW1vdGVfdHJhbnNhY3Rpb24pOworCUFz c2VydCghKCFzZXEudHJhbnNhY3Rpb25hbCAmJiBpbl9yZW1vdGVfdHJhbnNhY3Rpb24pKTsK KwlBc3NlcnQoISghc2VxLnRyYW5zYWN0aW9uYWwgJiYgSXNUcmFuc2FjdGlvblN0YXRlKCkp KTsKKworCS8qCisJICogTWFrZSBzdXJlIHdlJ3JlIGluIGEgdHJhbnNhY3Rpb24gKG5lZWRl ZCBieSBSZXNldFNlcXVlbmNlMikuIEZvcgorCSAqIG5vbi10cmFuc2FjdGlvbmFsIHVwZGF0 ZXMgd2UncmUgZ3VhcmFudGVlZCB0byBzdGFydCBhIG5ldyBvbmUsCisJICogYW5kIHdlJ2xs IGNvbW1pdCBpdCBhdCB0aGUgZW5kLgorCSAqLworCWlmICghSXNUcmFuc2FjdGlvblN0YXRl KCkpCisJeworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQltYXliZV9yZXJlYWRf c3Vic2NyaXB0aW9uKCk7CisJfQorCisJcmVsaWQgPSBSYW5nZVZhckdldFJlbGlkKG1ha2VS YW5nZVZhcihzZXEubnNwbmFtZSwKKwkJCQkJCQkJCQkgIHNlcS5zZXFuYW1lLCAtMSksCisJ CQkJCQkJIFJvd0V4Y2x1c2l2ZUxvY2ssIGZhbHNlKTsKKworCS8qIGxvY2sgdGhlIHNlcXVl bmNlIGluIEFjY2Vzc0V4Y2x1c2l2ZUxvY2ssIGFzIGV4cGVjdGVkIGJ5IFJlc2V0U2VxdWVu Y2UyICovCisJZWxvZyhXQVJOSU5HLCAibG9ja2luZyBzZXF1ZW5jZSAlZCBpbiBleGNsdXNp dmUgbW9kZSIsIHJlbGlkKTsKKwlMb2NrUmVsYXRpb25PaWQocmVsaWQsIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2spOworCisJZWxvZyhXQVJOSU5HLCAiYXBwbHlpbmcgc2VxdWVuY2UgJXMuJXMg dHJhbnNhY3Rpb25hbCAlZCBsYXN0X3ZhbHVlICVsZCBsb2dfY250ICVsZCBpc19jYWxsZWQg JWQiLAorCQkgc2VxLm5zcG5hbWUsIHNlcS5zZXFuYW1lLCBzZXEudHJhbnNhY3Rpb25hbCwg c2VxLmxhc3RfdmFsdWUsIHNlcS5sb2dfY250LCBzZXEuaXNfY2FsbGVkKTsKKworCS8qIGFw cGx5IHRoZSBzZXF1ZW5jZSBjaGFuZ2UgKi8KKwlSZXNldFNlcXVlbmNlMihyZWxpZCwgc2Vx Lmxhc3RfdmFsdWUsIHNlcS5sb2dfY250LCBzZXEuaXNfY2FsbGVkKTsKKworCS8qCisJICog Q29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICh3ZSBvbmx5IGRvIHRoaXMgd2hl biBub3QgaW4KKwkgKiByZW1vdGUgdHJhbnNhY3Rpb24sIGkuZS4gZm9yIG5vbi10cmFuc2Fj dGlvbmFsIHNlcXVlbmNlIHVwZGF0ZXMuCisJICovCisJaWYgKCFpbl9yZW1vdGVfdHJhbnNh Y3Rpb24pCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQorCiAvKgogICogSGFu ZGxlIFNUUkVBTSBTVEFSVCBtZXNzYWdlLgogICovCkBAIC0yMzc0LDYgKzI0MzAsMTAgQEAg YXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKQogCQkJICovCiAJCQlicmVhazsKIAorCQlj YXNlIExPR0lDQUxfUkVQX01TR19TRVFVRU5DRToKKwkJCWFwcGx5X2hhbmRsZV9zZXF1ZW5j ZShzKTsKKwkJCXJldHVybjsKKwogCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RB UlQ6CiAJCQlhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KHMpOwogCQkJYnJlYWs7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA2ZjZh MjAzZGVhLi45YWI4YjFkNGVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTQ5LDYgKzQ5LDEwIEBAIHN0YXRpYyB2b2lkIHBnb3V0 cHV0X21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCSBSZW9y ZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCiAJCQkJCQkJIGJv b2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LAogCQkJCQkJCSBTaXplIHN6 LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK3N0YXRpYyB2b2lkIHBnb3V0cHV0X3NlcXVlbmNl KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKwkJCQkJCQkgIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwgWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sCisJCQkJCQkJICBSZWxhdGlvbiBy ZWwsIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkgIGludDY0IGxhc3RfdmFsdWUsIGlu dDY0IGxvZ19jbnQsIGJvb2wgaXNfY2FsbGVkKTsKIHN0YXRpYyBib29sIHBnb3V0cHV0X29y aWdpbl9maWx0ZXIoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkgICBS ZXBPcmlnaW5JZCBvcmlnaW5faWQpOwogc3RhdGljIHZvaWQgcGdvdXRwdXRfYmVnaW5fcHJl cGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LApAQCAtMTU5LDYgKzE2Myw3 IEBAIF9QR19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0UGx1Z2luQ2FsbGJhY2tzICpjYikK IAljYi0+Y2hhbmdlX2NiID0gcGdvdXRwdXRfY2hhbmdlOwogCWNiLT50cnVuY2F0ZV9jYiA9 IHBnb3V0cHV0X3RydW5jYXRlOwogCWNiLT5tZXNzYWdlX2NiID0gcGdvdXRwdXRfbWVzc2Fn ZTsKKwljYi0+c2VxdWVuY2VfY2IgPSBwZ291dHB1dF9zZXF1ZW5jZTsKIAljYi0+Y29tbWl0 X2NiID0gcGdvdXRwdXRfY29tbWl0X3R4bjsKIAogCWNiLT5iZWdpbl9wcmVwYXJlX2NiID0g cGdvdXRwdXRfYmVnaW5fcHJlcGFyZV90eG47CkBAIC0xNzUsNiArMTgwLDcgQEAgX1BHX291 dHB1dF9wbHVnaW5faW5pdChPdXRwdXRQbHVnaW5DYWxsYmFja3MgKmNiKQogCWNiLT5zdHJl YW1fY29tbWl0X2NiID0gcGdvdXRwdXRfc3RyZWFtX2NvbW1pdDsKIAljYi0+c3RyZWFtX2No YW5nZV9jYiA9IHBnb3V0cHV0X2NoYW5nZTsKIAljYi0+c3RyZWFtX21lc3NhZ2VfY2IgPSBw Z291dHB1dF9tZXNzYWdlOworCWNiLT5zdHJlYW1fc2VxdWVuY2VfY2IgPSBwZ291dHB1dF9z ZXF1ZW5jZTsKIAljYi0+c3RyZWFtX3RydW5jYXRlX2NiID0gcGdvdXRwdXRfdHJ1bmNhdGU7 CiAJLyogdHJhbnNhY3Rpb24gc3RyZWFtaW5nIC0gdHdvLXBoYXNlIGNvbW1pdCAqLwogCWNi LT5zdHJlYW1fcHJlcGFyZV9jYiA9IHBnb3V0cHV0X3N0cmVhbV9wcmVwYXJlX3R4bjsKQEAg LTE4OCw2ICsxOTQsNyBAQCBwYXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0ICpvcHRpb25z LCBQR091dHB1dERhdGEgKmRhdGEpCiAJYm9vbAkJcHVibGljYXRpb25fbmFtZXNfZ2l2ZW4g PSBmYWxzZTsKIAlib29sCQliaW5hcnlfb3B0aW9uX2dpdmVuID0gZmFsc2U7CiAJYm9vbAkJ bWVzc2FnZXNfb3B0aW9uX2dpdmVuID0gZmFsc2U7CisJYm9vbAkJc2VxdWVuY2VzX29wdGlv bl9naXZlbiA9IGZhbHNlOwogCWJvb2wJCXN0cmVhbWluZ19naXZlbiA9IGZhbHNlOwogCWJv b2wJCXR3b19waGFzZV9vcHRpb25fZ2l2ZW4gPSBmYWxzZTsKIApAQCAtMTk1LDYgKzIwMiw3 IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0 YSAqZGF0YSkKIAlkYXRhLT5zdHJlYW1pbmcgPSBmYWxzZTsKIAlkYXRhLT5tZXNzYWdlcyA9 IGZhbHNlOwogCWRhdGEtPnR3b19waGFzZSA9IGZhbHNlOworCWRhdGEtPnNlcXVlbmNlcyA9 IHRydWU7CiAKIAlmb3JlYWNoKGxjLCBvcHRpb25zKQogCXsKQEAgLTI2MCw2ICsyNjgsMTYg QEAgcGFyc2Vfb3V0cHV0X3BhcmFtZXRlcnMoTGlzdCAqb3B0aW9ucywgUEdPdXRwdXREYXRh ICpkYXRhKQogCiAJCQlkYXRhLT5tZXNzYWdlcyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOwog CQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInNlcXVlbmNlcyIpID09 IDApCisJCXsKKwkJCWlmIChzZXF1ZW5jZXNfb3B0aW9uX2dpdmVuKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkg ZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucyIpKSk7CisJCQlzZXF1 ZW5jZXNfb3B0aW9uX2dpdmVuID0gdHJ1ZTsKKworCQkJZGF0YS0+c2VxdWVuY2VzID0gZGVm R2V0Qm9vbGVhbihkZWZlbCk7CisJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZu YW1lLCAic3RyZWFtaW5nIikgPT0gMCkKIAkJewogCQkJaWYgKHN0cmVhbWluZ19naXZlbikK QEAgLTg1Niw2ICs4NzQsNTEgQEAgcGdvdXRwdXRfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdD b250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAlPdXRwdXRQbHVnaW5Xcml0 ZShjdHgsIHRydWUpOwogfQogCitzdGF0aWMgdm9pZAorcGdvdXRwdXRfc2VxdWVuY2UoTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhu LCBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwKKwkJCQkgIFJlbGF0aW9uIHJlbCwgYm9vbCB0 cmFuc2FjdGlvbmFsLAorCQkJCSAgaW50NjQgbGFzdF92YWx1ZSwgaW50NjQgbG9nX2NudCwg Ym9vbCBpc19jYWxsZWQpCit7CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0 YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlUcmFuc2FjdGlvbklkIHhpZCA9 IEludmFsaWRUcmFuc2FjdGlvbklkOworCVJlbGF0aW9uU3luY0VudHJ5ICpyZWxlbnRyeTsK KworCWlmICghZGF0YS0+c2VxdWVuY2VzKQorCQlyZXR1cm47CisKKwlpZiAoIWlzX3B1Ymxp c2hhYmxlX3JlbGF0aW9uKHJlbCkpCisJCXJldHVybjsKKworCS8qCisJICogUmVtZW1iZXIg dGhlIHhpZCBmb3IgdGhlIG1lc3NhZ2UgaW4gc3RyZWFtaW5nIG1vZGUuIFNlZQorCSAqIHBn b3V0cHV0X2NoYW5nZS4KKwkgKi8KKwlpZiAoaW5fc3RyZWFtaW5nKQorCQl4aWQgPSB0eG4t PnhpZDsKKworCXJlbGVudHJ5ID0gZ2V0X3JlbF9zeW5jX2VudHJ5KGRhdGEsIFJlbGF0aW9u R2V0UmVsaWQocmVsKSk7CisKKwkvKgorCSAqIEZpcnN0IGNoZWNrIHRoZSBzZXF1ZW5jZSBm aWx0ZXIuCisJICoKKwkgKiBXZSBoYW5kbGUganVzdCBSRU9SREVSX0JVRkZFUl9DSEFOR0Vf U0VRVUVOQ0UgaGVyZS4KKwkgKi8KKwlpZiAoIXJlbGVudHJ5LT5wdWJhY3Rpb25zLnB1YnNl cXVlbmNlKQorCQlyZXR1cm47CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0 cnVlKTsKKwlsb2dpY2FscmVwX3dyaXRlX3NlcXVlbmNlKGN0eC0+b3V0LAorCQkJCQkJCSAg cmVsLAorCQkJCQkJCSAgeGlkLAorCQkJCQkJCSAgc2VxdWVuY2VfbHNuLAorCQkJCQkJCSAg dHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkgIGxhc3RfdmFsdWUsCisJCQkJCQkJICBsb2dfY250 LAorCQkJCQkJCSAgaXNfY2FsbGVkKTsKKwlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUp OworfQorCiAvKgogICogQ3VycmVudGx5IHdlIGFsd2F5cyBmb3J3YXJkLgogICovCkBAIC0x MTQwLDcgKzEyMDMsOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRh LCBPaWQgcmVsaWQpCiAJCWVudHJ5LT5zdHJlYW1lZF90eG5zID0gTklMOwogCQllbnRyeS0+ cmVwbGljYXRlX3ZhbGlkID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1Ymluc2Vy dCA9IGVudHJ5LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSA9Ci0JCQllbnRyeS0+cHViYWN0aW9u cy5wdWJkZWxldGUgPSBlbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSA9IGZhbHNlOwor CQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlID0gZW50cnktPnB1YmFjdGlvbnMucHVi dHJ1bmNhdGUgPQorCQkJZW50cnktPnB1YmFjdGlvbnMucHVic2VxdWVuY2UgPSBmYWxzZTsK IAkJZW50cnktPnB1Ymxpc2hfYXNfcmVsaWQgPSBJbnZhbGlkT2lkOwogCQllbnRyeS0+bWFw ID0gTlVMTDsJCS8qIHdpbGwgYmUgc2V0IGJ5IG1heWJlX3NlbmRfc2NoZW1hKCkgaWYKIAkJ CQkJCQkJICogbmVlZGVkICovCkBAIC0xMTYwLDYgKzEyMjQsNyBAQCBnZXRfcmVsX3N5bmNf ZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBPaWQgcmVsaWQpCiAJCUxpc3QJICAgKnNjaGVt YVB1YmlkcyA9IEdldFNjaGVtYVB1YmxpY2F0aW9ucyhzY2hlbWFJZCk7CiAJCUxpc3RDZWxs ICAgKmxjOwogCQlPaWQJCQlwdWJsaXNoX2FzX3JlbGlkID0gcmVsaWQ7CisJCWJvb2wJCWlz X3NlcXVlbmNlID0gKGdldF9yZWxfcmVsa2luZChyZWxpZCkgPT0gUkVMS0lORF9TRVFVRU5D RSk7CiAKIAkJLyogUmVsb2FkIHB1YmxpY2F0aW9ucyBpZiBuZWVkZWQgYmVmb3JlIHVzZS4g Ki8KIAkJaWYgKCFwdWJsaWNhdGlvbnNfdmFsaWQpCkBAIC0xMTgzLDEyICsxMjQ4LDIzIEBA IGdldF9yZWxfc3luY19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIE9pZCByZWxpZCkKIAkJ CVB1YmxpY2F0aW9uICpwdWIgPSBsZmlyc3QobGMpOwogCQkJYm9vbAkJcHVibGlzaCA9IGZh bHNlOwogCi0JCQlpZiAocHViLT5hbGx0YWJsZXMpCisJCQlpZiAocHViLT5hbGx0YWJsZXMg JiYgKCFpc19zZXF1ZW5jZSkpCiAJCQl7CiAJCQkJcHVibGlzaCA9IHRydWU7CiAJCQkJaWYg KHB1Yi0+cHVidmlhcm9vdCAmJiBhbV9wYXJ0aXRpb24pCiAJCQkJCXB1Ymxpc2hfYXNfcmVs aWQgPSBsbGFzdF9vaWQoZ2V0X3BhcnRpdGlvbl9hbmNlc3RvcnMocmVsaWQpKTsKIAkJCX0K KwkJCWVsc2UgaWYgKHB1Yi0+YWxsc2VxdWVuY2VzICYmIGlzX3NlcXVlbmNlKQorCQkJewor CQkJCXB1Ymxpc2ggPSB0cnVlOworCQkJfQorCisJCQkvKiBpZiBhIHNlcXVlbmNlLCBqdXN0 IGNyb3NzLWNoZWNrIHRoZSBsaXN0IG9mIHB1YmxpY2F0aW9ucyAqLworCQkJaWYgKCFwdWJs aXNoICYmIGlzX3NlcXVlbmNlKQorCQkJeworCQkJCWlmIChsaXN0X21lbWJlcl9vaWQocHVi aWRzLCBwdWItPm9pZCkpCisJCQkJCXB1Ymxpc2ggPSB0cnVlOworCQkJfQogCiAJCQlpZiAo IXB1Ymxpc2gpCiAJCQl7CkBAIC0xMjQzLDEwICsxMzE5LDEyIEBAIGdldF9yZWxfc3luY19l bnRyeShQR091dHB1dERhdGEgKmRhdGEsIE9pZCByZWxpZCkKIAkJCQllbnRyeS0+cHViYWN0 aW9ucy5wdWJ1cGRhdGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YnVwZGF0ZTsKIAkJCQllbnRy eS0+cHViYWN0aW9ucy5wdWJkZWxldGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YmRlbGV0ZTsK IAkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSB8PSBwdWItPnB1YmFjdGlvbnMu cHVidHJ1bmNhdGU7CisJCQkJZW50cnktPnB1YmFjdGlvbnMucHVic2VxdWVuY2UgfD0gcHVi LT5wdWJhY3Rpb25zLnB1YnNlcXVlbmNlOwogCQkJfQogCiAJCQlpZiAoZW50cnktPnB1YmFj dGlvbnMucHViaW5zZXJ0ICYmIGVudHJ5LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSAmJgotCQkJ CWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSAmJiBlbnRyeS0+cHViYWN0aW9ucy5wdWJ0 cnVuY2F0ZSkKKwkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZWxldGUgJiYgZW50cnktPnB1 YmFjdGlvbnMucHVidHJ1bmNhdGUgJiYKKwkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJzZXF1 ZW5jZSkKIAkJCQlicmVhazsKIAkJfQogCkBAIC0xMzkxLDYgKzE0NjksNyBAQCByZWxfc3lu Y19jYWNoZV9wdWJsaWNhdGlvbl9jYihEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50MzIg aGFzaHZhbHVlKQogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgPSBmYWxzZTsKIAkJ ZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rp b25zLnB1YnRydW5jYXRlID0gZmFsc2U7CisJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnNlcXVl bmNlID0gZmFsc2U7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpp bmRleCAxMDVkOGQ0NjAxLi4xZjg2MzRiNTBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Jl bGNhY2hlLmMKQEAgLTU1ODUsNiArNTU4NSw3IEBAIEdldFJlbGF0aW9uUHVibGljYXRpb25B Y3Rpb25zKFJlbGF0aW9uIHJlbGF0aW9uKQogCQlwdWJhY3Rpb25zLT5wdWJ1cGRhdGUgfD0g cHViZm9ybS0+cHVidXBkYXRlOwogCQlwdWJhY3Rpb25zLT5wdWJkZWxldGUgfD0gcHViZm9y bS0+cHViZGVsZXRlOwogCQlwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSB8PSBwdWJmb3JtLT5w dWJ0cnVuY2F0ZTsKKwkJcHViYWN0aW9ucy0+cHVic2VxdWVuY2UgfD0gcHViZm9ybS0+cHVi c2VxdWVuY2U7CiAKIAkJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CiAKQEAgLTU1OTMsNyArNTU5 NCw4IEBAIEdldFJlbGF0aW9uUHVibGljYXRpb25BY3Rpb25zKFJlbGF0aW9uIHJlbGF0aW9u KQogCQkgKiBvdGhlciBwdWJsaWNhdGlvbnMuCiAJCSAqLwogCQlpZiAocHViYWN0aW9ucy0+ cHViaW5zZXJ0ICYmIHB1YmFjdGlvbnMtPnB1YnVwZGF0ZSAmJgotCQkJcHViYWN0aW9ucy0+ cHViZGVsZXRlICYmIHB1YmFjdGlvbnMtPnB1YnRydW5jYXRlKQorCQkJcHViYWN0aW9ucy0+ cHViZGVsZXRlICYmIHB1YmFjdGlvbnMtPnB1YnRydW5jYXRlICYmCisJCQlwdWJhY3Rpb25z LT5wdWJzZXF1ZW5jZSkKIAkJCWJyZWFrOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jCmluZGV4 IGNmMzAyMzlmNmQuLmMxMmUxNGU5M2UgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTE2NDcs MTMgKzE2NDcsMTMgQEAgcHNxbF9jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQsIGludCBz dGFydCwgaW50IGVuZCkKIAkJQ09NUExFVEVfV0lUSCgiQUREIiwgIkRST1AiLCAiT1dORVIg VE8iLCAiUkVOQU1FIFRPIiwgIlNFVCIpOwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1l PiBBREQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiQUREIikpCi0JCUNPTVBMRVRFX1dJVEgoIkFMTCBUQUJMRVMgSU4gU0NIRU1B IiwgIlRBQkxFIik7CisJCUNPTVBMRVRFX1dJVEgoIkFMTCBUQUJMRVMgSU4gU0NIRU1BIiwg IlRBQkxFfFNFUVVFTkNFIik7CiAJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IERST1Ag Ki8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55 LCAiRFJPUCIpKQotCQlDT01QTEVURV9XSVRIKCJBTEwgVEFCTEVTIElOIFNDSEVNQSIsICJU QUJMRSIpOworCQlDT01QTEVURV9XSVRIKCJBTEwgVEFCTEVTIElOIFNDSEVNQSIsICJUQUJM RXxTRVFVRU5DRSIpOwogCS8qIEFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1lPiBTRVQgKi8KIAll bHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VU IikpCi0JCUNPTVBMRVRFX1dJVEgoIigiLCAiQUxMIFRBQkxFUyBJTiBTQ0hFTUEiLCAiVEFC TEUiKTsKKwkJQ09NUExFVEVfV0lUSCgiKCIsICJBTEwgVEFCTEVTIElOIFNDSEVNQSIsICJU QUJMRXxTRVFVRU5DRSIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FU SU9OIiwgTWF0Y2hBbnksICJBRER8RFJPUHxTRVQiLCAiQUxMIiwgIlRBQkxFUyIsICJJTiIs ICJTQ0hFTUEiKSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9z Y2hlbWFzCiAJCQkJCQkJIiBBTkQgbnNwbmFtZSAhPSAncGdfY2F0YWxvZycgIgpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggNGQ5OTJkYzIyNC4uMzQ5ZmZlMWI1MSAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0xMTUxMyw2ICsxMTUxMywxMSBAQAogICBwcm92 b2xhdGlsZSA9PiAncycsIHByb3JldHR5cGUgPT4gJ29pZCcsIHByb2FyZ3R5cGVzID0+ICd0 ZXh0JywKICAgcHJvYWxsYXJndHlwZXMgPT4gJ3t0ZXh0LG9pZH0nLCBwcm9hcmdtb2RlcyA9 PiAne2ksb30nLAogICBwcm9hcmduYW1lcyA9PiAne3B1Ym5hbWUscmVsaWR9JywgcHJvc3Jj ID0+ICdwZ19nZXRfcHVibGljYXRpb25fdGFibGVzJyB9LAoreyBvaWQgPT4gJzgwMDAnLCBk ZXNjciA9PiAnZ2V0IE9JRHMgb2Ygc2VxdWVuY2VzIGluIGEgcHVibGljYXRpb24nLAorICBw cm9uYW1lID0+ICdwZ19nZXRfcHVibGljYXRpb25fc2VxdWVuY2VzJywgcHJvcm93cyA9PiAn MTAwMCcsIHByb3JldHNldCA9PiAndCcsCisgIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0 dHlwZSA9PiAnb2lkJywgcHJvYXJndHlwZXMgPT4gJ3RleHQnLAorICBwcm9hbGxhcmd0eXBl cyA9PiAne3RleHQsb2lkfScsIHByb2FyZ21vZGVzID0+ICd7aSxvfScsCisgIHByb2FyZ25h bWVzID0+ICd7cHVibmFtZSxyZWxpZH0nLCBwcm9zcmMgPT4gJ3BnX2dldF9wdWJsaWNhdGlv bl9zZXF1ZW5jZXMnIH0sCiB7IG9pZCA9PiAnNjEyMScsCiAgIGRlc2NyID0+ICdyZXR1cm5z IHdoZXRoZXIgYSByZWxhdGlvbiBjYW4gYmUgcGFydCBvZiBhIHB1YmxpY2F0aW9uJywKICAg cHJvbmFtZSA9PiAncGdfcmVsYXRpb25faXNfcHVibGlzaGFibGUnLCBwcm92b2xhdGlsZSA9 PiAncycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5kZXggOTAyZjJm MmYwZC4uYjQ0YmIwZTVlMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w dWJsaWNhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24u aApAQCAtNDAsNiArNDAsMTIgQEAgQ0FUQUxPRyhwZ19wdWJsaWNhdGlvbiw2MTA0LFB1Ymxp Y2F0aW9uUmVsYXRpb25JZCkKIAkgKi8KIAlib29sCQlwdWJhbGx0YWJsZXM7CiAKKwkvKgor CSAqIGluZGljYXRlcyB0aGF0IHRoaXMgaXMgc3BlY2lhbCBwdWJsaWNhdGlvbiB3aGljaCBz aG91bGQgZW5jb21wYXNzIGFsbAorCSAqIHNlcXVlbmNlcyBpbiB0aGUgZGF0YWJhc2UgKGV4 Y2VwdCBmb3IgdGhlIHVubG9nZ2VkIGFuZCB0ZW1wIG9uZXMpCisJICovCisJYm9vbAkJcHVi YWxsc2VxdWVuY2VzOworCiAJLyogdHJ1ZSBpZiBpbnNlcnRzIGFyZSBwdWJsaXNoZWQgKi8K IAlib29sCQlwdWJpbnNlcnQ7CiAKQEAgLTUyLDYgKzU4LDkgQEAgQ0FUQUxPRyhwZ19wdWJs aWNhdGlvbiw2MTA0LFB1YmxpY2F0aW9uUmVsYXRpb25JZCkKIAkvKiB0cnVlIGlmIHRydW5j YXRlcyBhcmUgcHVibGlzaGVkICovCiAJYm9vbAkJcHVidHJ1bmNhdGU7CiAKKwkvKiB0cnVl IGlmIHNlcXVlbmNlcyBhcmUgcHVibGlzaGVkICovCisJYm9vbAkJcHVic2VxdWVuY2U7CisK IAkvKiB0cnVlIGlmIHBhcnRpdGlvbiBjaGFuZ2VzIGFyZSBwdWJsaXNoZWQgdXNpbmcgcm9v dCBzY2hlbWEgKi8KIAlib29sCQlwdWJ2aWFyb290OwogfSBGb3JtRGF0YV9wZ19wdWJsaWNh dGlvbjsKQEAgLTcyLDYgKzgxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUHVibGljYXRpb25BY3Rp b25zCiAJYm9vbAkJcHVidXBkYXRlOwogCWJvb2wJCXB1YmRlbGV0ZTsKIAlib29sCQlwdWJ0 cnVuY2F0ZTsKKwlib29sCQlwdWJzZXF1ZW5jZTsKIH0gUHVibGljYXRpb25BY3Rpb25zOwog CiB0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvbgpAQCAtNzksNiArODksNyBAQCB0eXBlZGVm IHN0cnVjdCBQdWJsaWNhdGlvbgogCU9pZAkJCW9pZDsKIAljaGFyCSAgICpuYW1lOwogCWJv b2wJCWFsbHRhYmxlczsKKwlib29sCQlhbGxzZXF1ZW5jZXM7CiAJYm9vbAkJcHVidmlhcm9v dDsKIAlQdWJsaWNhdGlvbkFjdGlvbnMgcHViYWN0aW9uczsKIH0gUHVibGljYXRpb247CkBA IC0xMjEsNiArMTMyLDkgQEAgZXh0ZXJuIExpc3QgKkdldFB1YlBhcnRpdGlvbk9wdGlvblJl bGF0aW9ucyhMaXN0ICpyZXN1bHQsCiAJCQkJCQkJCQkJCVB1YmxpY2F0aW9uUGFydE9wdCBw dWJfcGFydG9wdCwKIAkJCQkJCQkJCQkJT2lkIHJlbGlkKTsKIAorZXh0ZXJuIExpc3QgKkdl dEFsbFNlcXVlbmNlc1B1YmxpY2F0aW9uUmVsYXRpb25zKHZvaWQpOworZXh0ZXJuIExpc3Qg KkdldFB1YmxpY2F0aW9uU2VxdWVuY2VSZWxhdGlvbnMoT2lkIHB1YmlkKTsKKwogZXh0ZXJu IGJvb2wgaXNfcHVibGlzaGFibGVfcmVsYXRpb24oUmVsYXRpb24gcmVsKTsKIGV4dGVybiBi b29sIGlzX3NjaGVtYV9wdWJsaWNhdGlvbihPaWQgcHViaWQpOwogZXh0ZXJuIE9iamVjdEFk ZHJlc3MgcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25S ZWxJbmZvICp0YXJnZXRyZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9z ZXF1ZW5jZS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaAppbmRleCA1OTE5 ZmI5MGVlLi5jMjhlODY5NWNiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9z ZXF1ZW5jZS5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgKQEAgLTYw LDYgKzYwLDcgQEAgZXh0ZXJuIE9iamVjdEFkZHJlc3MgRGVmaW5lU2VxdWVuY2UoUGFyc2VT dGF0ZSAqcHN0YXRlLCBDcmVhdGVTZXFTdG10ICpzdG10KTsKIGV4dGVybiBPYmplY3RBZGRy ZXNzIEFsdGVyU2VxdWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclNlcVN0bXQgKnN0 bXQpOwogZXh0ZXJuIHZvaWQgRGVsZXRlU2VxdWVuY2VUdXBsZShPaWQgcmVsaWQpOwogZXh0 ZXJuIHZvaWQgUmVzZXRTZXF1ZW5jZShPaWQgc2VxX3JlbGlkKTsKK2V4dGVybiB2b2lkIFJl c2V0U2VxdWVuY2UyKE9pZCBzZXFfcmVsaWQsIGludDY0IGxhc3RfdmFsdWUsIGludDY0IGxv Z19jbnQsIGJvb2wgaXNfY2FsbGVkKTsKIGV4dGVybiB2b2lkIFJlc2V0U2VxdWVuY2VDYWNo ZXModm9pZCk7CiAKIGV4dGVybiB2b2lkIHNlcV9yZWRvKFhMb2dSZWFkZXJTdGF0ZSAqcnB0 cik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggNGM1YThhMzliZi4uZDMyYmE0OThh NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMzY1Myw2ICszNjUzLDEwIEBAIHR5 cGVkZWYgZW51bSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlCiAJUFVCTElDQVRJT05PQkpfVEFC TEVfSU5fU0NIRU1BLCAvKiBUYWJsZXMgaW4gc2NoZW1hIHR5cGUgKi8KIAlQVUJMSUNBVElP Tk9CSl9UQUJMRV9JTl9DVVJfU0NIRU1BLCAvKiBHZXQgdGhlIGZpcnN0IGVsZW1lbnQgZnJv bQogCQkJCQkJCQkJCSAqIHNlYXJjaF9wYXRoICovCisJUFVCTElDQVRJT05PQkpfU0VRVUVO Q0UsCQkvKiBTZXF1ZW5jZSB0eXBlICovCisJUFVCTElDQVRJT05PQkpfU0VRVUVOQ0VfSU5f U0NIRU1BLCAvKiBTZXF1ZW5jZXMgaW4gc2NoZW1hIHR5cGUgKi8KKwlQVUJMSUNBVElPTk9C Sl9TRVFVRU5DRV9JTl9DVVJfU0NIRU1BLCAvKiBHZXQgdGhlIGZpcnN0IGVsZW1lbnQgZnJv bQorCQkJCQkJCQkJCSAqIHNlYXJjaF9wYXRoICovCiAJUFVCTElDQVRJT05PQkpfQ09OVElO VUFUSU9OIC8qIENvbnRpbnVhdGlvbiBvZiBwcmV2aW91cyB0eXBlICovCiB9IFB1YmxpY2F0 aW9uT2JqU3BlY1R5cGU7CiAKQEAgLTM2NzIsNiArMzY3Niw3IEBAIHR5cGVkZWYgc3RydWN0 IENyZWF0ZVB1YmxpY2F0aW9uU3RtdAogCUxpc3QJICAgKm9wdGlvbnM7CQkvKiBMaXN0IG9m IERlZkVsZW0gbm9kZXMgKi8KIAlMaXN0CSAgICpwdWJvYmplY3RzOwkJLyogT3B0aW9uYWwg bGlzdCBvZiBwdWJsaWNhdGlvbiBvYmplY3RzICovCiAJYm9vbAkJZm9yX2FsbF90YWJsZXM7 IC8qIFNwZWNpYWwgcHVibGljYXRpb24gZm9yIGFsbCB0YWJsZXMgaW4gZGIgKi8KKwlib29s CQlmb3JfYWxsX3NlcXVlbmNlczsgLyogU3BlY2lhbCBwdWJsaWNhdGlvbiBmb3IgYWxsIHNl cXVlbmNlcyBpbiBkYiAqLwogfSBDcmVhdGVQdWJsaWNhdGlvblN0bXQ7CiAKIHR5cGVkZWYg c3RydWN0IEFsdGVyUHVibGljYXRpb25TdG10CkBAIC0zNjg4LDYgKzM2OTMsNyBAQCB0eXBl ZGVmIHN0cnVjdCBBbHRlclB1YmxpY2F0aW9uU3RtdAogCSAqLwogCUxpc3QJICAgKnB1Ym9i amVjdHM7CQkvKiBPcHRpb25hbCBsaXN0IG9mIHB1YmxpY2F0aW9uIG9iamVjdHMgKi8KIAli b29sCQlmb3JfYWxsX3RhYmxlczsgLyogU3BlY2lhbCBwdWJsaWNhdGlvbiBmb3IgYWxsIHRh YmxlcyBpbiBkYiAqLworCWJvb2wJCWZvcl9hbGxfc2VxdWVuY2VzOyAvKiBTcGVjaWFsIHB1 YmxpY2F0aW9uIGZvciBhbGwgc2VxdWVuY2VzIGluIGRiICovCiAJRGVmRWxlbUFjdGlvbiBh Y3Rpb247CQkvKiBXaGF0IGFjdGlvbiB0byBwZXJmb3JtIHdpdGggdGhlCiAJCQkJCQkJCSAq IHRhYmxlcy9zY2hlbWFzICovCiB9IEFsdGVyUHVibGljYXRpb25TdG10OwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRleCA4Mzc0MWRjZjQyLi5mYzE3ODJj MTI1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8u aAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaApAQCAtNjAs NiArNjAsNyBAQCB0eXBlZGVmIGVudW0gTG9naWNhbFJlcE1zZ1R5cGUKIAlMT0dJQ0FMX1JF UF9NU0dfUkVMQVRJT04gPSAnUicsCiAJTE9HSUNBTF9SRVBfTVNHX1RZUEUgPSAnWScsCiAJ TE9HSUNBTF9SRVBfTVNHX01FU1NBR0UgPSAnTScsCisJTE9HSUNBTF9SRVBfTVNHX1NFUVVF TkNFID0gJ1gnLAkvKiBGSVhNRSBjaGFuZ2UgKi8KIAlMT0dJQ0FMX1JFUF9NU0dfQkVHSU5f UFJFUEFSRSA9ICdiJywKIAlMT0dJQ0FMX1JFUF9NU0dfUFJFUEFSRSA9ICdQJywKIAlMT0dJ Q0FMX1JFUF9NU0dfQ09NTUlUX1BSRVBBUkVEID0gJ0snLApAQCAtMTE3LDYgKzExOCwxOCBA QCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwVHlwCiAJY2hhcgkgICAqdHlwbmFtZTsJCS8q IG5hbWUgb2YgdGhlIHJlbW90ZSB0eXBlICovCiB9IExvZ2ljYWxSZXBUeXA7CiAKKy8qIFNl cXVlbmNlIGluZm8gKi8KK3R5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBTZXF1ZW5jZQorewor CU9pZAkJCXJlbW90ZWlkOwkJLyogdW5pcXVlIGlkIG9mIHRoZSByZW1vdGUgc2VxdWVuY2Ug Ki8KKwljaGFyCSAgICpuc3BuYW1lOwkJLyogc2NoZW1hIG5hbWUgb2YgcmVtb3RlIHNlcXVl bmNlICovCisJY2hhcgkgICAqc2VxbmFtZTsJCS8qIG5hbWUgb2YgdGhlIHJlbW90ZSBzZXF1 ZW5jZSAqLworCWJvb2wJCXRyYW5zYWN0aW9uYWw7CisJaW50NjQJCWxhc3RfdmFsdWU7CisJ aW50NjQJCWxvZ19jbnQ7CisJYm9vbAkJaXNfY2FsbGVkOworfSBMb2dpY2FsUmVwU2VxdWVu Y2U7CisKIC8qIFRyYW5zYWN0aW9uIGluZm8gKi8KIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxS ZXBCZWdpbkRhdGEKIHsKQEAgLTIyNyw2ICsyNDAsMTIgQEAgZXh0ZXJuIExpc3QgKmxvZ2lj YWxyZXBfcmVhZF90cnVuY2F0ZShTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkJICBib29sICpj YXNjYWRlLCBib29sICpyZXN0YXJ0X3NlcXMpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93 cml0ZV9tZXNzYWdlKFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1Jl Y1B0ciBsc24sCiAJCQkJCQkJCQkgYm9vbCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpw cmVmaXgsIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF93cml0ZV9zZXF1ZW5jZShTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLAor CQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sIAorCQkJCQkJ CQkJICBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkJCQkgIGludDY0IGxhc3RfdmFsdWUs IGludDY0IGxvZ19jbnQsCisJCQkJCQkJCQkgIGJvb2wgaXNfY2FsbGVkKTsKK2V4dGVybiB2 b2lkIGxvZ2ljYWxyZXBfcmVhZF9zZXF1ZW5jZShTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVw U2VxdWVuY2UgKnNlcWRhdGEpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9yZWwo U3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkgUmVsYXRpb24g cmVsKTsKIGV4dGVybiBMb2dpY2FsUmVwUmVsYXRpb24gKmxvZ2ljYWxyZXBfcmVhZF9yZWwo U3RyaW5nSW5mbyBpbik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9w Z291dHB1dC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaAppbmRleCAw ZGM0NjBmYjcwLi45N2ViMmE3ZWYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9wZ291dHB1dC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 LmgKQEAgLTI4LDYgKzI4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdPdXRwdXREYXRhCiAJYm9v bAkJc3RyZWFtaW5nOwogCWJvb2wJCW1lc3NhZ2VzOwogCWJvb2wJCXR3b19waGFzZTsKKwli b29sCQlzZXF1ZW5jZXM7CiB9IFBHT3V0cHV0RGF0YTsKIAogI2VuZGlmCQkJCQkJCS8qIFBH T1VUUFVUX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVs ZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggYjU4 YjA2MmIxMC4uNmViNGYxMTAwMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQKQEAgLTE0NTEsNiArMTQ1MSwxNCBAQCBwZ19wcmVwYXJlZF94YWN0c3wgU0VMRUNUIHAu dHJhbnNhY3Rpb24sCiAgICBGUk9NICgocGdfcHJlcGFyZWRfeGFjdCgpIHAodHJhbnNhY3Rp b24sIGdpZCwgcHJlcGFyZWQsIG93bmVyaWQsIGRiaWQpCiAgICAgIExFRlQgSk9JTiBwZ19h dXRoaWQgdSBPTiAoKHAub3duZXJpZCA9IHUub2lkKSkpCiAgICAgIExFRlQgSk9JTiBwZ19k YXRhYmFzZSBkIE9OICgocC5kYmlkID0gZC5vaWQpKSk7CitwZ19wdWJsaWNhdGlvbl9zZXF1 ZW5jZXN8IFNFTEVDVCBwLnB1Ym5hbWUsCisgICAgbi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUs CisgICAgYy5yZWxuYW1lIEFTIHNlcXVlbmNlbmFtZQorICAgRlJPTSBwZ19wdWJsaWNhdGlv biBwLAorICAgIExBVEVSQUwgcGdfZ2V0X3B1YmxpY2F0aW9uX3NlcXVlbmNlcygocC5wdWJu YW1lKTo6dGV4dCkgZ3B0KHJlbGlkKSwKKyAgICAocGdfY2xhc3MgYworICAgICBKT0lOIHBn X25hbWVzcGFjZSBuIE9OICgobi5vaWQgPSBjLnJlbG5hbWVzcGFjZSkpKQorICBXSEVSRSAo Yy5vaWQgPSBncHQucmVsaWQpOwogcGdfcHVibGljYXRpb25fdGFibGVzfCBTRUxFQ1QgcC5w dWJuYW1lLAogICAgIG4ubnNwbmFtZSBBUyBzY2hlbWFuYW1lLAogICAgIGMucmVsbmFtZSBB UyB0YWJsZW5hbWUKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyN19z ZXF1ZW5jZXMucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjdfc2VxdWVuY2VzLnBs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmZkOTQxNjE5MDcKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjdfc2VxdWVuY2Vz LnBsCkBAIC0wLDAgKzEsMTk2IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRoaXMgdGVzdHMgdGhhdCBzZXF1 ZW5jZXMgYXJlIHJlcGxpY2F0ZWQgY29ycmVjdGx5IGJ5IGxvZ2ljYWwgcmVwbGljYXRpb24K K3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlIHRl c3RzID0+IDY7CisKKyMgSW5pdGlhbGl6ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVi bGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsK KyRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7 Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUK K215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQoYWxsb3dzX3N0cmVhbWlu ZyA9PiAnbG9naWNhbCcpOworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKyMgQ3JlYXRl IHNvbWUgcHJlZXhpc3RpbmcgY29udGVudCBvbiBwdWJsaXNoZXIKK215ICRkZGwgPSBxcSgK KwlDUkVBVEUgU0VRVUVOQ0UgczsKKyk7CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHRoZSBw dWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICRkZGwp OworCisjIENyZWF0ZSBzb21lIHRoZSBzYW1lIHN0cnVjdHVyZSBvbiBzdWJzY3JpYmVyLCBh bmQgYW4gZXh0cmEgc2VxdWVuY2UgdGhhdAorIyB3ZSdsbCBjcmVhdGUgb24gdGhlIHB1Ymxp c2hlciBsYXRlcgorJGRkbCA9IHFxKAorCUNSRUFURSBTRVFVRU5DRSBzOworCUNSRUFURSBT RVFVRU5DRSBzMjsKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAkZGRsKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlz aGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0 Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVB VEUgUFVCTElDQVRJT04gc2VxX3B1YiIpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBQVUJMSUNBVElPTiBzZXFfcHViIEFERCBTRVFVRU5D RSBzIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJD UkVBVEUgU1VCU0NSSVBUSU9OIHNlcV9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25u c3RyJyBQVUJMSUNBVElPTiBzZXFfcHViIFdJVEggKHNsb3RfbmFtZSA9IHNlcV9zdWJfc2xv dCkiCispOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3NlcV9zdWIn KTsKKworIyBXYWl0IGZvciBpbml0aWFsIHN5bmMgdG8gZmluaXNoIGFzIHdlbGwKK215ICRz eW5jZWRfcXVlcnkgPQorICAiU0VMRUNUIGNvdW50KDEpID0gMCBGUk9NIHBnX3N1YnNjcmlw dGlvbl9yZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdzJywgJ3InKTsiOworJG5vZGVf c3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5 KQorICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRv IHN5bmNocm9uaXplIGRhdGEiOworCisjIEluc2VydCBpbml0aWFsIHRlc3QgZGF0YQorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJLS0gZ2VuZXJh dGUgYSBudW1iZXIgb2YgdmFsdWVzIHVzaW5nIHRoZSBzZXF1ZW5jZQorCVNFTEVDVCBuZXh0 dmFsKCdzJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworKSk7CisKKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2VxX3N1YicpOworCisjIENoZWNrIHRoZSBk YXRhIG9uIHN1YnNjcmliZXIKK215ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJU0VMRUNUICogRlJPTSBzOworKSk7CisKK2lz KCAkcmVzdWx0LCAnMTMyfDB8dCcsCisJJ2NoZWNrIHJlcGxpY2F0ZWQgc2VxdWVuY2UgdmFs dWVzIG9uIHN1YnNjcmliZXInKTsKKworCisjIGFkdmFuY2UgdGhlIHNlcXVlbmNlIGluIGEg cm9sbGVkLWJhY2sgdHJhbnNhY3Rpb24gLSBzaG91bGQgbm90IGJlIHJlcGxpY2F0ZWQKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUJFR0lOOwor CVNFTEVDVCBuZXh0dmFsKCdzJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOworCVJP TExCQUNLOworKSk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnc2Vx X3N1YicpOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJU0VMRUNU ICogRlJPTSBzOworKSk7CisKK2lzKCAkcmVzdWx0LCAnMjMxfDB8dCcsCisJJ2NoZWNrIHJl cGxpY2F0ZWQgc2VxdWVuY2UgdmFsdWVzIG9uIHN1YnNjcmliZXInKTsKKworCisjIGNyZWF0 ZSBhIG5ldyBzZXF1ZW5jZSBhbmQgcm9sbCBpdCBiYWNrIC0gc2hvdWxkIG5vdCBiZSByZXBs aWNhdGVkLCBkdWUgdG8KKyMgdGhlIHRyYW5zYWN0aW9uYWwgYmVoYXZpb3IKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxKAorCUJFR0lOOworCUNSRUFU RSBTRVFVRU5DRSBzMjsKKwlBTFRFUiBQVUJMSUNBVElPTiBzZXFfcHViIEFERCBTRVFVRU5D RSBzMjsKKwlTRUxFQ1QgbmV4dHZhbCgnczInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEw MCk7CisJUk9MTEJBQ0s7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCdzZXFfc3ViJyk7CisKKyMgQ2hlY2sgdGhlIGRhdGEgb24gc3Vic2NyaWJlcgorJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgK KwlTRUxFQ1QgKiBGUk9NIHMyOworKSk7CisKK2lzKCAkcmVzdWx0LCAnMXwwfGYnLAorCSdj aGVjayByZXBsaWNhdGVkIHNlcXVlbmNlIHZhbHVlcyBvbiBzdWJzY3JpYmVyJyk7CisKKwor IyBjcmVhdGUgYSBuZXcgc2VxdWVuY2UsIGFkdmFuY2UgaXQgaW4gYSByb2xsZWQtYmFjayB0 cmFuc2FjdGlvbiwgYnV0IGNvbW1pdAorIyB0aGUgY3JlYXRlIC0gdGhlIGFkdmFuY2Ugc2hv dWxkIGJlIHJlcGxpY2F0ZWQgbmV2ZXJ0aGVsZXNzCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlCRUdJTjsKKwlDUkVBVEUgU0VRVUVOQ0UgczI7 CisJQUxURVIgUFVCTElDQVRJT04gc2VxX3B1YiBBREQgU0VRVUVOQ0UgczI7CisJU0FWRVBP SU5UIHNwMTsKKwlTRUxFQ1QgbmV4dHZhbCgnczInKSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LDEwMCk7CisJUk9MTEJBQ0sgVE8gc3AxOworCUNPTU1JVDsKKykpOworCiskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ3NlcV9zdWInKTsKKworIyBXYWl0IGZvciBzeW5j IG9mIHRoZSBzZWNvbmQgc2VxdWVuY2Ugd2UganVzdCBhZGRlZCB0byBmaW5pc2gKKyRzeW5j ZWRfcXVlcnkgPQorICAiU0VMRUNUIGNvdW50KDEpID0gMCBGUk9NIHBnX3N1YnNjcmlwdGlv bl9yZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdzJywgJ3InKTsiOworJG5vZGVfc3Vi c2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQor ICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5 bmNocm9uaXplIGRhdGEiOworCisjIENoZWNrIHRoZSBkYXRhIG9uIHN1YnNjcmliZXIKKyRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEo CisJU0VMRUNUICogRlJPTSBzMjsKKykpOworCitpcyggJHJlc3VsdCwgJzEzMnwwfHQnLAor CSdjaGVjayByZXBsaWNhdGVkIHNlcXVlbmNlIHZhbHVlcyBvbiBzdWJzY3JpYmVyJyk7CisK KworIyBhZHZhbmNlIHRoZSBuZXcgc2VxdWVuY2UgaW4gYSB0cmFuc2FjdGlvbiwgYW5kIHJv bGwgaXQgYmFjayAtIGluIHRoaXMgY2FzZQorIyBpdCBzaG91bGQgbm90IGJlIHJlcGxpY2F0 ZWQgYXQgY29tbWl0Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcSgKKwlCRUdJTjsKKwlTRUxFQ1QgbmV4dHZhbCgnczInKSBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLDEwMCk7CisJUk9MTEJBQ0s7CispKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCdzZXFfc3ViJyk7CisKKyMgQ2hlY2sgdGhlIGRhdGEgb24gc3Vic2Ny aWJlcgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcSgKKwlTRUxFQ1QgKiBGUk9NIHMyOworKSk7CisKK2lzKCAkcmVzdWx0LCAnMTMy fDB8dCcsCisJJ2NoZWNrIHJlcGxpY2F0ZWQgc2VxdWVuY2UgdmFsdWVzIG9uIHN1YnNjcmli ZXInKTsKKworCisjIGFkdmFuY2UgdGhlIHNlcXVlbmNlIGluIGEgc3VidHJhbnNhY3Rpb24g LSB0aGUgc3VidHJhbnNhY3Rpb24gZ2V0cyByb2xsZWQKKyMgYmFjaywgYnV0IGNvbW1pdCB0 aGUgbWFpbiBvbmUgLSB0aGUgY2hhbmdlcyBzaG91bGQgc3RpbGwgYmUgcmVwbGljYXRlZAor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXEoCisJQkVHSU47 CisJU0FWRVBPSU5UIHMxOworCVNFTEVDVCBuZXh0dmFsKCdzMicpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsMTAwKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlDT01NSVQ7CispKTsKKworJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdzZXFfc3ViJyk7CisKKyMgQ2hlY2sg dGhlIGRhdGEgb24gc3Vic2NyaWJlcgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlTRUxFQ1QgKiBGUk9NIHMyOworKSk7CisK K2lzKCAkcmVzdWx0LCAnMzMwfDB8dCcsCisJJ2NoZWNrIHJlcGxpY2F0ZWQgc2VxdWVuY2Ug dmFsdWVzIG9uIHN1YnNjcmliZXInKTsKKworCiskbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdm YXN0Jyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2Zhc3QnKTsKLS0gCjIuMzEuMQoK --------------NQr9xOgNVjXIyBTcV0JPdvCk Content-Type: text/x-patch; charset=UTF-8; name="0006-update-TAP-tests-20211222.patch" Content-Disposition: attachment; filename="0006-update-TAP-tests-20211222.patch" Content-Transfer-Encoding: base64 RnJvbSA4MmM4NDU3YWNmYzk2ZjkzZGFiOTI4ODFkNzVhMzQ5OTIxMDQ5YzhhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzLnZvbmRyYUBwb3N0 Z3Jlc3FsLm9yZz4KRGF0ZTogV2VkLCAyMiBEZWMgMjAyMSAwMzoxOTowNCArMDEwMApTdWJq ZWN0OiBbUEFUQ0ggNi82XSB1cGRhdGUgVEFQIHRlc3RzCgotLS0KIHNyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAyN19zZXF1ZW5jZXMucGwgfCAxMCArKysrKy0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyN19zZXF1ZW5jZXMucGwgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMjdfc2VxdWVuY2VzLnBsCmluZGV4IGZkOTQxNjE5MDcuLmI5YzE3NTdh NjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyN19zZXF1ZW5jZXMu cGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI3X3NlcXVlbmNlcy5wbApAQCAt NzAsNyArNzAsNyBAQCBteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KAogCVNFTEVDVCAqIEZST00gczsKICkpOwogCi1pcyggJHJlc3VsdCwgJzEzMnwwfHQnLAor aXMoICRyZXN1bHQsICcxMDB8MHx0JywKIAknY2hlY2sgcmVwbGljYXRlZCBzZXF1ZW5jZSB2 YWx1ZXMgb24gc3Vic2NyaWJlcicpOwogCiAKQEAgLTkwLDcgKzkwLDcgQEAgJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAlTRUxFQ1QgKiBGUk9NIHM7CiApKTsK IAotaXMoICRyZXN1bHQsICcyMzF8MHx0JywKK2lzKCAkcmVzdWx0LCAnMjAwfDB8dCcsCiAJ J2NoZWNrIHJlcGxpY2F0ZWQgc2VxdWVuY2UgdmFsdWVzIG9uIHN1YnNjcmliZXInKTsKIAog CkBAIC0xNDQsNyArMTQ0LDcgQEAgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKIAlTRUxFQ1QgKiBGUk9NIHMyOwogKSk7CiAKLWlzKCAkcmVzdWx0LCAnMTMyfDB8 dCcsCitpcyggJHJlc3VsdCwgJzEwMHwwfHQnLAogCSdjaGVjayByZXBsaWNhdGVkIHNlcXVl bmNlIHZhbHVlcyBvbiBzdWJzY3JpYmVyJyk7CiAKIApAQCAtMTY1LDcgKzE2NSw3IEBAICRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJU0VMRUNUICogRlJPTSBz MjsKICkpOwogCi1pcyggJHJlc3VsdCwgJzEzMnwwfHQnLAoraXMoICRyZXN1bHQsICcyMDB8 MHx0JywKIAknY2hlY2sgcmVwbGljYXRlZCBzZXF1ZW5jZSB2YWx1ZXMgb24gc3Vic2NyaWJl cicpOwogCiAKQEAgLTE4OCw3ICsxODgsNyBAQCAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKAogCVNFTEVDVCAqIEZST00gczI7CiApKTsKIAotaXMoICRyZXN1bHQs ICczMzB8MHx0JywKK2lzKCAkcmVzdWx0LCAnMzAwfDB8dCcsCiAJJ2NoZWNrIHJlcGxpY2F0 ZWQgc2VxdWVuY2UgdmFsdWVzIG9uIHN1YnNjcmliZXInKTsKIAogCi0tIAoyLjMxLjEKCg== --------------NQr9xOgNVjXIyBTcV0JPdvCk--