From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 81B7EC433ED for ; Tue, 13 Apr 2021 13:12:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 406D36124B for ; Tue, 13 Apr 2021 13:12:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240070AbhDMNMc (ORCPT ); Tue, 13 Apr 2021 09:12:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42144 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243409AbhDMNMb (ORCPT ); Tue, 13 Apr 2021 09:12:31 -0400 Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com [IPv6:2a00:1450:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 90811C061574 for ; Tue, 13 Apr 2021 06:12:11 -0700 (PDT) Received: by mail-ej1-x629.google.com with SMTP id u17so25869070ejk.2 for ; Tue, 13 Apr 2021 06:12:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ionos.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Bmo9dR4znOv/Lo/6Jn7LW0KBu2f8ZZb/PlRwdYr6f50=; b=UUPcTSqIp2za53ZA9bqhqPf5mj/PEOhVfC7oIbJVFecD+Jd9t5iEoenlDlwyDjJNQT BByOZemrYJ7rZm4Ut1LgOHk3sX00MVnEpy2zNuvRmW36HzWrTQFZyG+fVWKHJJGGSRcM geJq0T7UL/3NO/v3Y9R5oxgqkMsiJtcOk/za2CSjt/8bttY7CTNxYrshiC2GFC/o2IXH n4MYaTgCaUiEbgNnvt1IzO25JvAzt9J8xpImZXr6yLdf69CenR7YMC5WgruJQ4hEoRlJ JmrUJBK0Drc2x1ePzKOP3CIQPY4n9/o5fh05Fs23gt2p97TVVk2ckRf2ygLAb5F5K/cj n35w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Bmo9dR4znOv/Lo/6Jn7LW0KBu2f8ZZb/PlRwdYr6f50=; b=S5Y3RwUpcH/mrsJVJrSu4wgW6IAkZI+qmXpR4yAWa0Vb1gdZpdhGC0P+epdDobkgFk 83QzHuAIuCfanRU3ZGhjkDQ7YICiez8Z0HSI+tARipzXFmaZD6G21N0uSTvui6c0i0uz /xaj6QYm4M01tzTOi9DSW5+2Qz58uHVocJkN253R52rSjnqECkdMJyam3W9r1GTU7iky NDLMBo5lL1d2Ed7cJQz3cvvJ94Tr6mH/wLgn9KnLm4EPJrQ8/LClKuNCfpdaG66FS26/ QZaOHpJKLNE8mTFKDXmcW4mNjXEwJIAK8c58dMlIk8R8qBvVktazEM3tRu4ZuYGMLLCW 4rMA== X-Gm-Message-State: AOAM530lLS1/TE+k6F5ypz1VsGYHeSJqjKAz5HJFa/ptw2/feiKwx6Ih FQizs/ZcdwrEqa0xPElXkVCwhHc6sy8AZVNFt3NV1w== X-Google-Smtp-Source: ABdhPJyYN6nBZ7+CrDlUPwwSbXi8Y6ODTrHpA2a6Cw/7k2T/Sr/2mD4EUSum7m093zQsuABCBZRUtAtZVe69juTEwCc= X-Received: by 2002:a17:906:f42:: with SMTP id h2mr31620107ejj.317.1618319530116; Tue, 13 Apr 2021 06:12:10 -0700 (PDT) MIME-Version: 1.0 References: <20210406123639.202899-1-gi-oh.kim@ionos.com> <20210406123639.202899-2-gi-oh.kim@ionos.com> <1DFC1F4B-FF53-4AA8-B5FB-9F57B378339E@oracle.com> In-Reply-To: From: Gioh Kim Date: Tue, 13 Apr 2021 15:11:33 +0200 Message-ID: Subject: Re: [PATCHv2 for-next 1/3] RDMA/rtrs-clt: Print more info when an error happens To: Leon Romanovsky Cc: Haakon Bugge , Jinpu Wang , OFED mailing list , Bart Van Assche , Doug Ledford , Jason Gunthorpe , Haris Iqbal , Gioh Kim Content-Type: multipart/mixed; boundary="000000000000bab9f605bfda6055" Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org --000000000000bab9f605bfda6055 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Apr 13, 2021 at 8:43 AM Leon Romanovsky wrote: > > On Tue, Apr 13, 2021 at 05:31:24AM +0000, Haakon Bugge wrote: > > > > > > > On 12 Apr 2021, at 19:34, Leon Romanovsky wrote: > > > > > > On Mon, Apr 12, 2021 at 04:00:55PM +0200, Gioh Kim wrote: > > >> On Mon, Apr 12, 2021 at 2:54 PM Jinpu Wang wr= ote: > > >>> > > >>> On Mon, Apr 12, 2021 at 2:41 PM Leon Romanovsky w= rote: > > >>>> > > >>>> On Mon, Apr 12, 2021 at 02:22:51PM +0200, Jinpu Wang wrote: > > >>>>> On Tue, Apr 6, 2021 at 2:41 PM Leon Romanovsky = wrote: > > >>>>>> > > >>>>>> On Tue, Apr 06, 2021 at 02:36:37PM +0200, Gioh Kim wrote: > > >>>>>>> From: Gioh Kim > > >>>>>>> > > >>>>>>> Client prints only error value and it is not enough for debuggi= ng. > > >>>>>>> > > >>>>>>> 1. When client receives an error from server: > > >>>>>>> the client does not only print the error value but also > > >>>>>>> more information of server connection. > > >>>>>>> > > >>>>>>> 2. When client failes to send IO: > > >>>>>>> the client gets an error from RDMA layer. It also > > >>>>>>> print more information of server connection. > > >>>>>>> > > >>>>>>> Signed-off-by: Gioh Kim > > >>>>>>> Signed-off-by: Jack Wang > > >>>>>>> --- > > >>>>>>> drivers/infiniband/ulp/rtrs/rtrs-clt.c | 33 +++++++++++++++++++= +++---- > > >>>>>>> 1 file changed, 29 insertions(+), 4 deletions(-) > > >>>>>>> > > >>>>>>> diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/i= nfiniband/ulp/rtrs/rtrs-clt.c > > >>>>>>> index 5062328ac577..a534b2b09e13 100644 > > >>>>>>> --- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c > > >>>>>>> +++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c > > >>>>>>> @@ -437,6 +437,11 @@ static void complete_rdma_req(struct rtrs_= clt_io_req *req, int errno, > > >>>>>>> req->in_use =3D false; > > >>>>>>> req->con =3D NULL; > > >>>>>>> > > >>>>>>> + if (unlikely(errno)) { > > >>>>>> > > >>>>>> I'm sorry, but all your patches are full of these likely/unlikel= y cargo > > >>>>>> cult. Can you please provide supportive performance data or dele= te all > > >>>>>> likely/unlikely in all rtrs code? > > >>>>> > > >>>>> Hi Leon, > > >>>>> > > >>>>> All the likely/unlikely from the non-fast path was removed as you > > >>>>> suggested in the past. > > >>>>> This one is on IO path, my understanding is for the fast path, wi= th > > >>>>> likely/unlikely macro, > > >>>>> the compiler will optimize the code for better branch prediction. > > >>>> > > >>>> In theory yes, in practice. gcc 10 generated same assembly code wh= en I > > >>>> placed likely() and replaced it with unlikely() later. > > >> > > >> Even-thought gcc 10 generated the same assembly code, > > >> there is no guarantee for gcc 11 or gcc 12. > > >> > > >> I am reviewing rtrs source file and have found some unnecessary like= ly/unlikely. > > >> But I think likely/unlikely are necessary for extreme cases. > > >> I will have a discussion with my colleagues and inform you of the re= sult. > > > > > > Please come with performance data. > > > > I think the best way to gather performance data is not remove the likel= y/unlikely, but swap their definitions. Less coding and more pronounced dif= ference - if any. > > In theory, it will multiply by 2 gain/loss, which is nice to see if > likely/ulikely change something. > > Thanks > > > > > > > Thxs, H=C3=A5kon > > Hi, In summary, there is no performance gap before/after swapping likely/unlikely macros. So I will send a patch to remove all likely/unlikely macros. I guess that is because - The performance of rnbd/rtrs depends on the network and block layer. - The network and block layer are not fast enough to get impacted by likely/unlikely. I ran fio read test with 32 rnbd devices and 64/128 processes on 64-CORE se= rver. The fio generated the exact same result before and after the swapping. Thanks to H=C3=A5kon for the test idea. Test environment: - Intel(R) Xeon(R) Gold 6130 CPU @ 2.10GHz - 376G memory - kernel version: 5.4.86 - gcc version: gcc (Debian 8.3.0-6) 8.3.0 - Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5] Test result: - before swapping: 32-dev/64-proc: IOPS=3D829k, BW=3D3239MiB/s 32-dev/128-proc: IOPS=3D816k, BW=3D3187MiB/s - after swapping 32-dev/64-proc: IOPS=3D829k, BW=3D3238MiB/s 32-dev/128-proc: IOPS=3D817k, BW=3D3191MiB/s (128-proc is worse than 64-proc but that is another issue) Attached files: - 0001-swap-likely-and-unlikely.patch: a patch file swapping likely and unlikely to show how I tested - after_swap.txt: raw data after swapping - current.txt: raw data before swapping For your information, I ran the performance test on two 8-core desktop mach= ines that are directly linked by Infiniband cables without switch. I got the same result with them: no performance difference. --000000000000bab9f605bfda6055 Content-Type: text/plain; charset="US-ASCII"; name="current.txt" Content-Disposition: attachment; filename="current.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kng16tzb1 MTQxIHJvb3RAcHM0MDFhLTkxNC5uc3Q6L3RtcC9kZGQvZ2tpbS9pYm5iZDIjIGdpdCByZXNldCAt LWhhcmQgSEVBRH4yCkhFQUQgaXMgbm93IGF0IDk5YzdjMmYgUkRNQS9ydHJzLWNsdDogZGVzdHJv eSBzeXNmcyBhZnRlciByZW1vdmluZyBzZXNzaW9uIGZyb20gYWN0aXZlIGxpc3QKcm9vdEBwczQw MWEtOTE0Lm5zdDovdG1wL2RkZC9na2ltL2libmJkMiMgbWFrZSBjbGVhbgptYWtlWzFdOiBFbnRl cmluZyBkaXJlY3RvcnkgJy91c3Ivc3JjL2xpbnV4LTUuNC44Ni1wc2VydmVyJwptYWtlWzFdOiBM ZWF2aW5nIGRpcmVjdG9yeSAnL3Vzci9zcmMvbGludXgtNS40Ljg2LXBzZXJ2ZXInCnJvb3RAcHM0 MDFhLTkxNC5uc3Q6L3RtcC9kZGQvZ2tpbS9pYm5iZDIjIG1ha2UKbWFrZVsxXTogRW50ZXJpbmcg ZGlyZWN0b3J5ICcvdXNyL3NyYy9saW51eC01LjQuODYtcHNlcnZlcicKICBDQyBbTV0gIC90bXAv ZGRkL2draW0vaWJuYmQyL3JuYmQvcm5iZC1jbHQubwogIENDIFtNXSAgL3RtcC9kZGQvZ2tpbS9p Ym5iZDIvcm5iZC9ybmJkLWNsdC1zeXNmcy5vCiAgQ0MgW01dICAvdG1wL2RkZC9na2ltL2libmJk Mi9ybmJkL3JuYmQtY29tbW9uLm8KICBMRCBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3JuYmQv cm5iZC1jbGllbnQubwogIENDIFtNXSAgL3RtcC9kZGQvZ2tpbS9pYm5iZDIvcm5iZC9ybmJkLXNy di5vCiAgQ0MgW01dICAvdG1wL2RkZC9na2ltL2libmJkMi9ybmJkL3JuYmQtc3J2LWRldi5vCiAg Q0MgW01dICAvdG1wL2RkZC9na2ltL2libmJkMi9ybmJkL3JuYmQtc3J2LXN5c2ZzLm8KICBMRCBb TV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3JuYmQvcm5iZC1zZXJ2ZXIubwogIENDIFtNXSAgL3Rt cC9kZGQvZ2tpbS9pYm5iZDIvcnRycy9ydHJzLm8KICBMRCBbTV0gIC90bXAvZGRkL2draW0vaWJu YmQyL3J0cnMvcnRycy1jb3JlLm8KICBDQyBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3J0cnMv cnRycy1jbHQubwogIENDIFtNXSAgL3RtcC9kZGQvZ2tpbS9pYm5iZDIvcnRycy9ydHJzLWNsdC1z dGF0cy5vCiAgQ0MgW01dICAvdG1wL2RkZC9na2ltL2libmJkMi9ydHJzL3J0cnMtY2x0LXN5c2Zz Lm8KICBMRCBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3J0cnMvcnRycy1jbGllbnQubwogIEND IFtNXSAgL3RtcC9kZGQvZ2tpbS9pYm5iZDIvcnRycy9ydHJzLXNydi5vCiAgQ0MgW01dICAvdG1w L2RkZC9na2ltL2libmJkMi9ydHJzL3J0cnMtc3J2LXN0YXRzLm8KICBDQyBbTV0gIC90bXAvZGRk L2draW0vaWJuYmQyL3J0cnMvcnRycy1zcnYtc3lzZnMubwogIExEIFtNXSAgL3RtcC9kZGQvZ2tp bS9pYm5iZDIvcnRycy9ydHJzLXNlcnZlci5vCiAgQVIgICAgICAvdG1wL2RkZC9na2ltL2libmJk Mi9idWlsdC1pbi5hCiAgQnVpbGRpbmcgbW9kdWxlcywgc3RhZ2UgMi4KICBNT0RQT1NUIDUgbW9k dWxlcwogIENDIFtNXSAgL3RtcC9kZGQvZ2tpbS9pYm5iZDIvcm5iZC9ybmJkLWNsaWVudC5tb2Qu bwogIExEIFtNXSAgL3RtcC9kZGQvZ2tpbS9pYm5iZDIvcm5iZC9ybmJkLWNsaWVudC5rbwogIEND IFtNXSAgL3RtcC9kZGQvZ2tpbS9pYm5iZDIvcm5iZC9ybmJkLXNlcnZlci5tb2QubwogIExEIFtN XSAgL3RtcC9kZGQvZ2tpbS9pYm5iZDIvcm5iZC9ybmJkLXNlcnZlci5rbwogIENDIFtNXSAgL3Rt cC9kZGQvZ2tpbS9pYm5iZDIvcnRycy9ydHJzLWNsaWVudC5tb2QubwogIExEIFtNXSAgL3RtcC9k ZGQvZ2tpbS9pYm5iZDIvcnRycy9ydHJzLWNsaWVudC5rbwogIENDIFtNXSAgL3RtcC9kZGQvZ2tp bS9pYm5iZDIvcnRycy9ydHJzLWNvcmUubW9kLm8KICBMRCBbTV0gIC90bXAvZGRkL2draW0vaWJu YmQyL3J0cnMvcnRycy1jb3JlLmtvCiAgQ0MgW01dICAvdG1wL2RkZC9na2ltL2libmJkMi9ydHJz L3J0cnMtc2VydmVyLm1vZC5vCiAgTEQgW01dICAvdG1wL2RkZC9na2ltL2libmJkMi9ydHJzL3J0 cnMtc2VydmVyLmtvCm1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5ICcvdXNyL3NyYy9saW51eC01 LjQuODYtcHNlcnZlcicKcm9vdEBwczQwMWEtOTE0Lm5zdDovdG1wL2RkZC9na2ltL2libmJkMiMg c3VkbyBybW1vZCBybmJkLWNsaWVudApyb290QHBzNDAxYS05MTQubnN0Oi90bXAvZGRkL2draW0v aWJuYmQyIyBzdWRvIHJtbW9kIHJ0cnMtY2xpZW50CnJvb3RAcHM0MDFhLTkxNC5uc3Q6L3RtcC9k ZGQvZ2tpbS9pYm5iZDIjIHN1ZG8gcm1tb2QgcnRycy1jb3JlCnJvb3RAcHM0MDFhLTkxNC5uc3Q6 L3RtcC9kZGQvZ2tpbS9pYm5iZDIjIHN1ZG8gaW5zbW9kIHJ0cnMvcnRycy1jb3JlLmtvCnJvb3RA cHM0MDFhLTkxNC5uc3Q6L3RtcC9kZGQvZ2tpbS9pYm5iZDIjIHN1ZG8gaW5zbW9kIHJ0cnMvcnRy cy1jbGllbnQua28Kcm9vdEBwczQwMWEtOTE0Lm5zdDovdG1wL2RkZC9na2ltL2libmJkMiMgc3Vk byBpbnNtb2Qgcm5iZC9ybmJkLWNsaWVudC5rbwoKCgoKcm9vdEBwczQwMWEtOTE0Lm5zdDovdG1w L2RkZC9na2ltL2libmJkMiMgYmFzaCBnb18zMmRldi5zaApmaW8gc3RhcnQgICA6IERpIDEzLiBB cHIgMTA6Mzg6MDkgVVRDIDIwMjEKa2VybmVsIGluZm8gOiBMaW51eCBwczQwMWEtOTE0IDUuNC44 Ni1wc2VydmVyICM1LjQuODYtM35kZWIxMCBTTVAgRnJpIE1hciA1IDEyOjI5OjM2IFVUQyAyMDIx IHg4Nl82NCBHTlUvTGludXgKZmlvIHZlcnNpb24gOiBmaW8tMy4xMgpnY2M6IGdjYyAoRGViaWFu IDguMy4wLTYpIDguMy4wCkNvcHlyaWdodCAoQykgMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWlu ZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8Kd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuClN0YXJ0IGZpbyB0 ZXN0CmZpb3Rlc3Q6IChnPTApOiBydz1yYW5kcmVhZCwgYnM9KFIpIDQwOTZCLTQwOTZCLCAoVykg NDA5NkItNDA5NkIsIChUKSA0MDk2Qi00MDk2QiwgaW9lbmdpbmU9bGliYWlvLCBpb2RlcHRoPTEy OAouLi4KZmlvLTMuMTIKU3RhcnRpbmcgNjQgcHJvY2Vzc2VzCkpvYnM6IDY0IChmPTIwNDgpOiBb cig2NCldWzAuMSVdW3I9MzIzM01pQi9zXVtyPTgyOGsgSU9QU11bZXRhIDAxZDoyMWg6MDZtOjUw c10KZmlvdGVzdDogKGdyb3VwaWQ9MCwgam9icz02NCk6IGVycj0gMDogcGlkPTIzMjE5OiBUdWUg QXByIDEzIDEwOjQxOjExIDIwMjEKICByZWFkOiBJT1BTPTgyOWssIEJXPTMyMzlNaUIvcyAoMzM5 Nk1CL3MpKDU2OUdpQi8xODAwMTFtc2VjKQogICAgc2xhdCAodXNlYyk6IG1pbj04MiwgbWF4PTE1 Njk5MywgYXZnPTEyNzguMDEsIHN0ZGV2PTE2ODMuMDEKICAgIGNsYXQgKG5zZWMpOiBtaW49MTA5 NiwgbWF4PTMwNjM0aywgYXZnPTg1MzgzMjMuNDIsIHN0ZGV2PTI0MTE4NTEuMjkKICAgICBsYXQg KHVzZWMpOiBtaW49MzE3LCBtYXg9MTYyMDExLCBhdmc9OTgxNi4zOSwgc3RkZXY9MjcwMi4wNAog ICAgY2xhdCBwZXJjZW50aWxlcyAodXNlYyk6CiAgICAgfCAgMS4wMHRoPVsgMzk0OV0sICA1LjAw dGg9WyA1MjExXSwgMTAuMDB0aD1bIDU4MDBdLCAyMC4wMHRoPVsgNjU4N10sCiAgICAgfCAzMC4w MHRoPVsgNzExMV0sIDQwLjAwdGg9WyA3NzAxXSwgNTAuMDB0aD1bIDgyMjVdLCA2MC4wMHRoPVsg ODg0OF0sCiAgICAgfCA3MC4wMHRoPVsgOTUwM10sIDgwLjAwdGg9WzEwNDIxXSwgOTAuMDB0aD1b MTE3MzFdLCA5NS4wMHRoPVsxMjkxMV0sCiAgICAgfCA5OS4wMHRoPVsxNTI3MF0sIDk5LjUwdGg9 WzE2MzE5XSwgOTkuOTB0aD1bMTg0ODJdLCA5OS45NXRoPVsxOTUzMF0sCiAgICAgfCA5OS45OXRo PVsyMTg5MF0KICAgYncgKCAgS2lCL3MpOiBtaW49MzY4NjQsIG1heD0xNjY5MTIsIHBlcj0xLjU2 JSwgYXZnPTUxNzczLjIzLCBzdGRldj0zMTU5Ljg1LCBzYW1wbGVzPTIyOTgwCiAgIGlvcHMgICAg ICAgIDogbWluPSA5MjE2LCBtYXg9NDE3MjgsIGF2Zz0xMjk0My4yNiwgc3RkZXY9Nzg5Ljk1LCBz YW1wbGVzPTIyOTgwCiAgbGF0ICh1c2VjKSAgIDogMj0wLjAxJSwgND0wLjAxJSwgMTA9MC4wMSUs IDIwPTAuMDElLCA1MD0wLjAxJQogIGxhdCAodXNlYykgICA6IDEwMD0wLjAxJSwgMjUwPTAuMDQl LCA1MDA9MC4wNCUsIDc1MD0wLjAyJSwgMTAwMD0wLjAyJQogIGxhdCAobXNlYykgICA6IDI9MC4w NiUsIDQ9MC45MCUsIDEwPTc0LjY1JSwgMjA9MjQuMjMlLCA1MD0wLjAzJQogIGNwdSAgICAgICAg ICA6IHVzcj0wLjk3JSwgc3lzPTQuOTUlLCBjdHg9ODI2NTA1MTksIG1hamY9MCwgbWluZj0zNTU1 NTM5CiAgSU8gZGVwdGhzICAgIDogMT0wLjAlLCAyPTAuMCUsIDQ9MC4wJSwgOD0wLjAlLCAxNj0w LjAlLCAzMj0wLjAlLCA+PTY0PTEwMC4wJQogICAgIHN1Ym1pdCAgICA6IDA9MC4wJSwgND0wLjAl LCA4PTAuMCUsIDE2PTAuMCUsIDMyPTAuMCUsIDY0PTAuMSUsID49NjQ9MTAwLjAlCiAgICAgY29t cGxldGUgIDogMD0wLjAlLCA0PTAuMCUsIDg9MC4wJSwgMTY9MC4wJSwgMzI9MC4wJSwgNjQ9MC4x JSwgPj02ND0xMDAuMCUKICAgICBpc3N1ZWQgcnd0czogdG90YWw9MTQ5MjUyODA1LDAsMCwwIHNo b3J0PTAsMCwwLDAgZHJvcHBlZD0wLDAsMCwwCiAgICAgbGF0ZW5jeSAgIDogdGFyZ2V0PTAsIHdp bmRvdz0wLCBwZXJjZW50aWxlPTEwMC4wMCUsIGRlcHRoPTEyOAoKUnVuIHN0YXR1cyBncm91cCAw IChhbGwgam9icyk6CiAgIFJFQUQ6IGJ3PTMyMzlNaUIvcyAoMzM5Nk1CL3MpLCAzMjM5TWlCL3Mt MzIzOU1pQi9zICgzMzk2TUIvcy0zMzk2TUIvcyksIGlvPTU2OUdpQiAoNjExR0IpLCBydW49MTgw MDExLTE4MDAxMW1zZWMKCkRpc2sgc3RhdHMgKHJlYWQvd3JpdGUpOgogIHJuYmQwOiBpb3M9NDY2 MzE4My8wLCBtZXJnZT0wLzAsIHRpY2tzPTEwMTIzNDc1LzAsIGluX3F1ZXVlPTMxNDA5MCwgdXRp bD05OS42MiUKICBybmJkMTogaW9zPTQ2NjMxODAvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDQ0NTI2 OC8wLCBpbl9xdWV1ZT0zMzQ0NTAsIHV0aWw9OTkuNjUlCiAgcm5iZDI6IGlvcz00NjYzMTgxLzAs IG1lcmdlPTAvMCwgdGlja3M9MTA2MzExMzgvMCwgaW5fcXVldWU9MzQ2MDkwLCB1dGlsPTk5LjY1 JQogIHJuYmQzOiBpb3M9NDY2MzE3OS8wLCBtZXJnZT0wLzAsIHRpY2tzPTEwNzkxMDQ2LzAsIGlu X3F1ZXVlPTM1MDU5MCwgdXRpbD05OS42NyUKICBybmJkNDogaW9zPTQ2NjMxNzUvMCwgbWVyZ2U9 MC8wLCB0aWNrcz0xMDg4ODA0NS8wLCBpbl9xdWV1ZT0zNjE5NjAsIHV0aWw9OTkuNjglCiAgcm5i ZDU6IGlvcz00NjYzMTgzLzAsIG1lcmdlPTAvMCwgdGlja3M9MTA5OTQ2OTcvMCwgaW5fcXVldWU9 MzY5NTQwLCB1dGlsPTk5LjcwJQogIHJuYmQ2OiBpb3M9NDY2MzE4Mi8wLCBtZXJnZT0wLzAsIHRp Y2tzPTExMDEwNzI2LzAsIGluX3F1ZXVlPTM2NTczMCwgdXRpbD05OS43MSUKICBybmJkNzogaW9z PTQ2NjMxODIvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMTA0MTAwOS8wLCBpbl9xdWV1ZT0zNzM4NzAs IHV0aWw9OTkuNzElCiAgcm5iZDg6IGlvcz00NjYzMTg1LzAsIG1lcmdlPTAvMCwgdGlja3M9MTEw NTA5NjEvMCwgaW5fcXVldWU9Mzc1MTQwLCB1dGlsPTk5Ljc0JQogIHJuYmQ5OiBpb3M9NDY2MzE4 NS8wLCBtZXJnZT0wLzAsIHRpY2tzPTExMDYzNjkxLzAsIGluX3F1ZXVlPTM3Mzg3MCwgdXRpbD05 OS43NSUKICBybmJkMTA6IGlvcz00NjYzMTg0LzAsIG1lcmdlPTAvMCwgdGlja3M9MTEwOTkxMTkv MCwgaW5fcXVldWU9Mzc1MzQwLCB1dGlsPTk5Ljc2JQogIHJuYmQxMTogaW9zPTQ2NjMxODcvMCwg bWVyZ2U9MC8wLCB0aWNrcz0xMTExMjMzMS8wLCBpbl9xdWV1ZT0zODIzMDAsIHV0aWw9OTkuNzgl CiAgcm5iZDEyOiBpb3M9NDY2MzE4Ny8wLCBtZXJnZT0xLzAsIHRpY2tzPTExMDc4ODUxLzAsIGlu X3F1ZXVlPTM3NjA1MCwgdXRpbD05OS43OSUKICBybmJkMTM6IGlvcz00NjYzMTg4LzAsIG1lcmdl PTAvMCwgdGlja3M9MTEwODc0MjIvMCwgaW5fcXVldWU9Mzc2MDQwLCB1dGlsPTk5LjgwJQogIHJu YmQxNDogaW9zPTQ2NjMxOTAvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMTA3MDI4Mi8wLCBpbl9xdWV1 ZT0zNzg1MDAsIHV0aWw9OTkuODAlCiAgcm5iZDE1OiBpb3M9NDY2MzE5MC8wLCBtZXJnZT0wLzAs IHRpY2tzPTk0MTc0MTgvMCwgaW5fcXVldWU9MjcxMDYwLCB1dGlsPTk5LjgxJQogIHJuYmQxNjog aW9zPTQ2NjMxOTEvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDU4ODQ0MS8wLCBpbl9xdWV1ZT0zNDg4 MDAsIHV0aWw9OTkuODQlCiAgcm5iZDE3OiBpb3M9NDY2MzE5My8wLCBtZXJnZT0wLzAsIHRpY2tz PTEwNzQwMjYzLzAsIGluX3F1ZXVlPTM2NDY1MCwgdXRpbD05OS44NCUKICBybmJkMTg6IGlvcz00 NjYzMTk1LzAsIG1lcmdlPTAvMCwgdGlja3M9MTA4MTM3NTIvMCwgaW5fcXVldWU9MzcxOTkwLCB1 dGlsPTk5Ljg2JQogIHJuYmQxOTogaW9zPTQ2NjMxOTMvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDg3 ODM1Mi8wLCBpbl9xdWV1ZT0zNzUwNTAsIHV0aWw9OTkuODclCiAgcm5iZDIwOiBpb3M9NDY2MzE5 My8wLCBtZXJnZT0wLzAsIHRpY2tzPTEwODQ1Njg2LzAsIGluX3F1ZXVlPTM3MTAxMCwgdXRpbD05 OS44OCUKICBybmJkMjE6IGlvcz00NjYzMTk1LzAsIG1lcmdlPTAvMCwgdGlja3M9MTA4NTQ4ODkv MCwgaW5fcXVldWU9MzczOTQwLCB1dGlsPTk5LjkwJQogIHJuYmQyMjogaW9zPTQ2NjMxOTcvMCwg bWVyZ2U9MC8wLCB0aWNrcz0xMDkzNjI1MS8wLCBpbl9xdWV1ZT0zNzg4OTAsIHV0aWw9OTkuOTAl CiAgcm5iZDIzOiBpb3M9NDY2MzE5NS8wLCBtZXJnZT0wLzAsIHRpY2tzPTExMDAwOTg5LzAsIGlu X3F1ZXVlPTM4MDM2MCwgdXRpbD05OS45MiUKICBybmJkMjQ6IGlvcz00NjYzMjAwLzAsIG1lcmdl PTAvMCwgdGlja3M9MTEwNTYzMDIvMCwgaW5fcXVldWU9Mzg5MzAwLCB1dGlsPTk5LjkzJQogIHJu YmQyNTogaW9zPTQ2NjMxOTkvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMTA5OTYyNS8wLCBpbl9xdWV1 ZT0zOTY4MjAsIHV0aWw9OTkuOTMlCiAgcm5iZDI2OiBpb3M9NDY2MzE5Ny8wLCBtZXJnZT0wLzAs IHRpY2tzPTExMDkxMTAxLzAsIGluX3F1ZXVlPTM5MTMxMCwgdXRpbD05OS45NSUKICBybmJkMjc6 IGlvcz00NjYzMjAxLzAsIG1lcmdlPTAvMCwgdGlja3M9MTExMDgyNDIvMCwgaW5fcXVldWU9Mzk2 NDQwLCB1dGlsPTk5Ljk2JQogIHJuYmQyODogaW9zPTQ2NjMyMDMvMCwgbWVyZ2U9MC8wLCB0aWNr cz0xMTIyMjA4My8wLCBpbl9xdWV1ZT00MDU3MzAsIHV0aWw9MTAwLjAwJQogIHJuYmQyOTogaW9z PTQ2NjMyMDUvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMTI1MTM1My8wLCBpbl9xdWV1ZT00MTI4MTAs IHV0aWw9OTkuOTklCiAgcm5iZDMwOiBpb3M9NDY2MzIwMS8wLCBtZXJnZT0wLzAsIHRpY2tzPTEx MjM4MjQ5LzAsIGluX3F1ZXVlPTQxMzI2MCwgdXRpbD0xMDAuMDAlCiAgcm5iZDMxOiBpb3M9NDY2 MzIxOC8wLCBtZXJnZT0wLzAsIHRpY2tzPTExMjY3NDY5LzAsIGluX3F1ZXVlPTQxNDYyMCwgdXRp bD0xMDAuMDAlCgoKCgpyb290QHBzNDAxYS05MTQubnN0Oi90bXAvZGRkL2draW0vaWJuYmQyIyBi YXNoIGdvXzMyZGV2LnNoCmZpbyBzdGFydCAgIDogRGkgMTMuIEFwciAxMDo1ODozMyBVVEMgMjAy MQprZXJuZWwgaW5mbyA6IExpbnV4IHBzNDAxYS05MTQgNS40Ljg2LXBzZXJ2ZXIgIzUuNC44Ni0z fmRlYjEwIFNNUCBGcmkgTWFyIDUgMTI6Mjk6MzYgVVRDIDIwMjEgeDg2XzY0IEdOVS9MaW51eApm aW8gdmVyc2lvbiA6IGZpby0zLjEyCmdjYzogZ2NjIChEZWJpYW4gOC4zLjAtNikgOC4zLjAKQ29w eXJpZ2h0IChDKSAyMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpUaGlzIGlzIGZy ZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVy ZSBpcyBOTwp3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KU3RhcnQgZmlvIHRlc3QKZmlvdGVzdDogKGc9MCk6 IHJ3PXJhbmRyZWFkLCBicz0oUikgNDA5NkItNDA5NkIsIChXKSA0MDk2Qi00MDk2QiwgKFQpIDQw OTZCLTQwOTZCLCBpb2VuZ2luZT1saWJhaW8sIGlvZGVwdGg9MTI4Ci4uLgpmaW8tMy4xMgpTdGFy dGluZyA2NCBwcm9jZXNzZXMKSm9iczogNjQgKGY9MjA0OCk6IFtyKDY0KV1bMTAwLjAlXVtyPTMy MjdNaUIvc11bcj04MjZrIElPUFNdW2V0YSAwMG06MDBzXQpmaW90ZXN0OiAoZ3JvdXBpZD0wLCBq b2JzPTY0KTogZXJyPSAwOiBwaWQ9MjU2ODI6IFR1ZSBBcHIgMTMgMTE6MDE6MzUgMjAyMQogIHJl YWQ6IElPUFM9ODI2aywgQlc9MzIyOE1pQi9zICgzMzg1TUIvcykoNTY4R2lCLzE4MDAxMm1zZWMp CiAgICBzbGF0ICh1c2VjKTogbWluPTE3MCwgbWF4PTEzMTg4MywgYXZnPTEyODYuNTIsIHN0ZGV2 PTE2NzguNTAKICAgIGNsYXQgKG5zZWMpOiBtaW49MTM1NywgbWF4PTMxMTQxaywgYXZnPTg1NjE0 OTEuMjgsIHN0ZGV2PTI0MTc3NDAuMTgKICAgICBsYXQgKHVzZWMpOiBtaW49NTAyLCBtYXg9MTMz MjYyLCBhdmc9OTg0OC4wNywgc3RkZXY9MjcxMC42MgogICAgY2xhdCBwZXJjZW50aWxlcyAodXNl Yyk6CiAgICAgfCAgMS4wMHRoPVsgMzk0OV0sICA1LjAwdGg9WyA1MjExXSwgMTAuMDB0aD1bIDU4 MDBdLCAyMC4wMHRoPVsgNjU4N10sCiAgICAgfCAzMC4wMHRoPVsgNzE3N10sIDQwLjAwdGg9WyA3 NzAxXSwgNTAuMDB0aD1bIDgyMjVdLCA2MC4wMHRoPVsgODg0OF0sCiAgICAgfCA3MC4wMHRoPVsg OTUwM10sIDgwLjAwdGg9WzEwNDIxXSwgOTAuMDB0aD1bMTE4NjNdLCA5NS4wMHRoPVsxMzA0Ml0s CiAgICAgfCA5OS4wMHRoPVsxNTQwMV0sIDk5LjUwdGg9WzE2MzE5XSwgOTkuOTB0aD1bMTg0ODJd LCA5OS45NXRoPVsxOTI2OF0sCiAgICAgfCA5OS45OXRoPVsyMTg5MF0KICAgYncgKCAgS2lCL3Mp OiBtaW49MzI3NjgsIG1heD0yNTgwNDgsIHBlcj0xLjU2JSwgYXZnPTUxNjIyLjY1LCBzdGRldj0z NTAwLjgxLCBzYW1wbGVzPTIyOTgyCiAgIGlvcHMgICAgICAgIDogbWluPSA4MTkyLCBtYXg9NjQ1 MTIsIGF2Zz0xMjkwNS42Mywgc3RkZXY9ODc1LjIwLCBzYW1wbGVzPTIyOTgyCiAgbGF0ICh1c2Vj KSAgIDogMj0wLjAxJSwgND0wLjAxJSwgMTA9MC4wMSUsIDIwPTAuMDElLCA1MD0wLjAxJQogIGxh dCAodXNlYykgICA6IDEwMD0wLjAyJSwgMjUwPTAuMDMlLCA1MDA9MC4wMiUsIDc1MD0wLjAxJSwg MTAwMD0wLjAxJQogIGxhdCAobXNlYykgICA6IDI9MC4wNyUsIDQ9MC44OSUsIDEwPTc0LjMyJSwg MjA9MjQuNTklLCA1MD0wLjAzJQogIGNwdSAgICAgICAgICA6IHVzcj0wLjk2JSwgc3lzPTUuMDIl LCBjdHg9ODE3NzQ0NzUsIG1hamY9MCwgbWluZj0zMTk3ODcyCiAgSU8gZGVwdGhzICAgIDogMT0w LjAlLCAyPTAuMCUsIDQ9MC4wJSwgOD0wLjAlLCAxNj0wLjAlLCAzMj0wLjAlLCA+PTY0PTEwMC4w JQogICAgIHN1Ym1pdCAgICA6IDA9MC4wJSwgND0wLjAlLCA4PTAuMCUsIDE2PTAuMCUsIDMyPTAu MCUsIDY0PTAuMCUsID49NjQ9MTAwLjAlCiAgICAgY29tcGxldGUgIDogMD0wLjAlLCA0PTAuMCUs IDg9MC4wJSwgMTY9MC4wJSwgMzI9MC4wJSwgNjQ9MC4wJSwgPj02ND0xMDAuMCUKICAgICBpc3N1 ZWQgcnd0czogdG90YWw9MTQ4NzcyODY0LDAsMCwwIHNob3J0PTAsMCwwLDAgZHJvcHBlZD0wLDAs MCwwCiAgICAgbGF0ZW5jeSAgIDogdGFyZ2V0PTAsIHdpbmRvdz0wLCBwZXJjZW50aWxlPTEwMC4w MCUsIGRlcHRoPTEyOAoKUnVuIHN0YXR1cyBncm91cCAwIChhbGwgam9icyk6CiAgIFJFQUQ6IGJ3 PTMyMjhNaUIvcyAoMzM4NU1CL3MpLCAzMjI4TWlCL3MtMzIyOE1pQi9zICgzMzg1TUIvcy0zMzg1 TUIvcyksIGlvPTU2OEdpQiAoNjA5R0IpLCBydW49MTgwMDEyLTE4MDAxMm1zZWMKCkRpc2sgc3Rh dHMgKHJlYWQvd3JpdGUpOgogIHJuYmQwOiBpb3M9NDY0Nzg2OS8wLCBtZXJnZT0wLzAsIHRpY2tz PTEwMTU3NDc0LzAsIGluX3F1ZXVlPTMyODc3MCwgdXRpbD05OS42NCUKICBybmJkMTogaW9zPTQ2 NDc4NTkvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDQxNzk3OC8wLCBpbl9xdWV1ZT0zNDA4NTAsIHV0 aWw9OTkuNjclCiAgcm5iZDI6IGlvcz00NjQ3ODYzLzAsIG1lcmdlPTAvMCwgdGlja3M9MTA2MjM4 NDYvMCwgaW5fcXVldWU9MzU3NjkwLCB1dGlsPTk5LjY4JQogIHJuYmQzOiBpb3M9NDY0Nzg3NS8w LCBtZXJnZT0wLzAsIHRpY2tzPTEwNzYyOTkyLzAsIGluX3F1ZXVlPTM2NDI4MCwgdXRpbD05OS43 MCUKICBybmJkNDogaW9zPTQ2NDc4NjkvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDg3MDQwOC8wLCBp bl9xdWV1ZT0zNzEzNTAsIHV0aWw9OTkuNzAlCiAgcm5iZDU6IGlvcz00NjQ3ODY2LzAsIG1lcmdl PTAvMCwgdGlja3M9MTA5NTUzOTQvMCwgaW5fcXVldWU9Mzc3MDUwLCB1dGlsPTk5LjcyJQogIHJu YmQ2OiBpb3M9NDY0Nzg3NS8wLCBtZXJnZT0wLzAsIHRpY2tzPTExMDEwMjM1LzAsIGluX3F1ZXVl PTM4MzY0MCwgdXRpbD05OS43MyUKICBybmJkNzogaW9zPTQ2NDc4NzMvMCwgbWVyZ2U9MC8wLCB0 aWNrcz0xMTAzMjc0NC8wLCBpbl9xdWV1ZT0zODU0NDAsIHV0aWw9OTkuNzMlCiAgcm5iZDg6IGlv cz00NjQ3ODcxLzAsIG1lcmdlPTAvMCwgdGlja3M9MTEwNDM3ODcvMCwgaW5fcXVldWU9Mzg0MTUw LCB1dGlsPTk5Ljc2JQogIHJuYmQ5OiBpb3M9NDY0Nzg3Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTk0 MTUwNDcvMCwgaW5fcXVldWU9MjgxNTcwLCB1dGlsPTk5Ljc3JQogIHJuYmQxMDogaW9zPTQ2NDc4 ODEvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDQyNzYyOS8wLCBpbl9xdWV1ZT0zNDgyMDAsIHV0aWw9 OTkuNzglCiAgcm5iZDExOiBpb3M9NDY0Nzg3Ni8wLCBtZXJnZT0wLzAsIHRpY2tzPTEwNjE1ODQ0 LzAsIGluX3F1ZXVlPTM2MjkyMCwgdXRpbD05OS44MSUKICBybmJkMTI6IGlvcz00NjQ3ODcyLzAs IG1lcmdlPTEvMCwgdGlja3M9MTA2MzgxODEvMCwgaW5fcXVldWU9MzY2NTIwLCB1dGlsPTk5Ljgx JQogIHJuYmQxMzogaW9zPTQ2NDc4ODIvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDY3ODgyOC8wLCBp bl9xdWV1ZT0zNjg0NTAsIHV0aWw9OTkuODIlCiAgcm5iZDE0OiBpb3M9NDY0Nzg3NC8wLCBtZXJn ZT0wLzAsIHRpY2tzPTEwNjc4MDg4LzAsIGluX3F1ZXVlPTM3MDQ3MCwgdXRpbD05OS44MyUKICBy bmJkMTU6IGlvcz00NjQ3ODg3LzAsIG1lcmdlPTAvMCwgdGlja3M9MTA3MDIwNzEvMCwgaW5fcXVl dWU9MzY5NjQwLCB1dGlsPTk5Ljg0JQogIHJuYmQxNjogaW9zPTQ2NDc4NzUvMCwgbWVyZ2U9MC8w LCB0aWNrcz0xMDcxMDA1OS8wLCBpbl9xdWV1ZT0zNzQ5MDAsIHV0aWw9OTkuODYlCiAgcm5iZDE3 OiBpb3M9NDY0Nzg4My8wLCBtZXJnZT0wLzAsIHRpY2tzPTEwNzYxMzM1LzAsIGluX3F1ZXVlPTM3 ODg2MCwgdXRpbD05OS44NyUKICBybmJkMTg6IGlvcz00NjQ3ODg0LzAsIG1lcmdlPTAvMCwgdGlj a3M9MTA3ODQ0NDEvMCwgaW5fcXVldWU9Mzc5MDEwLCB1dGlsPTk5Ljg5JQogIHJuYmQxOTogaW9z PTQ2NDc4ODIvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDgyODM5NS8wLCBpbl9xdWV1ZT0zODA2ODAs IHV0aWw9OTkuOTIlCiAgcm5iZDIwOiBpb3M9NDY0Nzg5Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTEw ODU2MzUxLzAsIGluX3F1ZXVlPTM4NDA1MCwgdXRpbD05OS45MSUKICBybmJkMjE6IGlvcz00NjQ3 ODk4LzAsIG1lcmdlPTAvMCwgdGlja3M9MTA4ODkyMjYvMCwgaW5fcXVldWU9Mzg1MTIwLCB1dGls PTk5Ljk0JQogIHJuYmQyMjogaW9zPTQ2NDc4OTAvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDkxNTU0 NC8wLCBpbl9xdWV1ZT0zODkxODAsIHV0aWw9OTkuOTMlCiAgcm5iZDIzOiBpb3M9NDY0Nzg4OC8w LCBtZXJnZT0wLzAsIHRpY2tzPTEwOTIyNzk3LzAsIGluX3F1ZXVlPTM5MjYwMCwgdXRpbD05OS45 NCUKICBybmJkMjQ6IGlvcz00NjQ3ODkxLzAsIG1lcmdlPTAvMCwgdGlja3M9MTA5NjQ3NDMvMCwg aW5fcXVldWU9Mzk1MjAwLCB1dGlsPTk5Ljk1JQogIHJuYmQyNTogaW9zPTQ2NDc4OTQvMCwgbWVy Z2U9MC8wLCB0aWNrcz0xMTAxNzQ1OS8wLCBpbl9xdWV1ZT00MDgwNzAsIHV0aWw9OTkuOTYlCiAg cm5iZDI2OiBpb3M9NDY0Nzg5Ni8wLCBtZXJnZT0wLzAsIHRpY2tzPTExMDg0Mzc3LzAsIGluX3F1 ZXVlPTQwNTcwMCwgdXRpbD05OS45OCUKICBybmJkMjc6IGlvcz00NjQ3ODkzLzAsIG1lcmdlPTAv MCwgdGlja3M9MTExMDgxMzMvMCwgaW5fcXVldWU9NDA3MzAwLCB1dGlsPTk5Ljk5JQogIHJuYmQy ODogaW9zPTQ2NDc5MDUvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMTE1MzU5NS8wLCBpbl9xdWV1ZT00 MTY2MTAsIHV0aWw9MTAwLjAwJQogIHJuYmQyOTogaW9zPTQ2NDc4OTkvMCwgbWVyZ2U9MC8wLCB0 aWNrcz0xMTIxMzgxMS8wLCBpbl9xdWV1ZT00MjA4MjAsIHV0aWw9MTAwLjAwJQogIHJuYmQzMDog aW9zPTQ2NDc5MDMvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMTIyODk2NC8wLCBpbl9xdWV1ZT00MjE5 NjAsIHV0aWw9MTAwLjAwJQogIHJuYmQzMTogaW9zPTQ2NDc5MDQvMCwgbWVyZ2U9MC8wLCB0aWNr cz0xMTI3NzYxMi8wLCBpbl9xdWV1ZT00MjQ4NDAsIHV0aWw9MTAwLjAwJQoKCgpyb290QHBzNDAx YS05MTQubnN0Oi90bXAvZGRkL2draW0vaWJuYmQyIyBiYXNoIGdvXzMyZGV2LnNoCmZpbyBzdGFy dCAgIDogRGkgMTMuIEFwciAxMTowNDoxNyBVVEMgMjAyMQprZXJuZWwgaW5mbyA6IExpbnV4IHBz NDAxYS05MTQgNS40Ljg2LXBzZXJ2ZXIgIzUuNC44Ni0zfmRlYjEwIFNNUCBGcmkgTWFyIDUgMTI6 Mjk6MzYgVVRDIDIwMjEgeDg2XzY0IEdOVS9MaW51eApmaW8gdmVyc2lvbiA6IGZpby0zLjEyCmdj YzogZ2NjIChEZWJpYW4gOC4zLjAtNikgOC4zLjAKQ29weXJpZ2h0IChDKSAyMDE4IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgpUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291 cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwp3YXJyYW50eTsgbm90IGV2 ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4KU3RhcnQgZmlvIHRlc3QKZmlvdGVzdDogKGc9MCk6IHJ3PXJhbmRyZWFkLCBicz0oUikgNDA5 NkItNDA5NkIsIChXKSA0MDk2Qi00MDk2QiwgKFQpIDQwOTZCLTQwOTZCLCBpb2VuZ2luZT1saWJh aW8sIGlvZGVwdGg9MTI4Ci4uLgpmaW8tMy4xMgpTdGFydGluZyA2NCBwcm9jZXNzZXMKSm9iczog NjQgKGY9MjA0OCk6IFtyKDY0KV1bMTAwLjAlXVtyPTMyMzlNaUIvc11bcj04MjlrIElPUFNdW2V0 YSAwMG06MDBzXQpmaW90ZXN0OiAoZ3JvdXBpZD0wLCBqb2JzPTY0KTogZXJyPSAwOiBwaWQ9MjY1 MjM6IFR1ZSBBcHIgMTMgMTE6MDc6MTkgMjAyMQogIHJlYWQ6IElPUFM9ODI5aywgQlc9MzIzOE1p Qi9zICgzMzk1TUIvcykoNTY5R2lCLzE4MDAxOW1zZWMpCiAgICBzbGF0ICh1c2VjKTogbWluPTE2 OCwgbWF4PTE3MjY0NywgYXZnPTEyOTAuODksIHN0ZGV2PTE3MDIuNDIKICAgIGNsYXQgKG5zZWMp OiBtaW49MTM1OSwgbWF4PTM0NzQwaywgYXZnPTg1MjU1MTcuNjUsIHN0ZGV2PTI0MTA0NDAuMjgK ICAgICBsYXQgKHVzZWMpOiBtaW49NDU0LCBtYXg9MTcyODQ4LCBhdmc9OTgxNi40Niwgc3RkZXY9 MjcxOC4yMAogICAgY2xhdCBwZXJjZW50aWxlcyAodXNlYyk6CiAgICAgfCAgMS4wMHRoPVsgMzkx Nl0sICA1LjAwdGg9WyA1MjExXSwgMTAuMDB0aD1bIDU4MDBdLCAyMC4wMHRoPVsgNjUyMV0sCiAg ICAgfCAzMC4wMHRoPVsgNzExMV0sIDQwLjAwdGg9WyA3NjM1XSwgNTAuMDB0aD1bIDgyMjVdLCA2 MC4wMHRoPVsgODg0OF0sCiAgICAgfCA3MC4wMHRoPVsgOTUwM10sIDgwLjAwdGg9WzEwNDIxXSwg OTAuMDB0aD1bMTE3MzFdLCA5NS4wMHRoPVsxMjkxMV0sCiAgICAgfCA5OS4wMHRoPVsxNTI3MF0s IDk5LjUwdGg9WzE2MTg4XSwgOTkuOTB0aD1bMTg0ODJdLCA5OS45NXRoPVsxOTUzMF0sCiAgICAg fCA5OS45OXRoPVsyMjE1Ml0KICAgYncgKCAgS2lCL3MpOiBtaW49MzE3NDQsIG1heD0yODI2MjQs IHBlcj0xLjU2JSwgYXZnPTUxNzcwLjc1LCBzdGRldj0zOTIyLjUzLCBzYW1wbGVzPTIyOTg1CiAg IGlvcHMgICAgICAgIDogbWluPSA3OTM2LCBtYXg9NzA2NTYsIGF2Zz0xMjk0Mi42Niwgc3RkZXY9 OTgwLjYzLCBzYW1wbGVzPTIyOTg1CiAgbGF0ICh1c2VjKSAgIDogMj0wLjAxJSwgND0wLjAxJSwg MTA9MC4wMSUsIDIwPTAuMDElLCA1MD0wLjAzJQogIGxhdCAodXNlYykgICA6IDEwMD0wLjAyJSwg MjUwPTAuMDQlLCA1MDA9MC4wMiUsIDc1MD0wLjAxJSwgMTAwMD0wLjAxJQogIGxhdCAobXNlYykg ICA6IDI9MC4wNiUsIDQ9MC45MSUsIDEwPTc0Ljc5JSwgMjA9MjQuMDclLCA1MD0wLjA0JQogIGNw dSAgICAgICAgICA6IHVzcj0xLjAwJSwgc3lzPTQuOTglLCBjdHg9ODIzMzI5NDgsIG1hamY9MCwg bWluZj0zNzUyMjAxCiAgSU8gZGVwdGhzICAgIDogMT0wLjAlLCAyPTAuMCUsIDQ9MC4wJSwgOD0w LjAlLCAxNj0wLjAlLCAzMj0wLjAlLCA+PTY0PTEwMC4wJQogICAgIHN1Ym1pdCAgICA6IDA9MC4w JSwgND0wLjAlLCA4PTAuMCUsIDE2PTAuMCUsIDMyPTAuMCUsIDY0PTAuMCUsID49NjQ9MTAwLjAl CiAgICAgY29tcGxldGUgIDogMD0wLjAlLCA0PTAuMCUsIDg9MC4wJSwgMTY9MC4wJSwgMzI9MC4w JSwgNjQ9MC4wJSwgPj02ND0xMDAuMCUKICAgICBpc3N1ZWQgcnd0czogdG90YWw9MTQ5MjAzMTQ0 LDAsMCwwIHNob3J0PTAsMCwwLDAgZHJvcHBlZD0wLDAsMCwwCiAgICAgbGF0ZW5jeSAgIDogdGFy Z2V0PTAsIHdpbmRvdz0wLCBwZXJjZW50aWxlPTEwMC4wMCUsIGRlcHRoPTEyOAoKUnVuIHN0YXR1 cyBncm91cCAwIChhbGwgam9icyk6CiAgIFJFQUQ6IGJ3PTMyMzhNaUIvcyAoMzM5NU1CL3MpLCAz MjM4TWlCL3MtMzIzOE1pQi9zICgzMzk1TUIvcy0zMzk1TUIvcyksIGlvPTU2OUdpQiAoNjExR0Ip LCBydW49MTgwMDE5LTE4MDAxOW1zZWMKCkRpc2sgc3RhdHMgKHJlYWQvd3JpdGUpOgogIHJuYmQw OiBpb3M9NDY2MTA2Ni8wLCBtZXJnZT0wLzAsIHRpY2tzPTEwMjY0NzExLzAsIGluX3F1ZXVlPTMy MjExMCwgdXRpbD05OS42MiUKICBybmJkMTogaW9zPTQ2NjEwNjMvMCwgbWVyZ2U9MC8wLCB0aWNr cz0xMDU1MDg5NS8wLCBpbl9xdWV1ZT0zNDMzNTAsIHV0aWw9OTkuNjQlCiAgcm5iZDI6IGlvcz00 NjYxMDc1LzAsIG1lcmdlPTAvMCwgdGlja3M9MTA3MjQ4OTkvMCwgaW5fcXVldWU9MzQ3ODIwLCB1 dGlsPTk5LjY1JQogIHJuYmQzOiBpb3M9NDY2MTA4Mi8wLCBtZXJnZT0wLzAsIHRpY2tzPTEwNzMz NTMyLzAsIGluX3F1ZXVlPTM0OTYyMCwgdXRpbD05OS42NyUKICBybmJkNDogaW9zPTQ2NjEwNzcv MCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDg2Mzk4MS8wLCBpbl9xdWV1ZT0zNTcyNTAsIHV0aWw9OTku NjclCiAgcm5iZDU6IGlvcz00NjYxMDcyLzAsIG1lcmdlPTAvMCwgdGlja3M9MTA5ODk4MjkvMCwg aW5fcXVldWU9MzY4NTEwLCB1dGlsPTk5LjY4JQogIHJuYmQ2OiBpb3M9NDY2MTA4NS8wLCBtZXJn ZT0wLzAsIHRpY2tzPTExMDEzODI0LzAsIGluX3F1ZXVlPTM2NTk2MCwgdXRpbD05OS42OCUKICBy bmJkNzogaW9zPTQ2NjEwODIvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMTA2OTI0OS8wLCBpbl9xdWV1 ZT0zNzI5NTAsIHV0aWw9OTkuNzAlCiAgcm5iZDg6IGlvcz00NjYxMDc0LzAsIG1lcmdlPTAvMCwg dGlja3M9OTQwOTg4MC8wLCBpbl9xdWV1ZT0yNjIxMzAsIHV0aWw9OTkuNzIlCiAgcm5iZDk6IGlv cz00NjYxMDc1LzAsIG1lcmdlPTAvMCwgdGlja3M9MTA0ODE1MTcvMCwgaW5fcXVldWU9MzM4OTYw LCB1dGlsPTk5LjczJQogIHJuYmQxMDogaW9zPTQ2NjEwNzEvMCwgbWVyZ2U9MC8wLCB0aWNrcz0x MDY3Njc5MS8wLCBpbl9xdWV1ZT0zNTI5MzAsIHV0aWw9OTkuNzQlCiAgcm5iZDExOiBpb3M9NDY2 MTA4MC8wLCBtZXJnZT0wLzAsIHRpY2tzPTEwNzAzNjgwLzAsIGluX3F1ZXVlPTM1MjA0MCwgdXRp bD05OS43NiUKICBybmJkMTI6IGlvcz00NjYxMDczLzAsIG1lcmdlPTAvMCwgdGlja3M9MTA2OTQx MjQvMCwgaW5fcXVldWU9MzU0NzQwLCB1dGlsPTk5Ljc2JQogIHJuYmQxMzogaW9zPTQ2NjEwNzQv MCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDcwNTY5Ny8wLCBpbl9xdWV1ZT0zNTMzNDAsIHV0aWw9OTku NzglCiAgcm5iZDE0OiBpb3M9NDY2MTA4Mi8wLCBtZXJnZT0wLzAsIHRpY2tzPTEwNzQ4NjQ2LzAs IGluX3F1ZXVlPTM2MTAyMCwgdXRpbD05OS43OCUKICBybmJkMTU6IGlvcz00NjYxMDg5LzAsIG1l cmdlPTAvMCwgdGlja3M9MTA3NTQ0MjQvMCwgaW5fcXVldWU9MzYyNTgwLCB1dGlsPTk5Ljc5JQog IHJuYmQxNjogaW9zPTQ2NjEwODUvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDc4MTk1Ni8wLCBpbl9x dWV1ZT0zNjI1NzAsIHV0aWw9OTkuODIlCiAgcm5iZDE3OiBpb3M9NDY2MTA4My8wLCBtZXJnZT0w LzAsIHRpY2tzPTEwODQyMTE5LzAsIGluX3F1ZXVlPTM2OTUxMCwgdXRpbD05OS44MyUKICBybmJk MTg6IGlvcz00NjYxMDg0LzAsIG1lcmdlPTAvMCwgdGlja3M9MTA4MzU3NTAvMCwgaW5fcXVldWU9 MzcwNDkwLCB1dGlsPTk5Ljg1JQogIHJuYmQxOTogaW9zPTQ2NjEwOTMvMCwgbWVyZ2U9MC8wLCB0 aWNrcz0xMDkwMzY1NS8wLCBpbl9xdWV1ZT0zNzMxMDAsIHV0aWw9OTkuODYlCiAgcm5iZDIwOiBp b3M9NDY2MTA5Mi8wLCBtZXJnZT0wLzAsIHRpY2tzPTEwOTE3OTQzLzAsIGluX3F1ZXVlPTM3NjM2 MCwgdXRpbD05OS44NyUKICBybmJkMjE6IGlvcz00NjYxMDk0LzAsIG1lcmdlPTAvMCwgdGlja3M9 MTA5NTE0MjgvMCwgaW5fcXVldWU9MzgwNTkwLCB1dGlsPTk5Ljg5JQogIHJuYmQyMjogaW9zPTQ2 NjEwODgvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDk2OTgzMS8wLCBpbl9xdWV1ZT0zNzkxMzAsIHV0 aWw9OTkuODklCiAgcm5iZDIzOiBpb3M9NDY2MTA4Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTExMDM2 NzA5LzAsIGluX3F1ZXVlPTM4Nzg2MCwgdXRpbD05OS45MSUKICBybmJkMjQ6IGlvcz00NjYxMDk1 LzAsIG1lcmdlPTAvMCwgdGlja3M9MTEwNDUyNDMvMCwgaW5fcXVldWU9Mzg5NzcwLCB1dGlsPTk5 LjkxJQogIHJuYmQyNTogaW9zPTQ2NjEwOTQvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMTA5Njc5NS8w LCBpbl9xdWV1ZT0zOTEyODAsIHV0aWw9OTkuOTMlCiAgcm5iZDI2OiBpb3M9NDY2MTA4OS8wLCBt ZXJnZT0wLzAsIHRpY2tzPTExMTY4NDI4LzAsIGluX3F1ZXVlPTQwMTQyMCwgdXRpbD05OS45NSUK ICBybmJkMjc6IGlvcz00NjYxMDg4LzAsIG1lcmdlPTAvMCwgdGlja3M9MTExOTkzOTQvMCwgaW5f cXVldWU9NDA2NzgwLCB1dGlsPTk5Ljk2JQogIHJuYmQyODogaW9zPTQ2NjExMDAvMCwgbWVyZ2U9 MC8wLCB0aWNrcz0xMTIxMTgxNi8wLCBpbl9xdWV1ZT00MDE4MjAsIHV0aWw9OTkuOTglCiAgcm5i ZDI5OiBpb3M9NDY2MTEwNy8wLCBtZXJnZT0wLzAsIHRpY2tzPTExMjYwODI2LzAsIGluX3F1ZXVl PTQxMDQ4MCwgdXRpbD05OS45OSUKICBybmJkMzA6IGlvcz00NjYxMTExLzAsIG1lcmdlPTAvMCwg dGlja3M9MTEzMDEwNDEvMCwgaW5fcXVldWU9NDE4NTkwLCB1dGlsPTk5Ljk5JQogIHJuYmQzMTog aW9zPTQ2NjExMDUvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMTI2NDgzOC8wLCBpbl9xdWV1ZT00MTQ0 NjAsIHV0aWw9MTAwLjAwJQoKcm9vdEBwczQwMWEtOTE0Lm5zdDovdG1wL2RkZC9na2ltL2libmJk MiMgYmFzaCBnb18zMmRldl8xMjhwcm9jLnNoCmZpbyBzdGFydCAgIDogRGkgMTMuIEFwciAxMToz Njo1MyBVVEMgMjAyMQprZXJuZWwgaW5mbyA6IExpbnV4IHBzNDAxYS05MTQgNS40Ljg2LXBzZXJ2 ZXIgIzUuNC44Ni0zfmRlYjEwIFNNUCBGcmkgTWFyIDUgMTI6Mjk6MzYgVVRDIDIwMjEgeDg2XzY0 IEdOVS9MaW51eApmaW8gdmVyc2lvbiA6IGZpby0zLjEyCmdjYzogZ2NjIChEZWJpYW4gOC4zLjAt NikgOC4zLjAKQ29weXJpZ2h0IChDKSAyMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgpUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRp dGlvbnMuICBUaGVyZSBpcyBOTwp3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KU3RhcnQgZmlvIHRlc3QKZmlv dGVzdDogKGc9MCk6IHJ3PXJhbmRyZWFkLCBicz0oUikgNDA5NkItNDA5NkIsIChXKSA0MDk2Qi00 MDk2QiwgKFQpIDQwOTZCLTQwOTZCLCBpb2VuZ2luZT1saWJhaW8sIGlvZGVwdGg9MTI4Ci4uLgpm aW8tMy4xMgpTdGFydGluZyAxMjggcHJvY2Vzc2VzCkpvYnM6IDYyIChmPTApOiBbZigxKSxfKDIp LGYoMSksXygxKSxmKDEpLF8oMyksZigxKSxfKDIpLGYoMyksXygyKSxmKDEpLF8oMyksZigxKSxf KDMpLGYoMiksXygxKSxmKDEpLF8oOCksZig0KSxfKDEpLGYoMSksXygyKSxmKDEpLF8oMSksZigx KSxfKDEpLGYoMSksXygyKSxmKDIpLF8oMSksZigxKSxfKDIpLGYoMyksXygxKSxmKDEpLF8oMSks ZigxKSxfKDEpLApmKDIpLF8oMSksZigyKSxfKDEpLGYoNCksXygxKSxmKDEpLF8oNSksZigxKSxf KDEpLGYoMSksXygyKSxmKDIpLF8oNiksZig2KSxfKDEpLGYoMyksXygxKSxmKDEpLF8oNCksZig1 KSxfKDEpLGYoMyksXygzKSxmKDEpLF8oMSksZigyKV1bMTAwLjAlXVtyPTI1MDRNaUIvc11bcj02 NDFrIElPUFNdW2V0YSAwMG06MDBzXQpmaW90ZXN0OiAoZ3JvdXBpZD0wLCBqb2JzPTEyOCk6IGVy cj0gMDogcGlkPTMyNjczOiBUdWUgQXByIDEzIDExOjM5OjU2IDIwMjEKICByZWFkOiBJT1BTPTgx NmssIEJXPTMxODdNaUIvcyAoMzM0MU1CL3MpKDU2MEdpQi8xODAwMzBtc2VjKQogICAgc2xhdCAo dXNlYyk6IG1pbj0xOTQsIG1heD00ODEwODMsIGF2Zz03NzY4LjE4LCBzdGRldj01NjkzLjQzCiAg ICBjbGF0IChuc2VjKTogbWluPTExNjMsIG1heD00MDY4NWssIGF2Zz0xMjIwODc0MS43OCwgc3Rk ZXY9MzU0NDM4MC41MQogICAgIGxhdCAodXNlYyk6IG1pbj01MDksIG1heD00ODMyNTMsIGF2Zz0x OTk3Ni45OCwgc3RkZXY9NTg3Ny4zOQogICAgY2xhdCBwZXJjZW50aWxlcyAodXNlYyk6CiAgICAg fCAgMS4wMHRoPVsgNDU1NV0sICA1LjAwdGg9WyA2ODQ5XSwgMTAuMDB0aD1bIDc5NjNdLCAyMC4w MHRoPVsgOTM3Ml0sCiAgICAgfCAzMC4wMHRoPVsxMDI5MF0sIDQwLjAwdGg9WzExMjA3XSwgNTAu MDB0aD1bMTE5OTRdLCA2MC4wMHRoPVsxMjkxMV0sCiAgICAgfCA3MC4wMHRoPVsxMzgyOV0sIDgw LjAwdGg9WzE1MDA4XSwgOTAuMDB0aD1bMTY3MTJdLCA5NS4wMHRoPVsxODIyMF0sCiAgICAgfCA5 OS4wMHRoPVsyMTYyN10sIDk5LjUwdGg9WzIzMjAwXSwgOTkuOTB0aD1bMjYzNDZdLCA5OS45NXRo PVsyNzY1N10sCiAgICAgfCA5OS45OXRoPVszMDU0MF0KICAgYncgKCAgS2lCL3MpOiBtaW49IDIw NDgsIG1heD0xNzM3MzIsIHBlcj0wLjc4JSwgYXZnPTI1NDU5LjUyLCBzdGRldj0yOTE3LjAzLCBz YW1wbGVzPTQ1OTcwCiAgIGlvcHMgICAgICAgIDogbWluPSAgNTEyLCBtYXg9NDM0MzMsIGF2Zz02 MzY0Ljg1LCBzdGRldj03MjkuMjYsIHNhbXBsZXM9NDU5NzAKICBsYXQgKHVzZWMpICAgOiAyPTAu MDElLCA0PTAuMDElLCAxMD0wLjAxJSwgMjA9MC4wMSUsIDUwPTAuMDMlCiAgbGF0ICh1c2VjKSAg IDogMTAwPTAuMDQlLCAyNTA9MC4wNSUsIDUwMD0wLjAzJSwgNzUwPTAuMDElLCAxMDAwPTAuMDEl CiAgbGF0IChtc2VjKSAgIDogMj0wLjA2JSwgND0wLjQ0JSwgMTA9MjUuOTklLCAyMD03MS4wNSUs IDUwPTIuMjglCiAgY3B1ICAgICAgICAgIDogdXNyPTAuNTglLCBzeXM9Mi4xOCUsIGN0eD03NTc3 NjA4OCwgbWFqZj0wLCBtaW5mPTY2MjgwMDYKICBJTyBkZXB0aHMgICAgOiAxPTAuMCUsIDI9MC4w JSwgND0wLjAlLCA4PTAuMCUsIDE2PTAuMCUsIDMyPTAuMCUsID49NjQ9MTAwLjAlCiAgICAgc3Vi bWl0ICAgIDogMD0wLjAlLCA0PTAuMCUsIDg9MC4wJSwgMTY9MC4wJSwgMzI9MC4wJSwgNjQ9MC4w JSwgPj02ND0xMDAuMCUKICAgICBjb21wbGV0ZSAgOiAwPTAuMCUsIDQ9MC4wJSwgOD0wLjAlLCAx Nj0wLjAlLCAzMj0wLjAlLCA2ND0wLjAlLCA+PTY0PTEwMC4wJQogICAgIGlzc3VlZCByd3RzOiB0 b3RhbD0xNDY4NjMzMzYsMCwwLDAgc2hvcnQ9MCwwLDAsMCBkcm9wcGVkPTAsMCwwLDAKICAgICBs YXRlbmN5ICAgOiB0YXJnZXQ9MCwgd2luZG93PTAsIHBlcmNlbnRpbGU9MTAwLjAwJSwgZGVwdGg9 MTI4CgpSdW4gc3RhdHVzIGdyb3VwIDAgKGFsbCBqb2JzKToKICAgUkVBRDogYnc9MzE4N01pQi9z ICgzMzQxTUIvcyksIDMxODdNaUIvcy0zMTg3TWlCL3MgKDMzNDFNQi9zLTMzNDFNQi9zKSwgaW89 NTYwR2lCICg2MDJHQiksIHJ1bj0xODAwMzAtMTgwMDMwbXNlYwoKRGlzayBzdGF0cyAocmVhZC93 cml0ZSk6CiAgcm5iZDA6IGlvcz00NTg5NDE5LzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ0NTQ2OTMv MCwgaW5fcXVldWU9MjE4NDAwMCwgdXRpbD05OS42NyUKICBybmJkMTogaW9zPTQ1ODk0MTkvMCwg bWVyZ2U9MC8wLCB0aWNrcz0xNDkzOTYwMi8wLCBpbl9xdWV1ZT0yMzIzMzcwLCB1dGlsPTk5LjY4 JQogIHJuYmQyOiBpb3M9NDU4OTQyMi8wLCBtZXJnZT0wLzAsIHRpY2tzPTE1MDcxNzQ1LzAsIGlu X3F1ZXVlPTIzNjM3MjAsIHV0aWw9OTkuNjklCiAgcm5iZDM6IGlvcz00NTg5NDIyLzAsIG1lcmdl PTAvMCwgdGlja3M9MTUxOTYwMTkvMCwgaW5fcXVldWU9MjM5NTM2MCwgdXRpbD05OS43MCUKICBy bmJkNDogaW9zPTQ1ODk0MjIvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xNTIyOTIzNS8wLCBpbl9xdWV1 ZT0yNDAxMTQwLCB1dGlsPTk5LjcxJQogIHJuYmQ1OiBpb3M9NDU4OTQyMy8wLCBtZXJnZT0wLzAs IHRpY2tzPTE1MjY1NTU3LzAsIGluX3F1ZXVlPTIzOTU1NzAsIHV0aWw9OTkuNzIlCiAgcm5iZDY6 IGlvcz00NTg5NDI1LzAsIG1lcmdlPTAvMCwgdGlja3M9MTUzMDUwMjEvMCwgaW5fcXVldWU9MjQw NTMxMCwgdXRpbD05OS43MiUKICBybmJkNzogaW9zPTQ1ODk0MjQvMCwgbWVyZ2U9MC8wLCB0aWNr cz0xNTM2MTE2Ny8wLCBpbl9xdWV1ZT0yNDE3NTEwLCB1dGlsPTk5LjczJQogIHJuYmQ4OiBpb3M9 NDU4OTQyNS8wLCBtZXJnZT0wLzAsIHRpY2tzPTE1Mzc0MzA4LzAsIGluX3F1ZXVlPTI0MTkwNjAs IHV0aWw9OTkuNzYlCiAgcm5iZDk6IGlvcz00NTg5NDI3LzAsIG1lcmdlPTAvMCwgdGlja3M9MTE1 MTYxODAvMCwgaW5fcXVldWU9MTQzODI4MCwgdXRpbD05OS43NyUKICBybmJkMTA6IGlvcz00NTg5 NDI3LzAsIG1lcmdlPTAvMCwgdGlja3M9MTQxNzAzOTUvMCwgaW5fcXVldWU9MjE0NzI5MCwgdXRp bD05OS43NyUKICBybmJkMTE6IGlvcz00NTg5NDI3LzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ3MjAx NTYvMCwgaW5fcXVldWU9MjI5NjQ1MCwgdXRpbD05OS43OSUKICBybmJkMTI6IGlvcz00NTg5NDI2 LzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ3OTg4MjgvMCwgaW5fcXVldWU9MjMxOTYzMCwgdXRpbD05 OS43OSUKICBybmJkMTM6IGlvcz00NTg5NDI2LzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ3Nzk2OTIv MCwgaW5fcXVldWU9MjMxNDExMCwgdXRpbD05OS44MSUKICBybmJkMTQ6IGlvcz00NTg5NDI2LzAs IG1lcmdlPTAvMCwgdGlja3M9MTQ4MDc5NzEvMCwgaW5fcXVldWU9MjMyMDk0MCwgdXRpbD05OS44 MSUKICBybmJkMTU6IGlvcz00NTg5NDI3LzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ4MTU4MTcvMCwg aW5fcXVldWU9MjMyMDgwMCwgdXRpbD05OS44MiUKICBybmJkMTY6IGlvcz00NTg5NDI4LzAsIG1l cmdlPTAvMCwgdGlja3M9MTQ4NzQ1MTEvMCwgaW5fcXVldWU9MjM0MTg1MCwgdXRpbD05OS44NSUK ICBybmJkMTc6IGlvcz00NTg5NDI4LzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ4ODQzMTkvMCwgaW5f cXVldWU9MjM0MDQxMCwgdXRpbD05OS44NiUKICBybmJkMTg6IGlvcz00NTg5NDI5LzAsIG1lcmdl PTAvMCwgdGlja3M9MTQ4ODk3NDAvMCwgaW5fcXVldWU9MjM1MDg0MCwgdXRpbD05OS44OCUKICBy bmJkMTk6IGlvcz00NTg5NDI4LzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ4NTE0NzgvMCwgaW5fcXVl dWU9MjMzMzg0MCwgdXRpbD05OS44OSUKICBybmJkMjA6IGlvcz00NTg5NDMwLzAsIG1lcmdlPTAv MCwgdGlja3M9MTQ5MTcwOTYvMCwgaW5fcXVldWU9MjM1MDAzMCwgdXRpbD05OS44OSUKICBybmJk MjE6IGlvcz00NTg5NDMwLzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ4OTY2MjcvMCwgaW5fcXVldWU9 MjM0MjIzMCwgdXRpbD05OS45MSUKICBybmJkMjI6IGlvcz00NTg5NDMxLzAsIG1lcmdlPTAvMCwg dGlja3M9MTQ4NjU3NjgvMCwgaW5fcXVldWU9MjMyMzUxMCwgdXRpbD05OS45MSUKICBybmJkMjM6 IGlvcz00NTg5NDMxLzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ5NDM3NjYvMCwgaW5fcXVldWU9MjM1 MTIxMCwgdXRpbD05OS45MiUKICBybmJkMjQ6IGlvcz00NTg5NDMxLzAsIG1lcmdlPTAvMCwgdGlj a3M9MTQ5NTI0ODIvMCwgaW5fcXVldWU9MjM2ODMxMCwgdXRpbD05OS45MiUKICBybmJkMjU6IGlv cz00NTg5NDMxLzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ5NjYzNzkvMCwgaW5fcXVldWU9MjM2NzAz MCwgdXRpbD05OS45MyUKICBybmJkMjY6IGlvcz00NTg5NDMzLzAsIG1lcmdlPTAvMCwgdGlja3M9 MTQ5NzUwMTkvMCwgaW5fcXVldWU9MjM2ODAzMCwgdXRpbD05OS45NSUKICBybmJkMjc6IGlvcz00 NTg5NDM0LzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ5OTA4ODUvMCwgaW5fcXVldWU9MjM2OTg0MCwg dXRpbD05OS45NiUKICBybmJkMjg6IGlvcz00NTg5NDMzLzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ5 MzY0OTgvMCwgaW5fcXVldWU9MjM2NjI5MCwgdXRpbD05OS45OCUKICBybmJkMjk6IGlvcz00NTg5 NDMzLzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ5ODY4ODcvMCwgaW5fcXVldWU9MjM4MDUzMCwgdXRp bD05OS45OSUKICBybmJkMzA6IGlvcz00NTg5NDM0LzAsIG1lcmdlPTEvMCwgdGlja3M9MTUwMTgx NDMvMCwgaW5fcXVldWU9MjM5NTMzMCwgdXRpbD05OS45OSUKICBybmJkMzE6IGlvcz00NTg5NDM1 LzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ5OTUxNzcvMCwgaW5fcXVldWU9MjM4MTA5MCwgdXRpbD0x MDAuMDAlCgo= --000000000000bab9f605bfda6055 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-swap-likely-and-unlikely.patch" Content-Disposition: attachment; filename="0001-swap-likely-and-unlikely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kng0d9030 RnJvbSAyNjM2MzExZTVlMjg5NGJkN2M3ODAwOTM5YTNiOWI2OGU3YTkzYmNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHaW9oIEtpbSA8Z2ktb2gua2ltQGlvbm9zLmNvbT4KRGF0ZTog VHVlLCAxMyBBcHIgMjAyMSAxNDowMDoyNyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIHN3YXAgbGlr ZWx5IGFuZCB1bmxpa2VseQoKLS0tCiBydHJzL3J0cnMtY2x0LmMgfCAxMzQgKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzAg aW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcnRycy9ydHJzLWNs dC5jIGIvcnRycy9ydHJzLWNsdC5jCmluZGV4IDFiNGIzZTYuLjYyMzU4MjcgMTAwNjQ0Ci0tLSBh L3J0cnMvcnRycy1jbHQuYworKysgYi9ydHJzL3J0cnMtY2x0LmMKQEAgLTE3LDYgKzE3LDEyIEBA CiAjaW5jbHVkZSAicnRycy1jbHQuaCIKICNpbmNsdWRlICJydHJzLWxvZy5oIgogCisKKworI2Rl ZmluZSBNWUxJS0VMWSh4KSB1bmxpa2VseSh4KQorI2RlZmluZSBNWVVOTElLRUxZKHgpIGxpa2Vs eSh4KQorCisKICNkZWZpbmUgUlRSU19DT05ORUNUX1RJTUVPVVRfTVMgMzAwMDAKIC8qCiAgKiBX YWl0IGEgYml0IGJlZm9yZSB0cnlpbmcgdG8gcmVjb25uZWN0IGFmdGVyIGEgZmFpbHVyZQpAQCAt ODAsOSArODYsOSBAQCBfX3J0cnNfZ2V0X3Blcm1pdChzdHJ1Y3QgcnRyc19jbHQgKmNsdCwgZW51 bSBydHJzX2NsdF9jb25fdHlwZSBjb25fdHlwZSkKIAkgKi8KIAlkbyB7CiAJCWJpdCA9IGZpbmRf Zmlyc3RfemVyb19iaXQoY2x0LT5wZXJtaXRzX21hcCwgbWF4X2RlcHRoKTsKLQkJaWYgKHVubGlr ZWx5KGJpdCA+PSBtYXhfZGVwdGgpKQorCQlpZiAoTVlVTkxJS0VMWShiaXQgPj0gbWF4X2RlcHRo KSkKIAkJCXJldHVybiBOVUxMOwotCX0gd2hpbGUgKHVubGlrZWx5KHRlc3RfYW5kX3NldF9iaXRf bG9jayhiaXQsIGNsdC0+cGVybWl0c19tYXApKSk7CisJfSB3aGlsZSAoTVlVTkxJS0VMWSh0ZXN0 X2FuZF9zZXRfYml0X2xvY2soYml0LCBjbHQtPnBlcm1pdHNfbWFwKSkpOwogCiAJcGVybWl0ID0g Z2V0X3Blcm1pdChjbHQsIGJpdCk7CiAJV0FSTl9PTihwZXJtaXQtPm1lbV9pZCAhPSBiaXQpOwpA QCAtMTIwLDE0ICsxMjYsMTQgQEAgc3RydWN0IHJ0cnNfcGVybWl0ICpydHJzX2NsdF9nZXRfcGVy bWl0KHN0cnVjdCBydHJzX2NsdCAqY2x0LAogCURFRklORV9XQUlUKHdhaXQpOwogCiAJcGVybWl0 ID0gX19ydHJzX2dldF9wZXJtaXQoY2x0LCBjb25fdHlwZSk7Ci0JaWYgKGxpa2VseShwZXJtaXQp IHx8ICFjYW5fd2FpdCkKKwlpZiAoTVlMSUtFTFkocGVybWl0KSB8fCAhY2FuX3dhaXQpCiAJCXJl dHVybiBwZXJtaXQ7CiAKIAlkbyB7CiAJCXByZXBhcmVfdG9fd2FpdCgmY2x0LT5wZXJtaXRzX3dh aXQsICZ3YWl0LAogCQkJCVRBU0tfVU5JTlRFUlJVUFRJQkxFKTsKIAkJcGVybWl0ID0gX19ydHJz X2dldF9wZXJtaXQoY2x0LCBjb25fdHlwZSk7Ci0JCWlmIChsaWtlbHkocGVybWl0KSkKKwkJaWYg KE1ZTElLRUxZKHBlcm1pdCkpCiAJCQlicmVhazsKIAogCQlpb19zY2hlZHVsZSgpOwpAQCAtMTgw LDcgKzE4Niw3IEBAIHN0cnVjdCBydHJzX2NsdF9jb24gKnJ0cnNfcGVybWl0X3RvX2NsdF9jb24o c3RydWN0IHJ0cnNfY2x0X3Nlc3MgKnNlc3MsCiB7CiAJaW50IGlkID0gMDsKIAotCWlmIChsaWtl bHkocGVybWl0LT5jb25fdHlwZSA9PSBSVFJTX0lPX0NPTikpCisJaWYgKE1ZTElLRUxZKHBlcm1p dC0+Y29uX3R5cGUgPT0gUlRSU19JT19DT04pKQogCQlpZCA9IChwZXJtaXQtPmNwdV9pZCAlIChz ZXNzLT5zLmlycV9jb25fbnVtIC0gMSkpICsgMTsKIAogCXJldHVybiB0b19jbHRfY29uKHNlc3Mt PnMuY29uW2lkXSk7CkBAIC0yOTksNyArMzA1LDcgQEAgc3RhdGljIHZvaWQgcnRyc19jbHRfZmFz dF9yZWdfZG9uZShzdHJ1Y3QgaWJfY3EgKmNxLCBzdHJ1Y3QgaWJfd2MgKndjKQogewogCXN0cnVj dCBydHJzX2NsdF9jb24gKmNvbiA9IGNxLT5jcV9jb250ZXh0OwogCi0JaWYgKHVubGlrZWx5KHdj LT5zdGF0dXMgIT0gSUJfV0NfU1VDQ0VTUykpIHsKKwlpZiAoTVlVTkxJS0VMWSh3Yy0+c3RhdHVz ICE9IElCX1dDX1NVQ0NFU1MpKSB7CiAJCXJ0cnNfZXJyKGNvbi0+Yy5zZXNzLCAiRmFpbGVkIElC X1dSX1JFR19NUjogJXNcbiIsCiAJCQkgIGliX3djX3N0YXR1c19tc2cod2MtPnN0YXR1cykpOwog CQlydHJzX3JkbWFfZXJyb3JfcmVjb3ZlcnkoY29uKTsKQEAgLTMxOSwxMyArMzI1LDEzIEBAIHN0 YXRpYyB2b2lkIHJ0cnNfY2x0X2ludl9ya2V5X2RvbmUoc3RydWN0IGliX2NxICpjcSwgc3RydWN0 IGliX3djICp3YykKIAkJY29udGFpbmVyX29mKHdjLT53cl9jcWUsIHR5cGVvZigqcmVxKSwgaW52 X2NxZSk7CiAJc3RydWN0IHJ0cnNfY2x0X2NvbiAqY29uID0gY3EtPmNxX2NvbnRleHQ7CiAKLQlp ZiAodW5saWtlbHkod2MtPnN0YXR1cyAhPSBJQl9XQ19TVUNDRVNTKSkgeworCWlmIChNWVVOTElL RUxZKHdjLT5zdGF0dXMgIT0gSUJfV0NfU1VDQ0VTUykpIHsKIAkJcnRyc19lcnIoY29uLT5jLnNl c3MsICJGYWlsZWQgSUJfV1JfTE9DQUxfSU5WOiAlc1xuIiwKIAkJCSAgaWJfd2Nfc3RhdHVzX21z Zyh3Yy0+c3RhdHVzKSk7CiAJCXJ0cnNfcmRtYV9lcnJvcl9yZWNvdmVyeShjb24pOwogCX0KIAly ZXEtPm5lZWRfaW52ID0gZmFsc2U7Ci0JaWYgKGxpa2VseShyZXEtPm5lZWRfaW52X2NvbXApKQor CWlmIChNWUxJS0VMWShyZXEtPm5lZWRfaW52X2NvbXApKQogCQljb21wbGV0ZSgmcmVxLT5pbnZf Y29tcCk7CiAJZWxzZQogCQkvKiBDb21wbGV0ZSByZXF1ZXN0IGZyb20gSU5WIGNhbGxiYWNrICov CkBAIC0zNjAsNyArMzY2LDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVfcmRtYV9yZXEoc3RydWN0 IHJ0cnNfY2x0X2lvX3JlcSAqcmVxLCBpbnQgZXJybm8sCiAJc2VzcyA9IHRvX2NsdF9zZXNzKGNv bi0+Yy5zZXNzKTsKIAogCWlmIChyZXEtPnNnX2NudCkgewotCQlpZiAodW5saWtlbHkocmVxLT5k aXIgPT0gRE1BX0ZST01fREVWSUNFICYmIHJlcS0+bmVlZF9pbnYpKSB7CisJCWlmIChNWVVOTElL RUxZKHJlcS0+ZGlyID09IERNQV9GUk9NX0RFVklDRSAmJiByZXEtPm5lZWRfaW52KSkgewogCQkJ LyoKIAkJCSAqIFdlIGFyZSBoZXJlIHRvIGludmFsaWRhdGUgcmVhZCByZXF1ZXN0cwogCQkJICog b3Vyc2VsdmVzLiAgSW4gbm9ybWFsIHNjZW5hcmlvIHNlcnZlciBzaG91bGQKQEAgLTM3NSw3ICsz ODEsNyBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9yZG1hX3JlcShzdHJ1Y3QgcnRyc19jbHRfaW9f cmVxICpyZXEsIGludCBlcnJubywKIAkJCSAqICAgICAgICBzaG91bGQgZG8gdGhhdCBvdXJzZWx2 ZXMuCiAJCQkgKi8KIAotCQkJaWYgKGxpa2VseShjYW5fd2FpdCkpIHsKKwkJCWlmIChNWUxJS0VM WShjYW5fd2FpdCkpIHsKIAkJCQlyZXEtPm5lZWRfaW52X2NvbXAgPSB0cnVlOwogCQkJfSBlbHNl IHsKIAkJCQkvKiBUaGlzIHNob3VsZCBiZSBJTyBwYXRoLCBzbyBhbHdheXMgbm90aWZ5ICovCkBA IC0zODYsMTAgKzM5MiwxMCBAQCBzdGF0aWMgdm9pZCBjb21wbGV0ZV9yZG1hX3JlcShzdHJ1Y3Qg cnRyc19jbHRfaW9fcmVxICpyZXEsIGludCBlcnJubywKIAogCQkJcmVmY291bnRfaW5jKCZyZXEt PnJlZik7CiAJCQllcnIgPSBydHJzX2ludl9ya2V5KHJlcSk7Ci0JCQlpZiAodW5saWtlbHkoZXJy KSkgeworCQkJaWYgKE1ZVU5MSUtFTFkoZXJyKSkgewogCQkJCXJ0cnNfZXJyKGNvbi0+Yy5zZXNz LCAiU2VuZCBJTlYgV1Iga2V5PSUjeDogJWRcbiIsCiAJCQkJCSAgcmVxLT5tci0+cmtleSwgZXJy KTsKLQkJCX0gZWxzZSBpZiAobGlrZWx5KGNhbl93YWl0KSkgeworCQkJfSBlbHNlIGlmIChNWUxJ S0VMWShjYW5fd2FpdCkpIHsKIAkJCQl3YWl0X2Zvcl9jb21wbGV0aW9uKCZyZXEtPmludl9jb21w KTsKIAkJCX0gZWxzZSB7CiAJCQkJLyoKQEAgLTQxNCw3ICs0MjAsNyBAQCBzdGF0aWMgdm9pZCBj b21wbGV0ZV9yZG1hX3JlcShzdHJ1Y3QgcnRyc19jbHRfaW9fcmVxICpyZXEsIGludCBlcnJubywK IAlyZXEtPmluX3VzZSA9IGZhbHNlOwogCXJlcS0+Y29uID0gTlVMTDsKIAotCWlmICh1bmxpa2Vs eShlcnJubykpIHsKKwlpZiAoTVlVTkxJS0VMWShlcnJubykpIHsKIAkJcnRyc19lcnJfcmwoY29u LT5jLnNlc3MsICJJTyByZXF1ZXN0IGZhaWxlZDogZXJyb3I9JWQgcGF0aD0lcyBbJXM6JXVdIG5v dGlmeT0lZFxuIiwKIAkJCSAgICBlcnJubywga29iamVjdF9uYW1lKCZzZXNzLT5rb2JqKSwgc2Vz cy0+aGNhX25hbWUsIHNlc3MtPmhjYV9wb3J0LCBub3RpZnkpOwogCX0KQEAgLTQzMiw3ICs0Mzgs NyBAQCBzdGF0aWMgaW50IHJ0cnNfcG9zdF9zZW5kX3JkbWEoc3RydWN0IHJ0cnNfY2x0X2NvbiAq Y29uLAogCWVudW0gaWJfc2VuZF9mbGFncyBmbGFnczsKIAlzdHJ1Y3QgaWJfc2dlIHNnZTsKIAot CWlmICh1bmxpa2VseSghcmVxLT5zZ19zaXplKSkgeworCWlmIChNWVVOTElLRUxZKCFyZXEtPnNn X3NpemUpKSB7CiAJCXJ0cnNfd3JuKGNvbi0+Yy5zZXNzLAogCQkJICJEb2luZyBSRE1BIFdyaXRl IGZhaWxlZCwgbm8gZGF0YSBzdXBwbGllZFxuIik7CiAJCXJldHVybiAtRUlOVkFMOwpAQCAtNDgy LDcgKzQ4OCw3IEBAIHN0YXRpYyB2b2lkIHJ0cnNfY2x0X3JlY3ZfZG9uZShzdHJ1Y3QgcnRyc19j bHRfY29uICpjb24sIHN0cnVjdCBpYl93YyAqd2MpCiAJaXUgPSBjb250YWluZXJfb2Yod2MtPndy X2NxZSwgc3RydWN0IHJ0cnNfaXUsCiAJCQkgIGNxZSk7CiAJZXJyID0gcnRyc19pdV9wb3N0X3Jl Y3YoJmNvbi0+YywgaXUpOwotCWlmICh1bmxpa2VseShlcnIpKSB7CisJaWYgKE1ZVU5MSUtFTFko ZXJyKSkgewogCQlydHJzX2Vycihjb24tPmMuc2VzcywgInBvc3QgaXUgZmFpbGVkICVkXG4iLCBl cnIpOwogCQlydHJzX3JkbWFfZXJyb3JfcmVjb3ZlcnkoY29uKTsKIAl9CkBAIC01MDIsNyArNTA4 LDcgQEAgc3RhdGljIHZvaWQgcnRyc19jbHRfcmtleV9yc3BfZG9uZShzdHJ1Y3QgcnRyc19jbHRf Y29uICpjb24sIHN0cnVjdCBpYl93YyAqd2MpCiAKIAlpdSA9IGNvbnRhaW5lcl9vZih3Yy0+d3Jf Y3FlLCBzdHJ1Y3QgcnRyc19pdSwgY3FlKTsKIAotCWlmICh1bmxpa2VseSh3Yy0+Ynl0ZV9sZW4g PCBzaXplb2YoKm1zZykpKSB7CisJaWYgKE1ZVU5MSUtFTFkod2MtPmJ5dGVfbGVuIDwgc2l6ZW9m KCptc2cpKSkgewogCQlydHJzX2Vycihjb24tPmMuc2VzcywgInJrZXkgcmVzcG9uc2UgaXMgbWFs Zm9ybWVkOiBzaXplICVkXG4iLAogCQkJICB3Yy0+Ynl0ZV9sZW4pOwogCQlnb3RvIG91dDsKQEAg LTUxMCw3ICs1MTYsNyBAQCBzdGF0aWMgdm9pZCBydHJzX2NsdF9ya2V5X3JzcF9kb25lKHN0cnVj dCBydHJzX2NsdF9jb24gKmNvbiwgc3RydWN0IGliX3djICp3YykKIAlpYl9kbWFfc3luY19zaW5n bGVfZm9yX2NwdShzZXNzLT5zLmRldi0+aWJfZGV2LCBpdS0+ZG1hX2FkZHIsCiAJCQkJICAgaXUt PnNpemUsIERNQV9GUk9NX0RFVklDRSk7CiAJbXNnID0gaXUtPmJ1ZjsKLQlpZiAodW5saWtlbHko bGUxNl90b19jcHUobXNnLT50eXBlKSAhPSBSVFJTX01TR19SS0VZX1JTUCkpIHsKKwlpZiAoTVlV TkxJS0VMWShsZTE2X3RvX2NwdShtc2ctPnR5cGUpICE9IFJUUlNfTVNHX1JLRVlfUlNQKSkgewog CQlydHJzX2VycihzZXNzLT5jbHQsICJya2V5IHJlc3BvbnNlIGlzIG1hbGZvcm1lZDogdHlwZSAl ZFxuIiwKIAkJCSAgbGUxNl90b19jcHUobXNnLT50eXBlKSk7CiAJCWdvdG8gb3V0OwpAQCAtNTIw LDcgKzUyNiw3IEBAIHN0YXRpYyB2b2lkIHJ0cnNfY2x0X3JrZXlfcnNwX2RvbmUoc3RydWN0IHJ0 cnNfY2x0X2NvbiAqY29uLCBzdHJ1Y3QgaWJfd2MgKndjKQogCQlnb3RvIG91dDsKIAogCXJ0cnNf ZnJvbV9pbW0oYmUzMl90b19jcHUod2MtPmV4LmltbV9kYXRhKSwgJmltbV90eXBlLCAmaW1tX3Bh eWxvYWQpOwotCWlmIChsaWtlbHkoaW1tX3R5cGUgPT0gUlRSU19JT19SU1BfSU1NIHx8CisJaWYg KE1ZTElLRUxZKGltbV90eXBlID09IFJUUlNfSU9fUlNQX0lNTSB8fAogCQkgICBpbW1fdHlwZSA9 PSBSVFJTX0lPX1JTUF9XX0lOVl9JTU0pKSB7CiAJCXUzMiBtc2dfaWQ7CiAKQEAgLTU3NCw3ICs1 ODAsNyBAQCBzdGF0aWMgdm9pZCBydHJzX2NsdF9yZG1hX2RvbmUoc3RydWN0IGliX2NxICpjcSwg c3RydWN0IGliX3djICp3YykKIAlib29sIHdfaW52YWwgPSBmYWxzZTsKIAlpbnQgZXJyOwogCi0J aWYgKHVubGlrZWx5KHdjLT5zdGF0dXMgIT0gSUJfV0NfU1VDQ0VTUykpIHsKKwlpZiAoTVlVTkxJ S0VMWSh3Yy0+c3RhdHVzICE9IElCX1dDX1NVQ0NFU1MpKSB7CiAJCWlmICh3Yy0+c3RhdHVzICE9 IElCX1dDX1dSX0ZMVVNIX0VSUikgewogCQkJcnRyc19lcnIoc2Vzcy0+Y2x0LCAiUkRNQSBmYWls ZWQ6ICVzXG4iLAogCQkJCSAgaWJfd2Nfc3RhdHVzX21zZyh3Yy0+c3RhdHVzKSk7CkBAIC01OTQs NyArNjAwLDcgQEAgc3RhdGljIHZvaWQgcnRyc19jbHRfcmRtYV9kb25lKHN0cnVjdCBpYl9jcSAq Y3EsIHN0cnVjdCBpYl93YyAqd2MpCiAJCQlyZXR1cm47CiAJCXJ0cnNfZnJvbV9pbW0oYmUzMl90 b19jcHUod2MtPmV4LmltbV9kYXRhKSwKIAkJCSAgICAgICAmaW1tX3R5cGUsICZpbW1fcGF5bG9h ZCk7Ci0JCWlmIChsaWtlbHkoaW1tX3R5cGUgPT0gUlRSU19JT19SU1BfSU1NIHx8CisJCWlmIChN WUxJS0VMWShpbW1fdHlwZSA9PSBSVFJTX0lPX1JTUF9JTU0gfHwKIAkJCSAgIGltbV90eXBlID09 IFJUUlNfSU9fUlNQX1dfSU5WX0lNTSkpIHsKIAkJCXUzMiBtc2dfaWQ7CiAKQEAgLTYyNiw3ICs2 MzIsNyBAQCBzdGF0aWMgdm9pZCBydHJzX2NsdF9yZG1hX2RvbmUoc3RydWN0IGliX2NxICpjcSwg c3RydWN0IGliX3djICp3YykKIAkJCWVyciA9IHJ0cnNfcG9zdF9yZWN2X2VtcHR5X3gyKCZjb24t PmMsICZpb19jb21wX2NxZSk7CiAJCWVsc2UKIAkJCWVyciA9IHJ0cnNfcG9zdF9yZWN2X2VtcHR5 KCZjb24tPmMsICZpb19jb21wX2NxZSk7Ci0JCWlmICh1bmxpa2VseShlcnIpKSB7CisJCWlmIChN WVVOTElLRUxZKGVycikpIHsKIAkJCXJ0cnNfZXJyKGNvbi0+Yy5zZXNzLCAicnRyc19wb3N0X3Jl Y3ZfZW1wdHkoKTogJWRcbiIsCiAJCQkJICBlcnIpOwogCQkJcnRyc19yZG1hX2Vycm9yX3JlY292 ZXJ5KGNvbik7CkBAIC02NzEsNyArNjc3LDcgQEAgc3RhdGljIGludCBwb3N0X3JlY3ZfaW8oc3Ry dWN0IHJ0cnNfY2x0X2NvbiAqY29uLCBzaXplX3QgcV9zaXplKQogCQl9IGVsc2UgewogCQkJZXJy ID0gcnRyc19wb3N0X3JlY3ZfZW1wdHkoJmNvbi0+YywgJmlvX2NvbXBfY3FlKTsKIAkJfQotCQlp ZiAodW5saWtlbHkoZXJyKSkKKwkJaWYgKE1ZVU5MSUtFTFkoZXJyKSkKIAkJCXJldHVybiBlcnI7 CiAJfQogCkBAIC02OTYsNyArNzAyLDcgQEAgc3RhdGljIGludCBwb3N0X3JlY3Zfc2VzcyhzdHJ1 Y3QgcnRyc19jbHRfc2VzcyAqc2VzcykKIAkJcV9zaXplICo9IDI7CiAKIAkJZXJyID0gcG9zdF9y ZWN2X2lvKHRvX2NsdF9jb24oc2Vzcy0+cy5jb25bY2lkXSksIHFfc2l6ZSk7Ci0JCWlmICh1bmxp a2VseShlcnIpKSB7CisJCWlmIChNWVVOTElLRUxZKGVycikpIHsKIAkJCXJ0cnNfZXJyKHNlc3Mt PmNsdCwgInBvc3RfcmVjdl9pbygpLCBlcnI6ICVkXG4iLCBlcnIpOwogCQkJcmV0dXJuIGVycjsK IAkJfQpAQCAtNzU3LDcgKzc2Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgcnRyc19jbHRfc2VzcyAqZ2V0 X25leHRfcGF0aF9ycihzdHJ1Y3QgcGF0aF9pdCAqaXQpCiAKIAlwcGNwdV9wYXRoID0gdGhpc19j cHVfcHRyKGNsdC0+cGNwdV9wYXRoKTsKIAlwYXRoID0gcmN1X2RlcmVmZXJlbmNlKCpwcGNwdV9w YXRoKTsKLQlpZiAodW5saWtlbHkoIXBhdGgpKQorCWlmIChNWVVOTElLRUxZKCFwYXRoKSkKIAkJ cGF0aCA9IGxpc3RfZmlyc3Rfb3JfbnVsbF9yY3UoJmNsdC0+cGF0aHNfbGlzdCwKIAkJCQkJICAg ICAgdHlwZW9mKCpwYXRoKSwgcy5lbnRyeSk7CiAJZWxzZQpAQCAtNzg4LDEwICs3OTQsMTAgQEAg c3RhdGljIHN0cnVjdCBydHJzX2NsdF9zZXNzICpnZXRfbmV4dF9wYXRoX21pbl9pbmZsaWdodChz dHJ1Y3QgcGF0aF9pdCAqaXQpCiAJaW50IGluZmxpZ2h0OwogCiAJbGlzdF9mb3JfZWFjaF9lbnRy eV9yY3Uoc2VzcywgJmNsdC0+cGF0aHNfbGlzdCwgcy5lbnRyeSkgewotCQlpZiAodW5saWtlbHko UkVBRF9PTkNFKHNlc3MtPnN0YXRlKSAhPSBSVFJTX0NMVF9DT05ORUNURUQpKQorCQlpZiAoTVlV TkxJS0VMWShSRUFEX09OQ0Uoc2Vzcy0+c3RhdGUpICE9IFJUUlNfQ0xUX0NPTk5FQ1RFRCkpCiAJ CQljb250aW51ZTsKIAotCQlpZiAodW5saWtlbHkoIWxpc3RfZW1wdHkocmF3X2NwdV9wdHIoc2Vz cy0+bXBfc2tpcF9lbnRyeSkpKSkKKwkJaWYgKE1ZVU5MSUtFTFkoIWxpc3RfZW1wdHkocmF3X2Nw dV9wdHIoc2Vzcy0+bXBfc2tpcF9lbnRyeSkpKSkKIAkJCWNvbnRpbnVlOwogCiAJCWluZmxpZ2h0 ID0gYXRvbWljX3JlYWQoJnNlc3MtPnN0YXRzLT5pbmZsaWdodCk7CkBAIC04MzksMTAgKzg0NSwx MCBAQCBzdGF0aWMgc3RydWN0IHJ0cnNfY2x0X3Nlc3MgKmdldF9uZXh0X3BhdGhfbWluX2xhdGVu Y3koc3RydWN0IHBhdGhfaXQgKml0KQogCWt0aW1lX3QgbGF0ZW5jeTsKIAogCWxpc3RfZm9yX2Vh Y2hfZW50cnlfcmN1KHNlc3MsICZjbHQtPnBhdGhzX2xpc3QsIHMuZW50cnkpIHsKLQkJaWYgKHVu bGlrZWx5KFJFQURfT05DRShzZXNzLT5zdGF0ZSkgIT0gUlRSU19DTFRfQ09OTkVDVEVEKSkKKwkJ aWYgKE1ZVU5MSUtFTFkoUkVBRF9PTkNFKHNlc3MtPnN0YXRlKSAhPSBSVFJTX0NMVF9DT05ORUNU RUQpKQogCQkJY29udGludWU7CiAKLQkJaWYgKHVubGlrZWx5KCFsaXN0X2VtcHR5KHJhd19jcHVf cHRyKHNlc3MtPm1wX3NraXBfZW50cnkpKSkpCisJCWlmIChNWVVOTElLRUxZKCFsaXN0X2VtcHR5 KHJhd19jcHVfcHRyKHNlc3MtPm1wX3NraXBfZW50cnkpKSkpCiAJCQljb250aW51ZTsKIAogCQls YXRlbmN5ID0gc2Vzcy0+cy5oYl9jdXJfbGF0ZW5jeTsKQEAgLTEwMzMsNyArMTAzOSw3IEBAIHN0 YXRpYyBpbnQgcnRyc19tYXBfc2dfZnIoc3RydWN0IHJ0cnNfY2x0X2lvX3JlcSAqcmVxLCBzaXpl X3QgY291bnQpCiAJbnIgPSBpYl9tYXBfbXJfc2cocmVxLT5tciwgcmVxLT5zZ2xpc3QsIGNvdW50 LCBOVUxMLCBTWl80Syk7CiAJaWYgKG5yIDwgMCkKIAkJcmV0dXJuIG5yOwotCWlmICh1bmxpa2Vs eShuciA8IHJlcS0+c2dfY250KSkKKwlpZiAoTVlVTkxJS0VMWShuciA8IHJlcS0+c2dfY250KSkK IAkJcmV0dXJuIC1FSU5WQUw7CiAJaWJfdXBkYXRlX2Zhc3RfcmVnX2tleShyZXEtPm1yLCBpYl9p bmNfcmtleShyZXEtPm1yLT5ya2V5KSk7CiAKQEAgLTEwNTcsNyArMTA2Myw3IEBAIHN0YXRpYyBp bnQgcnRyc19jbHRfd3JpdGVfcmVxKHN0cnVjdCBydHJzX2NsdF9pb19yZXEgKnJlcSkKIAogCWNv bnN0IHNpemVfdCB0c2l6ZSA9IHNpemVvZigqbXNnKSArIHJlcS0+ZGF0YV9sZW4gKyByZXEtPnVz cl9sZW47CiAKLQlpZiAodW5saWtlbHkodHNpemUgPiBzZXNzLT5jaHVua19zaXplKSkgeworCWlm IChNWVVOTElLRUxZKHRzaXplID4gc2Vzcy0+Y2h1bmtfc2l6ZSkpIHsKIAkJcnRyc193cm4ocywg IldyaXRlIHJlcXVlc3QgZmFpbGVkLCBzaXplIHRvbyBiaWcgJXp1ID4gJWRcbiIsCiAJCQkgIHRz aXplLCBzZXNzLT5jaHVua19zaXplKTsKIAkJcmV0dXJuIC1FTVNHU0laRTsKQEAgLTEwNjUsNyAr MTA3MSw3IEBAIHN0YXRpYyBpbnQgcnRyc19jbHRfd3JpdGVfcmVxKHN0cnVjdCBydHJzX2NsdF9p b19yZXEgKnJlcSkKIAlpZiAocmVxLT5zZ19jbnQpIHsKIAkJY291bnQgPSBpYl9kbWFfbWFwX3Nn KHNlc3MtPnMuZGV2LT5pYl9kZXYsIHJlcS0+c2dsaXN0LAogCQkJCSAgICAgIHJlcS0+c2dfY250 LCByZXEtPmRpcik7Ci0JCWlmICh1bmxpa2VseSghY291bnQpKSB7CisJCWlmIChNWVVOTElLRUxZ KCFjb3VudCkpIHsKIAkJCXJ0cnNfd3JuKHMsICJXcml0ZSByZXF1ZXN0IGZhaWxlZCwgbWFwIGZh aWxlZFxuIik7CiAJCQlyZXR1cm4gLUVJTlZBTDsKIAkJfQpAQCAtMTEyMCw3ICsxMTI2LDcgQEAg c3RhdGljIGludCBydHJzX2NsdF93cml0ZV9yZXEoc3RydWN0IHJ0cnNfY2x0X2lvX3JlcSAqcmVx KQogCQkJCSAgICAgIHJlcS0+dXNyX2xlbiArIHNpemVvZigqbXNnKSArCiAJCQkJICAgICAgc2l6 ZW9mKHN0cnVjdCBydHJzX3NnX2Rlc2MpLAogCQkJCSAgICAgIGltbSwgd3IsICZpbnZfd3IpOwot CWlmICh1bmxpa2VseShyZXQpKSB7CisJaWYgKE1ZVU5MSUtFTFkocmV0KSkgewogCQlydHJzX2Vy cl9ybChzLCAiV3JpdGUgcmVxdWVzdCBmYWlsZWQ6IGVycm9yPSVkIHBhdGg9JXMgWyVzOiV1XVxu IiwKIAkJCSAgICByZXQsIGtvYmplY3RfbmFtZSgmc2Vzcy0+a29iaiksIHNlc3MtPmhjYV9uYW1l LCBzZXNzLT5oY2FfcG9ydCk7CiAJCWlmIChzZXNzLT5jbHQtPm1wX3BvbGljeSA9PSBNUF9QT0xJ Q1lfTUlOX0lORkxJR0hUKQpAQCAtMTE1MCw3ICsxMTU2LDcgQEAgc3RhdGljIGludCBydHJzX2Ns dF9yZWFkX3JlcShzdHJ1Y3QgcnRyc19jbHRfaW9fcmVxICpyZXEpCiAKIAljb25zdCBzaXplX3Qg dHNpemUgPSBzaXplb2YoKm1zZykgKyByZXEtPmRhdGFfbGVuICsgcmVxLT51c3JfbGVuOwogCi0J aWYgKHVubGlrZWx5KHRzaXplID4gc2Vzcy0+Y2h1bmtfc2l6ZSkpIHsKKwlpZiAoTVlVTkxJS0VM WSh0c2l6ZSA+IHNlc3MtPmNodW5rX3NpemUpKSB7CiAJCXJ0cnNfd3JuKHMsCiAJCQkgICJSZWFk IHJlcXVlc3QgZmFpbGVkLCBtZXNzYWdlIHNpemUgaXMgJXp1LCBiaWdnZXIgdGhhbiBDSFVOS19T SVpFICVkXG4iLAogCQkJICB0c2l6ZSwgc2Vzcy0+Y2h1bmtfc2l6ZSk7CkBAIC0xMTYwLDcgKzEx NjYsNyBAQCBzdGF0aWMgaW50IHJ0cnNfY2x0X3JlYWRfcmVxKHN0cnVjdCBydHJzX2NsdF9pb19y ZXEgKnJlcSkKIAlpZiAocmVxLT5zZ19jbnQpIHsKIAkJY291bnQgPSBpYl9kbWFfbWFwX3NnKGRl di0+aWJfZGV2LCByZXEtPnNnbGlzdCwgcmVxLT5zZ19jbnQsCiAJCQkJICAgICAgcmVxLT5kaXIp OwotCQlpZiAodW5saWtlbHkoIWNvdW50KSkgeworCQlpZiAoTVlVTkxJS0VMWSghY291bnQpKSB7 CiAJCQlydHJzX3dybihzLAogCQkJCSAgIlJlYWQgcmVxdWVzdCBmYWlsZWQsIGRtYSBtYXAgZmFp bGVkXG4iKTsKIAkJCXJldHVybiAtRUlOVkFMOwpAQCAtMTIzNCw3ICsxMjQwLDcgQEAgc3RhdGlj IGludCBydHJzX2NsdF9yZWFkX3JlcShzdHJ1Y3QgcnRyc19jbHRfaW9fcmVxICpyZXEpCiAKIAly ZXQgPSBydHJzX3Bvc3Rfc2VuZF9yZG1hKHJlcS0+Y29uLCByZXEsICZzZXNzLT5yYnVmc1tidWZf aWRdLAogCQkJCSAgIHJlcS0+ZGF0YV9sZW4sIGltbSwgd3IpOwotCWlmICh1bmxpa2VseShyZXQp KSB7CisJaWYgKE1ZVU5MSUtFTFkocmV0KSkgewogCQlydHJzX2Vycl9ybChzLCAiUmVhZCByZXF1 ZXN0IGZhaWxlZDogZXJyb3I9JWQgcGF0aD0lcyBbJXM6JXVdXG4iLAogCQkJICAgIHJldCwga29i amVjdF9uYW1lKCZzZXNzLT5rb2JqKSwgc2Vzcy0+aGNhX25hbWUsIHNlc3MtPmhjYV9wb3J0KTsK IAkJaWYgKHNlc3MtPmNsdC0+bXBfcG9saWN5ID09IE1QX1BPTElDWV9NSU5fSU5GTElHSFQpCkBA IC0xMjY1LDcgKzEyNzEsNyBAQCBzdGF0aWMgaW50IHJ0cnNfY2x0X2ZhaWxvdmVyX3JlcShzdHJ1 Y3QgcnRyc19jbHQgKmNsdCwKIAlmb3IgKHBhdGhfaXRfaW5pdCgmaXQsIGNsdCk7CiAJICAgICAo YWxpdmVfc2VzcyA9IGl0Lm5leHRfcGF0aCgmaXQpKSAmJiBpdC5pIDwgaXQuY2x0LT5wYXRoc19u dW07CiAJICAgICBpdC5pKyspIHsKLQkJaWYgKHVubGlrZWx5KFJFQURfT05DRShhbGl2ZV9zZXNz LT5zdGF0ZSkgIT0KKwkJaWYgKE1ZVU5MSUtFTFkoUkVBRF9PTkNFKGFsaXZlX3Nlc3MtPnN0YXRl KSAhPQogCQkJICAgICBSVFJTX0NMVF9DT05ORUNURUQpKQogCQkJY29udGludWU7CiAJCXJlcSA9 IHJ0cnNfY2x0X2dldF9jb3B5X3JlcShhbGl2ZV9zZXNzLCBmYWlsX3JlcSk7CkBAIC0xMjczLDcg KzEyNzksNyBAQCBzdGF0aWMgaW50IHJ0cnNfY2x0X2ZhaWxvdmVyX3JlcShzdHJ1Y3QgcnRyc19j bHQgKmNsdCwKIAkJCWVyciA9IHJ0cnNfY2x0X3dyaXRlX3JlcShyZXEpOwogCQllbHNlCiAJCQll cnIgPSBydHJzX2NsdF9yZWFkX3JlcShyZXEpOwotCQlpZiAodW5saWtlbHkoZXJyKSkgeworCQlp ZiAoTVlVTkxJS0VMWShlcnIpKSB7CiAJCQlyZXEtPmluX3VzZSA9IGZhbHNlOwogCQkJY29udGlu dWU7CiAJCX0KQEAgLTEzMDgsNyArMTMxNCw3IEBAIHN0YXRpYyB2b2lkIGZhaWxfYWxsX291dHN0 YW5kaW5nX3JlcXMoc3RydWN0IHJ0cnNfY2x0X3Nlc3MgKnNlc3MpCiAJCWNvbXBsZXRlX3JkbWFf cmVxKHJlcSwgLUVDT05OQUJPUlRFRCwgZmFsc2UsIHRydWUpOwogCiAJCWVyciA9IHJ0cnNfY2x0 X2ZhaWxvdmVyX3JlcShjbHQsIHJlcSk7Ci0JCWlmICh1bmxpa2VseShlcnIpKQorCQlpZiAoTVlV TkxJS0VMWShlcnIpKQogCQkJLyogRmFpbG92ZXIgZmFpbGVkLCBub3RpZnkgYW55d2F5ICovCiAJ CQlyZXEtPmNvbmYocmVxLT5wcml2LCBlcnIpOwogCX0KQEAgLTEzNTIsNyArMTM1OCw3IEBAIHN0 YXRpYyBpbnQgYWxsb2Nfc2Vzc19yZXFzKHN0cnVjdCBydHJzX2NsdF9zZXNzICpzZXNzKQogCQkJ Z290byBvdXQ7CiAJCXNnX2NudCA9IE5PUkVHX0NOVCArIDE7CiAJCXJlcS0+c2dlID0ga2NhbGxv YyhzZ19jbnQsIHNpemVvZigqcmVxLT5zZ2UpLCBHRlBfS0VSTkVMKTsKLQkJaWYgKHVubGlrZWx5 KCFyZXEtPnNnZSkpCisJCWlmIChNWVVOTElLRUxZKCFyZXEtPnNnZSkpCiAJCQlnb3RvIG91dDsK IAogCQlyZXEtPm1yID0gaWJfYWxsb2NfbXIoc2Vzcy0+cy5kZXYtPmliX3BkLCBJQl9NUl9UWVBF X01FTV9SRUcsCkBAIC0xOTQ2LDcgKzE5NTIsNyBAQCBzdGF0aWMgaW50IHJ0cnNfY2x0X3JkbWFf Y21faGFuZGxlcihzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQsCiAJCWJyZWFrOwogCWNhc2UgUkRN QV9DTV9FVkVOVF9FU1RBQkxJU0hFRDoKIAkJY21fZXJyID0gcnRyc19yZG1hX2Nvbm5fZXN0YWJs aXNoZWQoY29uLCBldik7Ci0JCWlmIChsaWtlbHkoIWNtX2VycikpIHsKKwkJaWYgKE1ZTElLRUxZ KCFjbV9lcnIpKSB7CiAJCQkvKgogCQkJICogUmVwb3J0IHN1Y2Nlc3MgYW5kIHdha2UgdXAuIEhl cmUgd2UgYWJ1c2Ugc3RhdGVfd3EsCiAJCQkgKiBpLmUuIHdha2UgdXAgd2l0aG91dCBzdGF0ZSBj aGFuZ2UsIGJ1dCB3ZSBzZXQgY21fZXJyLgpAQCAtMjM2NSw3ICsyMzcxLDcgQEAgc3RhdGljIHZv aWQgcnRyc19jbHRfaW5mb19yZXFfZG9uZShzdHJ1Y3QgaWJfY3EgKmNxLCBzdHJ1Y3QgaWJfd2Mg KndjKQogCWl1ID0gY29udGFpbmVyX29mKHdjLT53cl9jcWUsIHN0cnVjdCBydHJzX2l1LCBjcWUp OwogCXJ0cnNfaXVfZnJlZShpdSwgc2Vzcy0+cy5kZXYtPmliX2RldiwgMSk7CiAKLQlpZiAodW5s aWtlbHkod2MtPnN0YXR1cyAhPSBJQl9XQ19TVUNDRVNTKSkgeworCWlmIChNWVVOTElLRUxZKHdj LT5zdGF0dXMgIT0gSUJfV0NfU1VDQ0VTUykpIHsKIAkJcnRyc19lcnIoc2Vzcy0+Y2x0LCAiU2Vz cyBpbmZvIHJlcXVlc3Qgc2VuZCBmYWlsZWQ6ICVzXG4iLAogCQkJICBpYl93Y19zdGF0dXNfbXNn KHdjLT5zdGF0dXMpKTsKIAkJcnRyc19jbHRfY2hhbmdlX3N0YXRlX2dldF9vbGQoc2VzcywgUlRS U19DTFRfQ09OTkVDVElOR19FUlIsIE5VTEwpOwpAQCAtMjM4Miw3ICsyMzg4LDcgQEAgc3RhdGlj IGludCBwcm9jZXNzX2luZm9fcnNwKHN0cnVjdCBydHJzX2NsdF9zZXNzICpzZXNzLAogCWludCBp LCBzZ2k7CiAKIAlzZ19jbnQgPSBsZTE2X3RvX2NwdShtc2ctPnNnX2NudCk7Ci0JaWYgKHVubGlr ZWx5KCFzZ19jbnQgfHwgKHNlc3MtPnF1ZXVlX2RlcHRoICUgc2dfY250KSkpIHsKKwlpZiAoTVlV TkxJS0VMWSghc2dfY250IHx8IChzZXNzLT5xdWV1ZV9kZXB0aCAlIHNnX2NudCkpKSB7CiAJCXJ0 cnNfZXJyKHNlc3MtPmNsdCwgIkluY29ycmVjdCBzZ19jbnQgJWQsIGlzIG5vdCBtdWx0aXBsZVxu IiwKIAkJCSAgc2dfY250KTsKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0yMzkyLDcgKzIzOTgsNyBA QCBzdGF0aWMgaW50IHByb2Nlc3NfaW5mb19yc3Aoc3RydWN0IHJ0cnNfY2x0X3Nlc3MgKnNlc3Ms CiAJICogQ2hlY2sgaWYgSUIgaW1tZWRpYXRlIGRhdGEgc2l6ZSBpcyBlbm91Z2ggdG8gaG9sZCB0 aGUgbWVtX2lkIGFuZAogCSAqIHRoZSBvZmZzZXQgaW5zaWRlIHRoZSBtZW1vcnkgY2h1bmsuCiAJ ICovCi0JaWYgKHVubGlrZWx5KChpbG9nMihzZ19jbnQgLSAxKSArIDEpICsKKwlpZiAoTVlVTkxJ S0VMWSgoaWxvZzIoc2dfY250IC0gMSkgKyAxKSArCiAJCSAgICAgKGlsb2cyKHNlc3MtPmNodW5r X3NpemUgLSAxKSArIDEpID4KIAkJICAgICBNQVhfSU1NX1BBWUxfQklUUykpIHsKIAkJcnRyc19l cnIoc2Vzcy0+Y2x0LApAQCAtMjQxMiw3ICsyNDE4LDcgQEAgc3RhdGljIGludCBwcm9jZXNzX2lu Zm9fcnNwKHN0cnVjdCBydHJzX2NsdF9zZXNzICpzZXNzLAogCiAJCXRvdGFsX2xlbiArPSBsZW47 CiAKLQkJaWYgKHVubGlrZWx5KCFsZW4gfHwgKGxlbiAlIHNlc3MtPmNodW5rX3NpemUpKSkgewor CQlpZiAoTVlVTkxJS0VMWSghbGVuIHx8IChsZW4gJSBzZXNzLT5jaHVua19zaXplKSkpIHsKIAkJ CXJ0cnNfZXJyKHNlc3MtPmNsdCwgIkluY29ycmVjdCBbJWRdLmxlbiAlZFxuIiwgc2dpLAogCQkJ CSAgbGVuKTsKIAkJCXJldHVybiAtRUlOVkFMOwpAQCAtMjQyNiwxMSArMjQzMiwxMSBAQCBzdGF0 aWMgaW50IHByb2Nlc3NfaW5mb19yc3Aoc3RydWN0IHJ0cnNfY2x0X3Nlc3MgKnNlc3MsCiAJCX0K IAl9CiAJLyogU2FuaXR5IGNoZWNrICovCi0JaWYgKHVubGlrZWx5KHNnaSAhPSBzZ19jbnQgfHwg aSAhPSBzZXNzLT5xdWV1ZV9kZXB0aCkpIHsKKwlpZiAoTVlVTkxJS0VMWShzZ2kgIT0gc2dfY250 IHx8IGkgIT0gc2Vzcy0+cXVldWVfZGVwdGgpKSB7CiAJCXJ0cnNfZXJyKHNlc3MtPmNsdCwgIklu Y29ycmVjdCBzZyB2ZWN0b3IsIG5vdCBmdWxseSBtYXBwZWRcbiIpOwogCQlyZXR1cm4gLUVJTlZB TDsKIAl9Ci0JaWYgKHVubGlrZWx5KHRvdGFsX2xlbiAhPSBzZXNzLT5jaHVua19zaXplICogc2Vz cy0+cXVldWVfZGVwdGgpKSB7CisJaWYgKE1ZVU5MSUtFTFkodG90YWxfbGVuICE9IHNlc3MtPmNo dW5rX3NpemUgKiBzZXNzLT5xdWV1ZV9kZXB0aCkpIHsKIAkJcnRyc19lcnIoc2Vzcy0+Y2x0LCAi SW5jb3JyZWN0IHRvdGFsX2xlbiAlZFxuIiwgdG90YWxfbGVuKTsKIAkJcmV0dXJuIC1FSU5WQUw7 CiAJfQpAQCAtMjQ1MiwxNCArMjQ1OCwxNCBAQCBzdGF0aWMgdm9pZCBydHJzX2NsdF9pbmZvX3Jz cF9kb25lKHN0cnVjdCBpYl9jcSAqY3EsIHN0cnVjdCBpYl93YyAqd2MpCiAKIAlXQVJOX09OKGNv bi0+Yy5jaWQpOwogCWl1ID0gY29udGFpbmVyX29mKHdjLT53cl9jcWUsIHN0cnVjdCBydHJzX2l1 LCBjcWUpOwotCWlmICh1bmxpa2VseSh3Yy0+c3RhdHVzICE9IElCX1dDX1NVQ0NFU1MpKSB7CisJ aWYgKE1ZVU5MSUtFTFkod2MtPnN0YXR1cyAhPSBJQl9XQ19TVUNDRVNTKSkgewogCQlydHJzX2Vy cihzZXNzLT5jbHQsICJTZXNzIGluZm8gcmVzcG9uc2UgcmVjdiBmYWlsZWQ6ICVzXG4iLAogCQkJ ICBpYl93Y19zdGF0dXNfbXNnKHdjLT5zdGF0dXMpKTsKIAkJZ290byBvdXQ7CiAJfQogCVdBUk5f T04od2MtPm9wY29kZSAhPSBJQl9XQ19SRUNWKTsKIAotCWlmICh1bmxpa2VseSh3Yy0+Ynl0ZV9s ZW4gPCBzaXplb2YoKm1zZykpKSB7CisJaWYgKE1ZVU5MSUtFTFkod2MtPmJ5dGVfbGVuIDwgc2l6 ZW9mKCptc2cpKSkgewogCQlydHJzX2VycihzZXNzLT5jbHQsICJTZXNzIGluZm8gcmVzcG9uc2Ug aXMgbWFsZm9ybWVkOiBzaXplICVkXG4iLAogCQkJICB3Yy0+Ynl0ZV9sZW4pOwogCQlnb3RvIG91 dDsKQEAgLTI0NjcsMjQgKzI0NzMsMjQgQEAgc3RhdGljIHZvaWQgcnRyc19jbHRfaW5mb19yc3Bf ZG9uZShzdHJ1Y3QgaWJfY3EgKmNxLCBzdHJ1Y3QgaWJfd2MgKndjKQogCWliX2RtYV9zeW5jX3Np bmdsZV9mb3JfY3B1KHNlc3MtPnMuZGV2LT5pYl9kZXYsIGl1LT5kbWFfYWRkciwKIAkJCQkgICBp dS0+c2l6ZSwgRE1BX0ZST01fREVWSUNFKTsKIAltc2cgPSBpdS0+YnVmOwotCWlmICh1bmxpa2Vs eShsZTE2X3RvX2NwdShtc2ctPnR5cGUpICE9IFJUUlNfTVNHX0lORk9fUlNQKSkgeworCWlmIChN WVVOTElLRUxZKGxlMTZfdG9fY3B1KG1zZy0+dHlwZSkgIT0gUlRSU19NU0dfSU5GT19SU1ApKSB7 CiAJCXJ0cnNfZXJyKHNlc3MtPmNsdCwgIlNlc3MgaW5mbyByZXNwb25zZSBpcyBtYWxmb3JtZWQ6 IHR5cGUgJWRcbiIsCiAJCQkgIGxlMTZfdG9fY3B1KG1zZy0+dHlwZSkpOwogCQlnb3RvIG91dDsK IAl9CiAJcnhfc3ogID0gc2l6ZW9mKCptc2cpOwogCXJ4X3N6ICs9IHNpemVvZihtc2ctPmRlc2Nb MF0pICogbGUxNl90b19jcHUobXNnLT5zZ19jbnQpOwotCWlmICh1bmxpa2VseSh3Yy0+Ynl0ZV9s ZW4gPCByeF9zeikpIHsKKwlpZiAoTVlVTkxJS0VMWSh3Yy0+Ynl0ZV9sZW4gPCByeF9zeikpIHsK IAkJcnRyc19lcnIoc2Vzcy0+Y2x0LCAiU2VzcyBpbmZvIHJlc3BvbnNlIGlzIG1hbGZvcm1lZDog c2l6ZSAlZFxuIiwKIAkJCSAgd2MtPmJ5dGVfbGVuKTsKIAkJZ290byBvdXQ7CiAJfQogCWVyciA9 IHByb2Nlc3NfaW5mb19yc3Aoc2VzcywgbXNnKTsKLQlpZiAodW5saWtlbHkoZXJyKSkKKwlpZiAo TVlVTkxJS0VMWShlcnIpKQogCQlnb3RvIG91dDsKIAogCWVyciA9IHBvc3RfcmVjdl9zZXNzKHNl c3MpOwotCWlmICh1bmxpa2VseShlcnIpKQorCWlmIChNWVVOTElLRUxZKGVycikpCiAJCWdvdG8g b3V0OwogCiAJc3RhdGUgPSBSVFJTX0NMVF9DT05ORUNURUQ7CkBAIC0yNTExLDEzICsyNTE3LDEz IEBAIHN0YXRpYyBpbnQgcnRyc19zZW5kX3Nlc3NfaW5mbyhzdHJ1Y3QgcnRyc19jbHRfc2VzcyAq c2VzcykKIAkJCSAgICAgICBydHJzX2NsdF9pbmZvX3JlcV9kb25lKTsKIAlyeF9pdSA9IHJ0cnNf aXVfYWxsb2MoMSwgcnhfc3osIEdGUF9LRVJORUwsIHNlc3MtPnMuZGV2LT5pYl9kZXYsCiAJCQkg ICAgICAgRE1BX0ZST01fREVWSUNFLCBydHJzX2NsdF9pbmZvX3JzcF9kb25lKTsKLQlpZiAodW5s aWtlbHkoIXR4X2l1IHx8ICFyeF9pdSkpIHsKKwlpZiAoTVlVTkxJS0VMWSghdHhfaXUgfHwgIXJ4 X2l1KSkgewogCQllcnIgPSAtRU5PTUVNOwogCQlnb3RvIG91dDsKIAl9CiAJLyogUHJlcGFyZSBm b3IgZ2V0dGluZyBpbmZvIHJlc3BvbnNlICovCiAJZXJyID0gcnRyc19pdV9wb3N0X3JlY3YoJnVz cl9jb24tPmMsIHJ4X2l1KTsKLQlpZiAodW5saWtlbHkoZXJyKSkgeworCWlmIChNWVVOTElLRUxZ KGVycikpIHsKIAkJcnRyc19lcnIoc2Vzcy0+Y2x0LCAicnRyc19pdV9wb3N0X3JlY3YoKSwgZXJy OiAlZFxuIiwgZXJyKTsKIAkJZ290byBvdXQ7CiAJfQpAQCAtMjUzMiw3ICsyNTM4LDcgQEAgc3Rh dGljIGludCBydHJzX3NlbmRfc2Vzc19pbmZvKHN0cnVjdCBydHJzX2NsdF9zZXNzICpzZXNzKQog CiAJLyogU2VuZCBpbmZvIHJlcXVlc3QgKi8KIAllcnIgPSBydHJzX2l1X3Bvc3Rfc2VuZCgmdXNy X2Nvbi0+YywgdHhfaXUsIHNpemVvZigqbXNnKSwgTlVMTCk7Ci0JaWYgKHVubGlrZWx5KGVycikp IHsKKwlpZiAoTVlVTkxJS0VMWShlcnIpKSB7CiAJCXJ0cnNfZXJyKHNlc3MtPmNsdCwgInJ0cnNf aXVfcG9zdF9zZW5kKCksIGVycjogJWRcbiIsIGVycik7CiAJCWdvdG8gb3V0OwogCX0KQEAgLTI1 NDMsNyArMjU0OSw3IEBAIHN0YXRpYyBpbnQgcnRyc19zZW5kX3Nlc3NfaW5mbyhzdHJ1Y3QgcnRy c19jbHRfc2VzcyAqc2VzcykKIAkJCQkJIHNlc3MtPnN0YXRlICE9IFJUUlNfQ0xUX0NPTk5FQ1RJ TkcsCiAJCQkJCSBtc2Vjc190b19qaWZmaWVzKAogCQkJCQkJIFJUUlNfQ09OTkVDVF9USU1FT1VU X01TKSk7Ci0JaWYgKHVubGlrZWx5KFJFQURfT05DRShzZXNzLT5zdGF0ZSkgIT0gUlRSU19DTFRf Q09OTkVDVEVEKSkgeworCWlmIChNWVVOTElLRUxZKFJFQURfT05DRShzZXNzLT5zdGF0ZSkgIT0g UlRSU19DTFRfQ09OTkVDVEVEKSkgewogCQlpZiAoUkVBRF9PTkNFKHNlc3MtPnN0YXRlKSA9PSBS VFJTX0NMVF9DT05ORUNUSU5HX0VSUikKIAkJCWVyciA9IC1FQ09OTlJFU0VUOwogCQllbHNlCkBA IC0yNTU1LDcgKzI1NjEsNyBAQCBvdXQ6CiAJCXJ0cnNfaXVfZnJlZSh0eF9pdSwgc2Vzcy0+cy5k ZXYtPmliX2RldiwgMSk7CiAJaWYgKHJ4X2l1KQogCQlydHJzX2l1X2ZyZWUocnhfaXUsIHNlc3Mt PnMuZGV2LT5pYl9kZXYsIDEpOwotCWlmICh1bmxpa2VseShlcnIpKQorCWlmIChNWVVOTElLRUxZ KGVycikpCiAJCS8qIElmIHdlJ3ZlIG5ldmVyIHRha2VuIGFzeW5jIHBhdGggYmVjYXVzZSBvZiBt YWxsb2MgcHJvYmxlbXMgKi8KIAkJcnRyc19jbHRfY2hhbmdlX3N0YXRlX2dldF9vbGQoc2Vzcywg UlRSU19DTFRfQ09OTkVDVElOR19FUlIsIE5VTEwpOwogCkBAIC0yODk5LDcgKzI5MDUsNyBAQCBp bnQgcnRyc19jbHRfcmVtb3ZlX3BhdGhfZnJvbV9zeXNmcyhzdHJ1Y3QgcnRyc19jbHRfc2VzcyAq c2VzcywKIAkJCQkJCQkmb2xkX3N0YXRlKTsKIAl9IHdoaWxlICghY2hhbmdlZCAmJiBvbGRfc3Rh dGUgIT0gUlRSU19DTFRfREVBRCk7CiAKLQlpZiAobGlrZWx5KGNoYW5nZWQpKSB7CisJaWYgKE1Z TElLRUxZKGNoYW5nZWQpKSB7CiAJCXJ0cnNfY2x0X3JlbW92ZV9wYXRoX2Zyb21fYXJyKHNlc3Mp OwogCQlydHJzX2NsdF9kZXN0cm95X3Nlc3NfZmlsZXMoc2Vzcywgc3lzZnNfc2VsZik7CiAJCWtv YmplY3RfcHV0KCZzZXNzLT5rb2JqKTsKQEAgLTI5NzEsMTQgKzI5NzcsMTQgQEAgaW50IHJ0cnNf Y2x0X3JlcXVlc3QoaW50IGRpciwgc3RydWN0IHJ0cnNfY2x0X3JlcV9vcHMgKm9wcywKIAlyY3Vf cmVhZF9sb2NrKCk7CiAJZm9yIChwYXRoX2l0X2luaXQoJml0LCBjbHQpOwogCSAgICAgKHNlc3Mg PSBpdC5uZXh0X3BhdGgoJml0KSkgJiYgaXQuaSA8IGl0LmNsdC0+cGF0aHNfbnVtOyBpdC5pKysp IHsKLQkJaWYgKHVubGlrZWx5KFJFQURfT05DRShzZXNzLT5zdGF0ZSkgIT0gUlRSU19DTFRfQ09O TkVDVEVEKSkKKwkJaWYgKE1ZVU5MSUtFTFkoUkVBRF9PTkNFKHNlc3MtPnN0YXRlKSAhPSBSVFJT X0NMVF9DT05ORUNURUQpKQogCQkJY29udGludWU7CiAKIAkJZXJyID0gcnRyc19jbHRfc2hvdWxk X2ZhaWxfcmVxdWVzdCgmc2Vzcy0+ZmF1bHRfaW5qZWN0KTsKLQkJaWYgKHVubGlrZWx5KGVycikp CisJCWlmIChNWVVOTElLRUxZKGVycikpCiAJCQljb250aW51ZTsKIAotCQlpZiAodW5saWtlbHko dXNyX2xlbiArIGhkcl9sZW4gPiBzZXNzLT5tYXhfaGRyX3NpemUpKSB7CisJCWlmIChNWVVOTElL RUxZKHVzcl9sZW4gKyBoZHJfbGVuID4gc2Vzcy0+bWF4X2hkcl9zaXplKSkgewogCQkJcnRyc193 cm5fcmwoc2Vzcy0+Y2x0LAogCQkJCSAgICAgIiVzIHJlcXVlc3QgZmFpbGVkLCB1c2VyIG1lc3Nh Z2Ugc2l6ZSBpcyAlenUgYW5kIGhlYWRlciBsZW5ndGggJXp1LCBidXQgbWF4IHNpemUgaXMgJXVc biIsCiAJCQkJICAgICBkaXIgPT0gUkVBRCA/ICJSZWFkIiA6ICJXcml0ZSIsCkBAIC0yOTkzLDcg KzI5OTksNyBAQCBpbnQgcnRyc19jbHRfcmVxdWVzdChpbnQgZGlyLCBzdHJ1Y3QgcnRyc19jbHRf cmVxX29wcyAqb3BzLAogCQkJZXJyID0gcnRyc19jbHRfcmVhZF9yZXEocmVxKTsKIAkJZWxzZQog CQkJZXJyID0gcnRyc19jbHRfd3JpdGVfcmVxKHJlcSk7Ci0JCWlmICh1bmxpa2VseShlcnIpKSB7 CisJCWlmIChNWVVOTElLRUxZKGVycikpIHsKIAkJCXJlcS0+aW5fdXNlID0gZmFsc2U7CiAJCQlj b250aW51ZTsKIAkJfQpAQCAtMzAxNywxMiArMzAyMywxMiBAQCBpbnQgcnRyc19jbHRfcmRtYV9j cV9kaXJlY3Qoc3RydWN0IHJ0cnNfY2x0ICpjbHQsIHVuc2lnbmVkIGludCBpbmRleCkKIAlyY3Vf cmVhZF9sb2NrKCk7CiAJZm9yIChwYXRoX2l0X2luaXQoJml0LCBjbHQpOwogCSAgICAgKHNlc3Mg PSBpdC5uZXh0X3BhdGgoJml0KSkgJiYgaXQuaSA8IGl0LmNsdC0+cGF0aHNfbnVtOyBpdC5pKysp IHsKLQkJaWYgKHVubGlrZWx5KFJFQURfT05DRShzZXNzLT5zdGF0ZSkgIT0gUlRSU19DTFRfQ09O TkVDVEVEKSkKKwkJaWYgKE1ZVU5MSUtFTFkoUkVBRF9PTkNFKHNlc3MtPnN0YXRlKSAhPSBSVFJT X0NMVF9DT05ORUNURUQpKQogCQkJY29udGludWU7CiAKIAkJY29uID0gc2Vzcy0+cy5jb25baW5k ZXggKyAxXTsKIAkJY250ID0gaWJfcHJvY2Vzc19jcV9kaXJlY3QoY29uLT5jcSwgLTEpOwotCQlp ZiAobGlrZWx5KGNudCkpCisJCWlmIChNWUxJS0VMWShjbnQpKQogCQkJYnJlYWs7CiAJfQogCXBh dGhfaXRfZGVpbml0KCZpdCk7Ci0tIAoyLjI1LjEKCg== --000000000000bab9f605bfda6055 Content-Type: text/plain; charset="US-ASCII"; name="after_swap.txt" Content-Disposition: attachment; filename="after_swap.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kng16xim2 cm9vdEBwczQwMWEtOTE0Lm5zdDovdG1wL2RkZC9na2ltL2libmJkMiMgZ2l0IHNob3cgSEVBRCB8 IGhlYWQKY29tbWl0IDI2MzYzMTFlNWUyODk0YmQ3Yzc4MDA5MzlhM2I5YjY4ZTdhOTNiY2MKQXV0 aG9yOiBHaW9oIEtpbSA8Z2ktb2gua2ltQGlvbm9zLmNvbT4KRGF0ZTogICBUdWUgQXByIDEzIDE0 OjAwOjI3IDIwMjEgKzAyMDAKCiAgICBzd2FwIGxpa2VseSBhbmQgdW5saWtlbHkKCmRpZmYgLS1n aXQgYS9ydHJzL3J0cnMtY2x0LmMgYi9ydHJzL3J0cnMtY2x0LmMKaW5kZXggMWI0YjNlNi4uNjIz NTgyNyAxMDA2NDQKLS0tIGEvcnRycy9ydHJzLWNsdC5jCisrKyBiL3J0cnMvcnRycy1jbHQuYwoK CjE0MSByb290QHBzNDAxYS05MTQubnN0Oi90bXAvZGRkL2draW0vaWJuYmQyIyBtYWtlIGNsZWFu ICYmIG1ha2UKbWFrZVsxXTogRW50ZXJpbmcgZGlyZWN0b3J5ICcvdXNyL3NyYy9saW51eC01LjQu ODYtcHNlcnZlcicKICBDTEVBTiAgIC90bXAvZGRkL2draW0vaWJuYmQyL01vZHVsZS5zeW12ZXJz Cm1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5ICcvdXNyL3NyYy9saW51eC01LjQuODYtcHNlcnZl cicKbWFrZVsxXTogRW50ZXJpbmcgZGlyZWN0b3J5ICcvdXNyL3NyYy9saW51eC01LjQuODYtcHNl cnZlcicKICBDQyBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3JuYmQvcm5iZC1jbHQubwogIEND IFtNXSAgL3RtcC9kZGQvZ2tpbS9pYm5iZDIvcm5iZC9ybmJkLWNsdC1zeXNmcy5vCiAgQ0MgW01d ICAvdG1wL2RkZC9na2ltL2libmJkMi9ybmJkL3JuYmQtY29tbW9uLm8KICBMRCBbTV0gIC90bXAv ZGRkL2draW0vaWJuYmQyL3JuYmQvcm5iZC1jbGllbnQubwogIENDIFtNXSAgL3RtcC9kZGQvZ2tp bS9pYm5iZDIvcm5iZC9ybmJkLXNydi5vCiAgQ0MgW01dICAvdG1wL2RkZC9na2ltL2libmJkMi9y bmJkL3JuYmQtc3J2LWRldi5vCiAgQ0MgW01dICAvdG1wL2RkZC9na2ltL2libmJkMi9ybmJkL3Ju YmQtc3J2LXN5c2ZzLm8KICBMRCBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3JuYmQvcm5iZC1z ZXJ2ZXIubwogIENDIFtNXSAgL3RtcC9kZGQvZ2tpbS9pYm5iZDIvcnRycy9ydHJzLm8KICBMRCBb TV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3J0cnMvcnRycy1jb3JlLm8KICBDQyBbTV0gIC90bXAv ZGRkL2draW0vaWJuYmQyL3J0cnMvcnRycy1jbHQubwogIENDIFtNXSAgL3RtcC9kZGQvZ2tpbS9p Ym5iZDIvcnRycy9ydHJzLWNsdC1zdGF0cy5vCiAgQ0MgW01dICAvdG1wL2RkZC9na2ltL2libmJk Mi9ydHJzL3J0cnMtY2x0LXN5c2ZzLm8KICBMRCBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3J0 cnMvcnRycy1jbGllbnQubwogIENDIFtNXSAgL3RtcC9kZGQvZ2tpbS9pYm5iZDIvcnRycy9ydHJz LXNydi5vCiAgQ0MgW01dICAvdG1wL2RkZC9na2ltL2libmJkMi9ydHJzL3J0cnMtc3J2LXN0YXRz Lm8KICBDQyBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3J0cnMvcnRycy1zcnYtc3lzZnMubwog IExEIFtNXSAgL3RtcC9kZGQvZ2tpbS9pYm5iZDIvcnRycy9ydHJzLXNlcnZlci5vCiAgQVIgICAg ICAvdG1wL2RkZC9na2ltL2libmJkMi9idWlsdC1pbi5hIAogIEJ1aWxkaW5nIG1vZHVsZXMsIHN0 YWdlIDIuCiAgTU9EUE9TVCA1IG1vZHVsZXMKICBDQyBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQy L3JuYmQvcm5iZC1jbGllbnQubW9kLm8KICBMRCBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3Ju YmQvcm5iZC1jbGllbnQua28KICBDQyBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3JuYmQvcm5i ZC1zZXJ2ZXIubW9kLm8KICBMRCBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3JuYmQvcm5iZC1z ZXJ2ZXIua28KICBDQyBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3J0cnMvcnRycy1jbGllbnQu bW9kLm8KICBMRCBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3J0cnMvcnRycy1jbGllbnQua28K ICBDQyBbTV0gIC90bXAvZGRkL2draW0vaWJuYmQyL3J0cnMvcnRycy1jb3JlLm1vZC5vCiAgTEQg W01dICAvdG1wL2RkZC9na2ltL2libmJkMi9ydHJzL3J0cnMtY29yZS5rbwogIENDIFtNXSAgL3Rt cC9kZGQvZ2tpbS9pYm5iZDIvcnRycy9ydHJzLXNlcnZlci5tb2QubwogIExEIFtNXSAgL3RtcC9k ZGQvZ2tpbS9pYm5iZDIvcnRycy9ydHJzLXNlcnZlci5rbwptYWtlWzFdOiBMZWF2aW5nIGRpcmVj dG9yeSAnL3Vzci9zcmMvbGludXgtNS40Ljg2LXBzZXJ2ZXInCnJvb3RAcHM0MDFhLTkxNC5uc3Q6 L3RtcC9kZGQvZ2tpbS9pYm5iZDIjIHJtbW9kIHJuYmQtY2xpZW50CnJvb3RAcHM0MDFhLTkxNC5u c3Q6L3RtcC9kZGQvZ2tpbS9pYm5iZDIjIHJtbW9kIHJ0cnMtY2xpZW50CnJvb3RAcHM0MDFhLTkx NC5uc3Q6L3RtcC9kZGQvZ2tpbS9pYm5iZDIjIHJtbW9kIHJ0cnMtY29yZQpyb290QHBzNDAxYS05 MTQubnN0Oi90bXAvZGRkL2draW0vaWJuYmQyIyBpbnNtb2QgcnRycy9ydHJzLWNvcmUua28Kcm9v dEBwczQwMWEtOTE0Lm5zdDovdG1wL2RkZC9na2ltL2libmJkMiMgaW5zbW9kIHJ0cnMvcnRycy1j bGllbnQua28Kcm9vdEBwczQwMWEtOTE0Lm5zdDovdG1wL2RkZC9na2ltL2libmJkMiMgaW5zbW9k IHJuYmQvcm5iZC1jbGllbnQua28KCgpmaW8gc3RhcnQgICA6IERpIDEzLiBBcHIgMTI6MTA6MzAg VVRDIDIwMjEKa2VybmVsIGluZm8gOiBMaW51eCBwczQwMWEtOTE0IDUuNC44Ni1wc2VydmVyICM1 LjQuODYtM35kZWIxMCBTTVAgRnJpIE1hciA1IDEyOjI5OjM2IFVUQyAyMDIxIHg4Nl82NCBHTlUv TGludXgKZmlvIHZlcnNpb24gOiBmaW8tMy4xMgpnY2M6IGdjYyAoRGViaWFuIDguMy4wLTYpIDgu My4wCkNvcHlyaWdodCAoQykgMjAxOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KVGhp cyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25z LiAgVGhlcmUgaXMgTk8Kd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuClN0YXJ0IGZpbyB0ZXN0CmZpb3Rlc3Q6 IChnPTApOiBydz1yYW5kcmVhZCwgYnM9KFIpIDQwOTZCLTQwOTZCLCAoVykgNDA5NkItNDA5NkIs IChUKSA0MDk2Qi00MDk2QiwgaW9lbmdpbmU9bGliYWlvLCBpb2RlcHRoPTEyOAouLi4KZmlvLTMu MTIKU3RhcnRpbmcgNjQgcHJvY2Vzc2VzCkpvYnM6IDY0IChmPTE4MTQpOiBbcig0KSxmKDIpLHIo NSksZigxKSxyKDExKSxmKDEpLHIoMiksZigxKSxyKDQpLGYoMikscig1KSxmKDEpLHIoNCksZigx KSxyKDEyKSxmKDEpLHIoNSksZigxKSxyKDEpXVsxMDAuMCVdW3I9MzI0NE1pQi9zXVtyPTgzMGsg SU9QU11bZXRhIDAwbTowMHNdCmZpb3Rlc3Q6IChncm91cGlkPTAsIGpvYnM9NjQpOiBlcnI9IDA6 IHBpZD0zNzUyODogVHVlIEFwciAxMyAxMjoxMzozMiAyMDIxCiAgcmVhZDogSU9QUz04MjlrLCBC Vz0zMjM4TWlCL3MgKDMzOTVNQi9zKSg1NjlHaUIvMTgwMDI1bXNlYykKICAgIHNsYXQgKHVzZWMp OiBtaW49MTY1LCBtYXg9MTk1MzY1LCBhdmc9MTI3MS44Miwgc3RkZXY9MTY3MS4yMgogICAgY2xh dCAobnNlYyk6IG1pbj0xMDgwLCBtYXg9MzI2OTNrLCBhdmc9ODU0NDA2Mi4xMywgc3RkZXY9MjQx MTY4Mi40MQogICAgIGxhdCAodXNlYyk6IG1pbj00MDcsIG1heD0yMDY4ODAsIGF2Zz05ODE1Ljk0 LCBzdGRldj0yNjk0LjMxCiAgICBjbGF0IHBlcmNlbnRpbGVzICh1c2VjKToKICAgICB8ICAxLjAw dGg9WyAzOTQ5XSwgIDUuMDB0aD1bIDUyMTFdLCAxMC4wMHRoPVsgNTgwMF0sIDIwLjAwdGg9WyA2 NTg3XSwKICAgICB8IDMwLjAwdGg9WyA3MTc3XSwgNDAuMDB0aD1bIDc3MDFdLCA1MC4wMHRoPVsg ODIyNV0sIDYwLjAwdGg9WyA4ODQ4XSwKICAgICB8IDcwLjAwdGg9WyA5NTAzXSwgODAuMDB0aD1b MTA0MjFdLCA5MC4wMHRoPVsxMTczMV0sIDk1LjAwdGg9WzEyOTExXSwKICAgICB8IDk5LjAwdGg9 WzE1MjcwXSwgOTkuNTB0aD1bMTYzMTldLCA5OS45MHRoPVsxODQ4Ml0sIDk5Ljk1dGg9WzE5NTMw XSwKICAgICB8IDk5Ljk5dGg9WzIyMTUyXQogICBidyAoICBLaUIvcyk6IG1pbj0yOTY5NiwgbWF4 PTI1NDk4MCwgcGVyPTEuNTYlLCBhdmc9NTE3NzUuMTksIHN0ZGV2PTM0MTguMzYsIHNhbXBsZXM9 MjI5ODAKICAgaW9wcyAgICAgICAgOiBtaW49IDc0MjQsIG1heD02Mzc0NSwgYXZnPTEyOTQzLjc2 LCBzdGRldj04NTQuNTksIHNhbXBsZXM9MjI5ODAKICBsYXQgKHVzZWMpICAgOiAyPTAuMDElLCA0 PTAuMDElLCAxMD0wLjAxJSwgMjA9MC4wMSUsIDUwPTAuMDQlCiAgbGF0ICh1c2VjKSAgIDogMTAw PTAuMDQlLCAyNTA9MC4wMiUsIDUwMD0wLjAxJSwgNzUwPTAuMDElLCAxMDAwPTAuMDElCiAgbGF0 IChtc2VjKSAgIDogMj0wLjA1JSwgND0wLjkwJSwgMTA9NzQuNTglLCAyMD0yNC4zMSUsIDUwPTAu MDQlCiAgY3B1ICAgICAgICAgIDogdXNyPTEuMDAlLCBzeXM9NC45NyUsIGN0eD04MjM5OTY4Niwg bWFqZj0wLCBtaW5mPTM3MTcyMDkKICBJTyBkZXB0aHMgICAgOiAxPTAuMCUsIDI9MC4wJSwgND0w LjAlLCA4PTAuMCUsIDE2PTAuMCUsIDMyPTAuMCUsID49NjQ9MTAwLjAlCiAgICAgc3VibWl0ICAg IDogMD0wLjAlLCA0PTAuMCUsIDg9MC4wJSwgMTY9MC4wJSwgMzI9MC4wJSwgNjQ9MC4wJSwgPj02 ND0xMDAuMCUKICAgICBjb21wbGV0ZSAgOiAwPTAuMCUsIDQ9MC4wJSwgOD0wLjAlLCAxNj0wLjAl LCAzMj0wLjAlLCA2ND0wLjAlLCA+PTY0PTEwMC4wJQogICAgIGlzc3VlZCByd3RzOiB0b3RhbD0x NDkyMjkyOTUsMCwwLDAgc2hvcnQ9MCwwLDAsMCBkcm9wcGVkPTAsMCwwLDAKICAgICBsYXRlbmN5 ICAgOiB0YXJnZXQ9MCwgd2luZG93PTAsIHBlcmNlbnRpbGU9MTAwLjAwJSwgZGVwdGg9MTI4CgpS dW4gc3RhdHVzIGdyb3VwIDAgKGFsbCBqb2JzKToKICAgUkVBRDogYnc9MzIzOE1pQi9zICgzMzk1 TUIvcyksIDMyMzhNaUIvcy0zMjM4TWlCL3MgKDMzOTVNQi9zLTMzOTVNQi9zKSwgaW89NTY5R2lC ICg2MTFHQiksIHJ1bj0xODAwMjUtMTgwMDI1bXNlYwoKRGlzayBzdGF0cyAocmVhZC93cml0ZSk6 CiAgcm5iZDA6IGlvcz00NjYxOTU2LzAsIG1lcmdlPTAvMCwgdGlja3M9MTAyMTIxMTUvMCwgaW5f cXVldWU9MzIzODAwLCB1dGlsPTk5LjY3JQogIHJuYmQxOiBpb3M9NDY2MTk1Ni8wLCBtZXJnZT0w LzAsIHRpY2tzPTEwNDg5ODE3LzAsIGluX3F1ZXVlPTM0MDk0MCwgdXRpbD05OS43MCUKICBybmJk MjogaW9zPTQ2NjE5NTkvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDUxMDA0Mi8wLCBpbl9xdWV1ZT0z NDIxODAsIHV0aWw9OTkuNzAlCiAgcm5iZDM6IGlvcz00NjYxOTU4LzAsIG1lcmdlPTAvMCwgdGlj a3M9MTA3MDI3NDUvMCwgaW5fcXVldWU9MzUzMzUwLCB1dGlsPTk5LjczJQogIHJuYmQ0OiBpb3M9 NDY2MTk2NC8wLCBtZXJnZT0wLzAsIHRpY2tzPTEwNzkzOTE0LzAsIGluX3F1ZXVlPTM1OTE5MCwg dXRpbD05OS43NCUKICBybmJkNTogaW9zPTQ2NjE5NjgvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDkx MzcxNC8wLCBpbl9xdWV1ZT0zNjkxNTAsIHV0aWw9OTkuNzQlCiAgcm5iZDY6IGlvcz00NjYxOTYw LzAsIG1lcmdlPTAvMCwgdGlja3M9MTA5NTgwOTQvMCwgaW5fcXVldWU9MzcwNzMwLCB1dGlsPTk5 Ljc0JQogIHJuYmQ3OiBpb3M9NDY2MTk2OC8wLCBtZXJnZT0wLzAsIHRpY2tzPTEwOTc2MzIwLzAs IGluX3F1ZXVlPTM3MDA5MCwgdXRpbD05OS43NiUKICBybmJkODogaW9zPTQ2NjE5NjQvMCwgbWVy Z2U9MC8wLCB0aWNrcz0xMTAxNDgwNC8wLCBpbl9xdWV1ZT0zNzU3ODAsIHV0aWw9OTkuNzklCiAg cm5iZDk6IGlvcz00NjYxOTY0LzAsIG1lcmdlPTAvMCwgdGlja3M9MTEwMzE5NjkvMCwgaW5fcXVl dWU9Mzc2NzYwLCB1dGlsPTk5LjgwJQogIHJuYmQxMDogaW9zPTQ2NjE5NjYvMCwgbWVyZ2U9MC8w LCB0aWNrcz0xMTA0NzcyOS8wLCBpbl9xdWV1ZT0zNzU0NTAsIHV0aWw9OTkuODElCiAgcm5iZDEx OiBpb3M9NDY2MTk3NS8wLCBtZXJnZT0wLzAsIHRpY2tzPTExMDUzNTk1LzAsIGluX3F1ZXVlPTM3 ODE0MCwgdXRpbD05OS44MyUKICBybmJkMTI6IGlvcz00NjYxOTcyLzAsIG1lcmdlPTEvMCwgdGlj a3M9MTEwODc3NTkvMCwgaW5fcXVldWU9Mzc2NTcwLCB1dGlsPTk5LjgzJQogIHJuYmQxMzogaW9z PTQ2NjE5NzUvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMTA2NjIyMS8wLCBpbl9xdWV1ZT0zODE5NDAs IHV0aWw9OTkuODUlCiAgcm5iZDE0OiBpb3M9NDY2MTk2Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTEx MDkyOTczLzAsIGluX3F1ZXVlPTM4MTczMCwgdXRpbD05OS44NSUKICBybmJkMTU6IGlvcz00NjYx OTgxLzAsIG1lcmdlPTAvMCwgdGlja3M9MTEwNTY4MDMvMCwgaW5fcXVldWU9MzgyODMwLCB1dGls PTk5Ljg2JQogIHJuYmQxNjogaW9zPTQ2NjE5ODUvMCwgbWVyZ2U9MC8wLCB0aWNrcz05NDQ3OTAx LzAsIGluX3F1ZXVlPTI4MDcwMCwgdXRpbD05OS44OSUKICBybmJkMTc6IGlvcz00NjYxOTc4LzAs IG1lcmdlPTAvMCwgdGlja3M9MTA1MDY5NjEvMCwgaW5fcXVldWU9MzQ4NTAwLCB1dGlsPTk5Ljkw JQogIHJuYmQxODogaW9zPTQ2NjE5ODMvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDcwMjQxMS8wLCBp bl9xdWV1ZT0zNjQwNjAsIHV0aWw9OTkuOTIlCiAgcm5iZDE5OiBpb3M9NDY2MTk3Ny8wLCBtZXJn ZT0wLzAsIHRpY2tzPTEwNzc3MTYwLzAsIGluX3F1ZXVlPTM3NDI1MCwgdXRpbD05OS45MiUKICBy bmJkMjA6IGlvcz00NjYxOTgyLzAsIG1lcmdlPTAvMCwgdGlja3M9MTA3ODA2MzcvMCwgaW5fcXVl dWU9MzcxODIwLCB1dGlsPTk5LjkzJQogIHJuYmQyMTogaW9zPTQ2NjE5ODAvMCwgbWVyZ2U9MC8w LCB0aWNrcz0xMDg0MTUzMy8wLCBpbl9xdWV1ZT0zNzY3NTAsIHV0aWw9OTkuOTUlCiAgcm5iZDIy OiBpb3M9NDY2MTk4NC8wLCBtZXJnZT0wLzAsIHRpY2tzPTEwODY5ODE3LzAsIGluX3F1ZXVlPTM3 ODQzMCwgdXRpbD05OS45NSUKICBybmJkMjM6IGlvcz00NjYxOTg1LzAsIG1lcmdlPTAvMCwgdGlj a3M9MTA5NjYzNDEvMCwgaW5fcXVldWU9Mzg3NDEwLCB1dGlsPTk5Ljk2JQogIHJuYmQyNDogaW9z PTQ2NjE5ODcvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xMDk1NzYxMy8wLCBpbl9xdWV1ZT0zOTA5NjAs IHV0aWw9OTkuOTYlCiAgcm5iZDI1OiBpb3M9NDY2MTk4OC8wLCBtZXJnZT0wLzAsIHRpY2tzPTEx MDE1NTg1LzAsIGluX3F1ZXVlPTM5MDkyMCwgdXRpbD05OS45NyUKICBybmJkMjY6IGlvcz00NjYx OTgwLzAsIG1lcmdlPTAvMCwgdGlja3M9MTEwNzQ0MTEvMCwgaW5fcXVldWU9Mzk4MDkwLCB1dGls PTEwMC4wMCUKICBybmJkMjc6IGlvcz00NjYxOTg1LzAsIG1lcmdlPTAvMCwgdGlja3M9MTExMjI5 MTEvMCwgaW5fcXVldWU9NDA0NzYwLCB1dGlsPTEwMC4wMCUKICBybmJkMjg6IGlvcz00NjYxOTkz LzAsIG1lcmdlPTAvMCwgdGlja3M9MTEwOTUwNzcvMCwgaW5fcXVldWU9NDAyNDgwLCB1dGlsPTEw MC4wMCUKICBybmJkMjk6IGlvcz00NjYxOTkxLzAsIG1lcmdlPTAvMCwgdGlja3M9MTExNzA0ODUv MCwgaW5fcXVldWU9NDA4MzcwLCB1dGlsPTEwMC4wMCUKICBybmJkMzA6IGlvcz00NjYxOTkyLzAs IG1lcmdlPTAvMCwgdGlja3M9MTEyMTM4MTkvMCwgaW5fcXVldWU9NDA5NzMwLCB1dGlsPTEwMC4w MCUKICBybmJkMzE6IGlvcz00NjYxOTg5LzAsIG1lcmdlPTAvMCwgdGlja3M9MTEyNjMwNjMvMCwg aW5fcXVldWU9NDIwNjQwLCB1dGlsPTEwMC4wMCUKCgpyb290QHBzNDAxYS05MTQubnN0Oi90bXAv ZGRkL2draW0vaWJuYmQyIyBiYXNoIGdvXzMyZGV2XzEyOHByb2Muc2gKZmlvIHN0YXJ0ICAgOiBE aSAxMy4gQXByIDEyOjQyOjQyIFVUQyAyMDIxCmtlcm5lbCBpbmZvIDogTGludXggcHM0MDFhLTkx NCA1LjQuODYtcHNlcnZlciAjNS40Ljg2LTN+ZGViMTAgU01QIEZyaSBNYXIgNSAxMjoyOTozNiBV VEMgMjAyMSB4ODZfNjQgR05VL0xpbnV4CmZpbyB2ZXJzaW9uIDogZmlvLTMuMTIKZ2NjOiBnY2Mg KERlYmlhbiA4LjMuMC02KSA4LjMuMApDb3B5cmlnaHQgKEMpIDIwMTggRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuClRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9y IGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCndhcnJhbnR5OyBub3QgZXZlbiBmb3Ig TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgpTdGFy dCBmaW8gdGVzdApmaW90ZXN0OiAoZz0wKTogcnc9cmFuZHJlYWQsIGJzPShSKSA0MDk2Qi00MDk2 QiwgKFcpIDQwOTZCLTQwOTZCLCAoVCkgNDA5NkItNDA5NkIsIGlvZW5naW5lPWxpYmFpbywgaW9k ZXB0aD0xMjgKLi4uCmZpby0zLjEyClN0YXJ0aW5nIDEyOCBwcm9jZXNzZXMKSm9iczogMTIzIChm PTI5NDYpOiBbcigzKSxmKDEpLHIoOCksZigxKSxyKDQpLGYoMikscigxKSxmKDIpLHIoMSksZigx KSxyKDEpLGYoMSkscig1KSxmKDEpLHIoMSksZigxKSxyKDMpLF8oMikscigyKSxmKDIpLHIoNCks ZigyKSxyKDUpLGYoMikscig2KSxmKDMpLHIoMSksZigyKSxyKDEpLF8oMSkscig3KSxmKDEpLHIo MiksZigxKSxyKDUpLGYoMSkscig1KSxmCig1KSxyKDEpLGYoMSkscigxKSxfKDIpLGYoMSkscigy KSxmKDEpLHIoMjIpXVsxNi44JV1bcj0zMTkwTWlCL3NdW3I9ODE3ayBJT1BTXVtldGEgMTVtOjAw c10KZmlvdGVzdDogKGdyb3VwaWQ9MCwgam9icz0xMjgpOiBlcnI9IDA6IHBpZD0zOTI1NDogVHVl IEFwciAxMyAxMjo0NTo0NSAyMDIxCiAgcmVhZDogSU9QUz04MTdrLCBCVz0zMTkxTWlCL3MgKDMz NDZNQi9zKSg1NjFHaUIvMTgwMDI5bXNlYykKICAgIHNsYXQgKHVzZWMpOiBtaW49NjksIG1heD00 MTI2MTYsIGF2Zz03NzI1LjQzLCBzdGRldj01NTk1LjE4CiAgICBjbGF0IChuc2VjKTogbWluPTEw NTQsIG1heD0zOTg1MGssIGF2Zz0xMjIzMzIxNy4wMCwgc3RkZXY9MzU0MjQyNC44NAogICAgIGxh dCAodXNlYyk6IG1pbj0xNzksIG1heD00MjExOTAsIGF2Zz0xOTk1OC43MSwgc3RkZXY9NTc5MS45 MgogICAgY2xhdCBwZXJjZW50aWxlcyAodXNlYyk6CiAgICAgfCAgMS4wMHRoPVsgNDU1NV0sICA1 LjAwdGg9WyA2ODQ5XSwgMTAuMDB0aD1bIDc5NjNdLCAyMC4wMHRoPVsgOTM3Ml0sCiAgICAgfCAz MC4wMHRoPVsxMDI5MF0sIDQwLjAwdGg9WzExMjA3XSwgNTAuMDB0aD1bMTE5OTRdLCA2MC4wMHRo PVsxMjkxMV0sCiAgICAgfCA3MC4wMHRoPVsxMzgyOV0sIDgwLjAwdGg9WzE1MDA4XSwgOTAuMDB0 aD1bMTY3MTJdLCA5NS4wMHRoPVsxODIyMF0sCiAgICAgfCA5OS4wMHRoPVsyMTYyN10sIDk5LjUw dGg9WzIyOTM4XSwgOTkuOTB0aD1bMjYwODRdLCA5OS45NXRoPVsyNzM5NV0sCiAgICAgfCA5OS45 OXRoPVszMDU0MF0KICAgYncgKCAgS2lCL3MpOiBtaW49IDMwNzIsIG1heD0xNDY0MzIsIHBlcj0w Ljc4JSwgYXZnPTI1NDk1LjM3LCBzdGRldj0yNzU4LjA5LCBzYW1wbGVzPTQ1OTkyCiAgIGlvcHMg ICAgICAgIDogbWluPSAgNzY4LCBtYXg9MzY2MDgsIGF2Zz02MzczLjgxLCBzdGRldj02ODkuNTMs IHNhbXBsZXM9NDU5OTIKICBsYXQgKHVzZWMpICAgOiAyPTAuMDElLCA0PTAuMDElLCAxMD0wLjAx JSwgMjA9MC4wMSUsIDUwPTAuMDIlCiAgbGF0ICh1c2VjKSAgIDogMTAwPTAuMDIlLCAyNTA9MC4w MyUsIDUwMD0wLjA0JSwgNzUwPTAuMDMlLCAxMDAwPTAuMDMlCiAgbGF0IChtc2VjKSAgIDogMj0w LjA5JSwgND0wLjQzJSwgMTA9MjUuNjklLCAyMD03MS4zMyUsIDUwPTIuMjklCiAgY3B1ICAgICAg ICAgIDogdXNyPTAuNTclLCBzeXM9Mi4yMCUsIGN0eD03NTc0ODMxOCwgbWFqZj0wLCBtaW5mPTYz MDUxNDkKICBJTyBkZXB0aHMgICAgOiAxPTAuMCUsIDI9MC4wJSwgND0wLjAlLCA4PTAuMCUsIDE2 PTAuMCUsIDMyPTAuMCUsID49NjQ9MTAwLjAlCiAgICAgc3VibWl0ICAgIDogMD0wLjAlLCA0PTAu MCUsIDg9MC4wJSwgMTY9MC4xJSwgMzI9MC4wJSwgNjQ9MC4xJSwgPj02ND0xMDAuMCUKICAgICBj b21wbGV0ZSAgOiAwPTAuMCUsIDQ9MC4wJSwgOD0wLjAlLCAxNj0wLjElLCAzMj0wLjAlLCA2ND0w LjElLCA+PTY0PTEwMC4wJQogICAgIGlzc3VlZCByd3RzOiB0b3RhbD0xNDcwNDUwNDEsMCwwLDAg c2hvcnQ9MCwwLDAsMCBkcm9wcGVkPTAsMCwwLDAKICAgICBsYXRlbmN5ICAgOiB0YXJnZXQ9MCwg d2luZG93PTAsIHBlcmNlbnRpbGU9MTAwLjAwJSwgZGVwdGg9MTI4CgpSdW4gc3RhdHVzIGdyb3Vw IDAgKGFsbCBqb2JzKToKICAgUkVBRDogYnc9MzE5MU1pQi9zICgzMzQ2TUIvcyksIDMxOTFNaUIv cy0zMTkxTWlCL3MgKDMzNDZNQi9zLTMzNDZNQi9zKSwgaW89NTYxR2lCICg2MDJHQiksIHJ1bj0x ODAwMjktMTgwMDI5bXNlYwoKCkRpc2sgc3RhdHMgKHJlYWQvd3JpdGUpOgogIHJuYmQwOiBpb3M9 NDU4OTUxMS8wLCBtZXJnZT0wLzAsIHRpY2tzPTEzNDIzNzQzLzAsIGluX3F1ZXVlPTE5MzE3OTAs IHV0aWw9OTkuNTglCiAgcm5iZDE6IGlvcz00NTg5NTA4LzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ0 NzYxMjcvMCwgaW5fcXVldWU9MjIyODk3MCwgdXRpbD05OS42MCUKICBybmJkMjogaW9zPTQ1ODk1 MTcvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xNDYyNDE5Ni8wLCBpbl9xdWV1ZT0yMjcxODgwLCB1dGls PTk5LjYxJQogIHJuYmQzOiBpb3M9NDU4OTUwNC8wLCBtZXJnZT0wLzAsIHRpY2tzPTE0Njg2MDEz LzAsIGluX3F1ZXVlPTIyODY3NjAsIHV0aWw9OTkuNjMlCiAgcm5iZDQ6IGlvcz00NTk1MTU4LzAs IG1lcmdlPTAvMCwgdGlja3M9MTQ3NzI0NjUvMCwgaW5fcXVldWU9MjMxNjU5MCwgdXRpbD05OS42 MiUKICBybmJkNTogaW9zPTQ1OTUxNTgvMCwgbWVyZ2U9MC8wLCB0aWNrcz0xNDgwNTM2MS8wLCBp bl9xdWV1ZT0yMzE0NjcwLCB1dGlsPTk5LjY1JQogIHJuYmQ2OiBpb3M9NDU5NTE1OC8wLCBtZXJn ZT0wLzAsIHRpY2tzPTE0ODE3MTE2LzAsIGluX3F1ZXVlPTIzMjQzMDAsIHV0aWw9OTkuNjUlCiAg cm5iZDc6IGlvcz00NTk1MTU4LzAsIG1lcmdlPTAvMCwgdGlja3M9MTQ4MzMxNjQvMCwgaW5fcXVl dWU9MjMyMDM2MCwgdXRpbD05OS42NiUKICBybmJkODogaW9zPTQ1OTUxNTgvMCwgbWVyZ2U9MC8w LCB0aWNrcz0xNDkwMDk2MC8wLCBpbl9xdWV1ZT0yMzQwMjAwLCB1dGlsPTk5LjY4JQogIHJuYmQ5 OiBpb3M9NDU5NTE1OC8wLCBtZXJnZT0wLzAsIHRpY2tzPTE0OTE3MDc3LzAsIGluX3F1ZXVlPTIz NDUyNjAsIHV0aWw9OTkuNzAlCiAgcm5iZDEwOiBpb3M9NDU5NTE1OC8wLCBtZXJnZT0wLzAsIHRp Y2tzPTE0OTMxODI2LzAsIGluX3F1ZXVlPTIzNDQ1NDAsIHV0aWw9OTkuNzElCiAgcm5iZDExOiBp b3M9NDU5NTE1OC8wLCBtZXJnZT0wLzAsIHRpY2tzPTE0OTYzMTMyLzAsIGluX3F1ZXVlPTIzNDUz NTAsIHV0aWw9OTkuNzIlCiAgcm5iZDEyOiBpb3M9NDU5NTE1OC8wLCBtZXJnZT0wLzAsIHRpY2tz PTE0OTc4OTQ0LzAsIGluX3F1ZXVlPTIzNzE5MzAsIHV0aWw9OTkuNzMlCiAgcm5iZDEzOiBpb3M9 NDU5NTE1OC8wLCBtZXJnZT0wLzAsIHRpY2tzPTE0OTUzODIzLzAsIGluX3F1ZXVlPTIzNDkyMDAs IHV0aWw9OTkuNzUlCiAgcm5iZDE0OiBpb3M9NDU5NTE1Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTE0 OTkxOTA5LzAsIGluX3F1ZXVlPTIzNjEwMzAsIHV0aWw9OTkuNzUlCiAgcm5iZDE1OiBpb3M9NDU5 NTE1Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTE1MDM5NzQxLzAsIGluX3F1ZXVlPTIzNzk0MDAsIHV0 aWw9OTkuNzYlCiAgcm5iZDE2OiBpb3M9NDU5NTE1Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTE1MDU3 NTk5LzAsIGluX3F1ZXVlPTIzODc1NTAsIHV0aWw9OTkuNzklCiAgcm5iZDE3OiBpb3M9NDU5NTE1 Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTE1MDUyOTgxLzAsIGluX3F1ZXVlPTIzNzg1NzAsIHV0aWw9 OTkuODAlCiAgcm5iZDE4OiBpb3M9NDU5NTE1Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTE1MzY0MzY3 LzAsIGluX3F1ZXVlPTI0NTUwMzAsIHV0aWw9OTkuODMlCiAgcm5iZDE5OiBpb3M9NDU5NTE1Ny8w LCBtZXJnZT0wLzAsIHRpY2tzPTE1MzY5OTk4LzAsIGluX3F1ZXVlPTI0NjIxMzAsIHV0aWw9OTku ODQlCiAgcm5iZDIwOiBpb3M9NDU5NTE1Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTE0OTUzMjYyLzAs IGluX3F1ZXVlPTIzNTQwODAsIHV0aWw9OTkuODQlCiAgcm5iZDIxOiBpb3M9NDU5NTE1Ny8wLCBt ZXJnZT0wLzAsIHRpY2tzPTE1MTE2MDYxLzAsIGluX3F1ZXVlPTI0MDQyOTAsIHV0aWw9OTkuODYl CiAgcm5iZDIyOiBpb3M9NDU5NTE1Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTE1MTkwNDg5LzAsIGlu X3F1ZXVlPTI0MTk4NzAsIHV0aWw9OTkuODYlCiAgcm5iZDIzOiBpb3M9NDU5NTE1Ny8wLCBtZXJn ZT0wLzAsIHRpY2tzPTE1MjEyMTY1LzAsIGluX3F1ZXVlPTI0MTQ5ODAsIHV0aWw9OTkuODglCiAg cm5iZDI0OiBpb3M9NDU5NTE1Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTE1MjI1NzE2LzAsIGluX3F1 ZXVlPTI0MjkxMDAsIHV0aWw9OTkuODglCiAgcm5iZDI1OiBpb3M9NDU5NTE1Ny8wLCBtZXJnZT0w LzAsIHRpY2tzPTE1MjM5NTc4LzAsIGluX3F1ZXVlPTI0MjgyNDAsIHV0aWw9OTkuODklCiAgcm5i ZDI2OiBpb3M9NDU5NTE1Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTE1MjUxNjI4LzAsIGluX3F1ZXVl PTI0Mjc2NzAsIHV0aWw9OTkuOTIlCiAgcm5iZDI3OiBpb3M9NDU5NTE1Ny8wLCBtZXJnZT0wLzAs IHRpY2tzPTEzOTU1MTY4LzAsIGluX3F1ZXVlPTIxMjczMDAsIHV0aWw9OTkuOTMlCiAgcm5iZDI4 OiBpb3M9NDU5NTE1Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTE0Njk0OTQxLzAsIGluX3F1ZXVlPTIz Mjk0NDAsIHV0aWw9OTkuOTUlCiAgcm5iZDI5OiBpb3M9NDU5NTE1Ny8wLCBtZXJnZT0wLzAsIHRp Y2tzPTE0ODA0MzE4LzAsIGluX3F1ZXVlPTIzNTUwOTAsIHV0aWw9OTkuOTYlCiAgcm5iZDMwOiBp b3M9NDU5NTE1Ny8wLCBtZXJnZT0wLzAsIHRpY2tzPTE1MTgzNjcyLzAsIGluX3F1ZXVlPTI0MjE0 NDAsIHV0aWw9OTkuOTYlCiAgcm5iZDMxOiBpb3M9NDU5NTE1Ny8wLCBtZXJnZT0wLzAsIHRpY2tz PTExNTc1ODIyLzAsIGluX3F1ZXVlPTE0OTI3NTAsIHV0aWw9OTkuOTglCiAgCiAgCnJvb3RAcHM0 MDFhLTkxNC5uc3Q6L3RtcC9kZGQvZ2tpbS9pYm5iZDIjIGJhc2ggZ29fMzJkZXZfMTI4cHJvYy5z aApmaW8gc3RhcnQgICA6IERpIDEzLiBBcHIgMTI6NTE6NDAgVVRDIDIwMjEKa2VybmVsIGluZm8g OiBMaW51eCBwczQwMWEtOTE0IDUuNC44Ni1wc2VydmVyICM1LjQuODYtM35kZWIxMCBTTVAgRnJp IE1hciA1IDEyOjI5OjM2IFVUQyAyMDIxIHg4Nl82NCBHTlUvTGludXgKZmlvIHZlcnNpb24gOiBm aW8tMy4xMgpnY2M6IGdjYyAoRGViaWFuIDguMy4wLTYpIDguMy4wCkNvcHlyaWdodCAoQykgMjAx OCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBz ZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8Kd2FycmFu dHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuClN0YXJ0IGZpbyB0ZXN0CmZpb3Rlc3Q6IChnPTApOiBydz1yYW5kcmVhZCwg YnM9KFIpIDQwOTZCLTQwOTZCLCAoVykgNDA5NkItNDA5NkIsIChUKSA0MDk2Qi00MDk2QiwgaW9l bmdpbmU9bGliYWlvLCBpb2RlcHRoPTEyOAouLi4KZmlvLTMuMTIKU3RhcnRpbmcgMTI4IHByb2Nl c3NlcwpKb2JzOiA3MCAoZj00NzApOiBbZig0KSxfKDEpLGYoMiksXygxKSxmKDEpLF8oMSksZigx KSxfKDEpLGYoMSksXyg1KSxmKDEpLF8oMiksZigxKSxfKDEpLGYoMiksXygzKSxmKDIpLF8oMSks ZigzKSxyKDEpLF8oNCksZigxKSxfKDEpLGYoMikscigxKSxfKDEpLGYoMiksXygxKSxmKDEpLF8o MSksZigxKSxfKDUpLGYoMyksXygyKSxmKDQpLF8oNSksZigxKSxfKDEKKSxmKDEpLF8oMiksZigz KSxfKDIpLGYoMSksXygxKSxmKDEpLF8oMSksZigyKSxfKDEpLHIoMSksXygxKSxmKDUpLF8oMSks ZigxKSxfKDMpLGYoNSksXygxKSxmKDEpLF8oMiksZigxKSxfKDEpLGYoMSksXygyKSxmKDkpLF8o MSksZigyKSxfKDEpLGYoMSksXygxKV1bMS43JV1bcj0zMjEwTWlCL3NdW3I9ODIyayBJT1BTXVtl dGEgMDJoOjU0bTowMHNdCmZpb3Rlc3Q6IChncm91cGlkPTAsIGpvYnM9MTI4KTogZXJyPSAwOiBw aWQ9NDAxNjY6IFR1ZSBBcHIgMTMgMTI6NTQ6NDMgMjAyMQogIHJlYWQ6IElPUFM9ODE3aywgQlc9 MzE5M01pQi9zICgzMzQ4TUIvcykoNTYxR2lCLzE4MDAyM21zZWMpCiAgICBzbGF0ICh1c2VjKTog bWluPTcsIG1heD0yOTIyOTgsIGF2Zz03Nzg3LjM0LCBzdGRldj01NzU4LjAzCiAgICBjbGF0IChu c2VjKTogbWluPTE1ODYsIG1heD01MDkxMWssIGF2Zz0xMjE2NzA3MC45Niwgc3RkZXY9MzUzOTkw Ny41MgogICAgIGxhdCAodXNlYyk6IG1pbj0yMDYsIG1heD0zMDAxNzYsIGF2Zz0xOTk1NC40OCwg c3RkZXY9NTkyNC4xMAogICAgY2xhdCBwZXJjZW50aWxlcyAodXNlYyk6CiAgICAgfCAgMS4wMHRo PVsgNDQ5MF0sICA1LjAwdGg9WyA2NzgzXSwgMTAuMDB0aD1bIDc4OThdLCAyMC4wMHRoPVsgOTI0 MV0sCiAgICAgfCAzMC4wMHRoPVsxMDI5MF0sIDQwLjAwdGg9WzExMDc2XSwgNTAuMDB0aD1bMTE5 OTRdLCA2MC4wMHRoPVsxMjc4MF0sCiAgICAgfCA3MC4wMHRoPVsxMzgyOV0sIDgwLjAwdGg9WzE1 MDA4XSwgOTAuMDB0aD1bMTY3MTJdLCA5NS4wMHRoPVsxODIyMF0sCiAgICAgfCA5OS4wMHRoPVsy MTYyN10sIDk5LjUwdGg9WzIyOTM4XSwgOTkuOTB0aD1bMjYwODRdLCA5OS45NXRoPVsyNzM5NV0s CiAgICAgfCA5OS45OXRoPVszMDU0MF0KICAgYncgKCAgS2lCL3MpOiBtaW49MTAyNDAsIG1heD0x NTY2NzIsIHBlcj0wLjc4JSwgYXZnPTI1NTA1Ljc3LCBzdGRldj0zMTYzLjU4LCBzYW1wbGVzPTQ1 OTcwCiAgIGlvcHMgICAgICAgIDogbWluPSAyNTYwLCBtYXg9MzkxNjgsIGF2Zz02Mzc2LjQyLCBz dGRldj03OTAuOTEsIHNhbXBsZXM9NDU5NzAKICBsYXQgKHVzZWMpICAgOiAyPTAuMDElLCA0PTAu MDElLCAxMD0wLjAxJSwgMjA9MC4wMSUsIDUwPTAuMDIlCiAgbGF0ICh1c2VjKSAgIDogMTAwPTAu MDIlLCAyNTA9MC4wMiUsIDUwMD0wLjAyJSwgNzUwPTAuMDIlLCAxMDAwPTAuMDIlCiAgbGF0ICht c2VjKSAgIDogMj0wLjExJSwgND0wLjQ5JSwgMTA9MjYuMzclLCAyMD03MC42OCUsIDUwPTIuMjIl CiAgbGF0IChtc2VjKSAgIDogMTAwPTAuMDElCiAgY3B1ICAgICAgICAgIDogdXNyPTAuNTUlLCBz eXM9Mi4xNiUsIGN0eD03NTQ2NjExMSwgbWFqZj0wLCBtaW5mPTU3NDc3MDUKICBJTyBkZXB0aHMg ICAgOiAxPTAuMCUsIDI9MC4wJSwgND0wLjAlLCA4PTAuMCUsIDE2PTAuMCUsIDMyPTAuMCUsID49 NjQ9MTAwLjAlCiAgICAgc3VibWl0ICAgIDogMD0wLjAlLCA0PTAuMSUsIDg9MC4wJSwgMTY9MC4w JSwgMzI9MC4wJSwgNjQ9MC4wJSwgPj02ND0xMDAuMCUKICAgICBjb21wbGV0ZSAgOiAwPTAuMCUs IDQ9MC4xJSwgOD0wLjAlLCAxNj0wLjAlLCAzMj0wLjAlLCA2ND0wLjAlLCA+PTY0PTEwMC4wJQog ICAgIGlzc3VlZCByd3RzOiB0b3RhbD0xNDcxNDQ4MzMsMCwwLDAgc2hvcnQ9MCwwLDAsMCBkcm9w cGVkPTAsMCwwLDAKICAgICBsYXRlbmN5ICAgOiB0YXJnZXQ9MCwgd2luZG93PTAsIHBlcmNlbnRp bGU9MTAwLjAwJSwgZGVwdGg9MTI4CgpSdW4gc3RhdHVzIGdyb3VwIDAgKGFsbCBqb2JzKToKICAg UkVBRDogYnc9MzE5M01pQi9zICgzMzQ4TUIvcyksIDMxOTNNaUIvcy0zMTkzTWlCL3MgKDMzNDhN Qi9zLTMzNDhNQi9zKSwgaW89NTYxR2lCICg2MDNHQiksIHJ1bj0xODAwMjMtMTgwMDIzbXNlYwoK RGlzayBzdGF0cyAocmVhZC93cml0ZSk6CiAgcm5iZDA6IGlvcz00NTk4MjY5LzAsIG1lcmdlPTAv MCwgdGlja3M9MTQ5NjE0ODIvMCwgaW5fcXVldWU9MjI5NDg1MCwgdXRpbD05OS42MCUKCgo= --000000000000bab9f605bfda6055--