Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w6p2q-004gdi-2e for pgsql-hackers@arkaria.postgresql.org; Sun, 29 Mar 2026 12:15:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w6p1q-00GGN9-0X for pgsql-hackers@arkaria.postgresql.org; Sun, 29 Mar 2026 12:14:06 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w6p1p-00GGN1-24 for pgsql-hackers@lists.postgresql.org; Sun, 29 Mar 2026 12:14:06 +0000 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w6p1m-00000001obS-15f7 for pgsql-hackers@postgresql.org; Sun, 29 Mar 2026 12:14:05 +0000 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-358e3cc5e7eso1742428a91.0 for ; Sun, 29 Mar 2026 05:14:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774786440; cv=none; d=google.com; s=arc-20240605; b=dGRY8O+zC+2E6Tq0+gvyB7kp716XlgnT2N9WOH4qvWFJXyqbM/wwhyXecqaCdQiTZ/ rDEv0YtbjI3TQ50ENhztyAbMlDmatPfiOWZSmgmroNqqs7GdeH71w+ttbCAHVj/VUkYL iEeMTQxsPPHh6140o8r3+7UXyDsqxcX78eUWsA+MITYq8FKbQFssKeWej+os/qS5A8dF RIN6v1PaZGRtvKuW7ZdcrnBdypm6eMW+3y7LJUgTJwDylYPfdqOKHrlRlIrA/U+6Igg8 72JNWHEuIZ5FhorJD/WORiWNHsS2zX8wRBjFqQxLSzBop8+K8tw/fDohftK7SeHrlzEU 0DdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:dkim-signature; bh=CQpMeJxQOFknpuAARCXzTGG33fybQ4Xmrh58wKkIRG8=; fh=AxH+AYywsIaUuxDyA5lb3QbXnUpov+7J736wkO4MW1Q=; b=f2BCunXWzm+1ynk7PNdNGRhu26gePWfLyi0FyZkdIW6uVJMooNup7ME4TpVBAtd7Ml 1VkpEG2l5B/4NtglZXF3iM4qUr22G62pNHr/hSuC9cW2dIZ+RKNMdQhb2us5P71o2k6z 5n4FyeEYN/fq27nBcZ//rqm79TdOsMKEw2wD2BrB15igIfWZMh93r1qnN+t4pj02P3+2 ZSu+hQVIb/BbFOjjLHxhA8VZVoisQdE8yNbfWL2WYmJEUp0CQz7ZCYjTc43gr9hLXyrY iikTMt3DMy0zWetYDn8+upiiyKImqpy9dZMitQV/6G2AzpXFAuJl9VZAVc2t/NJQEhzU j9kQ==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774786440; x=1775391240; darn=postgresql.org; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=CQpMeJxQOFknpuAARCXzTGG33fybQ4Xmrh58wKkIRG8=; b=cGP/QreRchZK9fOea69xSZVIAvmXYVAi764JL3Ba4M/IGEKiLBbKFg78ndXa2Tfdkg 1NICQDwb7wf/dmUPdIh7/FowgbnqHhGNqHL4Z3ty8/NhHgmcfcmeGUXRbLzHhBrtOhny XSfR/+2L3Pf+Pl4urHANb58VyCH3QzT/8WwfA5KohM23SIakDFKoQlfz9ND6rvMhq6XH ZuckuV6aZNYTXXryrHvzWDW6OuWW4wbgKI5KHTZATlj+DrKVTzO81mhjkJFAISc1umQk 2Xri/v5D8mMOd2mbvRyli7JHumf9mNulHXOocaJ4nH2NkmLVEOfpAy6DcAmHFXkLbNPZ 9oCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774786440; x=1775391240; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=CQpMeJxQOFknpuAARCXzTGG33fybQ4Xmrh58wKkIRG8=; b=lMcCv4kvXuakRIyazoNgdVf58gTy2eibvPhhXgs5CR4mAGEIQbNskBPuucZRNvsxN1 pOd6T1FR27gyoLaEUYnFr56YL/SX3IaBnrp88v26auJw/3pGzEliJDGZwEk1Cax2lQoV GZZp0Nx9U8LkdphtB/6cLTcaZ1BoJgcPHdTXuR7wQGI3T/P1Q3hYmXEI1K+QW8KNSx2v V/mDndLAkyoPHg9eX9EeBNMu8zwaLfsELNQi7bbA5rB+vtw6ay8IWfVHdu/Xwjrv8ysh OFc0SFbtuftMOBDDMi1no2tU0u7C326h4nyevIK9Xi5TTw1xd7qaVWmfKsAFzEn6T2zR n32g== X-Forwarded-Encrypted: i=1; AJvYcCXqvyxdIrpoyUu3ZboVfoVnnaEUz0IDI9Tj13g2Z4+Pbj9CKoeF/knOQ6SGUiS3dn07wI9Tf5Z1QsjO3Maz@postgresql.org X-Gm-Message-State: AOJu0YzmJ9mQvzaaFJ/A8Xsjb3M3BSaGTojmZASEnZsdqIwFd2hiiugd Fd2clrq0mrSA3CvEmhxKxByAHpRSdQ8lMSS3UgjG2T2hnOFaGLD41lwMyYXOKvsUtWEwc5CMddb wX16fkGofn2QkXP8YwY6vkdGSnzD2Wnc= X-Gm-Gg: ATEYQzyIjnE8hRV6nTLFtqJekrZMqwuo72P57bVd8EHByegJhXmDXnTYLGZX2TWDNiC Z73rFLJngag4JzhbGI89dRhQOP8Ad6wdkfz8Shx7Ku2MMQib5wHYRP+0sMf7jM+moAhVVFPPrUS izhUajxBAKN4ATi72EjNcPD9RHtIYeURmb0jxSHOqvRdC8QIDV5qaELmYisbVVnDOQtcReDsSZW tP/WhDByvTc2DtXpc7gpLx2b/t8YRp473lqjs3y5ZUoDJBYkFXms816DzlRzH1dpDJAx74h54WR PjJgyeyok74DBYl5B733Wh6PK2Yc/mq82SLagd8b X-Received: by 2002:a17:903:46d0:b0:2b2:50e1:f108 with SMTP id d9443c01a7336-2b250e1f633mr7887185ad.49.1774786439921; Sun, 29 Mar 2026 05:13:59 -0700 (PDT) MIME-Version: 1.0 References: <20260321.231629.266287379124559013.ishii@postgresql.org> <20260322.142326.546998002680149319.ishii@postgresql.org> In-Reply-To: <20260322.142326.546998002680149319.ishii@postgresql.org> Reply-To: assam258@gmail.com From: Henson Choi Date: Sun, 29 Mar 2026 21:13:47 +0900 X-Gm-Features: AQROBzAtjbSWi1FR_q6Yya8wyWmuBzXI-Pu97QBG8TstSo2uzYL8sTH4vO27hGU Message-ID: Subject: Re: Row pattern recognition To: Tatsuo Ishii Cc: zsolt.parragi@percona.com, sjjang112233@gmail.com, vik@postgresfriends.org, er@xs4all.nl, jacob.champion@enterprisedb.com, david.g.johnston@gmail.com, peter@eisentraut.org, pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="0000000000004ddbfc064e28ab4c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004ddbfc064e28ab4c Content-Type: multipart/alternative; boundary="0000000000004ddbfc064e28ab4a" --0000000000004ddbfc064e28ab4a Content-Type: text/plain; charset="UTF-8" Hi Tatsuo, Attached are 6 incremental patches on top of v46. 0001-0005 are small independent fixes. 0006 is the main PREV/NEXT navigation redesign that was discussed as the "experimental" implementation in prior messages. Here is a summary of each patch: 0001: Remove unused regex/regex.h include from nodeWindowAgg.c The regex header was left over from an earlier implementation that used the regex engine for pattern matching. The current NFA engine in execRPR.c does not use it. 0002: Add CHECK_FOR_INTERRUPTS() to nfa_add_state_unique() This function iterates through a linked list of NFA states to check for duplicates. In state explosion scenarios (complex patterns with alternations and quantifiers), this list can grow significantly. Without an interrupt check, the loop is unresponsive to query cancellation. 0003: Add CHECK_FOR_INTERRUPTS() to nfa_try_absorb_context() Similar to 0002. The absorption loop iterates through the context chain, which can grow unbounded with streaming window patterns. Each iteration also calls nfa_states_covered() which has its own loop. 0004: Fix in-place modification of defineClause TargetEntry In set_upper_references(), the defineClause TargetEntry was modified in-place by fix_upper_expr() without making a copy first. This follows the same flatCopyTargetEntry() pattern already used for the main targetlist in the same function. 0005: Fix mark handling for last_value() under RPR This is a revised version of the v45 0004 patch that you commented on [1]. You pointed out that suppressing WinSetMarkPosition() entirely under RPR was too strong a limitation, and we agreed to drop it and revisit together with the experimental PREV/NEXT patch. The RPR executor patch changed set_mark from true to false in window_last_value() to avoid mark advancement problems under RPR. But this also penalizes non-RPR queries by preventing tuplestore memory reclamation. The revised approach: restore set_mark=true (upstream default), and add a targeted guard in WinGetFuncArgInFrame() that only suppresses mark advancement for SEEK_TAIL under RPR -- not for all seek types as in v45 0004. Only SEEK_TAIL needs suppression because advancing the mark from the tail could prevent revisiting earlier rows that still fall within a future row's reduced frame. [1] https://www.postgresql.org/message-id/20260321.140232.1947157589839395257.ishii%40postgresql.org 0006: Implement 1-slot PREV/NEXT navigation for RPR This is the main patch. It redesigns PREV/NEXT navigation from the 3-slot model (outer/scan/inner with varno rewriting) to a 1-slot model using expression opcodes. Key changes: - RPRNavExpr: a new expression node type that replaces the previous approach of identifying PREV/NEXT by funcid. The parser transforms PREV/NEXT function calls into RPRNavExpr nodes in ParseFuncOrColumn(). - EEOP_RPR_NAV_SET/RESTORE: two new opcodes that temporarily swap ecxt_outertuple to the target row during expression evaluation. The argument expression evaluates against the swapped slot, then the original slot is restored. This eliminates varno rewriting and naturally supports arbitrary offsets. - 2-argument form: PREV(value, offset) and NEXT(value, offset) are now supported. The offset defaults to 1 if omitted; offset=0 refers to the current row. The offset must be a run-time constant per the SQL standard. - nav_winobj: a dedicated WindowObject with its own tuplestore read pointer, separate from aggregate processing. A mark pointer pinned at position 0 prevents tuplestore truncation so that PREV(expr, N) can reach any prior row. This is conservative -- it retains the entire partition -- but since the standard requires offsets to be run-time constants, we could advance the mark to (currentpos - max_offset) in a future optimization. I'd prefer to defer that until the basic navigation is stable. - Documentation and tests updated. Changes from the experimental version of 0006: - NULL/negative offset error rationale changed from "matching Oracle behavior" to the SQL standard (ISO/IEC 9075-2, Subclause 5.6.2: "There is an exception if the value of the offset is negative or null"). The behavior is the same; only the comment was corrected. - RPRNavKind changed from -1/+1 values to plain enum values. The previous version used kind as an arithmetic multiplier (offset * kind), but this pattern cannot extend to FIRST/LAST which have different position semantics. The new version uses a switch statement with pg_sub/add_s64_overflow instead. - Parser validation walkers consolidated from three separate walkers into a single NavCheckResult struct + nav_check_walker, reducing tree traversals from up to 4 per RPRNavExpr to 1-2. - JIT changed from attempting to compile to explicit interpreter fallback. See item 2 below for the rationale. - Additional test cases for subquery offset (caught by DEFINE-level restriction), first-arg subquery, and first-arg volatile function (allowed per standard). I've reviewed and revised 0006 since the experimental version. I think it is now ready to be included in the next version of the patch set. It passes all existing regression tests (rpr, rpr_base, rpr_explain, rpr_nfa) and adds comprehensive tests for the new functionality. Two items I'd like your opinion on: 1. 0005 (mark handling): The revised approach only suppresses mark advancement for SEEK_TAIL under RPR, unlike v45 0004 which suppressed it for all seek types. Does narrowing to SEEK_TAIL seem reasonable to you, or do you see cases where other seek types could also be affected? 2. LLVM JIT fallback (in 0006): The mid-expression slot swap conflicts with how JIT caches tuple data pointers. The experimental version produced wrong results under jit_above_cost=0, and I have not found a clean fix within the current JIT framework. For now, DEFINE expressions containing PREV/NEXT fall back to the interpreter; other expressions in the same query are still JIT-compiled. I'd like to keep this as-is for now and look for a proper JIT solution over time. Does that sound reasonable? Best regards, Henson --0000000000004ddbfc064e28ab4a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Tatsuo,

Attached are 6 incremen= tal patches on top of v46.

0001-0005 are small independent fixes. 00= 06 is the main
PREV/NEXT navigation redesign that was discussed as the"experimental" implementation in prior messages.

Here is= a summary of each patch:


=C2=A0 0001: Remove unused regex/regex= .h include from nodeWindowAgg.c
=C2=A0 =C2=A0 =C2=A0 =C2=A0 The regex he= ader was left over from an earlier implementation
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 that used the regex engine for pattern matching. The current
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 NFA engine in execRPR.c does not use it.

=C2=A0 0002: Add CHECK_FOR_INTERRUPTS() to nfa_add_state_unique()
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 This function iterates through a linked list of NF= A states
=C2=A0 =C2=A0 =C2=A0 =C2=A0 to check for duplicates. In state e= xplosion scenarios
=C2=A0 =C2=A0 =C2=A0 =C2=A0 (complex patterns with al= ternations and quantifiers), this
=C2=A0 =C2=A0 =C2=A0 =C2=A0 list can g= row significantly. Without an interrupt check,
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 the loop is unresponsive to query cancellation.


=C2=A0 0003:= Add CHECK_FOR_INTERRUPTS() to nfa_try_absorb_context()
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 Similar to 0002. The absorption loop iterates through the
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 context chain, which can grow unbounded with st= reaming
=C2=A0 =C2=A0 =C2=A0 =C2=A0 window patterns. Each iteration also= calls
=C2=A0 =C2=A0 =C2=A0 =C2=A0 nfa_states_covered() which has its ow= n loop.


=C2=A0 0004: Fix in-place modification of defineClause T= argetEntry
=C2=A0 =C2=A0 =C2=A0 =C2=A0 In set_upper_references(), the de= fineClause TargetEntry
=C2=A0 =C2=A0 =C2=A0 =C2=A0 was modified in-place= by fix_upper_expr() without making
=C2=A0 =C2=A0 =C2=A0 =C2=A0 a copy f= irst. This follows the same flatCopyTargetEntry()
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 pattern already used for the main targetlist in the same
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 function.


=C2=A0 0005: Fix mark handling fo= r last_value() under RPR
=C2=A0 =C2=A0 =C2=A0 =C2=A0 This is a revised v= ersion of the v45 0004 patch that you
=C2=A0 =C2=A0 =C2=A0 =C2=A0 commen= ted on [1]. You pointed out that suppressing
=C2=A0 =C2=A0 =C2=A0 =C2=A0= WinSetMarkPosition() entirely under RPR was too strong a
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 limitation, and we agreed to drop it and revisit together
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 with the experimental PREV/NEXT patch.

