Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1Yrq88-0000BT-8h for pgsql-hackers@arkaria.postgresql.org; Mon, 11 May 2015 16:00:32 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1Yrq87-0005AU-Ec for pgsql-hackers@arkaria.postgresql.org; Mon, 11 May 2015 16:00:31 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1Yrq85-0005AM-AF for pgsql-hackers@postgresql.org; Mon, 11 May 2015 16:00:29 +0000 Received: from mail-wi0-x22e.google.com ([2a00:1450:400c:c05::22e]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1Yrq7w-0004X9-9t for pgsql-hackers@postgresql.org; Mon, 11 May 2015 16:00:27 +0000 Received: by wizk4 with SMTP id k4so111577145wiz.1 for ; Mon, 11 May 2015 09:00:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:reply-to:user-agent:mime-version:to:cc :subject:references:in-reply-to:content-type; bh=PjJUYZVSs6TSTn0fUjpX8WAe03VUbg9o0sQZa4e38fI=; b=iqNnpZlTclRCaeRYy2e2wwqBsVA5d/08V1tuRGqDlydpBV7oNozYheFE8Lt0PMhXJJ e/TQaOtp5eolFgFesvGU++fbIA66bwpqsipzogpnqJwJCX1Rj+0g7G+9snEyLH67pKtq YIJZ0+ncGxCh1RLwCVtRgE+j9Uj3lHvzGj8QGFzk0U0fqIfJK77z2rRxa/3g29ESEtkD KjG/K6IZ+XsRTRGIAUhPS6818gbpyTjZry/ndvTN9BbnvW0uQudgp6ozUsiMFteGsk1t gPOodxc7EhE7cWuk6DH3VnN7lvaRtRkz+bexr9rxh93odRWDs7+TRA+aNms3ZIt12PlO 8rDQ== X-Received: by 10.180.106.131 with SMTP id gu3mr20679383wib.16.1431360016691; Mon, 11 May 2015 09:00:16 -0700 (PDT) Received: from [192.168.1.99] (dsl-hkibrasgw1-58c38f-82.dhcp.inet.fi. [88.195.143.82]) by mx.google.com with ESMTPSA id v3sm429981wix.8.2015.05.11.09.00.13 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 11 May 2015 09:00:14 -0700 (PDT) Message-ID: <5550D20D.6090703@iki.fi> Date: Mon, 11 May 2015 19:00:13 +0300 From: Heikki Linnakangas Reply-To: hlinnaka@iki.fi User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.6.0 MIME-Version: 1.0 To: Michael Paquier CC: Robert Haas , Venkata Balaji N , Andres Freund , Fujii Masao , Borodin Vladimir , PostgreSQL-development Subject: Re: Streaming replication and WAL archive interactions References: <548AF1CB.80702@vmware.com> <689EB259-44C2-4820-B901-4F6B1C55A1E4@simply.name> <549083D6.1000301@vmware.com> <54949108.3030109@vmware.com> <552FA38F.9060005@iki.fi> <5535FE71.1010905@iki.fi> <55362CAD.2000207@iki.fi> <553741FE.1080403@iki.fi> <554CB84E.3070406@iki.fi> In-Reply-To: <554CB84E.3070406@iki.fi> Content-Type: multipart/mixed; boundary="------------050409040008090709090007" X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------050409040008090709090007 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit On 05/08/2015 04:21 PM, Heikki Linnakangas wrote: > On 04/22/2015 10:07 AM, Michael Paquier wrote: >> On Wed, Apr 22, 2015 at 3:38 PM, Heikki Linnakangas wrote: >>> I feel that the best approach is to archive the last, partial segment, but >>> with the .partial suffix. I don't see any plausible real-wold setup where >>> the current behavior would be better. I don't really see much need to >>> archive the partial segment at all, but there's also no harm in doing it, as >>> long as it's clearly marked with the .partial suffix. >> >> Well, as long as it is clearly archived at promotion, even with a >> suffix, I guess that I am fine... This will need some tweaking on >> restore_command for existing applications, but as long as it is >> clearly documented I am fine. Shouldn't this be a different patch >> though? > > Ok, I came up with the attached, which adds the .partial suffix to the > partial WAL segment that's archived after promotion. I couldn't find any > natural place to talk about it in the docs, though. I think after the > docs changes from the main patch are applied, it would be natural to > mention this in the "Continuous archiving in standby", so I think I'll > add that later. > > Barring objections, I'll push this later tonight. Applied that part. > Now that we got this last-partial-segment problem out of the way, I'm > going to try fixing the problem you (Michael) pointed out about relying > on pgstat file. Meanwhile, I'd love to get more feedback on the rest of > the patch, and the documentation. And here is a new version of the patch. I kept the approach of using pgstat, but it now only polls pgstat every 10 seconds, and doesn't block to wait for updated stats. - Heikki --------------050409040008090709090007 Content-Type: application/x-patch; name="v3-0001-Make-WAL-archival-behave-more-sensibly-in-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v3-0001-Make-WAL-archival-behave-more-sensibly-in-standby.pa"; filename*1="tch" RnJvbSAwOGNhM2NjN2I5ODI0NTAzYjc5M2UxNDkyNDdlYTljNmQzYTdmMzIz IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFr YW5nYXMgPGhlaWtraS5saW5uYWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwg MTYgQXByIDIwMTUgMTQ6NDA6MjQgKzAzMDAKU3ViamVjdDogW1BBVENIIHYz IDEvMV0gTWFrZSBXQUwgYXJjaGl2YWwgYmVoYXZlIG1vcmUgc2Vuc2libHkg aW4gc3RhbmRieQogbW9kZS4KClRoaXMgYWRkcyB0d28gbmV3IGFyY2hpdmVf bW9kZXMsICdzaGFyZWQnIGFuZCAnYWx3YXlzJywgdG8gaW5kaWNhdGUgd2hl dGhlcgp0aGUgV0FMIGFyY2hpdmUgaXMgc2hhcmVkIGJldHdlZW4gdGhlIHBy aW1hcnkgYW5kIHN0YW5kYnksIG9yIG5vdC4gSW4Kc2hhcmVkIG1vZGUsIHRo ZSBzdGFuZGJ5IHRyYWNrcyB3aGljaCBmaWxlcyBoYXZlIGJlZW4gYXJjaGl2 ZWQgYnkgdGhlCnByaW1hcnkuIFRoZSBzdGFuZGJ5IHJlZnJhaW5zIGZyb20g cmVjeWNsaW5nIGZpbGVzIHRoYXQgdGhlIHByaW1hcnkgaGFzIG5vdAp5ZXQg YXJjaGl2ZWQsIGFuZCBhdCBmYWlsb3ZlciwgdGhlIHN0YW5kYnkgYXJjaGl2 ZXMgYWxsIHRob3NlIGZpbGVzIHRvbwpmcm9tIHRoZSBvbGQgdGltZWxpbmUu IEluICdhbHdheXMnIG1vZGUsIHRoZSBzdGFuZGJ5J3MgV0FMIGFyY2hpdmUg aXMgdGFrZW4KdG8gYmUgc2VwYXJhdGUgZnJvbSB0aGUgcHJpbWFyeSdzLCBh bmQgdGhlIHN0YW5kYnkgaW5kZXBlbmRlbnRseSBhcmNoaXZlcwphbGwgZmls ZXMgaXQgcmVjZWl2ZXMgZnJvbSB0aGUgcHJpbWFyeS4KClRoaXMgYWRkcyBh IG5ldyAiYXJjaGl2YWwgc3RhdHVzIiBtZXNzYWdlIHRvIHRoZSBwcm90b2Nv bC4gV0FMIHNlbmRlciBzZW5kcwpvbmUgYXV0b21hdGljYWxseSwgd2hlbiB0 aGUgbGFzdCBhcmNoaXZlZCBXQUwgZmlsZSwgYXMgcmVwb3J0ZWQgaW4gcGdz dGF0LApjaGFuZ2VzLiAoT3IgcmF0aGVyLCBzb21lIHRpbWUgYWZ0ZXIgaXQg Y2hhbmdlcy4gV2UncmUgbm90IGluIGEgaHVycnksIHRoZQpzdGFuZGJ5IGRv ZXNuJ3QgbmVlZCBhbiB1cC10by10aGUtc2Vjb25kIHN0YXR1cykKCkZ1amlp IE1hc2FvIGFuZCBtZS4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwg ICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KIGRvYy9zcmMvc2dtbC9o aWdoLWF2YWlsYWJpbGl0eS5zZ21sICAgICAgICAgICB8ICA0OCArKysrKysr CiBkb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCAgICAgICAgICAgICAgICAg ICAgfCAgMzEgKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYyAgICAgICAgICAgICB8ICAyOSArKystCiBzcmMvYmFja2VuZC9wb3N0 bWFzdGVyL3Bnc3RhdC5jICAgICAgICAgICAgICAgfCAgNDQgKysrKysrCiBz cmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgICAgICAg fCAgMzcgKysrLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2Vp dmVyLmMgICAgICAgICB8IDE3MiArKysrKysrKysrKysrKysrKysrLS0tLS0K IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAgICAg ICB8IDE4NiArKysrKysrKysrKysrKysrKysrKysrLS0tLQogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgIDIxICst LQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlIHwgICAyICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oICAgICAg ICAgICAgICAgICAgICAgfCAgMTQgKy0KIHNyYy9pbmNsdWRlL3Bnc3RhdC5o ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiAxMiBmaWxlcyBj aGFuZ2VkLCA1MTMgaW5zZXJ0aW9ucygrKSwgODUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDBkODYyNGEuLmFjODQ1ZTAgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTI1MjEsNyArMjUyMSw3IEBAIGlu Y2x1ZGVfZGlyICdjb25mLmQnCiAKICAgICA8dmFyaWFibGVsaXN0PgogICAg ICA8dmFybGlzdGVudHJ5IGlkPSJndWMtYXJjaGl2ZS1tb2RlIiB4cmVmbGFi ZWw9ImFyY2hpdmVfbW9kZSI+Ci0gICAgICA8dGVybT48dmFybmFtZT5hcmNo aXZlX21vZGU8L3Zhcm5hbWU+ICg8dHlwZT5ib29sZWFuPC90eXBlPikKKyAg ICAgIDx0ZXJtPjx2YXJuYW1lPmFyY2hpdmVfbW9kZTwvdmFybmFtZT4gKDx0 eXBlPmVudW08L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4KICAgICAgICA8 cHJpbWFyeT48dmFybmFtZT5hcmNoaXZlX21vZGU8Lz4gY29uZmlndXJhdGlv biBwYXJhbWV0ZXI8L3ByaW1hcnk+CiAgICAgICA8L2luZGV4dGVybT4KQEAg LTI1MzAsNyArMjUzMCwxNSBAQCBpbmNsdWRlX2RpciAnY29uZi5kJwogICAg ICAgIDxwYXJhPgogICAgICAgICBXaGVuIDx2YXJuYW1lPmFyY2hpdmVfbW9k ZTwvPiBpcyBlbmFibGVkLCBjb21wbGV0ZWQgV0FMIHNlZ21lbnRzCiAgICAg ICAgIGFyZSBzZW50IHRvIGFyY2hpdmUgc3RvcmFnZSBieSBzZXR0aW5nCi0g ICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1hcmNoaXZlLWNvbW1hbmQiPi4K KyAgICAgICAgPHhyZWYgbGlua2VuZD0iZ3VjLWFyY2hpdmUtY29tbWFuZCI+ LiBJbiBhZGRpdGlvbiB0byA8bGl0ZXJhbD5vZmY8Lz4sCisgICAgICAgIHRv IGRpc2FibGUsIHRoZXJlIGFyZSB0aHJlZSBtb2RlczogPGxpdGVyYWw+b248 Lz4sIDxsaXRlcmFsPnNoYXJlZDwvPiwKKyAgICAgICAgYW5kIDxsaXRlcmFs PmFsd2F5czwvPi4gRHVyaW5nIG5vcm1hbCBvcGVyYXRpb24sIHRoZXJlIGlz IG5vCisgICAgICAgIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdGhyZWUgbW9k ZXMsIGJ1dCBpbiBhcmNoaXZlIHJlY292ZXJ5IG9yCisgICAgICAgIHN0YW5k YnkgbW9kZSwgaXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIFdBTCBhcmNoaXZl IGlzIHNoYXJlZCBiZXR3ZWVuCisgICAgICAgIHRoZSBwcmltYXJ5IGFuZCB0 aGUgc3RhbmRieSBzZXJ2ZXIgb3Igbm90LiBTZWUKKyAgICAgICAgPHhyZWYg bGlua2VuZD0iY29udGludW91cy1hcmNoaXZpbmctaW4tc3RhbmRieSI+IGZv ciBkZXRhaWxzLgorICAgICAgIDwvcGFyYT4gIAorICAgICAgIDxwYXJhPgog ICAgICAgICA8dmFybmFtZT5hcmNoaXZlX21vZGU8Lz4gYW5kIDx2YXJuYW1l PmFyY2hpdmVfY29tbWFuZDwvPiBhcmUKICAgICAgICAgc2VwYXJhdGUgdmFy aWFibGVzIHNvIHRoYXQgPHZhcm5hbWU+YXJjaGl2ZV9jb21tYW5kPC8+IGNh biBiZQogICAgICAgICBjaGFuZ2VkIHdpdGhvdXQgbGVhdmluZyBhcmNoaXZp bmcgbW9kZS4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9oaWdoLWF2YWls YWJpbGl0eS5zZ21sIGIvZG9jL3NyYy9zZ21sL2hpZ2gtYXZhaWxhYmlsaXR5 LnNnbWwKaW5kZXggYTE3ZjU1NS4uNjJmN2M3NSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2hpZ2gtYXZhaWxhYmlsaXR5LnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL2hpZ2gtYXZhaWxhYmlsaXR5LnNnbWwKQEAgLTEyMjAsNiArMTIy MCw1NCBAQCBwcmltYXJ5X3Nsb3RfbmFtZSA9ICdub2RlX2Ffc2xvdCcKIAog ICAgPC9zZWN0Mz4KICAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9ImNvbnRp bnVvdXMtYXJjaGl2aW5nLWluLXN0YW5kYnkiPgorICAgPHRpdGxlPkNvbnRp bnVvdXMgYXJjaGl2aW5nIGluIHN0YW5kYnk8L3RpdGxlPgorCisgICA8aW5k ZXh0ZXJtPgorICAgICA8cHJpbWFyeT5jb250aW51b3VzIGFyY2hpdmluZzwv cHJpbWFyeT4KKyAgICAgPHNlY29uZGFyeT5pbiBzdGFuZGJ5PC9zZWNvbmRh cnk+CisgICA8L2luZGV4dGVybT4KKworICAgPHBhcmE+CisgICAgIFdoZW4g Y29udGludW91cyBXQUwgYXJjaGl2aW5nIGlzIHVzZWQgaW4gYSBzdGFuZGJ5 LCB0aGVyZSBhcmUgdHdvCisgICAgIGRpZmZlcmVudCBzY2VuYXJpb3M6IHRo ZSBXQUwgYXJjaGl2ZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gdGhlIHByaW1h cnkKKyAgICAgYW5kIHRoZSBzdGFuZGJ5LCBvciB0aGUgc3RhbmRieSBjYW4g aGF2ZSBpdHMgb3duIFdBTCBhcmNoaXZlLiBJbiB0aGUKKyAgICAgc2hhcmVk IGFyY2hpdmUgc2NlbmFyaW8sIDx2YXJuYW1lPmFyY2hpdmVfbW9kZTwvdmFy bmFtZT4gbXVzdCBiZSBzZXQgdG8KKyAgICAgPGxpdGVyYWw+c2hhcmVkPC9s aXRlcmFsPiwgYW5kIGluIHRoZSBzZXBhcmF0ZSBhcmNoaXZlIHNjZW5hcmlv LCB0bworICAgICA8bGl0ZXJhbD5hbHdheXM8L2xpdGVyYWw+LiBTZXR0aW5n IGl0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiBpbiBhCisgICAgIHN0YW5k Ynkgc2VydmVyLCBvciB3aGVuIHBlcmZvcm1pbmcgcG9pbnQtaW4tdGltZSBy ZWNvdmVyeSwgaXMgbm90CisgICAgIGFsbG93ZWQgYW5kIGFuIGVycm9yIHdp bGwgYmUgcmFpc2VkLiBXaGVuIGEgc2VydmVyIGlzIG5vdCBpbiByZWNvdmVy eQorICAgICBtb2RlLCB0aGVyZSBpcyBubyBkaWZmZXJlbmNlIGJldHdlZW4g PGxpdGVyYWw+b248L2xpdGVyYWw+LAorICAgICA8bGl0ZXJhbD5zaGFyZWQ8 L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+YWx3YXlzPC9saXRlcmFsPiBtb2Rl cy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgIEluIDxsaXRlcmFs PnNoYXJlZDwvbGl0ZXJhbD4gYXJjaGl2ZSBtb2RlLCB0aGUgc3RhbmRieSBz ZXJ2ZXIgdHJpZXMgdG8KKyAgICAgZW5zdXJlIHRoYXQgdGhlIGFyY2hpdmUg aXMgY29tcGxldGUsIGV2ZW4gaWYgdGhlIHByaW1hcnkgY3Jhc2hlcyBhbmQK KyAgICAgZmFpbG92ZXIgaGFwcGVucy4gVGhlIHN0YW5kYnkgc2VydmVyIHdp bGwgbm90IGFyY2hpdmUgYW55IFdBTCBzZWdtZW50cworICAgICBhcyBsb25n IGFzIGl0IGlzIGluIHN0YW5kYnkgbW9kZTsgaXQgaXMgdGhlIHByaW1hcnkg c2VydmVyJ3MKKyAgICAgcmVzcG9uc2liaWxpdHkgdG8gZG8gc28uIEl0IHdp bGwsIGhvd2V2ZXIsIGtlZXAgdHJhY2sgb2Ygd2hpY2ggZmlsZXMKKyAgICAg aGF2ZSBhbHJlYWR5IGJlZW4gYXJjaGl2ZWQgYnkgdGhlIHByaW1hcnksIGFu ZCBpZiBmYWlsb3ZlciBoYXBwZW5zLCBpdAorICAgICB0YWtlcyBvdmVyIGFu ZCBhdHRlbXB0cyB0byBhcmNoaXZlIGFueSBmaWxlcyB0aGF0IHRoZSBwcmlt YXJ5IGhhZCBub3QKKyAgICAgeWV0IGFyY2hpdmVkLgorICAgPC9wYXJhPgor CisgICA8cGFyYT4KKyAgICAgSW4gPGxpdGVyYWw+YWx3YXlzPC9saXRlcmFs PiBhcmNoaXZlIG1vZGUsIHRoZSBzdGFuZGJ5IHNlcnZlciB3aWxsCisgICAg IGFyY2hpdmUgYWxsIFdBTCBpdCByZWNlaXZlcywgd2hldGhlciBpdCdzIHRo cm91Z2ggc3RyZWFtaW5nIHJlcGxpY2F0aW9uCisgICAgIG9yIGJ5IHJlc3Rv cmluZyBmcm9tIHRoZSBwcmltYXJ5J3MgYXJjaGl2ZSB1c2luZworICAgICA8 dmFybmFtZT5yZXN0b3JlX2NvbW1hbmQ8L3Zhcm5hbWU+LgorICAgPC9wYXJh PgorCisgICA8cGFyYT4KKyAgICAgSW4gY2FzY2FkaW5nIHJlcGxpY2F0aW9u LCB0aGUgZmlyc3Qgc3RhbmRieSBzZXJ2ZXIgYW5kIHRoZSBjYXNjYWRlZAor ICAgICBzdGFuZGJ5IHNlcnZlcnMgY2FuIHVzZSA8dmFybmFtZT5hcmNoaXZl X21vZGU8L3Zhcm5hbWU+IHNldHRpbmdzLiBJbgorICAgICBlYWNoIHN0YW5k YnksIGl0IHNob3VsZCBiZSBzZXQgdG8gPGxpdGVyYWw+c2hhcmVkPC9saXRl cmFsPiBvcgorICAgICA8bGl0ZXJhbD5hbHdheXM8L2xpdGVyYWw+LCBkZXBl bmRpbmcgb24gd2hldGhlciB0aGF0IHN0YW5kYnkgc2hhcmVzIHRoZQorICAg ICBhcmNoaXZlIHdpdGggdGhlIHByaW1hcnkgb3Igc3RhbmRieSBpdCBpcyBj b25uZWN0ZWQgdG8uCisgICA8L3BhcmE+CisgIDwvc2VjdDI+CiAgIDwvc2Vj dDE+CiAKICAgPHNlY3QxIGlkPSJ3YXJtLXN0YW5kYnktZmFpbG92ZXIiPgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcHJvdG9jb2wuc2dtbAppbmRleCBhYzEzZDMyLi5iZDJkZDNm IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtMTY0Niw2ICsxNjQ2 LDM3IEBAIFRoZSBjb21tYW5kcyBhY2NlcHRlZCBpbiB3YWxzZW5kZXIgbW9k ZSBhcmU6CiAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAg ICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlzdGVudHJ5PgorICAg ICAgPHRlcm0+CisgICAgICAgICAgV0FMIGFyY2hpdmFsIHJlcG9ydCBtZXNz YWdlIChCKQorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAg ICAgPHBhcmE+CisgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgPHZhcmxp c3RlbnRyeT4KKyAgICAgIDx0ZXJtPgorICAgICAgICAgIEJ5dGUxKCdhJykK KyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJh PgorICAgICAgICAgIFRlbGxzIHRoZSByZWNlaXZlciB0aGUgbGFzdCBhcmNo aXZlZCBXQUwgc2VnbWVudC4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlz dGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAgIDx2YXJsaXN0 ZW50cnk+CisgICAgICA8dGVybT4KKyAgICAgICAgICBCeXRlPHJlcGxhY2Vh YmxlPm48L3JlcGxhY2VhYmxlPgorICAgICAgPC90ZXJtPgorICAgICAgPGxp c3RpdGVtPgorICAgICAgPHBhcmE+CisgICAgICAgICAgRmlsZW5hbWUgb2Yg dGhlIGxhdGVzdCBhcmNoaXZlZCBmaWxlLgorICAgICAgPC9wYXJhPgorICAg ICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAg PC92YXJpYWJsZWxpc3Q+CisgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3Rp dGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICA8L3ZhcmlhYmxl bGlzdD4KICAgICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMKaW5kZXggNmY3ZTNiZDkuLmVlNWE0YTEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTg1LDcg Kzg1LDcgQEAgaW50CQkJbWluX3dhbF9zaXplID0gNTsJCS8qIDgwIE1CICov CiBpbnQJCQl3YWxfa2VlcF9zZWdtZW50cyA9IDA7CiBpbnQJCQlYTE9HYnVm ZmVycyA9IC0xOwogaW50CQkJWExvZ0FyY2hpdmVUaW1lb3V0ID0gMDsKLWJv b2wJCVhMb2dBcmNoaXZlTW9kZSA9IGZhbHNlOworaW50CQkJWExvZ0FyY2hp dmVNb2RlID0gQVJDSElWRV9NT0RFX09GRjsKIGNoYXIJICAgKlhMb2dBcmNo aXZlQ29tbWFuZCA9IE5VTEw7CiBib29sCQlFbmFibGVIb3RTdGFuZGJ5ID0g ZmFsc2U7CiBib29sCQlmdWxsUGFnZVdyaXRlcyA9IHRydWU7CkBAIC0xMzks NiArMTM5LDI1IEBAIGNvbnN0IHN0cnVjdCBjb25maWdfZW51bV9lbnRyeSBz eW5jX21ldGhvZF9vcHRpb25zW10gPSB7CiAJe05VTEwsIDAsIGZhbHNlfQog fTsKIAorCisvKgorICogQWx0aG91Z2ggb25seSAib24iLCAib2ZmIiwgYW5k ICJhbHdheXMiIGFyZSBkb2N1bWVudGVkLAorICogd2UgYWNjZXB0IGFsbCB0 aGUgbGlrZWx5IHZhcmlhbnRzIG9mICJvbiIgYW5kICJvZmYiLgorICovCitj b25zdCBzdHJ1Y3QgY29uZmlnX2VudW1fZW50cnkgYXJjaGl2ZV9tb2RlX29w dGlvbnNbXSA9IHsKKwl7InNoYXJlZCIsIEFSQ0hJVkVfTU9ERV9TSEFSRUQs IGZhbHNlfSwKKwl7ImFsd2F5cyIsIEFSQ0hJVkVfTU9ERV9BTFdBWVMsIGZh bHNlfSwKKwl7Im9uIiwgQVJDSElWRV9NT0RFX09OLCBmYWxzZX0sCisJeyJv ZmYiLCBBUkNISVZFX01PREVfT0ZGLCBmYWxzZX0sCisJeyJ0cnVlIiwgQVJD SElWRV9NT0RFX09OLCB0cnVlfSwKKwl7ImZhbHNlIiwgQVJDSElWRV9NT0RF X09GRiwgdHJ1ZX0sCisJeyJ5ZXMiLCBBUkNISVZFX01PREVfT04sIHRydWV9 LAorCXsibm8iLCBBUkNISVZFX01PREVfT0ZGLCB0cnVlfSwKKwl7IjEiLCBB UkNISVZFX01PREVfT04sIHRydWV9LAorCXsiMCIsIEFSQ0hJVkVfTU9ERV9P RkYsIHRydWV9LAorCXtOVUxMLCAwLCBmYWxzZX0KK307CisKIC8qCiAgKiBT dGF0aXN0aWNzIGZvciBjdXJyZW50IGNoZWNrcG9pbnQgYXJlIGNvbGxlY3Rl ZCBpbiB0aGlzIGdsb2JhbCBzdHJ1Y3QuCiAgKiBCZWNhdXNlIG9ubHkgdGhl IGNoZWNrcG9pbnRlciBvciBhIHN0YW5kLWFsb25lIGJhY2tlbmQgY2FuIHBl cmZvcm0KQEAgLTc2Niw3ICs3ODUsNyBAQCBzdGF0aWMgTWVtb3J5Q29udGV4 dCB3YWxEZWJ1Z0N4dCA9IE5VTEw7CiAjZW5kaWYKIAogc3RhdGljIHZvaWQg cmVhZFJlY292ZXJ5Q29tbWFuZEZpbGUodm9pZCk7Ci1zdGF0aWMgdm9pZCBl eGl0QXJjaGl2ZVJlY292ZXJ5KFRpbWVMaW5lSUQgZW5kVExJLCBYTG9nU2Vn Tm8gZW5kTG9nU2VnTm8pOworc3RhdGljIHZvaWQgZXhpdEFyY2hpdmVSZWNv dmVyeShUaW1lTGluZUlEIGVuZFRMSSwgWExvZ1JlY1B0ciBlbmRPZkxvZyk7 CiBzdGF0aWMgYm9vbCByZWNvdmVyeVN0b3BzQmVmb3JlKFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKTsKIHN0YXRpYyBib29sIHJlY292ZXJ5U3RvcHNBZnRl cihYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBzdGF0aWMgdm9pZCByZWNv dmVyeVBhdXNlc0hlcmUodm9pZCk7CkBAIC02MDM3LDYgKzYwNTYsMTIgQEAg U3RhcnR1cFhMT0codm9pZCkKIAogCWlmIChBcmNoaXZlUmVjb3ZlcnlSZXF1 ZXN0ZWQpCiAJeworCQkvKiBhcmNoaXZlX21vZGU9b24gaXMgbm90IGFsbG93 ZWQgZHVyaW5nIGFyY2hpdmUgcmVjb3ZlcnkuICovCisJCWlmIChYTG9nQXJj aGl2ZU1vZGUgPT0gQVJDSElWRV9NT0RFX09OKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycm1zZygiYXJjaGl2ZV9tb2RlPSdvbicgY2Fubm90IGJl IHVzZWQgaW4gYXJjaGl2ZSByZWNvdmVyeSIpLAorCQkJCQkgKGVycmhpbnQo IlVzZSAnc2hhcmVkJyBvciAnYWx3YXlzJyBtb2RlIGluc3RlYWQuIikpKSk7 CisKIAkJaWYgKFN0YW5kYnlNb2RlUmVxdWVzdGVkKQogCQkJZXJlcG9ydChM T0csCiAJCQkJCShlcnJtc2coImVudGVyaW5nIHN0YW5kYnkgbW9kZSIpKSk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYwppbmRleCAxZTYw NzNhLi4xM2JlZTBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL3Bnc3RhdC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdz dGF0LmMKQEAgLTI0NzEsNiArMjQ3MSw1MCBAQCBwZ3N0YXRfZmV0Y2hfZ2xv YmFsKHZvaWQpCiB9CiAKIAorLyoKKyAqIC0tLS0tLS0tLQorICogcGdzdGF0 X3VzZV9zdGFsZV9zbmFwc2hvdCgpIC0KKyAqCisgKglUYWtlIGEgInNuYXBz aG90IiBvZiB0aGUgY3VycmVudCBzdGF0cyBpbnRvIGJhY2tlbmQtcHJpdmF0 ZSBtZW1vcnkuCisgKglwZ3N0YXRfZmV0Y2hfKigpIGZ1bmN0aW9ucyBjYW4g dGhlbiBiZSB1c2VkIHRvIGludGVycm9nYXRlIHRoZSBzdGF0cy4KKyAqCisg KglUaGUgZmlyc3QgY2FsbCBwZ3N0YXRfZmV0Y2hfKigpIGluIGEgdHJhbnNh Y3Rpb24gd2lsbCB0YWtlIGEgc25hcHNob3QKKyAqCWltcGxpY2l0bHksIHNv IHRoaXMgaXMgbm9ybWFsbHkgbm90IHJlcXVpcmVkLiBCdXQgdGhpcyBjYW4g YmUgdXNlZCBpZgorICoJeW91IGRvbid0IHdhbnQgdG8gd2FpdCBmb3IgZnJl c2ggc3RhdHMsIGxpa2UgcGdzdGF0X2ZldGNoXyooKSBmdW5jdGlvbnMKKyAq CXdpbGwKKyAqIC0tLS0tLS0tLQorICovCit2b2lkCitwZ3N0YXRfdXNlX3N0 YWxlX3NuYXBzaG90KHZvaWQpCit7CisJcGdzdGF0X2NsZWFyX3NuYXBzaG90 KCk7CisKKwkvKgorCSAqIEZvciBhbGwgdGhlIGN1cnJlbnQgY2FsbGVycywg c2hhbGxvdyBzdGF0cyBhcmUgZW5vdWdoLgorCSAqCisJICogWFhYOiBUaGVy ZSBpcyBubyB3YXkgdG8gcmVxdWVzdCBnbG9iYWwgc3RhdHMgb25seTsgd2Un bGwgZ2V0IHN0YXRzCisJICogZm9yIGFsbCBkYXRhYmFzZXMuCisJICovCisJ cGdTdGF0REJIYXNoID0gcGdzdGF0X3JlYWRfc3RhdHNmaWxlcyhJbnZhbGlk T2lkLCBmYWxzZSwgZmFsc2UpOworfQorCisvKgorICogLS0tLS0tLS0tCisg KiBwZ3N0YXRfcmVxdWVzdF91cGRhdGUoKSAtCisgKgorICoJQXNrIHRoZSBz dGF0cyBjb2xsZWN0b3IgdG8gcmVmcmVzaCB0aGUgc3RhdHMgZmlsZS4gTm9y bWFsbHksCisgKglwZ3N0YXRfZmV0Y2hfKigpIHdpbGwgZG8gdGhpcyBhdXRv bWF0aWNhbGx5LCBidXQgdGhpcyBjYW4gYmUgdXNlZCB0b2dldGhlcgorICoJ d2l0aCBwZ3N0YXRfdGFrZV9zbmFwc2hvdCgpIHRvIHdhaXQgZm9yIHBvbGwg Zm9yIHVwZGF0ZWQgc3RhdHMKKyAqCWFzeW5jaHJvbm91c2x5LgorICogLS0t LS0tLS0tCisgKi8KK3ZvaWQKK3Bnc3RhdF9yZXF1ZXN0X3VwZGF0ZShUaW1l c3RhbXBUeiBjdXJfdHMsIFRpbWVzdGFtcFR6IG1pbl90cykKK3sKKwlwZ3N0 YXRfc2VuZF9pbnF1aXJ5KGN1cl90cywgbWluX3RzLCBJbnZhbGlkT2lkKTsK K30KKworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEZ1bmN0aW9ucyBmb3Ig bWFuYWdlbWVudCBvZiB0aGUgc2hhcmVkLW1lbW9yeSBQZ0JhY2tlbmRTdGF0 dXMgYXJyYXkKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRleCBhOWYyMGFjLi43MmZl NGZkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3Rt YXN0ZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0 ZXIuYwpAQCAtODI4LDkgKzgyOCw5IEBAIFBvc3RtYXN0ZXJNYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJCXdyaXRlX3N0ZGVycigiJXM6IG1heF93 YWxfc2VuZGVycyBtdXN0IGJlIGxlc3MgdGhhbiBtYXhfY29ubmVjdGlvbnNc biIsIHByb2duYW1lKTsKIAkJRXhpdFBvc3RtYXN0ZXIoMSk7CiAJfQotCWlm IChYTG9nQXJjaGl2ZU1vZGUgJiYgd2FsX2xldmVsID09IFdBTF9MRVZFTF9N SU5JTUFMKQorCWlmIChYTG9nQXJjaGl2ZU1vZGUgPiBBUkNISVZFX01PREVf T0ZGICYmIHdhbF9sZXZlbCA9PSBXQUxfTEVWRUxfTUlOSU1BTCkKIAkJZXJl cG9ydChFUlJPUiwKLQkJCQkoZXJybXNnKCJXQUwgYXJjaGl2YWwgKGFyY2hp dmVfbW9kZT1vbikgcmVxdWlyZXMgd2FsX2xldmVsIFwiYXJjaGl2ZVwiLCBc ImhvdF9zdGFuZGJ5XCIsIG9yIFwibG9naWNhbFwiIikpKTsKKwkJCQkoZXJy bXNnKCJXQUwgYXJjaGl2YWwgKGFyY2hpdmVfbW9kZT1vbi9hbHdheXMvc2hh cmVkKSByZXF1aXJlcyB3YWxfbGV2ZWwgXCJhcmNoaXZlXCIsIFwiaG90X3N0 YW5kYnlcIiwgb3IgXCJsb2dpY2FsXCIiKSkpOwogCWlmIChtYXhfd2FsX3Nl bmRlcnMgPiAwICYmIHdhbF9sZXZlbCA9PSBXQUxfTEVWRUxfTUlOSU1BTCkK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJybXNnKCJXQUwgc3RyZWFtaW5n IChtYXhfd2FsX3NlbmRlcnMgPiAwKSByZXF1aXJlcyB3YWxfbGV2ZWwgXCJh cmNoaXZlXCIsIFwiaG90X3N0YW5kYnlcIiwgb3IgXCJsb2dpY2FsXCIiKSkp OwpAQCAtMTY0NSwxMyArMTY0NSwyMSBAQCBTZXJ2ZXJMb29wKHZvaWQpCiAJ CQkJc3RhcnRfYXV0b3ZhY19sYXVuY2hlciA9IGZhbHNlOyAvKiBzaWduYWwg cHJvY2Vzc2VkICovCiAJCX0KIAotCQkvKiBJZiB3ZSBoYXZlIGxvc3QgdGhl IGFyY2hpdmVyLCB0cnkgdG8gc3RhcnQgYSBuZXcgb25lICovCi0JCWlmIChY TG9nQXJjaGl2aW5nQWN0aXZlKCkgJiYgUGdBcmNoUElEID09IDAgJiYgcG1T dGF0ZSA9PSBQTV9SVU4pCi0JCQlQZ0FyY2hQSUQgPSBwZ2FyY2hfc3RhcnQo KTsKLQotCQkvKiBJZiB3ZSBoYXZlIGxvc3QgdGhlIHN0YXRzIGNvbGxlY3Rv ciwgdHJ5IHRvIHN0YXJ0IGEgbmV3IG9uZSAqLwotCQlpZiAoUGdTdGF0UElE ID09IDAgJiYgcG1TdGF0ZSA9PSBQTV9SVU4pCi0JCQlQZ1N0YXRQSUQgPSBw Z3N0YXRfc3RhcnQoKTsKKwkJLyoKKwkJICogSWYgd2UgaGF2ZSBsb3N0IHRo ZSBhcmNoaXZlciwgdHJ5IHRvIHN0YXJ0IGEgbmV3IG9uZS4KKwkJICoKKwkJ ICogSWYgV0FMIGFyY2hpdmluZyBpcyBlbmFibGVkIGFsd2F5cywgd2UgdHJ5 IHRvIHN0YXJ0IGEgbmV3IGFyY2hpdmVyCisJCSAqIGV2ZW4gZHVyaW5nIHJl Y292ZXJ5LgorCQkgKi8KKwkJaWYgKFBnQXJjaFBJRCA9PSAwICYmIHdhbF9s ZXZlbCA+PSBXQUxfTEVWRUxfQVJDSElWRSkKKwkJeworCQkJaWYgKChwbVN0 YXRlID09IFBNX1JVTiAmJiBYTG9nQXJjaGl2ZU1vZGUgPiBBUkNISVZFX01P REVfT0ZGKSB8fAorCQkJCSgocG1TdGF0ZSA9PSBQTV9SRUNPVkVSWSB8fCBw bVN0YXRlID09IFBNX0hPVF9TVEFOREJZKSAmJgorCQkJCSBYTG9nQXJjaGl2 ZU1vZGUgPT0gQVJDSElWRV9NT0RFX0FMV0FZUykpCisJCQl7CisJCQkJUGdB cmNoUElEID0gcGdhcmNoX3N0YXJ0KCk7CisJCQl9CisJCX0KIAogCQkvKiBJ ZiB3ZSBuZWVkIHRvIHNpZ25hbCB0aGUgYXV0b3ZhY3V1bSBsYXVuY2hlciwg ZG8gc28gbm93ICovCiAJCWlmIChhdmxhdW5jaGVyX25lZWRzX3NpZ25hbCkK QEAgLTQ4MDcsNiArNDgxNSwxNyBAQCBzaWd1c3IxX2hhbmRsZXIoU0lHTkFM X0FSR1MpCiAJCUFzc2VydChCZ1dyaXRlclBJRCA9PSAwKTsKIAkJQmdXcml0 ZXJQSUQgPSBTdGFydEJhY2tncm91bmRXcml0ZXIoKTsKIAorCQkvKgorCQkg KiBTdGFydCB0aGUgYXJjaGl2ZXIgaWYgd2UncmUgcmVzcG9uc2libGUgZm9y IChyZS0pYXJjaGl2aW5nIHJlY2VpdmVkCisJCSAqIGZpbGVzLgorCQkgKi8K KwkJQXNzZXJ0KFBnQXJjaFBJRCA9PSAwKTsKKwkJaWYgKHdhbF9sZXZlbCA+ PSBXQUxfTEVWRUxfQVJDSElWRSAmJgorCQkJWExvZ0FyY2hpdmVNb2RlID09 IEFSQ0hJVkVfTU9ERV9BTFdBWVMpCisJCXsKKwkJCVBnQXJjaFBJRCA9IHBn YXJjaF9zdGFydCgpOworCQl9CisKIAkJcG1TdGF0ZSA9IFBNX1JFQ09WRVJZ OwogCX0KIAlpZiAoQ2hlY2tQb3N0bWFzdGVyU2lnbmFsKFBNU0lHTkFMX0JF R0lOX0hPVF9TVEFOREJZKSAmJgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmMKaW5kZXggOWM3NzEwZi4uZTUzZmZlYiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZl ci5jCkBAIC01Miw4ICs1MiwxMSBAQAogI2luY2x1ZGUgImxpYnBxL3BxZm9y bWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRl ICJwb3N0bWFzdGVyL3BnYXJjaC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L3dhbHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2Vu ZGVyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCkBAIC0xMDcsNiArMTEw LDkgQEAgc3RhdGljIHN0cnVjdAogCVhMb2dSZWNQdHIJRmx1c2g7CQkJLyog bGFzdCBieXRlICsgMSBmbHVzaGVkIGluIHRoZSBzdGFuZGJ5ICovCiB9CUxv Z3N0cmVhbVJlc3VsdDsKIAorLyogKi8KK3N0YXRpYyBjaGFyIHByaW1hcnlf bGFzdF9hcmNoaXZlZFtNQVhfWEZOX0NIQVJTICsgMV07CisKIHN0YXRpYyBT dHJpbmdJbmZvRGF0YSByZXBseV9tZXNzYWdlOwogc3RhdGljIFN0cmluZ0lu Zm9EYXRhIGluY29taW5nX21lc3NhZ2U7CiAKQEAgLTE0MSw2ICsxNDcsNyBA QCBzdGF0aWMgdm9pZCBYTG9nV2FsUmN2Rmx1c2goYm9vbCBkeWluZyk7CiBz dGF0aWMgdm9pZCBYTG9nV2FsUmN2U2VuZFJlcGx5KGJvb2wgZm9yY2UsIGJv b2wgcmVxdWVzdFJlcGx5KTsKIHN0YXRpYyB2b2lkIFhMb2dXYWxSY3ZTZW5k SFNGZWVkYmFjayhib29sIGltbWVkKTsKIHN0YXRpYyB2b2lkIFByb2Nlc3NX YWxTbmRyTWVzc2FnZShYTG9nUmVjUHRyIHdhbEVuZCwgVGltZXN0YW1wVHog c2VuZFRpbWUpOworc3RhdGljIHZvaWQgUHJvY2Vzc0FyY2hpdmFsUmVwb3J0 KHZvaWQpOwogCiAvKiBTaWduYWwgaGFuZGxlcnMgKi8KIHN0YXRpYyB2b2lk IFdhbFJjdlNpZ0h1cEhhbmRsZXIoU0lHTkFMX0FSR1MpOwpAQCAtNTI2LDIx ICs1MzMsMTIgQEAgV2FsUmVjZWl2ZXJNYWluKHZvaWQpCiAJCSAqLwogCQlp ZiAocmVjdkZpbGUgPj0gMCkKIAkJewotCQkJY2hhcgkJeGxvZ2ZuYW1lW01B WEZOQU1FTEVOXTsKLQogCQkJWExvZ1dhbFJjdkZsdXNoKGZhbHNlKTsKIAkJ CWlmIChjbG9zZShyZWN2RmlsZSkgIT0gMCkKIAkJCQllcmVwb3J0KFBBTklD LAogCQkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCiAJCQkJCQkg ZXJybXNnKCJjb3VsZCBub3QgY2xvc2UgbG9nIHNlZ21lbnQgJXM6ICVtIiwK IAkJCQkJCQkJWExvZ0ZpbGVOYW1lUChyZWN2RmlsZVRMSSwgcmVjdlNlZ05v KSkpKTsKLQotCQkJLyoKLQkJCSAqIENyZWF0ZSAuZG9uZSBmaWxlIGZvcmNp Ymx5IHRvIHByZXZlbnQgdGhlIHN0cmVhbWVkIHNlZ21lbnQgZnJvbQotCQkJ ICogYmVpbmcgYXJjaGl2ZWQgbGF0ZXIuCi0JCQkgKi8KLQkJCVhMb2dGaWxl TmFtZSh4bG9nZm5hbWUsIHJlY3ZGaWxlVExJLCByZWN2U2VnTm8pOwotCQkJ WExvZ0FyY2hpdmVGb3JjZURvbmUoeGxvZ2ZuYW1lKTsKIAkJfQogCQlyZWN2 RmlsZSA9IC0xOwogCkBAIC04NDYsNiArODQ0LDI2IEBAIFhMb2dXYWxSY3ZQ cm9jZXNzTXNnKHVuc2lnbmVkIGNoYXIgdHlwZSwgY2hhciAqYnVmLCBTaXpl IGxlbikKIAkJCQkJWExvZ1dhbFJjdlNlbmRSZXBseSh0cnVlLCBmYWxzZSk7 CiAJCQkJYnJlYWs7CiAJCQl9CisJCWNhc2UgJ2EnOgkJCQkvKiBBcmNoaXZh bCByZXBvcnQgKi8KKwkJCXsKKwkJCQkvKiB0aGUgY29udGVudCBvZiB0aGUg bWVzc2FnZSBpcyBhIGZpbGVuYW1lICovCisJCQkJaWYgKGxlbiA+PSBzaXpl b2YocHJpbWFyeV9sYXN0X2FyY2hpdmVkKSkKKwkJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElP TiksCisJCQkJCQkJIGVycm1zZ19pbnRlcm5hbCgiaW52YWxpZCBhcmNoaXZh bCByZXBvcnQgbWVzc2FnZSB3aXRoIGxlbmd0aCAlZCIsCisJCQkJCQkJCQkJ CSAoaW50KSBsZW4pKSk7CisJCQkJbWVtY3B5KHByaW1hcnlfbGFzdF9hcmNo aXZlZCwgYnVmLCBsZW4pOworCQkJCXByaW1hcnlfbGFzdF9hcmNoaXZlZFts ZW5dID0gJ1wwJzsKKwkJCQlpZiAoc3Ryc3BuKGJ1ZiwgVkFMSURfWEZOX0NI QVJTKSAhPSBsZW4pCisJCQkJeworCQkJCQlwcmltYXJ5X2xhc3RfYXJjaGl2 ZWRbMF0gPSAnXDAnOworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShl cnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkJCQkg ZXJybXNnX2ludGVybmFsKCJ1bmV4cGVjdGVkIGNoYXJhY3RlciBpbiBwcmlt YXJ5J3MgbGFzdCBhcmNoaXZlZCBmaWxlbmFtZSIpKSk7CisJCQkJfQorCQkJ CVByb2Nlc3NBcmNoaXZhbFJlcG9ydCgpOworCQkJCWJyZWFrOworCQkJfQog CQlkZWZhdWx0OgogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUo RVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLApAQCAtODY3LDM5ICs4ODUs MTggQEAgWExvZ1dhbFJjdldyaXRlKGNoYXIgKmJ1ZiwgU2l6ZSBuYnl0ZXMs IFhMb2dSZWNQdHIgcmVjcHRyKQogCXsKIAkJaW50CQkJc2VnYnl0ZXM7CiAK LQkJaWYgKHJlY3ZGaWxlIDwgMCB8fCAhWExCeXRlSW5TZWcocmVjcHRyLCBy ZWN2U2VnTm8pKQorCQlpZiAoIVhMQnl0ZUluU2VnKHJlY3B0ciwgcmVjdlNl Z05vKSkKIAkJewogCQkJYm9vbAkJdXNlX2V4aXN0ZW50OwogCiAJCQkvKgot CQkJICogZnN5bmMoKSBhbmQgY2xvc2UgY3VycmVudCBmaWxlIGJlZm9yZSB3 ZSBzd2l0Y2ggdG8gbmV4dCBvbmUuIFdlCi0JCQkgKiB3b3VsZCBvdGhlcndp c2UgaGF2ZSB0byByZW9wZW4gdGhpcyBmaWxlIHRvIGZzeW5jIGl0IGxhdGVy CisJCQkgKiBXZSB0YWtlIGNhcmUgdG8gYWx3YXlzIGNsb3NlIHRoZSBjdXJy ZW50IGZpbGUsIGFmdGVyIHdyaXRpbmcKKwkJCSAqIHRoZSBsYXN0IGJ5dGUg dG8gaXQuIFNvIHRoaXMgc2hvdWxkbid0IGhhcHBlbi4KIAkJCSAqLwogCQkJ aWYgKHJlY3ZGaWxlID49IDApCi0JCQl7Ci0JCQkJY2hhcgkJeGxvZ2ZuYW1l W01BWEZOQU1FTEVOXTsKLQotCQkJCVhMb2dXYWxSY3ZGbHVzaChmYWxzZSk7 Ci0KLQkJCQkvKgotCQkJCSAqIFhMT0cgc2VnbWVudCBmaWxlcyB3aWxsIGJl IHJlLXJlYWQgYnkgcmVjb3ZlcnkgaW4gc3RhcnR1cAotCQkJCSAqIHByb2Nl c3Mgc29vbiwgc28gd2UgZG9uJ3QgYWR2aXNlIHRoZSBPUyB0byByZWxlYXNl IGNhY2hlCi0JCQkJICogcGFnZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxl IGxpa2UgWExvZ0ZpbGVDbG9zZSgpIGRvZXMuCi0JCQkJICovCi0JCQkJaWYg KGNsb3NlKHJlY3ZGaWxlKSAhPSAwKQotCQkJCQllcmVwb3J0KFBBTklDLAot CQkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAotCQkJCQkJCSBl cnJtc2coImNvdWxkIG5vdCBjbG9zZSBsb2cgc2VnbWVudCAlczogJW0iLAot CQkJCQkJCQkJWExvZ0ZpbGVOYW1lUChyZWN2RmlsZVRMSSwgcmVjdlNlZ05v KSkpKTsKLQotCQkJCS8qCi0JCQkJICogQ3JlYXRlIC5kb25lIGZpbGUgZm9y Y2libHkgdG8gcHJldmVudCB0aGUgc3RyZWFtZWQgc2VnbWVudAotCQkJCSAq IGZyb20gYmVpbmcgYXJjaGl2ZWQgbGF0ZXIuCi0JCQkJICovCi0JCQkJWExv Z0ZpbGVOYW1lKHhsb2dmbmFtZSwgcmVjdkZpbGVUTEksIHJlY3ZTZWdObyk7 Ci0JCQkJWExvZ0FyY2hpdmVGb3JjZURvbmUoeGxvZ2ZuYW1lKTsKLQkJCX0K LQkJCXJlY3ZGaWxlID0gLTE7CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ CShlcnJtc2coInVuZXhwZWN0ZWQgV0FMIHJlY2VpdmUgbG9jYXRpb24gJXMi LAorCQkJCQkJCQlYTG9nRmlsZU5hbWVQKHJlY3ZGaWxlVExJLCByZWN2U2Vn Tm8pKSkpOwogCiAJCQkvKiBDcmVhdGUvdXNlIG5ldyBsb2cgZmlsZSAqLwog CQkJWExCeXRlVG9TZWcocmVjcHRyLCByZWN2U2VnTm8pOwpAQCAtOTU0LDYg Kzk1MSw1MSBAQCBYTG9nV2FsUmN2V3JpdGUoY2hhciAqYnVmLCBTaXplIG5i eXRlcywgWExvZ1JlY1B0ciByZWNwdHIpCiAJCWJ1ZiArPSBieXRlc3dyaXR0 ZW47CiAKIAkJTG9nc3RyZWFtUmVzdWx0LldyaXRlID0gcmVjcHRyOworCisJ CS8qCisJCSAqIElmIHdlIGp1c3Qgd3JvdGUgdGhlIGxhc3QgYnl0ZSB0byB0 aGlzIHNlZ21lbnQsIGZzeW5jKCkgYW5kIGNsb3NlCisJCSAqIGN1cnJlbnQg ZmlsZSBiZWZvcmUgd2Ugc3dpdGNoIHRvIG5leHQgb25lLiBXZSB3b3VsZCBv dGhlcndpc2UgaGF2ZQorCQkgKiB0byByZW9wZW4gdGhpcyBmaWxlIHRvIGZz eW5jIGl0IGxhdGVyLgorCQkgKi8KKwkJaWYgKHJlY3ZPZmYgPT0gWExPR19T RUdfU0laRSkKKwkJeworCQkJY2hhcgkJeGxvZ2ZuYW1lW01BWEZOQU1FTEVO XTsKKworCQkJWExvZ1dhbFJjdkZsdXNoKGZhbHNlKTsKKworCQkJLyoKKwkJ CSAqIFhMT0cgc2VnbWVudCBmaWxlcyB3aWxsIGJlIHJlLXJlYWQgYnkgcmVj b3ZlcnkgaW4gc3RhcnR1cAorCQkJICogcHJvY2VzcyBzb29uLCBzbyB3ZSBk b24ndCBhZHZpc2UgdGhlIE9TIHRvIHJlbGVhc2UgY2FjaGUKKwkJCSAqIHBh Z2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZSBsaWtlIFhMb2dGaWxlQ2xv c2UoKSBkb2VzLgorCQkJICovCisJCQlpZiAoY2xvc2UocmVjdkZpbGUpICE9 IDApCisJCQkJZXJlcG9ydChQQU5JQywKKwkJCQkJCShlcnJjb2RlX2Zvcl9m aWxlX2FjY2VzcygpLAorCQkJCQkJIGVycm1zZygiY291bGQgbm90IGNsb3Nl IGxvZyBzZWdtZW50ICVzOiAlbSIsCisJCQkJCQkJCVhMb2dGaWxlTmFtZVAo cmVjdkZpbGVUTEksIHJlY3ZTZWdObykpKSk7CisJCQlyZWN2RmlsZSA9IC0x OworCisJCQkvKgorCQkJICogTm93IHRoYXQgdGhpcyBzZWdtZW50IGlzIGNv bXBsZXRlLCBkbyB3ZSBuZWVkIHRvIGFyY2hpdmUgaXQ/CisJCQkgKgorCQkJ ICogSW4gJ2Fsd2F5cycgbW9kZSwgd2UgY2xlYXJseSBuZWVkIHRvIGFyY2hp dmUgdGhpcy4KKwkJCSAqCisJCQkgKiBJbiAnc2hhcmVkJyBtb2RlLCB3ZSBt aWdodCBuZWVkIHRvLCBpZiB3ZSBnZXQgcHJvbW90ZWQgYmVmb3JlCisJCQkg KiB0aGUgbWFzdGVyIGhhcyBhcmNoaXZlZCB0aGlzIGZpbGUsIHNvIGNyZWF0 ZSBhIC5yZWFkeSBmaWxlLiBJdAorCQkJICogd2lsbCBiZSByZXBsYWNlZCB3 aXRoIC5kb25lIGxhdGVyLCBpZiB3ZSBnZXQgYWNrbm93bGVkZ2VtZXQKKwkJ CSAqIGZyb20gdGhlIHByaW1hcnkgdGhhdCB0aGlzIGhhcyBhbHJlYWR5IGJl ZW4gYXJjaGl2ZWQuCisJCQkgKgorCQkJICogSW4gJ29uJyBtb2RlLCB3ZSdy ZSBvbmx5IHJlc3BvbnNpYmxlIGZvciBXQUwgd2UndmUgZ2VuZXJhdGVkCisJ CQkgKiBvdXJzZWx2ZXMuCisJCQkgKi8KKwkJCWlmIChYTG9nQXJjaGl2ZU1v ZGUgPT0gQVJDSElWRV9NT0RFX0FMV0FZUyB8fAorCQkJCVhMb2dBcmNoaXZl TW9kZSA9PSBBUkNISVZFX01PREVfU0hBUkVEKQorCQkJeworCQkJCVhMb2dG aWxlTmFtZSh4bG9nZm5hbWUsIHJlY3ZGaWxlVExJLCByZWN2U2VnTm8pOwor CisJCQkJWExvZ0FyY2hpdmVDaGVja0RvbmUoeGxvZ2ZuYW1lKTsKKwkJCX0K KwkJfQogCX0KIH0KIApAQCAtMTIxNSwzICsxMjU3LDYxIEBAIFByb2Nlc3NX YWxTbmRyTWVzc2FnZShYTG9nUmVjUHRyIHdhbEVuZCwgVGltZXN0YW1wVHog c2VuZFRpbWUpCiAJCXBmcmVlKHJlY2VpcHR0aW1lKTsKIAl9CiB9CisKKy8q CisgKiBDcmVhdGUgLmRvbmUgYW5kIC5yZWFkeSBmaWxlcywgYmFzZWQgb24g dGhlIG1hc3RlcidzIGxhc3QgYXJjaGl2YWwgcmVwb3J0LgorICovCitzdGF0 aWMgdm9pZAorUHJvY2Vzc0FyY2hpdmFsUmVwb3J0KHZvaWQpCit7CisJRElS CQkgICAqeGxkaXI7CisJc3RydWN0IGRpcmVudCAqeGxkZTsKKworCWVsb2co REVCVUcyLCAicmVjZWl2ZWQgYXJjaGl2YWwgcmVwb3J0IGZyb20gbWFzdGVy OiAlcyIsCisJCSBwcmltYXJ5X2xhc3RfYXJjaGl2ZWQpOworCisJaWYgKFhM b2dBcmNoaXZlTW9kZSAhPSBBUkNISVZFX01PREVfU0hBUkVEKQorCQlyZXR1 cm47CisKKwkvKiBDaGVjayB0aGF0IHRoZSBmaWxlbmFtZSB0aGUgcHJpbWFy eSByZXBvcnRlZCBsb29rcyB2YWxpZCAqLworCWlmIChzdHJsZW4ocHJpbWFy eV9sYXN0X2FyY2hpdmVkKSA8IDI0IHx8CisJCXN0cnNwbihwcmltYXJ5X2xh c3RfYXJjaGl2ZWQsICIwMTIzNDU2Nzg5QUJDREVGIikgIT0gMjQpCisJCXJl dHVybjsKKworCXhsZGlyID0gQWxsb2NhdGVEaXIoWExPR0RJUik7CisJaWYg KHhsZGlyID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJIGVycm1zZygiY291bGQgbm90 IG9wZW4gdHJhbnNhY3Rpb24gbG9nIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwK KwkJCQkJCVhMT0dESVIpKSk7CisKKwl3aGlsZSAoKHhsZGUgPSBSZWFkRGly KHhsZGlyLCBYTE9HRElSKSkgIT0gTlVMTCkKKwl7CisJCS8qCisJCSAqIFdl IGlnbm9yZSB0aGUgdGltZWxpbmUgcGFydCBvZiB0aGUgWExPRyBzZWdtZW50 IGlkZW50aWZpZXJzIGluCisJCSAqIGRlY2lkaW5nIHdoZXRoZXIgYSBzZWdt ZW50IGlzIHN0aWxsIG5lZWRlZC4gIFRoaXMgZW5zdXJlcyB0aGF0IHdlCisJ CSAqIHdvbid0IHByZW1hdHVyZWx5IHJlbW92ZSBhIHNlZ21lbnQgZnJvbSBh IHBhcmVudCB0aW1lbGluZS4gV2UgY291bGQKKwkJICogcHJvYmFibHkgYmUg YSBsaXR0bGUgbW9yZSBwcm9hY3RpdmUgYWJvdXQgcmVtb3Zpbmcgc2VnbWVu dHMgb2YKKwkJICogbm9uLXBhcmVudCB0aW1lbGluZXMsIGJ1dCB0aGF0IHdv dWxkIGJlIGEgd2hvbGUgbG90IG1vcmUKKwkJICogY29tcGxpY2F0ZWQuCisJ CSAqCisJCSAqIFdlIHVzZSB0aGUgYWxwaGFudW1lcmljIHNvcnRpbmcgcHJv cGVydHkgb2YgdGhlIGZpbGVuYW1lcyB0byBkZWNpZGUKKwkJICogd2hpY2gg b25lcyBhcmUgZWFybGllciB0aGFuIHRoZSBsYXN0b2ZmIHNlZ21lbnQuCisJ CSAqLworCQlpZiAoc3RybGVuKHhsZGUtPmRfbmFtZSkgPT0gMjQgJiYKKwkJ CXN0cnNwbih4bGRlLT5kX25hbWUsICIwMTIzNDU2Nzg5QUJDREVGIikgPT0g MjQgJiYKKwkJCXN0cmNtcCh4bGRlLT5kX25hbWUgKyA4LCBwcmltYXJ5X2xh c3RfYXJjaGl2ZWQgKyA4KSA8PSAwKQorCQl7CisJCQlYTG9nQXJjaGl2ZUZv cmNlRG9uZSh4bGRlLT5kX25hbWUpOworCQl9CisJfQorCisJRnJlZURpcih4 bGRpcik7CisKKwkvKgorCSAqIFJlbWVtYmVyIHRoaXMgbG9jYXRpb24gaW4g cGdzdGF0IGFzIHdlbGwuIFRoaXMgbWFrZXMgaXQgdmlzaWJsZSBpbgorCSAq IHBnX3N0YXRfYXJjaGl2ZXIsIGFuZCBhbGxvd3MgdGhlIGxvY2F0aW9uIHRv IGJlIHJlbGF5ZWQgdG8gY2FzY2FkZWQKKwkgKiBzdGFuZGJ5cy4KKwkgKi8K KwlwZ3N0YXRfc2VuZF9hcmNoaXZlcihwcmltYXJ5X2xhc3RfYXJjaGl2ZWQs IGZhbHNlKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMKaW5kZXggNGEyMDU2OS4uYjRkNGE5MCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKQEAgLTU1LDYgKzU1 LDcgQEAKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL3JlcGxub2Rlcy5oIgor I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2Jh c2ViYWNrdXAuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZWNvZGUuaCIK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsLmgiCkBAIC05MSw2ICs5 MiwyMSBAQAogICovCiAjZGVmaW5lIE1BWF9TRU5EX1NJWkUgKFhMT0dfQkxD S1NaICogMTYpCiAKKy8qCisgKiBIb3cgb2Z0ZW4gdG8gcmVwb3J0IHRoZSBs YXN0IGFyY2hpdmVkIFdBTCBmaWxlIHRvIHRoZSBjbGllbnQ/CisgKi8KKyNk ZWZpbmUgCUFSQ0hJVkFMX1JFUE9SVF9JTlRFUlZBTAkxMDAwMAorLyoKKyAq IEFmdGVyIHJlcXVlc3RpbmcgdGhlIHN0YXRzIGNvbGxlY3RvciBmb3IgZnJl c2ggc3RhdHMsIGhvdyBvZnRlbiB0byBwb2xsCisgKiBmb3IgdGhlIHJlc3Vs dD8KKyAqCisgKiBUaGlzIGlzIHNpbWlsYXIgdG8gUEdTVEFUX1JFVFJZX0RF TEFZIGFuZCBQR1NUQVRfSU5RX0lOVEVSVkFMLCBidXQgd2UncmUKKyAqIG11 Y2ggbW9yZSByZWxheGVkIGluIFdBTCBzZW5kZXIsIGFzIHdlJ3JlIG5vdCBp biBhbnkgcnVzaCB0byBnZXQgdGhlIGxhdGVzdAorICogc3RhdHVzIHRvIHRo ZSBjbGllbnQuIFdlIGFsc28ganVzdCB1c2UgYSBzaW5nbGUgdmFsdWUsIGFu ZCBzZW5kIGEgbmV3CisgKiByZXF1ZXN0IGFmdGVyIGVhY2ggcG9sbC4KKyAq LworI2RlZmluZSAJQVJDSElWQUxfUkVRVUVTVF9JTlRFUlZBTAkxMDAwCisK IC8qIEFycmF5IG9mIFdhbFNuZHMgaW4gc2hhcmVkIG1lbW9yeSAqLwogV2Fs U25kQ3RsRGF0YSAqV2FsU25kQ3RsID0gTlVMTDsKIApAQCAtMTUzLDYgKzE2 OSwxOSBAQCBzdGF0aWMgU3RyaW5nSW5mb0RhdGEgdG1wYnVmOwogICovCiBz dGF0aWMgVGltZXN0YW1wVHogbGFzdF9yZXBseV90aW1lc3RhbXAgPSAwOwog CisvKgorICogTGFzdCBmaWxlIGFyY2hpdmVkLiBUaGlzIGlzIHVwZGF0ZWQg ZnJvbSBwZ3N0YXRzLCBsYXN0IHVwZGF0ZSB3YXMgYXQKKyAqIGxhc3RfYXJj aGl2YWxfcmVwb3J0X3RpbWVzdGFtcC4KKyAqLworc3RhdGljIGNoYXIgbGFz dF9hcmNoaXZlZF9maWxlW01BWF9YRk5fQ0hBUlMgKyAxXSA9ICIiOworc3Rh dGljIFRpbWVzdGFtcFR6IGxhc3RfYXJjaGl2YWxfcmVwb3J0X3RpbWVzdGFt cCA9IDA7CisKKy8qCisgKiBIYXZlIHdlIHJlcXVlc3RlZCBmcmVzaCBzdGF0 cyBmcm9tIHRoZSBzdGF0cyBjb2xsZWN0b3I/IEFuZCB3aGVuPworICovCitz dGF0aWMgYm9vbAlhcmNoaXZhbF9zdGF0dXNfcmVxdWVzdGVkID0gZmFsc2U7 CitzdGF0aWMgVGltZXN0YW1wVHogbGFzdF9hcmNoaXZhbF9yZXF1ZXN0X3Rp bWVzdGFtcCA9IDA7CisKIC8qIEhhdmUgd2Ugc2VudCBhIGhlYXJ0YmVhdCBt ZXNzYWdlIGFza2luZyBmb3IgcmVwbHksIHNpbmNlIGxhc3QgcmVwbHk/ICov CiBzdGF0aWMgYm9vbCB3YWl0aW5nX2Zvcl9waW5nX3Jlc3BvbnNlID0gZmFs c2U7CiAKQEAgLTIwOSw2ICsyMzgsOCBAQCBzdGF0aWMgdm9pZCBQcm9jZXNz U3RhbmRieUhTRmVlZGJhY2tNZXNzYWdlKHZvaWQpOwogc3RhdGljIHZvaWQg UHJvY2Vzc1JlcGxpZXNJZkFueSh2b2lkKTsKIHN0YXRpYyB2b2lkIFdhbFNu ZEtlZXBhbGl2ZShib29sIHJlcXVlc3RSZXBseSk7CiBzdGF0aWMgdm9pZCBX YWxTbmRLZWVwYWxpdmVJZk5lY2Vzc2FyeShUaW1lc3RhbXBUeiBub3cpOwor c3RhdGljIHZvaWQgV2FsU25kQXJjaGl2YWxSZXBvcnQodm9pZCk7CitzdGF0 aWMgdm9pZCBXYWxTbmRBcmNoaXZhbFJlcG9ydElmTmVjZXNzYXJ5KFRpbWVz dGFtcFR6IG5vdyk7CiBzdGF0aWMgdm9pZCBXYWxTbmRDaGVja1RpbWVPdXQo VGltZXN0YW1wVHogbm93KTsKIHN0YXRpYyBsb25nIFdhbFNuZENvbXB1dGVT bGVlcHRpbWUoVGltZXN0YW1wVHogbm93KTsKIHN0YXRpYyB2b2lkIFdhbFNu ZFByZXBhcmVXcml0ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhM b2dSZWNQdHIgbHNuLCBUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBsYXN0X3dy aXRlKTsKQEAgLTE2OTMsNDYgKzE3MjQsNzIgQEAgUHJvY2Vzc1N0YW5kYnlI U0ZlZWRiYWNrTWVzc2FnZSh2b2lkKQogCiAvKgogICogQ29tcHV0ZSBob3cg bG9uZyBzZW5kL3JlY2VpdmUgbG9vcHMgc2hvdWxkIHNsZWVwLgotICoKLSAq IElmIHdhbF9zZW5kZXJfdGltZW91dCBpcyBlbmFibGVkIHdlIHdhbnQgdG8g d2FrZSB1cCBpbiB0aW1lIHRvIHNlbmQKLSAqIGtlZXBhbGl2ZXMgYW5kIHRv IGFib3J0IHRoZSBjb25uZWN0aW9uIGlmIHdhbF9zZW5kZXJfdGltZW91dCBo YXMgYmVlbgotICogcmVhY2hlZC4KICAqLwogc3RhdGljIGxvbmcKIFdhbFNu ZENvbXB1dGVTbGVlcHRpbWUoVGltZXN0YW1wVHogbm93KQogewotCWxvbmcJ CXNsZWVwdGltZSA9IDEwMDAwOwkJLyogMTAgcyAqLworCVRpbWVzdGFtcFR6 IHdha2V1cF90aW1lOworCWxvbmcJCXNsZWVwdGltZTsKKwlsb25nCQlzZWNf dG9fdGltZW91dDsKKwlpbnQJCQltaWNyb3NlY190b190aW1lb3V0OworCVRp bWVzdGFtcFR6IHc7CiAKKwkvKgorCSAqIElmIHdlIGhhdmUgbm8gb3RoZXIg cmVhc29uIHRvIHdha2UgdXAsIHdha2UgdXAgZXZlcnkgMTAgc2Vjb25kcywK KwkgKiBqdXN0IGluIGNhc2Ugd2UgbWlzcyBzb21ldGhpbmcuCisJICovCisJ d2FrZXVwX3RpbWUgPSBUaW1lc3RhbXBUelBsdXNNaWxsaXNlY29uZHMobm93 LCAxMDAwMCk7CisKKwkvKgorCSAqIElmIHdhbF9zZW5kZXJfdGltZW91dCBp cyBlbmFibGVkIHdlIHdhbnQgdG8gd2FrZSB1cCBpbiB0aW1lIHRvIHNlbmQK KwkgKiBrZWVwYWxpdmVzIGFuZCB0byBhYm9ydCB0aGUgY29ubmVjdGlvbiBp ZiB3YWxfc2VuZGVyX3RpbWVvdXQgaGFzIGJlZW4KKwkgKiByZWFjaGVkLgor CSAqLwogCWlmICh3YWxfc2VuZGVyX3RpbWVvdXQgPiAwICYmIGxhc3RfcmVw bHlfdGltZXN0YW1wID4gMCkKIAl7Ci0JCVRpbWVzdGFtcFR6IHdha2V1cF90 aW1lOwotCQlsb25nCQlzZWNfdG9fdGltZW91dDsKLQkJaW50CQkJbWljcm9z ZWNfdG9fdGltZW91dDsKLQogCQkvKgogCQkgKiBBdCB0aGUgbGF0ZXN0IHN0 b3Agc2xlZXBpbmcgb25jZSB3YWxfc2VuZGVyX3RpbWVvdXQgaGFzIGJlZW4K IAkJICogcmVhY2hlZC4KLQkJICovCi0JCXdha2V1cF90aW1lID0gVGltZXN0 YW1wVHpQbHVzTWlsbGlzZWNvbmRzKGxhc3RfcmVwbHlfdGltZXN0YW1wLAot CQkJCQkJCQkJCQkJICB3YWxfc2VuZGVyX3RpbWVvdXQpOwotCi0JCS8qCisJ CSAqCiAJCSAqIElmIG5vIHBpbmcgaGFzIGJlZW4gc2VudCB5ZXQsIHdha2V1 cCB3aGVuIGl0J3MgdGltZSB0byBkbyBzby4KIAkJICogV2FsU25kS2VlcGFs aXZlSWZOZWNlc3NhcnkoKSB3YW50cyB0byBzZW5kIGEga2VlcGFsaXZlIG9u Y2UgaGFsZiBvZgogCQkgKiB0aGUgdGltZW91dCBwYXNzZWQgd2l0aG91dCBh IHJlc3BvbnNlLgogCQkgKi8KLQkJaWYgKCF3YWl0aW5nX2Zvcl9waW5nX3Jl c3BvbnNlKQotCQkJd2FrZXVwX3RpbWUgPSBUaW1lc3RhbXBUelBsdXNNaWxs aXNlY29uZHMobGFzdF9yZXBseV90aW1lc3RhbXAsCi0JCQkJCQkJCQkJCQkJ ICB3YWxfc2VuZGVyX3RpbWVvdXQgLyAyKTsKLQotCQkvKiBDb21wdXRlIHJl bGF0aXZlIHRpbWUgdW50aWwgd2FrZXVwLiAqLwotCQlUaW1lc3RhbXBEaWZm ZXJlbmNlKG5vdywgd2FrZXVwX3RpbWUsCi0JCQkJCQkJJnNlY190b190aW1l b3V0LCAmbWljcm9zZWNfdG9fdGltZW91dCk7CisJCWlmICh3YWl0aW5nX2Zv cl9waW5nX3Jlc3BvbnNlKQorCQkJdyA9IFRpbWVzdGFtcFR6UGx1c01pbGxp c2Vjb25kcyhsYXN0X3JlcGx5X3RpbWVzdGFtcCwKKwkJCQkJCQkJCQkJd2Fs X3NlbmRlcl90aW1lb3V0KTsKKwkJZWxzZQorCQkJdyA9IFRpbWVzdGFtcFR6 UGx1c01pbGxpc2Vjb25kcyhsYXN0X3JlcGx5X3RpbWVzdGFtcCwKKwkJCQkJ CQkJCQkJd2FsX3NlbmRlcl90aW1lb3V0IC8gMik7CisJCWlmICh3IDwgd2Fr ZXVwX3RpbWUpCisJCQl3YWtldXBfdGltZSA9IHc7CisJfQogCi0JCXNsZWVw dGltZSA9IHNlY190b190aW1lb3V0ICogMTAwMCArCi0JCQltaWNyb3NlY190 b190aW1lb3V0IC8gMTAwMDsKKwkvKiBJZiBhcmNoaXZpbmcgaXMgZW5hYmxl ZCwgc2VuZCBhIHN0YXR1cyByZXBvcnQgdG8gdGhlIGNsaWVudCAqLworCWlm IChYTG9nQXJjaGl2aW5nQWN0aXZlKCkpCisJeworCQkvKgorCQkgKiBJZiB3 ZSByZXF1ZXN0ZWQgYW4gdXBkYXRlIGZyb20gcGdzdGF0LCBwb2xsIGV2ZXJ5 CisJCSAqIEFSQ0hJVkVfUkVRVUVTVF9JTlRFUlZBTCBmb3IgdGhlIHJlc3Vs dC4gT3RoZXJ3aXNlIHdhaXQgdW50aWwgaXQncworCQkgKiB0aW1lIHRvIHNl bmQgYSBuZXcgcmVwb3J0LgorCQkgKi8KKwkJaWYgKGFyY2hpdmFsX3N0YXR1 c19yZXF1ZXN0ZWQpCisJCQl3ID0gVGltZXN0YW1wVHpQbHVzTWlsbGlzZWNv bmRzKGxhc3RfYXJjaGl2YWxfcmVxdWVzdF90aW1lc3RhbXAsCisJCQkJCQkJ CQkJCUFSQ0hJVkFMX1JFUVVFU1RfSU5URVJWQUwpOworCQllbHNlCisJCQl3 ID0gVGltZXN0YW1wVHpQbHVzTWlsbGlzZWNvbmRzKGxhc3RfYXJjaGl2YWxf cmVwb3J0X3RpbWVzdGFtcCwKKwkJCQkJCQkJCQkJQVJDSElWQUxfUkVQT1JU X0lOVEVSVkFMKTsKKwkJaWYgKHcgPCB3YWtldXBfdGltZSkKKwkJCXdha2V1 cF90aW1lID0gdzsKIAl9CiAKKwkvKiBDb21wdXRlIHJlbGF0aXZlIHRpbWUg dW50aWwgd2FrZXVwLiAqLworCVRpbWVzdGFtcERpZmZlcmVuY2Uobm93LCB3 YWtldXBfdGltZSwKKwkJCQkJCSZzZWNfdG9fdGltZW91dCwgJm1pY3Jvc2Vj X3RvX3RpbWVvdXQpOworCisJc2xlZXB0aW1lID0gc2VjX3RvX3RpbWVvdXQg KiAxMDAwICsKKwkJbWljcm9zZWNfdG9fdGltZW91dCAvIDEwMDA7CisKIAly ZXR1cm4gc2xlZXB0aW1lOwogfQogCkBAIC0yODc5LDYgKzI5MzYsMTEgQEAg V2FsU25kS2VlcGFsaXZlSWZOZWNlc3NhcnkoVGltZXN0YW1wVHogbm93KQog CVRpbWVzdGFtcFR6IHBpbmdfdGltZTsKIAogCS8qCisJICogU2VuZCBhbiBh cmNoaXZhbCBzdGF0dXMgbWVzc2FnZSwgaWYgbmVjZXNzYXJ5LgorCSAqLwor CVdhbFNuZEFyY2hpdmFsUmVwb3J0SWZOZWNlc3Nhcnkobm93KTsKKworCS8q CiAJICogRG9uJ3Qgc2VuZCBrZWVwYWxpdmUgbWVzc2FnZXMgaWYgdGltZW91 dHMgYXJlIGdsb2JhbGx5IGRpc2FibGVkIG9yCiAJICogd2UncmUgZG9pbmcg c29tZXRoaW5nIG5vdCBwYXJ0YWtpbmcgaW4gdGltZW91dHMuCiAJICovCkBA IC0yOTA3LDYgKzI5NjksODQgQEAgV2FsU25kS2VlcGFsaXZlSWZOZWNlc3Nh cnkoVGltZXN0YW1wVHogbm93KQogfQogCiAvKgorICogVGhpcyBmdW5jdGlv biBpcyB1c2VkIHRvIHNlbmQgYXJjaGl2YWwgcmVwb3J0IG1lc3NhZ2UgdG8g c3RhbmRieS4KKyAqLworc3RhdGljIHZvaWQKK1dhbFNuZEFyY2hpdmFsUmVw b3J0KHZvaWQpCit7CisJZWxvZyhMT0csICJzZW5kaW5nIGFyY2hpdmFsIHJl cG9ydDogJXMiLCBsYXN0X2FyY2hpdmVkX2ZpbGUpOworCisJLyogY29uc3Ry dWN0IHRoZSBtZXNzYWdlLi4uICovCisJcmVzZXRTdHJpbmdJbmZvKCZvdXRw dXRfbWVzc2FnZSk7CisJcHFfc2VuZGJ5dGUoJm91dHB1dF9tZXNzYWdlLCAn YScpOworCXBxX3NlbmRieXRlcygmb3V0cHV0X21lc3NhZ2UsIGxhc3RfYXJj aGl2ZWRfZmlsZSwgc3RybGVuKGxhc3RfYXJjaGl2ZWRfZmlsZSkpOworCisJ LyogLi4uIGFuZCBzZW5kIGl0IHdyYXBwZWQgaW4gQ29weURhdGEgKi8KKwlw cV9wdXRtZXNzYWdlX25vYmxvY2soJ2QnLCBvdXRwdXRfbWVzc2FnZS5kYXRh LCBvdXRwdXRfbWVzc2FnZS5sZW4pOworfQorCitzdGF0aWMgdm9pZAorV2Fs U25kQXJjaGl2YWxSZXBvcnRJZk5lY2Vzc2FyeShUaW1lc3RhbXBUeiBub3cp Cit7CisJVGltZXN0YW1wVHogcmVwb3J0X3RpbWU7CisKKwkvKgorCSAqIElm IHdlIGhhZCBhbHJlYWR5IGFza2VkIHBnc3RhdCBmb3IgYW4gdXBkYXRlLCB3 YWl0IHVudGlsIGl0J3MgaGFkCisJICogc29tZSB0aW1lIHRvIHVwZGF0ZSB0 aGUgc3RhdHMgZmlsZSBiZWZvcmUgd2UgcmV0cnkuCisJICovCisJaWYgKGFy Y2hpdmFsX3N0YXR1c19yZXF1ZXN0ZWQpCisJeworCQlUaW1lc3RhbXBUeiBu ZXh0X3JldHJ5OworCisJCW5leHRfcmV0cnkgPQorCQkJVGltZXN0YW1wVHpQ bHVzTWlsbGlzZWNvbmRzKGxhc3RfYXJjaGl2YWxfcmVxdWVzdF90aW1lc3Rh bXAsCisJCQkJCQkJCQkJQVJDSElWQUxfUkVRVUVTVF9JTlRFUlZBTCk7CisJ CWlmIChub3cgPCBuZXh0X3JldHJ5KQorCQkJcmV0dXJuOworCX0KKworCS8q CisJICogSWYgbW9yZSB0aGFuIEFSQ0hJVkFMX1JFUE9SVF9JTlRFUlZBTCBo YXMgZWxhcHNlZCBzaW5jZSB3ZSBnb3QgdGhlCisJICogYXJjaGl2YWwgc3Rh dHVzIGZyb20gcGdzdGF0LCBwb2xsLgorCSAqLworCXJlcG9ydF90aW1lID0g VGltZXN0YW1wVHpQbHVzTWlsbGlzZWNvbmRzKGxhc3RfYXJjaGl2YWxfcmVw b3J0X3RpbWVzdGFtcCwKKwkJCQkJCQkJCQkJICBBUkNISVZBTF9SRVBPUlRf SU5URVJWQUwpOworCWlmIChub3cgPj0gcmVwb3J0X3RpbWUpCisJeworCQlQ Z1N0YXRfQXJjaGl2ZXJTdGF0cyAqYXJjaGl2ZXJfc3RhdHM7CisJCVBnU3Rh dF9HbG9iYWxTdGF0cyAqZ2xvYmFsX3N0YXRzOworCQlUaW1lc3RhbXBUeiBt aW5fdHM7CisKKwkJcGdzdGF0X3VzZV9zdGFsZV9zbmFwc2hvdCgpOworCQlh cmNoaXZlcl9zdGF0cyA9IHBnc3RhdF9mZXRjaF9zdGF0X2FyY2hpdmVyKCk7 CisJCWdsb2JhbF9zdGF0cyA9IHBnc3RhdF9mZXRjaF9nbG9iYWwoKTsKKwor CQlsYXN0X2FyY2hpdmFsX3JlcG9ydF90aW1lc3RhbXAgPSBnbG9iYWxfc3Rh dHMtPnN0YXRzX3RpbWVzdGFtcDsKKworCQlpZiAoc3RyY21wKGxhc3RfYXJj aGl2ZWRfZmlsZSwgYXJjaGl2ZXJfc3RhdHMtPmxhc3RfYXJjaGl2ZWRfd2Fs KSAhPSAwKQorCQl7CisJCQlzdHJsY3B5KGxhc3RfYXJjaGl2ZWRfZmlsZSwg YXJjaGl2ZXJfc3RhdHMtPmxhc3RfYXJjaGl2ZWRfd2FsLAorCQkJCQlzaXpl b2YobGFzdF9hcmNoaXZlZF9maWxlKSk7CisJCQlXYWxTbmRBcmNoaXZhbFJl cG9ydCgpOworCQl9CisKKwkJLyogSWYgdGhpcyB3YXNuJ3QgZnJlc2ggZW5v dWdoLCByZXF1ZXN0IGFuIHVwZGF0ZSAqLworCQltaW5fdHMgPSBUaW1lc3Rh bXBUelBsdXNNaWxsaXNlY29uZHMobm93LCAtQVJDSElWQUxfUkVQT1JUX0lO VEVSVkFMKTsKKwkJaWYgKGxhc3RfYXJjaGl2YWxfcmVwb3J0X3RpbWVzdGFt cCA+IG1pbl90cykKKwkJCWFyY2hpdmFsX3N0YXR1c19yZXF1ZXN0ZWQgPSBm YWxzZTsKKwkJZWxzZQorCQl7CisJCQkvKiBOb3QgZnJlc2ggZW5vdWdoLiBS ZXF1ZXN0IGFuIHVwZGF0ZSAqLworCQkJcGdzdGF0X3JlcXVlc3RfdXBkYXRl KG5vdywgbWluX3RzKTsKKwkJCWxhc3RfYXJjaGl2YWxfcmVxdWVzdF90aW1l c3RhbXAgPSBub3c7CisJCQlhcmNoaXZhbF9zdGF0dXNfcmVxdWVzdGVkID0g dHJ1ZTsKKwkJfQorCisJCXBnc3RhdF9jbGVhcl9zbmFwc2hvdCgpOworCX0K K30KKworLyoKICAqIFRoaXMgaXNuJ3QgY3VycmVudGx5IHVzZWQgZm9yIGFu eXRoaW5nLiBNb25pdG9yaW5nIHRvb2xzIG1pZ2h0IGJlCiAgKiBpbnRlcmVz dGVkIGluIHRoZSBmdXR1cmUsIGFuZCB3ZSdsbCBuZWVkIHNvbWV0aGluZyBs aWtlIHRoaXMgaW4gdGhlCiAgKiBmdXR1cmUgZm9yIHN5bmNocm9ub3VzIHJl cGxpY2F0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXgg NWY3MWRlZC4uOTdhY2E0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1 Yy5jCkBAIC0zOTYsNiArMzk2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBj b25maWdfZW51bV9lbnRyeSByb3dfc2VjdXJpdHlfb3B0aW9uc1tdID0gewog ICogT3B0aW9ucyBmb3IgZW51bSB2YWx1ZXMgc3RvcmVkIGluIG90aGVyIG1v ZHVsZXMKICAqLwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBjb25maWdfZW51bV9l bnRyeSB3YWxfbGV2ZWxfb3B0aW9uc1tdOworZXh0ZXJuIGNvbnN0IHN0cnVj dCBjb25maWdfZW51bV9lbnRyeSBhcmNoaXZlX21vZGVfb3B0aW9uc1tdOwog ZXh0ZXJuIGNvbnN0IHN0cnVjdCBjb25maWdfZW51bV9lbnRyeSBzeW5jX21l dGhvZF9vcHRpb25zW107CiBleHRlcm4gY29uc3Qgc3RydWN0IGNvbmZpZ19l bnVtX2VudHJ5IGR5bmFtaWNfc2hhcmVkX21lbW9yeV9vcHRpb25zW107CiAK QEAgLTE1MzAsMTYgKzE1MzEsNiBAQCBzdGF0aWMgc3RydWN0IGNvbmZpZ19i b29sIENvbmZpZ3VyZU5hbWVzQm9vbFtdID0KIAl9LAogCiAJewotCQl7ImFy Y2hpdmVfbW9kZSIsIFBHQ19QT1NUTUFTVEVSLCBXQUxfQVJDSElWSU5HLAot CQkJZ2V0dGV4dF9ub29wKCJBbGxvd3MgYXJjaGl2aW5nIG9mIFdBTCBmaWxl cyB1c2luZyBhcmNoaXZlX2NvbW1hbmQuIiksCi0JCQlOVUxMCi0JCX0sCi0J CSZYTG9nQXJjaGl2ZU1vZGUsCi0JCWZhbHNlLAotCQlOVUxMLCBOVUxMLCBO VUxMCi0JfSwKLQotCXsKIAkJeyJob3Rfc3RhbmRieSIsIFBHQ19QT1NUTUFT VEVSLCBSRVBMSUNBVElPTl9TVEFOREJZLAogCQkJZ2V0dGV4dF9ub29wKCJB bGxvd3MgY29ubmVjdGlvbnMgYW5kIHF1ZXJpZXMgZHVyaW5nIHJlY292ZXJ5 LiIpLAogCQkJTlVMTApAQCAtMzU1Miw2ICszNTQzLDE2IEBAIHN0YXRpYyBz dHJ1Y3QgY29uZmlnX2VudW0gQ29uZmlndXJlTmFtZXNFbnVtW10gPQogCX0s CiAKIAl7CisJCXsiYXJjaGl2ZV9tb2RlIiwgUEdDX1BPU1RNQVNURVIsIFdB TF9BUkNISVZJTkcsCisJCQlnZXR0ZXh0X25vb3AoIkFsbG93cyBhcmNoaXZp bmcgb2YgV0FMIGZpbGVzIHVzaW5nIGFyY2hpdmVfY29tbWFuZC4iKSwKKwkJ CU5VTEwKKwkJfSwKKwkJJlhMb2dBcmNoaXZlTW9kZSwKKwkJQVJDSElWRV9N T0RFX09GRiwgYXJjaGl2ZV9tb2RlX29wdGlvbnMsCisJCU5VTEwsIE5VTEws IE5VTEwKKwl9LAorCisJewogCQl7InRyYWNlX3JlY292ZXJ5X21lc3NhZ2Vz IiwgUEdDX1NJR0hVUCwgREVWRUxPUEVSX09QVElPTlMsCiAJCQlnZXR0ZXh0 X25vb3AoIkVuYWJsZXMgbG9nZ2luZyBvZiByZWNvdmVyeS1yZWxhdGVkIGRl YnVnZ2luZyBpbmZvcm1hdGlvbi4iKSwKIAkJCWdldHRleHRfbm9vcCgiRWFj aCBsZXZlbCBpbmNsdWRlcyBhbGwgdGhlIGxldmVscyB0aGF0IGZvbGxvdyBp dC4gVGhlIGxhdGVyIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDExMDk4M2Yu LjkwMzcxZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv cG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTIwNiw3ICsyMDYs NyBAQAogCiAjIC0gQXJjaGl2aW5nIC0KIAotI2FyY2hpdmVfbW9kZSA9IG9m ZgkJIyBhbGxvd3MgYXJjaGl2aW5nIHRvIGJlIGRvbmUKKyNhcmNoaXZlX21v ZGUgPSBvZmYJCSMgYWxsb3dzIGFyY2hpdmluZyB0byBiZSBkb25lOyBvZmYs IG9uLCBzaGFyZWQsIG9yIGFsd2F5cwogCQkJCSMgKGNoYW5nZSByZXF1aXJl cyByZXN0YXJ0KQogI2FyY2hpdmVfY29tbWFuZCA9ICcnCQkjIGNvbW1hbmQg dG8gdXNlIHRvIGFyY2hpdmUgYSBsb2dmaWxlIHNlZ21lbnQKIAkJCQkjIHBs YWNlaG9sZGVyczogJXAgPSBwYXRoIG9mIGZpbGUgdG8gYXJjaGl2ZQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy94bG9nLmgKaW5kZXggZjA4YjY3Ni4uODU1NmJiOCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MveGxvZy5oCkBAIC05Niw3ICs5Niw2IEBAIGV4dGVy biBpbnQJd2FsX2tlZXBfc2VnbWVudHM7CiBleHRlcm4gaW50CVhMT0didWZm ZXJzOwogZXh0ZXJuIGludAlYTG9nQXJjaGl2ZVRpbWVvdXQ7CiBleHRlcm4g aW50CXdhbF9yZXRyaWV2ZV9yZXRyeV9pbnRlcnZhbDsKLWV4dGVybiBib29s IFhMb2dBcmNoaXZlTW9kZTsKIGV4dGVybiBjaGFyICpYTG9nQXJjaGl2ZUNv bW1hbmQ7CiBleHRlcm4gYm9vbCBFbmFibGVIb3RTdGFuZGJ5OwogZXh0ZXJu IGJvb2wgZnVsbFBhZ2VXcml0ZXM7CkBAIC0xMDYsNiArMTA1LDE2IEBAIGV4 dGVybiBib29sIGxvZ19jaGVja3BvaW50czsKIAogZXh0ZXJuIGludAlDaGVj a1BvaW50U2VnbWVudHM7CiAKKy8qIEFyY2hpdmUgbW9kZXMgKi8KK3R5cGVk ZWYgZW51bSBBcmNoaXZlTW9kZQoreworCUFSQ0hJVkVfTU9ERV9PRkYgPSAw LAkvKiBkaXNhYmxlZCAqLworCUFSQ0hJVkVfTU9ERV9PTiwJCS8qIGVuYWJs ZWQgd2hpbGUgc2VydmVyIGlzIHJ1bm5pbmcgbm9ybWFsbHkgKi8KKwlBUkNI SVZFX01PREVfU0hBUkVELAkvKiBhcmNoaXZlIGlzIHNoYXJlZCB3aXRoIG1h c3RlciAqLworCUFSQ0hJVkVfTU9ERV9BTFdBWVMJCS8qIGVuYWJsZWQgYWx3 YXlzIChldmVuIGR1cmluZyByZWNvdmVyeSkgKi8KK30gQXJjaGl2ZU1vZGU7 CitleHRlcm4gaW50CVhMb2dBcmNoaXZlTW9kZTsKKwogLyogV0FMIGxldmVs cyAqLwogdHlwZWRlZiBlbnVtIFdhbExldmVsCiB7CkBAIC0xMTYsNyArMTI1 LDggQEAgdHlwZWRlZiBlbnVtIFdhbExldmVsCiB9IFdhbExldmVsOwogZXh0 ZXJuIGludAl3YWxfbGV2ZWw7CiAKLSNkZWZpbmUgWExvZ0FyY2hpdmluZ0Fj dGl2ZSgpCShYTG9nQXJjaGl2ZU1vZGUgJiYgd2FsX2xldmVsID49IFdBTF9M RVZFTF9BUkNISVZFKQorI2RlZmluZSBYTG9nQXJjaGl2aW5nQWN0aXZlKCkg XAorCShYTG9nQXJjaGl2ZU1vZGUgPiBBUkNISVZFX01PREVfT0ZGICYmIHdh bF9sZXZlbCA+PSBXQUxfTEVWRUxfQVJDSElWRSkKICNkZWZpbmUgWExvZ0Fy Y2hpdmVDb21tYW5kU2V0KCkgKFhMb2dBcmNoaXZlQ29tbWFuZFswXSAhPSAn XDAnKQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGdzdGF0Lmgg Yi9zcmMvaW5jbHVkZS9wZ3N0YXQuaAppbmRleCBlM2ZlMDZlLi5iOTVhNzAx IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMv aW5jbHVkZS9wZ3N0YXQuaApAQCAtOTEwLDYgKzkxMCw4IEBAIGV4dGVybiB2 b2lkIHBnc3RhdF9yZXBvcnRfc3RhdChib29sIGZvcmNlKTsKIGV4dGVybiB2 b2lkIHBnc3RhdF92YWN1dW1fc3RhdCh2b2lkKTsKIGV4dGVybiB2b2lkIHBn c3RhdF9kcm9wX2RhdGFiYXNlKE9pZCBkYXRhYmFzZWlkKTsKIAorZXh0ZXJu IHZvaWQgcGdzdGF0X3JlcXVlc3RfdXBkYXRlKFRpbWVzdGFtcFR6IGN1cl90 cywgVGltZXN0YW1wVHogbWluX3RzKTsKK2V4dGVybiB2b2lkIHBnc3RhdF91 c2Vfc3RhbGVfc25hcHNob3Qodm9pZCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRf Y2xlYXJfc25hcHNob3Qodm9pZCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVz ZXRfY291bnRlcnModm9pZCk7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVzZXRf c2hhcmVkX2NvdW50ZXJzKGNvbnN0IGNoYXIgKik7Ci0tIAoyLjEuNAoK --------------050409040008090709090007 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------050409040008090709090007--