<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>76517</bug_id>
          
          <creation_ts>2012-01-17 22:57:34 -0800</creation_ts>
          <short_desc>Add [CallWith] support for attributes in JS/V8 idl code generators.</short_desc>
          <delta_ts>2012-01-18 12:29:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>76035</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Pablo Flouret">pf</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>beidson</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>537648</commentid>
    <comment_count>0</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-01-17 22:57:34 -0800</bug_when>
    <thetext>history.state&apos;s implementation in http://webkit.org/b/76035 brought up the need for [CallWith] for attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537649</commentid>
    <comment_count>1</comment_count>
      <attachid>122877</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-01-17 23:04:28 -0800</bug_when>
    <thetext>Created attachment 122877
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537650</commentid>
    <comment_count>2</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-01-17 23:06:27 -0800</bug_when>
    <thetext>The patch contains the fixes from the comments on https://bugs.webkit.org/show_bug.cgi?id=76035#c38</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537651</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-17 23:07:10 -0800</bug_when>
    <thetext>Attachment 122877 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1110:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1123:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1137:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1154:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1173:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1190:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 6 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537654</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-01-17 23:10:31 -0800</bug_when>
    <thetext>Informal r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537669</commentid>
    <comment_count>5</comment_count>
      <attachid>122877</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-17 23:53:59 -0800</bug_when>
    <thetext>Comment on attachment 122877
patch

View in context: https://bugs.webkit.org/attachment.cgi?id=122877&amp;action=review

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2403
&gt; +        push(@$outputArray, &quot;    ScriptExecutionContext* scriptContext = static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();\n&quot;);
&gt; +        push(@$outputArray, &quot;    if (!scriptContext)\n&quot;);
&gt; +        push(@$outputArray, &quot;        return&quot; . ($returnVoid ? &quot;&quot; : &quot; jsUndefined()&quot;) . &quot;;\n&quot;);

Is this code duplicated from somewhere else in this file?  I was expecting to see some minus lines replaced with a call to this function in the location that currently handles CallWith for methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537968</commentid>
    <comment_count>6</comment_count>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-01-18 10:18:05 -0800</bug_when>
    <thetext>Yeah, you&apos;re right, in all the back and forth i forgot to see what could be refactored, i think a couple of calls can be reworked. I&apos;ll update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538010</commentid>
    <comment_count>7</comment_count>
      <attachid>122967</attachid>
    <who name="Pablo Flouret">pf</who>
    <bug_when>2012-01-18 11:12:00 -0800</bug_when>
    <thetext>Created attachment 122967
refactored some of the [CallWith] code for functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538012</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 11:13:09 -0800</bug_when>
    <thetext>Attachment 122967 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1110:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1123:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1137:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1154:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1173:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1190:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 6 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538013</commentid>
    <comment_count>9</comment_count>
      <attachid>122967</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-18 11:15:11 -0800</bug_when>
    <thetext>Comment on attachment 122967
refactored some of the [CallWith] code for functions

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538072</commentid>
    <comment_count>10</comment_count>
      <attachid>122967</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 12:29:45 -0800</bug_when>
    <thetext>Comment on attachment 122967
refactored some of the [CallWith] code for functions

Clearing flags on attachment: 122967

Committed r105308: &lt;http://trac.webkit.org/changeset/105308&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538073</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-18 12:29:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122877</attachid>
            <date>2012-01-17 23:04:28 -0800</date>
            <delta_ts>2012-01-18 11:11:54 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-76517-20120117230427.patch</filename>
            <type>text/plain</type>
            <size>54711</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M4NTIxOWFmMWZjZWZj
