From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id AD3A64210D for ; Sat, 28 May 2022 13:25:45 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BE4B768B5CE; Sat, 28 May 2022 16:25:35 +0300 (EEST) Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A02E268B488 for ; Sat, 28 May 2022 16:25:28 +0300 (EEST) Received: by mail-pf1-f169.google.com with SMTP id c65so6073477pfb.1 for ; Sat, 28 May 2022 06:25:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:in-reply-to:references:from:date:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=kSS9saIN/fQa2fPCVDIdRvNwnWyuN2/RcTs13txtHjI=; b=YQjxZoW2nNOkqu4KfKJjn9JeAuOmioGDbIdi9VfFv5XqzPzVBUpEwPzHrx+VWMMp4H ObwzSanJ3s2BykNLPCT7ayYZ/u5PSPVovmkvMhgTq8wVEPFSXuOJaxpBa4EfmHB6KjEa faKfAVllXvI5DE27raaRyQh/ihza+ZpIJ0iCjDG8IE6fxi0V/i3jjksD7Wps5WLBsyYv AWBTAxGpqzox9xSpmFJHKZ1NDZOFA1hSX+XCZ4+jUnsC8bf6Q/VbFHXXFviXRaZ7ps1s hE8i0DjOm3FprO+woDp7fw5r9J+s3udheLGJTdyzjlpke8OGAuAf0qdp+AVEZ7Zk74nN 2j1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:in-reply-to:references:from:date :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=kSS9saIN/fQa2fPCVDIdRvNwnWyuN2/RcTs13txtHjI=; b=pLOk5ZLIarEmmg/cOi6ScVTcnJd84c2sxN1IAyKleG/BLpRar0hMgapObvuOIEurFr QCvTyaHAgF5Ny3TdeN1Il3eS9t9bhIb3GGeN3oEO/X6jjSIzHxzQhuuKGQB9dWXjKANQ 4NymwqvS4uuGr3qyivI+smhFW911WIKwER+eu+pJ4XNrGoJ+uJYqZKuOR0YgfoFgDrFl 1TEbA3fbX1ReTLgoNw3z2MvvIVwxqpLMu61W/9w9XukXCaljuQJ0BlKDUPcrn9kkkz17 XA9mbX+DaWbiUn7hP85mSJJsSHSAuP4Y3LJF5mTfbbq7VQTR9fWV2xICLNOwsRocpKfv FZRg== X-Gm-Message-State: AOAM530vgcCIEv+AzTBvduWeu0PFuvpNU9qf0sdPVPBX3JLf5jf75wb2 pPrzkXu5lLUsjP87j0+EccJZ64B2w5iDAw== X-Google-Smtp-Source: ABdhPJw515nH3rrXJkD3v2hhIPbY+6TpWYGX/BlQjP1rJFePic42pGjRlOotxY44ocLouvyvTzksxg== X-Received: by 2002:aa7:9047:0:b0:519:36a2:9f63 with SMTP id n7-20020aa79047000000b0051936a29f63mr7921494pfo.60.1653744325612; Sat, 28 May 2022 06:25:25 -0700 (PDT) Received: from [127.0.0.1] (master.gitmailbox.com. [34.83.118.50]) by smtp.gmail.com with ESMTPSA id e25-20020aa78c59000000b005182d0a3d5csm5368572pfd.7.2022.05.28.06.25.24 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 28 May 2022 06:25:24 -0700 (PDT) Message-Id: In-Reply-To: References: From: ffmpegagent Date: Sat, 28 May 2022 13:25:00 +0000 Fcc: Sent MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH v4 00/23] Subtitle Filtering 2022 X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Michael Niedermayer , softworkz , Andriy Gelman , Andreas Rheinhardt Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: ClN1YnRpdGxlIEZpbHRlcmluZyAyMDIyCj09PT09PT09PT09PT09PT09PT09PT09CgpUaGlzIGlz IGEgc3Vic3RhbnRpYWwgdXBkYXRlIHRvIHRoZSBlYXJsaWVyIHN1YnRpdGxlIGZpbHRlcmluZyBw YXRjaCBzZXJpZXMuCkEgcHJpbWFyeSBnb2FsIGhhcyBiZWVuIHRvIGFkZHJlc3Mgb3RoZXJzJyBj b25jZXJucyBhcyBtdWNoIGFzIHBvc3NpYmxlIG9uCm9uZSBzaWRlIGFuZCB0byBwcm92aWRlIG1v cmUgY2xhcml0eSBhbmQgY29udHJvbCBvdmVyIHRoZSB3YXkgdGhpbmdzIGFyZQp3b3JraW5nLiBD bGFyaXR5IGlzIGlzIHNwZWNpZmljYWxseSBpbXBvcnRhbnQgdG8gYWxsb3cgZm9yIGEgYmV0dGVy CnVuZGVyc3RhbmRpbmcgb2YgdGhlIG5lZWQgZm9yIGEgc3VidGl0bGUgc3RhcnQgcHRzIHZhbHVl IHRoYXQgY2FuIGJlCmRpZmZlcmVudCBmcm9tIHRoZSBmcmFtZSdzIHB0cyB2YWx1ZS4gVGhpcyBp cyBkb25lIGJ5IHJlZmFjdG9yaW5nIHRoZQpzdWJ0aXRsZSB0aW1pbmcgZmllbGRzIGluIEFWRnJh bWUsIGFkZGluZyBhIGZyYW1lIGZpZWxkIHRvIGluZGljYXRlIHJlcGVhdGVkCnN1YnRpdGxlIGZy YW1lcywgYW5kIGZpbmFsbHkgdGhlIGZ1bGwgcmVtb3ZhbCBvZiB0aGUgaGVhcnRiZWF0CmZ1bmN0 aW9uYWxpdHksIHJlcGxhY2VkIGJ5IGEgbmV3ICdzdWJmZWVkJyBmaWx0ZXIgdGhhdCBwcm92aWRl cyBkaWZmZXJlbnQKbW9kZXMgZm9yIGFyYml0cmF0aW5nIHN1YnRpdGxlIGZyYW1lcyBpbiBhIGZp bHRlciBncmFwaC4gRmluYWxseSwgZWFjaApzdWJ0aXRsZSBmaWx0ZXIncyBkb2N1bWVudGF0aW9u IGhhcyBiZWVuIGFtZW5kZWQgYnkgYSBzZWN0aW9uIGRlc2NyaWJpbmcgdGhlCmZpbHRlcidzIHRp bWVsaW5lIGJlaGF2aW9yIChpbiB2MyB1cGRhdGUpLgoKVGhlIHVwZGF0ZSBhbHNvIGluY2x1ZGVz IG1ham9yIGltcHJvdmVtZW50cyB0byBncmFwaGljc3ViMnRleHQgYW5kIGxvdHMgb2YKb3RoZXIg ZGV0YWlscy4KClZlcnNpb25pbmcgaXMgcmVzdGFydGluZyBhdCB2MSBkdWUgdG8gdGhlIG5ldyBz dWJtaXNzaW9uIHByb2NlZHVyZS4KCgp2NCAtIFF1YWxpdHkgSW1wcm92ZW1lbnRzCj09PT09PT09 PT09PT09PT09PT09PT09PT0KCiAqIGZpbmFsbHkgYW4gdXBkYXRlZCB2ZXJzaW9uCiAqIGluY2x1 ZGVzIG1hbnkgaW1wcm92ZW1lbnRzIGZyb20gaW50ZXJuYWwgdGVzdGluZwogKiBhbGwgRkFURSB0 ZXN0cyBwYXNzZWQKICogYWxsIGV4YW1wbGUgY29tbWFuZHMgZnJvbSB0aGUgZG9jcyB2ZXJpZmll ZCB0byB3b3JrCiAqIGNhbid0IGxpc3QgYWxsIHRoZSBkZXRhaWwgY2hhbmdlcy4uCiAqIEkgaGF2 ZSBsZWZ0IG91dCB0aGUgZXh0cmEgY29tbWl0cyB3aGljaCBjYW4gYmUgaGFuZGxlZCBzZXBhcmF0 ZWx5LCBqdXN0CiAgIGluIGNhc2Ugc29tZWJvZHkgd29uZGVycyB3aHkgdGhlc2UgYXJlIG1pc3Np bmc6CiAgICogYXZjb2RlYy93ZWJ2dHRlbmM6IERvbid0IGVuY29kZSBkcmF3aW5nIGNvZGVzIGFu ZCBlbXB0eSBsaW5lcwogICAqIGF2Y29kZWMvd2VidnR0ZW5jOiBjb252ZXJ0IGhhcmQtc3BhY2Ug dGFncyB0byDCoAogICAqIGF2dXRpbC9hc3Nfc3BsaXQ6IEFkZCBwYXJzaW5nIG9mIGhhcmQtc3Bh Y2UgdGFncyAoXGgpCiAgICogYXZ1dGlsL2Fzc19zcGxpdDogVHJlYXQgYWxsIGNvbnRlbnQgaW4g Y3VybHkgYnJhY2VzIGFzIGhpZGRlbgogICAqIGF2dXRpbC9hc3Nfc3BsaXQ6IEZpeCBhc3MgcGFy c2luZyBvZiBzdHlsZSBjb2RlcyB3aXRoIGNvbW1lbnRzCgoKdjMgLSBSZWJhc2UKPT09PT09PT09 PT0KCmR1ZSB0byBtZXJnZSBjb25mbGljdHMgLSBhcG9sb2dpZXMuCgoKQ2hhbmdlcyBpbiB2Mgo9 PT09PT09PT09PT09CgogKiBhZGRlZCAuZ2l0YXR0cmlidXRlcyBmaWxlIHRvIGVuZm9yY2UgYmlu YXJ5IGRpZmZzIGZvciB0aGUgdGVzdCByZWZzIHRoYXQKICAgY2Fubm90IGJlIGFwcGxpZWQgd2hl biBiZWluZyBzZW50IHZpYSBlLW1haWwKICogcGVyZm9ybSBmaWx0ZXIgZ3JhcGggcmUtaW5pdCBk dWUgdG8gc3VidGl0bGUgImZyYW1lIHNpemUiIGNoYW5nZSBvbmx5CiAgIHdoZW4gdGhlIHNpemUg d2FzIHVua25vd24gYmVmb3JlIGFuZCBub3Qgc2V0IHZpYSAtY2FudmFzX3NpemUKICogb3Zlcmxh eXRleHRzdWJzOiBNYWtlIHN1cmUgdG8gcmVxdWVzdCBmcmFtZXMgb24gdGhlIHN1YnRpdGxlIGlu cHV0CiAqIGF2ZmlsdGVyL3NwbGl0Y2M6IFN0YXJ0IHBhcnNpbmcgY2MgZGF0YSBvbiBrZXkgZnJh bWVzIG9ubHkKICogYXZjb2RlYy93ZWJ2dHRlbmM6IERvbid0IGVuY29kZSBhc3MgZHJhd2luZyBj b2RlcyBhbmQgZW1wdHkgbGluZXMKICogc3RyaXBzdHlsZXM6IGZpeCBtZW0gbGVhawogKiBnczJ0 OiBpbXByb3ZlIGNvbG9yIGRldGVjdGlvbgogKiBnczJ0OiBlbXB0eSBmcmFtZXMgbXVzdCBub3Qg YmUgc2tpcHBlZAogKiBzdWJmZWVkOiBmaXggbmFtZQogKiB0ZXh0bW9kOiBwcmVzZXJ2ZSBtYXJn aW5zCiAqIGFkZGVkIC5naXRhdHRyaWJ1dGVzIGZpbGUgdG8gZW5mb3JjZSBiaW5hcnkgZGlmZnMg Zm9yIHRoZSB0ZXN0IHJlZnMgdGhhdAogICBjYW5ub3QgYmUgYXBwbGllZCB3aGVuIGJlaW5nIHNl bnQgdmlhIGUtbWFpbAogKiBwZXJmb3JtIGZpbHRlciBncmFwaCByZS1pbml0IGR1ZSB0byBzdWJ0 aXRsZSAiZnJhbWUgc2l6ZSIgY2hhbmdlIG9ubHkKICAgd2hlbiB0aGUgc2l6ZSB3YXMgdW5rbm93 biBiZWZvcmUgYW5kIG5vdCBzZXQgdmlhIC1jYW52YXNfc2l6ZQogKiBhdmNvZGVjL2R2YnN1YmRl YzogRml4IGNvbmRpdGlvbnMgZm9yIGZhbGxiYWNrIHRvIGRlZmF1bHQgcmVzb2x1dGlvbgogKiBN YWRlIGNoYW5nZXMgc3VnZ2VzdGVkIGJ5IEFuZHJlYXMKICogRml4ZWQgZmFpbGluZyBjb21tYW5k IGxpbmUgcmVwb3J0ZWQgYnkgTWljaGFlbAoKQ2hhbmdlcyBmcm9tIHByZXZpb3VzIHZlcnNpb24g djI0OgoKCkFWRnJhbWUKPT09PT09PQoKICogUmVtb3ZlZCBzdWJfc3RhcnRfdGltZSBUaGUgc3Rh cnQgdGltZSBpcyBub3cgYWRkZWQgdG8gdGhlIHN1YnRpdGxlCiAgIHN0YXJ0X3B0cyBkdXJpbmcg ZGVjb2RpbmcgVGhlIHN1Yl9lbmRfdGltZSBmaWVsZCBpcyBhZGp1c3RlZCBhY2NvcmRpbmdseQog KiBSZW5hbWVkIHN1Yl9lbmRfdGltZSB0byBkdXJhdGlvbiB3aGljaCBpdCBpcyBlZmZlY3RpdmVs eSBhZnRlciByZW1vdmluZwogICB0aGUgc3RhcnRfdGltZQogKiBBZGRlZCBhIHN1Yi1zdHJ1Y3Qg J3N1YnRpdGxlX3RpbWluZycgdG8gYXYgZnJhbWUgQ29udGFpbnMgc3VidGl0bGVfcHRzCiAgIHJl bmFtZWQgdG8gJ3N1YnRpdGxlX3RpbWluZy5zdGFydF9wdHMnIGFuZCAnc3VidGl0bGVfdGltaW5n LmR1cmF0aW9uJwogKiBDaGFuZ2UgYm90aCBmaWVsZHMgdG8gKGZpeGVkKSB0aW1lX2Jhc2UgQVZf VElNRUJBU0UKICogYWRkIHJlcGVhdF9zdWIgZmllbGQgcHJvdmlkZXMgYSBjbGVhciBpbmRpY2F0 aW9uIHdoZXRoZXIgYSBzdWJ0aXRsZSBmcmFtZQogICBpcyBhbiBhY3R1YWwgc3VidGl0bGUgZXZl bnQgb3IgYSByZXBlYXRlZCBzdWJ0aXRsZSBmcmFtZSBpbiBhIGZpbHRlcgogICBncmFwaAoKCkhl YXJ0YmVhdCBSZW1vdmFsCj09PT09PT09PT09PT09PT09CgogKiBjb21wbGV0ZWx5IHJlbW92ZWQg dGhlIGVhcmxpZXIgaGVhcnRiZWF0IGltcGxlbWVudGF0aW9uCiAqIGZpbHRlcmluZyBhcmJpdHJh dGlvbiBpcyBub3cgaW1wbGVtZW50ZWQgaW4gYSBuZXcgZmlsdGVyOiAnc3ViZmVlZCcKICogc3Vi ZmVlZCB3aWxsIGJlIGF1dG8taW5zZXJ0ZWQgZm9yIGNvbXBhdGlibGl0eSB3aXRoIHN1YjJ2aWRl byBjb21tYW5kCiAgIGxpbmVzCiAqIHRoZSBuZXcgYmVoYXZpb3IgaXMgbm90IGV4YWN0bHkgaWRl bnRpY2FsIHRvIHRoZSBlYXJsaWVyIGJlaGF2aW9yLCBidXQgaXQKICAgYmFzaWNhbGx5IGFsbG93 cyB0byBhY2hpZXZlIHRoZSBzYW1lIHJlc3VsdHMKICogdGhlcmUncyBhIHNtYWxsIHJlbWFpbmRl ciwgbm93IG5hbWVkIHN1YnRpdGxlIGtpY2tvZmYgd2hpY2ggc2VydmVzIHRvIGdldAogICB0aGlu Z3MgKGluIHRoZSBmaWx0ZXIgZ3JhcGgpIGdvaW5nIHJpZ2h0IGZyb20gdGhlIHN0YXJ0CgoKTmV3 ICdzdWJmZWVkJyBGaWx0ZXIKPT09PT09PT09PT09PT09PT09PT0KCiAqIGEgdmVyc2F0aWxlIGZp bHRlciBmb3Igc29sdmluZyBhbGwga2luZHMgb2YgcHJvYmxlbXMgd2l0aCBzdWJ0aWxlIGZyYW1l CiAgIGZsb3cgaW4gZmlsdGVyIGdyYXBocwogKiBDYW4gYmUgaW5zZXJ0ZWQgYXQgYW55IHBvc2l0 aW9uIGluIGEgZ3JhcGgKICogQXV0by1pbnNlcnRlZCBmb3Igc3ViMnZpZGVvIGNvbW1hbmQgbGlu ZXMgKGluIHJlcGVhdC1tb2RlKQogKiBBbGxvd3MgZHVyYXRpb24gZml4dXAgZGVsYXkgaW5wdXQg ZnJhbWVzIHdpdGggdW5rbm93biBkdXJhdGlvbiBhbmQgaW5mZXIKICAgZHVyYXRpb24gZnJvbSBz dGFydCBvZiBzdWJzZXF1ZW50IGZyYW1lCiAqIFByb3ZpZGVzIG11bHRpcGxlIG1vZGVzIG9mIG9w ZXJhdGlvbjoKICAgKiByZXBlYXQgbW9kZSAoZGVmYXVsdCkgUXVldWVzIGlucHV0IGZyYW1lcyBP dXRwdXRzIGZyYW1lcyBhdCBhIGZpeGVkCiAgICAgKGNvbmZpZ3VyYWJsZSkgcmF0ZSBFaXRoZXIg c2VuZHMgYSBtYXRjaGluZyBpbnB1dCBmcmFtZSAocmVwZWF0ZWRseSkgb3IKICAgICBlbXB0eSBm cmFtZXMgb3RoZXJ3aXNlCiAgICogc2NhdHRlciBtb2RlIHNpbWlsYXIgdG8gcmVwZWF0IG1vZGUs IGJ1dCBzcGxpdHMgaW5wdXQgZnJhbWVzIGJ5CiAgICAgZHVyYXRpb24gaW50byBzbWFsbCBzZWdt ZW50cyB3aXRoIHNhbWUgY29udGVudAogICAqIGZvcndhcmQgbW9kZSBObyBmaXhlZCBvdXRwdXQg cmF0ZSBVc2VmdWwgaW4gY29tYmluYXRpb24gd2l0aCBkdXJhdGlvbgogICAgIGZpeHVwIG9yIG92 ZXJsYXAgZml4dXAKCgpmZm1wZWcgVG9vbCBDaGFuZ2VzCj09PT09PT09PT09PT09PT09PT0KCiAq IGRlbGF5IHN1YnRpdGxlIG91dHB1dCBzdHJlYW0gaW5pdGlhbGl6YXRpb24gKGxpa2UgZm9yIGF1 ZGlvIGFuZCB2aWRlbykKICAgVGhpcyBpcyBuZWVkZWQgZm9yIGV4YW1wbGUgd2hlbiBhIGZvcm1h dCBoZWFkZXIgZGVwZW5kcyBvbiBoYXZpbmcKICAgcmVjZWl2ZWQgYW4gaW5pdGlhbCBmcmFtZSB0 byBkZXJpdmUgY2VydGFpbiBoZWFkZXIgdmFsdWVzIGZyb20KICogZGVjb2Rpbmc6IHNldCBzdWJ0 aXRsZSBmcmFtZSBzaXplIGZyb20gZGVjb2RpbmcgY29udGV4dAogKiByZS1pbml0IGdyYXBoIHdo ZW4gc3VidGl0bGUgc2l6ZSBjaGFuZ2VzCiAqIGFsd2F5cyBpbnNlcnQgc3Vic2NhbGUgZmlsdGVy IGZvciBzdWIydmlkZW8gY29tbWFuZCBsaW5lcyAodG8gZW5zdXJlCiAgIGNvcnJlY3Qgc2NhbGlu ZykKCgpTdWJ0aXRsZSBFbmNvZGluZwo9PT09PT09PT09PT09PT09PQoKICogaWdub3JlIHJlcGVh dGVkIGZyYW1lcyBmb3IgZW5jb2RpbmcgYmFzZWQgb24gcmVwZWF0X3N1YiBmaWVsZCBpbiBBVkZy YW1lCiAqIHN1cHBvcnQgbXVsdGktYXJlYSBlbmNvZGluZyBmb3IgdGV4dCBzdWJ0aXRsZXMgU3Vi dGl0bGUgT0NSIGNhbiBjcmVhdGUKICAgbXVsdGlwbGUgYXJlYXMgYXQgZGlmZmVyZW50IHBvc2l0 aW9ucy4gUHJldmlvdXNseSwgdGhlIHRleHRzIHdlcmUgYWx3YXlzCiAgIHNxdWFzaGVkIGludG8g YSBzaW5nbGUgYXJlYSAoJ3N1YnRpdGxlIHJlY3QnKSwgd2hpY2ggd2FzIG5vdCBpZGVhbC4KICAg TXVsdGlwbGUgdGV4dCBhcmVhcyBhcmUgbm93IGdlbmVyYWxseSBzdXBwb3J0ZWQ6CiAgICogQVNT IEVuY29kZXIgQ2hhbmdlZCB0byB1c2UgdGhlICdyZWNlaXZlX3BhY2tldCcgZW5jb2RpbmcgQVBJ IEEgc2luZ2xlCiAgICAgZnJhbWUgd2l0aCBtdWx0aXBsZSB0ZXh0IGFyZWFzIHdpbGwgY3JlYXRl IG11bHRpcGxlIHBhY2tldHMgbm93CiAgICogQWxsIG90aGVyIHRleHQgc3VidGl0bGUgZW5jb2Rl cnMgQSBuZXdsaW5lIGlzIGluc2VydGVkIGJldHdlZW4gdGhlIHRleHQKICAgICBmcm9tIG11bHRp cGxlIGFyZWFzCgoKZ3JhcGhpY3N1YjJ0ZXh0IChPQ1IpCj09PT09PT09PT09PT09PT09PT09PQoK ICogZW5oYW5jZWQgcHJlcHJvY2Vzc2luZwogICAqIHVzaW5nIGVsYmcgYWxnb3JpdGhtIGZvciBj b2xvciBxdWFudGl6YXRpb24KICAgKiBkZXRlY3Rpb24gYW5kIHJlbW92YWwgb2YgdGV4dCBvdXRs aW5lcwogICAqIG1hcC1iYXNlZCBpZGVudGlmaWNhdGlvbiBvZiBjb2xvcnMgcGVyIHdvcmQgKHRl eHQsIG91dGxpbmUsIGJhY2tncm91bmQpCiAqIGFkZCBvcHRpb24gZm9yIGR1cmF0aW9uIGZpeHVw CiAqIGFkZCBvcHRpb24gdG8gZHVtcCBwcmVwcm9jZXNzaW5nIGJpdG1hcHMKICogUmVjb2duaXpl IGZvcm1hdHRpbmcgYW5kIGFwcGx5IGFzIEFTUyBpbmxpbmUgc3R5bGVzCiAgICogcGVyIHdvcmQo ISkKICAgKiBwYXJhZ3JhcGggYWxpZ25tZW50CiAgICogcG9zaXRpb25pbmcKICAgKiBmb250IG5h bWVzCiAgICogZm9udCBzaXplCiAgICogZm9udCBzdHlsZSAoaXRhbGljLCB1bmRlcmxpbmUsIGJv bGQpCiAgICogdGV4dCBjb2xvciwgb3V0bGluZSBjb2xvcgoKCk90aGVyIEZpbHRlciBDaGFuZ2Vz Cj09PT09PT09PT09PT09PT09PT09CgogKiBhbGw6IE1ha2Ugc3VyZSB0byBmb3J3YXJkIGFsbCBs aW5rIHByb3BlcnRpZXMgKHRpbWUgYmFzZSwgZnJhbWUgcmF0ZSwgdywKICAgaCkgd2hlcmUgYXBw cm9wcmlhdGUKICogb3ZlcmxheXRleHRzdWJzOiByZXF1ZXN0IGZyYW1lcyBvbiB0aGUgc3VidGl0 bGUgaW5wdXQKICogb3ZlcmxheXRleHRzdWJzOiBkaXNhYmxlIHJlYWQtb3JkZXIgY2hlY2tpbmcK ICogb3ZlcmxheXRleHRzdWJzOiBpbXByb3ZlIGltcGxlbWVudGF0aW9uIG9mIHJlbmRlcl9sYXRl c3Rfb25seQogKiBvdmVybGF5dGV4dHN1YnM6IGVuc3VyZSBlcXVhbCBpbi9vdXQgdmlkZW8gZm9y bWF0cwogKiBzcGxpdGNjOiBkZXJpdmUgZnJhbWVyYXRlIGZyb20gcmVhbHRpbWVfbGF0ZW5jeQog KiBncmFwaGljc3ViMnZpZGVvOiBpbXBsZW1lbnQgY2FjaGluZyBvZiBjb252ZXJ0ZWQgZnJhbWVz CiAqIGdyYXBoaWNzdWIydmlkZW86IHVzZSAxeDEgb3V0cHV0IGZyYW1lIHNpemUgYXMgbG9uZyBh cyBzdWJ0aXRsZSBzaXplIGlzCiAgIHVua25vd24gKDB4MCkKClBsdXMgYSBkb3plbiBvZiB0aGlu Z3MgSSBmb3Jnb3QuLgoKc29mdHdvcmt6ICgyMyk6CiAgYXZjb2RlYyxhdnV0aWw6IE1vdmUgZW51 bSBBVlN1YnRpdGxlVHlwZSB0byBhdnV0aWwsIGFkZCBuZXcgYW5kCiAgICBkZXByZWNhdGUgb2xk IHZhbHVlcwogIGF2dXRpbC9mcmFtZTogUHJlcGFyZSBBVkZyYW1lIGZvciBzdWJ0aXRsZSBoYW5k bGluZwogIGF2Y29kZWMvc3VidGl0bGVzOiBJbnRyb2R1Y2UgbmV3IGZyYW1lLWJhc2VkIHN1YnRp dGxlIGRlY29kaW5nIEFQSQogIGF2Y29kZWMvbGlienZiaTogc2V0IHN1YnRpdGxlIHR5cGUKICBh dmZpbHRlci9zdWJ0aXRsZXM6IFVwZGF0ZSB2Zl9zdWJ0aXRsZXMgdG8gdXNlIG5ldyBkZWNvZGlu ZyBhcGkKICBhdmNvZGVjLGF2dXRpbDogTW92ZSBhc3MgaGVscGVyIGZ1bmN0aW9ucyB0byBhdnV0 aWwgYXMgYXZwcml2XyBhbmQKICAgIGV4dGVuZCBhc3MgZGlhbG9nIHBhcnNpbmcKICBhdmNvZGVj L3N1YnRpdGxlczogUmVwbGFjZSBkZXByZWNhdGVkIGVudW0gdmFsdWVzCiAgZmZ0b29scy9wbGF5 LHByb2JlOiBBZGp1c3QgZm9yIHN1YnRpdGxlIGNoYW5nZXMKICBhdmZpbHRlci9zdWJ0aXRsZXM6 IEFkZCBzdWJ0aXRsZXMuYyBmb3Igc3VidGl0bGUgZnJhbWUgYWxsb2NhdGlvbgogIGF2ZmlsdGVy L2F2ZmlsdGVyOiBIYW5kbGUgc3VidGl0bGUgZnJhbWVzCiAgYXZmaWx0ZXIvYXZmaWx0ZXI6IEZp eCBoYXJkY29kZWQgaW5wdXQgaW5kZXgKICBhdmZpbHRlci9zYnVmZmVyOiBBZGQgc2J1ZmZlcnNy YyBhbmQgc2J1ZmZlcnNpbmsgZmlsdGVycwogIGF2ZmlsdGVyL292ZXJsYXlncmFwaGljc3Viczog QWRkIG92ZXJsYXlncmFwaGljc3VicyBhbmQKICAgIGdyYXBoaWNzdWIydmlkZW8gZmlsdGVycwog IGF2ZmlsdGVyL292ZXJsYXl0ZXh0c3ViczogQWRkIG92ZXJsYXl0ZXh0c3VicyBhbmQgdGV4dHN1 YnMydmlkZW8KICAgIGZpbHRlcnMKICBhdmZpbHRlci90ZXh0bW9kOiBBZGQgdGV4dG1vZCwgY2Vu c29yIGFuZCBzaG93X3NwZWFrZXIgZmlsdGVycwogIGF2ZmlsdGVyL3N0cmlwc3R5bGVzOiBBZGQg c3RyaXBzdHlsZXMgZmlsdGVyCiAgYXZmaWx0ZXIvc3BsaXRjYzogQWRkIHNwbGl0Y2MgZmlsdGVy IGZvciBjbG9zZWQgY2FwdGlvbiBoYW5kbGluZwogIGF2ZmlsdGVyL2dyYXBoaWNzdWIydGV4dDog QWRkIG5ldyBncmFwaGljc3ViMnRleHQgZmlsdGVyIChPQ1IpCiAgYXZmaWx0ZXIvc3Vic2NhbGU6 IEFkZCBmaWx0ZXIgZm9yIHNjYWxpbmcgYW5kL29yIHJlLWFycmFuZ2luZwogICAgZ3JhcGhpY2Fs IHN1YnRpdGxlcwogIGF2ZmlsdGVyL3N1YmZlZWQ6IGFkZCBzdWJ0aXRsZSBmZWVkIGZpbHRlcgog IGF2Y29kZWMvc3VidGl0bGVzOiBNaWdyYXRlIHN1YnRpdGxlIGVuY29kZXJzIHRvIGZyYW1lLWJh c2VkIEFQSQogIGZmdG9vbHMvZmZtcGVnOiBJbnRyb2R1Y2Ugc3VidGl0bGUgZmlsdGVyaW5nIGFu ZCBuZXcgZnJhbWUtYmFzZWQKICAgIHN1YnRpdGxlIGVuY29kaW5nCiAgYXZjb2RlYy9kdmJzdWJk ZWM6IEZpeCBjb25kaXRpb25zIGZvciBmYWxsYmFjayB0byBkZWZhdWx0IHJlc29sdXRpb24KCiBj b25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3ICstCiBk b2MvZmlsdGVycy50ZXhpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNzU2ICsrKysr KysrKysKIGZmdG9vbHMvZmZtcGVnLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2 MTAgKysrKy0tLS0KIGZmdG9vbHMvZmZtcGVnLmggICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMTcgKy0KIGZmdG9vbHMvZmZtcGVnX2ZpbHRlci5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAyNDMgKysrLQogZmZ0b29scy9mZm1wZWdfaHcuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgMiArLQogZmZ0b29scy9mZm1wZWdfb3B0LmMgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgNCArLQogZmZ0b29scy9mZnBsYXkuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDEwMiArLQogZmZ0b29scy9mZnByb2JlLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICA0NyArLQogbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICA1NiArLQogbGliYXZjb2RlYy9hc3MuaCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDE1MSArLQogbGliYXZjb2RlYy9hc3NkZWMuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgNCArLQogbGliYXZjb2RlYy9hc3NlbmMuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIDE5MSArKy0KIGxpYmF2Y29kZWMvYXZjb2RlYy5jICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDggKwogbGliYXZjb2RlYy9hdmNvZGVjLmggICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAzNCArLQogbGliYXZjb2RlYy9jY2FwdGlvbl9kZWMuYyAgICAgICAgICAgICAgICAg ICAgIHwgICAyMCArLQogbGliYXZjb2RlYy9jb2RlY19pbnRlcm5hbC5oICAgICAgICAgICAgICAg ICAgIHwgICAxMiAtCiBsaWJhdmNvZGVjL2RlY29kZS5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDYwICstCiBsaWJhdmNvZGVjL2R2YnN1YmRlYy5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDUzICstCiBsaWJhdmNvZGVjL2R2YnN1YmVuYy5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDk2ICstCiBsaWJhdmNvZGVjL2R2ZHN1YmRlYy5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAyICstCiBsaWJhdmNvZGVjL2R2ZHN1YmVuYy5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMTAyICstCiBsaWJhdmNvZGVjL2VuY29kZS5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDYxICstCiBsaWJhdmNvZGVjL2ludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDE2ICsKIGxpYmF2Y29kZWMvamFjb3N1YmRlYy5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvbGliYXJpYmIyNC5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvbGlienZiaS10ZWxldGV4dGRlYy5jICAgICAgICAgICAg ICB8ICAgMTcgKy0KIGxpYmF2Y29kZWMvbWljcm9kdmRkZWMuYyAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDcgKy0KIGxpYmF2Y29kZWMvbW92dGV4dGRlYy5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDMgKy0KIGxpYmF2Y29kZWMvbW92dGV4dGVuYy5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAxMjYgKy0KIGxpYmF2Y29kZWMvbXBsMmRlYy5jICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvcGdzc3ViZGVjLmMgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvcmVhbHRleHRkZWMuYyAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvc2FtaWRlYy5jICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvc3J0ZGVjLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvc3J0ZW5jLmMgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAxMTYgKy0KIGxpYmF2Y29kZWMvc3Vidmlld2VyZGVjLmMgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKy0KIGxpYmF2Y29kZWMvdGVzdHMvYXZjb2RlYy5jICAgICAgICAgICAgICAgICAg ICB8ICAgIDUgKy0KIGxpYmF2Y29kZWMvdGV4dGRlYy5jICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDQgKy0KIGxpYmF2Y29kZWMvdHRtbGVuYy5jICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAxMTQgKy0KIGxpYmF2Y29kZWMvdXRpbHMuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAxODUgKystCiBsaWJhdmNvZGVjL3dlYnZ0dGRlYy5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAyICstCiBsaWJhdmNvZGVjL3dlYnZ0dGVuYy5jICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDk0ICstCiBsaWJhdmNvZGVjL3hzdWJkZWMuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgICAyICstCiBsaWJhdmNvZGVjL3hzdWJlbmMuYyAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDg4ICstCiBsaWJhdmZpbHRlci9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDE1ICsKIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyAgICAgICAgICAgICAgICAgICAg ICB8ICAgMTQgKwogbGliYXZmaWx0ZXIvYXZmaWx0ZXIuYyAgICAgICAgICAgICAgICAgICAgICAg IHwgICAzNCArLQogbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaCAgICAgICAgICAgICAgICAgICAgICAg IHwgICAxMSArCiBsaWJhdmZpbHRlci9hdmZpbHRlcmdyYXBoLmMgICAgICAgICAgICAgICAgICAg fCAgICA1ICsKIGxpYmF2ZmlsdGVyL2J1ZmZlcnNpbmsuYyAgICAgICAgICAgICAgICAgICAgICB8 ICAgNTQgKwogbGliYXZmaWx0ZXIvYnVmZmVyc2luay5oICAgICAgICAgICAgICAgICAgICAgIHwg ICAgNyArCiBsaWJhdmZpbHRlci9idWZmZXJzcmMuYyAgICAgICAgICAgICAgICAgICAgICAgfCAg IDcyICsKIGxpYmF2ZmlsdGVyL2J1ZmZlcnNyYy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDEgKwogbGliYXZmaWx0ZXIvZm9ybWF0cy5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx NiArCiBsaWJhdmZpbHRlci9mb3JtYXRzLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAz ICsKIGxpYmF2ZmlsdGVyL2ludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTkg Ky0KIGxpYmF2ZmlsdGVyL3NmX2dyYXBoaWNzdWIydGV4dC5jICAgICAgICAgICAgICB8IDExMzIg KysrKysrKysrKysrKysrCiBsaWJhdmZpbHRlci9zZl9zcGxpdGNjLmMgICAgICAgICAgICAgICAg ICAgICAgfCAgMzk1ICsrKysrKwogbGliYXZmaWx0ZXIvc2Zfc3RyaXBzdHlsZXMuYyAgICAgICAg ICAgICAgICAgIHwgIDIxMSArKysKIGxpYmF2ZmlsdGVyL3NmX3N1YmZlZWQuYyAgICAgICAgICAg ICAgICAgICAgICB8ICA0MDIgKysrKysrCiBsaWJhdmZpbHRlci9zZl9zdWJzY2FsZS5jICAgICAg ICAgICAgICAgICAgICAgfCAgODg0ICsrKysrKysrKysrKwogbGliYXZmaWx0ZXIvc2ZfdGV4dG1v ZC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDcxMCArKysrKysrKysrCiBsaWJhdmZpbHRlci9z dWJ0aXRsZXMuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYzICsKIGxpYmF2ZmlsdGVyL3N1 YnRpdGxlcy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDQgKwogbGliYXZmaWx0ZXIvdmZf b3ZlcmxheWdyYXBoaWNzdWJzLmMgICAgICAgICAgIHwgIDc2NSArKysrKysrKysrCiBsaWJhdmZp bHRlci92Zl9vdmVybGF5dGV4dHN1YnMuYyAgICAgICAgICAgICAgfCAgNjgwICsrKysrKysrKwog bGliYXZmaWx0ZXIvdmZfc3VidGl0bGVzLmMgICAgICAgICAgICAgICAgICAgIHwgICA2NyArLQog bGliYXZ1dGlsL01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiB7 bGliYXZjb2RlYyA9PiBsaWJhdnV0aWx9L2Fzcy5jICAgICAgICAgICAgICAgfCAgMTE1ICstCiBs aWJhdnV0aWwvYXNzX2ludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAgfCAgMTM1ICsrCiB7 bGliYXZjb2RlYyA9PiBsaWJhdnV0aWx9L2Fzc19zcGxpdC5jICAgICAgICAgfCAgIDMwICstCiAu Li4vYXNzX3NwbGl0X2ludGVybmFsLmggICAgICAgICAgICAgICAgICAgICAgfCAgIDMyICstCiBs aWJhdnV0aWwvZnJhbWUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjExICsrLQog bGliYXZ1dGlsL2ZyYW1lLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4NSArLQog bGliYXZ1dGlsL3N1YmZtdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0NSArCiBs aWJhdnV0aWwvc3ViZm10LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTE1ICsrCiBs aWJhdnV0aWwvdmVyc2lvbi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHRl c3RzL3JlZi9mYXRlL2ZpbHRlci1vdmVybGF5LWR2ZHN1Yi0yMzk3ICAgICB8ICAxODIgKy0tCiB0 ZXN0cy9yZWYvZmF0ZS9zdWItZHZiICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYyICsrLQog dGVzdHMvcmVmL2ZhdGUvc3ViMnZpZGVvICAgICAgICAgICAgICAgICAgICAgIHwgMTA5MSArKysr KysrKysrKysrKy0KIHRlc3RzL3JlZi9mYXRlL3N1YjJ2aWRlb19iYXNpYyAgICAgICAgICAgICAg ICB8IDEyMzggKysrKysrKysrKysrKysrLS0KIHRlc3RzL3JlZi9mYXRlL3N1YjJ2aWRlb190aW1l X2xpbWl0ZWQgICAgICAgICB8ICAgNzggKy0KIDgzIGZpbGVzIGNoYW5nZWQsIDExMTQ5IGluc2Vy dGlvbnMoKyksIDE0MTIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0 ZXIvc2ZfZ3JhcGhpY3N1YjJ0ZXh0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci9z Zl9zcGxpdGNjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci9zZl9zdHJpcHN0eWxl cy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvc2Zfc3ViZmVlZC5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvc2Zfc3Vic2NhbGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYmF2ZmlsdGVyL3NmX3RleHRtb2QuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2ZmlsdGVy L3N1YnRpdGxlcy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmaWx0ZXIvc3VidGl0bGVzLmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmZpbHRlci92Zl9vdmVybGF5Z3JhcGhpY3N1YnMuYwog Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2ZmlsdGVyL3ZmX292ZXJsYXl0ZXh0c3Vicy5jCiByZW5h bWUge2xpYmF2Y29kZWMgPT4gbGliYXZ1dGlsfS9hc3MuYyAoNTklKQogY3JlYXRlIG1vZGUgMTAw NjQ0IGxpYmF2dXRpbC9hc3NfaW50ZXJuYWwuaAogcmVuYW1lIHtsaWJhdmNvZGVjID0+IGxpYmF2 dXRpbH0vYXNzX3NwbGl0LmMgKDk0JSkKIHJlbmFtZSBsaWJhdmNvZGVjL2Fzc19zcGxpdC5oID0+ IGxpYmF2dXRpbC9hc3Nfc3BsaXRfaW50ZXJuYWwuaCAoODYlKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYmF2dXRpbC9zdWJmbXQuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2dXRpbC9zdWJmbXQu aAoKCmJhc2UtY29tbWl0OiA5ZmJhMGI4YThjNzU0YTAxMmZjNzRjOTBmZmI3YzI2YTU2YmU4Y2Ew ClB1Ymxpc2hlZC1BczogaHR0cHM6Ly9naXRodWIuY29tL2Zmc3RhZ2luZy9GRm1wZWcvcmVsZWFz ZXMvdGFnL3ByLWZmc3RhZ2luZy0xOCUyRnNvZnR3b3JreiUyRnN1Ym1pdF9zdWJmaWx0ZXJpbmct djQKRmV0Y2gtSXQtVmlhOiBnaXQgZmV0Y2ggaHR0cHM6Ly9naXRodWIuY29tL2Zmc3RhZ2luZy9G Rm1wZWcgcHItZmZzdGFnaW5nLTE4L3NvZnR3b3Jrei9zdWJtaXRfc3ViZmlsdGVyaW5nLXY0ClB1 bGwtUmVxdWVzdDogaHR0cHM6Ly9naXRodWIuY29tL2Zmc3RhZ2luZy9GRm1wZWcvcHVsbC8xOAoK UmFuZ2UtZGlmZiB2cyB2MzoKCiAgMTogIDc3Njc5MzMyMzUgISAgMTogIDJmM2JhMTcxZjUgYXZj b2RlYyxhdnV0aWw6IE1vdmUgZW51bSBBVlN1YnRpdGxlVHlwZSB0byBhdnV0aWwsIGFkZCBuZXcg YW5kIGRlcHJlY2F0ZSBvbGQgdmFsdWVzCiAgICAgQEAgbGliYXZ1dGlsL3N1YmZtdC5oIChuZXcp CiAgICAgIAogICAgICAgIyMgbGliYXZ1dGlsL3ZlcnNpb24uaCAjIwogICAgICBAQAogICAgIC0g I2RlZmluZSBGRl9BUElfQ09MT1JTUEFDRV9OQU1FICAgICAgICAgIChMSUJBVlVUSUxfVkVSU0lP Tl9NQUpPUiA8IDU4KQogICAgIC0gI2RlZmluZSBGRl9BUElfQVZfTUFMTE9DWl9BUlJBWSAgICAg ICAgIChMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUiA8IDU4KQogICAgIC0gI2RlZmluZSBGRl9BUElf RklGT19QRUVLMiAgICAgICAgICAgICAgIChMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUiA8IDU4KQog ICAgICsgI2RlZmluZSBGRl9BUElfWFZNQyAgICAgICAgICAgICAgICAgICAgIChMSUJBVlVUSUxf VkVSU0lPTl9NQUpPUiA8IDU4KQogICAgICsgI2RlZmluZSBGRl9BUElfT0xEX0NIQU5ORUxfTEFZ T1VUICAgICAgIChMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUiA8IDU4KQogICAgICsgI2RlZmluZSBG Rl9BUElfQVZfRk9QRU5fVVRGOCAgICAgICAgICAgIChMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUiA8 IDU4KQogICAgICArI2RlZmluZSBGRl9BUElfT0xEX1NVQlRJVExFUyAgICAgICAgICAgIChMSUJB VlVUSUxfVkVSU0lPTl9NQUpPUiA8IDU4KQogICAgICAgCiAgICAgICAvKioKICAyOiAgZTkyMmYx NDFiYSAhICAyOiAgZmYxMDFmOGE3NiBhdnV0aWwvZnJhbWU6IFByZXBhcmUgQVZGcmFtZSBmb3Ig c3VidGl0bGUgaGFuZGxpbmcKICAgICBAQCBsaWJhdnV0aWwvZnJhbWUuYwogICAgICArI2luY2x1 ZGUgInN1YmZtdC5oIgogICAgICAgI2luY2x1ZGUgImh3Y29udGV4dC5oIgogICAgICAgCiAgICAg LSAjZGVmaW5lIENIRUNLX0NIQU5ORUxTX0NPTlNJU1RFTkNZKGZyYW1lKSBcCiAgICAgKyAjaWYg RkZfQVBJX09MRF9DSEFOTkVMX0xBWU9VVAogICAgICBAQCBsaWJhdnV0aWwvZnJhbWUuYzogY29u c3QgY2hhciAqYXZfZ2V0X2NvbG9yc3BhY2VfbmFtZShlbnVtIEFWQ29sb3JTcGFjZSB2YWwpCiAg ICAgICAgICAgcmV0dXJuIG5hbWVbdmFsXTsKICAgICAgIH0KICAgICBAQCBsaWJhdnV0aWwvZnJh bWUuYzogc3RhdGljIHZvaWQgZ2V0X2ZyYW1lX2RlZmF1bHRzKEFWRnJhbWUgKmZyYW1lKQogICAg ICAgfQogICAgICAgCiAgICAgICBzdGF0aWMgdm9pZCBmcmVlX3NpZGVfZGF0YShBVkZyYW1lU2lk ZURhdGEgKipwdHJfc2QpCiAgICAgLUBAIGxpYmF2dXRpbC9mcmFtZS5jOiBzdGF0aWMgaW50IGdl dF9hdWRpb19idWZmZXIoQVZGcmFtZSAqZnJhbWUsIGludCBhbGlnbikKICAgICArQEAgbGliYXZ1 dGlsL2ZyYW1lLmM6IEZGX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwogICAgICAgCiAgICAg ICB9CiAgICAgICAKICAgICBAQCBsaWJhdnV0aWwvZnJhbWUuYzogc3RhdGljIGludCBnZXRfYXVk aW9fYnVmZmVyKEFWRnJhbWUgKmZyYW1lLCBpbnQgYWxpZ24pCiAgICAgICt9CiAgICAgICsKICAg ICAgIGludCBhdl9mcmFtZV9nZXRfYnVmZmVyKEFWRnJhbWUgKmZyYW1lLCBpbnQgYWxpZ24pCiAg ICAgLSt7CiAgICAgLSsgICAgaWYgKGZyYW1lLT53aWR0aCA+IDAgJiYgZnJhbWUtPmhlaWdodCA+ IDApCiAgICAgKyB7CiAgICAgKyAgICAgaWYgKGZyYW1lLT5mb3JtYXQgPCAwKQogICAgICtAQCBs aWJhdnV0aWwvZnJhbWUuYzogaW50IGF2X2ZyYW1lX2dldF9idWZmZXIoQVZGcmFtZSAqZnJhbWUs IGludCBhbGlnbikKICAgICArIAogICAgICsgRkZfRElTQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5H UwogICAgICsgICAgIGlmIChmcmFtZS0+d2lkdGggPiAwICYmIGZyYW1lLT5oZWlnaHQgPiAwKQog ICAgICstICAgICAgICByZXR1cm4gZ2V0X3ZpZGVvX2J1ZmZlcihmcmFtZSwgYWxpZ24pOwogICAg ICArICAgICAgICBmcmFtZS0+dHlwZSA9IEFWTUVESUFfVFlQRV9WSURFTzsKICAgICAtKyAgICBl bHNlIGlmIChmcmFtZS0+bmJfc2FtcGxlcyA+IDAgJiYgKGZyYW1lLT5jaGFubmVsX2xheW91dCB8 fCBmcmFtZS0+Y2hhbm5lbHMgPiAwKSkKICAgICArICAgICBlbHNlIGlmIChmcmFtZS0+bmJfc2Ft cGxlcyA+IDAgJiYKICAgICArICAgICAgICAgICAgICAoYXZfY2hhbm5lbF9sYXlvdXRfY2hlY2so JmZyYW1lLT5jaF9sYXlvdXQpCiAgICAgKyAjaWYgRkZfQVBJX09MRF9DSEFOTkVMX0xBWU9VVAog ICAgICsgICAgICAgICAgICAgICB8fCBmcmFtZS0+Y2hhbm5lbF9sYXlvdXQgfHwgZnJhbWUtPmNo YW5uZWxzID4gMAogICAgICsgI2VuZGlmCiAgICAgKyAgICAgICAgICAgICAgKSkKICAgICArLSAg ICAgICAgcmV0dXJuIGdldF9hdWRpb19idWZmZXIoZnJhbWUsIGFsaWduKTsKICAgICAgKyAgICAg ICAgZnJhbWUtPnR5cGUgPSBBVk1FRElBX1RZUEVfQVVESU87CiAgICAgLSsKICAgICArIEZGX0VO QUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwogICAgICsgCiAgICAgKy0gICAgcmV0dXJuIEFWRVJS T1IoRUlOVkFMKTsKICAgICAgKyAgICByZXR1cm4gYXZfZnJhbWVfZ2V0X2J1ZmZlcjIoZnJhbWUs IGFsaWduKTsKICAgICAgK30KICAgICAgKwogICAgICAraW50IGF2X2ZyYW1lX2dldF9idWZmZXIy KEFWRnJhbWUgKmZyYW1lLCBpbnQgYWxpZ24pCiAgICAgLSB7CiAgICAgLSAgICAgaWYgKGZyYW1l LT5mb3JtYXQgPCAwKQogICAgIC0gICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAg IC0gCiAgICAgLS0gICAgaWYgKGZyYW1lLT53aWR0aCA+IDAgJiYgZnJhbWUtPmhlaWdodCA+IDAp CiAgICAgLSsgICAgc3dpdGNoKGZyYW1lLT50eXBlKSB7CiAgICAgKyt7CiAgICAgKysgICAgaWYg KGZyYW1lLT5mb3JtYXQgPCAwKQogICAgICsrICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwp OwogICAgICsrCiAgICAgKysgICAgc3dpdGNoIChmcmFtZS0+dHlwZSkgewogICAgICArICAgIGNh c2UgQVZNRURJQV9UWVBFX1ZJREVPOgogICAgIC0gICAgICAgICByZXR1cm4gZ2V0X3ZpZGVvX2J1 ZmZlcihmcmFtZSwgYWxpZ24pOwogICAgIC0tICAgIGVsc2UgaWYgKGZyYW1lLT5uYl9zYW1wbGVz ID4gMCAmJiAoZnJhbWUtPmNoYW5uZWxfbGF5b3V0IHx8IGZyYW1lLT5jaGFubmVscyA+IDApKQog ICAgICsrICAgICAgICByZXR1cm4gZ2V0X3ZpZGVvX2J1ZmZlcihmcmFtZSwgYWxpZ24pOwogICAg ICArICAgIGNhc2UgQVZNRURJQV9UWVBFX0FVRElPOgogICAgIC0gICAgICAgICByZXR1cm4gZ2V0 X2F1ZGlvX2J1ZmZlcihmcmFtZSwgYWxpZ24pOwogICAgIC0tCiAgICAgLS0gICAgcmV0dXJuIEFW RVJST1IoRUlOVkFMKTsKICAgICArKyAgICAgICAgcmV0dXJuIGdldF9hdWRpb19idWZmZXIoZnJh bWUsIGFsaWduKTsKICAgICAgKyAgICBjYXNlIEFWTUVESUFfVFlQRV9TVUJUSVRMRToKICAgICAg KyAgICAgICAgcmV0dXJuIGdldF9zdWJ0aXRsZV9idWZmZXIoZnJhbWUpOwogICAgICArICAgIGRl ZmF1bHQ6CiAgICAgQEAgbGliYXZ1dGlsL2ZyYW1lLmM6IHN0YXRpYyBpbnQgZnJhbWVfY29weV9w cm9wcyhBVkZyYW1lICpkc3QsIGNvbnN0IEFWRnJhbWUgKnNyYywKICAgICAgIAogICAgICAgICAg IGF2X2RpY3RfY29weSgmZHN0LT5tZXRhZGF0YSwgc3JjLT5tZXRhZGF0YSwgMCk7CiAgICAgICAK ICAgICAtQEAgbGliYXZ1dGlsL2ZyYW1lLmM6IGludCBhdl9mcmFtZV9yZWYoQVZGcmFtZSAqZHN0 LCBjb25zdCBBVkZyYW1lICpzcmMpCiAgICAgLSAgICAgYXZfYXNzZXJ0MShkc3QtPndpZHRoID09 IDAgJiYgZHN0LT5oZWlnaHQgPT0gMCk7CiAgICAgLSAgICAgYXZfYXNzZXJ0MShkc3QtPmNoYW5u ZWxzID09IDApOwogICAgICtAQCBsaWJhdnV0aWwvZnJhbWUuYzogRkZfRU5BQkxFX0RFUFJFQ0FU SU9OX1dBUk5JTkdTCiAgICAgKyAgICAgYXZfYXNzZXJ0MShkc3QtPmNoX2xheW91dC5uYl9jaGFu bmVscyA9PSAwICYmCiAgICAgKyAgICAgICAgICAgICAgICBkc3QtPmNoX2xheW91dC5vcmRlciA9 PSBBVl9DSEFOTkVMX09SREVSX1VOU1BFQyk7CiAgICAgICAKICAgICAgKyAgICBkc3QtPnR5cGUg ICAgICAgICAgID0gc3JjLT50eXBlOwogICAgICAgICAgIGRzdC0+Zm9ybWF0ICAgICAgICAgPSBz cmMtPmZvcm1hdDsKICAgICAgICAgICBkc3QtPndpZHRoICAgICAgICAgID0gc3JjLT53aWR0aDsK ICAgICAgICAgICBkc3QtPmhlaWdodCAgICAgICAgID0gc3JjLT5oZWlnaHQ7CiAgICAgLUBAIGxp YmF2dXRpbC9mcmFtZS5jOiBpbnQgYXZfZnJhbWVfcmVmKEFWRnJhbWUgKmRzdCwgY29uc3QgQVZG cmFtZSAqc3JjKQogICAgICtAQCBsaWJhdnV0aWwvZnJhbWUuYzogRkZfRU5BQkxFX0RFUFJFQ0FU SU9OX1dBUk5JTkdTCiAgICAgICAKICAgICAgICAgICAvKiBkdXBsaWNhdGUgdGhlIGZyYW1lIGRh dGEgaWYgaXQncyBub3QgcmVmY291bnRlZCAqLwogICAgICAgICAgIGlmICghc3JjLT5idWZbMF0p IHsKICAgICBAQCBsaWJhdnV0aWwvZnJhbWUuYzogaW50IGF2X2ZyYW1lX3JlZihBVkZyYW1lICpk c3QsIGNvbnN0IEFWRnJhbWUgKnNyYykKICAgICAgICAgICAgICAgaWYgKHJldCA8IDApCiAgICAg ICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAKICAgICAtQEAgbGliYXZ1dGlsL2ZyYW1l LmM6IGludCBhdl9mcmFtZV9yZWYoQVZGcmFtZSAqZHN0LCBjb25zdCBBVkZyYW1lICpzcmMpCiAg ICAgK0BAIGxpYmF2dXRpbC9mcmFtZS5jOiBGRl9FTkFCTEVfREVQUkVDQVRJT05fV0FSTklOR1MK ICAgICAgICAgICAgICAgfQogICAgICAgICAgIH0KICAgICAgIAogICAgIEBAIGxpYmF2dXRpbC9m cmFtZS5jOiB2b2lkIGF2X2ZyYW1lX3VucmVmKEFWRnJhbWUgKmZyYW1lKQogICAgICAgICAgIGlm IChmcmFtZS0+ZXh0ZW5kZWRfZGF0YSAhPSBmcmFtZS0+ZGF0YSkKICAgICAgICAgICAgICAgYXZf ZnJlZXAoJmZyYW1lLT5leHRlbmRlZF9kYXRhKTsKICAgICAgIAogICAgIC1AQCBsaWJhdnV0aWwv ZnJhbWUuYzogdm9pZCBhdl9mcmFtZV9tb3ZlX3JlZihBVkZyYW1lICpkc3QsIEFWRnJhbWUgKnNy YykKICAgICArQEAgbGliYXZ1dGlsL2ZyYW1lLmM6IEZGX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJO SU5HUwogICAgICAgCiAgICAgICBpbnQgYXZfZnJhbWVfaXNfd3JpdGFibGUoQVZGcmFtZSAqZnJh bWUpCiAgICAgICB7CiAgICAgQEAgbGliYXZ1dGlsL2ZyYW1lLmM6IGludCBhdl9mcmFtZV9tYWtl X3dyaXRhYmxlKEFWRnJhbWUgKmZyYW1lKQogICAgICAgICAgIHRtcC5mb3JtYXQgICAgICAgICA9 IGZyYW1lLT5mb3JtYXQ7CiAgICAgICAgICAgdG1wLndpZHRoICAgICAgICAgID0gZnJhbWUtPndp ZHRoOwogICAgICAgICAgIHRtcC5oZWlnaHQgICAgICAgICA9IGZyYW1lLT5oZWlnaHQ7CiAgICAg LUBAIGxpYmF2dXRpbC9mcmFtZS5jOiBpbnQgYXZfZnJhbWVfbWFrZV93cml0YWJsZShBVkZyYW1l ICpmcmFtZSkKICAgICArQEAgbGliYXZ1dGlsL2ZyYW1lLmM6IEZGX0VOQUJMRV9ERVBSRUNBVElP Tl9XQVJOSU5HUwogICAgICAgICAgIGlmIChmcmFtZS0+aHdfZnJhbWVzX2N0eCkKICAgICAgICAg ICAgICAgcmV0ID0gYXZfaHdmcmFtZV9nZXRfYnVmZmVyKGZyYW1lLT5od19mcmFtZXNfY3R4LCAm dG1wLCAwKTsKICAgICAgICAgICBlbHNlCiAgICAgQEAgbGliYXZ1dGlsL2ZyYW1lLmM6IEFWQnVm ZmVyUmVmICphdl9mcmFtZV9nZXRfcGxhbmVfYnVmZmVyKEFWRnJhbWUgKmZyYW1lLCBpbnQgcGwK ICAgICAgICAgICBpbnQgcGxhbmVzLCBpOwogICAgICAgCiAgICAgIC0gICAgaWYgKGZyYW1lLT5u Yl9zYW1wbGVzKSB7CiAgICAgLS0gICAgICAgIGludCBjaGFubmVscyA9IGZyYW1lLT5jaGFubmVs czsKICAgICAtLSAgICAgICAgaWYgKCFjaGFubmVscykKICAgICAtLSAgICAgICAgICAgIHJldHVy biBOVUxMOwogICAgIC0tICAgICAgICBDSEVDS19DSEFOTkVMU19DT05TSVNURU5DWShmcmFtZSk7 CiAgICAgLS0gICAgICAgIHBsYW5lcyA9IGF2X3NhbXBsZV9mbXRfaXNfcGxhbmFyKGZyYW1lLT5m b3JtYXQpID8gY2hhbm5lbHMgOiAxOwogICAgIC0tICAgIH0gZWxzZQogICAgICArICAgIHN3aXRj aChmcmFtZS0+dHlwZSkgewogICAgICArICAgIGNhc2UgQVZNRURJQV9UWVBFX1ZJREVPOgogICAg IC0gICAgICAgICBwbGFuZXMgPSA0OwogICAgICsrICAgICAgICBwbGFuZXMgPSA0OwogICAgICAr ICAgICAgICBicmVhazsKICAgICAgKyAgICBjYXNlIEFWTUVESUFfVFlQRV9BVURJTzoKICAgICAg KyAgICAgICAgewogICAgIC0rICAgICAgICAgICAgaW50IGNoYW5uZWxzID0gZnJhbWUtPmNoYW5u ZWxzOwogICAgIC0rICAgICAgICAgICAgaWYgKCFjaGFubmVscykKICAgICAtKyAgICAgICAgICAg ICAgICByZXR1cm4gTlVMTDsKICAgICAtKyAgICAgICAgICAgIENIRUNLX0NIQU5ORUxTX0NPTlNJ U1RFTkNZKGZyYW1lKTsKICAgICAtKyAgICAgICAgICAgIHBsYW5lcyA9IGF2X3NhbXBsZV9mbXRf aXNfcGxhbmFyKGZyYW1lLT5mb3JtYXQpID8gY2hhbm5lbHMgOiAxOwogICAgIC0rICAgICAgICAg ICAgYnJlYWs7CiAgICAgKyAgICAgICAgIGludCBjaGFubmVscyA9IGZyYW1lLT5jaF9sYXlvdXQu bmJfY2hhbm5lbHM7CiAgICAgKyAKICAgICArICNpZiBGRl9BUElfT0xEX0NIQU5ORUxfTEFZT1VU CiAgICAgK0BAIGxpYmF2dXRpbC9mcmFtZS5jOiBGRl9FTkFCTEVfREVQUkVDQVRJT05fV0FSTklO R1MKICAgICArICAgICAgICAgaWYgKCFjaGFubmVscykKICAgICArICAgICAgICAgICAgIHJldHVy biBOVUxMOwogICAgICsgICAgICAgICBwbGFuZXMgPSBhdl9zYW1wbGVfZm10X2lzX3BsYW5hcihm cmFtZS0+Zm9ybWF0KSA/IGNoYW5uZWxzIDogMTsKICAgICArLSAgICB9IGVsc2UKICAgICArLSAg ICAgICAgcGxhbmVzID0gNDsKICAgICArKyAgICAgICAgYnJlYWs7CiAgICAgICsgICAgICAgIH0K ICAgICAgKyAgICBkZWZhdWx0OgogICAgICArICAgICAgICByZXR1cm4gTlVMTDsKICAgICBAQCBs aWJhdnV0aWwvZnJhbWUuYzogQVZCdWZmZXJSZWYgKmF2X2ZyYW1lX2dldF9wbGFuZV9idWZmZXIo QVZGcmFtZSAqZnJhbWUsIGludCBwbAogICAgICAgCiAgICAgICAgICAgaWYgKHBsYW5lIDwgMCB8 fCBwbGFuZSA+PSBwbGFuZXMgfHwgIWZyYW1lLT5leHRlbmRlZF9kYXRhW3BsYW5lXSkKICAgICAg ICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLUBAIGxpYmF2dXRpbC9mcmFtZS5jOiBzdGF0aWMg aW50IGZyYW1lX2NvcHlfYXVkaW8oQVZGcmFtZSAqZHN0LCBjb25zdCBBVkZyYW1lICpzcmMpCiAg ICAgK0BAIGxpYmF2dXRpbC9mcmFtZS5jOiBGRl9FTkFCTEVfREVQUkVDQVRJT05fV0FSTklOR1MK ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgIH0KICAgICAgIAogICAgIEBAIGxpYmF2dXRpbC9m cmFtZS5jOiBzdGF0aWMgaW50IGZyYW1lX2NvcHlfYXVkaW8oQVZGcmFtZSAqZHN0LCBjb25zdCBB VkZyYW1lICpzcmMpCiAgICAgICAgICAgaWYgKGRzdC0+Zm9ybWF0ICE9IHNyYy0+Zm9ybWF0IHx8 IGRzdC0+Zm9ybWF0IDwgMCkKICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsK ICAgICAgIAogICAgICstRkZfRElTQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwogICAgICAtICAg IGlmIChkc3QtPndpZHRoID4gMCAmJiBkc3QtPmhlaWdodCA+IDApCiAgICAgICsgICAgc3dpdGNo KGRzdC0+dHlwZSkgewogICAgICArICAgIGNhc2UgQVZNRURJQV9UWVBFX1ZJREVPOgogICAgICAg ICAgICAgICByZXR1cm4gZnJhbWVfY29weV92aWRlbyhkc3QsIHNyYyk7CiAgICAgLS0gICAgZWxz ZSBpZiAoZHN0LT5uYl9zYW1wbGVzID4gMCAmJiBkc3QtPmNoYW5uZWxzID4gMCkKICAgICArLSAg ICBlbHNlIGlmIChkc3QtPm5iX3NhbXBsZXMgPiAwICYmCiAgICAgKy0gICAgICAgICAgICAgKGF2 X2NoYW5uZWxfbGF5b3V0X2NoZWNrKCZkc3QtPmNoX2xheW91dCkKICAgICArLSNpZiBGRl9BUElf T0xEX0NIQU5ORUxfTEFZT1VUCiAgICAgKy0gICAgICAgICAgICAgIHx8IGRzdC0+Y2hhbm5lbF9s YXlvdXQgfHwgZHN0LT5jaGFubmVscwogICAgICstI2VuZGlmCiAgICAgKy0gICAgICAgICAgICAp KQogICAgICArICAgIGNhc2UgQVZNRURJQV9UWVBFX0FVRElPOgogICAgICAgICAgICAgICByZXR1 cm4gZnJhbWVfY29weV9hdWRpbyhkc3QsIHNyYyk7CiAgICAgKy1GRl9FTkFCTEVfREVQUkVDQVRJ T05fV0FSTklOR1MKICAgICAgLQogICAgICAtICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CiAg ICAgICsgICAgY2FzZSBBVk1FRElBX1RZUEVfU1VCVElUTEU6CiAgICAgQEAgbGliYXZ1dGlsL2Zy YW1lLmg6IHR5cGVkZWYgc3RydWN0IEFWRnJhbWUgewogICAgICAgICAgIGludCBmb3JtYXQ7CiAg ICAgICAKICAgICAgQEAgbGliYXZ1dGlsL2ZyYW1lLmg6IHR5cGVkZWYgc3RydWN0IEFWRnJhbWUg ewogICAgIC0gICAgICAqIGZvciB0aGUgdGFyZ2V0IGZyYW1lJ3MgcHJpdmF0ZV9yZWYgZmllbGQu CiAgICAgKyAgICAgICogQ2hhbm5lbCBsYXlvdXQgb2YgdGhlIGF1ZGlvIGRhdGEuCiAgICAgICAg ICAgICovCiAgICAgLSAgICAgQVZCdWZmZXJSZWYgKnByaXZhdGVfcmVmOwogICAgICsgICAgIEFW Q2hhbm5lbExheW91dCBjaF9sYXlvdXQ7CiAgICAgICsKICAgICAgKyAgICAvKioKICAgICAgKyAg ICAgKiBNZWRpYSB0eXBlIG9mIHRoZSBmcmFtZSAoYXVkaW8sIHZpZGVvLCBzdWJ0aXRsZXMuLikK ICAzOiAgZWMyNjI5MTRiMCAhICAzOiAgYjg5MzVkNWU2OCBhdmNvZGVjL3N1YnRpdGxlczogSW50 cm9kdWNlIG5ldyBmcmFtZS1iYXNlZCBzdWJ0aXRsZSBkZWNvZGluZyBBUEkKICAgICBAQCBDb21t aXQgbWVzc2FnZQogICAgICAKICAgICAgICAgIFNpZ25lZC1vZmYtYnk6IHNvZnR3b3JreiA8c29m dHdvcmt6QGhvdG1haWwuY29tPgogICAgICAKICAgICArICMjIGxpYmF2Y29kZWMvYXZjb2RlYy5j ICMjCiAgICAgK0BAIGxpYmF2Y29kZWMvYXZjb2RlYy5jOiBGRl9ESVNBQkxFX0RFUFJFQ0FUSU9O X1dBUk5JTkdTCiAgICAgKyBGRl9FTkFCTEVfREVQUkVDQVRJT05fV0FSTklOR1MKICAgICArICNl bmRpZgogICAgICsgCiAgICAgKysgICAgICAgIC8vIFNldCB0aGUgc3VidGl0bGUgdHlwZSBmcm9t IHRoZSBjb2RlYyBkZXNjcmlwdG9yIGluIGNhc2UgdGhlIGRlY29kZXIgaGFzbid0IGRvbmUgaXRz ZWxmCiAgICAgKysgICAgICAgIGlmIChhdmN0eC0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVf U1VCVElUTEUgJiYgYXZjdHgtPnN1YnRpdGxlX3R5cGUgPT0gQVZfU1VCVElUTEVfRk1UX1VOS05P V04pIHsKICAgICArKyAgICAgICAgICAgIGlmKGF2Y3R4LT5jb2RlY19kZXNjcmlwdG9yLT5wcm9w cyAmIEFWX0NPREVDX1BST1BfQklUTUFQX1NVQikKICAgICArKyAgICAgICAgICAgICAgICBhdmN0 eC0+c3VidGl0bGVfdHlwZSA9IEFWX1NVQlRJVExFX0ZNVF9CSVRNQVA7CiAgICAgKysgICAgICAg ICAgICBpZihhdmN0eC0+Y29kZWNfZGVzY3JpcHRvci0+cHJvcHMgJiBBVl9DT0RFQ19QUk9QX1RF WFRfU1VCKQogICAgICsrICAgICAgICAgICAgICAgICBhdmN0eC0+c3VidGl0bGVfdHlwZSA9IEFW X1NVQlRJVExFX0ZNVF9BU1M7CiAgICAgKysgICAgICAgIH0KICAgICArKwogICAgICsgI2lmIEZG X0FQSV9BVkNUWF9USU1FQkFTRQogICAgICsgICAgICAgICBpZiAoYXZjdHgtPmZyYW1lcmF0ZS5u dW0gPiAwICYmIGF2Y3R4LT5mcmFtZXJhdGUuZGVuID4gMCkKICAgICArICAgICAgICAgICAgIGF2 Y3R4LT50aW1lX2Jhc2UgPSBhdl9pbnZfcShhdl9tdWxfcShhdmN0eC0+ZnJhbWVyYXRlLCAoQVZS YXRpb25hbCl7YXZjdHgtPnRpY2tzX3Blcl9mcmFtZSwgMX0pKTsKICAgICArCiAgICAgICAjIyBs aWJhdmNvZGVjL2F2Y29kZWMuaCAjIwogICAgICBAQCBsaWJhdmNvZGVjL2F2Y29kZWMuaDogdHlw ZWRlZiBzdHJ1Y3QgQVZDb2RlY0NvbnRleHQgewogICAgICAgCiAgICAgQEAgbGliYXZjb2RlYy9h dmNvZGVjLmg6IHR5cGVkZWYgc3RydWN0IEFWQ29kZWNDb250ZXh0IHsKICAgICAgICAgICAgKiBb U2NyaXB0IEluZm9dIGFuZCBbVjQrIFN0eWxlc10gc2VjdGlvbiwgcGx1cyB0aGUgW0V2ZW50c10g bGluZSBhbmQKICAgICAgICAgICAgKiB0aGUgRm9ybWF0IGxpbmUgZm9sbG93aW5nLiBJdCBzaG91 bGRuJ3QgaW5jbHVkZSBhbnkgRGlhbG9ndWUgbGluZS4KICAgICAgICAgICAgKiAtIGVuY29kaW5n OiBTZXQvYWxsb2NhdGVkL2ZyZWVkIGJ5IHVzZXIgKGJlZm9yZSBhdmNvZGVjX29wZW4yKCkpCiAg ICAgK0BAIGxpYmF2Y29kZWMvYXZjb2RlYy5oOiB0eXBlZGVmIHN0cnVjdCBBVkNvZGVjQ29udGV4 dCB7CiAgICAgKyAgICAgICogICAgICAgICAgICAgVGhlIGRlY29kZXIgY2FuIHRoZW4gb3ZlcnJp ZGUgZHVyaW5nIGRlY29kaW5nIGFzIG5lZWRlZC4KICAgICArICAgICAgKi8KICAgICArICAgICBB VkNoYW5uZWxMYXlvdXQgY2hfbGF5b3V0OwogICAgICsrCiAgICAgKysgICAgZW51bSBBVlN1YnRp dGxlVHlwZSBzdWJ0aXRsZV90eXBlOwogICAgICsgfSBBVkNvZGVjQ29udGV4dDsKICAgICArIAog ICAgICsgLyoqCiAgICAgIEBAIGxpYmF2Y29kZWMvYXZjb2RlYy5oOiBpbnQgYXZjb2RlY19jbG9z ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgpOwogICAgICAgICogRnJlZSBhbGwgYWxsb2NhdGVkIGRh dGEgaW4gdGhlIGdpdmVuIHN1YnRpdGxlIHN0cnVjdC4KICAgICAgICAqCiAgICAgQEAgbGliYXZj b2RlYy9hdmNvZGVjLmg6IGVudW0gQVZDaHJvbWFMb2NhdGlvbiBhdmNvZGVjX2Nocm9tYV9wb3Nf dG9fZW51bShpbnQgeHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg KmdvdF9zdWJfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWUGFja2V0 ICphdnBrdCk7CiAgICAgIAogICAgIC0gIyMgbGliYXZjb2RlYy9jb2RlY19kZXNjLmMgIyMKICAg ICAtQEAgbGliYXZjb2RlYy9jb2RlY19kZXNjLmM6IGVudW0gQVZNZWRpYVR5cGUgYXZjb2RlY19n ZXRfdHlwZShlbnVtIEFWQ29kZWNJRCBjb2RlY19pZCkKICAgICAtICAgICBjb25zdCBBVkNvZGVj RGVzY3JpcHRvciAqZGVzYyA9IGF2Y29kZWNfZGVzY3JpcHRvcl9nZXQoY29kZWNfaWQpOwogICAg IC0gICAgIHJldHVybiBkZXNjID8gZGVzYy0+dHlwZSA6IEFWTUVESUFfVFlQRV9VTktOT1dOOwog ICAgIC0gfQogICAgIC0rCiAgICAgLStlbnVtIEFWU3VidGl0bGVUeXBlIGF2Y29kZWNfZGVzY3Jp cHRvcl9nZXRfc3VidGl0bGVfZm9ybWF0KGNvbnN0IEFWQ29kZWNEZXNjcmlwdG9yICpjb2RlY19k ZXNjcmlwdG9yKQogICAgIC0rewogICAgIC0rICAgIGlmKGNvZGVjX2Rlc2NyaXB0b3ItPnByb3Bz ICYgQVZfQ09ERUNfUFJPUF9CSVRNQVBfU1VCKQogICAgIC0rICAgICAgICByZXR1cm4gQVZfU1VC VElUTEVfRk1UX0JJVE1BUDsKICAgICAtKwogICAgIC0rICAgIGlmKGNvZGVjX2Rlc2NyaXB0b3It PnByb3BzICYgQVZfQ09ERUNfUFJPUF9URVhUX1NVQikKICAgICAtKyAgICAgICAgcmV0dXJuIEFW X1NVQlRJVExFX0ZNVF9BU1M7CiAgICAgLSsKICAgICAtKyAgICByZXR1cm4gQVZfU1VCVElUTEVf Rk1UX1VOS05PV047CiAgICAgLSt9CiAgICAgLQogICAgIC0gIyMgbGliYXZjb2RlYy9jb2RlY19k ZXNjLmggIyMKICAgICAtQEAgbGliYXZjb2RlYy9jb2RlY19kZXNjLmg6IGNvbnN0IEFWQ29kZWNE ZXNjcmlwdG9yICphdmNvZGVjX2Rlc2NyaXB0b3JfbmV4dChjb25zdCBBVkNvZGVjRGVzY3JpcHRv ciAqcHJldik7CiAgICAgLSAgKi8KICAgICAtIGNvbnN0IEFWQ29kZWNEZXNjcmlwdG9yICphdmNv ZGVjX2Rlc2NyaXB0b3JfZ2V0X2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSk7CiAgICAgLSAKICAg ICAtKy8qKgogICAgIC0rICogUmV0dXJuIHN1YnRpdGxlIGZvcm1hdCBmcm9tIGEgY29kZWMgZGVz Y3JpcHRvcgogICAgIC0rICoKICAgICAtKyAqIEBwYXJhbSBjb2RlY19kZXNjcmlwdG9yIGNvZGVj IGRlc2NyaXB0b3IKICAgICAtKyAqIEByZXR1cm4gICAgICAgICAgICAgICAgIHRoZSBzdWJ0aXRs ZSB0eXBlIChlLmcuIGJpdG1hcCwgdGV4dCkKICAgICAtKyAqLwogICAgIC0rZW51bSBBVlN1YnRp dGxlVHlwZSBhdmNvZGVjX2Rlc2NyaXB0b3JfZ2V0X3N1YnRpdGxlX2Zvcm1hdChjb25zdCBBVkNv ZGVjRGVzY3JpcHRvciAqY29kZWNfZGVzY3JpcHRvcik7CiAgICAgLSsKICAgICAtIC8qKgogICAg IC0gICogQH0KICAgICAtICAqLwogICAgIC0KICAgICAgICMjIGxpYmF2Y29kZWMvZGVjb2RlLmMg IyMKICAgICAgQEAgbGliYXZjb2RlYy9kZWNvZGUuYzogc3RhdGljIGludCBkZWNvZGVfcmVjZWl2 ZV9mcmFtZV9pbnRlcm5hbChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lKQog ICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgQEAgbGliYXZjb2RlYy9kZWNvZGUuYzogaW50IGF0 dHJpYnV0ZV9hbGlnbl9hcmcgYXZjb2RlY19zZW5kX3BhY2tldChBVkNvZGVjQ29udGV4dAogICAg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwogICAgICAgCiAgICAgICsgICAgaWYg KGF2Y3R4LT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRMRSkKICAgICAtKwkJLy8g dGhpcyBkb2VzIG5vdCBleGFjdGx5IGltcGxlbWVudCB0aGUgYXZjb2RlY19zZW5kX3BhY2tldC9h dmNvZGVjX3JlY2VpdmVfZnJhbWUgQVBJIAogICAgICsrCQkvLyB0aGlzIGRvZXMgbm90IGV4YWN0 bHkgaW1wbGVtZW50IHRoZSBhdmNvZGVjX3NlbmRfcGFja2V0L2F2Y29kZWNfcmVjZWl2ZV9mcmFt ZSBBUEkKICAgICAgKwkgICAgLy8gYnV0IHdlIGtub3cgdGhhdCBubyBzdWJ0aXRsZSBkZWNvZGVy IHByb2R1Y2VzIG11bHRpcGxlIEFWU3VidGl0bGVzIHBlciBwYWNrZXQgdGhyb3VnaAogICAgICAr CQkvLyB0aGUgbGVnYWN5IEFQSSwgYW5kIHRoaXMgd2lsbCBiZSBjaGFuZ2VkIHdoZW4gbWlncmF0 aW5nIHRoZSBzdWJ0aXRsZSBkZWNvZGVycwogICAgICArCQkvLyB0byB0aGUgZnJhbWUgYmFzZWQg ZGVjb2RpbmcgYXBpCiAgICAgQEAgbGliYXZjb2RlYy9kZWNvZGUuYzogaW50IGF2Y29kZWNfZGVj b2RlX3N1YnRpdGxlMihBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWU3VidGkKICAgICAgLSAgICAg ICAgICAgIHN1Yi0+Zm9ybWF0ID0gMDsKICAgICAgLSAgICAgICAgZWxzZSBpZiAoYXZjdHgtPmNv ZGVjX2Rlc2NyaXB0b3ItPnByb3BzICYgQVZfQ09ERUNfUFJPUF9URVhUX1NVQikKICAgICAgLSAg ICAgICAgICAgIHN1Yi0+Zm9ybWF0ID0gMTsKICAgICAtKyAgICAgICAgc3ViLT5mb3JtYXQgPSBh dmNvZGVjX2Rlc2NyaXB0b3JfZ2V0X3N1YnRpdGxlX2Zvcm1hdChhdmN0eC0+Y29kZWNfZGVzY3Jp cHRvcik7CiAgICAgKysgICAgICAgIHN1Yi0+Zm9ybWF0ID0gKHVpbnQxNl90KWF2Y3R4LT5zdWJ0 aXRsZV90eXBlOwogICAgICAgCiAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg PCBzdWItPm51bV9yZWN0czsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICBpZiAoYXZjdHgtPnN1 Yl9jaGFyZW5jX21vZGUgIT0gRkZfU1VCX0NIQVJFTkNfTU9ERV9JR05PUkUgJiYKICAgICBAQCBs aWJhdmNvZGVjL2ludGVybmFsLmg6IGludCBmZl9pbnRfZnJvbV9saXN0X29yX2RlZmF1bHQodm9p ZCAqY3R4LCBjb25zdCBjaGFyICogdgogICAgICAgI2VuZGlmIC8qIEFWQ09ERUNfSU5URVJOQUxf SCAqLwogICAgICAKICAgICAgICMjIGxpYmF2Y29kZWMvdXRpbHMuYyAjIwogICAgIC1AQCBsaWJh dmNvZGVjL3V0aWxzLmM6IGludCBhdl9nZXRfYXVkaW9fZnJhbWVfZHVyYXRpb24oQVZDb2RlY0Nv bnRleHQgKmF2Y3R4LCBpbnQgZnJhbWVfYnl0ZXMpCiAgICAgK0BAIGxpYmF2Y29kZWMvdXRpbHMu YzogRkZfRU5BQkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTCiAgICAgICAgICAgcmV0dXJuIEZGTUFY KDAsIGR1cmF0aW9uKTsKICAgICAgIH0KICAgICAgIAogICAgIEBAIGxpYmF2Y29kZWMvdXRpbHMu YzogaW50IGF2X2dldF9hdWRpb19mcmFtZV9kdXJhdGlvbihBVkNvZGVjQ29udGV4dCAqYXZjdHgs IGludCBmCiAgICAgICsKICAgICAgIGludCBhdl9nZXRfYXVkaW9fZnJhbWVfZHVyYXRpb24yKEFW Q29kZWNQYXJhbWV0ZXJzICpwYXIsIGludCBmcmFtZV9ieXRlcykKICAgICAgIHsKICAgICAtICAg ICBpbnQgZHVyYXRpb24gPSBnZXRfYXVkaW9fZnJhbWVfZHVyYXRpb24ocGFyLT5jb2RlY19pZCwg cGFyLT5zYW1wbGVfcmF0ZSwKICAgICArICAgIGludCBjaGFubmVscyA9IHBhci0+Y2hfbGF5b3V0 Lm5iX2NoYW5uZWxzOwogIC06ICAtLS0tLS0tLS0tID4gIDQ6ICA0YjQ0NzMyZTA3IGF2Y29kZWMv bGlienZiaTogc2V0IHN1YnRpdGxlIHR5cGUKICA0OiAgNzdiZDY3ZWUzNyAhICA1OiAgOGZhYTdh NDA0MyBhdmZpbHRlci9zdWJ0aXRsZXM6IFVwZGF0ZSB2Zl9zdWJ0aXRsZXMgdG8gdXNlIG5ldyBk ZWNvZGluZyBhcGkKICAgICBAQCBsaWJhdmZpbHRlci92Zl9zdWJ0aXRsZXMuYzogc3RhdGljIGlu dCBhdHRhY2htZW50X2lzX2ZvbnQoQVZTdHJlYW0gKiBzdCkKICAgICAgKwogICAgICAgQVZGSUxU RVJfREVGSU5FX0NMQVNTKHN1YnRpdGxlcyk7CiAgICAgICAKICAgICArK3N0YXRpYyBlbnVtIEFW U3VidGl0bGVUeXBlIGdldF9zdWJ0aXRsZV9mb3JtYXQoY29uc3QgQVZDb2RlY0Rlc2NyaXB0b3Ig KmNvZGVjX2Rlc2NyaXB0b3IpCiAgICAgKyt7CiAgICAgKysgICAgaWYoY29kZWNfZGVzY3JpcHRv ci0+cHJvcHMgJiBBVl9DT0RFQ19QUk9QX0JJVE1BUF9TVUIpCiAgICAgKysgICAgICAgIHJldHVy biBBVl9TVUJUSVRMRV9GTVRfQklUTUFQOwogICAgICsrCiAgICAgKysgICAgaWYoY29kZWNfZGVz Y3JpcHRvci0+cHJvcHMgJiBBVl9DT0RFQ19QUk9QX1RFWFRfU1VCKQogICAgICsrICAgICAgICBy ZXR1cm4gQVZfU1VCVElUTEVfRk1UX0FTUzsKICAgICArKwogICAgICsrICAgIHJldHVybiBBVl9T VUJUSVRMRV9GTVRfVU5LTk9XTjsKICAgICArK30KICAgICArKwogICAgICAgc3RhdGljIGF2X2Nv bGQgaW50IGluaXRfc3VidGl0bGVzKEFWRmlsdGVyQ29udGV4dCAqY3R4KQogICAgICsgewogICAg ICsgICAgIGludCBqLCByZXQsIHNpZDsKICAgICAgQEAgbGliYXZmaWx0ZXIvdmZfc3VidGl0bGVz LmM6IHN0YXRpYyBhdl9jb2xkIGludCBpbml0X3N1YnRpdGxlcyhBVkZpbHRlckNvbnRleHQgKmN0 eCkKICAgICAgICAgICBBVlN0cmVhbSAqc3Q7CiAgICAgICAgICAgQVZQYWNrZXQgcGt0OwogICAg IEBAIGxpYmF2ZmlsdGVyL3ZmX3N1YnRpdGxlcy5jOiBzdGF0aWMgYXZfY29sZCBpbnQgaW5pdF9z dWJ0aXRsZXMoQVZGaWx0ZXJDb250ZXh0ICpjCiAgICAgICsKICAgICAgICAgICBkZWNfZGVzYyA9 IGF2Y29kZWNfZGVzY3JpcHRvcl9nZXQoc3QtPmNvZGVjcGFyLT5jb2RlY19pZCk7CiAgICAgIC0g ICAgaWYgKGRlY19kZXNjICYmICEoZGVjX2Rlc2MtPnByb3BzICYgQVZfQ09ERUNfUFJPUF9URVhU X1NVQikpIHsKICAgICAtKyAgICBzdWJ0aXRsZV9mb3JtYXQgPSBhdmNvZGVjX2Rlc2NyaXB0b3Jf Z2V0X3N1YnRpdGxlX2Zvcm1hdChkZWNfZGVzYyk7CiAgICAgKysgICAgc3VidGl0bGVfZm9ybWF0 ID0gZ2V0X3N1YnRpdGxlX2Zvcm1hdChkZWNfZGVzYyk7CiAgICAgICsKICAgICAgKyAgICBpZiAo c3VidGl0bGVfZm9ybWF0ICE9IEFWX1NVQlRJVExFX0ZNVF9BU1MpIHsKICAgICAgICAgICAgICAg YXZfbG9nKGN0eCwgQVZfTE9HX0VSUk9SLAogIDU6ICAyNmJhZDBjMDg4ICEgIDY6ICAxNjY0MDI2 ZDdjIGF2Y29kZWMsYXZ1dGlsOiBNb3ZlIGFzcyBoZWxwZXIgZnVuY3Rpb25zIHRvIGF2dXRpbCBh cyBhdnByaXZfIGFuZCBleHRlbmQgYXNzIGRpYWxvZyBwYXJzaW5nCiAgICAgQEAgbGliYXZjb2Rl Yy9hc3MuaAogICAgICArc3RhdGljIGlubGluZSBpbnQgZmZfYXNzX3N1YnRpdGxlX2hlYWRlcl9k ZWZhdWx0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKICAgICAgK3sKICAgICAgKyAgICBhdmN0eC0+ c3VidGl0bGVfaGVhZGVyID0gKHVpbnQ4X3QgKilhdnByaXZfYXNzX2dldF9zdWJ0aXRsZV9oZWFk ZXJfZGVmYXVsdCghKGF2Y3R4LT5mbGFncyAmIEFWX0NPREVDX0ZMQUdfQklURVhBQ1QpKTsKICAg ICAtKwogICAgICsgCiAgICAgKy0vKioKICAgICArLSAqIEFkZCBhbiBBU1MgZGlhbG9nIHRvIGEg c3VidGl0bGUuCiAgICAgKy0gKi8KICAgICArLWludCBmZl9hc3NfYWRkX3JlY3QoQVZTdWJ0aXRs ZSAqc3ViLCBjb25zdCBjaGFyICpkaWFsb2csCiAgICAgKy0gICAgICAgICAgICAgICAgICAgIGlu dCByZWFkb3JkZXIsIGludCBsYXllciwgY29uc3QgY2hhciAqc3R5bGUsCiAgICAgKy0gICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNwZWFrZXIpOwogICAgICArICAgIGlmICghYXZjdHgt PnN1YnRpdGxlX2hlYWRlcikKICAgICAgKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsK ICAgICAgKyAgICBhdmN0eC0+c3VidGl0bGVfaGVhZGVyX3NpemUgPSBzdHJsZW4oKGNoYXIgKilh dmN0eC0+c3VidGl0bGVfaGVhZGVyKTsKICAgICBAQCBsaWJhdmNvZGVjL2Fzcy5oCiAgICAgICAv KioKICAgICAgICAqIEFkZCBhbiBBU1MgZGlhbG9nIHRvIGEgc3VidGl0bGUuCiAgICAgICAgKi8K ICAgICAtLWludCBmZl9hc3NfYWRkX3JlY3QoQVZTdWJ0aXRsZSAqc3ViLCBjb25zdCBjaGFyICpk aWFsb2csCiAgICAgKy1pbnQgZmZfYXNzX2FkZF9yZWN0MihBVlN1YnRpdGxlICpzdWIsIGNvbnN0 IGNoYXIgKmRpYWxvZywKICAgICArLSAgICAgICAgICAgICAgICAgICAgIGludCByZWFkb3JkZXIs IGludCBsYXllciwgY29uc3QgY2hhciAqc3R5bGUsCiAgICAgKy0gICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpzcGVha2VyLCB1bnNpZ25lZCAqbmJfcmVjdF9hbGxvY2F0ZWQpOwogICAg ICArc3RhdGljIGlubGluZSBpbnQgYXZwcml2X2Fzc19hZGRfcmVjdChBVlN1YnRpdGxlICpzdWIs IGNvbnN0IGNoYXIgKmRpYWxvZywKICAgICAtICAgICAgICAgICAgICAgICAgICAgaW50IHJlYWRv cmRlciwgaW50IGxheWVyLCBjb25zdCBjaGFyICpzdHlsZSwKICAgICAtLSAgICAgICAgICAgICAg ICAgICAgY29uc3QgY2hhciAqc3BlYWtlcik7CiAgICAgKysgICAgICAgICAgICAgICAgICAgIGlu dCByZWFkb3JkZXIsIGludCBsYXllciwgY29uc3QgY2hhciAqc3R5bGUsCiAgICAgICsgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNwZWFrZXIpCiAgICAgICt7CiAgICAgICsgICAgY2hh ciAqYXNzX3N0cjsKICAgICBAQCBsaWJhdmNvZGVjL2Fzc2RlYy5jCiAgICAgICAKICAgICAgICNp bmNsdWRlICJhdmNvZGVjLmgiCiAgICAgIC0jaW5jbHVkZSAiYXNzLmgiCiAgICAgKyAjaW5jbHVk ZSAiY29kZWNfaW50ZXJuYWwuaCIKICAgICArICNpbmNsdWRlICJjb25maWdfY29tcG9uZW50cy5o IgogICAgICArI2luY2x1ZGUgImxpYmF2dXRpbC9hc3NfaW50ZXJuYWwuaCIKICAgICAtICNpbmNs dWRlICJpbnRlcm5hbC5oIgogICAgICAgI2luY2x1ZGUgImxpYmF2dXRpbC9pbnRlcm5hbC5oIgog ICAgICAgI2luY2x1ZGUgImxpYmF2dXRpbC9tZW0uaCIKICAgICArIAogICAgICAKICAgICAgICMj IGxpYmF2Y29kZWMvYXNzZW5jLmMgIyMKICAgICAgQEAKICAgICBAQCBsaWJhdmNvZGVjL2Fzc2Vu Yy5jCiAgICAgICAKICAgICAgICNpbmNsdWRlICJhdmNvZGVjLmgiCiAgICAgIC0jaW5jbHVkZSAi YXNzLmgiCiAgICAgKyAjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKICAgICAgKyNpbmNsdWRl ICJsaWJhdnV0aWwvYXNzX2ludGVybmFsLmgiCiAgICAgLSAjaW5jbHVkZSAiaW50ZXJuYWwuaCIK ICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIKICAgICAgICNpbmNsdWRlICJs aWJhdnV0aWwvaW50ZXJuYWwuaCIKICAgICArICNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiCiAg ICAgIAogICAgICAgIyMgbGliYXZjb2RlYy9jY2FwdGlvbl9kZWMuYyAjIwogICAgICBAQCBsaWJh dmNvZGVjL2NjYXB0aW9uX2RlYy5jOiBzdGF0aWMgYXZfY29sZCBpbnQgaW5pdF9kZWNvZGVyKEFW Q29kZWNDb250ZXh0ICphdmN0eCkKICAgICBAQCBsaWJhdmNvZGVjL2NjYXB0aW9uX2RlYy5jOiBz dGF0aWMgYXZfY29sZCBpbnQgaW5pdF9kZWNvZGVyKEFWQ29kZWNDb250ZXh0ICphdmN0eAogICAg ICAgICAgIGlmIChyZXQgPCAwKSB7CiAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAg ICAgfQogICAgIC1AQCBsaWJhdmNvZGVjL2NjYXB0aW9uX2RlYy5jOiBzdGF0aWMgaW50IGRlY29k ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZvaWQgKmRhdGEsIGludCAqZ290X3N1YiwgQVZQYWNr ZXQgKmF2cAogICAgICtAQCBsaWJhdmNvZGVjL2NjYXB0aW9uX2RlYy5jOiBzdGF0aWMgaW50IGRl Y29kZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWU3VidGl0bGUgKnN1YiwKICAgICArICAgICBp bnQgbGVuID0gYXZwa3QtPnNpemU7CiAgICAgKyAgICAgaW50IHJldCA9IDA7CiAgICAgKyAgICAg aW50IGk7CiAgICAgKy0gICAgdW5zaWduZWQgbmJfcmVjdF9hbGxvY2F0ZWQgPSAwOwogICAgICsg CiAgICAgKyAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSAzKSB7CiAgICAgKyAgICAgICAg IHVpbnQ4X3QgaGksIGNjX3R5cGUgPSBicHRyW2ldICYgMTsKICAgICArQEAgbGliYXZjb2RlYy9j Y2FwdGlvbl9kZWMuYzogc3RhdGljIGludCBkZWNvZGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBB VlN1YnRpdGxlICpzdWIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEFWX1RJTUVfQkFTRV9RLCBtc190Yik7CiAgICAgICAgICAgICAg ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgc3ViLT5lbmRfZGlzcGxheV90aW1lID0g LTE7CiAgICAgLS0gICAgICAgICAgICByZXQgPSBmZl9hc3NfYWRkX3JlY3Qoc3ViLCBjdHgtPmJ1 ZmZlcltiaWR4XS5zdHIsIGN0eC0+cmVhZG9yZGVyKyssIDAsIE5VTEwsIE5VTEwpOwogICAgICst ICAgICAgICAgICAgcmV0ID0gZmZfYXNzX2FkZF9yZWN0MihzdWIsIGN0eC0+YnVmZmVyW2JpZHhd LnN0ciwgY3R4LT5yZWFkb3JkZXIrKywgMCwgTlVMTCwgTlVMTCwgJm5iX3JlY3RfYWxsb2NhdGVk KTsKICAgICAgKyAgICAgICAgICAgIHJldCA9IGF2cHJpdl9hc3NfYWRkX3JlY3Qoc3ViLCBjdHgt PmJ1ZmZlcltiaWR4XS5zdHIsIGN0eC0+cmVhZG9yZGVyKyssIDAsIE5VTEwsIE5VTEwpOwogICAg ICAgICAgICAgICAgICAgaWYgKHJldCA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKICAgICAgICAgICAgICAgICAgIGN0eC0+bGFzdF9yZWFsX3RpbWUgPSBzdWItPnB0czsK ICAgICAtQEAgbGliYXZjb2RlYy9jY2FwdGlvbl9kZWMuYzogc3RhdGljIGludCBkZWNvZGUoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LCB2b2lkICpkYXRhLCBpbnQgKmdvdF9zdWIsIEFWUGFja2V0ICph dnAKICAgICArQEAgbGliYXZjb2RlYy9jY2FwdGlvbl9kZWMuYzogc3RhdGljIGludCBkZWNvZGUo QVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlN1YnRpdGxlICpzdWIsCiAgICAgICAKICAgICAgICAg ICBpZiAoIWJwdHIgJiYgIWN0eC0+cmVhbF90aW1lICYmIGN0eC0+YnVmZmVyWyFjdHgtPmJ1ZmZl cl9pbmRleF0uc3RyWzBdKSB7CiAgICAgICAgICAgICAgIGJpZHggPSAhY3R4LT5idWZmZXJfaW5k ZXg7CiAgICAgLS0gICAgICAgIHJldCA9IGZmX2Fzc19hZGRfcmVjdChzdWIsIGN0eC0+YnVmZmVy W2JpZHhdLnN0ciwgY3R4LT5yZWFkb3JkZXIrKywgMCwgTlVMTCwgTlVMTCk7CiAgICAgKy0gICAg ICAgIHJldCA9IGZmX2Fzc19hZGRfcmVjdDIoc3ViLCBjdHgtPmJ1ZmZlcltiaWR4XS5zdHIsIGN0 eC0+cmVhZG9yZGVyKyssIDAsIE5VTEwsIE5VTEwsICZuYl9yZWN0X2FsbG9jYXRlZCk7CiAgICAg ICsgICAgICAgIHJldCA9IGF2cHJpdl9hc3NfYWRkX3JlY3Qoc3ViLCBjdHgtPmJ1ZmZlcltiaWR4 XS5zdHIsIGN0eC0+cmVhZG9yZGVyKyssIDAsIE5VTEwsIE5VTEwpOwogICAgICAgICAgICAgICBp ZiAocmV0IDwgMCkKICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgICAgICAg IHN1Yi0+cHRzID0gY3R4LT5idWZmZXJfdGltZVsxXTsKICAgICAtQEAgbGliYXZjb2RlYy9jY2Fw dGlvbl9kZWMuYzogc3RhdGljIGludCBkZWNvZGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCB2b2lk ICpkYXRhLCBpbnQgKmdvdF9zdWIsIEFWUGFja2V0ICphdnAKICAgICArQEAgbGliYXZjb2RlYy9j Y2FwdGlvbl9kZWMuYzogc3RhdGljIGludCBkZWNvZGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBB VlN1YnRpdGxlICpzdWIsCiAgICAgICAgICAgICAgIGNhcHR1cmVfc2NyZWVuKGN0eCk7CiAgICAg ICAgICAgICAgIGN0eC0+YnVmZmVyX2NoYW5nZWQgPSAwOwogICAgICAgCiAgICAgLS0gICAgICAg IHJldCA9IGZmX2Fzc19hZGRfcmVjdChzdWIsIGN0eC0+YnVmZmVyW2JpZHhdLnN0ciwgY3R4LT5y ZWFkb3JkZXIrKywgMCwgTlVMTCwgTlVMTCk7CiAgICAgKy0gICAgICAgIHJldCA9IGZmX2Fzc19h ZGRfcmVjdDIoc3ViLCBjdHgtPmJ1ZmZlcltiaWR4XS5zdHIsIGN0eC0+cmVhZG9yZGVyKyssIDAs IE5VTEwsIE5VTEwsICZuYl9yZWN0X2FsbG9jYXRlZCk7CiAgICAgICsgICAgICAgIHJldCA9IGF2 cHJpdl9hc3NfYWRkX3JlY3Qoc3ViLCBjdHgtPmJ1ZmZlcltiaWR4XS5zdHIsIGN0eC0+cmVhZG9y ZGVyKyssIDAsIE5VTEwsIE5VTEwpOwogICAgICAgICAgICAgICBpZiAocmV0IDwgMCkKICAgICAg ICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgICAgICAgIHN1Yi0+ZW5kX2Rpc3BsYXlf dGltZSA9IC0xOwogICAgICAKICAgICAgICMjIGxpYmF2Y29kZWMvamFjb3N1YmRlYy5jICMjCiAg ICAgLUBAIGxpYmF2Y29kZWMvamFjb3N1YmRlYy5jOiBzdGF0aWMgaW50IGphY29zdWJfZGVjb2Rl X2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwKICAgICArQEAgbGliYXZjb2RlYy9qYWNvc3Vi ZGVjLmM6IHN0YXRpYyBpbnQgamFjb3N1Yl9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2 Y3R4LCBBVlN1YnRpdGxlICpzdWIsCiAgICAgICAKICAgICAgICAgICAgICAgYXZfYnByaW50X2lu aXQoJmJ1ZmZlciwgSlNTX01BWF9MSU5FU0laRSwgSlNTX01BWF9MSU5FU0laRSk7CiAgICAgICAg ICAgICAgIGphY29zdWJfdG9fYXNzKGF2Y3R4LCAmYnVmZmVyLCBwdHIpOwogICAgIEBAIGxpYmF2 Y29kZWMvbGlienZiaS10ZWxldGV4dGRlYy5jOiBzdGF0aWMgaW50IGdlbl9zdWJfYml0bWFwKFRl bGV0ZXh0Q29udGV4dCAqY3R4CiAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgIH0K ICAgICAgIAogICAgIC1AQCBsaWJhdmNvZGVjL2xpYnp2YmktdGVsZXRleHRkZWMuYzogc3RhdGlj IGludCB0ZWxldGV4dF9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCB2b2lkICpk YXRhLCBpbnQgKmdvdF9zdWIKICAgICArQEAgbGliYXZjb2RlYy9saWJ6dmJpLXRlbGV0ZXh0ZGVj LmM6IHN0YXRpYyBpbnQgdGVsZXRleHRfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwgQVZTdWJ0aXRsZSAqc3ViLAogICAgICAgICAgICAgICBzdWItPm51bV9yZWN0cyA9IDA7CiAg ICAgICAgICAgICAgIHN1Yi0+cHRzID0gY3R4LT5wYWdlcy0+cHRzOwogICAgICAgCiAgICAgQEAg bGliYXZjb2RlYy9saWJ6dmJpLXRlbGV0ZXh0ZGVjLmM6IHN0YXRpYyBpbnQgdGVsZXRleHRfZGVj b2RlX2ZyYW1lKEFWQ29kZWNDb250ZXgKICAgICAgICAgICAgICAgICAgICAgICBzdWItPm51bV9y ZWN0cyA9IDE7CiAgICAgIAogICAgICAgIyMgbGliYXZjb2RlYy9taWNyb2R2ZGRlYy5jICMjCiAg ICAgLUBAIGxpYmF2Y29kZWMvbWljcm9kdmRkZWMuYzogc3RhdGljIGludCBtaWNyb2R2ZF9kZWNv ZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAogICAgICtAQCBsaWJhdmNvZGVjL21pY3Jv ZHZkZGVjLmM6IHN0YXRpYyBpbnQgbWljcm9kdmRfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0 ICphdmN0eCwgQVZTdWJ0aXRsZSAqc3ViLAogICAgICAgICAgICAgICB9CiAgICAgICAgICAgfQog ICAgICAgICAgIGlmIChuZXdfbGluZS5sZW4pIHsKICAgICBAQCBsaWJhdmNvZGVjL21vdnRleHRk ZWMuYwogICAgICAgI2luY2x1ZGUgImxpYmF2dXRpbC9jb21tb24uaCIKICAgICAgICNpbmNsdWRl ICJsaWJhdnV0aWwvYnByaW50LmgiCiAgICAgICAjaW5jbHVkZSAibGliYXZ1dGlsL2ludHJlYWR3 cml0ZS5oIgogICAgIC1AQCBsaWJhdmNvZGVjL21vdnRleHRkZWMuYzogc3RhdGljIGludCBtb3Zf dGV4dF9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAogICAgICtAQCBsaWJhdmNv ZGVjL21vdnRleHRkZWMuYzogc3RhdGljIGludCBtb3ZfdGV4dF9kZWNvZGVfZnJhbWUoQVZDb2Rl Y0NvbnRleHQgKmF2Y3R4LCBBVlN1YnRpdGxlICpzdWIsCiAgICAgICAgICAgfSBlbHNlCiAgICAg ICAgICAgICAgIHRleHRfdG9fYXNzKCZidWYsIHB0ciwgZW5kLCBhdmN0eCk7CiAgICAgICAKICAg ICBAQCBsaWJhdmNvZGVjL21vdnRleHRlbmMuYwogICAgICArI2luY2x1ZGUgImxpYmF2dXRpbC9h c3Nfc3BsaXRfaW50ZXJuYWwuaCIKICAgICAgKyNpbmNsdWRlICJsaWJhdnV0aWwvYXNzX2ludGVy bmFsLmgiCiAgICAgICAjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgogICAgIC0gI2luY2x1ZGUgImlu dGVybmFsLmgiCiAgICAgKyAjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKICAgICAgIAogICAg ICBAQCBsaWJhdmNvZGVjL21vdnRleHRlbmMuYzogc3RhdGljIGludCBtb3ZfdGV4dF9lbmNvZGVf Y2xvc2UoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgICAgewogICAgIEBAIGxpYmF2Y29kZWMv bW92dGV4dGVuYy5jOiBzdGF0aWMgaW50IG1vdl90ZXh0X2VuY29kZV9mcmFtZShBVkNvZGVjQ29u dGV4dCAqYXZjdHgsCiAgICAgICAgICAgaWYgKHMtPmJ1ZmZlci5sZW4gPiBVSU5UMTZfTUFYKQog ICAgICAKICAgICAgICMjIGxpYmF2Y29kZWMvbXBsMmRlYy5jICMjCiAgICAgLUBAIGxpYmF2Y29k ZWMvbXBsMmRlYy5jOiBzdGF0aWMgaW50IG1wbDJfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0 ICphdmN0eCwgdm9pZCAqZGF0YSwKICAgICArQEAgbGliYXZjb2RlYy9tcGwyZGVjLmM6IHN0YXRp YyBpbnQgbXBsMl9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlN1YnRpdGxl ICpzdWIsCiAgICAgICAKICAgICAgICAgICBhdl9icHJpbnRfaW5pdCgmYnVmLCAwLCBBVl9CUFJJ TlRfU0laRV9VTkxJTUlURUQpOwogICAgICAgICAgIGlmIChwdHIgJiYgYXZwa3QtPnNpemUgPiAw ICYmICpwdHIgJiYgIW1wbDJfZXZlbnRfdG9fYXNzKCZidWYsIHB0cikpCiAgICAgQEAgbGliYXZj b2RlYy9tcGwyZGVjLmM6IHN0YXRpYyBpbnQgbXBsMl9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4LCB2b2lkICoKICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgCiAgICAg ICAjIyBsaWJhdmNvZGVjL3JlYWx0ZXh0ZGVjLmMgIyMKICAgICAtQEAgbGliYXZjb2RlYy9yZWFs dGV4dGRlYy5jOiBzdGF0aWMgaW50IHJlYWx0ZXh0X2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4 dCAqYXZjdHgsCiAgICAgK0BAIGxpYmF2Y29kZWMvcmVhbHRleHRkZWMuYzogc3RhdGljIGludCBy ZWFsdGV4dF9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlN1YnRpdGxlICpz dWIsCiAgICAgICAKICAgICAgICAgICBhdl9icHJpbnRfaW5pdCgmYnVmLCAwLCA0MDk2KTsKICAg ICAgICAgICBpZiAocHRyICYmIGF2cGt0LT5zaXplID4gMCAmJiAhcnRfZXZlbnRfdG9fYXNzKCZi dWYsIHB0cikpCiAgICAgQEAgbGliYXZjb2RlYy9yZWFsdGV4dGRlYy5jOiBzdGF0aWMgaW50IHJl YWx0ZXh0X2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgKICAgICAgICAgICAgICAg cmV0dXJuIHJldDsKICAgICAgCiAgICAgICAjIyBsaWJhdmNvZGVjL3NhbWlkZWMuYyAjIwogICAg IC1AQCBsaWJhdmNvZGVjL3NhbWlkZWMuYzogc3RhdGljIGludCBzYW1pX2RlY29kZV9mcmFtZShB VkNvZGVjQ29udGV4dCAqYXZjdHgsCiAgICAgK0BAIGxpYmF2Y29kZWMvc2FtaWRlYy5jOiBzdGF0 aWMgaW50IHNhbWlfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZTdWJ0aXRs ZSAqc3ViLAogICAgICAgICAgICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgICAgICAgICAgIHJl dHVybiByZXQ7CiAgICAgICAgICAgICAgIC8vIFRPRE86IHBhc3MgZXNjYXBlZCBzYW1pLT5lbmNv ZGVkX3NvdXJjZS5zdHIgYXMgc291cmNlCiAgICAgQEAgbGliYXZjb2RlYy9zYW1pZGVjLmM6IHN0 YXRpYyBpbnQgc2FtaV9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAogICAgICAg ICAgIH0KICAgICAgCiAgICAgICAjIyBsaWJhdmNvZGVjL3NydGRlYy5jICMjCiAgICAgLUBAIGxp YmF2Y29kZWMvc3J0ZGVjLmM6IHN0YXRpYyBpbnQgc3J0X2RlY29kZV9mcmFtZShBVkNvZGVjQ29u dGV4dCAqYXZjdHgsCiAgICAgK0BAIGxpYmF2Y29kZWMvc3J0ZGVjLmM6IHN0YXRpYyBpbnQgc3J0 X2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWU3VidGl0bGUgKnN1YiwKICAg ICAgIAogICAgICAgICAgIHJldCA9IHNydF90b19hc3MoYXZjdHgsICZidWZmZXIsIGF2cGt0LT5k YXRhLCB4MSwgeTEsIHgyLCB5Mik7CiAgICAgICAgICAgaWYgKHJldCA+PSAwKQogICAgIEBAIGxp YmF2Y29kZWMvc3J0ZW5jLmMKICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvYnByaW50LmgiCiAg ICAgIC0jaW5jbHVkZSAiYXNzX3NwbGl0LmgiCiAgICAgIC0jaW5jbHVkZSAiYXNzLmgiCiAgICAg KyAjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKICAgICAgKyNpbmNsdWRlICJsaWJhdnV0aWwv YXNzX3NwbGl0X2ludGVybmFsLmgiCiAgICAgICsjaW5jbHVkZSAibGliYXZ1dGlsL2Fzc19pbnRl cm5hbC5oIgogICAgIC0gI2luY2x1ZGUgImludGVybmFsLmgiCiAgICAgICAKICAgICAgIAogICAg ICsgI2RlZmluZSBTUlRfU1RBQ0tfU0laRSA2NAogICAgICBAQCBsaWJhdmNvZGVjL3NydGVuYy5j OiBzdGF0aWMgdm9pZCBzcnRfc3RhY2tfcHVzaF9wb3AoU1JUQ29udGV4dCAqcywgY29uc3QgY2hh ciBjLCBpbnQgY2xvc2UpCiAgICAgICAKICAgICAgIHN0YXRpYyB2b2lkIHNydF9zdHlsZV9hcHBs eShTUlRDb250ZXh0ICpzLCBjb25zdCBjaGFyICpzdHlsZSkKICAgICBAQCBsaWJhdmNvZGVjL3Ny dGVuYy5jOiBzdGF0aWMgaW50IHRleHRfZW5jb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwKICAgICAgIH0KICAgICAgCiAgICAgICAjIyBsaWJhdmNvZGVjL3N1YnZpZXdlcmRlYy5jICMj CiAgICAgLUBAIGxpYmF2Y29kZWMvc3Vidmlld2VyZGVjLmM6IHN0YXRpYyBpbnQgc3Vidmlld2Vy X2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCiAgICAgK0BAIGxpYmF2Y29kZWMv c3Vidmlld2VyZGVjLmM6IHN0YXRpYyBpbnQgc3Vidmlld2VyX2RlY29kZV9mcmFtZShBVkNvZGVj Q29udGV4dCAqYXZjdHgsIEFWU3VidGl0bGUgKnN1YiwKICAgICAgIAogICAgICAgICAgIGF2X2Jw cmludF9pbml0KCZidWYsIDAsIEFWX0JQUklOVF9TSVpFX1VOTElNSVRFRCk7CiAgICAgICAgICAg aWYgKHB0ciAmJiBhdnBrdC0+c2l6ZSA+IDAgJiYgIXN1YnZpZXdlcl9ldmVudF90b19hc3MoJmJ1 ZiwgcHRyKSkKICAgICBAQCBsaWJhdmNvZGVjL3N1YnZpZXdlcmRlYy5jOiBzdGF0aWMgaW50IHN1 YnZpZXdlcl9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2YwogICAgICAgICAgICAgICBy ZXR1cm4gcmV0OwogICAgICAKICAgICAgICMjIGxpYmF2Y29kZWMvdGV4dGRlYy5jICMjCiAgICAg LUBAIGxpYmF2Y29kZWMvdGV4dGRlYy5jOiBzdGF0aWMgaW50IHRleHRfZGVjb2RlX2ZyYW1lKEFW Q29kZWNDb250ZXh0ICphdmN0eCwgdm9pZCAqZGF0YSwKICAgICArQEAgbGliYXZjb2RlYy90ZXh0 ZGVjLmM6IHN0YXRpYyBpbnQgdGV4dF9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LCBBVlN1YnRpdGxlICpzdWIsCiAgICAgICAKICAgICAgICAgICBhdl9icHJpbnRfaW5pdCgmYnVm LCAwLCBBVl9CUFJJTlRfU0laRV9VTkxJTUlURUQpOwogICAgICAgICAgIGlmIChwdHIgJiYgYXZw a3QtPnNpemUgPiAwICYmICpwdHIpIHsKICAgICBAQCBsaWJhdmNvZGVjL3R0bWxlbmMuYzogc3Rh dGljIGF2X2NvbGQgaW50IHR0bWxfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQog ICAgICAgCiAgICAgIAogICAgICAgIyMgbGliYXZjb2RlYy93ZWJ2dHRkZWMuYyAjIwogICAgIC1A QCBsaWJhdmNvZGVjL3dlYnZ0dGRlYy5jOiBzdGF0aWMgaW50IHdlYnZ0dF9kZWNvZGVfZnJhbWUo QVZDb2RlY0NvbnRleHQgKmF2Y3R4LAogICAgICtAQCBsaWJhdmNvZGVjL3dlYnZ0dGRlYy5jOiBz dGF0aWMgaW50IHdlYnZ0dF9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVlN1 YnRpdGxlICpzdWIsCiAgICAgICAKICAgICAgICAgICBhdl9icHJpbnRfaW5pdCgmYnVmLCAwLCBB Vl9CUFJJTlRfU0laRV9VTkxJTUlURUQpOwogICAgICAgICAgIGlmIChwdHIgJiYgYXZwa3QtPnNp emUgPiAwICYmICF3ZWJ2dHRfZXZlbnRfdG9fYXNzKCZidWYsIHB0cikpCiAgICAgQEAgbGliYXZj b2RlYy93ZWJ2dHRlbmMuYwogICAgICAgI2luY2x1ZGUgImxpYmF2dXRpbC9icHJpbnQuaCIKICAg ICAgLSNpbmNsdWRlICJhc3Nfc3BsaXQuaCIKICAgICAgLSNpbmNsdWRlICJhc3MuaCIKICAgICAr ICNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgogICAgICArI2luY2x1ZGUgImxpYmF2dXRpbC9h c3Nfc3BsaXRfaW50ZXJuYWwuaCIKICAgICAgKyNpbmNsdWRlICJsaWJhdnV0aWwvYXNzX2ludGVy bmFsLmgiCiAgICAgLSAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKICAgICAgIAogICAgICAgI2RlZmlu ZSBXRUJWVFRfU1RBQ0tfU0laRSA2NAogICAgICsgdHlwZWRlZiBzdHJ1Y3QgewogICAgICBAQCBs aWJhdmNvZGVjL3dlYnZ0dGVuYy5jOiBzdGF0aWMgdm9pZCB3ZWJ2dHRfc3RhY2tfcHVzaF9wb3Ao V2ViVlRUQ29udGV4dCAqcywgY29uc3QgY2hhciBjLCBpbnQgY2xvc2UpCiAgICAgICAKICAgICAg IHN0YXRpYyB2b2lkIHdlYnZ0dF9zdHlsZV9hcHBseShXZWJWVFRDb250ZXh0ICpzLCBjb25zdCBj aGFyICpzdHlsZSkKICAgICBAQCBsaWJhdnV0aWwvYXNzLmM6IGNoYXIgKmZmX2Fzc19nZXRfZGlh bG9nKGludCByZWFkb3JkZXIsIGludCBsYXllciwgY29uc3QgY2hhciAqcwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzcGVha2VyID8gc3BlYWtlciA6ICIiLCB0ZXh0KTsKICAgICAgIH0K ICAgICAgIAogICAgIC0taW50IGZmX2Fzc19hZGRfcmVjdChBVlN1YnRpdGxlICpzdWIsIGNvbnN0 IGNoYXIgKmRpYWxvZywKICAgICArLWludCBmZl9hc3NfYWRkX3JlY3QyKEFWU3VidGl0bGUgKnN1 YiwgY29uc3QgY2hhciAqZGlhbG9nLAogICAgICAtICAgICAgICAgICAgICAgICAgICBpbnQgcmVh ZG9yZGVyLCBpbnQgbGF5ZXIsIGNvbnN0IGNoYXIgKnN0eWxlLAogICAgIC0tICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpzcGVha2VyKQogICAgIC0rY2hhciAqYXZwcml2X2Fzc19nZXRf ZGlhbG9nX2V4KGludCByZWFkb3JkZXIsIGludCBsYXllciwgY29uc3QgY2hhciAqc3R5bGUsCiAg ICAgLSsgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcGVha2VyLCBpbnQgbWFy Z2luX2wsIGludCBtYXJnaW5fciwKICAgICAtKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBt YXJnaW5fdiwgY29uc3QgY2hhciAqdGV4dCkKICAgICAtIHsKICAgICAtLSAgICBBVlN1YnRpdGxl UmVjdCAqKnJlY3RzLCAqcmVjdDsKICAgICArLSAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqc3BlYWtlciwgdW5zaWduZWQgKm5iX3JlY3RfYWxsb2NhdGVkKQogICAgICstewogICAgICst ICAgIEFWU3VidGl0bGVSZWN0ICoqcmVjdHMgPSBzdWItPnJlY3RzLCAqcmVjdDsKICAgICAgLSAg ICBjaGFyICphc3Nfc3RyOwogICAgICstICAgIHVpbnQ2NF90IG5ld19uYiA9IDA7CiAgICAgIC0K ICAgICAtLSAgICByZWN0cyA9IGF2X3JlYWxsb2NfYXJyYXkoc3ViLT5yZWN0cywgc3ViLT5udW1f cmVjdHMrMSwgc2l6ZW9mKCpzdWItPnJlY3RzKSk7CiAgICAgLS0gICAgaWYgKCFyZWN0cykKICAg ICArLSAgICBpZiAoc3ViLT5udW1fcmVjdHMgPj0gVUlOVF9NQVgpCiAgICAgIC0gICAgICAgIHJl dHVybiBBVkVSUk9SKEVOT01FTSk7CiAgICAgLS0gICAgc3ViLT5yZWN0cyA9IHJlY3RzOwogICAg ICstCiAgICAgKy0gICAgaWYgKG5iX3JlY3RfYWxsb2NhdGVkICYmICpuYl9yZWN0X2FsbG9jYXRl ZCA8PSBzdWItPm51bV9yZWN0cykgewogICAgICstICAgICAgICBpZiAoc3ViLT5udW1fcmVjdHMg PCBVSU5UX01BWCAvIDE3ICogMTYpIHsKICAgICArLSAgICAgICAgICAgIG5ld19uYiA9IHN1Yi0+ bnVtX3JlY3RzICsgc3ViLT5udW1fcmVjdHMvMTYgKyAxOwogICAgICstICAgICAgICB9IGVsc2UK ICAgICArLSAgICAgICAgICAgIG5ld19uYiA9IFVJTlRfTUFYOwogICAgICstICAgIH0gZWxzZSBp ZiAoIW5iX3JlY3RfYWxsb2NhdGVkKQogICAgICstICAgICAgICBuZXdfbmIgPSBzdWItPm51bV9y ZWN0cyArIDE7CiAgICAgKy0KICAgICArLSAgICBpZiAobmV3X25iKSB7CiAgICAgKy0gICAgICAg IHJlY3RzID0gYXZfcmVhbGxvY19hcnJheShyZWN0cywgbmV3X25iLCBzaXplb2YoKnN1Yi0+cmVj dHMpKTsKICAgICArLSAgICAgICAgaWYgKCFyZWN0cykKICAgICArLSAgICAgICAgICAgIHJldHVy biBBVkVSUk9SKEVOT01FTSk7CiAgICAgKy0gICAgICAgIGlmIChuYl9yZWN0X2FsbG9jYXRlZCkK ICAgICArLSAgICAgICAgICAgICpuYl9yZWN0X2FsbG9jYXRlZCA9IG5ld19uYjsKICAgICArLSAg ICAgICAgc3ViLT5yZWN0cyA9IHJlY3RzOwogICAgICstICAgIH0KICAgICArLQogICAgICAtICAg IHJlY3QgICAgICAgPSBhdl9tYWxsb2N6KHNpemVvZigqcmVjdCkpOwogICAgICAtICAgIGlmICgh cmVjdCkKICAgICAgLSAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAgICBAQCBsaWJh dnV0aWwvYXNzLmM6IGNoYXIgKmZmX2Fzc19nZXRfZGlhbG9nKGludCByZWFkb3JkZXIsIGludCBs YXllciwgY29uc3QgY2hhciAqcwogICAgICAtICAgIHJldHVybiAwOwogICAgICAtfQogICAgICAt CiAgICAgKy1pbnQgZmZfYXNzX2FkZF9yZWN0KEFWU3VidGl0bGUgKnN1YiwgY29uc3QgY2hhciAq ZGlhbG9nLAogICAgICstICAgICAgICAgICAgICAgICAgICBpbnQgcmVhZG9yZGVyLCBpbnQgbGF5 ZXIsIGNvbnN0IGNoYXIgKnN0eWxlLAogICAgICstICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICpzcGVha2VyKQogICAgICsrY2hhciAqYXZwcml2X2Fzc19nZXRfZGlhbG9nX2V4KGludCBy ZWFkb3JkZXIsIGludCBsYXllciwgY29uc3QgY2hhciAqc3R5bGUsCiAgICAgKysgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcGVha2VyLCBpbnQgbWFyZ2luX2wsIGludCBtYXJn aW5fciwKICAgICArKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXJnaW5fdiwgY29uc3Qg Y2hhciAqdGV4dCkKICAgICArIHsKICAgICArLSAgICByZXR1cm4gZmZfYXNzX2FkZF9yZWN0Mihz dWIsIGRpYWxvZywgcmVhZG9yZGVyLCBsYXllciwgc3R5bGUsIHNwZWFrZXIsIE5VTEwpOwogICAg ICstfQogICAgICstCiAgICAgIC12b2lkIGZmX2Fzc19kZWNvZGVyX2ZsdXNoKEFWQ29kZWNDb250 ZXh0ICphdmN0eCkKICAgICAgLXsKICAgICAgLSAgICBGRkFTU0RlY29kZXJDb250ZXh0ICpzID0g YXZjdHgtPnByaXZfZGF0YTsKICAgICBAQCBsaWJhdnV0aWwvYXNzX2ludGVybmFsLmggKG5ldykK ICAgICAgCiAgICAgICAjIyBsaWJhdmNvZGVjL2Fzc19zcGxpdC5jID0+IGxpYmF2dXRpbC9hc3Nf c3BsaXQuYyAjIwogICAgICBAQAogICAgIC0gI2luY2x1ZGUgImxpYmF2dXRpbC9jb21tb24uaCIK ICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvZXJyb3IuaCIKICAgICArICNpbmNsdWRlICJsaWJh dnV0aWwvbWFjcm9zLmgiCiAgICAgICAjaW5jbHVkZSAibGliYXZ1dGlsL21lbS5oIgogICAgICAt I2luY2x1ZGUgImFzc19zcGxpdC5oIgogICAgICArI2luY2x1ZGUgImFzc19zcGxpdF9pbnRlcm5h bC5oIgogIDY6ICBjNmZiNzhlMDM4ICEgIDc6ICAwOWQ4Y2Y3ODgwIGF2Y29kZWMvc3VidGl0bGVz OiBSZXBsYWNlIGRlcHJlY2F0ZWQgZW51bSB2YWx1ZXMKICAgICBAQCBsaWJhdmNvZGVjL2Fzcy5o OiBzdGF0aWMgaW5saW5lIGludCBhdnByaXZfYXNzX2FkZF9yZWN0KEFWU3VidGl0bGUgKnN1Yiwg Y29uc3QgYwogICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwogICAgICAKICAg ICAgICMjIGxpYmF2Y29kZWMvYXNzZGVjLmMgIyMKICAgICAtQEAgbGliYXZjb2RlYy9hc3NkZWMu Yzogc3RhdGljIGludCBhc3NfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgdm9p ZCAqZGF0YSwgaW50ICpnb3Rfc3ViX3B0ciwKICAgICArQEAgbGliYXZjb2RlYy9hc3NkZWMuYzog c3RhdGljIGludCBhc3NfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZTdWJ0 aXRsZSAqc3ViLAogICAgICAgICAgIGlmICghc3ViLT5yZWN0c1swXSkKICAgICAgICAgICAgICAg cmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAgICAgICAgICBzdWItPm51bV9yZWN0cyA9IDE7CiAg ICAgQEAgbGliYXZjb2RlYy9kdmRzdWJlbmMuYzogc3RhdGljIGludCBlbmNvZGVfZHZkX3N1YnRp dGxlcyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsCiAgICAgICAgICAgICAgIH0KICAgICAgCiAgICAg ICAjIyBsaWJhdmNvZGVjL3Bnc3N1YmRlYy5jICMjCiAgICAgLUBAIGxpYmF2Y29kZWMvcGdzc3Vi ZGVjLmM6IHN0YXRpYyBpbnQgZGlzcGxheV9lbmRfc2VnbWVudChBVkNvZGVjQ29udGV4dCAqYXZj dHgsIHZvaWQgKmRhdGEsCiAgICAgK0BAIGxpYmF2Y29kZWMvcGdzc3ViZGVjLmM6IHN0YXRpYyBp bnQgZGlzcGxheV9lbmRfc2VnbWVudChBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWU3VidGl0bGUg KnN1YiwKICAgICAgICAgICAgICAgaWYgKCFyZWN0KQogICAgICAgICAgICAgICAgICAgcmV0dXJu IEFWRVJST1IoRU5PTUVNKTsKICAgICAgICAgICAgICAgc3ViLT5yZWN0c1tzdWItPm51bV9yZWN0 cysrXSA9IHJlY3Q7CiAgICAgQEAgbGliYXZjb2RlYy9wZ3NzdWJkZWMuYzogc3RhdGljIGludCBk aXNwbGF5X2VuZF9zZWdtZW50KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgdm8KICAgICAgICAgICAg ICAgb2JqZWN0ID0gZmluZF9vYmplY3QoY3R4LT5wcmVzZW50YXRpb24ub2JqZWN0c1tpXS5pZCwg JmN0eC0+b2JqZWN0cyk7CiAgICAgIAogICAgICAgIyMgbGliYXZjb2RlYy94c3ViZGVjLmMgIyMK ICAgICAtQEAgbGliYXZjb2RlYy94c3ViZGVjLmM6IHN0YXRpYyBpbnQgZGVjb2RlX2ZyYW1lKEFW Q29kZWNDb250ZXh0ICphdmN0eCwgdm9pZCAqZGF0YSwgaW50ICpnb3Rfc3ViX3B0ciwKICAgICAr QEAgbGliYXZjb2RlYy94c3ViZGVjLmM6IHN0YXRpYyBpbnQgZGVjb2RlX2ZyYW1lKEFWQ29kZWND b250ZXh0ICphdmN0eCwgQVZTdWJ0aXRsZSAqc3ViLAogICAgICAgICAgIHN1Yi0+bnVtX3JlY3Rz ID0gMTsKICAgICAgICAgICByZWN0LT54ID0geDsgcmVjdC0+eSA9IHk7CiAgICAgICAgICAgcmVj dC0+dyA9IHc7IHJlY3QtPmggPSBoOwogIDc6ICAzZDg2NzM5MTlmID0gIDg6ICA4OTcyOTliZjdm IGZmdG9vbHMvcGxheSxwcm9iZTogQWRqdXN0IGZvciBzdWJ0aXRsZSBjaGFuZ2VzCiAgODogIGJh OGI2NzUzMjYgISAgOTogIGNhNTgwYzZkMjEgYXZmaWx0ZXIvc3VidGl0bGVzOiBBZGQgc3VidGl0 bGVzLmMgZm9yIHN1YnRpdGxlIGZyYW1lIGFsbG9jYXRpb24KICAgICBAQCBsaWJhdmZpbHRlci9N YWtlZmlsZTogT0JKUyA9IGFsbGZpbHRlcnMubwogICAgICAgICAgICAgIGdyYXBoZHVtcC5vICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg ICAgICAgICAgIGdyYXBocGFyc2VyLm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAogICAgICArICAgICAgIHN1YnRpdGxlcy5vICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICsgICAgICAg IHZlcnNpb24ubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAogICAgICAgICAgICAgIHZpZGVvLm8gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgCiAgICAgLSBPQkpTLSQo SEFWRV9USFJFQURTKSAgICAgICAgICAgICAgICAgICAgICAgICArPSBwdGhyZWFkLm8KICAgICAg CiAgICAgICAjIyBsaWJhdmZpbHRlci9hdmZpbHRlci5jICMjCiAgICAgIEBACiAgICAgQEAgbGli YXZmaWx0ZXIvYXZmaWx0ZXIuYwogICAgICAgI2luY2x1ZGUgImludGVybmFsLmgiCiAgICAgICsj aW5jbHVkZSAic3VidGl0bGVzLmgiCiAgICAgICAKICAgICAtICNpbmNsdWRlICJsaWJhdnV0aWwv ZmZ2ZXJzaW9uLmgiCiAgICAgLSBjb25zdCBjaGFyIGF2X2ZpbHRlcl9mZnZlcnNpb25bXSA9ICJG Rm1wZWcgdmVyc2lvbiAiIEZGTVBFR19WRVJTSU9OOwogICAgICsgc3RhdGljIHZvaWQgdGxvZ19y ZWYodm9pZCAqY3R4LCBBVkZyYW1lICpyZWYsIGludCBlbmQpCiAgICAgKyB7CiAgICAgIEBAIGxp YmF2ZmlsdGVyL2F2ZmlsdGVyLmM6IGludCBmZl9pbmxpbmtfbWFrZV9mcmFtZV93cml0YWJsZShB VkZpbHRlckxpbmsgKmxpbmssIEFWRnJhbWUgKipyZnJhbWUpCiAgICAgICAgICAgY2FzZSBBVk1F RElBX1RZUEVfQVVESU86CiAgICAgICAgICAgICAgIG91dCA9IGZmX2dldF9hdWRpb19idWZmZXIo bGluaywgZnJhbWUtPm5iX3NhbXBsZXMpOwogIDk6ICBlYjA5ZGIwZTAwICEgMTA6ICAwNzgxZTk3 NGEyIGF2ZmlsdGVyL2F2ZmlsdGVyOiBIYW5kbGUgc3VidGl0bGUgZnJhbWVzCiAgICAgQEAgbGli YXZmaWx0ZXIvYXZmaWx0ZXIuYzogc3RhdGljIHZvaWQgdGxvZ19yZWYodm9pZCAqY3R4LCBBVkZy YW1lICpyZWYsIGludCBlbmQpCiAgICAgICAgICAgfQogICAgICAgCiAgICAgICAgICAgZmZfdGxv ZyhjdHgsICJdJXMiLCBlbmQgPyAiXG4iIDogIiIpOwogICAgICtAQCBsaWJhdmZpbHRlci9hdmZp bHRlci5jOiBpbnQgZmZfZmlsdGVyX2ZyYW1lKEFWRmlsdGVyTGluayAqbGluaywgQVZGcmFtZSAq ZnJhbWUpCiAgICAgKyAgICAgICAgICAgICBhdl9hc3NlcnQxKGZyYW1lLT53aWR0aCAgICAgICAg ICAgICAgID09IGxpbmstPncpOwogICAgICsgICAgICAgICAgICAgYXZfYXNzZXJ0MShmcmFtZS0+ aGVpZ2h0ICAgICAgICAgICAgICAgPT0gbGluay0+aCk7CiAgICAgKyAgICAgICAgIH0KICAgICAr KyAgICB9IGVsc2UgaWYgKGxpbmstPnR5cGUgPT0gQVZNRURJQV9UWVBFX1NVQlRJVExFKSB7CiAg ICAgKysgICAgICAgIGlmIChmcmFtZS0+Zm9ybWF0ICE9IGxpbmstPmZvcm1hdCkgewogICAgICsr ICAgICAgICAgICAgYXZfbG9nKGxpbmstPmRzdCwgQVZfTE9HX1dBUk5JTkcsICJTdWJ0aXRsZSBm b3JtYXQgY2hhbmdlIGZyb20gJWQgdG8gJWRcbiIsIGxpbmstPmZvcm1hdCwgZnJhbWUtPmZvcm1h dCk7CiAgICAgKysgICAgICAgIH0KICAgICArICAgICB9IGVsc2UgewogICAgICsgICAgICAgICBp ZiAoZnJhbWUtPmZvcm1hdCAhPSBsaW5rLT5mb3JtYXQpIHsKICAgICArICAgICAgICAgICAgIGF2 X2xvZyhsaW5rLT5kc3QsIEFWX0xPR19FUlJPUiwgIkZvcm1hdCBjaGFuZ2UgaXMgbm90IHN1cHBv cnRlZFxuIik7CiAgICAgIAogICAgICAgIyMgbGliYXZmaWx0ZXIvYXZmaWx0ZXIuaCAjIwogICAg ICBAQAogICAgIEBAIGxpYmF2ZmlsdGVyL2F2ZmlsdGVyLmgKICAgICAgKyNpbmNsdWRlICJsaWJh dnV0aWwvc3ViZm10LmgiCiAgICAgICAjaW5jbHVkZSAibGliYXZ1dGlsL3JhdGlvbmFsLmgiCiAg ICAgICAKICAgICAtICNpbmNsdWRlICJsaWJhdmZpbHRlci92ZXJzaW9uLmgiCiAgICAgKyAjaW5j bHVkZSAibGliYXZmaWx0ZXIvdmVyc2lvbl9tYWpvci5oIgogICAgICBAQCBsaWJhdmZpbHRlci9h dmZpbHRlci5oOiB0eXBlZGVmIHN0cnVjdCBBVkZpbHRlciB7CiAgICAgICAgICAgICAgICAqIGFu ZCBvdXRwdXRzIHVzZSB0aGUgc2FtZSBzYW1wbGUgcmF0ZSBhbmQgY2hhbm5lbCBjb3VudC9sYXlv dXQuCiAgICAgICAgICAgICAgICAqLwogICAgIEBAIGxpYmF2ZmlsdGVyL2Zvcm1hdHMuYwogICAg ICAgI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFzc2VydC5oIgogICAgICAgI2luY2x1ZGUgImxpYmF2 dXRpbC9jaGFubmVsX2xheW91dC5oIgogICAgICAgI2luY2x1ZGUgImxpYmF2dXRpbC9jb21tb24u aCIKICAgICAtQEAgbGliYXZmaWx0ZXIvZm9ybWF0cy5jOiBpbnQgZmZfYWRkX2NoYW5uZWxfbGF5 b3V0KEFWRmlsdGVyQ2hhbm5lbExheW91dHMgKipsLCB1aW50NjRfdCBjaGFubmVsX2xheW91dCkK ICAgICAtICAgICByZXR1cm4gMDsKICAgICAtIH0KICAgICAtIAogICAgIC0raW50IGZmX2FkZF9z dWJ0aXRsZV90eXBlKEFWRmlsdGVyRm9ybWF0cyAqKmF2ZmYsIGludDY0X3QgZm10KQogICAgIC0r ewogICAgIC0rICAgIEFERF9GT1JNQVQoYXZmZiwgZm10LCBmZl9mb3JtYXRzX3VucmVmLCBpbnQs IGZvcm1hdHMsIG5iX2Zvcm1hdHMpOwogICAgIC0rICAgIHJldHVybiAwOwogICAgIC0rfQogICAg IC0rCiAgICAgLSBBVkZpbHRlckZvcm1hdHMgKmZmX21ha2VfZm9ybWF0c19saXN0X3NpbmdsZXRv bihpbnQgZm10KQogICAgIC0gewogICAgIC0gICAgIGludCBmbXRzWzJdID0geyBmbXQsIC0xIH07 CiAgICAgIEBAIGxpYmF2ZmlsdGVyL2Zvcm1hdHMuYzogQVZGaWx0ZXJGb3JtYXRzICpmZl9hbGxf Zm9ybWF0cyhlbnVtIEFWTWVkaWFUeXBlIHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgICBmbXQrKzsKICAgICAgICAgICAgICAgfQogICAg ICArICAgIH0gZWxzZSBpZiAodHlwZSA9PSBBVk1FRElBX1RZUEVfU1VCVElUTEUpIHsKICAgICAt KyAgICAgICAgaWYgKGZmX2FkZF9zdWJ0aXRsZV90eXBlKCZyZXQsIEFWX1NVQlRJVExFX0ZNVF9C SVRNQVApIDwgMCkKICAgICArKyAgICAgICAgaWYgKGZmX2FkZF9mb3JtYXQoJnJldCwgQVZfU1VC VElUTEVfRk1UX0JJVE1BUCkgPCAwKQogICAgICArICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAg ICAgLSsgICAgICAgIGlmIChmZl9hZGRfc3VidGl0bGVfdHlwZSgmcmV0LCBBVl9TVUJUSVRMRV9G TVRfQVNTKSA8IDApCiAgICAgKysgICAgICAgIGlmIChmZl9hZGRfZm9ybWF0KCZyZXQsIEFWX1NV QlRJVExFX0ZNVF9BU1MpIDwgMCkKICAgICAgKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAg IC0rICAgICAgICBpZiAoZmZfYWRkX3N1YnRpdGxlX3R5cGUoJnJldCwgQVZfU1VCVElUTEVfRk1U X1RFWFQpIDwgMCkKICAgICArKyAgICAgICAgaWYgKGZmX2FkZF9mb3JtYXQoJnJldCwgQVZfU1VC VElUTEVfRk1UX1RFWFQpIDwgMCkKICAgICAgKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAg ICAgICAgIH0KICAgICAgIAogICAgIEBAIGxpYmF2ZmlsdGVyL2Zvcm1hdHMuYzogaW50IGZmX2Rl ZmF1bHRfcXVlcnlfZm9ybWF0cyhBVkZpbHRlckNvbnRleHQgKmN0eCkKICAgICAgICAgICAvKiBJ bnRlbmRlZCBmYWxsdGhyb3VnaCAqLwogICAgICAKICAgICAgICMjIGxpYmF2ZmlsdGVyL2Zvcm1h dHMuaCAjIwogICAgIC1AQCBsaWJhdmZpbHRlci9mb3JtYXRzLmg6IGludCBmZl9zZXRfY29tbW9u X2Zvcm1hdHNfZnJvbV9saXN0KEFWRmlsdGVyQ29udGV4dCAqY3R4LCBjb25zdCBpbnQgKmZtdHMp OwogICAgIC0gYXZfd2Fybl91bnVzZWRfcmVzdWx0CiAgICAgLSBpbnQgZmZfYWRkX2NoYW5uZWxf bGF5b3V0KEFWRmlsdGVyQ2hhbm5lbExheW91dHMgKipsLCB1aW50NjRfdCBjaGFubmVsX2xheW91 dCk7CiAgICAgK0BAIGxpYmF2ZmlsdGVyL2Zvcm1hdHMuaDogYXZfd2Fybl91bnVzZWRfcmVzdWx0 CiAgICAgKyBpbnQgZmZfYWRkX2NoYW5uZWxfbGF5b3V0KEFWRmlsdGVyQ2hhbm5lbExheW91dHMg KipsLAogICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBVkNoYW5uZWxMYXlv dXQgKmNoYW5uZWxfbGF5b3V0KTsKICAgICAgIAogICAgICArYXZfd2Fybl91bnVzZWRfcmVzdWx0 CiAgICAgICtpbnQgZmZfYWRkX3N1YnRpdGxlX3R5cGUoQVZGaWx0ZXJGb3JtYXRzICoqYXZmZiwg aW50NjRfdCBmbXQpOwogMTA6ICBiMzFhOTkxMzIwID0gMTE6ICBkOWQ5ZjQyNTU4IGF2ZmlsdGVy L2F2ZmlsdGVyOiBGaXggaGFyZGNvZGVkIGlucHV0IGluZGV4CiAxMTogIDU5YWJlYTc2OTMgISAx MjogIGFmNjlhNGIzMjEgYXZmaWx0ZXIvc2J1ZmZlcjogQWRkIHNidWZmZXJzcmMgYW5kIHNidWZm ZXJzaW5rIGZpbHRlcnMKICAgICBAQCBsaWJhdmZpbHRlci9idWZmZXJzaW5rLmM6IHN0YXRpYyBp bnQgYXNpbmtfcXVlcnlfZm9ybWF0cyhBVkZpbHRlckNvbnRleHQgKmN0eCkKICAgICAgKyAgICBD SEVDS19MSVNUX1NJWkUoc3VidGl0bGVfdHlwZXMpCiAgICAgICsgICAgaWYgKGJ1Zi0+c3VidGl0 bGVfdHlwZXNfc2l6ZSkgewogICAgICArICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTkJfSVRFTVMo YnVmLT5zdWJ0aXRsZV90eXBlcyk7IGkrKykKICAgICAtKyAgICAgICAgICAgIGlmICgocmV0ID0g ZmZfYWRkX3N1YnRpdGxlX3R5cGUoJmZvcm1hdHMsIGJ1Zi0+c3VidGl0bGVfdHlwZXNbaV0pKSA8 IDApCiAgICAgKysgICAgICAgICAgICBpZiAoKHJldCA9IGZmX2FkZF9mb3JtYXQoJmZvcm1hdHMs IGJ1Zi0+c3VidGl0bGVfdHlwZXNbaV0pKSA8IDApCiAgICAgICsgICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsKICAgICAgKyAgICAgICAgaWYgKChyZXQgPSBmZl9zZXRfY29tbW9uX2Zvcm1hdHMo Y3R4LCBmb3JtYXRzKSkgPCAwKQogICAgICArICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICBA QCBsaWJhdmZpbHRlci9idWZmZXJzcmMuYwogICAgICAgdHlwZWRlZiBzdHJ1Y3QgQnVmZmVyU291 cmNlQ29udGV4dCB7CiAgICAgICAgICAgY29uc3QgQVZDbGFzcyAgICAqY2xhc3M7CiAgICAgIEBA IGxpYmF2ZmlsdGVyL2J1ZmZlcnNyYy5jOiB0eXBlZGVmIHN0cnVjdCBCdWZmZXJTb3VyY2VDb250 ZXh0IHsKICAgICAtICAgICB1aW50NjRfdCBjaGFubmVsX2xheW91dDsKICAgICAgICAgICBjaGFy ICAgICpjaGFubmVsX2xheW91dF9zdHI7CiAgICAgKyAgICAgQVZDaGFubmVsTGF5b3V0IGNoX2xh eW91dDsKICAgICAgIAogICAgICArICAgIC8qIHN1YnRpdGxlIG9ubHkgKi8KICAgICAgKyAgICBl bnVtIEFWU3VidGl0bGVUeXBlIHN1YnRpdGxlX3R5cGU7CiAgICAgQEAgbGliYXZmaWx0ZXIvYnVm ZmVyc3JjLmM6IHR5cGVkZWYgc3RydWN0IEJ1ZmZlclNvdXJjZUNvbnRleHQgewogICAgICAgICAg IGludCBlb2Y7CiAgICAgICB9IEJ1ZmZlclNvdXJjZUNvbnRleHQ7CiAgICAgICAKICAgICAtQEAg bGliYXZmaWx0ZXIvYnVmZmVyc3JjLmM6IGludCBhdl9idWZmZXJzcmNfcGFyYW1ldGVyc19zZXQo QVZGaWx0ZXJDb250ZXh0ICpjdHgsIEFWQnVmZmVyU3JjUGFyYW1ldGVycyAqcGFyCiAgICAgLSAg ICAgICAgIGlmIChwYXJhbS0+Y2hhbm5lbF9sYXlvdXQpCiAgICAgLSAgICAgICAgICAgICBzLT5j aGFubmVsX2xheW91dCA9IHBhcmFtLT5jaGFubmVsX2xheW91dDsKICAgICArQEAgbGliYXZmaWx0 ZXIvYnVmZmVyc3JjLmM6IEZGX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwogICAgICsgICAg ICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgKyAgICAgICAgIH0KICAgICAgICAgICAgICAg YnJlYWs7CiAgICAgICsgICAgY2FzZSBBVk1FRElBX1RZUEVfU1VCVElUTEU6CiAgICAgICsgICAg ICAgIHMtPnN1YnRpdGxlX3R5cGUgPSBwYXJhbS0+Zm9ybWF0OwogICAgIEBAIGxpYmF2ZmlsdGVy L2J1ZmZlcnNyYy5jOiBpbnQgYXZfYnVmZmVyc3JjX3BhcmFtZXRlcnNfc2V0KEFWRmlsdGVyQ29u dGV4dCAqY3R4LCBBCiAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgcmV0dXJuIEFW RVJST1JfQlVHOwogICAgICAgICAgIH0KICAgICAtQEAgbGliYXZmaWx0ZXIvYnVmZmVyc3JjLmM6 IGludCBhdHRyaWJ1dGVfYWxpZ25fYXJnIGF2X2J1ZmZlcnNyY19hZGRfZnJhbWVfZmxhZ3MoQVZG aWx0ZXJDb250ZXh0ICpjdHgsIEFWRnJhCiAgICAgLSAgICAgICAgICAgICBDSEVDS19BVURJT19Q QVJBTV9DSEFOR0UoY3R4LCBzLCBmcmFtZS0+c2FtcGxlX3JhdGUsIGZyYW1lLT5jaGFubmVsX2xh eW91dCwKICAgICAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ Y2hhbm5lbHMsIGZyYW1lLT5mb3JtYXQsIGZyYW1lLT5wdHMpOwogICAgICtAQCBsaWJhdmZpbHRl ci9idWZmZXJzcmMuYzogRkZfRU5BQkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTCiAgICAgKyAgICAg ICAgICAgICBDSEVDS19BVURJT19QQVJBTV9DSEFOR0UoY3R4LCBzLCBmcmFtZS0+c2FtcGxlX3Jh dGUsIGZyYW1lLT5jaF9sYXlvdXQsCiAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZnJhbWUtPmZvcm1hdCwgZnJhbWUtPnB0cyk7CiAgICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgKyAgICAgICAgY2FzZSBBVk1FRElBX1RZUEVfU1VCVElUTEU6CiAgICAgICsg ICAgICAgICAgICBicmVhazsKICAgICBAQCBsaWJhdmZpbHRlci9idWZmZXJzcmMuYzogc3RhdGlj IGNvbnN0IEFWT3B0aW9uIGFidWZmZXJfb3B0aW9uc1tdID0gewogICAgICAgc3RhdGljIGF2X2Nv bGQgaW50IGluaXRfYXVkaW8oQVZGaWx0ZXJDb250ZXh0ICpjdHgpCiAgICAgICB7CiAgICAgICAg ICAgQnVmZmVyU291cmNlQ29udGV4dCAqcyA9IGN0eC0+cHJpdjsKICAgICAtQEAgbGliYXZmaWx0 ZXIvYnVmZmVyc3JjLmM6IHN0YXRpYyBhdl9jb2xkIGludCBpbml0X2F1ZGlvKEFWRmlsdGVyQ29u dGV4dCAqY3R4KQogICAgICtAQCBsaWJhdmZpbHRlci9idWZmZXJzcmMuYzogRkZfRU5BQkxFX0RF UFJFQ0FUSU9OX1dBUk5JTkdTCiAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgIH0KICAgICAg IAogICAgIEBAIGxpYmF2ZmlsdGVyL2J1ZmZlcnNyYy5jOiBzdGF0aWMgaW50IHF1ZXJ5X2Zvcm1h dHMoQVZGaWx0ZXJDb250ZXh0ICpjdHgpCiAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJ TlZBTCk7CiAgICAgICAgICAgfQogICAgICBAQCBsaWJhdmZpbHRlci9idWZmZXJzcmMuYzogc3Rh dGljIGludCBjb25maWdfcHJvcHMoQVZGaWx0ZXJMaW5rICpsaW5rKQogICAgIC0gICAgICAgICBp ZiAoIWMtPmNoYW5uZWxfbGF5b3V0KQogICAgIC0gICAgICAgICAgICAgYy0+Y2hhbm5lbF9sYXlv dXQgPSBsaW5rLT5jaGFubmVsX2xheW91dDsKICAgICArICAgICAgICAgICAgICAgICByZXR1cm4g cmV0OwogICAgICsgICAgICAgICB9CiAgICAgICAgICAgICAgIGJyZWFrOwogICAgICArICAgIGNh c2UgQVZNRURJQV9UWVBFX1NVQlRJVExFOgogICAgICArICAgICAgICBsaW5rLT5mb3JtYXQgPSBj LT5zdWJ0aXRsZV90eXBlOwogICAgIEBAIGxpYmF2ZmlsdGVyL2J1ZmZlcnNyYy5jOiBjb25zdCBB VkZpbHRlciBmZl9hc3JjX2FidWZmZXIgPSB7CiAgICAgICAgICAgLnByaXZfY2xhc3MgPSAmYWJ1 ZmZlcl9jbGFzcywKICAgICAgIH07CiAgICAgICsKICAgICAtK3N0YXRpYyBjb25zdCBBVkZpbHRl clBhZCBzc3JjX3NidWZmZXJfb3V0cHV0c1tdID0gewogICAgICsrc3RhdGljIGNvbnN0IEFWRmls dGVyUGFkIGF2ZmlsdGVyX3NzcmNfc2J1ZmZlcl9vdXRwdXRzW10gPSB7CiAgICAgICsgICAgewog ICAgICArICAgICAgICAubmFtZSAgICAgICAgICA9ICJkZWZhdWx0IiwKICAgICAgKyAgICAgICAg LnR5cGUgICAgICAgICAgPSBBVk1FRElBX1RZUEVfU1VCVElUTEUsCiAgICAgQEAgbGliYXZmaWx0 ZXIvYnVmZmVyc3JjLmM6IGNvbnN0IEFWRmlsdGVyIGZmX2FzcmNfYWJ1ZmZlciA9IHsKICAgICAg KyAgICAudW5pbml0ICAgID0gdW5pbml0LAogICAgICArCiAgICAgICsgICAgLmlucHV0cyAgICA9 IE5VTEwsCiAgICAgLSsgICAgRklMVEVSX09VVFBVVFMoc3NyY19zYnVmZmVyX291dHB1dHMpLAog ICAgICsrICAgIEZJTFRFUl9PVVRQVVRTKGF2ZmlsdGVyX3NzcmNfc2J1ZmZlcl9vdXRwdXRzKSwK ICAgICAgKyAgICBGSUxURVJfUVVFUllfRlVOQyhxdWVyeV9mb3JtYXRzKSwKICAgICAgKyAgICAu cHJpdl9jbGFzcyA9ICZzYnVmZmVyX2NsYXNzLAogICAgICArfTsKIDEyOiAgODY3YjYwYzYwZCAh IDEzOiAgZjdlNWI1OTBhMiBhdmZpbHRlci9vdmVybGF5Z3JhcGhpY3N1YnM6IEFkZCBvdmVybGF5 Z3JhcGhpY3N1YnMgYW5kIGdyYXBoaWNzdWIydmlkZW8gZmlsdGVycwogICAgIEBAIGRvYy9maWx0 ZXJzLnRleGk6IHRvb2xzLgogICAgICArVGhpcyBmaWx0ZXIgcmVwbGFjZXMgdGhlIHByZXZpb3Vz ICJzdWIydmlkZW8iIGhhY2sgd2hpY2ggZGlkIHRoZSBjb252ZXJzaW9uIGltcGxpY2l0bHkgYW5k IHVwLWZyb250IGFzIHN1YnRpdGxlIGZpbHRlcmluZyB3YXNuJ3QgcG9zc2libGUgYXQgdGhhdCB0 aW1lLgogICAgICArVG8gcmV0YWluIGNvbXBhdGliaWxpdHkgd2l0aCBlYXJsaWVyIHN1YjJ2aWRl byBjb21tYW5kIGxpbmVzLCB0aGlzIGZpbHRlciBpcyBiZWluZyBhdXRvLWluc2VydGVkIGluIHRo b3NlIGNhc2VzLgogICAgICArCiAgICAgLStGb3Igb3ZlcmxheWluZyBncmFwaGljc2FsIHN1YnRp dGxlcyBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlICdvdmVybGF5X2dyYXBoaWNzdWJzJyBm aWx0ZXIgd2hpY2ggaXMgbW9yZSBlZmZpY2llbnQgYW5kIHRha2VzIGxlc3MgcHJvY2Vzc2luZyBy ZXNvdXJjZXMuCiAgICAgKytGb3Igb3ZlcmxheWluZyBncmFwaGljc2FsIHN1YnRpdGxlcyBpdCBp cyByZWNvbW1lbmRlZCB0byB1c2UgdGhlICdvdmVybGF5Z3JhcGhpY3N1YnMnIGZpbHRlciB3aGlj aCBpcyBtb3JlIGVmZmljaWVudCBhbmQgdGFrZXMgbGVzcyBwcm9jZXNzaW5nIHJlc291cmNlcy4K ICAgICAgKwogICAgICArVGhpcyBmaWx0ZXIgaXMgc3RpbGwgdXNlZnVsIGluIGNhc2VzIHdoZXJl IHRoZSBvdmVybGF5IGlzIGRvbmUgd2l0aCBoYXJkd2FyZSBhY2NlbGVyYXRpb24gKGUuZy4gb3Zl cmxheV9xc3YsIG92ZXJsYXlfdmFhcGksIG92ZXJsYXlfY3VkYSkgZm9yIHByZXBhcmluZyB0aGUg b3ZlcmxheSBmcmFtZXMuCiAgICAgICsKICAgICBAQCBkb2MvZmlsdGVycy50ZXhpOiB0b29scy4K ICAgICAgK0BpdGVtaXplCiAgICAgICtAaXRlbQogICAgICArT3ZlcmxheSBQR1Mgc3VidGl0bGVz CiAgICAgLSsobm90IHJlY29tbWVuZGVkIC0gYmV0dGVyIHVzZSBvdmVybGF5X2dyYXBoaWNzdWJz KQogICAgICsrKG5vdCByZWNvbW1lbmRlZCAtIGJldHRlciB1c2Ugb3ZlcmxheWdyYXBoaWNzdWJz KQogICAgICArQGV4YW1wbGUKICAgICAgK2ZmbXBlZyAtaSAiaHR0cHM6Ly9zdHJlYW1zLnZpZGVv bGFuLm9yZy9zYW1wbGVzL3N1Yi9QR1MvR2lybF9XaXRoX1RoZV9EcmFnb25fVGF0dG9vXzIlM0Ey MyUzQTU2Lm1rdiIgLWZpbHRlcl9jb21wbGV4ICJbMDoxXWdyYXBoaWNzdWIydmlkZW9bc3Vic107 WzA6MF1bc3Vic11vdmVybGF5IiBvdXRwdXQubXA0CiAgICAgICtAZW5kIGV4YW1wbGUKICAgICBA QCBsaWJhdmZpbHRlci9NYWtlZmlsZTogT0JKUy0kKENPTkZJR19PVkVSTEFZX09QRU5DTF9GSUxU RVIpICAgICAgICAgKz0gdmZfb3ZlcmxheQogICAgICAgT0JKUy0kKENPTkZJR19QQURfT1BFTkNM X0ZJTFRFUikgICAgICAgICAgICAgKz0gdmZfcGFkX29wZW5jbC5vIG9wZW5jbC5vIG9wZW5jbC9w YWQubwogICAgICAKICAgICAgICMjIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyAjIwogICAgIC1A QCBsaWJhdmZpbHRlci9hbGxmaWx0ZXJzLmM6IGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9v c2NpbGxvc2NvcGU7CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3ZlcmxheTsK ICAgICAtIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9vdmVybGF5X29wZW5jbDsKICAgICAt IGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9vdmVybGF5X3FzdjsKICAgICAtK2V4dGVybiBj b25zdCBBVkZpbHRlciBmZl92Zl9vdmVybGF5Z3JhcGhpY3N1YnM7CiAgICAgK0BAIGxpYmF2Zmls dGVyL2FsbGZpbHRlcnMuYzogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXlfcXN2 OwogICAgICAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXlfdmFhcGk7CiAgICAg ICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3ZlcmxheV92dWxrYW47CiAgICAgICBleHRl cm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3ZlcmxheV9jdWRhOwogICAgICsrZXh0ZXJuIGNvbnN0 IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXlncmFwaGljc3ViczsKICAgICArIGV4dGVybiBjb25zdCBB VkZpbHRlciBmZl92Zl9vd2Rlbm9pc2U7CiAgICAgKyBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZf dmZfcGFkOwogICAgICsgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX3BhZF9vcGVuY2w7CiAg ICAgIEBAIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYzogZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZm X2F2Zl9zaG93dm9sdW1lOwogICAgICAgZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2F2Zl9zaG93 d2F2ZXM7CiAgICAgICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYXZmX3Nob3d3YXZlc3BpYzsK ICAgICBAQCBsaWJhdmZpbHRlci9hbGxmaWx0ZXJzLmM6IGV4dGVybiBjb25zdCBBVkZpbHRlciBm Zl9hdmZfc2hvd3ZvbHVtZTsKICAgICAgK2V4dGVybiBjb25zdCBBVkZpbHRlciBmZl9zdmZfZ3Jh cGhpY3N1YjJ2aWRlbzsKICAgICAgIAogICAgICAgLyogbXVsdGltZWRpYSBzb3VyY2VzICovCiAg ICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfYXZzcmNfYW1vdmllOwogICAgICsgZXh0ZXJu IGNvbnN0IEFWRmlsdGVyIGZmX2F2c3JjX2F2c3luY3Rlc3Q7CiAgICAgIAogICAgICAgIyMgbGli YXZmaWx0ZXIvdmZfb3ZlcmxheWdyYXBoaWNzdWJzLmMgKG5ldykgIyMKICAgICAgQEAKIDEzOiAg Zjg4YTU2NjdlMSAhIDE0OiAgNGM4MDkyMzU3ZiBhdmZpbHRlci9vdmVybGF5dGV4dHN1YnM6IEFk ZCBvdmVybGF5dGV4dHN1YnMgYW5kIHRleHRzdWJzMnZpZGVvIGZpbHRlcnMKICAgICBAQCBjb25m aWd1cmU6IG92ZXJsYXlfcXN2X2ZpbHRlcl9kZXBzPSJsaWJtZngiCiAgICAgICBvd2Rlbm9pc2Vf ZmlsdGVyX2RlcHM9ImdwbCIKICAgICAgIHBhZF9vcGVuY2xfZmlsdGVyX2RlcHM9Im9wZW5jbCIK ICAgICAgIHBhbl9maWx0ZXJfZGVwcz0ic3dyZXNhbXBsZSIKICAgICAtQEAgY29uZmlndXJlOiBz dXBlcmVxdWFsaXplcl9maWx0ZXJfZGVwcz0iYXZjb2RlYyIKICAgICAtIHN1cGVyZXF1YWxpemVy X2ZpbHRlcl9zZWxlY3Q9InJkZnQiCiAgICAgLSBzdXJyb3VuZF9maWx0ZXJfZGVwcz0iYXZjb2Rl YyIKICAgICAtIHN1cnJvdW5kX2ZpbHRlcl9zZWxlY3Q9InJkZnQiCiAgICAgK0BAIGNvbmZpZ3Vy ZTogc3RlcmVvM2RfZmlsdGVyX2RlcHM9ImdwbCIKICAgICArIHN1YnRpdGxlc19maWx0ZXJfZGVw cz0iYXZmb3JtYXQgYXZjb2RlYyBsaWJhc3MiCiAgICAgKyBzdXBlcjJ4c2FpX2ZpbHRlcl9kZXBz PSJncGwiCiAgICAgKyBwaXhmbXRzX3N1cGVyMnhzYWlfdGVzdF9kZXBzPSJzdXBlcjJ4c2FpX2Zp bHRlciIKICAgICAgK3RleHRzdWIydmlkZW9fZmlsdGVyX2RlcHM9ImF2Y29kZWMgbGliYXNzIgog ICAgICAgdGludGVybGFjZV9maWx0ZXJfZGVwcz0iZ3BsIgogICAgICAgdGludGVybGFjZV9tZXJn ZV90ZXN0X2RlcHM9InRpbnRlcmxhY2VfZmlsdGVyIgogICAgIEBAIGRvYy9maWx0ZXJzLnRleGk6 IE92ZXJsYXkgUEdTIHN1YnRpdGxlcwogICAgICArCiAgICAgICtDb252ZXJ0cyB0ZXh0IHN1YnRp dGxlcyB0byB2aWRlbyBmcmFtZXMuCiAgICAgICsKICAgICAtK0ZvciBvdmVybGF5aW5nIHRleHQg c3VidGl0bGVzIG9udG8gdmlkZW8gZnJhbWVzIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSB0aGUg b3ZlcmxheV90ZXh0c3VicyBmaWx0ZXIuCiAgICAgKytGb3Igb3ZlcmxheWluZyB0ZXh0IHN1YnRp dGxlcyBvbnRvIHZpZGVvIGZyYW1lcyBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlIG92ZXJs YXl0ZXh0c3VicyBmaWx0ZXIuCiAgICAgICtUaGUgdGV4dHN1YjJ2aWRlbyBpcyB1c2VmdWwgZm9y IGZvciBjcmVhdGluZyB0cmFuc3BhcmVudCB0ZXh0LWZyYW1lcyB3aGVuIG92ZXJsYXkgaXMgZG9u ZSB2aWEgaHcgYWNjZWxlcmF0aW9uCiAgICAgICsKICAgICAgK0lucHV0czoKICAgICBAQCBsaWJh dmZpbHRlci9NYWtlZmlsZTogT0JKUy0kKENPTkZJR19TV0FQUkVDVF9GSUxURVIpICAgICAgICAg ICAgICAgKz0gdmZfc3dhcHJlYwogICAgICAgT0JKUy0kKENPTkZJR19USFVNQk5BSUxfRklMVEVS KSAgICAgICAgICAgICAgKz0gdmZfdGh1bWJuYWlsLm8KICAgICAgCiAgICAgICAjIyBsaWJhdmZp bHRlci9hbGxmaWx0ZXJzLmMgIyMKICAgICAtQEAgbGliYXZmaWx0ZXIvYWxsZmlsdGVycy5jOiBl eHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3NjaWxsb3Njb3BlOwogICAgIC0gZXh0ZXJuIGNv bnN0IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXk7CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIg ZmZfdmZfb3ZlcmxheV9vcGVuY2w7CiAgICAgLSBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZf b3ZlcmxheV9xc3Y7CiAgICAgLS1leHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3ZlcmxheWdy YXBoaWNzdWJzOwogICAgIC0tZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXlfdmFh cGk7CiAgICAgK0BAIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYzogZXh0ZXJuIGNvbnN0IEFWRmls dGVyIGZmX3ZmX292ZXJsYXlfdmFhcGk7CiAgICAgICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZf dmZfb3ZlcmxheV92dWxrYW47CiAgICAgICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3Zl cmxheV9jdWRhOwogICAgIC0rZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXlncmFw aGljc3ViczsKICAgICArIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92Zl9vdmVybGF5Z3JhcGhp Y3N1YnM7CiAgICAgICtleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3ZlcmxheXRleHRzdWJz OwogICAgIC0rZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX3ZmX292ZXJsYXlfdmFhcGk7CiAgICAg ICBleHRlcm4gY29uc3QgQVZGaWx0ZXIgZmZfdmZfb3dkZW5vaXNlOwogICAgICAgZXh0ZXJuIGNv bnN0IEFWRmlsdGVyIGZmX3ZmX3BhZDsKICAgICAgIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl92 Zl9wYWRfb3BlbmNsOwogICAgIEBAIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYzogZXh0ZXJuIGNv bnN0IEFWRmlsdGVyIGZmX2F2Zl9zaG93d2F2ZXM7CiAgICAgICtleHRlcm4gY29uc3QgQVZGaWx0 ZXIgZmZfc3ZmX3RleHRzdWIydmlkZW87CiAgICAgICAKICAgICAgIC8qIG11bHRpbWVkaWEgc291 cmNlcyAqLwogICAgIC0gZXh0ZXJuIGNvbnN0IEFWRmlsdGVyIGZmX2F2c3JjX2Ftb3ZpZTsKICAg ICArIGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hdnNyY19hdnN5bmN0ZXN0OwogICAgICAKICAg ICAgICMjIGxpYmF2ZmlsdGVyL3ZmX292ZXJsYXl0ZXh0c3Vicy5jIChuZXcpICMjCiAgICAgIEBA CiAgICAgQEAgbGliYXZmaWx0ZXIvdmZfb3ZlcmxheXRleHRzdWJzLmMgKG5ldykKICAgICAgKyAq IG92ZXJsYXkgdGV4dCBzdWJ0aXRsZXMgb24gdG9wIG9mIGEgdmlkZW8gZnJhbWUKICAgICAgKyAq LwogICAgICArCiAgICAgKysjaW5jbHVkZSAiY29uZmlnX2NvbXBvbmVudHMuaCIKICAgICArKwog ICAgICArI2luY2x1ZGUgPGFzcy9hc3MuaD4KICAgICAgKyNpbmNsdWRlICJsaWJhdnV0aWwvYXNz X2ludGVybmFsLmgiCiAgICAgICsjaW5jbHVkZSAibGliYXZ1dGlsL3RocmVhZC5oIgogMTQ6ICAy NWNkYTIxOTcwICEgMTU6ICA4ZmRiZGY3YzVmIGF2ZmlsdGVyL3RleHRtb2Q6IEFkZCB0ZXh0bW9k LCBjZW5zb3IgYW5kIHNob3dfc3BlYWtlciBmaWx0ZXJzCiAgICAgQEAgZG9jL2ZpbHRlcnMudGV4 aTogZmZtcGVnIC1pICJodHRwOi8vc3RyZWFtcy52aWRlb2xhbi5vcmcvc2FtcGxlcy9zdWIvU1NB L3N1YnRpdGwKICAgICAgK0BpdGVtCiAgICAgICtQcmVwZW5kIHNwZWFrZXIgbmFtZXMgd2l0aCBi bHVlIHRleHQsIHNtb290aCBlZGdlcyBhbmQgYmxlbmQvb3ZlcmxheSB0aGF0IG9udG8gdGhlIHZp ZGVvLgogICAgICArQGV4YW1wbGUKICAgICAtK2ZmbXBlZyAtaSBJTlBVVCAtZmlsdGVyX2NvbXBs ZXggInNob3dzcGVha2VyPWZvcm1hdD1jb2xvbjpzdHlsZT0nQHtcXGMmSEREMDAwMCZcXGJlMUB9 JyxbMDp2XW92ZXJsYXlfdGV4dHN1YnMiCiAgICAgKytmZm1wZWcgLWkgSU5QVVQgLWZpbHRlcl9j b21wbGV4ICJzaG93c3BlYWtlcj1mb3JtYXQ9Y29sb246c3R5bGU9J0B7XFxjJkhERDAwMDAmXFxi ZTFAfScsWzA6dl1vdmVybGF5dGV4dHN1YnMiCiAgICAgICtAZW5kIGV4YW1wbGUKICAgICAgK0Bl bmQgaXRlbWl6ZQogICAgICArCiAxNTogIDI5NmYxZjY5N2IgPSAxNjogIGQ0NGIyMmYxNWIgYXZm aWx0ZXIvc3RyaXBzdHlsZXM6IEFkZCBzdHJpcHN0eWxlcyBmaWx0ZXIKIDE2OiAgNTA5ZDZjNjdi YSA9IDE3OiAgMjhkNzVkYzk4MiBhdmZpbHRlci9zcGxpdGNjOiBBZGQgc3BsaXRjYyBmaWx0ZXIg Zm9yIGNsb3NlZCBjYXB0aW9uIGhhbmRsaW5nCiAxNzogIDFkN2FjYmEzOWYgISAxODogIDQyZDFk MWM4MTkgYXZmaWx0ZXIvZ3JhcGhpY3N1YjJ0ZXh0OiBBZGQgbmV3IGdyYXBoaWNzdWIydGV4dCBm aWx0ZXIgKE9DUikKICAgICBAQCBkb2MvZmlsdGVycy50ZXhpOiBmZm1wZWcgLWkgImh0dHBzOi8v c3RyZWFtcy52aWRlb2xhbi5vcmcvZmZtcGVnL21rdl9zdWJ0aXRsZXMubQogICAgICAgUmVuZGVy cyBncmFwaGljIHN1YnRpdGxlcyBhcyB2aWRlbyBmcmFtZXMuCiAgICAgIAogICAgICAgIyMgbGli YXZmaWx0ZXIvTWFrZWZpbGUgIyMKICAgICAtQEAgbGliYXZmaWx0ZXIvTWFrZWZpbGU6IE9CSlMt JChDT05GSUdfR0JMVVJfVlVMS0FOX0ZJTFRFUikgICAgICAgICAgICs9IHZmX2dibHVyX3Z1bGth bi5vIHZ1bGthbi5vIHZ1bGthCiAgICAgK0BAIGxpYmF2ZmlsdGVyL01ha2VmaWxlOiBPQkpTLSQo Q09ORklHX0dCTFVSX0ZJTFRFUikgICAgICAgICAgICAgICAgICArPSB2Zl9nYmx1ci5vCiAgICAg KyBPQkpTLSQoQ09ORklHX0dCTFVSX1ZVTEtBTl9GSUxURVIpICAgICAgICAgICArPSB2Zl9nYmx1 cl92dWxrYW4ubyB2dWxrYW4ubyB2dWxrYW5fZmlsdGVyLm8KICAgICAgIE9CSlMtJChDT05GSUdf R0VRX0ZJTFRFUikgICAgICAgICAgICAgICAgICAgICs9IHZmX2dlcS5vCiAgICAgICBPQkpTLSQo Q09ORklHX0dSQURGVU5fRklMVEVSKSAgICAgICAgICAgICAgICArPSB2Zl9ncmFkZnVuLm8KICAg ICAtIE9CSlMtJChDT05GSUdfR1JBUEhJQ1NVQjJWSURFT19GSUxURVIpICAgICAgICs9IHZmX292 ZXJsYXlncmFwaGljc3Vicy5vIGZyYW1lc3luYy5vCiAgICAgICtPQkpTLSQoQ09ORklHX0dSQVBI SUNTVUIyVEVYVF9GSUxURVIpICAgICAgICArPSBzZl9ncmFwaGljc3ViMnRleHQubwogICAgIC0r T0JKUy0kKENPTkZJR19HUkFQSElDU1VCMlZJREVPX0ZJTFRFUikgICAgICAgKz0gdmZfb3Zlcmxh eWdyYXBoaWNzdWJzLm8gZnJhbWVzeW5jLm8KICAgICArIE9CSlMtJChDT05GSUdfR1JBUEhJQ1NV QjJWSURFT19GSUxURVIpICAgICAgICs9IHZmX292ZXJsYXlncmFwaGljc3Vicy5vIGZyYW1lc3lu Yy5vCiAgICAgICBPQkpTLSQoQ09ORklHX0dSQVBITU9OSVRPUl9GSUxURVIpICAgICAgICAgICAr PSBmX2dyYXBobW9uaXRvci5vCiAgICAgICBPQkpTLSQoQ09ORklHX0dSQVlXT1JMRF9GSUxURVIp ICAgICAgICAgICAgICArPSB2Zl9ncmF5d29ybGQubwogICAgIC0gT0JKUy0kKENPTkZJR19HUkVZ RURHRV9GSUxURVIpICAgICAgICAgICAgICAgKz0gdmZfY29sb3Jjb25zdGFuY3kubwogICAgICAK ICAgICAgICMjIGxpYmF2ZmlsdGVyL2FsbGZpbHRlcnMuYyAjIwogICAgICBAQCBsaWJhdmZpbHRl ci9hbGxmaWx0ZXJzLmM6IGV4dGVybiBjb25zdCBBVkZpbHRlciBmZl9hdmZfc2hvd3dhdmVzOwog MTg6ICAyNDRkZDZkZTMzICEgMTk6ICA3MDk1ZThhYTI2IGF2ZmlsdGVyL3N1YnNjYWxlOiBBZGQg ZmlsdGVyIGZvciBzY2FsaW5nIGFuZC9vciByZS1hcnJhbmdpbmcgZ3JhcGhpY2FsIHN1YnRpdGxl cwogICAgIEBAIGRvYy9maWx0ZXJzLnRleGk6IFNldCB0aGUgcmVuZGVyaW5nIG1hcmdpbiBpbiBw aXhlbHMuCiAgICAgICtpbnNpZGUgdGhlIHZpZGVvIGFyZWEgd2l0aG91dCBzY2FsaW5nLCB0aGVu IG92ZXJsYXkKICAgICAgK3N1YnRpdGxlcyBvbnRvIHRoZSB2aWRlby4KICAgICAgK0BleGFtcGxl CiAgICAgLStmZm1wZWcgLXkgLWxvZ2xldmVsIHZlcmJvc2UgLXNzIDMyIC1pICJodHRwczovL3N0 cmVhbXMudmlkZW9sYW4ub3JnL3NhbXBsZXMvc3ViL2xhcmdlcmVzX3ZvYnN1Yi5ta3YiIC1maWx0 ZXJfY29tcGxleCAiWzA6MF1zY2FsZT0xOTIweDQwMCxzZXRzYXI9MVt2aWQxXTtbMDoxMF1zdWJz Y2FsZT13PTE5MjA6aD00MDA6c2NhbGVfbW9kZT1ub25lOm1hcmdpbl9oPTUwOmFycmFuZ2VfaD1t YXJnaW5fbm9fc2NhbGU6YXJyYW5nZV92PW1hcmdpbl9ub19zY2FsZTptYXJnaW5fdj01MDpudW1f Y29sb3JzPTI1NltzdWIxXTtbdmlkMV1bc3ViMV1vdmVybGF5X2dyYXBoaWNzdWJzIiAtYzp2IGxp YngyNjUgb3V0cHV0LnRzCiAgICAgKytmZm1wZWcgLXkgLWxvZ2xldmVsIHZlcmJvc2UgLXNzIDMy IC1pICJodHRwczovL3N0cmVhbXMudmlkZW9sYW4ub3JnL3NhbXBsZXMvc3ViL2xhcmdlcmVzX3Zv YnN1Yi5ta3YiIC1maWx0ZXJfY29tcGxleCAiWzA6MF1zY2FsZT0xOTIweDQwMCxzZXRzYXI9MVt2 aWQxXTtbMDoxMF1zdWJzY2FsZT13PTE5MjA6aD00MDA6c2NhbGVfbW9kZT1ub25lOm1hcmdpbl9o PTUwOmFycmFuZ2VfaD1tYXJnaW5fbm9fc2NhbGU6YXJyYW5nZV92PW1hcmdpbl9ub19zY2FsZTpt YXJnaW5fdj01MDpudW1fY29sb3JzPTI1NltzdWIxXTtbdmlkMV1bc3ViMV1vdmVybGF5Z3JhcGhp Y3N1YnMiIC1jOnYgbGlieDI2NSBvdXRwdXQudHMKICAgICAgK0BlbmQgZXhhbXBsZQogICAgICAr QGl0ZW0KICAgICAgK1NjYWxlIGJvdGgsIGEgdmlkZW8gYW5kIGl0cyBlbWJlZGRlZCBWT0Igc3Vi cywgdGhlbiBlbmNvZGUgdGhlbSBhcyBzZXBhcmF0ZSBzdHJlYW1zIGludG8gYW4gTUtWLgogMTk6 ICBhODc4MTJiZDNjICEgMjA6ICA2OTc5Mzk0NTFlIGF2ZmlsdGVyL3N1YmZlZWQ6IGFkZCBzdWJ0 aXRsZSBmZWVkIGZpbHRlcgogICAgIEBAIGxpYmF2ZmlsdGVyL3NmX3N1YmZlZWQuYyAobmV3KQog ICAgICArICAgICAgICBuZXh0X3B0cyA9IDA7CiAgICAgICsKICAgICAgKyAgICBpZiAocy0+bmV4 dF9wdHNfb2Zmc2V0KSB7CiAgICAgKysgICAgICAgIGF2X2xvZyhvdXRsaW5rLT5zcmMsIEFWX0xP R19WRVJCT1NFLCAiU3VidHJhY3RpbmcgbmV4dF9wdHNfb2Zmc2V0OiAlIlBSSWQ2NCIgXG4iLCBz LT5uZXh0X3B0c19vZmZzZXQpOwogICAgICArICAgICAgICBuZXh0X3B0cyAtPSBzLT5uZXh0X3B0 c19vZmZzZXQ7CiAgICAgICsgICAgICAgIHMtPm5leHRfcHRzX29mZnNldCA9IDA7CiAgICAgICsg ICAgfQogICAgIEBAIGxpYmF2ZmlsdGVyL3NmX3N1YmZlZWQuYyAobmV3KQogICAgICArICAgICAg ICBjb25zdCBBVkZyYW1lICpjdXJyZW50X2ZyYW1lID0gZmZfZnJhbWVxdWV1ZV9wZWVrKCZzLT5m aWZvLCAwKTsKICAgICAgKyAgICAgICAgY29uc3QgaW50NjRfdCBzdWJfZW5kX3RpbWUgICA9IGN1 cnJlbnRfZnJhbWUtPnN1YnRpdGxlX3RpbWluZy5zdGFydF9wdHMgKyBjdXJyZW50X2ZyYW1lLT5z dWJ0aXRsZV90aW1pbmcuZHVyYXRpb247CiAgICAgICsKICAgICAtKyAgICAgICAgaWYgKG5leHRf cHRzID4gc3ViX2VuZF90aW1lKSB7CiAgICAgLSsgICAgICAgICAgICBBVkZyYW1lICpyZW1vdmVf ZnJhbWUgPSBmZl9mcmFtZXF1ZXVlX3Rha2UoJnMtPmZpZm8pOwogICAgIC0rICAgICAgICAgICAg YXZfZnJhbWVfZnJlZSgmcmVtb3ZlX2ZyYW1lKTsKICAgICAtKwogICAgIC0rICAgICAgICAgICAg aWYgKGZmX2ZyYW1lcXVldWVfcXVldWVkX2ZyYW1lcygmcy0+ZmlmbykpIHsKICAgICArKyAgICAg ICAgaWYgKGZmX2ZyYW1lcXVldWVfcXVldWVkX2ZyYW1lcygmcy0+ZmlmbykgPiAxKSB7CiAgICAg KysgICAgICAgICAgICBjb25zdCBBVkZyYW1lICpuZXh0X2ZyYW1lID0gZmZfZnJhbWVxdWV1ZV9w ZWVrKCZzLT5maWZvLCAxKTsKICAgICArKyAgICAgICAgICAgIGlmIChuZXh0X3B0cyArIGludGVy dmFsID4gbmV4dF9mcmFtZS0+c3VidGl0bGVfdGltaW5nLnN0YXJ0X3B0cykgewogICAgICsrICAg ICAgICAgICAgICAgIEFWRnJhbWUgKnJlbW92ZV9mcmFtZSA9IGZmX2ZyYW1lcXVldWVfdGFrZSgm cy0+Zmlmbyk7CiAgICAgKysgICAgICAgICAgICAgICAgYXZfZnJhbWVfZnJlZSgmcmVtb3ZlX2Zy YW1lKTsKICAgICAgKyAgICAgICAgICAgICAgICBzLT5jdXJyZW50X2ZyYW1lX2lzbmV3ID0gMTsK ICAgICAgKyAgICAgICAgICAgICAgICBnb3RvIHJldHJ5OwogICAgICArICAgICAgICAgICAgfQog ICAgICArICAgICAgICB9CiAgICAgKysKICAgICArKyAgICAgICAgaWYgKG5leHRfcHRzID4gc3Vi X2VuZF90aW1lKSB7CiAgICAgKysgICAgICAgICAgICBBVkZyYW1lICpyZW1vdmVfZnJhbWUgPSBm Zl9mcmFtZXF1ZXVlX3Rha2UoJnMtPmZpZm8pOwogICAgICsrICAgICAgICAgICAgYXZfZnJhbWVf ZnJlZSgmcmVtb3ZlX2ZyYW1lKTsKICAgICArKyAgICAgICAgICAgIHMtPmN1cnJlbnRfZnJhbWVf aXNuZXcgPSAxOwogICAgICsrICAgICAgICAgICAgZ290byByZXRyeTsKICAgICArKyAgICAgICAg fQogICAgICArICAgIH0KICAgICAgKwogICAgICArICAgIGlmIChmZl9mcmFtZXF1ZXVlX3F1ZXVl ZF9mcmFtZXMoJnMtPmZpZm8pKSB7CiAgICAgQEAgbGliYXZmaWx0ZXIvc2Zfc3ViZmVlZC5jIChu ZXcpCiAgICAgICsgICAgICAgICAgICBzLT5jdXJyZW50X2ZyYW1lX2lzbmV3ID0gMDsKICAgICAg KyAgICAgICAgICAgIHMtPnJlY2VudF9zdWJ0aXRsZV9wdHMgPSBvdXQtPnN1YnRpdGxlX3RpbWlu Zy5zdGFydF9wdHM7CiAgICAgICsKICAgICArKyAgICAgICAgICAgIGF2X2xvZyhvdXRsaW5rLT5z cmMsIEFWX0xPR19ERUJVRywgIk91dHB1dDEgZnJhbWUgcHRzOiAlIlBSSWQ2NCIgIHN1YnRpdGxl X3B0czogJSJQUklkNjQiICByZXBlYXRfZnJhbWU6ICVkXG4iLAogICAgICsrICAgICAgICAgICAg ICAgIG91dC0+cHRzLCBvdXQtPnN1YnRpdGxlX3RpbWluZy5zdGFydF9wdHMsIG91dC0+cmVwZWF0 X3N1Yik7CiAgICAgKysKICAgICAgKyAgICAgICAgICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUo b3V0bGluaywgb3V0KTsKICAgICAgKyAgICAgICAgfQogICAgICArICAgIH0KICAgICBAQCBsaWJh dmZpbHRlci9zZl9zdWJmZWVkLmMgKG5ldykKICAgICAgKyAgICBvdXQtPnJlcGVhdF9zdWIgPSAx OwogICAgICArICAgIG91dC0+c3VidGl0bGVfdGltaW5nLnN0YXJ0X3B0cyA9IHMtPnJlY2VudF9z dWJ0aXRsZV9wdHM7CiAgICAgICsKICAgICArKyAgICBhdl9sb2cob3V0bGluay0+c3JjLCBBVl9M T0dfREVCVUcsICJPdXRwdXQyIGZyYW1lIHB0czogJSJQUklkNjQiICBzdWJ0aXRsZV9wdHM6ICUi UFJJZDY0IiAgcmVwZWF0X2ZyYW1lOiAlZFxuIiwKICAgICArKyAgICAgICAgb3V0LT5wdHMsIG91 dC0+c3VidGl0bGVfdGltaW5nLnN0YXJ0X3B0cywgb3V0LT5yZXBlYXRfc3ViKTsKICAgICArKwog ICAgICArICAgIHJldHVybiBmZl9maWx0ZXJfZnJhbWUob3V0bGluaywgb3V0KTsKICAgICAgK30K ICAgICAgKwogICAgIEBAIGxpYmF2ZmlsdGVyL3NmX3N1YmZlZWQuYyAobmV3KQogICAgICArICAg IFN1YkZlZWRDb250ZXh0ICpzICAgICAgICAgICA9IGlubGluay0+ZHN0LT5wcml2OwogICAgICAr ICAgIEFWRmlsdGVyTGluayAqb3V0bGluayAgICAgICA9IGlubGluay0+ZHN0LT5vdXRwdXRzWzBd OwogICAgICArICAgIGNvbnN0IGludDY0X3QgaW5kZXggICAgICAgICA9IChpbnQ2NF90KWZmX2Zy YW1lcXVldWVfcXVldWVkX2ZyYW1lcygmcy0+ZmlmbykgLSAxOwogICAgICsrICAgIHNpemVfdCBu Yl9xdWV1ZWRfZnJhbWVzOwogICAgICArICAgIGludCByZXQgPSAwOwogICAgICArCiAgICAgKysg ICAgYXZfbG9nKGN0eCwgQVZfTE9HX1ZFUkJPU0UsICJmcmFtZS5wdHM6ICUiUFJJZDY0IiAoQVZU QjogJSJQUklkNjQiKSAtICBzdWJ0aXRsZV90aW1pbmcuc3RhcnRfcHRzOiAlIlBSSWQ2NCIgc3Vi dGl0bGVfdGltaW5nLmR1cmF0aW9uOiAlIlBSSWQ2NCIgLSBmb3JtYXQ6ICVkXG4iLAogICAgICsr ICAgICAgICBmcmFtZS0+cHRzLCBhdl9yZXNjYWxlX3EoZnJhbWUtPnB0cywgaW5saW5rLT50aW1l X2Jhc2UsIEFWX1RJTUVfQkFTRV9RKSwgZnJhbWUtPnN1YnRpdGxlX3RpbWluZy5zdGFydF9wdHMs IGZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuZHVyYXRpb24sIGZyYW1lLT5mb3JtYXQpOwogICAgICsr CiAgICAgICsgICAgZnJhbWUtPnB0cyA9IGF2X3Jlc2NhbGVfcShmcmFtZS0+cHRzLCBpbmxpbmst PnRpbWVfYmFzZSwgQVZfVElNRV9CQVNFX1EpOwogICAgICArCiAgICAgICsgICAgaWYgKGluZGV4 IDwgMCkgewogICAgIEBAIGxpYmF2ZmlsdGVyL3NmX3N1YmZlZWQuYyAobmV3KQogICAgICArICAg IH0gZWxzZSBpZiAocy0+Zml4X2R1cmF0aW9ucyB8fCBzLT5maXhfb3ZlcmxhcCkgewogICAgICAr ICAgICAgICBBVkZyYW1lICpwcmV2aW91c19mcmFtZSA9IGZmX2ZyYW1lcXVldWVfcGVlaygmcy0+ ZmlmbywgaW5kZXgpOwogICAgICArICAgICAgICBjb25zdCBpbnQ2NF90IHB0c19kaWZmID0gZnJh bWUtPnN1YnRpdGxlX3RpbWluZy5zdGFydF9wdHMgLSBwcmV2aW91c19mcmFtZS0+c3VidGl0bGVf dGltaW5nLnN0YXJ0X3B0czsKICAgICArKyAgICAgICAgbmJfcXVldWVkX2ZyYW1lcyA9IGZmX2Zy YW1lcXVldWVfcXVldWVkX2ZyYW1lcygmcy0+Zmlmbyk7CiAgICAgICsKICAgICAtKyAgICAgICAg aWYgKHMtPmZpeF9kdXJhdGlvbnMgJiYgcHRzX2RpZmYgPiAwICYmIHByZXZpb3VzX2ZyYW1lLT5z dWJ0aXRsZV90aW1pbmcuZHVyYXRpb24gPiBtc190b19hdnRiKDI5MDAwKSkKICAgICAtKyAgICAg ICAgICAgICAgICAgICAgcHJldmlvdXNfZnJhbWUtPnN1YnRpdGxlX3RpbWluZy5kdXJhdGlvbiA9 IGZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuc3RhcnRfcHRzIC0gcHJldmlvdXNfZnJhbWUtPnN1YnRp dGxlX3RpbWluZy5zdGFydF9wdHM7CiAgICAgKysgICAgICAgIGlmIChzLT5maXhfZHVyYXRpb25z ICYmIHB0c19kaWZmID4gMCAmJiBwcmV2aW91c19mcmFtZS0+c3VidGl0bGVfdGltaW5nLmR1cmF0 aW9uID4gbXNfdG9fYXZ0YigyOTAwMCkpIHsKICAgICArKyAgICAgICAgICAgIGF2X2xvZyhjdHgs IEFWX0xPR19WRVJCT1NFLCAiUHJldmlvdXMgZnJhbWUgKGluZGV4ICMlIlBSSWQ2NCIpIGhhcyBh IGR1cmF0aW9uIG9mICUiUFJJZDY0IiBtcywgc2V0dGluZyB0byAgJSJQUklkNjQiIG1zXG4iLAog ICAgICsrICAgICAgICAgICAgICAgIGluZGV4LCBhdnRiX3RvX21zKHByZXZpb3VzX2ZyYW1lLT5z dWJ0aXRsZV90aW1pbmcuZHVyYXRpb24pLCBhdnRiX3RvX21zKGZyYW1lLT5zdWJ0aXRsZV90aW1p bmcuc3RhcnRfcHRzIC0gcHJldmlvdXNfZnJhbWUtPnN1YnRpdGxlX3RpbWluZy5zdGFydF9wdHMp KTsKICAgICArKyAgICAgICAgICAgIHByZXZpb3VzX2ZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuZHVy YXRpb24gPSBmcmFtZS0+c3VidGl0bGVfdGltaW5nLnN0YXJ0X3B0cyAtIHByZXZpb3VzX2ZyYW1l LT5zdWJ0aXRsZV90aW1pbmcuc3RhcnRfcHRzOwogICAgICsrICAgICAgICB9CiAgICAgKysKICAg ICArKyAgICAgICAgaWYgKHMtPmZpeF9vdmVybGFwICYmIHB0c19kaWZmID4gMCAmJiBwcmV2aW91 c19mcmFtZS0+c3VidGl0bGVfdGltaW5nLmR1cmF0aW9uID4gcHRzX2RpZmYpIHsKICAgICArKyAg ICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19WRVJCT1NFLCAiRGV0ZWN0ZWQgb3ZlcmxhcCBm cm9tIHByZXZpb3VzIGZyYW1lIChpbmRleCAjJSJQUklkNjQiKSB3aGljaCBoYWQgYSBkdXJhdGlv biBvZiAlIlBSSWQ2NCIgbXMsIHNldHRpbmcgdG8gdGhlIHB0c19kaWZmIHdoaWNoIGlzICUiUFJJ ZDY0IiBtc1xuIiwKICAgICArKyAgICAgICAgICAgICAgICBpbmRleCwgYXZ0Yl90b19tcyhwcmV2 aW91c19mcmFtZS0+c3VidGl0bGVfdGltaW5nLmR1cmF0aW9uKSwgYXZ0Yl90b19tcyhwdHNfZGlm ZikpOwogICAgICsrICAgICAgICAgICAgcHJldmlvdXNfZnJhbWUtPnN1YnRpdGxlX3RpbWluZy5k dXJhdGlvbiA9IHB0c19kaWZmOwogICAgICsrICAgICAgICB9CiAgICAgICsKICAgICAtKyAgICAg ICAgaWYgKHMtPmZpeF9vdmVybGFwICYmIHB0c19kaWZmID4gMCAmJiBwcmV2aW91c19mcmFtZS0+ c3VidGl0bGVfdGltaW5nLmR1cmF0aW9uID4gcHRzX2RpZmYpCiAgICAgLSsgICAgICAgICAgICAg ICAgICAgIHByZXZpb3VzX2ZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuZHVyYXRpb24gPSBwdHNfZGlm ZjsKICAgICArKyAgICAgICAgaWYgKHB0c19kaWZmIDw9IDApIHsKICAgICArKyAgICAgICAgICAg IGF2X2xvZyhjdHgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIHB0c19kaWZmIHRvIHRoZSBwcmV2aW91 cyBmcmFtZSAoaW5kZXggIyUiUFJJZDY0IikgIGlzIDw9IDA6ICUiUFJJZDY0IiBtcy4gVGhlIHBy ZXZpb3VzIGZyYW1lIGR1cmF0aW9uIGlzICUiUFJJZDY0IiBtcy5cbiIsCiAgICAgKysgICAgICAg ICAgICAgICAgaW5kZXgsIGF2dGJfdG9fbXMocHRzX2RpZmYpLCAgYXZ0Yl90b19tcyhwcmV2aW91 c19mcmFtZS0+c3VidGl0bGVfdGltaW5nLmR1cmF0aW9uKSk7CiAgICAgKysgICAgICAgIH0KICAg ICAgKyAgICB9CiAgICAgICsKICAgICAgKyAgICBmZl9mcmFtZXF1ZXVlX2FkZCgmcy0+Zmlmbywg ZnJhbWUpOwogICAgICArCiAgICAgLSsgICAgaWYgKGluZGV4ID4gMykKICAgICAtKyAgICAgICAg YXZfbG9nKGN0eCwgQVZfTE9HX1dBUk5JTkcsICJmcmFtZSBxdWV1ZSBjb3VudDogJWRcbiIsIChp bnQpaW5kZXgpOwogICAgICsrICAgIG5iX3F1ZXVlZF9mcmFtZXMgPSBmZl9mcmFtZXF1ZXVlX3F1 ZXVlZF9mcmFtZXMoJnMtPmZpZm8pOwogICAgICsrCiAgICAgKysgICAgaWYgKG5iX3F1ZXVlZF9m cmFtZXMgPiAzKQogICAgICsrICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfV0FSTklORywgImZy YW1lIHF1ZXVlIGNvdW50OiAlenVcbiIsIG5iX3F1ZXVlZF9mcmFtZXMpOwogICAgICArCiAgICAg LSsgICAgaWYgKHMtPm1vZGUgPT0gRk1fRk9SV0FSRCAmJiBmZl9mcmFtZXF1ZXVlX3F1ZXVlZF9m cmFtZXMoJnMtPmZpZm8pKSB7CiAgICAgKysgICAgaWYgKHMtPm1vZGUgPT0gRk1fRk9SV0FSRCAm JiBuYl9xdWV1ZWRfZnJhbWVzKSB7CiAgICAgICsKICAgICAgKyAgICAgICAgQVZGcmFtZSAqZmly c3RfZnJhbWUgPSBmZl9mcmFtZXF1ZXVlX3BlZWsoJnMtPmZpZm8sIDApOwogICAgICArCiAgICAg LSsgICAgICAgIGlmIChzLT5maXhfb3ZlcmxhcCAmJiBmZl9mcmFtZXF1ZXVlX3F1ZXVlZF9mcmFt ZXMoJnMtPmZpZm8pIDwgMikKICAgICAtKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICsrICAg ICAgICBpZiAocy0+Zml4X292ZXJsYXAgJiYgbmJfcXVldWVkX2ZyYW1lcyA8IDIpIHsKICAgICAr KyAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfVkVSQk9TRSwgIlJldHVybiBubyBmcmFtZSBz aW5jZSB3ZSBoYXZlIGxlc3MgdGhhbiAyXG4iKTsKICAgICArKyAgICAgICAgICByZXR1cm4gMDsK ICAgICArKyAgICAgICAgfQogICAgICArCiAgICAgLSsgICAgICAgIGlmIChzLT5maXhfZHVyYXRp b25zICYmIGZpcnN0X2ZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuZHVyYXRpb24gPiBtc190b19hdnRi KDI5MDAwKSkKICAgICArKyAgICAgICAgaWYgKHMtPmZpeF9kdXJhdGlvbnMgJiYgZmlyc3RfZnJh bWUtPnN1YnRpdGxlX3RpbWluZy5kdXJhdGlvbiA+IG1zX3RvX2F2dGIoMjkwMDApKSB7CiAgICAg KysgICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfVkVSQk9TRSwgIlJldHVybiBubyBmcmFt ZSBiZWNhdXNlIGZpcnN0IGZyYW1lIGR1cmF0aW9uIGlzICUiUFJJZDY0IiBtc1xuIiwgYXZ0Yl90 b19tcyhmaXJzdF9mcmFtZS0+c3VidGl0bGVfdGltaW5nLmR1cmF0aW9uKSk7CiAgICAgICsgICAg ICAgICAgICByZXR1cm4gMDsKICAgICArKyAgICAgICAgfQogICAgICArCiAgICAgICsgICAgICAg IGZpcnN0X2ZyYW1lID0gZmZfZnJhbWVxdWV1ZV90YWtlKCZzLT5maWZvKTsKICAgICAgKyAgICAg ICAgcmV0dXJuIGZmX2ZpbHRlcl9mcmFtZShvdXRsaW5rLCBmaXJzdF9mcmFtZSk7CiAyMDogIGFl YThhY2IwNTcgISAyMTogIDMyZTlhZjA4MDYgYXZjb2RlYy9zdWJ0aXRsZXM6IE1pZ3JhdGUgc3Vi dGl0bGUgZW5jb2RlcnMgdG8gZnJhbWUtYmFzZWQgQVBJCiAgICAgQEAgQ29tbWl0IG1lc3NhZ2UK ICAgICAgCiAgICAgICAjIyBsaWJhdmNvZGVjL2Fzc2VuYy5jICMjCiAgICAgIEBACiAgICAgLSAj aW5jbHVkZSA8c3RyaW5nLmg+CiAgICAgICAKICAgICAgICNpbmNsdWRlICJhdmNvZGVjLmgiCiAg ICAgKyAjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKICAgICAgKyNpbmNsdWRlICJlbmNvZGUu aCIKICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvYXNzX2ludGVybmFsLmgiCiAgICAgLSAjaW5j bHVkZSAiaW50ZXJuYWwuaCIKICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIK ICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvaW50ZXJuYWwuaCIKICAgICAgICNpbmNsdWRlICJs aWJhdnV0aWwvbWVtLmgiCiAgICAgQEAgbGliYXZjb2RlYy9hc3NlbmMuYwogICAgICAgfQogICAg ICAgCiAgICAgICAjaWYgQ09ORklHX1NTQV9FTkNPREVSCiAgICAgLSBjb25zdCBBVkNvZGVjIGZm X3NzYV9lbmNvZGVyID0gewogICAgIC0tICAgIC5uYW1lICAgICAgICAgPSAic3NhIiwKICAgICAt LSAgICAubG9uZ19uYW1lICAgID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkFTUyAoQWR2YW5jZWQg U3ViU3RhdGlvbiBBbHBoYSkgc3VidGl0bGUiKSwKICAgICAtLSAgICAudHlwZSAgICAgICAgID0g QVZNRURJQV9UWVBFX1NVQlRJVExFLAogICAgIC0tICAgIC5pZCAgICAgICAgICAgPSBBVl9DT0RF Q19JRF9BU1MsCiAgICAgKyBjb25zdCBGRkNvZGVjIGZmX3NzYV9lbmNvZGVyID0gewogICAgICst ICAgIC5wLm5hbWUgICAgICAgPSAic3NhIiwKICAgICArLSAgICAucC5sb25nX25hbWUgID0gTlVM TF9JRl9DT05GSUdfU01BTEwoIkFTUyAoQWR2YW5jZWQgU3ViU3RhdGlvbiBBbHBoYSkgc3VidGl0 bGUiKSwKICAgICArLSAgICAucC50eXBlICAgICAgID0gQVZNRURJQV9UWVBFX1NVQlRJVExFLAog ICAgICstICAgIC5wLmlkICAgICAgICAgPSBBVl9DT0RFQ19JRF9BU1MsCiAgICAgIC0gICAgLmlu aXQgICAgICAgICA9IGFzc19lbmNvZGVfaW5pdCwKICAgICAtLSAgICAuZW5jb2RlX3N1YiAgID0g YXNzX2VuY29kZV9mcmFtZSwKICAgICAtKyAgICAubmFtZSAgICAgICAgICAgPSAic3NhIiwKICAg ICAtKyAgICAubG9uZ19uYW1lICAgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTCgiQVNTIChBZHZh bmNlZCBTdWJTdGF0aW9uIEFscGhhKSBzdWJ0aXRsZSIpLAogICAgIC0rICAgIC50eXBlICAgICAg ICAgICA9IEFWTUVESUFfVFlQRV9TVUJUSVRMRSwKICAgICAtKyAgICAuaWQgICAgICAgICAgICAg PSBBVl9DT0RFQ19JRF9BU1MsCiAgICAgKy0gICAgRkZfQ09ERUNfRU5DT0RFX1NVQl9DQihhc3Nf ZW5jb2RlX2ZyYW1lKSwKICAgICArKyAgICAucC5uYW1lICAgICAgICAgICA9ICJzc2EiLAogICAg ICsrICAgIC5wLmxvbmdfbmFtZSAgICAgID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkFTUyAoQWR2 YW5jZWQgU3ViU3RhdGlvbiBBbHBoYSkgc3VidGl0bGUiKSwKICAgICArKyAgICAucC50eXBlICAg ICAgICAgICA9IEFWTUVESUFfVFlQRV9TVUJUSVRMRSwKICAgICArKyAgICAucC5pZCAgICAgICAg ICAgICA9IEFWX0NPREVDX0lEX0FTUywKICAgICAgKyAgICAucHJpdl9kYXRhX3NpemUgPSBzaXpl b2YoQXNzRW5jQ29udGV4dCksCiAgICAgICsgICAgLmluaXQgICAgICAgICAgID0gYXNzX2VuY29k ZV9pbml0LAogICAgICArICAgIC5jbG9zZSAgICAgICAgICA9IGFzc19lbmNvZGVfY2xvc2UsCiAg ICAgLSsgICAgLnJlY2VpdmVfcGFja2V0ID0gYXNzX3JlY2VpdmVfcGFja2V0LAogICAgICsrICAg IEZGX0NPREVDX1JFQ0VJVkVfUEFDS0VUX0NCKGFzc19yZWNlaXZlX3BhY2tldCksCiAgICAgICAg ICAgLmNhcHNfaW50ZXJuYWwgID0gRkZfQ09ERUNfQ0FQX0lOSVRfVEhSRUFEU0FGRSwKICAgICAg IH07CiAgICAgICAjZW5kaWYKICAgICAgIAogICAgICAgI2lmIENPTkZJR19BU1NfRU5DT0RFUgog ICAgIC0gY29uc3QgQVZDb2RlYyBmZl9hc3NfZW5jb2RlciA9IHsKICAgICAtLSAgICAubmFtZSAg ICAgICAgID0gImFzcyIsCiAgICAgLS0gICAgLmxvbmdfbmFtZSAgICA9IE5VTExfSUZfQ09ORklH X1NNQUxMKCJBU1MgKEFkdmFuY2VkIFN1YlN0YXRpb24gQWxwaGEpIHN1YnRpdGxlIiksCiAgICAg LS0gICAgLnR5cGUgICAgICAgICA9IEFWTUVESUFfVFlQRV9TVUJUSVRMRSwKICAgICAtLSAgICAu aWQgICAgICAgICAgID0gQVZfQ09ERUNfSURfQVNTLAogICAgICsgY29uc3QgRkZDb2RlYyBmZl9h c3NfZW5jb2RlciA9IHsKICAgICArLSAgICAucC5uYW1lICAgICAgID0gImFzcyIsCiAgICAgKy0g ICAgLnAubG9uZ19uYW1lICA9IE5VTExfSUZfQ09ORklHX1NNQUxMKCJBU1MgKEFkdmFuY2VkIFN1 YlN0YXRpb24gQWxwaGEpIHN1YnRpdGxlIiksCiAgICAgKy0gICAgLnAudHlwZSAgICAgICA9IEFW TUVESUFfVFlQRV9TVUJUSVRMRSwKICAgICArLSAgICAucC5pZCAgICAgICAgID0gQVZfQ09ERUNf SURfQVNTLAogICAgICAtICAgIC5pbml0ICAgICAgICAgPSBhc3NfZW5jb2RlX2luaXQsCiAgICAg LS0gICAgLmVuY29kZV9zdWIgICA9IGFzc19lbmNvZGVfZnJhbWUsCiAgICAgLSsgICAgLm5hbWUg ICAgICAgICAgID0gImFzcyIsCiAgICAgLSsgICAgLmxvbmdfbmFtZSAgICAgID0gTlVMTF9JRl9D T05GSUdfU01BTEwoIkFTUyAoQWR2YW5jZWQgU3ViU3RhdGlvbiBBbHBoYSkgc3VidGl0bGUiKSwK ICAgICAtKyAgICAudHlwZSAgICAgICAgICAgPSBBVk1FRElBX1RZUEVfU1VCVElUTEUsCiAgICAg Ky0gICAgRkZfQ09ERUNfRU5DT0RFX1NVQl9DQihhc3NfZW5jb2RlX2ZyYW1lKSwKICAgICArKyAg ICAucC5uYW1lICAgICAgICAgICA9ICJhc3MiLAogICAgICsrICAgIC5wLmxvbmdfbmFtZSAgICAg ID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIkFTUyAoQWR2YW5jZWQgU3ViU3RhdGlvbiBBbHBoYSkg c3VidGl0bGUiKSwKICAgICArKyAgICAucC50eXBlICAgICAgICAgICA9IEFWTUVESUFfVFlQRV9T VUJUSVRMRSwKICAgICAgKyAgICAucHJpdl9kYXRhX3NpemUgPSBzaXplb2YoQXNzRW5jQ29udGV4 dCksCiAgICAgLSsgICAgLmlkICAgICAgICAgICAgID0gQVZfQ09ERUNfSURfQVNTLAogICAgICsr ICAgIC5wLmlkICAgICAgICAgICAgID0gQVZfQ09ERUNfSURfQVNTLAogICAgICArICAgIC5pbml0 ICAgICAgICAgICA9IGFzc19lbmNvZGVfaW5pdCwKICAgICAgKyAgICAuY2xvc2UgICAgICAgICAg PSBhc3NfZW5jb2RlX2Nsb3NlLAogICAgIC0rICAgIC5yZWNlaXZlX3BhY2tldCA9IGFzc19yZWNl aXZlX3BhY2tldCwKICAgICArKyAgICBGRl9DT0RFQ19SRUNFSVZFX1BBQ0tFVF9DQihhc3NfcmVj ZWl2ZV9wYWNrZXQpLAogICAgICAgICAgIC5jYXBzX2ludGVybmFsICA9IEZGX0NPREVDX0NBUF9J TklUX1RIUkVBRFNBRkUsCiAgICAgICB9OwogICAgICAgI2VuZGlmCiAgICAgQEAgbGliYXZjb2Rl Yy9hdmNvZGVjLmg6IHZvaWQgYXZfcGFyc2VyX2Nsb3NlKEFWQ29kZWNQYXJzZXJDb250ZXh0ICpz KTsKICAgICAgICAqIEB9CiAgICAgICAgKi8KICAgICAgCiAgICAgKyAjIyBsaWJhdmNvZGVjL2Nv ZGVjX2ludGVybmFsLmggIyMKICAgICArQEAgbGliYXZjb2RlYy9jb2RlY19pbnRlcm5hbC5oOiBl bnVtIEZGQ29kZWNUeXBlIHsKICAgICArICAgICAvKiBUaGUgY29kZWMgaXMgYW4gZW5jb2RlciB1 c2luZyB0aGUgZW5jb2RlIGNhbGxiYWNrOwogICAgICsgICAgICAqIGF1ZGlvIGFuZCB2aWRlbyBj b2RlY3Mgb25seS4gKi8KICAgICArICAgICBGRl9DT0RFQ19DQl9UWVBFX0VOQ09ERSwKICAgICAr LSAgICAvKiBUaGUgY29kZWMgaXMgYW4gZW5jb2RlciB1c2luZyB0aGUgZW5jb2RlX3N1YiBjYWxs YmFjazsKICAgICArLSAgICAgKiBzdWJ0aXRsZSBjb2RlY3Mgb25seS4gKi8KICAgICArLSAgICBG Rl9DT0RFQ19DQl9UWVBFX0VOQ09ERV9TVUIsCiAgICAgKyAgICAgLyogVGhlIGNvZGVjIGlzIGFu IGVuY29kZXIgdXNpbmcgdGhlIHJlY2VpdmVfcGFja2V0IGNhbGxiYWNrOwogICAgICsgICAgICAq IGF1ZGlvIGFuZCB2aWRlbyBjb2RlY3Mgb25seS4gKi8KICAgICArICAgICBGRl9DT0RFQ19DQl9U WVBFX1JFQ0VJVkVfUEFDS0VULAogICAgICtAQCBsaWJhdmNvZGVjL2NvZGVjX2ludGVybmFsLmg6 IHR5cGVkZWYgc3RydWN0IEZGQ29kZWMgewogICAgICsgICAgICAgICAgKi8KICAgICArICAgICAg ICAgaW50ICgqZW5jb2RlKShzdHJ1Y3QgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBzdHJ1Y3QgQVZQ YWNrZXQgKmF2cGt0LAogICAgICsgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBB VkZyYW1lICpmcmFtZSwgaW50ICpnb3RfcGFja2V0X3B0cik7CiAgICAgKy0gICAgICAgIC8qKgog ICAgICstICAgICAgICAgKiBFbmNvZGUgc3VidGl0bGVzIHRvIGEgcmF3IGJ1ZmZlci4KICAgICAr LSAgICAgICAgICogY2IgaXMgaW4gdGhpcyBzdGF0ZSBpZiBjYl90eXBlIGlzIEZGX0NPREVDX0NC X1RZUEVfRU5DT0RFX1NVQi4KICAgICArLSAgICAgICAgICovCiAgICAgKy0gICAgICAgIGludCAo KmVuY29kZV9zdWIpKHN0cnVjdCBBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHVpbnQ4X3QgKmJ1ZiwK ICAgICArLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1Zl9zaXplLCBjb25zdCBzdHJ1 Y3QgQVZTdWJ0aXRsZSAqc3ViKTsKICAgICArICAgICAgICAgLyoqCiAgICAgKyAgICAgICAgICAq IEVuY29kZSBBUEkgd2l0aCBkZWNvdXBsZWQgZnJhbWUvcGFja2V0IGRhdGFmbG93LgogICAgICsg ICAgICAgICAgKiBjYiBpcyBpbiB0aGlzIHN0YXRlIGlmIGNiX3R5cGUgaXMgRkZfQ09ERUNfQ0Jf VFlQRV9SRUNFSVZFX1BBQ0tFVC4KICAgICArQEAgbGliYXZjb2RlYy9jb2RlY19pbnRlcm5hbC5o OiB0eXBlZGVmIHN0cnVjdCBGRkNvZGVjIHsKICAgICArICNkZWZpbmUgRkZfQ09ERUNfRU5DT0RF X0NCKGZ1bmMpICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgKyAgICAgLmNiX3R5cGUg ICAgICAgICAgID0gRkZfQ09ERUNfQ0JfVFlQRV9FTkNPREUsICAgICAgICAgXAogICAgICsgICAg IC5jYi5lbmNvZGUgICAgICAgICA9IChmdW5jKQogICAgICstI2RlZmluZSBGRl9DT0RFQ19FTkNP REVfU1VCX0NCKGZ1bmMpICAgICAgICAgICAgICAgICAgICAgIFwKICAgICArLSAgICAuY2JfdHlw ZSAgICAgICAgICAgPSBGRl9DT0RFQ19DQl9UWVBFX0VOQ09ERV9TVUIsICAgICBcCiAgICAgKy0g ICAgLmNiLmVuY29kZV9zdWIgICAgID0gKGZ1bmMpCiAgICAgKyAjZGVmaW5lIEZGX0NPREVDX1JF Q0VJVkVfUEFDS0VUX0NCKGZ1bmMpICAgICAgICAgICAgICAgICAgXAogICAgICsgICAgIC5jYl90 eXBlICAgICAgICAgICA9IEZGX0NPREVDX0NCX1RZUEVfUkVDRUlWRV9QQUNLRVQsIFwKICAgICAr ICAgICAuY2IucmVjZWl2ZV9wYWNrZXQgPSAoZnVuYykKICAgICArCiAgICAgICAjIyBsaWJhdmNv ZGVjL2R2YnN1YmVuYy5jICMjCiAgICAgIEBACiAgICAgLSAgKi8KICAgICAgICNpbmNsdWRlICJh dmNvZGVjLmgiCiAgICAgICAjaW5jbHVkZSAiYnl0ZXN0cmVhbS5oIgogICAgICsgI2luY2x1ZGUg ImNvZGVjX2ludGVybmFsLmgiCiAgICAgICsjaW5jbHVkZSAiZW5jb2RlLmgiCiAgICAgICAjaW5j bHVkZSAibGliYXZ1dGlsL2NvbG9yc3BhY2UuaCIKICAgICAgIAogICAgIEBAIGxpYmF2Y29kZWMv ZHZic3ViZW5jLmM6IHN0YXRpYyBpbnQgZHZic3ViX2VuY29kZShBVkNvZGVjQ29udGV4dCAqYXZj dHgsIHVpbnQ4X3QKICAgICAgKyAgICByZXR1cm4gMDsKICAgICAgIH0KICAgICAgIAogICAgIC0g Y29uc3QgQVZDb2RlYyBmZl9kdmJzdWJfZW5jb2RlciA9IHsKICAgICAtQEAgbGliYXZjb2RlYy9k dmJzdWJlbmMuYzogY29uc3QgQVZDb2RlYyBmZl9kdmJzdWJfZW5jb2RlciA9IHsKICAgICAtICAg ICAudHlwZSAgICAgICAgICAgPSBBVk1FRElBX1RZUEVfU1VCVElUTEUsCiAgICAgLSAgICAgLmlk ICAgICAgICAgICAgID0gQVZfQ09ERUNfSURfRFZCX1NVQlRJVExFLAogICAgICsgY29uc3QgRkZD b2RlYyBmZl9kdmJzdWJfZW5jb2RlciA9IHsKICAgICArQEAgbGliYXZjb2RlYy9kdmJzdWJlbmMu YzogY29uc3QgRkZDb2RlYyBmZl9kdmJzdWJfZW5jb2RlciA9IHsKICAgICArICAgICAucC50eXBl ICAgICAgICAgPSBBVk1FRElBX1RZUEVfU1VCVElUTEUsCiAgICAgKyAgICAgLnAuaWQgICAgICAg ICAgID0gQVZfQ09ERUNfSURfRFZCX1NVQlRJVExFLAogICAgICAgICAgIC5wcml2X2RhdGFfc2l6 ZSA9IHNpemVvZihEVkJTdWJ0aXRsZUNvbnRleHQpLAogICAgIC0tICAgIC5lbmNvZGVfc3ViICAg ICA9IGR2YnN1Yl9lbmNvZGUsCiAgICAgLSsgICAgLmVuY29kZTIgICAgICAgID0gZHZic3ViX2Vu Y29kZSwKICAgICArLSAgICBGRl9DT0RFQ19FTkNPREVfU1VCX0NCKGR2YnN1Yl9lbmNvZGUpLAog ICAgICsrICAgIEZGX0NPREVDX0VOQ09ERV9DQihkdmJzdWJfZW5jb2RlKSwKICAgICAgIH07CiAg ICAgIAogICAgICAgIyMgbGliYXZjb2RlYy9kdmRzdWJlbmMuYyAjIwogICAgICBAQAogICAgIC0g ICovCiAgICAgICAjaW5jbHVkZSAiYXZjb2RlYy5oIgogICAgICAgI2luY2x1ZGUgImJ5dGVzdHJl YW0uaCIKICAgICArICNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgogICAgICArI2luY2x1ZGUg ImVuY29kZS5oIgogICAgICAgI2luY2x1ZGUgImludGVybmFsLmgiCiAgICAgICAjaW5jbHVkZSAi bGliYXZ1dGlsL2F2YXNzZXJ0LmgiCiAgICAgQEAgbGliYXZjb2RlYy9kdmRzdWJlbmMuYzogc3Rh dGljIGludCBkdmRzdWJfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCiAgICAgICAgICAgcmV0 dXJuIHJldDsKICAgICAgIH0KICAgICAgIAogICAgIC1AQCBsaWJhdmNvZGVjL2R2ZHN1YmVuYy5j OiBjb25zdCBBVkNvZGVjIGZmX2R2ZHN1Yl9lbmNvZGVyID0gewogICAgIC0gICAgIC50eXBlICAg ICAgICAgICA9IEFWTUVESUFfVFlQRV9TVUJUSVRMRSwKICAgICAtICAgICAuaWQgICAgICAgICAg ICAgPSBBVl9DT0RFQ19JRF9EVkRfU1VCVElUTEUsCiAgICAgK0BAIGxpYmF2Y29kZWMvZHZkc3Vi ZW5jLmM6IGNvbnN0IEZGQ29kZWMgZmZfZHZkc3ViX2VuY29kZXIgPSB7CiAgICAgKyAgICAgLnAu dHlwZSAgICAgICAgID0gQVZNRURJQV9UWVBFX1NVQlRJVExFLAogICAgICsgICAgIC5wLmlkICAg ICAgICAgICA9IEFWX0NPREVDX0lEX0RWRF9TVUJUSVRMRSwKICAgICAgICAgICAuaW5pdCAgICAg ICAgICAgPSBkdmRzdWJfaW5pdCwKICAgICAtLSAgICAuZW5jb2RlX3N1YiAgICAgPSBkdmRzdWJf ZW5jb2RlLAogICAgIC0rICAgIC5lbmNvZGUyICAgICAgICA9IGR2ZHN1Yl9lbmNvZGUsCiAgICAg LSAgICAgLnByaXZfY2xhc3MgICAgID0gJmR2ZHN1YmVuY19jbGFzcywKICAgICArLSAgICBGRl9D T0RFQ19FTkNPREVfU1VCX0NCKGR2ZHN1Yl9lbmNvZGUpLAogICAgICsrICAgIEZGX0NPREVDX0VO Q09ERV9DQihkdmRzdWJfZW5jb2RlKSwKICAgICArICAgICAucC5wcml2X2NsYXNzICAgPSAmZHZk c3ViZW5jX2NsYXNzLAogICAgICAgICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihEVkRTdWJ0 aXRsZUNvbnRleHQpLAogICAgICAgICAgIC5jYXBzX2ludGVybmFsICA9IEZGX0NPREVDX0NBUF9J TklUX1RIUkVBRFNBRkUsCiAgICAgIAogICAgIEBAIGxpYmF2Y29kZWMvZW5jb2RlLmM6IGZhaWw6 CiAgICAgICtpbnQgYXZjb2RlY19lbmNvZGVfc3VidGl0bGUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LCB1aW50OF90ICpidWYsIGludCBidWZfc2l6ZSwgY29uc3QgQVZTdWJ0aXRsZSAqc3ViKQogICAg ICAgewogICAgICAtICAgIGludCByZXQ7CiAgICAgLSsgICAgaW50IHJldCA9IDAsIGdvdF9wYWNr ZXQgPSAwOwogICAgICsrICAgIGludCByZXQgPSAwOwogICAgICArICAgIEFWRnJhbWUgKmZyYW1l ID0gTlVMTDsKICAgICAgKyAgICBBVlBhY2tldCogYXZwa3QgPSBOVUxMOwogICAgICArCiAgICAg QEAgbGliYXZjb2RlYy9lbmNvZGUuYzogZmFpbDoKICAgICAgICAgICAgICAgcmV0dXJuIC0xOwog ICAgICAgICAgIH0KICAgICAgIAogICAgIC0tICAgIHJldCA9IGF2Y3R4LT5jb2RlYy0+ZW5jb2Rl X3N1YihhdmN0eCwgYnVmLCBidWZfc2l6ZSwgc3ViKTsKICAgICArLSAgICByZXQgPSBmZmNvZGVj KGF2Y3R4LT5jb2RlYyktPmNiLmVuY29kZV9zdWIoYXZjdHgsIGJ1ZiwgYnVmX3NpemUsIHN1Yik7 CiAgICAgICsgICAgbWVtc2V0KGJ1ZiwgMCwgYnVmX3NpemUpOwogICAgICArICAgIC8vIENyZWF0 ZSBhIHRlbXBvcmFyeSBmcmFtZSBmb3IgY2FsbGluZyB0aGUgcmVndWxhciBhcGk6CiAgICAgICsg ICAgZnJhbWUgPSBhdl9mcmFtZV9hbGxvYygpOwogICAgIEBAIGxpYmF2Y29kZWMvZW5jb2RlLmM6 IGZhaWw6CiAgICAgIAogICAgICAgIyMgbGliYXZjb2RlYy9tb3Z0ZXh0ZW5jLmMgIyMKICAgICAg QEAKICAgICAtICNpbmNsdWRlICJsaWJhdnV0aWwvYXNzX3NwbGl0X2ludGVybmFsLmgiCiAgICAg ICAjaW5jbHVkZSAibGliYXZ1dGlsL2Fzc19pbnRlcm5hbC5oIgogICAgICAgI2luY2x1ZGUgImJ5 dGVzdHJlYW0uaCIKICAgICArICNpbmNsdWRlICJjb2RlY19pbnRlcm5hbC5oIgogICAgICArI2lu Y2x1ZGUgImVuY29kZS5oIgogICAgIC0gI2luY2x1ZGUgImludGVybmFsLmgiCiAgICAgICAKICAg ICAgICNkZWZpbmUgU1RZTEVfRkxBR19CT0xEICAgICAgICAgKDE8PDApCiAgICAgKyAjZGVmaW5l IFNUWUxFX0ZMQUdfSVRBTElDICAgICAgICgxPDwxKQogICAgICBAQCBsaWJhdmNvZGVjL21vdnRl eHRlbmMuYzogdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgICAgIEFWQ29kZWNDb250ZXh0ICphdmN0 eDsKICAgICAgIAogICAgIEBAIGxpYmF2Y29kZWMvbW92dGV4dGVuYy5jOiBzdGF0aWMgY29uc3Qg QVNTQ29kZXNDYWxsYmFja3MgbW92X3RleHRfY2FsbGJhY2tzID0gewogICAgICAgfQogICAgICAg CiAgICAgICAjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihNb3ZUZXh0Q29udGV4dCwgeCkKICAg ICAtQEAgbGliYXZjb2RlYy9tb3Z0ZXh0ZW5jLmM6IGNvbnN0IEFWQ29kZWMgZmZfbW92dGV4dF9l bmNvZGVyID0gewogICAgICtAQCBsaWJhdmNvZGVjL21vdnRleHRlbmMuYzogY29uc3QgRkZDb2Rl YyBmZl9tb3Z0ZXh0X2VuY29kZXIgPSB7CiAgICAgICAgICAgLnByaXZfZGF0YV9zaXplID0gc2l6 ZW9mKE1vdlRleHRDb250ZXh0KSwKICAgICAtICAgICAucHJpdl9jbGFzcyAgICAgPSAmbW92X3Rl eHRfZW5jb2Rlcl9jbGFzcywKICAgICArICAgICAucC5wcml2X2NsYXNzICAgPSAmbW92X3RleHRf ZW5jb2Rlcl9jbGFzcywKICAgICAgICAgICAuaW5pdCAgICAgICAgICAgPSBtb3ZfdGV4dF9lbmNv ZGVfaW5pdCwKICAgICAtLSAgICAuZW5jb2RlX3N1YiAgICAgPSBtb3ZfdGV4dF9lbmNvZGVfZnJh bWUsCiAgICAgLSsgICAgLmVuY29kZTIgICAgICAgID0gbW92X3RleHRfZW5jb2RlX2ZyYW1lLAog ICAgICstICAgIEZGX0NPREVDX0VOQ09ERV9TVUJfQ0IobW92X3RleHRfZW5jb2RlX2ZyYW1lKSwK ICAgICArKyAgICBGRl9DT0RFQ19FTkNPREVfQ0IobW92X3RleHRfZW5jb2RlX2ZyYW1lKSwKICAg ICAgICAgICAuY2xvc2UgICAgICAgICAgPSBtb3ZfdGV4dF9lbmNvZGVfY2xvc2UsCiAgICAgICAg ICAgLmNhcHNfaW50ZXJuYWwgID0gRkZfQ09ERUNfQ0FQX0lOSVRfVEhSRUFEU0FGRSB8IEZGX0NP REVDX0NBUF9JTklUX0NMRUFOVVAsCiAgICAgICB9OwogICAgIEBAIGxpYmF2Y29kZWMvc3J0ZW5j LmMKICAgICAgKyNpbmNsdWRlICJlbmNvZGUuaCIKICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwv YXZzdHJpbmcuaCIKICAgICAgICNpbmNsdWRlICJsaWJhdnV0aWwvYnByaW50LmgiCiAgICAgLSAj aW5jbHVkZSAibGliYXZ1dGlsL2Fzc19zcGxpdF9pbnRlcm5hbC5oIgogICAgICsgI2luY2x1ZGUg ImNvZGVjX2ludGVybmFsLmgiCiAgICAgIEBACiAgICAgICB0eXBlZGVmIHN0cnVjdCB7CiAgICAg ICAgICAgQVZDb2RlY0NvbnRleHQgKmF2Y3R4OwogICAgIEBAIGxpYmF2Y29kZWMvc3J0ZW5jLmM6 IHN0YXRpYyBjb25zdCBBU1NDb2Rlc0NhbGxiYWNrcyB0ZXh0X2NhbGxiYWNrcyA9IHsKICAgICAg IH0KICAgICAgIAogICAgICAgc3RhdGljIGludCBzcnRfZW5jb2RlX2Nsb3NlKEFWQ29kZWNDb250 ZXh0ICphdmN0eCkKICAgICAtQEAgbGliYXZjb2RlYy9zcnRlbmMuYzogY29uc3QgQVZDb2RlYyBm Zl9zcnRfZW5jb2RlciA9IHsKICAgICAtICAgICAuaWQgICAgICAgICAgICAgPSBBVl9DT0RFQ19J RF9TVUJSSVAsCiAgICAgK0BAIGxpYmF2Y29kZWMvc3J0ZW5jLmM6IGNvbnN0IEZGQ29kZWMgZmZf c3J0X2VuY29kZXIgPSB7CiAgICAgKyAgICAgLnAuaWQgICAgICAgICAgID0gQVZfQ09ERUNfSURf U1VCUklQLAogICAgICAgICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihTUlRDb250ZXh0KSwK ICAgICAgICAgICAuaW5pdCAgICAgICAgICAgPSBzcnRfZW5jb2RlX2luaXQsCiAgICAgLS0gICAg LmVuY29kZV9zdWIgICAgID0gc3J0X2VuY29kZV9mcmFtZSwKICAgICAtKyAgICAuZW5jb2RlMiAg ICAgICAgPSBzcnRfZW5jb2RlX2ZyYW1lLAogICAgICstICAgIEZGX0NPREVDX0VOQ09ERV9TVUJf Q0Ioc3J0X2VuY29kZV9mcmFtZSksCiAgICAgKysgICAgRkZfQ09ERUNfRU5DT0RFX0NCKHNydF9l bmNvZGVfZnJhbWUpLAogICAgICAgICAgIC5jbG9zZSAgICAgICAgICA9IHNydF9lbmNvZGVfY2xv c2UsCiAgICAgICAgICAgLmNhcHNfaW50ZXJuYWwgID0gRkZfQ09ERUNfQ0FQX0lOSVRfVEhSRUFE U0FGRSwKICAgICAgIH07CiAgICAgLUBAIGxpYmF2Y29kZWMvc3J0ZW5jLmM6IGNvbnN0IEFWQ29k ZWMgZmZfc3VicmlwX2VuY29kZXIgPSB7CiAgICAgLSAgICAgLmlkICAgICAgICAgICAgID0gQVZf Q09ERUNfSURfU1VCUklQLAogICAgICtAQCBsaWJhdmNvZGVjL3NydGVuYy5jOiBjb25zdCBGRkNv ZGVjIGZmX3N1YnJpcF9lbmNvZGVyID0gewogICAgICsgICAgIC5wLmlkICAgICAgICAgICA9IEFW X0NPREVDX0lEX1NVQlJJUCwKICAgICAgICAgICAucHJpdl9kYXRhX3NpemUgPSBzaXplb2YoU1JU Q29udGV4dCksCiAgICAgICAgICAgLmluaXQgICAgICAgICAgID0gc3J0X2VuY29kZV9pbml0LAog ICAgIC0tICAgIC5lbmNvZGVfc3ViICAgICA9IHNydF9lbmNvZGVfZnJhbWUsCiAgICAgLSsgICAg LmVuY29kZTIgICAgICAgID0gc3J0X2VuY29kZV9mcmFtZSwKICAgICArLSAgICBGRl9DT0RFQ19F TkNPREVfU1VCX0NCKHNydF9lbmNvZGVfZnJhbWUpLAogICAgICsrICAgIEZGX0NPREVDX0VOQ09E RV9DQihzcnRfZW5jb2RlX2ZyYW1lKSwKICAgICAgICAgICAuY2xvc2UgICAgICAgICAgPSBzcnRf ZW5jb2RlX2Nsb3NlLAogICAgICAgICAgIC5jYXBzX2ludGVybmFsICA9IEZGX0NPREVDX0NBUF9J TklUX1RIUkVBRFNBRkUsCiAgICAgICB9OwogICAgIC1AQCBsaWJhdmNvZGVjL3NydGVuYy5jOiBj b25zdCBBVkNvZGVjIGZmX3RleHRfZW5jb2RlciA9IHsKICAgICAtICAgICAuaWQgICAgICAgICAg ICAgPSBBVl9DT0RFQ19JRF9URVhULAogICAgICtAQCBsaWJhdmNvZGVjL3NydGVuYy5jOiBjb25z dCBGRkNvZGVjIGZmX3RleHRfZW5jb2RlciA9IHsKICAgICArICAgICAucC5pZCAgICAgICAgICAg PSBBVl9DT0RFQ19JRF9URVhULAogICAgICAgICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihT UlRDb250ZXh0KSwKICAgICAgICAgICAuaW5pdCAgICAgICAgICAgPSBzcnRfZW5jb2RlX2luaXQs CiAgICAgLS0gICAgLmVuY29kZV9zdWIgICAgID0gdGV4dF9lbmNvZGVfZnJhbWUsCiAgICAgLSsg ICAgLmVuY29kZTIgICAgICAgID0gdGV4dF9lbmNvZGVfZnJhbWUsCiAgICAgKy0gICAgRkZfQ09E RUNfRU5DT0RFX1NVQl9DQih0ZXh0X2VuY29kZV9mcmFtZSksCiAgICAgKysgICAgRkZfQ09ERUNf RU5DT0RFX0NCKHRleHRfZW5jb2RlX2ZyYW1lKSwKICAgICAgICAgICAuY2xvc2UgICAgICAgICAg PSBzcnRfZW5jb2RlX2Nsb3NlLAogICAgICAgICAgIC5jYXBzX2ludGVybmFsICA9IEZGX0NPREVD X0NBUF9JTklUX1RIUkVBRFNBRkUsCiAgICAgICB9OwogICAgICAKICAgICAgICMjIGxpYmF2Y29k ZWMvdGVzdHMvYXZjb2RlYy5jICMjCiAgICAgIEBAIGxpYmF2Y29kZWMvdGVzdHMvYXZjb2RlYy5j OiBpbnQgbWFpbih2b2lkKXsKICAgICAtICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICsgICAg ICAgICAgICAgaXNfZGVjb2RlciA9IDE7CiAgICAgKyAgICAgICAgICAgICBicmVhazsKICAgICAr ICAgICAgICAgY2FzZSBGRl9DT0RFQ19DQl9UWVBFX0VOQ09ERToKICAgICArLSAgICAgICAgY2Fz ZSBGRl9DT0RFQ19DQl9UWVBFX0VOQ09ERV9TVUI6CiAgICAgKyAgICAgICAgIGNhc2UgRkZfQ09E RUNfQ0JfVFlQRV9SRUNFSVZFX1BBQ0tFVDoKICAgICArICAgICAgICAgICAgIGlzX2VuY29kZXIg PSAxOwogICAgICsgICAgICAgICAgICAgYnJlYWs7CiAgICAgK0BAIGxpYmF2Y29kZWMvdGVzdHMv YXZjb2RlYy5jOiBpbnQgbWFpbih2b2lkKXsKICAgICArICNkZWZpbmUgQ0hFQ0soVFlQRSwgdHlw ZSkgKGNvZGVjMi0+Y2JfdHlwZSA9PSBGRl9DT0RFQ19DQl9UWVBFXyAjIyBUWVBFICYmICFjb2Rl YzItPmNiLnR5cGUpCiAgICAgKyAgICAgICAgIGlmIChDSEVDSyhERUNPREUsIGRlY29kZSkgfHwg Q0hFQ0soREVDT0RFX1NVQiwgZGVjb2RlX3N1YikgfHwKICAgICArICAgICAgICAgICAgIENIRUNL KFJFQ0VJVkVfUEFDS0VULCByZWNlaXZlX3BhY2tldCkgfHwKICAgICArLSAgICAgICAgICAgIENI RUNLKEVOQ09ERSwgZW5jb2RlKSB8fCBDSEVDSyhFTkNPREVfU1VCLCBlbmNvZGVfc3ViKSB8fAog ICAgICsrICAgICAgICAgICAgQ0hFQ0soRU5DT0RFLCBlbmNvZGUpIHx8CiAgICAgKyAgICAgICAg ICAgICBDSEVDSyhSRUNFSVZFX0ZSQU1FLCByZWNlaXZlX2ZyYW1lKSkgewogICAgICsgICAgICAg ICAgICAgRVJSX0VYVCgiQ29kZWMgJXMgZG9lcyBub3QgaW1wbGVtZW50IGl0cyAlcyBjYWxsYmFj ay5cbiIsCiAgICAgKyAgICAgICAgICAgICAgICAgICAgIGlzX2RlY29kZXIgPyAiZGVjb2Rpbmci IDogImVuY29kaW5nIik7CiAgICAgICAgICAgICAgIH0KICAgICArICN1bmRlZiBDSEVDSwogICAg ICAgICAgICAgICBpZiAoaXNfZW5jb2RlcikgewogICAgIC0tICAgICAgICAgICAgaWYgKGNvZGVj LT50eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRMRSBeICEhY29kZWMtPmVuY29kZV9zdWIpCiAg ICAgKy0gICAgICAgICAgICBpZiAoKGNvZGVjLT50eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRM RSkgIT0gKGNvZGVjMi0+Y2JfdHlwZSA9PSBGRl9DT0RFQ19DQl9UWVBFX0VOQ09ERV9TVUIpKQog ICAgICAtICAgICAgICAgICAgICAgIEVSUigiRW5jb2RlciAlcyBpcyBib3RoIHN1YnRpdGxlIGVu Y29kZXIgYW5kIG5vdCBzdWJ0aXRsZSBlbmNvZGVyLiIpOwogICAgIC0gICAgICAgICAgICAgaWYg KCEhY29kZWMtPmVuY29kZV9zdWIgKyAhIWNvZGVjLT5lbmNvZGUyICsgISFjb2RlYy0+cmVjZWl2 ZV9wYWNrZXQgIT0gMSkKICAgICAtICAgICAgICAgICAgICAgICBFUlIoIkVuY29kZXIgJXMgZG9l cyBub3QgaW1wbGVtZW50IGV4YWN0bHkgb25lIGVuY29kZSBBUEkuXG4iKTsKICAgICAtICAgICAg ICAgICAgIGlmIChjb2RlYy0+dXBkYXRlX3RocmVhZF9jb250ZXh0IHx8IGNvZGVjLT51cGRhdGVf dGhyZWFkX2NvbnRleHRfZm9yX3VzZXIgfHwgY29kZWMtPmJzZnMpCiAgICAgKyAgICAgICAgICAg ICBpZiAoY29kZWMyLT51cGRhdGVfdGhyZWFkX2NvbnRleHQgfHwgY29kZWMyLT51cGRhdGVfdGhy ZWFkX2NvbnRleHRfZm9yX3VzZXIgfHwgY29kZWMyLT5ic2ZzKQogICAgICsgICAgICAgICAgICAg ICAgIEVSUigiRW5jb2RlciAlcyBoYXMgZGVjb2Rlci1vbmx5IHRocmVhZCBmdW5jdGlvbnMgb3Ig YnNmLlxuIik7CiAgICAgKyAgICAgICAgICAgICBpZiAoY29kZWMtPnR5cGUgPT0gQVZNRURJQV9U WVBFX0FVRElPKSB7CiAgICAgIAogICAgICAgIyMgbGliYXZjb2RlYy90dG1sZW5jLmMgIyMKICAg ICAgQEAKICAgICBAQCBsaWJhdmNvZGVjL3R0bWxlbmMuYzogc3RhdGljIGF2X2NvbGQgaW50IHR0 bWxfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgICAgICAgIH0KICAgICAg IAogICAgICAgICAgIHJldHVybiAwOwogICAgIC1AQCBsaWJhdmNvZGVjL3R0bWxlbmMuYzogY29u c3QgQVZDb2RlYyBmZl90dG1sX2VuY29kZXIgPSB7CiAgICAgLSAgICAgLmlkICAgICAgICAgICAg ID0gQVZfQ09ERUNfSURfVFRNTCwKICAgICArQEAgbGliYXZjb2RlYy90dG1sZW5jLmM6IGNvbnN0 IEZGQ29kZWMgZmZfdHRtbF9lbmNvZGVyID0gewogICAgICsgICAgIC5wLmlkICAgICAgICAgICA9 IEFWX0NPREVDX0lEX1RUTUwsCiAgICAgICAgICAgLnByaXZfZGF0YV9zaXplID0gc2l6ZW9mKFRU TUxDb250ZXh0KSwKICAgICAgICAgICAuaW5pdCAgICAgICAgICAgPSB0dG1sX2VuY29kZV9pbml0 LAogICAgIC0tICAgIC5lbmNvZGVfc3ViICAgICA9IHR0bWxfZW5jb2RlX2ZyYW1lLAogICAgIC0r ICAgIC5lbmNvZGUyICAgICAgICA9IHR0bWxfZW5jb2RlX2ZyYW1lLAogICAgICstICAgIEZGX0NP REVDX0VOQ09ERV9TVUJfQ0IodHRtbF9lbmNvZGVfZnJhbWUpLAogICAgICsrICAgIEZGX0NPREVD X0VOQ09ERV9DQih0dG1sX2VuY29kZV9mcmFtZSksCiAgICAgICAgICAgLmNsb3NlICAgICAgICAg ID0gdHRtbF9lbmNvZGVfY2xvc2UsCiAgICAgICAgICAgLmNhcHNfaW50ZXJuYWwgID0gRkZfQ09E RUNfQ0FQX0lOSVRfVEhSRUFEU0FGRSB8IEZGX0NPREVDX0NBUF9JTklUX0NMRUFOVVAsCiAgICAg ICB9OwogICAgICAKICAgICArICMjIGxpYmF2Y29kZWMvdXRpbHMuYyAjIwogICAgICtAQCBsaWJh dmNvZGVjL3V0aWxzLmM6IGludCBhdl9jb2RlY19pc19lbmNvZGVyKGNvbnN0IEFWQ29kZWMgKmF2 Y29kZWMpCiAgICAgKyB7CiAgICAgKyAgICAgY29uc3QgRkZDb2RlYyAqY29uc3QgY29kZWMgPSBm ZmNvZGVjKGF2Y29kZWMpOwogICAgICsgICAgIHJldHVybiBjb2RlYyAmJiAoY29kZWMtPmNiX3R5 cGUgPT0gRkZfQ09ERUNfQ0JfVFlQRV9FTkNPREUgICAgIHx8CiAgICAgKy0gICAgICAgICAgICAg ICAgICAgICBjb2RlYy0+Y2JfdHlwZSA9PSBGRl9DT0RFQ19DQl9UWVBFX0VOQ09ERV9TVUIgfHwK ICAgICArICAgICAgICAgICAgICAgICAgICAgIGNvZGVjLT5jYl90eXBlID09IEZGX0NPREVDX0NC X1RZUEVfUkVDRUlWRV9QQUNLRVQpOwogICAgICsgfQogICAgICsgCiAgICAgKwogICAgICAgIyMg bGliYXZjb2RlYy93ZWJ2dHRlbmMuYyAjIwogICAgICBAQAogICAgICAgCiAgICAgQEAgbGliYXZj b2RlYy93ZWJ2dHRlbmMuYwogICAgICArI2luY2x1ZGUgImVuY29kZS5oIgogICAgICAgI2luY2x1 ZGUgImxpYmF2dXRpbC9hdnN0cmluZy5oIgogICAgICAgI2luY2x1ZGUgImxpYmF2dXRpbC9icHJp bnQuaCIKICAgICAtICNpbmNsdWRlICJsaWJhdnV0aWwvYXNzX3NwbGl0X2ludGVybmFsLmgiCiAg ICAgKyAjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKICAgICAgQEAKICAgICAgIHR5cGVkZWYg c3RydWN0IHsKICAgICAgICAgICBBVkNvZGVjQ29udGV4dCAqYXZjdHg7CiAgICAgQEAgbGliYXZj b2RlYy93ZWJ2dHRlbmMuYzogc3RhdGljIGNvbnN0IEFTU0NvZGVzQ2FsbGJhY2tzIHdlYnZ0dF9j YWxsYmFja3MgPSB7CiAgICAgICsKICAgICAgKyAgICAvLyBUaGUgZnJhbWUgaGFzIGNvbnRlbnQs IHNvIHdlIG5lZWQgdG8gc2V0IHVwIGEgY29udGV4dAogICAgICArICAgIGlmIChmcmFtZS0+c3Vi dGl0bGVfaGVhZGVyICYmIGZyYW1lLT5zdWJ0aXRsZV9oZWFkZXItPnNpemUgPiAwKSB7CiAgICAg LSsgICAgICAgIGF2cHJpdl9hc3Nfc3BsaXRfZnJlZShzLT5hc3NfY3R4KTsKICAgICAgKyAgICAg ICAgY29uc3QgY2hhciogc3VidGl0bGVfaGVhZGVyID0gKGNoYXIqKWZyYW1lLT5zdWJ0aXRsZV9o ZWFkZXItPmRhdGE7CiAgICAgKysgICAgICAgIGF2cHJpdl9hc3Nfc3BsaXRfZnJlZShzLT5hc3Nf Y3R4KTsKICAgICAgKyAgICAgICAgcy0+YXNzX2N0eCA9IGF2cHJpdl9hc3Nfc3BsaXQoc3VidGl0 bGVfaGVhZGVyKTsKICAgICAgKyAgICAgICAgcy0+aXNfZGVmYXVsdF9hc3NfY29udGV4dCA9IDA7 CiAgICAgICsgICAgfQogICAgIEBAIGxpYmF2Y29kZWMvd2VidnR0ZW5jLmM6IHN0YXRpYyBhdl9j b2xkIGludCB3ZWJ2dHRfZW5jb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2CiAgICAgICsgICAg cmV0dXJuIDA7CiAgICAgICB9CiAgICAgICAKICAgICAtIGNvbnN0IEFWQ29kZWMgZmZfd2VidnR0 X2VuY29kZXIgPSB7CiAgICAgLUBAIGxpYmF2Y29kZWMvd2VidnR0ZW5jLmM6IGNvbnN0IEFWQ29k ZWMgZmZfd2VidnR0X2VuY29kZXIgPSB7CiAgICAgLSAgICAgLmlkICAgICAgICAgICAgID0gQVZf Q09ERUNfSURfV0VCVlRULAogICAgICsgY29uc3QgRkZDb2RlYyBmZl93ZWJ2dHRfZW5jb2RlciA9 IHsKICAgICArQEAgbGliYXZjb2RlYy93ZWJ2dHRlbmMuYzogY29uc3QgRkZDb2RlYyBmZl93ZWJ2 dHRfZW5jb2RlciA9IHsKICAgICArICAgICAucC5pZCAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9X RUJWVFQsCiAgICAgICAgICAgLnByaXZfZGF0YV9zaXplID0gc2l6ZW9mKFdlYlZUVENvbnRleHQp LAogICAgICAgICAgIC5pbml0ICAgICAgICAgICA9IHdlYnZ0dF9lbmNvZGVfaW5pdCwKICAgICAt LSAgICAuZW5jb2RlX3N1YiAgICAgPSB3ZWJ2dHRfZW5jb2RlX2ZyYW1lLAogICAgIC0rICAgIC5l bmNvZGUyICAgICAgICA9IHdlYnZ0dF9lbmNvZGVfZnJhbWUsCiAgICAgKy0gICAgRkZfQ09ERUNf RU5DT0RFX1NVQl9DQih3ZWJ2dHRfZW5jb2RlX2ZyYW1lKSwKICAgICArKyAgICBGRl9DT0RFQ19F TkNPREVfQ0Iod2VidnR0X2VuY29kZV9mcmFtZSksCiAgICAgICAgICAgLmNsb3NlICAgICAgICAg ID0gd2VidnR0X2VuY29kZV9jbG9zZSwKICAgICAgICAgICAuY2Fwc19pbnRlcm5hbCAgPSBGRl9D T0RFQ19DQVBfSU5JVF9USFJFQURTQUZFLAogICAgICAgfTsKICAgICAgCiAgICAgICAjIyBsaWJh dmNvZGVjL3hzdWJlbmMuYyAjIwogICAgICBAQAogICAgIC0gCiAgICAgICAjaW5jbHVkZSAiYXZj b2RlYy5oIgogICAgICAgI2luY2x1ZGUgImJ5dGVzdHJlYW0uaCIKICAgICArICNpbmNsdWRlICJj b2RlY19pbnRlcm5hbC5oIgogICAgICArI2luY2x1ZGUgImVuY29kZS5oIgogICAgIC0gI2luY2x1 ZGUgImludGVybmFsLmgiCiAgICAgICAjaW5jbHVkZSAicHV0X2JpdHMuaCIKICAgICAgIAogICAg ICsgLyoqCiAgICAgIEBAIGxpYmF2Y29kZWMveHN1YmVuYy5jOiBzdGF0aWMgaW50IG1ha2VfdGMo dWludDY0X3QgbXMsIGludCAqdGMpCiAgICAgICAgICAgcmV0dXJuIG1zID4gOTk7CiAgICAgICB9 CiAgICAgQEAgbGliYXZjb2RlYy94c3ViZW5jLmM6IHN0YXRpYyBpbnQgeHN1Yl9lbmNvZGUoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LCB1bnNpZ25lZCBjaGEKICAgICAgIH0KICAgICAgIAogICAgICAg c3RhdGljIGF2X2NvbGQgaW50IHhzdWJfZW5jb2Rlcl9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0 eCkKICAgICAtQEAgbGliYXZjb2RlYy94c3ViZW5jLmM6IGNvbnN0IEFWQ29kZWMgZmZfeHN1Yl9l bmNvZGVyID0gewogICAgIC0gICAgIC50eXBlICAgICAgID0gQVZNRURJQV9UWVBFX1NVQlRJVExF LAogICAgIC0gICAgIC5pZCAgICAgICAgID0gQVZfQ09ERUNfSURfWFNVQiwKICAgICArQEAgbGli YXZjb2RlYy94c3ViZW5jLmM6IGNvbnN0IEZGQ29kZWMgZmZfeHN1Yl9lbmNvZGVyID0gewogICAg ICsgICAgIC5wLnR5cGUgICAgID0gQVZNRURJQV9UWVBFX1NVQlRJVExFLAogICAgICsgICAgIC5w LmlkICAgICAgID0gQVZfQ09ERUNfSURfWFNVQiwKICAgICAgICAgICAuaW5pdCAgICAgICA9IHhz dWJfZW5jb2Rlcl9pbml0LAogICAgIC0tICAgIC5lbmNvZGVfc3ViID0geHN1Yl9lbmNvZGUsCiAg ICAgLSsgICAgLmVuY29kZTIgICAgPSB4c3ViX2VuY29kZSwKICAgICArLSAgICBGRl9DT0RFQ19F TkNPREVfU1VCX0NCKHhzdWJfZW5jb2RlKSwKICAgICArKyAgICBGRl9DT0RFQ19FTkNPREVfQ0Io eHN1Yl9lbmNvZGUpLAogICAgICAgICAgIC5jYXBzX2ludGVybmFsID0gRkZfQ09ERUNfQ0FQX0lO SVRfVEhSRUFEU0FGRSwKICAgICAgIH07CiAyMTogIDMxNGQxZGE1MDUgISAyMjogIGZhMGI1YzIw NzcgZmZ0b29scy9mZm1wZWc6IEludHJvZHVjZSBzdWJ0aXRsZSBmaWx0ZXJpbmcgYW5kIG5ldyBm cmFtZS1iYXNlZCBzdWJ0aXRsZSBlbmNvZGluZwogICAgIEBAIENvbW1pdCBtZXNzYWdlCiAgICAg ICAgICBKdXN0aWZpY2F0aW9uIGZvciBjaGFuZ2VkIHRlc3QgcmVmczoKICAgICAgCiAgICAgICAg ICAtIHN1YjJ2aWRlbwogICAgIC0gICAgICBUaGUgbmV3IHJlc3VsdHMgYXJlIGlkZW50aWNhbCBl eGNlcHRpbmcgdGhlIGxhc3QgZnJhbWUgd2hpY2gKICAgICAtICAgICAgaXMgZHVlIHRvIHRoZSBp bXBsZW1lbnRhdGlvbiBjaGFuZ2VzCiAgICAgKyAgICAgIFRoZSBwcmV2aW91cyByZXN1bHRzIHdl cmUgaW5jb3JyZWN0LiBUaGUgY29tbWFuZCBsaW5lIGZvciB0aGlzIHRlc3QKICAgICArICAgICAg c3BlY2lmaWVzIC1yIDUgKDUgZnJhbWVzIHBlciBzZWNvbmQpLCB3aGljaCBpcyBub3cgZnVsZmls bGVkIGJ5IHRoZQogICAgICsgICAgICBhZGRpdGlvbmFsIGZyYW1lcyBpbiB0aGUgcmVmZXJlbmNl IG91dHB1dC4KICAgICArICAgICAgRXhhbXBsZTogVGhlIGZpcnN0IHN1YnRpdGxlIHRpbWUgaXMg NDk5MDAwLCB0aGUgc2Vjb25kIGlzIDE1MzU1MDAwLAogICAgICsgICAgICB3aGljaCBtZWFucyAw LjVzIGFuZCAxNS4zNXMgd2l0aCBhIGRpZmZlcmVuY2Ugb2YgMTQuODVzLgogICAgICsgICAgICAx NXMgKiA1ZnBzID0gNzUgZnJhbWVzIGFuZCB0aGF0J3Mgbm93IHRoZSBleGFjdCBudW1iZXIgb2Yg dmlkZW8KICAgICArICAgICAgZnJhbWVzIGJldHdlZW4gdGhlc2UgdHdvIHN1YnRpdGxlIGV2ZW50 cy4KICAgICAgCiAgICAgICAgICAtIHN1YjJ2aWRlb19iYXNpYwogICAgICAgICAgICBUaGUgcHJl dmlvdXMgcmVzdWx0cyBoYWQgc29tZSBpbmNvcnJlY3Qgb3V0cHV0IGJlY2F1c2UgbXVsdGlwbGUK ICAgICBAQCBDb21taXQgbWVzc2FnZQogICAgICAgICAgICBDUkMgaXMgZHVlIHRvIHRoZSBkaWZm ZXJlbnQgYmxlbmRpbmcgYWxnb3JpdGhtIHRoYXQgaXMgYmVpbmcgdXNlZC4KICAgICAgCiAgICAg ICAgICAtIHN1YjJ2aWRlb190aW1lX2xpbWl0ZWQKICAgICAtICAgICAgVGhlIHRoaXJkIGZyYW1l IGluIHRoZSBwcmV2aW91cyByZWYgd2FzIGEgcmVwZXRpdGlvbiwgd2hpY2ggZG9lc24ndAogICAg IC0gICAgICBoYXBwZW4gYW55bW9yZSB3aXRoIHRoZSBuZXcgc3VidGl0bGUgZmlsdGVyaW5nLgog ICAgICsgICAgICBTdWJ0aXRsZSBmcmFtZXMgYXJlIGVtaXR0ZWQgdG8gdGhlIGZpbHRlciBncmFw aHMgYXQgYSA1IGZwcyByYXRlCiAgICAgKyAgICAgIGJ5IGRlZmF1bHQuIFRoZSB0aW1lIGxpbWl0 IGZvciB0aGlzIHRlc3QgaXMgMTVzICogNWZwcyA9IDc1IGZyYW1lcwogICAgICsgICAgICB3aGlj aCBtYXRjaGVzIHRoZSBjb3VudCBpbiB0aGUgbmV3IHJlZi4KICAgICAgCiAgICAgICAgICAtIHN1 Yi1kdmIKICAgICAgICAgICAgUnVubmluZyBmZnByb2JlIC1zaG93X2ZyYW1lcyBvbiB0aGUgc291 cmNlIGZpbGUgc2hvd3MgdGhhdCB0aGVyZQogICAgIEBAIENvbW1pdCBtZXNzYWdlCiAgICAgICAg ICBTaWduZWQtb2ZmLWJ5OiBzb2Z0d29ya3ogPHNvZnR3b3JrekBob3RtYWlsLmNvbT4KICAgICAg CiAgICAgICAjIyBmZnRvb2xzL2ZmbXBlZy5jICMjCiAgICAgLUBAIGZmdG9vbHMvZmZtcGVnLmM6 IHN0YXRpYyBpbnQgd2FudF9zZHAgPSAxOwogICAgICtAQCBmZnRvb2xzL2ZmbXBlZy5jOiBpbnQg d2FudF9zZHAgPSAxOwogICAgICAgc3RhdGljIEJlbmNobWFya1RpbWVTdGFtcHMgY3VycmVudF90 aW1lOwogICAgICAgQVZJT0NvbnRleHQgKnByb2dyZXNzX2F2aW8gPSBOVUxMOwogICAgICAgCiAg ICAgQEAgZmZ0b29scy9mZm1wZWcuYzogc3RhdGljIHZvaWQgZmZtcGVnX2NsZWFudXAoaW50IHJl dCkKICAgICAgICAgICAgICAgICAgIElucHV0RmlsdGVyICppZmlsdGVyID0gZmctPmlucHV0c1tq XTsKICAgICAgLSAgICAgICAgICAgIHN0cnVjdCBJbnB1dFN0cmVhbSAqaXN0ID0gaWZpbHRlci0+ aXN0OwogICAgICAgCiAgICAgLSAgICAgICAgICAgICB3aGlsZSAoYXZfZmlmb19zaXplKGlmaWx0 ZXItPmZyYW1lX3F1ZXVlKSkgewogICAgICsgICAgICAgICAgICAgaWYgKGlmaWx0ZXItPmZyYW1l X3F1ZXVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgQVZGcmFtZSAqZnJhbWU7CiAgICAgIEBA IGZmdG9vbHMvZmZtcGVnLmM6IHN0YXRpYyB2b2lkIGZmbXBlZ19jbGVhbnVwKGludCByZXQpCiAg ICAgKyAgICAgICAgICAgICAgICAgYXZfZmlmb19mcmVlcDIoJmlmaWx0ZXItPmZyYW1lX3F1ZXVl KTsKICAgICAgICAgICAgICAgICAgIH0KICAgICAtICAgICAgICAgICAgIGF2X2ZpZm9fZnJlZXAo JmlmaWx0ZXItPmZyYW1lX3F1ZXVlKTsKICAgICAgICAgICAgICAgICAgIGF2X2ZyZWVwKCZpZmls dGVyLT5kaXNwbGF5bWF0cml4KTsKICAgICAgLSAgICAgICAgICAgIGlmIChpc3QtPnN1YjJ2aWRl by5zdWJfcXVldWUpIHsKICAgICAtLSAgICAgICAgICAgICAgICB3aGlsZSAoYXZfZmlmb19zaXpl KGlzdC0+c3ViMnZpZGVvLnN1Yl9xdWV1ZSkpIHsKICAgICAtLSAgICAgICAgICAgICAgICAgICAg QVZTdWJ0aXRsZSBzdWI7CiAgICAgLS0gICAgICAgICAgICAgICAgICAgIGF2X2ZpZm9fZ2VuZXJp Y19yZWFkKGlzdC0+c3ViMnZpZGVvLnN1Yl9xdWV1ZSwKICAgICAtLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJnN1Yiwgc2l6ZW9mKHN1YiksIE5VTEwpOwogICAgICst ICAgICAgICAgICAgICAgIEFWU3VidGl0bGUgc3ViOwogICAgICstICAgICAgICAgICAgICAgIHdo aWxlIChhdl9maWZvX3JlYWQoaXN0LT5zdWIydmlkZW8uc3ViX3F1ZXVlLCAmc3ViLCAxKSA+PSAw KQogICAgICAtICAgICAgICAgICAgICAgICAgICBhdnN1YnRpdGxlX2ZyZWUoJnN1Yik7CiAgICAg LS0gICAgICAgICAgICAgICAgfQogICAgIC0tICAgICAgICAgICAgICAgIGF2X2ZpZm9fZnJlZXAo JmlzdC0+c3ViMnZpZGVvLnN1Yl9xdWV1ZSk7CiAgICAgKy0gICAgICAgICAgICAgICAgYXZfZmlm b19mcmVlcDIoJmlzdC0+c3ViMnZpZGVvLnN1Yl9xdWV1ZSk7CiAgICAgIC0gICAgICAgICAgICB9 CiAgICAgICAgICAgICAgICAgICBhdl9idWZmZXJfdW5yZWYoJmlmaWx0ZXItPmh3X2ZyYW1lc19j dHgpOwogICAgICAgICAgICAgICAgICAgYXZfZnJlZXAoJmlmaWx0ZXItPm5hbWUpOwogICAgIEBA IGZmdG9vbHMvZmZtcGVnLmM6IHN0YXRpYyB2b2lkIGZmbXBlZ19jbGVhbnVwKGludCByZXQpCiAg ICAgICsgICAgLy8vL2F2X2ZyZWVwKCZzdWJ0aXRsZV9vdXQpOwogICAgICAgCiAgICAgICAgICAg LyogY2xvc2UgZmlsZXMgKi8KICAgICAtICAgICBmb3IgKGkgPSAwOyBpIDwgbmJfb3V0cHV0X2Zp bGVzOyBpKyspIHsKICAgICArICAgICBmb3IgKGkgPSAwOyBpIDwgbmJfb3V0cHV0X2ZpbGVzOyBp KyspCiAgICAgIEBAIGZmdG9vbHMvZmZtcGVnLmM6IHN0YXRpYyB2b2lkIGZmbXBlZ19jbGVhbnVw KGludCByZXQpCiAgICAgKyAgICAgZm9yIChpID0gMDsgaSA8IG5iX2lucHV0X3N0cmVhbXM7IGkr KykgewogICAgICsgICAgICAgICBJbnB1dFN0cmVhbSAqaXN0ID0gaW5wdXRfc3RyZWFtc1tpXTsK ICAgICArIAogICAgICsrICAgICAgICBpZiAoaXN0LT5wcmV2X3N1Yi5zdWJ0aXRsZSA9PSBpc3Qt PmRlY29kZWRfZnJhbWUpCiAgICAgKysgICAgICAgICAgICAvLyBQcmV2ZW50IGRvdWJsZS1mcmVl CiAgICAgKysgICAgICAgICAgICBpc3QtPnByZXZfc3ViLnN1YnRpdGxlID0gTlVMTDsKICAgICAr KwogICAgICAgICAgICAgICBhdl9mcmFtZV9mcmVlKCZpc3QtPmRlY29kZWRfZnJhbWUpOwogICAg ICAgICAgICAgICBhdl9wYWNrZXRfZnJlZSgmaXN0LT5wa3QpOwogICAgICAgICAgICAgICBhdl9k aWN0X2ZyZWUoJmlzdC0+ZGVjb2Rlcl9vcHRzKTsKICAgICBAQCBmZnRvb2xzL2ZmbXBlZy5jOiBz dGF0aWMgdm9pZCBmZm1wZWdfY2xlYW51cChpbnQgcmV0KQogICAgICAgICAgICAgICBhdmNvZGVj X2ZyZWVfY29udGV4dCgmaXN0LT5kZWNfY3R4KTsKICAgICAgIAogICAgICAgICAgICAgICBhdl9m cmVlcCgmaW5wdXRfc3RyZWFtc1tpXSk7CiAgICAgLUBAIGZmdG9vbHMvZmZtcGVnLmM6IGVycm9y OgogICAgIC0gICAgIGV4aXRfcHJvZ3JhbSgxKTsKICAgICArQEAgZmZ0b29scy9mZm1wZWcuYzog c3RhdGljIHZvaWQgZG9fYXVkaW9fb3V0KE91dHB1dEZpbGUgKm9mLCBPdXRwdXRTdHJlYW0gKm9z dCwKICAgICArICAgICAgICAgZXhpdF9wcm9ncmFtKDEpOwogICAgICAgfQogICAgICAgCiAgICAg IC1zdGF0aWMgdm9pZCBkb19zdWJ0aXRsZV9vdXQoT3V0cHV0RmlsZSAqb2YsCiAgICAgIC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0U3RyZWFtICpvc3QsCiAgICAgIC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgQVZTdWJ0aXRsZSAqc3ViKQogICAgICArc3RhdGljIHZvaWQg ZW5jb2RlX3N1YnRpdGxlX2ZyYW1lKE91dHB1dEZpbGUgKm9mLCBPdXRwdXRTdHJlYW0gKm9zdCwg QVZGcmFtZSAqZnJhbWUsIEFWUGFja2V0ICpwa3QsIGludDY0X3QgcHRzX29mZnNldCkKICAgICAt IHsKICAgICAtLSAgICBpbnQgc3VidGl0bGVfb3V0X21heF9zaXplID0gMTAyNCAqIDEwMjQ7CiAg ICAgLS0gICAgaW50IHN1YnRpdGxlX291dF9zaXplLCBuYiwgaTsKICAgICArK3sKICAgICAgKyAg ICBBVkNvZGVjQ29udGV4dCAqZW5jID0gb3N0LT5lbmNfY3R4OwogICAgICArICAgIGludCByZXQ7 CiAgICAgICsKICAgICBAQCBmZnRvb2xzL2ZmbXBlZy5jOiBlcnJvcjoKICAgICAgK30KICAgICAg KwogICAgICArc3RhdGljIHZvaWQgZG9fc3VidGl0bGVfb3V0KE91dHB1dEZpbGUgKm9mLCBPdXRw dXRTdHJlYW0gKm9zdCwgQVZGcmFtZSAqZnJhbWUpCiAgICAgLSt7CiAgICAgKyB7CiAgICAgKy0g ICAgaW50IHN1YnRpdGxlX291dF9tYXhfc2l6ZSA9IDEwMjQgKiAxMDI0OwogICAgICstICAgIGlu dCBzdWJ0aXRsZV9vdXRfc2l6ZSwgbmIsIGk7CiAgICAgICsgICAgaW50IG5iLCBpOwogICAgICAg ICAgIEFWQ29kZWNDb250ZXh0ICplbmM7CiAgICAgICAgICAgQVZQYWNrZXQgKnBrdCA9IG9zdC0+ cGt0OwogICAgIEBAIGZmdG9vbHMvZmZtcGVnLmM6IGVycm9yOgogICAgICArICAgICAgICByZXR1 cm47CiAgICAgICAgICAgfQogICAgICAgCiAgICAgKysgICAgLy8vL2lmIChvc3QtPmxhc3Rfc3Vi dGl0bGVfcHRzICYmIG9zdC0+bGFzdF9zdWJ0aXRsZV9wdHMgPT0gZnJhbWUtPnN1YnRpdGxlX3Rp bWluZy5zdGFydF9wdHMpIHsKICAgICArKyAgICAvLy8vICAgIGF2X2xvZyhOVUxMLCBBVl9MT0df REVCVUcsICJJZ25vcmluZyBzdWJ0aXRsZSBmcmFtZSB3aXRoIGR1cGxpY2F0ZSBzdWJ0aXRsZV9w dHNcbiIpOwogICAgICsrICAgIC8vLy8gICAgcmV0dXJuOwogICAgICsrICAgIC8vLy99CiAgICAg KysKICAgICArKyAgICBvc3QtPmxhc3Rfc3VidGl0bGVfcHRzID0gZnJhbWUtPnN1YnRpdGxlX3Rp bWluZy5zdGFydF9wdHM7CiAgICAgKysKICAgICAgKyAgICBpbml0X291dHB1dF9zdHJlYW1fd3Jh cHBlcihvc3QsIGZyYW1lLCAxKTsKICAgICAgKwogICAgICArICAgIGVuYyA9IG9zdC0+ZW5jX2N0 eDsKICAgICBAQCBmZnRvb2xzL2ZmbXBlZy5jOiBzdGF0aWMgaW50IGlmaWx0ZXJfc2VuZF9mcmFt ZShJbnB1dEZpbHRlciAqaWZpbHRlciwgQVZGcmFtZSAqZgogICAgICAgICAgIH0KICAgICAgIAog ICAgICBAQCBmZnRvb2xzL2ZmbXBlZy5jOiBzdGF0aWMgaW50IGlmaWx0ZXJfc2VuZF9lb2YoSW5w dXRGaWx0ZXIgKmlmaWx0ZXIsIGludDY0X3QgcHRzKQogICAgICsgICAgICAgICAgICAgcmV0dXJu IHJldDsKICAgICArICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAvLyB0aGUgZmlsdGVyZ3Jh cGggd2FzIG5ldmVyIGNvbmZpZ3VyZWQKICAgICAtICAgICAgICAgaWYgKGlmaWx0ZXItPmZvcm1h dCA8IDApCiAgICAgLSAgICAgICAgICAgICBpZmlsdGVyX3BhcmFtZXRlcnNfZnJvbV9jb2RlY3Bh cihpZmlsdGVyLCBpZmlsdGVyLT5pc3QtPnN0LT5jb2RlY3Bhcik7CiAgICAgKy0gICAgICAgIGlm IChpZmlsdGVyLT5mb3JtYXQgPCAwKSB7CiAgICAgKy0gICAgICAgICAgICByZXQgPSBpZmlsdGVy X3BhcmFtZXRlcnNfZnJvbV9jb2RlY3BhcihpZmlsdGVyLCBpZmlsdGVyLT5pc3QtPnN0LT5jb2Rl Y3Bhcik7CiAgICAgKy0gICAgICAgICAgICBpZiAocmV0IDwgMCkKICAgICArLSAgICAgICAgICAg ICAgICByZXR1cm4gcmV0OwogICAgICstICAgICAgICB9CiAgICAgIC0gICAgICAgIGlmIChpZmls dGVyLT5mb3JtYXQgPCAwICYmIChpZmlsdGVyLT50eXBlID09IEFWTUVESUFfVFlQRV9BVURJTyB8 fCBpZmlsdGVyLT50eXBlID09IEFWTUVESUFfVFlQRV9WSURFTykpIHsKICAgICArKyAgICAgICAg aWYgKGlmaWx0ZXItPmZvcm1hdCA8IDApCiAgICAgKysgICAgICAgICAgICBpZmlsdGVyX3BhcmFt ZXRlcnNfZnJvbV9jb2RlY3BhcihpZmlsdGVyLCBpZmlsdGVyLT5pc3QtPnN0LT5jb2RlY3Bhcik7 CiAgICAgICsgICAgICAgIGlmIChpZmlsdGVyLT5mb3JtYXQgPCAwICYmIChpZmlsdGVyLT50eXBl ID09IEFWTUVESUFfVFlQRV9BVURJTyB8fCBpZmlsdGVyLT50eXBlID09IEFWTUVESUFfVFlQRV9W SURFTyB8fCBpZmlsdGVyLT50eXBlID09IEFWTUVESUFfVFlQRV9TVUJUSVRMRSkpIHsKICAgICAg ICAgICAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0dfRVJST1IsICJDYW5ub3QgZGV0ZXJtaW5l IGZvcm1hdCBvZiBpbnB1dCBzdHJlYW0gJWQ6JWQgYWZ0ZXIgRU9GXG4iLCBpZmlsdGVyLT5pc3Qt PmZpbGVfaW5kZXgsIGlmaWx0ZXItPmlzdC0+c3QtPmluZGV4KTsKICAgICAgICAgICAgICAgICAg IHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwogICAgIEBAIGZmdG9vbHMvZmZtcGVnLmM6IGZh aWw6CiAgICAgICB9CiAgICAgICAKICAgICAgLXN0YXRpYyBpbnQgdHJhbnNjb2RlX3N1YnRpdGxl cyhJbnB1dFN0cmVhbSAqaXN0LCBBVlBhY2tldCAqcGt0LCBpbnQgKmdvdF9vdXRwdXQsCiAgICAg KytzdGF0aWMgdm9pZCBzdWJ0aXRsZV9zZW5kX2tpY2tvZmYoSW5wdXRTdHJlYW0gKmlzdCwgaW50 NjRfdCBoZWFydGJlYXRfcHRzKQogICAgICsrewogICAgICsrICAgIEFWRnJhbWUgKmZyYW1lOwog ICAgICsrICAgIGludDY0X3QgcHRzOwogICAgICsrCiAgICAgKysgICAgZnJhbWUgPSBhdl9mcmFt ZV9hbGxvYygpOwogICAgICsrICAgIGlmICghZnJhbWUpIHsKICAgICArKyAgICAgICAgYXZfbG9n KGlzdC0+ZGVjX2N0eCwgQVZfTE9HX0VSUk9SLCAiVW5hYmxlIHRvIGFsbG9jIGZyYW1lIChvdXQg b2YgbWVtb3J5KS5cbiIpOwogICAgICsrICAgICAgICByZXR1cm47CiAgICAgKysgICAgfQogICAg ICsrCiAgICAgKysgICAgZnJhbWUtPnR5cGUgPSBBVk1FRElBX1RZUEVfU1VCVElUTEU7CiAgICAg KysgICAgYXZfZnJhbWVfZ2V0X2J1ZmZlcjIoZnJhbWUsIDApOwogICAgICsrCiAgICAgKysgICAg ZnJhbWUtPmZvcm1hdCA9ICh1aW50MTZfdClpc3QtPmRlY19jdHgtPnN1YnRpdGxlX3R5cGU7CiAg ICAgKysKICAgICArKyAgICBwdHMgPSBGRk1BWChoZWFydGJlYXRfcHRzLCBpc3QtPnN1YnRpdGxl X2tpY2tvZmYubGFzdF9wdHMpICsgYXZfcmVzY2FsZV9xKDEwLCAoQVZSYXRpb25hbCl7IDEsIDEw MDAgfSwgaXN0LT5zdC0+dGltZV9iYXNlKTsKICAgICArKwogICAgICsrICAgIGZyYW1lLT53aWR0 aCA9IGlzdC0+c3VidGl0bGVfa2lja29mZi53OwogICAgICsrICAgIGZyYW1lLT5oZWlnaHQgPSBp c3QtPnN1YnRpdGxlX2tpY2tvZmYuaDsKICAgICArKyAgICBmcmFtZS0+c3VidGl0bGVfdGltaW5n LnN0YXJ0X3B0cyA9IGF2X3Jlc2NhbGVfcShwdHMsIGlzdC0+c3QtPnRpbWVfYmFzZSwgQVZfVElN RV9CQVNFX1EpOwogICAgICsrICAgIGZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuZHVyYXRpb24gPSAg YXZfcmVzY2FsZV9xKDEwLCAoQVZSYXRpb25hbCl7IDEsIDEwMDAgfSwgQVZfVElNRV9CQVNFX1Ep OwogICAgICsrICAgIGZyYW1lLT5wdHMgPSBwdHM7CiAgICAgKysKICAgICArKyAgICBhdl9sb2co TlVMTCwgQVZfTE9HX1dBUk5JTkcsICJzdWJ0aXRsZV9raWNrb2ZmOiBjYWxsIHN1YnRpdGxlX3Jl c2VuZF9jdXJyZW50ICUiUFJJZDY0IiBmcmFtZS0+Zm9ybWF0OiAlZFxuIiwgcHRzLCBmcmFtZS0+ Zm9ybWF0KTsKICAgICArKwogICAgICsrICAgIGlzdC0+c3VidGl0bGVfa2lja29mZi5sYXN0X3B0 cyA9IHB0czsKICAgICArKwogICAgICsrICAgIHNlbmRfZnJhbWVfdG9fZmlsdGVycyhpc3QsIGZy YW1lKTsKICAgICArKwogICAgICsrICAgIGF2X2ZyYW1lX2ZyZWUoJmZyYW1lKTsKICAgICArK30K ICAgICArKwogICAgICsrLy8gT3Bwb3NlZCB0byB0aGUgZWFybGllciAic3VidGl0bGUgaGVhcmJl YXQiLCB0aGlzIGlzIHByaW1hcmlseSBhaW1lZCBhdAogICAgICsrLy8gc2VuZGluZyBhbiBpbml0 aWFsIHN1YnRpdGxlIGZyYW1lIHRvIHRoZSBmaWx0ZXJzIGZvciBwcm9wYWdhdGluZyB0aGUgaW5p dGlhbAogICAgICsrLy8gdGltaW5nIHZhbHVlcyBhbmQgdG8gYXZvaWQgdGhhdCB0b28gbXVjaCB0 aW1lIGlzIHNwZW50IG9uIGEgc2luZ2xlICJIVyIgZGVjb2RlcgogICAgICsrLy8gd2hpY2ggY291 bGQgb3ZlcmZsb3cgaXRzIGJ1ZmZlciBwb29sIG90aGVyd2lzZQogICAgICsrc3RhdGljIHZvaWQg c3VidGl0bGVfa2lja29mZihJbnB1dFN0cmVhbSAqaXN0LCBpbnQ2NF90IHB0cykKICAgICArK3sK ICAgICArKyAgICBpbnQgaTsKICAgICArKyAgICBpbnQ2NF90IHB0czI7CiAgICAgKysgICAgaW50 NjRfdCBkaWZmOwogICAgICsrCiAgICAgKysgICAgaWYgKGlzdC0+c3QtPmNvZGVjcGFyLT5jb2Rl Y190eXBlICE9IEFWTUVESUFfVFlQRV9WSURFTykKICAgICArKyAgICAgICAgcmV0dXJuOwogICAg ICsrCiAgICAgKysgICAgZm9yIChpID0gMDsgaSA8IG5iX2lucHV0X3N0cmVhbXM7IGkrKykgewog ICAgICsrICAgICAgICBJbnB1dFN0cmVhbSAqaXN0MiA9IGlucHV0X3N0cmVhbXNbaV07CiAgICAg KysgICAgICAgIHVuc2lnbmVkIGosIG5iX3JlcXM7CiAgICAgKysKICAgICArKyAgICAgICAgaWYg KCFpc3QyLT5zdWJ0aXRsZV9raWNrb2ZmLmlzX2FjdGl2ZSkKICAgICArKyAgICAgICAgICAgIGNv bnRpbnVlOwogICAgICsrICAgICAgICAvKiBJdCdzIHByaW1hcmlseSB0aGUgaW5pdGlhbCBzZW5k IHRoYXQgbWF0dGVycyBhbmQgd2hpY2ggcHJvcGFnYXRlcwogICAgICsrICAgICAgICAgKiB0aGUg cmlnaHQgc3RhcnQgdGltZXMgdG8gc3VidGl0bGUgZmlsdGVycyBkZXBlbmRpbmcgb24gaW5wdXQg ZnJvbSBkZWNvZGluZyAqLwogICAgICsrICAgICAgICBkaWZmID0gYXZfcmVzY2FsZV9xKDUwMDAs IChBVlJhdGlvbmFsKXsgMSwgMTAwMCB9LCBpc3QyLT5zdC0+dGltZV9iYXNlKTsKICAgICArKyAg ICAgICAgcHRzMiA9IGF2X3Jlc2NhbGVfcShwdHMsIGlzdC0+c3QtPnRpbWVfYmFzZSwgaXN0Mi0+ c3QtPnRpbWVfYmFzZSk7CiAgICAgKysKICAgICArKyAgICAgICAgLyogZG8gbm90IHNlbmQgYSBr aWNrb2ZmIGZyYW1lIGlmIHRoZSBzdWJ0aXRsZSBpcyBhbHJlYWR5IGFoZWFkICovCiAgICAgKysg ICAgICAgIGlmIChwdHMyIC0gZGlmZiA8PSBpc3QyLT5zdWJ0aXRsZV9raWNrb2ZmLmxhc3RfcHRz KQogICAgICsrICAgICAgICAgICAgY29udGludWU7CiAgICAgKysKICAgICArKyAgICAgICAgZm9y IChqID0gMCwgbmJfcmVxcyA9IDA7IGogPCBpc3QyLT5uYl9maWx0ZXJzOyBqKyspIHsKICAgICAr KyAgICAgICAgICAgIGlmIChpc3QyLT5maWx0ZXJzW2pdLT5maWx0ZXIgPT0gTlVMTCkgewogICAg ICsrICAgICAgICAgICAgICAgIHN1YnRpdGxlX3NlbmRfa2lja29mZihpc3QyLCBwdHMyKTsKICAg ICArKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgKysgICAgICAgICAgICB9CiAgICAgKysg ICAgICAgICAgICBuYl9yZXFzICs9IGF2X2J1ZmZlcnNyY19nZXRfbmJfZmFpbGVkX3JlcXVlc3Rz KGlzdDItPmZpbHRlcnNbal0tPmZpbHRlcik7CiAgICAgKysgICAgICAgIH0KICAgICArKyAgICAg ICAgaWYgKG5iX3JlcXMpIHsKICAgICArKyAgICAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0df V0FSTklORywgInN1YnRpdGxlX2tpY2tvZmY6IHJlc2VuZCAtIHB0czogJSJQUklpNjQiXG4iLCBw dHMyKTsKICAgICArKyAgICAgICAgICAgIHN1YnRpdGxlX3NlbmRfa2lja29mZihpc3QyLCBwdHMy KTsKICAgICArKyAgICAgICAgfQogICAgICsrICAgIH0KICAgICArK30KICAgICArKwogICAgICAr c3RhdGljIElucHV0U3RyZWFtICpnZXRfaW5wdXRfc3RyZWFtKE91dHB1dFN0cmVhbSAqb3N0KQog ICAgICArewogICAgICArICAgIGlmIChvc3QtPnNvdXJjZV9pbmRleCA+PSAwKQogICAgIEBAIGZm dG9vbHMvZmZtcGVnLmM6IGZhaWw6CiAgICAgICsgICAgQVZGcmFtZSAqZGVjb2RlZF9mcmFtZTsK ICAgICAgKyAgICBBVkNvZGVjQ29udGV4dCAqYXZjdHggPSBpc3QtPmRlY19jdHg7CiAgICAgICsg ICAgaW50IGkgPSAwLCByZXQgPSAwLCBlcnIgPSAwOwogICAgICsrICAgIGludDY0X3QgcHRzOwog ICAgICArCiAgICAgLSsgICAgaWYgKCFpc3QtPmRlY29kZWRfZnJhbWUgJiYgIShpc3QtPmRlY29k ZWRfZnJhbWUgPSBhdl9mcmFtZV9hbGxvYygpKSkKICAgICArKyAgICBpZiAoIWlzdC0+ZGVjb2Rl ZF9mcmFtZSAmJiAhKChpc3QtPmRlY29kZWRfZnJhbWUgPSBhdl9mcmFtZV9hbGxvYygpKSkpCiAg ICAgICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CiAgICAgICsgICAgZGVjb2RlZF9m cmFtZSA9IGlzdC0+ZGVjb2RlZF9mcmFtZTsKICAgICAgKyAgICBkZWNvZGVkX2ZyYW1lLT50eXBl ID0gQVZNRURJQV9UWVBFX1NVQlRJVExFOwogICAgIC0rICAgIGRlY29kZWRfZnJhbWUtPmZvcm1h dCA9IGF2Y29kZWNfZGVzY3JpcHRvcl9nZXRfc3VidGl0bGVfZm9ybWF0KGF2Y3R4LT5jb2RlY19k ZXNjcmlwdG9yKTsKICAgICAtIAogICAgIC0tICAgIGNoZWNrX2RlY29kZV9yZXN1bHQoTlVMTCwg Z290X291dHB1dCwgcmV0KTsKICAgICArKyAgICBkZWNvZGVkX2ZyYW1lLT5mb3JtYXQgPSAodWlu dDE2X3QpYXZjdHgtPnN1YnRpdGxlX3R5cGU7CiAgICAgKysKICAgICAgKyAgICBpZiAoIWlzdC0+ c3VidGl0bGVfaGVhZGVyICYmIGF2Y3R4LT5zdWJ0aXRsZV9oZWFkZXIgJiYgYXZjdHgtPnN1YnRp dGxlX2hlYWRlcl9zaXplID4gMCkgewogICAgICArICAgICAgICBpc3QtPnN1YnRpdGxlX2hlYWRl ciA9IGF2X2J1ZmZlcl9hbGxvY3ooYXZjdHgtPnN1YnRpdGxlX2hlYWRlcl9zaXplICsgMSk7CiAg ICAgICsgICAgICAgIGlmICghaXN0LT5zdWJ0aXRsZV9oZWFkZXIpCiAgICAgQEAgZmZ0b29scy9m Zm1wZWcuYzogZmFpbDoKICAgICAgKyAgICB9CiAgICAgICsKICAgICAgKyAgICByZXQgPSBkZWNv ZGUoYXZjdHgsIGRlY29kZWRfZnJhbWUsIGdvdF9vdXRwdXQsIHBrdCk7CiAgICAgLSsKICAgICAr IAogICAgICstICAgIGNoZWNrX2RlY29kZV9yZXN1bHQoTlVMTCwgZ290X291dHB1dCwgcmV0KTsK ICAgICAgKyAgICBpZiAocmV0ICE9IEFWRVJST1JfRU9GKQogICAgICArICAgICAgICBjaGVja19k ZWNvZGVfcmVzdWx0KE5VTEwsIGdvdF9vdXRwdXQsIHJldCk7CiAgICAgICAKICAgICBAQCBmZnRv b2xzL2ZmbXBlZy5jOiBmYWlsOgogICAgICArICAgICAgICBpZiAoIXBrdC0+c2l6ZSkgewogICAg ICArICAgICAgICAgICAgLy8gRmx1c2gKICAgICAgKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkg PCBpc3QtPm5iX2ZpbHRlcnM7IGkrKykgewogICAgIC0rICAgICAgICAgICAgICAgIHJldCA9IGF2 X2J1ZmZlcnNyY19hZGRfZnJhbWUoaXN0LT5maWx0ZXJzW2ldLT5maWx0ZXIsIE5VTEwpOwogICAg IC0rICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gQVZFUlJPUl9FT0YgJiYgcmV0IDwgMCkKICAg ICAtKyAgICAgICAgICAgICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19XQVJOSU5HLCAiRmx1 c2ggdGhlIGZyYW1lIGVycm9yLlxuIik7CiAgICAgKysgICAgICAgICAgICAgICAgaWYgKGlzdC0+ ZmlsdGVyc1tpXS0+ZmlsdGVyICE9IE5VTEwpIHsKICAgICArKyAgICAgICAgICAgICAgICAgICAg cmV0ID0gYXZfYnVmZmVyc3JjX2FkZF9mcmFtZShpc3QtPmZpbHRlcnNbaV0tPmZpbHRlciwgTlVM TCk7CiAgICAgKysgICAgICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gQVZFUlJPUl9FT0YgJiYg cmV0IDwgMCkKICAgICArKyAgICAgICAgICAgICAgICAgICAgICAgIGF2X2xvZyhOVUxMLCBBVl9M T0dfV0FSTklORywgIkZsdXNoIHRoZSBmcmFtZSBlcnJvci5cbiIpOwogICAgICsrICAgICAgICAg ICAgICAgIH0KICAgICAgKyAgICAgICAgICAgIH0KICAgICAgKyAgICAgICAgfQogICAgICAgICAg ICAgICByZXR1cm4gcmV0OwogICAgIEBAIGZmdG9vbHMvZmZtcGVnLmM6IGZhaWw6CiAgICAgIC0g ICAgICAgIEZGU1dBUChpbnQsICAgICAgICAqZ290X291dHB1dCwgaXN0LT5wcmV2X3N1Yi5nb3Rf b3V0cHV0KTsKICAgICAgLSAgICAgICAgRkZTV0FQKGludCwgICAgICAgIHJldCwgICAgICAgICBp c3QtPnByZXZfc3ViLnJldCk7CiAgICAgIC0gICAgICAgIEZGU1dBUChBVlN1YnRpdGxlLCBzdWJ0 aXRsZSwgICAgaXN0LT5wcmV2X3N1Yi5zdWJ0aXRsZSk7CiAgICAgLSsgICAgICAgIEZGU1dBUChp bnQsICAgICAgICAqZ290X291dHB1dCwgICBpc3QtPnByZXZfc3ViLmdvdF9vdXRwdXQpOwogICAg IC0rICAgICAgICBGRlNXQVAoaW50LCAgICAgICAgcmV0LCAgICAgICAgICAgaXN0LT5wcmV2X3N1 Yi5yZXQpOwogICAgIC0rICAgICAgICBGRlNXQVAoQVZGcmFtZSosICAgZGVjb2RlZF9mcmFtZSwg aXN0LT5wcmV2X3N1Yi5zdWJ0aXRsZSk7CiAgICAgKysgICAgICAgIEZGU1dBUChpbnQsICAgICAg ICAqZ290X291dHB1dCwgICAgICAgIGlzdC0+cHJldl9zdWIuZ290X291dHB1dCk7CiAgICAgKysg ICAgICAgIEZGU1dBUChpbnQsICAgICAgICByZXQsICAgICAgICAgICAgICAgIGlzdC0+cHJldl9z dWIucmV0KTsKICAgICArKyAgICAgICAgRkZTV0FQKEFWRnJhbWUqLCAgIGlzdC0+ZGVjb2RlZF9m cmFtZSwgaXN0LT5wcmV2X3N1Yi5zdWJ0aXRsZSk7CiAgICAgKysgICAgICAgIGRlY29kZWRfZnJh bWUgPSBpc3QtPmRlY29kZWRfZnJhbWU7CiAgICAgICAgICAgICAgIGlmIChlbmQgPD0gMCkKICAg ICAgLSAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICArICAgICAgICAgICAgcmV0dXJuIChpbnQp ZW5kOwogICAgIEBAIGZmdG9vbHMvZmZtcGVnLmM6IGZhaWw6CiAgICAgIC0gICAgICAgIHN1YjJ2 aWRlb191cGRhdGUoaXN0LCBJTlQ2NF9NSU4sICZzdWJ0aXRsZSk7CiAgICAgIC0gICAgfSBlbHNl IGlmIChpc3QtPm5iX2ZpbHRlcnMpIHsKICAgICAgLSAgICAgICAgaWYgKCFpc3QtPnN1YjJ2aWRl by5zdWJfcXVldWUpCiAgICAgLS0gICAgICAgICAgICBpc3QtPnN1YjJ2aWRlby5zdWJfcXVldWUg PSBhdl9maWZvX2FsbG9jKDggKiBzaXplb2YoQVZTdWJ0aXRsZSkpOwogICAgICstICAgICAgICAg ICAgaXN0LT5zdWIydmlkZW8uc3ViX3F1ZXVlID0gYXZfZmlmb19hbGxvYzIoOCwgc2l6ZW9mKEFW U3VidGl0bGUpLCBBVl9GSUZPX0ZMQUdfQVVUT19HUk9XKTsKICAgICAgLSAgICAgICAgaWYgKCFp c3QtPnN1YjJ2aWRlby5zdWJfcXVldWUpCiAgICAgIC0gICAgICAgICAgICBleGl0X3Byb2dyYW0o MSk7CiAgICAgLS0gICAgICAgIGlmICghYXZfZmlmb19zcGFjZShpc3QtPnN1YjJ2aWRlby5zdWJf cXVldWUpKSB7CiAgICAgLS0gICAgICAgICAgICByZXQgPSBhdl9maWZvX3JlYWxsb2MyKGlzdC0+ c3ViMnZpZGVvLnN1Yl9xdWV1ZSwgMiAqIGF2X2ZpZm9fc2l6ZShpc3QtPnN1YjJ2aWRlby5zdWJf cXVldWUpKTsKICAgICAtLSAgICAgICAgICAgIGlmIChyZXQgPCAwKQogICAgIC0tICAgICAgICAg ICAgICAgIGV4aXRfcHJvZ3JhbSgxKTsKICAgICAgKyAgICBkZWNvZGVkX2ZyYW1lLT50eXBlID0g QVZNRURJQV9UWVBFX1NVQlRJVExFOwogICAgIC0rICAgIGRlY29kZWRfZnJhbWUtPmZvcm1hdCA9 IGF2Y29kZWNfZGVzY3JpcHRvcl9nZXRfc3VidGl0bGVfZm9ybWF0KGF2Y3R4LT5jb2RlY19kZXNj cmlwdG9yKTsKICAgICArIAogICAgICstICAgICAgICByZXQgPSBhdl9maWZvX3dyaXRlKGlzdC0+ c3ViMnZpZGVvLnN1Yl9xdWV1ZSwgJnN1YnRpdGxlLCAxKTsKICAgICArLSAgICAgICAgaWYgKHJl dCA8IDApCiAgICAgKy0gICAgICAgICAgICBleGl0X3Byb2dyYW0oMSk7CiAgICAgKy0gICAgICAg IGZyZWVfc3ViID0gMDsKICAgICArLSAgICB9CiAgICAgKysgICAgaWYgKGRlY29kZWRfZnJhbWUt PmZvcm1hdCA9PSBBVl9TVUJUSVRMRV9GTVRfVU5LTk9XTikKICAgICArKyAgICAgICAgZGVjb2Rl ZF9mcmFtZS0+Zm9ybWF0ID0gKHVpbnQxNl90KWF2Y3R4LT5zdWJ0aXRsZV90eXBlOwogICAgICAr CiAgICAgICsgICAgaWYgKChyZXQgPSBhdl9idWZmZXJfcmVwbGFjZSgmZGVjb2RlZF9mcmFtZS0+ c3VidGl0bGVfaGVhZGVyLCBpc3QtPnN1YnRpdGxlX2hlYWRlcikpIDwgMCkKICAgICAgKyAgICAg ICAgcmV0dXJuIHJldDsKICAgICAtKwogICAgICsgCiAgICAgKy0gICAgaWYgKCFzdWJ0aXRsZS5u dW1fcmVjdHMpCiAgICAgKy0gICAgICAgIGdvdG8gb3V0OwogICAgICArICAgIGRlY29kZWRfZnJh bWUtPnB0cyA9IGF2X3Jlc2NhbGVfcShkZWNvZGVkX2ZyYW1lLT5zdWJ0aXRsZV90aW1pbmcuc3Rh cnRfcHRzLCBBVl9USU1FX0JBU0VfUSwgaXN0LT5zdC0+dGltZV9iYXNlKTsKICAgICAtKwogICAg ICsgCiAgICAgKy0gICAgaXN0LT5mcmFtZXNfZGVjb2RlZCsrOwogICAgICsrICAgIHB0cyAgICAg PSBhdl9yZXNjYWxlX3EoZGVjb2RlZF9mcmFtZS0+c3VidGl0bGVfdGltaW5nLnN0YXJ0X3B0cywK ICAgICArKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWX1RJTUVfQkFTRV9RLCBpc3QtPnN0 LT50aW1lX2Jhc2UpOwogICAgICsgCiAgICAgKy0gICAgZm9yIChpID0gMDsgaSA8IG5iX291dHB1 dF9zdHJlYW1zOyBpKyspIHsKICAgICArLSAgICAgICAgT3V0cHV0U3RyZWFtICpvc3QgPSBvdXRw dXRfc3RyZWFtc1tpXTsKICAgICArKyAgICBpc3QtPnN1YnRpdGxlX2tpY2tvZmYubGFzdF9wdHMg PSBkZWNvZGVkX2ZyYW1lLT5wdHMgPSBwdHM7CiAgICAgKyAKICAgICArLSAgICAgICAgaWYgKCFj aGVja19vdXRwdXRfY29uc3RyYWludHMoaXN0LCBvc3QpIHx8ICFvc3QtPmVuY29kaW5nX25lZWRl ZAogICAgICstICAgICAgICAgICAgfHwgb3N0LT5lbmMtPnR5cGUgIT0gQVZNRURJQV9UWVBFX1NV QlRJVExFKQogICAgICstICAgICAgICAgICAgY29udGludWU7CiAgICAgICsgICAgaWYgKGlzdC0+ bmJfZmlsdGVycyA+IDApIHsKICAgICAgKyAgICAgICAgQVZGcmFtZSAqZmlsdGVyX2ZyYW1lID0g YXZfZnJhbWVfY2xvbmUoZGVjb2RlZF9mcmFtZSk7CiAgICAgICsgICAgICAgIGlmICghZmlsdGVy X2ZyYW1lKSB7CiAgICAgICsgICAgICAgICAgICBlcnIgPSBBVkVSUk9SKEVOT01FTSk7CiAgICAg ICsgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAtICAgICAgICAgfQogICAgIC0tICAgICAgICBh dl9maWZvX2dlbmVyaWNfd3JpdGUoaXN0LT5zdWIydmlkZW8uc3ViX3F1ZXVlLCAmc3VidGl0bGUs IHNpemVvZihzdWJ0aXRsZSksIE5VTEwpOwogICAgIC0tICAgICAgICBmcmVlX3N1YiA9IDA7CiAg ICAgLS0gICAgfQogICAgICsrICAgICAgICB9CiAgICAgICAKICAgICAtLSAgICBpZiAoIXN1YnRp dGxlLm51bV9yZWN0cykKICAgICAtLSAgICAgICAgZ290byBvdXQ7CiAgICAgKy0gICAgICAgIGRv X3N1YnRpdGxlX291dChvdXRwdXRfZmlsZXNbb3N0LT5maWxlX2luZGV4XSwgb3N0LCAmc3VidGl0 bGUpOwogICAgICArICAgICAgICBlcnIgPSBzZW5kX2ZyYW1lX3RvX2ZpbHRlcnMoaXN0LCBmaWx0 ZXJfZnJhbWUpOwogICAgICArICAgICAgICBhdl9mcmFtZV9mcmVlKCZmaWx0ZXJfZnJhbWUpOwog ICAgIC0rICAgIH0KICAgICArICAgICB9CiAgICAgICAKICAgICAtLSAgICBpc3QtPmZyYW1lc19k ZWNvZGVkKys7CiAgICAgKy1vdXQ6CiAgICAgKy0gICAgaWYgKGZyZWVfc3ViKQogICAgICstICAg ICAgICBhdnN1YnRpdGxlX2ZyZWUoJnN1YnRpdGxlKTsKICAgICArLSAgICByZXR1cm4gcmV0Owog ICAgICArICAgIGlmIChlcnIgPj0gMCkgewogICAgICArICAgICAgICBmb3IgKGkgPSAwOyBpIDwg bmJfb3V0cHV0X3N0cmVhbXM7IGkrKykgewogICAgICArICAgICAgICAgICAgT3V0cHV0U3RyZWFt ICpvc3QgPSBvdXRwdXRfc3RyZWFtc1tpXTsKICAgICAgKyAgICAgICAgICAgIElucHV0U3RyZWFt ICppc3Rfc3JjID0gZ2V0X2lucHV0X3N0cmVhbShvc3QpOwogICAgIC0gCiAgICAgLS0gICAgZm9y IChpID0gMDsgaSA8IG5iX291dHB1dF9zdHJlYW1zOyBpKyspIHsKICAgICAtLSAgICAgICAgT3V0 cHV0U3RyZWFtICpvc3QgPSBvdXRwdXRfc3RyZWFtc1tpXTsKICAgICArKwogICAgICArICAgICAg ICAgICAgaWYgKCFpc3Rfc3JjIHx8ICFjaGVja19vdXRwdXRfY29uc3RyYWludHMoaXN0LCBvc3Qp CiAgICAgICsgICAgICAgICAgICAgICAgfHwgaXN0X3NyYyAhPSBpc3QKICAgICAgKyAgICAgICAg ICAgICAgICB8fCAhb3N0LT5lbmNvZGluZ19uZWVkZWQKICAgICAgKyAgICAgICAgICAgICAgICB8 fCBvc3QtPmVuYy0+dHlwZSAhPSBBVk1FRElBX1RZUEVfU1VCVElUTEUpCiAgICAgICsgICAgICAg ICAgICAgICAgY29udGludWU7CiAgICAgLSAKICAgICAtLSAgICAgICAgaWYgKCFjaGVja19vdXRw dXRfY29uc3RyYWludHMoaXN0LCBvc3QpIHx8ICFvc3QtPmVuY29kaW5nX25lZWRlZAogICAgIC0t ICAgICAgICAgICAgfHwgb3N0LT5lbmMtPnR5cGUgIT0gQVZNRURJQV9UWVBFX1NVQlRJVExFKQog ICAgIC0tICAgICAgICAgICAgY29udGludWU7CiAgICAgKysKICAgICAgKyAgICAgICAgICAgIGlm IChvc3QtPmZpbHRlciAmJiBvc3QtPmZpbHRlci0+ZmlsdGVyLT5uYl9pbnB1dHMgPiAwKQogICAg ICArICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgIC0gCiAgICAgLS0gICAgICAgIGRvX3N1 YnRpdGxlX291dChvdXRwdXRfZmlsZXNbb3N0LT5maWxlX2luZGV4XSwgb3N0LCAmc3VidGl0bGUp OwogICAgICsrCiAgICAgICsgICAgICAgICAgICBkb19zdWJ0aXRsZV9vdXQob3V0cHV0X2ZpbGVz W29zdC0+ZmlsZV9pbmRleF0sIG9zdCwgZGVjb2RlZF9mcmFtZSk7CiAgICAgICsgICAgICAgIH0K ICAgICAtICAgICB9CiAgICAgLSAKICAgICAtLW91dDoKICAgICAtLSAgICBpZiAoZnJlZV9zdWIp CiAgICAgLS0gICAgICAgIGF2c3VidGl0bGVfZnJlZSgmc3VidGl0bGUpOwogICAgIC0tICAgIHJl dHVybiByZXQ7CiAgICAgKysgICAgfQogICAgICsrCiAgICAgICtlbmQ6CiAgICAgICsgICAgYXZf ZnJhbWVfdW5yZWYoZGVjb2RlZF9mcmFtZSk7CiAgICAgICsgICAgcmV0dXJuIGVyciA8IDAgPyBl cnIgOiByZXQ7CiAgICAgQEAgZmZ0b29scy9mZm1wZWcuYzogc3RhdGljIGludCBwcm9jZXNzX2lu cHV0X3BhY2tldChJbnB1dFN0cmVhbSAqaXN0LCBjb25zdCBBVlBhY2sKICAgICAgICAgICAgICAg ICAgIGlmICghcGt0ICYmIHJldCA+PSAwKQogICAgICAgICAgICAgICAgICAgICAgIHJldCA9IEFW RVJST1JfRU9GOwogICAgICAgICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKGF2cGt0KTsKICAg ICAtQEAgZmZ0b29scy9mZm1wZWcuYzogRkZfRU5BQkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTCiAg ICAgK0BAIGZmdG9vbHMvZmZtcGVnLmM6IHN0YXRpYyBpbnQgaW5pdF9pbnB1dF9zdHJlYW0oaW50 IGlzdF9pbmRleCwgY2hhciAqZXJyb3IsIGludCBlcnJvcl9sZW4pCiAgICAgICAgICAgcmV0dXJu IDA7CiAgICAgICB9CiAgICAgICAKICAgICBAQCBmZnRvb2xzL2ZmbXBlZy5jOiBzdGF0aWMgaW50 IGluaXRfb3V0cHV0X3N0cmVhbV9lbmNvZGUoT3V0cHV0U3RyZWFtICpvc3QsIEFWRnJhbQogICAg ICAgICAgICAgICAgICAgZW5jX2N0eC0+d2lkdGggICAgID0gaW5wdXRfc3RyZWFtc1tvc3QtPnNv dXJjZV9pbmRleF0tPnN0LT5jb2RlY3Bhci0+d2lkdGg7CiAgICAgICAgICAgICAgICAgICBlbmNf Y3R4LT5oZWlnaHQgICAgPSBpbnB1dF9zdHJlYW1zW29zdC0+c291cmNlX2luZGV4XS0+c3QtPmNv ZGVjcGFyLT5oZWlnaHQ7CiAgICAgICAgICAgICAgIH0KICAgICArQEAgZmZ0b29scy9mZm1wZWcu Yzogc3RhdGljIGludCBpbml0X291dHB1dF9zdHJlYW1fZW5jb2RlKE91dHB1dFN0cmVhbSAqb3N0 LCBBVkZyYW1lICpmcmFtZSkKICAgICArICAgICByZXR1cm4gMDsKICAgICArIH0KICAgICArIAog ICAgICsrc3RhdGljIGVudW0gQVZTdWJ0aXRsZVR5cGUgZ2V0X3N1YnRpdGxlX2Zvcm1hdChjb25z dCBBVkNvZGVjRGVzY3JpcHRvciAqY29kZWNfZGVzY3JpcHRvcikKICAgICArK3sKICAgICArKyAg ICBpZihjb2RlY19kZXNjcmlwdG9yLT5wcm9wcyAmIEFWX0NPREVDX1BST1BfQklUTUFQX1NVQikK ICAgICArKyAgICAgICAgcmV0dXJuIEFWX1NVQlRJVExFX0ZNVF9CSVRNQVA7CiAgICAgKysKICAg ICArKyAgICBpZihjb2RlY19kZXNjcmlwdG9yLT5wcm9wcyAmIEFWX0NPREVDX1BST1BfVEVYVF9T VUIpCiAgICAgKysgICAgICAgIHJldHVybiBBVl9TVUJUSVRMRV9GTVRfQVNTOwogICAgICsrCiAg ICAgKysgICAgcmV0dXJuIEFWX1NVQlRJVExFX0ZNVF9VTktOT1dOOwogICAgICsrfQogICAgICsr CiAgICAgKyBzdGF0aWMgaW50IGluaXRfb3V0cHV0X3N0cmVhbShPdXRwdXRTdHJlYW0gKm9zdCwg QVZGcmFtZSAqZnJhbWUsCiAgICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFy ICplcnJvciwgaW50IGVycm9yX2xlbikKICAgICArIHsKICAgICAgQEAgZmZ0b29scy9mZm1wZWcu Yzogc3RhdGljIGludCBpbml0X291dHB1dF9zdHJlYW0oT3V0cHV0U3RyZWFtICpvc3QsIEFWRnJh bWUgKmZyYW1lLAogICAgICAgICAgICAgICB9CiAgICAgICAKICAgICBAQCBmZnRvb2xzL2ZmbXBl Zy5jOiBzdGF0aWMgaW50IGluaXRfb3V0cHV0X3N0cmVhbShPdXRwdXRTdHJlYW0gKm9zdCwgQVZG cmFtZSAqZnJhbQogICAgICAtICAgICAgICAgICAgICAgIHNucHJpbnRmKGVycm9yLCBlcnJvcl9s ZW4sCiAgICAgIC0gICAgICAgICAgICAgICAgICAgICAgICAgIlN1YnRpdGxlIGVuY29kaW5nIGN1 cnJlbnRseSBvbmx5IHBvc3NpYmxlIGZyb20gdGV4dCB0byB0ZXh0ICIKICAgICAgLSAgICAgICAg ICAgICAgICAgICAgICAgICAib3IgYml0bWFwIHRvIGJpdG1hcCIpOwogICAgIC0rICAgICAgICAg ICAgQVZDb2RlY0Rlc2NyaXB0b3IgY29uc3QgKmlucHV0X2Rlc2NyaXB0b3IgICAgID0gYXZjb2Rl Y19kZXNjcmlwdG9yX2dldChkZWMtPmNvZGVjX2lkKTsKICAgICAgKyAgICAgICAgICAgIEFWQ29k ZWNEZXNjcmlwdG9yIGNvbnN0ICpvdXRwdXRfZGVzY3JpcHRvciAgICA9IGF2Y29kZWNfZGVzY3Jp cHRvcl9nZXQob3N0LT5lbmNfY3R4LT5jb2RlY19pZCk7CiAgICAgLSsgICAgICAgICAgICBjb25z dCBlbnVtIEFWU3VidGl0bGVUeXBlIGluX3N1YnRpdGxlX2Zvcm1hdCAgPSBvdXRwdXRfZGVzY3Jp cHRvciA/IGF2Y29kZWNfZGVzY3JpcHRvcl9nZXRfc3VidGl0bGVfZm9ybWF0KGlucHV0X2Rlc2Ny aXB0b3IpIDogQVZfU1VCVElUTEVfRk1UX1VOS05PV047CiAgICAgLSsgICAgICAgICAgICBjb25z dCBlbnVtIEFWU3VidGl0bGVUeXBlIG91dF9zdWJ0aXRsZV9mb3JtYXQgPSBvdXRwdXRfZGVzY3Jp cHRvciA/IGF2Y29kZWNfZGVzY3JpcHRvcl9nZXRfc3VidGl0bGVfZm9ybWF0KG91dHB1dF9kZXNj cmlwdG9yKSA6IEFWX1NVQlRJVExFX0ZNVF9VTktOT1dOOwogICAgICsrICAgICAgICAgICAgY29u c3QgZW51bSBBVlN1YnRpdGxlVHlwZSBpbl9zdWJ0aXRsZV9mb3JtYXQgID0gKHVpbnQxNl90KWRl Yy0+c3VidGl0bGVfdHlwZTsKICAgICArKyAgICAgICAgICAgIGNvbnN0IGVudW0gQVZTdWJ0aXRs ZVR5cGUgb3V0X3N1YnRpdGxlX2Zvcm1hdCA9IG91dHB1dF9kZXNjcmlwdG9yID8gZ2V0X3N1YnRp dGxlX2Zvcm1hdChvdXRwdXRfZGVzY3JpcHRvcikgOiBBVl9TVUJUSVRMRV9GTVRfVU5LTk9XTjsK ICAgICAgKwogICAgICArICAgICAgICAgICAgaWYgKGlzdC0+bmJfZmlsdGVycyA9PSAwICYmIGlu X3N1YnRpdGxlX2Zvcm1hdCAhPSBBVl9TVUJUSVRMRV9GTVRfVU5LTk9XTiAmJiBvdXRfc3VidGl0 bGVfZm9ybWF0ICE9IEFWX1NVQlRJVExFX0ZNVF9VTktOT1dOCiAgICAgICsgICAgICAgICAgICAg ICAgJiYgaW5fc3VidGl0bGVfZm9ybWF0ICE9IG91dF9zdWJ0aXRsZV9mb3JtYXQpIHsKICAgICBA QCBmZnRvb2xzL2ZmbXBlZy5jOiBzdGF0aWMgaW50IGluaXRfb3V0cHV0X3N0cmVhbShPdXRwdXRT dHJlYW0gKm9zdCwgQVZGcmFtZSAqZnJhbQogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBB VkVSUk9SX0lOVkFMSUREQVRBOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9 CiAgICAgLUBAIGZmdG9vbHMvZmZtcGVnLmM6IHN0YXRpYyBpbnQgdHJhbnNjb2RlX2luaXQodm9p ZCkKICAgICAtICAgICBmb3IgKGkgPSAwOyBpIDwgbmJfb3V0cHV0X3N0cmVhbXM7IGkrKykgewog ICAgIC0gICAgICAgICBpZiAoIW91dHB1dF9zdHJlYW1zW2ldLT5zdHJlYW1fY29weSAmJgogICAg IC0gICAgICAgICAgICAgKG91dHB1dF9zdHJlYW1zW2ldLT5lbmNfY3R4LT5jb2RlY190eXBlID09 IEFWTUVESUFfVFlQRV9WSURFTyB8fAogICAgIC0tICAgICAgICAgICAgIG91dHB1dF9zdHJlYW1z W2ldLT5lbmNfY3R4LT5jb2RlY190eXBlID09IEFWTUVESUFfVFlQRV9BVURJTykpCiAgICAgLSsg ICAgICAgICAgICAgb3V0cHV0X3N0cmVhbXNbaV0tPmVuY19jdHgtPmNvZGVjX3R5cGUgPT0gQVZN RURJQV9UWVBFX0FVRElPIHx8CiAgICAgLSsgICAgICAgICAgICAgb3V0cHV0X3N0cmVhbXNbaV0t PmVuY19jdHgtPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1NVQlRJVExFKSkKICAgICAtICAg ICAgICAgICAgIGNvbnRpbnVlOwogICAgICtAQCBmZnRvb2xzL2ZmbXBlZy5jOiBzdGF0aWMgT3V0 cHV0U3RyZWFtICpjaG9vc2Vfb3V0cHV0KHZvaWQpCiAgICAgKyAgICAgICAgICAgICAgICAgICAg ICAgIGF2X3Jlc2NhbGVfcShvc3QtPmxhc3RfbXV4X2R0cywgb3N0LT5zdC0+dGltZV9iYXNlLAog ICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZfVElNRV9CQVNFX1Ep OwogICAgICsgICAgICAgICBpZiAob3N0LT5sYXN0X211eF9kdHMgPT0gQVZfTk9QVFNfVkFMVUUp CiAgICAgKy0gICAgICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9HX0RFQlVHLAogICAgICsrICAg ICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19JTkZPLAogICAgICsgICAgICAgICAgICAgICAg ICJjdXJfZHRzIGlzIGludmFsaWQgc3Q6JWQgKCVkKSBbaW5pdDolZCBpX2RvbmU6JWQgZmluaXNo OiVkXSAodGhpcyBpcyBoYXJtbGVzcyBpZiBpdCBvY2N1cnMgb25jZSBhdCB0aGUgc3RhcnQgcGVy IHN0cmVhbSlcbiIsCiAgICAgKyAgICAgICAgICAgICAgICAgb3N0LT5zdC0+aW5kZXgsIG9zdC0+ c3QtPmlkLCBvc3QtPmluaXRpYWxpemVkLCBvc3QtPmlucHV0c19kb25lLCBvc3QtPmZpbmlzaGVk KTsKICAgICAgIAogICAgIC0gICAgICAgICByZXQgPSBpbml0X291dHB1dF9zdHJlYW1fd3JhcHBl cihvdXRwdXRfc3RyZWFtc1tpXSwgTlVMTCwgMCk7CiAgICAgIEBAIGZmdG9vbHMvZmZtcGVnLmM6 IHN0YXRpYyBpbnQgcHJvY2Vzc19pbnB1dChpbnQgZmlsZV9pbmRleCkKICAgICAgICAgICAgICAg ICAgICAgIGF2X3RzMnRpbWVzdHIoaW5wdXRfZmlsZXNbaXN0LT5maWxlX2luZGV4XS0+dHNfb2Zm c2V0LCAmQVZfVElNRV9CQVNFX1EpKTsKICAgICAgICAgICB9CiAgICAgICAKICAgICAgLSAgICBz dWIydmlkZW9faGVhcnRiZWF0KGlzdCwgcGt0LT5wdHMpOwogICAgIC0tCiAgICAgKysgICAgc3Vi dGl0bGVfa2lja29mZihpc3QsIHBrdC0+cHRzKTsKICAgICArIAogICAgICAgICAgIHByb2Nlc3Nf aW5wdXRfcGFja2V0KGlzdCwgcGt0LCAwKTsKICAgICAgIAogICAgIC0gZGlzY2FyZF9wYWNrZXQ6 CiAgICAgK0BAIGZmdG9vbHMvZmZtcGVnLmM6IHN0YXRpYyBpbnQgdHJhbnNjb2RlKHZvaWQpCiAg ICAgKyAgICAgLyogYXQgdGhlIGVuZCBvZiBzdHJlYW0sIHdlIG11c3QgZmx1c2ggdGhlIGRlY29k ZXIgYnVmZmVycyAqLwogICAgICsgICAgIGZvciAoaSA9IDA7IGkgPCBuYl9pbnB1dF9zdHJlYW1z OyBpKyspIHsKICAgICArICAgICAgICAgaXN0ID0gaW5wdXRfc3RyZWFtc1tpXTsKICAgICArKyAg ICAgICAgaXN0LT5zdWJ0aXRsZV9raWNrb2ZmLmlzX2FjdGl2ZSA9IDA7CiAgICAgKyAgICAgICAg IGlmICghaW5wdXRfZmlsZXNbaXN0LT5maWxlX2luZGV4XS0+ZW9mX3JlYWNoZWQpIHsKICAgICAr ICAgICAgICAgICAgIHByb2Nlc3NfaW5wdXRfcGFja2V0KGlzdCwgTlVMTCwgMCk7CiAgICAgKyAg ICAgICAgIH0KICAgICAgCiAgICAgICAjIyBmZnRvb2xzL2ZmbXBlZy5oICMjCiAgICAgIEBAIGZm dG9vbHMvZmZtcGVnLmg6IHR5cGVkZWYgc3RydWN0IElucHV0U3RyZWFtIHsKICAgICBAQCBmZnRv b2xzL2ZmbXBlZy5oOiB0eXBlZGVmIHN0cnVjdCBJbnB1dFN0cmVhbSB7CiAgICAgICAgICAgfSBw cmV2X3N1YjsKICAgICAgIAogICAgICAtICAgIHN0cnVjdCBzdWIydmlkZW8gewogICAgIC0tICAg ICAgICBpbnQ2NF90IGxhc3RfcHRzOwogICAgICsrICAgIHN0cnVjdCBzdWJ0aXRsZV9raWNrb2Zm IHsKICAgICArKyAgICAgICAgaW50IGlzX2FjdGl2ZTsKICAgICArICAgICAgICAgaW50NjRfdCBs YXN0X3B0czsKICAgICAgLSAgICAgICAgaW50NjRfdCBlbmRfcHRzOwogICAgIC0tICAgICAgICBB VkZpZm9CdWZmZXIgKnN1Yl9xdWV1ZTsgICAgLy8vPCBxdWV1ZSBvZiBBVlN1YnRpdGxlKiBiZWZv cmUgZmlsdGVyIGluaXQKICAgICArLSAgICAgICAgQVZGaWZvICpzdWJfcXVldWU7ICAgIC8vLzwg cXVldWUgb2YgQVZTdWJ0aXRsZSogYmVmb3JlIGZpbHRlciBpbml0CiAgICAgIC0gICAgICAgIEFW RnJhbWUgKmZyYW1lOwogICAgIC0tICAgICAgICBpbnQgdywgaDsKICAgICArICAgICAgICAgaW50 IHcsIGg7CiAgICAgIC0gICAgICAgIHVuc2lnbmVkIGludCBpbml0aWFsaXplOyAvLy88IG1hcmtz IGlmIHN1YjJ2aWRlb191cGRhdGUgc2hvdWxkIGZvcmNlIGFuIGluaXRpYWxpemF0aW9uCiAgICAg IC0gICAgfSBzdWIydmlkZW87CiAgICAgKysgICAgfSBzdWJ0aXRsZV9raWNrb2ZmOwogICAgICsr CiAgICAgICsgICAgQVZCdWZmZXJSZWYgKnN1YnRpdGxlX2hlYWRlcjsKICAgICAgIAogICAgICAg ICAgIC8qIGRlY29kZWQgZGF0YSBmcm9tIHRoaXMgc3RyZWFtIGdvZXMgaW50byBhbGwgdGhvc2Ug ZmlsdGVycwogICAgICAgICAgICAqIGN1cnJlbnRseSB2aWRlbyBhbmQgYXVkaW8gb25seSAqLwog ICAgICtAQCBmZnRvb2xzL2ZmbXBlZy5oOiB0eXBlZGVmIHN0cnVjdCBPdXRwdXRTdHJlYW0gewog ICAgICsgICAgIGludDY0X3QgZmlyc3RfcHRzOwogICAgICsgICAgIC8qIGR0cyBvZiB0aGUgbGFz dCBwYWNrZXQgc2VudCB0byB0aGUgbXV4ZXIgKi8KICAgICArICAgICBpbnQ2NF90IGxhc3RfbXV4 X2R0czsKICAgICArKyAgICAvKiBzdWJ0aXRsZV9wdHMgdmFsdWVzIG9mIHRoZSBsYXN0IHN1YnRp dGxlIGZyYW1lIGhhdmluZyBhcnJpdmVkIGZvciBlbmNvZGluZyAqLwogICAgICsrICAgIGludDY0 X3QgbGFzdF9zdWJ0aXRsZV9wdHM7CiAgICAgKyAgICAgLy8gdGhlIHRpbWViYXNlIG9mIHRoZSBw YWNrZXRzIHNlbnQgdG8gdGhlIG11eGVyCiAgICAgKyAgICAgQVZSYXRpb25hbCBtdXhfdGltZWJh c2U7CiAgICAgKyAgICAgQVZSYXRpb25hbCBlbmNfdGltZWJhc2U7CiAgICAgIEBAIGZmdG9vbHMv ZmZtcGVnLmg6IGludCBmaWx0ZXJncmFwaF9pc19zaW1wbGUoRmlsdGVyR3JhcGggKmZnKTsKICAg ICAgIGludCBpbml0X3NpbXBsZV9maWx0ZXJncmFwaChJbnB1dFN0cmVhbSAqaXN0LCBPdXRwdXRT dHJlYW0gKm9zdCk7CiAgICAgICBpbnQgaW5pdF9jb21wbGV4X2ZpbHRlcmdyYXBoKEZpbHRlckdy YXBoICpmZyk7CiAgICAgQEAgZmZ0b29scy9mZm1wZWdfZmlsdGVyLmM6IHN0YXRpYyB2b2lkIGlu aXRfaW5wdXRfZmlsdGVyKEZpbHRlckdyYXBoICpmZywgQVZGaWx0ZXIKICAgICAgICAgICAgICAg ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgIGlmIChjaGVja19zdHJlYW1fc3Bl Y2lmaWVyKHMsIHMtPnN0cmVhbXNbaV0sICpwID09ICc6JyA/IHAgKyAxIDogcCkgPT0gMSkgewog ICAgICAgICAgICAgICAgICAgICAgIHN0ID0gcy0+c3RyZWFtc1tpXTsKICAgICAtQEAgZmZ0b29s cy9mZm1wZWdfZmlsdGVyLmM6IHN0YXRpYyB2b2lkIGluaXRfaW5wdXRfZmlsdGVyKEZpbHRlckdy YXBoICpmZywgQVZGaWx0ZXJJbk91dCAqaW4pCiAgICAgLSAgICAgaWZpbHRlci0+dHlwZSAgID0g aXN0LT5zdC0+Y29kZWNwYXItPmNvZGVjX3R5cGU7CiAgICAgLSAgICAgaWZpbHRlci0+bmFtZSAg ID0gZGVzY3JpYmVfZmlsdGVyX2xpbmsoZmcsIGluLCAxKTsKICAgICAtIAogICAgIC0rICAgIGlm IChpc3QtPnN0LT5jb2RlY3Bhci0+Y29kZWNfdHlwZSA9PSBBVk1FRElBX1RZUEVfU1VCVElUTEUg JiYgaXN0LT5kZWNfY3R4KSB7CiAgICAgLSsgICAgICAgIGNvbnN0IEFWQ29kZWNEZXNjcmlwdG9y ICpjb2RlY19kZXNjcmlwdG9yID0gaXN0LT5kZWNfY3R4LT5jb2RlY19kZXNjcmlwdG9yOwogICAg IC0rICAgICAgICBpZiAoIWNvZGVjX2Rlc2NyaXB0b3IpCiAgICAgLSsgICAgICAgICAgICBjb2Rl Y19kZXNjcmlwdG9yID0gYXZjb2RlY19kZXNjcmlwdG9yX2dldChpc3QtPmRlY19jdHgtPmNvZGVj X2lkKTsKICAgICAtKwogICAgIC0rICAgICAgICAvLyBGb3Igc3VidGl0bGVzLCB3ZSBuZWVkIHRv IHNldCB0aGUgZm9ybWF0IGhlcmUuIFdvdWxkIHdlIGxlYXZlIHRoZSBmb3JtYXQKICAgICAtKyAg ICAgICAgLy8gYXQgLTEsIGl0IHdvdWxkIGRlbGF5IHByb2Nlc3NpbmcgKGlmaWx0ZXJfaGFzX2Fs bF9pbnB1dF9mb3JtYXRzKCkpIHVudGlsCiAgICAgLSsgICAgICAgIC8vIHRoZSBmaXJzdCBzdWJ0 aWxlIGZyYW1lIGFycml2ZXMsIHdoaWNoIGNvdWxkIG5ldmVyIGhhcHBlbiBpbiB0aGUgd29yc3Qg Y2FzZQogICAgIC0rICAgICAgICBmZy0+aW5wdXRzW2ZnLT5uYl9pbnB1dHMgLSAxXS0+Zm9ybWF0 ID0gYXZjb2RlY19kZXNjcmlwdG9yX2dldF9zdWJ0aXRsZV9mb3JtYXQoY29kZWNfZGVzY3JpcHRv cik7CiAgICAgLSsgICAgfQogICAgIC0rCiAgICAgLSAgICAgaWZpbHRlci0+ZnJhbWVfcXVldWUg PSBhdl9maWZvX2FsbG9jKDggKiBzaXplb2YoQVZGcmFtZSopKTsKICAgICAtICAgICBpZiAoIWlm aWx0ZXItPmZyYW1lX3F1ZXVlKQogICAgIC0gICAgICAgICBleGl0X3Byb2dyYW0oMSk7CiAgICAg IEBAIGZmdG9vbHMvZmZtcGVnX2ZpbHRlci5jOiBzdGF0aWMgaW50IGluc2VydF9maWx0ZXIoQVZG aWx0ZXJDb250ZXh0ICoqbGFzdF9maWx0ZXIsIGludCAqcGFkX2lkeCwKICAgICAgICAgICByZXR1 cm4gMDsKICAgICAgIH0KICAgICBAQCBmZnRvb2xzL2ZmbXBlZ19maWx0ZXIuYzogdm9pZCBjaGVj a19maWx0ZXJfb3V0cHV0cyh2b2lkKQogICAgICArICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZB TCk7CiAgICAgICsgICAgICAgIGdvdG8gZmFpbDsKICAgICAgKyAgICB9CiAgICAgKysKICAgICAr KyAgICBpZiAoaXN0LT5zdC0+Y29kZWNwYXItPmNvZGVjX3R5cGUgPT0gQVZNRURJQV9UWVBFX1NV QlRJVExFICYmIGlzdC0+ZGVjX2N0eCkgewogICAgICsrICAgICAgICAvLyBGb3Igc3VidGl0bGVz LCB3ZSBuZWVkIHRvIHNldCB0aGUgZm9ybWF0IGhlcmUuIFdvdWxkIHdlIGxlYXZlIHRoZSBmb3Jt YXQKICAgICArKyAgICAgICAgLy8gYXQgLTEsIGl0IHdvdWxkIGRlbGF5IHByb2Nlc3NpbmcgKGlm aWx0ZXJfaGFzX2FsbF9pbnB1dF9mb3JtYXRzKCkpIHVudGlsCiAgICAgKysgICAgICAgIC8vIHRo ZSBmaXJzdCBzdWJ0aWxlIGZyYW1lIGFycml2ZXMsIHdoaWNoIGNvdWxkIG5ldmVyIGhhcHBlbiBp biB0aGUgd29yc3QgY2FzZQogICAgICsrICAgICAgICBpZmlsdGVyLT5mb3JtYXQgPSAodWludDE2 X3QpaXN0LT5kZWNfY3R4LT5zdWJ0aXRsZV90eXBlOwogICAgICsrICAgIH0KICAgICArKwogICAg ICsrICAgIGlzdC0+c3VidGl0bGVfa2lja29mZi5pc19hY3RpdmUgPSAxOwogICAgICAgCiAgICAg IC0gICAgLyogQ29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgY2FudmFzIGZvciB0aGUgc3VidGl0bGVz IHN0cmVhbS4KICAgICAgLSAgICAgICBJZiB0aGUgc3VidGl0bGVzIGNvZGVjcGFyIGhhcyBzZXQg YSBzaXplLCB1c2UgaXQuIE90aGVyd2lzZSB1c2UgdGhlCiAgICAgQEAgZmZ0b29scy9mZm1wZWdf ZmlsdGVyLmM6IHZvaWQgY2hlY2tfZmlsdGVyX291dHB1dHModm9pZCkKICAgICAgLSAgICAgICAg YXZfbG9nKGF2ZiwgQVZfTE9HX0lORk8sICJzdWIydmlkZW86IHVzaW5nICVkeCVkIGNhbnZhc1xu IiwgdywgaCk7CiAgICAgICsgICAgICAgIHcgPSBpc3QtPmRlY19jdHgtPndpZHRoOwogICAgICAr ICAgICAgICBoID0gaXN0LT5kZWNfY3R4LT5oZWlnaHQ7CiAgICAgLSAgICAgfQogICAgIC0tICAg IGlzdC0+c3ViMnZpZGVvLncgPSBpZmlsdGVyLT53aWR0aCAgPSB3OwogICAgIC0tICAgIGlzdC0+ c3ViMnZpZGVvLmggPSBpZmlsdGVyLT5oZWlnaHQgPSBoOwogICAgIC0gCiAgICAgLS0gICAgaWZp bHRlci0+d2lkdGggID0gaXN0LT5kZWNfY3R4LT53aWR0aCAgPyBpc3QtPmRlY19jdHgtPndpZHRo ICA6IGlzdC0+c3ViMnZpZGVvLnc7CiAgICAgLS0gICAgaWZpbHRlci0+aGVpZ2h0ID0gaXN0LT5k ZWNfY3R4LT5oZWlnaHQgPyBpc3QtPmRlY19jdHgtPmhlaWdodCA6IGlzdC0+c3ViMnZpZGVvLmg7 CiAgICAgKysgICAgfQogICAgICsrCiAgICAgICsgICAgaWYgKCEodyAmJiBoKSAmJiBpc3QtPmRl Y19jdHgtPnN1YnRpdGxlX2hlYWRlcikgewogICAgICArICAgICAgICBBU1NTcGxpdENvbnRleHQg KmFzc19jdHggPSBhdnByaXZfYXNzX3NwbGl0KChjaGFyICopaXN0LT5kZWNfY3R4LT5zdWJ0aXRs ZV9oZWFkZXIpOwogICAgICArICAgICAgICBBU1MgKmFzcyA9IChBU1MgKilhc3NfY3R4OwogICAg ICArICAgICAgICB3ID0gYXNzLT5zY3JpcHRfaW5mby5wbGF5X3Jlc194OwogICAgICArICAgICAg ICBoID0gYXNzLT5zY3JpcHRfaW5mby5wbGF5X3Jlc195OwogICAgICArICAgICAgICBhdnByaXZf YXNzX3NwbGl0X2ZyZWUoYXNzX2N0eCk7CiAgICAgLSsgICAgfQogICAgICsgICAgIH0KICAgICAr LSAgICBpc3QtPnN1YjJ2aWRlby53ID0gaWZpbHRlci0+d2lkdGggID0gdzsKICAgICArLSAgICBp c3QtPnN1YjJ2aWRlby5oID0gaWZpbHRlci0+aGVpZ2h0ID0gaDsKICAgICArIAogICAgICstICAg IGlmaWx0ZXItPndpZHRoICA9IGlzdC0+ZGVjX2N0eC0+d2lkdGggID8gaXN0LT5kZWNfY3R4LT53 aWR0aCAgOiBpc3QtPnN1YjJ2aWRlby53OwogICAgICstICAgIGlmaWx0ZXItPmhlaWdodCA9IGlz dC0+ZGVjX2N0eC0+aGVpZ2h0ID8gaXN0LT5kZWNfY3R4LT5oZWlnaHQgOiBpc3QtPnN1YjJ2aWRl by5oOwogICAgICsrICAgIGlzdC0+c3VidGl0bGVfa2lja29mZi53ID0gdzsKICAgICArKyAgICBp c3QtPnN1YnRpdGxlX2tpY2tvZmYuaCA9IGg7CiAgICAgKysgICAgYXZfbG9nKGlmaWx0ZXIsIEFW X0xPR19JTkZPLCAic3VidGl0bGUgaW5wdXQgZmlsdGVyOiBkZWNvZGluZyBzaXplICVkeCVkXG4i LCBpc3QtPnN1YnRpdGxlX2tpY2tvZmYudywgaXN0LT5zdWJ0aXRsZV9raWNrb2ZmLmgpOwogICAg ICAgCiAgICAgIC0gICAgLyogcmVjdGFuZ2xlcyBhcmUgQVZfUElYX0ZNVF9QQUw4LCBidXQgd2Ug aGF2ZSBubyBndWFyYW50ZWUgdGhhdCB0aGUKICAgICAgLSAgICAgICBwYWxldHRlcyBmb3IgYWxs IHJlY3RhbmdsZXMgYXJlIGlkZW50aWNhbCBvciBjb21wYXRpYmxlICovCiAgICAgQEAgZmZ0b29s cy9mZm1wZWdfZmlsdGVyLmM6IHZvaWQgY2hlY2tfZmlsdGVyX291dHB1dHModm9pZCkKICAgICAg LSAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKICAgICAgLSAgICBpc3QtPnN1YjJ2aWRl by5sYXN0X3B0cyA9IElOVDY0X01JTjsKICAgICAgLSAgICBpc3QtPnN1YjJ2aWRlby5lbmRfcHRz ICA9IElOVDY0X01JTjsKICAgICArKyAgICBpc3QtPnN1YnRpdGxlX2tpY2tvZmYubGFzdF9wdHMg PSBJTlQ2NF9NSU47CiAgICAgKysKICAgICAgKyAgICBzbnByaW50ZihuYW1lLCBzaXplb2YobmFt ZSksICJncmFwaCAlZCBzdWJ0aXRsZSBpbnB1dCBmcm9tIHN0cmVhbSAlZDolZCIsIGZnLT5pbmRl eCwKICAgICAgKyAgICAgICAgICAgICBpc3QtPmZpbGVfaW5kZXgsIGlzdC0+c3QtPmluZGV4KTsK ICAgICAgKwogICAgIEBAIGZmdG9vbHMvZmZtcGVnX2ZpbHRlci5jOiB2b2lkIGNoZWNrX2ZpbHRl cl9vdXRwdXRzKHZvaWQpCiAgICAgICsgICAgaWYgKChyZXQgPSBhdmZpbHRlcl9ncmFwaF9jcmVh dGVfZmlsdGVyKCZpZmlsdGVyLT5maWx0ZXIsIGJ1ZmZlcl9maWx0LCBuYW1lLAogICAgICArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnN0ciwgTlVMTCwg ZmctPmdyYXBoKSkgPCAwKQogICAgICArICAgICAgICBnb3RvIGZhaWw7CiAgICAgLSsKICAgICAr IAogICAgICstICAgIC8qIHN1YjJ2aWRlbyBzdHJ1Y3R1cmUgaGFzIGJlZW4gKHJlLSlpbml0aWFs aXplZC4KICAgICArLSAgICAgICBNYXJrIGl0IGFzIHN1Y2ggc28gdGhhdCB0aGUgc3lzdGVtIHdp bGwgYmUKICAgICArLSAgICAgICBpbml0aWFsaXplZCB3aXRoIHRoZSBmaXJzdCByZWNlaXZlZCBo ZWFydGJlYXQuICovCiAgICAgKy0gICAgaXN0LT5zdWIydmlkZW8uaW5pdGlhbGl6ZSA9IDE7CiAg ICAgICsgICAgcGFyLT5od19mcmFtZXNfY3R4ID0gaWZpbHRlci0+aHdfZnJhbWVzX2N0eDsKICAg ICAgKyAgICBwYXItPmZvcm1hdCA9IGlmaWx0ZXItPmZvcm1hdDsKICAgICAgKyAgICBwYXItPndp ZHRoID0gaWZpbHRlci0+d2lkdGg7CiAgICAgQEAgZmZ0b29scy9mZm1wZWdfZmlsdGVyLmM6IHZv aWQgY2hlY2tfZmlsdGVyX291dHB1dHModm9pZCkKICAgICAgKyAgICAgICAgICAgIGlmIChyZXQg PCAwKQogICAgICArICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICsgICAgICAgIH0K ICAgICAtIAogICAgIC0tICAgIC8qIHN1YjJ2aWRlbyBzdHJ1Y3R1cmUgaGFzIGJlZW4gKHJlLSlp bml0aWFsaXplZC4KICAgICAtLSAgICAgICBNYXJrIGl0IGFzIHN1Y2ggc28gdGhhdCB0aGUgc3lz dGVtIHdpbGwgYmUKICAgICAtLSAgICAgICBpbml0aWFsaXplZCB3aXRoIHRoZSBmaXJzdCByZWNl aXZlZCBoZWFydGJlYXQuICovCiAgICAgLS0gICAgaXN0LT5zdWIydmlkZW8uaW5pdGlhbGl6ZSA9 IDE7CiAgICAgKysKICAgICAgKyAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19JTkZPLCAiQXV0 by1pbnNlcnRpbmcgZ3JhcGhpY3N1YjJ2aWRlbyBmaWx0ZXJcbiIpOwogICAgICArICAgICAgICBy ZXQgPSBpbnNlcnRfZmlsdGVyKCZsYXN0X2ZpbHRlciwgJnBhZF9pZHgsICJncmFwaGljc3ViMnZp ZGVvIiwgTlVMTCk7CiAgICAgICsgICAgICAgIGlmIChyZXQgPCAwKQogICAgIEBAIGZmdG9vbHMv ZmZtcGVnX2ZpbHRlci5jOiBzdGF0aWMgaW50IGNvbmZpZ3VyZV9pbnB1dF9maWx0ZXIoRmlsdGVy R3JhcGggKmZnLCBJbnB1CiAgICAgICAgICAgZGVmYXVsdDogYXZfYXNzZXJ0MCgwKTsgcmV0dXJu IDA7CiAgICAgICAgICAgfQogICAgICAgfQogICAgICtAQCBmZnRvb2xzL2ZmbXBlZ19maWx0ZXIu Yzogc3RhdGljIHZvaWQgY2xlYW51cF9maWx0ZXJncmFwaChGaWx0ZXJHcmFwaCAqZmcpCiAgICAg KyBzdGF0aWMgaW50IGZpbHRlcl9pc19idWZmZXJzcmMoY29uc3QgQVZGaWx0ZXJDb250ZXh0ICpm KQogICAgICsgewogICAgICsgICAgIHJldHVybiBmLT5uYl9pbnB1dHMgPT0gMCAmJgogICAgICst ICAgICAgICAgICAoIXN0cmNtcChmLT5maWx0ZXItPm5hbWUsICJidWZmZXIiKSB8fAogICAgICst ICAgICAgICAgICAgIXN0cmNtcChmLT5maWx0ZXItPm5hbWUsICJhYnVmZmVyIikpOwogICAgICsr ICAgICAgICAgICAoIXN0cmNtcChmLT5maWx0ZXItPm5hbWUsICJidWZmZXJzcmMiKSB8fAogICAg ICsrICAgICAgICAgICAgIXN0cmNtcChmLT5maWx0ZXItPm5hbWUsICJhYnVmZmVyc3JjIikgfHwK ICAgICArKyAgICAgICAgICAgICFzdHJjbXAoZi0+ZmlsdGVyLT5uYW1lLCAic2J1ZmZlcnNyYyIp KTsKICAgICArIH0KICAgICArIAogICAgICsgc3RhdGljIGludCBncmFwaF9pc19tZXRhKEFWRmls dGVyR3JhcGggKmdyYXBoKQogICAgICBAQCBmZnRvb2xzL2ZmbXBlZ19maWx0ZXIuYzogaW50IGNv bmZpZ3VyZV9maWx0ZXJncmFwaChGaWx0ZXJHcmFwaCAqZmcpCiAgICAgICAgICAgICAgIH0KICAg ICAgICAgICB9CiAgICAgQEAgZmZ0b29scy9mZm1wZWdfZmlsdGVyLmM6IGludCBjb25maWd1cmVf ZmlsdGVyZ3JhcGgoRmlsdGVyR3JhcGggKmZnKQogICAgICAtICAgIGZvciAoaSA9IDA7IGkgPCBm Zy0+bmJfaW5wdXRzOyBpKyspIHsKICAgICAgLSAgICAgICAgSW5wdXRTdHJlYW0gKmlzdCA9IGZn LT5pbnB1dHNbaV0tPmlzdDsKICAgICAgLSAgICAgICAgaWYgKGlzdC0+c3ViMnZpZGVvLnN1Yl9x dWV1ZSAmJiBpc3QtPnN1YjJ2aWRlby5mcmFtZSkgewogICAgIC0tICAgICAgICAgICAgd2hpbGUg KGF2X2ZpZm9fc2l6ZShpc3QtPnN1YjJ2aWRlby5zdWJfcXVldWUpKSB7CiAgICAgLS0gICAgICAg ICAgICAgICAgQVZTdWJ0aXRsZSB0bXA7CiAgICAgLS0gICAgICAgICAgICAgICAgYXZfZmlmb19n ZW5lcmljX3JlYWQoaXN0LT5zdWIydmlkZW8uc3ViX3F1ZXVlLCAmdG1wLCBzaXplb2YodG1wKSwg TlVMTCk7CiAgICAgKy0gICAgICAgICAgICBBVlN1YnRpdGxlIHRtcDsKICAgICArLSAgICAgICAg ICAgIHdoaWxlIChhdl9maWZvX3JlYWQoaXN0LT5zdWIydmlkZW8uc3ViX3F1ZXVlLCAmdG1wLCAx KSA+PSAwKSB7CiAgICAgIC0gICAgICAgICAgICAgICAgc3ViMnZpZGVvX3VwZGF0ZShpc3QsIElO VDY0X01JTiwgJnRtcCk7CiAgICAgIC0gICAgICAgICAgICAgICAgYXZzdWJ0aXRsZV9mcmVlKCZ0 bXApOwogICAgICAtICAgICAgICAgICAgfQogICAgIEBAIGZmdG9vbHMvZmZtcGVnX2ZpbHRlci5j OiBpbnQgY29uZmlndXJlX2ZpbHRlcmdyYXBoKEZpbHRlckdyYXBoICpmZykKICAgICAgIAogICAg ICAgZmFpbDoKICAgICAgQEAgZmZ0b29scy9mZm1wZWdfZmlsdGVyLmM6IGludCBpZmlsdGVyX3Bh cmFtZXRlcnNfZnJvbV9mcmFtZShJbnB1dEZpbHRlciAqaWZpbHRlciwgY29uc3QgQVZGcmFtZSAq ZnJhbWUpCiAgICAgLSAgICAgaWZpbHRlci0+c2FtcGxlX3JhdGUgICAgICAgICA9IGZyYW1lLT5z YW1wbGVfcmF0ZTsKICAgICAtICAgICBpZmlsdGVyLT5jaGFubmVscyAgICAgICAgICAgID0gZnJh bWUtPmNoYW5uZWxzOwogICAgIC0gICAgIGlmaWx0ZXItPmNoYW5uZWxfbGF5b3V0ICAgICAgPSBm cmFtZS0+Y2hhbm5lbF9sYXlvdXQ7CiAgICAgKyAgICAgaWZpbHRlci0+d2lkdGggICAgICAgICAg ICAgICA9IGZyYW1lLT53aWR0aDsKICAgICArICAgICBpZmlsdGVyLT5oZWlnaHQgICAgICAgICAg ICAgID0gZnJhbWUtPmhlaWdodDsKICAgICArICAgICBpZmlsdGVyLT5zYW1wbGVfYXNwZWN0X3Jh dGlvID0gZnJhbWUtPnNhbXBsZV9hc3BlY3RfcmF0aW87CiAgICAgICsgICAgaWZpbHRlci0+dHlw ZSAgICAgICAgICAgICAgICA9IGZyYW1lLT50eXBlOwogICAgICAgCiAgICAgLSAgICAgYXZfZnJl ZXAoJmlmaWx0ZXItPmRpc3BsYXltYXRyaXgpOwogICAgIC0gICAgIHNkID0gYXZfZnJhbWVfZ2V0 X3NpZGVfZGF0YShmcmFtZSwgQVZfRlJBTUVfREFUQV9ESVNQTEFZTUFUUklYKTsKICAgICArICAg ICBpZmlsdGVyLT5zYW1wbGVfcmF0ZSAgICAgICAgID0gZnJhbWUtPnNhbXBsZV9yYXRlOwogICAg ICsgICAgIHJldCA9IGF2X2NoYW5uZWxfbGF5b3V0X2NvcHkoJmlmaWx0ZXItPmNoX2xheW91dCwg JmZyYW1lLT5jaF9sYXlvdXQpOwogICAgICAKICAgICAgICMjIGZmdG9vbHMvZmZtcGVnX2h3LmMg IyMKICAgICAgQEAgZmZ0b29scy9mZm1wZWdfaHcuYzogaW50IGh3X2RldmljZV9zZXR1cF9mb3Jf ZW5jb2RlKE91dHB1dFN0cmVhbSAqb3N0KQogICAgIEBAIGZmdG9vbHMvZmZtcGVnX2h3LmM6IGlu dCBod19kZXZpY2Vfc2V0dXBfZm9yX2VuY29kZShPdXRwdXRTdHJlYW0gKm9zdCkKICAgICAgICAg ICAgICAgICAgICgoQVZIV0ZyYW1lc0NvbnRleHQqKWZyYW1lc19yZWYtPmRhdGEpLT5mb3JtYXQg PT0KICAgICAgCiAgICAgICAjIyBmZnRvb2xzL2ZmbXBlZ19vcHQuYyAjIwogICAgICtAQCBmZnRv b2xzL2ZmbXBlZ19vcHQuYzogc3RhdGljIHZvaWQgYWRkX2lucHV0X3N0cmVhbXMoT3B0aW9uc0Nv bnRleHQgKm8sIEFWRm9ybWF0Q29udGV4dCAqaWMpCiAgICAgKyAgICAgICAgICAgICAgICAgYXZf bG9nKE5VTEwsIEFWX0xPR19GQVRBTCwgIkludmFsaWQgY2FudmFzIHNpemU6ICVzLlxuIiwgY2Fu dmFzX3NpemUpOwogICAgICsgICAgICAgICAgICAgICAgIGV4aXRfcHJvZ3JhbSgxKTsKICAgICAr ICAgICAgICAgICAgIH0KICAgICArKyAgICAgICAgICAgIGlzdC0+c3VidGl0bGVfa2lja29mZi5p c19hY3RpdmUgPSAxOwogICAgICsgICAgICAgICAgICAgYnJlYWs7CiAgICAgKyAgICAgICAgIH0K ICAgICArICAgICAgICAgY2FzZSBBVk1FRElBX1RZUEVfQVRUQUNITUVOVDoKICAgICAgQEAgZmZ0 b29scy9mZm1wZWdfb3B0LmM6IHN0YXRpYyB2b2lkIGluaXRfb3V0cHV0X2ZpbHRlcihPdXRwdXRG aWx0ZXIgKm9maWx0ZXIsIE9wdGlvbnNDb250ZXh0ICpvLAogICAgICAgICAgIHN3aXRjaCAob2Zp bHRlci0+dHlwZSkgewogICAgICAgICAgIGNhc2UgQVZNRURJQV9UWVBFX1ZJREVPOiBvc3QgPSBu ZXdfdmlkZW9fc3RyZWFtKG8sIG9jLCAtMSk7IGJyZWFrOwogICAgIEBAIHRlc3RzL3JlZi9mYXRl L3N1YjJ2aWRlbwogICAgICArMCwgICAgICAgIDI1NCwgICAgICAgIDI1NCwgICAgICAgIDEsICAg NTE4NDAwLCAweDdhMTFjODEyCiAgICAgICswLCAgICAgICAgMjU1LCAgICAgICAgMjU1LCAgICAg ICAgMSwgICA1MTg0MDAsIDB4N2ExMWM4MTIKICAgICAgKzAsICAgICAgICAyNTYsICAgICAgICAy NTYsICAgICAgICAxLCAgIDUxODQwMCwgMHg3YTExYzgxMgogICAgIC0rMCwgICAgICAgIDI1Nywg ICAgICAgIDI1NywgICAgICAgIDEsICAgNTE4NDAwLCAweDdhMTFjODEyCiAgICAgKyswLCAgICAg ICAgMjU3LCAgICAgICAgMjU3LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MzRjZGRkZWUKICAgICAg IDEsICAgNTE0MzMwMDAsICAgNTE0MzMwMDAsICAyMzY2MDAwLCAgICAgMzA1OSwgMHhjOTViOGEw NQogICAgICAgMCwgICAgICAgIDI1OCwgICAgICAgIDI1OCwgICAgICAgIDEsICAgNTE4NDAwLCAw eDM0Y2RkZGVlCiAgICAgIC0wLCAgICAgICAgMjY5LCAgICAgICAgMjY5LCAgICAgICAgMSwgICA1 MTg0MDAsIDB4YmFiMTk3ZWEKICAgICBAQCB0ZXN0cy9yZWYvZmF0ZS9zdWIydmlkZW8KICAgICAg KzAsICAgICAgICAyODAsICAgICAgICAyODAsICAgICAgICAxLCAgIDUxODQwMCwgMHg0ZGI0Y2U1 MQogICAgICArMCwgICAgICAgIDI4MSwgICAgICAgIDI4MSwgICAgICAgIDEsICAgNTE4NDAwLCAw eDRkYjRjZTUxCiAgICAgICswLCAgICAgICAgMjgyLCAgICAgICAgMjgyLCAgICAgICAgMSwgICA1 MTg0MDAsIDB4NGRiNGNlNTEKICAgICAtKzAsICAgICAgICAyODMsICAgICAgICAyODMsICAgICAg ICAxLCAgIDUxODQwMCwgMHg0ZGI0Y2U1MQogICAgICsrMCwgICAgICAgIDI4MywgICAgICAgIDI4 MywgICAgICAgIDEsICAgNTE4NDAwLCAweGU2YmMwZWE5CiAgICAgICAxLCAgIDU2NjYzMDAwLCAg IDU2NjYzMDAwLCAgMTI2MjAwMCwgICAgIDEwMTMsIDB4YzlhZTg5YjcKICAgICAgIDAsICAgICAg ICAyODQsICAgICAgICAyODQsICAgICAgICAxLCAgIDUxODQwMCwgMHhlNmJjMGVhOQogICAgICAt MCwgICAgICAgIDI5MCwgICAgICAgIDI5MCwgICAgICAgIDEsICAgNTE4NDAwLCAweGJhYjE5N2Vh CiAgICAgQEAgdGVzdHMvcmVmL2ZhdGUvc3ViMnZpZGVvCiAgICAgICswLCAgICAgICAgMjg3LCAg ICAgICAgMjg3LCAgICAgICAgMSwgICA1MTg0MDAsIDB4ZTZiYzBlYTkKICAgICAgKzAsICAgICAg ICAyODgsICAgICAgICAyODgsICAgICAgICAxLCAgIDUxODQwMCwgMHhlNmJjMGVhOQogICAgICAr MCwgICAgICAgIDI4OSwgICAgICAgIDI4OSwgICAgICAgIDEsICAgNTE4NDAwLCAweGU2YmMwZWE5 CiAgICAgLSswLCAgICAgICAgMjkwLCAgICAgICAgMjkwLCAgICAgICAgMSwgICA1MTg0MDAsIDB4 ZTZiYzBlYTkKICAgICArKzAsICAgICAgICAyOTAsICAgICAgICAyOTAsICAgICAgICAxLCAgIDUx ODQwMCwgMHhhODY0M2FmNwogICAgICAgMSwgICA1ODAxNDAwMCwgICA1ODAxNDAwMCwgIDE2NjEw MDAsICAgICAgOTY5LCAweGUwMTg3OGYwCiAgICAgICAwLCAgICAgICAgMjkxLCAgICAgICAgMjkx LCAgICAgICAgMSwgICA1MTg0MDAsIDB4YTg2NDNhZjcKICAgICAgLTAsICAgICAgICAyOTgsICAg ICAgICAyOTgsICAgICAgICAxLCAgIDUxODQwMCwgMHhiYWIxOTdlYQogICAgIEBAIHRlc3RzL3Jl Zi9mYXRlL3N1YjJ2aWRlbwogICAgICArMCwgICAgICAgIDM1MSwgICAgICAgIDM1MSwgICAgICAg IDEsICAgNTE4NDAwLCAweDM3OGUzZmQwCiAgICAgICswLCAgICAgICAgMzUyLCAgICAgICAgMzUy LCAgICAgICAgMSwgICA1MTg0MDAsIDB4Mzc4ZTNmZDAKICAgICAgKzAsICAgICAgICAzNTMsICAg ICAgICAzNTMsICAgICAgICAxLCAgIDUxODQwMCwgMHgzNzhlM2ZkMAogICAgIC0rMCwgICAgICAg IDM1NCwgICAgICAgIDM1NCwgICAgICAgIDEsICAgNTE4NDAwLCAweDM3OGUzZmQwCiAgICAgKysw LCAgICAgICAgMzU0LCAgICAgICAgMzU0LCAgICAgICAgMSwgICA1MTg0MDAsIDB4YTM3ODI0NjkK ICAgICAgIDEsICAgNzA4MTkwMDAsICAgNzA4MTkwMDAsICAxODY1MDAwLCAgICAgMTcwOSwgMHhi NGQ1YTFiZAogICAgICAgMCwgICAgICAgIDM1NSwgICAgICAgIDM1NSwgICAgICAgIDEsICAgNTE4 NDAwLCAweGEzNzgyNDY5CiAgICAgIC0wLCAgICAgICAgMzYzLCAgICAgICAgMzYzLCAgICAgICAg MSwgICA1MTg0MDAsIDB4YmFiMTk3ZWEKICAgICBAQCB0ZXN0cy9yZWYvZmF0ZS9zdWIydmlkZW8K ICAgICAgKzAsICAgICAgICAzNzEsICAgICAgICAzNzEsICAgICAgICAxLCAgIDUxODQwMCwgMHhi YTIzYTBkNQogICAgICArMCwgICAgICAgIDM3MiwgICAgICAgIDM3MiwgICAgICAgIDEsICAgNTE4 NDAwLCAweGJhMjNhMGQ1CiAgICAgICswLCAgICAgICAgMzczLCAgICAgICAgMzczLCAgICAgICAg MSwgICA1MTg0MDAsIDB4YmEyM2EwZDUKICAgICAtKzAsICAgICAgICAzNzQsICAgICAgICAzNzQs ICAgICAgICAxLCAgIDUxODQwMCwgMHhiYTIzYTBkNQogICAgICsrMCwgICAgICAgIDM3NCwgICAg ICAgIDM3NCwgICAgICAgIDEsICAgNTE4NDAwLCAweDEyOWRlMmY4CiAgICAgICAxLCAgIDc0ODA2 MDAwLCAgIDc0ODA2MDAwLCAgMTgzMTAwMCwgICAgIDIxMTYsIDB4OTY1MTQwOTcKICAgICAgIDAs ICAgICAgICAzNzUsICAgICAgICAzNzUsICAgICAgICAxLCAgIDUxODQwMCwgMHgxMjlkZTJmOAog ICAgICAtMCwgICAgICAgIDM4MywgICAgICAgIDM4MywgICAgICAgIDEsICAgNTE4NDAwLCAweGJh YjE5N2VhCiAgICAgQEAgdGVzdHMvcmVmL2ZhdGUvc3ViMnZpZGVvCiAgICAgICswLCAgICAgICAg Mzg3LCAgICAgICAgMzg3LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MTk3NzJmMGYKICAgICAgKzAs ICAgICAgICAzODgsICAgICAgICAzODgsICAgICAgICAxLCAgIDUxODQwMCwgMHgxOTc3MmYwZgog ICAgICArMCwgICAgICAgIDM4OSwgICAgICAgIDM4OSwgICAgICAgIDEsICAgNTE4NDAwLCAweDE5 NzcyZjBmCiAgICAgLSswLCAgICAgICAgMzkwLCAgICAgICAgMzkwLCAgICAgICAgMSwgICA1MTg0 MDAsIDB4MTk3NzJmMGYKICAgICArKzAsICAgICAgICAzOTAsICAgICAgICAzOTAsICAgICAgICAx LCAgIDUxODQwMCwgMHg1NmY1NGU3MwogICAgICAgMSwgICA3ODA1MTAwMCwgICA3ODA1MTAwMCwg IDE1MjQwMDAsICAgICAgOTg3LCAweDdiOTI3YTI3CiAgICAgICAwLCAgICAgICAgMzkxLCAgICAg ICAgMzkxLCAgICAgICAgMSwgICA1MTg0MDAsIDB4NTZmNTRlNzMKICAgICAgLTAsICAgICAgICAz OTgsICAgICAgICAzOTgsICAgICAgICAxLCAgIDUxODQwMCwgMHhiYWIxOTdlYQogICAgIEBAIHRl c3RzL3JlZi9mYXRlL3N1YjJ2aWRlbwogICAgICArMCwgICAgICAgIDM5NSwgICAgICAgIDM5NSwg ICAgICAgIDEsICAgNTE4NDAwLCAweDU2ZjU0ZTczCiAgICAgICswLCAgICAgICAgMzk2LCAgICAg ICAgMzk2LCAgICAgICAgMSwgICA1MTg0MDAsIDB4NTZmNTRlNzMKICAgICAgKzAsICAgICAgICAz OTcsICAgICAgICAzOTcsICAgICAgICAxLCAgIDUxODQwMCwgMHg1NmY1NGU3MwogICAgIC0rMCwg ICAgICAgIDM5OCwgICAgICAgIDM5OCwgICAgICAgIDEsICAgNTE4NDAwLCAweDU2ZjU0ZTczCiAg ICAgKyswLCAgICAgICAgMzk4LCAgICAgICAgMzk4LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MzAw YjUyNDcKICAgICAgIDEsICAgNzk2NDQwMDAsICAgNzk2NDQwMDAsICAyNjYyMDAwLCAgICAgMjk1 NiwgMHgxOTA3NzhmNwogICAgICAgMCwgICAgICAgIDM5OSwgICAgICAgIDM5OSwgICAgICAgIDEs ICAgNTE4NDAwLCAweDMwMGI1MjQ3CiAgICAgICswLCAgICAgICAgNDAwLCAgICAgICAgNDAwLCAg ICAgICAgMSwgICA1MTg0MDAsIDB4MzAwYjUyNDcKICAgICBAQCB0ZXN0cy9yZWYvZmF0ZS9zdWIy dmlkZW8KICAgICAgKzAsICAgICAgICA0MTEsICAgICAgICA0MTEsICAgICAgICAxLCAgIDUxODQw MCwgMHgzMDBiNTI0NwogICAgICAgMSwgICA4MjM4MDAwMCwgICA4MjM4MDAwMCwgIDI3NjQwMDAs ICAgICAzMDk0LCAweGMwMjFiN2QzCiAgICAgIC0wLCAgICAgICAgNDEyLCAgICAgICAgNDEyLCAg ICAgICAgMSwgICA1MTg0MDAsIDB4YmFiMTk3ZWEKICAgICAtKzAsICAgICAgICA0MTIsICAgICAg ICA0MTIsICAgICAgICAxLCAgIDUxODQwMCwgMHgzMDBiNTI0NwogICAgICsrMCwgICAgICAgIDQx MiwgICAgICAgIDQxMiwgICAgICAgIDEsICAgNTE4NDAwLCAweDZmZDAyOGZhCiAgICAgICAwLCAg ICAgICAgNDEzLCAgICAgICAgNDEzLCAgICAgICAgMSwgICA1MTg0MDAsIDB4NmZkMDI4ZmEKICAg ICAgLTAsICAgICAgICA0MjYsICAgICAgICA0MjYsICAgICAgICAxLCAgIDUxODQwMCwgMHhiYWIx OTdlYQogICAgICArMCwgICAgICAgIDQxNCwgICAgICAgIDQxNCwgICAgICAgIDEsICAgNTE4NDAw LCAweDZmZDAyOGZhCiAgICAgQEAgdGVzdHMvcmVmL2ZhdGUvc3ViMnZpZGVvCiAgICAgICswLCAg ICAgICAgNDIzLCAgICAgICAgNDIzLCAgICAgICAgMSwgICA1MTg0MDAsIDB4NmZkMDI4ZmEKICAg ICAgKzAsICAgICAgICA0MjQsICAgICAgICA0MjQsICAgICAgICAxLCAgIDUxODQwMCwgMHg2ZmQw MjhmYQogICAgICArMCwgICAgICAgIDQyNSwgICAgICAgIDQyNSwgICAgICAgIDEsICAgNTE4NDAw LCAweDZmZDAyOGZhCiAgICAgLSswLCAgICAgICAgNDI2LCAgICAgICAgNDI2LCAgICAgICAgMSwg ICA1MTg0MDAsIDB4NmZkMDI4ZmEKICAgICArKzAsICAgICAgICA0MjYsICAgICAgICA0MjYsICAg ICAgICAxLCAgIDUxODQwMCwgMHgwMWY4MGU5ZAogICAgICAgMSwgICA4NTIyNTAwMCwgICA4NTIy NTAwMCwgIDIzNjYwMDAsICAgICAyNTg1LCAweDc0ZDAwNDhmCiAgICAgICAwLCAgICAgICAgNDI3 LCAgICAgICAgNDI3LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MDFmODBlOWQKICAgICAgLTAsICAg ICAgICA0MzgsICAgICAgICA0MzgsICAgICAgICAxLCAgIDUxODQwMCwgMHhiYWIxOTdlYQogICAg IEBAIHRlc3RzL3JlZi9mYXRlL3N1YjJ2aWRlbwogICAgICArMCwgICAgICAgIDQzNSwgICAgICAg IDQzNSwgICAgICAgIDEsICAgNTE4NDAwLCAweDAxZjgwZTlkCiAgICAgICswLCAgICAgICAgNDM2 LCAgICAgICAgNDM2LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MDFmODBlOWQKICAgICAgKzAsICAg ICAgICA0MzcsICAgICAgICA0MzcsICAgICAgICAxLCAgIDUxODQwMCwgMHgwMWY4MGU5ZAogICAg IC0rMCwgICAgICAgIDQzOCwgICAgICAgIDQzOCwgICAgICAgIDEsICAgNTE4NDAwLCAweDAxZjgw ZTlkCiAgICAgKyswLCAgICAgICAgNDM4LCAgICAgICAgNDM4LCAgICAgICAgMSwgICA1MTg0MDAs IDB4YjQ4ZDkwYzAKICAgICAgIDEsICAgODc2NTIwMDAsICAgODc2NTIwMDAsICAxODMxMDAwLCAg ICAgIDYzNCwgMHg4ODMyZmRhMQogICAgICAgMCwgICAgICAgIDQzOSwgICAgICAgIDQzOSwgICAg ICAgIDEsICAgNTE4NDAwLCAweGI0OGQ5MGMwCiAgICAgIC0wLCAgICAgICAgNDQ3LCAgICAgICAg NDQ3LCAgICAgICAgMSwgICA1MTg0MDAsIDB4YmFiMTk3ZWEKICAgICBAQCB0ZXN0cy9yZWYvZmF0 ZS9zdWIydmlkZW8KICAgICAgKzAsICAgICAgICA0OTEsICAgICAgICA0OTEsICAgICAgICAxLCAg IDUxODQwMCwgMHhiOGEzMjNlNAogICAgICArMCwgICAgICAgIDQ5MiwgICAgICAgIDQ5MiwgICAg ICAgIDEsICAgNTE4NDAwLCAweGI4YTMyM2U0CiAgICAgICswLCAgICAgICAgNDkzLCAgICAgICAg NDkzLCAgICAgICAgMSwgICA1MTg0MDAsIDB4YjhhMzIzZTQKICAgICAtKzAsICAgICAgICA0OTQs ICAgICAgICA0OTQsICAgICAgICAxLCAgIDUxODQwMCwgMHhiOGEzMjNlNAogICAgICsrMCwgICAg ICAgIDQ5NCwgICAgICAgIDQ5NCwgICAgICAgIDEsICAgNTE4NDAwLCAweGM0MzUxOGJhCiAgICAg ICAxLCAgIDk4ODcyMDAwLCAgIDk4ODcyMDAwLCAgMjE2MTAwMCwgICAgIDE4NzUsIDB4OTAwMmVm NzEKICAgICAgIDAsICAgICAgICA0OTUsICAgICAgICA0OTUsICAgICAgICAxLCAgIDUxODQwMCwg MHhjNDM1MThiYQogICAgICAtMCwgICAgICAgIDUwNSwgICAgICAgIDUwNSwgICAgICAgIDEsICAg NTE4NDAwLCAweGJhYjE5N2VhCiAgICAgQEAgdGVzdHMvcmVmL2ZhdGUvc3ViMnZpZGVvCiAgICAg ICswLCAgICAgICAgODQ3LCAgICAgICAgODQ3LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MDNlYTBl OTAKICAgICAgKzAsICAgICAgICA4NDgsICAgICAgICA4NDgsICAgICAgICAxLCAgIDUxODQwMCwg MHgwM2VhMGU5MAogICAgICArMCwgICAgICAgIDg0OSwgICAgICAgIDg0OSwgICAgICAgIDEsICAg NTE4NDAwLCAweDAzZWEwZTkwCiAgICAgLSswLCAgICAgICAgODUwLCAgICAgICAgODUwLCAgICAg ICAgMSwgICA1MTg0MDAsIDB4MDNlYTBlOTAKICAgICArKzAsICAgICAgICA4NTAsICAgICAgICA4 NTAsICAgICAgICAxLCAgIDUxODQwMCwgMHg4NzgwMjM5ZQogICAgICAgMSwgIDE3MDAzNTAwMCwg IDE3MDAzNTAwMCwgIDE1MjQwMDAsICAgICAxMjc5LCAweGI2YzJkYWZlCiAgICAgICAwLCAgICAg ICAgODUxLCAgICAgICAgODUxLCAgICAgICAgMSwgICA1MTg0MDAsIDB4ODc4MDIzOWUKICAgICAg LTAsICAgICAgICA4NTgsICAgICAgICA4NTgsICAgICAgICAxLCAgIDUxODQwMCwgMHhiYWIxOTdl YQogICAgIEBAIHRlc3RzL3JlZi9mYXRlL3N1YjJ2aWRlbwogICAgICArMCwgICAgICAgIDk2MCwg ICAgICAgIDk2MCwgICAgICAgIDEsICAgNTE4NDAwLCAweDU5ZjRlNzJmCiAgICAgICswLCAgICAg ICAgOTYxLCAgICAgICAgOTYxLCAgICAgICAgMSwgICA1MTg0MDAsIDB4NTlmNGU3MmYKICAgICAg KzAsICAgICAgICA5NjIsICAgICAgICA5NjIsICAgICAgICAxLCAgIDUxODQwMCwgMHg1OWY0ZTcy ZgogICAgIC0rMCwgICAgICAgIDk2MywgICAgICAgIDk2MywgICAgICAgIDEsICAgNTE4NDAwLCAw eDU5ZjRlNzJmCiAgICAgKyswLCAgICAgICAgOTYzLCAgICAgICAgOTYzLCAgICAgICAgMSwgICA1 MTg0MDAsIDB4OWQ1YjlkNjkKICAgICAgIDEsICAxOTI2NDAwMDAsICAxOTI2NDAwMDAsICAxNzYz MDAwLCAgICAgMjUwNiwgMHhhNDU4ZDZkNAogICAgICAgMCwgICAgICAgIDk2NCwgICAgICAgIDk2 NCwgICAgICAgIDEsICAgNTE4NDAwLCAweDlkNWI5ZDY5CiAgICAgIC0wLCAgICAgICAgOTcyLCAg ICAgICAgOTcyLCAgICAgICAgMSwgICA1MTg0MDAsIDB4YmFiMTk3ZWEKICAgICBAQCB0ZXN0cy9y ZWYvZmF0ZS9zdWIydmlkZW8KICAgICAgKzAsICAgICAgICA5OTMsICAgICAgICA5OTMsICAgICAg ICAxLCAgIDUxODQwMCwgMHgyNTExMzk2NgogICAgICArMCwgICAgICAgIDk5NCwgICAgICAgIDk5 NCwgICAgICAgIDEsICAgNTE4NDAwLCAweDI1MTEzOTY2CiAgICAgICswLCAgICAgICAgOTk1LCAg ICAgICAgOTk1LCAgICAgICAgMSwgICA1MTg0MDAsIDB4MjUxMTM5NjYKICAgICAtKzAsICAgICAg ICA5OTYsICAgICAgICA5OTYsICAgICAgICAxLCAgIDUxODQwMCwgMHgyNTExMzk2NgogICAgICsr MCwgICAgICAgIDk5NiwgICAgICAgIDk5NiwgICAgICAgIDEsICAgNTE4NDAwLCAweDJkYzgzNjA5 CiAgICAgICAxLCAgMTk5MjMwMDAwLCAgMTk5MjMwMDAwLCAgMTYyNzAwMCwgICAgIDE4NDYsIDB4 ZWVhOGM1OTkKICAgICAgIDAsICAgICAgICA5OTcsICAgICAgICA5OTcsICAgICAgICAxLCAgIDUx ODQwMCwgMHgyZGM4MzYwOQogICAgICAtMCwgICAgICAgMTAwNCwgICAgICAgMTAwNCwgICAgICAg IDEsICAgNTE4NDAwLCAweGJhYjE5N2VhCiAgICAgQEAgdGVzdHMvcmVmL2ZhdGUvc3ViMnZpZGVv CiAgICAgICswLCAgICAgICAxMTM2LCAgICAgICAxMTM2LCAgICAgICAgMSwgICA1MTg0MDAsIDB4 ODFlOTc3YjIKICAgICAgKzAsICAgICAgIDExMzcsICAgICAgIDExMzcsICAgICAgICAxLCAgIDUx ODQwMCwgMHg4MWU5NzdiMgogICAgICArMCwgICAgICAgMTEzOCwgICAgICAgMTEzOCwgICAgICAg IDEsICAgNTE4NDAwLCAweDgxZTk3N2IyCiAgICAgLSswLCAgICAgICAxMTM5LCAgICAgICAxMTM5 LCAgICAgICAgMSwgICA1MTg0MDAsIDB4ODFlOTc3YjIKICAgICArKzAsICAgICAgIDExMzksICAg ICAgIDExMzksICAgICAgICAxLCAgIDUxODQwMCwgMHhiMDQ2ZGQzMAogICAgICAgMSwgIDIyNzgz NDAwMCwgIDIyNzgzNDAwMCwgIDEyNjIwMDAsICAgICAxMjY0LCAweGMxZDlmYzU3CiAgICAgICAw LCAgICAgICAxMTQwLCAgICAgICAxMTQwLCAgICAgICAgMSwgICA1MTg0MDAsIDB4YjA0NmRkMzAK ICAgICAgLTAsICAgICAgIDExNDUsICAgICAgIDExNDUsICAgICAgICAxLCAgIDUxODQwMCwgMHhi YWIxOTdlYQogICAgIEBAIHRlc3RzL3JlZi9mYXRlL3N1YjJ2aWRlb19iYXNpYwogICAgICAtMCwg ICAgICAgODk5NiwgICAgICAgODk5NiwgICAgICAgIDEsICAxMzgyNDAwLCAweGRhMmNlYjU1CiAg ICAgIC0wLCAgICAgICA5MDI3LCAgICAgICA5MDI3LCAgICAgICAgMSwgIDEzODI0MDAsIDB4MDAw MDAwMDAKICAgICAgKyNzYXIgMDogMS8xCiAgICAgLSswLCAgICAgICAgICAwLCAgICAgICAgICAw LCAgICAgICAgMSwgIDEzODI0MDAsIDB4MDAwMDAwMDAKICAgICAgKzAsICAgICAgICA2NjIsICAg ICAgICA2NjIsICAgICAgICAxLCAgMTM4MjQwMCwgMHhjNjM3Yjg5MwogICAgICArMCwgICAgICAg IDY2MywgICAgICAgIDY2MywgICAgICAgIDEsICAxMzgyNDAwLCAweGM2MzdiODkzCiAgICAgICsw LCAgICAgICAgNjY0LCAgICAgICAgNjY0LCAgICAgICAgMSwgIDEzODI0MDAsIDB4YzYzN2I4OTMK ICAgICBAQCB0ZXN0cy9yZWYvZmF0ZS9zdWIydmlkZW9fdGltZV9saW1pdGVkCiAgICAgIC0jc2Fy IDA6IDAvMQogICAgICAtMCwgICAgICAgICAgMiwgICAgICAgICAgMiwgICAgICAgIDEsICA4Mjk0 NDAwLCAweDAwMDAwMDAwCiAgICAgICsjc2FyIDA6IDEvMQogICAgIC0rMCwgICAgICAgICAgMCwg ICAgICAgICAgMCwgICAgICAgIDEsICA4Mjk0NDAwLCAweDAwMDAwMDAwCiAgICAgLSswLCAgICAg ICAgICAxLCAgICAgICAgICAxLCAgICAgICAgMSwgIDgyOTQ0MDAsIDB4MDAwMDAwMDAKICAgICAr KzAsICAgICAgICAgIDAsICAgICAgICAgIDAsICAgICAgICAxLCAgODI5NDQwMCwgMHhhODdjNTE4 ZgogICAgICsrMCwgICAgICAgICAgMSwgICAgICAgICAgMSwgICAgICAgIDEsICA4Mjk0NDAwLCAw eGE4N2M1MThmCiAgICAgICAwLCAgICAgICAgICAyLCAgICAgICAgICAyLCAgICAgICAgMSwgIDgy OTQ0MDAsIDB4YTg3YzUxOGYKICAgICAgKzAsICAgICAgICAgIDMsICAgICAgICAgIDMsICAgICAg ICAxLCAgODI5NDQwMCwgMHhhODdjNTE4ZgogICAgICArMCwgICAgICAgICAgNCwgICAgICAgICAg NCwgICAgICAgIDEsICA4Mjk0NDAwLCAweGE4N2M1MThmCiAyMjogIGQzY2RkMmEwZTIgPCAgLTog IC0tLS0tLS0tLS0gYXZ1dGlsL2Fzc19zcGxpdDogQWRkIHBhcnNpbmcgb2YgaGFyZC1zcGFjZSB0 YWdzIChcaCkKIDIzOiAgNWZjYTU2Njc0OSA8ICAtOiAgLS0tLS0tLS0tLSBhdmNvZGVjL3dlYnZ0 dGVuYzogY29udmVydCBoYXJkLXNwYWNlIHRhZ3MgdG8gJm5ic3A7CiAyNDogIDkzYjQ2OWI4ZDAg PCAgLTogIC0tLS0tLS0tLS0gZG9jL0FQSWNoYW5nZXM6IHVwZGF0ZSBmb3Igc3VidGl0bGUgZmls dGVyaW5nIGNoYW5nZXMKIDI1OiAgMGMyNzk1NTBkNiA8ICAtOiAgLS0tLS0tLS0tLSBhdmNvZGVj L3dlYnZ0dGVuYzogRG9uJ3QgZW5jb2RlIGRyYXdpbmcgY29kZXMgYW5kIGVtcHR5IGxpbmVzCiAy NjogIDAzZTFhOThlMDggISAyMzogIGE2NmRlYmQ5NmUgYXZjb2RlYy9kdmJzdWJkZWM6IEZpeCBj b25kaXRpb25zIGZvciBmYWxsYmFjayB0byBkZWZhdWx0IHJlc29sdXRpb24KICAgICBAQCBsaWJh dmNvZGVjL2R2YnN1YmRlYy5jCiAgICAgICAKICAgICAgICNkZWZpbmUgY20gKGZmX2Nyb3BfdGFi ICsgTUFYX05FR19DUk9QKQogICAgICAgCiAgICAgLUBAIGxpYmF2Y29kZWMvZHZic3ViZGVjLmM6 IHN0YXRpYyBpbnQgZHZic3ViX2RlY29kZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCiAgICAgK0BA IGxpYmF2Y29kZWMvZHZic3ViZGVjLmM6IHN0YXRpYyBpbnQgZHZic3ViX2RlY29kZShBVkNvZGVj Q29udGV4dCAqYXZjdHgsIEFWU3VidGl0bGUgKnN1YiwKICAgICAgICAgICBpbnQgc2VnbWVudF9s ZW5ndGg7CiAgICAgICAgICAgaW50IGk7CiAgICAgICAgICAgaW50IHJldCA9IDA7CiAgICAgQEAg bGliYXZjb2RlYy9kdmJzdWJkZWMuYzogc3RhdGljIGludCBkdmJzdWJfZGVjb2RlKEFWQ29kZWND b250ZXh0ICphdmN0eCwKICAgICAgIAogICAgICAgICAgIGZmX2Rsb2coYXZjdHgsICJEVkIgc3Vi IHBhY2tldDpcbiIpOwogICAgICAgCiAgICAgLUBAIGxpYmF2Y29kZWMvZHZic3ViZGVjLmM6IHN0 YXRpYyBpbnQgZHZic3ViX2RlY29kZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCiAgICAgK0BAIGxp YmF2Y29kZWMvZHZic3ViZGVjLmM6IHN0YXRpYyBpbnQgZHZic3ViX2RlY29kZShBVkNvZGVjQ29u dGV4dCAqYXZjdHgsIEFWU3VidGl0bGUgKnN1YiwKICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo c2VnbWVudF90eXBlKSB7CiAgICAgICAgICAgICAgICAgICBjYXNlIERWQlNVQl9QQUdFX1NFR01F TlQ6CiAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gZHZic3ViX3BhcnNlX3BhZ2Vfc2VnbWVu dChhdmN0eCwgcCwgc2VnbWVudF9sZW5ndGgsIHN1YiwgZ290X3N1Yl9wdHIpOwogICAgIEBAIGxp YmF2Y29kZWMvZHZic3ViZGVjLmM6IHN0YXRpYyBpbnQgZHZic3ViX2RlY29kZShBVkNvZGVjQ29u dGV4dCAqYXZjdHgsCiAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgIGZmX2Rsb2coYXZjdHgsICJTdWJ0 aXRsaW5nIHNlZ21lbnQgdHlwZSAweCV4LCBwYWdlIGlkICVkLCBsZW5ndGggJWRcbiIsCiAgICAg LUBAIGxpYmF2Y29kZWMvZHZic3ViZGVjLmM6IHN0YXRpYyBpbnQgZHZic3ViX2RlY29kZShBVkNv ZGVjQ29udGV4dCAqYXZjdHgsCiAgICAgK0BAIGxpYmF2Y29kZWMvZHZic3ViZGVjLmM6IHN0YXRp YyBpbnQgZHZic3ViX2RlY29kZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWU3VidGl0bGUgKnN1 YiwKICAgICAgIAogICAgICAgICAgICAgICBwICs9IHNlZ21lbnRfbGVuZ3RoOwogICAgICAgICAg IH0KCi0tIApmZm1wZWctY29kZWJvdApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1w ZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoK VG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1y ZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==