From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-112.freemail.mail.aliyun.com (out30-112.freemail.mail.aliyun.com [115.124.30.112]) by sourceware.org (Postfix) with ESMTPS id 7D6F63857340 for ; Thu, 11 Jan 2024 09:29:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7D6F63857340 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.alibaba.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7D6F63857340 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=115.124.30.112 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704965370; cv=none; b=YXCcQbqtZLDG1qJC+x/FQOm6lg0hX0BaSrsGtgp9GPhqb/zu/IFrnTwwmvj5gX3VpCTitBI2ssIegvAk5vRxufsCGmZy+RFB+Z9VCxHIpwGGf3FjZdoNGkEOsJ6L3UuF7SJITHBpEiZu/cnymVrs0zA/PWL5TFQgJXLcnIIeFHk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704965370; c=relaxed/simple; bh=m6CdW2HLTq2JEL3XqjfYredMQhK0w+6VIwRTgAkxlas=; h=Date:From:To:Message-ID:Subject:MIME-Version; b=KdtTK/PFH2mkoErbsX4BkEMpnuIwjnkb35X77GscfnUA132+oLbpzY3kaNoakKENFaay5hP4tBs4/5OupPkpGkgd3fEI3A/JLwCV9d0ek0g9TdzNTaoRKF+1jO60xBbkY5SEaJtBlU0f54VWoUUpsuuXhTFbUr/24ZB3ybtfUug= ARC-Authentication-Results: i=1; server2.sourceware.org X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R141e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018046059;MF=cooper.joshua@linux.alibaba.com;NM=1;PH=DW;RN=10;SR=0;TI=W4_0.2.3_v5ForWebDing_21253466_1704965269453_o7001c60f; Received: from WS-web (cooper.joshua@linux.alibaba.com[W4_0.2.3_v5ForWebDing_21253466_1704965269453_o7001c60f]) at Thu, 11 Jan 2024 17:29:18 +0800 Date: Thu, 11 Jan 2024 17:29:18 +0800 From: "joshua" To: "juzhe.zhong@rivai.ai" , "gcc-patches" Cc: "Jim Wilson" , "palmer" , "andrew" , "philipp.tomsich" , "jeffreyalaw" , "christoph.muellner" , "jinma" , "cooper.qu" Reply-To: "joshua" Message-ID: <0f98fd53-6e9f-4d9d-8824-313ad1f9aa0f.cooper.joshua@linux.alibaba.com> Subject: =?UTF-8?B?UmXvvJpSZe+8mltQQVRDSCB2NV0gUklTQy1WOiBBZGQgc3VwcG9ydCBmb3IgeHRoZWFkdmVj?= =?UTF-8?B?dG9yLXNwZWNpZmljIGludHJpbnNpY3Mu?= X-Mailer: [Alimail-Mailagent revision 79][W4_0.2.3][v5ForWebDing][Chrome] MIME-Version: 1.0 x-aliyun-im-through: {"mailThroughImNew":true} References: <9816550ECCDD42E6+202401111724045634260@rivai.ai> x-aliyun-mail-creator: W4_0.2.3_v5ForWebDing_SFRTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyMC4wLjAuMCBTYWZhcmkvNTM3LjM2IEVkZy8xMjAuMC4wLjA=Ch In-Reply-To: <9816550ECCDD42E6+202401111724045634260@rivai.ai> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 X-Spam-Status: No, score=-18.3 required=5.0 tests=BAYES_00,BODY_8BITS,ENV_AND_HDR_SPF_MATCH,GIT_PATCH_0,KAM_ASCII_DIVIDERS,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_DNSWL_NONE,SCC_5_SHORT_WORD_LINES,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: VGhlIHNleHQvemV4dCBpc3N1ZSBpcyBub3QgcmVsYXRlZCB0byB4dGhlYWR2ZWN0b3Itc3BlY2lh bCBwYXR0ZXJucy4KSSBhZGRlZCAhVEFSR0VUX1hUSEVBRFZFQ1RPUiB0byBzZXh0L3pleHQgcGF0 dGVybnMgaW4KIlJJU0MtVjogSGFuZGxlIGRpZmZlcmVuY2VzIGJldHdlZW4gWFRoZWFkdmVjdG9y IGFuZMKgVmVjdG9yIgpUaGF0IGlzIGNhdXNlZCBieSB0aGUgdndtdWwgcGF0dGVybiwgYnV0IEkg Y2Fubm90IHJlcHJvZHVjZSBpdCByaWdodCBub3cuCgoKCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K5Y+R5Lu25Lq677ya anV6aGUuemhvbmdAcml2YWkuYWkgPGp1emhlLnpob25nQHJpdmFpLmFpPgrlj5HpgIHml7bpl7Tv vJoyMDI05bm0MeaciDEx5pelKOaYn+acn+WbmykgMTc6MjQK5pS25Lu25Lq677yaImNvb3Blci5q b3NodWEiPGNvb3Blci5qb3NodWFAbGludXguYWxpYmFiYS5jb20+OyAiZ2NjLXBhdGNoZXMiPGdj Yy1wYXRjaGVzQGdjYy5nbnUub3JnPgrmioTjgIDpgIHvvJpKaW0gV2lsc29uPGppbS53aWxzb24u Z2NjQGdtYWlsLmNvbT47IHBhbG1lcjxwYWxtZXJAZGFiYmVsdC5jb20+OyBhbmRyZXc8YW5kcmV3 QHNpZml2ZS5jb20+OyAicGhpbGlwcC50b21zaWNoIjxwaGlsaXBwLnRvbXNpY2hAdnJ1bGwuZXU+ OyBqZWZmcmV5YWxhdzxqZWZmcmV5YWxhd0BnbWFpbC5jb20+OyAiY2hyaXN0b3BoLm11ZWxsbmVy IjxjaHJpc3RvcGgubXVlbGxuZXJAdnJ1bGwuZXU+OyBqaW5tYTxqaW5tYUBsaW51eC5hbGliYWJh LmNvbT47ICJjb29wZXIucXUiPGNvb3Blci5xdUBsaW51eC5hbGliYWJhLmNvbT4K5Li744CA6aKY 77yaUmU6IFJl77yaW1BBVENIIHY1XSBSSVNDLVY6IEFkZCBzdXBwb3J0IGZvciB4dGhlYWR2ZWN0 b3Itc3BlY2lmaWMgaW50cmluc2ljcy4KCgpJIGRvbid0IHNlZSBhbnkgcGF0dGVybnMgYXJlIHBv c3NpYmxlIENTRSBpbnRvIHNleHQvemV4dCBwYXR0ZXJuczoKCgorKGRlZmluZV9leHBhbmQgIkBw cmVkX21vdl93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPiIKK8KgIFsoc2V0IChtYXRjaF9vcGVy YW5kOlZfVkxTIDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIikKK8KgwqDCoCAoaWZfdGhlbl9lbHNl OlZfVkxTCivCoMKgwqDCoMKgICh1bnNwZWM6PFZNPgorCVsobWF0Y2hfb3BlcmFuZDo8Vk0+IDEg InZlY3Rvcl9tYXNrX29wZXJhbmQiKQorCShtYXRjaF9vcGVyYW5kIDQgInZlY3Rvcl9sZW5ndGhf b3BlcmFuZCIpCisJKG1hdGNoX29wZXJhbmQgNSAiY29uc3RfaW50X29wZXJhbmQiKQorCShtYXRj aF9vcGVyYW5kIDYgImNvbnN0X2ludF9vcGVyYW5kIikKKwkobWF0Y2hfb3BlcmFuZCA3ICJjb25z dF9pbnRfb3BlcmFuZCIpCisJKHJlZzpTSSBWTF9SRUdOVU0pCisJKHJlZzpTSSBWVFlQRV9SRUdO VU0pXSBVTlNQRUNfVEhfVkxNRU1fT1ApCivCoMKgwqDCoMKgIChtYXRjaF9vcGVyYW5kOlZfVkxT IDMgInZlY3Rvcl9tb3ZlX29wZXJhbmQiKQorwqDCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZDpWX1ZM UyAyICJ2ZWN0b3JfbWVyZ2Vfb3BlcmFuZCIpKSldCivCoCAiVEFSR0VUX1hUSEVBRFZFQ1RPUiIK K8KgIHt9KQorCisoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqcHJlZF9tb3Zfd2lkdGg8dmxtZW1f b3BfYXR0cj48bW9kZT4iCivCoCBbKHNldCAobWF0Y2hfb3BlcmFuZDpWX1ZMUyAwICJub25pbW1l ZGlhdGVfb3BlcmFuZCIJwqDCoMKgICI9dnIswqDCoMKgIHZyLMKgwqDCoCB2ZCzCoMKgwqDCoCBt LMKgwqDCoCB2cizCoMKgwqAgdnIiKQorwqDCoMKgIChpZl90aGVuX2Vsc2U6Vl9WTFMKK8KgwqDC oMKgwqAgKHVuc3BlYzo8Vk0+CisJWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21hc2tf b3BlcmFuZCIJwqDCoCAidm1XYzEswqDCoCBXYzEswqDCoMKgIHZtLCB2bVdjMSzCoMKgIFdjMSzC oMKgIFdjMSIpCisJKG1hdGNoX29wZXJhbmQgNCAidmVjdG9yX2xlbmd0aF9vcGVyYW5kIgnCoMKg wqDCoMKgICLCoMKgIHJLLMKgwqDCoCBySyzCoMKgwqAgcksswqDCoMKgIHJLLMKgwqDCoCBySyzC oMKgwqAgcksiKQorCShtYXRjaF9vcGVyYW5kIDUgImNvbnN0X2ludF9vcGVyYW5kIgnCoCAiwqDC oMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDC oCBpIikKKwkobWF0Y2hfb3BlcmFuZCA2ICJjb25zdF9pbnRfb3BlcmFuZCIJwqAgIsKgwqDCoCBp LMKgwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSIp CisJKG1hdGNoX29wZXJhbmQgNyAiY29uc3RfaW50X29wZXJhbmQiCcKgICLCoMKgwqAgaSzCoMKg wqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKgIGkiKQorCShy ZWc6U0kgVkxfUkVHTlVNKQorCShyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZMTUVN X09QKQorwqDCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZDpWX1ZMUyAzICJyZWdfb3JfbWVtX29wZXJh bmQiCcKgwqDCoMKgwqAgIsKgwqDCoCBtLMKgwqDCoMKgIG0swqDCoMKgwqAgbSzCoMKgwqAgdnIs wqDCoMKgIHZyLMKgwqDCoCB2ciIpCivCoMKgwqDCoMKgIChtYXRjaF9vcGVyYW5kOlZfVkxTIDIg InZlY3Rvcl9tZXJnZV9vcGVyYW5kIgnCoMKgwqAgIsKgwqDCoCAwLMKgwqDCoCB2dSzCoMKgwqAg dnUswqDCoMKgIHZ1LMKgwqDCoCB2dSzCoMKgwqDCoCAwIikpKV0KK8KgICIoVEFSR0VUX1hUSEVB RFZFQ1RPUgorwqDCoMKgICYmIChyZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1swXSwgPE1PREU+ bW9kZSkKKwl8fCByZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1szXSwgPE1PREU+bW9kZSkpKSIK K8KgICJACivCoMKgIHZsPHZsbWVtX29wX2F0dHI+LnZcdCUwLCUzJXAxCivCoMKgIHZsPHZsbWVt X29wX2F0dHI+LnZcdCUwLCUzCivCoMKgIHZsPHZsbWVtX29wX2F0dHI+LnZcdCUwLCUzLCUxLnQK K8KgwqAgdnM8dmxtZW1fb3BfYXR0cj4udlx0JTMsJTAlcDEKK8KgwqAgdm12LnYudlx0JTAsJTMK K8KgwqAgdm12LnYudlx0JTAsJTMiCivCoCAiJiYgcmVnaXN0ZXJfb3BlcmFuZCAob3BlcmFuZHNb MF0sIDxNT0RFPm1vZGUpCivCoMKgICYmIHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzNdLCA8 TU9ERT5tb2RlKQorwqDCoCAmJiBzYXRpc2ZpZXNfY29uc3RyYWludF92dSAob3BlcmFuZHNbMl0p CivCoMKgICYmIElOVFZBTCAob3BlcmFuZHNbN10pID09IHJpc2N2X3ZlY3Rvcjo6VkxNQVgiCivC oCBbKHNldCAobWF0Y2hfZHVwIDApIChtYXRjaF9kdXAgMykpXQorwqAgIiIKK8KgIFsoc2V0X2F0 dHIgInR5cGUiICJ2bGRlLHZsZGUsdmxkZSx2c3RlLHZpbW92LHZpbW92IikKK8KgwqAgKHNldF9h dHRyICJtb2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2luc24gIkBwcmVkX3N0b3JlX3dpZHRo PHZsbWVtX29wX2F0dHI+PG1vZGU+IgorwqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkkgMCAibWVt b3J5X29wZXJhbmQiCSIrbSIpCisJKGlmX3RoZW5fZWxzZTpWSQorCcKgICh1bnNwZWM6PFZNPgor CcKgwqDCoCBbKG1hdGNoX29wZXJhbmQ6PFZNPiAxICJ2ZWN0b3JfbWFza19vcGVyYW5kIiAidm1X YzEiKQorCcKgwqDCoMKgIChtYXRjaF9vcGVyYW5kIDMgInZlY3Rvcl9sZW5ndGhfb3BlcmFuZCLC oMKgwqAgIsKgwqAgcksiKQorCcKgwqDCoMKgIChtYXRjaF9vcGVyYW5kIDQgImNvbnN0X2ludF9v cGVyYW5kIgkiwqDCoMKgIGkiKQorCcKgwqDCoMKgIChyZWc6U0kgVkxfUkVHTlVNKQorCcKgwqDC oMKgIChyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZTTUVNX09QKQorCcKgIChtYXRj aF9vcGVyYW5kOlZJIDIgInJlZ2lzdGVyX29wZXJhbmQiCSLCoMKgwqAgdnIiKQorCcKgIChtYXRj aF9kdXAgMCkpKV0KK8KgICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorwqAgInZzPHZsbWVtX29wX2F0 dHI+LnZcdCUyLCUwJXAxIgorwqAgWyhzZXRfYXR0ciAidHlwZSIgInZzdGUiKQorwqDCoCAoc2V0 X2F0dHIgIm1vZGUiICI8TU9ERT4iKQorwqDCoCAoc2V0IChhdHRyICJhdmxfdHlwZV9pZHgiKSAo Y29uc3RfaW50IDQpKQorwqDCoCAoc2V0X2F0dHIgInZsX29wX2lkeCIgIjMiKV0pCisKKyhkZWZp bmVfaW5zbiAiQHByZWRfc3RyaWRlZF9sb2FkX3dpZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+Igor wqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkkgMCAicmVnaXN0ZXJfb3BlcmFuZCIJwqDCoMKgwqDC oCAiPXZyLMKgwqDCoCB2cizCoMKgwqAgdmQiKQorCShpZl90aGVuX2Vsc2U6VkkKKwnCoCAodW5z cGVjOjxWTT4KKwnCoMKgwqAgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21hc2tfb3Bl cmFuZCIgInZtV2MxLMKgwqAgV2MxLMKgwqDCoCB2bSIpCisJwqDCoMKgwqAgKG1hdGNoX29wZXJh bmQgNSAidmVjdG9yX2xlbmd0aF9vcGVyYW5kIsKgwqDCoCAiwqDCoCBySyzCoMKgwqAgcksswqDC oMKgIHJLIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA2ICJjb25zdF9pbnRfb3BlcmFuZCIJ IsKgwqDCoCBpLMKgwqDCoMKgIGkswqDCoMKgwqAgaSIpCisJwqDCoMKgwqAgKG1hdGNoX29wZXJh bmQgNyAiY29uc3RfaW50X29wZXJhbmQiCSLCoMKgwqAgaSzCoMKgwqDCoCBpLMKgwqDCoMKgIGki KQorCcKgwqDCoMKgIChtYXRjaF9vcGVyYW5kIDggImNvbnN0X2ludF9vcGVyYW5kIgkiwqDCoMKg IGkswqDCoMKgwqAgaSzCoMKgwqDCoCBpIikKKwnCoMKgwqDCoCAocmVnOlNJIFZMX1JFR05VTSkK KwnCoMKgwqDCoCAocmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9WTFNNRU1fT1ApCisJ wqAgKHVuc3BlYzpWSQorCcKgwqDCoCBbKG1hdGNoX29wZXJhbmQ6VkkgMyAibWVtb3J5X29wZXJh bmQiCSLCoMKgwqAgbSzCoMKgwqDCoCBtLMKgwqDCoMKgIG0iKQorCcKgwqDCoMKgIChtYXRjaF9v cGVyYW5kIDQgInBtb2RlX3JlZ19vcl8wX29wZXJhbmQiwqDCoCAiwqDCoCBySizCoMKgwqAgckos wqDCoMKgIHJKIildIFVOU1BFQ19USF9WTFNNRU1fT1ApCisJwqAgKG1hdGNoX29wZXJhbmQ6Vkkg MiAidmVjdG9yX21lcmdlX29wZXJhbmQiwqDCoMKgwqDCoCAiwqDCoMKgIDAswqDCoMKgIHZ1LMKg wqDCoCB2dSIpKSldCivCoCAiVEFSR0VUX1hUSEVBRFZFQ1RPUiIKK8KgICJ2bHM8dmxtZW1fb3Bf YXR0cj4udlx0JTAsJTMsJXo0JXAxIgorwqAgWyhzZXRfYXR0ciAidHlwZSIgInZsZHMiKQorwqDC oCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhkZWZpbmVfaW5zbiAiQHByZWRfc3Ry aWRlZF9zdG9yZV93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPiIKK8KgIFsoc2V0IChtYXRjaF9v cGVyYW5kOlZJIDAgIm1lbW9yeV9vcGVyYW5kIgkiK20iKQorCShpZl90aGVuX2Vsc2U6VkkKKwnC oCAodW5zcGVjOjxWTT4KKwnCoMKgwqAgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21h c2tfb3BlcmFuZCIgInZtV2MxIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA0ICJ2ZWN0b3Jf bGVuZ3RoX29wZXJhbmQiwqDCoMKgICLCoMKgIHJLIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFu ZCA1ICJjb25zdF9pbnRfb3BlcmFuZCIJIsKgwqDCoCBpIikKKwnCoMKgwqDCoCAocmVnOlNJIFZM X1JFR05VTSkKKwnCoMKgwqDCoCAocmVnOlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9WU1NN RU1fT1ApCisJwqAgKHVuc3BlYzpWSQorCcKgwqDCoCBbKG1hdGNoX29wZXJhbmQgMiAicG1vZGVf cmVnX29yXzBfb3BlcmFuZCLCoMKgICLCoMKgIHJKIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFu ZDpWSSAzICJyZWdpc3Rlcl9vcGVyYW5kIsKgwqDCoMKgwqDCoCAiwqDCoCB2ciIpXSBVTlNQRUNf VEhfVlNTTUVNX09QKQorCcKgIChtYXRjaF9kdXAgMCkpKV0KK8KgICJUQVJHRVRfWFRIRUFEVkVD VE9SIgorwqAgInZzczx2bG1lbV9vcF9hdHRyPi52XHQlMywlMCwlejIlcDEiCivCoCBbKHNldF9h dHRyICJ0eXBlIiAidnN0cyIpCivCoMKgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpCivCoMKg IChzZXQgKGF0dHIgImF2bF90eXBlX2lkeCIpIChjb25zdF9pbnQgNSkpXSkKKworKGRlZmluZV9p bnNuICJAcHJlZF9pbmRleGVkX2xvYWRfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCivCoCBb KHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJyZWdpc3Rlcl9vcGVyYW5kIgnCoMKgwqDCoCAiPXZk LCB2cix2ZCwgdnIiKQorCShpZl90aGVuX2Vsc2U6VkkKKwnCoCAodW5zcGVjOjxWTT4KKwnCoMKg wqAgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21hc2tfb3BlcmFuZCLCoCAiIHZtLFdj MSx2bSxXYzEiKQorCcKgwqDCoMKgIChtYXRjaF9vcGVyYW5kIDUgInZlY3Rvcl9sZW5ndGhfb3Bl cmFuZCLCoMKgwqDCoCAiIHJLLCBySyxySywgcksiKQorCcKgwqDCoMKgIChtYXRjaF9vcGVyYW5k IDYgImNvbnN0X2ludF9vcGVyYW5kIgkiwqAgaSzCoCBpLCBpLMKgIGkiKQorCcKgwqDCoMKgICht YXRjaF9vcGVyYW5kIDcgImNvbnN0X2ludF9vcGVyYW5kIgkiwqAgaSzCoCBpLCBpLMKgIGkiKQor CcKgwqDCoMKgIChtYXRjaF9vcGVyYW5kIDggImNvbnN0X2ludF9vcGVyYW5kIgkiwqAgaSzCoCBp LCBpLMKgIGkiKQorCcKgwqDCoMKgIChyZWc6U0kgVkxfUkVHTlVNKQorCcKgwqDCoMKgIChyZWc6 U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZMWE1FTV9PUCkKKwnCoCAodW5zcGVjOlZJCisJ wqDCoMKgIFsobWF0Y2hfb3BlcmFuZCAzICJwbW9kZV9yZWdfb3JfMF9vcGVyYW5kIsKgwqDCoCAi IHJKLCBySixySiwgckoiKQorCcKgwqDCoMKgIChtZW06QkxLIChzY3JhdGNoKSkKKwnCoMKgwqDC oCAobWF0Y2hfb3BlcmFuZDpWSSA0ICJyZWdpc3Rlcl9vcGVyYW5kIiAiIHZyLCB2cix2ciwgdnIi KV0gVU5TUEVDX1RIX1ZMWE1FTV9PUCkKKwnCoCAobWF0Y2hfb3BlcmFuZDpWSSAyICJ2ZWN0b3Jf bWVyZ2Vfb3BlcmFuZCLCoMKgwqDCoMKgwqAgIiB2dSwgdnUsIDAswqAgMCIpKSldCivCoCAiVEFS R0VUX1hUSEVBRFZFQ1RPUiIKK8KgICJ2bHg8dmxtZW1fb3BfYXR0cj4udlx0JTAsKCV6MyksJTQl cDEiCivCoCBbKHNldF9hdHRyICJ0eXBlIiAidmxkdXgiKQorwqDCoCAoc2V0X2F0dHIgIm1vZGUi ICI8TU9ERT4iKV0pCisKKyhkZWZpbmVfaW5zbiAiQHByZWRfaW5kZXhlZF88dmxtZW1fb3JkZXJf YXR0cj5zdG9yZV93aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPiIKK8KgIFsoc2V0IChtZW06QkxL IChzY3JhdGNoKSkKKwkodW5zcGVjOkJMSworCcKgIFsodW5zcGVjOjxWTT4KKwnCoMKgwqAgWyht YXRjaF9vcGVyYW5kOjxWTT4gMCAidmVjdG9yX21hc2tfb3BlcmFuZCIgInZtV2MxIikKKwnCoMKg wqDCoCAobWF0Y2hfb3BlcmFuZCA0ICJ2ZWN0b3JfbGVuZ3RoX29wZXJhbmQiwqDCoMKgICLCoMKg IHJLIikKKwnCoMKgwqDCoCAobWF0Y2hfb3BlcmFuZCA1ICJjb25zdF9pbnRfb3BlcmFuZCIJIsKg wqDCoCBpIikKKwnCoMKgwqDCoCAocmVnOlNJIFZMX1JFR05VTSkKKwnCoMKgwqDCoCAocmVnOlNJ IFZUWVBFX1JFR05VTSldIFVOU1BFQ19USF9WU1hNRU1fT1ApCisJwqDCoCAobWF0Y2hfb3BlcmFu ZCAxICJwbW9kZV9yZWdfb3JfMF9vcGVyYW5kIsKgwqDCoMKgwqAgIsKgIHJKIikKKwnCoMKgICht YXRjaF9vcGVyYW5kOlZJIDIgInJlZ2lzdGVyX29wZXJhbmQiICLCoCB2ciIpCisJwqDCoCAobWF0 Y2hfb3BlcmFuZDpWSSAzICJyZWdpc3Rlcl9vcGVyYW5kIsKgICLCoCB2ciIpXSBVTlNQRUNfVEhf VlNYTUVNX09QKSldCivCoCAiVEFSR0VUX1hUSEVBRFZFQ1RPUiIKK8KgICJ2czx2bG1lbV9vcmRl cl9hdHRyPng8dmxtZW1fb3BfYXR0cj4udlx0JTMsKCV6MSksJTIlcDAiCivCoCBbKHNldF9hdHRy ICJ0eXBlIiAidnN0dXgiKQorwqDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCisKKyhk ZWZpbmVfZXhwYW5kICJAcHJlZF90aF9leHRyYWN0PG1vZGU+IgorwqAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6PFZFTD4gMCAicmVnaXN0ZXJfb3BlcmFuZCIpCisJKHVuc3BlYzo8VkVMPgorCcKgIFso dmVjX3NlbGVjdDo8VkVMPgorCcKgwqDCoMKgIChtYXRjaF9vcGVyYW5kOlZfVkxTSSAxICJyZWdp c3Rlcl9vcGVyYW5kIikKKwnCoMKgwqDCoCAocGFyYWxsZWwgWyhtYXRjaF9vcGVyYW5kOkRJIDIg InJlZ2lzdGVyX29wZXJhbmQiICJyIildKSkKKwnCoMKgIChyZWc6U0kgVlRZUEVfUkVHTlVNKV0g VU5TUEVDX1ZQUkVESUNBVEUpKV0KK8KgICJUQVJHRVRfWFRIRUFEVkVDVE9SIgore30pCisKKyhk ZWZpbmVfaW5zbiAiKnByZWRfdGhfZXh0cmFjdDxtb2RlPiIKK8KgIFsoc2V0IChtYXRjaF9vcGVy YW5kOjxWRUw+IDAgInJlZ2lzdGVyX29wZXJhbmQiwqDCoCAiPXIiKQorwqAgKHVuc3BlYzo8VkVM PgorwqDCoMKgIFsodmVjX3NlbGVjdDo8VkVMPgorwqDCoMKgwqDCoMKgIChtYXRjaF9vcGVyYW5k OlZfVkxTSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAidnIiKQorwqDCoMKgwqDCoMKgIChwYXJhbGxl bCBbKG1hdGNoX29wZXJhbmQ6REkgMiAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKV0pKQorwqDCoMKg wqAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVlBSRURJQ0FURSkpXQorwqAgIlRBUkdF VF9YVEhFQURWRUNUT1IiCivCoCAidmV4dC54LnZcdCUwLCUxLCUyIgorwqAgWyhzZXRfYXR0ciAi dHlwZSIgInZpbW92dngiKQorwqDCoCAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCgoKCmp1 emhlLnpob25nQHJpdmFpLmFpCgrCoArlj5Hku7bkurrvvJrCoGpvc2h1YQrlj5HpgIHml7bpl7Tv vJrCoDIwMjQtMDEtMTHCoDE3OjIxCuaUtuS7tuS6uu+8msKganV6aGUuemhvbmdAcml2YWkuYWk7 IGdjYy1wYXRjaGVzCuaKhOmAge+8msKgSmltIFdpbHNvbjsgcGFsbWVyOyBhbmRyZXc7IHBoaWxp cHAudG9tc2ljaDsgamVmZnJleWFsYXc7IGNocmlzdG9waC5tdWVsbG5lcjsgamlubWE7IGNvb3Bl ci5xdQrkuLvpopjvvJrCoFJl77yaUmXvvJpbUEFUQ0ggdjVdIFJJU0MtVjogQWRkIHN1cHBvcnQg Zm9yIHh0aGVhZHZlY3Rvci1zcGVjaWZpYyBpbnRyaW5zaWNzLgoKIkkgZGlkbid0IHNlZSB0aGVh ZHZlY3Rvci1zcGVjaWZpYyBleHRlbnNpb24gcGF0dGVybnMuIENvdWxkIHlvdSBzaG93IG1lPyIK VGhleSBhcmUgYWxsIGluIHRoZSBmaWxlIHRoZWFkLXZlY3Rvci5tZC4KwqAKRm9yIHRoZSBzZXh0 L3pleHQgaXNzdWUsIHBlcmhhcHMgSSBuZWVkIHNvbWUgdGltZSB0byByZXByb2R1Y2UgdGhhdCBv cHRpbWl6YXRpb24sCmJ1dCBJIGNhbiBjbGVhcmx5IHJlbWVtYmVyIGl0IGlzIHJlbGF0ZWQgdG8g dndtdWwuCsKgCsKgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQrlj5Hku7bkurrvvJpqdXpoZS56aG9uZ0ByaXZhaS5haSA8 anV6aGUuemhvbmdAcml2YWkuYWk+CuWPkemAgeaXtumXtO+8mjIwMjTlubQx5pyIMTHml6Uo5pif 5pyf5ZubKSAxNzoxNwrmlLbku7bkurrvvJoiY29vcGVyLmpvc2h1YSI8Y29vcGVyLmpvc2h1YUBs aW51eC5hbGliYWJhLmNvbT47ICJnY2MtcGF0Y2hlcyI8Z2NjLXBhdGNoZXNAZ2NjLmdudS5vcmc+ CuaKhOOAgOmAge+8mkppbSBXaWxzb248amltLndpbHNvbi5nY2NAZ21haWwuY29tPjsgcGFsbWVy PHBhbG1lckBkYWJiZWx0LmNvbT47IGFuZHJldzxhbmRyZXdAc2lmaXZlLmNvbT47ICJwaGlsaXBw LnRvbXNpY2giPHBoaWxpcHAudG9tc2ljaEB2cnVsbC5ldT47IGplZmZyZXlhbGF3PGplZmZyZXlh bGF3QGdtYWlsLmNvbT47ICJjaHJpc3RvcGgubXVlbGxuZXIiPGNocmlzdG9waC5tdWVsbG5lckB2 cnVsbC5ldT47IGppbm1hPGppbm1hQGxpbnV4LmFsaWJhYmEuY29tPjsgImNvb3Blci5xdSI8Y29v cGVyLnF1QGxpbnV4LmFsaWJhYmEuY29tPgrkuLvjgIDpopjvvJpSZTogUmXvvJpbUEFUQ0ggdjVd IFJJU0MtVjogQWRkIHN1cHBvcnQgZm9yIHh0aGVhZHZlY3Rvci1zcGVjaWZpYyBpbnRyaW5zaWNz LgrCoArCoApZb3UgbWVhbiB3aGljaCBwYXR0ZXJuIG9wdGltaXplZCBzZXh0L3Z6ZXh0IHBhdHRl cm4/CsKgCsKgCkkgZGlkbid0IHNlZSB0aGVhZHZlY3Rvci1zcGVjaWZpYyBleHRlbnNpb24gcGF0 dGVybnMuIENvdWxkIHlvdSBzaG93IG1lPwrCoArCoArCoArCoApqdXpoZS56aG9uZ0ByaXZhaS5h aQrCoArCoArlj5Hku7bkurrvvJrCoGpvc2h1YQrlj5HpgIHml7bpl7TvvJrCoDIwMjQtMDEtMTHC oDE3OjE0CuaUtuS7tuS6uu+8msKganV6aGUuemhvbmdAcml2YWkuYWk7IGdjYy1wYXRjaGVzCuaK hOmAge+8msKgSmltIFdpbHNvbjsgcGFsbWVyOyBhbmRyZXc7IHBoaWxpcHAudG9tc2ljaDsgamVm ZnJleWFsYXc7IGNocmlzdG9waC5tdWVsbG5lcjsgamlubWE7IGNvb3Blci5xdQrkuLvpopjvvJrC oFJl77yaW1BBVENIIHY1XSBSSVNDLVY6IEFkZCBzdXBwb3J0IGZvciB4dGhlYWR2ZWN0b3Itc3Bl Y2lmaWMgaW50cmluc2ljcy4KwqAKVG8gYmUgc3BlY2lmaWMswqBpbiBDU0UgcGFzcywgdGhlIGlu aXRpYWwgcGF0dGVybiB3aWxsIGJlIG9wdGltaXplZCBpbnRvIHRoZSBzZXh0L3pleHQgcGF0dGVy bi4KwqAKwqAKwqAKwqAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCuWPkeS7tuS6uu+8mmpvc2h1YSA8Y29vcGVyLmpvc2h1 YUBsaW51eC5hbGliYWJhLmNvbT4K5Y+R6YCB5pe26Ze077yaMjAyNOW5tDHmnIgxMeaXpSjmmJ/m nJ/lm5spIDE3OjExCuaUtuS7tuS6uu+8miJqdXpoZS56aG9uZ0ByaXZhaS5haSI8anV6aGUuemhv bmdAcml2YWkuYWk+OyAiZ2NjLXBhdGNoZXMiPGdjYy1wYXRjaGVzQGdjYy5nbnUub3JnPgrmioTj gIDpgIHvvJpKaW0gV2lsc29uPGppbS53aWxzb24uZ2NjQGdtYWlsLmNvbT47IHBhbG1lcjxwYWxt ZXJAZGFiYmVsdC5jb20+OyBhbmRyZXc8YW5kcmV3QHNpZml2ZS5jb20+OyAicGhpbGlwcC50b21z aWNoIjxwaGlsaXBwLnRvbXNpY2hAdnJ1bGwuZXU+OyBqZWZmcmV5YWxhdzxqZWZmcmV5YWxhd0Bn bWFpbC5jb20+OyAiY2hyaXN0b3BoLm11ZWxsbmVyIjxjaHJpc3RvcGgubXVlbGxuZXJAdnJ1bGwu ZXU+OyBqaW5tYTxqaW5tYUBsaW51eC5hbGliYWJhLmNvbT47ICJjb29wZXIucXUiPGNvb3Blci5x dUBsaW51eC5hbGliYWJhLmNvbT4K5Li744CA6aKY77yaUmXvvJpbUEFUQ0ggdjVdIFJJU0MtVjog QWRkIHN1cHBvcnQgZm9yIHh0aGVhZHZlY3Rvci1zcGVjaWZpYyBpbnRyaW5zaWNzLgrCoArCoApz ZXh0L3pleHQgd2lsbCBiZSBnZW5lcmF0ZWQgaW4gTzIgZXZlbiB3aXRob3V0IGNvcnJlc3BvbmRp bmcgaW50cmluc2ljcy4KwqAKwqAKwqAKwqAKwqAKwqAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCuWPkeS7tuS6uu+8mmp1 emhlLnpob25nQHJpdmFpLmFpIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4K5Y+R6YCB5pe26Ze077ya MjAyNOW5tDHmnIgxMeaXpSjmmJ/mnJ/lm5spIDE3OjA3CuaUtuS7tuS6uu+8miJjb29wZXIuam9z aHVhIjxjb29wZXIuam9zaHVhQGxpbnV4LmFsaWJhYmEuY29tPjsgImdjYy1wYXRjaGVzIjxnY2Mt cGF0Y2hlc0BnY2MuZ251Lm9yZz4K5oqEIOmAge+8mkppbSBXaWxzb248amltLndpbHNvbi5nY2NA Z21haWwuY29tPjsgcGFsbWVyPHBhbG1lckBkYWJiZWx0LmNvbT47IGFuZHJldzxhbmRyZXdAc2lm aXZlLmNvbT47ICJwaGlsaXBwLnRvbXNpY2giPHBoaWxpcHAudG9tc2ljaEB2cnVsbC5ldT47IGpl ZmZyZXlhbGF3PGplZmZyZXlhbGF3QGdtYWlsLmNvbT47ICJjaHJpc3RvcGgubXVlbGxuZXIiPGNo cmlzdG9waC5tdWVsbG5lckB2cnVsbC5ldT47ICJjb29wZXIuam9zaHVhIjxjb29wZXIuam9zaHVh QGxpbnV4LmFsaWJhYmEuY29tPjsgamlubWE8amlubWFAbGludXguYWxpYmFiYS5jb20+OyAiY29v cGVyLnF1Ijxjb29wZXIucXVAbGludXguYWxpYmFiYS5jb20+CuS4uyDpopjvvJpSZTogW1BBVENI IHY1XSBSSVNDLVY6IEFkZCBzdXBwb3J0IGZvciB4dGhlYWR2ZWN0b3Itc3BlY2lmaWMgaW50cmlu c2ljcy4KwqAKwqAKZW51bSByZXF1aXJlZF9leHQKewogwqAgVkVDVE9SX0VYVCwgwqAgLyogVmVj dG9yIGV4dGVuc2lvbiAqLworwqAgWFRIRUFEVkVDVE9SX0VYVCwgwqAgLyogWFRoZWFkVmVjdG9y IGV4dGVuc2lvbiAqLwogwqAgWlZCQl9FWFQswqAgwqAgLyogQ3J5dG8gdmVjdG9yIFp2YmIgc3Vi LWV4dCAqLwogwqAgWlZCQl9PUl9aVktCX0VYVCwgLyogQ3J5dG8gdmVjdG9yIFp2YmIgb3IgenZr YiBzdWItZXh0ICovCiDCoCBaVkJDX0VYVCzCoCDCoCAvKiBDcnlwdG8gdmVjdG9yIFp2YmMgc3Vi LWV4dCAqLwrCoArCoArCoApBZGQgdGhlYWR2ZWN0b3IgdG8gdGhlIGVuZCBvZiB0aGUgZW51bS4K wqAKwqAKK8KgIMKgIMKgIGNhc2UgWFRIRUFEVkVDVE9SX0VYVDoKKyByZXR1cm4gVEFSR0VUX1hU SEVBRFZFQ1RPUjsKwqAKwqAKwqAKU2FtZS4KwqAKwqAKK8KgICImJiByZWdpc3Rlcl9vcGVyYW5k IChvcGVyYW5kc1swXSwgPE1PREU+bW9kZSkKKyDCoCAmJiByZWdpc3Rlcl9vcGVyYW5kIChvcGVy YW5kc1szXSwgPE1PREU+bW9kZSkKKyDCoCAmJiBzYXRpc2ZpZXNfY29uc3RyYWludF92dSAob3Bl cmFuZHNbMl0pCisgwqAgJiYgSU5UVkFMIChvcGVyYW5kc1s3XSkgPT0gcmlzY3ZfdmVjdG9yOjpW TE1BWCIKwqAKwqAKwqAKWW91IGNhbiB1c2Ugd2hvbGVfcmVnX3RvX3JlZ19tb3ZlX3AKwqAKwqAK wqAKwqAKQnR3LCBJIHJldmlldyBhZ2FpbiA6IMKgIFJJU0MtVjogSGFuZGxlIGRpZmZlcmVuY2Vz IGJldHdlZW4gWFRoZWFkdmVjdG9yIGFuZCBWZWN0b3IKwqAKwqAKwqAgwqAgKGFueV9leHRlbmQ6 VldFWFRJwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQ6PFZfRE9VQkxFX1RSVU5DPiAzICJyZWdpc3Rl cl9vcGVyYW5kIiDCoCAiVzIxLFcyMSxXMjEsVzIxLFc0MixXNDIsVzQyLFc0MixXODQsVzg0LFc4 NCxXODQsIMKgIHZyLCDCoCB2ciIpKcKgIMKgIChtYXRjaF9vcGVyYW5kOlZXRVhUSSAyICJ2ZWN0 b3JfbWVyZ2Vfb3BlcmFuZCIgwqAgwqAgwqAgwqAgwqAgIiB2dSwgdnUswqAgMCzCoCAwLCB2dSwg dnUswqAgMCzCoCAwLCB2dSwgdnUswqAgMCzCoCAwLCDCoCB2dSzCoCDCoCAwIikpKV0twqAgIlRB UkdFVF9WRUNUT1IiK8KgICJUQVJHRVRfVkVDVE9SICYmICFUQVJHRVRfWFRIRUFEVkVDVE9SIiDC oCAidjxzej5leHQudmYyXHQlMCwlMyVwMSIgwqAgWyhzZXRfYXR0ciAidHlwZSIgInZleHQiKcKg IMKgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpQEAgLTM3MTMsNyArMzc0NCw3IEBAwqAgwqAg KGFueV9leHRlbmQ6VlFFWFRJwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQ6PFZfUVVBRF9UUlVOQz4g MyAicmVnaXN0ZXJfb3BlcmFuZCIgwqAgIlc0MyxXNDMsVzQzLFc0MyxXODYsVzg2LFc4NixXODYs IMKgIHZyLCDCoCB2ciIpKcKgIMKgIChtYXRjaF9vcGVyYW5kOlZRRVhUSSAyICJ2ZWN0b3JfbWVy Z2Vfb3BlcmFuZCIgwqAgwqAgwqAgwqAgIiB2dSwgdnUswqAgMCzCoCAwLCB2dSwgdnUswqAgMCzC oCAwLCDCoCB2dSzCoCDCoCAwIikpKV0twqAgIlRBUkdFVF9WRUNUT1IiK8KgICJUQVJHRVRfVkVD VE9SICYmICFUQVJHRVRfWFRIRUFEVkVDVE9SIiDCoCAidjxzej5leHQudmY0XHQlMCwlMyVwMSIg wqAgWyhzZXRfYXR0ciAidHlwZSIgInZleHQiKcKgIMKgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RF PiIpQEAgLTM3MzQsNyArMzc2NSw3IEBAwqAgwqAgKGFueV9leHRlbmQ6Vk9FWFRJwqAgwqAgwqAg KG1hdGNoX29wZXJhbmQ6PFZfT0NUX1RSVU5DPiAzICJyZWdpc3Rlcl9vcGVyYW5kIiDCoCAiVzg3 LFc4NyxXODcsVzg3LCDCoCB2ciwgwqAgdnIiKSnCoCDCoCAobWF0Y2hfb3BlcmFuZDpWT0VYVEkg MiAidmVjdG9yX21lcmdlX29wZXJhbmQiwqAgwqAgwqAgwqAgIiB2dSwgdnUswqAgMCzCoCAwLCDC oCB2dSzCoCDCoCAwIikpKV0twqAgIlRBUkdFVF9WRUNUT1IiK8KgICJUQVJHRVRfVkVDVE9SICYm ICFUQVJHRVRfWFRIRUFEVkVDVE9SIiDCoCAidjxzej5leHQudmY4XHQlMCwlMyVwMSIgwqAgWyhz ZXRfYXR0ciAidHlwZSIgInZleHQiKcKgIMKgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpCldo eSBkbyB5b3UgYWRkIHRoZXNlICFUQVJHRVJUX1hUSEVBRFZFQ1JUT1IgPwrCoArCoApqdXpoZS56 aG9uZ0ByaXZhaS5haQrCoAogCkZyb206IEp1biBTaGEgKEpvc2h1YSkKRGF0ZTogMjAyNC0wMS0x MSAxNjo0NgpUbzogZ2NjLXBhdGNoZXMKQ0M6IGppbS53aWxzb24uZ2NjOyBwYWxtZXI7IGFuZHJl dzsgcGhpbGlwcC50b21zaWNoOyBqZWZmcmV5YWxhdzsgY2hyaXN0b3BoLm11ZWxsbmVyOyBqdXpo ZS56aG9uZzsgSnVuIFNoYSAoSm9zaHVhKTsgSmluIE1hOyBYaWFubWlhbyBRdQpTdWJqZWN0OiBb UEFUQ0ggdjVdIFJJU0MtVjogQWRkIHN1cHBvcnQgZm9yIHh0aGVhZHZlY3Rvci1zcGVjaWZpYyBp bnRyaW5zaWNzLgrCoApUaGlzIHBhdGNoIG9ubHkgaW52b2x2ZXMgdGhlIGdlbmVyYXRpb24gb2Yg eHRoZWFkdmVjdG9yCnNwZWNpYWwgbG9hZC9zdG9yZSBpbnN0cnVjdGlvbnMgYW5kIHZleHQgaW5z dHJ1Y3Rpb25zLgogCmdjYy9DaGFuZ2VMb2c6CiAKICogY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rv ci1idWlsdGlucy1iYXNlcy5jYwogKGNsYXNzIHRoX2xvYWRzdG9yZV93aWR0aCk6IERlZmluZSBu ZXcgYnVpbHRpbiBiYXNlcy4KIChjbGFzcyB0aF9leHRyYWN0KTogRGVmaW5lIG5ldyBidWlsdGlu IGJhc2VzLgogKEJBU0UpOiBEZWZpbmUgbmV3IGJ1aWx0aW4gYmFzZXMuCiAqIGNvbmZpZy9yaXNj di9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuaDoKIERlZmluZSBuZXcgYnVpbHRpbiBjbGFz cy4KICogY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1zaGFwZXMuY2MKIChzdHJ1 Y3QgdGhfbG9hZHN0b3JlX3dpZHRoX2RlZik6IERlZmluZSBuZXcgYnVpbHRpbiBzaGFwZXMuCiAo c3RydWN0IHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoX2RlZik6CiBEZWZpbmUgbmV3IGJ1aWx0 aW4gc2hhcGVzLgogKHN0cnVjdCB0aF9leHRyYWN0X2RlZik6IERlZmluZSBuZXcgYnVpbHRpbiBz aGFwZXMuCiAoU0hBUEUpOiBEZWZpbmUgbmV3IGJ1aWx0aW4gc2hhcGVzLgogKiBjb25maWcvcmlz Y3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5oOgogRGVmaW5lIG5ldyBidWlsdGluIHNo YXBlcy4KICogY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5jYyAoREVGX1JWVl9G VU5DVElPTik6CiAqIGNvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuaCAoZW51bSBy ZXF1aXJlZF9leHQpOgogKHN0cnVjdCBmdW5jdGlvbl9ncm91cF9pbmZvKToKICogY29uZmlnL3Jp c2N2L3QtcmlzY3Y6IEFkZCB0aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZgogKiBj b25maWcvcmlzY3YvdGhlYWQtdmVjdG9yLm1kCiAoQHByZWRfbW92X3dpZHRoPHZsbWVtX29wX2F0 dHI+PG1vZGU+KTogQWRkIG5ldyBwYXR0ZXJucy4KICgqcHJlZF9tb3Zfd2lkdGg8dmxtZW1fb3Bf YXR0cj48bW9kZT4pOiBMaWtld2lzZS4KIChAcHJlZF9zdG9yZV93aWR0aDx2bG1lbV9vcF9hdHRy Pjxtb2RlPik6IExpa2V3aXNlLgogKEBwcmVkX3N0cmlkZWRfbG9hZF93aWR0aDx2bG1lbV9vcF9h dHRyPjxtb2RlPik6IExpa2V3aXNlLgogKEBwcmVkX3N0cmlkZWRfc3RvcmVfd2lkdGg8dmxtZW1f b3BfYXR0cj48bW9kZT4pOiBMaWtld2lzZS4KIChAcHJlZF9pbmRleGVkX2xvYWRfd2lkdGg8dmxt ZW1fb3BfYXR0cj48bW9kZT4pOiBMaWtld2lzZS4KIChAcHJlZF9pbmRleGVkXzx2bG1lbV9vcmRl cl9hdHRyPnN0b3JlX3dpZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+KToKIChAcHJlZF90aF9leHRy YWN0PG1vZGU+KTogTGlrZXdpc2UuCiAoKnByZWRfdGhfZXh0cmFjdDxtb2RlPik6IExpa2V3aXNl LgogKiBjb25maWcvcmlzY3YvdGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWY6IE5l dyBmaWxlLgogCmdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgogCiAqIGdjYy50YXJnZXQvcmlzY3Yv cnZ2L3h0aGVhZHZlY3Rvci92bGItdnNiLmM6IE5ldyB0ZXN0LgogKiBnY2MudGFyZ2V0L3Jpc2N2 L3J2di94dGhlYWR2ZWN0b3IvdmxidS12c2IuYzogTmV3IHRlc3QuCiAqIGdjYy50YXJnZXQvcmlz Y3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgtdnNoLmM6IE5ldyB0ZXN0LgogKiBnY2MudGFyZ2V0L3Jp c2N2L3J2di94dGhlYWR2ZWN0b3IvdmxodS12c2guYzogTmV3IHRlc3QuCiAqIGdjYy50YXJnZXQv cmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHctdnN3LmM6IE5ldyB0ZXN0LgogKiBnY2MudGFyZ2V0 L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3dS12c3cuYzogTmV3IHRlc3QuCiAKQ28tYXV0aG9y ZWQtYnk6IEppbiBNYSA8amlubWFAbGludXguYWxpYmFiYS5jb20+CkNvLWF1dGhvcmVkLWJ5OiBY aWFubWlhbyBRdSA8Y29vcGVyLnF1QGxpbnV4LmFsaWJhYmEuY29tPgpDby1hdXRob3JlZC1ieTog Q2hyaXN0b3BoIE3DvGxsbmVyIDxjaHJpc3RvcGgubXVlbGxuZXJAdnJ1bGwuZXU+Ci0tLQogLi4u L3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1iYXNlcy5jY8KgIMKgIMKgIHwgMTM5ICsrKysr KysrKysKIC4uLi9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuaCDCoCDCoCDCoCB8 wqAgMzEgKysrCiAuLi4vcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5jYyDCoCDC oCB8IDE2MCArKysrKysrKysrKwogLi4uL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy1zaGFw ZXMuaMKgIMKgIMKgIHwgwqAgMyArCiBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWls dGlucy5jYyDCoCDCoCB8wqAgNzAgKysrKysKIGdjYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9y LWJ1aWx0aW5zLmjCoCDCoCDCoCB8IMKgIDMgKwogZ2NjL2NvbmZpZy9yaXNjdi90LXJpc2N2wqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfCDCoCAxICsKIC4uLi9yaXNjdi90aGVhZC12 ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZiB8wqAgMzkgKysrCiBnY2MvY29uZmlnL3Jpc2N2 L3RoZWFkLXZlY3Rvci5tZMKgIMKgIMKgIMKgIMKgIMKgIMKgIHwgMjUzICsrKysrKysrKysrKysr KysrKwogLi4uL3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxiLXZzYi5jwqAgwqAgwqAgwqAgwqAg fMKgIDY4ICsrKysrCiAuLi4vcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGJ1LXZzYi5jIMKgIMKg IMKgIMKgIHzCoCA2OCArKysrKwogLi4uL3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxoLXZzaC5j wqAgwqAgwqAgwqAgwqAgfMKgIDY4ICsrKysrCiAuLi4vcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92 bGh1LXZzaC5jIMKgIMKgIMKgIMKgIHzCoCA2OCArKysrKwogLi4uL3Jpc2N2L3J2di94dGhlYWR2 ZWN0b3Ivdmx3LXZzdy5jwqAgwqAgwqAgwqAgwqAgfMKgIDY4ICsrKysrCiAuLi4vcmlzY3YvcnZ2 L3h0aGVhZHZlY3Rvci92bHd1LXZzdy5jIMKgIMKgIMKgIMKgIHzCoCA2OCArKysrKwogMTUgZmls ZXMgY2hhbmdlZCwgMTEwNyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL2Nv bmZpZy9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZgogY3JlYXRlIG1v ZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9y L3ZsYi12c2IuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsYnUtdnNiLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGgtdnNoLmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVh ZHZlY3Rvci92bGh1LXZzaC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3LXZzdy5jCiBjcmVhdGUgbW9kZSAxMDA2 NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3dS12 c3cuYwogCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlu cy1iYXNlcy5jYyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2Vz LmNjCmluZGV4IDQ2ZjFhMWRhMzNlLi4zZWJhNzk0Mzc1NyAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuY2MKKysrIGIvZ2NjL2NvbmZpZy9y aXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuY2MKQEAgLTIxMjUsNiArMjEyNSw4MyBA QCBwdWJsaWM6CiDCoCB9CiB9OwogCisvKiBJbXBsZW1lbnRzCisgKiB0aC52bChiL2gvdylbdV0u di90aC52cyhiL2gvdylbdV0udi90aC52bHMoYi9oL3cpW3VdLnYvdGgudnNzKGIvaC93KVt1XS52 LworICogdGgudmx4KGIvaC93KVt1XS52L3RoLnZzW3VdeChiL2gvdykudgorICogY29kZWdlbi7C oCAqLwordGVtcGxhdGU8Ym9vbCBTVE9SRV9QLCBsc3RfdHlwZSBMU1RfVFlQRSwgaW50IFVOU1BF Qz4KK2NsYXNzIHRoX2xvYWRzdG9yZV93aWR0aCA6IHB1YmxpYyBmdW5jdGlvbl9iYXNlCit7Citw dWJsaWM6CivCoCBib29sIGFwcGx5X3RhaWxfcG9saWN5X3AgKCkgY29uc3Qgb3ZlcnJpZGUgeyBy ZXR1cm4gIVNUT1JFX1A7IH0KK8KgIGJvb2wgYXBwbHlfbWFza19wb2xpY3lfcCAoKSBjb25zdCBv dmVycmlkZSB7IHJldHVybiAhU1RPUkVfUDsgfQorCivCoCB1bnNpZ25lZCBpbnQgY2FsbF9wcm9w ZXJ0aWVzIChjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmKSBjb25zdCBvdmVycmlkZQorwqAgewor wqAgwqAgaWYgKFNUT1JFX1ApCivCoCDCoCDCoCByZXR1cm4gQ1BfV1JJVEVfTUVNT1JZOworwqAg wqAgZWxzZQorwqAgwqAgwqAgcmV0dXJuIENQX1JFQURfTUVNT1JZOworwqAgfQorCivCoCBib29s IGNhbl9iZV9vdmVybG9hZGVkX3AgKGVudW0gcHJlZGljYXRpb25fdHlwZV9pbmRleCBwcmVkKSBj b25zdCBvdmVycmlkZQorwqAgeworwqAgwqAgaWYgKFNUT1JFX1AgfHwgTFNUX1RZUEUgPT0gTFNU X0lOREVYRUQpCivCoCDCoCDCoCByZXR1cm4gdHJ1ZTsKK8KgIMKgIHJldHVybiBwcmVkICE9IFBS RURfVFlQRV9ub25lOworwqAgfQorCivCoCBydHggZXhwYW5kIChmdW5jdGlvbl9leHBhbmRlciAm ZSkgY29uc3Qgb3ZlcnJpZGUKK8KgIHsKK8KgIMKgIGdjY19hc3NlcnQgKFRBUkdFVF9YVEhFQURW RUNUT1IpOworwqAgwqAgaWYgKExTVF9UWVBFID09IExTVF9JTkRFWEVEKQorwqAgwqAgwqAgewor IGlmIChTVE9SRV9QKQorIMKgIHJldHVybiBlLnVzZV9leGFjdF9pbnNuICgKKyDCoCDCoCBjb2Rl X2Zvcl9wcmVkX2luZGV4ZWRfc3RvcmVfd2lkdGggKFVOU1BFQywgVU5TUEVDLAorwqAgwqAgwqAg wqAgwqAgwqAgZS52ZWN0b3JfbW9kZSAoKSkpOworIGVsc2UKKyDCoCByZXR1cm4gZS51c2VfZXhh Y3RfaW5zbiAoCisgwqAgwqAgY29kZV9mb3JfcHJlZF9pbmRleGVkX2xvYWRfd2lkdGggKFVOU1BF QywgZS52ZWN0b3JfbW9kZSAoKSkpOworwqAgwqAgwqAgfQorwqAgwqAgZWxzZSBpZiAoTFNUX1RZ UEUgPT0gTFNUX1NUUklERUQpCivCoCDCoCDCoCB7CisgaWYgKFNUT1JFX1ApCisgwqAgcmV0dXJu IGUudXNlX2NvbnRpZ3VvdXNfc3RvcmVfaW5zbiAoCisgwqAgwqAgY29kZV9mb3JfcHJlZF9zdHJp ZGVkX3N0b3JlX3dpZHRoIChVTlNQRUMsIGUudmVjdG9yX21vZGUgKCkpKTsKKyBlbHNlCisgwqAg cmV0dXJuIGUudXNlX2NvbnRpZ3VvdXNfbG9hZF9pbnNuICgKKyDCoCDCoCBjb2RlX2Zvcl9wcmVk X3N0cmlkZWRfbG9hZF93aWR0aCAoVU5TUEVDLCBlLnZlY3Rvcl9tb2RlICgpKSk7CivCoCDCoCDC oCB9CivCoCDCoCBlbHNlCivCoCDCoCDCoCB7CisgaWYgKFNUT1JFX1ApCisgwqAgcmV0dXJuIGUu dXNlX2NvbnRpZ3VvdXNfc3RvcmVfaW5zbiAoCisgwqAgwqAgY29kZV9mb3JfcHJlZF9zdG9yZV93 aWR0aCAoVU5TUEVDLCBlLnZlY3Rvcl9tb2RlICgpKSk7CisgZWxzZQorIMKgIHJldHVybiBlLnVz ZV9jb250aWd1b3VzX2xvYWRfaW5zbiAoCisgwqAgwqAgY29kZV9mb3JfcHJlZF9tb3Zfd2lkdGgg KFVOU1BFQywgZS52ZWN0b3JfbW9kZSAoKSkpOworwqAgwqAgwqAgfQorwqAgfQorfTsKKworLyog SW1wbGVtZW50cyB2ZXh0Lngudi7CoCAqLworY2xhc3MgdGhfZXh0cmFjdCA6IHB1YmxpYyBmdW5j dGlvbl9iYXNlCit7CitwdWJsaWM6CivCoCBib29sIGFwcGx5X3ZsX3AgKCkgY29uc3Qgb3ZlcnJp ZGUgeyByZXR1cm4gZmFsc2U7IH0KK8KgIGJvb2wgYXBwbHlfdGFpbF9wb2xpY3lfcCAoKSBjb25z dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorwqAgYm9vbCBhcHBseV9tYXNrX3BvbGljeV9w ICgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CivCoCBib29sIHVzZV9tYXNrX3By ZWRpY2F0aW9uX3AgKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KK8KgIGJvb2wg aGFzX21lcmdlX29wZXJhbmRfcCAoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQor CivCoCBydHggZXhwYW5kIChmdW5jdGlvbl9leHBhbmRlciAmZSkgY29uc3Qgb3ZlcnJpZGUKK8Kg IHsKK8KgIMKgIGdjY19hc3NlcnQgKFRBUkdFVF9YVEhFQURWRUNUT1IpOworwqAgwqAgcmV0dXJu IGUudXNlX2V4YWN0X2luc24gKGNvZGVfZm9yX3ByZWRfdGhfZXh0cmFjdCAoZS52ZWN0b3JfbW9k ZSAoKSkpOworwqAgfQorfTsKKwogLyogQmVsb3cgaW1wbGVtZW50cyBhcmUgdmVjdG9yIGNyeXB0 byAqLwogLyogSW1wbGVtZW50cyB2YW5kbi5bdnYsdnhdICovCiBjbGFzcyB2YW5kbiA6IHB1Ymxp YyBmdW5jdGlvbl9iYXNlCkBAIC0yNTg3LDYgKzI2NjQsMzcgQEAgc3RhdGljIENPTlNURVhQUiBj b25zdCBzZWdfaW5kZXhlZF9sb2FkPFVOU1BFQ19PUkRFUkVEPiB2bG94c2VnX29iajsKIHN0YXRp YyBDT05TVEVYUFIgY29uc3Qgc2VnX2luZGV4ZWRfc3RvcmU8VU5TUEVDX1VOT1JERVJFRD4gdnN1 eHNlZ19vYmo7CiBzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHNlZ19pbmRleGVkX3N0b3JlPFVOU1BF Q19PUkRFUkVEPiB2c294c2VnX29iajsKIHN0YXRpYyBDT05TVEVYUFIgY29uc3QgdmxzZWdmZiB2 bHNlZ2ZmX29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZh bHNlLCBMU1RfVU5JVF9TVFJJREUsIFVOU1BFQ19USF9WTEI+IHZsYl9vYmo7CitzdGF0aWMgQ09O U1RFWFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0aDxmYWxzZSwgTFNUX1VOSVRfU1RSSURFLCBV TlNQRUNfVEhfVkxCVT4gdmxidV9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHRoX2xvYWRz dG9yZV93aWR0aDxmYWxzZSwgTFNUX1VOSVRfU1RSSURFLCBVTlNQRUNfVEhfVkxIPiB2bGhfb2Jq Oworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9V TklUX1NUUklERSwgVU5TUEVDX1RIX1ZMSFU+IHZsaHVfb2JqOworc3RhdGljIENPTlNURVhQUiBj b25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RI X1ZMVz4gdmx3X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRo PGZhbHNlLCBMU1RfVU5JVF9TVFJJREUsIFVOU1BFQ19USF9WTFdVPiB2bHd1X29iajsKK3N0YXRp YyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9VTklUX1NUUklE RSwgVU5TUEVDX1RIX1ZMQj4gdnNiX29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9h ZHN0b3JlX3dpZHRoPHRydWUsIExTVF9VTklUX1NUUklERSwgVU5TUEVDX1RIX1ZMSD4gdnNoX29i ajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9V TklUX1NUUklERSwgVU5TUEVDX1RIX1ZMVz4gdnN3X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29u c3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU0I+ IHZsc2Jfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFs c2UsIExTVF9TVFJJREVELCBVTlNQRUNfVEhfVkxTQlU+IHZsc2J1X29iajsKK3N0YXRpYyBDT05T VEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfU1RSSURFRCwgVU5TUEVD X1RIX1ZMU0g+IHZsc2hfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVf d2lkdGg8ZmFsc2UsIExTVF9TVFJJREVELCBVTlNQRUNfVEhfVkxTSFU+IHZsc2h1X29iajsKK3N0 YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfU1RSSURF RCwgVU5TUEVDX1RIX1ZMU1c+IHZsc3dfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9s b2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9TVFJJREVELCBVTlNQRUNfVEhfVkxTV1U+IHZsc3d1 X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExT VF9TVFJJREVELCBVTlNQRUNfVEhfVkxTQj4gdnNzYl9vYmo7CitzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHRoX2xvYWRzdG9yZV93aWR0aDx0cnVlLCBMU1RfU1RSSURFRCwgVU5TUEVDX1RIX1ZMU0g+ IHZzc2hfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lkdGg8dHJ1 ZSwgTFNUX1NUUklERUQsIFVOU1BFQ19USF9WTFNXPiB2c3N3X29iajsKK3N0YXRpYyBDT05TVEVY UFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RI X1ZMWEI+IHZseGJfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lk dGg8ZmFsc2UsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYQlU+IHZseGJ1X29iajsKK3N0YXRp YyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1RfSU5ERVhFRCwg VU5TUEVDX1RIX1ZMWEg+IHZseGhfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fk c3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYSFU+IHZseGh1X29i ajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPGZhbHNlLCBMU1Rf SU5ERVhFRCwgVU5TUEVDX1RIX1ZMWFc+IHZseHdfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25z dCB0aF9sb2Fkc3RvcmVfd2lkdGg8ZmFsc2UsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYV1U+ IHZseHd1X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRy dWUsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVkxYQj4gdnN4Yl9vYmo7CitzdGF0aWMgQ09OU1RF WFBSIGNvbnN0IHRoX2xvYWRzdG9yZV93aWR0aDx0cnVlLCBMU1RfSU5ERVhFRCwgVU5TUEVDX1RI X1ZMWEg+IHZzeGhfb2JqOworc3RhdGljIENPTlNURVhQUiBjb25zdCB0aF9sb2Fkc3RvcmVfd2lk dGg8dHJ1ZSwgTFNUX0lOREVYRUQsIFVOU1BFQ19USF9WTFhXPiB2c3h3X29iajsKK3N0YXRpYyBD T05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9JTkRFWEVELCBVTlNQ RUNfVEhfVlNVWEI+IHZzdXhiX29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0 b3JlX3dpZHRoPHRydWUsIExTVF9JTkRFWEVELCBVTlNQRUNfVEhfVlNVWEg+IHZzdXhoX29iajsK K3N0YXRpYyBDT05TVEVYUFIgY29uc3QgdGhfbG9hZHN0b3JlX3dpZHRoPHRydWUsIExTVF9JTkRF WEVELCBVTlNQRUNfVEhfVlNVWFc+IHZzdXh3X29iajsKK3N0YXRpYyBDT05TVEVYUFIgY29uc3Qg dGhfZXh0cmFjdCB2ZXh0X3hfdl9vYmo7CiAKIC8qIENyeXB0byBWZWN0b3IgKi8KIHN0YXRpYyBD T05TVEVYUFIgY29uc3QgdmFuZG4gdmFuZG5fb2JqOwpAQCAtMjg3OCw2ICsyOTg2LDM3IEBAIEJB U0UgKHZsb3hzZWcpCiBCQVNFICh2c3V4c2VnKQogQkFTRSAodnNveHNlZykKIEJBU0UgKHZsc2Vn ZmYpCitCQVNFICh2bGIpCitCQVNFICh2bGgpCitCQVNFICh2bHcpCitCQVNFICh2bGJ1KQorQkFT RSAodmxodSkKK0JBU0UgKHZsd3UpCitCQVNFICh2c2IpCitCQVNFICh2c2gpCitCQVNFICh2c3cp CitCQVNFICh2bHNiKQorQkFTRSAodmxzaCkKK0JBU0UgKHZsc3cpCitCQVNFICh2bHNidSkKK0JB U0UgKHZsc2h1KQorQkFTRSAodmxzd3UpCitCQVNFICh2c3NiKQorQkFTRSAodnNzaCkKK0JBU0Ug KHZzc3cpCitCQVNFICh2bHhiKQorQkFTRSAodmx4aCkKK0JBU0UgKHZseHcpCitCQVNFICh2bHhi dSkKK0JBU0UgKHZseGh1KQorQkFTRSAodmx4d3UpCitCQVNFICh2c3hiKQorQkFTRSAodnN4aCkK K0JBU0UgKHZzeHcpCitCQVNFICh2c3V4YikKK0JBU0UgKHZzdXhoKQorQkFTRSAodnN1eHcpCitC QVNFICh2ZXh0X3hfdikKIC8qIENyeXB0byB2ZWN0b3IgKi8KIEJBU0UgKHZhbmRuKQogQkFTRSAo dmJyZXYpCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlu cy1iYXNlcy5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMu aAppbmRleCAxMTIyZTM4MDFhNy4uNTY1YTAzMTFkMmIgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcv cmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWJhc2VzLmgKKysrIGIvZ2NjL2NvbmZpZy9yaXNj di9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtYmFzZXMuaApAQCAtMjk5LDYgKzI5OSwzNyBAQCBleHRl cm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdmxveHNlZzsKIGV4dGVybiBjb25zdCBmdW5j dGlvbl9iYXNlICpjb25zdCB2c3V4c2VnOwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNv bnN0IHZzb3hzZWc7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdmxzZWdmZjsK K2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bGI7CitleHRlcm4gY29uc3QgZnVu Y3Rpb25fYmFzZSAqY29uc3QgdmxoOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0 IHZsdzsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bGJ1OworZXh0ZXJuIGNv bnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZsaHU7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFz ZSAqY29uc3Qgdmx3dTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c2I7Citl eHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnNoOworZXh0ZXJuIGNvbnN0IGZ1bmN0 aW9uX2Jhc2UgKmNvbnN0IHZzdzsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2 bHNiOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZsc2g7CitleHRlcm4gY29u c3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdmxzdzsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNl ICpjb25zdCB2bHNidTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHNodTsK K2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHN3dTsKK2V4dGVybiBjb25zdCBm dW5jdGlvbl9iYXNlICpjb25zdCB2c3NiOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNv bnN0IHZzc2g7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3QgdnNzdzsKK2V4dGVy biBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHhiOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9u X2Jhc2UgKmNvbnN0IHZseGg7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fYmFzZSAqY29uc3Qgdmx4 dzsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHhidTsKK2V4dGVybiBjb25z dCBmdW5jdGlvbl9iYXNlICpjb25zdCB2bHhodTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNl ICpjb25zdCB2bHh3dTsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3hiOwor ZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZzeGg7CitleHRlcm4gY29uc3QgZnVu Y3Rpb25fYmFzZSAqY29uc3QgdnN4dzsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25z dCB2c3V4YjsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3V4aDsKK2V4dGVy biBjb25zdCBmdW5jdGlvbl9iYXNlICpjb25zdCB2c3V4dzsKK2V4dGVybiBjb25zdCBmdW5jdGlv bl9iYXNlICpjb25zdCB2ZXh0X3hfdjsKIC8qIEJlbG93IGZ1bmN0aW9uX2Jhc2UgYXJlIFZlY3Ry byBDcnlwdG8qLwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZhbmRuOwogZXh0 ZXJuIGNvbnN0IGZ1bmN0aW9uX2Jhc2UgKmNvbnN0IHZicmV2OwpkaWZmIC0tZ2l0IGEvZ2NjL2Nv bmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmNjIGIvZ2NjL2NvbmZpZy9y aXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtc2hhcGVzLmNjCmluZGV4IDFlNGY0ZDUzZGU2Li44 ZTkwYjE3YTk0YiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVp bHRpbnMtc2hhcGVzLmNjCisrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0 aW5zLXNoYXBlcy5jYwpAQCAtMjExLDYgKzIxMSwxNDYgQEAgc3RydWN0IGluZGV4ZWRfbG9hZHN0 b3JlX2RlZiA6IHB1YmxpYyBmdW5jdGlvbl9zaGFwZQogwqAgfQogfTsKIAorLyogQWRkIG9uZSBm dW5jdGlvbiBpbnN0YW5jZSBmb3IgR1JPVVAsIHVzaW5nIG9wZXJhbmQgc3VmZml4IGF0IGluZGV4 IE9JLAorIMKgIG1vZGUgc3VmZml4IGF0IGluZGV4IFBBSVIgJiYgYmkgYW5kIHByZWRpY2F0aW9u IHN1ZmZpeCBhdCBpbmRleCBwcmVkX2lkeC7CoCAqLworc3RhdGljIHZvaWQKK2J1aWxkX3RoX2xv YWRzdG9yZSAoZnVuY3Rpb25fYnVpbGRlciAmYiwgY29uc3QgZnVuY3Rpb25fZ3JvdXBfaW5mbyAm Z3JvdXAsCivCoCDCoCDCoCB1bnNpZ25lZCBpbnQgcHJlZF9pZHgsIHVuc2lnbmVkIGludCB2ZWNf dHlwZV9pZHgpCit7CivCoCBhdXRvX3ZlYzx0cmVlLCA1PiBhcmd1bWVudF90eXBlczsKK8KgIGZ1 bmN0aW9uX2luc3RhbmNlIGZ1bmN0aW9uX2luc3RhbmNlIChncm91cC5iYXNlX25hbWUsICpncm91 cC5iYXNlLAorIMKgIMKgIMKgIMKgIMKgICpncm91cC5zaGFwZSwKKyDCoCDCoCDCoCDCoCDCoCBn cm91cC5vcHNfaW5mb3MudHlwZXNbdmVjX3R5cGVfaWR4XSwKKyDCoCDCoCDCoCDCoCDCoCBncm91 cC5wcmVkc1twcmVkX2lkeF0sICZncm91cC5vcHNfaW5mb3MpOworwqAgdHJlZSByZXR1cm5fdHlw ZSA9IGdyb3VwLm9wc19pbmZvcy5yZXQuZ2V0X3RyZWVfdHlwZSAoCivCoCDCoCBncm91cC5vcHNf aW5mb3MudHlwZXNbdmVjX3R5cGVfaWR4XS5pbmRleCk7CivCoCBiLmFsbG9jYXRlX2FyZ3VtZW50 X3R5cGVzIChmdW5jdGlvbl9pbnN0YW5jZSwgYXJndW1lbnRfdHlwZXMpOworwqAgYi5hcHBseV9w cmVkaWNhdGlvbiAoZnVuY3Rpb25faW5zdGFuY2UsIHJldHVybl90eXBlLCBhcmd1bWVudF90eXBl cyk7CisKK8KgIGlmIChUQVJHRVRfWFRIRUFEVkVDVE9SICYmICFjaGVja190eXBlIChyZXR1cm5f dHlwZSwgYXJndW1lbnRfdHlwZXMpKQorwqAgwqAgcmV0dXJuOworCivCoCB0cmVlIHR5cGUgPSBi dWlsdGluX3R5cGVzW2dyb3VwLm9wc19pbmZvcy50eXBlc1t2ZWNfdHlwZV9pZHhdLmluZGV4XS52 ZWN0b3I7CivCoCBpZiAoc3Ryc3RyIChncm91cC5iYXNlX25hbWUsICJsIikKK8KgIMKgIMKgICYm IHN0cnN0ciAoZ3JvdXAuYmFzZV9uYW1lLCAidSIpCivCoCDCoCDCoCAmJiAhVFlQRV9VTlNJR05F RCAoVFJFRV9UWVBFICh0eXBlKSkpCivCoCDCoCByZXR1cm47CisKK8KgIGlmIChzdHJzdHIgKGdy b3VwLmJhc2VfbmFtZSwgImwiKQorwqAgwqAgwqAgJiYgIXN0cnN0ciAoZ3JvdXAuYmFzZV9uYW1l LCAidSIpCivCoCDCoCDCoCAmJiBUWVBFX1VOU0lHTkVEIChUUkVFX1RZUEUgKHR5cGUpKSkKK8Kg IMKgIHJldHVybjsKKworwqAgbWFjaGluZV9tb2RlIG1vZGUgPSBUWVBFX01PREUgKHR5cGUpOwor wqAgaW50IHNldyA9IEdFVF9NT0RFX0JJVFNJWkUgKEdFVF9NT0RFX0lOTkVSIChtb2RlKSk7CivC oCBpZiAoc3Ryc3RyIChncm91cC5iYXNlX25hbWUsICJoIikgJiYgc2V3ID09IDgpCivCoCDCoCBy ZXR1cm47CisKK8KgIGlmIChzdHJzdHIgKGdyb3VwLmJhc2VfbmFtZSwgInciKSAmJiAoc2V3ID09 IDggfHwgc2V3ID09MTYpKQorwqAgwqAgcmV0dXJuOworCivCoCBiLmFkZF9vdmVybG9hZGVkX2Z1 bmN0aW9uIChmdW5jdGlvbl9pbnN0YW5jZSwgKmdyb3VwLnNoYXBlKTsKK8KgIGIuYWRkX3VuaXF1 ZV9mdW5jdGlvbiAoZnVuY3Rpb25faW5zdGFuY2UsICgqZ3JvdXAuc2hhcGUpLCByZXR1cm5fdHlw ZSwKK8KgIMKgIGFyZ3VtZW50X3R5cGVzKTsKK30KKworLyogdGhfbG9hZHN0b3JlX3dpZHRoX2Rl ZiBjbGFzcy7CoCAqLworc3RydWN0IHRoX2xvYWRzdG9yZV93aWR0aF9kZWYgOiBwdWJsaWMgYnVp bGRfYmFzZQoreworIMKgIHZvaWQgYnVpbGQgKGZ1bmN0aW9uX2J1aWxkZXIgJmIsCisgwqAgwqAg wqAgY29uc3QgZnVuY3Rpb25fZ3JvdXBfaW5mbyAmZ3JvdXApIGNvbnN0IG92ZXJyaWRlCivCoCB7 CivCoCDCoCBmb3IgKHVuc2lnbmVkIGludCBwcmVkX2lkeCA9IDA7IGdyb3VwLnByZWRzW3ByZWRf aWR4XSAhPSBOVU1fUFJFRF9UWVBFUzsKKyDCoCDCoCDCoCArK3ByZWRfaWR4KQorwqAgwqAgwqAg eworIGZvciAodW5zaWduZWQgaW50IHZlY190eXBlX2lkeCA9IDA7CivCoCDCoCDCoCBncm91cC5v cHNfaW5mb3MudHlwZXNbdmVjX3R5cGVfaWR4XS5pbmRleCAhPSBOVU1fVkVDVE9SX1RZUEVTOwor wqAgwqAgwqAgKyt2ZWNfdHlwZV9pZHgpCisgwqAgeworIMKgIMKgIGJ1aWxkX3RoX2xvYWRzdG9y ZSAoYiwgZ3JvdXAsIHByZWRfaWR4LCB2ZWNfdHlwZV9pZHgpOworIMKgIH0KK8KgIMKgIMKgIH0K K8KgIH0KKworwqAgY2hhciAqZ2V0X25hbWUgKGZ1bmN0aW9uX2J1aWxkZXIgJmIsIGNvbnN0IGZ1 bmN0aW9uX2luc3RhbmNlICZpbnN0YW5jZSwKK8KgIMKgIGJvb2wgb3ZlcmxvYWRlZF9wKSBjb25z dCBvdmVycmlkZQorwqAgeworwqAgwqAgLyogUmV0dXJuIG51bGxwdHIgaWYgaXQgY2FuIG5vdCBi ZSBvdmVybG9hZGVkLsKgICovCivCoCDCoCBpZiAob3ZlcmxvYWRlZF9wICYmICFpbnN0YW5jZS5i YXNlLT5jYW5fYmVfb3ZlcmxvYWRlZF9wIChpbnN0YW5jZS5wcmVkKSkKK8KgIMKgIMKgIHJldHVy biBudWxscHRyOworCivCoCDCoCBiLmFwcGVuZF9uYW1lICgiX19yaXNjdl90aF8iKTsKK8KgIMKg IGIuYXBwZW5kX25hbWUgKGluc3RhbmNlLmJhc2VfbmFtZSk7CisKK8KgIMKgIC8qIHZvcF92IC0t PiB2b3Bfdl88dHlwZT4uwqAgKi8KK8KgIMKgIGlmICghb3ZlcmxvYWRlZF9wKQorwqAgwqAgwqAg eworIC8qIHZvcCAtLT4gdm9wX3YuwqAgKi8KKyBiLmFwcGVuZF9uYW1lIChvcGVyYW5kX3N1ZmZp eGVzW2luc3RhbmNlLm9wX2luZm8tPm9wXSk7CisgLyogdm9wX3YgLS0+IHZvcF92Xzx0eXBlPi7C oCAqLworIGIuYXBwZW5kX25hbWUgKHR5cGVfc3VmZml4ZXNbaW5zdGFuY2UudHlwZS5pbmRleF0u dmVjdG9yKTsKK8KgIMKgIMKgIH0KKworwqAgwqAgLyogQWNjb3JkaW5nIHRvIHJ2di1pbnRyaW5z aWMtZG9jLCBpdCBkb2VzIG5vdCBhZGQgIl9tIiBzdWZmaXgKKyDCoCDCoCDCoCBmb3Igdm9wX20g QysrIG92ZXJsb2FkZWQgQVBJLsKgICovCivCoCDCoCBpZiAob3ZlcmxvYWRlZF9wICYmIGluc3Rh bmNlLnByZWQgPT0gUFJFRF9UWVBFX20pCivCoCDCoCDCoCByZXR1cm4gYi5maW5pc2hfbmFtZSAo KTsKK8KgIMKgIGIuYXBwZW5kX25hbWUgKHByZWRpY2F0aW9uX3N1ZmZpeGVzW2luc3RhbmNlLnBy ZWRdKTsKK8KgIMKgIHJldHVybiBiLmZpbmlzaF9uYW1lICgpOworwqAgfQorfTsKKworCisvKiB0 aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aF9kZWYgY2xhc3MuwqAgKi8KK3N0cnVjdCB0aF9pbmRl eGVkX2xvYWRzdG9yZV93aWR0aF9kZWYgOiBwdWJsaWMgZnVuY3Rpb25fc2hhcGUKK3sKK8KgIHZv aWQgYnVpbGQgKGZ1bmN0aW9uX2J1aWxkZXIgJmIsCisgwqAgwqAgwqAgY29uc3QgZnVuY3Rpb25f Z3JvdXBfaW5mbyAmZ3JvdXApIGNvbnN0IG92ZXJyaWRlCivCoCB7CivCoCDCoCBmb3IgKHVuc2ln bmVkIGludCBwcmVkX2lkeCA9IDA7IGdyb3VwLnByZWRzW3ByZWRfaWR4XSAhPSBOVU1fUFJFRF9U WVBFUzsKK8KgICsrcHJlZF9pZHgpCivCoCDCoCDCoCB7CisgZm9yICh1bnNpZ25lZCBpbnQgdmVj X3R5cGVfaWR4ID0gMDsKK8KgIMKgIMKgIGdyb3VwLm9wc19pbmZvcy50eXBlc1t2ZWNfdHlwZV9p ZHhdLmluZGV4ICE9IE5VTV9WRUNUT1JfVFlQRVM7CivCoCDCoCDCoCArK3ZlY190eXBlX2lkeCkK KyDCoCB7CivCoCDCoCB0cmVlIGluZGV4X3R5cGUgPSBncm91cC5vcHNfaW5mb3MuYXJnc1sxXS5n ZXRfdHJlZV90eXBlICgKKyDCoCDCoCDCoCBncm91cC5vcHNfaW5mb3MudHlwZXNbdmVjX3R5cGVf aWR4XS5pbmRleCk7CivCoCDCoCBpZiAoIWluZGV4X3R5cGUpCisgwqAgwqAgwqAgY29udGludWU7 CivCoCDCoCBidWlsZF90aF9sb2Fkc3RvcmUgKGIsIGdyb3VwLCBwcmVkX2lkeCwgdmVjX3R5cGVf aWR4KTsKKyDCoCB9CivCoCDCoCDCoCB9CivCoCB9CisKK8KgIGNoYXIgKmdldF9uYW1lIChmdW5j dGlvbl9idWlsZGVyICZiLCBjb25zdCBmdW5jdGlvbl9pbnN0YW5jZSAmaW5zdGFuY2UsCivCoCDC oCBib29sIG92ZXJsb2FkZWRfcCkgY29uc3Qgb3ZlcnJpZGUKK8KgIHsKKworwqAgwqAgLyogUmV0 dXJuIG51bGxwdHIgaWYgaXQgY2FuIG5vdCBiZSBvdmVybG9hZGVkLsKgICovCivCoCDCoCBpZiAo b3ZlcmxvYWRlZF9wICYmICFpbnN0YW5jZS5iYXNlLT5jYW5fYmVfb3ZlcmxvYWRlZF9wIChpbnN0 YW5jZS5wcmVkKSkKK8KgIMKgIMKgIHJldHVybiBudWxscHRyOworCivCoCDCoCBiLmFwcGVuZF9u YW1lICgiX19yaXNjdl90aF8iKTsKK8KgIMKgIGIuYXBwZW5kX25hbWUgKGluc3RhbmNlLmJhc2Vf bmFtZSk7CivCoCDCoCAvKiB2b3BfdiAtLT4gdm9wX3ZfPHR5cGU+LsKgICovCivCoCDCoCBpZiAo IW92ZXJsb2FkZWRfcCkKK8KgIMKgIMKgIHsKKyAvKiB2b3AgLS0+IHZvcF92LsKgICovCisgYi5h cHBlbmRfbmFtZSAob3BlcmFuZF9zdWZmaXhlc1tpbnN0YW5jZS5vcF9pbmZvLT5vcF0pOworIC8q IHZvcF92IC0tPiB2b3Bfdl88dHlwZT4uwqAgKi8KKyBiLmFwcGVuZF9uYW1lICh0eXBlX3N1ZmZp eGVzW2luc3RhbmNlLnR5cGUuaW5kZXhdLnZlY3Rvcik7CivCoCDCoCDCoCB9CisKK8KgIMKgIC8q IEFjY29yZGluZyB0byBydnYtaW50cmluc2ljLWRvYywgaXQgZG9lcyBub3QgYWRkICJfbSIgc3Vm Zml4CisgwqAgwqAgwqAgZm9yIHZvcF9tIEMrKyBvdmVybG9hZGVkIEFQSS7CoCAqLworwqAgwqAg aWYgKG92ZXJsb2FkZWRfcCAmJiBpbnN0YW5jZS5wcmVkID09IFBSRURfVFlQRV9tKQorwqAgwqAg wqAgcmV0dXJuIGIuZmluaXNoX25hbWUgKCk7CivCoCDCoCBiLmFwcGVuZF9uYW1lIChwcmVkaWNh dGlvbl9zdWZmaXhlc1tpbnN0YW5jZS5wcmVkXSk7CivCoCDCoCByZXR1cm4gYi5maW5pc2hfbmFt ZSAoKTsKK8KgIH0KK307CisKIC8qIGFsdV9kZWYgY2xhc3MuwqAgKi8KIHN0cnVjdCBhbHVfZGVm IDogcHVibGljIGJ1aWxkX2Jhc2UKIHsKQEAgLTYzMiw2ICs3NzIsMjMgQEAgc3RydWN0IHJlZHVj X2FsdV9kZWYgOiBwdWJsaWMgYnVpbGRfYmFzZQogwqAgfQogfTsKIAorLyogdGhfZXh0cmFjdF9k ZWYgY2xhc3MuwqAgKi8KK3N0cnVjdCB0aF9leHRyYWN0X2RlZiA6IHB1YmxpYyBidWlsZF9iYXNl Cit7CivCoCBjaGFyICpnZXRfbmFtZSAoZnVuY3Rpb25fYnVpbGRlciAmYiwgY29uc3QgZnVuY3Rp b25faW5zdGFuY2UgJmluc3RhbmNlLAorwqAgwqAgwqAgYm9vbCBvdmVybG9hZGVkX3ApIGNvbnN0 IG92ZXJyaWRlCivCoCB7CivCoCDCoCBiLmFwcGVuZF9uYW1lICgiX19yaXNjdl90aF8iKTsKK8Kg IMKgIGIuYXBwZW5kX25hbWUgKGluc3RhbmNlLmJhc2VfbmFtZSk7CisKK8KgIMKgIGlmIChvdmVy bG9hZGVkX3ApCivCoCDCoCDCoCByZXR1cm4gYi5maW5pc2hfbmFtZSAoKTsKK8KgIMKgIGIuYXBw ZW5kX25hbWUgKHR5cGVfc3VmZml4ZXNbaW5zdGFuY2UudHlwZS5pbmRleF0udmVjdG9yKTsKK8Kg IMKgIGIuYXBwZW5kX25hbWUgKHR5cGVfc3VmZml4ZXNbaW5zdGFuY2UudHlwZS5pbmRleF0uc2Nh bGFyKTsKK8KgIMKgIHJldHVybiBiLmZpbmlzaF9uYW1lICgpOworwqAgfQorfTsKKwogLyogc2Nh bGFyX21vdmVfZGVmIGNsYXNzLsKgICovCiBzdHJ1Y3Qgc2NhbGFyX21vdmVfZGVmIDogcHVibGlj IGJ1aWxkX2Jhc2UKIHsKQEAgLTEwOTQsNiArMTI1MSw4IEBAIFNIQVBFKHZzZXR2bCwgdnNldHZs KQogU0hBUEUodnNldHZsLCB2c2V0dmxtYXgpCiBTSEFQRShsb2Fkc3RvcmUsIGxvYWRzdG9yZSkK IFNIQVBFKGluZGV4ZWRfbG9hZHN0b3JlLCBpbmRleGVkX2xvYWRzdG9yZSkKK1NIQVBFKHRoX2xv YWRzdG9yZV93aWR0aCwgdGhfbG9hZHN0b3JlX3dpZHRoKQorU0hBUEUodGhfaW5kZXhlZF9sb2Fk c3RvcmVfd2lkdGgsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoKQogU0hBUEUoYWx1LCBhbHUp CiBTSEFQRShhbHVfZnJtLCBhbHVfZnJtKQogU0hBUEUod2lkZW5fYWx1LCB3aWRlbl9hbHUpCkBA IC0xMTA2LDYgKzEyNjUsNyBAQCBTSEFQRShtb3ZlLCBtb3ZlKQogU0hBUEUobWFza19hbHUsIG1h c2tfYWx1KQogU0hBUEUocmVkdWNfYWx1LCByZWR1Y19hbHUpCiBTSEFQRShyZWR1Y19hbHVfZnJt LCByZWR1Y19hbHVfZnJtKQorU0hBUEUodGhfZXh0cmFjdCwgdGhfZXh0cmFjdCkKIFNIQVBFKHNj YWxhcl9tb3ZlLCBzY2FsYXJfbW92ZSkKIFNIQVBFKHZ1bmRlZmluZWQsIHZ1bmRlZmluZWQpCiBT SEFQRShtaXNjLCBtaXNjKQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0 b3ItYnVpbHRpbnMtc2hhcGVzLmggYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWls dGlucy1zaGFwZXMuaAppbmRleCBhYzJhMjhjZTAxNy4uYTc2MjRkMGZhYmQgMTAwNjQ0Ci0tLSBh L2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5oCisrKyBiL2dj Yy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLXNoYXBlcy5oCkBAIC0yOCw2ICsy OCw4IEBAIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgdnNldHZsOwogZXh0ZXJu IGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCB2c2V0dmxtYXg7CiBleHRlcm4gY29uc3QgZnVu Y3Rpb25fc2hhcGUgKmNvbnN0IGxvYWRzdG9yZTsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFw ZSAqY29uc3QgaW5kZXhlZF9sb2Fkc3RvcmU7CitleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUg KmNvbnN0IHRoX2xvYWRzdG9yZV93aWR0aDsKK2V4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAq Y29uc3QgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGg7CiBleHRlcm4gY29uc3QgZnVuY3Rpb25f c2hhcGUgKmNvbnN0IGFsdTsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3QgYWx1 X2ZybTsKIGV4dGVybiBjb25zdCBmdW5jdGlvbl9zaGFwZSAqY29uc3Qgd2lkZW5fYWx1OwpAQCAt NDEsNiArNDMsNyBAQCBleHRlcm4gY29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IG1hc2tfYWx1 OwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCByZWR1Y19hbHU7CiBleHRlcm4g Y29uc3QgZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHJlZHVjX2FsdV9mcm07CiBleHRlcm4gY29uc3Qg ZnVuY3Rpb25fc2hhcGUgKmNvbnN0IHNjYWxhcl9tb3ZlOworZXh0ZXJuIGNvbnN0IGZ1bmN0aW9u X3NoYXBlICpjb25zdCB0aF9leHRyYWN0OwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpj b25zdCB2dW5kZWZpbmVkOwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCBtaXNj OwogZXh0ZXJuIGNvbnN0IGZ1bmN0aW9uX3NoYXBlICpjb25zdCB2c2V0OwpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuY2MgYi9nY2MvY29uZmlnL3Jp c2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5jYwppbmRleCAyNWUwYjZlNTZkZS4uNDRiOWZlYzE4 OTggMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmNj CisrKyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YtdmVjdG9yLWJ1aWx0aW5zLmNjCkBAIC05MzQs NiArOTM0LDMyIEBAIHN0YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2X2FyZ190eXBlX2luZm8gZXh0 X3ZjcmVhdGVfYXJnc1tdCiDCoCA9IHtydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0VfdmVjdG9y KSwKwqAgwqAgwqAgcnZ2X2FyZ190eXBlX2luZm9fZW5kfTsKIAorLyogQSBsaXN0IG9mIGFyZ3Mg Zm9yIHZlY3Rvcl90eXBlIGZ1bmMgKGNvbnN0IHNjYWxhcl90eXBlICosIHNpemVfdCkKKyAqIGZ1 bmN0aW9uLsKgICovCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2dl9hcmdfdHlwZV9pbmZvIHNj YWxhcl9jb25zdF9wdHJfc2l6ZV9hcmdzW10KK8KgID0ge3J2dl9hcmdfdHlwZV9pbmZvIChSVlZf QkFTRV9zY2FsYXJfY29uc3RfcHRyKSwKKyDCoCDCoCBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JB U0Vfc2l6ZSksIHJ2dl9hcmdfdHlwZV9pbmZvX2VuZH07CisKKy8qIEEgbGlzdCBvZiBhcmdzIGZv ciB2ZWN0b3JfdHlwZSBmdW5jIChjb25zdCBzY2FsYXJfdHlwZSAqLCBlZXc4X2luZGV4X3R5cGUp CisgKiBmdW5jdGlvbi7CoCAqLworc3RhdGljIENPTlNURVhQUiBjb25zdCBydnZfYXJnX3R5cGVf aW5mbyBzY2FsYXJfY29uc3RfcHRyX2luZGV4X2FyZ3NbXQorwqAgPSB7cnZ2X2FyZ190eXBlX2lu Zm8gKFJWVl9CQVNFX3NjYWxhcl9jb25zdF9wdHIpLAorIMKgIMKgIHJ2dl9hcmdfdHlwZV9pbmZv IChSVlZfQkFTRV91bnNpZ25lZF92ZWN0b3IpLCBydnZfYXJnX3R5cGVfaW5mb19lbmR9OworCisv KiBBIGxpc3Qgb2YgYXJncyBmb3Igdm9pZCBmdW5jIChzY2FsYXJfdHlwZSAqLCBlZXc4X2luZGV4 X3R5cGUsIHZlY3Rvcl90eXBlKQorICogZnVuY3Rpb24uwqAgKi8KK3N0YXRpYyBDT05TVEVYUFIg Y29uc3QgcnZ2X2FyZ190eXBlX2luZm8gc2NhbGFyX3B0cl9pbmRleF9hcmdzW10KK8KgID0ge3J2 dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV9zY2FsYXJfcHRyKSwKKyDCoCDCoCBydnZfYXJnX3R5 cGVfaW5mbyAoUlZWX0JBU0VfdW5zaWduZWRfdmVjdG9yKSwKKyDCoCDCoCBydnZfYXJnX3R5cGVf aW5mbyAoUlZWX0JBU0VfdmVjdG9yKSwgcnZ2X2FyZ190eXBlX2luZm9fZW5kfTsKKworLyogQSBs aXN0IG9mIGFyZ3MgZm9yIHZvaWQgZnVuYyAoc2NhbGFyX3R5cGUgKiwgc2l6ZV90LCB2ZWN0b3Jf dHlwZSkKKyAqIGZ1bmN0aW9uLsKgICovCitzdGF0aWMgQ09OU1RFWFBSIGNvbnN0IHJ2dl9hcmdf dHlwZV9pbmZvIHNjYWxhcl9wdHJfc2l6ZV9hcmdzW10KK8KgID0ge3J2dl9hcmdfdHlwZV9pbmZv IChSVlZfQkFTRV9zY2FsYXJfcHRyKSwKKyDCoCDCoCBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JB U0Vfc2l6ZSksIHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV92ZWN0b3IpLAorIMKgIMKgIHJ2 dl9hcmdfdHlwZV9pbmZvX2VuZH07CisKIC8qIEEgbGlzdCBvZiBub25lIHByZWRzIHRoYXQgd2ls bCBiZSByZWdpc3RlcmVkIGZvciBpbnRyaW5zaWMgZnVuY3Rpb25zLsKgICovCiBzdGF0aWMgQ09O U1RFWFBSIGNvbnN0IHByZWRpY2F0aW9uX3R5cGVfaW5kZXggbm9uZV9wcmVkc1tdCiDCoCA9IHtQ UkVEX1RZUEVfbm9uZSwgTlVNX1BSRURfVFlQRVN9OwpAQCAtMTQ1NSw2ICsxNDgxLDE0IEBAIHN0 YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2X29wX2luZm8gaXVfc2hpZnRfdnZ2X29wcwrCoCDCoCDC oCBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0VfdmVjdG9yKSwgLyogUmV0dXJuIHR5cGUgKi8K wqAgwqAgwqAgc2hpZnRfdnZfYXJncyAvKiBBcmdzICovfTsKIAorLyogQSBzdGF0aWMgb3BlcmFu ZCBpbmZvcm1hdGlvbiBmb3Igc2NhbGFyX3R5cGUgZnVuYyAodmVjdG9yX3R5cGUsIHNpemVfdCkK KyAqIGZ1bmN0aW9uIHJlZ2lzdHJhdGlvbi4gKi8KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2 X29wX2luZm8gaXVfeF9zX3Vfb3BzCivCoCA9IHtpdV9vcHMswqAgwqAgwqAgwqAgwqAgLyogVHlw ZXMgKi8KKyDCoCDCoCBPUF9UWVBFX3Z4LMKgIMKgIMKgIMKgIC8qIFN1ZmZpeCAqLworIMKgIMKg IHJ2dl9hcmdfdHlwZV9pbmZvIChSVlZfQkFTRV9zY2FsYXIpLCAvKiBSZXR1cm4gdHlwZSAqLwor IMKgIMKgIHZfc2l6ZV9hcmdzIC8qIEFyZ3MgKi99OworCiAvKiBBIHN0YXRpYyBvcGVyYW5kIGlu Zm9ybWF0aW9uIGZvciB2ZWN0b3JfdHlwZSBmdW5jICh2ZWN0b3JfdHlwZSwgc2l6ZV90KQrCoCAq IGZ1bmN0aW9uIHJlZ2lzdHJhdGlvbi4gKi8KIHN0YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2X29w X2luZm8gaXVfc2hpZnRfdnZ4X29wcwpAQCAtMjYzOCw2ICsyNjcyLDM4IEBAIHN0YXRpYyBDT05T VEVYUFIgY29uc3QgcnZ2X29wX2luZm8gYWxsX3ZfdmNyZWF0ZV9sbXVsNF94Ml9vcHMKwqAgwqAg wqAgcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3ZsbXVsX2V4dF94MiksIC8qIFJldHVybiB0 eXBlICovCsKgIMKgIMKgIGV4dF92Y3JlYXRlX2FyZ3MgLyogQXJncyAqL307CiAKKy8qIEEgc3Rh dGljIG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZlY3Rvcl90eXBlIGZ1bmMgKGNvbnN0IHNjYWxh cl90eXBlICosCisgKiBzaXplX3QpIGZ1bmN0aW9uIHJlZ2lzdHJhdGlvbi7CoCAqLworc3RhdGlj IENPTlNURVhQUiBjb25zdCBydnZfb3BfaW5mbyBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3NpemVf b3BzCivCoCA9IHthbGxfb3BzLMKgIMKgIMKgIC8qIFR5cGVzwqAgKi8KKyDCoCDCoCBPUF9UWVBF X3YswqAgwqAgwqAgLyogU3VmZml4wqAgKi8KKyDCoCDCoCBydnZfYXJnX3R5cGVfaW5mbyAoUlZW X0JBU0VfdmVjdG9yKSwgLyogUmV0dXJuIHR5cGXCoCAqLworIMKgIMKgIHNjYWxhcl9jb25zdF9w dHJfc2l6ZV9hcmdzIC8qIEFyZ3MgKi99OworCisvKiBBIHN0YXRpYyBvcGVyYW5kIGluZm9ybWF0 aW9uIGZvciB2b2lkIGZ1bmMgKHNjYWxhcl90eXBlICosIHNpemVfdCwKKyAqIHZlY3Rvcl90eXBl KSBmdW5jdGlvbiByZWdpc3RyYXRpb24uwqAgKi8KK3N0YXRpYyBDT05TVEVYUFIgY29uc3QgcnZ2 X29wX2luZm8gYWxsX3Zfc2NhbGFyX3B0cl9zaXplX29wcworwqAgPSB7YWxsX29wcyzCoCDCoCAv KiBUeXBlc8KgICovCisgwqAgwqAgT1BfVFlQRV92LMKgIMKgIC8qIFN1ZmZpeMKgICovCisgwqAg wqAgcnZ2X2FyZ190eXBlX2luZm8gKFJWVl9CQVNFX3ZvaWQpLCAvKiBSZXR1cm4gdHlwZcKgICov CisgwqAgwqAgc2NhbGFyX3B0cl9zaXplX2FyZ3MgLyogQXJncyAqL307CisKKy8qIEEgc3RhdGlj IG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZlY3Rvcl90eXBlIGZ1bmMgKGNvbnN0IHNjYWxhcl90 eXBlICosCisgKiBpbmRleF90eXBlKSBmdW5jdGlvbiByZWdpc3RyYXRpb24uwqAgKi8KK3N0YXRp YyBDT05TVEVYUFIgY29uc3QgcnZ2X29wX2luZm8gYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9pbmRl eF9vcHMKK8KgID0ge2FsbF9vcHMswqAgwqAgwqAgLyogVHlwZXPCoCAqLworIMKgIMKgIE9QX1RZ UEVfdizCoCDCoCDCoCAvKiBTdWZmaXjCoCAqLworIMKgIMKgIHJ2dl9hcmdfdHlwZV9pbmZvIChS VlZfQkFTRV92ZWN0b3IpLCAvKiBSZXR1cm4gdHlwZcKgICovCisgwqAgwqAgc2NhbGFyX2NvbnN0 X3B0cl9pbmRleF9hcmdzIC8qIEFyZ3MgKi99OworCisvKiBBIHN0YXRpYyBvcGVyYW5kIGluZm9y bWF0aW9uIGZvciB2b2lkIGZ1bmMgKHNjYWxhcl90eXBlICosIGluZGV4X3R5cGUsCisgKiB2ZWN0 b3JfdHlwZSkgZnVuY3Rpb24gcmVnaXN0cmF0aW9uLsKgICovCitzdGF0aWMgQ09OU1RFWFBSIGNv bnN0IHJ2dl9vcF9pbmZvIGFsbF92X3NjYWxhcl9wdHJfaW5kZXhfb3BzCivCoCA9IHthbGxfb3Bz LMKgIMKgIC8qIFR5cGVzwqAgKi8KKyDCoCDCoCBPUF9UWVBFX3YswqAgwqAgLyogU3VmZml4wqAg Ki8KKyDCoCDCoCBydnZfYXJnX3R5cGVfaW5mbyAoUlZWX0JBU0Vfdm9pZCksIC8qIFJldHVybiB0 eXBlwqAgKi8KKyDCoCDCoCBzY2FsYXJfcHRyX2luZGV4X2FyZ3MgLyogQXJncyAqL307CisKIC8q IEEgc3RhdGljIG9wZXJhbmQgaW5mb3JtYXRpb24gZm9yIHZlY3Rvcl90eXBlIGZ1bmMgKHZlY3Rv cl90eXBlKS4KwqAgwqAgU29tZSBpbnMganVzdCBzdXBwb3J0cyBTRVc9MzIsIHN1Y2ggYXMgY3J5 cHRvIHZlY3RvbCBadmtnIGV4dGVuc2lvbi4KwqAgKiBmdW5jdGlvbiByZWdpc3RyYXRpb24uwqAg Ki8KQEAgLTI4MTYsNiArMjg4MiwxMCBAQCBzdGF0aWMgZnVuY3Rpb25fZ3JvdXBfaW5mbyBmdW5j dGlvbl9ncm91cHNbXSA9IHsKICNkZWZpbmUgREVGX1JWVl9GVU5DVElPTihOQU1FLCBTSEFQRSwg UFJFRFMsIE9QU19JTkZPKSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcCiDC oCB7I05BTUUsICZiYXNlczo6TkFNRSwgJnNoYXBlczo6U0hBUEUsIFBSRURTLCBPUFNfSU5GTywg UkVRVUlSRURfRVhURU5TSU9OU30sCiAjaW5jbHVkZSAicmlzY3YtdmVjdG9yLWJ1aWx0aW5zLWZ1 bmN0aW9ucy5kZWYiCisjdW5kZWYgREVGX1JWVl9GVU5DVElPTgorI2RlZmluZSBERUZfUlZWX0ZV TkNUSU9OKE5BTUUsIFNIQVBFLCBQUkVEUywgT1BTX0lORk8pIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIFwKK8KgIHsjTkFNRSwgJmJhc2VzOjpOQU1FLCAmc2hhcGVzOjpTSEFQ RSwgUFJFRFMsIE9QU19JTkZPLCBSRVFVSVJFRF9FWFRFTlNJT05TfSwKKyNpbmNsdWRlICJ0aGVh ZC12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZiIKIH07CiAKIC8qIFRoZSBSVlYgdHlwZXMs IHdpdGggdGhlaXIgYnVpbHQtaW4KZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Yt dmVjdG9yLWJ1aWx0aW5zLmggYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlu cy5oCmluZGV4IDU0Yzg4MjRmZjkyLi5hOGVlMzlhM2NiMiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuaAorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jp c2N2LXZlY3Rvci1idWlsdGlucy5oCkBAIC0xMTQsNiArMTE0LDcgQEAgc3RhdGljIGNvbnN0IHVu c2lnbmVkIGludCBDUF9XUklURV9DU1IgPSAxVSA8PCA1OwogZW51bSByZXF1aXJlZF9leHQKIHsK IMKgIFZFQ1RPUl9FWFQsIMKgIC8qIFZlY3RvciBleHRlbnNpb24gKi8KK8KgIFhUSEVBRFZFQ1RP Ul9FWFQsIMKgIC8qIFhUaGVhZFZlY3RvciBleHRlbnNpb24gKi8KIMKgIFpWQkJfRVhULMKgIMKg IC8qIENyeXRvIHZlY3RvciBadmJiIHN1Yi1leHQgKi8KIMKgIFpWQkJfT1JfWlZLQl9FWFQsIC8q IENyeXRvIHZlY3RvciBadmJiIG9yIHp2a2Igc3ViLWV4dCAqLwogwqAgWlZCQ19FWFQswqAgwqAg LyogQ3J5cHRvIHZlY3RvciBadmJjIHN1Yi1leHQgKi8KQEAgLTIzNCw2ICsyMzUsOCBAQCBzdHJ1 Y3QgZnVuY3Rpb25fZ3JvdXBfaW5mbwogwqAgwqAgewogwqAgwqAgwqAgY2FzZSBWRUNUT1JfRVhU OgogwqAgwqAgwqAgwqAgcmV0dXJuIFRBUkdFVF9WRUNUT1I7CivCoCDCoCDCoCBjYXNlIFhUSEVB RFZFQ1RPUl9FWFQ6CisgcmV0dXJuIFRBUkdFVF9YVEhFQURWRUNUT1I7CiDCoCDCoCDCoCBjYXNl IFpWQkJfRVhUOgogwqAgwqAgwqAgwqAgcmV0dXJuIFRBUkdFVF9aVkJCOwogwqAgwqAgwqAgY2Fz ZSBaVkJCX09SX1pWS0JfRVhUOgpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi90LXJpc2N2 IGIvZ2NjL2NvbmZpZy9yaXNjdi90LXJpc2N2CmluZGV4IDMyZGU2Yjg1MWMxLi4zODQ5NDMyMGQ4 YiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi90LXJpc2N2CisrKyBiL2djYy9jb25maWcv cmlzY3YvdC1yaXNjdgpAQCAtMSw2ICsxLDcgQEAKIFJJU0NWX0JVSUxUSU5TX0ggPSAkKHNyY2Rp cikvY29uZmlnL3Jpc2N2L3Jpc2N2LXZlY3Rvci1idWlsdGlucy5oIFwKwqAgwqAgwqAgJChzcmNk aXIpL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMuZGVmIFwKwqAgwqAgwqAgJChz cmNkaXIpL2NvbmZpZy9yaXNjdi9yaXNjdi12ZWN0b3ItYnVpbHRpbnMtZnVuY3Rpb25zLmRlZiBc CisgwqAgwqAgwqAgJChzcmNkaXIpL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3ItYnVpbHRpbnMt ZnVuY3Rpb25zLmRlZiBcCsKgIMKgIMKgIHJpc2N2LXZlY3Rvci10eXBlLWluZGV4ZXIuZ2VuLmRl ZgogCiByaXNjdi1idWlsdGlucy5vOiAkKHNyY2RpcikvY29uZmlnL3Jpc2N2L3Jpc2N2LWJ1aWx0 aW5zLmNjICQoQ09ORklHX0gpIFwKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvdGhlYWQt dmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYgYi9nY2MvY29uZmlnL3Jpc2N2L3RoZWFkLXZl Y3Rvci1idWlsdGlucy1mdW5jdGlvbnMuZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5mZDNiYTI5YmFlOQotLS0gL2Rldi9udWxsCisrKyBiL2djYy9jb25maWcvcmlz Y3YvdGhlYWQtdmVjdG9yLWJ1aWx0aW5zLWZ1bmN0aW9ucy5kZWYKQEAgLTAsMCArMSwzOSBAQAor I2lmbmRlZiBERUZfUlZWX0ZVTkNUSU9OCisjZGVmaW5lIERFRl9SVlZfRlVOQ1RJT04oTkFNRSwg U0hBUEUsIFBSRURTLCBPUFNfSU5GTykKKyNlbmRpZgorCisjZGVmaW5lIFJFUVVJUkVEX0VYVEVO U0lPTlMgWFRIRUFEVkVDVE9SX0VYVAorREVGX1JWVl9GVU5DVElPTiAodmxiLCB0aF9sb2Fkc3Rv cmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfb3BzKQorREVGX1JW Vl9GVU5DVElPTiAodmxoLCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3Nj YWxhcl9jb25zdF9wdHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmx3LCB0aF9sb2Fkc3RvcmVf d2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfb3BzKQorREVGX1JWVl9G VU5DVElPTiAodmxidSwgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2Fs YXJfY29uc3RfcHRyX29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZsaHUsIHRoX2xvYWRzdG9yZV93 aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9vcHMpCitERUZfUlZWX0ZV TkNUSU9OICh2bHd1LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxh cl9jb25zdF9wdHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnNiLCB0aF9sb2Fkc3RvcmVfd2lk dGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9vcHMpCitERUZfUlZWX0ZVTkNUSU9O ICh2c2gsIHRoX2xvYWRzdG9yZV93aWR0aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9zY2FsYXJfcHRy X29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZzdywgdGhfbG9hZHN0b3JlX3dpZHRoLCBub25lX21f cHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmxzYiwgdGhf bG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3NpemVf b3BzKQorREVGX1JWVl9GVU5DVElPTiAodmxzaCwgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3By ZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3NpemVfb3BzKQorREVGX1JWVl9GVU5DVElPTiAo dmxzdywgdGhfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3Rf cHRyX3NpemVfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmxzYnUsIHRoX2xvYWRzdG9yZV93aWR0 aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0X3B0cl9zaXplX29wcykKK0RFRl9SVlZf RlVOQ1RJT04gKHZsc2h1LCB0aF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3Nj YWxhcl9jb25zdF9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHN3dSwgdGhfbG9h ZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxfdl9zY2FsYXJfY29uc3RfcHRyX3NpemVfb3Bz KQorREVGX1JWVl9GVU5DVElPTiAodnNzYiwgdGhfbG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJl ZHMsIGFsbF92X3NjYWxhcl9wdHJfc2l6ZV9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2c3NoLCB0 aF9sb2Fkc3RvcmVfd2lkdGgsIG5vbmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9zaXplX29w cykKK0RFRl9SVlZfRlVOQ1RJT04gKHZzc3csIHRoX2xvYWRzdG9yZV93aWR0aCwgbm9uZV9tX3By ZWRzLCBhbGxfdl9zY2FsYXJfcHRyX3NpemVfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmx4Yiwg dGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25z dF9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodmx4aCwgdGhfaW5kZXhlZF9sb2Fk c3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfaW5kZXhfb3Bz KQorREVGX1JWVl9GVU5DVElPTiAodmx4dywgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIGZ1 bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5D VElPTiAodmx4YnUsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBmdWxsX3ByZWRzLCBhbGxf dl9zY2FsYXJfY29uc3RfcHRyX2luZGV4X29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZseGh1LCB0 aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgZnVsbF9wcmVkcywgYWxsX3Zfc2NhbGFyX2NvbnN0 X3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9OICh2bHh3dSwgdGhfaW5kZXhlZF9sb2Fk c3RvcmVfd2lkdGgsIGZ1bGxfcHJlZHMsIGFsbF92X3NjYWxhcl9jb25zdF9wdHJfaW5kZXhfb3Bz KQorREVGX1JWVl9GVU5DVElPTiAodnN4YiwgdGhfaW5kZXhlZF9sb2Fkc3RvcmVfd2lkdGgsIG5v bmVfbV9wcmVkcywgYWxsX3Zfc2NhbGFyX3B0cl9pbmRleF9vcHMpCitERUZfUlZWX0ZVTkNUSU9O ICh2c3hoLCB0aF9pbmRleGVkX2xvYWRzdG9yZV93aWR0aCwgbm9uZV9tX3ByZWRzLCBhbGxfdl9z Y2FsYXJfcHRyX2luZGV4X29wcykKK0RFRl9SVlZfRlVOQ1RJT04gKHZzeHcsIHRoX2luZGV4ZWRf bG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfaW5kZXhfb3Bz KQorREVGX1JWVl9GVU5DVElPTiAodnN1eGIsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBu b25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElP TiAodnN1eGgsIHRoX2luZGV4ZWRfbG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJlZHMsIGFsbF92 X3NjYWxhcl9wdHJfaW5kZXhfb3BzKQorREVGX1JWVl9GVU5DVElPTiAodnN1eHcsIHRoX2luZGV4 ZWRfbG9hZHN0b3JlX3dpZHRoLCBub25lX21fcHJlZHMsIGFsbF92X3NjYWxhcl9wdHJfaW5kZXhf b3BzKQorREVGX1JWVl9GVU5DVElPTiAodmV4dF94X3YsIHRoX2V4dHJhY3QsIG5vbmVfcHJlZHMs IGl1X3hfc191X29wcykKKyN1bmRlZiBSRVFVSVJFRF9FWFRFTlNJT05TCisKKyN1bmRlZiBERUZf UlZWX0ZVTkNUSU9OCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3RoZWFkLXZlY3Rvci5t ZCBiL2djYy9jb25maWcvcmlzY3YvdGhlYWQtdmVjdG9yLm1kCmluZGV4IDY5NmI4MTUyNTJkLi4w ZjM3MDBkOTI2OSAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3IubWQK KysrIGIvZ2NjL2NvbmZpZy9yaXNjdi90aGVhZC12ZWN0b3IubWQKQEAgLTEsNyArMSw5NSBAQAog KGRlZmluZV9jX2VudW0gInVuc3BlYyIgWworwqAgVU5TUEVDX1RIX1ZMQgorwqAgVU5TUEVDX1RI X1ZMQlUKK8KgIFVOU1BFQ19USF9WTEgKK8KgIFVOU1BFQ19USF9WTEhVCivCoCBVTlNQRUNfVEhf VkxXCivCoCBVTlNQRUNfVEhfVkxXVQorCivCoCBVTlNQRUNfVEhfVkxTQgorwqAgVU5TUEVDX1RI X1ZMU0JVCivCoCBVTlNQRUNfVEhfVkxTSAorwqAgVU5TUEVDX1RIX1ZMU0hVCivCoCBVTlNQRUNf VEhfVkxTVworwqAgVU5TUEVDX1RIX1ZMU1dVCisKK8KgIFVOU1BFQ19USF9WTFhCCivCoCBVTlNQ RUNfVEhfVkxYQlUKK8KgIFVOU1BFQ19USF9WTFhICivCoCBVTlNQRUNfVEhfVkxYSFUKK8KgIFVO U1BFQ19USF9WTFhXCivCoCBVTlNQRUNfVEhfVkxYV1UKKworwqAgVU5TUEVDX1RIX1ZTVVhCCivC oCBVTlNQRUNfVEhfVlNVWEgKK8KgIFVOU1BFQ19USF9WU1VYVworCiDCoCBVTlNQRUNfVEhfVldM RFNUCiBdKQogCisoZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQRUNfVEhfVkxNRU1fT1AgWworwqAg VU5TUEVDX1RIX1ZMQiBVTlNQRUNfVEhfVkxCVQorwqAgVU5TUEVDX1RIX1ZMSCBVTlNQRUNfVEhf VkxIVQorwqAgVU5TUEVDX1RIX1ZMVyBVTlNQRUNfVEhfVkxXVQorXSkKKworKGRlZmluZV9pbnRf aXRlcmF0b3IgVU5TUEVDX1RIX1ZMU01FTV9PUCBbCivCoCBVTlNQRUNfVEhfVkxTQiBVTlNQRUNf VEhfVkxTQlUKK8KgIFVOU1BFQ19USF9WTFNIIFVOU1BFQ19USF9WTFNIVQorwqAgVU5TUEVDX1RI X1ZMU1cgVU5TUEVDX1RIX1ZMU1dVCitdKQorCisoZGVmaW5lX2ludF9pdGVyYXRvciBVTlNQRUNf VEhfVkxYTUVNX09QIFsKK8KgIFVOU1BFQ19USF9WTFhCIFVOU1BFQ19USF9WTFhCVQorwqAgVU5T UEVDX1RIX1ZMWEggVU5TUEVDX1RIX1ZMWEhVCivCoCBVTlNQRUNfVEhfVkxYVyBVTlNQRUNfVEhf VkxYV1UKK10pCisKKyhkZWZpbmVfaW50X2F0dHIgdmxtZW1fb3BfYXR0ciBbCivCoCAoVU5TUEVD X1RIX1ZMQiAiYiIpIChVTlNQRUNfVEhfVkxCVSAiYnUiKQorwqAgKFVOU1BFQ19USF9WTEggImgi KSAoVU5TUEVDX1RIX1ZMSFUgImh1IikKK8KgIChVTlNQRUNfVEhfVkxXICJ3IikgKFVOU1BFQ19U SF9WTFdVICJ3dSIpCivCoCAoVU5TUEVDX1RIX1ZMU0IgImIiKSAoVU5TUEVDX1RIX1ZMU0JVICJi dSIpCivCoCAoVU5TUEVDX1RIX1ZMU0ggImgiKSAoVU5TUEVDX1RIX1ZMU0hVICJodSIpCivCoCAo VU5TUEVDX1RIX1ZMU1cgInciKSAoVU5TUEVDX1RIX1ZMU1dVICJ3dSIpCivCoCAoVU5TUEVDX1RI X1ZMWEIgImIiKSAoVU5TUEVDX1RIX1ZMWEJVICJidSIpCivCoCAoVU5TUEVDX1RIX1ZMWEggImgi KSAoVU5TUEVDX1RIX1ZMWEhVICJodSIpCivCoCAoVU5TUEVDX1RIX1ZMWFcgInciKSAoVU5TUEVD X1RIX1ZMWFdVICJ3dSIpCivCoCAoVU5TUEVDX1RIX1ZTVVhCICJiIikKK8KgIChVTlNQRUNfVEhf VlNVWEggImgiKQorwqAgKFVOU1BFQ19USF9WU1VYVyAidyIpCitdKQorCisoZGVmaW5lX2ludF9h dHRyIHZsbWVtX29yZGVyX2F0dHIgWworwqAgKFVOU1BFQ19USF9WTFhCICIiKQorwqAgKFVOU1BF Q19USF9WTFhIICIiKQorwqAgKFVOU1BFQ19USF9WTFhXICIiKQorwqAgKFVOU1BFQ19USF9WU1VY QiAidSIpCivCoCAoVU5TUEVDX1RIX1ZTVVhIICJ1IikKK8KgIChVTlNQRUNfVEhfVlNVWFcgInUi KQorXSkKKworKGRlZmluZV9pbnRfaXRlcmF0b3IgVU5TUEVDX1RIX1ZTTUVNX09QIFsKK8KgIFVO U1BFQ19USF9WTEIKK8KgIFVOU1BFQ19USF9WTEgKK8KgIFVOU1BFQ19USF9WTFcKK10pCisKKyhk ZWZpbmVfaW50X2l0ZXJhdG9yIFVOU1BFQ19USF9WU1NNRU1fT1AgWworwqAgVU5TUEVDX1RIX1ZM U0IKK8KgIFVOU1BFQ19USF9WTFNICivCoCBVTlNQRUNfVEhfVkxTVworXSkKKworKGRlZmluZV9p bnRfaXRlcmF0b3IgVU5TUEVDX1RIX1ZTWE1FTV9PUCBbCivCoCBVTlNQRUNfVEhfVkxYQgorwqAg VU5TUEVDX1RIX1ZMWEgKK8KgIFVOU1BFQ19USF9WTFhXCivCoCBVTlNQRUNfVEhfVlNVWEIKK8Kg IFVOU1BFQ19USF9WU1VYSAorwqAgVU5TUEVDX1RIX1ZTVVhXCitdKQorCiAoZGVmaW5lX21vZGVf aXRlcmF0b3IgVl9WTFNfVlQgW1YgVkxTIFZUXSkKIChkZWZpbmVfbW9kZV9pdGVyYXRvciBWX1ZC X1ZMU19WVCBbViBWQiBWTFMgVlRdKQogCkBAIC0xMDAsMyArMTg4LDE2OCBAQAogwqAgfQogwqAg WyhzZXRfYXR0ciAidHlwZSIgInZsZG0sdnN0bSx2bWFsdSx2bWFsdSx2bWFsdSIpCsKgIMKgIChz ZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpXSkKKworKGRlZmluZV9leHBhbmQgIkBwcmVkX21vdl93 aWR0aDx2bG1lbV9vcF9hdHRyPjxtb2RlPiIKK8KgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZfVkxT IDAgIm5vbmltbWVkaWF0ZV9vcGVyYW5kIikKK8KgIMKgIChpZl90aGVuX2Vsc2U6Vl9WTFMKK8Kg IMKgIMKgICh1bnNwZWM6PFZNPgorIFsobWF0Y2hfb3BlcmFuZDo8Vk0+IDEgInZlY3Rvcl9tYXNr X29wZXJhbmQiKQorwqAgKG1hdGNoX29wZXJhbmQgNCAidmVjdG9yX2xlbmd0aF9vcGVyYW5kIikK K8KgIChtYXRjaF9vcGVyYW5kIDUgImNvbnN0X2ludF9vcGVyYW5kIikKK8KgIChtYXRjaF9vcGVy YW5kIDYgImNvbnN0X2ludF9vcGVyYW5kIikKK8KgIChtYXRjaF9vcGVyYW5kIDcgImNvbnN0X2lu dF9vcGVyYW5kIikKK8KgIChyZWc6U0kgVkxfUkVHTlVNKQorwqAgKHJlZzpTSSBWVFlQRV9SRUdO VU0pXSBVTlNQRUNfVEhfVkxNRU1fT1ApCivCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZDpWX1ZMUyAz ICJ2ZWN0b3JfbW92ZV9vcGVyYW5kIikKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kOlZfVkxTIDIg InZlY3Rvcl9tZXJnZV9vcGVyYW5kIikpKV0KK8KgICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorwqAg e30pCisKKyhkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIipwcmVkX21vdl93aWR0aDx2bG1lbV9vcF9h dHRyPjxtb2RlPiIKK8KgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZfVkxTIDAgIm5vbmltbWVkaWF0 ZV9vcGVyYW5kIiDCoCDCoCAiPXZyLMKgIMKgIHZyLMKgIMKgIHZkLCDCoCDCoCBtLMKgIMKgIHZy LMKgIMKgIHZyIikKK8KgIMKgIChpZl90aGVuX2Vsc2U6Vl9WTFMKK8KgIMKgIMKgICh1bnNwZWM6 PFZNPgorIFsobWF0Y2hfb3BlcmFuZDo8Vk0+IDEgInZlY3Rvcl9tYXNrX29wZXJhbmQiwqAgwqAg InZtV2MxLCDCoCBXYzEswqAgwqAgdm0sIHZtV2MxLCDCoCBXYzEsIMKgIFdjMSIpCivCoCAobWF0 Y2hfb3BlcmFuZCA0ICJ2ZWN0b3JfbGVuZ3RoX29wZXJhbmQiIMKgIMKgIMKgICIgwqAgcksswqAg wqAgcksswqAgwqAgcksswqAgwqAgcksswqAgwqAgcksswqAgwqAgcksiKQorwqAgKG1hdGNoX29w ZXJhbmQgNSAiY29uc3RfaW50X29wZXJhbmQiwqAgwqAgIsKgIMKgIGksIMKgIMKgIGksIMKgIMKg IGksIMKgIMKgIGksIMKgIMKgIGksIMKgIMKgIGkiKQorwqAgKG1hdGNoX29wZXJhbmQgNiAiY29u c3RfaW50X29wZXJhbmQiwqAgwqAgIsKgIMKgIGksIMKgIMKgIGksIMKgIMKgIGksIMKgIMKgIGks IMKgIMKgIGksIMKgIMKgIGkiKQorwqAgKG1hdGNoX29wZXJhbmQgNyAiY29uc3RfaW50X29wZXJh bmQiwqAgwqAgIsKgIMKgIGksIMKgIMKgIGksIMKgIMKgIGksIMKgIMKgIGksIMKgIMKgIGksIMKg IMKgIGkiKQorwqAgKHJlZzpTSSBWTF9SRUdOVU0pCivCoCAocmVnOlNJIFZUWVBFX1JFR05VTSld IFVOU1BFQ19USF9WTE1FTV9PUCkKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kOlZfVkxTIDMgInJl Z19vcl9tZW1fb3BlcmFuZCIgwqAgwqAgwqAgIsKgIMKgIG0sIMKgIMKgIG0sIMKgIMKgIG0swqAg wqAgdnIswqAgwqAgdnIswqAgwqAgdnIiKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQ6Vl9WTFMg MiAidmVjdG9yX21lcmdlX29wZXJhbmQiIMKgIMKgICLCoCDCoCAwLMKgIMKgIHZ1LMKgIMKgIHZ1 LMKgIMKgIHZ1LMKgIMKgIHZ1LCDCoCDCoCAwIikpKV0KK8KgICIoVEFSR0VUX1hUSEVBRFZFQ1RP UgorwqAgwqAgJiYgKHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzBdLCA8TU9ERT5tb2RlKQor IHx8IHJlZ2lzdGVyX29wZXJhbmQgKG9wZXJhbmRzWzNdLCA8TU9ERT5tb2RlKSkpIgorwqAgIkAK KyDCoCB2bDx2bG1lbV9vcF9hdHRyPi52XHQlMCwlMyVwMQorIMKgIHZsPHZsbWVtX29wX2F0dHI+ LnZcdCUwLCUzCisgwqAgdmw8dmxtZW1fb3BfYXR0cj4udlx0JTAsJTMsJTEudAorIMKgIHZzPHZs bWVtX29wX2F0dHI+LnZcdCUzLCUwJXAxCisgwqAgdm12LnYudlx0JTAsJTMKKyDCoCB2bXYudi52 XHQlMCwlMyIKK8KgICImJiByZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1swXSwgPE1PREU+bW9k ZSkKKyDCoCAmJiByZWdpc3Rlcl9vcGVyYW5kIChvcGVyYW5kc1szXSwgPE1PREU+bW9kZSkKKyDC oCAmJiBzYXRpc2ZpZXNfY29uc3RyYWludF92dSAob3BlcmFuZHNbMl0pCisgwqAgJiYgSU5UVkFM IChvcGVyYW5kc1s3XSkgPT0gcmlzY3ZfdmVjdG9yOjpWTE1BWCIKK8KgIFsoc2V0IChtYXRjaF9k dXAgMCkgKG1hdGNoX2R1cCAzKSldCivCoCAiIgorwqAgWyhzZXRfYXR0ciAidHlwZSIgInZsZGUs dmxkZSx2bGRlLHZzdGUsdmltb3Ysdmltb3YiKQorIMKgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RF PiIpXSkKKworKGRlZmluZV9pbnNuICJAcHJlZF9zdG9yZV93aWR0aDx2bG1lbV9vcF9hdHRyPjxt b2RlPiIKK8KgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlZJIDAgIm1lbW9yeV9vcGVyYW5kIiDCoCAi K20iKQorIChpZl90aGVuX2Vsc2U6VkkKKyDCoCAodW5zcGVjOjxWTT4KKyDCoCDCoCBbKG1hdGNo X29wZXJhbmQ6PFZNPiAxICJ2ZWN0b3JfbWFza19vcGVyYW5kIiAidm1XYzEiKQorwqAgwqAgwqAg KG1hdGNoX29wZXJhbmQgMyAidmVjdG9yX2xlbmd0aF9vcGVyYW5kIsKgIMKgICIgwqAgcksiKQor wqAgwqAgwqAgKG1hdGNoX29wZXJhbmQgNCAiY29uc3RfaW50X29wZXJhbmQiICLCoCDCoCBpIikK K8KgIMKgIMKgIChyZWc6U0kgVkxfUkVHTlVNKQorwqAgwqAgwqAgKHJlZzpTSSBWVFlQRV9SRUdO VU0pXSBVTlNQRUNfVEhfVlNNRU1fT1ApCisgwqAgKG1hdGNoX29wZXJhbmQ6VkkgMiAicmVnaXN0 ZXJfb3BlcmFuZCLCoCAiwqAgwqAgdnIiKQorIMKgIChtYXRjaF9kdXAgMCkpKV0KK8KgICJUQVJH RVRfWFRIRUFEVkVDVE9SIgorwqAgInZzPHZsbWVtX29wX2F0dHI+LnZcdCUyLCUwJXAxIgorwqAg WyhzZXRfYXR0ciAidHlwZSIgInZzdGUiKQorIMKgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIp CisgwqAgKHNldCAoYXR0ciAiYXZsX3R5cGVfaWR4IikgKGNvbnN0X2ludCA0KSkKKyDCoCAoc2V0 X2F0dHIgInZsX29wX2lkeCIgIjMiKV0pCisKKyhkZWZpbmVfaW5zbiAiQHByZWRfc3RyaWRlZF9s b2FkX3dpZHRoPHZsbWVtX29wX2F0dHI+PG1vZGU+IgorwqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6 VkkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgwqAgwqAgwqAgIj12cizCoCDCoCB2cizCoCDCoCB2ZCIp CisgKGlmX3RoZW5fZWxzZTpWSQorIMKgICh1bnNwZWM6PFZNPgorIMKgIMKgIFsobWF0Y2hfb3Bl cmFuZDo8Vk0+IDEgInZlY3Rvcl9tYXNrX29wZXJhbmQiICJ2bVdjMSwgwqAgV2MxLMKgIMKgIHZt IikKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kIDUgInZlY3Rvcl9sZW5ndGhfb3BlcmFuZCLCoCDC oCAiIMKgIHJLLMKgIMKgIHJLLMKgIMKgIHJLIikKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kIDYg ImNvbnN0X2ludF9vcGVyYW5kIiAiwqAgwqAgaSwgwqAgwqAgaSwgwqAgwqAgaSIpCivCoCDCoCDC oCAobWF0Y2hfb3BlcmFuZCA3ICJjb25zdF9pbnRfb3BlcmFuZCIgIsKgIMKgIGksIMKgIMKgIGks IMKgIMKgIGkiKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQgOCAiY29uc3RfaW50X29wZXJhbmQi ICLCoCDCoCBpLCDCoCDCoCBpLCDCoCDCoCBpIikKK8KgIMKgIMKgIChyZWc6U0kgVkxfUkVHTlVN KQorwqAgwqAgwqAgKHJlZzpTSSBWVFlQRV9SRUdOVU0pXSBVTlNQRUNfVEhfVkxTTUVNX09QKQor IMKgICh1bnNwZWM6VkkKKyDCoCDCoCBbKG1hdGNoX29wZXJhbmQ6VkkgMyAibWVtb3J5X29wZXJh bmQiwqAgIsKgIMKgIG0sIMKgIMKgIG0sIMKgIMKgIG0iKQorwqAgwqAgwqAgKG1hdGNoX29wZXJh bmQgNCAicG1vZGVfcmVnX29yXzBfb3BlcmFuZCIgwqAgIiDCoCBySizCoCDCoCBySizCoCDCoCBy SiIpXSBVTlNQRUNfVEhfVkxTTUVNX09QKQorIMKgIChtYXRjaF9vcGVyYW5kOlZJIDIgInZlY3Rv cl9tZXJnZV9vcGVyYW5kIsKgIMKgIMKgICLCoCDCoCAwLMKgIMKgIHZ1LMKgIMKgIHZ1IikpKV0K K8KgICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorwqAgInZsczx2bG1lbV9vcF9hdHRyPi52XHQlMCwl MywlejQlcDEiCivCoCBbKHNldF9hdHRyICJ0eXBlIiAidmxkcyIpCisgwqAgKHNldF9hdHRyICJt b2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2luc24gIkBwcmVkX3N0cmlkZWRfc3RvcmVfd2lk dGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCivCoCBbKHNldCAobWF0Y2hfb3BlcmFuZDpWSSAwICJt ZW1vcnlfb3BlcmFuZCIgwqAgIittIikKKyAoaWZfdGhlbl9lbHNlOlZJCisgwqAgKHVuc3BlYzo8 Vk0+CisgwqAgwqAgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMSAidmVjdG9yX21hc2tfb3BlcmFuZCIg InZtV2MxIikKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kIDQgInZlY3Rvcl9sZW5ndGhfb3BlcmFu ZCLCoCDCoCAiIMKgIHJLIikKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kIDUgImNvbnN0X2ludF9v cGVyYW5kIiAiwqAgwqAgaSIpCivCoCDCoCDCoCAocmVnOlNJIFZMX1JFR05VTSkKK8KgIMKgIMKg IChyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZTU01FTV9PUCkKKyDCoCAodW5zcGVj OlZJCisgwqAgwqAgWyhtYXRjaF9vcGVyYW5kIDIgInBtb2RlX3JlZ19vcl8wX29wZXJhbmQiIMKg ICIgwqAgckoiKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQ6VkkgMyAicmVnaXN0ZXJfb3BlcmFu ZCIgwqAgwqAgwqAgIiDCoCB2ciIpXSBVTlNQRUNfVEhfVlNTTUVNX09QKQorIMKgIChtYXRjaF9k dXAgMCkpKV0KK8KgICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorwqAgInZzczx2bG1lbV9vcF9hdHRy Pi52XHQlMywlMCwlejIlcDEiCivCoCBbKHNldF9hdHRyICJ0eXBlIiAidnN0cyIpCisgwqAgKHNl dF9hdHRyICJtb2RlIiAiPE1PREU+IikKKyDCoCAoc2V0IChhdHRyICJhdmxfdHlwZV9pZHgiKSAo Y29uc3RfaW50IDUpKV0pCisKKyhkZWZpbmVfaW5zbiAiQHByZWRfaW5kZXhlZF9sb2FkX3dpZHRo PHZsbWVtX29wX2F0dHI+PG1vZGU+IgorwqAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6VkkgMCAicmVn aXN0ZXJfb3BlcmFuZCLCoCDCoCDCoCAiPXZkLCB2cix2ZCwgdnIiKQorIChpZl90aGVuX2Vsc2U6 VkkKKyDCoCAodW5zcGVjOjxWTT4KKyDCoCDCoCBbKG1hdGNoX29wZXJhbmQ6PFZNPiAxICJ2ZWN0 b3JfbWFza19vcGVyYW5kIsKgICIgdm0sV2MxLHZtLFdjMSIpCivCoCDCoCDCoCAobWF0Y2hfb3Bl cmFuZCA1ICJ2ZWN0b3JfbGVuZ3RoX29wZXJhbmQiIMKgIMKgICIgckssIHJLLHJLLCBySyIpCivC oCDCoCDCoCAobWF0Y2hfb3BlcmFuZCA2ICJjb25zdF9pbnRfb3BlcmFuZCLCoCAiwqAgaSzCoCBp LCBpLMKgIGkiKQorwqAgwqAgwqAgKG1hdGNoX29wZXJhbmQgNyAiY29uc3RfaW50X29wZXJhbmQi wqAgIsKgIGkswqAgaSwgaSzCoCBpIikKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kIDggImNvbnN0 X2ludF9vcGVyYW5kIsKgICLCoCBpLMKgIGksIGkswqAgaSIpCivCoCDCoCDCoCAocmVnOlNJIFZM X1JFR05VTSkKK8KgIMKgIMKgIChyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZMWE1F TV9PUCkKKyDCoCAodW5zcGVjOlZJCisgwqAgwqAgWyhtYXRjaF9vcGVyYW5kIDMgInBtb2RlX3Jl Z19vcl8wX29wZXJhbmQiwqAgwqAgIiBySiwgckosckosIHJKIikKK8KgIMKgIMKgIChtZW06QkxL IChzY3JhdGNoKSkKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kOlZJIDQgInJlZ2lzdGVyX29wZXJh bmQiICIgdnIsIHZyLHZyLCB2ciIpXSBVTlNQRUNfVEhfVkxYTUVNX09QKQorIMKgIChtYXRjaF9v cGVyYW5kOlZJIDIgInZlY3Rvcl9tZXJnZV9vcGVyYW5kIiDCoCDCoCDCoCAiIHZ1LCB2dSwgMCzC oCAwIikpKV0KK8KgICJUQVJHRVRfWFRIRUFEVkVDVE9SIgorwqAgInZseDx2bG1lbV9vcF9hdHRy Pi52XHQlMCwoJXozKSwlNCVwMSIKK8KgIFsoc2V0X2F0dHIgInR5cGUiICJ2bGR1eCIpCisgwqAg KHNldF9hdHRyICJtb2RlIiAiPE1PREU+IildKQorCisoZGVmaW5lX2luc24gIkBwcmVkX2luZGV4 ZWRfPHZsbWVtX29yZGVyX2F0dHI+c3RvcmVfd2lkdGg8dmxtZW1fb3BfYXR0cj48bW9kZT4iCivC oCBbKHNldCAobWVtOkJMSyAoc2NyYXRjaCkpCisgKHVuc3BlYzpCTEsKKyDCoCBbKHVuc3BlYzo8 Vk0+CisgwqAgwqAgWyhtYXRjaF9vcGVyYW5kOjxWTT4gMCAidmVjdG9yX21hc2tfb3BlcmFuZCIg InZtV2MxIikKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kIDQgInZlY3Rvcl9sZW5ndGhfb3BlcmFu ZCLCoCDCoCAiIMKgIHJLIikKK8KgIMKgIMKgIChtYXRjaF9vcGVyYW5kIDUgImNvbnN0X2ludF9v cGVyYW5kIiAiwqAgwqAgaSIpCivCoCDCoCDCoCAocmVnOlNJIFZMX1JFR05VTSkKK8KgIMKgIMKg IChyZWc6U0kgVlRZUEVfUkVHTlVNKV0gVU5TUEVDX1RIX1ZTWE1FTV9PUCkKK8KgIMKgIChtYXRj aF9vcGVyYW5kIDEgInBtb2RlX3JlZ19vcl8wX29wZXJhbmQiwqAgwqAgwqAgIsKgIHJKIikKK8Kg IMKgIChtYXRjaF9vcGVyYW5kOlZJIDIgInJlZ2lzdGVyX29wZXJhbmQiICLCoCB2ciIpCivCoCDC oCAobWF0Y2hfb3BlcmFuZDpWSSAzICJyZWdpc3Rlcl9vcGVyYW5kIsKgICLCoCB2ciIpXSBVTlNQ RUNfVEhfVlNYTUVNX09QKSldCivCoCAiVEFSR0VUX1hUSEVBRFZFQ1RPUiIKK8KgICJ2czx2bG1l bV9vcmRlcl9hdHRyPng8dmxtZW1fb3BfYXR0cj4udlx0JTMsKCV6MSksJTIlcDAiCivCoCBbKHNl dF9hdHRyICJ0eXBlIiAidnN0dXgiKQorIMKgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpXSkK KworKGRlZmluZV9leHBhbmQgIkBwcmVkX3RoX2V4dHJhY3Q8bW9kZT4iCivCoCBbKHNldCAobWF0 Y2hfb3BlcmFuZDo8VkVMPiAwICJyZWdpc3Rlcl9vcGVyYW5kIikKKyAodW5zcGVjOjxWRUw+Cisg wqAgWyh2ZWNfc2VsZWN0OjxWRUw+CivCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZDpWX1ZMU0kgMSAi cmVnaXN0ZXJfb3BlcmFuZCIpCivCoCDCoCDCoCAocGFyYWxsZWwgWyhtYXRjaF9vcGVyYW5kOkRJ IDIgInJlZ2lzdGVyX29wZXJhbmQiICJyIildKSkKK8KgIMKgIChyZWc6U0kgVlRZUEVfUkVHTlVN KV0gVU5TUEVDX1ZQUkVESUNBVEUpKV0KK8KgICJUQVJHRVRfWFRIRUFEVkVDVE9SIgore30pCisK KyhkZWZpbmVfaW5zbiAiKnByZWRfdGhfZXh0cmFjdDxtb2RlPiIKK8KgIFsoc2V0IChtYXRjaF9v cGVyYW5kOjxWRUw+IDAgInJlZ2lzdGVyX29wZXJhbmQiIMKgICI9ciIpCivCoCAodW5zcGVjOjxW RUw+CivCoCDCoCBbKHZlY19zZWxlY3Q6PFZFTD4KKyDCoCDCoCDCoCAobWF0Y2hfb3BlcmFuZDpW X1ZMU0kgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInZyIikKKyDCoCDCoCDCoCAocGFyYWxsZWwgWyht YXRjaF9vcGVyYW5kOkRJIDIgInJlZ2lzdGVyX29wZXJhbmQiICJyIildKSkKKyDCoCDCoCAocmVn OlNJIFZUWVBFX1JFR05VTSldIFVOU1BFQ19WUFJFRElDQVRFKSldCivCoCAiVEFSR0VUX1hUSEVB RFZFQ1RPUiIKK8KgICJ2ZXh0Lngudlx0JTAsJTEsJTIiCivCoCBbKHNldF9hdHRyICJ0eXBlIiAi dmltb3Z2eCIpCisgwqAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IildKQpkaWZmIC0tZ2l0IGEv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxiLXZzYi5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxiLXZz Yi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zYzEyYzEyNDU5Nwot LS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRo ZWFkdmVjdG9yL3ZsYi12c2IuYwpAQCAtMCwwICsxLDY4IEBACisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1vcHRpb25zICItbWFyY2g9cnYzMmdjeHRoZWFkdmVjdG9yIC1tYWJpPWls cDMyZCAtTzMiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioq IiAiIiB9IH0gKi8KKyNpbmNsdWRlICJyaXNjdl90aF92ZWN0b3IuaCIKKworLyoKKyoqIGYxOgor KiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbWEKKyoqIHRoLnZsYlwudlx0dlswLTld KywwXChbYS14MC05XStcKQorKiogdGgudmxiXC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisq KiB0aC52YWRkXC52dlx0dlswLTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSsKKyoqIHRoLnZhZGRc LnZ2XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqdlswLTldKworKiogdGgudnNiXC52XHR2WzAtOV0r LDBcKFthLXgwLTldK1wpCisqKiByZXQKKyovCit2b2lkIGYxICh2b2lkICogaW4sIHZvaWQgKm91 dCkKK3sKK8KgIMKgIHZpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxiX3ZfaTMybTEgKGluLCA0 KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3ZsYl92X2kzMm0xX3R1ICh2LCBp biwgNCk7CivCoCDCoCB2aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z2X2kzMm0xICh2Miwg djIsIDQpOworwqAgwqAgdmludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92dl9pMzJtMV90dSAo djMsIHYyLCB2MiwgNCk7CivCoCDCoCBfX3Jpc2N2X3RoX3ZzYl92X2kzMm0xIChvdXQsIHY0LCA0 KTsKK30KKworLyoKKyoqIGYyOgorKiogdGgudnNldHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0 LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudnNldGl2 bGlcdHplcm8sNCxlMzIsbTEsdGEsbWEKKyoqIHRoLnZsYi52XHR2WzAtOV0rLDBcKFthLXgwLTld K1wpLHYwLnQKKyoqIHRoLnZhZGRcLnZ2XHR2WzAtOV0rLFxzKnZbMC05XSssXHMqdlswLTldKwor KiogdGgudmFkZFwudnZcdHZbMS05XVswLTldPyxccyp2WzAtOV0rLFxzKnZbMC05XSssXHMqdjAu dAorKiogdGgudnNiLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQg ZjIgKHZvaWQgKiBpbiwgdm9pZCAqb3V0KQoreworwqAgwqAgdmJvb2wzMl90IG1hc2sgPSAqKHZi b29sMzJfdCopaW47CivCoCDCoCBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOworwqAgwqAg dmludDMybTFfdCB2ID0gX19yaXNjdl90aF92bGJfdl9pMzJtMSAoaW4sIDQpOworwqAgwqAgdmlu dDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxiX3ZfaTMybTFfbSAobWFzaywgaW4sIDQpOworwqAg wqAgdmludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92dl9pMzJtMSAodjIsIHYyLCA0KTsKK8Kg IMKgIHZpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnZfaTMybTFfbSAobWFzaywgdjMsIHYz LCA0KTsKK8KgIMKgIF9fcmlzY3ZfdGhfdnNiX3ZfaTMybTEgKG91dCwgdjQsIDQpOworfQorCisv KgorKiogZjM6CisqKiB0aC52c2V0dmxpXHRbYS14MC05XSssemVybyxlOCxtZjQsdGEsbWEKKyoq IHRoLnZsbS52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52c2V0aXZsaVx0emVybyw0 LGUzMixtMSx0dSxtdQorKiogdGgudmxiXC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0 aC52bGIudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52dlx0dlsw LTldKyxccyp2WzAtOV0rLFxzKnZbMC05XSsKKyoqIHRoLnZhZGRcLnZ2XHR2WzEtOV1bMC05XT8s XHMqdlswLTldKyxccyp2WzAtOV0rLFxzKnYwLnQKKyoqIHRoLnZzYi52XHR2WzAtOV0rLDBcKFth LXgwLTldK1wpCisqKiByZXQKKyovCit2b2lkIGYzICh2b2lkICogaW4sIHZvaWQgKm91dCkKK3sK K8KgIMKgIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMyX3QqKWluOworwqAgwqAgYXNtIHZvbGF0 aWxlICgiIjo6OiJtZW1vcnkiKTsKK8KgIMKgIHZpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxi X3ZfaTMybTEgKGluLCA0KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjIgPSBfX3Jpc2N2X3RoX3ZsYl92 X2kzMm0xX3R1bXUgKG1hc2ssIHYsIGluLCA0KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjMgPSBfX3Jp c2N2X3ZhZGRfdnZfaTMybTEgKHYyLCB2MiwgNCk7CivCoCDCoCB2aW50MzJtMV90IHY0ID0gX19y aXNjdl92YWRkX3Z2X2kzMm0xX3R1bXUgKG1hc2ssIHYzLCB2MiwgdjIsIDQpOworwqAgwqAgX19y aXNjdl90aF92c2Jfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGJ1LXZzYi5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxidS12c2IuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzBiZWYzNjkzNzUKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZl Y3Rvci92bGJ1LXZzYi5jCkBAIC0wLDAgKzEsNjggQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxwMzJk IC1PMyIgfSAqLworLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIi IH0gfSAqLworI2luY2x1ZGUgInJpc2N2X3RoX3ZlY3Rvci5oIgorCisvKgorKiogZjE6CisqKiB0 aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxtYQorKiogdGgudmxidVwudlx0dlswLTldKyww XChbYS14MC05XStcKQorKiogdGgudmxidVwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiog dGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZhZGRcLnZpXHR2 WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2CisqKiB0aC52c2JcLnZcdHZbMC05XSssMFwoW2EteDAt OV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjEgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJf dCB4KQoreworwqAgwqAgdnVpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxidV92X3UzMm0xIChp biwgNCk7CivCoCDCoCB2dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxidV92X3UzMm0xX3R1 ICh2LCBpbiwgNCk7CivCoCDCoCB2dWludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF91MzJt MSAodjIsIC0xNiwgNCk7CivCoCDCoCB2dWludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF91 MzJtMV90dSAodjMsIHYyLCAtMTYsIDQpOworwqAgwqAgX19yaXNjdl90aF92c2Jfdl91MzJtMSAo b3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMjoKKyoqIHRoLnZzZXR2bGlcdFthLXgwLTldKyx6 ZXJvLGU4LG1mNCx0YSxtYQorKiogdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoq IHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHRhLG1hCisqKiB0aC52bGJ1LnZcdHZbMC05XSss MFwoW2EteDAtOV0rXCksdjAudAorKiogdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxc cyotMTYKKyoqIHRoLnZhZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccyotMTYsXHMq djAudAorKiogdGgudnNiLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3Zv aWQgZjIgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQoreworwqAgwqAgdmJvb2wz Ml90IG1hc2sgPSAqKHZib29sMzJfdCopaW47CivCoCDCoCBhc20gdm9sYXRpbGUgKCIiOjo6Im1l bW9yeSIpOworwqAgwqAgdnVpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxidV92X3UzMm0xIChp biwgNCk7CivCoCDCoCB2dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxidV92X3UzMm0xX20g KG1hc2ssIGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X3Uz Mm0xICh2MiwgLTE2LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4 X3UzMm0xX20gKG1hc2ssIHYzLCAtMTYsIDQpOworwqAgwqAgX19yaXNjdl90aF92c2Jfdl91MzJt MSAob3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMzoKKyoqIHRoLnZzZXR2bGlcdFthLXgwLTld Kyx6ZXJvLGU4LG1mNCx0YSxtYQorKiogdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkK KyoqIHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG11CisqKiB0aC52bGJ1XC52XHR2WzAt OV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52bGJ1LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCks djAudAorKiogdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZh ZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccyotMTYsXHMqdjAudAorKiogdGgudnNi LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjMgKHZvaWQgKiBp biwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQoreworwqAgwqAgdmJvb2wzMl90IG1hc2sgPSAqKHZi b29sMzJfdCopaW47CivCoCDCoCBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOworwqAgwqAg dnVpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxidV92X3UzMm0xIChpbiwgNCk7CivCoCDCoCB2 dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxidV92X3UzMm0xX3R1bXUgKG1hc2ssIHYsIGlu LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xICh2Miwg LTE2LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xX3R1 bXUgKG1hc2ssIHYzLCB2MiwgLTE2LCA0KTsKK8KgIMKgIF9fcmlzY3ZfdGhfdnNiX3ZfdTMybTEg KG91dCwgdjQsIDQpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di94dGhlYWR2ZWN0b3IvdmxoLXZzaC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxoLXZzaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4zYzhiNWNjYzE2YgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3ZsaC12c2guYwpAQCAtMCww ICsxLDY4IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWFy Y2g9cnYzMmdjeHRoZWFkdmVjdG9yIC1tYWJpPWlscDMyZCAtTzMiIH0gKi8KKy8qIHsgZGctZmlu YWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiB9IH0gKi8KKyNpbmNsdWRlICJyaXNj dl90aF92ZWN0b3IuaCIKKworLyoKKyoqIGYxOgorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIs bTEsdHUsbWEKKyoqIHRoLnZsaFwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudmxo XC52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52YWRkXC52aVx0dlswLTldKyxccyp2 WzAtOV0rLFxzKi0xNgorKiogdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYK KyoqIHRoLnZzaFwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBm MSAodm9pZCAqIGluLCB2b2lkICpvdXQsIGludDMyX3QgeCkKK3sKK8KgIMKgIHZpbnQzMm0xX3Qg diA9IF9fcmlzY3ZfdGhfdmxoX3ZfaTMybTEgKGluLCA0KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjIg PSBfX3Jpc2N2X3RoX3ZsaF92X2kzMm0xX3R1ICh2LCBpbiwgNCk7CivCoCDCoCB2aW50MzJtMV90 IHYzID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xICh2MiwgLTE2LCA0KTsKK8KgIMKgIHZpbnQzMm0x X3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTFfdHUgKHYzLCB2MiwgLTE2LCA0KTsKK8KgIMKg IF9fcmlzY3ZfdGhfdnNoX3ZfaTMybTEgKG91dCwgdjQsIDQpOworfQorCisvKgorKiogZjI6Cisq KiB0aC52c2V0dmxpXHRbYS14MC05XSssemVybyxlOCxtZjQsdGEsbWEKKyoqIHRoLnZsbS52XHR2 WzAtOV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0YSxt YQorKiogdGgudmxoLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAudAorKiogdGgudmFkZFwu dmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZhZGRcLnZpXHR2WzEtOV1bMC05 XT8sXHMqdlswLTldKyxccyotMTYsXHMqdjAudAorKiogdGgudnNoLnZcdHZbMC05XSssMFwoW2Et eDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjIgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCBpbnQz Ml90IHgpCit7CivCoCDCoCB2Ym9vbDMyX3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKg IGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CivCoCDCoCB2aW50MzJtMV90IHYgPSBfX3Jp c2N2X3RoX3ZsaF92X2kzMm0xIChpbiwgNCk7CivCoCDCoCB2aW50MzJtMV90IHYyID0gX19yaXNj dl90aF92bGhfdl9pMzJtMV9tIChtYXNrLCBpbiwgNCk7CivCoCDCoCB2aW50MzJtMV90IHYzID0g X19yaXNjdl92YWRkX3Z4X2kzMm0xICh2MiwgLTE2LCA0KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjQg PSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTFfbSAobWFzaywgdjMsIC0xNiwgNCk7CivCoCDCoCBfX3Jp c2N2X3RoX3ZzaF92X2kzMm0xIChvdXQsIHY0LCA0KTsKK30KKworLyoKKyoqIGYzOgorKiogdGgu dnNldHZsaVx0W2EteDAtOV0rLHplcm8sZTgsbWY0LHRhLG1hCisqKiB0aC52bG0udlx0dlswLTld KywwXChbYS14MC05XStcKQorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbXUKKyoq IHRoLnZsaFwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudmxoLnZcdHZbMC05XSss MFwoW2EteDAtOV0rXCksdjAudAorKiogdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxc cyotMTYKKyoqIHRoLnZhZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccyotMTYsXHMq djAudAorKiogdGgudnNoLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3Zv aWQgZjMgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCBpbnQzMl90IHgpCit7CivCoCDCoCB2Ym9vbDMy X3QgbWFzayA9ICoodmJvb2wzMl90KilpbjsKK8KgIMKgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVt b3J5Iik7CivCoCDCoCB2aW50MzJtMV90IHYgPSBfX3Jpc2N2X3RoX3ZsaF92X2kzMm0xIChpbiwg NCk7CivCoCDCoCB2aW50MzJtMV90IHYyID0gX19yaXNjdl90aF92bGhfdl9pMzJtMV90dW11ICht YXNrLCB2LCBpbiwgNCk7CivCoCDCoCB2aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X2kz Mm0xICh2MiwgLTE2LCA0KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhf aTMybTFfdHVtdSAobWFzaywgdjMsIHYyLCAtMTYsIDQpOworwqAgwqAgX19yaXNjdl90aF92c2hf dl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGh1LXZzaC5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3IvdmxodS12c2guYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjdjMDA0MDRmMTgKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bGh1LXZz aC5jCkBAIC0wLDAgKzEsNjggQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1tYXJjaD1ydjMyZ2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxwMzJkIC1PMyIgfSAqLwor LyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIiIH0gfSAqLworI2lu Y2x1ZGUgInJpc2N2X3RoX3ZlY3Rvci5oIgorCisvKgorKiogZjE6CisqKiB0aC52c2V0aXZsaVx0 emVybyw0LGUzMixtMSx0dSxtYQorKiogdGgudmxodVwudlx0dlswLTldKywwXChbYS14MC05XStc KQorKiogdGgudmxodVwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudmFkZFwudmlc dHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZhZGRcLnZpXHR2WzAtOV0rLFxzKnZb MC05XSssXHMqLTE2CisqKiB0aC52c2hcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJl dAorKi8KK3ZvaWQgZjEgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQoreworwqAg wqAgdnVpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxodV92X3UzMm0xIChpbiwgNCk7CivCoCDC oCB2dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxodV92X3UzMm0xX3R1ICh2LCBpbiwgNCk7 CivCoCDCoCB2dWludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMSAodjIsIC0xNiwg NCk7CivCoCDCoCB2dWludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF91MzJtMV90dSAodjMs IHYyLCAtMTYsIDQpOworwqAgwqAgX19yaXNjdl90aF92c2hfdl91MzJtMSAob3V0LCB2NCwgNCk7 Cit9CisKKy8qCisqKiBmMjoKKyoqIHRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0 YSxtYQorKiogdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZzZXRpdmxp XHR6ZXJvLDQsZTMyLG0xLHRhLG1hCisqKiB0aC52bGh1LnZcdHZbMC05XSssMFwoW2EteDAtOV0r XCksdjAudAorKiogdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRo LnZhZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccyotMTYsXHMqdjAudAorKiogdGgu dnNoLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjIgKHZvaWQg KiBpbiwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQoreworwqAgwqAgdmJvb2wzMl90IG1hc2sgPSAq KHZib29sMzJfdCopaW47CivCoCDCoCBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOworwqAg wqAgdnVpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmxodV92X3UzMm0xIChpbiwgNCk7CivCoCDC oCB2dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmxodV92X3UzMm0xX20gKG1hc2ssIGluLCA0 KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xICh2MiwgLTE2 LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xX20gKG1h c2ssIHYzLCAtMTYsIDQpOworwqAgwqAgX19yaXNjdl90aF92c2hfdl91MzJtMSAob3V0LCB2NCwg NCk7Cit9CisKKy8qCisqKiBmMzoKKyoqIHRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1m NCx0YSxtYQorKiogdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZzZXRp dmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG11CisqKiB0aC52bGh1XC52XHR2WzAtOV0rLDBcKFthLXgw LTldK1wpCisqKiB0aC52bGh1LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCksdjAudAorKiogdGgu dmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZhZGRcLnZpXHR2WzEt OV1bMC05XT8sXHMqdlswLTldKyxccyotMTYsXHMqdjAudAorKiogdGgudnNoLnZcdHZbMC05XSss MFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjMgKHZvaWQgKiBpbiwgdm9pZCAqb3V0 LCB1aW50MzJfdCB4KQoreworwqAgwqAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47 CivCoCDCoCBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOworwqAgwqAgdnVpbnQzMm0xX3Qg diA9IF9fcmlzY3ZfdGhfdmxodV92X3UzMm0xIChpbiwgNCk7CivCoCDCoCB2dWludDMybTFfdCB2 MiA9IF9fcmlzY3ZfdGhfdmxodV92X3UzMm0xX3R1bXUgKG1hc2ssIHYsIGluLCA0KTsKK8KgIMKg IHZ1aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xICh2MiwgLTE2LCA0KTsKK8Kg IMKgIHZ1aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xX3R1bXUgKG1hc2ssIHYz LCB2MiwgLTE2LCA0KTsKK8KgIMKgIF9fcmlzY3ZfdGhfdnNoX3ZfdTMybTEgKG91dCwgdjQsIDQp OworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhl YWR2ZWN0b3Ivdmx3LXZzdy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94 dGhlYWR2ZWN0b3Ivdmx3LXZzdy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi4xN2E1MzAxMmFjZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYveHRoZWFkdmVjdG9yL3Zsdy12c3cuYwpAQCAtMCwwICsxLDY4IEBACisv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWFyY2g9cnYzMmdjeHRo ZWFkdmVjdG9yIC1tYWJpPWlscDMyZCAtTzMiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBjaGVjay1m dW5jdGlvbi1ib2RpZXMgIioqIiAiIiB9IH0gKi8KKyNpbmNsdWRlICJyaXNjdl90aF92ZWN0b3Iu aCIKKworLyoKKyoqIGYxOgorKiogdGgudnNldGl2bGlcdHplcm8sNCxlMzIsbTEsdHUsbWEKKyoq IHRoLnZsd1wudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogdGgudmx3XC52XHR2WzAtOV0r LDBcKFthLXgwLTldK1wpCisqKiB0aC52YWRkXC52eFx0dlswLTldKyxccyp2WzAtOV0rLFxzKlth LXgwLTldKworKiogdGgudmFkZFwudnhcdHZbMC05XSssXHMqdlswLTldKyxccypbYS14MC05XSsK KyoqIHRoLnZzd1wudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBm MSAodm9pZCAqIGluLCB2b2lkICpvdXQsIGludDMyX3QgeCkKK3sKK8KgIMKgIHZpbnQzMm0xX3Qg diA9IF9fcmlzY3ZfdGhfdmx3X3ZfaTMybTEgKGluLCA0KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjIg PSBfX3Jpc2N2X3RoX3Zsd192X2kzMm0xX3R1ICh2LCBpbiwgNCk7CivCoCDCoCB2aW50MzJtMV90 IHYzID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xICh2MiwgeCwgNCk7CivCoCDCoCB2aW50MzJtMV90 IHY0ID0gX19yaXNjdl92YWRkX3Z4X2kzMm0xX3R1ICh2MywgdjIsIHgsIDQpOworwqAgwqAgX19y aXNjdl90aF92c3dfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMjoKKyoqIHRo LnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxtYQorKiogdGgudmxtLnZcdHZbMC05 XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHRhLG1hCisq KiB0aC52bHcudlx0dlswLTldKywwXChbYS14MC05XStcKSx2MC50CisqKiB0aC52YWRkXC52eFx0 dlswLTldKyxccyp2WzAtOV0rLFxzKlthLXgwLTldKworKiogdGgudmFkZFwudnhcdHZbMS05XVsw LTldPyxccyp2WzAtOV0rLFxzKlthLXgwLTldKyxccyp2MC50CisqKiB0aC52c3cudlx0dlswLTld KywwXChbYS14MC05XStcKQorKiogcmV0CisqLwordm9pZCBmMiAodm9pZCAqIGluLCB2b2lkICpv dXQsIGludDMyX3QgeCkKK3sKK8KgIMKgIHZib29sMzJfdCBtYXNrID0gKih2Ym9vbDMyX3QqKWlu OworwqAgwqAgYXNtIHZvbGF0aWxlICgiIjo6OiJtZW1vcnkiKTsKK8KgIMKgIHZpbnQzMm0xX3Qg diA9IF9fcmlzY3ZfdGhfdmx3X3ZfaTMybTEgKGluLCA0KTsKK8KgIMKgIHZpbnQzMm0xX3QgdjIg PSBfX3Jpc2N2X3RoX3Zsd192X2kzMm0xX20gKG1hc2ssIGluLCA0KTsKK8KgIMKgIHZpbnQzMm0x X3QgdjMgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTEgKHYyLCB4LCA0KTsKK8KgIMKgIHZpbnQzMm0x X3QgdjQgPSBfX3Jpc2N2X3ZhZGRfdnhfaTMybTFfbSAobWFzaywgdjMsIHgsIDQpOworwqAgwqAg X19yaXNjdl90aF92c3dfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMzoKKyoq IHRoLnZzZXR2bGlcdFthLXgwLTldKyx6ZXJvLGU4LG1mNCx0YSxtYQorKiogdGgudmxtLnZcdHZb MC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG11 CisqKiB0aC52bHdcLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHRoLnZsdy52XHR2WzAt OV0rLDBcKFthLXgwLTldK1wpLHYwLnQKKyoqIHRoLnZhZGRcLnZ4XHR2WzAtOV0rLFxzKnZbMC05 XSssXHMqW2EteDAtOV0rCisqKiB0aC52YWRkXC52eFx0dlsxLTldWzAtOV0/LFxzKnZbMC05XSss XHMqW2EteDAtOV0rLFxzKnYwLnQKKyoqIHRoLnZzdy52XHR2WzAtOV0rLDBcKFthLXgwLTldK1wp CisqKiByZXQKKyovCit2b2lkIGYzICh2b2lkICogaW4sIHZvaWQgKm91dCwgaW50MzJfdCB4KQor eworwqAgwqAgdmJvb2wzMl90IG1hc2sgPSAqKHZib29sMzJfdCopaW47CivCoCDCoCBhc20gdm9s YXRpbGUgKCIiOjo6Im1lbW9yeSIpOworwqAgwqAgdmludDMybTFfdCB2ID0gX19yaXNjdl90aF92 bHdfdl9pMzJtMSAoaW4sIDQpOworwqAgwqAgdmludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3 X3ZfaTMybTFfdHVtdSAobWFzaywgdiwgaW4sIDQpOworwqAgwqAgdmludDMybTFfdCB2MyA9IF9f cmlzY3ZfdmFkZF92eF9pMzJtMSAodjIsIHgsIDQpOworwqAgwqAgdmludDMybTFfdCB2NCA9IF9f cmlzY3ZfdmFkZF92eF9pMzJtMV90dW11IChtYXNrLCB2MywgdjIsIHgsIDQpOworwqAgwqAgX19y aXNjdl90aF92c3dfdl9pMzJtMSAob3V0LCB2NCwgNCk7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZlY3Rvci92bHd1LXZzdy5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di94dGhlYWR2ZWN0b3Ivdmx3dS12c3cuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjE4N2NmYzg1MmIKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L3h0aGVhZHZl Y3Rvci92bHd1LXZzdy5jCkBAIC0wLDAgKzEsNjggQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2N4dGhlYWR2ZWN0b3IgLW1hYmk9aWxwMzJk IC1PMyIgfSAqLworLyogeyBkZy1maW5hbCB7IGNoZWNrLWZ1bmN0aW9uLWJvZGllcyAiKioiICIi IH0gfSAqLworI2luY2x1ZGUgInJpc2N2X3RoX3ZlY3Rvci5oIgorCisvKgorKiogZjE6CisqKiB0 aC52c2V0aXZsaVx0emVybyw0LGUzMixtMSx0dSxtYQorKiogdGgudmx3dVwudlx0dlswLTldKyww XChbYS14MC05XStcKQorKiogdGgudmx3dVwudlx0dlswLTldKywwXChbYS14MC05XStcKQorKiog dGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZhZGRcLnZpXHR2 WzAtOV0rLFxzKnZbMC05XSssXHMqLTE2CisqKiB0aC52c3dcLnZcdHZbMC05XSssMFwoW2EteDAt OV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjEgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJf dCB4KQoreworwqAgwqAgdnVpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmx3dV92X3UzMm0xIChp biwgNCk7CivCoCDCoCB2dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3dV92X3UzMm0xX3R1 ICh2LCBpbiwgNCk7CivCoCDCoCB2dWludDMybTFfdCB2MyA9IF9fcmlzY3ZfdmFkZF92eF91MzJt MSAodjIsIC0xNiwgNCk7CivCoCDCoCB2dWludDMybTFfdCB2NCA9IF9fcmlzY3ZfdmFkZF92eF91 MzJtMV90dSAodjMsIHYyLCAtMTYsIDQpOworwqAgwqAgX19yaXNjdl90aF92c3dfdl91MzJtMSAo b3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMjoKKyoqIHRoLnZzZXR2bGlcdFthLXgwLTldKyx6 ZXJvLGU4LG1mNCx0YSxtYQorKiogdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoq IHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHRhLG1hCisqKiB0aC52bHd1LnZcdHZbMC05XSss MFwoW2EteDAtOV0rXCksdjAudAorKiogdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxc cyotMTYKKyoqIHRoLnZhZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccyotMTYsXHMq djAudAorKiogdGgudnN3LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3Zv aWQgZjIgKHZvaWQgKiBpbiwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQoreworwqAgwqAgdmJvb2wz Ml90IG1hc2sgPSAqKHZib29sMzJfdCopaW47CivCoCDCoCBhc20gdm9sYXRpbGUgKCIiOjo6Im1l bW9yeSIpOworwqAgwqAgdnVpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmx3dV92X3UzMm0xIChp biwgNCk7CivCoCDCoCB2dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3dV92X3UzMm0xX20g KG1hc2ssIGluLCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X3Uz Mm0xICh2MiwgLTE2LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4 X3UzMm0xX20gKG1hc2ssIHYzLCAtMTYsIDQpOworwqAgwqAgX19yaXNjdl90aF92c3dfdl91MzJt MSAob3V0LCB2NCwgNCk7Cit9CisKKy8qCisqKiBmMzoKKyoqIHRoLnZzZXR2bGlcdFthLXgwLTld Kyx6ZXJvLGU4LG1mNCx0YSxtYQorKiogdGgudmxtLnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkK KyoqIHRoLnZzZXRpdmxpXHR6ZXJvLDQsZTMyLG0xLHR1LG11CisqKiB0aC52bHd1XC52XHR2WzAt OV0rLDBcKFthLXgwLTldK1wpCisqKiB0aC52bHd1LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCks djAudAorKiogdGgudmFkZFwudmlcdHZbMC05XSssXHMqdlswLTldKyxccyotMTYKKyoqIHRoLnZh ZGRcLnZpXHR2WzEtOV1bMC05XT8sXHMqdlswLTldKyxccyotMTYsXHMqdjAudAorKiogdGgudnN3 LnZcdHZbMC05XSssMFwoW2EteDAtOV0rXCkKKyoqIHJldAorKi8KK3ZvaWQgZjMgKHZvaWQgKiBp biwgdm9pZCAqb3V0LCB1aW50MzJfdCB4KQoreworwqAgwqAgdmJvb2wzMl90IG1hc2sgPSAqKHZi b29sMzJfdCopaW47CivCoCDCoCBhc20gdm9sYXRpbGUgKCIiOjo6Im1lbW9yeSIpOworwqAgwqAg dnVpbnQzMm0xX3QgdiA9IF9fcmlzY3ZfdGhfdmx3dV92X3UzMm0xIChpbiwgNCk7CivCoCDCoCB2 dWludDMybTFfdCB2MiA9IF9fcmlzY3ZfdGhfdmx3dV92X3UzMm0xX3R1bXUgKG1hc2ssIHYsIGlu LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHYzID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xICh2Miwg LTE2LCA0KTsKK8KgIMKgIHZ1aW50MzJtMV90IHY0ID0gX19yaXNjdl92YWRkX3Z4X3UzMm0xX3R1 bXUgKG1hc2ssIHYzLCB2MiwgLTE2LCA0KTsKK8KgIMKgIF9fcmlzY3ZfdGhfdnN3X3ZfdTMybTEg KG91dCwgdjQsIDQpOworfQotLSAKMi4xNy4xCiAKIArCoArCoArCoArCoAoKCg==