Y2UwOTY0M2MzNzVhNGYwYzFmMGM3ZGNiNC4uNTQ0ZGNjNjVmOTJlNGZhYjNhZDViMzE3OGI5ZTg1
NWNkZGQyMzhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAxLTE3ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBBZGQgW0NhbGxXaXRo
XSBzdXBwb3J0IGZvciBhdHRyaWJ1dGVzIGluIEpTQy9WOCBpZGwgY29kZSBnZW5lcmF0b3JzLgor
ICAgICAgICBQYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NjAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlQ2FsbFdpdGgpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2Vu
ZXJhdGVOb3JtYWxBdHRyR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0clNldHRl
cik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZUNhbGxXaXRoKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwOgorICAgICAgICAoV2ViRE9N
VGVzdE9iajo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkRPTVRlc3RP
Ymo6OnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJET01UZXN0T2Jq
Ojp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJET01U
ZXN0T2JqOjpzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJET01UZXN0T2JqOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAg
ICAoV2ViRE9NVGVzdE9iajo6c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAg
ICAgICAgKFdlYkRPTVRlc3RPYmo6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzKToKKyAgICAgICAgKFdlYkRPTVRlc3RPYmo6OnNldFdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T2JqLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpf
Z2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3NldF93aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGUpOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0cmlidXRl
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlv
bl9jb250ZXh0X2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93
aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGVfcmFpc2VzKToKKyAgICAgICAgKHdlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMpOgorICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRf
YXR0cmlidXRlX3JhaXNlcyk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRo
X3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRyaWJ1dGVfcmFpc2VzKToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9vYmpfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfY2xhc3Nf
aW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW06CisgICAg
ICAgICgtW0RPTVRlc3RPYmogd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlXSk6CisgICAgICAgICgt
W0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlOl0pOgorICAgICAgICAoLVtE
T01UZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlXSk6CisgICAgICAg
ICgtW0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGU6XSk6
CisgICAgICAgICgtW0RPTVRlc3RPYmogd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzXSk6
CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
Ol0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlUmFpc2VzXSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXM6XSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJ
bnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0clNldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJ
bnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKToKKwogMjAxMi0wMS0xNiAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbSW50ZXJuYWxz
XSBtZW1iZXIgdmFyYWlibGVzIHNob3VsZCBmb2xsb3cgbmFtaW5nIGNvbnZlbnRpb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmlu
ZGV4IDA0ZmE3YmI2N2VjZDIxN2M2OThmNWE4NDY1OWYwY2I1NjczZmNkYmMuLmMxODViMjM5YmNj
MWQ1NTlhOWM2M2Q5NzQwZGQwZWI0ZjZkN2EzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xNzY0LDcgKzE3NjQsMTEg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgIyBPbmNl
IEpTRE9NV3JhcHBlcnMgaGF2ZSBhIGJhY2stcG9pbnRlciB0byB0aGUgZ2xvYmFsT2JqZWN0IHdl
IGNhbiBwYXNzIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpCiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4g
Ijo6Z2V0Q29uc3RydWN0b3IoZXhlYywgY2FzdGVkVGhpcyk7XG4iKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2lmICghQHskYXR0cmlidXRlLT5nZXR0ZXJFeGNlcHRpb25zfSkgewotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oZXhlYyk7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGNhbGxXaXRoID0gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKKyAgICAgICAgICAgICAgICAg
ICAgbXkgJGNhbGxXaXRoQXJnID0gIiI7CisKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xuIikgaWYgKCEkY2FsbFdpdGgpOwor
CiAgICAgICAgICAgICAgICAgICAgIG15ICRjYWNoZUluZGV4ID0gMDsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNh
Y2hlZEF0dHJpYnV0ZSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAkY2FjaGVJbmRleCA9
ICRjdXJyZW50Q2FjaGVkQXR0cmlidXRlOwpAQCAtMTc3MywxNCArMTc3NywxOSBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiIpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRjYWxsV2l0aCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgJGNhbGxXaXRoQXJnID0gR2VuZXJhdGVBdHRyaWJ1dGVDYWxsV2l0aCgk
Y2FsbFdpdGgsIFxAaW1wbENvbnRlbnQpOworICAgICAgICAgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCRzdmdMaXN0UHJvcGVydHlUeXBlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4g
TmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUs
ICJjYXN0ZWRUaGlzLT5pbXBsKCktPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkiLCAiY2FzdGVk
VGhpcyIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiY2FzdGVkVGhpcy0+aW1wbCgpLT4kaW1w
bEdldHRlckZ1bmN0aW9uTmFtZSgkY2FsbFdpdGhBcmcpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4i
KTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVy
dHlUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCktPnByb3BlcnR5UmVmZXJlbmNlKCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgZXEgImZsb2F0IikgeyAjIFNwZWNpYWwg
Y2FzZSBmb3IgSlNTVkdOdW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICJpbXBsIiwgImNhc3RlZFRo
aXMiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1
bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBs
Q2xhc3NOYW1lLCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgpIiwgImNhc3RlZFRoaXMi
KSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25O
YW1lKCRjYWxsV2l0aEFyZykiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOworCiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykgPSAkY29kZUdlbmVy
YXRvci0+R2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUsICRh
dHRyaWJ1dGUpOwpAQCAtMTc5Myw2ICsxODAyLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBsLT4k
e2Z1bmN0aW9uTmFtZX0iOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoJGNhbGxXaXRoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaGlmdChAYXJndW1lbnRzLCAkY2FsbFdpdGhBcmcpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9K
U1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICIke2Z1bmN0
aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJjYXN0ZWRUaGlzIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbENs
YXNzTmFtZSogaW1wbCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oY2FzdGVkVGhpcy0+
aW1wbCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5Jc1NWR0FuaW1hdGVkVHlwZSgkdHlwZSkpIHsKQEAgLTE4MDcsMTMgKzE4MjAsMjEgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIHJlc3VsdDtcbiIpOwogCiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGNhbGxXaXRoID0gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKKyAgICAgICAgICAgICAgICAg
ICAgbXkgQGFyZ3VtZW50cyA9ICgiZWMiKTsKKwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOyAgICAgICAgICAgICAg
ICAgICAgCisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRjYWxsV2l0aCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUF0dHJpYnV0ZUNhbGxX
aXRoKCRjYWxsV2l0aCwgXEBpbXBsQ29udGVudCkpOworICAgICAgICAgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1By
b3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGltcGwoKmNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTQzo6SlNW
YWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwg
MCwgJGltcGxDbGFzc05hbWUsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKGVjKSIsICJj
YXN0ZWRUaGlzIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgk
YXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiaW1wbC4kaW1wbEdldHRl
ckZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3RlZFRo
aXMiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xhc3NOYW1lKiBpbXBs
ID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6OkpT
VmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUs
IDAsICRpbXBsQ2xhc3NOYW1lLCAiaW1wbC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoZWMpIiwg
ImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVl
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICJpbXBsLT4kaW1wbEdl
dHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3Rl
ZFRoaXMiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
XG4iKTsKQEAgLTIwMDksNiArMjAzMCwxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBsLT4ke2Z1bmN0aW9uTmFt
ZX0iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbXkgJGNhbGxXaXRoID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCRjYWxsV2l0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUF0dHJpYnV0ZUNhbGxXaXRoKCRjYWxs
V2l0aCwgXEBpbXBsQ29udGVudCwgMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAi
ZWMiKSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2Z1bmN0aW9uTmFtZX0o
IiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpO1xuIikgaWYgQHskYXR0cmlidXRlLT5zZXR0ZXJFeGNlcHRpb25zfTsKQEAgLTIzNjEs
NiArMjM4OCwyNSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxD
b250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKIH0KIAorc3ViIEdlbmVyYXRlQXR0cmlidXRlQ2FsbFdpdGgKK3sKKyAgICBt
eSAkY2FsbFdpdGggPSBzaGlmdDsKKyAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKKyAgICBt
eSAkcmV0dXJuVm9pZCA9IHNoaWZ0OworICAgIG15ICRjYWxsV2l0aEFyZyA9ICJDT01QSUxFX0FT
U0VSVChmYWxzZSkiOworCisgICAgaWYgKCRjYWxsV2l0aCBlcSAiU2NyaXB0U3RhdGUiKSB7Cisg
ICAgICAgICRjYWxsV2l0aEFyZyA9ICJleGVjIjsKKyAgICB9IGVsc2lmICgkY2FsbFdpdGggZXEg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGlmICghc2NyaXB0Q29udGV4dClcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIHJldHVybiIgLiAoJHJldHVyblZvaWQgPyAiIiA6ICIganNVbmRlZmluZWQoKSIpIC4g
IjtcbiIpOworICAgICAgICAkY2FsbFdpdGhBcmcgPSAic2NyaXB0Q29udGV4dCI7CisgICAgfQor
CisgICAgcmV0dXJuICRjYWxsV2l0aEFyZzsKK30KKwogc3ViIEdlbmVyYXRlQXJndW1lbnRzQ291
bnRDaGVjawogewogICAgIG15ICRvdXRwdXRBcnJheSA9IHNoaWZ0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA3YjE4NGE3
YTFjODRmZWMwNDFlODk2Y2VkN2YwNTA5ODUzNDEzZDc5Li4wMmM2MTFlOWQ4YmM4NmZhMDY1ZDg5
ZTg5NzY3OThmZmQ2OGIwNTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtODk5LDggKzg5OSwxNSBAQCBFTkQKIAogICAg
IG15ICRyZXR1cm5UeXBlID0gR2V0VHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlKTsKICAgICBteSAkZ2V0dGVyU3RyaW5nOworICAgIG15ICRjYWxsV2l0aCA9ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0gfHwgIiI7CisK
ICAgICBpZiAoJGdldHRlclN0cmluZ1VzZXNJbXApIHsKICAgICAgICAgbXkgKCRmdW5jdGlvbk5h
bWUsIEBhcmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb24oXCVpbXBs
SW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKKworICAgICAgICBpZiAoJGNh
bGxXaXRoKSB7CisgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVyYXRlQXR0cmlidXRl
Q2FsbFdpdGgoJGNhbGxXaXRoLCBcQGltcGxDb250ZW50RGVjbHMpKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIHB1c2goQGFyZ3VtZW50cywgImVjIikgaWYgJHVzZUV4Y2VwdGlvbnM7CiAgICAgICAg
IGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1l
bnRlZEJ5In0pIHsKICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OwpAQCAtOTMw
LDYgKzkzNywxMiBAQCBFTkQKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIg
ICAgJG5hdGl2ZVR5cGUgdiA9ICRnZXR0ZXJTdHJpbmc7XG4iKTsKICAgICAgICAgfQogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZVNldERPTUV4Y2VwdGlvbigiICAgICIp
KTsKKworICAgICAgICBpZiAoJGNhbGxXaXRoIGVxICJTY3JpcHRTdGF0ZSIpIHsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSk7XG4iKTsKKyAgICAgICAgfQorCiAgICAg
ICAgICRyZXN1bHQgPSAidiI7CiAgICAgICAgICRyZXN1bHQgLj0gIi5yZWxlYXNlKCkiIGlmIChJ
c1JlZlB0clR5cGUoJHJldHVyblR5cGUpKTsKICAgICB9IGVsc2UgewpAQCAtMTEyOCw2ICsxMTQx
LDggQEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7XG4iKTsKICAgICB9CiAKKyAgICBteSAkY2FsbFdpdGggPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9IHx8ICIiOworCiAg
ICAgaWYgKCRpbXBsQ2xhc3NOYW1lIGVxICJTVkdOdW1iZXIiKSB7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgKmltcCA9ICRyZXN1bHQ7XG4iKTsKICAgICB9IGVsc2UgewpA
QCAtMTE1Miw2ICsxMTY3LDExIEBAIEVORAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRE
ZWNscywgIik7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG15ICgkZnVuY3Rp
b25OYW1lLCBAYXJndW1lbnRzKSA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uKFwl
aW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CisKKyAgICAgICAgICAg
IGlmICgkY2FsbFdpdGgpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVy
YXRlQXR0cmlidXRlQ2FsbFdpdGgoJGNhbGxXaXRoLCBcQGltcGxDb250ZW50RGVjbHMsIDEpKTsK
KyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkcmVzdWx0KTsK
ICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgImVjIikgaWYgJHVzZUV4Y2VwdGlvbnM7CiAg
ICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiSW1wbGVtZW50ZWRCeSJ9KSB7CkBAIC0xMTcxLDYgKzExOTEsMTEgQEAgRU5ECiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlv
bihlYyk7XG4iKTsKICAgICB9CiAKKyAgICBpZiAoJGNhbGxXaXRoIGVxICJTY3JpcHRTdGF0ZSIp
IHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAg
dGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSk7XG4iKTsKKyAgICB9CisKICAgICBpZiAoJHN2
Z05hdGl2ZVR5cGUpIHsKICAgICAgICAgaWYgKCR1c2VFeGNlcHRpb25zKSB7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICghZWMpXG4iKTsKQEAgLTE0NTQsNiAr
MTQ3OSwyOCBAQCBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiI2VuZGlmIC8vICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKIH0KIAorc3Vi
IEdlbmVyYXRlQXR0cmlidXRlQ2FsbFdpdGgKK3sKKyAgICBteSAkY2FsbFdpdGggPSBzaGlmdDsK
KyAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKKyAgICBteSAkcmV0dXJuVm9pZCA9IHNoaWZ0
OworICAgIG15ICRjYWxsV2l0aEFyZyA9ICJDT01QSUxFX0FTU0VSVChmYWxzZSkiOworCisgICAg
aWYgKCRjYWxsV2l0aCBlcSAiU2NyaXB0U3RhdGUiKSB7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBTY3JpcHRTdGF0ZSogc3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpO1xu
Iik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIXN0YXRlKVxuIik7Cisg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIiAuICgkcmV0dXJuVm9p
ZCA/ICIiIDogIiB2ODo6VW5kZWZpbmVkKCkiKSAuICI7XG4iKTsKKyAgICAgICAgJGNhbGxXaXRo
QXJnID0gInN0YXRlIjsKKyAgICB9IGVsc2lmICgkY2FsbFdpdGggZXEgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQiKSB7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
O1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIXNjcmlwdENvbnRl
eHQpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4iIC4g
KCRyZXR1cm5Wb2lkID8gIiIgOiAiIHY4OjpVbmRlZmluZWQoKSIpIC4gIjtcbiIpOworICAgICAg
ICAkY2FsbFdpdGhBcmcgPSAic2NyaXB0Q29udGV4dCI7CisgICAgfQorCisgICAgcmV0dXJuICRj
YWxsV2l0aEFyZzsKK30KKwogc3ViIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjawogewogICAg
IG15ICRmdW5jdGlvbiA9IHNoaWZ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKaW5kZXggOWRhYzJkYThh
OWFiMDkwMmZkYTI1ODVlNDU5ZTA4MDUyZDNjNDZhMy4uOWE5ZjNmMTgyZWNmOGNkMDEwYjQ5M2Jj
MGE0YmRlYTU3MGM2NTlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCkBAIC01MTksNiArNTE5LDgw
IEBAIHZvaWQgV2ViRE9NVGVzdE9iajo6c2V0U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24o
Y29uc3QgV2ViRE9NU3RyaW5nJiBuZXdTdHJpCiAgICAgd2ViRE9NUmFpc2VFcnJvcihzdGF0aWNf
Y2FzdDxXZWJET01FeGNlcHRpb25Db2RlPihlYykpOwogfQogCitpbnQgV2ViRE9NVGVzdE9iajo6
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKCkgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gaW1wbCgpLT53aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGUoKTsKK30KKwordm9pZCBXZWJET01UZXN0T2JqOjpzZXRXaXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGUoaW50IG5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSkKK3sKKyAgICBpZiAoIWltcGwo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT5zZXRXaXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGUobmV3V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKTsKK30KKworV2ViRE9NVGVzdE9iaiBX
ZWJET01UZXN0T2JqOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgpIGNvbnN0
Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBXZWJET01UZXN0T2JqKCk7CisK
KyAgICByZXR1cm4gdG9XZWJLaXQoV1RGOjpnZXRQdHIoaW1wbCgpLT53aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZSgpKSk7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9iajo6c2V0V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoY29uc3QgV2ViRE9NVGVzdE9iaiYgbmV3
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpCit7CisgICAgaWYgKCFpbXBsKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGUodG9XZWJDb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlKSk7Cit9CisKK1dlYkRPTVRlc3RPYmogV2ViRE9NVGVzdE9iajo6d2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzKCkgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAg
cmV0dXJuIFdlYkRPTVRlc3RPYmooKTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIFdlYkRPTVRlc3RPYmogcmVzdWx0ID0gdG9XZWJLaXQoV1RGOjpnZXRQdHIoaW1w
bCgpLT53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZWMpKSk7CisgICAgd2ViRE9NUmFp
c2VFcnJvcihzdGF0aWNfY2FzdDxXZWJET01FeGNlcHRpb25Db2RlPihlYykpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9iajo6c2V0V2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzKGNvbnN0IFdlYkRPTVRlc3RPYmomIG5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcykKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgpLT5zZXRXaXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXModG9XZWJDb3JlKG5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlcyksIGVjKTsKKyAgICB3ZWJET01SYWlzZUVycm9yKHN0YXRpY19jYXN0PFdlYkRPTUV4
Y2VwdGlvbkNvZGU+KGVjKSk7Cit9CisKK1dlYkRPTVRlc3RPYmogV2ViRE9NVGVzdE9iajo6d2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoKSBjb25zdAoreworICAgIGlm
ICghaW1wbCgpKQorICAgICAgICByZXR1cm4gV2ViRE9NVGVzdE9iaigpOworCisgICAgV2ViQ29y
ZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgV2ViRE9NVGVzdE9iaiByZXN1bHQgPSB0b1dl
YktpdChXVEY6OmdldFB0cihpbXBsKCktPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzKGVjKSkpOworICAgIHdlYkRPTVJhaXNlRXJyb3Ioc3RhdGljX2Nhc3Q8V2ViRE9N
RXhjZXB0aW9uQ29kZT4oZWMpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFdlYkRP
TVRlc3RPYmo6OnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKGNv
bnN0IFdlYkRPTVRlc3RPYmomIG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCktPnNldFdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKHRvV2ViQ29yZShuZXdXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyksIGVjKTsKKyAgICB3ZWJET01SYWlzZUVycm9yKHN0
YXRpY19jYXN0PFdlYkRPTUV4Y2VwdGlvbkNvZGU+KGVjKSk7Cit9CisKIFdlYkRPTVN0cmluZyBX
ZWJET01UZXN0T2JqOjpzY3JpcHRTdHJpbmdBdHRyKCkgY29uc3QKIHsKICAgICBpZiAoIWltcGwo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQ
UC9XZWJET01UZXN0T2JqLmgKaW5kZXggNDNmZDk4YzAyOWE2NGQ0ZmRlM2Y3ZjcyMGFhYTM5NTVj
N2I0ZmMwMi4uYjNjY2VhMjk2YzYzZTQyZjM2NmViODlhYTkzMDI1ZWQ3NWUwMjVjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJE
T01UZXN0T2JqLmgKQEAgLTEyNCw2ICsxMjQsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oY29uc3QgV2ViRE9NU3RyaW5nJik7CiAgICAgV2Vi
RE9NU3RyaW5nIHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihjb25zdCBXZWJET01TdHJpbmcmKTsK
KyAgICBpbnQgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoaW50KTsKKyAgICBXZWJET01UZXN0T2JqIHdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShjb25zdCBXZWJET01UZXN0T2JqJik7CisgICAg
V2ViRE9NVGVzdE9iaiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhjb25zdCBXZWJET01UZXN0
T2JqJik7CisgICAgV2ViRE9NVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZVJhaXNlcygpIGNvbnN0OworICAgIHZvaWQgc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVSYWlzZXMoY29uc3QgV2ViRE9NVGVzdE9iaiYpOwogICAgIFdlYkRPTVN0cmlu
ZyBzY3JpcHRTdHJpbmdBdHRyKCkgY29uc3Q7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAgICAg
aW50IGNvbmRpdGlvbmFsQXR0cjEoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9i
ai5jcHAKaW5kZXggNzAxNDdjYjgxMGJmYjBmMTQ5YjZjNjI4YzFlNzhjNTU3NDIzNDg0ZS4uOWRl
NDk4ZGJkZWZhYTk1ZTcyNWQ5YWU4NGIzZmYzNjllNzBjNjQ2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE9iai5jcHAKQEAgLTEwODIsNiArMTA4MiwxMjMgQEAgd2Via2l0X2RvbV90ZXN0
X29ial9zZXRfc3RyaW5nX2F0dHJfd2l0aF9zZXR0ZXJfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYKICAgICB9CiB9CiAKK2dsb25nCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRo
X3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CisgICAgZ2xvbmcgcmVzID0gaXRlbS0+d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
KCk7CisgICAgcmV0dXJuIHJlczsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRf
d2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25n
IHZhbHVlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0g
V2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0ZW0tPnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZSh2YWx1ZSk7Cit9CisKK1dlYktpdERPTVRlc3RPYmoqCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dl
dF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAq
IGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXN0
T2JqPiBnX3JlcyA9IFdURjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlKCkpOworICAgIFdlYktpdERPTVRlc3RPYmoqIHJlcyA9IFdlYktpdDo6a2l0KGdf
cmVzLmdldCgpKTsKKyAgICByZXR1cm4gcmVzOworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRyaWJ1dGUoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdE9iaiogdmFsdWUpCit7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChzZWxmKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAg
Z19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGNvbnZlcnRl
ZF92YWx1ZSA9IE5VTEw7CisgICAgaWYgKHZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgY29udmVy
dGVkX3ZhbHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFp
bChjb252ZXJ0ZWRfdmFsdWUpOworICAgIH0KKyAgICBpdGVtLT5zZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZShjb252ZXJ0ZWRfdmFsdWUpOworfQorCitXZWJLaXRET01UZXN0
T2JqKgord2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRl
X3JhaXNlcyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBHRXJyb3IgKiplcnJvcikKK3sKKyAgICBn
X3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnX3JlcyA9IFdURjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhlYykpOworICAgIGlmIChlYykgeworICAgICAgICBXZWJD
b3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICAgICAgZ19zZXRf
ZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBl
Y2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOworICAgIH0KKyAgICBXZWJLaXRET01UZXN0T2JqKiBy
ZXMgPSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSk7CisgICAgcmV0dXJuIHJlczsKK30KKwordm9p
ZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3Jh
aXNlcyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSwgR0Vy
cm9yICoqZXJyb3IpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0
ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1ZSk7Cisg
ICAgV2ViQ29yZTo6VGVzdE9iaiAqIGNvbnZlcnRlZF92YWx1ZSA9IE5VTEw7CisgICAgaWYgKHZh
bHVlICE9IE5VTEwpIHsKKyAgICAgICAgY29udmVydGVkX3ZhbHVlID0gV2ViS2l0Ojpjb3JlKHZh
bHVlKTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRfdmFsdWUpOworICAgIH0K
KyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpdGVtLT5zZXRXaXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoY29udmVydGVkX3ZhbHVlLCBlYyk7CisgICAgaWYgKGVj
KSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMp
OworICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5n
KCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CisgICAgfQorfQorCitX
ZWJLaXRET01UZXN0T2JqKgord2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhl
Y3V0aW9uX2NvbnRleHRfYXR0cmlidXRlX3JhaXNlcyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBH
RXJyb3IgKiplcnJvcikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVz
dE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBnX3JlcyA9IFdU
Rjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2Vz
KGVjKSk7CisgICAgaWYgKGVjKSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNj
cmlwdGlvbiBlY2Rlc2MoZWMpOworICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBn
X3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFt
ZSk7CisgICAgfQorICAgIFdlYktpdERPTVRlc3RPYmoqIHJlcyA9IFdlYktpdDo6a2l0KGdfcmVz
LmdldCgpKTsKKyAgICByZXR1cm4gcmVzOworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRyaWJ1dGVfcmFpc2VzKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoqIHZhbHVlLCBHRXJyb3IgKiplcnJv
cikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOworICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktp
dDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqICogY29udmVydGVkX3ZhbHVlID0gTlVMTDsKKyAgICBpZiAodmFsdWUgIT0gTlVM
TCkgeworICAgICAgICBjb252ZXJ0ZWRfdmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOworICAg
ICAgICBnX3JldHVybl9pZl9mYWlsKGNvbnZlcnRlZF92YWx1ZSk7CisgICAgfQorICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGl0ZW0tPnNldFdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzKGNvbnZlcnRlZF92YWx1ZSwgZWMpOworICAgIGlmIChl
YykgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVj
KTsKKyAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmlu
ZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOworICAgIH0KK30KKwog
Z2NoYXIqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zY3JpcHRfc3RyaW5nX2F0dHIoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZikKIHsKQEAgLTEzMzQsNiArMTQ1MSwxMCBAQCBlbnVtIHsKICAgICBQ
Uk9QX1NUUklOR19BVFRSX1dJVEhfR0VUVEVSX0VYQ0VQVElPTiwKICAgICBQUk9QX1NUUklOR19B
VFRSX1dJVEhfU0VUVEVSX0VYQ0VQVElPTiwKICAgICBQUk9QX0NVU1RPTV9BVFRSLAorICAgIFBS
T1BfV0lUSF9TQ1JJUFRfU1RBVEVfQVRUUklCVVRFLAorICAgIFBST1BfV0lUSF9TQ1JJUFRfRVhF
Q1VUSU9OX0NPTlRFWFRfQVRUUklCVVRFLAorICAgIFBST1BfV0lUSF9TQ1JJUFRfU1RBVEVfQVRU
UklCVVRFX1JBSVNFUywKKyAgICBQUk9QX1dJVEhfU0NSSVBUX0VYRUNVVElPTl9DT05URVhUX0FU
VFJJQlVURV9SQUlTRVMsCiAgICAgUFJPUF9TQ1JJUFRfU1RSSU5HX0FUVFIsCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjEpCiAgICAgUFJPUF9DT05ESVRJT05BTF9BVFRSMSwKQEAgLTE0ODAsNiArMTYw
MSwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9wcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgogICAgICAgICBjb3JlU2VsZi0+c2V0U3Ry
aW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oV1RGOjpTdHJpbmc6OmZyb21VVEY4KGdfdmFsdWVf
Z2V0X3N0cmluZyh2YWx1ZSkpLCBlYyk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNl
IFBST1BfV0lUSF9TQ1JJUFRfU1RBVEVfQVRUUklCVVRFOgorICAgIHsKKyAgICAgICAgY29yZVNl
bGYtPnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgoZ192YWx1ZV9nZXRfbG9uZyh2YWx1ZSkp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogI2lmIEVOQUJMRShDb25kaXRpb24xKQogICAgIGNh
c2UgUFJPUF9DT05ESVRJT05BTF9BVFRSMToKICAgICB7CkBAIC0xNjY0LDYgKzE3OTAsMzEgQEAg
c3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wX2lkLCBHVmEKICAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1
ZSwgY29udmVydFRvVVRGOFN0cmluZyhjb3JlU2VsZi0+c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24oKSkpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBQUk9QX1dJVEhfU0NS
SVBUX1NUQVRFX0FUVFJJQlVURToKKyAgICB7CisgICAgICAgIGdfdmFsdWVfc2V0X2xvbmcodmFs
dWUsIGNvcmVTZWxmLT53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIFBST1BfV0lUSF9TQ1JJUFRfRVhFQ1VUSU9OX0NPTlRFWFRfQVRU
UklCVVRFOgorICAgIHsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IHB0ciA9IGNv
cmVTZWxmLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgpOworICAgICAgICBn
X3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIFdlYktpdDo6a2l0KHB0ci5nZXQoKSkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX1dJVEhfU0NSSVBUX1NUQVRFX0FUVFJJQlVU
RV9SQUlTRVM6CisgICAgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IHB0ciA9IGNvcmVTZWxmLT53aXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZWMpOworICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3Qo
dmFsdWUsIFdlYktpdDo6a2l0KHB0ci5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBQUk9QX1dJVEhfU0NSSVBUX0VYRUNVVElPTl9DT05URVhUX0FUVFJJQlVURV9SQUlT
RVM6CisgICAgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAg
ICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IHB0ciA9IGNvcmVTZWxmLT53aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhlYyk7CisgICAgICAgIGdfdmFsdWVfc2V0X29i
amVjdCh2YWx1ZSwgV2ViS2l0OjpraXQocHRyLmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KICAgICBjYXNlIFBST1BfU0NSSVBUX1NUUklOR19BVFRSOgogICAgIHsKICAgICAgICAgZ192
YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgY29udmVydFRvVVRGOFN0cmluZyhjb3JlU2VsZi0+c2Ny
aXB0U3RyaW5nQXR0cigpKSk7CkBAIC0xOTYyLDYgKzIxMTMsMzYgQEAgR19NQVhMT05HLCAvKiBt
YXggKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiIsIC8qIGRlZmF1bHQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwog
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9XSVRIX1NDUklQVF9TVEFURV9BVFRS
SUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNf
bG9uZygid2l0aC1zY3JpcHQtc3RhdGUtYXR0cmlidXRlIiwgLyogbmFtZSAqLworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9v
Ympfd2l0aC1zY3JpcHQtc3RhdGUtYXR0cmlidXRlIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInJlYWQtd3JpdGUgIGdsb25nIFRlc3RPYmoud2l0aC1zY3JpcHQtc3RhdGUtYXR0cmlidXRl
IiwgLyogbG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICov
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdfTUlOTE9ORywgLyogbWluICovCitHX01BWExPTkcsIC8qIG1heCAqLworMCwgLyogZGVm
YXVsdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUk9QX1dJVEhfU0NSSVBUX0VYRUNVVElPTl9DT05URVhUX0FUVFJJQlVURSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3Qo
IndpdGgtc2NyaXB0LWV4ZWN1dGlvbi1jb250ZXh0LWF0dHJpYnV0ZSIsIC8qIG5hbWUgKi8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRlc3Rfb2JqX3dpdGgtc2NyaXB0LWV4ZWN1dGlvbi1jb250ZXh0LWF0dHJpYnV0ZSIsIC8qIHNo
b3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBXZWJLaXRET01UZXN0T2JqKiBUZXN0
T2JqLndpdGgtc2NyaXB0LWV4ZWN1dGlvbi1jb250ZXh0LWF0dHJpYnV0ZSIsIC8qIGxvbmdlciAt
IGNvdWxkIGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQ
RV9ET01fVEVTVF9PQkosIC8qIGdvYmplY3QgdHlwZSAqLworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdS
SVRFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1dJVEhfU0NSSVBUX1NU
QVRFX0FUVFJJQlVURV9SQUlTRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJ3aXRoLXNjcmlwdC1zdGF0ZS1hdHRyaWJ1dGUtcmFpc2Vz
IiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAidGVzdF9vYmpfd2l0aC1zY3JpcHQtc3RhdGUtYXR0cmlidXRlLXJh
aXNlcyIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBXZWJLaXRET01U
ZXN0T2JqKiBUZXN0T2JqLndpdGgtc2NyaXB0LXN0YXRlLWF0dHJpYnV0ZS1yYWlzZXMiLCAvKiBs
b25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VC
S0lUX1RZUEVfRE9NX1RFU1RfT0JKLCAvKiBnb2JqZWN0IHR5cGUgKi8KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFN
X1JFQURXUklURSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVj
dENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9XSVRIX1ND
UklQVF9FWEVDVVRJT05fQ09OVEVYVF9BVFRSSUJVVEVfUkFJU0VTLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgid2l0aC1zY3JpcHQtZXhl
Y3V0aW9uLWNvbnRleHQtYXR0cmlidXRlLXJhaXNlcyIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3Rfb2Jq
X3dpdGgtc2NyaXB0LWV4ZWN1dGlvbi1jb250ZXh0LWF0dHJpYnV0ZS1yYWlzZXMiLCAvKiBzaG9y
dCBkZXNjcmlwdGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAicmVhZC13cml0ZSAgV2ViS2l0RE9NVGVzdE9iaiogVGVzdE9i
ai53aXRoLXNjcmlwdC1leGVjdXRpb24tY29udGV4dC1hdHRyaWJ1dGUtcmFpc2VzIiwgLyogbG9u
Z2VyIC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJ
VF9UWVBFX0RPTV9URVNUX09CSiwgLyogZ29iamVjdCB0eXBlICovCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEV1JJVEUpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RD
bGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfU0NSSVBUX1NU
UklOR19BVFRSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9z
cGVjX3N0cmluZygic2NyaXB0LXN0cmluZy1hdHRyIiwgLyogbmFtZSAqLwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpf
c2NyaXB0LXN0cmluZy1hdHRyIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RPYmouaAppbmRleCBhNjBiOTdlZWEzOGYwMmI3NWQxNWJkMzM1YzNhNDJlYjQy
OTNiZDczLi43ZDgzZjliZjJmNTFiN2MyMDBmZTQ0N2I0Zjk0MDdiOTI3MzZhMDE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCkBAIC05NzQsNiArOTc0LDk0IEBAIFdFQktJVF9BUEkg
dm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfc3RyaW5nX2F0dHJfd2l0aF9zZXR0ZXJfZXhj
ZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSwgR0Vycm9y
ICoqZXJyb3IpOwogCiAvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0
X3N0YXRlX2F0dHJpYnV0ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICog
UmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgZ2xvbmcKK3dlYmtpdF9kb21fdGVzdF9vYmpf
Z2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsK
KworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9zdGF0ZV9hdHRy
aWJ1dGU6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNnbG9u
ZworICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBnbG9uZyB2YWx1ZSk7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRf
d2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dl
YktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6CisgKgorKiov
CitXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93
aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRfZXhl
Y3V0aW9uX2NvbnRleHRfYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoK
KyAqIEB2YWx1ZTogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6ICh0cmFuc2Zl
ciBub25lKToKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial9z
ZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0cmlidXRlKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoqIHZhbHVlKTsKKworLyoqCisgKiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGVfcmFpc2VzOgorICogQHNl
bGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBlcnJvcjogI0dFcnJvcgorICoKKyAqIFJldHVy
bnM6ICh0cmFuc2ZlciBub25lKToKKyAqCisqKi8KK1dFQktJVF9BUEkgV2ViS2l0RE9NVGVzdE9i
aioKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZV9y
YWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9yICoqZXJyb3IpOworCisvKioKKyAq
IHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlz
ZXM6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNXZWJLaXRE
T01UZXN0T2JqCisgKiBAZXJyb3I6ICNHRXJyb3IKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIg
bm9uZSk6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0
X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgV2ViS2l0RE9NVGVzdE9iaiogdmFsdWUsIEdFcnJvciAqKmVycm9yKTsKKworLyoqCisgKiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRy
aWJ1dGVfcmFpc2VzOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBlcnJvcjog
I0dFcnJvcgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKToKKyAqCisqKi8KK1dFQktJ
VF9BUEkgV2ViS2l0RE9NVGVzdE9iaioKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2Ny
aXB0X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgR0Vycm9yICoqZXJyb3IpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0
X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJpYnV0ZV9yYWlzZXM6CisgKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNXZWJLaXRET01UZXN0T2JqCisg
KiBAZXJyb3I6ICNHRXJyb3IKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6CisgKgor
KiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0
X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgV2ViS2l0RE9NVGVzdE9iaiogdmFsdWUsIEdFcnJvciAqKmVycm9yKTsKKworLyoqCiAgKiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zY3JpcHRfc3RyaW5nX2F0dHI6CiAgKiBAc2VsZjogQSAj
V2ViS2l0RE9NVGVzdE9iagogICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZTkxYTExNDAzODk2NmZjNzJkODk1
NzY0N2IyNTY1NWE1ZTkwMzJmNS4uMmMzZDYyOTgxZmI5ZmI2Y2I3ZTc1YmExNjcwNjZmOGMwMmQx
MTkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKQEAgLTEwNyw2ICsxMDcsMTAgQEAgc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdE9ialRhYmxlVmFsdWVzW10gPQogICAgIHsgInN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbiksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
biwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIs
IERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24pLCAoaW50cHRyX3Qp
c2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24sIE5vSW50cmluc2ljIH0s
CiAgICAgeyAiY3VzdG9tQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ3VzdG9tQXR0ciksIChpbnRwdHJf
dClzZXRKU1Rlc3RPYmpDdXN0b21BdHRyLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIndpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZSIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
KSwgKGludHB0cl90KXNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSwgTm9JbnRy
aW5zaWMgfSwKKyAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIsIERv
bnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpLCAoaW50cHRy
X3Qpc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUsIE5vSW50
cmluc2ljIH0sCisgICAgeyAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgRG9udERl
bGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpLCAoaW50cHRyX3Qpc2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzLCBOb0ludHJpbnNpYyB9LAorICAg
IHsgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIiwgRG9udERlbGV0
ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyksIChpbnRwdHJf
dClzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcywg
Tm9JbnRyaW5zaWMgfSwKICAgICB7ICJzY3JpcHRTdHJpbmdBdHRyIiwgRG9udERlbGV0ZSB8IFJl
YWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+
KGpzVGVzdE9ialNjcmlwdFN0cmluZ0F0dHIpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwK
ICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICAgICB7ICJjb25kaXRpb25hbEF0dHIxIiwgRG9udERl
bGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKSwgKGludHB0cl90KXNldEpTVGVzdE9iakNvbmRpdGlv
bmFsQXR0cjEsIE5vSW50cmluc2ljIH0sCkBAIC0xMzksNyArMTQzLDcgQEAgc3RhdGljIGNvbnN0
IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialRhYmxlVmFsdWVzW10gPQogICAgIHsgMCwgMCwgMCwg
MCwgTm9JbnRyaW5zaWMgfQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpU
YWJsZSA9IHsgMTM2LCAxMjcsIEpTVGVzdE9ialRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29u
c3QgSGFzaFRhYmxlIEpTVGVzdE9ialRhYmxlID0geyAxMzcsIDEyNywgSlNUZXN0T2JqVGFibGVW
YWx1ZXMsIDAgfTsKIC8qIEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAKIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQpA
QCAtNjMxLDYgKzYzNSw1MiBAQCBKU1ZhbHVlIGpzVGVzdE9iakN1c3RvbUF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJgogfQogCiAKK0pTVmFs
dWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAg
ICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwo
KSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLT53aXRoU2NyaXB0U3RhdGVB
dHRyaWJ1dGUoZXhlYykpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworSlNWYWx1ZSBqc1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQoreworICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IHN0YXRpY19jYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RP
YmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVj
LCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC0+d2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoc2NyaXB0Q29udGV4dCkpKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCisKK0pTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2Jq
Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBU
ZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7
CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cyhleGVjLCBlYykpKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKKworSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNv
bnN0IElkZW50aWZpZXImKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19j
YXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IHN0YXRp
Y19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0
PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQg
PSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBs
LT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhzY3JpcHRDb250ZXh0
LCBlYykpKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKKwogSlNWYWx1ZSBqc1Rlc3RPYmpTY3JpcHRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKQEAgLTEwMTcsNiArMTA2Nyw0OCBAQCB2b2lkIHNldEpTVGVzdE9iakN1c3RvbUF0dHIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZQogfQog
CiAKK3ZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7Cisg
ICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOworICAgIGltcGwtPnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShleGVjLCB2YWx1ZS50
b0ludDMyKGV4ZWMpKTsKK30KKworCit2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nh
c3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19j
YXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAg
ICBpZiAoIXNjcmlwdENvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBpbXBsLT5zZXRXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShzY3JpcHRDb250ZXh0LCB0b1Rlc3RPYmoo
dmFsdWUpKTsKK30KKworCit2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9i
aio+KHRoaXNPYmplY3QpOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2Jq
Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBp
bXBsLT5zZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZXhlYywgdG9UZXN0T2JqKHZh
bHVlKSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Cit9CisKKwordm9pZCBz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmpl
Y3QpOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgaW1wbC0+c2V0
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoc2NyaXB0Q29udGV4dCwg
dG9UZXN0T2JqKHZhbHVlKSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Cit9
CisKKwogI2lmIEVOQUJMRShDb25kaXRpb24xKQogdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmgKaW5kZXggYWU0MDQxZGU2N2E5YmNlYWY1YjRiMTM2OTc3Y2U4NzU5NDE2ZmYy
My4uNDVmOWZiNzMxN2NiM2Y1MTIzNzVkZDczYTMyMGQ4MTFjOTE1YTJmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaApAQCAt
MjQ5LDYgKzI0OSwxNCBAQCBKU0M6OkpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdQogdm9pZCBzZXRKU1Rlc3RP
YmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNP
YmplY3QqLCBKU0M6OkpTVmFsdWUpOwogSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakN1c3RvbUF0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwog
dm9pZCBzZXRKU1Rlc3RPYmpDdXN0b21BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVj
dCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50
aWZpZXImKTsKK3ZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUg
anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwordm9pZCBzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialdp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7Cit2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6
OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBK
U0M6OklkZW50aWZpZXImKTsKK3ZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpTY3JpcHRTdHJpbmdBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKIEpTQzo6
SlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0
aW9uYWxBdHRyMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE9iai5oCmluZGV4IDI4Mjk5NWFlODkxM2ExYjE4N2UxNmI0MmYzZmY4Yjk0YzYxNzlh
ZWIuLmYwNjRmY2VlNWQzMmIwZGFjYmM2ZjI3MDY1NDljMmI0MzJmYTkxNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2Jq
LmgKQEAgLTExOSw2ICsxMTksMTQgQEAgZW51bSB7CiAtICh2b2lkKXNldFN0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uOihOU1N0cmluZyAqKW5ld1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uOwogLSAoaW50KWN1c3RvbUF0dHI7CiAtICh2b2lkKXNldEN1c3RvbUF0dHI6KGludCluZXdD
dXN0b21BdHRyOworLSAoaW50KXdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZTsKKy0gKHZvaWQpc2V0
V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlOihpbnQpbmV3V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
OworLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlOwor
LSAodm9pZClzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZTooRE9NVGVzdE9i
aiAqKW5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlOworLSAoRE9NVGVzdE9i
aiAqKXdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlczsKKy0gKHZvaWQpc2V0V2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzOihET01UZXN0T2JqICopbmV3V2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzOworLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlUmFpc2VzOworLSAodm9pZClzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZVJhaXNlczooRE9NVGVzdE9iaiAqKW5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlUmFpc2VzOwogLSAoTlNTdHJpbmcgKilzY3JpcHRTdHJpbmdBdHRyOwogI2lmIEVO
QUJMRShDb25kaXRpb24xKQogLSAoaW50KWNvbmRpdGlvbmFsQXR0cjE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpp
bmRleCAwOGYxZjFlN2FjM2ZkMWNlODM3NzA0M2EwY2YzYjhhMWMzNDlhNGY0Li4xOTZkMjRkOWU5
M2NkNzUyZTNmMzBmZmY0MjQ2NTUzNzUwMTQ5YWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KQEAgLTQzNiw2
ICs0MzYsNzAgQEAKICAgICBJTVBMLT5zZXRDdXN0b21BdHRyKG5ld0N1c3RvbUF0dHIpOwogfQog
CistIChpbnQpd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlCit7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT53aXRoU2NyaXB0U3RhdGVB
dHRyaWJ1dGUoKTsKK30KKworLSAodm9pZClzZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGU6KGlu
dCluZXdXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
KG5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk7Cit9CisKKy0gKERPTVRlc3RPYmogKil3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRo
cmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKCkpKTsKK30KKworLSAodm9pZClzZXRX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZTooRE9NVGVzdE9iaiAqKW5ld1dpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZSk7CisKKyAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZShjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKSk7
Cit9CisKKy0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NVGVzdE9iaiAqcmVzdWx0ID0ga2l0KFdURjo6
Z2V0UHRyKElNUEwtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhlYykpKTsKKyAgICBX
ZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0g
KHZvaWQpc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzOihET01UZXN0T2JqICopbmV3
V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMpOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgSU1Q
TC0+c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKGNvcmUobmV3V2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzKSwgZWMpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihl
Yyk7Cit9CisKKy0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZVJhaXNlcworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBET01UZXN0T2JqICpyZXN1
bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVSYWlzZXMoZWMpKSk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCistICh2b2lkKXNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlUmFpc2VzOihET01UZXN0T2JqICopbmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVSYWlzZXMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgQVNTRVJUKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzKTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIElN
UEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKGNvcmUobmV3
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpLCBlYyk7CisgICAgV2Vi
Q29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKK30KKwogLSAoTlNTdHJpbmcgKilzY3JpcHRTdHJp
bmdBdHRyCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4
IGVkMzM4YzZiMjFkNzE4YmNlZjMzMjhjMTQxMjJmYWIzODI2NDg0ODUuLjczZmQxOWI3YmMwYmI3
MjA0YWZiMDk4ZTlhMDNiZjg4NzA1MWNlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTEwOSw2ICsxMDksMTMgQEAgbW9kdWxl
IHRlc3QgewogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7CiAKKyAgICAgICAgYXR0cmlidXRlIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gbG9uZyB3
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGU7CisgICAgICAgIGF0dHJpYnV0ZSBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZTsKKyAgICAgICAgYXR0cmlidXRlIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gVGVzdE9i
aiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMKKyAgICAgICAgICAgIGdldHRlciByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgYXR0cmlidXRlIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSBUZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzCisgICAgICAgICAgICBnZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisKICAgICAg
ICAgLy8gJ09wdGlvbmFsJyBleHRlbmRlZCBhdHRyaWJ1dGUKICAgICAgICAgdm9pZCAgICBtZXRo
b2RXaXRoT3B0aW9uYWxBcmcoaW4gW09wdGlvbmFsXSBsb25nIG9wdCk7CiAgICAgICAgIHZvaWQg
ICAgbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoaW4gbG9uZyBub25PcHQs
IGluIFtPcHRpb25hbF0gbG9uZyBvcHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCAxN2MwYTAzYWQyYWU3NGE0
OWJiYjExYmM3NjE5MWY4YmExN2UyYWUyLi42MzM2ZGU0NjMxOWFjMmQ5ZmZjM2Q1ZWNlZWVlMzcz
YmIxNzQ2YWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtNTE0LDYgKzUxNCwxMTggQEAgc3RhdGljIHZvaWQg
c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLAogICAgIHJldHVybjsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygi
RE9NLlRlc3RPYmoud2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlLl9nZXQiKTsKKyAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFNjcmlwdFN0
YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFzdGF0ZSkKKyAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdjg6OkludGVnZXI6Ok5l
dyhpbXAtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShzdGF0ZSkpOworfQorCitzdGF0aWMgdm9p
ZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZS5fc2V0Iik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBpbnQgdiA9IHRvSW50MzIodmFsdWUpOworICAgIFNjcmlwdFN0
YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFzdGF0ZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGltcC0+c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKHN0YXRl
LCB2KTsKKyAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHRocm93RXJyb3Io
c3RhdGUuZXhjZXB0aW9uKCkpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZS5fZ2V0Iik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250
ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4
dCkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICByZXR1cm4gdG9WOChpbXAt
PndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKHNjcmlwdENvbnRleHQpKTsKK30K
Kworc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlLl9zZXQiKTsKKyAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFRl
c3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlKSA/IFY4VGVzdE9iajo6dG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIGlt
cC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoc2NyaXB0Q29udGV4dCwg
V1RGOjpnZXRQdHIodikpOworICAgIHJldHVybjsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzLl9n
ZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9
IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFzdGF0ZSkKKyAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKKyAgICBSZWZQdHI8VGVzdE9iaj4gdiA9IGltcC0+d2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzKHN0YXRlLCBlYyk7CisgICAgaWYgKFVOTElLRUxZKGVjKSkg
eworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgICAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgfQorICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCkpOworICAg
IHJldHVybiB0b1Y4KHYucmVsZWFzZSgpKTsKK30KKworc3RhdGljIHZvaWQgd2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YWlzZXMuX3NldCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFs
dWUpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZh
bHVlKSkgOiAwOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFNjcmlwdFN0YXRlKiBz
dGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFzdGF0ZSkKKyAgICAgICAg
cmV0dXJuOworICAgIGltcC0+c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKHN0YXRl
LCBXVEY6OmdldFB0cih2KSwgZWMpOworICAgIGlmIChVTkxJS0VMWShlYykpCisgICAgICAgIFY4
UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm47Cit9
CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RP
Ymoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMuX2dldCIpOworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdENv
bnRleHQpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgUmVmUHRyPFRlc3RP
Ymo+IHYgPSBpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKHNj
cmlwdENvbnRleHQsIGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKSB7CisgICAgICAgIFY4UHJv
eHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4oKTsKKyAgICB9CisgICAgcmV0dXJuIHRvVjgodi5yZWxlYXNlKCkpOworfQorCitzdGF0
aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMuX3NldCIpOwor
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Cisg
ICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUpID8gVjhUZXN0T2Jq
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRD
b250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgaW1wLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZVJhaXNlcyhzY3JpcHRDb250ZXh0LCBXVEY6OmdldFB0cih2KSwgZWMp
OworICAgIGlmIChVTkxJS0VMWShlYykpCisgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlv
bihlYyk7CisgICAgcmV0dXJuOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNj
cmlwdFN0cmluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmou
c2NyaXB0U3RyaW5nQXR0ci5fZ2V0Iik7CkBAIC0xNTIyLDYgKzE2MzQsMTQgQEAgc3RhdGljIGNv
bnN0IEJhdGNoZWRBdHRyaWJ1dGUgVGVzdE9iakF0dHJzW10gPSB7CiAgICAgeyJzdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0
ZXJFeGNlcHRpb25BdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRl
ICdjdXN0b21BdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0N1c3RvbScpCiAgICAg
eyJjdXN0b21BdHRyIiwgVjhUZXN0T2JqOjpjdXN0b21BdHRyQWNjZXNzb3JHZXR0ZXIsIFY4VGVz
dE9iajo6Y3VzdG9tQXR0ckFjY2Vzc29yU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBB
dHRyaWJ1dGUgJ3dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4
dEF0dHI6ICdDYWxsV2l0aCcpCisgICAgeyJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCBUZXN0
T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXIsIFRlc3RPYmpJ
bnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlciwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCisgICAgeyJ3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIsIFRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6Ondp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0clNldHRlciwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMnIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQorICAgIHsid2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzIiwgVGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXNBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0
ZSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMnIChUeXBlOiAnYXR0
cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVSYWlzZXMiLCBUZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjp3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnc2NyaXB0U3RyaW5nQXR0cicgKFR5cGU6ICdyZWFk
b25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb252ZXJ0U2NyaXB0U3RyaW5nJykKICAgICB7InNj
cmlwdFN0cmluZ0F0dHIiLCBUZXN0T2JqSW50ZXJuYWw6OnNjcmlwdFN0cmluZ0F0dHJBdHRyR2V0
dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122967</attachid>
            <date>2012-01-18 11:12:00 -0800</date>
            <delta_ts>2012-01-18 12:29:45 -0800</delta_ts>
            <desc>refactored some of the [CallWith] code for functions</desc>
            <filename>bug-76517-20120118111159.patch</filename>
            <type>text/plain</type>
            <size>57922</size>
            <attacher name="Pablo Flouret">pf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M4NTIxOWFmMWZjZWZj
