Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qbEu7-00BUVL-DX for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Aug 2023 06:42:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qbEu4-00F5wK-Ew for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Aug 2023 06:42:12 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qbEu3-00F5w9-FN for pgsql-hackers@lists.postgresql.org; Wed, 30 Aug 2023 06:42:11 +0000 Received: from mail-oi1-x22c.google.com ([2607:f8b0:4864:20::22c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qbEtw-001jkA-6q for pgsql-hackers@postgresql.org; Wed, 30 Aug 2023 06:42:08 +0000 Received: by mail-oi1-x22c.google.com with SMTP id 5614622812f47-3a8036d805eso3877665b6e.3 for ; Tue, 29 Aug 2023 23:42:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20221208.gappssmtp.com; s=20221208; t=1693377723; x=1693982523; darn=postgresql.org; h=mime-version:user-agent:date:to:from:subject:message-id:from:to:cc :subject:date:message-id:reply-to; bh=UK4N4HchKsdYjX4JzJi9IRMcjwmp1vhjfeeWkeZH9Ao=; b=OX6ouQYWtoA1wVOoWn09VaktPHT6KtMhKtiyL0d49c0HmCadNDvrJz6vEOikT9/nEp 0kELcRxElhV9foAtnYjwWUoWJi6ddgsvUD23kpz+6xQ7BkHROXNGLIFSsKVx+2Zmr6dg vnFvoGvxlil7716LuJ7DKGw4yTCjBTowdn52WnKqfvHSJYaw/BL9Ksm3nD895FkjgELg EnGLgjANIQXhs05JgcEj/69pdbX67CcHxq/Hk21HNmb+oq3dF8M9xfHChI1nZVLbpha7 u8BB0vMplCHwpZAJjHyd5q90a8AiZkykXiX+MKJdGXHvj4IXadxPLL1WcI4nerrA1VdR hIGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693377723; x=1693982523; h=mime-version:user-agent:date:to:from:subject:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=UK4N4HchKsdYjX4JzJi9IRMcjwmp1vhjfeeWkeZH9Ao=; b=Ixi00FWuAj173imwysmtRK70fyV8fGikiE/0EKiO5SSSOokNjxaXVIjYw3yxmlevTj E1vam5VxZ5Xa3xhKED01I2aE9gN9pkAwW5n5y9/9qfv7ztGgIIBnklRlj/6heInk04VQ 8RcaauS58NoWOrLmIpGJz8SOnj7LnI7x6+sLf29HTTCDkVGZj9TILvRss+7uFvhUlm/f 5xUQgo48Gspq59XZHEiS65VyEphh6YZJdg4Rnv0O2alcelA+H/hueesPg3xWNYqRtqim 1Qc7Fv+0skQpSz29GP2phw9aOnfYZ/sujlhH1zuDcrau7jOYt6yg7cPPstzOd3HlX1oz 1NAg== X-Gm-Message-State: AOJu0Yx9gjU47ttSHgRzkVRudVU2YRj9eHZ4kex+gcvz9bItwKMTvtWD X3zsVcSpofG0XP/Yar3XZc+wlOoG5fgRZlQBn8M= X-Google-Smtp-Source: AGHT+IHr3lv29ttWE0m9AmZgc4IWXqVXk0dhL8Rxy37FClnOI5MaLHaCrD8cAWHuJ8sThywGW4yLNA== X-Received: by 2002:a05:6808:b:b0:3a7:f153:b5e5 with SMTP id u11-20020a056808000b00b003a7f153b5e5mr1349720oic.29.1693377722810; Tue, 29 Aug 2023 23:42:02 -0700 (PDT) Received: from jeff-laptop.lan (c-98-45-81-55.hsd1.ca.comcast.net. [98.45.81.55]) by smtp.gmail.com with ESMTPSA id f4-20020aa782c4000000b0068a0922b1f0sm9392083pfn.137.2023.08.29.23.42.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Aug 2023 23:42:02 -0700 (PDT) Message-ID: <149ff9264db27cdf724b65709fbbaee4bf316835.camel@j-davis.com> Subject: [17] CREATE SUBSCRIPTION ... SERVER From: Jeff Davis To: pgsql-hackers@postgresql.org Date: Tue, 29 Aug 2023 23:42:00 -0700 Content-Type: multipart/mixed; boundary="=-gTF9xPPXildKvbk5jdMe" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-gTF9xPPXildKvbk5jdMe Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Synopsis: Publisher: CREATE TABLE x(i INT); CREATE TABLE y(i INT); INSERT INTO x VALUES(1); INSERT INTO y VALUES(-1); CREATE PUBLICATION pub1 FOR TABLE x; CREATE PUBLICATION pub2 FOR TABLE y; Subscriber: CREATE SERVER myserver FOR CONNECTION ONLY OPTIONS ( host '...', dbname '...' ); CREATE USER MAPPING FOR PUBLIC SERVER myserver OPTIONS ( user '...', password '...' ); CREATE TABLE x(i INT); CREATE TABLE y(i INT); CREATE SUBSCRIPTION sub1 SERVER myserver PUBLICATION pub1; CREATE SUBSCRIPTION sub2 SERVER myserver PUBLICATION pub2; Motivation: * Allow managing connections separately from managing the subscriptions themselves. For instance, if you update an authentication method or the location of the publisher, updating the server alone will update all subscriptions at once. * Enable separating the privileges to create a subscription from the privileges to create a connection string. (By default pg_create_subscription has both privileges for compatibility with v16, but the connection privilege can be revoked from pg_create_subscription, see below.) * Enable changing of single connection parameters without pasting the rest of the connection string as well. E.g. "ALTER SERVER ... OPTIONS (SET ... '...');". * Benefit from user mappings and ACLs on foreign server object if you have multiple roles creating subscriptions. Details: The attached patch implements "CREATE SUBSCRIPTION ... SERVER myserver" as an alternative to "CREATE SUBSCRIPTION ... CONNECTION '...'". The user must be a member of pg_create_subscription and have USAGE privileges on the server. The server "myserver" must have been created with the new syntax: CREATE SERVER myserver FOR CONNECTION ONLY instead of specifying FOREIGN DATA WRAPPER. In other words, a server FOR CONNECTION ONLY doesn't have a real FDW, it's a special server just used for the postgres connection options. To create a server FOR CONNECTION ONLY, the user must be a member of the new predefined role pg_create_connection. A server FOR CONNECTION ONLY still uses ACLs and user mappings the same way as other foreign servers, but cannot be used to create foreign tables. The predefined role pg_create_subscription is also a member of the role pg_create_connection, so that existing members of the pg_create_subscription role may continue to create subscriptions using CONNECTION just like in v16 without any additional grant. Security: One motivation of this patch is to enable separating the privileges to create a subscription from the privileges to create a connection string, because each have their own security implications and may be done through separate processes. To separate the privileges, simply revoke pg_create_connection from pg_create_subscription; then you can grant each one independently as you see fit. For instance, there may be an administrator that controls what postgres instances are available, and what connections may be reasonable between those instances. That admin will need the pg_create_connection role, and can proactively create all the servers (using FOR CONNECTION ONLY) and user mappings that may be useful, and manage and update those as necessary without breaking subscriptions. Another role may be used to manage the subscriptions themselves, and they would need to be a member of pg_create_subscription but do not need the privileges to create raw connection strings. Note: the ability to revoke pg_create_connection from pg_create_subscription avoids some risks in some environments; but creating a subcription should still be considered a highly privileged operation whether using SERVER or CONNECTION. Remaining work: The code for options handling needs some work. It's similar to postgres_fdw in behavior, but I didn't spend as much time on it because I suspect we will want to refactor the various ways connection strings are handled (in CREATE SUBSCRIPTION ... CONNECTION, postgres_fdw, and dblink) to make them more consistent. Also, there are some nuances in handling connection options that I don't fully understand. postgres_fdw makes a lot of effort: it overrides client_encoding, it does a post-connection security check, and allows GSS instead of a password option for non-superusers. But CREATE SUBSCRIPTION ... CONNECTION makes little effort, only checking whether the password is specified or not. I'd like to understand why they are different and what we can unify. Also, right now dblink has it's own dblink_fdw, and perhaps a server FOR CONNECTION ONLY should become the preferred method instead. --=20 Jeff Davis PostgreSQL Contributor Team - AWS --=-gTF9xPPXildKvbk5jdMe Content-Disposition: attachment; filename="v1-0001-CREATE-SUBSCRIPTION-.-SERVER.patch" Content-Type: text/x-patch; name="v1-0001-CREATE-SUBSCRIPTION-.-SERVER.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA0MjIxMTRhMGJjMWQ5MjhkMjU3NTA1YmYzMWU5OTM5N2NiOGE2YThjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDIzIEF1ZyAyMDIzIDEwOjMxOjE2IC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MV0gQ1JFQVRF IFNVQlNDUklQVElPTiAuLi4gU0VSVkVSLgoKLS0tCiBjb250cmliL2RibGluay9kYmxpbmsuYyAg ICAgICAgICAgICAgICAgICAgICAgfCAgMTcgKy0KIGNvbnRyaWIvZGJsaW5rL2V4cGVjdGVkL2Ri bGluay5vdXQgICAgICAgICAgICB8ICA1OCArKysrLQogY29udHJpYi9kYmxpbmsvc3FsL2RibGlu ay5zcWwgICAgICAgICAgICAgICAgIHwgIDM0ICsrLQogLi4uL3Bvc3RncmVzX2Zkdy9leHBlY3Rl ZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgICA0ICstCiBkb2Mvc3JjL3NnbWwvZGJsaW5rLnNnbWwg ICAgICAgICAgICAgICAgICAgICAgfCAgMTEgKy0KIGRvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vi c2NyaXB0aW9uLnNnbWwgICAgICB8ICAxOCArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc2Vy dmVyLnNnbWwgICAgICAgICAgIHwgIDY4ICsrKysrLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgIDE3ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV91 c2VyX21hcHBpbmcuc2dtbCAgICAgfCAgNzUgKysrKysrCiBkb2Mvc3JjL3NnbWwvdXNlci1tYW5h Zy5zZ21sICAgICAgICAgICAgICAgICAgfCAgMjEgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdf c3Vic2NyaXB0aW9uLmMgICAgICAgICB8ICAxNyArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fZnVuY3Rpb25zLnNxbCAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2ZvcmVp Z25jbWRzLmMgICAgICAgICAgICB8IDExNyArKysrKysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8IDIwNyArKysrKysrKysrKysrKy0tCiBzcmMvYmFj a2VuZC9mb3JlaWduL2ZvcmVpZ24uYyAgICAgICAgICAgICAgICAgfCAyMjQgKysrKysrKysrKysr KysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAg NDYgKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwg IDEyICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAg NzUgKysrKy0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jICAgICAgICAgICAgICAgICAgIHwg ICA1ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2F1dGhpZC5kYXQgICAgICAgICAgICAgfCAg IDUgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgICA0 ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICB8ICAgNSAr LQogc3JjL2luY2x1ZGUvZm9yZWlnbi9mb3JlaWduLmggICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgNCArCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2ZvcmVpZ25fZGF0YS5vdXQgICAgfCAgNDIgKysrKwog c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0ICAgIHwgIDM4ICsrKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yZWlnbl9kYXRhLnNxbCAgICAgICAgIHwgIDM0ICsrKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCAgICAgICAgIHwgIDM5ICsrKwog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDAxX3JlcF9jaGFuZ2VzLnBsICAgIHwgIDU3ICsrKysr CiAzMCBmaWxlcyBjaGFuZ2VkLCAxMTM5IGluc2VydGlvbnMoKyksIDExOSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9jb250cmliL2RibGluay9kYmxpbmsuYyBiL2NvbnRyaWIvZGJsaW5rL2Ri bGluay5jCmluZGV4IDQxZTFmNmM5MWQuLjg1MjYzZjNkZTYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv ZGJsaW5rL2RibGluay5jCisrKyBiL2NvbnRyaWIvZGJsaW5rL2RibGluay5jCkBAIC0yNzc4LDcg KzI3NzgsNiBAQCBnZXRfY29ubmVjdF9zdHJpbmcoY29uc3QgY2hhciAqc2VydmVybmFtZSkKIAlV c2VyTWFwcGluZyAqdXNlcl9tYXBwaW5nOwogCUxpc3RDZWxsICAgKmNlbGw7CiAJU3RyaW5nSW5m b0RhdGEgYnVmOwotCUZvcmVpZ25EYXRhV3JhcHBlciAqZmR3OwogCUFjbFJlc3VsdAlhY2xyZXN1 bHQ7CiAJY2hhcgkgICAqc3J2bmFtZTsKIApAQCAtMjgxNSwyMCArMjgxNCwyNCBAQCBnZXRfY29u bmVjdF9zdHJpbmcoY29uc3QgY2hhciAqc2VydmVybmFtZSkKIAkJT2lkCQkJdXNlcmlkID0gR2V0 VXNlcklkKCk7CiAKIAkJdXNlcl9tYXBwaW5nID0gR2V0VXNlck1hcHBpbmcodXNlcmlkLCBzZXJ2 ZXJpZCk7Ci0JCWZkdyA9IEdldEZvcmVpZ25EYXRhV3JhcHBlcihmZHdpZCk7CiAKIAkJLyogQ2hl Y2sgcGVybWlzc2lvbnMsIHVzZXIgbXVzdCBoYXZlIHVzYWdlIG9uIHRoZSBzZXJ2ZXIuICovCiAJ CWFjbHJlc3VsdCA9IG9iamVjdF9hY2xjaGVjayhGb3JlaWduU2VydmVyUmVsYXRpb25JZCwgc2Vy dmVyaWQsIHVzZXJpZCwgQUNMX1VTQUdFKTsKIAkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19P SykKIAkJCWFjbGNoZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX0ZPUkVJR05fU0VSVkVSLCBm b3JlaWduX3NlcnZlci0+c2VydmVybmFtZSk7CiAKLQkJZm9yZWFjaChjZWxsLCBmZHctPm9wdGlv bnMpCisJCWlmIChPaWRJc1ZhbGlkKGZkd2lkKSkKIAkJewotCQkJRGVmRWxlbSAgICAqZGVmID0g bGZpcnN0KGNlbGwpOworCQkJRm9yZWlnbkRhdGFXcmFwcGVyICpmZHcgPSBHZXRGb3JlaWduRGF0 YVdyYXBwZXIoZmR3aWQpOwogCi0JCQlpZiAoaXNfdmFsaWRfZGJsaW5rX29wdGlvbihvcHRpb25z LCBkZWYtPmRlZm5hbWUsIEZvcmVpZ25EYXRhV3JhcHBlclJlbGF0aW9uSWQpKQotCQkJCWFwcGVu ZFN0cmluZ0luZm8oJmJ1ZiwgIiVzPSclcycgIiwgZGVmLT5kZWZuYW1lLAotCQkJCQkJCQkgZXNj YXBlX3BhcmFtX3N0cihzdHJWYWwoZGVmLT5hcmcpKSk7CisJCQlmb3JlYWNoKGNlbGwsIGZkdy0+ b3B0aW9ucykKKwkJCXsKKwkJCQlEZWZFbGVtICAgICpkZWYgPSBsZmlyc3QoY2VsbCk7CisKKwkJ CQlpZiAoaXNfdmFsaWRfZGJsaW5rX29wdGlvbihvcHRpb25zLCBkZWYtPmRlZm5hbWUsIEZvcmVp Z25EYXRhV3JhcHBlclJlbGF0aW9uSWQpKQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICIl cz0nJXMnICIsIGRlZi0+ZGVmbmFtZSwKKwkJCQkJCQkJCSBlc2NhcGVfcGFyYW1fc3RyKHN0clZh bChkZWYtPmFyZykpKTsKKwkJCX0KIAkJfQogCiAJCWZvcmVhY2goY2VsbCwgZm9yZWlnbl9zZXJ2 ZXItPm9wdGlvbnMpCmRpZmYgLS1naXQgYS9jb250cmliL2RibGluay9leHBlY3RlZC9kYmxpbmsu b3V0IGIvY29udHJpYi9kYmxpbmsvZXhwZWN0ZWQvZGJsaW5rLm91dAppbmRleCA3ODA5ZjU4ZDk2 Li4yNTEyNzk5NWM0IDEwMDY0NAotLS0gYS9jb250cmliL2RibGluay9leHBlY3RlZC9kYmxpbmsu b3V0CisrKyBiL2NvbnRyaWIvZGJsaW5rL2V4cGVjdGVkL2RibGluay5vdXQKQEAgLTg4OCwzMSAr ODg4LDY2IEBAIFNFTEVDVCBkYmxpbmtfZGlzY29ubmVjdCgnZHRlc3QxJyk7CiBDUkVBVEUgUk9M RSByZWdyZXNzX2RibGlua191c2VyOwogRE8gJGQkCiAgICAgQkVHSU4KLSAgICAgICAgRVhFQ1VU RSAkJENSRUFURSBTRVJWRVIgZmR0ZXN0IEZPUkVJR04gREFUQSBXUkFQUEVSIGRibGlua19mZHcK KyAgICAgICAgRVhFQ1VURSAkJENSRUFURSBTRVJWRVIgZmR0ZXN0X2ZjbyBGT1IgQ09OTkVDVElP TiBPTkxZCisgICAgICAgICAgICBPUFRJT05TIChkYm5hbWUgJyQkfHxjdXJyZW50X2RhdGFiYXNl KCl8fCQkJywKKyAgICAgICAgICAgICAgICAgICAgIHBvcnQgJyQkfHxjdXJyZW50X3NldHRpbmco J3BvcnQnKXx8JCQnCisgICAgICAgICAgICApJCQ7CisgICAgICAgIEVYRUNVVEUgJCRDUkVBVEUg U0VSVkVSIGZkdGVzdF9mZHcgRk9SRUlHTiBEQVRBIFdSQVBQRVIgZGJsaW5rX2ZkdwogICAgICAg ICAgICAgT1BUSU9OUyAoZGJuYW1lICckJHx8Y3VycmVudF9kYXRhYmFzZSgpfHwkJCcsCiAgICAg ICAgICAgICAgICAgICAgICBwb3J0ICckJHx8Y3VycmVudF9zZXR0aW5nKCdwb3J0Jyl8fCQkJwog ICAgICAgICAgICAgKSQkOwogICAgIEVORDsKICRkJDsKLUNSRUFURSBVU0VSIE1BUFBJTkcgRk9S IHB1YmxpYyBTRVJWRVIgZmR0ZXN0CitDUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiBwdWJsaWMgU0VS VkVSIGZkdGVzdF9mY28KKyAgT1BUSU9OUyAoc2VydmVyICdsb2NhbGhvc3QnKTsgIC0tIGZhaWws IGNhbid0IHNwZWNpZnkgc2VydmVyIGhlcmUKK0VSUk9SOiAgaW52YWxpZCB1c2VyIG1hcHBpbmcg b3B0aW9uICJzZXJ2ZXIiCitDUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiBwdWJsaWMgU0VSVkVSIGZk dGVzdF9mZHcKICAgT1BUSU9OUyAoc2VydmVyICdsb2NhbGhvc3QnKTsgIC0tIGZhaWwsIGNhbid0 IHNwZWNpZnkgc2VydmVyIGhlcmUKIEVSUk9SOiAgaW52YWxpZCBvcHRpb24gInNlcnZlciIKLUNS RUFURSBVU0VSIE1BUFBJTkcgRk9SIHB1YmxpYyBTRVJWRVIgZmR0ZXN0IE9QVElPTlMgKHVzZXIg OidVU0VSJyk7Ci1HUkFOVCBVU0FHRSBPTiBGT1JFSUdOIFNFUlZFUiBmZHRlc3QgVE8gcmVncmVz c19kYmxpbmtfdXNlcjsKK0NSRUFURSBVU0VSIE1BUFBJTkcgRk9SIHB1YmxpYyBTRVJWRVIgZmR0 ZXN0X2ZjbyBPUFRJT05TICh1c2VyIDonVVNFUicsIHBhc3N3b3JkICdub25zZW5zZScpOworQ1JF QVRFIFVTRVIgTUFQUElORyBGT1IgcHVibGljIFNFUlZFUiBmZHRlc3RfZmR3IE9QVElPTlMgKHVz ZXIgOidVU0VSJyk7CitHUkFOVCBVU0FHRSBPTiBGT1JFSUdOIFNFUlZFUiBmZHRlc3RfZmNvIFRP IHJlZ3Jlc3NfZGJsaW5rX3VzZXI7CitHUkFOVCBVU0FHRSBPTiBGT1JFSUdOIFNFUlZFUiBmZHRl c3RfZmR3IFRPIHJlZ3Jlc3NfZGJsaW5rX3VzZXI7CiBHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9O IGRibGlua19jb25uZWN0X3UodGV4dCwgdGV4dCkgVE8gcmVncmVzc19kYmxpbmtfdXNlcjsKIFNF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19kYmxpbmtfdXNlcjsKIC0tIHNob3VsZCBm YWlsCi1TRUxFQ1QgZGJsaW5rX2Nvbm5lY3QoJ215Y29ubicsICdmZHRlc3QnKTsKK1NFTEVDVCBk YmxpbmtfY29ubmVjdCgnbXljb25uMScsICdmZHRlc3RfZmNvJyk7CitFUlJPUjogIHBhc3N3b3Jk IG9yIEdTU0FQSSBkZWxlZ2F0ZWQgY3JlZGVudGlhbHMgcmVxdWlyZWQKK0RFVEFJTDogIE5vbi1z dXBlcnVzZXJzIG1heSBvbmx5IGNvbm5lY3QgdXNpbmcgY3JlZGVudGlhbHMgdGhleSBwcm92aWRl LCBlZzogcGFzc3dvcmQgaW4gY29ubmVjdGlvbiBzdHJpbmcgb3IgZGVsZWdhdGVkIEdTU0FQSSBj cmVkZW50aWFscworSElOVDogIEVuc3VyZSBwcm92aWRlZCBjcmVkZW50aWFscyBtYXRjaCB0YXJn ZXQgc2VydmVyJ3MgYXV0aGVudGljYXRpb24gbWV0aG9kLgorU0VMRUNUIGRibGlua19jb25uZWN0 KCdteWNvbm4yJywgJ2ZkdGVzdF9mZHcnKTsKIEVSUk9SOiAgcGFzc3dvcmQgb3IgR1NTQVBJIGRl bGVnYXRlZCBjcmVkZW50aWFscyByZXF1aXJlZAogREVUQUlMOiAgTm9uLXN1cGVydXNlcnMgbXVz dCBwcm92aWRlIGEgcGFzc3dvcmQgaW4gdGhlIGNvbm5lY3Rpb24gc3RyaW5nIG9yIHNlbmQgZGVs ZWdhdGVkIEdTU0FQSSBjcmVkZW50aWFscy4KIC0tIHNob3VsZCBzdWNjZWVkCi1TRUxFQ1QgZGJs aW5rX2Nvbm5lY3RfdSgnbXljb25uJywgJ2ZkdGVzdCcpOworU0VMRUNUIGRibGlua19jb25uZWN0 X3UoJ215Y29ubjEnLCAnZmR0ZXN0X2ZjbycpOwogIGRibGlua19jb25uZWN0X3UgCiAtLS0tLS0t LS0tLS0tLS0tLS0KICBPSwogKDEgcm93KQogCi1TRUxFQ1QgKiBGUk9NIGRibGluaygnbXljb25u JywnU0VMRUNUICogRlJPTSBmb28nKSBBUyB0KGEgaW50LCBiIHRleHQsIGMgdGV4dFtdKTsKK1NF TEVDVCBkYmxpbmtfY29ubmVjdF91KCdteWNvbm4yJywgJ2ZkdGVzdF9mZHcnKTsKKyBkYmxpbmtf Y29ubmVjdF91IAorLS0tLS0tLS0tLS0tLS0tLS0tCisgT0sKKygxIHJvdykKKworU0VMRUNUICog RlJPTSBkYmxpbmsoJ215Y29ubjEnLCdTRUxFQ1QgKiBGUk9NIGZvbycpIEFTIHQoYSBpbnQsIGIg dGV4dCwgYyB0ZXh0W10pOworIGEgIHwgYiB8ICAgICAgIGMgICAgICAgCistLS0tKy0tLSstLS0t LS0tLS0tLS0tLS0KKyAgMCB8IGEgfCB7YTAsYjAsYzB9CisgIDEgfCBiIHwge2ExLGIxLGMxfQor ICAyIHwgYyB8IHthMixiMixjMn0KKyAgMyB8IGQgfCB7YTMsYjMsYzN9CisgIDQgfCBlIHwge2E0 LGI0LGM0fQorICA1IHwgZiB8IHthNSxiNSxjNX0KKyAgNiB8IGcgfCB7YTYsYjYsYzZ9CisgIDcg fCBoIHwge2E3LGI3LGM3fQorICA4IHwgaSB8IHthOCxiOCxjOH0KKyAgOSB8IGogfCB7YTksYjks Yzl9CisgMTAgfCBrIHwge2ExMCxiMTAsYzEwfQorKDExIHJvd3MpCisKK1NFTEVDVCAqIEZST00g ZGJsaW5rKCdteWNvbm4yJywnU0VMRUNUICogRlJPTSBmb28nKSBBUyB0KGEgaW50LCBiIHRleHQs IGMgdGV4dFtdKTsKICBhICB8IGIgfCAgICAgICBjICAgICAgIAogLS0tLSstLS0rLS0tLS0tLS0t LS0tLS0tCiAgIDAgfCBhIHwge2EwLGIwLGMwfQpAQCAtOTI5LDExICs5NjQsMTQgQEAgU0VMRUNU ICogRlJPTSBkYmxpbmsoJ215Y29ubicsJ1NFTEVDVCAqIEZST00gZm9vJykgQVMgdChhIGludCwg YiB0ZXh0LCBjIHRleHRbXSkKICgxMSByb3dzKQogCiBcYyAtIC0KLVJFVk9LRSBVU0FHRSBPTiBG T1JFSUdOIFNFUlZFUiBmZHRlc3QgRlJPTSByZWdyZXNzX2RibGlua191c2VyOworUkVWT0tFIFVT QUdFIE9OIEZPUkVJR04gU0VSVkVSIGZkdGVzdF9mY28gRlJPTSByZWdyZXNzX2RibGlua191c2Vy OworUkVWT0tFIFVTQUdFIE9OIEZPUkVJR04gU0VSVkVSIGZkdGVzdF9mZHcgRlJPTSByZWdyZXNz X2RibGlua191c2VyOwogUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gZGJsaW5rX2Nvbm5lY3Rf dSh0ZXh0LCB0ZXh0KSBGUk9NIHJlZ3Jlc3NfZGJsaW5rX3VzZXI7CiBEUk9QIFVTRVIgcmVncmVz c19kYmxpbmtfdXNlcjsKLURST1AgVVNFUiBNQVBQSU5HIEZPUiBwdWJsaWMgU0VSVkVSIGZkdGVz dDsKLURST1AgU0VSVkVSIGZkdGVzdDsKK0RST1AgVVNFUiBNQVBQSU5HIEZPUiBwdWJsaWMgU0VS VkVSIGZkdGVzdF9mY287CitEUk9QIFVTRVIgTUFQUElORyBGT1IgcHVibGljIFNFUlZFUiBmZHRl c3RfZmR3OworRFJPUCBTRVJWRVIgZmR0ZXN0X2ZjbzsKK0RST1AgU0VSVkVSIGZkdGVzdF9mZHc7 CiAtLSBzaG91bGQgZmFpbAogQUxURVIgRk9SRUlHTiBEQVRBIFdSQVBQRVIgZGJsaW5rX2ZkdyBP UFRJT05TIChub25leGlzdGVudCAnZmR3Jyk7CiBFUlJPUjogIGludmFsaWQgb3B0aW9uICJub25l eGlzdGVudCIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZGJsaW5rL3NxbC9kYmxpbmsuc3FsIGIvY29u dHJpYi9kYmxpbmsvc3FsL2RibGluay5zcWwKaW5kZXggNzg3MGNlNWQ1YS4uY2I4YzExYTIwYSAx MDA2NDQKLS0tIGEvY29udHJpYi9kYmxpbmsvc3FsL2RibGluay5zcWwKKysrIGIvY29udHJpYi9k Ymxpbmsvc3FsL2RibGluay5zcWwKQEAgLTQ1OCwzMyArNDU4LDQ3IEBAIFNFTEVDVCBkYmxpbmtf ZGlzY29ubmVjdCgnZHRlc3QxJyk7CiBDUkVBVEUgUk9MRSByZWdyZXNzX2RibGlua191c2VyOwog RE8gJGQkCiAgICAgQkVHSU4KLSAgICAgICAgRVhFQ1VURSAkJENSRUFURSBTRVJWRVIgZmR0ZXN0 IEZPUkVJR04gREFUQSBXUkFQUEVSIGRibGlua19mZHcKKyAgICAgICAgRVhFQ1VURSAkJENSRUFU RSBTRVJWRVIgZmR0ZXN0X2ZjbyBGT1IgQ09OTkVDVElPTiBPTkxZCisgICAgICAgICAgICBPUFRJ T05TIChkYm5hbWUgJyQkfHxjdXJyZW50X2RhdGFiYXNlKCl8fCQkJywKKyAgICAgICAgICAgICAg ICAgICAgIHBvcnQgJyQkfHxjdXJyZW50X3NldHRpbmcoJ3BvcnQnKXx8JCQnCisgICAgICAgICAg ICApJCQ7CisgICAgICAgIEVYRUNVVEUgJCRDUkVBVEUgU0VSVkVSIGZkdGVzdF9mZHcgRk9SRUlH TiBEQVRBIFdSQVBQRVIgZGJsaW5rX2ZkdwogICAgICAgICAgICAgT1BUSU9OUyAoZGJuYW1lICck JHx8Y3VycmVudF9kYXRhYmFzZSgpfHwkJCcsCiAgICAgICAgICAgICAgICAgICAgICBwb3J0ICck JHx8Y3VycmVudF9zZXR0aW5nKCdwb3J0Jyl8fCQkJwogICAgICAgICAgICAgKSQkOwogICAgIEVO RDsKICRkJDsKIAotQ1JFQVRFIFVTRVIgTUFQUElORyBGT1IgcHVibGljIFNFUlZFUiBmZHRlc3QK K0NSRUFURSBVU0VSIE1BUFBJTkcgRk9SIHB1YmxpYyBTRVJWRVIgZmR0ZXN0X2ZjbworICBPUFRJ T05TIChzZXJ2ZXIgJ2xvY2FsaG9zdCcpOyAgLS0gZmFpbCwgY2FuJ3Qgc3BlY2lmeSBzZXJ2ZXIg aGVyZQorQ1JFQVRFIFVTRVIgTUFQUElORyBGT1IgcHVibGljIFNFUlZFUiBmZHRlc3RfZmR3CiAg IE9QVElPTlMgKHNlcnZlciAnbG9jYWxob3N0Jyk7ICAtLSBmYWlsLCBjYW4ndCBzcGVjaWZ5IHNl cnZlciBoZXJlCi1DUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiBwdWJsaWMgU0VSVkVSIGZkdGVzdCBP UFRJT05TICh1c2VyIDonVVNFUicpOworQ1JFQVRFIFVTRVIgTUFQUElORyBGT1IgcHVibGljIFNF UlZFUiBmZHRlc3RfZmNvIE9QVElPTlMgKHVzZXIgOidVU0VSJywgcGFzc3dvcmQgJ25vbnNlbnNl Jyk7CitDUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiBwdWJsaWMgU0VSVkVSIGZkdGVzdF9mZHcgT1BU SU9OUyAodXNlciA6J1VTRVInKTsKIAotR1JBTlQgVVNBR0UgT04gRk9SRUlHTiBTRVJWRVIgZmR0 ZXN0IFRPIHJlZ3Jlc3NfZGJsaW5rX3VzZXI7CitHUkFOVCBVU0FHRSBPTiBGT1JFSUdOIFNFUlZF UiBmZHRlc3RfZmNvIFRPIHJlZ3Jlc3NfZGJsaW5rX3VzZXI7CitHUkFOVCBVU0FHRSBPTiBGT1JF SUdOIFNFUlZFUiBmZHRlc3RfZmR3IFRPIHJlZ3Jlc3NfZGJsaW5rX3VzZXI7CiBHUkFOVCBFWEVD VVRFIE9OIEZVTkNUSU9OIGRibGlua19jb25uZWN0X3UodGV4dCwgdGV4dCkgVE8gcmVncmVzc19k YmxpbmtfdXNlcjsKIAogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX2RibGlua191 c2VyOwogLS0gc2hvdWxkIGZhaWwKLVNFTEVDVCBkYmxpbmtfY29ubmVjdCgnbXljb25uJywgJ2Zk dGVzdCcpOworU0VMRUNUIGRibGlua19jb25uZWN0KCdteWNvbm4xJywgJ2ZkdGVzdF9mY28nKTsK K1NFTEVDVCBkYmxpbmtfY29ubmVjdCgnbXljb25uMicsICdmZHRlc3RfZmR3Jyk7CiAtLSBzaG91 bGQgc3VjY2VlZAotU0VMRUNUIGRibGlua19jb25uZWN0X3UoJ215Y29ubicsICdmZHRlc3QnKTsK LVNFTEVDVCAqIEZST00gZGJsaW5rKCdteWNvbm4nLCdTRUxFQ1QgKiBGUk9NIGZvbycpIEFTIHQo YSBpbnQsIGIgdGV4dCwgYyB0ZXh0W10pOworU0VMRUNUIGRibGlua19jb25uZWN0X3UoJ215Y29u bjEnLCAnZmR0ZXN0X2ZjbycpOworU0VMRUNUIGRibGlua19jb25uZWN0X3UoJ215Y29ubjInLCAn ZmR0ZXN0X2ZkdycpOworU0VMRUNUICogRlJPTSBkYmxpbmsoJ215Y29ubjEnLCdTRUxFQ1QgKiBG Uk9NIGZvbycpIEFTIHQoYSBpbnQsIGIgdGV4dCwgYyB0ZXh0W10pOworU0VMRUNUICogRlJPTSBk YmxpbmsoJ215Y29ubjInLCdTRUxFQ1QgKiBGUk9NIGZvbycpIEFTIHQoYSBpbnQsIGIgdGV4dCwg YyB0ZXh0W10pOwogCiBcYyAtIC0KLVJFVk9LRSBVU0FHRSBPTiBGT1JFSUdOIFNFUlZFUiBmZHRl c3QgRlJPTSByZWdyZXNzX2RibGlua191c2VyOworUkVWT0tFIFVTQUdFIE9OIEZPUkVJR04gU0VS VkVSIGZkdGVzdF9mY28gRlJPTSByZWdyZXNzX2RibGlua191c2VyOworUkVWT0tFIFVTQUdFIE9O IEZPUkVJR04gU0VSVkVSIGZkdGVzdF9mZHcgRlJPTSByZWdyZXNzX2RibGlua191c2VyOwogUkVW T0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gZGJsaW5rX2Nvbm5lY3RfdSh0ZXh0LCB0ZXh0KSBGUk9N IHJlZ3Jlc3NfZGJsaW5rX3VzZXI7CiBEUk9QIFVTRVIgcmVncmVzc19kYmxpbmtfdXNlcjsKLURS T1AgVVNFUiBNQVBQSU5HIEZPUiBwdWJsaWMgU0VSVkVSIGZkdGVzdDsKLURST1AgU0VSVkVSIGZk dGVzdDsKK0RST1AgVVNFUiBNQVBQSU5HIEZPUiBwdWJsaWMgU0VSVkVSIGZkdGVzdF9mY287CitE Uk9QIFVTRVIgTUFQUElORyBGT1IgcHVibGljIFNFUlZFUiBmZHRlc3RfZmR3OworRFJPUCBTRVJW RVIgZmR0ZXN0X2ZjbzsKK0RST1AgU0VSVkVSIGZkdGVzdF9mZHc7CiAKIC0tIHNob3VsZCBmYWls CiBBTFRFUiBGT1JFSUdOIERBVEEgV1JBUFBFUiBkYmxpbmtfZmR3IE9QVElPTlMgKG5vbmV4aXN0 ZW50ICdmZHcnKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bv c3RncmVzX2Zkdy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19m ZHcub3V0CmluZGV4IDc3ZGY3ZWI4ZTQuLjA4ODdmNDQ1ZjUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0 Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtMjcxNywxMCArMjcxNywxMCBA QCBBTFRFUiBGT1JFSUdOIFRBQkxFIGZ0NCBPUFRJT05TIChBREQgdXNlX3JlbW90ZV9lc3RpbWF0 ZSAndHJ1ZScpOwogLS0gcmVncmVzc192aWV3X293bmVyX2Fub3RoZXIsIHRoZSB2aWV3IG93bmVy LCB0aG91Z2ggaXQgZmFpbHMgYXMgZXhwZWN0ZWQKIC0tIGR1ZSB0byB0aGUgbGFjayBvZiBhIHVz ZXIgbWFwcGluZyBmb3IgdGhhdCB1c2VyLgogRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBT RUxFQ1QgKiBGUk9NIHY0OwotRVJST1I6ICB1c2VyIG1hcHBpbmcgbm90IGZvdW5kIGZvciAicmVn cmVzc192aWV3X293bmVyX2Fub3RoZXIiCitFUlJPUjogIHVzZXIgbWFwcGluZyBub3QgZm91bmQg Zm9yIHNlcnZlciAibG9vcGJhY2siIGFuZCB1c2VyICJyZWdyZXNzX3ZpZXdfb3duZXJfYW5vdGhl ciIKIC0tIExpa2V3aXNlLCBidXQgd2l0aCB0aGUgcXVlcnkgdW5kZXIgYW4gVU5JT04gQUxMCiBF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gKFNFTEVDVCAqIEZST00g djQgVU5JT04gQUxMIFNFTEVDVCAqIEZST00gdjQpOwotRVJST1I6ICB1c2VyIG1hcHBpbmcgbm90 IGZvdW5kIGZvciAicmVncmVzc192aWV3X293bmVyX2Fub3RoZXIiCitFUlJPUjogIHVzZXIgbWFw cGluZyBub3QgZm91bmQgZm9yIHNlcnZlciAibG9vcGJhY2siIGFuZCB1c2VyICJyZWdyZXNzX3Zp ZXdfb3duZXJfYW5vdGhlciIKIC0tIFNob3VsZCBub3QgZ2V0IHRoYXQgZXJyb3Igb25jZSBhIHVz ZXIgbWFwcGluZyBpcyBjcmVhdGVkCiBDUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiByZWdyZXNzX3Zp ZXdfb3duZXJfYW5vdGhlciBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAocGFzc3dvcmRfcmVxdWly ZWQgJ2ZhbHNlJyk7CiBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00g djQ7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGJsaW5rLnNnbWwgYi9kb2Mvc3JjL3NnbWwv ZGJsaW5rLnNnbWwKaW5kZXggN2QyNWYyNGY0OS4uYTM0ZDdlNjBjNCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2RibGluay5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kYmxpbmsuc2dtbApAQCAt NTQsMTIgKzU0LDExIEBAIGRibGlua19jb25uZWN0KHRleHQgY29ubm5hbWUsIHRleHQgY29ubnN0 cikgcmV0dXJucyB0ZXh0CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgotICAgIFRoZSBjb25uZWN0 aW9uIHN0cmluZyBtYXkgYWxzbyBiZSB0aGUgbmFtZSBvZiBhbiBleGlzdGluZyBmb3JlaWduCi0g ICAgc2VydmVyLiAgSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBmb3JlaWduLWRhdGEgd3Jh cHBlcgotICAgIDxsaXRlcmFsPmRibGlua19mZHc8L2xpdGVyYWw+IHdoZW4gZGVmaW5pbmcgdGhl IGZvcmVpZ24KLSAgICBzZXJ2ZXIuICBTZWUgdGhlIGV4YW1wbGUgYmVsb3csIGFzIHdlbGwgYXMK LSAgICA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlc2VydmVyIi8+IGFuZAotICAgIDx4cmVmIGxp bmtlbmQ9InNxbC1jcmVhdGV1c2VybWFwcGluZyIvPi4KKyAgICBUaGUgY29ubmVjdGlvbiBzdHJp bmcgbWF5IGFsc28gYmUgdGhlIG5hbWUgb2YgYW4gZXhpc3RpbmcgZm9yZWlnbiBzZXJ2ZXIuCisg ICAgSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZSBmb3JlaWduLWRhdGEgd3JhcHBlcgorICAg IDxsaXRlcmFsPmRibGlua19mZHc8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPkZPUiBDT05ORUNUSU9O IE9OTFk8L2xpdGVyYWw+CisgICAgd2hlbiBkZWZpbmluZyB0aGUgZm9yZWlnbiBzZXJ2ZXIuICBT ZWUgdGhlIGV4YW1wbGUgYmVsb3csIGFzIHdlbGwgYXMgPHhyZWYKKyAgICBsaW5rZW5kPSJzcWwt Y3JlYXRlc2VydmVyIi8+IGFuZCA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRldXNlcm1hcHBpbmci Lz4uCiAgICA8L3BhcmE+CiAKICAgPC9yZWZzZWN0MT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1 YnNjcmlwdGlvbi5zZ21sCmluZGV4IGE4NWUwNGU0ZDYuLjhmM2QxM2QxYWEgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjEsNiArMjEsNyBAQCBQb3N0Z3Jl U1FMIGRvY3VtZW50YXRpb24KIAogIDxyZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4KK0FMVEVS IFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFj ZWFibGU+IFNFUlZFUiA8cmVwbGFjZWFibGU+c2VydmVybmFtZTwvcmVwbGFjZWFibGU+CiBBTFRF UiBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxh Y2VhYmxlPiBDT05ORUNUSU9OICc8cmVwbGFjZWFibGU+Y29ubmluZm88L3JlcGxhY2VhYmxlPicK IEFMVEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwv cmVwbGFjZWFibGU+IFNFVCBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cHVibGljYXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBXSVRIICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29wdGlvbjwvcmVwbGFjZWFibGU+ IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBb LCAuLi4gXSApIF0KIEFMVEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IEFERCBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gWyBX SVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnB1YmxpY2F0aW9uX29wdGlvbjwv cmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVw bGFjZWFibGU+XSBbLCAuLi4gXSApIF0KQEAgLTk0LDEzICs5NSwyNCBAQCBBTFRFUiBTVUJTQ1JJ UFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBS RU5BTUUgVE8gPAogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5TRVJWRVIgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnNlcnZlcm5hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rlcm0+Cisg ICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgY2xhdXNlIHJlcGxhY2VzIHRo ZSBmb3JlaWduIHNlcnZlciBvciBjb25uZWN0aW9uIHN0cmluZyBvcmlnaW5hbGx5CisgICAgICBz ZXQgYnkgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbiIvPiB3aXRoIHRoZSBm b3JlaWduIHNlcnZlcgorICAgICAgPHJlcGxhY2VhYmxlPnNlcnZlcm5hbWU8L3JlcGxhY2VhYmxl Pi4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwog ICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5DT05ORUNUSU9OICc8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29ubmluZm88L3JlcGxhY2VhYmxlPic8L2xpdGVyYWw+ PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGlzIGNsYXVzZSBy ZXBsYWNlcyB0aGUgY29ubmVjdGlvbiBzdHJpbmcgb3JpZ2luYWxseSBzZXQgYnkKLSAgICAgIDx4 cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24iLz4uICBTZWUgdGhlcmUgZm9yIG1v cmUKLSAgICAgIGluZm9ybWF0aW9uLgorICAgICAgVGhpcyBjbGF1c2UgcmVwbGFjZXMgdGhlIGZv cmVpZ24gc2VydmVyIG9yIGNvbm5lY3Rpb24gc3RyaW5nIG9yaWdpbmFsbHkKKyAgICAgIHNldCBi eSA8eHJlZiBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uIi8+IHdpdGggdGhlIGNvbm5l Y3Rpb24KKyAgICAgIHN0cmluZyA8cmVwbGFjZWFibGU+Y29ubmluZm88L3JlcGxhY2VhYmxlPi4K ICAgICAgPC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3NlcnZlci5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfc2VydmVyLnNnbWwKaW5kZXggYWYwYTdhMDZmZC4uZTU4MzRkMWUzOSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc2VydmVyLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfc2VydmVyLnNnbWwKQEAgLTIyLDcgKzIyLDcgQEAgUG9zdGdyZVNR TCBkb2N1bWVudGF0aW9uCiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgogQ1JFQVRFIFNF UlZFUiBbIElGIE5PVCBFWElTVFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c2Vy dmVyX25hbWU8L3JlcGxhY2VhYmxlPiBbIFRZUEUgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5zZXJ2ZXJfdHlwZTwvcmVwbGFjZWFibGU+JyBdIFsgVkVSU0lPTiAnPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnNlcnZlcl92ZXJzaW9uPC9yZXBsYWNlYWJsZT4nIF0KLSAgICBG T1JFSUdOIERBVEEgV1JBUFBFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZmR3X25h bWU8L3JlcGxhY2VhYmxlPgorICAgIHsgRk9SIENPTk5FQ1RJT04gT05MWSB8IEZPUkVJR04gREFU QSBXUkFQUEVSIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5mZHdfbmFtZTwvcmVwbGFj ZWFibGU+IH0KICAgICBbIE9QVElPTlMgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ b3B0aW9uPC9yZXBsYWNlYWJsZT4gJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1 ZTwvcmVwbGFjZWFibGU+JyBbLCAuLi4gXSApIF0KIDwvc3lub3BzaXM+CiAgPC9yZWZzeW5vcHNp c2Rpdj4KQEAgLTU3LDYgKzU3LDIyIEBAIENSRUFURSBTRVJWRVIgWyBJRiBOT1QgRVhJU1RTIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlcnZlcl9uYW1lPC9yZXBsCiAKICAgPHZh cmlhYmxlbGlzdD4KICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5GT1IgQ09O TkVDVElPTiBPTkxZPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgQ3JlYXRlIGEgZm9yZWlnbiBzZXJ2ZXIgdGhhdCBjYW4gYmUgdXNlZCBieSA8eHJl ZgorICAgICAgbGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbiIvPiwgb3IgZm9yIG90aGVy IHB1cnBvc2VzIHRoYXQgbmVlZCBvbmx5CisgICAgICB0aGUgUG9zdGdyZVNRTCBjb25uZWN0aW9u IGluZm9ybWF0aW9uLCBzdWNoIGFzIDx4cmVmCisgICAgICBsaW5rZW5kPSJkYmxpbmsiLz4uIFRo aXMgZm9yZWlnbiBzZXJ2ZXIgbWF5IG5vdCBiZSB1c2VkIGJ5IGEgZm9yZWlnbgorICAgICAgdGFi bGUuCisgICAgIDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBTZWUgPHhyZWYgbGlua2VuZD0i c2VydmVyLWNvbm5lY3Rpb24tb25seS1vcHRpb25zIi8+IGZvciBkZXRhaWxzLgorICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVu dHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPklGIE5PVCBFWElTVFM8L2xpdGVyYWw+PC90ZXJtPgog ICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CkBAIC0xMTMsNiArMTI5LDEwIEBAIENSRUFURSBT RVJWRVIgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNl cnZlcl9uYW1lPC9yZXBsCiAgICAgICBhY3R1YWwgbmFtZXMgYW5kIHZhbHVlcyBhcmUgZGVwZW5k ZW50IG9uIHRoZSBzZXJ2ZXIncwogICAgICAgZm9yZWlnbi1kYXRhIHdyYXBwZXIuCiAgICAgIDwv cGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBJZiA8bGl0ZXJhbD5GT1IgQ09OTkVDVElPTiBPTkxZ PC9saXRlcmFsPiBpcyBzcGVjaWZpZWQsIHNlZSA8eHJlZgorICAgICAgbGlua2VuZD0ic2VydmVy LWNvbm5lY3Rpb24tb25seS1vcHRpb25zIi8+IGZvciBhdmFpbGFibGUgb3B0aW9ucy4KKyAgICAg PC9wYXJhPgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KICAgPC92YXJpYWJs ZWxpc3Q+CkBAIC0xMjEsMTQgKzE0MSw0NCBAQCBDUkVBVEUgU0VSVkVSIFsgSUYgTk9UIEVYSVNU UyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXJ2ZXJfbmFtZTwvcmVwbAogIDxy ZWZzZWN0MT4KICAgPHRpdGxlPk5vdGVzPC90aXRsZT4KIAotICA8cGFyYT4KLSAgIFdoZW4gdXNp bmcgdGhlIDx4cmVmIGxpbmtlbmQ9ImRibGluayIvPiBtb2R1bGUsCi0gICBhIGZvcmVpZ24gc2Vy dmVyJ3MgbmFtZSBjYW4gYmUgdXNlZAotICAgYXMgYW4gYXJndW1lbnQgb2YgdGhlIDx4cmVmIGxp bmtlbmQ9ImNvbnRyaWItZGJsaW5rLWNvbm5lY3QiLz4KLSAgIGZ1bmN0aW9uIHRvIGluZGljYXRl IHRoZSBjb25uZWN0aW9uIHBhcmFtZXRlcnMuICBJdCBpcyBuZWNlc3NhcnkgdG8gaGF2ZQotICAg dGhlIDxsaXRlcmFsPlVTQUdFPC9saXRlcmFsPiBwcml2aWxlZ2Ugb24gdGhlIGZvcmVpZ24gc2Vy dmVyIHRvIGJlCi0gICBhYmxlIHRvIHVzZSBpdCBpbiB0aGlzIHdheS4KLSAgPC9wYXJhPgorICA8 cmVmc2VjdDIgaWQ9InNlcnZlci1jb25uZWN0aW9uLW9ubHktb3B0aW9ucyIgeHJlZmxhYmVsPSJG T1IgQ09OTkVDVElPTiBPTkxZIE9wdGlvbnMiPgorICAgPHRpdGxlPjxsaXRlcmFsPkZPUiBDT05O RUNUSU9OIE9OTFk8L2xpdGVyYWw+IE9wdGlvbnM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBB IGZvcmVpZ24gc2VydmVyIGRlZmluZWQgd2l0aCA8bGl0ZXJhbD5GT1IgQ09OTkVDVElPTiBPTkxZ PC9saXRlcmFsPgorICAgIGNhbiBoYXZlIHRoZSBzYW1lIG9wdGlvbnMgdGhhdCA8YXBwbGljYXRp b24+bGlicHE8L2FwcGxpY2F0aW9uPiBhY2NlcHRzIGluCisgICAgY29ubmVjdGlvbiBzdHJpbmdz LCBhcyBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0ibGlicHEtcGFyYW1rZXl3b3JkcyIvPiwK KyAgICBleGNlcHQgdGhhdCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgY2Fubm90IGJlIHNldDoKKwor ICAgIDxpdGVtaXplZGxpc3Qgc3BhY2luZz0iY29tcGFjdCI+CisgICAgIDxsaXN0aXRlbT4KKyAg ICAgIDxwYXJhPgorICAgICAgIDxsaXRlcmFsPnVzZXI8L2xpdGVyYWw+LCA8bGl0ZXJhbD5wYXNz d29yZDwvbGl0ZXJhbD4gYW5kCisgICAgICAgPGxpdGVyYWw+c3NscGFzc3dvcmQ8L2xpdGVyYWw+ IC0gdGhlc2UgbXVzdCBpbnN0ZWFkIGJlIHNldCBvbiB0aGUKKyAgICAgICBhc3NvY2lhdGVkIHVz ZXIgbWFwcGluZy4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICAgPGxpc3Rp dGVtPgorICAgICAgPHBhcmE+CisgICAgICAgPGxpdGVyYWw+Y2xpZW50X2VuY29kaW5nPC9saXRl cmFsPiAtIHdpbGwgYWx3YXlzIGJlIHRoZSBzYW1lIGFzIHRoZQorICAgICAgIGRhdGFiYXNlIGVu Y29kaW5nLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvaXRlbWl6ZWRs aXN0PgorICAgPC9wYXJhPgorICA8L3JlZnNlY3QyPgorCisgIDxyZWZzZWN0Mj4KKyAgIDx0aXRs ZT5Vc2Ugd2l0aCBkYmxpbms8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBXaGVuIHVzaW5nIHRo ZSA8eHJlZiBsaW5rZW5kPSJkYmxpbmsiLz4gbW9kdWxlLCBhIGZvcmVpZ24gc2VydmVyJ3MgbmFt ZQorICAgIGNhbiBiZSB1c2VkIGFzIGFuIGFyZ3VtZW50IG9mIHRoZSA8eHJlZiBsaW5rZW5kPSJj b250cmliLWRibGluay1jb25uZWN0Ii8+CisgICAgZnVuY3Rpb24gdG8gaW5kaWNhdGUgdGhlIGNv bm5lY3Rpb24gcGFyYW1ldGVycy4gIEl0IGlzIG5lY2Vzc2FyeSB0byBoYXZlCisgICAgdGhlIDxs aXRlcmFsPlVTQUdFPC9saXRlcmFsPiBwcml2aWxlZ2Ugb24gdGhlIGZvcmVpZ24gc2VydmVyIHRv IGJlIGFibGUgdG8KKyAgICB1c2UgaXQgaW4gdGhpcyB3YXkuCisgICA8L3BhcmE+CisgIDwvcmVm c2VjdDI+CiAgPC9yZWZzZWN0MT4KIAogIDxyZWZzZWN0MT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggNzE2NTJmZDkxOC4uNTViNWY2MjljZCAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIyLDcgKzIyLDcgQEAg UG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgog Q1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2Ny aXB0aW9uX25hbWU8L3JlcGxhY2VhYmxlPgotICAgIENPTk5FQ1RJT04gJzxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5jb25uaW5mbzwvcmVwbGFjZWFibGU+JworICAgIHsgU0VSVkVSIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zZXJ2ZXJuYW1lPC9yZXBsYWNlYWJsZT4gfCBD T05ORUNUSU9OICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29ubmluZm88L3JlcGxh Y2VhYmxlPicgfQogICAgIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5wdWJsaWNhdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXQogICAgIFsgV0lUSCAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fcGFyYW1ldGVyPC9yZXBs YWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNl YWJsZT5dIFssIC4uLiBdICkgXQogPC9zeW5vcHNpcz4KQEAgLTc3LDYgKzc3LDE3IEBAIENSRUFU RSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlv bl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5Pgog CisgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uLXNlcnZlciI+Cisg ICAgPHRlcm0+PGxpdGVyYWw+U0VSVkVSIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z ZXJ2ZXJuYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4K KyAgICAgPHBhcmE+CisgICAgICBUaGUgZm9yZWlnbiBzZXJ2ZXIgdG8gdXNlIGZvciBjb25uZWN0 aW5nIHRvIHRoZSBwdWJsaXNoZXIgZGF0YWJhc2UsCisgICAgICB3aGljaCBtdXN0IGhhdmUgPGxp dGVyYWw+Rk9SIENPTk5FQ1RJT04gT05MWTwvbGl0ZXJhbD4gc3BlY2lmaWVkLiBTZWUKKyAgICAg IDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGVzZXJ2ZXIiLz4gZm9yIGRldGFpbHMuCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0 ZW50cnkgaWQ9InNxbC1jcmVhdGVzdWJzY3JpcHRpb24tY29ubmVjdGlvbiI+CiAgICAgPHRlcm0+ PGxpdGVyYWw+Q09OTkVDVElPTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbm5p bmZvPC9yZXBsYWNlYWJsZT4nPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CkBAIC0z NjMsNiArMzc0LDEwIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgVGhlIGRl ZmF1bHQgaXMgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4uIE9ubHkgc3VwZXJ1c2VycyBjYW4gc2V0 CiAgICAgICAgICAgdGhpcyB2YWx1ZSB0byA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4uCiAgICAg ICAgICA8L3BhcmE+CisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBPbmx5IGFsbG93ZWQgd2hl biA8bGl0ZXJhbD5DT05ORUNUSU9OPC9saXRlcmFsPiBpcworICAgICAgICAgIHNwZWNpZmllZC4g T3RoZXJ3aXNlLCBzZWUgPHhyZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXVzZXJtYXBwaW5nIi8+Lgor ICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVu dHJ5PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV91c2VyX21hcHBpbmcu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3VzZXJfbWFwcGluZy5zZ21sCmluZGV4IDU1 ZGViZDU0MDEuLjBlNDg2ODkwYWEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3VzZXJfbWFwcGluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3VzZXJfbWFw cGluZy5zZ21sCkBAIC05OSw2ICs5OSw4MSBAQCBDUkVBVEUgVVNFUiBNQVBQSU5HIFsgSUYgTk9U IEVYSVNUUyBdIEZPUiB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj51c2VyXwogICA8 L3ZhcmlhYmxlbGlzdD4KICA8L3JlZnNlY3QxPgogCisgPHJlZnNlY3QxPgorICA8dGl0bGU+Tm90 ZXM8L3RpdGxlPgorCisgIDxyZWZzZWN0MiBpZD0idXNlcm1hcHBpbmctY29ubmVjdGlvbi1vbmx5 LW9wdGlvbnMiIHhyZWZsYWJlbD0iRk9SIENPTk5FQ1RJT04gT05MWSBPcHRpb25zIj4KKyAgIDx0 aXRsZT48bGl0ZXJhbD5GT1IgQ09OTkVDVElPTiBPTkxZPC9saXRlcmFsPiBPcHRpb25zPC90aXRs ZT4KKworICAgPHBhcmE+CisgICAgSWYgPHJlcGxhY2VhYmxlPnNlcnZlcm5hbWU8L3JlcGxhY2Vh YmxlPiBpcyBzcGVjaWZpZWQgYXMgPGxpdGVyYWw+Rk9SCisgICAgQ09OTkVDVElPTiBPTkxZPC9s aXRlcmFsPiwgdGhlIHVzZXIgbWFwcGluZyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIG9wdGlvbnM6 CisKKyAgICA8aXRlbWl6ZWRsaXN0IHNwYWNpbmc9ImNvbXBhY3QiPgorICAgICA8bGlzdGl0ZW0+ CisgICAgICA8cGFyYT4KKyAgICAgICA8bGl0ZXJhbD51c2VyPC9saXRlcmFsPiwgPGxpdGVyYWw+ cGFzc3dvcmQ8L2xpdGVyYWw+IGFuZAorICAgICAgIDxsaXRlcmFsPnNzbHBhc3N3b3JkPC9saXRl cmFsPiAtIHRoZXNlIG9wdGlvbnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzCisgICAgICAgZGVz Y3JpYmVkIGluIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLXBhcmFta2V5d29yZHMiLz4uCisgICAgICA8 L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgor ICAgICAgIDxsaXRlcmFsPnNzbGtleTwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPnNzbGNlcnQ8L2xp dGVyYWw+IC0gdGhlc2UgaGF2ZQorICAgICAgIHRoZSBzYW1lIG1lYW5pbmcgYXMgZGVzY3JpYmVk IGluIGFzIGRlc2NyaWJlZCBpbiA8eHJlZgorICAgICAgIGxpbmtlbmQ9ImxpYnBxLXBhcmFta2V5 d29yZHMiLz4sIGFuZCBvdmVycmlkZSBhbnkgc2V0dGluZ3Mgb2YgdGhlIHNhbWUKKyAgICAgICBu YW1lIGluIDxyZXBsYWNlYWJsZT5zZXJ2ZXJuYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgICA8L3Bh cmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAg ICAgIDxsaXRlcmFsPnBhc3N3b3JkX3JlcXVpcmVkPC9saXRlcmFsPiBtZWFucyB0aGF0IHRoaXMg dXNlciBtYXBwaW5nIG11c3QKKyAgICAgICBzcGVjaWZ5IHRoZSA8bGl0ZXJhbD5wYXNzd29yZDwv bGl0ZXJhbD4gb3B0aW9uLiBUaGUKKyAgICAgICA8bGl0ZXJhbD5wYXNzd29yZF9yZXF1aXJlZDwv bGl0ZXJhbD4gb3B0aW9uIGRlZmF1bHRzIHRvCisgICAgICAgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJh bD4gYW5kIGNhbiBvbmx5IGJlIHNldCB0byA8bGl0ZXJhbD5mYWxzZTwvbGl0ZXJhbD4KKyAgICAg ICBieSBhIHN1cGVydXNlci4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8 L2l0ZW1pemVkbGlzdD4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgT25seSBzdXBlcnVz ZXJzIG1heSBjcmVhdGUgb3IgbW9kaWZ5IHVzZXIgbWFwcGluZ3Mgd2l0aCB0aGUKKyAgICA8bGl0 ZXJhbD5zc2xjZXJ0PC9saXRlcmFsPiBvciA8bGl0ZXJhbD5zc2xrZXk8L2xpdGVyYWw+IHNldHRp bmdzLgorICAgPC9wYXJhPgorICAgPHBhcmE+CisgICAgTm9uLXN1cGVydXNlcnMgbWF5IGNvbm5l Y3QgdG8gZm9yZWlnbiBzZXJ2ZXJzIHVzaW5nIHBhc3N3b3JkCisgICAgYXV0aGVudGljYXRpb24g b3Igd2l0aCBHU1NBUEkgZGVsZWdhdGVkIGNyZWRlbnRpYWxzLCBzbyBzcGVjaWZ5IHRoZQorICAg IDxsaXRlcmFsPnBhc3N3b3JkPC9saXRlcmFsPiBvcHRpb24gZm9yIHVzZXIgbWFwcGluZ3MgYmVs b25naW5nIHRvCisgICAgbm9uLXN1cGVydXNlcnMgd2hlcmUgcGFzc3dvcmQgYXV0aGVudGljYXRp b24gaXMgcmVxdWlyZWQuCisgICA8L3BhcmE+CisgICA8cGFyYT4KKyAgICBBIHN1cGVydXNlciBt YXkgb3ZlcnJpZGUgdGhpcyBjaGVjayBvbiBhIHBlci11c2VyLW1hcHBpbmcgYmFzaXMgYnkgc2V0 dGluZworICAgIHRoZSB1c2VyIG1hcHBpbmcgb3B0aW9uIDxsaXRlcmFsPnBhc3N3b3JkX3JlcXVp cmVkICdmYWxzZSc8L2xpdGVyYWw+LCBlLmcuLAorPHByb2dyYW1saXN0aW5nPgorQUxURVIgVVNF UiBNQVBQSU5HIEZPUiBzb21lX25vbl9zdXBlcnVzZXIgU0VSVkVSIGxvb3BiYWNrX25vcHcKK09Q VElPTlMgKEFERCBwYXNzd29yZF9yZXF1aXJlZCAnZmFsc2UnKTsKKzwvcHJvZ3JhbWxpc3Rpbmc+ CisgICAgVG8gcHJldmVudCB1bnByaXZpbGVnZWQgdXNlcnMgZnJvbSBleHBsb2l0aW5nIHRoZSBh dXRoZW50aWNhdGlvbiByaWdodHMKKyAgICBvZiB0aGUgdW5peCB1c2VyIHRoZSBwb3N0Z3JlcyBz ZXJ2ZXIgaXMgcnVubmluZyBhcyB0byBlc2NhbGF0ZSB0byBzdXBlcnVzZXIKKyAgICByaWdodHMs IG9ubHkgdGhlIHN1cGVydXNlciBtYXkgc2V0IHRoaXMgb3B0aW9uIG9uIGEgdXNlciBtYXBwaW5n LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICBDYXJlIGlzIHJlcXVpcmVkIHRvIGVuc3Vy ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWxsb3cgdGhlIG1hcHBlZAorICAgIHVzZXIgdGhlIGFiaWxp dHkgdG8gY29ubmVjdCBhcyBzdXBlcnVzZXIgdG8gdGhlIG1hcHBlZCBkYXRhYmFzZSBwZXIKKyAg ICBDVkUtMjAwNy0zMjc4IGFuZCBDVkUtMjAwNy02NjAxLiBEb24ndCBzZXQKKyAgICA8bGl0ZXJh bD5wYXNzd29yZF9yZXF1aXJlZD1mYWxzZTwvbGl0ZXJhbD4KKyAgICBvbiB0aGUgPGxpdGVyYWw+ cHVibGljPC9saXRlcmFsPiByb2xlLiBLZWVwIGluIG1pbmQgdGhhdCB0aGUgbWFwcGVkCisgICAg dXNlciBjYW4gcG90ZW50aWFsbHkgdXNlIGFueSBjbGllbnQgY2VydGlmaWNhdGVzLAorICAgIDxm aWxlbmFtZT4ucGdwYXNzPC9maWxlbmFtZT4sCisgICAgPGZpbGVuYW1lPi5wZ19zZXJ2aWNlLmNv bmY8L2ZpbGVuYW1lPiBldGMuIGluIHRoZSB1bml4IGhvbWUgZGlyZWN0b3J5IG9mIHRoZQorICAg IHN5c3RlbSB1c2VyIHRoZSBwb3N0Z3JlcyBzZXJ2ZXIgcnVucyBhcy4gVGhleSBjYW4gYWxzbyB1 c2UgYW55IHRydXN0CisgICAgcmVsYXRpb25zaGlwIGdyYW50ZWQgYnkgYXV0aGVudGljYXRpb24g bW9kZXMgbGlrZSA8bGl0ZXJhbD5wZWVyPC9saXRlcmFsPgorICAgIG9yIDxsaXRlcmFsPmlkZW50 PC9saXRlcmFsPiBhdXRoZW50aWNhdGlvbi4KKyAgIDwvcGFyYT4KKyAgPC9yZWZzZWN0Mj4KKyA8 L3JlZnNlY3QxPgorCiAgPHJlZnNlY3QxPgogICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgogCmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvdXNlci1tYW5hZy5zZ21sIGIvZG9jL3NyYy9zZ21sL3Vz ZXItbWFuYWcuc2dtbAppbmRleCAyN2MxZjNkNzAzLi5lMTkxZDc1OWI1IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvdXNlci1tYW5hZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC91c2VyLW1hbmFn LnNnbWwKQEAgLTY4OCwxMSArNjg4LDIwIEBAIERST1AgUk9MRSBkb29tZWRfcm9sZTsKICAgICAg ICA8ZW50cnk+QWxsb3cgdXNlIG9mIGNvbm5lY3Rpb24gc2xvdHMgcmVzZXJ2ZWQgdmlhCiAgICAg ICAgPHhyZWYgbGlua2VuZD0iZ3VjLXJlc2VydmVkLWNvbm5lY3Rpb25zIi8+LjwvZW50cnk+CiAg ICAgICA8L3Jvdz4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5PnBnX2NyZWF0ZV9jb25uZWN0 aW9uPC9lbnRyeT4KKyAgICAgICA8ZW50cnk+QWxsb3cgdXNlcnMgd2l0aCA8bGl0ZXJhbD5DUkVB VEU8L2xpdGVyYWw+IHBlcm1pc3Npb24gb24gdGhlCisgICAgICAgZGF0YWJhc2UgdG8gaXNzdWUg PGxpbmsgbGlua2VuZD0ic3FsLWNyZWF0ZXNlcnZlciI+PGNvbW1hbmQ+Q1JFQVRFCisgICAgICAg U0VSVkVSPC9jb21tYW5kPjwvbGluaz4gaWYgPGxpdGVyYWw+Rk9SIENPTk5FQ1RJT04gT05MWTwv bGl0ZXJhbD4gaXMKKyAgICAgICBzcGVjaWZpZWQuPC9lbnRyeT4KKyAgICAgIDwvcm93PgogICAg ICAgPHJvdz4KICAgICAgICA8ZW50cnk+cGdfY3JlYXRlX3N1YnNjcmlwdGlvbjwvZW50cnk+CiAg ICAgICAgPGVudHJ5PkFsbG93IHVzZXJzIHdpdGggPGxpdGVyYWw+Q1JFQVRFPC9saXRlcmFsPiBw ZXJtaXNzaW9uIG9uIHRoZQotICAgICAgIGRhdGFiYXNlIHRvIGlzc3VlCi0gICAgICAgPGxpbmsg bGlua2VuZD0ic3FsLWNyZWF0ZXN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+Q1JFQVRFIFNVQlNDUklQ VElPTjwvY29tbWFuZD48L2xpbms+LjwvZW50cnk+CisgICAgICAgZGF0YWJhc2UgdG8gaXNzdWUg PGxpbmsKKyAgICAgICBsaW5rZW5kPSJzcWwtY3JlYXRlc3Vic2NyaXB0aW9uIj48Y29tbWFuZD5D UkVBVEUKKyAgICAgICBTVUJTQ1JJUFRJT048L2NvbW1hbmQ+PC9saW5rPi4gIFRoaXMgcm9sZSBp cyBhIG1lbWJlciBvZgorICAgICAgIDxsaXRlcmFsPnBnX2NyZWF0ZV9jb25uZWN0aW9uPC9saXRl cmFsPi48L2VudHJ5PgogICAgICAgPC9yb3c+CiAgICAgIDwvdGJvZHk+CiAgICAgPC90Z3JvdXA+ CkBAIC03MzgsNiArNzQ3LDE0IEBAIERST1AgUk9MRSBkb29tZWRfcm9sZTsKICAgZ3JlYXQgY2Fy ZSBzaG91bGQgYmUgdGFrZW4gd2hlbiBncmFudGluZyB0aGVzZSByb2xlcyB0byB1c2Vycy4KICAg PC9wYXJhPgogCisgIDxwYXJhPgorICBUaGUgPGxpdGVyYWw+cGdfY3JlYXRlX3N1YnNjcmlwdGlv bjwvbGl0ZXJhbD4gcm9sZSBpcyBhIG1lbWJlciBvZgorICA8bGl0ZXJhbD5wZ19jcmVhdGVfY29u bmVjdGlvbjwvbGl0ZXJhbD4uIEl0IG1heSBiZSB1c2VmdWwgdG8gcmV2b2tlIHRoYXQKKyAgbWVt YmVyc2hpcCBpbiBvcmRlciB0byBwZXJtaXQgcm9sZXMgdG8gY3JlYXRlIHN1YnNjcmlwdGlvbnMg b25seSB0byBhCisgIGZvcmVpZ24gc2VydmVyLCB3aXRob3V0IGFsbG93aW5nIHRoZW0gdG8gc3Bl Y2lmeSBhIGNvbm5lY3Rpb24gc3RyaW5nCisgIGRpcmVjdGx5LgorICA8L3BhcmE+CisKICAgPHBh cmE+CiAgIENhcmUgc2hvdWxkIGJlIHRha2VuIHdoZW4gZ3JhbnRpbmcgdGhlc2Ugcm9sZXMgdG8g ZW5zdXJlIHRoZXkgYXJlIG9ubHkgdXNlZCB3aGVyZQogICBuZWVkZWQgYW5kIHdpdGggdGhlIHVu ZGVyc3RhbmRpbmcgdGhhdCB0aGVzZSByb2xlcyBncmFudCBhY2Nlc3MgdG8gcHJpdmlsZWdlZApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKaW5kZXggZDA3Zjg4Y2UyOC4uN2JlNjcy NTY1NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC0yMyw2ICsyMyw3 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIK KyNpbmNsdWRlICJmb3JlaWduL2ZvcmVpZ24uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNp bmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKQEAg LTc1LDEwICs3NiwxOCBAQCBHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdf b2spCiAJc3ViLT5ydW5hc293bmVyID0gc3ViZm9ybS0+c3VicnVuYXNvd25lcjsKIAogCS8qIEdl dCBjb25uaW5mbyAqLwotCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChTVUJTQ1JJUFRJ T05PSUQsCi0JCQkJCQkJCSAgIHR1cCwKLQkJCQkJCQkJICAgQW51bV9wZ19zdWJzY3JpcHRpb25f c3ViY29ubmluZm8pOwotCXN1Yi0+Y29ubmluZm8gPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVt KTsKKwlpZiAoT2lkSXNWYWxpZChzdWJmb3JtLT5zdWJzZXJ2ZXIpKQorCXsKKwkJc3ViLT5jb25u aW5mbyA9IEZvcmVpZ25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKHN1YmZvcm0tPnN1Ym93bmVyLAor CQkJCQkJCQkJCQkJCSAgc3ViZm9ybS0+c3Vic2VydmVyKTsKKwl9CisJZWxzZQorCXsKKwkJZGF0 dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKFNVQlNDUklQVElPTk9JRCwKKwkJCQkJCQkJCSAg IHR1cCwKKwkJCQkJCQkJCSAgIEFudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvKTsKKwkJ c3ViLT5jb25uaW5mbyA9IFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pOworCX0KIAogCS8qIEdl dCBzbG90bmFtZSAqLwogCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFNVQlNDUklQVElPTk9JRCwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0aW9ucy5zcWwgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV9mdW5jdGlvbnMuc3FsCmluZGV4IDA3YzBkODljNGYu LjZiZWJlNjg0YTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX2Z1bmN0 aW9ucy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fZnVuY3Rpb25zLnNxbApA QCAtNzQ3LDMgKzc0Nyw1IEBAIEdSQU5UIHBnX3JlYWRfYWxsX3NldHRpbmdzIFRPIHBnX21vbml0 b3I7CiBHUkFOVCBwZ19yZWFkX2FsbF9zdGF0cyBUTyBwZ19tb25pdG9yOwogCiBHUkFOVCBwZ19z dGF0X3NjYW5fdGFibGVzIFRPIHBnX21vbml0b3I7CisKK0dSQU5UIHBnX2NyZWF0ZV9jb25uZWN0 aW9uIFRPIHBnX2NyZWF0ZV9zdWJzY3JpcHRpb247CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy9mb3JlaWduY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZm9yZWlnbmNtZHMu YwppbmRleCAwZWNmZjU0NWE5Li40MWUxMmMzYTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9mb3JlaWduY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2ZvcmVpZ25j bWRzLmMKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL2RlcGVuZGVuY3kuaCIK ICNpbmNsdWRlICJjYXRhbG9nL2luZGV4aW5nLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3Rh Y2Nlc3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2F1dGhpZC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2ZvcmVp Z25fc2VydmVyLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19mb3JlaWduX3RhYmxlLmgiCkBAIC0z NSw2ICszNiw3IEBACiAjaW5jbHVkZSAidGNvcC91dGlsaXR5LmgiCiAjaW5jbHVkZSAidXRpbHMv YWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdy b2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3Jl bC5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCkBAIC04NDMsMTEgKzg0NSwxMiBAQCBD cmVhdGVGb3JlaWduU2VydmVyKENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10ICpzdG10KQogCWJvb2wJ CW51bGxzW05hdHRzX3BnX2ZvcmVpZ25fc2VydmVyXTsKIAlIZWFwVHVwbGUJdHVwbGU7CiAJT2lk CQkJc3J2SWQ7CisJT2lkCQkJZmR3SWQ7CisJT2lkCQkJZmR3dmFsaWRhdG9yOwogCU9pZAkJCW93 bmVySWQ7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAlPYmplY3RBZGRyZXNzIG15c2VsZjsKIAlP YmplY3RBZGRyZXNzIHJlZmVyZW5jZWQ7Ci0JRm9yZWlnbkRhdGFXcmFwcGVyICpmZHc7CiAKIAly ZWwgPSB0YWJsZV9vcGVuKEZvcmVpZ25TZXJ2ZXJSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKIApAQCAtODg1LDE1ICs4ODgsNDIgQEAgQ3JlYXRlRm9yZWlnblNlcnZlcihDcmVhdGVGb3Jl aWduU2VydmVyU3RtdCAqc3RtdCkKIAkJCQkJCQlzdG10LT5zZXJ2ZXJuYW1lKSkpOwogCX0KIAot CS8qCi0JICogQ2hlY2sgdGhhdCB0aGUgRkRXIGV4aXN0cyBhbmQgdGhhdCB3ZSBoYXZlIFVTQUdF IG9uIGl0LiBBbHNvIGdldCB0aGUKLQkgKiBhY3R1YWwgRkRXIGZvciBvcHRpb24gdmFsaWRhdGlv biBldGMuCi0JICovCi0JZmR3ID0gR2V0Rm9yZWlnbkRhdGFXcmFwcGVyQnlOYW1lKHN0bXQtPmZk d25hbWUsIGZhbHNlKTsKKwlpZiAoc3RtdC0+Y29ubmVjdGlvbl9vbmx5KQorCXsKKwkJQXNzZXJ0 KHN0bXQtPmZkd25hbWUgPT0gTlVMTCk7CiAKLQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2so Rm9yZWlnbkRhdGFXcmFwcGVyUmVsYXRpb25JZCwgZmR3LT5mZHdpZCwgb3duZXJJZCwgQUNMX1VT QUdFKTsKLQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQotCQlhY2xjaGVja19lcnJvcihh Y2xyZXN1bHQsIE9CSkVDVF9GRFcsIGZkdy0+ZmR3bmFtZSk7CisJCS8qCisJCSAqIFdlIGRvbid0 IHdhbnQgdG8gYWxsb3cgdW5wcml2aWxlZ2VkIHVzZXJzIHRvIGJlIGFibGUgdG8gdHJpZ2dlcgor CQkgKiBhdHRlbXB0cyB0byBhY2Nlc3MgYXJiaXRyYXJ5IG5ldHdvcmsgZGVzdGluYXRpb25zLCBz byByZXF1aXJlIHRoZSB1c2VyCisJCSAqIHRvIGhhdmUgYmVlbiBzcGVjaWZpY2FsbHkgYXV0aG9y aXplZCB0byBjcmVhdGUgY29ubmVjdGlvbnMuCisJCSAqLworCQlpZiAoIWhhc19wcml2c19vZl9y b2xlKG93bmVySWQsIFJPTEVfUEdfQ1JFQVRFX0NPTk5FQ1RJT04pKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJ IGVycm1zZygicGVybWlzc2lvbiBkZW5pZWQgdG8gY3JlYXRlIHNlcnZlciBjb25uZWN0aW9uIiks CisJCQkJCSBlcnJkZXRhaWwoIk9ubHkgcm9sZXMgd2l0aCBwcml2aWxlZ2VzIG9mIHRoZSBcIiVz XCIgcm9sZSBtYXkgY3JlYXRlIHNlcnZlcnMgRk9SIENPTk5FQ1RJT04gT05MWS4iLAorCQkJCQkJ CSAgICJwZ19jcmVhdGVfY29ubmVjdGlvbiIpKSk7CisKKwkJZmR3SWQgPSBJbnZhbGlkT2lkOwor CQlmZHd2YWxpZGF0b3IgPSBGX1BHX0NPTk5FQ1RJT05fVkFMSURBVE9SOworCX0KKwllbHNlCisJ eworCQkvKgorCQkgKiBDaGVjayB0aGF0IHRoZSBGRFcgZXhpc3RzIGFuZCB0aGF0IHdlIGhhdmUg VVNBR0Ugb24gaXQuIEFsc28gZ2V0CisJCSAqIHRoZSBvcHRpb24gdmFsaWRhdG9yIG9pZC4KKwkJ ICovCisJCUZvcmVpZ25EYXRhV3JhcHBlciAqZmR3ID0gR2V0Rm9yZWlnbkRhdGFXcmFwcGVyQnlO YW1lKHN0bXQtPmZkd25hbWUsCisJCQkJCQkJCQkJCQkJCQkgIGZhbHNlKTsKKworCQlhY2xyZXN1 bHQgPSBvYmplY3RfYWNsY2hlY2soRm9yZWlnbkRhdGFXcmFwcGVyUmVsYXRpb25JZCwgZmR3LT5m ZHdpZCwKKwkJCQkJCQkJCW93bmVySWQsIEFDTF9VU0FHRSk7CisJCWlmIChhY2xyZXN1bHQgIT0g QUNMQ0hFQ0tfT0spCisJCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9GRFcsIGZk dy0+ZmR3bmFtZSk7CisKKwkJZmR3SWQgPSBmZHctPmZkd2lkOworCQlmZHd2YWxpZGF0b3IgPSBm ZHctPmZkd3ZhbGlkYXRvcjsKKwl9CiAKIAkvKgogCSAqIEluc2VydCB0dXBsZSBpbnRvIHBnX2Zv cmVpZ25fc2VydmVyLgpAQCAtOTA3LDcgKzkzNyw3IEBAIENyZWF0ZUZvcmVpZ25TZXJ2ZXIoQ3Jl YXRlRm9yZWlnblNlcnZlclN0bXQgKnN0bXQpCiAJdmFsdWVzW0FudW1fcGdfZm9yZWlnbl9zZXJ2 ZXJfc3J2bmFtZSAtIDFdID0KIAkJRGlyZWN0RnVuY3Rpb25DYWxsMShuYW1laW4sIENTdHJpbmdH ZXREYXR1bShzdG10LT5zZXJ2ZXJuYW1lKSk7CiAJdmFsdWVzW0FudW1fcGdfZm9yZWlnbl9zZXJ2 ZXJfc3J2b3duZXIgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob3duZXJJZCk7Ci0JdmFsdWVzW0Fu dW1fcGdfZm9yZWlnbl9zZXJ2ZXJfc3J2ZmR3IC0gMV0gPSBPYmplY3RJZEdldERhdHVtKGZkdy0+ ZmR3aWQpOworCXZhbHVlc1tBbnVtX3BnX2ZvcmVpZ25fc2VydmVyX3NydmZkdyAtIDFdID0gT2Jq ZWN0SWRHZXREYXR1bShmZHdJZCk7CiAKIAkvKiBBZGQgc2VydmVyIHR5cGUgaWYgc3VwcGxpZWQg Ki8KIAlpZiAoc3RtdC0+c2VydmVydHlwZSkKQEAgLTkzMCw3ICs5NjAsNyBAQCBDcmVhdGVGb3Jl aWduU2VydmVyKENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10ICpzdG10KQogCXNydm9wdGlvbnMgPSB0 cmFuc2Zvcm1HZW5lcmljT3B0aW9ucyhGb3JlaWduU2VydmVyUmVsYXRpb25JZCwKIAkJCQkJCQkJ CQkgUG9pbnRlckdldERhdHVtKE5VTEwpLAogCQkJCQkJCQkJCSBzdG10LT5vcHRpb25zLAotCQkJ CQkJCQkJCSBmZHctPmZkd3ZhbGlkYXRvcik7CisJCQkJCQkJCQkJIGZkd3ZhbGlkYXRvcik7CiAK IAlpZiAoUG9pbnRlcklzVmFsaWQoRGF0dW1HZXRQb2ludGVyKHNydm9wdGlvbnMpKSkKIAkJdmFs dWVzW0FudW1fcGdfZm9yZWlnbl9zZXJ2ZXJfc3J2b3B0aW9ucyAtIDFdID0gc3J2b3B0aW9uczsK QEAgLTk0OCwxMCArOTc4LDEzIEBAIENyZWF0ZUZvcmVpZ25TZXJ2ZXIoQ3JlYXRlRm9yZWlnblNl cnZlclN0bXQgKnN0bXQpCiAJbXlzZWxmLm9iamVjdElkID0gc3J2SWQ7CiAJbXlzZWxmLm9iamVj dFN1YklkID0gMDsKIAotCXJlZmVyZW5jZWQuY2xhc3NJZCA9IEZvcmVpZ25EYXRhV3JhcHBlclJl bGF0aW9uSWQ7Ci0JcmVmZXJlbmNlZC5vYmplY3RJZCA9IGZkdy0+ZmR3aWQ7Ci0JcmVmZXJlbmNl ZC5vYmplY3RTdWJJZCA9IDA7Ci0JcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVu Y2VkLCBERVBFTkRFTkNZX05PUk1BTCk7CisJaWYgKE9pZElzVmFsaWQoZmR3SWQpKQorCXsKKwkJ cmVmZXJlbmNlZC5jbGFzc0lkID0gRm9yZWlnbkRhdGFXcmFwcGVyUmVsYXRpb25JZDsKKwkJcmVm ZXJlbmNlZC5vYmplY3RJZCA9IGZkd0lkOworCQlyZWZlcmVuY2VkLm9iamVjdFN1YklkID0gMDsK KwkJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05P Uk1BTCk7CisJfQogCiAJcmVjb3JkRGVwZW5kZW5jeU9uT3duZXIoRm9yZWlnblNlcnZlclJlbGF0 aW9uSWQsIHNydklkLCBvd25lcklkKTsKIApAQCAtMTAyMiwxMCArMTA1NSwyMCBAQCBBbHRlckZv cmVpZ25TZXJ2ZXIoQWx0ZXJGb3JlaWduU2VydmVyU3RtdCAqc3RtdCkKIAogCWlmIChzdG10LT5v cHRpb25zKQogCXsKLQkJRm9yZWlnbkRhdGFXcmFwcGVyICpmZHcgPSBHZXRGb3JlaWduRGF0YVdy YXBwZXIoc3J2Rm9ybS0+c3J2ZmR3KTsKKwkJT2lkCQkJZmR3dmFsaWRhdG9yOwogCQlEYXR1bQkJ ZGF0dW07CiAJCWJvb2wJCWlzbnVsbDsKIAorCQlpZiAoIU9pZElzVmFsaWQoc3J2Rm9ybS0+c3J2 ZmR3KSkKKwkJeworCQkJZmR3dmFsaWRhdG9yID0gRl9QR19DT05ORUNUSU9OX1ZBTElEQVRPUjsK KwkJfQorCQllbHNlCisJCXsKKwkJCUZvcmVpZ25EYXRhV3JhcHBlciAqZmR3ID0gR2V0Rm9yZWln bkRhdGFXcmFwcGVyKHNydkZvcm0tPnNydmZkdyk7CisJCQlmZHd2YWxpZGF0b3IgPSBmZHctPmZk d3ZhbGlkYXRvcjsKKwkJfQorCiAJCS8qIEV4dHJhY3QgdGhlIGN1cnJlbnQgc3J2b3B0aW9ucyAq LwogCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihGT1JFSUdOU0VSVkVST0lELAogCQkJCQkJCQl0 cCwKQEAgLTEwMzgsNyArMTA4MSw3IEBAIEFsdGVyRm9yZWlnblNlcnZlcihBbHRlckZvcmVpZ25T ZXJ2ZXJTdG10ICpzdG10KQogCQlkYXR1bSA9IHRyYW5zZm9ybUdlbmVyaWNPcHRpb25zKEZvcmVp Z25TZXJ2ZXJSZWxhdGlvbklkLAogCQkJCQkJCQkJCWRhdHVtLAogCQkJCQkJCQkJCXN0bXQtPm9w dGlvbnMsCi0JCQkJCQkJCQkJZmR3LT5mZHd2YWxpZGF0b3IpOworCQkJCQkJCQkJCWZkd3ZhbGlk YXRvcik7CiAKIAkJaWYgKFBvaW50ZXJJc1ZhbGlkKERhdHVtR2V0UG9pbnRlcihkYXR1bSkpKQog CQkJcmVwbF92YWxbQW51bV9wZ19mb3JlaWduX3NlcnZlcl9zcnZvcHRpb25zIC0gMV0gPSBkYXR1 bTsKQEAgLTExMDYsMTAgKzExNDksMTAgQEAgQ3JlYXRlVXNlck1hcHBpbmcoQ3JlYXRlVXNlck1h cHBpbmdTdG10ICpzdG10KQogCUhlYXBUdXBsZQl0dXBsZTsKIAlPaWQJCQl1c2VJZDsKIAlPaWQJ CQl1bUlkOworCU9pZAkJCWZkd3ZhbGlkYXRvcjsKIAlPYmplY3RBZGRyZXNzIG15c2VsZjsKIAlP YmplY3RBZGRyZXNzIHJlZmVyZW5jZWQ7CiAJRm9yZWlnblNlcnZlciAqc3J2OwotCUZvcmVpZ25E YXRhV3JhcHBlciAqZmR3OwogCVJvbGVTcGVjICAgKnJvbGUgPSAoUm9sZVNwZWMgKikgc3RtdC0+ dXNlcjsKIAogCXJlbCA9IHRhYmxlX29wZW4oVXNlck1hcHBpbmdSZWxhdGlvbklkLCBSb3dFeGNs dXNpdmVMb2NrKTsKQEAgLTExNTYsNyArMTE5OSwxNSBAQCBDcmVhdGVVc2VyTWFwcGluZyhDcmVh dGVVc2VyTWFwcGluZ1N0bXQgKnN0bXQpCiAJCQkJCQkJc3RtdC0+c2VydmVybmFtZSkpKTsKIAl9 CiAKLQlmZHcgPSBHZXRGb3JlaWduRGF0YVdyYXBwZXIoc3J2LT5mZHdpZCk7CisJaWYgKCFPaWRJ c1ZhbGlkKHNydi0+ZmR3aWQpKQorCXsKKwkJZmR3dmFsaWRhdG9yID0gRl9QR19DT05ORUNUSU9O X1ZBTElEQVRPUjsKKwl9CisJZWxzZQorCXsKKwkJRm9yZWlnbkRhdGFXcmFwcGVyICpmZHcgPSBH ZXRGb3JlaWduRGF0YVdyYXBwZXIoc3J2LT5mZHdpZCk7CisJCWZkd3ZhbGlkYXRvciA9IGZkdy0+ ZmR3dmFsaWRhdG9yOworCX0KIAogCS8qCiAJICogSW5zZXJ0IHR1cGxlIGludG8gcGdfdXNlcl9t YXBwaW5nLgpAQCAtMTE3NCw3ICsxMjI1LDcgQEAgQ3JlYXRlVXNlck1hcHBpbmcoQ3JlYXRlVXNl ck1hcHBpbmdTdG10ICpzdG10KQogCXVzZW9wdGlvbnMgPSB0cmFuc2Zvcm1HZW5lcmljT3B0aW9u cyhVc2VyTWFwcGluZ1JlbGF0aW9uSWQsCiAJCQkJCQkJCQkJIFBvaW50ZXJHZXREYXR1bShOVUxM KSwKIAkJCQkJCQkJCQkgc3RtdC0+b3B0aW9ucywKLQkJCQkJCQkJCQkgZmR3LT5mZHd2YWxpZGF0 b3IpOworCQkJCQkJCQkJCSBmZHd2YWxpZGF0b3IpOwogCiAJaWYgKFBvaW50ZXJJc1ZhbGlkKERh dHVtR2V0UG9pbnRlcih1c2VvcHRpb25zKSkpCiAJCXZhbHVlc1tBbnVtX3BnX3VzZXJfbWFwcGlu Z191bW9wdGlvbnMgLSAxXSA9IHVzZW9wdGlvbnM7CkBAIC0xMjY3LDcgKzEzMTgsNyBAQCBBbHRl clVzZXJNYXBwaW5nKEFsdGVyVXNlck1hcHBpbmdTdG10ICpzdG10KQogCiAJaWYgKHN0bXQtPm9w dGlvbnMpCiAJewotCQlGb3JlaWduRGF0YVdyYXBwZXIgKmZkdzsKKwkJT2lkCQkJZmR3dmFsaWRh dG9yOwogCQlEYXR1bQkJZGF0dW07CiAJCWJvb2wJCWlzbnVsbDsKIApAQCAtMTI3NSw3ICsxMzI2 LDE1IEBAIEFsdGVyVXNlck1hcHBpbmcoQWx0ZXJVc2VyTWFwcGluZ1N0bXQgKnN0bXQpCiAJCSAq IFByb2Nlc3MgdGhlIG9wdGlvbnMuCiAJCSAqLwogCi0JCWZkdyA9IEdldEZvcmVpZ25EYXRhV3Jh cHBlcihzcnYtPmZkd2lkKTsKKwkJaWYgKCFPaWRJc1ZhbGlkKHNydi0+ZmR3aWQpKQorCQl7CisJ CQlmZHd2YWxpZGF0b3IgPSBGX1BHX0NPTk5FQ1RJT05fVkFMSURBVE9SOworCQl9CisJCWVsc2UK KwkJeworCQkJRm9yZWlnbkRhdGFXcmFwcGVyICpmZHcgPSBHZXRGb3JlaWduRGF0YVdyYXBwZXIo c3J2LT5mZHdpZCk7CisJCQlmZHd2YWxpZGF0b3IgPSBmZHctPmZkd3ZhbGlkYXRvcjsKKwkJfQog CiAJCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKFVTRVJNQVBQSU5HVVNFUlNFUlZFUiwKIAkJCQkJ CQkJdHAsCkBAIC0xMjg4LDcgKzEzNDcsNyBAQCBBbHRlclVzZXJNYXBwaW5nKEFsdGVyVXNlck1h cHBpbmdTdG10ICpzdG10KQogCQlkYXR1bSA9IHRyYW5zZm9ybUdlbmVyaWNPcHRpb25zKFVzZXJN YXBwaW5nUmVsYXRpb25JZCwKIAkJCQkJCQkJCQlkYXR1bSwKIAkJCQkJCQkJCQlzdG10LT5vcHRp b25zLAotCQkJCQkJCQkJCWZkdy0+ZmR3dmFsaWRhdG9yKTsKKwkJCQkJCQkJCQlmZHd2YWxpZGF0 b3IpOwogCiAJCWlmIChQb2ludGVySXNWYWxpZChEYXR1bUdldFBvaW50ZXIoZGF0dW0pKSkKIAkJ CXJlcGxfdmFsW0FudW1fcGdfdXNlcl9tYXBwaW5nX3Vtb3B0aW9ucyAtIDFdID0gZGF0dW07CkBA IC0xNDM3LDYgKzE0OTYsMTIgQEAgQ3JlYXRlRm9yZWlnblRhYmxlKENyZWF0ZUZvcmVpZ25UYWJs ZVN0bXQgKnN0bXQsIE9pZCByZWxpZCkKIAlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQog CQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9GT1JFSUdOX1NFUlZFUiwgc2VydmVy LT5zZXJ2ZXJuYW1lKTsKIAorCWlmICghT2lkSXNWYWxpZChzZXJ2ZXItPmZkd2lkKSkKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJ CQkgZXJybXNnKCJjYW5ub3QgY3JlYXRlIGZvcmVpZ24gdGFibGUgdXNpbmcgc2VydmVyIHRoYXQg aGFzIEZPUiBDT05ORUNUSU9OIE9OTFkgc3BlY2lmaWVkIiksCisJCQkJIGVycmhpbnQoIlVzZSBh IGZvcmVpZ24gc2VydmVyIHRoYXQgaGFzIGEgRk9SRUlHTiBEQVRBIFdSQVBQRVIgc3BlY2lmaWVk IGluc3RlYWQuIikpKTsKKwogCWZkdyA9IEdldEZvcmVpZ25EYXRhV3JhcHBlcihzZXJ2ZXItPmZk d2lkKTsKIAogCS8qCkBAIC0xNDk2LDYgKzE1NjEsMTIgQEAgSW1wb3J0Rm9yZWlnblNjaGVtYShJ bXBvcnRGb3JlaWduU2NoZW1hU3RtdCAqc3RtdCkKIAlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNL X09LKQogCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIE9CSkVDVF9GT1JFSUdOX1NFUlZFUiwg c2VydmVyLT5zZXJ2ZXJuYW1lKTsKIAorCWlmICghT2lkSXNWYWxpZChzZXJ2ZXItPmZkd2lkKSkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBF KSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgaW1wb3J0IGZvcmVpZ24gc2NoZW1hIHVzaW5nIHNlcnZl ciB0aGF0IGhhcyBGT1IgQ09OTkVDVElPTiBPTkxZIHNwZWNpZmllZCIpLAorCQkJCSBlcnJoaW50 KCJVc2UgYSBmb3JlaWduIHNlcnZlciB0aGF0IGhhcyBhIEZPUkVJR04gREFUQSBXUkFQUEVSIHNw ZWNpZmllZCBpbnN0ZWFkLiIpKSk7CisKIAkvKiBDaGVjayB0aGF0IHRoZSBzY2hlbWEgZXhpc3Rz IGFuZCB3ZSBoYXZlIENSRUFURSBwZXJtaXNzaW9ucyBvbiBpdCAqLwogCSh2b2lkKSBMb29rdXBD cmVhdGlvbk5hbWVzcGFjZShzdG10LT5sb2NhbF9zY2hlbWEpOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggMzRkODgxZmQ5NC4uMDI5NzE2OTA1MSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtMjUsMTQgKzI1LDE3IEBACiAj aW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19h dXRoaWRfZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2VfZC5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfZm9yZWlnbl9zZXJ2ZXIuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNj cmlwdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfdXNlcl9tYXBw aW5nLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGJjb21tYW5kcy5oIgogI2luY2x1ZGUgImNvbW1h bmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCIKICNpbmNs dWRlICJjb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhl Y3V0b3IuaCIKKyNpbmNsdWRlICJmb3JlaWduL2ZvcmVpZ24uaCIKICNpbmNsdWRlICJtaXNjYWRt aW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK QEAgLTU3NCw2ICs1NzcsOCBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdf c3Vic2NyaXB0aW9uXTsKIAlPaWQJCQlvd25lciA9IEdldFVzZXJJZCgpOwogCUhlYXBUdXBsZQl0 dXA7CisJT2lkCQkJc2VydmVyaWQ7CisJT2lkCQkJdW1pZDsKIAljaGFyCSAgICpjb25uaW5mbzsK IAljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKIAlMaXN0CSAgICpwdWJsaWNhdGlvbnM7 CkBAIC01OTQsNiArNTk5LDEyIEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCSAgU1VCT1BUX1JVTl9BU19P V05FUiB8IFNVQk9QVF9PUklHSU4pOwogCXBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKHBzdGF0 ZSwgc3RtdC0+b3B0aW9ucywgc3VwcG9ydGVkX29wdHMsICZvcHRzKTsKIAorCWlmIChJc1NldChv cHRzLnNwZWNpZmllZF9vcHRzLCBTVUJPUFRfUEFTU1dPUkRfUkVRVUlSRUQpICYmIHN0bXQtPnNl cnZlcm5hbWUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAorCQkJCSBlcnJtc2coIm9wdGlvbiBcInBhc3N3b3JkX3JlcXVpcmVkXCIgaW52YWxp ZCBvbiBzdWJzY3JpcHRpb25zIHRvIGEgZm9yZWlnbiBzZXJ2ZXIiKSwKKwkJCQkgZXJyaGludCgi VXNlIHRoZSBcInBhc3N3b3JkX3JlcXVpcmVkXCIgb3B0aW9uIG9uIHRoZSB1c2VyIG1hcHBpbmdz IGFzc29jaWF0ZWQgd2l0aCB0aGUgZm9yZWlnbiBzZXJ2ZXIuIikpKTsKKwogCS8qCiAJICogU2lu Y2UgY3JlYXRpbmcgYSByZXBsaWNhdGlvbiBzbG90IGlzIG5vdCB0cmFuc2FjdGlvbmFsLCByb2xs aW5nIGJhY2sKIAkgKiB0aGUgdHJhbnNhY3Rpb24gbGVhdmVzIHRoZSBjcmVhdGVkIHJlcGxpY2F0 aW9uIHNsb3QuICBTbyB3ZSBjYW5ub3QgcnVuCkBAIC02MDQsOSArNjE1LDkgQEAgQ3JlYXRlU3Vi c2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3Rt dCwKIAkJUHJldmVudEluVHJhbnNhY3Rpb25CbG9jayhpc1RvcExldmVsLCAiQ1JFQVRFIFNVQlND UklQVElPTiAuLi4gV0lUSCAoY3JlYXRlX3Nsb3QgPSB0cnVlKSIpOwogCiAJLyoKLQkgKiBXZSBk b24ndCB3YW50IHRvIGFsbG93IHVucHJpdmlsZWdlZCB1c2VycyB0byBiZSBhYmxlIHRvIHRyaWdn ZXIKLQkgKiBhdHRlbXB0cyB0byBhY2Nlc3MgYXJiaXRyYXJ5IG5ldHdvcmsgZGVzdGluYXRpb25z LCBzbyByZXF1aXJlIHRoZSB1c2VyCi0JICogdG8gaGF2ZSBiZWVuIHNwZWNpZmljYWxseSBhdXRo b3JpemVkIHRvIGNyZWF0ZSBzdWJzY3JpcHRpb25zLgorCSAqIFdlIGRvbid0IHdhbnQgdG8gYWxs b3cgdW5wcml2aWxlZ2VkIHVzZXJzIHRvIHV0aWxpemUgdGhlIHJlc291cmNlcyB0aGF0CisJICog YSBzdWJzY3JpcHRpb24gcmVxdWlyZXMgKHN1Y2ggYXMgYSBiYWNrZ3JvdW5kIHdvcmtlciksIHNv IHJlcXVpcmUgdGhlCisJICogdXNlciB0byBoYXZlIGJlZW4gc3BlY2lmaWNhbGx5IGF1dGhvcml6 ZWQgdG8gY3JlYXRlIHN1YnNjcmlwdGlvbnMuCiAJICovCiAJaWYgKCFoYXNfcHJpdnNfb2Zfcm9s ZShvd25lciwgUk9MRV9QR19DUkVBVEVfU1VCU0NSSVBUSU9OKSkKIAkJZXJlcG9ydChFUlJPUiwK QEAgLTY2NiwxNCArNjc3LDU5IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJaWYgKG9wdHMuc3luY2hyb25vdXNf Y29tbWl0ID09IE5VTEwpCiAJCW9wdHMuc3luY2hyb25vdXNfY29tbWl0ID0gIm9mZiI7CiAKLQlj b25uaW5mbyA9IHN0bXQtPmNvbm5pbmZvOwotCXB1YmxpY2F0aW9ucyA9IHN0bXQtPnB1YmxpY2F0 aW9uOwotCiAJLyogTG9hZCB0aGUgbGlicmFyeSBwcm92aWRpbmcgdXMgbGlicHEgY2FsbHMuICov CiAJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwogCi0JLyogQ2hlY2sgdGhl IGNvbm5lY3Rpb24gaW5mbyBzdHJpbmcuICovCi0Jd2FscmN2X2NoZWNrX2Nvbm5pbmZvKGNvbm5p bmZvLCBvcHRzLnBhc3N3b3JkcmVxdWlyZWQgJiYgIXN1cGVydXNlcigpKTsKKwlpZiAoc3RtdC0+ c2VydmVybmFtZSkKKwl7CisJCUZvcmVpZ25TZXJ2ZXIJKnNlcnZlcjsKKwkJVXNlck1hcHBpbmcJ CSp1bTsKKworCQlBc3NlcnQoIXN0bXQtPmNvbm5pbmZvKTsKKwkJY29ubmluZm8gPSBOVUxMOwor CisJCXNlcnZlciA9IEdldEZvcmVpZ25TZXJ2ZXJCeU5hbWUoc3RtdC0+c2VydmVybmFtZSwgZmFs c2UpOworCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soRm9yZWlnblNlcnZlclJlbGF0aW9u SWQsIHNlcnZlci0+c2VydmVyaWQsIG93bmVyLCBBQ0xfVVNBR0UpOworCQlpZiAoYWNscmVzdWx0 ICE9IEFDTENIRUNLX09LKQorCQkJYWNsY2hlY2tfZXJyb3IoYWNscmVzdWx0LCBPQkpFQ1RfRk9S RUlHTl9TRVJWRVIsIHNlcnZlci0+c2VydmVybmFtZSk7CisKKwkJaWYgKE9pZElzVmFsaWQoc2Vy dmVyLT5mZHdpZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1dS T05HX09CSkVDVF9UWVBFKSwKKwkJCQkJIGVycm1zZygic2VydmVyIHVzZWQgZm9yIHN1YnNjcmlw dGlvbiBtdXN0IGhhdmUgRk9SIENPTk5FQ1RJT04gT05MWSBzcGVjaWZpZWQiKSkpOworCisJCXVt ID0gR2V0VXNlck1hcHBpbmcob3duZXIsIHNlcnZlci0+c2VydmVyaWQpOworCisJCXNlcnZlcmlk ID0gc2VydmVyLT5zZXJ2ZXJpZDsKKwkJdW1pZCA9IHVtLT51bWlkOworCQljb25uaW5mbyA9IEZv cmVpZ25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKG93bmVyLCBzZXJ2ZXJpZCk7CisJfQorCWVsc2UK Kwl7CisJCUFzc2VydChzdG10LT5jb25uaW5mbyk7CisKKwkJLyoKKwkJICogV2UgZG9uJ3Qgd2Fu dCB0byBhbGxvdyB1bnByaXZpbGVnZWQgdXNlcnMgdG8gYmUgYWJsZSB0byB0cmlnZ2VyCisJCSAq IGF0dGVtcHRzIHRvIGFjY2VzcyBhcmJpdHJhcnkgbmV0d29yayBkZXN0aW5hdGlvbnMsIHNvIHJl cXVpcmUgdGhlIHVzZXIKKwkJICogdG8gaGF2ZSBiZWVuIHNwZWNpZmljYWxseSBhdXRob3JpemVk IHRvIGNyZWF0ZSBjb25uZWN0aW9ucy4KKwkJICovCisJCWlmICghaGFzX3ByaXZzX29mX3JvbGUo b3duZXIsIFJPTEVfUEdfQ1JFQVRFX0NPTk5FQ1RJT04pKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKKwkJCQkJIGVycm1z ZygicGVybWlzc2lvbiBkZW5pZWQgdG8gY3JlYXRlIHN1YnNjcmlwdGlvbiB3aXRoIGEgY29ubmVj dGlvbiBzdHJpbmciKSwKKwkJCQkJIGVycmRldGFpbCgiT25seSByb2xlcyB3aXRoIHByaXZpbGVn ZXMgb2YgdGhlIFwiJXNcIiByb2xlIG1heSBjcmVhdGUgc3Vic2NyaXB0aW9ucyB3aXRoIENPTk5F Q1RJT04gc3BlY2lmaWVkLiIsCisJCQkJCQkJICAgInBnX2NyZWF0ZV9jb25uZWN0aW9uIiksCisJ CQkJCSBlcnJoaW50KCJDcmVhdGUgYSBzdWJzY3JpcHRpb24gdG8gYSBmb3JlaWduIHNlcnZlciBi eSBzcGVjaWZ5aW5nIFNFUlZFUiBpbnN0ZWFkLiIpKSk7CisKKwkJLyogQ2hlY2sgdGhlIGNvbm5l Y3Rpb24gaW5mbyBzdHJpbmcuICovCisJCXdhbHJjdl9jaGVja19jb25uaW5mbyhzdG10LT5jb25u aW5mbywgb3B0cy5wYXNzd29yZHJlcXVpcmVkICYmICFzdXBlcnVzZXIoKSk7CisKKwkJc2VydmVy aWQgPSBJbnZhbGlkT2lkOworCQl1bWlkID0gSW52YWxpZE9pZDsKKwkJY29ubmluZm8gPSBzdG10 LT5jb25uaW5mbzsKKwl9CisKKwlwdWJsaWNhdGlvbnMgPSBzdG10LT5wdWJsaWNhdGlvbjsKIAog CS8qIEV2ZXJ5dGhpbmcgb2ssIGZvcm0gYSBuZXcgdHVwbGUuICovCiAJbWVtc2V0KHZhbHVlcywg MCwgc2l6ZW9mKHZhbHVlcykpOwpAQCAtNjk3LDggKzc1MywxMiBAQCBDcmVhdGVTdWJzY3JpcHRp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCXZh bHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJkaXNhYmxlb25lcnIgLSAxXSA9IEJvb2xHZXRE YXR1bShvcHRzLmRpc2FibGVvbmVycik7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 YnBhc3N3b3JkcmVxdWlyZWQgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLnBhc3N3b3JkcmVxdWly ZWQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJydW5hc293bmVyIC0gMV0gPSBC b29sR2V0RGF0dW0ob3B0cy5ydW5hc293bmVyKTsKLQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRp b25fc3ViY29ubmluZm8gLSAxXSA9Ci0JCUNTdHJpbmdHZXRUZXh0RGF0dW0oY29ubmluZm8pOwor CXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzZXJ2ZXIgLSAxXSA9IHNlcnZlcmlkOwor CWlmICghT2lkSXNWYWxpZChzZXJ2ZXJpZCkpCisJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlv bl9zdWJjb25uaW5mbyAtIDFdID0KKwkJCUNTdHJpbmdHZXRUZXh0RGF0dW0oY29ubmluZm8pOwor CWVsc2UKKwkJbnVsbHNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9IHRy dWU7CiAJaWYgKG9wdHMuc2xvdF9uYW1lKQogCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3Vic2xvdG5hbWUgLSAxXSA9CiAJCQlEaXJlY3RGdW5jdGlvbkNhbGwxKG5hbWVpbiwgQ1N0cmlu Z0dldERhdHVtKG9wdHMuc2xvdF9uYW1lKSk7CkBAIC03MTksNiArNzc5LDIwIEBAIENyZWF0ZVN1 YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0 bXQsCiAKIAlyZWNvcmREZXBlbmRlbmN5T25Pd25lcihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBz dWJpZCwgb3duZXIpOwogCisJT2JqZWN0QWRkcmVzc1NldChteXNlbGYsIFN1YnNjcmlwdGlvblJl bGF0aW9uSWQsIHN1YmlkKTsKKworCWlmIChzdG10LT5zZXJ2ZXJuYW1lKQorCXsKKwkJT2JqZWN0 QWRkcmVzcyByZWZlcmVuY2VkOworCQlBc3NlcnQoT2lkSXNWYWxpZChzZXJ2ZXJpZCkgJiYgT2lk SXNWYWxpZCh1bWlkKSk7CisKKwkJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBGb3JlaWdu U2VydmVyUmVsYXRpb25JZCwgc2VydmVyaWQpOworCQlyZWNvcmREZXBlbmRlbmN5T24oJm15c2Vs ZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKKworCQlPYmplY3RBZGRyZXNzU2V0 KHJlZmVyZW5jZWQsIFVzZXJNYXBwaW5nUmVsYXRpb25JZCwgdW1pZCk7CisJCXJlY29yZERlcGVu ZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCX0KKwog CVJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoc3ViaWQsIEludmFsaWRPaWQsIG9y aWdpbm5hbWUsIHNpemVvZihvcmlnaW5uYW1lKSk7CiAJcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lu bmFtZSk7CiAKQEAgLTgzNSw4ICs5MDksNiBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0 ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCWlmIChvcHRzLmVuYWJs ZWQpCiAJCUFwcGx5TGF1bmNoZXJXYWtldXBBdENvbW1pdCgpOwogCi0JT2JqZWN0QWRkcmVzc1Nl dChteXNlbGYsIFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIHN1YmlkKTsKLQogCUludm9rZU9iamVj dFBvc3RDcmVhdGVIb29rKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIHN1YmlkLCAwKTsKIAogCXJl dHVybiBteXNlbGY7CkBAIC0xMTI0LDYgKzExOTYsOCBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAltZW1zZXQobnVs bHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKIAltZW1zZXQocmVwbGFjZXMsIGZhbHNlLCBzaXpl b2YocmVwbGFjZXMpKTsKIAorCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBTdWJzY3JpcHRpb25S ZWxhdGlvbklkLCBzdWJpZCk7CisKIAlzd2l0Y2ggKHN0bXQtPmtpbmQpCiAJewogCQljYXNlIEFM VEVSX1NVQlNDUklQVElPTl9PUFRJT05TOgpAQCAtMTE5MSw2ICsxMjY1LDEyIEBAIEFsdGVyU3Vi c2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10 LAogCiAJCQkJaWYgKElzU2V0KG9wdHMuc3BlY2lmaWVkX29wdHMsIFNVQk9QVF9QQVNTV09SRF9S RVFVSVJFRCkpCiAJCQkJeworCQkJCQlpZiAoT2lkSXNWYWxpZChmb3JtLT5zdWJzZXJ2ZXIpKQor CQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAorCQkJCQkJCQkgZXJybXNnKCJvcHRpb24gXCJwYXNzd29yZF9yZXF1aXJlZFwiIGludmFs aWQgb24gc3Vic2NyaXB0aW9ucyB0byBhIGZvcmVpZ24gc2VydmVyIiksCisJCQkJCQkJCSBlcnJo aW50KCJVc2UgdGhlIFwicGFzc3dvcmRfcmVxdWlyZWRcIiBvcHRpb24gb24gdGhlIHVzZXIgbWFw cGluZ3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBmb3JlaWduIHNlcnZlci4iKSkpOworCiAJCQkJCS8q IE5vbi1zdXBlcnVzZXIgbWF5IG5vdCBkaXNhYmxlIHBhc3N3b3JkX3JlcXVpcmVkLiAqLwogCQkJ CQlpZiAoIW9wdHMucGFzc3dvcmRyZXF1aXJlZCAmJiAhc3VwZXJ1c2VyKCkpCiAJCQkJCQllcmVw b3J0KEVSUk9SLApAQCAtMTIzNyw3ICsxMzE3LDgyIEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBhcnNl U3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCWJyZWFrOwog CQkJfQogCisJCWNhc2UgQUxURVJfU1VCU0NSSVBUSU9OX1NFUlZFUjoKKwkJCXsKKwkJCQlGb3Jl aWduU2VydmVyCSpuZXdfc2VydmVyOworCQkJCVVzZXJNYXBwaW5nCQkqbmV3X3VtOworCQkJCU9i amVjdEFkZHJlc3MJIHJlZmVyZW5jZWQ7CisJCQkJQWNsUmVzdWx0CQkgYWNscmVzdWx0OworCisJ CQkJLyoKKwkJCQkgKiBSZW1vdmUgd2hhdCB3YXMgdGhlcmUgYmVmb3JlLCBlaXRoZXIgYW5vdGhl ciBmb3JlaWduIHNlcnZlcgorCQkJCSAqIG9yIGEgY29ubmVjdGlvbiBzdHJpbmcuCisJCQkJICov CisJCQkJaWYgKGZvcm0tPnN1YnNlcnZlcikKKwkJCQl7CisJCQkJCVVzZXJNYXBwaW5nICpvbGRf dW0gPSBHZXRVc2VyTWFwcGluZyhmb3JtLT5zdWJvd25lciwgZm9ybS0+c3Vic2VydmVyKTsKKwor CQkJCQlkZWxldGVEZXBlbmRlbmN5UmVjb3Jkc0ZvclNwZWNpZmljKFN1YnNjcmlwdGlvblJlbGF0 aW9uSWQsIGZvcm0tPm9pZCwKKwkJCQkJCQkJCQkJCQkgICBERVBFTkRFTkNZX05PUk1BTCwKKwkJ CQkJCQkJCQkJCQkgICBGb3JlaWduU2VydmVyUmVsYXRpb25JZCwgZm9ybS0+c3Vic2VydmVyKTsK KwkJCQkJZGVsZXRlRGVwZW5kZW5jeVJlY29yZHNGb3JTcGVjaWZpYyhTdWJzY3JpcHRpb25SZWxh dGlvbklkLCBmb3JtLT5vaWQsCisJCQkJCQkJCQkJCQkJICAgREVQRU5ERU5DWV9OT1JNQUwsCisJ CQkJCQkJCQkJCQkJICAgVXNlck1hcHBpbmdSZWxhdGlvbklkLCBvbGRfdW0tPnVtaWQpOworCQkJ CX0KKwkJCQllbHNlCisJCQkJeworCQkJCQludWxsc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJj b25uaW5mbyAtIDFdID0gdHJ1ZTsKKwkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3ViY29ubmluZm8gLSAxXSA9IHRydWU7CisJCQkJfQorCisJCQkJLyoKKwkJCQkgKiBGaW5kIHRo ZSBuZXcgc2VydmVyIGFuZCB1c2VyIG1hcHBpbmcuIENoZWNrIEFDTCBvZiBzZXJ2ZXIKKwkJCQkg KiBiYXNlZCBvbiBjdXJyZW50IHVzZXIgSUQsIGJ1dCBmaW5kIHRoZSB1c2VyIG1hcHBpbmcgYmFz ZWQKKwkJCQkgKiBvbiB0aGUgc3Vic2NyaXB0aW9uIG93bmVyLgorCQkJCSAqLworCQkJCW5ld19z ZXJ2ZXIgPSBHZXRGb3JlaWduU2VydmVyQnlOYW1lKHN0bXQtPnNlcnZlcm5hbWUsIGZhbHNlKTsK KwkJCQlhY2xyZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soRm9yZWlnblNlcnZlclJlbGF0aW9uSWQs CisJCQkJCQkJCQkJCW5ld19zZXJ2ZXItPnNlcnZlcmlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdF KTsKKwkJCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCQkJCQlhY2xjaGVja19lcnJv cihhY2xyZXN1bHQsIE9CSkVDVF9GT1JFSUdOX1NFUlZFUiwKKwkJCQkJCQkJICAgbmV3X3NlcnZl ci0+c2VydmVybmFtZSk7CisKKwkJCQlpZiAoT2lkSXNWYWxpZChuZXdfc2VydmVyLT5mZHdpZCkp CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpF Q1RfVFlQRSksCisJCQkJCQkJIGVycm1zZygic2VydmVyIHVzZWQgZm9yIHN1YnNjcmlwdGlvbiBt dXN0IGhhdmUgRk9SIENPTk5FQ1RJT04gT05MWSBzcGVjaWZpZWQiKSkpOworCisJCQkJbmV3X3Vt ID0gR2V0VXNlck1hcHBpbmcoZm9ybS0+c3Vib3duZXIsIG5ld19zZXJ2ZXItPnNlcnZlcmlkKTsK KworCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzZXJ2ZXIgLSAxXSA9IG5ld19z ZXJ2ZXItPnNlcnZlcmlkOworCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnNl cnZlciAtIDFdID0gdHJ1ZTsKKworCQkJCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgRm9y ZWlnblNlcnZlclJlbGF0aW9uSWQsIG5ld19zZXJ2ZXItPnNlcnZlcmlkKTsKKwkJCQlyZWNvcmRE ZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKKwor CQkJCU9iamVjdEFkZHJlc3NTZXQocmVmZXJlbmNlZCwgVXNlck1hcHBpbmdSZWxhdGlvbklkLCBu ZXdfdW0tPnVtaWQpOworCQkJCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNl ZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCQkJCXVwZGF0ZV90dXBsZSA9IHRydWU7CisJCQl9CisJ CQlicmVhazsKKwogCQljYXNlIEFMVEVSX1NVQlNDUklQVElPTl9DT05ORUNUSU9OOgorCQkJLyog cmVtb3ZlIHJlZmVyZW5jZSB0byBmb3JlaWduIHNlcnZlciBhbmQgZGVwZW5kZW5jaWVzLCBpZiBw cmVzZW50ICovCisJCQlpZiAoZm9ybS0+c3Vic2VydmVyKQorCQkJeworCQkJCVVzZXJNYXBwaW5n ICpvbGRfdW0gPSBHZXRVc2VyTWFwcGluZyhmb3JtLT5zdWJvd25lciwgZm9ybS0+c3Vic2VydmVy KTsKKworCQkJCWRlbGV0ZURlcGVuZGVuY3lSZWNvcmRzRm9yU3BlY2lmaWMoU3Vic2NyaXB0aW9u UmVsYXRpb25JZCwgZm9ybS0+b2lkLAorCQkJCQkJCQkJCQkJICAgREVQRU5ERU5DWV9OT1JNQUws CisJCQkJCQkJCQkJCQkgICBGb3JlaWduU2VydmVyUmVsYXRpb25JZCwgZm9ybS0+c3Vic2VydmVy KTsKKwkJCQlkZWxldGVEZXBlbmRlbmN5UmVjb3Jkc0ZvclNwZWNpZmljKFN1YnNjcmlwdGlvblJl bGF0aW9uSWQsIGZvcm0tPm9pZCwKKwkJCQkJCQkJCQkJCSAgIERFUEVOREVOQ1lfTk9STUFMLAor CQkJCQkJCQkJCQkJICAgVXNlck1hcHBpbmdSZWxhdGlvbklkLCBvbGRfdW0tPnVtaWQpOworCisJ CQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnNlcnZlciAtIDFdID0gSW52YWxpZE9p ZDsKKwkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzZXJ2ZXIgLSAxXSA9IHRy dWU7CisJCQl9CisKIAkJCS8qIExvYWQgdGhlIGxpYnJhcnkgcHJvdmlkaW5nIHVzIGxpYnBxIGNh bGxzLiAqLwogCQkJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwogCQkJLyog Q2hlY2sgdGhlIGNvbm5lY3Rpb24gaW5mbyBzdHJpbmcuICovCkBAIC0xNDQ4LDggKzE2MDMsNiBA QCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9u U3RtdCAqc3RtdCwKIAogCXRhYmxlX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAKLQlP YmplY3RBZGRyZXNzU2V0KG15c2VsZiwgU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgc3ViaWQpOwot CiAJSW52b2tlT2JqZWN0UG9zdEFsdGVySG9vayhTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBzdWJp ZCwgMCk7CiAKIAkvKiBXYWtlIHVwIHJlbGF0ZWQgcmVwbGljYXRpb24gd29ya2VycyB0byBoYW5k bGUgdGhpcyBjaGFuZ2UgcXVpY2tseS4gKi8KQEAgLTE1MzQsOSArMTY4NywxNyBAQCBEcm9wU3Vi c2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJ c3VibmFtZSA9IHBzdHJkdXAoTmFtZVN0cigqRGF0dW1HZXROYW1lKGRhdHVtKSkpOwogCiAJLyog R2V0IGNvbm5pbmZvICovCi0JZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKFNVQlNDUklQ VElPTk9JRCwgdHVwLAotCQkJCQkJCQkgICBBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5m byk7Ci0JY29ubmluZm8gPSBUZXh0RGF0dW1HZXRDU3RyaW5nKGRhdHVtKTsKKwlpZiAoT2lkSXNW YWxpZChmb3JtLT5zdWJzZXJ2ZXIpKQorCXsKKwkJY29ubmluZm8gPSBGb3JlaWduU2VydmVyQ29u bmVjdGlvblN0cmluZyhmb3JtLT5zdWJvd25lciwKKwkJCQkJCQkJCQkJCSBmb3JtLT5zdWJzZXJ2 ZXIpOworCX0KKwllbHNlCisJeworCQlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoU1VC U0NSSVBUSU9OT0lELCB0dXAsCisJCQkJCQkJCQkgICBBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJj b25uaW5mbyk7CisJCWNvbm5pbmZvID0gVGV4dERhdHVtR2V0Q1N0cmluZyhkYXR1bSk7CisJfQog CiAJLyogR2V0IHNsb3RuYW1lICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBU SU9OT0lELCB0dXAsCkBAIC0xNjM3LDYgKzE3OTgsNyBAQCBEcm9wU3Vic2NyaXB0aW9uKERyb3BT dWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiAJfQogCiAJLyogQ2xlYW4g dXAgZGVwZW5kZW5jaWVzICovCisJZGVsZXRlRGVwZW5kZW5jeVJlY29yZHNGb3IoU3Vic2NyaXB0 aW9uUmVsYXRpb25JZCwgc3ViaWQsIGZhbHNlKTsKIAlkZWxldGVTaGFyZWREZXBlbmRlbmN5UmVj b3Jkc0ZvcihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBzdWJpZCwgMCk7CiAKIAkvKiBSZW1vdmUg YW55IGFzc29jaWF0ZWQgcmVsYXRpb24gc3luY2hyb25pemF0aW9uIHN0YXRlcy4gKi8KQEAgLTE4 NDYsNiArMjAwOCwxNyBAQCBBbHRlclN1YnNjcmlwdGlvbk93bmVyX2ludGVybmFsKFJlbGF0aW9u IHJlbCwgSGVhcFR1cGxlIHR1cCwgT2lkIG5ld093bmVySWQpCiAJCWFjbGNoZWNrX2Vycm9yKGFj bHJlc3VsdCwgT0JKRUNUX0RBVEFCQVNFLAogCQkJCQkgICBnZXRfZGF0YWJhc2VfbmFtZShNeURh dGFiYXNlSWQpKTsKIAorCWlmIChmb3JtLT5zdWJzZXJ2ZXIpCisJeworCQlVc2VyTWFwcGluZyAq b2xkX3VtID0gR2V0VXNlck1hcHBpbmcoZm9ybS0+c3Vib3duZXIsIGZvcm0tPnN1YnNlcnZlcik7 CisJCVVzZXJNYXBwaW5nICpuZXdfdW0gPSBHZXRVc2VyTWFwcGluZyhuZXdPd25lcklkLCBmb3Jt LT5zdWJzZXJ2ZXIpOworCisJCWlmIChjaGFuZ2VEZXBlbmRlbmN5Rm9yKFN1YnNjcmlwdGlvblJl bGF0aW9uSWQsIGZvcm0tPm9pZCwKKwkJCQkJCQkJVXNlck1hcHBpbmdSZWxhdGlvbklkLCBvbGRf dW0tPnVtaWQsIG5ld191bS0+dW1pZCkgIT0gMSkKKwkJCWVsb2coRVJST1IsICJjb3VsZCBub3Qg Y2hhbmdlIHVzZXIgbWFwcGluZyBkZXBlbmRlbmN5IGZvciBzdWJzY3JpcHRpb24gJXUiLAorCQkJ CSBmb3JtLT5vaWQpOworCX0KKwogCWZvcm0tPnN1Ym93bmVyID0gbmV3T3duZXJJZDsKIAlDYXRh bG9nVHVwbGVVcGRhdGUocmVsLCAmdHVwLT50X3NlbGYsIHR1cCk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2ZvcmVpZ24vZm9yZWlnbi5jIGIvc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3JlaWdu LmMKaW5kZXggY2EzYWQ1NWI2Mi4uYjkzYjlhMzE0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Zm9yZWlnbi9mb3JlaWduLmMKKysrIGIvc3JjL2JhY2tlbmQvZm9yZWlnbi9mb3JlaWduLmMKQEAg LTE4LDExICsxOCwxNCBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfZm9yZWlnbl9zZXJ2ZXIuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX2ZvcmVpZ25fdGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3VzZXJfbWFwcGluZy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1 ZGUgImZvcmVpZ24vZmR3YXBpLmgiCiAjaW5jbHVkZSAiZm9yZWlnbi9mb3JlaWduLmgiCiAjaW5j bHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCisjaW5jbHVkZSAi bWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNh dGlvbi93YWxyZWNlaXZlci5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKQEAgLTE5MCw2ICsx OTMsMTE2IEBAIEdldEZvcmVpZ25TZXJ2ZXJCeU5hbWUoY29uc3QgY2hhciAqc3J2bmFtZSwgYm9v bCBtaXNzaW5nX29rKQogfQogCiAKKy8qCisgKiBFc2NhcGUgYSBjb25uZWN0aW9uIG9wdGlvbiB2 YWx1ZS4gSGVscGVyIGZvciBvcHRpb25zX3RvX2Nvbm5zdHIoKS4KKyAqLworc3RhdGljIGNoYXIg KgorZXNjYXBlX3ZhbHVlKGNoYXIgKnZhbCkKK3sKKwlTdHJpbmdJbmZvRGF0YSByZXN1bHQ7CisK Kwlpbml0U3RyaW5nSW5mbygmcmVzdWx0KTsKKworCWZvciAoaW50IGkgPSAwOyB2YWxbaV0gIT0g J1wwJzsgaSsrKQorCXsKKwkJaWYgKHZhbFtpXSA9PSAnXFwnIHx8IHZhbFtpXSA9PSAnXCcnKQor CQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJnJlc3VsdCwgJ1xcJyk7CisJCWFwcGVuZFN0cmluZ0lu Zm9DaGFyKCZyZXN1bHQsIHZhbFtpXSk7CisJfQorCisJcmV0dXJuIHJlc3VsdC5kYXRhOworfQor CisKKy8qCisgKiBIZWxwZXIgZm9yIEZvcmVpZ25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKCkgYW5k IHBnX2Nvbm5lY3Rpb25fdmFsaWRhdG9yKCkuCisgKgorICogVHJhbnNmb3JtIGEgTGlzdCBvZiBE ZWZFbGVtIGludG8gYSBjb25uZWN0aW9uIHN0cmluZy4KKyAqCisgKiBYWFg6IG1pZ2h0IGxlYWsg bWVtb3J5LCBpbnZlc3RpZ2F0ZQorICovCitzdGF0aWMgY2hhciAqCitvcHRpb25zX3RvX2Nvbm5z dHIoTGlzdCAqb3B0aW9ucykKK3sKKwlTdHJpbmdJbmZvRGF0YQkgY29ubnN0cjsKKwlMaXN0Q2Vs bAkJKmxjOworCWJvb2wJCQkgZmlyc3QgPSB0cnVlOworCisJaW5pdFN0cmluZ0luZm8oJmNvbm5z dHIpOworCWZvcmVhY2gobGMsIG9wdGlvbnMpCisJeworCQlEZWZFbGVtICpkID0gKERlZkVsZW0g KikgbGZpcnN0KGxjKTsKKwkJY2hhciAqbmFtZSA9IGQtPmRlZm5hbWU7CisJCWNoYXIgKnZhbHVl OworCisJCS8qIG5vdCBhIGxpYnBxIG9wdGlvbjsgc2tpcCAqLworCQlpZiAoc3RyY21wKG5hbWUs ICJwYXNzd29yZF9yZXF1aXJlZCIpID09IDApCisJCQljb250aW51ZTsKKworCQkvKiBYWFg6IHBm cmVlKCkgcmVzdWx0IG9mIGRlZkdldFN0cmluZygpIGlmIG5lZWRlZD8gKi8KKwkJdmFsdWUgPSBl c2NhcGVfdmFsdWUoZGVmR2V0U3RyaW5nKGQpKTsKKworCQlhcHBlbmRTdHJpbmdJbmZvKCZjb25u c3RyLCAiJXMlcyA9ICclcyciLAorCQkJCQkJIGZpcnN0ID8gIiIgOiAiICIsIG5hbWUsIHZhbHVl KTsKKwkJZmlyc3QgPSBmYWxzZTsKKworCQlwZnJlZSh2YWx1ZSk7CisJfQorCisJLyogb3ZlcnJp ZGUgY2xpZW50X2VuY29kaW5nICovCisJYXBwZW5kU3RyaW5nSW5mbygmY29ubnN0ciwgIiVzY2xp ZW50X2VuY29kaW5nID0gJyVzJyIsCisJCQkJCSBmaXJzdCA/ICIiIDogIiAiLCBHZXREYXRhYmFz ZUVuY29kaW5nTmFtZSgpKTsKKworCXJldHVybiBjb25uc3RyLmRhdGE7Cit9CisKKworLyoKKyAq IEdpdmVuIGEgdXNlciBJRCBhbmQgc2VydmVyIElELCByZXR1cm4gYSBwb3N0Z3JlcyBjb25uZWN0 aW9uIHN0cmluZyBzdWl0YWJsZQorICogdG8gcGFzcyB0byBsaWJwcS4KKyAqCisgKiBYWFg6IG1p Z2h0IGxlYWsgbWVtb3J5LCBpbnZlc3RpZ2F0ZQorICovCitjaGFyICoKK0ZvcmVpZ25TZXJ2ZXJD b25uZWN0aW9uU3RyaW5nKE9pZCB1c2VyaWQsIE9pZCBzZXJ2ZXJpZCkKK3sKKwlGb3JlaWduU2Vy dmVyCSpzZXJ2ZXIJID0gR2V0Rm9yZWlnblNlcnZlcihzZXJ2ZXJpZCk7CisJVXNlck1hcHBpbmcJ CSp1bQkJID0gR2V0VXNlck1hcHBpbmcodXNlcmlkLCBzZXJ2ZXJpZCk7CisJTGlzdAkJCSpvcHRp b25zID0gbGlzdF9jb25jYXQodW0tPm9wdGlvbnMsIHNlcnZlci0+b3B0aW9ucyk7CisJY2hhcgkJ CSpjb25uc3RyOworCisJY29ubnN0ciA9IG9wdGlvbnNfdG9fY29ubnN0cihvcHRpb25zKTsKKwor CXBmcmVlKHNlcnZlcik7CisJcGZyZWUodW0pOworCWxpc3RfZnJlZShvcHRpb25zKTsKKworCXJl dHVybiBjb25uc3RyOworfQorCisKKy8qCisgKiBHZXQgZm9yZWlnbiBzZXJ2ZXIgbmFtZSBmcm9t IHRoZSBnaXZlbiBvaWQuCisgKi8KK3N0YXRpYyBjaGFyICoKK2dldF9mb3JlaWduX3NlcnZlcl9u YW1lKE9pZCBzZXJ2ZXJpZCkKK3sKKwlGb3JtX3BnX2ZvcmVpZ25fc2VydmVyCSBmb3JtOworCUhl YXBUdXBsZQkJCQkgdHA7CisJY2hhcgkJCQkJKnJlc3VsdDsKKworCXRwID0gU2VhcmNoU3lzQ2Fj aGUxKEZPUkVJR05TRVJWRVJPSUQsIE9iamVjdElkR2V0RGF0dW0oc2VydmVyaWQpKTsKKwlpZiAo IUhlYXBUdXBsZUlzVmFsaWQodHApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxl ZCBmb3Igc2VydmVyICV1Iiwgc2VydmVyaWQpOworCisJZm9ybSA9IChGb3JtX3BnX2ZvcmVpZ25f c2VydmVyKSBHRVRTVFJVQ1QodHApOworCXJlc3VsdCA9IHBzdHJkdXAoTmFtZVN0cihmb3JtLT5z cnZuYW1lKSk7CisJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisK KwogLyoKICAqIEdldFVzZXJNYXBwaW5nIC0gbG9vayB1cCB0aGUgdXNlciBtYXBwaW5nLgogICoK QEAgLTIxOSw3ICszMzIsOCBAQCBHZXRVc2VyTWFwcGluZyhPaWQgdXNlcmlkLCBPaWQgc2VydmVy aWQpCiAJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAotCQkJCSBlcnJtc2coInVzZXIgbWFw cGluZyBub3QgZm91bmQgZm9yIFwiJXNcIiIsCisJCQkJIGVycm1zZygidXNlciBtYXBwaW5nIG5v dCBmb3VuZCBmb3Igc2VydmVyIFwiJXNcIiBhbmQgdXNlciBcIiVzXCIiLAorCQkJCQkJZ2V0X2Zv cmVpZ25fc2VydmVyX25hbWUoc2VydmVyaWQpLAogCQkJCQkJTWFwcGluZ1VzZXJOYW1lKHVzZXJp ZCkpKSk7CiAKIAl1bSA9IChVc2VyTWFwcGluZyAqKSBwYWxsb2Moc2l6ZW9mKFVzZXJNYXBwaW5n KSk7CkBAIC01OTYsNiArNzEwLDExNCBAQCBpc19jb25uaW5mb19vcHRpb24oY29uc3QgY2hhciAq b3B0aW9uLCBPaWQgY29udGV4dCkKIH0KIAogCisvKgorICogT3B0aW9uIHZhbGlkYXRvciBmb3Ig Q1JFQVRFIFNFUlZFUiAuLi4gRk9SIENPTk5FQ1RJT04gT05MWS4KKyAqCisgKiBYWFg6IHRyeSB0 byB1bmlmeSB3aXRoIHZhbGlkYXRvcnMgZm9yIENSRUFURSBTVUJTQ1JJUFRJT04gLi4uIENPTk5F Q1RJT04sCisgKiBwb3N0Z3Jlc19mZHcsIGFuZCBkYmxpbmsuIEFsc28gaW52ZXN0aWdhdGUgaWYg bWVtb3J5IGxlYWtzIGFyZSBhIHByb2JsZW0KKyAqIGhlcmUuCisgKi8KK0RhdHVtCitwZ19jb25u ZWN0aW9uX3ZhbGlkYXRvcihQR19GVU5DVElPTl9BUkdTKQoreworCUxpc3QJCQkqb3B0aW9uc19s aXN0ID0gdW50cmFuc2Zvcm1SZWxPcHRpb25zKFBHX0dFVEFSR19EQVRVTSgwKSk7CisJT2lkCQkJ CSBjYXRhbG9nCSAgPSBQR19HRVRBUkdfT0lEKDEpOworCisJaWYgKGNhdGFsb2cgPT0gRm9yZWln blNlcnZlclJlbGF0aW9uSWQpCisJeworCQljaGFyCQkqY29ubmluZm87CisJCUxpc3RDZWxsCSps YzsKKworCQlmb3JlYWNoKGxjLCBvcHRpb25zX2xpc3QpCisJCXsKKwkJCURlZkVsZW0gKmQgPSAo RGVmRWxlbSAqKSBsZmlyc3QobGMpOworCisJCQlpZiAoc3RyY21wKGQtPmRlZm5hbWUsICJjbGll bnRfZW5jb2RpbmciKSA9PSAwKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJybXNnKCJj YW5ub3Qgc3BlY2lmeSBjbGllbnRfZW5jb2RpbmcgaW4gc2VydmVyIEZPUiBDT05ORUNUSU9OIE9O TFkiKSkpOworCisJCQlpZiAoc3RyY21wKGQtPmRlZm5hbWUsICJ1c2VyIikgPT0gMCB8fAorCQkJ CXN0cmNtcChkLT5kZWZuYW1lLCAicGFzc3dvcmQiKSA9PSAwIHx8CisJCQkJc3RyY21wKGQtPmRl Zm5hbWUsICJzc2xwYXNzd29yZCIpID09IDAgfHwKKwkJCQlzdHJjbXAoZC0+ZGVmbmFtZSwgInBh c3N3b3JkX3JlcXVpcmVkIikgPT0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycm1z ZygiaW52YWxpZCBvcHRpb24gXCIlc1wiIGZvciBzZXJ2ZXIgRk9SIENPTk5FQ1RJT04gT05MWSIs CisJCQkJCQkJCWQtPmRlZm5hbWUpLAorCQkJCQkJIGVycmhpbnQoIlNwZWNpZnkgb3B0aW9uIFwi JXNcIiBmb3IgYSB1c2VyIG1hcHBpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZXJ2ZXIgaW5zdGVh ZC4iLAorCQkJCQkJCQkgZC0+ZGVmbmFtZSkpKTsKKwkJfQorCisJCWNvbm5pbmZvID0gb3B0aW9u c190b19jb25uc3RyKG9wdGlvbnNfbGlzdCk7CisKKwkJLyogTG9hZCB0aGUgbGlicmFyeSBwcm92 aWRpbmcgdXMgbGlicHEgY2FsbHMuICovCisJCWxvYWRfZmlsZSgibGlicHF3YWxyZWNlaXZlciIs IGZhbHNlKTsKKworCQl3YWxyY3ZfY2hlY2tfY29ubmluZm8oY29ubmluZm8sIGZhbHNlKTsKKwl9 CisJZWxzZSBpZiAoY2F0YWxvZyA9PSBVc2VyTWFwcGluZ1JlbGF0aW9uSWQpCisJeworCQlib29s CQkgcGFzc3dvcmRfcmVxdWlyZWQgPSB0cnVlOworCQlib29sCQkgcGFzc3dvcmRfcHJvdmlkZWQg PSBmYWxzZTsKKwkJTGlzdENlbGwJKmxjOworCisJCWZvcmVhY2gobGMsIG9wdGlvbnNfbGlzdCkK KwkJeworCQkJRGVmRWxlbSAqZCA9IChEZWZFbGVtICopIGxmaXJzdChsYyk7CisKKwkJCWlmIChz dHJjbXAoZC0+ZGVmbmFtZSwgInBhc3N3b3JkX3JlcXVpcmVkIikgPT0gMCkKKwkJCXsKKwkJCQkv KgorCQkJCSAqIE9ubHkgdGhlIHN1cGVydXNlciBtYXkgc2V0IHRoaXMgb3B0aW9uIG9uIGEgdXNl ciBtYXBwaW5nLCBvcgorCQkJCSAqIGFsdGVyIGEgdXNlciBtYXBwaW5nIG9uIHdoaWNoIHRoaXMg b3B0aW9uIGlzIHNldC4gV2UgYWxsb3cgYQorCQkJCSAqIHVzZXIgdG8gY2xlYXIgdGhpcyBvcHRp b24gaWYgaXQncyBzZXQgLSBpbiBmYWN0LCB3ZSBkb24ndCBoYXZlCisJCQkJICogYSBjaG9pY2Ug c2luY2Ugd2UgY2FuJ3Qgc2VlIHRoZSBvbGQgbWFwcGluZyB3aGVuIHZhbGlkYXRpbmcgYW4KKwkJ CQkgKiBhbHRlci4KKwkJCQkgKi8KKwkJCQlpZiAoIXN1cGVydXNlcigpICYmICFkZWZHZXRCb29s ZWFuKGQpKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5T VUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJCQkJIGVycm1zZygicGFzc3dvcmRfcmVxdWlyZWQ9 ZmFsc2UgaXMgc3VwZXJ1c2VyLW9ubHkiKSwKKwkJCQkJCQkgZXJyaGludCgiVXNlciBtYXBwaW5n cyB3aXRoIHRoZSBwYXNzd29yZF9yZXF1aXJlZCBvcHRpb24gc2V0IHRvIGZhbHNlIG1heSBvbmx5 IGJlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgYnkgdGhlIHN1cGVydXNlci4iKSkpOworCisJCQkJcGFz c3dvcmRfcmVxdWlyZWQgPSBkZWZHZXRCb29sZWFuKGQpOworCQkJfQorCisJCQlpZiAoKHN0cmNt cChkLT5kZWZuYW1lLCAic3Nsa2V5IikgPT0gMCB8fCBzdHJjbXAoZC0+ZGVmbmFtZSwgInNzbGNl cnQiKSA9PSAwKSAmJiAhc3VwZXJ1c2VyKCkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJCQkgZXJybXNnKCJz c2xjZXJ0IGFuZCBzc2xrZXkgYXJlIHN1cGVydXNlci1vbmx5IiksCisJCQkJCQkgZXJyaGludCgi VXNlciBtYXBwaW5ncyB3aXRoIHRoZSBzc2xjZXJ0IG9yIHNzbGtleSBvcHRpb25zIHNldCBtYXkg b25seSBiZSBjcmVhdGVkIG9yIG1vZGlmaWVkIGJ5IHRoZSBzdXBlcnVzZXIuIikpKTsKKworCQkJ aWYgKHN0cmNtcChkLT5kZWZuYW1lLCAicGFzc3dvcmQiKSA9PSAwKQorCQkJCXBhc3N3b3JkX3By b3ZpZGVkID0gdHJ1ZTsKKworCQkJaWYgKHN0cmNtcChkLT5kZWZuYW1lLCAidXNlciIpICE9IDAg JiYKKwkJCQlzdHJjbXAoZC0+ZGVmbmFtZSwgInBhc3N3b3JkIikgIT0gMCAmJgorCQkJCXN0cmNt cChkLT5kZWZuYW1lLCAic3NscGFzc3dvcmQiKSAhPSAwICYmCisJCQkJc3RyY21wKGQtPmRlZm5h bWUsICJzc2xrZXkiKSAhPSAwICYmCisJCQkJc3RyY21wKGQtPmRlZm5hbWUsICJzc2xjZXJ0Iikg IT0gMCAmJgorCQkJCXN0cmNtcChkLT5kZWZuYW1lLCAicGFzc3dvcmRfcmVxdWlyZWQiKSAhPSAw KQorCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIHVzZXIgbWFwcGluZyBvcHRpb24gXCIlc1wiIiwg ZC0+ZGVmbmFtZSk7CisJCX0KKworCQlpZiAocGFzc3dvcmRfcmVxdWlyZWQgJiYgIXBhc3N3b3Jk X3Byb3ZpZGVkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9TX1Jf RV9QUk9ISUJJVEVEX1NRTF9TVEFURU1FTlRfQVRURU1QVEVEKSwKKwkJCQkJIGVycm1zZygicGFz c3dvcmQgaXMgcmVxdWlyZWQiKSwKKwkJCQkJIGVycmRldGFpbCgiTm9uLXN1cGVydXNlcnMgbXVz dCBwcm92aWRlIGEgcGFzc3dvcmQgaW4gdGhlIGNvbm5lY3Rpb24gc3RyaW5nLiIpKSk7CisJfQor CWVsc2UgaWYgKGNhdGFsb2cgPT0gRm9yZWlnblRhYmxlUmVsYXRpb25JZCkKKwkJZWxvZyhFUlJP UiwgInVuZXhwZWN0ZWQgY2FsbCB0byBwZ19jb25uZWN0aW9uX3ZhbGlkYXRvciBmb3IgcGdfZm9y ZWlnbl90YWJsZSBjYXRhbG9nIik7CisJZWxzZSBpZiAoY2F0YWxvZyA9PSBBdHRyaWJ1dGVSZWxh dGlvbklkKQorCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBjYWxsIHRvIHBnX2Nvbm5lY3Rpb25f dmFsaWRhdG9yIGZvciBwZ19hdHRyaWJ1dGUgY2F0YWxvZyIpOworCWVsc2UKKwkJZWxvZyhFUlJP UiwgInVuZXhwZWN0ZWQgY2FsbCB0byBwZ19jb25uZWN0aW9uX3ZhbGlkYXRvciBmb3IgY2F0YWxv ZyAlZCIsIGNhdGFsb2cpOworCisKKwlQR19SRVRVUk5fQk9PTCh0cnVlKTsKK30KKworCiAvKgog ICogVmFsaWRhdGUgdGhlIGdlbmVyaWMgb3B0aW9uIGdpdmVuIHRvIFNFUlZFUiBvciBVU0VSIE1B UFBJTkcuCiAgKiBSYWlzZSBhbiBFUlJPUiBpZiB0aGUgb3B0aW9uIG9yIGl0cyB2YWx1ZSBpcyBj b25zaWRlcmVkIGludmFsaWQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCA3ZDIwMzI4ODVlLi4wYmVjYzBlYTMw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKQEAgLTUzODUsNiArNTM4NSwzMiBAQCBDcmVhdGVGb3JlaWduU2VydmVy U3RtdDogQ1JFQVRFIFNFUlZFUiBuYW1lIG9wdF90eXBlIG9wdF9mb3JlaWduX3NlcnZlcl92ZXJz aW9uCiAJCQkJCW4tPmlmX25vdF9leGlzdHMgPSB0cnVlOwogCQkJCQkkJCA9IChOb2RlICopIG47 CiAJCQkJfQorCQkJCXwgQ1JFQVRFIFNFUlZFUiBuYW1lIG9wdF90eXBlIG9wdF9mb3JlaWduX3Nl cnZlcl92ZXJzaW9uCisJCQkJCQkgRk9SIENPTk5FQ1RJT04gT05MWSBjcmVhdGVfZ2VuZXJpY19v cHRpb25zCisJCQkJeworCQkJCQlDcmVhdGVGb3JlaWduU2VydmVyU3RtdCAqbiA9IG1ha2VOb2Rl KENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10KTsKKworCQkJCQluLT5zZXJ2ZXJuYW1lID0gJDM7CisJ CQkJCW4tPnNlcnZlcnR5cGUgPSAkNDsKKwkJCQkJbi0+dmVyc2lvbiA9ICQ1OworCQkJCQluLT5v cHRpb25zID0gJDk7CisJCQkJCW4tPmNvbm5lY3Rpb25fb25seSA9IHRydWU7CisJCQkJCW4tPmlm X25vdF9leGlzdHMgPSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJCQl8 IENSRUFURSBTRVJWRVIgSUZfUCBOT1QgRVhJU1RTIG5hbWUgb3B0X3R5cGUgb3B0X2ZvcmVpZ25f c2VydmVyX3ZlcnNpb24KKwkJCQkJCSBGT1IgQ09OTkVDVElPTiBPTkxZIGNyZWF0ZV9nZW5lcmlj X29wdGlvbnMKKwkJCQl7CisJCQkJCUNyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10ICpuID0gbWFrZU5v ZGUoQ3JlYXRlRm9yZWlnblNlcnZlclN0bXQpOworCisJCQkJCW4tPnNlcnZlcm5hbWUgPSAkNjsK KwkJCQkJbi0+c2VydmVydHlwZSA9ICQ3OworCQkJCQluLT52ZXJzaW9uID0gJDg7CisJCQkJCW4t Pm9wdGlvbnMgPSAkMTI7CisJCQkJCW4tPmNvbm5lY3Rpb25fb25seSA9IHRydWU7CisJCQkJCW4t PmlmX25vdF9leGlzdHMgPSB0cnVlOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQk7 CiAKIG9wdF90eXBlOgpAQCAtMTA1ODgsNiArMTA2MTQsMTYgQEAgQ3JlYXRlU3Vic2NyaXB0aW9u U3RtdDoKIAkJCQkJbi0+b3B0aW9ucyA9ICQ4OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJ fQorCQkJfCBDUkVBVEUgU1VCU0NSSVBUSU9OIG5hbWUgU0VSVkVSIG5hbWUgUFVCTElDQVRJT04g bmFtZV9saXN0IG9wdF9kZWZpbml0aW9uCisJCQkJeworCQkJCQlDcmVhdGVTdWJzY3JpcHRpb25T dG10ICpuID0KKwkJCQkJCW1ha2VOb2RlKENyZWF0ZVN1YnNjcmlwdGlvblN0bXQpOworCQkJCQlu LT5zdWJuYW1lID0gJDM7CisJCQkJCW4tPnNlcnZlcm5hbWUgPSAkNTsKKwkJCQkJbi0+cHVibGlj YXRpb24gPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ4OworCQkJCQkkJCA9IChOb2RlICopIG47 CisJCQkJfQogCQk7CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTA2MTcsNiArMTA2NTMs MTYgQEAgQWx0ZXJTdWJzY3JpcHRpb25TdG10OgogCQkJCQluLT5jb25uaW5mbyA9ICQ1OwogCQkJ CQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCQkJfCBBTFRFUiBTVUJTQ1JJUFRJT04gbmFtZSBT RVJWRVIgbmFtZQorCQkJCXsKKwkJCQkJQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpuID0KKwkJCQkJ CW1ha2VOb2RlKEFsdGVyU3Vic2NyaXB0aW9uU3RtdCk7CisKKwkJCQkJbi0+a2luZCA9IEFMVEVS X1NVQlNDUklQVElPTl9TRVJWRVI7CisJCQkJCW4tPnN1Ym5hbWUgPSAkMzsKKwkJCQkJbi0+c2Vy dmVybmFtZSA9ICQ1OworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQogCQkJfCBBTFRFUiBT VUJTQ1JJUFRJT04gbmFtZSBSRUZSRVNIIFBVQkxJQ0FUSU9OIG9wdF9kZWZpbml0aW9uCiAJCQkJ ewogCQkJCQlBbHRlclN1YnNjcmlwdGlvblN0bXQgKm4gPQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggNTk3OTQ3NDEwZi4uYzliYTBlOWIxNSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zOTkwLDcgKzM5OTAsOSBAQCBt YXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiB9CiAKIC8qCi0gKiBDYWxsYmFjayBmcm9t IHN1YnNjcmlwdGlvbiBzeXNjYWNoZSBpbnZhbGlkYXRpb24uCisgKiBDYWxsYmFjayBmcm9tIHN1 YnNjcmlwdGlvbiBzeXNjYWNoZSBpbnZhbGlkYXRpb24uIEFsc28gbmVlZGVkIGZvciBzZXJ2ZXIg b3IKKyAqIHVzZXIgbWFwcGluZyBpbnZhbGlkYXRpb24sIHdoaWNoIGNhbiBjaGFuZ2UgdGhlIGNv bm5lY3Rpb24gaW5mb3JtYXRpb24gZm9yCisgKiBzdWJzY3JpcHRpb25zIHRoYXQgY29ubmVjdCB1 c2luZyBhIHNlcnZlciBvYmplY3QuCiAgKi8KIHN0YXRpYyB2b2lkCiBzdWJzY3JpcHRpb25fY2hh bmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCkBAIC00NjI1 LDYgKzQ2MjcsMTQgQEAgSW5pdGlhbGl6ZUxvZ1JlcFdvcmtlcih2b2lkKQogCUNhY2hlUmVnaXN0 ZXJTeXNjYWNoZUNhbGxiYWNrKFNVQlNDUklQVElPTk9JRCwKIAkJCQkJCQkJICBzdWJzY3JpcHRp b25fY2hhbmdlX2NiLAogCQkJCQkJCQkgIChEYXR1bSkgMCk7CisJLyogS2VlcCB1cyBpbmZvcm1l ZCBhYm91dCBzdWJzY3JpcHRpb24gY2hhbmdlcy4gKi8KKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVD YWxsYmFjayhGT1JFSUdOU0VSVkVST0lELAorCQkJCQkJCQkgIHN1YnNjcmlwdGlvbl9jaGFuZ2Vf Y2IsCisJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwkvKiBLZWVwIHVzIGluZm9ybWVkIGFib3V0IHN1 YnNjcmlwdGlvbiBjaGFuZ2VzLiAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFVT RVJNQVBQSU5HT0lELAorCQkJCQkJCQkgIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IsCisJCQkJCQkJ CSAgKERhdHVtKSAwKTsKIAogCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCWVyZXBvcnQo TE9HLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKaW5kZXggNjVmNjRjMjgyZC4uMWM2MGRkN2MyYyAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jYXN0X2QuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX2NsYXNzX2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RlZmF1bHRf YWNsX2QuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX2ZvcmVpZ25fZGF0YV93cmFwcGVyLmgiCiAj aW5jbHVkZSAiY2F0YWxvZy9wZ19sYXJnZW9iamVjdF9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19sYXJnZW9iamVjdF9tZXRhZGF0YV9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jX2Qu aCIKQEAgLTQ1ODcsNiArNDU4OCw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkK IAlpbnQJCQlpX3N1YnR3b3BoYXNlc3RhdGU7CiAJaW50CQkJaV9zdWJkaXNhYmxlb25lcnI7CiAJ aW50CQkJaV9zdWJvcmlnaW47CisJaW50CQkJaV9zdWJzZXJ2ZXJuYW1lOwogCWludAkJCWlfc3Vi Y29ubmluZm87CiAJaW50CQkJaV9zdWJzbG90bmFtZTsKIAlpbnQJCQlpX3N1YnN5bmNjb21taXQ7 CkBAIC00NjQ3LDE3ICs0NjQ5LDI2IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkK IAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LAogCQkJCQkJCSAiIHMuc3Vib3JpZ2luLFxuIgotCQkJCQkJCSAiIHMuc3VicGFz c3dvcmRyZXF1aXJlZFxuIik7CisJCQkJCQkJICIgcy5zdWJwYXNzd29yZHJlcXVpcmVkLFxuIik7 CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwKIAkJCQkJCSAgIiAnJXMnIEFTIHN1 Ym9yaWdpbixcbiIKLQkJCQkJCSAgIiAndCcgQVMgc3VicGFzc3dvcmRyZXF1aXJlZFxuIiwKKwkJ CQkJCSAgIiAndCcgQVMgc3VicGFzc3dvcmRyZXF1aXJlZCxcbiIsCiAJCQkJCQkgIExPR0lDQUxS RVBfT1JJR0lOX0FOWSk7CiAKLQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCSAi RlJPTSBwZ19zdWJzY3JpcHRpb24gc1xuIgotCQkJCQkJICJXSEVSRSBzLnN1YmRiaWQgPSAoU0VM RUNUIG9pZCBGUk9NIHBnX2RhdGFiYXNlXG4iCi0JCQkJCQkgIiAgICAgICAgICAgICAgICAgICBX SEVSRSBkYXRuYW1lID0gY3VycmVudF9kYXRhYmFzZSgpKSIpOworCWlmIChmb3V0LT5yZW1vdGVW ZXJzaW9uID49IDE3MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJ ICIgZnMuc3J2bmFtZSBBUyBzdWJzZXJ2ZXJuYW1lXG4iCisJCQkJCQkJICJGUk9NIHBnX3N1YnNj cmlwdGlvbiBzIExFRlQgSk9JTiBwZ19mb3JlaWduX3NlcnZlciBmc1xuIgorCQkJCQkJCSAiICBP TiAocy5zdWJzZXJ2ZXIgPSBmcy5vaWQpXG4iCisJCQkJCQkJICJXSEVSRSBzLnN1YmRiaWQgPSAo U0VMRUNUIG9pZCBGUk9NIHBnX2RhdGFiYXNlXG4iCisJCQkJCQkJICIgICAgICAgICAgICAgICAg ICAgV0hFUkUgZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKSkiKTsKKwllbHNlCisJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiIE5VTEwgQVMgc3Vic2VydmVybmFtZVxu IgorCQkJCQkJCSAiRlJPTSBwZ19zdWJzY3JpcHRpb24gc1xuIgorCQkJCQkJCSAiV0hFUkUgcy5z dWJkYmlkID0gKFNFTEVDVCBvaWQgRlJPTSBwZ19kYXRhYmFzZVxuIgorCQkJCQkJCSAiICAgICAg ICAgICAgICAgICAgIFdIRVJFIGRhdG5hbWUgPSBjdXJyZW50X2RhdGFiYXNlKCkpIik7CiAKIAly ZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7 CiAKQEAgLTQ2NzEsNiArNDY4Miw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkK IAlpX29pZCA9IFBRZm51bWJlcihyZXMsICJvaWQiKTsKIAlpX3N1Ym5hbWUgPSBQUWZudW1iZXIo cmVzLCAic3VibmFtZSIpOwogCWlfc3Vib3duZXIgPSBQUWZudW1iZXIocmVzLCAic3Vib3duZXIi KTsKKwlpX3N1YnNlcnZlcm5hbWUgPSBQUWZudW1iZXIocmVzLCAic3Vic2VydmVybmFtZSIpOwog CWlfc3ViY29ubmluZm8gPSBQUWZudW1iZXIocmVzLCAic3ViY29ubmluZm8iKTsKIAlpX3N1YnNs b3RuYW1lID0gUFFmbnVtYmVyKHJlcywgInN1YnNsb3RuYW1lIik7CiAJaV9zdWJzeW5jY29tbWl0 ID0gUFFmbnVtYmVyKHJlcywgInN1YnN5bmNjb21taXQiKTsKQEAgLTQ2OTMsNiArNDcwNSwxMCBA QCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJCUFzc2lnbkR1bXBJZCgmc3ViaW5m b1tpXS5kb2JqKTsKIAkJc3ViaW5mb1tpXS5kb2JqLm5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2YWx1 ZShyZXMsIGksIGlfc3VibmFtZSkpOwogCQlzdWJpbmZvW2ldLnJvbG5hbWUgPSBnZXRSb2xlTmFt ZShQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJvd25lcikpOworCQlpZiAoUFFnZXRpc251bGwocmVz LCBpLCBpX3N1YnNlcnZlcm5hbWUpKQorCQkJc3ViaW5mb1tpXS5zdWJzZXJ2ZXJuYW1lID0gTlVM TDsKKwkJZWxzZQorCQkJc3ViaW5mb1tpXS5zdWJzZXJ2ZXJuYW1lID0gcGdfc3RyZHVwKFBRZ2V0 dmFsdWUocmVzLCBpLCBpX3N1YnNlcnZlcm5hbWUpKTsKIAkJc3ViaW5mb1tpXS5zdWJjb25uaW5m byA9IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaSwgaV9zdWJjb25uaW5mbykpOwogCQlpZiAo UFFnZXRpc251bGwocmVzLCBpLCBpX3N1YnNsb3RuYW1lKSkKIAkJCXN1YmluZm9baV0uc3Vic2xv dG5hbWUgPSBOVUxMOwpAQCAtNDc1MSw5ICs0NzY3LDE3IEBAIGR1bXBTdWJzY3JpcHRpb24oQXJj aGl2ZSAqZm91dCwgY29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlhcHBlbmRQUUV4 cEJ1ZmZlcihkZWxxLCAiRFJPUCBTVUJTQ1JJUFRJT04gJXM7XG4iLAogCQkJCQkgIHFzdWJuYW1l KTsKIAotCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiQ1JFQVRFIFNVQlNDUklQVElPTiAlcyBD T05ORUNUSU9OICIsCisJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJDUkVBVEUgU1VCU0NSSVBU SU9OICVzICIsCiAJCQkJCSAgcXN1Ym5hbWUpOwotCWFwcGVuZFN0cmluZ0xpdGVyYWxBSChxdWVy eSwgc3ViaW5mby0+c3ViY29ubmluZm8sIGZvdXQpOworCWlmIChzdWJpbmZvLT5zdWJzZXJ2ZXJu YW1lKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICJTRVJWRVIgJXMiLCBmbXRJZChz dWJpbmZvLT5zdWJzZXJ2ZXJuYW1lKSk7CisJfQorCWVsc2UKKwl7CisJCWFwcGVuZFBRRXhwQnVm ZmVyKHF1ZXJ5LCAiQ09OTkVDVElPTiAiKTsKKwkJYXBwZW5kU3RyaW5nTGl0ZXJhbEFIKHF1ZXJ5 LCBzdWJpbmZvLT5zdWJjb25uaW5mbywgZm91dCk7CisJfQogCiAJLyogQnVpbGQgbGlzdCBvZiBx dW90ZWQgcHVibGljYXRpb25zIGFuZCBhcHBlbmQgdGhlbSB0byBxdWVyeS4gKi8KIAlpZiAoIXBh cnNlUEdBcnJheShzdWJpbmZvLT5zdWJwdWJsaWNhdGlvbnMsICZwdWJuYW1lcywgJm5wdWJuYW1l cykpCkBAIC0xNDYzMyw5ICsxNDY1Nyw5IEBAIGR1bXBGb3JlaWduU2VydmVyKEFyY2hpdmUgKmZv dXQsIGNvbnN0IEZvcmVpZ25TZXJ2ZXJJbmZvICpzcnZpbmZvKQogCVBRRXhwQnVmZmVyIHE7CiAJ UFFFeHBCdWZmZXIgZGVscTsKIAlQUUV4cEJ1ZmZlciBxdWVyeTsKLQlQR3Jlc3VsdCAgICpyZXM7 CisJUEdyZXN1bHQgICAqcmVzID0gTlVMTDsKIAljaGFyCSAgICpxc3J2bmFtZTsKLQljaGFyCSAg ICpmZHduYW1lOworCWNoYXIJICAgKmZkd25hbWUgPSBOVUxMOwogCiAJLyogRG8gbm90aGluZyBp biBkYXRhLW9ubHkgZHVtcCAqLwogCWlmIChkb3B0LT5kYXRhT25seSkKQEAgLTE0NjQ3LDEzICsx NDY3MSwxNiBAQCBkdW1wRm9yZWlnblNlcnZlcihBcmNoaXZlICpmb3V0LCBjb25zdCBGb3JlaWdu U2VydmVySW5mbyAqc3J2aW5mbykKIAogCXFzcnZuYW1lID0gcGdfc3RyZHVwKGZtdElkKHNydmlu Zm8tPmRvYmoubmFtZSkpOwogCi0JLyogbG9vayB1cCB0aGUgZm9yZWlnbi1kYXRhIHdyYXBwZXIg Ki8KLQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgIlNFTEVDVCBmZHduYW1lICIKLQkJCQkJICAi RlJPTSBwZ19mb3JlaWduX2RhdGFfd3JhcHBlciB3ICIKLQkJCQkJICAiV0hFUkUgdy5vaWQgPSAn JXUnIiwKLQkJCQkJICBzcnZpbmZvLT5zcnZmZHcpOwotCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeUZv clNpbmdsZVJvdyhmb3V0LCBxdWVyeS0+ZGF0YSk7Ci0JZmR3bmFtZSA9IFBRZ2V0dmFsdWUocmVz LCAwLCAwKTsKKwlpZiAoT2lkSXNWYWxpZChzcnZpbmZvLT5zcnZmZHcpKQorCXsKKwkJLyogbG9v ayB1cCB0aGUgZm9yZWlnbi1kYXRhIHdyYXBwZXIgKi8KKwkJYXBwZW5kUFFFeHBCdWZmZXIocXVl cnksICJTRUxFQ1QgZmR3bmFtZSAiCisJCQkJCQkgICJGUk9NIHBnX2ZvcmVpZ25fZGF0YV93cmFw cGVyIHcgIgorCQkJCQkJICAiV0hFUkUgdy5vaWQgPSAnJXUnIiwKKwkJCQkJCSAgc3J2aW5mby0+ c3J2ZmR3KTsKKwkJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5Rm9yU2luZ2xlUm93KGZvdXQsIHF1ZXJ5 LT5kYXRhKTsKKwkJZmR3bmFtZSA9IFBRZ2V0dmFsdWUocmVzLCAwLCAwKTsKKwl9CiAKIAlhcHBl bmRQUUV4cEJ1ZmZlcihxLCAiQ1JFQVRFIFNFUlZFUiAlcyIsIHFzcnZuYW1lKTsKIAlpZiAoc3J2 aW5mby0+c3J2dHlwZSAmJiBzdHJsZW4oc3J2aW5mby0+c3J2dHlwZSkgPiAwKQpAQCAtMTQ2Njcs OCArMTQ2OTQsMTUgQEAgZHVtcEZvcmVpZ25TZXJ2ZXIoQXJjaGl2ZSAqZm91dCwgY29uc3QgRm9y ZWlnblNlcnZlckluZm8gKnNydmluZm8pCiAJCWFwcGVuZFN0cmluZ0xpdGVyYWxBSChxLCBzcnZp bmZvLT5zcnZ2ZXJzaW9uLCBmb3V0KTsKIAl9CiAKLQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAi IEZPUkVJR04gREFUQSBXUkFQUEVSICIpOwotCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsIGZtdElk KGZkd25hbWUpKTsKKwlpZiAoIU9pZElzVmFsaWQoc3J2aW5mby0+c3J2ZmR3KSkKKwl7CisJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHEsICIgRk9SIENPTk5FQ1RJT04gT05MWSAiKTsKKwl9CisJZWxz ZQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiBGT1JFSUdOIERBVEEgV1JBUFBFUiAi KTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgZm10SWQoZmR3bmFtZSkpOworCX0KIAogCWlm IChzcnZpbmZvLT5zcnZvcHRpb25zICYmIHN0cmxlbihzcnZpbmZvLT5zcnZvcHRpb25zKSA+IDAp CiAJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIgT1BUSU9OUyAoXG4gICAgJXNcbikiLCBzcnZpbmZv LT5zcnZvcHRpb25zKTsKQEAgLTE0NzEwLDcgKzE0NzQ0LDggQEAgZHVtcEZvcmVpZ25TZXJ2ZXIo QXJjaGl2ZSAqZm91dCwgY29uc3QgRm9yZWlnblNlcnZlckluZm8gKnNydmluZm8pCiAJCQkJCQkg c3J2aW5mby0+cm9sbmFtZSwKIAkJCQkJCSBzcnZpbmZvLT5kb2JqLmNhdElkLCBzcnZpbmZvLT5k b2JqLmR1bXBJZCk7CiAKLQlQUWNsZWFyKHJlcyk7CisJaWYgKHJlcykKKwkJUFFjbGVhcihyZXMp OwogCiAJZnJlZShxc3J2bmFtZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDkwMzZiMTNmNmEuLjllZDM0 YjljNmYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNjYwLDYgKzY2MCw3IEBAIHR5cGVkZWYgc3RydWN0IF9T dWJzY3JpcHRpb25JbmZvCiB7CiAJRHVtcGFibGVPYmplY3QgZG9iajsKIAljb25zdCBjaGFyICpy b2xuYW1lOworCWNoYXIJICAgKnN1YnNlcnZlcm5hbWU7CiAJY2hhcgkgICAqc3ViY29ubmluZm87 CiAJY2hhcgkgICAqc3Vic2xvdG5hbWU7CiAJY2hhcgkgICAqc3ViYmluYXJ5OwpkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5jCmluZGV4IDc3OWZkYzkwY2IuLjRmZjhiYWI5ZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmMKQEAgLTMx OTMsNyArMzE5Myw4IEBAIHBzcWxfY29tcGxldGlvbihjb25zdCBjaGFyICp0ZXh0LCBpbnQgc3Rh cnQsIGludCBlbmQpCiAKIC8qIENSRUFURSBTRVJWRVIgPG5hbWU+ICovCiAJZWxzZSBpZiAoTWF0 Y2hlcygiQ1JFQVRFIiwgIlNFUlZFUiIsIE1hdGNoQW55KSkKLQkJQ09NUExFVEVfV0lUSCgiVFlQ RSIsICJWRVJTSU9OIiwgIkZPUkVJR04gREFUQSBXUkFQUEVSIik7CisJCUNPTVBMRVRFX1dJVEgo IlRZUEUiLCAiVkVSU0lPTiIsICJGT1IgQ09OTkVDVElPTiBPTkxZIiwKKwkJCQkJICAiRk9SRUlH TiBEQVRBIFdSQVBQRVIiKTsKIAogLyogQ1JFQVRFIFNUQVRJU1RJQ1MgPG5hbWU+ICovCiAJZWxz ZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlNUQVRJU1RJQ1MiLCBNYXRjaEFueSkpCkBAIC0zMjg3 LDcgKzMyODgsNyBAQCBwc3FsX2NvbXBsZXRpb24oY29uc3QgY2hhciAqdGV4dCwgaW50IHN0YXJ0 LCBpbnQgZW5kKQogCiAvKiBDUkVBVEUgU1VCU0NSSVBUSU9OICovCiAJZWxzZSBpZiAoTWF0Y2hl cygiQ1JFQVRFIiwgIlNVQlNDUklQVElPTiIsIE1hdGNoQW55KSkKLQkJQ09NUExFVEVfV0lUSCgi Q09OTkVDVElPTiIpOworCQlDT01QTEVURV9XSVRIKCJTRVJWRVIiLCAiQ09OTkVDVElPTiIpOwog CWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJTVUJTQ1JJUFRJT04iLCBNYXRjaEFueSwgIkNP Tk5FQ1RJT04iLCBNYXRjaEFueSkpCiAJCUNPTVBMRVRFX1dJVEgoIlBVQkxJQ0FUSU9OIik7CiAJ ZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlNVQlNDUklQVElPTiIsIE1hdGNoQW55LCAiQ09O TkVDVElPTiIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2F1dGhpZC5kYXQg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2F1dGhpZC5kYXQKaW5kZXggNmI0YTBhYWFhZC4uOGZj ZTQ1N2FiMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hdXRoaWQuZGF0Cisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYXV0aGlkLmRhdApAQCAtOTQsNSArOTQsMTAgQEAK ICAgcm9sY3JlYXRlcm9sZSA9PiAnZicsIHJvbGNyZWF0ZWRiID0+ICdmJywgcm9sY2FubG9naW4g PT4gJ2YnLAogICByb2xyZXBsaWNhdGlvbiA9PiAnZicsIHJvbGJ5cGFzc3JscyA9PiAnZicsIHJv bGNvbm5saW1pdCA9PiAnLTEnLAogICByb2xwYXNzd29yZCA9PiAnX251bGxfJywgcm9sdmFsaWR1 bnRpbCA9PiAnX251bGxfJyB9LAoreyBvaWQgPT4gJzYxMjMnLCBvaWRfc3ltYm9sID0+ICdST0xF X1BHX0NSRUFURV9DT05ORUNUSU9OJywKKyAgcm9sbmFtZSA9PiAncGdfY3JlYXRlX2Nvbm5lY3Rp b24nLCByb2xzdXBlciA9PiAnZicsIHJvbGluaGVyaXQgPT4gJ3QnLAorICByb2xjcmVhdGVyb2xl ID0+ICdmJywgcm9sY3JlYXRlZGIgPT4gJ2YnLCByb2xjYW5sb2dpbiA9PiAnZicsCisgIHJvbHJl cGxpY2F0aW9uID0+ICdmJywgcm9sYnlwYXNzcmxzID0+ICdmJywgcm9sY29ubmxpbWl0ID0+ICct MScsCisgIHJvbHBhc3N3b3JkID0+ICdfbnVsbF8nLCByb2x2YWxpZHVudGlsID0+ICdfbnVsbF8n IH0sCiAKIF0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDk4MDViYzYxMTguLjFkZjNkMTkw MTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNzQ4Myw2ICs3NDgzLDEwIEBACiAgIHBy b25hbWUgPT4gJ3Bvc3RncmVzcWxfZmR3X3ZhbGlkYXRvcicsIHByb3JldHR5cGUgPT4gJ2Jvb2wn LAogICBwcm9hcmd0eXBlcyA9PiAnX3RleHQgb2lkJywgcHJvc3JjID0+ICdwb3N0Z3Jlc3FsX2Zk d192YWxpZGF0b3InIH0sCiAKK3sgb2lkID0+ICc2MTIyJywgZGVzY3IgPT4gJyhpbnRlcm5hbCkn LAorICBwcm9uYW1lID0+ICdwZ19jb25uZWN0aW9uX3ZhbGlkYXRvcicsIHByb3JldHR5cGUgPT4g J2Jvb2wnLAorICBwcm9hcmd0eXBlcyA9PiAnX3RleHQgb2lkJywgcHJvc3JjID0+ICdwZ19jb25u ZWN0aW9uX3ZhbGlkYXRvcicgfSwKKwogeyBvaWQgPT4gJzIyOTAnLCBkZXNjciA9PiAnSS9PJywK ICAgcHJvbmFtZSA9PiAncmVjb3JkX2luJywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBl ID0+ICdyZWNvcmQnLAogICBwcm9hcmd0eXBlcyA9PiAnY3N0cmluZyBvaWQgaW50NCcsIHByb3Ny YyA9PiAncmVjb3JkX2luJyB9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5k ZXggMWQ0MGVlYmM3OC4uMDE3MzZiMDQxOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5oCkBAIC05Myw5ICs5MywxMiBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1 YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCWJvb2wJ CXN1YnJ1bmFzb3duZXI7CS8qIFRydWUgaWYgcmVwbGljYXRpb24gc2hvdWxkIGV4ZWN1dGUgYXMg dGhlCiAJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiBvd25lciAqLwogCisJT2lkCQkJc3Vic2VydmVy OwkJLyogU2V0IGlmIGNvbm5lY3Rpbmcgd2l0aCBzZXJ2ZXIgKi8KKwogI2lmZGVmIENBVEFMT0df VkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogQ29u bmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwotCXRleHQJCXN1YmNvbm5pbmZvIEJL SV9GT1JDRV9OT1RfTlVMTDsKKwl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTlVMTDsJLyog U2V0IGlmIGNvbm5lY3Rpbmcgd2l0aAorCQkJCQkJCQkJCQkgICBjb25uZWN0aW9uIHN0cmluZyAq LwogCiAJLyogU2xvdCBuYW1lIG9uIHB1Ymxpc2hlciAqLwogCU5hbWVEYXRhCXN1YnNsb3RuYW1l IEJLSV9GT1JDRV9OVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZm9yZWlnbi9mb3JlaWdu LmggYi9zcmMvaW5jbHVkZS9mb3JlaWduL2ZvcmVpZ24uaAppbmRleCA1MjU2ZDRkOTFmLi43MDU4 MzM1ZDYzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9mb3JlaWduL2ZvcmVpZ24uaAorKysgYi9z cmMvaW5jbHVkZS9mb3JlaWduL2ZvcmVpZ24uaApAQCAtNjksNiArNjksNyBAQCBleHRlcm4gRm9y ZWlnblNlcnZlciAqR2V0Rm9yZWlnblNlcnZlckV4dGVuZGVkKE9pZCBzZXJ2ZXJpZCwKIAkJCQkJ CQkJCQkJICAgYml0czE2IGZsYWdzKTsKIGV4dGVybiBGb3JlaWduU2VydmVyICpHZXRGb3JlaWdu U2VydmVyQnlOYW1lKGNvbnN0IGNoYXIgKnNydm5hbWUsCiAJCQkJCQkJCQkJCSBib29sIG1pc3Np bmdfb2spOworZXh0ZXJuIGNoYXIgKkZvcmVpZ25TZXJ2ZXJDb25uZWN0aW9uU3RyaW5nKE9pZCB1 c2VyaWQsIE9pZCBzZXJ2ZXJpZCk7CiBleHRlcm4gVXNlck1hcHBpbmcgKkdldFVzZXJNYXBwaW5n KE9pZCB1c2VyaWQsIE9pZCBzZXJ2ZXJpZCk7CiBleHRlcm4gRm9yZWlnbkRhdGFXcmFwcGVyICpH ZXRGb3JlaWduRGF0YVdyYXBwZXIoT2lkIGZkd2lkKTsKIGV4dGVybiBGb3JlaWduRGF0YVdyYXBw ZXIgKkdldEZvcmVpZ25EYXRhV3JhcHBlckV4dGVuZGVkKE9pZCBmZHdpZCwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNl bm9kZXMuaAppbmRleCBmZWY0YzcxNGI4Li4yOWZjYTE0NmEzIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rl cy5oCkBAIC0yNzQ4LDYgKzI3NDgsNyBAQCB0eXBlZGVmIHN0cnVjdCBDcmVhdGVGb3JlaWduU2Vy dmVyU3RtdAogCWNoYXIJICAgKnNlcnZlcnR5cGU7CQkvKiBvcHRpb25hbCBzZXJ2ZXIgdHlwZSAq LwogCWNoYXIJICAgKnZlcnNpb247CQkvKiBvcHRpb25hbCBzZXJ2ZXIgdmVyc2lvbiAqLwogCWNo YXIJICAgKmZkd25hbWU7CQkvKiBGRFcgbmFtZSAqLworCWJvb2wJCWNvbm5lY3Rpb25fb25seTsJ LyogaXMgQ09OTkVDVElPTiBPTkxZICovCiAJYm9vbAkJaWZfbm90X2V4aXN0czsJLyoganVzdCBk byBub3RoaW5nIGlmIGl0IGFscmVhZHkgZXhpc3RzPyAqLwogCUxpc3QJICAgKm9wdGlvbnM7CQkv KiBnZW5lcmljIG9wdGlvbnMgdG8gc2VydmVyICovCiB9IENyZWF0ZUZvcmVpZ25TZXJ2ZXJTdG10 OwpAQCAtNDA2Myw2ICs0MDY0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU3Vic2NyaXB0aW9u U3RtdAogewogCU5vZGVUYWcJCXR5cGU7CiAJY2hhcgkgICAqc3VibmFtZTsJCS8qIE5hbWUgb2Yg dGhlIHN1YnNjcmlwdGlvbiAqLworCWNoYXIJICAgKnNlcnZlcm5hbWU7CQkvKiBTZXJ2ZXIgbmFt ZSBvZiBwdWJsaXNoZXIgKi8KIAljaGFyCSAgICpjb25uaW5mbzsJCS8qIENvbm5lY3Rpb24gc3Ry aW5nIHRvIHB1Ymxpc2hlciAqLwogCUxpc3QJICAgKnB1YmxpY2F0aW9uOwkvKiBPbmUgb3IgbW9y ZSBwdWJsaWNhdGlvbiB0byBzdWJzY3JpYmUgdG8gKi8KIAlMaXN0CSAgICpvcHRpb25zOwkJLyog TGlzdCBvZiBEZWZFbGVtIG5vZGVzICovCkBAIC00MDcxLDYgKzQwNzMsNyBAQCB0eXBlZGVmIHN0 cnVjdCBDcmVhdGVTdWJzY3JpcHRpb25TdG10CiB0eXBlZGVmIGVudW0gQWx0ZXJTdWJzY3JpcHRp b25UeXBlCiB7CiAJQUxURVJfU1VCU0NSSVBUSU9OX09QVElPTlMsCisJQUxURVJfU1VCU0NSSVBU SU9OX1NFUlZFUiwKIAlBTFRFUl9TVUJTQ1JJUFRJT05fQ09OTkVDVElPTiwKIAlBTFRFUl9TVUJT Q1JJUFRJT05fU0VUX1BVQkxJQ0FUSU9OLAogCUFMVEVSX1NVQlNDUklQVElPTl9BRERfUFVCTElD QVRJT04sCkBAIC00MDg1LDYgKzQwODgsNyBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclN1YnNjcmlw dGlvblN0bXQKIAlOb2RlVGFnCQl0eXBlOwogCUFsdGVyU3Vic2NyaXB0aW9uVHlwZSBraW5kOyAv KiBBTFRFUl9TVUJTQ1JJUFRJT05fT1BUSU9OUywgZXRjICovCiAJY2hhcgkgICAqc3VibmFtZTsJ CS8qIE5hbWUgb2YgdGhlIHN1YnNjcmlwdGlvbiAqLworCWNoYXIJICAgKnNlcnZlcm5hbWU7CQkv KiBTZXJ2ZXIgbmFtZSBvZiBwdWJsaXNoZXIgKi8KIAljaGFyCSAgICpjb25uaW5mbzsJCS8qIENv bm5lY3Rpb24gc3RyaW5nIHRvIHB1Ymxpc2hlciAqLwogCUxpc3QJICAgKnB1YmxpY2F0aW9uOwkv KiBPbmUgb3IgbW9yZSBwdWJsaWNhdGlvbiB0byBzdWJzY3JpYmUgdG8gKi8KIAlMaXN0CSAgICpv cHRpb25zOwkJLyogTGlzdCBvZiBEZWZFbGVtIG5vZGVzICovCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2ZvcmVpZ25fZGF0YS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL2ZvcmVpZ25fZGF0YS5vdXQKaW5kZXggMWRmZTIzY2MxZS4uMDczMWQ4ODdhZSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JlaWduX2RhdGEub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yZWlnbl9kYXRhLm91dApAQCAtMzk0LDYgKzM5 NCw0OCBAQCBDUkVBVEUgU0VSVkVSIHQyIEZPUkVJR04gREFUQSBXUkFQUEVSIGZvbzsKIAogUkVT RVQgUk9MRTsKIFJFVk9LRSByZWdyZXNzX3Rlc3RfaW5kaXJlY3QgRlJPTSByZWdyZXNzX3Rlc3Rf cm9sZTsKKy0tIHRlc3QgU0VSVkVSIC4uLiBGT1IgQ09OTkVDVElPTiBPTkxZCitTRVQgUk9MRSBy ZWdyZXNzX3Rlc3Rfcm9sZTsKK0NSRUFURSBTRVJWRVIgdDMgRk9SIENPTk5FQ1RJT04gT05MWTsg CQkJICAgLS0gRVJST1I6IG5vdCBhIG1lbWJlciBvZiBwZ19jcmVhdGVfY29ubmVjdGlvbgorRVJS T1I6ICBwZXJtaXNzaW9uIGRlbmllZCB0byBjcmVhdGUgc2VydmVyIGNvbm5lY3Rpb24KK0RFVEFJ TDogIE9ubHkgcm9sZXMgd2l0aCBwcml2aWxlZ2VzIG9mIHRoZSAicGdfY3JlYXRlX2Nvbm5lY3Rp b24iIHJvbGUgbWF5IGNyZWF0ZSBzZXJ2ZXJzIEZPUiBDT05ORUNUSU9OIE9OTFkuCitSRVNFVCBS T0xFOworR1JBTlQgcGdfY3JlYXRlX2Nvbm5lY3Rpb24gVE8gcmVncmVzc190ZXN0X3JvbGU7CitT RVQgUk9MRSByZWdyZXNzX3Rlc3Rfcm9sZTsKK0NSRUFURSBTRVJWRVIgdDMgRk9SIENPTk5FQ1RJ T04gT05MWSBPUFRJT05TIChjbGllbnRfZW5jb2RpbmcgJ2ZvbycpOyAtLWZhaWxzCitFUlJPUjog IGNhbm5vdCBzcGVjaWZ5IGNsaWVudF9lbmNvZGluZyBpbiBzZXJ2ZXIgRk9SIENPTk5FQ1RJT04g T05MWQorQ1JFQVRFIFNFUlZFUiB0MyBGT1IgQ09OTkVDVElPTiBPTkxZIE9QVElPTlMgKHVzZXIg J2ZvbycpOyAtLWZhaWxzCitFUlJPUjogIGludmFsaWQgb3B0aW9uICJ1c2VyIiBmb3Igc2VydmVy IEZPUiBDT05ORUNUSU9OIE9OTFkKK0hJTlQ6ICBTcGVjaWZ5IG9wdGlvbiAidXNlciIgZm9yIGEg dXNlciBtYXBwaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2VydmVyIGluc3RlYWQuCitDUkVBVEUg U0VSVkVSIHQzIEZPUiBDT05ORUNUSU9OIE9OTFkgT1BUSU9OUyAocGFzc3dvcmQgJ2ZvbycpOyAt LWZhaWxzCitFUlJPUjogIGludmFsaWQgb3B0aW9uICJwYXNzd29yZCIgZm9yIHNlcnZlciBGT1Ig Q09OTkVDVElPTiBPTkxZCitISU5UOiAgU3BlY2lmeSBvcHRpb24gInBhc3N3b3JkIiBmb3IgYSB1 c2VyIG1hcHBpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZXJ2ZXIgaW5zdGVhZC4KK0NSRUFURSBT RVJWRVIgdDMgRk9SIENPTk5FQ1RJT04gT05MWSBPUFRJT05TIChwYXNzd29yZF9yZXF1aXJlZCAn dHJ1ZScpOyAtLWZhaWxzCitFUlJPUjogIGludmFsaWQgb3B0aW9uICJwYXNzd29yZF9yZXF1aXJl ZCIgZm9yIHNlcnZlciBGT1IgQ09OTkVDVElPTiBPTkxZCitISU5UOiAgU3BlY2lmeSBvcHRpb24g InBhc3N3b3JkX3JlcXVpcmVkIiBmb3IgYSB1c2VyIG1hcHBpbmcgYXNzb2NpYXRlZCB3aXRoIHRo ZSBzZXJ2ZXIgaW5zdGVhZC4KK0NSRUFURSBTRVJWRVIgdDMgRk9SIENPTk5FQ1RJT04gT05MWTsK K0lNUE9SVCBGT1JFSUdOIFNDSEVNQSBmb28gRlJPTSBTRVJWRVIgdDMgSU5UTyBiYXI7IC0tIGZh aWxzCitFUlJPUjogIGNhbm5vdCBpbXBvcnQgZm9yZWlnbiBzY2hlbWEgdXNpbmcgc2VydmVyIHRo YXQgaGFzIEZPUiBDT05ORUNUSU9OIE9OTFkgc3BlY2lmaWVkCitISU5UOiAgVXNlIGEgZm9yZWln biBzZXJ2ZXIgdGhhdCBoYXMgYSBGT1JFSUdOIERBVEEgV1JBUFBFUiBzcGVjaWZpZWQgaW5zdGVh ZC4KK0NSRUFURSBVU0VSIE1BUFBJTkcgRk9SIFBVQkxJQyBTRVJWRVIgdDMgT1BUSU9OUyAodXNl ciAneCcpOyAtLSBmYWlscworRVJST1I6ICBwYXNzd29yZCBpcyByZXF1aXJlZAorREVUQUlMOiAg Tm9uLXN1cGVydXNlcnMgbXVzdCBwcm92aWRlIGEgcGFzc3dvcmQgaW4gdGhlIGNvbm5lY3Rpb24g c3RyaW5nLgorQ1JFQVRFIFVTRVIgTUFQUElORyBGT1IgUFVCTElDIFNFUlZFUiB0MyBPUFRJT05T ICh1c2VyICd4JywgcGFzc3dvcmRfcmVxdWlyZWQgJ2ZhbHNlJyk7IC0tIGZhaWxzCitFUlJPUjog IHBhc3N3b3JkX3JlcXVpcmVkPWZhbHNlIGlzIHN1cGVydXNlci1vbmx5CitISU5UOiAgVXNlciBt YXBwaW5ncyB3aXRoIHRoZSBwYXNzd29yZF9yZXF1aXJlZCBvcHRpb24gc2V0IHRvIGZhbHNlIG1h eSBvbmx5IGJlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgYnkgdGhlIHN1cGVydXNlci4KK0NSRUFURSBV U0VSIE1BUFBJTkcgRk9SIFBVQkxJQyBTRVJWRVIgdDMgT1BUSU9OUyAodXNlciAneCcsIGFwcGxp Y2F0aW9uX25hbWUgJ25vbnNlbnNlJyk7IC0tIGZhaWxzCitFUlJPUjogIGludmFsaWQgdXNlciBt YXBwaW5nIG9wdGlvbiAiYXBwbGljYXRpb25fbmFtZSIKK0NSRUFURSBVU0VSIE1BUFBJTkcgRk9S IFBVQkxJQyBTRVJWRVIgdDMgT1BUSU9OUyAodXNlciAneCcsIHBhc3N3b3JkICdzZWNyZXQnKTsK K0RST1AgVVNFUiBNQVBQSU5HIEZPUiBQVUJMSUMgU0VSVkVSIHQzOworUkVTRVQgUk9MRTsKK0NS RUFURSBVU0VSIE1BUFBJTkcgRk9SIFBVQkxJQyBTRVJWRVIgdDMgT1BUSU9OUyAodXNlciAneCcp OyAtLSBzdGlsbCBmYWlscworRVJST1I6ICBwYXNzd29yZCBpcyByZXF1aXJlZAorREVUQUlMOiAg Tm9uLXN1cGVydXNlcnMgbXVzdCBwcm92aWRlIGEgcGFzc3dvcmQgaW4gdGhlIGNvbm5lY3Rpb24g c3RyaW5nLgorQ1JFQVRFIFVTRVIgTUFQUElORyBGT1IgUFVCTElDIFNFUlZFUiB0MyBPUFRJT05T ICh1c2VyICd4JywgcGFzc3dvcmQgJ3NlY3JldCcpOworRFJPUCBVU0VSIE1BUFBJTkcgRk9SIFBV QkxJQyBTRVJWRVIgdDM7CitDUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiBQVUJMSUMgU0VSVkVSIHQz IE9QVElPTlMgKHVzZXIgJ3gnLCBwYXNzd29yZF9yZXF1aXJlZCAnZmFsc2UnKTsKK0RST1AgVVNF UiBNQVBQSU5HIEZPUiBQVUJMSUMgU0VSVkVSIHQzOworRFJPUCBTRVJWRVIgdDM7CiAtLSBBTFRF UiBTRVJWRVIKIEFMVEVSIFNFUlZFUiBzMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0tIEVSUk9SCiBFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICI7 IgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0 IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CmluZGV4IDNjMWEw ODY5ZWMuLjA5ZDliNWRjY2MgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv c3Vic2NyaXB0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlw dGlvbi5vdXQKQEAgLTE0NCw2ICsxNDQsNDQgQEAgRVJST1I6ICBjb3VsZCBub3QgY29ubmVjdCB0 byB0aGUgcHVibGlzaGVyOiBpbnZhbGlkIHBvcnQgbnVtYmVyOiAiLTEiCiBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2Zvb2Jhcic7CiBFUlJPUjogIGludmFs aWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNzaW5nICI9IiBhZnRlciAiZm9vYmFyIiBp biBjb25uZWN0aW9uIGluZm8gc3RyaW5nCiAKKy0tIHRlbXBvcmFyaWx5IHJldm9rZSBwZ19jcmVh dGVfY29ubmVjdGlvbiBmcm9tIHBnX2NyZWF0ZV9zdWJzY3JpcHRpb24KKy0tIHRvIHRlc3QgdGhh dCBDUkVBVEUgU1VCU0NSSVBUSU9OIC4uLiBDT05ORUNUSU9OIGZhaWxzCitSRVNFVCBTRVNTSU9O IEFVVEhPUklaQVRJT047CitSRVZPS0UgcGdfY3JlYXRlX2Nvbm5lY3Rpb24gRlJPTSBwZ19jcmVh dGVfc3Vic2NyaXB0aW9uOworR1JBTlQgQ1JFQVRFIE9OIERBVEFCQVNFIFJFR1JFU1NJT04gVE8g cmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjM7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIzOworLS0gZmFpbCAtIG5vdCBhIG1lbWJlciBvZiBwZ19j cmVhdGVfY29ubmVjdGlvbiwgY2Fubm90IHVzZSBDT05ORUNUSU9OCitDUkVBVEUgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YjYgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHBhc3N3b3JkPXJlZ3Jlc3NfZmFrZXBhc3N3b3JkJyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJ VEggKHNsb3RfbmFtZSA9IE5PTkUsIGNvbm5lY3QgPSBmYWxzZSk7CitFUlJPUjogIHBlcm1pc3Np b24gZGVuaWVkIHRvIGNyZWF0ZSBzdWJzY3JpcHRpb24gd2l0aCBhIGNvbm5lY3Rpb24gc3RyaW5n CitERVRBSUw6ICBPbmx5IHJvbGVzIHdpdGggcHJpdmlsZWdlcyBvZiB0aGUgInBnX2NyZWF0ZV9j b25uZWN0aW9uIiByb2xlIG1heSBjcmVhdGUgc3Vic2NyaXB0aW9ucyB3aXRoIENPTk5FQ1RJT04g c3BlY2lmaWVkLgorSElOVDogIENyZWF0ZSBhIHN1YnNjcmlwdGlvbiB0byBhIGZvcmVpZ24gc2Vy dmVyIGJ5IHNwZWNpZnlpbmcgU0VSVkVSIGluc3RlYWQuCistLSByZS1ncmFudCBwZ19jcmVhdGVf Y29ubmVjdGlvbiB0byBwZ19jcmVhdGVfc3Vic2NyaXB0aW9uCitSRVNFVCBTRVNTSU9OIEFVVEhP UklaQVRJT047CitHUkFOVCBwZ19jcmVhdGVfY29ubmVjdGlvbiBUTyBwZ19jcmVhdGVfc3Vic2Ny aXB0aW9uOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyMzsKK0NSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNiBDT05ORUNUSU9OICdk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgcGFzc3dvcmQ9cmVncmVzc19mYWtlcGFzc3dvcmQn IFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoc2xvdF9uYW1lID0gTk9ORSwgY29ubmVjdCA9IGZh bHNlKTsKK1dBUk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29u bmVjdGVkCitISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5 IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZW5hYmxlIHRoZSBzdWJzY3JpcHRpb24sIGFu ZCByZWZyZXNoIHRoZSBzdWJzY3JpcHRpb24uCitEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWI2OworLS0gdGVzdCB1c2luZyBhIHNlcnZlciBvYmplY3QgaW5zdGVhZCBvZiBjb25uZWN0 aW9uIHN0cmluZworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworQ1JFQVRFIFNFUlZFUiBy ZWdyZXNzX3Rlc3RzZXJ2ZXIgRk9SIENPTk5FQ1RJT04gT05MWTsKK0NSRUFURSBVU0VSIE1BUFBJ TkcgRk9SIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIzIFNFUlZFUiByZWdyZXNzX3Rlc3RzZXJ2 ZXIKKyAgT1BUSU9OUyAocGFzc3dvcmRfcmVxdWlyZWQgJ2ZhbHNlJyk7CitHUkFOVCBVU0FHRSBP TiBGT1JFSUdOIFNFUlZFUiByZWdyZXNzX3Rlc3RzZXJ2ZXIgVE8gcmVncmVzc19zdWJzY3JpcHRp b25fdXNlcjM7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIzOworQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI2IFNFUlZFUiByZWdy ZXNzX3Rlc3RzZXJ2ZXIgUFVCTElDQVRJT04gdGVzdHB1YgorICBXSVRIIChzbG90X25hbWUgPSBO T05FLCBjb25uZWN0ID0gZmFsc2UpOworV0FSTklORzogIHN1YnNjcmlwdGlvbiB3YXMgY3JlYXRl ZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKK0hJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwg eW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlbmFibGUgdGhl IHN1YnNjcmlwdGlvbiwgYW5kIHJlZnJlc2ggdGhlIHN1YnNjcmlwdGlvbi4KK1JFU0VUIFNFU1NJ T04gQVVUSE9SSVpBVElPTjsKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI2IE9X TkVSIFRPIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXI7IC0tIGZhaWwsIG5vIHVzZXIgbWFwcGlu ZworRVJST1I6ICB1c2VyIG1hcHBpbmcgbm90IGZvdW5kIGZvciBzZXJ2ZXIgInJlZ3Jlc3NfdGVz dHNlcnZlciIgYW5kIHVzZXIgInJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIiCitEUk9QIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWI2OworRFJPUCBVU0VSIE1BUFBJTkcgRk9SIHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIzIFNFUlZFUiByZWdyZXNzX3Rlc3RzZXJ2ZXI7CitEUk9QIFNFUlZF UiByZWdyZXNzX3Rlc3RzZXJ2ZXI7CitSRVZPS0UgQ1JFQVRFIE9OIERBVEFCQVNFIHJlZ3Jlc3Np b24gRlJPTSByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyMzsKK1NFVCBTRVNTSU9OIEFVVEhPUkla QVRJT04gcmVncmVzc19zdWJzY3JpcHRpb25fdXNlcjsKIFxkUnMrCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwog ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFBhc3N3b3JkIHJlcXVpcmVkIHwgUnVuIGFzIG93bmVy PyB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yZWlnbl9kYXRhLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ZvcmVpZ25fZGF0YS5zcWwKaW5kZXggZWVmYjg2MGFk Yy4uODUxOWMzNGM0OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yZWlnbl9k YXRhLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JlaWduX2RhdGEuc3FsCkBAIC0x ODAsNiArMTgwLDQwIEBAIENSRUFURSBTRVJWRVIgdDIgRk9SRUlHTiBEQVRBIFdSQVBQRVIgZm9v OwogUkVTRVQgUk9MRTsKIFJFVk9LRSByZWdyZXNzX3Rlc3RfaW5kaXJlY3QgRlJPTSByZWdyZXNz X3Rlc3Rfcm9sZTsKIAorLS0gdGVzdCBTRVJWRVIgLi4uIEZPUiBDT05ORUNUSU9OIE9OTFkKKwor U0VUIFJPTEUgcmVncmVzc190ZXN0X3JvbGU7CitDUkVBVEUgU0VSVkVSIHQzIEZPUiBDT05ORUNU SU9OIE9OTFk7IAkJCSAgIC0tIEVSUk9SOiBub3QgYSBtZW1iZXIgb2YgcGdfY3JlYXRlX2Nvbm5l Y3Rpb24KK1JFU0VUIFJPTEU7CitHUkFOVCBwZ19jcmVhdGVfY29ubmVjdGlvbiBUTyByZWdyZXNz X3Rlc3Rfcm9sZTsKK1NFVCBST0xFIHJlZ3Jlc3NfdGVzdF9yb2xlOworCitDUkVBVEUgU0VSVkVS IHQzIEZPUiBDT05ORUNUSU9OIE9OTFkgT1BUSU9OUyAoY2xpZW50X2VuY29kaW5nICdmb28nKTsg LS1mYWlscworQ1JFQVRFIFNFUlZFUiB0MyBGT1IgQ09OTkVDVElPTiBPTkxZIE9QVElPTlMgKHVz ZXIgJ2ZvbycpOyAtLWZhaWxzCitDUkVBVEUgU0VSVkVSIHQzIEZPUiBDT05ORUNUSU9OIE9OTFkg T1BUSU9OUyAocGFzc3dvcmQgJ2ZvbycpOyAtLWZhaWxzCitDUkVBVEUgU0VSVkVSIHQzIEZPUiBD T05ORUNUSU9OIE9OTFkgT1BUSU9OUyAocGFzc3dvcmRfcmVxdWlyZWQgJ3RydWUnKTsgLS1mYWls cworQ1JFQVRFIFNFUlZFUiB0MyBGT1IgQ09OTkVDVElPTiBPTkxZOworCitJTVBPUlQgRk9SRUlH TiBTQ0hFTUEgZm9vIEZST00gU0VSVkVSIHQzIElOVE8gYmFyOyAtLSBmYWlscworCitDUkVBVEUg VVNFUiBNQVBQSU5HIEZPUiBQVUJMSUMgU0VSVkVSIHQzIE9QVElPTlMgKHVzZXIgJ3gnKTsgLS0g ZmFpbHMKK0NSRUFURSBVU0VSIE1BUFBJTkcgRk9SIFBVQkxJQyBTRVJWRVIgdDMgT1BUSU9OUyAo dXNlciAneCcsIHBhc3N3b3JkX3JlcXVpcmVkICdmYWxzZScpOyAtLSBmYWlscworQ1JFQVRFIFVT RVIgTUFQUElORyBGT1IgUFVCTElDIFNFUlZFUiB0MyBPUFRJT05TICh1c2VyICd4JywgYXBwbGlj YXRpb25fbmFtZSAnbm9uc2Vuc2UnKTsgLS0gZmFpbHMKKworQ1JFQVRFIFVTRVIgTUFQUElORyBG T1IgUFVCTElDIFNFUlZFUiB0MyBPUFRJT05TICh1c2VyICd4JywgcGFzc3dvcmQgJ3NlY3JldCcp OworRFJPUCBVU0VSIE1BUFBJTkcgRk9SIFBVQkxJQyBTRVJWRVIgdDM7CisKK1JFU0VUIFJPTEU7 CitDUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiBQVUJMSUMgU0VSVkVSIHQzIE9QVElPTlMgKHVzZXIg J3gnKTsgLS0gc3RpbGwgZmFpbHMKKworQ1JFQVRFIFVTRVIgTUFQUElORyBGT1IgUFVCTElDIFNF UlZFUiB0MyBPUFRJT05TICh1c2VyICd4JywgcGFzc3dvcmQgJ3NlY3JldCcpOworRFJPUCBVU0VS IE1BUFBJTkcgRk9SIFBVQkxJQyBTRVJWRVIgdDM7CisKK0NSRUFURSBVU0VSIE1BUFBJTkcgRk9S IFBVQkxJQyBTRVJWRVIgdDMgT1BUSU9OUyAodXNlciAneCcsIHBhc3N3b3JkX3JlcXVpcmVkICdm YWxzZScpOworCitEUk9QIFVTRVIgTUFQUElORyBGT1IgUFVCTElDIFNFUlZFUiB0MzsKK0RST1Ag U0VSVkVSIHQzOworCiAtLSBBTFRFUiBTRVJWRVIKIEFMVEVSIFNFUlZFUiBzMDsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIEVSUk9SCiBBTFRFUiBTRVJWRVIg czAgT1BUSU9OUyAoYSAnMScpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBFUlJPUgpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKaW5kZXggNTVkN2RiYzlhYi4uZjViMmVm ODA1YiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbAor KysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCkBAIC04OCw2ICs4OCw0 NSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjUgQ09OTkVDVElPTiAncG9y dD0tMScgUFVCTElDQVRJT04gdGVzdHB1YjsKIC0tIGZhaWwgLSBpbnZhbGlkIGNvbm5lY3Rpb24g c3RyaW5nIGR1cmluZyBBTFRFUgogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBD T05ORUNUSU9OICdmb29iYXInOwogCistLSB0ZW1wb3JhcmlseSByZXZva2UgcGdfY3JlYXRlX2Nv bm5lY3Rpb24gZnJvbSBwZ19jcmVhdGVfc3Vic2NyaXB0aW9uCistLSB0byB0ZXN0IHRoYXQgQ1JF QVRFIFNVQlNDUklQVElPTiAuLi4gQ09OTkVDVElPTiBmYWlscworUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOworUkVWT0tFIHBnX2NyZWF0ZV9jb25uZWN0aW9uIEZST00gcGdfY3JlYXRlX3N1 YnNjcmlwdGlvbjsKK0dSQU5UIENSRUFURSBPTiBEQVRBQkFTRSBSRUdSRVNTSU9OIFRPIHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyMzsKKworLS0gZmFpbCAtIG5vdCBhIG1lbWJlciBvZiBwZ19jcmVh dGVfY29ubmVjdGlvbiwgY2Fubm90IHVzZSBDT05ORUNUSU9OCitDUkVBVEUgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YjYgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 IHBhc3N3b3JkPXJlZ3Jlc3NfZmFrZXBhc3N3b3JkJyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEgg KHNsb3RfbmFtZSA9IE5PTkUsIGNvbm5lY3QgPSBmYWxzZSk7CisKKy0tIHJlLWdyYW50IHBnX2Ny ZWF0ZV9jb25uZWN0aW9uIHRvIHBnX2NyZWF0ZV9zdWJzY3JpcHRpb24KK1JFU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTjsKK0dSQU5UIHBnX2NyZWF0ZV9jb25uZWN0aW9uIFRPIHBnX2NyZWF0ZV9z dWJzY3JpcHRpb247CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIzOworCitDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjYgQ09OTkVD VElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHBhc3N3b3JkPXJlZ3Jlc3NfZmFrZXBh c3N3b3JkJyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKHNsb3RfbmFtZSA9IE5PTkUsIGNvbm5l Y3QgPSBmYWxzZSk7CitEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI2OworCistLSB0 ZXN0IHVzaW5nIGEgc2VydmVyIG9iamVjdCBpbnN0ZWFkIG9mIGNvbm5lY3Rpb24gc3RyaW5nCisK K1JFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKK0NSRUFURSBTRVJWRVIgcmVncmVzc190ZXN0 c2VydmVyIEZPUiBDT05ORUNUSU9OIE9OTFk7CitDUkVBVEUgVVNFUiBNQVBQSU5HIEZPUiByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyMyBTRVJWRVIgcmVncmVzc190ZXN0c2VydmVyCisgIE9QVElP TlMgKHBhc3N3b3JkX3JlcXVpcmVkICdmYWxzZScpOworR1JBTlQgVVNBR0UgT04gRk9SRUlHTiBT RVJWRVIgcmVncmVzc190ZXN0c2VydmVyIFRPIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIzOwor CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIzOwor Q1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI2IFNFUlZFUiByZWdyZXNzX3Rlc3Rz ZXJ2ZXIgUFVCTElDQVRJT04gdGVzdHB1YgorICBXSVRIIChzbG90X25hbWUgPSBOT05FLCBjb25u ZWN0ID0gZmFsc2UpOworUkVTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OOworCitBTFRFUiBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViNiBPV05FUiBUTyByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyOyAtLSBmYWlsLCBubyB1c2VyIG1hcHBpbmcKK0RST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YjY7CisKK0RST1AgVVNFUiBNQVBQSU5HIEZPUiByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyMyBTRVJWRVIgcmVncmVzc190ZXN0c2VydmVyOworRFJPUCBTRVJWRVIgcmVncmVzc190ZXN0 c2VydmVyOworUkVWT0tFIENSRUFURSBPTiBEQVRBQkFTRSByZWdyZXNzaW9uIEZST00gcmVncmVz c19zdWJzY3JpcHRpb25fdXNlcjM7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXI7CisKIFxkUnMrCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIFBVQkxJQ0FUSU9OIHRlc3RwdWIyLCB0ZXN0cHViMyBXSVRIIChyZWZyZXNo ID0gZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDAxX3JlcF9j aGFuZ2VzLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDAxX3JlcF9jaGFuZ2VzLnBsCmlu ZGV4IDBhMzk5Y2RiODIuLjEzYjM1ODY4YTcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAwMV9yZXBfY2hhbmdlcy5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MDFfcmVwX2NoYW5nZXMucGwKQEAgLTI3LDYgKzI3LDggQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFRBQkxFIHRhYl9ub3RyZXAgQVMgU0VMRUNUIGdl bmVyYXRlX3NlcmllcygxLDEwKSBBUyBhIik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJDUkVBVEUgVEFCTEUgdGFiX2lucyBBUyBTRUxFQ1QgZ2VuZXJhdGVfc2Vy aWVzKDEsMTAwMikgQVMgYSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQ1JFQVRFIFRBQkxFIHRhYl9pbnMyIEFTIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwx MDAyKSBBUyBhIik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJD UkVBVEUgVEFCTEUgdGFiX2Z1bGwgQVMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyBh Iik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxF IHRhYl9mdWxsMiAoeCB0ZXh0KSIpOwpAQCAtNjAsNiArNjIsNyBAQCAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogIyBTZXR1cCBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlcgog JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGFi X25vdHJlcCAoYSBpbnQpIik7CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkNSRUFURSBUQUJMRSB0YWJfaW5zIChhIGludCkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRhYl9pbnMyIChhIGludCkiKTsKICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRhYl9m dWxsIChhIGludCkiKTsKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi Q1JFQVRFIFRBQkxFIHRhYl9mdWxsMiAoeCB0ZXh0KSIpOwogJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC0xMDIsNiArMTA1LDIyIEBAICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09O TkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBfcHViLCB0YXBfcHVi X2luc19vbmx5IgogKTsKIAorbXkgJHB1Ymxpc2hlcl9ob3N0ID0gJG5vZGVfcHVibGlzaGVyLT5o b3N0OworbXkgJHB1Ymxpc2hlcl9wb3J0ID0gJG5vZGVfcHVibGlzaGVyLT5wb3J0OworJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBTRVJWRVIgdGFwX3N1 YjJfc2VydmVyIEZPUiBDT05ORUNUSU9OIE9OTFkgT1BUSU9OUyAoaG9zdCAnJHB1Ymxpc2hlcl9o b3N0JywgcG9ydCAnJHB1Ymxpc2hlcl9wb3J0JywgZGJuYW1lICdwb3N0Z3JlcycpIgorKTsKKwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVU0VSIE1B UFBJTkcgRk9SIFBVQkxJQyBTRVJWRVIgdGFwX3N1YjJfc2VydmVyIE9QVElPTlMgKHBhc3N3b3Jk X3JlcXVpcmVkICdmYWxzZScpIgorKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfc2ltcGxlX3B1YiBGT1IgVEFCTEUgdGFi X2luczIiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YjIgU0VSVkVSIHRhcF9zdWIyX3NlcnZlciBQVUJMSUNB VElPTiB0YXBfc2ltcGxlX3B1YiIKKyk7CisKICMgV2FpdCBmb3IgaW5pdGlhbCB0YWJsZSBzeW5j IHRvIGZpbmlzaAogJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jfc3Vic2NyaXB0aW9uX3N5bmMo JG5vZGVfcHVibGlzaGVyLCAndGFwX3N1YicpOwogCkBAIC0xMTMsMTEgKzEzMiwyMiBAQCAkcmVz dWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0YWJfaW5zIik7CiBpcygkcmVzdWx0LCBxcSgxMDAyKSwgJ2NoZWNrIGlu aXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAorJHJlc3VsdCA9CisgICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdGFiX2luczIiKTsKK2lzKCRyZXN1bHQsIHFxKDEwMDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRh IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViMiBDT05ORUNUSU9OICck cHVibGlzaGVyX2Nvbm5zdHInIik7CisKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIklOU0VSVCBJTlRPIHRhYl9pbnMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLDUw KSIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9N IHRhYl9pbnMgV0hFUkUgYSA+IDIwIik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiVVBEQVRFIHRhYl9pbnMgU0VUIGEgPSAtYSIpOwogCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0YWJfaW5zMiBTRUxFQ1QgZ2Vu ZXJhdGVfc2VyaWVzKDEsNTApIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIyIFNFUlZFUiB0YXBfc3ViMl9zZXJ2 ZXIiKTsKKwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiSU5TRVJU IElOVE8gdGFiX3JlcCBTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsNTApIik7CiAkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGFiX3JlcCBXSEVSRSBh ID4gMjAiKTsKQEAgLTE0Nyw2ICsxNzcsMTAgQEAgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIG1pbihhKSwgbWF4KGEp IEZST00gdGFiX2lucyIpOwogaXMoJHJlc3VsdCwgcXEoMTA1MnwxfDEwMDIpLCAnY2hlY2sgcmVw bGljYXRlZCBpbnNlcnRzIG9uIHN1YnNjcmliZXInKTsKIAorJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKiksIG1pbihhKSwg bWF4KGEpIEZST00gdGFiX2luczIiKTsKK2lzKCRyZXN1bHQsIHFxKDEwNTJ8MXwxMDAyKSwgJ2No ZWNrIHJlcGxpY2F0ZWQgaW5zZXJ0cyBvbiBzdWJzY3JpYmVyJyk7CisKICRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCopLCBt aW4oYSksIG1heChhKSBGUk9NIHRhYl9yZXAiKTsKIGlzKCRyZXN1bHQsIHFxKDIwfC0yMHwtMSks ICdjaGVjayByZXBsaWNhdGVkIGNoYW5nZXMgb24gc3Vic2NyaWJlcicpOwpAQCAtNDM0LDEwICs0 NjgsMjcgQEAgJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAg IG9yIGRpZQogICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQg YWZ0ZXIgY2hhbmdpbmcgUFVCTElDQVRJT04iOwogCisjIHRlc3QgdGhhdCBjaGFuZ2VzIHRvIGEg Zm9yZWlnbiBzZXJ2ZXIgc3Vic2NyaXB0aW9uIGNhdXNlIHRoZSB3b3JrZXIKKyMgdG8gcmVzdGFy dAorJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUg PSAndGFwX3N1YjInIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyk7Ciskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU0VSVkVSIHRhcF9zdWIyX3NlcnZl ciBPUFRJT05TIChzc2xtb2RlICdkaXNhYmxlJykiCispOworJG5vZGVfcHVibGlzaGVyLT5wb2xs X3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICd0YXBfc3ViMicgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxl IHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgUFVCTElDQVRJT04i OworCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJJTlNFUlQgSU5U TyB0YWJfaW5zIFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxMTAwKSIpOwogJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRhYl9yZXAiKTsKIAor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGFi X2luczIgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxMDAxLDExMDApIik7CisKICMgUmVzdGFydCB0 aGUgcHVibGlzaGVyIGFuZCBjaGVjayB0aGUgc3RhdGUgb2YgdGhlIHN1YnNjcmliZXIgd2hpY2gK ICMgc2hvdWxkIGJlIGluIGEgc3RyZWFtaW5nIHN0YXRlIGFmdGVyIGNhdGNoaW5nIHVwLgogJG5v ZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7CkBAIC00NTAsNiArNTAxLDExIEBAICRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIGlzKCRyZXN1bHQsIHFx KDExNTJ8MXwxMTAwKSwKIAknY2hlY2sgcmVwbGljYXRlZCBpbnNlcnRzIGFmdGVyIHN1YnNjcmlw dGlvbiBwdWJsaWNhdGlvbiBjaGFuZ2UnKTsKIAorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKiksIG1pbihhKSwgbWF4KGEp IEZST00gdGFiX2luczIiKTsKK2lzKCRyZXN1bHQsIHFxKDExNTJ8MXwxMTAwKSwKKwknY2hlY2sg cmVwbGljYXRlZCBpbnNlcnRzIGFmdGVyIHN1YnNjcmlwdGlvbiBwdWJsaWNhdGlvbiBjaGFuZ2Un KTsKKwogJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CSJTRUxFQ1QgY291bnQoKiksIG1pbihhKSwgbWF4KGEpIEZST00gdGFiX3JlcCIpOwogaXMoJHJl c3VsdCwgcXEoMjB8LTIwfC0xKSwKQEAgLTUxOCw2ICs1NzQsNyBAQCAkbm9kZV9wdWJsaXNoZXIt PnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKIAogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAK ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBTVUJTQ1JJUFRJ T04gdGFwX3N1Yl9yZW5hbWVkIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWIyIik7CiAKICRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfc3Vic2NyaXB0aW9uIik7Ci0tIAoyLjM0LjEKCg== --=-gTF9xPPXildKvbk5jdMe--