Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp151125rwe; Fri, 26 Aug 2022 02:29:57 -0700 (PDT) X-Google-Smtp-Source: AA6agR5V6mQIPQc+ey+3VdvNP7McysHsKhnKc4l4+1ZF4DLmOS6XwYKjctctv40AyN6MLZsKs4vY X-Received: by 2002:a17:907:1c06:b0:73d:ba76:9e63 with SMTP id nc6-20020a1709071c0600b0073dba769e63mr4945567ejc.384.1661506197350; Fri, 26 Aug 2022 02:29:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661506197; cv=none; d=google.com; s=arc-20160816; b=Y3PlIbfKx5Bx/FYfMIL7uHuuUiCGde9OwwQyXLUIGbyd5Nw2/PLl37akd8Xw0CXpOR u16wVqd0LKiV1ry8qoZf1oEfYRIGHAizqjcVpvaiUwN0mLAViSN2v9So4NpxbeDjrVKx qDfgFK6XSR1vlA9UDYPiS9tF+7JEgRcaJiXa0nT9zIklrxFR9JmlNl+fxFteV++0TvO6 wMES4LmEyf0dlBA2GDA5HLpQESfXK/k8M+hj752yS2Lf5flhMUBkfvR9O3nWFTqYUgE9 Qv1dPhOO9hZ/DZaXxAqb5bBF/kojbZQNmdMho1Sy9niZt6gGlgh/rXYRg7/RE3m5K2E3 XQ9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:date:to:from:subject:message-id; bh=8+7VP2cOUzHXzWNbunC058o/r3mu2f0x8YPMw/fWTgk=; b=gBWzrXix7oub0FIBcdoLj7wk9I4QfC5EGkcBLFvBNZg9gsDdyXFoXyGIyBVeColpHH momN8dMifM1Ez23iekQpzJB63lvShgPv7StiiXW3AhoohNR6Xtq7m1u8JqipmvVCfHxO mA2annQnKWVVt2qU6Fq1Cvb6BRn2LXUZA5436Tvsrfwiqv3/x8wzUr3GFNH/uVTul3lL ijt6JmGlxYbYNbCwJGmNvgJh26a/YzrV4XIPZqIMWdjMavyhCh/Z5YCT4zmAOXCcnJp5 kiQVWQ7faxW7jIgpbB+/gP+3Tz/tP3RYeWk6n4f7yvKrAaxLGe1VW0gg40PsTApQBoUk 65HA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l8-20020a056402254800b0043a9bb390d3si1311063edb.278.2022.08.26.02.29.30; Fri, 26 Aug 2022 02:29:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343668AbiHZJ2Q (ORCPT + 99 others); Fri, 26 Aug 2022 05:28:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34876 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343698AbiHZJ2D (ORCPT ); Fri, 26 Aug 2022 05:28:03 -0400 X-Greylist: delayed 87 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Fri, 26 Aug 2022 02:27:54 PDT Received: from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::224]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 34F9DD1240 for ; Fri, 26 Aug 2022 02:27:52 -0700 (PDT) Received: (Authenticated sender: hadess@hadess.net) by mail.gandi.net (Postfix) with ESMTPSA id 5090DE0006; Fri, 26 Aug 2022 09:27:50 +0000 (UTC) Message-ID: <0b75a14f14c0bdffd1d08f720438a4caf15c4c09.camel@hadess.net> Subject: [PATCH v2] adapter: Implement PowerState property From: Bastien Nocera To: Luiz Augusto von Dentz , "linux-bluetooth@vger.kernel.org" Date: Fri, 26 Aug 2022 11:27:50 +0200 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.44.4 (3.44.4-1.fc36) MIME-Version: 1.0 X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org VGhpcyBwcm9wZXJ0eSBzaG91bGQgYWxsb3cgYW55IHByb2dyYW0gdG8gc2hvdyB3aGV0aGVyIGFu IGFkYXB0ZXIgaXMgaW4KdGhlIHByb2Nlc3Mgb2YgYmVpbmcgdHVybmVkIG9uLgoKQXMgdHVybmlu ZyBvbiBhbiBhZGFwdGVyIGlzbid0IGluc3RhbnRhbmVvdXMsIGl0J3MgaW1wb3J0YW50IHRoYXQg dGhlIFVJCnJlZmxlY3RzIHRoZSB0cmFuc2l0aW9uYWwgc3RhdGUgb2YgdGhlIGFkYXB0ZXIncyBw b3dlciwgYW5kIGRvZXNuJ3QKYXNzdW1lIHRoZSBkZXZpY2UgaXMgYWxyZWFkeSB0dXJuZWQgb24g YnV0IG5vdCB5ZXQgd29ya2luZywgb3Igc3RpbGwgb2ZmCmRlc3BpdGUgaGF2aW5nIHJlcXVlc3Rl ZCBmb3IgaXQgdG8gYmUgdHVybmVkIG9uLCBpbiBib3RoIGNhc2VzIG1ha2luZwp0aGUgVUkgZmVl bCB1bnJlc3BvbnNpdmUuCgpUaGlzIGNhbiBhbHNvIG5vdCBiZSBpbXBsZW1lbnRlZCBpbiBmcm9u dC1lbmRzIGRpcmVjdGx5IGFzLCB0aGVuLAp0aGUgc3RhdHVzIG9mIGFuIGFkYXB0ZXIgd291bGRu J3QgYmUgcmVmbGVjdGVkIGNvcnJlY3RseSBpbiB0aGUgU2V0dGluZ3MKd2luZG93IGlmIGl0J3Mg dHVybmVkIG9uIGluIHRoZSBzeXN0ZW0gbWVudS4gSW1wbGVtZW50aW5nIGl0IGluIHRoZQpmcm9u dC1lbmRzIHdvdWxkIGFsc28gcHJlY2x1ZGUgZnJvbSBoYXZpbmcgZmVlZGJhY2sgYWJvdXQgdGhl IHN0YXRlIG9mCnRoZSBhZGFwdGVyIHdoZW4gYmx1ZXRvb3RoZCBpcyB0aGUgb25lIHBvd2VyaW5n IHVwIHRoZSBhZGFwdGVyIGFmdGVyIHRoZQpyZmtpbGwgd2FzIHVuYmxvY2tlZC4KClNlZSBodHRw czovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtYmx1ZXRvb3RoLy0vaXNzdWVzLzEyMQph bmQgdGhlIG9yaWdpbmFsIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nbm9tZS1zaGVs bC8tL2lzc3Vlcy81NzczCi0tLQrCoGNsaWVudC9tYWluLmPCoMKgwqDCoMKgwqAgfMKgIDEgKwrC oGRvYy9hZGFwdGVyLWFwaS50eHQgfCAxNCArKysrKysrKwrCoHNyYy9hZGFwdGVyLmPCoMKgwqDC oMKgwqAgfCA4NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0K wqAzIGZpbGVzIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9jbGllbnQvbWFpbi5jIGIvY2xpZW50L21haW4uYwppbmRleCAxOTEzOWQxNWIuLmRk ZDk3YzIzYyAxMDA2NDQKLS0tIGEvY2xpZW50L21haW4uYworKysgYi9jbGllbnQvbWFpbi5jCkBA IC05ODEsNiArOTgxLDcgQEAgc3RhdGljIHZvaWQgY21kX3Nob3coaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKwqDCoMKgwqDCoMKgwqDCoHByaW50X3Byb3BlcnR5KGFkYXB0ZXItPnByb3h5LCAiQWxp YXMiKTsKwqDCoMKgwqDCoMKgwqDCoHByaW50X3Byb3BlcnR5KGFkYXB0ZXItPnByb3h5LCAiQ2xh c3MiKTsKwqDCoMKgwqDCoMKgwqDCoHByaW50X3Byb3BlcnR5KGFkYXB0ZXItPnByb3h5LCAiUG93 ZXJlZCIpOworwqDCoMKgwqDCoMKgwqBwcmludF9wcm9wZXJ0eShhZGFwdGVyLT5wcm94eSwgIlBv d2VyU3RhdGUiKTsKwqDCoMKgwqDCoMKgwqDCoHByaW50X3Byb3BlcnR5KGFkYXB0ZXItPnByb3h5 LCAiRGlzY292ZXJhYmxlIik7CsKgwqDCoMKgwqDCoMKgwqBwcmludF9wcm9wZXJ0eShhZGFwdGVy LT5wcm94eSwgIkRpc2NvdmVyYWJsZVRpbWVvdXQiKTsKwqDCoMKgwqDCoMKgwqDCoHByaW50X3By b3BlcnR5KGFkYXB0ZXItPnByb3h5LCAiUGFpcmFibGUiKTsKZGlmZiAtLWdpdCBhL2RvYy9hZGFw dGVyLWFwaS50eHQgYi9kb2MvYWRhcHRlci1hcGkudHh0CmluZGV4IDQ4NDY2YWI3NS4uNWJkYjlj MzRlIDEwMDY0NAotLS0gYS9kb2MvYWRhcHRlci1hcGkudHh0CisrKyBiL2RvYy9hZGFwdGVyLWFw aS50eHQKQEAgLTI2OSw2ICsyNjksMjAgQEAgUHJvcGVydGllc8Kgc3RyaW5nIEFkZHJlc3MgW3Jl YWRvbmx5XQrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBy ZXN0YXJ0IG9yIHVucGx1Z2dpbmcgb2YgdGhlIGFkYXB0ZXIgaXQgd2lsbCByZXNldArCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBiYWNrIHRvIGZhbHNlLgrC oAorwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RyaW5nIFBvd2VyU3RhdGUgW3JlYWRv bmx5XQorCivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgVGhl IHBvd2VyIHN0YXRlIG9mIGFuIGFkYXB0ZXIuCisKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBUaGUgcG93ZXIgc3RhdGUgd2lsbCBzaG93IHdoZXRoZXIgdGhl IGFkYXB0ZXIgaXMKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB0dXJuaW5nIG9mZiwgb3IgdHVybmluZyBvbiwgYXMgd2VsbCBhcyBiZWluZyBvbgorwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9yIG9mZi4KKworwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFBvc3NpYmxlIHZhbHVlczoK K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIm9uIiAtIHBvd2VyZWQgb24KK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIm9mZiIgLSBwb3dlcmVkIG9mZgorwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAi dHVybmluZy1vbiIgLSB0cmFuc2l0aW9uaW5nIGZyb20gIm9mZiIgdG8gIm9uIgorwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAidHVy bmluZy1vZmYiIC0gdHJhbnNpdGlvbmluZyBmcm9tICJvbiIgdG8gIm9mZiIKKwrCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJvb2xlYW4gRGlzY292ZXJhYmxlIFtyZWFkd3JpdGVdCsKg CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoFN3aXRjaCBh biBhZGFwdGVyIHRvIGRpc2NvdmVyYWJsZSBvciBub24tZGlzY292ZXJhYmxlCmRpZmYgLS1naXQg YS9zcmMvYWRhcHRlci5jIGIvc3JjL2FkYXB0ZXIuYwppbmRleCBiNDUzZTg2YTAuLjBjZmFjNjBj NiAxMDA2NDQKLS0tIGEvc3JjL2FkYXB0ZXIuYworKysgYi9zcmMvYWRhcHRlci5jCkBAIC0yMzks NiArMjM5LDEyIEBAIHN0cnVjdCBidGRfYWRhcHRlcl9waW5fY2JfaXRlciB7CsKgwqDCoMKgwqDC oMKgwqAvKiBXaGVuIHRoZSBpdGVyYXRvciByZWFjaGVzIHRoZSBlbmQsIGl0IGlzIE5VTEwgYW5k IGF0dGVtcHQgaXMgMCAqLwrCoH07CsKgCitlbnVtIHsKK8KgwqDCoMKgwqDCoMKgQURBUFRFUl9Q T1dFUl9TVEFURV9UQVJHRVRfTk9ORSA9IDAsCivCoMKgwqDCoMKgwqDCoEFEQVBURVJfUE9XRVJf U1RBVEVfVEFSR0VUX09GRiwKK8KgwqDCoMKgwqDCoMKgQURBUFRFUl9QT1dFUl9TVEFURV9UQVJH RVRfT04KK307CisKwqBzdHJ1Y3QgYnRkX2FkYXB0ZXIgewrCoMKgwqDCoMKgwqDCoMKgaW50IHJl Zl9jb3VudDsKwqAKQEAgLTI1Miw2ICsyNTgsNyBAQCBzdHJ1Y3QgYnRkX2FkYXB0ZXIgewrCoMKg wqDCoMKgwqDCoMKgY2hhciAqc2hvcnRfbmFtZTvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAvKiBjb250cm9sbGVyIHNob3J0IG5hbWUgKi8KwqDCoMKgwqDCoMKgwqDCoHVpbnQzMl90IHN1 cHBvcnRlZF9zZXR0aW5nczvCoMKgwqDCoC8qIGNvbnRyb2xsZXIgc3VwcG9ydGVkIHNldHRpbmdz ICovCsKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBwZW5kaW5nX3NldHRpbmdzO8KgwqDCoMKgwqDC oC8qIHBlbmRpbmcgY29udHJvbGxlciBzZXR0aW5ncyAqLworwqDCoMKgwqDCoMKgwqB1aW50MzJf dCBwb3dlcl9zdGF0ZV90YXJnZXQ7wqDCoMKgwqAvKiB0aGUgdGFyZ2V0IHBvd2VyIHN0YXRlICov CsKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBjdXJyZW50X3NldHRpbmdzO8KgwqDCoMKgwqDCoC8q IGN1cnJlbnQgY29udHJvbGxlciBzZXR0aW5ncyAqLwrCoArCoMKgwqDCoMKgwqDCoMKgY2hhciAq cGF0aDvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBhZGFwdGVy IG9iamVjdCBwYXRoICovCkBAIC01NzksNiArNTg2LDggQEAgc3RhdGljIHZvaWQgc2V0dGluZ3Nf Y2hhbmdlZChzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIsIHVpbnQzMl90IHNldHRpbmdzKQrC oMKgwqDCoMKgwqDCoMKgaWYgKGNoYW5nZWRfbWFzayAmIE1HTVRfU0VUVElOR19QT1dFUkVEKSB7 CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnX2RidXNfZW1pdF9wcm9wZXJ0eV9jaGFu Z2VkKGRidXNfY29ubiwgYWRhcHRlci0+cGF0aCwKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBBREFQ VEVSX0lOVEVSRkFDRSwgIlBvd2VyZWQiKTsKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Z19kYnVzX2VtaXRfcHJvcGVydHlfY2hhbmdlZChkYnVzX2Nvbm4sIGFkYXB0ZXItPnBhdGgsCivC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBBREFQVEVSX0lOVEVSRkFDRSwgIlBvd2VyU3RhdGUiKTsKwqAK wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoYWRhcHRlci0+Y3VycmVudF9zZXR0 aW5ncyAmIE1HTVRfU0VUVElOR19QT1dFUkVEKSB7CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFkYXB0ZXJfc3RhcnQoYWRhcHRlcik7CkBAIC02MTgsNiAr NjI3LDE2IEBAIHN0YXRpYyB2b2lkIHNldHRpbmdzX2NoYW5nZWQoc3RydWN0IGJ0ZF9hZGFwdGVy ICphZGFwdGVyLCB1aW50MzJfdCBzZXR0aW5ncykKwqDCoMKgwqDCoMKgwqDCoH0KwqB9CsKgCitz dGF0aWMgdm9pZCByZXNldF9wb3dlcl9zdGF0ZV90YXJnZXQoc3RydWN0IGJ0ZF9hZGFwdGVyICph ZGFwdGVyLCB1aW50OF90IHZhbHVlKQoreworwqDCoMKgwqDCoMKgwqBpZiAoKHZhbHVlICYmCivC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFkYXB0ZXItPnBvd2VyX3N0YXRlX3RhcmdldCA9PSBBREFQ VEVSX1BPV0VSX1NUQVRFX1RBUkdFVF9PTikgfHwKK8KgwqDCoMKgwqDCoMKgwqDCoMKgICghdmFs dWUgJiYKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYWRhcHRlci0+cG93ZXJfc3RhdGVfdGFyZ2V0 ID09IEFEQVBURVJfUE9XRVJfU1RBVEVfVEFSR0VUX09GRikpIHsKK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGFkYXB0ZXItPnBvd2VyX3N0YXRlX3RhcmdldCA9IEFEQVBURVJfUE9XRVJf U1RBVEVfVEFSR0VUX05PTkU7CivCoMKgwqDCoMKgwqDCoH0KK30KKwrCoHN0YXRpYyB2b2lkIG5l d19zZXR0aW5nc19jYWxsYmFjayh1aW50MTZfdCBpbmRleCwgdWludDE2X3QgbGVuZ3RoLArCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNvbnN0IHZvaWQgKnBhcmFtLCB2b2lkICp1c2VyX2RhdGEpCsKg ewpAQCAtNjM1LDYgKzY1NCw5IEBAIHN0YXRpYyB2b2lkIG5ld19zZXR0aW5nc19jYWxsYmFjayh1 aW50MTZfdCBpbmRleCwgdWludDE2X3QgbGVuZ3RoLArCoMKgwqDCoMKgwqDCoMKgaWYgKHNldHRp bmdzID09IGFkYXB0ZXItPmN1cnJlbnRfc2V0dGluZ3MpCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuOwrCoAorwqDCoMKgwqDCoMKgwqBpZiAoKGFkYXB0ZXItPmN1cnJlbnRf c2V0dGluZ3MgXiBzZXR0aW5ncykgJiBNR01UX1NFVFRJTkdfUE9XRVJFRCkKK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJlc2V0X3Bvd2VyX3N0YXRlX3RhcmdldChhZGFwdGVyLCBzZXR0 aW5ncyAmIE1HTVRfU0VUVElOR19QT1dFUkVEID8gMHgwMSA6IDB4MDApOworCsKgwqDCoMKgwqDC oMKgwqBEQkcoIlNldHRpbmdzOiAweCUwOHgiLCBzZXR0aW5ncyk7CsKgCsKgwqDCoMKgwqDCoMKg wqBzZXR0aW5nc19jaGFuZ2VkKGFkYXB0ZXIsIHNldHRpbmdzKTsKQEAgLTY0Myw2ICs2NjUsNyBA QCBzdGF0aWMgdm9pZCBuZXdfc2V0dGluZ3NfY2FsbGJhY2sodWludDE2X3QgaW5kZXgsIHVpbnQx Nl90IGxlbmd0aCwKwqBzdHJ1Y3Qgc2V0X21vZGVfZGF0YSB7CsKgwqDCoMKgwqDCoMKgwqBzdHJ1 Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXI7CsKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBzZXR0aW5n OworwqDCoMKgwqDCoMKgwqB1aW50OF90IHZhbHVlOwrCoH07CsKgCsKgc3RhdGljIHZvaWQgc2V0 X21vZGVfY29tcGxldGUodWludDhfdCBzdGF0dXMsIHVpbnQxNl90IGxlbmd0aCwKQEAgLTY1NSw2 ICs2NzgsOCBAQCBzdGF0aWMgdm9pZCBzZXRfbW9kZV9jb21wbGV0ZSh1aW50OF90IHN0YXR1cywg dWludDE2X3QgbGVuZ3RoLArCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJ0ZF9lcnJv cihhZGFwdGVyLT5kZXZfaWQsICJGYWlsZWQgdG8gc2V0IG1vZGU6ICVzICgweCUwMngpIiwKwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbWdtdF9lcnJzdHIoc3RhdHVzKSwg c3RhdHVzKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhZGFwdGVyLT5wZW5kaW5n X3NldHRpbmdzICY9IH5kYXRhLT5zZXR0aW5nOworwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKGRhdGEtPnNldHRpbmcgJiBNR01UX1NFVFRJTkdfUE9XRVJFRCkKK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXNldF9wb3dlcl9zdGF0ZV90YXJn ZXQoYWRhcHRlciwgZGF0YS0+dmFsdWUpOwrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJldHVybjsKwqDCoMKgwqDCoMKgwqDCoH0KwqAKQEAgLTY5Miw2ICs3MTcsMTEgQEAgc3RhdGlj IGJvb2wgc2V0X21vZGUoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLCB1aW50MTZfdCBvcGNv ZGUsCsKgwqDCoMKgwqDCoMKgwqBzd2l0Y2ggKG9wY29kZSkgewrCoMKgwqDCoMKgwqDCoMKgY2Fz ZSBNR01UX09QX1NFVF9QT1dFUkVEOgrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNl dHRpbmcgPSBNR01UX1NFVFRJTkdfUE9XRVJFRDsKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGFkYXB0ZXItPnBvd2VyX3N0YXRlX3RhcmdldCA9IG1vZGUgPworwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEFEQVBURVJfUE9XRVJfU1RBVEVfVEFSR0VU X09OIDoKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBBREFQ VEVSX1BPV0VSX1NUQVRFX1RBUkdFVF9PRkY7CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBnX2RidXNfZW1pdF9wcm9wZXJ0eV9jaGFuZ2VkKGRidXNfY29ubiwgYWRhcHRlci0+cGF0aCwK K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBBREFQVEVSX0lOVEVSRkFDRSwg IlBvd2VyU3RhdGUiKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKwqDC oMKgwqDCoMKgwqDCoGNhc2UgTUdNVF9PUF9TRVRfQ09OTkVDVEFCTEU6CsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgc2V0dGluZyA9IE1HTVRfU0VUVElOR19DT05ORUNUQUJMRTsKQEAg LTcxMiw2ICs3NDIsNyBAQCBzdGF0aWMgYm9vbCBzZXRfbW9kZShzdHJ1Y3QgYnRkX2FkYXB0ZXIg KmFkYXB0ZXIsIHVpbnQxNl90IG9wY29kZSwKwqDCoMKgwqDCoMKgwqDCoGRhdGEgPSBnX25ldzAo c3RydWN0IHNldF9tb2RlX2RhdGEsIDEpOwrCoMKgwqDCoMKgwqDCoMKgZGF0YS0+YWRhcHRlciA9 IGFkYXB0ZXI7CsKgwqDCoMKgwqDCoMKgwqBkYXRhLT5zZXR0aW5nID0gc2V0dGluZzsKK8KgwqDC oMKgwqDCoMKgZGF0YS0+dmFsdWUgPSBtb2RlOwrCoArCoMKgwqDCoMKgwqDCoMKgaWYgKG1nbXRf c2VuZChhZGFwdGVyLT5tZ210LCBvcGNvZGUsCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhZGFwdGVyLT5kZXZfaWQsIHNpemVv ZihjcCksICZjcCwKQEAgLTcxOSw4ICs3NTAsMTMgQEAgc3RhdGljIGJvb2wgc2V0X21vZGUoc3Ry dWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLCB1aW50MTZfdCBvcGNvZGUsCsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgYWRhcHRlci0+cGVuZGluZ19zZXR0aW5ncyB8PSBzZXR0aW5nOwrC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiB0cnVlOwrCoMKgwqDCoMKgwqDC oMKgfQotCsKgwqDCoMKgwqDCoMKgwqBnX2ZyZWUoZGF0YSk7CivCoMKgwqDCoMKgwqDCoGlmIChz ZXR0aW5nID09IE1HTVRfU0VUVElOR19QT1dFUkVEKSB7CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAvKiBjYW5jZWwgdGhlIGVhcmxpZXIgc2V0dGluZyAqLworwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgYWRhcHRlci0+cG93ZXJfc3RhdGVfdGFyZ2V0ID0gQURBUFRFUl9QT1dF Ul9TVEFURV9UQVJHRVRfTk9ORTsKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdfZGJ1 c19lbWl0X3Byb3BlcnR5X2NoYW5nZWQoZGJ1c19jb25uLCBhZGFwdGVyLT5wYXRoLAorwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEFEQVBURVJfSU5URVJGQUNFLCAiUG93ZXJT dGF0ZSIpOworwqDCoMKgwqDCoMKgwqB9CsKgwqDCoMKgwqDCoMKgwqBidGRfZXJyb3IoYWRhcHRl ci0+ZGV2X2lkLCAiRmFpbGVkIHRvIHNldCBtb2RlIGZvciBpbmRleCAldSIsCsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBhZGFwdGVyLT5kZXZf aWQpOwrCoApAQCAtMjg5OCw2ICsyOTM0LDcgQEAgc3RydWN0IHByb3BlcnR5X3NldF9kYXRhIHsK wqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlcjsKwqDCoMKgwqDCoMKg wqDCoHVpbnQzMl90IHNldHRpbmc7CsKgwqDCoMKgwqDCoMKgwqBHREJ1c1BlbmRpbmdQcm9wZXJ0 eVNldCBpZDsKK8KgwqDCoMKgwqDCoMKgdWludDhfdCB2YWx1ZTsKwqB9OwrCoArCoHN0YXRpYyB2 b2lkIHByb3BlcnR5X3NldF9tb2RlX2NvbXBsZXRlKHVpbnQ4X3Qgc3RhdHVzLCB1aW50MTZfdCBs ZW5ndGgsCkBAIC0yOTIzLDYgKzI5NjAsOCBAQCBzdGF0aWMgdm9pZCBwcm9wZXJ0eV9zZXRfbW9k ZV9jb21wbGV0ZSh1aW50OF90IHN0YXR1cywgdWludDE2X3QgbGVuZ3RoLArCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbWdtdF9lcnJzdHIoc3Rh dHVzKSk7CsKgCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYWRhcHRlci0+cGVuZGlu Z19zZXR0aW5ncyAmPSB+ZGF0YS0+c2V0dGluZzsKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmIChkYXRhLT5zZXR0aW5nICYgTUdNVF9TRVRUSU5HX1BPV0VSRUQpCivCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVzZXRfcG93ZXJfc3RhdGVfdGFy Z2V0KGFkYXB0ZXIsIGRhdGEtPnZhbHVlKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm47CsKgwqDCoMKgwqDCoMKgwqB9CsKgCkBAIC0zMDQ2LDYgKzMwODUsMTYgQEAgc3Rh dGljIHZvaWQgcHJvcGVydHlfc2V0X21vZGUoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLCB1 aW50MzJfdCBzZXR0aW5nLArCoMKgwqDCoMKgwqDCoMKgZGF0YS0+YWRhcHRlciA9IGFkYXB0ZXI7 CsKgwqDCoMKgwqDCoMKgwqBkYXRhLT5zZXR0aW5nID0gc2V0dGluZzsKwqDCoMKgwqDCoMKgwqDC oGRhdGEtPmlkID0gaWQ7CivCoMKgwqDCoMKgwqDCoGRhdGEtPnNldHRpbmcgPSBzZXR0aW5nOwor wqDCoMKgwqDCoMKgwqBkYXRhLT52YWx1ZSA9IG1vZGU7CisKK8KgwqDCoMKgwqDCoMKgaWYgKHNl dHRpbmcgPT0gTUdNVF9TRVRUSU5HX1BPV0VSRUQpIHsKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGFkYXB0ZXItPnBvd2VyX3N0YXRlX3RhcmdldCA9IG1vZGUgPworwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEFEQVBURVJfUE9XRVJfU1RBVEVfVEFS R0VUX09OIDoKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBB REFQVEVSX1BPV0VSX1NUQVRFX1RBUkdFVF9PRkY7CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBnX2RidXNfZW1pdF9wcm9wZXJ0eV9jaGFuZ2VkKGRidXNfY29ubiwgYWRhcHRlci0+cGF0 aCwKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBBREFQVEVSX0lOVEVSRkFD RSwgIlBvd2VyU3RhdGUiKTsKK8KgwqDCoMKgwqDCoMKgfQrCoArCoMKgwqDCoMKgwqDCoMKgaWYg KG1nbXRfc2VuZChhZGFwdGVyLT5tZ210LCBvcGNvZGUsIGFkYXB0ZXItPmRldl9pZCwgbGVuLCBw YXJhbSwKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHJv cGVydHlfc2V0X21vZGVfY29tcGxldGUsIGRhdGEsIGdfZnJlZSkgPiAwKSB7CkBAIC0zMDU0LDYg KzMxMDMsMTIgQEAgc3RhdGljIHZvaWQgcHJvcGVydHlfc2V0X21vZGUoc3RydWN0IGJ0ZF9hZGFw dGVyICphZGFwdGVyLCB1aW50MzJfdCBzZXR0aW5nLArCoMKgwqDCoMKgwqDCoMKgfQrCoArCoMKg wqDCoMKgwqDCoMKgZ19mcmVlKGRhdGEpOworwqDCoMKgwqDCoMKgwqBpZiAoc2V0dGluZyA9PSBN R01UX1NFVFRJTkdfUE9XRVJFRCkgeworwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyog Y2FuY2VsIHRoZSBlYXJsaWVyIHNldHRpbmcgKi8KK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGFkYXB0ZXItPnBvd2VyX3N0YXRlX3RhcmdldCA9IEFEQVBURVJfUE9XRVJfU1RBVEVfVEFS R0VUX05PTkU7CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnX2RidXNfZW1pdF9wcm9w ZXJ0eV9jaGFuZ2VkKGRidXNfY29ubiwgYWRhcHRlci0+cGF0aCwKK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBBREFQVEVSX0lOVEVSRkFDRSwgIlBvd2VyU3RhdGUiKTsKK8Kg wqDCoMKgwqDCoMKgfQrCoArCoGZhaWxlZDoKwqDCoMKgwqDCoMKgwqDCoGJ0ZF9lcnJvcihhZGFw dGVyLT5kZXZfaWQsICJGYWlsZWQgdG8gc2V0IG1vZGUgZm9yIGluZGV4ICV1IiwKQEAgLTMwODUs NiArMzE0MCwyOSBAQCBzdGF0aWMgdm9pZCBwcm9wZXJ0eV9zZXRfcG93ZXJlZChjb25zdCBHREJ1 c1Byb3BlcnR5VGFibGUgKnByb3BlcnR5LArCoMKgwqDCoMKgwqDCoMKgcHJvcGVydHlfc2V0X21v ZGUoYWRhcHRlciwgTUdNVF9TRVRUSU5HX1BPV0VSRUQsIGl0ZXIsIGlkKTsKwqB9CsKgCitzdGF0 aWMgZ2Jvb2xlYW4gcHJvcGVydHlfZ2V0X3Bvd2VyX3N0YXRlKGNvbnN0IEdEQnVzUHJvcGVydHlU YWJsZSAqcHJvcGVydHksCivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBEQnVzTWVzc2FnZUl0ZXIgKml0 ZXIsIHZvaWQgKnVzZXJfZGF0YSkKK3sKK8KgwqDCoMKgwqDCoMKgc3RydWN0IGJ0ZF9hZGFwdGVy ICphZGFwdGVyID0gdXNlcl9kYXRhOworwqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyICpzdHI7CisK K8KgwqDCoMKgwqDCoMKgaWYgKGFkYXB0ZXItPnBvd2VyX3N0YXRlX3RhcmdldCA9PSBBREFQVEVS X1BPV0VSX1NUQVRFX1RBUkdFVF9OT05FKSB7CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoYWRhcHRlci0+Y3VycmVudF9zZXR0aW5ncyAmIE1HTVRfU0VUVElOR19QT1dFUkVEKQor wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0ciA9ICJvbiI7 CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlCivCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3RyID0gIm9mZiI7CivCoMKgwqDCoMKgwqDCoH0g ZWxzZSB7CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoYWRhcHRlci0+cG93ZXJf c3RhdGVfdGFyZ2V0ID09IEFEQVBURVJfUE9XRVJfU1RBVEVfVEFSR0VUX09OKQorwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0ciA9ICJ0dXJuaW5nLW9uIjsK K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVsc2UKK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdHIgPSAidHVybmluZy1vZmYiOworwqDCoMKgwqDC oMKgwqB9CisKK8KgwqDCoMKgwqDCoMKgZGJ1c19tZXNzYWdlX2l0ZXJfYXBwZW5kX2Jhc2ljKGl0 ZXIsIERCVVNfVFlQRV9TVFJJTkcsICZzdHIpOworCivCoMKgwqDCoMKgwqDCoHJldHVybiBUUlVF OworfQorCsKgc3RhdGljIGdib29sZWFuIHByb3BlcnR5X2dldF9kaXNjb3ZlcmFibGUoY29uc3Qg R0RCdXNQcm9wZXJ0eVRhYmxlICpwcm9wZXJ0eSwKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBEQnVz TWVzc2FnZUl0ZXIgKml0ZXIsIHZvaWQgKnVzZXJfZGF0YSkKwqB7CkBAIC0zNzIzLDYgKzM4MDEs NyBAQCBzdGF0aWMgY29uc3QgR0RCdXNQcm9wZXJ0eVRhYmxlIGFkYXB0ZXJfcHJvcGVydGllc1td ID0gewrCoMKgwqDCoMKgwqDCoMKgeyAiQWxpYXMiLCAicyIsIHByb3BlcnR5X2dldF9hbGlhcywg cHJvcGVydHlfc2V0X2FsaWFzIH0sCsKgwqDCoMKgwqDCoMKgwqB7ICJDbGFzcyIsICJ1IiwgcHJv cGVydHlfZ2V0X2NsYXNzIH0sCsKgwqDCoMKgwqDCoMKgwqB7ICJQb3dlcmVkIiwgImIiLCBwcm9w ZXJ0eV9nZXRfcG93ZXJlZCwgcHJvcGVydHlfc2V0X3Bvd2VyZWQgfSwKK8KgwqDCoMKgwqDCoMKg eyAiUG93ZXJTdGF0ZSIsICJzIiwgcHJvcGVydHlfZ2V0X3Bvd2VyX3N0YXRlIH0sCsKgwqDCoMKg wqDCoMKgwqB7ICJEaXNjb3ZlcmFibGUiLCAiYiIsIHByb3BlcnR5X2dldF9kaXNjb3ZlcmFibGUs CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHJvcGVydHlfc2V0X2Rpc2NvdmVyYWJsZSB9LArCoMKg wqDCoMKgwqDCoMKgeyAiRGlzY292ZXJhYmxlVGltZW91dCIsICJ1IiwgcHJvcGVydHlfZ2V0X2Rp c2NvdmVyYWJsZV90aW1lb3V0LApAQCAtNTUyOSw2ICs1NjA4LDggQEAgc3RhdGljIHZvaWQgYWRh cHRlcl9zdGFydChzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIpCsKgewrCoMKgwqDCoMKgwqDC oMKgZ19kYnVzX2VtaXRfcHJvcGVydHlfY2hhbmdlZChkYnVzX2Nvbm4sIGFkYXB0ZXItPnBhdGgs CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEFEQVBURVJfSU5URVJGQUNF LCAiUG93ZXJlZCIpOworwqDCoMKgwqDCoMKgwqBnX2RidXNfZW1pdF9wcm9wZXJ0eV9jaGFuZ2Vk KGRidXNfY29ubiwgYWRhcHRlci0+cGF0aCwKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBBREFQVEVSX0lOVEVSRkFDRSwgIlBvd2VyU3RhdGUiKTsKwqAKwqDCoMKgwqDCoMKg wqDCoERCRygiYWRhcHRlciAlcyBoYXMgYmVlbiBlbmFibGVkIiwgYWRhcHRlci0+cGF0aCk7CsKg CkBAIC03MjcyLDYgKzczNTMsOCBAQCBzdGF0aWMgdm9pZCBhZGFwdGVyX3N0b3Aoc3RydWN0IGJ0 ZF9hZGFwdGVyICphZGFwdGVyKQrCoArCoMKgwqDCoMKgwqDCoMKgZ19kYnVzX2VtaXRfcHJvcGVy dHlfY2hhbmdlZChkYnVzX2Nvbm4sIGFkYXB0ZXItPnBhdGgsCsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoEFEQVBURVJfSU5URVJGQUNFLCAiUG93ZXJlZCIpOworwqDCoMKg wqDCoMKgwqBnX2RidXNfZW1pdF9wcm9wZXJ0eV9jaGFuZ2VkKGRidXNfY29ubiwgYWRhcHRlci0+ cGF0aCwKK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBBREFQVEVSX0lOVEVS RkFDRSwgIlBvd2VyU3RhdGUiKTsKwqAKwqDCoMKgwqDCoMKgwqDCoERCRygiYWRhcHRlciAlcyBo YXMgYmVlbiBkaXNhYmxlZCIsIGFkYXB0ZXItPnBhdGgpOwrCoH0KLS0gCjIuMzcuMgoK