= =C2=A0 =C2=A0 =C2=A0 =C2=A0 The RPR executor patch changed set_mark from tr= ue to
=C2=A0 =C2=A0 =C2=A0 =C2=A0 false in window_last_value() to avoid = mark advancement
=C2=A0 =C2=A0 =C2=A0 =C2=A0 problems under RPR. But thi= s also penalizes non-RPR
=C2=A0 =C2=A0 =C2=A0 =C2=A0 queries by preventi= ng tuplestore memory reclamation.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 The re= vised approach: restore set_mark=3Dtrue (upstream
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 default), and add a targeted guard in
=C2=A0 =C2=A0 =C2=A0 =C2=A0= WinGetFuncArgInFrame() that only suppresses mark
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 advancement for SEEK_TAIL under RPR -- not for all
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 seek types as in v45 0004. Only SEEK_TAIL needs
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 suppression because advancing the mark from the tail
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 could prevent revisiting earlier rows that stil= l fall
=C2=A0 =C2=A0 =C2=A0 =C2=A0 within a future row's reduced fra= me.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 [1] X-Attachment-Id: f_mnbq041i0 RnJvbSBkYTBjZTU5MGQ0NWUzNWJlOTZkZGY3NGYzZWI5YjY1N2JmY2E0YTgxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBUdWUsIDI0IE1hciAyMDI2IDE5OjA0OjE5ICswOTAwClN1YmplY3Q6IFtQQVRDSCAxLzZdIFJl bW92ZSB1bnVzZWQgcmVnZXgvcmVnZXguaCBpbmNsdWRlIGZyb20gbm9kZVdpbmRvd0FnZy5jCgot LS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyB8IDEgLQogMSBmaWxlIGNo YW5nZWQsIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9u b2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKaW5k ZXggNGY4ODJiODc3YjEuLjE4NWQ3YTBkNWFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRv d0FnZy5jCkBAIC01MCw3ICs1MCw2IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL3Jwci5oIgogI2lu Y2x1ZGUgInBhcnNlci9wYXJzZV9hZ2cuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNl LmgiCi0jaW5jbHVkZSAicmVnZXgvcmVnZXguaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCi0tIAoy LjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000004ddbfc064e28ab4c Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0002-Add-CHECK_FOR_INTERRUPTS-to-nfa_add_state_unique-for.txt" Content-Disposition: attachment; filename="nocfbot-0002-Add-CHECK_FOR_INTERRUPTS-to-nfa_add_state_unique-for.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnbq060g1 RnJvbSA4YWIyZTNiMzAzNDIyYzM2MTg1MjEwMDQyYmJlNjgzMWQ1MDAwOWNjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI1IE1hciAyMDI2IDAwOjI1OjQwICswOTAwClN1YmplY3Q6IFtQQVRDSCAyLzZdIEFk ZCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIG5mYV9hZGRfc3RhdGVfdW5pcXVlKCkgZm9yCiBz dGF0ZSBleHBsb3Npb24gcGF0dGVybnMKCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQ Ui5jIHwgMiArKwogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNSUFIuYwppbmRleCBiYWI1MjU3ZjY4Zi4uY2Y1NGUwYzc2YzMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UlBSLmMKQEAgLTE3NjMsNiArMTc2Myw4IEBAIG5mYV9hZGRfc3RhdGVfdW5pcXVlKFdpbmRvd0Fn Z1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LCBSUFJORkFTdGF0ZSAqCiAJLyog Q2hlY2sgZm9yIGR1cGxpY2F0ZSBhbmQgZmluZCB0YWlsICovCiAJZm9yIChzID0gY3R4LT5zdGF0 ZXM7IHMgIT0gTlVMTDsgcyA9IHMtPm5leHQpCiAJeworCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OworCiAJCWlmIChuZmFfc3RhdGVzX2VxdWFsKHdpbnN0YXRlLCBzLCBzdGF0ZSkpCiAJCXsKIAkJ CS8qCi0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgo= --0000000000004ddbfc064e28ab4c Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0003-Add-CHECK_FOR_INTERRUPTS-to-nfa_try_absorb_context-l.txt" Content-Disposition: attachment; filename="nocfbot-0003-Add-CHECK_FOR_INTERRUPTS-to-nfa_try_absorb_context-l.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnbq07uz2 RnJvbSBkZDMwODUxNjkxYWRlMzJlYTE4YjUwNTAxYjA2ZGE3MjgzOTY4N2UzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI1IE1hciAyMDI2IDExOjAzOjM5ICswOTAwClN1YmplY3Q6IFtQQVRDSCAzLzZdIEFk ZCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIG5mYV90cnlfYWJzb3JiX2NvbnRleHQoKQogbG9v cAoKLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMgfCAyICsrCiAxIGZpbGUgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1JQUi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQUi5jCmluZGV4IGNmNTRlMGM3 NmMzLi41OGY5ZGEwYjgxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQ Ui5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwpAQCAtMjA4NCw2ICsyMDg0 LDggQEAgbmZhX3RyeV9hYnNvcmJfY29udGV4dChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQ Uk5GQUNvbnRleHQgKmN0eCkKIAogCWZvciAob2xkZXIgPSBjdHgtPnByZXY7IG9sZGVyICE9IE5V TEw7IG9sZGVyID0gb2xkZXItPnByZXYpCiAJeworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CiAJCS8qCiAJCSAqIEJ5IGludmFyaWFudDogY3R4LT5wcmV2IGNoYWluIGlzIGluIGNyZWF0aW9u IG9yZGVyIChvbGRlc3QgZmlyc3QpLAogCQkgKiBhbmQgZWFjaCByb3cgY3JlYXRlcyBhdCBtb3N0 IG9uZSBjb250ZXh0LiBTbyBhbGwgY29udGV4dHMgaW4gdGhpcwotLSAKMi41MC4xIChBcHBsZSBH aXQtMTU1KQoK --0000000000004ddbfc064e28ab4c Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0004-Fix-in-place-modification-of-defineClause-TargetEntr.txt" Content-Disposition: attachment; filename="nocfbot-0004-Fix-in-place-modification-of-defineClause-TargetEntr.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnbq0a0y3 RnJvbSBmYjgyNGQ3NmQ2NjM1ZTYyNGRhNWNkZWUxYTQ4MWQ2MTcwN2U3M2JkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI1IE1hciAyMDI2IDAwOjIwOjA1ICswOTAwClN1YmplY3Q6IFtQQVRDSCA0LzZdIEZp eCBpbi1wbGFjZSBtb2RpZmljYXRpb24gb2YgZGVmaW5lQ2xhdXNlIFRhcmdldEVudHJ5IGluCiBz ZXRyZWZzLmMKCi0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIHwgMiAr KwogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3NldHJlZnMuYwppbmRleCA2OWNkMTg2MWU5Yi4uOWNkYjIxN2EwNDcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTI2NDYsNiArMjY0Niw3IEBAIHNldF91cHBlcl9yZWZl cmVuY2VzKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpwbGFuLCBpbnQgcnRvZmZzZXQpCiAJCQl7 CiAJCQkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobCk7CiAKKwkJ CQl0bGUgPSBmbGF0Q29weVRhcmdldEVudHJ5KHRsZSk7CiAJCQkJdGxlLT5leHByID0gKEV4cHIg KikKIAkJCQkJZml4X3VwcGVyX2V4cHIocm9vdCwKIAkJCQkJCQkJICAgKE5vZGUgKikgdGxlLT5l eHByLApAQCAtMjY1NCw2ICsyNjU1LDcgQEAgc2V0X3VwcGVyX3JlZmVyZW5jZXMoUGxhbm5lcklu Zm8gKnJvb3QsIFBsYW4gKnBsYW4sIGludCBydG9mZnNldCkKIAkJCQkJCQkJICAgcnRvZmZzZXQs CiAJCQkJCQkJCSAgIE5STV9FUVVBTCwKIAkJCQkJCQkJICAgTlVNX0VYRUNfUVVBTChwbGFuKSk7 CisJCQkJbGZpcnN0KGwpID0gdGxlOwogCQkJfQogCQl9CiAJfQotLSAKMi41MC4xIChBcHBsZSBH aXQtMTU1KQoK --0000000000004ddbfc064e28ab4c Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0005-Fix-mark-handling-for-last_value-under-RPR.txt" Content-Disposition: attachment; filename="nocfbot-0005-Fix-mark-handling-for-last_value-under-RPR.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnbq0cn14 RnJvbSAzNDRmYmI4YTVkMzlhNTNmN2NlNmZmOTI0YTA2ZDRlNGQzZWMyYjU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBXZWQsIDI1IE1hciAyMDI2IDAwOjM3OjUwICswOTAwClN1YmplY3Q6IFtQQVRDSCA1LzZdIEZp eCBtYXJrIGhhbmRsaW5nIGZvciBsYXN0X3ZhbHVlKCkgdW5kZXIgUlBSCgpFbmFibGUgbWFyayBh ZHZhbmNlbWVudCBpbiB3aW5kb3dfbGFzdF92YWx1ZSgpIGZvcgpiZXR0ZXIgdHVwbGVzdG9yZSBt ZW1vcnkgdXNhZ2UgaW4gbm9uLVJQUiBjYXNlcywgd2hpbGUKYWRkaW5nIGEgZ3VhcmQgaW4gV2lu R2V0RnVuY0FyZ0luRnJhbWUgdG8gc3VwcHJlc3MgaXQKZm9yIFJQUiBTRUVLX1RBSUwgdG8gcHJl dmVudCBwb3NpdGlvbiBpbnZhbGlkYXRpb24KZnJvbSByZWR1Y2VkIGZyYW1lIHNoaWZ0cy4KLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgfCA4ICsrKysrKysrCiBzcmMv YmFja2VuZC91dGlscy9hZHQvd2luZG93ZnVuY3MuYyAgfCAyICstCiAyIGZpbGVzIGNoYW5nZWQs IDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5k b3dBZ2cuYwppbmRleCAxODVkN2EwZDVhZS4uNmQ2OTZhZjZmZDQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlV2luZG93QWdnLmMKQEAgLTQ3MDMsNiArNDcwMywxNCBAQCBXaW5HZXRGdW5jQXJnSW5G cmFtZShXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQgYXJnbm8sCiAKIAlBc3NlcnQoV2luZG93T2Jq ZWN0SXNWYWxpZCh3aW5vYmopKTsKIAl3aW5zdGF0ZSA9IHdpbm9iai0+d2luc3RhdGU7CisKKwkv KgorCSAqIFJQUiByZWR1Y2VkIGZyYW1lcyBtYXkgc2hpZnQ7IGRvbid0IGFkdmFuY2UgbWFyayBm cm9tIHRhaWwgc2Vla3MgdG8KKwkgKiBhdm9pZCBpbnZhbGlkYXRpbmcgdHVwbGVzdG9yZSByZWFk IHBvc2l0aW9ucy4KKwkgKi8KKwlpZiAoc2V0X21hcmsgJiYgd2luc3RhdGUtPnJwUGF0dGVybiAh PSBOVUxMICYmIHNlZWt0eXBlID09IFdJTkRPV19TRUVLX1RBSUwpCisJCXNldF9tYXJrID0gZmFs c2U7CisKIAllY29udGV4dCA9IHdpbnN0YXRlLT5zcy5wcy5wc19FeHByQ29udGV4dDsKIAlzbG90 ID0gd2luc3RhdGUtPnRlbXBfc2xvdF8xOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvd2luZG93ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5jcy5j CmluZGV4IGVmYjYwYzk5MDUyLi43NGVmMTA5ZjcyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3dpbmRv d2Z1bmNzLmMKQEAgLTY4Miw3ICs2ODIsNyBAQCB3aW5kb3dfbGFzdF92YWx1ZShQR19GVU5DVElP Tl9BUkdTKQogCiAJV2luQ2hlY2tBbmRJbml0aWFsaXplTnVsbFRyZWF0bWVudCh3aW5vYmosIHRy dWUsIGZjaW5mbyk7CiAJcmVzdWx0ID0gV2luR2V0RnVuY0FyZ0luRnJhbWUod2lub2JqLCAwLAot CQkJCQkJCQkgIDAsIFdJTkRPV19TRUVLX1RBSUwsIGZhbHNlLAorCQkJCQkJCQkgIDAsIFdJTkRP V19TRUVLX1RBSUwsIHRydWUsCiAJCQkJCQkJCSAgJmlzbnVsbCwgTlVMTCk7CiAJaWYgKGlzbnVs bCkKIAkJUEdfUkVUVVJOX05VTEwoKTsKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --0000000000004ddbfc064e28ab4c Content-Type: text/plain; charset="US-ASCII"; name="nocfbot-0006-Implement-1-slot-PREV-NEXT-navigation-for-RPR.txt" Content-Disposition: attachment; filename="nocfbot-0006-Implement-1-slot-PREV-NEXT-navigation-for-RPR.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnbq0f525 RnJvbSBmYWZmMTYwYjA1ZWI4MWQwZjQxOWEzOTZlNTY0YTIzMjNlNTM1YzQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBGcmksIDIwIE1hciAyMDI2IDIzOjUyOjQyICswOTAwClN1YmplY3Q6IFtQQVRDSCA2LzZdIElt cGxlbWVudCAxLXNsb3QgUFJFVi9ORVhUIG5hdmlnYXRpb24gZm9yIFJQUgoKQWRkIFBSRVYodmFs dWUgWywgb2Zmc2V0XSkgYW5kIE5FWFQodmFsdWUgWywgb2Zmc2V0XSkgbmF2aWdhdGlvbgpmdW5j dGlvbnMgZm9yIHVzZSBpbiB0aGUgREVGSU5FIGNsYXVzZSBvZiByb3cgcGF0dGVybiByZWNvZ25p dGlvbi4KClRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gdGhlIGNvbHVtbiB2YWx1ZSBhdCBhIHJvdyBv ZmZzZXQgcm93cwpiZWZvcmUvYWZ0ZXIgdGhlIGN1cnJlbnQgcm93IHdpdGhpbiB0aGUgcGFydGl0 aW9uLCByZXR1cm5pbmcgTlVMTAppZiB0aGUgdGFyZ2V0IHJvdyBpcyBvdXRzaWRlIHRoZSBwYXJ0 aXRpb24uIFRoZSBvZmZzZXQgZGVmYXVsdHMKdG8gMSBpZiBvbWl0dGVkOyBvZmZzZXQ9MCByZWZl cnMgdG8gdGhlIGN1cnJlbnQgcm93IGl0c2VsZjsKTlVMTCBvciBuZWdhdGl2ZSBvZmZzZXQgcmFp c2VzIGFuIGVycm9yLgoKS2V5IGRlc2lnbjogaW5zdGVhZCBvZiB0aGUgcHJldmlvdXMgMy1zbG90 IG1vZGVsIChvdXRlci9zY2FuL2lubmVyKSwKYSBzaW5nbGUtc2xvdCBzd2FwIG1vZGVsIGlzIHVz ZWQuIEVFT1BfUlBSX05BVl9TRVQgdGVtcG9yYXJpbHkKcmVwbGFjZXMgZWN4dF9vdXRlcnR1cGxl IHdpdGggdGhlIHRhcmdldCByb3csIHRoZSBhcmd1bWVudApleHByZXNzaW9uIGV2YWx1YXRlcyBh Z2FpbnN0IGl0LCBhbmQgRUVPUF9SUFJfTkFWX1JFU1RPUkUgcmVzdG9yZXMKdGhlIG9yaWdpbmFs IHNsb3QuIFRoaXMgZWxpbWluYXRlcyB2YXJubyByZXdyaXRpbmcgYW5kIG5hdHVyYWxseQpzdXBw b3J0cyBhcmJpdHJhcnkgb2Zmc2V0cy4KCkEgZGVkaWNhdGVkIG5hdl93aW5vYmogd2l0aCBpdHMg b3duIHR1cGxlc3RvcmUgcmVhZCBwb2ludGVyIGF2b2lkcwppbnRlcmZlcmVuY2Ugd2l0aCBhZ2dy ZWdhdGUgcHJvY2Vzc2luZy4gQSBtYXJrIHBvaW50ZXIgcGlubmVkIGF0CnBvc2l0aW9uIDAgcHJl dmVudHMgdHVwbGVzdG9yZSB0cnVuY2F0aW9uIHNvIHRoYXQgUFJFVihleHByLCBOKQpjYW4gcmVh Y2ggYW55IHByaW9yIHJvdy4KClJQUk5hdkV4cHIgaXMgYSBuZXcgZXhwcmVzc2lvbiBub2RlIHRo YXQgcmVwbGFjZXMgdGhlIHByZXZpb3VzCmFwcHJvYWNoIG9mIGlkZW50aWZ5aW5nIFBSRVYvTkVY VCBieSBmdW5jaWQuIFRoZSBwYXJzZXIgdHJhbnNmb3JtcwpQUkVWL05FWFQgZnVuY3Rpb24gY2Fs bHMgaW50byBSUFJOYXZFeHByIG5vZGVzIGluIFBhcnNlRnVuY09yQ29sdW1uKCkuClZhbGlkYXRp b24gaW4gcGFyc2VfcnByLmMgcmVqZWN0cyBuZXN0ZWQgUFJFVi9ORVhULCByZXF1aXJlcyBhdAps ZWFzdCBvbmUgY29sdW1uIHJlZmVyZW5jZSBpbiB0aGUgZmlyc3QgYXJndW1lbnQsIGFuZCBlbnN1 cmVzCnRoZSBvZmZzZXQgaXMgYSBydW4tdGltZSBjb25zdGFudC4KClJQUk5hdktpbmQgdXNlcyBw bGFpbiBlbnVtIHZhbHVlcyAobm90IC0xLysxKSBzbyB0aGF0IEZJUlNUL0xBU1QKY2FuIGJlIGFk ZGVkIGxhdGVyIHdpdGhvdXQgYXJpdGhtZXRpYyB0cmlja3MuCgpMTFZNIEpJVCBmYWxscyBiYWNr IHRvIHRoZSBpbnRlcnByZXRlciBmb3IgZXhwcmVzc2lvbnMgY29udGFpbmluZwpSUFIgbmF2aWdh dGlvbiBvcGNvZGVzLCBiZWNhdXNlIEpJVCBjb2RlIGNhY2hlcyB0aGUgb3V0ZXJ0dXBsZSdzCnR0 c192YWx1ZXMvdHRzX2lzbnVsbCBwb2ludGVycyBpbiB0aGUgZW50cnkgYmxvY2sgYW5kIHRoZQpt aWQtZXhwcmVzc2lvbiBzbG90IHN3YXAgbGVhdmVzIHRoZW0gc3RhbGUuIE9ubHkgREVGSU5FIGNs YXVzZQpleHByZXNzaW9ucyB3aXRoIFBSRVYvTkVYVCBhcmUgYWZmZWN0ZWQ7IG90aGVyIGV4cHJl c3Npb25zIGluCnRoZSBzYW1lIHF1ZXJ5IGFyZSBzdGlsbCBKSVQtY29tcGlsZWQgbm9ybWFsbHku Ci0tLQogZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy13aW5kb3cuc2dtbCAgICAgICAgfCAgMjIgKy0K IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNFeHByLmMgICAgICAgICAgIHwgIDU2ICsrKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyAgICAgfCAxMTAgKysrKysKIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyAgICAgIHwgMjQzICsrKystLS0tLS0KIHNy Yy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jICAgICAgIHwgIDQwICsrCiBzcmMvYmFj a2VuZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9u b2Rlcy9ub2RlRnVuY3MuYyAgICAgICAgICAgICB8ICAzMyArKwogc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2Z1bmMuYyAgICAgICAgICAgfCAgMzAgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9ycHIuYyAgICAgICAgICAgIHwgIDg3ICsrKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxl dXRpbHMuYyAgICAgICAgIHwgIDE2ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5j cy5jICAgICAgIHwgIDUyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAg ICAgICB8ICAgNiArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oICAgICAgICAgICB8 ICAxOCArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlV2luZG93QWdnLmggICAgICB8ICAgMyAr CiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgICB8ICAxMCArLQogc3Jj L2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggICAgICAgICAgICAgfCAgMzEgKysKIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dCAgICAgICAgIHwgNTUxICsrKysrKysrKysrKysrKysr KysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0IHwgMTE0ICsr KystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsICAgICAgICAgICAgICB8IDMyMiArKysr KysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwgICAgICB8ICA4 NCArKystCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICB8ICAgMyAr LQogMjEgZmlsZXMgY2hhbmdlZCwgMTYzOCBpbnNlcnRpb25zKCspLCAxOTUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy13aW5kb3cuc2dtbCBiL2RvYy9z cmMvc2dtbC9mdW5jL2Z1bmMtd2luZG93LnNnbWwKaW5kZXggYWUzNmUwZjMxMzUuLjFiOWI5OTNh ODE3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZnVuYy9mdW5jLXdpbmRvdy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtd2luZG93LnNnbWwKQEAgLTMwNCwxMiArMzA0LDE3IEBA CiAgICAgICAgIDxpbmRleHRlcm0+CiAgICAgICAgICA8cHJpbWFyeT5wcmV2PC9wcmltYXJ5Pgog ICAgICAgICA8L2luZGV4dGVybT4KLSAgICAgICAgPGZ1bmN0aW9uPnByZXY8L2Z1bmN0aW9uPiAo IDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gPHR5cGU+YW55ZWxlbWVudDwvdHlwZT4gKQor ICAgICAgICA8ZnVuY3Rpb24+cHJldjwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj52YWx1ZTwvcGFy YW1ldGVyPiA8dHlwZT5hbnllbGVtZW50PC90eXBlPiBbLCA8cGFyYW1ldGVyPm9mZnNldDwvcGFy YW1ldGVyPiA8dHlwZT5iaWdpbnQ8L3R5cGU+IF0gKQogICAgICAgICA8cmV0dXJudmFsdWU+YW55 ZWxlbWVudDwvcmV0dXJudmFsdWU+CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgotICAg ICAgICBSZXR1cm5zIHRoZSBjb2x1bW4gdmFsdWUgYXQgdGhlIHByZXZpb3VzIHJvdzsKLSAgICAg ICAgcmV0dXJucyBOVUxMIGlmIHRoZXJlIGlzIG5vIHByZXZpb3VzIHJvdyBpbiB0aGUgd2luZG93 IGZyYW1lLgorICAgICAgICBSZXR1cm5zIHRoZSBjb2x1bW4gdmFsdWUgYXQgdGhlIHJvdyA8cGFy YW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPgorICAgICAgICByb3dzIGJlZm9yZSB0aGUgY3VycmVu dCByb3cgd2l0aGluIHRoZSB3aW5kb3cgZnJhbWU7CisgICAgICAgIHJldHVybnMgTlVMTCBpZiB0 aGUgdGFyZ2V0IHJvdyBpcyBvdXRzaWRlIHRoZSB3aW5kb3cgZnJhbWUuCisgICAgICAgIDxwYXJh bWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IGRlZmF1bHRzIHRvIDEgaWYgb21pdHRlZC4KKyAgICAg ICAgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBp bnRlZ2VyOworICAgICAgICBhbiBvZmZzZXQgb2YgMCByZWZlcnMgdG8gdGhlIGN1cnJlbnQgcm93 IGl0c2VsZi4KKyAgICAgICAgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gbXVzdCBub3Qg YmUgTlVMTC4KICAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgIDwvcm93PgogCkBAIC0zMTgs MTIgKzMyMywxNyBAQAogICAgICAgICA8aW5kZXh0ZXJtPgogICAgICAgICAgPHByaW1hcnk+bmV4 dDwvcHJpbWFyeT4KICAgICAgICAgPC9pbmRleHRlcm0+Ci0gICAgICAgIDxmdW5jdGlvbj5uZXh0 PC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+IDx0eXBlPmFueWVsZW1l bnQ8L3R5cGU+ICkKKyAgICAgICAgPGZ1bmN0aW9uPm5leHQ8L2Z1bmN0aW9uPiAoIDxwYXJhbWV0 ZXI+dmFsdWU8L3BhcmFtZXRlcj4gPHR5cGU+YW55ZWxlbWVudDwvdHlwZT4gWywgPHBhcmFtZXRl cj5vZmZzZXQ8L3BhcmFtZXRlcj4gPHR5cGU+YmlnaW50PC90eXBlPiBdICkKICAgICAgICAgPHJl dHVybnZhbHVlPmFueWVsZW1lbnQ8L3JldHVybnZhbHVlPgogICAgICAgIDwvcGFyYT4KICAgICAg ICA8cGFyYT4KLSAgICAgICAgUmV0dXJucyB0aGUgY29sdW1uIHZhbHVlIGF0IHRoZSBuZXh0IHJv dzsKLSAgICAgICAgcmV0dXJucyBOVUxMIGlmIHRoZXJlIGlzIG5vIG5leHQgcm93IGluIHRoZSB3 aW5kb3cgZnJhbWUuCisgICAgICAgIFJldHVybnMgdGhlIGNvbHVtbiB2YWx1ZSBhdCB0aGUgcm93 IDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+CisgICAgICAgIHJvd3MgYWZ0ZXIgdGhlIGN1 cnJlbnQgcm93IHdpdGhpbiB0aGUgd2luZG93IGZyYW1lOworICAgICAgICByZXR1cm5zIE5VTEwg aWYgdGhlIHRhcmdldCByb3cgaXMgb3V0c2lkZSB0aGUgd2luZG93IGZyYW1lLgorICAgICAgICA8 cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiBkZWZhdWx0cyB0byAxIGlmIG9taXR0ZWQuCisg ICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IG11c3QgYmUgYSBub24tbmVnYXRp dmUgaW50ZWdlcjsKKyAgICAgICAgYW4gb2Zmc2V0IG9mIDAgcmVmZXJzIHRvIHRoZSBjdXJyZW50 IHJvdyBpdHNlbGYuCisgICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IG11c3Qg bm90IGJlIE5VTEwuCiAgICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgICA8L3Jvdz4KIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHByLmMKaW5kZXggNzcyMjkxNDFiMzguLmRiZWQ0ZjQ4YTBmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHByLmMKQEAgLTEyMjIsNiArMTIyMiw2MiBAQCBFeGVjSW5pdEV4cHJSZWMo RXhwciAqbm9kZSwgRXhwclN0YXRlICpzdGF0ZSwKIAkJCQlicmVhazsKIAkJCX0KIAorCQljYXNl IFRfUlBSTmF2RXhwcjoKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFJQUiBuYXZpZ2F0aW9uIGZ1bmN0 aW9ucyAoUFJFVi9ORVhUKSBhcmUgY29tcGlsZWQgaW50bworCQkJCSAqIEVFT1BfUlBSX05BVl9T RVQgLyBFRU9QX1JQUl9OQVZfUkVTVE9SRSBvcGNvZGVzIGluc3RlYWQgb2YKKwkJCQkgKiBhIG5v cm1hbCBmdW5jdGlvbiBjYWxsLiAgVGhlIFNFVCBvcGNvZGUgc3dhcHMKKwkJCQkgKiBlY3h0X291 dGVydHVwbGUgdG8gdGhlIHRhcmdldCByb3csIHRoZSBhcmd1bWVudCBleHByZXNzaW9uCisJCQkJ ICogaXMgY29tcGlsZWQgbm9ybWFsbHkgKHJlYWRzIGZyb20gdGhlIHN3YXBwZWQgc2xvdCksIGFu ZCB0aGUKKwkJCQkgKiBSRVNUT1JFIG9wY29kZSByZXN0b3JlcyB0aGUgb3JpZ2luYWwgc2xvdC4K KwkJCQkgKi8KKwkJCQlSUFJOYXZFeHByICpuYXYgPSAoUlBSTmF2RXhwciAqKSBub2RlOworCQkJ CVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZTsKKworCQkJCUFzc2VydChzdGF0ZS0+cGFyZW50ICYm IElzQShzdGF0ZS0+cGFyZW50LCBXaW5kb3dBZ2dTdGF0ZSkpOworCQkJCXdpbnN0YXRlID0gKFdp bmRvd0FnZ1N0YXRlICopIHN0YXRlLT5wYXJlbnQ7CisKKwkJCQkvKiBFbWl0IFNFVCBvcGNvZGU6 IHN3YXAgc2xvdCB0byB0YXJnZXQgcm93ICovCisJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1JQ Ul9OQVZfU0VUOworCQkJCXNjcmF0Y2guZC5ycHJfbmF2LndpbnN0YXRlID0gd2luc3RhdGU7CisJ CQkJc2NyYXRjaC5kLnJwcl9uYXYua2luZCA9IG5hdi0+a2luZDsKKworCQkJCWlmIChuYXYtPm9m ZnNldF9hcmcgIT0gTlVMTCkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIEFsbG9jYXRlIHN0b3Jh Z2UgZm9yIHRoZSBydW50aW1lIG9mZnNldCB2YWx1ZS4gIFRoZQorCQkJCQkgKiBvZmZzZXQgZXhw cmVzc2lvbiBpcyBjb21waWxlZCBiZWxvdyBzbyBpdCBydW5zIGJlZm9yZQorCQkJCQkgKiBFRU9Q X1JQUl9OQVZfU0VULgorCQkJCQkgKi8KKwkJCQkJRGF0dW0JICAgKm9mZnNldF92YWx1ZSA9IHBh bGxvY19vYmplY3QoRGF0dW0pOworCQkJCQlib29sCSAgICpvZmZzZXRfaXNudWxsID0gcGFsbG9j X29iamVjdChib29sKTsKKworCQkJCQkvKiBDb21waWxlIHRoZSBvZmZzZXQgZXhwcmVzc2lvbiBp bnRvIHRoZSB0ZW1wIHN0b3JhZ2UgKi8KKwkJCQkJRXhlY0luaXRFeHByUmVjKG5hdi0+b2Zmc2V0 X2FyZywgc3RhdGUsCisJCQkJCQkJCQlvZmZzZXRfdmFsdWUsIG9mZnNldF9pc251bGwpOworCisJ CQkJCXNjcmF0Y2guZC5ycHJfbmF2Lm9mZnNldF92YWx1ZSA9IG9mZnNldF92YWx1ZTsKKwkJCQkJ c2NyYXRjaC5kLnJwcl9uYXYub2Zmc2V0X2lzbnVsbCA9IG9mZnNldF9pc251bGw7CisJCQkJfQor CQkJCWVsc2UKKwkJCQl7CisJCQkJCXNjcmF0Y2guZC5ycHJfbmF2Lm9mZnNldF92YWx1ZSA9IE5V TEw7CisJCQkJCXNjcmF0Y2guZC5ycHJfbmF2Lm9mZnNldF9pc251bGwgPSBOVUxMOworCQkJCX0K KworCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZzY3JhdGNoKTsKKworCQkJCS8qIENvbXBp bGUgdGhlIGFyZ3VtZW50IGV4cHJlc3Npb24gbm9ybWFsbHkgKi8KKwkJCQlFeGVjSW5pdEV4cHJS ZWMobmF2LT5hcmcsIHN0YXRlLCByZXN2LCByZXNudWxsKTsKKworCQkJCS8qIEVtaXQgUkVTVE9S RSBvcGNvZGU6IHJlc3RvcmUgb3JpZ2luYWwgc2xvdCAqLworCQkJCXNjcmF0Y2gub3Bjb2RlID0g RUVPUF9SUFJfTkFWX1JFU1RPUkU7CisJCQkJc2NyYXRjaC5kLnJwcl9uYXYud2luc3RhdGUgPSB3 aW5zdGF0ZTsKKwkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisJCQkJYnJl YWs7CisJCQl9CisKIAkJY2FzZSBUX0Z1bmNFeHByOgogCQkJewogCQkJCUZ1bmNFeHByICAgKmZ1 bmMgPSAoRnVuY0V4cHIgKikgbm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHBySW50ZXJwLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5j CmluZGV4IDQzMTE2NDMxZWRmLi4zOWRiMTEzMDFjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj RXhwckludGVycC5jCkBAIC01NiwxMiArNTYsMTQgQEAKICAqLwogI2luY2x1ZGUgInBvc3RncmVz LmgiCiAKKyNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXB0b2Fz dC5oIgogI2luY2x1ZGUgImFjY2Vzcy90dXBjb252ZXJ0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNpbmNsdWRlICJleGVj dXRvci9leGVjRXhwci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJwbGFuLmgiCisjaW5j bHVkZSAiZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9taXNjbm9kZXMuaCIKQEAgLTU3 OCw2ICs1ODAsOCBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRlLCBFeHByQ29udGV4 dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VFT1BfV0lORE9XX0ZVTkMsCiAJ CSYmQ0FTRV9FRU9QX01FUkdFX1NVUFBPUlRfRlVOQywKIAkJJiZDQVNFX0VFT1BfU1VCUExBTiwK KwkJJiZDQVNFX0VFT1BfUlBSX05BVl9TRVQsCisJCSYmQ0FTRV9FRU9QX1JQUl9OQVZfUkVTVE9S RSwKIAkJJiZDQVNFX0VFT1BfQUdHX1NUUklDVF9ERVNFUklBTElaRSwKIAkJJiZDQVNFX0VFT1Bf QUdHX0RFU0VSSUFMSVpFLAogCQkmJkNBU0VfRUVPUF9BR0dfU1RSSUNUX0lOUFVUX0NIRUNLX0FS R1MsCkBAIC0yMDA1LDYgKzIwMDksMjQgQEAgRXhlY0ludGVycEV4cHIoRXhwclN0YXRlICpzdGF0 ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCQlFRU9fTkVYVCgpOwog CQl9CiAKKwkJLyogUlBSIG5hdmlnYXRpb246IHN3YXAgc2xvdCB0byB0YXJnZXQgcm93ICovCisJ CUVFT19DQVNFKEVFT1BfUlBSX05BVl9TRVQpCisJCXsKKwkJCUV4ZWNFdmFsUlBSTmF2U2V0KHN0 YXRlLCBvcCwgZWNvbnRleHQpOworCQkJb3V0ZXJzbG90ID0gZWNvbnRleHQtPmVjeHRfb3V0ZXJ0 dXBsZTsKKworCQkJRUVPX05FWFQoKTsKKwkJfQorCisJCS8qIFJQUiBuYXZpZ2F0aW9uOiByZXN0 b3JlIHNsb3QgdG8gb3JpZ2luYWwgcm93ICovCisJCUVFT19DQVNFKEVFT1BfUlBSX05BVl9SRVNU T1JFKQorCQl7CisJCQlFeGVjRXZhbFJQUk5hdlJlc3RvcmUoc3RhdGUsIG9wLCBlY29udGV4dCk7 CisJCQlvdXRlcnNsb3QgPSBlY29udGV4dC0+ZWN4dF9vdXRlcnR1cGxlOworCisJCQlFRU9fTkVY VCgpOworCQl9CisKIAkJLyogZXZhbHVhdGUgYSBzdHJpY3QgYWdncmVnYXRlIGRlc2VyaWFsaXph dGlvbiBmdW5jdGlvbiAqLwogCQlFRU9fQ0FTRShFRU9QX0FHR19TVFJJQ1RfREVTRVJJQUxJWkUp CiAJCXsKQEAgLTU5MTgsMyArNTk0MCw5MSBAQCBFeGVjQWdnUGxhaW5UcmFuc0J5UmVmKEFnZ1N0 YXRlICphZ2dzdGF0ZSwgQWdnU3RhdGVQZXJUcmFucyBwZXJ0cmFucywKIAogCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRDb250ZXh0KTsKIH0KKworLyoKKyAqIEV2YWx1YXRlIFJQUiBQUkVWL05F WFQgbmF2aWdhdGlvbjogc3dhcCBzbG90IHRvIHRhcmdldCByb3cuCisgKgorICogU2F2ZXMgdGhl IGN1cnJlbnQgb3V0ZXJ0dXBsZSBpbnRvIHdpbnN0YXRlIGZvciBsYXRlciByZXN0b3JlLCBjb21w dXRlcworICogdGhlIHRhcmdldCByb3cgcG9zaXRpb24sIGZldGNoZXMgdGhlIGNvcnJlc3BvbmRp bmcgc2xvdCBmcm9tIHRoZQorICogdHVwbGVzdG9yZSwgYW5kIHJlcGxhY2VzIGVjb250ZXh0LT5l Y3h0X291dGVydHVwbGUgd2l0aCBpdC4KKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBib3RoIGZyb20g dGhlIGludGVycHJldGVyIGlubGluZSBoYW5kbGVyIGFuZCBmcm9tCisgKiBKSVQtY29tcGlsZWQg ZXhwcmVzc2lvbnMgdmlhIGJ1aWxkX0V2YWxYRnVuYy4KKyAqLwordm9pZAorRXhlY0V2YWxSUFJO YXZTZXQoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwgRXhwckNvbnRleHQgKmVj b250ZXh0KQoreworCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSA9IG9wLT5kLnJwcl9uYXYud2lu c3RhdGU7CisJaW50NjQJCW9mZnNldDsKKwlpbnQ2NAkJdGFyZ2V0X3BvczsKKwlUdXBsZVRhYmxl U2xvdCAqdGFyZ2V0X3Nsb3Q7CisKKwkvKiBTYXZlIGN1cnJlbnQgc2xvdCBmb3IgbGF0ZXIgcmVz dG9yZSAqLworCXdpbnN0YXRlLT5uYXZfc2F2ZWRfb3V0ZXJ0dXBsZSA9IGVjb250ZXh0LT5lY3h0 X291dGVydHVwbGU7CisKKwkvKgorCSAqIERldGVybWluZSB0aGUgdW5zaWduZWQgb2Zmc2V0LiAg Rm9yIDItYXJnIFBSRVYvTkVYVCB0aGUgb2Zmc2V0CisJICogZXhwcmVzc2lvbiBoYXMgYWxyZWFk eSBiZWVuIGV2YWx1YXRlZCBpbnRvIG9mZnNldF92YWx1ZS4gIE5VTEwgb3IKKwkgKiBuZWdhdGl2 ZSBvZmZzZXRzIGFyZSBlcnJvcnMgcGVyIHRoZSBTUUwgc3RhbmRhcmQgKElTTy9JRUMgOTA3NS0y LAorCSAqIFN1YmNsYXVzZSA1LjYuMikuCisJICovCisJaWYgKG9wLT5kLnJwcl9uYXYub2Zmc2V0 X3ZhbHVlICE9IE5VTEwpCisJeworCQlpZiAoKm9wLT5kLnJwcl9uYXYub2Zmc2V0X2lzbnVsbCkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfTlVMTF9WQUxVRV9OT1Rf QUxMT1dFRCksCisJCQkJCSBlcnJtc2coIlBSRVYvTkVYVCBvZmZzZXQgbXVzdCBub3QgYmUgbnVs bCIpKSk7CisKKwkJb2Zmc2V0ID0gRGF0dW1HZXRJbnQ2NCgqb3AtPmQucnByX25hdi5vZmZzZXRf dmFsdWUpOworCisJCWlmIChvZmZzZXQgPCAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coIlBS RVYvTkVYVCBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUiKSkpOworCX0KKwllbHNlCisJCW9m ZnNldCA9IDE7CisKKwkvKgorCSAqIENhbGN1bGF0ZSB0YXJnZXQgcG9zaXRpb24gYmFzZWQgb24g bmF2aWdhdGlvbiBkaXJlY3Rpb24uICBPbiBvdmVyZmxvdywKKwkgKiB1c2UgLTEgc28gdGhhdCBF eGVjUlBSTmF2R2V0U2xvdCB0cmVhdHMgaXQgYXMgb3V0IG9mIHJhbmdlLgorCSAqLworCXN3aXRj aCAob3AtPmQucnByX25hdi5raW5kKQorCXsKKwkJY2FzZSBSUFJfTkFWX1BSRVY6CisJCQlpZiAo cGdfc3ViX3M2NF9vdmVyZmxvdyh3aW5zdGF0ZS0+Y3VycmVudHBvcywgb2Zmc2V0LCAmdGFyZ2V0 X3BvcykpCisJCQkJdGFyZ2V0X3BvcyA9IC0xOworCQkJYnJlYWs7CisJCWNhc2UgUlBSX05BVl9O RVhUOgorCQkJaWYgKHBnX2FkZF9zNjRfb3ZlcmZsb3cod2luc3RhdGUtPmN1cnJlbnRwb3MsIG9m ZnNldCwgJnRhcmdldF9wb3MpKQorCQkJCXRhcmdldF9wb3MgPSAtMTsKKwkJCWJyZWFrOworCX0K KworCS8qIEZldGNoIHRhcmdldCByb3cgc2xvdCAocmV0dXJucyBuYXZfbnVsbF9zbG90IGlmIG91 dCBvZiByYW5nZSkgKi8KKwl0YXJnZXRfc2xvdCA9IEV4ZWNSUFJOYXZHZXRTbG90KHdpbnN0YXRl LCB0YXJnZXRfcG9zKTsKKworCS8qCisJICogVXBkYXRlIGVjb250ZXh0IHRvIHBvaW50IHRvIHRo ZSB0YXJnZXQgc2xvdC4gIEFsc28gZGVjb21wcmVzcyB0aGUgbmV3CisJICogc2xvdCdzIGF0dHJp YnV0ZXMgc2luY2UgRkVUQ0hTT01FIGFscmVhZHkgcmFuIGZvciB0aGUgb3JpZ2luYWwgc2xvdC4K KwkgKiBUaGUgY2FsbGVyIChpbnRlcnByZXRlciBvciBKSVQpIGlzIHJlc3BvbnNpYmxlIGZvciB1 cGRhdGluZyBhbnkgbG9jYWwKKwkgKiBzbG90IGNhY2hlIChlLmcuIG91dGVyc2xvdCkgZnJvbSBl Y29udGV4dCBhZnRlciB3ZSByZXR1cm4uCisJICovCisJc2xvdF9nZXRhbGxhdHRycyh0YXJnZXRf c2xvdCk7CisJZWNvbnRleHQtPmVjeHRfb3V0ZXJ0dXBsZSA9IHRhcmdldF9zbG90OworfQorCisv KgorICogRXZhbHVhdGUgUlBSIFBSRVYvTkVYVCBuYXZpZ2F0aW9uOiByZXN0b3JlIHNsb3QgdG8g b3JpZ2luYWwgcm93LgorICoKKyAqIFJlc3RvcmVzIGVjb250ZXh0LT5lY3h0X291dGVydHVwbGUg ZnJvbSB0aGUgc2F2ZWQgc2xvdCBpbiB3aW5zdGF0ZS4KKyAqIFRoZSBjYWxsZXIgaXMgcmVzcG9u c2libGUgZm9yIHVwZGF0aW5nIGFueSBsb2NhbCBzbG90IGNhY2hlLgorICovCit2b2lkCitFeGVj RXZhbFJQUk5hdlJlc3RvcmUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKKwkJ CQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQpCit7CisJV2luZG93QWdnU3RhdGUgKndpbnN0YXRl ID0gb3AtPmQucnByX25hdi53aW5zdGF0ZTsKKworCWVjb250ZXh0LT5lY3h0X291dGVydHVwbGUg PSB3aW5zdGF0ZS0+bmF2X3NhdmVkX291dGVydHVwbGU7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl V2luZG93QWdnLmMKaW5kZXggNmQ2OTZhZjZmZDQuLjA4NGM3NDVlNmNhIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC01Myw3ICs1Myw2IEBACiAjaW5jbHVkZSAidXRpbHMv YWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1 bS5oIgotI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvZXhwYW5k ZWRkYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzLmgiCkBAIC0xNzcsMTQgKzE3Niw2IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd1N0 YXRlUGVyQWdnRGF0YQogCWJvb2wJCXJlc3RhcnQ7CQkvKiBuZWVkIHRvIHJlc3RhcnQgdGhpcyBh Z2cgaW4gdGhpcyBjeWNsZT8gKi8KIH0gV2luZG93U3RhdGVQZXJBZ2dEYXRhOwogCi0vKgotICog U3RydWN0dXJlIHVzZWQgYnkgY2hlY2tfcnByX25hdmlnYXRpb24oKSBhbmQgcnByX25hdmlnYXRp b25fd2Fsa2VyKCkuCi0gKi8KLXR5cGVkZWYgc3RydWN0IE5hdmlnYXRpb25JbmZvCi17Ci0JYm9v bAkJaXNfcHJldjsJCS8qIHRydWUgaWYgUFJFViAqLwotCWludAkJCW51bV92YXJzOwkJLyogbnVt YmVyIG9mIHZhciBub2RlcyAqLwotfSBOYXZpZ2F0aW9uSW5mbzsKIAogc3RhdGljIHZvaWQgaW5p dGlhbGl6ZV93aW5kb3dhZ2dyZWdhdGUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLAogCQkJCQkJ CQkJICAgV2luZG93U3RhdGVQZXJGdW5jIHBlcmZ1bmNzdGF0ZSwKQEAgLTI0Myw5ICsyMzQsNiBA QCBzdGF0aWMgdWludDggZ2V0X25vdG51bGxfaW5mbyhXaW5kb3dPYmplY3Qgd2lub2JqLAogCQkJ CQkJCSAgaW50NjQgcG9zLCBpbnQgYXJnbm8pOwogc3RhdGljIHZvaWQgcHV0X25vdG51bGxfaW5m byhXaW5kb3dPYmplY3Qgd2lub2JqLAogCQkJCQkJCSBpbnQ2NCBwb3MsIGludCBhcmdubywgYm9v bCBpc251bGwpOwotc3RhdGljIHZvaWQgYXR0bm9fbWFwKE5vZGUgKm5vZGUpOwotc3RhdGljIGJv b2wgYXR0bm9fbWFwX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKLQogc3RhdGlj IGJvb2wgcnByX2lzX2RlZmluZWQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKTsKIHN0YXRpYyBp bnQJcm93X2lzX2luX3JlZHVjZWRfZnJhbWUoV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9z KTsKIApAQCAtMjU2LDkgKzI0NCw2IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyX3JlZHVjZWRfZnJh bWVfbWFwKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgcG9zLAogCQkJCQkJCQkJICAg aW50IHZhbCk7CiBzdGF0aWMgdm9pZCB1cGRhdGVfcmVkdWNlZF9mcmFtZShXaW5kb3dPYmplY3Qg d2lub2JqLCBpbnQ2NCBwb3MpOwogCi1zdGF0aWMgdm9pZCBjaGVja19ycHJfbmF2aWdhdGlvbihO b2RlICpub2RlLCBib29sIGlzX3ByZXYpOwotc3RhdGljIGJvb2wgcnByX25hdmlnYXRpb25fd2Fs a2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwotCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9u cyAtIE5GQSByb3cgZXZhbHVhdGlvbiAqLwogc3RhdGljIGJvb2wgbmZhX2V2YWx1YXRlX3JvdyhX aW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MsIGJvb2wgKnZhck1hdGNoZWQpOwogCkBAIC0x MzAyLDYgKzEyODcsMjUgQEAgcHJlcGFyZV90dXBsZXN0b3JlKFdpbmRvd0FnZ1N0YXRlICp3aW5z dGF0ZSkKIAkJfQogCX0KIAorCS8qIENyZWF0ZSByZWFkL21hcmsgcG9pbnRlcnMgZm9yIFJQUiBu YXZpZ2F0aW9uIGlmIG5lZWRlZCAqLworCWlmICh3aW5zdGF0ZS0+bmF2X3dpbm9iaikKKwl7CisJ CS8qCisJCSAqIEFsbG9jYXRlIGEgbWFyayBwb2ludGVyIHBpbm5lZCBhdCBwb3NpdGlvbiAwIHNv IHRoYXQgdGhlIHR1cGxlc3RvcmUKKwkJICogbmV2ZXIgdHJ1bmNhdGVzIHJvd3MgdGhhdCBhIFBS RVYoZXhwciwgTikgbWlnaHQgbmVlZC4KKwkJICoKKwkJICogWFhYIFRoaXMgcmV0YWlucyB0aGUg ZW50aXJlIHBhcnRpdGlvbiBpbiB0aGUgdHVwbGVzdG9yZS4gIElmIHRoZQorCQkgKiBERUZJTkUg Y2xhdXNlIG9ubHkgdXNlcyBQUkVWL05FWFQgd2l0aCBzbWFsbCBjb25zdGFudCBvZmZzZXRzLCB3 ZQorCQkgKiBjb3VsZCBhZHZhbmNlIHRoZSBtYXJrIHRvIChjdXJyZW50cG9zIC0gbWF4X29mZnNl dCkgaW5zdGVhZC4KKwkJICovCisJCXdpbnN0YXRlLT5uYXZfd2lub2JqLT5tYXJrcHRyID0KKwkJ CXR1cGxlc3RvcmVfYWxsb2NfcmVhZF9wb2ludGVyKHdpbnN0YXRlLT5idWZmZXIsIDApOworCQl3 aW5zdGF0ZS0+bmF2X3dpbm9iai0+cmVhZHB0ciA9CisJCQl0dXBsZXN0b3JlX2FsbG9jX3JlYWRf cG9pbnRlcih3aW5zdGF0ZS0+YnVmZmVyLAorCQkJCQkJCQkJCSAgRVhFQ19GTEFHX0JBQ0tXQVJE KTsKKwkJd2luc3RhdGUtPm5hdl93aW5vYmotPm1hcmtwb3MgPSAwOworCX0KKwogCS8qCiAJICog SWYgd2UgYXJlIGluIFJBTkdFIG9yIEdST1VQUyBtb2RlLCB0aGVuIGRldGVybWluaW5nIGZyYW1l IGJvdW5kYXJpZXMKIAkgKiByZXF1aXJlcyBwaHlzaWNhbCBhY2Nlc3MgdG8gdGhlIGZyYW1lIGVu ZHBvaW50IHJvd3MsIGV4Y2VwdCBpbiBjZXJ0YWluCkBAIC0xNDEyLDYgKzE0MTYsMTMgQEAgYmVn aW5fcGFydGl0aW9uKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKIAkJd2luc3RhdGUtPmFnZ3Jl Z2F0ZWR1cHRvID0gMDsKIAl9CiAKKwkvKiByZXNldCBtYXJrIGFuZCBzZWVrIHBvc2l0aW9ucyBm b3IgUlBSIG5hdmlnYXRpb24gKi8KKwlpZiAod2luc3RhdGUtPm5hdl93aW5vYmopCisJeworCQl3 aW5zdGF0ZS0+bmF2X3dpbm9iai0+bWFya3BvcyA9IC0xOworCQl3aW5zdGF0ZS0+bmF2X3dpbm9i ai0+c2Vla3BvcyA9IC0xOworCX0KKwogCS8qIHJlc2V0IG1hcmsgYW5kIHNlZWsgcG9zaXRpb25z IGZvciBlYWNoIHJlYWwgd2luZG93IGZ1bmN0aW9uICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBu dW1mdW5jczsgaSsrKQogCXsKQEAgLTI3NTcsMTUgKzI3NjgsMTggQEAgRXhlY0luaXRXaW5kb3dB Z2coV2luZG93QWdnICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAl3aW5zdGF0 ZS0+dGVtcF9zbG90XzIgPSBFeGVjSW5pdEV4dHJhVHVwbGVTbG90KGVzdGF0ZSwgc2NhbkRlc2Ms CiAJCQkJCQkJCQkJCQkgICAmVFRTT3BzTWluaW1hbFR1cGxlKTsKIAotCXdpbnN0YXRlLT5wcmV2 X3Nsb3QgPSBFeGVjSW5pdEV4dHJhVHVwbGVTbG90KGVzdGF0ZSwgc2NhbkRlc2MsCi0JCQkJCQkJ CQkJCQkgJlRUU09wc01pbmltYWxUdXBsZSk7CisJaWYgKG5vZGUtPnJwUGF0dGVybiAhPSBOVUxM KQorCXsKKwkJd2luc3RhdGUtPm5hdl9zbG90ID0gRXhlY0luaXRFeHRyYVR1cGxlU2xvdChlc3Rh dGUsIHNjYW5EZXNjLAorCQkJCQkJCQkJCQkJCSZUVFNPcHNNaW5pbWFsVHVwbGUpOworCQl3aW5z dGF0ZS0+bmF2X3Nsb3RfcG9zID0gLTE7CiAKLQl3aW5zdGF0ZS0+bmV4dF9zbG90ID0gRXhlY0lu aXRFeHRyYVR1cGxlU2xvdChlc3RhdGUsIHNjYW5EZXNjLAotCQkJCQkJCQkJCQkJICZUVFNPcHNN aW5pbWFsVHVwbGUpOworCQl3aW5zdGF0ZS0+bmF2X251bGxfc2xvdCA9IEV4ZWNJbml0RXh0cmFU dXBsZVNsb3QoZXN0YXRlLCBzY2FuRGVzYywKKwkJCQkJCQkJCQkJCQkJICZUVFNPcHNNaW5pbWFs VHVwbGUpOworCQl3aW5zdGF0ZS0+bmF2X251bGxfc2xvdCA9IEV4ZWNTdG9yZUFsbE51bGxUdXBs ZSh3aW5zdGF0ZS0+bmF2X251bGxfc2xvdCk7CiAKLQl3aW5zdGF0ZS0+bnVsbF9zbG90ID0gRXhl Y0luaXRFeHRyYVR1cGxlU2xvdChlc3RhdGUsIHNjYW5EZXNjLAotCQkJCQkJCQkJCQkJICZUVFNP cHNNaW5pbWFsVHVwbGUpOwotCXdpbnN0YXRlLT5udWxsX3Nsb3QgPSBFeGVjU3RvcmVBbGxOdWxs VHVwbGUod2luc3RhdGUtPm51bGxfc2xvdCk7CisJCXdpbnN0YXRlLT5uYXZfc2F2ZWRfb3V0ZXJ0 dXBsZSA9IE5VTEw7CisJfQogCiAJLyoKIAkgKiBjcmVhdGUgZnJhbWUgaGVhZCBhbmQgdGFpbCBz bG90cyBvbmx5IGlmIG5lZWRlZCAobXVzdCBjcmVhdGUgc2xvdHMgaW4KQEAgLTI5MzUsNiArMjk0 OSwyMyBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRl LCBpbnQgZWZsYWdzKQogCQl3aW5zdGF0ZS0+YWdnX3dpbm9iaiA9IGFnZ193aW5vYmo7CiAJfQog CisJLyoKKwkgKiBTZXQgdXAgV2luZG93T2JqZWN0IGZvciBSUFIgbmF2aWdhdGlvbiBvcGNvZGVz LiAgVGhpcyBpcyBzZXBhcmF0ZSBmcm9tCisJICogYWdnX3dpbm9iaiBiZWNhdXNlIGl0IG5lZWRz IGl0cyBvd24gcmVhZCBwb2ludGVyIHRvIGF2b2lkIGludGVyZmVyaW5nCisJICogd2l0aCBhZ2dy ZWdhdGUgcHJvY2Vzc2luZy4KKwkgKi8KKwlpZiAobm9kZS0+cnBQYXR0ZXJuICE9IE5VTEwpCisJ eworCQlXaW5kb3dPYmplY3QgbmF2X3dpbm9iaiA9IG1ha2VOb2RlKFdpbmRvd09iamVjdERhdGEp OworCisJCW5hdl93aW5vYmotPndpbnN0YXRlID0gd2luc3RhdGU7CisJCW5hdl93aW5vYmotPmFy Z3N0YXRlcyA9IE5JTDsKKwkJbmF2X3dpbm9iai0+bG9jYWxtZW0gPSBOVUxMOworCQluYXZfd2lu b2JqLT5tYXJrcHRyID0gLTE7CisJCW5hdl93aW5vYmotPnJlYWRwdHIgPSAtMTsKKwkJd2luc3Rh dGUtPm5hdl93aW5vYmogPSBuYXZfd2lub2JqOworCX0KKwogCS8qIFNldCB0aGUgc3RhdHVzIHRv IHJ1bm5pbmcgKi8KIAl3aW5zdGF0ZS0+c3RhdHVzID0gV0lORE9XQUdHX1JVTjsKIApAQCAtMjk3 NSw3ICszMDA2LDkgQEAgRXhlY0luaXRXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBFU3RhdGUg KmVzdGF0ZSwgaW50IGVmbGFncykKIAlpZiAobm9kZS0+ZGVmaW5lQ2xhdXNlICE9IE5JTCkKIAl7 CiAJCS8qCi0JCSAqIFR3ZWFrIGFyZyB2YXIgb2YgUFJFVi9ORVhUIHNvIHRoYXQgaXQgcmVmZXJz IHRvIHNjYW4vaW5uZXIgc2xvdC4KKwkJICogQ29tcGlsZSBERUZJTkUgY2xhdXNlIGV4cHJlc3Np b25zLiAgUFJFVi9ORVhUIG5hdmlnYXRpb24gaXMgaGFuZGxlZAorCQkgKiBieSBFRU9QX1JQUl9O QVZfU0VUL1JFU1RPUkUgb3Bjb2RlcyBlbWl0dGVkIGR1cmluZyBFeGVjSW5pdEV4cHIsIHNvCisJ CSAqIG5vIHZhcm5vIHJld3JpdGluZyBpcyBuZWVkZWQgaGVyZS4KIAkJICovCiAJCWZvcmVhY2go bCwgbm9kZS0+ZGVmaW5lQ2xhdXNlKQogCQl7CkBAIC0yOTkyLDcgKzMwMjUsNiBAQCBFeGVjSW5p dFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQog CQkJd2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlzdCA9CiAJCQkJbGFwcGVuZCh3aW5zdGF0ZS0+ ZGVmaW5lVmFyaWFibGVMaXN0LAogCQkJCQkJbWFrZVN0cmluZyhwc3RyZHVwKG5hbWUpKSk7Ci0J CQlhdHRub19tYXAoKE5vZGUgKikgZXhwcik7CiAJCQlleHBzID0gRXhlY0luaXRFeHByKGV4cHIs IChQbGFuU3RhdGUgKikgd2luc3RhdGUpOwogCQkJd2luc3RhdGUtPmRlZmluZUNsYXVzZUxpc3Qg PQogCQkJCWxhcHBlbmQod2luc3RhdGUtPmRlZmluZUNsYXVzZUxpc3QsIGV4cHMpOwpAQCAtMzAy NywxMDcgKzMwNTksMzggQEAgRXhlY0luaXRXaW5kb3dBZ2coV2luZG93QWdnICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIH0KIAogLyoKLSAqIFJld3JpdGUgdmFybm8gb2YgVmFy IG5vZGVzIHRoYXQgYXJlIHRoZSBhcmd1bWVudCBvZiBQUkVWL05FVCBzbyB0aGF0IHRoZXkKLSAq IHNlZSBzY2FuIHR1cGxlIChQUkVWKSBvciBpbm5lciB0dXBsZSAoTkVYVCkuICBBbHNvIHdlIGNo ZWNrIHRoZSBhcmd1bWVudHMKLSAqIG9mIFBSRVYvTkVYVCBpbmNsdWRlIGF0IGxlYXN0IDEgY29s dW1uIHJlZmVyZW5jZS4gVGhpcyBpcyByZXF1aXJlZCBieSB0aGUKLSAqIFNRTCBzdGFuZGFyZC4K KyAqIEV4ZWNSUFJOYXZHZXRTbG90CisgKgorICogRmV0Y2ggdHVwbGUgYXQgZ2l2ZW4gcG9zaXRp b24gZm9yIFJQUiBuYXZpZ2F0aW9uIG9wY29kZXMuCisgKiBSZXR1cm5zIG5hdl9zbG90IHdpdGgg dGhlIHR1cGxlIGxvYWRlZCwgb3IgbmF2X251bGxfc2xvdCBpZiBvdXQgb2YgcmFuZ2UuCiAgKi8K LXN0YXRpYyB2b2lkCi1hdHRub19tYXAoTm9kZSAqbm9kZSkKK1R1cGxlVGFibGVTbG90ICoKK0V4 ZWNSUFJOYXZHZXRTbG90KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgcG9zKQogewot CSh2b2lkKSBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGF0dG5vX21hcF93YWxrZXIsIE5V TEwpOwotfQorCVdpbmRvd09iamVjdCB3aW5vYmogPSB3aW5zdGF0ZS0+bmF2X3dpbm9iajsKKwlU dXBsZVRhYmxlU2xvdCAqc2xvdCA9IHdpbnN0YXRlLT5uYXZfc2xvdDsKIAotc3RhdGljIGJvb2wK LWF0dG5vX21hcF93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKLXsKLQlGdW5jRXhw ciAgICpmdW5jOwotCWludAkJCW5hcmdzOwotCWJvb2wJCWlzX3ByZXY7CisJaWYgKHBvcyA8IDAp CisJCXJldHVybiB3aW5zdGF0ZS0+bmF2X251bGxfc2xvdDsKIAotCWlmIChub2RlID09IE5VTEwp Ci0JCXJldHVybiBmYWxzZTsKKwkvKgorCSAqIElmIG5hdl9zbG90IGFscmVhZHkgaG9sZHMgdGhp cyBwb3NpdGlvbiwgcmV0dXJuIGl0IHdpdGhvdXQgcmUtZmV0Y2hpbmcuCisJICogVGhpcyBpcyBj cml0aWNhbCB3aGVuIG11bHRpcGxlIFBSRVYvTkVYVCBjYWxscyBpbiB0aGUgc2FtZSBleHByZXNz aW9uCisJICogbmF2aWdhdGUgdG8gdGhlIHNhbWUgcm93LCBiZWNhdXNlIHJlLWZldGNoaW5nIHdv dWxkIGZyZWUgdGhlIHNsb3QncworCSAqIHR1cGxlIG1lbW9yeSBhbmQgaW52YWxpZGF0ZSBhbnkg cGFzcy1ieS1yZWYgRGF0dW0gcG9pbnRlcnMgZnJvbSBlYXJsaWVyCisJICogbmF2aWdhdGlvbiBy ZXN1bHRzLgorCSAqLworCWlmICh3aW5zdGF0ZS0+bmF2X3Nsb3RfcG9zID09IHBvcykKKwkJcmV0 dXJuIHNsb3Q7CiAKLQlpZiAoSXNBKG5vZGUsIEZ1bmNFeHByKSkKKwlpZiAoIXdpbmRvd19nZXR0 dXBsZXNsb3Qod2lub2JqLCBwb3MsIHNsb3QpKQogCXsKLQkJZnVuYyA9IChGdW5jRXhwciAqKSBu b2RlOwotCi0JCWlmIChmdW5jLT5mdW5jaWQgPT0gRl9QUkVWIHx8IGZ1bmMtPmZ1bmNpZCA9PSBG X05FWFQpCi0JCXsKLQkJCS8qCi0JCQkgKiBUaGUgU1FMIHN0YW5kYXJkIGFsbG93cyB0byBoYXZl IHR3byBtb3JlIGFyZ3VtZW50cyBmb3JtIG9mCi0JCQkgKiBQUkVWL05FWFQuICBCdXQgY3VycmVu dGx5IHdlIGFsbG93IG9ubHkgMSBhcmd1bWVudCBmb3JtLgotCQkJICovCi0JCQluYXJncyA9IGxp c3RfbGVuZ3RoKGZ1bmMtPmFyZ3MpOwotCQkJaWYgKGxpc3RfbGVuZ3RoKGZ1bmMtPmFyZ3MpICE9 IDEpCi0JCQkJZWxvZyhFUlJPUiwgIlBSRVYvTkVYVCBtdXN0IGhhdmUgMSBhcmd1bWVudCBidXQg ZnVuY3Rpb24gJWQgaGFzICVkIGFyZ3MiLAotCQkJCQkgZnVuYy0+ZnVuY2lkLCBuYXJncyk7Ci0K LQkJCS8qCi0JCQkgKiBDaGVjayBleHByIG9mIFBSRVYvTkVYVCBhcnVndW1lbnRzIGFuZCByZXBs YWNlIHZhcm5vLgotCQkJICovCi0JCQlpc19wcmV2ID0gKGZ1bmMtPmZ1bmNpZCA9PSBGX1BSRVYp ID8gdHJ1ZSA6IGZhbHNlOwotCQkJY2hlY2tfcnByX25hdmlnYXRpb24obm9kZSwgaXNfcHJldik7 Ci0JCX0KKwkJd2luc3RhdGUtPm5hdl9zbG90X3BvcyA9IC0xOworCQlyZXR1cm4gd2luc3RhdGUt Pm5hdl9udWxsX3Nsb3Q7CiAJfQotCXJldHVybiBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUs IGF0dG5vX21hcF93YWxrZXIsIE5VTEwpOwotfQogCi0vKgotICogUmV3cml0ZSB2YXJubyBvZiBW YXIgb2YgUlBSIG5hdmlnYXRpb24gb3BlcmF0aW9ucyAoUFJFVi9ORVhUKS4KLSAqIElmIGlzX3By ZXYgaXMgdHJ1ZSwgd2UgdGFrZSBjYXJlIFBSRVYsIG90aGVyd2lzZSBORVhULgotICovCi1zdGF0 aWMgdm9pZAotY2hlY2tfcnByX25hdmlnYXRpb24oTm9kZSAqbm9kZSwgYm9vbCBpc19wcmV2KQot ewotCU5hdmlnYXRpb25JbmZvIGNvbnRleHQ7Ci0KLQljb250ZXh0LmlzX3ByZXYgPSBpc19wcmV2 OwotCWNvbnRleHQubnVtX3ZhcnMgPSAwOwotCSh2b2lkKSBleHByZXNzaW9uX3RyZWVfd2Fsa2Vy KG5vZGUsIHJwcl9uYXZpZ2F0aW9uX3dhbGtlciwgJmNvbnRleHQpOwotCWlmIChjb250ZXh0Lm51 bV92YXJzIDwgMSkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQllcnJtc2coInJvdyBwYXR0ZXJuIG5h dmlnYXRpb24gb3BlcmF0aW9uJ3MgYXJndW1lbnQgbXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBj b2x1bW4gcmVmZXJlbmNlIikpOwotfQotCi1zdGF0aWMgYm9vbAotcnByX25hdmlnYXRpb25fd2Fs a2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCi17Ci0JTmF2aWdhdGlvbkluZm8gKm5hdiA9 IChOYXZpZ2F0aW9uSW5mbyAqKSBjb250ZXh0OwotCi0JaWYgKG5vZGUgPT0gTlVMTCkKLQkJcmV0 dXJuIGZhbHNlOwotCi0Jc3dpdGNoIChub2RlVGFnKG5vZGUpKQotCXsKLQkJY2FzZSBUX1ZhcjoK LQkJCXsKLQkJCQlWYXIJCSAgICp2YXIgPSAoVmFyICopIG5vZGU7Ci0KLQkJCQluYXYtPm51bV92 YXJzKys7Ci0KLQkJCQlpZiAobmF2LT5pc19wcmV2KQotCQkJCXsKLQkJCQkJLyoKLQkJCQkJICog UmV3cml0ZSB2YXJubyBmcm9tIE9VVEVSX1ZBUiB0byByZWd1bGFyIHZhciBubyBzbyB0aGF0Ci0J CQkJCSAqIHRoZSB2YXIgcmVmZXJlbmNlcyBzY2FuIHR1cGxlLgotCQkJCQkgKi8KLQkJCQkJdmFy LT52YXJubyA9IHZhci0+dmFybm9zeW47Ci0JCQkJfQotCQkJCWVsc2UKLQkJCQkJdmFyLT52YXJu byA9IElOTkVSX1ZBUjsKLQkJCX0KLQkJCWJyZWFrOwotCQljYXNlIFRfQ29uc3Q6Ci0JCWNhc2Ug VF9GdW5jRXhwcjoKLQkJY2FzZSBUX09wRXhwcjoKLQkJCWJyZWFrOwotCi0JCWRlZmF1bHQ6Ci0J CQllcmVwb3J0KEVSUk9SLAotCQkJCQllcnJtc2coInJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3Bl cmF0aW9uJ3MgYXJndW1lbnQgaW5jbHVkZXMgdW5zdXBwb3J0ZWQgZXhwcmVzc2lvbiIpKTsKLQl9 Ci0JcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgcnByX25hdmlnYXRpb25fd2Fs a2VyLCBjb250ZXh0KTsKKwl3aW5zdGF0ZS0+bmF2X3Nsb3RfcG9zID0gcG9zOworCXJldHVybiBz bG90OwogfQogCiAKQEAgLTMxODgsOCArMzE1MSw4IEBAIEV4ZWNSZVNjYW5XaW5kb3dBZ2coV2lu ZG93QWdnU3RhdGUgKm5vZGUpCiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+YWdnX3Jvd19zbG90KTsK IAlFeGVjQ2xlYXJUdXBsZShub2RlLT50ZW1wX3Nsb3RfMSk7CiAJRXhlY0NsZWFyVHVwbGUobm9k ZS0+dGVtcF9zbG90XzIpOwotCUV4ZWNDbGVhclR1cGxlKG5vZGUtPnByZXZfc2xvdCk7Ci0JRXhl Y0NsZWFyVHVwbGUobm9kZS0+bmV4dF9zbG90KTsKKwlpZiAobm9kZS0+bmF2X3Nsb3QpCisJCUV4 ZWNDbGVhclR1cGxlKG5vZGUtPm5hdl9zbG90KTsKIAlpZiAobm9kZS0+ZnJhbWVoZWFkX3Nsb3Qp CiAJCUV4ZWNDbGVhclR1cGxlKG5vZGUtPmZyYW1laGVhZF9zbG90KTsKIAlpZiAobm9kZS0+ZnJh bWV0YWlsX3Nsb3QpCkBAIC00Mjc4LDYgKzQyNDEsMTAgQEAgcmVnaXN0ZXJfcmVzdWx0OgogICog UmV0dXJucyB0cnVlIGlmIHRoZSByb3cgZXhpc3RzLCBmYWxzZSBpZiBvdXQgb2YgcGFydGl0aW9u LgogICogSWYgcm93IGV4aXN0cywgZmlsbHMgdmFyTWF0Y2hlZCBhcnJheS4KICAqIHZhck1hdGNo ZWRbaV0gPSB0cnVlIGlmIHZhcmlhYmxlIGkgbWF0Y2hlZCBhdCBjdXJyZW50IHJvdy4KKyAqCisg KiBVc2VzIDEtc2xvdCBtb2RlbDogb25seSBlY3h0X291dGVydHVwbGUgaXMgc2V0IHRvIHRoZSBj dXJyZW50IHJvdy4KKyAqIFBSRVYvTkVYVCBuYXZpZ2F0aW9uIGlzIGhhbmRsZWQgYnkgRUVPUF9S UFJfTkFWX1NFVC9SRVNUT1JFIG9wY29kZXMKKyAqIGR1cmluZyBleHByZXNzaW9uIGV2YWx1YXRp b24sIHdoaWNoIHRlbXBvcmFyaWx5IHN3YXAgdGhlIHNsb3QuCiAgKi8KIHN0YXRpYyBib29sCiBu ZmFfZXZhbHVhdGVfcm93KFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0IHBvcywgYm9vbCAqdmFy TWF0Y2hlZCkKQEAgLTQyODgsMzcgKzQyNTUsMjUgQEAgbmZhX2V2YWx1YXRlX3JvdyhXaW5kb3dP YmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MsIGJvb2wgKnZhck1hdGNoZWQpCiAJTGlzdENlbGwgICAq bGM7CiAJaW50CQkJdmFySWR4ID0gMDsKIAlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKKwlpbnQ2NAkJ c2F2ZWRfcG9zOwogCi0JLyoKLQkgKiBTZXQgdXAgc2xvdHMgZm9yIGN1cnJlbnQsIHByZXZpb3Vz LCBhbmQgbmV4dCByb3dzLiBXZSBkb24ndCBjYWxsCi0JICogZ2V0X3Nsb3RzKCkgaGVyZSB0byBh dm9pZCByZWN1cnNpb24gdGhyb3VnaCByb3dfaXNfaW5fZnJhbWUgLT4KLQkgKiB1cGRhdGVfcmVk dWNlZF9mcmFtZSAtPiBFeGVjUlBSUHJvY2Vzc1Jvdy4KLQkgKi8KLQotCS8qIEN1cnJlbnQgcm93 IC0+IGVjeHRfb3V0ZXJ0dXBsZSAqLworCS8qIEZldGNoIGN1cnJlbnQgcm93IGludG8gdGVtcF9z bG90XzEgKi8KIAlzbG90ID0gd2luc3RhdGUtPnRlbXBfc2xvdF8xOwogCWlmICghd2luZG93X2dl dHR1cGxlc2xvdCh3aW5vYmosIHBvcywgc2xvdCkpCiAJCXJldHVybiBmYWxzZTsJCQkvKiBObyBy b3cgZXhpc3RzICovCisKKwkvKiBTZXQgdXAgMS1zbG90IGNvbnRleHQ6IG9ubHkgZWN4dF9vdXRl cnR1cGxlICovCiAJZWNvbnRleHQtPmVjeHRfb3V0ZXJ0dXBsZSA9IHNsb3Q7CiAKLQkvKiBQcmV2 aW91cyByb3cgLT4gZWN4dF9zY2FudHVwbGUgKGZvciBQUkVWKSAqLwotCWlmIChwb3MgPiAwKQot CXsKLQkJc2xvdCA9IHdpbnN0YXRlLT5wcmV2X3Nsb3Q7Ci0JCWlmICghd2luZG93X2dldHR1cGxl c2xvdCh3aW5vYmosIHBvcyAtIDEsIHNsb3QpKQotCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxl ID0gd2luc3RhdGUtPm51bGxfc2xvdDsKLQkJZWxzZQotCQkJZWNvbnRleHQtPmVjeHRfc2NhbnR1 cGxlID0gc2xvdDsKLQl9Ci0JZWxzZQotCQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSB3aW5z dGF0ZS0+bnVsbF9zbG90OworCS8qCisJICogU2F2ZSBhbmQgc2V0IGN1cnJlbnRwb3Mgc28gdGhh dCBFRU9QX1JQUl9OQVZfU0VUIG9wY29kZXMgY2FuIGNhbGN1bGF0ZQorCSAqIHRhcmdldCBwb3Np dGlvbnMgKGN1cnJlbnRwb3MgKy8tIG9mZnNldCkuCisJICovCisJc2F2ZWRfcG9zID0gd2luc3Rh dGUtPmN1cnJlbnRwb3M7CisJd2luc3RhdGUtPmN1cnJlbnRwb3MgPSBwb3M7CiAKLQkvKiBOZXh0 IHJvdyAtPiBlY3h0X2lubmVydHVwbGUgKGZvciBORVhUKSAqLwotCXNsb3QgPSB3aW5zdGF0ZS0+ bmV4dF9zbG90OwotCWlmICghd2luZG93X2dldHR1cGxlc2xvdCh3aW5vYmosIHBvcyArIDEsIHNs b3QpKQotCQllY29udGV4dC0+ZWN4dF9pbm5lcnR1cGxlID0gd2luc3RhdGUtPm51bGxfc2xvdDsK LQllbHNlCi0JCWVjb250ZXh0LT5lY3h0X2lubmVydHVwbGUgPSBzbG90OworCS8qIEludmFsaWRh dGUgbmF2X3Nsb3QgY2FjaGUgc28gUFJFVi9ORVhUIHJlLWZldGNoIGZvciBuZXcgcm93ICovCisJ d2luc3RhdGUtPm5hdl9zbG90X3BvcyA9IC0xOwogCiAJZm9yZWFjaChsYywgd2luc3RhdGUtPmRl ZmluZUNsYXVzZUxpc3QpCiAJewpAQCAtNDMzNiw2ICs0MjkxLDggQEAgbmZhX2V2YWx1YXRlX3Jv dyhXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2NCBwb3MsIGJvb2wgKnZhck1hdGNoZWQpCiAJCQli cmVhazsKIAl9CiAKKwl3aW5zdGF0ZS0+Y3VycmVudHBvcyA9IHNhdmVkX3BvczsKKwogCXJldHVy biB0cnVlOwkJCQkvKiBSb3cgZXhpc3RzICovCiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jIGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9l eHByLmMKaW5kZXggNjUwZjFkNDJhOTMuLmQxNThlMzdlN2I1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9s bHZtaml0X2V4cHIuYwpAQCAtMjk2LDYgKzI5Niw0MCBAQCBsbHZtX2NvbXBpbGVfZXhwcihFeHBy U3RhdGUgKnN0YXRlKQogCQkJCQkJCQkgICBGSUVMRE5PX0VYUFJDT05URVhUX0FHR05VTExTLAog CQkJCQkJCQkgICAidi5lY29udGV4dC5hZ2dudWxscyIpOwogCisJLyoKKwkgKiBSUFIgbmF2aWdh dGlvbiBvcGNvZGVzIChQUkVWL05FWFQpIHN3YXAgZWN4dF9vdXRlcnR1cGxlIHRvIGEgZGlmZmVy ZW50CisJICogcm93IG1pZC1leHByZXNzaW9uLiAgVGhlIEpJVCBjb2RlIGxvYWRzIHZfb3V0ZXJ2 YWx1ZXMgYW5kIHZfb3V0ZXJudWxscworCSAqIG9uY2UgaW4gdGhlIGVudHJ5IGJsb2NrIGFuZCBy ZXVzZXMgdGhlbSBmb3IgYWxsIEVFT1BfT1VURVJfVkFSIHN0ZXBzLgorCSAqIEFmdGVyIGEgc2xv dCBzd2FwLCB0aGVzZSBwb2ludGVycyBiZWNvbWUgc3RhbGUgYmVjYXVzZSB0aGUgbmV3IHNsb3Qg aGFzCisJICogaXRzIG93biB0dHNfdmFsdWVzL3R0c19pc251bGwgYXJyYXlzLiAgRmFsbCBiYWNr IHRvIHRoZSBpbnRlcnByZXRlciBmb3IKKwkgKiB0aGVzZSBleHByZXNzaW9ucy4KKwkgKgorCSAq IFhYWCBUbyBKSVQtY29tcGlsZSB0aGVzZSBleHByZXNzaW9ucyBwcm9wZXJseSwgdGhlIE5BVl9T RVQgYW5kCisJICogTkFWX1JFU1RPUkUgaGFuZGxlcnMgd291bGQgbmVlZCB0byByZWxvYWQgdGhl IHR0c192YWx1ZXMgYW5kIHR0c19pc251bGwKKwkgKiBwb2ludGVycyBmcm9tIHRoZSBuZXcgc2xv dC4gIEhvd2V2ZXIsIExMVk0gdXNlcyBTU0EgKFN0YXRpYyBTaW5nbGUKKwkgKiBBc3NpZ25tZW50 KSBmb3JtIHdoZXJlIGVhY2ggdmFsdWUgaXMgZGVmaW5lZCBleGFjdGx5IG9uY2UuICBXaGVuCisJ ICogZGlmZmVyZW50IGJhc2ljIGJsb2NrcyBwcm9kdWNlIGRpZmZlcmVudCB2YWx1ZXMgZm9yIHRo ZSBzYW1lIHBvaW50ZXIsCisJICogTExWTSByZXF1aXJlcyBQSEkgbm9kZXMgYXQgdGhlIG1lcmdl IHBvaW50IHRvIHNlbGVjdCB0aGUgY29ycmVjdCBvbmUuCisJICogV2l0aG91dCB0aGF0IHBsdW1i aW5nLCBPVVRFUl9WQVIgc3RlcHMgYWZ0ZXIgYSBzbG90IHN3YXAgd291bGQgcmVhZAorCSAqIGZy b20gdGhlIHdyb25nIHBvaW50ZXIuCisJICovCisJaWYgKHBhcmVudCAmJiBJc0EocGFyZW50LCBX aW5kb3dBZ2dTdGF0ZSkgJiYKKwkJKChXaW5kb3dBZ2cgKikgcGFyZW50LT5wbGFuKS0+cnBQYXR0 ZXJuICE9IE5VTEwpCisJeworCQlmb3IgKGludCBvcG5vID0gMDsgb3BubyA8IHN0YXRlLT5zdGVw c19sZW47IG9wbm8rKykKKwkJeworCQkJRXhwckV2YWxPcAlvcGNvZGUgPSBFeGVjRXZhbFN0ZXBP cChzdGF0ZSwgJnN0YXRlLT5zdGVwc1tvcG5vXSk7CisKKwkJCWlmIChvcGNvZGUgPT0gRUVPUF9S UFJfTkFWX1NFVCB8fAorCQkJCW9wY29kZSA9PSBFRU9QX1JQUl9OQVZfUkVTVE9SRSkKKwkJCXsK KwkJCQlMTFZNRGVsZXRlRnVuY3Rpb24oZXZhbF9mbik7CisJCQkJTExWTURpc3Bvc2VCdWlsZGVy KGIpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJfQorCX0KKwogCS8qIGFsbG9jYXRlIGJs b2NrcyBmb3IgZWFjaCBvcCB1cGZyb250LCBzbyB3ZSBjYW4gZG8ganVtcHMgZWFzaWx5ICovCiAJ b3BibG9ja3MgPSBwYWxsb2NfYXJyYXkoTExWTUJhc2ljQmxvY2tSZWYsIHN0YXRlLT5zdGVwc19s ZW4pOwogCWZvciAoaW50IG9wbm8gPSAwOyBvcG5vIDwgc3RhdGUtPnN0ZXBzX2xlbjsgb3Bubysr KQpAQCAtMjQzMiw2ICsyNDY2LDEyIEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3Rh dGUpCiAJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyArIDFdKTsKIAkJCQlicmVhazsK IAorCQkJY2FzZSBFRU9QX1JQUl9OQVZfU0VUOgorCQkJY2FzZSBFRU9QX1JQUl9OQVZfUkVTVE9S RToKKwkJCQkvKiB1bnJlYWNoYWJsZTogZmlsdGVyZWQgb3V0IGJ5IHRoZSBwcmUtc2NhbiBhYm92 ZSAqLworCQkJCUFzc2VydChmYWxzZSk7CisJCQkJcmV0dXJuIGZhbHNlOworCiAJCQljYXNlIEVF T1BfQUdHX1NUUklDVF9ERVNFUklBTElaRToKIAkJCWNhc2UgRUVPUF9BR0dfREVTRVJJQUxJWkU6 CiAJCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5j IGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90eXBlcy5jCmluZGV4IGM4YTFmODQxMjkz Li5lNzhiMzFkNzc1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF90 eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYwpAQCAtMTY4 LDYgKzE2OCw4IEBAIHZvaWQJICAgKnJlZmVyZW5jZWRfZnVuY3Rpb25zW10gPQogCUV4ZWNFdmFs U2NhbGFyQXJyYXlPcCwKIAlFeGVjRXZhbEhhc2hlZFNjYWxhckFycmF5T3AsCiAJRXhlY0V2YWxT dWJQbGFuLAorCUV4ZWNFdmFsUlBSTmF2U2V0LAorCUV4ZWNFdmFsUlBSTmF2UmVzdG9yZSwKIAlF eGVjRXZhbFN5c1ZhciwKIAlFeGVjRXZhbFdob2xlUm93VmFyLAogCUV4ZWNFdmFsWG1sRXhwciwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQv bm9kZXMvbm9kZUZ1bmNzLmMKaW5kZXggMWFkZGE3YzVkODQuLmQyZjE5NTg0MDcwIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rl cy9ub2RlRnVuY3MuYwpAQCAtNjksNiArNjksOSBAQCBleHByVHlwZShjb25zdCBOb2RlICpleHBy KQogCQljYXNlIFRfTWVyZ2VTdXBwb3J0RnVuYzoKIAkJCXR5cGUgPSAoKGNvbnN0IE1lcmdlU3Vw cG9ydEZ1bmMgKikgZXhwciktPm1zZnR5cGU7CiAJCQlicmVhazsKKwkJY2FzZSBUX1JQUk5hdkV4 cHI6CisJCQl0eXBlID0gKChjb25zdCBSUFJOYXZFeHByICopIGV4cHIpLT5yZXN1bHR0eXBlOwor CQkJYnJlYWs7CiAJCWNhc2UgVF9TdWJzY3JpcHRpbmdSZWY6CiAJCQl0eXBlID0gKChjb25zdCBT dWJzY3JpcHRpbmdSZWYgKikgZXhwciktPnJlZnJlc3R5cGU7CiAJCQlicmVhazsKQEAgLTg1Myw2 ICs4NTYsOSBAQCBleHByQ29sbGF0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9NZXJn ZVN1cHBvcnRGdW5jOgogCQkJY29sbCA9ICgoY29uc3QgTWVyZ2VTdXBwb3J0RnVuYyAqKSBleHBy KS0+bXNmY29sbGlkOwogCQkJYnJlYWs7CisJCWNhc2UgVF9SUFJOYXZFeHByOgorCQkJY29sbCA9 ICgoY29uc3QgUlBSTmF2RXhwciAqKSBleHByKS0+cmVzdWx0Y29sbGlkOworCQkJYnJlYWs7CiAJ CWNhc2UgVF9TdWJzY3JpcHRpbmdSZWY6CiAJCQljb2xsID0gKChjb25zdCBTdWJzY3JpcHRpbmdS ZWYgKikgZXhwciktPnJlZmNvbGxpZDsKIAkJCWJyZWFrOwpAQCAtMTE1NCw2ICsxMTYwLDkgQEAg ZXhwclNldENvbGxhdGlvbihOb2RlICpleHByLCBPaWQgY29sbGF0aW9uKQogCQljYXNlIFRfTWVy Z2VTdXBwb3J0RnVuYzoKIAkJCSgoTWVyZ2VTdXBwb3J0RnVuYyAqKSBleHByKS0+bXNmY29sbGlk ID0gY29sbGF0aW9uOwogCQkJYnJlYWs7CisJCWNhc2UgVF9SUFJOYXZFeHByOgorCQkJKChSUFJO YXZFeHByICopIGV4cHIpLT5yZXN1bHRjb2xsaWQgPSBjb2xsYXRpb247CisJCQlicmVhazsKIAkJ Y2FzZSBUX1N1YnNjcmlwdGluZ1JlZjoKIAkJCSgoU3Vic2NyaXB0aW5nUmVmICopIGV4cHIpLT5y ZWZjb2xsaWQgPSBjb2xsYXRpb247CiAJCQlicmVhazsKQEAgLTE0MjYsNiArMTQzNSw5IEBAIGV4 cHJMb2NhdGlvbihjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRfTWVyZ2VTdXBwb3J0RnVuYzoK IAkJCWxvYyA9ICgoY29uc3QgTWVyZ2VTdXBwb3J0RnVuYyAqKSBleHByKS0+bG9jYXRpb247CiAJ CQlicmVhazsKKwkJY2FzZSBUX1JQUk5hdkV4cHI6CisJCQlsb2MgPSAoKGNvbnN0IFJQUk5hdkV4 cHIgKikgZXhwciktPmxvY2F0aW9uOworCQkJYnJlYWs7CiAJCWNhc2UgVF9TdWJzY3JpcHRpbmdS ZWY6CiAJCQkvKiBqdXN0IHVzZSBjb250YWluZXIgYXJndW1lbnQncyBsb2NhdGlvbiAqLwogCQkJ bG9jID0gZXhwckxvY2F0aW9uKChOb2RlICopICgoY29uc3QgU3Vic2NyaXB0aW5nUmVmICopIGV4 cHIpLT5yZWZleHByKTsKQEAgLTIxODcsNiArMjE5OSwxNiBAQCBleHByZXNzaW9uX3RyZWVfd2Fs a2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsK KwkJY2FzZSBUX1JQUk5hdkV4cHI6CisJCQl7CisJCQkJUlBSTmF2RXhwciAqZXhwciA9IChSUFJO YXZFeHByICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhleHByLT5hcmcpKQorCQkJCQlyZXR1cm4g dHJ1ZTsKKwkJCQlpZiAoZXhwci0+b2Zmc2V0X2FyZyAmJiBXQUxLKGV4cHItPm9mZnNldF9hcmcp KQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfU3Vic2NyaXB0 aW5nUmVmOgogCQkJewogCQkJCVN1YnNjcmlwdGluZ1JlZiAqc2JzcmVmID0gKFN1YnNjcmlwdGlu Z1JlZiAqKSBub2RlOwpAQCAtMzExNiw2ICszMTM4LDE3IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRh dG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0K IAkJCWJyZWFrOworCQljYXNlIFRfUlBSTmF2RXhwcjoKKwkJCXsKKwkJCQlSUFJOYXZFeHByICpu YXYgPSAoUlBSTmF2RXhwciAqKSBub2RlOworCQkJCVJQUk5hdkV4cHIgKm5ld25vZGU7CisKKwkJ CQlGTEFUQ09QWShuZXdub2RlLCBuYXYsIFJQUk5hdkV4cHIpOworCQkJCU1VVEFURShuZXdub2Rl LT5hcmcsIG5hdi0+YXJnLCBFeHByICopOworCQkJCU1VVEFURShuZXdub2RlLT5vZmZzZXRfYXJn LCBuYXYtPm9mZnNldF9hcmcsIEV4cHIgKik7CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7 CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBUX1N1YnNjcmlwdGluZ1JlZjoKIAkJCXsKIAkJCQlT dWJzY3JpcHRpbmdSZWYgKnNic3JlZiA9IChTdWJzY3JpcHRpbmdSZWYgKikgbm9kZTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZnVuYy5jCmluZGV4IDIzYjAyZmIzYmMwLi5lMTRmZjRkYzQ5NCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfZnVuYy5jCkBAIC03NjAsNyArNzYwLDggQEAgUGFyc2VGdW5jT3JDb2x1bW4oUGFy c2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFtZSwgTGlzdCAqZmFyZ3MsCiAJLyogbmV4dCgp IGFuZCBwcmV2KCkgYXJlIG9ubHkgYWxsb3dlZCBpbiBhIFdJTkRPVyBERUZJTkUgY2xhdXNlICov CiAJaWYgKGZkcmVzdWx0ID09IEZVTkNERVRBSUxfTk9STUFMICYmCiAJCXBzdGF0ZS0+cF9leHBy X2tpbmQgIT0gRVhQUl9LSU5EX1JQUl9ERUZJTkUgJiYKLQkJKGZ1bmNpZCA9PSBGX1BSRVYgfHwg ZnVuY2lkID09IEZfTkVYVCkpCisJCShmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlQgfHwgZnVu Y2lkID09IEZfTkVYVF9BTllFTEVNRU5UIHx8CisJCSBmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1F TlRfSU5UOCB8fCBmdW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlRfSU5UOCkpCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAogCQkJCSBlcnJtc2co IiVzIGNhbiBvbmx5IGJlIHVzZWQgaW4gYSBERUZJTkUgY2xhdXNlIiwKQEAgLTc2OCw3ICs3Njks MzIgQEAgUGFyc2VGdW5jT3JDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFt ZSwgTGlzdCAqZmFyZ3MsCiAJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGxvY2F0aW9u KSkpOwogCiAJLyogYnVpbGQgdGhlIGFwcHJvcHJpYXRlIG91dHB1dCBzdHJ1Y3R1cmUgKi8KLQlp ZiAoZmRyZXN1bHQgPT0gRlVOQ0RFVEFJTF9OT1JNQUwgfHwgZmRyZXN1bHQgPT0gRlVOQ0RFVEFJ TF9QUk9DRURVUkUpCisJaWYgKGZkcmVzdWx0ID09IEZVTkNERVRBSUxfTk9STUFMICYmCisJCShm dW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlQgfHwgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5U IHx8CisJCSBmdW5jaWQgPT0gRl9QUkVWX0FOWUVMRU1FTlRfSU5UOCB8fCBmdW5jaWQgPT0gRl9O RVhUX0FOWUVMRU1FTlRfSU5UOCkpCisJeworCQkvKgorCQkgKiBQUkVWKCkgYW5kIE5FWFQoKSBh cmUgY29tcGlsZWQgaW50byBFRU9QX1JQUl9OQVZfU0VUIC8KKwkJICogRUVPUF9SUFJfTkFWX1JF U1RPUkUgb3Bjb2RlcyBpbnN0ZWFkIG9mIGEgbm9ybWFsIGZ1bmN0aW9uIGNhbGwuCisJCSAqIFJl cHJlc2VudCB0aGVtIGFzIFJQUk5hdkV4cHIgbm9kZXMgc28gdGhhdCBsYXRlciBzdGFnZXMgY2Fu CisJCSAqIGlkZW50aWZ5IHRoZW0gd2l0aG91dCByZWx5aW5nIG9uIGZ1bmNpZCBjb21wYXJpc29u cy4KKwkJICovCisJCWJvb2wJCWlzX25leHQgPSAoZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5U IHx8CisJCQkJCQkJICAgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5UX0lOVDgpOworCQlib29s CQloYXNfb2Zmc2V0ID0gKGZ1bmNpZCA9PSBGX1BSRVZfQU5ZRUxFTUVOVF9JTlQ4IHx8CisJCQkJ CQkJCSAgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5UX0lOVDgpOworCQlSUFJOYXZFeHByICpu YXZleHByID0gbWFrZU5vZGUoUlBSTmF2RXhwcik7CisKKwkJbmF2ZXhwci0+a2luZCA9IGlzX25l eHQgPyBSUFJfTkFWX05FWFQgOiBSUFJfTkFWX1BSRVY7CisJCW5hdmV4cHItPmFyZyA9IChFeHBy ICopIGxpbml0aWFsKGZhcmdzKTsKKwkJbmF2ZXhwci0+b2Zmc2V0X2FyZyA9IGhhc19vZmZzZXQg PyAoRXhwciAqKSBsc2Vjb25kKGZhcmdzKSA6IE5VTEw7CisJCW5hdmV4cHItPnJlc3VsdHR5cGUg PSByZXR0eXBlOworCQkvKiByZXN1bHRjb2xsaWQgd2lsbCBiZSBzZXQgYnkgcGFyc2VfY29sbGF0 ZS5jICovCisJCW5hdmV4cHItPmxvY2F0aW9uID0gbG9jYXRpb247CisKKwkJcmV0dmFsID0gKE5v ZGUgKikgbmF2ZXhwcjsKKwl9CisJZWxzZSBpZiAoZmRyZXN1bHQgPT0gRlVOQ0RFVEFJTF9OT1JN QUwgfHwgZmRyZXN1bHQgPT0gRlVOQ0RFVEFJTF9QUk9DRURVUkUpCiAJewogCQlGdW5jRXhwciAg ICpmdW5jZXhwciA9IG1ha2VOb2RlKEZ1bmNFeHByKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3Jwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCmlu ZGV4IDU1MjgzYWI0YmJlLi4xMzU1OTg5ZTY2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3Jwci5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwpAQCAt MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21h a2VmdW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgIm9wdGlt aXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcnByLmgiCiAjaW5jbHVkZSAi cGFyc2VyL3BhcnNlX2NsYXVzZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jb2xsYXRlLmgi CkBAIC00MSw2ICs0Miw4IEBAIHN0YXRpYyB2b2lkIHZhbGlkYXRlUlBSUGF0dGVyblZhckNvdW50 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUlBSUGF0dGVybk5vZGUgKm5vZGUsCiAJCQkJCQkJCQkgICBM aXN0ICpycERlZnMsIExpc3QgKip2YXJOYW1lcyk7CiBzdGF0aWMgTGlzdCAqdHJhbnNmb3JtRGVm aW5lQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywKIAkJCQkJCQkJ ICAgV2luZG93RGVmICp3aW5kZWYsIExpc3QgKip0YXJnZXRsaXN0KTsKK3N0YXRpYyB2b2lkIGNo ZWNrX3Jwcl9uYXZfZXhwcihSUFJOYXZFeHByICpuYXYsIFBhcnNlU3RhdGUgKnBzdGF0ZSk7Citz dGF0aWMgYm9vbCBjaGVja19ycHJfbmF2X25lc3Rpbmdfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQg KmNvbnRleHQpOwogCiAvKgogICogdHJhbnNmb3JtUlBSCkBAIC00MDAsNiArNDAzLDEwIEBAIHRy YW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2Ms IFdpbmRvd0RlZiAqd2luZGVmLAogCWZvcmVhY2hfcHRyKFRhcmdldEVudHJ5LCB0ZSwgZGVmaW5l Q2xhdXNlKQogCQl0ZS0+ZXhwciA9IChFeHByICopIGNvZXJjZV90b19ib29sZWFuKHBzdGF0ZSwg KE5vZGUgKikgdGUtPmV4cHIsICJERUZJTkUiKTsKIAorCS8qIGNoZWNrIGZvciBuZXN0ZWQgUFJF Vi9ORVhUIGFuZCBtaXNzaW5nIGNvbHVtbiByZWZlcmVuY2VzICovCisJZm9yZWFjaF9wdHIoVGFy Z2V0RW50cnksIHRlLCBkZWZpbmVDbGF1c2UpCisJCSh2b2lkKSBjaGVja19ycHJfbmF2X25lc3Rp bmdfd2Fsa2VyKChOb2RlICopIHRlLT5leHByLCBwc3RhdGUpOworCiAJLyogbWFyayBjb2x1bW4g b3JpZ2lucyAqLwogCW1hcmtUYXJnZXRMaXN0T3JpZ2lucyhwc3RhdGUsIGRlZmluZUNsYXVzZSk7 CiAKQEAgLTQwOCwzICs0MTUsODMgQEAgdHJhbnNmb3JtRGVmaW5lQ2xhdXNlKFBhcnNlU3RhdGUg KnBzdGF0ZSwgV2luZG93Q2xhdXNlICp3YywgV2luZG93RGVmICp3aW5kZWYsCiAKIAlyZXR1cm4g ZGVmaW5lQ2xhdXNlOwogfQorCisvKgorICogY2hlY2tfcnByX25hdl9leHByCisgKgkJVmFsaWRh dGUgYSBzaW5nbGUgUlBSTmF2RXhwciBub2RlIGJ5IHdhbGtpbmcgaXRzIGFyZyBhbmQgb2Zmc2V0 X2FyZworICoJCXN1YnRyZWVzIGluIGEgc2luZ2xlIHBhc3MgZWFjaC4gIENoZWNrcyBmb3IgbmVz dGVkIFBSRVYvTkVYVCwgbWlzc2luZworICoJCWNvbHVtbiByZWZlcmVuY2VzLCBhbmQgbm9uLWNv bnN0YW50IG9mZnNldCBleHByZXNzaW9ucy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlib29s CQloYXNfbmF2OwkJLyogUlBSTmF2RXhwciBmb3VuZCAobmVzdGluZykgKi8KKwlib29sCQloYXNf Y29sdW1uX3JlZjsgLyogVmFyIGZvdW5kICovCit9CQkJTmF2Q2hlY2tSZXN1bHQ7CisKK3N0YXRp YyBib29sCituYXZfY2hlY2tfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCit7CisJ TmF2Q2hlY2tSZXN1bHQgKnJlc3VsdCA9IChOYXZDaGVja1Jlc3VsdCAqKSBjb250ZXh0OworCisJ aWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChJc0Eobm9kZSwgUlBSTmF2 RXhwcikpCisJCXJlc3VsdC0+aGFzX25hdiA9IHRydWU7CisJaWYgKElzQShub2RlLCBWYXIpKQor CQlyZXN1bHQtPmhhc19jb2x1bW5fcmVmID0gdHJ1ZTsKKworCXJldHVybiBleHByZXNzaW9uX3Ry ZWVfd2Fsa2VyKG5vZGUsIG5hdl9jaGVja193YWxrZXIsIGNvbnRleHQpOworfQorCitzdGF0aWMg dm9pZAorY2hlY2tfcnByX25hdl9leHByKFJQUk5hdkV4cHIgKm5hdiwgUGFyc2VTdGF0ZSAqcHN0 YXRlKQoreworCU5hdkNoZWNrUmVzdWx0IHJlc3VsdDsKKworCS8qIENoZWNrIGFyZyBzdWJ0cmVl OiBuZXN0aW5nICsgY29sdW1uIHJlZmVyZW5jZSBpbiBvbmUgd2FsayAqLworCW1lbXNldCgmcmVz dWx0LCAwLCBzaXplb2YocmVzdWx0KSk7CisJKHZvaWQpIG5hdl9jaGVja193YWxrZXIoKE5vZGUg KikgbmF2LT5hcmcsICZyZXN1bHQpOworCisJaWYgKHJlc3VsdC5oYXNfbmF2KQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkgZXJybXNnKCJQUkVWIGFuZCBORVhUIGNhbm5vdCBiZSBuZXN0ZWQiKSwKKwkJCQkgcGFyc2Vy X2VycnBvc2l0aW9uKHBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpKTsKKwlpZiAoIXJlc3VsdC5oYXNf Y29sdW1uX3JlZikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJIGVycm1zZygiYXJndW1lbnQgb2Ygcm93IHBhdHRlcm4gbmF2aWdhdGlv biBvcGVyYXRpb24gbXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBjb2x1bW4gcmVmZXJlbmNlIiks CisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG5hdi0+bG9jYXRpb24pKSk7CisKKwkv KiBDaGVjayBvZmZzZXRfYXJnOiBjb2x1bW4gcmVmICsgdm9sYXRpbGUgaW4gb25lIHdhbGsgKi8K KwlpZiAobmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpCisJeworCQltZW1zZXQoJnJlc3VsdCwgMCwg c2l6ZW9mKHJlc3VsdCkpOworCQkodm9pZCkgbmF2X2NoZWNrX3dhbGtlcigoTm9kZSAqKSBuYXYt Pm9mZnNldF9hcmcsICZyZXN1bHQpOworCisJCWlmIChyZXN1bHQuaGFzX2NvbHVtbl9yZWYgfHwK KwkJCWNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKChOb2RlICopIG5hdi0+b2Zmc2V0X2FyZykp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJCSBlcnJtc2coIlBSRVYvTkVYVCBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10 aW1lIGNvbnN0YW50IiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBuYXYtPmxv Y2F0aW9uKSkpOworCX0KK30KKworLyoKKyAqIGNoZWNrX3Jwcl9uYXZfbmVzdGluZ193YWxrZXIK KyAqCQlXYWxrIHRoZSBERUZJTkUgY2xhdXNlIGV4cHJlc3Npb24gdHJlZSBhbmQgdmFsaWRhdGUg ZWFjaCBSUFJOYXZFeHByLgorICovCitzdGF0aWMgYm9vbAorY2hlY2tfcnByX25hdl9uZXN0aW5n X3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KQoreworCWlmIChub2RlID09IE5VTEwp CisJCXJldHVybiBmYWxzZTsKKwlpZiAoSXNBKG5vZGUsIFJQUk5hdkV4cHIpKQorCXsKKwkJY2hl Y2tfcnByX25hdl9leHByKChSUFJOYXZFeHByICopIG5vZGUsIChQYXJzZVN0YXRlICopIGNvbnRl eHQpOworCQkvKiBkb24ndCByZWN1cnNlIGludG8gYXJnOyBuZXN0aW5nIGFscmVhZHkgY2hlY2tl ZCBhYm92ZSAqLworCQlyZXR1cm4gZmFsc2U7CisJfQorCXJldHVybiBleHByZXNzaW9uX3RyZWVf d2Fsa2VyKG5vZGUsIGNoZWNrX3Jwcl9uYXZfbmVzdGluZ193YWxrZXIsIGNvbnRleHQpOworfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IDI1YmM3ZGQ3Nzc5Li43MmY0ZjI2MzUzMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTAxMDYsNiArMTAxMDYsMjIgQEAgZ2V0 X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJCQlnZXRf ZnVuY19leHByKChGdW5jRXhwciAqKSBub2RlLCBjb250ZXh0LCBzaG93aW1wbGljaXQpOwogCQkJ YnJlYWs7CiAKKwkJY2FzZSBUX1JQUk5hdkV4cHI6CisJCQl7CisJCQkJUlBSTmF2RXhwciAqbmF2 ID0gKFJQUk5hdkV4cHIgKikgbm9kZTsKKworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVm LAorCQkJCQkJCQkJICAgbmF2LT5raW5kID09IFJQUl9OQVZfUFJFViA/ICJQUkVWKCIgOiAiTkVY VCgiKTsKKwkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIG5hdi0+YXJnLCBjb250ZXh0LCBzaG93 aW1wbGljaXQpOworCQkJCWlmIChuYXYtPm9mZnNldF9hcmcgIT0gTlVMTCkKKwkJCQl7CisJCQkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJCQkJZ2V0X3J1bGVfZXhwcigo Tm9kZSAqKSBuYXYtPm9mZnNldF9hcmcsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CisJCQkJfQor CQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsKKwkJCX0KKwkJCWJyZWFrOworCiAJ CWNhc2UgVF9OYW1lZEFyZ0V4cHI6CiAJCQl7CiAJCQkJTmFtZWRBcmdFeHByICpuYSA9IChOYW1l ZEFyZ0V4cHIgKikgbm9kZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5k b3dmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMKaW5kZXggNzRl ZjEwOWY3MmUuLjA5MTI2MGQyY2NlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQv d2luZG93ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvd2luZG93ZnVuY3MuYwpA QCAtNzI2LDIyICs3MjYsNjIgQEAgd2luZG93X250aF92YWx1ZShQR19GVU5DVElPTl9BUkdTKQog CiAvKgogICogcHJldgotICogRHVtbXkgZnVuY3Rpb24gdG8gaW52b2tlIFJQUidzIG5hdmlnYXRp b24gb3BlcmF0b3IgIlBSRVYiLgotICogVGhpcyBpcyAqbm90KiBhIHdpbmRvdyBmdW5jdGlvbi4K KyAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIFBSRVYgbmF2aWdhdGlvbiBvcGVyYXRv ci4KKyAqCisgKiBUaGUgcGFyc2VyIHRyYW5zZm9ybXMgcHJldigpIGNhbGxzIGluc2lkZSBERUZJ TkUgaW50byBSUFJOYXZFeHByIG5vZGVzLAorICogc28gdGhpcyBmdW5jdGlvbiBpcyBuZXZlciBy ZWFjaGVkIGR1cmluZyBub3JtYWwgUlBSIGV4ZWN1dGlvbi4gIEl0IGV4aXN0cworICogb25seSBz byB0aGF0IHRoZSBwYXJzZXIgY2FuIHJlc29sdmUgdGhlIGZ1bmN0aW9uIG5hbWUgZnJvbSBwZ19w cm9jLgorICogQ2FsbHMgb3V0c2lkZSBERUZJTkUgYXJlIHJlamVjdGVkIGJ5IHBhcnNlX2Z1bmMu YyAoRVhQUl9LSU5EX1JQUl9ERUZJTkUKKyAqIGNoZWNrKS4gIFRoZSBlcnJvciBiZWxvdyBpcyBh IGRlZmVuc2l2ZSBtZWFzdXJlIGluIGNhc2UgdGhhdCBjaGVjayBpcworICogYnlwYXNzZWQgKGUu Zy4sIGRpcmVjdCBDLWxldmVsIGZ1bmN0aW9uIGludm9jYXRpb24pLgogICovCiBEYXR1bQogd2lu ZG93X3ByZXYoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlQR19SRVRVUk5fREFUVU0oUEdfR0VUQVJH X0RBVFVNKDApKTsKKwllcmVwb3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygicHJldigpIGNhbiBvbmx5IGJlIHVzZWQgaW4g YSBERUZJTkUgY2xhdXNlIikpKTsKKwlQR19SRVRVUk5fTlVMTCgpOwkJCS8qIG5vdCByZWFjaGVk ICovCiB9CiAKIC8qCiAgKiBuZXh0Ci0gKiBEdW1teSBmdW5jdGlvbiB0byBpbnZva2UgUlBSJ3Mg bmF2aWdhdGlvbiBvcGVyYXRpb24gIk5FWFQiLgotICogVGhpcyBpcyAqbm90KiBhIHdpbmRvdyBm dW5jdGlvbi4KKyAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIE5FWFQgbmF2aWdhdGlv biBvcGVyYXRvci4KKyAqIFNlZSB3aW5kb3dfcHJldigpIGZvciBkZXRhaWxzLgogICovCiBEYXR1 bQogd2luZG93X25leHQoUEdfRlVOQ1RJT05fQVJHUykKIHsKLQlQR19SRVRVUk5fREFUVU0oUEdf R0VUQVJHX0RBVFVNKDApKTsKKwllcmVwb3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9G RUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJIGVycm1zZygibmV4dCgpIGNhbiBvbmx5IGJlIHVz ZWQgaW4gYSBERUZJTkUgY2xhdXNlIikpKTsKKwlQR19SRVRVUk5fTlVMTCgpOwkJCS8qIG5vdCBy ZWFjaGVkICovCit9CisKKy8qCisgKiBwcmV2KHZhbHVlLCBvZmZzZXQpCisgKiBDYXRhbG9nIHBs YWNlaG9sZGVyIGZvciBSUFIncyBQUkVWIG5hdmlnYXRpb24gb3BlcmF0b3Igd2l0aCBvZmZzZXQu CisgKiBTZWUgd2luZG93X3ByZXYoKSBmb3IgZGV0YWlscy4KKyAqLworRGF0dW0KK3dpbmRvd19w cmV2X29mZnNldChQR19GVU5DVElPTl9BUkdTKQoreworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkgZXJybXNnKCJwcmV2KCkg Y2FuIG9ubHkgYmUgdXNlZCBpbiBhIERFRklORSBjbGF1c2UiKSkpOworCVBHX1JFVFVSTl9OVUxM KCk7CQkJLyogbm90IHJlYWNoZWQgKi8KK30KKworLyoKKyAqIG5leHQodmFsdWUsIG9mZnNldCkK KyAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIE5FWFQgbmF2aWdhdGlvbiBvcGVyYXRv ciB3aXRoIG9mZnNldC4KKyAqIFNlZSB3aW5kb3dfcHJldigpIGZvciBkZXRhaWxzLgorICovCitE YXR1bQord2luZG93X25leHRfb2Zmc2V0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJZXJlcG9ydChF UlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCSBl cnJtc2coIm5leHQoKSBjYW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5FIGNsYXVzZSIpKSk7CisJ UEdfUkVUVVJOX05VTEwoKTsJCQkvKiBub3QgcmVhY2hlZCAqLwogfQpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggNTU3NDlkM2U1MTcuLjM0ZTRiMzc1YTYyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKQEAgLTEwOTc1LDkgKzEwOTc1LDE1IEBACiB7IG9pZCA9PiAnODEyNicsIGRlc2NyID0+ ICdwcmV2aW91cyB2YWx1ZScsCiAgIHByb25hbWUgPT4gJ3ByZXYnLCBwcm92b2xhdGlsZSA9PiAn cycsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAogICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxl bWVudCcsIHByb3NyYyA9PiAnd2luZG93X3ByZXYnIH0sCit7IG9pZCA9PiAnODEyOCcsIGRlc2Ny ID0+ICdwcmV2aW91cyB2YWx1ZSBhdCBvZmZzZXQnLAorICBwcm9uYW1lID0+ICdwcmV2JywgcHJv dm9sYXRpbGUgPT4gJ3MnLCBwcm9pc3N0cmljdCA9PiAnZicsIHByb3JldHR5cGUgPT4gJ2FueWVs ZW1lbnQnLAorICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCBpbnQ4JywgcHJvc3JjID0+ICd3 aW5kb3dfcHJldl9vZmZzZXQnIH0sCiB7IG9pZCA9PiAnODEyNycsIGRlc2NyID0+ICduZXh0IHZh bHVlJywKICAgcHJvbmFtZSA9PiAnbmV4dCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlw ZSA9PiAnYW55ZWxlbWVudCcsCiAgIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50JywgcHJvc3Jj ID0+ICd3aW5kb3dfbmV4dCcgfSwKK3sgb2lkID0+ICc4MTI5JywgZGVzY3IgPT4gJ25leHQgdmFs dWUgYXQgb2Zmc2V0JywKKyAgcHJvbmFtZSA9PiAnbmV4dCcsIHByb3ZvbGF0aWxlID0+ICdzJywg cHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywKKyAgcHJvYXJn dHlwZXMgPT4gJ2FueWVsZW1lbnQgaW50OCcsIHByb3NyYyA9PiAnd2luZG93X25leHRfb2Zmc2V0 JyB9LAogCiAjIGZ1bmN0aW9ucyBmb3IgcmFuZ2UgdHlwZXMKIHsgb2lkID0+ICczODMyJywgZGVz Y3IgPT4gJ0kvTycsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5o IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaAppbmRleCBhYTliMzYxZmEzMS4uZmFj MzdjOTY4OTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKKysr IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaApAQCAtMjc0LDYgKzI3NCwxMCBAQCB0 eXBlZGVmIGVudW0gRXhwckV2YWxPcAogCUVFT1BfTUVSR0VfU1VQUE9SVF9GVU5DLAogCUVFT1Bf U1VCUExBTiwKIAorCS8qIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gKFJQUiBQUkVWL05FWFQpICov CisJRUVPUF9SUFJfTkFWX1NFVCwKKwlFRU9QX1JQUl9OQVZfUkVTVE9SRSwKKwogCS8qIGFnZ3Jl Z2F0aW9uIHJlbGF0ZWQgbm9kZXMgKi8KIAlFRU9QX0FHR19TVFJJQ1RfREVTRVJJQUxJWkUsCiAJ RUVPUF9BR0dfREVTRVJJQUxJWkUsCkBAIC02OTEsNiArNjk1LDE2IEBAIHR5cGVkZWYgc3RydWN0 IEV4cHJFdmFsU3RlcAogCQkJU3ViUGxhblN0YXRlICpzc3RhdGU7CiAJCX0JCQlzdWJwbGFuOwog CisJCS8qIGZvciBFRU9QX1JQUl9OQVZfU0VUIC8gRUVPUF9SUFJfTkFWX1JFU1RPUkUgKi8KKwkJ c3RydWN0CisJCXsKKwkJCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZTsKKwkJCVJQUk5hdktpbmQJ a2luZDsJLyogUFJFViBvciBORVhUICovCisJCQlEYXR1bQkgICAqb2Zmc2V0X3ZhbHVlOwkvKiAy LWFyZzogcnVudGltZSBvZmZzZXQgdmFsdWUsIG9yCisJCQkJCQkJCQkJICogTlVMTCAqLworCQkJ Ym9vbAkgICAqb2Zmc2V0X2lzbnVsbDsJLyogMi1hcmc6IHJ1bnRpbWUgb2Zmc2V0IG51bGwgZmxh ZyAqLworCQl9CQkJcnByX25hdjsKKwogCQkvKiBmb3IgRUVPUF9BR0dfKkRFU0VSSUFMSVpFICov CiAJCXN0cnVjdAogCQl7CkBAIC04OTgsNiArOTEyLDEwIEBAIGV4dGVybiB2b2lkIEV4ZWNFdmFs TWVyZ2VTdXBwb3J0RnVuYyhFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJ CQkJCQkJIEV4cHJDb250ZXh0ICplY29udGV4dCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbFN1YlBs YW4oRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCQlFeHByQ29udGV4 dCAqZWNvbnRleHQpOworZXh0ZXJuIHZvaWQgRXhlY0V2YWxSUFJOYXZTZXQoRXhwclN0YXRlICpz dGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKKwkJCQkJCQkgIEV4cHJDb250ZXh0ICplY29udGV4dCk7 CitleHRlcm4gdm9pZCBFeGVjRXZhbFJQUk5hdlJlc3RvcmUoRXhwclN0YXRlICpzdGF0ZSwgRXhw ckV2YWxTdGVwICpvcCwKKwkJCQkJCQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJu IHZvaWQgRXhlY0V2YWxXaG9sZVJvd1ZhcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAg Km9wLAogCQkJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgRXhlY0V2 YWxTeXNWYXIoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1 dG9yL25vZGVXaW5kb3dBZ2cuaAppbmRleCBhZGE0YTFjNDU4Yy4uZjZmNjY0NTEzMWMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuaAorKysgYi9zcmMvaW5j bHVkZS9leGVjdXRvci9ub2RlV2luZG93QWdnLmgKQEAgLTIwLDQgKzIwLDcgQEAgZXh0ZXJuIFdp bmRvd0FnZ1N0YXRlICpFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWYKIGV4dGVybiB2b2lkIEV4ZWNFbmRXaW5kb3dBZ2coV2luZG93QWdnU3Rh dGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2NhbldpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0 ZSAqbm9kZSk7CiAKKy8qIFJQUiBuYXZpZ2F0aW9uIHN1cHBvcnQgZm9yIGV4cHJlc3Npb24gZXZh bHVhdGlvbiBvcGNvZGVzICovCitleHRlcm4gVHVwbGVUYWJsZVNsb3QgKkV4ZWNSUFJOYXZHZXRT bG90KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgcG9zKTsKKwogI2VuZGlmCQkJCQkJ CS8qIE5PREVXSU5ET1dBR0dfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAzMzAyOGMzZjEw Yi4uMzBlZTc2OWU0NWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC0yNjg5LDEwICsyNjg5LDEy IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd0FnZ1N0YXRlCiAJVHVwbGVUYWJsZVNsb3QgKnRlbXBf c2xvdF8xOwogCVR1cGxlVGFibGVTbG90ICp0ZW1wX3Nsb3RfMjsKIAotCS8qIHRlbXBvcmFyeSBz bG90cyBmb3IgUlBSICovCi0JVHVwbGVUYWJsZVNsb3QgKnByZXZfc2xvdDsJLyogUFJFViByb3cg bmF2aWdhdGlvbiBvcGVyYXRvciAqLwotCVR1cGxlVGFibGVTbG90ICpuZXh0X3Nsb3Q7CS8qIE5F WFQgcm93IG5hdmlnYXRpb24gb3BlcmF0b3IgKi8KLQlUdXBsZVRhYmxlU2xvdCAqbnVsbF9zbG90 OwkvKiBhbGwgTlVMTCBzbG90ICovCisJLyogUlBSIG5hdmlnYXRpb24gKi8KKwlzdHJ1Y3QgV2lu ZG93T2JqZWN0RGF0YSAqbmF2X3dpbm9iajsJLyogd2lub2JqIGZvciBSUFIgbmF2IGZldGNoICov CisJaW50NjQJCW5hdl9zbG90X3BvczsJLyogcG9zaXRpb24gY2FjaGVkIGluIG5hdl9zbG90LCBv ciAtMSAqLworCVR1cGxlVGFibGVTbG90ICpuYXZfc2xvdDsJLyogc2xvdCBmb3IgUFJFVi9ORVhU IHRhcmdldCByb3cgKi8KKwlUdXBsZVRhYmxlU2xvdCAqbmF2X3NhdmVkX291dGVydHVwbGU7CS8q IHNhdmVkIHNsb3QgZHVyaW5nIG5hdiBzd2FwICovCisJVHVwbGVUYWJsZVNsb3QgKm5hdl9udWxs X3Nsb3Q7CS8qIGFsbCBOVUxMIHNsb3QgKi8KIAogCS8qCiAJICogRWFjaCBieXRlIGNvcnJlc3Bv bmRzIHRvIGEgcm93IHBvc2l0aW9uZWQgYXQgYWJzb2x1dGUgaXRzIHBvcyBpbgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaAppbmRleCBmNWI2YjQ1NjY0YS4uOTQ3MjNhM2I5MDkgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rl cy5oCkBAIC02NDgsNiArNjQ4LDM3IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd0Z1bmNSdW5Db25k aXRpb24KIAlFeHByCSAgICphcmc7CiB9IFdpbmRvd0Z1bmNSdW5Db25kaXRpb247CiAKKy8qCisg KiBSUFJOYXZFeHByCisgKgorICogUmVwcmVzZW50cyBhIFBSRVYoKSBvciBORVhUKCkgbmF2aWdh dGlvbiBjYWxsIGluIGFuIFJQUiBERUZJTkUgY2xhdXNlLgorICogQXQgZXhwcmVzc2lvbiBjb21w aWxlIHRpbWUgdGhpcyBpcyB0cmFuc2xhdGVkIGludG8gRUVPUF9SUFJfTkFWX1NFVCAvCisgKiBF RU9QX1JQUl9OQVZfUkVTVE9SRSBvcGNvZGVzIHJhdGhlciB0aGFuIGEgbm9ybWFsIGZ1bmN0aW9u IGNhbGwuCisgKgorICoga2luZDogICAgICAgUlBSX05BVl9QUkVWIG9yIFJQUl9OQVZfTkVYVAor ICogYXJnOiAgICAgICAgdGhlIGV4cHJlc3Npb24gdG8gZXZhbHVhdGUgYWdhaW5zdCB0aGUgdGFy Z2V0IHJvdworICogb2Zmc2V0X2FyZzogb3B0aW9uYWwgZXhwbGljaXQgb2Zmc2V0IGV4cHJlc3Np b24gKDItYXJnIGZvcm0pOyBOVUxMIGZvcgorICogICAgICAgICAgICAgdGhlIDEtYXJnIGZvcm0g d2hpY2ggdXNlcyBhbiBpbXBsaWNpdCBvZmZzZXQgb2YgMQorICovCit0eXBlZGVmIGVudW0gUlBS TmF2S2luZAoreworCVJQUl9OQVZfUFJFViwKKwlSUFJfTkFWX05FWFQsCit9IFJQUk5hdktpbmQ7 CisKK3R5cGVkZWYgc3RydWN0IFJQUk5hdkV4cHIKK3sKKwlFeHByCQl4cHI7CisJUlBSTmF2S2lu ZAlraW5kOwkJCS8qIFBSRVYgb3IgTkVYVCAqLworCUV4cHIJICAgKmFyZzsJCQkvKiBhcmd1bWVu dCBleHByZXNzaW9uICovCisJRXhwcgkgICAqb2Zmc2V0X2FyZzsJCS8qIG9mZnNldCBleHByZXNz aW9uLCBvciBOVUxMIGZvciAxLWFyZyBmb3JtICovCisJT2lkCQkJcmVzdWx0dHlwZTsJCS8qIHJl c3VsdCB0eXBlIChzYW1lIGFzIGFyZydzIHR5cGUpICovCisJLyogT0lEIG9mIGNvbGxhdGlvbiBv ZiByZXN1bHQgKi8KKwlPaWQJCQlyZXN1bHRjb2xsaWQgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOworCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCisJUGFy c2VMb2MJbG9jYXRpb247Cit9IFJQUk5hdkV4cHI7CisKIC8qCiAgKiBNZXJnZVN1cHBvcnRGdW5j CiAgKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0CmluZGV4IGU3MjE3MTA1MGM3Li5kNTg2ZTE3 ZTBhMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByLm91dApAQCAtMTAxOCw2ICsxMDE4LDU1NSBA QCBXSU5ET1cgdyBBUyAoCiAgIDUgfCAgICAgMC4xIHwgICAgIDAKICg1IHJvd3MpCiAKKy0tCist LSBFcnJvciBjYXNlczogUFJFVi9ORVhUIHVzYWdlIHJlc3RyaWN0aW9ucworLS0KKy0tIFBSRVYg b3V0c2lkZSBERUZJTkUgY2xhdXNlCitTRUxFQ1QgcHJldihwcmljZSkgRlJPTSBzdG9jazsKK0VS Uk9SOiAgcHJldiBjYW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5FIGNsYXVzZQorTElORSAxOiBT RUxFQ1QgcHJldihwcmljZSkgRlJPTSBzdG9jazsKKyAgICAgICAgICAgICAgIF4KKy0tIE5FWFQg b3V0c2lkZSBERUZJTkUgY2xhdXNlCitTRUxFQ1QgbmV4dChwcmljZSkgRlJPTSBzdG9jazsKK0VS Uk9SOiAgbmV4dCBjYW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5FIGNsYXVzZQorTElORSAxOiBT RUxFQ1QgbmV4dChwcmljZSkgRlJPTSBzdG9jazsKKyAgICAgICAgICAgICAgIF4KKy0tIE5lc3Rl ZCBQUkVWCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJ VElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEg QVMgcHJpY2UgPiBQUkVWKFBSRVYocHJpY2UpKQorKTsKK0VSUk9SOiAgUFJFViBhbmQgTkVYVCBj YW5ub3QgYmUgbmVzdGVkCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYoUFJF VihwcmljZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIE5lc3RlZCBO RVhUCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMg cHJpY2UgPiBORVhUKE5FWFQocHJpY2UpKQorKTsKK0VSUk9SOiAgUFJFViBhbmQgTkVYVCBjYW5u b3QgYmUgbmVzdGVkCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBwcmljZSA+IE5FWFQoTkVYVChw cmljZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFBSRVYgbmVzdGVk IGluc2lkZSBORVhUCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVG SU5FIEEgQVMgcHJpY2UgPiBORVhUKFBSRVYocHJpY2UpKQorKTsKK0VSUk9SOiAgUFJFViBhbmQg TkVYVCBjYW5ub3QgYmUgbmVzdGVkCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBwcmljZSA+IE5F WFQoUFJFVihwcmljZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFBS RVYgbmVzdGVkIGluc2lkZSBleHByZXNzaW9uIGluc2lkZSBORVhUCitTRUxFQ1QgcHJpY2UgRlJP TSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElB TAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBORVhUKHByaWNlICog UFJFVihwcmljZSkpCispOworRVJST1I6ICBQUkVWIGFuZCBORVhUIGNhbm5vdCBiZSBuZXN0ZWQK K0xJTkUgNzogICAgIERFRklORSBBIEFTIHByaWNlID4gTkVYVChwcmljZSAqIFBSRVYocHJpY2Up KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBUcmlwbGUgbmVzdGluZzog ZXJyb3IgcmVwb3J0ZWQgYXQgb3V0ZXJtb3N0IFBSRVYKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2Nr CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAg UEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYoUFJFVihQUkVWKHByaWNl KSkpCispOworRVJST1I6ICBQUkVWIGFuZCBORVhUIGNhbm5vdCBiZSBuZXN0ZWQKK0xJTkUgNzog ICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihQUkVWKFBSRVYocHJpY2UpKSkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gTm8gY29sdW1uIHJlZmVyZW5jZSBpbiBQUkVW L05FWFQgYXJndW1lbnQKKy0tIFBSRVYoMSk6IGNvbnN0YW50IG9ubHksIG5vIGNvbHVtbiByZWZl cmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElU SU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBB UyBQUkVWKDEpID4gMAorKTsKK0VSUk9SOiAgYXJndW1lbnQgb2Ygcm93IHBhdHRlcm4gbmF2aWdh dGlvbiBvcGVyYXRpb24gbXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBjb2x1bW4gcmVmZXJlbmNl CitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBQUkVWKDEpID4gMAorICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gTkVYVCgxICsgMik6IGNvbnN0YW50IGV4cHJlc3Npb24sIG5vIGNvbHVtbiBy ZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFS VElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUg QSBBUyBORVhUKDEgKyAyKSA+IDAKKyk7CitFUlJPUjogIGFyZ3VtZW50IG9mIHJvdyBwYXR0ZXJu IG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY29sdW1uIHJl ZmVyZW5jZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMgTkVYVCgxICsgMikgPiAwCisgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSAyLWFyZyBmb3JtOiBQUkVWKDEsIDEpOiBjb25zdGFudCBl eHByZXNzaW9uIGFzIGZpcnN0IGFyZworU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3 IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChB KQorICAgIERFRklORSBBIEFTIFBSRVYoMSwgMSkgPiAwCispOworRVJST1I6ICBhcmd1bWVudCBv ZiByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qg b25lIGNvbHVtbiByZWZlcmVuY2UKK0xJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYoMSwgMSkg PiAwCisgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBOb24tY29uc3RhbnQgb2Zmc2V0OiBj b2x1bW4gcmVmZXJlbmNlIGFzIG9mZnNldAorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJO IChBKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIHByaWNlKSA+IDAKKyk7CitFUlJPUjog IFBSRVYvTkVYVCBvZmZzZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50CitMSU5FIDc6ICAg ICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCBwcmljZSkgPiAwCisgICAgICAgICAgICAgICAgICAg ICAgICBeCistLSBOb24tY29uc3RhbnQgb2Zmc2V0OiB2b2xhdGlsZSBmdW5jdGlvbiBhcyBvZmZz ZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9O IEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQ UkVWKHByaWNlLCByYW5kb20oKTo6aW50KSA+IDAKKyk7CitFUlJPUjogIFBSRVYvTkVYVCBvZmZz ZXQgbXVzdCBiZSBhIHJ1bi10aW1lIGNvbnN0YW50CitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBQ UkVWKHByaWNlLCByYW5kb20oKTo6aW50KSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIE5vbi1jb25zdGFudCBvZmZzZXQ6IHN1YnF1ZXJ5IGFzIG9mZnNldAorU0VMRUNUIHByaWNl IEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElO SVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIChTRUxF Q1QgMSkpID4gMAorKTsKK0VSUk9SOiAgY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBERUZJTkUgZXhw cmVzc2lvbgorTElORSA3OiAgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgKFNFTEVDVCAxKSkg PiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBGaXJzdCBhcmc6 IHN1YnF1ZXJ5IChjYXVnaHQgYnkgREVGSU5FLWxldmVsIHN1YnF1ZXJ5IHJlc3RyaWN0aW9uKQor U0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkg Y29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYo cHJpY2UgKyAoU0VMRUNUIDEpKSA+IDAKKyk7CitFUlJPUjogIGNhbm5vdCB1c2Ugc3VicXVlcnkg aW4gREVGSU5FIGV4cHJlc3Npb24KK0xJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYocHJpY2Ug KyAoU0VMRUNUIDEpKSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CistLSBGaXJzdCBhcmc6IHZvbGF0aWxlIGZ1bmN0aW9uIGlzIGFsbG93ZWQgKGV2YWx1YXRlZCBv biB0YXJnZXQgcm93KQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyAgICAgICBmaXJz dF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGNvdW50KCop IE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21w YW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihw cmljZSArIHJhbmRvbSgpICogMCkgPj0gMAorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBw cmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29t cGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAyMDAgfCAgICAg ICAgMTMwIHwgICAgIDkKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDUtMjAy MyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8 IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAx MzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEt MjAyMyB8ICAgIDUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAyMDAwIHwgICAgICAgMTMwMCB8ICAgICA5 CisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwg ICAgNjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKygyMCByb3dzKQorCistLQorLS0gMi1hcmcgUFJFVi9O RVhUOiBmdW5jdGlvbmFsIHRlc3RzCistLQorLS0gUFJFVihwcmljZSwgMik6IG1hdGNoIHJvd3Mg d2hlcmUgY3VycmVudCBwcmljZSA+IHByaWNlIDIgcm93cyBiYWNrCistLSBzdG9jazogMTAwLCA5 MCwgODAsIDk1LCAxMTAKKy0tIFBhdHRlcm4gKEEgQispOiBBPWFueSwgQiB3aGVyZSBwcmljZSA+ IFBSRVYocHJpY2UsIDIpCistLSBBdCBwb3MgMiAoODApOiBBIG1hdGNoZXMuIHBvcyAzICg5NSk6 IDk1ID4gUFJFVig5NSwyKT05MCBUUlVFLgorLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBvcyA0ICgxMTApOiAxMTAgPiBQUkVWKDExMCwyKT04MCBUUlVFLiBNYXRjaCEKK1NFTEVDVCBj b21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywg bGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJ TkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBB UyBwcmljZSA+IFBSRVYocHJpY2UsIDIpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHBy aWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgY291bnQgCistLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBjb21w YW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgIDIwMCB8ICAgICAg ICAxNTAgfCAgICAgMgorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNS0yMDIz IHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwg MDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgMTEwIHwgICAgICAgIDEyMCB8 ICAgICAzCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEz MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMS0y MDIzIHwgICAgNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnky IHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgIDIwMDAgfCAgICAgICAxNTAwIHwgICAgIDIK KyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAg ICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0w Ny0yMDIzIHwgIDExMDAgfCAgICAgICAgMTEwMCB8ICAgICAgIDEyMDAgfCAgICAgMworIGNvbXBh bnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAgICAgMAorKDIwIHJvd3MpCisKKy0tIE5FWFQocHJpY2UsIDIpOiBt YXRjaCByb3dzIHdoZXJlIGN1cnJlbnQgcHJpY2UgPiBwcmljZSAyIHJvd3MgYWhlYWQKKy0tIHBv cyAwICgxMDApOiBORVhUKDEwMCwyKT04MCwgMTAwPjgwIFRSVUUuIHBvcyAxICg5MCk6IE5FWFQo OTAsMik9OTUsIDkwPjk1IEZBTFNFLiBNYXRjaCBlbmRzLgorU0VMRUNUIGNvbXBhbnksIHRkYXRl LCBwcmljZSwKKyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHBy aWNlKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAor ICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgcHJpY2UgPiBORVhUKHByaWNlLCAyKQorKTsKKyBjb21wYW55ICB8ICAg dGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IGNvdW50IAorLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAg ICAyMDAgfCAgICAgICAgMjAwIHwgICAgIDEKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1 MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNC0y MDIzIHwgICAxNDAgfCAgICAgICAgIDE0MCB8ICAgICAgICAxNTAgfCAgICAgMgorIGNvbXBhbnkx IHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAK KyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAg IDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0x MC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBh bnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAyMDAwIHwgICAgICAg MjAwMCB8ICAgICAxCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwg ICAgICAgIDE0MDAgfCAgICAgICAxNTAwIHwgICAgIDIKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMg fCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAw Ny0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKygyMCByb3dzKQorCistLSBFeHBy ZXNzaW9ucyBpbnNpZGUgUFJFVi9ORVhUIGFyZzogZXhwciBpcyBldmFsdWF0ZWQgb24gdGFyZ2V0 IHJvdworLS0gUFJFVihwcmljZSAtIDUwLCAxKTogZmV0Y2hlcyAocHJpY2UgLSA1MCkgZnJvbSAx IHJvdyBiYWNrCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAgIGZpcnN0X3Zh bHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZF UiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkg T1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBS RVYocHJpY2UgLSA1MCwgMSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBm aXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwg MDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgMjAwIHwgICAgICAgIDIwMCB8 ICAgICAxCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAg ICAxNDAgfCAgICAgICAgMTUwIHwgICAgIDIKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1 MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0y MDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkx IHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAxMTAgfCAgICAgICAgMTMwIHwgICAgIDQK KyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAg ICA1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0w Mi0yMDIzIHwgIDIwMDAgfCAgICAgICAgMjAwMCB8ICAgICAgIDIwMDAgfCAgICAgMQorIGNvbXBh bnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgMTUw MCB8ICAgICAgIDE1MDAgfCAgICAgMQorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMg fCAgMTEwMCB8ICAgICAgICAxMTAwIHwgICAgICAgMTMwMCB8ICAgICAyCisgY29tcGFueTIgfCAw Ny0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAxMzAwIHwgICAg ICAgMTMwMCB8ICAgICAxCisoMjAgcm93cykKKworLS0gTkVYVChwcmljZSAqIDIsIDEpOiBmZXRj aGVzIChwcmljZSAqIDIpIGZyb20gMSByb3cgYWhlYWQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwg cHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmlj ZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAg ICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIHByaWNlIDwgTkVYVChwcmljZSAqIDIsIDEpCispOworIGNvbXBhbnkgIHwg ICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgY291bnQgCist LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgMTAwIHwg ICAgICAgIDEyMCB8ICAgICA5CisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAg MTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA0 LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8 ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3 LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICA1MCB8ICAgICAgIDE0MDAgfCAg ICAgNAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDUtMjAy MyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8 IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgIDYwIHwgICAgICAgMTIwMCB8ICAgICA0Cisg Y29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEz MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorKDIwIHJvd3MpCisKKy0tIExh cmdlIG9mZnNldDogUFJFVih2YWwsIDk5OSkgb24gMTAwMC1yb3cgc2VyaWVzIG1hdGNoZXMgb25s eSBsYXN0IHJvdworLS0gTkVYVCh2YWwsIDk5OSkgbWF0Y2hlcyBvbmx5IGZpcnN0IHJvdworU0VM RUNUIHZhbCwgZmlyc3RfdmFsdWUodmFsKSBPVkVSIHcsIGxhc3RfdmFsdWUodmFsKSBPVkVSIHcs IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgdCh2YWwp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVih2YWws IDk5OSkgPSAxCispCitPUkRFUiBCWSB2YWwgREVTQyBMSU1JVCAzOworIHZhbCAgfCBmaXJzdF92 YWx1ZSB8IGxhc3RfdmFsdWUgfCBjb3VudCAKKy0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tCisgMTAwMCB8ICAgICAgICAxMDAwIHwgICAgICAgMTAwMCB8ICAgICAxCisg IDk5OSB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgIDk5OCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisoMyByb3dzKQorCitTRUxFQ1QgdmFsLCBmaXJzdF92 YWx1ZSh2YWwpIE9WRVIgdywgbGFzdF92YWx1ZSh2YWwpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyB0KHZhbCkKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBORVhUKHZhbCwgOTk5KSA9IDEwMDAKKykK K0xJTUlUIDM7CisgdmFsIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgY291bnQgCistLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgICAxIHwgICAgICAgICAgIDEg fCAgICAgICAgICAxIHwgICAgIDEKKyAgIDIgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorICAgMyB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisoMyByb3dzKQor CistLSBQUkVWKHByaWNlLCAwKTogb2Zmc2V0IDAgbWVhbnMgY3VycmVudCByb3csIGFsd2F5cyBl cXVhbCB0byBwcmljZQorLS0gQSsgbWF0Y2hlcyBlbnRpcmUgcGFydGl0aW9uIGFzIG9uZSBncm91 cDsgY291bnQgPSBwYXJ0aXRpb24gc2l6ZQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwK KyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVS IHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJ VElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F IEEgQVMgUFJFVihwcmljZSwgMCkgPSBwcmljZQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAg fCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisg Y29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxMzAg fCAgICAxMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAx NDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDUt MjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw CisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwg ICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAxMzAwIHwgICAgMTAKKyBjb21w YW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIz IHwgICAgNjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwg MDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKygyMCByb3dzKQorCistLSAyLWFyZyBQUkVWL05F WFQgb3V0c2lkZSBERUZJTkUgY2xhdXNlCitTRUxFQ1QgcHJldihwcmljZSwgMikgRlJPTSBzdG9j azsKK0VSUk9SOiAgcHJldiBjYW4gb25seSBiZSB1c2VkIGluIGEgREVGSU5FIGNsYXVzZQorTElO RSAxOiBTRUxFQ1QgcHJldihwcmljZSwgMikgRlJPTSBzdG9jazsKKyAgICAgICAgICAgICAgIF4K K1NFTEVDVCBuZXh0KHByaWNlLCAyKSBGUk9NIHN0b2NrOworRVJST1I6ICBuZXh0IGNhbiBvbmx5 IGJlIHVzZWQgaW4gYSBERUZJTkUgY2xhdXNlCitMSU5FIDE6IFNFTEVDVCBuZXh0KHByaWNlLCAy KSBGUk9NIHN0b2NrOworICAgICAgICAgICAgICAgXgorLS0gMi1hcmcgUFJFVi9ORVhUOiBuZWdh dGl2ZSBvZmZzZXQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHBy aWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkg Y29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBS RVYocHJpY2UsIC0xKSBJUyBOT1QgTlVMTAorKTsKK0VSUk9SOiAgUFJFVi9ORVhUIG9mZnNldCBt dXN0IG5vdCBiZSBuZWdhdGl2ZQorLS0gMi1hcmcgUFJFVi9ORVhUOiBOVUxMIG9mZnNldCAodHlw ZWQpCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZF UiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkg T1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNl LCBOVUxMOjppbnQ4KSBJUyBOT1QgTlVMTAorKTsKK0VSUk9SOiAgUFJFVi9ORVhUIG9mZnNldCBt dXN0IG5vdCBiZSBudWxsCistLSAyLWFyZyBQUkVWL05FWFQ6IE5VTEwgb2Zmc2V0ICh1bnR5cGVk KQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIg dworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9S REVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwg TlVMTCkgSVMgTk9UIE5VTEwKKyk7CitFUlJPUjogIFBSRVYvTkVYVCBvZmZzZXQgbXVzdCBub3Qg YmUgbnVsbAorLS0gMi1hcmcgUFJFVi9ORVhUOiBob3N0IHZhcmlhYmxlIG5lZ2F0aXZlIGFuZCBO VUxMCitQUkVQQVJFIHRlc3RfcHJldl9vZmZzZXQoaW50OCkgQVMKK1NFTEVDVCBjb21wYW55LCB0 ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihwcmljZSwgJDEpCispOworRVhF Q1VURSB0ZXN0X3ByZXZfb2Zmc2V0KC0xKTsKK0VSUk9SOiAgUFJFVi9ORVhUIG9mZnNldCBtdXN0 IG5vdCBiZSBuZWdhdGl2ZQorRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0KE5VTEwpOworRVJST1I6 ICBQUkVWL05FWFQgb2Zmc2V0IG11c3Qgbm90IGJlIG51bGwKK0RFQUxMT0NBVEUgdGVzdF9wcmV2 X29mZnNldDsKKy0tIDItYXJnIFBSRVYvTkVYVDogaG9zdCB2YXJpYWJsZSB3aXRoIGV4cHJlc3Np b24gKDAgKyAkMSkKK1BSRVBBUkUgdGVzdF9wcmV2X29mZnNldChpbnQ4KSBBUworU0VMRUNUIGNv bXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdworRlJPTSBzdG9j aworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRl CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKHByaWNlLCAwICsg JDEpCispOworRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0KC0xKTsKK0VSUk9SOiAgUFJFVi9ORVhU IG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0KE5V TEwpOworRVJST1I6ICBQUkVWL05FWFQgb2Zmc2V0IG11c3Qgbm90IGJlIG51bGwKK0RFQUxMT0NB VEUgdGVzdF9wcmV2X29mZnNldDsKKy0tIDItYXJnOiB0d28gUFJFViB3aXRoIGRpZmZlcmVudCBv ZmZzZXRzIGluIHNhbWUgREVGSU5FIGNsYXVzZQorLS0gQjogcHJpY2UgZXhjZWVkcyBib3RoIDEt YmFjayBhbmQgMi1iYWNrIHZhbHVlcworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyAg ICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcs IGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVFLAor ICAgICAgICBCIEFTIHByaWNlID4gUFJFVihwcmljZSwgMSkgQU5EIHByaWNlID4gUFJFVihwcmlj ZSwgMikKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8 IGxhc3RfdmFsdWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8 ICAgMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3 LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAy MyB8ICAgMTEwIHwgICAgICAgICAxMTAgfCAgICAgICAgMTMwIHwgICAgIDIKKyBjb21wYW55MSB8 IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIw MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMt MjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw CisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAg ICAgICAxMTAwIHwgICAgICAgMTMwMCB8ICAgICAyCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwg IDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisoMjAgcm93cykKKworLS0gMi1hcmc6IFBSRVYgYW5kIE5FWFQgd2l0aCBleHBsaWNpdCBv ZmZzZXRzIGluIHNhbWUgREVGSU5FIGNsYXVzZQorLS0gQTogcHJpY2UgZXhjZWVkcyAxLWJhY2sg YW5kIGlzIGJlbG93IDEtYWhlYWQgKGFzY2VuZGluZyBpbnRlcmlvciBwb2ludCkKK1NFTEVDVCBj b21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywg bGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJ TkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIHByaWNlID4gUFJFVihwcmljZSwgMSkgQU5EIHByaWNlIDwgTkVYVChwcmljZSwgMSkK Kyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3Rf dmFsdWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAyLTIw MjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEg fCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAor IGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAg MTEwIHwgICAgICAgICAxMTAgfCAgICAgICAgMTEwIHwgICAgIDEKKyBjb21wYW55MSB8IDA3LTA4 LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8 ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3 LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAx MTAwIHwgICAgICAgMTEwMCB8ICAgICAxCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDktMjAy MyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8 IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCiso MjAgcm93cykKKwogLS0KIC0tIFNLSVAgVE8gLyBCYWNrdHJhY2tpbmcgLyBGcmFtZSBib3VuZGFy eQogLS0KQEAgLTE0NzksNyArMjAyOCw3IEBAIGNvdW50KCopIE9WRVIgdwogKDE0IHJvd3MpCiAK IC0tIFJlU2NhbiB0ZXN0OiBMQVRFUkFMIGpvaW4gZm9yY2VzIFdpbmRvd0FnZyByZXNjYW4gd2l0 aCBSUFIKLS0tIFRlc3RzIEV4ZWNSZVNjYW5XaW5kb3dBZ2cgY2xlYXJpbmcgcHJldl9zbG90L25l eHRfc2xvdAorLS0gVGVzdHMgRXhlY1JlU2NhbldpbmRvd0FnZyBjbGVhcmluZyBuYXZfc2xvdAog U0VMRUNUIGcueCwgc3ViLioKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIpIGcoeCksCiBMQVRF UkFMICgKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4u b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQKaW5kZXggYmQz NDU5MDYxMzMuLjBkMmI3NTUwZWE4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Jwcl9leHBsYWluLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9l eHBsYWluLm91dApAQCAtMzY0Niw5ICszNjQ2LDg5IEBAIFdJTkRPVyB3IEFTICgKICAgIC0+ICBG dW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0zMC4wMCBsb29w cz0xKQogKDggcm93cykKIAotLS0gVXNpbmcgTlVMTCBjb21wYXJpc29ucworLS0gVXNpbmcgMS1h cmcgUFJFViAoaW1wbGljaXQgb2Zmc2V0IDEpCiBDUkVBVEUgVklFVyBycHJfZXY4MyBBUwogU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMg diA+IFBSRVYodikKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjgzJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk58REVGSU5FfFBSRVZ8TkVYVCc7CisgICAgICAgICAgbGluZSAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIGIrKSAKKyAgIERFRklORQor ICAgYiBBUyAodiA+IFBSRVYodikpICk7CisoMyByb3dzKQorCistLSBVc2luZyAxLWFyZyBORVhU IChpbXBsaWNpdCBvZmZzZXQgMSkKK0NSRUFURSBWSUVXIHJwcl9ldjg0IEFTCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEg QispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBBUyB2IDwgTkVY VCh2KQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2ODQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS TnxERUZJTkV8UFJFVnxORVhUJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgYispIAorICAgREVGSU5FCisgICBiIEFT ICh2IDwgTkVYVCh2KSkgKTsKKygzIHJvd3MpCisKKy0tIFVzaW5nIDItYXJnIFBSRVYgKGV4cGxp Y2l0IG9mZnNldCkKK0NSRUFURSBWSUVXIHJwcl9ldjg1IEFTCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBBUyB2ID4gUFJFVih2LCAyKQor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2ODUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTnxERUZJ TkV8UFJFVnxORVhUJzsKKyAgICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiKykg CisgICBERUZJTkUKKyAgIGIgQVMgKHYgPiBQUkVWKHYsICgyKTo6YmlnaW50KSkgKTsKKygzIHJv d3MpCisKKy0tIFVzaW5nIDItYXJnIE5FWFQgKGV4cGxpY2l0IG9mZnNldCkKK0NSRUFURSBWSUVX IHJwcl9ldjg2IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJV RSwKKyAgICAgICAgQiBBUyB2IDwgTkVYVCh2LCAyKQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2ODYnKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTnxERUZJTkV8UFJFVnxORVhUJzsKKyAgICAgICAg ICAgICAgICAgbGluZSAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiKykgCisgICBERUZJTkUKKyAgIGIgQVMgKHYg PCBORVhUKHYsICgyKTo6YmlnaW50KSkgKTsKKygzIHJvd3MpCisKKy0tIFVzaW5nIE5VTEwgY29t cGFyaXNvbnMKK0NSRUFURSBWSUVXIHJwcl9ldjg3IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CiBGUk9NICgKICAgICBTRUxFQ1QgQ0FTRSBXSEVOIHYgJSA1ID0gMCBUSEVOIE5VTEwgRUxTRSB2 IEVORCBBUyB2CiAgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIHYKQEAgLTM2NTksNyAr MzczOSw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBKyBCKQogICAgIERFRklORSBB IEFTIHYgSVMgTk9UIE5VTEwsIEIgQVMgdiBJUyBOVUxMCiApOwotU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY4MycpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2ODcnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgbGluZSAgICAgICAgCiAtLS0tLS0t LS0tLS0tLS0tLS0tCiAgICBQQVRURVJOIChhKyBiKSAKQEAgLTM2OTUsNyArMzc3NSw3IEBAIFdJ TkRPVyB3IEFTICgKIC0tIExhcmdlIFNjYWxlIFN0YXRpc3RpY3MgVmVyaWZpY2F0aW9uCiAtLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tIDUwMCByb3dzIC0gdmVyaWZ5IHN0YXRpc3RpY3Mgc2NhbGUgY29ycmVjdGx5Ci1DUkVB VEUgVklFVyBycHJfZXY4NCBBUworQ1JFQVRFIFZJRVcgcnByX2V2ODggQVMKIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQogV0lORE9X IHcgQVMgKApAQCAtMzcwNCw3ICszNzg0LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4g KEErIEIgQykKICAgICBERUZJTkUgQSBBUyB2ICUgMTAgPCA3LCBCIEFTIHYgJSAxMCA9IDcsIEMg QVMgdiAlIDEwID0gOAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2ODQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldjg4JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOwogICAgICAgICBsaW5lICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg IFBBVFRFUk4gKGErIGIgYykgCkBAIC0zNzM0LDcgKzM4MTQsNyBAQCBXSU5ET1cgdyBBUyAoCiAo OSByb3dzKQogCiAtLSBIaWdoIG1hdGNoIGNvdW50IHNjZW5hcmlvCi1DUkVBVEUgVklFVyBycHJf ZXY4NSBBUworQ1JFQVRFIFZJRVcgcnByX2V2ODkgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcK IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAt Mzc0Myw3ICszODIzLDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEEgQikKICAgICBE RUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCiApOwotU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY4NScpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2ODknKSwgRSdcbicpKSBB UyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiAgICAgICAgbGluZSAgICAgICAKIC0tLS0t LS0tLS0tLS0tLS0tLQogICAgUEFUVEVSTiAoYSBiKSAKQEAgLTM3NzMsNyArMzg1Myw3IEBAIFdJ TkRPVyB3IEFTICgKICg5IHJvd3MpCiAKIC0tIEhpZ2ggc2tpcCBjb3VudCBzY2VuYXJpbwotQ1JF QVRFIFZJRVcgcnByX2V2ODYgQVMKK0NSRUFURSBWSUVXIHJwcl9ldjkwIEFTCiBTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIHModikKIFdJTkRP VyB3IEFTICgKQEAgLTM3ODcsNyArMzg2Nyw3IEBAIFdJTkRPVyB3IEFTICgKICAgICAgICAgRCBB UyB2ICUgMTAwID0gNCwKICAgICAgICAgRSBBUyB2ICUgMTAwID0gNQogKTsKLVNFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2ODYnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjkwJyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogICAgICAgICAgIGxpbmUgICAgICAg ICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFBBVFRFUk4gKGEgYiBjIGQgZSkgCkBA IC0zODMxLDE3ICszOTExLDE3IEBAIFdJTkRPVyB3IEFTICgKIC0tIFRlc3Qgd2l0aCByb3dfbnVt YmVyKCkgYXMgcmVwcmVzZW50YXRpdmUgY2FzZS4KIC0tCiAtLSBXaXRob3V0IFJQUjogcm93X251 bWJlcigpIGZyYW1lIGlzIG9wdGltaXplZCB0byBST1dTIFVOQk9VTkRFRCBQUkVDRURJTkcKLUNS RUFURSBWSUVXIHJwcl9ldjg3IEFTCitDUkVBVEUgVklFVyBycHJfZXY5MSBBUwogU0VMRUNUIHJv d19udW1iZXIoKSBPVkVSIHcKIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBBUyBzKHYpCiBX SU5ET1cgdyBBUyAoCiAgICAgT1JERVIgQlkgdgogICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwogKTsKLUVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU ICogRlJPTSBycHJfZXY4NzsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBycHJf ZXY5MTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQotIFN1YnF1ZXJ5IFNjYW4gb24gcnByX2V2ODcKKyBTdWJxdWVy eSBTY2FuIG9uIHJwcl9ldjkxCiAgICAtPiAgV2luZG93QWdnCiAgICAgICAgICBXaW5kb3c6IHcg QVMgKE9SREVSIEJZIHMudiBST1dTIFVOQk9VTkRFRCBQUkVDRURJTkcpCiAgICAgICAgICAtPiAg U29ydApAQCAtMzg1MCw3ICszOTMwLDcgQEAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBG Uk9NIHJwcl9ldjg3OwogKDYgcm93cykKIAogLS0gV2l0aCBSUFI6IGZyYW1lIG11c3QgcmVtYWlu IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwotQ1JFQVRF IFZJRVcgcnByX2V2ODggQVMKK0NSRUFURSBWSUVXIHJwcl9ldjkyIEFTCiBTRUxFQ1Qgcm93X251 bWJlcigpIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIEFTIHModikKIFdJTkRP VyB3IEFTICgKQEAgLTM4NjEsMTAgKzM5NDEsMTAgQEAgV0lORE9XIHcgQVMgKAogICAgIERFRklO RQogICAgICAgICBCIEFTIHYgPiBQUkVWKHYpCiApOwotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxF Q1QgKiBGUk9NIHJwcl9ldjg4OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJw cl9ldjkyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0gU3VicXVlcnkgU2NhbiBvbiBycHJfZXY4OAorIFN1YnF1ZXJ5IFNjYW4g b24gcnByX2V2OTIKICAgIC0+ICBXaW5kb3dBZ2cKICAgICAgICAgIFdpbmRvdzogdyBBUyAoT1JE RVIgQlkgcy52IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKICAgICAgICAgIFBhdHRlcm46IGEgYisKQEAgLTM4NzcsNyArMzk1Nyw3IEBAIEVYUExBSU4g KENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBycHJfZXY4ODsKIC0tIFBsYW5uZXIgb3B0aW1pemF0 aW9uOiBub24tUlBSIGFuZCBSUFIgd2luZG93cyB0aGF0IHNoYXJlIHRoZSBzYW1lIGJhc2UgZnJh bWUKIC0tIGFmdGVyIGZyYW1lIG9wdGltaXphdGlvbiBhcmUga2VwdCBhcyBzZXBhcmF0ZSBXaW5k b3dBZ2cgbm9kZXMuCiAtLQotQ1JFQVRFIFZJRVcgcnByX2V2ODkgQVMKK0NSRUFURSBWSUVXIHJw cl9ldjkzIEFTCiBTRUxFQ1QKICAgICByb3dfbnVtYmVyKCkgT1ZFUiB3X25vcm1hbCBBUyBybl9u b3JtYWwsCiAgICAgcm93X251bWJlcigpIE9WRVIgd19ycHIgQVMgcm5fcnByCkBAIC0zODkwLDEw ICszOTcwLDEwIEBAIFdJTkRPVwogICAgICAgICBQQVRURVJOIChBKykKICAgICAgICAgREVGSU5F IEEgQVMgdiA+IDEKICAgICApOwotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJw cl9ldjg5OworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJwcl9ldjkzOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLSBTdWJxdWVyeSBTY2FuIG9uIHJwcl9ldjg5CisgU3VicXVlcnkgU2NhbiBvbiBy cHJfZXY5MwogICAgLT4gIFdpbmRvd0FnZwogICAgICAgICAgV2luZG93OiB3X3JwciBBUyAoT1JE RVIgQlkgcy52IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKICAgICAgICAgIFBhdHRlcm46IGErIgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9z cWwvcnByLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwKaW5kZXggOTU3OTRkNDA5 ZTEuLjUwNDQ3NmEyYjAyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwKQEAgLTQ0MCw2ICs0NDAsMzI2IEBA IFdJTkRPVyB3IEFTICgKICAgQiBBUyB2YWwgPiBQUkVWKHZhbCkgKiAwLjk5CiApOwogCistLQor LS0gRXJyb3IgY2FzZXM6IFBSRVYvTkVYVCB1c2FnZSByZXN0cmljdGlvbnMKKy0tCisKKy0tIFBS RVYgb3V0c2lkZSBERUZJTkUgY2xhdXNlCitTRUxFQ1QgcHJldihwcmljZSkgRlJPTSBzdG9jazsK KworLS0gTkVYVCBvdXRzaWRlIERFRklORSBjbGF1c2UKK1NFTEVDVCBuZXh0KHByaWNlKSBGUk9N IHN0b2NrOworCistLSBOZXN0ZWQgUFJFVgorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJO IChBKQorICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihQUkVWKHByaWNlKSkKKyk7CisKKy0t IE5lc3RlZCBORVhUCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVG SU5FIEEgQVMgcHJpY2UgPiBORVhUKE5FWFQocHJpY2UpKQorKTsKKworLS0gUFJFViBuZXN0ZWQg aW5zaWRlIE5FWFQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAg UEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJ TkUgQSBBUyBwcmljZSA+IE5FWFQoUFJFVihwcmljZSkpCispOworCistLSBQUkVWIG5lc3RlZCBp bnNpZGUgZXhwcmVzc2lvbiBpbnNpZGUgTkVYVAorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJ TkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRU RVJOIChBKQorICAgIERFRklORSBBIEFTIHByaWNlID4gTkVYVChwcmljZSAqIFBSRVYocHJpY2Up KQorKTsKKworLS0gVHJpcGxlIG5lc3Rpbmc6IGVycm9yIHJlcG9ydGVkIGF0IG91dGVybW9zdCBQ UkVWCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMg cHJpY2UgPiBQUkVWKFBSRVYoUFJFVihwcmljZSkpKQorKTsKKworLS0gTm8gY29sdW1uIHJlZmVy ZW5jZSBpbiBQUkVWL05FWFQgYXJndW1lbnQKKy0tIFBSRVYoMSk6IGNvbnN0YW50IG9ubHksIG5v IGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAo CisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAg ICBERUZJTkUgQSBBUyBQUkVWKDEpID4gMAorKTsKKworLS0gTkVYVCgxICsgMik6IGNvbnN0YW50 IGV4cHJlc3Npb24sIG5vIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2Nr CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAg UEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBORVhUKDEgKyAyKSA+IDAKKyk7CisKKy0tIDIt YXJnIGZvcm06IFBSRVYoMSwgMSk6IGNvbnN0YW50IGV4cHJlc3Npb24gYXMgZmlyc3QgYXJnCitT RUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBj b21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVigx LCAxKSA+IDAKKyk7CisKKy0tIE5vbi1jb25zdGFudCBvZmZzZXQ6IGNvbHVtbiByZWZlcmVuY2Ug YXMgb2Zmc2V0CitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBB UlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5F IEEgQVMgUFJFVihwcmljZSwgcHJpY2UpID4gMAorKTsKKworLS0gTm9uLWNvbnN0YW50IG9mZnNl dDogdm9sYXRpbGUgZnVuY3Rpb24gYXMgb2Zmc2V0CitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jawor V0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBB VFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgcmFuZG9tKCk6OmludCkgPiAw CispOworCistLSBOb24tY29uc3RhbnQgb2Zmc2V0OiBzdWJxdWVyeSBhcyBvZmZzZXQKK1NFTEVD VCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBh bnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNl LCAoU0VMRUNUIDEpKSA+IDAKKyk7CisKKy0tIEZpcnN0IGFyZzogc3VicXVlcnkgKGNhdWdodCBi eSBERUZJTkUtbGV2ZWwgc3VicXVlcnkgcmVzdHJpY3Rpb24pCitTRUxFQ1QgcHJpY2UgRlJPTSBz dG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAor ICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSArIChTRUxFQ1QgMSkp ID4gMAorKTsKKworLS0gRmlyc3QgYXJnOiB2b2xhdGlsZSBmdW5jdGlvbiBpcyBhbGxvd2VkIChl dmFsdWF0ZWQgb24gdGFyZ2V0IHJvdykKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisg ICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3 LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJ T04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBB IEFTIFBSRVYocHJpY2UgKyByYW5kb20oKSAqIDApID49IDAKKyk7CisKKy0tCistLSAyLWFyZyBQ UkVWL05FWFQ6IGZ1bmN0aW9uYWwgdGVzdHMKKy0tCisKKy0tIFBSRVYocHJpY2UsIDIpOiBtYXRj aCByb3dzIHdoZXJlIGN1cnJlbnQgcHJpY2UgPiBwcmljZSAyIHJvd3MgYmFjaworLS0gc3RvY2s6 IDEwMCwgOTAsIDgwLCA5NSwgMTEwCistLSBQYXR0ZXJuIChBIEIrKTogQT1hbnksIEIgd2hlcmUg cHJpY2UgPiBQUkVWKHByaWNlLCAyKQorLS0gQXQgcG9zIDIgKDgwKTogQSBtYXRjaGVzLiBwb3Mg MyAoOTUpOiA5NSA+IFBSRVYoOTUsMik9OTAgVFJVRS4KKy0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwb3MgNCAoMTEwKTogMTEwID4gUFJFVigxMTAsMik9ODAgVFJVRS4gTWF0Y2ghCitT RUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBP VkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0 b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRh dGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBBIEFTIFRSVUUsCisgICAg ICAgIEIgQVMgcHJpY2UgPiBQUkVWKHByaWNlLCAyKQorKTsKKworLS0gTkVYVChwcmljZSwgMik6 IG1hdGNoIHJvd3Mgd2hlcmUgY3VycmVudCBwcmljZSA+IHByaWNlIDIgcm93cyBhaGVhZAorLS0g cG9zIDAgKDEwMCk6IE5FWFQoMTAwLDIpPTgwLCAxMDA+ODAgVFJVRS4gcG9zIDEgKDkwKTogTkVY VCg5MCwyKT05NSwgOTA+OTUgRkFMU0UuIE1hdGNoIGVuZHMuCitTRUxFQ1QgY29tcGFueSwgdGRh dGUsIHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUo cHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAo CisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykK KyAgICBERUZJTkUgQSBBUyBwcmljZSA+IE5FWFQocHJpY2UsIDIpCispOworCistLSBFeHByZXNz aW9ucyBpbnNpZGUgUFJFVi9ORVhUIGFyZzogZXhwciBpcyBldmFsdWF0ZWQgb24gdGFyZ2V0IHJv dworLS0gUFJFVihwcmljZSAtIDUwLCAxKTogZmV0Y2hlcyAocHJpY2UgLSA1MCkgZnJvbSAxIHJv dyBiYWNrCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVl KHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3 CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JE RVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYo cHJpY2UgLSA1MCwgMSkKKyk7CisKKy0tIE5FWFQocHJpY2UgKiAyLCAxKTogZmV0Y2hlcyAocHJp Y2UgKiAyKSBmcm9tIDEgcm93IGFoZWFkCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAor ICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIg dywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElU SU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyBwcmljZSA8IE5FWFQocHJpY2UgKiAyLCAxKQorKTsKKworLS0gTGFyZ2Ugb2Zmc2V0OiBQ UkVWKHZhbCwgOTk5KSBvbiAxMDAwLXJvdyBzZXJpZXMgbWF0Y2hlcyBvbmx5IGxhc3Qgcm93Cist LSBORVhUKHZhbCwgOTk5KSBtYXRjaGVzIG9ubHkgZmlyc3Qgcm93CitTRUxFQ1QgdmFsLCBmaXJz dF92YWx1ZSh2YWwpIE9WRVIgdywgbGFzdF92YWx1ZSh2YWwpIE9WRVIgdywgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyB0KHZhbCkKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHZhbCwgOTk5KSA9IDEKKykK K09SREVSIEJZIHZhbCBERVNDIExJTUlUIDM7CisKK1NFTEVDVCB2YWwsIGZpcnN0X3ZhbHVlKHZh bCkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHZhbCkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIHQodmFsKQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIE5FWFQodmFsLCA5OTkpID0gMTAwMAorKQorTElNSVQg MzsKKworLS0gUFJFVihwcmljZSwgMCk6IG9mZnNldCAwIG1lYW5zIGN1cnJlbnQgcm93LCBhbHdh eXMgZXF1YWwgdG8gcHJpY2UKKy0tIEErIG1hdGNoZXMgZW50aXJlIHBhcnRpdGlvbiBhcyBvbmUg Z3JvdXA7IGNvdW50ID0gcGFydGl0aW9uIHNpemUKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJp Y2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkg T1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQ QVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIFBSRVYocHJpY2UsIDApID0gcHJpY2UKKyk7CisKKy0tIDItYXJnIFBSRVYvTkVY VCBvdXRzaWRlIERFRklORSBjbGF1c2UKK1NFTEVDVCBwcmV2KHByaWNlLCAyKSBGUk9NIHN0b2Nr OworU0VMRUNUIG5leHQocHJpY2UsIDIpIEZST00gc3RvY2s7CisKKy0tIDItYXJnIFBSRVYvTkVY VDogbmVnYXRpdmUgb2Zmc2V0CitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92 YWx1ZShwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElU SU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyBQUkVWKHByaWNlLCAtMSkgSVMgTk9UIE5VTEwKKyk7CisKKy0tIDItYXJnIFBSRVYvTkVY VDogTlVMTCBvZmZzZXQgKHR5cGVkKQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmly c3RfdmFsdWUocHJpY2UpIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBB UlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgUFJFVihwcmljZSwgTlVMTDo6aW50OCkgSVMgTk9UIE5VTEwKKyk7CisKKy0tIDIt YXJnIFBSRVYvTkVYVDogTlVMTCBvZmZzZXQgKHVudHlwZWQpCitTRUxFQ1QgY29tcGFueSwgdGRh dGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cg dyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCBOVUxMKSBJUyBOT1QgTlVMTAorKTsK KworLS0gMi1hcmcgUFJFVi9ORVhUOiBob3N0IHZhcmlhYmxlIG5lZ2F0aXZlIGFuZCBOVUxMCitQ UkVQQVJFIHRlc3RfcHJldl9vZmZzZXQoaW50OCkgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwg cHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFT ICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihwcmljZSwgJDEpCispOworRVhFQ1VURSB0 ZXN0X3ByZXZfb2Zmc2V0KC0xKTsKK0VYRUNVVEUgdGVzdF9wcmV2X29mZnNldChOVUxMKTsKK0RF QUxMT0NBVEUgdGVzdF9wcmV2X29mZnNldDsKKworLS0gMi1hcmcgUFJFVi9ORVhUOiBob3N0IHZh cmlhYmxlIHdpdGggZXhwcmVzc2lvbiAoMCArICQxKQorUFJFUEFSRSB0ZXN0X3ByZXZfb2Zmc2V0 KGludDgpIEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmlj ZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNv bXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBwcmlj ZSA+IFBSRVYocHJpY2UsIDAgKyAkMSkKKyk7CitFWEVDVVRFIHRlc3RfcHJldl9vZmZzZXQoLTEp OworRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0KE5VTEwpOworREVBTExPQ0FURSB0ZXN0X3ByZXZf b2Zmc2V0OworCistLSAyLWFyZzogdHdvIFBSRVYgd2l0aCBkaWZmZXJlbnQgb2Zmc2V0cyBpbiBz YW1lIERFRklORSBjbGF1c2UKKy0tIEI6IHByaWNlIGV4Y2VlZHMgYm90aCAxLWJhY2sgYW5kIDIt YmFjayB2YWx1ZXMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3Rf dmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBP VkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFu eSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBB UyBwcmljZSA+IFBSRVYocHJpY2UsIDEpIEFORCBwcmljZSA+IFBSRVYocHJpY2UsIDIpCispOwor CistLSAyLWFyZzogUFJFViBhbmQgTkVYVCB3aXRoIGV4cGxpY2l0IG9mZnNldHMgaW4gc2FtZSBE RUZJTkUgY2xhdXNlCistLSBBOiBwcmljZSBleGNlZWRzIDEtYmFjayBhbmQgaXMgYmVsb3cgMS1h aGVhZCAoYXNjZW5kaW5nIGludGVyaW9yIHBvaW50KQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBw cmljZSwKKyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNl KSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQ UkVWKHByaWNlLCAxKSBBTkQgcHJpY2UgPCBORVhUKHByaWNlLCAxKQorKTsKKwogLS0KIC0tIFNL SVAgVE8gLyBCYWNrdHJhY2tpbmcgLyBGcmFtZSBib3VuZGFyeQogLS0KQEAgLTY3MSw3ICs5OTEs NyBAQCBjb3VudCgqKSBPVkVSIHcKICk7CiAKIC0tIFJlU2NhbiB0ZXN0OiBMQVRFUkFMIGpvaW4g Zm9yY2VzIFdpbmRvd0FnZyByZXNjYW4gd2l0aCBSUFIKLS0tIFRlc3RzIEV4ZWNSZVNjYW5XaW5k b3dBZ2cgY2xlYXJpbmcgcHJldl9zbG90L25leHRfc2xvdAorLS0gVGVzdHMgRXhlY1JlU2Nhbldp bmRvd0FnZyBjbGVhcmluZyBuYXZfc2xvdAogU0VMRUNUIGcueCwgc3ViLioKIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIpIGcoeCksCiBMQVRFUkFMICgKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBs YWluLnNxbAppbmRleCA5M2UwNmIwY2JkZi4uYzJjYmUyZWRkNTkgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ycHJfZXhwbGFpbi5zcWwKQEAgLTIwODgsOSArMjA4OCw2NSBAQCBXSU5ET1cgdyBBUyAoCiAg ICAgICAgIEQgQVMgdiA8IFBSRVYodikKICk7Jyk7CiAKLS0tIFVzaW5nIE5VTEwgY29tcGFyaXNv bnMKKy0tIFVzaW5nIDEtYXJnIFBSRVYgKGltcGxpY2l0IG9mZnNldCAxKQogQ1JFQVRFIFZJRVcg cnByX2V2ODMgQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVF LAorICAgICAgICBCIEFTIHYgPiBQUkVWKHYpCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY4MycpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOfERFRklORXxQUkVWfE5FWFQnOworCistLSBVc2luZyAx LWFyZyBORVhUIChpbXBsaWNpdCBvZmZzZXQgMSkKK0NSRUFURSBWSUVXIHJwcl9ldjg0IEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBB UyB2IDwgTkVYVCh2KQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2ODQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTnxERUZJTkV8UFJFVnxORVhUJzsKKworLS0gVXNpbmcgMi1hcmcgUFJFViAoZXhw bGljaXQgb2Zmc2V0KQorQ1JFQVRFIFZJRVcgcnByX2V2ODUgQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVFLAorICAgICAgICBCIEFTIHYgPiBQUkVWKHYsIDIp CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXY4NScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOfERF RklORXxQUkVWfE5FWFQnOworCistLSBVc2luZyAyLWFyZyBORVhUIChleHBsaWNpdCBvZmZzZXQp CitDUkVBVEUgVklFVyBycHJfZXY4NiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAg ICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMgdiA8IE5FWFQodiwgMikKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjg2 JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk58REVGSU5FfFBSRVZ8TkVY VCc7CisKKy0tIFVzaW5nIE5VTEwgY29tcGFyaXNvbnMKK0NSRUFURSBWSUVXIHJwcl9ldjg3IEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CiBGUk9NICgKICAgICBTRUxFQ1QgQ0FTRSBXSEVOIHYg JSA1ID0gMCBUSEVOIE5VTEwgRUxTRSB2IEVORCBBUyB2CiAgICAgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMzApIHYKQEAgLTIxMDEsNyArMjE1Nyw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRU RVJOIChBKyBCKQogICAgIERFRklORSBBIEFTIHYgSVMgTk9UIE5VTEwsIEIgQVMgdiBJUyBOVUxM CiApOwotU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXY4MycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2ODcnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CiBTRUxF Q1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKIEVYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBD T1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQogU0VMRUNUIGNvdW50KCopIE9WRVIg dwpAQCAtMjEyMSw3ICsyMTc3LDcgQEAgV0lORE9XIHcgQVMgKAogLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC0tIDUwMCBy b3dzIC0gdmVyaWZ5IHN0YXRpc3RpY3Mgc2NhbGUgY29ycmVjdGx5Ci1DUkVBVEUgVklFVyBycHJf ZXY4NCBBUworQ1JFQVRFIFZJRVcgcnByX2V2ODggQVMKIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcK IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQogV0lORE9XIHcgQVMgKApAQCAt MjEzMCw3ICsyMTg2LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEErIEIgQykKICAg ICBERUZJTkUgQSBBUyB2ICUgMTAgPCA3LCBCIEFTIHYgJSAxMCA9IDcsIEMgQVMgdiAlIDEwID0g OAogKTsKLVNFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2ODQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldjg4JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwogU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCiBFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwg Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKIFNFTEVDVCBjb3VudCgqKSBPVkVS IHcKQEAgLTIxNDMsNyArMjE5OSw3IEBAIFdJTkRPVyB3IEFTICgKICk7Jyk7CiAKIC0tIEhpZ2gg bWF0Y2ggY291bnQgc2NlbmFyaW8KLUNSRUFURSBWSUVXIHJwcl9ldjg1IEFTCitDUkVBVEUgVklF VyBycHJfZXY4OSBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNTAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yMTUyLDcgKzIyMDgsNyBAQCBX SU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSBCKQogICAgIERFRklORSBBIEFTIHYgJSAyID0g MSwgQiBBUyB2ICUgMiA9IDAKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjg1JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXY4OScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCiBTRUxF Q1QgY291bnQoKikgT1ZFUiB3CkBAIC0yMTY1LDcgKzIyMjEsNyBAQCBXSU5ET1cgdyBBUyAoCiAp OycpOwogCiAtLSBIaWdoIHNraXAgY291bnQgc2NlbmFyaW8KLUNSRUFURSBWSUVXIHJwcl9ldjg2 IEFTCitDUkVBVEUgVklFVyBycHJfZXY5MCBBUwogU0VMRUNUIGNvdW50KCopIE9WRVIgdwogRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yMTc5 LDcgKzIyMzUsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgICAgIEQgQVMgdiAlIDEwMCA9IDQsCiAg ICAgICAgIEUgQVMgdiAlIDEwMCA9IDUKICk7Ci1TRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldjg2JyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3Rv X2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXY5MCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKIFNFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwogRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CkBAIC0yMjA3LDcgKzIyNjMsNyBAQCBXSU5ET1cgdyBB UyAoCiAtLQogCiAtLSBXaXRob3V0IFJQUjogcm93X251bWJlcigpIGZyYW1lIGlzIG9wdGltaXpl ZCB0byBST1dTIFVOQk9VTkRFRCBQUkVDRURJTkcKLUNSRUFURSBWSUVXIHJwcl9ldjg3IEFTCitD UkVBVEUgVklFVyBycHJfZXY5MSBBUwogU0VMRUNUIHJvd19udW1iZXIoKSBPVkVSIHcKIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEwKSBBUyBzKHYpCiBXSU5ET1cgdyBBUyAoCkBAIC0yMjE1LDEw ICsyMjcxLDEwIEBAIFdJTkRPVyB3IEFTICgKICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKICk7CiAKLUVYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU ICogRlJPTSBycHJfZXY4NzsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBycHJf ZXY5MTsKIAogLS0gV2l0aCBSUFI6IGZyYW1lIG11c3QgcmVtYWluIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwotQ1JFQVRFIFZJRVcgcnByX2V2ODggQVMK K0NSRUFURSBWSUVXIHJwcl9ldjkyIEFTCiBTRUxFQ1Qgcm93X251bWJlcigpIE9WRVIgdwogRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIEFTIHModikKIFdJTkRPVyB3IEFTICgKQEAgLTIyMzAs MTMgKzIyODYsMTMgQEAgV0lORE9XIHcgQVMgKAogICAgICAgICBCIEFTIHYgPiBQUkVWKHYpCiAp OwogCi1FWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcnByX2V2ODg7CitFWFBMQUlO IChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcnByX2V2OTI7CiAKIC0tCiAtLSBQbGFubmVyIG9w dGltaXphdGlvbjogbm9uLVJQUiBhbmQgUlBSIHdpbmRvd3MgdGhhdCBzaGFyZSB0aGUgc2FtZSBi YXNlIGZyYW1lCiAtLSBhZnRlciBmcmFtZSBvcHRpbWl6YXRpb24gYXJlIGtlcHQgYXMgc2VwYXJh dGUgV2luZG93QWdnIG5vZGVzLgogLS0KLUNSRUFURSBWSUVXIHJwcl9ldjg5IEFTCitDUkVBVEUg VklFVyBycHJfZXY5MyBBUwogU0VMRUNUCiAgICAgcm93X251bWJlcigpIE9WRVIgd19ub3JtYWwg QVMgcm5fbm9ybWFsLAogICAgIHJvd19udW1iZXIoKSBPVkVSIHdfcnByIEFTIHJuX3JwcgpAQCAt MjI1MCw3ICsyMzA2LDcgQEAgV0lORE9XCiAgICAgICAgIERFRklORSBBIEFTIHYgPiAxCiAgICAg KTsKIAotRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJwcl9ldjg5OworRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJwcl9ldjkzOwogCiAtLQogLS0gUGxhbm5lciBv cHRpbWl6YXRpb246IGZpbmRfd2luZG93X3J1bl9jb25kaXRpb25zIG11c3Qgbm90IHB1c2ggZG93 bgpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA3MWVhOTI1ZDc3YS4uMjQ4NTZjZjg0Nzgg MTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xNzk5LDcgKzE3OTksNiBAQCBOYW1lZExX TG9ja1RyYW5jaGVSZXF1ZXN0CiBOYW1lZFR1cGxlc3RvcmVTY2FuCiBOYW1lZFR1cGxlc3RvcmVT Y2FuU3RhdGUKIE5hbWVzcGFjZUluZm8KLU5hdmlnYXRpb25JbmZvCiBOZXN0TG9vcAogTmVzdExv b3BQYXJhbQogTmVzdExvb3BTdGF0ZQpAQCAtMjQ3Niw2ICsyNDc1LDggQEAgUXVlcnlTb3VyY2UK IFF1ZXVlQmFja2VuZFN0YXR1cwogUXVldWVQb3NpdGlvbgogUXVpdFNpZ25hbFJlYXNvbgorUlBS TmF2RXhwcgorUlBSTmF2S2luZAogUkJUTm9kZQogUkJUT3JkZXJDb250cm9sCiBSQlRyZWUKLS0g CjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --0000000000004ddbfc064e28ab4c--