Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nVyPO-00051k-Ri for pgsql-hackers@arkaria.postgresql.org; Sun, 20 Mar 2022 16:27:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nVyPN-0005e3-Fe for pgsql-hackers@arkaria.postgresql.org; Sun, 20 Mar 2022 16:27:57 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nVyPM-0005ds-MK for pgsql-hackers@lists.postgresql.org; Sun, 20 Mar 2022 16:27:57 +0000 Received: from mail-vk1-xa35.google.com ([2607:f8b0:4864:20::a35]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nVyPI-0005Et-Kn for pgsql-hackers@postgresql.org; Sun, 20 Mar 2022 16:27:56 +0000 Received: by mail-vk1-xa35.google.com with SMTP id 6so3729114vkc.10 for ; Sun, 20 Mar 2022 09:27:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joeconway.com; s=google; h=message-id:date:mime-version:user-agent:content-language:to:cc :references:from:subject:in-reply-to; bh=iocgWZ4dbJ2Y7jiCyQx4dmewMsiEX1mqjyZnnyHs1Zs=; b=HRohTgcdjUPpmxd6Y8e/en4LDkE00nXL2pfR51L0dC7cwIBTHLPPoHuBV09BF/EClY Uln1J/Qeoh59rbGAXXNshmfQo/3SU4UCmRRZ+e2sHuV7BDQ7AMxd0OZgi4wCrbhwqOky jVvYkQEa5Xt44Dq+yELl+WEDgJuSpzwI/EcBw+u+ijoYNmzM/I4UQJvwLmFWzBDygt4y qQGcE7AFX0FzINHf1bNDde+NxcJ0Mu2lMvxroI34DIrmALOto933CyJ8O6wz7KKPY1vW TGw9FuQdxy/Mcu5/tuGqB0SwPV7LYAie59iugKY/P5zty89CRYJM1qEPQZscWw1Tz2M2 P7Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent :content-language:to:cc:references:from:subject:in-reply-to; bh=iocgWZ4dbJ2Y7jiCyQx4dmewMsiEX1mqjyZnnyHs1Zs=; b=o3aU5K6vdTdRKHcl7mxGrBcqc/jK6REurOrj5FXA1NpgYapOCwkm21nhYh/eAUh/W4 PQj1QwTcVPgeUrC6MnaUbs1sPLawdPUkoP5lBvCz3R2rwSih6MnHPsCzd7Irqep3uprE /9Xf0r95WPFw1sZnjbqirJDAXAvoayEZW9EPyYaJ9kmbctM41H2fZQT5uqcX6hvPE5OF d0cwjnqp/FrFOM7AspmkFymoPHMQbnyvUaHOd7z0cdvMwraiOUX+A5/ZpTaHfqTr4EEc Bb9oEKPR58sKzLGyqoGvd7xhj413pKaveK3wdBgILGE/+/O+d4CFHEkyVsPLOApbzJwB pnDw== X-Gm-Message-State: AOAM532xsccDIpv05AYTT+3K3dt2MhkRfGKFRjrvKdXhsutQPC9Yw1Pn DhUcZIkrDxoF63NDxDpIuCuzdQ== X-Google-Smtp-Source: ABdhPJw/DdoJjcSfGW1cvs4V1usJI8wr5ylmU76BITYsEEuEmBm7lnmQO1DoLoig5P320b4HIsuxUw== X-Received: by 2002:a1f:ac04:0:b0:32d:710:5930 with SMTP id v4-20020a1fac04000000b0032d07105930mr6450107vke.6.1647793669871; Sun, 20 Mar 2022 09:27:49 -0700 (PDT) Received: from [192.168.4.41] (072-017-018-098.res.spectrum.com. [72.17.18.98]) by smtp.gmail.com with ESMTPSA id f126-20020a1f3884000000b00325e1ced68asm1612991vka.10.2022.03.20.09.27.48 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 20 Mar 2022 09:27:49 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------e99ASZbPQBwkrQHSK3Di52Ng" Message-ID: <744cf762-47d3-050f-5fa1-d4f9e8dbae2e@joeconway.com> Date: Sun, 20 Mar 2022 12:27:47 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US To: Joshua Brindle Cc: Nathan Bossart , Robert Haas , Tom Lane , "Bossart, Nathan" , Stephen Frost , PostgreSQL-development References: <80af9ba7-ec24-9134-8fd9-00bf13f5c494@joeconway.com> <18eab9b6-1f77-72b2-83d3-1856c17f3fcb@joeconway.com> <0b1b6cfb-d752-28f6-7ccb-993998be0189@joeconway.com> <20220209181333.GD1627503@nathanxps13> <20220210192829.GB1684442@nathanxps13> <6135d0b7-3af9-d6fa-cdaa-990a2fc12147@joeconway.com> From: Joe Conway Subject: Re: [PATCH v2] use has_privs_for_role for predefined roles In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------e99ASZbPQBwkrQHSK3Di52Ng Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 3/3/22 11:26, Joshua Brindle wrote: > On Thu, Feb 10, 2022 at 2:37 PM Joe Conway wrote: >> >> On 2/10/22 14:28, Nathan Bossart wrote: >> > On Wed, Feb 09, 2022 at 04:39:11PM -0500, Joe Conway wrote: >> >> On 2/9/22 13:13, Nathan Bossart wrote: >> >>> I do wonder if users find the differences between predefined roles and role >> >>> attributes confusing. INHERIT doesn't govern role attributes, but it will >> >>> govern predefined roles when this patch is applied. Maybe the role >> >>> attribute system should eventually be deprecated in favor of using >> >>> predefined roles for everything. Or perhaps the predefined roles should be >> >>> converted to role attributes. >> >> >> >> Yep, I was suggesting that the latter would have been preferable to me while >> >> Robert seemed to prefer the former. Honestly I could be happy with either of >> >> those solutions, but as I alluded to that is probably a discussion for the >> >> next development cycle since I don't see us doing that big a change in this >> >> one. >> > >> > I agree. I still think Joshua's proposed patch is a worthwhile improvement >> > for v15. >> >> +1 >> >> I am planning to get into it in detail this weekend. So far I have >> really just ensured it merges cleanly and passes make world. > > Rebased patch to apply to master attached. Well longer than I planned, but finally took a closer look. I made one minor editorial fix to Joshua's patch, rebased to current master, and added two missing call sites that presumably are related to recent commits for pg_basebackup. On that last note, I did not find basebackup_to_shell.required_role documented at all, and did not attempt to fix that. When this thread petered out, it seemed that Robert was at least neutral on the patch, and everyone else was +1 on applying it to master for pg15. As such, if there are any other issues, complaints, etc., please speak real soon now... Thanks, Joe --------------e99ASZbPQBwkrQHSK3Di52Ng Content-Type: text/x-patch; charset=UTF-8; name="v6-0001-use-has_privs_for_roles-for-predefined-role-checks.patch" Content-Disposition: attachment; filename*0="v6-0001-use-has_privs_for_roles-for-predefined-role-checks.p"; filename*1="atch" Content-Transfer-Encoding: base64 VXNlIGhhc19wcml2c19mb3Jfcm9sZXMgZm9yIHByZWRlZmluZWQgcm9sZSBjaGVja3MKCkdl bmVyYWxseSBpZiBhIHJvbGUgaXMgZ3JhbnRlZCBtZW1iZXJzaGlwIHRvIGFub3RoZXIgcm9s ZSB3aXRoIE5PSU5IRVJJVCB0aGV5IG11c3QgdXNlIFNFVCBST0xFIHRvIGFjY2VzcyB0aGUg cHJpdmlsZWdlcyBvZiB0aGF0IHJvbGUsIGhvd2V2ZXIgd2l0aCBwcmVkZWZpbmVkIHJvbGVz IHRoZSBtZW1iZXJzaGlwIGFuZCBwcml2aWxlZ2UgaXMgY29uZmxhdGVkLiBGaXggdGhhdCBi eSByZXBsYWNpbmcgaXNfbWVtYmVyX29mX3JvbGUgd2l0aCBoYXNfcHJpdnNfZm9yX3JvbGUg Zm9yIHByZWRlZmluZWQgcm9sZXMuIFBhdGNoIGRvZXMgbm90IHJlbW92ZSBpc19tZW1iZXJf b2Zfcm9sZSBmcm9tIGFjbC5oLCBidXQgaXQgZG9lcyBhZGQgYSB3YXJuaW5nIG5vdCB0byB1 c2UgdGhhdCBmdW5jdGlvbiBmb3IgcHJpdmlsZWdlIGNoZWNraW5nLiBOb3QgYmFja3BhdGNo ZWQgYmFzZWQgb24gaGFja2VycyBsaXN0IGRpc2N1c3Npb24uCgpBdXRob3I6IEpvc2h1YSBC cmluZGxlClJldmlld2VkLWJ5OiBTdGVwaGVuIEZyb3N0LCBOYXRoYW4gQm9zc2FydCwgSm9l IENvbndheQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL2ZsYXQvQ0FHQitWaDRa dl9Udkt0MnR2M1FOUzZ0VU1fRl85aWNtdWowemp5d3djZ1ZpNFBBaEZBQG1haWwuZ21haWwu Y29tCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hZG1pbnBhY2svYWRtaW5wYWNrLmMgYi9jb250 cmliL2FkbWlucGFjay9hZG1pbnBhY2suYwppbmRleCBkN2Q4NGQwLi4wM2FkZGYxIDEwMDY0 NAoqKiogYS9jb250cmliL2FkbWlucGFjay9hZG1pbnBhY2suYwotLS0gYi9jb250cmliL2Fk bWlucGFjay9hZG1pbnBhY2suYwoqKioqKioqKioqKioqKiogY29udmVydF9hbmRfY2hlY2tf ZmlsZW5hbWUodGV4dCAqYXJnKQoqKiogNzksODUgKioqKgogIAkgKiBmaWxlcyBvbiB0aGUg c2VydmVyIGFzIHRoZSBQRyB1c2VyLCBzbyBubyBuZWVkIHRvIGRvIGFueSBmdXJ0aGVyIGNo ZWNrcwogIAkgKiBoZXJlLgogIAkgKi8KISAJaWYgKGlzX21lbWJlcl9vZl9yb2xlKEdldFVz ZXJJZCgpLCBST0xFX1BHX1dSSVRFX1NFUlZFUl9GSUxFUykpCiAgCQlyZXR1cm4gZmlsZW5h bWU7CiAgCiAgCS8qCi0tLSA3OSw4NSAtLS0tCiAgCSAqIGZpbGVzIG9uIHRoZSBzZXJ2ZXIg YXMgdGhlIFBHIHVzZXIsIHNvIG5vIG5lZWQgdG8gZG8gYW55IGZ1cnRoZXIgY2hlY2tzCiAg CSAqIGhlcmUuCiAgCSAqLwohIAlpZiAoaGFzX3ByaXZzX29mX3JvbGUoR2V0VXNlcklkKCks IFJPTEVfUEdfV1JJVEVfU0VSVkVSX0ZJTEVTKSkKICAJCXJldHVybiBmaWxlbmFtZTsKICAK ICAJLyoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmFzZWJhY2t1cF90b19zaGVsbC9iYXNlYmFj a3VwX3RvX3NoZWxsLmMgYi9jb250cmliL2Jhc2ViYWNrdXBfdG9fc2hlbGwvYmFzZWJhY2t1 cF90b19zaGVsbC5jCmluZGV4IGQ4MmNiNmQuLmYwZGRlZjEgMTAwNjQ0CioqKiBhL2NvbnRy aWIvYmFzZWJhY2t1cF90b19zaGVsbC9iYXNlYmFja3VwX3RvX3NoZWxsLmMKLS0tIGIvY29u dHJpYi9iYXNlYmFja3VwX3RvX3NoZWxsL2Jhc2ViYWNrdXBfdG9fc2hlbGwuYwoqKioqKioq KioqKioqKiogX1BHX2luaXQodm9pZCkKKioqIDkwLDk2ICoqKioKICB9CiAgCiAgLyoKISAg KiBXZSBjaG9vc2UgdG8gZGVmZXIgc2FuaXR5IHNhbml0eSBjaGVja2luZyB1bnRpbCBzaGVs bF9nZXRfc2luaygpLCBhbmQgc28KICAgKiBqdXN0IHBhc3MgdGhlIHRhcmdldCBkZXRhaWwg dGhyb3VnaCB3aXRob3V0IGRvaW5nIGFueXRoaW5nLiBIb3dldmVyLCB3ZSBkbwogICAqIHBl cm1pc3Npb25zIGNoZWNrcyBoZXJlLCBiZWZvcmUgYW55IHJlYWwgd29yayBoYXMgYmVlbiBk b25lLgogICAqLwotLS0gOTAsOTYgLS0tLQogIH0KICAKICAvKgohICAqIFdlIGNob29zZSB0 byBkZWZlciBzYW5pdHkgY2hlY2tpbmcgdW50aWwgc2hlbGxfZ2V0X3NpbmsoKSwgYW5kIHNv CiAgICoganVzdCBwYXNzIHRoZSB0YXJnZXQgZGV0YWlsIHRocm91Z2ggd2l0aG91dCBkb2lu ZyBhbnl0aGluZy4gSG93ZXZlciwgd2UgZG8KICAgKiBwZXJtaXNzaW9ucyBjaGVja3MgaGVy ZSwgYmVmb3JlIGFueSByZWFsIHdvcmsgaGFzIGJlZW4gZG9uZS4KICAgKi8KKioqKioqKioq KioqKioqIHNoZWxsX2NoZWNrX2RldGFpbChjaGFyICp0YXJnZXQsIGNoYXIgKnQKKioqIDEw MywxMDkgKioqKgogIAogIAkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKICAJCXJvbGVp ZCA9IGdldF9yb2xlX29pZChzaGVsbF9yZXF1aXJlZF9yb2xlLCB0cnVlKTsKISAJCWlmICgh aXNfbWVtYmVyX29mX3JvbGUoR2V0VXNlcklkKCksIHJvbGVpZCkpCiAgCQkJZXJlcG9ydChF UlJPUiwKICAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSks CiAgCQkJCQkgZXJybXNnKCJwZXJtaXNzaW9uIGRlbmllZCB0byB1c2UgYmFzZWJhY2t1cF90 b19zaGVsbCIpKSk7Ci0tLSAxMDMsMTA5IC0tLS0KICAKICAJCVN0YXJ0VHJhbnNhY3Rpb25D b21tYW5kKCk7CiAgCQlyb2xlaWQgPSBnZXRfcm9sZV9vaWQoc2hlbGxfcmVxdWlyZWRfcm9s ZSwgdHJ1ZSk7CiEgCQlpZiAoIWhhc19wcml2c19vZl9yb2xlKEdldFVzZXJJZCgpLCByb2xl aWQpKQogIAkJCWVyZXBvcnQoRVJST1IsCiAgCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VG RklDSUVOVF9QUklWSUxFR0UpLAogIAkJCQkJIGVycm1zZygicGVybWlzc2lvbiBkZW5pZWQg dG8gdXNlIGJhc2ViYWNrdXBfdG9fc2hlbGwiKSkpOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9m aWxlX2Zkdy9leHBlY3RlZC9maWxlX2Zkdy5vdXQgYi9jb250cmliL2ZpbGVfZmR3L2V4cGVj dGVkL2ZpbGVfZmR3Lm91dAppbmRleCAwYWM2ZTRlLi4xNGFjZGIyIDEwMDY0NAoqKiogYS9j b250cmliL2ZpbGVfZmR3L2V4cGVjdGVkL2ZpbGVfZmR3Lm91dAotLS0gYi9jb250cmliL2Zp bGVfZmR3L2V4cGVjdGVkL2ZpbGVfZmR3Lm91dAoqKioqKioqKioqKioqKiogQUxURVIgRk9S RUlHTiBUQUJMRSBhZ2dfdGV4dCBPV05FUiBUTyByZQoqKiogNDU5LDQ2NSAqKioqCiAgQUxU RVIgRk9SRUlHTiBUQUJMRSBhZ2dfdGV4dCBPUFRJT05TIChTRVQgZm9ybWF0ICd0ZXh0Jyk7 CiAgU0VUIFJPTEUgcmVncmVzc19maWxlX2Zkd191c2VyOwogIEFMVEVSIEZPUkVJR04gVEFC TEUgYWdnX3RleHQgT1BUSU9OUyAoU0VUIGZvcm1hdCAndGV4dCcpOwohIEVSUk9SOiAgb25s eSBzdXBlcnVzZXIgb3IgYSBtZW1iZXIgb2YgdGhlIHBnX3JlYWRfc2VydmVyX2ZpbGVzIHJv bGUgbWF5IHNwZWNpZnkgdGhlIGZpbGVuYW1lIG9wdGlvbiBvZiBhIGZpbGVfZmR3IGZvcmVp Z24gdGFibGUKICBTRVQgUk9MRSByZWdyZXNzX2ZpbGVfZmR3X3N1cGVydXNlcjsKICAtLSBj bGVhbnVwCiAgUkVTRVQgUk9MRTsKLS0tIDQ1OSw0NjUgLS0tLQogIEFMVEVSIEZPUkVJR04g VEFCTEUgYWdnX3RleHQgT1BUSU9OUyAoU0VUIGZvcm1hdCAndGV4dCcpOwogIFNFVCBST0xF IHJlZ3Jlc3NfZmlsZV9mZHdfdXNlcjsKICBBTFRFUiBGT1JFSUdOIFRBQkxFIGFnZ190ZXh0 IE9QVElPTlMgKFNFVCBmb3JtYXQgJ3RleHQnKTsKISBFUlJPUjogIG9ubHkgc3VwZXJ1c2Vy IG9yIGEgcm9sZSB3aXRoIHByaXZpbGVnZXMgb2YgdGhlIHBnX3JlYWRfc2VydmVyX2ZpbGVz IHJvbGUgbWF5IHNwZWNpZnkgdGhlIGZpbGVuYW1lIG9wdGlvbiBvZiBhIGZpbGVfZmR3IGZv cmVpZ24gdGFibGUKICBTRVQgUk9MRSByZWdyZXNzX2ZpbGVfZmR3X3N1cGVydXNlcjsKICAt LSBjbGVhbnVwCiAgUkVTRVQgUk9MRTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZmlsZV9mZHcv ZmlsZV9mZHcuYyBiL2NvbnRyaWIvZmlsZV9mZHcvZmlsZV9mZHcuYwppbmRleCBkYjA4NTkz Li40NzczY2FkIDEwMDY0NAoqKiogYS9jb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMKLS0t IGIvY29udHJpYi9maWxlX2Zkdy9maWxlX2Zkdy5jCioqKioqKioqKioqKioqKiBmaWxlX2Zk d192YWxpZGF0b3IoUEdfRlVOQ1RJT05fQVJHUykKKioqIDI2OSwyODQgKioqKgogIAkJCSAq IG90aGVyd2lzZSB0aGVyZSdkIHN0aWxsIGJlIGEgc2VjdXJpdHkgaG9sZS4KICAJCQkgKi8K ICAJCQlpZiAoc3RyY21wKGRlZi0+ZGVmbmFtZSwgImZpbGVuYW1lIikgPT0gMCAmJgohIAkJ CQkhaXNfbWVtYmVyX29mX3JvbGUoR2V0VXNlcklkKCksIFJPTEVfUEdfUkVBRF9TRVJWRVJf RklMRVMpKQogIAkJCQllcmVwb3J0KEVSUk9SLAogIAkJCQkJCShlcnJjb2RlKEVSUkNPREVf SU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCiEgCQkJCQkJIGVycm1zZygib25seSBzdXBlcnVz ZXIgb3IgYSBtZW1iZXIgb2YgdGhlIHBnX3JlYWRfc2VydmVyX2ZpbGVzIHJvbGUgbWF5IHNw ZWNpZnkgdGhlIGZpbGVuYW1lIG9wdGlvbiBvZiBhIGZpbGVfZmR3IGZvcmVpZ24gdGFibGUi KSkpOwogIAogIAkJCWlmIChzdHJjbXAoZGVmLT5kZWZuYW1lLCAicHJvZ3JhbSIpID09IDAg JiYKISAJCQkJIWlzX21lbWJlcl9vZl9yb2xlKEdldFVzZXJJZCgpLCBST0xFX1BHX0VYRUNV VEVfU0VSVkVSX1BST0dSQU0pKQogIAkJCQllcmVwb3J0KEVSUk9SLAogIAkJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCiEgCQkJCQkJIGVycm1zZygi b25seSBzdXBlcnVzZXIgb3IgYSBtZW1iZXIgb2YgdGhlIHBnX2V4ZWN1dGVfc2VydmVyX3By b2dyYW0gcm9sZSBtYXkgc3BlY2lmeSB0aGUgcHJvZ3JhbSBvcHRpb24gb2YgYSBmaWxlX2Zk dyBmb3JlaWduIHRhYmxlIikpKTsKICAKICAJCQlmaWxlbmFtZSA9IGRlZkdldFN0cmluZyhk ZWYpOwogIAkJfQotLS0gMjY5LDI4NCAtLS0tCiAgCQkJICogb3RoZXJ3aXNlIHRoZXJlJ2Qg c3RpbGwgYmUgYSBzZWN1cml0eSBob2xlLgogIAkJCSAqLwogIAkJCWlmIChzdHJjbXAoZGVm LT5kZWZuYW1lLCAiZmlsZW5hbWUiKSA9PSAwICYmCiEgCQkJCSFoYXNfcHJpdnNfb2Zfcm9s ZShHZXRVc2VySWQoKSwgUk9MRV9QR19SRUFEX1NFUlZFUl9GSUxFUykpCiAgCQkJCWVyZXBv cnQoRVJST1IsCiAgCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklM RUdFKSwKISAJCQkJCQkgZXJybXNnKCJvbmx5IHN1cGVydXNlciBvciBhIHJvbGUgd2l0aCBw cml2aWxlZ2VzIG9mIHRoZSBwZ19yZWFkX3NlcnZlcl9maWxlcyByb2xlIG1heSBzcGVjaWZ5 IHRoZSBmaWxlbmFtZSBvcHRpb24gb2YgYSBmaWxlX2ZkdyBmb3JlaWduIHRhYmxlIikpKTsK ICAKICAJCQlpZiAoc3RyY21wKGRlZi0+ZGVmbmFtZSwgInByb2dyYW0iKSA9PSAwICYmCiEg CQkJCSFoYXNfcHJpdnNfb2Zfcm9sZShHZXRVc2VySWQoKSwgUk9MRV9QR19FWEVDVVRFX1NF UlZFUl9QUk9HUkFNKSkKICAJCQkJZXJlcG9ydChFUlJPUiwKICAJCQkJCQkoZXJyY29kZShF UlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAohIAkJCQkJCSBlcnJtc2coIm9ubHkg c3VwZXJ1c2VyIG9yIGEgcm9sZSB3aXRoIHByaXZpbGVnZXMgb2YgdGhlIHBnX2V4ZWN1dGVf c2VydmVyX3Byb2dyYW0gcm9sZSBtYXkgc3BlY2lmeSB0aGUgcHJvZ3JhbSBvcHRpb24gb2Yg YSBmaWxlX2ZkdyBmb3JlaWduIHRhYmxlIikpKTsKICAKICAJCQlmaWxlbmFtZSA9IGRlZkdl dFN0cmluZyhkZWYpOwogIAkJfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wZ19zdGF0X3N0YXRl bWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMgYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9wZ19zdGF0X3N0YXRlbWVudHMuYwppbmRleCA5ZTUyNWE2Li41NTc4NmFlIDEwMDY0NAoq KiogYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwot LS0gYi9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYwoq KioqKioqKioqKioqKiogcGdfc3RhdF9zdGF0ZW1lbnRzX2ludGVybmFsKEZ1bmN0aW9uQ2Fs bAoqKiogMTUwMywxNTEwICoqKioKICAJSEFTSF9TRVFfU1RBVFVTIGhhc2hfc2VxOwogIAlw Z3NzRW50cnkgICplbnRyeTsKICAKISAJLyogU3VwZXJ1c2VycyBvciBtZW1iZXJzIG9mIHBn X3JlYWRfYWxsX3N0YXRzIG1lbWJlcnMgYXJlIGFsbG93ZWQgKi8KISAJaXNfYWxsb3dlZF9y b2xlID0gaXNfbWVtYmVyX29mX3JvbGUodXNlcmlkLCBST0xFX1BHX1JFQURfQUxMX1NUQVRT KTsKICAKICAJLyogaGFzaCB0YWJsZSBtdXN0IGV4aXN0IGFscmVhZHkgKi8KICAJaWYgKCFw Z3NzIHx8ICFwZ3NzX2hhc2gpCi0tLSAxNTAzLDE1MTAgLS0tLQogIAlIQVNIX1NFUV9TVEFU VVMgaGFzaF9zZXE7CiAgCXBnc3NFbnRyeSAgKmVudHJ5OwogIAohIAkvKiBTdXBlcnVzZXJz IG9yIHJvbGVzIHdpdGggdGhlIHByaXZpbGVnZXMgb2YgcGdfcmVhZF9hbGxfc3RhdHMgbWVt YmVycyBhcmUgYWxsb3dlZCAqLwohIAlpc19hbGxvd2VkX3JvbGUgPSBoYXNfcHJpdnNfb2Zf cm9sZSh1c2VyaWQsIFJPTEVfUEdfUkVBRF9BTExfU1RBVFMpOwogIAogIAkvKiBoYXNoIHRh YmxlIG11c3QgZXhpc3QgYWxyZWFkeSAqLwogIAlpZiAoIXBnc3MgfHwgIXBnc3NfaGFzaCkK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tzLmMgYi9jb250cmli L3Bncm93bG9ja3MvcGdyb3dsb2Nrcy5jCmluZGV4IDcxM2ExNjUuLjFkNGQ0OTYgMTAwNjQ0 CioqKiBhL2NvbnRyaWIvcGdyb3dsb2Nrcy9wZ3Jvd2xvY2tzLmMKLS0tIGIvY29udHJpYi9w Z3Jvd2xvY2tzL3Bncm93bG9ja3MuYwoqKioqKioqKioqKioqKiogcGdyb3dsb2NrcyhQR19G VU5DVElPTl9BUkdTKQoqKiogMTA0LDExMCAqKioqCiAgCWFjbHJlc3VsdCA9IHBnX2NsYXNz X2FjbGNoZWNrKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgR2V0VXNlcklkKCksCiAgCQkJCQkJ CQkgIEFDTF9TRUxFQ1QpOwogIAlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQohIAkJ YWNscmVzdWx0ID0gaXNfbWVtYmVyX29mX3JvbGUoR2V0VXNlcklkKCksIFJPTEVfUEdfU1RB VF9TQ0FOX1RBQkxFUykgPyBBQ0xDSEVDS19PSyA6IEFDTENIRUNLX05PX1BSSVY7CiAgCiAg CWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCiAgCQlhY2xjaGVja19lcnJvcihhY2xy ZXN1bHQsIGdldF9yZWxraW5kX29ianR5cGUocmVsLT5yZF9yZWwtPnJlbGtpbmQpLAotLS0g MTA0LDExMCAtLS0tCiAgCWFjbHJlc3VsdCA9IHBnX2NsYXNzX2FjbGNoZWNrKFJlbGF0aW9u R2V0UmVsaWQocmVsKSwgR2V0VXNlcklkKCksCiAgCQkJCQkJCQkgIEFDTF9TRUxFQ1QpOwog IAlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQohIAkJYWNscmVzdWx0ID0gaGFzX3By aXZzX29mX3JvbGUoR2V0VXNlcklkKCksIFJPTEVfUEdfU1RBVF9TQ0FOX1RBQkxFUykgPyBB Q0xDSEVDS19PSyA6IEFDTENIRUNLX05PX1BSSVY7CiAgCiAgCWlmIChhY2xyZXN1bHQgIT0g QUNMQ0hFQ0tfT0spCiAgCQlhY2xjaGVja19lcnJvcihhY2xyZXN1bHQsIGdldF9yZWxraW5k X29ianR5cGUocmVsLT5yZF9yZWwtPnJlbGtpbmQpLApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2FkbWlucGFjay5zZ21sIGIvZG9jL3NyYy9zZ21sL2FkbWlucGFjay5zZ21sCmluZGV4 IDBkZDg5YmUuLjU3MDI0NTYgMTAwNjQ0CioqKiBhL2RvYy9zcmMvc2dtbC9hZG1pbnBhY2su c2dtbAotLS0gYi9kb2Mvc3JjL3NnbWwvYWRtaW5wYWNrLnNnbWwKKioqKioqKioqKioqKioq CioqKiAyMiwzMCAqKioqCiAgICBmdW5jdGlvbnMgaW4gPHhyZWYgbGlua2VuZD0iZnVuY3Rp b25zLWFkbWluLWdlbmZpbGUtdGFibGUiLz4sIHdoaWNoCiAgICBwcm92aWRlIHJlYWQtb25s eSBhY2Nlc3MuKQogICAgT25seSBmaWxlcyB3aXRoaW4gdGhlIGRhdGFiYXNlIGNsdXN0ZXIg ZGlyZWN0b3J5IGNhbiBiZSBhY2Nlc3NlZCwgdW5sZXNzIHRoZQohICAgdXNlciBpcyBhIHN1 cGVydXNlciBvciBnaXZlbiBvbmUgb2YgdGhlIHBnX3JlYWRfc2VydmVyX2ZpbGVzLCBvciBw Z193cml0ZV9zZXJ2ZXJfZmlsZXMKISAgIHJvbGVzLCBhcyBhcHByb3ByaWF0ZSBmb3IgdGhl IGZ1bmN0aW9uLCBidXQgZWl0aGVyIGEgcmVsYXRpdmUgb3IgYWJzb2x1dGUgcGF0aCBpcwoh ICAgYWxsb3dhYmxlLgogICA8L3BhcmE+CiAgCiAgIDx0YWJsZSBpZD0iZnVuY3Rpb25zLWFk bWlucGFjay10YWJsZSI+Ci0tLSAyMiwzMCAtLS0tCiAgICBmdW5jdGlvbnMgaW4gPHhyZWYg bGlua2VuZD0iZnVuY3Rpb25zLWFkbWluLWdlbmZpbGUtdGFibGUiLz4sIHdoaWNoCiAgICBw cm92aWRlIHJlYWQtb25seSBhY2Nlc3MuKQogICAgT25seSBmaWxlcyB3aXRoaW4gdGhlIGRh dGFiYXNlIGNsdXN0ZXIgZGlyZWN0b3J5IGNhbiBiZSBhY2Nlc3NlZCwgdW5sZXNzIHRoZQoh ICAgdXNlciBpcyBhIHN1cGVydXNlciBvciBnaXZlbiBwcml2aWxlZ2VzIG9mIG9uZSBvZiB0 aGUgcGdfcmVhZF9zZXJ2ZXJfZmlsZXMsIAohICAgb3IgcGdfd3JpdGVfc2VydmVyX2ZpbGVz IHJvbGVzLCBhcyBhcHByb3ByaWF0ZSBmb3IgdGhlIGZ1bmN0aW9uLCBidXQgZWl0aGVyIGEK ISAgIHJlbGF0aXZlIG9yIGFic29sdXRlIHBhdGggaXMgYWxsb3dhYmxlLgogICA8L3BhcmE+ CiAgCiAgIDx0YWJsZSBpZD0iZnVuY3Rpb25zLWFkbWlucGFjay10YWJsZSI+CmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sCmluZGV4IDRkYzViMzQuLjUwMTBjNjMgMTAwNjQ0CioqKiBhL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sCi0tLSBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCioqKioq KioqKioqKioqKiBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uCioq KiAxMDAwNiwxMDAxMyAqKioqCiAgCiAgICA8cGFyYT4KICAgICBCeSBkZWZhdWx0LCB0aGUg PHN0cnVjdG5hbWU+cGdfYmFja2VuZF9tZW1vcnlfY29udGV4dHM8L3N0cnVjdG5hbWU+IHZp ZXcgY2FuIGJlCiEgICAgcmVhZCBvbmx5IGJ5IHN1cGVydXNlcnMgb3IgbWVtYmVycyBvZiB0 aGUgPGxpdGVyYWw+cGdfcmVhZF9hbGxfc3RhdHM8L2xpdGVyYWw+CiEgICAgcm9sZS4KICAg IDwvcGFyYT4KICAgPC9zZWN0MT4KICAKLS0tIDEwMDA2LDEwMDEzIC0tLS0KICAKICAgIDxw YXJhPgogICAgIEJ5IGRlZmF1bHQsIHRoZSA8c3RydWN0bmFtZT5wZ19iYWNrZW5kX21lbW9y eV9jb250ZXh0czwvc3RydWN0bmFtZT4gdmlldyBjYW4gYmUKISAgICByZWFkIG9ubHkgYnkg c3VwZXJ1c2VycyBvciByb2xlcyB3aXRoIHRoZSBwcml2aWxlZ2VzIG9mIHRoZQohICAgIDxs aXRlcmFsPnBnX3JlYWRfYWxsX3N0YXRzPC9saXRlcmFsPiByb2xlLgogICAgPC9wYXJhPgog ICA8L3NlY3QxPgogIAoqKioqKioqKioqKioqKiogU0VMRUNUICogRlJPTSBwZ19sb2NrcyBw bCBMRUZUIEpPSU4gcGdfcAoqKiogMTI0NDgsMTI0NTQgKioqKgogICAgICAgIDxwYXJhPgog ICAgICAgICBDb25maWd1cmF0aW9uIGZpbGUgdGhlIGN1cnJlbnQgdmFsdWUgd2FzIHNldCBp biAobnVsbCBmb3IKICAgICAgICAgdmFsdWVzIHNldCBmcm9tIHNvdXJjZXMgb3RoZXIgdGhh biBjb25maWd1cmF0aW9uIGZpbGVzLCBvciB3aGVuCiEgICAgICAgIGV4YW1pbmVkIGJ5IGEg dXNlciB3aG8gaXMgbmVpdGhlciBhIHN1cGVydXNlciBvciBhIG1lbWJlciBvZgogICAgICAg ICA8bGl0ZXJhbD5wZ19yZWFkX2FsbF9zZXR0aW5nczwvbGl0ZXJhbD4pOyBoZWxwZnVsIHdo ZW4gdXNpbmcKICAgICAgICAgPGxpdGVyYWw+aW5jbHVkZTwvbGl0ZXJhbD4gZGlyZWN0aXZl cyBpbiBjb25maWd1cmF0aW9uIGZpbGVzCiAgICAgICAgPC9wYXJhPjwvZW50cnk+Ci0tLSAx MjQ0OCwxMjQ1NCAtLS0tCiAgICAgICAgPHBhcmE+CiAgICAgICAgIENvbmZpZ3VyYXRpb24g ZmlsZSB0aGUgY3VycmVudCB2YWx1ZSB3YXMgc2V0IGluIChudWxsIGZvcgogICAgICAgICB2 YWx1ZXMgc2V0IGZyb20gc291cmNlcyBvdGhlciB0aGFuIGNvbmZpZ3VyYXRpb24gZmlsZXMs IG9yIHdoZW4KISAgICAgICAgZXhhbWluZWQgYnkgYSB1c2VyIHdobyBuZWl0aGVyIGlzIGEg c3VwZXJ1c2VyIG5vciBoYXMgcHJpdmlsZWdlcyBvZgogICAgICAgICA8bGl0ZXJhbD5wZ19y ZWFkX2FsbF9zZXR0aW5nczwvbGl0ZXJhbD4pOyBoZWxwZnVsIHdoZW4gdXNpbmcKICAgICAg ICAgPGxpdGVyYWw+aW5jbHVkZTwvbGl0ZXJhbD4gZGlyZWN0aXZlcyBpbiBjb25maWd1cmF0 aW9uIGZpbGVzCiAgICAgICAgPC9wYXJhPjwvZW50cnk+CioqKioqKioqKioqKioqKiBTRUxF Q1QgKiBGUk9NIHBnX2xvY2tzIHBsIExFRlQgSk9JTiBwZ19wCioqKiAxMjQ2MSwxMjQ2NyAq KioqCiAgICAgICAgPHBhcmE+CiAgICAgICAgIExpbmUgbnVtYmVyIHdpdGhpbiB0aGUgY29u ZmlndXJhdGlvbiBmaWxlIHRoZSBjdXJyZW50IHZhbHVlIHdhcwogICAgICAgICBzZXQgYXQg KG51bGwgZm9yIHZhbHVlcyBzZXQgZnJvbSBzb3VyY2VzIG90aGVyIHRoYW4gY29uZmlndXJh dGlvbiBmaWxlcywKISAgICAgICAgb3Igd2hlbiBleGFtaW5lZCBieSBhIHVzZXIgd2hvIGlz IG5laXRoZXIgYSBzdXBlcnVzZXIgb3IgYSBtZW1iZXIgb2YKICAgICAgICAgPGxpdGVyYWw+ cGdfcmVhZF9hbGxfc2V0dGluZ3M8L2xpdGVyYWw+KS4KICAgICAgICA8L3BhcmE+PC9lbnRy eT4KICAgICAgIDwvcm93PgotLS0gMTI0NjEsMTI0NjcgLS0tLQogICAgICAgIDxwYXJhPgog ICAgICAgICBMaW5lIG51bWJlciB3aXRoaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSB0aGUg Y3VycmVudCB2YWx1ZSB3YXMKICAgICAgICAgc2V0IGF0IChudWxsIGZvciB2YWx1ZXMgc2V0 IGZyb20gc291cmNlcyBvdGhlciB0aGFuIGNvbmZpZ3VyYXRpb24gZmlsZXMsCiEgICAgICAg IG9yIHdoZW4gZXhhbWluZWQgYnkgYSB1c2VyIHdobyBuZWl0aGVyIGlzIGEgc3VwZXJ1c2Vy IG5vciBoYXMgcHJpdmlsZWdlcyBvZgogICAgICAgICA8bGl0ZXJhbD5wZ19yZWFkX2FsbF9z ZXR0aW5nczwvbGl0ZXJhbD4pLgogICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAgPC9y b3c+CioqKioqKioqKioqKioqKiBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tzIHBsIExFRlQgSk9J TiBwZ19wCioqKiAxMjgzNywxMjg0NCAqKioqCiAgCiAgICA8cGFyYT4KICAgICBCeSBkZWZh dWx0LCB0aGUgPHN0cnVjdG5hbWU+cGdfc2htZW1fYWxsb2NhdGlvbnM8L3N0cnVjdG5hbWU+ IHZpZXcgY2FuIGJlCiEgICAgcmVhZCBvbmx5IGJ5IHN1cGVydXNlcnMgb3IgbWVtYmVycyBv ZiB0aGUgPGxpdGVyYWw+cGdfcmVhZF9hbGxfc3RhdHM8L2xpdGVyYWw+CiEgICAgcm9sZS4K ICAgIDwvcGFyYT4KICAgPC9zZWN0MT4KICAKLS0tIDEyODM3LDEyODQ0IC0tLS0KICAKICAg IDxwYXJhPgogICAgIEJ5IGRlZmF1bHQsIHRoZSA8c3RydWN0bmFtZT5wZ19zaG1lbV9hbGxv Y2F0aW9uczwvc3RydWN0bmFtZT4gdmlldyBjYW4gYmUKISAgICByZWFkIG9ubHkgYnkgc3Vw ZXJ1c2VycyBvciByb2xlcyB3aXRoIHByaXZpbGVnZXMgb2YgdGhlCiEgICAgPGxpdGVyYWw+ cGdfcmVhZF9hbGxfc3RhdHM8L2xpdGVyYWw+IHJvbGUuCiAgICA8L3BhcmE+CiAgIDwvc2Vj dDE+CiAgCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZnVuYy5zZ21sIGIvZG9jL3NyYy9z Z21sL2Z1bmMuc2dtbAppbmRleCA4YTgwMmZiLi4zYTlkNjJiIDEwMDY0NAoqKiogYS9kb2Mv c3JjL3NnbWwvZnVuYy5zZ21sCi0tLSBiL2RvYy9zcmMvc2dtbC9mdW5jLnNnbWwKKioqKioq KioqKioqKioqIFNFTEVDVCBjb2xsYXRpb24gZm9yICgnZm9vJyBDT0xMQVRFICJkZV8KKioq IDI1NDM1LDI1NDQxICoqKioKICAgICAgICAgIENhbmNlbHMgdGhlIGN1cnJlbnQgcXVlcnkg b2YgdGhlIHNlc3Npb24gd2hvc2UgYmFja2VuZCBwcm9jZXNzIGhhcyB0aGUKICAgICAgICAg IHNwZWNpZmllZCBwcm9jZXNzIElELiAgVGhpcyBpcyBhbHNvIGFsbG93ZWQgaWYgdGhlCiAg ICAgICAgICBjYWxsaW5nIHJvbGUgaXMgYSBtZW1iZXIgb2YgdGhlIHJvbGUgd2hvc2UgYmFj a2VuZCBpcyBiZWluZyBjYW5jZWxlZCBvcgohICAgICAgICAgdGhlIGNhbGxpbmcgcm9sZSBo YXMgYmVlbiBncmFudGVkIDxsaXRlcmFsPnBnX3NpZ25hbF9iYWNrZW5kPC9saXRlcmFsPiwK ICAgICAgICAgIGhvd2V2ZXIgb25seSBzdXBlcnVzZXJzIGNhbiBjYW5jZWwgc3VwZXJ1c2Vy IGJhY2tlbmRzLgogICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KLS0t IDI1NDM1LDI1NDQxIC0tLS0KICAgICAgICAgIENhbmNlbHMgdGhlIGN1cnJlbnQgcXVlcnkg b2YgdGhlIHNlc3Npb24gd2hvc2UgYmFja2VuZCBwcm9jZXNzIGhhcyB0aGUKICAgICAgICAg IHNwZWNpZmllZCBwcm9jZXNzIElELiAgVGhpcyBpcyBhbHNvIGFsbG93ZWQgaWYgdGhlCiAg ICAgICAgICBjYWxsaW5nIHJvbGUgaXMgYSBtZW1iZXIgb2YgdGhlIHJvbGUgd2hvc2UgYmFj a2VuZCBpcyBiZWluZyBjYW5jZWxlZCBvcgohICAgICAgICAgdGhlIGNhbGxpbmcgcm9sZSBo YXMgcHJpdmlsZWdlcyBvZiA8bGl0ZXJhbD5wZ19zaWduYWxfYmFja2VuZDwvbGl0ZXJhbD4s CiAgICAgICAgICBob3dldmVyIG9ubHkgc3VwZXJ1c2VycyBjYW4gY2FuY2VsIHN1cGVydXNl ciBiYWNrZW5kcy4KICAgICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICAgPC9yb3c+Cioq KioqKioqKioqKioqKiBTRUxFQ1QgY29sbGF0aW9uIGZvciAoJ2ZvbycgQ09MTEFURSAiZGVf CioqKiAyNTUwOCwyNTUxNCAqKioqCiAgICAgICAgICBUZXJtaW5hdGVzIHRoZSBzZXNzaW9u IHdob3NlIGJhY2tlbmQgcHJvY2VzcyBoYXMgdGhlCiAgICAgICAgICBzcGVjaWZpZWQgcHJv Y2VzcyBJRC4gIFRoaXMgaXMgYWxzbyBhbGxvd2VkIGlmIHRoZSBjYWxsaW5nIHJvbGUKICAg ICAgICAgIGlzIGEgbWVtYmVyIG9mIHRoZSByb2xlIHdob3NlIGJhY2tlbmQgaXMgYmVpbmcg dGVybWluYXRlZCBvciB0aGUKISAgICAgICAgIGNhbGxpbmcgcm9sZSBoYXMgYmVlbiBncmFu dGVkIDxsaXRlcmFsPnBnX3NpZ25hbF9iYWNrZW5kPC9saXRlcmFsPiwKICAgICAgICAgIGhv d2V2ZXIgb25seSBzdXBlcnVzZXJzIGNhbiB0ZXJtaW5hdGUgc3VwZXJ1c2VyIGJhY2tlbmRz LgogICAgICAgICA8L3BhcmE+CiAgICAgICAgIDxwYXJhPgotLS0gMjU1MDgsMjU1MTQgLS0t LQogICAgICAgICAgVGVybWluYXRlcyB0aGUgc2Vzc2lvbiB3aG9zZSBiYWNrZW5kIHByb2Nl c3MgaGFzIHRoZQogICAgICAgICAgc3BlY2lmaWVkIHByb2Nlc3MgSUQuICBUaGlzIGlzIGFs c28gYWxsb3dlZCBpZiB0aGUgY2FsbGluZyByb2xlCiAgICAgICAgICBpcyBhIG1lbWJlciBv ZiB0aGUgcm9sZSB3aG9zZSBiYWNrZW5kIGlzIGJlaW5nIHRlcm1pbmF0ZWQgb3IgdGhlCiEg ICAgICAgICBjYWxsaW5nIHJvbGUgaGFzIHByaXZpbGVnZXMgb2YgPGxpdGVyYWw+cGdfc2ln bmFsX2JhY2tlbmQ8L2xpdGVyYWw+LAogICAgICAgICAgaG93ZXZlciBvbmx5IHN1cGVydXNl cnMgY2FuIHRlcm1pbmF0ZSBzdXBlcnVzZXIgYmFja2VuZHMuCiAgICAgICAgIDwvcGFyYT4K ICAgICAgICAgPHBhcmE+CioqKioqKioqKioqKioqKiBwb3N0Z3Jlcz0jIFNFTEVDVCAqIEZS T00gcGdfd2FsZmlsZV9uYW1lCioqKiAyNjc4MywyNjc4OSAqKioqCiAgICAgICAgICBDb21w dXRlcyB0aGUgdG90YWwgZGlzayBzcGFjZSB1c2VkIGJ5IHRoZSBkYXRhYmFzZSB3aXRoIHRo ZSBzcGVjaWZpZWQKICAgICAgICAgIG5hbWUgb3IgT0lELiAgVG8gdXNlIHRoaXMgZnVuY3Rp b24sIHlvdSBtdXN0CiAgICAgICAgICBoYXZlIDxsaXRlcmFsPkNPTk5FQ1Q8L2xpdGVyYWw+ IHByaXZpbGVnZSBvbiB0aGUgc3BlY2lmaWVkIGRhdGFiYXNlCiEgICAgICAgICAod2hpY2gg aXMgZ3JhbnRlZCBieSBkZWZhdWx0KSBvciBiZSBhIG1lbWJlciBvZgogICAgICAgICAgdGhl IDxsaXRlcmFsPnBnX3JlYWRfYWxsX3N0YXRzPC9saXRlcmFsPiByb2xlLgogICAgICAgICA8 L3BhcmE+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KLS0tIDI2NzgzLDI2Nzg5IC0tLS0KICAg ICAgICAgIENvbXB1dGVzIHRoZSB0b3RhbCBkaXNrIHNwYWNlIHVzZWQgYnkgdGhlIGRhdGFi YXNlIHdpdGggdGhlIHNwZWNpZmllZAogICAgICAgICAgbmFtZSBvciBPSUQuICBUbyB1c2Ug dGhpcyBmdW5jdGlvbiwgeW91IG11c3QKICAgICAgICAgIGhhdmUgPGxpdGVyYWw+Q09OTkVD VDwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uIHRoZSBzcGVjaWZpZWQgZGF0YWJhc2UKISAgICAg ICAgICh3aGljaCBpcyBncmFudGVkIGJ5IGRlZmF1bHQpIG9yIGhhdmUgcHJpdmlsZWdlcyBv ZgogICAgICAgICAgdGhlIDxsaXRlcmFsPnBnX3JlYWRfYWxsX3N0YXRzPC9saXRlcmFsPiBy b2xlLgogICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KKioqKioqKioq KioqKioqIHBvc3RncmVzPSMgU0VMRUNUICogRlJPTSBwZ193YWxmaWxlX25hbWUKKioqIDI2 OTEzLDI2OTE5ICoqKioKICAgICAgICAgIENvbXB1dGVzIHRoZSB0b3RhbCBkaXNrIHNwYWNl IHVzZWQgaW4gdGhlIHRhYmxlc3BhY2Ugd2l0aCB0aGUKICAgICAgICAgIHNwZWNpZmllZCBu YW1lIG9yIE9JRC4gVG8gdXNlIHRoaXMgZnVuY3Rpb24sIHlvdSBtdXN0CiAgICAgICAgICBo YXZlIDxsaXRlcmFsPkNSRUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uIHRoZSBzcGVjaWZp ZWQgdGFibGVzcGFjZQohICAgICAgICAgb3IgYmUgYSBtZW1iZXIgb2YgdGhlIDxsaXRlcmFs PnBnX3JlYWRfYWxsX3N0YXRzPC9saXRlcmFsPiByb2xlLAogICAgICAgICAgdW5sZXNzIGl0 IGlzIHRoZSBkZWZhdWx0IHRhYmxlc3BhY2UgZm9yIHRoZSBjdXJyZW50IGRhdGFiYXNlLgog ICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgICA8L3Jvdz4KLS0tIDI2OTEzLDI2OTE5 IC0tLS0KICAgICAgICAgIENvbXB1dGVzIHRoZSB0b3RhbCBkaXNrIHNwYWNlIHVzZWQgaW4g dGhlIHRhYmxlc3BhY2Ugd2l0aCB0aGUKICAgICAgICAgIHNwZWNpZmllZCBuYW1lIG9yIE9J RC4gVG8gdXNlIHRoaXMgZnVuY3Rpb24sIHlvdSBtdXN0CiAgICAgICAgICBoYXZlIDxsaXRl cmFsPkNSRUFURTwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uIHRoZSBzcGVjaWZpZWQgdGFibGVz cGFjZQohICAgICAgICAgb3IgaGF2ZSBwcml2aWxlZ2VzIG9mIHRoZSA8bGl0ZXJhbD5wZ19y ZWFkX2FsbF9zdGF0czwvbGl0ZXJhbD4gcm9sZSwKICAgICAgICAgIHVubGVzcyBpdCBpcyB0 aGUgZGVmYXVsdCB0YWJsZXNwYWNlIGZvciB0aGUgY3VycmVudCBkYXRhYmFzZS4KICAgICAg ICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICAgPC9yb3c+CioqKioqKioqKioqKioqKiBTRUxF Q1QgcGdfc2l6ZV9wcmV0dHkoc3VtKHBnX3JlbGF0aW9uX3NpCioqKiAyNzM5MiwyNzM5OCAq KioqCiAgICAgICAgICBhIGRvdCwgZGlyZWN0b3JpZXMsIGFuZCBvdGhlciBzcGVjaWFsIGZp bGVzIGFyZSBleGNsdWRlZC4KICAgICAgICAgPC9wYXJhPgogICAgICAgICA8cGFyYT4KISAg ICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgcmVzdHJpY3RlZCB0byBzdXBlcnVzZXJzIGFuZCBt ZW1iZXJzIG9mCiAgICAgICAgICB0aGUgPGxpdGVyYWw+cGdfbW9uaXRvcjwvbGl0ZXJhbD4g cm9sZSBieSBkZWZhdWx0LCBidXQgb3RoZXIgdXNlcnMgY2FuCiAgICAgICAgICBiZSBncmFu dGVkIEVYRUNVVEUgdG8gcnVuIHRoZSBmdW5jdGlvbi4KICAgICAgICAgPC9wYXJhPjwvZW50 cnk+Ci0tLSAyNzM5MiwyNzM5OCAtLS0tCiAgICAgICAgICBhIGRvdCwgZGlyZWN0b3JpZXMs IGFuZCBvdGhlciBzcGVjaWFsIGZpbGVzIGFyZSBleGNsdWRlZC4KICAgICAgICAgPC9wYXJh PgogICAgICAgICA8cGFyYT4KISAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgcmVzdHJpY3Rl ZCB0byBzdXBlcnVzZXJzIGFuZCByb2xlcyB3aXRoIHByaXZpbGVnZXMgb2YKICAgICAgICAg IHRoZSA8bGl0ZXJhbD5wZ19tb25pdG9yPC9saXRlcmFsPiByb2xlIGJ5IGRlZmF1bHQsIGJ1 dCBvdGhlciB1c2VycyBjYW4KICAgICAgICAgIGJlIGdyYW50ZWQgRVhFQ1VURSB0byBydW4g dGhlIGZ1bmN0aW9uLgogICAgICAgICA8L3BhcmE+PC9lbnRyeT4KKioqKioqKioqKioqKioq IFNFTEVDVCBwZ19zaXplX3ByZXR0eShzdW0ocGdfcmVsYXRpb25fc2kKKioqIDI3NDE2LDI3 NDIyICoqKioKICAgICAgICAgIGFyZSBleGNsdWRlZC4KICAgICAgICAgPC9wYXJhPgogICAg ICAgICA8cGFyYT4KISAgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgcmVzdHJpY3RlZCB0byBz dXBlcnVzZXJzIGFuZCBtZW1iZXJzIG9mCiAgICAgICAgICB0aGUgPGxpdGVyYWw+cGdfbW9u aXRvcjwvbGl0ZXJhbD4gcm9sZSBieSBkZWZhdWx0LCBidXQgb3RoZXIgdXNlcnMgY2FuCiAg ICAgICAgICBiZSBncmFudGVkIEVYRUNVVEUgdG8gcnVuIHRoZSBmdW5jdGlvbi4KICAgICAg ICAgPC9wYXJhPjwvZW50cnk+Ci0tLSAyNzQxNiwyNzQyMiAtLS0tCiAgICAgICAgICBhcmUg ZXhjbHVkZWQuCiAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPHBhcmE+CiEgICAgICAgICBU aGlzIGZ1bmN0aW9uIGlzIHJlc3RyaWN0ZWQgdG8gc3VwZXJ1c2VycyBhbmQgcm9sZXMgd2l0 aCBwcml2aWxlZ2VzIG9mIAogICAgICAgICAgdGhlIDxsaXRlcmFsPnBnX21vbml0b3I8L2xp dGVyYWw+IHJvbGUgYnkgZGVmYXVsdCwgYnV0IG90aGVyIHVzZXJzIGNhbgogICAgICAgICAg YmUgZ3JhbnRlZCBFWEVDVVRFIHRvIHJ1biB0aGUgZnVuY3Rpb24uCiAgICAgICAgIDwvcGFy YT48L2VudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBi L2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggMzViMjkyMy4uNmE2YjA5ZCAx MDA2NDQKKioqIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAotLS0gYi9kb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sCioqKioqKioqKioqKioqKiBwb3N0Z3JlcyAgIDI3MDkz ICAwLjAgIDAuMCAgMzAwOTYgIDI3NTIKKioqIDI4MCwyODYgKioqKgogICAgIChzZXNzaW9u cyBiZWxvbmdpbmcgdG8gYSByb2xlIHRoYXQgdGhleSBhcmUgYSBtZW1iZXIgb2YpLiAgSW4g cm93cyBhYm91dAogICAgIG90aGVyIHNlc3Npb25zLCBtYW55IGNvbHVtbnMgd2lsbCBiZSBu dWxsLiAgTm90ZSwgaG93ZXZlciwgdGhhdCB0aGUKICAgICBleGlzdGVuY2Ugb2YgYSBzZXNz aW9uIGFuZCBpdHMgZ2VuZXJhbCBwcm9wZXJ0aWVzIHN1Y2ggYXMgaXRzIHNlc3Npb25zIHVz ZXIKISAgICBhbmQgZGF0YWJhc2UgYXJlIHZpc2libGUgdG8gYWxsIHVzZXJzLiAgU3VwZXJ1 c2VycyBhbmQgbWVtYmVycyBvZiB0aGUKICAgICBidWlsdC1pbiByb2xlIDxsaXRlcmFsPnBn X3JlYWRfYWxsX3N0YXRzPC9saXRlcmFsPiAoc2VlIGFsc28gPHhyZWYKICAgICBsaW5rZW5k PSJwcmVkZWZpbmVkLXJvbGVzIi8+KSBjYW4gc2VlIGFsbCB0aGUgaW5mb3JtYXRpb24gYWJv dXQgYWxsIHNlc3Npb25zLgogICAgPC9wYXJhPgotLS0gMjgwLDI4NiAtLS0tCiAgICAgKHNl c3Npb25zIGJlbG9uZ2luZyB0byBhIHJvbGUgdGhhdCB0aGV5IGFyZSBhIG1lbWJlciBvZiku ICBJbiByb3dzIGFib3V0CiAgICAgb3RoZXIgc2Vzc2lvbnMsIG1hbnkgY29sdW1ucyB3aWxs IGJlIG51bGwuICBOb3RlLCBob3dldmVyLCB0aGF0IHRoZQogICAgIGV4aXN0ZW5jZSBvZiBh IHNlc3Npb24gYW5kIGl0cyBnZW5lcmFsIHByb3BlcnRpZXMgc3VjaCBhcyBpdHMgc2Vzc2lv bnMgdXNlcgohICAgIGFuZCBkYXRhYmFzZSBhcmUgdmlzaWJsZSB0byBhbGwgdXNlcnMuICBT dXBlcnVzZXJzIGFuZCByb2xlcyB3aXRoIHByaXZpbGVnZXMgb2YKICAgICBidWlsdC1pbiBy b2xlIDxsaXRlcmFsPnBnX3JlYWRfYWxsX3N0YXRzPC9saXRlcmFsPiAoc2VlIGFsc28gPHhy ZWYKICAgICBsaW5rZW5kPSJwcmVkZWZpbmVkLXJvbGVzIi8+KSBjYW4gc2VlIGFsbCB0aGUg aW5mb3JtYXRpb24gYWJvdXQgYWxsIHNlc3Npb25zLgogICAgPC9wYXJhPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3BnYnVmZmVyY2FjaGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9wZ2J1 ZmZlcmNhY2hlLnNnbWwKaW5kZXggZTY4ZDE1OS4uYTA2ZmQzZSAxMDA2NDQKKioqIGEvZG9j L3NyYy9zZ21sL3BnYnVmZmVyY2FjaGUuc2dtbAotLS0gYi9kb2Mvc3JjL3NnbWwvcGdidWZm ZXJjYWNoZS5zZ21sCioqKioqKioqKioqKioqKgoqKiogMjQsMzAgKioqKgogICA8L3BhcmE+ CiAgCiAgIDxwYXJhPgohICAgQnkgZGVmYXVsdCwgdXNlIGlzIHJlc3RyaWN0ZWQgdG8gc3Vw ZXJ1c2VycyBhbmQgbWVtYmVycyBvZiB0aGUKICAgIDxsaXRlcmFsPnBnX21vbml0b3I8L2xp dGVyYWw+IHJvbGUuIEFjY2VzcyBtYXkgYmUgZ3JhbnRlZCB0byBvdGhlcnMKICAgIHVzaW5n IDxjb21tYW5kPkdSQU5UPC9jb21tYW5kPi4KICAgPC9wYXJhPgotLS0gMjQsMzAgLS0tLQog ICA8L3BhcmE+CiAgCiAgIDxwYXJhPgohICAgQnkgZGVmYXVsdCwgdXNlIGlzIHJlc3RyaWN0 ZWQgdG8gc3VwZXJ1c2VycyBhbmQgcm9sZXMgd2l0aCBwcml2aWxlZ2VzIG9mIHRoZQogICAg PGxpdGVyYWw+cGdfbW9uaXRvcjwvbGl0ZXJhbD4gcm9sZS4gQWNjZXNzIG1heSBiZSBncmFu dGVkIHRvIG90aGVycwogICAgdXNpbmcgPGNvbW1hbmQ+R1JBTlQ8L2NvbW1hbmQ+LgogICA8 L3BhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcGdmcmVlc3BhY2VtYXAuc2dtbCBi L2RvYy9zcmMvc2dtbC9wZ2ZyZWVzcGFjZW1hcC5zZ21sCmluZGV4IDFmNzg2N2QuLjMwNjM4 ODUgMTAwNjQ0CioqKiBhL2RvYy9zcmMvc2dtbC9wZ2ZyZWVzcGFjZW1hcC5zZ21sCi0tLSBi L2RvYy9zcmMvc2dtbC9wZ2ZyZWVzcGFjZW1hcC5zZ21sCioqKioqKioqKioqKioqKgoqKiog MTYsMjIgKioqKgogICA8L3BhcmE+CiAgCiAgIDxwYXJhPgohICAgQnkgZGVmYXVsdCB1c2Ug aXMgcmVzdHJpY3RlZCB0byBzdXBlcnVzZXJzIGFuZCBtZW1iZXJzIG9mIHRoZQogICAgPGxp dGVyYWw+cGdfc3RhdF9zY2FuX3RhYmxlczwvbGl0ZXJhbD4gcm9sZS4gQWNjZXNzIG1heSBi ZSBncmFudGVkIHRvIG90aGVycwogICAgdXNpbmcgPGNvbW1hbmQ+R1JBTlQ8L2NvbW1hbmQ+ LgogICA8L3BhcmE+Ci0tLSAxNiwyMiAtLS0tCiAgIDwvcGFyYT4KICAKICAgPHBhcmE+CiEg ICBCeSBkZWZhdWx0IHVzZSBpcyByZXN0cmljdGVkIHRvIHN1cGVydXNlcnMgYW5kIHJvbGVz IHdpdGggcHJpdmlsZWdlcyBvZiB0aGUKICAgIDxsaXRlcmFsPnBnX3N0YXRfc2Nhbl90YWJs ZXM8L2xpdGVyYWw+IHJvbGUuIEFjY2VzcyBtYXkgYmUgZ3JhbnRlZCB0byBvdGhlcnMKICAg IHVzaW5nIDxjb21tYW5kPkdSQU5UPC9jb21tYW5kPi4KICAgPC9wYXJhPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL3Bncm93bG9ja3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9wZ3Jvd2xv Y2tzLnNnbWwKaW5kZXggMzkyZDVmMS4uMjkxNGJmNiAxMDA2NDQKKioqIGEvZG9jL3NyYy9z Z21sL3Bncm93bG9ja3Muc2dtbAotLS0gYi9kb2Mvc3JjL3NnbWwvcGdyb3dsb2Nrcy5zZ21s CioqKioqKioqKioqKioqKgoqKiogMTMsMTkgKioqKgogICA8L3BhcmE+CiAgCiAgIDxwYXJh PgohICAgQnkgZGVmYXVsdCB1c2UgaXMgcmVzdHJpY3RlZCB0byBzdXBlcnVzZXJzLCBtZW1i ZXJzIG9mIHRoZQogICAgPGxpdGVyYWw+cGdfc3RhdF9zY2FuX3RhYmxlczwvbGl0ZXJhbD4g cm9sZSwgYW5kIHVzZXJzIHdpdGgKICAgIDxsaXRlcmFsPlNFTEVDVDwvbGl0ZXJhbD4gcGVy bWlzc2lvbnMgb24gdGhlIHRhYmxlLgogICA8L3BhcmE+Ci0tLSAxMywxOSAtLS0tCiAgIDwv cGFyYT4KICAKICAgPHBhcmE+CiEgICBCeSBkZWZhdWx0IHVzZSBpcyByZXN0cmljdGVkIHRv IHN1cGVydXNlcnMsIHJvbGVzIHdpdGggcHJpdmlsZWdlcyBvZiB0aGUKICAgIDxsaXRlcmFs PnBnX3N0YXRfc2Nhbl90YWJsZXM8L2xpdGVyYWw+IHJvbGUsIGFuZCB1c2VycyB3aXRoCiAg ICA8bGl0ZXJhbD5TRUxFQ1Q8L2xpdGVyYWw+IHBlcm1pc3Npb25zIG9uIHRoZSB0YWJsZS4K ICAgPC9wYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Bnc3RhdHN0YXRlbWVudHMu c2dtbCBiL2RvYy9zcmMvc2dtbC9wZ3N0YXRzdGF0ZW1lbnRzLnNnbWwKaW5kZXggYmM5ZDVi ZC4uM2E3ZTM2YiAxMDA2NDQKKioqIGEvZG9jL3NyYy9zZ21sL3Bnc3RhdHN0YXRlbWVudHMu c2dtbAotLS0gYi9kb2Mvc3JjL3NnbWwvcGdzdGF0c3RhdGVtZW50cy5zZ21sCioqKioqKioq KioqKioqKgoqKiogMzg0LDM5MCAqKioqCiAgICA8L3RhYmxlPgogIAogICAgPHBhcmE+CiEg ICAgRm9yIHNlY3VyaXR5IHJlYXNvbnMsIG9ubHkgc3VwZXJ1c2VycyBhbmQgbWVtYmVycyBv ZiB0aGUKICAgICA8bGl0ZXJhbD5wZ19yZWFkX2FsbF9zdGF0czwvbGl0ZXJhbD4gcm9sZSBh cmUgYWxsb3dlZCB0byBzZWUgdGhlIFNRTCB0ZXh0IGFuZAogICAgIDxzdHJ1Y3RmaWVsZD5x dWVyeWlkPC9zdHJ1Y3RmaWVsZD4gb2YgcXVlcmllcyBleGVjdXRlZCBieSBvdGhlciB1c2Vy cy4KICAgICBPdGhlciB1c2VycyBjYW4gc2VlIHRoZSBzdGF0aXN0aWNzLCBob3dldmVyLCBp ZiB0aGUgdmlldyBoYXMgYmVlbiBpbnN0YWxsZWQKLS0tIDM4NCwzOTAgLS0tLQogICAgPC90 YWJsZT4KICAKICAgIDxwYXJhPgohICAgIEZvciBzZWN1cml0eSByZWFzb25zLCBvbmx5IHN1 cGVydXNlcnMgYW5kIHJvbGVzIHdpdGggcHJpdmlsZWdlcyBvZiB0aGUKICAgICA8bGl0ZXJh bD5wZ19yZWFkX2FsbF9zdGF0czwvbGl0ZXJhbD4gcm9sZSBhcmUgYWxsb3dlZCB0byBzZWUg dGhlIFNRTCB0ZXh0IGFuZAogICAgIDxzdHJ1Y3RmaWVsZD5xdWVyeWlkPC9zdHJ1Y3RmaWVs ZD4gb2YgcXVlcmllcyBleGVjdXRlZCBieSBvdGhlciB1c2Vycy4KICAgICBPdGhlciB1c2Vy cyBjYW4gc2VlIHRoZSBzdGF0aXN0aWNzLCBob3dldmVyLCBpZiB0aGUgdmlldyBoYXMgYmVl biBpbnN0YWxsZWQKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wZ3Zpc2liaWxpdHkuc2dt bCBiL2RvYy9zcmMvc2dtbC9wZ3Zpc2liaWxpdHkuc2dtbAppbmRleCA3NTMzNjk0Li44MDkw YWE1IDEwMDY0NAoqKiogYS9kb2Mvc3JjL3NnbWwvcGd2aXNpYmlsaXR5LnNnbWwKLS0tIGIv ZG9jL3NyYy9zZ21sL3BndmlzaWJpbGl0eS5zZ21sCioqKioqKioqKioqKioqKgoqKiogMTQw LDE0NyAqKioqCiAgICA8L3ZhcmlhYmxlbGlzdD4KICAKICAgIDxwYXJhPgohICAgIEJ5IGRl ZmF1bHQsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgZXhlY3V0YWJsZSBvbmx5IGJ5IHN1cGVydXNl cnMgYW5kIG1lbWJlcnMgb2YgdGhlCiEgICAgPGxpdGVyYWw+cGdfc3RhdF9zY2FuX3RhYmxl czwvbGl0ZXJhbD4gcm9sZSwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mCiAgICAgPGZ1bmN0aW9u PnBnX3RydW5jYXRlX3Zpc2liaWxpdHlfbWFwKHJlbGF0aW9uIHJlZ2NsYXNzKTwvZnVuY3Rp b24+IHdoaWNoIGNhbiBvbmx5CiAgICAgYmUgZXhlY3V0ZWQgYnkgc3VwZXJ1c2Vycy4KICAg IDwvcGFyYT4KLS0tIDE0MCwxNDcgLS0tLQogICAgPC92YXJpYWJsZWxpc3Q+CiAgCiAgICA8 cGFyYT4KISAgICBCeSBkZWZhdWx0LCB0aGVzZSBmdW5jdGlvbnMgYXJlIGV4ZWN1dGFibGUg b25seSBieSBzdXBlcnVzZXJzIGFuZCByb2xlcyB3aXRoIHByaXZpbGVnZXMKISAgICBvZiB0 aGUgPGxpdGVyYWw+cGdfc3RhdF9zY2FuX3RhYmxlczwvbGl0ZXJhbD4gcm9sZSwgd2l0aCB0 aGUgZXhjZXB0aW9uIG9mCiAgICAgPGZ1bmN0aW9uPnBnX3RydW5jYXRlX3Zpc2liaWxpdHlf bWFwKHJlbGF0aW9uIHJlZ2NsYXNzKTwvZnVuY3Rpb24+IHdoaWNoIGNhbiBvbmx5CiAgICAg YmUgZXhlY3V0ZWQgYnkgc3VwZXJ1c2Vycy4KICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9yZWYvcGdfYmFzZWJhY2t1cC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9w Z19iYXNlYmFja3VwLnNnbWwKaW5kZXggNGE2MzBiNS4uMzZiYWFmZCAxMDA2NDQKKioqIGEv ZG9jL3NyYy9zZ21sL3JlZi9wZ19iYXNlYmFja3VwLnNnbWwKLS0tIGIvZG9jL3NyYy9zZ21s L3JlZi9wZ19iYXNlYmFja3VwLnNnbWwKKioqKioqKioqKioqKioqIFBvc3RncmVTUUwgZG9j dW1lbnRhdGlvbgoqKiogMjM3LDI0MyAqKioqCiAgICAgICAgICA8bGl0ZXJhbD5zZXJ2ZXI6 L3NvbWUvcGF0aDwvbGl0ZXJhbD4sIHRoZSBiYWNrdXAgd2lsbCBiZSBzdG9yZWQgb24KICAg ICAgICAgIHRoZSBtYWNoaW5lIHdoZXJlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZyBpbiB0aGUK ICAgICAgICAgIDxsaXRlcmFsPi9zb21lL3BhdGg8L2xpdGVyYWw+IGRpcmVjdG9yeS4gU3Rv cmluZyBhIGJhY2t1cCBvbiB0aGUKISAgICAgICAgIHNlcnZlciByZXF1aXJlcyBzdXBlcnVz ZXIgcHJpdmlsZWdlcyBvciBiZWluZyBncmFudGVkIHRoZQogICAgICAgICAgPGxpdGVyYWw+ cGdfd3JpdGVfc2VydmVyX2ZpbGVzPC9saXRlcmFsPiByb2xlLiBJZiB0aGUgdGFyZ2V0IGlz IHNldCB0bwogICAgICAgICAgPGxpdGVyYWw+YmxhY2tob2xlPC9saXRlcmFsPiwgdGhlIGNv bnRlbnRzIGFyZSBkaXNjYXJkZWQgYW5kIG5vdAogICAgICAgICAgc3RvcmVkIGFueXdoZXJl LiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMsIGFzIHlv dQotLS0gMjM3LDI0MyAtLS0tCiAgICAgICAgICA8bGl0ZXJhbD5zZXJ2ZXI6L3NvbWUvcGF0 aDwvbGl0ZXJhbD4sIHRoZSBiYWNrdXAgd2lsbCBiZSBzdG9yZWQgb24KICAgICAgICAgIHRo ZSBtYWNoaW5lIHdoZXJlIHRoZSBzZXJ2ZXIgaXMgcnVubmluZyBpbiB0aGUKICAgICAgICAg IDxsaXRlcmFsPi9zb21lL3BhdGg8L2xpdGVyYWw+IGRpcmVjdG9yeS4gU3RvcmluZyBhIGJh Y2t1cCBvbiB0aGUKISAgICAgICAgIHNlcnZlciByZXF1aXJlcyBzdXBlcnVzZXIgcHJpdmls ZWdlcyBvciBoYXZpbmcgcHJpdmlsZWdlcyBvZiB0aGUKICAgICAgICAgIDxsaXRlcmFsPnBn X3dyaXRlX3NlcnZlcl9maWxlczwvbGl0ZXJhbD4gcm9sZS4gSWYgdGhlIHRhcmdldCBpcyBz ZXQgdG8KICAgICAgICAgIDxsaXRlcmFsPmJsYWNraG9sZTwvbGl0ZXJhbD4sIHRoZSBjb250 ZW50cyBhcmUgZGlzY2FyZGVkIGFuZCBub3QKICAgICAgICAgIHN0b3JlZCBhbnl3aGVyZS4g VGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCBhcyB5b3UK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHkuYwppbmRleCA3ZGE3MTA1Li43YTBjODk3IDEwMDY0NAoqKiogYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKLS0tIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv Y29weS5jCioqKioqKioqKioqKioqKiBEb0NvcHkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBjb25z dCBDb3B5U3RtCioqKiA4MCwxMDUgKioqKgogIAl7CiAgCQlpZiAoc3RtdC0+aXNfcHJvZ3Jh bSkKICAJCXsKISAJCQlpZiAoIWlzX21lbWJlcl9vZl9yb2xlKEdldFVzZXJJZCgpLCBST0xF X1BHX0VYRUNVVEVfU0VSVkVSX1BST0dSQU0pKQogIAkJCQllcmVwb3J0KEVSUk9SLAogIAkJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCiEgCQkJCQkJ IGVycm1zZygibXVzdCBiZSBzdXBlcnVzZXIgb3IgYSBtZW1iZXIgb2YgdGhlIHBnX2V4ZWN1 dGVfc2VydmVyX3Byb2dyYW0gcm9sZSB0byBDT1BZIHRvIG9yIGZyb20gYW4gZXh0ZXJuYWwg cHJvZ3JhbSIpLAogIAkJCQkJCSBlcnJoaW50KCJBbnlvbmUgY2FuIENPUFkgdG8gc3Rkb3V0 IG9yIGZyb20gc3RkaW4uICIKICAJCQkJCQkJCSAicHNxbCdzIFxcY29weSBjb21tYW5kIGFs c28gd29ya3MgZm9yIGFueW9uZS4iKSkpOwogIAkJfQogIAkJZWxzZQogIAkJewohIAkJCWlm IChpc19mcm9tICYmICFpc19tZW1iZXJfb2Zfcm9sZShHZXRVc2VySWQoKSwgUk9MRV9QR19S RUFEX1NFUlZFUl9GSUxFUykpCiAgCQkJCWVyZXBvcnQoRVJST1IsCiAgCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKISAJCQkJCQkgZXJybXNnKCJt dXN0IGJlIHN1cGVydXNlciBvciBhIG1lbWJlciBvZiB0aGUgcGdfcmVhZF9zZXJ2ZXJfZmls ZXMgcm9sZSB0byBDT1BZIGZyb20gYSBmaWxlIiksCiAgCQkJCQkJIGVycmhpbnQoIkFueW9u ZSBjYW4gQ09QWSB0byBzdGRvdXQgb3IgZnJvbSBzdGRpbi4gIgogIAkJCQkJCQkJICJwc3Fs J3MgXFxjb3B5IGNvbW1hbmQgYWxzbyB3b3JrcyBmb3IgYW55b25lLiIpKSk7CiAgCiEgCQkJ aWYgKCFpc19mcm9tICYmICFpc19tZW1iZXJfb2Zfcm9sZShHZXRVc2VySWQoKSwgUk9MRV9Q R19XUklURV9TRVJWRVJfRklMRVMpKQogIAkJCQllcmVwb3J0KEVSUk9SLAogIAkJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCiEgCQkJCQkJIGVycm1z ZygibXVzdCBiZSBzdXBlcnVzZXIgb3IgYSBtZW1iZXIgb2YgdGhlIHBnX3dyaXRlX3NlcnZl cl9maWxlcyByb2xlIHRvIENPUFkgdG8gYSBmaWxlIiksCiAgCQkJCQkJIGVycmhpbnQoIkFu eW9uZSBjYW4gQ09QWSB0byBzdGRvdXQgb3IgZnJvbSBzdGRpbi4gIgogIAkJCQkJCQkJICJw c3FsJ3MgXFxjb3B5IGNvbW1hbmQgYWxzbyB3b3JrcyBmb3IgYW55b25lLiIpKSk7CiAgCQl9 Ci0tLSA4MCwxMDUgLS0tLQogIAl7CiAgCQlpZiAoc3RtdC0+aXNfcHJvZ3JhbSkKICAJCXsK ISAJCQlpZiAoIWhhc19wcml2c19vZl9yb2xlKEdldFVzZXJJZCgpLCBST0xFX1BHX0VYRUNV VEVfU0VSVkVSX1BST0dSQU0pKQogIAkJCQllcmVwb3J0KEVSUk9SLAogIAkJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCiEgCQkJCQkJIGVycm1zZygi bXVzdCBiZSBzdXBlcnVzZXIgb3IgaGF2ZSBwcml2aWxlZ2VzIG9mIHRoZSBwZ19leGVjdXRl X3NlcnZlcl9wcm9ncmFtIHJvbGUgdG8gQ09QWSB0byBvciBmcm9tIGFuIGV4dGVybmFsIHBy b2dyYW0iKSwKICAJCQkJCQkgZXJyaGludCgiQW55b25lIGNhbiBDT1BZIHRvIHN0ZG91dCBv ciBmcm9tIHN0ZGluLiAiCiAgCQkJCQkJCQkgInBzcWwncyBcXGNvcHkgY29tbWFuZCBhbHNv IHdvcmtzIGZvciBhbnlvbmUuIikpKTsKICAJCX0KICAJCWVsc2UKICAJCXsKISAJCQlpZiAo aXNfZnJvbSAmJiAhaGFzX3ByaXZzX29mX3JvbGUoR2V0VXNlcklkKCksIFJPTEVfUEdfUkVB RF9TRVJWRVJfRklMRVMpKQogIAkJCQllcmVwb3J0KEVSUk9SLAogIAkJCQkJCShlcnJjb2Rl KEVSUkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCiEgCQkJCQkJIGVycm1zZygibXVz dCBiZSBzdXBlcnVzZXIgb3IgaGF2ZSBwcml2aWxlZ2VzIG9mIHRoZSBwZ19yZWFkX3NlcnZl cl9maWxlcyByb2xlIHRvIENPUFkgZnJvbSBhIGZpbGUiKSwKICAJCQkJCQkgZXJyaGludCgi QW55b25lIGNhbiBDT1BZIHRvIHN0ZG91dCBvciBmcm9tIHN0ZGluLiAiCiAgCQkJCQkJCQkg InBzcWwncyBcXGNvcHkgY29tbWFuZCBhbHNvIHdvcmtzIGZvciBhbnlvbmUuIikpKTsKICAK ISAJCQlpZiAoIWlzX2Zyb20gJiYgIWhhc19wcml2c19vZl9yb2xlKEdldFVzZXJJZCgpLCBS T0xFX1BHX1dSSVRFX1NFUlZFUl9GSUxFUykpCiAgCQkJCWVyZXBvcnQoRVJST1IsCiAgCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKISAJCQkJCQkg ZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciBvciBoYXZlIHByaXZpbGVnZXMgb2YgdGhlIHBn X3dyaXRlX3NlcnZlcl9maWxlcyByb2xlIHRvIENPUFkgdG8gYSBmaWxlIiksCiAgCQkJCQkJ IGVycmhpbnQoIkFueW9uZSBjYW4gQ09QWSB0byBzdGRvdXQgb3IgZnJvbSBzdGRpbi4gIgog IAkJCQkJCQkJICJwc3FsJ3MgXFxjb3B5IGNvbW1hbmQgYWxzbyB3b3JrcyBmb3IgYW55b25l LiIpKSk7CiAgCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNl YmFja3VwX3NlcnZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cF9z ZXJ2ZXIuYwppbmRleCBhODc4NjI5Li5iYzE2ODk3IDEwMDY0NAoqKiogYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9iYXNlYmFja3VwX3NlcnZlci5jCi0tLSBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2Jhc2ViYWNrdXBfc2VydmVyLmMKKioqKioqKioqKioqKioqIGJic2lua19z ZXJ2ZXJfbmV3KGJic2luayAqbmV4dCwgY2hhciAqcGEKKioqIDY5LDc4ICoqKioKICAKICAJ LyogUmVwbGljYXRpb24gcGVybWlzc2lvbiBpcyBub3Qgc3VmZmljaWVudCBpbiB0aGlzIGNh c2UuICovCiAgCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiEgCWlmICghaXNfbWVtYmVy X29mX3JvbGUoR2V0VXNlcklkKCksIFJPTEVfUEdfV1JJVEVfU0VSVkVSX0ZJTEVTKSkKICAJ CWVyZXBvcnQoRVJST1IsCiAgCQkJCShlcnJjb2RlKEVSUkNPREVfSU5TVUZGSUNJRU5UX1BS SVZJTEVHRSksCiEgCQkJCSBlcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIG9yIGEgbWVtYmVy IG9mIHRoZSBwZ193cml0ZV9zZXJ2ZXJfZmlsZXMgcm9sZSB0byBjcmVhdGUgc2VydmVyIGJh Y2t1cCIpKSk7CiAgCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogIAogIAkvKgotLS0g NjksNzggLS0tLQogIAogIAkvKiBSZXBsaWNhdGlvbiBwZXJtaXNzaW9uIGlzIG5vdCBzdWZm aWNpZW50IGluIHRoaXMgY2FzZS4gKi8KICAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK ISAJaWYgKCFoYXNfcHJpdnNfb2Zfcm9sZShHZXRVc2VySWQoKSwgUk9MRV9QR19XUklURV9T RVJWRVJfRklMRVMpKQogIAkJZXJlcG9ydChFUlJPUiwKICAJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlNVRkZJQ0lFTlRfUFJJVklMRUdFKSwKISAJCQkJIGVycm1zZygibXVzdCBiZSBzdXBl cnVzZXIgb3IgYSByb2xlIHdpdGggcHJpdmlsZWdlcyBvZiB0aGUgcGdfd3JpdGVfc2VydmVy X2ZpbGVzIHJvbGUgdG8gY3JlYXRlIHNlcnZlciBiYWNrdXAiKSkpOwogIAlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKICAKICAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxy ZWNlaXZlci5jCmluZGV4IGNlYWZmMDkuLjNjOTQxMWUgMTAwNjQ0CioqKiBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMKLS0tIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2FscmVjZWl2ZXIuYwoqKioqKioqKioqKioqKiogcGdfc3RhdF9nZXRfd2FsX3Jl Y2VpdmVyKFBHX0ZVTkNUSU9OX0FSRwoqKiogMTQwMywxNDE0ICoqKioKICAJLyogRmV0Y2gg dmFsdWVzICovCiAgCXZhbHVlc1swXSA9IEludDMyR2V0RGF0dW0ocGlkKTsKICAKISAJaWYg KCFpc19tZW1iZXJfb2Zfcm9sZShHZXRVc2VySWQoKSwgUk9MRV9QR19SRUFEX0FMTF9TVEFU UykpCiAgCXsKICAJCS8qCiEgCQkgKiBPbmx5IHN1cGVydXNlcnMgYW5kIG1lbWJlcnMgb2Yg cGdfcmVhZF9hbGxfc3RhdHMgY2FuIHNlZSBkZXRhaWxzLgohIAkJICogT3RoZXIgdXNlcnMg b25seSBnZXQgdGhlIHBpZCB2YWx1ZSB0byBrbm93IHdoZXRoZXIgaXQgaXMgYSBXQUwKISAJ CSAqIHJlY2VpdmVyLCBidXQgbm8gZGV0YWlscy4KICAJCSAqLwogIAkJTWVtU2V0KCZudWxs c1sxXSwgdHJ1ZSwgc2l6ZW9mKGJvb2wpICogKHR1cGRlc2MtPm5hdHRzIC0gMSkpOwogIAl9 Ci0tLSAxNDAzLDE0MTQgLS0tLQogIAkvKiBGZXRjaCB2YWx1ZXMgKi8KICAJdmFsdWVzWzBd ID0gSW50MzJHZXREYXR1bShwaWQpOwogIAohIAlpZiAoIWhhc19wcml2c19vZl9yb2xlKEdl dFVzZXJJZCgpLCBST0xFX1BHX1JFQURfQUxMX1NUQVRTKSkKICAJewogIAkJLyoKISAJCSAq IE9ubHkgc3VwZXJ1c2VycyBhbmQgcm9sZXMgd2l0aCBwcml2aWxlZ2VzIG9mIHBnX3JlYWRf YWxsX3N0YXRzCiEgCQkgKiBjYW4gc2VlIGRldGFpbHMuIE90aGVyIHVzZXJzIG9ubHkgZ2V0 IHRoZSBwaWQgdmFsdWUgdG8ga25vdyB3aGV0aGVyCiEgCQkgKiBpdCBpcyBhIFdBTCByZWNl aXZlciwgYnV0IG5vIGRldGFpbHMuCiAgCQkgKi8KICAJCU1lbVNldCgmbnVsbHNbMV0sIHRy dWUsIHNpemVvZihib29sKSAqICh0dXBkZXNjLT5uYXR0cyAtIDEpKTsKICAJfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCAyZDAyOTJhLi5jZmZiMzQ4IDEwMDY0 NAoqKiogYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwotLS0gYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwoqKioqKioqKioqKioqKiogcGdfc3Rh dF9nZXRfd2FsX3NlbmRlcnMoUEdfRlVOQ1RJT05fQVJHUwoqKiogMzQ3MywzNDg0ICoqKioK ICAJCW1lbXNldChudWxscywgMCwgc2l6ZW9mKG51bGxzKSk7CiAgCQl2YWx1ZXNbMF0gPSBJ bnQzMkdldERhdHVtKHBpZCk7CiAgCiEgCQlpZiAoIWlzX21lbWJlcl9vZl9yb2xlKEdldFVz ZXJJZCgpLCBST0xFX1BHX1JFQURfQUxMX1NUQVRTKSkKICAJCXsKICAJCQkvKgohIAkJCSAq IE9ubHkgc3VwZXJ1c2VycyBhbmQgbWVtYmVycyBvZiBwZ19yZWFkX2FsbF9zdGF0cyBjYW4g c2VlCiEgCQkJICogZGV0YWlscy4gT3RoZXIgdXNlcnMgb25seSBnZXQgdGhlIHBpZCB2YWx1 ZSB0byBrbm93IGl0J3MgYQohIAkJCSAqIHdhbHNlbmRlciwgYnV0IG5vIGRldGFpbHMuCiAg CQkJICovCiAgCQkJTWVtU2V0KCZudWxsc1sxXSwgdHJ1ZSwgUEdfU1RBVF9HRVRfV0FMX1NF TkRFUlNfQ09MUyAtIDEpOwogIAkJfQotLS0gMzQ3MywzNDg0IC0tLS0KICAJCW1lbXNldChu dWxscywgMCwgc2l6ZW9mKG51bGxzKSk7CiAgCQl2YWx1ZXNbMF0gPSBJbnQzMkdldERhdHVt KHBpZCk7CiAgCiEgCQlpZiAoIWhhc19wcml2c19vZl9yb2xlKEdldFVzZXJJZCgpLCBST0xF X1BHX1JFQURfQUxMX1NUQVRTKSkKICAJCXsKICAJCQkvKgohIAkJCSAqIE9ubHkgc3VwZXJ1 c2VycyBhbmQgcm9sZXMgd2l0aCBwcml2aWxlZ2VzIG9mIHBnX3JlYWRfYWxsX3N0YXRzCiEg CQkJICogY2FuIHNlZSBkZXRhaWxzLiBPdGhlciB1c2VycyBvbmx5IGdldCB0aGUgcGlkIHZh bHVlIHRvIGtub3cKISAJCQkgKiBpdCdzIGEgd2Fsc2VuZGVyLCBidXQgbm8gZGV0YWlscy4K ICAJCQkgKi8KICAJCQlNZW1TZXQoJm51bGxzWzFdLCB0cnVlLCBQR19TVEFUX0dFVF9XQUxf U0VOREVSU19DT0xTIC0gMSk7CiAgCQl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvYWNsLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvYWNsLmMKaW5kZXggMGExNmY4 MS4uMWQzZGQ4OSAxMDA2NDQKKioqIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2FjbC5jCi0t LSBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9hY2wuYwoqKioqKioqKioqKioqKiogaGFzX3By aXZzX29mX3JvbGUoT2lkIG1lbWJlciwgT2lkIHJvbGUpCioqKiA0ODY0LDQ4NjkgKioqKgot LS0gNDg2NCw0ODcxIC0tLS0KICAgKiBJcyBtZW1iZXIgYSBtZW1iZXIgb2Ygcm9sZSAoZGly ZWN0bHkgb3IgaW5kaXJlY3RseSk/CiAgICoKICAgKiBUaGlzIGlzIGRlZmluZWQgdG8gcmVj dXJzZSB0aHJvdWdoIHJvbGVzIHJlZ2FyZGxlc3Mgb2Ygcm9saW5oZXJpdC4KKyAgKgorICAq IERvIG5vdCB1c2UgdGhpcyBmb3IgcHJpdmlsZWdlIGNoZWNraW5nLCBpbnN0ZWFkIHVzZSBo YXNfcHJpdnNfb2Zfcm9sZSgpCiAgICovCiAgYm9vbAogIGlzX21lbWJlcl9vZl9yb2xlKE9p ZCBtZW1iZXIsIE9pZCByb2xlKQoqKioqKioqKioqKioqKiogY2hlY2tfaXNfbWVtYmVyX29m X3JvbGUoT2lkIG1lbWJlciwgT2lkCioqKiA0OTA0LDQ5MDkgKioqKgotLS0gNDkwNiw0OTEz IC0tLS0KICAgKgogICAqIFRoaXMgaXMgaWRlbnRpY2FsIHRvIGlzX21lbWJlcl9vZl9yb2xl IGV4Y2VwdCB3ZSBpZ25vcmUgc3VwZXJ1c2VyCiAgICogc3RhdHVzLgorICAqCisgICogRG8g bm90IHVzZSB0aGlzIGZvciBwcml2aWxlZ2UgY2hlY2tpbmcsIGluc3RlYWQgdXNlIGhhc19w cml2c19vZl9yb2xlKCkKICAgKi8KICBib29sCiAgaXNfbWVtYmVyX29mX3JvbGVfbm9zdXBl cihPaWQgbWVtYmVyLCBPaWQgcm9sZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9kYnNpemUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYnNpemUuYwppbmRleCAz YTJmMmUxLi4wNTc2NzY0IDEwMDY0NAoqKiogYS9zcmMvYmFja2VuZC91dGlscy9hZHQvZGJz aXplLmMKLS0tIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2Ric2l6ZS5jCioqKioqKioqKioq KioqKiBjYWxjdWxhdGVfZGF0YWJhc2Vfc2l6ZShPaWQgZGJPaWQpCioqKiAxMTIsMTIzICoq KioKICAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKICAKICAJLyoKISAJICogVXNlciBtdXN0IGhh dmUgY29ubmVjdCBwcml2aWxlZ2UgZm9yIHRhcmdldCBkYXRhYmFzZSBvciBiZSBhIG1lbWJl ciBvZgogIAkgKiBwZ19yZWFkX2FsbF9zdGF0cwogIAkgKi8KICAJYWNscmVzdWx0ID0gcGdf ZGF0YWJhc2VfYWNsY2hlY2soZGJPaWQsIEdldFVzZXJJZCgpLCBBQ0xfQ09OTkVDVCk7CiAg CWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0sgJiYKISAJCSFpc19tZW1iZXJfb2Zfcm9s ZShHZXRVc2VySWQoKSwgUk9MRV9QR19SRUFEX0FMTF9TVEFUUykpCiAgCXsKICAJCWFjbGNo ZWNrX2Vycm9yKGFjbHJlc3VsdCwgT0JKRUNUX0RBVEFCQVNFLAogIAkJCQkJICAgZ2V0X2Rh dGFiYXNlX25hbWUoZGJPaWQpKTsKLS0tIDExMiwxMjMgLS0tLQogIAlBY2xSZXN1bHQJYWNs cmVzdWx0OwogIAogIAkvKgohIAkgKiBVc2VyIG11c3QgaGF2ZSBjb25uZWN0IHByaXZpbGVn ZSBmb3IgdGFyZ2V0IGRhdGFiYXNlIG9yIGhhdmUgcHJpdmlsZWdlcyBvZgogIAkgKiBwZ19y ZWFkX2FsbF9zdGF0cwogIAkgKi8KICAJYWNscmVzdWx0ID0gcGdfZGF0YWJhc2VfYWNsY2hl Y2soZGJPaWQsIEdldFVzZXJJZCgpLCBBQ0xfQ09OTkVDVCk7CiAgCWlmIChhY2xyZXN1bHQg IT0gQUNMQ0hFQ0tfT0sgJiYKISAJCSFoYXNfcHJpdnNfb2Zfcm9sZShHZXRVc2VySWQoKSwg Uk9MRV9QR19SRUFEX0FMTF9TVEFUUykpCiAgCXsKICAJCWFjbGNoZWNrX2Vycm9yKGFjbHJl c3VsdCwgT0JKRUNUX0RBVEFCQVNFLAogIAkJCQkJICAgZ2V0X2RhdGFiYXNlX25hbWUoZGJP aWQpKTsKKioqKioqKioqKioqKioqIGNhbGN1bGF0ZV90YWJsZXNwYWNlX3NpemUoT2lkIHRi bHNwY09pZCkKKioqIDE5NiwyMDcgKioqKgogIAlBY2xSZXN1bHQJYWNscmVzdWx0OwogIAog IAkvKgohIAkgKiBVc2VyIG11c3QgYmUgYSBtZW1iZXIgb2YgcGdfcmVhZF9hbGxfc3RhdHMg b3IgaGF2ZSBDUkVBVEUgcHJpdmlsZWdlIGZvcgogIAkgKiB0YXJnZXQgdGFibGVzcGFjZSwg ZWl0aGVyIGV4cGxpY2l0bHkgZ3JhbnRlZCBvciBpbXBsaWNpdGx5IGJlY2F1c2UgaXQKICAJ ICogaXMgZGVmYXVsdCBmb3IgY3VycmVudCBkYXRhYmFzZS4KICAJICovCiAgCWlmICh0Ymxz cGNPaWQgIT0gTXlEYXRhYmFzZVRhYmxlU3BhY2UgJiYKISAJCSFpc19tZW1iZXJfb2Zfcm9s ZShHZXRVc2VySWQoKSwgUk9MRV9QR19SRUFEX0FMTF9TVEFUUykpCiAgCXsKICAJCWFjbHJl c3VsdCA9IHBnX3RhYmxlc3BhY2VfYWNsY2hlY2sodGJsc3BjT2lkLCBHZXRVc2VySWQoKSwg QUNMX0NSRUFURSk7CiAgCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQotLS0gMTk2 LDIwNyAtLS0tCiAgCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAgCiAgCS8qCiEgCSAqIFVzZXIg bXVzdCBoYXZlIHByaXZpbGVnZXMgb2YgcGdfcmVhZF9hbGxfc3RhdHMgb3IgaGF2ZSBDUkVB VEUgcHJpdmlsZWdlIGZvcgogIAkgKiB0YXJnZXQgdGFibGVzcGFjZSwgZWl0aGVyIGV4cGxp Y2l0bHkgZ3JhbnRlZCBvciBpbXBsaWNpdGx5IGJlY2F1c2UgaXQKICAJICogaXMgZGVmYXVs dCBmb3IgY3VycmVudCBkYXRhYmFzZS4KICAJICovCiAgCWlmICh0YmxzcGNPaWQgIT0gTXlE YXRhYmFzZVRhYmxlU3BhY2UgJiYKISAJCSFoYXNfcHJpdnNfb2Zfcm9sZShHZXRVc2VySWQo KSwgUk9MRV9QR19SRUFEX0FMTF9TVEFUUykpCiAgCXsKICAJCWFjbHJlc3VsdCA9IHBnX3Rh Ymxlc3BhY2VfYWNsY2hlY2sodGJsc3BjT2lkLCBHZXRVc2VySWQoKSwgQUNMX0NSRUFURSk7 CiAgCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2dlbmZpbGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9nZW5m aWxlLmMKaW5kZXggMWVkMDE2Mi4uODhmMjc5ZCAxMDA2NDQKKioqIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2dlbmZpbGUuYwotLS0gYi9zcmMvYmFja2VuZC91dGlscy9hZHQvZ2VuZmls ZS5jCioqKioqKioqKioqKioqKiBjb252ZXJ0X2FuZF9jaGVja19maWxlbmFtZSh0ZXh0ICph cmcpCioqKiA1OSw2OSAqKioqCiAgCWNhbm9uaWNhbGl6ZV9wYXRoKGZpbGVuYW1lKTsJLyog ZmlsZW5hbWUgY2FuIGNoYW5nZSBsZW5ndGggaGVyZSAqLwogIAogIAkvKgohIAkgKiBNZW1i ZXJzIG9mIHRoZSAncGdfcmVhZF9zZXJ2ZXJfZmlsZXMnIHJvbGUgYXJlIGFsbG93ZWQgdG8g YWNjZXNzIGFueQohIAkgKiBmaWxlcyBvbiB0aGUgc2VydmVyIGFzIHRoZSBQRyB1c2VyLCBz byBubyBuZWVkIHRvIGRvIGFueSBmdXJ0aGVyIGNoZWNrcwogIAkgKiBoZXJlLgogIAkgKi8K ISAJaWYgKGlzX21lbWJlcl9vZl9yb2xlKEdldFVzZXJJZCgpLCBST0xFX1BHX1JFQURfU0VS VkVSX0ZJTEVTKSkKICAJCXJldHVybiBmaWxlbmFtZTsKICAKICAJLyoKLS0tIDU5LDY5IC0t LS0KICAJY2Fub25pY2FsaXplX3BhdGgoZmlsZW5hbWUpOwkvKiBmaWxlbmFtZSBjYW4gY2hh bmdlIGxlbmd0aCBoZXJlICovCiAgCiAgCS8qCiEgCSAqIFJvbGVzIHdpdGggcHJpdmxlZ2Vz IG9mIHRoZSAncGdfcmVhZF9zZXJ2ZXJfZmlsZXMnIHJvbGUgYXJlIGFsbG93ZWQgdG8gYWNj ZXNzCiEgCSAqIGFueSBmaWxlcyBvbiB0aGUgc2VydmVyIGFzIHRoZSBQRyB1c2VyLCBzbyBu byBuZWVkIHRvIGRvIGFueSBmdXJ0aGVyIGNoZWNrcwogIAkgKiBoZXJlLgogIAkgKi8KISAJ aWYgKGhhc19wcml2c19vZl9yb2xlKEdldFVzZXJJZCgpLCBST0xFX1BHX1JFQURfU0VSVkVS X0ZJTEVTKSkKICAJCXJldHVybiBmaWxlbmFtZTsKICAKICAJLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3Bnc3RhdGZ1bmNzLmMKaW5kZXggZWZmNDViMS4uY2U4NDUyNSAxMDA2NDQKKioqIGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKLS0tIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKKioqKioqKioqKioqKioqCioqKiAzNCw0MCAqKioq CiAgCiAgI2RlZmluZSBVSU5UMzJfQUNDRVNTX09OQ0UodmFyKQkJICgodWludDMyKSgqKCh2 b2xhdGlsZSB1aW50MzIgKikmKHZhcikpKSkKICAKISAjZGVmaW5lIEhBU19QR1NUQVRfUEVS TUlTU0lPTlMocm9sZSkJIChpc19tZW1iZXJfb2Zfcm9sZShHZXRVc2VySWQoKSwgUk9MRV9Q R19SRUFEX0FMTF9TVEFUUykgfHwgaGFzX3ByaXZzX29mX3JvbGUoR2V0VXNlcklkKCksIHJv bGUpKQogIAogIERhdHVtCiAgcGdfc3RhdF9nZXRfbnVtc2NhbnMoUEdfRlVOQ1RJT05fQVJH UykKLS0tIDM0LDQwIC0tLS0KICAKICAjZGVmaW5lIFVJTlQzMl9BQ0NFU1NfT05DRSh2YXIp CQkgKCh1aW50MzIpKCooKHZvbGF0aWxlIHVpbnQzMiAqKSYodmFyKSkpKQogIAohICNkZWZp bmUgSEFTX1BHU1RBVF9QRVJNSVNTSU9OUyhyb2xlKQkgKGhhc19wcml2c19vZl9yb2xlKEdl dFVzZXJJZCgpLCBST0xFX1BHX1JFQURfQUxMX1NUQVRTKSB8fCBoYXNfcHJpdnNfb2Zfcm9s ZShHZXRVc2VySWQoKSwgcm9sZSkpCiAgCiAgRGF0dW0KICBwZ19zdGF0X2dldF9udW1zY2Fu cyhQR19GVU5DVElPTl9BUkdTKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggZTdmMGEzOC4u YzNlZjc5OCAxMDA2NDQKKioqIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwotLS0g Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCioqKioqKioqKioqKioqKiBHZXRDb25m aWdPcHRpb24oY29uc3QgY2hhciAqbmFtZSwgYm9vbCBtCioqKiA4MjE1LDgyMjQgKioqKgog IAkJcmV0dXJuIE5VTEw7CiAgCWlmIChyZXN0cmljdF9wcml2aWxlZ2VkICYmCiAgCQkocmVj b3JkLT5mbGFncyAmIEdVQ19TVVBFUlVTRVJfT05MWSkgJiYKISAJCSFpc19tZW1iZXJfb2Zf cm9sZShHZXRVc2VySWQoKSwgUk9MRV9QR19SRUFEX0FMTF9TRVRUSU5HUykpCiAgCQllcmVw b3J0KEVSUk9SLAogIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxF R0UpLAohIAkJCQkgZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciBvciBhIG1lbWJlciBvZiBw Z19yZWFkX2FsbF9zZXR0aW5ncyB0byBleGFtaW5lIFwiJXNcIiIsCiAgCQkJCQkJbmFtZSkp KTsKICAKICAJc3dpdGNoIChyZWNvcmQtPnZhcnR5cGUpCi0tLSA4MjE1LDgyMjQgLS0tLQog IAkJcmV0dXJuIE5VTEw7CiAgCWlmIChyZXN0cmljdF9wcml2aWxlZ2VkICYmCiAgCQkocmVj b3JkLT5mbGFncyAmIEdVQ19TVVBFUlVTRVJfT05MWSkgJiYKISAJCSFoYXNfcHJpdnNfb2Zf cm9sZShHZXRVc2VySWQoKSwgUk9MRV9QR19SRUFEX0FMTF9TRVRUSU5HUykpCiAgCQllcmVw b3J0KEVSUk9SLAogIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxF R0UpLAohIAkJCQkgZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciBvciBoYXZlIHByaXZpbGVn ZXMgb2YgcGdfcmVhZF9hbGxfc2V0dGluZ3MgdG8gZXhhbWluZSBcIiVzXCIiLAogIAkJCQkJ CW5hbWUpKSk7CiAgCiAgCXN3aXRjaCAocmVjb3JkLT52YXJ0eXBlKQoqKioqKioqKioqKioq KiogR2V0Q29uZmlnT3B0aW9uUmVzZXRTdHJpbmcoY29uc3QgY2hhciAqbgoqKiogODI2Miw4 MjcxICoqKioKICAJcmVjb3JkID0gZmluZF9vcHRpb24obmFtZSwgZmFsc2UsIGZhbHNlLCBF UlJPUik7CiAgCUFzc2VydChyZWNvcmQgIT0gTlVMTCk7CiAgCWlmICgocmVjb3JkLT5mbGFn cyAmIEdVQ19TVVBFUlVTRVJfT05MWSkgJiYKISAJCSFpc19tZW1iZXJfb2Zfcm9sZShHZXRV c2VySWQoKSwgUk9MRV9QR19SRUFEX0FMTF9TRVRUSU5HUykpCiAgCQllcmVwb3J0KEVSUk9S LAogIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAohIAkJ CQkgZXJybXNnKCJtdXN0IGJlIHN1cGVydXNlciBvciBhIG1lbWJlciBvZiBwZ19yZWFkX2Fs bF9zZXR0aW5ncyB0byBleGFtaW5lIFwiJXNcIiIsCiAgCQkJCQkJbmFtZSkpKTsKICAKICAJ c3dpdGNoIChyZWNvcmQtPnZhcnR5cGUpCi0tLSA4MjYyLDgyNzEgLS0tLQogIAlyZWNvcmQg PSBmaW5kX29wdGlvbihuYW1lLCBmYWxzZSwgZmFsc2UsIEVSUk9SKTsKICAJQXNzZXJ0KHJl Y29yZCAhPSBOVUxMKTsKICAJaWYgKChyZWNvcmQtPmZsYWdzICYgR1VDX1NVUEVSVVNFUl9P TkxZKSAmJgohIAkJIWhhc19wcml2c19vZl9yb2xlKEdldFVzZXJJZCgpLCBST0xFX1BHX1JF QURfQUxMX1NFVFRJTkdTKSkKICAJCWVyZXBvcnQoRVJST1IsCiAgCQkJCShlcnJjb2RlKEVS UkNPREVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCiEgCQkJCSBlcnJtc2coIm11c3QgYmUg c3VwZXJ1c2VyIG9yIGhhdmUgcHJpdmlsZWdlcyBvZiBwZ19yZWFkX2FsbF9zZXR0aW5ncyB0 byBleGFtaW5lIFwiJXNcIiIsCiAgCQkJCQkJbmFtZSkpKTsKICAKICAJc3dpdGNoIChyZWNv cmQtPnZhcnR5cGUpCioqKioqKioqKioqKioqKiBTaG93QWxsR1VDQ29uZmlnKERlc3RSZWNl aXZlciAqZGVzdCkKKioqIDk1MzcsOTU0MyAqKioqCiAgCiAgCQlpZiAoKGNvbmYtPmZsYWdz ICYgR1VDX05PX1NIT1dfQUxMKSB8fAogIAkJCSgoY29uZi0+ZmxhZ3MgJiBHVUNfU1VQRVJV U0VSX09OTFkpICYmCiEgCQkJICFpc19tZW1iZXJfb2Zfcm9sZShHZXRVc2VySWQoKSwgUk9M RV9QR19SRUFEX0FMTF9TRVRUSU5HUykpKQogIAkJCWNvbnRpbnVlOwogIAogIAkJLyogYXNz aWduIHRvIHRoZSB2YWx1ZXMgYXJyYXkgKi8KLS0tIDk1MzcsOTU0MyAtLS0tCiAgCiAgCQlp ZiAoKGNvbmYtPmZsYWdzICYgR1VDX05PX1NIT1dfQUxMKSB8fAogIAkJCSgoY29uZi0+Zmxh Z3MgJiBHVUNfU1VQRVJVU0VSX09OTFkpICYmCiEgCQkJICFoYXNfcHJpdnNfb2Zfcm9sZShH ZXRVc2VySWQoKSwgUk9MRV9QR19SRUFEX0FMTF9TRVRUSU5HUykpKQogIAkJCWNvbnRpbnVl OwogIAogIAkJLyogYXNzaWduIHRvIHRoZSB2YWx1ZXMgYXJyYXkgKi8KKioqKioqKioqKioq KioqIGdldF9leHBsYWluX2d1Y19vcHRpb25zKGludCAqbnVtKQoqKiogOTYwNCw5NjEwICoq KioKICAJCS8qIHJldHVybiBvbmx5IG9wdGlvbnMgdmlzaWJsZSB0byB0aGUgY3VycmVudCB1 c2VyICovCiAgCQlpZiAoKGNvbmYtPmZsYWdzICYgR1VDX05PX1NIT1dfQUxMKSB8fAogIAkJ CSgoY29uZi0+ZmxhZ3MgJiBHVUNfU1VQRVJVU0VSX09OTFkpICYmCiEgCQkJICFpc19tZW1i ZXJfb2Zfcm9sZShHZXRVc2VySWQoKSwgUk9MRV9QR19SRUFEX0FMTF9TRVRUSU5HUykpKQog IAkJCWNvbnRpbnVlOwogIAogIAkJLyogcmV0dXJuIG9ubHkgb3B0aW9ucyB0aGF0IGFyZSBk aWZmZXJlbnQgZnJvbSB0aGVpciBib290IHZhbHVlcyAqLwotLS0gOTYwNCw5NjEwIC0tLS0K ICAJCS8qIHJldHVybiBvbmx5IG9wdGlvbnMgdmlzaWJsZSB0byB0aGUgY3VycmVudCB1c2Vy ICovCiAgCQlpZiAoKGNvbmYtPmZsYWdzICYgR1VDX05PX1NIT1dfQUxMKSB8fAogIAkJCSgo Y29uZi0+ZmxhZ3MgJiBHVUNfU1VQRVJVU0VSX09OTFkpICYmCiEgCQkJICFoYXNfcHJpdnNf b2Zfcm9sZShHZXRVc2VySWQoKSwgUk9MRV9QR19SRUFEX0FMTF9TRVRUSU5HUykpKQogIAkJ CWNvbnRpbnVlOwogIAogIAkJLyogcmV0dXJuIG9ubHkgb3B0aW9ucyB0aGF0IGFyZSBkaWZm ZXJlbnQgZnJvbSB0aGVpciBib290IHZhbHVlcyAqLwoqKioqKioqKioqKioqKiogR2V0Q29u ZmlnT3B0aW9uQnlOYW1lKGNvbnN0IGNoYXIgKm5hbWUsCioqKiA5Njg2LDk2OTUgKioqKgog IAl9CiAgCiAgCWlmICgocmVjb3JkLT5mbGFncyAmIEdVQ19TVVBFUlVTRVJfT05MWSkgJiYK ISAJCSFpc19tZW1iZXJfb2Zfcm9sZShHZXRVc2VySWQoKSwgUk9MRV9QR19SRUFEX0FMTF9T RVRUSU5HUykpCiAgCQllcmVwb3J0KEVSUk9SLAogIAkJCQkoZXJyY29kZShFUlJDT0RFX0lO U1VGRklDSUVOVF9QUklWSUxFR0UpLAohIAkJCQkgZXJybXNnKCJtdXN0IGJlIHN1cGVydXNl ciBvciBhIG1lbWJlciBvZiBwZ19yZWFkX2FsbF9zZXR0aW5ncyB0byBleGFtaW5lIFwiJXNc IiIsCiAgCQkJCQkJbmFtZSkpKTsKICAKICAJaWYgKHZhcm5hbWUpCi0tLSA5Njg2LDk2OTUg LS0tLQogIAl9CiAgCiAgCWlmICgocmVjb3JkLT5mbGFncyAmIEdVQ19TVVBFUlVTRVJfT05M WSkgJiYKISAJCSFoYXNfcHJpdnNfb2Zfcm9sZShHZXRVc2VySWQoKSwgUk9MRV9QR19SRUFE X0FMTF9TRVRUSU5HUykpCiAgCQllcmVwb3J0KEVSUk9SLAogIAkJCQkoZXJyY29kZShFUlJD T0RFX0lOU1VGRklDSUVOVF9QUklWSUxFR0UpLAohIAkJCQkgZXJybXNnKCJtdXN0IGJlIHN1 cGVydXNlciBvciBoYXZlIHByaXZpbGVnZXMgb2YgcGdfcmVhZF9hbGxfc2V0dGluZ3MgdG8g ZXhhbWluZSBcIiVzXCIiLAogIAkJCQkJCW5hbWUpKSk7CiAgCiAgCWlmICh2YXJuYW1lKQoq KioqKioqKioqKioqKiogR2V0Q29uZmlnT3B0aW9uQnlOdW0oaW50IHZhcm51bSwgY29uc3Qg YwoqKiogOTc1Niw5NzYyICoqKioKICAJewogIAkJaWYgKChjb25mLT5mbGFncyAmIEdVQ19O T19TSE9XX0FMTCkgfHwKICAJCQkoKGNvbmYtPmZsYWdzICYgR1VDX1NVUEVSVVNFUl9PTkxZ KSAmJgohIAkJCSAhaXNfbWVtYmVyX29mX3JvbGUoR2V0VXNlcklkKCksIFJPTEVfUEdfUkVB RF9BTExfU0VUVElOR1MpKSkKICAJCQkqbm9zaG93ID0gdHJ1ZTsKICAJCWVsc2UKICAJCQkq bm9zaG93ID0gZmFsc2U7Ci0tLSA5NzU2LDk3NjIgLS0tLQogIAl7CiAgCQlpZiAoKGNvbmYt PmZsYWdzICYgR1VDX05PX1NIT1dfQUxMKSB8fAogIAkJCSgoY29uZi0+ZmxhZ3MgJiBHVUNf U1VQRVJVU0VSX09OTFkpICYmCiEgCQkJICFoYXNfcHJpdnNfb2Zfcm9sZShHZXRVc2VySWQo KSwgUk9MRV9QR19SRUFEX0FMTF9TRVRUSU5HUykpKQogIAkJCSpub3Nob3cgPSB0cnVlOwog IAkJZWxzZQogIAkJCSpub3Nob3cgPSBmYWxzZTsKKioqKioqKioqKioqKioqIEdldENvbmZp Z09wdGlvbkJ5TnVtKGludCB2YXJudW0sIGNvbnN0IGMKKioqIDk5NTEsOTk1NyAqKioqCiAg CSAqIGluc3VmZmljaWVudGx5LXByaXZpbGVnZWQgdXNlcnMuCiAgCSAqLwogIAlpZiAoY29u Zi0+c291cmNlID09IFBHQ19TX0ZJTEUgJiYKISAJCWlzX21lbWJlcl9vZl9yb2xlKEdldFVz ZXJJZCgpLCBST0xFX1BHX1JFQURfQUxMX1NFVFRJTkdTKSkKICAJewogIAkJdmFsdWVzWzE0 XSA9IGNvbmYtPnNvdXJjZWZpbGU7CiAgCQlzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZm ZXIpLCAiJWQiLCBjb25mLT5zb3VyY2VsaW5lKTsKLS0tIDk5NTEsOTk1NyAtLS0tCiAgCSAq IGluc3VmZmljaWVudGx5LXByaXZpbGVnZWQgdXNlcnMuCiAgCSAqLwogIAlpZiAoY29uZi0+ c291cmNlID09IFBHQ19TX0ZJTEUgJiYKISAJCWhhc19wcml2c19vZl9yb2xlKEdldFVzZXJJ ZCgpLCBST0xFX1BHX1JFQURfQUxMX1NFVFRJTkdTKSkKICAJewogIAkJdmFsdWVzWzE0XSA9 IGNvbmYtPnNvdXJjZWZpbGU7CiAgCQlzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIp LCAiJWQiLCBjb25mLT5zb3VyY2VsaW5lKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvdW5zYWZlX3Rlc3RzL2V4cGVjdGVkL3JvbGVuYW1lcy5vdXQgYi9zcmMvdGVzdC9tb2R1 bGVzL3Vuc2FmZV90ZXN0cy9leHBlY3RlZC9yb2xlbmFtZXMub3V0CmluZGV4IGViNjA4ZmQu Ljg4YjFmZjggMTAwNjQ0CioqKiBhL3NyYy90ZXN0L21vZHVsZXMvdW5zYWZlX3Rlc3RzL2V4 cGVjdGVkL3JvbGVuYW1lcy5vdXQKLS0tIGIvc3JjL3Rlc3QvbW9kdWxlcy91bnNhZmVfdGVz dHMvZXhwZWN0ZWQvcm9sZW5hbWVzLm91dAoqKioqKioqKioqKioqKiogU0hPVyBzZXNzaW9u X3ByZWxvYWRfbGlicmFyaWVzOwoqKiogMTA3NywxMDgzICoqKioKICBTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OIHJlZ3Jlc3Nfcm9sZV9ub3ByaXY7CiAgLS0gZmFpbHMgd2l0aCByb2xl IG5vdCBtZW1iZXIgb2YgcGdfcmVhZF9hbGxfc2V0dGluZ3MKICBTSE9XIHNlc3Npb25fcHJl bG9hZF9saWJyYXJpZXM7CiEgRVJST1I6ICBtdXN0IGJlIHN1cGVydXNlciBvciBhIG1lbWJl ciBvZiBwZ19yZWFkX2FsbF9zZXR0aW5ncyB0byBleGFtaW5lICJzZXNzaW9uX3ByZWxvYWRf bGlicmFyaWVzIgogIFJFU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTjsKICBFUlJPUjogIGN1 cnJlbnQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCwgY29tbWFuZHMgaWdub3JlZCB1bnRpbCBl bmQgb2YgdHJhbnNhY3Rpb24gYmxvY2sKICBST0xMQkFDSzsKLS0tIDEwNzcsMTA4MyAtLS0t CiAgU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3JvbGVfbm9wcml2OwogIC0t IGZhaWxzIHdpdGggcm9sZSBub3QgbWVtYmVyIG9mIHBnX3JlYWRfYWxsX3NldHRpbmdzCiAg U0hPVyBzZXNzaW9uX3ByZWxvYWRfbGlicmFyaWVzOwohIEVSUk9SOiAgbXVzdCBiZSBzdXBl cnVzZXIgb3IgaGF2ZSBwcml2aWxlZ2VzIG9mIHBnX3JlYWRfYWxsX3NldHRpbmdzIHRvIGV4 YW1pbmUgInNlc3Npb25fcHJlbG9hZF9saWJyYXJpZXMiCiAgUkVTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OOwogIEVSUk9SOiAgY3VycmVudCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkLCBj b21tYW5kcyBpZ25vcmVkIHVudGlsIGVuZCBvZiB0cmFuc2FjdGlvbiBibG9jawogIFJPTExC QUNLOwo= --------------e99ASZbPQBwkrQHSK3Di52Ng--