From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 64BB8C4332F for ; Thu, 29 Dec 2022 11:38:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230212AbiL2Lia (ORCPT ); Thu, 29 Dec 2022 06:38:30 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230083AbiL2Li1 (ORCPT ); Thu, 29 Dec 2022 06:38:27 -0500 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6CAA110BF for ; Thu, 29 Dec 2022 03:38:25 -0800 (PST) Received: by mail-wm1-x329.google.com with SMTP id m3so4048969wmq.0 for ; Thu, 29 Dec 2022 03:38:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=uDgb/0utGN1YKBuLbj11R1lLFEjpDgJas2gPYQphuWs=; b=cWVCMBOSujql+0+1dHOrLDaSn+u7W/SBdaS4mkt9oDgSaNlalejeIHH9HogO16sRha hvz1bK0bM5ZWVQaoC/+mPrP2DUPEx/LdnXA67y8zDeHxHSPq8ovW0MB/em1UGtRylvC+ 9BiZG7pn20aVZgtketbuQcMp7IiMQkzO3VD9zxA0/TSd2itxidCZowXDXVwzFMFa6/sn jhrWJzm9Hb06TBzBoBiHtCNRSJa9gjD8xnV4Qcgl9tqAmhgCb40tGIa2KAfmlzcVWL1z cLJpH5/fUSSGtt8WzHAMhTmkViBMNuFPQmHeg8gtyNIvXzsOY4hKVq7wi6tfP/KhBm7r SbAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:references:cc:to:from:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=uDgb/0utGN1YKBuLbj11R1lLFEjpDgJas2gPYQphuWs=; b=X3aXv3t60WgI166cV0rvQGLvNo8/dS3NUHbxV71XG25MJ2PlkhrFY6Ettezq2lXaX0 1u/ZEM1trRmh/T+4oN+M30BViHYNVWoDgAKIbJKYcAWXhrAg5liOtE+Z6P0ZW9eIK2FP z1aazMEuDGcoFad9gLOEQw0zH+JYuvUhgn2aYYV9L5HMTl+PtmVxUQzOab/v3Em1N5z8 UHN9NnbQXLYSObAyJd4G0ZNWmD/3Z7CsFeTdFCLl9ZTljAojEkGOwkN5M9BTAI4O7rXJ z1OcL/MzzLl6DiDj9tfz81x4z8MU2W9WaArci9Tzj0R8zq0ORAeWjQbk5Vmy2hGopQK1 fi3w== X-Gm-Message-State: AFqh2kqhutRANiz7jlaUKUQmt3dMeAQlOC74bonrFD3W48UAeMzEH/cS jbOpWCTYnlOl9sPVZtz9RdAAiKT/xHQ= X-Google-Smtp-Source: AMrXdXuUnQtH16dEQqo9f0PKY63dwCa3UxKJ4r4edK3bfnfjciHiXrHmQWGmIACyWQqWYFO9y65p4g== X-Received: by 2002:a7b:cd99:0:b0:3d3:5506:1bac with SMTP id y25-20020a7bcd99000000b003d355061bacmr20370794wmj.30.1672313903719; Thu, 29 Dec 2022 03:38:23 -0800 (PST) Received: from [192.168.0.160] ([170.253.36.171]) by smtp.gmail.com with ESMTPSA id l7-20020a05600c4f0700b003d96c811d6dsm24328920wmq.30.2022.12.29.03.38.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 29 Dec 2022 03:38:23 -0800 (PST) Message-ID: <32434a78-d38a-79fc-5dc8-ec198dd9a1ea@gmail.com> Date: Thu, 29 Dec 2022 12:38:22 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [PATCH] scanf.3, sscanf.3, vsscanf.3: Split the page, one for strings and one for FILEs Content-Language: en-US From: Alejandro Colomar To: linux-man@vger.kernel.org Cc: Alejandro Colomar , Ian Abbott , Zack Weinberg References: <20221229112635.4684-1-alx@kernel.org> In-Reply-To: <20221229112635.4684-1-alx@kernel.org> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------r6SEIurd4UxJIUbAfh0J8L8n" Precedence: bulk List-ID: X-Mailing-List: linux-man@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------r6SEIurd4UxJIUbAfh0J8L8n Content-Type: multipart/mixed; boundary="------------cfPrm0M4vVgh1XV1xuFs09RO"; protected-headers="v1" From: Alejandro Colomar To: linux-man@vger.kernel.org Cc: Alejandro Colomar , Ian Abbott , Zack Weinberg Message-ID: <32434a78-d38a-79fc-5dc8-ec198dd9a1ea@gmail.com> Subject: Re: [PATCH] scanf.3, sscanf.3, vsscanf.3: Split the page, one for strings and one for FILEs References: <20221229112635.4684-1-alx@kernel.org> In-Reply-To: <20221229112635.4684-1-alx@kernel.org> --------------cfPrm0M4vVgh1XV1xuFs09RO Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 c3NjYW5mKDMpICAgICAgICAgICAgICAgICAgTGlicmFyeSBGdW5jdGlvbnMgTWFudWFsICAg ICAgICAgICAgICAgICAgc3NjYW5mKDMpDQoNCk5BTUUNCiAgICAgICAgc3NjYW5mLCB2c3Nj YW5mIC0gaW5wdXQgc3RyaW5nIGZvcm1hdCBjb252ZXJzaW9uDQoNCkxJQlJBUlkNCiAgICAg ICAgU3RhbmRhcmQgQyBsaWJyYXJ5IChsaWJjLCAtbGMpDQoNClNZTk9QU0lTDQogICAgICAg ICNpbmNsdWRlIDxzdGRpby5oPg0KDQogICAgICAgIGludCBzc2NhbmYoY29uc3QgY2hhciAq cmVzdHJpY3Qgc3RyLA0KICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlc3RyaWN0 IGZvcm1hdCwgLi4uKTsNCg0KICAgICAgICAjaW5jbHVkZSA8c3RkYXJnLmg+DQoNCiAgICAg ICAgaW50IHZzc2NhbmYoY29uc3QgY2hhciAqcmVzdHJpY3Qgc3RyLA0KICAgICAgICAgICAg ICAgICAgIGNvbnN0IGNoYXIgKnJlc3RyaWN0IGZvcm1hdCwgdmFfbGlzdCBhcCk7DQoNCiAg ICBGZWF0dXJlIFRlc3QgTWFjcm8gUmVxdWlyZW1lbnRzIGZvciBnbGliYyAoc2VlIGZlYXR1 cmVfdGVzdF9tYWNyb3MoNykpOg0KDQogICAgICAgIHZzc2NhbmYoKToNCiAgICAgICAgICAg IF9JU09DOTlfU09VUkNFIHx8IF9QT1NJWF9DX1NPVVJDRSA+PSAyMDAxMTJMDQoNCkRFU0NS SVBUSU9ODQogICAgICAgIFRoZSBzc2NhbmYoKSBmYW1pbHkgb2YgZnVuY3Rpb25zIHNjYW5z IGlucHV0IGFjY29yZGluZyB0byBmb3JtYXQgYXMgZGXigJANCiAgICAgICAgc2NyaWJlZCAg YmVsb3cuICBUaGlzIGZvcm1hdCBtYXkgY29udGFpbiBjb252ZXJzaW9uIHNwZWNpZmljYXRp b25zOyB0aGUNCiAgICAgICAgcmVzdWx0cyBmcm9tIHN1Y2ggY29udmVyc2lvbnMsIGlmIGFu eSwgIGFyZSAgc3RvcmVkICBpbiAgdGhlICBsb2NhdGlvbnMNCiAgICAgICAgcG9pbnRlZCAg dG8gIGJ5IHRoZSBwb2ludGVyIGFyZ3VtZW50cyB0aGF0IGZvbGxvdyBmb3JtYXQuICBFYWNo IHBvaW50ZXINCiAgICAgICAgYXJndW1lbnQgbXVzdCBiZSBvZiBhIHR5cGUgdGhhdCBpcyBh cHByb3ByaWF0ZSBmb3IgdGhlICB2YWx1ZSAgcmV0dXJuZWQNCiAgICAgICAgYnkgdGhlIGNv cnJlc3BvbmRpbmcgY29udmVyc2lvbiBzcGVjaWZpY2F0aW9uLg0KDQogICAgICAgIElmIHRo ZSBudW1iZXIgb2YgY29udmVyc2lvbiBzcGVjaWZpY2F0aW9ucyBpbiBmb3JtYXQgZXhjZWVk cyB0aGUgbnVtYmVyDQogICAgICAgIG9mICBwb2ludGVyICBhcmd1bWVudHMsICB0aGUgIHJl c3VsdHMgIGFyZSB1bmRlZmluZWQuICBJZiB0aGUgbnVtYmVyIG9mDQogICAgICAgIHBvaW50 ZXIgYXJndW1lbnRzIGV4Y2VlZHMgdGhlIG51bWJlciBvZiBjb252ZXJzaW9uIHNwZWNpZmlj YXRpb25zLCB0aGVuDQogICAgICAgIHRoZSBleGNlc3MgcG9pbnRlciBhcmd1bWVudHMgYXJl IGV2YWx1YXRlZCwgYnV0IGFyZSBvdGhlcndpc2UgaWdub3JlZC4NCg0KICAgICAgICBzc2Nh bmYoKSBUaGVzZSBmdW5jdGlvbnMgcmVhZCB0aGVpciBpbnB1dCBmcm9tIHRoZSBzdHJpbmcg cG9pbnRlZCB0byBieQ0KICAgICAgICBzdHIuDQoNCiAgICAgICAgVGhlIHZzc2NhbmYoKSBm dW5jdGlvbiBpcyBhbmFsb2dvdXMgdG8gdnNwcmludGYoMykuDQoNCiAgICAgICAgVGhlIGZv cm1hdCBzdHJpbmcgY29uc2lzdHMgb2YgYSBzZXF1ZW5jZSBvZiBkaXJlY3RpdmVzICB3aGlj aCAgZGVzY3JpYmUNCiAgICAgICAgaG93ICB0byAgcHJvY2VzcyAgdGhlIHNlcXVlbmNlIG9m IGlucHV0IGNoYXJhY3RlcnMuICBJZiBwcm9jZXNzaW5nIG9mIGENCiAgICAgICAgZGlyZWN0 aXZlIGZhaWxzLCBubyBmdXJ0aGVyIGlucHV0IGlzIHJlYWQsICBhbmQgIHNzY2FuZigpICBy ZXR1cm5zLiAgIEENCiAgICAgICAgImZhaWx1cmUiICBjYW4gIGJlIGVpdGhlciBvZiB0aGUg Zm9sbG93aW5nOiBpbnB1dCBmYWlsdXJlLCBtZWFuaW5nIHRoYXQNCiAgICAgICAgaW5wdXQg Y2hhcmFjdGVycyB3ZXJlIHVuYXZhaWxhYmxlLCBvciBtYXRjaGluZyAgZmFpbHVyZSwgIG1l YW5pbmcgIHRoYXQNCiAgICAgICAgdGhlIGlucHV0IHdhcyBpbmFwcHJvcHJpYXRlIChzZWUg YmVsb3cpLg0KDQogICAgICAgIEEgZGlyZWN0aXZlIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5n Og0KDQogICAgICAgIOKAoiAgICAgIEEgc2VxdWVuY2Ugb2Ygd2hpdGXigJBzcGFjZSBjaGFy YWN0ZXJzIChzcGFjZSwgdGFiLCBuZXdsaW5lLCBldGMuOw0KICAgICAgICAgICAgICAgc2Vl ICBpc3NwYWNlKDMpKS4gICBUaGlzICBkaXJlY3RpdmUgIG1hdGNoZXMgYW55IGFtb3VudCBv ZiB3aGl0ZQ0KICAgICAgICAgICAgICAgc3BhY2UsIGluY2x1ZGluZyBub25lLCBpbiB0aGUg aW5wdXQuDQoNCiAgICAgICAg4oCiICAgICAgQW4gb3JkaW5hcnkgY2hhcmFjdGVyIChpLmUu LCBvbmUgb3RoZXIgdGhhbiB3aGl0ZSBzcGFjZSBvciAnJScpLg0KICAgICAgICAgICAgICAg VGhpcyBjaGFyYWN0ZXIgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSBuZXh0IGNoYXJhY3RlciBv ZiBpbnB1dC4NCg0KICAgICAgICDigKIgICAgICBBIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlv biwgd2hpY2ggY29tbWVuY2VzIHdpdGggYSAnJScgKHBlcmNlbnQpDQogICAgICAgICAgICAg ICBjaGFyYWN0ZXIuICBBIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgaW5wdXQg aXMgY29udmVydGVkDQogICAgICAgICAgICAgICBhY2NvcmRpbmcgdG8gdGhpcyBzcGVjaWZp Y2F0aW9uLCBhbmQgdGhlIHJlc3VsdCBpcyBwbGFjZWQgaW4gdGhlDQogICAgICAgICAgICAg ICBjb3JyZXNwb25kaW5nIHBvaW50ZXIgYXJndW1lbnQuICBJZiB0aGUgbmV4dCBpdGVtIG9m IGlucHV0ICBkb2VzDQogICAgICAgICAgICAgICBub3QgIG1hdGNoICB0aGUgIGNvbnZlcnNp b24gc3BlY2lmaWNhdGlvbiwgdGhlIGNvbnZlcnNpb24gZmFpbHPigJQNCiAgICAgICAgICAg ICAgIHRoaXMgaXMgYSBtYXRjaGluZyBmYWlsdXJlLg0KDQogICAgICAgIEVhY2ggY29udmVy c2lvbiBzcGVjaWZpY2F0aW9uIGluIGZvcm1hdCBiZWdpbnMgd2l0aCBlaXRoZXIgdGhlICBj aGFyYWPigJANCiAgICAgICAgdGVyICclJyBvciB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlICIl biQiIChzZWUgYmVsb3cgZm9yIHRoZSBkaXN0aW5jdGlvbikNCiAgICAgICAgZm9sbG93ZWQg Ynk6DQoNCiAgICAgICAg4oCiICAgICAgQW4gb3B0aW9uYWwgJyonIGFzc2lnbm1lbnTigJBz dXBwcmVzc2lvbiBjaGFyYWN0ZXI6IHNzY2FuZigpIHJlYWRzDQogICAgICAgICAgICAgICBp bnB1dCAgYXMgZGlyZWN0ZWQgYnkgdGhlIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlvbiwgYnV0 IGRpc2NhcmRzDQogICAgICAgICAgICAgICB0aGUgaW5wdXQuICBObyBjb3JyZXNwb25kaW5n IHBvaW50ZXIgYXJndW1lbnQgaXMgIHJlcXVpcmVkLCAgYW5kDQogICAgICAgICAgICAgICB0 aGlzICBzcGVjaWZpY2F0aW9uICBpcyAgbm90IGluY2x1ZGVkIGluIHRoZSBjb3VudCBvZiBz dWNjZXNzZnVsDQogICAgICAgICAgICAgICBhc3NpZ25tZW50cyByZXR1cm5lZCBieSBzY2Fu ZigpLg0KDQogICAgICAgIOKAoiAgICAgIEZvciBkZWNpbWFsIGNvbnZlcnNpb25zLCBhbiBv cHRpb25hbCBxdW90ZSBjaGFyYWN0ZXIgKCcpLiAgIFRoaXMNCiAgICAgICAgICAgICAgIHNw ZWNpZmllcyAgdGhhdCAgdGhlIGlucHV0IG51bWJlciBtYXkgaW5jbHVkZSB0aG91c2FuZHPi gJkgc2VwYXJh4oCQDQogICAgICAgICAgICAgICB0b3JzIGFzIGRlZmluZWQgYnkgdGhlIExD X05VTUVSSUMgY2F0ZWdvcnkgb2YgIHRoZSAgY3VycmVudCAgbG/igJANCiAgICAgICAgICAg ICAgIGNhbGUuICAgKFNlZSAgc2V0bG9jYWxlKDMpLikgIFRoZSBxdW90ZSBjaGFyYWN0ZXIg bWF5IHByZWNlZGUgb3INCiAgICAgICAgICAgICAgIGZvbGxvdyB0aGUgJyonIGFzc2lnbm1l bnTigJBzdXBwcmVzc2lvbiBjaGFyYWN0ZXIuDQoNCiAgICAgICAg4oCiICAgICAgQW4gb3B0 aW9uYWwgJ20nIGNoYXJhY3Rlci4gIFRoaXMgaXMgdXNlZCB3aXRoIHN0cmluZyBjb252ZXJz aW9ucw0KICAgICAgICAgICAgICAgKCVzLCAlYywgJVspLCBhbmQgcmVsaWV2ZXMgdGhlIGNh bGxlciBvZiB0aGUgbmVlZCB0byBhbGxvY2F0ZSAgYQ0KICAgICAgICAgICAgICAgY29ycmVz cG9uZGluZyAgYnVmZmVyIHRvIGhvbGQgdGhlIGlucHV0OiBpbnN0ZWFkLCBzc2NhbmYoKSBh bGxv4oCQDQogICAgICAgICAgICAgICBjYXRlcyBhIGJ1ZmZlciBvZiBzdWZmaWNpZW50IHNp emUsIGFuZCBhc3NpZ25zICB0aGUgIGFkZHJlc3MgIG9mDQogICAgICAgICAgICAgICB0aGlz ICBidWZmZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgcG9pbnRlciBhcmd1bWVudCwgd2hpY2gg c2hvdWxkDQogICAgICAgICAgICAgICBiZSBhIHBvaW50ZXIgdG8gYSBjaGFyICogdmFyaWFi bGUgKHRoaXMgdmFyaWFibGUgZG9lcyAgbm90ICBuZWVkDQogICAgICAgICAgICAgICB0byAg YmUgIGluaXRpYWxpemVkICBiZWZvcmUgdGhlIGNhbGwpLiAgVGhlIGNhbGxlciBzaG91bGQg c3Vic2XigJANCiAgICAgICAgICAgICAgIHF1ZW50bHkgZnJlZSgzKSB0aGlzIGJ1ZmZlciB3 aGVuIGl0IGlzIG5vIGxvbmdlciByZXF1aXJlZC4NCg0KICAgICAgICDigKIgICAgICBBbiBv cHRpb25hbCBkZWNpbWFsIGludGVnZXIgd2hpY2ggc3BlY2lmaWVzICB0aGUgIG1heGltdW0g IGZpZWxkDQogICAgICAgICAgICAgICB3aWR0aC4gICBSZWFkaW5nIG9mIGNoYXJhY3RlcnMg c3RvcHMgZWl0aGVyIHdoZW4gdGhpcyBtYXhpbXVtIGlzDQogICAgICAgICAgICAgICByZWFj aGVkIG9yIHdoZW4gYSBub25tYXRjaGluZyBjaGFyYWN0ZXIgaXMgZm91bmQsIHdoaWNoZXZl ciBoYXDigJANCiAgICAgICAgICAgICAgIHBlbnMgZmlyc3QuICBNb3N0IGNvbnZlcnNpb25z IGRpc2NhcmQgaW5pdGlhbCB3aGl0ZSBzcGFjZSAgY2hhcuKAkA0KICAgICAgICAgICAgICAg YWN0ZXJzICAodGhlICBleGNlcHRpb25zICBhcmUgIG5vdGVkIGJlbG93KSwgYW5kIHRoZXNl IGRpc2NhcmRlZA0KICAgICAgICAgICAgICAgY2hhcmFjdGVycyBkb27igJl0IGNvdW50IHRv d2FyZCB0aGUgbWF4aW11bSBmaWVsZCAgd2lkdGguICAgU3RyaW5nDQogICAgICAgICAgICAg ICBpbnB1dCAgY29udmVyc2lvbnMgIHN0b3JlIGEgdGVybWluYXRpbmcgbnVsbCBieXRlICgn XDAnKSB0byBtYXJrDQogICAgICAgICAgICAgICB0aGUgZW5kIG9mIHRoZSBpbnB1dDsgdGhl IG1heGltdW0gZmllbGQgd2lkdGggZG9lcyAgbm90ICBpbmNsdWRlDQogICAgICAgICAgICAg ICB0aGlzIHRlcm1pbmF0b3IuDQoNCiAgICAgICAg4oCiICAgICAgQW4gIG9wdGlvbmFsICB0 eXBlICBtb2RpZmllciBjaGFyYWN0ZXIuICBGb3IgZXhhbXBsZSwgdGhlIGwgdHlwZQ0KICAg ICAgICAgICAgICAgbW9kaWZpZXIgaXMgdXNlZCB3aXRoIGludGVnZXIgY29udmVyc2lvbnMg c3VjaCBhcyAlZCB0byAgc3BlY2lmeQ0KICAgICAgICAgICAgICAgdGhhdCAgdGhlIGNvcnJl c3BvbmRpbmcgcG9pbnRlciBhcmd1bWVudCByZWZlcnMgdG8gYSBsb25nIHJhdGhlcg0KICAg ICAgICAgICAgICAgdGhhbiBhIHBvaW50ZXIgdG8gYW4gaW50Lg0KDQogICAgICAgIOKAoiAg ICAgIEEgY29udmVyc2lvbiBzcGVjaWZpZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHR5cGUgb2Yg aW5wdXQgIGNvbnZlcuKAkA0KICAgICAgICAgICAgICAgc2lvbiB0byBiZSBwZXJmb3JtZWQu DQoNCiAgICAgICAgVGhlIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlvbnMgaW4gZm9ybWF0IGFy ZSBvZiB0d28gZm9ybXMsIGVpdGhlciBiZWdpbuKAkA0KICAgICAgICBuaW5nICB3aXRoICAn JScgIG9yICBiZWdpbm5pbmcgd2l0aCAiJW4kIi4gIFRoZSB0d28gZm9ybXMgc2hvdWxkIG5v dCBiZQ0KICAgICAgICBtaXhlZCBpbiB0aGUgc2FtZSBmb3JtYXQgc3RyaW5nLCBleGNlcHQg dGhhdCBhIHN0cmluZyBjb250YWluaW5nICAiJW4kIg0KICAgICAgICBzcGVjaWZpY2F0aW9u cyAgY2FuIGluY2x1ZGUgJSUgYW5kICUqLiAgSWYgZm9ybWF0IGNvbnRhaW5zICclJyBzcGVj aWZp4oCQDQogICAgICAgIGNhdGlvbnMsIHRoZW4gdGhlc2UgY29ycmVzcG9uZCBpbiBvcmRl ciB3aXRoIHN1Y2Nlc3NpdmUgIHBvaW50ZXIgIGFyZ3XigJANCiAgICAgICAgbWVudHMuICAg SW4gdGhlICIlbiQiIGZvcm0gKHdoaWNoIGlzIHNwZWNpZmllZCBpbiBQT1NJWC4x4oCQMjAw MSwgYnV0IG5vdA0KICAgICAgICBDOTkpLCBuIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIHRoYXQg c3BlY2lmaWVzIHRoYXQgIHRoZSAgY29udmVydGVkICBpbnB1dA0KICAgICAgICBzaG91bGQg IGJlIHBsYWNlZCBpbiB0aGUgbG9jYXRpb24gcmVmZXJyZWQgdG8gYnkgdGhlIG7igJB0aCBw b2ludGVyIGFyZ3XigJANCiAgICAgICAgbWVudCBmb2xsb3dpbmcgZm9ybWF0Lg0KDQogICAg Q29udmVyc2lvbnMNCiAgICAgICAgVGhlIGZvbGxvd2luZyB0eXBlIG1vZGlmaWVyIGNoYXJh Y3RlcnMgY2FuIGFwcGVhciBpbiBhIGNvbnZlcnNpb24gc3BlY+KAkA0KICAgICAgICBpZmlj YXRpb246DQoNCiAgICAgICAgaCAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBjb252ZXJzaW9u IHdpbGwgYmUgb25lIG9mIGQsIGksIG8sIHUsICB4LCAgWCwNCiAgICAgICAgICAgICAgIG9y ICBuICBhbmQgIHRoZSBuZXh0IHBvaW50ZXIgaXMgYSBwb2ludGVyIHRvIGEgc2hvcnQgb3Ig dW5zaWduZWQNCiAgICAgICAgICAgICAgIHNob3J0IChyYXRoZXIgdGhhbiBpbnQpLg0KDQog ICAgICAgIGhoICAgICBBcyBmb3IgaCwgYnV0IHRoZSBuZXh0IHBvaW50ZXIgaXMgYSBwb2lu dGVyIHRvIGEgc2lnbmVkIGNoYXIgIG9yDQogICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFy Lg0KDQogICAgICAgIGogICAgICBBcyAgZm9yIGgsIGJ1dCB0aGUgbmV4dCBwb2ludGVyIGlz IGEgcG9pbnRlciB0byBhbiBpbnRtYXhfdCBvciBhDQogICAgICAgICAgICAgICB1aW50bWF4 X3QuICBUaGlzIG1vZGlmaWVyIHdhcyBpbnRyb2R1Y2VkIGluIEM5OS4NCg0KICAgICAgICBs ICAgICAgSW5kaWNhdGVzIGVpdGhlciB0aGF0IHRoZSBjb252ZXJzaW9uIHdpbGwgYmUgb25l IG9mIGQsIGksIG8sICB1LA0KICAgICAgICAgICAgICAgeCwgIFgsICBvciAgbiBhbmQgdGhl IG5leHQgcG9pbnRlciBpcyBhIHBvaW50ZXIgdG8gYSBsb25nIG9yIHVu4oCQDQogICAgICAg ICAgICAgICBzaWduZWQgbG9uZyAocmF0aGVyIHRoYW4gaW50KSwgb3IgdGhhdCB0aGUgIGNv bnZlcnNpb24gIHdpbGwgIGJlDQogICAgICAgICAgICAgICBvbmUgIG9mICBlLCAgZiwgb3Ig ZyBhbmQgdGhlIG5leHQgcG9pbnRlciBpcyBhIHBvaW50ZXIgdG8gZG91YmxlDQogICAgICAg ICAgICAgICAocmF0aGVyIHRoYW4gZmxvYXQpLiAgSWYgdXNlZCB3aXRoICVjIG9yICVzLCAg dGhlICBjb3JyZXNwb25kaW5nDQogICAgICAgICAgICAgICBwYXJhbWV0ZXIgIGlzICBjb25z aWRlcmVkICBhcyAgYSAgcG9pbnRlciB0byBhIHdpZGUgY2hhcmFjdGVyIG9yDQogICAgICAg ICAgICAgICB3aWRl4oCQY2hhcmFjdGVyIHN0cmluZyByZXNwZWN0aXZlbHkuDQoNCiAgICAg ICAgbGwgICAgIChlbGzigJBlbGwpIEluZGljYXRlcyB0aGF0IHRoZSBjb252ZXJzaW9uIHdp bGwgYmUgb25lIG9mIGIsIGQsICBpLA0KICAgICAgICAgICAgICAgbywgIHUsICB4LCAgWCwg IG9yIG4gYW5kIHRoZSBuZXh0IHBvaW50ZXIgaXMgYSBwb2ludGVyIHRvIGEgbG9uZw0KICAg ICAgICAgICAgICAgbG9uZyBvciB1bnNpZ25lZCBsb25nIGxvbmcgKHJhdGhlciB0aGFuIGlu dCkuDQoNCiAgICAgICAgTCAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBjb252ZXJzaW9uIHdp bGwgYmUgZWl0aGVyIGUsIGYsIG9yIGcgYW5kICB0aGUNCiAgICAgICAgICAgICAgIG5leHQg cG9pbnRlciBpcyBhIHBvaW50ZXIgdG8gbG9uZyBkb3VibGUgb3IgKGFzIGEgR05VIGV4dGVu c2lvbikNCiAgICAgICAgICAgICAgIHRoZSAgY29udmVyc2lvbiB3aWxsIGJlIGQsIGksIG8s IHUsIG9yIHggYW5kIHRoZSBuZXh0IHBvaW50ZXIgaXMNCiAgICAgICAgICAgICAgIGEgcG9p bnRlciB0byBsb25nIGxvbmcuDQoNCiAgICAgICAgcSAgICAgIGVxdWl2YWxlbnQgdG8gTC4g IFRoaXMgc3BlY2lmaWVyIGRvZXMgbm90IGV4aXN0IGluIEFOU0kgQy4NCg0KICAgICAgICB0 ICAgICAgQXMgZm9yIGgsIGJ1dCB0aGUgbmV4dCBwb2ludGVyIGlzICBhICBwb2ludGVyICB0 byAgYSAgcHRyZGlmZl90Lg0KICAgICAgICAgICAgICAgVGhpcyBtb2RpZmllciB3YXMgaW50 cm9kdWNlZCBpbiBDOTkuDQoNCiAgICAgICAgeiAgICAgIEFzICBmb3IgIGgsIGJ1dCB0aGUg bmV4dCBwb2ludGVyIGlzIGEgcG9pbnRlciB0byBhIHNpemVfdC4gIFRoaXMNCiAgICAgICAg ICAgICAgIG1vZGlmaWVyIHdhcyBpbnRyb2R1Y2VkIGluIEM5OS4NCg0KICAgICAgICBUaGUg Zm9sbG93aW5nIGNvbnZlcnNpb24gc3BlY2lmaWVycyBhcmUgYXZhaWxhYmxlOg0KDQogICAg ICAgICUgICAgICBNYXRjaGVzIGEgbGl0ZXJhbCAnJScuICBUaGF0IGlzLCAlJSBpbiB0aGUg Zm9ybWF0IHN0cmluZyBtYXRjaGVzDQogICAgICAgICAgICAgICBhIHNpbmdsZSBpbnB1dCAn JScgY2hhcmFjdGVyLiAgTm8gY29udmVyc2lvbiBpcyBkb25lICAoYnV0ICBpbmnigJANCiAg ICAgICAgICAgICAgIHRpYWwgIHdoaXRlIHNwYWNlIGNoYXJhY3RlcnMgYXJlIGRpc2NhcmRl ZCksIGFuZCBhc3NpZ25tZW50IGRvZXMNCiAgICAgICAgICAgICAgIG5vdCBvY2N1ci4NCg0K ICAgICAgICBkICAgICAgRGVwcmVjYXRlZC4gIE1hdGNoZXMgYW4gb3B0aW9uYWxseSBzaWdu ZWQgZGVjaW1hbCAgaW50ZWdlcjsgIHRoZQ0KICAgICAgICAgICAgICAgbmV4dCBwb2ludGVy IG11c3QgYmUgYSBwb2ludGVyIHRvIGludC4NCg0KICAgICAgICBpICAgICAgRGVwcmVjYXRl ZC4gICBNYXRjaGVzICBhbiAgb3B0aW9uYWxseSAgc2lnbmVkICBpbnRlZ2VyOyB0aGUgbmV4 dA0KICAgICAgICAgICAgICAgcG9pbnRlciBtdXN0IGJlIGEgcG9pbnRlciB0byBpbnQuICBU aGUgaW50ZWdlciBpcyByZWFkICBpbiAgYmFzZQ0KICAgICAgICAgICAgICAgMTYgIGlmICBp dCAgYmVnaW5zIHdpdGggMHggb3IgMFgsIGluIGJhc2UgOCBpZiBpdCBiZWdpbnMgd2l0aCAw LA0KICAgICAgICAgICAgICAgYW5kIGluIGJhc2UgMTAgb3RoZXJ3aXNlLiAgT25seSBjaGFy YWN0ZXJzICB0aGF0ICBjb3JyZXNwb25kICB0bw0KICAgICAgICAgICAgICAgdGhlIGJhc2Ug YXJlIHVzZWQuDQoNCiAgICAgICAgbyAgICAgIERlcHJlY2F0ZWQuICBNYXRjaGVzIGFuIHVu c2lnbmVkIG9jdGFsIGludGVnZXI7IHRoZSBuZXh0IHBvaW50ZXINCiAgICAgICAgICAgICAg IG11c3QgYmUgYSBwb2ludGVyIHRvIHVuc2lnbmVkIGludC4NCg0KICAgICAgICB1ICAgICAg RGVwcmVjYXRlZC4gICBNYXRjaGVzICBhbiAgdW5zaWduZWQgIGRlY2ltYWwgIGludGVnZXI7 ICB0aGUgbmV4dA0KICAgICAgICAgICAgICAgcG9pbnRlciBtdXN0IGJlIGEgcG9pbnRlciB0 byB1bnNpZ25lZCBpbnQuDQoNCiAgICAgICAgeCAgICAgIERlcHJlY2F0ZWQuICBNYXRjaGVz IGFuIHVuc2lnbmVkIGhleGFkZWNpbWFsIGludGVnZXIgICh0aGF0ICBtYXkNCiAgICAgICAg ICAgICAgIG9wdGlvbmFsbHkgYmVnaW4gd2l0aCBhIHByZWZpeCBvZiAweCBvciAwWCwgd2hp Y2ggaXMgZGlzY2FyZGVkKTsNCiAgICAgICAgICAgICAgIHRoZSBuZXh0IHBvaW50ZXIgbXVz dCBiZSBhIHBvaW50ZXIgdG8gdW5zaWduZWQgaW50Lg0KDQogICAgICAgIFggICAgICBEZXBy ZWNhdGVkLiAgRXF1aXZhbGVudCB0byB4Lg0KDQogICAgICAgIGYgICAgICBEZXByZWNhdGVk LiAgTWF0Y2hlcyBhbiBvcHRpb25hbGx5IHNpZ25lZCBmbG9hdGluZ+KAkHBvaW50IG51bWJl cjsNCiAgICAgICAgICAgICAgIHRoZSBuZXh0IHBvaW50ZXIgbXVzdCBiZSBhIHBvaW50ZXIg dG8gZmxvYXQuDQoNCiAgICAgICAgZSAgICAgIERlcHJlY2F0ZWQuICBFcXVpdmFsZW50IHRv IGYuDQoNCiAgICAgICAgZyAgICAgIERlcHJlY2F0ZWQuICBFcXVpdmFsZW50IHRvIGYuDQoN CiAgICAgICAgRSAgICAgIERlcHJlY2F0ZWQuICBFcXVpdmFsZW50IHRvIGYuDQoNCiAgICAg ICAgYSAgICAgIERlcHJlY2F0ZWQuICAoQzk5KSBFcXVpdmFsZW50IHRvIGYuDQoNCiAgICAg ICAgcyAgICAgIE1hdGNoZXMgIGEgIHNlcXVlbmNlICBvZiAgbm9u4oCQd2hpdGXigJBzcGFj ZSAgY2hhcmFjdGVyczsgIHRoZSBuZXh0DQogICAgICAgICAgICAgICBwb2ludGVyIG11c3Qg YmUgYSBwb2ludGVyIHRvIHRoZSBpbml0aWFsIGVsZW1lbnQgb2YgYSAgY2hhcmFjdGVyDQog ICAgICAgICAgICAgICBhcnJheSAgdGhhdCAgaXMgIGxvbmcgIGVub3VnaCB0byBob2xkIHRo ZSBpbnB1dCBzZXF1ZW5jZSBhbmQgdGhlDQogICAgICAgICAgICAgICB0ZXJtaW5hdGluZyBu dWxsIGJ5dGUgKCdcMCcpLCB3aGljaCBpcyBhZGRlZCBhdXRvbWF0aWNhbGx5LiAgVGhlDQog ICAgICAgICAgICAgICBpbnB1dCBzdHJpbmcgc3RvcHMgYXQgd2hpdGUgc3BhY2Ugb3IgYXQg dGhlIG1heGltdW0gZmllbGQgd2lkdGgsDQogICAgICAgICAgICAgICB3aGljaGV2ZXIgb2Nj dXJzIGZpcnN0Lg0KDQogICAgICAgIGMgICAgICBNYXRjaGVzIGEgc2VxdWVuY2Ugb2YgY2hh cmFjdGVycyB3aG9zZSBsZW5ndGggIGlzICBzcGVjaWZpZWQgIGJ5DQogICAgICAgICAgICAg ICB0aGUgIG1heGltdW0gZmllbGQgd2lkdGggKGRlZmF1bHQgMSk7IHRoZSBuZXh0IHBvaW50 ZXIgbXVzdCBiZSBhDQogICAgICAgICAgICAgICBwb2ludGVyIHRvIGNoYXIsIGFuZCB0aGVy ZSBtdXN0IGJlIGVub3VnaCByb29tIGZvciBhbGwgdGhlIGNoYXLigJANCiAgICAgICAgICAg ICAgIGFjdGVycyAobm8gdGVybWluYXRpbmcgbnVsbCBieXRlIGlzIGFkZGVkKS4gIFRoZSB1 c3VhbCAgc2tpcCAgb2YNCiAgICAgICAgICAgICAgIGxlYWRpbmcgIHdoaXRlICBzcGFjZSBp cyBzdXBwcmVzc2VkLiAgVG8gc2tpcCB3aGl0ZSBzcGFjZSBmaXJzdCwNCiAgICAgICAgICAg ICAgIHVzZSBhbiBleHBsaWNpdCBzcGFjZSBpbiB0aGUgZm9ybWF0Lg0KDQogICAgICAgIFsg ICAgICBNYXRjaGVzIGEgbm9uZW1wdHkgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBmcm9tIHRo ZSBzcGVjaWZpZWQgc2V0DQogICAgICAgICAgICAgICBvZiBhY2NlcHRlZCBjaGFyYWN0ZXJz OyB0aGUgbmV4dCBwb2ludGVyIG11c3QgYmUgIGEgIHBvaW50ZXIgIHRvDQogICAgICAgICAg ICAgICBjaGFyLCAgYW5kICB0aGVyZSAgbXVzdCBiZSBlbm91Z2ggcm9vbSBmb3IgYWxsIHRo ZSBjaGFyYWN0ZXJzIGluDQogICAgICAgICAgICAgICB0aGUgc3RyaW5nLCBwbHVzIGEgdGVy bWluYXRpbmcgbnVsbCBieXRlLiAgIFRoZSAgdXN1YWwgIHNraXAgIG9mDQogICAgICAgICAg ICAgICBsZWFkaW5nICB3aGl0ZSBzcGFjZSBpcyBzdXBwcmVzc2VkLiAgVGhlIHN0cmluZyBp cyB0byBiZSBtYWRlIHVwDQogICAgICAgICAgICAgICBvZiBjaGFyYWN0ZXJzIGluIChvciBu b3QgaW4pIGEgcGFydGljdWxhciBzZXQ7IHRoZSAgc2V0ICBpcyAgZGXigJANCiAgICAgICAg ICAgICAgIGZpbmVkIGJ5IHRoZSBjaGFyYWN0ZXJzIGJldHdlZW4gdGhlIG9wZW4gYnJhY2tl dCBbIGNoYXJhY3RlciBhbmQNCiAgICAgICAgICAgICAgIGEgIGNsb3NlIGJyYWNrZXQgXSBj aGFyYWN0ZXIuICBUaGUgc2V0IGV4Y2x1ZGVzIHRob3NlIGNoYXJhY3RlcnMNCiAgICAgICAg ICAgICAgIGlmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIG9wZW4gYnJhY2tldCAg aXMgIGEgIGNpcmN1bWZsZXgNCiAgICAgICAgICAgICAgICheKS4gICBUbyAgaW5jbHVkZSBh IGNsb3NlIGJyYWNrZXQgaW4gdGhlIHNldCwgbWFrZSBpdCB0aGUgZmlyc3QNCiAgICAgICAg ICAgICAgIGNoYXJhY3RlciBhZnRlciB0aGUgb3BlbiBicmFja2V0IG9yIHRoZSAgY2lyY3Vt ZmxleDsgIGFueSAgb3RoZXINCiAgICAgICAgICAgICAgIHBvc2l0aW9uICB3aWxsIGVuZCB0 aGUgc2V0LiAgVGhlIGh5cGhlbiBjaGFyYWN0ZXIgLSBpcyBhbHNvIHNwZeKAkA0KICAgICAg ICAgICAgICAgY2lhbDsgd2hlbiBwbGFjZWQgYmV0d2VlbiB0d28gb3RoZXIgY2hhcmFjdGVy cywgaXQgYWRkcyBhbGwgIGlu4oCQDQogICAgICAgICAgICAgICB0ZXJ2ZW5pbmcgIGNoYXJh Y3RlcnMgIHRvIHRoZSBzZXQuICBUbyBpbmNsdWRlIGEgaHlwaGVuLCBtYWtlIGl0DQogICAg ICAgICAgICAgICB0aGUgbGFzdCBjaGFyYWN0ZXIgYmVmb3JlIHRoZSAgZmluYWwgIGNsb3Nl ICBicmFja2V0LiAgIEZvciAgaW7igJANCiAgICAgICAgICAgICAgIHN0YW5jZSwgW15dMC05 LV0gbWVhbnMgdGhlIHNldCAiZXZlcnl0aGluZyBleGNlcHQgY2xvc2UgYnJhY2tldCwNCiAg ICAgICAgICAgICAgIHplcm8gIHRocm91Z2ggIG5pbmUsICBhbmQgaHlwaGVuIi4gIFRoZSBz dHJpbmcgZW5kcyB3aXRoIHRoZSBhcOKAkA0KICAgICAgICAgICAgICAgcGVhcmFuY2Ugb2Yg YSBjaGFyYWN0ZXIgbm90IGluIHRoZSAob3IsIHdpdGggYSAgY2lyY3VtZmxleCwgIGluKQ0K ICAgICAgICAgICAgICAgc2V0IG9yIHdoZW4gdGhlIGZpZWxkIHdpZHRoIHJ1bnMgb3V0Lg0K DQogICAgICAgIHAgICAgICBNYXRjaGVzICBhICBwb2ludGVyICB2YWx1ZSAgKGFzIHByaW50 ZWQgYnkgJXAgaW4gcHJpbnRmKDMpKTsgdGhlDQogICAgICAgICAgICAgICBuZXh0IHBvaW50 ZXIgbXVzdCBiZSBhIHBvaW50ZXIgdG8gYSBwb2ludGVyIHRvIHZvaWQuDQoNCiAgICAgICAg biAgICAgIE5vdGhpbmcgaXMgZXhwZWN0ZWQ7IGluc3RlYWQsIHRoZSBudW1iZXIgb2YgY2hh cmFjdGVycyAgY29uc3VtZWQNCiAgICAgICAgICAgICAgIHRodXMgIGZhciAgZnJvbSAgdGhl ICBpbnB1dCAgaXMgc3RvcmVkIHRocm91Z2ggdGhlIG5leHQgcG9pbnRlciwNCiAgICAgICAg ICAgICAgIHdoaWNoIG11c3QgYmUgYSBwb2ludGVyIHRvIGludCwgb3IgdmFyaWFudCAgd2hv c2UgIHNpemUgIG1hdGNoZXMNCiAgICAgICAgICAgICAgIHRoZSAgKG9wdGlvbmFsbHkpIHN1 cHBsaWVkIGludGVnZXIgbGVuZ3RoIG1vZGlmaWVyLiAgVGhpcyBpcyBub3QNCiAgICAgICAg ICAgICAgIGEgY29udmVyc2lvbiBhbmQgZG9lcyBub3QgaW5jcmVhc2UgdGhlICBjb3VudCAg cmV0dXJuZWQgIGJ5ICB0aGUNCiAgICAgICAgICAgICAgIGZ1bmN0aW9uLiAgIFRoZSAgYXNz aWdubWVudCBjYW4gYmUgc3VwcHJlc3NlZCB3aXRoIHRoZSAqIGFzc2lnbuKAkA0KICAgICAg ICAgICAgICAgbWVudOKAkHN1cHByZXNzaW9uIGNoYXJhY3RlciwgYnV0IHRoZSBlZmZlY3Qg b24gdGhlICByZXR1cm4gIHZhbHVlDQogICAgICAgICAgICAgICBpcyB1bmRlZmluZWQuICBU aGVyZWZvcmUgJSpuIGNvbnZlcnNpb25zIHNob3VsZCBub3QgYmUgdXNlZC4NCg0KUkVUVVJO IFZBTFVFDQogICAgICAgIE9uICBzdWNjZXNzLCAgdGhlc2UgZnVuY3Rpb25zIHJldHVybiB0 aGUgbnVtYmVyIG9mIGlucHV0IGl0ZW1zIHN1Y2Nlc3PigJANCiAgICAgICAgZnVsbHkgbWF0 Y2hlZCBhbmQgYXNzaWduZWQ7IHRoaXMgY2FuIGJlIGZld2VyICB0aGFuICBwcm92aWRlZCAg Zm9yLCAgb3INCiAgICAgICAgZXZlbiB6ZXJvLCBpbiB0aGUgZXZlbnQgb2YgYW4gZWFybHkg bWF0Y2hpbmcgZmFpbHVyZS4NCg0KICAgICAgICBUaGUgIHZhbHVlIEVPRiBpcyByZXR1cm5l ZCBpZiB0aGUgZW5kIG9mIGlucHV0IGlzIHJlYWNoZWQgYmVmb3JlIGVpdGhlcg0KICAgICAg ICB0aGUgZmlyc3Qgc3VjY2Vzc2Z1bCBjb252ZXJzaW9uIG9yIGEgbWF0Y2hpbmcgZmFpbHVy ZSBvY2N1cnMuICAgRU9GICBpcw0KICAgICAgICBhbHNvIHJldHVybmVkIGlmIGEgcmVhZCBl cnJvciBvY2N1cnMsIGluIHdoaWNoIGNhc2UgdGhlIGVycm9yIGluZGljYXRvcg0KICAgICAg ICBmb3IgdGhlIHN0cmVhbSAoc2VlIGZlcnJvcigzKSkgaXMgc2V0LCBhbmQgZXJybm8gaXMg c2V0IHRvIGluZGljYXRlIHRoZQ0KICAgICAgICBlcnJvci4NCg0KRVJST1JTDQogICAgICAg IEVJTFNFUSBJbnB1dCBieXRlIHNlcXVlbmNlIGRvZXMgbm90IGZvcm0gYSB2YWxpZCBjaGFy YWN0ZXIuDQoNCiAgICAgICAgRUlOVkFMIE5vdCBlbm91Z2ggYXJndW1lbnRzOyBvciBmb3Jt YXQgaXMgTlVMTC4NCg0KICAgICAgICBFTk9NRU0gT3V0IG9mIG1lbW9yeS4NCg0KQVRUUklC VVRFUw0KICAgICAgICBGb3IgIGFuICBleHBsYW5hdGlvbiAgb2YgIHRoZSAgdGVybXMgIHVz ZWQgaW4gdGhpcyBzZWN0aW9uLCBzZWUgYXR0cmli4oCQDQogICAgICAgIHV0ZXMoNykuDQog ICAgICAgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUrOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUkA0KICAgICAgICDilIJJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAg ICAg4pSCIEF0dHJpYnV0ZSAgICAg4pSCIFZhbHVlICAgICAgICAgIOKUgg0KICAgICAgICDi lJzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lLzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilKQN CiAgICAgICAg4pSCc3NjYW5mKCksIHZzc2NhbmYoKSAgICAgICAgICAgICAgICAgIOKUgiBU aHJlYWQgc2FmZXR5IOKUgiBNVOKAkFNhZmUgbG9jYWxlIOKUgg0KICAgICAgICDilJTilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lLTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilLTilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgNCg0KU1RB TkRBUkRTDQogICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBjb25mb3JtIHRvIEM5OSBhbmQgUE9T SVguMeKAkDIwMDEuDQoNCiAgICAgICAgVGhlIHEgc3BlY2lmaWVyIGlzIHRoZSA0LjRCU0Qg bm90YXRpb24gZm9yIGxvbmcgbG9uZywgd2hpbGUgbGwgIG9yICB0aGUNCiAgICAgICAgdXNh Z2Ugb2YgTCBpbiBpbnRlZ2VyIGNvbnZlcnNpb25zIGlzIHRoZSBHTlUgbm90YXRpb24uDQoN CiAgICAgICAgVGhlIExpbnV4IHZlcnNpb24gb2YgdGhlc2UgZnVuY3Rpb25zIGlzIGJhc2Vk IG9uIHRoZSBHTlUgbGliaW8gbGlicmFyeS4NCiAgICAgICAgVGFrZSAgYSAgbG9vayAgYXQg dGhlIGluZm8gZG9jdW1lbnRhdGlvbiBvZiBHTlUgbGliYyAoZ2xpYmPigJAxLjA4KSBmb3Ig YQ0KICAgICAgICBtb3JlIGNvbmNpc2UgZGVzY3JpcHRpb24uDQoNCk5PVEVTDQogICAgVGhl IOKAmWHigJkgYXNzaWdubWVudOKAkGFsbG9jYXRpb24gbW9kaWZpZXINCiAgICAgICAgT3Jp Z2luYWxseSwgdGhlIEdOVSBDIGxpYnJhcnkgc3VwcG9ydGVkIGR5bmFtaWMgYWxsb2NhdGlv biAgZm9yICBzdHJpbmcNCiAgICAgICAgaW5wdXRzIChhcyBhIG5vbnN0YW5kYXJkIGV4dGVu c2lvbikgdmlhIHRoZSBhIGNoYXJhY3Rlci4gIChUaGlzIGZlYXR1cmUNCiAgICAgICAgaXMg IHByZXNlbnQgIGF0IGxlYXN0IGFzIGZhciBiYWNrIGFzIGdsaWJjIDIuMC4pICBUaHVzLCBv bmUgY291bGQgd3JpdGUNCiAgICAgICAgdGhlIGZvbGxvd2luZyB0byBoYXZlIHNzY2FuZigp IGFsbG9jYXRlIGEgYnVmZmVyIGZvciBhIHN0cmluZywgIHdpdGggIGENCiAgICAgICAgcG9p bnRlciB0byB0aGF0IGJ1ZmZlciBiZWluZyByZXR1cm5lZCBpbiAqYnVmOg0KDQogICAgICAg ICAgICBjaGFyICpidWY7DQogICAgICAgICAgICBzc2NhbmYoc3RyLCAiJWFzIiwgJmJ1Zik7 DQoNCiAgICAgICAgVGhlICB1c2UgIG9mICB0aGUgbGV0dGVyIGEgZm9yIHRoaXMgcHVycG9z ZSB3YXMgcHJvYmxlbWF0aWMsIHNpbmNlIGEgaXMNCiAgICAgICAgYWxzbyBzcGVjaWZpZWQg YnkgdGhlIElTTyBDIHN0YW5kYXJkIGFzIGEgc3lub255bSBmb3IgZiAoZmxvYXRpbmfigJBw b2ludA0KICAgICAgICBpbnB1dCkuICBQT1NJWC4x4oCQMjAwOCBpbnN0ZWFkIHNwZWNpZmll cyB0aGUgbSBtb2RpZmllciAgZm9yICBhc3NpZ25tZW50DQogICAgICAgIGFsbG9jYXRpb24g KGFzIGRvY3VtZW50ZWQgaW4gREVTQ1JJUFRJT04sIGFib3ZlKS4NCg0KICAgICAgICBOb3Rl ICB0aGF0ICB0aGUgIGEgbW9kaWZpZXIgaXMgbm90IGF2YWlsYWJsZSBpZiB0aGUgcHJvZ3Jh bSBpcyBjb21waWxlZA0KICAgICAgICB3aXRoIGdjYyAtc3RkPWM5OSBvciBnY2MgLURfSVNP Qzk5X1NPVVJDRSAodW5sZXNzIF9HTlVfU09VUkNFICBpcyAgYWxzbw0KICAgICAgICBzcGVj aWZpZWQpLCAgaW4gIHdoaWNoICBjYXNlICB0aGUgIGEgIGlzIGludGVycHJldGVkIGFzIGEg c3BlY2lmaWVyIGZvcg0KICAgICAgICBmbG9hdGluZ+KAkHBvaW50IG51bWJlcnMgKHNlZSBh Ym92ZSkuDQoNCiAgICAgICAgU3VwcG9ydCBmb3IgdGhlIG0gbW9kaWZpZXIgd2FzIGFkZGVk IHRvIGdsaWJjICAyLjcsICBhbmQgIG5ldyAgcHJvZ3JhbXMNCiAgICAgICAgc2hvdWxkIHVz ZSB0aGF0IG1vZGlmaWVyIGluc3RlYWQgb2YgYS4NCg0KICAgICAgICBBcyAgd2VsbCBhcyBi ZWluZyBzdGFuZGFyZGl6ZWQgYnkgUE9TSVgsIHRoZSBtIG1vZGlmaWVyIGhhcyB0aGUgZm9s bG934oCQDQogICAgICAgIGluZyBmdXJ0aGVyIGFkdmFudGFnZXMgb3ZlciB0aGUgdXNlIG9m IGE6DQoNCiAgICAgICAg4oCiICBJdCBtYXkgYWxzbyBiZSBhcHBsaWVkIHRvICVjIGNvbnZl cnNpb24gc3BlY2lmaWVycyAoZS5nLiwgJTNtYykuDQoNCiAgICAgICAg4oCiICBJdCBhdm9p ZHMgYW1iaWd1aXR5IHdpdGggcmVzcGVjdCB0byB0aGUgJWEgZmxvYXRpbmfigJBwb2ludCBj b252ZXJzaW9uDQogICAgICAgICAgIHNwZWNpZmllciAoYW5kIGlzIHVuYWZmZWN0ZWQgYnkg Z2NjIC1zdGQ9Yzk5IGV0Yy4pLg0KDQpCVUdTDQogICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBh cmUgZnVsbHkgQzk5IGNvbmZvcm1hbnQsIGJ1dCAgcHJvdmlkZSAgdGhlICBhZGRpdGlvbmFs DQogICAgICAgIG1vZGlmaWVycyAgcSAgYW5kICBhICBhcyB3ZWxsIGFzIGFuIGFkZGl0aW9u YWwgYmVoYXZpb3Igb2YgdGhlIEwgYW5kIGxsDQogICAgICAgIG1vZGlmaWVycy4gIFRoZSBs YXR0ZXIgbWF5IGJlIGNvbnNpZGVyZWQgdG8gYmUgYSBidWcsIGFzIGl0IGNoYW5nZXMgdGhl DQogICAgICAgIGJlaGF2aW9yIG9mIG1vZGlmaWVycyBkZWZpbmVkIGluIEM5OS4NCg0KICAg ICAgICBTb21lIGNvbWJpbmF0aW9ucyBvZiB0aGUgdHlwZSBtb2RpZmllcnMgYW5kIGNvbnZl cnNpb24gIHNwZWNpZmllcnMgIGRl4oCQDQogICAgICAgIGZpbmVkICBieSAgQzk5ICBkbyAg bm90ICBtYWtlIHNlbnNlIChlLmcuLCAlTGQpLiAgV2hpbGUgdGhleSBtYXkgaGF2ZSBhDQog ICAgICAgIHdlbGzigJBkZWZpbmVkIGJlaGF2aW9yIG9uIExpbnV4LCB0aGlzIG5lZWQgbm90 IHRvIGJlIHNvIG9uIG90aGVyICBhcmNoaeKAkA0KICAgICAgICB0ZWN0dXJlcy4gIFRoZXJl Zm9yZSBpdCB1c3VhbGx5IGlzIGJldHRlciB0byB1c2UgbW9kaWZpZXJzIHRoYXQgYXJlIG5v dA0KICAgICAgICBkZWZpbmVkICBieSBDOTkgYXQgYWxsLCB0aGF0IGlzLCB1c2UgcSBpbnN0 ZWFkIG9mIEwgaW4gY29tYmluYXRpb24gd2l0aA0KICAgICAgICBkLCBpLCBvLCB1LCB4LCBh bmQgWCBjb252ZXJzaW9ucyBvciBsbC4NCg0KICAgICAgICBUaGUgdXNhZ2Ugb2YgcSBpcyBu b3QgdGhlIHNhbWUgYXMgb24gNC40QlNELCBhcyBpdCBtYXkgYmUgdXNlZCBpbiBmbG9hdA0K ICAgICAgICBjb252ZXJzaW9ucyBlcXVpdmFsZW50bHkgdG8gTC4NCg0KRVhBTVBMRVMNCiAg ICAgICAgVG8gdXNlIHRoZSBkeW5hbWljIGFsbG9jYXRpb24gY29udmVyc2lvbiAgc3BlY2lm aWVyLCAgc3BlY2lmeSAgbSAgYXMgIGENCiAgICAgICAgbGVuZ3RoICBtb2RpZmllciAgKHRo dXMgJW1zIG9yICVtW3JhbmdlXSkuICBUaGUgY2FsbGVyIG11c3QgZnJlZSgzKSB0aGUNCiAg ICAgICAgcmV0dXJuZWQgc3RyaW5nLCBhcyBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGU6DQoN CiAgICAgICAgICAgIGNoYXIgKnA7DQogICAgICAgICAgICBpbnQgbjsNCg0KICAgICAgICAg ICAgZXJybm8gPSAwOw0KICAgICAgICAgICAgbiA9IHNzY2FuZihzdHIsICIlbVthLXpdIiwg JnApOw0KICAgICAgICAgICAgaWYgKG4gPT0gMSkgew0KICAgICAgICAgICAgICAgIHByaW50 ZigicmVhZDogJXNcbiIsIHApOw0KICAgICAgICAgICAgICAgIGZyZWUocCk7DQogICAgICAg ICAgICB9IGVsc2UgaWYgKGVycm5vICE9IDApIHsNCiAgICAgICAgICAgICAgICBwZXJyb3Io InNzY2FuZiIpOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICBmcHJp bnRmKHN0ZGVyciwgIk5vIG1hdGNoaW5nIGNoYXJhY3RlcnNcbiIpOw0KICAgICAgICAgICAg fQ0KDQogICAgICAgIEFzIHNob3duIGluIHRoZSBhYm92ZSBleGFtcGxlLCBpdCBpcyBuZWNl c3NhcnkgdG8gY2FsbCBmcmVlKDMpIG9ubHkgIGlmDQogICAgICAgIHRoZSBzc2NhbmYoKSBj YWxsIHN1Y2Nlc3NmdWxseSByZWFkIGEgc3RyaW5nLg0KDQpTRUUgQUxTTw0KICAgICAgICBn ZXRjKDMpLCBwcmludGYoMyksIHNldGxvY2FsZSgzKSwgc3RydG9kKDMpLCBzdHJ0b2woMyks IHN0cnRvdWwoMykNCg0KTGludXggbWFu4oCQcGFnZXMgKHVucmVsZWFzZWQpICAgICAgICAo ZGF0ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2NhbmYoMykNCg== --------------cfPrm0M4vVgh1XV1xuFs09RO-- --------------r6SEIurd4UxJIUbAfh0J8L8n Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEE6jqH8KTroDDkXfJAnowa+77/2zIFAmOtfC4ACgkQnowa+77/ 2zJswQ/6A4j3uTz7VhgnLgTsJ3iKWk0KVzsg17dm1cXliQ6DhAWBb2Bt8ZK+pVgO 6siFpsYX/QPd0Cp0SlK6jwuprcmtQUWKx5dDNpyrn+bIffyTkzcVGENZhLTk6ARH 8CRulu3m1+WiozwbR4fpI5X0pMdojM1VhagSkTSjNifAkiNzDvbtXbJyLxubNBUx M8KDiw9ggun9j2YyFvOmyqPjfTTbSEpBKk+FFgfuwf0cLv/jEPEps42jnrQsN1DN bfR4STx5oGzUE2kNM6YOpJgGldKAErHXTCbDQL9pdgYoschyJCK5ivHVyvPAAR6m Mxj4ganoDA/9WKvNqtXYAueAV/iNipdk0xyFtWGs0mRLah2GVeKNsNPdlTMUV4XX 92PO6RIUhfLzHdG7bm88GutcmRr4FuPMTlgosUz1gpasQb/nC954wxIBQuZKR0cV hVdDzZWAsqABTnn+EG+nKJ5yQnCSqGYTUdog32KwRyjdR73yCXrWY/4Nm6OD++TE HYnOjszlWefpHyF8ivHA+7czooN0oW2c5uMLUS/BseSoMGe0vmhpTgIICBUfOkpx Wk/Aos+nqhBMLo6VFJe99TxYsD5+pjd2M46SCg+h3UCowpbYy8VdQZlHmIQYOfn2 AYibty5Gb0SqHhkLm2AY7b+Nqi4Cn3yN13YiweJF2XI+6KVrVEM= =djAq -----END PGP SIGNATURE----- --------------r6SEIurd4UxJIUbAfh0J8L8n--