Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ux0CJ-009cUd-2G for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Sep 2025 09:36:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ux0BI-000FHC-GR for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Sep 2025 09:35:01 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ux0BH-000FGz-UY for pgsql-hackers@lists.postgresql.org; Fri, 12 Sep 2025 09:35:00 +0000 Received: from mail-yb1-xb2e.google.com ([2607:f8b0:4864:20::b2e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1ux0BD-000M7x-30 for pgsql-hackers@lists.postgresql.org; Fri, 12 Sep 2025 09:35:00 +0000 Received: by mail-yb1-xb2e.google.com with SMTP id 3f1490d57ef6-ea059954d52so1198268276.1 for ; Fri, 12 Sep 2025 02:34:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757669695; x=1758274495; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=NORHrGvwwQFl47U/rQsLFBCKt8sCb70BDEItpAO178g=; b=YUq3xx6qQ3KnFejcKJ0iUUJoGLRAXe4sd8XShVrNaLXNt5e97PWUSARJoDvG/Jgvqd dyem5GObg8czkek0Bhje4wopHj4XLhYr+KSiW60Z/EG+4fa0Mqc0yTgqM/C9hDCgV9OH xFtJPSWZLV8/J2l3V4nh9dBqVfxAVdmd5vBjGcSfPLgXjjQ5p0OfmAx8I9vvET+daYwO r5qCK3Ochrke+Gavv7Ht8xdlkjDjPboKDsSsYT0AJRmfuF9eXazR/BzO6YSRVW6YP+2s 1o+oyrHaZJGwsy1u7Ynkvdpd2G3NldKpKoKLklJU9nWT2eRmSdx79AoqiZe8ElJaN75A VPYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757669695; x=1758274495; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=NORHrGvwwQFl47U/rQsLFBCKt8sCb70BDEItpAO178g=; b=GdC0pAjFR7avY/BRqPNK2gDIGGyo/HqVzFZSqw9pkyh2rZQLE+8rq2FRu4KT8t0u/2 Jp2IU5rwmjDU0IPF9Hw2P8eVwT1ULO8cDJMRhR++nHNbsS2WWlRDCX9DZ/Rh+J8DFg9B 3pHmVeo2Du9Zo8rXou2bqJcMW5xGoik8bqp4wWHaRs19ygPKzYWXCyEESZWTrPQeDEry mgGuImXrCN3dQIj1UjLZzeUiLM9sKzMJe3d5X8pU4gdPUYRJDKu/k1LX/Dwqo4Ywdk4M Ewt6vP+6/er2P/xFqaE+HSkIBfYoG8b7T99Du8ElO/XieSPRsa8D7Pieamcas9RaTfag GKbA== X-Forwarded-Encrypted: i=1; AJvYcCV6N0aRrA1/osMl3MizeFt4r5zdMfY51qTmTEIUDFm/2DlxX6/R4LQXwn85TDp6Rh4nG6jRuUJR+fhEf5Pc@lists.postgresql.org X-Gm-Message-State: AOJu0YwriLWeVIMU3rf5ikAMx49P7yFQCfABmklU8vVvZ9SfEDM/t1R5 HvzgXNBF5S3ZgqLB3Y8lVn2JjaDUGzWDJEERvqcq5gcy6w/Z2duxnpcJxiAb1YceJdEWu707s6D UQsVLTCM6UFh6rt2h5PAO+lh5pUleFYo= X-Gm-Gg: ASbGncsWbLOSamFx1ZHTIsXxDVLrsf5vIqaGvcn1llZloutG4I+hzeYvmd08k7sgHhH OQdZzuNByGJE7k254hX1PNW4QwtTtoqiNkKIZehSSmNLYDu5uEZRgze1mp68xTwZi41/dhliHFW ihbIDyvKNRY9WhaFx/v0idF0oON7GSievV5xZWsoWT4dm0SrYkWjyvrxwEkzJFlcwGGLraFJ/R8 SAULEfb X-Google-Smtp-Source: AGHT+IF+LfJGB/dUHBGuoQ5gyL1+jvAdq0uSBupmZOms9UG0WH+vHDEcGRWmnqHfgzC6ggjLalGGuAx5Ya81kSaCW4c= X-Received: by 2002:a05:690c:3385:b0:72a:6e48:d7a9 with SMTP id 00721157ae682-73063094478mr24886507b3.10.1757669695387; Fri, 12 Sep 2025 02:34:55 -0700 (PDT) MIME-Version: 1.0 References: <87il22cj51.fsf@163.com> In-Reply-To: From: Richard Guo Date: Fri, 12 Sep 2025 18:34:43 +0900 X-Gm-Features: Ac12FXx9nnhTGNsSt5qeSIeaICn79sx07aBVZ4urtdWVIAd-z6uICJbWx9_Jy_Y Message-ID: Subject: Re: Eager aggregation, take 3 To: Robert Haas Cc: Tom Lane , Tender Wang , Paul George , Andy Fan , PostgreSQL-development , pgsql-hackers@lists.postgresql.org, Matheus Alcantara Content-Type: multipart/mixed; boundary="000000000000d3d721063e975d59" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d3d721063e975d59 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Sep 9, 2025 at 11:20=E2=80=AFPM Robert Haas = wrote: > Having said that, I wonder whether there's some way that we could use > the aggtransspace property for this. For instance, for stanullfrac, we > use values >0 to mean absolute quantities and values <0 to mean > proportions. The current definition of aggtranspace assigns no meaning > to values <0, and the current coding seems to assume that sizes are > fixed regardless of how many inputs are supplied. Maybe we could > define aggtransspace<0 to mean that the number of bytes used per input > value is the additive inverse of the value, or something like that. I really like this idea. Currently, aggtransspace represents an estimate of the transition state size provided by the aggregate definition. If it's set to zero, a default estimate based on the state data type is used. Negative values currently have no defined meaning. I think it makes perfect sense to reuse this field so that a negative value indicates that the transition state data can grow unboundedly in size. Attached 0002 implements this idea. It requires fewer code changes than I expected. This is mainly because that our current code uses aggtransspace in such a way that if it's a positive value, that value is used as it's provided by the aggregate definition; otherwise, some heuristics are applied to estimate the size. For the aggregates that accumulate input rows (e.g., array_agg, string_agg), I don't currently have a better heuristic for estimating their size, so I've chosen to keep the current logic. This won't regress anything in estimating transition state data size. - Richard --000000000000d3d721063e975d59 Content-Type: application/octet-stream; name="v22-0001-Implement-Eager-Aggregation.patch" Content-Disposition: attachment; filename="v22-0001-Implement-Eager-Aggregation.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfgn4l860 RnJvbSA4YTc4MGQ4OTdlYzUyMDVhNDg4NjdmM2RjMjkxZWRmODA3MDdhY2EzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAxMSBKdW4gMjAyNCAxNTo1OToxOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjIy IDEvMl0gSW1wbGVtZW50IEVhZ2VyIEFnZ3JlZ2F0aW9uCgpFYWdlciBhZ2dyZWdhdGlvbiBpcyBh IHF1ZXJ5IG9wdGltaXphdGlvbiB0ZWNobmlxdWUgdGhhdCBwYXJ0aWFsbHkKcHVzaGVzIGFnZ3Jl Z2F0aW9uIHBhc3QgYSBqb2luLCBhbmQgZmluYWxpemVzIGl0IG9uY2UgYWxsIHRoZQpyZWxhdGlv bnMgYXJlIGpvaW5lZC4gIEVhZ2VyIGFnZ3JlZ2F0aW9uIG1heSByZWR1Y2UgdGhlIG51bWJlciBv ZgppbnB1dCByb3dzIHRvIHRoZSBqb2luIGFuZCB0aHVzIGNvdWxkIHJlc3VsdCBpbiBhIGJldHRl ciBvdmVyYWxsIHBsYW4uCgpJbiB0aGUgY3VycmVudCBwbGFubmVyIGFyY2hpdGVjdHVyZSwgdGhl IHNlcGFyYXRpb24gYmV0d2VlbiB0aGUKc2Nhbi9qb2luIHBsYW5uaW5nIHBoYXNlIGFuZCB0aGUg cG9zdC1zY2FuL2pvaW4gcGhhc2UgbWVhbnMgdGhhdAphZ2dyZWdhdGlvbiBzdGVwcyBhcmUgbm90 IHZpc2libGUgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGpvaW4gdHJlZSwKbGltaXRpbmcgdGhlIHBs YW5uZXIncyBhYmlsaXR5IHRvIGV4cGxvaXQgYWdncmVnYXRpb24tYXdhcmUKb3B0aW1pemF0aW9u cy4gIFRvIGltcGxlbWVudCBlYWdlciBhZ2dyZWdhdGlvbiwgd2UgY29sbGVjdCBpbmZvcm1hdGlv bgphYm91dCBhZ2dyZWdhdGUgZnVuY3Rpb25zIGluIHRoZSB0YXJnZXRsaXN0IGFuZCBIQVZJTkcg Y2xhdXNlLCBhbG9uZwp3aXRoIGdyb3VwaW5nIGV4cHJlc3Npb25zIGZyb20gdGhlIEdST1VQIEJZ IGNsYXVzZSwgYW5kIHN0b3JlIGl0IGluCnRoZSBQbGFubmVySW5mbyBub2RlLiAgRHVyaW5nIHRo ZSBzY2FuL2pvaW4gcGxhbm5pbmcgcGhhc2UsIHRoaXMKaW5mb3JtYXRpb24gaXMgdXNlZCB0byBl dmFsdWF0ZSBlYWNoIGJhc2Ugb3Igam9pbiByZWxhdGlvbiB0bwpkZXRlcm1pbmUgd2hldGhlciBl YWdlciBhZ2dyZWdhdGlvbiBjYW4gYmUgYXBwbGllZC4gIElmIGFwcGxpY2FibGUsIHdlCmNyZWF0 ZSBhIHNlcGFyYXRlIFJlbE9wdEluZm8sIHJlZmVycmVkIHRvIGFzIGEgZ3JvdXBlZCByZWxhdGlv biwgdG8KcmVwcmVzZW50IHRoZSBwYXJ0aWFsbHktYWdncmVnYXRlZCB2ZXJzaW9uIG9mIHRoZSBy ZWxhdGlvbiBhbmQKZ2VuZXJhdGUgZ3JvdXBlZCBwYXRocyBmb3IgaXQuCgpHcm91cGVkIHJlbGF0 aW9uIHBhdGhzIGNhbiBiZSBnZW5lcmF0ZWQgaW4gdHdvIHdheXMuICBUaGUgZmlyc3QgbWV0aG9k Cmludm9sdmVzIGFkZGluZyBzb3J0ZWQgYW5kIGhhc2hlZCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBh dGhzIG9uIHRvcCBvZgp0aGUgbm9uLWdyb3VwZWQgcGF0aHMuICBUbyBsaW1pdCBwbGFubmluZyB0 aW1lLCB3ZSBvbmx5IGNvbnNpZGVyIHRoZQpjaGVhcGVzdCBvciBzdWl0YWJseS1zb3J0ZWQgbm9u LWdyb3VwZWQgcGF0aHMgaW4gdGhpcyBzdGVwLgpBbHRlcm5hdGl2ZWx5LCBncm91cGVkIHBhdGhz IGNhbiBiZSBnZW5lcmF0ZWQgYnkgam9pbmluZyBhIGdyb3VwZWQKcmVsYXRpb24gd2l0aCBhIG5v bi1ncm91cGVkIHJlbGF0aW9uLiAgSm9pbmluZyB0d28gZ3JvdXBlZCByZWxhdGlvbnMKaXMgY3Vy cmVudGx5IG5vdCBzdXBwb3J0ZWQuCgpUbyBmdXJ0aGVyIGxpbWl0IHBsYW5uaW5nIHRpbWUsIHdl IGN1cnJlbnRseSBhZG9wdCBhIHN0cmF0ZWd5IHdoZXJlCnBhcnRpYWwgYWdncmVnYXRpb24gaXMg cHVzaGVkIG9ubHkgdG8gdGhlIGxvd2VzdCBmZWFzaWJsZSBsZXZlbCBpbiB0aGUKam9pbiB0cmVl IHdoZXJlIGl0IHByb3ZpZGVzIGEgc2lnbmlmaWNhbnQgcmVkdWN0aW9uIGluIHJvdyBjb3VudC4K VGhpcyBzdHJhdGVneSBhbHNvIGhlbHBzIGVuc3VyZSB0aGF0IGFsbCBncm91cGVkIHBhdGhzIGZv ciB0aGUgc2FtZQpncm91cGVkIHJlbGF0aW9uIHByb2R1Y2UgdGhlIHNhbWUgc2V0IG9mIHJvd3Ms IHdoaWNoIGlzIGltcG9ydGFudCB0bwpzdXBwb3J0IGEgZnVuZGFtZW50YWwgYXNzdW1wdGlvbiBv ZiB0aGUgcGxhbm5lci4KCkZvciB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbiB0aGF0IGlzIHB1c2hl ZCBkb3duIHRvIGEgbm9uLWFnZ3JlZ2F0ZWQKcmVsYXRpb24sIHdlIG5lZWQgdG8gY29uc2lkZXIg YWxsIGV4cHJlc3Npb25zIGZyb20gdGhpcyByZWxhdGlvbiB0aGF0CmFyZSBpbnZvbHZlZCBpbiB1 cHBlciBqb2luIGNsYXVzZXMgYW5kIGluY2x1ZGUgdGhlbSBpbiB0aGUgZ3JvdXBpbmcKa2V5cywg dXNpbmcgY29tcGF0aWJsZSBvcGVyYXRvcnMuICBUaGlzIGlzIGVzc2VudGlhbCB0byBlbnN1cmUg dGhhdCBhbgphZ2dyZWdhdGVkIHJvdyBmcm9tIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIG1hdGNo ZXMgdGhlIG90aGVyIHNpZGUgb2YKdGhlIGpvaW4gaWYgYW5kIG9ubHkgaWYgZWFjaCByb3cgaW4g dGhlIHBhcnRpYWwgZ3JvdXAgZG9lcy4gIFRoaXMKZW5zdXJlcyB0aGF0IGFsbCByb3dzIHdpdGhp biB0aGUgc2FtZSBwYXJ0aWFsIGdyb3VwIHNoYXJlIHRoZSBzYW1lCiJkZXN0aW55Iiwgd2hpY2gg aXMgY3J1Y2lhbCBmb3IgbWFpbnRhaW5pbmcgY29ycmVjdG5lc3MuCgpPbmUgcmVzdHJpY3Rpb24g aXMgdGhhdCB3ZSBjYW5ub3QgcHVzaCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGRvd24gdG8gYQpyZWxh dGlvbiB0aGF0IGlzIGluIHRoZSBudWxsYWJsZSBzaWRlIG9mIGFuIG91dGVyIGpvaW4sIGJlY2F1 c2UgdGhlCk5VTEwtZXh0ZW5kZWQgcm93cyBwcm9kdWNlZCBieSB0aGUgb3V0ZXIgam9pbiB3b3Vs ZCBub3QgYmUgYXZhaWxhYmxlCndoZW4gd2UgcGVyZm9ybSB0aGUgcGFydGlhbCBhZ2dyZWdhdGlv biwgd2hpbGUgd2l0aCBhCm5vbi1lYWdlci1hZ2dyZWdhdGlvbiBwbGFuIHRoZXNlIHJvd3MgYXJl IGF2YWlsYWJsZSBmb3IgdGhlIHRvcC1sZXZlbAphZ2dyZWdhdGlvbi4gIFB1c2hpbmcgcGFydGlh bCBhZ2dyZWdhdGlvbiBpbiB0aGlzIGNhc2UgbWF5IHJlc3VsdCBpbgp0aGUgcm93cyBiZWluZyBn cm91cGVkIGRpZmZlcmVudGx5IHRoYW4gZXhwZWN0ZWQsIG9yIHByb2R1Y2UgaW5jb3JyZWN0CnZh bHVlcyBmcm9tIHRoZSBhZ2dyZWdhdGUgZnVuY3Rpb25zLgoKSWYgd2UgaGF2ZSBnZW5lcmF0ZWQg YSBncm91cGVkIHJlbGF0aW9uIGZvciB0aGUgdG9wbW9zdCBqb2luIHJlbGF0aW9uLAp3ZSBmaW5h bGl6ZSBpdHMgcGF0aHMgYXQgdGhlIGVuZC4gIFRoZSBmaW5hbCBwYXRocyB3aWxsIGNvbXBldGUg aW4gdGhlCnVzdWFsIHdheSB3aXRoIHBhdGhzIGJ1aWx0IGZyb20gcmVndWxhciBwbGFubmluZy4K ClRoZSBwYXRjaCB3YXMgb3JpZ2luYWxseSBwcm9wb3NlZCBieSBBbnRvbmluIEhvdXNrYSBpbiAy MDE3LiAgVGhpcwpjb21taXQgcmV3b3JrcyB2YXJpb3VzIGltcG9ydGFudCBhc3BlY3RzIGFuZCBy ZXdyaXRlcyBtb3N0IG9mIHRoZQpjdXJyZW50IGNvZGUuICBIb3dldmVyLCB0aGUgb3JpZ2luYWwg cGF0Y2ggYW5kIHJldmlld3Mgd2VyZSB2ZXJ5CnVzZWZ1bC4KCkF1dGhvcjogUmljaGFyZCBHdW8g PGd1b2ZlbmdsaW51eEBnbWFpbC5jb20+CkF1dGhvcjogQW50b25pbiBIb3Vza2EgPGFoQGN5YmVy dGVjLmF0PiAoaW4gYW4gb2xkZXIgdmVyc2lvbikKUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxy b2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKaWFuIEhlIDxqaWFuLnVuaXZlcnNh bGl0eUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBUZW5kZXIgV2FuZyA8dG5kcndhbmdAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogTWF0aGV1cyBBbGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IFRvbSBMYW5lIDx0Z2xAc3NzLnBnaC5wYS51cz4KUmV2aWV3ZWQt Ynk6IFRvbWFzIFZvbmRyYSA8dG9tYXNAdm9uZHJhLm1lPiAoaW4gYW4gb2xkZXIgdmVyc2lvbikK UmV2aWV3ZWQtYnk6IEFuZHkgRmFuIDx6aGlodWlmYW4xMjEzQDE2My5jb20+IChpbiBhbiBvbGRl ciB2ZXJzaW9uKQpSZXZpZXdlZC1ieTogQXNodXRvc2ggQmFwYXQgPGFzaHV0b3NoLmJhcGF0Lm9z c0BnbWFpbC5jb20+IChpbiBhbiBvbGRlciB2ZXJzaW9uKQpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tL0NBTWJXczQ4anpMclB0MUpfMDBaY1BaWFdVUUthd1FPRkU4Uk9jLUFEaVlxc3Fy cEJOd0BtYWlsLmdtYWlsLmNvbQotLS0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdy ZXNfZmR3Lm91dCAgICB8ICAgNDkgKy0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAg ICAgICAgICAgICAgICB8ICAgMzEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRSAgICAg ICAgICAgICAgICAgIHwgIDExMCArKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL2dlcW8vZ2Vxb19l dmFsLmMgICAgICAgIHwgICAyMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRo cy5jICAgICAgICAgfCAgNDUzICsrKysrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lu cmVscy5jICAgICAgICAgfCAgMTkzICsrCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0 c3BsYW4uYyAgICAgICAgfCAgMzIzICsrKysKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Bs YW5tYWluLmMgICAgICAgICB8ICAgIDkgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jICAgICAgICAgIHwgIDEyNCArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBw ZW5kaW5mby5jICAgICAgIHwgICA1OSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxu b2RlLmMgICAgICAgICAgfCAgNjI4ICsrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3BhcmFtZXRlcnMuZGF0ICAgICB8ICAgMTYgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0 Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aCAgICAgICAgICAgICAgICAgfCAgMTMwICsrCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5v ZGUuaCAgICAgICAgICAgICAgfCAgICA1ICsKIHNyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5o ICAgICAgICAgICAgICAgICB8ICAgIDYgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BsYW5tYWlu LmggICAgICAgICAgICAgIHwgICAgMSArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9jb2xsYXRlLmlj dS51dGY4Lm91dCAgICAgfCAgIDMyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2Vy X2FnZ3JlZ2F0ZS5vdXQgfCAxNTg0ICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL2pvaW4ub3V0ICAgICAgICAgICAgfCAgIDEyICstCiAuLi4vcmVncmVzcy9leHBl Y3RlZC9wYXJ0aXRpb25fYWdncmVnYXRlLm91dCAgfCAgICAyICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvc3lzdmlld3Mub3V0ICAgICAgICB8ICAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2VhZ2VyX2FnZ3JlZ2F0ZS5zcWwgICAgICB8ICAyMjUgKysrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9wYXJ0aXRpb25fYWdncmVnYXRlLnNxbCAgfCAgICAyICsKIHNyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgIDMgKwogMjYgZmlsZXMgY2hhbmdlZCwg Mzk1MSBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9lYWdlcl9hZ2dyZWdhdGUuc3FsCgpkaWZmIC0t Z2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKaW5kZXggMThkNzI3 ZDc3OTAuLmYxYjJkNjg0ZTM1IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBl Y3RlZC9wb3N0Z3Jlc19mZHcub3V0CisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVk L3Bvc3RncmVzX2Zkdy5vdXQKQEAgLTM3MDEsMzAgKzM3MDEsMzMgQEAgc2VsZWN0IGNvdW50KHQx LmMzKSBmcm9tIGZ0MiB0MSBsZWZ0IGpvaW4gZnQyIHQyIG9uICh0MS5jMSA9IHJhbmRvbSgpICog dDIuYzIpOwogLS0gU3VicXVlcnkgaW4gRlJPTSBjbGF1c2UgaGF2aW5nIGFnZ3JlZ2F0ZQogZXhw bGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQogc2VsZWN0IGNvdW50KCopLCB4LmIgZnJvbSBmdDEs IChzZWxlY3QgYzIgYSwgc3VtKGMxKSBiIGZyb20gZnQxIGdyb3VwIGJ5IGMyKSB4IHdoZXJlIGZ0 MS5jMiA9IHguYSBncm91cCBieSB4LmIgb3JkZXIgYnkgMSwgMjsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAgU29ydAotICAgT3V0cHV0OiAoY291bnQoKikpLCB4LmIKLSAgIFNv cnQgS2V5OiAoY291bnQoKikpLCB4LmIKLSAgIC0+ICBIYXNoQWdncmVnYXRlCi0gICAgICAgICBP dXRwdXQ6IGNvdW50KCopLCB4LmIKLSAgICAgICAgIEdyb3VwIEtleTogeC5iCi0gICAgICAgICAt PiAgSGFzaCBKb2luCi0gICAgICAgICAgICAgICBPdXRwdXQ6IHguYgotICAgICAgICAgICAgICAg SW5uZXIgVW5pcXVlOiB0cnVlCi0gICAgICAgICAgICAgICBIYXNoIENvbmQ6IChmdDEuYzIgPSB4 LmEpCi0gICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mdDEKLSAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogZnQxLmMyCi0gICAgICAgICAgICAgICAgICAgICBSZW1v dGUgU1FMOiBTRUxFQ1QgYzIgRlJPTSAiUyAxIi4iVCAxIgotICAgICAgICAgICAgICAgLT4gIEhh c2gKLSAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogeC5iLCB4LmEKLSAgICAgICAgICAgICAg ICAgICAgIC0+ICBTdWJxdWVyeSBTY2FuIG9uIHgKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogeC5iLCB4LmEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3JlaWdu IFNjYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZnQxXzEuYzIs IChzdW0oZnQxXzEuYzEpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRp b25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mdDEgZnQxXzEpCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYzIsIHN1bSgiQyAxIikgRlJPTSAiUyAx Ii4iVCAxIiBHUk9VUCBCWSAxCi0oMjEgcm93cykKKyAgIE91dHB1dDogKGNvdW50KCopKSwgKHN1 bShmdDFfMS5jMSkpCisgICBTb3J0IEtleTogKGNvdW50KCopKSwgKHN1bShmdDFfMS5jMSkpCisg ICAtPiAgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1dDogY291bnQoKiks IChzdW0oZnQxXzEuYzEpKQorICAgICAgICAgR3JvdXAgS2V5OiAoc3VtKGZ0MV8xLmMxKSkKKyAg ICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBPdXRwdXQ6IChzdW0oZnQxXzEuYzEpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICBTb3J0IEtleTogKHN1bShmdDFfMS5j MSkpCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IChzdW0oZnQxXzEuYzEpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAg ICAgICAgICBIYXNoIENvbmQ6IChmdDFfMS5jMiA9IGZ0MS5jMikKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog ZnQxXzEuYzIsIChzdW0oZnQxXzEuYzEpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVs YXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mdDEgZnQxXzEpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYzIsIHN1bSgiQyAxIikgRlJPTSAiUyAxIi4i VCAxIiBHUk9VUCBCWSAxCisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiBmdDEuYzIsIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBmdDEuYzIsIFBBUlRJQUwgY291bnQo KikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogZnQxLmMyCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1Ymxp Yy5mdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogZnQx LmMyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBT RUxFQ1QgYzIgRlJPTSAiUyAxIi4iVCAxIgorKDI0IHJvd3MpCiAKIHNlbGVjdCBjb3VudCgqKSwg eC5iIGZyb20gZnQxLCAoc2VsZWN0IGMyIGEsIHN1bShjMSkgYiBmcm9tIGZ0MSBncm91cCBieSBj MikgeCB3aGVyZSBmdDEuYzIgPSB4LmEgZ3JvdXAgYnkgeC5iIG9yZGVyIGJ5IDEsIDI7CiAgY291 bnQgfCAgIGIgICAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbAppbmRleCAyYTM2ODVmNDc0YS4uYmFjM2MzMjcwYTAgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwKQEAgLTU0NzUsNiArNTQ3NSwyMSBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAg ICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRy eSBpZD0iZ3VjLWVuYWJsZS1lYWdlci1hZ2dyZWdhdGUiIHhyZWZsYWJlbD0iZW5hYmxlX2VhZ2Vy X2FnZ3JlZ2F0ZSI+CisgICAgICA8dGVybT48dmFybmFtZT5lbmFibGVfZWFnZXJfYWdncmVnYXRl PC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAg ICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmVuYWJsZV9lYWdlcl9hZ2dyZWdhdGU8L3Zhcm5hbWU+IGNv bmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAg ICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIEVuYWJs ZXMgb3IgZGlzYWJsZXMgdGhlIHF1ZXJ5IHBsYW5uZXIncyBhYmlsaXR5IHRvIHBhcnRpYWxseSBw dXNoCisgICAgICAgIGFnZ3JlZ2F0aW9uIHBhc3QgYSBqb2luLCBhbmQgZmluYWxpemUgaXQgb25j ZSBhbGwgdGhlIHJlbGF0aW9ucyBhcmUKKyAgICAgICAgam9pbmVkLiBUaGUgZGVmYXVsdCBpcyA8 bGl0ZXJhbD5vbjwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4K KyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWVuYWJs ZS1nYXRoZXJtZXJnZSIgeHJlZmxhYmVsPSJlbmFibGVfZ2F0aGVybWVyZ2UiPgogICAgICAgPHRl cm0+PHZhcm5hbWU+ZW5hYmxlX2dhdGhlcm1lcmdlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwv dHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpAQCAtNjA5NSw2ICs2MTEwLDIyIEBAIEFOWSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBs YWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4K IAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWluLWVhZ2VyLWFnZy1ncm91cC1zaXplIiB4 cmVmbGFiZWw9Im1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZSI+CisgICAgICA8dGVybT48dmFybmFt ZT5taW5fZWFnZXJfYWdnX2dyb3VwX3NpemU8L3Zhcm5hbWU+ICg8dHlwZT5mbG9hdGluZyBwb2lu dDwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1p bl9lYWdlcl9hZ2dfZ3JvdXBfc2l6ZTwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8 L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0 aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgU2V0cyB0aGUgbWluaW11bSBhdmVyYWdlIGdy b3VwIHNpemUgcmVxdWlyZWQgdG8gY29uc2lkZXIgYXBwbHlpbmcKKyAgICAgICAgZWFnZXIgYWdn cmVnYXRpb24uIFRoaXMgaGVscHMgYXZvaWQgdGhlIG92ZXJoZWFkIG9mIGVhZ2VyCisgICAgICAg IGFnZ3JlZ2F0aW9uIHdoZW4gaXQgZG9lcyBub3Qgb2ZmZXIgc2lnbmlmaWNhbnQgcm93IGNvdW50 IHJlZHVjdGlvbi4KKyAgICAgICAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+ODwvbGl0ZXJhbD4u CisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+ CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWppdC1hYm92ZS1jb3N0IiB4cmVmbGFiZWw9 ImppdF9hYm92ZV9jb3N0Ij4KICAgICAgIDx0ZXJtPjx2YXJuYW1lPmppdF9hYm92ZV9jb3N0PC92 YXJuYW1lPiAoPHR5cGU+ZmxvYXRpbmcgcG9pbnQ8L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9SRUFETUUgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvUkVBRE1FCmluZGV4IDg0MzM2ODA5NmZkLi42YzM1YmFjZWVkYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL1JFQURNRQorKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvUkVBRE1FCkBAIC0xNTAwLDMgKzE1MDAsMTEzIEBAIGJyZWFraW5nIGRvd24gYWdncmVnYXRp b24gb3IgZ3JvdXBpbmcgb3ZlciBhIHBhcnRpdGlvbmVkIHJlbGF0aW9uIGludG8KIGFnZ3JlZ2F0 aW9uIG9yIGdyb3VwaW5nIG92ZXIgaXRzIHBhcnRpdGlvbnMgaXMgY2FsbGVkIHBhcnRpdGlvbndp c2UKIGFnZ3JlZ2F0aW9uLiAgRXNwZWNpYWxseSB3aGVuIHRoZSBwYXJ0aXRpb24ga2V5cyBtYXRj aCB0aGUgR1JPVVAgQlkgY2xhdXNlLAogdGhpcyBjYW4gYmUgc2lnbmlmaWNhbnRseSBmYXN0ZXIg dGhhbiB0aGUgcmVndWxhciBtZXRob2QuCisKK0VhZ2VyIGFnZ3JlZ2F0aW9uCistLS0tLS0tLS0t LS0tLS0tLQorCitFYWdlciBhZ2dyZWdhdGlvbiBpcyBhIHF1ZXJ5IG9wdGltaXphdGlvbiB0ZWNo bmlxdWUgdGhhdCBwYXJ0aWFsbHkKK3B1c2hlcyBhZ2dyZWdhdGlvbiBwYXN0IGEgam9pbiwgYW5k IGZpbmFsaXplcyBpdCBvbmNlIGFsbCB0aGUKK3JlbGF0aW9ucyBhcmUgam9pbmVkLiAgRWFnZXIg YWdncmVnYXRpb24gbWF5IHJlZHVjZSB0aGUgbnVtYmVyIG9mCitpbnB1dCByb3dzIHRvIHRoZSBq b2luIGFuZCB0aHVzIGNvdWxkIHJlc3VsdCBpbiBhIGJldHRlciBvdmVyYWxsIHBsYW4uCisKK1Rv IHByb3ZlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGlzIGNvcnJlY3QsIGxldCdzIGZpcnN0IGNv bnNpZGVyIHRoZQorY2FzZSB3aGVyZSBvbmx5IGlubmVyIGpvaW5zIGFyZSBpbnZvbHZlZC4gIElu IHRoaXMgY2FzZSwgd2UgcGFydGl0aW9uCit0aGUgdGFibGVzIGluIHRoZSBGUk9NIGNsYXVzZSBp bnRvIHR3byBncm91cHM6IHRob3NlIHRoYXQgY29udGFpbiBhdAorbGVhc3Qgb25lIGFnZ3JlZ2F0 aW9uIGNvbHVtbiwgYW5kIHRob3NlIHRoYXQgZG8gbm90IGNvbnRhaW4gYW55CithZ2dyZWdhdGlv biBjb2x1bW5zLiAgRWFjaCBncm91cCBjYW4gYmUgdHJlYXRlZCBhcyBhIHNpbmdsZSByZWxhdGlv bgorZm9ybWVkIGJ5IHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aGUgdGFibGVzIHdpdGhpbiB0 aGF0IGdyb3VwLgorVGhlcmVmb3JlLCB3aXRob3V0IGxvc3Mgb2YgZ2VuZXJhbGl0eSwgd2UgY2Fu IGFzc3VtZSB0aGF0IHRoZSBGUk9NCitjbGF1c2UgY29udGFpbnMgZXhhY3RseSB0d28gcmVsYXRp b25zLCBSMSBhbmQgUjIsIHdoZXJlIFIxIHJlcHJlc2VudHMKK3RoZSByZWxhdGlvbiBjb250YWlu aW5nIGFsbCBhZ2dyZWdhdGlvbiBjb2x1bW5zLCBhbmQgUjIgcmVwcmVzZW50cyB0aGUKK3JlbGF0 aW9uIHdpdGhvdXQgYW55IGFnZ3JlZ2F0aW9uIGNvbHVtbnMuCisKK0xldCB0aGUgcXVlcnkgYmUg b2YgdGhlIGZvcm06CisKK1NFTEVDVCBHLCBBR0coQSkKK0ZST00gUjEgSk9JTiBSMiBPTiBKCitH Uk9VUCBCWSBHOworCit3aGVyZSBHIGlzIHRoZSBzZXQgb2YgZ3JvdXBpbmcga2V5cyB0aGF0IG1h eSBpbmNsdWRlIGNvbHVtbnMgZnJvbSBSMQorYW5kL29yIFIyOyBBR0coQSkgaXMgYW4gYWdncmVn YXRlIGZ1bmN0aW9uIG92ZXIgY29sdW1ucyBBIGZyb20gUjE7IEoKK2lzIHRoZSBqb2luIGNvbmRp dGlvbiBiZXR3ZWVuIFIxIGFuZCBSMi4KKworVGhlIHRyYW5zZm9ybWF0aW9uIG9mIGVhZ2VyIGFn Z3JlZ2F0aW9uIGlzOgorCisgICAgR1JPVVAgQlkgRywgQUdHKEEpIG9uIChSMSBKT0lOIFIyIE9O IEopCisgICAgPQorICAgIEdST1VQIEJZIEcsIEFHRyhhZ2dfQSkgb24gKChHUk9VUCBCWSBHMSwg QUdHKEEpIEFTIGFnZ19BIG9uIFIxKSBKT0lOIFIyIE9OIEopCisKK1RoaXMgZXF1aXZhbGVuY2Ug aG9sZHMgdW5kZXIgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisxKSBBR0cgaXMgZGVjb21w b3NhYmxlLCBtZWFuaW5nIHRoYXQgaXQgY2FuIGJlIGNvbXB1dGVkIGluIHR3byBzdGFnZXM6Cith IHBhcnRpYWwgYWdncmVnYXRpb24gZm9sbG93ZWQgYnkgYSBmaW5hbCBhZ2dyZWdhdGlvbjsKKzIp IFRoZSBzZXQgRzEgdXNlZCBpbiB0aGUgcHJlLWFnZ3JlZ2F0aW9uIG9mIFIxIGluY2x1ZGVzOgor ICAgICogYWxsIGNvbHVtbnMgZnJvbSBSMSB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBncm91cGluZyBr ZXlzIEcsIGFuZAorICAgICogYWxsIGNvbHVtbnMgZnJvbSBSMSB0aGF0IGFwcGVhciBpbiB0aGUg am9pbiBjb25kaXRpb24gSi4KKzMpIFRoZSBncm91cGluZyBvcGVyYXRvciBmb3IgYW55IGNvbHVt biBpbiBHMSBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aAordGhlIG9wZXJhdG9yIHVzZWQgZm9yIHRo YXQgY29sdW1uIGluIHRoZSBqb2luIGNvbmRpdGlvbiBKLgorCitTaW5jZSBHMSBpbmNsdWRlcyBh bGwgY29sdW1ucyBmcm9tIFIxIHRoYXQgYXBwZWFyIGluIGVpdGhlciB0aGUKK2dyb3VwaW5nIGtl eXMgRyBvciB0aGUgam9pbiBjb25kaXRpb24gSiwgYWxsIHJvd3Mgd2l0aGluIGVhY2ggcGFydGlh bAorZ3JvdXAgaGF2ZSBpZGVudGljYWwgdmFsdWVzIGZvciBib3RoIHRoZSBncm91cGluZyBrZXlz IGFuZCB0aGUKK2pvaW4tcmVsZXZhbnQgY29sdW1ucyBmcm9tIFIxLCBhc3N1bWluZyBjb21wYXRp YmxlIG9wZXJhdG9ycyBhcmUgdXNlZC4KK0FzIGEgcmVzdWx0LCB0aGUgcm93cyB3aXRoaW4gYSBw YXJ0aWFsIGdyb3VwIGFyZSBpbmRpc3Rpbmd1aXNoYWJsZSBpbgordGVybXMgb2YgdGhlaXIgY29u dHJpYnV0aW9uIHRvIHRoZSBhZ2dyZWdhdGlvbiBhbmQgdGhlaXIgYmVoYXZpb3IgaW4KK3RoZSBq b2luLiAgVGhpcyBlbnN1cmVzIHRoYXQgYWxsIHJvd3MgaW4gdGhlIHNhbWUgcGFydGlhbCBncm91 cCBzaGFyZQordGhlIHNhbWUgImRlc3RpbnkiOiB0aGV5IGVpdGhlciBhbGwgbWF0Y2ggb3IgYWxs IGZhaWwgdG8gbWF0Y2ggYSBnaXZlbgorcm93IGluIFIyLiAgQmVjYXVzZSB0aGUgYWdncmVnYXRl IGZ1bmN0aW9uIEFHRyBpcyBkZWNvbXBvc2FibGUsCithZ2dyZWdhdGluZyB0aGUgcGFydGlhbCBy ZXN1bHRzIGFmdGVyIHRoZSBqb2luIHlpZWxkcyB0aGUgc2FtZSBmaW5hbAorcmVzdWx0IGFzIGFn Z3JlZ2F0aW5nIGFmdGVyIHRoZSBmdWxsIGpvaW4sIHRoZXJlYnkgcHJlc2VydmluZyBxdWVyeQor c2VtYW50aWNzLiAgUS5FLkQuCisKK0luIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGFyZSBhbnkgb3V0 ZXIgam9pbnMsIHRoZSBzaXR1YXRpb24gYmVjb21lcworbW9yZSBjb21wbGV4IGR1ZSB0byBqb2lu IG9yZGVyIGNvbnN0cmFpbnRzIGFuZCB0aGUgc2VtYW50aWNzIG9mCitudWxsLWV4dGVuc2lvbiBp biBvdXRlciBqb2lucy4gIElmIHRoZSByZWxhdGlvbnMgdGhhdCBjb250YWluIGF0IGxlYXN0Citv bmUgYWdncmVnYXRpb24gY29sdW1uIGNhbm5vdCBiZSB0cmVhdGVkIGFzIGEgc2luZ2xlIHJlbGF0 aW9uIGJlY2F1c2UKK29mIHRoZSBqb2luIG9yZGVyIGNvbnN0cmFpbnRzLCBwYXJ0aWFsIGFnZ3Jl Z2F0aW9uIHBhdGhzIHdpbGwgbm90IGJlCitnZW5lcmF0ZWQsIGFuZCB0aHVzIHRoZSB0cmFuc2Zv cm1hdGlvbiBpcyBub3QgYXBwbGljYWJsZS4gIE90aGVyd2lzZSwKK2xldCBSMSBiZSB0aGUgcmVs YXRpb24gY29udGFpbmluZyBhbGwgYWdncmVnYXRpb24gY29sdW1ucywgYW5kIFIyLCBSMywKKy4u LiBiZSB0aGUgcmVtYWluaW5nIHJlbGF0aW9ucy4gIEZyb20gdGhlIGlubmVyIGpvaW4gY2FzZSwg dW5kZXIgdGhlCithZm9yZW1lbnRpb25lZCBjb25kaXRpb25zLCB3ZSBoYXZlIHRoZSBlcXVpdmFs ZW5jZToKKworICAgIEdST1VQIEJZIEcsIEFHRyhBKSBvbiAoUjEgSk9JTiBSMiBKT0lOIFIzIC4u LikKKyAgICA9CisgICAgR1JPVVAgQlkgRywgQUdHKGFnZ19BKSBvbiAoKEdST1VQIEJZIEcxLCBB R0coQSkgQVMgYWdnX0Egb24gUjEpIEpPSU4gUjIgSk9JTiBSMyAuLi4pCisKK1RvIHByZXNlcnZl IGNvcnJlY3RuZXNzIHdoZW4gb3V0ZXIgam9pbnMgYXJlIGludm9sdmVkLCB3ZSByZXF1aXJlIGFu CithZGRpdGlvbmFsIGNvbmRpdGlvbjoKKworNCkgUjEgbXVzdCBub3QgYmUgb24gdGhlIG51bGxh YmxlIHNpZGUgb2YgYW55IG91dGVyIGpvaW4uCisKK1RoaXMgY29uZGl0aW9uIGVuc3VyZXMgdGhh dCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIG92ZXIgUjEgZG9lcyBub3QKK3N1cHByZXNzIGFueSBudWxs LWV4dGVuZGVkIHJvd3MgdGhhdCB3b3VsZCBiZSBpbnRyb2R1Y2VkIGJ5IG91dGVyCitqb2lucy4g IElmIFIxIGlzIG9uIHRoZSBudWxsYWJsZSBzaWRlIG9mIGFuIG91dGVyIGpvaW4sIHRoZQorTlVM TC1leHRlbmRlZCByb3dzIHByb2R1Y2VkIGJ5IHRoZSBvdXRlciBqb2luIHdvdWxkIG5vdCBiZSBh dmFpbGFibGUKK3doZW4gd2UgcGVyZm9ybSB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbiwgd2hpbGUg d2l0aCBhCitub24tZWFnZXItYWdncmVnYXRpb24gcGxhbiB0aGVzZSByb3dzIGFyZSBhdmFpbGFi bGUgZm9yIHRoZSB0b3AtbGV2ZWwKK2FnZ3JlZ2F0aW9uLiAgUHVzaGluZyBwYXJ0aWFsIGFnZ3Jl Z2F0aW9uIGluIHRoaXMgY2FzZSBtYXkgcmVzdWx0IGluCit0aGUgcm93cyBiZWluZyBncm91cGVk IGRpZmZlcmVudGx5IHRoYW4gZXhwZWN0ZWQsIG9yIHByb2R1Y2UgaW5jb3JyZWN0Cit2YWx1ZXMg ZnJvbSB0aGUgYWdncmVnYXRlIGZ1bmN0aW9ucy4KKworRHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24g b2YgdGhlIGpvaW4gdHJlZSwgd2UgZXZhbHVhdGUgZWFjaCBiYXNlIG9yCitqb2luIHJlbGF0aW9u IHRvIGRldGVybWluZSBpZiBlYWdlciBhZ2dyZWdhdGlvbiBjYW4gYmUgYXBwbGllZC4gIElmCitm ZWFzaWJsZSwgd2UgY3JlYXRlIGEgc2VwYXJhdGUgUmVsT3B0SW5mbyBjYWxsZWQgYSAiZ3JvdXBl ZCByZWxhdGlvbiIKK2FuZCBnZW5lcmF0ZSBncm91cGVkIHBhdGhzIGJ5IGFkZGluZyBzb3J0ZWQg YW5kIGhhc2hlZCBwYXJ0aWFsCithZ2dyZWdhdGlvbiBwYXRocyBvbiB0b3Agb2YgdGhlIG5vbi1n cm91cGVkIHBhdGhzLiAgVG8gbGltaXQgcGxhbm5pbmcKK3RpbWUsIHdlIGNvbnNpZGVyIG9ubHkg dGhlIGNoZWFwZXN0IG9yIHN1aXRhYmx5LXNvcnRlZCBub24tZ3JvdXBlZAorcGF0aHMgaW4gdGhp cyBzdGVwLgorCitBbm90aGVyIHdheSB0byBnZW5lcmF0ZSBncm91cGVkIHBhdGhzIGlzIHRvIGpv aW4gYSBncm91cGVkIHJlbGF0aW9uCit3aXRoIGEgbm9uLWdyb3VwZWQgcmVsYXRpb24uICBKb2lu aW5nIHR3byBncm91cGVkIHJlbGF0aW9ucyBpcworY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCisK K1RvIGZ1cnRoZXIgbGltaXQgcGxhbm5pbmcgdGltZSwgd2UgY3VycmVudGx5IGFkb3B0IGEgc3Ry YXRlZ3kgd2hlcmUKK3BhcnRpYWwgYWdncmVnYXRpb24gaXMgcHVzaGVkIG9ubHkgdG8gdGhlIGxv d2VzdCBmZWFzaWJsZSBsZXZlbCBpbiB0aGUKK2pvaW4gdHJlZSB3aGVyZSBpdCBwcm92aWRlcyBh IHNpZ25pZmljYW50IHJlZHVjdGlvbiBpbiByb3cgY291bnQuCitUaGlzIHN0cmF0ZWd5IGFsc28g aGVscHMgZW5zdXJlIHRoYXQgYWxsIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBzYW1lCitncm91cGVk IHJlbGF0aW9uIHByb2R1Y2UgdGhlIHNhbWUgc2V0IG9mIHJvd3MsIHdoaWNoIGlzIGltcG9ydGFu dCB0bworc3VwcG9ydCBhIGZ1bmRhbWVudGFsIGFzc3VtcHRpb24gb2YgdGhlIHBsYW5uZXIuCisK K0lmIHdlIGhhdmUgZ2VuZXJhdGVkIGEgZ3JvdXBlZCByZWxhdGlvbiBmb3IgdGhlIHRvcG1vc3Qg am9pbiByZWxhdGlvbiwKK3dlIG5lZWQgdG8gZmluYWxpemUgaXRzIHBhdGhzIGF0IHRoZSBlbmQu ICBUaGUgZmluYWwgcGF0aHMgd2lsbAorY29tcGV0ZSBpbiB0aGUgdXN1YWwgd2F5IHdpdGggcGF0 aHMgYnVpbHQgZnJvbSByZWd1bGFyIHBsYW5uaW5nLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL2dlcW8vZ2Vxb19ldmFsLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvZ2Vxby9n ZXFvX2V2YWwuYwppbmRleCBmMDdkMWRjOGFjNi4uNGE2NWY5NTVjYTYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9nZXFvL2dlcW9fZXZhbC5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9nZXFvL2dlcW9fZXZhbC5jCkBAIC0yNzksNiArMjc5LDI3IEBAIG1lcmdlX2NsdW1w KFBsYW5uZXJJbmZvICpyb290LCBMaXN0ICpjbHVtcHMsIENsdW1wICpuZXdfY2x1bXAsIGludCBu dW1fZ2VuZSwKIAkJCQkvKiBGaW5kIGFuZCBzYXZlIHRoZSBjaGVhcGVzdCBwYXRocyBmb3IgdGhp cyBqb2lucmVsICovCiAJCQkJc2V0X2NoZWFwZXN0KGpvaW5yZWwpOwogCisJCQkJLyoKKwkJCQkg KiBFeGNlcHQgZm9yIHRoZSB0b3Btb3N0IHNjYW4vam9pbiByZWwsIGNvbnNpZGVyIGdlbmVyYXRp bmcKKwkJCQkgKiBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBlZCByZWxh dGlvbiBvbiB0b3AKKwkJCQkgKiBvZiB0aGUgcGF0aHMgb2YgdGhpcyByZWwuICBBZnRlciB0aGF0 LCB3ZSdyZSBkb25lIGNyZWF0aW5nCisJCQkJICogcGF0aHMgZm9yIHRoZSBncm91cGVkIHJlbGF0 aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCkuCisJCQkJICovCisJCQkJaWYgKCFibXNfZXF1YWwo am9pbnJlbC0+cmVsaWRzLCByb290LT5hbGxfcXVlcnlfcmVscykpCisJCQkJeworCQkJCQlSZWxP cHRJbmZvICpncm91cGVkX3JlbDsKKworCQkJCQlncm91cGVkX3JlbCA9IGpvaW5yZWwtPmdyb3Vw ZWRfcmVsOworCQkJCQlpZiAoZ3JvdXBlZF9yZWwpCisJCQkJCXsKKwkJCQkJCUFzc2VydChJU19H Uk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCQkJCQlnZW5lcmF0ZV9ncm91cGVkX3BhdGhz KHJvb3QsIGdyb3VwZWRfcmVsLCBqb2lucmVsLAorCQkJCQkJCQkJCQkgICBncm91cGVkX3JlbC0+ YWdnX2luZm8pOworCQkJCQkJc2V0X2NoZWFwZXN0KGdyb3VwZWRfcmVsKTsKKwkJCQkJfQorCQkJ CX0KKwogCQkJCS8qIEFic29yYiBuZXcgY2x1bXAgaW50byBvbGQgKi8KIAkJCQlvbGRfY2x1bXAt PmpvaW5yZWwgPSBqb2lucmVsOwogCQkJCW9sZF9jbHVtcC0+c2l6ZSArPSBuZXdfY2x1bXAtPnNp emU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jIGIv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwppbmRleCA2Y2M2OTY2YjA2MC4u N2IzNDlhNDU3MGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBh dGhzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYwpAQCAtNDAs NiArNDAsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5oIgogI2luY2x1ZGUgIm9wdGlt aXplci9wbGFuY2F0LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5uZXIuaCIKKyNpbmNsdWRl ICJvcHRpbWl6ZXIvcHJlcC5oIgogI2luY2x1ZGUgIm9wdGltaXplci90bGlzdC5oIgogI2luY2x1 ZGUgInBhcnNlci9wYXJzZV9jbGF1c2UuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2V0cmVlLmgi CkBAIC00Nyw2ICs0OCw3IEBACiAjaW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgogI2luY2x1 ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CisjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKIAogCiAvKiBCaXRtYXNrIGZsYWdzIGZvciBw dXNoZG93bl9zYWZldHlfaW5mby51bnNhZmVGbGFncyAqLwpAQCAtNzcsNyArNzksOSBAQCB0eXBl ZGVmIGVudW0gcHVzaGRvd25fc2FmZV90eXBlCiAKIC8qIFRoZXNlIHBhcmFtZXRlcnMgYXJlIHNl dCBieSBHVUMgKi8KIGJvb2wJCWVuYWJsZV9nZXFvID0gZmFsc2U7CS8qIGp1c3QgaW4gY2FzZSBH VUMgZG9lc24ndCBzZXQgaXQgKi8KK2Jvb2wJCWVuYWJsZV9lYWdlcl9hZ2dyZWdhdGUgPSB0cnVl OwogaW50CQkJZ2Vxb190aHJlc2hvbGQ7Citkb3VibGUJCW1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6 ZTsKIGludAkJCW1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CiBpbnQJCQltaW5fcGFyYWxs ZWxfaW5kZXhfc2Nhbl9zaXplOwogCkBAIC05MCw2ICs5NCw3IEBAIGpvaW5fc2VhcmNoX2hvb2tf dHlwZSBqb2luX3NlYXJjaF9ob29rID0gTlVMTDsKIAogc3RhdGljIHZvaWQgc2V0X2Jhc2VfcmVs X2NvbnNpZGVyX3N0YXJ0dXAoUGxhbm5lckluZm8gKnJvb3QpOwogc3RhdGljIHZvaWQgc2V0X2Jh c2VfcmVsX3NpemVzKFBsYW5uZXJJbmZvICpyb290KTsKK3N0YXRpYyB2b2lkIHNldHVwX2Jhc2Vf Z3JvdXBlZF9yZWxzKFBsYW5uZXJJbmZvICpyb290KTsKIHN0YXRpYyB2b2lkIHNldF9iYXNlX3Jl bF9wYXRobGlzdHMoUGxhbm5lckluZm8gKnJvb3QpOwogc3RhdGljIHZvaWQgc2V0X3JlbF9zaXpl KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkgSW5kZXggcnRpLCBS YW5nZVRibEVudHJ5ICpydGUpOwpAQCAtMTE0LDYgKzExOSw3IEBAIHN0YXRpYyB2b2lkIHNldF9h cHBlbmRfcmVsX3NpemUoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJ CQkJSW5kZXggcnRpLCBSYW5nZVRibEVudHJ5ICpydGUpOwogc3RhdGljIHZvaWQgc2V0X2FwcGVu ZF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJ CQkJCUluZGV4IHJ0aSwgUmFuZ2VUYmxFbnRyeSAqcnRlKTsKK3N0YXRpYyB2b2lkIHNldF9ncm91 cGVkX3JlbF9wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKTsKIHN0 YXRpYyB2b2lkIGdlbmVyYXRlX29yZGVyZWRhcHBlbmRfcGF0aHMoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCQkgTGlzdCAqbGl2ZV9jaGlsZHJlbHMsCiAJCQkJ CQkJCQkJIExpc3QgKmFsbF9jaGlsZF9wYXRoa2V5cyk7CkBAIC0xODIsNiArMTg4LDExIEBAIG1h a2Vfb25lX3JlbChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqam9pbmxpc3QpCiAJICovCiAJc2V0 X2Jhc2VfcmVsX3NpemVzKHJvb3QpOwogCisJLyoKKwkgKiBCdWlsZCBncm91cGVkIHJlbGF0aW9u cyBmb3IgYmFzZSByZWxzIHdoZXJlIHBvc3NpYmxlLgorCSAqLworCXNldHVwX2Jhc2VfZ3JvdXBl ZF9yZWxzKHJvb3QpOworCiAJLyoKIAkgKiBXZSBzaG91bGQgbm93IGhhdmUgc2l6ZSBlc3RpbWF0 ZXMgZm9yIGV2ZXJ5IGFjdHVhbCB0YWJsZSBpbnZvbHZlZCBpbgogCSAqIHRoZSBxdWVyeSwgYW5k IHdlIGFsc28ga25vdyB3aGljaCBpZiBhbnkgaGF2ZSBiZWVuIGRlbGV0ZWQgZnJvbSB0aGUKQEAg LTMyMyw2ICszMzQsMzkgQEAgc2V0X2Jhc2VfcmVsX3NpemVzKFBsYW5uZXJJbmZvICpyb290KQog CX0KIH0KIAorLyoKKyAqIHNldHVwX2Jhc2VfZ3JvdXBlZF9yZWxzCisgKgkgIEZvciBlYWNoIGJh c2UgcmVsYXRpb24sIGJ1aWxkIGEgZ3JvdXBlZCBiYXNlIHJlbGF0aW9uIGlmIGVhZ2VyCisgKgkg IGFnZ3JlZ2F0aW9uIGlzIHBvc3NpYmxlIGFuZCBpZiB0aGlzIHJlbGF0aW9uIGNhbiBwcm9kdWNl IGdyb3VwZWQgcGF0aHMuCisgKi8KK3N0YXRpYyB2b2lkCitzZXR1cF9iYXNlX2dyb3VwZWRfcmVs cyhQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlJbmRleAkJcnRpOworCisJLyoKKwkgKiBJZiB0aGVy ZSBhcmUgbm8gYWdncmVnYXRlIGV4cHJlc3Npb25zIG9yIGdyb3VwaW5nIGV4cHJlc3Npb25zLCBl YWdlcgorCSAqIGFnZ3JlZ2F0aW9uIGlzIG5vdCBwb3NzaWJsZS4KKwkgKi8KKwlpZiAocm9vdC0+ YWdnX2NsYXVzZV9saXN0ID09IE5JTCB8fAorCQlyb290LT5ncm91cF9leHByX2xpc3QgPT0gTklM KQorCQlyZXR1cm47CisKKwlmb3IgKHJ0aSA9IDE7IHJ0aSA8IHJvb3QtPnNpbXBsZV9yZWxfYXJy YXlfc2l6ZTsgcnRpKyspCisJeworCQlSZWxPcHRJbmZvICpyZWwgPSByb290LT5zaW1wbGVfcmVs X2FycmF5W3J0aV07CisKKwkJLyogdGhlcmUgbWF5IGJlIGVtcHR5IHNsb3RzIGNvcnJlc3BvbmRp bmcgdG8gbm9uLWJhc2VyZWwgUlRFcyAqLworCQlpZiAocmVsID09IE5VTEwpCisJCQljb250aW51 ZTsKKworCQlBc3NlcnQocmVsLT5yZWxpZCA9PSBydGkpOwkvKiBzYW5pdHkgY2hlY2sgb24gYXJy YXkgKi8KKwkJQXNzZXJ0KElTX1NJTVBMRV9SRUwocmVsKSk7IC8qIHNhbml0eSBjaGVjayBvbiBy ZWwgKi8KKworCQkodm9pZCkgYnVpbGRfc2ltcGxlX2dyb3VwZWRfcmVsKHJvb3QsIHJlbCk7CisJ fQorfQorCiAvKgogICogc2V0X2Jhc2VfcmVsX3BhdGhsaXN0cwogICoJICBGaW5kcyBhbGwgcGF0 aHMgYXZhaWxhYmxlIGZvciBzY2FubmluZyBlYWNoIGJhc2UtcmVsYXRpb24gZW50cnkuCkBAIC01 NTksNiArNjAzLDE1IEBAIHNldF9yZWxfcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnJlbCwKIAkvKiBOb3cgZmluZCB0aGUgY2hlYXBlc3Qgb2YgdGhlIHBhdGhzIGZvciB0 aGlzIHJlbCAqLwogCXNldF9jaGVhcGVzdChyZWwpOwogCisJLyoKKwkgKiBJZiBhIGdyb3VwZWQg cmVsYXRpb24gZm9yIHRoaXMgcmVsIGV4aXN0cywgYnVpbGQgcGFydGlhbCBhZ2dyZWdhdGlvbgor CSAqIHBhdGhzIGZvciBpdC4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGlzIGNhbiBvbmx5IGhhcHBl biBhZnRlciB3ZSd2ZSBjYWxsZWQgc2V0X2NoZWFwZXN0KCkgZm9yCisJICogdGhpcyBiYXNlIHJl bCwgYmVjYXVzZSB3ZSBuZWVkIGl0cyBjaGVhcGVzdCBwYXRocy4KKwkgKi8KKwlzZXRfZ3JvdXBl ZF9yZWxfcGF0aGxpc3Qocm9vdCwgcmVsKTsKKwogI2lmZGVmIE9QVElNSVpFUl9ERUJVRwogCXBw cmludChyZWwpOwogI2VuZGlmCkBAIC0xMzA1LDYgKzEzNTgsMzYgQEAgc2V0X2FwcGVuZF9yZWxf cGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAlhZGRfcGF0aHNf dG9fYXBwZW5kX3JlbChyb290LCByZWwsIGxpdmVfY2hpbGRyZWxzKTsKIH0KIAorLyoKKyAqIHNl dF9ncm91cGVkX3JlbF9wYXRobGlzdAorICoJICBJZiBhIGdyb3VwZWQgcmVsYXRpb24gZm9yIHRo ZSBnaXZlbiAncmVsJyBleGlzdHMsIGJ1aWxkIHBhcnRpYWwKKyAqCSAgYWdncmVnYXRpb24gcGF0 aHMgZm9yIGl0LgorICovCitzdGF0aWMgdm9pZAorc2V0X2dyb3VwZWRfcmVsX3BhdGhsaXN0KFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCit7CisJUmVsT3B0SW5mbyAqZ3JvdXBl ZF9yZWw7CisKKwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMg b3IgZ3JvdXBpbmcgZXhwcmVzc2lvbnMsIGVhZ2VyCisJICogYWdncmVnYXRpb24gaXMgbm90IHBv c3NpYmxlLgorCSAqLworCWlmIChyb290LT5hZ2dfY2xhdXNlX2xpc3QgPT0gTklMIHx8CisJCXJv b3QtPmdyb3VwX2V4cHJfbGlzdCA9PSBOSUwpCisJCXJldHVybjsKKworCS8qIEFkZCBwYXRocyB0 byB0aGUgZ3JvdXBlZCBiYXNlIHJlbGF0aW9uIGlmIG9uZSBleGlzdHMuICovCisJZ3JvdXBlZF9y ZWwgPSByZWwtPmdyb3VwZWRfcmVsOworCWlmIChncm91cGVkX3JlbCkKKwl7CisJCUFzc2VydChJ U19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCWdlbmVyYXRlX2dyb3VwZWRfcGF0aHMo cm9vdCwgZ3JvdXBlZF9yZWwsIHJlbCwKKwkJCQkJCQkgICBncm91cGVkX3JlbC0+YWdnX2luZm8p OworCQlzZXRfY2hlYXBlc3QoZ3JvdXBlZF9yZWwpOworCX0KK30KKwogCiAvKgogICogYWRkX3Bh dGhzX3RvX2FwcGVuZF9yZWwKQEAgLTMzMzUsNiArMzQxOCwzMjggQEAgZ2VuZXJhdGVfdXNlZnVs X2dhdGhlcl9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBib29sIG92 ZXJyaWRlX3IKIAl9CiB9CiAKKy8qCisgKiBnZW5lcmF0ZV9ncm91cGVkX3BhdGhzCisgKgkJR2Vu ZXJhdGUgcGF0aHMgZm9yIGEgZ3JvdXBlZCByZWxhdGlvbiBieSBhZGRpbmcgc29ydGVkIGFuZCBo YXNoZWQKKyAqCQlwYXJ0aWFsIGFnZ3JlZ2F0aW9uIHBhdGhzIG9uIHRvcCBvZiBwYXRocyBvZiB0 aGUgdW5ncm91cGVkIGJhc2Ugb3Igam9pbgorICoJCXJlbGF0aW9uLgorICoKKyAqIFRoZSBpbmZv cm1hdGlvbiBuZWVkZWQgYXJlIHByb3ZpZGVkIGJ5IHRoZSBSZWxBZ2dJbmZvIHN0cnVjdHVyZS4K KyAqLwordm9pZAorZ2VuZXJhdGVfZ3JvdXBlZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqZ3JvdXBlZF9yZWwsCisJCQkJCSAgIFJlbE9wdEluZm8gKnJlbCwgUmVsQWdnSW5m byAqYWdnX2luZm8pCit7CisJQWdnQ2xhdXNlQ29zdHMgYWdnX2Nvc3RzOworCWJvb2wJCWNhbl9o YXNoOworCWJvb2wJCWNhbl9zb3J0OworCVBhdGgJICAgKmNoZWFwZXN0X3RvdGFsX3BhdGggPSBO VUxMOworCVBhdGgJICAgKmNoZWFwZXN0X3BhcnRpYWxfcGF0aCA9IE5VTEw7CisJZG91YmxlCQlk TnVtR3JvdXBzID0gMDsKKwlkb3VibGUJCWROdW1QYXJ0aWFsR3JvdXBzID0gMDsKKworCWlmIChJ U19EVU1NWV9SRUwocmVsKSkKKwl7CisJCW1hcmtfZHVtbXlfcmVsKGdyb3VwZWRfcmVsKTsKKwkJ cmV0dXJuOworCX0KKworCS8qCisJICogV2UgcHVzaCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIG9ubHkg dG8gdGhlIGxvd2VzdCBwb3NzaWJsZSBsZXZlbCBpbiB0aGUKKwkgKiBqb2luIHRyZWUgdGhhdCBp cyBkZWVtZWQgdXNlZnVsLgorCSAqLworCWlmICghYm1zX2VxdWFsKGFnZ19pbmZvLT5hcHBseV9h dCwgcmVsLT5yZWxpZHMpIHx8CisJCSFhZ2dfaW5mby0+YWdnX3VzZWZ1bCkKKwkJcmV0dXJuOwor CisJTWVtU2V0KCZhZ2dfY29zdHMsIDAsIHNpemVvZihBZ2dDbGF1c2VDb3N0cykpOworCWdldF9h Z2dfY2xhdXNlX2Nvc3RzKHJvb3QsIEFHR1NQTElUX0lOSVRJQUxfU0VSSUFMLCAmYWdnX2Nvc3Rz KTsKKworCS8qCisJICogRGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBwb3NzaWJsZSB0byBwZXJmb3Jt IHNvcnQtYmFzZWQgaW1wbGVtZW50YXRpb25zCisJICogb2YgZ3JvdXBpbmcuCisJICovCisJY2Fu X3NvcnQgPSBncm91cGluZ19pc19zb3J0YWJsZShhZ2dfaW5mby0+Z3JvdXBfY2xhdXNlcyk7CisK KwkvKgorCSAqIERldGVybWluZSB3aGV0aGVyIHdlIHNob3VsZCBjb25zaWRlciBoYXNoLWJhc2Vk IGltcGxlbWVudGF0aW9ucyBvZgorCSAqIGdyb3VwaW5nLgorCSAqLworCUFzc2VydChyb290LT5u dW1PcmRlcmVkQWdncyA9PSAwKTsKKwljYW5faGFzaCA9IChhZ2dfaW5mby0+Z3JvdXBfY2xhdXNl cyAhPSBOSUwgJiYKKwkJCQlncm91cGluZ19pc19oYXNoYWJsZShhZ2dfaW5mby0+Z3JvdXBfY2xh dXNlcykpOworCisJLyoKKwkgKiBDb25zaWRlciB3aGV0aGVyIHdlIHNob3VsZCBnZW5lcmF0ZSBw YXJ0aWFsbHkgYWdncmVnYXRlZCBub24tcGFydGlhbAorCSAqIHBhdGhzLiAgV2UgY2FuIG9ubHkg ZG8gdGhpcyBpZiB3ZSBoYXZlIGEgbm9uLXBhcnRpYWwgcGF0aC4KKwkgKi8KKwlpZiAocmVsLT5w YXRobGlzdCAhPSBOSUwpCisJeworCQljaGVhcGVzdF90b3RhbF9wYXRoID0gcmVsLT5jaGVhcGVz dF90b3RhbF9wYXRoOworCQlBc3NlcnQoY2hlYXBlc3RfdG90YWxfcGF0aCAhPSBOVUxMKTsKKwl9 CisKKwkvKgorCSAqIElmIHBhcmFsbGVsaXNtIGlzIHBvc3NpYmxlIGZvciBncm91cGVkX3JlbCwg dGhlbiB3ZSBzaG91bGQgY29uc2lkZXIKKwkgKiBnZW5lcmF0aW5nIHBhcnRpYWxseS1ncm91cGVk IHBhcnRpYWwgcGF0aHMuICBIb3dldmVyLCBpZiB0aGUgdW5ncm91cGVkCisJICogcmVsIGhhcyBu byBwYXJ0aWFsIHBhdGhzLCB0aGVuIHdlIGNhbid0LgorCSAqLworCWlmIChncm91cGVkX3JlbC0+ Y29uc2lkZXJfcGFyYWxsZWwgJiYgcmVsLT5wYXJ0aWFsX3BhdGhsaXN0ICE9IE5JTCkKKwl7CisJ CWNoZWFwZXN0X3BhcnRpYWxfcGF0aCA9IGxpbml0aWFsKHJlbC0+cGFydGlhbF9wYXRobGlzdCk7 CisJCUFzc2VydChjaGVhcGVzdF9wYXJ0aWFsX3BhdGggIT0gTlVMTCk7CisJfQorCisJLyogRXN0 aW1hdGUgbnVtYmVyIG9mIHBhcnRpYWwgZ3JvdXBzLiAqLworCWlmIChjaGVhcGVzdF90b3RhbF9w YXRoICE9IE5VTEwpCisJCWROdW1Hcm91cHMgPSBlc3RpbWF0ZV9udW1fZ3JvdXBzKHJvb3QsCisJ CQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9leHBycywKKwkJCQkJCQkJCQkgY2hlYXBlc3RfdG90 YWxfcGF0aC0+cm93cywKKwkJCQkJCQkJCQkgTlVMTCwgTlVMTCk7CisJaWYgKGNoZWFwZXN0X3Bh cnRpYWxfcGF0aCAhPSBOVUxMKQorCQlkTnVtUGFydGlhbEdyb3VwcyA9IGVzdGltYXRlX251bV9n cm91cHMocm9vdCwKKwkJCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91cF9leHBycywKKwkJCQkJCQkJ CQkJCWNoZWFwZXN0X3BhcnRpYWxfcGF0aC0+cm93cywKKwkJCQkJCQkJCQkJCU5VTEwsIE5VTEwp OworCisJaWYgKGNhbl9zb3J0ICYmIGNoZWFwZXN0X3RvdGFsX3BhdGggIT0gTlVMTCkKKwl7CisJ CUxpc3RDZWxsICAgKmxjOworCisJCS8qCisJCSAqIFVzZSBhbnkgYXZhaWxhYmxlIHN1aXRhYmx5 LXNvcnRlZCBwYXRoIGFzIGlucHV0LCBhbmQgYWxzbyBjb25zaWRlcgorCQkgKiBzb3J0aW5nIHRo ZSBjaGVhcGVzdC10b3RhbCBwYXRoIGFuZCBpbmNyZW1lbnRhbCBzb3J0IG9uIGFueSBwYXRocwor CQkgKiB3aXRoIHByZXNvcnRlZCBrZXlzLgorCQkgKgorCQkgKiBUbyBzYXZlIHBsYW5uaW5nIHRp bWUsIHdlIGlnbm9yZSBwYXJhbWV0ZXJpemVkIGlucHV0IHBhdGhzIHVubGVzcworCQkgKiB0aGV5 IGFyZSB0aGUgY2hlYXBlc3QtdG90YWwgcGF0aC4KKwkJICovCisJCWZvcmVhY2gobGMsIHJlbC0+ cGF0aGxpc3QpCisJCXsKKwkJCVBhdGgJICAgKmlucHV0X3BhdGggPSAoUGF0aCAqKSBsZmlyc3Qo bGMpOworCQkJUGF0aAkgICAqcGF0aDsKKwkJCWJvb2wJCWlzX3NvcnRlZDsKKwkJCWludAkJCXBy ZXNvcnRlZF9rZXlzOworCisJCQkvKgorCQkJICogSWdub3JlIHBhcmFtZXRlcml6ZWQgcGF0aHMg dGhhdCBhcmUgbm90IHRoZSBjaGVhcGVzdC10b3RhbAorCQkJICogcGF0aC4KKwkJCSAqLworCQkJ aWYgKGlucHV0X3BhdGgtPnBhcmFtX2luZm8gJiYKKwkJCQlpbnB1dF9wYXRoICE9IGNoZWFwZXN0 X3RvdGFsX3BhdGgpCisJCQkJY29udGludWU7CisKKwkJCWlzX3NvcnRlZCA9IHBhdGhrZXlzX2Nv dW50X2NvbnRhaW5lZF9pbihhZ2dfaW5mby0+Z3JvdXBfcGF0aGtleXMsCisJCQkJCQkJCQkJCQkJ aW5wdXRfcGF0aC0+cGF0aGtleXMsCisJCQkJCQkJCQkJCQkJJnByZXNvcnRlZF9rZXlzKTsKKwor CQkJLyoKKwkJCSAqIElnbm9yZSBwYXRocyB0aGF0IGFyZSBub3Qgc3VpdGFibHkgb3IgcGFydGlh bGx5IHNvcnRlZCwgdW5sZXNzCisJCQkgKiB0aGV5IGFyZSB0aGUgY2hlYXBlc3QgdG90YWwgcGF0 aCAobm8gbmVlZCB0byBkZWFsIHdpdGggcGF0aHMKKwkJCSAqIHdoaWNoIGhhdmUgcHJlc29ydGVk IGtleXMgd2hlbiBpbmNyZW1lbnRhbCBzb3J0IGlzIGRpc2FibGVkKS4KKwkJCSAqLworCQkJaWYg KCFpc19zb3J0ZWQgJiYgaW5wdXRfcGF0aCAhPSBjaGVhcGVzdF90b3RhbF9wYXRoICYmCisJCQkJ KHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0KSkKKwkJCQlj b250aW51ZTsKKworCQkJLyoKKwkJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdpbmF0ZXMgZnJvbSBh IG5vbi1ncm91cGVkIHJlbGF0aW9uIHRoYXQgaXMKKwkJCSAqIG5vdCBhd2FyZSBvZiBlYWdlciBh Z2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcworCQkJICogdGhlIGNv cnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCQkgKi8KKwkJCXBhdGggPSAo UGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkgICBncm91 cGVkX3JlbCwKKwkJCQkJCQkJCQkJCSAgIGlucHV0X3BhdGgsCisJCQkJCQkJCQkJCQkgICBhZ2df aW5mby0+YWdnX2lucHV0KTsKKworCQkJaWYgKCFpc19zb3J0ZWQpCisJCQl7CisJCQkJLyoKKwkJ CQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVyIGJvdGggYSBzb3J0IGFuZCBpbmNyZW1lbnRh bCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRoZXJlIGFyZSBubyBwcmVz b3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IHdoZW4gdGhlcmUgYXJl IHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJCWlmIChwcmVzb3J0ZWRfa2V5cyA9PSAwIHx8 ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKKwkJCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9z b3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkJ IHBhdGgsCisJCQkJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5cywKKwkJCQkJCQkJ CQkJCQkgLTEuMCk7CisJCQkJZWxzZQorCQkJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2luY3Jl bWVudGFsX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkJCSBncm91cGVkX3JlbCwKKwkJ CQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkJCQkgYWdnX2luZm8tPmdyb3VwX3Bh dGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywKKwkJCQkJCQkJCQkJCQkJ CQkgLTEuMCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBxdWFsIGlzIE5JTCBiZWNhdXNlIHRoZSBI QVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwKKwkJCSAqIHRoZSBmaW5hbCB2 YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkJICovCisJCQlwYXRoID0gKFBhdGgg KikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJCWdyb3VwZWRfcmVsLAorCQkJCQkJ CQkJCQlwYXRoLAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJCQkJCQkJCQlBR0df U09SVEVELAorCQkJCQkJCQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklBTCwKKwkJCQkJCQkJCQkJ YWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkJJmFn Z19jb3N0cywKKwkJCQkJCQkJCQkJZE51bUdyb3Vwcyk7CisKKwkJCWFkZF9wYXRoKGdyb3VwZWRf cmVsLCBwYXRoKTsKKwkJfQorCX0KKworCWlmIChjYW5fc29ydCAmJiBjaGVhcGVzdF9wYXJ0aWFs X3BhdGggIT0gTlVMTCkKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qIFNpbWlsYXIgdG8g YWJvdmUgbG9naWMsIGJ1dCBmb3IgcGFydGlhbCBwYXRocy4gKi8KKwkJZm9yZWFjaChsYywgcmVs LT5wYXJ0aWFsX3BhdGhsaXN0KQorCQl7CisJCQlQYXRoCSAgICppbnB1dF9wYXRoID0gKFBhdGgg KikgbGZpcnN0KGxjKTsKKwkJCVBhdGgJICAgKnBhdGg7CisJCQlib29sCQlpc19zb3J0ZWQ7CisJ CQlpbnQJCQlwcmVzb3J0ZWRfa2V5czsKKworCQkJaXNfc29ydGVkID0gcGF0aGtleXNfY291bnRf Y29udGFpbmVkX2luKGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQlpbnB1 dF9wYXRoLT5wYXRoa2V5cywKKwkJCQkJCQkJCQkJCQkmcHJlc29ydGVkX2tleXMpOworCisJCQkv KgorCQkJICogSWdub3JlIHBhdGhzIHRoYXQgYXJlIG5vdCBzdWl0YWJseSBvciBwYXJ0aWFsbHkg c29ydGVkLCB1bmxlc3MKKwkJCSAqIHRoZXkgYXJlIHRoZSBjaGVhcGVzdCBwYXJ0aWFsIHBhdGgg KG5vIG5lZWQgdG8gZGVhbCB3aXRoIHBhdGhzCisJCQkgKiB3aGljaCBoYXZlIHByZXNvcnRlZCBr ZXlzIHdoZW4gaW5jcmVtZW50YWwgc29ydCBpcyBkaXNhYmxlZCkuCisJCQkgKi8KKwkJCWlmICgh aXNfc29ydGVkICYmIGlucHV0X3BhdGggIT0gY2hlYXBlc3RfcGFydGlhbF9wYXRoICYmCisJCQkJ KHByZXNvcnRlZF9rZXlzID09IDAgfHwgIWVuYWJsZV9pbmNyZW1lbnRhbF9zb3J0KSkKKwkJCQlj b250aW51ZTsKKworCQkJLyoKKwkJCSAqIFNpbmNlIHRoZSBwYXRoIG9yaWdpbmF0ZXMgZnJvbSBh IG5vbi1ncm91cGVkIHJlbGF0aW9uIHRoYXQgaXMKKwkJCSAqIG5vdCBhd2FyZSBvZiBlYWdlciBh Z2dyZWdhdGlvbiwgd2UgbXVzdCBlbnN1cmUgdGhhdCBpdCBwcm92aWRlcworCQkJICogdGhlIGNv cnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCQkgKi8KKwkJCXBhdGggPSAo UGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkgICBncm91 cGVkX3JlbCwKKwkJCQkJCQkJCQkJCSAgIGlucHV0X3BhdGgsCisJCQkJCQkJCQkJCQkgICBhZ2df aW5mby0+YWdnX2lucHV0KTsKKworCQkJaWYgKCFpc19zb3J0ZWQpCisJCQl7CisJCQkJLyoKKwkJ CQkgKiBXZSd2ZSBubyBuZWVkIHRvIGNvbnNpZGVyIGJvdGggYSBzb3J0IGFuZCBpbmNyZW1lbnRh bCBzb3J0LgorCQkJCSAqIFdlJ2xsIGp1c3QgZG8gYSBzb3J0IGlmIHRoZXJlIGFyZSBubyBwcmVz b3J0ZWQga2V5cyBhbmQgYW4KKwkJCQkgKiBpbmNyZW1lbnRhbCBzb3J0IHdoZW4gdGhlcmUgYXJl IHByZXNvcnRlZCBrZXlzLgorCQkJCSAqLworCQkJCWlmIChwcmVzb3J0ZWRfa2V5cyA9PSAwIHx8 ICFlbmFibGVfaW5jcmVtZW50YWxfc29ydCkKKwkJCQkJcGF0aCA9IChQYXRoICopIGNyZWF0ZV9z b3J0X3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkJ IHBhdGgsCisJCQkJCQkJCQkJCQkJIGFnZ19pbmZvLT5ncm91cF9wYXRoa2V5cywKKwkJCQkJCQkJ CQkJCQkgLTEuMCk7CisJCQkJZWxzZQorCQkJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2luY3Jl bWVudGFsX3NvcnRfcGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkJCSBncm91cGVkX3JlbCwKKwkJ CQkJCQkJCQkJCQkJCQkgcGF0aCwKKwkJCQkJCQkJCQkJCQkJCQkgYWdnX2luZm8tPmdyb3VwX3Bh dGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSBwcmVzb3J0ZWRfa2V5cywKKwkJCQkJCQkJCQkJCQkJ CQkgLTEuMCk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBxdWFsIGlzIE5JTCBiZWNhdXNlIHRoZSBI QVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFsdWF0ZWQgdW50aWwKKwkJCSAqIHRoZSBmaW5hbCB2 YWx1ZSBvZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkJICovCisJCQlwYXRoID0gKFBhdGgg KikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJCQkJCQkJCWdyb3VwZWRfcmVsLAorCQkJCQkJ CQkJCQlwYXRoLAorCQkJCQkJCQkJCQlhZ2dfaW5mby0+dGFyZ2V0LAorCQkJCQkJCQkJCQlBR0df U09SVEVELAorCQkJCQkJCQkJCQlBR0dTUExJVF9JTklUSUFMX1NFUklBTCwKKwkJCQkJCQkJCQkJ YWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkJJmFn Z19jb3N0cywKKwkJCQkJCQkJCQkJZE51bVBhcnRpYWxHcm91cHMpOworCisJCQlhZGRfcGFydGlh bF9wYXRoKGdyb3VwZWRfcmVsLCBwYXRoKTsKKwkJfQorCX0KKworCS8qCisJICogQWRkIGEgcGFy dGlhbGx5LWdyb3VwZWQgSGFzaEFnZyBQYXRoIHdoZXJlIHBvc3NpYmxlCisJICovCisJaWYgKGNh bl9oYXNoICYmIGNoZWFwZXN0X3RvdGFsX3BhdGggIT0gTlVMTCkKKwl7CisJCVBhdGgJICAgKnBh dGg7CisKKwkJLyoKKwkJICogU2luY2UgdGhlIHBhdGggb3JpZ2luYXRlcyBmcm9tIGEgbm9uLWdy b3VwZWQgcmVsYXRpb24gdGhhdCBpcyBub3QKKwkJICogYXdhcmUgb2YgZWFnZXIgYWdncmVnYXRp b24sIHdlIG11c3QgZW5zdXJlIHRoYXQgaXQgcHJvdmlkZXMgdGhlCisJCSAqIGNvcnJlY3QgaW5w dXQgZm9yIHBhcnRpYWwgYWdncmVnYXRpb24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikgY3Jl YXRlX3Byb2plY3Rpb25fcGF0aChyb290LAorCQkJCQkJCQkJCQkgICBncm91cGVkX3JlbCwKKwkJ CQkJCQkJCQkJICAgY2hlYXBlc3RfdG90YWxfcGF0aCwKKwkJCQkJCQkJCQkJICAgYWdnX2luZm8t PmFnZ19pbnB1dCk7CisKKwkJLyoKKwkJICogcXVhbCBpcyBOSUwgYmVjYXVzZSB0aGUgSEFWSU5H IGNsYXVzZSBjYW5ub3QgYmUgZXZhbHVhdGVkIHVudGlsIHRoZQorCQkgKiBmaW5hbCB2YWx1ZSBv ZiB0aGUgYWdncmVnYXRlIGlzIGtub3duLgorCQkgKi8KKwkJcGF0aCA9IChQYXRoICopIGNyZWF0 ZV9hZ2dfcGF0aChyb290LAorCQkJCQkJCQkJCWdyb3VwZWRfcmVsLAorCQkJCQkJCQkJCXBhdGgs CisJCQkJCQkJCQkJYWdnX2luZm8tPnRhcmdldCwKKwkJCQkJCQkJCQlBR0dfSEFTSEVELAorCQkJ CQkJCQkJCUFHR1NQTElUX0lOSVRJQUxfU0VSSUFMLAorCQkJCQkJCQkJCWFnZ19pbmZvLT5ncm91 cF9jbGF1c2VzLAorCQkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCQkmYWdnX2Nvc3RzLAorCQkJCQkJ CQkJCWROdW1Hcm91cHMpOworCisJCWFkZF9wYXRoKGdyb3VwZWRfcmVsLCBwYXRoKTsKKwl9CisK KwkvKgorCSAqIE5vdyBhZGQgYSBwYXJ0aWFsbHktZ3JvdXBlZCBIYXNoQWdnIHBhcnRpYWwgUGF0 aCB3aGVyZSBwb3NzaWJsZQorCSAqLworCWlmIChjYW5faGFzaCAmJiBjaGVhcGVzdF9wYXJ0aWFs X3BhdGggIT0gTlVMTCkKKwl7CisJCVBhdGgJICAgKnBhdGg7CisKKwkJLyoKKwkJICogU2luY2Ug dGhlIHBhdGggb3JpZ2luYXRlcyBmcm9tIGEgbm9uLWdyb3VwZWQgcmVsYXRpb24gdGhhdCBpcyBu b3QKKwkJICogYXdhcmUgb2YgZWFnZXIgYWdncmVnYXRpb24sIHdlIG11c3QgZW5zdXJlIHRoYXQg aXQgcHJvdmlkZXMgdGhlCisJCSAqIGNvcnJlY3QgaW5wdXQgZm9yIHBhcnRpYWwgYWdncmVnYXRp b24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25fcGF0aChyb290 LAorCQkJCQkJCQkJCQkgICBncm91cGVkX3JlbCwKKwkJCQkJCQkJCQkJICAgY2hlYXBlc3RfcGFy dGlhbF9wYXRoLAorCQkJCQkJCQkJCQkgICBhZ2dfaW5mby0+YWdnX2lucHV0KTsKKworCQkvKgor CQkgKiBxdWFsIGlzIE5JTCBiZWNhdXNlIHRoZSBIQVZJTkcgY2xhdXNlIGNhbm5vdCBiZSBldmFs dWF0ZWQgdW50aWwgdGhlCisJCSAqIGZpbmFsIHZhbHVlIG9mIHRoZSBhZ2dyZWdhdGUgaXMga25v d24uCisJCSAqLworCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCisJCQkJ CQkJCQkJZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJcGF0aCwKKwkJCQkJCQkJCQlhZ2dfaW5mby0+ dGFyZ2V0LAorCQkJCQkJCQkJCUFHR19IQVNIRUQsCisJCQkJCQkJCQkJQUdHU1BMSVRfSU5JVElB TF9TRVJJQUwsCisJCQkJCQkJCQkJYWdnX2luZm8tPmdyb3VwX2NsYXVzZXMsCisJCQkJCQkJCQkJ TklMLAorCQkJCQkJCQkJCSZhZ2dfY29zdHMsCisJCQkJCQkJCQkJZE51bVBhcnRpYWxHcm91cHMp OworCisJCWFkZF9wYXJ0aWFsX3BhdGgoZ3JvdXBlZF9yZWwsIHBhdGgpOworCX0KK30KKwogLyoK ICAqIG1ha2VfcmVsX2Zyb21fam9pbmxpc3QKICAqCSAgQnVpbGQgYWNjZXNzIHBhdGhzIHVzaW5n IGEgImpvaW5saXN0IiB0byBndWlkZSB0aGUgam9pbiBwYXRoIHNlYXJjaC4KQEAgLTM0OTQsNiAr Mzg5OSwxMCBAQCBzdGFuZGFyZF9qb2luX3NlYXJjaChQbGFubmVySW5mbyAqcm9vdCwgaW50IGxl dmVsc19uZWVkZWQsIExpc3QgKmluaXRpYWxfcmVscykKIAkJICoKIAkJICogQWZ0ZXIgdGhhdCwg d2UncmUgZG9uZSBjcmVhdGluZyBwYXRocyBmb3IgdGhlIGpvaW5yZWwsIHNvIHJ1bgogCQkgKiBz ZXRfY2hlYXBlc3QoKS4KKwkJICoKKwkJICogSW4gYWRkaXRpb24sIHdlIGFsc28gcnVuIGdlbmVy YXRlX2dyb3VwZWRfcGF0aHMoKSBmb3IgdGhlIGdyb3VwZWQKKwkJICogcmVsYXRpb24gb2YgZWFj aCBqdXN0LXByb2Nlc3NlZCBqb2lucmVsLCBhbmQgcnVuIHNldF9jaGVhcGVzdCgpIGZvcgorCQkg KiB0aGUgZ3JvdXBlZCByZWxhdGlvbiBhZnRlcndhcmRzLgogCQkgKi8KIAkJZm9yZWFjaChsYywg cm9vdC0+am9pbl9yZWxfbGV2ZWxbbGV2XSkKIAkJewpAQCAtMzUxNCw2ICszOTIzLDI3IEBAIHN0 YW5kYXJkX2pvaW5fc2VhcmNoKFBsYW5uZXJJbmZvICpyb290LCBpbnQgbGV2ZWxzX25lZWRlZCwg TGlzdCAqaW5pdGlhbF9yZWxzKQogCQkJLyogRmluZCBhbmQgc2F2ZSB0aGUgY2hlYXBlc3QgcGF0 aHMgZm9yIHRoaXMgcmVsICovCiAJCQlzZXRfY2hlYXBlc3QocmVsKTsKIAorCQkJLyoKKwkJCSAq IEV4Y2VwdCBmb3IgdGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwgY29uc2lkZXIgZ2VuZXJhdGlu ZworCQkJICogcGFydGlhbCBhZ2dyZWdhdGlvbiBwYXRocyBmb3IgdGhlIGdyb3VwZWQgcmVsYXRp b24gb24gdG9wIG9mCisJCQkgKiB0aGUgcGF0aHMgb2YgdGhpcyByZWwuICBBZnRlciB0aGF0LCB3 ZSdyZSBkb25lIGNyZWF0aW5nIHBhdGhzCisJCQkgKiBmb3IgdGhlIGdyb3VwZWQgcmVsYXRpb24s IHNvIHJ1biBzZXRfY2hlYXBlc3QoKS4KKwkJCSAqLworCQkJaWYgKCFibXNfZXF1YWwocmVsLT5y ZWxpZHMsIHJvb3QtPmFsbF9xdWVyeV9yZWxzKSkKKwkJCXsKKwkJCQlSZWxPcHRJbmZvICpncm91 cGVkX3JlbDsKKworCQkJCWdyb3VwZWRfcmVsID0gcmVsLT5ncm91cGVkX3JlbDsKKwkJCQlpZiAo Z3JvdXBlZF9yZWwpCisJCQkJeworCQkJCQlBc3NlcnQoSVNfR1JPVVBFRF9SRUwoZ3JvdXBlZF9y ZWwpKTsKKworCQkJCQlnZW5lcmF0ZV9ncm91cGVkX3BhdGhzKHJvb3QsIGdyb3VwZWRfcmVsLCBy ZWwsCisJCQkJCQkJCQkJICAgZ3JvdXBlZF9yZWwtPmFnZ19pbmZvKTsKKwkJCQkJc2V0X2NoZWFw ZXN0KGdyb3VwZWRfcmVsKTsKKwkJCQl9CisJCQl9CisKICNpZmRlZiBPUFRJTUlaRVJfREVCVUcK IAkJCXBwcmludChyZWwpOwogI2VuZGlmCkBAIC00MzgzLDYgKzQ4MTMsMjkgQEAgZ2VuZXJhdGVf cGFydGl0aW9ud2lzZV9qb2luX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpy ZWwpCiAJCWlmIChJU19EVU1NWV9SRUwoY2hpbGRfcmVsKSkKIAkJCWNvbnRpbnVlOwogCisJCS8q CisJCSAqIEV4Y2VwdCBmb3IgdGhlIHRvcG1vc3Qgc2Nhbi9qb2luIHJlbCwgY29uc2lkZXIgZ2Vu ZXJhdGluZyBwYXJ0aWFsCisJCSAqIGFnZ3JlZ2F0aW9uIHBhdGhzIGZvciB0aGUgZ3JvdXBlZCBy ZWxhdGlvbiBvbiB0b3Agb2YgdGhlIHBhdGhzIG9mCisJCSAqIHRoaXMgcGFydGl0aW9uZWQgY2hp bGQtam9pbi4gIEFmdGVyIHRoYXQsIHdlJ3JlIGRvbmUgY3JlYXRpbmcgcGF0aHMKKwkJICogZm9y IHRoZSBncm91cGVkIHJlbGF0aW9uLCBzbyBydW4gc2V0X2NoZWFwZXN0KCkuCisJCSAqLworCQlp ZiAoIWJtc19lcXVhbChJU19PVEhFUl9SRUwocmVsKSA/CisJCQkJCSAgIHJlbC0+dG9wX3BhcmVu dF9yZWxpZHMgOiByZWwtPnJlbGlkcywKKwkJCQkJICAgcm9vdC0+YWxsX3F1ZXJ5X3JlbHMpKQor CQl7CisJCQlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKworCQkJZ3JvdXBlZF9yZWwgPSBjaGls ZF9yZWwtPmdyb3VwZWRfcmVsOworCQkJaWYgKGdyb3VwZWRfcmVsKQorCQkJeworCQkJCUFzc2Vy dChJU19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCQkJZ2VuZXJhdGVfZ3JvdXBlZF9w YXRocyhyb290LCBncm91cGVkX3JlbCwgY2hpbGRfcmVsLAorCQkJCQkJCQkJICAgZ3JvdXBlZF9y ZWwtPmFnZ19pbmZvKTsKKwkJCQlzZXRfY2hlYXBlc3QoZ3JvdXBlZF9yZWwpOworCQkJfQorCQl9 CisKICNpZmRlZiBPUFRJTUlaRVJfREVCVUcKIAkJcHByaW50KGNoaWxkX3JlbCk7CiAjZW5kaWYK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jCmluZGV4IDUzNTI0OGFhNTI1Li4wNGNi YmNlYTJhNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucmVscy5jCkBAIC0xNiw2ICsx Niw3IEBACiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvYXBw ZW5kaW5mby5oIgorI2luY2x1ZGUgIm9wdGltaXplci9jb3N0LmgiCiAjaW5jbHVkZSAib3B0aW1p emVyL2pvaW5pbmZvLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BhdGhub2RlLmgiCiAjaW5jbHVk ZSAib3B0aW1pemVyL3BhdGhzLmgiCkBAIC0zNiw2ICszNyw5IEBAIHN0YXRpYyBib29sIGhhc19s ZWdhbF9qb2luY2xhdXNlKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpOwogc3Rh dGljIGJvb2wgcmVzdHJpY3Rpb25faXNfY29uc3RhbnRfZmFsc2UoTGlzdCAqcmVzdHJpY3RsaXN0 LAogCQkJCQkJCQkJCSAgUmVsT3B0SW5mbyAqam9pbnJlbCwKIAkJCQkJCQkJCQkgIGJvb2wgb25s eV9wdXNoZWRfZG93bik7CitzdGF0aWMgdm9pZCBtYWtlX2dyb3VwZWRfam9pbl9yZWwoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsCisJCQkJCQkJCSAgUmVsT3B0SW5mbyAqcmVs MiwgUmVsT3B0SW5mbyAqam9pbnJlbCwKKwkJCQkJCQkJICBTcGVjaWFsSm9pbkluZm8gKnNqaW5m bywgTGlzdCAqcmVzdHJpY3RsaXN0KTsKIHN0YXRpYyB2b2lkIHBvcHVsYXRlX2pvaW5yZWxfd2l0 aF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwKIAkJCQkJCQkJCQlS ZWxPcHRJbmZvICpyZWwyLCBSZWxPcHRJbmZvICpqb2lucmVsLAogCQkJCQkJCQkJCVNwZWNpYWxK b2luSW5mbyAqc2ppbmZvLCBMaXN0ICpyZXN0cmljdGxpc3QpOwpAQCAtNzYyLDYgKzc2NiwxMCBA QCBtYWtlX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwxLCBSZWxP cHRJbmZvICpyZWwyKQogCQlyZXR1cm4gam9pbnJlbDsKIAl9CiAKKwkvKiBCdWlsZCBhIGdyb3Vw ZWQgam9pbiByZWxhdGlvbiBmb3IgJ2pvaW5yZWwnIGlmIHBvc3NpYmxlLiAqLworCW1ha2VfZ3Jv dXBlZF9qb2luX3JlbChyb290LCByZWwxLCByZWwyLCBqb2lucmVsLCBzamluZm8sCisJCQkJCQkg IHJlc3RyaWN0bGlzdCk7CisKIAkvKiBBZGQgcGF0aHMgdG8gdGhlIGpvaW4gcmVsYXRpb24uICov CiAJcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKHJvb3QsIHJlbDEsIHJlbDIsIGpvaW5yZWws IHNqaW5mbywKIAkJCQkJCQkJcmVzdHJpY3RsaXN0KTsKQEAgLTg3Myw2ICs4ODEsMTg2IEBAIGFk ZF9vdXRlcl9qb2luc190b19yZWxpZHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbGlkcyBpbnB1dF9y ZWxpZHMsCiAJcmV0dXJuIGlucHV0X3JlbGlkczsKIH0KIAorLyoKKyAqIG1ha2VfZ3JvdXBlZF9q b2luX3JlbAorICoJICBCdWlsZCBhIGdyb3VwZWQgam9pbiByZWxhdGlvbiBmb3IgdGhlIGdpdmVu ICJqb2lucmVsIiBpZiBlYWdlcgorICoJICBhZ2dyZWdhdGlvbiBpcyBhcHBsaWNhYmxlIGFuZCB0 aGUgcmVzdWx0aW5nIGdyb3VwZWQgcGF0aHMgYXJlIGNvbnNpZGVyZWQKKyAqCSAgdXNlZnVsLgor ICoKKyAqIFRoZXJlIGFyZSB0d28gc3RyYXRlZ2llcyBmb3IgZ2VuZXJhdGluZyBncm91cGVkIHBh dGhzIGZvciBhIGpvaW4gcmVsYXRpb246CisgKgorICogMS4gSm9pbiBhIGdyb3VwZWQgKHBhcnRp YWxseSBhZ2dyZWdhdGVkKSBpbnB1dCByZWxhdGlvbiB3aXRoIGEgbm9uLWdyb3VwZWQKKyAqIGlu cHV0IChlLmcuLCBBR0coQikgSk9JTiBBKS4KKyAqCisgKiAyLiBBcHBseSBwYXJ0aWFsIGFnZ3Jl Z2F0aW9uIChzb3J0ZWQgb3IgaGFzaGVkKSBvbiB0b3Agb2YgZXhpc3RpbmcKKyAqIG5vbi1ncm91 cGVkIGpvaW4gcGF0aHMgKGUuZy4sIEFHRyhBIEpPSU4gQikpLgorICoKKyAqIFRvIGxpbWl0IHBs YW5uaW5nIGVmZm9ydCBhbmQgYXZvaWQgYW4gZXhwbG9zaW9uIG9mIGFsdGVybmF0aXZlcywgd2Ug YWRvcHQgYQorICogc3RyYXRlZ3kgd2hlcmUgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBvbmx5IHB1 c2hlZCB0byB0aGUgbG93ZXN0IHBvc3NpYmxlCisgKiBsZXZlbCBpbiB0aGUgam9pbiB0cmVlIHRo YXQgaXMgZGVlbWVkIHVzZWZ1bC4gIFRoYXQgaXMsIGlmIGdyb3VwZWQgcGF0aHMgY2FuCisgKiBi ZSBidWlsdCB1c2luZyB0aGUgZmlyc3Qgc3RyYXRlZ3ksIHdlIHNraXAgY29uc2lkZXJhdGlvbiBv ZiB0aGUgc2Vjb25kCisgKiBzdHJhdGVneSBmb3IgdGhlIHNhbWUgam9pbiBsZXZlbC4KKyAqCisg KiBBZGRpdGlvbmFsbHksIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBsb3dlc3QgdXNlZnVsIGxldmVs cyB3aGVyZSBwYXJ0aWFsCisgKiBhZ2dyZWdhdGlvbiBjb3VsZCBiZSBhcHBsaWVkLCBzdWNoIGFz IGluIGEgam9pbiB0cmVlIHdpdGggcmVsYXRpb25zIEEsIEIsCisgKiBhbmQgQyB3aGVyZSBib3Ro ICJBR0coQSBKT0lOIEIpIEpPSU4gQyIgYW5kICJBIEpPSU4gQUdHKEIgSk9JTiBDKSIgYXJlIHZh bGlkCisgKiBwbGFjZW1lbnRzLCB3ZSBjaG9vc2Ugb25seSB0aGUgZmlyc3Qgb25lIGVuY291bnRl cmVkIGR1cmluZyBqb2luIHNlYXJjaC4KKyAqIFRoaXMgYXZvaWRzIGdlbmVyYXRpbmcgbXVsdGlw bGUgdmVyc2lvbnMgb2YgdGhlIHNhbWUgZ3JvdXBlZCByZWxhdGlvbiBiYXNlZAorICogb24gZGlm ZmVyZW50IGFnZ3JlZ2F0aW9uIHBsYWNlbWVudHMuCisgKgorICogVGhlc2UgaGV1cmlzdGljcyBh bHNvIGVuc3VyZSB0aGF0IGFsbCBncm91cGVkIHBhdGhzIGZvciB0aGUgc2FtZSBncm91cGVkCisg KiByZWxhdGlvbiBwcm9kdWNlIHRoZSBzYW1lIHNldCBvZiByb3dzLCB3aGljaCBpcyBhIGJhc2lj IGFzc3VtcHRpb24gaW4gdGhlCisgKiBwbGFubmVyLgorICovCitzdGF0aWMgdm9pZAorbWFrZV9n cm91cGVkX2pvaW5fcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwxLAorCQkJ CQkgIFJlbE9wdEluZm8gKnJlbDIsIFJlbE9wdEluZm8gKmpvaW5yZWwsCisJCQkJCSAgU3BlY2lh bEpvaW5JbmZvICpzamluZm8sIExpc3QgKnJlc3RyaWN0bGlzdCkKK3sKKwlSZWxPcHRJbmZvICpn cm91cGVkX3JlbDsKKwlSZWxPcHRJbmZvICpncm91cGVkX3JlbDE7CisJUmVsT3B0SW5mbyAqZ3Jv dXBlZF9yZWwyOworCWJvb2wJCXJlbDFfZW1wdHk7CisJYm9vbAkJcmVsMl9lbXB0eTsKKwlSZWxp ZHMJCWFnZ19hcHBseV9hdDsKKworCS8qCisJICogSWYgdGhlcmUgYXJlIG5vIGFnZ3JlZ2F0ZSBl eHByZXNzaW9ucyBvciBncm91cGluZyBleHByZXNzaW9ucywgZWFnZXIKKwkgKiBhZ2dyZWdhdGlv biBpcyBub3QgcG9zc2libGUuCisJICovCisJaWYgKHJvb3QtPmFnZ19jbGF1c2VfbGlzdCA9PSBO SUwgfHwKKwkJcm9vdC0+Z3JvdXBfZXhwcl9saXN0ID09IE5JTCkKKwkJcmV0dXJuOworCisJLyog UmV0cmlldmUgdGhlIGdyb3VwZWQgcmVsYXRpb25zIGZvciB0aGUgdHdvIGlucHV0IHJlbHMgKi8K Kwlncm91cGVkX3JlbDEgPSByZWwxLT5ncm91cGVkX3JlbDsKKwlncm91cGVkX3JlbDIgPSByZWwy LT5ncm91cGVkX3JlbDsKKworCXJlbDFfZW1wdHkgPSAoZ3JvdXBlZF9yZWwxID09IE5VTEwgfHwg SVNfRFVNTVlfUkVMKGdyb3VwZWRfcmVsMSkpOworCXJlbDJfZW1wdHkgPSAoZ3JvdXBlZF9yZWwy ID09IE5VTEwgfHwgSVNfRFVNTVlfUkVMKGdyb3VwZWRfcmVsMikpOworCisJLyogRmluZCBvciBj b25zdHJ1Y3QgYSBncm91cGVkIGpvaW5yZWwgZm9yIHRoaXMgam9pbnJlbCAqLworCWdyb3VwZWRf cmVsID0gam9pbnJlbC0+Z3JvdXBlZF9yZWw7CisJaWYgKGdyb3VwZWRfcmVsID09IE5VTEwpCisJ eworCQlSZWxBZ2dJbmZvICphZ2dfaW5mbyA9IE5VTEw7CisKKwkJLyoKKwkJICogUHJlcGFyZSB0 aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGNyZWF0ZSBncm91cGVkIHBhdGhzIGZvciB0aGlzCisJ CSAqIGpvaW4gcmVsYXRpb24uCisJCSAqLworCQlhZ2dfaW5mbyA9IGNyZWF0ZV9yZWxfYWdnX2lu Zm8ocm9vdCwgam9pbnJlbCk7CisJCWlmIChhZ2dfaW5mbyA9PSBOVUxMKQorCQkJcmV0dXJuOwor CisJCS8qCisJCSAqIElmIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiBqb2luIHJlbGF0aW9u IGFyZSBub3QgY29uc2lkZXJlZAorCQkgKiB1c2VmdWwsIGFuZCBubyBncm91cGVkIHBhdGhzIGNh biBiZSBidWlsdCBieSBqb2luaW5nIGdyb3VwZWQgaW5wdXQKKwkJICogcmVsYXRpb25zLCBza2lw IGJ1aWxkaW5nIHRoZSBncm91cGVkIGpvaW4gcmVsYXRpb24uCisJCSAqLworCQlpZiAoIWFnZ19p bmZvLT5hZ2dfdXNlZnVsICYmCisJCQkocmVsMV9lbXB0eSA9PSByZWwyX2VtcHR5KSkKKwkJCXJl dHVybjsKKworCQkvKiBidWlsZCB0aGUgZ3JvdXBlZCByZWxhdGlvbiAqLworCQlncm91cGVkX3Jl bCA9IGJ1aWxkX2dyb3VwZWRfcmVsKHJvb3QsIGpvaW5yZWwpOworCQlncm91cGVkX3JlbC0+cmVs dGFyZ2V0ID0gYWdnX2luZm8tPnRhcmdldDsKKworCQlpZiAocmVsMV9lbXB0eSAhPSByZWwyX2Vt cHR5KQorCQl7CisJCQkvKgorCQkJICogSWYgdGhlcmUgaXMgZXhhY3RseSBvbmUgZ3JvdXBlZCBp bnB1dCByZWxhdGlvbiwgdGhlbiB3ZSBjYW4KKwkJCSAqIGJ1aWxkIGdyb3VwZWQgcGF0aHMgYnkg am9pbmluZyB0aGUgaW5wdXQgcmVsYXRpb25zLiAgU2V0IHNpemUKKwkJCSAqIGVzdGltYXRlcyBm b3IgdGhlIGdyb3VwZWQgam9pbiByZWxhdGlvbiBiYXNlZCBvbiB0aGUgaW5wdXQKKwkJCSAqIHJl bGF0aW9ucywgYW5kIHVwZGF0ZSB0aGUgbG93ZXN0IGpvaW4gbGV2ZWwgd2hlcmUgcGFydGlhbAor CQkJICogYWdncmVnYXRpb24gaXMgYXBwbGllZCB0byB0aGF0IG9mIHRoZSBncm91cGVkIGlucHV0 IHJlbGF0aW9uLgorCQkJICovCisJCQlzZXRfam9pbnJlbF9zaXplX2VzdGltYXRlcyhyb290LCBn cm91cGVkX3JlbCwKKwkJCQkJCQkJCSAgIHJlbDFfZW1wdHkgPyByZWwxIDogZ3JvdXBlZF9yZWwx LAorCQkJCQkJCQkJICAgcmVsMl9lbXB0eSA/IHJlbDIgOiBncm91cGVkX3JlbDIsCisJCQkJCQkJ CQkgICBzamluZm8sIHJlc3RyaWN0bGlzdCk7CisJCQlhZ2dfaW5mby0+YXBwbHlfYXQgPSByZWwx X2VtcHR5ID8KKwkJCQlncm91cGVkX3JlbDItPmFnZ19pbmZvLT5hcHBseV9hdCA6CisJCQkJZ3Jv dXBlZF9yZWwxLT5hZ2dfaW5mby0+YXBwbHlfYXQ7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgor CQkJICogT3RoZXJ3aXNlLCBncm91cGVkIHBhdGhzIGNhbiBiZSBidWlsdCBieSBhcHBseWluZyBw YXJ0aWFsCisJCQkgKiBhZ2dyZWdhdGlvbiBvbiB0b3Agb2YgZXhpc3Rpbmcgbm9uLWdyb3VwZWQg am9pbiBwYXRocy4gIFNldAorCQkJICogc2l6ZSBlc3RpbWF0ZXMgZm9yIHRoZSBncm91cGVkIGpv aW4gcmVsYXRpb24gYmFzZWQgb24gdGhlCisJCQkgKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIGdyb3Vw cywgYW5kIHRyYWNrIHRoZSBsb3dlc3Qgam9pbiBsZXZlbAorCQkJICogd2hlcmUgcGFydGlhbCBh Z2dyZWdhdGlvbiBpcyBhcHBsaWVkLiAgTm90ZSB0aGF0IHRoZXNlIHZhbHVlcworCQkJICogbWF5 IGJlIHVwZGF0ZWQgbGF0ZXIgaWYgaXQgaXMgZGV0ZXJtaW5lZCB0aGF0IGdyb3VwZWQgcGF0aHMg Y2FuCisJCQkgKiBiZSBjb25zdHJ1Y3RlZCBieSBqb2luaW5nIG90aGVyIGlucHV0IHJlbGF0aW9u cy4KKwkJCSAqLworCQkJZ3JvdXBlZF9yZWwtPnJvd3MgPSBhZ2dfaW5mby0+Z3JvdXBlZF9yb3dz OworCQkJYWdnX2luZm8tPmFwcGx5X2F0ID0gYm1zX2NvcHkoam9pbnJlbC0+cmVsaWRzKTsKKwkJ fQorCisJCWdyb3VwZWRfcmVsLT5hZ2dfaW5mbyA9IGFnZ19pbmZvOworCQlqb2lucmVsLT5ncm91 cGVkX3JlbCA9IGdyb3VwZWRfcmVsOworCX0KKworCUFzc2VydChJU19HUk9VUEVEX1JFTChncm91 cGVkX3JlbCkpOworCisJLyogV2UgbWF5IGhhdmUgYWxyZWFkeSBwcm92ZW4gdGhpcyBncm91cGVk IGpvaW4gcmVsYXRpb24gdG8gYmUgZHVtbXkuICovCisJaWYgKElTX0RVTU1ZX1JFTChncm91cGVk X3JlbCkpCisJCXJldHVybjsKKworCS8qCisJICogTm90aGluZyB0byBkbyBpZiB0aGVyZSdzIG5v IGdyb3VwZWQgaW5wdXQgcmVsYXRpb24uICBBbHNvLCBqb2luaW5nIHR3bworCSAqIGdyb3VwZWQg cmVsYXRpb25zIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLgorCSAqLworCWlmIChyZWwxX2Vt cHR5ID09IHJlbDJfZW1wdHkpCisJCXJldHVybjsKKworCS8qCisJICogR2V0IHRoZSBsb3dlc3Qg am9pbiBsZXZlbCB3aGVyZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIGFwcGxpZWQgYW1vbmcKKwkg KiB0aGUgZ2l2ZW4gaW5wdXQgcmVsYXRpb25zLgorCSAqLworCWFnZ19hcHBseV9hdCA9IHJlbDFf ZW1wdHkgPworCQlncm91cGVkX3JlbDItPmFnZ19pbmZvLT5hcHBseV9hdCA6CisJCWdyb3VwZWRf cmVsMS0+YWdnX2luZm8tPmFwcGx5X2F0OworCisJLyoKKwkgKiBJZiBpdCdzIG5vdCB0aGUgZGVz aWduYXRlZCBsZXZlbCwgc2tpcCBidWlsZGluZyBncm91cGVkIHBhdGhzLgorCSAqCisJICogT25l IGV4Y2VwdGlvbiBpcyB3aGVuIGl0IGlzIGEgc3Vic2V0IG9mIHRoZSBwcmV2aW91c2x5IHJlY29y ZGVkIGxldmVsLgorCSAqIEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGRlc2ln bmF0ZWQgbGV2ZWwgdG8gdGhpcyBvbmUsIGFuZAorCSAqIGFkanVzdCB0aGUgc2l6ZSBlc3RpbWF0 ZXMgZm9yIHRoZSBncm91cGVkIGpvaW4gcmVsYXRpb24gYWNjb3JkaW5nbHkuCisJICogRm9yIGV4 YW1wbGUsIHN1cHBvc2UgcGFydGlhbCBhZ2dyZWdhdGlvbiBjYW4gYmUgYXBwbGllZCBvbiB0b3Ag b2YgKEIKKwkgKiBKT0lOIEMpLiAgSWYgd2UgZmlyc3QgY29uc3RydWN0IHRoZSBqb2luIGFzICgo QSBKT0lOIEIpIEpPSU4gQyksIHdlJ2QKKwkgKiByZWNvcmQgdGhlIGRlc2lnbmF0ZWQgbGV2ZWwg YXMgaW5jbHVkaW5nIGFsbCB0aHJlZSByZWxhdGlvbnMgKEEgQiBDKS4KKwkgKiBMYXRlciwgd2hl biB3ZSBjb25zaWRlciAoQSBKT0lOIChCIEpPSU4gQykpLCB3ZSBlbmNvdW50ZXIgdGhlIHNtYWxs ZXIKKwkgKiAoQiBDKSBqb2luIGxldmVsIGRpcmVjdGx5LiAgU2luY2UgdGhpcyBpcyBhIHN1YnNl dCBvZiB0aGUgcHJldmlvdXMKKwkgKiBsZXZlbCBhbmQgc3RpbGwgdmFsaWQgZm9yIHBhcnRpYWwg YWdncmVnYXRpb24sIHdlIHVwZGF0ZSB0aGUgZGVzaWduYXRlZAorCSAqIGxldmVsIHRvIChCIEMp LCBhbmQgYWRqdXN0IHRoZSBzaXplIGVzdGltYXRlcyBhY2NvcmRpbmdseS4KKwkgKi8KKwlpZiAo IWJtc19lcXVhbChhZ2dfYXBwbHlfYXQsIGdyb3VwZWRfcmVsLT5hZ2dfaW5mby0+YXBwbHlfYXQp KQorCXsKKwkJaWYgKGJtc19pc19zdWJzZXQoYWdnX2FwcGx5X2F0LCBncm91cGVkX3JlbC0+YWdn X2luZm8tPmFwcGx5X2F0KSkKKwkJeworCQkJLyogQWRqdXN0IHRoZSBzaXplIGVzdGltYXRlcyBm b3IgdGhlIGdyb3VwZWQgam9pbiByZWxhdGlvbi4gKi8KKwkJCXNldF9qb2lucmVsX3NpemVfZXN0 aW1hdGVzKHJvb3QsIGdyb3VwZWRfcmVsLAorCQkJCQkJCQkJICAgcmVsMV9lbXB0eSA/IHJlbDEg OiBncm91cGVkX3JlbDEsCisJCQkJCQkJCQkgICByZWwyX2VtcHR5ID8gcmVsMiA6IGdyb3VwZWRf cmVsMiwKKwkJCQkJCQkJCSAgIHNqaW5mbywgcmVzdHJpY3RsaXN0KTsKKwkJCWdyb3VwZWRfcmVs LT5hZ2dfaW5mby0+YXBwbHlfYXQgPSBhZ2dfYXBwbHlfYXQ7CisJCX0KKwkJZWxzZQorCQkJcmV0 dXJuOworCX0KKworCS8qIE1ha2UgcGF0aHMgZm9yIHRoZSBncm91cGVkIGpvaW4gcmVsYXRpb24u ICovCisJcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhzKHJvb3QsCisJCQkJCQkJCXJlbDFfZW1w dHkgPyByZWwxIDogZ3JvdXBlZF9yZWwxLAorCQkJCQkJCQlyZWwyX2VtcHR5ID8gcmVsMiA6IGdy b3VwZWRfcmVsMiwKKwkJCQkJCQkJZ3JvdXBlZF9yZWwsCisJCQkJCQkJCXNqaW5mbywKKwkJCQkJ CQkJcmVzdHJpY3RsaXN0KTsKK30KKwogLyoKICAqIHBvcHVsYXRlX2pvaW5yZWxfd2l0aF9wYXRo cwogICoJICBBZGQgcGF0aHMgdG8gdGhlIGdpdmVuIGpvaW5yZWwgZm9yIGdpdmVuIHBhaXIgb2Yg am9pbmluZyByZWxhdGlvbnMuIFRoZQpAQCAtMTYxNSw2ICsxODAzLDExIEBAIHRyeV9wYXJ0aXRp b253aXNlX2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsIFJlbE9wdElu Zm8gKnJlbDIsCiAJCQkJCQkgYWRqdXN0X2NoaWxkX3JlbGlkcyhqb2lucmVsLT5yZWxpZHMsCiAJ CQkJCQkJCQkJCSBuYXBwaW5mb3MsIGFwcGluZm9zKSkpOwogCisJCS8qIEJ1aWxkIGEgZ3JvdXBl ZCBqb2luIHJlbGF0aW9uIGZvciAnY2hpbGRfam9pbnJlbCcgaWYgcG9zc2libGUgKi8KKwkJbWFr ZV9ncm91cGVkX2pvaW5fcmVsKHJvb3QsIGNoaWxkX3JlbDEsIGNoaWxkX3JlbDIsCisJCQkJCQkJ ICBjaGlsZF9qb2lucmVsLCBjaGlsZF9zamluZm8sCisJCQkJCQkJICBjaGlsZF9yZXN0cmljdGxp c3QpOworCiAJCS8qIEFuZCBtYWtlIHBhdGhzIGZvciB0aGUgY2hpbGQgam9pbiAqLwogCQlwb3B1 bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMocm9vdCwgY2hpbGRfcmVsMSwgY2hpbGRfcmVsMiwKIAkJ CQkJCQkJCWNoaWxkX2pvaW5yZWwsIGNoaWxkX3NqaW5mbywKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vaW5pdHNwbGFuLmMKaW5kZXggM2UzZmVjODkyNTIuLjFiNzc4ZjY5MmQ0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYworKysgYi9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYwpAQCAtMTQsNiArMTQsNyBAQAogICovCiAjaW5j bHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9uYnRyZWUuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIK ICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTMxLDYgKzMyLDcgQEAKICNpbmNsdWRl ICJvcHRpbWl6ZXIvcmVzdHJpY3RpbmZvLmgiCiAjaW5jbHVkZSAicGFyc2VyL2FuYWx5emUuaCIK ICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jv aWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVs LmgiCiAjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKQEAgLTgxLDYgKzgzLDkgQEAgdHlwZWRl ZiBzdHJ1Y3QgSm9pblRyZWVJdGVtCiB9IEpvaW5UcmVlSXRlbTsKIAogCitzdGF0aWMgYm9vbCBp c19wYXJ0aWFsX2FnZ19tZW1vcnlfcmlza3koUGxhbm5lckluZm8gKnJvb3QpOworc3RhdGljIHZv aWQgY3JlYXRlX2FnZ19jbGF1c2VfaW5mb3MoUGxhbm5lckluZm8gKnJvb3QpOworc3RhdGljIHZv aWQgY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3MoUGxhbm5lckluZm8gKnJvb3QpOwogc3RhdGlj IHZvaWQgZXh0cmFjdF9sYXRlcmFsX3JlZmVyZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKmJyZWwsCiAJCQkJCQkJCQkgICBJbmRleCBydGluZGV4KTsKIHN0YXRpYyBMaXN0ICpk ZWNvbnN0cnVjdF9yZWN1cnNlKFBsYW5uZXJJbmZvICpyb290LCBOb2RlICpqdG5vZGUsCkBAIC02 MjgsNiArNjMzLDMyNCBAQCByZW1vdmVfdXNlbGVzc19ncm91cGJ5X2NvbHVtbnMoUGxhbm5lcklu Zm8gKnJvb3QpCiAJfQogfQogCisvKgorICogc2V0dXBfZWFnZXJfYWdncmVnYXRpb24KKyAqCSAg Q2hlY2sgaWYgZWFnZXIgYWdncmVnYXRpb24gaXMgYXBwbGljYWJsZSwgYW5kIGlmIHNvIGNvbGxl Y3Qgc3VpdGFibGUKKyAqCSAgYWdncmVnYXRlIGV4cHJlc3Npb25zIGFuZCBncm91cGluZyBleHBy ZXNzaW9ucyBpbiB0aGUgcXVlcnkuCisgKi8KK3ZvaWQKK3NldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9u KFBsYW5uZXJJbmZvICpyb290KQoreworCS8qCisJICogRG9uJ3QgYXBwbHkgZWFnZXIgYWdncmVn YXRpb24gaWYgZGlzYWJsZWQgYnkgdXNlci4KKwkgKi8KKwlpZiAoIWVuYWJsZV9lYWdlcl9hZ2dy ZWdhdGUpCisJCXJldHVybjsKKworCS8qCisJICogRG9uJ3QgYXBwbHkgZWFnZXIgYWdncmVnYXRp b24gaWYgdGhlcmUgYXJlIG5vIGF2YWlsYWJsZSBHUk9VUCBCWQorCSAqIGNsYXVzZXMuCisJICov CisJaWYgKCFyb290LT5wcm9jZXNzZWRfZ3JvdXBDbGF1c2UpCisJCXJldHVybjsKKworCS8qCisJ ICogRm9yIG5vdyB3ZSBkb24ndCB0cnkgdG8gc3VwcG9ydCBncm91cGluZyBzZXRzLgorCSAqLwor CWlmIChyb290LT5wYXJzZS0+Z3JvdXBpbmdTZXRzKQorCQlyZXR1cm47CisKKwkvKgorCSAqIEZv ciBub3cgd2UgZG9uJ3QgdHJ5IHRvIHN1cHBvcnQgRElTVElOQ1Qgb3IgT1JERVIgQlkgYWdncmVn YXRlcy4KKwkgKi8KKwlpZiAocm9vdC0+bnVtT3JkZXJlZEFnZ3MgPiAwKQorCQlyZXR1cm47CisK KwkvKgorCSAqIElmIHRoZXJlIGFyZSBhbnkgYWdncmVnYXRlcyB0aGF0IGRvIG5vdCBzdXBwb3J0 IHBhcnRpYWwgbW9kZSwgb3IgYW55CisJICogcGFydGlhbCBhZ2dyZWdhdGVzIHRoYXQgYXJlIG5v bi1zZXJpYWxpemFibGUsIGRvIG5vdCBhcHBseSBlYWdlcgorCSAqIGFnZ3JlZ2F0aW9uLgorCSAq LworCWlmIChyb290LT5oYXNOb25QYXJ0aWFsQWdncyB8fCByb290LT5oYXNOb25TZXJpYWxBZ2dz KQorCQlyZXR1cm47CisKKwkvKgorCSAqIFdlIGRvbid0IHRyeSB0byBhcHBseSBlYWdlciBhZ2dy ZWdhdGlvbiBpZiB0aGVyZSBhcmUgc2V0LXJldHVybmluZworCSAqIGZ1bmN0aW9ucyBpbiB0YXJn ZXRsaXN0LgorCSAqLworCWlmIChyb290LT5wYXJzZS0+aGFzVGFyZ2V0U1JGcykKKwkJcmV0dXJu OworCisJLyoKKwkgKiBFYWdlciBhZ2dyZWdhdGlvbiBvbmx5IG1ha2VzIHNlbnNlIGlmIHRoZXJl IGFyZSBtdWx0aXBsZSBiYXNlIHJlbHMgaW4KKwkgKiB0aGUgcXVlcnkuCisJICovCisJaWYgKGJt c19tZW1iZXJzaGlwKHJvb3QtPmFsbF9iYXNlcmVscykgIT0gQk1TX01VTFRJUExFKQorCQlyZXR1 cm47CisKKwkvKgorCSAqIERvbid0IGFwcGx5IGVhZ2VyIGFnZ3JlZ2F0aW9uIGlmIGFueSBhZ2dy ZWdhdGUgcG9zZXMgYSByaXNrIG9mCisJICogZXhjZXNzaXZlIG1lbW9yeSB1c2FnZSBkdXJpbmcg cGFydGlhbCBhZ2dyZWdhdGlvbi4KKwkgKi8KKwlpZiAoaXNfcGFydGlhbF9hZ2dfbWVtb3J5X3Jp c2t5KHJvb3QpKQorCQlyZXR1cm47CisKKwkvKgorCSAqIENvbGxlY3QgYWdncmVnYXRlIGV4cHJl c3Npb25zIGFuZCBwbGFpbiBWYXJzIHRoYXQgYXBwZWFyIGluIHRoZQorCSAqIHRhcmdldGxpc3Qg YW5kIGhhdmluZ1F1YWwuCisJICovCisJY3JlYXRlX2FnZ19jbGF1c2VfaW5mb3Mocm9vdCk7CisK KwkvKgorCSAqIElmIHRoZXJlIGFyZSBubyBzdWl0YWJsZSBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMs IHdlIGNhbm5vdCBhcHBseSBlYWdlcgorCSAqIGFnZ3JlZ2F0aW9uLgorCSAqLworCWlmIChyb290 LT5hZ2dfY2xhdXNlX2xpc3QgPT0gTklMKQorCQlyZXR1cm47CisKKwkvKgorCSAqIENvbGxlY3Qg Z3JvdXBpbmcgZXhwcmVzc2lvbnMgdGhhdCBhcHBlYXIgaW4gZ3JvdXBpbmcgY2xhdXNlcy4KKwkg Ki8KKwljcmVhdGVfZ3JvdXBpbmdfZXhwcl9pbmZvcyhyb290KTsKK30KKworLyoKKyAqIGlzX3Bh cnRpYWxfYWdnX21lbW9yeV9yaXNreQorICoJICBDaGVja3MgaWYgYW55IGFnZ3JlZ2F0ZSBwb3Nl cyBhIHJpc2sgb2YgZXhjZXNzaXZlIG1lbW9yeSB1c2FnZSBkdXJpbmcKKyAqCSAgcGFydGlhbCBh Z2dyZWdhdGlvbi4KKyAqCisgKiBXZSBjaGVjayBpZiBhbnkgYWdncmVnYXRlIHVzZXMgSU5URVJO QUwgdHJhbnNpdGlvbiB0eXBlLiAgQWx0aG91Z2ggSU5URVJOQUwKKyAqIGlzIG1hcmtlZCBhcyBw YXNzLWJ5LXZhbHVlLCBpdCB1c3VhbGx5IHBvaW50cyB0byBhIGxhcmdlIGludGVybmFsIGRhdGEK KyAqIHN0cnVjdHVyZSAobGlrZSB0aG9zZSB1c2VkIGJ5IHN0cmluZ19hZ2cgb3IgYXJyYXlfYWdn KS4gIFRoZXNlIHRyYW5zaXRpb24KKyAqIHN0YXRlcyBjYW4gZ3JvdyBsYXJnZSBhbmQgdGhlaXIg c2l6ZSBpcyBoYXJkIHRvIGVzdGltYXRlLiAgQXBwbHlpbmcgZWFnZXIKKyAqIGFnZ3JlZ2F0aW9u IGluIHN1Y2ggY2FzZXMgcmlza3MgaGlnaCBtZW1vcnkgdXNhZ2Ugc2luY2UgcGFydGlhbCBhZ2dy ZWdhdGlvbgorICogcmVzdWx0cyBtaWdodCBiZSBzdG9yZWQgaW4gam9pbiBoYXNoIHRhYmxlcyBv ciBtYXRlcmlhbGl6ZWQgbm9kZXMuCisgKgorICogV2UgZXhwbGljaXRseSBleGNsdWRlIGFnZ3Jl Z2F0ZXMgd2l0aCBBVkdfQUNDVU0gdHJhbnNpdGlvbiBmdW5jdGlvbiBmcm9tCisgKiB0aGlzIGNo ZWNrLCBiYXNlZCBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IGF2ZygpIGFuZCBzdW0oKSBhcmUgc2Fm ZSBpbiB0aGlzCisgKiBjb250ZXh0LgorICovCitzdGF0aWMgYm9vbAoraXNfcGFydGlhbF9hZ2df bWVtb3J5X3Jpc2t5KFBsYW5uZXJJbmZvICpyb290KQoreworCUxpc3RDZWxsICAgKmxjOworCisJ Zm9yZWFjaChsYywgcm9vdC0+YWdndHJhbnNpbmZvcykKKwl7CisJCUFnZ1RyYW5zSW5mbyAqdHJh bnNpbmZvID0gbGZpcnN0X25vZGUoQWdnVHJhbnNJbmZvLCBsYyk7CisKKwkJaWYgKHRyYW5zaW5m by0+dHJhbnNmbl9vaWQgPT0gRl9OVU1FUklDX0FWR19BQ0NVTSB8fAorCQkJdHJhbnNpbmZvLT50 cmFuc2ZuX29pZCA9PSBGX0lOVDhfQVZHX0FDQ1VNKQorCQkJY29udGludWU7CisKKwkJaWYgKHRy YW5zaW5mby0+YWdndHJhbnN0eXBlID09IElOVEVSTkFMT0lEKQorCQkJcmV0dXJuIHRydWU7CisJ fQorCisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogY3JlYXRlX2FnZ19jbGF1c2VfaW5mb3MK KyAqCSAgU2VhcmNoIHRoZSB0YXJnZXRsaXN0IGFuZCBoYXZpbmdRdWFsIGZvciBBZ2dyZWZzIGFu ZCBwbGFpbiBWYXJzLCBhbmQKKyAqCSAgY3JlYXRlIGFuIEFnZ0NsYXVzZUluZm8gZm9yIGVhY2gg QWdncmVmIG5vZGUuCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVfYWdnX2NsYXVzZV9pbmZvcyhQ bGFubmVySW5mbyAqcm9vdCkKK3sKKwlMaXN0CSAgICp0bGlzdF9leHByczsKKwlMaXN0CSAgICph Z2dfY2xhdXNlX2xpc3QgPSBOSUw7CisJTGlzdAkgICAqdGxpc3RfdmFycyA9IE5JTDsKKwlSZWxp ZHMJCWFnZ3JlZ2F0ZV9yZWxpZHMgPSBOVUxMOworCWJvb2wJCWVhZ2VyX2FnZ19hcHBsaWNhYmxl ID0gdHJ1ZTsKKwlMaXN0Q2VsbCAgICpsYzsKKworCUFzc2VydChyb290LT5hZ2dfY2xhdXNlX2xp c3QgPT0gTklMKTsKKwlBc3NlcnQocm9vdC0+dGxpc3RfdmFycyA9PSBOSUwpOworCisJdGxpc3Rf ZXhwcnMgPSBwdWxsX3Zhcl9jbGF1c2UoKE5vZGUgKikgcm9vdC0+cHJvY2Vzc2VkX3RsaXN0LAor CQkJCQkJCQkgIFBWQ19JTkNMVURFX0FHR1JFR0FURVMgfAorCQkJCQkJCQkgIFBWQ19SRUNVUlNF X1dJTkRPV0ZVTkNTIHwKKwkJCQkJCQkJICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMpOworCisJ LyoKKwkgKiBBZ2dyZWdhdGVzIHdpdGhpbiB0aGUgSEFWSU5HIGNsYXVzZSBuZWVkIHRvIGJlIHBy b2Nlc3NlZCBpbiB0aGUgc2FtZQorCSAqIHdheSBhcyB0aG9zZSBpbiB0aGUgdGFyZ2V0bGlzdC4g IE5vdGUgdGhhdCBIQVZJTkcgY2FuIGNvbnRhaW4gQWdncmVmcworCSAqIGJ1dCBub3QgV2luZG93 RnVuY3MuCisJICovCisJaWYgKHJvb3QtPnBhcnNlLT5oYXZpbmdRdWFsICE9IE5VTEwpCisJewor CQlMaXN0CSAgICpoYXZpbmdfZXhwcnM7CisKKwkJaGF2aW5nX2V4cHJzID0gcHVsbF92YXJfY2xh dXNlKChOb2RlICopIHJvb3QtPnBhcnNlLT5oYXZpbmdRdWFsLAorCQkJCQkJCQkJICAgUFZDX0lO Q0xVREVfQUdHUkVHQVRFUyB8CisJCQkJCQkJCQkgICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMp OworCQlpZiAoaGF2aW5nX2V4cHJzICE9IE5JTCkKKwkJeworCQkJdGxpc3RfZXhwcnMgPSBsaXN0 X2NvbmNhdCh0bGlzdF9leHBycywgaGF2aW5nX2V4cHJzKTsKKwkJCWxpc3RfZnJlZShoYXZpbmdf ZXhwcnMpOworCQl9CisJfQorCisJZm9yZWFjaChsYywgdGxpc3RfZXhwcnMpCisJeworCQlFeHBy CSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0KGxjKTsKKwkJQWdncmVmCSAgICphZ2dyZWY7CisJ CVJlbGlkcwkJYWdnX2V2YWxfYXQ7CisJCUFnZ0NsYXVzZUluZm8gKmFjX2luZm87CisKKwkJLyog Rm9yIG5vdyB3ZSBkb24ndCB0cnkgdG8gc3VwcG9ydCBHUk9VUElORygpIGV4cHJlc3Npb25zICov CisJCWlmIChJc0EoZXhwciwgR3JvdXBpbmdGdW5jKSkKKwkJeworCQkJZWFnZXJfYWdnX2FwcGxp Y2FibGUgPSBmYWxzZTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogQ29sbGVjdCBwbGFpbiBWYXJz IGZvciBmdXR1cmUgcmVmZXJlbmNlICovCisJCWlmIChJc0EoZXhwciwgVmFyKSkKKwkJeworCQkJ dGxpc3RfdmFycyA9IGxpc3RfYXBwZW5kX3VuaXF1ZSh0bGlzdF92YXJzLCBleHByKTsKKwkJCWNv bnRpbnVlOworCQl9CisKKwkJYWdncmVmID0gY2FzdE5vZGUoQWdncmVmLCBleHByKTsKKworCQlB c3NlcnQoYWdncmVmLT5hZ2dvcmRlciA9PSBOSUwpOworCQlBc3NlcnQoYWdncmVmLT5hZ2dkaXN0 aW5jdCA9PSBOSUwpOworCisJCS8qCisJCSAqIElmIHRoZXJlIGFyZSBhbnkgc2VjdXJpdHlRdWFs cywgZG8gbm90IHRyeSB0byBhcHBseSBlYWdlcgorCQkgKiBhZ2dyZWdhdGlvbiBpZiBhbnkgbm9u LWxlYWtwcm9vZiBhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBwcmVzZW50LgorCQkgKiBUaGlzIGlz IG92ZXJseSBzdHJpY3QsIGJ1dCBmb3Igbm93Li4uCisJCSAqLworCQlpZiAocm9vdC0+cXVhbF9z ZWN1cml0eV9sZXZlbCA+IDAgJiYKKwkJCSFnZXRfZnVuY19sZWFrcHJvb2YoYWdncmVmLT5hZ2dm bm9pZCkpCisJCXsKKwkJCWVhZ2VyX2FnZ19hcHBsaWNhYmxlID0gZmFsc2U7CisJCQlicmVhazsK KwkJfQorCisJCWFnZ19ldmFsX2F0ID0gcHVsbF92YXJub3Mocm9vdCwgKE5vZGUgKikgYWdncmVm KTsKKworCQkvKgorCQkgKiBJZiBhbGwgYmFzZSByZWxhdGlvbnMgaW4gdGhlIHF1ZXJ5IGFyZSBy ZWZlcmVuY2VkIGJ5IGFnZ3JlZ2F0ZQorCQkgKiBmdW5jdGlvbnMsIHRoZW4gZWFnZXIgYWdncmVn YXRpb24gaXMgbm90IGFwcGxpY2FibGUuCisJCSAqLworCQlhZ2dyZWdhdGVfcmVsaWRzID0gYm1z X2FkZF9tZW1iZXJzKGFnZ3JlZ2F0ZV9yZWxpZHMsIGFnZ19ldmFsX2F0KTsKKwkJaWYgKGJtc19p c19zdWJzZXQocm9vdC0+YWxsX2Jhc2VyZWxzLCBhZ2dyZWdhdGVfcmVsaWRzKSkKKwkJeworCQkJ ZWFnZXJfYWdnX2FwcGxpY2FibGUgPSBmYWxzZTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogT0ss IGNyZWF0ZSB0aGUgQWdnQ2xhdXNlSW5mbyBub2RlICovCisJCWFjX2luZm8gPSBtYWtlTm9kZShB Z2dDbGF1c2VJbmZvKTsKKwkJYWNfaW5mby0+YWdncmVmID0gYWdncmVmOworCQlhY19pbmZvLT5h Z2dfZXZhbF9hdCA9IGFnZ19ldmFsX2F0OworCisJCS8qIC4uLiBhbmQgYWRkIGl0IHRvIHRoZSBs aXN0ICovCisJCWFnZ19jbGF1c2VfbGlzdCA9IGxpc3RfYXBwZW5kX3VuaXF1ZShhZ2dfY2xhdXNl X2xpc3QsIGFjX2luZm8pOworCX0KKworCWxpc3RfZnJlZSh0bGlzdF9leHBycyk7CisKKwlpZiAo ZWFnZXJfYWdnX2FwcGxpY2FibGUpCisJeworCQlyb290LT5hZ2dfY2xhdXNlX2xpc3QgPSBhZ2df Y2xhdXNlX2xpc3Q7CisJCXJvb3QtPnRsaXN0X3ZhcnMgPSB0bGlzdF92YXJzOworCX0KKwllbHNl CisJeworCQlsaXN0X2ZyZWVfZGVlcChhZ2dfY2xhdXNlX2xpc3QpOworCQlsaXN0X2ZyZWUodGxp c3RfdmFycyk7CisJfQorfQorCisvKgorICogY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5mb3MKKyAq CSAgQ3JlYXRlIGEgR3JvdXBpbmdFeHBySW5mbyBmb3IgZWFjaCBleHByZXNzaW9uIHVzYWJsZSBh cyBncm91cGluZyBrZXkuCisgKgorICogSWYgYW55IGdyb3VwaW5nIGV4cHJlc3Npb24gaXMgbm90 IHN1aXRhYmxlLCB3ZSB3aWxsIGp1c3QgcmV0dXJuIHdpdGgKKyAqIHJvb3QtPmdyb3VwX2V4cHJf bGlzdCBiZWluZyBOSUwuCisgKi8KK3N0YXRpYyB2b2lkCitjcmVhdGVfZ3JvdXBpbmdfZXhwcl9p bmZvcyhQbGFubmVySW5mbyAqcm9vdCkKK3sKKwlMaXN0CSAgICpleHBycyA9IE5JTDsKKwlMaXN0 CSAgICpzb3J0Z3JvdXByZWZzID0gTklMOworCUxpc3QJICAgKmJ0cmVlX29wZmFtaWxpZXMgPSBO SUw7CisJTGlzdENlbGwgICAqbGMsCisJCQkgICAqbGMxLAorCQkJICAgKmxjMiwKKwkJCSAgICps YzM7CisKKwlBc3NlcnQocm9vdC0+Z3JvdXBfZXhwcl9saXN0ID09IE5JTCk7CisKKwlmb3JlYWNo KGxjLCByb290LT5wcm9jZXNzZWRfZ3JvdXBDbGF1c2UpCisJeworCQlTb3J0R3JvdXBDbGF1c2Ug KnNnYyA9IGxmaXJzdF9ub2RlKFNvcnRHcm91cENsYXVzZSwgbGMpOworCQlUYXJnZXRFbnRyeSAq dGxlID0gZ2V0X3NvcnRncm91cGNsYXVzZV90bGUoc2djLCByb290LT5wcm9jZXNzZWRfdGxpc3Qp OworCQlUeXBlQ2FjaGVFbnRyeSAqdGNlOworCQlPaWQJCQllcXVhbGltYWdlcHJvYzsKKworCQlB c3NlcnQodGxlLT5yZXNzb3J0Z3JvdXByZWYgPiAwKTsKKworCQkvKgorCQkgKiBGb3Igbm93IHdl IG9ubHkgc3VwcG9ydCBwbGFpbiBWYXJzIGFzIGdyb3VwaW5nIGV4cHJlc3Npb25zLgorCQkgKi8K KwkJaWYgKCFJc0EodGxlLT5leHByLCBWYXIpKQorCQkJcmV0dXJuOworCisJCS8qCisJCSAqIEVh Z2VyIGFnZ3JlZ2F0aW9uIGlzIG9ubHkgcG9zc2libGUgaWYgZXF1YWxpdHkgaW1wbGllcyBpbWFn ZQorCQkgKiBlcXVhbGl0eSBmb3IgZWFjaCBncm91cGluZyBrZXkuICBPdGhlcndpc2UsIHBsYWNp bmcga2V5cyB3aXRoCisJCSAqIGRpZmZlcmVudCBieXRlIGltYWdlcyBpbnRvIHRoZSBzYW1lIGdy b3VwIG1heSByZXN1bHQgaW4gdGhlIGxvc3Mgb2YKKwkJICogaW5mb3JtYXRpb24gdGhhdCBjb3Vs ZCBiZSBuZWNlc3NhcnkgdG8gZXZhbHVhdGUgdXBwZXIgcXVhbCBjbGF1c2VzLgorCQkgKgorCQkg KiBGb3IgaW5zdGFuY2UsIHRoZSBOVU1FUklDIGRhdGEgdHlwZSBpcyBub3Qgc3VwcG9ydGVkLCBh cyB2YWx1ZXMKKwkJICogdGhhdCBhcmUgY29uc2lkZXJlZCBlcXVhbCBieSB0aGUgZXF1YWxpdHkg b3BlcmF0b3IgKGUuZy4sIDAgYW5kCisJCSAqIDAuMCkgY2FuIGhhdmUgZGlmZmVyZW50IHNjYWxl cy4KKwkJICovCisJCXRjZSA9IGxvb2t1cF90eXBlX2NhY2hlKGV4cHJUeXBlKChOb2RlICopIHRs ZS0+ZXhwciksCisJCQkJCQkJCVRZUEVDQUNIRV9CVFJFRV9PUEZBTUlMWSk7CisJCWlmICghT2lk SXNWYWxpZCh0Y2UtPmJ0cmVlX29wZikgfHwKKwkJCSFPaWRJc1ZhbGlkKHRjZS0+YnRyZWVfb3Bp bnR5cGUpKQorCQkJcmV0dXJuOworCisJCWVxdWFsaW1hZ2Vwcm9jID0gZ2V0X29wZmFtaWx5X3By b2ModGNlLT5idHJlZV9vcGYsCisJCQkJCQkJCQkJICAgdGNlLT5idHJlZV9vcGludHlwZSwKKwkJ CQkJCQkJCQkgICB0Y2UtPmJ0cmVlX29waW50eXBlLAorCQkJCQkJCQkJCSAgIEJURVFVQUxJTUFH RV9QUk9DKTsKKwkJaWYgKCFPaWRJc1ZhbGlkKGVxdWFsaW1hZ2Vwcm9jKSB8fAorCQkJIURhdHVt R2V0Qm9vbChPaWRGdW5jdGlvbkNhbGwxQ29sbChlcXVhbGltYWdlcHJvYywKKwkJCQkJCQkJCQkJ ICAgdGNlLT50eXBjb2xsYXRpb24sCisJCQkJCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0odGNl LT5idHJlZV9vcGludHlwZSkpKSkKKwkJCXJldHVybjsKKworCQlleHBycyA9IGxhcHBlbmQoZXhw cnMsIHRsZS0+ZXhwcik7CisJCXNvcnRncm91cHJlZnMgPSBsYXBwZW5kX2ludChzb3J0Z3JvdXBy ZWZzLCB0bGUtPnJlc3NvcnRncm91cHJlZik7CisJCWJ0cmVlX29wZmFtaWxpZXMgPSBsYXBwZW5k X29pZChidHJlZV9vcGZhbWlsaWVzLCB0Y2UtPmJ0cmVlX29wZik7CisJfQorCisJLyoKKwkgKiBD b25zdHJ1Y3QgYSBHcm91cGluZ0V4cHJJbmZvIGZvciBlYWNoIGV4cHJlc3Npb24uCisJICovCisJ Zm9ydGhyZWUobGMxLCBleHBycywgbGMyLCBzb3J0Z3JvdXByZWZzLCBsYzMsIGJ0cmVlX29wZmFt aWxpZXMpCisJeworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0KGxjMSk7CisJCWlu dAkJCXNvcnRncm91cHJlZiA9IGxmaXJzdF9pbnQobGMyKTsKKwkJT2lkCQkJYnRyZWVfb3BmYW1p bHkgPSBsZmlyc3Rfb2lkKGxjMyk7CisJCUdyb3VwaW5nRXhwckluZm8gKmdlX2luZm87CisKKwkJ Z2VfaW5mbyA9IG1ha2VOb2RlKEdyb3VwaW5nRXhwckluZm8pOworCQlnZV9pbmZvLT5leHByID0g KEV4cHIgKikgY29weU9iamVjdChleHByKTsKKwkJZ2VfaW5mby0+c29ydGdyb3VwcmVmID0gc29y dGdyb3VwcmVmOworCQlnZV9pbmZvLT5idHJlZV9vcGZhbWlseSA9IGJ0cmVlX29wZmFtaWx5Owor CisJCXJvb3QtPmdyb3VwX2V4cHJfbGlzdCA9IGxhcHBlbmQocm9vdC0+Z3JvdXBfZXhwcl9saXN0 LCBnZV9pbmZvKTsKKwl9Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqCSAgTEFU RVJBTCBSRUZFUkVOQ0VTCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9w bGFubWFpbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYwppbmRleCA1 NDY3ZTA5NGNhNy4uZWVmYzQ4NmE1NjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5tYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1h aW4uYwpAQCAtNzYsNiArNzYsOSBAQCBxdWVyeV9wbGFubmVyKFBsYW5uZXJJbmZvICpyb290LAog CXJvb3QtPnBsYWNlaG9sZGVyX2xpc3QgPSBOSUw7CiAJcm9vdC0+cGxhY2Vob2xkZXJfYXJyYXkg PSBOVUxMOwogCXJvb3QtPnBsYWNlaG9sZGVyX2FycmF5X3NpemUgPSAwOworCXJvb3QtPmFnZ19j bGF1c2VfbGlzdCA9IE5JTDsKKwlyb290LT5ncm91cF9leHByX2xpc3QgPSBOSUw7CisJcm9vdC0+ dGxpc3RfdmFycyA9IE5JTDsKIAlyb290LT5ma2V5X2xpc3QgPSBOSUw7CiAJcm9vdC0+aW5pdGlh bF9yZWxzID0gTklMOwogCkBAIC0yNjUsNiArMjY4LDEyIEBAIHF1ZXJ5X3BsYW5uZXIoUGxhbm5l ckluZm8gKnJvb3QsCiAJICovCiAJZXh0cmFjdF9yZXN0cmljdGlvbl9vcl9jbGF1c2VzKHJvb3Qp OwogCisJLyoKKwkgKiBDaGVjayBpZiBlYWdlciBhZ2dyZWdhdGlvbiBpcyBhcHBsaWNhYmxlLCBh bmQgaWYgc28sIHNldCB1cAorCSAqIHJvb3QtPmFnZ19jbGF1c2VfbGlzdCBhbmQgcm9vdC0+Z3Jv dXBfZXhwcl9saXN0LgorCSAqLworCXNldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9uKHJvb3QpOworCiAJ LyoKIAkgKiBOb3cgZXhwYW5kIGFwcGVuZHJlbHMgYnkgYWRkaW5nICJvdGhlcnJlbHMiIGZvciB0 aGVpciBjaGlsZHJlbi4gIFdlCiAJICogZGVsYXkgdGhpcyB0byB0aGUgZW5kIHNvIHRoYXQgd2Ug aGF2ZSBhcyBtdWNoIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9wbGFubmVyLmMKaW5kZXggNDFiZDgzNTM0MzAuLjQ2MmM1MzM1NTg5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0yMzIsNyArMjMyLDYgQEAgc3RhdGljIHZvaWQgYWRk X3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5w dXRfcmVsLAogCQkJCQkJCQkJICBSZWxPcHRJbmZvICpwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCiAJ CQkJCQkJCQkgIGNvbnN0IEFnZ0NsYXVzZUNvc3RzICphZ2dfY29zdHMsCiAJCQkJCQkJCQkgIGdy b3VwaW5nX3NldHNfZGF0YSAqZ2QsCi0JCQkJCQkJCQkgIGRvdWJsZSBkTnVtR3JvdXBzLAogCQkJ CQkJCQkJICBHcm91cFBhdGhFeHRyYURhdGEgKmV4dHJhKTsKIHN0YXRpYyBSZWxPcHRJbmZvICpj cmVhdGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJ CQkJCSBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKQEAgLTQwMTAsOSArNDAwOSw3IEBAIGNyZWF0 ZV9vcmRpbmFyeV9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq aW5wdXRfcmVsLAogCQkJCQkJCSAgIEdyb3VwUGF0aEV4dHJhRGF0YSAqZXh0cmEsCiAJCQkJCQkJ ICAgUmVsT3B0SW5mbyAqKnBhcnRpYWxseV9ncm91cGVkX3JlbF9wKQogewotCVBhdGgJICAgKmNo ZWFwZXN0X3BhdGggPSBpbnB1dF9yZWwtPmNoZWFwZXN0X3RvdGFsX3BhdGg7CiAJUmVsT3B0SW5m byAqcGFydGlhbGx5X2dyb3VwZWRfcmVsID0gTlVMTDsKLQlkb3VibGUJCWROdW1Hcm91cHM7CiAJ UGFydGl0aW9ud2lzZUFnZ3JlZ2F0ZVR5cGUgcGF0eXBlID0gUEFSVElUSU9OV0lTRV9BR0dSRUdB VEVfTk9ORTsKIAogCS8qCkBAIC00MDk0LDIzICs0MDkxLDE2IEBAIGNyZWF0ZV9vcmRpbmFyeV9n cm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAog CiAJLyogR2F0aGVyIGFueSBwYXJ0aWFsbHkgZ3JvdXBlZCBwYXJ0aWFsIHBhdGhzLiAqLwogCWlm IChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgJiYgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5wYXJ0aWFs X3BhdGhsaXN0KQotCXsKIAkJZ2F0aGVyX2dyb3VwaW5nX3BhdGhzKHJvb3QsIHBhcnRpYWxseV9n cm91cGVkX3JlbCk7Ci0JCXNldF9jaGVhcGVzdChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwotCX0K IAotCS8qCi0JICogRXN0aW1hdGUgbnVtYmVyIG9mIGdyb3Vwcy4KLQkgKi8KLQlkTnVtR3JvdXBz ID0gZ2V0X251bWJlcl9vZl9ncm91cHMocm9vdCwKLQkJCQkJCQkJCSAgY2hlYXBlc3RfcGF0aC0+ cm93cywKLQkJCQkJCQkJCSAgZ2QsCi0JCQkJCQkJCQkgIGV4dHJhLT50YXJnZXRMaXN0KTsKKwkv KiBOb3cgY2hvb3NlIHRoZSBiZXN0IHBhdGgocykgZm9yIHBhcnRpYWxseV9ncm91cGVkX3JlbC4g Ki8KKwlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVsICYmIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+ cGF0aGxpc3QpCisJCXNldF9jaGVhcGVzdChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwogCiAJLyog QnVpbGQgZmluYWwgZ3JvdXBpbmcgcGF0aHMgKi8KIAlhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVs KHJvb3QsIGlucHV0X3JlbCwgZ3JvdXBlZF9yZWwsCiAJCQkJCQkJICBwYXJ0aWFsbHlfZ3JvdXBl ZF9yZWwsIGFnZ19jb3N0cywgZ2QsCi0JCQkJCQkJICBkTnVtR3JvdXBzLCBleHRyYSk7CisJCQkJ CQkJICBleHRyYSk7CiAKIAkvKiBHaXZlIGEgaGVscGZ1bCBlcnJvciBpZiB3ZSBmYWlsZWQgdG8g ZmluZCBhbnkgaW1wbGVtZW50YXRpb24gKi8KIAlpZiAoZ3JvdXBlZF9yZWwtPnBhdGhsaXN0ID09 IE5JTCkKQEAgLTcwNTUsMTYgKzcwNDUsNDIgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJICBSZWxPcHRJ bmZvICpncm91cGVkX3JlbCwKIAkJCQkJCSAgUmVsT3B0SW5mbyAqcGFydGlhbGx5X2dyb3VwZWRf cmVsLAogCQkJCQkJICBjb25zdCBBZ2dDbGF1c2VDb3N0cyAqYWdnX2Nvc3RzLAotCQkJCQkJICBn cm91cGluZ19zZXRzX2RhdGEgKmdkLCBkb3VibGUgZE51bUdyb3VwcywKKwkJCQkJCSAgZ3JvdXBp bmdfc2V0c19kYXRhICpnZCwKIAkJCQkJCSAgR3JvdXBQYXRoRXh0cmFEYXRhICpleHRyYSkKIHsK IAlRdWVyeQkgICAqcGFyc2UgPSByb290LT5wYXJzZTsKIAlQYXRoCSAgICpjaGVhcGVzdF9wYXRo ID0gaW5wdXRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoOworCVBhdGgJICAgKmNoZWFwZXN0X3Bh cnRpYWxseV9ncm91cGVkX3BhdGggPSBOVUxMOwogCUxpc3RDZWxsICAgKmxjOwogCWJvb2wJCWNh bl9oYXNoID0gKGV4dHJhLT5mbGFncyAmIEdST1VQSU5HX0NBTl9VU0VfSEFTSCkgIT0gMDsKIAli b29sCQljYW5fc29ydCA9IChleHRyYS0+ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNFX1NPUlQpICE9 IDA7CiAJTGlzdAkgICAqaGF2aW5nUXVhbCA9IChMaXN0ICopIGV4dHJhLT5oYXZpbmdRdWFsOwog CUFnZ0NsYXVzZUNvc3RzICphZ2dfZmluYWxfY29zdHMgPSAmZXh0cmEtPmFnZ19maW5hbF9jb3N0 czsKKwlkb3VibGUJCWROdW1Hcm91cHMgPSAwOworCWRvdWJsZQkJZE51bUZpbmFsR3JvdXBzID0g MDsKKworCS8qCisJICogRXN0aW1hdGUgbnVtYmVyIG9mIGdyb3VwcyBmb3Igbm9uLXNwbGl0IGFn Z3JlZ2F0aW9uLgorCSAqLworCWROdW1Hcm91cHMgPSBnZXRfbnVtYmVyX29mX2dyb3Vwcyhyb290 LAorCQkJCQkJCQkJICBjaGVhcGVzdF9wYXRoLT5yb3dzLAorCQkJCQkJCQkJICBnZCwKKwkJCQkJ CQkJCSAgZXh0cmEtPnRhcmdldExpc3QpOworCisJaWYgKHBhcnRpYWxseV9ncm91cGVkX3JlbCAm JiBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPnBhdGhsaXN0KQorCXsKKwkJY2hlYXBlc3RfcGFydGlh bGx5X2dyb3VwZWRfcGF0aCA9CisJCQlwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwtPmNoZWFwZXN0X3Rv dGFsX3BhdGg7CisKKwkJLyoKKwkJICogRXN0aW1hdGUgbnVtYmVyIG9mIGdyb3VwcyBmb3IgZmlu YWwgcGhhc2Ugb2YgcGFydGlhbCBhZ2dyZWdhdGlvbi4KKwkJICovCisJCWROdW1GaW5hbEdyb3Vw cyA9CisJCQlnZXRfbnVtYmVyX29mX2dyb3Vwcyhyb290LAorCQkJCQkJCQkgY2hlYXBlc3RfcGFy dGlhbGx5X2dyb3VwZWRfcGF0aC0+cm93cywKKwkJCQkJCQkJIGdkLAorCQkJCQkJCQkgZXh0cmEt PnRhcmdldExpc3QpOworCX0KIAogCWlmIChjYW5fc29ydCkKIAl7CkBAIC03MTc3LDcgKzcxOTMs NyBAQCBhZGRfcGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJ bmZvICppbnB1dF9yZWwsCiAJCQkJCXBhdGggPSBtYWtlX29yZGVyZWRfcGF0aChyb290LAogCQkJ CQkJCQkJCQkgZ3JvdXBlZF9yZWwsCiAJCQkJCQkJCQkJCSBwYXRoLAotCQkJCQkJCQkJCQkgcGFy dGlhbGx5X2dyb3VwZWRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoLAorCQkJCQkJCQkJCQkgY2hl YXBlc3RfcGFydGlhbGx5X2dyb3VwZWRfcGF0aCwKIAkJCQkJCQkJCQkJIGluZm8tPnBhdGhrZXlz LAogCQkJCQkJCQkJCQkgLTEuMCk7CiAKQEAgLTcxOTUsNyArNzIxMSw3IEBAIGFkZF9wYXRoc190 b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwK IAkJCQkJCQkJCQkJCSBpbmZvLT5jbGF1c2VzLAogCQkJCQkJCQkJCQkJIGhhdmluZ1F1YWwsCiAJ CQkJCQkJCQkJCQkgYWdnX2ZpbmFsX2Nvc3RzLAotCQkJCQkJCQkJCQkJIGROdW1Hcm91cHMpKTsK KwkJCQkJCQkJCQkJCSBkTnVtRmluYWxHcm91cHMpKTsKIAkJCQkJZWxzZQogCQkJCQkJYWRkX3Bh dGgoZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJCQkJCQkJCSBjcmVhdGVfZ3JvdXBfcGF0aChyb290 LApAQCAtNzIwMyw3ICs3MjE5LDcgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCQkJCQkJICAgcGF0aCwK IAkJCQkJCQkJCQkJCSAgIGluZm8tPmNsYXVzZXMsCiAJCQkJCQkJCQkJCQkgICBoYXZpbmdRdWFs LAotCQkJCQkJCQkJCQkJICAgZE51bUdyb3VwcykpOworCQkJCQkJCQkJCQkJICAgZE51bUZpbmFs R3JvdXBzKSk7CiAKIAkJCQl9CiAJCQl9CkBAIC03MjQ1LDE5ICs3MjYxLDE3IEBAIGFkZF9wYXRo c190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3Jl bCwKIAkJICovCiAJCWlmIChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwgJiYgcGFydGlhbGx5X2dyb3Vw ZWRfcmVsLT5wYXRobGlzdCkKIAkJewotCQkJUGF0aAkgICAqcGF0aCA9IHBhcnRpYWxseV9ncm91 cGVkX3JlbC0+Y2hlYXBlc3RfdG90YWxfcGF0aDsKLQogCQkJYWRkX3BhdGgoZ3JvdXBlZF9yZWws IChQYXRoICopCiAJCQkJCSBjcmVhdGVfYWdnX3BhdGgocm9vdCwKIAkJCQkJCQkJCSBncm91cGVk X3JlbCwKLQkJCQkJCQkJCSBwYXRoLAorCQkJCQkJCQkJIGNoZWFwZXN0X3BhcnRpYWxseV9ncm91 cGVkX3BhdGgsCiAJCQkJCQkJCQkgZ3JvdXBlZF9yZWwtPnJlbHRhcmdldCwKIAkJCQkJCQkJCSBB R0dfSEFTSEVELAogCQkJCQkJCQkJIEFHR1NQTElUX0ZJTkFMX0RFU0VSSUFMLAogCQkJCQkJCQkJ IHJvb3QtPnByb2Nlc3NlZF9ncm91cENsYXVzZSwKIAkJCQkJCQkJCSBoYXZpbmdRdWFsLAogCQkJ CQkJCQkJIGFnZ19maW5hbF9jb3N0cywKLQkJCQkJCQkJCSBkTnVtR3JvdXBzKSk7CisJCQkJCQkJ CQkgZE51bUZpbmFsR3JvdXBzKSk7CiAJCX0KIAl9CiAKQEAgLTcyOTcsNiArNzMxMSw3IEBAIGNy ZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogewogCVF1ZXJ5 CSAgICpwYXJzZSA9IHJvb3QtPnBhcnNlOwogCVJlbE9wdEluZm8gKnBhcnRpYWxseV9ncm91cGVk X3JlbDsKKwlSZWxPcHRJbmZvICplYWdlcl9hZ2dfcmVsID0gTlVMTDsKIAlBZ2dDbGF1c2VDb3N0 cyAqYWdnX3BhcnRpYWxfY29zdHMgPSAmZXh0cmEtPmFnZ19wYXJ0aWFsX2Nvc3RzOwogCUFnZ0Ns YXVzZUNvc3RzICphZ2dfZmluYWxfY29zdHMgPSAmZXh0cmEtPmFnZ19maW5hbF9jb3N0czsKIAlQ YXRoCSAgICpjaGVhcGVzdF9wYXJ0aWFsX3BhdGggPSBOVUxMOwpAQCAtNzMwNyw2ICs3MzIyLDE1 IEBAIGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCWJv b2wJCWNhbl9oYXNoID0gKGV4dHJhLT5mbGFncyAmIEdST1VQSU5HX0NBTl9VU0VfSEFTSCkgIT0g MDsKIAlib29sCQljYW5fc29ydCA9IChleHRyYS0+ZmxhZ3MgJiBHUk9VUElOR19DQU5fVVNFX1NP UlQpICE9IDA7CiAKKwkvKgorCSAqIENoZWNrIHdoZXRoZXIgYW55IHBhcnRpYWxseSBhZ2dyZWdh dGVkIHBhdGhzIGhhdmUgYmVlbiBnZW5lcmF0ZWQKKwkgKiB0aHJvdWdoIGVhZ2VyIGFnZ3JlZ2F0 aW9uLgorCSAqLworCWlmIChpbnB1dF9yZWwtPmdyb3VwZWRfcmVsICYmCisJCSFJU19EVU1NWV9S RUwoaW5wdXRfcmVsLT5ncm91cGVkX3JlbCkgJiYKKwkJaW5wdXRfcmVsLT5ncm91cGVkX3JlbC0+ cGF0aGxpc3QgIT0gTklMKQorCQllYWdlcl9hZ2dfcmVsID0gaW5wdXRfcmVsLT5ncm91cGVkX3Jl bDsKKwogCS8qCiAJICogQ29uc2lkZXIgd2hldGhlciB3ZSBzaG91bGQgZ2VuZXJhdGUgcGFydGlh bGx5IGFnZ3JlZ2F0ZWQgbm9uLXBhcnRpYWwKIAkgKiBwYXRocy4gIFdlIGNhbiBvbmx5IGRvIHRo aXMgaWYgd2UgaGF2ZSBhIG5vbi1wYXJ0aWFsIHBhdGgsIGFuZCBvbmx5IGlmCkBAIC03MzI4LDEx ICs3MzUyLDEzIEBAIGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpy b290LAogCiAJLyoKIAkgKiBJZiB3ZSBjYW4ndCBwYXJ0aWFsbHkgYWdncmVnYXRlIHBhcnRpYWwg cGF0aHMsIGFuZCB3ZSBjYW4ndCBwYXJ0aWFsbHkKLQkgKiBhZ2dyZWdhdGUgbm9uLXBhcnRpYWwg cGF0aHMsIHRoZW4gZG9uJ3QgYm90aGVyIGNyZWF0aW5nIHRoZSBuZXcKKwkgKiBhZ2dyZWdhdGUg bm9uLXBhcnRpYWwgcGF0aHMsIGFuZCBubyBwYXJ0aWFsbHkgYWdncmVnYXRlZCBwYXRocyB3ZXJl CisJICogZ2VuZXJhdGVkIGJ5IGVhZ2VyIGFnZ3JlZ2F0aW9uLCB0aGVuIGRvbid0IGJvdGhlciBj cmVhdGluZyB0aGUgbmV3CiAJICogUmVsT3B0SW5mbyBhdCBhbGwsIHVubGVzcyB0aGUgY2FsbGVy IHNwZWNpZmllZCBmb3JjZV9yZWxfY3JlYXRpb24uCiAJICovCiAJaWYgKGNoZWFwZXN0X3RvdGFs X3BhdGggPT0gTlVMTCAmJgogCQljaGVhcGVzdF9wYXJ0aWFsX3BhdGggPT0gTlVMTCAmJgorCQll YWdlcl9hZ2dfcmVsID09IE5VTEwgJiYKIAkJIWZvcmNlX3JlbF9jcmVhdGlvbikKIAkJcmV0dXJu IE5VTEw7CiAKQEAgLTc1NTcsNiArNzU4Myw1MSBAQCBjcmVhdGVfcGFydGlhbF9ncm91cGluZ19w YXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkgZE51bVBhcnRpYWxQYXJ0aWFsR3Jv dXBzKSk7CiAJfQogCisJLyoKKwkgKiBBZGQgYW55IHBhcnRpYWxseSBhZ2dyZWdhdGVkIHBhdGhz IGdlbmVyYXRlZCBieSBlYWdlciBhZ2dyZWdhdGlvbiB0bworCSAqIHRoZSBuZXcgdXBwZXIgcmVs YXRpb24gYWZ0ZXIgYXBwbHlpbmcgcHJvamVjdGlvbiBzdGVwcyBhcyBuZWVkZWQuCisJICovCisJ aWYgKGVhZ2VyX2FnZ19yZWwpCisJeworCQkvKiBBZGQgdGhlIHBhdGhzICovCisJCWZvcmVhY2go bGMsIGVhZ2VyX2FnZ19yZWwtPnBhdGhsaXN0KQorCQl7CisJCQlQYXRoCSAgICpwYXRoID0gKFBh dGggKikgbGZpcnN0KGxjKTsKKworCQkJLyogU2hvdWxkbid0IGhhdmUgYW55IHBhcmFtZXRlcml6 ZWQgcGF0aHMgYW55bW9yZSAqLworCQkJQXNzZXJ0KHBhdGgtPnBhcmFtX2luZm8gPT0gTlVMTCk7 CisKKwkJCXBhdGggPSAoUGF0aCAqKSBjcmVhdGVfcHJvamVjdGlvbl9wYXRoKHJvb3QsCisJCQkJ CQkJCQkJCQkgICBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCisJCQkJCQkJCQkJCQkgICBwYXRoLAor CQkJCQkJCQkJCQkJICAgcGFydGlhbGx5X2dyb3VwZWRfcmVsLT5yZWx0YXJnZXQpOworCisJCQlh ZGRfcGF0aChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIHBhdGgpOworCQl9CisKKwkJLyoKKwkJICog TGlrZXdpc2UgYWRkIHRoZSBwYXJ0aWFsIHBhdGhzLCBidXQgb25seSBpZiBwYXJhbGxlbGlzbSBp cyBwb3NzaWJsZQorCQkgKiBmb3IgcGFydGlhbGx5X2dyb3VwZWRfcmVsLgorCQkgKi8KKwkJaWYg KHBhcnRpYWxseV9ncm91cGVkX3JlbC0+Y29uc2lkZXJfcGFyYWxsZWwpCisJCXsKKwkJCWZvcmVh Y2gobGMsIGVhZ2VyX2FnZ19yZWwtPnBhcnRpYWxfcGF0aGxpc3QpCisJCQl7CisJCQkJUGF0aAkg ICAqcGF0aCA9IChQYXRoICopIGxmaXJzdChsYyk7CisKKwkJCQkvKiBTaG91bGRuJ3QgaGF2ZSBh bnkgcGFyYW1ldGVyaXplZCBwYXRocyBhbnltb3JlICovCisJCQkJQXNzZXJ0KHBhdGgtPnBhcmFt X2luZm8gPT0gTlVMTCk7CisKKwkJCQlwYXRoID0gKFBhdGggKikgY3JlYXRlX3Byb2plY3Rpb25f cGF0aChyb290LAorCQkJCQkJCQkJCQkJCSAgIHBhcnRpYWxseV9ncm91cGVkX3JlbCwKKwkJCQkJ CQkJCQkJCQkgICBwYXRoLAorCQkJCQkJCQkJCQkJCSAgIHBhcnRpYWxseV9ncm91cGVkX3JlbC0+ cmVsdGFyZ2V0KTsKKworCQkJCWFkZF9wYXJ0aWFsX3BhdGgocGFydGlhbGx5X2dyb3VwZWRfcmVs LCBwYXRoKTsKKwkJCX0KKwkJfQorCX0KKwogCS8qCiAJICogSWYgdGhlcmUgaXMgYW4gRkRXIHRo YXQncyByZXNwb25zaWJsZSBmb3IgYWxsIGJhc2VyZWxzIG9mIHRoZSBxdWVyeSwKIAkgKiBsZXQg aXQgY29uc2lkZXIgYWRkaW5nIHBhcnRpYWxseSBncm91cGVkIEZvcmVpZ25QYXRocy4KQEAgLTgx MjAsMTMgKzgxOTEsNiBAQCBjcmVhdGVfcGFydGl0aW9ud2lzZV9ncm91cGluZ19wYXRocyhQbGFu bmVySW5mbyAqcm9vdCwKIAogCQlhZGRfcGF0aHNfdG9fYXBwZW5kX3JlbChyb290LCBwYXJ0aWFs bHlfZ3JvdXBlZF9yZWwsCiAJCQkJCQkJCXBhcnRpYWxseV9ncm91cGVkX2xpdmVfY2hpbGRyZW4p OwotCi0JCS8qCi0JCSAqIFdlIG5lZWQgY2FsbCBzZXRfY2hlYXBlc3QsIHNpbmNlIHRoZSBmaW5h bGl6YXRpb24gc3RlcCB3aWxsIHVzZSB0aGUKLQkJICogY2hlYXBlc3QgcGF0aCBmcm9tIHRoZSBy ZWwuCi0JCSAqLwotCQlpZiAocGFydGlhbGx5X2dyb3VwZWRfcmVsLT5wYXRobGlzdCkKLQkJCXNl dF9jaGVhcGVzdChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwpOwogCX0KIAogCS8qIElmIHBvc3NpYmxl LCBjcmVhdGUgYXBwZW5kIHBhdGhzIGZvciBmdWxseSBncm91cGVkIGNoaWxkcmVuLiAqLwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5mby5jCmluZGV4IDViM2RjMGQ4NjUzLi4xMWMw ZWIwZDE4MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvYXBwZW5kaW5m by5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL2FwcGVuZGluZm8uYwpAQCAtNTE2 LDYgKzUxNiw2NSBAQCBhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoTm9kZSAqbm9kZSwK IAkJcmV0dXJuIChOb2RlICopIG5ld2luZm87CiAJfQogCisJLyoKKwkgKiBXZSBoYXZlIHRvIHBy b2Nlc3MgUmVsQWdnSW5mbyBub2RlcyBzcGVjaWFsbHkuCisJICovCisJaWYgKElzQShub2RlLCBS ZWxBZ2dJbmZvKSkKKwl7CisJCVJlbEFnZ0luZm8gKm9sZGluZm8gPSAoUmVsQWdnSW5mbyAqKSBu b2RlOworCQlSZWxBZ2dJbmZvICpuZXdpbmZvID0gbWFrZU5vZGUoUmVsQWdnSW5mbyk7CisKKwkJ LyogQ29weSBhbGwgZmxhdC1jb3BpYWJsZSBmaWVsZHMgKi8KKwkJbWVtY3B5KG5ld2luZm8sIG9s ZGluZm8sIHNpemVvZihSZWxBZ2dJbmZvKSk7CisKKwkJbmV3aW5mby0+cmVsaWRzID0gYWRqdXN0 X2NoaWxkX3JlbGlkcyhvbGRpbmZvLT5yZWxpZHMsCisJCQkJCQkJCQkJCSAgbmFwcGluZm9zLCBh cHBpbmZvcyk7CisKKwkJbmV3aW5mby0+dGFyZ2V0ID0gKFBhdGhUYXJnZXQgKikKKwkJCWFkanVz dF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcigoTm9kZSAqKSBvbGRpbmZvLT50YXJnZXQsCisJCQkJ CQkJCQkJICAgY29udGV4dCk7CisKKwkJbmV3aW5mby0+YWdnX2lucHV0ID0gKFBhdGhUYXJnZXQg KikKKwkJCWFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcigoTm9kZSAqKSBvbGRpbmZvLT5h Z2dfaW5wdXQsCisJCQkJCQkJCQkJICAgY29udGV4dCk7CisKKwkJbmV3aW5mby0+Z3JvdXBfY2xh dXNlcyA9IChMaXN0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJzX211dGF0b3IoKE5vZGUg Kikgb2xkaW5mby0+Z3JvdXBfY2xhdXNlcywKKwkJCQkJCQkJCQkgICBjb250ZXh0KTsKKworCQlu ZXdpbmZvLT5ncm91cF9leHBycyA9IChMaXN0ICopCisJCQlhZGp1c3RfYXBwZW5kcmVsX2F0dHJz X211dGF0b3IoKE5vZGUgKikgb2xkaW5mby0+Z3JvdXBfZXhwcnMsCisJCQkJCQkJCQkJICAgY29u dGV4dCk7CisKKwkJcmV0dXJuIChOb2RlICopIG5ld2luZm87CisJfQorCisJLyoKKwkgKiBXZSBo YXZlIHRvIHByb2Nlc3MgUGF0aFRhcmdldCBub2RlcyBzcGVjaWFsbHkuCisJICovCisJaWYgKElz QShub2RlLCBQYXRoVGFyZ2V0KSkKKwl7CisJCVBhdGhUYXJnZXQgKm9sZHRhcmdldCA9IChQYXRo VGFyZ2V0ICopIG5vZGU7CisJCVBhdGhUYXJnZXQgKm5ld3RhcmdldCA9IG1ha2VOb2RlKFBhdGhU YXJnZXQpOworCisJCS8qIENvcHkgYWxsIGZsYXQtY29waWFibGUgZmllbGRzICovCisJCW1lbWNw eShuZXd0YXJnZXQsIG9sZHRhcmdldCwgc2l6ZW9mKFBhdGhUYXJnZXQpKTsKKworCQluZXd0YXJn ZXQtPmV4cHJzID0gKExpc3QgKikKKwkJCWFkanVzdF9hcHBlbmRyZWxfYXR0cnNfbXV0YXRvcigo Tm9kZSAqKSBvbGR0YXJnZXQtPmV4cHJzLAorCQkJCQkJCQkJCSAgIGNvbnRleHQpOworCisJCWlm IChvbGR0YXJnZXQtPnNvcnRncm91cHJlZnMpCisJCXsKKwkJCVNpemUJCW5ieXRlcyA9IGxpc3Rf bGVuZ3RoKG9sZHRhcmdldC0+ZXhwcnMpICogc2l6ZW9mKEluZGV4KTsKKworCQkJbmV3dGFyZ2V0 LT5zb3J0Z3JvdXByZWZzID0gKEluZGV4ICopIHBhbGxvYyhuYnl0ZXMpOworCQkJbWVtY3B5KG5l d3RhcmdldC0+c29ydGdyb3VwcmVmcywgb2xkdGFyZ2V0LT5zb3J0Z3JvdXByZWZzLCBuYnl0ZXMp OworCQl9CisKKwkJcmV0dXJuIChOb2RlICopIG5ld3RhcmdldDsKKwl9CisKIAkvKgogCSAqIE5P VEU6IHdlIGRvIG5vdCBuZWVkIHRvIHJlY3Vyc2UgaW50byBzdWJsaW5rcywgYmVjYXVzZSB0aGV5 IHNob3VsZAogCSAqIGFscmVhZHkgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byBzdWJwbGFucyBiZWZv cmUgd2Ugc2VlIHRoZW0uCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9y ZWxub2RlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKaW5kZXggMGU1 MjNkMmViNWIuLmZhYTQ0ZTQ2NTk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv dXRpbC9yZWxub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5j CkBAIC0xNiw2ICsxNiw4IEBACiAKICNpbmNsdWRlIDxsaW1pdHMuaD4KIAorI2luY2x1ZGUgImFj Y2Vzcy9uYnRyZWUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRl ICJvcHRpbWl6ZXIvYXBwZW5kaW5mby5oIgpAQCAtMjcsMTIgKzI5LDE2IEBACiAjaW5jbHVkZSAi b3B0aW1pemVyL3BhdGhzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYWNlaG9sZGVyLmgiCiAj aW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbm5l ci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9yZXN0cmljdGluZm8uaCIKICNpbmNsdWRlICJvcHRp bWl6ZXIvdGxpc3QuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfb3Blci5oIgogI2luY2x1ZGUg InBhcnNlci9wYXJzZV9yZWxhdGlvbi5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlw LmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgorI2luY2x1ZGUgInV0aWxzL3NlbGZ1bmNzLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2Fj aGUuaCIKIAogCiB0eXBlZGVmIHN0cnVjdCBKb2luSGFzaEVudHJ5CkBAIC04Myw2ICs4OSwxNCBA QCBzdGF0aWMgdm9pZCBidWlsZF9jaGlsZF9qb2luX3JlbHRhcmdldChQbGFubmVySW5mbyAqcm9v dCwKIAkJCQkJCQkJCSAgIFJlbE9wdEluZm8gKmNoaWxkcmVsLAogCQkJCQkJCQkJICAgaW50IG5h cHBpbmZvcywKIAkJCQkJCQkJCSAgIEFwcGVuZFJlbEluZm8gKiphcHBpbmZvcyk7CitzdGF0aWMg Ym9vbCBlYWdlcl9hZ2dyZWdhdGlvbl9wb3NzaWJsZV9mb3JfcmVsYXRpb24oUGxhbm5lckluZm8g KnJvb3QsCisJCQkJCQkJCQkJCQkJUmVsT3B0SW5mbyAqcmVsKTsKK3N0YXRpYyBib29sIGluaXRf Z3JvdXBpbmdfdGFyZ2V0cyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAorCQkJ CQkJCQkgIFBhdGhUYXJnZXQgKnRhcmdldCwgUGF0aFRhcmdldCAqYWdnX2lucHV0LAorCQkJCQkJ CQkgIExpc3QgKipncm91cF9jbGF1c2VzLCBMaXN0ICoqZ3JvdXBfZXhwcnMpOworc3RhdGljIGJv b2wgaXNfdmFyX2luX2FnZ3JlZl9vbmx5KFBsYW5uZXJJbmZvICpyb290LCBWYXIgKnZhcik7Citz dGF0aWMgYm9vbCBpc192YXJfbmVlZGVkX2J5X2pvaW4oUGxhbm5lckluZm8gKnJvb3QsIFZhciAq dmFyLCBSZWxPcHRJbmZvICpyZWwpOworc3RhdGljIEluZGV4IGdldF9leHByZXNzaW9uX3NvcnRn cm91cHJlZihQbGFubmVySW5mbyAqcm9vdCwgRXhwciAqZXhwcik7CiAKIAogLyoKQEAgLTI3OCw2 ICsyOTIsOCBAQCBidWlsZF9zaW1wbGVfcmVsKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQs IFJlbE9wdEluZm8gKnBhcmVudCkKIAlyZWwtPmpvaW5pbmZvID0gTklMOwogCXJlbC0+aGFzX2Vj bGFzc19qb2lucyA9IGZhbHNlOwogCXJlbC0+Y29uc2lkZXJfcGFydGl0aW9ud2lzZV9qb2luID0g ZmFsc2U7CS8qIG1pZ2h0IGdldCBjaGFuZ2VkIGxhdGVyICovCisJcmVsLT5hZ2dfaW5mbyA9IE5V TEw7CisJcmVsLT5ncm91cGVkX3JlbCA9IE5VTEw7CiAJcmVsLT5wYXJ0X3NjaGVtZSA9IE5VTEw7 CiAJcmVsLT5ucGFydHMgPSAtMTsKIAlyZWwtPmJvdW5kaW5mbyA9IE5VTEw7CkBAIC00MDgsNiAr NDI0LDEwMyBAQCBidWlsZF9zaW1wbGVfcmVsKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQs IFJlbE9wdEluZm8gKnBhcmVudCkKIAlyZXR1cm4gcmVsOwogfQogCisvKgorICogYnVpbGRfc2lt cGxlX2dyb3VwZWRfcmVsCisgKgkgIENvbnN0cnVjdCBhIG5ldyBSZWxPcHRJbmZvIHJlcHJlc2Vu dGluZyBhIGdyb3VwZWQgdmVyc2lvbiBvZiB0aGUgaW5wdXQKKyAqCSAgYmFzZSByZWxhdGlvbi4K KyAqLworUmVsT3B0SW5mbyAqCitidWlsZF9zaW1wbGVfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKnJlbCkKK3sKKwlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKwlS ZWxBZ2dJbmZvICphZ2dfaW5mbzsKKworCS8qCisJICogV2Ugc2hvdWxkIGhhdmUgYXZhaWxhYmxl IGFnZ3JlZ2F0ZSBleHByZXNzaW9ucyBhbmQgZ3JvdXBpbmcKKwkgKiBleHByZXNzaW9ucywgb3Ro ZXJ3aXNlIHdlIGNhbm5vdCByZWFjaCBoZXJlLgorCSAqLworCUFzc2VydChyb290LT5hZ2dfY2xh dXNlX2xpc3QgIT0gTklMKTsKKwlBc3NlcnQocm9vdC0+Z3JvdXBfZXhwcl9saXN0ICE9IE5JTCk7 CisKKwkvKiBub3RoaW5nIHRvIGRvIGZvciBkdW1teSByZWwgKi8KKwlpZiAoSVNfRFVNTVlfUkVM KHJlbCkpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBQcmVwYXJlIHRoZSBpbmZvcm1hdGlv biBuZWVkZWQgdG8gY3JlYXRlIGdyb3VwZWQgcGF0aHMgZm9yIHRoaXMgYmFzZQorCSAqIHJlbGF0 aW9uLgorCSAqLworCWFnZ19pbmZvID0gY3JlYXRlX3JlbF9hZ2dfaW5mbyhyb290LCByZWwpOwor CWlmIChhZ2dfaW5mbyA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogSWYgZ3Jv dXBlZCBwYXRocyBmb3IgdGhlIGdpdmVuIGJhc2UgcmVsYXRpb24gYXJlIG5vdCBjb25zaWRlcmVk IHVzZWZ1bCwKKwkgKiBza2lwIGJ1aWxkaW5nIHRoZSBncm91cGVkIHJlbGF0aW9uLgorCSAqLwor CWlmICghYWdnX2luZm8tPmFnZ191c2VmdWwpCisJCXJldHVybiBOVUxMOworCisJLyogVHJhY2tz IHRoZSBsb3dlc3Qgam9pbiBsZXZlbCBhdCB3aGljaCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIGFw cGxpZWQgKi8KKwlhZ2dfaW5mby0+YXBwbHlfYXQgPSBibXNfY29weShyZWwtPnJlbGlkcyk7CisK KwkvKiBidWlsZCB0aGUgZ3JvdXBlZCByZWxhdGlvbiAqLworCWdyb3VwZWRfcmVsID0gYnVpbGRf Z3JvdXBlZF9yZWwocm9vdCwgcmVsKTsKKwlncm91cGVkX3JlbC0+cmVsdGFyZ2V0ID0gYWdnX2lu Zm8tPnRhcmdldDsKKwlncm91cGVkX3JlbC0+cm93cyA9IGFnZ19pbmZvLT5ncm91cGVkX3Jvd3M7 CisJZ3JvdXBlZF9yZWwtPmFnZ19pbmZvID0gYWdnX2luZm87CisKKwlyZWwtPmdyb3VwZWRfcmVs ID0gZ3JvdXBlZF9yZWw7CisKKwlyZXR1cm4gZ3JvdXBlZF9yZWw7Cit9CisKKy8qCisgKiBidWls ZF9ncm91cGVkX3JlbAorICoJICBCdWlsZCBhIGdyb3VwZWQgcmVsYXRpb24gYnkgZmxhdCBjb3B5 aW5nIHRoZSBpbnB1dCByZWxhdGlvbiBhbmQgcmVzZXR0aW5nCisgKgkgIHRoZSBuZWNlc3Nhcnkg ZmllbGRzLgorICovCitSZWxPcHRJbmZvICoKK2J1aWxkX2dyb3VwZWRfcmVsKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpyZWwpCit7CisJUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWw7CisK Kwlncm91cGVkX3JlbCA9IG1ha2VOb2RlKFJlbE9wdEluZm8pOworCW1lbWNweShncm91cGVkX3Jl bCwgcmVsLCBzaXplb2YoUmVsT3B0SW5mbykpOworCisJLyoKKwkgKiBjbGVhciBwYXRoIGluZm8K KwkgKi8KKwlncm91cGVkX3JlbC0+cGF0aGxpc3QgPSBOSUw7CisJZ3JvdXBlZF9yZWwtPnBwaWxp c3QgPSBOSUw7CisJZ3JvdXBlZF9yZWwtPnBhcnRpYWxfcGF0aGxpc3QgPSBOSUw7CisJZ3JvdXBl ZF9yZWwtPmNoZWFwZXN0X3N0YXJ0dXBfcGF0aCA9IE5VTEw7CisJZ3JvdXBlZF9yZWwtPmNoZWFw ZXN0X3RvdGFsX3BhdGggPSBOVUxMOworCWdyb3VwZWRfcmVsLT5jaGVhcGVzdF9wYXJhbWV0ZXJp emVkX3BhdGhzID0gTklMOworCisJLyoKKwkgKiBjbGVhciBwYXJ0aXRpb24gaW5mbworCSAqLwor CWdyb3VwZWRfcmVsLT5wYXJ0X3NjaGVtZSA9IE5VTEw7CisJZ3JvdXBlZF9yZWwtPm5wYXJ0cyA9 IC0xOworCWdyb3VwZWRfcmVsLT5ib3VuZGluZm8gPSBOVUxMOworCWdyb3VwZWRfcmVsLT5wYXJ0 Ym91bmRzX21lcmdlZCA9IGZhbHNlOworCWdyb3VwZWRfcmVsLT5wYXJ0aXRpb25fcXVhbCA9IE5J TDsKKwlncm91cGVkX3JlbC0+cGFydF9yZWxzID0gTlVMTDsKKwlncm91cGVkX3JlbC0+bGl2ZV9w YXJ0cyA9IE5VTEw7CisJZ3JvdXBlZF9yZWwtPmFsbF9wYXJ0cmVscyA9IE5VTEw7CisJZ3JvdXBl ZF9yZWwtPnBhcnRleHBycyA9IE5VTEw7CisJZ3JvdXBlZF9yZWwtPm51bGxhYmxlX3BhcnRleHBy cyA9IE5VTEw7CisJZ3JvdXBlZF9yZWwtPmNvbnNpZGVyX3BhcnRpdGlvbndpc2Vfam9pbiA9IGZh bHNlOworCisJLyoKKwkgKiBjbGVhciBzaXplIGVzdGltYXRlcworCSAqLworCWdyb3VwZWRfcmVs LT5yb3dzID0gMDsKKworCXJldHVybiBncm91cGVkX3JlbDsKK30KKwogLyoKICAqIGZpbmRfYmFz ZV9yZWwKICAqCSAgRmluZCBhIGJhc2Ugb3Igb3RoZXJyZWwgcmVsYXRpb24gZW50cnksIHdoaWNo IG11c3QgYWxyZWFkeSBleGlzdC4KQEAgLTc1OSw2ICs4NzIsOCBAQCBidWlsZF9qb2luX3JlbChQ bGFubmVySW5mbyAqcm9vdCwKIAlqb2lucmVsLT5qb2luaW5mbyA9IE5JTDsKIAlqb2lucmVsLT5o YXNfZWNsYXNzX2pvaW5zID0gZmFsc2U7CiAJam9pbnJlbC0+Y29uc2lkZXJfcGFydGl0aW9ud2lz ZV9qb2luID0gZmFsc2U7CS8qIG1pZ2h0IGdldCBjaGFuZ2VkIGxhdGVyICovCisJam9pbnJlbC0+ YWdnX2luZm8gPSBOVUxMOworCWpvaW5yZWwtPmdyb3VwZWRfcmVsID0gTlVMTDsKIAlqb2lucmVs LT5wYXJlbnQgPSBOVUxMOwogCWpvaW5yZWwtPnRvcF9wYXJlbnQgPSBOVUxMOwogCWpvaW5yZWwt PnRvcF9wYXJlbnRfcmVsaWRzID0gTlVMTDsKQEAgLTk0NSw2ICsxMDYwLDggQEAgYnVpbGRfY2hp bGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKm91dGVyX3JlbCwKIAlq b2lucmVsLT5qb2luaW5mbyA9IE5JTDsKIAlqb2lucmVsLT5oYXNfZWNsYXNzX2pvaW5zID0gZmFs c2U7CiAJam9pbnJlbC0+Y29uc2lkZXJfcGFydGl0aW9ud2lzZV9qb2luID0gZmFsc2U7CS8qIG1p Z2h0IGdldCBjaGFuZ2VkIGxhdGVyICovCisJam9pbnJlbC0+YWdnX2luZm8gPSBOVUxMOworCWpv aW5yZWwtPmdyb3VwZWRfcmVsID0gTlVMTDsKIAlqb2lucmVsLT5wYXJlbnQgPSBwYXJlbnRfam9p bnJlbDsKIAlqb2lucmVsLT50b3BfcGFyZW50ID0gcGFyZW50X2pvaW5yZWwtPnRvcF9wYXJlbnQg PyBwYXJlbnRfam9pbnJlbC0+dG9wX3BhcmVudCA6IHBhcmVudF9qb2lucmVsOwogCWpvaW5yZWwt PnRvcF9wYXJlbnRfcmVsaWRzID0gam9pbnJlbC0+dG9wX3BhcmVudC0+cmVsaWRzOwpAQCAtMjUy MywzICsyNjQwLDUxNCBAQCBidWlsZF9jaGlsZF9qb2luX3JlbHRhcmdldChQbGFubmVySW5mbyAq cm9vdCwKIAljaGlsZHJlbC0+cmVsdGFyZ2V0LT5jb3N0LnBlcl90dXBsZSA9IHBhcmVudHJlbC0+ cmVsdGFyZ2V0LT5jb3N0LnBlcl90dXBsZTsKIAljaGlsZHJlbC0+cmVsdGFyZ2V0LT53aWR0aCA9 IHBhcmVudHJlbC0+cmVsdGFyZ2V0LT53aWR0aDsKIH0KKworLyoKKyAqIGNyZWF0ZV9yZWxfYWdn X2luZm8KKyAqCSAgQ3JlYXRlIHRoZSBSZWxBZ2dJbmZvIHN0cnVjdHVyZSBmb3IgdGhlIGdpdmVu IHJlbGF0aW9uIGlmIGl0IGNhbiBwcm9kdWNlCisgKgkgIGdyb3VwZWQgcGF0aHMuICBUaGUgZ2l2 ZW4gcmVsYXRpb24gaXMgdGhlIG5vbi1ncm91cGVkIG9uZSB3aGljaCBoYXMgdGhlCisgKgkgIHJl bHRhcmdldCBhbHJlYWR5IGNvbnN0cnVjdGVkLgorICovCitSZWxBZ2dJbmZvICoKK2NyZWF0ZV9y ZWxfYWdnX2luZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCkKK3sKKwlMaXN0 Q2VsbCAgICpsYzsKKwlSZWxBZ2dJbmZvICpyZXN1bHQ7CisJUGF0aFRhcmdldCAqYWdnX2lucHV0 OworCVBhdGhUYXJnZXQgKnRhcmdldDsKKwlMaXN0CSAgICpncm91cF9jbGF1c2VzID0gTklMOwor CUxpc3QJICAgKmdyb3VwX2V4cHJzID0gTklMOworCisJLyoKKwkgKiBUaGUgbGlzdHMgb2YgYWdn cmVnYXRlIGV4cHJlc3Npb25zIGFuZCBncm91cGluZyBleHByZXNzaW9ucyBzaG91bGQgaGF2ZQor CSAqIGJlZW4gY29uc3RydWN0ZWQuCisJICovCisJQXNzZXJ0KHJvb3QtPmFnZ19jbGF1c2VfbGlz dCAhPSBOSUwpOworCUFzc2VydChyb290LT5ncm91cF9leHByX2xpc3QgIT0gTklMKTsKKworCS8q CisJICogSWYgdGhpcyBpcyBhIGNoaWxkIHJlbCwgdGhlIGdyb3VwZWQgcmVsIGZvciBpdHMgcGFy ZW50IHJlbCBtdXN0IGhhdmUKKwkgKiBiZWVuIGNyZWF0ZWQgaWYgaXQgY2FuLiAgU28gd2UgY2Fu IGp1c3QgdXNlIHBhcmVudCdzIFJlbEFnZ0luZm8gaWYKKwkgKiB0aGVyZSBpcyBvbmUsIHdpdGgg YXBwcm9wcmlhdGUgdmFyaWFibGUgc3Vic3RpdHV0aW9ucy4KKwkgKi8KKwlpZiAoSVNfT1RIRVJf UkVMKHJlbCkpCisJeworCQlSZWxPcHRJbmZvICpncm91cGVkX3JlbDsKKwkJUmVsQWdnSW5mbyAq YWdnX2luZm87CisKKwkJZ3JvdXBlZF9yZWwgPSByZWwtPnRvcF9wYXJlbnQtPmdyb3VwZWRfcmVs OworCQlpZiAoZ3JvdXBlZF9yZWwgPT0gTlVMTCkKKwkJCXJldHVybiBOVUxMOworCisJCUFzc2Vy dChJU19HUk9VUEVEX1JFTChncm91cGVkX3JlbCkpOworCisJCS8qIE11c3QgZG8gbXVsdGktbGV2 ZWwgdHJhbnNmb3JtYXRpb24gKi8KKwkJYWdnX2luZm8gPSAoUmVsQWdnSW5mbyAqKQorCQkJYWRq dXN0X2FwcGVuZHJlbF9hdHRyc19tdWx0aWxldmVsKHJvb3QsCisJCQkJCQkJCQkJCSAgKE5vZGUg KikgZ3JvdXBlZF9yZWwtPmFnZ19pbmZvLAorCQkJCQkJCQkJCQkgIHJlbCwKKwkJCQkJCQkJCQkJ ICByZWwtPnRvcF9wYXJlbnQpOworCisJCWFnZ19pbmZvLT5ncm91cGVkX3Jvd3MgPQorCQkJZXN0 aW1hdGVfbnVtX2dyb3Vwcyhyb290LCBhZ2dfaW5mby0+Z3JvdXBfZXhwcnMsCisJCQkJCQkJCXJl bC0+cm93cywgTlVMTCwgTlVMTCk7CisKKwkJYWdnX2luZm8tPmFwcGx5X2F0ID0gTlVMTDsJLyog Y2FsbGVyIHdpbGwgY2hhbmdlIHRoaXMgbGF0ZXIgKi8KKworCQkvKgorCQkgKiBUaGUgZ3JvdXBl ZCBwYXRocyBmb3IgdGhlIGdpdmVuIHJlbGF0aW9uIGFyZSBjb25zaWRlcmVkIHVzZWZ1bCBpZmYK KwkJICogdGhlIGF2ZXJhZ2UgZ3JvdXAgc2l6ZSBpcyBubyBsZXNzIHRoYW4gbWluX2VhZ2VyX2Fn Z19ncm91cF9zaXplLgorCQkgKi8KKwkJYWdnX2luZm8tPmFnZ191c2VmdWwgPQorCQkJKHJlbC0+ cm93cyAvIGFnZ19pbmZvLT5ncm91cGVkX3Jvd3MpID49IG1pbl9lYWdlcl9hZ2dfZ3JvdXBfc2l6 ZTsKKworCQlyZXR1cm4gYWdnX2luZm87CisJfQorCisJLyogQ2hlY2sgaWYgaXQncyBwb3NzaWJs ZSB0byBwcm9kdWNlIGdyb3VwZWQgcGF0aHMgZm9yIHRoaXMgcmVsYXRpb24uICovCisJaWYgKCFl YWdlcl9hZ2dyZWdhdGlvbl9wb3NzaWJsZV9mb3JfcmVsYXRpb24ocm9vdCwgcmVsKSkKKwkJcmV0 dXJuIE5VTEw7CisKKwkvKgorCSAqIENyZWF0ZSB0YXJnZXRzIGZvciB0aGUgZ3JvdXBlZCBwYXRo cyBhbmQgZm9yIHRoZSBpbnB1dCBwYXRocyBvZiB0aGUKKwkgKiBncm91cGVkIHBhdGhzLgorCSAq LworCXRhcmdldCA9IGNyZWF0ZV9lbXB0eV9wYXRodGFyZ2V0KCk7CisJYWdnX2lucHV0ID0gY3Jl YXRlX2VtcHR5X3BhdGh0YXJnZXQoKTsKKworCS8qIC4uLiBhbmQgaW5pdGlhbGl6ZSB0aGVzZSB0 YXJnZXRzICovCisJaWYgKCFpbml0X2dyb3VwaW5nX3RhcmdldHMocm9vdCwgcmVsLCB0YXJnZXQs IGFnZ19pbnB1dCwKKwkJCQkJCQkgICAmZ3JvdXBfY2xhdXNlcywgJmdyb3VwX2V4cHJzKSkKKwkJ cmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIEVhZ2VyIGFnZ3JlZ2F0aW9uIGlzIG5vdCBhcHBsaWNh YmxlIGlmIHRoZXJlIGFyZSBubyBhdmFpbGFibGUgZ3JvdXBpbmcKKwkgKiBleHByZXNzaW9ucy4K KwkgKi8KKwlpZiAobGlzdF9sZW5ndGgoZ3JvdXBfY2xhdXNlcykgPT0gMCkKKwkJcmV0dXJuIE5V TEw7CisKKwkvKiBidWlsZCB0aGUgUmVsQWdnSW5mbyByZXN1bHQgKi8KKwlyZXN1bHQgPSBtYWtl Tm9kZShSZWxBZ2dJbmZvKTsKKworCXJlc3VsdC0+Z3JvdXBfY2xhdXNlcyA9IGdyb3VwX2NsYXVz ZXM7CisJcmVzdWx0LT5ncm91cF9leHBycyA9IGdyb3VwX2V4cHJzOworCisJLyogQ2FsY3VsYXRl IHBhdGhrZXlzIHRoYXQgcmVwcmVzZW50IHRoaXMgZ3JvdXBpbmcgcmVxdWlyZW1lbnRzICovCisJ cmVzdWx0LT5ncm91cF9wYXRoa2V5cyA9CisJCW1ha2VfcGF0aGtleXNfZm9yX3NvcnRjbGF1c2Vz KHJvb3QsIHJlc3VsdC0+Z3JvdXBfY2xhdXNlcywKKwkJCQkJCQkJCSAgbWFrZV90bGlzdF9mcm9t X3BhdGh0YXJnZXQodGFyZ2V0KSk7CisKKwkvKiBBZGQgYWdncmVnYXRlcyB0byB0aGUgZ3JvdXBp bmcgdGFyZ2V0ICovCisJZm9yZWFjaChsYywgcm9vdC0+YWdnX2NsYXVzZV9saXN0KQorCXsKKwkJ QWdnQ2xhdXNlSW5mbyAqYWNfaW5mbyA9IGxmaXJzdF9ub2RlKEFnZ0NsYXVzZUluZm8sIGxjKTsK KwkJQWdncmVmCSAgICphZ2dyZWY7CisKKwkJQXNzZXJ0KElzQShhY19pbmZvLT5hZ2dyZWYsIEFn Z3JlZikpOworCisJCWFnZ3JlZiA9IChBZ2dyZWYgKikgY29weU9iamVjdChhY19pbmZvLT5hZ2dy ZWYpOworCQltYXJrX3BhcnRpYWxfYWdncmVmKGFnZ3JlZiwgQUdHU1BMSVRfSU5JVElBTF9TRVJJ QUwpOworCisJCWFkZF9jb2x1bW5fdG9fcGF0aHRhcmdldCh0YXJnZXQsIChFeHByICopIGFnZ3Jl ZiwgMCk7CisJfQorCisJLyogU2V0IHRoZSBlc3RpbWF0ZWQgZXZhbCBjb3N0IGFuZCBvdXRwdXQg d2lkdGggZm9yIGJvdGggdGFyZ2V0cyAqLworCXNldF9wYXRodGFyZ2V0X2Nvc3Rfd2lkdGgocm9v dCwgdGFyZ2V0KTsKKwlzZXRfcGF0aHRhcmdldF9jb3N0X3dpZHRoKHJvb3QsIGFnZ19pbnB1dCk7 CisKKwlyZXN1bHQtPnJlbGlkcyA9IGJtc19jb3B5KHJlbC0+cmVsaWRzKTsKKwlyZXN1bHQtPnRh cmdldCA9IHRhcmdldDsKKwlyZXN1bHQtPmFnZ19pbnB1dCA9IGFnZ19pbnB1dDsKKwlyZXN1bHQt Pmdyb3VwZWRfcm93cyA9IGVzdGltYXRlX251bV9ncm91cHMocm9vdCwgcmVzdWx0LT5ncm91cF9l eHBycywKKwkJCQkJCQkJCQkJICAgcmVsLT5yb3dzLCBOVUxMLCBOVUxMKTsKKwlyZXN1bHQtPmFw cGx5X2F0ID0gTlVMTDsJLyogY2FsbGVyIHdpbGwgY2hhbmdlIHRoaXMgbGF0ZXIgKi8KKworCS8q CisJICogVGhlIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiByZWxhdGlvbiBhcmUgY29uc2lk ZXJlZCB1c2VmdWwgaWZmIHRoZQorCSAqIGF2ZXJhZ2UgZ3JvdXAgc2l6ZSBpcyBubyBsZXNzIHRo YW4gbWluX2VhZ2VyX2FnZ19ncm91cF9zaXplLgorCSAqLworCXJlc3VsdC0+YWdnX3VzZWZ1bCA9 CisJCShyZWwtPnJvd3MgLyByZXN1bHQtPmdyb3VwZWRfcm93cykgPj0gbWluX2VhZ2VyX2FnZ19n cm91cF9zaXplOworCisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIGVhZ2VyX2FnZ3JlZ2F0 aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlvbgorICogCSAgQ2hlY2sgaWYgaXQncyBwb3NzaWJsZSB0 byBwcm9kdWNlIGdyb3VwZWQgcGF0aHMgZm9yIHRoZSBnaXZlbiByZWxhdGlvbi4KKyAqLworc3Rh dGljIGJvb2wKK2VhZ2VyX2FnZ3JlZ2F0aW9uX3Bvc3NpYmxlX2Zvcl9yZWxhdGlvbihQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKQoreworCUxpc3RDZWxsICAgKmxjOworCWludAkJ CWN1cl9yZWxpZDsKKworCS8qCisJICogQ2hlY2sgdG8gc2VlIGlmIHRoZSBnaXZlbiByZWxhdGlv biBpcyBpbiB0aGUgbnVsbGFibGUgc2lkZSBvZiBhbiBvdXRlcgorCSAqIGpvaW4uICBJbiB0aGlz IGNhc2UsIHdlIGNhbm5vdCBwdXNoIGEgcGFydGlhbCBhZ2dyZWdhdGlvbiBkb3duIHRvIHRoZQor CSAqIHJlbGF0aW9uLCBiZWNhdXNlIHRoZSBOVUxMLWV4dGVuZGVkIHJvd3MgcHJvZHVjZWQgYnkg dGhlIG91dGVyIGpvaW4KKwkgKiB3b3VsZCBub3QgYmUgYXZhaWxhYmxlIHdoZW4gd2UgcGVyZm9y bSB0aGUgcGFydGlhbCBhZ2dyZWdhdGlvbiwgd2hpbGUKKwkgKiB3aXRoIGEgbm9uLWVhZ2VyLWFn Z3JlZ2F0aW9uIHBsYW4gdGhlc2Ugcm93cyBhcmUgYXZhaWxhYmxlIGZvciB0aGUKKwkgKiB0b3At bGV2ZWwgYWdncmVnYXRpb24uICBEb2luZyBzbyBtYXkgcmVzdWx0IGluIHRoZSByb3dzIGJlaW5n IGdyb3VwZWQKKwkgKiBkaWZmZXJlbnRseSB0aGFuIGV4cGVjdGVkLCBvciBwcm9kdWNlIGluY29y cmVjdCB2YWx1ZXMgZnJvbSB0aGUKKwkgKiBhZ2dyZWdhdGUgZnVuY3Rpb25zLgorCSAqLworCWN1 cl9yZWxpZCA9IC0xOworCXdoaWxlICgoY3VyX3JlbGlkID0gYm1zX25leHRfbWVtYmVyKHJlbC0+ cmVsaWRzLCBjdXJfcmVsaWQpKSA+PSAwKQorCXsKKwkJUmVsT3B0SW5mbyAqYmFzZXJlbCA9IGZp bmRfYmFzZV9yZWxfaWdub3JlX2pvaW4ocm9vdCwgY3VyX3JlbGlkKTsKKworCQlpZiAoYmFzZXJl bCA9PSBOVUxMKQorCQkJY29udGludWU7CQkJLyogaWdub3JlIG91dGVyIGpvaW5zIGluIHJlbC0+ cmVsaWRzICovCisKKwkJaWYgKCFibXNfaXNfc3Vic2V0KGJhc2VyZWwtPm51bGxpbmdfcmVsaWRz LCByZWwtPnJlbGlkcykpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyoKKwkgKiBGb3Igbm93 IHdlIGRvbid0IHRyeSB0byBzdXBwb3J0IFBsYWNlSG9sZGVyVmFycy4KKwkgKi8KKwlmb3JlYWNo KGxjLCByZWwtPnJlbHRhcmdldC0+ZXhwcnMpCisJeworCQlFeHByCSAgICpleHByID0gbGZpcnN0 KGxjKTsKKworCQlpZiAoSXNBKGV4cHIsIFBsYWNlSG9sZGVyVmFyKSkKKwkJCXJldHVybiBmYWxz ZTsKKwl9CisKKwkvKiBDYWxsZXIgc2hvdWxkIG9ubHkgcGFzcyBiYXNlIHJlbGF0aW9ucyBvciBq b2lucy4gKi8KKwlBc3NlcnQocmVsLT5yZWxvcHRraW5kID09IFJFTE9QVF9CQVNFUkVMIHx8CisJ CSAgIHJlbC0+cmVsb3B0a2luZCA9PSBSRUxPUFRfSk9JTlJFTCk7CisKKwkvKgorCSAqIENoZWNr IGlmIGFsbCBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgY2FuIGJlIGV2YWx1YXRlZCBvbiB0aGlzIHJl bGF0aW9uCisJICogbGV2ZWwuCisJICovCisJZm9yZWFjaChsYywgcm9vdC0+YWdnX2NsYXVzZV9s aXN0KQorCXsKKwkJQWdnQ2xhdXNlSW5mbyAqYWNfaW5mbyA9IGxmaXJzdF9ub2RlKEFnZ0NsYXVz ZUluZm8sIGxjKTsKKworCQlBc3NlcnQoSXNBKGFjX2luZm8tPmFnZ3JlZiwgQWdncmVmKSk7CisK KwkJLyoKKwkJICogR2l2ZSB1cCBpZiBhbnkgYWdncmVnYXRlIHJlcXVpcmVzIHJlbGF0aW9ucyBv dGhlciB0aGFuIHRoZSBjdXJyZW50CisJCSAqIG9uZS4gIElmIHRoZSBhZ2dyZWdhdGUgcmVxdWly ZXMgdGhlIGN1cnJlbnQgcmVsYXRpb24gcGx1cworCQkgKiBhZGRpdGlvbmFsIHJlbGF0aW9ucywg Z3JvdXBpbmcgdGhlIGN1cnJlbnQgcmVsYXRpb24gY291bGQgbWFrZSBzb21lCisJCSAqIGlucHV0 IHJvd3MgdW5hdmFpbGFibGUgZm9yIHRoZSBoaWdoZXIgYWdncmVnYXRlIGFuZCBtYXkgcmVkdWNl IHRoZQorCQkgKiBudW1iZXIgb2YgaW5wdXQgcm93cyBpdCByZWNlaXZlcy4gIElmIHRoZSBhZ2dy ZWdhdGUgZG9lcyBub3QKKwkJICogcmVxdWlyZSB0aGUgY3VycmVudCByZWxhdGlvbiBhdCBhbGws IGl0IHNob3VsZCBub3QgYmUgZ3JvdXBlZCwgYXMKKwkJICogd2UgZG8gbm90IHN1cHBvcnQgam9p bmluZyB0d28gZ3JvdXBlZCByZWxhdGlvbnMuCisJCSAqLworCQlpZiAoIWJtc19pc19zdWJzZXQo YWNfaW5mby0+YWdnX2V2YWxfYXQsIHJlbC0+cmVsaWRzKSkKKwkJCXJldHVybiBmYWxzZTsKKwl9 CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIGluaXRfZ3JvdXBpbmdfdGFyZ2V0cworICoJ ICBJbml0aWFsaXplIHRoZSB0YXJnZXQgZm9yIGdyb3VwZWQgcGF0aHMgKHRhcmdldCkgYXMgd2Vs bCBhcyB0aGUgdGFyZ2V0CisgKgkgIGZvciBwYXRocyB0aGF0IGdlbmVyYXRlIGlucHV0IGZvciB0 aGUgZ3JvdXBlZCBwYXRocyAoYWdnX2lucHV0KS4KKyAqCisgKiBXZSBhbHNvIGNvbnN0cnVjdCB0 aGUgbGlzdCBvZiBTb3J0R3JvdXBDbGF1c2VzIGFuZCB0aGUgbGlzdCBvZiBncm91cGluZworICog ZXhwcmVzc2lvbnMgZm9yIHRoZSBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLCBhbmQgcmV0dXJuIHRoZW0g aW4gKmdyb3VwX2NsYXVzZQorICogYW5kICpncm91cF9leHBycy4KKyAqCisgKiBSZXR1cm4gdHJ1 ZSBpZiB0aGUgdGFyZ2V0cyBjb3VsZCBiZSBpbml0aWFsaXplZCwgZmFsc2Ugb3RoZXJ3aXNlLgor ICovCitzdGF0aWMgYm9vbAoraW5pdF9ncm91cGluZ190YXJnZXRzKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCisJCQkJCSAgUGF0aFRhcmdldCAqdGFyZ2V0LCBQYXRoVGFyZ2V0 ICphZ2dfaW5wdXQsCisJCQkJCSAgTGlzdCAqKmdyb3VwX2NsYXVzZXMsIExpc3QgKipncm91cF9l eHBycykKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlMaXN0CSAgICpwb3NzaWJseV9kZXBlbmRlbnQg PSBOSUw7CisJSW5kZXgJCW1heFNvcnRHcm91cFJlZjsKKworCS8qIElkZW50aWZ5IHRoZSBtYXgg c29ydGdyb3VwcmVmICovCisJbWF4U29ydEdyb3VwUmVmID0gMDsKKwlmb3JlYWNoKGxjLCByb290 LT5wcm9jZXNzZWRfdGxpc3QpCisJeworCQlJbmRleAkJcmVmID0gKChUYXJnZXRFbnRyeSAqKSBs Zmlyc3QobGMpKS0+cmVzc29ydGdyb3VwcmVmOworCisJCWlmIChyZWYgPiBtYXhTb3J0R3JvdXBS ZWYpCisJCQltYXhTb3J0R3JvdXBSZWYgPSByZWY7CisJfQorCisJLyoKKwkgKiBBdCB0aGlzIHBv aW50LCBhbGwgVmFycyBmcm9tIHRoaXMgcmVsYXRpb24gdGhhdCBhcmUgbmVlZGVkIGJ5IHVwcGVy CisJICogam9pbnMgb3IgYXJlIHJlcXVpcmVkIGluIHRoZSBmaW5hbCB0YXJnZXRsaXN0IHNob3Vs ZCBhbHJlYWR5IGJlIHByZXNlbnQKKwkgKiBpbiBpdHMgcmVsdGFyZ2V0LiAgVGhlcmVmb3JlLCB3 ZSBjYW4gc2FmZWx5IGl0ZXJhdGUgb3ZlciB0aGlzCisJICogcmVsYXRpb24ncyByZWx0YXJnZXQt PmV4cHJzIHRvIGNvbnN0cnVjdCB0aGUgUGF0aFRhcmdldCBhbmQgZ3JvdXBpbmcKKwkgKiBjbGF1 c2VzIGZvciB0aGUgZ3JvdXBlZCBwYXRocy4KKwkgKi8KKwlmb3JlYWNoKGxjLCByZWwtPnJlbHRh cmdldC0+ZXhwcnMpCisJeworCQlFeHByCSAgICpleHByID0gKEV4cHIgKikgbGZpcnN0KGxjKTsK KwkJSW5kZXgJCXNvcnRncm91cHJlZjsKKworCQkvKgorCQkgKiBHaXZlbiB0aGF0IFBsYWNlSG9s ZGVyVmFyIGN1cnJlbnRseSBwcmV2ZW50cyB1cyBmcm9tIGRvaW5nIGVhZ2VyCisJCSAqIGFnZ3Jl Z2F0aW9uLCB0aGUgc291cmNlIHRhcmdldCBjYW5ub3QgY29udGFpbiBhbnl0aGluZyBtb3JlIGNv bXBsZXgKKwkJICogdGhhbiBhIFZhci4KKwkJICovCisJCUFzc2VydChJc0EoZXhwciwgVmFyKSk7 CisKKwkJLyoKKwkJICogR2V0IHRoZSBzb3J0Z3JvdXByZWYgb2YgdGhlIGV4cHIgaWYgaXQgaXMg Zm91bmQgYW1vbmcsIG9yIGNhbiBiZQorCQkgKiBkZWR1Y2VkIGZyb20sIHRoZSBvcmlnaW5hbCBn cm91cGluZyBleHByZXNzaW9ucy4KKwkJICovCisJCXNvcnRncm91cHJlZiA9IGdldF9leHByZXNz aW9uX3NvcnRncm91cHJlZihyb290LCBleHByKTsKKwkJaWYgKHNvcnRncm91cHJlZiA+IDApCisJ CXsKKwkJCVNvcnRHcm91cENsYXVzZSAqc2djOworCisJCQkvKiBGaW5kIHRoZSBtYXRjaGluZyBT b3J0R3JvdXBDbGF1c2UgKi8KKwkJCXNnYyA9IGdldF9zb3J0Z3JvdXByZWZfY2xhdXNlKHNvcnRn cm91cHJlZiwgcm9vdC0+cHJvY2Vzc2VkX2dyb3VwQ2xhdXNlKTsKKwkJCUFzc2VydChzZ2MtPnRs ZVNvcnRHcm91cFJlZiA8PSBtYXhTb3J0R3JvdXBSZWYpOworCisJCQkvKgorCQkJICogSWYgdGhl IHRhcmdldCBleHByZXNzaW9uIGlzIHRvIGJlIHVzZWQgYXMgYSBncm91cGluZyBrZXksIGl0CisJ CQkgKiBzaG91bGQgYmUgZW1pdHRlZCBieSB0aGUgZ3JvdXBlZCBwYXRocyB0aGF0IGhhdmUgYmVl biBwdXNoZWQKKwkJCSAqIGRvd24gdG8gdGhpcyByZWxhdGlvbiBsZXZlbC4KKwkJCSAqLworCQkJ YWRkX2NvbHVtbl90b19wYXRodGFyZ2V0KHRhcmdldCwgZXhwciwgc29ydGdyb3VwcmVmKTsKKwor CQkJLyoKKwkJCSAqIC4uLiBhbmQgaXQgYWxzbyBzaG91bGQgYmUgZW1pdHRlZCBieSB0aGUgaW5w dXQgcGF0aHMuCisJCQkgKi8KKwkJCWFkZF9jb2x1bW5fdG9fcGF0aHRhcmdldChhZ2dfaW5wdXQs IGV4cHIsIHNvcnRncm91cHJlZik7CisKKwkJCS8qCisJCQkgKiBSZWNvcmQgdGhpcyBTb3J0R3Jv dXBDbGF1c2UgYW5kIGdyb3VwaW5nIGV4cHJlc3Npb24uICBOb3RlIHRoYXQKKwkJCSAqIHRoaXMg U29ydEdyb3VwQ2xhdXNlIG1pZ2h0IGhhdmUgYWxyZWFkeSBiZWVuIHJlY29yZGVkLgorCQkJICov CisJCQlpZiAoIWxpc3RfbWVtYmVyKCpncm91cF9jbGF1c2VzLCBzZ2MpKQorCQkJeworCQkJCSpn cm91cF9jbGF1c2VzID0gbGFwcGVuZCgqZ3JvdXBfY2xhdXNlcywgc2djKTsKKwkJCQkqZ3JvdXBf ZXhwcnMgPSBsYXBwZW5kKCpncm91cF9leHBycywgZXhwcik7CisJCQl9CisJCX0KKwkJZWxzZSBp ZiAoaXNfdmFyX25lZWRlZF9ieV9qb2luKHJvb3QsIChWYXIgKikgZXhwciwgcmVsKSkKKwkJewor CQkJLyoKKwkJCSAqIFRoZSBleHByZXNzaW9uIGlzIG5lZWRlZCBmb3IgYW4gdXBwZXIgam9pbiBi dXQgaXMgbmVpdGhlciBpbgorCQkJICogdGhlIEdST1VQIEJZIGNsYXVzZSBub3IgZGVyaXZhYmxl IGZyb20gaXQgdXNpbmcgRUMgKG90aGVyd2lzZSwKKwkJCSAqIGl0IHdvdWxkIGhhdmUgYWxyZWFk eSBiZWVuIGluY2x1ZGVkIGluIHRoZSB0YXJnZXRzIGFib3ZlKS4gIFdlCisJCQkgKiBuZWVkIHRv IGNyZWF0ZSBhIHNwZWNpYWwgU29ydEdyb3VwQ2xhdXNlIGZvciB0aGlzIGV4cHJlc3Npb24uCisJ CQkgKgorCQkJICogSXQgaXMgaW1wb3J0YW50IHRvIGluY2x1ZGUgc3VjaCBleHByZXNzaW9ucyBp biB0aGUgZ3JvdXBpbmcKKwkJCSAqIGtleXMuICBUaGlzIGlzIGVzc2VudGlhbCB0byBlbnN1cmUg dGhhdCBhbiBhZ2dyZWdhdGVkIHJvdyBmcm9tCisJCQkgKiB0aGUgcGFydGlhbCBhZ2dyZWdhdGlv biBtYXRjaGVzIHRoZSBvdGhlciBzaWRlIG9mIHRoZSBqb2luIGlmCisJCQkgKiBhbmQgb25seSBp ZiBlYWNoIHJvdyBpbiB0aGUgcGFydGlhbCBncm91cCBkb2VzLiAgVGhpcyBlbnN1cmVzCisJCQkg KiB0aGF0IGFsbCByb3dzIHdpdGhpbiB0aGUgc2FtZSBwYXJ0aWFsIGdyb3VwIHNoYXJlIHRoZSBz YW1lCisJCQkgKiAnZGVzdGlueScsIHdoaWNoIGlzIGNydWNpYWwgZm9yIG1haW50YWluaW5nIGNv cnJlY3RuZXNzLgorCQkJICovCisJCQlTb3J0R3JvdXBDbGF1c2UgKnNnYzsKKwkJCVR5cGVDYWNo ZUVudHJ5ICp0Y2U7CisJCQlPaWQJCQllcXVhbGltYWdlcHJvYzsKKworCQkJLyoKKwkJCSAqIEJ1 dCBmaXJzdCwgY2hlY2sgaWYgZXF1YWxpdHkgaW1wbGllcyBpbWFnZSBlcXVhbGl0eSBmb3IgdGhp cworCQkJICogZXhwcmVzc2lvbi4gIElmIG5vdCwgd2UgY2Fubm90IHVzZSBpdCBhcyBhIGdyb3Vw aW5nIGtleS4gIFNlZQorCQkJICogY29tbWVudHMgaW4gY3JlYXRlX2dyb3VwaW5nX2V4cHJfaW5m b3MoKS4KKwkJCSAqLworCQkJdGNlID0gbG9va3VwX3R5cGVfY2FjaGUoZXhwclR5cGUoKE5vZGUg KikgZXhwciksCisJCQkJCQkJCQlUWVBFQ0FDSEVfQlRSRUVfT1BGQU1JTFkpOworCQkJaWYgKCFP aWRJc1ZhbGlkKHRjZS0+YnRyZWVfb3BmKSB8fAorCQkJCSFPaWRJc1ZhbGlkKHRjZS0+YnRyZWVf b3BpbnR5cGUpKQorCQkJCXJldHVybiBmYWxzZTsKKworCQkJZXF1YWxpbWFnZXByb2MgPSBnZXRf b3BmYW1pbHlfcHJvYyh0Y2UtPmJ0cmVlX29wZiwKKwkJCQkJCQkJCQkJICAgdGNlLT5idHJlZV9v cGludHlwZSwKKwkJCQkJCQkJCQkJICAgdGNlLT5idHJlZV9vcGludHlwZSwKKwkJCQkJCQkJCQkJ ICAgQlRFUVVBTElNQUdFX1BST0MpOworCQkJaWYgKCFPaWRJc1ZhbGlkKGVxdWFsaW1hZ2Vwcm9j KSB8fAorCQkJCSFEYXR1bUdldEJvb2woT2lkRnVuY3Rpb25DYWxsMUNvbGwoZXF1YWxpbWFnZXBy b2MsCisJCQkJCQkJCQkJCQkgICB0Y2UtPnR5cGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkJCSAgIE9i amVjdElkR2V0RGF0dW0odGNlLT5idHJlZV9vcGludHlwZSkpKSkKKwkJCQlyZXR1cm4gZmFsc2U7 CisKKwkJCS8qIENyZWF0ZSB0aGUgU29ydEdyb3VwQ2xhdXNlLiAqLworCQkJc2djID0gbWFrZU5v ZGUoU29ydEdyb3VwQ2xhdXNlKTsKKworCQkJLyogSW5pdGlhbGl6ZSB0aGUgU29ydEdyb3VwQ2xh dXNlLiAqLworCQkJc2djLT50bGVTb3J0R3JvdXBSZWYgPSArK21heFNvcnRHcm91cFJlZjsKKwkJ CWdldF9zb3J0X2dyb3VwX29wZXJhdG9ycyhleHByVHlwZSgoTm9kZSAqKSBleHByKSwKKwkJCQkJ CQkJCSBmYWxzZSwgdHJ1ZSwgZmFsc2UsCisJCQkJCQkJCQkgJnNnYy0+c29ydG9wLCAmc2djLT5l cW9wLCBOVUxMLAorCQkJCQkJCQkJICZzZ2MtPmhhc2hhYmxlKTsKKworCQkJLyogVGhpcyBleHBy ZXNzaW9uIHNob3VsZCBiZSBlbWl0dGVkIGJ5IHRoZSBncm91cGVkIHBhdGhzICovCisJCQlhZGRf Y29sdW1uX3RvX3BhdGh0YXJnZXQodGFyZ2V0LCBleHByLCBzZ2MtPnRsZVNvcnRHcm91cFJlZik7 CisKKwkJCS8qIC4uLiBhbmQgaXQgYWxzbyBzaG91bGQgYmUgZW1pdHRlZCBieSB0aGUgaW5wdXQg cGF0aHMuICovCisJCQlhZGRfY29sdW1uX3RvX3BhdGh0YXJnZXQoYWdnX2lucHV0LCBleHByLCBz Z2MtPnRsZVNvcnRHcm91cFJlZik7CisKKwkJCS8qIFJlY29yZCB0aGlzIFNvcnRHcm91cENsYXVz ZSBhbmQgZ3JvdXBpbmcgZXhwcmVzc2lvbiAqLworCQkJKmdyb3VwX2NsYXVzZXMgPSBsYXBwZW5k KCpncm91cF9jbGF1c2VzLCBzZ2MpOworCQkJKmdyb3VwX2V4cHJzID0gbGFwcGVuZCgqZ3JvdXBf ZXhwcnMsIGV4cHIpOworCQl9CisJCWVsc2UgaWYgKGlzX3Zhcl9pbl9hZ2dyZWZfb25seShyb290 LCAoVmFyICopIGV4cHIpKQorCQl7CisJCQkvKgorCQkJICogVGhlIGV4cHJlc3Npb24gaXMgcmVm ZXJlbmNlZCBieSBhbiBhZ2dyZWdhdGUgZnVuY3Rpb24gcHVzaGVkCisJCQkgKiBkb3duIHRvIHRo aXMgcmVsYXRpb24gYW5kIGRvZXMgbm90IGFwcGVhciBlbHNld2hlcmUgaW4gdGhlCisJCQkgKiB0 YXJnZXRsaXN0IG9yIGhhdmluZ1F1YWwuICBBZGQgaXQgdG8gJ2FnZ19pbnB1dCcgYnV0IG5vdCB0 bworCQkJICogJ3RhcmdldCcuCisJCQkgKi8KKwkJCWFkZF9uZXdfY29sdW1uX3RvX3BhdGh0YXJn ZXQoYWdnX2lucHV0LCBleHByKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBUaGUg ZXhwcmVzc2lvbiBtYXkgYmUgZnVuY3Rpb25hbGx5IGRlcGVuZGVudCBvbiBvdGhlcgorCQkJICog ZXhwcmVzc2lvbnMgaW4gdGhlIHRhcmdldCwgYnV0IHdlIGNhbm5vdCB2ZXJpZnkgdGhpcyB1bnRp bCBhbGwKKwkJCSAqIHRhcmdldCBleHByZXNzaW9ucyBoYXZlIGJlZW4gY29uc3RydWN0ZWQuCisJ CQkgKi8KKwkJCXBvc3NpYmx5X2RlcGVuZGVudCA9IGxhcHBlbmQocG9zc2libHlfZGVwZW5kZW50 LCBleHByKTsKKwkJfQorCX0KKworCS8qCisJICogTm93IHdlIGNhbiB2ZXJpZnkgd2hldGhlciBh biBleHByZXNzaW9uIGlzIGZ1bmN0aW9uYWxseSBkZXBlbmRlbnQgb24KKwkgKiBvdGhlcnMuCisJ ICovCisJZm9yZWFjaChsYywgcG9zc2libHlfZGVwZW5kZW50KQorCXsKKwkJVmFyCQkgICAqdHZh cjsKKwkJTGlzdAkgICAqZGVwcyA9IE5JTDsKKwkJUmFuZ2VUYmxFbnRyeSAqcnRlOworCisJCXR2 YXIgPSBsZmlyc3Rfbm9kZShWYXIsIGxjKTsKKwkJcnRlID0gcm9vdC0+c2ltcGxlX3J0ZV9hcnJh eVt0dmFyLT52YXJub107CisKKwkJaWYgKGNoZWNrX2Z1bmN0aW9uYWxfZ3JvdXBpbmcocnRlLT5y ZWxpZCwgdHZhci0+dmFybm8sCisJCQkJCQkJCQkgIHR2YXItPnZhcmxldmVsc3VwLAorCQkJCQkJ CQkJICB0YXJnZXQtPmV4cHJzLCAmZGVwcykpCisJCXsKKwkJCS8qCisJCQkgKiBUaGUgZXhwcmVz c2lvbiBpcyBmdW5jdGlvbmFsbHkgZGVwZW5kZW50IG9uIG90aGVyIHRhcmdldAorCQkJICogZXhw cmVzc2lvbnMsIHNvIGl0IGNhbiBiZSBpbmNsdWRlZCBpbiB0aGUgdGFyZ2V0cy4gIFNpbmNlIGl0 CisJCQkgKiB3aWxsIG5vdCBiZSB1c2VkIGFzIGEgZ3JvdXBpbmcga2V5LCBhIHNvcnRncm91cHJl ZiBpcyBub3QKKwkJCSAqIG5lZWRlZCBmb3IgaXQuCisJCQkgKi8KKwkJCWFkZF9uZXdfY29sdW1u X3RvX3BhdGh0YXJnZXQodGFyZ2V0LCAoRXhwciAqKSB0dmFyKTsKKwkJCWFkZF9uZXdfY29sdW1u X3RvX3BhdGh0YXJnZXQoYWdnX2lucHV0LCAoRXhwciAqKSB0dmFyKTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCS8qCisJCQkgKiBXZSBtYXkgYXJyaXZlIGhlcmUgd2l0aCBhIGdyb3VwaW5nIGV4cHJl c3Npb24gdGhhdCBpcyBwcm92ZW4KKwkJCSAqIHJlZHVuZGFudCBieSBFcXVpdmFsZW5jZUNsYXNz IHByb2Nlc3NpbmcsIHN1Y2ggYXMgJ3QxLmEnIGluIHRoZQorCQkJICogcXVlcnkgYmVsb3cuCisJ CQkgKgorCQkJICogc2VsZWN0IG1heCh0MS5jKSBmcm9tIHQgdDEsIHQgdDIgd2hlcmUgdDEuYSA9 IDEgZ3JvdXAgYnkgdDEuYSwKKwkJCSAqIHQxLmI7CisJCQkgKgorCQkJICogRm9yIG5vdyB3ZSBq dXN0IGdpdmUgdXAgaW4gdGhpcyBjYXNlLgorCQkJICovCisJCQlyZXR1cm4gZmFsc2U7CisJCX0K Kwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIGlzX3Zhcl9pbl9hZ2dyZWZfb25seQor ICoJICBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBWYXIgYXBwZWFycyBpbiBhZ2dyZWdhdGUgZXhw cmVzc2lvbnMgYW5kIG5vdAorICoJICBlbHNld2hlcmUgaW4gdGhlIHRhcmdldGxpc3Qgb3IgaGF2 aW5nUXVhbC4KKyAqLworc3RhdGljIGJvb2wKK2lzX3Zhcl9pbl9hZ2dyZWZfb25seShQbGFubmVy SW5mbyAqcm9vdCwgVmFyICp2YXIpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwkvKgorCSAqIFNl YXJjaCB0aGUgbGlzdCBvZiBhZ2dyZWdhdGUgZXhwcmVzc2lvbnMgZm9yIHRoZSBWYXIuCisJICov CisJZm9yZWFjaChsYywgcm9vdC0+YWdnX2NsYXVzZV9saXN0KQorCXsKKwkJQWdnQ2xhdXNlSW5m byAqYWNfaW5mbyA9IGxmaXJzdF9ub2RlKEFnZ0NsYXVzZUluZm8sIGxjKTsKKwkJTGlzdAkgICAq dmFyczsKKworCQlBc3NlcnQoSXNBKGFjX2luZm8tPmFnZ3JlZiwgQWdncmVmKSk7CisKKwkJaWYg KCFibXNfaXNfbWVtYmVyKHZhci0+dmFybm8sIGFjX2luZm8tPmFnZ19ldmFsX2F0KSkKKwkJCWNv bnRpbnVlOworCisJCXZhcnMgPSBwdWxsX3Zhcl9jbGF1c2UoKE5vZGUgKikgYWNfaW5mby0+YWdn cmVmLAorCQkJCQkJCSAgIFBWQ19SRUNVUlNFX0FHR1JFR0FURVMgfAorCQkJCQkJCSAgIFBWQ19S RUNVUlNFX1dJTkRPV0ZVTkNTIHwKKwkJCQkJCQkgICBQVkNfUkVDVVJTRV9QTEFDRUhPTERFUlMp OworCisJCWlmIChsaXN0X21lbWJlcih2YXJzLCB2YXIpKQorCQl7CisJCQlsaXN0X2ZyZWUodmFy cyk7CisJCQlicmVhazsKKwkJfQorCisJCWxpc3RfZnJlZSh2YXJzKTsKKwl9CisKKwlyZXR1cm4g KGxjICE9IE5VTEwgJiYgIWxpc3RfbWVtYmVyKHJvb3QtPnRsaXN0X3ZhcnMsIHZhcikpOworfQor CisvKgorICogaXNfdmFyX25lZWRlZF9ieV9qb2luCisgKgkgIENoZWNrIGlmIHRoZSBnaXZlbiBW YXIgaXMgbmVlZGVkIGJ5IGpvaW5zIGFib3ZlIHRoZSBjdXJyZW50IHJlbC4KKyAqLworc3RhdGlj IGJvb2wKK2lzX3Zhcl9uZWVkZWRfYnlfam9pbihQbGFubmVySW5mbyAqcm9vdCwgVmFyICp2YXIs IFJlbE9wdEluZm8gKnJlbCkKK3sKKwlSZWxpZHMJCXJlbGlkczsKKwlpbnQJCQlhdHRubzsKKwlS ZWxPcHRJbmZvICpiYXNlcmVsOworCisJLyoKKwkgKiBOb3RlIHRoYXQgd2hlbiBjaGVja2luZyBp ZiB0aGUgVmFyIGlzIG5lZWRlZCBieSBqb2lucyBhYm92ZSwgd2Ugd2FudCB0bworCSAqIGV4Y2x1 ZGUgY2FzZXMgd2hlcmUgdGhlIFZhciBpcyBvbmx5IG5lZWRlZCBpbiB0aGUgZmluYWwgdGFyZ2V0 bGlzdC4gIFNvCisJICogaW5jbHVkZSAicmVsYXRpb24gMCIgaW4gdGhlIGNoZWNrLgorCSAqLwor CXJlbGlkcyA9IGJtc19jb3B5KHJlbC0+cmVsaWRzKTsKKwlyZWxpZHMgPSBibXNfYWRkX21lbWJl cihyZWxpZHMsIDApOworCisJYmFzZXJlbCA9IGZpbmRfYmFzZV9yZWwocm9vdCwgdmFyLT52YXJu byk7CisJYXR0bm8gPSB2YXItPnZhcmF0dG5vIC0gYmFzZXJlbC0+bWluX2F0dHI7CisKKwlyZXR1 cm4gYm1zX25vbmVtcHR5X2RpZmZlcmVuY2UoYmFzZXJlbC0+YXR0cl9uZWVkZWRbYXR0bm9dLCBy ZWxpZHMpOworfQorCisvKgorICogZ2V0X2V4cHJlc3Npb25fc29ydGdyb3VwcmVmCisgKgkgIFJl dHVybiB0aGUgc29ydGdyb3VwcmVmIG9mIHRoZSBnaXZlbiAiZXhwciIgaWYgaXQgaXMgZm91bmQg YW1vbmcgdGhlCisgKgkgIG9yaWdpbmFsIGdyb3VwaW5nIGV4cHJlc3Npb25zLCBvciBpcyBrbm93 biBlcXVhbCB0byBhbnkgb2YgdGhlIG9yaWdpbmFsCisgKgkgIGdyb3VwaW5nIGV4cHJlc3Npb25z IGR1ZSB0byBlcXVpdmFsZW5jZSByZWxhdGlvbnNoaXBzLiAgUmV0dXJuIDAgaWYgbm8KKyAqCSAg bWF0Y2ggaXMgZm91bmQuCisgKi8KK3N0YXRpYyBJbmRleAorZ2V0X2V4cHJlc3Npb25fc29ydGdy b3VwcmVmKFBsYW5uZXJJbmZvICpyb290LCBFeHByICpleHByKQoreworCUxpc3RDZWxsICAgKmxj OworCisJZm9yZWFjaChsYywgcm9vdC0+Z3JvdXBfZXhwcl9saXN0KQorCXsKKwkJR3JvdXBpbmdF eHBySW5mbyAqZ2VfaW5mbyA9IGxmaXJzdF9ub2RlKEdyb3VwaW5nRXhwckluZm8sIGxjKTsKKwor CQlBc3NlcnQoSXNBKGdlX2luZm8tPmV4cHIsIFZhcikpOworCisJCWlmIChlcXVhbChnZV9pbmZv LT5leHByLCBleHByKSB8fAorCQkJZXhwcnNfa25vd25fZXF1YWwocm9vdCwgKE5vZGUgKikgZXhw ciwgKE5vZGUgKikgZ2VfaW5mby0+ZXhwciwKKwkJCQkJCQkgIGdlX2luZm8tPmJ0cmVlX29wZmFt aWx5KSkKKwkJeworCQkJQXNzZXJ0KGdlX2luZm8tPnNvcnRncm91cHJlZiA+IDApOworCisJCQly ZXR1cm4gZ2VfaW5mby0+c29ydGdyb3VwcmVmOworCQl9CisJfQorCisJLyogbm8gbWF0Y2ggaXMg Zm91bmQgKi8KKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1l dGVycy5kYXQKaW5kZXggMGRhMDE2MjdjZmUuLmYzNWRkMWIyM2JmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtMTQ1LDYgKzE0NSwxMyBAQAogICBib290 X3ZhbCA9PiAnZmFsc2UnLAogfSwKIAoreyBuYW1lID0+ICdlbmFibGVfZWFnZXJfYWdncmVnYXRl JywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQgPT4gJ1BHQ19VU0VSU0VUJywgZ3JvdXAgPT4gJ1FV RVJZX1RVTklOR19NRVRIT0QnLAorICBzaG9ydF9kZXNjID0+ICdFbmFibGVzIGVhZ2VyIGFnZ3Jl Z2F0aW9uLicsCisgIGZsYWdzID0+ICdHVUNfRVhQTEFJTicsCisgIHZhcmlhYmxlID0+ICdlbmFi bGVfZWFnZXJfYWdncmVnYXRlJywKKyAgYm9vdF92YWwgPT4gJ3RydWUnLAorfSwKKwogeyBuYW1l ID0+ICdlbmFibGVfcGFyYWxsZWxfYXBwZW5kJywgdHlwZSA9PiAnYm9vbCcsIGNvbnRleHQgPT4g J1BHQ19VU0VSU0VUJywgZ3JvdXAgPT4gJ1FVRVJZX1RVTklOR19NRVRIT0QnLAogICBzaG9ydF9k ZXNjID0+ICdFbmFibGVzIHRoZSBwbGFubmVyXCdzIHVzZSBvZiBwYXJhbGxlbCBhcHBlbmQgcGxh bnMuJywKICAgZmxhZ3MgPT4gJ0dVQ19FWFBMQUlOJywKQEAgLTI0MjcsNiArMjQzNCwxNSBAQAog ICBtYXggPT4gJ0RCTF9NQVgnLAogfSwKIAoreyBuYW1lID0+ICdtaW5fZWFnZXJfYWdnX2dyb3Vw X3NpemUnLCB0eXBlID0+ICdyZWFsJywgY29udGV4dCA9PiAnUEdDX1VTRVJTRVQnLCBncm91cCA9 PiAnUVVFUllfVFVOSU5HX0NPU1QnLAorICBzaG9ydF9kZXNjID0+ICdTZXRzIHRoZSBtaW5pbXVt IGF2ZXJhZ2UgZ3JvdXAgc2l6ZSByZXF1aXJlZCB0byBjb25zaWRlciBhcHBseWluZyBlYWdlciBh Z2dyZWdhdGlvbi4nLAorICBmbGFncyA9PiAnR1VDX0VYUExBSU4nLAorICB2YXJpYWJsZSA9PiAn bWluX2VhZ2VyX2FnZ19ncm91cF9zaXplJywKKyAgYm9vdF92YWwgPT4gJzguMCcsCisgIG1pbiA9 PiAnMC4wJywKKyAgbWF4ID0+ICdEQkxfTUFYJywKK30sCisKIHsgbmFtZSA9PiAnY3Vyc29yX3R1 cGxlX2ZyYWN0aW9uJywgdHlwZSA9PiAncmVhbCcsIGNvbnRleHQgPT4gJ1BHQ19VU0VSU0VUJywg Z3JvdXAgPT4gJ1FVRVJZX1RVTklOR19PVEhFUicsCiAgIHNob3J0X2Rlc2MgPT4gJ1NldHMgdGhl IHBsYW5uZXJcJ3MgZXN0aW1hdGUgb2YgdGhlIGZyYWN0aW9uIG9mIGEgY3Vyc29yXCdzIHJvd3Mg dGhhdCB3aWxsIGJlIHJldHJpZXZlZC4nLAogICBmbGFncyA9PiAnR1VDX0VYUExBSU4nLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDI2YzA4 NjkzNTY0Li43MzI1YmNkNDM5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdy ZXNxbC5jb25mLnNhbXBsZQpAQCAtNDI4LDYgKzQyOCw3IEBACiAjZW5hYmxlX2dyb3VwX2J5X3Jl b3JkZXJpbmcgPSBvbgogI2VuYWJsZV9kaXN0aW5jdF9yZW9yZGVyaW5nID0gb24KICNlbmFibGVf c2VsZl9qb2luX2VsaW1pbmF0aW9uID0gb24KKyNlbmFibGVfZWFnZXJfYWdncmVnYXRlID0gb24K IAogIyAtIFBsYW5uZXIgQ29zdCBDb25zdGFudHMgLQogCkBAIC00NDEsNiArNDQyLDcgQEAKICNt aW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplID0gOE1CCiAjbWluX3BhcmFsbGVsX2luZGV4X3Nj YW5fc2l6ZSA9IDUxMmtCCiAjZWZmZWN0aXZlX2NhY2hlX3NpemUgPSA0R0IKKyNtaW5fZWFnZXJf YWdnX2dyb3VwX3NpemUgPSA4LjAKIAogI2ppdF9hYm92ZV9jb3N0ID0gMTAwMDAwCQkjIHBlcmZv cm0gSklUIGNvbXBpbGF0aW9uIGlmIGF2YWlsYWJsZQogCQkJCQkjIGFuZCBxdWVyeSBtb3JlIGV4 cGVuc2l2ZSB0aGFuIHRoaXM7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDRhOTAzZDFlYzE4Li5h ZDIxMTIwNzM0MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysr IGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKQEAgLTM5Nyw2ICszOTcsMTUgQEAgc3Ry dWN0IFBsYW5uZXJJbmZvCiAJLyogbGlzdCBvZiBQbGFjZUhvbGRlckluZm9zICovCiAJTGlzdAkg ICAqcGxhY2Vob2xkZXJfbGlzdDsKIAorCS8qIGxpc3Qgb2YgQWdnQ2xhdXNlSW5mb3MgKi8KKwlM aXN0CSAgICphZ2dfY2xhdXNlX2xpc3Q7CisKKwkvKiBsaXN0IG9mIEdyb3VwRXhwckluZm9zICov CisJTGlzdAkgICAqZ3JvdXBfZXhwcl9saXN0OworCisJLyogbGlzdCBvZiBwbGFpbiBWYXJzIGNv bnRhaW5lZCBpbiB0YXJnZXRsaXN0IGFuZCBoYXZpbmdRdWFsICovCisJTGlzdAkgICAqdGxpc3Rf dmFyczsKKwogCS8qIGFycmF5IG9mIFBsYWNlSG9sZGVySW5mb3MgaW5kZXhlZCBieSBwaGlkICov CiAJc3RydWN0IFBsYWNlSG9sZGVySW5mbyAqKnBsYWNlaG9sZGVyX2FycmF5IHBnX25vZGVfYXR0 cihyZWFkX3dyaXRlX2lnbm9yZSwgYXJyYXlfc2l6ZShwbGFjZWhvbGRlcl9hcnJheV9zaXplKSk7 CiAJLyogYWxsb2NhdGVkIHNpemUgb2YgYXJyYXkgKi8KQEAgLTEwNDYsNiArMTA1NSwxNCBAQCB0 eXBlZGVmIHN0cnVjdCBSZWxPcHRJbmZvCiAJLyogY29uc2lkZXIgcGFydGl0aW9ud2lzZSBqb2lu IHBhdGhzPyAoaWYgcGFydGl0aW9uZWQgcmVsKSAqLwogCWJvb2wJCWNvbnNpZGVyX3BhcnRpdGlv bndpc2Vfam9pbjsKIAorCS8qCisJICogdXNlZCBieSBlYWdlciBhZ2dyZWdhdGlvbjoKKwkgKi8K KwkvKiBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3JlYXRlIGdyb3VwZWQgcGF0aHMgKi8KKwlzdHJ1 Y3QgUmVsQWdnSW5mbyAqYWdnX2luZm87CisJLyogdGhlIHBhcnRpYWxseS1hZ2dyZWdhdGVkIHZl cnNpb24gb2YgdGhlIHJlbGF0aW9uICovCisJc3RydWN0IFJlbE9wdEluZm8gKmdyb3VwZWRfcmVs OworCiAJLyoKIAkgKiBpbmhlcml0YW5jZSBsaW5rcywgaWYgdGhpcyBpcyBhbiBvdGhlcnJlbCAo b3RoZXJ3aXNlIE5VTEwpOgogCSAqLwpAQCAtMTEzMCw2ICsxMTQ3LDc1IEBAIHR5cGVkZWYgc3Ry dWN0IFJlbE9wdEluZm8KIAkoKG5vbWluYWxfam9pbnR5cGUpID09IEpPSU5fSU5ORVIgJiYgKHNq aW5mbyktPmpvaW50eXBlID09IEpPSU5fU0VNSSAmJiBcCiAJIGJtc19lcXVhbCgoc2ppbmZvKS0+ c3luX3JpZ2h0aGFuZCwgKHJlbCktPnJlbGlkcykpCiAKKy8qCisgKiBJcyB0aGUgZ2l2ZW4gcmVs YXRpb24gYSBncm91cGVkIHJlbGF0aW9uPworICovCisjZGVmaW5lIElTX0dST1VQRURfUkVMKHJl bCkgXAorCSgocmVsKS0+YWdnX2luZm8gIT0gTlVMTCkKKworLyoKKyAqIFJlbEFnZ0luZm8KKyAq CQlJbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3JlYXRlIGdyb3VwZWQgcGF0aHMgZm9yIGJhc2UgYW5k IGpvaW4gcmVscy4KKyAqCisgKiAicmVsaWRzIiBpcyB0aGUgc2V0IG9mIHJlbGF0aW9uIGlkZW50 aWZpZXJzIChSVCBpbmRleGVzKS4KKyAqCisgKiAidGFyZ2V0IiBpcyB0aGUgb3V0cHV0IHRsaXN0 IGZvciB0aGUgZ3JvdXBlZCBwYXRocy4KKyAqCisgKiAiYWdnX2lucHV0IiBpcyB0aGUgb3V0cHV0 IHRsaXN0IGZvciB0aGUgcGF0aHMgdGhhdCBwcm92aWRlIGlucHV0IHRvIHRoZQorICogZ3JvdXBl ZCBwYXRocy4gIE9uZSBkaWZmZXJlbmNlIGZyb20gdGhlIHJlbHRhcmdldCBvZiB0aGUgbm9uLWdy b3VwZWQKKyAqIHJlbGF0aW9uIGlzIHRoYXQgYWdnX2lucHV0IGhhcyBpdHMgc29ydGdyb3VwcmVm c1tdIGluaXRpYWxpemVkLgorICoKKyAqICJncm91cGVkX3Jvd3MiIGlzIHRoZSBlc3RpbWF0ZWQg bnVtYmVyIG9mIHJlc3VsdCB0dXBsZXMgb2YgdGhlIGdyb3VwZWQKKyAqIHJlbGF0aW9uLgorICoK KyAqICJncm91cF9jbGF1c2VzIiwgImdyb3VwX2V4cHJzIiBhbmQgImdyb3VwX3BhdGhrZXlzIiBh cmUgbGlzdHMgb2YKKyAqIFNvcnRHcm91cENsYXVzZXMsIHRoZSBjb3JyZXNwb25kaW5nIGdyb3Vw aW5nIGV4cHJlc3Npb25zIGFuZCBQYXRoS2V5cworICogcmVzcGVjdGl2ZWx5LgorICoKKyAqICJh cHBseV9hdCIgdHJhY2tzIHRoZSBsb3dlc3Qgam9pbiBsZXZlbCBhdCB3aGljaCBwYXJ0aWFsIGFn Z3JlZ2F0aW9uIGlzCisgKiBhcHBsaWVkLgorICoKKyAqICJhZ2dfdXNlZnVsIiBpcyBhIGZsYWcg dG8gaW5kaWNhdGUgd2hldGhlciB0aGUgZ3JvdXBlZCBwYXRocyBhcmUgY29uc2lkZXJlZAorICog dXNlZnVsLiAgSXQgaXMgc2V0IHRydWUgaWYgdGhlIGF2ZXJhZ2UgcGFydGlhbCBncm91cCBzaXpl IGlzIG5vIGxlc3MgdGhhbgorICogbWluX2VhZ2VyX2FnZ19ncm91cF9zaXplLCBzdWdnZXN0aW5n IGEgc2lnbmlmaWNhbnQgcm93IGNvdW50IHJlZHVjdGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg UmVsQWdnSW5mbworeworCXBnX25vZGVfYXR0cihub19jb3B5X2VxdWFsLCBub19yZWFkLCBub19x dWVyeV9qdW1ibGUpCisKKwlOb2RlVGFnCQl0eXBlOworCisJLyogc2V0IG9mIGJhc2UgKyBPSiBy ZWxpZHMgKHJhbmdldGFibGUgaW5kZXhlcykgKi8KKwlSZWxpZHMJCXJlbGlkczsKKworCS8qCisJ ICogZGVmYXVsdCByZXN1bHQgdGFyZ2V0bGlzdCBmb3IgUGF0aHMgc2Nhbm5pbmcgdGhpcyBncm91 cGVkIHJlbGF0aW9uOworCSAqIGxpc3Qgb2YgVmFycy9FeHBycywgY29zdCwgd2lkdGgKKwkgKi8K KwlzdHJ1Y3QgUGF0aFRhcmdldCAqdGFyZ2V0OworCisJLyoKKwkgKiB0aGUgdGFyZ2V0bGlzdCBm b3IgUGF0aHMgdGhhdCBwcm92aWRlIGlucHV0IHRvIHRoZSBncm91cGVkIHBhdGhzCisJICovCisJ c3RydWN0IFBhdGhUYXJnZXQgKmFnZ19pbnB1dDsKKworCS8qIGVzdGltYXRlZCBudW1iZXIgb2Yg cmVzdWx0IHR1cGxlcyAqLworCUNhcmRpbmFsaXR5IGdyb3VwZWRfcm93czsKKworCS8qIGEgbGlz dCBvZiBTb3J0R3JvdXBDbGF1c2VzICovCisJTGlzdAkgICAqZ3JvdXBfY2xhdXNlczsKKwkvKiBh IGxpc3Qgb2YgZ3JvdXBpbmcgZXhwcmVzc2lvbnMgKi8KKwlMaXN0CSAgICpncm91cF9leHByczsK KwkvKiBhIGxpc3Qgb2YgUGF0aEtleXMgKi8KKwlMaXN0CSAgICpncm91cF9wYXRoa2V5czsKKwor CS8qIGxvd2VzdCBsZXZlbCBwYXJ0aWFsIGFnZ3JlZ2F0aW9uIGlzIGFwcGxpZWQgYXQgKi8KKwlS ZWxpZHMJCWFwcGx5X2F0OworCisJLyogdGhlIGdyb3VwZWQgcGF0aHMgYXJlIGNvbnNpZGVyZWQg dXNlZnVsPyAqLworCWJvb2wJCWFnZ191c2VmdWw7Cit9IFJlbEFnZ0luZm87CisKIC8qCiAgKiBJ bmRleE9wdEluZm8KICAqCQlQZXItaW5kZXggaW5mb3JtYXRpb24gZm9yIHBsYW5uaW5nL29wdGlt aXphdGlvbgpAQCAtMzI4Myw2ICszMzY5LDUwIEBAIHR5cGVkZWYgc3RydWN0IE1pbk1heEFnZ0lu Zm8KIAlQYXJhbQkgICAqcGFyYW07CiB9IE1pbk1heEFnZ0luZm87CiAKKy8qCisgKiBGb3IgZWFj aCBkaXN0aW5jdCBBZ2dyZWYgbm9kZSB0aGF0IGFwcGVhcnMgaW4gdGhlIHRhcmdldGxpc3QgYW5k IEhBVklORworICogY2xhdXNlcywgd2Ugc3RvcmUgYW4gQWdnQ2xhdXNlSW5mbyBub2RlIGluIHRo ZSBQbGFubmVySW5mbyBub2RlJ3MKKyAqIGFnZ19jbGF1c2VfbGlzdC4gIEVhY2ggQWdnQ2xhdXNl SW5mbyByZWNvcmRzIHRoZSBzZXQgb2YgcmVsYXRpb25zIHJlZmVyZW5jZWQKKyAqIGJ5IHRoZSBh Z2dyZWdhdGUgZXhwcmVzc2lvbi4gIFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZCB0byBkZXRlcm1p bmUgaG93IGZhcgorICogdGhlIGFnZ3JlZ2F0ZSBjYW4gYmUgc2FmZWx5IHB1c2hlZCBkb3duIGlu IHRoZSBqb2luIHRyZWUuCisgKi8KK3R5cGVkZWYgc3RydWN0IEFnZ0NsYXVzZUluZm8KK3sKKwlw Z19ub2RlX2F0dHIobm9fcmVhZCwgbm9fcXVlcnlfanVtYmxlKQorCisJTm9kZVRhZwkJdHlwZTsK KworCS8qIHRoZSBBZ2dyZWYgZXhwciAqLworCUFnZ3JlZgkgICAqYWdncmVmOworCisJLyogbG93 ZXN0IGxldmVsIHdlIGNhbiBldmFsdWF0ZSB0aGlzIGFnZ3JlZ2F0ZSBhdCAqLworCVJlbGlkcwkJ YWdnX2V2YWxfYXQ7Cit9IEFnZ0NsYXVzZUluZm87CisKKy8qCisgKiBGb3IgZWFjaCBncm91cGlu ZyBleHByZXNzaW9uIHRoYXQgYXBwZWFycyBpbiBncm91cGluZyBjbGF1c2VzLCB3ZSBzdG9yZSBh CisgKiBHcm91cGluZ0V4cHJJbmZvIG5vZGUgaW4gdGhlIFBsYW5uZXJJbmZvIG5vZGUncyBncm91 cF9leHByX2xpc3QuICBFYWNoCisgKiBHcm91cGluZ0V4cHJJbmZvIHJlY29yZHMgdGhlIGV4cHJl c3Npb24gYmVpbmcgZ3JvdXBlZCBvbiwgaXRzIHNvcnRncm91cHJlZiwKKyAqIGFuZCB0aGUgYnRy ZWUgb3BmYW1pbHkgdXNlZCBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbi4gIFRoaXMgaW5mb3JtYXRp b24gaXMKKyAqIG5lY2Vzc2FyeSB0byByZXByb2R1Y2UgY29ycmVjdCBncm91cGluZyBzZW1hbnRp Y3MgYXQgZGlmZmVyZW50IGxldmVscyBvZiB0aGUKKyAqIGpvaW4gdHJlZS4KKyAqLwordHlwZWRl ZiBzdHJ1Y3QgR3JvdXBpbmdFeHBySW5mbworeworCXBnX25vZGVfYXR0cihub19yZWFkLCBub19x dWVyeV9qdW1ibGUpCisKKwlOb2RlVGFnCQl0eXBlOworCisJLyogdGhlIHJlcHJlc2VudGVkIGV4 cHJlc3Npb24gKi8KKwlFeHByCSAgICpleHByOworCisJLyogdGhlIHRsZVNvcnRHcm91cFJlZiBv ZiB0aGUgY29ycmVzcG9uZGluZyBTb3J0R3JvdXBDbGF1c2UgKi8KKwlJbmRleAkJc29ydGdyb3Vw cmVmOworCisJLyogYnRyZWUgb3BmYW1pbHkgZGVmaW5pbmcgdGhlIG9yZGVyaW5nICovCisJT2lk CQkJYnRyZWVfb3BmYW1pbHk7Cit9IEdyb3VwaW5nRXhwckluZm87CisKIC8qCiAgKiBBdCBydW50 aW1lLCBQQVJBTV9FWEVDIHNsb3RzIGFyZSB1c2VkIHRvIHBhc3MgdmFsdWVzIGFyb3VuZCBmcm9t IG9uZSBwbGFuCiAgKiBub2RlIHRvIGFub3RoZXIuICBUaGV5IGNhbiBiZSB1c2VkIHRvIHBhc3Mg dmFsdWVzIGRvd24gaW50byBzdWJxdWVyaWVzIChmb3IKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L29wdGltaXplci9wYXRobm9kZS5oIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgK aW5kZXggNzYzY2QyNWJiM2MuLjViOWMxZGFmMTRiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcGF0aG5vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUu aApAQCAtMzEyLDYgKzMxMiwxMCBAQCBleHRlcm4gdm9pZCBzZXR1cF9zaW1wbGVfcmVsX2FycmF5 cyhQbGFubmVySW5mbyAqcm9vdCk7CiBleHRlcm4gdm9pZCBleHBhbmRfcGxhbm5lcl9hcnJheXMo UGxhbm5lckluZm8gKnJvb3QsIGludCBhZGRfc2l6ZSk7CiBleHRlcm4gUmVsT3B0SW5mbyAqYnVp bGRfc2ltcGxlX3JlbChQbGFubmVySW5mbyAqcm9vdCwgaW50IHJlbGlkLAogCQkJCQkJCQkJUmVs T3B0SW5mbyAqcGFyZW50KTsKK2V4dGVybiBSZWxPcHRJbmZvICpidWlsZF9zaW1wbGVfZ3JvdXBl ZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJCQkJCVJlbE9wdEluZm8gKnJlbF9wbGFp bik7CitleHRlcm4gUmVsT3B0SW5mbyAqYnVpbGRfZ3JvdXBlZF9yZWwoUGxhbm5lckluZm8gKnJv b3QsCisJCQkJCQkJCQkgUmVsT3B0SW5mbyAqcmVsX3BsYWluKTsKIGV4dGVybiBSZWxPcHRJbmZv ICpmaW5kX2Jhc2VfcmVsKFBsYW5uZXJJbmZvICpyb290LCBpbnQgcmVsaWQpOwogZXh0ZXJuIFJl bE9wdEluZm8gKmZpbmRfYmFzZV9yZWxfbm9lcnIoUGxhbm5lckluZm8gKnJvb3QsIGludCByZWxp ZCk7CiBleHRlcm4gUmVsT3B0SW5mbyAqZmluZF9iYXNlX3JlbF9pZ25vcmVfam9pbihQbGFubmVy SW5mbyAqcm9vdCwgaW50IHJlbGlkKTsKQEAgLTM1MSw0ICszNTUsNSBAQCBleHRlcm4gUmVsT3B0 SW5mbyAqYnVpbGRfY2hpbGRfam9pbl9yZWwoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJ U3BlY2lhbEpvaW5JbmZvICpzamluZm8sCiAJCQkJCQkJCQkJaW50IG5hcHBpbmZvcywgQXBwZW5k UmVsSW5mbyAqKmFwcGluZm9zKTsKIAorZXh0ZXJuIFJlbEFnZ0luZm8gKmNyZWF0ZV9yZWxfYWdn X2luZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCk7CiAjZW5kaWYJCQkJCQkJ LyogUEFUSE5PREVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhz LmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaAppbmRleCBjYmFkZTc3YjcxNy4uOGQw M2Q2NjJhMDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCisrKyBi L3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCkBAIC0yMSw3ICsyMSw5IEBACiAgKiBhbGxw YXRocy5jCiAgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9nZXFvOworZXh0ZXJu IFBHRExMSU1QT1JUIGJvb2wgZW5hYmxlX2VhZ2VyX2FnZ3JlZ2F0ZTsKIGV4dGVybiBQR0RMTElN UE9SVCBpbnQgZ2Vxb190aHJlc2hvbGQ7CitleHRlcm4gUEdETExJTVBPUlQgZG91YmxlIG1pbl9l YWdlcl9hZ2dfZ3JvdXBfc2l6ZTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWluX3BhcmFsbGVs X3RhYmxlX3NjYW5fc2l6ZTsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWluX3BhcmFsbGVsX2lu ZGV4X3NjYW5fc2l6ZTsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGVuYWJsZV9ncm91cF9ieV9y ZW9yZGVyaW5nOwpAQCAtNTcsNiArNTksMTAgQEAgZXh0ZXJuIHZvaWQgZ2VuZXJhdGVfZ2F0aGVy X3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCSAgYm9v bCBvdmVycmlkZV9yb3dzKTsKIGV4dGVybiB2b2lkIGdlbmVyYXRlX3VzZWZ1bF9nYXRoZXJfcGF0 aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCQkgYm9vbCBv dmVycmlkZV9yb3dzKTsKK2V4dGVybiB2b2lkIGdlbmVyYXRlX2dyb3VwZWRfcGF0aHMoUGxhbm5l ckluZm8gKnJvb3QsCisJCQkJCQkJCSAgIFJlbE9wdEluZm8gKnJlbF9ncm91cGVkLAorCQkJCQkJ CQkgICBSZWxPcHRJbmZvICpyZWxfcGxhaW4sCisJCQkJCQkJCSAgIFJlbEFnZ0luZm8gKmFnZ19p bmZvKTsKIGV4dGVybiBpbnQJY29tcHV0ZV9wYXJhbGxlbF93b3JrZXIoUmVsT3B0SW5mbyAqcmVs LCBkb3VibGUgaGVhcF9wYWdlcywKIAkJCQkJCQkJCWRvdWJsZSBpbmRleF9wYWdlcywgaW50IG1h eF93b3JrZXJzKTsKIGV4dGVybiB2b2lkIGNyZWF0ZV9wYXJ0aWFsX2JpdG1hcF9wYXRocyhQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv b3B0aW1pemVyL3BsYW5tYWluLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbm1haW4uaApp bmRleCA5ZDNkZWJjYWIyOC4uMDliNDhiMjZmOGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29w dGltaXplci9wbGFubWFpbi5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wbGFubWFpbi5o CkBAIC03Niw2ICs3Niw3IEBAIGV4dGVybiB2b2lkIGFkZF92YXJzX3RvX3RhcmdldGxpc3QoUGxh bm5lckluZm8gKnJvb3QsIExpc3QgKnZhcnMsCiBleHRlcm4gdm9pZCBhZGRfdmFyc190b19hdHRy X25lZWRlZChQbGFubmVySW5mbyAqcm9vdCwgTGlzdCAqdmFycywKIAkJCQkJCQkJCVJlbGlkcyB3 aGVyZV9uZWVkZWQpOwogZXh0ZXJuIHZvaWQgcmVtb3ZlX3VzZWxlc3NfZ3JvdXBieV9jb2x1bW5z KFBsYW5uZXJJbmZvICpyb290KTsKK2V4dGVybiB2b2lkIHNldHVwX2VhZ2VyX2FnZ3JlZ2F0aW9u KFBsYW5uZXJJbmZvICpyb290KTsKIGV4dGVybiB2b2lkIGZpbmRfbGF0ZXJhbF9yZWZlcmVuY2Vz KFBsYW5uZXJJbmZvICpyb290KTsKIGV4dGVybiB2b2lkIHJlYnVpbGRfbGF0ZXJhbF9hdHRyX25l ZWRlZChQbGFubmVySW5mbyAqcm9vdCk7CiBleHRlcm4gdm9pZCBjcmVhdGVfbGF0ZXJhbF9qb2lu X2luZm8oUGxhbm5lckluZm8gKnJvb3QpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9jb2xsYXRlLmljdS51dGY4Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y29sbGF0ZS5pY3UudXRmOC5vdXQKaW5kZXggNjk4MDVkNGI5ZWMuLmVmNzlkNmYxZGVkIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbGxhdGUuaWN1LnV0Zjgub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29sbGF0ZS5pY3UudXRmOC5vdXQKQEAgLTI0 MzcsMTEgKzI0MzcsMTEgQEAgU0VMRUNUIGMgY29sbGF0ZSAiQyIsIGNvdW50KGMpIEZST00gcGFn Z190YWIzIEdST1VQIEJZIGMgY29sbGF0ZSAiQyIgT1JERVIgQlkgMTsKIFNFVCBlbmFibGVfcGFy dGl0aW9ud2lzZV9qb2luIFRPIGZhbHNlOwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VMRUNUIHQx LmMsIGNvdW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQx LmMgPSB0Mi5jIEdST1VQIEJZIDEgT1JERVIgQlkgdDEuYyBDT0xMQVRFICJDIjsKLSAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBTb3J0CiAgICBTb3J0IEtleTogdDEuYyBDT0xM QVRFICJDIgotICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVn YXRlCiAgICAgICAgICBHcm91cCBLZXk6IHQxLmMKICAgICAgICAgIC0+ICBIYXNoIEpvaW4KICAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmMgPSB0Mi5jKQpAQCAtMjQ0OSwxMCArMjQ0OSwx MiBAQCBTRUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9JTiBwYWdn X3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgR1JPVQogICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHBhZ2dfdGFiM19wMiB0MV8xCiAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcGFnZ190YWIzX3AxIHQxXzIKICAgICAgICAgICAgICAgIC0+ICBIYXNoCi0gICAg ICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHQyXzEKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDEgdDJfMgotKDEzIHJvd3MpCisgICAgICAg ICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQyLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBBcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwYWdnX3RhYjNfcDIgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMSB0Ml8yCisoMTUgcm93cykKIAogU0VMRUNUIHQxLmMs IGNvdW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9OIHQxLmMg PSB0Mi5jIEdST1VQIEJZIDEgT1JERVIgQlkgdDEuYyBDT0xMQVRFICJDIjsKICBjIHwgY291bnQg CkBAIC0yNDY0LDExICsyNDY2LDExIEBAIFNFTEVDVCB0MS5jLCBjb3VudCh0Mi5jKSBGUk9NIHBh Z2dfdGFiMyB0MSBKT0lOIHBhZ2dfdGFiMyB0MiBPTiB0MS5jID0gdDIuYyBHUk9VCiBTRVQgZW5h YmxlX3BhcnRpdGlvbndpc2Vfam9pbiBUTyB0cnVlOwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VM RUNUIHQxLmMsIGNvdW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQy IE9OIHQxLmMgPSB0Mi5jIEdST1VQIEJZIDEgT1JERVIgQlkgdDEuYyBDT0xMQVRFICJDIjsKLSAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBTb3J0CiAgICBTb3J0IEtleTogdDEu YyBDT0xMQVRFICJDIgotICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgIC0+ICBGaW5hbGl6ZSBIYXNo QWdncmVnYXRlCiAgICAgICAgICBHcm91cCBLZXk6IHQxLmMKICAgICAgICAgIC0+ICBIYXNoIEpv aW4KICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLmMgPSB0Mi5jKQpAQCAtMjQ3NiwxMCAr MjQ3OCwxMiBAQCBTRUxFQ1QgdDEuYywgY291bnQodDIuYykgRlJPTSBwYWdnX3RhYjMgdDEgSk9J TiBwYWdnX3RhYjMgdDIgT04gdDEuYyA9IHQyLmMgR1JPVQogICAgICAgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMiB0MV8xCiAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AxIHQxXzIKICAgICAgICAgICAgICAgIC0+ICBIYXNo Ci0gICAgICAgICAgICAgICAgICAgICAtPiAgQXBwZW5kCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcGFnZ190YWIzX3AyIHQyXzEKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYWdnX3RhYjNfcDEgdDJfMgotKDEzIHJvd3MpCisg ICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLmMKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwYWdnX3RhYjNfcDIgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHBhZ2dfdGFiM19wMSB0Ml8yCisoMTUgcm93cykKIAogU0VMRUNU IHQxLmMsIGNvdW50KHQyLmMpIEZST00gcGFnZ190YWIzIHQxIEpPSU4gcGFnZ190YWIzIHQyIE9O IHQxLmMgPSB0Mi5jIEdST1VQIEJZIDEgT1JERVIgQlkgdDEuYyBDT0xMQVRFICJDIjsKICBjIHwg Y291bnQgCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3Jl Z2F0ZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2VhZ2VyX2FnZ3JlZ2F0ZS5vdXQK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBkYWI1ODVlOWNlCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9lYWdlcl9hZ2dyZWdhdGUu b3V0CkBAIC0wLDAgKzEsMTU4NCBAQAorLS0KKy0tIEVBR0VSIEFHR1JFR0FUSU9OCistLSBUZXN0 IHdlIGNhbiBwdXNoIGFnZ3JlZ2F0aW9uIGRvd24gYmVsb3cgam9pbgorLS0KKy0tIEVuYWJsZSBl YWdlciBhZ2dyZWdhdGlvbiwgd2hpY2ggYnkgZGVmYXVsdCBpcyBkaXNhYmxlZC4KK1NFVCBlbmFi bGVfZWFnZXJfYWdncmVnYXRlIFRPIG9uOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190MSAoYSBp bnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190 MiAoYSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOworQ1JFQVRFIFRBQkxFIGVhZ2Vy X2FnZ190MyAoYSBpbnQsIGIgaW50LCBjIGRvdWJsZSBwcmVjaXNpb24pOworSU5TRVJUIElOVE8g ZWFnZXJfYWdnX3QxIFNFTEVDVCBpLCBpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAp aTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MiBTRUxFQ1QgaSwgaSUxMCwgaSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxMDAwKWk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDMgU0VMRUNUIGkl MTAsIGklMTAsIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMClpOworQU5BTFlaRSBlYWdl cl9hZ2dfdDE7CitBTkFMWVpFIGVhZ2VyX2FnZ190MjsKK0FOQUxZWkUgZWFnZXJfYWdnX3QzOwor LS0KKy0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gb3ZlciBiYXNlIHJlbAorLS0KKy0tIFBlcmZv cm0gc2NhbiBvZiBhIHRhYmxlLCBhZ2dyZWdhdGUgdGhlIHJlc3VsdCwgam9pbiBpdCB0byB0aGUg b3RoZXIgdGFibGUKKy0tIGFuZCBmaW5hbGl6ZSB0aGUgYWdncmVnYXRpb24uCitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdn X3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEg T1JERVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3JvdXBBZ2dy ZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKHQyLmMpCisgICBHcm91cCBLZXk6IHQxLmEKKyAg IC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAg ICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgICAgICAgIEhh c2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwg dDEuYiwgdDEuYworICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAgICAgICAg LT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0Mi5jKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg R3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisoMTggcm93cykKKworU0VMRUNUIHQxLmEsIGF2 Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5i ID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0t LQorIDEgfCA0OTYKKyAyIHwgNDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwgNTAwCisgNiB8 IDUwMQorIDcgfCA1MDIKKyA4IHwgNTAzCisgOSB8IDUwNAorKDkgcm93cykKKworLS0gUHJvZHVj ZSByZXN1bHRzIHdpdGggc29ydGluZyBhZ2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRP IG9mZjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIu YykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQy LmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmco dDIuYykKKyAgIEdyb3VwIEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDog dDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJQUwg YXZnKHQyLmMpKQorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9IHQyLmIpCisgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAgICAgICAgICAt PiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFSVElBTCBhdmco dDIuYykpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBHcm91cEFnZ3JlZ2F0ZQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0Mi5j KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Mi5jLCB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT b3J0IEtleTogdDIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDIuYywgdDIuYgorKDIxIHJvd3MpCisKK1NFTEVDVCB0MS5h LCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04g dDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworIGEgfCBhdmcgCistLS0r LS0tLS0KKyAxIHwgNDk2CisgMiB8IDQ5NworIDMgfCA0OTgKKyA0IHwgNDk5CisgNSB8IDUwMAor IDYgfCA1MDEKKyA3IHwgNTAyCisgOCB8IDUwMworIDkgfCA1MDQKKyg5IHJvd3MpCisKK1JFU0VU IGVuYWJsZV9oYXNoYWdnOworLS0KKy0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gb3ZlciBqb2lu IHJlbAorLS0KKy0tIFBlcmZvcm0gam9pbiBvZiB0YWJsZXMsIGFnZ3JlZ2F0ZSB0aGUgcmVzdWx0 LCBqb2luIGl0IHRvIHRoZSBvdGhlciB0YWJsZQorLS0gYW5kIGZpbmFsaXplIHRoZSBhZ2dyZWdh dGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIu YyArIHQzLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQx LmIgPSB0Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQx LmEgT1JERVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKCh0 Mi5jICsgdDMuYykpCisgICBHcm91cCBLZXk6IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBP dXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2ZygodDIuYyArIHQzLmMpKSkKKyAgICAgICAgIFNvcnQg S2V5OiB0MS5hCisgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxLmEsIChQQVJUSUFMIGF2ZygodDIuYyArIHQzLmMpKSkKKyAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgdDEu YiwgdDEuYworICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgICAgICAg ICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2ZygodDIuYyArIHQzLmMpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyLmMsIHQyLmIsIHQzLmMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHQzLmEgPSB0Mi5hKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDMgdDMKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDMuYSwgdDMuYiwgdDMuYworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDIuYywgdDIuYiwgdDIuYQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDIg dDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDIuYywgdDIuYiwgdDIuYQorKDI1IHJvd3MpCisKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQz LmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0 Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JE RVIgQlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NworIDIgfCA0OTkKKyAz IHwgNTAxCisgNCB8IDUwMworIDUgfCA1MDUKKyA2IHwgNTA3CisgNyB8IDUwOQorIDggfCA1MTEK KyA5IHwgNTEzCisoOSByb3dzKQorCistLSBQcm9kdWNlIHJlc3VsdHMgd2l0aCBzb3J0aW5nIGFn Z3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOworRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jICsgdDMuYykgRlJPTSBlYWdlcl9hZ2df dDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgSk9JTiBlYWdlcl9hZ2df dDMgdDMgT04gdDIuYSA9IHQzLmEgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5h bGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5hLCBhdmcoKHQyLmMgKyB0My5jKSkK KyAgIEdyb3VwIEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogdDEuYSwg KFBBUlRJQUwgYXZnKCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAg ICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJ QUwgYXZnKCh0Mi5jICsgdDMuYykpKQorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9 IHQyLmIpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 MSB0MQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAo UEFSVElBTCBhdmcoKHQyLmMgKyB0My5jKSkpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFy dGlhbCBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Mi5iLCBQQVJUSUFMIGF2ZygodDIuYyArIHQzLmMpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU29ydAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0Mi5iLCB0My5j CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogdDIuYgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5jLCB0Mi5iLCB0My5jCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0My5hID0gdDIuYSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3QzIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQzLmEsIHQzLmIsIHQzLmMKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIsIHQyLmEKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3QyIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLmMsIHQyLmIsIHQyLmEKKygyOCByb3dzKQorCitTRUxFQ1QgdDEu YSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190 MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYSBH Uk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2ZyAKKy0tLSstLS0tLQorIDEgfCA0 OTcKKyAyIHwgNDk5CisgMyB8IDUwMQorIDQgfCA1MDMKKyA1IHwgNTA1CisgNiB8IDUwNworIDcg fCA1MDkKKyA4IHwgNTExCisgOSB8IDUxMworKDkgcm93cykKKworUkVTRVQgZW5hYmxlX2hhc2hh Z2c7CistLQorLS0gVGVzdCB0aGF0IGVhZ2VyIGFnZ3JlZ2F0aW9uIHdvcmtzIGZvciBvdXRlciBq b2luCistLQorLS0gRW5zdXJlIGFnZ3JlZ2F0aW9uIGNhbiBiZSBwdXNoZWQgZG93biB0byB0aGUg bm9uLW51bGxhYmxlIHNpZGUKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0 MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgUklHSFQgSk9JTiBlYWdlcl9hZ2df dDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6ZSBHcm91cEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiB0MS5h LCBhdmcodDIuYykKKyAgIEdyb3VwIEtleTogdDEuYQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91 dHB1dDogdDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgU29ydCBLZXk6IHQxLmEK KyAgICAgICAgIC0+ICBIYXNoIFJpZ2h0IEpvaW4KKyAgICAgICAgICAgICAgIE91dHB1dDogdDEu YSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEuYiA9 IHQyLmIpCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 MSB0MQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAo UEFSVElBTCBhdmcodDIuYykpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIsIFBBUlRJ QUwgYXZnKHQyLmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLmIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJf YWdnX3QyIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmEs IHQyLmIsIHQyLmMKKygxOCByb3dzKQorCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFn ZXJfYWdnX3QxIHQxIFJJR0hUIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdS T1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyBhIHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5 NgorIDIgfCA0OTcKKyAzIHwgNDk4CisgNCB8IDQ5OQorIDUgfCA1MDAKKyA2IHwgNTAxCisgNyB8 IDUwMgorIDggfCA1MDMKKyA5IHwgNTA0CisgICB8IDUwNQorKDEwIHJvd3MpCisKKy0tIEVuc3Vy ZSBhZ2dyZWdhdGlvbiBjYW5ub3QgYmUgcHVzaGVkIGRvd24gdG8gdGhlIG51bGxhYmxlIHNpZGUK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0Mi5iLCBhdmcodDIuYykgRlJP TSBlYWdlcl9hZ2dfdDEgdDEgTEVGVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIu YiBHUk9VUCBCWSB0Mi5iIE9SREVSIEJZIHQyLmI7CisgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1 dDogdDIuYiwgKGF2Zyh0Mi5jKSkKKyAgIFNvcnQgS2V5OiB0Mi5iCisgICAtPiAgSGFzaEFnZ3Jl Z2F0ZQorICAgICAgICAgT3V0cHV0OiB0Mi5iLCBhdmcodDIuYykKKyAgICAgICAgIEdyb3VwIEtl eTogdDIuYgorICAgICAgICAgLT4gIEhhc2ggUmlnaHQgSm9pbgorICAgICAgICAgICAgICAgT3V0 cHV0OiB0Mi5iLCB0Mi5jCisgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Mi5iID0gdDEuYikK KyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmEsIHQyLmIsIHQyLmMKKyAgICAgICAgICAg ICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmIKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QxIHQxCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmIKKygxNSByb3dzKQorCitTRUxFQ1Qg dDIuYiwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIExFRlQgSk9JTiBlYWdlcl9hZ2df dDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDIuYiBPUkRFUiBCWSB0Mi5iOworIGIgfCBh dmcgCistLS0rLS0tLS0KKyAxIHwgNDk2CisgMiB8IDQ5NworIDMgfCA0OTgKKyA0IHwgNDk5Cisg NSB8IDUwMAorIDYgfCA1MDEKKyA3IHwgNTAyCisgOCB8IDUwMworIDkgfCA1MDQKKyAgIHwgICAg CisoMTAgcm93cykKKworLS0KKy0tIFRlc3QgdGhhdCBlYWdlciBhZ2dyZWdhdGlvbiB3b3JrcyBm b3IgcGFyYWxsZWwgcGxhbnMKKy0tCitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdD0wOworU0VUIHBh cmFsbGVsX3R1cGxlX2Nvc3Q9MDsKK1NFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplPTA7 CitTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcj00OworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0 MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVS IEJZIHQxLmE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIEZpbmFsaXplIEdyb3VwQWdncmVnYXRlCisgICBPdXRwdXQ6IHQxLmEsIGF2Zyh0Mi5j KQorICAgR3JvdXAgS2V5OiB0MS5hCisgICAtPiAgR2F0aGVyIE1lcmdlCisgICAgICAgICBPdXRw dXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAgIFdvcmtlcnMgUGxhbm5lZDog MgorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgKFBBUlRJ QUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAgU29ydCBLZXk6IHQxLmEKKyAgICAgICAgICAg ICAgIC0+ICBQYXJhbGxlbCBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDEuYSwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25k OiAodDEuYiA9IHQyLmIpCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxsZWwgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190MSB0MQorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MS5hLCB0MS5iLCB0MS5jCisgICAgICAgICAgICAgICAgICAgICAtPiAgUGFyYWxs ZWwgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi5iLCAoUEFSVElB TCBhdmcodDIuYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNo QWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmIs IFBBUlRJQUwgYXZnKHQyLmMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91 cCBLZXk6IHQyLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJhbGxl bCBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3QyIHQyCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLmEsIHQyLmIsIHQyLmMKKygyMSByb3dzKQor CitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJf YWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyBh IHwgYXZnIAorLS0tKy0tLS0tCisgMSB8IDQ5NgorIDIgfCA0OTcKKyAzIHwgNDk4CisgNCB8IDQ5 OQorIDUgfCA1MDAKKyA2IHwgNTAxCisgNyB8IDUwMgorIDggfCA1MDMKKyA5IHwgNTA0CisoOSBy b3dzKQorCitSRVNFVCBwYXJhbGxlbF9zZXR1cF9jb3N0OworUkVTRVQgcGFyYWxsZWxfdHVwbGVf Y29zdDsKK1JFU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFy YWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyOworLS0KKy0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24g d2l0aCBHRVFPCistLQorU0VUIGdlcW8gPSBvbjsKK1NFVCBnZXFvX3RocmVzaG9sZCA9IDI7CitF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00g ZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQ IEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUg R3JvdXBBZ2dyZWdhdGUKKyAgIE91dHB1dDogdDEuYSwgYXZnKHQyLmMpCisgICBHcm91cCBLZXk6 IHQxLmEKKyAgIC0+ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0 Mi5jKSkKKyAgICAgICAgIFNvcnQgS2V5OiB0MS5hCisgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxLmEsIChQQVJUSUFMIGF2Zyh0Mi5jKSkKKyAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQxLmIgPSB0Mi5iKQorICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdDEgdDEKKyAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDEuYSwgdDEuYiwgdDEuYworICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDIuYiwgKFBBUlRJQUwgYXZnKHQyLmMpKQorICAgICAgICAgICAg ICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Mi5iLCBQQVJUSUFMIGF2Zyh0Mi5jKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgR3JvdXAgS2V5OiB0Mi5iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190MiB0MgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Mi5hLCB0Mi5iLCB0Mi5jCisoMTggcm93cykKKworU0VMRUNU IHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0 MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisgYSB8IGF2ZyAK Ky0tLSstLS0tLQorIDEgfCA0OTYKKyAyIHwgNDk3CisgMyB8IDQ5OAorIDQgfCA0OTkKKyA1IHwg NTAwCisgNiB8IDUwMQorIDcgfCA1MDIKKyA4IHwgNTAzCisgOSB8IDUwNAorKDkgcm93cykKKwor UkVTRVQgZ2VxbzsKK1JFU0VUIGdlcW9fdGhyZXNob2xkOworRFJPUCBUQUJMRSBlYWdlcl9hZ2df dDE7CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MjsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QzOwor LS0KKy0tIFRlc3QgZWFnZXIgYWdncmVnYXRpb24gZm9yIHBhcnRpdGlvbndpc2Ugam9pbgorLS0K Ky0tIEVuYWJsZSBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0ZSwgd2hpY2ggYnkgZGVmYXVsdCBpcyBk aXNhYmxlZC4KK1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9hZ2dyZWdhdGUgVE8gdHJ1ZTsKKy0t IEVuYWJsZSBwYXJ0aXRpb253aXNlIGpvaW4sIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQu CitTRVQgZW5hYmxlX3BhcnRpdGlvbndpc2Vfam9pbiBUTyB0cnVlOworQ1JFQVRFIFRBQkxFIGVh Z2VyX2FnZ190YWIxKHggaW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRF IFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1Ig VkFMVUVTIEZST00gKDApIFRPICg1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMiBQ QVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOwor Q1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFi MSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190 YWIyKHggaW50LCB5IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHkpOworQ1JFQVRFIFRBQkxFIGVh Z2VyX2FnZ190YWIyX3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZS T00gKDApIFRPICg1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9wMiBQQVJUSVRJT04g T0YgZWFnZXJfYWdnX3RhYjIgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOworQ1JFQVRFIFRB QkxFIGVhZ2VyX2FnZ190YWIyX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFM VUVTIEZST00gKDEwKSBUTyAoMTUpOworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYjEgU0VMRUNU IGkgJSAxNSwgaSAlIDEwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CitJTlNFUlQg SU5UTyBlYWdlcl9hZ2dfdGFiMiBTRUxFQ1QgaSAlIDEwLCBpICUgMTUgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTAwMCkgaTsKK0FOQUxZWkUgZWFnZXJfYWdnX3RhYjE7CitBTkFMWVpFIGVhZ2Vy X2FnZ190YWIyOworLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgbWF0Y2hlczsgZnVsbCBhZ2dyZWdh dGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9h Z2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkg dDEueCBPUkRFUiBCWSB0MS54OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQxLngsIChzdW0o dDEueSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogdDEueAorICAgLT4gIEFwcGVuZAorICAg ICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDog dDEueCwgc3VtKHQxLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54 CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxLngsIChQQVJUSUFMIHN1bSh0MS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDIueSA9IHQxLngpCisgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AxIHQyCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFM IHN1bSh0MS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MS54LCBQQVJUSUFMIHN1bSh0MS55KSwgUEFSVElBTCBjb3VudCgqKQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2Fn Z190YWIxX3AxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxLngsIHQxLnkKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgc3VtKHQxXzEueSksIGNvdW50KCopCisgICAgICAg ICAgICAgICBHcm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgor ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkp KSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0 Ml8xLnkgPSB0MV8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWIyX3AyIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMS55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwgKFBB UlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBI YXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzEueCwgUEFSVElBTCBzdW0odDFfMS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIg dDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8x LngsIHQxXzEueQorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAg ICAgICAgIE91dHB1dDogdDFfMi54LCBzdW0odDFfMi55KSwgY291bnQoKikKKyAgICAgICAgICAg ICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAo UEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIu eSA9IHQxXzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYjJfcDMgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8yLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54 LCBQQVJUSUFMIHN1bSh0MV8yLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0MV8y CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwg dDFfMi55CisoNDkgcm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikgRlJP TSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkg R1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworIHggIHwgIHN1bSAgfCBjb3VudCAKKy0tLS0r LS0tLS0tLSstLS0tLS0tCisgIDAgfCAxMDg5MCB8ICA0MzU2CisgIDEgfCAxNTU0NCB8ICA0NDg5 CisgIDIgfCAyMDAzMyB8ICA0NDg5CisgIDMgfCAyNDUyMiB8ICA0NDg5CisgIDQgfCAyOTAxMSB8 ICA0NDg5CisgIDUgfCAxMTM5MCB8ICA0NDg5CisgIDYgfCAxNTg3OSB8ICA0NDg5CisgIDcgfCAy MDM2OCB8ICA0NDg5CisgIDggfCAyNDg1NyB8ICA0NDg5CisgIDkgfCAyOTM0NiB8ICA0NDg5Cisg MTAgfCAxMTA1NSB8ICA0NDg5CisgMTEgfCAxNTI0NiB8ICA0MzU2CisgMTIgfCAxOTYwMiB8ICA0 MzU2CisgMTMgfCAyMzk1OCB8ICA0MzU2CisgMTQgfCAyODMxNCB8ICA0MzU2CisoMTUgcm93cykK KworLS0gR1JPVVAgQlkgaGF2aW5nIG90aGVyIG1hdGNoaW5nIGtleQorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQyLnksIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdl cl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAg QlkgdDIueSBPUkRFUiBCWSB0Mi55OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHQyLnksIChz dW0odDEueSkpLCAoY291bnQoKikpCisgICBTb3J0IEtleTogdDIueQorICAgLT4gIEFwcGVuZAor ICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1 dDogdDIueSwgc3VtKHQxLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 Mi55CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyLnksIChQQVJUSUFMIHN1bSh0MS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDIueSA9IHQxLngpCisgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIyX3AxIHQyCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJU SUFMIHN1bSh0MS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0MS54LCBQQVJUSUFMIHN1bSh0MS55KSwgUEFSVElBTCBjb3VudCgq KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2Vy X2FnZ190YWIxX3AxIHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQxLnksIHQxLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgc3VtKHQxXzEueSksIGNvdW50KCopCisgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQyXzEueQorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIChQQVJUSUFMIHN1bSh0MV8x LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6 ICh0Ml8xLnkgPSB0MV8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWIyX3AyIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMS55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1bSh0MV8xLnkpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlh bCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQxXzEueCwgUEFSVElBTCBzdW0odDFfMS55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFf cDIgdDFfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MV8xLnksIHQxXzEueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMi55LCBzdW0odDFfMi55KSwgY291bnQoKikKKyAgICAgICAg ICAgICAgIEdyb3VwIEtleTogdDJfMi55CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgKFBBUlRJQUwgc3VtKHQxXzIueSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQy XzIueSA9IHQxXzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJs aWMuZWFnZXJfYWdnX3RhYjJfcDMgdDJfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8yLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueSkpLCAoUEFS VElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFf Mi54LCBQQVJUSUFMIHN1bSh0MV8yLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0 MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIu eSwgdDFfMi54CisoNDkgcm93cykKKworU0VMRUNUIHQyLnksIHN1bSh0MS55KSwgY291bnQoKikg RlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQy LnkgR1JPVVAgQlkgdDIueSBPUkRFUiBCWSB0Mi55OworIHkgIHwgIHN1bSAgfCBjb3VudCAKKy0t LS0rLS0tLS0tLSstLS0tLS0tCisgIDAgfCAxMDg5MCB8ICA0MzU2CisgIDEgfCAxNTU0NCB8ICA0 NDg5CisgIDIgfCAyMDAzMyB8ICA0NDg5CisgIDMgfCAyNDUyMiB8ICA0NDg5CisgIDQgfCAyOTAx MSB8ICA0NDg5CisgIDUgfCAxMTM5MCB8ICA0NDg5CisgIDYgfCAxNTg3OSB8ICA0NDg5CisgIDcg fCAyMDM2OCB8ICA0NDg5CisgIDggfCAyNDg1NyB8ICA0NDg5CisgIDkgfCAyOTM0NiB8ICA0NDg5 CisgMTAgfCAxMTA1NSB8ICA0NDg5CisgMTEgfCAxNTI0NiB8ICA0MzU2CisgMTIgfCAxOTYwMiB8 ICA0MzU2CisgMTMgfCAyMzk1OCB8ICA0MzU2CisgMTQgfCAyODMxNCB8ICA0MzU2CisoMTUgcm93 cykKKworLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgZG9lcyBub3QgbWF0Y2g7IHBhcnRpYWwgYWdn cmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIE9GRikKK1NFTEVDVCB0Mi54LCBzdW0odDEueCksIGNvdW50KCopIEZST00gZWFn ZXJfYWdnX3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQ IEJZIHQyLnggSEFWSU5HIGF2Zyh0MS54KSA+IDUgT1JERVIgQlkgdDIueDsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0 Mi54LCAoc3VtKHQxLngpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQyLngKKyAgIC0+ICBG aW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICBPdXRwdXQ6IHQyLngsIHN1bSh0MS54KSwg Y291bnQoKikKKyAgICAgICAgIEdyb3VwIEtleTogdDIueAorICAgICAgICAgRmlsdGVyOiAoYXZn KHQxLngpID4gJzUnOjpudW1lcmljKQorICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAg ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCAoUEFS VElBTCBzdW0odDEueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MS54KSkK KyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLnkgPSB0MS54KQorICAgICAgICAg ICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMSB0Mgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0Mi55CisgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MS54LCAoUEFSVElBTCBzdW0odDEueCkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIGF2 Zyh0MS54KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dy ZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueCwgUEFS VElBTCBzdW0odDEueCksIFBBUlRJQUwgY291bnQoKiksIFBBUlRJQUwgYXZnKHQxLngpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3Rh YjFfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8xLngsIChQQVJUSUFMIHN1bSh0MV8xLngpKSwgKFBBUlRJQUwgY291bnQoKikp LCAoUEFSVElBTCBhdmcodDFfMS54KSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQyXzEueSA9IHQxXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYjJfcDIgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0Ml8xLngsIHQyXzEueQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCAoUEFSVElBTCBzdW0odDFf MS54KSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwgYXZnKHQxXzEueCkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgUEFSVElBTCBzdW0odDFfMS54 KSwgUEFSVElBTCBjb3VudCgqKSwgUEFSVElBTCBhdmcodDFfMS54KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDFf MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngK KyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMi54LCAoUEFSVElBTCBzdW0odDFfMi54KSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBB UlRJQUwgYXZnKHQxXzIueCkpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8y LnkgPSB0MV8yLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWIyX3AzIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMi54LCB0Ml8yLnkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgKFBBUlRJQUwgc3VtKHQxXzIueCkp LCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIGF2Zyh0MV8yLngpKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIFBBUlRJQUwgc3VtKHQxXzIueCksIFBB UlRJQUwgY291bnQoKiksIFBBUlRJQUwgYXZnKHQxXzIueCkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AzIHQxXzIKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54CisoNDQg cm93cykKKworU0VMRUNUIHQyLngsIHN1bSh0MS54KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2df dGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIu eCBIQVZJTkcgYXZnKHQxLngpID4gNSBPUkRFUiBCWSB0Mi54OworIHggfCAgc3VtICB8IGNvdW50 IAorLS0tKy0tLS0tLS0rLS0tLS0tLQorIDAgfCAzMzgzNSB8ICA2NjY3CisgMSB8IDM5NTAyIHwg IDY2NjcKKyAyIHwgNDYxNjkgfCAgNjY2NworIDMgfCA1MjgzNiB8ICA2NjY3CisgNCB8IDU5NTAz IHwgIDY2NjcKKyA1IHwgMzM1MDAgfCAgNjY2NworIDYgfCAzOTgzNyB8ICA2NjY3CisgNyB8IDQ2 NTA0IHwgIDY2NjcKKyA4IHwgNTMxNzEgfCAgNjY2NworIDkgfCA1OTgzOCB8ICA2NjY3CisoMTAg cm93cykKKworLS0gQ2hlY2sgd2l0aCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGpvaW4gcmVsCist LSBmdWxsIGFnZ3JlZ2F0aW9uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1Qg dDEueCwgc3VtKHQyLnkgKyB0My55KSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4gZWFnZXJf YWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBPTiB0Mi54 ID0gdDMueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29y dAorICAgT3V0cHV0OiB0MS54LCAoc3VtKCh0Mi55ICsgdDMueSkpKQorICAgU29ydCBLZXk6IHQx LngKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSgodDIueSArIHQzLnkpKQorICAgICAgICAg ICAgICAgR3JvdXAgS2V5OiB0MS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkp KSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLnggPSB0Mi54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0 MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54 LCB0My54LCAoUEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQyLngsIHQzLngsIFBBUlRJQUwgc3VtKCh0Mi55ICsgdDMueSkp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueCwgdDMueSwgdDMueAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDIueCA9 IHQzLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFn ZXJfYWdnX3RhYjFfcDEgdDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDMueSwgdDMueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhh c2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCBzdW0oKHQyXzEueSAr IHQzXzEueSkpCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAg ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQ QVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpCisgICAgICAgICAgICAgICAgICAgICBIYXNo IENvbmQ6ICh0MV8xLnggPSB0Ml8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIHQzXzEueCwgKFBBUlRJQUwg c3VtKCh0Ml8xLnkgKyB0M18xLnkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQ YXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91 dHB1dDogdDJfMS54LCB0M18xLngsIFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8xLngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngsIHQzXzEueSwgdDNf MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0 Ml8xLnggPSB0M18xLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQyXzEKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNf MS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQzXzEKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0M18xLngK KyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzIueCwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKQorICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0MV8yLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDFfMi54LCAoUEFSVElBTCBzdW0oKHQyXzIueSArIHQzXzIueSkpKQor ICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMi54ID0gdDJfMi54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0 MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAg ICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMi54LCB0M18yLngsIChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDNfMi54LCBQQVJUSUFMIHN1 bSgodDJfMi55ICsgdDNfMi55KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy XzIueSwgdDJfMi54LCB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMi54ID0gdDNfMi54KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiMV9wMyB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9w MyB0M18yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisoNzAgcm93cykKKworU0VMRUNUIHQxLngsIHN1bSh0 Mi55ICsgdDMueSkgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSBKT0lOIGVhZ2VyX2FnZ190YWIxIHQy IE9OIHQxLnggPSB0Mi54IEpPSU4gZWFnZXJfYWdnX3RhYjEgdDMgT04gdDIueCA9IHQzLnggR1JP VVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworIHggIHwgICBzdW0gICAKKy0tLS0rLS0tLS0tLS0t CisgIDAgfCAxNDM3NDgwCisgIDEgfCAyMDgyODk2CisgIDIgfCAyNjg0NDIyCisgIDMgfCAzMjg1 OTQ4CisgIDQgfCAzODg3NDc0CisgIDUgfCAxNTI2MjYwCisgIDYgfCAyMTI3Nzg2CisgIDcgfCAy NzI5MzEyCisgIDggfCAzMzMwODM4CisgIDkgfCAzOTMyMzY0CisgMTAgfCAxNDgxMzcwCisgMTEg fCAyMDEyNDcyCisgMTIgfCAyNTg3NDY0CisgMTMgfCAzMTYyNDU2CisgMTQgfCAzNzM3NDQ4Ciso MTUgcm93cykKKworLS0gcGFydGlhbCBhZ2dyZWdhdGlvbgorU0VUIGVuYWJsZV9oYXNoYWdnIFRP IG9mZjsKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyIFRPIDA7CitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSBGUk9N IGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLngg Sk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVS IEJZIHQzLnk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKKyAgIE91 dHB1dDogdDMueSwgc3VtKCh0Mi55ICsgdDMueSkpCisgICBHcm91cCBLZXk6IHQzLnkKKyAgIC0+ ICBTb3J0CisgICAgICAgICBPdXRwdXQ6IHQzLnksIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkp KSkKKyAgICAgICAgIFNvcnQgS2V5OiB0My55CisgICAgICAgICAtPiAgQXBwZW5kCisgICAgICAg ICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnks IChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHQyLnggPSB0MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgR3Jv dXBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDIueCwgdDMu eSwgdDMueCwgUEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdyb3VwIEtleTogdDIueCwgdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIEluY3JlbWVudGFsIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDIueSwgdDIueCwgdDMueSwgdDMueAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU29ydCBLZXk6IHQyLngsIHQzLnkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFByZXNvcnRlZCBLZXk6IHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0+ICBNZXJnZSBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyLnksIHQyLngsIHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0Mi54ID0gdDMueCkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Mi54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWIxX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0My54CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVh Z2VyX2FnZ190YWIxX3AxIHQzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFf cDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueAorICAg ICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 M18xLnksIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpCisgICAgICAgICAgICAgICAg ICAgICBIYXNoIENvbmQ6ICh0Ml8xLnggPSB0MV8xLngpCisgICAgICAgICAgICAgICAgICAgICAt PiAgUGFydGlhbCBHcm91cEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8xLngsIHQzXzEueSwgdDNfMS54LCBQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55 KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMS54LCB0M18xLnks IHQzXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEluY3JlbWVudGFsIFNvcnQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngs IHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtl eTogdDJfMS54LCB0M18xLnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZXNv cnRlZCBLZXk6IHQyXzEueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIE1l cmdlIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDog dDJfMS55LCB0Ml8xLngsIHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBNZXJnZSBDb25kOiAodDJfMS54ID0gdDNfMS54KQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8xLngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0M18xLngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0M18x LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDIgdDNfMQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQzXzEueAor ICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkg KyB0M18yLnkpKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueCA9IHQx XzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgdDNfMi55LCB0M18yLngs IFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgR3JvdXAgS2V5OiB0Ml8yLngsIHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAtPiAgSW5jcmVtZW50YWwgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueCwgdDNfMi55LCB0M18yLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiB0Ml8yLngsIHQzXzIueQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHJlc29ydGVkIEtleTogdDJfMi54CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgTWVyZ2UgSm9pbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueCwgdDNfMi55LCB0M18y LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lcmdlIENvbmQ6ICh0 Ml8yLnggPSB0M18yLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt PiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU29ydCBLZXk6IHQyXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMyB0 Ml8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU29ydCBLZXk6IHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi MV9wMyB0M18yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFz aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMg dDFfMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngKKyg4 OCByb3dzKQorCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSBGUk9NIGVhZ2VyX2FnZ190 YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdlcl9h Z2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVSIEJZIHQzLnk7Cisg eSB8ICAgc3VtICAgCistLS0rLS0tLS0tLS0tCisgMCB8IDExMTExMTAKKyAxIHwgMjAwMDEzMgor IDIgfCAyODg5MTU0CisgMyB8IDM3NzgxNzYKKyA0IHwgNDY2NzE5OAorIDUgfCAzMzM0MDAwCisg NiB8IDQyMjMwMjIKKyA3IHwgNTExMjA0NAorIDggfCA2MDAxMDY2CisgOSB8IDY4OTAwODgKKygx MCByb3dzKQorCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3Jr ZXJzX3Blcl9nYXRoZXI7CistLSB0cnkgdGhhdCB3aXRoIEdFUU8gdG9vCitTRVQgZ2VxbyA9IG9u OworU0VUIGdlcW9fdGhyZXNob2xkID0gMjsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikK K1NFTEVDVCB0MS54LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEs IGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIg QlkgdDEueDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0MS54LCAoc3VtKHQxLnkpKSwgKGNv dW50KCopKQorICAgU29ydCBLZXk6IHQxLngKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBG aW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSh0 MS55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAg ICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAo UEFSVElBTCBzdW0odDEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKHQyLnkgPSB0MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMl9wMSB0MgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Mi55CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDEueSkp LCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0 aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDEueCwgUEFSVElBTCBzdW0odDEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiMV9wMSB0 MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54LCB0 MS55CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAg T3V0cHV0OiB0MV8xLngsIHN1bSh0MV8xLnkpLCBjb3VudCgqKQorICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiB0MV8xLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDFfMS54LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS55ID0gdDFf MS54KQorICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9h Z2dfdGFiMl9wMiB0Ml8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEu eQorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDFfMS54LCAoUEFSVElBTCBzdW0odDFfMS55KSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0 ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIFBBUlRJ QUwgc3VtKHQxXzEueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdyb3VwIEtleTogdDFfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWIxX3AyIHQxXzEKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCB0MV8xLnkK KyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzIueCwgc3VtKHQxXzIueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBL ZXk6IHQxXzIueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8yLngsIChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291 bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnkgPSB0MV8yLngp CisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWIyX3AzIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55Cisg ICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAg T3V0cHV0OiB0MV8yLngsIChQQVJUSUFMIHN1bSh0MV8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgUEFSVElBTCBz dW0odDFfMi55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR3JvdXAgS2V5OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYjFfcDMgdDFfMgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIHQxXzIueQorKDQ5 IHJvd3MpCisKK1NFTEVDVCB0MS54LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdn X3RhYjEgdDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQx LnggT1JERVIgQlkgdDEueDsKKyB4ICB8ICBzdW0gIHwgY291bnQgCistLS0tKy0tLS0tLS0rLS0t LS0tLQorICAwIHwgMTA4OTAgfCAgNDM1NgorICAxIHwgMTU1NDQgfCAgNDQ4OQorICAyIHwgMjAw MzMgfCAgNDQ4OQorICAzIHwgMjQ1MjIgfCAgNDQ4OQorICA0IHwgMjkwMTEgfCAgNDQ4OQorICA1 IHwgMTEzOTAgfCAgNDQ4OQorICA2IHwgMTU4NzkgfCAgNDQ4OQorICA3IHwgMjAzNjggfCAgNDQ4 OQorICA4IHwgMjQ4NTcgfCAgNDQ4OQorICA5IHwgMjkzNDYgfCAgNDQ4OQorIDEwIHwgMTEwNTUg fCAgNDQ4OQorIDExIHwgMTUyNDYgfCAgNDM1NgorIDEyIHwgMTk2MDIgfCAgNDM1NgorIDEzIHwg MjM5NTggfCAgNDM1NgorIDE0IHwgMjgzMTQgfCAgNDM1NgorKDE1IHJvd3MpCisKK1JFU0VUIGdl cW87CitSRVNFVCBnZXFvX3RocmVzaG9sZDsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3RhYjE7CitE Uk9QIFRBQkxFIGVhZ2VyX2FnZ190YWIyOworLS0KKy0tIFRlc3Qgd2l0aCBtdWx0aS1sZXZlbCBw YXJ0aXRpb25pbmcgc2NoZW1lCistLQorQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWJfbWwoeCBp bnQsIHkgaW50KSBQQVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdn X3RhYl9tbF9wMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00g KDApIFRPICgxMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMiBQQVJUSVRJT04g T0YgZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApIFBBUlRJVElP TiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyX3MxIFBBUlRJ VElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AyIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgxNSk7 CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiBQQVJUSVRJT04gT0YgZWFnZXJf YWdnX3RhYl9tbF9wMiBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApOworQ1JFQVRFIFRBQkxF IGVhZ2VyX2FnZ190YWJfbWxfcDMgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWwgRk9SIFZB TFVFUyBGUk9NICgyMCkgVE8gKDMwKSBQQVJUSVRJT04gQlkgUkFOR0UoeCk7CitDUkVBVEUgVEFC TEUgZWFnZXJfYWdnX3RhYl9tbF9wM19zMSBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbF9w MyBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMjUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190 YWJfbWxfcDNfczIgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJfbWxfcDMgRk9SIFZBTFVFUyBG Uk9NICgyNSkgVE8gKDMwKTsKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190YWJfbWwgU0VMRUNUIGkg JSAzMCwgaSAlIDMwIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CitBTkFMWVpFIGVh Z2VyX2FnZ190YWJfbWw7CistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBtYXRjaGVzOyBmdWxsIGFn Z3JlZ2F0aW9uIGlzIHBlcmZvcm1lZCBmb3IgZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVh Z2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54 IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0 MS54LCAoc3VtKHQyLnkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQxLngKKyAgIC0+ICBB cHBlbmQKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxLngsIHN1bSh0Mi55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDEueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MS54LCAoUEFSVElBTCBzdW0odDIueSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLnggPSB0Mi54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Ax IHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy LngsIChQQVJUSUFMIHN1bSh0Mi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCBQQVJUSUFMIHN1bSh0Mi55KSwgUEFSVElB TCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0 Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVi bGljLmVhZ2VyX2FnZ190YWJfbWxfcDEgdDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDIueSwgdDIueAorICAgICAgICAgLT4gIEZpbmFsaXplIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54LCBzdW0odDJfMS55KSwgY291 bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMS54CisgICAgICAgICAgICAgICAt PiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgKFBBUlRJ QUwgc3VtKHQyXzEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQxXzEueCA9IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCAoUEFSVElB TCBzdW0odDJfMS55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiB0Ml8xLngsIFBBUlRJQUwgc3VtKHQyXzEueSksIFBBUlRJQUwgY291 bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDJfMS54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDJfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEueAorICAgICAgICAgLT4gIEZpbmFsaXpl IEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi54LCBzdW0odDJfMi55 KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMi54CisgICAgICAgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwg KFBBUlRJQUwgc3VtKHQyXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIueCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0MV8yCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCAo UEFSVElBTCBzdW0odDJfMi55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLngsIFBBUlRJQUwgc3VtKHQyXzIueSksIFBBUlRJ QUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTog dDJfMi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDJfMgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAgICAgICAgLT4gIEZp bmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMy54LCBzdW0o dDJfMy55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMy54CisgICAg ICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzMueCwgKFBBUlRJQUwgc3VtKHQyXzMueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMueCA9IHQyXzMueCkKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV8z CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueAorICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJf My54LCAoUEFSVElBTCBzdW0odDJfMy55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLngsIFBBUlRJQUwgc3VtKHQyXzMueSks IFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3Vw IEtleTogdDJfMy54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDJfMworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQyXzMueAorICAgICAgICAg LT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54 LCBzdW0odDJfNC55KSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfNC54 CisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzQueCwgKFBBUlRJQUwgc3VtKHQyXzQueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19z MiB0MV80CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueAorICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfNC54LCAoUEFSVElBTCBzdW0odDJfNC55KSksIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LngsIFBBUlRJQUwgc3VtKHQy XzQueSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEdyb3VwIEtleTogdDJfNC54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDJfNAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LnksIHQyXzQueAorKDc5 IHJvd3MpCisKK1NFTEVDVCB0MS54LCBzdW0odDIueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdn X3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggR1JPVVAg QlkgdDEueCBPUkRFUiBCWSB0MS54OworIHggIHwgIHN1bSAgfCBjb3VudCAKKy0tLS0rLS0tLS0t LSstLS0tLS0tCisgIDAgfCAgICAgMCB8ICAxMDg5CisgIDEgfCAgMTE1NiB8ICAxMTU2CisgIDIg fCAgMjMxMiB8ICAxMTU2CisgIDMgfCAgMzQ2OCB8ICAxMTU2CisgIDQgfCAgNDYyNCB8ICAxMTU2 CisgIDUgfCAgNTc4MCB8ICAxMTU2CisgIDYgfCAgNjkzNiB8ICAxMTU2CisgIDcgfCAgODA5MiB8 ICAxMTU2CisgIDggfCAgOTI0OCB8ICAxMTU2CisgIDkgfCAxMDQwNCB8ICAxMTU2CisgMTAgfCAx MTU2MCB8ICAxMTU2CisgMTEgfCAxMTk3OSB8ICAxMDg5CisgMTIgfCAxMzA2OCB8ICAxMDg5Cisg MTMgfCAxNDE1NyB8ICAxMDg5CisgMTQgfCAxNTI0NiB8ICAxMDg5CisgMTUgfCAxNjMzNSB8ICAx MDg5CisgMTYgfCAxNzQyNCB8ICAxMDg5CisgMTcgfCAxODUxMyB8ICAxMDg5CisgMTggfCAxOTYw MiB8ICAxMDg5CisgMTkgfCAyMDY5MSB8ICAxMDg5CisgMjAgfCAyMTc4MCB8ICAxMDg5CisgMjEg fCAyMjg2OSB8ICAxMDg5CisgMjIgfCAyMzk1OCB8ICAxMDg5CisgMjMgfCAyNTA0NyB8ICAxMDg5 CisgMjQgfCAyNjEzNiB8ICAxMDg5CisgMjUgfCAyNzIyNSB8ICAxMDg5CisgMjYgfCAyODMxNCB8 ICAxMDg5CisgMjcgfCAyOTQwMyB8ICAxMDg5CisgMjggfCAzMDQ5MiB8ICAxMDg5CisgMjkgfCAz MTU4MSB8ICAxMDg5CisoMzAgcm93cykKKworLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgZG9lcyBu b3QgbWF0Y2g7IHBhcnRpYWwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVkIGZvciBlYWNoIHBhcnRp dGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS55LCBzdW0odDIu eSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJf bWwgdDIgT04gdDEueCA9IHQyLnggR1JPVVAgQlkgdDEueSBPUkRFUiBCWSB0MS55OworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBTb3J0CisgICBPdXRwdXQ6IHQxLnksIChzdW0odDIueSkpLCAoY291bnQoKikpCisgICBTb3J0 IEtleTogdDEueQorICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIE91dHB1 dDogdDEueSwgc3VtKHQyLnkpLCBjb3VudCgqKQorICAgICAgICAgR3JvdXAgS2V5OiB0MS55Cisg ICAgICAgICAtPiAgQXBwZW5kCisgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQxLnksIChQQVJUSUFMIHN1bSh0Mi55KSksIChQQVJUSUFM IGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDEueCA9IHQyLngp CisgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190 YWJfbWxfcDEgdDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDEueSwgdDEu eAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDIueCwgKFBBUlRJQUwgc3VtKHQyLnkpKSwgKFBBUlRJQUwgY291bnQoKikp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIFBBUlRJQUwgc3Vt KHQyLnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHcm91cCBLZXk6IHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi55LCB0Mi54CisgICAgICAgICAgICAg ICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueSwgKFBB UlRJQUwgc3VtKHQyXzEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAg ICAgIEhhc2ggQ29uZDogKHQxXzEueCA9IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueSwgdDFfMS54CisgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8x LngsIChQQVJUSUFMIHN1bSh0Ml8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgUEFSVElBTCBzdW0odDJfMS55KSwg UEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0Ml8xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0Ml8xCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54CisgICAgICAgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueSwg KFBBUlRJQUwgc3VtKHQyXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIueCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0MV8yCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueSwgdDFfMi54CisgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml8yLngsIChQQVJUSUFMIHN1bSh0Ml8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgUEFSVElBTCBzdW0odDJfMi55 KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiB0Ml8yLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0Ml8yCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAg ICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMu eSwgKFBBUlRJQUwgc3VtKHQyXzMueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAg ICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzMueCA9IHQyXzMueCkKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV8zCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueSwgdDFfMy54CisgICAgICAg ICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0Ml8zLngsIChQQVJUSUFMIHN1bSh0Ml8zLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueCwgUEFSVElBTCBzdW0odDJf My55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R3JvdXAgS2V5OiB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0Ml8zCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMueSwgdDJfMy54CisgICAg ICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQx XzQueSwgKFBBUlRJQUwgc3VtKHQyXzQueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAg ICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0MV80 CisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueSwgdDFfNC54CisgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml80LngsIChQQVJUSUFMIHN1bSh0Ml80LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueCwgUEFSVElBTCBzdW0o dDJfNC55KSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgR3JvdXAgS2V5OiB0Ml80LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0Ml80CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54Ciso Njcgcm93cykKKworU0VMRUNUIHQxLnksIHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9h Z2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9V UCBCWSB0MS55IE9SREVSIEJZIHQxLnk7CisgeSAgfCAgc3VtICB8IGNvdW50IAorLS0tLSstLS0t LS0tKy0tLS0tLS0KKyAgMCB8ICAgICAwIHwgIDEwODkKKyAgMSB8ICAxMTU2IHwgIDExNTYKKyAg MiB8ICAyMzEyIHwgIDExNTYKKyAgMyB8ICAzNDY4IHwgIDExNTYKKyAgNCB8ICA0NjI0IHwgIDEx NTYKKyAgNSB8ICA1NzgwIHwgIDExNTYKKyAgNiB8ICA2OTM2IHwgIDExNTYKKyAgNyB8ICA4MDky IHwgIDExNTYKKyAgOCB8ICA5MjQ4IHwgIDExNTYKKyAgOSB8IDEwNDA0IHwgIDExNTYKKyAxMCB8 IDExNTYwIHwgIDExNTYKKyAxMSB8IDExOTc5IHwgIDEwODkKKyAxMiB8IDEzMDY4IHwgIDEwODkK KyAxMyB8IDE0MTU3IHwgIDEwODkKKyAxNCB8IDE1MjQ2IHwgIDEwODkKKyAxNSB8IDE2MzM1IHwg IDEwODkKKyAxNiB8IDE3NDI0IHwgIDEwODkKKyAxNyB8IDE4NTEzIHwgIDEwODkKKyAxOCB8IDE5 NjAyIHwgIDEwODkKKyAxOSB8IDIwNjkxIHwgIDEwODkKKyAyMCB8IDIxNzgwIHwgIDEwODkKKyAy MSB8IDIyODY5IHwgIDEwODkKKyAyMiB8IDIzOTU4IHwgIDEwODkKKyAyMyB8IDI1MDQ3IHwgIDEw ODkKKyAyNCB8IDI2MTM2IHwgIDEwODkKKyAyNSB8IDI3MjI1IHwgIDEwODkKKyAyNiB8IDI4MzE0 IHwgIDEwODkKKyAyNyB8IDI5NDAzIHwgIDEwODkKKyAyOCB8IDMwNDkyIHwgIDEwODkKKyAyOSB8 IDMxNTgxIHwgIDEwODkKKygzMCByb3dzKQorCistLSBDaGVjayB3aXRoIGVhZ2VyIGFnZ3JlZ2F0 aW9uIG92ZXIgam9pbiByZWwKKy0tIGZ1bGwgYWdncmVnYXRpb24KK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9N IGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0 Mi54IEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0MS54 IE9SREVSIEJZIHQxLng7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgU29ydAorICAgT3V0cHV0OiB0MS54LCAoc3VtKCh0Mi55ICsgdDMueSkpKSwgKGNvdW50 KCopKQorICAgU29ydCBLZXk6IHQxLngKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIC0+ICBGaW5h bGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngsIHN1bSgodDIu eSArIHQzLnkpKSwgY291bnQoKikKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDEueAorICAg ICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 MS54LCAoUEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLnggPSB0Mi54KQorICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQxCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLngsIHQz LngsIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My54LCBQQVJUSUFMIHN1 bSgodDIueSArIHQzLnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyLnksIHQyLngsIHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyLnggPSB0My54KQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2df dGFiX21sX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0Mwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0My55LCB0My54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgICAgICAgT3V0cHV0OiB0MV8xLngsIHN1bSgodDJfMS55ICsgdDNfMS55KSksIGNvdW50KCop CisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgLT4gIEhh c2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFMIHN1 bSgodDJfMS55ICsgdDNfMS55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgIEhhc2ggQ29uZDogKHQxXzEueCA9IHQyXzEueCkKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0MV8xCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueAorICAgICAgICAgICAgICAgICAg ICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0 M18xLngsIChQQVJUSUFMIHN1bSgodDJfMS55ICsgdDNfMS55KSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS54LCB0M18xLngs IFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8xLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngsIHQzXzEueSwgdDNfMS54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8x LnggPSB0M18xLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDJfMQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8xLnksIHQyXzEu eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMS55LCB0 M18xLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMSB0M18xCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwg dDNfMS54CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAg ICAgT3V0cHV0OiB0MV8yLngsIHN1bSgodDJfMi55ICsgdDNfMi55KSksIGNvdW50KCopCisgICAg ICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9p bgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIChQQVJUSUFMIHN1bSgodDJf Mi55ICsgdDNfMi55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAg IEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0MV8yCisgICAgICAgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAgICAgICAgICAgICAgICAgLT4g IEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0M18yLngs IChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCB0M18yLngsIFBBUlRJ QUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8yLngKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8yLngsIHQzXzIueSwgdDNfMi54CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8yLnggPSB0 M18yLngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDJfMgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0M18yCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzIueSwgdDNfMi54 CisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0 cHV0OiB0MV8zLngsIHN1bSgodDJfMy55ICsgdDNfMy55KSksIGNvdW50KCopCisgICAgICAgICAg ICAgICBHcm91cCBLZXk6IHQxXzMueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngsIChQQVJUSUFMIHN1bSgodDJfMy55ICsg dDNfMy55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2gg Q29uZDogKHQxXzMueCA9IHQyXzMueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0MV8zCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHQxXzMueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCB0M18zLngsIChQQVJU SUFMIHN1bSgodDJfMy55ICsgdDNfMy55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCB0M18zLngsIFBBUlRJQUwgc3Vt KCh0Ml8zLnkgKyB0M18zLnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Ml8zLngKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfMy55LCB0Ml8zLngsIHQzXzMueSwgdDNfMy54CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8zLnggPSB0M18zLngp CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDJfMworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQyXzMueAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMy55LCB0M18zLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0M18zCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54CisgICAg ICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiB0 MV80LngsIHN1bSgodDJfNC55ICsgdDNfNC55KSksIGNvdW50KCopCisgICAgICAgICAgICAgICBH cm91cCBLZXk6IHQxXzQueAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiB0MV80LngsIChQQVJUSUFMIHN1bSgodDJfNC55ICsgdDNfNC55 KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQxXzQueCA9IHQyXzQueCkKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0MV80CisgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQxXzQueAorICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54LCB0M180LngsIChQQVJUSUFMIHN1 bSgodDJfNC55ICsgdDNfNC55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54LCB0M180LngsIFBBUlRJQUwgc3VtKCh0Ml80 LnkgKyB0M180LnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR3JvdXAgS2V5OiB0Ml80LngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfNC55LCB0Ml80LngsIHQzXzQueSwgdDNfNC54CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml80LnggPSB0M180LngpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDJfNAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml80LnksIHQyXzQueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfNC55LCB0M180LngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMu ZWFnZXJfYWdnX3RhYl9tbF9wM19zMiB0M180CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzQueSwgdDNfNC54CisoMTE0IHJvd3Mp CisKK1NFTEVDVCB0MS54LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2Fn Z190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpPSU4g ZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0MS54IE9SREVSIEJZ IHQxLng7CisgeCAgfCAgIHN1bSAgIHwgY291bnQgCistLS0tKy0tLS0tLS0tLSstLS0tLS0tCisg IDAgfCAgICAgICAwIHwgMzU5MzcKKyAgMSB8ICAgNzg2MDggfCAzOTMwNAorICAyIHwgIDE1NzIx NiB8IDM5MzA0CisgIDMgfCAgMjM1ODI0IHwgMzkzMDQKKyAgNCB8ICAzMTQ0MzIgfCAzOTMwNAor ICA1IHwgIDM5MzA0MCB8IDM5MzA0CisgIDYgfCAgNDcxNjQ4IHwgMzkzMDQKKyAgNyB8ICA1NTAy NTYgfCAzOTMwNAorICA4IHwgIDYyODg2NCB8IDM5MzA0CisgIDkgfCAgNzA3NDcyIHwgMzkzMDQK KyAxMCB8ICA3ODYwODAgfCAzOTMwNAorIDExIHwgIDc5MDYxNCB8IDM1OTM3CisgMTIgfCAgODYy NDg4IHwgMzU5MzcKKyAxMyB8ICA5MzQzNjIgfCAzNTkzNworIDE0IHwgMTAwNjIzNiB8IDM1OTM3 CisgMTUgfCAxMDc4MTEwIHwgMzU5MzcKKyAxNiB8IDExNDk5ODQgfCAzNTkzNworIDE3IHwgMTIy MTg1OCB8IDM1OTM3CisgMTggfCAxMjkzNzMyIHwgMzU5MzcKKyAxOSB8IDEzNjU2MDYgfCAzNTkz NworIDIwIHwgMTQzNzQ4MCB8IDM1OTM3CisgMjEgfCAxNTA5MzU0IHwgMzU5MzcKKyAyMiB8IDE1 ODEyMjggfCAzNTkzNworIDIzIHwgMTY1MzEwMiB8IDM1OTM3CisgMjQgfCAxNzI0OTc2IHwgMzU5 MzcKKyAyNSB8IDE3OTY4NTAgfCAzNTkzNworIDI2IHwgMTg2ODcyNCB8IDM1OTM3CisgMjcgfCAx OTQwNTk4IHwgMzU5MzcKKyAyOCB8IDIwMTI0NzIgfCAzNTkzNworIDI5IHwgMjA4NDM0NiB8IDM1 OTM3CisoMzAgcm93cykKKworLS0gcGFydGlhbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopIEZS T00gZWFnZXJfYWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9 IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZIHQz LnkgT1JERVIgQlkgdDMueTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0cHV0OiB0My55LCAoc3VtKCh0Mi55 ICsgdDMueSkpKSwgKGNvdW50KCopKQorICAgU29ydCBLZXk6IHQzLnkKKyAgIC0+ICBGaW5hbGl6 ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICBPdXRwdXQ6IHQzLnksIHN1bSgodDIueSArIHQzLnkp KSwgY291bnQoKikKKyAgICAgICAgIEdyb3VwIEtleTogdDMueQorICAgICAgICAgLT4gIEFwcGVu ZAorICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0My55LCAoUEFSVElBTCBzdW0oKHQyLnkgKyB0My55KSkpLCAoUEFSVElBTCBjb3VudCgq KSkKKyAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxLnggPSB0Mi54KQorICAgICAg ICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3Ax IHQxCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxLngKKyAgICAgICAgICAg ICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQy LngsIHQzLnksIHQzLngsIChQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSksIChQQVJUSUFMIGNv dW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3Jl Z2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54LCB0My55 LCB0My54LCBQQVJUSUFMIHN1bSgodDIueSArIHQzLnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0Mi54LCB0My55LCB0My54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngsIHQzLnks IHQzLngKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDog KHQyLnggPSB0My54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQyCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzLnksIHQzLngKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0MworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0My55LCB0My54CisgICAgICAgICAgICAg ICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgKFBB UlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAg ICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfMS54ID0gdDJfMS54KQorICAgICAgICAgICAg ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQx XzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS54CisgICAgICAgICAg ICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0 Ml8xLngsIHQzXzEueSwgdDNfMS54LCAoUEFSVElBTCBzdW0oKHQyXzEueSArIHQzXzEueSkpKSwg KFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgUGFydGlh bCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzEueCwgdDNfMS55LCB0M18xLngsIFBBUlRJQUwgc3VtKCh0Ml8xLnkgKyB0M18xLnkpKSwg UEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAg S2V5OiB0Ml8xLngsIHQzXzEueSwgdDNfMS54CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQyXzEueSwgdDJfMS54LCB0M18xLnksIHQzXzEueAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfMS54ID0gdDNfMS54KQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzEueSwgdDNfMS54CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGlj LmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDNfMQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18xLnksIHQzXzEueAorICAgICAgICAg ICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnks IChQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAg ICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQxXzIueCA9IHQyXzIueCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9z MiB0MV8yCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueAorICAgICAg ICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1 dDogdDJfMi54LCB0M18yLnksIHQzXzIueCwgKFBBUlRJQUwgc3VtKCh0Ml8yLnkgKyB0M18yLnkp KSksIChQQVJUSUFMIGNvdW50KCopKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFBh cnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0 cHV0OiB0Ml8yLngsIHQzXzIueSwgdDNfMi54LCBQQVJUSUFMIHN1bSgodDJfMi55ICsgdDNfMi55 KSksIFBBUlRJQUwgY291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdy b3VwIEtleTogdDJfMi54LCB0M18yLnksIHQzXzIueAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0Ml8yLnksIHQyXzIueCwgdDNfMi55LCB0M18yLngKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggQ29uZDogKHQyXzIueCA9IHQzXzIueCkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBw dWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMl9zMiB0Ml8yCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueSwgdDJfMi54CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M18yLnksIHQzXzIueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQzXzIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMi55LCB0M18yLngKKyAgICAg ICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNf My55LCAoUEFSVElBTCBzdW0oKHQyXzMueSArIHQzXzMueSkpKSwgKFBBUlRJQUwgY291bnQoKikp CisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8zLnggPSB0Ml8zLngpCisgICAg ICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxf cDNfczEgdDFfMworICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngKKyAg ICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBP dXRwdXQ6IHQyXzMueCwgdDNfMy55LCB0M18zLngsIChQQVJUSUFMIHN1bSgodDJfMy55ICsgdDNf My55KSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE91dHB1dDogdDJfMy54LCB0M18zLnksIHQzXzMueCwgUEFSVElBTCBzdW0oKHQyXzMueSArIHQz XzMueSkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHcm91cCBLZXk6IHQyXzMueCwgdDNfMy55LCB0M18zLngKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMy55LCB0Ml8zLngsIHQzXzMueSwgdDNfMy54CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0Ml8zLnggPSB0M18z LngpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDJfMworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Ml8zLnksIHQyXzMueAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIEhhc2gKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDNfMy55LCB0M18zLngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wM19zMSB0M18zCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzMueSwgdDNfMy54Cisg ICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQzXzQueSwgKFBBUlRJQUwgc3VtKCh0Ml80LnkgKyB0M180LnkpKSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDFfNC54ID0gdDJfNC54KQor ICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFi X21sX3AzX3MyIHQxXzQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDFfNC54 CisgICAgICAgICAgICAgICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiB0Ml80LngsIHQzXzQueSwgdDNfNC54LCAoUEFSVElBTCBzdW0oKHQyXzQueSAr IHQzXzQueSkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBPdXRwdXQ6IHQyXzQueCwgdDNfNC55LCB0M180LngsIFBBUlRJQUwgc3VtKCh0Ml80Lnkg KyB0M180LnkpKSwgUEFSVElBTCBjb3VudCgqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgR3JvdXAgS2V5OiB0Ml80LngsIHQzXzQueSwgdDNfNC54CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtPiAgSGFzaCBKb2luCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzQueSwgdDJfNC54LCB0M180LnksIHQzXzQueAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaCBDb25kOiAodDJfNC54ID0g dDNfNC54KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQyXzQKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC55LCB0Ml80LngKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQzXzQueSwgdDNfNC54 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIgdDNfNAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0M180LnksIHQzXzQu eAorKDEwMiByb3dzKQorCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSwgY291bnQoKikg RlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54 ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDMgb24gdDIueCA9IHQzLnggR1JPVVAgQlkg dDMueSBPUkRFUiBCWSB0My55OworIHkgIHwgICBzdW0gICB8IGNvdW50IAorLS0tLSstLS0tLS0t LS0rLS0tLS0tLQorICAwIHwgICAgICAgMCB8IDM1OTM3CisgIDEgfCAgIDc4NjA4IHwgMzkzMDQK KyAgMiB8ICAxNTcyMTYgfCAzOTMwNAorICAzIHwgIDIzNTgyNCB8IDM5MzA0CisgIDQgfCAgMzE0 NDMyIHwgMzkzMDQKKyAgNSB8ICAzOTMwNDAgfCAzOTMwNAorICA2IHwgIDQ3MTY0OCB8IDM5MzA0 CisgIDcgfCAgNTUwMjU2IHwgMzkzMDQKKyAgOCB8ICA2Mjg4NjQgfCAzOTMwNAorICA5IHwgIDcw NzQ3MiB8IDM5MzA0CisgMTAgfCAgNzg2MDgwIHwgMzkzMDQKKyAxMSB8ICA3OTA2MTQgfCAzNTkz NworIDEyIHwgIDg2MjQ4OCB8IDM1OTM3CisgMTMgfCAgOTM0MzYyIHwgMzU5MzcKKyAxNCB8IDEw MDYyMzYgfCAzNTkzNworIDE1IHwgMTA3ODExMCB8IDM1OTM3CisgMTYgfCAxMTQ5OTg0IHwgMzU5 MzcKKyAxNyB8IDEyMjE4NTggfCAzNTkzNworIDE4IHwgMTI5MzczMiB8IDM1OTM3CisgMTkgfCAx MzY1NjA2IHwgMzU5MzcKKyAyMCB8IDE0Mzc0ODAgfCAzNTkzNworIDIxIHwgMTUwOTM1NCB8IDM1 OTM3CisgMjIgfCAxNTgxMjI4IHwgMzU5MzcKKyAyMyB8IDE2NTMxMDIgfCAzNTkzNworIDI0IHwg MTcyNDk3NiB8IDM1OTM3CisgMjUgfCAxNzk2ODUwIHwgMzU5MzcKKyAyNiB8IDE4Njg3MjQgfCAz NTkzNworIDI3IHwgMTk0MDU5OCB8IDM1OTM3CisgMjggfCAyMDEyNDcyIHwgMzU5MzcKKyAyOSB8 IDIwODQzNDYgfCAzNTkzNworKDMwIHJvd3MpCisKKy0tIHRyeSB0aGF0IHdpdGggR0VRTyB0b28K K1NFVCBnZXFvID0gb247CitTRVQgZ2Vxb190aHJlc2hvbGQgPSAyOworRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLngsIHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdl cl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBH Uk9VUCBCWSB0MS54IE9SREVSIEJZIHQxLng7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogdDEu eCwgKHN1bSh0Mi55KSksIChjb3VudCgqKSkKKyAgIFNvcnQgS2V5OiB0MS54CisgICAtPiAgQXBw ZW5kCisgICAgICAgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAg T3V0cHV0OiB0MS54LCBzdW0odDIueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBL ZXk6IHQxLngKKyAgICAgICAgICAgICAgIC0+ICBIYXNoIEpvaW4KKyAgICAgICAgICAgICAgICAg ICAgIE91dHB1dDogdDEueCwgKFBBUlRJQUwgc3VtKHQyLnkpKSwgKFBBUlRJQUwgY291bnQoKikp CisgICAgICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MS54ID0gdDIueCkKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMuZWFnZXJfYWdnX3RhYl9tbF9wMSB0 MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MS54CisgICAgICAgICAgICAg ICAgICAgICAtPiAgSGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0Mi54 LCAoUEFSVElBTCBzdW0odDIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDIueCwgUEFSVElBTCBzdW0odDIueSksIFBBUlRJQUwg Y291bnQoKikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDIu eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1Ymxp Yy5lYWdlcl9hZ2dfdGFiX21sX3AxIHQyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPdXRwdXQ6IHQyLnksIHQyLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdn cmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzEueCwgc3VtKHQyXzEueSksIGNvdW50 KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzEueAorICAgICAgICAgICAgICAgLT4g IEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngsIChQQVJUSUFM IHN1bSh0Ml8xLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAgICAgICBI YXNoIENvbmQ6ICh0MV8xLnggPSB0Ml8xLngpCisgICAgICAgICAgICAgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczEgdDFfMQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8xLngKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBI YXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzEueCwgKFBBUlRJQUwg c3VtKHQyXzEueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogdDJfMS54LCBQQVJUSUFMIHN1bSh0Ml8xLnkpLCBQQVJUSUFMIGNvdW50 KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQyXzEueAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5l YWdlcl9hZ2dfdGFiX21sX3AyX3MxIHQyXzEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE91dHB1dDogdDJfMS55LCB0Ml8xLngKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBI YXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIueCwgc3VtKHQyXzIueSks IGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIueAorICAgICAgICAgICAg ICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngsIChQ QVJUSUFMIHN1bSh0Ml8yLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAgICAgICAg ICAgICBIYXNoIENvbmQ6ICh0MV8yLnggPSB0Ml8yLngpCisgICAgICAgICAgICAgICAgICAgICAt PiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDJfczIgdDFfMgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8yLngKKyAgICAgICAgICAgICAgICAgICAg IC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzIueCwgKFBB UlRJQUwgc3VtKHQyXzIueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogdDJfMi54LCBQQVJUSUFMIHN1bSh0Ml8yLnkpLCBQQVJUSUFM IGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQy XzIueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1 YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AyX3MyIHQyXzIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMi55LCB0Ml8yLngKKyAgICAgICAgIC0+ICBGaW5h bGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzMueCwgc3VtKHQy XzMueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzMueAorICAgICAg ICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8z LngsIChQQVJUSUFMIHN1bSh0Ml8zLnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAgICAgICAg ICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV8zLnggPSB0Ml8zLngpCisgICAgICAgICAgICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczEgdDFfMwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV8zLngKKyAgICAgICAgICAgICAg ICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHQyXzMu eCwgKFBBUlRJQUwgc3VtKHQyXzMueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy54LCBQQVJUSUFMIHN1bSh0Ml8zLnkpLCBQ QVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCBL ZXk6IHQyXzMueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MxIHQyXzMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfMy55LCB0Ml8zLngKKyAgICAgICAgIC0+ ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzQueCwg c3VtKHQyXzQueSksIGNvdW50KCopCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzQueAor ICAgICAgICAgICAgICAgLT4gIEhhc2ggSm9pbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiB0MV80LngsIChQQVJUSUFMIHN1bSh0Ml80LnkpKSwgKFBBUlRJQUwgY291bnQoKikpCisgICAg ICAgICAgICAgICAgICAgICBIYXNoIENvbmQ6ICh0MV80LnggPSB0Ml80LngpCisgICAgICAgICAg ICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcHVibGljLmVhZ2VyX2FnZ190YWJfbWxfcDNfczIg dDFfNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiB0MV80LngKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBIYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 IHQyXzQueCwgKFBBUlRJQUwgc3VtKHQyXzQueSkpLCAoUEFSVElBTCBjb3VudCgqKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC54LCBQQVJUSUFMIHN1bSh0Ml80 LnkpLCBQQVJUSUFMIGNvdW50KCopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH cm91cCBLZXk6IHQyXzQueAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHB1YmxpYy5lYWdlcl9hZ2dfdGFiX21sX3AzX3MyIHQyXzQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogdDJfNC55LCB0Ml80LngKKyg3OSBy b3dzKQorCitTRUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190 YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZ IHQxLnggT1JERVIgQlkgdDEueDsKKyB4ICB8ICBzdW0gIHwgY291bnQgCistLS0tKy0tLS0tLS0r LS0tLS0tLQorICAwIHwgICAgIDAgfCAgMTA4OQorICAxIHwgIDExNTYgfCAgMTE1NgorICAyIHwg IDIzMTIgfCAgMTE1NgorICAzIHwgIDM0NjggfCAgMTE1NgorICA0IHwgIDQ2MjQgfCAgMTE1Ngor ICA1IHwgIDU3ODAgfCAgMTE1NgorICA2IHwgIDY5MzYgfCAgMTE1NgorICA3IHwgIDgwOTIgfCAg MTE1NgorICA4IHwgIDkyNDggfCAgMTE1NgorICA5IHwgMTA0MDQgfCAgMTE1NgorIDEwIHwgMTE1 NjAgfCAgMTE1NgorIDExIHwgMTE5NzkgfCAgMTA4OQorIDEyIHwgMTMwNjggfCAgMTA4OQorIDEz IHwgMTQxNTcgfCAgMTA4OQorIDE0IHwgMTUyNDYgfCAgMTA4OQorIDE1IHwgMTYzMzUgfCAgMTA4 OQorIDE2IHwgMTc0MjQgfCAgMTA4OQorIDE3IHwgMTg1MTMgfCAgMTA4OQorIDE4IHwgMTk2MDIg fCAgMTA4OQorIDE5IHwgMjA2OTEgfCAgMTA4OQorIDIwIHwgMjE3ODAgfCAgMTA4OQorIDIxIHwg MjI4NjkgfCAgMTA4OQorIDIyIHwgMjM5NTggfCAgMTA4OQorIDIzIHwgMjUwNDcgfCAgMTA4OQor IDI0IHwgMjYxMzYgfCAgMTA4OQorIDI1IHwgMjcyMjUgfCAgMTA4OQorIDI2IHwgMjgzMTQgfCAg MTA4OQorIDI3IHwgMjk0MDMgfCAgMTA4OQorIDI4IHwgMzA0OTIgfCAgMTA4OQorIDI5IHwgMzE1 ODEgfCAgMTA4OQorKDMwIHJvd3MpCisKK1JFU0VUIGdlcW87CitSRVNFVCBnZXFvX3RocmVzaG9s ZDsKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvam9pbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pvaW4u b3V0CmluZGV4IDA0MDc5MjY4Yjk4Li5kMGJiNjZmNDNkYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qb2luLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L2pvaW4ub3V0CkBAIC0yODM3LDIwICsyODM3LDIyIEBAIHNlbGVjdCB4LnRob3VzYW5kLCB4LnR3 b3Rob3VzYW5kLCBjb3VudCgqKQogZnJvbSB0ZW5rMSB4IGlubmVyIGpvaW4gdGVuazEgeSBvbiB4 LnRob3VzYW5kID0geS50aG91c2FuZAogZ3JvdXAgYnkgeC50aG91c2FuZCwgeC50d290aG91c2Fu ZAogb3JkZXIgYnkgeC50aG91c2FuZCBkZXNjLCB4LnR3b3Rob3VzYW5kOwotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIEdyb3VwQWdncmVnYXRl CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgRmluYWxpemUgR3JvdXBBZ2dyZWdhdGUKICAgIEdyb3VwIEtleTogeC50aG91 c2FuZCwgeC50d290aG91c2FuZAogICAgLT4gIEluY3JlbWVudGFsIFNvcnQKICAgICAgICAgIFNv cnQgS2V5OiB4LnRob3VzYW5kIERFU0MsIHgudHdvdGhvdXNhbmQKICAgICAgICAgIFByZXNvcnRl ZCBLZXk6IHgudGhvdXNhbmQKICAgICAgICAgIC0+ICBNZXJnZSBKb2luCiAgICAgICAgICAgICAg ICBNZXJnZSBDb25kOiAoeS50aG91c2FuZCA9IHgudGhvdXNhbmQpCi0gICAgICAgICAgICAgICAt PiAgSW5kZXggT25seSBTY2FuIEJhY2t3YXJkIHVzaW5nIHRlbmsxX3Rob3VzX3RlbnRob3VzIG9u IHRlbmsxIHkKKyAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVnYXRlCisgICAg ICAgICAgICAgICAgICAgICBHcm91cCBLZXk6IHkudGhvdXNhbmQKKyAgICAgICAgICAgICAgICAg ICAgIC0+ICBJbmRleCBPbmx5IFNjYW4gQmFja3dhcmQgdXNpbmcgdGVuazFfdGhvdXNfdGVudGhv dXMgb24gdGVuazEgeQogICAgICAgICAgICAgICAgLT4gIFNvcnQKICAgICAgICAgICAgICAgICAg ICAgIFNvcnQgS2V5OiB4LnRob3VzYW5kIERFU0MKICAgICAgICAgICAgICAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiB0ZW5rMSB4Ci0oMTEgcm93cykKKygxMyByb3dzKQogCiByZXNldCBlbmFibGVf aGFzaGFnZzsKIHJlc2V0IGVuYWJsZV9uZXN0bG9vcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3BhcnRpdGlvbl9hZ2dyZWdhdGUub3V0CmluZGV4IDVmMmMwY2Y1Nzg2Li4xZjU2 ZjU1MTU1YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25f YWdncmVnYXRlLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9h Z2dyZWdhdGUub3V0CkBAIC0xMyw2ICsxMyw4IEBAIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9q b2luIFRPIHRydWU7CiBTRVQgbWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciBUTyAwOwog LS0gRGlzYWJsZSBpbmNyZW1lbnRhbCBzb3J0LCB3aGljaCBjYW4gaW5mbHVlbmNlIHNlbGVjdGVk IHBsYW5zIGR1ZSB0byBmdXp6IGZhY3Rvci4KIFNFVCBlbmFibGVfaW5jcmVtZW50YWxfc29ydCBU TyBvZmY7CistLSBEaXNhYmxlIGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3aGljaCBjYW4gaW50ZXJmZXJl IHdpdGggdGhlIGdlbmVyYXRpb24gb2YgcGFydGl0aW9ud2lzZSBhZ2dyZWdhdGlvbi4KK1NFVCBl bmFibGVfZWFnZXJfYWdncmVnYXRlIFRPIG9mZjsKIC0tCiAtLSBUZXN0cyBmb3IgbGlzdCBwYXJ0 aXRpb25lZCB0YWJsZXMuCiAtLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zeXN2aWV3cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N5c3ZpZXdzLm91dApp bmRleCA4MzIyOGNmY2EyOS4uM2IzN2ZhZmE2NWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvc3lzdmlld3Mub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3lzdmlld3Mub3V0CkBAIC0xNTEsNiArMTUxLDcgQEAgc2VsZWN0IG5hbWUsIHNldHRpbmcgZnJv bSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJsZV9hc3luY19h cHBlbmQgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX2JpdG1hcHNjYW4gICAgICAgICAgICAgIHwg b24KICBlbmFibGVfZGlzdGluY3RfcmVvcmRlcmluZyAgICAgfCBvbgorIGVuYWJsZV9lYWdlcl9h Z2dyZWdhdGUgICAgICAgICB8IG9uCiAgZW5hYmxlX2dhdGhlcm1lcmdlICAgICAgICAgICAgIHwg b24KICBlbmFibGVfZ3JvdXBfYnlfcmVvcmRlcmluZyAgICAgfCBvbgogIGVuYWJsZV9oYXNoYWdn ICAgICAgICAgICAgICAgICB8IG9uCkBAIC0xNzIsNyArMTczLDcgQEAgc2VsZWN0IG5hbWUsIHNl dHRpbmcgZnJvbSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lIGxpa2UgJ2VuYWJsZSUnOwogIGVuYWJs ZV9zZXFzY2FuICAgICAgICAgICAgICAgICB8IG9uCiAgZW5hYmxlX3NvcnQgICAgICAgICAgICAg ICAgICAgIHwgb24KICBlbmFibGVfdGlkc2NhbiAgICAgICAgICAgICAgICAgfCBvbgotKDI0IHJv d3MpCisoMjUgcm93cykKIAogLS0gVGhlcmUgYXJlIGFsd2F5cyB3YWl0IGV2ZW50IGRlc2NyaXB0 aW9ucyBmb3IgdmFyaW91cyB0eXBlcy4gIEluamVjdGlvblBvaW50CiAtLSBtYXkgYmUgcHJlc2Vu dCBvciBhYnNlbnQsIGRlcGVuZGluZyBvbiBoaXN0b3J5IHNpbmNlIGxhc3QgcG9zdG1hc3RlciBz dGFydC4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9z cmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IGZiZmZjNjdhZTYwLi5mOTQ1 MGNkYzQ3NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0xMjMsNyArMTIzLDcg QEAgdGVzdDogcGxhbmNhY2hlIGxpbWl0IHBscGdzcWwgY29weTIgdGVtcCBkb21haW4gcmFuZ2Vm dW5jcyBwcmVwYXJlIGNvbnZlcnNpb24gdHIKICMgVGhlIHN0YXRzIHRlc3QgcmVzZXRzIHN0YXRz LCBzbyBub3RoaW5nIGVsc2UgbmVlZGluZyBzdGF0cyBhY2Nlc3MgY2FuIGJlIGluCiAjIHRoaXMg Z3JvdXAuCiAjIC0tLS0tLS0tLS0KLXRlc3Q6IHBhcnRpdGlvbl9qb2luIHBhcnRpdGlvbl9wcnVu ZSByZWxvcHRpb25zIGhhc2hfcGFydCBpbmRleGluZyBwYXJ0aXRpb25fYWdncmVnYXRlIHBhcnRp dGlvbl9pbmZvIHR1cGxlc29ydCBleHBsYWluIGNvbXByZXNzaW9uIGNvbXByZXNzaW9uX2x6NCBt ZW1vaXplIHN0YXRzIHByZWRpY2F0ZSBudW1hCit0ZXN0OiBwYXJ0aXRpb25fam9pbiBwYXJ0aXRp b25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3JlZ2F0 ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBjb21wcmVzc2lv bl9sejQgbWVtb2l6ZSBzdGF0cyBwcmVkaWNhdGUgbnVtYSBlYWdlcl9hZ2dyZWdhdGUKIAogIyBl dmVudF90cmlnZ2VyIGRlcGVuZHMgb24gY3JlYXRlX2FtIGFuZCBjYW5ub3QgcnVuIGNvbmN1cnJl bnRseSB3aXRoCiAjIGFueSB0ZXN0IHRoYXQgcnVucyBEREwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2VhZ2VyX2FnZ3JlZ2F0ZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9l YWdlcl9hZ2dyZWdhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li44YjEwNDlhZTNmMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Vh Z2VyX2FnZ3JlZ2F0ZS5zcWwKQEAgLTAsMCArMSwyMjUgQEAKKy0tCistLSBFQUdFUiBBR0dSRUdB VElPTgorLS0gVGVzdCB3ZSBjYW4gcHVzaCBhZ2dyZWdhdGlvbiBkb3duIGJlbG93IGpvaW4KKy0t CisKKy0tIEVuYWJsZSBlYWdlciBhZ2dyZWdhdGlvbiwgd2hpY2ggYnkgZGVmYXVsdCBpcyBkaXNh YmxlZC4KK1NFVCBlbmFibGVfZWFnZXJfYWdncmVnYXRlIFRPIG9uOworCitDUkVBVEUgVEFCTEUg ZWFnZXJfYWdnX3QxIChhIGludCwgYiBpbnQsIGMgZG91YmxlIHByZWNpc2lvbik7CitDUkVBVEUg VEFCTEUgZWFnZXJfYWdnX3QyIChhIGludCwgYiBpbnQsIGMgZG91YmxlIHByZWNpc2lvbik7CitD UkVBVEUgVEFCTEUgZWFnZXJfYWdnX3QzIChhIGludCwgYiBpbnQsIGMgZG91YmxlIHByZWNpc2lv bik7CisKK0lOU0VSVCBJTlRPIGVhZ2VyX2FnZ190MSBTRUxFQ1QgaSwgaSwgaSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxMDAwKWk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdDIgU0VMRUNUIGks IGklMTAsIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMClpOworSU5TRVJUIElOVE8gZWFn ZXJfYWdnX3QzIFNFTEVDVCBpJTEwLCBpJTEwLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MDApaTsKKworQU5BTFlaRSBlYWdlcl9hZ2dfdDE7CitBTkFMWVpFIGVhZ2VyX2FnZ190MjsKK0FO QUxZWkUgZWFnZXJfYWdnX3QzOworCisKKy0tCistLSBUZXN0IGVhZ2VyIGFnZ3JlZ2F0aW9uIG92 ZXIgYmFzZSByZWwKKy0tCisKKy0tIFBlcmZvcm0gc2NhbiBvZiBhIHRhYmxlLCBhZ2dyZWdhdGUg dGhlIHJlc3VsdCwgam9pbiBpdCB0byB0aGUgb3RoZXIgdGFibGUKKy0tIGFuZCBmaW5hbGl6ZSB0 aGUgYWdncmVnYXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEu YSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9O IHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKK1NFTEVDVCB0MS5hLCBh dmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEu YiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCistLSBQcm9kdWNlIHJlc3Vs dHMgd2l0aCBzb3J0aW5nIGFnZ3JlZ2F0aW9uCitTRVQgZW5hYmxlX2hhc2hhZ2cgVE8gb2ZmOwor CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZS T00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdS T1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBl YWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAg QlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCitSRVNFVCBlbmFibGVfaGFzaGFnZzsKKworCistLQor LS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGpvaW4gcmVsCistLQorCistLSBQZXJmb3Jt IGpvaW4gb2YgdGFibGVzLCBhZ2dyZWdhdGUgdGhlIHJlc3VsdCwgam9pbiBpdCB0byB0aGUgb3Ro ZXIgdGFibGUKKy0tIGFuZCBmaW5hbGl6ZSB0aGUgYWdncmVnYXRpb24uCitFWFBMQUlOIChWRVJC T1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2Vy X2FnZ190MSB0MSBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2Vy X2FnZ190MyB0MyBPTiB0Mi5hID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CitT RUxFQ1QgdDEuYSwgYXZnKHQyLmMgKyB0My5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0MSBKT0lOIGVh Z2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBKT0lOIGVhZ2VyX2FnZ190MyB0MyBPTiB0Mi5h ID0gdDMuYSBHUk9VUCBCWSB0MS5hIE9SREVSIEJZIHQxLmE7CisKKy0tIFByb2R1Y2UgcmVzdWx0 cyB3aXRoIHNvcnRpbmcgYWdncmVnYXRpb24KK1NFVCBlbmFibGVfaGFzaGFnZyBUTyBvZmY7CisK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQz LmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0 Mi5iIEpPSU4gZWFnZXJfYWdnX3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JE RVIgQlkgdDEuYTsKK1NFTEVDVCB0MS5hLCBhdmcodDIuYyArIHQzLmMpIEZST00gZWFnZXJfYWdn X3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEpPSU4gZWFnZXJfYWdn X3QzIHQzIE9OIHQyLmEgPSB0My5hIEdST1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKKworUkVT RVQgZW5hYmxlX2hhc2hhZ2c7CisKKworLS0KKy0tIFRlc3QgdGhhdCBlYWdlciBhZ2dyZWdhdGlv biB3b3JrcyBmb3Igb3V0ZXIgam9pbgorLS0KKworLS0gRW5zdXJlIGFnZ3JlZ2F0aW9uIGNhbiBi ZSBwdXNoZWQgZG93biB0byB0aGUgbm9uLW51bGxhYmxlIHNpZGUKK0VYUExBSU4gKFZFUkJPU0Us IENPU1RTIE9GRikKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEg UklHSFQgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBP UkRFUiBCWSB0MS5hOworU0VMRUNUIHQxLmEsIGF2Zyh0Mi5jKSBGUk9NIGVhZ2VyX2FnZ190MSB0 MSBSSUdIVCBKT0lOIGVhZ2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0MS5h IE9SREVSIEJZIHQxLmE7CisKKy0tIEVuc3VyZSBhZ2dyZWdhdGlvbiBjYW5ub3QgYmUgcHVzaGVk IGRvd24gdG8gdGhlIG51bGxhYmxlIHNpZGUKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikK K1NFTEVDVCB0Mi5iLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgTEVGVCBKT0lOIGVh Z2VyX2FnZ190MiB0MiBPTiB0MS5iID0gdDIuYiBHUk9VUCBCWSB0Mi5iIE9SREVSIEJZIHQyLmI7 CitTRUxFQ1QgdDIuYiwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIExFRlQgSk9JTiBl YWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDIuYiBPUkRFUiBCWSB0Mi5i OworCisKKy0tCistLSBUZXN0IHRoYXQgZWFnZXIgYWdncmVnYXRpb24gd29ya3MgZm9yIHBhcmFs bGVsIHBsYW5zCistLQorCitTRVQgcGFyYWxsZWxfc2V0dXBfY29zdD0wOworU0VUIHBhcmFsbGVs X3R1cGxlX2Nvc3Q9MDsKK1NFVCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplPTA7CitTRVQg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlcj00OworCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZST00gZWFnZXJfYWdnX3QxIHQxIEpP SU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdST1VQIEJZIHQxLmEgT1JERVIgQlkg dDEuYTsKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBlYWdlcl9hZ2dfdDEgdDEgSk9JTiBl YWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAgQlkgdDEuYSBPUkRFUiBCWSB0MS5h OworCitSRVNFVCBwYXJhbGxlbF9zZXR1cF9jb3N0OworUkVTRVQgcGFyYWxsZWxfdHVwbGVfY29z dDsKK1JFU0VUIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU7CitSRVNFVCBtYXhfcGFyYWxs ZWxfd29ya2Vyc19wZXJfZ2F0aGVyOworCistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdhdGlvbiB3 aXRoIEdFUU8KKy0tCisKK1NFVCBnZXFvID0gb247CitTRVQgZ2Vxb190aHJlc2hvbGQgPSAyOwor CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDEuYSwgYXZnKHQyLmMpIEZS T00gZWFnZXJfYWdnX3QxIHQxIEpPSU4gZWFnZXJfYWdnX3QyIHQyIE9OIHQxLmIgPSB0Mi5iIEdS T1VQIEJZIHQxLmEgT1JERVIgQlkgdDEuYTsKK1NFTEVDVCB0MS5hLCBhdmcodDIuYykgRlJPTSBl YWdlcl9hZ2dfdDEgdDEgSk9JTiBlYWdlcl9hZ2dfdDIgdDIgT04gdDEuYiA9IHQyLmIgR1JPVVAg QlkgdDEuYSBPUkRFUiBCWSB0MS5hOworCitSRVNFVCBnZXFvOworUkVTRVQgZ2Vxb190aHJlc2hv bGQ7CisKK0RST1AgVEFCTEUgZWFnZXJfYWdnX3QxOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdDI7 CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190MzsKKworCistLQorLS0gVGVzdCBlYWdlciBhZ2dyZWdh dGlvbiBmb3IgcGFydGl0aW9ud2lzZSBqb2luCistLQorCistLSBFbmFibGUgcGFydGl0aW9ud2lz ZSBhZ2dyZWdhdGUsIHdoaWNoIGJ5IGRlZmF1bHQgaXMgZGlzYWJsZWQuCitTRVQgZW5hYmxlX3Bh cnRpdGlvbndpc2VfYWdncmVnYXRlIFRPIHRydWU7CistLSBFbmFibGUgcGFydGl0aW9ud2lzZSBq b2luLCB3aGljaCBieSBkZWZhdWx0IGlzIGRpc2FibGVkLgorU0VUIGVuYWJsZV9wYXJ0aXRpb253 aXNlX2pvaW4gVE8gdHJ1ZTsKKworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIxKHggaW50LCB5 IGludCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIx X3AxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1 KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiMV9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdn X3RhYjEgRk9SIFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2Fn Z190YWIxX3AzIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMSBGT1IgVkFMVUVTIEZST00gKDEw KSBUTyAoMTUpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyKHggaW50LCB5IGludCkgUEFS VElUSU9OIEJZIFJBTkdFKHkpOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3AxIFBBUlRJ VElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDApIFRPICg1KTsKK0NSRUFU RSBUQUJMRSBlYWdlcl9hZ2dfdGFiMl9wMiBQQVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYjIgRk9S IFZBTFVFUyBGUk9NICg1KSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIGVhZ2VyX2FnZ190YWIyX3Az IFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiMiBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUp OworSU5TRVJUIElOVE8gZWFnZXJfYWdnX3RhYjEgU0VMRUNUIGkgJSAxNSwgaSAlIDEwIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIGk7CitJTlNFUlQgSU5UTyBlYWdlcl9hZ2dfdGFiMiBT RUxFQ1QgaSAlIDEwLCBpICUgMTUgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsKKwor QU5BTFlaRSBlYWdlcl9hZ2dfdGFiMTsKK0FOQUxZWkUgZWFnZXJfYWdnX3RhYjI7CisKKy0tIFdo ZW4gR1JPVVAgQlkgY2xhdXNlIG1hdGNoZXM7IGZ1bGwgYWdncmVnYXRpb24gaXMgcGVyZm9ybWVk IGZvciBlYWNoIHBhcnRpdGlvbi4KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVD VCB0MS54LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEgdDEsIGVhZ2Vy X2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEu eDsKK1NFTEVDVCB0MS54LCBzdW0odDEueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3RhYjEg dDEsIGVhZ2VyX2FnZ190YWIyIHQyIFdIRVJFIHQxLnggPSB0Mi55IEdST1VQIEJZIHQxLnggT1JE RVIgQlkgdDEueDsKKworLS0gR1JPVVAgQlkgaGF2aW5nIG90aGVyIG1hdGNoaW5nIGtleQorRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQyLnksIHN1bSh0MS55KSwgY291bnQo KikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9 IHQyLnkgR1JPVVAgQlkgdDIueSBPUkRFUiBCWSB0Mi55OworU0VMRUNUIHQyLnksIHN1bSh0MS55 KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hF UkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueSBPUkRFUiBCWSB0Mi55OworCistLSBXaGVuIEdS T1VQIEJZIGNsYXVzZSBkb2VzIG5vdCBtYXRjaDsgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBwZXJm b3JtZWQgZm9yIGVhY2ggcGFydGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQor U0VMRUNUIHQyLngsIHN1bSh0MS54KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwg ZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDIueCBIQVZJTkcg YXZnKHQxLngpID4gNSBPUkRFUiBCWSB0Mi54OworU0VMRUNUIHQyLngsIHN1bSh0MS54KSwgY291 bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEu eCA9IHQyLnkgR1JPVVAgQlkgdDIueCBIQVZJTkcgYXZnKHQxLngpID4gNSBPUkRFUiBCWSB0Mi54 OworCistLSBDaGVjayB3aXRoIGVhZ2VyIGFnZ3JlZ2F0aW9uIG92ZXIgam9pbiByZWwKKy0tIGZ1 bGwgYWdncmVnYXRpb24KK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCB0MS54 LCBzdW0odDIueSArIHQzLnkpIEZST00gZWFnZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2df dGFiMSB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0 My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEueDsKK1NFTEVDVCB0MS54LCBzdW0odDIueSAr IHQzLnkpIEZST00gZWFnZXJfYWdnX3RhYjEgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MiBPTiB0 MS54ID0gdDIueCBKT0lOIGVhZ2VyX2FnZ190YWIxIHQzIE9OIHQyLnggPSB0My54IEdST1VQIEJZ IHQxLnggT1JERVIgQlkgdDEueDsKKworLS0gcGFydGlhbCBhZ2dyZWdhdGlvbgorU0VUIGVuYWJs ZV9oYXNoYWdnIFRPIG9mZjsKK1NFVCBtYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyIFRP IDA7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgdDMueSwgc3VtKHQyLnkg KyB0My55KSBGUk9NIGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04g dDEueCA9IHQyLnggSk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBC WSB0My55IE9SREVSIEJZIHQzLnk7CitTRUxFQ1QgdDMueSwgc3VtKHQyLnkgKyB0My55KSBGUk9N IGVhZ2VyX2FnZ190YWIxIHQxIEpPSU4gZWFnZXJfYWdnX3RhYjEgdDIgT04gdDEueCA9IHQyLngg Sk9JTiBlYWdlcl9hZ2dfdGFiMSB0MyBPTiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVS IEJZIHQzLnk7CitSRVNFVCBlbmFibGVfaGFzaGFnZzsKK1JFU0VUIG1heF9wYXJhbGxlbF93b3Jr ZXJzX3Blcl9nYXRoZXI7CisKKy0tIHRyeSB0aGF0IHdpdGggR0VRTyB0b28KK1NFVCBnZXFvID0g b247CitTRVQgZ2Vxb190aHJlc2hvbGQgPSAyOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KQorU0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiMSB0 MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkgdDEueCBPUkRF UiBCWSB0MS54OworU0VMRUNUIHQxLngsIHN1bSh0MS55KSwgY291bnQoKikgRlJPTSBlYWdlcl9h Z2dfdGFiMSB0MSwgZWFnZXJfYWdnX3RhYjIgdDIgV0hFUkUgdDEueCA9IHQyLnkgR1JPVVAgQlkg dDEueCBPUkRFUiBCWSB0MS54OworUkVTRVQgZ2VxbzsKK1JFU0VUIGdlcW9fdGhyZXNob2xkOwor CitEUk9QIFRBQkxFIGVhZ2VyX2FnZ190YWIxOworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdGFiMjsK KworCistLQorLS0gVGVzdCB3aXRoIG11bHRpLWxldmVsIHBhcnRpdGlvbmluZyBzY2hlbWUKKy0t CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbCh4IGludCwgeSBpbnQpIFBBUlRJVElPTiBC WSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AxIFBBUlRJVElPTiBP RiBlYWdlcl9hZ2dfdGFiX21sIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKK0NSRUFURSBU QUJMRSBlYWdlcl9hZ2dfdGFiX21sX3AyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sIEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCkgUEFSVElUSU9OIEJZIFJBTkdFKHgpOworQ1JFQVRF IFRBQkxFIGVhZ2VyX2FnZ190YWJfbWxfcDJfczEgUEFSVElUSU9OIE9GIGVhZ2VyX2FnZ190YWJf bWxfcDIgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDE1KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9h Z2dfdGFiX21sX3AyX3MyIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AyIEZPUiBWQUxV RVMgRlJPTSAoMTUpIFRPICgyMCk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wMyBQ QVJUSVRJT04gT0YgZWFnZXJfYWdnX3RhYl9tbCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzAp IFBBUlRJVElPTiBCWSBSQU5HRSh4KTsKK0NSRUFURSBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sX3Az X3MxIFBBUlRJVElPTiBPRiBlYWdlcl9hZ2dfdGFiX21sX3AzIEZPUiBWQUxVRVMgRlJPTSAoMjAp IFRPICgyNSk7CitDUkVBVEUgVEFCTEUgZWFnZXJfYWdnX3RhYl9tbF9wM19zMiBQQVJUSVRJT04g T0YgZWFnZXJfYWdnX3RhYl9tbF9wMyBGT1IgVkFMVUVTIEZST00gKDI1KSBUTyAoMzApOworSU5T RVJUIElOVE8gZWFnZXJfYWdnX3RhYl9tbCBTRUxFQ1QgaSAlIDMwLCBpICUgMzAgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwMCkgaTsKKworQU5BTFlaRSBlYWdlcl9hZ2dfdGFiX21sOworCist LSBXaGVuIEdST1VQIEJZIGNsYXVzZSBtYXRjaGVzOyBmdWxsIGFnZ3JlZ2F0aW9uIGlzIHBlcmZv cm1lZCBmb3IgZWFjaCBwYXJ0aXRpb24uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitT RUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEg Sk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnggT1JE RVIgQlkgdDEueDsKK1NFTEVDVCB0MS54LCBzdW0odDIueSksIGNvdW50KCopIEZST00gZWFnZXJf YWdnX3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggR1JP VVAgQlkgdDEueCBPUkRFUiBCWSB0MS54OworCistLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBkb2Vz IG5vdCBtYXRjaDsgcGFydGlhbCBhZ2dyZWdhdGlvbiBpcyBwZXJmb3JtZWQgZm9yIGVhY2ggcGFy dGl0aW9uLgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIHQxLnksIHN1bSh0 Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpPSU4gZWFnZXJfYWdnX3Rh Yl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS55IE9SREVSIEJZIHQxLnk7CitTRUxF Q1QgdDEueSwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2FnZ190YWJfbWwgdDEgSk9J TiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQIEJZIHQxLnkgT1JERVIg QlkgdDEueTsKKworLS0gQ2hlY2sgd2l0aCBlYWdlciBhZ2dyZWdhdGlvbiBvdmVyIGpvaW4gcmVs CistLSBmdWxsIGFnZ3JlZ2F0aW9uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxF Q1QgdDEueCwgc3VtKHQyLnkgKyB0My55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21s IHQxIEpPSU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBKT0lOIGVhZ2VyX2Fn Z190YWJfbWwgdDMgb24gdDIueCA9IHQzLnggR1JPVVAgQlkgdDEueCBPUkRFUiBCWSB0MS54Owor U0VMRUNUIHQxLngsIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdnX3Rh Yl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBlYWdl cl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZIHQxLnggT1JERVIgQlkgdDEu eDsKKworLS0gcGFydGlhbCBhZ2dyZWdhdGlvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KQorU0VMRUNUIHQzLnksIHN1bSh0Mi55ICsgdDMueSksIGNvdW50KCopIEZST00gZWFnZXJfYWdn X3RhYl9tbCB0MSBKT0lOIGVhZ2VyX2FnZ190YWJfbWwgdDIgT04gdDEueCA9IHQyLnggSk9JTiBl YWdlcl9hZ2dfdGFiX21sIHQzIG9uIHQyLnggPSB0My54IEdST1VQIEJZIHQzLnkgT1JERVIgQlkg dDMueTsKK1NFTEVDVCB0My55LCBzdW0odDIueSArIHQzLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2Vy X2FnZ190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEpP SU4gZWFnZXJfYWdnX3RhYl9tbCB0MyBvbiB0Mi54ID0gdDMueCBHUk9VUCBCWSB0My55IE9SREVS IEJZIHQzLnk7CisKKy0tIHRyeSB0aGF0IHdpdGggR0VRTyB0b28KK1NFVCBnZXFvID0gb247CitT RVQgZ2Vxb190aHJlc2hvbGQgPSAyOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VM RUNUIHQxLngsIHN1bSh0Mi55KSwgY291bnQoKikgRlJPTSBlYWdlcl9hZ2dfdGFiX21sIHQxIEpP SU4gZWFnZXJfYWdnX3RhYl9tbCB0MiBPTiB0MS54ID0gdDIueCBHUk9VUCBCWSB0MS54IE9SREVS IEJZIHQxLng7CitTRUxFQ1QgdDEueCwgc3VtKHQyLnkpLCBjb3VudCgqKSBGUk9NIGVhZ2VyX2Fn Z190YWJfbWwgdDEgSk9JTiBlYWdlcl9hZ2dfdGFiX21sIHQyIE9OIHQxLnggPSB0Mi54IEdST1VQ IEJZIHQxLnggT1JERVIgQlkgdDEueDsKK1JFU0VUIGdlcW87CitSRVNFVCBnZXFvX3RocmVzaG9s ZDsKKworRFJPUCBUQUJMRSBlYWdlcl9hZ2dfdGFiX21sOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9wYXJ0aXRpb25fYWdncmVnYXRlLnNxbAppbmRleCBhYjA3MGZlZTI0NC4uMTI0Y2MyNjA0NjEg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9hZ2dyZWdhdGUuc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9hZ2dyZWdhdGUuc3FsCkBAIC0x NCw2ICsxNCw4IEBAIFNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luIFRPIHRydWU7CiBTRVQg bWF4X3BhcmFsbGVsX3dvcmtlcnNfcGVyX2dhdGhlciBUTyAwOwogLS0gRGlzYWJsZSBpbmNyZW1l bnRhbCBzb3J0LCB3aGljaCBjYW4gaW5mbHVlbmNlIHNlbGVjdGVkIHBsYW5zIGR1ZSB0byBmdXp6 IGZhY3Rvci4KIFNFVCBlbmFibGVfaW5jcmVtZW50YWxfc29ydCBUTyBvZmY7CistLSBEaXNhYmxl IGVhZ2VyIGFnZ3JlZ2F0aW9uLCB3aGljaCBjYW4gaW50ZXJmZXJlIHdpdGggdGhlIGdlbmVyYXRp b24gb2YgcGFydGl0aW9ud2lzZSBhZ2dyZWdhdGlvbi4KK1NFVCBlbmFibGVfZWFnZXJfYWdncmVn YXRlIFRPIG9mZjsKIAogLS0KIC0tIFRlc3RzIGZvciBsaXN0IHBhcnRpdGlvbmVkIHRhYmxlcy4K ZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYTEzZTgxNjI4OTAuLjlhNDU2N2RiMDFhIDEw MDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDIsNiArNDIsNyBAQCBBZnRlclRyaWdnZXJz VGFibGVEYXRhCiBBZnRlclRyaWdnZXJzVHJhbnNEYXRhCiBBZ2cKIEFnZ0NsYXVzZUNvc3RzCitB Z2dDbGF1c2VJbmZvCiBBZ2dJbmZvCiBBZ2dQYXRoCiBBZ2dTcGxpdApAQCAtMTExMCw2ICsxMTEx LDcgQEAgR3JvdXBQYXRoRXh0cmFEYXRhCiBHcm91cFJlc3VsdFBhdGgKIEdyb3VwU3RhdGUKIEdy b3VwVmFySW5mbworR3JvdXBpbmdFeHBySW5mbwogR3JvdXBpbmdGdW5jCiBHcm91cGluZ1NldAog R3JvdXBpbmdTZXREYXRhCkBAIC0yNDczLDYgKzI0NzUsNyBAQCBSZWluZGV4T2JqZWN0VHlwZQog UmVpbmRleFBhcmFtcwogUmVpbmRleFN0bXQKIFJlaW5kZXhUeXBlCitSZWxBZ2dJbmZvCiBSZWxG aWxlTG9jYXRvcgogUmVsRmlsZUxvY2F0b3JCYWNrZW5kCiBSZWxGaWxlTnVtYmVyCi0tIAoyLjM5 LjUgKEFwcGxlIEdpdC0xNTQpCgo= --000000000000d3d721063e975d59 Content-Type: application/octet-stream; name="v22-0002-Allow-negative-aggtransspace-to-indicate-unbound.patch" Content-Disposition: attachment; filename="v22-0002-Allow-negative-aggtransspace-to-indicate-unbound.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfgn518g1 RnJvbSBlYzI4MmJiN2ZiOTYzMzI1YTMwYTNlOTQzNzUyODlhYTU0NTcwMDRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSaWNoYXJkIEd1byA8Z3VvZmVuZ2xpbnV4QGdtYWlsLmNvbT4K RGF0ZTogRnJpLCAxMiBTZXAgMjAyNSAxMzoxMTo0NyArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjIy IDIvMl0gQWxsb3cgbmVnYXRpdmUgYWdndHJhbnNzcGFjZSB0byBpbmRpY2F0ZSB1bmJvdW5kZWQK IHN0YXRlIHNpemUKClRoaXMgcGF0Y2ggcmV1c2VzIHRoZSBleGlzdGluZyBhZ2d0cmFuc3NwYWNl IGluIHBnX2FnZ3JlZ2F0ZSB0bwpzaWduYWwgdGhhdCBhbiBhZ2dyZWdhdGUncyB0cmFuc2l0aW9u IHN0YXRlIGNhbiBncm93IHVuYm91bmRlZGx5LiAgSWYKYWdndHJhbnNzcGFjZSBpcyBzZXQgdG8g YSBuZWdhdGl2ZSB2YWx1ZSwgaXQgbm93IGluZGljYXRlcyB0aGF0IHRoZQp0cmFuc2l0aW9uIHN0 YXRlIG1heSBjb25zdW1lIHVucHJlZGljdGFibGUgb3IgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnks CnN1Y2ggYXMgaW4gYWdncmVnYXRlcyBsaWtlIGFycmF5X2FnZyBvciBzdHJpbmdfYWdnIHRoYXQg YWNjdW11bGF0ZQppbnB1dCByb3dzLgoKVGhpcyBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZCBieSB0 aGUgcGxhbm5lciB0byBhdm9pZCBhcHBseWluZwptZW1vcnktc2Vuc2l0aXZlIG9wdGltaXphdGlv bnMgKGUuZy4sIGVhZ2VyIGFnZ3JlZ2F0aW9uKSB3aGVuIHRoZXJlIGlzCmEgcmlzayBvZiBleGNl c3NpdmUgbWVtb3J5IHVzYWdlIGR1cmluZyBwYXJ0aWFsIGFnZ3JlZ2F0aW9uLgoKQnVtcCBjYXRh bG9nIHZlcnNpb24uCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAg ICB8ICA1ICsrKystCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9hZ2dyZWdhdGUuc2dtbCAgIHwg MTEgKysrKysrKystLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jICAg fCAyMyArKysrKysrLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9jYXR2ZXJz aW9uLmggICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5k YXQgICAgIHwgMTAgKysrKysrLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2Fu aXR5Lm91dCB8ICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbCAgICAg IHwgIDIgKy0KIDcgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbAppbmRleCBlOTA5NWJlZGYyMS4uM2FjYzIyMjJhODcgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sCkBAIC01OTYsNyArNTk2LDEwIEBACiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4K ICAgICAgICBBcHByb3hpbWF0ZSBhdmVyYWdlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgdHJhbnNp dGlvbiBzdGF0ZQotICAgICAgIGRhdGEsIG9yIHplcm8gdG8gdXNlIGEgZGVmYXVsdCBlc3RpbWF0 ZQorICAgICAgIGRhdGEuIEEgcG9zaXRpdmUgdmFsdWUgcHJvdmlkZXMgYW4gZXN0aW1hdGU7IHpl cm8gbWVhbnMgdG8KKyAgICAgICB1c2UgYSBkZWZhdWx0IGVzdGltYXRlLiBBIG5lZ2F0aXZlIHZh bHVlIGluZGljYXRlcyB0aGUgc3RhdGUKKyAgICAgICBkYXRhIGNhbiBncm93IHVuYm91bmRlZGx5 IGluIHNpemUsIHN1Y2ggYXMgd2hlbiB0aGUgYWdncmVnYXRlCisgICAgICAgYWNjdW11bGF0ZXMg aW5wdXQgcm93cyAoZS5nLiwgYXJyYXlfYWdnLCBzdHJpbmdfYWdnKS4KICAgICAgIDwvcGFyYT48 L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfYWdncmVnYXRlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9hZ2dyZWdhdGUuc2dt bAppbmRleCAyMjJlMGFhNWM5ZC4uMDQ3MmFjMmU4NzQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX2FnZ3JlZ2F0ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X2FnZ3JlZ2F0ZS5zZ21sCkBAIC0zODQsOSArMzg0LDEzIEBAIFNFTEVDVCBjb2wgRlJPTSB0YWIg T1JERVIgQlkgY29sIFVTSU5HIHNvcnRvcCBMSU1JVCAxOwogICAgICA8cGFyYT4KICAgICAgIFRo ZSBhcHByb3hpbWF0ZSBhdmVyYWdlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgYWdncmVnYXRlJ3Mg c3RhdGUgdmFsdWUuCiAgICAgICBJZiB0aGlzIHBhcmFtZXRlciBpcyBvbWl0dGVkIG9yIGlzIHpl cm8sIGEgZGVmYXVsdCBlc3RpbWF0ZSBpcyB1c2VkCi0gICAgICBiYXNlZCBvbiB0aGUgPHJlcGxh Y2VhYmxlPnN0YXRlX2RhdGFfdHlwZTwvcmVwbGFjZWFibGU+LgorICAgICAgYmFzZWQgb24gdGhl IDxyZXBsYWNlYWJsZT5zdGF0ZV9kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPi4gSWYgc2V0IHRvIGEK KyAgICAgIG5lZ2F0aXZlIHZhbHVlLCBpdCBpbmRpY2F0ZXMgdGhlIHN0YXRlIGRhdGEgY2FuIGdy b3cgdW5ib3VuZGVkbHkgaW4KKyAgICAgIHNpemUsIHN1Y2ggYXMgd2hlbiB0aGUgYWdncmVnYXRl IGFjY3VtdWxhdGVzIGlucHV0IHJvd3MgKGUuZy4sCisgICAgICBhcnJheV9hZ2csIHN0cmluZ19h Z2cpLgogICAgICAgVGhlIHBsYW5uZXIgdXNlcyB0aGlzIHZhbHVlIHRvIGVzdGltYXRlIHRoZSBt ZW1vcnkgcmVxdWlyZWQgZm9yIGEKLSAgICAgIGdyb3VwZWQgYWdncmVnYXRlIHF1ZXJ5LgorICAg ICAgZ3JvdXBlZCBhZ2dyZWdhdGUgcXVlcnkgYW5kIHRvIGF2b2lkIG9wdGltaXphdGlvbnMgdGhh dCBtYXkgY2F1c2UKKyAgICAgIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNhZ2UuCiAgICAgIDwvcGFyYT4K ICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CkBAIC01NjgsNyArNTcyLDggQEAg U0VMRUNUIGNvbCBGUk9NIHRhYiBPUkRFUiBCWSBjb2wgVVNJTkcgc29ydG9wIExJTUlUIDE7CiAg ICAgIDxwYXJhPgogICAgICAgVGhlIGFwcHJveGltYXRlIGF2ZXJhZ2Ugc2l6ZSAoaW4gYnl0ZXMp IG9mIHRoZSBhZ2dyZWdhdGUncyBzdGF0ZQogICAgICAgdmFsdWUsIHdoZW4gdXNpbmcgbW92aW5n LWFnZ3JlZ2F0ZSBtb2RlLiAgVGhpcyB3b3JrcyB0aGUgc2FtZSBhcwotICAgICAgPHJlcGxhY2Vh YmxlPnN0YXRlX2RhdGFfc2l6ZTwvcmVwbGFjZWFibGU+LgorICAgICAgPHJlcGxhY2VhYmxlPnN0 YXRlX2RhdGFfc2l6ZTwvcmVwbGFjZWFibGU+LCBleGNlcHQgdGhhdCBuZWdhdGl2ZQorICAgICAg dmFsdWVzIGFyZSBub3QgdXNlZCB0byBpbmRpY2F0ZSB1bmJvdW5kZWQgc3RhdGUgc2l6ZS4KICAg ICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2luaXRzcGxhbi5jIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vaW5pdHNwbGFuLmMKaW5kZXggMWI3NzhmNjkyZDQuLmNiMjljNzJjOTZj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9pbml0c3BsYW4uYwpAQCAtNzE2LDE5ICs3MTYs MTQgQEAgc2V0dXBfZWFnZXJfYWdncmVnYXRpb24oUGxhbm5lckluZm8gKnJvb3QpCiAKIC8qCiAg KiBpc19wYXJ0aWFsX2FnZ19tZW1vcnlfcmlza3kKLSAqCSAgQ2hlY2tzIGlmIGFueSBhZ2dyZWdh dGUgcG9zZXMgYSByaXNrIG9mIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNhZ2UgZHVyaW5nCisgKgkgIENo ZWNrIGlmIGFueSBhZ2dyZWdhdGUgcG9zZXMgYSByaXNrIG9mIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNh Z2UgZHVyaW5nCiAgKgkgIHBhcnRpYWwgYWdncmVnYXRpb24uCiAgKgotICogV2UgY2hlY2sgaWYg YW55IGFnZ3JlZ2F0ZSB1c2VzIElOVEVSTkFMIHRyYW5zaXRpb24gdHlwZS4gIEFsdGhvdWdoIElO VEVSTkFMCi0gKiBpcyBtYXJrZWQgYXMgcGFzcy1ieS12YWx1ZSwgaXQgdXN1YWxseSBwb2ludHMg dG8gYSBsYXJnZSBpbnRlcm5hbCBkYXRhCi0gKiBzdHJ1Y3R1cmUgKGxpa2UgdGhvc2UgdXNlZCBi eSBzdHJpbmdfYWdnIG9yIGFycmF5X2FnZykuICBUaGVzZSB0cmFuc2l0aW9uCi0gKiBzdGF0ZXMg Y2FuIGdyb3cgbGFyZ2UgYW5kIHRoZWlyIHNpemUgaXMgaGFyZCB0byBlc3RpbWF0ZS4gIEFwcGx5 aW5nIGVhZ2VyCi0gKiBhZ2dyZWdhdGlvbiBpbiBzdWNoIGNhc2VzIHJpc2tzIGhpZ2ggbWVtb3J5 IHVzYWdlIHNpbmNlIHBhcnRpYWwgYWdncmVnYXRpb24KLSAqIHJlc3VsdHMgbWlnaHQgYmUgc3Rv cmVkIGluIGpvaW4gaGFzaCB0YWJsZXMgb3IgbWF0ZXJpYWxpemVkIG5vZGVzLgotICoKLSAqIFdl IGV4cGxpY2l0bHkgZXhjbHVkZSBhZ2dyZWdhdGVzIHdpdGggQVZHX0FDQ1VNIHRyYW5zaXRpb24g ZnVuY3Rpb24gZnJvbQotICogdGhpcyBjaGVjaywgYmFzZWQgb24gdGhlIGFzc3VtcHRpb24gdGhh dCBhdmcoKSBhbmQgc3VtKCkgYXJlIHNhZmUgaW4gdGhpcwotICogY29udGV4dC4KKyAqIFdlIGNo ZWNrIGlmIGFueSBhZ2dyZWdhdGUgaGFzIGEgbmVnYXRpdmUgYWdndHJhbnNzcGFjZSB2YWx1ZSwg d2hpY2gKKyAqIGluZGljYXRlcyB0aGF0IGl0cyB0cmFuc2l0aW9uIHN0YXRlIGRhdGEgY2FuIGdy b3cgdW5ib3VuZGVkbHkgaW4gc2l6ZS4KKyAqIEFwcGx5aW5nIGVhZ2VyIGFnZ3JlZ2F0aW9uIGlu IHN1Y2ggY2FzZXMgcmlza3MgaGlnaCBtZW1vcnkgdXNhZ2Ugc2luY2UKKyAqIHBhcnRpYWwgYWdn cmVnYXRpb24gcmVzdWx0cyBtaWdodCBiZSBzdG9yZWQgaW4gam9pbiBoYXNoIHRhYmxlcyBvcgor ICogbWF0ZXJpYWxpemVkIG5vZGVzLgogICovCiBzdGF0aWMgYm9vbAogaXNfcGFydGlhbF9hZ2df bWVtb3J5X3Jpc2t5KFBsYW5uZXJJbmZvICpyb290KQpAQCAtNzM5LDExICs3MzQsNyBAQCBpc19w YXJ0aWFsX2FnZ19tZW1vcnlfcmlza3koUGxhbm5lckluZm8gKnJvb3QpCiAJewogCQlBZ2dUcmFu c0luZm8gKnRyYW5zaW5mbyA9IGxmaXJzdF9ub2RlKEFnZ1RyYW5zSW5mbywgbGMpOwogCi0JCWlm ICh0cmFuc2luZm8tPnRyYW5zZm5fb2lkID09IEZfTlVNRVJJQ19BVkdfQUNDVU0gfHwKLQkJCXRy YW5zaW5mby0+dHJhbnNmbl9vaWQgPT0gRl9JTlQ4X0FWR19BQ0NVTSkKLQkJCWNvbnRpbnVlOwot Ci0JCWlmICh0cmFuc2luZm8tPmFnZ3RyYW5zdHlwZSA9PSBJTlRFUk5BTE9JRCkKKwkJaWYgKHRy YW5zaW5mby0+YWdndHJhbnNzcGFjZSA8IDApCiAJCQlyZXR1cm4gdHJ1ZTsKIAl9CiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oIGIvc3JjL2luY2x1ZGUvY2F0 YWxvZy9jYXR2ZXJzaW9uLmgKaW5kZXggZWYwZDBmOTIxNjUuLjYyYjBhZjNlMGMzIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL2NhdHZlcnNpb24uaApAQCAtNTcsNiArNTcsNiBAQAogICovCiAKIC8qCQkJCQkJCXl5 eXltbWRkTiAqLwotI2RlZmluZSBDQVRBTE9HX1ZFUlNJT05fTk8JMjAyNTA5MDkxCisjZGVmaW5l IENBVEFMT0dfVkVSU0lPTl9OTwkyMDI1MDkxMjEKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X2FnZ3JlZ2F0ZS5kYXQKaW5kZXggZDZhYTFmNmVjNDcuLjg3MDc2OWU4ZjE0IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FnZ3JlZ2F0ZS5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19hZ2dyZWdhdGUuZGF0CkBAIC01NTgsMjYgKzU1OCwyOCBAQAogICBhZ2dmaW5h bGZuID0+ICdhcnJheV9hZ2dfZmluYWxmbicsIGFnZ2NvbWJpbmVmbiA9PiAnYXJyYXlfYWdnX2Nv bWJpbmUnLAogICBhZ2dzZXJpYWxmbiA9PiAnYXJyYXlfYWdnX3NlcmlhbGl6ZScsCiAgIGFnZ2Rl c2VyaWFsZm4gPT4gJ2FycmF5X2FnZ19kZXNlcmlhbGl6ZScsIGFnZ2ZpbmFsZXh0cmEgPT4gJ3Qn LAotICBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2lu dGVybmFsJywgYWdndHJhbnNzcGFjZSA9PiAnLTEnIH0sCiB7IGFnZ2Zub2lkID0+ICdhcnJheV9h Z2coYW55YXJyYXkpJywgYWdndHJhbnNmbiA9PiAnYXJyYXlfYWdnX2FycmF5X3RyYW5zZm4nLAog ICBhZ2dmaW5hbGZuID0+ICdhcnJheV9hZ2dfYXJyYXlfZmluYWxmbicsCiAgIGFnZ2NvbWJpbmVm biA9PiAnYXJyYXlfYWdnX2FycmF5X2NvbWJpbmUnLAogICBhZ2dzZXJpYWxmbiA9PiAnYXJyYXlf YWdnX2FycmF5X3NlcmlhbGl6ZScsCiAgIGFnZ2Rlc2VyaWFsZm4gPT4gJ2FycmF5X2FnZ19hcnJh eV9kZXNlcmlhbGl6ZScsIGFnZ2ZpbmFsZXh0cmEgPT4gJ3QnLAotICBhZ2d0cmFuc3R5cGUgPT4g J2ludGVybmFsJyB9LAorICBhZ2d0cmFuc3R5cGUgPT4gJ2ludGVybmFsJywgYWdndHJhbnNzcGFj ZSA9PiAnLTEnIH0sCiAKICMgdGV4dAogeyBhZ2dmbm9pZCA9PiAnc3RyaW5nX2FnZyh0ZXh0LHRl eHQpJywgYWdndHJhbnNmbiA9PiAnc3RyaW5nX2FnZ190cmFuc2ZuJywKICAgYWdnZmluYWxmbiA9 PiAnc3RyaW5nX2FnZ19maW5hbGZuJywgYWdnY29tYmluZWZuID0+ICdzdHJpbmdfYWdnX2NvbWJp bmUnLAogICBhZ2dzZXJpYWxmbiA9PiAnc3RyaW5nX2FnZ19zZXJpYWxpemUnLAotICBhZ2dkZXNl cmlhbGZuID0+ICdzdHJpbmdfYWdnX2Rlc2VyaWFsaXplJywgYWdndHJhbnN0eXBlID0+ICdpbnRl cm5hbCcgfSwKKyAgYWdnZGVzZXJpYWxmbiA9PiAnc3RyaW5nX2FnZ19kZXNlcmlhbGl6ZScsCisg IGFnZ3RyYW5zdHlwZSA9PiAnaW50ZXJuYWwnLCBhZ2d0cmFuc3NwYWNlID0+ICctMScgfSwKIAog IyBieXRlYQogeyBhZ2dmbm9pZCA9PiAnc3RyaW5nX2FnZyhieXRlYSxieXRlYSknLAogICBhZ2d0 cmFuc2ZuID0+ICdieXRlYV9zdHJpbmdfYWdnX3RyYW5zZm4nLAogICBhZ2dmaW5hbGZuID0+ICdi eXRlYV9zdHJpbmdfYWdnX2ZpbmFsZm4nLAogICBhZ2djb21iaW5lZm4gPT4gJ3N0cmluZ19hZ2df Y29tYmluZScsIGFnZ3NlcmlhbGZuID0+ICdzdHJpbmdfYWdnX3NlcmlhbGl6ZScsCi0gIGFnZ2Rl c2VyaWFsZm4gPT4gJ3N0cmluZ19hZ2dfZGVzZXJpYWxpemUnLCBhZ2d0cmFuc3R5cGUgPT4gJ2lu dGVybmFsJyB9LAorICBhZ2dkZXNlcmlhbGZuID0+ICdzdHJpbmdfYWdnX2Rlc2VyaWFsaXplJywK KyAgYWdndHJhbnN0eXBlID0+ICdpbnRlcm5hbCcsIGFnZ3RyYW5zc3BhY2UgPT4gJy0xJyB9LAog CiAjIHJhbmdlCiB7IGFnZ2Zub2lkID0+ICdyYW5nZV9pbnRlcnNlY3RfYWdnKGFueXJhbmdlKScs CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHkub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dAppbmRleCAyMGJmOWVhOWNk Zi4uYTM1N2UxZDBjMGUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3By X3Nhbml0eS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91 dApAQCAtMTQ3MCw3ICsxNDcwLDcgQEAgV0hFUkUgYWdnZm5vaWQgPSAwIE9SIGFnZ3RyYW5zZm4g PSAwIE9SCiAgICAgKGFnZ2tpbmQgPSAnbicgQU5EIGFnZ251bWRpcmVjdGFyZ3MgPiAwKSBPUgog ICAgIGFnZ2ZpbmFsbW9kaWZ5IE5PVCBJTiAoJ3InLCAncycsICd3JykgT1IKICAgICBhZ2dtZmlu YWxtb2RpZnkgTk9UIElOICgncicsICdzJywgJ3cnKSBPUgotICAgIGFnZ3RyYW5zdHlwZSA9IDAg T1IgYWdndHJhbnNzcGFjZSA8IDAgT1IgYWdnbXRyYW5zc3BhY2UgPCAwOworICAgIGFnZ3RyYW5z dHlwZSA9IDAgT1IgYWdnbXRyYW5zc3BhY2UgPCAwOwogIGN0aWQgfCBhZ2dmbm9pZCAKIC0tLS0t LSstLS0tLS0tLS0tCiAoMCByb3dzKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv b3ByX3Nhbml0eS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbAppbmRl eCAyZmIzYTg1Mjg3OC4uY2Q2NzRkN2RiY2EgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL29wcl9zYW5pdHkuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL29wcl9zYW5pdHku c3FsCkBAIC04NDcsNyArODQ3LDcgQEAgV0hFUkUgYWdnZm5vaWQgPSAwIE9SIGFnZ3RyYW5zZm4g PSAwIE9SCiAgICAgKGFnZ2tpbmQgPSAnbicgQU5EIGFnZ251bWRpcmVjdGFyZ3MgPiAwKSBPUgog ICAgIGFnZ2ZpbmFsbW9kaWZ5IE5PVCBJTiAoJ3InLCAncycsICd3JykgT1IKICAgICBhZ2dtZmlu YWxtb2RpZnkgTk9UIElOICgncicsICdzJywgJ3cnKSBPUgotICAgIGFnZ3RyYW5zdHlwZSA9IDAg T1IgYWdndHJhbnNzcGFjZSA8IDAgT1IgYWdnbXRyYW5zc3BhY2UgPCAwOworICAgIGFnZ3RyYW5z dHlwZSA9IDAgT1IgYWdnbXRyYW5zc3BhY2UgPCAwOwogCiAtLSBNYWtlIHN1cmUgdGhlIG1hdGNo aW5nIHBnX3Byb2MgZW50cnkgaXMgc2Vuc2libGUsIHRvby4KIAotLSAKMi4zOS41IChBcHBsZSBH aXQtMTU0KQoK --000000000000d3d721063e975d59--