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 3EE37C4332F for ; Sun, 11 Dec 2022 23:59:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230446AbiLKX7g (ORCPT ); Sun, 11 Dec 2022 18:59:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38632 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229475AbiLKX7f (ORCPT ); Sun, 11 Dec 2022 18:59:35 -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 41F60C76C for ; Sun, 11 Dec 2022 15:59:33 -0800 (PST) Received: by mail-wm1-x329.google.com with SMTP id c65-20020a1c3544000000b003cfffd00fc0so3835867wma.1 for ; Sun, 11 Dec 2022 15:59:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=YkKuqBYAFBNsN2DtW95YYYuEEuCv+zW1o8kkm4ItdWg=; b=jxiJLPv692UYGD2Qy8vftKuLkvcSKQYIeFTvqXn4oNYyGEKl/ejk11iKxNFM/WESFc JjNn2kZh5sTaNdyGPkPDOp/KCMJgVTAgesTdxB2m77McDpOiRNSny5x/oEyHJO79l9JT gkttu0YPuSfbWKh5Ts+/nv2mrKA5w0IF+ywDw0mLSozCvPx04eMZ1ie8qWtJAk+DYr4j Lu9uWyFzIr5T+wouek/DsMSRxByF8bUWpBD4b8mnSKrfoy4ISM3tbvnR/Xb8NQzvtCp1 lrEyDqCmB7joPSPkFYQmFsDQM4iTP7YnGrk/pHWGNEQEMcnjoJR0OpYr6zeOAHim+EEP 2JzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=YkKuqBYAFBNsN2DtW95YYYuEEuCv+zW1o8kkm4ItdWg=; b=7KUDeDWv2vqUjLsNlhr4ZhetBOtJJBqXN5vkwq3raWEy0zWWQvrUWWaUG0hWnQsik6 kK6UdZOqm2pJzFMRuP7aYNa/+qIB6g0JLnU3nt+M+++rH/vLw6jF+v9M0tBxd6z3Nk1+ L5mUBn+Cehf3ed6WRO987iCMju/W5mxpwrZ2NejM+fBlTfDSAlMXjIt9BJ5gs462lEca aqkXL+wc5wuGB1X60l88qkhpuK41Cr+3r0MWAgZ0EGipvTrA5gE6aPPpm+OqifmPyw2v XplF4fWLhfdYAyYSr1uG38l3ETbqzdO4im9EX38TSno5GhFgoGoIc3P5VBRFYS1GG9O3 nlqw== X-Gm-Message-State: ANoB5pnf/OV1rF2nj1U9+WsyjCGCi9X6cxUxNkuHmuE0EyqOe3N9BTg8 yVGcHBA24BAjigpUAXIsFQQreoBbXew= X-Google-Smtp-Source: AA0mqf70BOmGfcWopPMLdFtWLoRDqjiuz8ofW0LVg8ZZe9pXM3v8TSzZenfKh3a8OykZQunk6jIdzQ== X-Received: by 2002:a05:600c:5010:b0:3d0:71d1:7931 with SMTP id n16-20020a05600c501000b003d071d17931mr11424312wmr.8.1670803171456; Sun, 11 Dec 2022 15:59:31 -0800 (PST) Received: from [192.168.0.160] ([170.253.36.171]) by smtp.gmail.com with ESMTPSA id z11-20020a7bc7cb000000b003d1ee3a6542sm7023108wmk.47.2022.12.11.15.59.30 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 11 Dec 2022 15:59:30 -0800 (PST) Message-ID: <176225b0-4b0e-698b-b79e-f8ed78b4cf8c@gmail.com> Date: Mon, 12 Dec 2022 00:59:21 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.5.1 Content-Language: en-US To: linux-man From: Alejandro Colomar Subject: string_copy(7): New manual page documenting string copying functions. Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------d806Bs0MVbNt5iC0PHoplpps" Precedence: bulk List-ID: X-Mailing-List: linux-man@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------d806Bs0MVbNt5iC0PHoplpps Content-Type: multipart/mixed; boundary="------------7VFu20eP387azfOP7SGo51DH"; protected-headers="v1" From: Alejandro Colomar To: linux-man Message-ID: <176225b0-4b0e-698b-b79e-f8ed78b4cf8c@gmail.com> Subject: string_copy(7): New manual page documenting string copying functions. --------------7VFu20eP387azfOP7SGo51DH Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkgYWxsIQ0KDQpJJ20gcGxhbm5pbmcgdG8gYWRkIGEgbmV3IG1hbnVhbCBwYWdlIHRoYXQg ZG9jdW1lbnRzIGFsbCBzdHJpbmcgY29weWluZyANCmZ1bmN0aW9ucy4gIEl0IGNvdmVycyBt b3JlIGRldGFpbCB0aGFuIGFueSBvZiB0aGUgZXhpc3RpbmcgbWFudWFsIHBhZ2VzIChhbmQg aW4gDQpmYWN0LCBJJ3ZlIGRpc2NvdmVyZWQgc29tZSBwcm9wZXJ0aWVzIG9mIHRoZSBmdW5j dGlvbnMgZG9jdW1lbnRlZCB3aGlsZSB3b3JraW5nIA0Kb24gdGhpcyBwYWdlKS4gIFRoZSBp bnRlbnRpb24gaXMgdG8gcmVtb3ZlIHRoZSBleGlzdGluZyBzZXBhcmF0ZSBtYW51YWwgcGFn ZXMgDQpmb3IgYWxsIHN0cmluZyBjb3B5aW5nIGZ1bmN0aW9ucywgYW5kIG1ha2UgdGhlbSBs aW5rcyB0byB0aGlzIG5ldyBwYWdlLiAgSXQgDQppbnRlbmRzIHRvIGJlIHRoZSBvbmx5IHJl ZmVyZW5jZSBkb2N1bWVudGF0aW9uIGZvciBjb3B5aW5nIHN0cmluZ3MgaW4gQywgYW5kIA0K aG9wZWZ1bGx5IGZpeCB0aGUgaGFsZiBjZW50dXJ5IG9mIHN1Ym9wdGltYWwgc3RyaW5nIGNv cHlpbmcgbGlicmFyeSB3aXRoIHdoaWNoIA0Kd2UndmUgbGl2ZWQuICAoU2F5IGdvb2RieWUg dG8gc3RkOjpzdHJpbmcsIGhlcmUgY29tZSBiYWNrIEMgc3RyaW5ncyA7KQ0KDQpUaGUgZm9y bWF0dGVkIG1hbnVhbCBwYWdlIGlzIGJlbG93Lg0KDQpBbGV4DQoNClAuUy46IEknbSBzb3Jy eSBmb3IgeW91ciBiZWxvdmVkIHN0cmluZyBjb3B5aW5nIGZ1bmN0aW9uKHMpOyBpdCBoYXMg aGlnaCBjaGFuY2VzIA0Kb2YgYmVpbmcgZHJlYWRlZCBieSB0aGUgcGFnZSBiZWxvdy4gIE5v dCBzb3JyeS4gIE9oIHdlbGwsIGF0IGxlYXN0IEkganVzdGlmaWVkIA0KaXQsIG9yIEkgdHJp ZWQgOi0pDQoNCi0tLQ0KDQpzdHJpbmdfY29weSg3KSAgICAgICAgIE1pc2NlbGxhbmVvdXMg SW5mb3JtYXRpb24gTWFudWFsICAgICAgICAgc3RyaW5nX2NvcHkoNykNCg0KTkFNRQ0KICAg ICAgICBzdHBjcHksICBzdHBlY3B5LCAgc3RwZWNweXgsIHN0cmxjcHksIHN0cmxjYXQsIHN0 cnNjcHksIHN0cmNweSwgc3RyY2F0LA0KICAgICAgICBzdHBuY3B5LCB1c3RyMnN0cCwgc3Ry bmNweSwgc3RybmNhdCwgbWVtcGNweSAtIGNvcHkgc3RyaW5ncw0KDQpTWU5PUFNJUw0KICAg IChOdWxs4oCQdGVybWluYXRlZCkgc3RyaW5ncw0KICAgICAgICAvLyBDaGFpbuKAkGNvcHkg YSBzdHJpbmcuDQogICAgICAgIGNoYXIgKnN0cGNweShjaGFyICpyZXN0cmljdCBkc3QsIGNv bnN0IGNoYXIgKnJlc3RyaWN0IHNyYyk7DQoNCiAgICAgICAgLy8gQ2hhaW7igJBjb3B5IGEg c3RyaW5nIHdpdGggdHJ1bmNhdGlvbiAobm90IGluIGxpYmMpLg0KICAgICAgICBjaGFyICpz dHBlY3B5KGNoYXIgKmRzdCwgY2hhciBwYXN0X2VuZFswXSwgY29uc3QgY2hhciAqcmVzdHJp Y3Qgc3JjKTsNCg0KICAgICAgICAvLyBDaGFpbuKAkGNvcHkgYSBzdHJpbmcgd2l0aCB0cnVu Y2F0aW9uIGFuZCBTSUdTRUdWIG9uIGludmFsaWQgaW5wdXQuDQogICAgICAgIGNoYXIgKnN0 cGVjcHl4KGNoYXIgKmRzdCwgY2hhciBwYXN0X2VuZFswXSwgY29uc3QgY2hhciAqcmVzdHJp Y3Qgc3JjKTsNCg0KICAgICAgICAvLyBDb3B5IGEgc3RyaW5nIHdpdGggdHJ1bmNhdGlvbiBh bmQgU0lHU0VHViBvbiBpbnZhbGlkIGlucHV0Lg0KICAgICAgICBbW2RlcHJlY2F0ZWRdXSAg Ly8gVXNlIHN0cGVjcHl4KCkgaW5zdGVhZC4NCiAgICAgICAgc2l6ZV90IHN0cmxjcHkoY2hh ciBkc3RbcmVzdHJpY3QgLnN6XSwgY29uc3QgY2hhciAqcmVzdHJpY3Qgc3JjLA0KICAgICAg ICAgICAgICAgICAgICAgICBzaXplX3Qgc3opOw0KDQogICAgICAgIC8vIENvbmNhdGVuYXRl IGEgc3RyaW5nIHdpdGggdHJ1bmNhdGlvbi4NCiAgICAgICAgW1tkZXByZWNhdGVkXV0gIC8v IFVzZSBzdHBlY3B5eCgpIGluc3RlYWQuDQogICAgICAgIHNpemVfdCBzdHJsY2F0KGNoYXIg ZHN0W3Jlc3RyaWN0IC5zel0sIGNvbnN0IGNoYXIgKnJlc3RyaWN0IHNyYywNCiAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZV90IHN6KTsNCg0KICAgICAgICAvLyBDb3B5IGEgc3RyaW5n IHdpdGggdHJ1bmNhdGlvbiAobm90IGluIGxpYmMpLg0KICAgICAgICBbW2RlcHJlY2F0ZWRd XSAgLy8gVXNlIHN0cGVjcHkoKSBpbnN0ZWFkLg0KICAgICAgICBzc2l6ZV90IHN0cnNjcHko Y2hhciBkc3RbcmVzdHJpY3QgLnN6XSwgY29uc3QgY2hhciBzcmNbcmVzdHJpY3QgLnN6XSwN CiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHN6KTsNCg0KICAgICAgICAvLyBDb3B5 IGEgc3RyaW5nLg0KICAgICAgICBbW2RlcHJlY2F0ZWRdXSAgLy8gVXNlIHN0cGNweSgzKSBp bnN0ZWFkLg0KICAgICAgICBjaGFyICpzdHJjcHkoY2hhciAqcmVzdHJpY3QgZHN0LCBjb25z dCBjaGFyICpyZXN0cmljdCBzcmMpOw0KDQogICAgICAgIC8vIENvbmNhdGVuYXRlIGEgc3Ry aW5nLg0KICAgICAgICBbW2RlcHJlY2F0ZWRdXSAgLy8gVXNlIHN0cGNweSgzKSBpbnN0ZWFk Lg0KICAgICAgICBjaGFyICpzdHJjYXQoY2hhciAqcmVzdHJpY3QgZHN0LCBjb25zdCBjaGFy ICpyZXN0cmljdCBzcmMpOw0KDQogICAgVW50ZXJtaW5hdGVkIHN0cmluZ3MgKG51bGzigJBw YWRkZWQgZml4ZWTigJB3aWR0aCBidWZmZXJzKQ0KICAgICAgICAvLyBaZXJvIGEgZml4ZWTi gJB3aWR0aCBidWZmZXIsIGFuZA0KICAgICAgICAvLyBjb3B5IGEgc3RyaW5nIHdpdGggdHJ1 bmNhdGlvbiBpbnRvIGFuIHVudGVybWluYXRlZCBzdHJpbmcuDQogICAgICAgIGNoYXIgKnN0 cG5jcHkoY2hhciBkc3RbcmVzdHJpY3QgLnN6XSwgY29uc3QgY2hhciAqcmVzdHJpY3Qgc3Jj LA0KICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc3opOw0KDQogICAgICAgIC8vIENo YWlu4oCQY29weSBhbiB1bnRlcm1pbmF0ZWQgc3RyaW5nIGludG8gYSBzdHJpbmcgKG5vdCBp biBsaWJjKS4NCiAgICAgICAgY2hhciAqdXN0cjJzdHAoY2hhciAqcmVzdHJpY3QgZHN0LCBj b25zdCBjaGFyIHNyY1tyZXN0cmljdCAuc3pdLA0KICAgICAgICAgICAgICAgICAgICAgICBz aXplX3Qgc3opOw0KDQogICAgICAgIC8vIFplcm8gYSBmaXhlZOKAkHdpZHRoIGJ1ZmZlciwg YW5kDQogICAgICAgIC8vIGNvcHkgYSBzdHJpbmcgd2l0aCB0cnVuY2F0aW9uIGludG8gYW4g dW50ZXJtaW5hdGVkIHN0cmluZw0KICAgICAgICBbW2RlcHJlY2F0ZWRdXSAgLy8gVXNlIHN0 cG5jcHkoMykgaW5zdGVhZC4NCiAgICAgICAgY2hhciAqc3RybmNweShjaGFyIGRlc3RbcmVz dHJpY3QgLnN6XSwgY29uc3QgY2hhciAqcmVzdHJpY3Qgc3JjLA0KICAgICAgICAgICAgICAg ICAgICAgICBzaXplX3Qgc3opOw0KDQogICAgICAgIC8vIENvbmNhdGVuYXRlIGFuIHVudGVy bWluYXRlZCBzdHJpbmcgaW50byBhIHN0cmluZy4NCiAgICAgICAgW1tkZXByZWNhdGVkXV0g IC8vIFVzZSB1c3RyMnN0cCgpIGluc3RlYWQuDQogICAgICAgIGNoYXIgKnN0cm5jYXQoY2hh ciAqcmVzdHJpY3QgZHN0LCBjb25zdCBjaGFyIHNyY1tyZXN0cmljdCAuc3pdLA0KICAgICAg ICAgICAgICAgICAgICAgICBzaXplX3Qgc3opOw0KDQogICAgU3RyaW5nIHN0cnVjdHVyZXMN CiAgICAgICAgLy8gKE51bGzigJB0ZXJtaW5hdGVkKSBzdHJpbmcgc3RydWN0dXJlLg0KICAg ICAgICBzdHJ1Y3Qgc3RyX3Mgew0KICAgICAgICAgICAgc2l6ZV90ICBsZW47DQogICAgICAg ICAgICBjaGFyICAgICpzdHI7DQogICAgICAgIH07DQoNCiAgICAgICAgLy8gVW50ZXJtaW5h dGVkIHN0cmluZyBzdHJ1Y3R1cmUgKG92ZXJsYXBwaW5nIHN0cmluZ3MpLg0KICAgICAgICBz dHJ1Y3QgdXN0cl9zIHsNCiAgICAgICAgICAgIHNpemVfdCAgbGVuOw0KICAgICAgICAgICAg Y2hhciAgICAqdXN0cjsNCiAgICAgICAgfTsNCg0KICAgICAgICAvLyBDaGFpbuKAkGNvcHkg YSBzdHJpbmcgc3RydWN0dXJlIGludG8gYW4gdW50ZXJtaW5hdGVkIHN0cmluZy4NCiAgICAg ICAgdm9pZCAqbWVtcGNweSh2b2lkICpyZXN0cmljdCBkc3QsIGNvbnN0IHZvaWQgc3JjW3Jl c3RyaWN0IGxlbl0sDQogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pOw0KDQpE RVNDUklQVElPTg0KICAgIFRlcm1zIChhbmQgYWJicmV2aWF0aW9ucykNCiAgICAgICAgc3Ry aW5nIChzdHIpDQogICAgICAgICAgICAgICBpcyBhIHNlcXVlbmNlIG9mIHplcm8gb3IgbW9y ZSBub27igJBudWxsIGNoYXJhY3RlcnMsIGZvbGxvd2VkIGJ5IGENCiAgICAgICAgICAgICAg IG51bGwgYnl0ZS4NCg0KICAgICAgICB1bnRlcm1pbmF0ZWQgc3RyaW5nICh1c3RyKQ0KICAg ICAgICAgICAgICAgaXMgYSBzZXF1ZW5jZSBvZiB6ZXJvIG9yIG1vcmUgIG5vbuKAkG51bGwg IGNoYXJhY3RlcnMuICAgVGhleSAgYXJlDQogICAgICAgICAgICAgICBzb21ldGltZXMgIGNv bnRhaW5lZCAgaW4gZml4ZWTigJB3aWR0aCBidWZmZXJzLCB3aGljaCB1c3VhbGx5IGNvbuKA kA0KICAgICAgICAgICAgICAgdGFpbiBwYWRkaW5nIG51bGwgYnl0ZXMgYWZ0ZXIgdGhlIHVu dGVybWluYXRlZCBzdHJpbmcsICB0byAgZmlsbA0KICAgICAgICAgICAgICAgdGhlICByZXN0 ICBvZiAgdGhlICBidWZmZXIgIHdpdGhvdXQgIGFmZmVjdGluZyAgdGhlIHVudGVybWluYXRl ZA0KICAgICAgICAgICAgICAgc3RyaW5nOyBob3dldmVyLCB0aG9zZSBwYWRkaW5nIG51bGwg Ynl0ZXMgYXJlIG5vdCAgcGFydCAgb2YgIHRoZQ0KICAgICAgICAgICAgICAgdW50ZXJtaW5h dGVkIHN0cmluZy4NCg0KICAgICAgICBsZW5ndGggKGxlbikNCiAgICAgICAgICAgICAgIGlz IHRoZSBudW1iZXIgb2Ygbm9u4oCQbnVsbCBjaGFyYWN0ZXJzIGluIGEgc3RyaW5nLiAgSXQg aXMgdGhlIHJl4oCQDQogICAgICAgICAgICAgICB0dXJuIHZhbHVlIG9mIHN0cmxlbihzdHIp IGFuZCBvZiBzdHJubGVuKHVzdHIsIHN6KS4NCg0KICAgICAgICBzaXplIChzeikNCiAgICAg ICAgICAgICAgIHJlZmVycyB0byB0aGUgZW50aXJlIGJ1ZmZlciB3aGVyZSB0aGUgc3RyaW5n IGlzIGNvbnRhaW5lZC4NCg0KICAgICAgICBlbmQgICAgaXMgIHRoZSAgbmFtZSAgb2YgIGEg IHBvaW50ZXIgIHRvIHRoZSB0ZXJtaW5hdGluZyBudWxsIGJ5dGUgb2YgYQ0KICAgICAgICAg ICAgICAgc3RyaW5nLCBvciBhIHBvaW50ZXIgdG8gb25lIHBhc3QgdGhlIGxhc3QgY2hhcmFj dGVyIG9mIGFuIHVudGVy4oCQDQogICAgICAgICAgICAgICBtaW5hdGVkIHN0cmluZy4gIFRo aXMgaXMgdGhlIHJldHVybiB2YWx1ZSBvZiBmdW5jdGlvbnMgdGhhdCAgYWzigJANCiAgICAg ICAgICAgICAgIGxvdyBjaGFpbmluZy4gIEl0IGlzIGVxdWl2YWxlbnQgdG8gJnN0cltsZW5d Lg0KDQogICAgICAgIHBhc3RfZW5kDQogICAgICAgICAgICAgICBpcyAgdGhlIG5hbWUgb2Yg YSBwb2ludGVyIHRvIG9uZSBwYXN0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciB0aGF0DQogICAg ICAgICAgICAgICBjb250YWlucyBhIHN0cmluZy4gIEl0IGlzIGVxdWl2YWxlbnQgdG8gJnN0 cltzel0uICBJdCBpcyB1c2VkIGFzDQogICAgICAgICAgICAgICBhIHNlbnRpbmVsIHZhbHVl LCB0byBiZSBhYmxlICB0byAgdHJ1bmNhdGUgIHN0cmluZ3MgIGluc3RlYWQgIG9mDQogICAg ICAgICAgICAgICBvdmVycnVubmluZyBhIGJ1ZmZlci4NCg0KICAgICAgICBzdHJpbmcgc3Ry dWN0dXJlDQogICAgICAgIHVudGVybWluYXRlZCBzdHJpbmcgc3RydWN0dXJlDQogICAgICAg ICAgICAgICBTdHJ1Y3R1cmUgIHRoYXQgIGNvbnRhaW5zIHRoZSBsZW5ndGggb2YgYSBzdHJp bmcsIGFzIHdlbGwgYXMgdGhlDQogICAgICAgICAgICAgICBzdHJpbmcgb3IgdGhlIHVudGVy bWluYXRlZCBzdHJpbmcuDQoNCiAgICBUeXBlcyBvZiBmdW5jdGlvbnMNCiAgICAgICAgQ29w eSwgY29uY2F0ZW5hdGUsIGFuZCBjaGFpbuKAkGNvcHkNCiAgICAgICAgICAgICAgIE9yaWdp bmFsbHksIHRoZXJlIHdhcyBhIGRpc3RpbmN0aW9uIGJldHdlZW4gZnVuY3Rpb25zIHRoYXQg IGNvcHkNCiAgICAgICAgICAgICAgIGFuZCAgdGhvc2UgdGhhdCBjb25jYXRlbmF0ZS4gIEhv d2V2ZXIsIG5ld2VyIGZ1bmN0aW9ucyB0aGF0IGNvcHkNCiAgICAgICAgICAgICAgIHdoaWxl IGFsbG93aW5nIGNoYWluaW5nIGNvdmVyIGJvdGggdXNlIGNhc2VzIHdpdGggYSBzaW5nbGUg IEFQSS4NCiAgICAgICAgICAgICAgIFRoZXkgIGFyZSAgYWxzbyBhbGdvcml0aG1pY2FsbHkg ZmFzdGVyLCBzaW5jZSB0aGV5IGRvbuKAmXQgbmVlZCB0bw0KICAgICAgICAgICAgICAgc2Vh cmNoIGZvciB0aGUgZW5kIG9mIHRoZSBleGlzdGluZyBzdHJpbmcuDQoNCiAgICAgICAgICAg ICAgIFRvIGNoYWluIGNvcHkgZnVuY3Rpb25zLCB0aGV5IG5lZWQgdG8gcmV0dXJuIGEgIHBv aW50ZXIgIHRvICB0aGUNCiAgICAgICAgICAgICAgIGVuZC4gICBUaGF04oCZcyAgYSAgYnlw cm9kdWN0ICBvZiB0aGUgY29weSBvcGVyYXRpb24sIHNvIGl0IGhhcyBubw0KICAgICAgICAg ICAgICAgcGVyZm9ybWFuY2UgY29zdHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIHByZWZlcnJl ZCBvdmVyICBjb3B5ICBvcg0KICAgICAgICAgICAgICAgY29uY2F0ZW5hdGlvbiAgZnVuY3Rp b25zLiAgRnVuY3Rpb25zIHRoYXQgcmV0dXJuIHN1Y2ggYSBwb2ludGVyLA0KICAgICAgICAg ICAgICAgYW5kIHRodXMgY2FuIGJlIGNoYWluZWQsIGhhdmUgbmFtZXMgb2YgdGhlIGZvcm0g ICpzdHAqKCksICBzaW5jZQ0KICAgICAgICAgICAgICAgaXTigJlzIGFsc28gY29tbW9uIHRv IG5hbWUgdGhlIHBvaW50ZXIganVzdCBwLg0KDQogICAgICAgIFRydW5jYXRlIG9yIG5vdD8N CiAgICAgICAgICAgICAgIFRoZSAgZmlyc3QgIHRoaW5nICB0byBub3RlIGlzIHRoYXQgcHJv Z3JhbW1lcnMgc2hvdWxkIGJlIGNhcmVmdWwNCiAgICAgICAgICAgICAgIHdpdGggYnVmZmVy cywgc28gdGhleSBhbHdheXMgaGF2ZSB0aGUgY29ycmVjdCBzaXplLCBhbmQgIHRydW5jYeKA kA0KICAgICAgICAgICAgICAgdGlvbiBpcyBub3QgbmVjZXNzYXJ5Lg0KDQogICAgICAgICAg ICAgICBJbiAgbW9zdCAgY2FzZXMsIHRydW5jYXRpb24gaXMgbm90IGRlc2lyZWQsIGFuZCBp dCBpcyBzaW1wbGVyIHRvDQogICAgICAgICAgICAgICBqdXN0IGRvIHRoZSBjb3B5LiAgU2lt cGxlciAgY29kZSAgaXMgIHNhZmVyICBjb2RlLiAgIFByb2dyYW1taW5nDQogICAgICAgICAg ICAgICBhZ2FpbnN0ICBwcm9ncmFtbWluZyBtaXN0YWtlcyBieSBhZGRpbmcgbW9yZSBjb2Rl IGp1c3QgYWRkcyBtb3JlDQogICAgICAgICAgICAgICBwb2ludHMgd2hlcmUgbWlzdGFrZXMg Y2FuIGJlIG1hZGUuDQoNCiAgICAgICAgICAgICAgIE5vd2FkYXlzLCBjb21waWxlcnMgY2Fu IGRldGVjdCBtb3N0IHByb2dyYW1tZXIgZXJyb3JzIHdpdGggIGZlYeKAkA0KICAgICAgICAg ICAgICAgdHVyZXMgICAgbGlrZSAgIGNvbXBpbGVyICAgd2FybmluZ3MsICAgc3RhdGljICAg YW5hbHl6ZXJzLCAgIGFuZA0KICAgICAgICAgICAgICAgX0ZPUlRJRllfU09VUkNFIChzZWUg ZnRtKDcpKS4gIEtlZXBpbmcgIHRoZSAgY29kZSAgc2ltcGxlICBoZWxwcw0KICAgICAgICAg ICAgICAgdGhlc2UgZXJyb3LigJBkZXRlY3Rpb24gZmVhdHVyZXMgYmUgbW9yZSBwcmVjaXNl Lg0KDQogICAgICAgICAgICAgICBXaGVuIHZhbGlkYXRpbmcgdXNlciBpbnB1dCwgaG93ZXZl ciwgaXQgbWFrZXMgc2Vuc2UgdG8gdHJ1bmNhdGUuDQogICAgICAgICAgICAgICBSZW1lbWJl ciB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIHN1Y2ggZnVuY3Rpb24gY2FsbHMuDQoN CiAgICAgICAgICAgICAgIEZ1bmN0aW9ucyB0aGF0IHRydW5jYXRlOg0KDQogICAgICAgICAg ICAgICDigKIgIHN0cGVjcHkoKSAgaXMgIHRoZSAgbW9zdCAgZWZmaWNpZW50IHN0cmluZyBj b3B5IGZ1bmN0aW9uIHRoYXQNCiAgICAgICAgICAgICAgICAgIHBlcmZvcm1zIHRydW5jYXRp b24uICBJdCBvbmx5IHJlcXVpcmVzIHRvIGNoZWNrICBmb3IgIHRydW5jYeKAkA0KICAgICAg ICAgICAgICAgICAgdGlvbiBvbmNlIGFmdGVyIGFsbCBjaGFpbmVkIGNhbGxzLg0KDQogICAg ICAgICAgICAgICDigKIgIHN0cGVjcHl4KCkgaXMgYSB2YXJpYW50IG9mIHN0cGVjcHkoKSB0 aGF0IGNvbnN1bWVzIHRoZSBlbnRpcmUNCiAgICAgICAgICAgICAgICAgIHNvdXJjZSBzdHJp bmcsIHRvIGNhdGNoIGJ1Z3MgaW4gdGhlIHByb2dyYW0gYnkgZm9yY2luZyBhIHNlZ+KAkA0K ICAgICAgICAgICAgICAgICAgbWVudGF0aW9uIGZhdWx0IChhcyBzdHJsY3B5KDNic2QpIGFu ZCBzdHJsY2F0KDNic2QpIGRvKS4NCg0KICAgICAgICAgICAgICAg4oCiICBzdHJsY3B5KDNi c2QpIGFuZCBzdHJsY2F0KDNic2QpLCB3aGljaCBvcmlnaW5hdGVkIGluIE9wZW5CU0QsDQog ICAgICAgICAgICAgICAgICBhcmUgZGVzaWduZWQgdG8gY3Jhc2ggaWYgdGhlIGlucHV0IHN0 cmluZyBpcyBpbnZhbGlkIChkb2VzbuKAmXQNCiAgICAgICAgICAgICAgICAgIGNvbnRhaW4g YSBudWxsIGJ5dGUpLg0KDQogICAgICAgICAgICAgICDigKIgIHN0cnNjcHkoOSkgaXMgYSBm dW5jdGlvbiBpbiB0aGUgTGludXgga2VybmVsIHdoaWNoIHJlcG9ydHMgYW4NCiAgICAgICAg ICAgICAgICAgIGVycm9yIGluc3RlYWQgb2YgY3Jhc2hpbmcuDQoNCiAgICAgICAgICAgICAg IOKAoiAgc3RwbmNweSgzKSBhbmQgc3RybmNweSgzKSBhbHNvIHRydW5jYXRlLCBidXQgdGhl eSBkb27igJl0IHdyaXRlDQogICAgICAgICAgICAgICAgICBzdHJpbmdzLCBidXQgcmF0aGVy IHVudGVybWluYXRlZCBzdHJpbmdzLg0KDQogICAgVW50ZXJtaW5hdGVkIHN0cmluZ3MgKG51 bGzigJBwYWRkZWQgZml4ZWTigJB3aWR0aCBidWZmZXJzKQ0KICAgICAgICBGb3IgIGhpc3Rv cmljIHJlYXNvbnMsIHNvbWUgc3RhbmRhcmQgQVBJcywgc3VjaCBhcyB1dG1weCg1KSwgdXNl IHVudGVy4oCQDQogICAgICAgIG1pbmF0ZWQgc3RyaW5ncyBpbiBmaXhlZOKAkHdpZHRoIGJ1 ZmZlcnMuICBUbyBpbnRlcmZhY2Ugd2l0aCAgdGhlbSwgIHNwZeKAkA0KICAgICAgICBjaWFs aXplZCBmdW5jdGlvbnMgbmVlZCB0byBiZSB1c2VkLg0KDQogICAgICAgIFRvIGNvcHkgc3Ry aW5ncyBpbnRvIHRoZW0sIHVzZSBzdHBuY3B5KDMpLg0KDQogICAgICAgIFRvICBjb3B5IGZy b20gYW4gdW50ZXJtaW5hdGVkIHN0cmluZyB3aXRoaW4gYSBmaXhlZOKAkHdpZHRoIGJ1ZmZl ciBpbnRvIGENCiAgICAgICAgc3RyaW5nLCBpZ25vcmluZyBhbnkgdHJhaWxpbmcgbnVsbCAg Ynl0ZXMgIGluICB0aGUgIHNvdXJjZSAgZml4ZWTigJB3aWR0aA0KICAgICAgICBidWZmZXIs IHlvdSBzaG91bGQgdXNlIHVzdHIyc3RwKCkuDQoNCiAgICBTdHJpbmcgc3RydWN0dXJlcw0K ICAgICAgICBUaGUgc2ltcGxlc3Qgc3RyaW5nIGNvcHlpbmcgZnVuY3Rpb24gaXMgbWVtcGNw eSgzKS4gIEl0IHJlcXVpcmVzIGFsd2F5cw0KICAgICAgICBrbm93aW5nICB0aGUgbGVuZ3Ro IG9mIHlvdXIgc3RyaW5ncywgZm9yIHdoaWNoIHN0cmluZyBzdHJ1Y3R1cmVzIGNhbiBiZQ0K ICAgICAgICB1c2VkLiAgSXQgbWFrZXMgdGhlIGNvZGUgc2ltcGxlciwgc2luY2UgeW91IGFs d2F5cyBrbm93IHRoZSAgbGVuZ3RoICBvZg0KICAgICAgICB5b3VyIHN0cmluZ3MsIGFuZCBp dOKAmXMgYWxzbyBmYXN0ZXIsIHNpbmNlIGl0IGRvZXNu4oCZdCBuZWVkIHRvIHJlcGVhdGVk bHkNCiAgICAgICAgY2FsY3VsYXRlICB0aG9zZSAgbGVuZ3Rocy4gICBtZW1wY3B5KDMpICBh bHdheXMgY3JlYXRlcyBhbiB1bnRlcm1pbmF0ZWQNCiAgICAgICAgc3RyaW5nLCBzbyB5b3Ug bmVlZCB0byBleHBsaWNpdGx5IHNldCB0aGUgdGVybWluYXRpbmcgbnVsbCBieXRlLg0KDQog ICAgICAgIFN0cmluZyBzdHJ1Y3R1cmUNCiAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcg Y29kZSBjYW4gYmUgIHVzZWQgIHRvICBjaGFpbuKAkGNvcHkgIGZyb20gIGEgIHN0cmluZw0K ICAgICAgICAgICAgICAgc3RydWN0dXJlIGludG8gYSBzdHJpbmc6DQoNCiAgICAgICAgICAg ICAgICAgICBwID0gbWVtcGNweShwLCBzcmMtPnN0ciwgc3JjLT5sZW4pOw0KICAgICAgICAg ICAgICAgICAgICpwID0gJ1wwJzsNCg0KICAgICAgICAgICAgICAgVGhlICBmb2xsb3dpbmcg IGNvZGUgIGNhbiAgYmUgIHVzZWQgIHRvIGNoYWlu4oCQY29weSBmcm9tIGEgc3RyaW5nDQog ICAgICAgICAgICAgICBzdHJ1Y3R1cmUgaW50byBhbiB1bnRlcm1pbmF0ZWQgc3RyaW5nOg0K DQogICAgICAgICAgICAgICAgICAgcCA9IG1lbXBjcHkocCwgc3JjLT5zdHIsIHNyYy0+bGVu KTsNCg0KICAgICAgICBVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0cnVjdHVyZSAob3ZlcmxhcHBp bmcgc3RyaW5ncykNCiAgICAgICAgICAgICAgIEluIHByb2dyYW1zIHRoYXQgbWFrZSBjb25z aWRlcmFibGUgdXNlIG9mIHN0cmluZ3MsIGFuZCBuZWVkICB0aGUNCiAgICAgICAgICAgICAg IGJlc3QgIHBlcmZvcm1hbmNlLCB1c2luZyBvdmVybGFwcGluZyBzdHJpbmdzIGNhbiBtYWtl IGEgYmlnIGRpZuKAkA0KICAgICAgICAgICAgICAgZmVyZW5jZS4gIEl0IGFsbG93cyBob2xk aW5nIHN1YnN0cmluZ3Mgb2YgYSBiaWdnZXIgc3RyaW5nICB3aGlsZQ0KICAgICAgICAgICAg ICAgbm90IGR1cGxpY2F0aW5nIG1lbW9yeSBub3IgdXNpbmcgdGltZSB0byBkbyBhIGNvcHku DQoNCiAgICAgICAgICAgICAgIEhvd2V2ZXIsICB0aGlzIGlzIGRlbGljYXRlLCBzaW5jZSBp dCByZXF1aXJlcyB1c2luZyB1bnRlcm1pbmF0ZWQNCiAgICAgICAgICAgICAgIHN0cmluZ3Mu ICBDIGxpYnJhcnkgQVBJcyB1c2Ugc3RyaW5ncywgc28gcHJvZ3JhbXMgdGhhdCAgdXNlICB1 buKAkA0KICAgICAgICAgICAgICAgdGVybWluYXRlZCAgc3RyaW5ncyAgd2lsbCAgaGF2ZSAg dG8gIHRha2UgIGNhcmUgdG8gZGlmZmVyZW50aWF0ZQ0KICAgICAgICAgICAgICAgc3RyaW5n cyBmcm9tIHVudGVybWluYXRlZCBzdHJpbmdzLg0KDQogICAgICAgICAgICAgICBUaGUgZm9s bG93aW5nIGNvZGUgY2FuIGJlIHVzZWQgdG8gY2hhaW7igJBjb3B5ICBmcm9tICBhbiAgdW50 ZXJtaeKAkA0KICAgICAgICAgICAgICAgbmF0ZWQgc3RyaW5nIHN0cnVjdHVyZSB0byBhIHN0 cmluZzoNCg0KICAgICAgICAgICAgICAgICAgIHAgPSBtZW1wY3B5KHAsIHNyYy0+dXN0ciwg c3JjLT5sZW4pOw0KICAgICAgICAgICAgICAgICAgICpwID0gJ1wwJzsNCg0KICAgICAgICAg ICAgICAgVGhlICBmb2xsb3dpbmcgIGNvZGUgIGNhbiBiZSB1c2VkIHRvIGNoYWlu4oCQY29w eSBmcm9tIGFuIHVudGVybWnigJANCiAgICAgICAgICAgICAgIG5hdGVkIHN0cmluZyBzdHJ1 Y3R1cmUgdG8gYW4gdW50ZXJtaW5hdGVkIHN0cmluZzoNCg0KICAgICAgICAgICAgICAgICAg IHAgPSBtZW1wY3B5KHAsIHNyYy0+dXN0ciwgc3JjLT5sZW4pOw0KDQogICAgRnVuY3Rpb25z DQogICAgICAgIHN0cGNweSgzKQ0KICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBjb3Bp ZXMgdGhlIGlucHV0IHN0cmluZyBpbnRvIGEgZGVzdGluYXRpb24gc3RyaW5nLg0KICAgICAg ICAgICAgICAgVGhlIHByb2dyYW1tZXIgaXMgcmVzcG9uc2libGUgIGZvciAgYWxsb2NhdGlu ZyAgYSAgYnVmZmVyICBsYXJnZQ0KICAgICAgICAgICAgICAgZW5vdWdoLiAgSXQgcmV0dXJu cyBhIHBvaW50ZXIgc3VpdGFibGUgZm9yIGNoYWluaW5nLg0KDQogICAgICAgIHN0cGVjcHko KQ0KICAgICAgICBzdHBlY3B5eCgpDQogICAgICAgICAgICAgICBUaGVzZSBmdW5jdGlvbnMg Y29weSB0aGUgaW5wdXQgc3RyaW5nIGludG8gYSBkZXN0aW5hdGlvbiBzdHJpbmcuDQogICAg ICAgICAgICAgICBJZiAgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwgbGltaXRlZCBieSBhIHBv aW50ZXIgdG8gb25lIHBhc3QgdGhlDQogICAgICAgICAgICAgICBlbmQgb2YgaXQsIGlzbuKA mXQgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlICBjb3B5LCAgdGhlICByZXN1bHRpbmcNCiAg ICAgICAgICAgICAgIHN0cmluZyAgaXMgIHRydW5jYXRlZCAgKGJ1dCAgaXQgIGlzIGd1YXJh bnRlZWQgdG8gYmUgbnVsbOKAkHRlcm1p4oCQDQogICAgICAgICAgICAgICBuYXRlZCkuICBU aGV5IHJldHVybiBhIHBvaW50ZXIgc3VpdGFibGUgZm9yICBjaGFpbmluZy4gICBUcnVuY2Hi gJANCiAgICAgICAgICAgICAgIHRpb24gbmVlZHMgdG8gYmUgZGV0ZWN0ZWQgb25seSBvbmNl IGFmdGVyIHRoZSBsYXN0IGNoYWluZWQgY2FsbC4NCiAgICAgICAgICAgICAgIHN0cGVjcHl4 KCkgIGhhcyBpZGVudGljYWwgc2VtYW50aWNzIHRvIHN0cGVjcHkoKSwgZXhjZXB0IHRoYXQg aXQNCiAgICAgICAgICAgICAgIGZvcmNlcyBhIFNJR1NFR1Ygb24gVW5kZWZpbmVkIEJlaGF2 aW9yLg0KDQogICAgICAgICAgICAgICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwcm92aWRl ZCBieSBhbnkgbGlicmFyeSwgYnV0IHlvdSBjYW4gZGXigJANCiAgICAgICAgICAgICAgIGZp bmUgdGhlbSB3aXRoIHRoZSBmb2xsb3dpbmcgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uczoN Cg0KICAgICAgICAgICAgICAgICAgIC8qIFRoaXMgY29kZSBpcyBpbiB0aGUgcHVibGljIGRv bWFpbi4gKi8NCiAgICAgICAgICAgICAgICAgICBjaGFyICoNCiAgICAgICAgICAgICAgICAg ICBzdHBlY3B5KGNoYXIgKmRzdCwgY2hhciBwYXN0X2VuZFswXSwNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlc3RyaWN0IHNyYykNCiAgICAgICAgICAgICAg ICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnA7DQoNCiAgICAgICAgICAg ICAgICAgICAgICAgaWYgKGRzdCA9PSBwYXN0X2VuZCkNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBwYXN0X2VuZDsNCg0KICAgICAgICAgICAgICAgICAgICAgICBwID0g bWVtY2NweShkc3QsIHNyYywgJ1wwJywgcGFzdF9lbmQgLSBkc3QpOw0KICAgICAgICAgICAg ICAgICAgICAgICBpZiAocCAhPSBOVUxMKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIHAgLSAxOw0KDQogICAgICAgICAgICAgICAgICAgICAgIC8qIHRydW5jYXRpb24g ZGV0ZWN0ZWQgKi8NCiAgICAgICAgICAgICAgICAgICAgICAgcGFzdF9lbmRbLTFdID0gJ1ww JzsNCiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhc3RfZW5kOw0KICAgICAgICAg ICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgIC8qIFRoaXMgY29kZSBpcyBpbiB0 aGUgcHVibGljIGRvbWFpbi4gKi8NCiAgICAgICAgICAgICAgICAgICBjaGFyICoNCiAgICAg ICAgICAgICAgICAgICBzdHBlY3B5eChjaGFyICpkc3QsIGNoYXIgcGFzdF9lbmRbMF0sDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVzdHJpY3Qgc3JjKQ0K ICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY1tz dHJsZW4oc3JjKV0gIT0gJ1wwJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNl KFNJR1NFR1YpOw0KDQogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHBlY3B5KGRz dCwgcGFzdF9lbmQsIHNyYyk7DQogICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgIHN0 cG5jcHkoMykNCiAgICAgICAgICAgICAgIFRoaXMgZnVuY3Rpb24gY29waWVzIHRoZSBpbnB1 dCBzdHJpbmcgaW50byBhICBkZXN0aW5hdGlvbiAgbnVsbOKAkA0KICAgICAgICAgICAgICAg cGFkZGVkICBmaXhlZOKAkHdpZHRoICB1bnRlcm1pbmF0ZWQgIHN0cmluZy4gICBJZiAgdGhl IGRlc3RpbmF0aW9uDQogICAgICAgICAgICAgICBidWZmZXIsIGxpbWl0ZWQgYnkgaXRzIHNp emUsIGlzbuKAmXQgIGxhcmdlICBlbm91Z2ggIHRvICBob2xkICB0aGUNCiAgICAgICAgICAg ICAgIGNvcHksICB0aGUgIHJlc3VsdGluZyAgc3RyaW5nIGlzIHRydW5jYXRlZC4gIFNpbmNl IGl0IGNyZWF0ZXMgYW4NCiAgICAgICAgICAgICAgIHVudGVybWluYXRlZCBzdHJpbmcsIGl0 IGRvZXNu4oCZdCBuZWVkIHRvIHdyaXRlIGEgdGVybWluYXRpbmcgbnVsbA0KICAgICAgICAg ICAgICAgYnl0ZS4gIEl0IHJldHVybnMgYSBwb2ludGVyIHN1aXRhYmxlIGZvciBjaGFpbmlu ZywgYnV0IGl04oCZcyAgbm90DQogICAgICAgICAgICAgICBpZGVhbCBmb3IgdGhhdC4gIFRy dW5jYXRpb24gbmVlZHMgdG8gYmUgZGV0ZWN0ZWQgb25seSBvbmNlIGFmdGVyDQogICAgICAg ICAgICAgICB0aGUgbGFzdCBjaGFpbmVkIGNhbGwuDQoNCiAgICAgICAgICAgICAgIElmICB5 b3XigJlyZSBnb2luZyB0byB1c2UgdGhpcyBmdW5jdGlvbiBpbiBjaGFpbmVkIGNhbGxzLCBp dCB3b3VsZA0KICAgICAgICAgICAgICAgcHJvYmFibHkgYmUgdXNlZnVsIHRvIGRldmVsb3Ag YSBmdW5jdGlvbiBzaW1pbGFyIHRvIHN0cGVjcHkoKS4NCg0KICAgICAgICB1c3RyMnN0cCgp DQogICAgICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGNvcGllcyB0aGUgaW5wdXQgdW50ZXJt aW5hdGVkIHN0cmluZyBjb250YWluZWQgIGluDQogICAgICAgICAgICAgICBhICBudWxs4oCQ cGFkZGVkIHdpeGVk4oCQd2lkdGggYnVmZmVyLCBpbnRvIGEgZGVzdGluYXRpb24gKG51bGzi gJB0ZXLigJANCiAgICAgICAgICAgICAgIG1pbmF0ZWQpIHN0cmluZy4gIFRoZSBwcm9ncmFt bWVyIGlzIHJlc3BvbnNpYmxlIGZvciBhbGxvY2F0aW5nIGENCiAgICAgICAgICAgICAgIGJ1 ZmZlciBsYXJnZSBlbm91Z2guICBJdCByZXR1cm5zIGEgcG9pbnRlciBzdWl0YWJsZSAgZm9y ICBjaGFpbuKAkA0KICAgICAgICAgICAgICAgaW5nLg0KDQogICAgICAgICAgICAgICBUaGlz ICBmdW5jdGlvbiBpcyBub3QgcHJvdmlkZWQgYnkgYW55IGxpYnJhcnksIGJ1dCB5b3UgY2Fu IHdyaXRlDQogICAgICAgICAgICAgICBpdCB3aXRoIHRoZSBkZWZpbml0aW9uIGFib3ZlIGlu IHRoaXMgcGFnZS4NCg0KICAgICAgICAgICAgICAgQSB0cnVuY2F0aW5nIHZlcnNpb24gb2Yg dGhpcyBmdW5jdGlvbiBkb2VzbuKAmXQgZXhpc3QsICBzaW5jZSAgdGhlDQogICAgICAgICAg ICAgICBzaXplICBvZiAgdGhlIG9yaWdpbmFsIHN0cmluZyBpcyBhbHdheXMga25vd24sIHNv IGl0IHdvdWxkbuKAmXQgYmUNCiAgICAgICAgICAgICAgIHZlcnkgdXNlZnVsLg0KDQogICAg ICAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBwcm92aWRlZCBieSBhbnkgbGlicmFy eSwgYnV0IHlvdSBjYW4gZGVmaW5lDQogICAgICAgICAgICAgICBpdCB3aXRoIHRoZSBmb2xs b3dpbmcgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uOg0KDQogICAgICAgICAgICAgICAgICAg LyogVGhpcyBjb2RlIGlzIGluIHRoZSBwdWJsaWMgZG9tYWluLiAqLw0KICAgICAgICAgICAg ICAgICAgIGNoYXIgKg0KICAgICAgICAgICAgICAgICAgIHVzdHIyc3RwKGNoYXIgKnJlc3Ry aWN0IGRzdCwgY29uc3QgY2hhciAqcmVzdHJpY3Qgc3JjLA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNpemVfdCBzeikNCiAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg ICAgICAgICAgICAgIGNoYXIgICplbmQ7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgZW5k ID0gbWVtY2NweShkc3QsIHNyYywgJ1wwJywgc3opKSA/OiBkc3QgKyBzejsNCiAgICAgICAg ICAgICAgICAgICAgICAgKmVuZCA9ICdcMCc7DQoNCiAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGVuZDsNCiAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgbWVtcGNweSgz KQ0KICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBjb3BpZXMgdGhlIGlucHV0IHN0cmlu ZywgbGltaXRlZCAgYnkgIGl0cyAgbGVuZ3RoLA0KICAgICAgICAgICAgICAgaW50byAgYSAg ZGVzdGluYXRpb24gdW50ZXJtaW5hdGVkIHN0cmluZy4gIFRoZSBwcm9ncmFtbWVyIGlzIHJl 4oCQDQogICAgICAgICAgICAgICBzcG9uc2libGUgZm9yIGFsbG9jYXRpbmcgYSBidWZmZXIg bGFyZ2UgZW5vdWdoLiAgIEl0ICByZXR1cm5zICBhDQogICAgICAgICAgICAgICBwb2ludGVy IHN1aXRhYmxlIGZvciBjaGFpbmluZy4NCg0KICAgIERlcHJlY2F0ZWQgZnVuY3Rpb25zDQog ICAgICAgIHN0cmxjcHkoM2JzZCkNCiAgICAgICAgc3RybGNhdCgzYnNkKQ0KICAgICAgICAg ICAgICAgRGVwcmVjYXRlZC4gIFRoZXNlIGZ1bmN0aW9ucyBjb3B5IHRoZSBpbnB1dCBzdHJp bmcgaW50byBhIGRlc3Rp4oCQDQogICAgICAgICAgICAgICBuYXRpb24gIHN0cmluZy4gIElm IHRoZSBkZXN0aW5hdGlvbiBidWZmZXIsIGxpbWl0ZWQgYnkgaXRzIHNpemUsDQogICAgICAg ICAgICAgICBpc27igJl0IGxhcmdlIGVub3VnaCB0byBob2xkIHRoZSBjb3B5LCAgdGhlICBy ZXN1bHRpbmcgIHN0cmluZyAgaXMNCiAgICAgICAgICAgICAgIHRydW5jYXRlZCAgKGJ1dCAg aXQgIGlzIGd1YXJhbnRlZWQgdG8gYmUgbnVsbOKAkHRlcm1pbmF0ZWQpLiAgVGhleQ0KICAg ICAgICAgICAgICAgcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHRvdGFsICBzdHJpbmcgIHRo ZXkgIHRyaWVkICB0byAgY3JlYXRlLg0KICAgICAgICAgICAgICAgVGhlc2UgZnVuY3Rpb25z IGZvcmNlIGEgU0lHU0VHViBvbiBVbmRlZmluZWQgQmVoYXZpb3IuDQoNCiAgICAgICAgICAg ICAgIHN0cGVjcHl4KCkgIGlzICBhIGJldHRlciByZXBsYWNlbWVudCBmb3IgdGhlc2UgZnVu Y3Rpb25zIGZvciB0aGUNCiAgICAgICAgICAgICAgIGZvbGxvd2luZyByZWFzb25zOg0KDQog ICAgICAgICAgICAgICDigKIgIEJldHRlciBwZXJmb3JtYW5jZSAoY2hhaW4gY29weSBpbnN0 ZWFkIG9mIGNvbmNhdGVuYXRpbmcpLg0KDQogICAgICAgICAgICAgICDigKIgIE9ubHkgcmVx dWlyZXMgZGV0ZWN0aW5nIHRydW5jYXRpb24gb25jZSBwZXIgY2hhaW4gb2YgY2FsbHMuDQoN CiAgICAgICAgc3Ryc2NweSg5KQ0KICAgICAgICAgICAgICAgRGVwcmVjYXRlZC4gIFRoaXMg ZnVuY3Rpb24gY29waWVzIHRoZSBpbnB1dCBzdHJpbmcgaW50byBhIGRlc3Rp4oCQDQogICAg ICAgICAgICAgICBuYXRpb24gc3RyaW5nLiAgSWYgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwg bGltaXRlZCBieSBpdHMgIHNpemUsDQogICAgICAgICAgICAgICBpc27igJl0ICBsYXJnZSAg ZW5vdWdoICB0byAgaG9sZCB0aGUgY29weSwgdGhlIHJlc3VsdGluZyBzdHJpbmcgaXMNCiAg ICAgICAgICAgICAgIHRydW5jYXRlZCAoYnV0IGl0IGlzIGd1YXJhbnRlZWQgdG8gYmUgbnVs bOKAkHRlcm1pbmF0ZWQpLiAgSXQgIHJl4oCQDQogICAgICAgICAgICAgICB0dXJucyB0aGUg bGVuZ3RoIG9mIHRoZSBkZXN0aW5hdGlvbiBzdHJpbmcsIG9yIC1FMkJJRyBvbiB0cnVuY2Hi gJANCiAgICAgICAgICAgICAgIHRpb24uDQoNCiAgICAgICAgICAgICAgIHN0cGVjcHkoKSAg aXMgIGEgIGJldHRlciByZXBsYWNlbWVudCBmb3IgdGhpcyBmdW5jdGlvbiwgc2luY2UgaXQN CiAgICAgICAgICAgICAgIGhhcyBhIG11Y2ggc2ltcGxlciBpbnRlcmZhY2UuDQoNCiAgICAg ICAgc3RyY3B5KDMpDQogICAgICAgIHN0cmNhdCgzKQ0KICAgICAgICAgICAgICAgRGVwcmVj YXRlZC4gIFRoZXNlIGZ1bmN0aW9ucyBjb3B5IHRoZSBpbnB1dCBzdHJpbmcgaW50byBhIGRl c3Rp4oCQDQogICAgICAgICAgICAgICBuYXRpb24gc3RyaW5nLiAgVGhlIHByb2dyYW1tZXIg aXMgcmVzcG9uc2libGUgZm9yICBhbGxvY2F0aW5nICBhDQogICAgICAgICAgICAgICBidWZm ZXIgbGFyZ2UgZW5vdWdoLiAgVGhlIHJldHVybiB2YWx1ZSBpcyB1c2VsZXNzLg0KDQogICAg ICAgICAgICAgICBzdHJjcHkoMykgIGlzICBpZGVudGljYWwgdG8gc3RwY3B5KDMpIGV4Y2Vw dCBmb3IgdGhlIHVzZWxlc3MgcmXigJANCiAgICAgICAgICAgICAgIHR1cm4gdmFsdWUuDQoN CiAgICAgICAgICAgICAgIHN0cGNweSgzKSBpcyBhIGJldHRlciByZXBsYWNlbWVudCBmb3Ig dGhlc2UgIGZ1bmN0aW9ucyAgZm9yICB0aGUNCiAgICAgICAgICAgICAgIGZvbGxvd2luZyBy ZWFzb25zOg0KDQogICAgICAgICAgICAgICDigKIgIEJldHRlciBwZXJmb3JtYW5jZSAoY2hh aW4gY29weSBpbnN0ZWFkIG9mIGNvbmNhdGVuYXRpbmcpLg0KDQogICAgICAgICAgICAgICDi gKIgIE5vIG5lZWQgdG8gY2FsbCBzdHJsZW4oMyksIHRoYW5rcyB0byB0aGUgdXNlZnVsIHJl dHVybiB2YWx1ZS4NCg0KICAgICAgICBzdHJuY3B5KDMpDQogICAgICAgICAgICAgICBEZXBy ZWNhdGVkLiAgIHN0cm5jcHkoMykgIGlzICBpZGVudGljYWwgdG8gc3RwbmNweSgzKSBleGNl cHQgZm9yDQogICAgICAgICAgICAgICB0aGUgdXNlbGVzcyByZXR1cm4gdmFsdWUuICBEdWUg dG8gdGhlIHJldHVybiAgdmFsdWUsICB3aXRoICB0aGlzDQogICAgICAgICAgICAgICBmdW5j dGlvbiAgaXTigJlzIGhhcmQgdG8gY29ycmVjdGx5IGNoZWNrIGZvciB0cnVuY2F0aW9uLiAg VXNlIHN0cOKAkA0KICAgICAgICAgICAgICAgbmNweSgzKSBpbnN0ZWFkLg0KDQogICAgICAg IHN0cm5jYXQoMykNCiAgICAgICAgICAgICAgIERlcHJlY2F0ZWQuICBEbyBub3QgY29uZnVz ZSB0aGlzIGZ1bmN0aW9uIHdpdGggc3RybmNweSgzKTsgIHRoZXkNCiAgICAgICAgICAgICAg IGFyZSBub3QgcmVsYXRlZCBhdCBhbGwuDQoNCiAgICAgICAgICAgICAgIFRoaXMgIGZ1bmN0 aW9uICBjb25jYXRlbmF0ZXMgIHRoZSBpbnB1dCB1bnRlcm1pbmF0ZWQgc3RyaW5nIGNvbuKA kA0KICAgICAgICAgICAgICAgdGFpbmVkIGluIGEgbnVsbOKAkHBhZGRlZCB3aXhlZOKAkHdp ZHRoIGJ1ZmZlciwgaW50byAgYSAgZGVzdGluYXRpb24NCiAgICAgICAgICAgICAgIChudWxs 4oCQdGVybWluYXRlZCkgc3RyaW5nLiAgVGhlIHByb2dyYW1tZXIgaXMgcmVzcG9uc2libGUg Zm9yIGFs4oCQDQogICAgICAgICAgICAgICBsb2NhdGluZyBhIGJ1ZmZlciBsYXJnZSBlbm91 Z2guICBUaGUgcmV0dXJuIHZhbHVlIGlzIHVzZWxlc3MuDQoNCiAgICAgICAgICAgICAgIHVz dHIyc3RwKCkgIGlzICBhICBiZXR0ZXIgIHJlcGxhY2VtZW50IGZvciB0aGlzIGZ1bmN0aW9u IGZvciB0aGUNCiAgICAgICAgICAgICAgIGZvbGxvd2luZyByZWFzb25zOg0KDQogICAgICAg ICAgICAgICDigKIgIEJldHRlciBwZXJmb3JtYW5jZSAoY2hhaW4gY29weSBpbnN0ZWFkIG9m IGNvbmNhdGVuYXRpbmcpLg0KDQogICAgICAgICAgICAgICDigKIgIE5vIG5lZWQgdG8gY2Fs bCBzdHJsZW4oMyksIHRoYW5rcyB0byB0aGUgdXNlZnVsIHJldHVybiB2YWx1ZS4NCg0KICAg ICAgICAgICAgICAg4oCiICBGdW5jdGlvbiBuYW1lIHRoYXQgaXMgbm90IGFjdGl2ZWx5IGNv bmZ1c2luZy4NCg0KUkVUVVJOIFZBTFVFDQogICAgICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rp b25zIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHRlcm1pbmF0aW5nICBudWxsICBieXRlDQog ICAgICAgIGluIHRoZSBkZXN0aW5hdGlvbiBzdHJpbmcgKHRoZXkgbmV2ZXIgdHJ1bmNhdGUp Lg0KDQogICAgICAgIOKAoiAgc3RwY3B5KDMpDQoNCiAgICAgICAg4oCiICB1c3RyMnN0cCgp DQoNCiAgICAgICAg4oCiICBtZW1wY3B5KDMpDQoNCiAgICAgICAgVGhlICBmb2xsb3dpbmcg IGZ1bmN0aW9ucyByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSB0ZXJtaW5hdGluZyBudWxsIGJ5 dGUNCiAgICAgICAgaW4gdGhlIGRlc3RpbmF0aW9uIHN0cmluZywgZXhjZXB0IHdoZW4gdHJ1 bmNhdGlvbiBvY2N1cnM7IGlmIHRydW5jYXRpb24NCiAgICAgICAgb2NjdXJzLCB0aGV5IHJl dHVybiBhIHBvaW50ZXIgdG8gb25lIHBhc3QgdGhlIGVuZCAgb2YgIHRoZSAgZGVzdGluYXRp b24NCiAgICAgICAgYnVmZmVyLg0KDQogICAgICAgIOKAoiAgc3RwZWNweSgpDQoNCiAgICAg ICAg4oCiICBzdHBlY3B5eCgpDQoNCiAgICAgICAgVGhlICBmb2xsb3dpbmcgZnVuY3Rpb24g cmV0dXJucyBhIHBvaW50ZXIgdG8gb25lIGFmdGVyIHRoZSBsYXN0IGNoYXJhY+KAkA0KICAg ICAgICB0ZXIgaW4gdGhlIGRlc3RpbmF0aW9uIHVudGVybWluYXRlZCBzdHJpbmc7IGlmIHRy dW5jYXRpb24gb2NjdXJzLCAgdGhhdA0KICAgICAgICBwb2ludGVyICBpcyBlcXVpdmFsZW50 IHRvIGEgcG9pbnRlciB0byBvbmUgcGFzdCB0aGUgZW5kIG9mIHRoZSBkZXN0aW5h4oCQDQog ICAgICAgIHRpb24gYnVmZmVyLg0KDQogICAgICAgIOKAoiAgc3RwbmNweSgzKQ0KDQogICAg RGVwcmVjYXRlZA0KICAgICAgICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyByZXR1cm4gdGhl IGxlbmd0aCBvZiB0aGUgdG90YWwgc3RyaW5nIHRoYXQgdGhleQ0KICAgICAgICB0cmllZCB0 byBjcmVhdGUgKGFzIGlmIHRydW5jYXRpb24gZGlkbuKAmXQgb2NjdXIpLg0KDQogICAgICAg IOKAoiAgc3RybGNweSgzYnNkKQ0KDQogICAgICAgIOKAoiAgc3RybGNhdCgzYnNkKQ0KDQog ICAgICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRo ZSBkZXN0aW5hdGlvbiBzdHJpbmcsIG9yDQogICAgICAgIC1FMkJJRyBvbiB0cnVuY2F0aW9u Lg0KDQogICAgICAgIOKAoiAgc3Ryc2NweSg5KQ0KDQogICAgICAgIFRoZSBmb2xsb3dpbmcg ZnVuY3Rpb25zIHJldHVybiB0aGUgZHN0IHBvaW50ZXIsIHdoaWNoIGlzIHVzZWxlc3MuDQoN CiAgICAgICAg4oCiICBzdHJjcHkoMykNCg0KICAgICAgICDigKIgIHN0cmNhdCgzKQ0KDQog ICAgICAgIOKAoiAgc3RybmNweSgzKQ0KDQogICAgICAgIOKAoiAgc3RybmNhdCgzKQ0KDQpD QVZFQVRTDQogICAgICAgIFNvbWUgb2YgdGhlIGZ1bmN0aW9ucyBkZXNjcmliZWQgaGVyZSBh cmUgbm90IHByb3ZpZGVkIGJ5ICBhbnkgIGxpYnJhcnk7DQogICAgICAgIHlvdSBzaG91bGQg d3JpdGUgeW91ciBvd24gY29weSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlbS4NCg0KICAgICAg ICBUaGUgIGRlcHJlY2F0ZWQgc3RhdHVzIG9mIHRoZXNlIGZ1bmN0aW9ucyB2YXJpZXMgZnJv bSBzeXN0ZW0gdG8gc3lzdGVtLg0KICAgICAgICBUaGlzIHBhZ2UgZGVjbGFyZXMgYXMgZGVw cmVjYXRlZCB0aG9zZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGEgYmV0dGVyIHJl4oCQDQogICAg ICAgIHBsYWNlbWVudCBkb2N1bWVudGVkIGluIHRoaXMgc2FtZSBwYWdlLg0KDQpFWEFNUExF Uw0KICAgICAgICBUaGUgZm9sbG93aW5nIGFyZSBleGFtcGxlcyBvZiBjb3JyZWN0IHVzZSBv ZiBlYWNoIG9mIHRoZXNlIGZ1bmN0aW9ucy4NCg0KICAgICAgICBzdHBjcHkoMykNCiAgICAg ICAgICAgICAgICAgICBwID0gYnVmOw0KICAgICAgICAgICAgICAgICAgIHAgPSBzdHBjcHko cCwgIkhlbGxvICIpOw0KICAgICAgICAgICAgICAgICAgIHAgPSBzdHBjcHkocCwgIndvcmxk Iik7DQogICAgICAgICAgICAgICAgICAgcCA9IHN0cGNweShwLCAiISIpOw0KICAgICAgICAg ICAgICAgICAgIGxlbiA9IHAgLSBidWY7DQogICAgICAgICAgICAgICAgICAgcHV0cyhidWYp Ow0KDQogICAgICAgIHN0cGVjcHkoKQ0KICAgICAgICBzdHBlY3B5eCgpDQogICAgICAgICAg ICAgICAgICAgcGFzdF9lbmQgPSBidWYgKyBzaXplb2YoYnVmKTsNCiAgICAgICAgICAgICAg ICAgICBwID0gYnVmOw0KICAgICAgICAgICAgICAgICAgIHAgPSBzdHBlY3B5KHAsIHBhc3Rf ZW5kLCAiSGVsbG8gIik7DQogICAgICAgICAgICAgICAgICAgcCA9IHN0cGVjcHkocCwgcGFz dF9lbmQsICJ3b3JsZCIpOw0KICAgICAgICAgICAgICAgICAgIHAgPSBzdHBlY3B5KHAsIHBh c3RfZW5kLCAiISIpOw0KICAgICAgICAgICAgICAgICAgIGlmIChwID09IHBhc3RfZW5kKSB7 DQogICAgICAgICAgICAgICAgICAgICAgIHAtLTsNCiAgICAgICAgICAgICAgICAgICAgICAg Z290byB0b29sb25nOw0KICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAg ICBsZW4gPSBwIC0gYnVmOw0KICAgICAgICAgICAgICAgICAgIHB1dHMoYnVmKTsNCg0KICAg ICAgICBzdHBuY3B5KDMpDQogICAgICAgICAgICAgICAgICAgcGFzdF9lbmQgPSBidWYgKyBz aXplb2YoYnVmKTsNCiAgICAgICAgICAgICAgICAgICBlbmQgPSBzdHBuY3B5KGJ1ZiwgIkhl bGxvIHdvcmxkISIsIHNpemVvZihidWYpKTsNCiAgICAgICAgICAgICAgICAgICBpZiAoZW5k ID09IHBhc3RfZW5kKQ0KICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHRvb2xvbmc7DQog ICAgICAgICAgICAgICAgICAgbGVuID0gZW5kIC0gYnVmOw0KICAgICAgICAgICAgICAgICAg IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKGJ1Zik7IGkrKykNCiAgICAgICAgICAg ICAgICAgICAgICAgcHV0Y2hhcihidWZbaV0pOw0KDQogICAgICAgIHVzdHIyc3RwKCkNCiAg ICAgICAgICAgICAgICAgICBwID0gYnVmOw0KICAgICAgICAgICAgICAgICAgIHAgPSB1c3Ry MnN0cChwLCAiSGVsbG8gIiwgNik7DQogICAgICAgICAgICAgICAgICAgcCA9IHVzdHIyc3Rw KHAsICJ3b3JsZCIsIDQyKTsgIC8vIFBhZGRpbmcgbnVsbCBieXRlcyBpZ25vcmVkLg0KICAg ICAgICAgICAgICAgICAgIHAgPSB1c3RyMnN0cChwLCAiISIsIDEpOw0KICAgICAgICAgICAg ICAgICAgIGxlbiA9IHAgLSBidWY7DQogICAgICAgICAgICAgICAgICAgcHV0cyhidWYpOw0K DQogICAgICAgIG1lbXBjcHkoMykNCiAgICAgICAgICAgICAgICAgICBwID0gYnVmOw0KICAg ICAgICAgICAgICAgICAgIHAgPSBtZW1wY3B5KHAsICJIZWxsbyAiLCA2KTsNCiAgICAgICAg ICAgICAgICAgICBwID0gbWVtcGNweShwLCAid29ybGQiLCA1KTsNCiAgICAgICAgICAgICAg ICAgICBwID0gbWVtcGNweShwLCAiISIsIDEpOw0KICAgICAgICAgICAgICAgICAgIHAgPSAn XDAnOw0KICAgICAgICAgICAgICAgICAgIGxlbiA9IHAgLSBidWY7DQogICAgICAgICAgICAg ICAgICAgcHV0cyhidWYpOw0KDQogICAgRGVwcmVjYXRlZA0KICAgICAgICBzdHJsY3B5KDNi c2QpDQogICAgICAgIHN0cmxjYXQoM2JzZCkNCiAgICAgICAgICAgICAgICAgICBpZiAoc3Ry bGNweShidWYsICJIZWxsbyAiLCBzaXplb2YoYnVmKSkgPj0gc2l6ZW9mKGJ1ZikpDQogICAg ICAgICAgICAgICAgICAgICAgIGdvdG8gdG9vbG9uZzsNCiAgICAgICAgICAgICAgICAgICBp ZiAoc3RybGNhdChidWYsICJ3b3JsZCIsIHNpemVvZihidWYpKSA+PSBzaXplb2YoYnVmKSkN CiAgICAgICAgICAgICAgICAgICAgICAgZ290byB0b29sb25nOw0KICAgICAgICAgICAgICAg ICAgIGxlbiA9IHN0cmxjYXQoYnVmLCAiISIsIHNpemVvZihidWYpKTsNCiAgICAgICAgICAg ICAgICAgICBpZiAobGVuID49IHNpemVvZihidWYpKQ0KICAgICAgICAgICAgICAgICAgICAg ICBnb3RvIHRvb2xvbmc7DQogICAgICAgICAgICAgICAgICAgcHV0cyhidWYpOw0KDQogICAg ICAgIHN0cnNjcHkoOSkNCiAgICAgICAgICAgICAgICAgICBsZW4gPSBzdHJzY3B5KGJ1Ziwg IkhlbGxvIHdvcmxkISIsIHNpemVvZihidWYpKTsNCiAgICAgICAgICAgICAgICAgICBpZiAo bGVuID09IC1FMkJJRykNCiAgICAgICAgICAgICAgICAgICAgICAgZ290byB0b29sb25nOw0K ICAgICAgICAgICAgICAgICAgIHB1dHMoYnVmKTsNCg0KICAgICAgICBzdHJjcHkoMykNCiAg ICAgICAgc3RyY2F0KDMpDQogICAgICAgICAgICAgICAgICAgc3RyY3B5KGJ1ZiwgIkhlbGxv ICIpOw0KICAgICAgICAgICAgICAgICAgIHN0cmNhdChidWYsICJ3b3JsZCIpOw0KICAgICAg ICAgICAgICAgICAgIHN0cmNhdChidWYsICIhIik7DQogICAgICAgICAgICAgICAgICAgbGVu ID0gc3RybGVuKGJ1Zik7DQogICAgICAgICAgICAgICAgICAgcHV0cyhidWYpOw0KDQogICAg ICAgIHN0cm5jcHkoMykNCiAgICAgICAgICAgICAgICAgICBzdHJuY3B5KGJ1ZiwgIkhlbGxv IHdvcmxkISIsIHNpemVvZihidWYpKTsNCiAgICAgICAgICAgICAgICAgICBpZiAoYnVmICsg c2l6ZW9mKGJ1ZikgLSAxID09ICdcMCcpDQogICAgICAgICAgICAgICAgICAgICAgIGdvdG8g dG9vbG9uZzsNCiAgICAgICAgICAgICAgICAgICBsZW4gPSBzdHJubGVuKGJ1Ziwgc2l6ZW9m KGJ1ZikpOw0KICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6 ZW9mKGJ1Zik7IGkrKykNCiAgICAgICAgICAgICAgICAgICAgICAgcHV0Y2hhcihidWZbaV0p Ow0KDQogICAgICAgIHN0cm5jYXQoMykNCiAgICAgICAgICAgICAgICAgICBzdHJuY3B5KGJ1 ZiwgIkhlbGxvICIsIDYpOw0KICAgICAgICAgICAgICAgICAgIHN0cm5jYXQoYnVmLCAid29y bGQiLCA0Mik7ICAvLyBQYWRkaW5nIG51bGwgYnl0ZXMgaWdub3JlZC4NCiAgICAgICAgICAg ICAgICAgICBzdHJuY2F0KGJ1ZiwgIiEiLCAxKTsNCiAgICAgICAgICAgICAgICAgICBwdXRz KGJ1Zik7DQoNClNFRSBBTFNPDQogICAgICAgIG1lbWNweSgzKSwgbWVtY2NweSgzKSwgbWVt cGNweSgzKSwgc3RyaW5nKDMpDQoNCkxpbnV4IG1hbuKAkHBhZ2VzICh1bnJlbGVhc2VkKSAg ICAgICAgKGRhdGUpICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19jb3B5KDcpDQoNCg0K DQotLSANCjxodHRwOi8vd3d3LmFsZWphbmRyby1jb2xvbWFyLmVzLz4NCg== --------------7VFu20eP387azfOP7SGo51DH-- --------------d806Bs0MVbNt5iC0PHoplpps 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/2zIFAmOWbtoACgkQnowa+77/ 2zLEhhAAniPVZrZDcBaSJQJADIBkpNH0pqj9cIsYIdceX1/PNVsiQGlquoBXJxpc J5sfARiKf3/bYptJWuLoUeMKtw372WKjY5p/cKt0NHDJtsbEcPEkghPQgcZWT7uw KRVhDymr8YmD7I7rWqybu/DSekltkOIULUo+O++9CXQLuvZy+aNk9kz+wXHnGZXl at6/q283eclXa8aBvK9zx6t1hc7FdWwzGM2TK0NY5xj5pYk6Qb8peoQo/bDVYyw7 E4hcRXLbONjeQc6SKF60ZYTow1eWDlD3LRHTXdAVn9aTxEXt40HxRcw7PoArKCSI SGzAJkUjbFqXK+sl7ZV27u00fAgDxdCm06ZhIy6BeuPpYhuKRFDw6gtFN7nt1iAw ILIIC5ZsfWPlqOX6ar2rWVox3xPwBeaOJwfGsvUBTJTucQfinyMLNhvLrFPD64XU HmGpSLRhkS5ECP0pB3/dy62J1MXUDHrqZvSkbpW7ArtM8keiRCCIHDqjUrZ/NOIf L0hCeuEGGIOz/aokDXV3pVk6sA457JkEI5jYkVI7x9n4XwjfDpR6bkTF8m6Ve+QV hmhoSVru1fCI/MGemgyAfpKMzct/qGGYWcjiHdQBcjrKGLG/pcM10S0CwGbS+BUs QZ4azOIjLOXHfU5ufxZMHUH8zQX+rskXOoYnJKVurI1M1PkrBuw= =n/b8 -----END PGP SIGNATURE----- --------------d806Bs0MVbNt5iC0PHoplpps--