Y2UwOTY0M2MzNzVhNGYwYzFmMGM3ZGNiNC4uNTQ0ZGNjNjVmOTJlNGZhYjNhZDViMzE3OGI5ZTg1
NWNkZGQyMzhlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAxLTE3ICBQYWJs
byBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4KKworICAgICAgICBBZGQgW0NhbGxXaXRo
XSBzdXBwb3J0IGZvciBhdHRyaWJ1dGVzIGluIEpTQy9WOCBpZGwgY29kZSBnZW5lcmF0b3JzLgor
ICAgICAgICBQYXJ0IG9mIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NjAzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlQ2FsbFdpdGgpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2Vu
ZXJhdGVOb3JtYWxBdHRyR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0clNldHRl
cik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZUNhbGxXaXRoKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwOgorICAgICAgICAoV2ViRE9N
VGVzdE9iajo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkRPTVRlc3RP
Ymo6OnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJET01UZXN0T2Jq
Ojp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJET01U
ZXN0T2JqOjpzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSk6CisgICAgICAg
IChXZWJET01UZXN0T2JqOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAg
ICAoV2ViRE9NVGVzdE9iajo6c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAg
ICAgICAgKFdlYkRPTVRlc3RPYmo6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzKToKKyAgICAgICAgKFdlYkRPTVRlc3RPYmo6OnNldFdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T2JqLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpf
Z2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3NldF93aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGUpOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0cmlidXRl
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlv
bl9jb250ZXh0X2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93
aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGVfcmFpc2VzKToKKyAgICAgICAgKHdlYmtpdF9kb21f
dGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMpOgorICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRf
YXR0cmlidXRlX3JhaXNlcyk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRo
X3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRyaWJ1dGVfcmFpc2VzKToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9vYmpfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfY2xhc3Nf
aW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rl
c3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW06CisgICAg
ICAgICgtW0RPTVRlc3RPYmogd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlXSk6CisgICAgICAgICgt
W0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlOl0pOgorICAgICAgICAoLVtE
T01UZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlXSk6CisgICAgICAg
ICgtW0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGU6XSk6
CisgICAgICAgICgtW0RPTVRlc3RPYmogd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzXSk6
CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
Ol0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlUmFpc2VzXSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXM6XSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJ
bnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0clNldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJ
bnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKToKKwogMjAxMi0wMS0xNiAgSGFq
aW1lIE1vcnJpdGEgIDxtb3JyaXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbSW50ZXJuYWxz
XSBtZW1iZXIgdmFyYWlibGVzIHNob3VsZCBmb2xsb3cgbmFtaW5nIGNvbnZlbnRpb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmlu
ZGV4IDA0ZmE3YmI2N2VjZDIxN2M2OThmNWE4NDY1OWYwY2I1NjczZmNkYmMuLmQxZjkyMjc4ZjI4
YzI0NDY5ODMwYzBlNGVkMjRiOTYxNTMxM2NmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xNzY0LDcgKzE3NjQsMTEg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgIyBPbmNl
IEpTRE9NV3JhcHBlcnMgaGF2ZSBhIGJhY2stcG9pbnRlciB0byB0aGUgZ2xvYmFsT2JqZWN0IHdl
IGNhbiBwYXNzIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpCiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4g
Ijo6Z2V0Q29uc3RydWN0b3IoZXhlYywgY2FzdGVkVGhpcyk7XG4iKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2lmICghQHskYXR0cmlidXRlLT5nZXR0ZXJFeGNlcHRpb25zfSkgewotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oZXhlYyk7XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGNhbGxXaXRoID0gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKKyAgICAgICAgICAgICAgICAg
ICAgbXkgJGNhbGxXaXRoQXJnID0gIiI7CisKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKGV4ZWMpO1xuIikgaWYgKCEkY2FsbFdpdGgpOwor
CiAgICAgICAgICAgICAgICAgICAgIG15ICRjYWNoZUluZGV4ID0gMDsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNh
Y2hlZEF0dHJpYnV0ZSJ9KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAkY2FjaGVJbmRleCA9
ICRjdXJyZW50Q2FjaGVkQXR0cmlidXRlOwpAQCAtMTc3MywxNCArMTc3NywxOSBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiIpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRjYWxsV2l0aCkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgJGNhbGxXaXRoQXJnID0gR2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgs
IFxAaW1wbENvbnRlbnQsICJqc1VuZGVmaW5lZCgpIik7CisgICAgICAgICAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0
ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENs
YXNzTmFtZSwgImNhc3RlZFRoaXMtPmltcGwoKS0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKSIs
ICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICJjYXN0ZWRUaGlzLT5pbXBs
KCktPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCRjYWxsV2l0aEFyZykiLCAiY2FzdGVkVGhpcyIp
IC4gIjtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkc3ZnUHJvcGVydHlPckxp
c3RQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKS0+cHJvcGVydHlSZWZlcmVuY2UoKTtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSBlcSAiZmxvYXQiKSB7ICMg
U3BlY2lhbCBjYXNlIGZvciBKU1NWR051bWJlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pT
VmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgImltcGwiLCAi
Y2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1Zh
bHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwg
MCwgJGltcGxDbGFzc05hbWUsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCkiLCAiY2Fz
dGVkVGhpcyIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgImltcGwuJGltcGxHZXR0ZXJG
dW5jdGlvbk5hbWUoJGNhbGxXaXRoQXJnKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CisKICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25OYW1lLCBAYXJndW1lbnRzKSA9ICRj
b2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uKFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNl
TmFtZSwgJGF0dHJpYnV0ZSk7CkBAIC0xNzkzLDYgKzE4MDIsMTAgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0g
ImltcGwtPiR7ZnVuY3Rpb25OYW1lfSI7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkY2FsbFdpdGgpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsICRjYWxsV2l0aEFyZyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRqc1R5cGUgPSBO
YXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwg
IiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgImNhc3Rl
ZFRoaXMiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICRpbXBsQ2xhc3NOYW1lKiBpbXBsID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPklzU1ZHQW5pbWF0ZWRUeXBlKCR0eXBlKSkgewpAQCAtMTgwNywxMyArMTgyMCwy
MSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gcmVzdWx0O1xuIik7CiAKICAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBteSAkY2FsbFdpdGggPSAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9OworICAgICAgICAg
ICAgICAgICAgICBteSBAYXJndW1lbnRzID0gKCJlYyIpOworCiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7ICAgICAg
ICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgICAgICBpZiAoJGNhbGxXaXRoKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdp
dGgoJGNhbGxXaXRoLCBcQGltcGxDb250ZW50LCAianNVbmRlZmluZWQoKSIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlPckxp
c3RQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSBpbXBsKCpjYXN0ZWRUaGlz
LT5pbXBsKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0
aW9uTmFtZShlYykiLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9ICIgLiBO
YXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwg
ImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykg
LiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1w
bENsYXNzTmFtZSogaW1wbCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTtcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgImltcGwtPiRpbXBsR2V0dGVyRnVu
Y3Rpb25OYW1lKGVjKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gIiAu
IE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1l
LCAiaW1wbC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50
cykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpO1xuIik7CkBAIC0yMDA5LDYgKzIwMzAsMTIgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiaW1w
bC0+JHtmdW5jdGlvbk5hbWV9IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRjYWxsV2l0aCA9ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY2FsbFdpdGgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0
aCgkY2FsbFdpdGgsIFxAaW1wbENvbnRlbnQsICIiKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1
bWVudHMsICJlYyIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7ZnVuY3Rp
b25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwpA
QCAtMjM2MSw2ICsyMzg4LDI1IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwogfQogCitzdWIgR2VuZXJhdGVDYWxsV2l0aAoreworICAgIG15
ICRjYWxsV2l0aCA9IHNoaWZ0OworICAgIG15ICRvdXRwdXRBcnJheSA9IHNoaWZ0OworICAgIG15
ICRyZXR1cm5WYWx1ZSA9IHNoaWZ0OworICAgIG15ICRjYWxsV2l0aEFyZyA9ICJDT01QSUxFX0FT
U0VSVChmYWxzZSkiOworCisgICAgaWYgKCRjYWxsV2l0aCBlcSAiU2NyaXB0U3RhdGUiKSB7Cisg
ICAgICAgICRjYWxsV2l0aEFyZyA9ICJleGVjIjsKKyAgICB9IGVsc2lmICgkY2FsbFdpdGggZXEg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGlmICghc2NyaXB0Q29udGV4dClcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgICAgIHJldHVybiIgLiAoJHJldHVyblZhbHVlID8gIiAiIC4gJHJldHVyblZhbHVlIDogIiIp
IC4gIjtcbiIpOworICAgICAgICAkY2FsbFdpdGhBcmcgPSAic2NyaXB0Q29udGV4dCI7CisgICAg
fQorCisgICAgcmV0dXJuICRjYWxsV2l0aEFyZzsKK30KKwogc3ViIEdlbmVyYXRlQXJndW1lbnRz
Q291bnRDaGVjawogewogICAgIG15ICRvdXRwdXRBcnJheSA9IHNoaWZ0OwpAQCAtMjQyMiwxNiAr
MjQ2OCw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogCiAgICAgbXkgJGNhbGxXaXRo
ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9
OwogICAgIGlmICgkY2FsbFdpdGggYW5kICEkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKLSAgICAgICAgbXkgJGNhbGxXaXRoQXJnID0g
IkNPTVBJTEVfQVNTRVJUKGZhbHNlKSI7Ci0gICAgICAgIGlmICgkY2FsbFdpdGggZXEgIlNjcmlw
dFN0YXRlIikgewotICAgICAgICAgICAgJGNhbGxXaXRoQXJnID0gImV4ZWMiOwotICAgICAgICB9
IGVsc2lmICgkY2FsbFdpdGggZXEgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB7Ci0gICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0Q29udGV4dCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIik7Ci0gICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFzY3JpcHRDb250ZXh0KVxuIik7Ci0g
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKLSAgICAgICAgICAgICRjYWxsV2l0aEFyZyA9ICJz
Y3JpcHRDb250ZXh0IjsgCi0gICAgICAgIH0KLSAgICAgICAgcHVzaCBAYXJndW1lbnRzLCAkY2Fs
bFdpdGhBcmc7CisgICAgICAgIHB1c2goQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0aCgkY2Fs
bFdpdGgsIFxAJG91dHB1dEFycmF5LCAiSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpIikp
OwogICAgIH0KIAogICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
aW5kZXggN2IxODRhN2ExYzg0ZmVjMDQxZTg5NmNlZDdmMDUwOTg1MzQxM2Q3OS4uZmQxZWYyYTY0
NDgzMTRhMDM0ZWJjOGE2NGNmMTY4NjE5NTYwN2E3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTg5OSw4ICs4OTksMTUg
QEAgRU5ECiAKICAgICBteSAkcmV0dXJuVHlwZSA9IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgbXkgJGdldHRlclN0cmluZzsKKyAgICBteSAkY2FsbFdp
dGggPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0
aCJ9IHx8ICIiOworCiAgICAgaWYgKCRnZXR0ZXJTdHJpbmdVc2VzSW1wKSB7CiAgICAgICAgIG15
ICgkZnVuY3Rpb25OYW1lLCBAYXJndW1lbnRzKSA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHBy
ZXNzaW9uKFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CisKKyAg
ICAgICAgaWYgKCRjYWxsV2l0aCkgeworICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCBHZW5l
cmF0ZUNhbGxXaXRoKCRjYWxsV2l0aCwgXEBpbXBsQ29udGVudERlY2xzLCAiICAgICIsIDAsIDAp
KTsKKyAgICAgICAgfQorCiAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgImVjIikgaWYgJHVzZUV4
Y2VwdGlvbnM7CiAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRl
ZEJ5ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVt
ZW50ZWRCeSJ9OwpAQCAtOTMwLDYgKzkzNywxMiBAQCBFTkQKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5cGUgdiA9ICRnZXR0ZXJTdHJpbmc7XG4iKTsK
ICAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZVNldERP
TUV4Y2VwdGlvbigiICAgICIpKTsKKworICAgICAgICBpZiAoJGNhbGxXaXRoIGVxICJTY3JpcHRT
dGF0ZSIpIHsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKVxuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSk7XG4iKTsK
KyAgICAgICAgfQorCiAgICAgICAgICRyZXN1bHQgPSAidiI7CiAgICAgICAgICRyZXN1bHQgLj0g
Ii5yZWxlYXNlKCkiIGlmIChJc1JlZlB0clR5cGUoJHJldHVyblR5cGUpKTsKICAgICB9IGVsc2Ug
ewpAQCAtMTEyOCw2ICsxMTQxLDggQEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKICAgICB9CiAKKyAgICBteSAkY2Fs
bFdpdGggPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxs
V2l0aCJ9IHx8ICIiOworCiAgICAgaWYgKCRpbXBsQ2xhc3NOYW1lIGVxICJTVkdOdW1iZXIiKSB7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgKmltcCA9ICRyZXN1bHQ7XG4i
KTsKICAgICB9IGVsc2UgewpAQCAtMTE1Miw2ICsxMTY3LDExIEBAIEVORAogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIik7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIG15ICgkZnVuY3Rpb25OYW1lLCBAYXJndW1lbnRzKSA9ICRjb2RlR2VuZXJhdG9yLT5T
ZXR0ZXJFeHByZXNzaW9uKFwlaW1wbEluY2x1ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0
ZSk7CisKKyAgICAgICAgICAgIGlmICgkY2FsbFdpdGgpIHsKKyAgICAgICAgICAgICAgICBwdXNo
KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGgoJGNhbGxXaXRoLCBcQGltcGxDb250ZW50RGVj
bHMsICIgICAgIiwgMSwgMCkpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBwdXNoKEBh
cmd1bWVudHMsICRyZXN1bHQpOwogICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiZWMiKSBp
ZiAkdXNlRXhjZXB0aW9uczsKICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKQEAgLTExNzEsNiArMTE5
MSwxMSBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgVjhQ
cm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTtcbiIpOwogICAgIH0KIAorICAgIGlmICgkY2FsbFdp
dGggZXEgIlNjcmlwdFN0YXRlIikgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
ICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSlcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpKTtcbiIpOwor
ICAgIH0KKwogICAgIGlmICgkc3ZnTmF0aXZlVHlwZSkgewogICAgICAgICBpZiAoJHVzZUV4Y2Vw
dGlvbnMpIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgaWYgKCFl
YylcbiIpOwpAQCAtMTQ1NCw2ICsxNDc5LDM1IEBAIEVORAogICAgIHB1c2goQGltcGxDb250ZW50
RGVjbHMsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwogfQogCitzdWIgR2VuZXJhdGVDYWxsV2l0aAoreworICAgIG15ICRjYWxsV2l0
aCA9IHNoaWZ0OworICAgIG15ICRvdXRwdXRBcnJheSA9IHNoaWZ0OworICAgIG15ICRpbmRlbnQg
PSBzaGlmdDsKKyAgICBteSAkcmV0dXJuVm9pZCA9IHNoaWZ0OworICAgIG15ICRlbXB0eUNvbnRl
eHQgPSBzaGlmdDsKKyAgICBteSAkY2FsbFdpdGhBcmcgPSAiQ09NUElMRV9BU1NFUlQoZmFsc2Up
IjsKKworICAgIGlmICgkY2FsbFdpdGggZXEgIlNjcmlwdFN0YXRlIikgeworICAgICAgICBpZiAo
JGVtcHR5Q29udGV4dCkgeworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50
IC4gIkVtcHR5U2NyaXB0U3RhdGUgc3RhdGU7XG4iKTsKKyAgICAgICAgICAgICRjYWxsV2l0aEFy
ZyA9ICImc3RhdGUiOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAkaW5kZW50IC4gIlNjcmlwdFN0YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJy
ZW50KCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJp
ZiAoIXN0YXRlKVxuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQg
LiAiICAgIHJldHVybiIgLiAoJHJldHVyblZvaWQgPyAiIiA6ICIgdjg6OlVuZGVmaW5lZCgpIikg
LiAiO1xuIik7CisgICAgICAgICAgICAkY2FsbFdpdGhBcmcgPSAic3RhdGUiOworICAgICAgICB9
CisgICAgfSBlbHNpZiAoJGNhbGxXaXRoIGVxICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Iikgewor
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOwor
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiaWYgKCFzY3JpcHRDb250ZXh0
KVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICIgICAgcmV0dXJu
IiAuICgkcmV0dXJuVm9pZCA/ICIiIDogIiB2ODo6VW5kZWZpbmVkKCkiKSAuICI7XG4iKTsKKyAg
ICAgICAgJGNhbGxXaXRoQXJnID0gInNjcmlwdENvbnRleHQiOworICAgIH0KKworICAgIHJldHVy
biAkY2FsbFdpdGhBcmc7Cit9CisKIHN1YiBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2sKIHsK
ICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKQEAgLTMxOTMsMjAgKzMyNDcsMTEgQEAgc3ViIEdl
bmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXAt
PiR7bmFtZX0iOwogICAgIH0KIAotICAgIG15ICRjYWxsV2l0aCA9ICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKKyAgICBteSAkY2FsbFdpdGgg
PSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0g
fHwgIiI7CiAgICAgaWYgKCRjYWxsV2l0aCkgewotICAgICAgICBteSAkY2FsbFdpdGhBcmcgPSAi
Q09NUElMRV9BU1NFUlQoZmFsc2UpIjsKLSAgICAgICAgaWYgKCRjYWxsV2l0aCBlcSAiU2NyaXB0
U3RhdGUiKSB7Ci0gICAgICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAiRW1wdHlTY3JpcHRT
dGF0ZSBzdGF0ZTtcbiI7Ci0gICAgICAgICAgICAkY2FsbFdpdGhBcmcgPSAiJnN0YXRlIjsKLSAg
ICAgICAgICAgICRoYXNTY3JpcHRTdGF0ZSA9IDE7Ci0gICAgICAgIH0gZWxzaWYgKCRjYWxsV2l0
aCBlcSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpIHsKLSAgICAgICAgICAgICRyZXN1bHQgLj0g
JGluZGVudCAuICJTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpO1xuIjsKLSAgICAgICAgICAgICRyZXN1bHQgLj0gJGluZGVu
dCAuICJpZiAoIXNjcmlwdENvbnRleHQpXG4iOwotICAgICAgICAgICAgJHJlc3VsdCAuPSAkaW5k
ZW50IC4gIiAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpO1xuIjsKLSAgICAgICAgICAgICRjYWxs
V2l0aEFyZyA9ICJzY3JpcHRDb250ZXh0IjsKLSAgICAgICAgfQotICAgICAgICBwdXNoIEBhcmd1
bWVudHMsICRjYWxsV2l0aEFyZzsKKyAgICAgICAgbXkgQGNhbGxXaXRoT3V0cHV0ID0gKCk7Cisg
ICAgICAgIHB1c2goQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsIFxAY2Fs
bFdpdGhPdXRwdXQsICRpbmRlbnQsIDAsIDEpKTsKKyAgICAgICAgJHJlc3VsdCAuPSBqb2luKCIi
LCBAY2FsbFdpdGhPdXRwdXQpOwogICAgICAgICAkaW5kZXgrKzsKICAgICAgICAgJG51bWJlck9m
UGFyYW1ldGVycysrCiAgICAgfQpAQCAtMzI0OSw3ICszMjk0LDcgQEAgc3ViIEdlbmVyYXRlRnVu
Y3Rpb25DYWxsU3RyaW5nKCkKIAogICAgIGlmICgkcmV0dXJuVHlwZSBlcSAidm9pZCIpIHsKICAg
ICAgICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gIiRmdW5jdGlvblN0cmluZztcbiI7Ci0gICAgfSBl
bHNpZiAoJGhhc1NjcmlwdFN0YXRlIG9yIEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkg
eworICAgIH0gZWxzaWYgKCRjYWxsV2l0aCBlcSAiU2NyaXB0U3RhdGUiIG9yIEB7JGZ1bmN0aW9u
LT5yYWlzZXNFeGNlcHRpb25zfSkgewogICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAkbmF0
aXZlUmV0dXJuVHlwZSAuICIgcmVzdWx0ID0gJGZ1bmN0aW9uU3RyaW5nO1xuIjsKICAgICB9IGVs
c2UgewogICAgICAgICAjIENhbiBpbmxpbmUgdGhlIGZ1bmN0aW9uIGNhbGwgaW50byB0aGUgcmV0
dXJuIHN0YXRlbWVudCB0byBhdm9pZCBvdmVyaGVhZCBvZiB1c2luZyBhIFJlZjw+IHRlbXBvcmFy
eQpAQCAtMzI2Niw3ICszMzExLDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkK
ICAgICAgICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gIiAgICBnb3RvIGZhaWw7XG4iOwogICAgIH0K
IAotICAgIGlmICgkaGFzU2NyaXB0U3RhdGUpIHsKKyAgICBpZiAoJGNhbGxXaXRoIGVxICJTY3Jp
cHRTdGF0ZSIpIHsKICAgICAgICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gImlmIChzdGF0ZS5oYWRF
eGNlcHRpb24oKSlcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICIgICAgcmV0dXJu
IHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCkpO1xuIgogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmou
Y3BwCmluZGV4IDlkYWMyZGE4YTlhYjA5MDJmZGEyNTg1ZTQ1OWUwODA1MmQzYzQ2YTMuLjlhOWYz
ZjE4MmVjZjhjZDAxMGI0OTNiYzBhNGJkZWE1NzBjNjU5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNw
cApAQCAtNTE5LDYgKzUxOSw4MCBAQCB2b2lkIFdlYkRPTVRlc3RPYmo6OnNldFN0cmluZ0F0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uKGNvbnN0IFdlYkRPTVN0cmluZyYgbmV3U3RyaQogICAgIHdlYkRP
TVJhaXNlRXJyb3Ioc3RhdGljX2Nhc3Q8V2ViRE9NRXhjZXB0aW9uQ29kZT4oZWMpKTsKIH0KIAor
aW50IFdlYkRPTVRlc3RPYmo6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGltcGwoKS0+
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKCk7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9iajo6c2V0
V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKGludCBuZXdXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUp
Cit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+c2V0
V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKG5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk7Cit9
CisKK1dlYkRPTVRlc3RPYmogV2ViRE9NVGVzdE9iajo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGUoKSBjb25zdAoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm4g
V2ViRE9NVGVzdE9iaigpOworCisgICAgcmV0dXJuIHRvV2ViS2l0KFdURjo6Z2V0UHRyKGltcGwo
KS0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoKSkpOworfQorCit2b2lkIFdl
YkRPTVRlc3RPYmo6OnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKGNvbnN0
IFdlYkRPTVRlc3RPYmomIG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKQor
eworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbXBsKCktPnNldFdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKHRvV2ViQ29yZShuZXdXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSkpOworfQorCitXZWJET01UZXN0T2JqIFdlYkRPTVRl
c3RPYmo6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygpIGNvbnN0Cit7CisgICAgaWYg
KCFpbXBsKCkpCisgICAgICAgIHJldHVybiBXZWJET01UZXN0T2JqKCk7CisKKyAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJET01UZXN0T2JqIHJlc3VsdCA9IHRvV2Vi
S2l0KFdURjo6Z2V0UHRyKGltcGwoKS0+d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKGVj
KSkpOworICAgIHdlYkRPTVJhaXNlRXJyb3Ioc3RhdGljX2Nhc3Q8V2ViRE9NRXhjZXB0aW9uQ29k
ZT4oZWMpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6OnNl
dFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhjb25zdCBXZWJET01UZXN0T2JqJiBuZXdX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpCit7CisgICAgaWYgKCFpbXBsKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGlt
cGwoKS0+c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKHRvV2ViQ29yZShuZXdXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpLCBlYyk7CisgICAgd2ViRE9NUmFpc2VFcnJvcihz
dGF0aWNfY2FzdDxXZWJET01FeGNlcHRpb25Db2RlPihlYykpOworfQorCitXZWJET01UZXN0T2Jq
IFdlYkRPTVRlc3RPYmo6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2Vz
KCkgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIFdlYkRPTVRlc3RP
YmooKTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkRPTVRl
c3RPYmogcmVzdWx0ID0gdG9XZWJLaXQoV1RGOjpnZXRQdHIoaW1wbCgpLT53aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhlYykpKTsKKyAgICB3ZWJET01SYWlzZUVycm9y
KHN0YXRpY19jYXN0PFdlYkRPTUV4Y2VwdGlvbkNvZGU+KGVjKSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwordm9pZCBXZWJET01UZXN0T2JqOjpzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZVJhaXNlcyhjb25zdCBXZWJET01UZXN0T2JqJiBuZXdXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcykKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgp
LT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyh0b1dlYkNvcmUo
bmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpLCBlYyk7CisgICAg
d2ViRE9NUmFpc2VFcnJvcihzdGF0aWNfY2FzdDxXZWJET01FeGNlcHRpb25Db2RlPihlYykpOwor
fQorCiBXZWJET01TdHJpbmcgV2ViRE9NVGVzdE9iajo6c2NyaXB0U3RyaW5nQXR0cigpIGNvbnN0
CiB7CiAgICAgaWYgKCFpbXBsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCmluZGV4IDQzZmQ5OGMwMjlhNjRk
NGZkZTNmN2Y3MjBhYWEzOTU1YzdiNGZjMDIuLmIzY2NlYTI5NmM2M2U0MmYzNjZlYjg5YWE5MzAy
NWVkNzVlMDI1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCkBAIC0xMjQsNiArMTI0LDE0IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGNvbnN0IFdlYkRP
TVN0cmluZyYpOwogICAgIFdlYkRPTVN0cmluZyBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bigpIGNvbnN0OwogICAgIHZvaWQgc2V0U3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oY29u
c3QgV2ViRE9NU3RyaW5nJik7CisgICAgaW50IHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgpIGNv
bnN0OworICAgIHZvaWQgc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKGludCk7CisgICAgV2Vi
RE9NVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoY29uc3QgV2Vi
RE9NVGVzdE9iaiYpOworICAgIFdlYkRPTVRlc3RPYmogd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMoY29uc3QgV2ViRE9NVGVzdE9iaiYpOworICAgIFdlYkRPTVRlc3RPYmogd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldFdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKGNvbnN0IFdlYkRPTVRlc3RPYmom
KTsKICAgICBXZWJET01TdHJpbmcgc2NyaXB0U3RyaW5nQXR0cigpIGNvbnN0OwogI2lmIEVOQUJM
RShDb25kaXRpb24xKQogICAgIGludCBjb25kaXRpb25hbEF0dHIxKCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IDcwMTQ3Y2I4MTBiZmIwZjE0OWI2YzYyOGMx
ZTc4YzU1NzQyMzQ4NGUuLjlkZTQ5OGRiZGVmYWE5NWU3MjVkOWFlODRiM2ZmMzY5ZTcwYzY0NmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC0xMDgyLDYgKzEwODIsMTIz
IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3N0cmluZ19hdHRyX3dpdGhfc2V0dGVyX2V4Y2Vw
dGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmCiAgICAgfQogfQogCitnbG9uZword2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RPYmog
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdsb25nIHJlcyA9IGl0ZW0tPndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZSgpOworICAgIHJldHVybiByZXM7Cit9CisKK3ZvaWQKK3dlYmtp
dF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZShXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBnbG9uZyB2YWx1ZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYp
OworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3Jl
OjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT5zZXRXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGUodmFsdWUpOworfQorCitXZWJLaXRET01UZXN0T2JqKgord2Vi
a2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0cmli
dXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
c2VsZiwgMCk7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ19yZXMgPSBXVEY6OmdldFB0cihpdGVtLT53aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgpKTsKKyAgICBXZWJLaXRET01UZXN0T2JqKiBy
ZXMgPSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSk7CisgICAgcmV0dXJuIHJlczsKK30KKwordm9p
ZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRf
YXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoqIHZhbHVl
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOworICAgIFdlYkNvcmU6
OlRlc3RPYmogKiBjb252ZXJ0ZWRfdmFsdWUgPSBOVUxMOworICAgIGlmICh2YWx1ZSAhPSBOVUxM
KSB7CisgICAgICAgIGNvbnZlcnRlZF92YWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CisgICAg
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkX3ZhbHVlKTsKKyAgICB9CisgICAgaXRlbS0+
c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoY29udmVydGVkX3ZhbHVlKTsK
K30KKworV2ViS2l0RE9NVGVzdE9iaioKK3dlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2Ny
aXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9y
ICoqZXJyb3IpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RPYmog
KiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ19yZXMgPSBXVEY6Omdl
dFB0cihpdGVtLT53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZWMpKTsKKyAgICBpZiAo
ZWMpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhl
Yyk7CisgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJp
bmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAgICB9CisgICAg
V2ViS2l0RE9NVGVzdE9iaiogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOworICAgIHJl
dHVybiByZXM7Cit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0
X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9N
VGVzdE9iaiogdmFsdWUsIEdFcnJvciAqKmVycm9yKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
c2VsZik7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdl
YkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJu
X2lmX2ZhaWwodmFsdWUpOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBjb252ZXJ0ZWRfdmFsdWUg
PSBOVUxMOworICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgIGNvbnZlcnRlZF92YWx1
ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVy
dGVkX3ZhbHVlKTsKKyAgICB9CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgaXRlbS0+c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKGNvbnZlcnRlZF92YWx1
ZSwgZWMpOworICAgIGlmIChlYykgeworICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVz
Y3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwg
Z19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5h
bWUpOworICAgIH0KK30KKworV2ViS2l0RE9NVGVzdE9iaioKK3dlYmtpdF9kb21fdGVzdF9vYmpf
Z2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9yICoqZXJyb3IpCit7CisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoc2VsZiwgMCk7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6
VGVzdE9iaj4gZ19yZXMgPSBXVEY6OmdldFB0cihpdGVtLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZVJhaXNlcyhlYykpOworICAgIGlmIChlYykgeworICAgICAgICBXZWJDb3Jl
OjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICAgICAgZ19zZXRfZXJy
b3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rl
c2MuY29kZSwgZWNkZXNjLm5hbWUpOworICAgIH0KKyAgICBXZWJLaXRET01UZXN0T2JqKiByZXMg
PSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSk7CisgICAgcmV0dXJuIHJlczsKK30KKwordm9pZAor
d2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0
cmlidXRlX3JhaXNlcyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2
YWx1ZSwgR0Vycm9yICoqZXJyb3IpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVz
dE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ19yZXR1cm5faWZfZmFpbCh2
YWx1ZSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGNvbnZlcnRlZF92YWx1ZSA9IE5VTEw7Cisg
ICAgaWYgKHZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgY29udmVydGVkX3ZhbHVlID0gV2ViS2l0
Ojpjb3JlKHZhbHVlKTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0ZWRfdmFsdWUp
OworICAgIH0KKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpdGVtLT5z
ZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhjb252ZXJ0ZWRfdmFs
dWUsIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uIGVjZGVzYyhlYyk7CisgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3Is
IGdfcXVhcmtfZnJvbV9zdHJpbmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5u
YW1lKTsKKyAgICB9Cit9CisKIGdjaGFyKgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfc2NyaXB0
X3N0cmluZ19hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CkBAIC0xMzM0LDYgKzE0NTEs
MTAgQEAgZW51bSB7CiAgICAgUFJPUF9TVFJJTkdfQVRUUl9XSVRIX0dFVFRFUl9FWENFUFRJT04s
CiAgICAgUFJPUF9TVFJJTkdfQVRUUl9XSVRIX1NFVFRFUl9FWENFUFRJT04sCiAgICAgUFJPUF9D
VVNUT01fQVRUUiwKKyAgICBQUk9QX1dJVEhfU0NSSVBUX1NUQVRFX0FUVFJJQlVURSwKKyAgICBQ
Uk9QX1dJVEhfU0NSSVBUX0VYRUNVVElPTl9DT05URVhUX0FUVFJJQlVURSwKKyAgICBQUk9QX1dJ
VEhfU0NSSVBUX1NUQVRFX0FUVFJJQlVURV9SQUlTRVMsCisgICAgUFJPUF9XSVRIX1NDUklQVF9F
WEVDVVRJT05fQ09OVEVYVF9BVFRSSUJVVEVfUkFJU0VTLAogICAgIFBST1BfU0NSSVBUX1NUUklO
R19BVFRSLAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogICAgIFBST1BfQ09ORElUSU9OQUxfQVRU
UjEsCkBAIC0xNDgwLDYgKzE2MDEsMTEgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29i
al9zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb24KICAgICAg
ICAgY29yZVNlbGYtPnNldFN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKFdURjo6U3RyaW5n
Ojpmcm9tVVRGOChnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKSwgZWMpOwogICAgICAgICBicmVh
azsKICAgICB9CisgICAgY2FzZSBQUk9QX1dJVEhfU0NSSVBUX1NUQVRFX0FUVFJJQlVURToKKyAg
ICB7CisgICAgICAgIGNvcmVTZWxmLT5zZXRXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKGdfdmFs
dWVfZ2V0X2xvbmcodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkKICAgICBjYXNlIFBST1BfQ09ORElUSU9OQUxfQVRUUjE6CiAgICAgewpAQCAt
MTY2NCw2ICsxNzkwLDMxIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3By
b3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhCiAgICAgICAgIGdfdmFs
dWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhTdHJpbmcoY29yZVNlbGYtPnN0cmlu
Z0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAg
IGNhc2UgUFJPUF9XSVRIX1NDUklQVF9TVEFURV9BVFRSSUJVVEU6CisgICAgeworICAgICAgICBn
X3ZhbHVlX3NldF9sb25nKHZhbHVlLCBjb3JlU2VsZi0+d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
KCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX1dJVEhfU0NSSVBUX0VY
RUNVVElPTl9DT05URVhUX0FUVFJJQlVURToKKyAgICB7CisgICAgICAgIFJlZlB0cjxXZWJDb3Jl
OjpUZXN0T2JqPiBwdHIgPSBjb3JlU2VsZi0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGUoKTsKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJLaXQ6OmtpdChw
dHIuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9XSVRIX1ND
UklQVF9TVEFURV9BVFRSSUJVVEVfUkFJU0VTOgorICAgIHsKKyAgICAgICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBwdHIg
PSBjb3JlU2VsZi0+d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKGVjKTsKKyAgICAgICAg
Z192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJLaXQ6OmtpdChwdHIuZ2V0KCkpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9XSVRIX1NDUklQVF9FWEVDVVRJT05fQ09O
VEVYVF9BVFRSSUJVVEVfUkFJU0VTOgorICAgIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBwdHIgPSBjb3Jl
U2VsZi0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoZWMpOworICAg
ICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIFdlYktpdDo6a2l0KHB0ci5nZXQoKSkpOwor
ICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBQUk9QX1NDUklQVF9TVFJJTkdfQVRUUjoK
ICAgICB7CiAgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhT
dHJpbmcoY29yZVNlbGYtPnNjcmlwdFN0cmluZ0F0dHIoKSkpOwpAQCAtMTk2Miw2ICsyMTEzLDM2
IEBAIEdfTUFYTE9ORywgLyogbWF4ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiLCAvKiBkZWZhdWx0ICovCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9Q
QVJBTV9SRUFEV1JJVEUpKTsKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdv
YmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfV0lU
SF9TQ1JJUFRfU1RBVEVfQVRUUklCVVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ19wYXJhbV9zcGVjX2xvbmcoIndpdGgtc2NyaXB0LXN0YXRlLWF0dHJpYnV0ZSIsIC8q
IG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInRlc3Rfb2JqX3dpdGgtc2NyaXB0LXN0YXRlLWF0dHJpYnV0ZSIsIC8qIHNo
b3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBnbG9uZyBUZXN0T2JqLndpdGgtc2Ny
aXB0LXN0YXRlLWF0dHJpYnV0ZSIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29tZSBleHRy
YSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHX01JTkxPTkcsIC8qIG1pbiAqLworR19NQVhMT05HLCAv
KiBtYXggKi8KKzAsIC8qIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9XSVRIX1NDUklQVF9FWEVDVVRJT05f
Q09OVEVYVF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X3BhcmFtX3NwZWNfb2JqZWN0KCJ3aXRoLXNjcmlwdC1leGVjdXRpb24tY29udGV4dC1hdHRyaWJ1
dGUiLCAvKiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0ZXN0X29ial93aXRoLXNjcmlwdC1leGVjdXRpb24tY29udGV4
dC1hdHRyaWJ1dGUiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZC13cml0ZSAgV2Vi
S2l0RE9NVGVzdE9iaiogVGVzdE9iai53aXRoLXNjcmlwdC1leGVjdXRpb24tY29udGV4dC1hdHRy
aWJ1dGUiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhl
cmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT0JKLCAvKiBnb2JqZWN0IHR5cGUgKi8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UFJPUF9XSVRIX1NDUklQVF9TVEFURV9BVFRSSUJVVEVfUkFJU0VTLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgid2l0aC1zY3JpcHQtc3Rh
dGUtYXR0cmlidXRlLXJhaXNlcyIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3Rfb2JqX3dpdGgtc2NyaXB0
LXN0YXRlLWF0dHJpYnV0ZS1yYWlzZXMiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVh
ZC13cml0ZSAgV2ViS2l0RE9NVGVzdE9iaiogVGVzdE9iai53aXRoLXNjcmlwdC1zdGF0ZS1hdHRy
aWJ1dGUtcmFpc2VzIiwgLyogbG9uZ2VyIC0gY291bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBz
dHVmZiBoZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0RPTV9URVNUX09CSiwgLyogZ29iamVjdCB0eXBl
ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKyAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBST1BfV0lUSF9TQ1JJUFRfRVhFQ1VUSU9OX0NPTlRFWFRfQVRUUklCVVRFX1JBSVNF
UywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmpl
Y3QoIndpdGgtc2NyaXB0LWV4ZWN1dGlvbi1jb250ZXh0LWF0dHJpYnV0ZS1yYWlzZXMiLCAvKiBu
YW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ0ZXN0X29ial93aXRoLXNjcmlwdC1leGVjdXRpb24tY29udGV4dC1hdHRyaWJ1
dGUtcmFpc2VzIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQtd3JpdGUgIFdlYktp
dERPTVRlc3RPYmoqIFRlc3RPYmoud2l0aC1zY3JpcHQtZXhlY3V0aW9uLWNvbnRleHQtYXR0cmli
dXRlLXJhaXNlcyIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29tZSBleHRyYSBkb2Mgc3R1
ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9ET01fVEVTVF9PQkosIC8qIGdvYmplY3QgdHlwZSAq
LworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBQUk9QX1NDUklQVF9TVFJJTkdfQVRUUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoInNjcmlwdC1zdHJpbmctYXR0ciIsIC8qIG5h
bWUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRlc3Rfb2JqX3NjcmlwdC1zdHJpbmctYXR0ciIsIC8qIHNob3J0IGRlc2NyaXB0
aW9uICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKaW5kZXggYTYwYjk3ZWVhMzhmMDJi
NzVkMTViZDMzNWMzYTQyZWI0MjkzYmQ3My4uN2Q4M2Y5YmYyZjUxYjdjMjAwZmU0NDdiNGY5NDA3
YjkyNzM2YTAxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaApAQCAtOTc0LDYgKzk3
NCw5NCBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3N0cmluZ19h
dHRyX3dpdGhfc2V0dGVyX2V4Y2VwdGlvbihXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBjb25zdCBn
Y2hhciogdmFsdWUsIEdFcnJvciAqKmVycm9yKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF93aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGU6CisgKiBAc2VsZjogQSAjV2ViS2l0
RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIGdsb25nCit3
ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGUoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0
aF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoK
KyAqIEB2YWx1ZTogQSAjZ2xvbmcKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQ
SSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1
dGUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUpOworCisvKioKKyAqIHdlYmtp
dF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJpYnV0
ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczogKHRyYW5z
ZmVyIG5vbmUpOgorICoKKyoqLworV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKgord2Via2l0
X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0cmlidXRl
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpf
c2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJpYnV0ZToKKyAqIEBzZWxmOiBB
ICNXZWJLaXRET01UZXN0T2JqCisgKiBAdmFsdWU6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisg
KiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJp
YnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSk7CisK
Ky8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfc3RhdGVfYXR0cmli
dXRlX3JhaXNlczoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAZXJyb3I6ICNH
RXJyb3IKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6CisgKgorKiovCitXRUJLSVRf
QVBJIFdlYktpdERPTVRlc3RPYmoqCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3Njcmlw
dF9zdGF0ZV9hdHRyaWJ1dGVfcmFpc2VzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvciAq
KmVycm9yKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9z
dGF0ZV9hdHRyaWJ1dGVfcmFpc2VzOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAq
IEB2YWx1ZTogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGVycm9yOiAjR0Vycm9yCisgKgorICog
UmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGVfcmFpc2VzKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoqIHZhbHVlLCBHRXJyb3IgKipl
cnJvcik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhl
Y3V0aW9uX2NvbnRleHRfYXR0cmlidXRlX3JhaXNlczoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01U
ZXN0T2JqCisgKiBAZXJyb3I6ICNHRXJyb3IKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9u
ZSk6CisgKgorKiovCitXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCit3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRyaWJ1dGVfcmFpc2Vz
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvciAqKmVycm9yKTsKKworLyoqCisgKiB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRyaWJ1
dGVfcmFpc2VzOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAj
V2ViS2l0RE9NVGVzdE9iagorICogQGVycm9yOiAjR0Vycm9yCisgKgorICogUmV0dXJuczogKHRy
YW5zZmVyIG5vbmUpOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rf
b2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hdHRyaWJ1dGVfcmFpc2VzKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoqIHZhbHVlLCBHRXJyb3IgKipl
cnJvcik7CisKKy8qKgogICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfc2NyaXB0X3N0cmluZ19h
dHRyOgogICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKICAqCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGU5
MWExMTQwMzg5NjZmYzcyZDg5NTc2NDdiMjU2NTVhNWU5MDMyZjUuLjJjM2Q2Mjk4MWZiOWZiNmNi
N2U3NWJhMTY3MDY2ZjhjMDJkMTE5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xMDcsNiArMTA3LDEwIEBA
IHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpUYWJsZVZhbHVlc1tdID0KICAg
ICB7ICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsIERvbnREZWxldGUsIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqU3RyaW5n
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb24pLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqU3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24sIE5vSW50cmluc2ljIH0sCiAgICAgeyAic3RyaW5nQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24iLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhj
ZXB0aW9uKSwgKGludHB0cl90KXNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uLCBOb0ludHJpbnNpYyB9LAogICAgIHsgImN1c3RvbUF0dHIiLCBEb250RGVsZXRlLCAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakN1
c3RvbUF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqQ3VzdG9tQXR0ciwgTm9JbnRyaW5zaWMg
fSwKKyAgICB7ICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCBEb250RGVsZXRlLCAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialdpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZSksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGUsIE5vSW50cmluc2ljIH0sCisgICAgeyAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGUiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlKSwgKGludHB0cl90KXNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIndpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
KSwgKGludHB0cl90KXNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcywg
Tm9JbnRyaW5zaWMgfSwKKyAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZVJhaXNlcyIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1
dGVSYWlzZXMpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBdHRyaWJ1dGVSYWlzZXMsIE5vSW50cmluc2ljIH0sCiAgICAgeyAic2NyaXB0U3RyaW5nQXR0
ciIsIERvbnREZWxldGUgfCBSZWFkT25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpTY3JpcHRTdHJpbmdBdHRyKSwgKGludHB0cl90
KTAsIE5vSW50cmluc2ljIH0sCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAgICAgeyAiY29uZGl0
aW9uYWxBdHRyMSIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMSksIChpbnRwdHJfdClz
ZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxLCBOb0ludHJpbnNpYyB9LApAQCAtMTM5LDcgKzE0
Myw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpUYWJsZVZhbHVlc1td
ID0KICAgICB7IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KIH07CiAKLXN0YXRpYyBjb25zdCBI
YXNoVGFibGUgSlNUZXN0T2JqVGFibGUgPSB7IDEzNiwgMTI3LCBKU1Rlc3RPYmpUYWJsZVZhbHVl
cywgMCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpUYWJsZSA9IHsgMTM3LCAx
MjcsIEpTVGVzdE9ialRhYmxlVmFsdWVzLCAwIH07CiAvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1
Y3RvciAqLwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqQ29uc3RydWN0
b3JUYWJsZVZhbHVlc1tdID0KQEAgLTYzMSw2ICs2MzUsNTIgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpD
dXN0b21BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRp
ZmllciYKIH0KIAogCitKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQorewor
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2Jq
ZWN0KHNsb3RCYXNlKSk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1w
bC0+d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKGV4ZWMpKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCisKK0pTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikK
K3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihh
c09iamVjdChzbG90QmFzZSkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENv
bnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdENv
bnRleHQpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIFRlc3RPYmoqIGltcGwg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0
UHRyKGltcGwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKHNjcmlwdENvbnRl
eHQpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitKU1ZhbHVlIGpzVGVzdE9ialdpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJh
c2UsIGNvbnN0IElkZW50aWZpZXImKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0
YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLT53aXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZXhlYywgZWMpKSk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK0pTVmFsdWUganNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK3sKKyAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNj
cmlwdENvbnRleHQpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIFRlc3RPYmoq
IGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBK
U0M6OkpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3Qo
KSwgV1RGOjpnZXRQdHIoaW1wbC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVS
YWlzZXMoc2NyaXB0Q29udGV4dCwgZWMpKSk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVj
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKIEpTVmFsdWUganNUZXN0T2JqU2NyaXB0U3Ry
aW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9i
aio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CkBAIC0xMDE3LDYgKzEwNjcsNDggQEAgdm9pZCBzZXRK
U1Rlc3RPYmpDdXN0b21BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3Qs
IEpTVmFsdWUgdmFsdWUKIH0KIAogCit2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9i
aio+KHRoaXNPYmplY3QpOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2Jq
Kj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpbXBsLT5zZXRXaXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGUoZXhlYywgdmFsdWUudG9JbnQzMihleGVjKSk7Cit9CisKKwordm9pZCBzZXRKU1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOworICAgIFRlc3RP
YmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAgICByZXR1cm47
CisgICAgaW1wbC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoc2NyaXB0
Q29udGV4dCwgdG9UZXN0T2JqKHZhbHVlKSk7Cit9CisKKwordm9pZCBzZXRKU1Rlc3RPYmpXaXRo
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBz
dGF0aWNfY2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBpbXBsID0g
c3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgaW1wbC0+c2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
KGV4ZWMsIHRvVGVzdE9iaih2YWx1ZSksIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
ZWMpOworfQorCisKK3ZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxK
U1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8
VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IHN0YXRpY19jYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0
dXJuOworICAgIGltcGwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFp
c2VzKHNjcmlwdENvbnRleHQsIHRvVGVzdE9iaih2YWx1ZSksIGVjKTsKKyAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOworfQorCisKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIHZvaWQgc2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IGFlNDA0MWRlNjdhOWJjZWFmNWI0
YjEzNjk3N2NlODc1OTQxNmZmMjMuLjQ1ZjlmYjczMTdjYjNmNTEyMzc1ZGQ3M2EzMjBkODExYzkx
NWEyZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmgKQEAgLTI0OSw2ICsyNDksMTQgQEAgSlNDOjpKU1ZhbHVlIGpzVGVzdE9i
alN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHUKIHZvaWQgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBq
c1Rlc3RPYmpDdXN0b21BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBK
U0M6OklkZW50aWZpZXImKTsKIHZvaWQgc2V0SlNUZXN0T2JqQ3VzdG9tQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpzVGVz
dE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7Cit2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFs
dWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImKTsKK3ZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1
dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKK0pTQzo6
SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwordm9pZCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7Cit2b2lkIHNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqU2Ny
aXB0U3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJ
ZGVudGlmaWVyJik7CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CiB2b2lk
IHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2Jq
ZWN0KiwgSlNDOjpKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAppbmRleCAyODI5OTVhZTg5MTNhMWIxODdl
MTZiNDJmM2ZmOGI5NGM2MTc5YWViLi5mMDY0ZmNlZTVkMzJiMGRhY2JjNmYyNzA2NTQ5YzJiNDMy
ZmE5MTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdE9iai5oCkBAIC0xMTksNiArMTE5LDE0IEBAIGVudW0gewogLSAodm9p
ZClzZXRTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbjooTlNTdHJpbmcgKiluZXdTdHJpbmdB
dHRyV2l0aFNldHRlckV4Y2VwdGlvbjsKIC0gKGludCljdXN0b21BdHRyOwogLSAodm9pZClzZXRD
dXN0b21BdHRyOihpbnQpbmV3Q3VzdG9tQXR0cjsKKy0gKGludCl3aXRoU2NyaXB0U3RhdGVBdHRy
aWJ1dGU7CistICh2b2lkKXNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZTooaW50KW5ld1dpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZTsKKy0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZTsKKy0gKHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGU6KERPTVRlc3RPYmogKiluZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZTsKKy0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXM7Cist
ICh2b2lkKXNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlczooRE9NVGVzdE9iaiAqKW5l
d1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlczsKKy0gKERPTVRlc3RPYmogKil3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlczsKKy0gKHZvaWQpc2V0V2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXM6KERPTVRlc3RPYmogKiluZXdXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlczsKIC0gKE5TU3RyaW5nICopc2NyaXB0
U3RyaW5nQXR0cjsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIC0gKGludCljb25kaXRpb25hbEF0
dHIxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE9iai5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPYmoubW0KaW5kZXggMDhmMWYxZTdhYzNmZDFjZTgzNzcwNDNhMGNmM2I4YTFj
MzQ5YTRmNC4uMTk2ZDI0ZDllOTNjZDc1MmUzZjMwZmZmNDI0NjU1Mzc1MDE0OWFlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9i
ai5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLm1tCkBAIC00MzYsNiArNDM2LDcwIEBACiAgICAgSU1QTC0+c2V0Q3VzdG9tQXR0cihu
ZXdDdXN0b21BdHRyKTsKIH0KIAorLSAoaW50KXdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZQorewor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1Q
TC0+d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlKCk7Cit9CisKKy0gKHZvaWQpc2V0V2l0aFNjcmlw
dFN0YXRlQXR0cmlidXRlOihpbnQpbmV3V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlCit7CisgICAg
V2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnNldFdpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZShuZXdXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOworfQorCist
IChET01UZXN0T2JqICopd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUKK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIGtpdChX
VEY6OmdldFB0cihJTVBMLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSgpKSk7
Cit9CisKKy0gKHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGU6KERP
TVRlc3RPYmogKiluZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZQoreworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBBU1NFUlQobmV3V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpOworCisgICAgSU1QTC0+c2V0V2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoY29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSkpOworfQorCistIChET01UZXN0T2JqICopd2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0
YXRlOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIERPTVRlc3RPYmog
KnJlc3VsdCA9IGtpdChXVEY6OmdldFB0cihJTVBMLT53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YWlzZXMoZWMpKSk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCistICh2b2lkKXNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
czooRE9NVGVzdE9iaiAqKW5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcworeworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBBU1NFUlQobmV3V2l0
aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIElNUEwtPnNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhj
b3JlKG5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyksIGVjKTsKKyAgICBXZWJDb3Jl
OjpyYWlzZU9uRE9NRXJyb3IoZWMpOworfQorCistIChET01UZXN0T2JqICopd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7Cisg
ICAgRE9NVGVzdE9iaiAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKGVjKSkpOworICAgIFdlYkNvcmU6OnJhaXNl
T25ET01FcnJvcihlYyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAodm9pZClzZXRXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlczooRE9NVGVzdE9iaiAqKW5ld1dp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzCit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyk7CisKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZVJhaXNlcyhjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFp
c2VzKSwgZWMpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKIC0gKE5T
U3RyaW5nICopc2NyaXB0U3RyaW5nQXR0cgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0T2JqLmlkbAppbmRleCBlZDMzOGM2YjIxZDcxOGJjZWYzMzI4YzE0MTIyZmFiMzgyNjQ4
NDg1Li43M2ZkMTliN2JjMGJiNzIwNGFmYjA5OGU5YTAzYmY4ODcwNTFjZTg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0xMDks
NiArMTA5LDEzIEBAIG1vZHVsZSB0ZXN0IHsKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRp
b24pOwogICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gdm9pZCB3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogCisgICAgICAgIGF0dHJpYnV0ZSBbQ2FsbFdpdGg9
U2NyaXB0U3RhdGVdIGxvbmcgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlOworICAgICAgICBhdHRy
aWJ1dGUgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFRlc3RPYmogd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGU7CisgICAgICAgIGF0dHJpYnV0ZSBbQ2FsbFdpdGg9
U2NyaXB0U3RhdGVdIFRlc3RPYmogd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzCisgICAg
ICAgICAgICBnZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIGF0dHJpYnV0ZSBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcworICAgICAgICAgICAgZ2V0dGVyIHJhaXNlcyhET01F
eGNlcHRpb24pOworCiAgICAgICAgIC8vICdPcHRpb25hbCcgZXh0ZW5kZWQgYXR0cmlidXRlCiAg
ICAgICAgIHZvaWQgICAgbWV0aG9kV2l0aE9wdGlvbmFsQXJnKGluIFtPcHRpb25hbF0gbG9uZyBv
cHQpOwogICAgICAgICB2b2lkICAgIG1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFs
QXJnKGluIGxvbmcgbm9uT3B0LCBpbiBbT3B0aW9uYWxdIGxvbmcgb3B0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5k
ZXggMTdjMGEwM2FkMmFlNzRhNDliYmIxMWJjNzYxOTFmOGJhMTdlMmFlMi4uNjMzNmRlNDYzMTlh
YzJkOWZmYzNkNWVjZWVlZTM3M2JiMTc0NmFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTUxNCw2ICs1MTQs
MTE4IEBAIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKICAgICByZXR1cm47CiB9CiAKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZS5f
Z2V0Iik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRl
cigpKTsKKyAgICBTY3JpcHRTdGF0ZSogc3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOwor
ICAgIGlmICghc3RhdGUpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0
dXJuIHY4OjpJbnRlZ2VyOjpOZXcoaW1wLT53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoc3RhdGUp
KTsKK30KKworc3RhdGljIHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9i
ai53aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUuX3NldCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgaW50IHYgPSB0b0ludDMyKHZh
bHVlKTsKKyAgICBTY3JpcHRTdGF0ZSogc3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOwor
ICAgIGlmICghc3RhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBpbXAtPnNldFdpdGhTY3JpcHRT
dGF0ZUF0dHJpYnV0ZShzdGF0ZSwgdik7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm47Cit9CisK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUuX2dldCIpOworICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAg
ICBpZiAoIXNjcmlwdENvbnRleHQpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cisg
ICAgcmV0dXJuIHRvVjgoaW1wLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShz
Y3JpcHRDb250ZXh0KSk7Cit9CisKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJp
YnV0ZS5fc2V0Iik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1
ZSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFs
dWUpKSA6IDA7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdl
dFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRleHQpCisgICAg
ICAgIHJldHVybjsKKyAgICBpbXAtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlKHNjcmlwdENvbnRleHQsIFdURjo6Z2V0UHRyKHYpKTsKKyAgICByZXR1cm47Cit9CisKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29y
SW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcy5fZ2V0Iik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBT
Y3JpcHRTdGF0ZSogc3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOworICAgIGlmICghc3Rh
dGUpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgUmVmUHRyPFRlc3RPYmo+
IHYgPSBpbXAtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhzdGF0ZSwgZWMpOworICAg
IGlmIChVTkxJS0VMWShlYykpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVj
KTsKKyAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIH0KKyAgICBp
ZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHN0YXRl
LmV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gdG9WOCh2LnJlbGVhc2UoKSk7Cit9CisKK3N0YXRp
YyB2b2lkIHdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzLl9zZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RP
Ymo6Okhhc0luc3RhbmNlKHZhbHVlKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBTY3JpcHRTdGF0ZSogc3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOworICAgIGlm
ICghc3RhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBpbXAtPnNldFdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyhzdGF0ZSwgV1RGOjpnZXRQdHIodiksIGVjKTsKKyAgICBpZiAoVU5MSUtF
TFkoZWMpKQorICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgIGlmIChz
dGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24o
KSk7CisgICAgcmV0dXJuOworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJ
TkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzLl9nZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGlu
Zm8uSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OworICAgIFJlZlB0cjxUZXN0T2JqPiB2ID0gaW1wLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZVJhaXNlcyhzY3JpcHRDb250ZXh0LCBlYyk7CisgICAgaWYgKFVOTElLRUxZKGVj
KSkgeworICAgICAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgICAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7CisgICAgfQorICAgIHJldHVybiB0b1Y4KHYucmVs
ZWFzZSgpKTsKK30KKworc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzLl9zZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNl
KHZhbHVlKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2YWx1ZSkpIDogMDsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIGltcC0+c2V0
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoc2NyaXB0Q29udGV4dCwg
V1RGOjpnZXRQdHIodiksIGVjKTsKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAgICBWOFBy
b3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgIHJldHVybjsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBzY3JpcHRTdHJpbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNf
U1RBVFMoIkRPTS5UZXN0T2JqLnNjcmlwdFN0cmluZ0F0dHIuX2dldCIpOwpAQCAtMTUyMiw2ICsx
NjM0LDE0IEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIFRlc3RPYmpBdHRyc1tdID0g
ewogICAgIHsic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2JqSW50ZXJuYWw6
OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlciwgVGVzdE9iakludGVybmFs
OjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogICAgIC8vIEF0dHJpYnV0ZSAnY3VzdG9tQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0
dHI6ICdDdXN0b20nKQogICAgIHsiY3VzdG9tQXR0ciIsIFY4VGVzdE9iajo6Y3VzdG9tQXR0ckFj
Y2Vzc29yR2V0dGVyLCBWOFRlc3RPYmo6OmN1c3RvbUF0dHJBY2Nlc3NvclNldHRlciwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUnIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQorICAgIHsid2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlIiwgVGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVB
dHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJT
ZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdp
dGgnKQorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCBUZXN0T2Jq
SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0ckdldHRlciwg
VGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJT
ZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykK
KyAgICB7IndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIsIFRlc3RPYmpJbnRlcm5hbDo6
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlciwgVGVzdE9iakludGVybmFs
Ojp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
UmFpc2VzJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKKyAgICB7Indp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIiwgVGVzdE9iakludGVybmFs
Ojp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIsIFRl
c3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNB
dHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3NjcmlwdFN0cmlu
Z0F0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29udmVydFNjcmlw
dFN0cmluZycpCiAgICAgeyJzY3JpcHRTdHJpbmdBdHRyIiwgVGVzdE9iakludGVybmFsOjpzY3Jp
cHRTdHJpbmdBdHRyQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjaWYgRU5BQkxFKENv
bmRpdGlvbjEpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>