From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 683B0C433B4 for ; Thu, 22 Apr 2021 01:26:03 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F0FF761435 for ; Thu, 22 Apr 2021 01:26:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235385AbhDVB0e (ORCPT ); Wed, 21 Apr 2021 21:26:34 -0400 Received: from out20-63.mail.aliyun.com ([115.124.20.63]:41926 "EHLO out20-63.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232680AbhDVB0d (ORCPT ); Wed, 21 Apr 2021 21:26:33 -0400 X-Alimail-AntiSpam: AC=CONTINUE;BC=0.03987543|-1;CH=green;DM=|CONTINUE|false|;DS=CONTINUE|ham_regular_dialog|0.0287246-0.000264584-0.971011;FP=0|0|0|0|0|0|0|0;HT=ay29a033018047204;MF=wangyugui@e16-tech.com;NM=1;PH=DS;RN=3;RT=3;SR=0;TI=SMTPD_---.K1xv3Wh_1619054755; Received: from 192.168.2.112(mailfrom:wangyugui@e16-tech.com fp:SMTPD_---.K1xv3Wh_1619054755) by smtp.aliyun-inc.com(10.147.41.143); Thu, 22 Apr 2021 09:25:55 +0800 Date: Thu, 22 Apr 2021 09:25:59 +0800 From: Wang Yugui To: Qu Wenruo Subject: Re: 'ls /mnt/scratch/' freeze(deadlock?) when run xfstest(btrfs/232) Cc: fdmanana@gmail.com, linux-btrfs In-Reply-To: References: <20210422083231.755B.409509F4@e16-tech.com> Message-Id: <20210422092558.F39A.409509F4@e16-tech.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------_6080CB3800000000F395_MULTIPART_MIXED_" Content-Transfer-Encoding: 8bit X-Mailer: Becky! ver. 2.75.03 [en] Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org --------_6080CB3800000000F395_MULTIPART_MIXED_ Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: 8bit Hi, > On 2021/4/22 ÉÏÎç8:32, Wang Yugui wrote: > > Hi, > > > >>>>> we run xfstest on two server with this patch. > >>>>> one passed the tests. > >>>>> but one got a btrfs/232 error. > >>>>> > >>>>> btrfs/232 32s ... _check_btrfs_filesystem: filesystem on > >>>>> /dev/nvme0n1p1is inconsistent > >>>>> (see /usr/hpc-bio/xfstests/results//btrfs/232.full for details) > >>>>> ... > >>>>> [4/7] checking fs roots > >>>>> root 5 inode 337 errors 400, nbytes wrong > >>>>> ERROR: errors found in fs roots > >>>> > >>>> Ok, that's a different problem caused by something else. > >>>> It's possible to be due to the recent refactorings for preparation to > >>>> subpage block size. > >>> > >>> This error looks exactly what I have seen during subpage development. > >>> The subpage bug is caused by incorrect btrfs_invalidatepage() though, > >>> and not yet merged into misc-next anyway. > >>> > >>> I guess it's some error path not clearing extent states correctly, thus > >>> leaving the inode nbytes accounting wrong. > >>> > >>> BTW, the new @in_reclaim_context parameter for start_delalloc_inodes() > >>> is already in misc-next: > >>> commit 3d45f221ce627d13e2e6ef3274f06750c84a6542 > >>> Author: Filipe Manana > >>> Date:?? Wed Dec 2 11:55:58 2020 +0000 > >>> > >>> ?? btrfs: fix deadlock when cloning inline extent and low on free > >>> metadata space > >>> > >>> We only need to make btrfs_start_delalloc_snapshot() to accept the new > >>> parameter and pass in_reclaim_context = true for qgroup. > >> > >> Strangely, on my subpage branch, with new @in_reclaim_context parameter > >> added to btrfs_start_delalloc_snapshot(), I can't reproduce the nbytes > >> mismatch error in 32 runs loop. > >> I guess one of the refactor around ordered extents and invalidatepage > >> may fix the problem by accident. > >> > >> Mind to test my subpage branch > >> (https://github.com/adam900710/linux/tree/subpage) with the attached diff? > > > > The attached diff( more in_reclaim_context) seems a replacement for > > https://pastebin.com/raw/U9GUZiEf (less in_reclaim_context). > > The attached diff is for subpage branch, as misc-next already has the > parameter introduced for another bug. > Thus only a small part is needed for subpage branch. > > > > > so I will firstly test with the attached diff but drop > > https://pastebin.com/raw/U9GUZiEf. > > > > The test of whole subpage branch will be done later. > > So far, I also tested the older misc-next branch, and unable to > reproduce the problem. > I guess some patch in misc-next has already solved the problem. > > If possible it would be better to provide the branch you're on so that > we could do more tests to pin down the bug. our branch is based on 5.12-rc8 but with some patch in misc-next. The patch list added to 5.12-rc8 mmap race:(btrfs-mmap-race.patch) Subject: [PATCH] btrfs: add a i_mmap_lock to our inode Subject: [PATCH] btrfs: use btrfs_inode_lock/btrfs_inode_unlock inode lock Subject: [PATCH] btrfs: exclude mmaps while doing remap Subject: [PATCH] btrfs: exclude mmap from happening during all fallocate Subject: [PATCH] btrfs: fix race between memory mapped writes and fsync Subject: [PATCH] btrfs: fix race between marking inode needs to be logged and Subject: [PATCH] btrfs: remove stale comment and logic from others(btrfs-in-todo.patch): Subject: [PATCH] btrfs: Allow read-only mount with corrupted extent tree Subject: [PATCH] btrfs: fix a potential hole-punching failure Subject: [PATCH] btrfs: fix lockdep warning while mounting sprout fs Subject: [PATCH] btrfs: fix race between transaction aborts and fsyncs leading Subject: [PATCH] btrfs: make reflinks respect O_SYNC O_DSYNC and S_SYNC flags Subject: [PATCH] btrfs: return whole extents in fiemap Subject: [PATCH] btrfs: use percpu_read_positive instead of sum_positive for Subject: [PATCH] btrfs: zoned: move log tree node allocation out of Subject: [PATCH] btrfs: fix exhaustion of the system chunk array due to Subject: [PATCH] btrfs: fix metadata extent leak after failure to create Subject: [PATCH] btrfs: fix race when picking most recent mod log operation btrfs-add-btree-read-ahead-for-full-send-operations.patch We try to build a stable btrfs code based on 5.12. btrfs 5.4/5.10 have some performance problem fixed in 5.12 but difficult to backport, and we not need the support of subpage and zoned device that will come into 5.13. Best Regards Wang Yugui (wangyugui@e16-tech.com) 2021/04/22 --------_6080CB3800000000F395_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="btrfs-in-todo.patch" Content-Disposition: attachment; filename="btrfs-in-todo.patch" Content-Transfer-Encoding: base64 RnJvbSBmNTEzMjA1MDRiMjU2MGY3YzI4YWYyYTAzOTYxOTAwZWE2NDAxZmY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA8ZGF2aXNwdWhAZ21haWwuY29tPgpEYXRlOiBTdW4sIDIxIE1h ciAyMDIxIDIzOjQ5OjM5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gYnRyZnM6IEFsbG93IHJlYWQt b25seSBtb3VudCB3aXRoIGNvcnJ1cHRlZCBleHRlbnQgdHJlZQpNSU1FLVZlcnNpb246IDEuMApD b250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1F bmNvZGluZzogOGJpdAoKQ3VycmVudGx5IGlmIHRoZXJlJ3MgYW55IGNvcnJ1cHRpb24gYXQgYWxs IGluIGV4dGVudCB0cmVlCihlZy4gZXZlbiBzaW5nbGUgYml0KSB0aGVuIG1vdW50aW5nIHdpbGwg ZmFpbCB3aXRoOgoiZmFpbGVkIHRvIHJlYWQgYmxvY2sgZ3JvdXBzOiAtNSIgKC1FSU8pCkl0IGhh cHBlbnMgYmVjYXVzZSB3ZSBpbW1lZGlhdGVseSBhYm9ydCBvbiBmaXJzdCBlcnJvciB3aGVuCnNl YXJjaGluZyBpbiBleHRlbnQgdHJlZSBmb3IgYmxvY2sgZ3JvdXBzLgoKTm93IHdpdGggdGhpcyBw YXRjaCBpZiBgaWdub3JlYmFkcm9vdHNgIG9wdGlvbiBpcyBzcGVjaWZpZWQKdGhlbiB3ZSBoYW5k bGUgc3VjaCBjYXNlIGFuZCBjb250aW51ZSBieSByZW1vdmluZyBhbHJlYWR5CmNyZWF0ZWQgYmxv Y2sgZ3JvdXBzIGFuZCBjcmVhdGluZyBkdW1teSBibG9jayBncm91cHMuCgpTaWduZWQtb2ZmLWJ5 OiBEwqjCoXZpcyBNb3PCqMKhbnMgPGRhdmlzcHVoQGdtYWlsLmNvbT4KLS0tCiBmcy9idHJmcy9i bG9jay1ncm91cC5jIHwgMjAgKysrKysrKysrKysrKysrKysrKysKIGZzL2J0cmZzL2Rpc2staW8u YyAgICAgfCAgNCArKy0tCiBmcy9idHJmcy9kaXNrLWlvLmggICAgIHwgIDIgKysKIDMgZmlsZXMg Y2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9m cy9idHJmcy9ibG9jay1ncm91cC5jIGIvZnMvYnRyZnMvYmxvY2stZ3JvdXAuYwppbmRleCA3NDRi OTlkLi5mM2U3YWIwIDEwMDY0NAotLS0gYS9mcy9idHJmcy9ibG9jay1ncm91cC5jCisrKyBiL2Zz L2J0cmZzL2Jsb2NrLWdyb3VwLmMKQEAgLTIwOTgsNiArMjA5OCwyNiBAQCBpbnQgYnRyZnNfcmVh ZF9ibG9ja19ncm91cHMoc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmluZm8pCiAJcmV0ID0gY2hlY2tf Y2h1bmtfYmxvY2tfZ3JvdXBfbWFwcGluZ3MoaW5mbyk7CiBlcnJvcjoKIAlidHJmc19mcmVlX3Bh dGgocGF0aCk7CisKKwlpZiAocmV0ID09IC1FSU8gJiYgYnRyZnNfdGVzdF9vcHQoaW5mbywgSUdO T1JFQkFEUk9PVFMpKSB7CisKKwkJaWYgKGJ0cmZzX3N1cGVyX2xvZ19yb290KGluZm8tPnN1cGVy X2NvcHkpICE9IDApIHsKKwkJCWJ0cmZzX3dhcm4oaW5mbywgIklnbm9yaW5nIHRyZWUtbG9nIHJl cGxheSBkdWUgdG8gZXh0ZW50IHRyZWUgY29ycnVwdGlvbiEiKTsKKwkJCWJ0cmZzX3NldF9zdXBl cl9sb2dfcm9vdChpbmZvLT5zdXBlcl9jb3B5LCAwKTsKKwkJfQorCisJCWJ0cmZzX3B1dF9ibG9j a19ncm91cF9jYWNoZShpbmZvKTsKKwkJYnRyZnNfc3RvcF9hbGxfd29ya2VycyhpbmZvKTsKKwkJ YnRyZnNfZnJlZV9ibG9ja19ncm91cHMoaW5mbyk7CisJCXJldCA9IGJ0cmZzX2luaXRfd29ya3F1 ZXVlcyhpbmZvLCBOVUxMKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJCXJldCA9IGJ0 cmZzX2luaXRfc3BhY2VfaW5mbyhpbmZvKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJ CXJldHVybiBmaWxsX2R1bW15X2JncyhpbmZvKTsKKwl9CisKIAlyZXR1cm4gcmV0OwogfQogCmRp ZmYgLS1naXQgYS9mcy9idHJmcy9kaXNrLWlvLmMgYi9mcy9idHJmcy9kaXNrLWlvLmMKaW5kZXgg NDFiNzE4Yy4uZmU3ZTllNiAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvZGlzay1pby5jCisrKyBiL2Zz L2J0cmZzL2Rpc2staW8uYwpAQCAtMjA0Miw3ICsyMDQyLDcgQEAgc3RhdGljIGludCByZWFkX2Jh Y2t1cF9yb290KHN0cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLCB1OCBwcmlvcml0eSkKIH0K IAogLyogaGVscGVyIHRvIGNsZWFudXAgd29ya2VycyAqLwotc3RhdGljIHZvaWQgYnRyZnNfc3Rv cF9hbGxfd29ya2VycyhzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbykKK3ZvaWQgYnRyZnNf c3RvcF9hbGxfd29ya2VycyhzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbykKIHsKIAlidHJm c19kZXN0cm95X3dvcmtxdWV1ZShmc19pbmZvLT5maXh1cF93b3JrZXJzKTsKIAlidHJmc19kZXN0 cm95X3dvcmtxdWV1ZShmc19pbmZvLT5kZWxhbGxvY193b3JrZXJzKTsKQEAgLTIyMDksNyArMjIw OSw3IEBAIHN0YXRpYyB2b2lkIGJ0cmZzX2luaXRfcWdyb3VwKHN0cnVjdCBidHJmc19mc19pbmZv ICpmc19pbmZvKQogCW11dGV4X2luaXQoJmZzX2luZm8tPnFncm91cF9yZXNjYW5fbG9jayk7CiB9 CiAKLXN0YXRpYyBpbnQgYnRyZnNfaW5pdF93b3JrcXVldWVzKHN0cnVjdCBidHJmc19mc19pbmZv ICpmc19pbmZvLAoraW50IGJ0cmZzX2luaXRfd29ya3F1ZXVlcyhzdHJ1Y3QgYnRyZnNfZnNfaW5m byAqZnNfaW5mbywKIAkJc3RydWN0IGJ0cmZzX2ZzX2RldmljZXMgKmZzX2RldmljZXMpCiB7CiAJ dTMyIG1heF9hY3RpdmUgPSBmc19pbmZvLT50aHJlYWRfcG9vbF9zaXplOwpkaWZmIC0tZ2l0IGEv ZnMvYnRyZnMvZGlzay1pby5oIGIvZnMvYnRyZnMvZGlzay1pby5oCmluZGV4IDBlN2U5NTIuLjQx MzQ4YzggMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2Rpc2staW8uaAorKysgYi9mcy9idHJmcy9kaXNr LWlvLmgKQEAgLTEzOSw2ICsxMzksOCBAQCBpbnQgYnRyZnNfZ2V0X2ZyZWVfb2JqZWN0aWQoc3Ry dWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHU2NCAqb2JqZWN0aWQpOwogaW50IGJ0cmZzX2luaXRfcm9v dF9mcmVlX29iamVjdGlkKHN0cnVjdCBidHJmc19yb290ICpyb290KTsKIGludCBfX2luaXQgYnRy ZnNfZW5kX2lvX3dxX2luaXQodm9pZCk7CiB2b2lkIF9fY29sZCBidHJmc19lbmRfaW9fd3FfZXhp dCh2b2lkKTsKK3ZvaWQgYnRyZnNfc3RvcF9hbGxfd29ya2VycyhzdHJ1Y3QgYnRyZnNfZnNfaW5m byAqZnNfaW5mbyk7CitpbnQgYnRyZnNfaW5pdF93b3JrcXVldWVzKHN0cnVjdCBidHJmc19mc19p bmZvICpmc19pbmZvLCBzdHJ1Y3QgYnRyZnNfZnNfZGV2aWNlcyAqZnNfZGV2aWNlcyk7CiAKICNp ZmRlZiBDT05GSUdfREVCVUdfTE9DS19BTExPQwogdm9pZCBidHJmc19zZXRfYnVmZmVyX2xvY2tk ZXBfY2xhc3ModTY0IG9iamVjdGlkLAotLSAKMi4zMC4yCgpGcm9tIDkwYTFlNThmZjMzOGYxZmY2 YzRjZDU2NjQ5ZmI2MzZkZTkxMTdkZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEJp bmdKaW5nIENoYW5nIDxiaW5namluZ2NAc3lub2xvZ3kuY29tPgpEYXRlOiBXZWQsIDI0IE1hciAy MDIxIDE3OjMxOjEwICswODAwClN1YmplY3Q6IFtQQVRDSF0gYnRyZnM6IGZpeCBhIHBvdGVudGlh bCBob2xlLXB1bmNoaW5nIGZhaWx1cmUKCkluIGNvbW1pdCBkNzc4MTU0NjFmMDQgKCJidHJmczog QXZvaWQgdHJ1Y2F0aW5nIHBhZ2Ugb3IgcHVuY2hpbmcgaG9sZQppbiBhIGFscmVhZHkgZXhpc3Rl ZCBob2xlLiIpLCBleGlzdGVkIGhvbGVzIGNhbiBiZSBza2lwcGVkIGJ5IGNhbGxpbmcKZmluZF9m aXJzdF9ub25faG9sZSgpIHRvIGFkanVzdCAqc3RhcnQgYW5kICpsZW4uIEhvd2V2ZXIsIGlmIHRo ZSBnaXZlbgpsZW4gaXMgaW52YWxpZCBhbmQgbGFyZ2UsIHdoZW4gYW4gRVhURU5UX01BUF9IT0xF IGV4dGVudCBpcyBmb3VuZCwgdGhlCipsZW4gd2lsbCBub3QgYmUgc2V0IHRvIHplcm8gYmVjYXVz ZSAoZW0tPnN0YXJ0ICsgZW0tPmxlbikgaXMgbGVzcyB0aGFuCigqc3RhcnQgKyAqbGVuKS4gVGhl biB0aGUgcmV0IHdpbGwgYmUgMSBidXQgdGhlICpsZW4gd2lsbCBub3QgYmUgc2V0IHRvCjAuIFRo ZSBwcm9wYWdhdGVkIG5vbi16ZXJvIHJldCB3aWxsIHJlc3VsdCBpbiBmYWxsb2NhdGUgZmFpbHVy ZS4KCkluIHRoZSB3aGlsZS1sb29wIG9mIGJ0cmZzX3JlcGxhY2VfZmlsZV9leHRlbnRzKCksIGxl biBpcyBub3QgdXBkYXRlZApldmVyeSB0aW1lIGJlZm9yZSBpdCBjYWxscyBmaW5kX2ZpcnN0X25v bl9ob2xlKCkuIFRoYXQgaXMsIGFmdGVyCmJ0cmZzX2Ryb3BfZXh0ZW50cygpIHN1Y2Nlc3NmdWxs eSBkcm9wcyB0aGUgbGFzdCBub24taG9sZSBmaWxlIGV4dGVudCwKaXQgbWF5IGZhaWwgd2l0aCAt RU5PU1BDIHdoZW4gYXR0ZW1wdGluZyB0byBkcm9wIGEgZmlsZSBleHRlbnQgaXRlbQpyZXByZXNl bnRpbmcgYSBob2xlLiBUaGUgcHJvYmxlbSBjYW4gaGFwcGVuLiBBZnRlciBpdCBjYWxscwpmaW5k X2ZpcnN0X25vbl9ob2xlKCksIHRoZSBjdXJfb2Zmc2V0IHdpbGwgYmUgYWRqdXN0ZWQgdG8gYmUg bGFyZ2VyCnRoYW4gb3IgZXF1YWwgdG8gZW5kLiBIb3dldmVyLCBzaW5jZSB0aGUgbGVuIGlzIG5v dCBzZXQgdG8gemVyby4gVGhlCmJyZWFrLWxvb3AgY29uZGl0aW9uIChyZXQgJiYgIWxlbikgd2ls bCBub3QgbWVldC4gQWZ0ZXIgaXQgbGVhdmVzIHRoZQp3aGlsZS1sb29wLCBmYWxsb2NhdGUgd2ls bCByZXR1cm4gMSwgd2hpY2ggaXMgYW4gdW5leHBlY3RlZCByZXR1cm4KdmFsdWUuCgpXZSdyZSBu b3QgYWJsZSB0byBjb25zdHJ1Y3QgYSByZXByb2R1Y2libGUgd2F5IHRvIGxldApidHJmc19kcm9w X2V4dGVudHMoKSBmYWlsIHdpdGggLUVOT1NQQyBhZnRlciBpdCBkcm9wcyB0aGUgbGFzdCBub24t aG9sZQpmaWxlIGV4dGVudCBidXQgd2l0aCByZW1haW5pbmcgaG9sZXMgbGVmdC4gSG93ZXZlciwg aXQncyBxdWl0ZSBlYXN5IHRvCmZpeC4gV2UganVzdCBuZWVkIHRvIHVwZGF0ZSBhbmQgY2hlY2sg dGhlIGxlbiBldmVyeSB0aW1lIGJlZm9yZSB3ZSBjYWxsCmZpbmRfZmlyc3Rfbm9uX2hvbGUoKS4g VG8gbWFrZSB0aGUgd2hpbGUgbG9vcCBtb3JlIHJlYWRhYmxlLCB3ZSBhbHNvCnB1bGwgdGhlIHZh cmlhYmxlIHVwZGF0ZXMgdG8gdGhlIGJvdHRvbSBvZiBsb29wIGxpa2UgdGhpczoKd2hpbGUgKGN1 cl9vZmZzZXQgPCBlbmQpIHsKICAgICAgICAuLi4KICAgICAgICAvLyB1cGRhdGUgY3VyX29mZnNl dCAmIGxlbgogICAgICAgIC8vIGFkdmFuY2UgY3VyX29mZnNldCAmIGxlbiBpbiBob2xlLXB1bmNo aW5nIGNhc2UgaWYgbmVlZGVkCn0KClJlcG9ydGVkLWJ5OiBSb2JiaWUgS28gPHJvYmJpZWtvQHN5 bm9sb2d5LmNvbT4KRml4ZXM6IGQ3NzgxNTQ2MWYwNCAoImJ0cmZzOiBBdm9pZCB0cnVjYXRpbmcg cGFnZSBvciBwdW5jaGluZyBob2xlIGluIGEKYWxyZWFkeSBleGlzdGVkIGhvbGUuIikKUmV2aWV3 ZWQtYnk6IFJvYmJpZSBLbyA8cm9iYmlla29Ac3lub2xvZ3kuY29tPgpSZXZpZXdlZC1ieTogQ2h1 bmctQ2hpYW5nIENoZW5nIDxjY2NoZW5nQHN5bm9sb2d5LmNvbT4KU2lnbmVkLW9mZi1ieTogQmlu Z0ppbmcgQ2hhbmcgPGJpbmdqaW5nY0BzeW5vbG9neS5jb20+Ci0tLQogZnMvYnRyZnMvZmlsZS5j IHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvZmlsZS5jIGIvZnMvYnRyZnMvZmlsZS5jCmluZGV4 IDBlMTU1ZjAuLmRjY2IwMTcgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2ZpbGUuYworKysgYi9mcy9i dHJmcy9maWxlLmMKQEAgLTI3MzUsOCArMjczNSw2IEBAIGludCBidHJmc19yZXBsYWNlX2ZpbGVf ZXh0ZW50cyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgYnRyZnNfcGF0aCAqcGF0aCwKIAkJ CWV4dGVudF9pbmZvLT5maWxlX29mZnNldCArPSByZXBsYWNlX2xlbjsKIAkJfQogCi0JCWN1cl9v ZmZzZXQgPSBkcm9wX2FyZ3MuZHJvcF9lbmQ7Ci0KIAkJcmV0ID0gYnRyZnNfdXBkYXRlX2lub2Rl KHRyYW5zLCByb290LCBCVFJGU19JKGlub2RlKSk7CiAJCWlmIChyZXQpCiAJCQlicmVhazsKQEAg LTI3NTYsNyArMjc1NCw5IEBAIGludCBidHJmc19yZXBsYWNlX2ZpbGVfZXh0ZW50cyhzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgYnRyZnNfcGF0aCAqcGF0aCwKIAkJQlVHX09OKHJldCk7CS8q IHNob3VsZG4ndCBoYXBwZW4gKi8KIAkJdHJhbnMtPmJsb2NrX3JzdiA9IHJzdjsKIAotCQlpZiAo IWV4dGVudF9pbmZvKSB7CisJCWN1cl9vZmZzZXQgPSBkcm9wX2FyZ3MuZHJvcF9lbmQ7CisJCWxl biA9IGVuZCAtIGN1cl9vZmZzZXQ7CisJCWlmICghZXh0ZW50X2luZm8gJiYgbGVuKSB7CiAJCQly ZXQgPSBmaW5kX2ZpcnN0X25vbl9ob2xlKEJUUkZTX0koaW5vZGUpLCAmY3VyX29mZnNldCwKIAkJ CQkJCSAgJmxlbik7CiAJCQlpZiAodW5saWtlbHkocmV0IDwgMCkpCi0tIAoyLjMwLjIKCkZyb20g NGE4MjJkYjU2MTRiZGYxYzI1N2YzYjdkZWY2OGQ3MTFmODZhMTllNSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKRnJvbTogQW5hbmQgSmFpbiA8YW5hbmQuamFpbkBvcmFjbGUuY29tPgpEYXRlOiBU aHUsIDQgTWFyIDIwMjEgMDI6MTA6MzUgKzA4MDAKU3ViamVjdDogW1BBVENIXSBidHJmczogZml4 IGxvY2tkZXAgd2FybmluZyB3aGlsZSBtb3VudGluZyBzcHJvdXQgZnMKCkZvbGxvd2luZyB0ZXN0 IGNhc2UgcmVwcm9kdWNlcyBsb2NrZGVwIHdhcm5pbmcuCgpUZXN0IGNhc2U6CkRFVjE9L2Rldi92 ZGIKREVWMj0vZGV2L3ZkYwp1bW91bnQgL2J0cmZzCnJ1biBta2ZzLmJ0cmZzIC1mICRERVYxCnJ1 biBidHJmc3R1bmUgLVMgMSAkREVWMQpydW4gbW91bnQgJERFVjEgL2J0cmZzCnJ1biBidHJmcyBk ZXZpY2UgYWRkICRERVYyIC9idHJmcyAtZgpydW4gdW1vdW50IC9idHJmcwpydW4gbW91bnQgJERF VjIgL2J0cmZzCnJ1biB1bW91bnQgL2J0cmZzCgpUaGUgd2FybmluZyBjbGFpbXMgYSBwb3NzaWJs ZSBBQkJBIGRlYWRsb2NrIGJldHdlZW4gdGhlIHRocmVhZHMgaW5pdGlhdGVkIGJ5ClsjMV0gYnRy ZnMgZGV2aWNlIGFkZCBhbmQgWyMwXSB0aGUgbW91bnQuCgo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KWyA1NDAuNzQzMTIyXSBXQVJOSU5HOiBw b3NzaWJsZSBjaXJjdWxhciBsb2NraW5nIGRlcGVuZGVuY3kgZGV0ZWN0ZWQKWyA1NDAuNzQzMTI5 XSA1LjExLjAtcmM3KyAjNSBOb3QgdGFpbnRlZApbIDU0MC43NDMxMzVdIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpbIDU0MC43NDMxNDJdIG1v dW50LzI1MTUgaXMgdHJ5aW5nIHRvIGFjcXVpcmUgbG9jazoKWyA1NDAuNzQzMTQ5XSBmZmZmYTBj NTU0NGMyY2UwICgmZnNfZGV2cy0+ZGV2aWNlX2xpc3RfbXV0ZXgpeysuKy59LXs0OjR9LCBhdDog Y2xvbmVfZnNfZGV2aWNlcysweDZkLzB4MjEwIFtidHJmc10KWyA1NDAuNzQzNDU4XSBidXQgdGFz ayBpcyBhbHJlYWR5IGhvbGRpbmcgbG9jazoKWyA1NDAuNzQzNDYxXSBmZmZmYTBjNTRhNzkzMmI4 IChidHJmcy1jaHVuay0wMCl7KysrK30tezQ6NH0sIGF0OiBfX2J0cmZzX3RyZWVfcmVhZF9sb2Nr KzB4MzIvMHgyMDAgW2J0cmZzXQpbIDU0MC43NDM1NDFdIHdoaWNoIGxvY2sgYWxyZWFkeSBkZXBl bmRzIG9uIHRoZSBuZXcgbG9jay4KWyA1NDAuNzQzNTQzXSB0aGUgZXhpc3RpbmcgZGVwZW5kZW5j eSBjaGFpbiAoaW4gcmV2ZXJzZSBvcmRlcikgaXM6CgpbIDU0MC43NDM1NDZdIC0+ICMxIChidHJm cy1jaHVuay0wMCl7KysrK30tezQ6NH06ClsgNTQwLjc0MzU2Nl0gZG93bl9yZWFkX25lc3RlZCsw eDQ4LzB4MmIwClsgNTQwLjc0MzU4NV0gX19idHJmc190cmVlX3JlYWRfbG9jaysweDMyLzB4MjAw IFtidHJmc10KWyA1NDAuNzQzNjUwXSBidHJmc19yZWFkX2xvY2tfcm9vdF9ub2RlKzB4NzAvMHgy MDAgW2J0cmZzXQpbIDU0MC43NDM3MzNdIGJ0cmZzX3NlYXJjaF9zbG90KzB4NmM2LzB4ZTAwIFti dHJmc10KWyA1NDAuNzQzNzg1XSBidHJmc191cGRhdGVfZGV2aWNlKzB4ODMvMHgyNjAgW2J0cmZz XQpbIDU0MC43NDM4NDldIGJ0cmZzX2ZpbmlzaF9jaHVua19hbGxvYysweDEzZi8weDY2MCBbYnRy ZnNdIDwtLS0gZGV2aWNlX2xpc3RfbXV0ZXgKWyA1NDAuNzQzOTExXSBidHJmc19jcmVhdGVfcGVu ZGluZ19ibG9ja19ncm91cHMrMHgxOGQvMHgzZjAgW2J0cmZzXQpbIDU0MC43NDM5ODJdIGJ0cmZz X2NvbW1pdF90cmFuc2FjdGlvbisweDg2LzB4MTI2MCBbYnRyZnNdClsgNTQwLjc0NDAzN10gYnRy ZnNfaW5pdF9uZXdfZGV2aWNlKzB4MTYwMC8weDFkZDAgW2J0cmZzXQpbIDU0MC43NDQxMDFdIGJ0 cmZzX2lvY3RsKzB4MWM3Ny8weDI0YzAgW2J0cmZzXQpbIDU0MC43NDQxNjZdIF9feDY0X3N5c19p b2N0bCsweGU0LzB4MTQwClsgNTQwLjc0NDE3MF0gZG9fc3lzY2FsbF82NCsweDRiLzB4ODAKWyA1 NDAuNzQ0MTc0XSBlbnRyeV9TWVNDQUxMXzY0X2FmdGVyX2h3ZnJhbWUrMHg0NC8weGE5CgpbIDU0 MC43NDQxODBdIC0+ICMwICgmZnNfZGV2cy0+ZGV2aWNlX2xpc3RfbXV0ZXgpeysuKy59LXs0OjR9 OgpbIDU0MC43NDQxODRdIF9fbG9ja19hY3F1aXJlKzB4MTU1Zi8weDIzNjAKWyA1NDAuNzQ0MTg4 XSBsb2NrX2FjcXVpcmUrMHgxMGIvMHg1YzAKWyA1NDAuNzQ0MTkwXSBfX211dGV4X2xvY2srMHhi MS8weGY4MApbIDU0MC43NDQxOTNdIG11dGV4X2xvY2tfbmVzdGVkKzB4MjcvMHgzMApbIDU0MC43 NDQxOTZdIGNsb25lX2ZzX2RldmljZXMrMHg2ZC8weDIxMCBbYnRyZnNdClsgNTQwLjc0NDI3MF0g YnRyZnNfcmVhZF9jaHVua190cmVlKzB4M2M3LzB4YmIwIFtidHJmc10KWyA1NDAuNzQ0MzM2XSBv cGVuX2N0cmVlKzB4ZjZlLzB4MjA3NCBbYnRyZnNdClsgNTQwLjc0NDQwNl0gYnRyZnNfbW91bnRf cm9vdC5jb2xkLjcyKzB4MTYvMHgxMjcgW2J0cmZzXQpbIDU0MC43NDQ0NzJdIGxlZ2FjeV9nZXRf dHJlZSsweDM4LzB4OTAKWyA1NDAuNzQ0NDc1XSB2ZnNfZ2V0X3RyZWUrMHgzMC8weDE0MApbIDU0 MC43NDQ0NzhdIGZjX21vdW50KzB4MTYvMHg2MApbIDU0MC43NDQ0ODJdIHZmc19rZXJuX21vdW50 KzB4OTEvMHgxMDAKWyA1NDAuNzQ0NDg0XSBidHJmc19tb3VudCsweDFlNi8weDY3MCBbYnRyZnNd ClsgNTQwLjc0NDUzNl0gbGVnYWN5X2dldF90cmVlKzB4MzgvMHg5MApbIDU0MC43NDQ1MzddIHZm c19nZXRfdHJlZSsweDMwLzB4MTQwClsgNTQwLjc0NDUzOV0gcGF0aF9tb3VudCsweDhkOC8weDEw NzAKWyA1NDAuNzQ0NTQxXSBkb19tb3VudCsweDhkLzB4YzAKWyA1NDAuNzQ0NTQzXSBfX3g2NF9z eXNfbW91bnQrMHgxMjUvMHgxNjAKWyA1NDAuNzQ0NTQ1XSBkb19zeXNjYWxsXzY0KzB4NGIvMHg4 MApbIDU0MC43NDQ1NDddIGVudHJ5X1NZU0NBTExfNjRfYWZ0ZXJfaHdmcmFtZSsweDQ0LzB4YTkK ClsgNTQwLjc0NDU1MV0gb3RoZXIgaW5mbyB0aGF0IG1pZ2h0IGhlbHAgdXMgZGVidWcgdGhpczoK WyA1NDAuNzQ0NTUyXSBQb3NzaWJsZSB1bnNhZmUgbG9ja2luZyBzY2VuYXJpbzoKClsgNTQwLjc0 NDU1M10gQ1BVMCAJCQkJQ1BVMQpbIDU0MC43NDQ1NTRdIC0tLS0gCQkJCS0tLS0KWyA1NDAuNzQ0 NTU1XSBsb2NrKGJ0cmZzLWNodW5rLTAwKTsKWyA1NDAuNzQ0NTU3XSAJCQkJCWxvY2soJmZzX2Rl dnMtPmRldmljZV9saXN0X211dGV4KTsKWyA1NDAuNzQ0NTYwXSAJCQkJCWxvY2soYnRyZnMtY2h1 bmstMDApOwpbIDU0MC43NDQ1NjJdIGxvY2soJmZzX2RldnMtPmRldmljZV9saXN0X211dGV4KTsK WyA1NDAuNzQ0NTY0XQogKioqIERFQURMT0NLICoqKgoKWyA1NDAuNzQ0NTY1XSAzIGxvY2tzIGhl bGQgYnkgbW91bnQvMjUxNToKWyA1NDAuNzQ0NTY3XSAjMDogZmZmZmEwYzU2YmY3YTBlMCAoJnR5 cGUtPnNfdW1vdW50X2tleSM0Mi8xKXsrLisufS17NDo0fSwgYXQ6IGFsbG9jX3N1cGVyLmlzcmEu MTYrMHhkZi8weDQ1MApbIDU0MC43NDQ1NzRdICMxOiBmZmZmZmZmZmMwNWE5NjI4ICh1dWlkX211 dGV4KXsrLisufS17NDo0fSwgYXQ6IGJ0cmZzX3JlYWRfY2h1bmtfdHJlZSsweDYzLzB4YmIwIFti dHJmc10KWyA1NDAuNzQ0NjQwXSAjMjogZmZmZmEwYzU0YTc5MzJiOCAoYnRyZnMtY2h1bmstMDAp eysrKyt9LXs0OjR9LCBhdDogX19idHJmc190cmVlX3JlYWRfbG9jaysweDMyLzB4MjAwIFtidHJm c10KWyA1NDAuNzQ0NzA4XQogc3RhY2sgYmFja3RyYWNlOgpbIDU0MC43NDQ3MTJdIENQVTogMiBQ SUQ6IDI1MTUgQ29tbTogbW91bnQgTm90IHRhaW50ZWQgNS4xMS4wLXJjNysgIzUKCkJ1dCB0aGUg ZGV2aWNlX2xpc3RfbXV0ZXggaW4gY2xvbmVfZnNfZGV2aWNlcygpIGlzIHJlZHVuZGFudCwgYXMg ZXhwbGFpbmVkCmJlbG93LgpUd28gdGhyZWFkcyBbMV0gIGFuZCBbMl0gKGJlbG93KSBjb3VsZCBs ZWFkIHRvIGNsb25lX2ZzX2RldmljZSgpLgoKWzFdCm9wZW5fY3RyZWUgPD09IG1vdW50IHNwcm91 dCBmcwogYnRyZnNfcmVhZF9jaHVua190cmVlKCkKICBtdXRleF9sb2NrKCZ1dWlkX211dGV4KSA8 PT0gZ2xvYmFsIGxvY2sKICByZWFkX29uZV9kZXYoKQogICBvcGVuX3NlZWRfZGV2aWNlcygpCiAg ICBjbG9uZV9mc19kZXZpY2VzKCkgPD09IHNlZWQgZnNfZGV2aWNlcwogICAgIG11dGV4X2xvY2so Jm9yaWctPmRldmljZV9saXN0X211dGV4KSA8PT0gc2VlZCBmc19kZXZpY2VzCgpbMl0KYnRyZnNf aW5pdF9uZXdfZGV2aWNlKCkgPD09IHNwcm91dGluZwogbXV0ZXhfbG9jaygmdXVpZF9tdXRleCk7 IDw9PSBnbG9iYWwgbG9jawogYnRyZnNfcHJlcGFyZV9zcHJvdXQoKQogICBsb2NrZGVwX2Fzc2Vy dF9oZWxkKCZ1dWlkX211dGV4KQogICBjbG9uZV9mc19kZXZpY2VzKHNlZWRfZnNfZGV2aWNlKSA8 PT0gc2VlZCBmc19kZXZpY2VzCgpCb3RoIG9mIHRoZXNlIHRocmVhZHMgaG9sZCB1dWlkX211dGV4 IHdoaWNoIGlzIHN1ZmZpY2llbnQgdG8gcHJvdGVjdApnZXR0aW5nIHRoZSBzZWVkIGRldmljZShz KSBmcmVlZCB3aGlsZSB3ZSBhcmUgdHJ5aW5nIHRvIGNsb25lIGl0IGZvcgpzcHJvdXRpbmcgWzJd IG9yIG1vdW50aW5nIGEgc3Byb3V0IFsxXSAoYXMgYWJvdmUpLiBBIG1vdW50ZWQgc2VlZApkZXZp Y2UgY2FuIG5vdCBmcmVlL3dyaXRlL3JlcGxhY2UgYmVjYXVzZSBpdCBpcyByZWFkLW9ubHkuIEFu IHVubW91bnRlZApzZWVkIGRldmljZSBjYW4gZnJlZSBieSBidHJmc19mcmVlX3N0YWxlX2Rldmlj ZXMoKSwgYnV0IGl0IG5lZWRzIHV1aWRfbXV0ZXguClNvIHRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUg dW5uZWNlc3NhcnkgZGV2aWNlX2xpc3RfbXV0ZXggaW4gY2xvbmVfZnNfZGV2aWNlcygpLgpBbmQg YWRkcyBhIGxvY2tkZXBfYXNzZXJ0X2hlbGQoJnV1aWRfbXV0ZXgpIGluIGNsb25lX2ZzX2Rldmlj ZXMoKS4KClJlcG9ydGVkLWJ5OiBTdSBZdWUgPGxAZGFtZW5seS5zdT4KU2lnbmVkLW9mZi1ieTog QW5hbmQgSmFpbiA8YW5hbmQuamFpbkBvcmFjbGUuY29tPgotLS0KIGZzL2J0cmZzL3ZvbHVtZXMu YyB8IDcgKysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9mcy9idHJmcy92b2x1bWVzLmMgYi9mcy9idHJmcy92b2x1bWVz LmMKaW5kZXggYmMzYjMzZS4uNDE4OGVkYiAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvdm9sdW1lcy5j CisrKyBiL2ZzL2J0cmZzL3ZvbHVtZXMuYwpAQCAtNTcwLDYgKzU3MCw4IEBAIHN0YXRpYyBpbnQg YnRyZnNfZnJlZV9zdGFsZV9kZXZpY2VzKGNvbnN0IGNoYXIgKnBhdGgsCiAJc3RydWN0IGJ0cmZz X2RldmljZSAqZGV2aWNlLCAqdG1wX2RldmljZTsKIAlpbnQgcmV0ID0gMDsKIAorCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJnV1aWRfbXV0ZXgpOworCiAJaWYgKHBhdGgpCiAJCXJldCA9IC1FTk9FTlQ7 CiAKQEAgLTEwMDAsMTEgKzEwMDIsMTIgQEAgc3RhdGljIHN0cnVjdCBidHJmc19mc19kZXZpY2Vz ICpjbG9uZV9mc19kZXZpY2VzKHN0cnVjdCBidHJmc19mc19kZXZpY2VzICpvcmlnKQogCXN0cnVj dCBidHJmc19kZXZpY2UgKm9yaWdfZGV2OwogCWludCByZXQgPSAwOwogCisJbG9ja2RlcF9hc3Nl cnRfaGVsZCgmdXVpZF9tdXRleCk7CisKIAlmc19kZXZpY2VzID0gYWxsb2NfZnNfZGV2aWNlcyhv cmlnLT5mc2lkLCBOVUxMKTsKIAlpZiAoSVNfRVJSKGZzX2RldmljZXMpKQogCQlyZXR1cm4gZnNf ZGV2aWNlczsKIAotCW11dGV4X2xvY2soJm9yaWctPmRldmljZV9saXN0X211dGV4KTsKIAlmc19k ZXZpY2VzLT50b3RhbF9kZXZpY2VzID0gb3JpZy0+dG90YWxfZGV2aWNlczsKIAogCWxpc3RfZm9y X2VhY2hfZW50cnkob3JpZ19kZXYsICZvcmlnLT5kZXZpY2VzLCBkZXZfbGlzdCkgewpAQCAtMTAz NiwxMCArMTAzOSw4IEBAIHN0YXRpYyBzdHJ1Y3QgYnRyZnNfZnNfZGV2aWNlcyAqY2xvbmVfZnNf ZGV2aWNlcyhzdHJ1Y3QgYnRyZnNfZnNfZGV2aWNlcyAqb3JpZykKIAkJZGV2aWNlLT5mc19kZXZp Y2VzID0gZnNfZGV2aWNlczsKIAkJZnNfZGV2aWNlcy0+bnVtX2RldmljZXMrKzsKIAl9Ci0JbXV0 ZXhfdW5sb2NrKCZvcmlnLT5kZXZpY2VfbGlzdF9tdXRleCk7CiAJcmV0dXJuIGZzX2RldmljZXM7 CiBlcnJvcjoKLQltdXRleF91bmxvY2soJm9yaWctPmRldmljZV9saXN0X211dGV4KTsKIAlmcmVl X2ZzX2RldmljZXMoZnNfZGV2aWNlcyk7CiAJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0KLS0gCjIu MzAuMQoKRnJvbSBjNWYzZDdmN2NjODk0YTljZDA2MDgyYWMxYmM1OGJkZDUwNTZmZmFmIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxpcGUgTWFuYW5hIDxmZG1hbmFuYUBzdXNlLmNv bT4KRGF0ZTogTW9uLCA1IEFwciAyMDIxIDEyOjMyOjE2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g YnRyZnM6IGZpeCByYWNlIGJldHdlZW4gdHJhbnNhY3Rpb24gYWJvcnRzIGFuZCBmc3luY3MgbGVh ZGluZwogdG8gdXNlLWFmdGVyLWZyZWUKClRoZXJlIGlzIGEgcmFjZSBiZXR3ZWVuIGEgdGFzayBh Ym9ydGluZyBhIHRyYW5zYWN0aW9uIGR1cmluZyBhIGNvbW1pdCwKYSB0YXNrIGRvaW5nIGFuIGZz eW5jIGFuZCB0aGUgdHJhbnNhY3Rpb24ga3RocmVhZCwgd2hpY2ggbGVhZHMgdG8gYW4KdXNlLWFm dGVyLWZyZWUgb2YgdGhlIGxvZyByb290IHRyZWUuIFdoZW4gdGhpcyBoYXBwZW5zLCBpdCByZXN1 bHRzIGluIGEKc3RhY2sgdHJhY2UgbGlrZSB0aGUgZm9sbG93aW5nOgoKWzk5Njc4LjU0NzMzNV0g QlRSRlMgaW5mbyAoZGV2aWNlIGRtLTApOiBmb3JjZWQgcmVhZG9ubHkKWzk5Njc4LjU0NzM0MF0g QlRSRlMgd2FybmluZyAoZGV2aWNlIGRtLTApOiBTa2lwcGluZyBjb21taXQgb2YgYWJvcnRlZCB0 cmFuc2FjdGlvbi4KWzk5Njc4LjU0NzM0MV0gQlRSRlM6IGVycm9yIChkZXZpY2UgZG0tMCkgaW4g Y2xlYW51cF90cmFuc2FjdGlvbjoxOTU4OiBlcnJubz0tNSBJTyBmYWlsdXJlCls5OTY3OC41NDcz NzNdIEJUUkZTIHdhcm5pbmcgKGRldmljZSBkbS0wKTogbG9zdCBwYWdlIHdyaXRlIGR1ZSB0byBJ TyBlcnJvciBvbiAvZGV2L21hcHBlci9lcnJvci10ZXN0ICgtNSkKWzk5Njc4LjU0NzUzM10gQlRS RlMgd2FybmluZyAoZGV2aWNlIGRtLTApOiBTa2lwcGluZyBjb21taXQgb2YgYWJvcnRlZCB0cmFu c2FjdGlvbi4KWzk5Njc4LjU0ODc0M10gQlRSRlMgd2FybmluZyAoZGV2aWNlIGRtLTApOiBkaXJl Y3QgSU8gZmFpbGVkIGlubyAyNjEgcncgMCwwIHNlY3RvciAweGE0ZTggbGVuIDQwOTYgZXJyIG5v IDEwCls5OTY3OC41NDkxODhdIEJUUkZTIGVycm9yIChkZXZpY2UgZG0tMCk6IGVycm9yIHdyaXRp bmcgcHJpbWFyeSBzdXBlciBibG9jayB0byBkZXZpY2UgMQpbOTk2NzguNTUxMTAwXSBCVFJGUyB3 YXJuaW5nIChkZXZpY2UgZG0tMCk6IGRpcmVjdCBJTyBmYWlsZWQgaW5vIDI2MSBydyAwLDAgc2Vj dG9yIDB4MTJlMDAwIGxlbiA0MDk2IGVyciBubyAxMApbOTk2NzguNTUxMTQ5XSBCVFJGUyB3YXJu aW5nIChkZXZpY2UgZG0tMCk6IGRpcmVjdCBJTyBmYWlsZWQgaW5vIDI2MSBydyAwLDAgc2VjdG9y IDB4MTJlMDA4IGxlbiA0MDk2IGVyciBubyAxMApbOTk2NzguNTUxMjA1XSBCVFJGUyB3YXJuaW5n IChkZXZpY2UgZG0tMCk6IGRpcmVjdCBJTyBmYWlsZWQgaW5vIDI2MSBydyAwLDAgc2VjdG9yIDB4 MTJlMDEwIGxlbiA0MDk2IGVyciBubyAxMApbOTk2NzguNTUxNDAxXSBCVFJGUzogZXJyb3IgKGRl dmljZSBkbS0wKSBpbiB3cml0ZV9hbGxfc3VwZXJzOjQxMTA6IGVycm5vPS01IElPIGZhaWx1cmUg KDEgZXJyb3JzIHdoaWxlIHdyaXRpbmcgc3VwZXJzKQpbOTk2NzguNTY1MTY5XSBCVFJGUzogZXJy b3IgKGRldmljZSBkbS0wKSBpbiBidHJmc19zeW5jX2xvZzozMzA4OiBlcnJubz0tNSBJTyBmYWls dXJlCls5OTY3OC41NjYxMzJdIGdlbmVyYWwgcHJvdGVjdGlvbiBmYXVsdCwgcHJvYmFibHkgZm9y IG5vbi1jYW5vbmljYWwgYWRkcmVzcyAweDZiNmI2YjZiNmI2YjZiNjg6IDAwMDAgWyMxXSBQUkVF TVBUIFNNUCBERUJVR19QQUdFQUxMT0MgUFRJCls5OTY3OC41Njc1MjZdIENQVTogMiBQSUQ6IDI0 NTg0NzEgQ29tbTogZnNzdHJlc3MgTm90IHRhaW50ZWQgNS4xMi4wLXJjNS1idHJmcy1uZXh0LTg0 ICMxCls5OTY3OC41Njg1MzFdIEhhcmR3YXJlIG5hbWU6IFFFTVUgU3RhbmRhcmQgUEMgKGk0NDBG WCArIFBJSVgsIDE5OTYpLCBCSU9TIHJlbC0xLjE0LjAtMC1nMTU1ODIxYTE5OTBiLXByZWJ1aWx0 LnFlbXUub3JnIDA0LzAxLzIwMTQKWzk5Njc4LjU2OTk4MF0gUklQOiAwMDEwOl9fbXV0ZXhfbG9j aysweDEzOS8weGE0MApbOTk2NzguNTcwNTU2XSBDb2RlOiBjMCA3NCAxOSAoLi4uKQpbOTk2Nzgu NTczNzUyXSBSU1A6IDAwMTg6ZmZmZjlmMTg4MzBkN2IwMCBFRkxBR1M6IDAwMDEwMjAyCls5OTY3 OC41NzQ3MjNdIFJBWDogNmI2YjZiNmI2YjZiNmI2OCBSQlg6IDAwMDAwMDAwMDAwMDAwMDEgUkNY OiAwMDAwMDAwMDAwMDAwMDAyCls5OTY3OC41NzYwMjddIFJEWDogZmZmZmZmZmZiOWM1NGQxMyBS U0k6IDAwMDAwMDAwMDAwMDAwMDAgUkRJOiAwMDAwMDAwMDAwMDAwMDAwCls5OTY3OC41NzczMTRd IFJCUDogZmZmZjlmMTg4MzBkN2JjMCBSMDg6IDAwMDAwMDAwMDAwMDAwMDAgUjA5OiAwMDAwMDAw MDAwMDAwMDAwCls5OTY3OC41Nzg2MDFdIFIxMDogZmZmZjlmMTg4MzBkN2JlMCBSMTE6IDAwMDAw MDAwMDAwMDAwMDEgUjEyOiBmZmZmOGM2Y2QxOTljMDQwCls5OTY3OC41Nzk4OTBdIFIxMzogZmZm ZjhjNmM5NTgyMTM1OCBSMTQ6IDAwMDAwMDAwZmZmZmZmZmIgUjE1OiBmZmZmOGM2Y2JjZjAxMzU4 Cls5OTY3OC41ODEyODJdIEZTOiAgMDAwMDdmYTkxNDBjMmI4MCgwMDAwKSBHUzpmZmZmOGM2ZmFj NjAwMDAwKDAwMDApIGtubEdTOjAwMDAwMDAwMDAwMDAwMDAKWzk5Njc4LjU4MjgxOF0gQ1M6ICAw MDEwIERTOiAwMDAwIEVTOiAwMDAwIENSMDogMDAwMDAwMDA4MDA1MDAzMwpbOTk2NzguNTgzNzcx XSBDUjI6IDAwMDA3ZmE5MTNkNTIwMDAgQ1IzOiAwMDAwMDAwMTNkMmI0MDAzIENSNDogMDAwMDAw MDAwMDM3MGVlMApbOTk2NzguNTg0NjAwXSBEUjA6IDAwMDAwMDAwMDAwMDAwMDAgRFIxOiAwMDAw MDAwMDAwMDAwMDAwIERSMjogMDAwMDAwMDAwMDAwMDAwMApbOTk2NzguNTg1NDI1XSBEUjM6IDAw MDAwMDAwMDAwMDAwMDAgRFI2OiAwMDAwMDAwMGZmZmUwZmYwIERSNzogMDAwMDAwMDAwMDAwMDQw MApbOTk2NzguNTg2MjQ3XSBDYWxsIFRyYWNlOgpbOTk2NzguNTg2NTQyXSAgPyBfX2J0cmZzX2hh bmRsZV9mc19lcnJvcisweGRlLzB4MTQ2IFtidHJmc10KWzk5Njc4LjU4NzI2MF0gID8gYnRyZnNf c3luY19sb2crMHg3YzEvMHhmMjAgW2J0cmZzXQpbOTk2NzguNTg3OTMwXSAgPyBidHJmc19zeW5j X2xvZysweDdjMS8weGYyMCBbYnRyZnNdCls5OTY3OC41ODg1NzNdICBidHJmc19zeW5jX2xvZysw eDdjMS8weGYyMCBbYnRyZnNdCls5OTY3OC41ODkyMjJdICBidHJmc19zeW5jX2ZpbGUrMHg0MGMv MHg1ODAgW2J0cmZzXQpbOTk2NzguNTg5OTQ3XSAgZG9fZnN5bmMrMHgzOC8weDcwCls5OTY3OC41 OTA1MTRdICBfX3g2NF9zeXNfZnN5bmMrMHgxMC8weDIwCls5OTY3OC41OTExOTZdICBkb19zeXNj YWxsXzY0KzB4MzMvMHg4MApbOTk2NzguNTkxODI5XSAgZW50cnlfU1lTQ0FMTF82NF9hZnRlcl9o d2ZyYW1lKzB4NDQvMHhhZQpbOTk2NzguNTkyNzQ0XSBSSVA6IDAwMzM6MHg3ZmE5MTQyYTU1YzMK Wzk5Njc4LjU5MzQwM10gQ29kZTogOGIgMTUgMDkgKC4uLikKWzk5Njc4LjU5Njc3N10gUlNQOiAw MDJiOjAwMDA3ZmZmMjYyNzhkNDggRUZMQUdTOiAwMDAwMDI0NiBPUklHX1JBWDogMDAwMDAwMDAw MDAwMDA0YQpbOTk2NzguNTk4MTQzXSBSQVg6IGZmZmZmZmZmZmZmZmZmZGEgUkJYOiAwMDAwNTYz YzgzY2I0NTYwIFJDWDogMDAwMDdmYTkxNDJhNTVjMwpbOTk2NzguNTk5NDUwXSBSRFg6IDAwMDA3 ZmZmMjYyNzhjYjAgUlNJOiAwMDAwN2ZmZjI2Mjc4Y2IwIFJESTogMDAwMDAwMDAwMDAwMDAwNQpb OTk2NzguNjAwNzcwXSBSQlA6IDAwMDAwMDAwMDAwMDAwMDUgUjA4OiAwMDAwMDAwMDAwMDAwMDAx IFIwOTogMDAwMDdmZmYyNjI3OGQ1YwpbOTk2NzguNjAyMDY3XSBSMTA6IDAwMDAwMDAwMDAwMDAw MDAgUjExOiAwMDAwMDAwMDAwMDAwMjQ2IFIxMjogMDAwMDAwMDAwMDAwMDM0MApbOTk2NzguNjAz MzgwXSBSMTM6IDAwMDA3ZmZmMjYyNzhkZTAgUjE0OiAwMDAwN2ZmZjI2Mjc4ZDk2IFIxNTogMDAw MDU2M2M4M2NhNTdjMApbOTk2NzguNjA0NzE0XSBNb2R1bGVzIGxpbmtlZCBpbjogYnRyZnMgZG1f emVybyBkbV9zbmFwc2hvdCBkbV90aGluX3Bvb2wgKC4uLikKWzk5Njc4LjYxNjY0Nl0gLS0tWyBl bmQgdHJhY2UgZWUyZjFiMTkzMjdkNzkxZCBdLS0tCgpUaGUgc3RlcHMgdGhhdCBsZWFkIHRvIHRo aXMgY3Jhc2ggYXJlIHRoZSBmb2xsb3dpbmc6CgoxKSBXZSBhcmUgYXQgdHJhbnNhY3Rpb24gTjsK CjIpIFdlIGhhdmUgdHdvIHRhc2tzIHdpdGggYSB0cmFuc2FjdGlvbiBoYW5kbGUgYXR0YWNoZWQg dG8gdHJhbnNhY3Rpb24gTi4KICAgVGFzayBBIGFuZCBUYXNrIEIuIFRhc2sgQiBpcyBkb2luZyBh biBmc3luYzsKCjMpIFRhc2sgQiBpcyBhdCBidHJmc19zeW5jX2xvZygpLCBhbmQgaGFzIHNhdmVk IGZzX2luZm8tPmxvZ19yb290X3RyZWUKICAgaW50byBhIGxvY2FsIHZhcmlhYmxlIG5hbWVkICds b2dfcm9vdF90cmVlJyBhdCB0aGUgdG9wIG9mCiAgIGJ0cmZzX3N5bmNfbG9nKCkuIFRhc2sgQiBp cyBhYm91dCB0byBjYWxsIHdyaXRlX2FsbF9zdXBlcnMoKSwgYnV0CiAgIGJlZm9yZSB0aGF0Li4u Cgo0KSBUYXNrIEEgY2FsbHMgYnRyZnNfY29tbWl0X3RyYW5zYWN0aW9uKCksIGFuZCBhZnRlciBp dCBzZXRzIHRoZQogICB0cmFuc2FjdGlvbiBzdGF0ZSB0byBUUkFOU19TVEFURV9DT01NSVRfU1RB UlQsIGFuIGVycm9yIGhhcHBlbnMgYmVmb3JlCiAgIGl0IHdhaXRzIGZvciB0aGUgdHJhbnNhY3Rp b24ncyAnbnVtX3dyaXRlcnMnIGNvdW50ZXIgdG8gcmVhY2ggYSB2YWx1ZQogICBvZiAxIChubyBv bmUgZWxzZSBhdHRhY2hlZCB0byB0aGUgdHJhbnNhY3Rpb24pLCBzbyBpdCBqdW1wcyB0byB0aGUK ICAgbGFiZWwgImNsZWFudXBfdHJhbnNhY3Rpb24iOwoKNSkgVGFzayBBIHRoZW4gY2FsbHMgY2xl YW51cF90cmFuc2FjdGlvbigpLCB3aGVyZSBpdCBhYm9ydHMgdGhlCiAgIHRyYW5zYWN0aW9uLCBz ZXR0aW5nIEJUUkZTX0ZTX1NUQVRFX1RSQU5TX0FCT1JURUQgb24gZnNfaW5mby0+ZnNfc3RhdGUs CiAgIHNldHRpbmcgdGhlIC0+YWJvcnRlZCBmaWVsZCBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIHRo ZSBoYW5kbGUgdG8gYW4KICAgZXJybm8gdmFsdWUgYW5kIGFsc28gc2V0dGluZyBCVFJGU19GU19T VEFURV9FUlJPUiBvbiBmc19pbmZvLT5mc19zdGF0ZS4KCiAgIEFmdGVyIHRoYXQsIGF0IGNsZWFu dXBfdHJhbnNhY3Rpb24oKSwgaXQgZGVsZXRlcyB0aGUgdHJhbnNhY3Rpb24gZnJvbQogICB0aGUg bGlzdCBvZiB0cmFuc2FjdGlvbnMgKGZzX2luZm8tPnRyYW5zX2xpc3QpLCBzZXRzIHRoZSB0cmFu c2FjdGlvbgogICB0byB0aGUgc3RhdGUgVFJBTlNfU1RBVEVfQ09NTUlUX0RPSU5HIGFuZCB0aGVu IHdhaXRzIGZvciB0aGUgbnVtYmVyCiAgIG9mIHdyaXRlcnMgdG8gZ28gZG93biB0byAxLCBhcyBp dCdzIGN1cnJlbnRseSAyICgxIGZvciB0YXNrIEEgYW5kIDEKICAgZm9yIHRhc2sgQik7Cgo2KSBU aGUgdHJhbnNhY3Rpb24ga3RocmVhZCBpcyBydW5uaW5nIGFuZCBzZWVzIHRoYXQgQlRSRlNfRlNf U1RBVEVfRVJST1IKICAgaXMgc2V0IGluIGZzX2luZm8tPmZzX3N0YXRlLCBzbyBpdCBjYWxscyBi dHJmc19jbGVhbnVwX3RyYW5zYWN0aW9uKCkuCgogICBUaGVyZSBpdCBzZWVzIHRoZSBsaXN0IGZz X2luZm8tPnRyYW5zX2xpc3QgaXMgZW1wdHksIGFuZCB0aGVuIHByb2NlZWRzCiAgIGludG8gY2Fs bGluZyBidHJmc19kcm9wX2FsbF9sb2dzKCksIHdoaWNoIGZyZWVzIHRoZSBsb2cgcm9vdCB0cmVl IHdpdGgKICAgYSBjYWxsIHRvIGJ0cmZzX2ZyZWVfbG9nX3Jvb3RfdHJlZSgpOwoKNykgVGFzayBC IGNhbGxzIHdyaXRlX2FsbF9zdXBlcnMoKSBhbmQsIHNob3J0bHkgYWZ0ZXIsIHVuZGVyIHRoZSBs YWJlbAogICAnb3V0X3dha2VfbG9nX3Jvb3QnLCBpdCBkZWZlcmVuY2VzIHRoZSBwb2ludGVyIHN0 b3JlZCBpbgogICAnbG9nX3Jvb3RfdHJlZScsIHdoaWNoIHdhcyBhbHJlYWR5IGZyZWVkIGluIHRo ZSBwcmV2aW91cyBzdGVwIGJ5IHRoZQogICB0cmFuc2FjdGlvbiBrdGhyZWFkLiBUaGlzIHJlc3Vs dHMgaW4gYSB1c2UtYWZ0ZXItZnJlZSBsZWFkaW5nIHRvIGEKICAgY3Jhc2guCgpGaXggdGhpcyBi eSBkZWxldGluZyB0aGUgdHJhbnNhY3Rpb24gZnJvbSB0aGUgbGlzdCBvZiB0cmFuc2FjdGlvbnMg YXQKY2xlYW51cF90cmFuc2FjdGlvbigpIG9ubHkgYWZ0ZXIgc2V0dGluZyB0aGUgdHJhbnNhY3Rp b24gc3RhdGUgdG8KVFJBTlNfU1RBVEVfQ09NTUlUX0RPSU5HIGFuZCB3YWl0aW5nIGZvciBhbGwg ZXhpc3RpbmcgdGFza3MgdGhhdCBhcmUKYXR0YWNoZWQgdG8gdGhlIHRyYW5zYWN0aW9uIHRvIHJl bGVhc2UgdGhlaXIgdHJhbnNhY3Rpb24gaGFuZGxlcy4KVGhpcyBtYWtlcyB0aGUgdHJhbnNhY3Rp b24ga3RocmVhZCB3YWl0IGZvciBhbGwgdGhlIHRhc2tzIGF0dGFjaGVkIHRvCnRoZSB0cmFuc2Fj dGlvbiB0byBiZSBkb25lIHdpdGggdGhlIHRyYW5zYWN0aW9uIGJlZm9yZSBkcm9wcGluZyB0aGUK bG9nIHJvb3RzIGFuZCBkb2luZyBvdGhlciBjbGVhbnVwcy4KCkZpeGVzOiBlZjY3OTYzZGFjMjU1 YiAoImJ0cmZzOiBkcm9wIGxvZ3Mgd2hlbiB3ZSd2ZSBhYm9ydGVkIGEgdHJhbnNhY3Rpb24iKQpT aWduZWQtb2ZmLWJ5OiBGaWxpcGUgTWFuYW5hIDxmZG1hbmFuYUBzdXNlLmNvbT4KLS0tCiBmcy9i dHJmcy90cmFuc2FjdGlvbi5jIHwgMTIgKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMTEg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3RyYW5z YWN0aW9uLmMgYi9mcy9idHJmcy90cmFuc2FjdGlvbi5jCmluZGV4IGFjZmY2YmIuLjNmMmM0ZWUg MTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3RyYW5zYWN0aW9uLmMKKysrIGIvZnMvYnRyZnMvdHJhbnNh Y3Rpb24uYwpAQCAtMTk2MSw3ICsxOTYxLDYgQEAgc3RhdGljIHZvaWQgY2xlYW51cF90cmFuc2Fj dGlvbihzdHJ1Y3QgYnRyZnNfdHJhbnNfaGFuZGxlICp0cmFucywgaW50IGVycikKIAkgKi8KIAlC VUdfT04obGlzdF9lbXB0eSgmY3VyX3RyYW5zLT5saXN0KSk7CiAKLQlsaXN0X2RlbF9pbml0KCZj dXJfdHJhbnMtPmxpc3QpOwogCWlmIChjdXJfdHJhbnMgPT0gZnNfaW5mby0+cnVubmluZ190cmFu c2FjdGlvbikgewogCQljdXJfdHJhbnMtPnN0YXRlID0gVFJBTlNfU1RBVEVfQ09NTUlUX0RPSU5H OwogCQlzcGluX3VubG9jaygmZnNfaW5mby0+dHJhbnNfbG9jayk7CkBAIC0xOTcwLDYgKzE5Njks MTcgQEAgc3RhdGljIHZvaWQgY2xlYW51cF90cmFuc2FjdGlvbihzdHJ1Y3QgYnRyZnNfdHJhbnNf aGFuZGxlICp0cmFucywgaW50IGVycikKIAogCQlzcGluX2xvY2soJmZzX2luZm8tPnRyYW5zX2xv Y2spOwogCX0KKworCS8qCisJICogTm93IHRoYXQgd2Uga25vdyBubyBvbmUgZWxzZSBpcyBzdGls bCB1c2luZyB0aGUgdHJhbnNhY3Rpb24gd2UgY2FuCisJICogcmVtb3ZlIHRoZSB0cmFuc2FjdGlv biBmcm9tIHRoZSBsaXN0IG9mIHRyYW5zYWN0aW9ucy4gVGhpcyBhdm9pZHMKKwkgKiB0aGUgdHJh bnNhY3Rpb24ga3RocmVhZCBmcm9tIGNsZWFuaW5nIHVwIHRoZSB0cmFuc2FjdGlvbiB3aGlsZSBz b21lCisJICogb3RoZXIgdGFzayBpcyBzdGlsbCB1c2luZyBpdCwgd2hpY2ggY291bGQgcmVzdWx0 IGluIGEgdXNlLWFmdGVyLWZyZWUKKwkgKiBvbiB0aGluZ3MgbGlrZSBsb2cgdHJlZXMsIGFzIGl0 IGZvcmNlcyB0aGUgdHJhbnNhY3Rpb24ga3RocmVhZCB0bworCSAqIHdhaXQgZm9yIHRoaXMgdHJh bnNhY3Rpb24gdG8gYmUgY2xlYW5lZCB1cCBieSB1cy4KKwkgKi8KKwlsaXN0X2RlbF9pbml0KCZj dXJfdHJhbnMtPmxpc3QpOworCiAJc3Bpbl91bmxvY2soJmZzX2luZm8tPnRyYW5zX2xvY2spOwog CiAJYnRyZnNfY2xlYW51cF9vbmVfdHJhbnNhY3Rpb24odHJhbnMtPnRyYW5zYWN0aW9uLCBmc19p bmZvKTsKLS0gCjIuMzAuMgoKRnJvbSA2ZGQwYTU0MTBmMTI0MDYwYmMxOWQ3N2YxMDIzY2VmZWMz MTAyYWFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxpcGUgTWFuYW5hIDxmZG1h bmFuYUBzdXNlLmNvbT4KRGF0ZTogVHVlLCAyMyBNYXIgMjAyMSAxODozOTo0OSArMDAwMApTdWJq ZWN0OiBbUEFUQ0hdIGJ0cmZzOiBtYWtlIHJlZmxpbmtzIHJlc3BlY3QgT19TWU5DIE9fRFNZTkMg YW5kIFNfU1lOQyBmbGFncwoKSWYgd2UgcmVmbGluayB0byBvciBmcm9tIGEgZmlsZSBvcGVuZWQg d2l0aCBPX1NZTkMvT19EU1lOQyBvciB0by9mcm9tIGEKZmlsZSB0aGF0IGhhcyB0aGUgU19TWU5D IGF0dHJpYnV0ZSBzZXQsIHdlIHRvdGFsbHkgaWdub3JlIHRoYXQgYW5kIGRvIG5vdApkdXJhYmx5 IHBlcnNpc3QgdGhlIHJlZmxpbmsgY2hhbmdlcy4gU2luY2UgYSByZWZsaW5rIGNhbiBjaGFuZ2Ug dGhlIGRhdGEKcmVhZGFibGUgZnJvbSBhIGZpbGUgKGFuZCBtdGltZS9jdGltZSwgb3IgYSBmaWxl IHNpemUpLCBpdCBtYWtlcyBzZW5zZSB0bwpkdXJhYmx5IHBlcnNpc3QgKGZzeW5jKSB0aGUgc291 cmNlIGFuZCBkZXN0aW5hdGlvbiBmaWxlcy9yYW5nZXMuCgpUaGlzIHdhcyBwcmV2aW91c2x5IGRp c2N1c3NlZCBhdDoKCmh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LWJ0cmZzLzIwMjAwOTAz MDM1MjI1LkdKNjA5MEBtYWdub2xpYS8KClRoZSByZWNlbnRseSBpbnRyb2R1Y2VkIHRlc3QgY2Fz ZSBnZW5lcmljLzYyOCwgZnJvbSBmc3Rlc3RzLCBleGVyY2lzZXMKdGhlc2Ugc2NlbmFyaW9zIGFu ZCBjdXJyZW50bHkgZmFpbHMgd2l0aG91dCB0aGlzIGNoYW5nZS4KClNvIG1ha2Ugc3VyZSB3ZSBm c3luYyB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBmaWxlcy9yYW5nZXMgd2hlbiBlaXRoZXIK b2YgdGhlbSB3YXMgb3BlbmVkIHdpdGggT19TWU5DL09fRFNZTkMgb3IgaGFzIHRoZSBTX1NZTkMg YXR0cmlidXRlIHNldCwKanVzdCBsaWtlIFhGUyBhbHJlYWR5IGRvZXMuCgpTaWduZWQtb2ZmLWJ5 OiBGaWxpcGUgTWFuYW5hIDxmZG1hbmFuYUBzdXNlLmNvbT4KLS0tCiBmcy9idHJmcy9yZWZsaW5r LmMgfCAyNCArKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvcmVmbGluay5jIGIvZnMvYnRyZnMvcmVm bGluay5jCmluZGV4IDc3ODZjNDkuLjg5ZDU0M2YgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL3JlZmxp bmsuYworKysgYi9mcy9idHJmcy9yZWZsaW5rLmMKQEAgLTgzNCw2ICs4MzQsMTYgQEAgc3RhdGlj IGludCBidHJmc19yZW1hcF9maWxlX3JhbmdlX3ByZXAoc3RydWN0IGZpbGUgKmZpbGVfaW4sIGxv ZmZfdCBwb3NfaW4sCiAJCQkJCSAgICBsZW4sIHJlbWFwX2ZsYWdzKTsKIH0KIAorc3RhdGljIGJv b2wgZmlsZV9zeW5jX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlKQoreworCWlmIChmaWxlLT5mX2Zs YWdzICYgKF9fT19TWU5DIHwgT19EU1lOQykpCisJCXJldHVybiB0cnVlOworCWlmIChJU19TWU5D KGZpbGVfaW5vZGUoZmlsZSkpKQorCQlyZXR1cm4gdHJ1ZTsKKworCXJldHVybiBmYWxzZTsKK30K KwogbG9mZl90IGJ0cmZzX3JlbWFwX2ZpbGVfcmFuZ2Uoc3RydWN0IGZpbGUgKnNyY19maWxlLCBs b2ZmX3Qgb2ZmLAogCQlzdHJ1Y3QgZmlsZSAqZHN0X2ZpbGUsIGxvZmZfdCBkZXN0b2ZmLCBsb2Zm X3QgbGVuLAogCQl1bnNpZ25lZCBpbnQgcmVtYXBfZmxhZ3MpCkBAIC04NzEsNSArODgxLDE5IEBA IG91dF91bmxvY2s6CiAJCXVubG9ja190d29fbm9uZGlyZWN0b3JpZXMoc3JjX2lub2RlLCBkc3Rf aW5vZGUpOwogCX0KIAorCS8qCisJICogSWYgZWl0aGVyIHRoZSBzb3VyY2Ugb3IgdGhlIGRlc3Rp bmF0aW9uIGZpbGUgd2FzIG9wZW5lZCB3aXRoIE9fU1lOQywKKwkgKiBPX0RTWU5DIG9yIGhhcyB0 aGUgU19TWU5DIGF0dHJpYnV0ZSwgZnN5bmMgYm90aCB0aGUgZGVzdGluYXRpb24gYW5kCisJICog c291cmNlIGZpbGVzL3Jhbmdlcywgc28gdGhhdCBhZnRlciBhIHN1Y2Nlc3NmdWwgcmV0dXJuICgw KSBmb2xsb3dlZAorCSAqIGJ5IGEgcG93ZXIgZmFpbHVyZSByZXN1bHRzIGluIHRoZSByZWZsaW5r ZWQgZGF0YSB0byBiZSByZWFkYWJsZSBmcm9tCisJICogYm90aCBmaWxlcy9yYW5nZXMuCisJICov CisJaWYgKHJldCA9PSAwICYmIGxlbiA+IDAgJiYgKGZpbGVfc3luY193cml0ZShzcmNfZmlsZSkg fHwgZmlsZV9zeW5jX3dyaXRlKGRzdF9maWxlKSkpIHsKKwkJcmV0ID0gYnRyZnNfc3luY19maWxl KHNyY19maWxlLCBvZmYsIG9mZiArIGxlbiAtIDEsIDApOworCQlpZiAocmV0ID09IDApCisJCQly ZXQgPSBidHJmc19zeW5jX2ZpbGUoZHN0X2ZpbGUsIGRlc3RvZmYsCisJCQkJCSAgICAgIGRlc3Rv ZmYgKyBsZW4gLSAxLCAwKTsKKwl9CisKIAlyZXR1cm4gcmV0IDwgMCA/IHJldCA6IGxlbjsKIH0K LS0gCjIuMzAuMgoKRnJvbSA0MzBhMjIxNTliMTZjZjdiY2MzNGVjNTMzOWYwMjU1Nzg2NDViNTVh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCb3JpcyBCdXJrb3YgPGJvcmlzQGJ1ci5p bz4KRGF0ZTogVHVlLCA2IEFwciAyMDIxIDE1OjMxOjE4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g YnRyZnM6IHJldHVybiB3aG9sZSBleHRlbnRzIGluIGZpZW1hcAoKYHhmc19pbyAtYyAnZmllbWFw IDxvZmY+IDxsZW4+JyA8ZmlsZT5gCmNhbiBnaXZlIHN1cnByaXNpbmcgcmVzdWx0cyBvbiBidHJm cyB0aGF0IGRpZmZlciBmcm9tIHhmcy4KCmJ0cmZzIHNwaXRzIG91dCBleHRlbnRzIHRyaW1tZWQg dG8gZml0IHRoZSB1c2VyIGlucHV0LiBJZiB0aGUgdXNlcidzCmZpZW1hcCByZXF1ZXN0IGhhcyBh biBvZmZzZXQsIHRoZW4gcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGVhY2ggd2hvbGUKZXh0ZW50IHdo aWNoIGludGVyc2VjdHMgdGhhdCByYW5nZSwgd2UgYWxzbyB0cmltIHRoZSBzdGFydCBleHRlbnQg dG8gbm90CmhhdmUgc3RhcnQgPCBvZmYuCgpEb2N1bWVudGF0aW9uIGluIGZpbGVzeXN0ZW1zL2Zp ZW1hcC50eHQgYW5kIHRoZSB4ZnNfaW8gbWFuIHBhZ2Ugc3VnZ2VzdHMKdGhhdCByZXR1cm5pbmcg dGhlIHdob2xlIGV4dGVudCBpcyBleHBlY3RlZC4KClNvbWUgY2FzZXMgd2hpY2ggYWxsIHlpZWxk IHRoZSBzYW1lIGZpZW1hcCBpbiB4ZnMsIGJ1dCBub3QgYnRyZnM6CmRkIGlmPS9kZXYvemVybyBv Zj0kZiBicz00ayBjb3VudD0xCnN1ZG8geGZzX2lvIC1jICdmaWVtYXAgMCAxMDI0JyAkZgogIDA6 IFswLi43XTogMjY2MjQuLjI2NjMxCnN1ZG8geGZzX2lvIC1jICdmaWVtYXAgMjA0OCAxMDI0JyAk ZgogIDA6IFs0Li43XTogMjY2MjguLjI2NjMxCnN1ZG8geGZzX2lvIC1jICdmaWVtYXAgMjA0OCA0 MDk2JyAkZgogIDA6IFs0Li43XTogMjY2MjguLjI2NjMxCnN1ZG8geGZzX2lvIC1jICdmaWVtYXAg MzU4NCA1MTInICRmCiAgMDogWzcuLjddOiAyNjYzMS4uMjY2MzEKc3VkbyB4ZnNfaW8gLWMgJ2Zp ZW1hcCA0MDkxIDUnICRmCiAgMDogWzcuLjZdOiAyNjYzMS4uMjY2MzAKCkkgYmVsaWV2ZSB0aGlz IGlzIGEgY29uc2VxdWVuY2Ugb2YgdGhlIGxvZ2ljIGZvciBtZXJnaW5nIGNvbnRpZ3VvdXMKZXh0 ZW50cyByZXByZXNlbnRlZCBieSBzZXBhcmF0ZSBleHRlbnQgaXRlbXMuIFRoYXQgbG9naWMgbmVl ZHMgdG8gdHJhY2sKdGhlIGxhc3Qgb2Zmc2V0IGFzIGl0IGxvb3BzIHRocm91Z2ggdGhlIGV4dGVu dCBpdGVtcywgd2hpY2ggaGFwcGVucyB0bwpwaWNrIHVwIHRoZSBzdGFydCBvZmZzZXQgb24gdGhl IGZpcnN0IGl0ZXJhdGlvbiwgYW5kIHRyaW0gb2ZmIHRoZQpiZWdpbm5pbmcgb2YgdGhlIGZ1bGwg ZXh0ZW50LiBUbyBmaXggaXQsIHN0YXJ0IGBvZmZgIGF0IDAgcmF0aGVyIHRoYW4KYHN0YXJ0YCBz byB0aGF0IHdlIGtlZXAgdGhlIGl0ZXJhdGlvbi9tZXJnaW5nIGludGFjdCB3aXRob3V0IGN1dHRp bmcgb2ZmCnRoZSBzdGFydCBvZiB0aGUgZXh0ZW50LgoKYWZ0ZXIgdGhlIGZpeCwgYWxsIHRoZSBh Ym92ZSBjb21tYW5kcyBnaXZlOgowOiBbMC4uN106IDI2NjI0Li4yNjYzMQoKVGhlIG1lcmdpbmcg bG9naWMgaXMgZXhlcmNpc2VkIGJ5IHhmc3Rlc3QgZ2VuZXJpYy80ODMsIGFuZCBJIGhhdmUKd3Jp dHRlbiBhIG5ldyB4ZnN0ZXN0IGZvciBjaGVja2luZyB3ZSBkb24ndCBoYXZlIGJhY2t3YXJkcyBv cgp6ZXJvLWxlbmd0aCBmaWVtYXBzIGZvciBjYXNlcyBsaWtlIHRob3NlIGFib3ZlLgoKU2lnbmVk LW9mZi1ieTogQm9yaXMgQnVya292IDxib3Jpc0BidXIuaW8+Ci0tLQogZnMvYnRyZnMvZXh0ZW50 X2lvLmMgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24o LSkKCmRpZmYgLS1naXQgYS9mcy9idHJmcy9leHRlbnRfaW8uYyBiL2ZzL2J0cmZzL2V4dGVudF9p by5jCmluZGV4IDkxMDc2OWQuLjUwYzhlMzQgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2V4dGVudF9p by5jCisrKyBiL2ZzL2J0cmZzL2V4dGVudF9pby5jCkBAIC00OTc1LDcgKzQ5NzUsNyBAQCBpbnQg ZXh0ZW50X2ZpZW1hcChzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmllbWFwX2V4 dGVudF9pbmZvICpmaWVpbmZvLAogCQkgIHU2NCBzdGFydCwgdTY0IGxlbikKIHsKIAlpbnQgcmV0 ID0gMDsKLQl1NjQgb2ZmID0gc3RhcnQ7CisJdTY0IG9mZiA9IDA7CiAJdTY0IG1heCA9IHN0YXJ0 ICsgbGVuOwogCXUzMiBmbGFncyA9IDA7CiAJdTMyIGZvdW5kX3R5cGU7Ci0tIAoyLjMwLjIKCkZy b20gYWQyMjQ2OWYwZWFmM2FhNDAwZDZjNzc5N2IzNTRiNDFjMWJmODJlYyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogSm9zZWYgQmFjaWsgPGpvc2VmQHRveGljcGFuZGEuY29tPgpEYXRl OiBXZWQsIDI0IE1hciAyMDIxIDA5OjQ0OjIxIC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gYnRyZnM6 IHVzZSBwZXJjcHVfcmVhZF9wb3NpdGl2ZSBpbnN0ZWFkIG9mIHN1bV9wb3NpdGl2ZSBmb3IKIG5l ZWRfcHJlZW1wdAoKTG9va2luZyBhdCBwZXJmIGRhdGEgZm9yIGEgZmlvIHdvcmtsb2FkIEkgbm90 aWNlZCB0aGF0IHdlIHdlcmUgc3BlbmRpbmcKYSBwcmV0dHkgbGFyZ2UgY2h1bmsgb2YgdGltZSAo YXJvdW5kIDUlKSBkb2luZyBwZXJjcHVfY291bnRlcl9zdW0oKSBpbgpuZWVkX3ByZWVtcHRpdmVf cmVjbGFpbS4gIFRoaXMgaXMgc2lsbHksIGFzIHdlIG9ubHkgd2FudCB0byBrbm93IGlmIHdlCmhh dmUgbW9yZSBvcmRlcmVkIHRoYW4gZGVsYWxsb2MgdG8gc2VlIGlmIHdlIHNob3VsZCBiZSBjb3Vu dGluZyB0aGUKZGVsYXllZCBpdGVtcyBpbiBvdXIgdGhyZXNob2xkIGNhbGN1bGF0aW9uLiAgQ2hh bmdlIHRoaXMgdG8KcGVyY3B1X3JlYWRfcG9zaXRpdmUoKSB0byBhdm9pZCB0aGUgb3ZlcmhlYWQu CgpJIHJhbiB0aGlzIHRocm91Z2ggZnNwZXJmIHRvIHZhbGlkYXRlIHRoZSBjaGFuZ2VzLCBvYnZp b3VzbHkgdGhlIGxhdGVuY3kKbnVtYmVycyBpbiBkYmVuY2ggYW5kIGZpbyBhcmUgcXVpdGUgaml0 dGVyeSwgc28gdGFrZSB0aGVtIGFzIHlvdSB3aXNoLApidXQgb3ZlcmFsbCB0aGUgaW1wcm92ZW1l bnRzIG9uIHRocm91Z2hwdXQsIGlvcHMsIGFuZCBidyBhcmUgYWxsCnBvc2l0aXZlLiAgRWFjaCB0 ZXN0IHdhcyBydW4gdHdvIHRpbWVzLCB0aGUgZ2l2ZW4gdmFsdWUgaXMgdGhlIGF2ZXJhZ2UKb2Yg Ym90aCBydW5zIGZvciB0aGVpciByZXNwZWN0aXZlIGNvbHVtbi4KCmJ0cmZzIHNzZCBub3JtYWwg dGVzdCByZXN1bHRzCgpidWZmZXJlZHJhbmR3cml0ZTE2ZyByZXN1bHRzCiAgICAgbWV0cmljICAg ICAgICAgYmFzZWxpbmUgICBjdXJyZW50ICAgICAgICAgIGRpZmYKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQp3cml0ZV9pb19rYnl0ZXMg ICAgIDE2Nzc3MjE2ICAgMTY3NzcyMTYgICAgIDAuMDAlCnJlYWRfY2xhdF9uc19wOTkgICAgICAg ICAgIDAgICAgICAgICAgMCAgICAgMC4wMCUKd3JpdGVfYndfYnl0ZXMgICAgICAxLjA0ZSswOCAg IDEuMDVlKzA4ICAgICAxLjEyJQpyZWFkX2lvcHMgICAgICAgICAgICAgICAgICAwICAgICAgICAg IDAgICAgIDAuMDAlCndyaXRlX2NsYXRfbnNfcDUwICAgICAgMTM4ODggICAgICAxMTg0MCAgIC0x NC43NSUKcmVhZF9pb19rYnl0ZXMgICAgICAgICAgICAgMCAgICAgICAgICAwICAgICAwLjAwJQpy ZWFkX2lvX2J5dGVzICAgICAgICAgICAgICAwICAgICAgICAgIDAgICAgIDAuMDAlCndyaXRlX2Ns YXRfbnNfcDk5ICAgICAgMzUwMDggICAgICAyOTMxMiAgIC0xNi4yNyUKcmVhZF9id19ieXRlcyAg ICAgICAgICAgICAgMCAgICAgICAgICAwICAgICAwLjAwJQplbGFwc2VkICAgICAgICAgICAgICAg ICAgMTcwICAgICAgICAxNjcgICAgLTEuNzYlCndyaXRlX2xhdF9uc19taW4gICAgIDQyMjEuNTAg ICAgMzc2Mi41MCAgIC0xMC44NyUKc3lzX2NwdSAgICAgICAgICAgICAgICAzOS42NSAgICAgIDM1 LjM3ICAgLTEwLjc5JQp3cml0ZV9sYXRfbnNfbWF4ICAgIDIuNjdlKzEwICAgMi41MGUrMTAgICAg LTYuNjMlCnJlYWRfbGF0X25zX21pbiAgICAgICAgICAgIDAgICAgICAgICAgMCAgICAgMC4wMCUK d3JpdGVfaW9wcyAgICAgICAgICAyNTI3MC4xMCAgIDI1NTUzLjQzICAgICAxLjEyJQpyZWFkX2xh dF9uc19tYXggICAgICAgICAgICAwICAgICAgICAgIDAgICAgIDAuMDAlCnJlYWRfY2xhdF9uc19w NTAgICAgICAgICAgIDAgICAgICAgICAgMCAgICAgMC4wMCUKCmRiZW5jaDYwIHJlc3VsdHMKICBt ZXRyaWMgICAgIGJhc2VsaW5lICAgY3VycmVudCAgICAgICAgIGRpZmYKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KcXBhdGhpbmZvICAgICAgIDExLjEy ICAgICAxMi43MyAgICAxNC41MiUKdGhyb3VnaHB1dCAgICAgNDE2LjA5ICAgIDQ0NS42NiAgICAg Ny4xMSUKZmx1c2ggICAgICAgICAzNDg1LjYzICAgMTg4Ny41NSAgIC00NS44NSUKcWZpbGVpbmZv ICAgICAgICAwLjcwICAgICAgMS45MiAgIDE3My44NiUKbnRjcmVhdGV4ICAgICAgOTkyLjYwICAg IDY5NS43NiAgIC0yOS45MSUKcWZzaW5mbyAgICAgICAgICAyLjQzICAgICAgMy43MSAgICA1Mi40 OCUKY2xvc2UgICAgICAgICAgICAxLjY3ICAgICAgMy4xNCAgICA4OC4wOSUKc2ZpbGVpbmZvICAg ICAgIDY2LjU0ICAgIDEwNS4yMCAgICA1OC4xMCUKcmVuYW1lICAgICAgICAgODA5LjIzICAgIDYx OS41OSAgIC0yMy40MyUKZmluZCAgICAgICAgICAgIDE2Ljg4ICAgICAxNS40NiAgICAtOC40MSUK dW5saW5rICAgICAgICAgODIwLjU0ICAgIDY3MC44NiAgIC0xOC4yNCUKd3JpdGV4ICAgICAgICAz Mzc1LjIwICAgMjYzNy45MSAgIC0yMS44NCUKZGVsdHJlZSAgICAgICAgMzg2LjMzICAgIDQ0OS45 OCAgICAxNi40OCUKcmVhZHggICAgICAgICAgICAzLjQzICAgICAgMy40MSAgICAtMC42MCUKbWtk aXIgICAgICAgICAgICAwLjA1ICAgICAgMC4wMyAgIC0zOC40NiUKbG9ja3ggICAgICAgICAgICAw LjI2ICAgICAgMC4yNiAgICAtMC43NiUKdW5sb2NreCAgICAgICAgICAwLjgxICAgICAgMC4zMiAg IC02MC4zMyUKCmRpbzRrYnMxNnRocmVhZHMgcmVzdWx0cwogICAgIG1ldHJpYyAgICAgICAgICBi YXNlbGluZSAgICAgICBjdXJyZW50ICAgICAgICAgICBkaWZmCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0Kd3JpdGVfaW9fa2J5 dGVzICAgICAgICAgNTI0OTY3NiAgICAgICAzMzU3MTUwICAgLTM2LjA1JQpyZWFkX2NsYXRfbnNf cDk5ICAgICAgICAgICAgICAwICAgICAgICAgICAgIDAgICAgIDAuMDAlCndyaXRlX2J3X2J5dGVz ICAgICAgODk1ODM1MDEuNTAgICA1NzI5MTE5Mi41MCAgIC0zNi4wNSUKcmVhZF9pb3BzICAgICAg ICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAwICAgICAwLjAwJQp3cml0ZV9jbGF0X25zX3A1 MCAgICAgICAgMjQyNjg4ICAgICAgICAyNjM2ODAgICAgIDguNjUlCnJlYWRfaW9fa2J5dGVzICAg ICAgICAgICAgICAgIDAgICAgICAgICAgICAgMCAgICAgMC4wMCUKcmVhZF9pb19ieXRlcyAgICAg ICAgICAgICAgICAgMCAgICAgICAgICAgICAwICAgICAwLjAwJQp3cml0ZV9jbGF0X25zX3A5OSAg ICAgIDE1ODI2OTQ0ICAgICAgMzY3MzI5MjggICAxMzIuMDklCnJlYWRfYndfYnl0ZXMgICAgICAg ICAgICAgICAgIDAgICAgICAgICAgICAgMCAgICAgMC4wMCUKZWxhcHNlZCAgICAgICAgICAgICAg ICAgICAgICA2MSAgICAgICAgICAgIDYxICAgICAwLjAwJQp3cml0ZV9sYXRfbnNfbWluICAgICAg ICAgIDQyNzA0ICAgICAgICAgNDIwOTUgICAgLTEuNDMlCnN5c19jcHUgICAgICAgICAgICAgICAg ICAgIDUuMjcgICAgICAgICAgMy40NSAgIC0zNC41MiUKd3JpdGVfbGF0X25zX21heCAgICAgICA3 LjQzZSswOCAgICAgIDkuMjdlKzA4ICAgIDI0LjcxJQpyZWFkX2xhdF9uc19taW4gICAgICAgICAg ICAgICAwICAgICAgICAgICAgIDAgICAgIDAuMDAlCndyaXRlX2lvcHMgICAgICAgICAgICAgMjE4 NzAuOTcgICAgICAxMzk4Ny4xMSAgIC0zNi4wNSUKcmVhZF9sYXRfbnNfbWF4ICAgICAgICAgICAg ICAgMCAgICAgICAgICAgICAwICAgICAwLjAwJQpyZWFkX2NsYXRfbnNfcDUwICAgICAgICAgICAg ICAwICAgICAgICAgICAgIDAgICAgIDAuMDAlCgpyYW5kd3JpdGUyeHJhbSByZXN1bHRzCiAgICAg bWV0cmljICAgICAgICAgIGJhc2VsaW5lICAgICAgIGN1cnJlbnQgICAgICAgICAgIGRpZmYKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQp3cml0ZV9pb19rYnl0ZXMgICAgICAgIDI0ODMxOTcyICAgICAgMjg4NzYyNjIgICAgMTYu MjklCnJlYWRfY2xhdF9uc19wOTkgICAgICAgICAgICAgIDAgICAgICAgICAgICAgMCAgICAgMC4w MCUKd3JpdGVfYndfYnl0ZXMgICAgICA4Mzc0NTI3My41MCAgIDkyMTgyMTkyLjUwICAgIDEwLjA3 JQpyZWFkX2lvcHMgICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgIDAgICAgIDAuMDAl CndyaXRlX2NsYXRfbnNfcDUwICAgICAgICAgMTM5NTIgICAgICAgICAxMTY0OCAgIC0xNi41MSUK cmVhZF9pb19rYnl0ZXMgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAwICAgICAwLjAwJQpy ZWFkX2lvX2J5dGVzICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgIDAgICAgIDAuMDAlCndy aXRlX2NsYXRfbnNfcDk5ICAgICAgICAgNTAxNzYgICAgICAgICA1Mjk5MiAgICAgNS42MSUKcmVh ZF9id19ieXRlcyAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAwICAgICAwLjAwJQplbGFw c2VkICAgICAgICAgICAgICAgICAgICAgMzE0ICAgICAgICAgICAzMzIgICAgIDUuNzMlCndyaXRl X2xhdF9uc19taW4gICAgICAgIDU5MjAuNTAgICAgICAgICAgNTEyNyAgIC0xMy40MCUKc3lzX2Nw dSAgICAgICAgICAgICAgICAgICAgNy44MiAgICAgICAgICA3LjM1ICAgIC02LjA3JQp3cml0ZV9s YXRfbnNfbWF4ICAgICAgIDUuMjdlKzEwICAgICAgMy44OGUrMTAgICAtMjYuNDQlCnJlYWRfbGF0 X25zX21pbiAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgMCAgICAgMC4wMCUKd3JpdGVfaW9w cyAgICAgICAgICAgICAyMDQ0NS42MiAgICAgIDIyNTA1LjQyICAgIDEwLjA3JQpyZWFkX2xhdF9u c19tYXggICAgICAgICAgICAgICAwICAgICAgICAgICAgIDAgICAgIDAuMDAlCnJlYWRfY2xhdF9u c19wNTAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgMCAgICAgMC4wMCUKCnVudGFyZmlyZWZv eCByZXN1bHRzCm1ldHJpYyAgICBiYXNlbGluZSAgIGN1cnJlbnQgICAgICAgIGRpZmYKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQplbGFwc2VkICAgICAgNDcu NDEgICAgIDQ3LjQwICAgLTAuMDMlCgpTaWduZWQtb2ZmLWJ5OiBKb3NlZiBCYWNpayA8am9zZWZA dG94aWNwYW5kYS5jb20+Ci0tLQogZnMvYnRyZnMvc3BhY2UtaW5mby5jIHwgNCArKy0tCiAxIGZp bGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2ZzL2J0cmZzL3NwYWNlLWluZm8uYyBiL2ZzL2J0cmZzL3NwYWNlLWluZm8uYwppbmRleCAyZGE2 MTc3Li4yZGM2NzRiIDEwMDY0NAotLS0gYS9mcy9idHJmcy9zcGFjZS1pbmZvLmMKKysrIGIvZnMv YnRyZnMvc3BhY2UtaW5mby5jCkBAIC04NjEsOCArODYxLDggQEAgc3RhdGljIGJvb2wgbmVlZF9w cmVlbXB0aXZlX3JlY2xhaW0oc3RydWN0IGJ0cmZzX2ZzX2luZm8gKmZzX2luZm8sCiAJICogb2Yg aGVhdnkgRElPIG9yIG9yZGVyZWQgcmVzZXJ2YXRpb25zLCBwcmVlbXB0aXZlIGZsdXNoaW5nIHdp bGwganVzdAogCSAqIHdhc3RlIHRpbWUgYW5kIGNhdXNlIHVzIHRvIHNsb3cgZG93bi4KIAkgKi8K LQlvcmRlcmVkID0gcGVyY3B1X2NvdW50ZXJfc3VtX3Bvc2l0aXZlKCZmc19pbmZvLT5vcmRlcmVk X2J5dGVzKTsKLQlkZWxhbGxvYyA9IHBlcmNwdV9jb3VudGVyX3N1bV9wb3NpdGl2ZSgmZnNfaW5m by0+ZGVsYWxsb2NfYnl0ZXMpOworCW9yZGVyZWQgPSBwZXJjcHVfY291bnRlcl9yZWFkX3Bvc2l0 aXZlKCZmc19pbmZvLT5vcmRlcmVkX2J5dGVzKTsKKwlkZWxhbGxvYyA9IHBlcmNwdV9jb3VudGVy X3JlYWRfcG9zaXRpdmUoJmZzX2luZm8tPmRlbGFsbG9jX2J5dGVzKTsKIAlpZiAob3JkZXJlZCA+ PSBkZWxhbGxvYykKIAkJdXNlZCArPSBmc19pbmZvLT5kZWxheWVkX3JlZnNfcnN2LnJlc2VydmVk ICsKIAkJCWZzX2luZm8tPmRlbGF5ZWRfYmxvY2tfcnN2LnJlc2VydmVkOwotLSAKMi4zMC4yCgpG cm9tIDhjNzg5ODI3MDg0ZjQxMzBjZmRhNzU0ODMzZTQ0ZWUwMjczNWQ2NjEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206IE5hb2hpcm8gQW90YSA8bmFvaGlyby5hb3RhQHdkYy5jb20+CkRh dGU6IFdlZCwgMjQgTWFyIDIwMjEgMjM6MjM6MTEgKzA5MDAKU3ViamVjdDogW1BBVENIXSBidHJm czogem9uZWQ6IG1vdmUgbG9nIHRyZWUgbm9kZSBhbGxvY2F0aW9uIG91dCBvZgogbG9nX3Jvb3Rf dHJlZS0+bG9nX211dGV4CgpDb21taXQgNmUzN2QyNDU5OTQxICgiYnRyZnM6IHpvbmVkOiBmaXgg ZGVhZGxvY2sgb24gbG9nIHN5bmMiKSBwb2ludGVkIG91dAphIGRlYWRsb2NrIHdhcm5pbmcgYW5k IHJlbW92ZWQKbXV0ZXhfe2xvY2ssdW5sb2NrfSgmZnNfaW5mby0+dHJlZV9yb290LT5sb2dfbXV0 ZXgpLiBXaGlsZSBpdCBsb29rcyBsaWtlIGl0CmFsd2F5cyBjYXVzZSBhIGRlYWRsb2NrLCB3ZSBk aWRuJ3Qgc2VlIGFjdHVhbCBkZWFkbG9jayBpbiBmc3Rlc3RzIHJ1bnMuIFRoZQpyZWFzb24gaXMg bG9nX3Jvb3RfdHJlZS0+bG9nX211dGV4ICE9IGZzX2luZm8tPnRyZWVfcm9vdC0+bG9nX211dGV4 LCBub3QKdGFraW5nIHRoZSBzYW1lIGxvY2suIFNvLCB0aGUgd2FybmluZyB3YXMgYWN0dWFsbHkg YSBmYWxzZS1wb3NpdGl2ZS4KClNpbmNlIGJ0cmZzX2FsbG9jX2xvZ190cmVlX25vZGUoKSBpcyBw cm90ZWN0ZWQgb25seSBieQpmc19pbmZvLT50cmVlX3Jvb3QtPmxvZ19tdXRleCwgd2UgY2FuIChh bmQgc2hvdWxkKSBtb3ZlIHRoZSBjb2RlIG91dCBvZiB0aGUKbG9jayBzY29wZSBvZiBsb2dfcm9v dF90cmVlLT5sb2dfbXV0ZXggYW5kIHNpbGVuY2UgdGhlIHdhcm5pbmcuCgpDYzogRmlsaXBlIE1h bmFuYSA8ZmRtYW5hbmFAc3VzZS5jb20+CkNjOiBKb2hhbm5lcyBUaHVtc2hpcm4gPGpvaGFubmVz LnRodW1zaGlybkB3ZGMuY29tPgpTaWduZWQtb2ZmLWJ5OiBOYW9oaXJvIEFvdGEgPG5hb2hpcm8u YW90YUB3ZGMuY29tPgotLS0KIGZzL2J0cmZzL3RyZWUtbG9nLmMgfCAxMiArKysrKysrLS0tLS0K IDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZnMvYnRyZnMvdHJlZS1sb2cuYyBiL2ZzL2J0cmZzL3RyZWUtbG9nLmMKaW5kZXggOTJh MzY4Ni4uNzJjNGI2NiAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvdHJlZS1sb2cuYworKysgYi9mcy9i dHJmcy90cmVlLWxvZy5jCkBAIC0zMTY1LDIwICszMTY1LDIyIEBAIGludCBidHJmc19zeW5jX2xv ZyhzdHJ1Y3QgYnRyZnNfdHJhbnNfaGFuZGxlICp0cmFucywKIAkgKi8KIAltdXRleF91bmxvY2so JnJvb3QtPmxvZ19tdXRleCk7CiAKLQlidHJmc19pbml0X2xvZ19jdHgoJnJvb3RfbG9nX2N0eCwg TlVMTCk7Ci0KLQltdXRleF9sb2NrKCZsb2dfcm9vdF90cmVlLT5sb2dfbXV0ZXgpOwotCiAJaWYg KGJ0cmZzX2lzX3pvbmVkKGZzX2luZm8pKSB7CisJCW11dGV4X2xvY2soJmZzX2luZm8tPnRyZWVf cm9vdC0+bG9nX211dGV4KTsKIAkJaWYgKCFsb2dfcm9vdF90cmVlLT5ub2RlKSB7CiAJCQlyZXQg PSBidHJmc19hbGxvY19sb2dfdHJlZV9ub2RlKHRyYW5zLCBsb2dfcm9vdF90cmVlKTsKIAkJCWlm IChyZXQpIHsKLQkJCQltdXRleF91bmxvY2soJmxvZ19yb290X3RyZWUtPmxvZ19tdXRleCk7CisJ CQkJbXV0ZXhfdW5sb2NrKCZmc19pbmZvLT50cmVlX2xvZ19tdXRleCk7CiAJCQkJZ290byBvdXQ7 CiAJCQl9CiAJCX0KKwkJbXV0ZXhfdW5sb2NrKCZmc19pbmZvLT50cmVlX3Jvb3QtPmxvZ19tdXRl eCk7CiAJfQogCisJYnRyZnNfaW5pdF9sb2dfY3R4KCZyb290X2xvZ19jdHgsIE5VTEwpOworCisJ bXV0ZXhfbG9jaygmbG9nX3Jvb3RfdHJlZS0+bG9nX211dGV4KTsKKwogCWluZGV4MiA9IGxvZ19y b290X3RyZWUtPmxvZ190cmFuc2lkICUgMjsKIAlsaXN0X2FkZF90YWlsKCZyb290X2xvZ19jdHgu bGlzdCwgJmxvZ19yb290X3RyZWUtPmxvZ19jdHhzW2luZGV4Ml0pOwogCXJvb3RfbG9nX2N0eC5s b2dfdHJhbnNpZCA9IGxvZ19yb290X3RyZWUtPmxvZ190cmFuc2lkOwotLSAKMi4zMC4yCgpGcm9t IDM4NDU1MzRiM2E4NjVlMjk4ZDc5YjkyYTBmYzg4MjY1NzZjMjgwZTkgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IEZpbGlwZSBNYW5hbmEgPGZkbWFuYW5hQHN1c2UuY29tPgpEYXRlOiBX ZWQsIDMxIE1hciAyMDIxIDExOjU1OjUwICswMTAwClN1YmplY3Q6IFtQQVRDSF0gYnRyZnM6IGZp eCBleGhhdXN0aW9uIG9mIHRoZSBzeXN0ZW0gY2h1bmsgYXJyYXkgZHVlIHRvCiBjb25jdXJyZW50 IGFsbG9jYXRpb25zCgpXaGVuIHdlIGFyZSBydW5uaW5nIG91dCBvZiBzcGFjZSBmb3IgdXBkYXRp bmcgdGhlIGNodW5rIHRyZWUsIHRoYXQgaXMsCndoZW4gd2UgYXJlIGxvdyBvbiBhdmFpbGFibGUg c3BhY2UgaW4gdGhlIHN5c3RlbSBzcGFjZSBpbmZvLCBpZiB3ZSBoYXZlCm1hbnkgdGFzayBjb25j dXJyZW50bHkgYWxsb2NhdGluZyBibG9jayBncm91cHMsIHZpYSBmYWxsb2NhdGUgZm9yIGV4YW1w bGUsCm1hbnkgb2YgdGhlbSBjYW4gZW5kIHVwIGFsbCBhbGxvY2F0aW5nIG5ldyBzeXN0ZW0gY2h1 bmtzIHdoZW4gb25seSBvbmUgaXMKbmVlZGVkLiBJbiBleHRyZW1lIGNhc2VzIHRoaXMgY2FuIGxl YWQgdG8gZXhoYXVzdGlvbiBvZiB0aGUgc3lzdGVtIGNodW5rCmFycmF5LCB3aGljaCBoYXMgYSBz aXplIGxpbWl0IG9mIDIwNDggYnl0ZXMsIGFuZCByZXN1bHRzIGluIGEgdHJhbnNhY3Rpb24KYWJv cnQgd2l0aCBlcnJubyAtRUZCSUcsIHByb2R1Y2luZyBhIHRyYWNlIGluIGRtZXNnIGxpa2UgdGhl IGZvbGxvd2luZywKd2hpY2ggd2FzIHRyaWdnZXJlZCBvbiBhIFBvd2VyUEMgbWFjaGluZSB3aXRo IGEgbm9kZS9sZWFmIHNpemUgb2YgNjRLOgoKWyAxMzU5LjUxODg5OV0gLS0tLS0tLS0tLS0tWyBj dXQgaGVyZSBdLS0tLS0tLS0tLS0tClsgMTM1OS41MTg5ODBdIEJUUkZTOiBUcmFuc2FjdGlvbiBh Ym9ydGVkIChlcnJvciAtMjcpClsgMTM1OS41MTkxMzVdIFdBUk5JTkc6IENQVTogMyBQSUQ6IDE2 NDYzIGF0IC4uL2ZzL2J0cmZzL2Jsb2NrLWdyb3VwLmM6MTk2OCBidHJmc19jcmVhdGVfcGVuZGlu Z19ibG9ja19ncm91cHMrMHgzNDAvMHgzYzAgW2J0cmZzXQpbIDEzNTkuNTE5MTUyXSBNb2R1bGVz IGxpbmtlZCBpbjogKC4uLikKWyAxMzU5LjUxOTIzOV0gU3VwcG9ydGVkOiBZZXMsIEV4dGVybmFs ClsgMTM1OS41MTkyNTJdIENQVTogMyBQSUQ6IDE2NDYzIENvbW06IHN0cmVzcy1uZyBUYWludGVk OiBHICAgICAgICAgICAgICAgWCAgICA1LjMuMTgtNDctZGVmYXVsdCAjMSBTTEUxNS1TUDMKWyAx MzU5LjUxOTI3NF0gTklQOiAgYzAwODAwMDAwMGUzNmZlOCBMUjogYzAwODAwMDAwMGUzNmZlNCBD VFI6IDAwMDAwMDAwMDA2ZGU4ZTgKWyAxMzU5LjUxOTI5M10gUkVHUzogYzAwMDAwMDU2ODkwYjcw MCBUUkFQOiAwNzAwICAgVGFpbnRlZDogRyAgICAgICAgICAgICAgIFggICAgICg1LjMuMTgtNDct ZGVmYXVsdCkKWyAxMzU5LjUxOTMxN10gTVNSOiAgODAwMDAwMDAwMjgyYjAzMyA8U0YsVkVDLFZT WCxFRSxGUCxNRSxJUixEUixSSSxMRT4gIENSOiA0ODAwODIyMiAgWEVSOiAwMDAwMDAwNwpbIDEz NTkuNTE5MzU2XSBDRkFSOiBjMDAwMDAwMDAwMTNlMTcwIElSUU1BU0s6IDAKWyAxMzU5LjUxOTM1 Nl0gR1BSMDA6IGMwMDgwMDAwMDBlMzZmZTQgYzAwMDAwMDU2ODkwYjk5MCBjMDA4MDAwMDAwZTgz MjAwIDAwMDAwMDAwMDAwMDAwMjYKWyAxMzU5LjUxOTM1Nl0gR1BSMDQ6IDAwMDAwMDAwMDAwMDAw MDAgMDAwMDAwMDAwMDAwMDAwMCAwMDAwZDUyYTNiMDI3NjUxIDAwMDAwMDAwMDAwMDAwMDcKWyAx MzU5LjUxOTM1Nl0gR1BSMDg6IDAwMDAwMDAwMDAwMDAwMDMgMDAwMDAwMDAwMDAwMDAwMSAwMDAw MDAwMDAwMDAwMDA3IDAwMDAwMDAwMDAwMDAwMDAKWyAxMzU5LjUxOTM1Nl0gR1BSMTI6IDAwMDAw MDAwMDAwMDgwMDAgYzAwMDAwMDYzZmU0NDYwMCAwMDAwMDAwMDEwMTVlMDI4IDAwMDAwMDAwMTAx NWRmZDAKWyAxMzU5LjUxOTM1Nl0gR1BSMTY6IDAwMDAwMDAwMDAwMDQwNGYgMDAwMDAwMDAwMDAw MDAwMSAwMDAwMDAwMDAwMDEwMDAwIDAwMDBkZDFlMjg3YWZmZmYKWyAxMzU5LjUxOTM1Nl0gR1BS MjA6IDAwMDAwMDAwMDAwMDAwMDEgYzAwMDAwMDYzN2M5YTAwMCBmZmZmZmZmZmZmZmZmZmU1IDAw MDAwMDAwMDAwMDAwMDAKWyAxMzU5LjUxOTM1Nl0gR1BSMjQ6IDAwMDAwMDAwMDAwMDAwMDQgMDAw MDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMTAwIGZmZmZmZmZmZmZmZmZmYzAKWyAxMzU5LjUx OTM1Nl0gR1BSMjg6IGMwMDAwMDA2MzdjOWEwMDAgYzAwMDAwMDYzMGUwOTIzMCBjMDAwMDAwNjMw ZTA5MWQ4IGMwMDAwMDA1NjIxODhiMDgKWyAxMzU5LjUxOTU2MV0gTklQIFtjMDA4MDAwMDAwZTM2 ZmU4XSBidHJmc19jcmVhdGVfcGVuZGluZ19ibG9ja19ncm91cHMrMHgzNDAvMHgzYzAgW2J0cmZz XQpbIDEzNTkuNTE5NjEzXSBMUiBbYzAwODAwMDAwMGUzNmZlNF0gYnRyZnNfY3JlYXRlX3BlbmRp bmdfYmxvY2tfZ3JvdXBzKzB4MzNjLzB4M2MwIFtidHJmc10KWyAxMzU5LjUxOTYyNl0gQ2FsbCBU cmFjZToKWyAxMzU5LjUxOTY3MV0gW2MwMDAwMDA1Njg5MGI5OTBdIFtjMDA4MDAwMDAwZTM2ZmU0 XSBidHJmc19jcmVhdGVfcGVuZGluZ19ibG9ja19ncm91cHMrMHgzM2MvMHgzYzAgW2J0cmZzXSAo dW5yZWxpYWJsZSkKWyAxMzU5LjUxOTcyOV0gW2MwMDAwMDA1Njg5MGJhOTBdIFtjMDA4MDAwMDAw ZDY4ZDQ0XSBfX2J0cmZzX2VuZF90cmFuc2FjdGlvbisweGJjLzB4MmYwIFtidHJmc10KWyAxMzU5 LjUxOTc4Ml0gW2MwMDAwMDA1Njg5MGJhZTBdIFtjMDA4MDAwMDAwZTMwOWFjXSBidHJmc19hbGxv Y19kYXRhX2NodW5rX29uZGVtYW5kKzB4MTU0LzB4NjEwIFtidHJmc10KWyAxMzU5LjUxOTg0NF0g W2MwMDAwMDA1Njg5MGJiYTBdIFtjMDA4MDAwMDAwZDhhMGZjXSBidHJmc19mYWxsb2NhdGUrMHhl NC8weDEwZTAgW2J0cmZzXQpbIDEzNTkuNTE5ODkxXSBbYzAwMDAwMDU2ODkwYmQwMF0gW2MwMDAw MDAwMDA0YTIzYjRdIHZmc19mYWxsb2NhdGUrMHgxNzQvMHgzNTAKWyAxMzU5LjUxOTkyOV0gW2Mw MDAwMDA1Njg5MGJkNTBdIFtjMDAwMDAwMDAwNGEzY2Y4XSBrc3lzX2ZhbGxvY2F0ZSsweDY4LzB4 ZjAKWyAxMzU5LjUxOTk1N10gW2MwMDAwMDA1Njg5MGJkYTBdIFtjMDAwMDAwMDAwNGEzZGE4XSBz eXNfZmFsbG9jYXRlKzB4MjgvMHg0MApbIDEzNTkuNTE5OTg4XSBbYzAwMDAwMDU2ODkwYmRjMF0g W2MwMDAwMDAwMDAwMzg5NjhdIHN5c3RlbV9jYWxsX2V4Y2VwdGlvbisweGU4LzB4MTcwClsgMTM1 OS41MjAwMjFdIFtjMDAwMDAwNTY4OTBiZTIwXSBbYzAwMDAwMDAwMDAwY2I3MF0gc3lzdGVtX2Nh bGxfY29tbW9uKzB4ZjAvMHgyNzgKWyAxMzU5LjUyMDAzN10gSW5zdHJ1Y3Rpb24gZHVtcDoKWyAx MzU5LjUyMDA0OV0gN2QwMDQ5YWQgNDBjMmZmZjQgN2MwMDA0YWMgNzE0OTAwMDQgNDA4MjAwMjQg MmY4M2ZmZmIgNDE5ZTAwNDggM2M2MjAwMDAKWyAxMzU5LjUyMDA4Ml0gZTg2M2JjYjggN2VjNGIz NzggNDgwMTBkOTEgZTg0MTAwMTggPDBmZTAwMDAwPiAzYzgyMDAwMCBlODg0YmNjOCA3ZWM2YjM3 OApbIDEzNTkuNTIwMTIyXSAtLS1bIGVuZCB0cmFjZSBkNmMxODZlMTUxMDIyZTIwIF0tLS0KClRo ZSBmb2xsb3dpbmcgc3RlcHMgZXhwbGFpbiBob3cgd2UgY2FuIGVuZCB1cCBpbiB0aGlzIHNpdHVh dGlvbjoKCjEpIFRhc2sgQSBpcyBhdCBjaGVja19zeXN0ZW1fY2h1bmsoKSwgZWl0aGVyIGJlY2F1 c2UgaXQgaXMgYWxsb2NhdGluZyBhCiAgIG5ldyBkYXRhIG9yIG1ldGFkYXRhIGJsb2NrIGdyb3Vw LCBhdCBidHJmc19jaHVua19hbGxvYygpLCBvciBiZWNhdXNlCiAgIGl0IGlzIHJlbW92aW5nIGEg YmxvY2sgZ3JvdXAgb3IgdHVybmluZyBhIGJsb2NrIGdyb3VwIFJPLiBJdCBkb2VzIG5vdAogICBt YXR0ZXIgd2h5OwoKMikgVGFzayBBIHNlZXMgdGhhdCB0aGVyZSBpcyBub3QgZW5vdWdoIGZyZWUg c3BhY2UgaW4gdGhlIHN5c3RlbQogICBzcGFjZV9pbmZvIG9iamVjdCwgdGhhdCBpcyAnbGVmdCcg aXMgPCAndGhyZXNoJy4gQW5kIGF0IHRoaXMgcG9pbnQKICAgdGhlIHN5c3RlbSBzcGFjZV9pbmZv IGhhcyBhIHZhbHVlIG9mIDAgZm9yIGl0cyAnYnl0ZXNfbWF5X3VzZScKICAgY291bnRlcjsKCjMp IEFzIGEgY29uc2VxdWVuY2UgdGFzayBBIGNhbGxzIGJ0cmZzX2FsbG9jX2NodW5rKCkgaW4gb3Jk ZXIgdG8gYWxsb2NhdGUKICAgYSBuZXcgc3lzdGVtIGJsb2NrIGdyb3VwIChjaHVuaykgYW5kIHRo ZW4gcmVzZXJ2ZXMgJ3RocmVzaCcgYnl0ZXMgaW4KICAgdGhlIGNodW5rIGJsb2NrIHJlc2VydmUg d2l0aCB0aGUgY2FsbCB0byBidHJmc19ibG9ja19yc3ZfYWRkKCkuIFRoaXMKICAgY2hhbmdlcyB0 aGUgY2h1bmsgYmxvY2sgcmVzZXJ2ZSdzICdyZXNlcnZlZCcgYW5kICdzaXplJyBjb3VudGVycyBi eSBhbgogICBhbW91bnQgb2YgJ3RocmVzaCcsIGFuZCBjaGFuZ2VzIHRoZSAnYnl0ZXNfbWF5X3Vz ZScgY291bnRlciBvZiB0aGUKICAgc3lzdGVtIHNwYWNlX2luZm8gb2JqZWN0IGZyb20gMCB0byAn dGhyZXNoJy4KCiAgIEFsc28gZHVyaW5nIGl0cyBjYWxsIHRvIGJ0cmZzX2FsbG9jX2NodW5rKCks IHdlIGVuZCB1cCBpbmNyZWFzaW5nIHRoZQogICB2YWx1ZSBvZiB0aGUgJ3RvdGFsX2J5dGVzJyBj b3VudGVyIG9mIHRoZSBzeXN0ZW0gc3BhY2VfaW5mbyBvYmplY3QgYnkKICAgOE1pQiAodGhlIHNp emUgb2YgYSBzeXN0ZW0gY2h1bmsgc3RyaXBlKS4gVGhpcyBoYXBwZW5zIHRocm91Z2ggdGhlCiAg IGNhbGwgY2hhaW46CgogICBidHJmc19hbGxvY19jaHVuaygpCiAgICAgICBjcmVhdGVfY2h1bmso KQogICAgICAgICAgIGJ0cmZzX21ha2VfYmxvY2tfZ3JvdXAoKQogICAgICAgICAgICAgICBidHJm c191cGRhdGVfc3BhY2VfaW5mbygpCgo0KSBBZnRlciBpdCBmaW5pc2hlcyB0aGUgZmlyc3QgcGhh c2Ugb2YgdGhlIGJsb2NrIGdyb3VwIGFsbG9jYXRpb24sIGF0CiAgIGJ0cmZzX2NodW5rX2FsbG9j KCksIHRhc2sgQSB1bmxvY2tzIHRoZSBjaHVuayBtdXRleDsKCjUpIEF0IHRoaXMgcG9pbnQgdGhl IG5ldyBzeXN0ZW0gYmxvY2sgZ3JvdXAgd2FzIGFkZGVkIHRvIHRoZSB0cmFuc2FjdGlvbgogICBo YW5kbGUncyBsaXN0IG9mIG5ldyBibG9jayBncm91cHMsIGJ1dCBpdHMgYmxvY2sgZ3JvdXAgaXRl bSwgZGV2aWNlCiAgIGl0ZW1zIGFuZCBjaHVuayBpdGVtIHdlcmUgbm90IHlldCBpbnNlcnRlZCBp biB0aGUgZXh0ZW50LCBkZXZpY2UgYW5kCiAgIGNodW5rIHRyZWVzLCByZXNwZWN0aXZlbHkuIFRo YXQgb25seSBoYXBwZW5zIGxhdGVyIHdoZW4gd2UgY2FsbAogICBidHJmc19maW5pc2hfY2h1bmtf YWxsb2MoKSB0aHJvdWdoIGEgY2FsbCB0bwogICBidHJmc19jcmVhdGVfcGVuZGluZ19ibG9ja19n cm91cHMoKTsKCiAgIE5vdGUgdGhhdCBvbmx5IHdoZW4gd2UgdXBkYXRlIHRoZSBjaHVuayB0cmVl LCB0aHJvdWdoIHRoZSBjYWxsIHRvCiAgIGJ0cmZzX2ZpbmlzaF9jaHVua19hbGxvYygpLCB3ZSBk ZWNyZW1lbnQgdGhlICdyZXNlcnZlZCcgY291bnRlcgogICBvZiB0aGUgY2h1bmsgYmxvY2sgcmVz ZXJ2ZSBhcyB3ZSBDT1cvYWxsb2NhdGUgZXh0ZW50IGJ1ZmZlcnMsCiAgIHRocm91Z2g6CgogICBi dHJmc19hbGxvY190cmVlX2Jsb2NrKCkKICAgICAgYnRyZnNfdXNlX2Jsb2NrX3JzdigpCiAgICAg ICAgIGJ0cmZzX2Jsb2NrX3Jzdl91c2VfYnl0ZXMoKQoKICAgQW5kIHRoZSBzeXN0ZW0gc3BhY2Vf aW5mbydzICdieXRlc19tYXlfdXNlJyBpcyBkZWNyZW1lbnRlZCBldmVyeXRpbWUKICAgd2UgYWxs b2NhdGUgYW4gZXh0ZW50IGJ1ZmZlciBmb3IgQ09XIG9wZXJhdGlvbnMgb24gdGhlIGNodW5rIHRy ZWUsCiAgIHRocm91Z2g6CgogICBidHJmc19hbGxvY190cmVlX2Jsb2NrKCkKICAgICAgYnRyZnNf cmVzZXJ2ZV9leHRlbnQoKQogICAgICAgICBmaW5kX2ZyZWVfZXh0ZW50KCkKICAgICAgICAgICAg YnRyZnNfYWRkX3Jlc2VydmVkX2J5dGVzKCkKCiAgIElmIHdlIGVuZCB1cCBDT1dpbmcgbGVzcyBj aHVuayBidHJlZSBub2Rlcy9sZWF2ZXMgdGhhbiBleHBlY3RlZCwgd2hpY2gKICAgaXMgdGhlIHR5 cGljYWwgY2FzZSBzaW5jZSB0aGUgYW1vdW50IG9mIHNwYWNlIHdlIHJlc2VydmUgaXMgYWx3YXlz CiAgIHBlc3NpbWlzdGljIHRvIGFjY291bnQgZm9yIHRoZSB3b3JzdCBwb3NzaWJsZSBjYXNlLCB3 ZSByZWxlYXNlIHRoZQogICB1bnVzZWQgc3BhY2UgdGhyb3VnaDoKCiAgIGJ0cmZzX2NyZWF0ZV9w ZW5kaW5nX2Jsb2NrX2dyb3VwcygpCiAgICAgIGJ0cmZzX3RyYW5zX3JlbGVhc2VfY2h1bmtfbWV0 YWRhdGEoKQogICAgICAgICBidHJmc19ibG9ja19yc3ZfcmVsZWFzZSgpCiAgICAgICAgICAgIGJs b2NrX3Jzdl9yZWxlYXNlX2J5dGVzKCkKICAgICAgICAgICAgICAgIGJ0cmZzX3NwYWNlX2luZm9f ZnJlZV9ieXRlc19tYXlfdXNlKCkKCiAgIEJ1dCBiZWZvcmUgdGFzayBBIGdldHMgaW50byBidHJm c19jcmVhdGVfcGVuZGluZ19ibG9ja19ncm91cHMoKS4uLgoKNikgTWFueSBvdGhlciB0YXNrcyBz dGFydCBhbGxvY2F0aW5nIG5ldyBibG9jayBncm91cHMgdGhyb3VnaCBmYWxsb2NhdGUsCiAgIGVh Y2ggb25lIGRvZXMgdGhlIGZpcnN0IHBoYXNlIG9mIGJsb2NrIGdyb3VwIGFsbG9jYXRpb24gaW4g YQogICBzZXJpYWxpemVkIHdheSwgc2luY2UgYnRyZnNfY2h1bmtfYWxsb2MoKSB0YWtlcyB0aGUg Y2h1bmsgbXV0ZXgKICAgYmVmb3JlIGNhbGxpbmcgY2hlY2tfc3lzdGVtX2NodW5rKCkgYW5kIGJ0 cmZzX2FsbG9jX2NodW5rKCkuCgogICBIb3dldmVyIGJlZm9yZSBldmVyeW9uZSBlbnRlcnMgdGhl IGZpbmFsIHBoYXNlIG9mIHRoZSBibG9jayBncm91cAogICBhbGxvY2F0aW9uLCB0aGF0IGlzLCBi ZWZvcmUgY2FsbGluZyBidHJmc19jcmVhdGVfcGVuZGluZ19ibG9ja19ncm91cHMoKSwKICAgbmV3 IHRhc2tzIGtlZXAgY29taW5nIHRvIGFsbG9jYXRlIG5ldyBibG9jayBncm91cHMgYW5kIHdoaWxl IGF0CiAgIGNoZWNrX3N5c3RlbV9jaHVuaygpLCB0aGUgc3lzdGVtIHNwYWNlX2luZm8ncyAnYnl0 ZXNfbWF5X3VzZScga2VlcHMKICAgaW5jcmVhc2luZyBlYWNoIHRpbWUgYSB0YXNrIHJlc2VydmVz IHNwYWNlIGluIHRoZSBjaHVuayBibG9jayByZXNlcnZlLgogICBUaGlzIG1lYW5zIHRoYXQgZXZl bnR1YWxseSBzb21lIG90aGVyIHRhc2sgY2FuIGVuZCB1cCBub3Qgc2VlaW5nIGVub3VnaAogICBm cmVlIHNwYWNlIGluIHRoZSBzeXN0ZW0gc3BhY2VfaW5mbyBhbmQgZGVjaWRlIHRvIGFsbG9jYXRl IHlldCBhbm90aGVyCiAgIHN5c3RlbSBjaHVuay4KCiAgIFRoaXMgbWF5IHJlcGVhdCBzZXZlcmFs IHRpbWVzIGlmIHlldCBtb3JlIG5ldyB0YXNrcyBrZWVwIGFsbG9jYXRpbmcKICAgbmV3IGJsb2Nr IGdyb3VwcyBiZWZvcmUgdGFzayBBLCBhbmQgYWxsIHRoZSBvdGhlciB0YXNrcywgZmluaXNoIHRo ZQogICBjcmVhdGlvbiBvZiB0aGUgcGVuZGluZyBibG9jayBncm91cHMsIHdoaWNoIGlzIHdoZW4g cmVzZXJ2ZWQgc3BhY2UKICAgaW4gZXhjZXNzIGlzIHJlbGVhc2VkLiBFdmVudHVhbGx5IHRoaXMg Y2FuIHJlc3VsdCBpbiBleGhhdXN0aW9uIG9mCiAgIHN5c3RlbSBjaHVuayBhcnJheSBpbiB0aGUg c3VwZXJibG9jaywgd2l0aCBidHJmc19hZGRfc3lzdGVtX2NodW5rKCkKICAgcmV0dXJuaW5nIC1F RkJJRywgcmVzdWx0aW5nIGxhdGVyIGluIGEgdHJhbnNhY3Rpb24gYWJvcnQuCgogICBFdmVuIHdo ZW4gd2UgZG9uJ3QgcmVhY2ggdGhlIGV4dHJlbWUgY2FzZSBvZiBleGhhdXN0aW5nIHRoZSBzeXN0 ZW0KICAgYXJyYXksIG1vc3QsIGlmIG5vdCBhbGwsIHVubmVjZXNzYXJpbHkgY3JlYXRlZCBzeXN0 ZW0gYmxvY2sgZ3JvdXBzCiAgIGVuZCB1cCBiZWluZyB1bnVzZWQgc2luY2Ugd2hlbiBmaW5pc2hp bmcgY3JlYXRpb24gb2YgdGhlIGZpcnN0CiAgIHBlbmRpbmcgc3lzdGVtIGJsb2NrIGdyb3VwLCB0 aGUgY3JlYXRpb24gb2YgdGhlIGZvbGxvd2luZyBvbmVzIGVuZAogICB1cCBub3QgbmVlZGluZyB0 byBDT1cgbm9kZXMvbGVhdmVzIG9mIHRoZSBjaHVuayB0cmVlLCBzbyB3ZSBuZXZlcgogICBhbGxv Y2F0ZSBhbmQgZGVhbGxvY2F0ZSBmcm9tIHRoZW0sIHJlc3VsdGluZyBpbiB0aGVtIG5ldmVyIGJl aW5nCiAgIGFkZGVkIHRvIHRoZSBsaXN0IG9mIHVudXNlZCBibG9jayBncm91cHMgLSBhcyBhIGNv bnNlcXVlbmNlIHRoZXkKICAgZG9uJ3QgZ2V0IGRlbGV0ZWQgYnkgdGhlIGNsZWFuZXIga3RocmVh ZCAtIHRoZSBvbmx5IGV4Y2VwdGlvbnMgYXJlCiAgIGlmIHdlIHVubW91bnQgYW5kIG1vdW50IHRo ZSBmaWxlc3lzdGVtIGFnYWluLCB3aGljaCBhZGRzIGFueSB1bnVzZWQKICAgYmxvY2sgZ3JvdXBz IHRvIHRoZSBsaXN0IG9mIHVudXNlZCBibG9jayBncm91cHMsIGlmIGEgc2NydWIgaXMKICAgcnVu LCB3aGljaCBhbHNvIGFkZHMgdW51c2VkIGJsb2NrIGdyb3VwcyB0byB0aGUgdW51c2VkIGxpc3Qs IGFuZAogICB1bmRlciBzb21lIGNpcmN1bXN0YW5jZXMgd2hlbiB1c2luZyBhIHpvbmVkIGZpbGVz eXN0ZW0gb3IgYXN5bmMKICAgZGlzY2FyZCwgd2hpY2ggbWF5IGFsc28gYWRkIHVudXNlZCBibG9j ayBncm91cHMgdG8gdGhlIHVudXNlZCBsaXN0LgoKU28gZml4IHRoaXMgYnk6CgoqKSBUcmFja2lu ZyB0aGUgbnVtYmVyIG9mIHJlc2VydmVkIGJ5dGVzIGZvciB0aGUgY2h1bmsgdHJlZSBwZXIKICAg dHJhbnNhY3Rpb24sIHdoaWNoIGlzIHRoZSBzdW0gb2YgcmVzZXJ2ZWQgY2h1bmsgYnl0ZXMgYnkg ZWFjaAogICB0cmFuc2FjdGlvbiBoYW5kbGUgY3VycmVudGx5IGJlaW5nIHVzZWQ7CgoqKSBXaGVu IHRoZXJlIGlzIG5vdCBlbm91Z2ggZnJlZSBzcGFjZSBpbiB0aGUgc3lzdGVtIHNwYWNlX2luZm8s CiAgIGlmIHRoZXJlIGFyZSBvdGhlciB0cmFuc2FjdGlvbiBoYW5kbGVzIHdoaWNoIHJlc2VydmVk IGNodW5rIHNwYWNlLAogICB3YWl0IGZvciBzb21lIG9mIHRoZW0gdG8gY29tcGxldGUgaW4gb3Jk ZXIgdG8gaGF2ZSBlbm91Z2ggZXhjZXNzCiAgIHJlc2VydmVkIHNwYWNlIHJlbGVhc2VkLCBhbmQg dGhlbiB0cnkgYWdhaW4uIE90aGVyd2lzZSBwcm9jZWVkIHdpdGgKICAgdGhlIGNyZWF0aW9uIG9m IGEgbmV3IHN5c3RlbSBjaHVuay4KClNpZ25lZC1vZmYtYnk6IEZpbGlwZSBNYW5hbmEgPGZkbWFu YW5hQHN1c2UuY29tPgotLS0KIGZzL2J0cmZzL2Jsb2NrLWdyb3VwLmMgfCA1OCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGZzL2J0cmZzL3RyYW5zYWN0aW9uLmMg fCAgNSArKysrCiBmcy9idHJmcy90cmFuc2FjdGlvbi5oIHwgIDcgKysrKysKIDMgZmlsZXMgY2hh bmdlZCwgNjkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2ZzL2J0 cmZzL2Jsb2NrLWdyb3VwLmMgYi9mcy9idHJmcy9ibG9jay1ncm91cC5jCmluZGV4IDc0NGI5OWQu LmE3ZDllMTQgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2Jsb2NrLWdyb3VwLmMKKysrIGIvZnMvYnRy ZnMvYmxvY2stZ3JvdXAuYwpAQCAtMzI2OSw2ICszMjY5LDcgQEAgc3RhdGljIHU2NCBnZXRfcHJv ZmlsZV9udW1fZGV2cyhzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbywgdTY0IHR5cGUpCiAg Ki8KIHZvaWQgY2hlY2tfc3lzdGVtX2NodW5rKHN0cnVjdCBidHJmc190cmFuc19oYW5kbGUgKnRy YW5zLCB1NjQgdHlwZSkKIHsKKwlzdHJ1Y3QgYnRyZnNfdHJhbnNhY3Rpb24gKmN1cl90cmFucyA9 IHRyYW5zLT50cmFuc2FjdGlvbjsKIAlzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbyA9IHRy YW5zLT5mc19pbmZvOwogCXN0cnVjdCBidHJmc19zcGFjZV9pbmZvICppbmZvOwogCXU2NCBsZWZ0 OwpAQCAtMzI4Myw2ICszMjg0LDcgQEAgdm9pZCBjaGVja19zeXN0ZW1fY2h1bmsoc3RydWN0IGJ0 cmZzX3RyYW5zX2hhbmRsZSAqdHJhbnMsIHU2NCB0eXBlKQogCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JmZzX2luZm8tPmNodW5rX211dGV4KTsKIAogCWluZm8gPSBidHJmc19maW5kX3NwYWNlX2luZm8o ZnNfaW5mbywgQlRSRlNfQkxPQ0tfR1JPVVBfU1lTVEVNKTsKK2FnYWluOgogCXNwaW5fbG9jaygm aW5mby0+bG9jayk7CiAJbGVmdCA9IGluZm8tPnRvdGFsX2J5dGVzIC0gYnRyZnNfc3BhY2VfaW5m b191c2VkKGluZm8sIHRydWUpOwogCXNwaW5fdW5sb2NrKCZpbmZvLT5sb2NrKTsKQEAgLTMzMDEs NiArMzMwMyw1OCBAQCB2b2lkIGNoZWNrX3N5c3RlbV9jaHVuayhzdHJ1Y3QgYnRyZnNfdHJhbnNf aGFuZGxlICp0cmFucywgdTY0IHR5cGUpCiAKIAlpZiAobGVmdCA8IHRocmVzaCkgewogCQl1NjQg ZmxhZ3MgPSBidHJmc19zeXN0ZW1fYWxsb2NfcHJvZmlsZShmc19pbmZvKTsKKwkJdTY0IHJlc2Vy dmVkID0gYXRvbWljNjRfcmVhZCgmY3VyX3RyYW5zLT5jaHVua19ieXRlc19yZXNlcnZlZCk7CisK KwkJLyoKKwkJICogSWYgdGhlcmUncyBub3QgYXZhaWxhYmxlIHNwYWNlIGZvciB0aGUgY2h1bmsg dHJlZSAoc3lzdGVtCisJCSAqIHNwYWNlKSBhbmQgdGhlcmUgYXJlIG90aGVyIHRhc2tzIHRoYXQg cmVzZXJ2ZWQgc3BhY2UgZm9yCisJCSAqIGNyZWF0aW5nIGEgbmV3IHN5c3RlbSBibG9jayBncm91 cCwgd2FpdCBmb3IgdGhlbSB0byBjb21wbGV0ZQorCQkgKiB0aGUgY3JlYXRpb24gb2YgdGhlaXIg c3lzdGVtIGJsb2NrIGdyb3VwIGFuZCByZWxlYXNlIGV4Y2VzcworCQkgKiByZXNlcnZlZCBzcGFj ZS4gV2UgZG8gdGhpcyBiZWNhdXNlOgorCQkgKgorCQkgKiAqKSBXZSBjYW4gZW5kIHVwIGFsbG9j YXRpbmcgbW9yZSBzeXN0ZW0gY2h1bmtzIHRoYW4gbmVjZXNzYXJ5CisJCSAqICAgIHdoZW4gdGhl cmUgYXJlIG11bHRpcGxlIHRhc2tzIHRoYXQgYXJlIGNvbmN1cnJlbnRseQorCQkgKiAgICBhbGxv Y2F0aW5nIGJsb2NrIGdyb3Vwcywgd2hpY2ggY2FuIGxlYWQgdG8gZXhoYXVzdGlvbiBvZgorCQkg KiAgICB0aGUgc3lzdGVtIGFycmF5IGluIHRoZSBzdXBlcmJsb2NrOworCQkgKgorCQkgKiAqKSBJ ZiB3ZSBhbGxvY2F0ZSBleHRyYSBhbmQgdW5uZWNlc3Nhcnkgc3lzdGVtIGJsb2NrIGdyb3VwcywK KwkJICogICAgZGVzcGl0ZSBiZWluZyBlbXB0eSBmb3IgYSBsb25nIHRpbWUsIGFuZCBwb3NzaWJs eSBmb3JldmVyLAorCQkgKiAgICB0aGV5IGVuZCBub3QgYmVpbmcgYWRkZWQgdG8gdGhlIGxpc3Qg b2YgdW51c2VkIGJsb2NrIGdyb3VwcworCQkgKiAgICBiZWNhdXNlIHRoYXQgdHlwaWNhbGx5IGhh cHBlbnMgb25seSB3aGVuIGRlYWxsb2NhdGluZyB0aGUKKwkJICogICAgbGFzdCBleHRlbnQgZnJv bSBhIGJsb2NrIGdyb3VwIC0gd2hpY2ggbmV2ZXIgaGFwcGVucyBzaW5jZQorCQkgKiAgICB3ZSBu ZXZlciBhbGxvY2F0ZSBmcm9tIHRoZW0gaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGUgZmV3CisJCSAq ICAgIGV4Y2VwdGlvbnMgYXJlIHdoZW4gbW91bnRpbmcgYSBmaWxlc3lzdGVtIG9yIHJ1bm5pbmcg c2NydWIsCisJCSAqICAgIHdoaWNoIGFkZCB1bnVzZWQgYmxvY2sgZ3JvdXBzIHRvIHRoZSBsaXN0 IG9mIHVudXNlZCBibG9jaworCQkgKiAgICBncm91cHMsIHRvIGJlIGRlbGV0ZWQgYnkgdGhlIGNs ZWFuZXIga3RocmVhZC4KKwkJICogICAgQW5kIGV2ZW4gd2hlbiB0aGV5IGFyZSBhZGRlZCB0byB0 aGUgbGlzdCBvZiB1bnVzZWQgYmxvY2sKKwkJICogICAgZ3JvdXBzLCBpdCBjYW4gdGFrZSBhIGxv bmcgdGltZSB1bnRpbCB0aGV5IGdldCBkZWxldGVkLAorCQkgKiAgICBzaW5jZSB0aGUgY2xlYW5l ciBrdGhyZWFkIG1pZ2h0IGJlIHNsZWVwaW5nIG9yIGJ1c3kgd2l0aAorCQkgKiAgICBvdGhlciB3 b3JrIChkZWxldGluZyBzdWJ2b2x1bWVzLCBydW5uaW5nIGRlbGF5ZWQgaXB1dHMsCisJCSAqICAg IGRlZnJhZyBzY2hlZHVsaW5nLCBldGMpOworCQkgKgorCQkgKiBUaGlzIGlzIHJhcmUgaW4gcHJh Y3RpY2UsIGJ1dCBjYW4gaGFwcGVuIHdoZW4gdG9vIG1hbnkgdGFza3MKKwkJICogYXJlIGFsbG9j YXRpbmcgYmxvY2tzIGdyb3VwcyBpbiBwYXJhbGxlbCAodmlhIGZhbGxvY2F0ZSgpKQorCQkgKiBh bmQgYmVmb3JlIHRoZSBvbmUgdGhhdCByZXNlcnZlZCBzcGFjZSBmb3IgYSBuZXcgc3lzdGVtIGJs b2NrCisJCSAqIGdyb3VwIGZpbmlzaGVzIHRoZSBibG9jayBncm91cCBjcmVhdGlvbiBhbmQgcmVs ZWFzZXMgdGhlIHNwYWNlCisJCSAqIHJlc2VydmVkIGluIGV4Y2VzcyAoYXQgYnRyZnNfY3JlYXRl X3BlbmRpbmdfYmxvY2tfZ3JvdXBzKCkpLAorCQkgKiBvdGhlciB0YXNrcyBlbmQgdXAgaGVyZSBh bmQgc2VlIGZyZWUgc3lzdGVtIHNwYWNlIHRlbXBvcmFyaWx5CisJCSAqIG5vdCBlbm91Z2ggZm9y IHVwZGF0aW5nIHRoZSBjaHVuayB0cmVlLgorCQkgKgorCQkgKiBXZSB1bmxvY2sgdGhlIGNodW5r IG11dGV4IGJlZm9yZSB3YWl0aW5nIGZvciBzdWNoIHRhc2tzIGFuZAorCQkgKiBsb2NrIGl0IGFn YWluIGFmdGVyIHRoZSB3YWl0LCBvdGhlcndpc2Ugd2Ugd291bGQgZGVhZGxvY2suCisJCSAqIEl0 IGlzIHNhZmUgdG8gZG8gc28gYmVjYXVzZSBhbGxvY2F0aW5nIGEgc3lzdGVtIGNodW5rIGlzIHRo ZQorCQkgKiBmaXJzdCB0aGluZyBkb25lIHdoaWxlIGFsbG9jYXRpbmcgYSBuZXcgYmxvY2sgZ3Jv dXAuCisJCSAqLworCQlpZiAocmVzZXJ2ZWQgPiB0cmFucy0+Y2h1bmtfYnl0ZXNfcmVzZXJ2ZWQp IHsKKwkJCWNvbnN0IHU2NCBtaW5fbmVlZGVkID0gcmVzZXJ2ZWQgLSB0aHJlc2g7CisKKwkJCW11 dGV4X3VubG9jaygmZnNfaW5mby0+Y2h1bmtfbXV0ZXgpOworCQkJd2FpdF9ldmVudChjdXJfdHJh bnMtPmNodW5rX3Jlc2VydmVfd2FpdCwKKwkJCSAgIGF0b21pYzY0X3JlYWQoJmN1cl90cmFucy0+ Y2h1bmtfYnl0ZXNfcmVzZXJ2ZWQpIDw9CisJCQkgICBtaW5fbmVlZGVkKTsKKwkJCW11dGV4X2xv Y2soJmZzX2luZm8tPmNodW5rX211dGV4KTsKKwkJCWdvdG8gYWdhaW47CisJCX0KIAogCQkvKgog CQkgKiBJZ25vcmUgZmFpbHVyZSB0byBjcmVhdGUgc3lzdGVtIGNodW5rLiBXZSBtaWdodCBlbmQg dXAgbm90CkBAIC0zMzE1LDggKzMzNjksMTAgQEAgdm9pZCBjaGVja19zeXN0ZW1fY2h1bmsoc3Ry dWN0IGJ0cmZzX3RyYW5zX2hhbmRsZSAqdHJhbnMsIHU2NCB0eXBlKQogCQlyZXQgPSBidHJmc19i bG9ja19yc3ZfYWRkKGZzX2luZm8tPmNodW5rX3Jvb3QsCiAJCQkJCSAgJmZzX2luZm8tPmNodW5r X2Jsb2NrX3JzdiwKIAkJCQkJICB0aHJlc2gsIEJUUkZTX1JFU0VSVkVfTk9fRkxVU0gpOwotCQlp ZiAoIXJldCkKKwkJaWYgKCFyZXQpIHsKKwkJCWF0b21pYzY0X2FkZCh0aHJlc2gsICZjdXJfdHJh bnMtPmNodW5rX2J5dGVzX3Jlc2VydmVkKTsKIAkJCXRyYW5zLT5jaHVua19ieXRlc19yZXNlcnZl ZCArPSB0aHJlc2g7CisJCX0KIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3RyYW5zYWN0 aW9uLmMgYi9mcy9idHJmcy90cmFuc2FjdGlvbi5jCmluZGV4IDNmMmM0ZWUuLmQ1NmQzZTcgMTAw NjQ0Ci0tLSBhL2ZzL2J0cmZzL3RyYW5zYWN0aW9uLmMKKysrIGIvZnMvYnRyZnMvdHJhbnNhY3Rp b24uYwpAQCAtMjYwLDYgKzI2MCw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGV4dHdyaXRlcl9jb3Vu dGVyX3JlYWQoc3RydWN0IGJ0cmZzX3RyYW5zYWN0aW9uICp0cmFucykKIHZvaWQgYnRyZnNfdHJh bnNfcmVsZWFzZV9jaHVua19tZXRhZGF0YShzdHJ1Y3QgYnRyZnNfdHJhbnNfaGFuZGxlICp0cmFu cykKIHsKIAlzdHJ1Y3QgYnRyZnNfZnNfaW5mbyAqZnNfaW5mbyA9IHRyYW5zLT5mc19pbmZvOwor CXN0cnVjdCBidHJmc190cmFuc2FjdGlvbiAqY3VyX3RyYW5zID0gdHJhbnMtPnRyYW5zYWN0aW9u OwogCiAJaWYgKCF0cmFucy0+Y2h1bmtfYnl0ZXNfcmVzZXJ2ZWQpCiAJCXJldHVybjsKQEAgLTI2 OCw2ICsyNjksOCBAQCB2b2lkIGJ0cmZzX3RyYW5zX3JlbGVhc2VfY2h1bmtfbWV0YWRhdGEoc3Ry dWN0IGJ0cmZzX3RyYW5zX2hhbmRsZSAqdHJhbnMpCiAKIAlidHJmc19ibG9ja19yc3ZfcmVsZWFz ZShmc19pbmZvLCAmZnNfaW5mby0+Y2h1bmtfYmxvY2tfcnN2LAogCQkJCXRyYW5zLT5jaHVua19i eXRlc19yZXNlcnZlZCwgTlVMTCk7CisJYXRvbWljNjRfc3ViKHRyYW5zLT5jaHVua19ieXRlc19y ZXNlcnZlZCwgJmN1cl90cmFucy0+Y2h1bmtfYnl0ZXNfcmVzZXJ2ZWQpOworCWNvbmRfd2FrZV91 cCgmY3VyX3RyYW5zLT5jaHVua19yZXNlcnZlX3dhaXQpOwogCXRyYW5zLT5jaHVua19ieXRlc19y ZXNlcnZlZCA9IDA7CiB9CiAKQEAgLTM4Myw2ICszODYsOCBAQCBsb29wOgogCXNwaW5fbG9ja19p bml0KCZjdXJfdHJhbnMtPmRyb3BwZWRfcm9vdHNfbG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJmN1 cl90cmFucy0+cmVsZWFzaW5nX2Vicyk7CiAJc3Bpbl9sb2NrX2luaXQoJmN1cl90cmFucy0+cmVs ZWFzaW5nX2Vic19sb2NrKTsKKwlhdG9taWM2NF9zZXQoJmN1cl90cmFucy0+Y2h1bmtfYnl0ZXNf cmVzZXJ2ZWQsIDApOworCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmN1cl90cmFucy0+Y2h1bmtfcmVz ZXJ2ZV93YWl0KTsKIAlsaXN0X2FkZF90YWlsKCZjdXJfdHJhbnMtPmxpc3QsICZmc19pbmZvLT50 cmFuc19saXN0KTsKIAlleHRlbnRfaW9fdHJlZV9pbml0KGZzX2luZm8sICZjdXJfdHJhbnMtPmRp cnR5X3BhZ2VzLAogCQkJSU9fVFJFRV9UUkFOU19ESVJUWV9QQUdFUywgZnNfaW5mby0+YnRyZWVf aW5vZGUpOwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvdHJhbnNhY3Rpb24uaCBiL2ZzL2J0cmZzL3Ry YW5zYWN0aW9uLmgKaW5kZXggNjMzNTcxNi4uNGM5NWNhNSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMv dHJhbnNhY3Rpb24uaAorKysgYi9mcy9idHJmcy90cmFuc2FjdGlvbi5oCkBAIC05Niw2ICs5Niwx MyBAQCBzdHJ1Y3QgYnRyZnNfdHJhbnNhY3Rpb24gewogCiAJc3BpbmxvY2tfdCByZWxlYXNpbmdf ZWJzX2xvY2s7CiAJc3RydWN0IGxpc3RfaGVhZCByZWxlYXNpbmdfZWJzOworCisJLyoKKwkgKiBU aGUgbnVtYmVyIG9mIGJ5dGVzIGN1cnJlbnRseSByZXNlcnZlZCwgYnkgYWxsIHRyYW5zYWN0aW9u IGhhbmRsZXMKKwkgKiBhdHRhY2hlZCB0byB0aGlzIHRyYW5zYWN0aW9uLCBmb3IgbWV0YWRhdGEg ZXh0ZW50cyBvZiB0aGUgY2h1bmsgdHJlZS4KKwkgKi8KKwlhdG9taWM2NF90IGNodW5rX2J5dGVz X3Jlc2VydmVkOworCXdhaXRfcXVldWVfaGVhZF90IGNodW5rX3Jlc2VydmVfd2FpdDsKIH07CiAK ICNkZWZpbmUgX19UUkFOU19GUkVFWkFCTEUJKDFVIDw8IDApCi0tIAoyLjMwLjIKCkZyb20gMjFk YzA0NGY0MzczZmJhNzlmMjMxZWEyNzNkOWIyNTkyNzlmM2UxMiBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogRmlsaXBlIE1hbmFuYSA8ZmRtYW5hbmFAc3VzZS5jb20+CkRhdGU6IFR1ZSwg MjAgQXByIDIwMjEgMTA6NTU6MTIgKzAxMDAKU3ViamVjdDogW1BBVENIXSBidHJmczogZml4IG1l dGFkYXRhIGV4dGVudCBsZWFrIGFmdGVyIGZhaWx1cmUgdG8gY3JlYXRlCiBzdWJ2b2x1bWUKCldo ZW4gY3JlYXRpbmcgYSBzdWJ2b2x1bWUgd2UgYWxsb2NhdGUgYW4gZXh0ZW50IGJ1ZmZlciBmb3Ig aXRzIHJvb3Qgbm9kZQphZnRlciBzdGFydGluZyBhIHRyYW5zYWN0aW9uLiBXZSBzZXR1cCBhIHJv b3QgaXRlbSBmb3IgdGhlIHN1YnZvbHVtZSB0aGF0CnBvaW50cyB0byB0aGF0IGV4dGVudCBidWZm ZXIgYW5kIHRoZW4gYXR0ZW1wdCB0byBpbnNlcnQgdGhlIHJvb3QgaXRlbSBpbnRvCnRoZSByb290 IHRyZWUgLSBob3dldmVyIGlmIHRoYXQgZmFpbHMsIGR1ZSB0byAtRU5PTUVNIGZvciBleGFtcGxl LCB3ZSBkbwpub3QgZnJlZSB0aGUgZXh0ZW50IGJ1ZmZlciBwcmV2aW91c2x5IGFsbG9jYXRlZCBh bmQgd2UgZG8gbm90IGFib3J0IHRoZQp0cmFuc2FjdGlvbiAoYXMgYXQgdGhhdCBwb2ludCB3ZSBk aWQgbm90aGluZyB0aGF0IGNhbiBub3QgYmUgdW5kb25lKS4KClRoaXMgbWVhbnMgdGhhdCB3ZSBl ZmZlY3RpdmVseSBkbyBub3QgcmV0dXJuIHRoZSBtZXRhZGF0YSBleHRlbnQgYmFjayB0bwp0aGUg ZnJlZSBzcGFjZSBjYWNoZS90cmVlIGFuZCB3ZSBsZWF2ZSBhIGRlbGF5ZWQgcmVmZXJlbmNlIGZv ciBpdCB3aGljaApjYXVzZXMgYSBtZXRhZGF0YSBleHRlbnQgaXRlbSB0byBiZSBhZGRlZCB0byB0 aGUgZXh0ZW50IHRyZWUsIGluIHRoZSBuZXh0CnRyYW5zYWN0aW9uIGNvbW1pdCwgd2l0aG91dCBo YXZpbmcgYmFja3JlZmVyZW5jZXMuIFdoZW4gdGhpcyBoYXBwZW5zCididHJmcyBjaGVjaycgcmVw b3J0cyB0aGUgZm9sbG93aW5nOgoKICAkIGJ0cmZzIGNoZWNrIC9kZXYvc2RpCiAgT3BlbmluZyBm aWxlc3lzdGVtIHRvIGNoZWNrLi4uCiAgQ2hlY2tpbmcgZmlsZXN5c3RlbSBvbiAvZGV2L3NkaQog IFVVSUQ6IGRjZTJjYjlkLTAyNWYtNGIwNS1hNGJmLWNlZTBhZDM3ODVlYgogIFsxLzddIGNoZWNr aW5nIHJvb3QgaXRlbXMKICBbMi83XSBjaGVja2luZyBleHRlbnRzCiAgcmVmIG1pc21hdGNoIG9u IFszMDQyNTA4OCAxNjM4NF0gZXh0ZW50IGl0ZW0gMSwgZm91bmQgMAogIGJhY2tyZWYgMzA0MjUw ODggcm9vdCAyNTYgbm90IHJlZmVyZW5jZWQgYmFjayAweDU2NGE5MWMyM2Q3MAogIGluY29ycmVj dCBnbG9iYWwgYmFja3JlZiBjb3VudCBvbiAzMDQyNTA4OCBmb3VuZCAxIHdhbnRlZCAwCiAgYmFj a3BvaW50ZXIgbWlzbWF0Y2ggb24gWzMwNDI1MDg4IDE2Mzg0XQogIG93bmVyIHJlZiBjaGVjayBm YWlsZWQgWzMwNDI1MDg4IDE2Mzg0XQogIEVSUk9SOiBlcnJvcnMgZm91bmQgaW4gZXh0ZW50IGFs bG9jYXRpb24gdHJlZSBvciBjaHVuayBhbGxvY2F0aW9uCiAgWzMvN10gY2hlY2tpbmcgZnJlZSBz cGFjZSBjYWNoZQogIFs0LzddIGNoZWNraW5nIGZzIHJvb3RzCiAgWzUvN10gY2hlY2tpbmcgb25s eSBjc3VtcyBpdGVtcyAod2l0aG91dCB2ZXJpZnlpbmcgZGF0YSkKICBbNi83XSBjaGVja2luZyBy b290IHJlZnMKICBbNy83XSBjaGVja2luZyBxdW90YSBncm91cHMgc2tpcHBlZCAobm90IGVuYWJs ZWQgb24gdGhpcyBGUykKICBmb3VuZCAyMTI5OTIgYnl0ZXMgdXNlZCwgZXJyb3IocykgZm91bmQK ICB0b3RhbCBjc3VtIGJ5dGVzOiAwCiAgdG90YWwgdHJlZSBieXRlczogMTMxMDcyCiAgdG90YWwg ZnMgdHJlZSBieXRlczogMzI3NjgKICB0b3RhbCBleHRlbnQgdHJlZSBieXRlczogMTYzODQKICBi dHJlZSBzcGFjZSB3YXN0ZSBieXRlczogMTI0NjY5CiAgZmlsZSBkYXRhIGJsb2NrcyBhbGxvY2F0 ZWQ6IDY1NTM2CiAgIHJlZmVyZW5jZWQgNjU1MzYKClNvIGZpeCB0aGlzIGJ5IGZyZWVpbmcgdGhl IG1ldGFkYXRhIGV4dGVudCBpZiBidHJmc19pbnNlcnRfcm9vdCgpIHJldHVybnMKYW4gZXJyb3Iu CgpTaWduZWQtb2ZmLWJ5OiBGaWxpcGUgTWFuYW5hIDxmZG1hbmFuYUBzdXNlLmNvbT4KLS0tCiBm cy9idHJmcy9pb2N0bC5jIHwgMTggKysrKysrKysrKysrKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwg MTUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9mcy9idHJmcy9p b2N0bC5jIGIvZnMvYnRyZnMvaW9jdGwuYwppbmRleCBlZGUwOWRmLi5lOTk5YzUxIDEwMDY0NAot LS0gYS9mcy9idHJmcy9pb2N0bC5jCisrKyBiL2ZzL2J0cmZzL2lvY3RsLmMKQEAgLTY5Nyw4ICs2 OTcsNiBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGNyZWF0ZV9zdWJ2b2woc3RydWN0IGlub2RlICpk aXIsCiAJYnRyZnNfc2V0X3Jvb3Rfb3RyYW5zaWQocm9vdF9pdGVtLCB0cmFucy0+dHJhbnNpZCk7 CiAKIAlidHJmc190cmVlX3VubG9jayhsZWFmKTsKLQlmcmVlX2V4dGVudF9idWZmZXIobGVhZik7 Ci0JbGVhZiA9IE5VTEw7CiAKIAlidHJmc19zZXRfcm9vdF9kaXJpZChyb290X2l0ZW0sIEJUUkZT X0ZJUlNUX0ZSRUVfT0JKRUNUSUQpOwogCkBAIC03MDcsOCArNzA1LDIyIEBAIHN0YXRpYyBub2lu bGluZSBpbnQgY3JlYXRlX3N1YnZvbChzdHJ1Y3QgaW5vZGUgKmRpciwKIAlrZXkudHlwZSA9IEJU UkZTX1JPT1RfSVRFTV9LRVk7CiAJcmV0ID0gYnRyZnNfaW5zZXJ0X3Jvb3QodHJhbnMsIGZzX2lu Zm8tPnRyZWVfcm9vdCwgJmtleSwKIAkJCQlyb290X2l0ZW0pOwotCWlmIChyZXQpCisJaWYgKHJl dCkgeworCQkvKgorCQkgKiBTaW5jZSB3ZSBkb24ndCBhYm9ydCB0aGUgdHJhbnNhY3Rpb24gaW4g dGhpcyBjYXNlLCBmcmVlIHRoZQorCQkgKiB0cmVlIGJsb2NrIHNvIHRoYXQgd2UgZG9uJ3QgbGVh ayBzcGFjZSBhbmQgbGVhdmUgdGhlIGZpbGVzeXRlbQorCQkgKiBpbiBhbiBpbmNvbnNpc3RlbnQg c3RhdGUgKGFuIGV4dGVudCBpdGVtIGluIHRoZSBleHRlbnQgdHJlZQorCQkgKiB3aXRob3V0IGJh Y2tyZWZlcmVuY2VzKS4gQWxzbyBubyBuZWVkIHRvIGhhdmUgdGhlIHRyZWUgYmxvY2sKKwkJICog bG9ja2VkIHNpbmNlIGl0IGlzIG5vdCBpbiBhbnkgdHJlZSBhdCB0aGlzIHBvaW50LCBzbyBubyBv dGhlcgorCQkgKiB0YXNrIGNhbiBmaW5kIGl0IGFuZCB1c2UgaXQuCisJCSAqLworCQlidHJmc19m cmVlX3RyZWVfYmxvY2sodHJhbnMsIHJvb3QsIGxlYWYsIDAsIDEpOworCQlmcmVlX2V4dGVudF9i dWZmZXIobGVhZik7CiAJCWdvdG8gZmFpbDsKKwl9CisKKwlmcmVlX2V4dGVudF9idWZmZXIobGVh Zik7CisJbGVhZiA9IE5VTEw7CiAKIAlrZXkub2Zmc2V0ID0gKHU2NCktMTsKIAluZXdfcm9vdCA9 IGJ0cmZzX2dldF9uZXdfZnNfcm9vdChmc19pbmZvLCBvYmplY3RpZCwgYW5vbl9kZXYpOwotLSAK Mi4zMC4yCgpGcm9tIDA5MjUzODk5MjE0Y2U3NTcxNDQ0MmEyOGM2OGU1ZjJiZDllMzQwNWQgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEZpbGlwZSBNYW5hbmEgPGZkbWFuYW5hQHN1c2Uu Y29tPgpEYXRlOiBUdWUsIDIwIEFwciAyMDIxIDEwOjU1OjQ0ICswMTAwClN1YmplY3Q6IFtQQVRD SF0gYnRyZnM6IGZpeCByYWNlIHdoZW4gcGlja2luZyBtb3N0IHJlY2VudCBtb2QgbG9nIG9wZXJh dGlvbgogZm9yIGFuIG9sZCByb290CgpDb21taXQgZGJjYzdkNTdiZmZjMGMgKCJidHJmczogZml4 IHJhY2Ugd2hlbiBjbG9uaW5nIGV4dGVudCBidWZmZXIgZHVyaW5nCnJld2luZCBvZiBhbiBvbGQg cm9vdCIpLCBmaXhlZCBhIHJhY2Ugd2hlbiB3ZSBuZWVkIHRvIHJld2luZCB0aGUgZXh0ZW50CmJ1 ZmZlciBvZiBhbiBvbGQgcm9vdC4gSXQgd2FzIGNhdXNlZCBieSBwaWNraW5nIGEgbmV3IG1vZCBs b2cgb3BlcmF0aW9uCmZvciB0aGUgZXh0ZW50IGJ1ZmZlciB3aGlsZSBnZXR0aW5nIGEgY2xvbmVk IGV4dGVudCBidWZmZXIgd2l0aCBhbiBvdXRkYXRlZApudW1iZXIgb2YgaXRlbXMgKG9mZiBieSAt MSksIGJlY2F1c2Ugd2UgY2xvbmVkIHRoZSBleHRlbnQgYnVmZmVyIHdpdGhvdXQKbG9ja2luZyBp dCBmaXJzdC4KCkhvd2V2ZXIgdGhlcmUgaXMgc3RpbGwgYW5vdGhlciBzaW1pbGFyIHJhY2UsIGJ1 dCBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uLgpUaGUgY2xvbmVkIGV4dGVudCBidWZmZXIgaGFz IGEgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlCm51bWJlciBvZiB0cmVl IG1vZCBsb2cgb3BlcmF0aW9ucyB0aGF0IGFyZSBnb2luZyB0byBiZSByZXBsYXllZC4gVGhpcyBp cwpiZWNhdXNlIHJpZ2h0IGFmdGVyIHdlIGdvdCB0aGUgbGFzdCAobW9zdCByZWNlbnQpIHRyZWUg bW9kIGxvZyBvcGVyYXRpb24gdG8KcmVwbGF5IGFuZCBiZWZvcmUgbG9ja2luZyBhbmQgY2xvbmlu ZyB0aGUgZXh0ZW50IGJ1ZmZlciwgYW5vdGhlciB0YXNrIGFkZHMKYSBuZXcgcG9pbnRlciB0byB0 aGUgZXh0ZW50IGJ1ZmZlciwgd2hpY2ggcmVzdWx0cyBpbiBhZGRpbmcgYSBuZXcgdHJlZSBtb2QK bG9nIG9wZXJhdGlvbiBhbmQgaW5jcmVtZW50aW5nIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhl IGV4dGVudCBidWZmZXIuClNvIGFmdGVyIGNsb25pbmcgd2UgaGF2ZSBtaXNtYXRjaCBiZXR3ZWVu IHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGV4dGVudApidWZmZXIgYW5kIHRoZSBudW1iZXIg b2YgbW9kIGxvZyBvcGVyYXRpb25zIHdlIGFyZSBnb2luZyB0byBhcHBseSB0byBpdC4KVGhpcyBy ZXN1bHRzIGluIGhpdHRpbmcgYSBCVUdfT04oKSB0aGF0IHByb2R1Y2VzIHRoZSBmb2xsb3dpbmcg c3RhY2sgdHJhY2U6CgogIFsxNDU0MjcuNjg5OTY0XVsgVDQ4MTFdIC0tLS0tLS0tLS0tLVsgY3V0 IGhlcmUgXS0tLS0tLS0tLS0tLQogIFsxNDU0MjcuNjkyNDk4XVsgVDQ4MTFdIGtlcm5lbCBCVUcg YXQgZnMvYnRyZnMvdHJlZS1tb2QtbG9nLmM6Njc1IQogIFsxNDU0MjcuNjk0NjY4XVsgVDQ4MTFd IGludmFsaWQgb3Bjb2RlOiAwMDAwIFsjMV0gU01QIEtBU0FOIFBUSQogIFsxNDU0MjcuNjk2Mzc5 XVsgVDQ4MTFdIENQVTogMyBQSUQ6IDQ4MTEgQ29tbTogY3Jhd2xfMTIxNSBUYWludGVkOiBHICAg ICAgICBXICAgICAgICAgNS4xMi4wLTdkMWVmZGY1MDFmOC1taXNjLW5leHQrICM5OQogIFsxNDU0 MjcuNzAwMjIxXVsgVDQ4MTFdIEhhcmR3YXJlIG5hbWU6IFFFTVUgU3RhbmRhcmQgUEMgKGk0NDBG WCArIFBJSVgsIDE5OTYpLCBCSU9TIDEuMTIuMC0xIDA0LzAxLzIwMTQKICBbMTQ1NDI3LjcwMzYy M11bIFQ0ODExXSBSSVA6IDAwMTA6dHJlZV9tb2RfbG9nX3Jld2luZCsweDNiMS8weDNjMAogIFsx NDU0MjcuNzA2MTM1XVsgVDQ4MTFdIENvZGU6IDA1IDQ4IDhkIDc0IDEwICguLi4pCiAgWzE0NTQy Ny43MTMwMzRdWyBUNDgxMV0gUlNQOiAwMDE4OmZmZmZjOTAwMDEwMjcwOTAgRUZMQUdTOiAwMDAx MDI5MwogIFsxNDU0MjcuNzE0OTk2XVsgVDQ4MTFdIFJBWDogMDAwMDAwMDAwMDAwMDAwMCBSQlg6 IGZmZmY4ODgwYTg1MTQ2MDAgUkNYOiBmZmZmZmZmZmFhOWU1OWI2CiAgWzE0NTQyNy43MTcxNThd WyBUNDgxMV0gUkRYOiAwMDAwMDAwMDAwMDAwMDA3IFJTSTogZGZmZmZjMDAwMDAwMDAwMCBSREk6 IGZmZmY4ODgwYTg1MTQ2MmMKICBbMTQ1NDI3LjcyMDQyMl1bIFQ0ODExXSBSQlA6IGZmZmZjOTAw MDEwMjcwZTAgUjA4OiAwMDAwMDAwMDAwMDAwMGMwIFIwOTogZmZmZmVkMTAwNDMzMzQxNwogIFsx NDU0MjcuNzIzODM1XVsgVDQ4MTFdIFIxMDogZmZmZjg4ODAyMTk5YTBiNyBSMTE6IGZmZmZlZDEw MDQzMzM0MTYgUjEyOiAwMDAwMDAwMDAwMDAwMDBlCiAgWzE0NTQyNy43Mjc2OTVdWyBUNDgxMV0g UjEzOiBmZmZmODg4MTM1YWY4NzQ4IFIxNDogZmZmZjg4ODE4NzY2ZmYwMCBSMTU6IGZmZmY4ODgw YTg1MTQ2MmMKICBbMTQ1NDI3LjczMTYzNl1bIFQ0ODExXSBGUzogIDAwMDA3ZjI5YWNmNjI3MDAo MDAwMCkgR1M6ZmZmZjg4ODFmMjIwMDAwMCgwMDAwKSBrbmxHUzowMDAwMDAwMDAwMDAwMDAwCiAg WzE0NTQyNy43MzYzMDVdWyBUNDgxMV0gQ1M6ICAwMDEwIERTOiAwMDAwIEVTOiAwMDAwIENSMDog MDAwMDAwMDA4MDA1MDAzMwogIFsxNDU0MjcuNzM5NTg3XVsgVDQ4MTFdIENSMjogMDAwMDdmMGU2 MDEzZjcxOCBDUjM6IDAwMDAwMDAxMGQ0MmUwMDMgQ1I0OiAwMDAwMDAwMDAwMTcwZWUwCiAgWzE0 NTQyNy43NDM1NzNdWyBUNDgxMV0gQ2FsbCBUcmFjZToKICBbMTQ1NDI3Ljc0NTExN11bIFQ0ODEx XSAgYnRyZnNfZ2V0X29sZF9yb290KzB4MTZhLzB4NWMwCiAgWzE0NTQyNy43NDc2ODZdWyBUNDgx MV0gID8gbG9ja19kb3duZ3JhZGUrMHg0MDAvMHg0MDAKICBbMTQ1NDI3Ljc1NDE4OV1bIFQ0ODEx XSAgYnRyZnNfc2VhcmNoX29sZF9zbG90KzB4MTkyLzB4NTIwCiAgWzE0NTQyNy43NTgwMjNdWyBU NDgxMV0gID8gYnRyZnNfc2VhcmNoX3Nsb3QrMHgxMDkwLzB4MTA5MAogIFsxNDU0MjcuNzYxMDE0 XVsgVDQ4MTFdICA/IGZyZWVfZXh0ZW50X2J1ZmZlci5wYXJ0LjYxKzB4ZDcvMHgxNDAKICBbMTQ1 NDI3Ljc2NTIwOF1bIFQ0ODExXSAgPyBmcmVlX2V4dGVudF9idWZmZXIrMHgxMy8weDIwCiAgWzE0 NTQyNy43NzAwNDJdWyBUNDgxMV0gIHJlc29sdmVfaW5kaXJlY3RfcmVmcysweDNlOS8weGZjMAog IFsxNDU0MjcuNzczNjMzXVsgVDQ4MTFdICA/IGxvY2tfZG93bmdyYWRlKzB4NDAwLzB4NDAwCiAg WzE0NTQyNy43NzczMjNdWyBUNDgxMV0gID8gX19rYXNhbl9jaGVja19yZWFkKzB4MTEvMHgyMAog IFsxNDU0MjcuNzgwNTM5XVsgVDQ4MTFdICA/IGFkZF9wcmVsaW1fcmVmLnBhcnQuMTErMHgxNTAv MHgxNTAKICBbMTQ1NDI3Ljc4NTcyMl1bIFQ0ODExXSAgPyBsb2NrX2Rvd25ncmFkZSsweDQwMC8w eDQwMAogIFsxNDU0MjcuNzkxMDg2XVsgVDQ4MTFdICA/IF9fa2FzYW5fY2hlY2tfcmVhZCsweDEx LzB4MjAKICBbMTQ1NDI3Ljc5NjI2Nl1bIFQ0ODExXSAgPyBsb2NrX2FjcXVpcmVkKzB4YmIvMHg2 MjAKICBbMTQ1NDI3Ljc5ODc2NF1bIFQ0ODExXSAgPyBfX2thc2FuX2NoZWNrX3dyaXRlKzB4MTQv MHgyMAogIFsxNDU0MjcuODAxMTE4XVsgVDQ4MTFdICA/IGRvX3Jhd19zcGluX3VubG9jaysweGE4 LzB4MTQwCiAgWzE0NTQyNy44MDQ0OTFdWyBUNDgxMV0gID8gcmJfaW5zZXJ0X2NvbG9yKzB4MzQw LzB4MzYwCiAgWzE0NTQyNy44MDgwNjZdWyBUNDgxMV0gID8gcHJlbGltX3JlZl9pbnNlcnQrMHgx MmQvMHg0MzAKICBbMTQ1NDI3LjgxMTg4OV1bIFQ0ODExXSAgZmluZF9wYXJlbnRfbm9kZXMrMHg1 YzMvMHgxODMwCiAgWzE0NTQyNy44MTU0OThdWyBUNDgxMV0gID8gc3RhY2tfdHJhY2Vfc2F2ZSsw eDg3LzB4YjAKICBbMTQ1NDI3LjgxOTIxMF1bIFQ0ODExXSAgPyByZXNvbHZlX2luZGlyZWN0X3Jl ZnMrMHhmYzAvMHhmYzAKICBbMTQ1NDI3LjgyMzI1NF1bIFQ0ODExXSAgPyBmc19yZWNsYWltX2Fj cXVpcmUrMHg2Ny8weGYwCiAgWzE0NTQyNy44MjcyMjBdWyBUNDgxMV0gID8gX19rYXNhbl9jaGVj a19yZWFkKzB4MTEvMHgyMAogIFsxNDU0MjcuODI5MDgwXVsgVDQ4MTFdICA/IGxvY2tkZXBfaGFy ZGlycXNfb25fcHJlcGFyZSsweDIxMC8weDIxMAogIFsxNDU0MjcuODMxMjM3XVsgVDQ4MTFdICA/ IGZzX3JlY2xhaW1fYWNxdWlyZSsweDY3LzB4ZjAKICBbMTQ1NDI3LjgzNTA2MV1bIFQ0ODExXSAg PyBfX2thc2FuX2NoZWNrX3JlYWQrMHgxMS8weDIwCiAgWzE0NTQyNy44MzY1MDhdWyBUNDgxMV0g ID8gX19fbWlnaHRfc2xlZXArMHgxMGYvMHgxZTAKICBbMTQ1NDI3Ljg0MTM4OV1bIFQ0ODExXSAg PyBfX2thc2FuX2ttYWxsb2MrMHg5ZC8weGQwCiAgWzE0NTQyNy44NDMwNTRdWyBUNDgxMV0gID8g dHJhY2VfaGFyZGlycXNfb24rMHg1NS8weDEyMAogIFsxNDU0MjcuODQ1NTMzXVsgVDQ4MTFdICBi dHJmc19maW5kX2FsbF9yb290c19zYWZlKzB4MTQyLzB4MWUwCiAgWzE0NTQyNy44NDczMjVdWyBU NDgxMV0gID8gZmluZF9wYXJlbnRfbm9kZXMrMHgxODMwLzB4MTgzMAogIFsxNDU0MjcuODQ5MzE4 XVsgVDQ4MTFdICA/IHRyYWNlX2hhcmRpcnFzX29uKzB4NTUvMHgxMjAKICBbMTQ1NDI3Ljg1MTIx MF1bIFQ0ODExXSAgPyB1bGlzdF9mcmVlKzB4MWYvMHgzMAogIFsxNDU0MjcuODUyODA5XVsgVDQ4 MTFdICA/IGJ0cmZzX2lub2RlX2ZsYWdzX3RvX3hmbGFncysweDUwLzB4NTAKICBbMTQ1NDI3Ljg1 NDY1NF1bIFQ0ODExXSAgaXRlcmF0ZV9leHRlbnRfaW5vZGVzKzB4MjBlLzB4NTgwCiAgWzE0NTQy Ny44NTY0MjldWyBUNDgxMV0gID8gdHJlZV9iYWNrcmVmX2Zvcl9leHRlbnQrMHgyMzAvMHgyMzAK ICBbMTQ1NDI3Ljg1ODU1Ml1bIFQ0ODExXSAgPyByZWxlYXNlX2V4dGVudF9idWZmZXIrMHgyMjUv MHgyODAKICBbMTQ1NDI3Ljg2Mjc4OV1bIFQ0ODExXSAgPyByZWFkX2V4dGVudF9idWZmZXIrMHhk ZC8weDExMAogIFsxNDU0MjcuODY1MDkyXVsgVDQ4MTFdICA/IGxvY2tfZG93bmdyYWRlKzB4NDAw LzB4NDAwCiAgWzE0NTQyNy44NjcwNjldWyBUNDgxMV0gID8gX19rYXNhbl9jaGVja19yZWFkKzB4 MTEvMHgyMAogIFsxNDU0MjcuODY4NTg1XVsgVDQ4MTFdICA/IGxvY2tfYWNxdWlyZWQrMHhiYi8w eDYyMAogIFsxNDU0MjcuODcyMzA5XVsgVDQ4MTFdICA/IF9fa2FzYW5fY2hlY2tfd3JpdGUrMHgx NC8weDIwCiAgWzE0NTQyNy44NzM2NDFdWyBUNDgxMV0gID8gZG9fcmF3X3NwaW5fdW5sb2NrKzB4 YTgvMHgxNDAKICBbMTQ1NDI3Ljg3ODE1MF1bIFQ0ODExXSAgPyBfcmF3X3NwaW5fdW5sb2NrKzB4 MjIvMHgzMAogIFsxNDU0MjcuODc5MzU1XVsgVDQ4MTFdICA/IHJlbGVhc2VfZXh0ZW50X2J1ZmZl cisweDIyNS8weDI4MAogIFsxNDU0MjcuODgxNDI0XVsgVDQ4MTFdICBpdGVyYXRlX2lub2Rlc19m cm9tX2xvZ2ljYWwrMHgxMjkvMHgxNzAKICBbMTQ1NDI3Ljg4NDcxMV1bIFQ0ODExXSAgPyBpdGVy YXRlX2lub2Rlc19mcm9tX2xvZ2ljYWwrMHgxMjkvMHgxNzAKICBbMTQ1NDI3Ljg4ODEyNF1bIFQ0 ODExXSAgPyBidHJmc19pbm9kZV9mbGFnc190b194ZmxhZ3MrMHg1MC8weDUwCiAgWzE0NTQyNy44 OTE1NTNdWyBUNDgxMV0gID8gaXRlcmF0ZV9leHRlbnRfaW5vZGVzKzB4NTgwLzB4NTgwCiAgWzE0 NTQyNy44OTQ1MzFdWyBUNDgxMV0gID8gX192bWFsbG9jX25vZGUrMHg5Mi8weGIwCiAgWzE0NTQy Ny44OTc0MzldWyBUNDgxMV0gID8gaW5pdF9kYXRhX2NvbnRhaW5lcisweDM0LzB4YjAKICBbMTQ1 NDI3LjkwMDUxOF1bIFQ0ODExXSAgPyBpbml0X2RhdGFfY29udGFpbmVyKzB4MzQvMHhiMAogIFsx NDU0MjcuOTAzNzA1XVsgVDQ4MTFdICA/IGt2bWFsbG9jX25vZGUrMHg2MC8weDgwCiAgWzE0NTQy Ny45MDY1MzhdWyBUNDgxMV0gIGJ0cmZzX2lvY3RsX2xvZ2ljYWxfdG9faW5vKzB4MTU4LzB4MjMw CiAgWzE0NTQyNy45MTAxMjVdWyBUNDgxMV0gIGJ0cmZzX2lvY3RsKzB4MjAzOC8weDQzNjAKICBb MTQ1NDI3LjkxMjQzMF1bIFQ0ODExXSAgPyBfX2thc2FuX2NoZWNrX3dyaXRlKzB4MTQvMHgyMAog IFsxNDU0MjcuOTE0MDYxXVsgVDQ4MTFdICA/IG1tcHV0KzB4M2IvMHgyMjAKICBbMTQ1NDI3Ljkx NTM4MF1bIFQ0ODExXSAgPyBidHJmc19pb2N0bF9nZXRfc3VwcG9ydGVkX2ZlYXR1cmVzKzB4MzAv MHgzMAogIFsxNDU0MjcuOTE3NTEyXVsgVDQ4MTFdICA/IF9fa2FzYW5fY2hlY2tfcmVhZCsweDEx LzB4MjAKICBbMTQ1NDI3LjkxOTExMF1bIFQ0ODExXSAgPyBfX2thc2FuX2NoZWNrX3JlYWQrMHgx MS8weDIwCiAgWzE0NTQyNy45MjA4NDVdWyBUNDgxMV0gID8gbG9ja19yZWxlYXNlKzB4YzgvMHg2 NTAKICBbMTQ1NDI3LjkyMjIyN11bIFQ0ODExXSAgPyBfX21pZ2h0X2ZhdWx0KzB4NjQvMHhkMAog IFsxNDU0MjcuOTIzNjg3XVsgVDQ4MTFdICA/IF9fa2FzYW5fY2hlY2tfcmVhZCsweDExLzB4MjAK ICBbMTQ1NDI3LjkyNTIyMl1bIFQ0ODExXSAgPyBsb2NrX2Rvd25ncmFkZSsweDQwMC8weDQwMAog IFsxNDU0MjcuOTI2NzI5XVsgVDQ4MTFdICA/IGxvY2tkZXBfaGFyZGlycXNfb25fcHJlcGFyZSsw eDIxMC8weDIxMAogIFsxNDU0MjcuOTI4NDk2XVsgVDQ4MTFdICA/IGxvY2tkZXBfaGFyZGlycXNf b25fcHJlcGFyZSsweDEzLzB4MjEwCiAgWzE0NTQyNy45MzAzOTZdWyBUNDgxMV0gID8gX3Jhd19z cGluX3VubG9ja19pcnFyZXN0b3JlKzB4NTEvMHg2MwogIFsxNDU0MjcuOTMyMTIzXVsgVDQ4MTFd ICA/IF9fa2FzYW5fY2hlY2tfcmVhZCsweDExLzB4MjAKICBbMTQ1NDI3LjkzMzkxMF1bIFQ0ODEx XSAgPyBkb192ZnNfaW9jdGwrMHhmYy8weDlkMAogIFsxNDU0MjcuOTM1NjY0XVsgVDQ4MTFdICA/ IGlvY3RsX2ZpbGVfY2xvbmUrMHhlMC8weGUwCiAgWzE0NTQyNy45MzgxNDddWyBUNDgxMV0gID8g bG9ja19kb3duZ3JhZGUrMHg0MDAvMHg0MDAKICBbMTQ1NDI3Ljk0MDcxN11bIFQ0ODExXSAgPyBs b2NrZGVwX2hhcmRpcnFzX29uX3ByZXBhcmUrMHgyMTAvMHgyMTAKICBbMTQ1NDI3Ljk0MzY3M11b IFQ0ODExXSAgPyBfX2thc2FuX2NoZWNrX3JlYWQrMHgxMS8weDIwCiAgWzE0NTQyNy45NDYyNDld WyBUNDgxMV0gID8gbG9ja19yZWxlYXNlKzB4YzgvMHg2NTAKICBbMTQ1NDI3Ljk0ODUwOV1bIFQ0 ODExXSAgPyBfX3Rhc2tfcGlkX25yX25zKzB4ZDMvMHgyNTAKICBbMTQ1NDI3Ljk1MDk0Nl1bIFQ0 ODExXSAgPyBfX2thc2FuX2NoZWNrX3JlYWQrMHgxMS8weDIwCiAgWzE0NTQyNy45NTM0MTVdWyBU NDgxMV0gID8gX19mZ2V0X2ZpbGVzKzB4MTYwLzB4MjMwCiAgWzE0NTQyNy45NTU2OTNdWyBUNDgx MV0gID8gX19mZ2V0X2xpZ2h0KzB4ZjIvMHgxMTAKICBbMTQ1NDI3Ljk1Nzk1MV1bIFQ0ODExXSAg X194NjRfc3lzX2lvY3RsKzB4YzMvMHgxMDAKICBbMTQ1NDI3Ljk2MTY0N11bIFQ0ODExXSAgZG9f c3lzY2FsbF82NCsweDM3LzB4ODAKICBbMTQ1NDI3Ljk2MzExMl1bIFQ0ODExXSAgZW50cnlfU1lT Q0FMTF82NF9hZnRlcl9od2ZyYW1lKzB4NDQvMHhhZQogIFsxNDU0MjcuOTcxOTc1XVsgVDQ4MTFd IFJJUDogMDAzMzoweDdmMjlhZTg1YjQyNwogIFsxNDU0MjcuOTc0MTAxXVsgVDQ4MTFdIENvZGU6 IDAwIDAwIDkwIDQ4IDhiICguLi4pCiAgWzE0NTQyNy45ODA0ODNdWyBUNDgxMV0gUlNQOiAwMDJi OjAwMDA3ZjI5YWNmNWZjZjggRUZMQUdTOiAwMDAwMDI0NiBPUklHX1JBWDogMDAwMDAwMDAwMDAw MDAxMAogIFsxNDU0MjcuOTgzMzE0XVsgVDQ4MTFdIFJBWDogZmZmZmZmZmZmZmZmZmZkYSBSQlg6 IDAwMDA3ZjI5YWNmNWZmNDAgUkNYOiAwMDAwN2YyOWFlODViNDI3CiAgWzE0NTQyNy45ODU5NjNd WyBUNDgxMV0gUkRYOiAwMDAwN2YyOWFjZjVmZjQ4IFJTSTogMDAwMDAwMDBjMDM4OTQzYiBSREk6 IDAwMDAwMDAwMDAwMDAwMDMKICBbMTQ1NDI3Ljk4ODUwNF1bIFQ0ODExXSBSQlA6IDAwMDAwMDAw MDEwMDAwMDAgUjA4OiAwMDAwMDAwMDAwMDAwMDAwIFIwOTogMDAwMDdmMjlhY2Y2MDEyMAogIFsx NDU0MjcuOTkxMDg1XVsgVDQ4MTFdIFIxMDogMDAwMDU2NDBkNWZjN2IwMCBSMTE6IDAwMDAwMDAw MDAwMDAyNDYgUjEyOiAwMDAwMDAwMDAwMDAwMDAzCiAgWzE0NTQyNy45OTM2NjJdWyBUNDgxMV0g UjEzOiAwMDAwN2YyOWFjZjVmZjQ4IFIxNDogMDAwMDdmMjlhY2Y1ZmY0MCBSMTU6IDAwMDA3ZjI5 YWNmNWZlZjgKICBbMTQ1NDI3Ljk5NjI4OV1bIFQ0ODExXSBNb2R1bGVzIGxpbmtlZCBpbjoKICBb MTQ1NDI3Ljk5NzY2MV1bIFQ0ODExXSAtLS1bIGVuZCB0cmFjZSA4NWU1ZmNlMDc4ZGZiZTA0IF0t LS0KCiAgKGdkYikgbCAqKHRyZWVfbW9kX2xvZ19yZXdpbmQrMHgzYjEpCiAgMHhmZmZmZmZmZjgx OWU1YjIxIGlzIGluIHRyZWVfbW9kX2xvZ19yZXdpbmQgKGZzL2J0cmZzL3RyZWUtbW9kLWxvZy5j OjY3NSkuCiAgNjcwICAgICAgICAgICAgICAgICAgICAgICogdGhlIG1vZGlmaWNhdGlvbi4gQXMg d2UncmUgZ29pbmcgYmFja3dhcmRzLCB3ZSBkbyB0aGUKICA2NzEgICAgICAgICAgICAgICAgICAg ICAgKiBvcHBvc2l0ZSBvZiBlYWNoIG9wZXJhdGlvbiBoZXJlLgogIDY3MiAgICAgICAgICAgICAg ICAgICAgICAqLwogIDY3MyAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodG0tPm9wKSB7CiAg Njc0ICAgICAgICAgICAgICAgICAgICAgY2FzZSBCVFJGU19NT0RfTE9HX0tFWV9SRU1PVkVfV0hJ TEVfRlJFRUlORzoKICA2NzUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJVR19PTih0bS0+ c2xvdCA8IG4pOwogIDY3NiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbHRocm91Z2g7 CiAgNjc3ICAgICAgICAgICAgICAgICAgICAgY2FzZSBCVFJGU19NT0RfTE9HX0tFWV9SRU1PVkVf V0hJTEVfTU9WSU5HOgogIDY3OCAgICAgICAgICAgICAgICAgICAgIGNhc2UgQlRSRlNfTU9EX0xP R19LRVlfUkVNT1ZFOgogIDY3OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnRyZnNfc2V0 X25vZGVfa2V5KGViLCAmdG0tPmtleSwgdG0tPnNsb3QpOwogIChnZGIpIHF1aXQKClRoZSBmb2xs b3dpbmcgc3RlcHMgZXhwbGFpbiBpbiBtb3JlIGRldGFpbCBob3cgaXQgaGFwcGVuczoKCjEpIFdl IGhhdmUgb25lIHRyZWUgbW9kIGxvZyB1c2VyICh0aHJvdWdoIGZpZW1hcCBvciB0aGUgbG9naWNh bCBpbm8gaW9jdGwpLAogICB3aXRoIGEgc2VxdWVuY2UgbnVtYmVyIG9mIDEsIHNvIHdlIGhhdmUg ZnNfaW5mby0+dHJlZV9tb2Rfc2VxID09IDEuCiAgIFRoaXMgaXMgdGFzayBBOwoKMikgQW5vdGhl ciB0YXNrIGlzIGF0IGN0cmVlLmM6YmFsYW5jZV9sZXZlbCgpIGFuZCB3ZSBoYXZlIGViIFggY3Vy cmVudGx5IGFzCiAgIHRoZSByb290IG9mIHRoZSB0cmVlLCBhbmQgd2UgcHJvbW90ZSBpdHMgc2lu Z2xlIGNoaWxkLCBlYiBZLCBhcyB0aGUgbmV3CiAgIHJvb3QuCgogICBUaGVuLCBhdCBjdHJlZS5j OmJhbGFuY2VfbGV2ZWwoKSwgd2UgY2FsbDoKCiAgICAgIHJldCA9IGJ0cmZzX3RyZWVfbW9kX2xv Z19pbnNlcnRfcm9vdChyb290LT5ub2RlLCBjaGlsZCwgdHJ1ZSk7CgozKSBBdCBidHJmc190cmVl X21vZF9sb2dfaW5zZXJ0X3Jvb3QoKSB3ZSBjcmVhdGUgYSB0cmVlIG1vZCBsb2cgb3BlcmF0aW9u CiAgIG9mIHR5cGUgQlRSRlNfTU9EX0xPR19LRVlfUkVNT1ZFX1dISUxFX0ZSRUVJTkcsIHdpdGgg YSAtPmxvZ2ljYWwgZmllbGQKICAgcG9pbnRpbmcgdG8gZWJYLT5zdGFydC4gV2Ugb25seSBoYXZl IG9uZSBpdGVtIGluIGViIFgsIHNvIHdlIGNyZWF0ZQogICBvbmx5IG9uZSB0cmVlIG1vZCBsb2cg b3BlcmF0aW9uLCBhbmQgc3RvcmUgaW4gdGhlICJ0bV9saXN0IiBhcnJheTsKCjQpIFRoZW4sIHN0 aWxsIGF0IGJ0cmZzX3RyZWVfbW9kX2xvZ19pbnNlcnRfcm9vdCgpLCB3ZSBjcmVhdGUgYSB0cmVl IG1vZAogICBsb2cgZWxlbWVudCBvZiBvcGVyYXRpb24gdHlwZSBCVFJGU19NT0RfTE9HX1JPT1Rf UkVQTEFDRSwgLT5sb2dpY2FsIHNldAogICB0byBlYlktPnN0YXJ0LCAtPm9sZF9yb290LmxvZ2lj YWwgc2V0IHRvIGViWC0+c3RhcnQsIC0+b2xkX3Jvb3QubGV2ZWwKICAgc2V0IHRvIHRoZSBsZXZl bCBvZiBlYiBYIGFuZCAtPmdlbmVyYXRpb24gc2V0IHRvIHRoZSBnZW5lcmF0aW9uIG9mIGViIFg7 Cgo1KSBUaGVuIGJ0cmZzX3RyZWVfbW9kX2xvZ19pbnNlcnRfcm9vdCgpIGNhbGxzIHRyZWVfbW9k X2xvZ19mcmVlX2ViKCkgd2l0aAogICAidG1fbGlzdCIgYXMgYXJndW1lbnQuIEFmdGVyIHRoYXQs IHRyZWVfbW9kX2xvZ19mcmVlX2ViKCkgY2FsbHMKICAgdHJlZV9tb2RfbG9nX2luc2VydCgpLiBU aGlzIGluc2VydHMgdGhlIG1vZCBsb2cgb3BlcmF0aW9uIG9mIHR5cGUKICAgQlRSRlNfTU9EX0xP R19LRVlfUkVNT1ZFX1dISUxFX0ZSRUVJTkcgZnJvbSBzdGVwIDMgaW50byB0aGUgcmJ0cmVlCiAg IHdpdGggYSBzZXF1ZW5jZSBudW1iZXIgb2YgMiAoYW5kIGZzX2luZm8tPnRyZWVfbW9kX3NlcSBz ZXQgdG8gMik7Cgo2KSBUaGVuLCBhZnRlciBpbnNlcnRpbmcgdGhlICJ0bV9saXN0IiBzaW5nbGUg ZWxlbWVudCBpbnRvIHRoZSB0cmVlIG1vZAogICBsb2cgcmJ0cmVlLCB0aGUgQlRSRlNfTU9EX0xP R19ST09UX1JFUExBQ0UgZWxlbWVudCBpcyBpbnNlcnRlZCwgd2hpY2gKICAgZ2V0cyB0aGUgc2Vx dWVuY2UgbnVtYmVyIDMgKGFuZCBmc19pbmZvLT50cmVlX21vZF9zZXEgc2V0IHRvIDMpOwoKNykg QmFjayB0byBjdHJlZS5jOmJhbGFuY2VfbGV2ZWwoKSwgd2UgZnJlZSBlYiBYIGJ5IGNhbGxpbmcK ICAgYnRyZnNfZnJlZV90cmVlX2Jsb2NrKCkgb24gaXQuIEJlY2F1c2UgZWIgWCB3YXMgY3JlYXRl ZCBpbiB0aGUgY3VycmVudAogICB0cmFuc2FjdGlvbiwgaGFzIG5vIG90aGVyIHJlZmVyZW5jZXMg YW5kIHdyaXRlYmFjayBkaWQgbm90IGhhcHBlbiBmb3IKICAgaXQsIHdlIGFkZCBpdCBiYWNrIHRv IHRoZSBmcmVlIHNwYWNlIGNhY2hlL3RyZWU7Cgo4KSBMYXRlciBzb21lIG90aGVyIHRhc2sgQiBh bGxvY2F0ZXMgdGhlIG1ldGFkYXRhIGV4dGVudCBmcm9tIGViIFgsIHNpbmNlCiAgIGl0IGlzIG1h cmtlZCBhcyBmcmVlIHNwYWNlIGluIHRoZSBzcGFjZSBjYWNoZS90cmVlLCBhbmQgdXNlcyBpdCBh cyBhCiAgIG5vZGUgZm9yIHNvbWUgb3RoZXIgYnRyZWU7Cgo5KSBUaGUgdHJlZSBtb2QgbG9nIHVz ZXIgdGFzayBjYWxscyBidHJmc19zZWFyY2hfb2xkX3Nsb3QoKSwgd2hpY2ggY2FsbHMKICAgYnRy ZnNfZ2V0X29sZF9yb290KCksIGFuZCBmaW5hbGx5IHRoYXQgY2FsbHMgdHJlZV9tb2RfbG9nX29s ZGVzdF9yb290KCkKICAgd2l0aCB0aW1lX3NlcSA9PSAxIGFuZCBlYl9yb290ID09IGViIFk7Cgox MCkgVGhlIGZpcnN0IGl0ZXJhdGlvbiBvZiB0aGUgd2hpbGUgbG9vcCBmaW5kcyB0aGUgdHJlZSBt b2QgbG9nIGVsZW1lbnQKICAgIHdpdGggc2VxdWVuY2UgbnVtYmVyIDMsIGZvciB0aGUgbG9naWNh bCBhZGRyZXNzIG9mIGViIFkgYW5kIG9mIHR5cGUKICAgIEJUUkZTX01PRF9MT0dfUk9PVF9SRVBM QUNFOwoKMTEpIEJlY2F1c2UgdGhlIG9wZXJhdGlvbiB0eXBlIGlzIEJUUkZTX01PRF9MT0dfUk9P VF9SRVBMQUNFLCB3ZSBkb24ndAogICAgYnJlYWsgb3V0IG9mIHRoZSBsb29wLCBhbmQgc2V0IHJv b3RfbG9naWNhbCB0byBwb2ludCB0bwogICAgdG0tPm9sZF9yb290LmxvZ2ljYWwsIHdoaWNoIGNv cnJlc3BvbmRzIHRvIHRoZSBsb2dpY2FsIGFkZHJlc3Mgb2YKICAgIGViIFg7CgoxMikgT24gdGhl IG5leHQgaXRlcmF0aW9uIG9mIHRoZSB3aGlsZSBsb29wLCB0aGUgY2FsbCB0bwogICAgdHJlZV9t b2RfbG9nX3NlYXJjaF9vbGRlc3QoKSByZXR1cm5zIHRoZSBzbWFsbGVzdCB0cmVlIG1vZCBsb2cg ZWxlbWVudAogICAgZm9yIHRoZSBsb2dpY2FsIGFkZHJlc3Mgb2YgZWIgWCwgd2hpY2ggaGFzIGEg c2VxdWVuY2UgbnVtYmVyIG9mIDIsIGFuCiAgICBvcGVyYXRpb24gdHlwZSBvZiBCVFJGU19NT0Rf TE9HX0tFWV9SRU1PVkVfV0hJTEVfRlJFRUlORyBhbmQKICAgIGNvcnJlc3BvbmRzIHRvIHRoZSBv bGQgc2xvdCAwIG9mIGViIFggKGViIFggaGFkIG9ubHkgMSBpdGVtIGluIGl0CiAgICBiZWZvcmUg YmVpbmcgZnJlZWQgYXQgc3RlcCA3KTsKCjEzKSBXZSB0aGVuIGJyZWFrIG91dCBvZiB0aGUgd2hp bGUgbG9vcCBhbmQgcmV0dXJuIHRoZSB0cmVlIG1vZCBsb2cKICAgIG9wZXJhdGlvbiBvZiB0eXBl IEJUUkZTX01PRF9MT0dfUk9PVF9SRVBMQUNFIChlYiBZKSwgYW5kIG5vdCB0aGUgb25lCiAgICBm b3Igc2xvdCAwIG9mIGViIFgsIHRvIGJ0cmZzX2dldF9vbGRfcm9vdCgpOwoKMTQpIEF0IGJ0cmZz X2dldF9vbGRfcm9vdCgpLCB3ZSBwcm9jZXNzIHRoZSBCVFJGU19NT0RfTE9HX1JPT1RfUkVQTEFD RQogICAgb3BlcmF0aW9uIGFuZCBzZXQgImxvZ2ljYWwiIHRvIHRoZSBsb2dpY2FsIGFkZHJlc3Mg b2YgZWIgWCwgd2hpY2ggd2FzCiAgICB0aGUgb2xkIHJvb3QuIFdlIHRoZW4gY2FsbCB0cmVlX21v ZF9sb2dfc2VhcmNoKCkgcGFzc2luZyBpdCB0aGUgbG9naWNhbAogICAgYWRkcmVzcyBvZiBlYiBY IGFuZCB0aW1lX3NlcSA9PSAxOwoKMTUpIEJ1dCBiZWZvcmUgY2FsbGluZyB0cmVlX21vZF9sb2df c2VhcmNoKCksIHRhc2sgQiBsb2NrcyBlYiBYLCBhZGRzIGEKICAgIGtleSB0byBlYiBYLCB3aGlj aCByZXN1bHRzIGluIGFkZGluZyBhIHRyZWUgbW9kIGxvZyBvcGVyYXRpb24gb2YgdHlwZQogICAg QlRSRlNfTU9EX0xPR19LRVlfQURELCB3aXRoIGEgc2VxdWVuY2UgbnVtYmVyIG9mIDQsIHRvIHRo ZSB0cmVlIG1vZAogICAgbG9nLCBhbmQgaW5jcmVtZW50cyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGlu IGViIFggZnJvbSAwIHRvIDEuCiAgICBOb3cgZnNfaW5mby0+dHJlZV9tb2Rfc2VxIGhhcyBhIHZh bHVlIG9mIDQ7CgoxNikgVGFzayBBIHRoZW4gY2FsbHMgdHJlZV9tb2RfbG9nX3NlYXJjaCgpLCB3 aGljaCByZXR1cm5zIHRoZSBtb3N0IHJlY2VudAogICAgdHJlZSBtb2QgbG9nIG9wZXJhdGlvbiBm b3IgZWIgWCwgd2hpY2ggaXMgdGhlIG9uZSBqdXN0IGFkZGVkIGJ5IHRhc2sgQgogICAgYXQgdGhl IHByZXZpb3VzIHN0ZXAsIHdpdGggYSBzZXF1ZW5jZSBudW1iZXIgb2YgNCwgYSB0eXBlIG9mCiAg ICBCVFJGU19NT0RfTE9HX0tFWV9BREQgYW5kIGZvciBzbG90IDA7CgoxNykgQmVmb3JlIHRhc2sg QSBsb2NrcyBhbmQgY2xvbmVzIGViIFgsIHRhc2sgQSBhZGRzIGFub3RoZXIga2V5IHRvIGViIFgs CiAgICB3aGljaCByZXN1bHRzIGluIGFkZGluZyBhIG5ldyBCVFJGU19NT0RfTE9HX0tFWV9BREQg bW9kIGxvZyBvcGVyYXRpb24sCiAgICB3aXRoIGEgc2VxdWVuY2UgbnVtYmVyIG9mIDUsIGZvciBz bG90IDEgb2YgZWIgWCwgaW5jcmVtZW50cyB0aGUKICAgIG51bWJlciBvZiBpdGVtcyBpbiBlYiBY IGZyb20gMSB0byAyLCBhbmQgdW5sb2NrcyBlYiBYLgogICAgTm93IGZzX2luZm8tPnRyZWVfbW9k X3NlcSBoYXMgYSB2YWx1ZSBvZiA1OwoKMTgpIFRhc2sgQSB0aGVuIGxvY2tzIGViIFggYW5kIGNs b25lcyBpdC4gVGhlIGNsb25lIGhhcyBhIHZhbHVlIG9mIDIgZm9yCiAgICB0aGUgbnVtYmVyIG9m IGl0ZW1zIGFuZCB0aGUgcG9pbnRlciAidG0iIHBvaW50cyB0byB0aGUgdHJlZSBtb2QgbG9nCiAg ICBvcGVyYXRpb24gd2l0aCBzZXF1ZW5jZSBudW1iZXIgNCwgbm90IHRoZSBtb3N0IHJlY2VudCBv bmUgd2l0aCBhCiAgICBzZXF1ZW5jZSBudW1iZXIgb2YgNSwgc28gdGhlcmUgaXMgbWlzbWF0Y2gg YmV0d2VlbiB0aGUgbnVtYmVyIG9mCiAgICBtb2QgbG9nIG9wZXJhdGlvbnMgdGhhdCBhcmUgZ29p bmcgdG8gYmUgYXBwbGllZCB0byB0aGUgY2xvbmVkIHZlcnNpb24KICAgIG9mIGViIFggYW5kIHRo ZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGNsb25lOwoKMTkpIFRhc2sgQSB0aGVuIGNhbGxzIHRy ZWVfbW9kX2xvZ19yZXdpbmQoKSB3aXRoIHRoZSBjbG9uZSBvZiBlYiBYLCB0aGUKICAgIHRyZWUg bW9kIGxvZyBvcGVyYXRpb24gd2l0aCBzZXF1ZW5jZSBudW1iZXIgNCBhbmQgYSB0eXBlIG9mCiAg ICBCVFJGU19NT0RfTE9HX0tFWV9BREQsIGFuZCB0aW1lX3NlcSA9PSAxOwoKMjApIEF0IHRyZWVf bW9kX2xvZ19yZXdpbmQoKSwgd2Ugc2V0IHRoZSBsb2NhbCB2YXJpYmFsZSAibiIgd2l0aCBhIHZh bHVlCiAgICBvZiAyLCB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBjbG9uZSBv ZiBlYiBYLgoKICAgIFRoZW4gaW4gdGhlIGZpcnN0IGl0ZXJhdGlvbiBvZiB0aGUgd2hpbGUgbG9v cCwgd2UgcHJvY2VzcyB0aGUgbW9kIGxvZwogICAgb3BlcmF0aW9uIHdpdGggc2VxdWVuY2UgbnVt YmVyIDQsIHdoaWNoIGlzIHRhcmdldGVkIGF0IHNsb3QgMCBhbmQgaGFzCiAgICBhIHR5cGUgb2Yg QlRSRlNfTU9EX0xPR19LRVlfQURELiBUaGlzIHJlc3VsdHMgaW4gZGVjcmVtZW50aW5nICJuIiBm cm9tCiAgICAyIHRvIDEuCgogICAgVGhlbiB3ZSBwaWNrIHRoZSBuZXh0IHRyZWUgbW9kIGxvZyBv cGVyYXRpb24gZm9yIGViIFgsIHdoaWNoIGlzIHRoZQogICAgdHJlZSBtb2QgbG9nIG9wZXJhdGlv biB3aXRoIGEgc2VxdWVuY2UgbnVtYmVyIG9mIDIsIGEgdHlwZSBvZgogICAgQlRSRlNfTU9EX0xP R19LRVlfUkVNT1ZFX1dISUxFX0ZSRUVJTkcgYW5kIGZvciBzbG90IDAsIGl0IGlzIHRoZSBvbmUK ICAgIGFkZGVkIGluIHN0ZXAgNSB0byB0aGUgdHJlZSBtb2QgbG9nIHRyZWUuCgogICAgV2UgZ28g YmFjayB0byB0aGUgdG9wIG9mIHRoZSBsb29wIHRvIHByb2Nlc3MgdGhpcyBtb2QgbG9nIG9wZXJh dGlvbiwKICAgIGFuZCBiZWNhdXNlIGl0cyBzbG90IGlzIDAgYW5kICJuIiBoYXMgYSB2YWx1ZSBv ZiAxLCB3ZSBoaXQgdGhlIEJVR19PTjoKCiAgICAgICAgKC4uLikKICAgICAgICBzd2l0Y2ggKHRt LT5vcCkgewogICAgICAgIGNhc2UgQlRSRlNfTU9EX0xPR19LRVlfUkVNT1ZFX1dISUxFX0ZSRUVJ Tkc6CiAgICAgICAgICAgICAgICBCVUdfT04odG0tPnNsb3QgPCBuKTsKICAgICAgICAgICAgICAg IGZhbGx0aHJvdWdoOwoJKC4uLikKCkZpeCB0aGlzIGJ5IGNoZWNraW5nIGZvciBhIG1vcmUgcmVj ZW50IHRyZWUgbW9kIGxvZyBvcGVyYXRpb24gYWZ0ZXIgbG9ja2luZwphbmQgY2xvbmluZyB0aGUg ZXh0ZW50IGJ1ZmZlciBvZiB0aGUgb2xkIHJvb3Qgbm9kZSwgYW5kIHVzZSBpdCBhcyB0aGUgZmly c3QKb3BlcmF0aW9uIHRvIGFwcGx5IHRvIHRoZSBjbG9uZWQgZXh0ZW50IGJ1ZmZlciB3aGVuIHJl d2luZGluZyBpdC4KClJlcG9ydGVkLWJ5OiBaeWdvIEJsYXhlbGwgPGNlM2c4amRqQHVtYWlsLmZ1 cnJ5dGVycm9yLm9yZz4KTGluazogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtYnRyZnMv MjAyMTA0MDQwNDA3MzIuR1ozMjQ0MEBodW5ncnljYXRzLm9yZy8KRml4ZXM6IDgzNDMyOGE4NDkz MDc5ICgiQnRyZnM6IHRyZWUgbW9kIGxvZydzIG9sZCByb290cyBjb3VsZCBzdGlsbCBiZSBwYXJ0 IG9mIHRoZSB0cmVlIikKU2lnbmVkLW9mZi1ieTogRmlsaXBlIE1hbmFuYSA8ZmRtYW5hbmFAc3Vz ZS5jb20+Ci0tLQogZnMvYnRyZnMvY3RyZWUuYyB8IDIwICsrKysrKysrKysrKysrKysrKysrCiAx IGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2N0 cmVlLmMgYi9mcy9idHJmcy9jdHJlZS5jCmluZGV4IDM0YjkyOWIuLmY0M2NlODIgMTAwNjQ0Ci0t LSBhL2ZzL2J0cmZzL2N0cmVlLmMKKysrIGIvZnMvYnRyZnMvY3RyZWUuYwpAQCAtMTM2NSwxMCAr MTM2NSwzMCBAQCBnZXRfb2xkX3Jvb3Qoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QsIHU2NCB0aW1l X3NlcSkKIAkJCQkgICAiZmFpbGVkIHRvIHJlYWQgdHJlZSBibG9jayAlbGx1IGZyb20gZ2V0X29s ZF9yb290IiwKIAkJCQkgICBsb2dpY2FsKTsKIAkJfSBlbHNlIHsKKwkJCXN0cnVjdCB0cmVlX21v ZF9lbGVtICp0bTI7CisKIAkJCWJ0cmZzX3RyZWVfcmVhZF9sb2NrKG9sZCk7CiAJCQllYiA9IGJ0 cmZzX2Nsb25lX2V4dGVudF9idWZmZXIob2xkKTsKKwkJCS8qCisJCQkgKiBBZnRlciB0aGUgbG9v a3VwIGZvciB0aGUgbW9zdCByZWNlbnQgdHJlZSBtb2Qgb3BlcmF0aW9uCisJCQkgKiBhYm92ZSBh bmQgYmVmb3JlIHdlIGxvY2tlZCBhbmQgY2xvbmVkIHRoZSBleHRlbnQgYnVmZmVyCisJCQkgKiAn b2xkJywgYSBuZXcgdHJlZSBtb2QgbG9nIG9wZXJhdGlvbiBtYXkgaGF2ZSBiZWVuIGFkZGVkLgor CQkJICogU28gbG9va3VwIGZvciBhIG1vcmUgcmVjZW50IG9uZSB0byBtYWtlIHN1cmUgdGhlIG51 bWJlcgorCQkJICogb2YgbW9kIGxvZyBvcGVyYXRpb25zIHdlIHJlcGxheSBpcyBjb25zaXN0ZW50 IHdpdGggdGhlCisJCQkgKiBudW1iZXIgb2YgaXRlbXMgd2UgaGF2ZSBpbiB0aGUgY2xvbmVkIGV4 dGVudCBidWZmZXIsCisJCQkgKiBvdGhlcndpc2Ugd2UgY2FuIGhpdCBhIEJVR19PTiB3aGVuIHJl d2luZGluZyB0aGUgZXh0ZW50CisJCQkgKiBidWZmZXIuCisJCQkgKi8KKwkJCXRtMiA9IHRyZWVf bW9kX2xvZ19zZWFyY2goZnNfaW5mbywgbG9naWNhbCwgdGltZV9zZXEpOwogCQkJYnRyZnNfdHJl ZV9yZWFkX3VubG9jayhvbGQpOwogCQkJZnJlZV9leHRlbnRfYnVmZmVyKG9sZCk7CisJCQlBU1NF UlQodG0yKTsKKwkJCUFTU0VSVCh0bTIgPT0gdG0gfHwgdG0yLT5zZXEgPiB0bS0+c2VxKTsKKwkJ CWlmICghdG0yIHx8IHRtMi0+c2VxIDwgdG0tPnNlcSkgeworCQkJCWZyZWVfZXh0ZW50X2J1ZmZl cihlYik7CisJCQkJcmV0dXJuIE5VTEw7CisJCQl9CisJCQl0bSA9IHRtMjsKIAkJfQogCX0gZWxz ZSBpZiAob2xkX3Jvb3QpIHsKIAkJZWJfcm9vdF9vd25lciA9IGJ0cmZzX2hlYWRlcl9vd25lcihl Yl9yb290KTsKLS0gCjIuMzAuMgoKRnJvbSA5NDA0MGU0Y2NkNGRmNWRmOTE3ODRiNTk4OTcyZmEy ZDU3NTgzNDkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5neXVndWkgPHdhbmd5 dWd1aUBlMTYtdGVjaC5jb20+CkRhdGU6IFRodSwgMjIgQXByIDIwMjEgMDc6NTA6MzEgKzA4MDAK U3ViamVjdDogW1BBVENIXSBidHJmczogYnVnIGZvdW5kIGJ5IHdhbmd5dWd1aSxmaXgtYnktUXUK Ci0tLQogZnMvYnRyZnMvY3RyZWUuaCAgfCAzICsrLQogZnMvYnRyZnMvaW5vZGUuYyAgfCA1ICsr Ky0tCiBmcy9idHJmcy9pb2N0bC5jICB8IDIgKy0KIGZzL2J0cmZzL3Fncm91cC5jIHwgMiArLQog ZnMvYnRyZnMvc2VuZC5jICAgfCA0ICsrLS0KIDUgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25z KCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2N0cmVlLmggYi9mcy9i dHJmcy9jdHJlZS5oCmluZGV4IDlhZTc3NmEuLmM1MzdlZTYgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZz L2N0cmVlLmgKKysrIGIvZnMvYnRyZnMvY3RyZWUuaApAQCAtMzExMCw3ICszMTEwLDggQEAgaW50 IGJ0cmZzX3RydW5jYXRlX2lub2RlX2l0ZW1zKHN0cnVjdCBidHJmc190cmFuc19oYW5kbGUgKnRy YW5zLAogCQkJICAgICAgIHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUsIHU2NCBuZXdfc2l6ZSwK IAkJCSAgICAgICB1MzIgbWluX3R5cGUpOwogCi1pbnQgYnRyZnNfc3RhcnRfZGVsYWxsb2Nfc25h cHNob3Qoc3RydWN0IGJ0cmZzX3Jvb3QgKnJvb3QpOworaW50IGJ0cmZzX3N0YXJ0X2RlbGFsbG9j X3NuYXBzaG90KHN0cnVjdCBidHJmc19yb290ICpyb290LAorCQkJCSAgYm9vbCBpbl9yZWNsYWlt X2NvbnRleHQpOwogaW50IGJ0cmZzX3N0YXJ0X2RlbGFsbG9jX3Jvb3RzKHN0cnVjdCBidHJmc19m c19pbmZvICpmc19pbmZvLCBsb25nIG5yLAogCQkJICAgICAgIGJvb2wgaW5fcmVjbGFpbV9jb250 ZXh0KTsKIGludCBidHJmc19zZXRfZXh0ZW50X2RlbGFsbG9jKHN0cnVjdCBidHJmc19pbm9kZSAq aW5vZGUsIHU2NCBzdGFydCwgdTY0IGVuZCwKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lub2RlLmMg Yi9mcy9idHJmcy9pbm9kZS5jCmluZGV4IGE1MjA3NzUuLmFkZmY5ZmYgMTAwNjQ0Ci0tLSBhL2Zz L2J0cmZzL2lub2RlLmMKKysrIGIvZnMvYnRyZnMvaW5vZGUuYwpAQCAtOTY3NCw3ICs5Njc0LDgg QEAgb3V0OgogCXJldHVybiByZXQ7CiB9CiAKLWludCBidHJmc19zdGFydF9kZWxhbGxvY19zbmFw c2hvdChzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCkKK2ludCBidHJmc19zdGFydF9kZWxhbGxvY19z bmFwc2hvdChzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9vdCwKKwkJCQkgIGJvb2wgaW5fcmVjbGFpbV9j b250ZXh0KQogewogCXN0cnVjdCB3cml0ZWJhY2tfY29udHJvbCB3YmMgPSB7CiAJCS5ucl90b193 cml0ZSA9IExPTkdfTUFYLApAQCAtOTY4Nyw3ICs5Njg4LDcgQEAgaW50IGJ0cmZzX3N0YXJ0X2Rl bGFsbG9jX3NuYXBzaG90KHN0cnVjdCBidHJmc19yb290ICpyb290KQogCWlmICh0ZXN0X2JpdChC VFJGU19GU19TVEFURV9FUlJPUiwgJmZzX2luZm8tPmZzX3N0YXRlKSkKIAkJcmV0dXJuIC1FUk9G UzsKIAotCXJldHVybiBzdGFydF9kZWxhbGxvY19pbm9kZXMocm9vdCwgJndiYywgdHJ1ZSwgZmFs c2UpOworCXJldHVybiBzdGFydF9kZWxhbGxvY19pbm9kZXMocm9vdCwgJndiYywgdHJ1ZSwgaW5f cmVjbGFpbV9jb250ZXh0KTsKIH0KIAogaW50IGJ0cmZzX3N0YXJ0X2RlbGFsbG9jX3Jvb3RzKHN0 cnVjdCBidHJmc19mc19pbmZvICpmc19pbmZvLCBsb25nIG5yLApkaWZmIC0tZ2l0IGEvZnMvYnRy ZnMvaW9jdGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmMKaW5kZXggZThkNTNmZS4uMTIzMzY2OCAxMDA2 NDQKLS0tIGEvZnMvYnRyZnMvaW9jdGwuYworKysgYi9mcy9idHJmcy9pb2N0bC5jCkBAIC0xMDM0 LDcgKzEwMzQsNyBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGJ0cmZzX21rc25hcHNob3QoY29uc3Qg c3RydWN0IHBhdGggKnBhcmVudCwKIAkgKi8KIAlidHJmc19kcmV3X3JlYWRfbG9jaygmcm9vdC0+ c25hcHNob3RfbG9jayk7CiAKLQlyZXQgPSBidHJmc19zdGFydF9kZWxhbGxvY19zbmFwc2hvdChy b290KTsKKwlyZXQgPSBidHJmc19zdGFydF9kZWxhbGxvY19zbmFwc2hvdChyb290LCBmYWxzZSk7 CiAJaWYgKHJldCkKIAkJZ290byBvdXQ7CiAKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3Fncm91cC5j IGIvZnMvYnRyZnMvcWdyb3VwLmMKaW5kZXggZjBiOWVmMS4uMjk5MTI4NyAxMDA2NDQKLS0tIGEv ZnMvYnRyZnMvcWdyb3VwLmMKKysrIGIvZnMvYnRyZnMvcWdyb3VwLmMKQEAgLTM1NzksNyArMzU3 OSw3IEBAIHN0YXRpYyBpbnQgdHJ5X2ZsdXNoX3Fncm91cChzdHJ1Y3QgYnRyZnNfcm9vdCAqcm9v dCkKIAkJcmV0dXJuIDA7CiAJfQogCi0JcmV0ID0gYnRyZnNfc3RhcnRfZGVsYWxsb2Nfc25hcHNo b3Qocm9vdCk7CisJcmV0ID0gYnRyZnNfc3RhcnRfZGVsYWxsb2Nfc25hcHNob3Qocm9vdCwgdHJ1 ZSk7CiAJaWYgKHJldCA8IDApCiAJCWdvdG8gb3V0OwogCWJ0cmZzX3dhaXRfb3JkZXJlZF9leHRl bnRzKHJvb3QsIFU2NF9NQVgsIDAsICh1NjQpLTEpOwpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvc2Vu ZC5jIGIvZnMvYnRyZnMvc2VuZC5jCmluZGV4IDhmMzIzODUuLjhhZThmMTcgMTAwNjQ0Ci0tLSBh L2ZzL2J0cmZzL3NlbmQuYworKysgYi9mcy9idHJmcy9zZW5kLmMKQEAgLTcxMzksNyArNzEzOSw3 IEBAIHN0YXRpYyBpbnQgZmx1c2hfZGVsYWxsb2Nfcm9vdHMoc3RydWN0IHNlbmRfY3R4ICpzY3R4 KQogCWludCBpOwogCiAJaWYgKHJvb3QpIHsKLQkJcmV0ID0gYnRyZnNfc3RhcnRfZGVsYWxsb2Nf c25hcHNob3Qocm9vdCk7CisJCXJldCA9IGJ0cmZzX3N0YXJ0X2RlbGFsbG9jX3NuYXBzaG90KHJv b3QsIGZhbHNlKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJCWJ0cmZzX3dhaXRfb3Jk ZXJlZF9leHRlbnRzKHJvb3QsIFU2NF9NQVgsIDAsIFU2NF9NQVgpOwpAQCAtNzE0Nyw3ICs3MTQ3 LDcgQEAgc3RhdGljIGludCBmbHVzaF9kZWxhbGxvY19yb290cyhzdHJ1Y3Qgc2VuZF9jdHggKnNj dHgpCiAKIAlmb3IgKGkgPSAwOyBpIDwgc2N0eC0+Y2xvbmVfcm9vdHNfY250OyBpKyspIHsKIAkJ cm9vdCA9IHNjdHgtPmNsb25lX3Jvb3RzW2ldLnJvb3Q7Ci0JCXJldCA9IGJ0cmZzX3N0YXJ0X2Rl bGFsbG9jX3NuYXBzaG90KHJvb3QpOworCQlyZXQgPSBidHJmc19zdGFydF9kZWxhbGxvY19zbmFw c2hvdChyb290LCBmYWxzZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCQlidHJmc193 YWl0X29yZGVyZWRfZXh0ZW50cyhyb290LCBVNjRfTUFYLCAwLCBVNjRfTUFYKTsKLS0gCjIuMzAu MgoK --------_6080CB3800000000F395_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="btrfs-mmap-race.patch" Content-Disposition: attachment; filename="btrfs-mmap-race.patch" Content-Transfer-Encoding: base64 RnJvbSBkZWFjOTZjODdjMmU0OGMzYTExMWQ3NWNmM2I5NGQzYmIxNDQyNWQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NlZiBCYWNpayA8am9zZWZAdG94aWNwYW5kYS5jb20+CkRh dGU6IFdlZCwgMTAgRmViIDIwMjEgMTc6MTQ6MzMgLTA1MDAKU3ViamVjdDogW1BBVENIXSBidHJm czogYWRkIGEgaV9tbWFwX2xvY2sgdG8gb3VyIGlub2RlCgpXZSBuZWVkIHRvIGJlIGFibGUgdG8g ZXhjbHVkZSBwYWdlX21rd3JpdGUgZnJvbSBoYXBwZW5pbmcgY29uY3VycmVudGx5CndpdGggY2Vy dGFpbiBvcGVyYXRpb25zLiAgVG8gZmFjaWxpdGF0ZSB0aGlzLCBhZGQgYSBpX21tYXBfbG9jayB0 byBvdXIKaW5vZGUsIGRvd25fcmVhZCgpIGl0IGluIG91ciBta3dyaXRlLCBhbmQgYWRkIGEgbmV3 IElMT0NLIGZsYWcgdG8KaW5kaWNhdGUgdGhhdCB3ZSB3YW50IHRvIHRha2UgdGhlIGlfbW1hcF9s b2NrIGFzIHdlbGwuICBJIHVzZWQgcGFob2xlIHRvCmNoZWNrIHRoZSBzaXplIG9mIHRoZSBidHJm c19pbm9kZSwgdGhlIHNpemVzIGFyZSBhcyBmb2xsb3dzCgpubyBsb2NrZGVwOgpiZWZvcmU6IDEx MjAgKDMgcGVyIDRrIHBhZ2UpCmFmdGVyOiAxMTYwICgzIHBlciA0ayBwYWdlKQoKbG9ja2RlcDoK YmVmb3JlOiAyMDcyICgxIHBlciA0ayBwYWdlKQphZnRlcjogMjIyNCAoMSBwZXIgNGsgcGFnZSkK CldlJ3JlIHNsaWdodGx5IGxhcmdlciBidXQgaXQgZG9lc24ndCBjaGFuZ2UgaG93IG1hbnkgb2Jq ZWN0cyB3ZSBjYW4gZml0CnBlciBwYWdlLgoKUmV2aWV3ZWQtYnk6IEZpbGlwZSBNYW5hbmEgPGZk bWFuYW5hQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBKb3NlZiBCYWNpayA8am9zZWZAdG94aWNw YW5kYS5jb20+ClJldmlld2VkLWJ5OiBEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+ClNp Z25lZC1vZmYtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBzdXNlLmNvbT4KLS0tCiBmcy9idHJm cy9idHJmc19pbm9kZS5oIHwgIDEgKwogZnMvYnRyZnMvY3RyZWUuaCAgICAgICB8ICAxICsKIGZz L2J0cmZzL2lub2RlLmMgICAgICAgfCAxMCArKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDEy IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9mcy9idHJmcy9idHJmc19pbm9kZS5oIGIvZnMv YnRyZnMvYnRyZnNfaW5vZGUuaAppbmRleCAyOGUyMDJlODk2NjAuLjI2ODM3YzNjYTdmNiAxMDA2 NDQKLS0tIGEvZnMvYnRyZnMvYnRyZnNfaW5vZGUuaAorKysgYi9mcy9idHJmcy9idHJmc19pbm9k ZS5oCkBAIC0yMjAsNiArMjIwLDcgQEAgc3RydWN0IGJ0cmZzX2lub2RlIHsKIAkvKiBIb29rIGlu dG8gZnNfaW5mby0+ZGVsYXllZF9pcHV0cyAqLwogCXN0cnVjdCBsaXN0X2hlYWQgZGVsYXllZF9p cHV0OwogCisJc3RydWN0IHJ3X3NlbWFwaG9yZSBpX21tYXBfbG9jazsKIAlzdHJ1Y3QgaW5vZGUg dmZzX2lub2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvY3RyZWUuaCBiL2ZzL2J0cmZz L2N0cmVlLmgKaW5kZXggNTc3NjAyNmM1MzJlLi43NTFhYjlmODBlNGMgMTAwNjQ0Ci0tLSBhL2Zz L2J0cmZzL2N0cmVlLmgKKysrIGIvZnMvYnRyZnMvY3RyZWUuaApAQCAtMzE3OCw2ICszMTc4LDcg QEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBpb21hcF9kaW9fb3BzIGJ0cmZzX2Rpb19vcHM7CiAvKiBJ bm9kZSBsb2NraW5nIHR5cGUgZmxhZ3MsIGJ5IGRlZmF1bHQgdGhlIGV4Y2x1c2l2ZSBsb2NrIGlz IHRha2VuICovCiAjZGVmaW5lIEJUUkZTX0lMT0NLX1NIQVJFRAkoMVUgPDwgMCkKICNkZWZpbmUg QlRSRlNfSUxPQ0tfVFJZIAkoMVUgPDwgMSkKKyNkZWZpbmUgQlRSRlNfSUxPQ0tfTU1BUAkoMVUg PDwgMikKIAogaW50IGJ0cmZzX2lub2RlX2xvY2soc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWdu ZWQgaW50IGlsb2NrX2ZsYWdzKTsKIHZvaWQgYnRyZnNfaW5vZGVfdW5sb2NrKHN0cnVjdCBpbm9k ZSAqaW5vZGUsIHVuc2lnbmVkIGludCBpbG9ja19mbGFncyk7CmRpZmYgLS1naXQgYS9mcy9idHJm cy9pbm9kZS5jIGIvZnMvYnRyZnMvaW5vZGUuYwppbmRleCA1MmRjNWY1MmVhNTguLjBiMDJkMDc4 MDBkYiAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvaW5vZGUuYworKysgYi9mcy9idHJmcy9pbm9kZS5j CkBAIC0xMDIsNiArMTAyLDcgQEAgc3RhdGljIHZvaWQgX19lbmRpb193cml0ZV91cGRhdGVfb3Jk ZXJlZChzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLAogICogQlRSRlNfSUxPQ0tfU0hBUkVEIC0g YWNxdWlyZSBhIHNoYXJlZCBsb2NrIG9uIHRoZSBpbm9kZQogICogQlRSRlNfSUxPQ0tfVFJZIC0g dHJ5IHRvIGFjcXVpcmUgdGhlIGxvY2ssIGlmIGZhaWxzIG9uIGZpcnN0IGF0dGVtcHQKICAqCQkg ICAgIHJldHVybiAtRUFHQUlOCisgKiBCVFJGU19JTE9DS19NTUFQIC0gYWNxdWlyZSBhIHdyaXRl IGxvY2sgb24gdGhlIGlfbW1hcF9sb2NrCiAgKi8KIGludCBidHJmc19pbm9kZV9sb2NrKHN0cnVj dCBpbm9kZSAqaW5vZGUsIHVuc2lnbmVkIGludCBpbG9ja19mbGFncykKIHsKQEAgLTEyMiw2ICsx MjMsOCBAQCBpbnQgYnRyZnNfaW5vZGVfbG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25l ZCBpbnQgaWxvY2tfZmxhZ3MpCiAJCX0KIAkJaW5vZGVfbG9jayhpbm9kZSk7CiAJfQorCWlmIChp bG9ja19mbGFncyAmIEJUUkZTX0lMT0NLX01NQVApCisJCWRvd25fd3JpdGUoJkJUUkZTX0koaW5v ZGUpLT5pX21tYXBfbG9jayk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEzMyw2ICsxMzYsOCBAQCBp bnQgYnRyZnNfaW5vZGVfbG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCB1bnNpZ25lZCBpbnQgaWxv Y2tfZmxhZ3MpCiAgKi8KIHZvaWQgYnRyZnNfaW5vZGVfdW5sb2NrKHN0cnVjdCBpbm9kZSAqaW5v ZGUsIHVuc2lnbmVkIGludCBpbG9ja19mbGFncykKIHsKKwlpZiAoaWxvY2tfZmxhZ3MgJiBCVFJG U19JTE9DS19NTUFQKQorCQl1cF93cml0ZSgmQlRSRlNfSShpbm9kZSktPmlfbW1hcF9sb2NrKTsK IAlpZiAoaWxvY2tfZmxhZ3MgJiBCVFJGU19JTE9DS19TSEFSRUQpCiAJCWlub2RlX3VubG9ja19z aGFyZWQoaW5vZGUpOwogCWVsc2UKQEAgLTg1NDAsNiArODU0NSw3IEBAIHZtX2ZhdWx0X3QgYnRy ZnNfcGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCiAJcmV0ID0gVk1fRkFVTFRf Tk9QQUdFOyAvKiBtYWtlIHRoZSBWTSByZXRyeSB0aGUgZmF1bHQgKi8KIGFnYWluOgorCWRvd25f cmVhZCgmQlRSRlNfSShpbm9kZSktPmlfbW1hcF9sb2NrKTsKIAlsb2NrX3BhZ2UocGFnZSk7CiAJ c2l6ZSA9IGlfc2l6ZV9yZWFkKGlub2RlKTsKIApAQCAtODU2OCw2ICs4NTc0LDcgQEAgdm1fZmF1 bHRfdCBidHJmc19wYWdlX21rd3JpdGUoc3RydWN0IHZtX2ZhdWx0ICp2bWYpCiAJCXVubG9ja19l eHRlbnRfY2FjaGVkKGlvX3RyZWUsIHBhZ2Vfc3RhcnQsIHBhZ2VfZW5kLAogCQkJCSAgICAgJmNh Y2hlZF9zdGF0ZSk7CiAJCXVubG9ja19wYWdlKHBhZ2UpOworCQl1cF9yZWFkKCZCVFJGU19JKGlu b2RlKS0+aV9tbWFwX2xvY2spOwogCQlidHJmc19zdGFydF9vcmRlcmVkX2V4dGVudChvcmRlcmVk LCAxKTsKIAkJYnRyZnNfcHV0X29yZGVyZWRfZXh0ZW50KG9yZGVyZWQpOwogCQlnb3RvIGFnYWlu OwpAQCAtODYyNSw2ICs4NjMyLDcgQEAgdm1fZmF1bHRfdCBidHJmc19wYWdlX21rd3JpdGUoc3Ry dWN0IHZtX2ZhdWx0ICp2bWYpCiAJQlRSRlNfSShpbm9kZSktPmxhc3RfbG9nX2NvbW1pdCA9IEJU UkZTX0koaW5vZGUpLT5yb290LT5sYXN0X2xvZ19jb21taXQ7CiAKIAl1bmxvY2tfZXh0ZW50X2Nh Y2hlZChpb190cmVlLCBwYWdlX3N0YXJ0LCBwYWdlX2VuZCwgJmNhY2hlZF9zdGF0ZSk7CisJdXBf cmVhZCgmQlRSRlNfSShpbm9kZSktPmlfbW1hcF9sb2NrKTsKIAogCWJ0cmZzX2RlbGFsbG9jX3Jl bGVhc2VfZXh0ZW50cyhCVFJGU19JKGlub2RlKSwgUEFHRV9TSVpFKTsKIAlzYl9lbmRfcGFnZWZh dWx0KGlub2RlLT5pX3NiKTsKQEAgLTg2MzMsNiArODY0MSw3IEBAIHZtX2ZhdWx0X3QgYnRyZnNf cGFnZV9ta3dyaXRlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogCiBvdXRfdW5sb2NrOgogCXVubG9j a19wYWdlKHBhZ2UpOworCXVwX3JlYWQoJkJUUkZTX0koaW5vZGUpLT5pX21tYXBfbG9jayk7CiBv dXQ6CiAJYnRyZnNfZGVsYWxsb2NfcmVsZWFzZV9leHRlbnRzKEJUUkZTX0koaW5vZGUpLCBQQUdF X1NJWkUpOwogCWJ0cmZzX2RlbGFsbG9jX3JlbGVhc2Vfc3BhY2UoQlRSRlNfSShpbm9kZSksIGRh dGFfcmVzZXJ2ZWQsIHBhZ2Vfc3RhcnQsCkBAIC04ODg0LDYgKzg4OTMsNyBAQCBzdHJ1Y3QgaW5v ZGUgKmJ0cmZzX2FsbG9jX2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCiAJSU5JVF9MSVNU X0hFQUQoJmVpLT5kZWxhbGxvY19pbm9kZXMpOwogCUlOSVRfTElTVF9IRUFEKCZlaS0+ZGVsYXll ZF9pcHV0KTsKIAlSQl9DTEVBUl9OT0RFKCZlaS0+cmJfbm9kZSk7CisJaW5pdF9yd3NlbSgmZWkt PmlfbW1hcF9sb2NrKTsKIAogCXJldHVybiBpbm9kZTsKIH0KLS0gCjIuMzAuMgoKRnJvbSBkZDk1 NTlmMTczNDM5MTg1Nzg0NzQ0YmEyZDg0Yjg0MTMyNDU2YjFkIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBKb3NlZiBCYWNpayA8am9zZWZAdG94aWNwYW5kYS5jb20+CkRhdGU6IFdlZCwg MTAgRmViIDIwMjEgMTc6MTQ6MzQgLTA1MDAKU3ViamVjdDogW1BBVENIXSBidHJmczogdXNlIGJ0 cmZzX2lub2RlX2xvY2svYnRyZnNfaW5vZGVfdW5sb2NrIGlub2RlIGxvY2sKIGhlbHBlcnMKCkEg ZmV3IHBsYWNlcyB3ZSBpbnRlcm1peCBidHJmc19pbm9kZV9sb2NrIHdpdGggYSBpbm9kZV91bmxv Y2ssIGFuZCBzb21lCnBsYWNlcyB3ZSBqdXN0IHVzZSBpbm9kZV9sb2NrL2lub2RlX3VubG9jayBp bnN0ZWFkIG9mIGJ0cmZzX2lub2RlX2xvY2suCgpOb25lIG9mIHRoZXNlIHBsYWNlcyBhcmUgdXNp bmcgdGhpcyBpbmNvcnJlY3RseSwgYnV0IGFzIHdlIGFkanVzdCBzb21lCm9mIHRoZXNlIGNhbGxl cnMgaXQgd291bGQgYmUgbmljZSB0byBrZWVwIGV2ZXJ5dGhpbmcgY29uc2lzdGVudCwgc28KY29u dmVydCBldmVyeWJvZHkgdG8gdXNlIGJ0cmZzX2lub2RlX2xvY2svYnRyZnNfaW5vZGVfdW5sb2Nr LgoKUmV2aWV3ZWQtYnk6IEZpbGlwZSBNYW5hbmEgPGZkbWFuYW5hQHN1c2UuY29tPgpTaWduZWQt b2ZmLWJ5OiBKb3NlZiBCYWNpayA8am9zZWZAdG94aWNwYW5kYS5jb20+ClJldmlld2VkLWJ5OiBE YXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFN0ZXJi YSA8ZHN0ZXJiYUBzdXNlLmNvbT4KLS0tCiBmcy9idHJmcy9kZWxheWVkLWlub2RlLmMgfCAgNCAr Ky0tCiBmcy9idHJmcy9maWxlLmMgICAgICAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KIGZz L2J0cmZzL2lvY3RsLmMgICAgICAgICB8IDI2ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBm cy9idHJmcy9yZWZsaW5rLmMgICAgICAgfCAgNCArKy0tCiBmcy9idHJmcy9yZWxvY2F0aW9uLmMg ICAgfCAgNCArKy0tCiA1IGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDI4IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2RlbGF5ZWQtaW5vZGUuYyBiL2ZzL2J0cmZz L2RlbGF5ZWQtaW5vZGUuYwppbmRleCBhNDAwMjVkY2ExY2EuLjFhODhmNjIxNGViYyAxMDA2NDQK LS0tIGEvZnMvYnRyZnMvZGVsYXllZC1pbm9kZS5jCisrKyBiL2ZzL2J0cmZzL2RlbGF5ZWQtaW5v ZGUuYwpAQCAtMTU3Myw4ICsxNTczLDggQEAgYm9vbCBidHJmc19yZWFkZGlyX2dldF9kZWxheWVk X2l0ZW1zKHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJICogV2UgY2FuIG9ubHkgZG8gb25lIHJlYWRk aXIgd2l0aCBkZWxheWVkIGl0ZW1zIGF0IGEgdGltZSBiZWNhdXNlIG9mCiAJICogaXRlbS0+cmVh ZGRpcl9saXN0LgogCSAqLwotCWlub2RlX3VubG9ja19zaGFyZWQoaW5vZGUpOwotCWlub2RlX2xv Y2soaW5vZGUpOworCWJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgQlRSRlNfSUxPQ0tfU0hBUkVE KTsKKwlidHJmc19pbm9kZV9sb2NrKGlub2RlLCAwKTsKIAogCW11dGV4X2xvY2soJmRlbGF5ZWRf bm9kZS0+bXV0ZXgpOwogCWl0ZW0gPSBfX2J0cmZzX2ZpcnN0X2RlbGF5ZWRfaW5zZXJ0aW9uX2l0 ZW0oZGVsYXllZF9ub2RlKTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2ZpbGUuYyBiL2ZzL2J0cmZz L2ZpbGUuYwppbmRleCBkMGNiNTEzZDAwMTkuLmVkNjI5YTE4ZTE1OCAxMDA2NDQKLS0tIGEvZnMv YnRyZnMvZmlsZS5jCisrKyBiL2ZzL2J0cmZzL2ZpbGUuYwpAQCAtMjEyMiw3ICsyMTIyLDcgQEAg aW50IGJ0cmZzX3N5bmNfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IHN0YXJ0LCBsb2Zm X3QgZW5kLCBpbnQgZGF0YXN5bmMpCiAJaWYgKHJldCkKIAkJZ290byBvdXQ7CiAKLQlpbm9kZV9s b2NrKGlub2RlKTsKKwlidHJmc19pbm9kZV9sb2NrKGlub2RlLCAwKTsKIAogCWF0b21pY19pbmMo JnJvb3QtPmxvZ19iYXRjaCk7CiAKQEAgLTIxNTQsNyArMjE1NCw3IEBAIGludCBidHJmc19zeW5j X2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBzdGFydCwgbG9mZl90IGVuZCwgaW50IGRh dGFzeW5jKQogCSAqLwogCXJldCA9IHN0YXJ0X29yZGVyZWRfb3BzKGlub2RlLCBzdGFydCwgZW5k KTsKIAlpZiAocmV0KSB7Ci0JCWlub2RlX3VubG9jayhpbm9kZSk7CisJCWJ0cmZzX2lub2RlX3Vu bG9jayhpbm9kZSwgMCk7CiAJCWdvdG8gb3V0OwogCX0KIApAQCAtMjI1NSw3ICsyMjU1LDcgQEAg aW50IGJ0cmZzX3N5bmNfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IHN0YXJ0LCBsb2Zm X3QgZW5kLCBpbnQgZGF0YXN5bmMpCiAJICogZmlsZSBhZ2FpbiwgYnV0IHRoYXQgd2lsbCBlbmQg dXAgdXNpbmcgdGhlIHN5bmNocm9uaXphdGlvbgogCSAqIGluc2lkZSBidHJmc19zeW5jX2xvZyB0 byBrZWVwIHRoaW5ncyBzYWZlLgogCSAqLwotCWlub2RlX3VubG9jayhpbm9kZSk7CisJYnRyZnNf aW5vZGVfdW5sb2NrKGlub2RlLCAwKTsKIAogCWlmIChyZXQgIT0gQlRSRlNfTk9fTE9HX1NZTkMp IHsKIAkJaWYgKCFyZXQpIHsKQEAgLTIyODUsNyArMjI4NSw3IEBAIGludCBidHJmc19zeW5jX2Zp bGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBzdGFydCwgbG9mZl90IGVuZCwgaW50IGRhdGFz eW5jKQogCiBvdXRfcmVsZWFzZV9leHRlbnRzOgogCWJ0cmZzX3JlbGVhc2VfbG9nX2N0eF9leHRl bnRzKCZjdHgpOwotCWlub2RlX3VubG9jayhpbm9kZSk7CisJYnRyZnNfaW5vZGVfdW5sb2NrKGlu b2RlLCAwKTsKIAlnb3RvIG91dDsKIH0KIApAQCAtMjg2Nyw3ICsyODY3LDcgQEAgc3RhdGljIGlu dCBidHJmc19wdW5jaF9ob2xlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxv ZmZfdCBsZW4pCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlub2RlX2xvY2soaW5vZGUp OworCWJ0cmZzX2lub2RlX2xvY2soaW5vZGUsIDApOwogCWlub19zaXplID0gcm91bmRfdXAoaW5v ZGUtPmlfc2l6ZSwgZnNfaW5mby0+c2VjdG9yc2l6ZSk7CiAJcmV0ID0gZmluZF9maXJzdF9ub25f aG9sZShCVFJGU19JKGlub2RlKSwgJm9mZnNldCwgJmxlbik7CiAJaWYgKHJldCA8IDApCkBAIC0y OTA3LDcgKzI5MDcsNyBAQCBzdGF0aWMgaW50IGJ0cmZzX3B1bmNoX2hvbGUoc3RydWN0IGlub2Rl ICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxlbikKIAkJdHJ1bmNhdGVkX2Jsb2NrID0g dHJ1ZTsKIAkJcmV0ID0gYnRyZnNfdHJ1bmNhdGVfYmxvY2soQlRSRlNfSShpbm9kZSksIG9mZnNl dCwgMCwgMCk7CiAJCWlmIChyZXQpIHsKLQkJCWlub2RlX3VubG9jayhpbm9kZSk7CisJCQlidHJm c19pbm9kZV91bmxvY2soaW5vZGUsIDApOwogCQkJcmV0dXJuIHJldDsKIAkJfQogCX0KQEAgLTMw MDgsNyArMzAwOCw3IEBAIHN0YXRpYyBpbnQgYnRyZnNfcHVuY2hfaG9sZShzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQogCQkJCXJldCA9IHJldDI7CiAJCX0K IAl9Ci0JaW5vZGVfdW5sb2NrKGlub2RlKTsKKwlidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIDAp OwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTMzNzYsNyArMzM3Niw3IEBAIHN0YXRpYyBsb25nIGJ0 cmZzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50IG1vZGUsCiAKIAlpZiAobW9kZSAm IEZBTExPQ19GTF9aRVJPX1JBTkdFKSB7CiAJCXJldCA9IGJ0cmZzX3plcm9fcmFuZ2UoaW5vZGUs IG9mZnNldCwgbGVuLCBtb2RlKTsKLQkJaW5vZGVfdW5sb2NrKGlub2RlKTsKKwkJYnRyZnNfaW5v ZGVfdW5sb2NrKGlub2RlLCAwKTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKQEAgLTM0ODYsNyArMzQ4 Niw3IEBAIHN0YXRpYyBsb25nIGJ0cmZzX2ZhbGxvY2F0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgaW50 IG1vZGUsCiAJdW5sb2NrX2V4dGVudF9jYWNoZWQoJkJUUkZTX0koaW5vZGUpLT5pb190cmVlLCBh bGxvY19zdGFydCwgbG9ja2VkX2VuZCwKIAkJCSAgICAgJmNhY2hlZF9zdGF0ZSk7CiBvdXQ6Ci0J aW5vZGVfdW5sb2NrKGlub2RlKTsKKwlidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIDApOwogCS8q IExldCBnbyBvZiBvdXIgcmVzZXJ2YXRpb24uICovCiAJaWYgKHJldCAhPSAwICYmICEobW9kZSAm IEZBTExPQ19GTF9aRVJPX1JBTkdFKSkKIAkJYnRyZnNfZnJlZV9yZXNlcnZlZF9kYXRhX3NwYWNl KEJUUkZTX0koaW5vZGUpLCBkYXRhX3Jlc2VydmVkLApkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvaW9j dGwuYyBiL2ZzL2J0cmZzL2lvY3RsLmMKaW5kZXggZThkNTNmZWE0YzYxLi4zNDE1YTlmMDZjODEg MTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lvY3RsLmMKKysrIGIvZnMvYnRyZnMvaW9jdGwuYwpAQCAt MjI2LDcgKzIyNiw3IEBAIHN0YXRpYyBpbnQgYnRyZnNfaW9jdGxfc2V0ZmxhZ3Moc3RydWN0IGZp bGUgKmZpbGUsIHZvaWQgX191c2VyICphcmcpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAot CWlub2RlX2xvY2soaW5vZGUpOworCWJ0cmZzX2lub2RlX2xvY2soaW5vZGUsIDApOwogCWZzZmxh Z3MgPSBidHJmc19tYXNrX2ZzZmxhZ3NfZm9yX3R5cGUoaW5vZGUsIGZzZmxhZ3MpOwogCW9sZF9m c2ZsYWdzID0gYnRyZnNfaW5vZGVfZmxhZ3NfdG9fZnNmbGFncyhiaW5vZGUtPmZsYWdzKTsKIApA QCAtMzUzLDcgKzM1Myw3IEBAIHN0YXRpYyBpbnQgYnRyZnNfaW9jdGxfc2V0ZmxhZ3Moc3RydWN0 IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmcpCiAgb3V0X2VuZF90cmFuczoKIAlidHJmc19l bmRfdHJhbnNhY3Rpb24odHJhbnMpOwogIG91dF91bmxvY2s6Ci0JaW5vZGVfdW5sb2NrKGlub2Rl KTsKKwlidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIDApOwogCW1udF9kcm9wX3dyaXRlX2ZpbGUo ZmlsZSk7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTQ0OSw3ICs0NDksNyBAQCBzdGF0aWMgaW50IGJ0 cmZzX2lvY3RsX2Zzc2V0eGF0dHIoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgX191c2VyICphcmcp CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCWlub2RlX2xvY2soaW5vZGUpOworCWJ0cmZz X2lub2RlX2xvY2soaW5vZGUsIDApOwogCiAJb2xkX2ZsYWdzID0gYmlub2RlLT5mbGFnczsKIAlv bGRfaV9mbGFncyA9IGlub2RlLT5pX2ZsYWdzOwpAQCAtNTAxLDcgKzUwMSw3IEBAIHN0YXRpYyBp bnQgYnRyZnNfaW9jdGxfZnNzZXR4YXR0cihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCBfX3VzZXIg KmFyZykKIAkJaW5vZGUtPmlfZmxhZ3MgPSBvbGRfaV9mbGFnczsKIAl9CiAKLQlpbm9kZV91bmxv Y2soaW5vZGUpOworCWJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgMCk7CiAJbW50X2Ryb3Bfd3Jp dGVfZmlsZShmaWxlKTsKIAogCXJldHVybiByZXQ7CkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBzdGF0 aWMgbm9pbmxpbmUgaW50IGJ0cmZzX21rc3Vidm9sKGNvbnN0IHN0cnVjdCBwYXRoICpwYXJlbnQs CiBvdXRfZHB1dDoKIAlkcHV0KGRlbnRyeSk7CiBvdXRfdW5sb2NrOgotCWlub2RlX3VubG9jayhk aXIpOworCWJ0cmZzX2lub2RlX3VubG9jayhkaXIsIDApOwogCXJldHVybiBlcnJvcjsKIH0KIApA QCAtMTYxMiw3ICsxNjEyLDcgQEAgaW50IGJ0cmZzX2RlZnJhZ19maWxlKHN0cnVjdCBpbm9kZSAq aW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLAogCQkJcmFfaW5kZXggKz0gY2x1c3RlcjsKIAkJfQog Ci0JCWlub2RlX2xvY2soaW5vZGUpOworCQlidHJmc19pbm9kZV9sb2NrKGlub2RlLCAwKTsKIAkJ aWYgKElTX1NXQVBGSUxFKGlub2RlKSkgewogCQkJcmV0ID0gLUVUWFRCU1k7CiAJCX0gZWxzZSB7 CkBAIC0xNjIxLDEzICsxNjIxLDEzIEBAIGludCBidHJmc19kZWZyYWdfZmlsZShzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJCXJldCA9IGNsdXN0ZXJfcGFnZXNfZm9y X2RlZnJhZyhpbm9kZSwgcGFnZXMsIGksIGNsdXN0ZXIpOwogCQl9CiAJCWlmIChyZXQgPCAwKSB7 Ci0JCQlpbm9kZV91bmxvY2soaW5vZGUpOworCQkJYnRyZnNfaW5vZGVfdW5sb2NrKGlub2RlLCAw KTsKIAkJCWdvdG8gb3V0X3JhOwogCQl9CiAKIAkJZGVmcmFnX2NvdW50ICs9IHJldDsKIAkJYmFs YW5jZV9kaXJ0eV9wYWdlc19yYXRlbGltaXRlZChpbm9kZS0+aV9tYXBwaW5nKTsKLQkJaW5vZGVf dW5sb2NrKGlub2RlKTsKKwkJYnRyZnNfaW5vZGVfdW5sb2NrKGlub2RlLCAwKTsKIAogCQlpZiAo bmV3ZXJfdGhhbikgewogCQkJaWYgKG5ld2VyX29mZiA9PSAodTY0KS0xKQpAQCAtMTY3NSw5ICsx Njc1LDkgQEAgaW50IGJ0cmZzX2RlZnJhZ19maWxlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVj dCBmaWxlICpmaWxlLAogCiBvdXRfcmE6CiAJaWYgKGRvX2NvbXByZXNzKSB7Ci0JCWlub2RlX2xv Y2soaW5vZGUpOworCQlidHJmc19pbm9kZV9sb2NrKGlub2RlLCAwKTsKIAkJQlRSRlNfSShpbm9k ZSktPmRlZnJhZ19jb21wcmVzcyA9IEJUUkZTX0NPTVBSRVNTX05PTkU7Ci0JCWlub2RlX3VubG9j ayhpbm9kZSk7CisJCWJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgMCk7CiAJfQogCWlmICghZmls ZSkKIAkJa2ZyZWUocmEpOwpAQCAtMzExMiw5ICszMTEyLDkgQEAgc3RhdGljIG5vaW5saW5lIGlu dCBidHJmc19pb2N0bF9zbmFwX2Rlc3Ryb3koc3RydWN0IGZpbGUgKmZpbGUsCiAJCWdvdG8gb3V0 X2RwdXQ7CiAJfQogCi0JaW5vZGVfbG9jayhpbm9kZSk7CisJYnRyZnNfaW5vZGVfbG9jayhpbm9k ZSwgMCk7CiAJZXJyID0gYnRyZnNfZGVsZXRlX3N1YnZvbHVtZShkaXIsIGRlbnRyeSk7Ci0JaW5v ZGVfdW5sb2NrKGlub2RlKTsKKwlidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIDApOwogCWlmICgh ZXJyKSB7CiAJCWZzbm90aWZ5X3JtZGlyKGRpciwgZGVudHJ5KTsKIAkJZF9kZWxldGUoZGVudHJ5 KTsKQEAgLTMxMjMsNyArMzEyMyw3IEBAIHN0YXRpYyBub2lubGluZSBpbnQgYnRyZnNfaW9jdGxf c25hcF9kZXN0cm95KHN0cnVjdCBmaWxlICpmaWxlLAogb3V0X2RwdXQ6CiAJZHB1dChkZW50cnkp Owogb3V0X3VubG9ja19kaXI6Ci0JaW5vZGVfdW5sb2NrKGRpcik7CisJYnRyZnNfaW5vZGVfdW5s b2NrKGRpciwgMCk7CiBmcmVlX3N1YnZvbF9uYW1lOgogCWtmcmVlKHN1YnZvbF9uYW1lX3B0cik7 CiBmcmVlX3BhcmVudDoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3JlZmxpbmsuYyBiL2ZzL2J0cmZz L3JlZmxpbmsuYwppbmRleCA5ZWJlOTVjYzM1NWIuLmQ2MGVhN2VhNWYyNyAxMDA2NDQKLS0tIGEv ZnMvYnRyZnMvcmVmbGluay5jCisrKyBiL2ZzL2J0cmZzL3JlZmxpbmsuYwpAQCAtODMzLDcgKzgz Myw3IEBAIGxvZmZfdCBidHJmc19yZW1hcF9maWxlX3JhbmdlKHN0cnVjdCBmaWxlICpzcmNfZmls ZSwgbG9mZl90IG9mZiwKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlpZiAoc2FtZV9pbm9kZSkKLQkJ aW5vZGVfbG9jayhzcmNfaW5vZGUpOworCQlidHJmc19pbm9kZV9sb2NrKHNyY19pbm9kZSwgMCk7 CiAJZWxzZQogCQlsb2NrX3R3b19ub25kaXJlY3RvcmllcyhzcmNfaW5vZGUsIGRzdF9pbm9kZSk7 CiAKQEAgLTg0OSw3ICs4NDksNyBAQCBsb2ZmX3QgYnRyZnNfcmVtYXBfZmlsZV9yYW5nZShzdHJ1 Y3QgZmlsZSAqc3JjX2ZpbGUsIGxvZmZfdCBvZmYsCiAKIG91dF91bmxvY2s6CiAJaWYgKHNhbWVf aW5vZGUpCi0JCWlub2RlX3VubG9jayhzcmNfaW5vZGUpOworCQlidHJmc19pbm9kZV91bmxvY2so c3JjX2lub2RlLCAwKTsKIAllbHNlCiAJCXVubG9ja190d29fbm9uZGlyZWN0b3JpZXMoc3JjX2lu b2RlLCBkc3RfaW5vZGUpOwogCmRpZmYgLS1naXQgYS9mcy9idHJmcy9yZWxvY2F0aW9uLmMgYi9m cy9idHJmcy9yZWxvY2F0aW9uLmMKaW5kZXggMjMyZDVkYTdiN2JlLi5iZjI2OWVlMTdlNjggMTAw NjQ0Ci0tLSBhL2ZzL2J0cmZzL3JlbG9jYXRpb24uYworKysgYi9mcy9idHJmcy9yZWxvY2F0aW9u LmMKQEAgLTI1NzgsNyArMjU3OCw3IEBAIHN0YXRpYyBub2lubGluZV9mb3Jfc3RhY2sgaW50IHBy ZWFsbG9jX2ZpbGVfZXh0ZW50X2NsdXN0ZXIoCiAJCXJldHVybiBidHJmc19lbmRfdHJhbnNhY3Rp b24odHJhbnMpOwogCX0KIAotCWlub2RlX2xvY2soJmlub2RlLT52ZnNfaW5vZGUpOworCWJ0cmZz X2lub2RlX2xvY2soJmlub2RlLT52ZnNfaW5vZGUsIDApOwogCWZvciAobnIgPSAwOyBuciA8IGNs dXN0ZXItPm5yOyBucisrKSB7CiAJCXN0YXJ0ID0gY2x1c3Rlci0+Ym91bmRhcnlbbnJdIC0gb2Zm c2V0OwogCQlpZiAobnIgKyAxIDwgY2x1c3Rlci0+bnIpCkBAIC0yNTk2LDcgKzI1OTYsNyBAQCBz dGF0aWMgbm9pbmxpbmVfZm9yX3N0YWNrIGludCBwcmVhbGxvY19maWxlX2V4dGVudF9jbHVzdGVy KAogCQlpZiAocmV0KQogCQkJYnJlYWs7CiAJfQotCWlub2RlX3VubG9jaygmaW5vZGUtPnZmc19p bm9kZSk7CisJYnRyZnNfaW5vZGVfdW5sb2NrKCZpbm9kZS0+dmZzX2lub2RlLCAwKTsKIAogCWlm IChjdXJfb2Zmc2V0IDwgcHJlYWxsb2NfZW5kKQogCQlidHJmc19mcmVlX3Jlc2VydmVkX2RhdGFf c3BhY2Vfbm9xdW90YShpbm9kZS0+cm9vdC0+ZnNfaW5mbywKLS0gCjIuMzAuMgoKRnJvbSBkOTE4 YzQ0MmFlMTIyYjE2MzMwMzk1NDE0ZmY1NWVjNmJjNDkwMjM2IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQpGcm9tOiBKb3NlZiBCYWNpayA8am9zZWZAdG94aWNwYW5kYS5jb20+CkRhdGU6IFdlZCwg MTAgRmViIDIwMjEgMTc6MTQ6MzUgLTA1MDAKU3ViamVjdDogW1BBVENIXSBidHJmczogZXhjbHVk ZSBtbWFwcyB3aGlsZSBkb2luZyByZW1hcAoKRGFycmljayByZXBvcnRlZCBhIHBvdGVudGlhbCBp c3N1ZSB0byBtZSB3aGVyZSB3ZSBjb3VsZCBhbGxvdyBtbWFwCndyaXRlcyBhZnRlciB2YWxpZGF0 aW5nIGEgcGFnZSByYW5nZSBtYXRjaGVkIGluIHRoZSBjYXNlIG9mIGRlZHVwZS4KR2VuZXJhbGx5 IHdlIHJlbHkgb24gbG9jayBwYWdlIC0+IGxvY2sgZXh0ZW50IHdpdGggdGhlIG9yZGVyZWQgZmx1 c2ggdG8KcHJvdGVjdCB1cywgYnV0IHRoaXMgaXMgZG9uZSBhZnRlciB3ZSBjaGVjayB0aGUgcGFn ZXMgYmVjYXVzZSB3ZSB1c2UgdGhlCmdlbmVyaWMgaGVscGVycywgc28gd2UgY291bGQgbW9kaWZ5 IHRoZSBwYWdlIGluIGJldHdlZW4gZG9pbmcgdGhlIGNoZWNrCmFuZCBsb2NraW5nIHRoZSByYW5n ZS4KClRoZXJlIGFsc28gZXhpc3RzIGEgZGVhZGxvY2ssIGFzIGRlc2NyaWJlZCBieSBGaWxpcGUK CiIiIgpXaGVuIGNsb25pbmcgYSBmaWxlIHJhbmdlLCB3ZSBsb2NrIHRoZSBpbm9kZXMsIGZsdXNo IGFueSBkZWxhbGxvYyB3aXRoaW4KdGhlIHJlc3BlY3RpdmUgZmlsZSByYW5nZXMsIHdhaXQgZm9y IGFueSBvcmRlcmVkIGV4dGVudHMgYW5kIHRoZW4gbG9jayB0aGUKZmlsZSByYW5nZXMgaW4gYm90 aCBpbm9kZXMuIFRoaXMgbWVhbnMgdGhhdCByaWdodCBhZnRlciB3ZSBmbHVzaCBkZWxhbGxvYwph bmQgYmVmb3JlIHdlIGxvY2sgdGhlIGZpbGUgcmFuZ2VzLCBtZW1vcnkgbWFwcGVkIHdyaXRlcyBj YW4gY29tZSBpbiBhbmQKZGlydHkgcGFnZXMgaW4gdGhlIGZpbGUgcmFuZ2VzIG9mIHRoZSBjbG9u ZSBvcGVyYXRpb24uCgpNb3N0IG9mIHRoZSB0aW1lIHRoaXMgaXMgaGFybWxlc3MgYW5kIGNhdXNl cyBubyBwcm9ibGVtcy4gSG93ZXZlciwgaWYgd2UKYXJlIGxvdyBvbiBhdmFpbGFibGUgbWV0YWRh dGEgc3BhY2UsIHdlIGNhbiBsYXRlciBlbmQgdXAgaW4gYSBkZWFkbG9jawp3aGVuIHN0YXJ0aW5n IGEgdHJhbnNhY3Rpb24gdG8gcmVwbGFjZSBmaWxlIGV4dGVudCBpdGVtcy4gVGhpcyBoYXBwZW5z IGlmCndoZW4gYWxsb2NhdGluZyBtZXRhZGF0YSBzcGFjZSBmb3IgdGhlIHRyYW5zYWN0aW9uLCB3 ZSBuZWVkIHRvIHdhaXQgZm9yCnRoZSBhc3luYyByZWNsYWltIHRocmVhZCB0byByZWxlYXNlIHNw YWNlIGFuZCB0aGUgcmVjbGFpbSB0aHJlYWQgbmVlZHMgdG8KZmx1c2ggZGVsYWxsb2MgZm9yIHRo ZSBpbm9kZSB0aGF0IGdvdCB0aGUgbWVtb3J5IG1hcHBlZCB3cml0ZSBhbmQgaGFzIGl0cwpyYW5n ZSBsb2NrZWQgYnkgdGhlIGNsb25lIHRhc2suCgpCYXNpY2FsbHkgd2hhdCBoYXBwZW5zIGlzIHRo ZSBmb2xsb3dpbmc6CgoxKSBBIGNsb25lIG9wZXJhdGlvbiBsb2NrcyBpbm9kZXMgQSBhbmQgQiwg Zmx1c2hlcyBkZWxhbGxvYyBmb3IgYm90aAogICBpbm9kZXMgaW4gdGhlIHJlc3BlY3RpdmUgZmls ZSByYW5nZXMgYW5kIHdhaXRzIGZvciBhbnkgb3JkZXJlZCBleHRlbnRzCiAgIGluIHRob3NlIHJh bmdlcyB0byBjb21wbGV0ZTsKCjIpIEJlZm9yZSB0aGUgY2xvbmUgdGFzayBsb2NrcyB0aGUgZmls ZSByYW5nZXMsIGFub3RoZXIgdGFzayBkb2VzIGEKICAgbWVtb3J5IG1hcHBlZCB3cml0ZSAod2hp Y2ggZG9lcyBub3QgbG9jayB0aGUgaW5vZGUpIGZvciBvbmUgb2YgdGhlCiAgIGlub2RlcyBvZiB0 aGUgY2xvbmUgb3BlcmF0aW9uLiBTbyBub3cgd2UgaGF2ZSBhIGRpcnR5IHBhZ2UgaW4gb25lIG9m CiAgIHRoZSByYW5nZXMgdXNlZCBieSB0aGUgY2xvbmUgb3BlcmF0aW9uOwoKMykgVGhlIGNsb25l IG9wZXJhdGlvbiBsb2NrcyB0aGUgZmlsZSByYW5nZXMgZm9yIGlub2RlcyBBIGFuZCBCOwoKNCkg TGF0ZXIsIHdoZW4gaXRlcmF0aW5nIG92ZXIgdGhlIGZpbGUgZXh0ZW50cyBvZiBpbm9kZSBBLCB0 aGUgY2xvbmUKICAgdGFzayBhdHRlbXB0cyB0byBzdGFydCBhIHRyYW5zYWN0aW9uLiBUaGVyZSdz IG5vdCBlbm91Z2ggYXZhaWxhYmxlCiAgIGZyZWUgbWV0YWRhdGEgc3BhY2UsIHNvIHRoZSBhc3lu YyByZWNsYWltIHRhc2sgaXMgc3RhcnRlZCAoaWYgbm90CiAgIHJ1bm5pbmcgYWxyZWFkeSkgYW5k IHdlIHdhaXQgZm9yIHNvbWVvbmUgdG8gd2FrZSB1cyB1cCBvbiBvdXIKICAgcmVzZXJ2YXRpb24g dGlja2V0OwoKNSkgVGhlIGFzeW5jIHJlY2xhaW0gdGFzayBpcyBub3QgYWJsZSB0byByZWxlYXNl IHNwYWNlIGJ5IGFueSBvdGhlcgogICBtZWFucyBhbmQgZGVjaWRlcyB0byBmbHVzaCBkZWxhbGxv YyBmb3IgdGhlIGlub2RlIG9mIHRoZSBjbG9uZQogICBvcGVyYXRpb247Cgo2KSBUaGUgd29ya3F1 ZXVlIGpvYiB1c2VkIHRvIGZsdXNoIHRoZSBpbm9kZSBibG9ja3Mgd2hlbiBzdGFydGluZwogICBk ZWxhbGxvYyBmb3IgdGhlIGlub2RlLCBzaW5jZSB0aGUgZmlsZSByYW5nZSBpcyBjdXJyZW50bHkg bG9ja2VkIGJ5CiAgIHRoZSBjbG9uZSB0YXNrOwoKNykgQnV0IHRoZSBjbG9uZSB0YXNrIGlzIHdh aXRpbmcgb24gaXRzIHJlc2VydmF0aW9uIHRpY2tldCBhbmQgdGhlIGFzeW5jCiAgIHJlY2xhaW0g dGFzayBpcyB3YWl0aW5nIG9uIHRoZSBmbHVzaCBqb2IgdG8gY29tcGxldGUsIHdoaWNoIGNhbid0 CiAgIHByb2dyZXNzIHNpbmNlIHRoZSBjbG9uZSB0YXNrIGhhcyB0aGUgZmlsZSByYW5nZSBsb2Nr ZWQuIFNvIHVubGVzcwogICBzb21lIG90aGVyIHRhc2sgaXMgYWJsZSB0byByZWxlYXNlIHNwYWNl LCBmb3IgZXhhbXBsZSBhbiBvcmRlcmVkCiAgIGV4dGVudCBmb3Igc29tZSBvdGhlciBpbm9kZSBj b21wbGV0ZXMsIHdlIGhhdmUgYSBkZWFkbG9jayBiZXR3ZWVuIGFsbAogICB0aGVzZSB0YXNrczsK CldoZW4gdGhpcyBoYXBwZW5zIHN0YWNrIHRyYWNlcyBsaWtlIHRoZSBmb2xsb3dpbmcgc2hvdyB1 cCBpbiBkbWVzZy9zeXNsb2c6CgogSU5GTzogdGFzayBrd29ya2VyL3UxNjoxMToxODEwODMwIGJs b2NrZWQgZm9yIG1vcmUgdGhhbiAxMjAgc2Vjb25kcy4KICAgICAgIFRhaW50ZWQ6IEcgICAgQiAg IFcgICAgICAgICA1LjEwLjAtcmM0LWJ0cmZzLW5leHQtNzMgIzEKICJlY2hvIDAgPiAvcHJvYy9z eXMva2VybmVsL2h1bmdfdGFza190aW1lb3V0X3NlY3MiIGRpc2FibGVzIHRoaXMgbWVzc2FnZS4K IHRhc2s6a3dvcmtlci91MTY6MTEgIHN0YXRlOkQgc3RhY2s6ICAgIDAgcGlkOjE4MTA4MzAgcHBp ZDogICAgIDIgZmxhZ3M6MHgwMDAwNDAwMAogV29ya3F1ZXVlOiBidHJmcy1mbHVzaF9kZWxhbGxv YyBidHJmc193b3JrX2hlbHBlciBbYnRyZnNdCiBDYWxsIFRyYWNlOgogIF9fc2NoZWR1bGUrMHg1 ZDEvMHhjZjAKICBzY2hlZHVsZSsweDQ1LzB4ZTAKICBsb2NrX2V4dGVudF9iaXRzKzB4MWU2LzB4 MmQwIFtidHJmc10KICA/IGZpbmlzaF93YWl0KzB4OTAvMHg5MAogIGJ0cmZzX2ludmFsaWRhdGVw YWdlKzB4MzJjLzB4MzkwIFtidHJmc10KICA/IF9fbW9kX21lbWNnX3N0YXRlKzB4OGUvMHgxNjAK ICBfX2V4dGVudF93cml0ZXBhZ2UrMHgyZDQvMHg0MDAgW2J0cmZzXQogIGV4dGVudF93cml0ZV9j YWNoZV9wYWdlcysweDJiMi8weDUwMCBbYnRyZnNdCiAgPyBsb2NrX3JlbGVhc2UrMHgyMGUvMHg0 YzAKICA/IHRyYWNlX2hhcmRpcnFzX29uKzB4MWIvMHhmMAogIGV4dGVudF93cml0ZXBhZ2VzKzB4 NDMvMHg5MCBbYnRyZnNdCiAgPyBsb2NrX2FjcXVpcmUrMHgxYTMvMHg0OTAKICBkb193cml0ZXBh Z2VzKzB4NDMvMHhlMAogID8gX19maWxlbWFwX2ZkYXRhd3JpdGVfcmFuZ2UrMHhhNC8weDEwMAog IF9fZmlsZW1hcF9mZGF0YXdyaXRlX3JhbmdlKzB4YzUvMHgxMDAKICBidHJmc19ydW5fZGVsYWxs b2Nfd29yaysweDE3LzB4NDAgW2J0cmZzXQogIGJ0cmZzX3dvcmtfaGVscGVyKzB4ZjEvMHg2MDAg W2J0cmZzXQogIHByb2Nlc3Nfb25lX3dvcmsrMHgyNGUvMHg1ZTAKICB3b3JrZXJfdGhyZWFkKzB4 NTAvMHgzYjAKICA/IHByb2Nlc3Nfb25lX3dvcmsrMHg1ZTAvMHg1ZTAKICBrdGhyZWFkKzB4MTUz LzB4MTcwCiAgPyBrdGhyZWFkX21vZF9kZWxheWVkX3dvcmsrMHhjMC8weGMwCiAgcmV0X2Zyb21f Zm9yaysweDIyLzB4MzAKIElORk86IHRhc2sga3dvcmtlci91MTY6MToyNDI2MjE3IGJsb2NrZWQg Zm9yIG1vcmUgdGhhbiAxMjAgc2Vjb25kcy4KICAgICAgIFRhaW50ZWQ6IEcgICAgQiAgIFcgICAg ICAgICA1LjEwLjAtcmM0LWJ0cmZzLW5leHQtNzMgIzEKICJlY2hvIDAgPiAvcHJvYy9zeXMva2Vy bmVsL2h1bmdfdGFza190aW1lb3V0X3NlY3MiIGRpc2FibGVzIHRoaXMgbWVzc2FnZS4KIHRhc2s6 a3dvcmtlci91MTY6MSAgIHN0YXRlOkQgc3RhY2s6ICAgIDAgcGlkOjI0MjYyMTcgcHBpZDogICAg IDIgZmxhZ3M6MHgwMDAwNDAwMAogV29ya3F1ZXVlOiBldmVudHNfdW5ib3VuZCBidHJmc19hc3lu Y19yZWNsYWltX21ldGFkYXRhX3NwYWNlIFtidHJmc10KIENhbGwgVHJhY2U6CiAgX19zY2hlZHVs ZSsweDVkMS8weGNmMAogID8ga3ZtX2Nsb2NrX3JlYWQrMHgxNC8weDMwCiAgPyB3YWl0X2Zvcl9j b21wbGV0aW9uKzB4ODEvMHgxMTAKICBzY2hlZHVsZSsweDQ1LzB4ZTAKICBzY2hlZHVsZV90aW1l b3V0KzB4MzBjLzB4NTgwCiAgPyBfcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUrMHgzYy8weDYw CiAgPyBsb2NrX2FjcXVpcmUrMHgxYTMvMHg0OTAKICA/IHRyeV90b193YWtlX3VwKzB4N2EvMHhh MjAKICA/IGxvY2tfcmVsZWFzZSsweDIwZS8weDRjMAogID8gbG9ja19hY3F1aXJlZCsweDE5OS8w eDQ5MAogID8gd2FpdF9mb3JfY29tcGxldGlvbisweDgxLzB4MTEwCiAgd2FpdF9mb3JfY29tcGxl dGlvbisweGFiLzB4MTEwCiAgc3RhcnRfZGVsYWxsb2NfaW5vZGVzKzB4MmFmLzB4MzkwIFtidHJm c10KICBidHJmc19zdGFydF9kZWxhbGxvY19yb290cysweDEyZC8weDI1MCBbYnRyZnNdCiAgZmx1 c2hfc3BhY2UrMHgyNGYvMHg2NjAgW2J0cmZzXQogIGJ0cmZzX2FzeW5jX3JlY2xhaW1fbWV0YWRh dGFfc3BhY2UrMHgxYmIvMHg0ODAgW2J0cmZzXQogIHByb2Nlc3Nfb25lX3dvcmsrMHgyNGUvMHg1 ZTAKICB3b3JrZXJfdGhyZWFkKzB4MjBmLzB4M2IwCiAgPyBwcm9jZXNzX29uZV93b3JrKzB4NWUw LzB4NWUwCiAga3RocmVhZCsweDE1My8weDE3MAogID8ga3RocmVhZF9tb2RfZGVsYXllZF93b3Jr KzB4YzAvMHhjMAogIHJldF9mcm9tX2ZvcmsrMHgyMi8weDMwCiguLi4pCnNldmVyYWwgb3RoZXIg dGFza3MgYmxvY2tlZCBvbiBpbm9kZSBsb2NrcyBoZWxkIGJ5IHRoZSBjbG9uZSB0YXNrIGJlbG93 CiguLi4pCiBSSVA6IDAwMzM6MHg3ZjYxZWZlNzNmZmYKIENvZGU6IFVuYWJsZSB0byBhY2Nlc3Mg b3Bjb2RlIGJ5dGVzIGF0IFJJUCAweDdmNjFlZmU3M2ZkNS4KIFJTUDogMDAyYjowMDAwN2ZmYzMz NzFiYmU4IEVGTEFHUzogMDAwMDAyMDIgT1JJR19SQVg6IDAwMDAwMDAwMDAwMDAxM2MKIFJBWDog ZmZmZmZmZmZmZmZmZmZkYSBSQlg6IDAwMDA3ZmZjMzM3MWJlYTAgUkNYOiAwMDAwN2Y2MWVmZTcz ZmZmCiBSRFg6IDAwMDAwMDAwZmZmZmZmOWMgUlNJOiAwMDAwNTYwZmJkNjA0NjkwIFJESTogMDAw MDAwMDBmZmZmZmY5YwogUkJQOiAwMDAwN2ZmYzMzNzFiZWIwIFIwODogMDAwMDAwMDAwMDAwMDAw MiBSMDk6IDAwMDA1NjBmYmQ1ZDc1ZjAKIFIxMDogMDAwMDU2MGZiZDVkODFmMCBSMTE6IDAwMDAw MDAwMDAwMDAyMDIgUjEyOiAwMDAwMDAwMDAwMDAwMDAyCiBSMTM6IDAwMDAwMDAwMDAwMDAwMGIg UjE0OiAwMDAwN2ZmYzMzNzFiZWEwIFIxNTogMDAwMDdmZmMzMzcxYmViMAogdGFzazogZmRtLXN0 cmVzcyAgICAgICAgc3RhdGU6RCBzdGFjazogICAgMCBwaWQ6MjUwODIzNCBwcGlkOjI1MDgxNTMg ZmxhZ3M6MHgwMDAwNDAwMAogQ2FsbCBUcmFjZToKICBfX3NjaGVkdWxlKzB4NWQxLzB4Y2YwCiAg PyBfcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUrMHgzYy8weDYwCiAgc2NoZWR1bGUrMHg0NS8w eGUwCiAgX19yZXNlcnZlX2J5dGVzKzB4NGE0LzB4YjEwIFtidHJmc10KICA/IGZpbmlzaF93YWl0 KzB4OTAvMHg5MAogIGJ0cmZzX3Jlc2VydmVfbWV0YWRhdGFfYnl0ZXMrMHgyOS8weDE5MCBbYnRy ZnNdCiAgYnRyZnNfYmxvY2tfcnN2X2FkZCsweDFmLzB4NTAgW2J0cmZzXQogIHN0YXJ0X3RyYW5z YWN0aW9uKzB4MmQxLzB4NzYwIFtidHJmc10KICBidHJmc19yZXBsYWNlX2ZpbGVfZXh0ZW50cysw eDEyMC8weDkzMCBbYnRyZnNdCiAgPyBsb2NrX3JlbGVhc2UrMHgyMGUvMHg0YzAKICBidHJmc19j bG9uZSsweDNlNC8weDdlMCBbYnRyZnNdCiAgPyBidHJmc19sb29rdXBfZmlyc3Rfb3JkZXJlZF9l eHRlbnQrMHg4ZS8weDEwMCBbYnRyZnNdCiAgYnRyZnNfY2xvbmVfZmlsZXMrMHhmNi8weDE1MCBb YnRyZnNdCiAgYnRyZnNfcmVtYXBfZmlsZV9yYW5nZSsweDMyNC8weDNkMCBbYnRyZnNdCiAgZG9f Y2xvbmVfZmlsZV9yYW5nZSsweGQ0LzB4MWYwCiAgdmZzX2Nsb25lX2ZpbGVfcmFuZ2UrMHg0ZC8w eDIzMAogID8gbG9ja19yZWxlYXNlKzB4MjBlLzB4NGMwCiAgaW9jdGxfZmlsZV9jbG9uZSsweDhm LzB4YzAKICBkb192ZnNfaW9jdGwrMHgzNDIvMHg3NTAKICBfX3g2NF9zeXNfaW9jdGwrMHg2Mi8w eGIwCiAgZG9fc3lzY2FsbF82NCsweDMzLzB4ODAKICBlbnRyeV9TWVNDQUxMXzY0X2FmdGVyX2h3 ZnJhbWUrMHg0NC8weGE5CiIiIgoKRml4IGJvdGggb2YgdGhlc2UgaXNzdWVzIGJ5IGV4Y2x1ZGlu ZyBtbWFwcyBmcm9tIGhhcHBlbmluZyB3ZSBhcmUgZG9pbmcKYW55IHNvcnQgb2YgcmVtYXAsIHdo aWNoIHByZXZlbnRzIHRoaXMgcmFjZSBjb21wbGV0ZWx5LgoKUmV2aWV3ZWQtYnk6IEZpbGlwZSBN YW5hbmEgPGZkbWFuYW5hQHN1c2UuY29tPgpTaWduZWQtb2ZmLWJ5OiBKb3NlZiBCYWNpayA8am9z ZWZAdG94aWNwYW5kYS5jb20+ClNpZ25lZC1vZmYtYnk6IERhdmlkIFN0ZXJiYSA8ZHN0ZXJiYUBz dXNlLmNvbT4KLS0tCiBmcy9idHJmcy9yZWZsaW5rLmMgfCAzMCArKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3JlZmxpbmsuYyBiL2ZzL2J0cmZzL3JlZmxpbmsu YwppbmRleCBkNjBlYTdlYTVmMjcuLjY3NDY0NjBmZDIxOSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMv cmVmbGluay5jCisrKyBiL2ZzL2J0cmZzL3JlZmxpbmsuYwpAQCAtNjA0LDYgKzYwNCwyMCBAQCBz dGF0aWMgdm9pZCBidHJmc19kb3VibGVfZXh0ZW50X2xvY2soc3RydWN0IGlub2RlICppbm9kZTEs IHU2NCBsb2ZmMSwKIAlsb2NrX2V4dGVudCgmQlRSRlNfSShpbm9kZTIpLT5pb190cmVlLCBsb2Zm MiwgbG9mZjIgKyBsZW4gLSAxKTsKIH0KIAorc3RhdGljIHZvaWQgYnRyZnNfZG91YmxlX21tYXBf bG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlMSwgc3RydWN0IGlub2RlICppbm9kZTIpCit7CisJaWYg KGlub2RlMSA8IGlub2RlMikKKwkJc3dhcChpbm9kZTEsIGlub2RlMik7CisJZG93bl93cml0ZSgm QlRSRlNfSShpbm9kZTEpLT5pX21tYXBfbG9jayk7CisJZG93bl93cml0ZV9uZXN0ZWQoJkJUUkZT X0koaW5vZGUyKS0+aV9tbWFwX2xvY2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKK30KKworc3Rh dGljIHZvaWQgYnRyZnNfZG91YmxlX21tYXBfdW5sb2NrKHN0cnVjdCBpbm9kZSAqaW5vZGUxLCBz dHJ1Y3QgaW5vZGUgKmlub2RlMikKK3sKKwl1cF93cml0ZSgmQlRSRlNfSShpbm9kZTEpLT5pX21t YXBfbG9jayk7CisJdXBfd3JpdGUoJkJUUkZTX0koaW5vZGUyKS0+aV9tbWFwX2xvY2spOworfQor CiBzdGF0aWMgaW50IGJ0cmZzX2V4dGVudF9zYW1lX3JhbmdlKHN0cnVjdCBpbm9kZSAqc3JjLCB1 NjQgbG9mZiwgdTY0IGxlbiwKIAkJCQkgICBzdHJ1Y3QgaW5vZGUgKmRzdCwgdTY0IGRzdF9sb2Zm KQogewpAQCAtODMyLDEwICs4NDYsMTIgQEAgbG9mZl90IGJ0cmZzX3JlbWFwX2ZpbGVfcmFuZ2Uo c3RydWN0IGZpbGUgKnNyY19maWxlLCBsb2ZmX3Qgb2ZmLAogCWlmIChyZW1hcF9mbGFncyAmIH4o UkVNQVBfRklMRV9ERURVUCB8IFJFTUFQX0ZJTEVfQURWSVNPUlkpKQogCQlyZXR1cm4gLUVJTlZB TDsKIAotCWlmIChzYW1lX2lub2RlKQotCQlidHJmc19pbm9kZV9sb2NrKHNyY19pbm9kZSwgMCk7 Ci0JZWxzZQorCWlmIChzYW1lX2lub2RlKSB7CisJCWJ0cmZzX2lub2RlX2xvY2soc3JjX2lub2Rl LCBCVFJGU19JTE9DS19NTUFQKTsKKwl9IGVsc2UgewogCQlsb2NrX3R3b19ub25kaXJlY3Rvcmll cyhzcmNfaW5vZGUsIGRzdF9pbm9kZSk7CisJCWJ0cmZzX2RvdWJsZV9tbWFwX2xvY2soc3JjX2lu b2RlLCBkc3RfaW5vZGUpOworCX0KIAogCXJldCA9IGJ0cmZzX3JlbWFwX2ZpbGVfcmFuZ2VfcHJl cChzcmNfZmlsZSwgb2ZmLCBkc3RfZmlsZSwgZGVzdG9mZiwKIAkJCQkJICAmbGVuLCByZW1hcF9m bGFncyk7CkBAIC04NDgsMTAgKzg2NCwxMiBAQCBsb2ZmX3QgYnRyZnNfcmVtYXBfZmlsZV9yYW5n ZShzdHJ1Y3QgZmlsZSAqc3JjX2ZpbGUsIGxvZmZfdCBvZmYsCiAJCXJldCA9IGJ0cmZzX2Nsb25l X2ZpbGVzKGRzdF9maWxlLCBzcmNfZmlsZSwgb2ZmLCBsZW4sIGRlc3RvZmYpOwogCiBvdXRfdW5s b2NrOgotCWlmIChzYW1lX2lub2RlKQotCQlidHJmc19pbm9kZV91bmxvY2soc3JjX2lub2RlLCAw KTsKLQllbHNlCisJaWYgKHNhbWVfaW5vZGUpIHsKKwkJYnRyZnNfaW5vZGVfdW5sb2NrKHNyY19p bm9kZSwgQlRSRlNfSUxPQ0tfTU1BUCk7CisJfSBlbHNlIHsKKwkJYnRyZnNfZG91YmxlX21tYXBf dW5sb2NrKHNyY19pbm9kZSwgZHN0X2lub2RlKTsKIAkJdW5sb2NrX3R3b19ub25kaXJlY3Rvcmll cyhzcmNfaW5vZGUsIGRzdF9pbm9kZSk7CisJfQogCiAJcmV0dXJuIHJldCA8IDAgPyByZXQgOiBs ZW47CiB9Ci0tIAoyLjMwLjIKCkZyb20gNDkyODYxZGYwM2I2N2U1NzdkOGIzY2IzOGFhZmVjNGU4 NWVmNzMyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9zZWYgQmFjaWsgPGpvc2Vm QHRveGljcGFuZGEuY29tPgpEYXRlOiBXZWQsIDEwIEZlYiAyMDIxIDE3OjE0OjM2IC0wNTAwClN1 YmplY3Q6IFtQQVRDSF0gYnRyZnM6IGV4Y2x1ZGUgbW1hcCBmcm9tIGhhcHBlbmluZyBkdXJpbmcg YWxsIGZhbGxvY2F0ZQogb3BlcmF0aW9ucwoKVGhlcmUncyBhIHNtYWxsIHdpbmRvdyB3aGVyZSBh IGRlYWRsb2NrIGNhbiBoYXBwZW4gYmV0d2VlbiBmYWxsb2NhdGUgYW5kCm1tYXAuICBUaGlzIGlz IGRlc2NyaWJlZCBpbiBkZXRhaWwgYnkgRmlsaXBlOgoKIiIiCldoZW4gZG9pbmcgYSBmYWxsb2Nh dGUgb3BlcmF0aW9uIHdlIGxvY2sgdGhlIGlub2RlLCBmbHVzaCBkZWxhbGxvYyB3aXRoaW4KdGhl IHRhcmdldCByYW5nZSwgd2FpdCBmb3IgYW55IG9yZGVyZWQgZXh0ZW50cyB0byBjb21wbGV0ZSBh bmQgdGhlbiBsb2NrCnRoZSBmaWxlIHJhbmdlLiBCZWZvcmUgd2UgbG9jayB0aGUgcmFuZ2UgYW5k IGFmdGVyIHdlIGZsdXNoIGRlbGFsbG9jLAp0aGVyZSBpcyBhIHRpbWUgd2luZG93IHdoZXJlIGFu b3RoZXIgdGFzayBjYW4gY29tZSBpbiBhbmQgZG8gYSBtZW1vcnkKbWFwcGVkIHdyaXRlIGZvciBh IHBhZ2Ugd2l0aGluIHRoZSBmYWxsb2NhdGUgcmFuZ2UuCgpUaGlzIG1lYW5zIHRoYXQgYWZ0ZXIg ZmFsbG9jYXRlIGxvY2tzIHRoZSByYW5nZSwgdGhlcmUgY2FuIGJlIGEgZGlydHkgcGFnZQppbiB0 aGUgcmFuZ2UuIE1vcmUgb2Z0ZW4gdGhhbiBub3QsIHRoaXMgZG9lcyBub3QgY2F1c2UgYW55IHBy b2JsZW0uClRoZSBleGNlcHRpb24gaXMgd2hlbiB3ZSBhcmUgbG93IG9uIGF2YWlsYWJsZSBtZXRh ZGF0YSBzcGFjZSwgYmVjYXVzZSBhbgpmYWxsb2NhdGUgb3BlcmF0aW9uIG5lZWRzIHRvIHN0YXJ0 IGEgdHJhbnNhY3Rpb24gd2hpbGUgaG9sZGluZyB0aGUgZmlsZQpyYW5nZSBsb2NrZWQsIGVpdGhl ciB0aHJvdWdoIGJ0cmZzX3ByZWFsbG9jX2ZpbGVfcmFuZ2UoKSBvciB0aHJvdWdoIHRoZQpjYWxs IHRvIGJ0cmZzX2ZhbGxvY2F0ZV91cGRhdGVfaXNpemUoKS4gSWYgdGhhdCdzIHRoZSBjYXNlLCB3 ZSBjYW4gZW5kIHVwCmluIGEgZGVhZGxvY2suIFRoZSBmb2xsb3dpbmcgbGlzdCBvZiBzdGVwcyBl eHBsYWlucyBob3cgdGhhdCBoYXBwZW5zOgoKMSkgQSBmYWxsb2NhdGUgb3BlcmF0aW9uIHN0YXJ0 cywgbG9ja3MgdGhlIGlub2RlLCBmbHVzaGVzIGRlbGFsbG9jIGluIHRoZQogICByYW5nZSBhbmQg d2FpdHMgZm9yIG9yZGVyZWQgZXh0ZW50cyBpbiB0aGUgcmFuZ2UgdG8gY29tcGxldGU7CgoyKSBC ZWZvcmUgdGhlIGZhbGxvY2F0ZSB0YXNrIGxvY2tzIHRoZSBmaWxlIHJhbmdlLCBhbm90aGVyIHRh c2sgZG9lcyBhCiAgIG1lbW9yeSBtYXBwZWQgd3JpdGUgZm9yIGEgcGFnZSBpbiB0aGUgZmFsbG9j YXRlIHRhcmdldCByYW5nZS4gVGhpcyBpcwogICBwb3NzaWJsZSBzaW5jZSBtZW1vcnkgbWFwcGVk IHdyaXRlcyBkbyBub3QgKGFuZCBjYW4gbm90KSBsb2NrIHRoZQogICBpbm9kZTsKCjMpIFRoZSBm YWxsb2NhdGUgdGFzayBsb2NrcyB0aGUgZmlsZSByYW5nZS4gQXQgdGhpcyBwb2ludCB0aGVyZSBp cyBvbmUKICAgZGlydHkgcGFnZSBpbiB0aGUgcmFuZ2UgKGR1ZSB0byB0aGUgbWVtb3J5IG1hcHBl ZCB3cml0ZSk7Cgo0KSBXaGVuIHRoZSBmYWxsb2NhdGUgdGFzayBhdHRlbXB0cyB0byBzdGFydCBh IHRyYW5zYWN0aW9uLCBpdCBibG9ja3Mgd2hlbgogICBhdHRlbXB0aW5nIHRvIHJlc2VydmUgbWV0 YWRhdGEgc3BhY2UsIHNpbmNlIHdlIGFyZSBsb3cgb24gYXZhaWxhYmxlCiAgIG1ldGFkYXRhIHNw YWNlLiBCZWZvcmUgYmxvY2tpbmcgKHdhaXQgb24gaXRzIHJlc2VydmF0aW9uIHRpY2tldCksIGl0 CiAgIHN0YXJ0cyB0aGUgYXN5bmMgcmVjbGFpbSB0YXNrIChpZiBub3QgcnVubmluZyBhbHJlYWR5 KTsKCjUpIFRoZSBhc3luYyByZWNsYWltIHRhc2sgaXMgbm90IGFibGUgdG8gcmVsZWFzZSBzcGFj ZSB0aHJvdWdoIGFueSBvdGhlcgogICBtZWFucywgc28gaXQgZGVjaWRlcyB0byBmbHVzaCBkZWxh bGxvYyBmb3IgaW5vZGVzIHdpdGggZGlydHkgcGFnZXMuCiAgIEl0IGZpbmRzIHRoYXQgdGhlIGlu b2RlIHVzZWQgaW4gdGhlIGZhbGxvY2F0ZSBvcGVyYXRpb24gaGFzIGEgZGlydHkKICAgcGFnZSBh bmQgdGhlcmVmb3JlIHF1ZXVlcyBhIGpvYiAoZnNfaW5mby0+Zmx1c2hfd29ya2VycyB3b3JrcXVl dWUpIHRvCiAgIGZsdXNoIGRlbGFsbG9jIGZvciB0aGF0IGlub2RlIGFuZCB3YWl0cyBvbiB0aGF0 IGpvYiB0byBjb21wbGV0ZTsKCjYpIFRoZSBmbHVzaCBqb2IgYmxvY2tzIHdoZW4gYXR0ZW1wdGlu ZyB0byBsb2NrIHRoZSBmaWxlIHJhbmdlIGJlY2F1c2UKICAgaXQgaXMgY3VycmVudGx5IGxvY2tl ZCBieSB0aGUgZmFsbG9jYXRlIHRhc2s7Cgo3KSBUaGUgZmFsbG9jYXRlIHRhc2sga2VlcHMgd2Fp dGluZyBmb3IgaXRzIG1ldGFkYXRhIHJlc2VydmF0aW9uLCB3YWl0aW5nCiAgIGZvciBhIHdha2V1 cCBvbiBpdHMgcmVzZXJ2YXRpb24gdGlja2V0LiBUaGUgYXN5bmMgcmVjbGFpbSB0YXNrIGlzCiAg IHdhaXRpbmcgb24gdGhlIGZsdXNoIGpvYiwgd2hpY2ggaW4gdHVybiBpcyB3YWl0aW5nIGZvciBs b2NraW5nIHRoZSBmaWxlCiAgIHJhbmdlIHRoYXQgaXMgY3VycmVudGx5IGxvY2tlZCBieSB0aGUg ZmFsbG9jYXRlIHRhc2suIFNvIHVubGVzcyBzb21lCiAgIG90aGVyIHRhc2sgaXMgYWJsZSB0byBy ZWxlYXNlIGVub3VnaCBtZXRhZGF0YSBzcGFjZSwgZm9yIGV4YW1wbGUgYW4KICAgb3JkZXJlZCBl eHRlbnQgZm9yIHNvbWUgb3RoZXIgaW5vZGUgY29tcGxldGVzLCB3ZSBlbmQgdXAgaW4gYSBkZWFk bG9jawogICBiZXR3ZWVuIGFsbCB0aGVzZSB0YXNrcy4KCldoZW4gdGhpcyBoYXBwZW5zIHN0YWNr IHRyYWNlcyBsaWtlIHRoZSBmb2xsb3dpbmcgc2hvdyB1cCBpbiBkbWVzZy9zeXNsb2c6CgogSU5G TzogdGFzayBrd29ya2VyL3UxNjoxMToxODEwODMwIGJsb2NrZWQgZm9yIG1vcmUgdGhhbiAxMjAg c2Vjb25kcy4KICAgICAgIFRhaW50ZWQ6IEcgICAgQiAgIFcgICAgICAgICA1LjEwLjAtcmM0LWJ0 cmZzLW5leHQtNzMgIzEKICJlY2hvIDAgPiAvcHJvYy9zeXMva2VybmVsL2h1bmdfdGFza190aW1l b3V0X3NlY3MiIGRpc2FibGVzIHRoaXMgbWVzc2FnZS4KIHRhc2s6a3dvcmtlci91MTY6MTEgIHN0 YXRlOkQgc3RhY2s6ICAgIDAgcGlkOjE4MTA4MzAgcHBpZDogICAgIDIgZmxhZ3M6MHgwMDAwNDAw MAogV29ya3F1ZXVlOiBidHJmcy1mbHVzaF9kZWxhbGxvYyBidHJmc193b3JrX2hlbHBlciBbYnRy ZnNdCiBDYWxsIFRyYWNlOgogIF9fc2NoZWR1bGUrMHg1ZDEvMHhjZjAKICBzY2hlZHVsZSsweDQ1 LzB4ZTAKICBsb2NrX2V4dGVudF9iaXRzKzB4MWU2LzB4MmQwIFtidHJmc10KICA/IGZpbmlzaF93 YWl0KzB4OTAvMHg5MAogIGJ0cmZzX2ludmFsaWRhdGVwYWdlKzB4MzJjLzB4MzkwIFtidHJmc10K ICA/IF9fbW9kX21lbWNnX3N0YXRlKzB4OGUvMHgxNjAKICBfX2V4dGVudF93cml0ZXBhZ2UrMHgy ZDQvMHg0MDAgW2J0cmZzXQogIGV4dGVudF93cml0ZV9jYWNoZV9wYWdlcysweDJiMi8weDUwMCBb YnRyZnNdCiAgPyBsb2NrX3JlbGVhc2UrMHgyMGUvMHg0YzAKICA/IHRyYWNlX2hhcmRpcnFzX29u KzB4MWIvMHhmMAogIGV4dGVudF93cml0ZXBhZ2VzKzB4NDMvMHg5MCBbYnRyZnNdCiAgPyBsb2Nr X2FjcXVpcmUrMHgxYTMvMHg0OTAKICBkb193cml0ZXBhZ2VzKzB4NDMvMHhlMAogID8gX19maWxl bWFwX2ZkYXRhd3JpdGVfcmFuZ2UrMHhhNC8weDEwMAogIF9fZmlsZW1hcF9mZGF0YXdyaXRlX3Jh bmdlKzB4YzUvMHgxMDAKICBidHJmc19ydW5fZGVsYWxsb2Nfd29yaysweDE3LzB4NDAgW2J0cmZz XQogIGJ0cmZzX3dvcmtfaGVscGVyKzB4ZjEvMHg2MDAgW2J0cmZzXQogIHByb2Nlc3Nfb25lX3dv cmsrMHgyNGUvMHg1ZTAKICB3b3JrZXJfdGhyZWFkKzB4NTAvMHgzYjAKICA/IHByb2Nlc3Nfb25l X3dvcmsrMHg1ZTAvMHg1ZTAKICBrdGhyZWFkKzB4MTUzLzB4MTcwCiAgPyBrdGhyZWFkX21vZF9k ZWxheWVkX3dvcmsrMHhjMC8weGMwCiAgcmV0X2Zyb21fZm9yaysweDIyLzB4MzAKIElORk86IHRh c2sga3dvcmtlci91MTY6MToyNDI2MjE3IGJsb2NrZWQgZm9yIG1vcmUgdGhhbiAxMjAgc2Vjb25k cy4KICAgICAgIFRhaW50ZWQ6IEcgICAgQiAgIFcgICAgICAgICA1LjEwLjAtcmM0LWJ0cmZzLW5l eHQtNzMgIzEKICJlY2hvIDAgPiAvcHJvYy9zeXMva2VybmVsL2h1bmdfdGFza190aW1lb3V0X3Nl Y3MiIGRpc2FibGVzIHRoaXMgbWVzc2FnZS4KIHRhc2s6a3dvcmtlci91MTY6MSAgIHN0YXRlOkQg c3RhY2s6ICAgIDAgcGlkOjI0MjYyMTcgcHBpZDogICAgIDIgZmxhZ3M6MHgwMDAwNDAwMAogV29y a3F1ZXVlOiBldmVudHNfdW5ib3VuZCBidHJmc19hc3luY19yZWNsYWltX21ldGFkYXRhX3NwYWNl IFtidHJmc10KIENhbGwgVHJhY2U6CiAgX19zY2hlZHVsZSsweDVkMS8weGNmMAogID8ga3ZtX2Ns b2NrX3JlYWQrMHgxNC8weDMwCiAgPyB3YWl0X2Zvcl9jb21wbGV0aW9uKzB4ODEvMHgxMTAKICBz Y2hlZHVsZSsweDQ1LzB4ZTAKICBzY2hlZHVsZV90aW1lb3V0KzB4MzBjLzB4NTgwCiAgPyBfcmF3 X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUrMHgzYy8weDYwCiAgPyBsb2NrX2FjcXVpcmUrMHgxYTMv MHg0OTAKICA/IHRyeV90b193YWtlX3VwKzB4N2EvMHhhMjAKICA/IGxvY2tfcmVsZWFzZSsweDIw ZS8weDRjMAogID8gbG9ja19hY3F1aXJlZCsweDE5OS8weDQ5MAogID8gd2FpdF9mb3JfY29tcGxl dGlvbisweDgxLzB4MTEwCiAgd2FpdF9mb3JfY29tcGxldGlvbisweGFiLzB4MTEwCiAgc3RhcnRf ZGVsYWxsb2NfaW5vZGVzKzB4MmFmLzB4MzkwIFtidHJmc10KICBidHJmc19zdGFydF9kZWxhbGxv Y19yb290cysweDEyZC8weDI1MCBbYnRyZnNdCiAgZmx1c2hfc3BhY2UrMHgyNGYvMHg2NjAgW2J0 cmZzXQogIGJ0cmZzX2FzeW5jX3JlY2xhaW1fbWV0YWRhdGFfc3BhY2UrMHgxYmIvMHg0ODAgW2J0 cmZzXQogIHByb2Nlc3Nfb25lX3dvcmsrMHgyNGUvMHg1ZTAKICB3b3JrZXJfdGhyZWFkKzB4MjBm LzB4M2IwCiAgPyBwcm9jZXNzX29uZV93b3JrKzB4NWUwLzB4NWUwCiAga3RocmVhZCsweDE1My8w eDE3MAogID8ga3RocmVhZF9tb2RfZGVsYXllZF93b3JrKzB4YzAvMHhjMAogIHJldF9mcm9tX2Zv cmsrMHgyMi8weDMwCiguLi4pCnNldmVyYWwgdGFza3Mgd2FpdGluZyBmb3IgdGhlIGlub2RlIGxv Y2sgaGVsZCBieSB0aGUgZmFsbG9jYXRlIHRhc2sgYmVsb3cKKC4uLikKIFJJUDogMDAzMzoweDdm NjFlZmU3M2ZmZgogQ29kZTogVW5hYmxlIHRvIGFjY2VzcyBvcGNvZGUgYnl0ZXMgYXQgUklQIDB4 N2Y2MWVmZTczZmQ1LgogUlNQOiAwMDJiOjAwMDA3ZmZjMzM3MWJiZTggRUZMQUdTOiAwMDAwMDIw MiBPUklHX1JBWDogMDAwMDAwMDAwMDAwMDEzYwogUkFYOiBmZmZmZmZmZmZmZmZmZmRhIFJCWDog MDAwMDdmZmMzMzcxYmVhMCBSQ1g6IDAwMDA3ZjYxZWZlNzNmZmYKIFJEWDogMDAwMDAwMDBmZmZm ZmY5YyBSU0k6IDAwMDA1NjBmYmQ1ZDkwYTAgUkRJOiAwMDAwMDAwMGZmZmZmZjljCiBSQlA6IDAw MDA3ZmZjMzM3MWJlYjAgUjA4OiAwMDAwMDAwMDAwMDAwMDAxIFIwOTogMDAwMDAwMDAwMDAwMDAw MwogUjEwOiAwMDAwNTYwZmJkNWQ3YWQwIFIxMTogMDAwMDAwMDAwMDAwMDIwMiBSMTI6IDAwMDAw MDAwMDAwMDAwMDEKIFIxMzogMDAwMDAwMDAwMDAwMDA1ZSBSMTQ6IDAwMDA3ZmZjMzM3MWJlYTAg UjE1OiAwMDAwN2ZmYzMzNzFiZWIwCiB0YXNrOmZkbS1zdHJlc3MgICAgICAgIHN0YXRlOkQgc3Rh Y2s6ICAgIDAgcGlkOjI1MDgyNDMgcHBpZDoyNTA4MTUzIGZsYWdzOjB4MDAwMDAwMDAKIENhbGwg VHJhY2U6CiAgX19zY2hlZHVsZSsweDVkMS8weGNmMAogID8gX3Jhd19zcGluX3VubG9ja19pcnFy ZXN0b3JlKzB4M2MvMHg2MAogIHNjaGVkdWxlKzB4NDUvMHhlMAogIF9fcmVzZXJ2ZV9ieXRlcysw eDRhNC8weGIxMCBbYnRyZnNdCiAgPyBmaW5pc2hfd2FpdCsweDkwLzB4OTAKICBidHJmc19yZXNl cnZlX21ldGFkYXRhX2J5dGVzKzB4MjkvMHgxOTAgW2J0cmZzXQogIGJ0cmZzX2Jsb2NrX3Jzdl9h ZGQrMHgxZi8weDUwIFtidHJmc10KICBzdGFydF90cmFuc2FjdGlvbisweDJkMS8weDc2MCBbYnRy ZnNdCiAgYnRyZnNfcmVwbGFjZV9maWxlX2V4dGVudHMrMHgxMjAvMHg5MzAgW2J0cmZzXQogID8g YnRyZnNfZmFsbG9jYXRlKzB4ZGNmLzB4MTI2MCBbYnRyZnNdCiAgYnRyZnNfZmFsbG9jYXRlKzB4 ZGZiLzB4MTI2MCBbYnRyZnNdCiAgPyBmaWxlbmFtZV9sb29rdXArMHhmMS8weDE4MAogIHZmc19m YWxsb2NhdGUrMHgxNGYvMHg0NDAKICBpb2N0bF9wcmVhbGxvY2F0ZSsweDkyLzB4YzAKICBkb192 ZnNfaW9jdGwrMHg2NmIvMHg3NTAKICA/IF9fZG9fc3lzX25ld2ZzdGF0KzB4NTMvMHg2MAogIF9f eDY0X3N5c19pb2N0bCsweDYyLzB4YjAKICBkb19zeXNjYWxsXzY0KzB4MzMvMHg4MAogIGVudHJ5 X1NZU0NBTExfNjRfYWZ0ZXJfaHdmcmFtZSsweDQ0LzB4YTkKIiIiCgpGaXggdGhpcyBieSBkaXNh bGxvd2luZyBtbWFwcyBmcm9tIGhhcHBlbmluZyB3aGlsZSB3ZSdyZSBkb2luZyBhbnkgb2YKdGhl IGZhbGxvY2F0ZSBvcGVyYXRpb25zIG9uIHRoaXMgaW5vZGUuCgpSZXZpZXdlZC1ieTogRmlsaXBl IE1hbmFuYSA8ZmRtYW5hbmFAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IEpvc2VmIEJhY2lrIDxq b3NlZkB0b3hpY3BhbmRhLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJh QHN1c2UuY29tPgotLS0KIGZzL2J0cmZzL2ZpbGUuYyB8IDEyICsrKysrKy0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9m cy9idHJmcy9maWxlLmMgYi9mcy9idHJmcy9maWxlLmMKaW5kZXggZWQ2MjlhMThlMTU4Li5jNTdh OWVjZjg2MWUgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2ZpbGUuYworKysgYi9mcy9idHJmcy9maWxl LmMKQEAgLTI4NjcsNyArMjg2Nyw3IEBAIHN0YXRpYyBpbnQgYnRyZnNfcHVuY2hfaG9sZShzdHJ1 Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgb2Zmc2V0LCBsb2ZmX3QgbGVuKQogCWlmIChyZXQpCiAJ CXJldHVybiByZXQ7CiAKLQlidHJmc19pbm9kZV9sb2NrKGlub2RlLCAwKTsKKwlidHJmc19pbm9k ZV9sb2NrKGlub2RlLCBCVFJGU19JTE9DS19NTUFQKTsKIAlpbm9fc2l6ZSA9IHJvdW5kX3VwKGlu b2RlLT5pX3NpemUsIGZzX2luZm8tPnNlY3RvcnNpemUpOwogCXJldCA9IGZpbmRfZmlyc3Rfbm9u X2hvbGUoQlRSRlNfSShpbm9kZSksICZvZmZzZXQsICZsZW4pOwogCWlmIChyZXQgPCAwKQpAQCAt MjkwNyw3ICsyOTA3LDcgQEAgc3RhdGljIGludCBidHJmc19wdW5jaF9ob2xlKHN0cnVjdCBpbm9k ZSAqaW5vZGUsIGxvZmZfdCBvZmZzZXQsIGxvZmZfdCBsZW4pCiAJCXRydW5jYXRlZF9ibG9jayA9 IHRydWU7CiAJCXJldCA9IGJ0cmZzX3RydW5jYXRlX2Jsb2NrKEJUUkZTX0koaW5vZGUpLCBvZmZz ZXQsIDAsIDApOwogCQlpZiAocmV0KSB7Ci0JCQlidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIDAp OworCQkJYnRyZnNfaW5vZGVfdW5sb2NrKGlub2RlLCBCVFJGU19JTE9DS19NTUFQKTsKIAkJCXJl dHVybiByZXQ7CiAJCX0KIAl9CkBAIC0zMDA4LDcgKzMwMDgsNyBAQCBzdGF0aWMgaW50IGJ0cmZz X3B1bmNoX2hvbGUoc3RydWN0IGlub2RlICppbm9kZSwgbG9mZl90IG9mZnNldCwgbG9mZl90IGxl bikKIAkJCQlyZXQgPSByZXQyOwogCQl9CiAJfQotCWJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwg MCk7CisJYnRyZnNfaW5vZGVfdW5sb2NrKGlub2RlLCBCVFJGU19JTE9DS19NTUFQKTsKIAlyZXR1 cm4gcmV0OwogfQogCkBAIC0zMzM0LDcgKzMzMzQsNyBAQCBzdGF0aWMgbG9uZyBidHJmc19mYWxs b2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLAogCQkJcmV0dXJuIHJldDsKIAl9CiAK LQlidHJmc19pbm9kZV9sb2NrKGlub2RlLCAwKTsKKwlidHJmc19pbm9kZV9sb2NrKGlub2RlLCBC VFJGU19JTE9DS19NTUFQKTsKIAogCWlmICghKG1vZGUgJiBGQUxMT0NfRkxfS0VFUF9TSVpFKSAm JiBvZmZzZXQgKyBsZW4gPiBpbm9kZS0+aV9zaXplKSB7CiAJCXJldCA9IGlub2RlX25ld3NpemVf b2soaW5vZGUsIG9mZnNldCArIGxlbik7CkBAIC0zMzc2LDcgKzMzNzYsNyBAQCBzdGF0aWMgbG9u ZyBidHJmc19mYWxsb2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLAogCiAJaWYgKG1v ZGUgJiBGQUxMT0NfRkxfWkVST19SQU5HRSkgewogCQlyZXQgPSBidHJmc196ZXJvX3JhbmdlKGlu b2RlLCBvZmZzZXQsIGxlbiwgbW9kZSk7Ci0JCWJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgMCk7 CisJCWJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgQlRSRlNfSUxPQ0tfTU1BUCk7CiAJCXJldHVy biByZXQ7CiAJfQogCkBAIC0zNDg2LDcgKzM0ODYsNyBAQCBzdGF0aWMgbG9uZyBidHJmc19mYWxs b2NhdGUoc3RydWN0IGZpbGUgKmZpbGUsIGludCBtb2RlLAogCXVubG9ja19leHRlbnRfY2FjaGVk KCZCVFJGU19JKGlub2RlKS0+aW9fdHJlZSwgYWxsb2Nfc3RhcnQsIGxvY2tlZF9lbmQsCiAJCQkg ICAgICZjYWNoZWRfc3RhdGUpOwogb3V0OgotCWJ0cmZzX2lub2RlX3VubG9jayhpbm9kZSwgMCk7 CisJYnRyZnNfaW5vZGVfdW5sb2NrKGlub2RlLCBCVFJGU19JTE9DS19NTUFQKTsKIAkvKiBMZXQg Z28gb2Ygb3VyIHJlc2VydmF0aW9uLiAqLwogCWlmIChyZXQgIT0gMCAmJiAhKG1vZGUgJiBGQUxM T0NfRkxfWkVST19SQU5HRSkpCiAJCWJ0cmZzX2ZyZWVfcmVzZXJ2ZWRfZGF0YV9zcGFjZShCVFJG U19JKGlub2RlKSwgZGF0YV9yZXNlcnZlZCwKLS0gCjIuMzAuMgoKRnJvbSAxNWRjMTMyYmJmZjBj ODE5YjIzOTJmYzkzZmY3NmIyNzc0ODQ0Yjg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9t OiBGaWxpcGUgTWFuYW5hIDxmZG1hbmFuYUBzdXNlLmNvbT4KRGF0ZTogVHVlLCAyMyBGZWIgMjAy MSAxMjowODo0NyArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIGJ0cmZzOiBmaXggcmFjZSBiZXR3ZWVu IG1lbW9yeSBtYXBwZWQgd3JpdGVzIGFuZCBmc3luYwoKV2hlbiBkb2luZyBhbiBmc3luYyB3ZSBm bHVzaCBhbGwgZGVsYWxsb2MsIGxvY2sgdGhlIGlub2RlIChWRlMgbG9jayksIGZsdXNoCmFueSBu ZXcgZGVsYWxsb2MgdGhhdCBtaWdodCBoYXZlIGJlZW4gY3JlYXRlZCBiZWZvcmUgdGFraW5nIHRo ZSBsb2NrIGFuZAp0aGVuIHdhaXQgZWl0aGVyIGZvciB0aGUgb3JkZXJlZCBleHRlbnRzIHRvIGNv bXBsZXRlIG9yIGp1c3QgZm9yIHRoZQp3cml0ZWJhY2sgdG8gY29tcGxldGUgKGRlcGVuZGluZyBv biB3aGV0aGVyIHRoZSBmdWxsIHN5bmMgZmxhZyBpcyBzZXQgb3IKbm90KS4gV2UgdGhlbiBzdGFy dCBsb2dnaW5nIHRoZSBpbm9kZSBhbmQgYXNzdW1lIHRoYXQgd2hpbGUgd2UgYXJlIGRvaW5nIGl0 Cm5vIG9uZSBlbHNlIGlzIHRvdWNoaW5nIHRoZSBpbm9kZSdzIGZpbGUgZXh0ZW50IGl0ZW1zIChv ciBhZGRpbmcgbmV3IG9uZXMpLgoKVGhhdCBpcyBnZW5lcmFsbHkgdHJ1ZSBiZWNhdXNlIGFsbCBv cGVyYXRpb25zIHRoYXQgbW9kaWZ5IGFuIGlub2RlIGFjcXVpcmUKdGhlIGlub2RlJ3MgbG9jayBm aXJzdCwgaW5jbHVkaW5nIGJ1ZmZlcmVkIGFuZCBkaXJlY3QgSU8gd3JpdGVzLiBIb3dldmVyCnRo ZXJlIGlzIG9uZSBleGNlcHRpb246IG1lbW9yeSBtYXBwZWQgd3JpdGVzLCB3aGljaCBkbyBub3Qg YW5kIGNhbiBub3QKYWNxdWlyZSB0aGUgaW5vZGUncyBsb2NrLgoKVGhpcyBjYW4gY2F1c2UgdHdv IHR5cGVzIG9mIGlzc3VlczogZW5kaW5nIHVwIGxvZ2dpbmcgZmlsZSBleHRlbnQgaXRlbXMKd2l0 aCBvdmVybGFwcGluZyByYW5nZXMsIHdoaWNoIGlzIGRldGVjdGVkIGJ5IHRoZSB0cmVlIGNoZWNr ZXIgYW5kIHdpbGwKcmVzdWx0IGluIGFib3J0aW5nIHRoZSB0cmFuc2FjdGlvbiB3aGVuIHN0YXJ0 aW5nIHdyaXRlYmFjayBmb3IgYSBsb2cKdHJlZSdzIGV4dGVudCBidWZmZXJzLCBvciBhIHNpbGVu dCBjb3JydXB0aW9uIHdoZXJlIHdlIGxvZyBhIHZlcnNpb24gb2YKdGhlIGZpbGUgdGhhdCBuZXZl ciBleGlzdGVkLgoKU2NlbmFyaW8gMSAtIGxvZ2dpbmcgb3ZlcmxhcHBpbmcgZXh0ZW50cwoKVGhl IGZvbGxvd2luZyBzdGVwcyBleHBsYWluIGhvdyB3ZSBjYW4gZW5kIHVwIHdpdGggZmlsZSBleHRl bnRzIGl0ZW1zIHdpdGgKb3ZlcmxhcHBpbmcgcmFuZ2VzIGluIGEgbG9nIHRyZWUgZHVlIHRvIGEg cmFjZSBiZXR3ZWVuIGEgZnN5bmMgYW5kIG1lbW9yeQptYXBwZWQgd3JpdGVzOgoKMSkgVGFzayBB IHN0YXJ0cyBhbiBmc3luYyBvbiBpbm9kZSBYLCB3aGljaCBoYXMgdGhlIGZ1bGwgc3luYyBydW50 aW1lIGZsYWcKICAgc2V0LiBGaXJzdCBpdCBzdGFydHMgYnkgZmx1c2hpbmcgYWxsIGRlbGFsbG9j IGZvciB0aGUgaW5vZGU7CgoyKSBUYXNrIEEgdGhlbiBsb2NrcyB0aGUgaW5vZGUgYW5kIGZsdXNo ZXMgYW55IG90aGVyIGRlbGFsbG9jIHRoYXQgbWlnaHQKICAgaGF2ZSBiZWVuIGNyZWF0ZWQgYWZ0 ZXIgdGhlIHByZXZpb3VzIGZsdXNoIGFuZCB3YWl0cyBmb3IgYWxsIG9yZGVyZWQKICAgZXh0ZW50 cyB0byBjb21wbGV0ZTsKCjMpIEluIHRoZSBpbm9kZSdzIHJvb3Qgd2UgaGF2ZSB0aGUgZm9sbG93 aW5nIGxlYWY6CgogICBMZWFmIE4sIGdlbmVyYXRpb24gPT0gY3VycmVudCB0cmFuc2FjdGlvbiBp ZDoKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICB8ICguLi4pICBbIGZpbGUgZXh0ZW50IGl0ZW0sIG9mZnNldCA2NDBLLCBsZW5n dGggMTI4SyBdIHwKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgogICBUaGUgbGFzdCBmaWxlIGV4dGVudCBpdGVtIGluIGxlYWYgTiBj b3ZlcnMgdGhlIGZpbGUgcmFuZ2UgZnJvbSA2NDBLIHRvCiAgIDc2OEs7Cgo0KSBUYXNrIEIgZG9l cyBhIG1lbW9yeSBtYXBwZWQgd3JpdGUgZm9yIHRoZSBwYWdlIGNvcnJlc3BvbmRpbmcgdG8gdGhl CiAgIGZpbGUgcmFuZ2UgZnJvbSA3NjRLIHRvIDc2OEs7Cgo1KSBUYXNrIEEgc3RhcnRzIGxvZ2dp bmcgdGhlIGlub2RlLiBBdCBjb3B5X2lub2RlX2l0ZW1zX3RvX2xvZygpIGl0IHVzZXMKICAgYnRy ZnNfc2VhcmNoX2ZvcndhcmQoKSB0byBzZWFyY2ggZm9yIGxlYWZzIG1vZGlmaWVkIGluIHRoZSBj dXJyZW50CiAgIHRyYW5zYWN0aW9uIHRoYXQgY29udGFpbiBpdGVtcyBmb3IgdGhlIGlub2RlLiBJ dCBmaW5kcyBsZWFmIE4gYW5kIGNvcGllcwogICBhbGwgdGhlIGlub2RlIGl0ZW1zIGZyb20gdGhh dCBsZWFmIGludG8gdGhlIGxvZyB0cmVlLgoKICAgTm93IHRoZSBsb2cgdHJlZSBoYXMgYSBjb3B5 IG9mIHRoZSBsYXN0IGZpbGUgZXh0ZW50IGl0ZW0gZnJvbSBsZWFmIE4uCgogICBBdCB0aGUgZW5k IG9mIHRoZSB3aGlsZSBsb29wIGF0IGNvcHlfaW5vZGVfaXRlbXNfdG9fbG9nKCksIHdlIGhhdmUg dGhlCiAgIG1pbmltdW0ga2V5IHNldCB0bzoKCiAgIG1pbl9rZXkub2JqZWN0aWQgPSA8aW5vZGUg WCBudW1iZXI+CiAgIG1pbl9rZXkudHlwZSA9IEJUUkZTX0VYVEVOVF9EQVRBX0tFWQogICBtaW5f a2V5Lm9mZnNldCA9IDY0MEsKCiAgIFRoZW4gd2UgaW5jcmVtZW50IHRoZSBrZXkncyBvZmZzZXQg YnkgMSBzbyB0aGF0IHRoZSBuZXh0IGNhbGwgdG8KICAgYnRyZnNfc2VhcmNoX2ZvcndhcmQoKSBs ZWF2ZXMgdXMgYXQgdGhlIGZpcnN0IGtleSBncmVhdGVyIHRoYW4gdGhlIGtleQogICB3ZSBqdXN0 IHByb2Nlc3NlZC4KCiAgIEJ1dCBiZWZvcmUgYnRyZnNfc2VhcmNoX2ZvcndhcmQoKSBpcyBjYWxs ZWQgYWdhaW4uLi4KCjYpIERlbGxhbG9jIGZvciB0aGUgcGFnZSBhdCBvZmZzZXQgNzY0SywgZGly dGllZCBieSB0YXNrIEIsIGlzIHN0YXJ0ZWQuCiAgIEl0IGNhbiBiZSBzdGFydGVkIGZvciBzZXZl cmFsIHJlYXNvbnM6CgogICAgIC0gVGhlIGFzeW5jIHJlY2xhaW0gdGFzayBpcyBhdHRlbXB0aW5n IHRvIHNhdGlzZnkgbWV0YWRhdGEgb3IgZGF0YQogICAgICAgcmVzZXJ2YXRpb24gcmVxdWVzdHMs IGFuZCBpdCBoYXMgcmVhY2hlZCBhIHBvaW50IHdoZXJlIGl0IGRlY2lkZWQKICAgICAgIHRvIGZs dXNoIGRlbGFsbG9jOwogICAgIC0gRHVlIHRvIG1lbW9yeSBwcmVzc3VyZSB0aGUgVk1NIHRyaWdn ZXJzIHdyaXRlYmFjayBvZiBkaXJ0eSBwYWdlczsKICAgICAtIFRoZSBzeXN0ZW0gY2FsbCBzeW5j X2ZpbGVfcmFuZ2UoMikgaXMgY2FsbGVkIGZyb20gdXNlciBzcGFjZS4KCjcpIFdoZW4gdGhlIHJl c3BlY3RpdmUgb3JkZXJlZCBleHRlbnQgY29tcGxldGVzLCBpdCB0cmltcyB0aGUgbGVuZ3RoIG9m CiAgIHRoZSBleGlzdGluZyBmaWxlIGV4dGVudCBpdGVtIGZvciBmaWxlIG9mZnNldCA2NDBLIGZy b20gMTI4SyB0byAxMjRLLAogICBhbmQgYSBuZXcgZmlsZSBleHRlbnQgaXRlbSBpcyBhZGRlZCB3 aXRoIGEga2V5IG9mZnNldCBvZiA3NjRLIGFuZCBhCiAgIGxlbmd0aCBvZiA0SzsKCjgpIFRhc2sg QSBjYWxscyBidHJmc19zZWFyY2hfZm9yd2FyZCgpLCB3aGljaCByZXR1cm5zIHVzIGEgcGF0aCBw b2ludGluZwogICB0byB0aGUgbGVhZiAoY2FuIGJlIGxlYWYgTiBvciBzb21lIG90aGVyKSBjb250 YWluaW5nIHRoZSBuZXcgZmlsZSBleHRlbnQKICAgaXRlbSBmb3IgZmlsZSBvZmZzZXQgNzY0Sy4K CiAgIFdlIGVuZCB1cCBjb3B5aW5nIHRoaXMgaXRlbSB0byB0aGUgbG9nIHRyZWUsIHdoaWNoIG92 ZXJsYXBzIHdpdGggdGhlCiAgIGxhc3QgY29waWVkIGZpbGUgZXh0ZW50IGl0ZW0sIHdoaWNoIGNv dmVycyB0aGUgZmlsZSByYW5nZSBmcm9tIDY0MEsgdG8KICAgNzY4Sy4KCiAgIFdoZW4gd3JpdGVi YWNrIGlzIHRyaWdnZXJlZCBmb3IgbG9nIHRyZWUncyBleHRlbnQgYnVmZmVycywgdGhlIGlzc3Vl CiAgIHdpbGwgYmUgZGV0ZWN0ZWQgYnkgdGhlIHRyZWUgY2hlY2tlciB3aGljaCB3aWxsIGR1bXAg YSB0cmFjZSBhbmQgYW4KICAgZXJyb3IgbWVzc2FnZSBvbiBkbWVzZy9zeXNsb2cuIElmIHRoZSB3 cml0ZWJhY2sgaXMgdHJpZ2dlcmVkIHdoZW4KICAgc3luY2luZyB0aGUgbG9nLCB3aGljaCB0eXBp Y2FsbHkgaXMsIHRoZW4gd2UgYWxzbyBlbmQgdXAgYWJvcnRpbmcgdGhlCiAgIGN1cnJlbnQgdHJh bnNhY3Rpb24uCgpUaGlzIGlzIHRoZSBzYW1lIHR5cGUgb2YgcHJvYmxlbSBmaXhlZCBpbiAwYzcx M2NiYWI2MjAwYiAoIkJ0cmZzOiBmaXggcmFjZQpiZXR3ZWVuIHJhbmdlZCBmc3luYyBhbmQgd3Jp dGViYWNrIG9mIGFkamFjZW50IHJhbmdlcyIpLgoKU2NlbmFyaW8gMiAtIGxvZ2dpbmcgYSB2ZXJz aW9uIG9mIHRoZSBmaWxlIHRoYXQgbmV2ZXIgZXhpc3RlZAoKVGhpcyBzY2VuYXJpbyBvbmx5IGhh cHBlbnMgd2hlbiB1c2luZyB0aGUgTk9fSE9MRVMgZmVhdHVyZSBhbmQgcmVzdWx0cyBpbgphIHNp bGVudCBjb3JydXB0aW9uLCBpbiB0aGUgc2Vuc2UgdGhhdCBpcyBub3QgZGV0ZWN0YWJsZSBieSAn YnRyZnMgY2hlY2snCm9yIHRoZSB0cmVlIGNoZWNrZXI6CgoxKSBXZSBoYXZlIGFuIGlub2RlIEkg d2l0aCBhIHNpemUgb2YgMU0gYW5kIHR3byBmaWxlIGV4dGVudCBpdGVtcywgb25lCiAgIGNvdmVy aW5nIGFuIGV4dGVudCB3aXRoIGRpc2tfYnl0ZW5yID09IFggZm9yIHRoZSBmaWxlIHJhbmdlIFsw LCA1MTJLKQogICBhbmQgYW5vdGhlciBvbmUgY292ZXJpbmcgYW5vdGhlciBleHRlbnQgd2l0aCBk aXNrX2J5dGVuciA9PSBZIGZvciB0aGUKICAgZmlsZSByYW5nZSBbNTEySywgMU0pOwoKMikgQSBo b2xlIGlzIHB1bmNoZWQgZm9yIHRoZSBmaWxlIHJhbmdlIFs1MTJLLCAxTSk7CgozKSBUYXNrIEEg c3RhcnRzIGFuIGZzeW5jIG9mIGlub2RlIEksIHdoaWNoIGhhcyB0aGUgZnVsbCBzeW5jIHJ1bnRp bWUgZmxhZwogICBzZXQuIEl0IHN0YXJ0cyBieSBmbHVzaGluZyBhbGwgZXhpc3RpbmcgZGVsYWxs b2MsIGxvY2tzIHRoZSBpbm9kZSAoVkZTCiAgIGxvY2spLCBzdGFydHMgYW55IG5ldyBkZWxhbGxv YyB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBjcmVhdGVkIGJlZm9yZQogICB0YWtpbmcgdGhlIGxvY2sg YW5kIHdhaXRzIGZvciBhbGwgb3JkZXJlZCBleHRlbnRzIHRvIGNvbXBsZXRlOwoKNCkgU29tZSBv dGhlciB0YXNrIGRvZXMgYSBtZW1vcnkgbWFwcGVkIHdyaXRlIGZvciB0aGUgcGFnZSBjb3JyZXNw b25kaW5nIHRvCiAgIHRoZSBmaWxlIHJhbmdlIFs2NDBLLCA2NDRLKSBmb3IgZXhhbXBsZTsKCjUp IFRhc2sgQSB0aGVuIGxvZ3MgYWxsIGl0ZW1zIG9mIHRoZSBpbm9kZSB3aXRoIHRoZSBjYWxsIHRv CiAgIGNvcHlfaW5vZGVfaXRlbXNfdG9fbG9nKCk7Cgo2KSBJbiB0aGUgbWVhbndoaWxlIGRlbGFs bG9jIGZvciB0aGUgcmFuZ2UgWzY0MEssIDY0NEspIGlzIHN0YXJ0ZWQuIEl0IGNhbgogICBiZSBz dGFydGVkIGZvciBzZXZlcmFsIHJlYXNvbnM6CgogICAgIC0gVGhlIGFzeW5jIHJlY2xhaW0gdGFz ayBpcyBhdHRlbXB0aW5nIHRvIHNhdGlzZnkgbWV0YWRhdGEgb3IgZGF0YQogICAgICAgcmVzZXJ2 YXRpb24gcmVxdWVzdHMsIGFuZCBpdCBoYXMgcmVhY2hlZCBhIHBvaW50IHdoZXJlIGl0IGRlY2lk ZWQKICAgICAgIHRvIGZsdXNoIGRlbGFsbG9jOwogICAgIC0gRHVlIHRvIG1lbW9yeSBwcmVzc3Vy ZSB0aGUgVk1NIHRyaWdnZXJzIHdyaXRlYmFjayBvZiBkaXJ0eSBwYWdlczsKICAgICAtIFRoZSBz eXN0ZW0gY2FsbCBzeW5jX2ZpbGVfcmFuZ2UoMikgaXMgY2FsbGVkIGZyb20gdXNlciBzcGFjZS4K CjcpIFRoZSBvcmRlcmVkIGV4dGVudCBmb3IgdGhlIHJhbmdlIFs2NDBLLCA2NDRLKSBjb21wbGV0 ZXMgYW5kIGEgZmlsZQogICBleHRlbnQgaXRlbSBmb3IgdGhhdCByYW5nZSBpcyBhZGRlZCB0byB0 aGUgc3Vidm9sdW1lIHRyZWUsIHBvaW50aW5nCiAgIHRvIGEgNEsgZXh0ZW50IHdpdGggYSBkaXNr X2J5dGVuciA9PSBaOwoKOCkgVGFzayBBIHRoZW4gY2FsbHMgYnRyZnNfbG9nX2hvbGVzKCksIHRv IHNjYW4gZm9yIGltcGxpY2l0IGhvbGVzIGluCiAgIHRoZSBzdWJ2b2x1bWUgdHJlZS4gSXQgZmlu ZHMgdHdvIGltcGxpY2l0IGhvbGVzOgoKICAgLSBvbmUgZm9yIHRoZSBmaWxlIHJhbmdlIFs1MTJL LCA2NDBLKQogICAtIG9uZSBmb3IgdGhlIGZpbGUgcmFuZ2UgWzY0NEssIDFNKQoKICAgQXMgYSBy ZXN1bHQgd2UgZW5kIHVwIG5laXRoZXIgbG9nZ2luZyBhIGhvbGUgZm9yIHRoZSByYW5nZSBbNjQw SywgNjQ0SykKICAgbm9yIGxvZ2dpbmcgdGhlIGZpbGUgZXh0ZW50IGl0ZW0gd2l0aCBhIGRpc2tf Ynl0ZW5yID09IFouCiAgIFRoaXMgbWVhbnMgdGhhdCBpZiB3ZSBoYXZlIGEgcG93ZXIgZmFpbHVy ZSBhbmQgcmVwbGF5IHRoZSBsb2cgdHJlZSB3ZQogICBlbmQgdXAgZ2V0dGluZyB0aGUgZm9sbG93 aW5nIGZpbGUgZXh0ZW50IGxheW91dDoKCiAgIFsgZGlza19ieXRlbnIgWCBdICAgIFsgICBob2xl ICAgXSAgICBbIGRpc2tfYnl0ZW5yIFkgXSAgICBbICBob2xlICBdCiAgIDAgICAgICAgICAgICAg NTEySyAgNTEySyAgICAgIDY0MEsgIDY0MEsgICAgICAgICAgIDY0NEsgIDY0NEsgICAgIDFNCgog ICBXaGljaCBkb2VzIG5vdCBjb3JyZXNwb25kaW5nIHRvIGFueSBsYXlvdXQgdGhlIGZpbGUgZXZl ciBoYWQgYmVmb3JlCiAgIHRoZSBwb3dlciBmYWlsdXJlLiBUaGUgb25seSB0d28gdmFsaWQgbGF5 b3V0cyB3b3VsZCBiZToKCiAgIFsgZGlza19ieXRlbnIgWCBdICAgIFsgICBob2xlICAgXQogICAw ICAgICAgICAgICAgIDUxMksgIDUxMksgICAgICAgIDFNCgogICBhbmQKCiAgIFsgZGlza19ieXRl bnIgWCBdICAgIFsgICBob2xlICAgXSAgICBbIGRpc2tfYnl0ZW5yIFogXSAgICBbICBob2xlICBd CiAgIDAgICAgICAgICAgICAgNTEySyAgNTEySyAgICAgIDY0MEsgIDY0MEsgICAgICAgICAgIDY0 NEsgIDY0NEsgICAgIDFNCgpUaGlzIGNhbiBiZSBmaXhlZCBieSBzZXJpYWxpemluZyBtZW1vcnkg bWFwcGVkIHdyaXRlcyB3aXRoIGZzeW5jLCBhbmQgdGhlcmUKYXJlIHR3byB3YXlzIHRvIGRvIGl0 OgoKMSkgTWFrZSBhIGZzeW5jIGxvY2sgdGhlIGVudGlyZSBmaWxlIHJhbmdlLCBmcm9tIDAgdG8g KHU2NCktMSAvIExMT05HX01BWAogICBpbiB0aGUgaW5vZGUncyBpbyB0cmVlLiBUaGlzIHByZXZl bnRzIHRoZSByYWNlIGJ1dCBhbHNvIGJsb2NrcyBhbnkgcmVhZHMKICAgZHVyaW5nIHRoZSBkdXJh dGlvbiBvZiB0aGUgZnN5bmMsIHdoaWNoIGhhcyBhIG5lZ2F0aXZlIGltcGFjdCBmb3IgbWFueQog ICBjb21tb24gd29ya2xvYWRzOwoKMikgTWFrZSBhbiBmc3luYyB3cml0ZSBsb2NrIHRoZSBpX21t YXBfbG9jayBzZW1hcGhvcmUgaW4gdGhlIGlub2RlLiBUaGlzCiAgIHNlbWFwaG9yZSB3YXMgcmVj ZW50bHkgYWRkZWQgYnkgSm9zZWYncyBwYXRjaCBzZXQ6CgogICBidHJmczogYWRkIGEgaV9tbWFw X2xvY2sgdG8gb3VyIGlub2RlCiAgIGJ0cmZzOiBjbGVhbnVwIGlub2RlX2xvY2svaW5vZGVfdW5s b2NrIHVzZXMKICAgYnRyZnM6IGV4Y2x1ZGUgbW1hcHMgd2hpbGUgZG9pbmcgcmVtYXAKICAgYnRy ZnM6IGV4Y2x1ZGUgbW1hcCBmcm9tIGhhcHBlbmluZyBkdXJpbmcgYWxsIGZhbGxvY2F0ZSBvcGVy YXRpb25zCgogICBhbmQgaXMgdXNlZCB0byBzb2x2ZSByYWNlcyBiZXR3ZWVuIG1lbW9yeSBtYXBw ZWQgd3JpdGVzIGFuZAogICBjbG9uZS9kZWR1cGUvZmFsbG9jYXRlLiBUaGlzIGFsc28gbWFrZXMg dXMgaGF2ZSB0aGUgc2FtZSBiZWhhdmlvdXIgd2UKICAgaGF2ZSByZWdhcmRpbmcgb3RoZXIgd3Jp dGVzIChidWZmZXJlZCBhbmQgZGlyZWN0IElPKSBhbmQgZnN5bmMgLSBibG9jawogICB0aGVtIHdo aWxlIHRoZSBpbm9kZSBsb2dnaW5nIGlzIGluIHByb2dyZXNzLgoKVGhpcyBjaGFuZ2UgdXNlcyB0 aGUgc2Vjb25kIGFwcHJvYWNoIGR1ZSB0byB0aGUgcGVyZm9ybWFuY2UgaW1wYWN0IG9mIHRoZQpm aXJzdCBvbmUuCgpTaWduZWQtb2ZmLWJ5OiBGaWxpcGUgTWFuYW5hIDxmZG1hbmFuYUBzdXNlLmNv bT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgotLS0KIGZz L2J0cmZzL2ZpbGUuYyB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDkg aW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9mcy9idHJmcy9maWxl LmMgYi9mcy9idHJmcy9maWxlLmMKaW5kZXggYzU3YTllY2Y4NjFlLi40YzcwNDllNDFmZTUgMTAw NjQ0Ci0tLSBhL2ZzL2J0cmZzL2ZpbGUuYworKysgYi9mcy9idHJmcy9maWxlLmMKQEAgLTIxMjIs NyArMjEyMiw3IEBAIGludCBidHJmc19zeW5jX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZf dCBzdGFydCwgbG9mZl90IGVuZCwgaW50IGRhdGFzeW5jKQogCWlmIChyZXQpCiAJCWdvdG8gb3V0 OwogCi0JYnRyZnNfaW5vZGVfbG9jayhpbm9kZSwgMCk7CisJYnRyZnNfaW5vZGVfbG9jayhpbm9k ZSwgQlRSRlNfSUxPQ0tfTU1BUCk7CiAKIAlhdG9taWNfaW5jKCZyb290LT5sb2dfYmF0Y2gpOwog CkBAIC0yMTM1LDExICsyMTM1LDExIEBAIGludCBidHJmc19zeW5jX2ZpbGUoc3RydWN0IGZpbGUg KmZpbGUsIGxvZmZfdCBzdGFydCwgbG9mZl90IGVuZCwgaW50IGRhdGFzeW5jKQogCQkJICAgICAm QlRSRlNfSShpbm9kZSktPnJ1bnRpbWVfZmxhZ3MpOwogCiAJLyoKLQkgKiBCZWZvcmUgd2UgYWNx dWlyZWQgdGhlIGlub2RlJ3MgbG9jaywgc29tZW9uZSBtYXkgaGF2ZSBkaXJ0aWVkIG1vcmUKLQkg KiBwYWdlcyBpbiB0aGUgdGFyZ2V0IHJhbmdlLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHdy aXRlYmFjayBmb3IKLQkgKiBhbnkgc3VjaCBwYWdlcyBkb2VzIG5vdCBzdGFydCB3aGlsZSB3ZSBh cmUgbG9nZ2luZyB0aGUgaW5vZGUsIGJlY2F1c2UKLQkgKiBpZiBpdCBkb2VzLCBhbnkgb2YgdGhl IGZvbGxvd2luZyBtaWdodCBoYXBwZW4gd2hlbiB3ZSBhcmUgbm90IGRvaW5nIGEKLQkgKiBmdWxs IGlub2RlIHN5bmM6CisJICogQmVmb3JlIHdlIGFjcXVpcmVkIHRoZSBpbm9kZSdzIGxvY2sgYW5k IHRoZSBtbWFwIGxvY2ssIHNvbWVvbmUgbWF5CisJICogaGF2ZSBkaXJ0aWVkIG1vcmUgcGFnZXMg aW4gdGhlIHRhcmdldCByYW5nZS4gV2UgbmVlZCB0byBtYWtlIHN1cmUKKwkgKiB0aGF0IHdyaXRl YmFjayBmb3IgYW55IHN1Y2ggcGFnZXMgZG9lcyBub3Qgc3RhcnQgd2hpbGUgd2UgYXJlIGxvZ2dp bmcKKwkgKiB0aGUgaW5vZGUsIGJlY2F1c2UgaWYgaXQgZG9lcywgYW55IG9mIHRoZSBmb2xsb3dp bmcgbWlnaHQgaGFwcGVuIHdoZW4KKwkgKiB3ZSBhcmUgbm90IGRvaW5nIGEgZnVsbCBpbm9kZSBz eW5jOgogCSAqCiAJICogMSkgV2UgbG9nIGFuIGV4dGVudCBhZnRlciBpdHMgd3JpdGViYWNrIGZp bmlzaGVzIGJ1dCBiZWZvcmUgaXRzCiAJICogICAgY2hlY2tzdW1zIGFyZSBhZGRlZCB0byB0aGUg Y3N1bSB0cmVlLCBsZWFkaW5nIHRvIC1FSU8gZXJyb3JzCkBAIC0yMTU0LDcgKzIxNTQsNyBAQCBp bnQgYnRyZnNfc3luY19maWxlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgc3RhcnQsIGxvZmZf dCBlbmQsIGludCBkYXRhc3luYykKIAkgKi8KIAlyZXQgPSBzdGFydF9vcmRlcmVkX29wcyhpbm9k ZSwgc3RhcnQsIGVuZCk7CiAJaWYgKHJldCkgewotCQlidHJmc19pbm9kZV91bmxvY2soaW5vZGUs IDApOworCQlidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIEJUUkZTX0lMT0NLX01NQVApOwogCQln b3RvIG91dDsKIAl9CiAKQEAgLTIyNTUsNyArMjI1NSw3IEBAIGludCBidHJmc19zeW5jX2ZpbGUo c3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBzdGFydCwgbG9mZl90IGVuZCwgaW50IGRhdGFzeW5j KQogCSAqIGZpbGUgYWdhaW4sIGJ1dCB0aGF0IHdpbGwgZW5kIHVwIHVzaW5nIHRoZSBzeW5jaHJv bml6YXRpb24KIAkgKiBpbnNpZGUgYnRyZnNfc3luY19sb2cgdG8ga2VlcCB0aGluZ3Mgc2FmZS4K IAkgKi8KLQlidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIDApOworCWJ0cmZzX2lub2RlX3VubG9j ayhpbm9kZSwgQlRSRlNfSUxPQ0tfTU1BUCk7CiAKIAlpZiAocmV0ICE9IEJUUkZTX05PX0xPR19T WU5DKSB7CiAJCWlmICghcmV0KSB7CkBAIC0yMjg1LDcgKzIyODUsNyBAQCBpbnQgYnRyZnNfc3lu Y19maWxlKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBlbmQsIGludCBk YXRhc3luYykKIAogb3V0X3JlbGVhc2VfZXh0ZW50czoKIAlidHJmc19yZWxlYXNlX2xvZ19jdHhf ZXh0ZW50cygmY3R4KTsKLQlidHJmc19pbm9kZV91bmxvY2soaW5vZGUsIDApOworCWJ0cmZzX2lu b2RlX3VubG9jayhpbm9kZSwgQlRSRlNfSUxPQ0tfTU1BUCk7CiAJZ290byBvdXQ7CiB9CiAKLS0g CjIuMzAuMgoKRnJvbSA5Zjk0MDg2NTQzYzUyOWZlMDE5Y2I0YWI5ZWEyM2NhM2UzMWIyOGRjIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxpcGUgTWFuYW5hIDxmZG1hbmFuYUBzdXNl LmNvbT4KRGF0ZTogVHVlLCAyMyBGZWIgMjAyMSAxMjowODo0OCArMDAwMApTdWJqZWN0OiBbUEFU Q0hdIGJ0cmZzOiBmaXggcmFjZSBiZXR3ZWVuIG1hcmtpbmcgaW5vZGUgbmVlZHMgdG8gYmUgbG9n Z2VkIGFuZAogbG9nIHN5bmNpbmcKCldlIGhhdmUgYSByYWNlIGJldHdlZW4gbWFya2luZyB0aGF0 IGFuIGlub2RlIG5lZWRzIHRvIGJlIGxvZ2dlZCwgZWl0aGVyCmF0IGJ0cmZzX3NldF9pbm9kZV9s YXN0X3RyYW5zKCkgb3IgYXQgYnRyZnNfcGFnZV9ta3dyaXRlKCksIGFuZCBiZXR3ZWVuCmJ0cmZz X3N5bmNfbG9nKCkuIFRoZSBmb2xsb3dpbmcgc3RlcHMgZGVzY3JpYmUgaG93IHRoZSByYWNlIGhh cHBlbnMuCgoxKSBXZSBhcmUgYXQgdHJhbnNhY3Rpb24gTjsKCjIpIElub2RlIEkgd2FzIHByZXZp b3VzbHkgZnN5bmNlZCBpbiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBzbyBpdCBoYXM6CgogICAg aW5vZGUtPmxvZ2dlZF90cmFucyBzZXQgdG8gTjsKCjMpIFRoZSBpbm9kZSdzIHJvb3QgY3VycmVu dGx5IGhhczoKCiAgIHJvb3QtPmxvZ190cmFuc2lkIHNldCB0byAxCiAgIHJvb3QtPmxhc3RfbG9n X2NvbW1pdCBzZXQgdG8gMAoKICAgV2hpY2ggbWVhbnMgb25seSBvbmUgbG9nIHRyYW5zYWN0aW9u IHdhcyBjb21taXR0ZWQgdG8gZmFyLCBsb2cKICAgdHJhbnNhY3Rpb24gMC4gV2hlbiBhIGxvZyB0 cmVlIGlzIGNyZWF0ZWQgd2Ugc2V0IC0+bG9nX3RyYW5zaWQgYW5kCiAgIC0+bGFzdF9sb2dfY29t bWl0IG9mIGl0cyBwYXJlbnQgcm9vdCB0byAwIChhdCBidHJmc19hZGRfbG9nX3RyZWUoKSk7Cgo0 KSBPbmUgbW9yZSByYW5nZSBvZiBwYWdlcyBpcyBkaXJ0aWVkIGluIGlub2RlIEk7Cgo1KSBTb21l IHRhc2sgQSBzdGFydHMgYW4gZnN5bmMgYWdhaW5zdCBzb21lIG90aGVyIGlub2RlIEogKHNhbWUg cm9vdCksIGFuZAogICBzbyBpdCBqb2lucyBsb2cgdHJhbnNhY3Rpb24gMS4KCiAgIEJlZm9yZSB0 YXNrIEEgY2FsbHMgYnRyZnNfc3luY19sb2coKS4uLgoKNikgVGFzayBCIHN0YXJ0cyBhbiBmc3lu YyBhZ2FpbnN0IGlub2RlIEksIHdoaWNoIGN1cnJlbnRseSBoYXMgdGhlIGZ1bGwKICAgc3luYyBm bGFnIHNldCwgc28gaXQgc3RhcnRzIGRlbGFsbG9jIGFuZCB3YWl0cyBmb3IgdGhlIG9yZGVyZWQg ZXh0ZW50CiAgIHRvIGNvbXBsZXRlIGJlZm9yZSBjYWxsaW5nIGJ0cmZzX2lub2RlX2luX2xvZygp IGF0IGJ0cmZzX3N5bmNfZmlsZSgpOwoKNykgRHVyaW5nIG9yZGVyZWQgZXh0ZW50IGNvbXBsZXRp b24gd2UgaGF2ZSBidHJmc191cGRhdGVfaW5vZGUoKSBjYWxsZWQKICAgYWdhaW5zdCBpbm9kZSBJ LCB3aGljaCBpbiB0dXJuIGNhbGxzIGJ0cmZzX3NldF9pbm9kZV9sYXN0X3RyYW5zKCksCiAgIHdo aWNoIGRvZXMgdGhlIGZvbGxvd2luZzoKCiAgICAgc3Bpbl9sb2NrKCZpbm9kZS0+bG9jayk7CiAg ICAgaW5vZGUtPmxhc3RfdHJhbnMgPSB0cmFucy0+dHJhbnNhY3Rpb24tPnRyYW5zaWQ7CiAgICAg aW5vZGUtPmxhc3Rfc3ViX3RyYW5zID0gaW5vZGUtPnJvb3QtPmxvZ190cmFuc2lkOwogICAgIGlu b2RlLT5sYXN0X2xvZ19jb21taXQgPSBpbm9kZS0+cm9vdC0+bGFzdF9sb2dfY29tbWl0OwogICAg IHNwaW5fdW5sb2NrKCZpbm9kZS0+bG9jayk7CgogICBTbyAtPmxhc3RfdHJhbnMgaXMgc2V0IHRv IE4gYW5kIC0+bGFzdF9zdWJfdHJhbnMgc2V0IHRvIDEuCiAgIEJ1dCBiZWZvcmUgc2V0dGluZyAt Pmxhc3RfbG9nX2NvbW1pdC4uLgoKOCkgVGFzayBBIGlzIGF0IGJ0cmZzX3N5bmNfbG9nKCk6Cgog ICAtIGl0IGluY3JlbWVudHMgcm9vdC0+bG9nX3RyYW5zaWQgdG8gMgogICAtIHN0YXJ0cyB3cml0 ZWJhY2sgZm9yIGFsbCBsb2cgdHJlZSBleHRlbnQgYnVmZmVycwogICAtIHdhaXRzIGZvciB0aGUg d3JpdGViYWNrIHRvIGNvbXBsZXRlCiAgIC0gd3JpdGVzIHRoZSBzdXBlciBibG9ja3MKICAgLSB1 cGRhdGVzIHJvb3QtPmxhc3RfbG9nX2NvbW1pdCB0byAxCgogICBJdCdzIGEgbG90IG9mIHNsb3cg c3RlcHMgYmV0d2VlbiB1cGRhdGluZyByb290LT5sb2dfdHJhbnNpZCBhbmQKICAgcm9vdC0+bGFz dF9sb2dfY29tbWl0OwoKOSkgVGhlIHRhc2sgZG9pbmcgdGhlIG9yZGVyZWQgZXh0ZW50IGNvbXBs ZXRpb24sIGN1cnJlbnRseSBhdAogICBidHJmc19zZXRfaW5vZGVfbGFzdF90cmFucygpLCB0aGVu IGZpbmFsbHkgcnVuczoKCiAgICAgaW5vZGUtPmxhc3RfbG9nX2NvbW1pdCA9IGlub2RlLT5yb290 LT5sYXN0X2xvZ19jb21taXQ7CiAgICAgc3Bpbl91bmxvY2soJmlub2RlLT5sb2NrKTsKCiAgIFdo aWNoIHJlc3VsdHMgaW4gaW5vZGUtPmxhc3RfbG9nX2NvbW1pdCBiZWluZyBzZXQgdG8gMS4KICAg VGhlIG9yZGVyZWQgZXh0ZW50IGNvbXBsZXRlczsKCjEwKSBUYXNrIEIgaXMgcmVzdW1lZCwgYW5k IGl0IGNhbGxzIGJ0cmZzX2lub2RlX2luX2xvZygpIHdoaWNoIHJldHVybnMKICAgIHRydWUgYmVj YXVzZSB3ZSBoYXZlIGFsbCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgbWV0OgoKICAgIGlub2Rl LT5sb2dnZWRfdHJhbnMgPT0gTiB3aGljaCBtYXRjaGVzIGZzX2luZm8tPmdlbmVyYXRpb24gJiYK ICAgIGlub2RlLT5sYXN0X3N1YnRyYW5zICgxKSA8PSBpbm9kZS0+bGFzdF9sb2dfY29tbWl0ICgx KSAmJgogICAgaW5vZGUtPmxhc3Rfc3VidHJhbnMgKDEpIDw9IHJvb3QtPmxhc3RfbG9nX2NvbW1p dCAoMSkgJiYKICAgIGxpc3QgaW5vZGUtPmV4dGVudF90cmVlLm1vZGlmaWVkX2V4dGVudHMgaXMg ZW1wdHkKCiAgICBBbmQgYXMgYSBjb25zZXF1ZW5jZSB3ZSByZXR1cm4gd2l0aG91dCBsb2dnaW5n IHRoZSBpbm9kZSwgc28gdGhlCiAgICBleGlzdGluZyBsb2dnZWQgdmVyc2lvbiBvZiB0aGUgaW5v ZGUgZG9lcyBub3QgcG9pbnQgdG8gdGhlIGV4dGVudAogICAgdGhhdCB3YXMgd3JpdHRlbiBhZnRl ciB0aGUgcHJldmlvdXMgZnN5bmMuCgpJdCBzaG91bGQgYmUgaW1wb3NzaWJsZSBpbiBwcmFjdGlj ZSBmb3Igb25lIHRhc2sgYmUgYWJsZSB0byBkbyBzbyBtdWNoCnByb2dyZXNzIGluIGJ0cmZzX3N5 bmNfbG9nKCkgd2hpbGUgYW5vdGhlciB0YXNrIGlzIGF0CmJ0cmZzX3NldF9pbm9kZV9sYXN0X3Ry YW5zKCkgcmlnaHQgYWZ0ZXIgaXQgcmVhZHMgcm9vdC0+bG9nX3RyYW5zaWQgYW5kCmJlZm9yZSBp dCByZWFkcyByb290LT5sYXN0X2xvZ19jb21taXQuIEV2ZW4gaWYga2VybmVsIHByZWVtcHRpb24g aXMgZW5hYmxlZAp3ZSBrbm93IHRoZSB0YXNrIGF0IGJ0cmZzX3NldF9pbm9kZV9sYXN0X3RyYW5z KCkgY2FuIG5vdCBiZSBwcmVlbXB0ZWQKYmVjYXVzZSBpdCBpcyBob2xkaW5nIHRoZSBpbm9kZSdz IHNwaW5sb2NrLgoKSG93ZXZlciB0aGVyZSBpcyBhbm90aGVyIHBsYWNlIHdoZXJlIHdlIGRvIHRo ZSBzYW1lIHdpdGhvdXQgaG9sZGluZyB0aGUKc3BpbmxvY2ssIHdoaWNoIGlzIGluIHRoZSBtZW1v cnkgbWFwcGVkIHdyaXRlIHBhdGggYXQ6CgogIHZtX2ZhdWx0X3QgYnRyZnNfcGFnZV9ta3dyaXRl KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQogIHsKICAgICAoLi4uKQogICAgIEJUUkZTX0koaW5vZGUp LT5sYXN0X3RyYW5zID0gZnNfaW5mby0+Z2VuZXJhdGlvbjsKICAgICBCVFJGU19JKGlub2RlKS0+ bGFzdF9zdWJfdHJhbnMgPSBCVFJGU19JKGlub2RlKS0+cm9vdC0+bG9nX3RyYW5zaWQ7CiAgICAg QlRSRlNfSShpbm9kZSktPmxhc3RfbG9nX2NvbW1pdCA9IEJUUkZTX0koaW5vZGUpLT5yb290LT5s YXN0X2xvZ19jb21taXQ7CiAgICAgKC4uLikKClNvIHdpdGggcHJlZW1wdGlvbiBoYXBwZW5pbmcg YWZ0ZXIgc2V0dGluZyAtPmxhc3Rfc3ViX3RyYW5zIGFuZCBiZWZvcmUKc2V0dGluZyAtPmxhc3Rf bG9nX2NvbW1pdCwgaXQgaXMgbGVzcyBvZiBhIHN0cmV0Y2ggdG8gaGF2ZSBhbm90aGVyIHRhc2sK ZG8gZW5vdWdoIHByb2dyZXNzIGF0IGJ0cmZzX3N5bmNfbG9nKCkgc3VjaCB0aGF0IHRoZSB0YXNr IGRvaW5nIHRoZSBtZW1vcnkKbWFwcGVkIHdyaXRlIGVuZHMgdXAgd2l0aCAtPmxhc3Rfc3ViX3Ry YW5zIGFuZCAtPmxhc3RfbG9nX2NvbW1pdCBzZXQgdG8KdGhlIHNhbWUgdmFsdWUuIEl0IGlzIHN0 aWxsIGEgYmlnIHN0cmV0Y2ggdG8gZ2V0IHRoZXJlLCBhcyB0aGUgdGFzayBkb2luZwpidHJmc19z eW5jX2xvZygpIGhhcyB0byBzdGFydCB3cml0ZWJhY2ssIHdhaXQgZm9yIGl0cyBjb21wbGV0aW9u IGFuZCB3cml0ZQp0aGUgc3VwZXIgYmxvY2tzLgoKU28gZml4IHRoaXMgaW4gdHdvIGRpZmZlcmVu dCB3YXlzOgoKMSkgRm9yIGJ0cmZzX3NldF9pbm9kZV9sYXN0X3RyYW5zKCksIHNpbXBseSBzZXQg LT5sYXN0X2xvZ19jb21taXQgdG8gdGhlCiAgIHZhbHVlIG9mIC0+bGFzdF9zdWJfdHJhbnMgbWlu dXMgMTsKCjIpIEZvciBidHJmc19wYWdlX21rd3JpdGUoKSBvbmx5IHNldCB0aGUgaW5vZGUncyAt Pmxhc3Rfc3ViX3RyYW5zLCBqdXN0CiAgIGxpa2Ugd2UgZG8gZm9yIGJ1ZmZlcmVkIGFuZCBkaXJl Y3Qgd3JpdGVzIGF0IGJ0cmZzX2ZpbGVfd3JpdGVfaXRlcigpLAogICB3aGljaCBpcyBhbGwgd2Ug bmVlZCB0byBtYWtlIHN1cmUgbXVsdGlwbGUgd3JpdGVzIGFuZCBmc3luY3MgdG8gYW4KICAgaW5v ZGUgaW4gdGhlIHNhbWUgdHJhbnNhY3Rpb24gbmV2ZXIgcmVzdWx0IGluIGFuIGZzeW5jIG1pc3Np bmcgdGhhdAogICB0aGUgaW5vZGUgY2hhbmdlZCBhbmQgbmVlZHMgdG8gYmUgbG9nZ2VkLiBUdXJu IHRoaXMgaW50byBhIGhlbHBlcgogICBmdW5jdGlvbiBhbmQgdXNlIGl0IGJvdGggYXQgYnRyZnNf cGFnZV9ta3dyaXRlKCkgYW5kIGF0CiAgIGJ0cmZzX2ZpbGVfd3JpdGVfaXRlcigpIC0gdGhpcyBh bHNvIGZpeGVzIHRoZSBwcm9ibGVtIHRoYXQgYXQKICAgYnRyZnNfcGFnZV9ta3dyaXRlKCkgd2Ug d2VyZSBzZXR0aW5nIHRob3NlIGZpZWxkcyB3aXRob3V0IHRoZQogICBwcm90ZWN0aW9uIG9mIHRo ZSBpbm9kZSdzIHNwaW5sb2NrLgoKVGhpcyBpcyBhbiBleHRyZW1lbHkgdW5saWtlbHkgcmFjZSB0 byBoYXBwZW4gaW4gcHJhY3RpY2UuCgpTaWduZWQtb2ZmLWJ5OiBGaWxpcGUgTWFuYW5hIDxmZG1h bmFuYUBzdXNlLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2Uu Y29tPgotLS0KIGZzL2J0cmZzL2J0cmZzX2lub2RlLmggfCAxNSArKysrKysrKysrKysrKysKIGZz L2J0cmZzL2ZpbGUuYyAgICAgICAgfCAxMCArKy0tLS0tLS0tCiBmcy9idHJmcy9pbm9kZS5jICAg ICAgIHwgIDQgKy0tLQogZnMvYnRyZnMvdHJhbnNhY3Rpb24uaCB8ICAyICstCiA0IGZpbGVzIGNo YW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Zz L2J0cmZzL2J0cmZzX2lub2RlLmggYi9mcy9idHJmcy9idHJmc19pbm9kZS5oCmluZGV4IDI2ODM3 YzNjYTdmNi4uODAxMTU5NmUxZWIzIDEwMDY0NAotLS0gYS9mcy9idHJmcy9idHJmc19pbm9kZS5o CisrKyBiL2ZzL2J0cmZzL2J0cmZzX2lub2RlLmgKQEAgLTMwMCw2ICszMDAsMjEgQEAgc3RhdGlj IGlubGluZSB2b2lkIGJ0cmZzX21vZF9vdXRzdGFuZGluZ19leHRlbnRzKHN0cnVjdCBidHJmc19p bm9kZSAqaW5vZGUsCiAJCQkJCQkgIG1vZCk7CiB9CiAKKy8qCisgKiBDYWxsZWQgZXZlcnkgdGlt ZSBhZnRlciBkb2luZyBhIGJ1ZmZlcmVkLCBkaXJlY3QgSU8gb3IgbWVtb3J5IG1hcHBlZCB3cml0 ZS4KKyAqCisgKiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IGlmIHdlIHdyaXRlIHRvIGEgZmlsZSB0 aGF0IHdhcyBwcmV2aW91c2x5IGZzeW5jZWQgaW4KKyAqIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9u LCB0aGVuIHRyeSB0byBmc3luYyBpdCBhZ2FpbiBpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbiwKKyAq IHdlIHdpbGwga25vdyB0aGF0IHRoZXJlIHdlcmUgY2hhbmdlcyBpbiB0aGUgZmlsZSBhbmQgdGhh dCBpdCBuZWVkcyB0byBiZQorICogbG9nZ2VkLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQgYnRy ZnNfc2V0X2lub2RlX2xhc3Rfc3ViX3RyYW5zKHN0cnVjdCBidHJmc19pbm9kZSAqaW5vZGUpCit7 CisJc3Bpbl9sb2NrKCZpbm9kZS0+bG9jayk7CisJaW5vZGUtPmxhc3Rfc3ViX3RyYW5zID0gaW5v ZGUtPnJvb3QtPmxvZ190cmFuc2lkOworCXNwaW5fdW5sb2NrKCZpbm9kZS0+bG9jayk7Cit9CisK IHN0YXRpYyBpbmxpbmUgaW50IGJ0cmZzX2lub2RlX2luX2xvZyhzdHJ1Y3QgYnRyZnNfaW5vZGUg Kmlub2RlLCB1NjQgZ2VuZXJhdGlvbikKIHsKIAlpbnQgcmV0ID0gMDsKZGlmZiAtLWdpdCBhL2Zz L2J0cmZzL2ZpbGUuYyBiL2ZzL2J0cmZzL2ZpbGUuYwppbmRleCA0YzcwNDllNDFmZTUuLmM2NjZk MjAzNzBjMSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvZmlsZS5jCisrKyBiL2ZzL2J0cmZzL2ZpbGUu YwpAQCAtMjAxNCwxNCArMjAxNCw4IEBAIHN0YXRpYyBzc2l6ZV90IGJ0cmZzX2ZpbGVfd3JpdGVf aXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsCiAJZWxzZQogCQludW1fd3JpdHRlbiA9IGJ0cmZzX2J1 ZmZlcmVkX3dyaXRlKGlvY2IsIGZyb20pOwogCi0JLyoKLQkgKiBXZSBhbHNvIGhhdmUgdG8gc2V0 IGxhc3Rfc3ViX3RyYW5zIHRvIHRoZSBjdXJyZW50IGxvZyB0cmFuc2lkLAotCSAqIG90aGVyd2lz ZSBzdWJzZXF1ZW50IHN5bmNzIHRvIGEgZmlsZSB0aGF0J3MgYmVlbiBzeW5jZWQgaW4gdGhpcwot CSAqIHRyYW5zYWN0aW9uIHdpbGwgYXBwZWFyIHRvIGhhdmUgYWxyZWFkeSBvY2N1cnJlZC4KLQkg Ki8KLQlzcGluX2xvY2soJmlub2RlLT5sb2NrKTsKLQlpbm9kZS0+bGFzdF9zdWJfdHJhbnMgPSBp bm9kZS0+cm9vdC0+bG9nX3RyYW5zaWQ7Ci0Jc3Bpbl91bmxvY2soJmlub2RlLT5sb2NrKTsKKwli dHJmc19zZXRfaW5vZGVfbGFzdF9zdWJfdHJhbnMoaW5vZGUpOworCiAJaWYgKG51bV93cml0dGVu ID4gMCkKIAkJbnVtX3dyaXR0ZW4gPSBnZW5lcmljX3dyaXRlX3N5bmMoaW9jYiwgbnVtX3dyaXR0 ZW4pOwogCmRpZmYgLS1naXQgYS9mcy9idHJmcy9pbm9kZS5jIGIvZnMvYnRyZnMvaW5vZGUuYwpp bmRleCAwYjAyZDA3ODAwZGIuLmRkYmFjNzhjNGFiZSAxMDA2NDQKLS0tIGEvZnMvYnRyZnMvaW5v ZGUuYworKysgYi9mcy9idHJmcy9pbm9kZS5jCkBAIC04NjI3LDkgKzg2MjcsNyBAQCB2bV9mYXVs dF90IGJ0cmZzX3BhZ2VfbWt3cml0ZShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIAlzZXRfcGFnZV9k aXJ0eShwYWdlKTsKIAlTZXRQYWdlVXB0b2RhdGUocGFnZSk7CiAKLQlCVFJGU19JKGlub2RlKS0+ bGFzdF90cmFucyA9IGZzX2luZm8tPmdlbmVyYXRpb247Ci0JQlRSRlNfSShpbm9kZSktPmxhc3Rf c3ViX3RyYW5zID0gQlRSRlNfSShpbm9kZSktPnJvb3QtPmxvZ190cmFuc2lkOwotCUJUUkZTX0ko aW5vZGUpLT5sYXN0X2xvZ19jb21taXQgPSBCVFJGU19JKGlub2RlKS0+cm9vdC0+bGFzdF9sb2df Y29tbWl0OworCWJ0cmZzX3NldF9pbm9kZV9sYXN0X3N1Yl90cmFucyhCVFJGU19JKGlub2RlKSk7 CiAKIAl1bmxvY2tfZXh0ZW50X2NhY2hlZChpb190cmVlLCBwYWdlX3N0YXJ0LCBwYWdlX2VuZCwg JmNhY2hlZF9zdGF0ZSk7CiAJdXBfcmVhZCgmQlRSRlNfSShpbm9kZSktPmlfbW1hcF9sb2NrKTsK ZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3RyYW5zYWN0aW9uLmggYi9mcy9idHJmcy90cmFuc2FjdGlv bi5oCmluZGV4IDYzMzU3MTZlNTEzZi4uZGQ3YzNlZWEwOGFkIDEwMDY0NAotLS0gYS9mcy9idHJm cy90cmFuc2FjdGlvbi5oCisrKyBiL2ZzL2J0cmZzL3RyYW5zYWN0aW9uLmgKQEAgLTE3NSw3ICsx NzUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYnRyZnNfc2V0X2lub2RlX2xhc3RfdHJhbnMoc3Ry dWN0IGJ0cmZzX3RyYW5zX2hhbmRsZSAqdHJhbnMsCiAJc3Bpbl9sb2NrKCZpbm9kZS0+bG9jayk7 CiAJaW5vZGUtPmxhc3RfdHJhbnMgPSB0cmFucy0+dHJhbnNhY3Rpb24tPnRyYW5zaWQ7CiAJaW5v ZGUtPmxhc3Rfc3ViX3RyYW5zID0gaW5vZGUtPnJvb3QtPmxvZ190cmFuc2lkOwotCWlub2RlLT5s YXN0X2xvZ19jb21taXQgPSBpbm9kZS0+cm9vdC0+bGFzdF9sb2dfY29tbWl0OworCWlub2RlLT5s YXN0X2xvZ19jb21taXQgPSBpbm9kZS0+bGFzdF9zdWJfdHJhbnMgLSAxOwogCXNwaW5fdW5sb2Nr KCZpbm9kZS0+bG9jayk7CiB9CiAKLS0gCjIuMzAuMgoKRnJvbSBhZGFhYWFiMzI2MjExY2Y3ZmJm NTEzNjAwNTQyZWI3OGY0YTVmMmJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxp cGUgTWFuYW5hIDxmZG1hbmFuYUBzdXNlLmNvbT4KRGF0ZTogVHVlLCAyMyBGZWIgMjAyMSAxMjow ODo0OSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIGJ0cmZzOiByZW1vdmUgc3RhbGUgY29tbWVudCBh bmQgbG9naWMgZnJvbQogYnRyZnNfaW5vZGVfaW5fbG9nKCkKCkN1cnJlbnRseSBidHJmc19pbm9k ZV9pbl9sb2coKSBjaGVja3MgdGhlIGxpc3Qgb2YgbW9kaWZpZWQgZXh0ZW50cyBvZiB0aGUKaW5v ZGUsIGFuZCBoYXMgYSBjb21tZW50IG1lbnRpb25pbmcgd2h5LCBhcyBpdCB1c2VkIHRvIGJlIG5l Y2Vzc2FyeSB0bwptYWtlIHN1cmUgaWYgd2UgZGlkIHNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dp bmc6CgogIG1tYXAgd3JpdGUgcmFuZ2UgQQogIG1tYXAgd3JpdGUgcmFuZ2UgQgogIG1zeW5jIHJh bmdlIEEgKHJhbmdlZCBmc3luYykKICBtc3luYyByYW5nZSBCIChyYW5nZWQgZnN5bmMpCgp3ZSBl bmRlZCB1cCB3aXRoIGJvdGggcmFuZ2VzIGJlaW5nIGxvZ2dlZC4KCklmIHdlIGRpZCBub3QgY2hl Y2sgaXQsIHRoZW4gdGhlIHNlY29uZCBmc3luYyB3b3VsZCBkbyBub3RoaW5nIGJlY2F1c2UKYnRy ZnNfaW5vZGVfaW5fbG9nKCkgd291bGQgcmV0dXJuIHRydWUuIFRoaXMgd2FzIGFkZGVkIGluIDEy NWM0Y2Y5ZjM3Yzk4CigiQnRyZnM6IHNldCBpbm9kZSdzIGxvZ2dlZF90cmFucy9sYXN0X2xvZ19j b21taXQgYWZ0ZXIgcmFuZ2VkIGZzeW5jIikgYW5kCnRlc3QgY2FzZSBnZW5lcmljLzMyNSBmcm9t IGZzdGVzdHMgZXhlcmNpc2VzIHRoYXQgc2NlbmFyaW8uCgpIb3dldmVyLCBhcyBvZiBjb21taXQg NDg3NzgxNzk2ZDMwMjIgKCJidHJmczogbWFrZSBmYXN0IGZzeW5jcyB3YWl0IG9ubHkKZm9yIHdy aXRlYmFjayIpLCBldmVyeSByYW5nZWQgZnN5bmMgaXMgbm93IHR1cm5lZCBpbnRvIGEgZnVsbCBy YW5nZWQgZnN5bmMKKG9wZXJhdGVzIG9uIHRoZSByYW5nZSBmcm9tIDAgdG8gTExPTkdfTUFYKSwg c28gaXQgaXMgbm93IHBvaW50bGVzcyB0bwp0ZXN0IG9mIGVtcHRpbmVzcyBvZiB0aGUgbGlzdCBv ZiBtb2RpZmllZCBleHRlbnRzLCBhbmQgdGhlIGNvbW1lbnQgaXMKY2xlYXJseSBvdXRkYXRlZC4K ClNvIGp1c3QgcmVtb3ZlIHRoZSBjb21tZW50IGFuZCBsaXN0IGVtcHRpbmVzcyBjaGVjaywgd2hp bGUgYWxzbyBjaGFuZ2luZwp0aGUgZnVuY3Rpb24ncyByZXR1cm4gdHlwZSB0byBiZSBhIGJvb2xl YW4gaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLgpJbiBjYXNlIG9uZSBkYXkgd2UgZ2V0IHN1cHBvcnQg Zm9yIHJhbmdlZCBmc3luY3MgYWdhaW4sIGl0IHdpbGwgYmUgZWFzeQp0byBub3RpY2UgdGhlIGNo ZWNrIGlzIG5lY2Vzc2FyeSBhZ2FpbiwgYmVjYXVzZSBpdCB3aWxsIG1ha2UgZ2VuZXJpYy8zMjUK YWx3YXlzIGZhaWwuCgpTaWduZWQtb2ZmLWJ5OiBGaWxpcGUgTWFuYW5hIDxmZG1hbmFuYUBzdXNl LmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2aWQgU3RlcmJhIDxkc3RlcmJhQHN1c2UuY29tPgotLS0K IGZzL2J0cmZzL2J0cmZzX2lub2RlLmggfCAxNyArKysrLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNo YW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZnMv YnRyZnMvYnRyZnNfaW5vZGUuaCBiL2ZzL2J0cmZzL2J0cmZzX2lub2RlLmgKaW5kZXggODAxMTU5 NmUxZWIzLi5jNjUyZTE5YWQ3NGUgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2J0cmZzX2lub2RlLmgK KysrIGIvZnMvYnRyZnMvYnRyZnNfaW5vZGUuaApAQCAtMzE1LDI0ICszMTUsMTUgQEAgc3RhdGlj IGlubGluZSB2b2lkIGJ0cmZzX3NldF9pbm9kZV9sYXN0X3N1Yl90cmFucyhzdHJ1Y3QgYnRyZnNf aW5vZGUgKmlub2RlKQogCXNwaW5fdW5sb2NrKCZpbm9kZS0+bG9jayk7CiB9CiAKLXN0YXRpYyBp bmxpbmUgaW50IGJ0cmZzX2lub2RlX2luX2xvZyhzdHJ1Y3QgYnRyZnNfaW5vZGUgKmlub2RlLCB1 NjQgZ2VuZXJhdGlvbikKK3N0YXRpYyBpbmxpbmUgYm9vbCBidHJmc19pbm9kZV9pbl9sb2coc3Ry dWN0IGJ0cmZzX2lub2RlICppbm9kZSwgdTY0IGdlbmVyYXRpb24pCiB7Ci0JaW50IHJldCA9IDA7 CisJYm9vbCByZXQgPSBmYWxzZTsKIAogCXNwaW5fbG9jaygmaW5vZGUtPmxvY2spOwogCWlmIChp bm9kZS0+bG9nZ2VkX3RyYW5zID09IGdlbmVyYXRpb24gJiYKIAkgICAgaW5vZGUtPmxhc3Rfc3Vi X3RyYW5zIDw9IGlub2RlLT5sYXN0X2xvZ19jb21taXQgJiYKLQkgICAgaW5vZGUtPmxhc3Rfc3Vi X3RyYW5zIDw9IGlub2RlLT5yb290LT5sYXN0X2xvZ19jb21taXQpIHsKLQkJLyoKLQkJICogQWZ0 ZXIgYSByYW5nZWQgZnN5bmMgd2UgbWlnaHQgaGF2ZSBsZWZ0IHNvbWUgZXh0ZW50IG1hcHMKLQkJ ICogKHRoYXQgZmFsbCBvdXRzaWRlIHRoZSBmc3luYydzIHJhbmdlKS4gU28gcmV0dXJuIGZhbHNl Ci0JCSAqIGhlcmUgaWYgdGhlIGxpc3QgaXNuJ3QgZW1wdHksIHRvIG1ha2Ugc3VyZSBidHJmc19s b2dfaW5vZGUoKQotCQkgKiB3aWxsIGJlIGNhbGxlZCBhbmQgcHJvY2VzcyB0aG9zZSBleHRlbnQg bWFwcy4KLQkJICovCi0JCXNtcF9tYigpOwotCQlpZiAobGlzdF9lbXB0eSgmaW5vZGUtPmV4dGVu dF90cmVlLm1vZGlmaWVkX2V4dGVudHMpKQotCQkJcmV0ID0gMTsKLQl9CisJICAgIGlub2RlLT5s YXN0X3N1Yl90cmFucyA8PSBpbm9kZS0+cm9vdC0+bGFzdF9sb2dfY29tbWl0KQorCQlyZXQgPSB0 cnVlOwogCXNwaW5fdW5sb2NrKCZpbm9kZS0+bG9jayk7CiAJcmV0dXJuIHJldDsKIH0KLS0gCjIu MzAuMgoK --------_6080CB3800000000F395_MULTIPART_MIXED_ Content-Type: application/octet-stream; name="btrfs-add-btree-read-ahead-for-full-send-operations.patch" Content-Disposition: attachment; filename="btrfs-add-btree-read-ahead-for-full-send-operations.patch" Content-Transfer-Encoding: base64 RnJvbSA0MGRkY2FiMTc3MWExMWVlMjZlZDFlNzQzOGZlZDE1NTk1MTQ1YzdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGaWxpcGUgTWFuYW5hIDxmZG1hbmFuYUBzdXNlLmNvbT4KRGF0 ZTogRnJpLCAyNiBGZWIgMjAyMSAxNToxNzowMSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIGJ0cmZz OiBhZGQgYnRyZWUgcmVhZCBhaGVhZCBmb3IgZnVsbCBzZW5kIG9wZXJhdGlvbnMKCldoZW4gZG9p bmcgYSBmdWxsIHNlbmQgd2Uga25vdyB0aGF0IHdlIGFyZSBnb2luZyB0byBiZSByZWFkaW5nIGV2 ZXJ5IG5vZGUKYW5kIGxlYWYgb2YgdGhlIHNlbmQgcm9vdCwgc28gd2UgYmVuZWZpdCBmcm9tIGVu YWJsaW5nIHJlYWQgYWhlYWQgZm9yIHRoZQpidHJlZS4KClRoaXMgY2hhbmdlIGVuYWJsZXMgcmVh ZCBhaGVhZCBmb3IgZnVsbCBzZW5kIG9wZXJhdGlvbnMgb25seSwgaW5jcmVtZW50YWwKc2VuZHMg d2lsbCBoYXZlIHJlYWQgYWhlYWQgZW5hYmxlZCBpbiBhIGRpZmZlcmVudCB3YXkgYnkgYSBzZXBh cmF0ZSBwYXRjaC4KClRoZSBmb2xsb3dpbmcgdGVzdCBzY3JpcHQgd2FzIHVzZWQgdG8gbWVhc3Vy ZSB0aGUgaW1wcm92ZW1lbnQgb24gYSBib3gKdXNpbmcgYW4gYXZlcmFnZSwgY29uc3VtZXIgZ3Jh ZGUsIHNwaW5uaW5nIGRpc2sgYW5kIHdpdGggMTZHYiBvZiByYW06CgogICQgY2F0IHRlc3Quc2gK ICAjIS9iaW4vYmFzaAoKICBERVY9L2Rldi9zZGoKICBNTlQ9L21udC9zZGoKICBNS0ZTX09QVElP TlM9Ii0tbm9kZXNpemUgMTYzODQiICAgICAjIGRlZmF1bHQsIGp1c3QgdG8gYmUgZXhwbGljaXQK ICBNT1VOVF9PUFRJT05TPSItbyBtYXhfaW5saW5lPTIwNDgiICAjIGRlZmF1bHQsIGp1c3QgdG8g YmUgZXhwbGljaXQKCiAgbWtmcy5idHJmcyAtZiAkTUtGU19PUFRJT05TICRERVYgPiAvZGV2L251 bGwKICBtb3VudCAkTU9VTlRfT1BUSU9OUyAkREVWICRNTlQKCiAgIyBDcmVhdGUgZmlsZXMgd2l0 aCBpbmxpbmUgZGF0YSB0byBtYWtlIGl0IGVhc2llciBhbmQgZmFzdGVyIHRvIGNyZWF0ZQogICMg bGFyZ2UgYnRyZWVzLgogIGFkZF9maWxlcygpCiAgewogICAgICBsb2NhbCB0b3RhbD0kMQogICAg ICBsb2NhbCBzdGFydF9vZmZzZXQ9JDIKICAgICAgbG9jYWwgbnVtYmVyX2pvYnM9JDMKICAgICAg bG9jYWwgdG90YWxfcGVyX2pvYj0kKCgkdG90YWwgLyAkbnVtYmVyX2pvYnMpKQoKICAgICAgZWNo byAiQ3JlYXRpbmcgJHRvdGFsIG5ldyBmaWxlcyB1c2luZyAkbnVtYmVyX2pvYnMgam9icyIKICAg ICAgZm9yICgobiA9IDA7IG4gPCAkbnVtYmVyX2pvYnM7IG4rKykpOyBkbwogICAgICAgICAgKAog ICAgICAgICAgICAgIGxvY2FsIHN0YXJ0X251bT0kKCgkc3RhcnRfb2Zmc2V0ICsgJG4gKiAkdG90 YWxfcGVyX2pvYikpCiAgICAgICAgICAgICAgZm9yICgoaSA9IDE7IGkgPD0gJHRvdGFsX3Blcl9q b2I7IGkrKykpOyBkbwogICAgICAgICAgICAgICAgICBsb2NhbCBmaWxlX251bT0kKChzdGFydF9u dW0gKyAkaSkpCiAgICAgICAgICAgICAgICAgIGxvY2FsIGZpbGVfcGF0aD0iJE1OVC9maWxlXyR7 ZmlsZV9udW19IgogICAgICAgICAgICAgICAgICB4ZnNfaW8gLWYgLWMgInB3cml0ZSAtUyAweGFi IDAgMjAwMCIgJGZpbGVfcGF0aCA+IC9kZXYvbnVsbAogICAgICAgICAgICAgICAgICBpZiBbICQ/ IC1uZSAwIF07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIkZhaWxlZCBjcmVhdGlu ZyBmaWxlICRmaWxlX3BhdGgiCiAgICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAg ICAgICAgICBmaQogICAgICAgICAgICAgIGRvbmUKICAgICAgICAgICkgJgogICAgICAgICAgd29y a2VyX3BpZHNbJG5dPSQhCiAgICAgIGRvbmUKCiAgICAgIHdhaXQgJHt3b3JrZXJfcGlkc1tAXX0K CiAgICAgIHN5bmMKICAgICAgZWNobwogICAgICBlY2hvICJidHJlZSBub2RlL2xlYWYgY291bnQ6 ICQoYnRyZnMgaW5zcGVjdC1pbnRlcm5hbCBkdW1wLXRyZWUgLXQgNSAkREVWIHwgZWdyZXAgJ14o bm9kZXxsZWFmKSAnIHwgd2MgLWwpIgogIH0KCiAgaW5pdGlhbF9maWxlX2NvdW50PTUwMDAwMAog IGFkZF9maWxlcyAkaW5pdGlhbF9maWxlX2NvdW50IDAgNAoKICBlY2hvCiAgZWNobyAiQ3JlYXRp bmcgZmlyc3Qgc25hcHNob3QuLi4iCiAgYnRyZnMgc3Vidm9sdW1lIHNuYXBzaG90IC1yICRNTlQg JE1OVC9zbmFwMQoKICBlY2hvCiAgZWNobyAiQWRkaW5nIG1vcmUgZmlsZXMuLi4iCiAgYWRkX2Zp bGVzICQoKGluaXRpYWxfZmlsZV9jb3VudCAvIDQpKSAkaW5pdGlhbF9maWxlX2NvdW50IDQKCiAg ZWNobwogIGVjaG8gIlVwZGF0aW5nIDEvNTB0aCBvZiB0aGUgaW5pdGlhbCBmaWxlcy4uLiIKICBm b3IgKChpID0gMTsgaSA8ICRpbml0aWFsX2ZpbGVfY291bnQ7IGkgKz0gNTApKTsgZG8KICAgICAg eGZzX2lvIC1jICJwd3JpdGUgLVMgMHhjZCAwIDIwIiAkTU5UL2ZpbGVfJGkgPiAvZGV2L251bGwK ICBkb25lCgogIGVjaG8KICBlY2hvICJDcmVhdGluZyBzZWNvbmQgc25hcHNob3QuLi4iCiAgYnRy ZnMgc3Vidm9sdW1lIHNuYXBzaG90IC1yICRNTlQgJE1OVC9zbmFwMgoKICB1bW91bnQgJE1OVAoK ICBlY2hvIDMgPiAvcHJvYy9zeXMvdm0vZHJvcF9jYWNoZXMKICBibG9ja2RldiAtLWZsdXNoYnVm cyAkREVWICY+IC9kZXYvbnVsbAogIGhkcGFybSAtRiAkREVWICY+IC9kZXYvbnVsbAoKICBtb3Vu dCAkTU9VTlRfT1BUSU9OUyAkREVWICRNTlQKCiAgZWNobwogIGVjaG8gIlRlc3RpbmcgZnVsbCBz ZW5kLi4uIgogIHN0YXJ0PSQoZGF0ZSArJXMpCiAgYnRyZnMgc2VuZCAkTU5UL3NuYXAxID4gL2Rl di9udWxsCiAgZW5kPSQoZGF0ZSArJXMpCiAgZWNobwogIGVjaG8gIkZ1bGwgc2VuZCB0b29rICQo KGVuZCAtIHN0YXJ0KSkgc2Vjb25kcyIKCiAgZWNobwogIGVjaG8gIlRlc3RpbmcgaW5jcmVtZW50 YWwgc2VuZC4uLiIKICBzdGFydD0kKGRhdGUgKyVzKQogIGJ0cmZzIHNlbmQgLXAgJE1OVC9zbmFw MSAkTU5UL3NuYXAyID4gL2Rldi9udWxsCiAgZW5kPSQoZGF0ZSArJXMpCiAgZWNobwogIGVjaG8g IkluY3JlbWVudGFsIHNlbmQgdG9vayAkKChlbmQgLSBzdGFydCkpIHNlY29uZHMiCgogIHVtb3Vu dCAkTU5UCgpCZWZvcmUgdGhpcyBjaGFuZ2UsIGZ1bGwgc2VuZCBkdXJhdGlvbjoKCndpdGggJGlu aXRpYWxfZmlsZV9jb3VudCA9PSAyMDAwMDA6ICAxNjUgc2Vjb25kcwp3aXRoICRpbml0aWFsX2Zp bGVfY291bnQgPT0gNTAwMDAwOiAgNDA3IHNlY29uZHMKCkFmdGVyIHRoaXMgY2hhbmdlLCBmdWxs IHNlbmQgZHVyYXRpb246Cgp3aXRoICRpbml0aWFsX2ZpbGVfY291bnQgPT0gMjAwMDAwOiAgMTQ5 IHNlY29uZHMgKC0xMC4yJSkKd2l0aCAkaW5pdGlhbF9maWxlX2NvdW50ID09IDUwMDAwMDogIDM1 MyBzZWNvbmRzICgtMTQuMiUpCgpGb3IgJGluaXRpYWxfZmlsZV9jb3VudCA9PSAyMDAwMDAgdGhl cmUgYXJlIDYyNjAwIG5vZGVzIGFuZCBsZWF2ZXMgaW4gdGhlCmJ0cmVlIG9mIHRoZSBmaXJzdCBz bmFwc2hvdCwgd2hpbGUgZm9yICRpbml0aWFsX2ZpbGVfY291bnQgPT0gNTAwMDAwIHRoZXJlCmFy ZSAxNTI0NzYgbm9kZXMgYW5kIGxlYXZlcy4KClNpZ25lZC1vZmYtYnk6IEZpbGlwZSBNYW5hbmEg PGZkbWFuYW5hQHN1c2UuY29tPgotLS0KIGZzL2J0cmZzL3NlbmQuYyB8IDEgKwogMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspCgpkaWZmIC0tZ2l0IGEvZnMvYnRyZnMvc2VuZC5jIGIvZnMv YnRyZnMvc2VuZC5jCmluZGV4IGY4Nzg3ODIuLjdmZjgxZGEgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZz L3NlbmQuYworKysgYi9mcy9idHJmcy9zZW5kLmMKQEAgLTY2NTMsNiArNjY1Myw3IEBAIHN0YXRp YyBpbnQgZnVsbF9zZW5kX3RyZWUoc3RydWN0IHNlbmRfY3R4ICpzY3R4KQogCXBhdGggPSBhbGxv Y19wYXRoX2Zvcl9zZW5kKCk7CiAJaWYgKCFwYXRoKQogCQlyZXR1cm4gLUVOT01FTTsKKwlwYXRo LT5yZWFkYSA9IFJFQURBX0ZPUldBUkQ7CiAKIAlrZXkub2JqZWN0aWQgPSBCVFJGU19GSVJTVF9G UkVFX09CSkVDVElEOwogCWtleS50eXBlID0gQlRSRlNfSU5PREVfSVRFTV9LRVk7Ci0tIAoyLjMw LjEKCg== --------_6080CB3800000000F395_MULTIPART_MIXED_--